ZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvY29uZi9sYXllci5jb25mIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9jb25mL2xheWVyLmNvbmYKaW5kZXggZThiZDM2Mi4uYmUxNjM1ZCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9jb25mL2xheWVyLmNvbmYKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9jb25mL2xheWVyLmNvbmYKQEAgLTE1LDQgKzE1LDQgQEAKIAogTEFZRVJERVBFTkRTX2ZpbGVzeXN0ZW1zLWxheWVyID0gImNvcmUgb3BlbmVtYmVkZGVkLWxheWVyIgogCi1MQVlFUlNFUklFU19DT01QQVRfZmlsZXN5c3RlbXMtbGF5ZXIgPSAidGh1ZCB3YXJyaW9yIHpldXMiCitMQVlFUlNFUklFU19DT01QQVRfZmlsZXN5c3RlbXMtbGF5ZXIgPSAidGh1ZCB3YXJyaW9yIHpldXMgZHVuZmVsbCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9mdXNlLWV4ZmF0L2Z1c2UtZXhmYXRfMS4zLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvZnVzZS1leGZhdC9mdXNlLWV4ZmF0XzEuMy4wLmJiCmluZGV4IDU3MjA0MzAuLmJlMjQxNWYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9mdXNlLWV4ZmF0L2Z1c2UtZXhmYXRfMS4zLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL2Z1c2UtZXhmYXQvZnVzZS1leGZhdF8xLjMuMC5iYgpAQCAtOSw2ICs5LDggQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcmVsYW4vZXhmYXQvcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7QlB9LnRhci5neiIKIAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9yZWxhbi9leGZhdC9yZWxlYXNlcyIKKwogREVQRU5EUyA9ICJmdXNlIHZpcnR1YWwvbGliYyIKIFJSRUNPTU1FTkRTXyR7UE59ID0gInV0aWwtbGludXgtbW91bnQiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9udGZzLTNnLW50ZnNwcm9ncy9maWxlcy8wMDAxLU1ha2UtYnVpbGQtc3VwcG9ydC11c3JtZXJnZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9udGZzLTNnLW50ZnNwcm9ncy9maWxlcy8wMDAxLU1ha2UtYnVpbGQtc3VwcG9ydC11c3JtZXJnZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmNlMTBiOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvbnRmcy0zZy1udGZzcHJvZ3MvZmlsZXMvMDAwMS1NYWtlLWJ1aWxkLXN1cHBvcnQtdXNybWVyZ2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIDMzZjY3OGJmNzQzNjdhYWI4ZGRjMjg1OGE5Zjc3OTc0NTVlYTliOWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAyOSBBdWcgMjAxOSAxMDoyMTo1OCArMDgwMAotU3ViamVjdDogW1BBVENIXSBNYWtlIGJ1aWxkIHN1cHBvcnQgdXNybWVyZ2UKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW29lLXNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgotLS0tCi0gbnRmc3Byb2dzL01ha2VmaWxlLmFtIHwgMiAtLQotIHNyYy9NYWtlZmlsZS5hbSAgICAgICB8IDMgLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbnRmc3Byb2dzL01ha2VmaWxlLmFtIGIvbnRmc3Byb2dzL01ha2VmaWxlLmFtCi1pbmRleCBmNGY5ZDFiLi4xZjZhNjczIDEwMDY0NAotLS0tIGEvbnRmc3Byb2dzL01ha2VmaWxlLmFtCi0rKysgYi9udGZzcHJvZ3MvTWFrZWZpbGUuYW0KLUBAIC0xNjUsOCArMTY1LDYgQEAgZXh0cmFzOglsaWJzICQoRVhUUkFfUFJPR1JBTVMpCi0gCi0gaWYgRU5BQkxFX01PVU5UX0hFTFBFUgotIGluc3RhbGwtZXhlYy1ob29rOgotLQkkKElOU1RBTEwpIC1kICQoREVTVERJUikvc2JpbgotLQkkKExOX1MpIC1mICQoc2JpbmRpcikvbWtudGZzICQoREVTVERJUikvc2Jpbi9ta2ZzLm50ZnMKLSAKLSBpbnN0YWxsLWRhdGEtaG9vazoKLSAJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChtYW44ZGlyKQotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXggOGQ5ODQwOC4uZDBhNmE0NSAxMDA2NDQKLS0tLSBhL3NyYy9NYWtlZmlsZS5hbQotKysrIGIvc3JjL01ha2VmaWxlLmFtCi1AQCAtNjYsOSArNjYsNiBAQCBlbmRpZgotIAotIGlmIEVOQUJMRV9NT1VOVF9IRUxQRVIKLSBpbnN0YWxsLWV4ZWMtbG9jYWw6CWluc3RhbGwtcm9vdGJpblBST0dSQU1TCi0tCSQoTUtESVJfUCkgIiQoREVTVERJUikvc2JpbiIKLS0JJChMTl9TKSAtZiAiJChyb290YmluZGlyKS9udGZzLTNnIiAiJChERVNURElSKS9zYmluL21vdW50Lm50ZnMtM2ciCi0tCSQoTE5fUykgLWYgIiQocm9vdGJpbmRpcikvbG93bnRmcy0zZyIgIiQoREVTVERJUikvc2Jpbi9tb3VudC5sb3dudGZzLTNnIgotIAotIGluc3RhbGwtZGF0YS1sb2NhbDoJaW5zdGFsbC1tYW44Ci0gCSQoTE5fUykgLWYgbnRmcy0zZy44ICIkKERFU1RESVIpJChtYW44ZGlyKS9tb3VudC5udGZzLTNnLjgiCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9udGZzLTNnLW50ZnNwcm9ncy9udGZzLTNnLW50ZnNwcm9nc18yMDE3LjMuMjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvbnRmcy0zZy1udGZzcHJvZ3MvbnRmcy0zZy1udGZzcHJvZ3NfMjAxNy4zLjIzLmJiCmluZGV4IDE1NTliZmQuLjZmNWNiNmMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9udGZzLTNnLW50ZnNwcm9ncy9udGZzLTNnLW50ZnNwcm9nc18yMDE3LjMuMjMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL250ZnMtM2ctbnRmc3Byb2dzL250ZnMtM2ctbnRmc3Byb2dzXzIwMTcuMy4yMy5iYgpAQCAtOCw3ICs4LDYgQEAKIAogU1JDX1VSSSA9ICJodHRwOi8vdHV4ZXJhLmNvbS9vcGVuc291cmNlL250ZnMtM2dfbnRmc3Byb2dzLSR7UFZ9LnRneiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYm50ZnMtM2ctTWFrZWZpbGUuYW0tZml4LWluc3RhbGwtZmFpbGVkLXdoaWxlLWhvc3QucGF0Y2ggXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywndXNybWVyZ2UnLCdmaWxlOi8vMDAwMS1NYWtlLWJ1aWxkLXN1cHBvcnQtdXNybWVyZ2UucGF0Y2gnLCcnLGQpfSBcCiAiCiBTID0gIiR7V09SS0RJUn0vbnRmcy0zZ19udGZzcHJvZ3MtJHtQVn0iCiBTUkNfVVJJW21kNXN1bV0gPSAiZDk3NDc0YWUxOTU0Zjc3MmM2ZDJmYTM4NmE2ZjQ2MmMiCkBAIC0zNSwxMCArMzQsMTggQEAKIEZJTEVTX2xpYm50ZnMtM2cgPSAiJHtsaWJkaXJ9Lyoke1NPTElCU30iCiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgU3RhbmRhcmQgbW91bnQgd2lsbCBleGVjdXRlIHRoZSBwcm9ncmFtIC9zYmluL21vdW50LlRZUEUKLSAgICAjIHdoZW4gY2FsbGVkLiBBZGQgdGhlIHN5bWJvbGljIHRvIGxldCBtb3VudCBjb3VsZCBmaW5kIG50ZnMuCi0gICAgbG4gLXNmIG1vdW50Lm50ZnMtM2cgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0vbW91bnQubnRmcworICAgICMgU3RhbmRhcmQgbW91bnQgd2lsbCBleGVjdXRlIHRoZSBwcm9ncmFtIC9zYmluL21vdW50LlRZUEUgd2hlbiBjYWxsZWQuCisgICAgIyBBZGQgYSBzeW1ib2xpYyBsaW5rIHRvIGxldCBtb3VudCBmaW5kIG50ZnMuCisgICAgbG4gLXNmIG1vdW50Lm50ZnMtM2cgJHtEfSR7YmFzZV9zYmluZGlyfS9tb3VudC5udGZzCiAgICAgcm1kaXIgJHtEfSR7bGliZGlyfS9udGZzLTNnCisKKyAgICAjIEhhbmRsZSB3aGVuIHVzcm1lcmdlIGlzIGluIGVmZmVjdC4gU29tZSBmaWxlcyBhcmUgaW5zdGFsbGVkIHRvIC9zYmluCisgICAgIyByZWdhcmRsZXNzIG9mIHRoZSB2YWx1ZSBvZiAke2Jhc2Vfc2JpbmRpcn0uCisgICAgaWYgWyAiJHtiYXNlX3NiaW5kaXJ9IiAhPSAvc2JpbiBdICYmIFsgLWQgJHtEfS9zYmluIF07IHRoZW4KKyAgICAgICAgbWtkaXIgLXAgJHtEfSR7YmFzZV9zYmluZGlyfQorICAgICAgICBtdiAke0R9L3NiaW4vKiAke0R9JHtiYXNlX3NiaW5kaXJ9CisgICAgICAgIHJtZGlyICR7RH0vc2JpbgorICAgIGZpCiB9CiAKICMgU2F0aXNmeSB0aGUgLWRldiBydW50aW1lIGRlcGVuZGVuY3kKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9zc2hmcy1mdXNlL3NzaGZzLWZ1c2VfMy42LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvc3NoZnMtZnVzZS9zc2hmcy1mdXNlXzMuNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNTE1ZDA3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy9zc2hmcy1mdXNlL3NzaGZzLWZ1c2VfMy42LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIlRoaXMgaXMgYSBmaWxlc3lzdGVtIGNsaWVudCBiYXNlZCBvbiB0aGUgU1NIIEZpbGUgVHJhbnNmZXIgUHJvdG9jb2wgdXNpbmcgRlVTRSIKLUFVVEhPUiA9ICJNaWtsb3MgU3plcmVkaSA8bWlrbG9zQHN6ZXJlZGkuaHU+IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZ1c2Uvc3NoZnMiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1ERVBFTkRTID0gImdsaWItMi4wIGZ1c2UzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saWJmdXNlL3NzaGZzIgotU1JDUkVWID0gImExZTVmMTJjNTMwY2NmNTk0MzRhN2Q1OWEzNGEwNDlmMTYwYjM1NTkiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IG1lc29uCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvc3NoZnMtZnVzZS9zc2hmcy1mdXNlXzMuNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3NzaGZzLWZ1c2Uvc3NoZnMtZnVzZV8zLjcuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjljMzRkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3NzaGZzLWZ1c2Uvc3NoZnMtZnVzZV8zLjcuMC5iYgpAQCAtMCwwICsxLDEzIEBACitTVU1NQVJZID0gIlRoaXMgaXMgYSBmaWxlc3lzdGVtIGNsaWVudCBiYXNlZCBvbiB0aGUgU1NIIEZpbGUgVHJhbnNmZXIgUHJvdG9jb2wgdXNpbmcgRlVTRSIKK0FVVEhPUiA9ICJNaWtsb3MgU3plcmVkaSA8bWlrbG9zQHN6ZXJlZGkuaHU+IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZ1c2Uvc3NoZnMiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiR1BMdjIiCitERVBFTkRTID0gImdsaWItMi4wIGZ1c2UzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saWJmdXNlL3NzaGZzIgorU1JDUkVWID0gImE3ZTEwMzgyMDNjODU2Y2M3ZTA1MmQ0MzlkMWRhNDlmZTEzMTMzOWYiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IG1lc29uCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvdW5pb25mcy1mdXNlL2ZpbGVzLzAwMDEtdW5pb25mcy1EZWZpbmUtSU9DUEFSTV9MRU4taWYtdW5kZWZpbmVkLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3VuaW9uZnMtZnVzZS9maWxlcy8wMDAxLXVuaW9uZnMtRGVmaW5lLUlPQ1BBUk1fTEVOLWlmLXVuZGVmaW5lZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGY5OTFjZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvdW5pb25mcy1mdXNlL2ZpbGVzLzAwMDEtdW5pb25mcy1EZWZpbmUtSU9DUEFSTV9MRU4taWYtdW5kZWZpbmVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotRnJvbSAxMDQxMWZhODY1ODYyMTgyMmFlMzk0MTYwZGFmZmFjZWQ0YTRjZDdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMTMgSnVsIDIwMTcgMjM6MDc6MjkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gdW5pb25mczogRGVmaW5lIElPQ1BBUk1fTEVOIGlmIHVuZGVmaW5lZAotCi1tdXNsIGRvZXMgbm90IGhhdmUgc3lzY3RsLmggd2hpY2ggZGVmaW5lcyB0aGlzCi1mb3IgZ2xpYmMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy91bmlvbmZzLmMgfCAgOCAtLS0tLS0tLQotIHNyYy91bmlvbmZzLmggfCAxNSArKysrKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvdW5pb25mcy5jIGIvc3JjL3VuaW9uZnMuYwotaW5kZXggYTM0ZDM0ZS4uNTE2ODRhNyAxMDA2NDQKLS0tLSBhL3NyYy91bmlvbmZzLmMKLSsrKyBiL3NyYy91bmlvbmZzLmMKLUBAIC0yMSwxNCArMjEsNiBAQAotICNpbmNsdWRlICJvcHRzLmgiCi0gI2luY2x1ZGUgInVzeXNsb2cuaCIKLSAKLS0jaWZuZGVmIF9JT0NfU0laRQotLSNpZmRlZiBJT0NQQVJNX0xFTgotLSNkZWZpbmUgX0lPQ19TSVpFKHgpIElPQ1BBUk1fTEVOKHgpCi0tI2Vsc2UKLS0jZXJyb3IgIk5vIG1lY2hhbmlzbSBmb3IgZGV0ZXJtaW5pbmcgaW9jdGwgbGVuZ3RoIGZvdW5kLiIKLS0jZW5kaWYKLS0jZW5kaWYKLS0KLSBzdGF0aWMgc3RydWN0IGZ1c2Vfb3B0IHVuaW9uZnNfb3B0c1tdID0gewotIAlGVVNFX09QVF9LRVkoImNocm9vdD0lcywiLCBLRVlfQ0hST09UKSwKLSAJRlVTRV9PUFRfS0VZKCJjb3ciLCBLRVlfQ09XKSwKLWRpZmYgLS1naXQgYS9zcmMvdW5pb25mcy5oIGIvc3JjL3VuaW9uZnMuaAotaW5kZXggOGY1ZTBiZi4uYjAyZGU1YSAxMDA2NDQKLS0tLSBhL3NyYy91bmlvbmZzLmgKLSsrKyBiL3NyYy91bmlvbmZzLmgKLUBAIC0xNyw2ICsxNywyMSBAQAotICNkZWZpbmUgRlVTRV9NRVRBX0ZJTEUgIi5mdXNlX2hpZGRlbiIKLSAjZGVmaW5lIEZVU0VfTUVUQV9MRU5HVEggMTIKLSAKLSsjaWZuZGVmIElPQ1BBUk1fTUFTSwotKyNkZWZpbmUgSU9DUEFSTV9NQVNLICAgICAgMHgxRkZGCi0rI2VuZGlmCi0rI2lmbmRlZiBJT0NQQVJNX0xFTgotKyNkZWZpbmUgSU9DUEFSTV9MRU4oYSkgICAgKCgoYSkgPj4gMTYpICYgSU9DUEFSTV9NQVNLKQotKyNlbmRpZgotKwotKyNpZm5kZWYgX0lPQ19TSVpFCi0rI2lmZGVmIElPQ1BBUk1fTEVOCi0rI2RlZmluZSBfSU9DX1NJWkUoeCkgSU9DUEFSTV9MRU4oeCkKLSsjZWxzZQotKyNlcnJvciAiTm8gbWVjaGFuaXNtIGZvciBkZXRlcm1pbmluZyBpb2N0bCBsZW5ndGggZm91bmQuIgotKyNlbmRpZgotKyNlbmRpZgotKwotIC8vIGZpbGUgYWNjZXNzIHByb3RlY3Rpb24gbWFzawotICNkZWZpbmUgU19QUk9UX01BU0sgKFNfSVNVSUR8IFNfSVNHSUQgfCBTX0lTVlRYIHwgU19JUldYVSB8IFNfSVJXWEcgfCBTX0lSV1hPKQotIAotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3VuaW9uZnMtZnVzZS91bmlvbmZzLWZ1c2VfMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLWZpbGVzeXN0ZW1zL3VuaW9uZnMtZnVzZS91bmlvbmZzLWZ1c2VfMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YmVkZjE2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy91bmlvbmZzLWZ1c2UvdW5pb25mcy1mdXNlXzIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBGVVNFIGJhc2VkIGltcGxlbWVudGlvbiBvZiB1bmlvbmZzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Jwb2Rnb3JueS91bmlvbmZzLWZ1c2UiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL3VuaW9uZnMuYztiZWdpbmxpbmU9MztlbmRsaW5lPTg7bWQ1PTMwZmE4ZGU3MGZkOGFiYWIwMGI0ODNhMWI3OTQzYTMyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTdlNWEzN2ZjZTE3MzA3MDY2ZWVjNmIyMzU0NmRhM2IzIFwKLSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Jwb2Rnb3JueS8ke0JQTn0uZ2l0O2JyYW5jaD1tYXN0ZXIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXVuaW9uZnMtRGVmaW5lLUlPQ1BBUk1fTEVOLWlmLXVuZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ1JFViA9ICJjOGQyM2E5YTc1ZjFhNjI5ODg1OTM2NzE4MzllOGExNjhhNzlmM2U1IgotCi1ERVBFTkRTID0gImZ1c2UiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvdW5pb25mcy1mdXNlL3VuaW9uZnMtZnVzZV8yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtZmlsZXN5c3RlbXMvdW5pb25mcy1mdXNlL3VuaW9uZnMtZnVzZV8yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RkNWM4MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1maWxlc3lzdGVtcy91bmlvbmZzLWZ1c2UvdW5pb25mcy1mdXNlXzIuMS5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIkEgRlVTRSBiYXNlZCBpbXBsZW1lbnRpb24gb2YgdW5pb25mcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ycG9kZ29ybnkvdW5pb25mcy1mdXNlIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy91bmlvbmZzLmM7YmVnaW5saW5lPTM7ZW5kbGluZT04O21kNT0zMGZhOGRlNzBmZDhhYmFiMDBiNDgzYTFiNzk0M2EzMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFO21kNT03ZTVhMzdmY2UxNzMwNzA2NmVlYzZiMjM1NDZkYTNiMyBcCisiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG9kZ29ybnkvJHtCUE59LmdpdDticmFuY2g9bWFzdGVyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3VwcG9ydC1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNSRVYgPSAiOGQ3MzI5NjI0MjNjM2NhNWJlMWYxNGI3ZWMxMzlmZjQ2NGUxMGE1MSIKKworREVQRU5EUyA9ICJmdXNlIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXN1cHBvcnQvZnVzZS9mdXNlM18zLjkuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1zdXBwb3J0L2Z1c2UvZnVzZTNfMy45LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5YTM0OTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXN1cHBvcnQvZnVzZS9mdXNlM18zLjkuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLVNVTU1BUlkgPSAiSW1wbGVtZW50YXRpb24gb2YgYSBmdWxseSBmdW5jdGlvbmFsIGZpbGVzeXN0ZW0gaW4gYSB1c2Vyc3BhY2UgcHJvZ3JhbSIKLURFU0NSSVBUSU9OID0gIkZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBpcyBhIHNpbXBsZSBpbnRlcmZhY2UgZm9yIHVzZXJzcGFjZSBcCi0gICAgICAgICAgICAgICBwcm9ncmFtcyB0byBleHBvcnQgYSB2aXJ0dWFsIGZpbGVzeXN0ZW0gdG8gdGhlIExpbnV4IGtlcm5lbC4gRlVTRSBcCi0gICAgICAgICAgICAgICBhbHNvIGFpbXMgdG8gcHJvdmlkZSBhIHNlY3VyZSBtZXRob2QgZm9yIG5vbiBwcml2aWxlZ2VkIHVzZXJzIHRvIFwKLSAgICAgICAgICAgICAgIGNyZWF0ZSBhbmQgbW91bnQgdGhlaXIgb3duIGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb25zLiBcCi0gICAgICAgICAgICAgICIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJmdXNlL2xpYmZ1c2UiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vR1BMMi50eHQ7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xHUEwyLnR4dDttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRTttZDU9YTU1YzEyYTJkN2Q3NDJlY2I0MWNhOWFlMGE2ZGRjNjYiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZ1c2UvbGliZnVzZS9yZWxlYXNlcy9kb3dubG9hZC9mdXNlLSR7UFZ9L2Z1c2UtJHtQVn0udGFyLnh6IFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1ZGMyYmUyMWMwZDA2YzdlYWNlMzQwOTk2ZThhMzdlMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmY2I3MDc5YTFiYjRlNTEwMzc3YjQyN2QxYzVjMzdjMzQ5MjgxZDQ5OGUyNDlhZTBjMjM3OWI0Y2Y1MDA1OWMyIgotCi1TID0gIiR7V09SS0RJUn0vZnVzZS0ke1BWfSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJmdXNlL2xpYmZ1c2UvcmVsZWFzZXMiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJmdXNlXC0oP1A8cHZlcj4zKFwuXGQrKSspLnRhci54eiIKLQotaW5oZXJpdCBtZXNvbiBwa2djb25maWcKLQotREVQRU5EUyA9ICJ1ZGV2IgotCi1QQUNLQUdFUyA9KyAiZnVzZTMtdXRpbHMiCi0KLVJQUk9WSURFU18ke1BOfS1kYmcgKz0gImZ1c2UzLXV0aWxzLWRiZyIKLQotUlJFQ09NTUVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gImtlcm5lbC1tb2R1bGUtZnVzZSBmdXNlMy11dGlscyIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJmdXNlMy5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGliZnVzZTMqLmxhIgotCi1FWFRSQV9PRU1FU09OICs9ICIgXAotICAgICAtRGV4YW1wbGVzPWZhbHNlIFwKLSIKLQotIyBGb3JiaWQgYXV0by1yZW5hbWluZyB0byBsaWJmdXNlMy11dGlscwotRklMRVNfZnVzZTMtdXRpbHMgPSAiJHtiaW5kaXJ9ICR7YmFzZV9zYmluZGlyfSIKLURFQklBTl9OT0FVVE9OQU1FX2Z1c2UzLXV0aWxzID0gIjEiCi1ERUJJQU5fTk9BVVRPTkFNRV8ke1BOfS1kYmcgPSAiMSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgcm0gLXJmICR7RH0ke2Jhc2VfcHJlZml4fS9kZXYKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy1zdXBwb3J0L2Z1c2UvZnVzZTNfMy45LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtc3VwcG9ydC9mdXNlL2Z1c2UzXzMuOS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MzBmYTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtc3VwcG9ydC9mdXNlL2Z1c2UzXzMuOS4xLmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiSW1wbGVtZW50YXRpb24gb2YgYSBmdWxseSBmdW5jdGlvbmFsIGZpbGVzeXN0ZW0gaW4gYSB1c2Vyc3BhY2UgcHJvZ3JhbSIKK0RFU0NSSVBUSU9OID0gIkZVU0UgKEZpbGVzeXN0ZW0gaW4gVXNlcnNwYWNlKSBpcyBhIHNpbXBsZSBpbnRlcmZhY2UgZm9yIHVzZXJzcGFjZSBcCisgICAgICAgICAgICAgICBwcm9ncmFtcyB0byBleHBvcnQgYSB2aXJ0dWFsIGZpbGVzeXN0ZW0gdG8gdGhlIExpbnV4IGtlcm5lbC4gRlVTRSBcCisgICAgICAgICAgICAgICBhbHNvIGFpbXMgdG8gcHJvdmlkZSBhIHNlY3VyZSBtZXRob2QgZm9yIG5vbiBwcml2aWxlZ2VkIHVzZXJzIHRvIFwKKyAgICAgICAgICAgICAgIGNyZWF0ZSBhbmQgbW91bnQgdGhlaXIgb3duIGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb25zLiBcCisgICAgICAgICAgICAgICIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJmdXNlL2xpYmZ1c2UiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vR1BMMi50eHQ7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xHUEwyLnR4dDttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRTttZDU9YTU1YzEyYTJkN2Q3NDJlY2I0MWNhOWFlMGE2ZGRjNjYiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZ1c2UvbGliZnVzZS9yZWxlYXNlcy9kb3dubG9hZC9mdXNlLSR7UFZ9L2Z1c2UtJHtQVn0udGFyLnh6IFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNmQ2YjQ1MDI3NmZiMDRlMjBiZjkxZDgzYjk0MjNmMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYmFmY2ZkNmM2NmJhMzViN2IwYmViODIyNTMyYTkxMDZlYjg0MDlhZDZjZGU5ODg4ODhmZGU4NWY4OWJlNjQ1IgorCitTID0gIiR7V09SS0RJUn0vZnVzZS0ke1BWfSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJmdXNlL2xpYmZ1c2UvcmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJmdXNlXC0oP1A8cHZlcj4zKFwuXGQrKSspLnRhci54eiIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcKKworREVQRU5EUyA9ICJ1ZGV2IgorCitQQUNLQUdFUyA9KyAiZnVzZTMtdXRpbHMiCisKK1JQUk9WSURFU18ke1BOfS1kYmcgKz0gImZ1c2UzLXV0aWxzLWRiZyIKKworUlJFQ09NTUVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gImtlcm5lbC1tb2R1bGUtZnVzZSBmdXNlMy11dGlscyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJmdXNlMy5zby4qIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGliZnVzZTMqLmxhIgorCitFWFRSQV9PRU1FU09OICs9ICIgXAorICAgICAtRGV4YW1wbGVzPWZhbHNlIFwKKyIKKworIyBGb3JiaWQgYXV0by1yZW5hbWluZyB0byBsaWJmdXNlMy11dGlscworRklMRVNfZnVzZTMtdXRpbHMgPSAiJHtiaW5kaXJ9ICR7YmFzZV9zYmluZGlyfSIKK0RFQklBTl9OT0FVVE9OQU1FX2Z1c2UzLXV0aWxzID0gIjEiCitERUJJQU5fTk9BVVRPTkFNRV8ke1BOfS1kYmcgPSAiMSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgcm0gLXJmICR7RH0ke2Jhc2VfcHJlZml4fS9kZXYKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9leGZhdC11dGlscy9leGZhdC11dGlsc18xLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9leGZhdC11dGlscy9leGZhdC11dGlsc18xLjMuMC5iYgppbmRleCAxZjJiZmE2Li43ZjgwNGE3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvZXhmYXQtdXRpbHMvZXhmYXQtdXRpbHNfMS4zLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2V4ZmF0LXV0aWxzL2V4ZmF0LXV0aWxzXzEuMy4wLmJiCkBAIC0xNCw2ICsxNCw4IEBACiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JlbGFuL2V4ZmF0L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQfS50YXIuZ3oiCiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcmVsYW4vZXhmYXQvcmVsZWFzZXMiCisKIERFUEVORFMgPSAidmlydHVhbC9saWJjIgogCiBpbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9mYXRjYXQvZmF0Y2F0LzAwMDEtVXNlLXVuaXN0ZC5oLW5vdC1hcmdwLmgtZm9yLWFsbC1QT1NJWC1zeXN0ZW1zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2ZhdGNhdC9mYXRjYXQvMDAwMS1Vc2UtdW5pc3RkLmgtbm90LWFyZ3AuaC1mb3ItYWxsLVBPU0lYLXN5c3RlbXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmQ4ZTIyYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9mYXRjYXQvZmF0Y2F0LzAwMDEtVXNlLXVuaXN0ZC5oLW5vdC1hcmdwLmgtZm9yLWFsbC1QT1NJWC1zeXN0ZW1zLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gMTRlZjgzMjkxMDk2ZTAxOWViYzQ4MDQwY2Y2MzUzMGEyNTc0YTI2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS2llcm5hbiA8YWxleC5raWVybmFuQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTkgSmFuIDIwMjAgMTY6MDM6MjEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIHVuaXN0ZC5oIG5vdCBhcmdwLmggZm9yIGFsbCBQT1NJWCBzeXN0ZW1zCisKK2dldG9wdCgzKSBpcyBmb3VuZCBpbiB1bmlzdGQuaCBvbiBhbGwgUE9TSVggc3lzdGVtcyBhbmQgd2UgbWFrZSBubyB1c2UKK29mIGFueSBvZiB0aGUgR05VIHNwZWNpZmljIGFyZ3AgZXh0ZW5zaW9ucy4gSW5jbHVkZSB1bmlzdGQuaCBkaXJlY3RseSB0bworYWxsb3cgYnVpbGRpbmcgd2l0aCBtdXNsIG9uIGxpbnV4LCB3aGlsc3QgcmV0YWluaW5nIGNvbXBhdGliaWxpdHkgd2l0aAorZ2xpYmMgYW5kIG90aGVyIHVuaWNlcy4KKworU2lnbmVkLW9mZi1ieTogQWxleCBLaWVybmFuIDxhbGV4LmtpZXJuYW5AZ21haWwuY29tPgorVXBzdHJlYW0tc3RhdHVzOiBQZW5kaW5nCistLS0KKyBzcmMvZmF0Y2F0LmNwcCB8IDggKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2ZhdGNhdC5jcHAgYi9zcmMvZmF0Y2F0LmNwcAoraW5kZXggY2UyM2NhMDdiYjk5Li5iNDQyN2U0NjViZGUgMTAwNjQ0CistLS0gYS9zcmMvZmF0Y2F0LmNwcAorKysrIGIvc3JjL2ZhdGNhdC5jcHAKK0BAIC0xLDE0ICsxLDEwIEBACisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRlPHN0cmluZy5oPgorLSNpZmRlZiBfX0FQUExFX18KKy0jaW5jbHVkZSA8dW5pc3RkLmg+CistI2Vsc2UKKysjaW5jbHVkZSA8c3RyaW5nLmg+CisgI2lmZGVmIF9fV0lOX18KKyAjaW5jbHVkZSA8Y3R5cGUuaD4KKyAjaW5jbHVkZSAieGdldG9wdC94Z2V0b3B0LmgiCisgI2Vsc2UKKy0jaW5jbHVkZSA8YXJncC5oPgorLSNlbmRpZgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjZW5kaWYKKyAKKyAjaW5jbHVkZSA8c3RkaW8uaD4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9mYXRjYXQvZmF0Y2F0XzEuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL2ZhdGNhdC9mYXRjYXRfMS4xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzcyNjcxNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy9mYXRjYXQvZmF0Y2F0XzEuMS4wLmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiRkFUIGZpbGVzeXN0ZW1zIGV4cGxvcmUsIGV4dHJhY3QsIHJlcGFpciwgYW5kIGZvcmVuc2ljIHRvb2wiCitERVNDUklQVElPTiA9ICJUaGlzIHRvb2wgaXMgZGVzaWduZWQgdG8gbWFuaXB1bGF0ZSBGQVQgZmlsZXN5c3RlbXMsIGluIG9yZGVyIHRvIFwKK2V4cGxvcmUsIGV4dHJhY3QsIHJlcGFpciwgcmVjb3ZlciBhbmQgZm9yZW5zaWMgdGhlbS4gSXQgY3VycmVudGx5IHN1cHBvcnRzIFwKK0ZBVDEyLCBGQVQxNiBhbmQgRkFUMzIuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL0dyZWd3YXIvZmF0Y2F0IgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTU3ZmJiZmViZDBkZDFkNmZmMjFiOGNlY2I1NTJhMDNmIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vR3JlZ3dhci9mYXRjYXQuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXVuaXN0ZC5oLW5vdC1hcmdwLmgtZm9yLWFsbC1QT1NJWC1zeXN0ZW1zLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNSRVYgPSAiYjkyMzE3MmQ5N2M1NzgyOTc5NjRjMDYyZTNhOTI3OTllMmE5ZWNhNCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3Vmcy11dGlscy91ZnMtdXRpbHNfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3Vmcy11dGlscy91ZnMtdXRpbHNfZ2l0LmJiCmluZGV4IDVmZGQwODkuLjIzNTgzNjUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy91ZnMtdXRpbHMvdWZzLXV0aWxzX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMvdWZzLXV0aWxzL3Vmcy11dGlsc19naXQuYmIKQEAgLTEyLDYgKzEyLDggQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtUmVwbGFjZS11X2ludFhYX3Qtd2l0aC1rZXJuZWwtdHlwZWRlZnMucGF0Y2ggXAogIgogCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCisKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIEVYVFJBX09FTUFLRSA9ICJDUk9TU19DT01QSUxFPSR7VEFSR0VUX1BSRUZJWH0gQ0M9IiR7Q0N9IiBDRkxBR1M9IiR7Q0ZMQUdTfSIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC9maWxlcy8wMDAxLXhmc2R1bXAtc3VwcG9ydC11c3JtZXJnZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDEteGZzZHVtcC1zdXBwb3J0LXVzcm1lcmdlLnBhdGNoCmluZGV4IDA0ZWM3YjMuLmJmYjI1ZTggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDEteGZzZHVtcC1zdXBwb3J0LXVzcm1lcmdlLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzLzAwMDEteGZzZHVtcC1zdXBwb3J0LXVzcm1lcmdlLnBhdGNoCkBAIC0xLDQ0ICsxLDQ4IEBACi1Gcm9tIDJkYTRjZmUxN2I5OTRkN2YxMDAxNzU2MWNhOGVmZTZiNmJkNWYzY2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGZlYThjNDYzNDQ2OTc4NGMxNjIxMWUyNTk3NDExYzE4YzcyZGZhNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCA1IFNlcCAyMDE5IDExOjE3OjE1ICswODAwCitEYXRlOiBUaHUsIDUgTWFyIDIwMjAgMTQ6MzY6MTQgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0geGZzZHVtcDogc3VwcG9ydCB1c3JtZXJnZQogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLXNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgogLS0tCi0gZHVtcC9NYWtlZmlsZSAgICB8IDQgKy0tLQotIHJlc3RvcmUvTWFrZWZpbGUgfCA0ICstLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKyBkdW1wL01ha2VmaWxlICAgIHwgNiArLS0tLS0KKyByZXN0b3JlL01ha2VmaWxlIHwgNiArLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9kdW1wL01ha2VmaWxlIGIvZHVtcC9NYWtlZmlsZQotaW5kZXggOTc4NzlmYS4uMTRkYTY2NCAxMDA2NDQKK2luZGV4IDY2ZjAwZDMuLmNjMmQ5NzMgMTAwNjQ0CiAtLS0gYS9kdW1wL01ha2VmaWxlCiArKysgYi9kdW1wL01ha2VmaWxlCi1AQCAtOTcsMTAgKzk3LDggQEAgZGVmYXVsdDogZGVwZW5kICQoTFRDT01NQU5EKQorQEAgLTk3LDEyICs5Nyw4IEBAIGRlZmF1bHQ6IGRlcGVuZCAkKExUQ09NTUFORCkKICBpbmNsdWRlICQoQlVJTERSVUxFUykKICAKICBpbnN0YWxsOiBkZWZhdWx0CiAtCSQoSU5TVEFMTCkgLW0gNzU1IC1kICQoUEtHX1JPT1RfU0JJTl9ESVIpCiAtCSQoTFRJTlNUQUxMKSAtbSA3NTUgJChMVENPTU1BTkQpICQoUEtHX1JPT1RfU0JJTl9ESVIpCiAgCSQoSU5TVEFMTCkgLW0gNzU1IC1kICQoUEtHX1NCSU5fRElSKQotLQkkKElOU1RBTEwpIC1TICQoUEtHX1JPT1RfU0JJTl9ESVIpLyQoTFRDT01NQU5EKSAkKFBLR19TQklOX0RJUikvJChMVENPTU1BTkQpCistCSMgc2tpcCBzeW1saW5rIHdoZW4gL3NiaW4gaXMgYWxyZWFkIHN5bWxpbmtlZCB0byAvdXNyL3NiaW4sIGxpa2Ugb24gRmVkb3JhCistCXRlc3QgJChQS0dfUk9PVF9TQklOX0RJUikgLWVmICQoUEtHX1NCSU5fRElSKSB8fCBcCistCQkkKElOU1RBTEwpIC1TICQoUEtHX1JPT1RfU0JJTl9ESVIpLyQoTFRDT01NQU5EKSAkKFBLR19TQklOX0RJUikvJChMVENPTU1BTkQpCiArCSQoTFRJTlNUQUxMKSAtbSA3NTUgJChMVENPTU1BTkQpICQoUEtHX1NCSU5fRElSKQogIGluc3RhbGwtZGV2OgogIAogIC5kZXA6ICQoQ09NTUlOQ0wpICQoQ09NTU9OKSAkKElOVklOQ0wpICQoSU5WQ09NTU9OKQogZGlmZiAtLWdpdCBhL3Jlc3RvcmUvTWFrZWZpbGUgYi9yZXN0b3JlL01ha2VmaWxlCi1pbmRleCBjNmYzZjI1Li43ODM1ZWNjIDEwMDY0NAoraW5kZXggYWMzZjhjOC4uM2M0NjM5NCAxMDA2NDQKIC0tLSBhL3Jlc3RvcmUvTWFrZWZpbGUKICsrKyBiL3Jlc3RvcmUvTWFrZWZpbGUKLUBAIC0xMDcsMTAgKzEwNyw4IEBAIGRlZmF1bHQ6IGRlcGVuZCAkKExUQ09NTUFORCkKK0BAIC0xMTEsMTIgKzExMSw4IEBAIGRlZmF1bHQ6IGRlcGVuZCAkKExUQ09NTUFORCkKICBpbmNsdWRlICQoQlVJTERSVUxFUykKICAKICBpbnN0YWxsOiBkZWZhdWx0CiAtCSQoSU5TVEFMTCkgLW0gNzU1IC1kICQoUEtHX1JPT1RfU0JJTl9ESVIpCiAtCSQoTFRJTlNUQUxMKSAtbSA3NTUgJChMVENPTU1BTkQpICQoUEtHX1JPT1RfU0JJTl9ESVIpCiAgCSQoSU5TVEFMTCkgLW0gNzU1IC1kICQoUEtHX1NCSU5fRElSKQotLQkkKElOU1RBTEwpIC1TICQoUEtHX1JPT1RfU0JJTl9ESVIpLyQoTFRDT01NQU5EKSAkKFBLR19TQklOX0RJUikvJChMVENPTU1BTkQpCistCSMgc2tpcCBzeW1saW5rIHdoZW4gL3NiaW4gaXMgYWxyZWFkIHN5bWxpbmtlZCB0byAvdXNyL3NiaW4sIGxpa2Ugb24gRmVkb3JhCistCXRlc3QgJChQS0dfUk9PVF9TQklOX0RJUikgLWVmICQoUEtHX1NCSU5fRElSKSB8fCBcCistCQkkKElOU1RBTEwpIC1TICQoUEtHX1JPT1RfU0JJTl9ESVIpLyQoTFRDT01NQU5EKSAkKFBLR19TQklOX0RJUikvJChMVENPTU1BTkQpCiArCSQoTFRJTlNUQUxMKSAtbSA3NTUgJChMVENPTU1BTkQpICQoUEtHX1NCSU5fRElSKQogIGluc3RhbGwtZGV2OgogIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvd29yay13aXRoLW5ldy12ZXJzaW9uLW9mLXhmc3Byb2dzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAvZmlsZXMvd29yay13aXRoLW5ldy12ZXJzaW9uLW9mLXhmc3Byb2dzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0Y2UyM2Q3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL2ZpbGVzL3dvcmstd2l0aC1uZXctdmVyc2lvbi1vZi14ZnNwcm9ncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLU1ha2UgaXQgd29yayB3aXRoIHhmc3Byb2dzIDUuMi4wLgotCi0ieGZzX2Zzb3BfZ2VvbV92MV90IiBoYXMgY2hhbmdlZCB0byAic3RydWN0IHhmc19mc29wX2dlb21fdjEiCi1pbiB4ZnNwcm9ncyBzaW5jZSB2ZXJzaW9uIDUuMi4wLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogWXVhbiBDaGFvIDx5dWFuYy5mbnN0QGNuLmZ1aml0c3UuY29tPgotLS0tCi0gY29tbW9uL2ZzLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb21tb24vZnMuYyBiL2NvbW1vbi9mcy5jCi1pbmRleCA2MGNmMGZkLi4yY2M3MDMxIDEwMDY0NAotLS0tIGEvY29tbW9uL2ZzLmMKLSsrKyBiL2NvbW1vbi9mcy5jCi1AQCAtMjA0LDcgKzIwNCw3IEBAIGZzX21vdW50ZWQoIGNoYXIgKnR5cHMsIGNoYXIgKmNocnMsIGNoYXIgKm1udHMsIHV1aWRfdCAqaWRwICkKLSBpbnQKLSBmc19nZXRpZCggY2hhciAqbW50cywgdXVpZF90ICppZGIgKQotIHsKLS0JeGZzX2Zzb3BfZ2VvbV92MV90IGdlbzsKLSsJc3RydWN0IHhmc19mc29wX2dlb21fdjEgZ2VvOwotIAlpbnQgZmQ7Ci0gCi0gCWZkID0gb3BlbiggbW50cywgT19SRE9OTFkgKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAveGZzZHVtcF8zLjEuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNkdW1wL3hmc2R1bXBfMy4xLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljNTc1NTguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAveGZzZHVtcF8zLjEuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLVNVTU1BUlkgPSAiWEZTIEZpbGVzeXN0ZW0gRHVtcCBVdGlsaXR5IgotREVTQ1JJUFRJT04gPSAiVGhlIHhmc2R1bXAgcGFja2FnZSBjb250YWlucyB4ZnNkdW1wLCB4ZnNyZXN0b3JlIGFuZCBhIFwKLSAgICAgICAgICAgICAgIG51bWJlciBvZiBvdGhlciB1dGlsaXRpZXMgZm9yIGFkbWluaXN0ZXJpbmcgWEZTIGZpbGVzeXN0ZW1zLlwKLSAgICAgICAgICAgICAgIHhmc2R1bXAgZXhhbWluZXMgZmlsZXMgaW4gYSBmaWxlc3lzdGVtLCBkZXRlcm1pbmVzIHdoaWNoIFwKLSAgICAgICAgICAgICAgIG5lZWQgdG8gYmUgYmFja2VkIHVwLCBhbmQgY29waWVzIHRob3NlIGZpbGVzIHRvIGEgXAotICAgICAgICAgICAgICAgc3BlY2lmaWVkIGRpc2ssIHRhcGUgb3Igb3RoZXIgc3RvcmFnZSBtZWRpdW0uIgotSE9NRVBBR0UgPSAiaHR0cDovL29zcy5zZ2kuY29tL3Byb2plY3RzL3hmcyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvQ09QWUlORzttZDU9MTVjODMyODk0ZDEwZGRkMDBkZmNmNTdiZWU0OTBlY2MiCi1ERVBFTkRTID0gInhmc3Byb2dzIGF0dHIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvdXRpbHMvZnMveGZzL3hmc2R1bXAvJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1pbnN0YWxsLWFzLXVzZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vd29yay13aXRoLW5ldy12ZXJzaW9uLW9mLXhmc3Byb2dzLnBhdGNoIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3Vzcm1lcmdlJywnZmlsZTovLzAwMDEteGZzZHVtcC1zdXBwb3J0LXVzcm1lcmdlLnBhdGNoJywnJyxkKX0gXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiODRkM2JjMjg3YjRhMmJiNWQxNmIyMzIwYTQ3MDQ5YTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWQxNGU2N2FlNWIyNzNjMjY5OGU3NjdiNDNhNDZmMDMzZDM2MWU1NDBmZTEzZmVhYWY5YjExMGVlMGVkYzU4NSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLVBBUkFMTEVMX01BS0UgPSAiIgotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbZ2V0dGV4dF0gPSAiLS1lbmFibGUtZ2V0dGV4dD15ZXMsLS1lbmFibGUtZ2V0dGV4dD1ubyxnZXR0ZXh0IgotCi1DRkxBR1MgKz0gIi1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCi0KLUVYVFJBX09FTUFLRSArPSAiJ0xJQlRPT0w9JHtIT1NUX1NZU30tbGlidG9vbCcgVj0xIgotCi1kb19jb25maWd1cmUgKCkgewotICAgIGV4cG9ydCBERUJVRz0iLUROREVCVUciCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuZ3Vlc3MgJHtTfQotICAgIGluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLnN1YiAke1N9Ci0gICAgb2VfcnVuY29uZgotfQotCi1kb19pbnN0YWxsICgpIHsKLSAgICBleHBvcnQgRElTVF9ST09UPSR7RH0KLSAgICBvZV9ydW5tYWtlIGluc3RhbGwKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwtZGV2Ci19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzZHVtcC94ZnNkdW1wXzMuMS45LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAveGZzZHVtcF8zLjEuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTE4ZmJhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc2R1bXAveGZzZHVtcF8zLjEuOS5iYgpAQCAtMCwwICsxLDQxIEBACitTVU1NQVJZID0gIlhGUyBGaWxlc3lzdGVtIER1bXAgVXRpbGl0eSIKK0RFU0NSSVBUSU9OID0gIlRoZSB4ZnNkdW1wIHBhY2thZ2UgY29udGFpbnMgeGZzZHVtcCwgeGZzcmVzdG9yZSBhbmQgYSBcCisgICAgICAgICAgICAgICBudW1iZXIgb2Ygb3RoZXIgdXRpbGl0aWVzIGZvciBhZG1pbmlzdGVyaW5nIFhGUyBmaWxlc3lzdGVtcy5cCisgICAgICAgICAgICAgICB4ZnNkdW1wIGV4YW1pbmVzIGZpbGVzIGluIGEgZmlsZXN5c3RlbSwgZGV0ZXJtaW5lcyB3aGljaCBcCisgICAgICAgICAgICAgICBuZWVkIHRvIGJlIGJhY2tlZCB1cCwgYW5kIGNvcGllcyB0aG9zZSBmaWxlcyB0byBhIFwKKyAgICAgICAgICAgICAgIHNwZWNpZmllZCBkaXNrLCB0YXBlIG9yIG90aGVyIHN0b3JhZ2UgbWVkaXVtLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9vc3Muc2dpLmNvbS9wcm9qZWN0cy94ZnMiCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jL0NPUFlJTkc7bWQ1PTE1YzgzMjg5NGQxMGRkZDAwZGZjZjU3YmVlNDkwZWNjIgorREVQRU5EUyA9ICJ4ZnNwcm9ncyBhdHRyIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL2ZzL3hmcy94ZnNkdW1wLyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtaW5zdGFsbC1hcy11c2VyLnBhdGNoIFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3Vzcm1lcmdlJywnZmlsZTovLzAwMDEteGZzZHVtcC1zdXBwb3J0LXVzcm1lcmdlLnBhdGNoJywnJyxkKX0gXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMDg2Zjc1ODI4NzViMTRjMTc1MjI4NjdmZmUzZTIwMmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTVhZWVkZTYyMzJkZGNlNmM5ZTc5ZTJhZjg4ZDZmODA4NTM0ZGYxNTUyZWIyYmZhZjdmYjg1YjkyYWRkNmRkMSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK1BBUkFMTEVMX01BS0UgPSAiIgorUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbZ2V0dGV4dF0gPSAiLS1lbmFibGUtZ2V0dGV4dD15ZXMsLS1lbmFibGUtZ2V0dGV4dD1ubyxnZXR0ZXh0IgorCitDRkxBR1MgKz0gIi1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQiCisKK0VYVFJBX09FTUFLRSArPSAiJ0xJQlRPT0w9JHtIT1NUX1NZU30tbGlidG9vbCcgVj0xIgorCitkb19jb25maWd1cmUgKCkgeworICAgIGV4cG9ydCBERUJVRz0iLUROREVCVUciCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ251LWNvbmZpZy9jb25maWcuZ3Vlc3MgJHtTfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dudS1jb25maWcvY29uZmlnLnN1YiAke1N9CisgICAgb2VfcnVuY29uZgorfQorCitkb19pbnN0YWxsICgpIHsKKyAgICBleHBvcnQgRElTVF9ST09UPSR7RH0KKyAgICBvZV9ydW5tYWtlIGluc3RhbGwKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwtZGV2Cit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MveGZzcHJvZ3NfNS4yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWZpbGVzeXN0ZW1zL3JlY2lwZXMtdXRpbHMveGZzcHJvZ3MveGZzcHJvZ3NfNS4yLjEuYmIKaW5kZXggMzRiMzM4Ni4uNDMzY2U0NyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1maWxlc3lzdGVtcy9yZWNpcGVzLXV0aWxzL3hmc3Byb2dzL3hmc3Byb2dzXzUuMi4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZmlsZXN5c3RlbXMvcmVjaXBlcy11dGlscy94ZnNwcm9ncy94ZnNwcm9nc181LjIuMS5iYgpAQCAtMzUsNiArMzUsNyBAQAogICAgICAgICAgICAgICAgIElOU1RBTExfR1JPVVA9cm9vdCBcCiAgICAgICAgICAgICAgICAgYWNfY3ZfaGVhZGVyX2Fpb19oPXllcyBcCiAgICAgICAgICAgICAgICAgYWNfY3ZfbGliX3J0X2xpb19saXN0aW89eWVzIFwKKyAgICAgICAgICAgICAgICBPUFRJTUlaRVI9JyR7U0VMRUNURURfT1BUSU1JWkFUSU9OfScgXAogIgogCiBESVNBQkxFX1NUQVRJQyA9ICIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL1JFQURNRSBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvUkVBRE1FCmluZGV4IDNjNWI0YzUuLmExMTgxNWYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvUkVBRE1FCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvUkVBRE1FCkBAIC0xNSw0ICsxNSw0IEBACiBXaGVuIHNlbmRpbmcgc2luZ2xlIHBhdGNoZXMsIHBsZWFzZSB1c2luZyBzb21ldGhpbmcgbGlrZToKICdnaXQgc2VuZC1lbWFpbCAtTSAtMSAtLXRvIG9wZW5lbWJlZGRlZC1kZXZlbEBsaXN0cy5vcGVuZW1iZWRkZWQub3JnIC0tc3ViamVjdC1wcmVmaXg9bWV0YS1nbm9tZV1bUEFUQ0gnCiAKLUxheWVyIG1haW50YWluZXI6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KK0xheWVyIG1haW50YWluZXI6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL2NvbmYvbGF5ZXIuY29uZiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvY29uZi9sYXllci5jb25mCmluZGV4IGQzODFmZGYuLjdhYTk1MDcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvY29uZi9sYXllci5jb25mCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvY29uZi9sYXllci5jb25mCkBAIC0xNyw0ICsxNyw0IEBACiAKIExBWUVSREVQRU5EU19nbm9tZS1sYXllciA9ICJjb3JlIG9wZW5lbWJlZGRlZC1sYXllciBuZXR3b3JraW5nLWxheWVyIgogCi1MQVlFUlNFUklFU19DT01QQVRfZ25vbWUtbGF5ZXIgPSAidGh1ZCB3YXJyaW9yIHpldXMiCitMQVlFUlNFUklFU19DT01QQVRfZ25vbWUtbGF5ZXIgPSAidGh1ZCB3YXJyaW9yIHpldXMgZHVuZmVsbCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibm1hL2xpYm5tYV8xLjguMjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5tYS9saWJubWFfMS44LjI4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjYjBiYmMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5tYS9saWJubWFfMS44LjI4LmJiCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAiTmV0d29ya01hbmFnZXIgR1VJIGxpYnJhcnkiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ3RrKzMgbmV0d29ya21hbmFnZXIiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBnZXR0ZXh0IHZhbGEgZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywnZ2NyJywneDExJywnJyxkKX0iCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMDk0YzQ1ZDc2OTRiMTUzNjEyY2JkYzNjNzEzZWRjYjUiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI0YWY2OTU1MmQxMzFhM2IyYjhiNmEyZGY1ODQwNDQyNThiZjU4ODQ0OGRjZGI0YmRkZmExMmEwN2MxMzRiNzI2IgorCitQQUNLQUdFQ09ORklHID89ICJnY3IgaXNvX2NvZGVzIG1vYmlsZV9icm9hZGJhbmRfcHJvdmlkZXJfaW5mbyIKK1BBQ0tBR0VDT05GSUdbZ2NyXSA9ICItRGdjcj10cnVlLC1EZ2NyPWZhbHNlLGdjciIKK1BBQ0tBR0VDT05GSUdbaXNvX2NvZGVzXSA9ICItRGlzb19jb2Rlcz10cnVlLC1EaXNvX2NvZGVzPWZhbHNlLGlzby1jb2Rlcyxpc28tY29kZXMiCitQQUNLQUdFQ09ORklHW21vYmlsZV9icm9hZGJhbmRfcHJvdmlkZXJfaW5mb10gPSAiLURtb2JpbGVfYnJvYWRiYW5kX3Byb3ZpZGVyX2luZm89dHJ1ZSwtRG1vYmlsZV9icm9hZGJhbmRfcHJvdmlkZXJfaW5mbz1mYWxzZSxtb2JpbGUtYnJvYWRiYW5kLXByb3ZpZGVyLWluZm8sbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvIgorCisjIGdvIGludHJvc3BlY3Rpb24gaXMgbm90IHN1cHBvcnRlZCBmb3IgbWlwc24zMiwgYnV0IHZhcGkgbmVlZHMgaXQKKyMKK0VYVFJBX09FTUVTT05fbWlwc2FyY2huMzJfYXBwZW5kID0gIiAtRHZhcGk9ZmFsc2UiCisKK0dUS0RPQ19NRVNPTl9PUFRJT04gPSAiZ3RrX2RvYyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29yay1tYW5hZ2VyLWFwcGxldC9uZXR3b3JrLW1hbmFnZXItYXBwbGV0XzEuMTYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29yay1tYW5hZ2VyLWFwcGxldC9uZXR3b3JrLW1hbmFnZXItYXBwbGV0XzEuMTYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2FjNTJjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrLW1hbmFnZXItYXBwbGV0L25ldHdvcmstbWFuYWdlci1hcHBsZXRfMS4xNi4wLmJiCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAiR1RLKyBhcHBsZXQgZm9yIE5ldHdvcmtNYW5hZ2VyIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitERVBFTkRTID0gImd0ayszIGxpYm5tYSBsaWJub3RpZnkgbGlic2VjcmV0IG5ldHdvcmttYW5hZ2VyIGlzby1jb2RlcyBuc3MiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGZlYXR1cmVzX2NoZWNrIGdub21lYmFzZSBnc2V0dGluZ3MgZ3RrLWljb24tY2FjaGUgZ2V0dGV4dAorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI5NjUyYzI3NTdlODVkNmNhYmE2NTc0MDVjZjc5NGZiZCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQ2Zjk4YTQ1NWEyNzFlN2UxNjliNWQzNWQyOTBmNDg4MGY1MDNjZGY3NTkzMjUxNTcyYzkzMzA5NDFiNWMzZTUiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW21vZGVtbWFuYWdlcl0gPSAiLUR3d2FuPXRydWUsIC1Ed3dhbj1mYWxzZSwgbW9kZW1tYW5hZ2VyIgorUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItRHNlbGludXg9dHJ1ZSwgLURzZWxpbnV4PWZhbHNlLCBsaWJzZWxpbnV4IgorCitSREVQRU5EU18ke1BOfSA9KyAibmV0d29ya21hbmFnZXIiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vbm0tYXBwbGV0LyBcCisgICAgJHtkYXRhZGlyfS9saWJubWEvd2lmaS51aSBcCisgICAgJHtkYXRhZGlyfS9tZXRhaW5mbyBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmstbWFuYWdlci1hcHBsZXQvbmV0d29yay1tYW5hZ2VyLWFwcGxldF8xLjguMjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmstbWFuYWdlci1hcHBsZXQvbmV0d29yay1tYW5hZ2VyLWFwcGxldF8xLjguMjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4NTM0MDcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrLW1hbmFnZXItYXBwbGV0L25ldHdvcmstbWFuYWdlci1hcHBsZXRfMS44LjI0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotU1VNTUFSWSA9ICJHVEsrIGFwcGxldCBmb3IgTmV0d29ya01hbmFnZXIiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCi0KLURFUEVORFMgPSAiZ3RrKzMgbGlibm90aWZ5IGxpYnNlY3JldCBuZXR3b3JrbWFuYWdlciBpc28tY29kZXMgbnNzIgotCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotaW5oZXJpdCBmZWF0dXJlc19jaGVjayBnbm9tZWJhc2UgZ3NldHRpbmdzIGd0ay1kb2MgZ3RrLWljb24tY2FjaGUgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGdldHRleHQKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNWMxYmYzNTFmZGU1YWRjMTIyMDAzNDU1NTA1MTYwNTAiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIxMThiYmI4YTUwMjc2MzRiNjJlOGI0NWIxNmNlYWZjZTc0NDQxNTI5Yzk5YmYyMzA2NTRlM2JlYzM4ZjlmYmJmIgotCi1HVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2djcl0gPSAiLURnY3I9dHJ1ZSwgLURnY3I9ZmFsc2UsIGdjciIKLVBBQ0tBR0VDT05GSUdbbW9kZW1tYW5hZ2VyXSA9ICItRHd3YW49dHJ1ZSwgLUR3d2FuPWZhbHNlLCBtb2RlbW1hbmFnZXIiCi1QQUNLQUdFQ09ORklHW21vYmlsZS1wcm92aWRlci1pbmZvXSA9ICItRG1vYmlsZV9icm9hZGJhbmRfcHJvdmlkZXJfaW5mbz10cnVlLCAtRG1vYmlsZV9icm9hZGJhbmRfcHJvdmlkZXJfaW5mbz1mYWxzZSwgbW9iaWxlLWJyb2FkYmFuZC1wcm92aWRlci1pbmZvLG1vYmlsZS1icm9hZGJhbmQtcHJvdmlkZXItaW5mbyIKLVBBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLURzZWxpbnV4PXRydWUsIC1Ec2VsaW51eD1mYWxzZSwgbGlic2VsaW51eCIKLQotUkRFUEVORFNfJHtQTn0gPSsgIm5ldHdvcmttYW5hZ2VyIgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2RhdGFkaXJ9L25tLWFwcGxldC8gXAotICAgICR7ZGF0YWRpcn0vbGlibm1hL3dpZmkudWkgXAotICAgICR7ZGF0YWRpcn0vbWV0YWluZm8gXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdpbXAvYmFibC9iYWJsXzAuMS43NC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1naW1wL2JhYmwvYmFibF8wLjEuNzQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ3MDk4NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1naW1wL2JhYmwvYmFibF8wLjEuNzQuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJCYWJsIGlzIGEgZHluYW1pYywgYW55IHRvIGFueSwgcGl4ZWwgZm9ybWF0IGNvbnZlcnNpb24gbGlicmFyeSIKK0xJQ0VOU0UgPSAiTEdQTC0zLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKKworR0lSX01FU09OX09QVElPTiA9ICJlbmFibGUtZ2lyIgorCitpbmhlcml0IHNldHVwdG9vbHMzIGdub21lYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworREVQRU5EUyArPSAibGNtcyIKKworIyBodHRwczovL2J1Z3MubGx2bS5vcmcvc2hvd19idWcuY2dpP2lkPTQ1NTU1CitDRkxBR1NfYXBwZW5kX3Rvb2xjaGFpbi1jbGFuZ19taXBzYXJjaCA9ICIgLWZmcC1leGNlcHRpb24tYmVoYXZpb3I9aWdub3JlICIKK0NGTEFHU19hcHBlbmRfdG9vbGNoYWluLWNsYW5nX3Jpc2N2NjQgPSAiIC1mZnAtZXhjZXB0aW9uLWJlaGF2aW9yPWlnbm9yZSAiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZC5naW1wLm9yZy9wdWIvJHtCUE59LzAuMS8ke0JQfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiZDAzMjg1M2YyNjc4YmM5NTA1NGMzOWQ0ZjAyMDQ1YzEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWE3MTBiNjk1MGRhMzdhZGE5NGNkOWUyMDQ2Y2JjZTI2ZGUxMjQ3M2RhMzJhN2I3OWI3ZDE0MzJmYzY2Y2UwZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ2ltcC9nZWdsL2dlZ2wvMDAwMS1tZXNvbi5idWlsZC1HaXZlLW5vdGUtaWYtc2RsMi13YXMtZm91bmQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ2ltcC9nZWdsL2dlZ2wvMDAwMS1tZXNvbi5idWlsZC1HaXZlLW5vdGUtaWYtc2RsMi13YXMtZm91bmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmE0OWYxZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1naW1wL2dlZ2wvZ2VnbC8wMDAxLW1lc29uLmJ1aWxkLUdpdmUtbm90ZS1pZi1zZGwyLXdhcy1mb3VuZC5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDZiZWQxOTlhNzNhN2FmMzkzNDRjZjhlNzk5YjY2NTAxMTU1MzYwMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorRGF0ZTogU2F0LCA4IEZlYiAyMDIwIDE0OjI5OjUyICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc29uLmJ1aWxkOiBHaXZlIG5vdGUgaWYgc2RsMiB3YXMgZm91bmQKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworQ29uZmlndXJlIG91dHB1dCBjb25mdXNlZCBtZSBhIGJpdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKy0tLQorIG1lc29uLmJ1aWxkIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA5ZDViNDg0Li4yOTZiNWYzIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtMzc0LDYgKzM3NCw3IEBAIG1lc3NhZ2UoJ1xuJy5qb2luKFsnJywKKyAnICBPcGVuRVhSOiAgICAgICAgIEAwQCcuZm9ybWF0KG9wZW5leHIuZm91bmQoKSksCisgJyAgcnN2ZzogICAgICAgICAgICBAMEAnLmZvcm1hdChsaWJyc3ZnLmZvdW5kKCkpLAorICcgIFNETDogICAgICAgICAgICAgQDBAJy5mb3JtYXQoc2RsMS5mb3VuZCgpKSwKKysnICBTREwyOiAgICAgICAgICAgIEAwQCcuZm9ybWF0KHNkbDIuZm91bmQoKSksCisgJyAgbGlicmF3OiAgICAgICAgICBAMEAnLmZvcm1hdChsaWJyYXcuZm91bmQoKSksCisgJyAgSmFzcGVyOiAgICAgICAgICBAMEAnLmZvcm1hdChqYXNwZXIuZm91bmQoKSksCisgJyAgYXYgbGliczogICAgICAgICBAMEAnLmZvcm1hdChhdmxpYnNfZm91bmQpLAorLS0gCisyLjIxLjAKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdpbXAvZ2VnbC9nZWdsXzAuNC4yMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1naW1wL2dlZ2wvZ2VnbF8wLjQuMjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E3M2U2NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1naW1wL2dlZ2wvZ2VnbF8wLjQuMjIuYmIKQEAgLTAsMCArMSw2MSBAQAorU1VNTUFSWSA9ICJHRUdMIChHZW5lcmljIEdyYXBoaWNzIExpYnJhcnkpIGlzIGEgZ3JhcGggYmFzZWQgaW1hZ2UgcHJvY2Vzc2luZyBmcmFtZXdvcmsiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjFhOGJmY2JjODUzMDRkZjQ1NGI2NWQzNzhiMjk5YzciCisKK0RFUEVORFMgPSAiIFwKKyAgICBpbnRsdG9vbC1uYXRpdmUgXAorICAgIGJhYmwgXAorICAgIGdsaWItMi4wIFwKKyAgICBwYW5nbyBcCisgICAgY2Fpcm8gXAorICAgIGV4cGF0IFwKKyAgICB6bGliIFwKKyAgICBcCisgICAganNvbi1nbGliIFwKKyIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKKworaW5oZXJpdCBmZWF0dXJlc19jaGVjayBnbm9tZWJhc2UgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU0hQViA9ICIke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9IgorCitTUkNfVVJJID0gIiBcCisgICAgaHR0cHM6Ly9kb3dubG9hZC5naW1wLm9yZy9wdWIvJHtCUE59LyR7U0hQVn0vJHtCUH0udGFyLnh6IFwKKyAgICBmaWxlOi8vMDAwMS1tZXNvbi5idWlsZC1HaXZlLW5vdGUtaWYtc2RsMi13YXMtZm91bmQucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjE3NzZhYzI2NzkyZGUwZGUzYzNkNjgwODcyZTk0YjcyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE4ODhlYzQxZGZkMTlmZTI4MjczNzk1YzIyMDllZmMxYTU0MmJlNzQyNjkxNTYxODE2NjgzOTkwZGM2NDJjNjEiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJnZXhpdjIganBlZyBsaWJwbmcgbGlicnN2ZyBzZGwyIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAibGlicG5nIGxpYnJzdmciCisKK1BBQ0tBR0VDT05GSUdbamFzcGVyXSA9ICItRGphc3Blcj1lbmFibGVkLC1EamFzcGVyPWRpc2FibGVkLGphc3BlciIKK1BBQ0tBR0VDT05GSUdbZ2V4aXYyXSA9ICItRGdleGl2Mj1lbmFibGVkLC1EZ2V4aXYyPWRpc2FibGVkLGdleGl2MiIKK1BBQ0tBR0VDT05GSUdbZ3JhcGh2aXpdID0gIi1EZ3JhcGh2aXo9ZW5hYmxlZCwtRGdyYXBodml6PWRpc2FibGVkLGdyYXBodml6IgorUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItRGxpYmpwZWc9ZW5hYmxlZCwtRGxpYmpwZWc9ZGlzYWJsZWQsanBlZyIKK1BBQ0tBR0VDT05GSUdbbGNtc10gPSAiLURsY21zPWVuYWJsZWQsLURsY21zPWRpc2FibGVkLGxjbXMiCitQQUNLQUdFQ09ORklHW2xpYmF2XSA9ICItRGxpYmF2PWVuYWJsZWQsLURsaWJhdj1kaXNhYmxlZCxsaWJhdiIKK1BBQ0tBR0VDT05GSUdbbGlicG5nXSA9ICItRGxpYnBuZz1lbmFibGVkLC1EbGlicG5nPWRpc2FibGVkLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbbGlicnN2Z10gPSAiLURsaWJyc3ZnPWVuYWJsZWQsLURsaWJyc3ZnPWRpc2FibGVkLGxpYnJzdmciCitQQUNLQUdFQ09ORklHW3NkbF0gPSAiLURzZGwxPWVuYWJsZWQsLURzZGwxPWRpc2FibGVkLHZpcnR1YWwvbGlic2RsIgorUEFDS0FHRUNPTkZJR1tzZGwyXSA9ICItRHNkbDI9ZW5hYmxlZCwtRHNkbDI9ZGlzYWJsZWQsdmlydHVhbC9saWJzZGwyIgorUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItRGxpYnRpZmY9ZW5hYmxlZCwtRGxpYnRpZmY9ZGlzYWJsZWQsdGlmZiIKK1BBQ0tBR0VDT05GSUdbd2VicF0gPSAiLUR3ZWJwPWVuYWJsZWQsLUR3ZWJwPWRpc2FibGVkLHdlYnAiCisKKyMgVGhlcmUgYXJlIGEgY291cGxlIG9mIG5vbi1zeW1saW5rIC5zbyBmaWxlcyBpbnN0YWxsZWQgaW50byBsaWJkaXIsIHdoaWNoIG5lZWQgdG8gZ28gaW50byBtYWluIHBhY2thZ2UKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7bGliZGlyfS8qLnNvIFwKKyAgICAke2xpYmRpcn0vZ2VnbC0ke1NIUFZ9LyouanNvbiBcCisgICAgJHtsaWJkaXJ9L2dlZ2wtJHtTSFBWfS8qLnNvIFwKKyIKK0ZJTEVTX1NPTElCU0RFViA9ICIke2xpYmRpcn0vbGliZ2VnbC0ke1NIUFZ9JHtTT0xJQlNERVZ9IgorCisjIEZhaWxzIHRvIGJ1aWxkIHdpdGggdGh1bWItMSAocWVtdWFybSkKKyMgZ2VnbC0wLjIuMC9vcGVyYXRpb25zL2NvbW1vbi9tYXR0aW5nLWdsb2JhbC5jOiBJbiBmdW5jdGlvbiAnbWF0dGluZ19wcm9jZXNzJzoKKyMgZ2VnbC0wLjIuMC9vcGVyYXRpb25zL2NvbW1vbi9tYXR0aW5nLWdsb2JhbC5jOjQ2MzoxOiBpbnRlcm5hbCBjb21waWxlciBlcnJvcjogaW4gcGF0Y2hfanVtcF9pbnNuLCBhdCBjZmdydGwuYzoxMjc1CitBUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ2ltcC9naW1wL2dpbXBfMi4xMC4xOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1naW1wL2dpbXAvZ2ltcF8yLjEwLjE4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNTA1NzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ2ltcC9naW1wL2dpbXBfMi4xMC4xOC5iYgpAQCAtMCwwICsxLDY0IEBACitTVU1NQVJZID0gIlRoZSBHSU1QIGlzIHRoZSBHTlUgSW1hZ2UgTWFuaXB1bGF0aW9uIFByb2dyYW0iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdpbXAub3JnIgorU0VDVElPTiA9ICJ4MTEvZ3JhcGhpY3MiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzY3ODk1N2IwYzhlOTY0YWE2YzcwZmQ3NzY0MWE3MWUiCisKK0RFUEVORFMgPSAiIFwKKyAgICBnZGstcGl4YnVmLW5hdGl2ZSBcCisgICAgaW50bHRvb2wtbmF0aXZlIFwKKyAgICBsaWJ4c2x0LW5hdGl2ZSBcCisgICAgZ2VnbC1uYXRpdmUgXAorICAgIGRidXMtZ2xpYiBcCisgICAgZ3RrKyBcCisgICAgYmFibCBcCisgICAgZ2VnbCBcCisgICAgbGlibXlwYWludCBcCisgICAgbXlwYWludC1icnVzaGVzLTEuMCBcCisgICAgZ2V4aXYyIFwKKyAgICBqcGVnIFwKKyAgICBsaWJwbmcgXAorICAgIGxpYmV4aWYgXAorICAgIHRpZmYgXAorICAgIGxjbXMgXAorICAgIHBvcHBsZXIgXAorICAgIHBvcHBsZXItZGF0YSBcCisgICAgamFzcGVyIFwKKyAgICBiemlwMiBcCisgICAgbGliZ3VkZXYgXAorICAgIGxpYm1uZyBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnbGlieG11IGxpYnhwbScsICcnLCBkKX0gXAorIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJleGVjaW5mbyIKKworaW5oZXJpdCBmZWF0dXJlc19jaGVjayBnbm9tZWJhc2UgZ3RrLWljb24tY2FjaGUgZ3RrLWRvYyBtaW1lLXhkZworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTSFBWID0gIiR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0iCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZC5naW1wLm9yZy9wdWIvJHtCUE59L3Yke1NIUFZ9LyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiMDk2ZDA0ZmZiMmM0NTU5Y2IyMTUyZjUwN2ZmMzFjOWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjViZmUxMTFlOGVlYmZmZDNkZGUzMDE2Y2NiNTA3Zjk5NDhkMjY2M2Q5NDk3Y2I0MzhkOWJiNjA5ZTExZDcxNiIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1weXRob24gXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC13ZWJraXQgXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC13bWYiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsX21pcHNhcmNoID0gIiAtLWRpc2FibGUtdmVjdG9yLWljb25zIgorRVhUUkFfT0VDT05GX2FwcGVuZF90b29sY2hhaW4tY2xhbmdfYXJtID0gIiAtLWRpc2FibGUtdmVjdG9yLWljb25zIgorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworICAgIGZpbmQgJHtCfSAtbmFtZSBNYWtlZmlsZSB8IHhhcmdzIHNlZCAtaSBzOictSSQoaW5jbHVkZWRpciknOictSS4nOmcKKyAgICBmaW5kICR7Qn0gLW5hbWUgTWFrZWZpbGUgfCB4YXJncyBzZWQgLWkgczonLUkvdXNyL2luY2x1ZGUnOictSSR7U1RBR0lOR19JTkNESVJ9JzpnCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAjIExldCBuYXRpdmUgYmFibC9nZWdsIGZpbmQgdGhlaXIgcGx1Z2lucworICAgIGV4cG9ydCBCQUJMX1BBVEg9YGZpbmQgJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1tYXhkZXB0aCAxIC1uYW1lICdiYWJsLSonYAorICAgIGV4cG9ydCBHRUdMX1BBVEg9YGZpbmQgJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9IC1tYXhkZXB0aCAxIC1uYW1lICdnZWdsLSonYAorfQorCitGSUxFU18ke1BOfSAgKz0gIiR7ZGF0YWRpcn0vbWV0YWluZm8iCisKK1JERVBFTkRTXyR7UE59ICs9ICJteXBhaW50LWJydXNoZXMtMS4wIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdpbXAvbXlwYWludC9saWJteXBhaW50X2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1naW1wL215cGFpbnQvbGlibXlwYWludF9naXQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmNhODBmMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1naW1wL215cGFpbnQvbGlibXlwYWludF9naXQuYmIKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJsaWJteXBhaW50IGlzIGEgbGlicmFyeSBmb3IgbWFraW5nIGJydXNoc3Ryb2tlcyIKK0xJQ0VOU0UgPSAiSVNDIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OWQxMzIwM2FiNDAxM2U1YTE0ZGQ2MjEwNWY3NWQ1OGIiCisKK0RFUEVORFMgPSAiIFwKKyAgICBnbGliLTIuMC1uYXRpdmUgXAorICAgIGludGx0b29sLW5hdGl2ZSBcCisgICAgZ2xpYi0yLjAgXAorICAgIGJhYmwgXAorICAgIGpzb24tYyBcCisiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdvYmplY3QtaW50cm9zcGVjdGlvbiBnZXR0ZXh0IHB5dGhvbjNuYXRpdmUKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL215cGFpbnQvbGlibXlwYWludC5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPWxpYm15cGFpbnQtdjEiCitTUkNSRVYgPSAiNDc3Y2I5NGI1OTYwMzViNTRhMjU1ZmFhZjk1ZDEzZjZhOGVlMzYxOSIKK1BWID0gIjEuNC4wIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKyAgICAjIGF1dG9nZW4gdXNlcyBweXRob24yIHNvIGdlbmVyYXRlIGhlYWRlcnMgb3Vyc2VsdmVzCisgICAgY2QgJHtTfQorICAgIHB5dGhvbjMgZ2VuZXJhdGUucHkgbXlwYWludC1icnVzaC1zZXR0aW5ncy1nZW4uaCBicnVzaHNldHRpbmdzLWdlbi5oCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ2ltcC9teXBhaW50L215cGFpbnQtYnJ1c2hlcy0xLjBfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdpbXAvbXlwYWludC9teXBhaW50LWJydXNoZXMtMS4wX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNGQwOGZlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdpbXAvbXlwYWludC9teXBhaW50LWJydXNoZXMtMS4wX2dpdC5iYgpAQCAtMCwwICsxLDEyIEBACitTVU1NQVJZID0gIk15UGFpbnQgYnJ1c2hlcyIKK0xJQ0VOU0UgPSAiQ0MwLTEuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY1ZDM2MTY4NTJkYmY3YjFhNmQ0YjUzYjAwNjI2MDMyIgorCitpbmhlcml0IGF1dG90b29scyBhbGxhcmNoCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9teXBhaW50L215cGFpbnQtYnJ1c2hlcy5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPXYxLjMueCIKK1NSQ1JFViA9ICJiZTlmZGY5ZWY2YzU0ZTI5Yzc0OTk5OTJmMDRlMjkxMTQ4NTdiM2ZjIgorUFYgPSAiMS4zLjArZ2l0JHtTUkNQVn0iCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9teXBhaW50LWRhdGEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZXZpbmNlL2V2aW5jZV8zLjM0LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZXZpbmNlL2V2aW5jZV8zLjM0LjIuYmIKaW5kZXggOGY2NjljOS4uYjc5MmQ0ZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2V2aW5jZS9ldmluY2VfMy4zNC4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ldmluY2UvZXZpbmNlXzMuMzQuMi5iYgpAQCAtMTYsNyArMTYsNyBAQAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCd4MTEnLCdnbm9tZS1kZXNrdG9wMycsJycsZCl9IFwKICIKIAotaW5oZXJpdCBnbm9tZWJhc2UgaXRzdG9vbCBnbm9tZS1oZWxwIHBrZ2NvbmZpZyBnc2V0dGluZ3MgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnZXR0ZXh0IGZlYXR1cmVzX2NoZWNrCitpbmhlcml0IGdub21lYmFzZSBpdHN0b29sIGdub21lLWhlbHAgcGtnY29uZmlnIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdldHRleHQgZmVhdHVyZXNfY2hlY2sgbWltZS14ZGcKIAogU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiOWU5ZTgyZmE4ZjYwNDVhZDc4MTcxNTdkOTMzNWQxODUiCiBTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIzY2MwOTU1ZjExMjA0ZTNhMmRiMWM3YWI5OWI4NjY2OTI3NDk1OTIyNTc0ODViODczMDQxMzRhZDY5ZGEwNjE3IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2V2b2x1dGlvbi1kYXRhLXNlcnZlci9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2V2b2x1dGlvbi1kYXRhLXNlcnZlci9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIuaW5jCmluZGV4IDFlYWUzZGYuLjRkYTNmODIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9ldm9sdXRpb24tZGF0YS1zZXJ2ZXIvZXZvbHV0aW9uLWRhdGEtc2VydmVyLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZXZvbHV0aW9uLWRhdGEtc2VydmVyL2V2b2x1dGlvbi1kYXRhLXNlcnZlci5pbmMKQEAgLTksNyArOSw3IEBACiAKIGluaGVyaXQgZ25vbWViYXNlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgogCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI2ODdkNmQ3MjQyZDYwYThhM2EzMzIyZWVlNmE0NWRjYSIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQyZGZhYzVjYTc2ZTA1ZTg3MmZiYjA2YTU3Y2FlMGRhY2U2NDgxOGM0ZGNlMWU5MDZiMDM5Njg4ODI3MGMzYTkiCi1QViA9ICIzLjM0LjMiCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIyMzI5MzU1NGU5ZDkyYzZjMGM3OGI1NTY4YjI4NmVmZCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjk4NWM0YjRiNjEzYzUwYzk5OWE0Y2E1ZTlkNTI0NzhhY2JlYTg1ZTFlOTliYWIzYThiNmU1N2JhN2VhY2U4ZjMiCitQViA9ICIzLjM0LjQiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9maWxlLXJvbGxlci9maWxlLXJvbGxlcl8zLjMyLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZmlsZS1yb2xsZXIvZmlsZS1yb2xsZXJfMy4zMi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWI5NjY4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9maWxlLXJvbGxlci9maWxlLXJvbGxlcl8zLjMyLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkFuIGFyY2hpdmUgbWFuYWdlciB1dGlsaXR5IGZvciB0aGUgIEdOT01FIEVudmlyb25tZW50IgotTElDRU5TRT0iR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKLQotREVQRU5EUyA9ICIgXAotICAgIGdsaWItMi4wLW5hdGl2ZSBcCi0gICAgZ3RrKzMgXAotICAgIGxpYmFyY2hpdmUgXAotICAgIGxpYm5vdGlmeSBcCi0iCi0KLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBpdHN0b29sIGdub21lLWhlbHAgZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNWUwOThiYjI1NGQzNGY0OGE5YjU3NjFiNDY4ZjQyNDAiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJiZTExMWZiODc3ZGMxZWI0ODdlYzVkNmUyYjcyYmE1ZGVmZTFhYjgwMzNhNmE2YjliOTA0NGEyYTc3ODdlMjJhIgotCi1QQUNLQUdFQ09ORklHW25hdXRpbHVzXSA9ICItRG5hdXRpbHVzLWFjdGlvbnM9dHJ1ZSwtRG5hdXRpbHVzLWFjdGlvbnM9ZmFsc2UsbmF1dGlsdXMiCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSAgICAke2RhdGFkaXJ9L21ldGFpbmZvIFwKLSAgICAke2xpYmRpcn0vbmF1dGlsdXMgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2ZpbGUtcm9sbGVyL2ZpbGUtcm9sbGVyXzMuMzIuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9maWxlLXJvbGxlci9maWxlLXJvbGxlcl8zLjMyLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTk1NzM1YwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9maWxlLXJvbGxlci9maWxlLXJvbGxlcl8zLjMyLjQuYmIKQEAgLTAsMCArMSwyOCBAQAorU1VNTUFSWSA9ICJBbiBhcmNoaXZlIG1hbmFnZXIgdXRpbGl0eSBmb3IgdGhlICBHTk9NRSBFbnZpcm9ubWVudCIKK0xJQ0VOU0U9IkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCisKK0RFUEVORFMgPSAiIFwKKyAgICBnbGliLTIuMC1uYXRpdmUgXAorICAgIGd0ayszIFwKKyAgICBsaWJhcmNoaXZlIFwKKyAgICBsaWJub3RpZnkgXAorIgorCitpbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgaXRzdG9vbCBnbm9tZS1oZWxwIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIG1pbWUteGRnCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjIxOTgyYjhkMjk4Y2IyOTk0YTk5NDk0Mzk5ZGNiMmQ1IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMWIzYjJjYmZjYjQ0NGUwZDE1MGJmZDA2M2FkZDlkNTE4MWM4YWIyNGYwNTkzZTVhODg5NDM5OTI5NzIxNDAxNyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3BhY2thZ2VraXQnLCAnJywgZCl9IgorCitQQUNLQUdFQ09ORklHW25hdXRpbHVzXSA9ICItRG5hdXRpbHVzLWFjdGlvbnM9dHJ1ZSwtRG5hdXRpbHVzLWFjdGlvbnM9ZmFsc2UsbmF1dGlsdXMiCitQQUNLQUdFQ09ORklHW3BhY2thZ2VraXRdID0gIi1EcGFja2FnZWtpdD10cnVlLC1EcGFja2FnZWtpdD1mYWxzZSwiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKKyAgICAke2RhdGFkaXJ9L21ldGFpbmZvIFwKKyAgICAke2xpYmRpcn0vbmF1dGlsdXMgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dlZGl0L2dlZGl0XzMuMzQuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZWRpdC9nZWRpdF8zLjM0LjEuYmIKaW5kZXggMjA4MDZiZC4uODUwYmE0ZCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dlZGl0L2dlZGl0XzMuMzQuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2VkaXQvZ2VkaXRfMy4zNC4xLmJiCkBAIC0xOSw3ICsxOSw3IEBACiAgICAgZ3Rrc291cmNldmlldzQgXAogIgogCi1pbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgaXRzdG9vbCBnbm9tZS1oZWxwIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIHZhbGEgZ2V0dGV4dCBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KK2luaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBpdHN0b29sIGdub21lLWhlbHAgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgdmFsYSBnZXR0ZXh0IGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBtaW1lLXhkZwogCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2VvY29kZS1nbGliL2dlb2NvZGUtZ2xpYl8zLjI2LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2VvY29kZS1nbGliL2dlb2NvZGUtZ2xpYl8zLjI2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjMjE4ZjMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dlb2NvZGUtZ2xpYi9nZW9jb2RlLWdsaWJfMy4yNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGNvbnZlbmllbmNlIGxpYnJhcnkgZm9yIHRoZSBnZW9jb2RpbmciCi0KLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTU1Y2E4MTdjY2I3ZDViNWI2NjM1NTY5MGU5YWJjNjA1IgotCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotR0lSX01FU09OX09QVElPTiA9ICJlbmFibGUtaW50cm9zcGVjdGlvbiIKLUdUS0RPQ19NRVNPTl9PUFRJT04gPSAiZW5hYmxlLWd0ay1kb2MiCi0KLWluaGVyaXQgZ25vbWViYXNlIGdvYmplY3QtaW50cm9zcGVjdGlvbiBnZXR0ZXh0IGd0ay1kb2MgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLURFUEVORFMgPSAiIFwKLSAgICBqc29uLWdsaWIgXAotICAgIGxpYnNvdXAtMi40IFwKLSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMjEwOTQ0OTRlNjZjODYzNjhhZGQ2YTU1YmY0ODAwNDkiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI1YmFhNmFiNzZhNzZjOWZjNTY3ZTRjMzJjM2FmMmNkMWQxNzg0OTM0YzI1NWJjNWE2MmM1MTJlNmFmNmJkZTFjIgotCi1FWFRSQV9PRU1FU09OID0gIi1EZW5hYmxlLWluc3RhbGxlZC10ZXN0cz1mYWxzZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZW9jb2RlLWdsaWIvZ2VvY29kZS1nbGliXzMuMjYuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nZW9jb2RlLWdsaWIvZ2VvY29kZS1nbGliXzMuMjYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGYzYzI3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dlb2NvZGUtZ2xpYi9nZW9jb2RlLWdsaWJfMy4yNi4yLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiQSBjb252ZW5pZW5jZSBsaWJyYXJ5IGZvciB0aGUgZ2VvY29kaW5nIgorCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT01NWNhODE3Y2NiN2Q1YjViNjYzNTU2OTBlOWFiYzYwNSIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKK0dJUl9NRVNPTl9PUFRJT04gPSAiZW5hYmxlLWludHJvc3BlY3Rpb24iCitHVEtET0NfTUVTT05fT1BUSU9OID0gImVuYWJsZS1ndGstZG9jIgorCitpbmhlcml0IGdub21lYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ2V0dGV4dCBndGstZG9jIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgorCitERVBFTkRTID0gIiBcCisgICAganNvbi1nbGliIFwKKyAgICBsaWJzb3VwLTIuNCBcCisiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImUxZWYxNDBhMTFhNTQzNjQzZDE3MGRjNzAxMDA5ZTM5IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMDFmZTg0Y2ZhMGJlNTBjNmU0MDExNDdhMmJjNWUyZjE1NzQzMjZlMjI5M2I1NWM2OTg3OWJlM2U4MjAzMGZkMSIKKworRVhUUkFfT0VNRVNPTiA9ICItRGVuYWJsZS1pbnN0YWxsZWQtdGVzdHM9ZmFsc2UiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2hleC9naGV4XzMuMTguNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9naGV4L2doZXhfMy4xOC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMzNlYmQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2hleC9naGV4XzMuMTguNC5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIkdIZXggLSBhIGhleCBlZGl0b3IgZm9yIEdOT01FIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgorCitERVBFTkRTID0gIiBcCisgICAgZ2xpYi0yLjAtbmF0aXZlIFwKKyAgICBndGsrMyBcCisiCisKK2luaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBndGstaWNvbi1jYWNoZSBnbm9tZS1oZWxwIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjdlNmVkODA4NzY2YmMxODI4NWJkYzY5OTliZGYwZjE1IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYzJkOWMxOTFmZjViY2U4MzY2MTg3Nzk4NjViZWU0MDU5ZGI4MWEzYTBkZmYzOGJkYTNjYzdhOWU3Mjk2MzdjMCIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbWV0YWluZm8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2pzL2dqc18xLjU4LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ2pzL2dqc18xLjU4LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViN2QzMjMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dqcy9nanNfMS41OC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotU1VNTUFSWSA9ICJKYXZhc2NyaXB0IGJpbmRpbmdzIGZvciBHTk9NRSIKLUxJQ0VOU0UgPSAiTUlUICYgTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiIFwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9YmViMjljZjE3ZmFiZTczNmYwNjM5YjA5ZWU2ZTc2ZmEgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEw7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKLSIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJhdXRvdG9vbHMiCi0KLURFUEVORFMgPSAibW96anMgZ3RrKzMiCi0KLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gdmFsYSBnZXR0ZXh0IGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIzODVmNGJhYTI2Njk5MWEwOGQzZTQyNWJjNjllZTk2MiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjI2MWEzZjY2NmM3NzFkNzc0NDk2NWZlNzFiODA0ZmMyYzNhM2Q0NmE4ZTNlOGQ0ZjdlZDVlZjk3OTY3ZWJkNWYiCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1EaXNhYmxlLXRlc3RzLW9uLWhvc3QucGF0Y2giCi0KLSMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGlzIG1hbmRhdG9yeSBhbmQgY2Fubm90IGJlIGNvbmZpZ3VyZWQKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YSIKLVVOS05PV05fQ09ORklHVVJFX1dISVRFTElTVF9hcHBlbmQgPSAiIC0tZW5hYmxlLWludHJvc3BlY3Rpb24gLS1kaXNhYmxlLWludHJvc3BlY3Rpb24iCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0td2l0aG91dC1kYnVzLXRlc3RzIFwKLSAgICAtLWRpc2FibGUtaW5zdGFsbGVkLXRlc3RzIFwKLSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyBtYWtlIGNvbmZpZ3VyZSBmaW5kIGdvYmplY3QtaW50cm9zcGVjdGlvbiB0ZXN0IGNvZGUuIEFsdGhvdWdoIHdlIHNldAotICAgICMgLS1kaXNhYmxlLWluc3RhbGxlZC10ZXN0cyBnanMgYnVpbGRzIHRoZW0KLSAgICBzZWQgLWkgJ3N8OiRHSV9EQVRBRElSfDoke1NUQUdJTkdfRElSX05BVElWRX0kR0lfREFUQURJUnxnJyAke1N9L2NvbmZpZ3VyZS5hYwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9nanMtMS4wL2xzYW4iCi0KLVBBQ0tBR0VTID0rICIke1BOfS12YWxncmluZCIKLUZJTEVTXyR7UE59LXZhbGdyaW5kID0gIiR7ZGF0YWRpcn0vZ2pzLTEuMC92YWxncmluZCIKLVJTRVBFTkRTXyR7UE59LXZhbGdyaW5kICs9ICJ2YWxncmluZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nanMvZ2pzXzEuNTguNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nanMvZ2pzXzEuNTguNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmU5MzU1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dqcy9nanNfMS41OC42LmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAiSmF2YXNjcmlwdCBiaW5kaW5ncyBmb3IgR05PTUUiCitMSUNFTlNFID0gIk1JVCAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gIiBcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWJlYjI5Y2YxN2ZhYmU3MzZmMDYzOWIwOWVlNmU3NmZhIFwKKyAgICBmaWxlOi8vQ09QWUlORy5MR1BMO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAiYXV0b3Rvb2xzIgorCitERVBFTkRTID0gIm1vempzIGd0ayszIgorCitpbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHZhbGEgZ2V0dGV4dCBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiN2Y2NzFiM2ZjM2IxNDlhZGNlMjYzNDk1NTQwZTdmNTAiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIxODY0YmYyMmY0ZjVlNDEwNzgzMmI0YzU0MTI3Y2NlODUwOWQzN2NjYzE0YWJkMjVhNjg3OGM3ZmZlZDk2NjQwIgorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRGlzYWJsZS10ZXN0cy1vbi1ob3N0LnBhdGNoIgorCisjIGdvYmplY3QtaW50cm9zcGVjdGlvbiBpcyBtYW5kYXRvcnkgYW5kIGNhbm5vdCBiZSBjb25maWd1cmVkCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEiCitVTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1RfYXBwZW5kID0gIiAtLWVuYWJsZS1pbnRyb3NwZWN0aW9uIC0tZGlzYWJsZS1pbnRyb3NwZWN0aW9uIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXdpdGhvdXQtZGJ1cy10ZXN0cyBcCisgICAgLS1kaXNhYmxlLWluc3RhbGxlZC10ZXN0cyBcCisiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgbWFrZSBjb25maWd1cmUgZmluZCBnb2JqZWN0LWludHJvc3BlY3Rpb24gdGVzdCBjb2RlLiBBbHRob3VnaCB3ZSBzZXQKKyAgICAjIC0tZGlzYWJsZS1pbnN0YWxsZWQtdGVzdHMgZ2pzIGJ1aWxkcyB0aGVtCisgICAgc2VkIC1pICdzfDokR0lfREFUQURJUnw6JHtTVEFHSU5HX0RJUl9OQVRJVkV9JEdJX0RBVEFESVJ8ZycgJHtTfS9jb25maWd1cmUuYWMKK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZ2pzLTEuMC9sc2FuIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdmFsZ3JpbmQiCitGSUxFU18ke1BOfS12YWxncmluZCA9ICIke2RhdGFkaXJ9L2dqcy0xLjAvdmFsZ3JpbmQiCitSU0VQRU5EU18ke1BOfS12YWxncmluZCArPSAidmFsZ3JpbmQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtYmx1ZXRvb3RoL2dub21lLWJsdWV0b290aF8zLjM0LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtYmx1ZXRvb3RoL2dub21lLWJsdWV0b290aF8zLjM0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlNjU4N2IuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWJsdWV0b290aC9nbm9tZS1ibHVldG9vdGhfMy4zNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJHTk9NRSBibHVldG9vdGggbWFuYWdlciIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCi0iCi0KLVNFQ1RJT04gPSAieDExL2dub21lIgotCi1ERVBFTkRTID0gInVkZXYgZ3RrKzMgbGlibm90aWZ5IGxpYmNhbmJlcnJhIGJsdWV6NSIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKLUdUS0RPQ19NRVNPTl9PUFRJT04gPSAiZ3RrX2RvYyIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWljb24tY2FjaGUgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24gdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLSMgZ3RrLWljb24tY2FjaGUgYmJjbGFzcyB3aWxsIHRha2UgY2FyZSBvZiB0aGlzIGZvciB1cy4KLUVYVFJBX09FTUVTT04gPSAiLURpY29uX3VwZGF0ZT1mYWxzZSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMGM1NjdlMTI0YTUyZThkZGMzMWM4YmVkMGMzZTU3YTEiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlODY3ZTY3NDIzZTFkYzc4YzU2YzJlYTExZGVjMDY2Y2UwMjU0MjM4ZDU1OWU0Nzc3YzgwZmEyOTM1ZWI2YmFmIgotCi1SREVQRU5EU18ke1BOfSArPSAiYmx1ZXo1IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWJsdWV0b290aC9nbm9tZS1ibHVldG9vdGhfMy4zNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWJsdWV0b290aC9nbm9tZS1ibHVldG9vdGhfMy4zNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3Yzg5ZDkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtYmx1ZXRvb3RoL2dub21lLWJsdWV0b290aF8zLjM0LjEuYmIKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJHTk9NRSBibHVldG9vdGggbWFuYWdlciIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyBcCisiCisKK1NFQ1RJT04gPSAieDExL2dub21lIgorCitERVBFTkRTID0gInVkZXYgZ3RrKzMgbGlibm90aWZ5IGxpYmNhbmJlcnJhIGJsdWV6NSIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKK0dUS0RPQ19NRVNPTl9PUFRJT04gPSAiZ3RrX2RvYyIKKworaW5oZXJpdCBmZWF0dXJlc19jaGVjayBnbm9tZWJhc2UgZ3RrLWljb24tY2FjaGUgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24gdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKKyMgZ3RrLWljb24tY2FjaGUgYmJjbGFzcyB3aWxsIHRha2UgY2FyZSBvZiB0aGlzIGZvciB1cy4KK0VYVFJBX09FTUVTT04gPSAiLURpY29uX3VwZGF0ZT1mYWxzZSIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMDliNmJhYjdjZWFhZmIzNWRhNzY2YTU0NzZmYmM0NjYiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIzZWM5MTA3NmMyODIyY2QxZjlhYmRjOGUyNzY2M2MzYmRhNGM5YzhhN2E5NzczZjllOTJiZmJmMmI3NDVkMzg2IgorCitSREVQRU5EU18ke1BOfSArPSAiYmx1ZXo1IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWNvbnRyb2wtY2VudGVyL2dub21lLWNvbnRyb2wtY2VudGVyXzMuMzQuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1jb250cm9sLWNlbnRlci9nbm9tZS1jb250cm9sLWNlbnRlcl8zLjM0LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDllNmU5MmEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWNvbnRyb2wtY2VudGVyL2dub21lLWNvbnRyb2wtY2VudGVyXzMuMzQuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLVNVTU1BUlkgPSAiR05PTUUgU2V0dGluZ3MiCi1ERVNDUklQVElPTiA9ICJHTk9NRSBTZXR0aW5ncyBpcyBHTk9NRSdzIG1haW4gaW50ZXJmYWNlIGZvciBjb25maWd1cmF0aW9uIG9mIHZhcmlvdXMgYXNwZWN0cyBvZiB5b3VyIGRlc2t0b3AiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzU4NTk5ODk1NDVlMzc5NjhhOTliNjMxZWY0MjcyMmUiCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi0KLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnZXR0ZXh0IHZhbGEgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGJhc2gtY29tcGxldGlvbiBmZWF0dXJlc19jaGVjawotCi1ERVBFTkRTID0gIiBcCi0gICAgZ2RrLXBpeGJ1Zi1uYXRpdmUgXAotICAgIGNvbG9yZC1ndGsgXAotICAgIHVkaXNrczIgXAotICAgIHVwb3dlciBcCi0gICAgcG9sa2l0IFwKLSAgICBwdWxzZWF1ZGlvIFwKLSAgICBhY2NvdW50c3NlcnZpY2UgXAotICAgIHNhbWJhIFwKLSAgICBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIFwKLSAgICBnbm9tZS1zZXR0aW5ncy1kYWVtb24gXAotICAgIGdub21lLWRlc2t0b3AzIFwKLSAgICBnbm9tZS1vbmxpbmUtYWNjb3VudHMgXAotICAgIG5ldHdvcmstbWFuYWdlci1hcHBsZXQgXAotICAgIGdub21lLWJsdWV0b290aCBcCi0gICAgZ3JpbG8gXAotICAgIGxpYmd0b3AgXAotICAgIGdzb3VuZCBcCi0gICAgbGlicHdxdWFsaXR5IFwKLSIKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTICs9ICJwb2xraXQgcHVsc2VhdWRpbyBzeXN0ZW1kIHgxMSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYTk2MGE3ZDNlOWYxYzRmMzQxYmFlNDJkYTdmYmYyM2EiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJhODVmZmFmNTg4NWE4YzcwYzAxOTAxM2Q3Mzc5MmJmNGNjNzVmNjQzZTk3ZjZlOGI1MmY3ZmJiYTlmN2E5MTE0IgotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtQWRkLW1lc29uLW9wdGlvbi10by1wYXNzLXN5c3Jvb3QucGF0Y2giCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJpYnVzICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2lidXNdID0gIi1EaWJ1cz10cnVlLCAtRGlidXM9ZmFsc2UsIGlidXMiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1Ed2F5bGFuZD10cnVlLCAtRHdheWxhbmQ9ZmFsc2UsIHdheWxhbmQiCi0KLSMgT25jZSB3ZSBoYXZlIChsaWIpY2hlZXNlIHdlIGNhbiBtYWtlIGNoZWVzZSBhIFBBQ0tBR0VDT05GSUcKLUVYVFJBX09FTUVTT04gPSAiIFwKLSAgICAtRG9lX3N5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSBcCi0gICAgLURjaGVlc2U9ZmFsc2UgXAotIgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMSBcCi0gICAgJHtkYXRhZGlyfS9nbm9tZS1zaGVsbCBcCi0gICAgJHtkYXRhZGlyfS9tZXRhaW5mbyBcCi0iCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9nZXR0ZXh0IgotCi1SREVQRU5EU18ke1BOfSArPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1jb250cm9sLWNlbnRlci9nbm9tZS1jb250cm9sLWNlbnRlcl8zLjM0LjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtY29udHJvbC1jZW50ZXIvZ25vbWUtY29udHJvbC1jZW50ZXJfMy4zNC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmOGVjMzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtY29udHJvbC1jZW50ZXIvZ25vbWUtY29udHJvbC1jZW50ZXJfMy4zNC41LmJiCkBAIC0wLDAgKzEsNTUgQEAKK1NVTU1BUlkgPSAiR05PTUUgU2V0dGluZ3MiCitERVNDUklQVElPTiA9ICJHTk9NRSBTZXR0aW5ncyBpcyBHTk9NRSdzIG1haW4gaW50ZXJmYWNlIGZvciBjb25maWd1cmF0aW9uIG9mIHZhcmlvdXMgYXNwZWN0cyBvZiB5b3VyIGRlc2t0b3AiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzU4NTk5ODk1NDVlMzc5NjhhOTliNjMxZWY0MjcyMmUiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCisKK2luaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnZXR0ZXh0IHZhbGEgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGJhc2gtY29tcGxldGlvbiBmZWF0dXJlc19jaGVjaworCitERVBFTkRTID0gIiBcCisgICAgZ2RrLXBpeGJ1Zi1uYXRpdmUgXAorICAgIGNvbG9yZC1ndGsgXAorICAgIHVkaXNrczIgXAorICAgIHVwb3dlciBcCisgICAgcG9sa2l0IFwKKyAgICBwdWxzZWF1ZGlvIFwKKyAgICBhY2NvdW50c3NlcnZpY2UgXAorICAgIHNhbWJhIFwKKyAgICBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIFwKKyAgICBnbm9tZS1zZXR0aW5ncy1kYWVtb24gXAorICAgIGdub21lLWRlc2t0b3AzIFwKKyAgICBnbm9tZS1vbmxpbmUtYWNjb3VudHMgXAorICAgIGxpYm5tYSBcCisgICAgZ25vbWUtYmx1ZXRvb3RoIFwKKyAgICBncmlsbyBcCisgICAgbGliZ3RvcCBcCisgICAgZ3NvdW5kIFwKKyAgICBsaWJwd3F1YWxpdHkgXAorIgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgKz0gInBvbGtpdCBwdWxzZWF1ZGlvIHN5c3RlbWQgeDExIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJjYTkyMTUxYTJhNThjYzNlMGE3M2U4ODM3OWU5NmNlMiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImIzMGQwYWZiOTkyNTJmMTUwZTM3ZDVjYTRiYzgzYjg5YmY0YWE2ZDE4YzVkMzY3MjMwMDUzMjc4NjM0ZTBjNDciCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1BZGQtbWVzb24tb3B0aW9uLXRvLXBhc3Mtc3lzcm9vdC5wYXRjaCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImlidXMgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsIGQpfSIKK1BBQ0tBR0VDT05GSUdbaWJ1c10gPSAiLURpYnVzPXRydWUsIC1EaWJ1cz1mYWxzZSwgaWJ1cyIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLUR3YXlsYW5kPXRydWUsIC1Ed2F5bGFuZD1mYWxzZSwgd2F5bGFuZCIKKworIyBPbmNlIHdlIGhhdmUgKGxpYiljaGVlc2Ugd2UgY2FuIG1ha2UgY2hlZXNlIGEgUEFDS0FHRUNPTkZJRworRVhUUkFfT0VNRVNPTiA9ICIgXAorICAgIC1Eb2Vfc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9IFwKKyAgICAtRGNoZWVzZT1mYWxzZSBcCisiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKKyAgICAke2RhdGFkaXJ9L2dub21lLXNoZWxsIFwKKyAgICAke2RhdGFkaXJ9L21ldGFpbmZvIFwKKyIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2dldHRleHQiCisKK1JERVBFTkRTXyR7UE59ICs9ICJnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4zNC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4zNC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGQxMWFhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMzQuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLVNVTU1BUlkgPSAiR05PTUUgbGlicmFyeSBmb3IgcmVhZGluZyAuZGVza3RvcCBmaWxlcyIKLVNFQ1RJT04gPSAieDExL2dub21lIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKLQotQlBOID0gImdub21lLWRlc2t0b3AiCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi0KLWluaGVyaXQgZ25vbWViYXNlIGl0c3Rvb2wgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZmVhdHVyZXNfY2hlY2sKLQotIyBnb2JqZWN0LWludHJvc3BlY3Rpb24gaXMgbWFuZGF0b3J5IGFuZCBjYW5ub3QgYmUgY29uZmlndXJlZAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gImdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIgotVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUX2FwcGVuZCA9ICIgaW50cm9zcGVjdGlvbiIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiY2RjZDMwMDZmNTVkOGM4ODEzMzE1YmVmNmY0ZjZiNzEiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJhY2MyZWZjODQ3NTc0ZmQyMWQ4ZjIwMDY3OWYxMTFjMmIxZWI1YWUyYzA0MWUwMDM0ZTdjMTg0NTBhN2Q5YzZkIgotCi1TUkNfVVJJICs9ICIgXAotICAgIGZpbGU6Ly9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1hc3N1bWUtdGltZV90LWlzLWxvbmcucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLW1lc29uLmJ1aWxkLURpc2FibGUtbGlic2VjY29tcC1mb3ItYWxsLWFyY2hzLnBhdGNoIFwKLSIKLQotREVQRU5EUyArPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyB2aXJ0dWFsL2xpYngxMSBndGsrMyBzdGFydHVwLW5vdGlmaWNhdGlvbiB4a2V5Ym9hcmQtY29uZmlnIGlzby1jb2RlcyB1ZGV2IgotCi1pbmhlcml0IGZlYXR1cmVzX2NoZWNrIGd0ay1kb2MKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyArPSAieDExIgotCi1HVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCi1FWFRSQV9PRU1FU09OID0gIi1EZGVza3RvcF9kb2NzPWZhbHNlIgotCi1QQUNLQUdFUyA9KyAibGliZ25vbWUtZGVza3RvcDMiCi1GSUxFU19saWJnbm9tZS1kZXNrdG9wMyA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSAke2RhdGFkaXJ9L2xpYmdub21lLWRlc2t0b3AqL3BucC5pZHMgJHtkYXRhZGlyfS9nbm9tZS8qeG1sIgotCi1SUkVDT01NRU5EU19saWJnbm9tZS1kZXNrdG9wMyArPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMzQuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1kZXNrdG9wL2dub21lLWRlc2t0b3AzXzMuMzQuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42M2E5NmM4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWRlc2t0b3AvZ25vbWUtZGVza3RvcDNfMy4zNC41LmJiCkBAIC0wLDAgKzEsMzYgQEAKK1NVTU1BUlkgPSAiR05PTUUgbGlicmFyeSBmb3IgcmVhZGluZyAuZGVza3RvcCBmaWxlcyIKK1NFQ1RJT04gPSAieDExL2dub21lIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKKworQlBOID0gImdub21lLWRlc2t0b3AiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCisKK2luaGVyaXQgZ25vbWViYXNlIGl0c3Rvb2wgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZmVhdHVyZXNfY2hlY2sKKworIyBnb2JqZWN0LWludHJvc3BlY3Rpb24gaXMgbWFuZGF0b3J5IGFuZCBjYW5ub3QgYmUgY29uZmlndXJlZAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gImdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIgorVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUX2FwcGVuZCA9ICIgaW50cm9zcGVjdGlvbiIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMWNiY2I5ZDlhNTE1OTQ0N2I5YTQ1MDc5YzYxNTdjYTUiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlZjEzMjAzYmVkNzIxZDI3MTIyN2Q5OTI4ZDkxOTM3NzMzYzMxMmVmNzliNmY1YzAwYjZjMDJlOGUwYjJmYTIxIgorCitTUkNfVVJJICs9ICIgXAorICAgIGZpbGU6Ly9nbm9tZS1kZXNrdG9wLXRodW1ibmFpbC1kb24tdC1hc3N1bWUtdGltZV90LWlzLWxvbmcucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLW1lc29uLmJ1aWxkLURpc2FibGUtbGlic2VjY29tcC1mb3ItYWxsLWFyY2hzLnBhdGNoIFwKKyIKKworREVQRU5EUyArPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyB2aXJ0dWFsL2xpYngxMSBndGsrMyBzdGFydHVwLW5vdGlmaWNhdGlvbiB4a2V5Ym9hcmQtY29uZmlnIGlzby1jb2RlcyB1ZGV2IgorCitpbmhlcml0IGZlYXR1cmVzX2NoZWNrIGd0ay1kb2MKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyArPSAieDExIgorCitHVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCitFWFRSQV9PRU1FU09OID0gIi1EZGVza3RvcF9kb2NzPWZhbHNlIgorCitQQUNLQUdFUyA9KyAibGliZ25vbWUtZGVza3RvcDMiCitGSUxFU19saWJnbm9tZS1kZXNrdG9wMyA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSAke2RhdGFkaXJ9L2xpYmdub21lLWRlc2t0b3AqL3BucC5pZHMgJHtkYXRhZGlyfS9nbm9tZS8qeG1sIgorCitSUkVDT01NRU5EU19saWJnbm9tZS1kZXNrdG9wMyArPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1mb250LXZpZXdlci9nbm9tZS1mb250LXZpZXdlcl8zLjM0LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtZm9udC12aWV3ZXIvZ25vbWUtZm9udC12aWV3ZXJfMy4zNC4wLmJiCmluZGV4IGQ4ZjdlMzAuLmNmMjAyMjUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1mb250LXZpZXdlci9nbm9tZS1mb250LXZpZXdlcl8zLjM0LjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLWZvbnQtdmlld2VyL2dub21lLWZvbnQtdmlld2VyXzMuMzQuMC5iYgpAQCAtMTEsNyArMTEsNyBAQAogCiBHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgogCi1pbmhlcml0IGdub21lYmFzZSBndGstaWNvbi1jYWNoZSBnZXR0ZXh0IGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgoraW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWljb24tY2FjaGUgZ2V0dGV4dCBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gbWltZS14ZGcKIAogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLW1lbnVzL2dub21lLW1lbnVzM18zLjMyLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtbWVudXMvZ25vbWUtbWVudXMzXzMuMzIuMC5iYgppbmRleCAzZjQ0MWQ5Li4yNGQ2NDUxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtbWVudXMvZ25vbWUtbWVudXMzXzMuMzIuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ25vbWUtbWVudXMvZ25vbWUtbWVudXMzXzMuMzIuMC5iYgpAQCAtNCw3ICs0LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKIAotREVQRU5EUyA9ICJweXRob24gbGlieG1sMiBwb3B0IGd0ayszIGdub21lLWNvbW1vbi1uYXRpdmUiCitERVBFTkRTID0gInB5dGhvbjMgbGlieG1sMiBwb3B0IGd0ayszIGdub21lLWNvbW1vbi1uYXRpdmUiCiAKIGluaGVyaXQgZmVhdHVyZXNfY2hlY2sgZ25vbWViYXNlIGdldHRleHQgcGtnY29uZmlnIGdvYmplY3QtaW50cm9zcGVjdGlvbiB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXNoZWxsL2dub21lLXNoZWxsXzMuMzQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zaGVsbC9nbm9tZS1zaGVsbF8zLjM0LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2M2ZiZjQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXNoZWxsL2dub21lLXNoZWxsXzMuMzQuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLVNVTU1BUlkgPSAiR05PTUUgU2hlbGwgaXMgdGhlIGdyYXBoaWNhbCBzaGVsbCBvZiB0aGUgR05PTUUgZGVza3RvcCBlbnZpcm9ubWVudCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGdldHRleHQgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBiYXNoLWNvbXBsZXRpb24KLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSBwb2xraXQgc3lzdGVtZCBwYW0iCi0KLURFUEVORFMgPSAiIFwKLSAgICBsaWJ4bWwyLW5hdGl2ZSBcCi0gICAgc2Fzc2MtbmF0aXZlIFwKLSAgICBndGsrMyBcCi0gICAgbXV0dGVyIFwKLSAgICBldm9sdXRpb24tZGF0YS1zZXJ2ZXIgXAotICAgIGdjciBcCi0gICAgZ2pzIFwKLSAgICBnbm9tZS1hdXRvYXIgXAotICAgIHBvbGtpdCBcCi0gICAgbGliY3JvY28gXAotICAgIHN0YXJ0dXAtbm90aWZpY2F0aW9uIFwKLSAgICBpYnVzIFwKLSAgICBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIFwKLSIKLQotR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgotCi0jIGdvYmplY3QtaW50cm9zcGVjdGlvbiBpcyBtYW5kYXRvcnkgYW5kIGNhbm5vdCBiZSBjb25maWd1cmVkCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgKz0gImdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIgotVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUX2FwcGVuZCA9ICIgaW50cm9zcGVjdGlvbiIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYTBmN2Q3OGY1NzYxNjA3Njg5MGYwZTNiN2YxMjE5NmEiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIyNDc0YmVmMzg2YzVhNDdkN2JlMjg1YWEyMmUyNDEyNWM0NmJhNWY4NjBhMjVhMWEzNmE5MGRlNGU0NTZiZDhhIgotCi1QQUNLQUdFQ09ORklHID8/PSAiYmx1ZXRvb3RoIG5tICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2JsdWV0b290aF0gPSAiLCxnbm9tZS1ibHVldG9vdGgiCi1QQUNLQUdFQ09ORklHW25tXSA9ICItRG5ldHdvcmttYW5hZ2VyPXRydWUsIC1EbmV0d29ya21hbmFnZXI9ZmFsc2UsIG5ldHdvcmttYW5hZ2VyIgotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItRHN5c3RlbWQ9dHJ1ZSwgLURzeXN0ZW1kPWZhbHNlLCBzeXN0ZW1kIgotCi1FWFRSQV9PRU1FU09OID0gIiBcCi0gICAgLURtYW49ZmFsc2UgXAotIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIGZpeCBzaGViYW5ncwotICAgIGZvciB0b29sIGluIGBmaW5kICR7RH0ke2JpbmRpcn0gLW5hbWUgJyotdG9vbCdgOyBkbwotICAgICAgICBzZWQgLWkgJ3M6IyEke1BZVEhPTn06IyEke2JpbmRpcn0vJHtQWVRIT05fUE59OicgJHRvb2wKLSAgICBkb25lCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSAgICAke2RhdGFkaXJ9L2dub21lLWNvbnRyb2wtY2VudGVyIFwKLSAgICAke2RhdGFkaXJ9L3hkZy1kZXNrdG9wLXBvcnRhbCBcCi0gICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAotIgotCi1SREVQRU5EU18ke1BOfSArPSAiZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyBnZG0tYmFzZSBsaWJyc3ZnLWd0ayIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzIgotRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9LyotdG9vbCIKLVJERVBFTkRTXyR7UE59LXRvb2xzID0gInB5dGhvbjMtY29yZSIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2dub21lLXNoZWxsL2dub21lLXNoZWxsXzMuMzQuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zaGVsbC9nbm9tZS1zaGVsbF8zLjM0LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTYxOTYyOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nbm9tZS1zaGVsbC9nbm9tZS1zaGVsbF8zLjM0LjUuYmIKQEAgLTAsMCArMSw2NCBAQAorU1VNTUFSWSA9ICJHTk9NRSBTaGVsbCBpcyB0aGUgZ3JhcGhpY2FsIHNoZWxsIG9mIHRoZSBHTk9NRSBkZXNrdG9wIGVudmlyb25tZW50IgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgorCitpbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgZ2V0dGV4dCBnb2JqZWN0LWludHJvc3BlY3Rpb24gZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGJhc2gtY29tcGxldGlvbgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIHBvbGtpdCBzeXN0ZW1kIHBhbSIKKworREVQRU5EUyA9ICIgXAorICAgIGxpYnhtbDItbmF0aXZlIFwKKyAgICBzYXNzYy1uYXRpdmUgXAorICAgIGd0ayszIFwKKyAgICBtdXR0ZXIgXAorICAgIGV2b2x1dGlvbi1kYXRhLXNlcnZlciBcCisgICAgZ2NyIFwKKyAgICBnanMgXAorICAgIGdub21lLWF1dG9hciBcCisgICAgcG9sa2l0IFwKKyAgICBsaWJjcm9jbyBcCisgICAgc3RhcnR1cC1ub3RpZmljYXRpb24gXAorICAgIGlidXMgXAorICAgIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgXAorIgorCitHVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCisKKyMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGlzIG1hbmRhdG9yeSBhbmQgY2Fubm90IGJlIGNvbmZpZ3VyZWQKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyArPSAiZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEiCitVTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1RfYXBwZW5kID0gIiBpbnRyb3NwZWN0aW9uIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI0YmQyN2M4YTkxZDMwZmRlNzhjYjY5Yjk0Njc3Y2YxZiIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQyOTZmMzE4YTc0YTZkNzg4MzM1OGE2Y2UxYzRkODgwOGI3OTAzZGJiYjRmOWM2MWFiNDIzMGYxOGU2ZDc1NTAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJibHVldG9vdGggbm0gJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKK1BBQ0tBR0VDT05GSUdbYmx1ZXRvb3RoXSA9ICIsLGdub21lLWJsdWV0b290aCIKK1BBQ0tBR0VDT05GSUdbbm1dID0gIi1EbmV0d29ya21hbmFnZXI9dHJ1ZSwgLURuZXR3b3JrbWFuYWdlcj1mYWxzZSwgbmV0d29ya21hbmFnZXIiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi1Ec3lzdGVtZD10cnVlLCAtRHN5c3RlbWQ9ZmFsc2UsIHN5c3RlbWQiCisKK0VYVFJBX09FTUVTT04gPSAiIFwKKyAgICAtRG1hbj1mYWxzZSBcCisiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgZml4IHNoZWJhbmdzCisgICAgZm9yIHRvb2wgaW4gYGZpbmQgJHtEfSR7YmluZGlyfSAtbmFtZSAnKi10b29sJ2A7IGRvCisgICAgICAgIHNlZCAtaSAnczojISR7UFlUSE9OfTojISR7YmluZGlyfS8ke1BZVEhPTl9QTn06JyAkdG9vbAorICAgIGRvbmUKK30KKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7ZGF0YWRpcn0vZ25vbWUtY29udHJvbC1jZW50ZXIgXAorICAgICR7ZGF0YWRpcn0veGRnLWRlc2t0b3AtcG9ydGFsIFwKKyAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCisiCisKK1JERVBFTkRTXyR7UE59ICs9ICJnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGdkbS1iYXNlIGxpYnJzdmctZ3RrIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMiCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKi10b29sIgorUkRFUEVORFNfJHtQTn0tdG9vbHMgPSAicHl0aG9uMy1jb3JlIgorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3NwZWxsL2dzcGVsbF8xLjguMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nc3BlbGwvZ3NwZWxsXzEuOC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjhhODlmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nc3BlbGwvZ3NwZWxsXzEuOC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotU1VNTUFSWSA9ICJnc3BlbGwgYWRkcyBzcGVsbC1jaGVja2luZyB0byBhIEdUSysgYXBwbGljYXRpb25zIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9nc3BlbGwiCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGMyZTFlYzE1NDBmYjNlMGJlYjY4MzYxMzQ0Y2JhN2UiCi0KLURFUEVORFMgPSAiZ3RrKzMgaXNvLWNvZGVzIGVuY2hhbnQyIgotCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI0Zjg1NzM4MmJjOWQ4ZDRhZmUxZTY3ZTViNWI5ZGJmZiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImJiOTE5NWMzYTk1YmFjZjU1NmQwMjAzZTk2OTFmNzQ4OWUwZDNiYzVhZTFlNWE0NDBjODliMmYyNDM1ZDNlZDYiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3NwZWxsL2dzcGVsbF8xLjguMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9nc3BlbGwvZ3NwZWxsXzEuOC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0Y2RlZmMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvZ3NwZWxsL2dzcGVsbF8xLjguMy5iYgpAQCAtMCwwICsxLDExIEBACitTVU1NQVJZID0gImdzcGVsbCBhZGRzIHNwZWxsLWNoZWNraW5nIHRvIGEgR1RLKyBhcHBsaWNhdGlvbnMiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL2dzcGVsbCIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04YzJlMWVjMTU0MGZiM2UwYmViNjgzNjEzNDRjYmE3ZSIKKworREVQRU5EUyA9ICJndGsrMyBpc28tY29kZXMgZW5jaGFudDIiCisKK2luaGVyaXQgZ25vbWViYXNlIGdldHRleHQgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImQwODkyMDAwZDk0NGU4N2ZkNzRlODYxMWVmNDAwY2RiIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNWFlNTE0ZGQwMjE2YmUwNjkxNzZhY2NmNmQwMDQ5ZDZhMDFjZmE2YTUwZGY0YmMwNmJlODVmNzA4MGI2MmRlOCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJjaGFtcGxhaW4vbGliY2hhbXBsYWluXzAuMTIuMjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliY2hhbXBsYWluL2xpYmNoYW1wbGFpbl8wLjEyLjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwZTU1MzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliY2hhbXBsYWluL2xpYmNoYW1wbGFpbl8wLjEyLjIwLmJiCkBAIC0wLDAgKzEsMTIgQEAKK1NVTU1BUlkgPSAibGliY2hhbXBsYWluIGlzIGEgR3RrIHdpZGdldCBkaXNwbGF5aW5nIHpvb21hYmxlIGFuZCBwYW5uYWJsZSBtYXBzIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgorREVQRU5EUyA9ICJnbGliLTIuMCBndGsrMyBnZGstcGl4YnVmIGNsdXR0ZXItMS4wIGNsdXR0ZXItZ3RrLTEuMCBsaWJzb3VwLTIuNCIKKworaW5oZXJpdCBtZXNvbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworU1JDUkVWID0gIjE0NWU0MTdmMzJlNTA3YjYzYzIxYWQ0ZTkxNWI4MDhhNjE3NDA5OWUiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZ25vbWUvbGliY2hhbXBsYWluLmdpdCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdkYXRhL2xpYmdkYXRhXzAuMTcuMTEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ2RhdGEvbGliZ2RhdGFfMC4xNy4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk3YTA1ZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ2RhdGEvbGliZ2RhdGFfMC4xNy4xMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiR0xpYi1iYXNlZCBsaWJyYXJ5IGZvciBhY2Nlc3Npbmcgb25saW5lIHNlcnZpY2UgQVBJcyB1c2luZyB0aGUgR0RhdGEgcHJvdG9jb2wiCi1IT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvbGliZ2RhdGEiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiYzA5MzkwMTg1N2ZjZDExOGYwNjVmOTAwOTgyYzI0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkYXRhL2dkYXRhLmg7ZW5kbGluZT0yMDttZDU9MDc5YTU1NGVmY2Y2NWQ0NmY5NmE1MTU4MDZlN2U5OWEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RhdGEvZ2RhdGEtdHlwZXMuaDtlbmRsaW5lPTIwO21kNT03Mzk5YjExMWFhYzg3MThkYTEzODg4ZmM2MzRiZTZlZiIKLQotREVQRU5EUyA9ICJsaWJ4bWwyIGdsaWItMi4wIGxpYnNvdXAtMi40IGludGx0b29sLW5hdGl2ZSBsaWJvYXV0aCBnY3IganNvbi1nbGliIgotCi1HVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotCi1pbmhlcml0IGdub21lYmFzZSBwa2djb25maWcgZ2V0dGV4dCBndGstZG9jIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIG1hbnBhZ2VzIGZlYXR1cmVzX2NoZWNrCi0KLSMgZ2NyCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9IiR7Qn0vZ2RhdGEvLmxpYnMiCi19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItRG1hbj10cnVlLC1EbWFuPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tnb2FdID0gIi1EZ29hPWVuYWJsZWQsLURnb2E9ZGlzYWJsZWQsZ25vbWUtb25saW5lLWFjY291bnRzIgotUEFDS0FHRUNPTkZJR1tndGtdID0gIi1EZ3RrPWVuYWJsZWQsLURndGs9ZGlzYWJsZWQsZ3RrKzMiCi1QQUNLQUdFQ09ORklHW3ZhbGFdID0gIi1EdmFwaT10cnVlLC1EdmFwaT1mYWxzZSIKLQotRVhUUkFfT0VNRVNPTiA9ICItRGFsd2F5c19idWlsZF90ZXN0cz1mYWxzZSIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiN2I5OGU5MDU5MjU1ZDhhMmZiMTQ3YzRlNzI3MjMwYTgiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI2Yjk5MTcxMjJlNGRlZjZlNmY3OGJjYjY2MGU0OWUxNDY1NDA4MzJlMjk2YWJjYjVjZGU5OTgyOWEwNGVhOTg2IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdkYXRhL2xpYmdkYXRhXzAuMTcuMTIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ2RhdGEvbGliZ2RhdGFfMC4xNy4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWJjMjAyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdkYXRhL2xpYmdkYXRhXzAuMTcuMTIuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJHTGliLWJhc2VkIGxpYnJhcnkgZm9yIGFjY2Vzc2luZyBvbmxpbmUgc2VydmljZSBBUElzIHVzaW5nIHRoZSBHRGF0YSBwcm90b2NvbCIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9saWJnZGF0YSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmJjMDkzOTAxODU3ZmNkMTE4ZjA2NWY5MDA5ODJjMjQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2RhdGEvZ2RhdGEuaDtlbmRsaW5lPTIwO21kNT0wNzlhNTU0ZWZjZjY1ZDQ2Zjk2YTUxNTgwNmU3ZTk5YSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGF0YS9nZGF0YS10eXBlcy5oO2VuZGxpbmU9MjA7bWQ1PTczOTliMTExYWFjODcxOGRhMTM4ODhmYzYzNGJlNmVmIgorCitERVBFTkRTID0gImxpYnhtbDIgZ2xpYi0yLjAgbGlic291cC0yLjQgaW50bHRvb2wtbmF0aXZlIGxpYm9hdXRoIGdjciBqc29uLWdsaWIiCisKK0dUS0RPQ19NRVNPTl9PUFRJT04gPSAiZ3RrX2RvYyIKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCisKK2luaGVyaXQgZ25vbWViYXNlIHBrZ2NvbmZpZyBnZXR0ZXh0IGd0ay1kb2MgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24gbWFucGFnZXMgZmVhdHVyZXNfY2hlY2sKKworIyBnY3IKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9nZGF0YS8ubGlicyIKK30KKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi1EbWFuPXRydWUsLURtYW49ZmFsc2UiCitQQUNLQUdFQ09ORklHW2dvYV0gPSAiLURnb2E9ZW5hYmxlZCwtRGdvYT1kaXNhYmxlZCxnbm9tZS1vbmxpbmUtYWNjb3VudHMiCitQQUNLQUdFQ09ORklHW2d0a10gPSAiLURndGs9ZW5hYmxlZCwtRGd0az1kaXNhYmxlZCxndGsrMyIKK1BBQ0tBR0VDT05GSUdbdmFsYV0gPSAiLUR2YXBpPXRydWUsLUR2YXBpPWZhbHNlIgorCitFWFRSQV9PRU1FU09OID0gIi1EYWx3YXlzX2J1aWxkX3Rlc3RzPWZhbHNlIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI5ZDU2OTJhMjMwOGJiOTQ5YWY4MDFiZTY2OTg5ZTE2NCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImEwZmQ2Zjg4MjBlOGJhZTAxOWMxZjZmZmFiNWFmN2ZjZDZkN2YxNDc5MTViYjk2OGI1NmRmM2FkNjFiNDIzMTgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ3NmL2xpYmdzZl8xLjE0LjQ2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdzZi9saWJnc2ZfMS4xNC40Ni5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDQ5MzIwYS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbGliZ3NmL2xpYmdzZl8xLjE0LjQ2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJHTk9NRSBTdHJ1Y3R1cmVkIEZpbGUgTGlicmFyeSIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRjNzM3MWI1MDgxNmM5NmUxNDVmYTBmOGFkZThlMjRkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02MTQ2NGNmZTM0Mjc5OGVlY2VkODJlZmU5YWU1NWY2MyIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTPSAibGlieG1sMiBiemlwMiBnbGliLTIuMCB6bGliIGdub21lLWNvbW1vbi1uYXRpdmUiCi0KLWluaGVyaXQgZ25vbWViYXNlIGdvYmplY3QtaW50cm9zcGVjdGlvbiBnZXR0ZXh0IGd0ay1kb2MKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNWJjNmQxZDYzOTRmMGVkNWE1OGU4ZjJlNWU0ZWFkN2YiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJlYTM2OTU5YjE0MjFmYzhlNzJjYWEyMjJmMzBlYzMyMzRkMGVkOTU5OTBlMmJmMjg5NDNhODVmMzNlYWRhZDJkIgotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWRyb3AtYS1jb3B5LXBhc3RlLW9mLWludHJvc3BlY3Rpb24ubTQtbS5wYXRjaCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbZ2RrLXBpeGJ1Zl0gPSAiLS13aXRoLWdkay1waXhidWYsLS13aXRob3V0LWdkay1waXhidWYsZ2RrLXBpeGJ1ZiIKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLXdpdGgtYnoyIFwKLSIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vdGh1bWJuYWlsZXJzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL2xpYmdzZi9saWJnc2ZfMS4xNC40Ny5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnc2YvbGliZ3NmXzEuMTQuNDcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmQ4MmIzNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9saWJnc2YvbGliZ3NmXzEuMTQuNDcuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJHTk9NRSBTdHJ1Y3R1cmVkIEZpbGUgTGlicmFyeSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRjNzM3MWI1MDgxNmM5NmUxNDVmYTBmOGFkZThlMjRkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02MTQ2NGNmZTM0Mjc5OGVlY2VkODJlZmU5YWU1NWY2MyIKKworU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTPSAibGlieG1sMiBiemlwMiBnbGliLTIuMCB6bGliIGdub21lLWNvbW1vbi1uYXRpdmUiCisKK2luaGVyaXQgZ25vbWViYXNlIGdvYmplY3QtaW50cm9zcGVjdGlvbiBnZXR0ZXh0IGd0ay1kb2MKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiMjBiZjk5MzMxMjgyMTBkN2E5ZjkyMGEzNDE5OGQyMmYiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkMTg4ZWJkMzc4N2I1Mzc1YThmZDM4ZWU2Zjc2MWEyMDA3ZGU1ZTk4ZmEwY2Y1NjIzZjI3MWRhYTY3YmE3NzRkIgorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWRyb3AtYS1jb3B5LXBhc3RlLW9mLWludHJvc3BlY3Rpb24ubTQtbS5wYXRjaCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbZ2RrLXBpeGJ1Zl0gPSAiLS13aXRoLWdkay1waXhidWYsLS13aXRob3V0LWdkay1waXhidWYsZ2RrLXBpeGJ1ZiIKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLXdpdGgtYnoyIFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vdGh1bWJuYWlsZXJzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL211dHRlci9tdXR0ZXIvMDAwMS1FR0wtSW5jbHVkZS1FR0wtZWdsbWVzYWV4dC5oLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL211dHRlci9tdXR0ZXIvMDAwMS1FR0wtSW5jbHVkZS1FR0wtZWdsbWVzYWV4dC5oLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0ZmQwMzkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbXV0dGVyL211dHRlci8wMDAxLUVHTC1JbmNsdWRlLUVHTC1lZ2xtZXNhZXh0LmgucGF0Y2gKQEAgLTAsMCArMSw3MiBAQAorRnJvbSBhNDQ0YTRjNWY1OGVhNTE2YWQzY2Q5ZDZkZGMwMDU2YzNjYTliYzkwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIkphbiBBbGV4YW5kZXIgU3RlZmZlbnMgKGhlZnRpZykiIDxqYW4uc3RlZmZlbnNAZ21haWwuY29tPgorRGF0ZTogU3VuLCAyMCBPY3QgMjAxOSAxMjowNDozMSArMDIwMAorU3ViamVjdDogW1BBVENIXSBFR0w6IEluY2x1ZGUgRUdML2VnbG1lc2FleHQuaAorCitUaGUgZWdsZXh0Lmggc2hpcHBlZCBieSBsaWJnbHZuZCBkb2VzIG5vdCBpbmNsdWRlIHRoZSBNZXNhIGV4dGVuc2lvbnMsCit1bmxpa2UgdGhlIGhlYWRlciBzaGlwcGVkIGluIE1lc2EuCisKK0ZpeGVzIGh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9tdXR0ZXIvaXNzdWVzLzg3NgorCitVcHN0cmVhbS1TdGF0dXM6IEFwcGxpZWQgWzFdCisKK1sxXSBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbXV0dGVyLy0vY29tbWl0L2E0NDRhNGM1ZjU4ZWE1MTZhZDNjZDlkNmRkYzAwNTZjM2NhOWJjOTAKKy0tLQorIGNvZ2wvY29nbC9tZXNvbi5idWlsZCAgICAgICB8IDIgKy0KKyBzcmMvYmFja2VuZHMvbWV0YS1lZ2wtZXh0LmggfCAxICsKKyBzcmMvYmFja2VuZHMvbWV0YS1lZ2wuYyAgICAgfCAxICsKKyBzcmMvYmFja2VuZHMvbWV0YS1lZ2wuaCAgICAgfCAxICsKKyA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29nbC9jb2dsL21lc29uLmJ1aWxkIGIvY29nbC9jb2dsL21lc29uLmJ1aWxkCitpbmRleCAyNjE5NTU3OTYuLmIwZTY2YmZmMyAxMDA2NDQKKy0tLSBhL2NvZ2wvY29nbC9tZXNvbi5idWlsZAorKysrIGIvY29nbC9jb2dsL21lc29uLmJ1aWxkCitAQCAtNDgsNyArNDgsNyBAQCBjb2dsX2dsX2hlYWRlcl9oID0gY29uZmlndXJlX2ZpbGUoCisgYnVpbHRfaGVhZGVycyArPSBbY29nbF9nbF9oZWFkZXJfaF0KKyAKKyBpZiBoYXZlX2VnbAorLSAgY29nbF9lZ2xfaW5jbHVkZXNfc3RyaW5nID0gJyNpbmNsdWRlIDxFR0wvZWdsLmg+XG4jaW5jbHVkZSA8RUdML2VnbGV4dC5oPicKKysgIGNvZ2xfZWdsX2luY2x1ZGVzX3N0cmluZyA9ICcjaW5jbHVkZSA8RUdML2VnbC5oPlxuI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD5cbiNpbmNsdWRlIDxFR0wvZWdsbWVzYWV4dC5oPicKKyBlbHNlCisgICBjb2dsX2VnbF9pbmNsdWRlc19zdHJpbmcgPSAnJworIGVuZGlmCitkaWZmIC0tZ2l0IGEvc3JjL2JhY2tlbmRzL21ldGEtZWdsLWV4dC5oIGIvc3JjL2JhY2tlbmRzL21ldGEtZWdsLWV4dC5oCitpbmRleCA4NzA1ZTdkNWIuLmRiMGI3NGY3NiAxMDA2NDQKKy0tLSBhL3NyYy9iYWNrZW5kcy9tZXRhLWVnbC1leHQuaAorKysrIGIvc3JjL2JhY2tlbmRzL21ldGEtZWdsLWV4dC5oCitAQCAtMjksNiArMjksNyBAQAorIAorICNpbmNsdWRlIDxFR0wvZWdsLmg+CisgI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKysjaW5jbHVkZSA8RUdML2VnbG1lc2FleHQuaD4KKyAKKyAvKgorICAqIFRoaXMgaXMgYSBsaXR0bGUgZGlmZmVyZW50IHRvIHRoZSB0ZXN0cyBzaGlwcGVkIHdpdGggRUdMIGltcGxlbWVudGF0aW9ucywKK2RpZmYgLS1naXQgYS9zcmMvYmFja2VuZHMvbWV0YS1lZ2wuYyBiL3NyYy9iYWNrZW5kcy9tZXRhLWVnbC5jCitpbmRleCA2NTU0YmU5MzUuLmZkZWZmNGY3NyAxMDA2NDQKKy0tLSBhL3NyYy9iYWNrZW5kcy9tZXRhLWVnbC5jCisrKysgYi9zcmMvYmFja2VuZHMvbWV0YS1lZ2wuYworQEAgLTI3LDYgKzI3LDcgQEAKKyAKKyAjaW5jbHVkZSA8RUdML2VnbC5oPgorICNpbmNsdWRlIDxFR0wvZWdsZXh0Lmg+CisrI2luY2x1ZGUgPEVHTC9lZ2xtZXNhZXh0Lmg+CisgI2luY2x1ZGUgPGdpby9naW8uaD4KKyAjaW5jbHVkZSA8Z2xpYi5oPgorICNpbmNsdWRlIDxnbGliLW9iamVjdC5oPgorZGlmZiAtLWdpdCBhL3NyYy9iYWNrZW5kcy9tZXRhLWVnbC5oIGIvc3JjL2JhY2tlbmRzL21ldGEtZWdsLmgKK2luZGV4IGYyYTgxNjQ0NS4uNDU5MWU3ZDg1IDEwMDY0NAorLS0tIGEvc3JjL2JhY2tlbmRzL21ldGEtZWdsLmgKKysrKyBiL3NyYy9iYWNrZW5kcy9tZXRhLWVnbC5oCitAQCAtMjgsNiArMjgsNyBAQAorIAorICNpbmNsdWRlIDxFR0wvZWdsLmg+CisgI2luY2x1ZGUgPEVHTC9lZ2xleHQuaD4KKysjaW5jbHVkZSA8RUdML2VnbG1lc2FleHQuaD4KKyAjaW5jbHVkZSA8Z2xpYi1vYmplY3QuaD4KKyAKKyAjZGVmaW5lIE1FVEFfRUdMX0VSUk9SIG1ldGFfZWdsX2Vycm9yX3F1YXJrICgpCistLSAKKzIuMjEuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbXV0dGVyL211dHRlci8wMDAxLWNvZ2wtRml4LUdMRVMyLWZhbGxiYWNrLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL211dHRlci9tdXR0ZXIvMDAwMS1jb2dsLUZpeC1HTEVTMi1mYWxsYmFjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM5MjAwMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbXV0dGVyL211dHRlci8wMDAxLWNvZ2wtRml4LUdMRVMyLWZhbGxiYWNrLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSBmNGY3ZTMxMzAzZDc4YjJhOGEwODgxYjYxMzExYjhkNzUwMzAxYjhmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWRhbSBKYWNrc29uIDxhamF4QHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDI5IE9jdCAyMDE5IDExOjUzOjI3IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvZ2w6IEZpeCBHTEVTMiBmYWxsYmFjawotCi1TYXkgeW91J3JlIHVzaW5nIGludGVsIGdlbjMsIHlvdSBwb29yIHNvdWwuIFlvdXIgYmlnLUdMIG1heGVzIG91dCBhdCAxLjUKLXVubGVzcyB5b3UgdXNlIGRpcnR5IHRyaWNrcywgYnV0IHlvdSBkbyBoYXZlIEdMRVMyLiBXZSB0cnkgdG8gZmFsbCBiYWNrCi10byBHTEVTIGluIHRoaXMgY2FzZSwgYnV0IHdlIG9ubHkgZXZlciBzYXkgZWdsQmluZEFQSShFR0xfT1BFTkdMX0FQSSkuCi1TbyB3aGVuIHdlIGdvIHRvIGRvIENyZWF0ZUNvbnRleHQsIGV2ZW4gdGhvdWdoIHdlIHRoaW5rIHdlJ3ZlIHJlcXVlc3RlZAotR0xFUyAyLjAsIHRoZSBkcml2ZXIgd2lsbCBjb21wYXJlIHRoYXQgIjIuMCIgYWdhaW5zdCB0aGUgbWF4aW11bSBiaWctR0wKLXZlcnNpb24sIGFuZCB0aGluZ3Mgd2lsbCBmYWlsLgotCi1GaXggdGhpcyBieSBiaW5kaW5nIEVHTF9PUEVOR0xfRVNfQVBJIGJlZm9yZSB0cnlpbmcgYSBHTEVTIGNvbnRleHQuCi0KLWh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9tdXR0ZXIvaXNzdWVzLzYzNQotCi1VcHN0cmVhbS1TdGF0dXM6IEFwcGxpZWQKLS0tLQotIGNvZ2wvY29nbC93aW5zeXMvY29nbC13aW5zeXMtZWdsLmMgfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29nbC9jb2dsL3dpbnN5cy9jb2dsLXdpbnN5cy1lZ2wuYyBiL2NvZ2wvY29nbC93aW5zeXMvY29nbC13aW5zeXMtZWdsLmMKLWluZGV4IDk5ZGNiOGJmMy4uZjJiNDM5YTY3IDEwMDY0NAotLS0tIGEvY29nbC9jb2dsL3dpbnN5cy9jb2dsLXdpbnN5cy1lZ2wuYwotKysrIGIvY29nbC9jb2dsL3dpbnN5cy9jb2dsLXdpbnN5cy1lZ2wuYwotQEAgLTMyOSw2ICszMjksOCBAQCB0cnlfY3JlYXRlX2NvbnRleHQgKENvZ2xEaXNwbGF5ICpkaXNwbGF5LAotICAgaWYgKHJlbmRlcmVyLT5kcml2ZXIgPT0gQ09HTF9EUklWRVJfR0wgfHwKLSAgICAgICByZW5kZXJlci0+ZHJpdmVyID09IENPR0xfRFJJVkVSX0dMMykKLSAgICAgZWdsQmluZEFQSSAoRUdMX09QRU5HTF9BUEkpOwotKyAgZWxzZSBpZiAocmVuZGVyZXItPmRyaXZlciA9PSBDT0dMX0RSSVZFUl9HTEVTMikKLSsgICAgZWdsQmluZEFQSSAoRUdMX09QRU5HTF9FU19BUEkpOwotIAotICAgZWdsX2F0dHJpYnV0ZXNfZnJvbV9mcmFtZWJ1ZmZlcl9jb25maWcgKGRpc3BsYXksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRpc3BsYXktPm9uc2NyZWVuX3RlbXBsYXRlLT5jb25maWcsCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbXV0dGVyL211dHRlcl8zLjM0LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbXV0dGVyL211dHRlcl8zLjM0LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhZmEyNjkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL211dHRlci9tdXR0ZXJfMy4zNC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOTYgKzAsMCBAQAotU1VNTUFSWSA9ICJXaW5kb3cgYW5kIGNvbXBvc2l0aW5nIG1hbmFnZXIgYmFzZWQgb24gQ2x1dHRlciIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotREVQRU5EUyA9ICIgXAotICAgIHhzZXJ2ZXIteG9yZy1jdnQtbmF0aXZlIFwKLSAgICB2aXJ0dWFsL2xpYngxMSBcCi0gICAgZ3RrKzMgXAotICAgIGdkay1waXhidWYgXAotICAgIGNhaXJvIFwKLSAgICBwYW5nbyBcCi0gICAgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyBcCi0gICAganNvbi1nbGliIFwKLSAgICBnbm9tZS1kZXNrdG9wMyBcCi0gICAgZ25vbWUtc2V0dGluZ3MtZGFlbW9uIFwKLSAgICBsaWJ4dHN0IFwKLSAgICBsaWJ4a2JmaWxlIFwKLSAgICB4aW5lcmFtYSBcCi0iCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi0KLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZmVhdHVyZXNfY2hlY2sKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYzNlZTQ2YWU3Yjg0ZDlkMGU4ZGQzZjllMDRhNjFhYjEiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJjZGY1N2RkZDBiYzM1ZGI5NTJiNzMyYjc3Yzc5Njc2MGU2NWQxY2UyZjdkZjMxMjczZTVjOGQ0NzU5ZWQ0YTg5IgotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtY29nbC1GaXgtR0xFUzItZmFsbGJhY2sucGF0Y2giCi0KLSMgeDExIGlzIHN0aWxsIG1hbmFkYXRvcnkgLSBzZWUgbWVzb24uYnVpbGQKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLSMgc3lzdGVtZCBjYW4gYmUgcmVwbGFjZWQgYnkgbGliZWxvZ2luZCAobm90IGF2YWlsYWJsZSBhdG93IC0gbWFrZSBzeXN0ZW1kCi0jIG1hbmRhdG9yeSBkaXN0cm8gZmVhdHVyZSkKLUxPR0lORCA/PSAic3lzdGVtZCIKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyArPSAic3lzdGVtZCIKLQotIyBwcm9maWxlciByZXF1aXJlcyBzeXNwcm9mIDMuMzQgd2hpY2ggaXMgbm90IHdpbGxpbmcgdG8gYnVpbGQgYXRvdwotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgbmF0aXZlLWJhY2tlbmQgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsIHgxMScsICdvcGVuZ2wgZ2x4JywgJycsIGQpfSBcCi0gICAgc20gXAotICAgIHN0YXJ0dXAtbm90aWZpY2F0aW9uIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCB3YXlsYW5kJywgJ3dheWxhbmQnLCAnJywgZCl9IFwKLSIKLQotRVhUUkFfT0VNRVNPTiArPSAiIFwKLSAgICAtRHh3YXlsYW5kX3BhdGg9JHtiaW5kaXJ9L1h3YXlsYW5kIFwKLSIKLQotIyBjb21iaS1jb25maWcgLSBzZWUgbWVzb25fb3B0aW9ucy50eHQgZm9yIG1vcmUgZGV0YWlscwotUEFDS0FHRUNPTkZJR1tuYXRpdmUtYmFja2VuZF0gPSAiLURuYXRpdmVfYmFja2VuZD10cnVlIC1EdWRldj10cnVlLCAtRG5hdGl2ZV9iYWNrZW5kPWZhbHNlIC1EdWRldj1mYWxzZSwgbGliZHJtIHZpcnR1YWwvbGliZ2JtIGxpYmlucHV0ICR7TE9HSU5EfSB2aXJ0dWFsL2VnbCB2aXJ0dWFsL2xpYmdsZXMyIHVkZXYiCi1QQUNLQUdFQ09ORklHW29wZW5nbF0gPSAiLURvcGVuZ2w9dHJ1ZSwgLURvcGVuZ2w9dHJ1ZSwgdmlydHVhbC9saWJnbCIKLVBBQ0tBR0VDT05GSUdbZ2x4XSA9ICItRGdseD10cnVlLCAtRGdseD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbbGlid2Fjb21dID0gIi1EbGlid2Fjb209dHJ1ZSwgLURsaWJ3YWNvbT1mYWxzZSwgbGlid2Fjb20iCi1QQUNLQUdFQ09ORklHW3JlbW90ZS1kZXNrdG9wXSA9ICItRHJlbW90ZV9kZXNrdG9wPXRydWUsIC1EcmVtb3RlX2Rlc2t0b3A9ZmFsc2UsIHBpcGV3aXJlIgotUEFDS0FHRUNPTkZJR1tzbV0gPSAiLURzbT10cnVlLCAtRHNtPWZhbHNlLCBsaWJzbSIKLVBBQ0tBR0VDT05GSUdbcHJvZmlsZXJdID0gIi1EcHJvZmlsZXI9dHJ1ZSwtRHByb2ZpbGVyPWZhbHNlLHN5c3Byb2YiCi1QQUNLQUdFQ09ORklHW3N0YXJ0dXAtbm90aWZpY2F0aW9uXSA9ICItRHN0YXJ0dXBfbm90aWZpY2F0aW9uPXRydWUsIC1Ec3RhcnR1cF9ub3RpZmljYXRpb249ZmFsc2UsIHN0YXJ0dXAtbm90aWZpY2F0aW9uLCBzdGFydHVwLW5vdGlmaWNhdGlvbiIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLUR3YXlsYW5kPXRydWUsLUR3YXlsYW5kPWZhbHNlLHdheWxhbmQgd2F5bGFuZC1uYXRpdmUsIHhzZXJ2ZXIteG9yZy14d2F5bGFuZCIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZC1lZ2xzdHJlYW1dID0gIi1Ed2F5bGFuZF9lZ2xzdHJlYW09dHJ1ZSwtRHdheWxhbmRfZWdsc3RyZWFtPWZhbHNlIgotCi0jIHllcyB0aGV5IGNoYW5nZWQgZnJvbSBtdXR0ZXItNCAtPiBtdXR0ZXItNSByZWNlbnRseSBzbyBiZSBwZXJwYXJlZAotTVVUVEVSX0FQSV9OQU1FID0gIm11dHRlci01IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIEFkZCBnaXIgbGlua3MgaW4gc3RhbmRhcmQgcGF0aHMuIFRoYXQgbWFrZXMgZGVwZW5kZW50cyBsaWZlIG11Y2ggZWFzaWVyCi0gICAgIyB0byBmaW5kIHRoZW0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2dpci0xLjAKLSAgICBmb3IgZ2lyX2Z1bGwgaW4gYGZpbmQgJHtEfSR7bGliZGlyfS8ke01VVFRFUl9BUElfTkFNRX0gLW5hbWUgJyouZ2lyJ2A7IGRvCi0gICAgICAgIGdpcj1gYmFzZW5hbWUgIiRnaXJfZnVsbCJgCi0gICAgICAgIGxuIC1zciAiJHtEfSR7bGliZGlyfS8ke01VVFRFUl9BUElfTkFNRX0vJGdpciIgIiR7RH0ke2RhdGFkaXJ9L2dpci0xLjAvJGdpciIKLSAgICBkb25lCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtkYXRhZGlyfS9nbm9tZS1jb250cm9sLWNlbnRlciBcCi0gICAgJHtsaWJkaXJ9LyR7TVVUVEVSX0FQSV9OQU1FfS9saWIqJHtTT0xJQlN9IFwKLSAgICAke2xpYmRpcn0vJHtNVVRURVJfQVBJX05BTUV9LyoudHlwZWxpYiBcCi0gICAgJHtsaWJkaXJ9LyR7TVVUVEVSX0FQSV9OQU1FfS9wbHVnaW5zIFwKLSIKLQotRklMRVNfJHtQTn0tdGVzdHMgKz0gIiBcCi0gICAgJHtkYXRhZGlyfS9pbnN0YWxsZWQtdGVzdHMgXAotICAgICR7ZGF0YWRpcn0vJHtNVVRURVJfQVBJX05BTUV9L3Rlc3RzIFwKLSAgICAke2xpYmV4ZWNkaXJ9L2luc3RhbGxlZC10ZXN0cy8ke01VVFRFUl9BUElfTkFNRX0gXAotIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiBcCi0gICAgJHtsaWJkaXJ9LyR7TVVUVEVSX0FQSV9OQU1FfS8qLmdpciBcCi0gICAgJHtsaWJkaXJ9LyR7TVVUVEVSX0FQSV9OQU1FfS9saWIqLnNvIFwKLSIKLQotUkRFUEVORFNfJHtQTn0gKz0gInplbml0eSIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL211dHRlci9tdXR0ZXJfMy4zNC41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL211dHRlci9tdXR0ZXJfMy4zNC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwYjg5ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbXV0dGVyL211dHRlcl8zLjM0LjUuYmIKQEAgLTAsMCArMSw5NiBAQAorU1VNTUFSWSA9ICJXaW5kb3cgYW5kIGNvbXBvc2l0aW5nIG1hbmFnZXIgYmFzZWQgb24gQ2x1dHRlciIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworREVQRU5EUyA9ICIgXAorICAgIHhzZXJ2ZXIteG9yZy1jdnQtbmF0aXZlIFwKKyAgICB2aXJ0dWFsL2xpYngxMSBcCisgICAgZ3RrKzMgXAorICAgIGdkay1waXhidWYgXAorICAgIGNhaXJvIFwKKyAgICBwYW5nbyBcCisgICAgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyBcCisgICAganNvbi1nbGliIFwKKyAgICBnbm9tZS1kZXNrdG9wMyBcCisgICAgZ25vbWUtc2V0dGluZ3MtZGFlbW9uIFwKKyAgICBsaWJ4dHN0IFwKKyAgICBsaWJ4a2JmaWxlIFwKKyAgICB4aW5lcmFtYSBcCisiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCisKK2luaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZmVhdHVyZXNfY2hlY2sKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNGExNmRhZDFkOTNkNWUxZjgxZDU1NWRhMzVmYWYwZTkiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkMWQxNDliNzBlZDczMzA3NzFmNDUyNDg4NmI5ODc3NWZjZTVhMTFjZjE3Zjk2ODNjYmExNTEwNzVmMjg3OWM0IgorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRUdMLUluY2x1ZGUtRUdMLWVnbG1lc2FleHQuaC5wYXRjaCIKKworIyB4MTEgaXMgc3RpbGwgbWFuYWRhdG9yeSAtIHNlZSBtZXNvbi5idWlsZAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworIyBzeXN0ZW1kIGNhbiBiZSByZXBsYWNlZCBieSBsaWJlbG9naW5kIChub3QgYXZhaWxhYmxlIGF0b3cgLSBtYWtlIHN5c3RlbWQKKyMgbWFuZGF0b3J5IGRpc3RybyBmZWF0dXJlKQorTE9HSU5EID89ICJzeXN0ZW1kIgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTICs9ICJzeXN0ZW1kIgorCisjIHByb2ZpbGVyIHJlcXVpcmVzIHN5c3Byb2YgMy4zNCB3aGljaCBpcyBub3Qgd2lsbGluZyB0byBidWlsZCBhdG93CitQQUNLQUdFQ09ORklHID8/PSAiIFwKKyAgICBuYXRpdmUtYmFja2VuZCBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wgeDExJywgJ29wZW5nbCBnbHgnLCAnJywgZCl9IFwKKyAgICBzbSBcCisgICAgc3RhcnR1cC1ub3RpZmljYXRpb24gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsIHdheWxhbmQnLCAnd2F5bGFuZCcsICcnLCBkKX0gXAorIgorCitFWFRSQV9PRU1FU09OICs9ICIgXAorICAgIC1EeHdheWxhbmRfcGF0aD0ke2JpbmRpcn0vWHdheWxhbmQgXAorIgorCisjIGNvbWJpLWNvbmZpZyAtIHNlZSBtZXNvbl9vcHRpb25zLnR4dCBmb3IgbW9yZSBkZXRhaWxzCitQQUNLQUdFQ09ORklHW25hdGl2ZS1iYWNrZW5kXSA9ICItRG5hdGl2ZV9iYWNrZW5kPXRydWUgLUR1ZGV2PXRydWUsIC1EbmF0aXZlX2JhY2tlbmQ9ZmFsc2UgLUR1ZGV2PWZhbHNlLCBsaWJkcm0gdmlydHVhbC9saWJnYm0gbGliaW5wdXQgJHtMT0dJTkR9IHZpcnR1YWwvZWdsIHZpcnR1YWwvbGliZ2xlczIgdWRldiIKK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICItRG9wZW5nbD10cnVlLCAtRG9wZW5nbD10cnVlLCB2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJR1tnbHhdID0gIi1EZ2x4PXRydWUsIC1EZ2x4PWZhbHNlIgorUEFDS0FHRUNPTkZJR1tsaWJ3YWNvbV0gPSAiLURsaWJ3YWNvbT10cnVlLCAtRGxpYndhY29tPWZhbHNlLCBsaWJ3YWNvbSIKK1BBQ0tBR0VDT05GSUdbcmVtb3RlLWRlc2t0b3BdID0gIi1EcmVtb3RlX2Rlc2t0b3A9dHJ1ZSwgLURyZW1vdGVfZGVza3RvcD1mYWxzZSwgcGlwZXdpcmUtMC4yIgorUEFDS0FHRUNPTkZJR1tzbV0gPSAiLURzbT10cnVlLCAtRHNtPWZhbHNlLCBsaWJzbSIKK1BBQ0tBR0VDT05GSUdbcHJvZmlsZXJdID0gIi1EcHJvZmlsZXI9dHJ1ZSwtRHByb2ZpbGVyPWZhbHNlLHN5c3Byb2YiCitQQUNLQUdFQ09ORklHW3N0YXJ0dXAtbm90aWZpY2F0aW9uXSA9ICItRHN0YXJ0dXBfbm90aWZpY2F0aW9uPXRydWUsIC1Ec3RhcnR1cF9ub3RpZmljYXRpb249ZmFsc2UsIHN0YXJ0dXAtbm90aWZpY2F0aW9uLCBzdGFydHVwLW5vdGlmaWNhdGlvbiIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLUR3YXlsYW5kPXRydWUsLUR3YXlsYW5kPWZhbHNlLHdheWxhbmQgd2F5bGFuZC1uYXRpdmUsIHhzZXJ2ZXIteG9yZy14d2F5bGFuZCIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZC1lZ2xzdHJlYW1dID0gIi1Ed2F5bGFuZF9lZ2xzdHJlYW09dHJ1ZSwtRHdheWxhbmRfZWdsc3RyZWFtPWZhbHNlIgorCisjIHllcyB0aGV5IGNoYW5nZWQgZnJvbSBtdXR0ZXItNCAtPiBtdXR0ZXItNSByZWNlbnRseSBzbyBiZSBwZXJwYXJlZAorTVVUVEVSX0FQSV9OQU1FID0gIm11dHRlci01IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIEFkZCBnaXIgbGlua3MgaW4gc3RhbmRhcmQgcGF0aHMuIFRoYXQgbWFrZXMgZGVwZW5kZW50cyBsaWZlIG11Y2ggZWFzaWVyCisgICAgIyB0byBmaW5kIHRoZW0KKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2dpci0xLjAKKyAgICBmb3IgZ2lyX2Z1bGwgaW4gYGZpbmQgJHtEfSR7bGliZGlyfS8ke01VVFRFUl9BUElfTkFNRX0gLW5hbWUgJyouZ2lyJ2A7IGRvCisgICAgICAgIGdpcj1gYmFzZW5hbWUgIiRnaXJfZnVsbCJgCisgICAgICAgIGxuIC1zciAiJHtEfSR7bGliZGlyfS8ke01VVFRFUl9BUElfTkFNRX0vJGdpciIgIiR7RH0ke2RhdGFkaXJ9L2dpci0xLjAvJGdpciIKKyAgICBkb25lCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9nbm9tZS1jb250cm9sLWNlbnRlciBcCisgICAgJHtsaWJkaXJ9LyR7TVVUVEVSX0FQSV9OQU1FfS9saWIqJHtTT0xJQlN9IFwKKyAgICAke2xpYmRpcn0vJHtNVVRURVJfQVBJX05BTUV9LyoudHlwZWxpYiBcCisgICAgJHtsaWJkaXJ9LyR7TVVUVEVSX0FQSV9OQU1FfS9wbHVnaW5zIFwKKyIKKworRklMRVNfJHtQTn0tdGVzdHMgKz0gIiBcCisgICAgJHtkYXRhZGlyfS9pbnN0YWxsZWQtdGVzdHMgXAorICAgICR7ZGF0YWRpcn0vJHtNVVRURVJfQVBJX05BTUV9L3Rlc3RzIFwKKyAgICAke2xpYmV4ZWNkaXJ9L2luc3RhbGxlZC10ZXN0cy8ke01VVFRFUl9BUElfTkFNRX0gXAorIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiBcCisgICAgJHtsaWJkaXJ9LyR7TVVUVEVSX0FQSV9OQU1FfS8qLmdpciBcCisgICAgJHtsaWJkaXJ9LyR7TVVUVEVSX0FQSV9OQU1FfS9saWIqLnNvIFwKKyIKKworUkRFUEVORFNfJHtQTn0gKz0gInplbml0eSIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL25hdXRpbHVzL25hdXRpbHVzXzMuMzQuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS9uYXV0aWx1cy9uYXV0aWx1c18zLjM0LjIuYmIKaW5kZXggYmFjYzk2Ny4uMTBkZWE5NCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL25hdXRpbHVzL25hdXRpbHVzXzMuMzQuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvbmF1dGlsdXMvbmF1dGlsdXNfMy4zNC4yLmJiCkBAIC0xNSw3ICsxNSw3IEBACiAgICAgdHJhY2tlciBcCiAiCiAKLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBnZXR0ZXh0IGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgoraW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIGdldHRleHQgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIG1pbWUteGRnCiAKIFNSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjg4NTczMDYxNTQ0MDQwYzBmZjk2MGY5MzRhYTgzNzE5IgogU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYmIwNmUyMjZiOTY1ZjQ3OWEwYjg2NjhjMTljOGUxNzYyYjlkOGYwMzlhZjY4MTc5NjFjYzdhOGYwOWU2ZjhhNyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS90cmFja2VyL3RyYWNrZXItbWluZXJzXzIuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3RyYWNrZXIvdHJhY2tlci1taW5lcnNfMi4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkYmJjYWYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3RyYWNrZXIvdHJhY2tlci1taW5lcnNfMi4zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1TVU1NQVJZID0gIlRyYWNrZXIgbWluZXJzIGFuZCBtZXRhZGF0YSBleHRyYWN0b3JzIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9ZWUzMTAxMmJmOTBlN2I4YzEwOGM2OWYxOTdmM2UzYTQgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEw7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKLSIKLQotREVQRU5EUyA9ICIgXAotICAgIGludGx0b29sLW5hdGl2ZSBcCi0gICAgdHJhY2tlciBcCi0gICAgemxpYiBcCi0iCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi0KLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gdmFsYSBndGstZG9jIG1hbnBhZ2VzIGJhc2gtY29tcGxldGlvbiBmZWF0dXJlc19jaGVjawotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICIwMzIxZDhmNGFkMjdlM2ZjY2RiYzgzODRlNWIzY2I4MyIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjdiMWRlMDZhN2E3OWVhMWM3ODEzYzhhMjFmOGNkMWM1NWYyYjk1Zjc5OWNmOWY0N2YwMjA0ZjNiZThhNTkwZTAiCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1tZXNvbi5idWlsZC1KdXN0LXdhcm4taWYtd2UtYnVpbGQtd2l0aG91dC1saWJzZWNjb21wLnBhdGNoIgotCi0jIGdvYmplY3QtaW50cm9zcGVjdGlvbiBpcyBtYW5kYXRvcnkgYW5kIGNhbm5vdCBiZSBjb25maWd1cmVkCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEiCi1VTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1RfYXBwZW5kID0gIiBpbnRyb3NwZWN0aW9uIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICBmZm1wZWcgXAotICAgIGZsYWMgXAotICAgIGdleGl2MiBcCi0gICAgZ3N0cmVhbWVyIFwKLSAgICBpY3UgXAotICAgIGxpYmV4aWYgXAotICAgIGxpYmdzZiBcCi0gICAganBlZyBcCi0gICAgcG5nIFwKLSAgICB0aWZmIFwKLSAgICB4bWwgXAotICAgIHBkZiBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbZmZtcGVnXSAgICAgPSAiLCxmZm1wZWciCi1QQUNLQUdFQ09ORklHW2ZsYWNdICAgICAgID0gIi1EZmxhYz1lbmFibGVkLC1EZmxhYz1kaXNhYmxlZCxmbGFjIgotUEFDS0FHRUNPTkZJR1tnZXhpdjJdICAgICA9ICIsLGdleGl2MiIKLVBBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyXSAgPSAiLCxnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKLVBBQ0tBR0VDT05GSUdbZ3VwbnBdICAgICAgPSAiLCxndXBucC1kbG5hIgotUEFDS0FHRUNPTkZJR1tpY3VdICAgICAgICA9ICIsLGljdSIKLVBBQ0tBR0VDT05GSUdbbGliZXhpZl0gICAgPSAiLURleGlmPWVuYWJsZWQsLURleGlmPWRpc2FibGVkLGxpYmV4aWYiCi1QQUNLQUdFQ09ORklHW2xpYmdzZl0gICAgID0gIi1EZ3NmPWVuYWJsZWQsLURnc2Y9ZGlzYWJsZWQsbGliZ3NmIgotUEFDS0FHRUNPTkZJR1tqcGVnXSAgICAgICA9ICItRGpwZWc9ZW5hYmxlZCwtRGpwZWc9ZGlzYWJsZWQsanBlZyIKLVBBQ0tBR0VDT05GSUdbcG5nXSAgICAgICAgPSAiLURwbmc9ZW5hYmxlZCwtRHBuZz1kaXNhYmxlZCxsaWJwbmciCi1QQUNLQUdFQ09ORklHW3RpZmZdICAgICAgID0gIi1EdGlmZj1lbmFibGVkLC1EdGlmZj1kaXNhYmxlZCx0aWZmIgotUEFDS0FHRUNPTkZJR1t4bWxdICAgICAgICA9ICItRHhtbD1lbmFibGVkLC1EeG1sPWRpc2FibGVkLGxpYnhtbDIiCi1QQUNLQUdFQ09ORklHW3ZvcmJpc10gICAgID0gIi1Edm9yYmlzPWVuYWJsZWQsLUR2b3JiaXM9ZGlzYWJsZWQsbGlidm9yYmlzIgotUEFDS0FHRUNPTkZJR1twZGZdICAgICAgICA9ICItRHBkZj1lbmFibGVkLC1EcGRmPWRpc2FibGVkLHBvcHBsZXIiCi1QQUNLQUdFQ09ORklHW3Vwb3dlcl0gICAgID0gIiwsdXBvd2VyIgotCi0jIEZvciBzZWN1cml0eSByZWFzb25zIGl0IGlzIHN0cm9uZ2x5IHJlY29tbWVuZGVkIHRvIHNldCBhZGQgbWV0YS1zZWN1cml0eSBpbgotIyB5b3VyIGxheWVycyBhbmQgJ2xpYnNlY2NvbXAnIHRvIFBBQ0tBR0VDT05GSUciLgotUEFDS0FHRUNPTkZJR1tsaWJzZWNjb21wXSA9ICIsLGxpYnNlY2NvbXAiCi0jIG5vdCB5ZXQgaW4gbWV0YS1nbm9tZQotUEFDS0FHRUNPTkZJR1tyc3NdICAgICAgICA9ICItRG1pbmVyX3Jzcz10cnVlLC1EbWluZXJfcnNzPWZhbHNlLGxpYmdyc3MiCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSAgICAke2RhdGFkaXJ9L3RyYWNrZXIgXAotICAgICR7bGliZGlyfS90cmFja2VyLW1pbmVycy0yLjAgXAotICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS90cmFja2VyL3RyYWNrZXItbWluZXJzXzIuMy4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3RyYWNrZXIvdHJhY2tlci1taW5lcnNfMi4zLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQwNzg3ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS90cmFja2VyL3RyYWNrZXItbWluZXJzXzIuMy4zLmJiCkBAIC0wLDAgKzEsNjggQEAKK1NVTU1BUlkgPSAiVHJhY2tlciBtaW5lcnMgYW5kIG1ldGFkYXRhIGV4dHJhY3RvcnMiCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gIiBcCisgICAgZmlsZTovL0NPUFlJTkcuR1BMO21kNT1lZTMxMDEyYmY5MGU3YjhjMTA4YzY5ZjE5N2YzZTNhNCBcCisgICAgZmlsZTovL0NPUFlJTkcuTEdQTDttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAorIgorCitERVBFTkRTID0gIiBcCisgICAgaW50bHRvb2wtbmF0aXZlIFwKKyAgICB0cmFja2VyIFwKKyAgICB6bGliIFwKKyIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGdvYmplY3QtaW50cm9zcGVjdGlvbiB2YWxhIGd0ay1kb2MgbWFucGFnZXMgYmFzaC1jb21wbGV0aW9uIGZlYXR1cmVzX2NoZWNrCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImEzMTdiYzUwYzVlNjNkZDA3NDZhNDhhZjQ3OGZiOTJiIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNzQ3MmFhMjhkNzg2MjYyMGQzY2EyYmJlYzNiMTAzZGY1NDdkNzMxOWMxMmU5NWE3ZjdhYTlmOWY2ZGVlNGIxOSIKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLW1lc29uLmJ1aWxkLUp1c3Qtd2Fybi1pZi13ZS1idWlsZC13aXRob3V0LWxpYnNlY2NvbXAucGF0Y2giCisKKyMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGlzIG1hbmRhdG9yeSBhbmQgY2Fubm90IGJlIGNvbmZpZ3VyZWQKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YSIKK1VOS05PV05fQ09ORklHVVJFX1dISVRFTElTVF9hcHBlbmQgPSAiIGludHJvc3BlY3Rpb24iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgIGZmbXBlZyBcCisgICAgZmxhYyBcCisgICAgZ2V4aXYyIFwKKyAgICBnc3RyZWFtZXIgXAorICAgIGljdSBcCisgICAgbGliZXhpZiBcCisgICAgbGliZ3NmIFwKKyAgICBqcGVnIFwKKyAgICBwbmcgXAorICAgIHRpZmYgXAorICAgIHhtbCBcCisgICAgcGRmIFwKKyIKKworUEFDS0FHRUNPTkZJR1tmZm1wZWddICAgICA9ICIsLGZmbXBlZyIKK1BBQ0tBR0VDT05GSUdbZmxhY10gICAgICAgPSAiLURmbGFjPWVuYWJsZWQsLURmbGFjPWRpc2FibGVkLGZsYWMiCitQQUNLQUdFQ09ORklHW2dleGl2Ml0gICAgID0gIiwsZ2V4aXYyIgorUEFDS0FHRUNPTkZJR1tnc3RyZWFtZXJdICA9ICIsLGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgorUEFDS0FHRUNPTkZJR1tndXBucF0gICAgICA9ICIsLGd1cG5wLWRsbmEiCitQQUNLQUdFQ09ORklHW2ljdV0gICAgICAgID0gIiwsaWN1IgorUEFDS0FHRUNPTkZJR1tsaWJleGlmXSAgICA9ICItRGV4aWY9ZW5hYmxlZCwtRGV4aWY9ZGlzYWJsZWQsbGliZXhpZiIKK1BBQ0tBR0VDT05GSUdbbGliZ3NmXSAgICAgPSAiLURnc2Y9ZW5hYmxlZCwtRGdzZj1kaXNhYmxlZCxsaWJnc2YiCitQQUNLQUdFQ09ORklHW2pwZWddICAgICAgID0gIi1EanBlZz1lbmFibGVkLC1EanBlZz1kaXNhYmxlZCxqcGVnIgorUEFDS0FHRUNPTkZJR1twbmddICAgICAgICA9ICItRHBuZz1lbmFibGVkLC1EcG5nPWRpc2FibGVkLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbdGlmZl0gICAgICAgPSAiLUR0aWZmPWVuYWJsZWQsLUR0aWZmPWRpc2FibGVkLHRpZmYiCitQQUNLQUdFQ09ORklHW3htbF0gICAgICAgID0gIi1EeG1sPWVuYWJsZWQsLUR4bWw9ZGlzYWJsZWQsbGlieG1sMiIKK1BBQ0tBR0VDT05GSUdbdm9yYmlzXSAgICAgPSAiLUR2b3JiaXM9ZW5hYmxlZCwtRHZvcmJpcz1kaXNhYmxlZCxsaWJ2b3JiaXMiCitQQUNLQUdFQ09ORklHW3BkZl0gICAgICAgID0gIi1EcGRmPWVuYWJsZWQsLURwZGY9ZGlzYWJsZWQscG9wcGxlciIKK1BBQ0tBR0VDT05GSUdbdXBvd2VyXSAgICAgPSAiLCx1cG93ZXIiCisKKyMgRm9yIHNlY3VyaXR5IHJlYXNvbnMgaXQgaXMgc3Ryb25nbHkgcmVjb21tZW5kZWQgdG8gc2V0IGFkZCBtZXRhLXNlY3VyaXR5IGluCisjIHlvdXIgbGF5ZXJzIGFuZCAnbGlic2VjY29tcCcgdG8gUEFDS0FHRUNPTkZJRyIuCitQQUNLQUdFQ09ORklHW2xpYnNlY2NvbXBdID0gIiwsbGlic2VjY29tcCIKKyMgbm90IHlldCBpbiBtZXRhLWdub21lCitQQUNLQUdFQ09ORklHW3Jzc10gICAgICAgID0gIi1EbWluZXJfcnNzPXRydWUsLURtaW5lcl9yc3M9ZmFsc2UsbGliZ3JzcyIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7ZGF0YWRpcn0vdHJhY2tlciBcCisgICAgJHtsaWJkaXJ9L3RyYWNrZXItbWluZXJzLTIuMCBcCisgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3RyYWNrZXIvdHJhY2tlcl8yLjMuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1nbm9tZS90cmFja2VyL3RyYWNrZXJfMi4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5MGQ3YmQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3RyYWNrZXIvdHJhY2tlcl8yLjMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLVNVTU1BUlkgPSAiVHJhY2tlciBpcyBhIGZpbGUgc2VhcmNoIGVuZ2luZSIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiIFwKLSAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PWVlMzEwMTJiZjkwZTdiOGMxMDhjNjlmMTk3ZjNlM2E0IFwKLSAgICBmaWxlOi8vQ09QWUlORy5MR1BMO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCi0iCi0KLURFUEVORFMgPSAiIFwKLSAgICBsaWJ4bWwyLW5hdGl2ZSBcCi0gICAgZGJ1cy1uYXRpdmUgXAotICAgIGdsaWItMi4wIFwKLSAgICBzcWxpdGUzIFwKLSAgICBsaWJhcmNoaXZlIFwKLSAgICBkYnVzIFwKLSAgICBpY3UgXAotICAgIGpzb24tZ2xpYiBcCi0gICAgbGlic291cC0yLjQgXAotICAgIGxpYnN0ZW1tZXIgXAotIgotCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotCi1pbmhlcml0IGdub21lYmFzZSBnc2V0dGluZ3MgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHZhbGEgZ3RrLWRvYyBtYW5wYWdlcyBiYXNoLWNvbXBsZXRpb24gZmVhdHVyZXNfY2hlY2sKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNWU3NWI2MTFiMTkwYzRjZWJmNTNlM2RlMTUyNjY0MjkiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJiNjc0ODcyNmU0NjVhZDJmNGQ5OTE1NjA2MzRiMWZkMGRmODg0MWYzZDk4MWIzYjgzN2M0MTYyYWJlZGYwOGExIgotCi0jIGdvYmplY3QtaW50cm9zcGVjdGlvbiBpcyBtYW5kYXRvcnkgYW5kIGNhbm5vdCBiZSBjb25maWd1cmVkCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEiCi1VTktOT1dOX0NPTkZJR1VSRV9XSElURUxJU1RfYXBwZW5kID0gIiBpbnRyb3NwZWN0aW9uIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZnRzIgotUEFDS0FHRUNPTkZJR1tuZXR3b3JrbWFuYWdlcl0gPSAiLURuZXR3b3JrX21hbmFnZXI9ZW5hYmxlZCwtRG5ldHdvcmtfbWFuYWdlcj1kaXNhYmxlZCxuZXR3b3JrbWFuZ2VyIgotIyBmdWxsIHRleHQgc2VhcmNoIHJlcXVpcmVzIHNxbGl0ZTMgYnVpbGQgd2l0aCBQQUNLQUdFQ09ORklHW2Z0czVdIHNldAotUEFDS0FHRUNPTkZJR1tmdHNdID0gIi1EZnRzPXRydWUsLURmdHM9ZmFsc2UiCi0KLSMgc2V0IHJlcXVpcmVkIGNyb3NzIHByb3BlcnR5IHNxbGl0ZTNfaGFzX2Z0czUKLWRvX3dyaXRlX2NvbmZpZ1t2YXJkZXBzXSArPSAiUEFDS0FHRUNPTkZJRyIKLWRvX3dyaXRlX2NvbmZpZ19hcHBlbmQoKSB7Ci0gICAgZWNobyAiW3Byb3BlcnRpZXNdIiA+ICR7V09SS0RJUn0vbWVzb24tdHJhY2tlci5jcm9zcwotICAgIGVjaG8gInNxbGl0ZTNfaGFzX2Z0czUgPSAnJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZnRzJywgJ3RydWUnLCAnZmFsc2UnLCBkKX0nIiA+PiAke1dPUktESVJ9L21lc29uLXRyYWNrZXIuY3Jvc3MKLX0KLQotRVhUUkFfT0VNRVNPTiA9ICItLWNyb3NzLWZpbGUgJHtXT1JLRElSfS9tZXNvbi10cmFja2VyLmNyb3NzIgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMSBcCi0gICAgJHtsaWJkaXJ9L3RyYWNrZXItMi4wIFwKLSAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUvdHJhY2tlci90cmFja2VyXzIuMy40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3RyYWNrZXIvdHJhY2tlcl8yLjMuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZTkwNzcxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3RyYWNrZXIvdHJhY2tlcl8yLjMuNC5iYgpAQCAtMCwwICsxLDUwIEBACitTVU1NQVJZID0gIlRyYWNrZXIgaXMgYSBmaWxlIHNlYXJjaCBlbmdpbmUiCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gIiBcCisgICAgZmlsZTovL0NPUFlJTkcuR1BMO21kNT1lZTMxMDEyYmY5MGU3YjhjMTA4YzY5ZjE5N2YzZTNhNCBcCisgICAgZmlsZTovL0NPUFlJTkcuTEdQTDttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAorIgorCitERVBFTkRTID0gIiBcCisgICAgbGlieG1sMi1uYXRpdmUgXAorICAgIGRidXMtbmF0aXZlIFwKKyAgICBnbGliLTIuMCBcCisgICAgc3FsaXRlMyBcCisgICAgbGliYXJjaGl2ZSBcCisgICAgZGJ1cyBcCisgICAgaWN1IFwKKyAgICBqc29uLWdsaWIgXAorICAgIGxpYnNvdXAtMi40IFwKKyAgICBsaWJzdGVtbWVyIFwKKyIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGdvYmplY3QtaW50cm9zcGVjdGlvbiB2YWxhIGd0ay1kb2MgbWFucGFnZXMgYmFzaC1jb21wbGV0aW9uIGZlYXR1cmVzX2NoZWNrCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjk5MzdjZjQ4MTJjYTg1MDc4OTA3MzI0YzdjZGY3ZGQ4IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNTc3OTUyMjQ0YWI5NzdjNzhiMGI4OGUyZjYzYzQxOTdlYWJhMTZlNGQ2NmJmZjY5MmI3ZjU4OTkzZTA2NTE2ZCIKKworIyBnb2JqZWN0LWludHJvc3BlY3Rpb24gaXMgbWFuZGF0b3J5IGFuZCBjYW5ub3QgYmUgY29uZmlndXJlZAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gImdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIgorVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUX2FwcGVuZCA9ICIgaW50cm9zcGVjdGlvbiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImZ0cyIKK1BBQ0tBR0VDT05GSUdbbmV0d29ya21hbmFnZXJdID0gIi1EbmV0d29ya19tYW5hZ2VyPWVuYWJsZWQsLURuZXR3b3JrX21hbmFnZXI9ZGlzYWJsZWQsbmV0d29ya21hbmdlciIKKyMgZnVsbCB0ZXh0IHNlYXJjaCByZXF1aXJlcyBzcWxpdGUzIGJ1aWxkIHdpdGggUEFDS0FHRUNPTkZJR1tmdHM1XSBzZXQKK1BBQ0tBR0VDT05GSUdbZnRzXSA9ICItRGZ0cz10cnVlLC1EZnRzPWZhbHNlIgorCisjIHNldCByZXF1aXJlZCBjcm9zcyBwcm9wZXJ0eSBzcWxpdGUzX2hhc19mdHM1Citkb193cml0ZV9jb25maWdbdmFyZGVwc10gKz0gIlBBQ0tBR0VDT05GSUciCitkb193cml0ZV9jb25maWdfYXBwZW5kKCkgeworICAgIGVjaG8gIltwcm9wZXJ0aWVzXSIgPiAke1dPUktESVJ9L21lc29uLXRyYWNrZXIuY3Jvc3MKKyAgICBlY2hvICJzcWxpdGUzX2hhc19mdHM1ID0gJyR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2Z0cycsICd0cnVlJywgJ2ZhbHNlJywgZCl9JyIgPj4gJHtXT1JLRElSfS9tZXNvbi10cmFja2VyLmNyb3NzCit9CisKK0VYVFJBX09FTUVTT04gPSAiLS1jcm9zcy1maWxlICR7V09SS0RJUn0vbWVzb24tdHJhY2tlci5jcm9zcyIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7bGliZGlyfS90cmFja2VyLTIuMCBcCisgICAgJHtzeXN0ZW1kX3VzZXJfdW5pdGRpcn0gXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWdub21lL3llbHAveWVscF8zLjM0LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUveWVscC95ZWxwXzMuMzQuMC5iYgppbmRleCAzNDg3MjdlLi5mMDEwNjE2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUveWVscC95ZWxwXzMuMzQuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtZ25vbWUveWVscC95ZWxwXzMuMzQuMC5iYgpAQCAtNCw3ICs0LDcgQEAKICAgICBmaWxlOi8vQ09QWUlORzttZDU9NmUxYjljYjc4N2U3NmQ3ZTY5NDY4ODdhNjVjYWE3NTQgXAogIgogCi1pbmhlcml0IGdub21lYmFzZSBpdHN0b29sIGF1dG90b29scy1icm9rZW5zZXAgZ3NldHRpbmdzIGdldHRleHQgZ3RrLWRvYyBmZWF0dXJlc19jaGVjaworaW5oZXJpdCBnbm9tZWJhc2UgaXRzdG9vbCBhdXRvdG9vbHMtYnJva2Vuc2VwIGdzZXR0aW5ncyBnZXR0ZXh0IGd0ay1kb2MgZmVhdHVyZXNfY2hlY2sgbWltZS14ZGcKIAogIyBmb3Igd2Via2l0Z3RrCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4zNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4zNC4xLmJiCmluZGV4IDFlNTMwZWYuLmFkNjlhYjYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMzQuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMta2VybmVsL3N5c3Byb2Yvc3lzcHJvZl8zLjM0LjEuYmIKQEAgLTUsOSArNSw5IEBACiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc3lzcHJvZi9zeXNwcm9mLWFwcGxpY2F0aW9uLmM7ZW5kbGluZT0xNzttZDU9YTNkZThkZjNiMGY4ODc2ZGQwMWUxMzg4ZDJkNGI2MDciCiAKIEdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHN5c3RlbWQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdzZXR0aW5ncworaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCBzeXN0ZW1kIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnc2V0dGluZ3MgbWltZSBtaW1lLXhkZwogCi1ERVBFTkRTID0gImdsaWItMi4wIGxpYnhtbDItbmF0aXZlIGdsaWItMi4wLW5hdGl2ZSIKK0RFUEVORFMgKz0gImdsaWItMi4wIGxpYnhtbDItbmF0aXZlIGdsaWItMi4wLW5hdGl2ZSIKIAogU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiY2MzMjQ1NTI3N2IzMWFmYjE5NjVkNjI3YWUzZTM2MjkiCiBTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI4NDRiYmI4ZDhiNjUwNzFiM2JjYTk2ZjhlOTIxMzE5Y2VlZjgxZjJkMmM1MWZjYzlkYTYzYTRiMzU1Yzg5M2QwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvb25ib2FyZC9vbmJvYXJkXzEuNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvb25ib2FyZC9vbmJvYXJkXzEuNC4xLmJiCmluZGV4IDAzZmQwNTEuLjFlYjRhMTAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L29uYm9hcmQvb25ib2FyZF8xLjQuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9vbmJvYXJkL29uYm9hcmRfMS40LjEuYmIKQEAgLTEwLDcgKzEwLDcgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICIxYTJmYmU4MmU5MzRmNWIzNzg0MWQxN2ZmNTFlODBlOCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMWNhZTFhYzViMWVmMWFiOTg1YmQyZDJkNzlkZWQ2ZmM5OWVlMDRiMTUzNWNjMWJiMTkxZTQzYTIzMWEzODY1IgogCi1pbmhlcml0IGZlYXR1cmVzX2NoZWNrIHNldHVwdG9vbHMzIHBrZ2NvbmZpZyBndGstaWNvbi1jYWNoZSBnc2V0dGluZ3MKK2luaGVyaXQgZmVhdHVyZXNfY2hlY2sgc2V0dXB0b29sczMgcGtnY29uZmlnIGd0ay1pY29uLWNhY2hlIGdzZXR0aW5ncyBtaW1lLXhkZwogCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1nbm9tZS1hcHBzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1nbm9tZS9yZWNpcGVzLXN1cHBvcnQvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZ25vbWUtYXBwcy5iYgppbmRleCA1MjJlOWU5Li4wYjkwMGYwIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWdub21lL3JlY2lwZXMtc3VwcG9ydC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1nbm9tZS1hcHBzLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtZ25vbWUvcmVjaXBlcy1zdXBwb3J0L3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdub21lLWFwcHMuYmIKQEAgLTExLDYgKzExLDcgQEAKICAgICBldmluY2UgXAogICAgIGZpbGUtcm9sbGVyIFwKICAgICBnZWRpdCBcCisgICAgZ2hleCBcCiAgICAgZ25vbWUtY2FsY3VsYXRvciBcCiAgICAgZ25vbWUtZm9udC12aWV3ZXIgXAogICAgIGdub21lLXRlcm1pbmFsIFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL2NvbmYvbGF5ZXIuY29uZiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL2NvbmYvbGF5ZXIuY29uZgppbmRleCA5MzIyMGIxLi42MzRlMDg4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9jb25mL2xheWVyLmNvbmYKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvY29uZi9sYXllci5jb25mCkBAIC0xNiw3ICsxNiw3IEBACiBCQkZJTEVfUFJJT1JJVFlfbWV0YS1pbml0cmFtZnMgPSAiOCIKIExBWUVSREVQRU5EU19tZXRhLWluaXRyYW1mcyA9ICJjb3JlIgogCi1MQVlFUlNFUklFU19DT01QQVRfbWV0YS1pbml0cmFtZnMgPSAidGh1ZCB3YXJyaW9yIHpldXMiCitMQVlFUlNFUklFU19DT01QQVRfbWV0YS1pbml0cmFtZnMgPSAidGh1ZCB3YXJyaW9yIHpldXMgZHVuZmVsbCIKIAogU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUyArPSAiIFwKICAgZHJhY3V0LT52aXJ0dWFsL2tlcm5lbCBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9pbWFnZXMvaW5pdHJhbWZzLWRlYnVnLWltYWdlLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3AvaW1hZ2VzL2luaXRyYW1mcy1kZWJ1Zy1pbWFnZS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmU3MzUwYS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9pbWFnZXMvaW5pdHJhbWZzLWRlYnVnLWltYWdlLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotIyBTaW1wbGUgaW5pdHJhbWZzIGltYWdlLiBNb3N0bHkgdXNlZCBmb3IgbGl2ZSBpbWFnZXMuCi1ERVNDUklQVElPTiA9ICJTbWFsbCBpbWFnZSBjYXBhYmxlIG9mIGJvb3RpbmcgYSBkZXZpY2UuIFRoZSBrZXJuZWwgaW5jbHVkZXMgXAotdGhlIE1pbmltYWwgUkFNLWJhc2VkIEluaXRpYWwgUm9vdCBGaWxlc3lzdGVtIChpbml0cmFtZnMpLCB3aGljaCBvbmUgY2FuIHVzZSBcCi10byBjaGVjayB0aGUgaGFyZHdhcmUgZWZmaWNpZW50bHkuIgotCi1QQUNLQUdFX0lOU1RBTEwgPSAiaW5pdHJhbWZzLWRlYnVnIGJ1c3lib3ggYmFzZS1wYXNzd2QgJHtST09URlNfQk9PVFNUUkFQX0lOU1RBTEx9IgotCi0jIERvIG5vdCBwb2xsdXRlIHRoZSBpbml0cmQgaW1hZ2Ugd2l0aCByb290ZnMgZmVhdHVyZXMKLUlNQUdFX0ZFQVRVUkVTID0gIiIKLQotZXhwb3J0IElNQUdFX0JBU0VOQU1FID0gImluaXRyYW1mcy1kZWJ1Zy1pbWFnZSIKLUlNQUdFX0xJTkdVQVMgPSAiIgotCi1MSUNFTlNFID0gIk1JVCIKLQotSU1BR0VfRlNUWVBFUyA9ICIke0lOSVRSQU1GU19GU1RZUEVTfSIKLWluaGVyaXQgY29yZS1pbWFnZQotCi1JTUFHRV9ST09URlNfU0laRSA9ICI4MTkyIgotSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFID0gIjAiCi0KLUJBRF9SRUNPTU1FTkRBVElPTlMgKz0gImJ1c3lib3gtc3lzbG9nIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3Ava2V4ZWNib290L2tleGVjYm9vdF9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3Qva2V4ZWNib290X2dpdC5iYgppbmRleCA0YjIwZTFlLi5lZDNkZWNlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3Qva2V4ZWNib290X2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9rZXhlY2Jvb3Qva2V4ZWNib290X2dpdC5iYgpAQCAtOCw3ICs4LDcgQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9rZXhlY2Jvb3Qva2V4ZWNib290LmdpdCIKIFNSQ19VUklfYXBwZW5kX2xpYmMta2xpYmMgPSAiIGZpbGU6Ly8wMDAxLWtleGVjYm9vdC1Vc2UtbmV3LXJlYm9vdC1BUEktd2l0aC1rbGliYy5wYXRjaCAiCiAKLVNSQ1JFViA9ICI3NDA5YTFlMGFhZWE2MWFmODdjNGVjYTAxNDljZWMxOGE5ZjU4YWI2IgorU1JDUkVWID0gIjVhNWUwNGJlMjA2MTQwMDU5ZjQyYWM3ODZkNDI0ZGExYWZhYTA0YjYiCiBpbmhlcml0IGF1dG90b29scwogCiBFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtdGV4dHVpIC0tZW5hYmxlLWRlbGF5PTIgLS1lbmFibGUtZXZkZXYtcmF0ZT0xMDAwLDI1MCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtY29yZS9pbWFnZXMvaW5pdHJhbWZzLWRlYnVnLWltYWdlLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1jb3JlL2ltYWdlcy9pbml0cmFtZnMtZGVidWctaW1hZ2UuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNkY2QyYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtY29yZS9pbWFnZXMvaW5pdHJhbWZzLWRlYnVnLWltYWdlLmJiCkBAIC0wLDAgKzEsMjAgQEAKKyMgU2ltcGxlIGluaXRyYW1mcyBpbWFnZS4gTW9zdGx5IHVzZWQgZm9yIGxpdmUgaW1hZ2VzLgorREVTQ1JJUFRJT04gPSAiU21hbGwgaW1hZ2UgY2FwYWJsZSBvZiBib290aW5nIGEgZGV2aWNlLiBUaGUga2VybmVsIGluY2x1ZGVzIFwKK3RoZSBNaW5pbWFsIFJBTS1iYXNlZCBJbml0aWFsIFJvb3QgRmlsZXN5c3RlbSAoaW5pdHJhbWZzKSwgd2hpY2ggb25lIGNhbiB1c2UgXAordG8gY2hlY2sgdGhlIGhhcmR3YXJlIGVmZmljaWVudGx5LiIKKworUEFDS0FHRV9JTlNUQUxMID0gImluaXRyYW1mcy1kZWJ1ZyBidXN5Ym94IGJhc2UtcGFzc3dkICR7Uk9PVEZTX0JPT1RTVFJBUF9JTlNUQUxMfSIKKworIyBEbyBub3QgcG9sbHV0ZSB0aGUgaW5pdHJkIGltYWdlIHdpdGggcm9vdGZzIGZlYXR1cmVzCitJTUFHRV9GRUFUVVJFUyA9ICIiCisKK2V4cG9ydCBJTUFHRV9CQVNFTkFNRSA9ICJpbml0cmFtZnMtZGVidWctaW1hZ2UiCitJTUFHRV9MSU5HVUFTID0gIiIKKworSU1BR0VfRlNUWVBFUyA9ICIke0lOSVRSQU1GU19GU1RZUEVTfSIKK2luaGVyaXQgY29yZS1pbWFnZQorCitJTUFHRV9ST09URlNfU0laRSA9ICI4MTkyIgorSU1BR0VfUk9PVEZTX0VYVFJBX1NQQUNFID0gIjAiCisKK0JBRF9SRUNPTU1FTkRBVElPTlMgKz0gImJ1c3lib3gtc3lzbG9nIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3AvaW1hZ2VzL2luaXRyYW1mcy1rZXhlY2Jvb3QtaW1hZ2UuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWNvcmUvaW1hZ2VzL2luaXRyYW1mcy1rZXhlY2Jvb3QtaW1hZ2UuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2ltYWdlcy9pbml0cmFtZnMta2V4ZWNib290LWltYWdlLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWNvcmUvaW1hZ2VzL2luaXRyYW1mcy1rZXhlY2Jvb3QtaW1hZ2UuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2ltYWdlcy9pbml0cmFtZnMta2V4ZWNib290LWtsaWJjLWltYWdlLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1jb3JlL2ltYWdlcy9pbml0cmFtZnMta2V4ZWNib290LWtsaWJjLWltYWdlLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWJzcC9pbWFnZXMvaW5pdHJhbWZzLWtleGVjYm9vdC1rbGliYy1pbWFnZS5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1jb3JlL2ltYWdlcy9pbml0cmFtZnMta2V4ZWNib290LWtsaWJjLWltYWdlLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWNvcmUvaW1hZ2VzL21ldGEtaW5pdHJhbWZzLWltYWdlLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1jb3JlL2ltYWdlcy9tZXRhLWluaXRyYW1mcy1pbWFnZS5iYgppbmRleCA5ZDcwZDZkLi40YzA0MWViIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWNvcmUvaW1hZ2VzL21ldGEtaW5pdHJhbWZzLWltYWdlLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtY29yZS9pbWFnZXMvbWV0YS1pbml0cmFtZnMtaW1hZ2UuYmIKQEAgLTMsNiArMyw0IEBACiBJTUFHRV9JTlNUQUxMID0gInBhY2thZ2Vncm91cC1jb3JlLWJvb3QgXAogICAgICAgICAgICAgICAgICBwYWNrYWdlZ3JvdXAtbWV0YS1pbml0cmFtZnMiCiAKLUxJQ0VOU0UgPSAiTUlUIgotCiBpbmhlcml0IGNvcmUtaW1hZ2UKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1kZWJ1Zy5zaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2ZpbGVzL2luaXQtZGVidWcuc2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtYnNwL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1kZWJ1Zy5zaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvZmlsZXMvaW5pdC1kZWJ1Zy5zaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3AvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZGVidWdfMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWRlYnVnXzEuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1ic3AvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZGVidWdfMS4wLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZGVidWdfMS4wLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS1pbml0cmFtZnMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS1pbml0cmFtZnMuYmIKaW5kZXggYmZlZGU1YS4uMjk1NWJhZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1pbml0cmFtZnMvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtaW5pdHJhbWZzLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLWluaXRyYW1mcy5iYgpAQCAtNiwzMSArNiwxMyBAQAogUEFDS0FHRVMgPSAnIFwKICAgICBwYWNrYWdlZ3JvdXAtbWV0YS1pbml0cmFtZnMgXAogICAgIHBhY2thZ2Vncm91cC1tZXRhLWluaXRyYW1mcy1kZXZ0b29scyBcCi0gICAgcGFja2FnZWdyb3VwLW1ldGEtaW5pdHJhbWZzLWtlcm5lbCBcCiAnCiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLWluaXRyYW1mcyA9ICJcCiAgICAgcGFja2FnZWdyb3VwLW1ldGEtaW5pdHJhbWZzLWRldnRvb2xzIFwKLSAgICBwYWNrYWdlZ3JvdXAtbWV0YS1pbml0cmFtZnMta2VybmVsIFwKICIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtaW5pdHJhbWZzLWRldnRvb2xzID0gIlwKLSAgICBsaWJrbGliYyAgZHJhY3V0IFwKLSAgICBrbGliYy11dGlscy1jYXQga2xpYmMtdXRpbHMtbG9zZXR1cCBrbGliYy11dGlscy1yZWFkbGluayBrbGliYy11dGlscy1jaHJvb3QgXAotICAgIGtsaWJjLXV0aWxzLWxzIGtsaWJjLXV0aWxzLXJlYm9vdCBrbGliYy11dGlscy1jcGlvIGtsaWJjLXV0aWxzLW1pbmlwcyBcCi0gICAga2xpYmMtdXRpbHMtcmVzdW1lIGtsaWJjLXV0aWxzLWRkIGtsaWJjLXV0aWxzLW1rZGlyIGtsaWJjLXV0aWxzLXJ1bi1pbml0IFwKLSAgICBrbGliYy11dGlscy1kbWVzZyBrbGliYy11dGlscy1ta2ZpZm8ga2xpYmMtdXRpbHMtc2guc2hhcmVkIGtsaWJjLXV0aWxzLWZhbHNlIFwKLSAgICBrbGliYy11dGlscy1ta25vZCBrbGliYy11dGlscy1zbGVlcCBrbGliYy11dGlscy1mc3R5cGUga2xpYmMtdXRpbHMtbW91bnQgXAotICAgIGtsaWJjLXV0aWxzLXN5bmMga2xpYmMtdXRpbHMtaGFsdCBrbGliYy11dGlscy1tdiBrbGliYy11dGlscy10cnVlIGtsaWJjLXV0aWxzLWlwY29uZmlnIFwKLSAgICBrbGliYy11dGlscy1uZnNtb3VudCBrbGliYy11dGlscy11bW91bnQga2xpYmMtdXRpbHMta2lsbCBrbGliYy11dGlscy1udWtlIGtsaWJjLXV0aWxzLXVuYW1lIFwKLSAgICBtdGRpbmZvLWtsaWJjIHViaWF0dGFjaC1rbGliYyB1YmlibG9jay1rbGliYyB1YmljcmMzMi1rbGliYyB1YmlkZXRhY2gta2xpYmMgXAotICAgIHViaWZvcm1hdC1rbGliYyB1Ymlta3ZvbC1rbGliYyB1YmluZm8ta2xpYmMgdWJpbml6ZS1rbGliYyB1YmlyZW5hbWUta2xpYmMgXAotICAgIHViaXJtdm9sLWtsaWJjIHViaXJzdm9sLWtsaWJjIHViaXVwZGF0ZXZvbC1rbGliYyBcCisgICAgZHJhY3V0IFwKICAgICAke0BiYi51dGlscy5jb250YWluc19hbnkoIlRSQU5TTEFURURfVEFSR0VUX0FSQ0giLCAiaTU4NiB4ODYtNjQiLCAiZ3J1YmJ5IiwgIiIsIGQpfSBcCiAgICAgIgotCi1SREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1pbml0cmFtZnMta2VybmVsID0gIlwKLSAgICBrZXhlYy1rbGliYyB2bWNvcmUtZG1lc2cta2xpYmMgXAotICAgICIKLQotRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLWluaXRyYW1mcy9yZWNpcGVzLWRldnRvb2xzL2tsaWJjL2tsaWJjLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMuaW5jCmluZGV4IDI4OTI4OGQuLjU0Y2QzYzIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtaW5pdHJhbWZzL3JlY2lwZXMtZGV2dG9vbHMva2xpYmMva2xpYmMuaW5jCkBAIC03Nyw0ICs3Nyw1IEBACiBLTElCQ19BUkNIX3g4Ni02NCA9ICJ4ODZfNjQiCiBLTElCQ19BUkNIX3Bvd2VycGMgPSAicHBjIgogS0xJQkNfQVJDSF9wb3dlcnBjNjQgPSAicHBjNjQiCitLTElCQ19BUkNIX3Bvd2VycGM2NGxlID0gInBwYzY0IgogVEhJU19MSUJLTElCQyA9ICJsaWJrbGliYyAoPSAke1BWfS0ke1BSfSkiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvUkVBRE1FIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL1JFQURNRQppbmRleCAyMGY0ZmI4Li4zYzRiMWFmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvUkVBRE1FCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9SRUFETUUKQEAgLTE2LDQgKzE2LDQgQEAKIAogWW91IGFyZSBlbmNvdXJhZ2VkIHRvIGZvcmsgdGhlIG1pcnJvciBvbiBnaXRodWIgaHR0cHM6Ly9naXRodWIuY29tL29wZW5lbWJlZGRlZC9tZXRhLW9lLyB0byBzaGFyZSB5b3VyIHBhdGNoZXMsIHRoaXMgaXMgcHJlZmVycmVkIGZvciBwYXRjaCBzZXRzIGNvbnNpc3Rpbmcgb2YgbW9yZSB0aGFuIG9uZSBwYXRjaC4gT3RoZXIgc2VydmljZXMgbGlrZSBnaXRvcmlvdXMsIHJlcG8ub3IuY3ogb3Igc2VsZiBob3N0ZWQgc2V0dXBzIGFyZSBvZiBjb3Vyc2UgYWNjZXB0ZWQgYXMgd2VsbCwgJ2dpdCBmZXRjaCA8cmVtb3RlPicgd29ya3MgdGhlIHNhbWUgb24gYWxsIG9mIHRoZW0uIFdlIHJlY29tbWVuZCBnaXRodWIgYmVjYXVzZSBpdCBpcyBmcmVlLCBlYXN5IHRvIHVzZSwgaGFzIGJlZW4gcHJvdmVuIHRvIGJlIHJlbGlhYmxlIGFuZCBoYXMgYSByZWFsbHkgZ29vZCB3ZWIgR1VJLgogCi1MYXllciBtYWludGFpbmVyOiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ29vZ2xlbWFpbC5jb20+CitMYXllciBtYWludGFpbmVyOiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL2NvbmYvbGF5ZXIuY29uZiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9jb25mL2xheWVyLmNvbmYKaW5kZXggNzRkZDRhMS4uMmQ1MmZiOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL2NvbmYvbGF5ZXIuY29uZgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvY29uZi9sYXllci5jb25mCkBAIC0zMSw0ICszMSw0IEBACiAKIExBWUVSREVQRU5EU19tdWx0aW1lZGlhLWxheWVyID0gImNvcmUgbWV0YS1weXRob24iCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF9tdWx0aW1lZGlhLWxheWVyID0gInRodWQgd2FycmlvciB6ZXVzIgorTEFZRVJTRVJJRVNfQ09NUEFUX211bHRpbWVkaWEtbGF5ZXIgPSAidGh1ZCB3YXJyaW9yIHpldXMgZHVuZmVsbCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9saWNlbnNlcy9GcmF1bmhvZmVyX0ZES19BQUNfQ29kZWNfTGlicmFyeV9mb3JfQW5kcm9pZCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9saWNlbnNlcy9GcmF1bmhvZmVyX0ZES19BQUNfQ29kZWNfTGlicmFyeV9mb3JfQW5kcm9pZApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNWIzMmJkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL2xpY2Vuc2VzL0ZyYXVuaG9mZXJfRkRLX0FBQ19Db2RlY19MaWJyYXJ5X2Zvcl9BbmRyb2lkCkBAIC0wLDAgKzEsOTIgQEAKK1NvZnR3YXJlIExpY2Vuc2UgZm9yIFRoZSBGcmF1bmhvZmVyIEZESyBBQUMgQ29kZWMgTGlicmFyeSBmb3IgQW5kcm9pZAorCivCqSBDb3B5cmlnaHQgIDE5OTUgLSAyMDE4IEZyYXVuaG9mZXItR2VzZWxsc2NoYWZ0IHp1ciBGw7ZyZGVydW5nIGRlciBhbmdld2FuZHRlbgorRm9yc2NodW5nIGUuVi4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKworIDEuICAgIElOVFJPRFVDVElPTgorVGhlIEZyYXVuaG9mZXIgRkRLIEFBQyBDb2RlYyBMaWJyYXJ5IGZvciBBbmRyb2lkICgiRkRLIEFBQyBDb2RlYyIpIGlzIHNvZnR3YXJlCit0aGF0IGltcGxlbWVudHMgdGhlIE1QRUcgQWR2YW5jZWQgQXVkaW8gQ29kaW5nICgiQUFDIikgZW5jb2RpbmcgYW5kIGRlY29kaW5nCitzY2hlbWUgZm9yIGRpZ2l0YWwgYXVkaW8uIFRoaXMgRkRLIEFBQyBDb2RlYyBzb2Z0d2FyZSBpcyBpbnRlbmRlZCB0byBiZSB1c2VkIG9uCithIHdpZGUgdmFyaWV0eSBvZiBBbmRyb2lkIGRldmljZXMuCisKK0FBQydzIEhFLUFBQyBhbmQgSEUtQUFDIHYyIHZlcnNpb25zIGFyZSByZWdhcmRlZCBhcyB0b2RheSdzIG1vc3QgZWZmaWNpZW50CitnZW5lcmFsIHBlcmNlcHR1YWwgYXVkaW8gY29kZWNzLiBBQUMtRUxEIGlzIGNvbnNpZGVyZWQgdGhlIGJlc3QtcGVyZm9ybWluZworZnVsbC1iYW5kd2lkdGggY29tbXVuaWNhdGlvbnMgY29kZWMgYnkgaW5kZXBlbmRlbnQgc3R1ZGllcyBhbmQgaXMgd2lkZWx5CitkZXBsb3llZC4gQUFDIGhhcyBiZWVuIHN0YW5kYXJkaXplZCBieSBJU08gYW5kIElFQyBhcyBwYXJ0IG9mIHRoZSBNUEVHCitzcGVjaWZpY2F0aW9ucy4KKworUGF0ZW50IGxpY2Vuc2VzIGZvciBuZWNlc3NhcnkgcGF0ZW50IGNsYWltcyBmb3IgdGhlIEZESyBBQUMgQ29kZWMgKGluY2x1ZGluZwordGhvc2Ugb2YgRnJhdW5ob2ZlcikgbWF5IGJlIG9idGFpbmVkIHRocm91Z2ggVmlhIExpY2Vuc2luZworKHd3dy52aWFsaWNlbnNpbmcuY29tKSBvciB0aHJvdWdoIHRoZSByZXNwZWN0aXZlIHBhdGVudCBvd25lcnMgaW5kaXZpZHVhbGx5IGZvcgordGhlIHB1cnBvc2Ugb2YgZW5jb2Rpbmcgb3IgZGVjb2RpbmcgYml0IHN0cmVhbXMgaW4gcHJvZHVjdHMgdGhhdCBhcmUgY29tcGxpYW50Cit3aXRoIHRoZSBJU08vSUVDIE1QRUcgYXVkaW8gc3RhbmRhcmRzLiBQbGVhc2Ugbm90ZSB0aGF0IG1vc3QgbWFudWZhY3R1cmVycyBvZgorQW5kcm9pZCBkZXZpY2VzIGFscmVhZHkgbGljZW5zZSB0aGVzZSBwYXRlbnQgY2xhaW1zIHRocm91Z2ggVmlhIExpY2Vuc2luZyBvcgorZGlyZWN0bHkgZnJvbSB0aGUgcGF0ZW50IG93bmVycywgYW5kIHRoZXJlZm9yZSBGREsgQUFDIENvZGVjIHNvZnR3YXJlIG1heQorYWxyZWFkeSBiZSBjb3ZlcmVkIHVuZGVyIHRob3NlIHBhdGVudCBsaWNlbnNlcyB3aGVuIGl0IGlzIHVzZWQgZm9yIHRob3NlCitsaWNlbnNlZCBwdXJwb3NlcyBvbmx5LgorCitDb21tZXJjaWFsbHktbGljZW5zZWQgQUFDIHNvZnR3YXJlIGxpYnJhcmllcywgaW5jbHVkaW5nIGZsb2F0aW5nLXBvaW50IHZlcnNpb25zCit3aXRoIGVuaGFuY2VkIHNvdW5kIHF1YWxpdHksIGFyZSBhbHNvIGF2YWlsYWJsZSBmcm9tIEZyYXVuaG9mZXIuIFVzZXJzIGFyZQorZW5jb3VyYWdlZCB0byBjaGVjayB0aGUgRnJhdW5ob2ZlciB3ZWJzaXRlIGZvciBhZGRpdGlvbmFsIGFwcGxpY2F0aW9ucworaW5mb3JtYXRpb24gYW5kIGRvY3VtZW50YXRpb24uCisKKzIuICAgIENPUFlSSUdIVCBMSUNFTlNFCisKK1JlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCithcmUgcGVybWl0dGVkIHdpdGhvdXQgcGF5bWVudCBvZiBjb3B5cmlnaHQgbGljZW5zZSBmZWVzIHByb3ZpZGVkIHRoYXQgeW91CitzYXRpc2Z5IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9uczoKKworWW91IG11c3QgcmV0YWluIHRoZSBjb21wbGV0ZSB0ZXh0IG9mIHRoaXMgc29mdHdhcmUgbGljZW5zZSBpbiByZWRpc3RyaWJ1dGlvbnMgb2YKK3RoZSBGREsgQUFDIENvZGVjIG9yIHlvdXIgbW9kaWZpY2F0aW9ucyB0aGVyZXRvIGluIHNvdXJjZSBjb2RlIGZvcm0uCisKK1lvdSBtdXN0IHJldGFpbiB0aGUgY29tcGxldGUgdGV4dCBvZiB0aGlzIHNvZnR3YXJlIGxpY2Vuc2UgaW4gdGhlIGRvY3VtZW50YXRpb24KK2FuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCByZWRpc3RyaWJ1dGlvbnMgb2YgdGhlIEZESyBBQUMgQ29kZWMgb3IKK3lvdXIgbW9kaWZpY2F0aW9ucyB0aGVyZXRvIGluIGJpbmFyeSBmb3JtLiBZb3UgbXVzdCBtYWtlIGF2YWlsYWJsZSBmcmVlIG9mCitjaGFyZ2UgY29waWVzIG9mIHRoZSBjb21wbGV0ZSBzb3VyY2UgY29kZSBvZiB0aGUgRkRLIEFBQyBDb2RlYyBhbmQgeW91cgorbW9kaWZpY2F0aW9ucyB0aGVyZXRvIHRvIHJlY2lwaWVudHMgb2YgY29waWVzIGluIGJpbmFyeSBmb3JtLgorCitUaGUgbmFtZSBvZiBGcmF1bmhvZmVyIG1heSBub3QgYmUgdXNlZCB0byBlbmRvcnNlIG9yIHByb21vdGUgcHJvZHVjdHMgZGVyaXZlZAorZnJvbSB0aGlzIGxpYnJhcnkgd2l0aG91dCBwcmlvciB3cml0dGVuIHBlcm1pc3Npb24uCisKK1lvdSBtYXkgbm90IGNoYXJnZSBjb3B5cmlnaHQgbGljZW5zZSBmZWVzIGZvciBhbnlvbmUgdG8gdXNlLCBjb3B5IG9yIGRpc3RyaWJ1dGUKK3RoZSBGREsgQUFDIENvZGVjIHNvZnR3YXJlIG9yIHlvdXIgbW9kaWZpY2F0aW9ucyB0aGVyZXRvLgorCitZb3VyIG1vZGlmaWVkIHZlcnNpb25zIG9mIHRoZSBGREsgQUFDIENvZGVjIG11c3QgY2FycnkgcHJvbWluZW50IG5vdGljZXMgc3RhdGluZwordGhhdCB5b3UgY2hhbmdlZCB0aGUgc29mdHdhcmUgYW5kIHRoZSBkYXRlIG9mIGFueSBjaGFuZ2UuIEZvciBtb2RpZmllZCB2ZXJzaW9ucworb2YgdGhlIEZESyBBQUMgQ29kZWMsIHRoZSB0ZXJtICJGcmF1bmhvZmVyIEZESyBBQUMgQ29kZWMgTGlicmFyeSBmb3IgQW5kcm9pZCIKK211c3QgYmUgcmVwbGFjZWQgYnkgdGhlIHRlcm0gIlRoaXJkLVBhcnR5IE1vZGlmaWVkIFZlcnNpb24gb2YgdGhlIEZyYXVuaG9mZXIgRkRLCitBQUMgQ29kZWMgTGlicmFyeSBmb3IgQW5kcm9pZC4iCisKKzMuICAgIE5PIFBBVEVOVCBMSUNFTlNFCisKK05PIEVYUFJFU1MgT1IgSU1QTElFRCBMSUNFTlNFUyBUTyBBTlkgUEFURU5UIENMQUlNUywgaW5jbHVkaW5nIHdpdGhvdXQKK2xpbWl0YXRpb24gdGhlIHBhdGVudHMgb2YgRnJhdW5ob2ZlciwgQVJFIEdSQU5URUQgQlkgVEhJUyBTT0ZUV0FSRSBMSUNFTlNFLgorRnJhdW5ob2ZlciBwcm92aWRlcyBubyB3YXJyYW50eSBvZiBwYXRlbnQgbm9uLWluZnJpbmdlbWVudCB3aXRoIHJlc3BlY3QgdG8gdGhpcworc29mdHdhcmUuCisKK1lvdSBtYXkgdXNlIHRoaXMgRkRLIEFBQyBDb2RlYyBzb2Z0d2FyZSBvciBtb2RpZmljYXRpb25zIHRoZXJldG8gb25seSBmb3IKK3B1cnBvc2VzIHRoYXQgYXJlIGF1dGhvcml6ZWQgYnkgYXBwcm9wcmlhdGUgcGF0ZW50IGxpY2Vuc2VzLgorCis0LiAgICBESVNDTEFJTUVSCisKK1RoaXMgRkRLIEFBQyBDb2RlYyBzb2Z0d2FyZSBpcyBwcm92aWRlZCBieSBGcmF1bmhvZmVyIG9uIGJlaGFsZiBvZiB0aGUgY29weXJpZ2h0Citob2xkZXJzIGFuZCBjb250cmlidXRvcnMgIkFTIElTIiBhbmQgV0lUSE9VVCBBTlkgRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsCitpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHRoZSBpbXBsaWVkIHdhcnJhbnRpZXMgb2YgbWVyY2hhbnRhYmlsaXR5IGFuZAorZml0bmVzcyBmb3IgYSBwYXJ0aWN1bGFyIHB1cnBvc2UuIElOIE5PIEVWRU5UIFNIQUxMIFRIRSBDT1BZUklHSFQgSE9MREVSIE9SCitDT05UUklCVVRPUlMgQkUgTElBQkxFIGZvciBhbnkgZGlyZWN0LCBpbmRpcmVjdCwgaW5jaWRlbnRhbCwgc3BlY2lhbCwgZXhlbXBsYXJ5LAorb3IgY29uc2VxdWVudGlhbCBkYW1hZ2VzLCBpbmNsdWRpbmcgYnV0IG5vdCBsaW1pdGVkIHRvIHByb2N1cmVtZW50IG9mIHN1YnN0aXR1dGUKK2dvb2RzIG9yIHNlcnZpY2VzOyBsb3NzIG9mIHVzZSwgZGF0YSwgb3IgcHJvZml0cywgb3IgYnVzaW5lc3MgaW50ZXJydXB0aW9uLAoraG93ZXZlciBjYXVzZWQgYW5kIG9uIGFueSB0aGVvcnkgb2YgbGlhYmlsaXR5LCB3aGV0aGVyIGluIGNvbnRyYWN0LCBzdHJpY3QKK2xpYWJpbGl0eSwgb3IgdG9ydCAoaW5jbHVkaW5nIG5lZ2xpZ2VuY2UpLCBhcmlzaW5nIGluIGFueSB3YXkgb3V0IG9mIHRoZSB1c2Ugb2YKK3RoaXMgc29mdHdhcmUsIGV2ZW4gaWYgYWR2aXNlZCBvZiB0aGUgcG9zc2liaWxpdHkgb2Ygc3VjaCBkYW1hZ2UuCisKKzUuICAgIENPTlRBQ1QgSU5GT1JNQVRJT04KKworRnJhdW5ob2ZlciBJbnN0aXR1dGUgZm9yIEludGVncmF0ZWQgQ2lyY3VpdHMgSUlTCitBdHRlbnRpb246IEF1ZGlvIGFuZCBNdWx0aW1lZGlhIERlcGFydG1lbnRzIC0gRkRLIEFBQyBMTAorQW0gV29sZnNtYW50ZWwgMzMKKzkxMDU4IEVybGFuZ2VuLCBHZXJtYW55CisKK3d3dy5paXMuZnJhdW5ob2Zlci5kZS9hbW0KK2FtbS1pbmZvQGlpcy5mcmF1bmhvZmVyLmRlCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9nc3NkcF8xLjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9nc3NkcF8xLjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjA4OGVmMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3NzZHBfMS4wLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1TVU1NQVJZID0gIlJlc291cmNlIGRpc2NvdmVyeSBhbmQgYW5ub3VuY2VtZW50IG92ZXIgU1NEUCIKLURFU0NSSVBUSU9OID0gIkdTU0RQIGltcGxlbWVudHMgcmVzb3VyY2UgZGlzY292ZXJ5IGFuZCBhbm5vdW5jZW1lbnQgb3ZlciBTU0RQIChTaW1wZSBTZXJ2aWNlIERpc2NvdmVyeSBQcm90b2NvbCkuIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyIKLURFUEVORFMgPSAiZ2xpYi0yLjAgbGlic291cC0yLjQiCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8xLjAvJHtCUE59LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiMzBjOWE0MDY4NTNjNmEzYTAxMmQxNTFkNmU3YWQyYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhMWUxN2MwOWM3ZTFhMTg1YjBiZDg0ZmQ2ZmYzNzk0MDQ1YTNjZDcyOWI3MDdjMjNlNDIyZmY2NjQ3MTUzNWRjIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHZhbGEgZ3RrLWRvYwotCi0jIENvcHkgdmFwaWdlbi5tNCBzbyB0aGF0IGl0IGRvZXNuJ3QgZ2V0IHJlbW92ZWQgYnkgdmFsYSBjbGFzcwotIyAobm9ybWFsbHkgdGhpcyB3b3VsZCBiZSB0aGUgcmlnaHQgdGhpbmcgdG8gZG8sIGJ1dCBpbiBnc3NkcCB0aGUgdmFwaWdlbi5tNCBoYXMgb25seSBhIGN1c3RvbSBtYWNybykKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgICAgICBjcCAtZiAke1N9L200L3ZhcGlnZW4ubTQgJHtTfS9tNC92YXBpZ2VuLWN1c3RvbS5tNCB8fCB0cnVlCi19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdndGsnLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1tndGtdID0gIi0td2l0aC1ndGssLS13aXRob3V0LWd0ayxndGsrMyIKLQotUEFDS0FHRVMgPSsgImdzc2RwLXRvb2xzIgotCi1GSUxFU19nc3NkcC10b29scyA9ICIke2JpbmRpcn0vZ3NzZHAqICR7ZGF0YWRpcn0vZ3NzZHAvKi5nbGFkZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9nc3NkcF8xLjIuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9nc3NkcF8xLjIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGFkZGQyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2dzc2RwXzEuMi4yLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiUmVzb3VyY2UgZGlzY292ZXJ5IGFuZCBhbm5vdW5jZW1lbnQgb3ZlciBTU0RQIgorREVTQ1JJUFRJT04gPSAiR1NTRFAgaW1wbGVtZW50cyByZXNvdXJjZSBkaXNjb3ZlcnkgYW5kIGFubm91bmNlbWVudCBvdmVyIFNTRFAgKFNpbXBlIFNlcnZpY2UgRGlzY292ZXJ5IFByb3RvY29sKS4iCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IgorREVQRU5EUyA9ICJnbGliLTIuMCBsaWJzb3VwLTIuNCIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LzEuMi8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImYwMGE0NzBlYmNiYTk2ZjM0ZGVmOGY4M2FjNTg5MWVkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNhYmI5ZTNiNDU2YjgzNTRhNTVlMjNlYjAyMDc1NDVkOTc0NjQzY2RhNmQ2MjM1MjM0NzBlYmJjNDE4OGIwYTQiCisKK0dUS0RPQ19NRVNPTl9PUFRJT04gPSAnZ3RrX2RvYycKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHZhbGEgZ3RrLWRvYworCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnc25pZmZlcicsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW3NuaWZmZXJdID0gIi1Ec25pZmZlcj10cnVlLC1Ec25pZmZlcj1mYWxzZSxndGsrMywiCisKK1BBQ0tBR0VTID0rICJnc3NkcC10b29scyIKKworRklMRVNfZ3NzZHAtdG9vbHMgPSAiJHtiaW5kaXJ9L2dzc2RwKiAke2RhdGFkaXJ9L2dzc2RwLyouZ2xhZGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtYXZfMC4xMi4xMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1hdl8wLjEyLjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZmQwMjI3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1hdl8wLjEyLjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIGd1cG5wLWF2LmluYwotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vMC4xMi8ke0JQTn0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjIxNWY2MjY1MDhkNzZiNzY3ZjVkYTdjOWI5MmU4N2Q4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgwMzhlZjg0ZGRkYmU3YWQ5MWMyMDViZjkxZGRkZjY4NGYwNzJkZjg2MjNmMzliNjU1NWE2YmI3MjgzN2I4NWEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJndXBucC1hdi9ndXBucC1hdi5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjI7bWQ1PTJiNDdiN2I1Zjc5OWQyZWJhYmU2MmI4OTVlODQ4ODIwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLWF2XzAuMTIuMTEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtYXZfMC4xMi4xMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODgxNjU2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLWF2XzAuMTIuMTEuYmIKQEAgLTAsMCArMSw3IEBACityZXF1aXJlIGd1cG5wLWF2LmluYworCitTUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vMC4xMi8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImYwOWU5OWFlMjAyNzFiMGE4Y2FkY2U4MDYwOThhZThiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY4OWRjZjE0OTJhYjg5OTFkYWVhMjkxMzY1YTMyNTQ4YTc3ZDFhMjI5NGQ4NWIzMzYyMmI1NWNjYTljZTZmZGMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJndXBucC1hdi9ndXBucC1hdi5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjI7bWQ1PTJiNDdiN2I1Zjc5OWQyZWJhYmU2MmI4OTVlODQ4ODIwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2ZpbGVzL21vdmVfdmFwaWdlbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1kbG5hL21vdmVfdmFwaWdlbi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2ZpbGVzL21vdmVfdmFwaWdlbi5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLWRsbmEvbW92ZV92YXBpZ2VuLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtaWdkLzAwMDEtU3d0aWNoLXRvLW5ldy1HVVBuUC1BUEkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtaWdkLzAwMDEtU3d0aWNoLXRvLW5ldy1HVVBuUC1BUEkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY1YTZkOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1pZ2QvMDAwMS1Td3RpY2gtdG8tbmV3LUdVUG5QLUFQSS5wYXRjaApAQCAtMCwwICsxLDEwMSBAQAorRnJvbSA2MzUzMTU1OGExNmFjMjMzNGE1OWY2MjdiMmZjYTU1NzZkY2ZiYjJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVucyBHZW9yZyA8bWFpbEBqZW5zZ2Uub3JnPgorRGF0ZTogU2F0LCAxIERlYyAyMDE4IDIxOjMzOjIxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFN3dGljaCB0byBuZXcgR1VQblAgQVBJCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ3VwbnAtaWdkL2NvbW1pdC82MzUzMTU1OGExNmFjMjMzNGE1OWY2MjdiMmZjYTU1NzZkY2ZiYjJlXQorLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBndXBucC1pZ2QtMS4wLXVuaW5zdGFsbGVkLnBjLmluIHwgMiArLQorIGd1cG5wLWlnZC0xLjAucGMuaW4gICAgICAgICAgICAgfCAyICstCisgbGliZ3VwbnAtaWdkL01ha2VmaWxlLmFtICAgICAgICB8IDIgKy0KKyB0ZXN0cy9ndGVzdC9ndXBucC1zaW1wbGUtaWdkLmMgIHwgNiArKysrLS0KKyA1IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggZjAzOTIxZi4uYWE3ZjBjYSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMTEsNyArMTEsNyBAQCBBQ19TVERDX0hFQURFUlMKKyBBQ19QUk9HX0xJQlRPT0wKKyBBQ19GVU5DX01NQVAKKyAKKy1QS0dfQ0hFQ0tfTU9EVUxFUyhMSUJHVVBOUCwgZ2xpYi0yLjAgPj0gMi4yNiBnb2JqZWN0LTIuMCA+PSAyLjI2IGdzc2RwLTEuMCBndXBucC0xLjAgPj0gMC4xOCBndGhyZWFkLTIuMCkKKytQS0dfQ0hFQ0tfTU9EVUxFUyhMSUJHVVBOUCwgZ2xpYi0yLjAgPj0gMi4yNiBnb2JqZWN0LTIuMCA+PSAyLjI2IGdzc2RwLTEuMiBndXBucC0xLjIgPj0gMC4xOCBndGhyZWFkLTIuMCkKKyAKKyAjIGdsaWItZ2VubWFyc2hhbAorIEdMSUJfR0VOTUFSU0hBTD1gcGtnLWNvbmZpZyAtLXZhcmlhYmxlPWdsaWJfZ2VubWFyc2hhbCBnbGliLTIuMGAKK2RpZmYgLS1naXQgYS9ndXBucC1pZ2QtMS4wLXVuaW5zdGFsbGVkLnBjLmluIGIvZ3VwbnAtaWdkLTEuMC11bmluc3RhbGxlZC5wYy5pbgoraW5kZXggNDgzOTU2Zi4uNmRiM2JlZSAxMDA2NDQKKy0tLSBhL2d1cG5wLWlnZC0xLjAtdW5pbnN0YWxsZWQucGMuaW4KKysrKyBiL2d1cG5wLWlnZC0xLjAtdW5pbnN0YWxsZWQucGMuaW4KK0BAIC01LDcgKzUsNyBAQCBpbmNsdWRlZGlyPSR7cGNmaWxlZGlyfS8KKyAKKyBOYW1lOiBndXBucC1pZ2QtMS4wCisgRGVzY3JpcHRpb246IEdVUG5QIFNpbXBsZSBJR0QgbGlicmFyeQorLVJlcXVpcmVzOiBndXBucC0xLjAKKytSZXF1aXJlczogZ3VwbnAtMS4yCisgVmVyc2lvbjogQFZFUlNJT05ACisgTGliczogJHtsaWJkaXJ9L2xpYmd1cG5wLWF2LTEuMC5sYQorIENmbGFnczogLUkke2luY2x1ZGVkaXJ9CitkaWZmIC0tZ2l0IGEvZ3VwbnAtaWdkLTEuMC5wYy5pbiBiL2d1cG5wLWlnZC0xLjAucGMuaW4KK2luZGV4IDY2NjBkNjMuLmFhNzRlZDMgMTAwNjQ0CistLS0gYS9ndXBucC1pZ2QtMS4wLnBjLmluCisrKysgYi9ndXBucC1pZ2QtMS4wLnBjLmluCitAQCAtNSw3ICs1LDcgQEAgaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKKyAKKyBOYW1lOiBndXBucC1pZ2QtMS4wCisgRGVzY3JpcHRpb246IEdVUG5QIFNpbXBsZSBJR0QgbGlicmFyeQorLVJlcXVpcmVzOiBndXBucC0xLjAKKytSZXF1aXJlczogZ3VwbnAtMS4yCisgVmVyc2lvbjogQFZFUlNJT05ACisgTGliczogLUwke2xpYmRpcn0gLWxndXBucC1pZ2QtMS4wCisgQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0vZ3VwbnAtaWdkLTEuMAorZGlmZiAtLWdpdCBhL2xpYmd1cG5wLWlnZC9NYWtlZmlsZS5hbSBiL2xpYmd1cG5wLWlnZC9NYWtlZmlsZS5hbQoraW5kZXggZmUwMjBiNS4uZTEwZDg1NyAxMDA2NDQKKy0tLSBhL2xpYmd1cG5wLWlnZC9NYWtlZmlsZS5hbQorKysrIGIvbGliZ3VwbnAtaWdkL01ha2VmaWxlLmFtCitAQCAtNjAsNyArNjAsNyBAQCBHVVBuUElnZF8xXzBfZ2lyX1ZFUlNJT04gPSAxLjAKKyBHVVBuUElnZF8xXzBfZ2lyX0xJQlMgPSAkKGxpYl9MVExJQlJBUklFUykKKyBHVVBuUElnZF8xXzBfZ2lyX0ZJTEVTID0gJChsaWJndXBucF9pZ2RfMV8wX2xhX1NPVVJDRVMpICQobGliZ3VwbnBfaWdkX2luY19IRUFERVJTKQorIEdVUG5QSWdkXzFfMF9naXJfSU5DTFVERVM9R09iamVjdC0yLjAKKy1HVVBuUElnZF8xXzBfZ2lyX1BBQ0tBR0VTPWd1cG5wLTEuMAorK0dVUG5QSWdkXzFfMF9naXJfUEFDS0FHRVM9Z3VwbnAtMS4yCisgR1VQblBJZ2RfMV8wX2dpcl9DRkxBR1M9LUkkKHNyY2RpcikgLUkkKHRvcF9zcmNkaXIpCisgCisgaWYgSEFWRV9JTlRST1NQRUNUSU9OCitkaWZmIC0tZ2l0IGEvdGVzdHMvZ3Rlc3QvZ3VwbnAtc2ltcGxlLWlnZC5jIGIvdGVzdHMvZ3Rlc3QvZ3VwbnAtc2ltcGxlLWlnZC5jCitpbmRleCA5YjMyYjJhLi5kMDUxZDEzIDEwMDY0NAorLS0tIGEvdGVzdHMvZ3Rlc3QvZ3VwbnAtc2ltcGxlLWlnZC5jCisrKysgYi90ZXN0cy9ndGVzdC9ndXBucC1zaW1wbGUtaWdkLmMKK0BAIC0yNzMsMTMgKzI3MywxNCBAQCBydW5fZ3VwbnBfc2ltcGxlX2lnZF90ZXN0IChHTWFpbkNvbnRleHQgKm1haW5jdHgsIEdVUG5QU2ltcGxlSWdkICppZ2QsCisgICBHVVBuUERldmljZUluZm8gKnN1YmRldjE7CisgICBHVVBuUERldmljZUluZm8gKnN1YmRldjI7CisgICBjb25zdCBnY2hhciAqeG1sX3BhdGggPSAiLiI7CisrICBHRXJyb3IgKmVycm9yID0gTlVMTDsKKyAKKyAgIGdfc2lnbmFsX2Nvbm5lY3QgKGlnZCwgImNvbnRleHQtYXZhaWxhYmxlIiwKKyAgICAgICAgIEdfQ0FMTEJBQ0sgKGlnbm9yZV9ub25fbG9jYWxob3N0KSwgTlVMTCk7CisgCisgICBpZiAobWFpbmN0eCkKKyAgICAgZ19tYWluX2NvbnRleHRfcHVzaF90aHJlYWRfZGVmYXVsdCAobWFpbmN0eCk7CistICBjb250ZXh0ID0gZ3VwbnBfY29udGV4dF9uZXcgKE5VTEwsICJsbyIsIDAsIE5VTEwpOworKyAgY29udGV4dCA9IGd1cG5wX2NvbnRleHRfbmV3ICgibG8iLCAwLCBOVUxMKTsKKyAgIGdfYXNzZXJ0IChjb250ZXh0KTsKKyAKKyAgIGlmIChnX2dldGVudiAoIlhNTF9QQVRIIikpCitAQCAtMjkzLDggKzI5NCw5IEBAIHJ1bl9ndXBucF9zaW1wbGVfaWdkX3Rlc3QgKEdNYWluQ29udGV4dCAqbWFpbmN0eCwgR1VQblBTaW1wbGVJZ2QgKmlnZCwKKyAgIGd1cG5wX2NvbnRleHRfaG9zdF9wYXRoIChjb250ZXh0LCAiV0FOUFBQQ29ubmVjdGlvbi54bWwiLCAiL1dBTlBQUENvbm5lY3Rpb24ueG1sIik7CisgICAqLworIAorLSAgZGV2ID0gZ3VwbnBfcm9vdF9kZXZpY2VfbmV3IChjb250ZXh0LCAiSW50ZXJuZXRHYXRld2F5RGV2aWNlLnhtbCIsIHhtbF9wYXRoKTsKKysgIGRldiA9IGd1cG5wX3Jvb3RfZGV2aWNlX25ldyAoY29udGV4dCwgIkludGVybmV0R2F0ZXdheURldmljZS54bWwiLCB4bWxfcGF0aCwgJmVycm9yKTsKKyAgIGdfYXNzZXJ0IChkZXYpOworKyAgZ19hc3NlcnQgKGVycm9yID09IE5VTEwpOworIAorICAgc3ViZGV2MSA9IGd1cG5wX2RldmljZV9pbmZvX2dldF9kZXZpY2UgKEdVUE5QX0RFVklDRV9JTkZPIChkZXYpLAorICAgICAgICJ1cm46c2NoZW1hcy11cG5wLW9yZzpkZXZpY2U6V0FORGV2aWNlOjEiKTsKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1pZ2RfMC4yLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtaWdkXzAuMi40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYWE1OTRkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1pZ2RfMC4yLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIkhlbHBlcnMgZm9yIGludGVyYWN0aW5nIHdpdGggSW50ZXJuZXQgR2F0ZXdheSBEZXZpY2VzIG92ZXIgVVBuUCIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZ3VwbnAtaWdkL2d1cG5wLXNpbXBsZS1pZ2QuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT1hYTI5MmMwZDkzOTA0NjNhNmUxMDU1ZGM1ZmM2OGU4MCIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBndXBucCBzcWxpdGUzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5nbm9tZS5vcmcvc291cmNlcy8ke0JQTn0vMC4yLyR7QlBOfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiMTI0MzcxMTM2YjVhN2IxMDU2YTM2ODE3ODBhNjI3NzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzhjNGE2ZDc3MThkMTdlYWMxN2RmOTVhM2E4YzMzNzY3N2VkYTc3ZTU4OTc4MTI5YWQzMTgyZDc2OWMzOGU0NCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtcHl0aG9uIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLWlnZF8wLjIuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1pZ2RfMC4yLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE5OGFjZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC1pZ2RfMC4yLjUuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJIZWxwZXJzIGZvciBpbnRlcmFjdGluZyB3aXRoIEludGVybmV0IEdhdGV3YXkgRGV2aWNlcyBvdmVyIFVQblAiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmd1cG5wLWlnZC9ndXBucC1zaW1wbGUtaWdkLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMTttZDU9YWEyOTJjMGQ5MzkwNDYzYTZlMTA1NWRjNWZjNjhlODAiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ3NzZHAgZ3VwbnAgc3FsaXRlMyIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuZ25vbWUub3JnL3NvdXJjZXMvJHtCUE59LzAuMi8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtU3d0aWNoLXRvLW5ldy1HVVBuUC1BUEkucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMTY0ZTA5NmQwZjE0MGJiMWY1ZDk1MDM3MjdiNDI0YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4YjRhMWFhMzhiYWNiY2FjMmMxNzU1MTUzMTQ3ZWFkN2VlOWFmN2Q0ZDFmNTQ0YjY1NzdjZmMzNWUxMGUzYjIwIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYyBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1weXRob24iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtdG9vbHNfMC4xMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLXRvb2xzXzAuMTAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZjg0ZTdiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLXRvb2xzXzAuMTAuMC5iYgpAQCAtMCwwICsxLDEzIEBACitTVU1NQVJZID0gIlRvb2xzIGZvciBHVVBuUCIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL25ldHdvcmstbGlnaHQvbWFpbi5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTJjMzliM2EwMDA0OTVkYWJkNDkzMmYyMzFjN2VmZWQ4IgorREVQRU5EUyA9ICJndXBucCBndXBucC1hdiBndGsrMyBnbGliLTIuMC1uYXRpdmUgaW50bHRvb2wtbmF0aXZlIgorUlJFQ09NTUVORFNfJHtQTn0gPSAiYWR3YWl0YS1pY29uLXRoZW1lIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5nbm9tZS5vcmcvc291cmNlcy8ke0JQTn0vMC4xMC8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjhjNjZkNGFjYTc1NjQ3ODYxNTc2MWEyNmVkN2M4ZGJhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQxZGE3ZmY1YmE4ZTI0MjVhZGNiNjRjYTVlMDRjODFmNTdjYTIwZWM2ZmRiODQ5MjM5MzlmZGFkNDJjNmExOGQiCitpbmhlcml0IGZlYXR1cmVzX2NoZWNrIG1lc29uIHBrZ2NvbmZpZyBnZXR0ZXh0IGd0ay1pY29uLWNhY2hlCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtdG9vbHNfMC44LjEzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLXRvb2xzXzAuOC4xMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2E2Yjg3Mi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAtdG9vbHNfMC44LjEzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotU1VNTUFSWSA9ICJUb29scyBmb3IgR1VQblAiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9uZXR3b3JrLWxpZ2h0L21haW4uYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT0yYzM5YjNhMDAwNDk1ZGFiZDQ5MzJmMjMxYzdlZmVkOCIKLURFUEVORFMgPSAiZ3VwbnAgZ3VwbnAtYXYgZ3RrKzMgaW50bHRvb2wtbmF0aXZlIgotUlJFQ09NTUVORFNfJHtQTn0gPSAiYWR3YWl0YS1pY29uLXRoZW1lIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5nbm9tZS5vcmcvc291cmNlcy8ke0JQTn0vMC44LyR7QlBOfS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiMjEyZDg1ZWJjZTg5YjMyNDY4YjU5ZTExNjQwNTBkNDAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWEzZGVjYjlkNTMyYzBlMmU1MDVhZGM1OTJmNDMxZmQ4MWMwMjMxZGVkMjk4MTEyOWU4N2RhMTM3MTI0NzllZCIKLWluaGVyaXQgZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0Ci0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wLmluYwppbmRleCA2Y2U5NjMxLi4yOTIwNTgxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnAuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucC5pbmMKQEAgLTQsMjIgKzQsMTYgQEAKIAogREVQRU5EUyA9ICJlMmZzcHJvZ3MgZ3NzZHAgbGlic291cC0yLjQgbGlieG1sMiIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLSMgQ29weSB2YXBpZ2VuLm00IHNvIHRoYXQgaXQgZG9lc24ndCBnZXQgcmVtb3ZlZCBieSB2YWxhIGNsYXNzCi0jIChub3JtYWxseSB0aGlzIHdvdWxkIGJlIHRoZSByaWdodCB0aGluZyB0byBkbywgYnV0IGluIGd1cG5wIHRoZSB2YXBpZ2VuLm00IGhhcyBvbmx5IGEgY3VzdG9tIG1hY3JvKQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgICAgIGNwIC1mICR7U30vbTQvdmFwaWdlbi5tNCAke1N9L200L3ZhcGlnZW4tY3VzdG9tLm00IHx8IHRydWUKLX0KK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uCiAKIEZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qLnNvLioiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9ndXBucC1iaW5kaW5nLXRvb2wiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9ndXBucC1iaW5kaW5nLXRvb2wqIgogCi1SREVQRU5EU18ke1BOfS1kZXYgPSAicHl0aG9uLXRleHR1dGlscyBweXRob24teG1sIgorUkRFUEVORFNfJHtQTn0tZGV2ID0gInB5dGhvbjMgcHl0aG9uMy14bWwiCiAKIFNZU1JPT1RfUFJFUFJPQ0VTU19GVU5DUyArPSAiZ3VwbnBfc3lzcm9vdF9wcmVwcm9jZXNzIgogCiBndXBucF9zeXNyb290X3ByZXByb2Nlc3MgKCkgewogICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8KLSAgICBpbnN0YWxsIC1tIDc1NSAke0R9JHtiaW5kaXJ9L2d1cG5wLWJpbmRpbmctdG9vbCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LworICAgIGluc3RhbGwgLW0gNzU1ICR7RH0ke2JpbmRpcn0vZ3VwbnAtYmluZGluZy10b29sKiAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LwogfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wXzEuMC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2d1cG5wL2d1cG5wXzEuMC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYmRmN2Q3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucF8xLjAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSBndXBucC5pbmMKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LzEuMC8ke0JQTn0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImFmZDk2ZmU3Mzg1NmIzOGFhZjFiYWY3NTI2ZTA4ZWRkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUxNzNmZGE3NzkxMTFjNmIwMWNkNGE1ZTQxYjU5NDMyMmJlOWQwNGY4Yzc0ZDMzNjFmMGEwYzIwNjljNzc2MTAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTNiZjUwMDAyYWVmZDAwMmY0OWU3YmI4NTQwNjNmN2U3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmd1cG5wL2d1cG5wLmg7YmVnaW5saW5lPTE7ZW5kbGluZT0yMDttZDU9ZDc4YTY5ZDliNmU2M2VlMmRjNzJlN2I2NzRkOTc1MjAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnBfMS4yLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ3VwbnAvZ3VwbnBfMS4yLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTYwMzQ5NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ndXBucC9ndXBucF8xLjIuMi5iYgpAQCAtMCwwICsxLDggQEAKK3JlcXVpcmUgZ3VwbnAuaW5jCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8xLjIvJHtCUE59LSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyYWRlM2QyOWM2MjRhZDk4ZDcwMTEzZTZlOTM5MDhhNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YTgwYmQ5NTNlNWM4NzcyYWQyNmI3MmY4ZGEwMWNiZTcyNDFhMTEzZWRkNjA4NDkwM2Y0MTNjZTc1MWM5OTg5IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJndXBucC9ndXBucC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWQ3OGE2OWQ5YjZlNjNlZTJkYzcyZTdiNjc0ZDk3NTIwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3J5Z2VsL3J5Z2VsXzAuMzcuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yeWdlbC9yeWdlbF8wLjM3LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZlZTAyZmMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3J5Z2VsL3J5Z2VsXzAuMzcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBVUG5QIEFWIG1lZGlhIHNlcnZlciBhbmQgcmVuZGVyZXIiCi1ERVNDUklQVElPTiA9ICJSeWdlbCBpcyBhIGhvbWUgbWVkaWEgc29sdXRpb24gKFVQblAgQVYgTWVkaWFTZXJ2ZXIpIHRoYXQgXAotYWxsb3cgeW91IHRvIGVhc2lseSBzaGFyZSBhdWRpbywgdmlkZW8gYW5kIHBpY3R1cmVzIHRvIG90aGVyIGRldmljZXMuIFwKLUFkZGl0aW9uYWxseSwgbWVkaWEgcGxheWVyIHNvZnR3YXJlIG1heSB1c2UgUnlnZWwgdG8gYmVjb21lIGEgTWVkaWFSZW5kZXJlciBcCi10aGF0IG1heSBiZSBjb250cm9sbGVkIHJlbW90ZWx5IGJ5IGEgVVBuUCBvciBETE5BIENvbnRyb2xsZXIuIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL1J5Z2VsIgotCi1MSUNFTlNFID0gIkxHUEwtMi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLURFUEVORFMgPSAibGlieG1sMiBnbGliLTIuMCBnc3NkcCBndXBucCBndXBucC1hdiBndXBucC1kbG5hIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGxpYmdlZSBsaWJzb3VwLTIuNCBsaWJtZWRpYWFydC0yLjAgbGlidW5pc3RyaW5nIHNxbGl0ZTMgaW50bHRvb2wtbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gPSAiZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS1wbGF5YmFjayBzaGFyZWQtbWltZS1pbmZvIgotUlJFQ09NTUVORFNfJHtQTn0gPSAicnlnZWwtcGx1Z2luLW1lZGlhLWV4cG9ydCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZjg5NzE2N2FkODJlMmU3NDE1ODJmMmMzOTNhNzY4NDMiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJkZmQzZDg4NWRhM2FjMzgzYmEwY2ZiZjExOTk5NWY0YTBjMmJjYTJjYzhmOGNmY2QzZGYxMGNmZWM4ZjM1Y2Q3IgotCi1pbmhlcml0IGdub21lYmFzZSB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbiBnZXR0ZXh0IHN5c3RlbWQKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS10cmFja2VyLXBsdWdpbiAtLXdpdGgtbWVkaWEtZW5naW5lPWdzdHJlYW1lciIKLQotUEFDS0FHRUNPTkZJRyA/PSAiZXh0ZXJuYWwgbXByaXMgcnVpaCBtZWRpYS1leHBvcnQgZ3N0LWxhdW5jaCIKLQotUEFDS0FHRUNPTkZJR19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAiIGd0ayszIiwgIiIsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1tleHRlcm5hbF0gPSAiLS1lbmFibGUtZXh0ZXJuYWwtcGx1Z2luLC0tZGlzYWJsZS1leHRlcm5hbC1wbHVnaW4iCi1QQUNLQUdFQ09ORklHW21wcmlzXSA9ICItLWVuYWJsZS1tcHJpcy1wbHVnaW4sLS1kaXNhYmxlLW1wcmlzLXBsdWdpbiIKLVBBQ0tBR0VDT05GSUdbcnVpaF0gPSAiLS1lbmFibGUtcnVpaC1wbHVnaW4sLS1kaXNhYmxlLXJ1aWgtcGx1Z2luIgotUEFDS0FHRUNPTkZJR1ttZWRpYS1leHBvcnRdID0gIi0tZW5hYmxlLW1lZGlhLWV4cG9ydC1wbHVnaW4sLS1kaXNhYmxlLW1lZGlhLWV4cG9ydC1wbHVnaW4iCi1QQUNLQUdFQ09ORklHW2dzdC1sYXVuY2hdID0gIi0tZW5hYmxlLWdzdC1sYXVuY2gtcGx1Z2luLC0tZGlzYWJsZS1nc3QtbGF1bmNoLXBsdWdpbiIKLVBBQ0tBR0VDT05GSUdbZ3RrKzNdID0gIiwtLXdpdGhvdXQtdWksZ3RrKzMiCi1QQUNLQUdFQ09ORklHW2xtc10gPSAiLS1lbmFibGUtbG1zLXBsdWdpbiwtLWRpc2FibGUtbG1zLXBsdWdpbiIKLQotTElCViA9ICIyLjYiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICAgICMgUmVtb3ZlIC5sYSBmaWxlcyBmb3IgbG9hZGFibGUgbW9kdWxlcwotICAgICAgIHJtIC1mICR7RH0vJHtsaWJkaXJ9L3J5Z2VsLSR7TElCVn0vZW5naW5lcy8qLmxhCi0gICAgICAgcm0gLWYgJHtEfS8ke2xpYmRpcn0vcnlnZWwtJHtMSUJWfS9wbHVnaW5zLyoubGEKLSAgICAgICBpZiBbIC1lICR7RH0ke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kL3VzZXIvcnlnZWwuc2VydmljZSBdOyB0aGVuCi0gICAgICAgICAgICAgICBta2RpciAtcCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICAgICAgICAgbXYgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQvdXNlci9yeWdlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgICAgICAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZC91c2VyIFwKLSAgICAgICAgICAgICAgICR7RH0ke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kIFwKLSAgICAgICAgICAgICAgICR7RH0ke25vbmFyY2hfbGliZGlyfQotICAgICAgIGZpCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vcnlnZWwtJHtMSUJWfS9lbmdpbmVzICR7ZGF0YWRpcn0vZGJ1cy0xICR7ZGF0YWRpcn0vaWNvbnMiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9yeWdlbC0ke0xJQlZ9L2VuZ2luZXMvLmRlYnVnICR7bGliZGlyfS9yeWdlbC0ke0xJQlZ9L3BsdWdpbnMvLmRlYnVnIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tbWV0YSIKLUFMTE9XX0VNUFRZXyR7UE59LW1ldGEgPSAiMSIKLQotUEFDS0FHRVNfRFlOQU1JQyA9ICIke1BOfS1wbHVnaW4tKiIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJ5Z2VsLnNlcnZpY2UiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICByeWdlbF9saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L3J5Z2VsLSR7TElCVn0nKQotICAgIHBvc3RpbnN0ID0gZC5nZXRWYXIoJ3BsdWdpbl9wb3N0aW5zdCcpCi0gICAgcGtncyA9IFtdCi0KLSAgICBwa2dzICs9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIG9lLnBhdGguam9pbihyeWdlbF9saWJkaXIsICJwbHVnaW5zIiksICdsaWJyeWdlbC0oLiopXC5zbyQnLCBkLmV4cGFuZCgnJHtQTn0tcGx1Z2luLSVzJyksICdSeWdlbCBwbHVnaW4gZm9yICVzJywgcG9zdGluc3Q9cG9zdGluc3QsIGV4dHJhX2RlcGVuZHM9ZC5leHBhbmQoJyR7UE59JykpCi0gICAgcGtncyArPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBvZS5wYXRoLmpvaW4ocnlnZWxfbGliZGlyLCAicGx1Z2lucyIpLCAnKC4qKVwucGx1Z2luJCcsIGQuZXhwYW5kKCcke1BOfS1wbHVnaW4tJXMnKSwgJ1J5Z2VsIHBsdWdpbiBmb3IgJXMnLCBwb3N0aW5zdD1wb3N0aW5zdCwgZXh0cmFfZGVwZW5kcz1kLmV4cGFuZCgnJHtQTn0nKSkKLQotICAgIG1ldGFwa2cgPSBkLmdldFZhcignUE4nKSArICctbWV0YScKLSAgICBkLnNldFZhcignUkRFUEVORFNfJyArIG1ldGFwa2csICcgJy5qb2luKHBrZ3MpKQotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3J5Z2VsL3J5Z2VsXzAuMzguMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yeWdlbC9yeWdlbF8wLjM4LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZjODQ1MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yeWdlbC9yeWdlbF8wLjM4LjMuYmIKQEAgLTAsMCArMSw2OSBAQAorU1VNTUFSWSA9ICJBIFVQblAgQVYgbWVkaWEgc2VydmVyIGFuZCByZW5kZXJlciIKK0RFU0NSSVBUSU9OID0gIlJ5Z2VsIGlzIGEgaG9tZSBtZWRpYSBzb2x1dGlvbiAoVVBuUCBBViBNZWRpYVNlcnZlcikgdGhhdCBcCithbGxvdyB5b3UgdG8gZWFzaWx5IHNoYXJlIGF1ZGlvLCB2aWRlbyBhbmQgcGljdHVyZXMgdG8gb3RoZXIgZGV2aWNlcy4gXAorQWRkaXRpb25hbGx5LCBtZWRpYSBwbGF5ZXIgc29mdHdhcmUgbWF5IHVzZSBSeWdlbCB0byBiZWNvbWUgYSBNZWRpYVJlbmRlcmVyIFwKK3RoYXQgbWF5IGJlIGNvbnRyb2xsZWQgcmVtb3RlbHkgYnkgYSBVUG5QIG9yIERMTkEgQ29udHJvbGxlci4iCitIT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvUnlnZWwiCisKK0xJQ0VOU0UgPSAiTEdQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworREVQRU5EUyA9ICJsaWJ4bWwyIGdsaWItMi4wIGdzc2RwIGd1cG5wIGd1cG5wLWF2IGd1cG5wLWRsbmEgZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgbGliZ2VlIGxpYnNvdXAtMi40IGxpYm1lZGlhYXJ0LTIuMCBsaWJ1bmlzdHJpbmcgc3FsaXRlMyBpbnRsdG9vbC1uYXRpdmUiCitSREVQRU5EU18ke1BOfSA9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLXBsYXliYWNrIHNoYXJlZC1taW1lLWluZm8iCitSUkVDT01NRU5EU18ke1BOfSA9ICJyeWdlbC1wbHVnaW4tbWVkaWEtZXhwb3J0IgorCitpbmhlcml0IGdub21lYmFzZSB2YWxhIGdvYmplY3QtaW50cm9zcGVjdGlvbiBnZXR0ZXh0IHN5c3RlbWQKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiN2Y5NTQwMTkwM2EzZjg1NWI0NjRkNTE1MmI5ZDRjMDciCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwOGMyMWE1NzdmN2JkYWQyNjQ0NmE3NWZmYTMyNzc4YjI2ODQyYzNiMTE4ODE2NWYwYjE5ODE4NTU5NzQ3ZDAwIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLXRyYWNrZXItcGx1Z2luIC0td2l0aC1tZWRpYS1lbmdpbmU9Z3N0cmVhbWVyIgorCitQQUNLQUdFQ09ORklHID89ICJleHRlcm5hbCBtcHJpcyBydWloIG1lZGlhLWV4cG9ydCBnc3QtbGF1bmNoIgorCitQQUNLQUdFQ09ORklHX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICIgZ3RrKzMiLCAiIiwgZCl9IgorCitQQUNLQUdFQ09ORklHW2V4dGVybmFsXSA9ICItLWVuYWJsZS1leHRlcm5hbC1wbHVnaW4sLS1kaXNhYmxlLWV4dGVybmFsLXBsdWdpbiIKK1BBQ0tBR0VDT05GSUdbbXByaXNdID0gIi0tZW5hYmxlLW1wcmlzLXBsdWdpbiwtLWRpc2FibGUtbXByaXMtcGx1Z2luIgorUEFDS0FHRUNPTkZJR1tydWloXSA9ICItLWVuYWJsZS1ydWloLXBsdWdpbiwtLWRpc2FibGUtcnVpaC1wbHVnaW4iCitQQUNLQUdFQ09ORklHW21lZGlhLWV4cG9ydF0gPSAiLS1lbmFibGUtbWVkaWEtZXhwb3J0LXBsdWdpbiwtLWRpc2FibGUtbWVkaWEtZXhwb3J0LXBsdWdpbiIKK1BBQ0tBR0VDT05GSUdbZ3N0LWxhdW5jaF0gPSAiLS1lbmFibGUtZ3N0LWxhdW5jaC1wbHVnaW4sLS1kaXNhYmxlLWdzdC1sYXVuY2gtcGx1Z2luIgorUEFDS0FHRUNPTkZJR1tndGsrM10gPSAiLC0td2l0aG91dC11aSxndGsrMyIKK1BBQ0tBR0VDT05GSUdbbG1zXSA9ICItLWVuYWJsZS1sbXMtcGx1Z2luLC0tZGlzYWJsZS1sbXMtcGx1Z2luIgorCitMSUJWID0gIjIuNiIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgICAgIyBSZW1vdmUgLmxhIGZpbGVzIGZvciBsb2FkYWJsZSBtb2R1bGVzCisgICAgICAgcm0gLWYgJHtEfS8ke2xpYmRpcn0vcnlnZWwtJHtMSUJWfS9lbmdpbmVzLyoubGEKKyAgICAgICBybSAtZiAke0R9LyR7bGliZGlyfS9yeWdlbC0ke0xJQlZ9L3BsdWdpbnMvKi5sYQorICAgICAgIGlmIFsgLWUgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQvdXNlci9yeWdlbC5zZXJ2aWNlIF07IHRoZW4KKyAgICAgICAgICAgICAgIG1rZGlyIC1wICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgICAgICAgICAgICBtdiAke0R9JHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZC91c2VyL3J5Z2VsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICAgICAgICAgICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kL3VzZXIgXAorICAgICAgICAgICAgICAgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQgXAorICAgICAgICAgICAgICAgJHtEfSR7bm9uYXJjaF9saWJkaXJ9CisgICAgICAgZmkKK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9yeWdlbC0ke0xJQlZ9L2VuZ2luZXMgJHtkYXRhZGlyfS9kYnVzLTEgJHtkYXRhZGlyfS9pY29ucyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3J5Z2VsLSR7TElCVn0vZW5naW5lcy8uZGVidWcgJHtsaWJkaXJ9L3J5Z2VsLSR7TElCVn0vcGx1Z2lucy8uZGVidWciCisKK1BBQ0tBR0VTICs9ICIke1BOfS1tZXRhIgorQUxMT1dfRU1QVFlfJHtQTn0tbWV0YSA9ICIxIgorCitQQUNLQUdFU19EWU5BTUlDID0gIiR7UE59LXBsdWdpbi0qIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAicnlnZWwuc2VydmljZSIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIHJ5Z2VsX2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vcnlnZWwtJHtMSUJWfScpCisgICAgcG9zdGluc3QgPSBkLmdldFZhcigncGx1Z2luX3Bvc3RpbnN0JykKKyAgICBwa2dzID0gW10KKworICAgIHBrZ3MgKz0gZG9fc3BsaXRfcGFja2FnZXMoZCwgb2UucGF0aC5qb2luKHJ5Z2VsX2xpYmRpciwgInBsdWdpbnMiKSwgJ2xpYnJ5Z2VsLSguKilcLnNvJCcsIGQuZXhwYW5kKCcke1BOfS1wbHVnaW4tJXMnKSwgJ1J5Z2VsIHBsdWdpbiBmb3IgJXMnLCBwb3N0aW5zdD1wb3N0aW5zdCwgZXh0cmFfZGVwZW5kcz1kLmV4cGFuZCgnJHtQTn0nKSkKKyAgICBwa2dzICs9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIG9lLnBhdGguam9pbihyeWdlbF9saWJkaXIsICJwbHVnaW5zIiksICcoLiopXC5wbHVnaW4kJywgZC5leHBhbmQoJyR7UE59LXBsdWdpbi0lcycpLCAnUnlnZWwgcGx1Z2luIGZvciAlcycsIHBvc3RpbnN0PXBvc3RpbnN0LCBleHRyYV9kZXBlbmRzPWQuZXhwYW5kKCcke1BOfScpKQorCisgICAgbWV0YXBrZyA9IGQuZ2V0VmFyKCdQTicpICsgJy1tZXRhJworICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnLmpvaW4ocGtncykpCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9kbGV5bmEtY29yZV8wLjYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZGxleW5hL2RsZXluYS1jb3JlXzAuNi4wLmJiCmluZGV4IGEzYjI3OTMuLjg5MzljZDMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZGxleW5hL2RsZXluYS1jb3JlXzAuNi4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZGxleW5hL2RsZXluYS1jb3JlXzAuNi4wLmJiCkBAIC03LDEyICs3LDE0IEBACiAKIExJQ0VOU0UgPSAiTEdQTHYyLjErIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZGxleW5hL2NvcmUvY29yZS5jO2VuZGxpbmU9MjE7bWQ1PTEzOWNiYTBjNjM0MzQ0YWJjOTQ1NjY5NGZiYjUwODNiIgorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZGxleW5hL2NvcmUvY29yZS5jO2VuZGxpbmU9MjE7bWQ1PTY4NjAyOTk4MzUxODI1YjA4NDRhYWUzNGM2ODRjNTRlIgogCiBERVBFTkRTID0gImdsaWItMi4wIGd1cG5wIgogCitQViAuPSAiK2dpdCR7U1JDUFZ9IgorCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vMDFvcmcvJHtCUE59LmdpdCIKLVNSQ1JFViA9ICIyN2EzNzg2ZWMwMTNmNjRmZDU4MjQzNDEwYTYwNzk4ZjgyNGFjZWMzIgorU1JDUkVWID0gIjFjNjg1M2Y1YmM2OTdkYzBhODc3NGZkNzBkYmM5MTVjNGRiZTdjNWIiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZGxleW5hL2RsZXluYS1yZW5kZXJlci8wMDAxLWFkZC1ndXBucC0xLjItQVBJLXN1cHBvcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9kbGV5bmEtcmVuZGVyZXIvMDAwMS1hZGQtZ3VwbnAtMS4yLUFQSS1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmNTQ2NTgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9kbGV5bmEtcmVuZGVyZXIvMDAwMS1hZGQtZ3VwbnAtMS4yLUFQSS1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsMTIzIEBACitGcm9tIDdjOTQ1ZTc5NjBjZjdkZmZkOWRkMGJiNWY3ZWM2YmVlNGRjMGJjYTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAxOCBGZWIgMjAyMCAxNDoxNzo1NSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBhZGQgZ3VwbnAgMS4yIEFQSSBzdXBwb3J0CisKK1Rha2VzIGZyb20gaHR0cHM6Ly9naXQuYXJjaGxpbnV4Lm9yZy9zdm50b2dpdC9wYWNrYWdlcy5naXQvdHJlZS90cnVuay9ndXBucC0xLjIuZGlmZj9oPXBhY2thZ2VzL2RsZXluYS1yZW5kZXJlcgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgIHwgIDQgKy0tCisgbGliZGxleW5hL3JlbmRlcmVyL2RldmljZS5jIHwgNTEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQorIGxpYmRsZXluYS9yZW5kZXJlci91cG5wLmMgICB8ICA0ICstLQorIDMgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMjcxZWU5Mi4uMzY0NjU5ZCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMzgsOCArMzgsOCBAQCBMVF9MQU5HKFtDXSkKKyBQS0dfUFJPR19QS0dfQ09ORklHKDAuMTYpCisgUEtHX0NIRUNLX01PRFVMRVMoW0dMSUJdLCBbZ2xpYi0yLjAgPj0gMi4yOF0pCisgUEtHX0NIRUNLX01PRFVMRVMoW0dJT10sIFtnaW8tMi4wID49IDIuMjhdKQorLVBLR19DSEVDS19NT0RVTEVTKFtHU1NEUF0sIFtnc3NkcC0xLjAgPj0gMC4xMy4yXSkKKy1QS0dfQ0hFQ0tfTU9EVUxFUyhbR1VQTlBdLCBbZ3VwbnAtMS4wID49IDAuMjAuNV0pCisrUEtHX0NIRUNLX01PRFVMRVMoW0dTU0RQXSwgW2dzc2RwLTEuMiA+PSAxLjIuMF0pCisrUEtHX0NIRUNLX01PRFVMRVMoW0dVUE5QXSwgW2d1cG5wLTEuMiA+PSAxLjIuMF0pCisgUEtHX0NIRUNLX01PRFVMRVMoW0dVUE5QQVZdLCBbZ3VwbnAtYXYtMS4wID49IDAuMTEuNV0pCisgUEtHX0NIRUNLX01PRFVMRVMoW0dVUE5QRExOQV0sIFtndXBucC1kbG5hLTIuMCA+PSAwLjkuNF0pCisgUEtHX0NIRUNLX01PRFVMRVMoW1NPVVBdLCBbbGlic291cC0yLjQgPj0gMi4yOC4yXSkKK2RpZmYgLS1naXQgYS9saWJkbGV5bmEvcmVuZGVyZXIvZGV2aWNlLmMgYi9saWJkbGV5bmEvcmVuZGVyZXIvZGV2aWNlLmMKK2luZGV4IDc4M2ZiNTIuLmM3YjlmYzMgMTAwNjQ0CistLS0gYS9saWJkbGV5bmEvcmVuZGVyZXIvZGV2aWNlLmMKKysrKyBiL2xpYmRsZXluYS9yZW5kZXJlci9kZXZpY2UuYworQEAgLTIxMjEsNiArMjEyMSw1MyBAQCBleGl0OgorIAlyZXR1cm47CisgfQorIAorK3R5cGVkZWYgc3RydWN0CisreworKyAgR01haW5Mb29wICpsb29wOworKyAgR1VQblBTZXJ2aWNlSW50cm9zcGVjdGlvbiAqaW50cm9zcGVjdGlvbjsKKysgIEdFcnJvciAqKmVycm9yOworK30gR2V0SW50cm9zcGVjdGlvbkFzeW5jRGF0YTsKKysKKytzdGF0aWMgdm9pZAorK2dldF9pbnRyb3NwZWN0aW9uX2FzeW5jX2NiIChHVVBuUFNlcnZpY2VJbmZvICAgICAgICAgICAqaW5mbywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgR1VQblBTZXJ2aWNlSW50cm9zcGVjdGlvbiAgKmludHJvc3BlY3Rpb24sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IEdFcnJvciAgICAgICAgICAgICAgICplcnJvciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3BvaW50ZXIgICAgICAgICAgICAgICAgICAgIHVzZXJfZGF0YSkKKyt7CisrICBHZXRJbnRyb3NwZWN0aW9uQXN5bmNEYXRhICpkYXRhID0gdXNlcl9kYXRhOworKyAgZGF0YS0+aW50cm9zcGVjdGlvbiA9IGludHJvc3BlY3Rpb247CisrICBpZiAoZGF0YS0+ZXJyb3IpCisrICAgICpkYXRhLT5lcnJvciA9IGdfZXJyb3JfY29weSAoZXJyb3IpOworKyAgZ19tYWluX2xvb3BfcXVpdCAoZGF0YS0+bG9vcCk7CisrfQorKworK3N0YXRpYyBHVVBuUFNlcnZpY2VJbnRyb3NwZWN0aW9uICoKKytfZ3VwbnBfc2VydmljZV9pbmZvX2dldF9pbnRyb3NwZWN0aW9uIChHVVBuUFNlcnZpY2VJbmZvICppbmZvLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdFcnJvciAgICAgICAgICAqKmVycm9yKQorK3sKKysgIEdldEludHJvc3BlY3Rpb25Bc3luY0RhdGEgZGF0YTsKKysgIEdNYWluQ29udGV4dCAqY29udGV4dDsKKysKKysgIGNvbnRleHQgPSBnX21haW5fY29udGV4dF9uZXcgKCk7CisrICBkYXRhLmxvb3AgPSBnX21haW5fbG9vcF9uZXcgKGNvbnRleHQsIEZBTFNFKTsKKysgIGRhdGEuZXJyb3IgPSBlcnJvcjsKKysKKysgIGdfbWFpbl9jb250ZXh0X3B1c2hfdGhyZWFkX2RlZmF1bHQgKGNvbnRleHQpOworKworKyAgZ3VwbnBfc2VydmljZV9pbmZvX2dldF9pbnRyb3NwZWN0aW9uX2FzeW5jIChpbmZvLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfaW50cm9zcGVjdGlvbl9hc3luY19jYiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmRhdGEpOworKworKyAgZ19tYWluX2xvb3BfcnVuIChkYXRhLmxvb3ApOworKworKyAgZ19tYWluX2NvbnRleHRfcG9wX3RocmVhZF9kZWZhdWx0IChjb250ZXh0KTsKKysKKysgIGdfbWFpbl9sb29wX3VucmVmIChkYXRhLmxvb3ApOworKyAgZ19tYWluX2NvbnRleHRfdW5yZWYgKGNvbnRleHQpOworKworKyAgcmV0dXJuIGRhdGEuaW50cm9zcGVjdGlvbjsKKyt9CisrCisgc3RhdGljIGdib29sZWFuIHBydl9nZXRfYXZfc2VydmljZV9zdGF0ZXNfdmFsdWVzKEdVUG5QU2VydmljZVByb3h5ICphdl9wcm94eSwKKyAJCQkJCQkgR1ZhcmlhbnQgKiptcHJpc190cF9zcGVlZHMsCisgCQkJCQkJIEdQdHJBcnJheSAqKnVwbnBfdHBfc3BlZWRzLAorQEAgLTIxNDcsNyArMjE5NCw3IEBAIHN0YXRpYyBnYm9vbGVhbiBwcnZfZ2V0X2F2X3NlcnZpY2Vfc3RhdGVzX3ZhbHVlcyhHVVBuUFNlcnZpY2VQcm94eSAqYXZfcHJveHksCisgCXdlYWtfcmVmID0gYXZfcHJveHk7CisgCWdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1QoYXZfcHJveHkpLCAmd2Vha19yZWYpOworIAorLQlpbnRyb3NwZWN0aW9uID0gZ3VwbnBfc2VydmljZV9pbmZvX2dldF9pbnRyb3NwZWN0aW9uKAorKwlpbnRyb3NwZWN0aW9uID0gX2d1cG5wX3NlcnZpY2VfaW5mb19nZXRfaW50cm9zcGVjdGlvbigKKyAJCUdVUE5QX1NFUlZJQ0VfSU5GTyhhdl9wcm94eSksCisgCQkmZXJyb3IpOworIAorQEAgLTIyMTUsNyArMjI2Miw3IEBAIHN0YXRpYyBnYm9vbGVhbiBwcnZfZ2V0X3JjX3NlcnZpY2Vfc3RhdGVzX3ZhbHVlcyhHVVBuUFNlcnZpY2VQcm94eSAqcmNfcHJveHksCisgCXdlYWtfcmVmID0gcmNfcHJveHk7CisgCWdfb2JqZWN0X2FkZF93ZWFrX3BvaW50ZXIoR19PQkpFQ1QocmNfcHJveHkpLCAmd2Vha19yZWYpOworIAorLQlpbnRyb3NwZWN0aW9uID0gZ3VwbnBfc2VydmljZV9pbmZvX2dldF9pbnRyb3NwZWN0aW9uKAorKwlpbnRyb3NwZWN0aW9uID0gX2d1cG5wX3NlcnZpY2VfaW5mb19nZXRfaW50cm9zcGVjdGlvbigKKyAJCUdVUE5QX1NFUlZJQ0VfSU5GTyhyY19wcm94eSksCisgCQkmZXJyb3IpOworIAorZGlmZiAtLWdpdCBhL2xpYmRsZXluYS9yZW5kZXJlci91cG5wLmMgYi9saWJkbGV5bmEvcmVuZGVyZXIvdXBucC5jCitpbmRleCBhYzFiMDhhLi5iNzYyMjI2IDEwMDY0NAorLS0tIGEvbGliZGxleW5hL3JlbmRlcmVyL3VwbnAuYworKysrIGIvbGliZGxleW5hL3JlbmRlcmVyL3VwbnAuYworQEAgLTI0Myw4ICsyNDMsOCBAQCBzdGF0aWMgdm9pZCBwcnZfc2VydmVyX3VuYXZhaWxhYmxlX2NiKEdVUG5QQ29udHJvbFBvaW50ICpjcCwKKyAKKyAJdWRuID0gZ3VwbnBfZGV2aWNlX2luZm9fZ2V0X3VkbigoR1VQblBEZXZpY2VJbmZvICopcHJveHkpOworIAorLQlpcF9hZGRyZXNzID0gZ3VwbnBfY29udGV4dF9nZXRfaG9zdF9pcCgKKy0JCWd1cG5wX2NvbnRyb2xfcG9pbnRfZ2V0X2NvbnRleHQoY3ApKTsKKysJaXBfYWRkcmVzcyA9IGdzc2RwX2NsaWVudF9nZXRfaG9zdF9pcCgKKysJCUdTU0RQX0NMSUVOVChndXBucF9jb250cm9sX3BvaW50X2dldF9jb250ZXh0KGNwKSkpOworIAorIAlpZiAoIXVkbiB8fCAhaXBfYWRkcmVzcykKKyAJCWdvdG8gb25fZXJyb3I7CistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9kbGV5bmEtcmVuZGVyZXJfMC42LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9kbGV5bmEtcmVuZGVyZXJfMC42LjAuYmIKaW5kZXggYjMwYWVlOS4uNjQyZjIxYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9kbGV5bmEvZGxleW5hLXJlbmRlcmVyXzAuNi4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZGxleW5hL2RsZXluYS1yZW5kZXJlcl8wLjYuMC5iYgpAQCAtMTEsNyArMTEsOSBAQAogREVQRU5EUyA9ICJnbGliLTIuMCBnc3NkcCBndXBucCBndXBucC1hdiBndXBucC1kbG5hIGxpYnNvdXAtMi40IGRsZXluYS1jb3JlIgogUkRFUEVORFNfJHtQTn0gPSAiZGxleW5hLWNvbm5lY3Rvci1kYnVzIgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vMDFvcmcvJHtCUE59LmdpdCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS8wMW9yZy8ke0JQTn0uZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWRkLWd1cG5wLTEuMi1BUEktc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIgogU1JDUkVWID0gIjUwZmQxZWM5ZDUxMzI4ZTdkZWE5ODg3NDEyOWRjOGQ2ZmUzZWExZGQiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9kbGV5bmEtc2VydmVyXzAuNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9kbGV5bmEvZGxleW5hLXNlcnZlcl8wLjYuMC5iYgppbmRleCBhOGU1NDA2Li5lMzFiN2FlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2RsZXluYS9kbGV5bmEtc2VydmVyXzAuNi4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZGxleW5hL2RsZXluYS1zZXJ2ZXJfMC42LjAuYmIKQEAgLTExLDggKzExLDkgQEAKIERFUEVORFMgPSAiZ2xpYi0yLjAgZ3NzZHAgZ3VwbnAgZ3VwbnAtYXYgZ3VwbnAtZGxuYSBsaWJzb3VwLTIuNCBsaWJ4bWwyIGRsZXluYS1jb3JlIgogUkRFUEVORFNfJHtQTn0gPSAiZGxleW5hLWNvbm5lY3Rvci1kYnVzIgogCitQViAuPSAiK2dpdCR7U1JDUFZ9IgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLzAxb3JnLyR7QlBOfS5naXQiCi1TUkNSRVYgPSAiNzc2OTUwZDVkOTZhYzlkYmY1YzVjNDdiZGU4YWMwNmY1MGEzY2Y0NiIKK1NSQ1JFViA9ICJlYjg5NWFlODI3MTVlOTg4OWE5NDhmZmE4MTBjMGY4MjhiNGY0Yzc2IgogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2Zkay1hYWMvZmRrLWFhY18yLjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmRrLWFhYy9mZGstYWFjXzIuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3OTExNjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2Zkay1hYWMvZmRrLWFhY18yLjAuMS5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIkZESy1BQUMgYXVkaW8gY29kZWMiCisKK0RFU0NSSVBUSU9OID0gIlRoZSBGcmF1bmhvZmVyIEZESyBBQUMgQ29kZWMgTGlicmFyeSBmb3IgQW5kcm9pZCBcCisoXCJGREsgQUFDIENvZGVjXCIpIGlzIHNvZnR3YXJlIHRoYXQgaW1wbGVtZW50cyB0aGUgTVBFRyBcCitBZHZhbmNlZCBBdWRpbyBDb2RpbmcgKFwiQUFDXCIpIGVuY29kaW5nIGFuZCBkZWNvZGluZyBzY2hlbWUgXAorZm9yIGRpZ2l0YWwgYXVkaW8uIgorCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5paXMuZnJhdW5ob2Zlci5kZS9lbi9mZi9hbW0vaW1wbC5odG1sIgorCitMSUNFTlNFID0gIkZyYXVuaG9mZXJfRkRLX0FBQ19Db2RlY19MaWJyYXJ5X2Zvcl9BbmRyb2lkIgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTk9USUNFO21kNT01OTg1ZTFlMTJmNGFmYTcxMGQ2NGVkN2JmZDI5MTg3NSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21zdG9yc2pvL2Zkay1hYWMuZ2l0O3Byb3RvY29sPWdpdDticmFuY2g9bWFzdGVyIgorU1JDUkVWID0gImQzODdkM2I2ZWQ3OWZmOWE4MmM2MDQ0MGJkZDg2ZTZlNWUzMjRiZWMiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmZWY0NTNiNWQ2ZWUyOGZmMzAyYzYwMGI4Y2RlZDNlNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwN2MyYTY0YjA5OGViNDhiMmU5ZDcyOWQ1ZTc3OGMwOGY3ZDIyZjI4YWRjOGRhN2MzZjkyYzU4ZGExY2JiZDhlIgorCitpbmhlcml0IGF1dG90b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9mbHVpZHN5bnRoL2ZsdWlkc3ludGguaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9mbHVpZHN5bnRoL2ZsdWlkc3ludGguaW5jCmluZGV4IDljZTY1MDYuLjczODU4YjAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvZmx1aWRzeW50aC9mbHVpZHN5bnRoLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZsdWlkc3ludGgvZmx1aWRzeW50aC5pbmMKQEAgLTUsOCArNSw4IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mYzE3OGJjZDQyNTA5MDkzOWE4YjYzNGQxZDZhOTU5NCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0ZsdWlkU3ludGgvZmx1aWRzeW50aC5naXQiCi1TUkNSRVYgPSAiMzdjOWFlMmJmNDMxYTc2NDAzMmYwMjNiM2IyYzBjMGI4NmI3YzI3MiIKK1NSQ1JFViA9ICJkOWFkNmEwNzI1ODQwMzg4YTQ4ZjQ1ZTM4ZWRhOTAzYTY1ZWMxY2Y1IgogUyA9ICIke1dPUktESVJ9L2dpdCIKLVBWID0gIjIuMS4wIgorUFYgPSAiMi4xLjIiCiAKIGluaGVyaXQgY21ha2UgcGtnY29uZmlnIGxpYl9wYWNrYWdlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ltYWdlcy9tdWx0aW1lZGlhLWxpYmNhbWVyYS1pbWFnZS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvaW1hZ2VzL211bHRpbWVkaWEtbGliY2FtZXJhLWltYWdlLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0NTAxZTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2ltYWdlcy9tdWx0aW1lZGlhLWxpYmNhbWVyYS1pbWFnZS5iYgpAQCAtMCwwICsxLDE5IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBNYWRoYXZhbiBLcmlzaG5hbiA8bWFkaGF2YW4ua3Jpc2huYW5AbGluYXJvLm9yZz4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworREVTQ1JJUFRJT04gPSAibGliY2FtZXJhIGltYWdlIgorTElDRU5TRSA9ICJNSVQiCisKK3JlcXVpcmUgIG1ldGEtbXVsdGltZWRpYS1pbWFnZS5iYgorCitJTUFHRV9JTlNUQUxMICs9ICIgXAorICAgICAgICBrZXJuZWwtbW9kdWxlcyBcCisgICAgICAgIHhrZXlib2FyZC1jb25maWcgXAorIgorCitJTUFHRV9JTlNUQUxMX2FwcGVuZCA9ICJcCisgICBsaWJjYW1lcmEgXAorICAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZCBcCisgICBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIFwKKyIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJjYW1lcmEvZmlsZXMvMDAwMS1tZXNvbi1pbXBvcnQtcHl0aG9uMy10by11c2UtYWxzby1mcm9tLXN5c3Jvb3QucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmNhbWVyYS9maWxlcy8wMDAxLW1lc29uLWltcG9ydC1weXRob24zLXRvLXVzZS1hbHNvLWZyb20tc3lzcm9vdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmM1NmE2OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmNhbWVyYS9maWxlcy8wMDAxLW1lc29uLWltcG9ydC1weXRob24zLXRvLXVzZS1hbHNvLWZyb20tc3lzcm9vdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLUZyb20gZWE0N2U1MzkxMTIxM2Q3MWU5OTdlYjM0ODQ4YWU3MjczNWJhY2M4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IG1hZGhhdmFuazI3IDxtYWRoYXZhbi5rcmlzaG5hbkBsaW5hcm8ub3JnPgotRGF0ZTogVGh1LCA5IEphbiAyMDIwIDA3OjQyOjE4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1lc29uOiBpbXBvcnQgcHl0aG9uMyB0byB1c2UgYWxzbyBmcm9tIHN5c3Jvb3QKLQotaW1wb3J0aW5nIHB5dGhvbiBtb2R1bGUgY2FuIHByb3ZpZGUgdGhlIGV4YWN0IHBhdGgKLXdoaWNoIGNhbiBiZSB1c2VkIGluIGRlc2t0b3AgYnVpbGQgYXMgd2VsbCBhcyBmcm9tCi1hbnkgYnVpbGQgc3lzdGVtCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogbWFkaGF2YW5rMjcgPG1hZGhhdmFuLmtyaXNobmFuQGxpbmFyby5vcmc+Ci0tLS0KLSBpbmNsdWRlL2xpYmNhbWVyYS9tZXNvbi5idWlsZCB8IDQgKysrLQotIHNyYy9saWJjYW1lcmEvbWVzb24uYnVpbGQgICAgIHwgNCArKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL2xpYmNhbWVyYS9tZXNvbi5idWlsZCBiL2luY2x1ZGUvbGliY2FtZXJhL21lc29uLmJ1aWxkCi1pbmRleCA5OWFiZjA2Li44MzUyNWUyIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9saWJjYW1lcmEvbWVzb24uYnVpbGQKLSsrKyBiL2luY2x1ZGUvbGliY2FtZXJhL21lc29uLmJ1aWxkCi1AQCAtMjEsMTMgKzIxLDE1IEBAIGluY2x1ZGVfZGlyID0gam9pbl9wYXRocyhsaWJjYW1lcmFfaW5jbHVkZV9kaXIsICdsaWJjYW1lcmEnKQotIGluc3RhbGxfaGVhZGVycyhsaWJjYW1lcmFfYXBpLAotICAgICAgICAgICAgICAgICBzdWJkaXIgOiBpbmNsdWRlX2RpcikKLSAKLStweXRob25fbW9kID0gaW1wb3J0KCdweXRob24zJykuZmluZF9weXRob24oKQotKwotIGdlbl9jb250cm9scyA9IGZpbGVzKCcuLi8uLi9zcmMvbGliY2FtZXJhL2dlbi1jb250cm9scy5weScpCi0gCi0gY29udHJvbF9pZHNfaCA9IGN1c3RvbV90YXJnZXQoJ2NvbnRyb2xfaWRzX2gnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0IDogZmlsZXMoJy4uLy4uL3NyYy9saWJjYW1lcmEvY29udHJvbF9pZHMueWFtbCcsICdjb250cm9sX2lkcy5oLmluJyksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IDogJ2NvbnRyb2xfaWRzLmgnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZF9maWxlcyA6IGdlbl9jb250cm9scywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIDogW2dlbl9jb250cm9scywgJy1vJywgJ0BPVVRQVVRAJywgJ0BJTlBVVEAnXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIDogW3B5dGhvbl9tb2QsIGdlbl9jb250cm9scywgJy1vJywgJ0BPVVRQVVRAJywgJ0BJTlBVVEAnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIDogdHJ1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsX2RpciA6IGpvaW5fcGF0aHMoJ2luY2x1ZGUnLCBpbmNsdWRlX2RpcikpCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYmNhbWVyYS9tZXNvbi5idWlsZCBiL3NyYy9saWJjYW1lcmEvbWVzb24uYnVpbGQKLWluZGV4IGM0Zjk2NWIuLjI0MzkzNWIgMTAwNjQ0Ci0tLS0gYS9zcmMvbGliY2FtZXJhL21lc29uLmJ1aWxkCi0rKysgYi9zcmMvbGliY2FtZXJhL21lc29uLmJ1aWxkCi1AQCAtNjUsMTMgKzY1LDE1IEBAIGlmIGxpYnVkZXYuZm91bmQoKQotICAgICBdKQotIGVuZGlmCi0gCi0rcHl0aG9uX21vZCA9IGltcG9ydCgncHl0aG9uMycpLmZpbmRfcHl0aG9uKCkKLSsKLSBnZW5fY29udHJvbHMgPSBmaWxlcygnZ2VuLWNvbnRyb2xzLnB5JykKLSAKLSBjb250cm9sX2lkc19jcHAgPSBjdXN0b21fdGFyZ2V0KCdjb250cm9sX2lkc19jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQgOiBmaWxlcygnY29udHJvbF9pZHMueWFtbCcsICdjb250cm9sX2lkcy5jcHAuaW4nKSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA6ICdjb250cm9sX2lkcy5jcHAnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwZW5kX2ZpbGVzIDogZ2VuX2NvbnRyb2xzLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA6IFtnZW5fY29udHJvbHMsICctbycsICdAT1VUUFVUQCcsICdASU5QVVRAJ10pCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIDogW3B5dGhvbl9tb2QsIGdlbl9jb250cm9scywgJy1vJywgJ0BPVVRQVVRAJywgJ0BJTlBVVEAnXSkKLSAKLSBsaWJjYW1lcmFfc291cmNlcyArPSBjb250cm9sX2lkc19jcHAKLSBsaWJjYW1lcmFfc291cmNlcyArPSBjb250cm9sX2lkc19oCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbGliY2FtZXJhL2xpYmNhbWVyYS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbGliY2FtZXJhL2xpYmNhbWVyYS5iYgppbmRleCBiOTViZjZkLi4zZjhmZTJmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmNhbWVyYS9saWJjYW1lcmEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJjYW1lcmEvbGliY2FtZXJhLmJiCkBAIC0xMCwxMiArMTAsMTEgQEAKIAogU1JDX1VSSSA9ICIgXAogICAgICAgICBnaXQ6Ly9saW51eHR2Lm9yZy9saWJjYW1lcmEuZ2l0O3Byb3RvY29sPWdpdCBcCi0gICAgICAgIGZpbGU6Ly8wMDAxLW1lc29uLWltcG9ydC1weXRob24zLXRvLXVzZS1hbHNvLWZyb20tc3lzcm9vdC5wYXRjaCBcCiAiCiAKLVNSQ1JFViA9ICI1M2VhYjk5NjgwOWU4MjZiYzkxNGU0YzM0Yzc4ZmU3NGQ4NmY4ZGM0IgorU1JDUkVWID0gImE4YmU2ZTk0ZTc5ZjYwMmQ1NDNhMTVhZmQ0NGVmNjBlMzc4YjEzOGYiCiAKLVBWID0gIjIwMTkxMCtnaXQke1NSQ1BWfSIKK1BWID0gIjIwMjAwMitnaXQke1NSQ1BWfSIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJkZTI2NS9saWJkZTI2NV8xLjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbGliZGUyNjUvbGliZGUyNjVfMS4wLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkMDc1ZmYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJkZTI2NS9saWJkZTI2NV8xLjAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLURFU0NSSVBUSU9OID0gImxpYmRlMjY1IGlzIGFuIG9wZW4gc291cmNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBoLjI2NSBcCi12aWRlbyBjb2RlYy4gSXQgaXMgd3JpdHRlbiBmcm9tIHNjcmF0Y2ggYW5kIGhhcyBhIHBsYWluIEMgQVBJIHRvIGVuYWJsZSBhIFwKLXNpbXBsZSBpbnRlZ3JhdGlvbiBpbnRvIG90aGVyIHNvZnR3YXJlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGliZGUyNjUub3JnLyIKLVNFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgotCi1MSUNFTlNFID0gIkxHUEx2MyIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg1MmYzNDVjMWM1MmM5MTYwZjlhN2MzNmJiOTk3NTQ2IgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zdHJ1a3R1cmFnL2xpYmRlMjY1L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjkzNTIwYjM3OGRmMjVmM2E5NGU5NjJmMmI1NDg3MmNjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVhYTAzNDg4MzljMjkzNWRkOTA2NDdkNzJjNmRkNGEwNDNlMzYzNjFjYjNjMzNkMmIwNGRmMTBmYmNlYmQzY2IiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtc2hlcmxvY2syNjUgLS1kaXNhYmxlLWRlYzI2NSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZwotCi1QQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMiCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbGliZGUyNjUvbGliZGUyNjVfMS4wLjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmRlMjY1L2xpYmRlMjY1XzEuMC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxM2RjYzcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmRlMjY1L2xpYmRlMjY1XzEuMC41LmJiCkBAIC0wLDAgKzEsMTkgQEAKK0RFU0NSSVBUSU9OID0gImxpYmRlMjY1IGlzIGFuIG9wZW4gc291cmNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBoLjI2NSBcCit2aWRlbyBjb2RlYy4gSXQgaXMgd3JpdHRlbiBmcm9tIHNjcmF0Y2ggYW5kIGhhcyBhIHBsYWluIEMgQVBJIHRvIGVuYWJsZSBhIFwKK3NpbXBsZSBpbnRlZ3JhdGlvbiBpbnRvIG90aGVyIHNvZnR3YXJlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGliZGUyNjUub3JnLyIKK1NFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgorCitMSUNFTlNFID0gIkxHUEx2MyAmIE1JVCIKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY5NWI1NTY3OTlhYmIyNDM1Yzk3YTExM2NkY2E1MTJmIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zdHJ1a3R1cmFnL2xpYmRlMjY1L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUzZjI3N2Q4OTAzNDA4NjE1YTVjYzM0NzE4YjM5MWI4M2M5N2M2NDZmYWVhNGY0MWRhOTNiYWM1ZWUwOGE4N2YiCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtc2hlcmxvY2syNjUgLS1kaXNhYmxlLWRlYzI2NSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZworCitQQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMiCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbWluaWRsbmEvbWluaWRsbmEuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYS5pbmMKaW5kZXggMTg3ZmY1My4uMDQ2NDhhNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYS5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYS5pbmMKQEAgLTEyLDYgKzEyLDcgQEAKICAgICAgICAgICAgZmlsZTovL21pbmlkbG5hLWRhZW1vbi5pbml0LmQgXAogICAgICAgICAgICBmaWxlOi8vbWluaWRsbmEuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVwZGF0ZS1HZXR0ZXh0LXZlcnNpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLWNsb2NrX2dldHRpbWUtc2VwcmF0ZWx5LWZyb20tX19OLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYS8wMDAxLVVwZGF0ZS1HZXR0ZXh0LXZlcnNpb24ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL21pbmlkbG5hL21pbmlkbG5hLzAwMDEtVXBkYXRlLUdldHRleHQtdmVyc2lvbi5wYXRjaAppbmRleCBjMTgwOTVkLi42MTAwZGEzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL21pbmlkbG5hL21pbmlkbG5hLzAwMDEtVXBkYXRlLUdldHRleHQtdmVyc2lvbi5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL21pbmlkbG5hL21pbmlkbG5hLzAwMDEtVXBkYXRlLUdldHRleHQtdmVyc2lvbi5wYXRjaApAQCAtMTAsOCArMTAsNiBAQAogIGNvbmZpZ3VyZS5hYyB8IDQgKystLQogIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGYzNDNkMjEuLmE1NTZiMzMgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwogQEAgLTE0LDcgKzE0LDcgQEAKQEAgLTIzLDEyICsyMSwxMiBAQAogICNMVF9JTklUCiAgCiAgQUNfQ0FOT05JQ0FMX1RBUkdFVAotQEAgLTI4LDcgKzI4LDcgQEAgbTRfaWZkZWYoW0FDX1VTRV9TWVNURU1fRVhURU5TSU9OU10sIFtBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlNdKQorQEAgLTI4LDcgKzI4LDcgQEAgbTRfaWZkZWYoW0FDX1VTRV9TWVNURU1fRVhURU5TSU9OU10sIFtBQwogIAogIEFNX0lDT05WCiAgQU1fR05VX0dFVFRFWFQoW2V4dGVybmFsXSkKIC1BTV9HTlVfR0VUVEVYVF9WRVJTSU9OKDAuMTgpCi0rQU1fR05VX0dFVFRFWFRfVkVSU0lPTigwLjE5KQorK0FNX0dOVV9HRVRURVhUX1ZFUlNJT04oMC4yMCkKICAKICAjIENoZWNrcyBmb3IgcHJvZ3JhbXMuCiAgQUNfUFJPR19BV0sKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbWluaWRsbmEvbWluaWRsbmEvMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLWNsb2NrX2dldHRpbWUtc2VwcmF0ZWx5LWZyb20tX19OLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9taW5pZGxuYS9taW5pZGxuYS8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItY2xvY2tfZ2V0dGltZS1zZXByYXRlbHktZnJvbS1fX04ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRhMzA3ZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvbWluaWRsbmEvbWluaWRsbmEvMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLWNsb2NrX2dldHRpbWUtc2VwcmF0ZWx5LWZyb20tX19OLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0Zyb20gMTExOGIxOTEyOTE2OTI0YmJmYTNmZDRkY2VkOWRmZWQwMWZiZjBlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDkgTWFyIDIwMjAgMDk6NDQ6MzMgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBDaGVjayBmb3IgY2xvY2tfZ2V0dGltZSBzZXByYXRlbHkgZnJvbQorIF9fTlJfY2xvY2tfZ2V0dGltZQorCitUaGlzIGhlbHBzIHByaW9yaXRpemUgdXNpbmcgY2xvY2tfZ2V0dGltZSBBUEkgZnJvbSBsaWJjIG92ZXIgc3lzY2FsbAorc2luY2UgZGlyZWN0IHVzZSBvZiBfX05SX2Nsb2NrX2dldHRpbWUgaXMgbm90IHRpbWU2NC1zYWZlCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyB8IDEwICsrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTEyNSw2ICsxMjUsMTAgQEAgY2FzZSAkaG9zdCBpbgorIGVzYWMKKyAKKyBBQ19DSEVDS19IRUFERVJTKHN5c2NhbGwuaCBzeXMvc3lzY2FsbC5oIG1hY2gvbWFjaF90aW1lLmgpCisrCisrQUNfTVNHX0NIRUNLSU5HKFtmb3IgY2xvY2tfZ2V0dGltZV0pCisrQUNfU0VBUkNIX0xJQlMoW2Nsb2NrX2dldHRpbWVdLCBbcnRdLCBbQUNfREVGSU5FKFtIQVZFX0NMT0NLX0dFVFRJTUVdLCBbMV0sIFt1c2UgY2xvY2tfZ2V0dGltZV0pXSwpCisrCisgQUNfTVNHX0NIRUNLSU5HKFtmb3IgX19OUl9jbG9ja19nZXR0aW1lIHN5c2NhbGxdKQorIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICBbQUNfTEFOR19QUk9HUkFNKAorQEAgLTE0Myw3ICsxNDcsNiBAQCBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgXSwKKyAgICAgWworICAgICAgICAgQUNfTVNHX1JFU1VMVChbbm9dKQorLSAgICAgICAgQUNfU0VBUkNIX0xJQlMoW2Nsb2NrX2dldHRpbWVdLCBbcnRdLCBbQUNfREVGSU5FKFtIQVZFX0NMT0NLX0dFVFRJTUVdLCBbMV0sIFt1c2UgY2xvY2tfZ2V0dGltZV0pXSwpCisgICAgIF0pCisgCisgQUNfQ0hFQ0tfSEVBREVSKGxpbnV4L25ldGxpbmsuaCwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvb3BlbmgyNjQvb3BlbmgyNjQvMDAwMS1NYWtlZmlsZS1Vc2UtY3Atb3B0aW9ucy10by1wcmVzZXJ2ZS1maWxlLW1vZGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL29wZW5oMjY0L29wZW5oMjY0LzAwMDEtTWFrZWZpbGUtVXNlLWNwLW9wdGlvbnMtdG8tcHJlc2VydmUtZmlsZS1tb2RlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyZjMyOTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL29wZW5oMjY0L29wZW5oMjY0LzAwMDEtTWFrZWZpbGUtVXNlLWNwLW9wdGlvbnMtdG8tcHJlc2VydmUtZmlsZS1tb2RlLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gMWMzYmRhNDVjNTVkMjMzNGFmMzg0Y2FmOWU3ZjI0MGI3YWFmMmViNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDMgTWFyIDIwMjAgMjI6Mjg6MjUgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGU6IFVzZSBjcCBvcHRpb25zIHRvIHByZXNlcnZlIGZpbGUgbW9kZQorCitUaGlzIGZpeGVzIHBhY2thZ2luZyBpc3N1ZXMgZS5nLgorb3BlbmgyNjQ6IC91c3IvbGliL2xpYm9wZW5oMjY0LnNvIGlzIG93bmVkIGJ5IHVpZCAxMDAwLCB3aGljaCBpcyB0aGUgc2FtZSBhcyB0aGUgdXNlciBydW5uaW5nIGJpdGJha2UKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9jaXNjby9vcGVuaDI2NC9wdWxsLzMyNDVdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggNzRmZjAyOWQuLmFjNjQzNDEyIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMzA2LDggKzMwNiw4IEBAIGluc3RhbGwtc2hhcmVkOiAkKExJQlBSRUZJWCkkKFBST0pFQ1RfTkFNRSkuJChTSEFSRURMSUJTVUZGSVgpIGluc3RhbGwtaGVhZGVycyAkCisgCW1rZGlyIC1wICQoREVTVERJUikkKFNIQVJFRExJQl9ESVIpCisgCWluc3RhbGwgLW0gNzU1ICQoTElCUFJFRklYKSQoUFJPSkVDVF9OQU1FKS4kKFNIQVJFRExJQlNVRkZJWEZVTExWRVIpICQoREVTVERJUikkKFNIQVJFRExJQl9ESVIpCisgCWlmIFsgIiQoU0hBUkVETElCU1VGRklYRlVMTFZFUikiICE9ICIkKFNIQVJFRExJQlNVRkZJWCkiIF07IHRoZW4gXAorLQkgIGNwIC1hICQoTElCUFJFRklYKSQoUFJPSkVDVF9OQU1FKS4kKFNIQVJFRExJQlNVRkZJWE1BSk9SVkVSKSAkKERFU1RESVIpJChTSEFSRURMSUJfRElSKSA7IFwKKy0JICBjcCAtYSAkKExJQlBSRUZJWCkkKFBST0pFQ1RfTkFNRSkuJChTSEFSRURMSUJTVUZGSVgpICQoREVTVERJUikkKFNIQVJFRExJQl9ESVIpIDsgXAorKwkgIGNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzICQoTElCUFJFRklYKSQoUFJPSkVDVF9OQU1FKS4kKFNIQVJFRExJQlNVRkZJWE1BSk9SVkVSKSAkKERFU1RESVIpJChTSEFSRURMSUJfRElSKSA7IFwKKysJICBjcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAkKExJQlBSRUZJWCkkKFBST0pFQ1RfTkFNRSkuJChTSEFSRURMSUJTVUZGSVgpICQoREVTVERJUikkKFNIQVJFRExJQl9ESVIpIDsgXAorIAlmaQorIAlta2RpciAtcCAkKERFU1RESVIpJChQUkVGSVgpLyQoTElCRElSX05BTUUpL3BrZ2NvbmZpZworIAlpbnN0YWxsIC1tIDY0NCAkKFBST0pFQ1RfTkFNRSkucGMgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUl9OQU1FKS9wa2djb25maWcKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvb3BlbmgyNjQvb3BlbmgyNjRfMS43LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL29wZW5oMjY0L29wZW5oMjY0XzEuNy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmYwMjhhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvb3BlbmgyNjQvb3BlbmgyNjRfMS43LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1ERVNDUklQVElPTiA9ICJPcGVuSDI2NCBpcyBhIGNvZGVjIGxpYnJhcnkgd2hpY2ggc3VwcG9ydHMgSC4yNjQgZW5jb2RpbmcgYW5kIFwKLWRlY29kaW5nLiBJdCBpcyBzdWl0YWJsZSBmb3IgdXNlIGluIHJlYWwgdGltZSBhcHBsaWNhdGlvbnMgc3VjaCBhcyBXZWJSVEMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuaDI2NC5vcmcvIgotU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCi0KLURFUEVORFNfeDg2ICs9ICJuYXNtLW5hdGl2ZSIKLURFUEVORFNfeDg2LTY0ICs9ICJuYXNtLW5hdGl2ZSIKLQotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iYjZkMzc3MWRhNmEwN2QzM2ZkNTBkNGQ5YWE3M2JjZiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLVNSQ1JFViA9ICJhMTgwYzlkNGQ2ZjFhNDgzMGNhOWVlZDlkMTU5ZDU0OTk2YmQ2M2NiIgotQlJBTkNIID0gIm9wZW5oMjY0djEuNyIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9jaXNjby9vcGVuaDI2NC5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPSR7QlJBTkNIfTsiCi0KLUNPTVBBVElCTEVfTUFDSElORV9hcm12N2EgPSAiKC4qKSIKLUNPTVBBVElCTEVfTUFDSElORV9hYXJjaDY0ID0gIiguKikiCi1DT01QQVRJQkxFX01BQ0hJTkVfeDg2ID0gIiguKikiCi1DT01QQVRJQkxFX01BQ0hJTkVfeDg2LTY0ID0gIiguKikiCi1DT01QQVRJQkxFX01BQ0hJTkVfbWlwcyA9ICIoLiopIgotQ09NUEFUSUJMRV9NQUNISU5FX21pcHM2NCA9ICIoLiopIgotCi1FWFRSQV9PRU1BS0VfYXJtdjdhID0gIkFSQ0g9YXJtIgotRVhUUkFfT0VNQUtFX2FybXY3dmUgPSAiQVJDSD1hcm0iCi1FWFRSQV9PRU1BS0VfYWFyY2g2NCA9ICJBUkNIPWFybTY0IgotRVhUUkFfT0VNQUtFX3g4NiA9ICJBUkNIPWkzODYiCi1FWFRSQV9PRU1BS0VfeDg2LTY0ID0gIkFSQ0g9eDg2XzY0IgotRVhUUkFfT0VNQUtFX21pcHMgPSAiQVJDSD1taXBzIgotRVhUUkFfT0VNQUtFX21pcHM2NCA9ICJBUkNIPW1pcHM2NCIKLQotZG9fY29uZmlndXJlKCkgewotICAgIDoKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICBvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBQUkVGSVg9JHtwcmVmaXh9Ci19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL29wZW5oMjY0L29wZW5oMjY0XzIuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9vcGVuaDI2NC9vcGVuaDI2NF8yLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzY1ZWYyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9vcGVuaDI2NC9vcGVuaDI2NF8yLjEuMC5iYgpAQCAtMCwwICsxLDQ5IEBACitERVNDUklQVElPTiA9ICJPcGVuSDI2NCBpcyBhIGNvZGVjIGxpYnJhcnkgd2hpY2ggc3VwcG9ydHMgSC4yNjQgZW5jb2RpbmcgYW5kIFwKK2RlY29kaW5nLiBJdCBpcyBzdWl0YWJsZSBmb3IgdXNlIGluIHJlYWwgdGltZSBhcHBsaWNhdGlvbnMgc3VjaCBhcyBXZWJSVEMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuaDI2NC5vcmcvIgorU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCisKK0RFUEVORFNfYXBwZW5kX3g4NiA9ICIgbmFzbS1uYXRpdmUiCitERVBFTkRTX2FwcGVuZF94ODYtNjQgPSAiIG5hc20tbmF0aXZlIgorCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWJiNmQzNzcxZGE2YTA3ZDMzZmQ1MGQ0ZDlhYTczYmNmIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDUkVWID0gImE2MGUyOGVmZTIyN2VhOGVhNzYwYjFlMjlhODk0M2UzNzFlYmU0YjMiCitCUkFOQ0ggPSAib3BlbmgyNjR2Mi4xLjAiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY2lzY28vb3BlbmgyNjQuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD0ke0JSQU5DSH0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1Vc2UtY3Atb3B0aW9ucy10by1wcmVzZXJ2ZS1maWxlLW1vZGUucGF0Y2ggXAorICAgICAgICAgICAiCisKK0NPTVBBVElCTEVfTUFDSElORV9hcm12N2EgPSAiKC4qKSIKK0NPTVBBVElCTEVfTUFDSElORV9hYXJjaDY0ID0gIiguKikiCitDT01QQVRJQkxFX01BQ0hJTkVfeDg2ID0gIiguKikiCitDT01QQVRJQkxFX01BQ0hJTkVfeDg2LTY0ID0gIiguKikiCitDT01QQVRJQkxFX01BQ0hJTkVfbWlwcyA9ICIoLiopIgorQ09NUEFUSUJMRV9NQUNISU5FX21pcHM2NCA9ICIoLiopIgorCitFWFRSQV9PRU1BS0VfYXJtdjdhID0gIkFSQ0g9YXJtIgorRVhUUkFfT0VNQUtFX2FybXY3dmUgPSAiQVJDSD1hcm0iCitFWFRSQV9PRU1BS0VfYWFyY2g2NCA9ICJBUkNIPWFybTY0IgorRVhUUkFfT0VNQUtFX3g4NiA9ICJBUkNIPWkzODYiCitFWFRSQV9PRU1BS0VfeDg2LTY0ID0gIkFSQ0g9eDg2XzY0IgorRVhUUkFfT0VNQUtFX21pcHMgPSAiQVJDSD1taXBzIgorRVhUUkFfT0VNQUtFX21pcHM2NCA9ICJBUkNIPW1pcHM2NCIKK0VYVFJBX09FTUFLRV9yaXNjdjY0ID0gIkFSQ0g9cmlzY3Y2NCIKKworRVhUUkFfT0VNQUtFX2FwcGVuZCA9ICIgRU5BQkxFUElDPVllcyIKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICA6Cit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gUFJFRklYPSR7cHJlZml4fQorfQorCitDTEVBTkJST0tFTiA9ICIxIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLW11bHRpbWVkaWEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtbXVsdGltZWRpYS5iYgppbmRleCBjZWY0NWY5Li5lMGNiNDE1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtbXVsdGltZWRpYS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtbXVsdGltZWRpYS5iYgpAQCAtMjksOSArMjksOSBAQAogICAgIHJ0bXBkdW1wIGxpYm9wZW5tcHQgc2Nocm9lZGluZ2VyIG1wZCBtcGMgbGlibXBkY2xpZW50IFwKICAgICBuY21wYyBsaWJtcGQgZGNhZGVjIGxpYmllYzYxODgzIFwKICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInBhbSIsICIiLCAiIiwgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygiTElDRU5TRV9GTEFHU19XSElURUxJU1QiLCAiY29tbWVyY2lhbCIsICJtaW5pZGxuYSBnc3QtZmx1ZW5kby1tcGVnZGVtdXggdmxjIiwgIiIsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkxJQ0VOU0VfRkxBR1NfV0hJVEVMSVNUIiwgImNvbW1lcmNpYWwiLCAidm8tYWFjZW5jIHNveCBsaWJkZTI2NSBnc3Qtb3Blbm1heCIsICIiLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIsICJjb21tZXJjaWFsIiwgInN0cmVhbXJpcHBlciBnc3QtcGx1Z2lucy11Z2x5IGdzdC1mbHVlbmRvLW1wMyBnc3QtcGx1Z2lucy1nbCIsICIiLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIsICJjb21tZXJjaWFsIiwgIm1pbmlkbG5hIHZsYyIsICIiLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIsICJjb21tZXJjaWFsIiwgInZvLWFhY2VuYyBzb3ggbGliZGUyNjUiLCAiIiwgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiTElDRU5TRV9GTEFHU19XSElURUxJU1QiLCAiY29tbWVyY2lhbCIsICJzdHJlYW1yaXBwZXIiLCAiIiwgZCl9IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygiTElDRU5TRV9GTEFHU19XSElURUxJU1QiLCAiY29tbWVyY2lhbCIsICJvcGVuaDI2NCBvcGVuY29yZS1hbXIgZmFhYyB2by1hbXJ3YmVuYyIsICIiLCBkKX0gXAogICAgICIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9zYW1wbGUtY29udGVudC9iaWdidWNrYnVubnktMTA4MHAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NhbXBsZS1jb250ZW50L2JpZ2J1Y2tidW5ueS0xMDgwcC5iYgppbmRleCBjZWUzODZjLi43MGViNmU0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NhbXBsZS1jb250ZW50L2JpZ2J1Y2tidW5ueS0xMDgwcC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NhbXBsZS1jb250ZW50L2JpZ2J1Y2tidW5ueS0xMDgwcC5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiQmlnIEJ1Y2sgQnVubnkgbW92aWUgLSAxMDgwUCIKIExJQ0VOU0UgPSAiQ0MtQlktMy4wIgogIyBodHRwOi8vd3d3LmJpZ2J1Y2tidW5ueS5vcmcvaW5kZXgucGhwL2Fib3V0LwotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvQ0MtQlktMy4wO21kNT1kZmEwMmI1NzU1NjI5MDIyZTI2N2YxMGI5YzBhMmFiNyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9DQy1CWS0zLjA7bWQ1PWRmYTAyYjU3NTU2MjkwMjJlMjY3ZjEwYjljMGEyYWI3IgogCiBTUkNfVVJJID0gImh0dHA6Ly90aGVtYXp6b25lLmNvbS9iaWdfYnVja19idW5ueV8xMDgwcF9zdXJyb3VuZC5hdmkiCiBTUkNfVVJJW21kNXN1bV0gPSAiMjIzOTkxYzhiMzM1NjRlYjc3OTg4YTRjMTNjMWM3NmEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NhbXBsZS1jb250ZW50L2JpZ2J1Y2tidW5ueS00ODBwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9zYW1wbGUtY29udGVudC9iaWdidWNrYnVubnktNDgwcC5iYgppbmRleCBkMzk1YjkyLi5kZjIzNjg5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NhbXBsZS1jb250ZW50L2JpZ2J1Y2tidW5ueS00ODBwLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc2FtcGxlLWNvbnRlbnQvYmlnYnVja2J1bm55LTQ4MHAuYmIKQEAgLTEsNyArMSw3IEBACiBTVU1NQVJZID0gIkJpZyBCdWNrIEJ1bm55IG1vdmllIC0gNDgwUCIKIExJQ0VOU0UgPSAiQ0MtQlktMy4wIgogIyBodHRwOi8vd3d3LmJpZ2J1Y2tidW5ueS5vcmcvaW5kZXgucGhwL2Fib3V0LwotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvQ0MtQlktMy4wO21kNT1kZmEwMmI1NzU1NjI5MDIyZTI2N2YxMGI5YzBhMmFiNyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09NTU9OX0xJQ0VOU0VfRElSfS9DQy1CWS0zLjA7bWQ1PWRmYTAyYjU3NTU2MjkwMjJlMjY3ZjEwYjljMGEyYWI3IgogCiBTUkNfVVJJID0gImh0dHBzOi8vYXJjaGl2ZS5vcmcvZG93bmxvYWQvQmlnQnVja0J1bm55L2JpZ19idWNrX2J1bm55XzQ4MHBfc3Vycm91bmQtZml4LmF2aSIKIFNSQ19VUklbbWQ1c3VtXSA9ICJlZDdlZDAxZTlhZWZiYThkZGQ3N2MxMzMzMmNlYzEyMCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc2FtcGxlLWNvbnRlbnQvYmlnYnVja2J1bm55LTcyMHAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NhbXBsZS1jb250ZW50L2JpZ2J1Y2tidW5ueS03MjBwLmJiCmluZGV4IDIwZDU2MjcuLmNiOGVjZTAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc2FtcGxlLWNvbnRlbnQvYmlnYnVja2J1bm55LTcyMHAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS9zYW1wbGUtY29udGVudC9iaWdidWNrYnVubnktNzIwcC5iYgpAQCAtMSw3ICsxLDcgQEAKIFNVTU1BUlkgPSAiQmlnIEJ1Y2sgQnVubnkgbW92aWUgLSA3MjBQIgogTElDRU5TRSA9ICJDQy1CWS0zLjAiCiAjIGh0dHA6Ly93d3cuYmlnYnVja2J1bm55Lm9yZy9pbmRleC5waHAvYWJvdXQvCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9DQy1CWS0zLjA7bWQ1PWRmYTAyYjU3NTU2MjkwMjJlMjY3ZjEwYjljMGEyYWI3IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L0NDLUJZLTMuMDttZDU9ZGZhMDJiNTc1NTYyOTAyMmUyNjdmMTBiOWMwYTJhYjciCiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9hcmNoaXZlLm9yZy9kb3dubG9hZC9CaWdCdWNrQnVubnkvYmlnX2J1Y2tfYnVubnlfNzIwcF9zdXJyb3VuZC5hdmkiCiBTUkNfVVJJW21kNXN1bV0gPSAiMGRhOGZlMTI0NTk1ZjViMjA2ZDY0Y2IxNDAwYmJlZmMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3NhbXBsZS1jb250ZW50L3RlYXJzb2ZzdGVlbC0xMDgwcC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc2FtcGxlLWNvbnRlbnQvdGVhcnNvZnN0ZWVsLTEwODBwLmJiCmluZGV4IDA1ODJhNDguLjA0Y2JkMmUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc2FtcGxlLWNvbnRlbnQvdGVhcnNvZnN0ZWVsLTEwODBwLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvc2FtcGxlLWNvbnRlbnQvdGVhcnNvZnN0ZWVsLTEwODBwLmJiCkBAIC0xLDYgKzEsNiBAQAogU1VNTUFSWSA9ICJUZWFycyBvZiBTdGVlbCBtb3ZpZSAtIDEwODBQIgogTElDRU5TRSA9ICJDQy1CWS0zLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9DQy1CWS0zLjA7bWQ1PWRmYTAyYjU3NTU2MjkwMjJlMjY3ZjEwYjljMGEyYWI3IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L0NDLUJZLTMuMDttZDU9ZGZhMDJiNTc1NTYyOTAyMmUyNjdmMTBiOWMwYTJhYjciCiAKIFNSQ19VUkkgPSAiaHR0cDovL2Z0cC5ubHV1Zy5ubC9wdWIvZ3JhcGhpY3MvYmxlbmRlci9kZW1vL21vdmllcy9Ub1MvVG9TLTRrLTE5MjAubW92IgogU1JDX1VSSVttZDVzdW1dID0gImUzZmVlNTViMTc3OWM1NTNlMzdiMWQzOTg4ZTZmYWQ2IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS92bGMvdmxjLzAwMDEtVXNlLXBhY2thZ2Vjb25maWctdG8tZGV0ZWN0LW1tYWwtc3VwcG9ydC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdmxjL3ZsYy8wMDAxLVVzZS1wYWNrYWdlY29uZmlnLXRvLWRldGVjdC1tbWFsLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI0YWFhMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdmxjL3ZsYy8wMDAxLVVzZS1wYWNrYWdlY29uZmlnLXRvLWRldGVjdC1tbWFsLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSBlODcxNmE3NzU1ZWVmOTNlMTAzM2JiOTEzZTFlYjRmYWVlNTQ2NThmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTUgQXByIDIwMjAgMTg6Mjk6MjYgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIHBhY2thZ2Vjb25maWcgdG8gZGV0ZWN0IG1tYWwgc3VwcG9ydAorCitUaGlzIG5lZWRzIHVzZXJsYW5kIGdyYXBoaWNzIGxpYnJhcmllcywgYmVjYXVzZSBkaXN0cm9zIG1heSBpbnN0YWxsIGl0CitpbiBkaWZmZXJlbnQgbG9jYXRpb25zLCB0aGVyZWZvcmUgaXRzIGJlc3QgdG8gcmVseSBvbiBwa2djb25mIHRvIGZpbmQKK3RoZSBsaWJzIGFuZCBoZWFkZXIgbG9jYXRpb25zIGluc3RlYWQgb2YgYXNzdW1pbmcgL29wdC92YyB3aGljaCBtaWdodAord29yayBvbiBzb21lIGRpc3Ryb3MgKCBsaWtlIHJhc3BiaWFuICkgYnV0IG5vdCBldmVyeXdoZXJlCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAzMSArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBkN2NmNjkyLi5mODFiOTlkIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0zNDI3LDI3ICszNDI3LDE4IEBAIEFDX0FSR19FTkFCTEUobW1hbCwKKyAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1tbWFsXSwKKyAgICAgW011bHRpLU1lZGlhIEFic3RyYWN0aW9uIExheWVyIChNTUFMKSBoYXJkd2FyZSBwbHVnaW4gKGRlZmF1bHQgZW5hYmxlKV0pKQorIGlmIHRlc3QgIiR7ZW5hYmxlX21tYWx9IiAhPSAibm8iOyB0aGVuCistICBWTENfU0FWRV9GTEFHUworLSAgTERGTEFHUz0iJHtMREZMQUdTfSAtTC9vcHQvdmMvbGliIC1sdmNob3N0aWYiCistICBDUFBGTEFHUz0iJHtDUFBGTEFHU30gLWlzeXN0ZW0gL29wdC92Yy9pbmNsdWRlIC1pc3lzdGVtIC9vcHQvdmMvaW5jbHVkZS9pbnRlcmZhY2UvdmNvcy9wdGhyZWFkcyAtaXN5c3RlbSAvb3B0L3ZjL2luY2x1ZGUvaW50ZXJmYWNlL3ZtY3NfaG9zdC9saW51eCIKKy0gIEFDX0NIRUNLX0hFQURFUlMoaW50ZXJmYWNlL21tYWwvbW1hbC5oLAorLSAgICBbIEFDX0NIRUNLX0xJQihiY21faG9zdCwgdmNfdHZfdW5yZWdpc3Rlcl9jYWxsYmFja19mdWxsLCBbCistICAgICAgICBoYXZlX21tYWw9InllcyIKKy0gICAgICAgIFZMQ19BRERfUExVR0lOKFttbWFsXSkKKy0gICAgICAgIFZMQ19BRERfTERGTEFHUyhbbW1hbF0sWyAtTC9vcHQvdmMvbGliIF0pCistICAgICAgICBWTENfQUREX0NGTEFHUyhbbW1hbF0sWyAtaXN5c3RlbSAvb3B0L3ZjL2luY2x1ZGUgLWlzeXN0ZW0gL29wdC92Yy9pbmNsdWRlL2ludGVyZmFjZS92Y29zL3B0aHJlYWRzIC1pc3lzdGVtIC9vcHQvdmMvaW5jbHVkZS9pbnRlcmZhY2Uvdm1jc19ob3N0L2xpbnV4IF0pCistICAgICAgICBWTENfQUREX0xJQlMoW21tYWxdLFsgLWxiY21faG9zdCAtbG1tYWwgLWxtbWFsX2NvcmUgLWxtbWFsX2NvbXBvbmVudHMgLWxtbWFsX3V0aWwgLWx2Y2hvc3RpZiBdKSBdLCBbCistICAgICAgICAgIEFTX0lGKFt0ZXN0ICIke2VuYWJsZV9tbWFsfSIgPSAieWVzIl0sCistICAgICAgICAgICAgWyBBQ19NU0dfRVJST1IoW0Nhbm5vdCBmaW5kIGJjbSBsaWJyYXJ5Li4uXSkgXSwKKy0gICAgICAgICAgICBbIEFDX01TR19XQVJOKFtDYW5ub3QgZmluZCBiY20gbGlicmFyeS4uLl0pIF0pCistICAgICAgICAgIF0sCistICAgICAgICBbXSkKKy0gICAgXSAsIFsgQVNfSUYoW3Rlc3QgIiR7ZW5hYmxlX21tYWx9IiA9ICJ5ZXMiXSwKKy0gICAgICBbIEFDX01TR19FUlJPUihbQ2Fubm90IGZpbmQgZGV2ZWxvcG1lbnQgaGVhZGVycyBmb3IgbW1hbC4uLl0pIF0sCistICAgICAgWyBBQ19NU0dfV0FSTihbQ2Fubm90IGZpbmQgZGV2ZWxvcG1lbnQgaGVhZGVycyBmb3IgbW1hbC4uLl0pIF0pIF0pCistICBWTENfUkVTVE9SRV9GTEFHUworKyAgICAgIFBLR19DSEVDS19NT0RVTEVTKEJDTUhPU1QsIFtiY21faG9zdF0sIFsKKysgICAgICBIQVZFX0JDTUhPU1Q9eWVzCisrICAgICAgQUNfREVGSU5FKEhBVkVfQkNNSE9TVCwgMSwgW0RlZmluZSB0aGlzIGlmIHlvdSBoYXZlIGhhdmUgdXNlcmxhbmcgZ3JhcGhpY3MgaW5zdGFsbGVkXSkKKysgICAgICBWTENfQUREX0xJQlMoW2JjbWhvc3RdLFskQkNNSE9TVF9MSUJTXSkKKysgICAgICBWTENfQUREX0NGTEFHUyhbYmNtaG9zdF0sWyRCQ01IT1NUX0NGTEFHU10pCisrICAgICAgXSw6CisrICAgICAgW0FDX01TR19XQVJOKFske0JDTUhPU1RfUEtHX0VSUk9SU306IHVzZXJsYW5kIGdyYXBoaWNzIG5vdCBhdmFpbGFibGUuXSkKKysgICAgICBIQVZFX0JDTUhPU1Q9bm9dKQorKworKyAgICAgIEFDX0NIRUNLX0hFQURFUlMoaW50ZXJmYWNlL21tYWwvbW1hbC5oKQorIGZpCistQU1fQ09ORElUSU9OQUwoW0hBVkVfTU1BTF0sIFt0ZXN0ICIke2hhdmVfbW1hbH0iID0gInllcyJdKQorK0FNX0NPTkRJVElPTkFMKFtIQVZFX01NQUxdLCBbdGVzdCAiJHtoYXZlX2JjbWhvc3R9IiA9ICJ5ZXMiXSkKKyAKKyBkbmwKKyBkbmwgZXZhcyBwbHVnaW4KKy0tIAorMi4yNi4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdmxjL3ZsY18zLjAuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdmxjL3ZsY18zLjAuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE3MTc0ZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW11bHRpbWVkaWEvcmVjaXBlcy1tdWx0aW1lZGlhL3ZsYy92bGNfMy4wLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVmlkZW8gcGxheWVyIGFuZCBzdHJlYW1lciAtIGRhdmluY2kgZWRpdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cudmlkZW9sYW4ub3JnIgotU0VDVElPTiA9ICJtdWx0aW1lZGlhIgotCi1MSUNFTlNFID0gIkdQTC0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotREVQRU5EUyA9ICJjb3JldXRpbHMtbmF0aXZlIGZyaWJpZGkgbGlidG9vbCBsaWJnY3J5cHQgbGliZ2NyeXB0LW5hdGl2ZSBcCi0gICBkYnVzIGxpYnhtbDIgZ251dGxzIFwKLSAgIHRyZW1vciBmYWFkMiBmZm1wZWcgZmxhYyBmbHVpZHN5bnRoIGFsc2EtbGliIFwKLSAgIGx1YS1uYXRpdmUgbHVhIGxpYmlkbiBcCi0gICBhdmFoaSBqcGVnIHh6IGxpYm1vZHBsdWcgbXBlZzJkZWMgXAotICAgbGlibXRwIGxpYm9wdXMgb3JjIGxpYnNhbXBsZXJhdGUwIGxpYnVzYjEgc2Nocm9lZGluZ2VyIHRhZ2xpYiBcCi0gICB0aWZmIgotCi0jIFdoaWxlIHRoaXMgaXRlbSBkb2VzIG5vdCByZXF1aXJlIGl0LCBpdCBkZXBlbmRzIG9uIGZmbXBlZyB3aGljaCBkb2VzCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnZpZGVvbGFuLm9yZy9wdWIvdmlkZW9sYW4vJHtCUE59LyR7UFZ9LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LW1ha2Utb3BlbmN2LWNvbmZpZ3VyYWJsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXVzZS12b3JiaXNpZGVjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtZml4LWx1YUwtY2hlY2tpbnQucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjc0NDQ0MmVjMGMxNDU0NTNlYTFkMjU3OTE0YzgwNzJlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUwMTQ5ZWY0YTIwYTE5YjllY2Q4NzMwOWMyZDI3Nzg3ZWUzZjQ3ZGZkNDdjNjYzOTY0NGJjMWY2ZmQ5NWJkZjYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCi0KLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotZXhwb3J0IEJVSUxEQ0MgPSAiJHtCVUlMRF9DQ30iCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0tZW5hYmxlLXJ1bi1hcy1yb290IFwKLSAgICAtLWVuYWJsZS14dmlkZW8gXAotICAgIC0tZGlzYWJsZS1zY3JlZW4gLS1kaXNhYmxlLWNhY2EgXAotICAgIC0tZW5hYmxlLXZsbSBcCi0gICAgLS1lbmFibGUtZnJlZXR5cGUgXAotICAgIC0tZW5hYmxlLXRyZW1vciBcCi0gICAgLS1lbmFibGUtdjRsMiAtLWRpc2FibGUtYWEgLS1kaXNhYmxlLWZhYWQgXAotICAgIC0tZW5hYmxlLWRidXMgXAotICAgIC0td2l0aG91dC1jb250cmliIFwKLSAgICAtLXdpdGhvdXQta2RlLXNvbGlkIFwKLSAgICAtLWVuYWJsZS1yZWFscnRzcCBcCi0gICAgLS1kaXNhYmxlLWxpYnRhciBcCi0gICAgLS1lbmFibGUtYXZjb2RlYyBcCi0gICAgYWNfY3ZfcGF0aF9NT0M9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9JHtRVF9ESVJfTkFNRX0vbW9jIFwKLSAgICBhY19jdl9wYXRoX1JDQz0ke1NUQUdJTkdfQklORElSX05BVElWRX0ke1FUX0RJUl9OQU1FfS9yY2MgXAotICAgIGFjX2N2X3BhdGhfVUlDPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfSR7UVRfRElSX05BTUV9L3VpYyBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiBcCi0gICAgbGl2ZTU1NSBkYzEzOTQgZHYxMzk0IG5vdGlmeSBmb250Y29uZmlnIGZyZWV0eXBlIGR2ZHJlYWQgcG5nIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnJywgZCl9IFwKLSIKLQotaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdxdDUnLCAncW1ha2U1X3BhdGhzJywgJycsIGQpfQotCi1QQUNLQUdFQ09ORklHW21hZF0gPSAiLS1lbmFibGUtbWFkLC0tZGlzYWJsZS1tYWQsbGlibWFkIgotUEFDS0FHRUNPTkZJR1thNTJdID0gIi0tZW5hYmxlLWE1MiwtLWRpc2FibGUtYTUyLGxpYmE1MiIKLVBBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtamFjaywtLWRpc2FibGUtamFjayxqYWNrIgotUEFDS0FHRUNPTkZJR1tsaXZlNTU1XSA9ICItLWVuYWJsZS1saXZlNTU1IExJVkU1NTVfUFJFRklYPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0sLS1kaXNhYmxlLWxpdmU1NTUsbGl2ZTU1NSIKLVBBQ0tBR0VDT05GSUdbbGliYXNzXSA9ICItLWVuYWJsZS1saWJhc3MsLS1kaXNhYmxlLWxpYmFzcyxsaWJhc3MiCi1QQUNLQUdFQ09ORklHW3Bvc3Rwcm9jXSA9ICItLWVuYWJsZS1wb3N0cHJvYywtLWRpc2FibGUtcG9zdHByb2MsbGlicG9zdHByb2MiCi1QQUNLQUdFQ09ORklHW2xpYnZhXSA9ICItLWVuYWJsZS1saWJ2YSwtLWRpc2FibGUtbGlidmEsbGlidmEiCi1QQUNLQUdFQ09ORklHW29wZW5jdl0gPSAiLS1lbmFibGUtb3BlbmN2LC0tZGlzYWJsZS1vcGVuY3Ysb3BlbmN2IgotUEFDS0FHRUNPTkZJR1tzcGVleF0gPSAiLS1lbmFibGUtc3BlZXgsLS1kaXNhYmxlLXNwZWV4LHNwZWV4IgotUEFDS0FHRUNPTkZJR1tnc3RyZWFtZXJdID0gIi0tZW5hYmxlLWdzdC1kZWNvZGUsLS1kaXNhYmxlLWdzdC1kZWNvZGUsZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgZ3N0LXBsdWdpbnMtYmFkIgotUEFDS0FHRUNPTkZJR1t2cHhdID0gIi0tZW5hYmxlLXZweCwtLWRpc2FibGUtdnB4LCBsaWJ2cHgiCi1QQUNLQUdFQ09ORklHW3F0NV0gPSAiLS1lbmFibGUtcXQsLS1kaXNhYmxlLXF0LCBxdGJhc2UtbmF0aXZlIHF0eDExZXh0cmFzIHF0c3ZnIgotUEFDS0FHRUNPTkZJR1tmcmVlcmRwXSA9ICItLWVuYWJsZS1mcmVlcmRwLC0tZGlzYWJsZS1mcmVlcmRwLCBmcmVlcmRwIgotUEFDS0FHRUNPTkZJR1tkdmJwc2ldID0gIi0tZW5hYmxlLWR2YnBzaSwtLWRpc2FibGUtZHZicHNpLCBsaWJkdmJwc2kiCi1QQUNLQUdFQ09ORklHW3NhbWJhXSA9ICItLWVuYWJsZS1zbWJjbGllbnQsLS1kaXNhYmxlLXNtYmNsaWVudCwgc2FtYmEiCi1QQUNLQUdFQ09ORklHW3VwbnBdID0gIi0tZW5hYmxlLXVwbnAsLS1kaXNhYmxlLXVwbnAsbGlidXBucCIKLVBBQ0tBR0VDT05GSUdbZHZkbmF2XSA9ICItLWVuYWJsZS1kdmRuYXYsLS1kaXNhYmxlLWR2ZG5hdixsaWJkdmRuYXYgbGliZHZkY3NzIgotUEFDS0FHRUNPTkZJR1tzZnRwXSA9ICItLWVuYWJsZS1zZnRwLC0tZGlzYWJsZS1zZnRwLGxpYnNzaDIiCi1QQUNLQUdFQ09ORklHW3ZvcmJpc10gPSAiLS1lbmFibGUtdm9yYmlzLC0tZGlzYWJsZS12b3JiaXMsbGlidm9yYmlzIGxpYm9nZyIKLVBBQ0tBR0VDT05GSUdbb2dnXSA9ICItLWVuYWJsZS1vZ2csLS1kaXNhYmxlLW9nZyxsaWJ2b3JiaXMgbGlib2dnIgotUEFDS0FHRUNPTkZJR1tkYzEzOTRdID0gIi0tZW5hYmxlLWRjMTM5NCwtLWRpc2FibGUtZGMxMzk0LGxpYmRjMTM5NCIKLVBBQ0tBR0VDT05GSUdbZHYxMzk0XSA9ICItLWVuYWJsZS1kdjEzOTQsLS1kaXNhYmxlLWR2MTM5NCxsaWJyYXcxMzk0IGxpYmF2YzEzOTQiCi1QQUNLQUdFQ09ORklHW3N2Z10gPSAiLS1lbmFibGUtc3ZnLC0tZGlzYWJsZS1zdmcsbGlicnN2ZyIKLVBBQ0tBR0VDT05GSUdbc3ZnZGVjXSA9ICItLWVuYWJsZS1zdmdkZWMsLS1kaXNhYmxlLXN2Z2RlYyxsaWJyc3ZnIGNhaXJvIgotUEFDS0FHRUNPTkZJR1tub3RpZnldID0gIi0tZW5hYmxlLW5vdGlmeSwtLWRpc2FibGUtbm90aWZ5LCBsaWJub3RpZnkgZ3RrKzMiCi1QQUNLQUdFQ09ORklHW2ZvbnRjb25maWddID0gIi0tZW5hYmxlLWZvbnRjb25maWcsLS1kaXNhYmxlLWZvbnRjb25maWcsIGZvbnRjb25maWciCi1QQUNLQUdFQ09ORklHW2ZyZWV0eXBlXSA9ICItLWVuYWJsZS1mcmVldHlwZSwtLWRpc2FibGUtZnJlZXR5cGUsIGZyZWV0eXBlIgotUEFDS0FHRUNPTkZJR1tkdmRyZWFkXSA9ICItLWVuYWJsZS1kdmRyZWFkLC0tZGlzYWJsZS1kdmRyZWFkLCBsaWJkdmRyZWFkIGxpYmR2ZGNzcyIKLVBBQ0tBR0VDT05GSUdbdm5jXSA9ICItLWVuYWJsZS12bmMsLS1kaXNhYmxlLXZuYywgbGlidm5jc2VydmVyIgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14IC0tZW5hYmxlLXhjYiwtLXdpdGhvdXQteCAtLWRpc2FibGUteGNiLCAgeGNiLXV0aWwta2V5c3ltcyBsaWJ4cG0gbGlieGluZXJhbWEiCi1QQUNLQUdFQ09ORklHW3BuZ10gPSAiLS1lbmFibGUtcG5nLC0tZGlzYWJsZS1wbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t2ZHBhdV0gPSAiLS1lbmFibGUtdmRwYXUsLS1kaXNhYmxlLXZkcGF1LGxpYnZkcGF1IgotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotICAgIHNlZCAtaSAtZSBzOicke3RvcF9idWlsZGRpcl9zbGFzaH1saWJ0b29sJzonJHt0b3BfYnVpbGRkaXJfc2xhc2h9JyR7VEFSR0VUX1NZU30tbGlidG9vbDpnICR7Qn0vZG9sdGxpYnRvb2wKLQotICAgICMgbW9jIG5lZWRzIHN1cHBvcnQ6IHByZWNyZWF0ZSBidWlsZCBwYXRocwotICAgIGZvciBxdHBhdGggaW4gYWRhcHRlcnMgY29tcG9uZW50cy9lcGcgY29tcG9uZW50cy9wbGF5bGlzdCBjb21wb25lbnRzL3NvdXQgZGlhbG9ncyBtYW5hZ2VycyBzdHlsZXMgdXRpbC9idXR0b25zOyBkbwotICAgICAgICBta2RpciAtcCAiJHtCfS9tb2R1bGVzL2d1aS9xdC8kcXRwYXRoIgotICAgIGRvbmUKLX0KLQotIyBUaGlzIHJlY2lwZSBwYWNrYWdlcyB2bGMgYXMgYSBsaWJyYXJ5IGFzIHdlbGwsIHNvIHF0NCBkZXBlbmRlbmNpZXMKLSMgY2FuIGJlIGF2b2lkZWQgd2hlbiBvbmx5IHRoZSBsaWJyYXJ5IGlzIGluc3RhbGxlZC4KLVBBQ0tBR0VTID0rICJsaWJ2bGMiCi0KLUxFQURfU09OQU1FX2xpYnZsYyA9ICJsaWJ2bGMuc28uNSIKLUZJTEVTX2xpYnZsYyA9ICIke2xpYmRpcn0vbGliKi5zby4qIgotCi1GSUxFU18ke1BOfSArPSAiXAotICAgICR7YmluZGlyfS92bGMgXAotICAgICR7bGliZGlyfS92bGMvdmxjL2xpYnZsY192ZHBhdS5zbyBcCi0gICAgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMgXAotICAgICR7ZGF0YWRpcn0vdmxjLyBcCi0gICAgJHtkYXRhZGlyfS9pY29ucyBcCi0gICAgJHtkYXRhZGlyfS9tZXRhaW5mby92bGMuYXBwZGF0YS54bWwgXAotIgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIlwKLSAgICAke2xpYmRpcn0vdmxjLyovLmRlYnVnIFwKLSAgICAke2xpYmRpcn0vdmxjL3BsdWdpbnMvKi8uZGVidWcgXAotIgotCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIlwKLSAgICAke2xpYmRpcn0vdmxjL3BsdWdpbnMvKi8qLmEgXAotIgotCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdmxjL3ZsY18zLjAuOS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS92bGMvdmxjXzMuMC45LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZjN2E2MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEvdmxjL3ZsY18zLjAuOS4yLmJiCkBAIC0wLDAgKzEsMTMzIEBACitERVNDUklQVElPTiA9ICJWaWRlbyBwbGF5ZXIgYW5kIHN0cmVhbWVyIC0gZGF2aW5jaSBlZGl0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy52aWRlb2xhbi5vcmciCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiR1BMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitERVBFTkRTID0gImNvcmV1dGlscy1uYXRpdmUgZnJpYmlkaSBsaWJ0b29sIGxpYmdjcnlwdCBsaWJnY3J5cHQtbmF0aXZlIFwKKyAgIGRidXMgbGlieG1sMiBnbnV0bHMgXAorICAgdHJlbW9yIGZhYWQyIGZmbXBlZyBmbGFjIGFsc2EtbGliIFwKKyAgIGx1YS1uYXRpdmUgbHVhIGxpYmlkbiBcCisgICBhdmFoaSBqcGVnIHh6IGxpYm1vZHBsdWcgbXBlZzJkZWMgXAorICAgbGlibXRwIGxpYm9wdXMgb3JjIGxpYnNhbXBsZXJhdGUwIGxpYnVzYjEgc2Nocm9lZGluZ2VyIHRhZ2xpYiBcCisgICB0aWZmIgorCitMREZMQUdTX2FwcGVuZF9yaXNjdjY0ID0gIiAtbGF0b21pYyIKKworIyBXaGlsZSB0aGlzIGl0ZW0gZG9lcyBub3QgcmVxdWlyZSBpdCwgaXQgZGVwZW5kcyBvbiBmZm1wZWcgd2hpY2ggZG9lcworTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC52aWRlb2xhbi5vcmcvcHViL3ZpZGVvbGFuLyR7QlBOfS8ke1BWfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1tYWtlLW9wZW5jdi1jb25maWd1cmFibGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy11c2Utdm9yYmlzaWRlYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA4LWZpeC1sdWFMLWNoZWNraW50LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBhY2thZ2Vjb25maWctdG8tZGV0ZWN0LW1tYWwtc3VwcG9ydC5wYXRjaCBcCisiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTliZGFkMjkzZDgxY2Q0ODUxNmFiYWQ4ZDQ5MGQ4YWI0MDEyOTY0YWU1NDFmZjE5ZTAwMDIxZTA3MWU0NzYwMSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZmVhdHVyZXNfY2hlY2sgZ2V0dGV4dCBwa2djb25maWcgbWltZS14ZGcKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworZXhwb3J0IEJVSUxEQ0MgPSAiJHtCVUlMRF9DQ30iCitFWFRSQV9PRUNPTkYgPSAiXAorICAgIC0tZW5hYmxlLXJ1bi1hcy1yb290IFwKKyAgICAtLWVuYWJsZS14dmlkZW8gXAorICAgIC0tZGlzYWJsZS1zY3JlZW4gLS1kaXNhYmxlLWNhY2EgXAorICAgIC0tZW5hYmxlLXZsbSBcCisgICAgLS1lbmFibGUtZnJlZXR5cGUgXAorICAgIC0tZW5hYmxlLXRyZW1vciBcCisgICAgLS1lbmFibGUtdjRsMiAtLWRpc2FibGUtYWEgLS1kaXNhYmxlLWZhYWQgXAorICAgIC0tZW5hYmxlLWRidXMgXAorICAgIC0td2l0aG91dC1jb250cmliIFwKKyAgICAtLXdpdGhvdXQta2RlLXNvbGlkIFwKKyAgICAtLWVuYWJsZS1yZWFscnRzcCBcCisgICAgLS1kaXNhYmxlLWxpYnRhciBcCisgICAgLS1lbmFibGUtYXZjb2RlYyBcCisgICAgYWNfY3ZfcGF0aF9NT0M9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9JHtRVF9ESVJfTkFNRX0vbW9jIFwKKyAgICBhY19jdl9wYXRoX1JDQz0ke1NUQUdJTkdfQklORElSX05BVElWRX0ke1FUX0RJUl9OQU1FfS9yY2MgXAorICAgIGFjX2N2X3BhdGhfVUlDPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfSR7UVRfRElSX05BTUV9L3VpYyBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz0gIiBcCisgICAgbGl2ZTU1NSBkYzEzOTQgZHYxMzk0IG5vdGlmeSBmb250Y29uZmlnIGZsdWlkc3ludGggZnJlZXR5cGUgZHZkcmVhZCBwbmcgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnLCBkKX0gXAorICAgIHgyNjQgXAorIgorCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3F0NScsICdxbWFrZTVfcGF0aHMnLCAnJywgZCl9CisKK1BBQ0tBR0VDT05GSUdbbW1hbF0gPSAiLS1lbmFibGUtb214aWwgLS1lbmFibGUtb214aWwtdm91dCAtLWVuYWJsZS1ycGktb214aWwgLS1lbmFibGUtbW1hbCwsdXNlcmxhbmQiCitQQUNLQUdFQ09ORklHW3gyNjRdID0gIi0tZW5hYmxlLXgyNjQsLS1kaXNhYmxlLXgyNjQseDI2NCIKK1BBQ0tBR0VDT05GSUdbZmx1aWRzeW50aF0gPSAiLCxmbHVpZHN5bnRoIgorUEFDS0FHRUNPTkZJR1ttYWRdID0gIi0tZW5hYmxlLW1hZCwtLWRpc2FibGUtbWFkLGxpYm1hZCIKK1BBQ0tBR0VDT05GSUdbYTUyXSA9ICItLWVuYWJsZS1hNTIsLS1kaXNhYmxlLWE1MixsaWJhNTIiCitQQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWphY2ssLS1kaXNhYmxlLWphY2ssamFjayIKK1BBQ0tBR0VDT05GSUdbbGl2ZTU1NV0gPSAiLS1lbmFibGUtbGl2ZTU1NSBMSVZFNTU1X1BSRUZJWD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9LC0tZGlzYWJsZS1saXZlNTU1LGxpdmU1NTUiCitQQUNLQUdFQ09ORklHW2xpYmFzc10gPSAiLS1lbmFibGUtbGliYXNzLC0tZGlzYWJsZS1saWJhc3MsbGliYXNzIgorUEFDS0FHRUNPTkZJR1twb3N0cHJvY10gPSAiLS1lbmFibGUtcG9zdHByb2MsLS1kaXNhYmxlLXBvc3Rwcm9jLGxpYnBvc3Rwcm9jIgorUEFDS0FHRUNPTkZJR1tsaWJ2YV0gPSAiLS1lbmFibGUtbGlidmEsLS1kaXNhYmxlLWxpYnZhLGxpYnZhIgorUEFDS0FHRUNPTkZJR1tvcGVuY3ZdID0gIi0tZW5hYmxlLW9wZW5jdiwtLWRpc2FibGUtb3BlbmN2LG9wZW5jdiIKK1BBQ0tBR0VDT05GSUdbc3BlZXhdID0gIi0tZW5hYmxlLXNwZWV4LC0tZGlzYWJsZS1zcGVleCxzcGVleCIKK1BBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyXSA9ICItLWVuYWJsZS1nc3QtZGVjb2RlLC0tZGlzYWJsZS1nc3QtZGVjb2RlLGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCIKK1BBQ0tBR0VDT05GSUdbdnB4XSA9ICItLWVuYWJsZS12cHgsLS1kaXNhYmxlLXZweCwgbGlidnB4IgorUEFDS0FHRUNPTkZJR1txdDVdID0gIi0tZW5hYmxlLXF0LC0tZGlzYWJsZS1xdCwgcXRiYXNlLW5hdGl2ZSBxdHgxMWV4dHJhcyBxdHN2ZyIKK1BBQ0tBR0VDT05GSUdbZnJlZXJkcF0gPSAiLS1lbmFibGUtZnJlZXJkcCwtLWRpc2FibGUtZnJlZXJkcCwgZnJlZXJkcCIKK1BBQ0tBR0VDT05GSUdbZHZicHNpXSA9ICItLWVuYWJsZS1kdmJwc2ksLS1kaXNhYmxlLWR2YnBzaSwgbGliZHZicHNpIgorUEFDS0FHRUNPTkZJR1tzYW1iYV0gPSAiLS1lbmFibGUtc21iY2xpZW50LC0tZGlzYWJsZS1zbWJjbGllbnQsIHNhbWJhIgorUEFDS0FHRUNPTkZJR1t1cG5wXSA9ICItLWVuYWJsZS11cG5wLC0tZGlzYWJsZS11cG5wLGxpYnVwbnAiCitQQUNLQUdFQ09ORklHW2R2ZG5hdl0gPSAiLS1lbmFibGUtZHZkbmF2LC0tZGlzYWJsZS1kdmRuYXYsbGliZHZkbmF2IGxpYmR2ZGNzcyIKK1BBQ0tBR0VDT05GSUdbc2Z0cF0gPSAiLS1lbmFibGUtc2Z0cCwtLWRpc2FibGUtc2Z0cCxsaWJzc2gyIgorUEFDS0FHRUNPTkZJR1t2b3JiaXNdID0gIi0tZW5hYmxlLXZvcmJpcywtLWRpc2FibGUtdm9yYmlzLGxpYnZvcmJpcyBsaWJvZ2ciCitQQUNLQUdFQ09ORklHW29nZ10gPSAiLS1lbmFibGUtb2dnLC0tZGlzYWJsZS1vZ2csbGlidm9yYmlzIGxpYm9nZyIKK1BBQ0tBR0VDT05GSUdbZGMxMzk0XSA9ICItLWVuYWJsZS1kYzEzOTQsLS1kaXNhYmxlLWRjMTM5NCxsaWJkYzEzOTQiCitQQUNLQUdFQ09ORklHW2R2MTM5NF0gPSAiLS1lbmFibGUtZHYxMzk0LC0tZGlzYWJsZS1kdjEzOTQsbGlicmF3MTM5NCBsaWJhdmMxMzk0IgorUEFDS0FHRUNPTkZJR1tzdmddID0gIi0tZW5hYmxlLXN2ZywtLWRpc2FibGUtc3ZnLGxpYnJzdmciCitQQUNLQUdFQ09ORklHW3N2Z2RlY10gPSAiLS1lbmFibGUtc3ZnZGVjLC0tZGlzYWJsZS1zdmdkZWMsbGlicnN2ZyBjYWlybyIKK1BBQ0tBR0VDT05GSUdbbm90aWZ5XSA9ICItLWVuYWJsZS1ub3RpZnksLS1kaXNhYmxlLW5vdGlmeSwgbGlibm90aWZ5IGd0ayszIgorUEFDS0FHRUNPTkZJR1tmb250Y29uZmlnXSA9ICItLWVuYWJsZS1mb250Y29uZmlnLC0tZGlzYWJsZS1mb250Y29uZmlnLCBmb250Y29uZmlnIgorUEFDS0FHRUNPTkZJR1tmcmVldHlwZV0gPSAiLS1lbmFibGUtZnJlZXR5cGUsLS1kaXNhYmxlLWZyZWV0eXBlLCBmcmVldHlwZSIKK1BBQ0tBR0VDT05GSUdbZHZkcmVhZF0gPSAiLS1lbmFibGUtZHZkcmVhZCwtLWRpc2FibGUtZHZkcmVhZCwgbGliZHZkcmVhZCBsaWJkdmRjc3MiCitQQUNLQUdFQ09ORklHW3ZuY10gPSAiLS1lbmFibGUtdm5jLC0tZGlzYWJsZS12bmMsIGxpYnZuY3NlcnZlciIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCAtLWVuYWJsZS14Y2IsLS13aXRob3V0LXggLS1kaXNhYmxlLXhjYiwgIHhjYi11dGlsLWtleXN5bXMgbGlieHBtIGxpYnhpbmVyYW1hIgorUEFDS0FHRUNPTkZJR1twbmddID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbdmRwYXVdID0gIi0tZW5hYmxlLXZkcGF1LC0tZGlzYWJsZS12ZHBhdSxsaWJ2ZHBhdSIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kIHdheWxhbmQtbmF0aXZlIgorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworICAgIHNlZCAtaSAtZSBzOicke3RvcF9idWlsZGRpcl9zbGFzaH1saWJ0b29sJzonJHt0b3BfYnVpbGRkaXJfc2xhc2h9JyR7VEFSR0VUX1NZU30tbGlidG9vbDpnICR7Qn0vZG9sdGxpYnRvb2wKKworICAgICMgbW9jIG5lZWRzIHN1cHBvcnQ6IHByZWNyZWF0ZSBidWlsZCBwYXRocworICAgIGZvciBxdHBhdGggaW4gYWRhcHRlcnMgY29tcG9uZW50cy9lcGcgY29tcG9uZW50cy9wbGF5bGlzdCBjb21wb25lbnRzL3NvdXQgZGlhbG9ncyBtYW5hZ2VycyBzdHlsZXMgdXRpbC9idXR0b25zOyBkbworICAgICAgICBta2RpciAtcCAiJHtCfS9tb2R1bGVzL2d1aS9xdC8kcXRwYXRoIgorICAgIGRvbmUKK30KKworIyBUaGlzIHJlY2lwZSBwYWNrYWdlcyB2bGMgYXMgYSBsaWJyYXJ5IGFzIHdlbGwsIHNvIHF0NCBkZXBlbmRlbmNpZXMKKyMgY2FuIGJlIGF2b2lkZWQgd2hlbiBvbmx5IHRoZSBsaWJyYXJ5IGlzIGluc3RhbGxlZC4KK1BBQ0tBR0VTID0rICJsaWJ2bGMiCisKK0xFQURfU09OQU1FX2xpYnZsYyA9ICJsaWJ2bGMuc28uNSIKK0ZJTEVTX2xpYnZsYyA9ICIke2xpYmRpcn0vbGliKi5zby4qIgorCitGSUxFU18ke1BOfSArPSAiXAorICAgICR7YmluZGlyfS92bGMgXAorICAgICR7bGliZGlyfS92bGMvdmxjL2xpYnZsY192ZHBhdS5zbyBcCisgICAgJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMgXAorICAgICR7ZGF0YWRpcn0vdmxjLyBcCisgICAgJHtkYXRhZGlyfS9pY29ucyBcCisgICAgJHtkYXRhZGlyfS9tZXRhaW5mby92bGMuYXBwZGF0YS54bWwgXAorIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIlwKKyAgICAke2xpYmRpcn0vdmxjLyovLmRlYnVnIFwKKyAgICAke2xpYmRpcn0vdmxjL3BsdWdpbnMvKi8uZGVidWcgXAorIgorCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIlwKKyAgICAke2xpYmRpcn0vdmxjL3BsdWdpbnMvKi8qLmEgXAorIgorCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NS94MjY1XzMuMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1tdWx0aW1lZGlhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY1L3gyNjVfMy4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGMzNDUyNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbXVsdGltZWRpYS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NS94MjY1XzMuMi4xLmJiCkBAIC0wLDAgKzEsMjQgQEAKK1NVTU1BUlkgPSAiSC4yNjUvSEVWQyB2aWRlbyBlbmNvZGVyIgorREVTQ1JJUFRJT04gPSAiQSBmcmVlIHNvZnR3YXJlIGxpYnJhcnkgYW5kIGFwcGxpY2F0aW9uIGZvciBlbmNvZGluZyB2aWRlbyBzdHJlYW1zIGludG8gdGhlIEguMjY1L0hFVkMgZm9ybWF0LiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cudmlkZW9sYW4ub3JnL2RldmVsb3BlcnMveDI2NS5odG1sIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vQ09QWUlORzttZDU9YzllMDQyN2JjNThmMTI5Zjk5NzI4YzYyZDRhZDQwOTEiCisKK0RFUEVORFMgPSAibmFzbS1uYXRpdmUgZ251dGxzIHpsaWIgbGlicGNyZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLnZpZGVvbGFuLm9yZy9wdWIvdmlkZW9sYW4veDI2NS94MjY1XyR7UFZ9LnRhci5neiIKKworUyA9ICIke1dPUktESVJ9L3gyNjVfJHtQVn0vc291cmNlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOTQ4MDgwNDVhMzRkODhhODU3ZTVlYWYzZjY4ZjRiY2EiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmI5YmFkY2Y5MjM2NGZkMzU2N2Y4YjVhYTBlNWU5NTJhZWVhN2EzOWEyYjg2NDM4N2NlYzMxZTNiNThjYmJjYyIKKworaW5oZXJpdCBsaWJfcGFja2FnZSBwa2djb25maWcgY21ha2UKKworRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2ID0gIiAtREVOQUJMRV9BU1NFTUJMWT1PRkYiCisKK0FTW3VuZXhwb3J0XSA9ICIxIgorCitDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NHxpLjg2KS4qLWxpbnV4JwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL2NvbmYvbGF5ZXIuY29uZiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9jb25mL2xheWVyLmNvbmYKaW5kZXggODY2YmRhNy4uN2JjMDcwMiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL2NvbmYvbGF5ZXIuY29uZgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvY29uZi9sYXllci5jb25mCkBAIC0xNyw3ICsxNyw3IEBACiBMQVlFUkRFUEVORFNfbmV0d29ya2luZy1sYXllciArPSAib3BlbmVtYmVkZGVkLWxheWVyIgogTEFZRVJERVBFTkRTX25ldHdvcmtpbmctbGF5ZXIgKz0gIm1ldGEtcHl0aG9uIgogCi1MQVlFUlNFUklFU19DT01QQVRfbmV0d29ya2luZy1sYXllciA9ICJ0aHVkIHdhcnJpb3IgemV1cyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9uZXR3b3JraW5nLWxheWVyID0gInRodWQgd2FycmlvciB6ZXVzIGR1bmZlbGwiCiAKIExJQ0VOU0VfUEFUSCArPSAiJHtMQVlFUkRJUn0vbGljZW5zZXMiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jaXZldHdlYi9jaXZldHdlYl9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvY2l2ZXR3ZWIvY2l2ZXR3ZWJfZ2l0LmJiCmluZGV4IDcxMzY4YzEuLjI4MjBmOWYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jaXZldHdlYi9jaXZldHdlYl9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2NpdmV0d2ViL2NpdmV0d2ViX2dpdC5iYgpAQCAtMiwxMCArMiwxMCBAQAogSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2NpdmV0d2ViL2NpdmV0d2ViIgogCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PTZmMjhmZGNiYTBkZGE3MzVlZWQ2MmJhYzZhMzk3NTYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5tZDttZDU9NTBiZDFkN2YxMzViNTBkN2UyMTg5OTZiYTI4ZDBkODgiCiAKLVNSQ1JFViA9ICI2NDIzZmFlYTQ4MDBmNmNkNDA1NTc1MGE3YWYyZGE4NWNkYmU0ZTk2IgotUFYgPSAiMS4xMStnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICI0YjQ0MGEzMzk5Nzk4NTJkNWE1MWZiMTFhODIyOTUyNzEyMjMxYzIzIgorUFYgPSAiMS4xMitnaXQke1NSQ1BWfSIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9jaXZldHdlYi9jaXZldHdlYi5naXQgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Vbml0dGVzdC1MaW5rLWxpYnJ0LWFuZC1saWJtLXVzaW5nLWwtb3B0aW9uLnBhdGNoIFwKICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2NyZGEvY3JkYS9jcmRhLTQuMTQtcHl0aG9uLTMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvY3JkYS9jcmRhL2NyZGEtNC4xNC1weXRob24tMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTI1ZDBhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2NyZGEvY3JkYS9jcmRhLTQuMTQtcHl0aG9uLTMucGF0Y2gKQEAgLTAsMCArMSwxMDEgQEAKK0ltcG9ydGVkIGZyb20gR2VudG9vCitodHRwczovL2dpdHdlYi5nZW50b28ub3JnL3JlcG8vZ2VudG9vLmdpdC9jb21taXQvP2lkPTljNTBhY2VjMTZiYzdjMzNkNmRjMTIyYzAwN2Q3MTNlN2ZiZWNmOWMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tIGEvdXRpbHMva2V5MnB1Yi5weQorKysrIGIvdXRpbHMva2V5MnB1Yi5weQorQEAgLTEsMjIgKzEsMjIgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgCisgaW1wb3J0IHN5cworIHRyeToKKyAgICAgICAgZnJvbSBNMkNyeXB0byBpbXBvcnQgUlNBCistZXhjZXB0IEltcG9ydEVycm9yLCBlOgorK2V4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgorICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdFUlJPUjogRmFpbGVkIHRvIGltcG9ydCB0aGUgIk0yQ3J5cHRvIiBtb2R1bGU6ICVzXG4nICUgZS5tZXNzYWdlKQorICAgICAgICBzeXMuc3RkZXJyLndyaXRlKCdQbGVhc2UgaW5zdGFsbCB0aGUgIk0yQ3J5cHRvIiBQeXRob24gbW9kdWxlLlxuJykKKyAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgnT24gRGViaWFuIEdOVS9MaW51eCB0aGUgcGFja2FnZSBpcyBjYWxsZWQgInB5dGhvbi1tMmNyeXB0byIuXG4nKQorICAgICAgICBzeXMuZXhpdCgxKQorIAorIGRlZiBwcmludF9zc2xfNjQob3V0cHV0LCBuYW1lLCB2YWwpOgorLSAgICB3aGlsZSB2YWxbMF0gPT0gJ1wwJzoKKysgICAgd2hpbGUgdmFsWzA6MV0gPT0gYidcMCc6CisgICAgICAgICB2YWwgPSB2YWxbMTpdCisgICAgIHdoaWxlIGxlbih2YWwpICUgODoKKy0gICAgICAgIHZhbCA9ICdcMCcgKyB2YWwKKysgICAgICAgIHZhbCA9IGInXDAnICsgdmFsCisgICAgIHZuZXcgPSBbXQorICAgICB3aGlsZSBsZW4odmFsKToKKy0gICAgICAgIHZuZXcuYXBwZW5kKCh2YWxbMF0sIHZhbFsxXSwgdmFsWzJdLCB2YWxbM10sIHZhbFs0XSwgdmFsWzVdLCB2YWxbNl0sIHZhbFs3XSkpCisrICAgICAgICB2bmV3LmFwcGVuZCgodmFsWzA6MV0sIHZhbFsxOjJdLCB2YWxbMjozXSwgdmFsWzM6NF0sIHZhbFs0OjVdLCB2YWxbNTo2XSwgdmFsWzY6N10sIHZhbFs3OjhdKSkKKyAgICAgICAgIHZhbCA9IHZhbFs4Ol0KKyAgICAgdm5ldy5yZXZlcnNlKCkKKyAgICAgb3V0cHV0LndyaXRlKCdzdGF0aWMgQk5fVUxPTkcgJXNbJWRdID0ge1xuJyAlIChuYW1lLCBsZW4odm5ldykpKQorQEAgLTM0LDEzICszNCwxMyBAQCBkZWYgcHJpbnRfc3NsXzY0KG91dHB1dCwgbmFtZSwgdmFsKToKKyAgICAgb3V0cHV0LndyaXRlKCd9O1xuXG4nKQorIAorIGRlZiBwcmludF9zc2xfMzIob3V0cHV0LCBuYW1lLCB2YWwpOgorLSAgICB3aGlsZSB2YWxbMF0gPT0gJ1wwJzoKKysgICAgd2hpbGUgdmFsWzA6MV0gPT0gYidcMCc6CisgICAgICAgICB2YWwgPSB2YWxbMTpdCisgICAgIHdoaWxlIGxlbih2YWwpICUgNDoKKy0gICAgICAgIHZhbCA9ICdcMCcgKyB2YWwKKysgICAgICAgIHZhbCA9IGInXDAnICsgdmFsCisgICAgIHZuZXcgPSBbXQorICAgICB3aGlsZSBsZW4odmFsKToKKy0gICAgICAgIHZuZXcuYXBwZW5kKCh2YWxbMF0sIHZhbFsxXSwgdmFsWzJdLCB2YWxbM10sICkpCisrICAgICAgICB2bmV3LmFwcGVuZCgodmFsWzA6MV0sIHZhbFsxOjJdLCB2YWxbMjozXSwgdmFsWzM6NF0pKQorICAgICAgICAgdmFsID0gdmFsWzQ6XQorICAgICB2bmV3LnJldmVyc2UoKQorICAgICBvdXRwdXQud3JpdGUoJ3N0YXRpYyBCTl9VTE9ORyAlc1slZF0gPSB7XG4nICUgKG5hbWUsIGxlbih2bmV3KSkpCitAQCAtODEsMjEgKzgxLDIxIEBAIHN0cnVjdCBwdWJrZXkgeworIAorIHN0YXRpYyBzdHJ1Y3QgcHVia2V5IGtleXNbXSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKT0geworICcnJykKKy0gICAgZm9yIG4gaW4geHJhbmdlKG4gKyAxKToKKysgICAgZm9yIG4gaW4gcmFuZ2UobiArIDEpOgorICAgICAgICAgb3V0cHV0LndyaXRlKCcJS0VZUyhlXyVkLCBuXyVkKSxcbicgJSAobiwgbikpCisgICAgIG91dHB1dC53cml0ZSgnfTtcbicpCisgICAgIHBhc3MKKyAKKyBkZWYgcHJpbnRfZ2NyeXB0KG91dHB1dCwgbmFtZSwgdmFsKToKKyAgICAgb3V0cHV0LndyaXRlKCcjaW5jbHVkZSA8c3RkaW50Lmg+XG4nKQorLSAgICB3aGlsZSB2YWxbMF0gPT0gJ1wwJzoKKysgICAgd2hpbGUgdmFsWzA6MV0gPT0gYidcMCc6CisgICAgICAgICB2YWwgPSB2YWxbMTpdCisgICAgIG91dHB1dC53cml0ZSgnc3RhdGljIGNvbnN0IHVpbnQ4X3QgJXNbJWRdID0ge1xuJyAlIChuYW1lLCBsZW4odmFsKSkpCisgICAgIGlkeCA9IDAKKyAgICAgZm9yIHYgaW4gdmFsOgorICAgICAgICAgaWYgbm90IGlkeDoKKyAgICAgICAgICAgICBvdXRwdXQud3JpdGUoJ1x0JykKKy0gICAgICAgIG91dHB1dC53cml0ZSgnMHglLjJ4LCAnICUgb3JkKHYpKQorKyAgICAgICAgb3V0cHV0LndyaXRlKCcweCUuMngsICcgJSAodiBpZiBzeXMudmVyc2lvbl9pbmZvWzBdID49MyBlbHNlIG9yZCh2KSkpCisgICAgICAgICBpZHggKz0gMQorICAgICAgICAgaWYgaWR4ID09IDg6CisgICAgICAgICAgICAgaWR4ID0gMAorQEAgLTExOCw3ICsxMTgsNyBAQCBzdHJ1Y3Qga2V5X3BhcmFtcyB7CisgCisgc3RhdGljIGNvbnN0IHN0cnVjdCBrZXlfcGFyYW1zIGtleXNbXSBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKT0geworICcnJykKKy0gICAgZm9yIG4gaW4geHJhbmdlKG4gKyAxKToKKysgICAgZm9yIG4gaW4gcmFuZ2UobiArIDEpOgorICAgICAgICAgb3V0cHV0LndyaXRlKCcJS0VZUyhlXyVkLCBuXyVkKSxcbicgJSAobiwgbikpCisgICAgIG91dHB1dC53cml0ZSgnfTtcbicpCisgICAgIAorQEAgLTEzNiw3ICsxMzYsNyBAQCBleGNlcHQgSW5kZXhFcnJvcjoKKyAgICAgbW9kZSA9IE5vbmUKKyAKKyBpZiBub3QgbW9kZSBpbiBtb2RlczoKKy0gICAgcHJpbnQgJ1VzYWdlOiAlcyBbJXNdIGlucHV0LWZpbGUuLi4gb3V0cHV0LWZpbGUnICUgKHN5cy5hcmd2WzBdLCAnfCcuam9pbihtb2Rlcy5rZXlzKCkpKQorKyAgICBwcmludCgnVXNhZ2U6ICVzIFslc10gaW5wdXQtZmlsZS4uLiBvdXRwdXQtZmlsZScgJSAoc3lzLmFyZ3ZbMF0sICd8Jy5qb2luKG1vZGVzLmtleXMoKSkpKQorICAgICBzeXMuZXhpdCgyKQorIAorIG91dHB1dCA9IG9wZW4ob3V0ZmlsZSwgJ3cnKQorQEAgLTE1NCwzICsxNTQsNSBAQCBmb3IgZiBpbiBmaWxlczoKKyAgICAgaWR4ICs9IDEKKyAKKyBtb2Rlc1ttb2RlXVsxXShvdXRwdXQsIGlkeCAtIDEpCisrCisrb3V0cHV0LmNsb3NlKCkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jcmRhL2NyZGFfMy4xOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9jcmRhL2NyZGFfMy4xOC5iYgppbmRleCA3YzkyNWIyLi5iMzgwZWFmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvY3JkYS9jcmRhXzMuMTguYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2NyZGEvY3JkYV8zLjE4LmJiCkBAIC00LDcgKzQsNyBAQAogTElDRU5TRSA9ICJjb3B5bGVmdC1uZXh0LTAuMy4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vY29weWxlZnQtbmV4dC0wLjMuMDttZDU9ODc0M2EyYzM1OTAzN2Q0ZDMyOWEzMWU3OWVhYmVmZmUiCiAKLURFUEVORFMgPSAicHl0aG9uLW0yY3J5cHRvLW5hdGl2ZSBweXRob24tdHlwaW5nLW5hdGl2ZSBweXRob24tbmF0aXZlIGxpYm5sIGxpYmdjcnlwdCIKK0RFUEVORFMgPSAicHl0aG9uMy1tMmNyeXB0by1uYXRpdmUgbGlibmwgbGliZ2NyeXB0IgogCiBTUkNfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvJHtCUE59LyR7QlB9LnRhci54eiBcCiAgICAgICAgICAgIGZpbGU6Ly9kby1ub3QtcnVuLWxkY29uZmlnLWlmLWRlc3RkaXItaXMtc2V0LnBhdGNoIFwKQEAgLTE0LDExICsxNCwxMiBAQAogICAgICAgICAgICBmaWxlOi8vbWFrZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly91c2UtdGFyZ2V0LXdvcmQtc2l6ZS1pbnN0ZWFkLW9mLWhvc3Qtcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtaXNzdWVzLXdoZW4tVVNFX09QRU5TU0wtMS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jcmRhLTQuMTQtcHl0aG9uLTMucGF0Y2ggXAogIgogU1JDX1VSSVttZDVzdW1dID0gIjA0MzFmZWYzMDY3YmY1MDNkZmI0NjQwNjlmMDYxNjNhIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQzZmNiOTY3OWY4Yjc1ZWQ4N2FkMTA5NDRhNTA2MjkyZGVmMTNlNGFmYjE5NGFmYTdhYTkyMWIwMWU4ZWNkYmYiCiAKLWluaGVyaXQgcHl0aG9uLWRpciBweXRob25uYXRpdmUgc2l0ZWluZm8KK2luaGVyaXQgcHl0aG9uMy1kaXIgcHl0aG9uM25hdGl2ZSBzaXRlaW5mbwogCiAjIFJlY3Vyc2l2ZSBtYWtlIHByb2JsZW0KIEVYVFJBX09FTUFLRSA9ICJNQUtFRkxBR1M9IERFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9L2NyZGEgTERMSUJSRUc9Jy1XbCwtcnBhdGgsJHtsaWJkaXJ9L2NyZGEgLWxyZWcnIFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwY2QvZGhjcGNkXzguMS41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3BjZC9kaGNwY2RfOC4xLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzNDljYTEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3BjZC9kaGNwY2RfOC4xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLVNVTU1BUlkgPSAiZGhjcGNkIC0gYSBESENQIGNsaWVudCIKLURFU0NSSVBUSU9OID0gImRoY3BjZCBydW5zIG9uIHlvdXIgbWFjaGluZSBhbmQgc2lsZW50bHkgY29uZmlndXJlcyB5b3VyIGNvbXB1dGVyIHRvIHdvcmsgb24gdGhlIGF0dGFjaGVkIG5ldHdvcmtzIHdpdGhvdXQgdHJvdWJsZSBhbmQgbW9zdGx5IHdpdGhvdXQgY29uZmlndXJhdGlvbi4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9yb3kubWFycGxlcy5uYW1lL3Byb2plY3RzL2RoY3BjZC8iCi0KLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MDUzMTQ1Nzk5MmE5N2VjZWJjNjk3NTkxNGE4NzRhOWQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3JveS5tYXJwbGVzLm5hbWUvZG93bmxvYWRzL2RoY3BjZC8iCi0KLVNSQ19VUkkgPSAiaHR0cDovL3JveS5tYXJwbGVzLm5hbWUvZG93bmxvYWRzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcmVtb3ZlLUlOQ0xVREVESVItdG8tcHJldmVudC1idWlsZC1pc3N1ZXMucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1N2ZkNWRkNGZmOTcyMjc3M2VjNjcyMzlkYjM0ZDNiNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNWNiZTE1MDY5Y2VmMzQ3ZTcyZDBiZjdhMTliMDI1NTU3MWVlMGMxODRjNjcwNTg1OWEwOTU4OGE1MGE4ZWJkIgotCi1pbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLVBBQ0tBR0VDT05GSUcgPz0gInVkZXYgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLXdpdGgtdWRldiwtLXdpdGhvdXQtdWRldix1ZGV2LHVkZXYiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYiCi0KLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1pcHY0IgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9kaGNwY2QvZGV2Ly5kZWJ1ZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwY2QvZGhjcGNkXzguMS42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3BjZC9kaGNwY2RfOC4xLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWNiMmFmNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwY2QvZGhjcGNkXzguMS42LmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorU1VNTUFSWSA9ICJkaGNwY2QgLSBhIERIQ1AgY2xpZW50IgorREVTQ1JJUFRJT04gPSAiZGhjcGNkIHJ1bnMgb24geW91ciBtYWNoaW5lIGFuZCBzaWxlbnRseSBjb25maWd1cmVzIHlvdXIgY29tcHV0ZXIgdG8gd29yayBvbiB0aGUgYXR0YWNoZWQgbmV0d29ya3Mgd2l0aG91dCB0cm91YmxlIGFuZCBtb3N0bHkgd2l0aG91dCBjb25maWd1cmF0aW9uLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3JveS5tYXJwbGVzLm5hbWUvcHJvamVjdHMvZGhjcGNkLyIKKworTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wNTMxNDU3OTkyYTk3ZWNlYmM2OTc1OTE0YTg3NGE5ZCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vcm95Lm1hcnBsZXMubmFtZS9kb3dubG9hZHMvZGhjcGNkLyIKKworU1JDX1VSSSA9ICJodHRwOi8vcm95Lm1hcnBsZXMubmFtZS9kb3dubG9hZHMvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yZW1vdmUtSU5DTFVERURJUi10by1wcmV2ZW50LWJ1aWxkLWlzc3Vlcy5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gImUxZWVhMDMzODhkMTJjOWFkMjFlY2Q3YzEzNWZkZjhiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjMjkzNGEzZTFlNjdhNWNmZDViYjE1YjFlZmE3MWY2NWMwMDMxNGFjMWNjYjVjNTBkYThlYWUzYTBiODE0N2YiCisKK2luaGVyaXQgcGtnY29uZmlnIGF1dG90b29scy1icm9rZW5zZXAKKworUEFDS0FHRUNPTkZJRyA/PSAidWRldiAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorCitQQUNLQUdFQ09ORklHW3VkZXZdID0gIi0td2l0aC11ZGV2LC0td2l0aG91dC11ZGV2LHVkZXYsdWRldiIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWlwdjQiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2RoY3BjZC9kZXYvLmRlYnVnIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZpcmV3YWxsZC9maXJld2FsbGRfMC43LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZmlyZXdhbGxkL2ZpcmV3YWxsZF8wLjcuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdjN2JkNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZmlyZXdhbGxkL2ZpcmV3YWxsZF8wLjcuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLVNVTU1BUlkgPSAiRHluYW1pYyBmaXJld2FsbCBkYWVtb24gd2l0aCBhIEQtQnVzIGludGVyZmFjZSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZmlyZXdhbGxkLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9maXJld2FsbGQvZmlyZXdhbGxkL2lzc3VlcyIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vZmlyZXdhbGxkL2ZpcmV3YWxsZC9yZWxlYXNlcyIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXJld2FsbGQuaW5pdCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMjU0OWMyMDA2ZGVmMDdhMTliNGM3N2VjOTYwZTVhYWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmJkMWI3MmIzYzRiNGQwYzIwNjU5ZjY2NGIyYmEzNjE3NTM2NGZmYmI5Y2ViZjNiZGZhZjliNWU2OTgzYmU3NyIKLQotIyBnbGliLTIuMC1uYXRpdmUgaXMgbmVlZGVkIGZvciBHU0VUVElOR1NfUlVMRVMgYXV0b2NvbmYgbWFjcm8gZnJvbSBnc2V0dGluZ3MubTQKLURFUEVORFMgPSAiaW50bHRvb2wtbmF0aXZlIGdsaWItMi4wLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCi0KLWluaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMgYmFzaC1jb21wbGV0aW9uIHB5dGhvbjNuYXRpdmUgZ3NldHRpbmdzIHN5c3RlbWQgdXBkYXRlLXJjLmQKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kLXVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCIKLQotUEFDS0FHRVMgKz0gIiR7UE59LXpzaC1jb21wbGV0aW9uIgotCi0jIGlwdGFibGVzLCBpcDZ0YWJsZXMsIGVidGFibGVzLCBhbmQgaXBzZXQgKnNob3VsZCogYmUgdW5uZWNlc3NhcnkKLSMgd2hlbiB0aGUgbmZ0YWJsZXMgYmFja2VuZCBpcyBhdmFpbGFibGUsIGJlY2F1c2UgbmZ0YWJsZXMgc3VwZXJzZWRlcyBhbGwgb2YgdGhlbS4KLSMgSG93ZXZlciB3ZSBzdGlsbCBuZWVkIGlwdGFibGVzIGFuZCBpcDZ0YWJsZXMgdG8gYmUgYXZhaWxhYmxlIG90aGVyd2lzZSBhbnkKLSMgYXBwbGljYXRpb24gcmVseWluZyBvbiAiZGlyZWN0IHBhc3N0aHJvdWdoIiBydWxlcyAoc3VjaCBhcyBkb2NrZXIpIHdpbGwgYnJlYWsuCi0jIC9ldGMvc3lzY29uZmlnL2ZpcmV3YWxsZCBpcyBhIFJlZCBIYXQtaXNtLCBvbmx5IHJlZmVyZW5jZWQgYnkKLSMgdGhlIFJlZCBIYXQtc3BlY2lmaWMgaW5pdCBzY3JpcHQgd2hpY2ggd2UgYXJlbid0IHVzaW5nLCBzbyB3ZSBkaXNhYmxlIHRoYXQuCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0td2l0aC1uZnQ9JHtzYmluZGlyfS9uZnQgXAotICAgIC0td2l0aG91dC1pcHNldCBcCi0gICAgLS13aXRoLWlwdGFibGVzPSR7c2JpbmRpcn0vaXB0YWJsZXMgXAotICAgIC0td2l0aC1pcHRhYmxlcy1yZXN0b3JlPSR7c2JpbmRpcn0vaXB0YWJsZXMtcmVzdG9yZSBcCi0gICAgLS13aXRoLWlwNnRhYmxlcz0ke3NiaW5kaXJ9L2lwNnRhYmxlcyBcCi0gICAgLS13aXRoLWlwNnRhYmxlcy1yZXN0b3JlPSR7c2JpbmRpcn0vaXA2dGFibGVzLXJlc3RvcmUgXAotICAgIC0td2l0aG91dC1lYnRhYmxlcyBcCi0gICAgLS13aXRob3V0LWVidGFibGVzLXJlc3RvcmUgXAotICAgIC0tZGlzYWJsZS1zeXNjb25maWcgXAotICAgIC0td2l0aC14bWwtY2F0YWxvZz0ke1NUQUdJTkdfRVRDRElSX05BVElWRX0veG1sL2NhdGFsb2cgXAotIgotCi1JTklUU0NSSVBUX05BTUUgPSAiZmlyZXdhbGxkIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImZpcmV3YWxsZC5zZXJ2aWNlIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICA6Ci0gICAgZWxzZQotICAgICAgICAjIGZpcmV3YWxsZCBzaGlwcyBhbiBpbml0IHNjcmlwdCBidXQgaXQgY29udGFpbnMgUmVkIEhhdC1pc21zLCByZXBsYWNlIGl0IHdpdGggb3VyIG93bgotICAgICAgICBybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vcmMuZC8KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICAgICAgaW5zdGFsbCAtbTA3NTUgJHtXT1JLRElSfS9maXJld2FsbGQuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZmlyZXdhbGxkCi0gICAgZmkKLQotICAgICMgV2UgcmFuIC4vY29uZmlndXJlIHdpdGggUFlUSE9OIHBvaW50ZWQgYXQgdGhlIGJpbmFyeSBpbnNpZGUgJFNUQUdJTkdfQklORElSX05BVElWRQotICAgICMgc28gbm93IHdlIG5lZWQgdG8gZml4IHVwIGFueSByZWZlcmVuY2VzIHRvIHBvaW50IGF0IHRoZSBwcm9wZXIgcGF0aCBpbiB0aGUgaW1hZ2UuCi0gICAgIyBUaGlzIGhhY2sgaXMgYWxzbyBpbiBkaXN0dXRpbHMuYmJjbGFzcywgYnV0IGZpcmV3YWxsZCBkb2Vzbid0IHVzZSBkaXN0dXRpbHMvc2V0dXB0b29scy4KLSAgICBpZiBbICR7UE59ICE9ICIke0JQTn0tbmF0aXZlIiBdOyB0aGVuCi0gICAgICAgIHNlZCAtaSAtZSBzOiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zOiR7YmluZGlyfS9weXRob24zOmcgXAotICAgICAgICAgICAgJHtEfSR7YmluZGlyfS8qICR7RH0ke3NiaW5kaXJ9LyogJHtEfSR7c3lzY29uZmRpcn0vZmlyZXdhbGxkLyoueG1sCi0gICAgZmkKLSAgICBzZWQgLWkgLWUgczoke1NUQUdJTkdfQklORElSX05BVElWRX06JHtiaW5kaXJ9OmcgXAotICAgICAgICAke0R9JHtiaW5kaXJ9LyogJHtEfSR7c2JpbmRpcn0vKiAke0R9JHtzeXNjb25mZGlyfS9maXJld2FsbGQvKi54bWwKLX0KLQotRklMRVNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9maXJld2FsbCBcCi0gICAgJHtub25hcmNoX2xpYmRpcn0vZmlyZXdhbGxkIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMSBcCi0gICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCi0gICAgJHtkYXRhZGlyfS9tZXRhaW5mbyBcCi0iCi1GSUxFU18ke1BOfS16c2gtY29tcGxldGlvbiA9ICIke2RhdGFkaXJ9L3pzaC9zaXRlLWZ1bmN0aW9ucyIKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgIG5mdGFibGVzIFwKLSAgICBpcHRhYmxlcyBcCi0gICAgcHl0aG9uMy1jb3JlIFwKLSAgICBweXRob24zLWlvIFwKLSAgICBweXRob24zLWZjbnRsIFwKLSAgICBweXRob24zLXNoZWxsIFwKLSAgICBweXRob24zLXN5c2xvZyBcCi0gICAgcHl0aG9uMy14bWwgXAotICAgIHB5dGhvbjMtZGJ1cyBcCi0gICAgcHl0aG9uMy1zbGlwLWRidXMgXAotICAgIHB5dGhvbjMtZGVjb3JhdG9yIFwKLSAgICBweXRob24zLXB5Z29iamVjdCBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZmlyZXdhbGxkL2ZpcmV3YWxsZF8wLjcuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9maXJld2FsbGQvZmlyZXdhbGxkXzAuNy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkZWE4NDgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZmlyZXdhbGxkL2ZpcmV3YWxsZF8wLjcuMy5iYgpAQCAtMCwwICsxLDg5IEBACitTVU1NQVJZID0gIkR5bmFtaWMgZmlyZXdhbGwgZGFlbW9uIHdpdGggYSBELUJ1cyBpbnRlcmZhY2UiCitIT01FUEFHRSA9ICJodHRwczovL2ZpcmV3YWxsZC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vZmlyZXdhbGxkL2ZpcmV3YWxsZC9pc3N1ZXMiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ZpcmV3YWxsZC9maXJld2FsbGQvcmVsZWFzZXMiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZmlyZXdhbGxkLmluaXQgXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjA1ZWM3NzJjYmRjMGEyYjNkZjA4MWU0YmVjYTU1OTlkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQxNGM0NjIwMmMxMjMzNGNkNWM5ODYyMTRlNWUyNTc1ZDE4ZTc0M2M1NTMxYTk3YWNlMWMwY2Q5NDM0MWM2MGQiCisKKyMgZ2xpYi0yLjAtbmF0aXZlIGlzIG5lZWRlZCBmb3IgR1NFVFRJTkdTX1JVTEVTIGF1dG9jb25mIG1hY3JvIGZyb20gZ3NldHRpbmdzLm00CitERVBFTkRTID0gImludGx0b29sLW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUgbGlieHNsdC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgorCitpbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzIGJhc2gtY29tcGxldGlvbiBweXRob24zbmF0aXZlIGdzZXR0aW5ncyBzeXN0ZW1kIHVwZGF0ZS1yYy5kCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzdGVtZC11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS1kaXNhYmxlLXN5c3RlbWQiCisKK1BBQ0tBR0VTICs9ICIke1BOfS16c2gtY29tcGxldGlvbiIKKworIyBpcHRhYmxlcywgaXA2dGFibGVzLCBlYnRhYmxlcywgYW5kIGlwc2V0ICpzaG91bGQqIGJlIHVubmVjZXNzYXJ5CisjIHdoZW4gdGhlIG5mdGFibGVzIGJhY2tlbmQgaXMgYXZhaWxhYmxlLCBiZWNhdXNlIG5mdGFibGVzIHN1cGVyc2VkZXMgYWxsIG9mIHRoZW0uCisjIEhvd2V2ZXIgd2Ugc3RpbGwgbmVlZCBpcHRhYmxlcyBhbmQgaXA2dGFibGVzIHRvIGJlIGF2YWlsYWJsZSBvdGhlcndpc2UgYW55CisjIGFwcGxpY2F0aW9uIHJlbHlpbmcgb24gImRpcmVjdCBwYXNzdGhyb3VnaCIgcnVsZXMgKHN1Y2ggYXMgZG9ja2VyKSB3aWxsIGJyZWFrLgorIyAvZXRjL3N5c2NvbmZpZy9maXJld2FsbGQgaXMgYSBSZWQgSGF0LWlzbSwgb25seSByZWZlcmVuY2VkIGJ5CisjIHRoZSBSZWQgSGF0LXNwZWNpZmljIGluaXQgc2NyaXB0IHdoaWNoIHdlIGFyZW4ndCB1c2luZywgc28gd2UgZGlzYWJsZSB0aGF0LgorRVhUUkFfT0VDT05GID0gIlwKKyAgICAtLXdpdGgtbmZ0PSR7c2JpbmRpcn0vbmZ0IFwKKyAgICAtLXdpdGhvdXQtaXBzZXQgXAorICAgIC0td2l0aC1pcHRhYmxlcz0ke3NiaW5kaXJ9L2lwdGFibGVzIFwKKyAgICAtLXdpdGgtaXB0YWJsZXMtcmVzdG9yZT0ke3NiaW5kaXJ9L2lwdGFibGVzLXJlc3RvcmUgXAorICAgIC0td2l0aC1pcDZ0YWJsZXM9JHtzYmluZGlyfS9pcDZ0YWJsZXMgXAorICAgIC0td2l0aC1pcDZ0YWJsZXMtcmVzdG9yZT0ke3NiaW5kaXJ9L2lwNnRhYmxlcy1yZXN0b3JlIFwKKyAgICAtLXdpdGhvdXQtZWJ0YWJsZXMgXAorICAgIC0td2l0aG91dC1lYnRhYmxlcy1yZXN0b3JlIFwKKyAgICAtLWRpc2FibGUtc3lzY29uZmlnIFwKKyAgICAtLXdpdGgteG1sLWNhdGFsb2c9JHtTVEFHSU5HX0VUQ0RJUl9OQVRJVkV9L3htbC9jYXRhbG9nIFwKKyIKKworSU5JVFNDUklQVF9OQU1FID0gImZpcmV3YWxsZCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJmaXJld2FsbGQuc2VydmljZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgOgorICAgIGVsc2UKKyAgICAgICAgIyBmaXJld2FsbGQgc2hpcHMgYW4gaW5pdCBzY3JpcHQgYnV0IGl0IGNvbnRhaW5zIFJlZCBIYXQtaXNtcywgcmVwbGFjZSBpdCB3aXRoIG91ciBvd24KKyAgICAgICAgcm0gLXJmICR7RH0ke3N5c2NvbmZkaXJ9L3JjLmQvCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgICAgIGluc3RhbGwgLW0wNzU1ICR7V09SS0RJUn0vZmlyZXdhbGxkLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2ZpcmV3YWxsZAorICAgIGZpCisKKyAgICAjIFdlIHJhbiAuL2NvbmZpZ3VyZSB3aXRoIFBZVEhPTiBwb2ludGVkIGF0IHRoZSBiaW5hcnkgaW5zaWRlICRTVEFHSU5HX0JJTkRJUl9OQVRJVkUKKyAgICAjIHNvIG5vdyB3ZSBuZWVkIHRvIGZpeCB1cCBhbnkgcmVmZXJlbmNlcyB0byBwb2ludCBhdCB0aGUgcHJvcGVyIHBhdGggaW4gdGhlIGltYWdlLgorICAgICMgVGhpcyBoYWNrIGlzIGFsc28gaW4gZGlzdHV0aWxzLmJiY2xhc3MsIGJ1dCBmaXJld2FsbGQgZG9lc24ndCB1c2UgZGlzdHV0aWxzL3NldHVwdG9vbHMuCisgICAgaWYgWyAke1BOfSAhPSAiJHtCUE59LW5hdGl2ZSIgXTsgdGhlbgorICAgICAgICBzZWQgLWkgLWUgczoke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMzoke2JpbmRpcn0vcHl0aG9uMzpnIFwKKyAgICAgICAgICAgICR7RH0ke2JpbmRpcn0vKiAke0R9JHtzYmluZGlyfS8qICR7RH0ke3N5c2NvbmZkaXJ9L2ZpcmV3YWxsZC8qLnhtbAorICAgIGZpCisgICAgc2VkIC1pIC1lIHM6JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9OiR7YmluZGlyfTpnIFwKKyAgICAgICAgJHtEfSR7YmluZGlyfS8qICR7RH0ke3NiaW5kaXJ9LyogJHtEfSR7c3lzY29uZmRpcn0vZmlyZXdhbGxkLyoueG1sCit9CisKK0ZJTEVTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vZmlyZXdhbGwgXAorICAgICR7bm9uYXJjaF9saWJkaXJ9L2ZpcmV3YWxsZCBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAorICAgICR7ZGF0YWRpcn0vbWV0YWluZm8gXAorIgorRklMRVNfJHtQTn0tenNoLWNvbXBsZXRpb24gPSAiJHtkYXRhZGlyfS96c2gvc2l0ZS1mdW5jdGlvbnMiCisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgICBuZnRhYmxlcyBcCisgICAgaXB0YWJsZXMgXAorICAgIHB5dGhvbjMtY29yZSBcCisgICAgcHl0aG9uMy1pbyBcCisgICAgcHl0aG9uMy1mY250bCBcCisgICAgcHl0aG9uMy1zaGVsbCBcCisgICAgcHl0aG9uMy1zeXNsb2cgXAorICAgIHB5dGhvbjMteG1sIFwKKyAgICBweXRob24zLWRidXMgXAorICAgIHB5dGhvbjMtc2xpcC1kYnVzIFwKKyAgICBweXRob24zLWRlY29yYXRvciBcCisgICAgcHl0aG9uMy1weWdvYmplY3QgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvMDAwMS1ybG1fcHl0aG9uMy1hZGQtUFlfSU5DX0RJUi1pbi1zZWFyY2gtZGlyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvMDAwMS1ybG1fcHl0aG9uMy1hZGQtUFlfSU5DX0RJUi1pbi1zZWFyY2gtZGlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2MzAyMzEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9maWxlcy8wMDAxLXJsbV9weXRob24zLWFkZC1QWV9JTkNfRElSLWluLXNlYXJjaC1kaXIucGF0Y2gKQEAgLTAsMCArMSw1OCBAQAorRnJvbSA3MzMzMzA4ODhmZmY0OWU0ZDJiNmMyMTIxYTYwNTBmZGQ5ZjExYTg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCA2IEZlYiAyMDIwIDA5OjMyOjA0ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHJsbV9weXRob24zOiBhZGQgUFlfSU5DX0RJUiBpbiBzZWFyY2ggZGlyCisKK1RoZSBjb25maWd1cmUgb3B0aW9uIC0td2l0aC1ybG0tcHl0aG9uMy1pbmNsdWRlLWRpciBpcyB1c2VkIHRvIHNldAorUFlfSU5DX0RJUiB3aGljaCBpcyBuZXZlciB1c2VkIGFuZCBpdCBmYWlscyB0byBmaW5kIFB5dGhvbi5oLAorc28gYWRkIGl0IGludG8gc2VhcmNoIGRpciB0byBmaXggaXQuCisKK0Fsc28gcmVtb3ZlIFNNQVJUX0xJQlMgZnJvbSBtb2RfZmxhZ3MgYmVjYXVzZSBpdCBpbnRyb2R1Y2VzIHJwYXRoCit0byBMREZBTEdTIHdoaWNoIGNhdXNlcyBhIGRvX3BhY2thZ2VfcWEgZXJyb3I6CisKK0VSUk9SOiBmcmVlcmFkaXVzLTMuMC4yMC1yMCBkb19wYWNrYWdlX3FhOiBRQSBJc3N1ZTogcGFja2FnZSBmcmVlcmFkaXVzLXB5dGhvbiBjb250YWlucyBiYWQgUlBBVEgKKy9idWlsZGFyZWEvYnVpbGQvdG1wL3dvcmsvY29yZTItNjQtcG9reS1saW51eC9mcmVlcmFkaXVzLzMuMC4yMC1yMC9yZWNpcGUtc3lzcm9vdC1uYXRpdmUvdXNyL2xpYi9weXRob24zLjgvY29uZmlnIGluIGZpbGUKKy9idWlsZGFyZWEvYnVpbGQvdG1wL3dvcmsvY29yZTItNjQtcG9reS1saW51eC9mcmVlcmFkaXVzLzMuMC4yMC1yMC9wYWNrYWdlcy1zcGxpdC9mcmVlcmFkaXVzLXB5dGhvbi91c3IvbGliL3JsbV9weXRob24zLnNvLjAuMC4wCitwYWNrYWdlIGZyZWVyYWRpdXMtcHl0aG9uIGNvbnRhaW5zIGJhZCBSUEFUSAorL2J1aWxkYXJlYS9idWlsZC90bXAvd29yay9jb3JlMi02NC1wb2t5LWxpbnV4L2ZyZWVyYWRpdXMvMy4wLjIwLXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZS91c3IvbGliL3B5dGhvbjMuOC9jb25maWcgaW4gZmlsZQorL2J1aWxkYXJlYS9idWlsZC90bXAvd29yay9jb3JlMi02NC1wb2t5LWxpbnV4L2ZyZWVyYWRpdXMvMy4wLjIwLXIwL3BhY2thZ2VzLXNwbGl0L2ZyZWVyYWRpdXMtcHl0aG9uL3Vzci9saWIvcmxtX3B5dGhvbjMuc28uMC4wLjAgW3JwYXRoc10KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL21vZHVsZXMvcmxtX3B5dGhvbjMvY29uZmlndXJlLmFjIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvcmxtX3B5dGhvbjMvY29uZmlndXJlLmFjIGIvc3JjL21vZHVsZXMvcmxtX3B5dGhvbjMvY29uZmlndXJlLmFjCitpbmRleCBhMDAzMjBmLi5hZGJkZjE5IDEwMDY0NAorLS0tIGEvc3JjL21vZHVsZXMvcmxtX3B5dGhvbjMvY29uZmlndXJlLmFjCisrKysgYi9zcmMvbW9kdWxlcy9ybG1fcHl0aG9uMy9jb25maWd1cmUuYWMKK0BAIC05NSw3ICs5NSw3IEBAIGlmIHRlc3QgeCR3aXRoX1tdbW9kbmFtZSAhPSB4bm87IHRoZW4KKyAKKyAJCW9sZF9DRkxBR1M9JENGTEFHUworIAkJQ0ZMQUdTPSIkQ0ZMQUdTICRQWV9DRkxBR1MiCistCQlzbWFydF90cnlfZGlyPSIkUFlfUFJFRklYL2luY2x1ZGUvcHl0aG9uJFBZX1NZU19WRVJTSU9OIgorKwkJc21hcnRfdHJ5X2Rpcj0iJFBZX1BSRUZJWC9pbmNsdWRlL3B5dGhvbiRQWV9TWVNfVkVSU0lPTiAkUFlfSU5DX0RJUiIKKyAJCUZSX1NNQVJUX0NIRUNLX0lOQ0xVREUoUHl0aG9uLmgpCisgCQlDRkxBR1M9JG9sZF9DRkxBR1MKKyAKK0BAIC0xMTQsMTMgKzExNCwxMyBAQCBpZiB0ZXN0IHgkd2l0aF9bXW1vZG5hbWUgIT0geG5vOyB0aGVuCisgCisgCQlldmFsIHQ9XCR7YWNfY3ZfbGliXyR7c21fbGliX3NhZmV9XyR7c21fZnVuY19zYWZlfX0KKyAJCWlmIHRlc3QgIngkdCIgPSAieHllcyI7IHRoZW4KKy0JCQltb2RfbGRmbGFncz0iJFBZX0xJQl9MT0MgJFBZX0VYVFJBX0xJQlMgJFNNQVJUX0xJQlMgLWxtIgorKwkJCW1vZF9sZGZsYWdzPSIkUFlfTElCX0xPQyAkUFlfRVhUUkFfTElCUyAtbG0iCisgCQkJdGFyZ2V0bmFtZT1tb2RuYW1lCisgCQllbHNlCisgCQkJRlJfU01BUlRfQ0hFQ0tfTElCKHB5dGhvbiR7UFlfU1lTX1ZFUlNJT059bSwgUHlfSW5pdGlhbGl6ZSkKKyAJCQlldmFsIHQ9XCR7YWNfY3ZfbGliXyR7c21fbGliX3NhZmV9XyR7c21fZnVuY19zYWZlfX0KKyAJCQlpZiB0ZXN0ICJ4JHQiID0gInh5ZXMiOyB0aGVuCistCQkJCW1vZF9sZGZsYWdzPSIkUFlfTElCX0xPQyAkUFlfRVhUUkFfTElCUyAkU01BUlRfTElCUyAtbG0iCisrCQkJCW1vZF9sZGZsYWdzPSIkUFlfTElCX0xPQyAkUFlfRVhUUkFfTElCUyAtbG0iCisgCQkJCXRhcmdldG5hbWU9bW9kbmFtZQorIAkJCWVsc2UKKyAJCQkJdGFyZ2V0bmFtZT0KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvMDAwMS1zdS10by1yYWRpdXNkLXVzZXItZ3JvdXAtd2hlbi1yb3RhdGluZy1sb2dzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZmlsZXMvMDAwMS1zdS10by1yYWRpdXNkLXVzZXItZ3JvdXAtd2hlbi1yb3RhdGluZy1sb2dzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ODU5ZGM3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZpbGVzLzAwMDEtc3UtdG8tcmFkaXVzZC11c2VyLWdyb3VwLXdoZW4tcm90YXRpbmctbG9ncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwNCArMCwwIEBACi1Gcm9tIDFmMjMzNzczOTYyYmYxYTljMmQyMjhhMTgwZWFjZGRiOWRiMmQ1NzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgU2NoZWVsIDxhc2NoZWVsQHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDcgTWF5IDIwMTkgMTY6MDQ6MjkgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gc3UgdG8gcmFkaXVzZCB1c2VyL2dyb3VwIHdoZW4gcm90YXRpbmcgbG9ncwotCi1UaGUgc3UgZGlyZWN0aXZlIHRvIGxvZ3JvdGF0ZSBlbnN1cmVzIHRoYXQgbG9nIHJvdGF0aW9uIGhhcHBlbnMgdW5kZXIgdGhlCi1vd25lciBvZiB0aGUgbG9ncy4gT3RoZXJ3aXNlLCBsb2dyb3RhdGUgcnVucyBhcyByb290OnJvb3QsIHBvdGVudGlhbGx5Ci1lbmFibGluZyBwcml2aWxlZ2UgZXNjYWxhdGlvbiBpZiBhIFJDRSBpcyBkaXNjb3ZlcmVkIGFnYWluc3QgdGhlCi1GcmVlUkFESVVTIGRhZW1vbi4KLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIFNjaGVlbCA8YXNjaGVlbEByZWRoYXQuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRodWIuY29tL0ZyZWVSQURJVVMvZnJlZXJhZGl1cy1zZXJ2ZXIvY29tbWl0LzFmMjMzNzczOTYyYmYxYTljMmQyMjhhMTgwZWFjZGRiOWRiMmQ1NzRdCi0KLUNWRTogQ1ZFLTIwMTktMTAxNDMKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gZGViaWFuL2ZyZWVyYWRpdXMubG9ncm90YXRlICB8IDMgKysrCi0gcmVkaGF0L2ZyZWVyYWRpdXMtbG9ncm90YXRlICB8IDEgKwotIHNjcmlwdHMvbG9ncm90YXRlL2ZyZWVyYWRpdXMgfCAzICsrKwotIHN1c2UvcmFkaXVzZC1sb2dyb3RhdGUgICAgICAgfCAxICsKLSA0IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZGViaWFuL2ZyZWVyYWRpdXMubG9ncm90YXRlIGIvZGViaWFuL2ZyZWVyYWRpdXMubG9ncm90YXRlCi1pbmRleCA3ZDgzN2Q1Li5hOGQyOWI3IDEwMDY0NAotLS0tIGEvZGViaWFuL2ZyZWVyYWRpdXMubG9ncm90YXRlCi0rKysgYi9kZWJpYW4vZnJlZXJhZGl1cy5sb2dyb3RhdGUKLUBAIC05LDYgKzksNyBAQAotIAlub3RpZmVtcHR5Ci0gCi0gCWNvcHl0cnVuY2F0ZQotKwlzdSBmcmVlcmFkIGZyZWVyYWQKLSB9Ci0gCi0gIyAoaW4gb3JkZXIpCi1AQCAtMjYsNiArMjcsNyBAQAotIAlub3RpZmVtcHR5Ci0gCi0gCW5vY3JlYXRlCi0rCXN1IGZyZWVyYWQgZnJlZXJhZAotIH0KLSAKLSAjIFRoZXJlIGFyZSBkaWZmZXJlbnQgZGV0YWlsLXJvdGF0aW5nIHN0cmF0ZWdpZXMgeW91IGNhbiB1c2UuICBPbmUgaXMKLUBAIC00NSw0ICs0Nyw1IEBACi0gCW5vdGlmZW1wdHkKLSAKLSAJbm9jcmVhdGUKLSsJc3UgZnJlZXJhZCBmcmVlcmFkCi0gfQotZGlmZiAtLWdpdCBhL3JlZGhhdC9mcmVlcmFkaXVzLWxvZ3JvdGF0ZSBiL3JlZGhhdC9mcmVlcmFkaXVzLWxvZ3JvdGF0ZQotaW5kZXggMzYwNzY1ZC4uYmI5N2NhNSAxMDA2NDQKLS0tLSBhL3JlZGhhdC9mcmVlcmFkaXVzLWxvZ3JvdGF0ZQotKysrIGIvcmVkaGF0L2ZyZWVyYWRpdXMtbG9ncm90YXRlCi1AQCAtOSw2ICs5LDcgQEAgcm90YXRlIDQKLSBtaXNzaW5nb2sKLSBjb21wcmVzcwotIGRlbGF5Y29tcHJlc3MKLStzdSByYWRpdXNkIHJhZGl1c2QKLSAKLSAjCi0gIyAgVGhlIG1haW4gc2VydmVyIGxvZwotZGlmZiAtLWdpdCBhL3NjcmlwdHMvbG9ncm90YXRlL2ZyZWVyYWRpdXMgYi9zY3JpcHRzL2xvZ3JvdGF0ZS9mcmVlcmFkaXVzCi1pbmRleCAzZGU0MzVlLi5lZWNmNjMxIDEwMDY0NAotLS0tIGEvc2NyaXB0cy9sb2dyb3RhdGUvZnJlZXJhZGl1cwotKysrIGIvc2NyaXB0cy9sb2dyb3RhdGUvZnJlZXJhZGl1cwotQEAgLTE3LDYgKzE3LDcgQEAKLSAJbm90aWZlbXB0eQotIAotIAljb3B5dHJ1bmNhdGUKLSsJc3UgcmFkaXVzZCByYWRpdXNkCi0gfQotIAotICMgKGluIG9yZGVyKQotQEAgLTM0LDYgKzM1LDcgQEAKLSAJbm90aWZlbXB0eQotIAotIAlub2NyZWF0ZQotKwlzdSByYWRpdXNkIHJhZGl1c2QKLSB9Ci0gCi0gIyBUaGVyZSBhcmUgZGlmZmVyZW50IGRldGFpbC1yb3RhdGluZyBzdHJhdGVnaWVzIHlvdSBjYW4gdXNlLiAgT25lIGlzCi1AQCAtNTMsNCArNTUsNSBAQAotIAlub3RpZmVtcHR5Ci0gCi0gCW5vY3JlYXRlCi0rCXN1IHJhZGl1c2QgcmFkaXVzZAotIH0KLWRpZmYgLS1naXQgYS9zdXNlL3JhZGl1c2QtbG9ncm90YXRlIGIvc3VzZS9yYWRpdXNkLWxvZ3JvdGF0ZQotaW5kZXggMjRkNTZiZS4uYmU1YTc5NyAxMDA2NDQKLS0tLSBhL3N1c2UvcmFkaXVzZC1sb2dyb3RhdGUKLSsrKyBiL3N1c2UvcmFkaXVzZC1sb2dyb3RhdGUKLUBAIC0xMSw2ICsxMSw3IEBAIG1pc3NpbmdvawotIGNvbXByZXNzCi0gZGVsYXljb21wcmVzcwotIG5vdGlmZW1wdHkKLStzdSByYWRpdXNkIHJhZGl1c2QKLSAKLSAjCi0gIyAgVGhlIG1haW4gc2VydmVyIGxvZwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvZnJlZXJhZGl1cy9mcmVlcmFkaXVzXzMuMC4xOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZyZWVyYWRpdXNfMy4wLjE5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWU2OTc4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZyZWVyYWRpdXNfMy4wLjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjM0ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkZyZWVSQURJVVMgaXMgYW4gSW50ZXJuZXQgYXV0aGVudGljYXRpb24gZGFlbW9uLCB3aGljaCBpbXBsZW1lbnRzIHRoZSBSQURJVVMgXAotcHJvdG9jb2wsIGFzIGRlZmluZWQgaW4gUkZDIDI4NjUgKGFuZCBvdGhlcnMpLiBJdCBhbGxvd3MgTmV0d29yayBBY2Nlc3MgXAotU2VydmVycyAoTkFTIGJveGVzKSB0byBwZXJmb3JtIGF1dGhlbnRpY2F0aW9uIGZvciBkaWFsLXVwIHVzZXJzLiBUaGVyZSBhcmUgXAotYWxzbyBSQURJVVMgY2xpZW50cyBhdmFpbGFibGUgZm9yIFdlYiBzZXJ2ZXJzLCBmaXJld2FsbHMsIFVuaXggbG9naW5zLCBhbmQgXAotbW9yZS4gIFVzaW5nIFJBRElVUyBhbGxvd3MgYXV0aGVudGljYXRpb24gYW5kIGF1dGhvcml6YXRpb24gZm9yIGEgbmV0d29yayB0byBcCi1iZSBjZW50cmFsaXplZCwgYW5kIG1pbmltaXplcyB0aGUgYW1vdW50IG9mIHJlLWNvbmZpZ3VyYXRpb24gd2hpY2ggaGFzIHRvIGJlIFwKLWRvbmUgd2hlbiBhZGRpbmcgb3IgZGVsZXRpbmcgbmV3IHVzZXJzLiIKLQotU1VNTUFSWSA9ICJIaWdoLXBlcmZvcm1hbmNlIGFuZCBoaWdobHkgY29uZmlndXJhYmxlIFJBRElVUyBzZXJ2ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVyYWRpdXMub3JnLyIKLVNFQ1RJT04gPSAiU3lzdGVtL1NlcnZlcnMiCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIgotREVQRU5EUyA9ICJvcGVuc3NsLW5hdGl2ZSBvcGVuc3NsIGxpYmlkbiBsaWJ0b29sIGxpYnBjYXAgbGlidGFsbG9jIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vRnJlZVJBRElVUy9mcmVlcmFkaXVzLXNlcnZlci5naXQ7YnJhbmNoPXYzLjAueDsgXAotICAgIGZpbGU6Ly9mcmVlcmFkaXVzIFwKLSAgICBmaWxlOi8vdm9sYXRpbGVzLjU4X3JhZGl1c2QgXAotICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWVuYmxlLXVzZXItaW4tY29uZi5wYXRjaCBcCi0gICAgZmlsZTovL2ZyZWVyYWRpdXMtY29uZmlndXJlLmFjLWFsbG93LWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoIFwKLSAgICBmaWxlOi8vZnJlZXJhZGl1cy1saWJ0b29sLWRldGVjdGlvbi5wYXRjaCBcCi0gICAgZmlsZTovL2ZyZWVyYWRpdXMtY29uZmlndXJlLmFjLWFkZC1vcHRpb24tZm9yLWxpYmNhcC5wYXRjaCBcCi0gICAgZmlsZTovL2ZyZWVyYWRpdXMtYXZvaWQtc2VhcmNoaW5nLWhvc3QtZGlycy5wYXRjaCBcCi0gICAgZmlsZTovL2ZyZWVyYWRpdXMtcmxtX3B5dGhvbi1hZGQtUFlfSU5DX0RJUi5wYXRjaCBcCi0gICAgZmlsZTovL2ZyZWVyYWRpdXMtbGlidG9vbC1kby1ub3QtdXNlLWpsaWJ0b29sLnBhdGNoIFwKLSAgICBmaWxlOi8vZnJlZXJhZGl1cy1maXgtcXVvdGluZy1mb3ItQlVJTFRfV0lUSC5wYXRjaCBcCi0gICAgZmlsZTovL2ZyZWVyYWRpdXMtZml4LWVycm9yLWZvci1leHBhbnNpb24tb2YtbWFjcm8ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXJsbV9tc2NoYXAtVXNlLWluY2x1ZGVkaXItaW5zdGVhZC1vZi1oYXJkY29kaW5nLXVzci0ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXN1LXRvLXJhZGl1c2QtdXNlci1ncm91cC13aGVuLXJvdGF0aW5nLWxvZ3MucGF0Y2ggXAotICAgIGZpbGU6Ly9yYWRpdXNkLnNlcnZpY2UgXAotICAgIGZpbGU6Ly9yYWRpdXNkLXZvbGF0aWxlcy5jb25mIFwKLSIKLQotU1JDUkVWID0gImFiNGM3NjcwOTlmMjYzYTdjZDQxMDliY2RjYTgwZWU3NDIxMGE3NjkiCi0KLVBBUkFMTEVMX01BS0UgPSAiIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1MREZMQUdTX2FwcGVuZF9wb3dlcnBjID0gIiAtbGF0b21pYyIKLUxERkxBR1NfYXBwZW5kX21pcHNhcmNoID0gIiAtbGF0b21pYyIKLUxERkxBR1NfYXBwZW5kX2FybXY1ID0gIiAtbGF0b21pYyIKLQotRVhUUkFfT0VDT05GID0gIiAtLWVuYWJsZS1zdHJpY3QtZGVwZW5kZW5jaWVzIFwKLSAgICAgICAgLS13aXRoLWRvY2Rpcj0ke2RvY2Rpcn0vZnJlZXJhZGl1cy0ke1BWfSBcCi0gICAgICAgIC0td2l0aC1vcGVuc3NsLWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgLS13aXRoLW9wZW5zc2wtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgLS13aXRob3V0LXJsbV9pcHBvb2wgXAotICAgICAgICAtLXdpdGhvdXQtcmxtX2NhY2hlX21lbWNhY2hlZCBcCi0gICAgICAgIC0td2l0aG91dC1ybG1fY291bnRlciBcCi0gICAgICAgIC0td2l0aG91dC1ybG1fY291Y2hiYXNlIFwKLSAgICAgICAgLS13aXRob3V0LXJsbV9kYm0gXAotICAgICAgICAtLXdpdGhvdXQtcmxtX2VhcF90bmMgXAotICAgICAgICAtLXdpdGhvdXQtcmxtX2VhcF9pa2V2MiBcCi0gICAgICAgIC0td2l0aG91dC1ybG1fb3BlbmRpcmVjdG9yeSBcCi0gICAgICAgIC0td2l0aG91dC1ybG1fcmVkaXMgXAotICAgICAgICAtLXdpdGhvdXQtcmxtX3JlZGlzd2hvIFwKLSAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfZGIyIFwKLSAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfZmlyZWJpcmQgXAotICAgICAgICAtLXdpdGhvdXQtcmxtX3NxbF9mcmVldGRzIFwKLSAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfaW9kYmMgXAotICAgICAgICAtLXdpdGhvdXQtcmxtX3NxbF9vcmFjbGUgXAotICAgICAgICAtLXdpdGhvdXQtcmxtX3NxbF9zeWJhc2UgXAotICAgICAgICAtLXdpdGhvdXQtcmxtX3NxbGhwd2lwcG9vbCBcCi0gICAgICAgIC0td2l0aG91dC1ybG1fc2VjdXJpZCBcCi0gICAgICAgIC0td2l0aG91dC1ybG1fdW5ib3VuZCBcCi0gICAgICAgIGFjX2N2X3BhdGhfUEVSTD0ke2JpbmRpcn0vcGVybCBcCi0gICAgICAgIGF4X2N2X2NjX2J1aWx0aW5fY2hvb3NlX2V4cHI9bm8gXAotICAgICAgICBheF9jdl9jY19idWlsdGluX3R5cGVzX2NvbXBhdGlibGVfcD1ubyBcCi0gICAgICAgIGF4X2N2X2NjX2J1aWx0aW5fYnN3YXA2ND1ubyBcCi0gICAgICAgIGF4X2N2X2NjX2JvdW5kZWRfYXR0cmlidXRlPW5vIFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbScsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIHBjcmUgbGliY2FwIFwKLSAgICAgICAgICAgICAgICAgICBvcGVuc3NsIHJsbS1lYXAtZmFzdCBybG0tZWFwLXB3ZCBcCi0iCi0KLVBBQ0tBR0VDT05GSUdba3JiNV0gPSAiLS13aXRoLXJsbV9rcmI1LC0td2l0aG91dC1ybG1fa3JiNSxrcmI1IgotUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1ybG1fcGFtLC0td2l0aG91dC1ybG1fcGFtLGxpYnBhbSIKLVBBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwLC0td2l0aG91dC1saWJjYXAsbGliY2FwIgotUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtcmxtX2xkYXAsLS13aXRob3V0LXJsbV9sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS13aXRoLXJsbV9zcWxfbXlzcWwsLS13aXRob3V0LXJsbV9zcWxfbXlzcWwsbXlzcWw1IgotUEFDS0FHRUNPTkZJR1tzcWxpdGVdID0gIi0td2l0aC1ybG1fc3FsX3NxbGl0ZSwtLXdpdGhvdXQtcmxtX3NxbF9zcWxpdGUsc3FsaXRlMyIKLVBBQ0tBR0VDT05GSUdbdW5peG9kYmNdID0gIi0td2l0aC1ybG1fc3FsX3VuaXhvZGJjLC0td2l0aG91dC1ybG1fc3FsX3VuaXhvZGJjLHVuaXhvZGJjIgotUEFDS0FHRUNPTkZJR1twb3N0Z3Jlc3FsXSA9ICItLXdpdGgtcmxtX3NxbF9wb3N0Z3Jlc3FsLC0td2l0aG91dC1ybG1fc3FsX3Bvc3RncmVzcWwscG9zdGdyZXNxbCIKLVBBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS13aXRoLXBjcmUsLS13aXRob3V0LXBjcmUsbGlicGNyZSIKLVBBQ0tBR0VDT05GSUdbcGVybF0gPSAiLS13aXRoLXBlcmw9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BlcmwtbmF0aXZlL3BlcmwgLS13aXRoLXJsbV9wZXJsLC0td2l0aG91dC1ybG1fcGVybCxwZXJsLW5hdGl2ZSBwZXJsLHBlcmwiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS13aXRoLXJsbV9weXRob24gLS13aXRoLXJsbS1weXRob24tYmluPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiAtLXdpdGgtcmxtLXB5dGhvbi1pbmNsdWRlLWRpcj0ke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9LC0td2l0aG91dC1ybG1fcHl0aG9uLHB5dGhvbi1uYXRpdmUgcHl0aG9uIgotUEFDS0FHRUNPTkZJR1tyZXN0XSA9ICItLXdpdGgtcmxtX3Jlc3QsLS13aXRob3V0LXJsbV9yZXN0LGN1cmwganNvbi1jIgotUEFDS0FHRUNPTkZJR1tydWJ5XSA9ICItLXdpdGgtcmxtX3J1YnksLS13aXRob3V0LXJsbV9ydWJ5LHJ1YnkiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLCAtLXdpdGhvdXQtb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbcmxtLWVhcC1mYXN0XSA9ICItLXdpdGgtcmxtX2VhcF9mYXN0LCAtLXdpdGhvdXQtcmxtX2VhcF9mYXN0IgotUEFDS0FHRUNPTkZJR1tybG0tZWFwLXB3ZF0gPSAiLS13aXRoLXJsbV9lYXBfcHdkLCAtLXdpdGhvdXQtcmxtX2VhcF9wd2QiCi0KLWluaGVyaXQgdXNlcmFkZCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQKLQotIyBUaGlzIGlzIG5vdCBhIGNwYW4gb3IgcHl0aG9uIGJhc2VkIHBhY2thZ2UsIGJ1dCBpdCBuZWVkcyBzb21lIGRlZmluaXRpb25zCi0jIGZyb20gY3Bhbi1iYXNlIGFuZCBweXRob24tZGlyIGJiY2xhc3NlcyBmb3IgYnVpbGRpbmcgcmxtX3BlcmwgYW5kIHJsbV9weXRob24KLSMgY29ycmVjdGx5LgotaW5oZXJpdCBjcGFuLWJhc2UgcHl0aG9uLWRpcgotCi0jIFRoZSBtb2R1bGVzIHN1YmRpcnMgYWxzbyBuZWVkIHRvIGJlIHByb2Nlc3NlZCBieSBhdXRvcmVjb25mLiBVc2UgYXV0b2dlbi5zaAotIyBpbiBvcmRlciB0byBoYW5kbGUgdGhlIHN1YmRpcnMgY29ycmVjdGx5LgotZG9fY29uZmlndXJlICgpIHsKLSAgICAuL2F1dG9nZW4uc2gKLQotICAgICMgdGhlIGNvbmZpZ3VyZSBvZiBybG1fcGVybCBuZWVkcyB0aGlzIHRvIGdldCBjb3JyZWN0Ci0gICAgIyBtb2RfY2ZsYWdzIGFuZCBtb2RfbGRmbGFncwotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BlcmwnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBleHBvcnQgUEVSTDVMSUI9IiR7U1RBR0lOR19MSUJESVJ9JHtQRVJMX09XTl9ESVJ9L3BlcmwvJHtAZ2V0X3BlcmxfdmVyc2lvbihkKX0iCi0gICAgZmkKLQotICAgIG9lX3J1bmNvbmYKLQotICAgICMgd2UgZG9uJ3QgbmVlZCBkaGNwY2xpZW50Ci0gICAgc2VkIC1pIC1lICdzL2RoY3BjbGllbnQubWsvLycgJHtTfS9zcmMvbW9kdWxlcy9wcm90b19kaGNwL2FsbC5tawotfQotCi1JTklUU0NSSVBUX05BTUUgPSAicmFkaXVzZCIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJhZGl1c2Quc2VydmljZSIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIHJhZGl1c2QiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgcm0gLXJmICR7RH0KLSAgICBta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmQKLSAgICBta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQKLSAgICBta2RpciAtcCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgbWtkaXIgLXAgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9yYWRpdXNkCi0gICAgbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLQotICAgIGV4cG9ydCBMRF9MSUJSQVJZX1BBVEg9JHtEfS8ke2xpYmRpcn0KLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgUj0ke0R9IElOU1RBTExTVFJJUD0iIgotCi0gICAgIyByZW1vdmUgdW5zdXBwb3J0ZWQgY29uZmlnIGZpbGVzCi0gICAgcm0gLWYgJHtEfS8ke3N5c2NvbmZkaXJ9L3JhZGRiL2V4cGVyaW1lbnRhbC5jb25mCi0KLSAgICAjIHJlbW92ZSBzY3JpcHRzIHRoYXQgcmVxdWlyZWQgUGVybChEQkkpCi0gICAgcm0gLXJmICR7RH0vJHtiaW5kaXJ9L3JhZHNxbHJlbGF5Ci0KLSAgICBjcCAtZiAke1dPUktESVJ9L2ZyZWVyYWRpdXMgJHtEfS9ldGMvaW5pdC5kL3JhZGl1c2QKLSAgICBybSAtZiAke0R9LyR7c2JpbmRpcn0vcmMucmFkaXVzZAotICAgIGNobW9kICt4ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvcmFkaXVzZAotICAgIHJtIC1yZiAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vcnVuLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy41OF9yYWRpdXNkICAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy81OF9yYWRpdXNkCi0KLSAgICBjaG93biAtUiByYWRpdXNkOnJhZGl1c2QgJHtEfS8ke3N5c2NvbmZkaXJ9L3JhZGRiLwotICAgIGNob3duIC1SIHJhZGl1c2Q6cmFkaXVzZCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbGliL3JhZGl1c2QKLQotICAgICMgRm9yIHN5c3RlbWQKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcmFkaXVzZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotICAgICAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0gICAgICAgICAgIC1lICdzLEBTVEFURURJUkAsJHtsb2NhbHN0YXRlZGlyfSxnJyBcCi0gICAgICAgICAgIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLSAgICAgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmFkaXVzZC5zZXJ2aWNlCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JhZGl1c2Qtdm9sYXRpbGVzLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KLSAgICBmaQotfQotCi0jIFRoaXMgaXMgb25seSBuZWVkZWQgd2hlbiB3ZSBpbnN0YWxsL3VwZGF0ZSBvbiBhIHJ1bm5pbmcgdGFyZ2V0LgotIwotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLSAgICBpZiBbIC16ICIkRCIgXTsgdGhlbgotICAgICAgICBpZiBjb21tYW5kIC12IHN5c3RlbWQtdG1wZmlsZXMgPi9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgICAgIyBjcmVhdGUgL3Zhci9sb2cvcmFkaXVzLCAvdmFyL3J1bi9yYWRpdXNkCi0gICAgICAgICAgICBzeXN0ZW1kLXRtcGZpbGVzIC0tY3JlYXRlICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9yYWRpdXNkLXZvbGF0aWxlcy5jb25mCi0gICAgICAgIGVsaWYgWyAtZSAke3N5c2NvbmZkaXJ9L2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdOyB0aGVuCi0gICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKLSAgICAgICAgZmkKLQotICAgICAgICAjIEZpeCBvd25lcnNoaXAgZm9yIC9ldGMvcmFkZGIvKiwgL3Zhci9saWIvcmFkaXVzZAotICAgICAgICBjaG93biAtUiByYWRpdXNkOnJhZGl1c2QgJHtzeXNjb25mZGlyfS9yYWRkYgotICAgICAgICBjaG93biAtUiByYWRpdXNkOnJhZGl1c2QgJHtsb2NhbHN0YXRlZGlyfS9saWIvcmFkaXVzZAotICAgIGZpCi19Ci0KLSMgV2UgcmVhbGx5IG5lZWQgdGhlIHN5bWxpbmsgOigKLUlOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LWtyYjUgPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tbGRhcCA9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1teXNxbCA9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1wZXJsID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LXBvc3RncmVzcWwgPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tcHl0aG9uID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LXVuaXhvZGJjID0gImRldi1zbyIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXV0aWxzICR7UE59LWxkYXAgJHtQTn0ta3JiNSAke1BOfS1wZXJsIFwKLSAgICAke1BOfS1weXRob24gJHtQTn0tbXlzcWwgJHtQTn0tcG9zdGdyZXNxbCAke1BOfS11bml4b2RiYyIKLQotRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCi0KLUZJTEVTXyR7UE59LWxkYXAgPSAiJHtsaWJkaXJ9L3JsbV9sZGFwLnNvKiBcCi0gICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWF2YWlsYWJsZS9sZGFwIFwKLSIKLQotRklMRVNfJHtQTn0ta3JiNSA9ICIke2xpYmRpcn0vcmxtX2tyYjUuc28qIFwKLSAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtYXZhaWxhYmxlL2tyYjUgXAotIgotCi1GSUxFU18ke1BOfS1wZXJsID0gIiR7bGliZGlyfS9ybG1fcGVybC5zbyogXAotICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1jb25maWcvcGVybCBcCi0gICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWF2YWlsYWJsZS9wZXJsIFwKLSIKLQotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7bGliZGlyfS9ybG1fcHl0aG9uLnNvKiBcCi0gICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWNvbmZpZy9weXRob24gXAotICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1hdmFpbGFibGUvcHl0aG9uIFwKLSIKLQotRklMRVNfJHtQTn0tbXlzcWwgPSAiJHtsaWJkaXJ9L3JsbV9zcWxfbXlzcWwuc28qIFwKLSAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtY29uZmlnL3NxbC8qL215c3FsIFwKLSAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtYXZhaWxhYmxlL3NxbCBcCi0iCi0KLUZJTEVTXyR7UE59LXBvc3RncmVzcWwgPSAiJHtsaWJkaXJ9L3JsbV9zcWxfcG9zdGdyZXNxbC5zbyogXAotICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1jb25maWcvc3FsLyovcG9zdGdyZXNxbCBcCi0iCi0KLUZJTEVTXyR7UE59LXVuaXhvZGJjID0gIiR7bGliZGlyfS9ybG1fc3FsX3VuaXhvZGJjLnNvKiIKLQotRklMRVNfJHtQTn0gPSsgIiR7bGliZGlyfS9ybG1fKi5zbyogJHtsaWJkaXJ9L3Byb3RvXypzbyoiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJwZXJsIgotUkRFUEVORFNfJHtQTn0tdXRpbHMgPSAiJHtQTn0gcGVybCIKLQotQ0xFQU5CUk9LRU4gPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZyZWVyYWRpdXNfMy4wLjIwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2ZyZWVyYWRpdXMvZnJlZXJhZGl1c18zLjAuMjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDA1Y2E0NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9mcmVlcmFkaXVzL2ZyZWVyYWRpdXNfMy4wLjIwLmJiCkBAIC0wLDAgKzEsMjM3IEBACitERVNDUklQVElPTiA9ICJGcmVlUkFESVVTIGlzIGFuIEludGVybmV0IGF1dGhlbnRpY2F0aW9uIGRhZW1vbiwgd2hpY2ggaW1wbGVtZW50cyB0aGUgUkFESVVTIFwKK3Byb3RvY29sLCBhcyBkZWZpbmVkIGluIFJGQyAyODY1IChhbmQgb3RoZXJzKS4gSXQgYWxsb3dzIE5ldHdvcmsgQWNjZXNzIFwKK1NlcnZlcnMgKE5BUyBib3hlcykgdG8gcGVyZm9ybSBhdXRoZW50aWNhdGlvbiBmb3IgZGlhbC11cCB1c2Vycy4gVGhlcmUgYXJlIFwKK2Fsc28gUkFESVVTIGNsaWVudHMgYXZhaWxhYmxlIGZvciBXZWIgc2VydmVycywgZmlyZXdhbGxzLCBVbml4IGxvZ2lucywgYW5kIFwKK21vcmUuICBVc2luZyBSQURJVVMgYWxsb3dzIGF1dGhlbnRpY2F0aW9uIGFuZCBhdXRob3JpemF0aW9uIGZvciBhIG5ldHdvcmsgdG8gXAorYmUgY2VudHJhbGl6ZWQsIGFuZCBtaW5pbWl6ZXMgdGhlIGFtb3VudCBvZiByZS1jb25maWd1cmF0aW9uIHdoaWNoIGhhcyB0byBiZSBcCitkb25lIHdoZW4gYWRkaW5nIG9yIGRlbGV0aW5nIG5ldyB1c2Vycy4iCisKK1NVTU1BUlkgPSAiSGlnaC1wZXJmb3JtYW5jZSBhbmQgaGlnaGx5IGNvbmZpZ3VyYWJsZSBSQURJVVMgc2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlcmFkaXVzLm9yZy8iCitTRUNUSU9OID0gIlN5c3RlbS9TZXJ2ZXJzIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lYjcyM2I2MTUzOWZlZWYwMTNkZTQ3NmU2OGI1YzUwYSIKK0RFUEVORFMgPSAib3BlbnNzbC1uYXRpdmUgb3BlbnNzbCBsaWJpZG4gbGlidG9vbCBsaWJwY2FwIGxpYnRhbGxvYyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0ZyZWVSQURJVVMvZnJlZXJhZGl1cy1zZXJ2ZXIuZ2l0O2JyYW5jaD12My4wLng7bGZzPTA7IFwKKyAgICBmaWxlOi8vZnJlZXJhZGl1cyBcCisgICAgZmlsZTovL3ZvbGF0aWxlcy41OF9yYWRpdXNkIFwKKyAgICBmaWxlOi8vZnJlZXJhZGl1cy1lbmJsZS11c2VyLWluLWNvbmYucGF0Y2ggXAorICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWNvbmZpZ3VyZS5hYy1hbGxvdy1jcm9zcy1jb21waWxhdGlvbi5wYXRjaCBcCisgICAgZmlsZTovL2ZyZWVyYWRpdXMtbGlidG9vbC1kZXRlY3Rpb24ucGF0Y2ggXAorICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWNvbmZpZ3VyZS5hYy1hZGQtb3B0aW9uLWZvci1saWJjYXAucGF0Y2ggXAorICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWF2b2lkLXNlYXJjaGluZy1ob3N0LWRpcnMucGF0Y2ggXAorICAgIGZpbGU6Ly9mcmVlcmFkaXVzLXJsbV9weXRob24tYWRkLVBZX0lOQ19ESVIucGF0Y2ggXAorICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWxpYnRvb2wtZG8tbm90LXVzZS1qbGlidG9vbC5wYXRjaCBcCisgICAgZmlsZTovL2ZyZWVyYWRpdXMtZml4LXF1b3RpbmctZm9yLUJVSUxUX1dJVEgucGF0Y2ggXAorICAgIGZpbGU6Ly9mcmVlcmFkaXVzLWZpeC1lcnJvci1mb3ItZXhwYW5zaW9uLW9mLW1hY3JvLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1ybG1fbXNjaGFwLVVzZS1pbmNsdWRlZGlyLWluc3RlYWQtb2YtaGFyZGNvZGluZy11c3ItLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1ybG1fcHl0aG9uMy1hZGQtUFlfSU5DX0RJUi1pbi1zZWFyY2gtZGlyLnBhdGNoIFwKKyAgICBmaWxlOi8vcmFkaXVzZC5zZXJ2aWNlIFwKKyAgICBmaWxlOi8vcmFkaXVzZC12b2xhdGlsZXMuY29uZiBcCisiCisKK1NSQ1JFViA9ICJkOTRjOTUzYWI5NjAyYTIzODQzM2JhMTg1MzMxMTFiODQ1ZmQ4ZTllIgorCitQQVJBTExFTF9NQUtFID0gIiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworTERGTEFHU19hcHBlbmRfcG93ZXJwYyA9ICIgLWxhdG9taWMiCitMREZMQUdTX2FwcGVuZF9taXBzYXJjaCA9ICIgLWxhdG9taWMiCitMREZMQUdTX2FwcGVuZF9hcm12NSA9ICIgLWxhdG9taWMiCisKK0VYVFJBX09FQ09ORiA9ICIgLS1lbmFibGUtc3RyaWN0LWRlcGVuZGVuY2llcyBcCisgICAgICAgIC0td2l0aC1kb2NkaXI9JHtkb2NkaXJ9L2ZyZWVyYWRpdXMtJHtQVn0gXAorICAgICAgICAtLXdpdGgtb3BlbnNzbC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgICAgIC0td2l0aC1vcGVuc3NsLWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSBcCisgICAgICAgIC0td2l0aG91dC1ybG1faXBwb29sIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9jYWNoZV9tZW1jYWNoZWQgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX2NvdW50ZXIgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX2NvdWNoYmFzZSBcCisgICAgICAgIC0td2l0aG91dC1ybG1fZGJtIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9lYXBfdG5jIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9lYXBfaWtldjIgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX29wZW5kaXJlY3RvcnkgXAorICAgICAgICAtLXdpdGhvdXQtcmxtX3JlZGlzIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9yZWRpc3dobyBcCisgICAgICAgIC0td2l0aG91dC1ybG1fc3FsX2RiMiBcCisgICAgICAgIC0td2l0aG91dC1ybG1fc3FsX2ZpcmViaXJkIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfZnJlZXRkcyBcCisgICAgICAgIC0td2l0aG91dC1ybG1fc3FsX2lvZGJjIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfb3JhY2xlIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfc3liYXNlIFwKKyAgICAgICAgLS13aXRob3V0LXJsbV9zcWxfbW9uZ28gXAorICAgICAgICAtLXdpdGhvdXQtcmxtX3NxbGhwd2lwcG9vbCBcCisgICAgICAgIC0td2l0aG91dC1ybG1fc2VjdXJpZCBcCisgICAgICAgIC0td2l0aG91dC1ybG1fdW5ib3VuZCBcCisgICAgICAgIC0td2l0aG91dC1ybG1fcHl0aG9uIFwKKyAgICAgICAgYWNfY3ZfcGF0aF9QRVJMPSR7YmluZGlyfS9wZXJsIFwKKyAgICAgICAgYXhfY3ZfY2NfYnVpbHRpbl9jaG9vc2VfZXhwcj1ubyBcCisgICAgICAgIGF4X2N2X2NjX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wPW5vIFwKKyAgICAgICAgYXhfY3ZfY2NfYnVpbHRpbl9ic3dhcDY0PW5vIFwKKyAgICAgICAgYXhfY3ZfY2NfYm91bmRlZF9hdHRyaWJ1dGU9bm8gXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgcGNyZSBsaWJjYXAgXAorICAgICAgICAgICAgICAgICAgIG9wZW5zc2wgcmxtLWVhcC1mYXN0IHJsbS1lYXAtcHdkIFwKKyIKKworUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItLXdpdGgtcmxtX2tyYjUsLS13aXRob3V0LXJsbV9rcmI1LGtyYjUiCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLXJsbV9wYW0sLS13aXRob3V0LXJsbV9wYW0sbGlicGFtIgorUEFDS0FHRUNPTkZJR1tsaWJjYXBdID0gIi0td2l0aC1saWJjYXAsLS13aXRob3V0LWxpYmNhcCxsaWJjYXAiCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1ybG1fbGRhcCwtLXdpdGhvdXQtcmxtX2xkYXAsb3BlbmxkYXAiCitQQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtcmxtX3NxbF9teXNxbCwtLXdpdGhvdXQtcmxtX3NxbF9teXNxbCxteXNxbDUiCitQQUNLQUdFQ09ORklHW3NxbGl0ZV0gPSAiLS13aXRoLXJsbV9zcWxfc3FsaXRlLC0td2l0aG91dC1ybG1fc3FsX3NxbGl0ZSxzcWxpdGUzIgorUEFDS0FHRUNPTkZJR1t1bml4b2RiY10gPSAiLS13aXRoLXJsbV9zcWxfdW5peG9kYmMsLS13aXRob3V0LXJsbV9zcWxfdW5peG9kYmMsdW5peG9kYmMiCitQQUNLQUdFQ09ORklHW3Bvc3RncmVzcWxdID0gIi0td2l0aC1ybG1fc3FsX3Bvc3RncmVzcWwsLS13aXRob3V0LXJsbV9zcWxfcG9zdGdyZXNxbCxwb3N0Z3Jlc3FsIgorUEFDS0FHRUNPTkZJR1twY3JlXSA9ICItLXdpdGgtcGNyZSwtLXdpdGhvdXQtcGNyZSxsaWJwY3JlIgorUEFDS0FHRUNPTkZJR1twZXJsXSA9ICItLXdpdGgtcGVybD0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvcGVybCAtLXdpdGgtcmxtX3BlcmwsLS13aXRob3V0LXJsbV9wZXJsLHBlcmwtbmF0aXZlIHBlcmwscGVybCIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uM10gPSAiLS13aXRoLXJsbV9weXRob24zIC0td2l0aC1ybG0tcHl0aG9uMy1iaW49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgLS13aXRoLXJsbS1weXRob24zLWluY2x1ZGUtZGlyPSR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0sLS13aXRob3V0LXJsbV9weXRob24zLHB5dGhvbjMtbmF0aXZlIHB5dGhvbjMiCitQQUNLQUdFQ09ORklHW3Jlc3RdID0gIi0td2l0aC1ybG1fcmVzdCwtLXdpdGhvdXQtcmxtX3Jlc3QsY3VybCBqc29uLWMiCitQQUNLQUdFQ09ORklHW3J1YnldID0gIi0td2l0aC1ybG1fcnVieSwtLXdpdGhvdXQtcmxtX3J1YnkscnVieSIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsIC0td2l0aG91dC1vcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tybG0tZWFwLWZhc3RdID0gIi0td2l0aC1ybG1fZWFwX2Zhc3QsIC0td2l0aG91dC1ybG1fZWFwX2Zhc3QiCitQQUNLQUdFQ09ORklHW3JsbS1lYXAtcHdkXSA9ICItLXdpdGgtcmxtX2VhcF9wd2QsIC0td2l0aG91dC1ybG1fZWFwX3B3ZCIKKworaW5oZXJpdCB1c2VyYWRkIGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgc3lzdGVtZAorCisjIFRoaXMgaXMgbm90IGEgY3BhbiBvciBweXRob24gYmFzZWQgcGFja2FnZSwgYnV0IGl0IG5lZWRzIHNvbWUgZGVmaW5pdGlvbnMKKyMgZnJvbSBjcGFuLWJhc2UgYW5kIHB5dGhvbjMtZGlyIGJiY2xhc3NlcyBmb3IgYnVpbGRpbmcgcmxtX3BlcmwgYW5kIHJsbV9weXRob24KKyMgY29ycmVjdGx5LgoraW5oZXJpdCBjcGFuLWJhc2UgcHl0aG9uMy1kaXIKKworIyBUaGUgbW9kdWxlcyBzdWJkaXJzIGFsc28gbmVlZCB0byBiZSBwcm9jZXNzZWQgYnkgYXV0b3JlY29uZi4gVXNlIGF1dG9nZW4uc2gKKyMgaW4gb3JkZXIgdG8gaGFuZGxlIHRoZSBzdWJkaXJzIGNvcnJlY3RseS4KK2RvX2NvbmZpZ3VyZSAoKSB7CisgICAgLi9hdXRvZ2VuLnNoCisKKyAgICAjIHRoZSBjb25maWd1cmUgb2YgcmxtX3BlcmwgbmVlZHMgdGhpcyB0byBnZXQgY29ycmVjdAorICAgICMgbW9kX2NmbGFncyBhbmQgbW9kX2xkZmxhZ3MKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwZXJsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgZXhwb3J0IFBFUkw1TElCPSIke1NUQUdJTkdfTElCRElSfSR7UEVSTF9PV05fRElSfS9wZXJsLyR7QGdldF9wZXJsX3ZlcnNpb24oZCl9IgorICAgIGZpCisKKyAgICBvZV9ydW5jb25mCisKKyAgICAjIHdlIGRvbid0IG5lZWQgZGhjcGNsaWVudAorICAgIHNlZCAtaSAtZSAncy9kaGNwY2xpZW50Lm1rLy8nICR7U30vc3JjL21vZHVsZXMvcHJvdG9fZGhjcC9hbGwubWsKK30KKworSU5JVFNDUklQVF9OQU1FID0gInJhZGl1c2QiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJyYWRpdXNkLnNlcnZpY2UiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS1zaGVsbCAvYmluL2ZhbHNlIC0tdXNlci1ncm91cCByYWRpdXNkIgorCitkb19pbnN0YWxsKCkgeworICAgIHJtIC1yZiAke0R9CisgICAgbWtkaXIgLXAgJHtEfS8ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kCisgICAgbWtkaXIgLXAgJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kCisgICAgbWtkaXIgLXAgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIG1rZGlyIC1wICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvcmFkaXVzZAorICAgIG1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisKKyAgICBleHBvcnQgTERfTElCUkFSWV9QQVRIPSR7RH0vJHtsaWJkaXJ9CisgICAgb2VfcnVubWFrZSBpbnN0YWxsIFI9JHtEfSBJTlNUQUxMU1RSSVA9IiIKKworICAgICMgcmVtb3ZlIHVuc3VwcG9ydGVkIGNvbmZpZyBmaWxlcworICAgIHJtIC1mICR7RH0vJHtzeXNjb25mZGlyfS9yYWRkYi9leHBlcmltZW50YWwuY29uZgorCisgICAgIyByZW1vdmUgc2NyaXB0cyB0aGF0IHJlcXVpcmVkIFBlcmwoREJJKQorICAgIHJtIC1yZiAke0R9LyR7YmluZGlyfS9yYWRzcWxyZWxheQorCisgICAgY3AgLWYgJHtXT1JLRElSfS9mcmVlcmFkaXVzICR7RH0vZXRjL2luaXQuZC9yYWRpdXNkCisgICAgcm0gLWYgJHtEfS8ke3NiaW5kaXJ9L3JjLnJhZGl1c2QKKyAgICBjaG1vZCAreCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL3JhZGl1c2QKKyAgICBybSAtcmYgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L3J1bi8KKyAgICBybSAtcmYgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuNThfcmFkaXVzZCAgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvNThfcmFkaXVzZAorCisgICAgY2hvd24gLVIgcmFkaXVzZDpyYWRpdXNkICR7RH0vJHtzeXNjb25mZGlyfS9yYWRkYi8KKyAgICBjaG93biAtUiByYWRpdXNkOnJhZGl1c2QgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9yYWRpdXNkCisKKyAgICAjIEZvciBzeXN0ZW1kCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9yYWRpdXNkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICAgICAgc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAorICAgICAgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorICAgICAgICAgICAgLWUgJ3MsQFNUQVRFRElSQCwke2xvY2Fsc3RhdGVkaXJ9LGcnIFwKKyAgICAgICAgICAgIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKyAgICAgICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3JhZGl1c2Quc2VydmljZQorCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcmFkaXVzZC12b2xhdGlsZXMuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3JhZGl1c2QuY29uZgorICAgIGZpCit9CisKKyMgVGhpcyBpcyBvbmx5IG5lZWRlZCB3aGVuIHdlIGluc3RhbGwvdXBkYXRlIG9uIGEgcnVubmluZyB0YXJnZXQuCisjCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworICAgIGlmIFsgLXogIiREIiBdOyB0aGVuCisgICAgICAgIGlmIGNvbW1hbmQgLXYgc3lzdGVtZC10bXBmaWxlcyA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgICAgICAjIGNyZWF0ZSAvdmFyL2xvZy9yYWRpdXMsIC92YXIvcnVuL3JhZGl1c2QKKyAgICAgICAgICAgIHN5c3RlbWQtdG1wZmlsZXMgLS1jcmVhdGUgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3JhZGl1c2QuY29uZgorICAgICAgICBlbGlmIFsgLWUgJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggXTsgdGhlbgorICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggdXBkYXRlCisgICAgICAgIGZpCisKKyAgICAgICAgIyBGaXggb3duZXJzaGlwIGZvciAvZXRjL3JhZGRiLyosIC92YXIvbGliL3JhZGl1c2QKKyAgICAgICAgY2hvd24gLVIgcmFkaXVzZDpyYWRpdXNkICR7c3lzY29uZmRpcn0vcmFkZGIKKyAgICAgICAgY2hvd24gLVIgcmFkaXVzZDpyYWRpdXNkICR7bG9jYWxzdGF0ZWRpcn0vbGliL3JhZGl1c2QKKyAgICBmaQorfQorCisjIFdlIHJlYWxseSBuZWVkIHRoZSBzeW1saW5rIDooCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1rcmI1ID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LWxkYXAgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tbXlzcWwgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tcGVybCA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1wb3N0Z3Jlc3FsID0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LXB5dGhvbiA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS11bml4b2RiYyA9ICJkZXYtc28iCisKK1BBQ0tBR0VTID0rICIke1BOfS11dGlscyAke1BOfS1sZGFwICR7UE59LWtyYjUgJHtQTn0tcGVybCBcCisgICAgJHtQTn0tcHl0aG9uICR7UE59LW15c3FsICR7UE59LXBvc3RncmVzcWwgJHtQTn0tdW5peG9kYmMiCisKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS8qIgorCitGSUxFU18ke1BOfS1sZGFwID0gIiR7bGliZGlyfS9ybG1fbGRhcC5zbyogXAorICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1hdmFpbGFibGUvbGRhcCBcCisiCisKK0ZJTEVTXyR7UE59LWtyYjUgPSAiJHtsaWJkaXJ9L3JsbV9rcmI1LnNvKiBcCisgICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWF2YWlsYWJsZS9rcmI1IFwKKyIKKworRklMRVNfJHtQTn0tcGVybCA9ICIke2xpYmRpcn0vcmxtX3Blcmwuc28qIFwKKyAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtY29uZmlnL3BlcmwgXAorICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1hdmFpbGFibGUvcGVybCBcCisiCisKK0ZJTEVTXyR7UE59LXB5dGhvbiA9ICIke2xpYmRpcn0vcmxtX3B5dGhvbjMuc28qIFwKKyAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtY29uZmlnL3B5dGhvbjMgXAorICAgICR7c3lzY29uZmRpcn0vcmFkZGIvbW9kcy1hdmFpbGFibGUvcHl0aG9uMyBcCisiCisKK0ZJTEVTXyR7UE59LW15c3FsID0gIiR7bGliZGlyfS9ybG1fc3FsX215c3FsLnNvKiBcCisgICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWNvbmZpZy9zcWwvKi9teXNxbCBcCisgICAgJHtzeXNjb25mZGlyfS9yYWRkYi9tb2RzLWF2YWlsYWJsZS9zcWwgXAorIgorCitGSUxFU18ke1BOfS1wb3N0Z3Jlc3FsID0gIiR7bGliZGlyfS9ybG1fc3FsX3Bvc3RncmVzcWwuc28qIFwKKyAgICAke3N5c2NvbmZkaXJ9L3JhZGRiL21vZHMtY29uZmlnL3NxbC8qL3Bvc3RncmVzcWwgXAorIgorCitGSUxFU18ke1BOfS11bml4b2RiYyA9ICIke2xpYmRpcn0vcmxtX3NxbF91bml4b2RiYy5zbyoiCisKK0ZJTEVTXyR7UE59ID0rICIke2xpYmRpcn0vcmxtXyouc28qICR7bGliZGlyfS9wcm90b18qc28qIgorCitSREVQRU5EU18ke1BOfSArPSAicGVybCIKK1JERVBFTkRTXyR7UE59LXV0aWxzID0gIiR7UE59IHBlcmwiCisKK0NMRUFOQlJPS0VOID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkva2VhL2tlYV8xLjcuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rZWEva2VhXzEuNy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjMwZmQwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9rZWEva2VhXzEuNy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotU1VNTUFSWSA9ICJJU0MgS2VhIERIQ1AgU2VydmVyIgotREVTQ1JJUFRJT04gPSAiS2VhIGlzIHRoZSBuZXh0IGdlbmVyYXRpb24gb2YgREhDUCBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgSVNDLiBJdCBzdXBwb3J0cyBib3RoIERIQ1B2NCBhbmQgREhDUHY2IHByb3RvY29scyBhbG9uZyB3aXRoIHRoZWlyIGV4dGVuc2lvbnMsIGUuZy4gcHJlZml4IGRlbGVnYXRpb24gYW5kIGR5bmFtaWMgdXBkYXRlcyB0byBETlMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2tlYS5pc2Mub3JnIgotU0VDVElPTiA9ICJjb25uZWN0aXZpdHkiCi1MSUNFTlNFID0gIk1QTC0yLjAgJiBBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MGU1YjAxYzg0OGM3NzM2YTBjOWU2OGY5YzljZDAyODEiCi0KLURFUEVORFMgKz0gImtlYS1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiXAotICAgIGh0dHA6Ly9mdHAuaXNjLm9yZy9pc2Mva2VhLyR7UFZ9LyR7QlB9LnRhci5neiBcCi0gICAgZmlsZTovLzAwMDEtcmVtb3ZlLUFDX1RSWV9SVU4ucGF0Y2ggXAotICAgIGZpbGU6Ly9rZWEtZGhjcDQuc2VydmljZSBcCi0gICAgZmlsZTovL2tlYS1kaGNwNi5zZXJ2aWNlIFwKLSAgICBmaWxlOi8va2VhLWRoY3AtZGRucy5zZXJ2aWNlIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmZGEwM2JmNDY1ODE4MDA5YjcwZGZmYzIyNmRhNzc3ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMGY4MmM1NDhiODQ0YzEyZWQ0NmM0ZWIzODgwZDYzYjQ1ZWMwNGNlY2ZjZjJlNGFiMWQ3YmFkYTdmZmY0ZjJhIgotCi1pbmhlcml0IGF1dG90b29scyBzeXN0ZW1kCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJrZWEtZGhjcDQuc2VydmljZSBrZWEtZGhjcDYuc2VydmljZSBrZWEtZGhjcC1kZG5zLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCi0KLURFQlVHX09QVElNSVpBVElPTl9yZW1vdmVfbWlwcyA9ICIgLU9nIgotREVCVUdfT1BUSU1JWkFUSU9OX2FwcGVuZF9taXBzID0gIiAtTyIKLUJVSUxEX09QVElNSVpBVElPTl9yZW1vdmVfbWlwcyA9ICIgLU9nIgotQlVJTERfT1BUSU1JWkFUSU9OX2FwcGVuZF9taXBzID0gIiAtTyIKLQotREVCVUdfT1BUSU1JWkFUSU9OX3JlbW92ZV9taXBzZWwgPSAiIC1PZyIKLURFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfbWlwc2VsID0gIiAtTyIKLUJVSUxEX09QVElNSVpBVElPTl9yZW1vdmVfbWlwc2VsID0gIiAtT2ciCi1CVUlMRF9PUFRJTUlaQVRJT05fYXBwZW5kX21pcHNlbCA9ICIgLU8iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICBta2RpciAtcCAke0J9L3NyYy9saWIvbG9nL2NvbXBpbGVyLwotICAgIGxuIC1zZiAke1NUQUdJTkdfQklORElSX05BVElWRX0va2VhLW1zZy1jb21waWxlciAke0J9L3NyYy9saWIvbG9nL2NvbXBpbGVyL2tlYS1tc2ctY29tcGlsZXIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9rZWEtZGhjcCpzZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Ci0gICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotICAgICAgICAgICAtZSAncyxATE9DQUxTVEFURURJUkAsJHtsb2NhbHN0YXRlZGlyfSxnJyAtZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCi0gICAgICAgICAgICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2tlYS1kaGNwKnNlcnZpY2UKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgcm0gLXJmICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKLX0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gIm9wZW5zc2wgbG9nNGNwbHVzIGJvb3N0IgotCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsPSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7cHJlZml4fSwsb3BlbnNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tsb2c0Y3BsdXNdID0gIi0td2l0aC1sb2c0Y3BsdXM9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtwcmVmaXh9LCxsb2c0Y3BsdXMsbG9nNGNwbHVzIgotUEFDS0FHRUNPTkZJR1tib29zdF0gPSAiLS13aXRoLWJvb3N0LWxpYnM9LWxib29zdF9zeXN0ZW0sLGJvb3N0LGJvb3N0IgotCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9rZWEvaG9va3MvKi5hICR7bGliZGlyfS9ob29rcy8qLmEiCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2hvb2tzLyouc28iCi0KLUJCQ0xBU1NFWFRFTkQgKz0gIm5hdGl2ZSIKLQotUEFSQUxMRUxfTUFLRUlOU1QgPSAiIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tlYS9rZWFfMS43LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkva2VhL2tlYV8xLjcuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTIyMWMzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2tlYS9rZWFfMS43LjYuYmIKQEAgLTAsMCArMSw2NyBAQAorU1VNTUFSWSA9ICJJU0MgS2VhIERIQ1AgU2VydmVyIgorREVTQ1JJUFRJT04gPSAiS2VhIGlzIHRoZSBuZXh0IGdlbmVyYXRpb24gb2YgREhDUCBzb2Z0d2FyZSBkZXZlbG9wZWQgYnkgSVNDLiBJdCBzdXBwb3J0cyBib3RoIERIQ1B2NCBhbmQgREhDUHY2IHByb3RvY29scyBhbG9uZyB3aXRoIHRoZWlyIGV4dGVuc2lvbnMsIGUuZy4gcHJlZml4IGRlbGVnYXRpb24gYW5kIGR5bmFtaWMgdXBkYXRlcyB0byBETlMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2tlYS5pc2Mub3JnIgorU0VDVElPTiA9ICJjb25uZWN0aXZpdHkiCitMSUNFTlNFID0gIk1QTC0yLjAgJiBBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NjhkOTU1NDNkMjA5NjQ1OTI5MGE0ZTZiOWNlY2NmZmEiCisKK0RFUEVORFMgKz0gImtlYS1uYXRpdmUiCisKK1NSQ19VUkkgPSAiXAorICAgIGh0dHA6Ly9mdHAuaXNjLm9yZy9pc2Mva2VhLyR7UFZ9LyR7QlB9LnRhci5neiBcCisgICAgZmlsZTovLzAwMDEtcmVtb3ZlLUFDX1RSWV9SVU4ucGF0Y2ggXAorICAgIGZpbGU6Ly9rZWEtZGhjcDQuc2VydmljZSBcCisgICAgZmlsZTovL2tlYS1kaGNwNi5zZXJ2aWNlIFwKKyAgICBmaWxlOi8va2VhLWRoY3AtZGRucy5zZXJ2aWNlIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNmY0ODk5N2EzN2E2NzBhNDA2ZDUwMjBjZTY0YTdmYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxZGEzZDUwZTBjOGU5MmUxYWE2ZDY2MTAwYjVhZmQ3YjkzYmEyYzUwYjBhNGVhMTE0ZmQ5ZGNiOGJlOTgyY2E5IgorCitpbmhlcml0IGF1dG90b29scyBzeXN0ZW1kCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJrZWEtZGhjcDQuc2VydmljZSBrZWEtZGhjcDYuc2VydmljZSBrZWEtZGhjcC1kZG5zLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCisKK0RFQlVHX09QVElNSVpBVElPTl9yZW1vdmVfbWlwcyA9ICIgLU9nIgorREVCVUdfT1BUSU1JWkFUSU9OX2FwcGVuZF9taXBzID0gIiAtTyIKK0JVSUxEX09QVElNSVpBVElPTl9yZW1vdmVfbWlwcyA9ICIgLU9nIgorQlVJTERfT1BUSU1JWkFUSU9OX2FwcGVuZF9taXBzID0gIiAtTyIKKworREVCVUdfT1BUSU1JWkFUSU9OX3JlbW92ZV9taXBzZWwgPSAiIC1PZyIKK0RFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfbWlwc2VsID0gIiAtTyIKK0JVSUxEX09QVElNSVpBVElPTl9yZW1vdmVfbWlwc2VsID0gIiAtT2ciCitCVUlMRF9PUFRJTUlaQVRJT05fYXBwZW5kX21pcHNlbCA9ICIgLU8iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICBta2RpciAtcCAke0J9L3NyYy9saWIvbG9nL2NvbXBpbGVyLworICAgIGxuIC1zZiAke1NUQUdJTkdfQklORElSX05BVElWRX0va2VhLW1zZy1jb21waWxlciAke0J9L3NyYy9saWIvbG9nL2NvbXBpbGVyL2tlYS1tc2ctY29tcGlsZXIKKyAgICAjIHJlcGxhY2UgYWJzX3RvcF9idWlsZGRpciB0byBhdm9pZCBpbnRyb2R1Y2luZyB0aGUgYnVpbGQgcGF0aAorICAgICMgZG9uJ3QgZXhwYW5kIHRoZSBhYnNfdG9wX2J1aWxkZGlyIG9uIHRoZSB0YXJnZXQgYXMgdGhlIGFic190b3BfYnVpbGRkaXIgaXMgbWVhbmxpbmdsZXNzIG9uIHRoZSB0YXJnZXQKKyAgICBmaW5kICR7U30gLXR5cGUgZiAtbmFtZSAqLnNoLmluIHwgeGFyZ3Mgc2VkIC1pICAiczpAYWJzX3RvcF9idWlsZGRpckA6QGFic190b3BfYnVpbGRkaXJfcGxhY2Vob2xkZXJAOmciCisgICAgc2VkIC1pICJzOkBhYnNfdG9wX3NyY2RpckA6QGFic190b3Bfc3JjZGlyX3BsYWNlaG9sZGVyQDpnIiAke1N9L3NyYy9iaW4vYWRtaW4va2VhLWFkbWluLmluCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0va2VhLWRoY3Aqc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorICAgIHNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyAtZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKyAgICAgICAgICAgLWUgJ3MsQExPQ0FMU1RBVEVESVJALCR7bG9jYWxzdGF0ZWRpcn0sZycgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorICAgICAgICAgICAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9rZWEtZGhjcCpzZXJ2aWNlCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIHJtIC1yZiAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCit9CisKK1BBQ0tBR0VDT05GSUcgPz89ICJvcGVuc3NsIGxvZzRjcGx1cyBib29zdCIKKworUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbD0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke3ByZWZpeH0sLG9wZW5zc2wsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbbG9nNGNwbHVzXSA9ICItLXdpdGgtbG9nNGNwbHVzPSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7cHJlZml4fSwsbG9nNGNwbHVzLGxvZzRjcGx1cyIKK1BBQ0tBR0VDT05GSUdbYm9vc3RdID0gIi0td2l0aC1ib29zdC1saWJzPS1sYm9vc3Rfc3lzdGVtLCxib29zdCxib29zdCIKKworRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0va2VhL2hvb2tzLyouYSAke2xpYmRpcn0vaG9va3MvKi5hIgorRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9ob29rcy8qLnNvIgorCitCQkNMQVNTRVhURU5EICs9ICJuYXRpdmUiCisKK1BBUkFMTEVMX01BS0VJTlNUID0gIiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9sZnRwL2xmdHBfNC45LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGZ0cC9sZnRwXzQuOS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjA0N2Y3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9sZnRwL2xmdHBfNC45LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJMRlRQIGlzIGEgc29waGlzdGljYXRlZCBmaWxlIHRyYW5zZmVyIHByb2dyYW0gd2l0aCBcCi0gICAgICAgICAgICAgICBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLiBJdCBzdXBwb3J0cyBGVFAsIEhUVFAsIFwKLSAgICAgICAgICAgICAgIEZJU0gsIFNGVFAsIEhUVFBTIGFuZCBGVFBTIHByb3RvY29scyIKLUhPTUVQQUdFID0gImh0dHA6Ly9sZnRwLnlhci5ydS8iCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotU1JDX1VSSSA9ICJodHRwOi8vbGZ0cC55YXIucnUvZnRwL2xmdHAtJHtQVn0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiMDU4MTdhMmMyNjQ2MzYxODI3MTczMGQwZjY3N2VkYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMDllN2U5MWE3YzAyMDYyNTcxNWU4NWMxNzI2YjFlNzUyNGRhMjI1MTg2ODNmYmUwNTFhYzEzMTE2ZGVkZWFjIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi1hY3BhdGhzID0gIi1JIC4vbTQiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLW1vZHVsZXMgLS1kaXNhYmxlLXJwYXRoIgotCi1QQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCB6bGliIGdudXRscyByZWFkbGluZSBleHBhdCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsIC0td2l0aG91dC1vcGVuc3NsLCBvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYj0ke1NUQUdJTkdfSU5DRElSfS8uLiwgLS13aXRob3V0LXpsaWIsIHpsaWIiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywgLS13aXRob3V0LWdudXRscywgZ251dGxzIgotUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXJlYWRsaW5lPSR7U1RBR0lOR19JTkNESVJ9Ly4uIC0td2l0aC1yZWFkbGluZS1pbmM9JHtTVEFHSU5HX0lOQ0RJUn0gLS13aXRoLXJlYWRsaW5lLWxpYj0tbHJlYWRsaW5lLCAtLXdpdGgtcmVhZGxpbmU9bm8sIHJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1tleHBhdF0gPSAiLS13aXRoLWV4cGF0PSR7U1RBR0lOR19JTkNESVJ9Ly4uIC0td2l0aC1leHBhdC1pbmM9JHtTVEFHSU5HX0lOQ0RJUn0gLS13aXRoLWV4cGF0LWxpYj0tbGV4cGF0LCAsIGV4cGF0IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlybSAtcmYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCi19Ci1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vbGZ0cC8ke1BWfS8uZGVidWciCi1SREVQRU5EU18ke1BOfSA9ICJwZXJsIGJhc2ggcmVhZGxpbmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGZ0cC9sZnRwXzQuOS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xmdHAvbGZ0cF80LjkuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43OWEzODBhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xmdHAvbGZ0cF80LjkuMS5iYgpAQCAtMCwwICsxLDMxIEBACitERVNDUklQVElPTiA9ICJMRlRQIGlzIGEgc29waGlzdGljYXRlZCBmaWxlIHRyYW5zZmVyIHByb2dyYW0gd2l0aCBcCisgICAgICAgICAgICAgICBjb21tYW5kIGxpbmUgaW50ZXJmYWNlLiBJdCBzdXBwb3J0cyBGVFAsIEhUVFAsIFwKKyAgICAgICAgICAgICAgIEZJU0gsIFNGVFAsIEhUVFBTIGFuZCBGVFBTIHByb3RvY29scyIKK0hPTUVQQUdFID0gImh0dHA6Ly9sZnRwLnlhci5ydS8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworU1JDX1VSSSA9ICJodHRwOi8vbGZ0cC55YXIucnUvZnRwL2xmdHAtJHtQVn0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxOWNlNjQwMTJiYzcyMmFkNjE2NjczNzJmYTI2MjM4MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNjkyZmQwODFjMTllMmNjMDQ1ODY5YWI3MjFhNGZiM2Q3NTcxMDQwODQ5YTQ0MDZjNDA0MmY3MzUyMzI0MTRjIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZworCithY3BhdGhzID0gIi1JIC4vbTQiCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLW1vZHVsZXMgLS1kaXNhYmxlLXJwYXRoIgorCitQQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCB6bGliIGdudXRscyByZWFkbGluZSBleHBhdCIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsIC0td2l0aG91dC1vcGVuc3NsLCBvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYj0ke1NUQUdJTkdfSU5DRElSfS8uLiwgLS13aXRob3V0LXpsaWIsIHpsaWIiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWdudXRscywgLS13aXRob3V0LWdudXRscywgZ251dGxzIgorUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLXJlYWRsaW5lPSR7U1RBR0lOR19JTkNESVJ9Ly4uIC0td2l0aC1yZWFkbGluZS1pbmM9JHtTVEFHSU5HX0lOQ0RJUn0gLS13aXRoLXJlYWRsaW5lLWxpYj0tbHJlYWRsaW5lLCAtLXdpdGgtcmVhZGxpbmU9bm8sIHJlYWRsaW5lIgorUEFDS0FHRUNPTkZJR1tleHBhdF0gPSAiLS13aXRoLWV4cGF0PSR7U1RBR0lOR19JTkNESVJ9Ly4uIC0td2l0aC1leHBhdC1pbmM9JHtTVEFHSU5HX0lOQ0RJUn0gLS13aXRoLWV4cGF0LWxpYj0tbGV4cGF0LCAsIGV4cGF0IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlybSAtcmYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCit9CitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vbGZ0cC8ke1BWfS8uZGVidWciCitSREVQRU5EU18ke1BOfSA9ICJwZXJsIGJhc2ggcmVhZGxpbmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGliZG5ldC9saWJkbmV0XzEuMTIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGliZG5ldC9saWJkbmV0XzEuMTIuYmIKaW5kZXggNWI2ZTQ1Yy4uNWIyN2NmZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYmRuZXQvbGliZG5ldF8xLjEyLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJkbmV0L2xpYmRuZXRfMS4xMi5iYgpAQCAtMTEsOCArMTEsMTAgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotaW5oZXJpdCBhdXRvdG9vbHMKK2luaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX3NjcmlwdAogCiBhY3BhdGhzID0gIi1JIC4vY29uZmlnLyIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn06JHtiaW5kaXJ9L2RuZXQtY29uZmlnIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21iZWR0bHMvbWJlZHRsc18yLjE2LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbWJlZHRscy9tYmVkdGxzXzIuMTYuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzlkMGRiZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbWJlZHRscy9tYmVkdGxzXzIuMTYuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVNVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgY3J5cHRvIGFuZCBTU0wvVExTIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJtYmVkdGxzIGlzIGEgbGVhbiBvcGVuIHNvdXJjZSBjcnlwdG8gbGlicmFyeSAgICAgICAgICBcCi1mb3IgcHJvdmlkaW5nIFNTTCBhbmQgVExTIHN1cHBvcnQgaW4geW91ciBwcm9ncmFtcy4gSXQgb2ZmZXJzICAgICAgICBcCi1hbiBpbnR1aXRpdmUgQVBJIGFuZCBkb2N1bWVudGVkIGhlYWRlciBmaWxlcywgc28geW91IGNhbiBhY3R1YWxseSAgICBcCi11bmRlcnN0YW5kIHdoYXQgdGhlIGNvZGUgZG9lcy4gSXQgZmVhdHVyZXM6ICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gLSBTeW1tZXRyaWMgYWxnb3JpdGhtcywgbGlrZSBBRVMsIEJsb3dmaXNoLCBUcmlwbGUtREVTLCBERVMsIEFSQzQsICBcCi0gICBDYW1lbGxpYSBhbmQgWFRFQSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gLSBIYXNoIGFsZ29yaXRobXMsIGxpa2UgU0hBLTEsIFNIQS0yLCBSSVBFTUQtMTYwIGFuZCBNRDUgICAgICAgICAgICBcCi0gLSBFbnRyb3B5IHBvb2wgYW5kIHJhbmRvbSBnZW5lcmF0b3JzLCBsaWtlIENUUi1EUkJHIGFuZCBITUFDLURSQkcgICBcCi0gLSBQdWJsaWMga2V5IGFsZ29yaXRobXMsIGxpa2UgUlNBLCBFbGxpcHRpYyBDdXJ2ZXMsIERpZmZpZS1IZWxsbWFuLCBcCi0gICBFQ0RTQSBhbmQgRUNESCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gLSBTU0wgdjMgYW5kIFRMUyAxLjAsIDEuMSBhbmQgMS4yICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gLSBBYnN0cmFjdGlvbiBsYXllcnMgZm9yIGNpcGhlcnMsIGhhc2hlcywgcHVibGljIGtleSBvcGVyYXRpb25zLCAgICBcCi0gICBwbGF0Zm9ybSBhYnN0cmFjdGlvbiBhbmQgdGhyZWFkaW5nICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0iCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vdGxzLm1iZWQub3JnLyIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzAyZDUwYTYzNjlmNWYyMmVmZGI2NzRkYjkwODE2N2EiCi0KLVNFQ1RJT04gPSAibGlicyIKLQotU1JDX1VSSSA9ICJodHRwczovL3Rscy5tYmVkLm9yZy9kb3dubG9hZC9tYmVkdGxzLSR7UFZ9LWFwYWNoZS50Z3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiOTBjZTdjN2EwMDFkMjUxNDQxMDI4MDcwNmIzYWIxYTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWMxYmVlNmQ4MjA5MGVkNmVhMjY5MDc4NGVhNGIyOTRhYjU3NmE2NWQ0MjhkYTlmZTg3NTBmOTMyZDJkYTY2MSIKLQotaW5oZXJpdCBjbWFrZQotCi1QQUNLQUdFQ09ORklHID8/PSAic2hhcmVkLWxpYnMgcHJvZ3JhbXMiCi1QQUNLQUdFQ09ORklHW3NoYXJlZC1saWJzXSA9ICItRFVTRV9TSEFSRURfTUJFRFRMU19MSUJSQVJZPU9OLC1VU0VfU0hBUkVEX01CRURUTFNfTElCUkFSWT1PRkYiCi1QQUNLQUdFQ09ORklHW3Byb2dyYW1zXSA9ICItREVOQUJMRV9QUk9HUkFNUz1PTiwtREVOQUJMRV9QUk9HUkFNUz1PRkYiCi0KLUVYVFJBX09FQ01BS0UgPSAiLURFTkFCTEVfVEVTVElORz1PRkYgLURMSUJfSU5TVEFMTF9ESVI6U1RSSU5HPSR7bGliZGlyfSIKLQotUFJPVklERVMgKz0gInBvbGFyc3NsIgotUlBST1ZJREVTXyR7UE59ID0gInBvbGFyc3NsIgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tcHJvZ3JhbXMiCi1GSUxFU18ke1BOfS1wcm9ncmFtcyA9ICIke2JpbmRpcn0vIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21iZWR0bHMvbWJlZHRsc18yLjE2LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbWJlZHRscy9tYmVkdGxzXzIuMTYuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMmFkMzk3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21iZWR0bHMvbWJlZHRsc18yLjE2LjYuYmIKQEAgLTAsMCArMSw0MyBAQAorU1VNTUFSWSA9ICJMaWdodHdlaWdodCBjcnlwdG8gYW5kIFNTTC9UTFMgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIm1iZWR0bHMgaXMgYSBsZWFuIG9wZW4gc291cmNlIGNyeXB0byBsaWJyYXJ5ICAgICAgICAgIFwKK2ZvciBwcm92aWRpbmcgU1NMIGFuZCBUTFMgc3VwcG9ydCBpbiB5b3VyIHByb2dyYW1zLiBJdCBvZmZlcnMgICAgICAgIFwKK2FuIGludHVpdGl2ZSBBUEkgYW5kIGRvY3VtZW50ZWQgaGVhZGVyIGZpbGVzLCBzbyB5b3UgY2FuIGFjdHVhbGx5ICAgIFwKK3VuZGVyc3RhbmQgd2hhdCB0aGUgY29kZSBkb2VzLiBJdCBmZWF0dXJlczogICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAtIFN5bW1ldHJpYyBhbGdvcml0aG1zLCBsaWtlIEFFUywgQmxvd2Zpc2gsIFRyaXBsZS1ERVMsIERFUywgQVJDNCwgIFwKKyAgIENhbWVsbGlhIGFuZCBYVEVBICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAtIEhhc2ggYWxnb3JpdGhtcywgbGlrZSBTSEEtMSwgU0hBLTIsIFJJUEVNRC0xNjAgYW5kIE1ENSAgICAgICAgICAgIFwKKyAtIEVudHJvcHkgcG9vbCBhbmQgcmFuZG9tIGdlbmVyYXRvcnMsIGxpa2UgQ1RSLURSQkcgYW5kIEhNQUMtRFJCRyAgIFwKKyAtIFB1YmxpYyBrZXkgYWxnb3JpdGhtcywgbGlrZSBSU0EsIEVsbGlwdGljIEN1cnZlcywgRGlmZmllLUhlbGxtYW4sIFwKKyAgIEVDRFNBIGFuZCBFQ0RIICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAtIFNTTCB2MyBhbmQgVExTIDEuMCwgMS4xIGFuZCAxLjIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAtIEFic3RyYWN0aW9uIGxheWVycyBmb3IgY2lwaGVycywgaGFzaGVzLCBwdWJsaWMga2V5IG9wZXJhdGlvbnMsICAgIFwKKyAgIHBsYXRmb3JtIGFic3RyYWN0aW9uIGFuZCB0aHJlYWRpbmcgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly90bHMubWJlZC5vcmcvIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zMDJkNTBhNjM2OWY1ZjIyZWZkYjY3NGRiOTA4MTY3YSIKKworU0VDVElPTiA9ICJsaWJzIgorCitTUkNfVVJJID0gImh0dHBzOi8vdGxzLm1iZWQub3JnL2Rvd25sb2FkL21iZWR0bHMtJHtQVn0tYXBhY2hlLnRneiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxZjYyOWE0M2MxNjZkZTJlY2E4MDhmM2UzMGFhOTYxZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2NjQ1NWUyM2E2MTkwYTMwMTQyY2RjMTExM2Y3NDE4MTU4ODM5MzMxYTlkOGU2YjA3Nzg2MzFkMDc3MjgxNzcwIgorCitpbmhlcml0IGNtYWtlCisKK1BBQ0tBR0VDT05GSUcgPz89ICJzaGFyZWQtbGlicyBwcm9ncmFtcyIKK1BBQ0tBR0VDT05GSUdbc2hhcmVkLWxpYnNdID0gIi1EVVNFX1NIQVJFRF9NQkVEVExTX0xJQlJBUlk9T04sLVVTRV9TSEFSRURfTUJFRFRMU19MSUJSQVJZPU9GRiIKK1BBQ0tBR0VDT05GSUdbcHJvZ3JhbXNdID0gIi1ERU5BQkxFX1BST0dSQU1TPU9OLC1ERU5BQkxFX1BST0dSQU1TPU9GRiIKKworRVhUUkFfT0VDTUFLRSA9ICItREVOQUJMRV9URVNUSU5HPU9GRiAtRExJQl9JTlNUQUxMX0RJUjpTVFJJTkc9JHtsaWJkaXJ9IgorCitQUk9WSURFUyArPSAicG9sYXJzc2wiCitSUFJPVklERVNfJHtQTn0gPSAicG9sYXJzc2wiCisKK1BBQ0tBR0VTID0rICIke1BOfS1wcm9ncmFtcyIKK0ZJTEVTXyR7UE59LXByb2dyYW1zID0gIiR7YmluZGlyfS8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9taW5pdXBucGQvbWluaXVwbnBkXzIuMS4yMDE5MTAwNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9taW5pdXBucGQvbWluaXVwbnBkXzIuMS4yMDE5MTAwNi5iYgppbmRleCA4MWJmZTY2Li5hNjMwZDI3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbWluaXVwbnBkL21pbml1cG5wZF8yLjEuMjAxOTEwMDYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21pbml1cG5wZC9taW5pdXBucGRfMi4xLjIwMTkxMDA2LmJiCkBAIC0zNyw2ICszNyw3IEBACiAgICAgaW5zdGFsbCAke1N9L25ldGZpbHRlci9pcHRhYmxlc19pbml0LnNoICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0KICAgICBpbnN0YWxsICR7U30vbmV0ZmlsdGVyL2lwdGFibGVzX3JlbW92ZWFsbC5zaCAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59CiAgICAgaW5zdGFsbCAke1N9L25ldGZpbHRlci9pcDZ0YWJsZXNfaW5pdC5zaCAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59CisgICAgaW5zdGFsbCAke1N9L25ldGZpbHRlci9taW5pdXBucGRfZnVuY3Rpb25zLnNoICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0KICAgICBpbnN0YWxsICR7U30vbmV0ZmlsdGVyL2lwNnRhYmxlc19yZW1vdmVhbGwuc2ggJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfQogICAgIGluc3RhbGwgLW0gMDY0NCAtYiAke1N9L21pbml1cG5wZC5jb25mICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0KICAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvMTU3MS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvMTU3MS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45M2ZmNmJjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy8xNTcxLnBhdGNoCkBAIC0wLDAgKzEsMjIgQEAKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vZWNsaXBzZS9tb3NxdWl0dG8vcHVsbC8xNTcxXQorRnJvbSAzZmU1NDY4ZjFiZGNhMWJmZjFkMThjZjQzYzllMzM4ZjQxYWE5ZTMyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogR2lhbmZyYW5jbyBDb3N0YW1hZ25hIDxjb3N0YW1hZ25hZ2lhbmZyYW5jb0B5YWhvby5pdD4KK0RhdGU6IFdlZCwgMjIgSmFuIDIwMjAgMTI6Mzk6NDkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIGR5bmFtaWMgc3ltYm9scyBsaW5raW5nIHdpdGggY21ha2UgdG9vCisKK1NpZ25lZC1vZmYtYnk6IEdpYW5mcmFuY28gQ29zdGFtYWduYSA8Y29zdGFtYWduYWdpYW5mcmFuY29AeWFob28uaXQ+CistLS0KKyBsaWIvQ01ha2VMaXN0cy50eHQgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCistLS0gYS9saWIvQ01ha2VMaXN0cy50eHQKKysrKyBiL2xpYi9DTWFrZUxpc3RzLnR4dAorQEAgLTg5LDYgKzg5LDggQEAKKyAJT1VUUFVUX05BTUUgbW9zcXVpdHRvCisgCVZFUlNJT04gJHtWRVJTSU9OfQorIAlTT1ZFUlNJT04gMQorKwlMSU5LX0RFUEVORFMgJHtDTUFLRV9DVVJSRU5UX1NPVVJDRV9ESVJ9L2xpbmtlci52ZXJzaW9uCisrCUxJTktfRkxBR1MgIi1XbCwtLXZlcnNpb24tc2NyaXB0PSR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9saW5rZXIudmVyc2lvbiIKKyApCisgCisgaW5zdGFsbChUQVJHRVRTIGxpYm1vc3F1aXR0byBSVU5USU1FIERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfQklORElSfSIgTElCUkFSWSBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0iKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy9pbnN0YWxsLXByb3RvY29sLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy9pbnN0YWxsLXByb3RvY29sLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzOTdmYzYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzL2luc3RhbGwtcHJvdG9jb2wucGF0Y2gKQEAgLTAsMCArMSwxNCBAQAorRGVzY3JpcHRpb246IEFsc28gaW5zdGFsbCBtcXR0X3Byb3RvY29sLmgsIGFzIGlzIGRvbmUgaW4gTWFrZWZpbGUKK0F1dGhvcjogR2lhbmZyYW5jbyBDb3N0YW1hZ25hIDxsb2N1dHVzb2Zib3JnQGRlYmlhbi5vcmc+CitCdWctRGViaWFuOiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy85NTExMTYKK0ZvcndhcmRlZDogaHR0cHM6Ly9naXRodWIuY29tL2VjbGlwc2UvbW9zcXVpdHRvL3B1bGwvMTU5OQorTGFzdC1VcGRhdGU6IDIwMjAtMDItMTUKKworLS0tIGEvbGliL0NNYWtlTGlzdHMudHh0CisrKysgYi9saWIvQ01ha2VMaXN0cy50eHQKK0BAIC0xMTQsNCArMTE0LDQgQEAKKyAJaW5zdGFsbChUQVJHRVRTIGxpYm1vc3F1aXR0b19zdGF0aWMgQVJDSElWRSBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0iKQorIGVuZGlmIChXSVRIX1NUQVRJQ19MSUJSQVJJRVMpCisgCistaW5zdGFsbChGSUxFUyBtb3NxdWl0dG8uaCBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9IikKKytpbnN0YWxsKEZJTEVTIG1xdHRfcHJvdG9jb2wuaCBtb3NxdWl0dG8uaCBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVJ9IikKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvbW9zcXVpdHRvLmluaXQgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL2ZpbGVzL21vc3F1aXR0by5pbml0CmluZGV4IDZhMGMxMjcuLjlkNTk2M2MgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vZmlsZXMvbW9zcXVpdHRvLmluaXQKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vc3F1aXR0by9maWxlcy9tb3NxdWl0dG8uaW5pdApAQCAtMzgsNyArMzgsNyBAQAogY2FzZSAiJDEiIGluCiAgICAgc3RhcnQpCiAgICAgICAgIGVjaG8gIlN0YXJ0aW5nIE1vc3F1aXR0byBtZXNzYWdlIGJyb2tlciIgIm1vc3F1aXR0byIKLSAgICAgICAgaWYgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tb2tub2RvIC0tYmFja2dyb3VuZCAgLS1tYWtlLXBpZGZpbGUgLS1waWRmaWxlICR7UElERklMRX0gLS1leGVjICR7REFFTU9OfSA7IHRoZW4KKyAgICAgICAgaWYgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tb2tub2RvIC0tYmFja2dyb3VuZCAtLW1ha2UtcGlkZmlsZSAtLXBpZGZpbGUgJHtQSURGSUxFfSAtLWV4ZWMgJHtEQUVNT059IC0tIC1jIEBTWVNDT05GRElSQC9tb3NxdWl0dG8vbW9zcXVpdHRvLmNvbmYgOyB0aGVuCiAgICAgICAgICAgICBleGl0IDAKICAgICAgICAgZWxzZQogICAgICAgICAgICAgZXhpdCAxCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL21vc3F1aXR0b18xLjYuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vbW9zcXVpdHRvXzEuNi44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTUzM2Q4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vbW9zcXVpdHRvXzEuNi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuIHNvdXJjZSBNUVRUIGltcGxlbWVudGF0aW9uIgotREVTQ1JJUFRJT04gPSAiTW9zcXVpdHRvIGlzIGFuIG9wZW4gc291cmNlIChFY2xpcHNlIGxpY2Vuc2VkKSBtZXNzYWdlIGJyb2tlciBcCi10aGF0IGltcGxlbWVudHMgdGhlIE1RIFRlbGVtZXRyeSBUcmFuc3BvcnQgcHJvdG9jb2wgdmVyc2lvbiAzLjEsIDMuMS4xIGFuZCBcCi01LCBwcm92aWRpbmcgYm90aCBhbiBNUVRUIGJyb2tlciBhbmQgc2V2ZXJhbCBjb21tYW5kLWxpbmUgY2xpZW50cy4gTVFUVCBcCi1wcm92aWRlcyBhIGxpZ2h0d2VpZ2h0IG1ldGhvZCBvZiBjYXJyeWluZyBvdXQgbWVzc2FnaW5nIHVzaW5nIGEgXAotcHVibGlzaC9zdWJzY3JpYmUgbW9kZWwuICIKLUhPTUVQQUdFID0gImh0dHA6Ly9tb3NxdWl0dG8ub3JnLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJFUEwtMS4wIHwgRURMLTEuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT02MmRkYzg0NjE3OWU5MDhkYzBjOGVmZWM0YTQyZWYyMCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lZGwtdjEwO21kNT1jMDlmMTIxOTM5ZjA2M2FlYjUyMzU5NzJiZThjNzIyYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lcGwtdjEwO21kNT04ZDM4M2MzNzllOTFkMjBiYTE4YTUyYzNlN2QzYTk3OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ub3RpY2UuaHRtbDttZDU9YTAwZDZmOWFiNTQyYmU3YmFiYzJkOGI4MGQ1ZDJhNGMgXAotIgotREVQRU5EUyA9ICJ1dGhhc2giCi0KLVNSQ19VUkkgPSAiaHR0cDovL21vc3F1aXR0by5vcmcvZmlsZXMvc291cmNlL21vc3F1aXR0by0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbW9zcXVpdHRvLmluaXQgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjRhMGU1NjdjODQ1YjNlNDFiNzVlMjM3ZDIwMGVkZjgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2RmMjNjODFjYTM3ZjBlMDcwNTc0ZmU3NDQxNDQwM2NmMjUxODMwMTY0MzNkMDdhZGQ2MTM0MzY2ZmI0NWRmNiIKLQotaW5oZXJpdCBzeXN0ZW1kIHVwZGF0ZS1yYy5kIHVzZXJhZGQKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInNzbCB1dWlkIFwKLSAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUdbZG5zLXNydl0gPSAiV0lUSF9TUlY9eWVzLFdJVEhfU1JWPW5vLGMtYXJlcyIKLVBBQ0tBR0VDT05GSUdbc3NsXSA9ICJXSVRIX1RMUz15ZXMgV0lUSF9UTFNfUFNLPXllcyxXSVRIX1RMUz1ubyBXSVRIX1RMU19QU0s9bm8sb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbdXVpZF0gPSAiV0lUSF9VVUlEPXllcyxXSVRIX1VVSUQ9bm8sdXRpbC1saW51eCIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiV0lUSF9TWVNURU1EPXllcyxXSVRIX1NZU1RFTUQ9bm8sc3lzdGVtZCIKLVBBQ0tBR0VDT05GSUdbd2Vic29ja2V0c10gPSAiV0lUSF9XRUJTT0NLRVRTPXllcyxXSVRIX1dFQlNPQ0tFVFM9bm8sbGlid2Vic29ja2V0cyIKLQotRVhUUkFfT0VNQUtFID0gIiBcCi0gICAgcHJlZml4PSR7cHJlZml4fSBcCi0gICAgbWFuZGlyPSR7bWFuZGlyfSBcCi0gICAgbG9jYWxlZGlyPSR7bG9jYWxlZGlyfSBcCi0gICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCi0gICAgU1RSSVA9L2Jpbi90cnVlIFwKLSAgICBXSVRIX0RPQ1M9bm8gXAotICAgIFdJVEhfQlVORExFRF9ERVBTPW5vIFwKLSIKLQotZXhwb3J0IExJQl9TVUZGSVggPSAiJHtAZC5nZXRWYXIoJ2Jhc2VsaWInKS5yZXBsYWNlKCdsaWInLCAnJyl9IgotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zZXJ2aWNlL3N5c3RlbWQvbW9zcXVpdHRvLnNlcnZpY2Uubm90aWZ5ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL21vc3F1aXR0by5zZXJ2aWNlCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L21vc3F1aXR0bwotICAgIGluc3RhbGwgLW0gMDY0NCAke0R9JHtzeXNjb25mZGlyfS9tb3NxdWl0dG8vbW9zcXVpdHRvLmNvbmYuZXhhbXBsZSBcCi0gICAgICAgICAgICAgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L21vc3F1aXR0by9tb3NxdWl0dG8uY29uZgotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbW9zcXVpdHRvLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL21vc3F1aXR0bwotICAgIHNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0gICAgICAgIC1lICdzLEBCQVNFX1NCSU5ESVJALCR7YmFzZV9zYmluZGlyfSxnJyBcCi0gICAgICAgIC1lICdzLEBMT0NBTFNUQVRFRElSQCwke2xvY2Fsc3RhdGVkaXJ9LGcnIFwKLSAgICAgICAgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAotICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbW9zcXVpdHRvCi19Ci0KLVBBQ0tBR0VTICs9ICJsaWJtb3NxdWl0dG8xIGxpYm1vc3F1aXR0b3BwMSAke1BOfS1jbGllbnRzIgotCi1QQUNLQUdFX0JFRk9SRV9QTiA9ICIke1BOfS1leGFtcGxlcyIKLQotRklMRVNfJHtQTn0gPSAiJHtzYmluZGlyfS9tb3NxdWl0dG8gXAotICAgICAgICAgICAgICAgJHtiaW5kaXJ9L21vc3F1aXR0b19wYXNzd2QgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tb3NxdWl0dG8gXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQgXAotICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tb3NxdWl0dG8uc2VydmljZSBcCi0iCi0KLUNPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS9tb3NxdWl0dG8vbW9zcXVpdHRvLmNvbmYiCi0KLUZJTEVTX2xpYm1vc3F1aXR0bzEgPSAiJHtsaWJkaXJ9L2xpYm1vc3F1aXR0by5zby4xIgotCi1GSUxFU19saWJtb3NxdWl0dG9wcDEgPSAiJHtsaWJkaXJ9L2xpYm1vc3F1aXR0b3BwLnNvLjEiCi0KLUZJTEVTXyR7UE59LWNsaWVudHMgPSAiJHtiaW5kaXJ9L21vc3F1aXR0b19wdWIgXAotICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbW9zcXVpdHRvX3N1YiBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9tb3NxdWl0dG9fcnIgXAotIgotCi1GSUxFU18ke1BOfS1leGFtcGxlcyA9ICIke3N5c2NvbmZkaXJ9L21vc3F1aXR0by8qLmV4YW1wbGUiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJtb3NxdWl0dG8uc2VydmljZSIKLQotSU5JVFNDUklQVF9OQU1FID0gIm1vc3F1aXR0byIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIDMwIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0tc2hlbGwgL2Jpbi9mYWxzZSBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBtb3NxdWl0dG8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL21vc3F1aXR0b18xLjYuOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb3NxdWl0dG8vbW9zcXVpdHRvXzEuNi45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNDNhYWUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9zcXVpdHRvL21vc3F1aXR0b18xLjYuOS5iYgpAQCAtMCwwICsxLDg3IEBACitTVU1NQVJZID0gIk9wZW4gc291cmNlIE1RVFQgaW1wbGVtZW50YXRpb24iCitERVNDUklQVElPTiA9ICJNb3NxdWl0dG8gaXMgYW4gb3BlbiBzb3VyY2UgKEVjbGlwc2UgbGljZW5zZWQpIG1lc3NhZ2UgYnJva2VyIFwKK3RoYXQgaW1wbGVtZW50cyB0aGUgTVEgVGVsZW1ldHJ5IFRyYW5zcG9ydCBwcm90b2NvbCB2ZXJzaW9uIDMuMSwgMy4xLjEgYW5kIFwKKzUsIHByb3ZpZGluZyBib3RoIGFuIE1RVFQgYnJva2VyIGFuZCBzZXZlcmFsIGNvbW1hbmQtbGluZSBjbGllbnRzLiBNUVRUIFwKK3Byb3ZpZGVzIGEgbGlnaHR3ZWlnaHQgbWV0aG9kIG9mIGNhcnJ5aW5nIG91dCBtZXNzYWdpbmcgdXNpbmcgYSBcCitwdWJsaXNoL3N1YnNjcmliZSBtb2RlbC4gIgorSE9NRVBBR0UgPSAiaHR0cDovL21vc3F1aXR0by5vcmcvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkVQTC0xLjAgfCBFREwtMS4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTYyZGRjODQ2MTc5ZTkwOGRjMGM4ZWZlYzRhNDJlZjIwIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2VkbC12MTA7bWQ1PWMwOWYxMjE5MzlmMDYzYWViNTIzNTk3MmJlOGM3MjJjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2VwbC12MTA7bWQ1PThkMzgzYzM3OWU5MWQyMGJhMThhNTJjM2U3ZDNhOTc5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL25vdGljZS5odG1sO21kNT1hMDBkNmY5YWI1NDJiZTdiYWJjMmQ4YjgwZDVkMmE0YyBcCisiCitERVBFTkRTID0gInV0aGFzaCIKKworU1JDX1VSSSA9ICJodHRwOi8vbW9zcXVpdHRvLm9yZy9maWxlcy9zb3VyY2UvbW9zcXVpdHRvLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9tb3NxdWl0dG8uaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly8xNTcxLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2luc3RhbGwtcHJvdG9jb2wucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTJmNTA3OGVjMThhYWY2MjNiMTRkZmIxMjFmZDUzNGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDEyOTc5YjJkYjBhMDAyMGJkMDJmYTY0ZjBhMGRlOWU3MDAwYjg0NDYyNTg2ZTMyYjY3ZjI5YmIxZjZjMTY4NSIKKworaW5oZXJpdCBzeXN0ZW1kIHVwZGF0ZS1yYy5kIHVzZXJhZGQgY21ha2UKKworUEFDS0FHRUNPTkZJRyA/Pz0gInNzbCBkbHQgd2Vic29ja2V0cyBcCisgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHW2Rucy1zcnZdID0gIi1EV0lUSF9TUlY9T04sLURXSVRIX1NSVj1PRkYsYy1hcmVzIgorUEFDS0FHRUNPTkZJR1tzc2xdID0gIi1EV0lUSF9UTFM9T04gLURXSVRIX1RMU19QU0s9T04gLURXSVRIX0VDPU9OLC1EV0lUSF9UTFM9T0ZGIC1EV0lUSF9UTFNfUFNLPU9GRiAtRFdJVEhfRUNfT0ZGLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi1EV0lUSF9TWVNURU1EPU9OLC1EV0lUSF9TWVNURU1EPU9GRixzeXN0ZW1kIgorUEFDS0FHRUNPTkZJR1t3ZWJzb2NrZXRzXSA9ICItRFdJVEhfV0VCU09DS0VUUz1PTiwtRFdJVEhfV0VCU09DS0VUUz1PRkYsbGlid2Vic29ja2V0cyIKK1BBQ0tBR0VDT05GSUdbZGx0XSA9ICItRFdJVEhfRExUPU9OLC1EV0lUSF9ETFQ9T0ZGLGRsdC1kYWVtb24iCisKK0VYVFJBX09FQ01BS0UgPSAiIFwKKyAgICAtRFdJVEhfQlVORExFRF9ERVBTPU9GRiBcCisgICAgLURXSVRIX0FETlM9T04gXAorIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3NlcnZpY2Uvc3lzdGVtZC9tb3NxdWl0dG8uc2VydmljZS5ub3RpZnkgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbW9zcXVpdHRvLnNlcnZpY2UKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLworICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L21vc3F1aXR0by5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9tb3NxdWl0dG8KKyAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorICAgICAgICAtZSAncyxAQkFTRV9TQklORElSQCwke2Jhc2Vfc2JpbmRpcn0sZycgXAorICAgICAgICAtZSAncyxATE9DQUxTVEFURURJUkAsJHtsb2NhbHN0YXRlZGlyfSxnJyBcCisgICAgICAgIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKyAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL21vc3F1aXR0bworfQorCitQQUNLQUdFUyArPSAibGlibW9zcXVpdHRvMSBsaWJtb3NxdWl0dG9wcDEgJHtQTn0tY2xpZW50cyIKKworUEFDS0FHRV9CRUZPUkVfUE4gPSAiJHtQTn0tZXhhbXBsZXMiCisKK0ZJTEVTXyR7UE59ID0gIiR7c2JpbmRpcn0vbW9zcXVpdHRvIFwKKyAgICAgICAgICAgICAgICR7YmluZGlyfS9tb3NxdWl0dG9fcGFzc3dkIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vbW9zcXVpdHRvIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kIFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbW9zcXVpdHRvLnNlcnZpY2UgXAorIgorCitDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vbW9zcXVpdHRvL21vc3F1aXR0by5jb25mIgorCitGSUxFU19saWJtb3NxdWl0dG8xID0gIiR7bGliZGlyfS9saWJtb3NxdWl0dG8uc28uKiIKKworRklMRVNfbGlibW9zcXVpdHRvcHAxID0gIiR7bGliZGlyfS9saWJtb3NxdWl0dG9wcC5zby4qIgorCitGSUxFU18ke1BOfS1jbGllbnRzID0gIiR7YmluZGlyfS9tb3NxdWl0dG9fcHViIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L21vc3F1aXR0b19zdWIgXAorICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbW9zcXVpdHRvX3JyIFwKKyIKKworRklMRVNfJHtQTn0tZXhhbXBsZXMgPSAiJHtzeXNjb25mZGlyfS9tb3NxdWl0dG8vKi5leGFtcGxlIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibW9zcXVpdHRvLnNlcnZpY2UiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJtb3NxdWl0dG8iCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyAzMCIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLXNoZWxsIC9iaW4vZmFsc2UgXAorICAgICAgICAgICAgICAgICAgICAgICAtLXVzZXItZ3JvdXAgbW9zcXVpdHRvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25hbm9tc2cvbm5nXzEuMi41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25hbm9tc2cvbm5nXzEuMi41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc3YmUyN2YKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmFub21zZy9ubmdfMS4yLjUuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJuYW5vbXNnLW5leHQtZ2VuZXJhdGlvbiAtLSBsaWdodC13ZWlnaHQgYnJva2VybGVzcyBtZXNzYWdpbmciCitERVNDUklQVElPTiA9ICJOTkcsIGxpa2UgaXRzIHByZWRlY2Vzc29ycyBuYW5vbXNnIChhbmQgdG8gc29tZSBleHRlbnQgWmVyb01RKSwgaXMgYSBsaWdodHdlaWdodCwgYnJva2VyLWxlc3MgbGlicmFyeSwgb2ZmZXJpbmcgYSBzaW1wbGUgQVBJIHRvIHNvbHZlIGNvbW1vbiByZWN1cnJpbmcgbWVzc2FnaW5nIHByb2JsZW1zLCBzdWNoIGFzIHB1Ymxpc2gvc3Vic2NyaWJlLCBSUEMtc3R5bGUgcmVxdWVzdC9yZXBseSwgb3Igc2VydmljZSBkaXNjb3ZlcnkuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL25hbm9tc2cvbm5nIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9YTE5YjE1YmU2ZTg0NGIzOWE1NGRlMmVmNjY1YmQ2ZGUiCisKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JraW5nIgorCitTUkNSRVYgPSAiNTNhZTFhNWFiMzdmZGZjOWFkNWMyMzZkZjNlYWY0ZGQ2M2YwZmVlOSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL25hbm9tc2cvbm5nLmdpdDticmFuY2g9djEuMi54IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZworCitFWFRSQV9PRUNNQUtFID0gIi1EQlVJTERfU0hBUkVEX0xJQlM9T04iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCisKK1BBQ0tBR0VDT05GSUdbbWJlZHRsc10gPSAiLUROTkdfRU5BQkxFX1RMUz1PTiwtRE5OR19FTkFCTEVfVExTPU9GRixtYmVkdGxzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHBsYW4vbmV0cGxhbl8wLjk4LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHBsYW4vbmV0cGxhbl8wLjk4LmJiCmluZGV4IDg2MDc2MmMuLmRiMDI5YTQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXRwbGFuL25ldHBsYW5fMC45OC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0cGxhbi9uZXRwbGFuXzAuOTguYmIKQEAgLTE5LDcgKzE5LDcgQEAKICIKIAogREVQRU5EUyA9ICJnbGliLTIuMCBsaWJ5YW1sIgotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMyBweXRob24zLWNvcmUgcHl0aG9uMy1weXlhbWwgcHl0aG9uMy1uZXRpZmFjZXMgcHl0aG9uMy1ub3NlIHB5dGhvbjMtY292ZXJhZ2UgcHl0aG9uMy1weWNvZGVzdHlsZSBweXRob24tcHlmbGFrZXMgdXRpbC1saW51eC1saWJ1dWlkIgorUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMyBweXRob24zLWNvcmUgcHl0aG9uMy1weXlhbWwgcHl0aG9uMy1uZXRpZmFjZXMgcHl0aG9uMy1ub3NlIHB5dGhvbjMtY292ZXJhZ2UgcHl0aG9uMy1weWNvZGVzdHlsZSBweXRob24zLXB5Zmxha2VzIHV0aWwtbGludXgtbGlidXVpZCIKIAogaW5oZXJpdCBwa2djb25maWcgc3lzdGVtZAogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXItb3BlbnZwbl8xLjguMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXItb3BlbnZwbl8xLjguMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2ZGI3NzAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLW9wZW52cG5fMS44LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotU1VNTUFSWSA9ICJOZXR3b3JrTWFuYWdlci1vcGVudnBuLXBsdWdpbiIKLVNFQ1RJT04gPSAibmV0L21pc2MiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTAwZDVhNTk5YmVhZDcwZGRjZDcwZGNkNzNmMmUyOWMiCi0KLURFUEVORFMgPSAiZGJ1cyBkYnVzLWdsaWIgbmV0d29ya21hbmFnZXIgb3BlbnZwbiBpbnRsdG9vbC1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgotCi1pbmhlcml0IGdub21lYmFzZSB1c2VyYWRkIGdldHRleHQgc3lzdGVtZAotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9OZXR3b3JrTWFuYWdlci1vcGVudnBuLyR7QGdub21lX3ZlcmRpcigiJHtQVn0iKX0vTmV0d29ya01hbmFnZXItb3BlbnZwbi0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0ZGJiYzEwMzc2MWZhY2M3YTYxYTFjMDBkZmQ1NTIzMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZjNjYzg2YmE4NDhkMjFiNGFjODA3YTA5ZDU3NWRlMTEzMzViYTRkZjhjZTZmZGIwODkyMTJlNzdjMjIzMWVmIgotCi1TID0gIiR7V09SS0RJUn0vTmV0d29ya01hbmFnZXItb3BlbnZwbi0ke1BWfSIKLQotUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLS13aXRoLWdub21lLC0td2l0aG91dC1nbm9tZSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyLyoubGEKLX0KLQotIyBDcmVhdGUgdXNlciBhbmQgZ3JvdXAgbm0tb3BlbnZwbiB0aGF0IGFyZSBuZWVkZWQgc2luY2UgdmVyc2lvbiAxLjAuNgotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLVVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gbm0tb3BlbnZwbiIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyLyouc28gXAotICAgICR7bm9uYXJjaF9saWJkaXJ9L05ldHdvcmtNYW5hZ2VyL1ZQTi9ubS1vcGVudnBuLXNlcnZpY2UubmFtZSBcCi0iCi0KLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiIFwKLSAgICAke2xpYmRpcn0vTmV0d29ya01hbmFnZXIvKi5hIFwKLSIKLQotUkRFUEVORFNfJHtQTn0gPSAiIFwKLSAgICBuZXR3b3JrbWFuYWdlciBcCi0gICAgb3BlbnZwbiBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXItb3BlbnZwbl8xLjguMTIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXItb3BlbnZwbl8xLjguMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ1NWEwZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci1vcGVudnBuXzEuOC4xMi5iYgpAQCAtMCwwICsxLDUyIEBACitTVU1NQVJZID0gIk5ldHdvcmtNYW5hZ2VyLW9wZW52cG4tcGx1Z2luIgorU0VDVElPTiA9ICJuZXQvbWlzYyIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xMDBkNWE1OTliZWFkNzBkZGNkNzBkY2Q3M2YyZTI5YyIKKworREVQRU5EUyA9ICJkYnVzIGRidXMtZ2xpYiBuZXR3b3JrbWFuYWdlciBvcGVudnBuIGludGx0b29sLW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUiCisKK2luaGVyaXQgZ25vbWViYXNlIHVzZXJhZGQgZ2V0dGV4dCBzeXN0ZW1kCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L05ldHdvcmtNYW5hZ2VyLW9wZW52cG4vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS9OZXR3b3JrTWFuYWdlci1vcGVudnBuLSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gImU4YjEyMTAwMTFlY2UxOGQwMjc4MzEwZmJmZjQ1YWY1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBlZmRhODg3OGFhZjBlNmViNTA3MWEwNTNhZWE1ZDdmOWQ0MmFhYzA5N2IzZmY4OWU3Y2JjOTIzM2Y4MTUzMTgiCisKK1MgPSAiJHtXT1JLRElSfS9OZXR3b3JrTWFuYWdlci1vcGVudnBuLSR7UFZ9IgorCisjIG1ldGEtZ25vbWUgaW4gbGF5ZXJzIGlzIHJlcXVpcmVkIHVzaW5nIGdub21lOgorUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLS13aXRoLWdub21lLC0td2l0aG91dC1nbm9tZSxndGsrMyBsaWJubWEgbGlic2VjcmV0IgorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworICAgICMgbmV0d29yay1tYW5hZ2VyLW9wZW52cG4ubWV0YWluZm8ueG1sIGlzIGNyZWF0ZWQgaW4gc291cmNlIGZvbGRlciBidXQKKyAgICAjIGNvbXBpbGUgZXhwZWN0cyBpdCBpbiBidWlsZCBmb2xkZXIuIEFzIGxvbmcgYXMgbm9ib2R5IGNvbWVzIHVwIHdpdGggYQorICAgICMgYmV0dGVyIHNvbHV0aW9uIGp1c3Qgc3VwcG9ydCBidWlsZDoKKyAgICBpZiBbIC1lICR7U30vYXBwZGF0YS9uZXR3b3JrLW1hbmFnZXItb3BlbnZwbi5tZXRhaW5mby54bWwgXTsgdGhlbgorICAgICAgICBta2RpciAtcCAke0J9L2FwcGRhdGEKKyAgICAgICAgY3AgLWYgJHtTfS9hcHBkYXRhL25ldHdvcmstbWFuYWdlci1vcGVudnBuLm1ldGFpbmZvLnhtbCAke0J9L2FwcGRhdGEvCisgICAgZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIHJtIC1yZiAke0R9JHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyLyoubGEKK30KKworIyBDcmVhdGUgdXNlciBhbmQgZ3JvdXAgbm0tb3BlbnZwbiB0aGF0IGFyZSBuZWVkZWQgc2luY2UgdmVyc2lvbiAxLjAuNgorVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gbm0tb3BlbnZwbiIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8qLnNvIFwKKyAgICAke25vbmFyY2hfbGliZGlyfS9OZXR3b3JrTWFuYWdlci9WUE4vbm0tb3BlbnZwbi1zZXJ2aWNlLm5hbWUgXAorIgorCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiBcCisgICAgJHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyLyouYSBcCisiCisKK1JERVBFTkRTXyR7UE59ID0gIiBcCisgICAgbmV0d29ya21hbmFnZXIgXAorICAgIG9wZW52cG4gXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDEtRml4ZWQtY29uZmlndXJlLmFjLUZpeC1wa2djb25maWctc3lzcm9vdC1sb2NhdGlvbnMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1GaXhlZC1jb25maWd1cmUuYWMtRml4LXBrZ2NvbmZpZy1zeXNyb290LWxvY2F0aW9ucy5wYXRjaAppbmRleCAzMDJjMDI5Li4xOWM4Yzc0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1GaXhlZC1jb25maWd1cmUuYWMtRml4LXBrZ2NvbmZpZy1zeXNyb290LWxvY2F0aW9ucy5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMS1GaXhlZC1jb25maWd1cmUuYWMtRml4LXBrZ2NvbmZpZy1zeXNyb290LWxvY2F0aW9ucy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gM2RjM2Q4ZTczYmM0MzBlYTRlOTNlMzNmN2IyYTRiM2UwZmYxNzVhZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOWJjZjRjODFhNTU5ZDFlN2RlYWM0N2IyZTUxMGQ3ZjFlNTgzN2EwMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFBhYmxvIFNhYXZlZHJhIDxwc2FhdmVkcmFAaWdhbGlhLmNvbT4KIERhdGU6IFR1ZSwgMTMgTWFyIDIwMTggMTc6MzY6MjAgKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gRml4ZWQgY29uZmlndXJlLmFjOiBGaXggcGtnY29uZmlnIHN5c3Jvb3QgbG9jYXRpb25zCkBAIC04LDEwICs4LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDk2N2VhYzAuLmI5MTQyMTkgMTAwNjQ0CitpbmRleCA2NWNlZmZiLi5hZDRiMGZjIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC01OTIsNyArNTkyLDcgQEAgaWYgdGVzdCAiJGhhdmVfamFuc3NvbiIgPSAieWVzIjsgdGhlbgorQEAgLTU2MSw3ICs1NjEsNyBAQCBpZiB0ZXN0ICIkaGF2ZV9qYW5zc29uIiA9ICJ5ZXMiOyB0aGVuCiAgCUFDX0RFRklORShXSVRIX0pBTlNTT04sIDEsIFtEZWZpbmUgaWYgSkFOU1NPTiBpcyBlbmFibGVkXSkKICAKICAJQUNfQ0hFQ0tfVE9PTFMoUkVBREVMRiwgW2V1LXJlYWRlbGYgcmVhZGVsZl0pCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi1Eby1ub3QtY3JlYXRlLXNldHRpbmdzLXNldHRpbmdzLXByb3BlcnR5LWRvY3VtZW50YXRpLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyLzAwMDItRG8tbm90LWNyZWF0ZS1zZXR0aW5ncy1zZXR0aW5ncy1wcm9wZXJ0eS1kb2N1bWVudGF0aS5wYXRjaAppbmRleCA1NTgxZGQzLi40NDY2MzdiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvMDAwMi1Eby1ub3QtY3JlYXRlLXNldHRpbmdzLXNldHRpbmdzLXByb3BlcnR5LWRvY3VtZW50YXRpLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci8wMDAyLURvLW5vdC1jcmVhdGUtc2V0dGluZ3Mtc2V0dGluZ3MtcHJvcGVydHktZG9jdW1lbnRhdGkucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDRmMDAwYTRhMTk5NzVkNmFiYTcxNDI3ZTY5M2NkMWVkMDgwYWJkYTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDllYWI5NjM1MWE3MjZlOWNlNmExNWQxNThmNzQzZTM1ZDczYTg5MDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgogRGF0ZTogVGh1LCAyMiBNYXIgMjAxOCAxMTowODozMCArMDEwMAogU3ViamVjdDogW1BBVENIXSBEbyBub3QgY3JlYXRlIHNldHRpbmdzIHNldHRpbmdzL3Byb3BlcnR5IGRvY3VtZW50YXRpb24KQEAgLTYsMjMgKzYsMjkgQEAKIENvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAogQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAogCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCiBJdCB3YXMgdHJpZWQgdG8gZ2V0IHRoaXMgd29yayBidXQgZ2kgLyBHaXJSZXBvc2l0b3J5IGNvdWxkIG5vdCBiZSBmb3VuZCBieQogcHl0aG9uLiBBbnl3YXkgaXQgaXMgbm90IG5lY2Vzc2FyeSBmb3IgdXMgdG8gaGF2ZSB0aGUgc2V0dGluZ3MvcHJvcGVydHkgZG9jcy4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKwogLS0tCiAgTWFrZWZpbGUuYW0gIHwgMTEgLS0tLS0tLS0tLS0KICBjb25maWd1cmUuYWMgfCAgNSAtLS0tLQogIDIgZmlsZXMgY2hhbmdlZCwgMTYgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCi1pbmRleCBiMTgwNDY2Li4xYWI0NjU4IDEwMDY0NAoraW5kZXggZDVjYmNmNS4uMmExODE5YSAxMDA2NDQKIC0tLSBhL01ha2VmaWxlLmFtCiArKysgYi9NYWtlZmlsZS5hbQotQEAgLTEyOTgsOSArMTI5OCw3IEBAIEVYVFJBX0RJU1QgKz0gXAotIGlmIEhBVkVfSU5UUk9TUEVDVElPTgorQEAgLTE0NzMsOSArMTQ3Myw3IEBAIGxpYm5tL2xpYm5tLnR5cGVsaWI6IGxpYm5tL2xpYm5tLmdpcgorIElOVFJPU1BFQ1RJT05fR0lSUyArPSBsaWJubS9OTS0xLjAuZ2lyCiAgCiAgbGlibm1fbm9pbnN0X2RhdGEgPSBcCiAtCWxpYm5tL25tLXByb3BlcnR5LWRvY3MueG1sIFwKQEAgLTMxLDcgKzM3LDcgQEAKICAJbGlibm0vbm0tc2V0dGluZ3Mta2V5ZmlsZS1kb2NzLnhtbCBcCiAgCWxpYm5tL25tLXNldHRpbmdzLWlmY2ZnLXJoLWRvY3MueG1sCiAgCi1AQCAtMzkzMCwxOCArMzkyOCw5IEBAICQoY2xpZW50c19jb21tb25fbGlibm1jX2Jhc2VfbGFfT0JKRUNUUyk6ICQobGlibm1fbGliX2hfcHViX21rZW51bXMpCitAQCAtNDIzNiwxOCArNDIzNCw5IEBAICQoY2xpZW50c19jb21tb25fbGlibm1jX2Jhc2VfbGFfT0JKRUNUUyk6ICQobGlibm1fbGliX2hfcHViX21rZW51bXMpCiAgJChjbGllbnRzX2NvbW1vbl9saWJubWNfYmFzZV9sYV9PQkpFQ1RTKTogY2xpZW50cy9jb21tb24vLmRpcnN0YW1wCiAgCiAgY2xpZW50c19jb21tb25fc2V0dGluZ3NfZG9jX2ggPSBjbGllbnRzL2NvbW1vbi9zZXR0aW5ncy1kb2NzLmgKQEAgLTUxLDEwICs1NywxMCBAQAogIAkkKGNsaWVudHNfY29tbW9uX3NldHRpbmdzX2RvY19oKSBcCiAgCSQoY2xpZW50c19jb21tb25fc2V0dGluZ3NfZG9jX2gpLmluCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBiOTE0MjE5Li44NzJjMjkyIDEwMDY0NAoraW5kZXggYWQ0YjBmYy4uMDA5MjA5MiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTIxNSwxMSArMTIxNSw2IEBAIEdUS19ET0NfQ0hFQ0soMS4wKQorQEAgLTEyMDEsMTEgKzEyMDEsNiBAQCBHVEtfRE9DX0NIRUNLKDEuMCkKICAjIGNoZWNrIGlmIHdlIGNhbiBidWlsZCBzZXR0aW5nIHByb3BlcnR5IGRvY3VtZW50YXRpb24KICBidWlsZF9kb2NzPW5vCiAgaWYgdGVzdCAtbiAiJElOVFJPU1BFQ1RJT05fTUFLRUZJTEUiOyB0aGVuCkBAIC02Niw2ICs3MiwzIEBACiAgCUFDX1BBVEhfUFJPRyhQRVJMLCBwZXJsKQogIAlpZiB0ZXN0IC16ICIkUEVSTCI7IHRoZW4KICAJCUFDX01TR19FUlJPUihbLS1lbmFibGUtaW50cm9zcGVjdGlvbiByZXF1aXJlcyBwZXJsXSkKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1zeXN0ZW1kLXNwZWNpZmljLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLXN5c3RlbWQtc3BlY2lmaWMucGF0Y2gKaW5kZXggYWY2ZjkzOC4uYzIzZmMzMCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLXN5c3RlbWQtc3BlY2lmaWMucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLXN5c3RlbWQtc3BlY2lmaWMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGE4OWMyZTZkNDA2MDZmNTYzNDY3YTgzZmI5ODkzM2U5OTBlNzEzNzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGU3ZWQ5MWM0OGUxYTA3NTI3YTg2MDYzN2E3ODY1ZWI2N2NlMzRjZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgogRGF0ZTogVHVlLCAyIEFwciAyMDE5IDAxOjM0OjM1ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIG11c2wgLSBzeXN0ZW1kIHNwZWNpZmljCkBAIC0xMiw2ICsxMiw3IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKwogLS0tCiAgc2hhcmVkL3N5c3RlbWQvc3JjL2Jhc2ljL2luLWFkZHItdXRpbC5jIHwgIDEgKwogIHNoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyB8ICA5ICsrKysrKysrKwpAQCAtMjIsMTAgKzIzLDEwIEBACiAgNiBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9pbi1hZGRyLXV0aWwuYyBiL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9pbi1hZGRyLXV0aWwuYwotaW5kZXggNTg5OWY2Mi4uMGFkYjI0OCAxMDA2NDQKK2luZGV4IDkxZDY4N2MuLjgzODgzMDQgMTAwNjQ0CiAtLS0gYS9zaGFyZWQvc3lzdGVtZC9zcmMvYmFzaWMvaW4tYWRkci11dGlsLmMKICsrKyBiL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9pbi1hZGRyLXV0aWwuYwotQEAgLTE0LDYgKzE0LDcgQEAKK0BAIC0xNSw2ICsxNSw3IEBACiAgI2luY2x1ZGUgImluLWFkZHItdXRpbC5oIgogICNpbmNsdWRlICJtYWNyby5oIgogICNpbmNsdWRlICJwYXJzZS11dGlsLmgiCkBAIC0zNCwxMCArMzUsMTAgQEAKICAjaW5jbHVkZSAic3RyeGNweXguaCIKICAjaW5jbHVkZSAidXRpbC5oIgogZGlmZiAtLWdpdCBhL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyBiL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYwotaW5kZXggNzQzMWJlMy4uMTg5MDYwYSAxMDA2NDQKK2luZGV4IDE0NTYxNjcuLjQyZjUxYTAgMTAwNjQ0CiAtLS0gYS9zaGFyZWQvc3lzdGVtZC9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKICsrKyBiL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYwotQEAgLTIxLDYgKzIxLDkgQEAKK0BAIC0xNyw2ICsxNyw5IEBACiAgI2luY2x1ZGUgPHN5cy93YWl0Lmg+CiAgI2luY2x1ZGUgPHN5c2xvZy5oPgogICNpbmNsdWRlIDx1bmlzdGQuaD4KQEAgLTQ3LDcgKzQ4LDcgQEAKICAjaWYgMCAvKiBOTV9JR05PUkVEICovCiAgI2lmIEhBVkVfVkFMR1JJTkRfVkFMR1JJTkRfSAogICNpbmNsdWRlIDx2YWxncmluZC92YWxncmluZC5oPgotQEAgLTExODMsMTEgKzExODYsMTMgQEAgdm9pZCByZXNldF9jYWNoZWRfcGlkKHZvaWQpIHsKK0BAIC0xMTIzLDExICsxMTI2LDEzIEBAIHZvaWQgcmVzZXRfY2FjaGVkX3BpZCh2b2lkKSB7CiAgICAgICAgICBjYWNoZWRfcGlkID0gQ0FDSEVEX1BJRF9VTlNFVDsKICB9CiAgCkBAIC02MSw3ICs2Miw3IEBACiAgCiAgcGlkX3QgZ2V0cGlkX2NhY2hlZCh2b2lkKSB7CiAgICAgICAgICBzdGF0aWMgYm9vbCBpbnN0YWxsZWQgPSBmYWxzZTsKLUBAIC0xMjE2LDcgKzEyMjEsMTEgQEAgcGlkX3QgZ2V0cGlkX2NhY2hlZCh2b2lkKSB7CitAQCAtMTE1Niw3ICsxMTYxLDExIEBAIHBpZF90IGdldHBpZF9jYWNoZWQodm9pZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAqIG9ubHkgaGFsZi1kb2N1bWVudGVkIChnbGliYyBkb2Vzbid0IGRvY3VtZW50IGl0IGJ1dCBMU0IgZG9lcyDigJQgdGhvdWdoIG9ubHkgc3VwZXJmaWNpYWxseSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgKiB3ZSdsbCBjaGVjayBmb3IgZXJyb3JzIG9ubHkgaW4gdGhlIG1vc3QgZ2VuZXJpYyBmYXNoaW9uIHBvc3NpYmxlLiAqLwogIApAQCAtNzQsMTAgKzc1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjYWNoZWRfcGlkID0gQ0FDSEVEX1BJRF9VTlNFVDsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBuZXdfcGlkOwogZGlmZiAtLWdpdCBhL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5oIGIvc2hhcmVkL3N5c3RlbWQvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmgKLWluZGV4IDE1NDQzZjEuLjQ4MDcxOTggMTAwNjQ0CitpbmRleCBhMDg4NmUwLi5kYTQ3ZDE0IDEwMDY0NAogLS0tIGEvc2hhcmVkL3N5c3RlbWQvc3JjL2Jhc2ljL3NvY2tldC11dGlsLmgKICsrKyBiL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9zb2NrZXQtdXRpbC5oCi1AQCAtMTMsNiArMTMsMTIgQEAKK0BAIC0xNCw2ICsxNCwxMiBAQAogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KICAjaW5jbHVkZSA8c3lzL3VuLmg+CiAgCkBAIC0xNDcsMTAgKzE0OCwxMCBAQAogICNpbmNsdWRlIDxzdGRpby5oPgogICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KIGRpZmYgLS1naXQgYS9zaGFyZWQvc3lzdGVtZC9zcmMvYmFzaWMvc3RyaW5nLXV0aWwuaCBiL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9zdHJpbmctdXRpbC5oCi1pbmRleCBiMjNmNGM4Li44ZjJmNmUwIDEwMDY0NAoraW5kZXggMDRjYzgyYi4uMmNmNTg5YSAxMDA2NDQKIC0tLSBhL3NoYXJlZC9zeXN0ZW1kL3NyYy9iYXNpYy9zdHJpbmctdXRpbC5oCiArKysgYi9zaGFyZWQvc3lzdGVtZC9zcmMvYmFzaWMvc3RyaW5nLXV0aWwuaAotQEAgLTI3LDYgKzI3LDExIEBACitAQCAtMjYsNiArMjYsMTEgQEAKICAjZGVmaW5lIHN0cmNhc2VlcShhLGIpIChzdHJjYXNlY21wKChhKSwoYikpID09IDApCiAgI2RlZmluZSBzdHJuY2FzZWVxKGEsIGIsIG4pIChzdHJuY2FzZWNtcCgoYSksIChiKSwgKG4pKSA9PSAwKQogIApAQCAtMTYyLDYgKzE2MywzIEBACiAgaW50IHN0cmNtcF9wdHIoY29uc3QgY2hhciAqYSwgY29uc3QgY2hhciAqYikgX3B1cmVfOwogIAogIHN0YXRpYyBpbmxpbmUgYm9vbCBzdHJlcV9wdHIoY29uc3QgY2hhciAqYSwgY29uc3QgY2hhciAqYikgewotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwMi1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwMi1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCmluZGV4IGUwOTczYWYuLjE5NmEzMzUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDItRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDAyLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDNkMTMwNzczNTY2Nzc1OGY0NDM3ODU4NTQ4MmZlNDIxZGIwODZhZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDg3N2ZiYjRlODQ4NjI5ZmY1NzM3MWI1YmRiMGQ1NjM2OWFiZTlkODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgogRGF0ZTogTW9uLCA4IEFwciAyMDE5IDIzOjEwOjQzICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBGaXggYnVpbGQgd2l0aCBtdXNsCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCB3aXRoIG11c2wKIE1JTUUtVmVyc2lvbjogMS4wCiBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKQEAgLTMyLDYgKzMyLDcgQEAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorCiAtLS0KICBjbGllbnRzL3R1aS9ubXQtZGV2aWNlLWVudHJ5LmMgICB8IDEgLQogIGxpYm5tLWNvcmUvbm0tdXRpbHMuaCAgICAgICAgICAgIHwgNCArKysrCkBAIC00MSwxMCArNDIsMTAgQEAKICA1IGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NsaWVudHMvdHVpL25tdC1kZXZpY2UtZW50cnkuYyBiL2NsaWVudHMvdHVpL25tdC1kZXZpY2UtZW50cnkuYwotaW5kZXggNDNmYmJjMS4uM2VhZTI4NiAxMDA2NDQKK2luZGV4IDRhYjU5MzIuLjkxNTI0OGMgMTAwNjQ0CiAtLS0gYS9jbGllbnRzL3R1aS9ubXQtZGV2aWNlLWVudHJ5LmMKICsrKyBiL2NsaWVudHMvdHVpL25tdC1kZXZpY2UtZW50cnkuYwotQEAgLTM5LDcgKzM5LDYgQEAKK0BAIC0yNiw3ICsyNiw2IEBACiAgI2luY2x1ZGUgIm5tdC1kZXZpY2UtZW50cnkuaCIKICAKICAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgpAQCAtNTMsMTAgKzU0LDEwIEBACiAgI2luY2x1ZGUgIm5tdHVpLmgiCiAgCiBkaWZmIC0tZ2l0IGEvbGlibm0tY29yZS9ubS11dGlscy5oIGIvbGlibm0tY29yZS9ubS11dGlscy5oCi1pbmRleCAyYjViYWJhLi5mN2FiYWI2IDEwMDY0NAoraW5kZXggNTQxOGExZS4uZjQ5MmRhNiAxMDA2NDQKIC0tLSBhL2xpYm5tLWNvcmUvbm0tdXRpbHMuaAogKysrIGIvbGlibm0tY29yZS9ubS11dGlscy5oCi1AQCAtMjUsNiArMjUsMTAgQEAKK0BAIC0xMCw2ICsxMCwxMCBAQAogICNlcnJvciAiT25seSA8TmV0d29ya01hbmFnZXIuaD4gY2FuIGJlIGluY2x1ZGVkIGRpcmVjdGx5LiIKICAjZW5kaWYKICAKQEAgLTY4LDEwICs2OSwxMCBAQAogIAogICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiBkaWZmIC0tZ2l0IGEvc2hhcmVkL25tLWRlZmF1bHQuaCBiL3NoYXJlZC9ubS1kZWZhdWx0LmgKLWluZGV4IDU0ZTk5MTYuLjI2ZTlmNGUgMTAwNjQ0CitpbmRleCBhY2U2ZWRlLi4yNTM1N2RhIDEwMDY0NAogLS0tIGEvc2hhcmVkL25tLWRlZmF1bHQuaAogKysrIGIvc2hhcmVkL25tLWRlZmF1bHQuaAotQEAgLTIxMSw2ICsyMTEsOSBAQAorQEAgLTE4Miw2ICsxODIsOSBAQAogICNlbmRpZgogIAogICNpbmNsdWRlIDxzdGRsaWIuaD4KQEAgLTgyLDEwICs4MywxMCBAQAogIC8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KICAKIGRpZmYgLS1naXQgYS9zcmMvZGV2aWNlcy9ubS1kZXZpY2UuYyBiL3NyYy9kZXZpY2VzL25tLWRldmljZS5jCi1pbmRleCBiZDRmYmNjLi5mNzBiMzA5IDEwMDY0NAoraW5kZXggM2JiYzk3NS4uNGU4YTNmNiAxMDA2NDQKIC0tLSBhL3NyYy9kZXZpY2VzL25tLWRldmljZS5jCiArKysgYi9zcmMvZGV2aWNlcy9ubS1kZXZpY2UuYwotQEAgLTI0LDYgKzI0LDcgQEAKK0BAIC05LDYgKzksNyBAQAogICNpbmNsdWRlICJubS1kZXZpY2UuaCIKICAKICAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgpAQCAtOTMsNyArOTQsNyBAQAogICNpbmNsdWRlIDx1bmlzdGQuaD4KICAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiAgI2luY2x1ZGUgPHNpZ25hbC5oPgotQEAgLTMyLDcgKzMzLDYgQEAKK0BAIC0xNyw3ICsxOCw2IEBACiAgI2luY2x1ZGUgPGFycGEvaW5ldC5oPgogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlIDxsaW51eC9pZl9hZGRyLmg+CkBAIC0xMDIsMTAgKzEwMywxMCBAQAogICNpbmNsdWRlIDxsaW51eC9wa3Rfc2NoZWQuaD4KICAKIGRpZmYgLS1naXQgYS9zcmMvcGxhdGZvcm0vbm0tbGludXgtcGxhdGZvcm0uYyBiL3NyYy9wbGF0Zm9ybS9ubS1saW51eC1wbGF0Zm9ybS5jCi1pbmRleCBkNGIwMTE1Li4yMmEzYTkwIDEwMDY0NAoraW5kZXggN2FiZTRkZi4uOWY1MzE0NyAxMDA2NDQKIC0tLSBhL3NyYy9wbGF0Zm9ybS9ubS1saW51eC1wbGF0Zm9ybS5jCiArKysgYi9zcmMvcGxhdGZvcm0vbm0tbGludXgtcGxhdGZvcm0uYwotQEAgLTI4LDcgKzI4LDYgQEAKK0BAIC0xNCw3ICsxNCw2IEBACiAgI2luY2x1ZGUgPGxpYnVkZXYuaD4KICAjaW5jbHVkZSA8bGludXgvZmliX3J1bGVzLmg+CiAgI2luY2x1ZGUgPGxpbnV4L2lwLmg+CkBAIC0xMTMsNiArMTE0LDMgQEAKICAjaW5jbHVkZSA8bGludXgvaWZfYnJpZGdlLmg+CiAgI2luY2x1ZGUgPGxpbnV4L2lmX2xpbmsuaD4KICAjaW5jbHVkZSA8bGludXgvaWZfdHVuLmg+Ci0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDAzLUZpeC1idWlsZC13aXRoLW11c2wtZm9yLW4tZGhjcDQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXIvbXVzbC8wMDAzLUZpeC1idWlsZC13aXRoLW11c2wtZm9yLW4tZGhjcDQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjIyNTI4MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDMtRml4LWJ1aWxkLXdpdGgtbXVzbC1mb3Itbi1kaGNwNC5wYXRjaApAQCAtMCwwICsxLDYxIEBACitGcm9tIGFmZjVjZGVkODg0N2YzZWVlNTlmNWNlYzIyYWZiODYzMGQ0MDFhODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBZHJpYW4gRnJlaWhvZmVyIDxhZHJpYW4uZnJlaWhvZmVyQHNpZW1lbnMuY29tPgorRGF0ZTogU2F0LCA3IE1hciAyMDIwIDE0OjIyOjM2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBGaXggYnVpbGQgd2l0aCBtdXNsIGZvciBuLWRoY3A0CisKKy0tLQorIHNoYXJlZC9uLWRoY3A0L3NyYy9uLWRoY3A0LWMtcHJvYmUuYyB8IDggKysrKysrKysKKyBzaGFyZWQvbi1kaGNwNC9zcmMvbi1kaGNwNC1wcml2YXRlLmggfCA0ICsrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NoYXJlZC9uLWRoY3A0L3NyYy9uLWRoY3A0LWMtcHJvYmUuYyBiL3NoYXJlZC9uLWRoY3A0L3NyYy9uLWRoY3A0LWMtcHJvYmUuYworaW5kZXggZTQ0NzdhNy4uNzU3MTNjOCAxMDA2NDQKKy0tLSBhL3NoYXJlZC9uLWRoY3A0L3NyYy9uLWRoY3A0LWMtcHJvYmUuYworKysrIGIvc2hhcmVkL24tZGhjcDQvc3JjL24tZGhjcDQtYy1wcm9iZS5jCitAQCAtMzYwLDggKzM2MCwxMiBAQCBzdGF0aWMgdm9pZCBuX2RoY3A0X2NsaWVudF9wcm9iZV9jb25maWdfaW5pdGlhbGl6ZV9yYW5kb21fc2VlZChORGhjcDRDbGllbnRQcm9iZQorICAgICAgICAgc2VlZDE2dlsxXSA9ICh1NjQgPj4gMTYpIF4gKHU2NCA+PiAgMCk7CisgICAgICAgICBzZWVkMTZ2WzJdID0gKHU2NCA+PiAzMikgXiAodTY0ID4+IDE2KTsKKyAKKysjaWZkZWYgX19HTElCQ19fCisgICAgICAgICByID0gc2VlZDQ4X3Ioc2VlZDE2diwgJmNvbmZpZy0+ZW50cm9weSk7CisgICAgICAgICBjX2Fzc2VydCghcik7CisrI2Vsc2UKKysgICAgICAgIG1lbWNweShjb25maWctPmVudHJvcHksIHNlZWQxNnYsIHNpemVvZiBzZWVkMTZ2KTsKKysjZW5kaWYKKyB9CisgCisgLyoqCitAQCAtMzc1LDEwICszNzksMTQgQEAgc3RhdGljIHZvaWQgbl9kaGNwNF9jbGllbnRfcHJvYmVfY29uZmlnX2luaXRpYWxpemVfcmFuZG9tX3NlZWQoTkRoY3A0Q2xpZW50UHJvYmUKKyAgKi8KKyB1aW50MzJfdCBuX2RoY3A0X2NsaWVudF9wcm9iZV9jb25maWdfZ2V0X3JhbmRvbShORGhjcDRDbGllbnRQcm9iZUNvbmZpZyAqY29uZmlnKSB7CisgICAgICAgICBsb25nIGludCByZXN1bHQ7CisrI2lmZGVmIF9fR0xJQkNfXworICAgICAgICAgaW50IHI7CisgCisgICAgICAgICByID0gbXJhbmQ0OF9yKCZjb25maWctPmVudHJvcHksICZyZXN1bHQpOworICAgICAgICAgY19hc3NlcnQoIXIpOworKyNlbHNlCisrICAgICAgICByZXN1bHQgPSBqcmFuZDQ4KGNvbmZpZy0+ZW50cm9weSk7CisrI2VuZGlmCisgCisgICAgICAgICByZXR1cm4gcmVzdWx0OworIH07CitkaWZmIC0tZ2l0IGEvc2hhcmVkL24tZGhjcDQvc3JjL24tZGhjcDQtcHJpdmF0ZS5oIGIvc2hhcmVkL24tZGhjcDQvc3JjL24tZGhjcDQtcHJpdmF0ZS5oCitpbmRleCA0MzZlZTgwLi5mZmNiNGIyIDEwMDY0NAorLS0tIGEvc2hhcmVkL24tZGhjcDQvc3JjL24tZGhjcDQtcHJpdmF0ZS5oCisrKysgYi9zaGFyZWQvbi1kaGNwNC9zcmMvbi1kaGNwNC1wcml2YXRlLmgKK0BAIC0yNjcsNyArMjY3LDExIEBAIHN0cnVjdCBORGhjcDRDbGllbnRQcm9iZUNvbmZpZyB7CisgICAgICAgICBib29sIGluZm9ybV9vbmx5OworICAgICAgICAgYm9vbCBpbml0X3JlYm9vdDsKKyAgICAgICAgIHN0cnVjdCBpbl9hZGRyIHJlcXVlc3RlZF9pcDsKKysjaWZkZWYgX19HTElCQ19fCisgICAgICAgICBzdHJ1Y3QgZHJhbmQ0OF9kYXRhIGVudHJvcHk7ICAgIC8qIGVudHJvcHkgcG9vbCAqLworKyNlbHNlCisrICAgICAgICB1bnNpZ25lZCBzaG9ydCBlbnRyb3B5WzNdOyAgICAgIC8qIGVudHJvcHkgcG9vbCAqLworKyNlbmRpZgorICAgICAgICAgdWludDY0X3QgbXNfc3RhcnRfZGVsYXk7ICAgICAgICAvKiBtYXggbXMgdG8gd2FpdCBiZWZvcmUgc3RhcnRpbmcgcHJvYmUgKi8KKyAgICAgICAgIE5EaGNwNENsaWVudFByb2JlT3B0aW9uICpvcHRpb25zW1VJTlQ4X01BWCArIDFdOworICAgICAgICAgaW50OF90IHJlcXVlc3RfcGFyYW1ldGVyc1tVSU5UOF9NQVggKyAxXTsKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDQtRml4LWJ1aWxkLXdpdGgtbXVzbC1zeXN0ZW1kLXNwZWNpZmljLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L25ldHdvcmttYW5hZ2VyL25ldHdvcmttYW5hZ2VyL211c2wvMDAwNC1GaXgtYnVpbGQtd2l0aC1tdXNsLXN5c3RlbWQtc3BlY2lmaWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTVhYTRkMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlci9tdXNsLzAwMDQtRml4LWJ1aWxkLXdpdGgtbXVzbC1zeXN0ZW1kLXNwZWNpZmljLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gODBjN2QzMzkxNTEwOTkzY2JhMWE3NDk5YmYzM2E1YjJiMTE1MjgwZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFkcmlhbiBGcmVpaG9mZXIgPGFkcmlhbi5mcmVpaG9mZXJAc2llbWVucy5jb20+CitEYXRlOiBTYXQsIDcgTWFyIDIwMjAgMTQ6MjQ6MDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCA0LzRdIEZpeCBidWlsZCB3aXRoIG11c2wgLSBzeXN0ZW1kIHNwZWNpZmljCisKKy0tLQorIHNyYy9zeXN0ZW1kL3NyYy9saWJzeXN0ZW1kLW5ldHdvcmsvc2QtZGhjcDYtY2xpZW50LmMgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL3N5c3RlbWQvc3JjL2xpYnN5c3RlbWQtbmV0d29yay9zZC1kaGNwNi1jbGllbnQuYyBiL3NyYy9zeXN0ZW1kL3NyYy9saWJzeXN0ZW1kLW5ldHdvcmsvc2QtZGhjcDYtY2xpZW50LmMKK2luZGV4IGUxMTUwZjkuLjJjNjNiYWMgMTAwNjQ0CistLS0gYS9zcmMvc3lzdGVtZC9zcmMvbGlic3lzdGVtZC1uZXR3b3JrL3NkLWRoY3A2LWNsaWVudC5jCisrKysgYi9zcmMvc3lzdGVtZC9zcmMvbGlic3lzdGVtZC1uZXR3b3JrL3NkLWRoY3A2LWNsaWVudC5jCitAQCAtNyw3ICs3LDkgQEAKKyAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CisrI2lmZGVmIF9fR0xJQkNfXyAgLyogbXVzbCBzdXBwbGllcyBmdWxsIHNldCBvZiB1c2Vyc3BhY2UgaGVhZGVycyAqLworICNpbmNsdWRlIDxsaW51eC9pZl9hcnAuaD4KKysjZW5kaWYKKyAjaW5jbHVkZSA8bGludXgvaWZfaW5maW5pYmFuZC5oPgorIAorICNpbmNsdWRlICJzZC1kaGNwNi1jbGllbnQuaCIKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlcl8xLjE4LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXJfMS4xOC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzUwOGM0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlcl8xLjE4LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNTEgKzAsMCBAQAotU1VNTUFSWSA9ICJOZXR3b3JrTWFuYWdlciIKLUhPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvTmV0d29ya01hbmFnZXIiCi1TRUNUSU9OID0gIm5ldC9taXNjIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWNiYmZmZDU2ODIyN2FkYTUwNjY0MGZlOTUwYTQ4MjNiIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYm5tLXV0aWwvQ09QWUlORzttZDU9MWM0ZmE3NjVkNmViM2NkMmZiZDg0MzQ0YTFiODE2Y2QgXAotIgotCi1ERVBFTkRTID0gIiBcCi0gICAgaW50bHRvb2wtbmF0aXZlIFwKLSAgICBsaWJ4c2x0LW5hdGl2ZSBcCi0gICAgbGlibmwgXAotICAgIGxpYmd1ZGV2IFwKLSAgICB1dGlsLWxpbnV4IFwKLSAgICBsaWJuZHAgXAotICAgIGxpYm5ld3QgXAotICAgIGphbnNzb24gXAotICAgIGN1cmwgXAotIgotCi1pbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHVwZGF0ZS1yYy5kIHN5c3RlbWQgYmFzaC1jb21wbGV0aW9uIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgdXBkYXRlLWFsdGVybmF0aXZlcyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotU1JDX1VSSSA9ICIgXAotICAgICR7R05PTUVfTUlSUk9SfS9OZXR3b3JrTWFuYWdlci8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9L05ldHdvcmtNYW5hZ2VyLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLyR7QlBOfS5pbml0ZCBcCi0gICAgZmlsZTovLzAwMDEtRml4ZWQtY29uZmlndXJlLmFjLUZpeC1wa2djb25maWctc3lzcm9vdC1sb2NhdGlvbnMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLURvLW5vdC1jcmVhdGUtc2V0dGluZ3Mtc2V0dGluZ3MtcHJvcGVydHktZG9jdW1lbnRhdGkucGF0Y2ggXAotIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCi0gICAgZmlsZTovL211c2wvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLXN5c3RlbWQtc3BlY2lmaWMucGF0Y2ggXAotICAgIGZpbGU6Ly9tdXNsLzAwMDItRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiZmM4NjU4OGEzYWU1NGUwZDQwNmI1NjBhMzEyZDVhNWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTNiZDA3ZjY5NWI2ZDM1MjllYzZhZGJkOWExZDYzODViOTY3ZTljOGFlOTA5NDZmNTFkODg1MmIzMjBmZDA1ZSIKLQotUyA9ICIke1dPUktESVJ9L05ldHdvcmtNYW5hZ2VyLSR7UFZ9IgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtaWZjZmctcmggXAotICAgIC0tZGlzYWJsZS1tb3JlLXdhcm5pbmdzIFwKLSAgICAtLXdpdGgtaXB0YWJsZXM9JHtzYmluZGlyfS9pcHRhYmxlcyBcCi0gICAgLS13aXRoLXRlc3RzIFwKLSAgICAtLXdpdGgtbm10dWk9eWVzIFwKLSAgICAtLXdpdGgtdWRldi1kaXI9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2IFwKLSIKLQotIyBzdG9sZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Jsb2IvbWFzdGVyL3NyY3BrZ3MvTmV0d29ya01hbmFnZXIvdGVtcGxhdGUKLSMgYXZvaWRzOgotIyB8IC4uL05ldHdvcmtNYW5hZ2VyLTEuMTYuMC9saWJubS1jb3JlL25tLWpzb24uYzoxMDY6NTA6IGVycm9yOiAnUlRMRF9ERUVQQklORCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ1JUTERfREVGQVVMVCc/Ci1DRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAotICAgIC1EUlRMRF9ERUVQQklORD0wIFwKLSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2xpYm5tLy5saWJzOiR7Qn0vbGlibm0tZ2xpYi8ubGliczoke0J9L2xpYm5tLXV0aWwvLmxpYnMiCi19Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICJuc3MgaWZ1cGRvd24gZGhjbGllbnQgZG5zbWFzcSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQnLCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdjb25zb2xla2l0JywgJycsIGQpLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6NScsICcnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dpZmkgcG9sa2l0JywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiIFwKLSAgICAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSAtLXdpdGgtc2Vzc2lvbi10cmFja2luZz1zeXN0ZW1kLCBcCi0gICAgLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyLCBcCi0iCi1QQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS1lbmFibGUtcG9sa2l0IC0tZW5hYmxlLXBvbGtpdC1hZ2VudCwtLWRpc2FibGUtcG9sa2l0IC0tZGlzYWJsZS1wb2xraXQtYWdlbnQscG9sa2l0IgotUEFDS0FHRUNPTkZJR1tibHVlejVdID0gIi0tZW5hYmxlLWJsdWV6NS1kdW4sLS1kaXNhYmxlLWJsdWV6NS1kdW4sYmx1ZXo1IgotIyBjb25zb2xla2l0IGlzIG5vdCBwaWNrZWQgYnkgc2hsaWJzLCBzbyBhZGQgaXQgdG8gUkRFUEVORFMgdG9vCi1QQUNLQUdFQ09ORklHW2NvbnNvbGVraXRdID0gIi0td2l0aC1zZXNzaW9uLXRyYWNraW5nPWNvbnNvbGVraXQsLGNvbnNvbGVraXQsY29uc29sZWtpdCIKLVBBQ0tBR0VDT05GSUdbbW9kZW1tYW5hZ2VyXSA9ICItLXdpdGgtbW9kZW0tbWFuYWdlci0xPXllcywtLXdpdGgtbW9kZW0tbWFuYWdlci0xPW5vLG1vZGVtbWFuYWdlciIKLVBBQ0tBR0VDT05GSUdbcHBwXSA9ICItLWVuYWJsZS1wcHAsLS1kaXNhYmxlLXBwcCxwcHAscHBwIgotIyBVc2UgZnVsbCBmZWF0dXJlZCBkaGNwIGNsaWVudCBpbnN0ZWFkIG9mIGludGVybmFsIG9uZQotUEFDS0FHRUNPTkZJR1tkaGNsaWVudF0gPSAiLS13aXRoLWRoY2xpZW50PSR7YmFzZV9zYmluZGlyfS9kaGNsaWVudCwsLGRoY3AtY2xpZW50IgotUEFDS0FHRUNPTkZJR1tkbnNtYXNxXSA9ICItLXdpdGgtZG5zbWFzcT0ke2JpbmRpcn0vZG5zbWFzcSIKLVBBQ0tBR0VDT05GSUdbbnNzXSA9ICItLXdpdGgtY3J5cHRvPW5zcywsbnNzIgotUEFDS0FHRUNPTkZJR1tnbGliXSA9ICItLXdpdGgtbGlibm0tZ2xpYiwsZGJ1cy1nbGliLW5hdGl2ZSBkYnVzLWdsaWIiCi1QQUNLQUdFQ09ORklHW3Jlc29sdmNvbmZdID0gIi0td2l0aC1yZXNvbHZjb25mPSR7YmFzZV9zYmluZGlyfS9yZXNvbHZjb25mLCwscmVzb2x2Y29uZiIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtY3J5cHRvPWdudXRscywsZ251dGxzIgotUEFDS0FHRUNPTkZJR1t3aWZpXSA9ICItLWVuYWJsZS13aWZpPXllcywtLWVuYWJsZS13aWZpPW5vLCx3cGEtc3VwcGxpY2FudCIKLVBBQ0tBR0VDT05GSUdbaWZ1cGRvd25dID0gIi0tZW5hYmxlLWlmdXBkb3duLC0tZGlzYWJsZS1pZnVwZG93biIKLVBBQ0tBR0VDT05GSUdbcXQ0LXgxMS1mcmVlXSA9ICItLWVuYWJsZS1xdCwtLWRpc2FibGUtcXQscXQ0LXgxMS1mcmVlIgotCi1QQUNLQUdFUyA9KyAibGlibm11dGlsIGxpYm5tZ2xpYiBsaWJubWdsaWItdnBuIFwKLSAgJHtQTn0tbm10dWkgJHtQTn0tbm10dWktZG9jIFwKLSAgJHtQTn0tYWRzbCBcCi0iCi0KLUZJTEVTX2xpYm5tdXRpbCArPSAiJHtsaWJkaXJ9L2xpYm5tLXV0aWwuc28uKiIKLUZJTEVTX2xpYm5tZ2xpYiArPSAiJHtsaWJkaXJ9L2xpYm5tLWdsaWIuc28uKiIKLUZJTEVTX2xpYm5tZ2xpYi12cG4gKz0gIiR7bGliZGlyfS9saWJubS1nbGliLXZwbi5zby4qIgotCi1GSUxFU18ke1BOfS1hZHNsID0gIiR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8ke1BWfS9saWJubS1kZXZpY2UtcGx1Z2luLWFkc2wuc28iCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7bGliZXhlY2Rpcn0gXAotICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8ke1BWfS8qLnNvIFwKLSAgICAke25vbmFyY2hfbGliZGlyfS9OZXR3b3JrTWFuYWdlci9WUE4gXAotICAgICR7bm9uYXJjaF9saWJkaXJ9L05ldHdvcmtNYW5hZ2VyL2NvbmYuZCBcCi0gICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCi0gICAgJHtkYXRhZGlyfS9kYnVzLTEgXAotICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi8qIFwKLSAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIFwKLSAgICAke2xpYmRpcn0vcHBwZCBcCi0iCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJpcHRhYmxlcyBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2Ruc21hc3EnLCBkKX0gXAotIgotUkNPTkZMSUNUU18ke1BOfSA9ICJjb25ubWFuIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiBcCi0gICAgJHtkYXRhZGlyfS9OZXR3b3JrTWFuYWdlci9nZGItY21kIFwKLSAgICAke2xpYmRpcn0vcHBwZC8qLyoubGEgXAotICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8qLmxhIFwKLSAgICAke2xpYmRpcn0vTmV0d29ya01hbmFnZXIvJHtQVn0vKi5sYSBcCi0iCi0KLUZJTEVTXyR7UE59LW5tdHVpID0gIiBcCi0gICAgJHtiaW5kaXJ9L25tdHVpIFwKLSAgICAke2JpbmRpcn0vbm10dWktZWRpdCBcCi0gICAgJHtiaW5kaXJ9L25tdHVpLWNvbm5lY3QgXAotICAgICR7YmluZGlyfS9ubXR1aS1ob3N0bmFtZSBcCi0iCi0KLUZJTEVTXyR7UE59LW5tdHVpLWRvYyA9ICIgXAotICAgICR7bWFuZGlyfS9tYW4xL25tdHVpKiBcCi0iCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJuZXR3b3JrLW1hbmFnZXIiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3lzdGVtZCcsICdOZXR3b3JrTWFuYWdlci5zZXJ2aWNlIE5ldHdvcmtNYW5hZ2VyLWRpc3BhdGNoZXIuc2VydmljZScsICcnLCBkKX0iCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywncmVzb2x2LWNvbmYnLCcnLGQpfSIKLUFMVEVSTkFUSVZFX1RBUkdFVFtyZXNvbHYtY29uZl0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCcke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLk5ldHdvcmtNYW5hZ2VyJywnJyxkKX0iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcmVzb2x2LWNvbmZdID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZicsJycsZCl9IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vJHtCUE59LmluaXRkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uZXR3b3JrLW1hbmFnZXIKLQotICAgIHJtIC1yZiAke0R9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgIyBGb3IgcmVhZC1vbmx5IGZpbGVzeXN0ZW0sIGRvIG5vdCBjcmVhdGUgbGlua3MgZHVyaW5nIGJvb3R1cAotICAgICAgICBsbiAtc2YgLi4vcnVuL05ldHdvcmtNYW5hZ2VyL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLk5ldHdvcmtNYW5hZ2VyCi0KLSAgICAgICAgIyBzeXN0ZW1kIHYyMTAgYW5kIG5ld2VyIGRvIG5vdCBuZWVkIHRoaXMgcnVsZSBmaWxlCi0gICAgICAgIHJtICR7RH0vJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvODQtbm0tZHJpdmVycy5ydWxlcwotICAgIGZpCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXJfMS4yMi4xMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZXR3b3JrbWFuYWdlci9uZXR3b3JrbWFuYWdlcl8xLjIyLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzYTJiN2MKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmV0d29ya21hbmFnZXIvbmV0d29ya21hbmFnZXJfMS4yMi4xMC5iYgpAQCAtMCwwICsxLDE2NiBAQAorU1VNTUFSWSA9ICJOZXR3b3JrTWFuYWdlciIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvTmV0d29ya01hbmFnZXIiCitTRUNUSU9OID0gIm5ldC9taXNjIgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTDttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorIgorCitERVBFTkRTID0gIiBcCisgICAgaW50bHRvb2wtbmF0aXZlIFwKKyAgICBsaWJ4c2x0LW5hdGl2ZSBcCisgICAgbGlibmwgXAorICAgIGxpYmd1ZGV2IFwKKyAgICB1dGlsLWxpbnV4IFwKKyAgICBsaWJuZHAgXAorICAgIGxpYm5ld3QgXAorICAgIGphbnNzb24gXAorICAgIGN1cmwgXAorIgorCitpbmhlcml0IGdub21lYmFzZSBnZXR0ZXh0IHVwZGF0ZS1yYy5kIHN5c3RlbWQgYmFzaC1jb21wbGV0aW9uIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGd0ay1kb2MgdXBkYXRlLWFsdGVybmF0aXZlcyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworU1JDX1VSSSA9ICIgXAorICAgICR7R05PTUVfTUlSUk9SfS9OZXR3b3JrTWFuYWdlci8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9L05ldHdvcmtNYW5hZ2VyLSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLyR7QlBOfS5pbml0ZCBcCisgICAgZmlsZTovLzAwMDEtRml4ZWQtY29uZmlndXJlLmFjLUZpeC1wa2djb25maWctc3lzcm9vdC1sb2NhdGlvbnMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLURvLW5vdC1jcmVhdGUtc2V0dGluZ3Mtc2V0dGluZ3MtcHJvcGVydHktZG9jdW1lbnRhdGkucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCisgICAgZmlsZTovL211c2wvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLXN5c3RlbWQtc3BlY2lmaWMucGF0Y2ggXAorICAgIGZpbGU6Ly9tdXNsLzAwMDItRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaCBcCisgICAgZmlsZTovL211c2wvMDAwMy1GaXgtYnVpbGQtd2l0aC1tdXNsLWZvci1uLWRoY3A0LnBhdGNoIFwKKyAgICBmaWxlOi8vbXVzbC8wMDA0LUZpeC1idWlsZC13aXRoLW11c2wtc3lzdGVtZC1zcGVjaWZpYy5wYXRjaCBcCisiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmIyOWNjYzE1MzFiYTdlYmJhOTVhOTdmNDBjMjJiOTYzODM4ZThiNjgzMzc0NWVmZThlNmZiNzFmZDhmY2E3NyIKKworUyA9ICIke1dPUktESVJ9L05ldHdvcmtNYW5hZ2VyLSR7UFZ9IgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtaWZjZmctcmggXAorICAgIC0tZGlzYWJsZS1tb3JlLXdhcm5pbmdzIFwKKyAgICAtLXdpdGgtaXB0YWJsZXM9JHtzYmluZGlyfS9pcHRhYmxlcyBcCisgICAgLS13aXRoLXRlc3RzIFwKKyAgICAtLXdpdGgtbm10dWk9eWVzIFwKKyAgICAtLXdpdGgtdWRldi1kaXI9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2IFwKKyIKKworIyBzdG9sZW4gZnJvbSBodHRwczovL2dpdGh1Yi5jb20vdm9pZC1saW51eC92b2lkLXBhY2thZ2VzL2Jsb2IvbWFzdGVyL3NyY3BrZ3MvTmV0d29ya01hbmFnZXIvdGVtcGxhdGUKKyMgYXZvaWRzOgorIyB8IC4uL05ldHdvcmtNYW5hZ2VyLTEuMTYuMC9saWJubS1jb3JlL25tLWpzb24uYzoxMDY6NTA6IGVycm9yOiAnUlRMRF9ERUVQQklORCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ1JUTERfREVGQVVMVCc/CitDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAorICAgIC1EUlRMRF9ERUVQQklORD0wIFwKKyIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2xpYm5tLy5saWJzOiR7Qn0vbGlibm0tZ2xpYi8ubGliczoke0J9L2xpYm5tLXV0aWwvLmxpYnMiCit9CisKK1BBQ0tBR0VDT05GSUcgPz89ICJuc3MgaWZ1cGRvd24gZGhjbGllbnQgZG5zbWFzcSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQnLCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdjb25zb2xla2l0JywgJycsIGQpLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6NScsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dpZmkgcG9sa2l0JywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiIFwKKyAgICAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSAtLXdpdGgtc2Vzc2lvbi10cmFja2luZz1zeXN0ZW1kLCBcCisgICAgLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyLCBcCisiCitQQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS1lbmFibGUtcG9sa2l0LC0tZGlzYWJsZS1wb2xraXQscG9sa2l0IgorUEFDS0FHRUNPTkZJR1tibHVlejVdID0gIi0tZW5hYmxlLWJsdWV6NS1kdW4sLS1kaXNhYmxlLWJsdWV6NS1kdW4sYmx1ZXo1IgorIyBjb25zb2xla2l0IGlzIG5vdCBwaWNrZWQgYnkgc2hsaWJzLCBzbyBhZGQgaXQgdG8gUkRFUEVORFMgdG9vCitQQUNLQUdFQ09ORklHW2NvbnNvbGVraXRdID0gIi0td2l0aC1zZXNzaW9uLXRyYWNraW5nPWNvbnNvbGVraXQsLGNvbnNvbGVraXQsY29uc29sZWtpdCIKK1BBQ0tBR0VDT05GSUdbbW9kZW1tYW5hZ2VyXSA9ICItLXdpdGgtbW9kZW0tbWFuYWdlci0xPXllcywtLXdpdGgtbW9kZW0tbWFuYWdlci0xPW5vLG1vZGVtbWFuYWdlciIKK1BBQ0tBR0VDT05GSUdbcHBwXSA9ICItLWVuYWJsZS1wcHAsLS1kaXNhYmxlLXBwcCxwcHAscHBwIgorIyBVc2UgZnVsbCBmZWF0dXJlZCBkaGNwIGNsaWVudCBpbnN0ZWFkIG9mIGludGVybmFsIG9uZQorUEFDS0FHRUNPTkZJR1tkaGNsaWVudF0gPSAiLS13aXRoLWRoY2xpZW50PSR7YmFzZV9zYmluZGlyfS9kaGNsaWVudCwsLGRoY3AtY2xpZW50IgorUEFDS0FHRUNPTkZJR1tkbnNtYXNxXSA9ICItLXdpdGgtZG5zbWFzcT0ke2JpbmRpcn0vZG5zbWFzcSIKK1BBQ0tBR0VDT05GSUdbbnNzXSA9ICItLXdpdGgtY3J5cHRvPW5zcywsbnNzIgorUEFDS0FHRUNPTkZJR1tyZXNvbHZjb25mXSA9ICItLXdpdGgtcmVzb2x2Y29uZj0ke2Jhc2Vfc2JpbmRpcn0vcmVzb2x2Y29uZiwsLHJlc29sdmNvbmYiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWNyeXB0bz1nbnV0bHMsLGdudXRscyIKK1BBQ0tBR0VDT05GSUdbd2lmaV0gPSAiLS1lbmFibGUtd2lmaT15ZXMsLS1lbmFibGUtd2lmaT1ubywsd3BhLXN1cHBsaWNhbnQiCitQQUNLQUdFQ09ORklHW2lmdXBkb3duXSA9ICItLWVuYWJsZS1pZnVwZG93biwtLWRpc2FibGUtaWZ1cGRvd24iCitQQUNLQUdFQ09ORklHW3F0NC14MTEtZnJlZV0gPSAiLS1lbmFibGUtcXQsLS1kaXNhYmxlLXF0LHF0NC14MTEtZnJlZSIKK1BBQ0tBR0VDT05GSUdbY2xvdWQtc2V0dXBdID0gIi0td2l0aC1ubS1jbG91ZC1zZXR1cD15ZXMsLS13aXRoLW5tLWNsb3VkLXNldHVwPW5vIgorCitQQUNLQUdFUyA9KyAiIFwKKyAgJHtQTn0tbm10dWkgJHtQTn0tbm10dWktZG9jIFwKKyAgJHtQTn0tYWRzbCAke1BOfS1jbG91ZC1zZXR1cCBcCisiCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tY2xvdWQtc2V0dXAiCisKK0ZJTEVTXyR7UE59LWFkc2wgPSAiJHtsaWJkaXJ9L05ldHdvcmtNYW5hZ2VyLyR7UFZ9L2xpYm5tLWRldmljZS1wbHVnaW4tYWRzbC5zbyIKKworRklMRVNfJHtQTn0tY2xvdWQtc2V0dXAgPSAiIFwKKyAgICAke2xpYmV4ZWNkaXJ9L25tLWNsb3VkLXNldHVwIFwKKyAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L25tLWNsb3VkLXNldHVwLnNlcnZpY2UgXAorICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbm0tY2xvdWQtc2V0dXAudGltZXIgXAorICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci9kaXNwYXRjaGVyLmQvOTAtbm0tY2xvdWQtc2V0dXAuc2ggXAorICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci9kaXNwYXRjaGVyLmQvbm8td2FpdC5kLzkwLW5tLWNsb3VkLXNldHVwLnNoIFwKKyIKK0FMTE9XX0VNUFRZXyR7UE59LWNsb3VkLXNldHVwID0gIjEiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tY2xvdWQtc2V0dXAgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnY2xvdWQtc2V0dXAnLCAnbm0tY2xvdWQtc2V0dXAuc2VydmljZSBubS1jbG91ZC1zZXR1cC50aW1lcicsICcnLCBkKX0iCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7bGliZXhlY2Rpcn0gXAorICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8ke1BWfS8qLnNvIFwKKyAgICAke2xpYmRpcn0vTmV0d29ya01hbmFnZXIgXAorICAgICR7bm9uYXJjaF9saWJkaXJ9L05ldHdvcmtNYW5hZ2VyL2NvbmYuZCBcCisgICAgJHtub25hcmNoX2xpYmRpcn0vTmV0d29ya01hbmFnZXIvZGlzcGF0Y2hlci5kIFwKKyAgICAke25vbmFyY2hfbGliZGlyfS9OZXR3b3JrTWFuYWdlci9kaXNwYXRjaGVyLmQvcHJlLWRvd24uZCBcCisgICAgJHtub25hcmNoX2xpYmRpcn0vTmV0d29ya01hbmFnZXIvZGlzcGF0Y2hlci5kL3ByZS11cC5kIFwKKyAgICAke25vbmFyY2hfbGliZGlyfS9OZXR3b3JrTWFuYWdlci9kaXNwYXRjaGVyLmQvbm8td2FpdC5kIFwKKyAgICAke25vbmFyY2hfbGliZGlyfS9OZXR3b3JrTWFuYWdlci9WUE4gXAorICAgICR7bm9uYXJjaF9saWJkaXJ9L05ldHdvcmtNYW5hZ2VyL3N5c3RlbS1jb25uZWN0aW9ucyBcCisgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi8qIFwKKyAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IFwKKyAgICAke2xpYmRpcn0vcHBwZCBcCisiCisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJpcHRhYmxlcyBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2Ruc21hc3EnLCBkKX0gXAorIgorUkNPTkZMSUNUU18ke1BOfSA9ICJjb25ubWFuIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiBcCisgICAgJHtkYXRhZGlyfS9OZXR3b3JrTWFuYWdlci9nZGItY21kIFwKKyAgICAke2xpYmRpcn0vcHBwZC8qLyoubGEgXAorICAgICR7bGliZGlyfS9OZXR3b3JrTWFuYWdlci8qLmxhIFwKKyAgICAke2xpYmRpcn0vTmV0d29ya01hbmFnZXIvJHtQVn0vKi5sYSBcCisiCisKK0ZJTEVTXyR7UE59LW5tdHVpID0gIiBcCisgICAgJHtiaW5kaXJ9L25tdHVpIFwKKyAgICAke2JpbmRpcn0vbm10dWktZWRpdCBcCisgICAgJHtiaW5kaXJ9L25tdHVpLWNvbm5lY3QgXAorICAgICR7YmluZGlyfS9ubXR1aS1ob3N0bmFtZSBcCisiCisKK0ZJTEVTXyR7UE59LW5tdHVpLWRvYyA9ICIgXAorICAgICR7bWFuZGlyfS9tYW4xL25tdHVpKiBcCisiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJuZXR3b3JrLW1hbmFnZXIiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3lzdGVtZCcsICdOZXR3b3JrTWFuYWdlci5zZXJ2aWNlIE5ldHdvcmtNYW5hZ2VyLWRpc3BhdGNoZXIuc2VydmljZScsICcnLCBkKX0iCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywncmVzb2x2LWNvbmYnLCcnLGQpfSIKK0FMVEVSTkFUSVZFX1RBUkdFVFtyZXNvbHYtY29uZl0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCcke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLk5ldHdvcmtNYW5hZ2VyJywnJyxkKX0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcmVzb2x2LWNvbmZdID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZicsJycsZCl9IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vJHtCUE59LmluaXRkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uZXR3b3JrLW1hbmFnZXIKKworICAgIHJtIC1yZiAke0R9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKyAgICAgICAgIyBGb3IgcmVhZC1vbmx5IGZpbGVzeXN0ZW0sIGRvIG5vdCBjcmVhdGUgbGlua3MgZHVyaW5nIGJvb3R1cAorICAgICAgICBsbiAtc2YgLi4vcnVuL05ldHdvcmtNYW5hZ2VyL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLk5ldHdvcmtNYW5hZ2VyCisKKyAgICAgICAgIyBzeXN0ZW1kIHYyMTAgYW5kIG5ld2VyIGRvIG5vdCBuZWVkIHRoaXMgcnVsZSBmaWxlCisgICAgICAgIHJtICR7RH0vJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvODQtbm0tZHJpdmVycy5ydWxlcworICAgIGZpCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbmNvbm5lY3Qvb3BlbmNvbm5lY3QvMDAwMS10cm9qYW5zLXRuY2Mtd3JhcHBlci5weS1jb252ZXJ0LXRvLXB5dGhvbjMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbmNvbm5lY3Qvb3BlbmNvbm5lY3QvMDAwMS10cm9qYW5zLXRuY2Mtd3JhcHBlci5weS1jb252ZXJ0LXRvLXB5dGhvbjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjIzZWMxMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuY29ubmVjdC9vcGVuY29ubmVjdC8wMDAxLXRyb2phbnMtdG5jYy13cmFwcGVyLnB5LWNvbnZlcnQtdG8tcHl0aG9uMy5wYXRjaApAQCAtMCwwICsxLDcxIEBACitGcm9tIGRlNzhiY2FjNWUxZmQxM2RlMDM3MWM4ZTE0YjA2MmI4Nzg2YWRlNTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXggS3J1bW1lbmFjaGVyIDxtYXgua3J1bW1lbmFjaGVyQHRvcmFkZXguY29tPgorRGF0ZTogU3VuLCAyIEZlYiAyMDIwIDE1OjUzOjA1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHRyb2phbnMvdG5jYy13cmFwcGVyLnB5OiBjb252ZXJ0IHRvIHB5dGhvbjMKKworVXNlIDJ0bzMgdG8gY29udmVydCB0aGUgc2NyaXB0IHRvIHB5dGhvbjMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNYXggS3J1bW1lbmFjaGVyIDxtYXgua3J1bW1lbmFjaGVyQHRvcmFkZXguY29tPgorLS0tCisgdHJvamFucy90bmNjLXdyYXBwZXIucHkgfCAxNCArKysrKysrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90cm9qYW5zL3RuY2Mtd3JhcHBlci5weSBiL3Ryb2phbnMvdG5jYy13cmFwcGVyLnB5CitpbmRleCAwZDQ1ODdiZi4uMWE5YTFmNGQgMTAwNzU1CistLS0gYS90cm9qYW5zL3RuY2Mtd3JhcHBlci5weQorKysrIGIvdHJvamFucy90bmNjLXdyYXBwZXIucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vcHl0aG9uMgorKyMhL3Vzci9iaW4vcHl0aG9uMworIAorICMgTGlmdGVkIGZyb20gUnVzcyBEaWxsJ3MganVuaXBlci12cG4td3JhcC5weSwgdGh1czoKKyAjCitAQCAtMTgsMTkgKzE4LDE5IEBACisgCisgaW1wb3J0IHN1YnByb2Nlc3MKKyBpbXBvcnQgbWVjaGFuaXplCistaW1wb3J0IGNvb2tpZWxpYgorK2ltcG9ydCBodHRwLmNvb2tpZWphcgorIGltcG9ydCBnZXRwYXNzCisgaW1wb3J0IHN5cworIGltcG9ydCBvcworIGltcG9ydCB6aXBmaWxlCistaW1wb3J0IHVybGxpYgorK2ltcG9ydCB1cmxsaWIucmVxdWVzdCwgdXJsbGliLnBhcnNlLCB1cmxsaWIuZXJyb3IKKyBpbXBvcnQgc29ja2V0CisgaW1wb3J0IHNzbAorIGltcG9ydCBlcnJubworIGltcG9ydCBhcmdwYXJzZQorIGltcG9ydCBhdGV4aXQKKyBpbXBvcnQgc2lnbmFsCistaW1wb3J0IENvbmZpZ1BhcnNlcgorK2ltcG9ydCBjb25maWdwYXJzZXIKKyBpbXBvcnQgdGltZQorIGltcG9ydCBiaW5hc2NpaQorIGltcG9ydCBobWFjCitAQCAtMzksNyArMzksNyBAQCBpbXBvcnQgaGFzaGxpYgorIGRlZiBta2Rpcl9wKHBhdGgpOgorICAgICB0cnk6CisgICAgICAgICBvcy5ta2RpcihwYXRoKQorLSAgICBleGNlcHQgT1NFcnJvciwgZXhjOgorKyAgICBleGNlcHQgT1NFcnJvciBhcyBleGM6CisgICAgICAgICBpZiBleGMuZXJybm8gPT0gZXJybm8uRUVYSVNUIGFuZCBvcy5wYXRoLmlzZGlyKHBhdGgpOgorICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgIGVsc2U6CitAQCAtNjQsOSArNjQsOSBAQCBjbGFzcyBUbmNjOgorICAgICAgICAgICAgIGlmIHppcGZpbGUuWmlwRmlsZShzZWxmLnRuY2NfamFyLCAncicpLnRlc3R6aXAoKSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCkKKyAgICAgICAgIGV4Y2VwdDoKKy0gICAgICAgICAgICBwcmludCAnRG93bmxvYWRpbmcgdG5jYy5qYXIuLi4nCisrICAgICAgICAgICAgcHJpbnQoJ0Rvd25sb2FkaW5nIHRuY2MuamFyLi4uJykKKyAgICAgICAgICAgICBta2Rpcl9wKG9zLnBhdGguZXhwYW5kdXNlcignfi8uanVuaXBlcl9uZXR3b3JrcycpKQorLSAgICAgICAgICAgIHVybGxpYi51cmxyZXRyaWV2ZSgnaHR0cHM6Ly8nICsgc2VsZi52cG5faG9zdAorKyAgICAgICAgICAgIHVybGxpYi5yZXF1ZXN0LnVybHJldHJpZXZlKCdodHRwczovLycgKyBzZWxmLnZwbl9ob3N0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgJy9kYW5hLWNhY2hlZC9oYy90bmNjLmphcicsIHNlbGYudG5jY19qYXIpCisgCisgICAgICAgICB3aXRoIHppcGZpbGUuWmlwRmlsZShzZWxmLnRuY2NfamFyLCAncicpIGFzIGphcjoKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuY29ubmVjdC9vcGVuY29ubmVjdF84LjAzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5jb25uZWN0L29wZW5jb25uZWN0XzguMDMuYmIKaW5kZXggZWMzNmEzNy4uNTk3YzE5MiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5jb25uZWN0L29wZW5jb25uZWN0XzguMDMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5jb25uZWN0L29wZW5jb25uZWN0XzguMDMuYmIKQEAgLTIsMTEgKzIsMTQgQEAKIExJQ0VOU0UgPSAiTEdQTHYyLjEiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxHUEw7bWQ1PTI0M2I3MjVkNzFiYjVkZjRhMWU1OTIwYjM0NGI4NmFkIgogCi1TUkNfVVJJID0gImdpdDovL2dpdC5pbmZyYWRlYWQub3JnL3VzZXJzL2R3bXcyL29wZW5jb25uZWN0LmdpdCIKK1NSQ19VUkkgPSAiIFwKKyAgICBnaXQ6Ly9naXQuaW5mcmFkZWFkLm9yZy91c2Vycy9kd213Mi9vcGVuY29ubmVjdC5naXQgXAorICAgIGZpbGU6Ly8wMDAxLXRyb2phbnMtdG5jYy13cmFwcGVyLnB5LWNvbnZlcnQtdG8tcHl0aG9uMy5wYXRjaCBcCisiCiBTUkNSRVYgPSAiZWE3Mzg1MTk2OWFlN2E2ZWE1NGZkZDJkMmI4Yzk0Nzc2YWYyNGIyYSIKIAogREVQRU5EUyA9ICJ2cG5jIGxpYnhtbDIga3JiNSBnZXR0ZXh0LW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gImJhc2ggcHl0aG9uIgorUkRFUEVORFNfJHtQTn0gPSAiYmFzaCBweXRob24zLWNvcmUgdnBuYy1zY3JpcHQiCiAKIFBBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMgbHo0IGxpYnByb3h5IgogCkBAIC0yMiwxMCArMjUsNSBAQAogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIAotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtdnBuYy1zY3JpcHQ9JHtTWVNST09UX0RFU1RESVJ9JHtzeXNjb25mZGlyfS92cG5jL3ZwbmMtc2NyaXB0IFwKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLXZwbmMtc2NyaXB0PSR7c3lzY29uZmRpcn0vdnBuYy92cG5jLXNjcmlwdCBcCiAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zdGF0aWMiCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0gICAgIyBzY3JpcHQgaGFzIC91c3IvYmluL3B5dGhvbjIgcGF0aCBoYXJkY29kZWQKLSAgICBzZWQgLWkgLWUgJ3M9cHl0aG9uMlwuKj1weXRob249ZycgJHtTfS90cm9qYW5zL3RuY2Mtd3JhcHBlci5weQotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1uZXR3b3JrbWFuYWdlci9weXRob24tbmV0d29ya21hbmFnZXJfMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1uZXR3b3JrbWFuYWdlci9weXRob24tbmV0d29ya21hbmFnZXJfMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYWE0MWYxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbmV0d29ya21hbmFnZXIvcHl0aG9uLW5ldHdvcmttYW5hZ2VyXzIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiRWFzeSBjb21tdW5pY2F0aW9uIHdpdGggTmV0d29ya01hbmFnZXIgZnJvbSBQeXRob24iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2V2ZWFzL3B5dGhvbi1uZXR3b3JrbWFuYWdlciIKLUxJQ0VOU0UgPSAiWmxpYiIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGQ4YmFjMTc0YmY4NDIyYjE1MTIwMGU2Y2M3OGViZTQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmNjM4ZDg1NGEzNjM5ZmIzN2MwZTA2ZDEwOTJhNzcxZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZWYxZTM0ZDk4ZDdiZWM3Y2MzNjhlMGNhMGYyZTk3NDkzZjliNWViZTZkNzEwM2Y4ZjY0NjBjZmNhM2RjNmZjIgotCi1QWVBJX1BBQ0tBR0UgPSAicHl0aG9uLW5ldHdvcmttYW5hZ2VyIgotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAibmV0d29ya21hbmFnZXIgcHl0aG9uLWRidXMgcHl0aG9uLXNpeCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbmV0d29ya21hbmFnZXIvcHl0aG9uMy1uZXR3b3JrbWFuYWdlcl8yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW5ldHdvcmttYW5hZ2VyL3B5dGhvbjMtbmV0d29ya21hbmFnZXJfMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkxYTZlZGQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW5ldHdvcmttYW5hZ2VyL3B5dGhvbjMtbmV0d29ya21hbmFnZXJfMi4xLmJiCkBAIC0wLDAgKzEsMTMgQEAKK1NVTU1BUlkgPSAiRWFzeSBjb21tdW5pY2F0aW9uIHdpdGggTmV0d29ya01hbmFnZXIgZnJvbSBQeXRob24iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2V2ZWFzL3B5dGhvbi1uZXR3b3JrbWFuYWdlciIKK0xJQ0VOU0UgPSAiWmxpYiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGQ4YmFjMTc0YmY4NDIyYjE1MTIwMGU2Y2M3OGViZTQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmNjM4ZDg1NGEzNjM5ZmIzN2MwZTA2ZDEwOTJhNzcxZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZWYxZTM0ZDk4ZDdiZWM3Y2MzNjhlMGNhMGYyZTk3NDkzZjliNWViZTZkNzEwM2Y4ZjY0NjBjZmNhM2RjNmZjIgorCitQWVBJX1BBQ0tBR0UgPSAicHl0aG9uLW5ldHdvcmttYW5hZ2VyIgoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ID0gIm5ldHdvcmttYW5hZ2VyIHB5dGhvbjMtZGJ1cyBweXRob24zLXNpeCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZWxheWQvcmVsYXlkX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZWxheWQvcmVsYXlkX2dpdC5iYgppbmRleCA5OGRjNDFhLi5lMzEzNGU0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmVsYXlkL3JlbGF5ZF9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3JlbGF5ZC9yZWxheWRfZ2l0LmJiCkBAIC0xMiw2ICsxMiw4IEBACiBTUkNSRVYgPSAiYWQwYjI1YWQ3NDM0NWQzNjdjNjIzMTFlMTRiMjc5ZjVjY2I4ZWYxMyIKIFBWID0gIjAuMC4xK2dpdCR7U1JDUFZ9IgogCitVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCisKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIGluaGVyaXQgY21ha2UKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYV80LjEwLjExLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhXzQuMTAuMTEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmZGMxNWEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NhbWJhL3NhbWJhXzQuMTAuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMzMgKzAsMCBAQAotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuc2FtYmEub3JnLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotCi1MSUNFTlNFID0gIkdQTC0zLjArICYgTEdQTC0zLjArICYgR1BMLTIuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9MR1BMLTMuMDttZDU9YmZjY2ZlOTUyMjY5ZmZmMmI0MDdkZDExZjJmMzA4M2IgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvR1BMLTIuMDttZDU9ODAxZjgwOTgwZDE3MWRkNjQyNTYxMDgzM2EyMmRiZTYgIgotCi1TQU1CQV9NSVJST1IgPSAiaHR0cDovL3NhbWJhLm9yZy9zYW1iYS9mdHAiCi1NSVJST1JTICs9ICJcCi0ke1NBTUJBX01JUlJPUn0gICAgaHR0cDovL21pcnJvci5pbnRlcm5vZGUub24ubmV0L3B1Yi9zYW1iYSBcbiBcCi0ke1NBTUJBX01JUlJPUn0gICAgaHR0cDovL3d3dy5taXJyb3JzZXJ2aWNlLm9yZy9zaXRlcy9mdHAuc2FtYmEub3JnIFxuIFwKLSIKLQotU1JDX1VSSSA9ICIke1NBTUJBX01JUlJPUn0vc3RhYmxlL3NhbWJhLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9zbWIuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly8xNi1kby1ub3QtY2hlY2steHNsdHByb2MtbWFucGFnZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMjAtZG8tbm90LWltcG9ydC10YXJnZXQtbW9kdWxlLXdoaWxlLWNyb3NzLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMjEtYWRkLWNvbmZpZy1vcHRpb24td2l0aG91dC12YWxncmluZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uZXRkYl9kZWZpbmVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2dsaWJjX29ubHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaWNvbnYtNC43LjAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZG5zc2VydmVyLTQuNy4wLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NtYl9jb25mLTQuNy4wLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy4wM19zYW1iYSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXdhZi1hZGQtc3VwcG9ydC1vZi1jcm9zc19jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGliLXJlcGxhY2Utd3NjcmlwdC1Bdm9pZC1nZW5lcmF0aW5nLW5lc3RlZC1tYWluLWZ1bi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXV0aWxfc2VjLmMtTW92ZS1fX3RocmVhZC12YXJpYWJsZS10by1nbG9iYWwtc2NvcGUucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKLSAgICAgICAgICAgZmlsZTovL3NhbWJhLXBhbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zYW1iYS00LjMuOS1yZW1vdmUtZ2V0cHdlbnRfci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jbW9ja2EtdWludHB0cl90LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc2FtYmEtZml4LW11c2wtbGliLXdpdGhvdXQtaW5uZXRnci5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWViZDAyMWRlODQwMzEyZDdlMDg5NTllOGEzZDBiYTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjA5ZjQyMzJlMDRjNmVhYWQwZTNiOGUwMGNkODM3NjgzYTk2MGViYjk1YzFmZTMzNDllOTY4ZDFkMWRmZjg5NCIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAic2FtYmFcLSg/UDxwdmVyPjRcLjEwKFwuXGQrKSspLnRhci5neiIKLQotaW5oZXJpdCBzeXN0ZW1kIHdhZi1zYW1iYSBjcGFuLWJhc2UgcGVybG5hdGl2ZSB1cGRhdGUtcmMuZAotIyByZW1vdmUgZGVmYXVsdCBhZGRlZCBSREVQRU5EUyBvbiBwZXJsCi1SREVQRU5EU18ke1BOfV9yZW1vdmUgPSAicGVybCIKLQotREVQRU5EUyArPSAicmVhZGxpbmUgdmlydHVhbC9saWJpY29udiB6bGliIHBvcHQgbGlidGFsbG9jIGxpYnRkYiBsaWJ0ZXZlbnQgbGlibGRiIGxpYmJzZCBsaWJhaW8gbGlicGFtIGxpYnRhc24xIGphbnNzb24iCi0KLWluaGVyaXQgZmVhdHVyZXNfY2hlY2sKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwYW0iCi0KLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGlidGlycGMiCi1DRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKLUxERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWx0aXJwYyIKLQotSU5JVFNDUklQVF9OQU1FID0gInNhbWJhIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMjAgMyA1IC4gc3RvcCAyMCAwIDEgNiAuIgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LWJhc2UgJHtQTn0tYWQtZGMgd2luYmluZCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1iYXNlID0gIm5tYi5zZXJ2aWNlIHNtYi5zZXJ2aWNlIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LWFkLWRjID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FkLWRjJywgJ3NhbWJhLnNlcnZpY2UnLCAnJywgZCl9IgotU1lTVEVNRF9TRVJWSUNFX3dpbmJpbmQgPSAid2luYmluZC5zZXJ2aWNlIgotCi0jIFRoZXJlIGFyZSBwcmVyZXF1aXNpdGUgc2V0dGluZ3MgdG8gZW5hYmxlIGFkLWRjLCBzbyBkaXNhYmxlIHRoZSBzZXJ2aWNlIGJ5IGRlZmF1bHQuCi0jIFJlZmVyZW5jZToKLSMgaHR0cHM6Ly93aWtpLnNhbWJhLm9yZy9pbmRleC5waHAvU2V0dGluZ191cF9TYW1iYV9hc19hbl9BY3RpdmVfRGlyZWN0b3J5X0RvbWFpbl9Db250cm9sbGVyCi1TWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59LWFkLWRjID0gImRpc2FibGUiCi0KLSNjcm9zc19jb21waWxlIGNhbm5vdCB1c2UgcHJlZm9ya2VkIHByb2Nlc3MsIHNpbmNlIGZvcmsgcHJvY2VzcyBlYXJsaWVyIHRoYW4gcG9pbnQgc3VicHJvY2VzLnBvcGVuCi0jdG8gY3Jvc3MgUG9wZW4KLWV4cG9ydCBXQUZfTk9fUFJFRk9SSz0ieWVzIgotCi0jIFVzZSBrcmI1LiAgQnVpbGQgYWN0aXZlIGRvbWFpbiBjb250cm9sbGVyLgotIwotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQgemVyb2NvbmYnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIGFjbCBjdXBzIGFkLWRjIGdudXRscyBsZGFwIG1pdGtyYjUgXAotIgotCi1SREVQRU5EU18ke1BOfS1jdGRiLXRlc3RzICs9ICJiYXNoIHV0aWwtbGludXgtZ2V0b3B0IgotCi1QQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLWFjbC1zdXBwb3J0LC0td2l0aG91dC1hY2wtc3VwcG9ydCxhY2wiCi1QQUNLQUdFQ09ORklHW2ZhbV0gPSAiLS13aXRoLWZhbSwtLXdpdGhvdXQtZmFtLGdhbWluIgotUEFDS0FHRUNPTkZJR1tjdXBzXSA9ICItLWVuYWJsZS1jdXBzLC0tZGlzYWJsZS1jdXBzLGN1cHMiCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1tzYXNsXSA9ICIsLGN5cnVzLXNhc2wiCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kLC0td2l0aG91dC1zeXN0ZW1kLHN5c3RlbWQiCi1QQUNLQUdFQ09ORklHW2RtYXBpXSA9ICItLXdpdGgtZG1hcGksLS13aXRob3V0LWRtYXBpLGRtYXBpIgotUEFDS0FHRUNPTkZJR1t6ZXJvY29uZl0gPSAiLS1lbmFibGUtYXZhaGksLS1kaXNhYmxlLWF2YWhpLGF2YWhpIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCwiCi1QQUNLQUdFQ09ORklHW2x0dG5nXSA9ICItLXdpdGgtbHR0bmcsIC0td2l0aG91dC1sdHRuZyxsdHRuZy11c3QiCi1QQUNLQUdFQ09ORklHW2FyY2hpdmVdID0gIi0td2l0aC1saWJhcmNoaXZlLCAtLXdpdGhvdXQtbGliYXJjaGl2ZSwgbGliYXJjaGl2ZSIKLVBBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICIsICwgbGlidW53aW5kIgotUEFDS0FHRUNPTkZJR1tncGdtZV0gPSAiLC0td2l0aG91dC1ncGdtZSwsIgotUEFDS0FHRUNPTkZJR1tsbWRiXSA9ICIsLS13aXRob3V0LWxkYi1sbWRiLGxtZGIsIgotCi0jIEJ1aWxkaW5nIHRoZSBBRCAoQWN0aXZlIERpcmVjdG9yeSkgREMgKERvbWFpbiBDb250cm9sbGVyKSByZXF1aXJlcyBHbnVUTFMsCi0jIEFuZCBhZC1kYyBkb2Vzbid0IHdvcmsgd2l0aCBtaXRrcmI1IGZvciB2ZXJzaW9ucyBwcmlvciB0byA0LjcuMCBhY2NvcmRpbmcgdG86Ci0jIGh0dHA6Ly9zYW1iYS4yMjgzMzI1Lm40Lm5hYmJsZS5jb20vc2FtYmEtNC02LTYtVW5rbm93bi1kZXBlbmRlbmN5LWtkYy1pbi1zZXJ2aWNlLWtkYy1vYmpsaXN0LXRkNDcyMjA5Ni5odG1sCi0jIFNvIHRoZSB3b3JraW5nIGNvbWJpbmF0aW9uIGlzOgotIyAxKSBhZC1kYzogZW5hYmxlLCBnbnV0bHM6IGVuYWJsZSwgbWl0a3JiNTogZGlzYWJsZQotIyAyKSBhZC1kYzogZGlzYWJsZSwgZ251dGxzOiBlbmFibGUvZGlzYWJsZSwgbWl0a3JiNTogZW5hYmxlCi0jCi0jIFdlIGFyZSBub3cgYXQgNC43LjAsIHNvIHRha2UgdGhlIGFib3ZlIHdpdGggYSBncmFpbiBvZiBzYWx0LiBXZSBkbyBub3QgbmVlZCB0byBrbm93IHdoZXJlCi0jIGtyYjVrZGMgaXMgdW5sZXNzIGFkLWRjIGlzIGVuYWJsZWQsIGJ1dCB3ZSB0ZWxsIGNvbmZpZ3VyZSBhbnlob3cuCi0jCi1QQUNLQUdFQ09ORklHW2FkLWRjXSA9ICItLXdpdGgtZXhwZXJpbWVudGFsLW1pdC1hZC1kYywtLXdpdGhvdXQtYWQtZGMsLCIKLVBBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLWVuYWJsZS1nbnV0bHMsLS1kaXNhYmxlLWdudXRscyxnbnV0bHMsIgotUEFDS0FHRUNPTkZJR1ttaXRrcmI1XSA9ICItLXdpdGgtc3lzdGVtLW1pdGtyYjUgLS13aXRoLXN5c3RlbS1taXRrZGM9L3Vzci9zYmluL2tyYjVrZGMsLGtyYjUsIgotCi1TQU1CQTRfSURNQVBfTU9EVUxFUz0iaWRtYXBfYWQsaWRtYXBfcmlkLGlkbWFwX2FkZXgsaWRtYXBfaGFzaCxpZG1hcF90ZGIyIgotU0FNQkE0X1BEQl9NT0RVTEVTPSJwZGJfdGRic2FtLCR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2xkYXAnLCAncGRiX2xkYXAsJywgJycsIGQpfXBkYl9hZHMscGRiX3NtYnBhc3N3ZCxwZGJfd2JjX3NhbSxwZGJfc2FtYmE0IgotU0FNQkE0X0FVVEhfTU9EVUxFUz0iYXV0aF91bml4LGF1dGhfd2JjLGF1dGhfc2VydmVyLGF1dGhfbmV0bG9nb25kLGF1dGhfc2NyaXB0LGF1dGhfc2FtYmE0IgotU0FNQkE0X01PRFVMRVM9IiR7U0FNQkE0X0lETUFQX01PRFVMRVN9LCR7U0FNQkE0X1BEQl9NT0RVTEVTfSwke1NBTUJBNF9BVVRIX01PRFVMRVN9IgotCi0jIFRoZXNlIGxpYnJhcmllcyBhcmUgc3VwcG9zZWQgdG8gcmVwbGFjZSBvdGhlcnMgc3VwcGxpZWQgYnkgcGFja2FnZXMsIGJ1dCBkZWNvcmF0ZSB0aGUgbmFtZXMgb2YKLSMgLnNvIGZpbGVzIHNvIHRoZXJlIHdpbGwgbm90IGJlIGEgY29uZmxpY3QuICBUaGlzIGlzIG5vdCBkb25lIGNvbnNpc3RhbnRseSwgc28gYmUgdmVyeSBjYXJlZnVsCi0jIHdoZW4gYWRkaW5nIHRvIHRoaXMgbGlzdC4KLSMKLVNBTUJBNF9MSUJTPSJoZWltZGFsLGNtb2NrYSxOT05FIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWZocyBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1waWRkaXI9L3J1biBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1zb2NrZXRzLWRpcj0vcnVuL3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLW1vZHVsZXNkaXI9JHtsaWJkaXJ9L3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWxvY2tkaXI9JHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtY2FjaGVkaXI9JHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGgtaW5zdGFsbCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1zaGFyZWQtbW9kdWxlcz0ke1NBTUJBNF9NT0RVTEVTfSBcCi0gICAgICAgICAgICAgICAgIC0tYnVuZGxlZC1saWJyYXJpZXM9JHtTQU1CQTRfTElCU30gXAotICAgICAgICAgICAgICAgICAke0BvZS51dGlscy5jb25kaXRpb25hbCgnVEFSR0VUX0FSQ0gnLCAneDg2XzY0JywgJycsICctLWRpc2FibGUtZ2x1c3RlcmZzJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWNsdXN0ZXItc3VwcG9ydCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1wcm9maWxpbmctZGF0YSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1saWJpY29udj0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLXBhbSAtLXdpdGgtcGFtbW9kdWxlc2Rpcj0ke2Jhc2VfbGliZGlyfS9zZWN1cml0eSBcCi0gICAgICAgICAgICAgICAgIgotCi1MREZMQUdTICs9ICItV2wsLXoscmVscm8sLXosbm93ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGZvciBzZWN0aW9uIGluIDEgNSA3OyBkbwotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuJHNlY3Rpb24KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGN0ZGIvZG9jLyouJHNlY3Rpb24gJHtEfSR7bWFuZGlyfS9tYW4kc2VjdGlvbgotICAgIGRvbmUKLSAgICBmb3Igc2VjdGlvbiBpbiAxIDUgNyA4OyBkbwotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuJHNlY3Rpb24KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGRvY3MvbWFucGFnZXMvKi4kc2VjdGlvbiAke0R9JHttYW5kaXJ9L21hbiRzZWN0aW9uCi0gICAgZG9uZQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2Jpbi9kZWZhdWx0L3BhY2thZ2luZy9zeXN0ZW1kLyouc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8KLSAgICBzZWQgLWUgJ3MsXChFeGVjUmVsb2FkPVwpLipcKC9raWxsXCksXDEke2Jhc2VfYmluZGlyfVwyLCcgXAotICAgICAgICAtZSAncywvZXRjL3N5c2NvbmZpZy9zYW1iYSwke3N5c2NvbmZkaXJ9L2RlZmF1bHQvc2FtYmEsJyBcCi0gICAgICAgIC1pICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Lyouc2VydmljZQotCi0gICAgaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYWQtZGMnLCAneWVzJywgJ25vJywgZCl9IiA9ICJubyIgXTsgdGhlbgotICAgICAgICBybSAtZiAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zYW1iYS5zZXJ2aWNlCi0gICAgZmkKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotICAgIGluc3RhbGwgLW02NDQgcGFja2FnaW5nL3N5c3RlbWQvc2FtYmEuY29uZi50bXAgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9zYW1iYS5jb25mCi0gICAgZWNobyAiZCAke2xvY2Fsc3RhdGVkaXJ9L2xvZy9zYW1iYSAwNzU1IHJvb3Qgcm9vdCAtIiBcCi0gICAgICAgID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvc2FtYmEuY29uZgotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSAwNzU1IHBhY2thZ2luZy9zeXN2L3NhbWJhLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NhbWJhCi0gICAgc2VkIC1lICdzLC9vcHQvc2FtYmEvYmluLCR7c2JpbmRpcn0sZycgXAotICAgICAgICAtZSAncywvb3B0L3NhbWJhL3NtYi5jb25mLCR7c3lzY29uZmRpcn0vc2FtYmEvc21iLmNvbmYsZycgXAotICAgICAgICAtZSAncywvb3B0L3NhbWJhL2xvZywke2xvY2Fsc3RhdGVkaXJ9L2xvZy9zYW1iYSxnJyBcCi0gICAgICAgIC1lICdzLC9ldGMvaW5pdC5kL3NhbWJhLnNlcnZlciwke3N5c2NvbmZkaXJ9L2luaXQuZC9zYW1iYSxnJyBcCi0gICAgICAgIC1lICdzLC91c3IvYmluLCR7YmFzZV9iaW5kaXJ9LGcnIFwKLSAgICAgICAgLWkgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NhbWJhCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NhbWJhCi0gICAgZWNobyAiMTI3LjAuMC4xIGxvY2FsaG9zdCIgPiAke0R9JHtzeXNjb25mZGlyfS9zYW1iYS9sbWhvc3RzCi0gICAgaW5zdGFsbCAtbTY0NCAke1dPUktESVJ9L3NtYi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3NhbWJhL3NtYi5jb25mCi0gICAgaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuMDNfc2FtYmEgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvMDNfc2FtYmEKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAotICAgIGluc3RhbGwgLW02NDQgcGFja2FnaW5nL3N5c3RlbWQvc2FtYmEuc3lzY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvc2FtYmEKLQotICAgICMgdGhlIGl0ZW1zIGFyZSBmcm9tIGN0ZGIvdGVzdHMvcnVuX3Rlc3RzLnNoCi0gICAgZm9yIGQgaW4gb25ub2RlIHRha2VvdmVyIHRvb2wgZXZlbnRzY3JpcHRzIGN1bml0IHNpbXBsZSBjb21wbGV4OyBkbwotICAgICAgICB0ZXN0ZGlyPSR7RH0ke2RhdGFkaXJ9L2N0ZGItdGVzdHMvJGQKLSAgICAgICAgaW5zdGFsbCAtZCAkdGVzdGRpcgotICAgICAgICBjcCAke1N9L2N0ZGIvdGVzdHMvJGQvKi5zaCAkdGVzdGRpcgotICAgICAgICBjcCAtciAke1N9L2N0ZGIvdGVzdHMvJGQvc2NyaXB0cyAke1N9L2N0ZGIvdGVzdHMvJGQvc3R1YnMgJHRlc3RkaXIgfHwgdHJ1ZQotICAgIGRvbmUKLQotICAgICMgZml4IGZpbGUtcmRlcHMgcWEgd2FybmluZwotICAgIGlmIFsgLWYgJHtEfSR7YmluZGlyfS9vbm5vZGUgXTsgdGhlbgotICAgICAgICBzZWQgLWkgJ3M6XCgjIS9iaW4vXCliYXNoOlwxc2g6JyAke0R9JHtiaW5kaXJ9L29ubm9kZQotICAgIGZpCi0KLSAgICBjaG1vZCAwNzUwICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMuZCB8fCB0cnVlCi0gICAgcm0gLXJmICR7RH0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfS9sb2cKLSAgICAKLSAgICBmb3IgZiBpbiBzYW1iYS1ncHVwZGF0ZSBzYW1iYV91cGdyYWRlZG5zIHNhbWJhX3NwbnVwZGF0ZSBzYW1iYV9rY2Mgc2FtYmFfZG5zdXBkYXRlOyBkbwotICAgICAgICBpZiBbIC1mICIke0R9JHtzYmluZGlyfS8kZiIgXTsgdGhlbgotICAgICAgICAgICAgc2VkIC1pIC1lICdzLCR7UFlUSE9OfSwvdXNyL2Jpbi9lbnYgcHl0aG9uMyxnJyAke0R9JHtzYmluZGlyfS8kZgotICAgICAgICBmaQotICAgIGRvbmUKLSAgICBpZiBbIC1mICIke0R9JHtiaW5kaXJ9L3NhbWJhLXRvb2wiIF07IHRoZW4KLSAgICAgICAgc2VkIC1pIC1lICdzLCR7UFlUSE9OfSwvdXNyL2Jpbi9lbnYgcHl0aG9uMyxnJyAke0R9JHtiaW5kaXJ9L3NhbWJhLXRvb2wKLSAgICBmaQotICAgIAotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uMyAke1BOfS1waWRsIFwKLSAgICAgICAgICAgICAke1BOfS1kc2RiLW1vZHVsZXMgJHtQTn0tdGVzdHN1aXRlIHJlZ2lzdHJ5LXRvb2xzIFwKLSAgICAgICAgICAgICB3aW5iaW5kIFwKLSAgICAgICAgICAgICAke1BOfS1jb21tb24gJHtQTn0tYmFzZSAke1BOfS1hZC1kYyAke1BOfS1jdGRiLXRlc3RzIFwKLSAgICAgICAgICAgICBzbWJjbGllbnQgJHtQTn0tY2xpZW50ICR7UE59LXNlcnZlciAke1BOfS10ZXN0IgotCi1weXRob24gc2FtYmFfcG9wdWxhdGVfcGFja2FnZXMoKSB7Ci0gICAgZGVmIG1vZHVsZV9ob29rKGZpbGUsIHBrZywgcGF0dGVybiwgZm9ybWF0LCBiYXNlbmFtZSk6Ci0gICAgICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKLSAgICAgICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTXyVzLWJhc2UnICUgcG4sICcgJXMnICUgcGtnKQotCi0gICAgbWxwcmVmaXggPSBkLmdldFZhcignTUxQUkVGSVgnKSBvciAnJwotICAgIHBhbV9saWJkaXIgPSBkLmV4cGFuZCgnJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHknKQotICAgIHBhbV9wa2duYW1lID0gbWxwcmVmaXggKyAncGFtLXBsdWdpbiVzJwotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBhbV9saWJkaXIsICdecGFtXyguKilcLnNvJCcsIHBhbV9wa2duYW1lLCAnUEFNIHBsdWdpbiBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUpCi0KLSAgICBsaWJkaXIgPSBkLmdldFZhcignbGliZGlyJykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdebGliKC4qKVwuc29cLi4qJCcsICdsaWIlcycsICdTYW1iYSAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tY29tbW9uJywgcHJlcGVuZD1UcnVlLCBhbGxvd19saW5rcz1UcnVlKQotICAgIHBrZ2xpYmRpciA9ICclcy9zYW1iYScgJSBsaWJkaXIKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwa2dsaWJkaXIsICdebGliKC4qKVwuc28kJywgJ2xpYiVzJywgJ1NhbWJhICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScke1BOfS1jb21tb24nLCBwcmVwZW5kPVRydWUpCi0gICAgbW9kdWxlZGlyID0gJyVzL3NhbWJhL2F1dGgnICUgbGliZGlyCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbW9kdWxlZGlyLCAnXiguKilcLnNvJCcsICdzYW1iYS1hdXRoLSVzJywgJ1NhbWJhICVzIGF1dGhlbnRpY2F0aW9uIGJhY2tlbmQnLCBob29rPW1vZHVsZV9ob29rLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUpCi0gICAgbW9kdWxlZGlyID0gJyVzL3NhbWJhL3BkYicgJSBsaWJkaXIKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBtb2R1bGVkaXIsICdeKC4qKVwuc28kJywgJ3NhbWJhLXBkYi0lcycsICdTYW1iYSAlcyBwYXNzd29yZCBiYWNrZW5kJywgaG9vaz1tb2R1bGVfaG9vaywgZXh0cmFfZGVwZW5kcz0nJywgcHJlcGVuZD1UcnVlKQotfQotCi1QQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gInNhbWJhX3BvcHVsYXRlX3BhY2thZ2VzICIKLVBBQ0tBR0VTX0RZTkFNSUMgPSAic2FtYmEtYXV0aC0uKiBzYW1iYS1wZGItLioiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1iYXNlICR7UE59LXB5dGhvbjMgJHtQTn0tZHNkYi1tb2R1bGVzIHB5dGhvbjMiCi1SREVQRU5EU18ke1BOfS1weXRob24zICs9ICJweXRhbGxvYyBweXRob24zLXRkYiIKLQotRklMRVNfJHtQTn0tYmFzZSA9ICIke3NiaW5kaXJ9L25tYmQgXAotICAgICAgICAgICAgICAgICAgICAke3NiaW5kaXJ9L3NtYmQgXAotICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZCBcCi0gICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbm1iLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3NtYi5zZXJ2aWNlIgotCi1GSUxFU18ke1BOfS1hZC1kYyA9ICIke3NiaW5kaXJ9L3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc2FtYmEuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0va3JiNS9wbHVnaW5zL2tkYi9zYW1iYS5zbyBcCi0iCi1SREVQRU5EU18ke1BOfS1hZC1kYyA9ICJrcmI1LWtkYyIKLQotRklMRVNfJHtQTn0tY3RkYi10ZXN0cyA9ICIke2JpbmRpcn0vY3RkYl9ydW5fdGVzdHMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vY3RkYl9ydW5fY2x1c3Rlcl90ZXN0cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vY3RkYi9ub2RlcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vY3RkYi10ZXN0cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vY3RkYi90ZXN0cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL2N0ZGIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICIKLQotRklMRVNfJHtCUE59LWNvbW1vbiA9ICIke3N5c2NvbmZkaXJ9L2RlZmF1bHQgXAotICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3NhbWJhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kIFwKLSAgICAgICAgICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAotICAgICAgICAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL3NhbWJhIFwKLSIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS92ZnMvKi5zbyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2NoYXJzZXQvKi5zbyBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyouZGF0IFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vYXV0aC8qLnNvIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2N0ZGIvZXZlbnRzLyogXAotIgotCi1GSUxFU18ke1BOfS1kc2RiLW1vZHVsZXMgPSAiJHtsaWJkaXJ9L3NhbWJhL2xkYiIKLQotRklMRVNfJHtQTn0tdGVzdHN1aXRlID0gIiR7YmluZGlyfS9nZW50ZXN0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbG9ja3Rlc3QgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9tYXNrdGVzdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L25kcmR1bXAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJ0b3J0dXJlIgotCi1GSUxFU19yZWdpc3RyeS10b29scyA9ICIke2JpbmRpcn0vcmVnZGlmZiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vcmVncGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JlZ3NoZWxsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9yZWd0cmVlIgotCi1GSUxFU193aW5iaW5kID0gIiR7c2JpbmRpcn0vd2luYmluZGQgXAotICAgICAgICAgICAgICAgICAke2JpbmRpcn0vd2JpbmZvIFwKLSAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L250bG1fYXV0aCBcCi0gICAgICAgICAgICAgICAgICR7bGliZGlyfS9zYW1iYS9pZG1hcCBcCi0gICAgICAgICAgICAgICAgICR7bGliZGlyfS9zYW1iYS9uc3NfaW5mbyBcCi0gICAgICAgICAgICAgICAgICR7bGliZGlyfS93aW5iaW5kX2tyYjVfbG9jYXRvci5zbyBcCi0gICAgICAgICAgICAgICAgICR7bGliZGlyfS93aW5iaW5kLWtyYjUtbG9jYWxhdXRoLnNvIFwKLSAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvd2luYmluZCBcCi0gICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vd2luYmluZC5zZXJ2aWNlIgotCi1GSUxFU18ke1BOfS1weXRob24zID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi1GSUxFU19zbWJjbGllbnQgPSAiJHtiaW5kaXJ9L2NpZnNkZCBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwY2NsaWVudCBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmNhY2xzIFwKLSAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21iY2xpZW50IFwKLSAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21iY3F1b3RhcyBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmdldCBcCi0gICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYnNwb29sIFwKLSAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21idGFyIFwKLSAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21idHJlZSBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3NhbWJhL3NtYnNwb29sX2tyYjVfd3JhcHBlciIKLQotUkRFUEVORFNfJHtQTn0tcGlkbF9hcHBlbmQgPSAiIHBlcmwiCi1GSUxFU18ke1BOfS1waWRsID0gIiR7YmluZGlyfS9waWRsICR7ZGF0YWRpcn0vcGVybDUvUGFyc2UiCi0KLVJERVBFTkRTXyR7UE59LWNsaWVudCA9ICJcCi0gICAgc21iY2xpZW50IFwKLSAgICB3aW5iaW5kIFwKLSAgICByZWdpc3RyeS10b29scyBcCi0gICAgJHtQTn0tcGlkbCBcCi0gICAgIgotCi1BTExPV19FTVBUWV8ke1BOfS1jbGllbnQgPSAiMSIKLQotUkRFUEVORFNfJHtQTn0tc2VydmVyID0gIlwKLSAgICAke1BOfSBcCi0gICAgd2luYmluZCBcCi0gICAgcmVnaXN0cnktdG9vbHMgXAotICAgICIKLQotQUxMT1dfRU1QVFlfJHtQTn0tc2VydmVyID0gIjEiCi0KLVJERVBFTkRTXyR7UE59LXRlc3QgPSAiXAotICAgICR7UE59LWN0ZGItdGVzdHMgXAotICAgICR7UE59LXRlc3RzdWl0ZSBcCi0gICAgIgotCi1BTExPV19FTVBUWV8ke1BOfS10ZXN0ID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmFfNC4xMC4xMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zYW1iYS9zYW1iYV80LjEwLjEzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxZDhmYTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2FtYmEvc2FtYmFfNC4xMC4xMy5iYgpAQCAtMCwwICsxLDMzMyBAQAorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuc2FtYmEub3JnLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorCitMSUNFTlNFID0gIkdQTC0zLjArICYgTEdQTC0zLjArICYgR1BMLTIuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9MR1BMLTMuMDttZDU9YmZjY2ZlOTUyMjY5ZmZmMmI0MDdkZDExZjJmMzA4M2IgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vJHtDT1JFQkFTRX0vbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvR1BMLTIuMDttZDU9ODAxZjgwOTgwZDE3MWRkNjQyNTYxMDgzM2EyMmRiZTYgIgorCitTQU1CQV9NSVJST1IgPSAiaHR0cDovL3NhbWJhLm9yZy9zYW1iYS9mdHAiCitNSVJST1JTICs9ICJcCiske1NBTUJBX01JUlJPUn0gICAgaHR0cDovL21pcnJvci5pbnRlcm5vZGUub24ubmV0L3B1Yi9zYW1iYSBcbiBcCiske1NBTUJBX01JUlJPUn0gICAgaHR0cDovL3d3dy5taXJyb3JzZXJ2aWNlLm9yZy9zaXRlcy9mdHAuc2FtYmEub3JnIFxuIFwKKyIKKworU1JDX1VSSSA9ICIke1NBTUJBX01JUlJPUn0vc3RhYmxlL3NhbWJhLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9zbWIuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly8xNi1kby1ub3QtY2hlY2steHNsdHByb2MtbWFucGFnZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMjAtZG8tbm90LWltcG9ydC10YXJnZXQtbW9kdWxlLXdoaWxlLWNyb3NzLWNvbXBpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMjEtYWRkLWNvbmZpZy1vcHRpb24td2l0aG91dC12YWxncmluZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uZXRkYl9kZWZpbmVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2dsaWJjX29ubHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaWNvbnYtNC43LjAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZG5zc2VydmVyLTQuNy4wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NtYl9jb25mLTQuNy4wLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy4wM19zYW1iYSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXdhZi1hZGQtc3VwcG9ydC1vZi1jcm9zc19jb21waWxlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliLXJlcGxhY2Utd3NjcmlwdC1Bdm9pZC1nZW5lcmF0aW5nLW5lc3RlZC1tYWluLWZ1bi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXV0aWxfc2VjLmMtTW92ZS1fX3RocmVhZC12YXJpYWJsZS10by1nbG9iYWwtc2NvcGUucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKKyAgICAgICAgICAgZmlsZTovL3NhbWJhLXBhbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zYW1iYS00LjMuOS1yZW1vdmUtZ2V0cHdlbnRfci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jbW9ja2EtdWludHB0cl90LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc2FtYmEtZml4LW11c2wtbGliLXdpdGhvdXQtaW5uZXRnci5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTc5MDY1ODBiZjA2ZGFlMDg3ZTk5ZWY4MjU0ZjMyN2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDllYjY0MjZlOTdjYmY1MzhlNDE2ZTUxZWQ4NTM1OTMwMzgyNTEyYWQyZDEzZDVmZmQ3ZjQzMzZhYTdmYWY2MyIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAic2FtYmFcLSg/UDxwdmVyPjRcLjEwKFwuXGQrKSspLnRhci5neiIKKworaW5oZXJpdCBzeXN0ZW1kIHdhZi1zYW1iYSBjcGFuLWJhc2UgcGVybG5hdGl2ZSB1cGRhdGUtcmMuZAorIyByZW1vdmUgZGVmYXVsdCBhZGRlZCBSREVQRU5EUyBvbiBwZXJsCitSREVQRU5EU18ke1BOfV9yZW1vdmUgPSAicGVybCIKKworREVQRU5EUyArPSAicmVhZGxpbmUgdmlydHVhbC9saWJpY29udiB6bGliIHBvcHQgbGlidGFsbG9jIGxpYnRkYiBsaWJ0ZXZlbnQgbGlibGRiIGxpYmJzZCBsaWJhaW8gbGlicGFtIGxpYnRhc24xIGphbnNzb24iCisKK2luaGVyaXQgZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwYW0iCisKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGlidGlycGMiCitDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKK0xERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWx0aXJwYyIKKworSU5JVFNDUklQVF9OQU1FID0gInNhbWJhIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMjAgMyA1IC4gc3RvcCAyMCAwIDEgNiAuIgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59LWJhc2UgJHtQTn0tYWQtZGMgd2luYmluZCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1iYXNlID0gIm5tYi5zZXJ2aWNlIHNtYi5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWFkLWRjID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FkLWRjJywgJ3NhbWJhLnNlcnZpY2UnLCAnJywgZCl9IgorU1lTVEVNRF9TRVJWSUNFX3dpbmJpbmQgPSAid2luYmluZC5zZXJ2aWNlIgorCisjIFRoZXJlIGFyZSBwcmVyZXF1aXNpdGUgc2V0dGluZ3MgdG8gZW5hYmxlIGFkLWRjLCBzbyBkaXNhYmxlIHRoZSBzZXJ2aWNlIGJ5IGRlZmF1bHQuCisjIFJlZmVyZW5jZToKKyMgaHR0cHM6Ly93aWtpLnNhbWJhLm9yZy9pbmRleC5waHAvU2V0dGluZ191cF9TYW1iYV9hc19hbl9BY3RpdmVfRGlyZWN0b3J5X0RvbWFpbl9Db250cm9sbGVyCitTWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59LWFkLWRjID0gImRpc2FibGUiCisKKyNjcm9zc19jb21waWxlIGNhbm5vdCB1c2UgcHJlZm9ya2VkIHByb2Nlc3MsIHNpbmNlIGZvcmsgcHJvY2VzcyBlYXJsaWVyIHRoYW4gcG9pbnQgc3VicHJvY2VzLnBvcGVuCisjdG8gY3Jvc3MgUG9wZW4KK2V4cG9ydCBXQUZfTk9fUFJFRk9SSz0ieWVzIgorCisjIFVzZSBrcmI1LiAgQnVpbGQgYWN0aXZlIGRvbWFpbiBjb250cm9sbGVyLgorIworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQgemVyb2NvbmYnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIGFjbCBjdXBzIGFkLWRjIGdudXRscyBsZGFwIG1pdGtyYjUgXAorIgorCitSREVQRU5EU18ke1BOfS1jdGRiLXRlc3RzICs9ICJiYXNoIHV0aWwtbGludXgtZ2V0b3B0IgorCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLWFjbC1zdXBwb3J0LC0td2l0aG91dC1hY2wtc3VwcG9ydCxhY2wiCitQQUNLQUdFQ09ORklHW2ZhbV0gPSAiLS13aXRoLWZhbSwtLXdpdGhvdXQtZmFtLGdhbWluIgorUEFDS0FHRUNPTkZJR1tjdXBzXSA9ICItLWVuYWJsZS1jdXBzLC0tZGlzYWJsZS1jdXBzLGN1cHMiCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgorUEFDS0FHRUNPTkZJR1tzYXNsXSA9ICIsLGN5cnVzLXNhc2wiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kLC0td2l0aG91dC1zeXN0ZW1kLHN5c3RlbWQiCitQQUNLQUdFQ09ORklHW2RtYXBpXSA9ICItLXdpdGgtZG1hcGksLS13aXRob3V0LWRtYXBpLGRtYXBpIgorUEFDS0FHRUNPTkZJR1t6ZXJvY29uZl0gPSAiLS1lbmFibGUtYXZhaGksLS1kaXNhYmxlLWF2YWhpLGF2YWhpIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCwiCitQQUNLQUdFQ09ORklHW2x0dG5nXSA9ICItLXdpdGgtbHR0bmcsIC0td2l0aG91dC1sdHRuZyxsdHRuZy11c3QiCitQQUNLQUdFQ09ORklHW2FyY2hpdmVdID0gIi0td2l0aC1saWJhcmNoaXZlLCAtLXdpdGhvdXQtbGliYXJjaGl2ZSwgbGliYXJjaGl2ZSIKK1BBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICIsICwgbGlidW53aW5kIgorUEFDS0FHRUNPTkZJR1tncGdtZV0gPSAiLC0td2l0aG91dC1ncGdtZSwsIgorUEFDS0FHRUNPTkZJR1tsbWRiXSA9ICIsLS13aXRob3V0LWxkYi1sbWRiLGxtZGIsIgorCisjIEJ1aWxkaW5nIHRoZSBBRCAoQWN0aXZlIERpcmVjdG9yeSkgREMgKERvbWFpbiBDb250cm9sbGVyKSByZXF1aXJlcyBHbnVUTFMsCisjIEFuZCBhZC1kYyBkb2Vzbid0IHdvcmsgd2l0aCBtaXRrcmI1IGZvciB2ZXJzaW9ucyBwcmlvciB0byA0LjcuMCBhY2NvcmRpbmcgdG86CisjIGh0dHA6Ly9zYW1iYS4yMjgzMzI1Lm40Lm5hYmJsZS5jb20vc2FtYmEtNC02LTYtVW5rbm93bi1kZXBlbmRlbmN5LWtkYy1pbi1zZXJ2aWNlLWtkYy1vYmpsaXN0LXRkNDcyMjA5Ni5odG1sCisjIFNvIHRoZSB3b3JraW5nIGNvbWJpbmF0aW9uIGlzOgorIyAxKSBhZC1kYzogZW5hYmxlLCBnbnV0bHM6IGVuYWJsZSwgbWl0a3JiNTogZGlzYWJsZQorIyAyKSBhZC1kYzogZGlzYWJsZSwgZ251dGxzOiBlbmFibGUvZGlzYWJsZSwgbWl0a3JiNTogZW5hYmxlCisjCisjIFdlIGFyZSBub3cgYXQgNC43LjAsIHNvIHRha2UgdGhlIGFib3ZlIHdpdGggYSBncmFpbiBvZiBzYWx0LiBXZSBkbyBub3QgbmVlZCB0byBrbm93IHdoZXJlCisjIGtyYjVrZGMgaXMgdW5sZXNzIGFkLWRjIGlzIGVuYWJsZWQsIGJ1dCB3ZSB0ZWxsIGNvbmZpZ3VyZSBhbnlob3cuCisjCitQQUNLQUdFQ09ORklHW2FkLWRjXSA9ICItLXdpdGgtZXhwZXJpbWVudGFsLW1pdC1hZC1kYywtLXdpdGhvdXQtYWQtZGMsLCIKK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLWVuYWJsZS1nbnV0bHMsLS1kaXNhYmxlLWdudXRscyxnbnV0bHMsIgorUEFDS0FHRUNPTkZJR1ttaXRrcmI1XSA9ICItLXdpdGgtc3lzdGVtLW1pdGtyYjUgLS13aXRoLXN5c3RlbS1taXRrZGM9L3Vzci9zYmluL2tyYjVrZGMsLGtyYjUsIgorCitTQU1CQTRfSURNQVBfTU9EVUxFUz0iaWRtYXBfYWQsaWRtYXBfcmlkLGlkbWFwX2FkZXgsaWRtYXBfaGFzaCxpZG1hcF90ZGIyIgorU0FNQkE0X1BEQl9NT0RVTEVTPSJwZGJfdGRic2FtLCR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2xkYXAnLCAncGRiX2xkYXAsJywgJycsIGQpfXBkYl9hZHMscGRiX3NtYnBhc3N3ZCxwZGJfd2JjX3NhbSxwZGJfc2FtYmE0IgorU0FNQkE0X0FVVEhfTU9EVUxFUz0iYXV0aF91bml4LGF1dGhfd2JjLGF1dGhfc2VydmVyLGF1dGhfbmV0bG9nb25kLGF1dGhfc2NyaXB0LGF1dGhfc2FtYmE0IgorU0FNQkE0X01PRFVMRVM9IiR7U0FNQkE0X0lETUFQX01PRFVMRVN9LCR7U0FNQkE0X1BEQl9NT0RVTEVTfSwke1NBTUJBNF9BVVRIX01PRFVMRVN9IgorCisjIFRoZXNlIGxpYnJhcmllcyBhcmUgc3VwcG9zZWQgdG8gcmVwbGFjZSBvdGhlcnMgc3VwcGxpZWQgYnkgcGFja2FnZXMsIGJ1dCBkZWNvcmF0ZSB0aGUgbmFtZXMgb2YKKyMgLnNvIGZpbGVzIHNvIHRoZXJlIHdpbGwgbm90IGJlIGEgY29uZmxpY3QuICBUaGlzIGlzIG5vdCBkb25lIGNvbnNpc3RhbnRseSwgc28gYmUgdmVyeSBjYXJlZnVsCisjIHdoZW4gYWRkaW5nIHRvIHRoaXMgbGlzdC4KKyMKK1NBTUJBNF9MSUJTPSJoZWltZGFsLGNtb2NrYSxOT05FIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWZocyBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1waWRkaXI9L3J1biBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1zb2NrZXRzLWRpcj0vcnVuL3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLW1vZHVsZXNkaXI9JHtsaWJkaXJ9L3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWxvY2tkaXI9JHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtY2FjaGVkaXI9JHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGgtaW5zdGFsbCBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1zaGFyZWQtbW9kdWxlcz0ke1NBTUJBNF9NT0RVTEVTfSBcCisgICAgICAgICAgICAgICAgIC0tYnVuZGxlZC1saWJyYXJpZXM9JHtTQU1CQTRfTElCU30gXAorICAgICAgICAgICAgICAgICAke0BvZS51dGlscy5jb25kaXRpb25hbCgnVEFSR0VUX0FSQ0gnLCAneDg2XzY0JywgJycsICctLWRpc2FibGUtZ2x1c3RlcmZzJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWNsdXN0ZXItc3VwcG9ydCBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1wcm9maWxpbmctZGF0YSBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1saWJpY29udj0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXBhbSAtLXdpdGgtcGFtbW9kdWxlc2Rpcj0ke2Jhc2VfbGliZGlyfS9zZWN1cml0eSBcCisgICAgICAgICAgICAgICAgIgorCitMREZMQUdTICs9ICItV2wsLXoscmVscm8sLXosbm93ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGZvciBzZWN0aW9uIGluIDEgNSA3OyBkbworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuJHNlY3Rpb24KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGN0ZGIvZG9jLyouJHNlY3Rpb24gJHtEfSR7bWFuZGlyfS9tYW4kc2VjdGlvbgorICAgIGRvbmUKKyAgICBmb3Igc2VjdGlvbiBpbiAxIDUgNyA4OyBkbworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuJHNlY3Rpb24KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGRvY3MvbWFucGFnZXMvKi4kc2VjdGlvbiAke0R9JHttYW5kaXJ9L21hbiRzZWN0aW9uCisgICAgZG9uZQorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2Jpbi9kZWZhdWx0L3BhY2thZ2luZy9zeXN0ZW1kLyouc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8KKyAgICBzZWQgLWUgJ3MsXChFeGVjUmVsb2FkPVwpLipcKC9raWxsXCksXDEke2Jhc2VfYmluZGlyfVwyLCcgXAorICAgICAgICAtZSAncywvZXRjL3N5c2NvbmZpZy9zYW1iYSwke3N5c2NvbmZkaXJ9L2RlZmF1bHQvc2FtYmEsJyBcCisgICAgICAgIC1pICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Lyouc2VydmljZQorCisgICAgaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYWQtZGMnLCAneWVzJywgJ25vJywgZCl9IiA9ICJubyIgXTsgdGhlbgorICAgICAgICBybSAtZiAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zYW1iYS5zZXJ2aWNlCisgICAgZmkKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorICAgIGluc3RhbGwgLW02NDQgcGFja2FnaW5nL3N5c3RlbWQvc2FtYmEuY29uZi50bXAgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9zYW1iYS5jb25mCisgICAgZWNobyAiZCAke2xvY2Fsc3RhdGVkaXJ9L2xvZy9zYW1iYSAwNzU1IHJvb3Qgcm9vdCAtIiBcCisgICAgICAgID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvc2FtYmEuY29uZgorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSAwNzU1IHBhY2thZ2luZy9zeXN2L3NhbWJhLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NhbWJhCisgICAgc2VkIC1lICdzLC9vcHQvc2FtYmEvYmluLCR7c2JpbmRpcn0sZycgXAorICAgICAgICAtZSAncywvb3B0L3NhbWJhL3NtYi5jb25mLCR7c3lzY29uZmRpcn0vc2FtYmEvc21iLmNvbmYsZycgXAorICAgICAgICAtZSAncywvb3B0L3NhbWJhL2xvZywke2xvY2Fsc3RhdGVkaXJ9L2xvZy9zYW1iYSxnJyBcCisgICAgICAgIC1lICdzLC9ldGMvaW5pdC5kL3NhbWJhLnNlcnZlciwke3N5c2NvbmZkaXJ9L2luaXQuZC9zYW1iYSxnJyBcCisgICAgICAgIC1lICdzLC91c3IvYmluLCR7YmFzZV9iaW5kaXJ9LGcnIFwKKyAgICAgICAgLWkgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NhbWJhCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NhbWJhCisgICAgZWNobyAiMTI3LjAuMC4xIGxvY2FsaG9zdCIgPiAke0R9JHtzeXNjb25mZGlyfS9zYW1iYS9sbWhvc3RzCisgICAgaW5zdGFsbCAtbTY0NCAke1dPUktESVJ9L3NtYi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3NhbWJhL3NtYi5jb25mCisgICAgaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS92b2xhdGlsZXMuMDNfc2FtYmEgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvMDNfc2FtYmEKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAorICAgIGluc3RhbGwgLW02NDQgcGFja2FnaW5nL3N5c3RlbWQvc2FtYmEuc3lzY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvc2FtYmEKKworICAgICMgdGhlIGl0ZW1zIGFyZSBmcm9tIGN0ZGIvdGVzdHMvcnVuX3Rlc3RzLnNoCisgICAgZm9yIGQgaW4gb25ub2RlIHRha2VvdmVyIHRvb2wgZXZlbnRzY3JpcHRzIGN1bml0IHNpbXBsZSBjb21wbGV4OyBkbworICAgICAgICB0ZXN0ZGlyPSR7RH0ke2RhdGFkaXJ9L2N0ZGItdGVzdHMvJGQKKyAgICAgICAgaW5zdGFsbCAtZCAkdGVzdGRpcgorICAgICAgICBjcCAke1N9L2N0ZGIvdGVzdHMvJGQvKi5zaCAkdGVzdGRpcgorICAgICAgICBjcCAtciAke1N9L2N0ZGIvdGVzdHMvJGQvc2NyaXB0cyAke1N9L2N0ZGIvdGVzdHMvJGQvc3R1YnMgJHRlc3RkaXIgfHwgdHJ1ZQorICAgIGRvbmUKKworICAgICMgZml4IGZpbGUtcmRlcHMgcWEgd2FybmluZworICAgIGlmIFsgLWYgJHtEfSR7YmluZGlyfS9vbm5vZGUgXTsgdGhlbgorICAgICAgICBzZWQgLWkgJ3M6XCgjIS9iaW4vXCliYXNoOlwxc2g6JyAke0R9JHtiaW5kaXJ9L29ubm9kZQorICAgIGZpCisKKyAgICBjaG1vZCAwNzUwICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMuZCB8fCB0cnVlCisgICAgcm0gLXJmICR7RH0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biAke0R9JHtsb2NhbHN0YXRlZGlyfS9sb2cKKyAgICAKKyAgICBmb3IgZiBpbiBzYW1iYS1ncHVwZGF0ZSBzYW1iYV91cGdyYWRlZG5zIHNhbWJhX3NwbnVwZGF0ZSBzYW1iYV9rY2Mgc2FtYmFfZG5zdXBkYXRlOyBkbworICAgICAgICBpZiBbIC1mICIke0R9JHtzYmluZGlyfS8kZiIgXTsgdGhlbgorICAgICAgICAgICAgc2VkIC1pIC1lICdzLCR7UFlUSE9OfSwvdXNyL2Jpbi9lbnYgcHl0aG9uMyxnJyAke0R9JHtzYmluZGlyfS8kZgorICAgICAgICBmaQorICAgIGRvbmUKKyAgICBpZiBbIC1mICIke0R9JHtiaW5kaXJ9L3NhbWJhLXRvb2wiIF07IHRoZW4KKyAgICAgICAgc2VkIC1pIC1lICdzLCR7UFlUSE9OfSwvdXNyL2Jpbi9lbnYgcHl0aG9uMyxnJyAke0R9JHtiaW5kaXJ9L3NhbWJhLXRvb2wKKyAgICBmaQorICAgIAorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uMyAke1BOfS1waWRsIFwKKyAgICAgICAgICAgICAke1BOfS1kc2RiLW1vZHVsZXMgJHtQTn0tdGVzdHN1aXRlIHJlZ2lzdHJ5LXRvb2xzIFwKKyAgICAgICAgICAgICB3aW5iaW5kIFwKKyAgICAgICAgICAgICAke1BOfS1jb21tb24gJHtQTn0tYmFzZSAke1BOfS1hZC1kYyAke1BOfS1jdGRiLXRlc3RzIFwKKyAgICAgICAgICAgICBzbWJjbGllbnQgJHtQTn0tY2xpZW50ICR7UE59LXNlcnZlciAke1BOfS10ZXN0IgorCitweXRob24gc2FtYmFfcG9wdWxhdGVfcGFja2FnZXMoKSB7CisgICAgZGVmIG1vZHVsZV9ob29rKGZpbGUsIHBrZywgcGF0dGVybiwgZm9ybWF0LCBiYXNlbmFtZSk6CisgICAgICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKKyAgICAgICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTXyVzLWJhc2UnICUgcG4sICcgJXMnICUgcGtnKQorCisgICAgbWxwcmVmaXggPSBkLmdldFZhcignTUxQUkVGSVgnKSBvciAnJworICAgIHBhbV9saWJkaXIgPSBkLmV4cGFuZCgnJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHknKQorICAgIHBhbV9wa2duYW1lID0gbWxwcmVmaXggKyAncGFtLXBsdWdpbiVzJworICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBhbV9saWJkaXIsICdecGFtXyguKilcLnNvJCcsIHBhbV9wa2duYW1lLCAnUEFNIHBsdWdpbiBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUpCisKKyAgICBsaWJkaXIgPSBkLmdldFZhcignbGliZGlyJykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdebGliKC4qKVwuc29cLi4qJCcsICdsaWIlcycsICdTYW1iYSAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tY29tbW9uJywgcHJlcGVuZD1UcnVlLCBhbGxvd19saW5rcz1UcnVlKQorICAgIHBrZ2xpYmRpciA9ICclcy9zYW1iYScgJSBsaWJkaXIKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwa2dsaWJkaXIsICdebGliKC4qKVwuc28kJywgJ2xpYiVzJywgJ1NhbWJhICVzIGxpYnJhcnknLCBleHRyYV9kZXBlbmRzPScke1BOfS1jb21tb24nLCBwcmVwZW5kPVRydWUpCisgICAgbW9kdWxlZGlyID0gJyVzL3NhbWJhL2F1dGgnICUgbGliZGlyCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbW9kdWxlZGlyLCAnXiguKilcLnNvJCcsICdzYW1iYS1hdXRoLSVzJywgJ1NhbWJhICVzIGF1dGhlbnRpY2F0aW9uIGJhY2tlbmQnLCBob29rPW1vZHVsZV9ob29rLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUpCisgICAgbW9kdWxlZGlyID0gJyVzL3NhbWJhL3BkYicgJSBsaWJkaXIKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBtb2R1bGVkaXIsICdeKC4qKVwuc28kJywgJ3NhbWJhLXBkYi0lcycsICdTYW1iYSAlcyBwYXNzd29yZCBiYWNrZW5kJywgaG9vaz1tb2R1bGVfaG9vaywgZXh0cmFfZGVwZW5kcz0nJywgcHJlcGVuZD1UcnVlKQorfQorCitQQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gInNhbWJhX3BvcHVsYXRlX3BhY2thZ2VzICIKK1BBQ0tBR0VTX0RZTkFNSUMgPSAic2FtYmEtYXV0aC0uKiBzYW1iYS1wZGItLioiCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1iYXNlICR7UE59LXB5dGhvbjMgJHtQTn0tZHNkYi1tb2R1bGVzIHB5dGhvbjMiCitSREVQRU5EU18ke1BOfS1weXRob24zICs9ICJweXRhbGxvYyBweXRob24zLXRkYiIKKworRklMRVNfJHtQTn0tYmFzZSA9ICIke3NiaW5kaXJ9L25tYmQgXAorICAgICAgICAgICAgICAgICAgICAke3NiaW5kaXJ9L3NtYmQgXAorICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZCBcCisgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbm1iLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3NtYi5zZXJ2aWNlIgorCitGSUxFU18ke1BOfS1hZC1kYyA9ICIke3NiaW5kaXJ9L3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc2FtYmEuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0va3JiNS9wbHVnaW5zL2tkYi9zYW1iYS5zbyBcCisiCitSREVQRU5EU18ke1BOfS1hZC1kYyA9ICJrcmI1LWtkYyIKKworRklMRVNfJHtQTn0tY3RkYi10ZXN0cyA9ICIke2JpbmRpcn0vY3RkYl9ydW5fdGVzdHMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vY3RkYl9ydW5fY2x1c3Rlcl90ZXN0cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vY3RkYi9ub2RlcyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vY3RkYi10ZXN0cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vY3RkYi90ZXN0cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL2N0ZGIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICIKKworRklMRVNfJHtCUE59LWNvbW1vbiA9ICIke3N5c2NvbmZkaXJ9L2RlZmF1bHQgXAorICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3NhbWJhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvc2FtYmEgXAorICAgICAgICAgICAgICAgICAgICAgICAke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL3NhbWJhIFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS92ZnMvKi5zbyBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2NoYXJzZXQvKi5zbyBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9LyouZGF0IFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vYXV0aC8qLnNvIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2N0ZGIvZXZlbnRzLyogXAorIgorCitGSUxFU18ke1BOfS1kc2RiLW1vZHVsZXMgPSAiJHtsaWJkaXJ9L3NhbWJhL2xkYiIKKworRklMRVNfJHtQTn0tdGVzdHN1aXRlID0gIiR7YmluZGlyfS9nZW50ZXN0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbG9ja3Rlc3QgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9tYXNrdGVzdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L25kcmR1bXAgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zbWJ0b3J0dXJlIgorCitGSUxFU19yZWdpc3RyeS10b29scyA9ICIke2JpbmRpcn0vcmVnZGlmZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vcmVncGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JlZ3NoZWxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9yZWd0cmVlIgorCitGSUxFU193aW5iaW5kID0gIiR7c2JpbmRpcn0vd2luYmluZGQgXAorICAgICAgICAgICAgICAgICAke2JpbmRpcn0vd2JpbmZvIFwKKyAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L250bG1fYXV0aCBcCisgICAgICAgICAgICAgICAgICR7bGliZGlyfS9zYW1iYS9pZG1hcCBcCisgICAgICAgICAgICAgICAgICR7bGliZGlyfS9zYW1iYS9uc3NfaW5mbyBcCisgICAgICAgICAgICAgICAgICR7bGliZGlyfS93aW5iaW5kX2tyYjVfbG9jYXRvci5zbyBcCisgICAgICAgICAgICAgICAgICR7bGliZGlyfS93aW5iaW5kLWtyYjUtbG9jYWxhdXRoLnNvIFwKKyAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvd2luYmluZCBcCisgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vd2luYmluZC5zZXJ2aWNlIgorCitGSUxFU18ke1BOfS1weXRob24zID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorCitGSUxFU19zbWJjbGllbnQgPSAiJHtiaW5kaXJ9L2NpZnNkZCBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3JwY2NsaWVudCBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmNhY2xzIFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21iY2xpZW50IFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21iY3F1b3RhcyBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYmdldCBcCisgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3NtYnNwb29sIFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21idGFyIFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc21idHJlZSBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3NhbWJhL3NtYnNwb29sX2tyYjVfd3JhcHBlciIKKworUkRFUEVORFNfJHtQTn0tcGlkbF9hcHBlbmQgPSAiIHBlcmwiCitGSUxFU18ke1BOfS1waWRsID0gIiR7YmluZGlyfS9waWRsICR7ZGF0YWRpcn0vcGVybDUvUGFyc2UiCisKK1JERVBFTkRTXyR7UE59LWNsaWVudCA9ICJcCisgICAgc21iY2xpZW50IFwKKyAgICB3aW5iaW5kIFwKKyAgICByZWdpc3RyeS10b29scyBcCisgICAgJHtQTn0tcGlkbCBcCisgICAgIgorCitBTExPV19FTVBUWV8ke1BOfS1jbGllbnQgPSAiMSIKKworUkRFUEVORFNfJHtQTn0tc2VydmVyID0gIlwKKyAgICAke1BOfSBcCisgICAgd2luYmluZCBcCisgICAgcmVnaXN0cnktdG9vbHMgXAorICAgICIKKworQUxMT1dfRU1QVFlfJHtQTn0tc2VydmVyID0gIjEiCisKK1JERVBFTkRTXyR7UE59LXRlc3QgPSAiXAorICAgICR7UE59LWN0ZGItdGVzdHMgXAorICAgICR7UE59LXRlc3RzdWl0ZSBcCisgICAgIgorCitBTExPV19FTVBUWV8ke1BOfS10ZXN0ID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdWZ3L3Vmd18wLjMzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Vmdy91ZndfMC4zMy5iYgppbmRleCA2ZmYxMDNjLi40MmZjMjYyIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdWZ3L3Vmd18wLjMzLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS91ZncvdWZ3XzAuMzMuYmIKQEAgLTE3LDE1ICsxNywxOCBAQAogICAgICAgICAgICBmaWxlOi8vMDAwNC1scDEwMzk3MjkucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNS1scDExOTExOTcucGF0Y2ggXAogIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9sYXVuY2hwYWQubmV0L3VmdyIKKwogU1JDX1VSSVttZDVzdW1dID0gIjM3NDdiNDUzZDc2NzA5ZTVhOTlkYTIwOWZjMGJiNWY1IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmODVhODA4NGFkMzUzOWI1NDdiZWMwOTcyODY5NDgyMzMxODhjOTcxZjQ5ODg5MDMxNmRlYzE3MGJkZDFkYTgiCiAKLWluaGVyaXQgc2V0dXB0b29scyBmZWF0dXJlc19jaGVjaworaW5oZXJpdCBzZXR1cHRvb2xzMyBmZWF0dXJlc19jaGVjawogCiBSREVQRU5EU18ke1BOfSA9ICIgXAogICAgICAgICAgICAgICAgICAgaXB0YWJsZXMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1tb2R1bGVzIFwKKyAgICAgICAgICAgICAgICAgIHB5dGhvbjMgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1tb2R1bGVzIFwKICAgICAgICAgICAgICAgICAgIgogCiBSUkVDT01NRU5EU18ke1BOfSA9ICIgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3ZwbmMvdnBuY18wLjUuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS92cG5jL3ZwbmNfMC41LjMuYmIKaW5kZXggZWEyMTc5OS4uNTRlODU1YSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3ZwbmMvdnBuY18wLjUuMy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvdnBuYy92cG5jXzAuNS4zLmJiCkBAIC0yOCw2ICsyOCw4IEBACiBQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLCxnbnV0bHMiCiBQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIiwsb3BlbnNzbCIKIAorUEFDS0FHRVMgPSsgIiR7UE59LXNjcmlwdCIKKwogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogaW5oZXJpdCBwZXJsbmF0aXZlIHBrZ2NvbmZpZwpAQCAtNTQsNiArNTYsOCBAQAogICAgIGluc3RhbGwgLW0gNzU1ICR7RH0ke3N5c2NvbmZkaXJ9L3ZwbmMvdnBuYy1zY3JpcHQgJHtTWVNST09UX0RFU1RESVJ9JHtzeXNjb25mZGlyfS92cG5jCiB9CiAKK0ZJTEVTXyR7UE59LXNjcmlwdCA9ICIke3N5c2NvbmZkaXJ9L3ZwbmMvdnBuYy1zY3JpcHQiCisKIENPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3ZwbmMvZGVmYXVsdC5jb25mIgotUkRFUEVORFNfJHtQTn0gPSAicGVybC1tb2R1bGUtaW8tZmlsZSIKK1JERVBFTkRTXyR7UE59ID0gInBlcmwtbW9kdWxlLWlvLWZpbGUgJHtQTn0tc2NyaXB0IgogUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS10dW4iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvd29sZnNzbC93b2xmc3NsXzQuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtY29ubmVjdGl2aXR5L3dvbGZzc2wvd29sZnNzbF80LjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZjOGNkMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvd29sZnNzbC93b2xmc3NsXzQuMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJ3b2xmU1NMIExpZ2h0d2VpZ2h0IEVtYmVkZGVkIFNTTC9UTFMgTGlicmFyeSIKLURFU0NSSVBUSU9OID0gIndvbGZTU0wsIGZvcm1lcmx5IEN5YVNTTCwgaXMgYSBsaWdodHdlaWdodCBTU0wgbGlicmFyeSB3cml0dGVuIFwKLSAgICAgICAgICAgICAgIGluIEMgYW5kIG9wdGltaXplZCBmb3IgZW1iZWRkZWQgYW5kIFJUT1MgZW52aXJvbm1lbnRzLiBJdCBjYW4gXAotICAgICAgICAgICAgICAgYmUgdXAgdG8gMjAgdGltZXMgc21hbGxlciB0aGFuIE9wZW5TU0wgd2hpbGUgc3RpbGwgc3VwcG9ydGluZyBcCi0gICAgICAgICAgICAgICBhIGZ1bGwgVExTIGNsaWVudCBhbmQgc2VydmVyLCB1cCB0byBUTFMgMS4zIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cud29sZnNzbC5jb20vcHJvZHVjdHMvd29sZnNzbCIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dvbGZzc2wvd29sZnNzbC9pc3N1ZXMiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLVBST1ZJREVTICs9ICJjeWFzc2wiCi1SUFJPVklERVNfJHtQTn0gPSAiY3lhc3NsIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vd29sZlNTTC93b2xmc3NsLmdpdDtwcm90b2NvbD1odHRwcyIKLVNSQ1JFViA9ICIzZjEzYjQ5ZmEzMThmYmQzMjE2ZDdkYTM2ZDk0MmU3YzI3NmQzNDEzIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotQkJDTEFTU0VYVEVORCArPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvbm5lY3Rpdml0eS93b2xmc3NsL3dvbGZzc2xfNC40LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvd29sZnNzbC93b2xmc3NsXzQuNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiN2IwZDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb25uZWN0aXZpdHkvd29sZnNzbC93b2xmc3NsXzQuNC4wLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAid29sZlNTTCBMaWdodHdlaWdodCBFbWJlZGRlZCBTU0wvVExTIExpYnJhcnkiCitERVNDUklQVElPTiA9ICJ3b2xmU1NMLCBmb3JtZXJseSBDeWFTU0wsIGlzIGEgbGlnaHR3ZWlnaHQgU1NMIGxpYnJhcnkgd3JpdHRlbiBcCisgICAgICAgICAgICAgICBpbiBDIGFuZCBvcHRpbWl6ZWQgZm9yIGVtYmVkZGVkIGFuZCBSVE9TIGVudmlyb25tZW50cy4gSXQgY2FuIFwKKyAgICAgICAgICAgICAgIGJlIHVwIHRvIDIwIHRpbWVzIHNtYWxsZXIgdGhhbiBPcGVuU1NMIHdoaWxlIHN0aWxsIHN1cHBvcnRpbmcgXAorICAgICAgICAgICAgICAgYSBmdWxsIFRMUyBjbGllbnQgYW5kIHNlcnZlciwgdXAgdG8gVExTIDEuMyIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LndvbGZzc2wuY29tL3Byb2R1Y3RzL3dvbGZzc2wiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS93b2xmc3NsL3dvbGZzc2wvaXNzdWVzIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitQUk9WSURFUyArPSAiY3lhc3NsIgorUlBST1ZJREVTXyR7UE59ID0gImN5YXNzbCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3dvbGZTU0wvd29sZnNzbC5naXQ7cHJvdG9jb2w9aHR0cHMiCitTUkNSRVYgPSAiZTExNmM4OWE1OGFmNzUwNDIxZDgyZWNlMTNmODA1MTZkMmJkZTAyZSIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0JCQ0xBU1NFWFRFTkQgKz0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtbmV0d29ya2luZy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS1uZXR3b3JraW5nLmJiCmluZGV4IDkxMDliMTAuLjFlMTBjMzAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS1uZXR3b3JraW5nLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS1uZXR3b3JraW5nLmJiCkBAIC0zNiw3ICszNiw3IEBACiAgICAgbGliZG5ldCB1ZncgY2l2ZXR3ZWIgZnJlZXJhZGl1cyBrZWEgZGFxIFwKICAgICBtYmVkdGxzIHJlbGF5ZCBzbm9ydCBkaGNwY2QgcmRhdGUgdmxhbiB2cG5jIFwKICAgICBpbmV0dXRpbHMgd29sZnNzbCBsZnRwIG1pbml1cG5wZCBuZXR3b3JrbWFuYWdlciBcCi0gICAgbmV0d29ya21hbmFnZXItb3BlbnZwbiByZGlzdCBuYW5vbXNnIHB5dGhvbi1uZXR3b3JrbWFuYWdlciBcCisgICAgbmV0d29ya21hbmFnZXItb3BlbnZwbiByZGlzdCBuYW5vbXNnIHB5dGhvbjMtbmV0d29ya21hbmFnZXIgXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAiYmx1ZXRvb3RoIHgxMSIsICJibHVlbWFuIiwgIiIsIGQpfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwYW0iLCAic2FtYmEiLCAiIiwgZCl9IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInBhbSIsICJzYW1iYSIsICIiLCBkKX0gXApAQCAtNTUsNyArNTUsNyBAQAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtbmV0d29ya2luZy1kYWVtb25zX3JlbW92ZV9saWJjLW11c2wgPSAib3BlbnNhZiIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtbmV0d29ya2luZy1kZXZ0b29scyA9ICJcCi0gICAgcHl0aG9uLWxkYXAgZ3JwYyBcCisgICAgcHl0aG9uMy1sZGFwIFwKICAgICAiCiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW5ldHdvcmtpbmctZXh0ZW5kZWQgPSAiXApAQCAtMTA3LDEyICsxMDcsMTIgQEAKICAgICB0dW5jdGwgZG92ZWNvdCBpcHZzYWRtIHN0dW5uZWwgY2hyb255IHNwaWNlLXByb3RvY29sIFwKICAgICB1c2JyZWRpciBudG9wIHdpcmVzaGFyayB0bmZ0cCBsa3NjdHAtdG9vbHMgXAogICAgIGNpbS1zY2hlbWEtZG9jcyBjaW0tc2NoZW1hLWZpbmFsIGNpbS1zY2hlbWEtZXhwZXIgXAotICAgIGxpYm1lbWNhY2hlZCBzbWNyb3V0ZSBsaWJ0ZXZlbnQgaXBjYWxjIGMtYXJlcyB1ZnRwIFwKKyAgICBsaWJtZW1jYWNoZWQgc21jcm91dGUgbGlidGV2ZW50IGlwY2FsYyB1ZnRwIFwKICAgICBudGltZWQgbGludXgtYXRtIHNzbXRwIG9wZW52cG4gcmRtYS1jb3JlIFwKICAgICBpZnRvcCBhb2V0b29scyB0Y3BzbGljZSB0Y3BkdW1wIGxpYnRhbGxvYyBtZW1jYWNoZWQgbnV0dGNwIG5ldGNhdCBcCiAgICAgbmV0Y2F0LW9wZW5ic2QgZmV0Y2htYWlsIHlwLXRvb2xzIHlwYmluZC1tdCB5cC10b29scyBcCiAgICAgYXJwdGFibGVzIG1hY2NoYW5nZXIgbmdodHRwMiBzdHJvbmdzd2FuIGZwaW5nIFwKLSAgICBkbnNzZWMtY29uZiBsaWJlc210cCBjaWZzLXV0aWxzIG9wZW4taXNucyBcCisgICAgbGliZXNtdHAgY2lmcy11dGlscyBvcGVuLWlzbnMgXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAicGFtIiwgImxpYmxkYiIsICIiLCBkKX0gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJMSUNFTlNFX0ZMQUdTX1dISVRFTElTVCIsICJub24tY29tbWVyY2lhbCIsICJuZXRwZXJmIiwgIiIsIGQpfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCJUUkFOU0xBVEVEX1RBUkdFVF9BUkNIIiwgImk1ODYgeDg2LTY0IiwgInNwaWNlIiwgIiIsIGQpfSBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2N5cnVzLXNhc2wvY3lydXMtc2FzbC9DVkUtMjAxOS0xOTkwNi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsL0NWRS0yMDE5LTE5OTA2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5NDc4MGYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2N5cnVzLXNhc2wvY3lydXMtc2FzbC9DVkUtMjAxOS0xOTkwNi5wYXRjaApAQCAtMCwwICsxLDM1IEBACitGcm9tIDk0ZmU2ZWI5ZWEyNjkxZjRhN2MzMmZiZjJkMGM3YzQ1NDk5NWI2NjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyNyBGZWIgMjAyMCAxMTowODo1NyArMDgwMAorU3ViamVjdDogW1BBVENIXSBGaXggIzU4NworCitPZmYgYnkgb25lIGVycm9yIGluIGNvbW1vbi5jLCBDVkUtMjAxOS0xOTkwNi4KKworVGhhbmtzIHRvIFN0ZXBoYW4gWmVpc2JlcmcgZm9yIHJlcG9ydGluZworCitDVkU6IENWRS0yMDE5LTE5OTA2CisKK1Vwc3RyZWFtLVN0YXV0czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9jeXJ1c2ltYXAvY3lydXMtc2FzbAorL2NvbW1pdC9kY2M5ZjUxY2JkNGVkNjIyY2ZiMGY5YjFjMTQxZWIyZmZlM2IxMmYxXQorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgbGliL2NvbW1vbi5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliL2NvbW1vbi5jIGIvbGliL2NvbW1vbi5jCitpbmRleCAzMDUzMTFkLi40NDVjNWQ1IDEwMDY0NAorLS0tIGEvbGliL2NvbW1vbi5jCisrKysgYi9saWIvY29tbW9uLmMKK0BAIC0xOTAsNyArMTkwLDcgQEAgaW50IF9zYXNsX2FkZF9zdHJpbmcoY2hhciAqKm91dCwgc2l6ZV90ICphbGxvY2xlbiwKKyAKKyAgIGlmIChhZGQ9PU5VTEwpIGFkZCA9ICIobnVsbCkiOworIAorLSAgYWRkbGVuPXN0cmxlbihhZGQpOyAvKiBvbmx5IGNvbXB1dGUgb25jZSAqLworKyAgYWRkbGVuPXN0cmxlbihhZGQpKzE7IC8qIG9ubHkgY29tcHV0ZSBvbmNlICovCisgICBpZiAoX2J1Zl9hbGxvYyhvdXQsIGFsbG9jbGVuLCAoKm91dGxlbikrYWRkbGVuKSE9U0FTTF9PSykKKyAgICAgcmV0dXJuIFNBU0xfTk9NRU07CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsXzIuMS4yNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvY3lydXMtc2FzbC9jeXJ1cy1zYXNsXzIuMS4yNy5iYgppbmRleCBiZTcxMzFkLi5kNTVkYzRhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2N5cnVzLXNhc2wvY3lydXMtc2FzbF8yLjEuMjcuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9jeXJ1cy1zYXNsL2N5cnVzLXNhc2xfMi4xLjI3LmJiCkBAIC0xNiw2ICsxNiw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDA0LWNvbmZpZ3VyZS5hYy1maXgtY29uZGl0aW9uLWZvci1zdXBwbGltZW50LXNucHJpbnRmLWkucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1BbGxvdy1zYXNsYXV0aGQtdG8tYmUtYnVpbHQtb3V0c2lkZS1vZi1zb3VyY2UtdHJlZS13LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZWluaXQuc2gtZml4LXBhcmFsbGVsLWJ1aWxkLWlzc3VlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE5OTA2LnBhdGNoIFwKICAgICAgICAgICAgIgogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2N5cnVzaW1hcC9jeXJ1cy1zYXNsL2FyY2hpdmVzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pZ21wcHJveHkvaWdtcHByb3h5XzAuMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pZ21wcHJveHkvaWdtcHByb3h5XzAuMi4xLmJiCmluZGV4IGRiOTZkNDguLjAwNDQzM2IgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaWdtcHByb3h5L2lnbXBwcm94eV8wLjIuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lnbXBwcm94eS9pZ21wcHJveHlfMC4yLjEuYmIKQEAgLTgsNCArOCw2IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiM2E5YzJjYjQyYzFmNWVlMGNiNzY5YTQ4ODQ1NDU2NDEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDM1MWU2MjMwMzczOTBmNTc1YzEyMDNkOWNiYjdiYTMzYThiZGVmODVhM2M1ZTFkMjkwMWM1YTJhMzg0NDlhMSIKIAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9wYWxpLyR7QlBOfS9yZWxlYXNlcyIKKwogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2lzY3NpLWluaXRpYXRvci11dGlscy9pc2NzaS1pbml0aWF0b3ItdXRpbHNfMi4wLjg3OC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2lzY3NpLWluaXRpYXRvci11dGlsc18yLjAuODc4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzVlNTRiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2lzY3NpLWluaXRpYXRvci11dGlsc18yLjAuODc4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLVNVTU1BUlkgPSAiaVNDU0kgZGFlbW9uIGFuZCB1dGlsaXR5IHByb2dyYW1zIgotREVTQ1JJUFRJT04gPSAiT3Blbi1pU0NTSSBwcm9qZWN0IGlzIGEgaGlnaCBwZXJmb3JtYW5jZSwgdHJhbnNwb3J0IFwKLWluZGVwZW5kZW50LCBtdWx0aS1wbGF0Zm9ybSBpbXBsZW1lbnRhdGlvbiBvZiBSRkMzNzIwLiBUaGUgaXNjc2kgcGFja2FnZSBcCi1wcm92aWRlcyB0aGUgc2VydmVyIGRhZW1vbiBmb3IgdGhlIGlTQ1NJIHByb3RvY29sLCBhcyB3ZWxsIGFzIHRoZSB1dGlsaXR5IFwKLXByb2dyYW1zIHVzZWQgdG8gbWFuYWdlIGl0LiBpU0NTSSBpcyBhIHByb3RvY29sIGZvciBkaXN0cmlidXRlZCBcCi1kaXNrIGFjY2VzcyB1c2luZyBTQ1NJIGNvbW1hbmRzIHNlbnQgb3ZlciBJbnRlcm5ldCBQcm90b2NvbCBuZXR3b3Jrcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW4taXNjc2kuY29tLyIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKLVNFQ1RJT04gPSAibmV0IgotREVQRU5EUyA9ICJvcGVuc3NsIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSBvcGVuLWlzbnMgdXRpbC1saW51eCBrbW9kIgotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQnLCAnJywgZCl9IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotU1JDUkVWID89ICIyODhhZGQyMmQ2YjYxY2M2OGVkZTM1OGZhZWVjOWFmZmIxNTAxOWNkIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb3Blbi1pc2NzaS9vcGVuLWlzY3NpIFwKLSAgICAgICAgICAgZmlsZTovL2luaXRkLmRlYmlhbiBcCi0gICAgICAgICAgIGZpbGU6Ly85OV9pc2NzaS1pbml0aWF0b3ItdXRpbHMgXAotICAgICAgICAgICBmaWxlOi8vaXNjc2ktaW5pdGlhdG9yIFwKLSAgICAgICAgICAgZmlsZTovL2lzY3NpLWluaXRpYXRvci5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2lzY3NpLWluaXRpYXRvci10YXJnZXRzLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vc2V0X2luaXRpYXRvcm5hbWUgXAotICAgICAgICAgICAiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotQiA9ICIke1dPUktESVJ9L2J1aWxkIgotCi1QViAuPSAiK2dpdCR7U1JDUFZ9IgotCi1pbmhlcml0IHVwZGF0ZS1yYy5kIHN5c3RlbWQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IFwKLSAgICAtLWhvc3Q9JHtCVUlMRF9TWVN9IFwKLSIKLQotRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnJywgJy0td2l0aG91dC1zeXN0ZW1kJywgICAgIGQpfSIKLQotRVhUUkFfT0VNQUtFID0gJyBcCi0gICAgT1M9IiR7VEFSR0VUX1NZU30iIFwKLSAgICBUQVJHRVQ9IiR7VEFSR0VUX09TfSIgXAotICAgIEJBU0U9IiR7cHJlZml4fSIgXAotICAgIE1BTkRJUj0iJHttYW5kaXJ9IiBcCi0gICAgT1BURkxBR1M9Ii1ETk9fU1lTVEVNRCAke0NGTEFHU30iIFwKLSAgICBQS0dfQ09ORklHPSIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGtnLWNvbmZpZyIgXAotICAgIE5PX1NZU1RFTUQ9MSBcCi0nCi0KLQotZG9fY29uZmlndXJlICgpIHsKLSAgICBjZCAke1N9L2lzY3NpdWlvIDsgYXV0b3JlY29uZiAtLWluc3RhbGw7IC4vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQotfQotCi1kb19jb21waWxlICgpIHsKLSAgICAjIE1ha2Ugc3VyZSB3ZSBETyBOT1QgcmVnZW5lcmF0ZSBwcm9tX2xleC5jLgotICAgIGlmIFsgLWYgJHtTfS91dGlscy9md3BhcmFtX2liZnQvcHJvbV9sZXgubCBdOyB0aGVuCi0gICAgICAgIG12ICR7U30vdXRpbHMvZndwYXJhbV9pYmZ0L3Byb21fbGV4LmwgJHtTfS91dGlscy9md3BhcmFtX2liZnQvcHJvbV9sZXgubC51bnVzZWQKLSAgICBmaQotICAgIG9lX3J1bm1ha2UgLUMgJHtTfSAke0VYVFJBX09FTUFLRX0gdXNlcgotfQotCi1kb19pbnN0YWxsICgpIHsKLSAgICAjaW5zdGFsbCBuZWNlc3NhcnkgZGlyZWN0b3JpZXMKLSAgICBpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9IFwKLSAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kIFwKLSAgICAgICAgJHtEfSR7c3lzY29uZmRpcn0vaXNjc2kgXAotICAgICAgICAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvaXNjc2kvbm9kZXMgXAotICAgICAgICAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvaXNjc2kvc2VuZF90YXJnZXRzIFwKLSAgICAgICAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2lzY3NpL3N0YXRpYyBcCi0gICAgICAgICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9pc2NzaS9pc25zIFwKLSAgICAgICAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2lzY3NpL3NscCBcCi0gICAgICAgICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9pc2NzaS9pZmFjZXMgXAotICAgICAgICAke0R9JHtsaWJkaXJ9IFwKLSAgICAgICAgJHtEfSR7bWFuZGlyfS9tYW44Ci0KLSAgICBpbnN0YWxsIC1wIC1tIDc1NSAke1N9L3Vzci9pc2NzaWQgJHtTfS91c3IvaXNjc2lhZG0gXAotICAgICAgICAke1N9L3V0aWxzL2lzY3NpLWluYW1lIFwKLSAgICAgICAgJHtTfS91c3IvaXNjc2lzdGFydCAke0R9LyR7c2JpbmRpcn0KLQotICAgIGNwIC1kUiAke1N9L2xpYm9wZW5pc2NzaXVzci9saWJvcGVuaXNjc2l1c3Iuc28qICR7RH0ke2xpYmRpcn0KLSAgICBpbnN0YWxsIC1wIC1tIDY0NCAke1N9L2RvYy9pc2NzaWFkbS44ICR7U30vZG9jL2lzY3NpZC44ICR7RH0vJHttYW5kaXJ9L21hbjgKLSAgICBpbnN0YWxsIC1wIC1tIDY0NCAke1N9L2V0Yy9pc2NzaWQuY29uZiAke0R9JHtzeXNjb25mZGlyfS9pc2NzaQotICAgIGluc3RhbGwgLXAgLW0gNzU1ICR7V09SS0RJUn0vaW5pdGQuZGViaWFuICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9pc2NzaWQKLQotICAgIHNlZCAtaSAtZSAiczo9IC9zYmluL2lzY3NpZDo9ICR7c2JpbmRpcn0vaXNjc2lkOiIgJHtEfSR7c3lzY29uZmRpcn0vaXNjc2kvaXNjc2lkLmNvbmYKLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotICAgICAgICBlY2hvICJkIC9ydW4vJHtCUE59L2xvY2sgLSAtIC0gLSIgXAotICAgICAgICAgICAgICAgICAgICAgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2lzY3NpLmNvbmYKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9L2V0Yy9kZWZhdWx0LwotICAgICAgICBpbnN0YWxsIC1wIC1tIDc1NSAke1dPUktESVJ9L2lzY3NpLWluaXRpYXRvciAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0LwotCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2lzY3NpLWluaXRpYXRvci5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7V09SS0RJUn0vaXNjc2ktaW5pdGlhdG9yLXRhcmdldHMuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtub25hcmNoX2xpYmRpcn0vaXNjc2kKLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vc2V0X2luaXRpYXRvcm5hbWUgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2lzY3NpCi0gICAgZWxzZQotICAgICAgICBpbnN0YWxsIC1kICR7RH0vZXRjL2RlZmF1bHQvdm9sYXRpbGVzCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9Lzk5X2lzY3NpLWluaXRpYXRvci11dGlscyAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcwotICAgIGZpCi19Ci0KLXBrZ19wb3N0aW5zdF8ke1BOfSgpIHsKLSAgICBpZiBbICJ4JEQiID0gIngiIF07IHRoZW4KLSAgICAgICAgaWYgWyAtZSAvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCBdOyB0aGVuCi0gICAgICAgICAgICAvZXRjL2luaXQuZC9wb3B1bGF0ZS12b2xhdGlsZS5zaCB1cGRhdGUKLSAgICAgICAgZWxpZiBjb21tYW5kIC12IHN5c3RlbWQtdG1wZmlsZXMgPi9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgICAgc3lzdGVtZC10bXBmaWxlcyAtLWNyZWF0ZSAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvaXNjc2kuY29uZgotICAgICAgICBmaQotICAgIGZpCi19Ci0KLVNZU1RFTURfU0VSVklDRSA9ICIgaXNjc2ktaW5pdGlhdG9yLnNlcnZpY2UgaXNjc2ktaW5pdGlhdG9yLXRhcmdldHMuc2VydmljZSAiCi1JTklUU0NSSVBUX05BTUUgPSAiaXNjc2lkIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMzAgMSAyIDMgNCA1IC4gc3RvcCA3MCAwIDEgMiAzIDQgNSA2IC4iCi0KLUZJTEVTXyR7UE59ICs9ICIke25vbmFyY2hfbGliZGlyfS9pc2NzaSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2lzY3NpLWluaXRpYXRvci11dGlsc18yLjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzL2lzY3NpLWluaXRpYXRvci11dGlsc18yLjEuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2I1NTYzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9pc2NzaS1pbml0aWF0b3ItdXRpbHMvaXNjc2ktaW5pdGlhdG9yLXV0aWxzXzIuMS4wLmJiCkBAIC0wLDAgKzEsMTIwIEBACitTVU1NQVJZID0gImlTQ1NJIGRhZW1vbiBhbmQgdXRpbGl0eSBwcm9ncmFtcyIKK0RFU0NSSVBUSU9OID0gIk9wZW4taVNDU0kgcHJvamVjdCBpcyBhIGhpZ2ggcGVyZm9ybWFuY2UsIHRyYW5zcG9ydCBcCitpbmRlcGVuZGVudCwgbXVsdGktcGxhdGZvcm0gaW1wbGVtZW50YXRpb24gb2YgUkZDMzcyMC4gVGhlIGlzY3NpIHBhY2thZ2UgXAorcHJvdmlkZXMgdGhlIHNlcnZlciBkYWVtb24gZm9yIHRoZSBpU0NTSSBwcm90b2NvbCwgYXMgd2VsbCBhcyB0aGUgdXRpbGl0eSBcCitwcm9ncmFtcyB1c2VkIHRvIG1hbmFnZSBpdC4gaVNDU0kgaXMgYSBwcm90b2NvbCBmb3IgZGlzdHJpYnV0ZWQgXAorZGlzayBhY2Nlc3MgdXNpbmcgU0NTSSBjb21tYW5kcyBzZW50IG92ZXIgSW50ZXJuZXQgUHJvdG9jb2wgbmV0d29ya3MuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuLWlzY3NpLmNvbS8iCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCitTRUNUSU9OID0gIm5ldCIKK0RFUEVORFMgPSAib3BlbnNzbCBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgb3Blbi1pc25zIHV0aWwtbGludXgga21vZCIKK0RFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdzeXN0ZW1kJywgJycsIGQpfSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK1NSQ1JFViA/PSAiNTQ5Zjg5ODdiZTQ5NTgzYmIwNmIxMTdhMzY0YmVhM2E4ZmM1MjUwYyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW4taXNjc2kvb3Blbi1pc2NzaSBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0ZC5kZWJpYW4gXAorICAgICAgICAgICBmaWxlOi8vOTlfaXNjc2ktaW5pdGlhdG9yLXV0aWxzIFwKKyAgICAgICAgICAgZmlsZTovL2lzY3NpLWluaXRpYXRvciBcCisgICAgICAgICAgIGZpbGU6Ly9pc2NzaS1pbml0aWF0b3Iuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9pc2NzaS1pbml0aWF0b3ItdGFyZ2V0cy5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3NldF9pbml0aWF0b3JuYW1lIFwKKyAgICAgICAgICAgIgorUyA9ICIke1dPUktESVJ9L2dpdCIKK0IgPSAiJHtXT1JLRElSfS9idWlsZCIKKworUFYgLj0gIitnaXQke1NSQ1BWfSIKKworaW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kIGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS10YXJnZXQ9JHtUQVJHRVRfU1lTfSBcCisgICAgLS1ob3N0PSR7QlVJTERfU1lTfSBcCisiCisKK0VYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJycsICctLXdpdGhvdXQtc3lzdGVtZCcsICAgICBkKX0iCisKK0VYVFJBX09FTUFLRSA9ICcgXAorICAgIE9TPSIke1RBUkdFVF9TWVN9IiBcCisgICAgVEFSR0VUPSIke1RBUkdFVF9PU30iIFwKKyAgICBCQVNFPSIke3ByZWZpeH0iIFwKKyAgICBNQU5ESVI9IiR7bWFuZGlyfSIgXAorICAgIE9QVEZMQUdTPSItRE5PX1NZU1RFTUQgJHtDRkxBR1N9IiBcCisgICAgUEtHX0NPTkZJRz0iJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3BrZy1jb25maWciIFwKKyAgICBOT19TWVNURU1EPTEgXAorJworCisKK2RvX2NvbmZpZ3VyZSAoKSB7CisgICAgY2QgJHtTfS9pc2NzaXVpbyA7IGF1dG9yZWNvbmYgLS1pbnN0YWxsOyAuL2NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0KK30KKworZG9fY29tcGlsZSAoKSB7CisgICAgIyBNYWtlIHN1cmUgd2UgRE8gTk9UIHJlZ2VuZXJhdGUgcHJvbV9sZXguYy4KKyAgICBpZiBbIC1mICR7U30vdXRpbHMvZndwYXJhbV9pYmZ0L3Byb21fbGV4LmwgXTsgdGhlbgorICAgICAgICBtdiAke1N9L3V0aWxzL2Z3cGFyYW1faWJmdC9wcm9tX2xleC5sICR7U30vdXRpbHMvZndwYXJhbV9pYmZ0L3Byb21fbGV4LmwudW51c2VkCisgICAgZmkKKyAgICBvZV9ydW5tYWtlIC1DICR7U30gJHtFWFRSQV9PRU1BS0V9IHVzZXIKK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgI2luc3RhbGwgbmVjZXNzYXJ5IGRpcmVjdG9yaWVzCisgICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfSBcCisgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCBcCisgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L2lzY3NpIFwKKyAgICAgICAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2lzY3NpL25vZGVzIFwKKyAgICAgICAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL2lzY3NpL3NlbmRfdGFyZ2V0cyBcCisgICAgICAgICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9pc2NzaS9zdGF0aWMgXAorICAgICAgICAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvaXNjc2kvaXNucyBcCisgICAgICAgICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9pc2NzaS9zbHAgXAorICAgICAgICAke0R9JHtsb2NhbHN0YXRlZGlyfS9saWIvaXNjc2kvaWZhY2VzIFwKKyAgICAgICAgJHtEfSR7bGliZGlyfSBcCisgICAgICAgICR7RH0ke21hbmRpcn0vbWFuOAorCisgICAgaW5zdGFsbCAtcCAtbSA3NTUgJHtTfS91c3IvaXNjc2lkICR7U30vdXNyL2lzY3NpYWRtIFwKKyAgICAgICAgJHtTfS91dGlscy9pc2NzaS1pbmFtZSBcCisgICAgICAgICR7U30vdXNyL2lzY3Npc3RhcnQgJHtEfS8ke3NiaW5kaXJ9CisKKyAgICBjcCAtZFIgJHtTfS9saWJvcGVuaXNjc2l1c3IvbGlib3BlbmlzY3NpdXNyLnNvKiAke0R9JHtsaWJkaXJ9CisgICAgaW5zdGFsbCAtcCAtbSA2NDQgJHtTfS9kb2MvaXNjc2lhZG0uOCAke1N9L2RvYy9pc2NzaWQuOCAke0R9LyR7bWFuZGlyfS9tYW44CisgICAgaW5zdGFsbCAtcCAtbSA2NDQgJHtTfS9ldGMvaXNjc2lkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vaXNjc2kKKyAgICBpbnN0YWxsIC1wIC1tIDc1NSAke1dPUktESVJ9L2luaXRkLmRlYmlhbiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvaXNjc2lkCisKKyAgICBzZWQgLWkgLWUgInM6PSAvc2Jpbi9pc2NzaWQ6PSAke3NiaW5kaXJ9L2lzY3NpZDoiICR7RH0ke3N5c2NvbmZkaXJ9L2lzY3NpL2lzY3NpZC5jb25mCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKKyAgICAgICAgZWNobyAiZCAvcnVuLyR7QlBOfS9sb2NrIC0gLSAtIC0iIFwKKyAgICAgICAgICAgICAgICAgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9pc2NzaS5jb25mCisgICAgICAgIGluc3RhbGwgLWQgJHtEfS9ldGMvZGVmYXVsdC8KKyAgICAgICAgaW5zdGFsbCAtcCAtbSA3NTUgJHtXT1JLRElSfS9pc2NzaS1pbml0aWF0b3IgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC8KKworICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pc2NzaS1pbml0aWF0b3Iuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke1dPUktESVJ9L2lzY3NpLWluaXRpYXRvci10YXJnZXRzLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L2lzY3NpCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3NldF9pbml0aWF0b3JuYW1lICR7RH0ke25vbmFyY2hfbGliZGlyfS9pc2NzaQorICAgIGVsc2UKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9pc2NzaS1pbml0aWF0b3ItdXRpbHMgJHtEfS9ldGMvZGVmYXVsdC92b2xhdGlsZXMKKyAgICBmaQorfQorCitwa2dfcG9zdGluc3RfJHtQTn0oKSB7CisgICAgaWYgWyAieCREIiA9ICJ4IiBdOyB0aGVuCisgICAgICAgIGlmIFsgLWUgL2V0Yy9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggXTsgdGhlbgorICAgICAgICAgICAgL2V0Yy9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggdXBkYXRlCisgICAgICAgIGVsaWYgY29tbWFuZCAtdiBzeXN0ZW1kLXRtcGZpbGVzID4vZGV2L251bGw7IHRoZW4KKyAgICAgICAgICAgIHN5c3RlbWQtdG1wZmlsZXMgLS1jcmVhdGUgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2lzY3NpLmNvbmYKKyAgICAgICAgZmkKKyAgICBmaQorfQorCitTWVNURU1EX1NFUlZJQ0UgPSAiIGlzY3NpLWluaXRpYXRvci5zZXJ2aWNlIGlzY3NpLWluaXRpYXRvci10YXJnZXRzLnNlcnZpY2UgIgorSU5JVFNDUklQVF9OQU1FID0gImlzY3NpZCIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDMwIDEgMiAzIDQgNSAuIHN0b3AgNzAgMCAxIDIgMyA0IDUgNiAuIgorCitGSUxFU18ke1BOfSArPSAiJHtub25hcmNoX2xpYmRpcn0vaXNjc2kiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2tlZXBhbGl2ZWQva2VlcGFsaXZlZF8yLjAuMTkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2tlZXBhbGl2ZWQva2VlcGFsaXZlZF8yLjAuMTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4MTgyYjEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9rZWVwYWxpdmVkL2tlZXBhbGl2ZWRfMi4wLjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotU1VNTUFSWSA9ICJIaWdoIEF2YWlsYWJpbGl0eSBtb25pdG9yIGJ1aWx0IHVwb24gTFZTLCBWUlJQIGFuZCBzZXJ2aWNlIHBvbGxlcnMiCi1ERVNDUklQVElPTiA9ICJLZWVwYWxpdmVkIGlzIGEgcm91dGluZyBzb2Z0d2FyZSB3cml0dGVuIGluIEMuIFRoZSBtYWluIGdvYWwgXAotb2YgdGhpcyBwcm9qZWN0IGlzIHRvIHByb3ZpZGUgc2ltcGxlIGFuZCByb2J1c3QgZmFjaWxpdGllcyBmb3IgbG9hZGJhbGFuY2luZyBcCi1hbmQgaGlnaC1hdmFpbGFiaWxpdHkgdG8gTGludXggc3lzdGVtIGFuZCBMaW51eCBiYXNlZCBpbmZyYXN0cnVjdHVyZXMuIFwKLUxvYWRiYWxhbmNpbmcgZnJhbWV3b3JrIHJlbGllcyBvbiB3ZWxsLWtub3duIGFuZCB3aWRlbHkgdXNlZCBMaW51eCBWaXJ0dWFsIFwKLVNlcnZlciAoSVBWUykga2VybmVsIG1vZHVsZSBwcm92aWRpbmcgTGF5ZXI0IGxvYWRiYWxhbmNpbmcgXAotIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZWVwYWxpdmVkLm9yZy8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmtlZXBhbGl2ZWQub3JnL3NvZnR3YXJlLyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkZjY3MGUwOTA0ZDRlNDhlNzJjY2M4NDA5YWQ5YzZkZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwZTJmODQ1NDc2NWJjNmE1ZmEyNjc1OGJkOWNlYzE4YWFlNDI4ODI4NDNjZGQyNDg0OGFmZjBhZTY1Y2U0Y2E3IgotCi1ERVBFTkRTID0gImxpYm5mbmV0bGluayBvcGVuc3NsIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAotCi1QQUNLQUdFQ09ORklHID8/PSAibGlibmwgc25tcCBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2xpYm5sXSA9ICItLWVuYWJsZS1saWJubCwtLWRpc2FibGUtbGlibmwsbGlibmwiCi1QQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAsbmV0LXNubXAiCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1pbml0PXN5c3RlbWQgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS13aXRoLWluaXQ9U1lTVixzeXN0ZW1kIgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWxpYmlwdGMiCi1FWFRSQV9PRU1BS0UgPSAiaW5pdGRpcj0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgWyAtZiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59IF07IHRoZW4KLSAgICAgICAgY2htb2QgMDc1NSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59Ci0gICAgICAgIHNlZCAtaSAncyNyYy5kLyMjJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59Ci0gICAgZmkKLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke0J9LyR7QlBOfS8ke0JQTn0uc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8ke0JQTn0uc2VydmljZQotICAgIGZpCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3NubXAvbWlicy9LRUVQQUxJVkVELU1JQi50eHQiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJrZWVwYWxpdmVkLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID89ICJkaXNhYmxlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9rZWVwYWxpdmVkL2tlZXBhbGl2ZWRfMi4wLjIwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9rZWVwYWxpdmVkL2tlZXBhbGl2ZWRfMi4wLjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzYzMzZGMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL2tlZXBhbGl2ZWQva2VlcGFsaXZlZF8yLjAuMjAuYmIKQEAgLTAsMCArMSw0NSBAQAorU1VNTUFSWSA9ICJIaWdoIEF2YWlsYWJpbGl0eSBtb25pdG9yIGJ1aWx0IHVwb24gTFZTLCBWUlJQIGFuZCBzZXJ2aWNlIHBvbGxlcnMiCitERVNDUklQVElPTiA9ICJLZWVwYWxpdmVkIGlzIGEgcm91dGluZyBzb2Z0d2FyZSB3cml0dGVuIGluIEMuIFRoZSBtYWluIGdvYWwgXAorb2YgdGhpcyBwcm9qZWN0IGlzIHRvIHByb3ZpZGUgc2ltcGxlIGFuZCByb2J1c3QgZmFjaWxpdGllcyBmb3IgbG9hZGJhbGFuY2luZyBcCithbmQgaGlnaC1hdmFpbGFiaWxpdHkgdG8gTGludXggc3lzdGVtIGFuZCBMaW51eCBiYXNlZCBpbmZyYXN0cnVjdHVyZXMuIFwKK0xvYWRiYWxhbmNpbmcgZnJhbWV3b3JrIHJlbGllcyBvbiB3ZWxsLWtub3duIGFuZCB3aWRlbHkgdXNlZCBMaW51eCBWaXJ0dWFsIFwKK1NlcnZlciAoSVBWUykga2VybmVsIG1vZHVsZSBwcm92aWRpbmcgTGF5ZXI0IGxvYWRiYWxhbmNpbmcgXAorIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5rZWVwYWxpdmVkLm9yZy8iCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmtlZXBhbGl2ZWQub3JnL3NvZnR3YXJlLyR7QlB9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhNTk2NmU4NDMzYjYwOTk4NzA5YzRhOTIyYTQwN2JhYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NjcwZmJjNWViM2RjMTEzODI4YmU4YjcwMjU0OWRjNjhlYzk1NzhjZjgzMjg3NTIwZDkzNWJlNzZmYzhmMTkzIgorCitERVBFTkRTID0gImxpYm5mbmV0bGluayBvcGVuc3NsIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAorCitQQUNLQUdFQ09ORklHID8/PSAibGlibmwgc25tcCBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2xpYm5sXSA9ICItLWVuYWJsZS1saWJubCwtLWRpc2FibGUtbGlibmwsbGlibmwiCitQQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAsbmV0LXNubXAiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1pbml0PXN5c3RlbWQgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS13aXRoLWluaXQ9U1lTVixzeXN0ZW1kIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWxpYmlwdGMiCitFWFRSQV9PRU1BS0UgPSAiaW5pdGRpcj0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgWyAtZiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59IF07IHRoZW4KKyAgICAgICAgY2htb2QgMDc1NSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59CisgICAgICAgIHNlZCAtaSAncyNyYy5kLyMjJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59CisgICAgZmkKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke0J9LyR7QlBOfS8ke0JQTn0uc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS8ke0JQTn0uc2VydmljZQorICAgIGZpCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3NubXAvbWlicy9LRUVQQUxJVkVELU1JQi50eHQiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJrZWVwYWxpdmVkLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID89ICJkaXNhYmxlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWYvMDAwMS1pbW1vbV9weXRob24tY29udmVydC10by1weXRob24zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWYvMDAwMS1pbW1vbV9weXRob24tY29udmVydC10by1weXRob24zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0NTg3NDYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZi8wMDAxLWltbW9tX3B5dGhvbi1jb252ZXJ0LXRvLXB5dGhvbjMucGF0Y2gKQEAgLTAsMCArMSw1MCBAQAorRnJvbSBmZmM4Mjk2MDNhMmM1MDY3NGM4ZTA0ZGU1MjIxZTQzZjgwYmZjMWIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmV5IFpoaXpoaWtpbiA8YW5kcmV5LnpAZ21haWwuY29tPgorRGF0ZTogTW9uLCAyNyBKYW4gMjAyMCAxMzowMDo1MyArMDAwMAorU3ViamVjdDogW1BBVENIXSBpbW1vbV9weXRob246IGNvbnZlcnQgdG8gcHl0aG9uMworCitDb252ZXJ0IGltbW9tX3B5dGhvbiB0byB1c2UgcHl0aG9uMywgcHl0aG9uMiBpcyBFT0wgYW5kIGlzIG5vdCBzdXBwb3J0ZWQKK2J5IGFsbCBkaXN0cmlidXRpb25zIGFueW1vcmUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBBbmRyZXkgWmhpemhpa2luIDxhbmRyZXkuekBnbWFpbC5jb20+CistLS0KKyBzYW1wbGVzL2ltbXN2L2ltbW9tX3B5dGhvbi9pbW1vbS5weSAgICAgICAgIHwgMiArLQorIHNhbXBsZXMvaW1tc3YvaW1tb21fcHl0aG9uL2ltbW9tZXhhbXBsZXMucHkgfCAyICstCisgc2FtcGxlcy9pbW1zdi9pbW1vbV9weXRob24vaW1tb210ZXN0LnB5ICAgICB8IDIgKy0KKyAzIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NhbXBsZXMvaW1tc3YvaW1tb21fcHl0aG9uL2ltbW9tLnB5IGIvc2FtcGxlcy9pbW1zdi9pbW1vbV9weXRob24vaW1tb20ucHkKK2luZGV4IDRmNjg2MjVlZC4uZjg4MTk3MDAwIDEwMDc1NQorLS0tIGEvc2FtcGxlcy9pbW1zdi9pbW1vbV9weXRob24vaW1tb20ucHkKKysrKyBiL3NhbXBsZXMvaW1tc3YvaW1tb21fcHl0aG9uL2ltbW9tLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9weXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgaW1tb20gLS0gQW4gSU1NIE9iamVjdCBNYW5hZ2VyIGluIFB5dGhvbgorIAorZGlmZiAtLWdpdCBhL3NhbXBsZXMvaW1tc3YvaW1tb21fcHl0aG9uL2ltbW9tZXhhbXBsZXMucHkgYi9zYW1wbGVzL2ltbXN2L2ltbW9tX3B5dGhvbi9pbW1vbWV4YW1wbGVzLnB5CitpbmRleCA3MGM1NzkyNjUuLmJkNjkzYzI1ZiAxMDA3NTUKKy0tLSBhL3NhbXBsZXMvaW1tc3YvaW1tb21fcHl0aG9uL2ltbW9tZXhhbXBsZXMucHkKKysrKyBiL3NhbXBsZXMvaW1tc3YvaW1tb21fcHl0aG9uL2ltbW9tZXhhbXBsZXMucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgCisgaW1wb3J0IGltbW9tCisgCitkaWZmIC0tZ2l0IGEvc2FtcGxlcy9pbW1zdi9pbW1vbV9weXRob24vaW1tb210ZXN0LnB5IGIvc2FtcGxlcy9pbW1zdi9pbW1vbV9weXRob24vaW1tb210ZXN0LnB5CitpbmRleCA0Yjk4YmVhOGMuLmVkMjQ2M2JhOSAxMDA3NTUKKy0tLSBhL3NhbXBsZXMvaW1tc3YvaW1tb21fcHl0aG9uL2ltbW9tdGVzdC5weQorKysrIGIvc2FtcGxlcy9pbW1zdi9pbW1vbV9weXRob24vaW1tb210ZXN0LnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyAKKyBpbXBvcnQgaW1tb20KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmXzUuMTkuMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL29wZW5zYWYvb3BlbnNhZl81LjE5LjEwLmJiCmluZGV4IGE3ZWI0YzguLjNhYjQ3NTcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvb3BlbnNhZi9vcGVuc2FmXzUuMTkuMTAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9vcGVuc2FmL29wZW5zYWZfNS4xOS4xMC5iYgpAQCAtMTQsNyArMTQsNyBAQAogTElDRU5TRSA9ICJMR1BMdjIuMSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKIAotREVQRU5EUyA9ICJsaWJ4bWwyIHB5dGhvbiIKK0RFUEVORFMgPSAibGlieG1sMiBweXRob24zIgogVE9PTENIQUlOID0gImdjYyIKIAogU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCkBAIC0yNiwxMCArMjYsMTMgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtaW1tcGJlX2R1bXAuY2MtVXNlLXN5cy13YWl0LmgtaW5zdGVhZC1vZi13YWl0LmgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtY29uZmlndXJlLXRpbWUtY2hlY2stZm9yLWdldHRpZC1BUEkucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1jcmVhdGVfZW1wdHlfbGlicmFyeS1Vc2UtQ0MtdmFyaWFibGUtaW50ZWFkLW9mLWhhcmRjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW1tb21fcHl0aG9uLWNvbnZlcnQtdG8tcHl0aG9uMy5wYXRjaCBcCiAgICAgICAgICAgICIKIFNSQ19VUklbbWQ1c3VtXSA9ICI5YjYxZGYwMWQxYTA5MjEwMWM0YTYyNjY5MmVkYWUxOSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZGE5YWY5NmU4ZWU1OGQxMTAzMWQzMDViZjQ4MDRhMDBkZWI2MTA4ZTEyZTQyMjcyMjg4MmEyMDkxYmQzNGJkIgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9vcGVuc2FmL2ZpbGVzL3JlbGVhc2VzIgorCiBpbmhlcml0IGF1dG90b29scyB1c2VyYWRkIHN5c3RlbWQgcGtnY29uZmlnCiAKIFVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCkBAIC02Niw3ICs2OSw3IEBACiAKIElOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKIAotUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcHl0aG9uIgorUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcHl0aG9uMy1jb3JlIgogCiAjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODY5NzAvCiBDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsID0gJ251bGwnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvcG9zdGZpeC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Bvc3RmaXgvcG9zdGZpeC5pbmMKaW5kZXggNjRjMjBkMC4uNGI5OTQwYyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXguaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4LmluYwpAQCAtMjAsMTYgKzIwLDE2IEBACiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgogCi1pbmhlcml0IHVwZGF0ZS1yYy5kIHVzZXJhZGQgdXBkYXRlLWFsdGVybmF0aXZlcyBzeXN0ZW1kCitpbmhlcml0IHVwZGF0ZS1yYy5kIHVzZXJhZGQgdXBkYXRlLWFsdGVybmF0aXZlcyBzeXN0ZW1kIGxpYl9wYWNrYWdlCiAKIElOSVRTQ1JJUFRfTkFNRSA9ICJwb3N0Zml4IgogSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgNTggMyA0IDUgLiBzdG9wIDEzIDAgMSA2IC4iCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9IFwKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0tYmluIgorVVNFUkFERF9QQVJBTV8ke1BOfS1iaW4gPSBcCiAiLWQgL3Zhci9zcG9vbC9wb3N0Zml4IC1yIC1nIHBvc3RmaXggLS1zaGVsbCAvYmluL2ZhbHNlIHBvc3RmaXg7IFwKICAtZCAvdmFyL3Nwb29sL3ZtYWlsIC1yIC1nIHZtYWlsIC0tc2hlbGwgL2Jpbi9mYWxzZSB2bWFpbCBcCiAiCi1HUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSBwb3N0Zml4Oy0tc3lzdGVtIHBvc3Rkcm9wOy0tc3lzdGVtIHZtYWlsIgorR1JPVVBBRERfUEFSQU1fJHtQTn0tYmluID0gIi0tc3lzdGVtIHBvc3RmaXg7LS1zeXN0ZW0gcG9zdGRyb3A7LS1zeXN0ZW0gdm1haWwiCiAKIGV4cG9ydCBTWVNMSUJTID0gIiR7TERGTEFHU30iCiAKQEAgLTE4NSw5ICsxODUsOSBAQAogICAgIGxuIC1zZiAuLi9zYmluL3NlbmRtYWlsLnBvc3RmaXggJHtEfSR7YmluZGlyfS9tYWlscQogfQogCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJzZW5kbWFpbCBtYWlscSBuZXdhbGlhc2VzIgorQUxURVJOQVRJVkVfJHtQTn0tYmluID0gInNlbmRtYWlsIG1haWxxIG5ld2FsaWFzZXMiCiAjIC91c3IvbGliL3NlbmRtaWFsIGlzIHJlcXVpcmVkIGJ5IExTQiBjb3JlIHRlc3QKLUFMVEVSTkFUSVZFXyR7UE59X2xpbnV4c3RkYmFzZSA9ICJzZW5kbWFpbCBtYWlscSBuZXdhbGlhc2VzIHVzci1saWItc2VuZG1haWwiCitBTFRFUk5BVElWRV8ke1BOfS1iaW5fbGludXhzdGRiYXNlID0gInNlbmRtYWlsIG1haWxxIG5ld2FsaWFzZXMgdXNyLWxpYi1zZW5kbWFpbCIKIEFMVEVSTkFUSVZFX1RBUkdFVFttYWlscV0gPSAiJHtiaW5kaXJ9L21haWxxIgogQUxURVJOQVRJVkVfVEFSR0VUW25ld2FsaWFzZXNdID0gIiR7YmluZGlyfS9uZXdhbGlhc2VzIgogQUxURVJOQVRJVkVfVEFSR0VUW3NlbmRtYWlsXSA9ICIke3NiaW5kaXJ9L3NlbmRtYWlsLnBvc3RmaXgiCkBAIC0yMTIsOSArMjEyLDExIEBACiB9CiAKIFBBQ0tBR0VTID0rICIke1BOfS1jZmciCitSREVQRU5EU18ke1BOfS1jZmdfY2xhc3MtdGFyZ2V0ICs9ICIke1BOfS1iaW4iCiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiR7UE59LWNmZyIKICMgRXhjbHVkZSAuZGVidWcgZGlyZWN0b3JpZXMgZnJvbSB0aGUgbWFpbiBwYWNrYWdlCi1GSUxFU18ke1BOfSA9ICIke2xvY2Fsc3RhdGVkaXJ9ICR7YmluZGlyfS8qICR7c2JpbmRpcn0vKiBcCitGSUxFU18ke1BOfS1iaW4gKz0gIiR7bG9jYWxzdGF0ZWRpcn0gJHtiaW5kaXJ9LyogJHtzYmluZGlyfS8qIFwKICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vKiAke3N5c3RlbWRfdW5pdGRpcn0vKiIKIEZJTEVTXyR7UE59LWNmZyA9ICIke3N5c2NvbmZkaXJ9IgogRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmV4ZWNkaXJ9L3Bvc3RmaXgvLmRlYnVnIgorQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4XzMuNC43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXhfMy40LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM2OTllZTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXhfMy40LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1yZXF1aXJlIHBvc3RmaXguaW5jCi0KLVNSQ19VUkkgKz0gImZ0cDovL2Z0cC5wb3JjdXBpbmUub3JnL21pcnJvcnMvcG9zdGZpeC1yZWxlYXNlL29mZmljaWFsL3Bvc3RmaXgtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL21ha2VkZWZzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2luc3RhbGwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbWFpbi5jZiBcCi0gICAgICAgICAgIGZpbGU6Ly9wb3N0Zml4IFwKLSAgICAgICAgICAgZmlsZTovL2ludGVybmFsX3JlY2lwaWVudCBcCi0gICAgICAgICAgIGZpbGU6Ly9wb3N0Zml4LnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vYWxpYXNlc2RiIFwKLSAgICAgICAgICAgZmlsZTovL2NoZWNrX2hvc3RuYW1lLnNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZWRlZnMtVXNlLW5hdGl2ZS1jb21waWxlci10by1idWlsZC1tYWtlZGVmcy50ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3Bvc3RmaXgtaW5zdGFsbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pY3UtY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWFrZWRlZnMtYWRkLWxuc2wtYW5kLWxyZXNvbHYtdG8tU1lTTElCUy1ieS1kZWZhdWx0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4ZWQtYnVpbGQtZmFpbHVyZS13aXRoLWdsaWJjLTIuMzAtZHVlLXRvLWRyb3BwZWQtUi5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiMjlhYjg1ZThmNmVmN2ZhZTEzMmIwMDRlNzc3NjcxYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZTMyNTMxMjFkM2JhODgzNmEyMzc3NDIyNTUxODU2MGIzNWU0MDQ5Nzk1MWFkNWJlYzE1NGFmYTgyMDVmOTY3IgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJwb3N0Zml4XC0oP1A8cHZlcj4zXC4zKFwuXGQrKSspLnRhci5neiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4XzMuNC44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wb3N0Zml4L3Bvc3RmaXhfMy40LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ3ZjhiYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcG9zdGZpeC9wb3N0Zml4XzMuNC44LmJiCkBAIC0wLDAgKzEsMjEgQEAKK3JlcXVpcmUgcG9zdGZpeC5pbmMKKworU1JDX1VSSSArPSAiZnRwOi8vZnRwLnBvcmN1cGluZS5vcmcvbWlycm9ycy9wb3N0Zml4LXJlbGVhc2Uvb2ZmaWNpYWwvcG9zdGZpeC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbWFrZWRlZnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaW5zdGFsbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9tYWluLmNmIFwKKyAgICAgICAgICAgZmlsZTovL3Bvc3RmaXggXAorICAgICAgICAgICBmaWxlOi8vaW50ZXJuYWxfcmVjaXBpZW50IFwKKyAgICAgICAgICAgZmlsZTovL3Bvc3RmaXguc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9hbGlhc2VzZGIgXAorICAgICAgICAgICBmaWxlOi8vY2hlY2tfaG9zdG5hbWUuc2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlZGVmcy1Vc2UtbmF0aXZlLWNvbXBpbGVyLXRvLWJ1aWxkLW1ha2VkZWZzLnRlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcG9zdGZpeC1pbnN0YWxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ljdS1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlZGVmcy1hZGQtbG5zbC1hbmQtbHJlc29sdi10by1TWVNMSUJTLWJ5LWRlZmF1bHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXhlZC1idWlsZC1mYWlsdXJlLXdpdGgtZ2xpYmMtMi4zMC1kdWUtdG8tZHJvcHBlZC1SLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjY5NDRiOTQ2ODg3MDc3YTI4ZTNkY2IzNzVmZjUzNzAxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhkNWQ0Mjk3MzdlMGM2NDUxNDAyOGE4MmZjMDA2Y2JiMjczZDJjYjk4ZGM0MGViMWRiYmZlMTAyZjI5YTg5NDMiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInBvc3RmaXhcLSg/UDxwdmVyPjNcLjMoXC5cZCspKykudGFyLmd6IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGFlbW9ucy9wcm9mdHBkL3Byb2Z0cGRfMS4zLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Byb2Z0cGQvcHJvZnRwZF8xLjMuNi5iYgppbmRleCA0MDk5NDcyLi5kNWJiZGQzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Byb2Z0cGQvcHJvZnRwZF8xLjMuNi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3Byb2Z0cGQvcHJvZnRwZF8xLjMuNi5iYgpAQCAtMTYsNyArMTYsNyBAQAogaVNSQ19VUklbbWQ1c3VtXSA9ICIxMzI3MDkxMWM0MmFhYzg0MjQzNWYxODIwNTU0NmExYiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MWVmNzRiMTQzNDk1ZDVmZjk3YzRkNDc3MGM2ODA0MDcyYThjOGViMWFkMWVjYzhjYzU0MWI0MGUxNTJlY2FmIgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXNlcmFkZCB1cGRhdGUtcmMuZCBzeXN0ZW1kCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXNlcmFkZCB1cGRhdGUtcmMuZCBzeXN0ZW1kIG11bHRpbGliX3NjcmlwdAogCiBQQUNLQUdFQ09ORklHID8/PSAic2hhZG93IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2IHBhbScsIGQpfSBcCkBAIC0xMTAsNiArMTEwLDcgQEAKICAgICBzZWQgLWUgJ3N8LS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH18fGcnIFwKICAgICAgICAgLWUgJ3N8JHtTVEFHSU5HX0RJUl9OQVRJVkV9fHxnJyBcCiAgICAgICAgIC1lICdzfC1mZGVidWctcHJlZml4LW1hcD1bXiBdKnx8ZycgXAorICAgICAgICAtZSAnc3wtZm1hY3JvLXByZWZpeC1tYXA9W14gXSp8fGcnIFwKICAgICAgICAgLWkgJHtEfS8ke2JpbmRpcn0vcHJ4cwogCiAgICAgIyBmdHBtYWlsIHBlcmwgc2NyaXB0LCB3aGljaCByZWFkcyB0aGUgcHJvZnRwZCBsb2cgZmlsZSBhbmQgc2VuZHMKQEAgLTEzMyw2ICsxMzQsOCBAQAogVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtZyAke0ZUUEdST1VQfSAtLWhvbWUtZGlyIC92YXIvbGliLyR7RlRQVVNFUn0gLS1uby1jcmVhdGUtaG9tZSBcCiAgICAgICAgICAgICAgICAgICAgICAgIC0tc2hlbGwgL2Jpbi9mYWxzZSAke0ZUUFVTRVJ9IgogCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59OiR7YmluZGlyfS9wcnhzIgorCiBGSUxFU18ke1BOfSArPSAiL2hvbWUvJHtGVFBVU0VSfSIKIAogUkRFUEVORFNfJHtQTn0gKz0gInBlcmwiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3B0cGQvcHRwZF8yLjMuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcHRwZC9wdHBkXzIuMy4xLmJiCmluZGV4IDJiZDY0MjcuLmNhYjBkOTQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcHRwZC9wdHBkXzIuMy4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvcHRwZC9wdHBkXzIuMy4xLmJiCkBAIC0zMSw2ICszMSw4IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiMjUzYmFiN2FiNTFkOTY5NjE2ZWE4MTFiZTFmMTMyZjMiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGRiZjU0ZGQyYzE3OGJkOWZlNjI0ODFkMmMzNzUxM2VlMzY2MzZkOGJmMTM3Y2ZkYWQ5Njg5MTQ5MGNkYmY5MyIKIAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvcHRwZC9maWxlcy9yZWxlYXNlcyIKKwogUyA9ICIke1dPUktESVJ9L3B0cGQtJHtQVn0iCiAKIEVYVFJBX09FTUFLRSA9ICIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3NxdWlkL3NxdWlkXzQuOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvc3F1aWRfNC45LmJiCmluZGV4IDZmMjAyY2YuLjE5OTQ5YWMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvc3F1aWRfNC45LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvc3F1aWQvc3F1aWRfNC45LmJiCkBAIC00MCw2ICs0MCw4IEBACiAKIExERkxBR1NfYXBwZW5kX21pcHNhcmNoID0gIiAtbGF0b21pYyIKIExERkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sYXRvbWljIgorTERGTEFHU19hcHBlbmRfcmlzY3Y2NCA9ICIgLWxhdG9taWMiCitMREZMQUdTX2FwcGVuZF9yaXNjdjMyID0gIiAtbGF0b21pYyIKIAogVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKIFVTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLS1uby1jcmVhdGUtaG9tZSAtLWhvbWUtZGlyIC92YXIvcnVuL3NxdWlkIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgc3F1aWQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kYWVtb25zL3RmdHAtaHBhL3RmdHAtaHBhXzUuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdGZ0cC1ocGEvdGZ0cC1ocGFfNS4yLmJiCmluZGV4IDEzMjk3MmIuLjQxMzk1MGIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdGZ0cC1ocGEvdGZ0cC1ocGFfNS4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRhZW1vbnMvdGZ0cC1ocGEvdGZ0cC1ocGFfNS4yLmJiCkBAIC04MiwxMCArODIsMTUgQEAKIElOSVRTQ1JJUFRfTkFNRSA9ICJ0ZnRwZC1ocGEiCiBJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAyMCAyIDMgNCA1IC4gc3RvcCAyMCAxIC4iCiAKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJ0ZnRwZC44IHRmdHAuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt0ZnRwZC44XSA9ICIke21hbmRpcn0vbWFuOC90ZnRwZC44IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3RmdHAuMV0gPSAiJHttYW5kaXJ9L21hbjEvdGZ0cC4xIgorCiBBTFRFUk5BVElWRV8ke1BOfSA9ICJ0ZnRwIgogQUxURVJOQVRJVkVfVEFSR0VUW3RmdHBdID0gIiR7YmluZGlyfS90ZnRwLWhwYSIKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjYwIgogCisKIFNZU1RFTURfUEFDS0FHRVMgPSAidGZ0cC1ocGEtc2VydmVyIgogU1lTVEVNRF9TRVJWSUNFX3RmdHAtaHBhLXNlcnZlciA9ICJ0ZnRwZC1ocGEuc29ja2V0IHRmdHBkLWhwYS5zZXJ2aWNlIgogU1lTVEVNRF9BVVRPX0VOQUJMRV90ZnRwLWhwYS1zZXJ2ZXIgPSAiZW5hYmxlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjXzEuMjQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRldnRvb2xzL2dycGMvZ3JwY18xLjI0LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhYjE1ZGEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjXzEuMjQuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkEgaGlnaCBwZXJmb3JtYW5jZSwgb3BlbiBzb3VyY2UsIGdlbmVyYWwtcHVycG9zZSBSUEMgZnJhbWV3b3JrLiBcCi1Qcm92aWRlcyBnUlBDIGxpYnJhcmllcyBmb3IgbXVsdGlwbGUgbGFuZ3VhZ2VzIHdyaXR0ZW4gb24gdG9wIG9mIHNoYXJlZCBDIGNvcmUgbGlicmFyeSBcCi0oQysrLCBOb2RlLmpzLCBQeXRob24sIFJ1YnksIE9iamVjdGl2ZS1DLCBQSFAsIEMjKSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ncnBjL2dycGMiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFwYWNoZS0yIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCi0KLURFUEVORFMgPSAiZ2ZsYWdzIGMtYXJlcyBwcm90b2J1ZiBwcm90b2J1Zi1uYXRpdmUgcHJvdG9idWYtYyBwcm90b2J1Zi1jLW5hdGl2ZSBvcGVuc3NsIGxpYm5zbDIiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGdvb2dsZXRlc3QgZ3JwYy1uYXRpdmUgIgotREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBncnBjLW5hdGl2ZSAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi1TUkNSRVZfZ3JwYyA9ICIyZGUyZThkZDg5MjFlMWY3ZDA0M2UwMWZhZjdmZThhMjkxZmJiMDcyIgotU1JDUkVWX3VwYiA9ICI5ZWZmY2JjYjI3ZjBhNjY1ZjlmMzQ1MDMwMTg4YzBiMjkxZTMyNDgyIgotQlJBTkNIID0gInYxLjI0LngiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZ3JwYy9ncnBjLmdpdDtwcm90b2NvbD1odHRwcztuYW1lPWdycGM7YnJhbmNoPSR7QlJBTkNIfSBcCi0gICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vcHJvdG9jb2xidWZmZXJzL3VwYjtuYW1lPXVwYjtkZXN0c3VmZml4PWdpdC90aGlyZF9wYXJ0eS91cGIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtbGlicmFyaWVzLWluc3RhbGxhdGlvbi1mb3ItTGludXgucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly8wMDAxLUNNYWtlTGlzdHMudHh0LUZpeC1ncnBjX2NwcF9wbHVnaW4tcGF0aC1kdXJpbmctY3Jvc3MucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgZmlsZTovLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWdycGNfY3BwX3BsdWdpbi1wYXRoLWR1cmluZy1jcm9zcy5wYXRjaCIKLQotIyBGaXhlcyBidWlsZCB3aXRoIG9sZGVyIGNvbXBpbGVycyA0LjggZXNwZWNpYWxseSBvbiB1YnVudHUgMTQuMDQKLUNYWEZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1XbCwtLW5vLWFzLW5lZWRlZCIKLQotaW5oZXJpdCBjbWFrZSBwa2djb25maWcKLQotRVhUUkFfT0VDTUFLRSA9ICIgXAotICAgIC1EZ1JQQ19DQVJFU19QUk9WSURFUj1wYWNrYWdlIFwKLSAgICAtRGdSUENfWkxJQl9QUk9WSURFUj1wYWNrYWdlIFwKLSAgICAtRGdSUENfU1NMX1BST1ZJREVSPXBhY2thZ2UgXAotICAgIC1EZ1JQQ19QUk9UT0JVRl9QUk9WSURFUj1wYWNrYWdlIFwKLSAgICAtRGdSUENfR0ZMQUdTX1BST1ZJREVSPXBhY2thZ2UgXAotICAgIC1EZ1JQQ19JTlNUQUxMPU9OIFwKLSAgICAtRENNQUtFX0NST1NTQ09NUElMSU5HPU9OIFwKLSAgICAtREJVSUxEX1NIQVJFRF9MSUJTPU9OIFwKLSAgICAtRGdSUENfSU5TVEFMTF9MSUJESVI9JHtiYXNlbGlifSBcCi0gICAgLURnUlBDX0lOU1RBTExfQ01BS0VESVI9JHtiYXNlbGlifS9jbWFrZS8ke0JQTn0gXAotICAgICIKLQotZG9fY29uZmlndXJlX3ByZXBlbmRfbWlwc2FyY2goKSB7Ci0gICAgc2VkIC1pIC1lICJzL3NldChfZ1JQQ19BTExUQVJHRVRTX0xJQlJBUklFUyBcJHtDTUFLRV9ETF9MSUJTfSBydCBtIHB0aHJlYWQpL3NldChfZ1JQQ19BTExUQVJHRVRTX0xJQlJBUklFUyBcJHtDTUFLRV9ETF9MSUJTfSBhdG9taWMgcnQgbSBwdGhyZWFkKS9nIiAke1N9L0NNYWtlTGlzdHMudHh0Ci19Ci0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX3Bvd2VycGMoKSB7Ci0gICAgc2VkIC1pIC1lICJzL3NldChfZ1JQQ19BTExUQVJHRVRTX0xJQlJBUklFUyBcJHtDTUFLRV9ETF9MSUJTfSBydCBtIHB0aHJlYWQpL3NldChfZ1JQQ19BTExUQVJHRVRTX0xJQlJBUklFUyBcJHtDTUFLRV9ETF9MSUJTfSBhdG9taWMgcnQgbSBwdGhyZWFkKS9nIiAke1N9L0NNYWtlTGlzdHMudHh0Ci19Ci0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX3Rvb2xjaGFpbi1jbGFuZ194ODYoKSB7Ci0gICAgc2VkIC1pIC1lICJzL3NldChfZ1JQQ19BTExUQVJHRVRTX0xJQlJBUklFUyBcJHtDTUFLRV9ETF9MSUJTfSBydCBtIHB0aHJlYWQpL3NldChfZ1JQQ19BTExUQVJHRVRTX0xJQlJBUklFUyBcJHtDTUFLRV9ETF9MSUJTfSBhdG9taWMgcnQgbSBwdGhyZWFkKS9nIiAke1N9L0NNYWtlTGlzdHMudHh0Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotU1lTUk9PVF9ESVJTX0JMQUNLTElTVF9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiR7YmFzZWxpYn0vY21ha2UvZ3JwYyIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxkYXBfMy4yLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxkYXBfMy4yLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFmODk2MWUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sZGFwXzMuMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTIgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCi0jCi1TVU1NQVJZID0gIlByb3ZpZGVzIGEgd3JhcHBlciBpbiBQeXRob24gdG8gTERBUCIKLURFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgTERBUCBcCi0oTGlnaHR3ZWlnaHQgRGlyZWN0b3J5IEFjY2VzcyBQcm90b2NvbCkgdGhyb3VnaCBQeXRob24gb3BlcmF0aW9ucyBcCi1pbnN0ZWFkIG9mIEMgQVBJLiBUaGUgbW9kdWxlIG1haW5seSBhY3RzIGFzIGEgd3JhcHBlciBmb3IgdGhlIFwKLU9wZW5MREFQIDIueCBsaWJyYXJpZXMuIEVycm9ycyB3aWxsIGFwcGVhciBhcyBleGNlcHRpb25zLiIKLQotTElDRU5TRSA9ICJQU0YiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnB5dGhvbi1sZGFwLm9yZy8iCi1ERVBFTkRTID0gInB5dGhvbiBvcGVubGRhcCBjeXJ1cy1zYXNsIgotCi1QWVBJX1BBQ0tBR0UgPSAicHl0aG9uLWxkYXAiCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT0zNmNlOWQ3MjZkMDMyMWI3M2MxNTIxNzA0ZDA3ZGIxYiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmZTIyNTIyMjA4ZGM5YjA2ZDE2ZWI3MGY4NTUzZWFhYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZDFjNGIxNTM3NWE1MzM1NjRhYWQzZDNkZWFkZTc4OTIyMWU0NTAwNTJiMjFlYmI5NzIwZmI4MjJlY2NkYjhlIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWkgLWUgJ3M6XmxpYnJhcnlfZGlycyA9Lio6Oicgc2V0dXAuY2ZnCi0gICAgc2VkIC1pIC1lICdzOl5pbmNsdWRlX2RpcnMgPS4qOmluY2x1ZGVfZGlycyA9ID0vdXNyL2luY2x1ZGUvc2FzbC86JyBzZXR1cC5jZmcKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSAgICAke1BZVEhPTl9QTn0tcHlhc24xIFwKLSAgICAke1BZVEhPTl9QTn0tcHlhc24xLW1vZHVsZXMgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGRhcF8zLjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWxkYXBfMy4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQ2ZGRiZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWxkYXBfMy4yLjAuYmIKQEAgLTAsMCArMSwzMSBAQAorIworIyBDb3B5cmlnaHQgKEMpIDIwMTIgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCisjCitTVU1NQVJZID0gIlByb3ZpZGVzIGEgd3JhcHBlciBpbiBQeXRob24gdG8gTERBUCIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIHByb3ZpZGVzIGFjY2VzcyB0byB0aGUgTERBUCBcCisoTGlnaHR3ZWlnaHQgRGlyZWN0b3J5IEFjY2VzcyBQcm90b2NvbCkgdGhyb3VnaCBQeXRob24gb3BlcmF0aW9ucyBcCitpbnN0ZWFkIG9mIEMgQVBJLiBUaGUgbW9kdWxlIG1haW5seSBhY3RzIGFzIGEgd3JhcHBlciBmb3IgdGhlIFwKK09wZW5MREFQIDIueCBsaWJyYXJpZXMuIEVycm9ycyB3aWxsIGFwcGVhciBhcyBleGNlcHRpb25zLiIKKworTElDRU5TRSA9ICJQU0YiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnB5dGhvbi1sZGFwLm9yZy8iCitERVBFTkRTID0gInB5dGhvbjMgb3BlbmxkYXAgY3lydXMtc2FzbCIKKworUFlQSV9QQUNLQUdFID0gInB5dGhvbi1sZGFwIgoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTM2Y2U5ZDcyNmQwMzIxYjczYzE1MjE3MDRkMDdkYjFiIgorU1JDX1VSSVttZDVzdW1dID0gImZlMjI1MjIyMDhkYzliMDZkMTZlYjcwZjg1NTNlYWFiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdkMWM0YjE1Mzc1YTUzMzU2NGFhZDNkM2RlYWRlNzg5MjIxZTQ1MDA1MmIyMWViYjk3MjBmYjgyMmVjY2RiOGUiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHNlZCAtaSAtZSAnczpebGlicmFyeV9kaXJzID0uKjo6JyAke1N9L3NldHVwLmNmZworICAgIHNlZCAtaSAtZSAnczpeaW5jbHVkZV9kaXJzID0uKjppbmNsdWRlX2RpcnMgPSA9L3Vzci9pbmNsdWRlL3Nhc2wvOicgJHtTfS9zZXR1cC5jZmcKK30KKworUkRFUEVORFNfJHtQTn0gPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tcHlhc24xIFwKKyAgICAke1BZVEhPTl9QTn0tcHlhc24xLW1vZHVsZXMgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmMvMDAwMS1jb25maWd1cmUuYWMtZml4LXBrZ2NvbmZpZy1pc3N1ZS1vZi1yZG1hLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmMvMDAwMS1jb25maWd1cmUuYWMtZml4LXBrZ2NvbmZpZy1pc3N1ZS1vZi1yZG1hLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZGM3NjQ1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jLzAwMDEtY29uZmlndXJlLmFjLWZpeC1wa2djb25maWctaXNzdWUtb2YtcmRtYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBmaXggcGtnY29uZmlnIGlzc3VlIG9mIHJkbWEKLQotcGtnY29uZmlnIGZpbGVzIGZyb20gcmRtYS1jb3JlKGh0dHBzOi8vZ2l0aHViLmNvbS9saW51eC1yZG1hL3JkbWEtY29yZSkKLWFyZSBuYW1lZCBzdGFydCB3aXRoIGxpYiwgc3VjaCBhcyBsaWJyZG1hY20ucGMgYW5kIGxpYmlidmVyYnMucGMuIFdoZW4KLXJkbWEgc3VwcG9ydCBpcyBlbmFibGVkLCBpdCBmYWlscyB0byBmaW5kIHJkbWEgcmVsYXRlZCBsaWJyYXJpZXMuIFVwZGF0ZQotY29uZmlndXJlLmFjIHRvIHRoZSBpc3N1ZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9jb3Jvc3luYy9jb3Jvc3luYy9wdWxsLzUxNV0KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBhYzUxM2U5My4uMjQwY2ZlZDQgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTQ1OSw4ICs0NTksOCBAQCBpZiB0ZXN0ICJ4JHtlbmFibGVfdGVzdGFnZW50c30iID0geHllczsgdGhlbgotIGZpCi0gCi0gaWYgdGVzdCAieCR7ZW5hYmxlX3JkbWF9IiA9IHh5ZXM7IHRoZW4KLS0JUEtHX0NIRUNLX01PRFVMRVMoW3JkbWFjbV0sW3JkbWFjbV0pCi0tCVBLR19DSEVDS19NT0RVTEVTKFtpYnZlcmJzXSxbaWJ2ZXJic10pCi0rCVBLR19DSEVDS19NT0RVTEVTKFtyZG1hY21dLFtsaWJyZG1hY21dKQotKwlQS0dfQ0hFQ0tfTU9EVUxFUyhbaWJ2ZXJic10sW2xpYmlidmVyYnNdKQotIAlBQ19ERUZJTkVfVU5RVU9URUQoW0hBVkVfUkRNQV0sIDEsIFtoYXZlIHJkbWFjbV0pCi0gCVBBQ0tBR0VfRkVBVFVSRVM9IiRQQUNLQUdFX0ZFQVRVUkVTIHJkbWEiCi0gCVdJVEhfTElTVD0iJFdJVEhfTElTVCAtLXdpdGggcmRtYSIKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jL2Nvcm9zeW5jLmNvbmYgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luYy9jb3Jvc3luYy5jb25mCmluZGV4IDZhZWY5ZGUuLjc0NGEzMGYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jL2Nvcm9zeW5jLmNvbmYKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmMvY29yb3N5bmMuY29uZgpAQCAtMSw1OCArMSw2MSBAQAotIyBTdGFydGluZyBwb2ludCBmb3IgY2x1c3RlciB3aXRoIHBhY2VtYWtlci9vcGVuYWlzCi1jb21wYXRpYmlsaXR5OiBub25lCi0KLWNvcm9zeW5jIHsKLQkgdXNlcjogIHJvb3QKLQkgZ3JvdXA6IHJvb3QKLX0KLQotYWlzZXhlYyB7Ci0Jd2l0aCBQYWNlbWFrZXIKLQl1c2VyOiAgcm9vdAotCWdyb3VwOiByb290Ci19Ci0KLXNlcnZpY2UgewotCW5hbWU6IHBhY2VtYWtlcgotCXZlcjogMQotfQotCisjIFBsZWFzZSByZWFkIHRoZSBjb3Jvc3luYy5jb25mLjUgbWFudWFsIHBhZ2UKIHRvdGVtIHsKIAl2ZXJzaW9uOiAyCi0Jc2VjYXV0aDogb2ZmCi0JdGhyZWFkczogMAotCWludGVyZmFjZSB7Ci0JCXJpbmdudW1iZXI6IDAKLQkJIyBDbHVzdGVyIG5ldHdvcmsgYWRkcmVzcwotCQliaW5kbmV0YWRkcjogMTkyLjE2OC4xMC4wCi0JCSMgU2hvdWxkIGJlIGZpbmUgaW4gbW9zdCBjYXNlcywgZG9uJ3QgZm9yZ2V0IHRvIGFsbG93Ci0JCSMgcGFja2V0cyBmb3IgdGhpcyBhZGRyZXNzL3BvcnQgaW4gbmV0ZmlsdGVyIGlmIHRoZXJlCi0JCSMgaXMgcmVzdHJpY3RpdmUgcG9saWN5IHNldCBmb3IgY2x1c3RlciBuZXR3b3JrCi0JCW1jYXN0YWRkcjogMjI2Ljk0LjEuMQotCQltY2FzdHBvcnQ6IDU0MDUKLQl9CisKKwkjIFNldCBuYW1lIG9mIHRoZSBjbHVzdGVyCisJY2x1c3Rlcl9uYW1lOiB0ZXN0Q2x1c3RlcgorCisJIyBjcnlwdG9fY2lwaGVyIGFuZCBjcnlwdG9faGFzaDogVXNlZCBmb3IgbXV0dWFsIG5vZGUgYXV0aGVudGljYXRpb24uCisJIyBJZiB5b3UgY2hvb3NlIHRvIGVuYWJsZSB0aGlzLCB0aGVuIGRvIHJlbWVtYmVyIHRvIGNyZWF0ZSBhIHNoYXJlZAorCSMgc2VjcmV0IHdpdGggImNvcm9zeW5jLWtleWdlbiIuCisJIyBlbmFibGluZyBjcnlwdG9fY2lwaGVyLCByZXF1aXJlcyBhbHNvIGVuYWJsaW5nIG9mIGNyeXB0b19oYXNoLgorCSMgY3J5cHRvIHdvcmtzIG9ubHkgd2l0aCBrbmV0IHRyYW5zcG9ydAorCWNyeXB0b19jaXBoZXI6IG5vbmUKKwljcnlwdG9faGFzaDogbm9uZQogfQogCiBsb2dnaW5nIHsKKwkjIExvZyB0aGUgc291cmNlIGZpbGUgYW5kIGxpbmUgd2hlcmUgbWVzc2FnZXMgYXJlIGJlaW5nCisJIyBnZW5lcmF0ZWQuIFdoZW4gaW4gZG91YnQsIGxlYXZlIG9mZi4gUG90ZW50aWFsbHkgdXNlZnVsIGZvcgorCSMgZGVidWdnaW5nLgogCWZpbGVsaW5lOiBvZmYKLQl0b19zdGRlcnI6IG5vCisJIyBMb2cgdG8gc3RhbmRhcmQgZXJyb3IuIFdoZW4gaW4gZG91YnQsIHNldCB0byB5ZXMuIFVzZWZ1bCB3aGVuCisJIyBydW5uaW5nIGluIHRoZSBmb3JlZ3JvdW5kICh3aGVuIGludm9raW5nICJjb3Jvc3luYyAtZiIpCisJdG9fc3RkZXJyOiB5ZXMKKwkjIExvZyB0byBhIGxvZyBmaWxlLiBXaGVuIHNldCB0byAibm8iLCB0aGUgImxvZ2ZpbGUiIG9wdGlvbgorCSMgbXVzdCBub3QgYmUgc2V0LgogCXRvX2xvZ2ZpbGU6IHllcwotCXRvX3N5c2xvZzogeWVzCiAJbG9nZmlsZTogL3Zhci9sb2cvY2x1c3Rlci9jb3Jvc3luYy5sb2cKKwkjIExvZyB0byB0aGUgc3lzdGVtIGxvZyBkYWVtb24uIFdoZW4gaW4gZG91YnQsIHNldCB0byB5ZXMuCisJdG9fc3lzbG9nOiB5ZXMKKwkjIExvZyBkZWJ1ZyBtZXNzYWdlcyAodmVyeSB2ZXJib3NlKS4gV2hlbiBpbiBkb3VidCwgbGVhdmUgb2ZmLgogCWRlYnVnOiBvZmYKLQl0aW1lc3RhbXA6IG9uCisJIyBMb2cgbWVzc2FnZXMgd2l0aCB0aW1lIHN0YW1wcy4gV2hlbiBpbiBkb3VidCwgc2V0IHRvIGhpcmVzIChvciBvbikKKwkjdGltZXN0YW1wOiBoaXJlcwogCWxvZ2dlcl9zdWJzeXMgewotCQlzdWJzeXM6IEFNRgorCQlzdWJzeXM6IFFVT1JVTQogCQlkZWJ1Zzogb2ZmCiAJfQogfQogCi1hbWYgewotCW1vZGU6IGRpc2FibGVkCitxdW9ydW0geworCSMgRW5hYmxlIGFuZCBjb25maWd1cmUgcXVvcnVtIHN1YnN5c3RlbSAoZGVmYXVsdDogb2ZmKQorCSMgc2VlIGFsc28gY29yb3N5bmMuY29uZi41IGFuZCB2b3RlcXVvcnVtLjUKKwlwcm92aWRlcjogY29yb3N5bmNfdm90ZXF1b3J1bQogfQogCi1xdW9ydW0gewotCSMgUXVvcnVtIGZvciB0aGUgUGFjZW1ha2VyIENsdXN0ZXIgUmVzb3VyY2UgTWFuYWdlcgotCXByb3ZpZGVyOiBjb3Jvc3luY192b3RlcXVvcnVtCi0JZXhwZWN0ZWRfdm90ZXM6IDEKK25vZGVsaXN0IHsKKwkjIENoYW5nZS91bmNvbW1lbnQvYWRkIG5vZGUgc2VjdGlvbnMgdG8gbWF0Y2ggY2x1c3RlciBjb25maWd1cmF0aW9uCisKKwlub2RlIHsKKwkJIyBIb3N0bmFtZSBvZiB0aGUgbm9kZQorCQluYW1lOiBub2RlMQorCQkjIENsdXN0ZXIgbWVtYmVyc2hpcCBub2RlIGlkZW50aWZpZXIKKwkJbm9kZWlkOiAxCisJCSMgQWRkcmVzcyBvZiBmaXJzdCBsaW5rCisJCXJpbmcwX2FkZHI6IDEyNy4wLjAuMQorCQkjIFdoZW4ga25ldCB0cmFuc3BvcnQgaXMgdXNlZCBpdCdzIHBvc3NpYmxlIHRvIGRlZmluZSB1cCB0byA4IGxpbmtzCisJCSNyaW5nMV9hZGRyOiAxOTIuMTY4LjEuMQorCX0KKwkjIC4uLgogfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvY29yb3N5bmMvY29yb3N5bmNfMi40LjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luY18yLjQuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWVmYmNjYS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luY18yLjQuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDgxICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIENvcm9zeW5jIENsdXN0ZXIgRW5naW5lIGFuZCBBcHBsaWNhdGlvbiBQcm9ncmFtbWluZyBJbnRlcmZhY2VzIgotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHRoZSBDb3Jvc3luYyBDbHVzdGVyIEVuZ2luZSBFeGVjdXRpdmUsIHNldmVyYWwgZGVmYXVsdCBcCi1BUElzIGFuZCBsaWJyYXJpZXMsIGRlZmF1bHQgY29uZmlndXJhdGlvbiBmaWxlcywgYW5kIGFuIGluaXQgc2NyaXB0LiIKLUhPTUVQQUdFID0gImh0dHA6Ly9jb3Jvc3luYy5naXRodWIuaW8vY29yb3N5bmMvIgotCi1TRUNUSU9OID0gImJhc2UiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVzZXJhZGQKLQotU1JDX1VSSSA9ICJodHRwOi8vYnVpbGQuY2x1c3RlcmxhYnMub3JnL2Nvcm9zeW5jL3JlbGVhc2VzLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb3Jvc3luYy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWZpeC1wa2djb25maWctaXNzdWUtb2YtcmRtYS5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTM2YTA1NmI4OTNjMzEzYzRlYzFmZTBkN2U2Y2RlYmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWI2ZWFmZGI4ZjQzYTIzNzk0ZmMxNWQ0YzUxOThiYmQ2NzU5MDYwY2IxM2M4ZDJkMWU3OGE2YzgzNjBhYmE1ZiIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrXC4oPyE5OSlcZCsoXC5cZCspKykiCi0KLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTg1ZWI0Y2UyNDAzM2FkYjYwODhkZDFkNmZmYzVlNWQiCi0KLURFUEVORFMgPSAiZ3JvZmYtbmF0aXZlIG5zcyBsaWJxYiIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImNvcm9zeW5jLnNlcnZpY2UgY29yb3N5bmMtbm90aWZ5ZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdxZGV2aWNlJywgJ2Nvcm9zeW5jLXFkZXZpY2Uuc2VydmljZScsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3FuZXRkJywgJ2Nvcm9zeW5jLXFuZXRkLnNlcnZpY2UnLCAnJywgZCl9IFwKLSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKLQotSU5JVFNDUklQVF9OQU1FID0gImNvcm9zeW5jLWRhZW1vbiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIGRidXMgcWRldmljZSBxbmV0ZCBzbm1wIFwKLSIKLQotUEFDS0FHRUNPTkZJR1tkYnVzXSA9ICItLWVuYWJsZS1kYnVzLC0tZGlzYWJsZS1kYnVzLGRidXMiCi1QQUNLQUdFQ09ORklHW3FkZXZpY2VdID0gIi0tZW5hYmxlLXFkZXZpY2VzLC0tZGlzYWJsZS1xZGV2aWNlcyIKLVBBQ0tBR0VDT05GSUdbcW5ldGRdID0gIi0tZW5hYmxlLXFuZXRkLC0tZGlzYWJsZS1xbmV0ZCIKLVBBQ0tBR0VDT05GSUdbcmRtYV0gPSAiLS1lbmFibGUtcmRtYSwtLWRpc2FibGUtcmRtYSxyZG1hLWNvcmUiCi1QQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAsbmV0LXNubXAiCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQgLS13aXRoLXN5c3RlbWRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCAtLXdpdGhvdXQtc3lzdGVtZGRpcixzeXN0ZW1kIgotCi1FWFRSQV9PRUNPTkYgPSAiYWNfY3ZfcGF0aF9CQVNIUEFUSD0ke2Jhc2VfYmluZGlyfS9iYXNoIGFwX2N2X2NjX3BpZT1ubyIKLUVYVFJBX09FTUFLRSA9ICJ0bXBmaWxlc2Rpcl9EQVRBPSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgKCBjZCAke1N9Ci0gICAgJHtTfS9hdXRvZ2VuLnNoICkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vY29yb3N5bmMuY29uZiAke0R9LyR7c3lzY29uZmRpcn0vY29yb3N5bmMvY29yb3N5bmMuY29uZi5leGFtcGxlCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vaW5pdC9jb3Jvc3luYy5zeXNjb25maWcuZXhhbXBsZSAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvY29yb3N5bmMKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS90b29scy9jb3Jvc3luYy1ub3RpZnlkLnN5c2NvbmZpZy5leGFtcGxlICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9jb3Jvc3luYy1ub3RpZnlkCi0KLSAgICBybSAtcmYgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLSAgICBlY2hvICJkIHJvb3Qgcm9vdCAwNzU1ICR7bG9jYWxzdGF0ZWRpcn0vbG9nL2NsdXN0ZXIgbm9uZSIgPiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wNV9jb3Jvc3luYwotCi0gICAgaWYgWyAke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncW5ldGQnLCBkKX0gXTsgdGhlbgotICAgICAgICBjaG93biAtUiBjb3JvcW5ldGQ6Y29yb3FuZXRkICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9xbmV0ZAotICAgICAgICBlY2hvICJkIGNvcm9xbmV0ZCBjb3JvcW5ldGQgMDc3MCAvdmFyL3J1bi9jb3Jvc3luYy1xbmV0ZCBub25lIiA+PiAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wNV9jb3Jvc3luYwotICAgIGZpCi0KLSAgICBpZiBbICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsZCl9IF07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCi0gICAgICAgIGVjaG8gImQgJHtsb2NhbHN0YXRlZGlyfS9sb2cvY2x1c3RlciAtIC0gLSAtIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvY29yb3N5bmMuY29uZgotICAgIGZpCi19Ci0KLVJERVBFTkRTXyR7UE59ICs9ICJiYXNoICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAnc3lzdmluaXQtcGlkb2YnLCAncHJvY3BzJywgZCl9IgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZXhlY2Rpcn0vbGNyc28vLmRlYnVnIgotRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L3NubXAvbWlicy9DT1JPU1lOQy1NSUIudHh0IgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gY29yb3FuZXRkIgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSAtZCAvIC1NIC1zIC9iaW4vbm9sb2dpbiAtYyAnVXNlciBmb3IgY29yb3N5bmMtcW5ldGQnIC1nIGNvcm9xbmV0ZCBjb3JvcW5ldGQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luY18zLjAuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2Nvcm9zeW5jL2Nvcm9zeW5jXzMuMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwNTMxZDMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9jb3Jvc3luYy9jb3Jvc3luY18zLjAuMy5iYgpAQCAtMCwwICsxLDc0IEBACitTVU1NQVJZID0gIlRoZSBDb3Jvc3luYyBDbHVzdGVyIEVuZ2luZSBhbmQgQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlcyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgQ29yb3N5bmMgQ2x1c3RlciBFbmdpbmUgRXhlY3V0aXZlLCBzZXZlcmFsIGRlZmF1bHQgXAorQVBJcyBhbmQgbGlicmFyaWVzLCBkZWZhdWx0IGNvbmZpZ3VyYXRpb24gZmlsZXMsIGFuZCBhbiBpbml0IHNjcmlwdC4iCitIT01FUEFHRSA9ICJodHRwOi8vY29yb3N5bmMuZ2l0aHViLmlvL2Nvcm9zeW5jLyIKKworU0VDVElPTiA9ICJiYXNlIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1c2VyYWRkCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9jb3Jvc3luYy5jb25mIFwKKyAgICAgICAgICAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjBlYjkwM2ViOTg0ZjZhNzI4MjgyYzE5OTgyNWU0NDJlOGJiYTg2OWFjZWZkMjIzOTAwNzZlZjNhMzNhNGRlZCIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkK1wuKD8hOTkpXGQrKFwuXGQrKSspIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE4NWViNGNlMjQwMzNhZGI2MDg4ZGQxZDZmZmM1ZTVkIgorCitERVBFTkRTID0gImdyb2ZmLW5hdGl2ZSBuc3MgbGlicWIga3Jvbm9zbmV0IgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiY29yb3N5bmMuc2VydmljZSBjb3Jvc3luYy1ub3RpZnlkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3FkZXZpY2UnLCAnY29yb3N5bmMtcWRldmljZS5zZXJ2aWNlJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncW5ldGQnLCAnY29yb3N5bmMtcW5ldGQuc2VydmljZScsICcnLCBkKX0gXAorIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgorCitJTklUU0NSSVBUX05BTUUgPSAiY29yb3N5bmMtZGFlbW9uIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgZGJ1cyBzbm1wIFwKKyIKKworUEFDS0FHRUNPTkZJR1tkYnVzXSA9ICItLWVuYWJsZS1kYnVzLC0tZGlzYWJsZS1kYnVzLGRidXMiCitQQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAsbmV0LXNubXAiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0tZW5hYmxlLXN5c3RlbWQgLS13aXRoLXN5c3RlbWRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLWRpc2FibGUtc3lzdGVtZCAtLXdpdGhvdXQtc3lzdGVtZGRpcixzeXN0ZW1kIgorCitFWFRSQV9PRUNPTkYgPSAiYWNfY3ZfcGF0aF9CQVNIUEFUSD0ke2Jhc2VfYmluZGlyfS9iYXNoIGFwX2N2X2NjX3BpZT1ubyIKK0VYVFJBX09FTUFLRSA9ICJ0bXBmaWxlc2Rpcl9EQVRBPSIKKworI2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworIyAgICAoIGNkICR7U30KKyMgICAgJHtTfS9hdXRvZ2VuLnNoICkKKyN9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1dPUktESVJ9L2Nvcm9zeW5jLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nvcm9zeW5jL2Nvcm9zeW5jLmNvbmYuZXhhbXBsZQorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnLworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2luaXQvY29yb3N5bmMuc3lzY29uZmlnLmV4YW1wbGUgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2Nvcm9zeW5jCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vdG9vbHMvY29yb3N5bmMtbm90aWZ5ZC5zeXNjb25maWcuZXhhbXBsZSAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvY29yb3N5bmMtbm90aWZ5ZAorCisgICAgcm0gLXJmICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisgICAgZWNobyAiZCByb290IHJvb3QgMDc1NSAke2xvY2Fsc3RhdGVkaXJ9L2xvZy9jbHVzdGVyIG5vbmUiID4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvMDVfY29yb3N5bmMKKworICAgIGlmIFsgJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3FuZXRkJywgZCl9IF07IHRoZW4KKyAgICAgICAgY2hvd24gLVIgY29yb3FuZXRkOmNvcm9xbmV0ZCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vcW5ldGQKKyAgICAgICAgZWNobyAiZCBjb3JvcW5ldGQgY29yb3FuZXRkIDA3NzAgL3Zhci9ydW4vY29yb3N5bmMtcW5ldGQgbm9uZSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvMDVfY29yb3N5bmMKKyAgICBmaQorCisgICAgaWYgWyAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLGQpfSBdOyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorICAgICAgICBlY2hvICJkICR7bG9jYWxzdGF0ZWRpcn0vbG9nL2NsdXN0ZXIgLSAtIC0gLSIgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL2Nvcm9zeW5jLmNvbmYKKyAgICBmaQorfQorCitSREVQRU5EU18ke1BOfSArPSAiYmFzaCAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3N5c3Zpbml0LXBpZG9mJywgJ3Byb2NwcycsIGQpfSIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmV4ZWNkaXJ9L2xjcnNvLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9zbm1wL21pYnMvQ09ST1NZTkMtTUlCLnR4dCIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIGNvcm9xbmV0ZCIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gLWQgLyAtTSAtcyAvYmluL25vbG9naW4gLWMgJ1VzZXIgZm9yIGNvcm9zeW5jLXFuZXRkJyAtZyBjb3JvcW5ldGQgY29yb3FuZXRkIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvZGxtL2RsbS8wMDAxLWRsbS1maXgtcGFja2FnZS1xYS1lcnJvci5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG0vMDAwMS1kbG0tZml4LXBhY2thZ2UtcWEtZXJyb3IucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlMzg0ZjcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvZGxtL2RsbS8wMDAxLWRsbS1maXgtcGFja2FnZS1xYS1lcnJvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gMWZiNjg0MzNiZGU5N2Q1NzFmYzc4MWI1MmM5NTIxYjE3ZmJiOGRmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDI0IEp1bCAyMDE4IDE3OjQyOjQzICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGRsbTogZml4IHBhY2thZ2UgcWEgZXJyb3IKLQotcGFzcyBMREZMQUcgdG8gbWFrZWZpbGUgdG8gZml4IGJlbG93IGVycm9yOgotZG9fcGFja2FnZV9xYTogUUEgSXNzdWU6IE5vIEdOVV9IQVNIIGluIHRoZSBlbGYgYmluYXJ5OgotL3BhY2thZ2VzLXNwbGl0L2RsbS91c3Ivc2Jpbi9kbG1fc3Rvbml0aCcgW2xkZmxhZ3NdCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtvZS1zcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLS0tLQotIGZlbmNlL01ha2VmaWxlIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZmVuY2UvTWFrZWZpbGUgYi9mZW5jZS9NYWtlZmlsZQotaW5kZXggY2NhMGIyYy4uMmIzOTYzYyAxMDA2NDQKLS0tLSBhL2ZlbmNlL01ha2VmaWxlCi0rKysgYi9mZW5jZS9NYWtlZmlsZQotQEAgLTMzLDcgKzMzLDcgQEAgQklOX0NGTEFHUyArPSAtZlBJRSAtRFBJRQotIEJJTl9DRkxBR1MgKz0gYHBrZy1jb25maWcgbGlieG1sLTIuMCAtLWNmbGFnc2AKLSBCSU5fQ0ZMQUdTICs9IC1JLi4vaW5jbHVkZQotIAotLUJJTl9MREZMQUdTICs9IC1XbCwteixub3cgLVdsLC16LHJlbHJvIC1waWUKLStCSU5fTERGTEFHUyArPSAkKExERkxBR1MpIC1XbCwteixub3cgLVdsLC16LHJlbHJvIC1waWUKLSBCSU5fTERGTEFHUyArPSBgcGtnLWNvbmZpZyBsaWJ4bWwtMi4wIC0tbGlic2AKLSBCSU5fTERGTEFHUyArPSAtbGRsCi0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG0vMDAwMS1tYWtlLVJlcGxhY2UtY3AtYS13aXRoLW1vZGUtcHJlc2VydmluZy1vcHRpb25zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvZGxtL2RsbS8wMDAxLW1ha2UtUmVwbGFjZS1jcC1hLXdpdGgtbW9kZS1wcmVzZXJ2aW5nLW9wdGlvbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTZhMzc1NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG0vMDAwMS1tYWtlLVJlcGxhY2UtY3AtYS13aXRoLW1vZGUtcHJlc2VydmluZy1vcHRpb25zLnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gMmY3MmY5MjcxYjhkZDYxY2E1MDkyZTAyNWIwZjgyNDNjNmZkNjhmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDMgTWFyIDIwMjAgMTI6Mzg6MTkgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWFrZTogUmVwbGFjZSBjcCAtYSB3aXRoIG1vZGUgcHJlc2VydmluZyBvcHRpb25zCisKK0hlbHBzIGZpeCBwZXJtaXNzaW9ucyBpbiBzdGFnaW5nIGFyZWEKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZGxtX2NvbnRyb2xkL01ha2VmaWxlIHwgNCArKy0tCisgbGliZGxtL01ha2VmaWxlICAgICAgIHwgOCArKysrLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZGxtX2NvbnRyb2xkL01ha2VmaWxlIGIvZGxtX2NvbnRyb2xkL01ha2VmaWxlCitpbmRleCA2MDgxY2Y4Li5mZTcxYmUyIDEwMDY0NAorLS0tIGEvZGxtX2NvbnRyb2xkL01ha2VmaWxlCisrKysgYi9kbG1fY29udHJvbGQvTWFrZWZpbGUKK0BAIC04OCw4ICs4OCw4IEBAIGluc3RhbGw6IGFsbAorIAkkKElOU1RBTEwpIC1kICQoREVTVERJUikvJChQS0dESVIpCisgCSQoSU5TVEFMTCkgLW0gNzU1ICQoQklOX1RBUkdFVCkgJChERVNURElSKS8kKEJJTkRJUikKKyAJJChJTlNUQUxMKSAtbSA3NTUgJChMSUJfVEFSR0VUKSAkKERFU1RESVIpLyQoTElCRElSKQorLQljcCAtYSAkKExJQl9TTykgJChERVNURElSKS8kKExJQkRJUikKKy0JY3AgLWEgJChMSUJfU01BSk9SKSAkKERFU1RESVIpLyQoTElCRElSKQorKwljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAkKExJQl9TTykgJChERVNURElSKS8kKExJQkRJUikKKysJY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgJChMSUJfU01BSk9SKSAkKERFU1RESVIpLyQoTElCRElSKQorIAkkKElOU1RBTEwpIC1tIDY0NCAkKExJQl9QQykgJChERVNURElSKS8kKFBLR0RJUikKKyAJJChJTlNUQUxMKSAtbSA2NDQgbGliZGxtY29udHJvbC5oICQoREVTVERJUikvJChIRFJESVIpCisgCSQoSU5TVEFMTCkgLW0gNjQ0IGRsbV9jb250cm9sZC44ICQoREVTVERJUikvJChNQU5ESVIpL21hbjgvCitkaWZmIC0tZ2l0IGEvbGliZGxtL01ha2VmaWxlIGIvbGliZGxtL01ha2VmaWxlCitpbmRleCBhYjMyNzYxLi44ODIwYmY4IDEwMDY0NAorLS0tIGEvbGliZGxtL01ha2VmaWxlCisrKysgYi9saWJkbG0vTWFrZWZpbGUKK0BAIC0xMjUsMTAgKzEyNSwxMCBAQCBpbnN0YWxsOiBhbGwKKyAJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpLyQoVURFVkRJUikKKyAJJChJTlNUQUxMKSAtYyAtbSA3NTUgJChMSUJfVEFSR0VUKSAkKERFU1RESVIpLyQoTElCRElSKQorIAkkKElOU1RBTEwpIC1jIC1tIDc1NSAkKExMVF9UQVJHRVQpICQoREVTVERJUikvJChMSUJESVIpCistCWNwIC1hICQoTElCX1NPKSAkKERFU1RESVIpLyQoTElCRElSKQorLQljcCAtYSAkKExJQl9TTUFKT1IpICQoREVTVERJUikvJChMSUJESVIpCistCWNwIC1hICQoTExUX1NPKSAkKERFU1RESVIpLyQoTElCRElSKQorLQljcCAtYSAkKExMVF9TTUFKT1IpICQoREVTVERJUikvJChMSUJESVIpCisrCWNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzICQoTElCX1NPKSAkKERFU1RESVIpLyQoTElCRElSKQorKwljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAkKExJQl9TTUFKT1IpICQoREVTVERJUikvJChMSUJESVIpCisrCWNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzICQoTExUX1NPKSAkKERFU1RESVIpLyQoTElCRElSKQorKwljcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAkKExMVF9TTUFKT1IpICQoREVTVERJUikvJChMSUJESVIpCisgCSQoSU5TVEFMTCkgLW0gNjQ0ICQoTElCX1BDKSAkKERFU1RESVIpLyQoUEtHRElSKQorIAkkKElOU1RBTEwpIC1tIDY0NCAkKExMVF9QQykgJChERVNURElSKS8kKFBLR0RJUikKKyAJJChJTlNUQUxMKSAtYyAtbSA2NDQgJChIRFJfVEFSR0VUKSAkKERFU1RESVIpLyQoSERSRElSKQorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvZGxtL2RsbV80LjAuOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWV4dGVuZGVkL2RsbS9kbG1fNC4wLjkuYmIKaW5kZXggNGJmOTk0NC4uNTc3ZGI3MCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQvZGxtL2RsbV80LjAuOS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9kbG0vZGxtXzQuMC45LmJiCkBAIC04LDYgKzgsNyBAQAogU1JDX1VSSSA9ICJodHRwczovL3BhZ3VyZS5pby9kbG0vYXJjaGl2ZS9kbG0tJHtQVn0vZGxtLWRsbS0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1kbG0tZml4LWNvbXBpbGUtZXJyb3Itc2luY2UteG1sMi1jb25maWctc2hvdWxkLW5vdC1iLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLW1hY3Jvcy1pbi1nbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1ha2UtUmVwbGFjZS1jcC1hLXdpdGgtbW9kZS1wcmVzZXJ2aW5nLW9wdGlvbnMucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICI0YzU3YTk0MWExNTU0Nzg1OWNkMzhmZDU1ZjY2Mzg4ZSIKQEAgLTIxLDcgKzIyLDcgQEAKIAogUyA9ICIke1dPUktESVJ9L2RsbS1kbG0tJHtQVn0iCiAKLURFUEVORFMgPSAiY29yb3N5bmMgc3lzdGVtZCIKK0RFUEVORFMgKz0gImNvcm9zeW5jIgogCiBpbmhlcml0IHBrZ2NvbmZpZyBzeXN0ZW1kIGZlYXR1cmVzX2NoZWNrCiAKQEAgLTQwLDI5ICs0MSwyMCBAQAogICAgIHNlZCAtaSAtZSAicy8tZnN0YWNrLWNsYXNoLXByb3RlY3Rpb24vL2ciICR7U30vKi9NYWtlZmlsZQogfQogCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Citkb19jb21waWxlKCkgewogICAgIHNlZCAtaSAicy9saWJzeXN0ZW1kLWRhZW1vbi9saWJzeXN0ZW1kL2ciICR7U30vZGxtX2NvbnRyb2xkL01ha2VmaWxlCiAgICAgc2VkIC1pIC1lICJzLyAke0RPTlRCVUlMRH0vL2ciICR7U30vTWFrZWZpbGUKLX0KLQotZG9fY29tcGlsZSAoKSB7CiAgICAgb2VfcnVubWFrZSAnQ0M9JHtDQ30nCiB9CiAKLWRvX2luc3RhbGxfYXBwZW5kICgpewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnLwotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2luaXQvZGxtLnN5c2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvZGxtCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vaW5pdC9kbG0uaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZGxtCi0KLSAgICAjIGluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGVzCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2luaXQvZGxtLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBmaQotfQotCiBkb19pbnN0YWxsKCkgewogICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfQorICAgIGluc3RhbGwgLURtIDA2NDQgJHtTfS9pbml0L2RsbS5zeXNjb25maWcgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2RsbQorICAgIGluc3RhbGwgLURtIDA2NDQgJHtTfS9pbml0L2RsbS5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9kbG0KKworICAgICMgaW5zdGFsbCBzeXN0ZW1kIHVuaXQgZmlsZXMKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLURtIDA2NDQgJHtTfS9pbml0L2RsbS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2RsbS5zZXJ2aWNlCisgICAgZmkKIH0KIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQva3Jvbm9zbmV0L2tyb25vc25ldF8xLjE1LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZXh0ZW5kZWQva3Jvbm9zbmV0L2tyb25vc25ldF8xLjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZiZjI2OGQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1leHRlbmRlZC9rcm9ub3NuZXQva3Jvbm9zbmV0XzEuMTUuYmIKQEAgLTAsMCArMSwyMyBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKyMgUmVsZWFzZWQgdW5kZXIgdGhlIE1JVCBsaWNlbnNlIChzZWUgQ09QWUlORy5NSVQgZm9yIHRoZSB0ZXJtcykKKworU1VNTUFSWSA9ICIgS3Jvbm9zbmV0LCBvZnRlbiByZWZlcnJlZCB0byBhcyBrbmV0LCBpcyBhIG5ldHdvcmsgYWJzdHJhY3Rpb24gbGF5ZXIgZGVzaWduZWQgZm9yIEhpZ2ggQXZhaWxhYmlsaXR5IHVzZSBjYXNlcywgd2hlcmUgcmVkdW5kYW5jeSwgc2VjdXJpdHksIGZhdWx0IHRvbGVyYW5jZSBhbmQgZmFzdCBmYWlsLW92ZXIgYXJlIHRoZSBjb3JlIHJlcXVpcmVtZW50cyBvZiB5b3VyIGFwcGxpY2F0aW9uLiIKK0hPTUVQQUdFID0gImh0dHBzOi8va3Jvbm9zbmV0Lm9yZy8iCitMSUNFTlNFID0gIkdQTC0yLjArICYgTEdQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLmFwcGxpY2F0aW9uczttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5saWJyYXJpZXM7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJkb3h5Z2VuLW5hdGl2ZSBsaWJxYi1uYXRpdmUgbGlieG1sMi1uYXRpdmUgYnppcDIgbGlicWIgbGlieG1sMiBsaWJubCBsa3NjdHAtdG9vbHMgbHo0IGx6byBvcGVuc3NsIG5zcyB4eiB6bGliIHpzdGQiCisKK1NSQ1JFViA9ICIwYmE1OTg1YzNkZGVjODQyOWI5ODlmMGU3YmQzMzI0ZjUzZTBhOWIwIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2tyb25vc25ldC9rcm9ub3NuZXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPXN0YWJsZTEiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKKyMgbGlia25ldC90cmFuc3BvcnRfdWRwLmM6MzI2OjQ4OiBlcnJvcjogY29tcGFyaXNvbiBvZiBpbnRlZ2VycyBvZiBkaWZmZXJlbnQgc2lnbnM6ICd1bnNpZ25lZCBsb25nJyBhbmQgJ2ludCcgWy1XZXJyb3IsLVdzaWduLWNvbXBhcmVdCisjIGZvciAoY21zZyA9IENNU0dfRklSU1RIRFIoJm1zZyk7Y21zZzsgY21zZyA9IENNU0dfTlhUSERSKCZtc2csIGNtc2cpKSB7CisjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+CitDRkxBR1NfYXBwZW5kX3Rvb2xjaGFpbi1jbGFuZyA9ICIgLVduby1zaWduLWNvbXBhcmUiCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9jb25udHJhY2stdG9vbHMvY29ubnRyYWNrLXRvb2xzXzEuNC41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2Nvbm50cmFjay10b29scy9jb25udHJhY2stdG9vbHNfMS40LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxZTBlYzEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2Nvbm50cmFjay10b29scy9jb25udHJhY2stdG9vbHNfMS40LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIkNvbm5lY3Rpb24gdHJhY2tpbmcgdXNlcnNwYWNlIHRvb2xzIGZvciBMaW51eCIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiIKLQotREVQRU5EUyA9ICJsaWJuZm5ldGxpbmsgbGlibmV0ZmlsdGVyLWNvbm50cmFjayBsaWJuZXRmaWx0ZXItY3R0aW1lb3V0IFwKLSAgICAgICAgICAgbGlibmV0ZmlsdGVyLWN0aGVscGVyIGxpYm5ldGZpbHRlci1xdWV1ZSBiaXNvbi1uYXRpdmUgbGlidGlycGMiCi0KLUVYVFJBX09FQ09ORiArPSAiTElCUz0tbHRpcnBjIENQUEZMQUdTPS1JJHtTVEFHSU5HX0lOQ0RJUn0vdGlycGMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2Nvbm50cmFjay10b29scy9maWxlcy9jb25udHJhY2stdG9vbHMtJHtQVn0udGFyLmJ6MjtuYW1lPXRhciBcCi0gICAgZmlsZTovL2Nvbm50cmFjay1mYWlsb3ZlciBcCi0gICAgZmlsZTovL2luaXQgXAotIgotU1JDX1VSSVt0YXIubWQ1c3VtXSA9ICI5MzU2YTBjZDRkZjgxYTU5N2FjMjZkODdjY2ZlYmFjNCIKLVNSQ19VUklbdGFyLnNoYTI1NnN1bV0gPSAiMzZjNmQ5OWM3Njg0ODUxZDRkNzJlNzViZDA3ZmYzZjBmZjFiYWFmNGI2ZjA2OWViNzI0NDk5MGNkMWE5YTQ2MiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgcGtnY29uZmlnCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJjb25udHJhY2tkIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9jb25udHJhY2tkCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZG9jL3N5bmMvZnRmdy9jb25udHJhY2tkLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nvbm50cmFja2QvY29ubnRyYWNrZC5jb25mLnNhbXBsZQotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2Nvbm50cmFjay1mYWlsb3ZlciAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL2Nvbm50cmFjay1mYWlsb3ZlcgotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb25udHJhY2tkCi0KLSAgICAjIEZpeCBoYXJkY29kZWQgcGF0aHMgaW4gc2NyaXB0cwotICAgIHNlZCAtaSAncyEvdXNyL3NiaW4vISR7c2JpbmRpcn0vIWcnICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvY29ubnRyYWNrLWZhaWxvdmVyICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvY29ubnRyYWNrZAotICAgIHNlZCAtaSAncyEvZXRjLyEke3N5c2NvbmZkaXJ9LyFnJyAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL2Nvbm50cmFjay1mYWlsb3ZlciAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL2Nvbm50cmFja2QKLSAgICBzZWQgLWkgJ3MhL3Zhci8hJHtsb2NhbHN0YXRlZGlyfS8hZycgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb25udHJhY2stZmFpbG92ZXIgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb25udHJhY2tkICR7RH0vJHtzeXNjb25mZGlyfS9jb25udHJhY2tkL2Nvbm50cmFja2QuY29uZi5zYW1wbGUKLSAgICBzZWQgLWkgJ3MhXmV4cG9ydCBQQVRIPS4qIWV4cG9ydCBQQVRIPSR7YmFzZV9zYmluZGlyfToke2Jhc2VfYmluZGlyfToke3NiaW5kaXJ9OiR7YmluZGlyfSEnICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvY29ubnRyYWNrZAotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2Nvbm50cmFjay10b29scy9jb25udHJhY2stdG9vbHNfMS40LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvY29ubnRyYWNrLXRvb2xzL2Nvbm50cmFjay10b29sc18xLjQuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDUwYTg5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2Nvbm50cmFjay10b29scy9jb25udHJhY2stdG9vbHNfMS40LjYuYmIKQEAgLTAsMCArMSwzNCBAQAorU1VNTUFSWSA9ICJDb25uZWN0aW9uIHRyYWNraW5nIHVzZXJzcGFjZSB0b29scyBmb3IgTGludXgiCitTRUNUSU9OID0gIm5ldCIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGNhNDNjYmM4NDJjMjMzNmU4MzU5MjZjMjE2NmMyOGIiCisKK0RFUEVORFMgPSAibGlibmZuZXRsaW5rIGxpYm5ldGZpbHRlci1jb25udHJhY2sgbGlibmV0ZmlsdGVyLWN0dGltZW91dCBcCisgICAgICAgICAgIGxpYm5ldGZpbHRlci1jdGhlbHBlciBsaWJuZXRmaWx0ZXItcXVldWUgYmlzb24tbmF0aXZlIGxpYnRpcnBjIgorCitFWFRSQV9PRUNPTkYgKz0gIkxJQlM9LWx0aXJwYyBDUFBGTEFHUz0tSSR7U1RBR0lOR19JTkNESVJ9L3RpcnBjIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9jb25udHJhY2stdG9vbHMvZmlsZXMvY29ubnRyYWNrLXRvb2xzLSR7UFZ9LnRhci5iejI7bmFtZT10YXIgXAorICAgIGZpbGU6Ly9jb25udHJhY2stZmFpbG92ZXIgXAorICAgIGZpbGU6Ly9pbml0IFwKKyIKK1NSQ19VUklbdGFyLm1kNXN1bV0gPSAiYTlkYzc1Njc5MjEyMTMwMDdkZWY3OGFkNzIzMTMxMDkiCitTUkNfVVJJW3Rhci5zaGEyNTZzdW1dID0gIjU5MDg1OWNjODQ4MjQ1ZGJmZDljNjQ4Nzc2MWRkMzAzYjNhMTc3MWUwMDdmNGY0MjIxMzA2M2NhNTYyMDVkNWYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHBrZ2NvbmZpZworCitJTklUU0NSSVBUX05BTUUgPSAiY29ubnRyYWNrZCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vY29ubnRyYWNrZAorICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2RvYy9zeW5jL2Z0ZncvY29ubnRyYWNrZC5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9jb25udHJhY2tkL2Nvbm50cmFja2QuY29uZi5zYW1wbGUKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9jb25udHJhY2stZmFpbG92ZXIgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb25udHJhY2stZmFpbG92ZXIKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvY29ubnRyYWNrZAorCisgICAgIyBGaXggaGFyZGNvZGVkIHBhdGhzIGluIHNjcmlwdHMKKyAgICBzZWQgLWkgJ3MhL3Vzci9zYmluLyEke3NiaW5kaXJ9LyFnJyAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL2Nvbm50cmFjay1mYWlsb3ZlciAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL2Nvbm50cmFja2QKKyAgICBzZWQgLWkgJ3MhL2V0Yy8hJHtzeXNjb25mZGlyfS8hZycgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb25udHJhY2stZmFpbG92ZXIgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb25udHJhY2tkCisgICAgc2VkIC1pICdzIS92YXIvISR7bG9jYWxzdGF0ZWRpcn0vIWcnICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvY29ubnRyYWNrLWZhaWxvdmVyICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvY29ubnRyYWNrZCAke0R9LyR7c3lzY29uZmRpcn0vY29ubnRyYWNrZC9jb25udHJhY2tkLmNvbmYuc2FtcGxlCisgICAgc2VkIC1pICdzIV5leHBvcnQgUEFUSD0uKiFleHBvcnQgUEFUSD0ke2Jhc2Vfc2JpbmRpcn06JHtiYXNlX2JpbmRpcn06JHtzYmluZGlyfToke2JpbmRpcn0hJyAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL2Nvbm50cmFja2QKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZXRmaWx0ZXIvbGlibmV0ZmlsdGVyLWNvbm50cmFja18xLjAuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZXRmaWx0ZXIvbGlibmV0ZmlsdGVyLWNvbm50cmFja18xLjAuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWM4MTUwMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbGlibmV0ZmlsdGVyL2xpYm5ldGZpbHRlci1jb25udHJhY2tfMS4wLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIk5ldGZpbHRlciBjb25uZWN0aW9uIHRyYWNraW5nIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJVc2Vyc3BhY2UgbGlicmFyeSBwcm92aWRpbmcgYSBwcm9ncmFtbWluZyBpbnRlcmZhY2UgKEFQSSkgdG8gdGhlIExpbnV4IGtlcm5lbCBuZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBzdGF0ZSB0YWJsZSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9saWJuZXRmaWx0ZXJfY29ubnRyYWNrL2luZGV4Lmh0bWwiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PThjYTQzY2JjODQyYzIzMzZlODM1OTI2YzIxNjZjMjhiIgotREVQRU5EUyA9ICJsaWJuZm5ldGxpbmsgbGlibW5sIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3Lm5ldGZpbHRlci5vcmcvcHJvamVjdHMvbGlibmV0ZmlsdGVyX2Nvbm50cmFjay9maWxlcy9saWJuZXRmaWx0ZXJfY29ubnRyYWNrLSR7UFZ9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiMDEzZDE4MmMyZGY3MTZmY2I1ZWIyYTFmYjdmZWJkMWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzM2ODUzNTFlMjlkZmY5M2NjMjFmNTM0NGI2ZTYyOGU0MWUzMmI5ZjllNTY3ZjRiZWMwNDc4ZWI0MWY5ODliNiIKLQotUyA9ICIke1dPUktESVJ9L2xpYm5ldGZpbHRlcl9jb25udHJhY2stJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5ldGZpbHRlci9saWJuZXRmaWx0ZXItY29ubnRyYWNrXzEuMC44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5ldGZpbHRlci9saWJuZXRmaWx0ZXItY29ubnRyYWNrXzEuMC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkODk0MzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbGlibmV0ZmlsdGVyL2xpYm5ldGZpbHRlci1jb25udHJhY2tfMS4wLjguYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJOZXRmaWx0ZXIgY29ubmVjdGlvbiB0cmFja2luZyBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiVXNlcnNwYWNlIGxpYnJhcnkgcHJvdmlkaW5nIGEgcHJvZ3JhbW1pbmcgaW50ZXJmYWNlIChBUEkpIHRvIHRoZSBMaW51eCBrZXJuZWwgbmV0ZmlsdGVyIGNvbm5lY3Rpb24gdHJhY2tpbmcgc3RhdGUgdGFibGUiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5ldGZpbHRlci5vcmcvcHJvamVjdHMvbGlibmV0ZmlsdGVyX2Nvbm50cmFjay9pbmRleC5odG1sIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiIKK0RFUEVORFMgPSAibGlibmZuZXRsaW5rIGxpYm1ubCIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2xpYm5ldGZpbHRlcl9jb25udHJhY2svZmlsZXMvbGlibmV0ZmlsdGVyX2Nvbm50cmFjay0ke1BWfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gIjMxMjFiNTVhY2Y5NzMyMmRiODMwZGE3NWQ4NDA3Y2JhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBjZDEzYmUwMDg5MjM1Mjg2ODdhZjZjNmI4NjBmMzUzOTJkNDkyNTFjMDRlZTA2NDgyODJkMzZiMWZhZWMxY2YiCisKK1MgPSAiJHtXT1JLRElSfS9saWJuZXRmaWx0ZXJfY29ubnRyYWNrLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZnRubC9saWJuZnRubF8xLjEuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZnRubC9saWJuZnRubF8xLjEuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTFjMjcyMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbGlibmZ0bmwvbGlibmZ0bmxfMS4xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIGxvdy1sZXZlbCBpbnRlcmFjdGlvbiB3aXRoIG5mdGFibGVzIE5ldGxpbmsncyBBUEkgb3ZlciBsaWJtbmwiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Nzk4MDgzOTdjMzM1NWYxNjNjMDEyNjE2MTI1YzllMjYiCi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gImxpYm1ubCIKLQotU1JDUkVWID0gImE3MTU5OWRjMGFlMWE4MDhlOTcwZTk2ODUwZWE4M2Q3N2Y0NTI5OTQiCi1TUkNfVVJJID0gImdpdDovL2dpdC5uZXRmaWx0ZXIub3JnL2xpYm5mdG5sIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYXZvaWQtbmFtaW5nLWxvY2FsLWZ1bmN0aW9uLWFzLW9uZS1vZi1wcmludGYtZmFtaWx5LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZnRubC9saWJuZnRubF8xLjEuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9saWJuZnRubC9saWJuZnRubF8xLjEuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjQyOTU0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL2xpYm5mdG5sL2xpYm5mdG5sXzEuMS42LmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgbG93LWxldmVsIGludGVyYWN0aW9uIHdpdGggbmZ0YWJsZXMgTmV0bGluaydzIEFQSSBvdmVyIGxpYm1ubCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03OTgwODM5N2MzMzU1ZjE2M2MwMTI2MTYxMjVjOWUyNiIKK1NFQ1RJT04gPSAibGlicyIKK0RFUEVORFMgPSAibGlibW5sIgorCitTUkNSRVYgPSAiYWMwNzc4ZTQwM2ViNTE5ODZjZTE5YmNmMWE2ZThhZTNjZDgzZGNmYSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lm5ldGZpbHRlci5vcmcvbGlibmZ0bmwgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hdm9pZC1uYW1pbmctbG9jYWwtZnVuY3Rpb24tYXMtb25lLW9mLXByaW50Zi1mYW1pbHkucGF0Y2ggXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL25mdGFibGVzL2ZpbGVzLzAwMDEtdXBkYXRlLXB5dGhvbjMtbmZ0YWJsZXMtcmVmZXJlbmNlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL25mdGFibGVzL2ZpbGVzLzAwMDEtdXBkYXRlLXB5dGhvbjMtbmZ0YWJsZXMtcmVmZXJlbmNlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjIyNDM0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9uZnRhYmxlcy9maWxlcy8wMDAxLXVwZGF0ZS1weXRob24zLW5mdGFibGVzLXJlZmVyZW5jZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLUZyb20gZGRiZTY1MmJmMGY0ZWQzMDBiYWU5NDk3MjUwMTMwZDY4ZTRjYmY1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFydHVybyBCb3JyZXJvIEdvbnphbGV6IDxhcnR1cm9AbmV0ZmlsdGVyLm9yZz4KLURhdGU6IFR1ZSwgMTAgRGVjIDIwMTkgMTI6MDA6NDUgKzAxMDAKLVN1YmplY3Q6IHB5OiBsb2FkIHRoZSBTT05BTUUtdmVyc2lvbmVkIHNoYXJlZCBvYmplY3QKLQotSW5zdHJ1Y3QgdGhlIHB5dGhvbiBtb2R1bGUgdG8gbG9hZCB0aGUgU09OQU1FIHZlcnNpb25lZCBzaGFyZWQgb2JqZWN0LgotCi1Ob3JtYWwgZW5kLXVzZXIgc3lzdGVtcyBtYXkgb25seSBoYXZlIGF2YWlsYWJsZSBsaWJuZnRhYmxlcy5zby4xLjAuMCBhbmQgbm90Ci1saWJuZnRhYmxlcy5zbyB3aGljaCBpcyB1c3VhbGx5IG9ubHkgcHJlc2VudCBpbiBkZXZlbG9wZXIgc3lzdGVtcy4KLQotSW4gRGViaWFuIHN5c3RlbXMsIGZvciBleGFtcGxlOgotCi0gJSBkcGtnIC1MIGxpYm5mdGFibGVzMSB8IGdyZXAgc28uMQotIC91c3IvbGliL3g4Nl82NC1saW51eC1nbnUvbGlibmZ0YWJsZXMuc28uMS4wLjAKLSAvdXNyL2xpYi94ODZfNjQtbGludXgtZ251L2xpYm5mdGFibGVzLnNvLjEKLQotICUgZHBrZyAtTCBsaWJuZnRhYmxlcy1kZXYgfCBncmVwIHNvCi0gL3Vzci9saWIveDg2XzY0LWxpbnV4LWdudS9saWJuZnRhYmxlcy5zbwotCi1UaGUgIjEiIGlzIG5vdCBhIG1hZ2ljIG51bWJlciwgaXMgdGhlIFNPTkFNRSBvZiBsaWJuZnRhYmxlcyBpbiB0aGUgY3VycmVudAotdmVyc2lvbiwgYXMgc3RhdGVkIGluIE1ha2VfZ2xvYmFsLmFtLgotCi1SZXBvcnRlZC1ieTogTWljaGFlbCBCaWVibCA8YmllYmxAZGViaWFuLm9yZz4KLVNpZ25lZC1vZmYtYnk6IEFydHVybyBCb3JyZXJvIEdvbnphbGV6IDxhcnR1cm9AbmV0ZmlsdGVyLm9yZz4KLUFja2VkLWJ5OiBQaGlsIFN1dHRlciA8cGhpbEBud2wuY2M+Ci1TaWduZWQtb2ZmLWJ5OiBQYWJsbyBOZWlyYSBBeXVzbyA8cGFibG9AbmV0ZmlsdGVyLm9yZz4KLS0tLQotIHB5L25mdGFibGVzLnB5IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvcHkvbmZ0YWJsZXMucHkgYi9weS9uZnRhYmxlcy5weQotaW5kZXggNDhlYjU0ZmUuLjJhMGExZTg5IDEwMDY0NAotLS0tIGEvcHkvbmZ0YWJsZXMucHkKLSsrKyBiL3B5L25mdGFibGVzLnB5Ci1AQCAtNjQsNyArNjQsNyBAQCBjbGFzcyBOZnRhYmxlczoKLSAKLSAgICAgdmFsaWRhdG9yID0gTm9uZQotIAotLSAgICBkZWYgX19pbml0X18oc2VsZiwgc29maWxlPSJsaWJuZnRhYmxlcy5zbyIpOgotKyAgICBkZWYgX19pbml0X18oc2VsZiwgc29maWxlPSJsaWJuZnRhYmxlcy5zby4xIik6Ci0gICAgICAgICAiIiJJbnN0YW50aWF0ZSBhIG5ldyBOZnRhYmxlcyBjbGFzcyBvYmplY3QuCi0gCi0gICAgICAgICBBY2NlcHRzIGEgc2hhcmVkIG9iamVjdCBmaWxlIHRvIG9wZW4sIGJ5IGRlZmF1bHQgc3RhbmRhcmQgc2VhcmNoIHBhdGgKLS0tIAotY2dpdCB2MS4yLjEKLQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbmZ0YWJsZXMvbmZ0YWJsZXNfMC45LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbmZ0YWJsZXMvbmZ0YWJsZXNfMC45LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1YTdiY2MuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZmlsdGVyL25mdGFibGVzL25mdGFibGVzXzAuOS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotU1VNTUFSWSA9ICJOZXRmaWx0ZXIgVGFibGVzIHVzZXJzcGFjZSB1dGlsbGl0ZXMiCi1TRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMWE3OGZkZDg3OWEyNjNhNWUwYjQyZDFmYzU2NWU3OSIKLQotREVQRU5EUyA9ICJsaWJtbmwgbGlibmZ0bmwgYmlzb24tbmF0aXZlIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWluaS1nbXAnLCAnJywgJ2dtcCcsIGQpfSIKLQotIyBFbnN1cmUgd2UgcmVqZWN0IHRoZSAwLjA5OSB2ZXJzaW9uIGJ5IG1hdGNoaW5nIGF0IGxlYXN0IHR3byBkb3RzCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJuZnRhYmxlcy0oP1A8cHZlcj5cZCsoXC5cZCspezIsfSkudGFyLmJ6MiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm5ldGZpbHRlci5vcmcvcHJvamVjdHMvbmZ0YWJsZXMvZmlsZXMvJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXVwZGF0ZS1weXRob24zLW5mdGFibGVzLXJlZmVyZW5jZS5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5OTEzYjJiNDY4NjQzOTRkNDE5MTZiNzQ2MzhlMDg3NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NTZiOTE1Y2UyYTdhZWFmZjEyM2U0OTAwNmJlN2EwNjkwYTA5NjRlOTZjMDYyNzAzMTgxYTM2ZTJlNWVkYjc4IgotCi1pbmhlcml0IGF1dG90b29scyBtYW5wYWdlcyBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbiByZWFkbGluZSIKLVBBQ0tBR0VDT05GSUdbanNvbl0gPSAiLS13aXRoLWpzb24sIC0td2l0aG91dC1qc29uLCBqYW5zc29uIgotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFuLWRvYywgLS1kaXNhYmxlLW1hbi1kb2MsIGFzY2lpZG9jLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbbWluaS1nbXBdID0gIi0td2l0aC1taW5pLWdtcCwgLS13aXRob3V0LW1pbmktZ21wIgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0tZW5hYmxlLXB5dGhvbiAtLXdpdGgtcHl0aG9uLWJpbj0ke1BZVEhPTn0sIC0td2l0aC1weXRob24tYmluPSIiLCBweXRob24zIgotUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS13aXRoLWNsaT1yZWFkbGluZSwgLS13aXRob3V0LWNsaSwgcmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW3h0YWJsZXNdID0gIi0td2l0aC14dGFibGVzLCAtLXdpdGhvdXQteHRhYmxlcywgaXB0YWJsZXMiCi0KLWluaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3B5dGhvbjNuYXRpdmUnLCAnJywgZCl9Ci0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJrZXJuZWwtbW9kdWxlLW5mLXRhYmxlcyIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXB5dGhvbiIKLUZJTEVTXyR7UE59LXB5dGhvbiA9ICIke25vbmFyY2hfbGliZGlyfS8ke1BZVEhPTl9ESVJ9IgotUkRFUEVORFNfJHtQTn0tcHl0aG9uID0gInB5dGhvbjMtY29yZSBweXRob24zLWpzb24iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbmZ0YWJsZXMvbmZ0YWJsZXNfMC45LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1maWx0ZXIvbmZ0YWJsZXMvbmZ0YWJsZXNfMC45LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWI1N2FiYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWZpbHRlci9uZnRhYmxlcy9uZnRhYmxlc18wLjkuNC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIk5ldGZpbHRlciBUYWJsZXMgdXNlcnNwYWNlIHV0aWxsaXRlcyIKK1NFQ1RJT04gPSAibmV0IgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQxYTc4ZmRkODc5YTI2M2E1ZTBiNDJkMWZjNTY1ZTc5IgorCitERVBFTkRTID0gImxpYm1ubCBsaWJuZnRubCBiaXNvbi1uYXRpdmUgXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaW5pLWdtcCcsICcnLCAnZ21wJywgZCl9IgorCisjIEVuc3VyZSB3ZSByZWplY3QgdGhlIDAuMDk5IHZlcnNpb24gYnkgbWF0Y2hpbmcgYXQgbGVhc3QgdHdvIGRvdHMKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIm5mdGFibGVzLSg/UDxwdmVyPlxkKyhcLlxkKyl7Mix9KS50YXIuYnoyIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9uZnRhYmxlcy9maWxlcy8ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImZkZmQ1MWExMDgzZmIwNTRhNDg3YjUxNTliMWVkNWNkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA4Yjg2ODNhOWRiNWZiYTk4MGJjMDkyYjc1Mjg4YWY5OGQyMThiYmU4YWI0NDZkYWYyMzM4NTcwZDA3MzBmOWEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIG1hbnBhZ2VzIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uIHJlYWRsaW5lIgorUEFDS0FHRUNPTkZJR1tqc29uXSA9ICItLXdpdGgtanNvbiwgLS13aXRob3V0LWpzb24sIGphbnNzb24iCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4tZG9jLCAtLWRpc2FibGUtbWFuLWRvYywgYXNjaWlkb2MtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1ttaW5pLWdtcF0gPSAiLS13aXRoLW1pbmktZ21wLCAtLXdpdGhvdXQtbWluaS1nbXAiCitQQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS1lbmFibGUtcHl0aG9uIC0td2l0aC1weXRob24tYmluPSR7UFlUSE9OfSwgLS13aXRoLXB5dGhvbi1iaW49IiIsIHB5dGhvbjMiCitQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtY2xpPXJlYWRsaW5lLCAtLXdpdGhvdXQtY2xpLCByZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbeHRhYmxlc10gPSAiLS13aXRoLXh0YWJsZXMsIC0td2l0aG91dC14dGFibGVzLCBpcHRhYmxlcyIKKworaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAncHl0aG9uM25hdGl2ZScsICcnLCBkKX0KKworUlJFQ09NTUVORFNfJHtQTn0gKz0gImtlcm5lbC1tb2R1bGUtbmYtdGFibGVzIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uIgorRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7bm9uYXJjaF9saWJkaXJ9LyR7UFlUSE9OX0RJUn0iCitSREVQRU5EU18ke1BOfS1weXRob24gPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtanNvbiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLW1vZHVsZV8wLjAuMjAxOTA5MTMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC1tb2R1bGVfMC4wLjIwMTkwOTEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWRjOTdhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLW1vZHVsZV8wLjAuMjAxOTA5MTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1yZXF1aXJlIHdpcmVndWFyZC5pbmMKLQotaW5oZXJpdCBtb2R1bGUga2VybmVsLW1vZHVsZS1zcGxpdAotCi1ERVBFTkRTID0gInZpcnR1YWwva2VybmVsIGxpYm1ubCIKLQotIyBUaGlzIG1vZHVsZSByZXF1aXJlcyBMaW51eCAzLjEwIGhpZ2hlciBhbmQgc2V2ZXJhbCBuZXR3b3JraW5nIHJlbGF0ZWQKLSMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBGb3IgZXhhY3Qga2VybmVsIHJlcXVpcmVtZW50cyB2aXNpdDoKLSMgaHR0cHM6Ly93d3cud2lyZWd1YXJkLmlvL2luc3RhbGwvI2tlcm5lbC1yZXF1aXJlbWVudHMKLQotRVhUUkFfT0VNQUtFX2FwcGVuZCA9ICIgXAotICAgIEtFUk5FTERJUj0ke1NUQUdJTkdfS0VSTkVMX0RJUn0gXAotICAgICIKLQotTUFLRV9UQVJHRVRTID0gIm1vZHVsZSIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS14dC1oYXNobGltaXQiCi1NT0RVTEVfTkFNRSA9ICJ3aXJlZ3VhcmQiCi0KLSMgS2VybmVsIG1vZHVsZSBwYWNrYWdlcyBNVVNUIGJlZ2luIHdpdGggJ2tlcm5lbC1tb2R1bGUtJywgb3RoZXJ3aXNlCi0jIG11bHRpbGliIGltYWdlIGdlbmVyYXRpb24gY2FuIGZhaWwuCi0jCi0jIFRoZSBmb2xsb3dpbmcgbGluZSBpcyBvbmx5IG5lY2Vzc2FyeSBpZiB0aGUgcmVjaXBlIG5hbWUgZG9lcyBub3QgYmVnaW4KLSMgd2l0aCBrZXJuZWwtbW9kdWxlLS4KLVBLR18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLSR7TU9EVUxFX05BTUV9IgotCi1tb2R1bGVfZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L21vZHVsZXMvJHtLRVJORUxfVkVSU0lPTn0va2VybmVsLyR7TU9EVUxFX05BTUV9Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7TU9EVUxFX05BTUV9LmtvIFwKLSAgICAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059L2tlcm5lbC8ke01PRFVMRV9OQU1FfS8ke01PRFVMRV9OQU1FfS5rbwotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQtbW9kdWxlXzEuMC4yMDIwMDQwMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLW1vZHVsZV8xLjAuMjAyMDA0MDEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzMxOTk1OQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLW1vZHVsZV8xLjAuMjAyMDA0MDEuYmIKQEAgLTAsMCArMSwzNSBAQAorcmVxdWlyZSB3aXJlZ3VhcmQuaW5jCisKK1NSQ1JFViA9ICI0M2Y1N2RhYzdiODMwNTAyNGY4M2FkZGM1MzNjOWVlZGU2NTA5MTI5IgorCitTUkNfVVJJID0gImdpdDovL2dpdC56eDJjNC5jb20vd2lyZWd1YXJkLWxpbnV4LWNvbXBhdCIKKworaW5oZXJpdCBtb2R1bGUga2VybmVsLW1vZHVsZS1zcGxpdAorCitERVBFTkRTID0gInZpcnR1YWwva2VybmVsIGxpYm1ubCIKKworIyBUaGlzIG1vZHVsZSByZXF1aXJlcyBMaW51eCAzLjEwIGhpZ2hlciBhbmQgc2V2ZXJhbCBuZXR3b3JraW5nIHJlbGF0ZWQKKyMgY29uZmlndXJhdGlvbiBvcHRpb25zLiBGb3IgZXhhY3Qga2VybmVsIHJlcXVpcmVtZW50cyB2aXNpdDoKKyMgaHR0cHM6Ly93d3cud2lyZWd1YXJkLmlvL2luc3RhbGwvI2tlcm5lbC1yZXF1aXJlbWVudHMKKworRVhUUkFfT0VNQUtFX2FwcGVuZCA9ICIgXAorICAgIEtFUk5FTERJUj0ke1NUQUdJTkdfS0VSTkVMX0RJUn0gXAorICAgICIKKworTUFLRV9UQVJHRVRTID0gIm1vZHVsZSIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS14dC1oYXNobGltaXQiCitNT0RVTEVfTkFNRSA9ICJ3aXJlZ3VhcmQiCisKKyMgS2VybmVsIG1vZHVsZSBwYWNrYWdlcyBNVVNUIGJlZ2luIHdpdGggJ2tlcm5lbC1tb2R1bGUtJywgb3RoZXJ3aXNlCisjIG11bHRpbGliIGltYWdlIGdlbmVyYXRpb24gY2FuIGZhaWwuCisjCisjIFRoZSBmb2xsb3dpbmcgbGluZSBpcyBvbmx5IG5lY2Vzc2FyeSBpZiB0aGUgcmVjaXBlIG5hbWUgZG9lcyBub3QgYmVnaW4KKyMgd2l0aCBrZXJuZWwtbW9kdWxlLS4KK1BLR18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLSR7TU9EVUxFX05BTUV9IgorCittb2R1bGVfZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L21vZHVsZXMvJHtLRVJORUxfVkVSU0lPTn0va2VybmVsLyR7TU9EVUxFX05BTUV9CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7TU9EVUxFX05BTUV9LmtvIFwKKyAgICAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059L2tlcm5lbC8ke01PRFVMRV9OQU1FfS8ke01PRFVMRV9OQU1FfS5rbworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQtdG9vbHNfMC4wLjIwMTkwOTEzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQtdG9vbHNfMC4wLjIwMTkwOTEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNGRkYmNiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLXRvb2xzXzAuMC4yMDE5MDkxMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLXJlcXVpcmUgd2lyZWd1YXJkLmluYwotCi1pbmhlcml0IGJhc2gtY29tcGxldGlvbiBzeXN0ZW1kIHBrZ2NvbmZpZwotCi1ERVBFTkRTID0gIndpcmVndWFyZC1tb2R1bGUgbGlibW5sIgotCi1kb19jb21waWxlX3ByZXBlbmQgKCkgewotICAgIGNkICR7U30vdG9vbHMKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgY2QgJHtTfS90b29scwotICAgIG9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSIgUFJFRklYPSIke3ByZWZpeH0iIFNZU0NPTkZESVI9IiR7c3lzY29uZmRpcn0iIFwKLSAgICAgICAgU1lTVEVNRFVOSVRESVI9IiR7c3lzdGVtZF91bml0ZGlyfSIgXAotICAgICAgICBXSVRIX1NZU1RFTURVTklUUz0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAneWVzJywgJycsIGQpfSBcCi0gICAgICAgIFdJVEhfQkFTSENPTVBMRVRJT049eWVzIFwKLSAgICAgICAgV0lUSF9XR1FVSUNLPXllcyBcCi0gICAgICAgIGluc3RhbGwKLX0KLQotRklMRVNfJHtQTn0gPSAiIFwKLSAgICAke3N5c2NvbmZkaXJ9IFwKLSAgICAke3N5c3RlbWRfdW5pdGRpcn0gXAotICAgICR7YmluZGlyfSBcCi0iCi0KLVJERVBFTkRTXyR7UE59ID0gIndpcmVndWFyZC1tb2R1bGUgYmFzaCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLXRvb2xzXzEuMC4yMDIwMDMxOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLXRvb2xzXzEuMC4yMDIwMDMxOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjk4YjlhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQtdG9vbHNfMS4wLjIwMjAwMzE5LmJiCkBAIC0wLDAgKzEsMjUgQEAKK3JlcXVpcmUgd2lyZWd1YXJkLmluYworCitTUkNSRVYgPSAiYTgwNjNhZGM4YWU5YjRmYzk4NDg1MDBlOTNmOTRiZWU4YWQyZTU4NSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lnp4MmM0LmNvbS93aXJlZ3VhcmQtdG9vbHMiCisKK2luaGVyaXQgYmFzaC1jb21wbGV0aW9uIHN5c3RlbWQgcGtnY29uZmlnCisKK0RFUEVORFMgKz0gIndpcmVndWFyZC1tb2R1bGUgbGlibW5sIgorCitkb19pbnN0YWxsICgpIHsKKyAgICBvZV9ydW5tYWtlIERFU1RESVI9IiR7RH0iIFBSRUZJWD0iJHtwcmVmaXh9IiBTWVNDT05GRElSPSIke3N5c2NvbmZkaXJ9IiBcCisgICAgICAgIFNZU1RFTURVTklURElSPSIke3N5c3RlbWRfdW5pdGRpcn0iIFwKKyAgICAgICAgV0lUSF9TWVNURU1EVU5JVFM9JHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3llcycsICcnLCBkKX0gXAorICAgICAgICBXSVRIX0JBU0hDT01QTEVUSU9OPXllcyBcCisgICAgICAgIFdJVEhfV0dRVUlDSz15ZXMgXAorICAgICAgICBpbnN0YWxsCit9CisKK0ZJTEVTXyR7UE59ID0gIiBcCisgICAgJHtzeXNjb25mZGlyfSBcCisgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9IFwKKyAgICAke2JpbmRpcn0gXAorIgorCitSREVQRU5EU18ke1BOfSA9ICJ3aXJlZ3VhcmQtbW9kdWxlIGJhc2giCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1rZXJuZWwvd2lyZWd1YXJkL3dpcmVndWFyZC5pbmMKaW5kZXggYjBiNDhkMC4uYTNhNzg2NyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMta2VybmVsL3dpcmVndWFyZC93aXJlZ3VhcmQuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLWtlcm5lbC93aXJlZ3VhcmQvd2lyZWd1YXJkLmluYwpAQCAtMTAsOCArMTAsNCBAQAogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKIAotU1JDX1VSSSA9ICJodHRwczovL2dpdC56eDJjNC5jb20vV2lyZUd1YXJkL3NuYXBzaG90L1dpcmVHdWFyZC0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiZWMyMzQ1ZGZjOGZmYzYxY2NkNzUyOWQ1ZDE5YjI2MDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTk3MzI3MTg1ZDJkMWI1OTdkYzExOGY3MzdjMGMxNjVlMmEyYzIxNDUzMzg3ZWEwMjY1OWYxMTU5ZDE0ODUxOCIKLQotUyA9ICIke1dPUktESVJ9L1dpcmVHdWFyZC0ke1BWfS9zcmMvIgorUyA9ICIke1dPUktESVJ9L2dpdC9zcmMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1uZXRraXQvbmV0a2l0LWZ0cC9uZXRraXQtZnRwXzAuMTcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1uZXRraXQvbmV0a2l0LWZ0cC9uZXRraXQtZnRwXzAuMTcuYmIKaW5kZXggNjVjMjBjMC4uY2YzMDZlYyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC1mdHAvbmV0a2l0LWZ0cF8wLjE3LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtZnRwL25ldGtpdC1mdHBfMC4xNy5iYgpAQCAtMTgsNiArMTgsOCBAQAogCiBpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKIAorQ0xFQU5CUk9LRU4gPSAiMSIKKwogZG9fY29uZmlndXJlICgpIHsKICAgICAuL2NvbmZpZ3VyZSAtLXByZWZpeD0ke3ByZWZpeH0KICAgICBlY2hvICJMREZMQUdTPSR7TERGTEFHU30iID4+IE1DT05GSUcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtcndoby9uZXRraXQtcndob18wLjE3LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC1yd2hvL25ldGtpdC1yd2hvXzAuMTcuYmIKaW5kZXggNjBhOGQ5NS4uYWQ1NDNiMCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC1yd2hvL25ldGtpdC1yd2hvXzAuMTcuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC1yd2hvL25ldGtpdC1yd2hvXzAuMTcuYmIKQEAgLTUsNyArNSw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9yd2hvL3J3aG8uYztiZWdpbmxpbmU9MjtlbmRsaW5lPTM7bWQ1PTVhODVmMTNjMDE0MmQ3MmZjMzc4ZTAwZjE1ZGE1YjllIgogCiBTUkNfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9uL25ldGtpdC1yd2hvL25ldGtpdC1yd2hvXyR7UFZ9Lm9yaWcudGFyLmd6O25hbWU9YXJjaGl2ZSBcCi0gICAgICAgICAgICR7REVCSUFOX01JUlJPUn0vbWFpbi9uL25ldGtpdC1yd2hvL25ldGtpdC1yd2hvXyR7UFZ9LTEzLmRlYmlhbi50YXIuZ3o7bmFtZT1wYXRjaDEzIFwKKyAgICAgICAgICAgJHtERUJJQU5fTUlSUk9SfS9tYWluL24vbmV0a2l0LXJ3aG8vbmV0a2l0LXJ3aG9fJHtQVn0tMTMuZGViaWFuLnRhci5nejtzdWJkaXI9JHtCUH07bmFtZT1wYXRjaDEzIFwKICAgICAgICAgICAgZmlsZTovL3J3aG9kIFwKICAgICAgICAgICAgZmlsZTovL3J3aG9kLmRlZmF1bHQgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtbWlzc2luZy1pbmNsdWRlLXBhdGgtdG8tSS1vcHRpb25zLnBhdGNoIFwKQEAgLTIwLDEzICsyMCwzNyBAQAogCiBDRkxBR1MgKz0gIiAtRF9HTlVfU09VUkNFIgogCi1kZWJpYW5fZG9fcGF0Y2goKSB7Ci0gICAgY2QgJHtTfQotICAgIHdoaWxlIHJlYWQgbGluZTsgZG8gcGF0Y2ggLXAxIDwgJHtXT1JLRElSfS9kZWJpYW4vcGF0Y2hlcy8kbGluZTsgZG9uZSA8ICR7V09SS0RJUn0vZGViaWFuL3BhdGNoZXMvc2VyaWVzCisjIFVubGlrZSBvdGhlciBEZWJpYW4gcGFja2FnZXMsIG5ldC10b29scyAqLmRpZmYuZ3ogY29udGFpbnMgYW5vdGhlciBzZXJpZXMgb2YKKyMgcGF0Y2hlcyBtYWludGFpbmVkIGJ5IHF1aWx0LiBTbyBtYW51YWxseSBhcHBseSB0aGVtIGJlZm9yZSBhcHBseWluZyBvdGhlciBsb2NhbAorIyBwYXRjaGVzLiBBbHNvIHJlbW92ZSBhbGwgdGVtcCBmaWxlcyBiZWZvcmUgbGVhdmluZywgYmVjYXVzZSBkb19wYXRjaCgpIHdpbGwgcG9wCisjIHVwIGFsbCBwcmV2aW91c2x5IGFwcGxpZWQgcGF0Y2hlcyBpbiB0aGUgc3RhcnQKK2RvX3BhdGNoW2RlcGVuZHNdICs9ICJxdWlsdC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKK25ldGtpdF9kb19wYXRjaCgpIHsKKyAgICAgICAgY2QgJHtTfQorICAgICAgICAjIGl0J3MgaW1wb3J0YW50IHRoYXQgd2Ugb25seSBwb3AgdGhlIGV4aXN0aW5nIHBhdGNoZXMgd2hlbiB0aGV5J3ZlCisgICAgICAgICMgYmVlbiBhcHBsaWVkLCBvdGhlcndpc2UgcXVpbHQgd2lsbCBjbGltYiB0aGUgZGlyZWN0b3J5IHRyZWUKKyAgICAgICAgIyBhbmQgcmV2ZXJzZSBvdXQgc29tZSBjb21wbGV0ZWx5IGRpZmZlcmVudCBzZXQgb2YgcGF0Y2hlcworICAgICAgICBpZiBbIC1kICR7U30vcGF0Y2hlcyBdOyB0aGVuCisgICAgICAgICAgICAgICAgIyB3aGlsc3QgdGhpcyBpcyB0aGUgZGVmYXVsdCBkaXJlY3RvcnksIGRvaW5nIGl0IGxpa2UgdGhpcworICAgICAgICAgICAgICAgICMgZGVmZWF0cyB0aGUgZGlyZWN0b3J5IGNsaW1iaW5nIHRoYXQgcXVpbHQgd2lsbCBvdGhlcndpc2UKKyAgICAgICAgICAgICAgICAjIGRvOyBub3RlIHRoZSBkaXJlY3RvcnkgbXVzdCBleGlzdCB0byBkZWZlYXQgdGhpcywgaGVuY2UKKyAgICAgICAgICAgICAgICAjIHRoZSB0ZXN0IGluc2lkZSB3aGljaCB3ZSBvcGVyYXRlCisgICAgICAgICAgICAgICAgUVVJTFRfUEFUQ0hFUz0ke1N9L3BhdGNoZXMgcXVpbHQgcG9wIC1hCisgICAgICAgIGZpCisgICAgICAgIGlmIFsgLWQgJHtTfS8ucGMtJHtCUE59IF07IHRoZW4KKyAgICAgICAgICAgICAgICBybSAtcmYgJHtTfS8ucGMKKyAgICAgICAgICAgICAgICBtdiAke1N9Ly5wYy0ke0JQTn0gJHtTfS8ucGMKKyAgICAgICAgICAgICAgICBRVUlMVF9QQVRDSEVTPSR7U30vZGViaWFuL3BhdGNoZXMgcXVpbHQgcG9wIC1hCisgICAgICAgICAgICAgICAgcm0gLXJmICR7U30vLnBjICR7U30vZGViaWFuCisgICAgICAgIGZpCisgICAgICAgIFFVSUxUX1BBVENIRVM9JHtTfS9kZWJpYW4vcGF0Y2hlcyBxdWlsdCBwdXNoIC1hCisgICAgICAgIG12ICR7U30vLnBjICR7U30vLnBjLSR7QlBOfQogfQogCitkb191bnBhY2tbY2xlYW5kaXJzXSArPSAiJHtTfSIKKwogcHl0aG9uIGRvX3BhdGNoKCkgewotICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZGViaWFuX2RvX3BhdGNoJywgZCkKKyAgICBiYi5idWlsZC5leGVjX2Z1bmMoJ25ldGtpdF9kb19wYXRjaCcsIGQpCiAgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdwYXRjaF9kb19wYXRjaCcsIGQpCiB9CiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtdGVsbmV0L2ZpbGVzL0NWRS0yMDIwLTEwMTg4LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC10ZWxuZXQvZmlsZXMvQ1ZFLTIwMjAtMTAxODgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIxYzYwMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtdGVsbmV0L2ZpbGVzL0NWRS0yMDIwLTEwMTg4LnBhdGNoCkBAIC0wLDAgKzEsMTEyIEBACitGcm9tIDZhYjAwN2RiYjE5NTgzNzFhYmZmMmVhYWFkMmIyNmRhODliM2M3NGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDI0IEFwciAyMDIwIDA5OjQzOjQ0ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlbG5ldGQvdXRpbGl0eS5jOiBmaXggQ1ZFLTIwMjAtMTAxODgKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW0ZlZG9yYTogaHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy90ZWxuZXQvcmF3L21hc3Rlci9mL3RlbG5ldC0wLjE3LW92ZXJmbG93LWV4cGxvaXQucGF0Y2hdCisKK0NWRTogQ1ZFLTIwMjAtMTAxODgKKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgdGVsbmV0ZC91dGlsaXR5LmMgfCAzMiArKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3RlbG5ldGQvdXRpbGl0eS5jIGIvdGVsbmV0ZC91dGlsaXR5LmMKK2luZGV4IDc1MzE0Y2IuLmI5YTQ2YTYgMTAwNjQ0CistLS0gYS90ZWxuZXRkL3V0aWxpdHkuYworKysrIGIvdGVsbmV0ZC91dGlsaXR5LmMKK0BAIC0xNjksMzEgKzE2OSwzOCBAQCB2b2lkIAlwdHlmbHVzaCh2b2lkKQorICAqLworIHN0YXRpYworIGNoYXIgKgorLW5leHRpdGVtKGNoYXIgKmN1cnJlbnQpCisrbmV4dGl0ZW0oY2hhciAqY3VycmVudCwgY29uc3QgY2hhciAqZW5kcCkKKyB7CisrICAgIGlmIChjdXJyZW50ID49IGVuZHApIHsKKysgICAgICAgIHJldHVybiBOVUxMOworKyAgICB9CisgICAgIGlmICgoKmN1cnJlbnQmMHhmZikgIT0gSUFDKSB7CisgCXJldHVybiBjdXJyZW50KzE7CisgICAgIH0KKysgICAgaWYgKGN1cnJlbnQrMSA+PSBlbmRwKSB7CisrICAgICAgICByZXR1cm4gTlVMTDsKKysgICAgfQorICAgICBzd2l0Y2ggKCooY3VycmVudCsxKSYweGZmKSB7CisgICAgIGNhc2UgRE86CisgICAgIGNhc2UgRE9OVDoKKyAgICAgY2FzZSBXSUxMOgorICAgICBjYXNlIFdPTlQ6CistCXJldHVybiBjdXJyZW50KzM7CisrCXJldHVybiBjdXJyZW50KzMgPD0gZW5kcCA/IGN1cnJlbnQrMyA6IE5VTEw7CisgICAgIGNhc2UgU0I6CQkvKiBsb29wIGZvcmV2ZXIgbG9va2luZyBmb3IgdGhlIFNFICovCisgCXsKKyAJICAgIHJlZ2lzdGVyIGNoYXIgKmxvb2sgPSBjdXJyZW50KzI7CisgCistCSAgICBmb3IgKDs7KSB7CisrCSAgICB3aGlsZSAobG9vayA8IGVuZHApIHsKKyAJCWlmICgoKmxvb2srKyYweGZmKSA9PSBJQUMpIHsKKy0JCSAgICBpZiAoKCpsb29rKysmMHhmZikgPT0gU0UpIHsKKysJCSAgICBpZiAobG9vayA8IGVuZHAgJiYgKCpsb29rKysmMHhmZikgPT0gU0UpIHsKKyAJCQlyZXR1cm4gbG9vazsKKyAJCSAgICB9CisgCQl9CisgCSAgICB9CisrCSAgICByZXR1cm4gTlVMTDsKKyAJfQorICAgICBkZWZhdWx0OgorLQlyZXR1cm4gY3VycmVudCsyOworKwlyZXR1cm4gY3VycmVudCsyIDw9IGVuZHAgPyBjdXJyZW50KzIgOiBOVUxMOworICAgICB9CisgfSAgLyogZW5kIG9mIG5leHRpdGVtICovCisgCitAQCAtMjE5LDcgKzIyNiw3IEBAIHZvaWQgbmV0Y2xlYXIodm9pZCkKKyAgICAgcmVnaXN0ZXIgY2hhciAqdGhpc2l0ZW0sICpuZXh0OworICAgICBjaGFyICpnb29kOworICNkZWZpbmUJd2V3YW50KHApCSgobmZyb250cCA+IHApICYmICgoKnAmMHhmZikgPT0gSUFDKSAmJiBcCistCQkJCSgoKihwKzEpJjB4ZmYpICE9IEVDKSAmJiAoKCoocCsxKSYweGZmKSAhPSBFTCkpCisrCQkJCShuZnJvbnRwID4gcCsxICYmICgoKCoocCsxKSYweGZmKSAhPSBFQykgJiYgKCgqKHArMSkmMHhmZikgIT0gRUwpKSkpCisgCisgI2lmCWRlZmluZWQoRU5DUllQVCkKKyAgICAgdGhpc2l0ZW0gPSBuY2xlYXJ0byA+IG5ldG9idWYgPyBuY2xlYXJ0byA6IG5ldG9idWY7CitAQCAtMjI3LDcgKzIzNCw3IEBAIHZvaWQgbmV0Y2xlYXIodm9pZCkKKyAgICAgdGhpc2l0ZW0gPSBuZXRvYnVmOworICNlbmRpZgorIAorLSAgICB3aGlsZSAoKG5leHQgPSBuZXh0aXRlbSh0aGlzaXRlbSkpIDw9IG5iYWNrcCkgeworKyAgICB3aGlsZSAoKG5leHQgPSBuZXh0aXRlbSh0aGlzaXRlbSwgbmJhY2twKSkgIT0gTlVMTCAmJiBuZXh0IDw9IG5iYWNrcCkgeworIAl0aGlzaXRlbSA9IG5leHQ7CisgICAgIH0KKyAKK0BAIC0yMzksMjAgKzI0NiwyMyBAQCB2b2lkIG5ldGNsZWFyKHZvaWQpCisgICAgIGdvb2QgPSBuZXRvYnVmOwkvKiB3aGVyZSB0aGUgZ29vZCBieXRlcyBnbyAqLworICNlbmRpZgorIAorLSAgICB3aGlsZSAobmZyb250cCA+IHRoaXNpdGVtKSB7CisrICAgIHdoaWxlICh0aGlzaXRlbSAhPSBOVUxMICYmIG5mcm9udHAgPiB0aGlzaXRlbSkgeworIAlpZiAod2V3YW50KHRoaXNpdGVtKSkgeworIAkgICAgaW50IGxlbmd0aDsKKyAKKyAJICAgIG5leHQgPSB0aGlzaXRlbTsKKyAJICAgIGRvIHsKKy0JCW5leHQgPSBuZXh0aXRlbShuZXh0KTsKKy0JICAgIH0gd2hpbGUgKHdld2FudChuZXh0KSAmJiAobmZyb250cCA+IG5leHQpKTsKKysJCW5leHQgPSBuZXh0aXRlbShuZXh0LCBuZnJvbnRwKTsKKysJICAgIH0gd2hpbGUgKG5leHQgIT0gTlVMTCAmJiB3ZXdhbnQobmV4dCkgJiYgKG5mcm9udHAgPiBuZXh0KSk7CisrCSAgICBpZiAobmV4dCA9PSBOVUxMKSB7CisrCQluZXh0ID0gbmZyb250cDsKKysJICAgIH0KKyAJICAgIGxlbmd0aCA9IG5leHQtdGhpc2l0ZW07CisgCSAgICBiY29weSh0aGlzaXRlbSwgZ29vZCwgbGVuZ3RoKTsKKyAJICAgIGdvb2QgKz0gbGVuZ3RoOworIAkgICAgdGhpc2l0ZW0gPSBuZXh0OworIAl9IGVsc2UgeworLQkgICAgdGhpc2l0ZW0gPSBuZXh0aXRlbSh0aGlzaXRlbSk7CisrCSAgICB0aGlzaXRlbSA9IG5leHRpdGVtKHRoaXNpdGVtLCBuZnJvbnRwKTsKKyAJfQorICAgICB9CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtdGVsbmV0L25ldGtpdC10ZWxuZXRfMC4xNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLW5ldGtpdC9uZXRraXQtdGVsbmV0L25ldGtpdC10ZWxuZXRfMC4xNy5iYgppbmRleCBjZjk5MzQxLi4wZTkyYWRkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1uZXRraXQvbmV0a2l0LXRlbG5ldC9uZXRraXQtdGVsbmV0XzAuMTcuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtbmV0a2l0L25ldGtpdC10ZWxuZXQvbmV0a2l0LXRlbG5ldF8wLjE3LmJiCkBAIC0xMiw2ICsxMiw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9jcm9zcy1jb21waWxlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdGVsbmV0LXRlbG5ldGQtRml4LXByaW50LWZvcm1hdC1zdHJpbmdzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdGVsbmV0LXRlbG5ldGQtRml4LWRlYWRsb2NrLW9uLWNsZWFudXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMjAtMTAxODgucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vbi9uZXRraXQtdGVsbmV0LyIKQEAgLTU3LDYgKzU4LDkgQEAKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVt0ZWxuZXRdID0gIiR7YmluZGlyfS90ZWxuZXQiCiBBTFRFUk5BVElWRV9UQVJHRVRbdGVsbmV0XSA9ICIke2JpbmRpcn0vdGVsbmV0LiR7UE59IgogCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAidGVsbmV0ZC44IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3RlbG5ldGQuOF0gPSAiJHttYW5kaXJ9L21hbjgvdGVsbmV0ZC44IgorCiBTUkNfVVJJW21kNXN1bV0gPSAiZDZiZWFiYWFmNTNmZTZlMzgyYzQyY2UzZmFhMDVhMzYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWM4MGQ1Yzc4MzgzNjFhMzI4ZmI2YjYwMDE2ZDUwM2RlZjljZTUzYWQzYzU4OWYzYjA4ZmY3MWEyYmI4OGUwMCIKIEZJTEVTXyR7UE59ICs9ICIke3NiaW5kaXJ9L2luLiogJHtsaWJkaXJ9LyogJHtzeXNjb25mZGlyfS94aW5ldGQuZC8qIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL2JhYmVsZC9iYWJlbGRfMS45LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvYmFiZWxkL2JhYmVsZF8xLjkuMS5iYgppbmRleCAyN2U3YjQzLi42ZGQxNWFkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvYmFiZWxkL2JhYmVsZF8xLjkuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvYmFiZWxkL2JhYmVsZF8xLjkuMS5iYgpAQCAtMTUsNiArMTUsOCBAQAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2plY2gvYmFiZWxkLmdpdDtwcm90b2NvbD1naXQiCiBTUkNSRVYgPSAiMDgzNWQ1ZDg5NGVhMDE2YWI3YjgxNTYyNDY2Y2FkZTJjNTFhMTJkNCIKIAorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiYmFiZWxkLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKKwogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogZG9fY29tcGlsZSAoKSB7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDAxLUNyZWF0ZS1zdWJyb3V0aW5lLWZvci1jbGVhbmluZy1yZWNlbnQtaW50ZXJmYWNlcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDEtQ3JlYXRlLXN1YnJvdXRpbmUtZm9yLWNsZWFuaW5nLXJlY2VudC1pbnRlcmZhY2VzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5MmMzNDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDAxLUNyZWF0ZS1zdWJyb3V0aW5lLWZvci1jbGVhbmluZy1yZWNlbnQtaW50ZXJmYWNlcy5wYXRjaApAQCAtMCwwICsxLDYwIEBACitGcm9tIDg5ZWE2YWM0YTg4NDBlOGMyYmUwMTQwYTk4MDVjNjUyMmM2YzUyODAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CitEYXRlOiBXZWQsIDI4IEp1biAyMDE3IDE3OjMwOjAwIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMDEvMTFdIENyZWF0ZSBzdWJyb3V0aW5lIGZvciBjbGVhbmluZyByZWNlbnQgaW50ZXJmYWNlcworCitNb3ZlcyBmdW5jdGlvbmFsaXR5IGZvciBjbGVhbmluZyB0aGUgbGlzdCBvZiByZWNlbnQKK2ludGVyZmFjZXMgaW50byBpdHMgb3duIHN1YnJvdXRpbmUuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtkdHNAYXBwbGUuY29tXQorCitTaWduZWQtb2ZmLWJ5OiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CistLS0KKyBtRE5TUG9zaXgvbUROU1Bvc2l4LmMgfCAyNCArKysrKysrKysrKysrKy0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmMgYi9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKK2luZGV4IDBlMTBiZDUuLmZmYzk2OTYgMTAwNjQ0CistLS0gYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKKysrKyBiL21ETlNQb3NpeC9tRE5TUG9zaXguYworQEAgLTg1Niw2ICs4NTYsMTkgQEAgbUROU2xvY2FsIGludCBTZXR1cFNvY2tldChzdHJ1Y3Qgc29ja2FkZHIgKmludGZBZGRyLCBtRE5TSVBQb3J0IHBvcnQsIGludCBpbnRlcmYKKyAgICAgcmV0dXJuIGVycjsKKyB9CisgCisrLy8gQ2xlYW4gdXAgYW55IGludGVyZmFjZXMgdGhhdCBoYXZlIGJlZW4gaGFuZ2luZyBhcm91bmQgb24gdGhlIFJlY2VudEludGVyZmFjZXMgbGlzdCBmb3IgbW9yZSB0aGFuIGEgbWludXRlCisrbUROU2xvY2FsIHZvaWQgQ2xlYW5SZWNlbnRJbnRlcmZhY2VzKHZvaWQpCisreworKyAgICBQb3NpeE5ldHdvcmtJbnRlcmZhY2UgKipyaSA9ICZnUmVjZW50SW50ZXJmYWNlczsKKysgICAgY29uc3QgbUROU3MzMiB1dGMgPSBtRE5TUGxhdGZvcm1VVEMoKTsKKysgICAgd2hpbGUgKCpyaSkKKysgICAgeworKyAgICAgICAgUG9zaXhOZXR3b3JrSW50ZXJmYWNlICpwaSA9ICpyaTsKKysgICAgICAgIGlmICh1dGMgLSBwaS0+TGFzdFNlZW4gPCA2MCkgcmkgPSAoUG9zaXhOZXR3b3JrSW50ZXJmYWNlICoqKSZwaS0+Y29yZUludGYubmV4dDsKKysgICAgICAgIGVsc2UgeyAqcmkgPSAoUG9zaXhOZXR3b3JrSW50ZXJmYWNlICopcGktPmNvcmVJbnRmLm5leHQ7IGZyZWUocGkpOyB9CisrICAgIH0KKyt9CisrCisgLy8gQ3JlYXRlcyBhIFBvc2l4TmV0d29ya0ludGVyZmFjZSBmb3IgdGhlIGludGVyZmFjZSB3aG9zZSBJUCBhZGRyZXNzIGlzCisgLy8gaW50ZkFkZHIgYW5kIHdob3NlIG5hbWUgaXMgaW50Zk5hbWUgYW5kIHJlZ2lzdGVycyBpdCB3aXRoIG1ETlMgY29yZS4KKyBtRE5TbG9jYWwgaW50IFNldHVwT25lSW50ZXJmYWNlKG1ETlMgKmNvbnN0IG0sIHN0cnVjdCBzb2NrYWRkciAqaW50ZkFkZHIsIHN0cnVjdCBzb2NrYWRkciAqaW50Zk1hc2ssIGNvbnN0IGNoYXIgKmludGZOYW1lLCBpbnQgaW50ZkluZGV4KQorQEAgLTEwMTAsMTYgKzEwMjMsNyBAQCBtRE5TbG9jYWwgaW50IFNldHVwSW50ZXJmYWNlTGlzdChtRE5TICpjb25zdCBtKQorIAorICAgICAvLyBDbGVhbiB1cC4KKyAgICAgaWYgKGludGZMaXN0ICE9IE5VTEwpIGZyZWVfaWZpX2luZm8oaW50Zkxpc3QpOworLQorLSAgICAvLyBDbGVhbiB1cCBhbnkgaW50ZXJmYWNlcyB0aGF0IGhhdmUgYmVlbiBoYW5naW5nIGFyb3VuZCBvbiB0aGUgUmVjZW50SW50ZXJmYWNlcyBsaXN0IGZvciBtb3JlIHRoYW4gYSBtaW51dGUKKy0gICAgUG9zaXhOZXR3b3JrSW50ZXJmYWNlICoqcmkgPSAmZ1JlY2VudEludGVyZmFjZXM7CistICAgIGNvbnN0IG1ETlNzMzIgdXRjID0gbUROU1BsYXRmb3JtVVRDKCk7CistICAgIHdoaWxlICgqcmkpCistICAgIHsKKy0gICAgICAgIFBvc2l4TmV0d29ya0ludGVyZmFjZSAqcGkgPSAqcmk7CistICAgICAgICBpZiAodXRjIC0gcGktPkxhc3RTZWVuIDwgNjApIHJpID0gKFBvc2l4TmV0d29ya0ludGVyZmFjZSAqKikmcGktPmNvcmVJbnRmLm5leHQ7CistICAgICAgICBlbHNlIHsgKnJpID0gKFBvc2l4TmV0d29ya0ludGVyZmFjZSAqKXBpLT5jb3JlSW50Zi5uZXh0OyBmcmVlKHBpKTsgfQorLSAgICB9CisrICAgIENsZWFuUmVjZW50SW50ZXJmYWNlcygpOworIAorICAgICByZXR1cm4gZXJyOworIH0KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDItQ3JlYXRlLXN1YnJvdXRpbmUtZm9yLXRlYXJpbmctZG93bi1hbi1pbnRlcmZhY2UucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDAyLUNyZWF0ZS1zdWJyb3V0aW5lLWZvci10ZWFyaW5nLWRvd24tYW4taW50ZXJmYWNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxYmEzMTgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDAyLUNyZWF0ZS1zdWJyb3V0aW5lLWZvci10ZWFyaW5nLWRvd24tYW4taW50ZXJmYWNlLnBhdGNoCkBAIC0wLDAgKzEsNTggQEAKK0Zyb20gYTIxNDhkZjk5ZGRjZDEyMjI0N2Y5NWM0Y2JjY2U1YzQxMTg1ODFhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5hdGUgS2Fyc3RlbnMgPG5hdGUua2Fyc3RlbnNAZ2FybWluLmNvbT4KK0RhdGU6IFdlZCwgMjggSnVuIDIwMTcgMTc6MzA6MDAgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAwMi8xMV0gQ3JlYXRlIHN1YnJvdXRpbmUgZm9yIHRlYXJpbmcgZG93biBhbiBpbnRlcmZhY2UKKworQ3JlYXRlcyBhIHN1YnJvdXRpbmUgZm9yIHRlYXJpbmcgZG93biBhbiBpbnRlcmZhY2UuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtkdHNAYXBwbGUuY29tXQorCitTaWduZWQtb2ZmLWJ5OiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CistLS0KKyBtRE5TUG9zaXgvbUROU1Bvc2l4LmMgfCAyMiArKysrKysrKysrKysrKysrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmMgYi9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKK2luZGV4IGZmYzk2OTYuLjVlNWIyY2QgMTAwNjQ0CistLS0gYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKKysrKyBiL21ETlNQb3NpeC9tRE5TUG9zaXguYworQEAgLTU5MSw2ICs1OTEsMTkgQEAgbUROU2xvY2FsIHZvaWQgRnJlZVBvc2l4TmV0d29ya0ludGVyZmFjZShQb3NpeE5ldHdvcmtJbnRlcmZhY2UgKmludGYpCisgICAgIGdSZWNlbnRJbnRlcmZhY2VzID0gaW50ZjsKKyB9CisgCisrbUROU2xvY2FsIHZvaWQgVGVhckRvd25JbnRlcmZhY2UobUROUyAqY29uc3QgbSwgUG9zaXhOZXR3b3JrSW50ZXJmYWNlICppbnRmKQorK3sKKysgICAgbUROU19EZXJlZ2lzdGVySW50ZXJmYWNlKG0sICZpbnRmLT5jb3JlSW50ZiwgTm9ybWFsQWN0aXZhdGlvbik7CisrICAgIGlmIChnTUROU1BsYXRmb3JtUG9zaXhWZXJib3NlTGV2ZWwgPiAwKSBmcHJpbnRmKHN0ZGVyciwgIkRlcmVnaXN0ZXJlZCBpbnRlcmZhY2UgJXNcbiIsIGludGYtPmludGZOYW1lKTsKKysgICAgRnJlZVBvc2l4TmV0d29ya0ludGVyZmFjZShpbnRmKTsKKysKKysgICAgbnVtX3JlZ2lzdGVyZWRfaW50ZXJmYWNlcy0tOworKyAgICBpZiAobnVtX3JlZ2lzdGVyZWRfaW50ZXJmYWNlcyA9PSAwKSB7CisrICAgICAgICBudW1fcGt0c19hY2NlcHRlZCA9IDA7CisrICAgICAgICBudW1fcGt0c19yZWplY3RlZCA9IDA7CisrICAgIH0KKyt9CisrCisgLy8gR3JhYiB0aGUgZmlyc3QgaW50ZXJmYWNlLCBkZXJlZ2lzdGVyIGl0LCBmcmVlIGl0LCBhbmQgcmVwZWF0IHVudGlsIGRvbmUuCisgbUROU2xvY2FsIHZvaWQgQ2xlYXJJbnRlcmZhY2VMaXN0KG1ETlMgKmNvbnN0IG0pCisgeworQEAgLTU5OSwxMyArNjEyLDEwIEBAIG1ETlNsb2NhbCB2b2lkIENsZWFySW50ZXJmYWNlTGlzdChtRE5TICpjb25zdCBtKQorICAgICB3aGlsZSAobS0+SG9zdEludGVyZmFjZXMpCisgICAgIHsKKyAgICAgICAgIFBvc2l4TmV0d29ya0ludGVyZmFjZSAqaW50ZiA9IChQb3NpeE5ldHdvcmtJbnRlcmZhY2UqKShtLT5Ib3N0SW50ZXJmYWNlcyk7CistICAgICAgICBtRE5TX0RlcmVnaXN0ZXJJbnRlcmZhY2UobSwgJmludGYtPmNvcmVJbnRmLCBOb3JtYWxBY3RpdmF0aW9uKTsKKy0gICAgICAgIGlmIChnTUROU1BsYXRmb3JtUG9zaXhWZXJib3NlTGV2ZWwgPiAwKSBmcHJpbnRmKHN0ZGVyciwgIkRlcmVnaXN0ZXJlZCBpbnRlcmZhY2UgJXNcbiIsIGludGYtPmludGZOYW1lKTsKKy0gICAgICAgIEZyZWVQb3NpeE5ldHdvcmtJbnRlcmZhY2UoaW50Zik7CisrICAgICAgICBUZWFyRG93bkludGVyZmFjZShtLCBpbnRmKTsKKyAgICAgfQorLSAgICBudW1fcmVnaXN0ZXJlZF9pbnRlcmZhY2VzID0gMDsKKy0gICAgbnVtX3BrdHNfYWNjZXB0ZWQgPSAwOworLSAgICBudW1fcGt0c19yZWplY3RlZCA9IDA7CisrCisrICAgIGFzc2VydChudW1fcmVnaXN0ZXJlZF9pbnRlcmZhY2VzID09IDApOworIH0KKyAKKyAvLyBTZXRzIHVwIGEgc2VuZC9yZWNlaXZlIHNvY2tldC4KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDMtVHJhY2staW50ZXJmYWNlLXNvY2tldC1mYW1pbHkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDAzLVRyYWNrLWludGVyZmFjZS1zb2NrZXQtZmFtaWx5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhjMGU2YmYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDAzLVRyYWNrLWludGVyZmFjZS1zb2NrZXQtZmFtaWx5LnBhdGNoCkBAIC0wLDAgKzEsNTAgQEAKK0Zyb20gNzFhN2M3MjhhZTBkODE0M2I2NmFhNDBkZWNjYTc0ZWJhYTlhYTJjZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5hdGUgS2Fyc3RlbnMgPG5hdGUua2Fyc3RlbnNAZ2FybWluLmNvbT4KK0RhdGU6IFdlZCwgMjggSnVuIDIwMTcgMTc6MzA6MDAgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAwMy8xMV0gVHJhY2sgaW50ZXJmYWNlIHNvY2tldCBmYW1pbHkKKworVHJhY2tzIHRoZSBzb2NrZXQgZmFtaWx5IGFzc29jaWF0ZWQgd2l0aCB0aGUgaW50ZXJmYWNlLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZHRzQGFwcGxlLmNvbV0KKworU2lnbmVkLW9mZi1ieTogTmF0ZSBLYXJzdGVucyA8bmF0ZS5rYXJzdGVuc0BnYXJtaW4uY29tPgorLS0tCisgbUROU1Bvc2l4L21ETlNQb3NpeC5jIHwgMSArCisgbUROU1Bvc2l4L21ETlNQb3NpeC5oIHwgMiArKworIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmMgYi9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKK2luZGV4IDVlNWIyY2QuLjhmZTIyYmUgMTAwNjQ0CistLS0gYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKKysrKyBiL21ETlNQb3NpeC9tRE5TUG9zaXguYworQEAgLTkxOCw2ICs5MTgsNyBAQCBtRE5TbG9jYWwgaW50IFNldHVwT25lSW50ZXJmYWNlKG1ETlMgKmNvbnN0IG0sIHN0cnVjdCBzb2NrYWRkciAqaW50ZkFkZHIsIHN0cnVjdAorICAgICAgICAgLy8gU2V0IHVwIHRoZSBleHRyYSBmaWVsZHMgaW4gUG9zaXhOZXR3b3JrSW50ZXJmYWNlLgorICAgICAgICAgYXNzZXJ0KGludGYtPmludGZOYW1lICE9IE5VTEwpOyAgICAgICAgIC8vIGludGYtPmludGZOYW1lIGFscmVhZHkgc2V0IHVwIGFib3ZlCisgICAgICAgICBpbnRmLT5pbmRleCAgICAgICAgICAgICAgICA9IGludGZJbmRleDsKKysgICAgICAgIGludGYtPnNhX2ZhbWlseSAgICAgICAgICAgID0gaW50ZkFkZHItPnNhX2ZhbWlseTsKKyAgICAgICAgIGludGYtPm11bHRpY2FzdFNvY2tldDQgICAgID0gLTE7CisgI2lmIEhBVkVfSVBWNgorICAgICAgICAgaW50Zi0+bXVsdGljYXN0U29ja2V0NiAgICAgPSAtMTsKK2RpZmYgLS1naXQgYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmggYi9tRE5TUG9zaXgvbUROU1Bvc2l4LmgKK2luZGV4IGNhNjBkODAuLmY3N2MxODUgMTAwNjQ0CistLS0gYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmgKKysrKyBiL21ETlNQb3NpeC9tRE5TUG9zaXguaAorQEAgLTE5LDYgKzE5LDcgQEAKKyAjZGVmaW5lIF9fbUROU1BsYXRmb3JtUG9zaXhfaAorIAorICNpbmNsdWRlIDxzaWduYWwuaD4KKysjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgorICNpbmNsdWRlIDxzeXMvdGltZS5oPgorIAorICNpZmRlZiAgX19jcGx1c3BsdXMKK0BAIC00MCw2ICs0MSw3IEBAIHN0cnVjdCBQb3NpeE5ldHdvcmtJbnRlcmZhY2UKKyAgICAgY29uc3QgY2hhciAqICAgICAgICAgICAgaW50Zk5hbWU7CisgICAgIFBvc2l4TmV0d29ya0ludGVyZmFjZSAqIGFsaWFzSW50ZjsKKyAgICAgaW50IGluZGV4OworKyAgICBzYV9mYW1pbHlfdCBzYV9mYW1pbHk7CisgICAgIGludCBtdWx0aWNhc3RTb2NrZXQ0OworICNpZiBIQVZFX0lQVjYKKyAgICAgaW50IG11bHRpY2FzdFNvY2tldDY7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDA0LVVzZS1saXN0LWZvci1jaGFuZ2VkLWludGVyZmFjZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDA0LVVzZS1saXN0LWZvci1jaGFuZ2VkLWludGVyZmFjZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVhZDQ5YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDQtVXNlLWxpc3QtZm9yLWNoYW5nZWQtaW50ZXJmYWNlcy5wYXRjaApAQCAtMCwwICsxLDE3NyBAQAorRnJvbSBlMWY0ODM1MTBhMTAxMWUzNzU0MGZkZWU4ZjNiYzM2MTExZmE0NWEwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTmF0ZSBLYXJzdGVucyA8bmF0ZS5rYXJzdGVuc0BnYXJtaW4uY29tPgorRGF0ZTogVGh1LCAxMyBKdWwgMjAxNyAwOTowMDowMCAtMDUwMAorU3ViamVjdDogW1BBVENIIDA0LzExXSBVc2UgbGlzdCBmb3IgY2hhbmdlZCBpbnRlcmZhY2VzCisKK1VzZXMgYSBsaW5rZWQgbGlzdCB0byBzdG9yZSB0aGUgaW5kZXggb2YgY2hhbmdlZCBuZXR3b3JrIGludGVyZmFjZXMKK2luc3RlYWQgb2YgYSBiaXRmaWVsZC4gVGhpcyBhbGxvd3MgZm9yIG5ldHdvcmsgaW50ZXJmYWNlcyB3aXRoIGFuCitpbmRleCBncmVhdGVyIHRoYW4gMzEgKGFuIGluZGV4IG9mIDM2IHdhcyBzZWVuIG9uIEFuZHJvaWQpLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZHRzQGFwcGxlLmNvbV0KKworU2lnbmVkLW9mZi1ieTogTmF0ZSBLYXJzdGVucyA8bmF0ZS5rYXJzdGVuc0BnYXJtaW4uY29tPgorLS0tCisgbUROU1Bvc2l4L21ETlNQb3NpeC5jIHwgNjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1MiBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21ETlNQb3NpeC9tRE5TUG9zaXguYyBiL21ETlNQb3NpeC9tRE5TUG9zaXguYworaW5kZXggOGZlMjJiZS4uNjk5ODU1YSAxMDA2NDQKKy0tLSBhL21ETlNQb3NpeC9tRE5TUG9zaXguYworKysrIGIvbUROU1Bvc2l4L21ETlNQb3NpeC5jCitAQCAtNzUsNiArNzUsMTQgQEAgc3RydWN0IElmQ2hhbmdlUmVjCisgfTsKKyB0eXBlZGVmIHN0cnVjdCBJZkNoYW5nZVJlYyBJZkNoYW5nZVJlYzsKKyAKKysvLyBVc2VkIHRvIGJ1aWxkIGEgbGlzdCBvZiBuZXR3b3JrIGludGVyZmFjZSBpbmRpY2VzCisrc3RydWN0IE5ldHdvcmtJbnRlcmZhY2VJbmRleAorK3sKKysgICAgaW50IGlmX2luZGV4OworKyAgICBzdHJ1Y3QgTmV0d29ya0ludGVyZmFjZUluZGV4ICpOZXh0OworK307CisrdHlwZWRlZiBzdHJ1Y3QgTmV0d29ya0ludGVyZmFjZUluZGV4IE5ldHdvcmtJbnRlcmZhY2VJbmRleDsKKysKKyAvLyBOb3RlIHRoYXQgc3RhdGljIGRhdGEgaXMgaW5pdGlhbGl6ZWQgdG8gemVybyBpbiAobW9kZXJuKSBDLgorIHN0YXRpYyBmZF9zZXQgZ0V2ZW50RkRzOworIHN0YXRpYyBpbnQgZ01heEZEOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC8vIGxhcmdlc3QgZmQgaW4gZ0V2ZW50RkRzCitAQCAtMTA3MSw2ICsxMDc5LDMyIEBAIG1ETlNsb2NhbCBtU3RhdHVzIE9wZW5JZk5vdGlmeVNvY2tldChpbnQgKnBGRCkKKyAgICAgcmV0dXJuIGVycjsKKyB9CisgCisrbUROU2xvY2FsIG1ETlNCb29sIExpc3RDb250YWluc0ludGVyZmFjZUluZGV4KEdlbkxpbmtlZExpc3QgKmxpc3QsIGludCBpZl9pbmRleCkKKyt7CisrICAgIE5ldHdvcmtJbnRlcmZhY2VJbmRleCAqaXRlbTsKKysKKysgICAgZm9yIChpdGVtID0gKE5ldHdvcmtJbnRlcmZhY2VJbmRleCopbGlzdC0+SGVhZDsgaXRlbSAhPSBOVUxMOyBpdGVtID0gaXRlbS0+TmV4dCkKKysgICAgeworKyAgICAgICAgaWYgKGlmX2luZGV4ID09IGl0ZW0tPmlmX2luZGV4KSByZXR1cm4gbUROU3RydWU7CisrICAgIH0KKysKKysgICAgcmV0dXJuIG1ETlNmYWxzZTsKKyt9CisrCisrbUROU2xvY2FsIHZvaWQgQWRkSW50ZXJmYWNlSW5kZXhUb0xpc3QoR2VuTGlua2VkTGlzdCAqbGlzdCwgaW50IGlmX2luZGV4KQorK3sKKysgICAgTmV0d29ya0ludGVyZmFjZUluZGV4ICppdGVtOworKworKyAgICBpZiAoTGlzdENvbnRhaW5zSW50ZXJmYWNlSW5kZXgobGlzdCwgaWZfaW5kZXgpKSByZXR1cm47CisrCisrICAgIGl0ZW0gPSBtYWxsb2Moc2l6ZW9mICppdGVtKTsKKysgICAgaWYgKGl0ZW0gPT0gTlVMTCkgcmV0dXJuOworKworKyAgICBpdGVtLT5pZl9pbmRleCA9IGlmX2luZGV4OworKyAgICBpdGVtLT5OZXh0ID0gTlVMTDsKKysgICAgQWRkVG9UYWlsKGxpc3QsIGl0ZW0pOworK30KKysKKyAjaWYgTUROU19ERUJVR01TR1MKKyBtRE5TbG9jYWwgdm9pZCAgICAgIFByaW50TmV0TGlua01zZyhjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKnBOTE1zZykKKyB7CitAQCAtMTA5OCwxNCArMTEzMiwxMyBAQCBtRE5TbG9jYWwgdm9pZCAgICAgIFByaW50TmV0TGlua01zZyhjb25zdCBzdHJ1Y3Qgbmxtc2doZHIgKnBOTE1zZykKKyB9CisgI2VuZGlmCisgCistbUROU2xvY2FsIG1ETlN1MzIgICAgICAgUHJvY2Vzc1JvdXRpbmdOb3RpZmljYXRpb24oaW50IHNkKQorK21ETlNsb2NhbCB2b2lkICAgICAgICAgIFByb2Nlc3NSb3V0aW5nTm90aWZpY2F0aW9uKGludCBzZCwgR2VuTGlua2VkTGlzdCAqY2hhbmdlZEludGVyZmFjZXMpCisgLy8gUmVhZCB0aHJvdWdoIHRoZSBtZXNzYWdlcyBvbiBzZCBhbmQgaWYgYW55IGluZGljYXRlIHRoYXQgYW55IGludGVyZmFjZSByZWNvcmRzIHNob3VsZAorIC8vIGJlIHRvcm4gZG93biBhbmQgcmVidWlsdCwgcmV0dXJuIGFmZmVjdGVkIGluZGljZXMgYXMgYSBiaXRtYXNrLiBPdGhlcndpc2UgcmV0dXJuIDAuCisgeworICAgICBzc2l6ZV90IHJlYWRDb3VudDsKKyAgICAgY2hhciBidWZmWzQwOTZdOworICAgICBzdHJ1Y3Qgbmxtc2doZHIgICAgICAgICAqcE5MTXNnID0gKHN0cnVjdCBubG1zZ2hkciopIGJ1ZmY7CistICAgIG1ETlN1MzIgcmVzdWx0ID0gMDsKKyAKKyAgICAgLy8gVGhlIHN0cnVjdHVyZSBoZXJlIGlzIG1vcmUgY29tcGxleCB0aGFuIGl0IHJlYWxseSBvdWdodCB0byBiZSBiZWNhdXNlLAorICAgICAvLyB1bmZvcnR1bmF0ZWx5LCB0aGVyZSdzIG5vIGdvb2Qgd2F5IHRvIHNpemUgYSBidWZmZXIgaW4gYWR2YW5jZSBsYXJnZQorQEAgLTExNDEsOSArMTE3NCw5IEBAIG1ETlNsb2NhbCBtRE5TdTMyICAgICAgIFByb2Nlc3NSb3V0aW5nTm90aWZpY2F0aW9uKGludCBzZCkKKyAKKyAgICAgICAgIC8vIFByb2Nlc3MgdGhlIE5ldExpbmsgbWVzc2FnZQorICAgICAgICAgaWYgKHBOTE1zZy0+bmxtc2dfdHlwZSA9PSBSVE1fR0VUTElOSyB8fCBwTkxNc2ctPm5sbXNnX3R5cGUgPT0gUlRNX05FV0xJTkspCistICAgICAgICAgICAgcmVzdWx0IHw9IDEgPDwgKChzdHJ1Y3QgaWZpbmZvbXNnKikgTkxNU0dfREFUQShwTkxNc2cpKS0+aWZpX2luZGV4OworKyAgICAgICAgICAgIEFkZEludGVyZmFjZUluZGV4VG9MaXN0KGNoYW5nZWRJbnRlcmZhY2VzLCAoKHN0cnVjdCBpZmluZm9tc2cqKSBOTE1TR19EQVRBKHBOTE1zZykpLT5pZmlfaW5kZXgpOworICAgICAgICAgZWxzZSBpZiAocE5MTXNnLT5ubG1zZ190eXBlID09IFJUTV9ERUxBRERSIHx8IHBOTE1zZy0+bmxtc2dfdHlwZSA9PSBSVE1fTkVXQUREUikKKy0gICAgICAgICAgICByZXN1bHQgfD0gMSA8PCAoKHN0cnVjdCBpZmFkZHJtc2cqKSBOTE1TR19EQVRBKHBOTE1zZykpLT5pZmFfaW5kZXg7CisrICAgICAgICAgICAgQWRkSW50ZXJmYWNlSW5kZXhUb0xpc3QoY2hhbmdlZEludGVyZmFjZXMsICgoc3RydWN0IGlmYWRkcm1zZyopIE5MTVNHX0RBVEEocE5MTXNnKSktPmlmYV9pbmRleCk7CisgCisgICAgICAgICAvLyBBZHZhbmNlIHBOTE1zZyB0byB0aGUgbmV4dCBtZXNzYWdlIGluIHRoZSBidWZmZXIKKyAgICAgICAgIGlmICgocE5MTXNnLT5ubG1zZ19mbGFncyAmIE5MTV9GX01VTFRJKSAhPSAwICYmIHBOTE1zZy0+bmxtc2dfdHlwZSAhPSBOTE1TR19ET05FKQorQEAgLTExNTQsOCArMTE4Nyw2IEBAIG1ETlNsb2NhbCBtRE5TdTMyICAgICAgIFByb2Nlc3NSb3V0aW5nTm90aWZpY2F0aW9uKGludCBzZCkKKyAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICBicmVhazsgIC8vIGFsbCBkb25lIQorICAgICB9CistCistICAgIHJldHVybiByZXN1bHQ7CisgfQorIAorICNlbHNlIC8vIFVTRVNfTkVUTElOSworQEAgLTExODcsMTQgKzEyMTgsMTMgQEAgbUROU2xvY2FsIHZvaWQgICAgICBQcmludFJvdXRpbmdTb2NrZXRNc2coY29uc3Qgc3RydWN0IGlmYV9tc2doZHIgKnBSU01zZykKKyB9CisgI2VuZGlmCisgCistbUROU2xvY2FsIG1ETlN1MzIgICAgICAgUHJvY2Vzc1JvdXRpbmdOb3RpZmljYXRpb24oaW50IHNkKQorK21ETlNsb2NhbCB2b2lkICAgICAgICAgIFByb2Nlc3NSb3V0aW5nTm90aWZpY2F0aW9uKGludCBzZCwgR2VuTGlua2VkTGlzdCAqY2hhbmdlZEludGVyZmFjZXMpCisgLy8gUmVhZCB0aHJvdWdoIHRoZSBtZXNzYWdlcyBvbiBzZCBhbmQgaWYgYW55IGluZGljYXRlIHRoYXQgYW55IGludGVyZmFjZSByZWNvcmRzIHNob3VsZAorIC8vIGJlIHRvcm4gZG93biBhbmQgcmVidWlsdCwgcmV0dXJuIGFmZmVjdGVkIGluZGljZXMgYXMgYSBiaXRtYXNrLiBPdGhlcndpc2UgcmV0dXJuIDAuCisgeworICAgICBzc2l6ZV90IHJlYWRDb3VudDsKKyAgICAgY2hhciBidWZmWzQwOTZdOworICAgICBzdHJ1Y3QgaWZhX21zZ2hkciAgICAgICAqcFJTTXNnID0gKHN0cnVjdCBpZmFfbXNnaGRyKikgYnVmZjsKKy0gICAgbUROU3UzMiByZXN1bHQgPSAwOworIAorICAgICByZWFkQ291bnQgPSByZWFkKHNkLCBidWZmLCBzaXplb2YgYnVmZik7CisgICAgIGlmIChyZWFkQ291bnQgPCAoc3NpemVfdCkgc2l6ZW9mKHN0cnVjdCBpZmFfbXNnaGRyKSkKK0BAIC0xMjA5LDEyICsxMjM5LDEwIEBAIG1ETlNsb2NhbCBtRE5TdTMyICAgICAgIFByb2Nlc3NSb3V0aW5nTm90aWZpY2F0aW9uKGludCBzZCkKKyAgICAgICAgIHBSU01zZy0+aWZhbV90eXBlID09IFJUTV9JRklORk8pCisgICAgIHsKKyAgICAgICAgIGlmIChwUlNNc2ctPmlmYW1fdHlwZSA9PSBSVE1fSUZJTkZPKQorLSAgICAgICAgICAgIHJlc3VsdCB8PSAxIDw8ICgoc3RydWN0IGlmX21zZ2hkciopIHBSU01zZyktPmlmbV9pbmRleDsKKysgICAgICAgICAgICBBZGRJbnRlcmZhY2VJbmRleFRvTGlzdChjaGFuZ2VkSW50ZXJmYWNlcywgKChzdHJ1Y3QgaWZfbXNnaGRyKikgcFJTTXNnKS0+aWZtX2luZGV4KTsKKyAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICByZXN1bHQgfD0gMSA8PCBwUlNNc2ctPmlmYW1faW5kZXg7CisrICAgICAgICAgICAgQWRkSW50ZXJmYWNlSW5kZXhUb0xpc3QoY2hhbmdlZEludGVyZmFjZXMsIHBSU01zZy0+aWZhbV9pbmRleCk7CisgICAgIH0KKy0KKy0gICAgcmV0dXJuIHJlc3VsdDsKKyB9CisgCisgI2VuZGlmIC8vIFVTRVNfTkVUTElOSworQEAgLTEyMjQsNyArMTI1Miw4IEBAIG1ETlNsb2NhbCB2b2lkIEludGVyZmFjZUNoYW5nZUNhbGxiYWNrKGludCBmZCwgc2hvcnQgZmlsdGVyLCB2b2lkICpjb250ZXh0KQorIHsKKyAgICAgSWZDaGFuZ2VSZWMgICAgICpwQ2hnUmVjID0gKElmQ2hhbmdlUmVjKikgY29udGV4dDsKKyAgICAgZmRfc2V0IHJlYWRGRHM7CistICAgIG1ETlN1MzIgY2hhbmdlZEludGVyZmFjZXMgPSAwOworKyAgICBHZW5MaW5rZWRMaXN0IGNoYW5nZWRJbnRlcmZhY2VzOworKyAgICBOZXR3b3JrSW50ZXJmYWNlSW5kZXggKmNoYW5nZWRJbnRlcmZhY2U7CisgICAgIHN0cnVjdCB0aW1ldmFsIHplcm9UaW1lb3V0ID0geyAwLCAwIH07CisgCisgICAgICh2b2lkKWZkOyAvLyBVbnVzZWQKK0BAIC0xMjMzLDE3ICsxMjYyLDI1IEBAIG1ETlNsb2NhbCB2b2lkIEludGVyZmFjZUNoYW5nZUNhbGxiYWNrKGludCBmZCwgc2hvcnQgZmlsdGVyLCB2b2lkICpjb250ZXh0KQorICAgICBGRF9aRVJPKCZyZWFkRkRzKTsKKyAgICAgRkRfU0VUKHBDaGdSZWMtPk5vdGlmeVNELCAmcmVhZEZEcyk7CisgCisrICAgIEluaXRMaW5rZWRMaXN0KCZjaGFuZ2VkSW50ZXJmYWNlcywgb2Zmc2V0b2YoTmV0d29ya0ludGVyZmFjZUluZGV4LCBOZXh0KSk7CisrCisgICAgIGRvCisgICAgIHsKKy0gICAgICAgIGNoYW5nZWRJbnRlcmZhY2VzIHw9IFByb2Nlc3NSb3V0aW5nTm90aWZpY2F0aW9uKHBDaGdSZWMtPk5vdGlmeVNEKTsKKysgICAgICAgIFByb2Nlc3NSb3V0aW5nTm90aWZpY2F0aW9uKHBDaGdSZWMtPk5vdGlmeVNELCAmY2hhbmdlZEludGVyZmFjZXMpOworICAgICB9CisgICAgIHdoaWxlICgwIDwgc2VsZWN0KHBDaGdSZWMtPk5vdGlmeVNEICsgMSwgJnJlYWRGRHMsIChmZF9zZXQqKSBOVUxMLCAoZmRfc2V0KikgTlVMTCwgJnplcm9UaW1lb3V0KSk7CisgCisgICAgIC8vIEN1cnJlbnRseSB3ZSByZWJ1aWxkIHRoZSBlbnRpcmUgaW50ZXJmYWNlIGxpc3Qgd2hlbmV2ZXIgYW55IGludGVyZmFjZSBjaGFuZ2UgaXMKKyAgICAgLy8gZGV0ZWN0ZWQuIElmIHRoaXMgZXZlciBwcm92ZXMgdG8gYmUgYSBwZXJmb3JtYW5jZSBpc3N1ZSBpbiBhIG11bHRpLWhvbWVkCisgICAgIC8vIGNvbmZpZ3VyYXRpb24sIG1vcmUgY2FyZSBzaG91bGQgYmUgcGFpZCB0byBjaGFuZ2VkSW50ZXJmYWNlcy4KKy0gICAgaWYgKGNoYW5nZWRJbnRlcmZhY2VzKQorKyAgICBpZiAoY2hhbmdlZEludGVyZmFjZXMuSGVhZCAhPSBOVUxMKQorICAgICAgICAgbUROU1BsYXRmb3JtUG9zaXhSZWZyZXNoSW50ZXJmYWNlTGlzdChwQ2hnUmVjLT5tRE5TKTsKKysKKysgICAgd2hpbGUgKChjaGFuZ2VkSW50ZXJmYWNlID0gKE5ldHdvcmtJbnRlcmZhY2VJbmRleCopY2hhbmdlZEludGVyZmFjZXMuSGVhZCkgIT0gTlVMTCkKKysgICAgeworKyAgICAgICAgUmVtb3ZlRnJvbUxpc3QoJmNoYW5nZWRJbnRlcmZhY2VzLCBjaGFuZ2VkSW50ZXJmYWNlKTsKKysgICAgICAgIGZyZWUoY2hhbmdlZEludGVyZmFjZSk7CisrICAgIH0KKyB9CisgCisgLy8gUmVnaXN0ZXIgd2l0aCBlaXRoZXIgYSBSb3V0aW5nIFNvY2tldCBvciBSdE5ldExpbmsgdG8gbGlzdGVuIGZvciBpbnRlcmZhY2UgY2hhbmdlcy4KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDUtSGFuZGxlLW5vaXN5LW5ldGxpbmstc29ja2V0cy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDUtSGFuZGxlLW5vaXN5LW5ldGxpbmstc29ja2V0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmIxNzFlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvZmlsZXMvMDAwNS1IYW5kbGUtbm9pc3ktbmV0bGluay1zb2NrZXRzLnBhdGNoCkBAIC0wLDAgKzEsMjEyIEBACitGcm9tIDkyMDI1Y2FiODY2MTlmNTQ4YmYzZWI4MTZhMTgwNGVmNDA1MDdjYTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CitEYXRlOiBNb24sIDI0IEp1bCAyMDE3IDA5OjM4OjU1IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMDUvMTFdIEhhbmRsZSBub2lzeSBuZXRsaW5rIHNvY2tldHMKKworVGhlIFBPU0lYIGltcGxlbWVudGF0aW9uIGN1cnJlbnRseSBjbGVhcnMgYWxsIG5ldHdvcmsgaW50ZXJmYWNlcword2hlbiBuZXRsaW5rIGluZGljYXRlcyB0aGF0IHRoZXJlIGhhcyBiZWVuIGEgY2hhbmdlLiBUaGlzIGNhdXNlcwordGhlIGZvbGxvd2luZyBwcm9ibGVtczoKKworICAxKSBBcHBsaWNhdGlvbnMgYXJlIGluZm9ybWVkIHRoYXQgYWxsIG9mIHRoZSBzZXJ2aWNlcyB0aGV5IGFyZQorICAgICB0cmFja2luZyBoYXZlIGJlZW4gcmVtb3ZlZC4KKyAgMikgSW5jcmVhc2VzIG5ldHdvcmsgbG9hZCBiZWNhdXNlIHRoZSBjbGllbnQgbXVzdCByZS1xdWVyeSBmb3IKKyAgICAgYWxsIHJlY29yZHMgaXQgaXMgaW50ZXJlc3RlZCBpbi4KKworVGhpcyBjaGFuZ2VzIG5ldGxpbmsgbm90aWZpY2F0aW9uIGhhbmRsaW5nIGJ5OgorCisgIDEpIEFsd2F5cyBjb21wYXJpbmcgd2l0aCB0aGUgbGF0ZXN0IGludGVyZmFjZSBsaXN0IHJldHVybmVkCisgICAgIGJ5IHRoZSBPUy4KKyAgMikgQ29uZmlybWluZyB0aGF0IHRoZSBpbnRlcmZhY2UgaGFzIGJlZW4gY2hhbmdlZCBpbiBhIHdheQorICAgICB0aGF0IHdlIGNhcmUgYWJvdXQuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtkdHNAYXBwbGUuY29tXQorCitTaWduZWQtb2ZmLWJ5OiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CistLS0KKyBtRE5TUG9zaXgvbUROU1Bvc2l4LmMgfCAxNDMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEzMyBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21ETlNQb3NpeC9tRE5TUG9zaXguYyBiL21ETlNQb3NpeC9tRE5TUG9zaXguYworaW5kZXggNjk5ODU1YS4uNTlhOGI4YyAxMDA2NDQKKy0tLSBhL21ETlNQb3NpeC9tRE5TUG9zaXguYworKysrIGIvbUROU1Bvc2l4L21ETlNQb3NpeC5jCitAQCAtMTI0NywxNCArMTI0NywzOCBAQCBtRE5TbG9jYWwgdm9pZCAgICAgICAgICBQcm9jZXNzUm91dGluZ05vdGlmaWNhdGlvbihpbnQgc2QsIEdlbkxpbmtlZExpc3QgKmNoYW5nZQorIAorICNlbmRpZiAvLyBVU0VTX05FVExJTksKKyAKKysvLyBUZXN0IHdoZXRoZXIgdGhlIGdpdmVuIFBvc2l4TmV0d29ya0ludGVyZmFjZSBtYXRjaGVzIHRoZSBnaXZlbiBzdHJ1Y3QgaWZpX2luZm8KKyttRE5TbG9jYWwgbUROU0Jvb2wgSW50ZXJmYWNlc01hdGNoKFBvc2l4TmV0d29ya0ludGVyZmFjZSAqaW50Ziwgc3RydWN0IGlmaV9pbmZvICppZmkpCisreworKyAgICBtRE5TQm9vbCBtYXRjaCA9IG1ETlNmYWxzZTsKKysgICAgbUROU0FkZHIgaXAsIG1hc2s7CisrCisrICAgIGlmKChpbnRmLT5pbmRleCA9PSBpZmktPmlmaV9pbmRleCkgJiYKKysgICAgICAgKGludGYtPnNhX2ZhbWlseSA9PSBpZmktPmlmaV9hZGRyLT5zYV9mYW1pbHkpICYmCisrICAgICAgIChzdHJjbXAoaW50Zi0+Y29yZUludGYuaWZuYW1lLCBpZmktPmlmaV9uYW1lKSA9PSAwKSkKKysgICAgICAgIHsKKysgICAgICAgIFNvY2tBZGRyVG9tRE5TQWRkcihpZmktPmlmaV9hZGRyLCAgICAmaXAsICAgTlVMTCk7CisrICAgICAgICBTb2NrQWRkclRvbUROU0FkZHIoaWZpLT5pZmlfbmV0bWFzaywgJm1hc2ssIE5VTEwpOworKworKyAgICAgICAgbWF0Y2ggPSBtRE5TU2FtZUFkZHJlc3MoJmludGYtPmNvcmVJbnRmLmlwLCAmaXApICYmCisrICAgICAgICAgICAgICAgIG1ETlNTYW1lQWRkcmVzcygmaW50Zi0+Y29yZUludGYubWFzaywgJm1hc2spOworKyAgICAgICAgfQorKworKyAgICByZXR1cm4gbWF0Y2g7CisrfQorKworIC8vIENhbGxlZCB3aGVuIGRhdGEgYXBwZWFycyBvbiBpbnRlcmZhY2UgY2hhbmdlIG5vdGlmaWNhdGlvbiBzb2NrZXQKKyBtRE5TbG9jYWwgdm9pZCBJbnRlcmZhY2VDaGFuZ2VDYWxsYmFjayhpbnQgZmQsIHNob3J0IGZpbHRlciwgdm9pZCAqY29udGV4dCkKKyB7CisgICAgIElmQ2hhbmdlUmVjICAgICAqcENoZ1JlYyA9IChJZkNoYW5nZVJlYyopIGNvbnRleHQ7CisrICAgIG1ETlMgICAgICAgICAgICAqbSA9IHBDaGdSZWMtPm1ETlM7CisgICAgIGZkX3NldCByZWFkRkRzOworICAgICBHZW5MaW5rZWRMaXN0IGNoYW5nZWRJbnRlcmZhY2VzOworICAgICBOZXR3b3JrSW50ZXJmYWNlSW5kZXggKmNoYW5nZWRJbnRlcmZhY2U7CisgICAgIHN0cnVjdCB0aW1ldmFsIHplcm9UaW1lb3V0ID0geyAwLCAwIH07CisrICAgIHN0cnVjdCBpZmlfaW5mbyAqaWZpX2xpc3QsICoqaWZpLCAqaWZpX2ZyZWUsICppZmlfbG9vcDQgPSBOVUxMOworKyAgICBQb3NpeE5ldHdvcmtJbnRlcmZhY2UgKmludGYsICppbnRmTmV4dDsKKysgICAgbUROU0Jvb2wgZm91bmQsIGZvdW5kYXY0OworIAorICAgICAodm9pZClmZDsgLy8gVW51c2VkCisgICAgICh2b2lkKWZpbHRlcjsgLy8gVW51c2VkCitAQCAtMTI3MCwxMiArMTI5NCwxMTUgQEAgbUROU2xvY2FsIHZvaWQgSW50ZXJmYWNlQ2hhbmdlQ2FsbGJhY2soaW50IGZkLCBzaG9ydCBmaWx0ZXIsIHZvaWQgKmNvbnRleHQpCisgICAgIH0KKyAgICAgd2hpbGUgKDAgPCBzZWxlY3QocENoZ1JlYy0+Tm90aWZ5U0QgKyAxLCAmcmVhZEZEcywgKGZkX3NldCopIE5VTEwsIChmZF9zZXQqKSBOVUxMLCAmemVyb1RpbWVvdXQpKTsKKyAKKy0gICAgLy8gQ3VycmVudGx5IHdlIHJlYnVpbGQgdGhlIGVudGlyZSBpbnRlcmZhY2UgbGlzdCB3aGVuZXZlciBhbnkgaW50ZXJmYWNlIGNoYW5nZSBpcworLSAgICAvLyBkZXRlY3RlZC4gSWYgdGhpcyBldmVyIHByb3ZlcyB0byBiZSBhIHBlcmZvcm1hbmNlIGlzc3VlIGluIGEgbXVsdGktaG9tZWQKKy0gICAgLy8gY29uZmlndXJhdGlvbiwgbW9yZSBjYXJlIHNob3VsZCBiZSBwYWlkIHRvIGNoYW5nZWRJbnRlcmZhY2VzLgorLSAgICBpZiAoY2hhbmdlZEludGVyZmFjZXMuSGVhZCAhPSBOVUxMKQorLSAgICAgICAgbUROU1BsYXRmb3JtUG9zaXhSZWZyZXNoSW50ZXJmYWNlTGlzdChwQ2hnUmVjLT5tRE5TKTsKKysgICAgQ2xlYW5SZWNlbnRJbnRlcmZhY2VzKCk7CisrCisrICAgIGlmIChjaGFuZ2VkSW50ZXJmYWNlcy5IZWFkID09IE5VTEwpIGdvdG8gY2xlYW51cDsKKysKKysgICAgaWZpX2xpc3QgPSBnZXRfaWZpX2luZm8oQUZfSU5FVCwgbUROU3RydWUpOworKyAgICBpZiAoaWZpX2xpc3QgPT0gTlVMTCkgZ290byBjbGVhbnVwOworKworKyNpZiBIQVZFX0lQVjYKKysgICAgLyogTGluayB0aGUgSVB2NiBsaXN0IHRvIHRoZSBlbmQgb2YgdGhlIElQdjQgbGlzdCAqLworKyAgICBpZmkgPSAmaWZpX2xpc3Q7CisrICAgIHdoaWxlICgqaWZpICE9IE5VTEwpIGlmaSA9ICYoKmlmaSktPmlmaV9uZXh0OworKyAgICAqaWZpID0gZ2V0X2lmaV9pbmZvKEFGX0lORVQ2LCBtRE5TdHJ1ZSk7CisrI2VuZGlmCisrCisrICAgIGZvciAoaW50ZiA9IChQb3NpeE5ldHdvcmtJbnRlcmZhY2UqKShtLT5Ib3N0SW50ZXJmYWNlcyk7IGludGYgIT0gTlVMTDsgaW50ZiA9IGludGZOZXh0KQorKyAgICB7CisrICAgICAgICBpbnRmTmV4dCA9IChQb3NpeE5ldHdvcmtJbnRlcmZhY2UqKShpbnRmLT5jb3JlSW50Zi5uZXh0KTsKKysKKysgICAgICAgIC8vIExvb3BiYWNrIGludGVyZmFjZShzKSBhcmUgaGFuZGxlZCBsYXRlcgorKyAgICAgICAgaWYgKGludGYtPmNvcmVJbnRmLkxvb3BiYWNrKSBjb250aW51ZTsKKysKKysgICAgICAgIGZvdW5kID0gbUROU2ZhbHNlOworKyAgICAgICAgZm9yIChpZmkgPSAmaWZpX2xpc3Q7ICppZmkgIT0gTlVMTDsgaWZpID0gJigqaWZpKS0+aWZpX25leHQpCisrICAgICAgICB7CisrICAgICAgICAgICAgaWYgKEludGVyZmFjZXNNYXRjaChpbnRmLCAqaWZpKSkKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGZvdW5kID0gbUROU3RydWU7CisrCisrICAgICAgICAgICAgICAgIC8vIFJlbW92ZXMgdW5jaGFuZ2VkIGZyb20gaWZpX2xpc3QKKysgICAgICAgICAgICAgICAgaWZpX2ZyZWUgPSAqaWZpOworKyAgICAgICAgICAgICAgICAqaWZpID0gKCppZmkpLT5pZmlfbmV4dDsKKysgICAgICAgICAgICAgICAgaWZpX2ZyZWUtPmlmaV9uZXh0ID0gTlVMTDsKKysgICAgICAgICAgICAgICAgZnJlZV9pZmlfaW5mbyhpZmlfZnJlZSk7CisrCisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysKKysgICAgICAgIC8vIFJlbW92ZXMgY2hhbmdlZCBhbmQgb2xkIGludGVyZmFjZXMgZnJvbSBtLT5Ib3N0SW50ZXJmYWNlcworKyAgICAgICAgaWYgKCFmb3VuZCkgVGVhckRvd25JbnRlcmZhY2UobSwgaW50Zik7CisrICAgIH0KKysKKysgICAgLy8gQWRkIG5ldyBhbmQgY2hhbmdlZCBpbnRlcmZhY2VzIGluIGlmaV9saXN0CisrICAgIC8vIFNhdmUgb2ZmIGxvb3BiYWNrIGludGVyZmFjZSBpbiBjYXNlIGl0IGlzIG5lZWRlZCBsYXRlcgorKyAgICBmb3IgKGlmaSA9ICZpZmlfbGlzdDsgKmlmaSAhPSBOVUxMOyBpZmkgPSAmKCppZmkpLT5pZmlfbmV4dCkKKysgICAgeworKyAgICAgICAgaWYgKChpZmlfbG9vcDQgPT0gTlVMTCkgJiYKKysgICAgICAgICAgICAoKCppZmkpLT5pZmlfYWRkci0+c2FfZmFtaWx5ID09IEFGX0lORVQpICYmCisrICAgICAgICAgICAgKCgqaWZpKS0+aWZpX2ZsYWdzICYgSUZGX1VQKSAmJgorKyAgICAgICAgICAgICgoKmlmaSktPmlmaV9mbGFncyAmIElGRl9MT09QQkFDSykpCisrICAgICAgICB7CisrICAgICAgICAgICAgaWZpX2xvb3A0ID0gKmlmaTsKKysgICAgICAgICAgICBjb250aW51ZTsKKysgICAgICAgIH0KKysKKysgICAgICAgIGlmICggICAgICgoKCppZmkpLT5pZmlfYWRkci0+c2FfZmFtaWx5ID09IEFGX0lORVQpCisrI2lmIEhBVkVfSVBWNgorKyAgICAgICAgICAgICAgICAgIHx8ICgoKmlmaSktPmlmaV9hZGRyLT5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpCisrI2VuZGlmCisrICAgICAgICAgICAgICAgICAgKSAmJiAoKCppZmkpLT5pZmlfZmxhZ3MgJiBJRkZfVVApCisrICAgICAgICAgICAgICAgICAgICAmJiAhKCgqaWZpKS0+aWZpX2ZsYWdzICYgSUZGX1BPSU5UT1BPSU5UKQorKyAgICAgICAgICAgICAgICAgICAgJiYgISgoKmlmaSktPmlmaV9mbGFncyAmIElGRl9MT09QQkFDSykpCisrICAgICAgICB7CisrICAgICAgICAgICAgU2V0dXBPbmVJbnRlcmZhY2UobSwgKmlmaSk7CisrICAgICAgICB9CisrICAgIH0KKysKKysgICAgLy8gRGV0ZXJtaW5lIGlmIHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBub24tbG9vcGJhY2sgSVB2NCBpbnRlcmZhY2UuIFRoaXMgaXMgdG8gd29yayBhcm91bmQgaXNzdWVzCisrICAgIC8vIHdpdGggbXVsdGljYXN0IGxvb3BiYWNrIG9uIElQdjYgaW50ZXJmYWNlcyAtLSBzZWUgY29ycmVzcG9uZGluZyBsb2dpYyBpbiBTZXR1cEludGVyZmFjZUxpc3QoKS4KKysgICAgZm91bmRhdjQgPSBtRE5TZmFsc2U7CisrICAgIGZvciAoaW50ZiA9IChQb3NpeE5ldHdvcmtJbnRlcmZhY2UqKShtLT5Ib3N0SW50ZXJmYWNlcyk7IGludGYgIT0gTlVMTDsgaW50ZiA9IChQb3NpeE5ldHdvcmtJbnRlcmZhY2UqKShpbnRmLT5jb3JlSW50Zi5uZXh0KSkKKysgICAgeworKyAgICAgICAgaWYgKGludGYtPnNhX2ZhbWlseSA9PSBBRl9JTkVUICYmICFpbnRmLT5jb3JlSW50Zi5Mb29wYmFjaykKKysgICAgICAgIHsKKysgICAgICAgICAgICBmb3VuZGF2NCA9IG1ETlN0cnVlOworKyAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIGlmIChmb3VuZGF2NCkKKysgICAgeworKyAgICAgICAgZm9yIChpbnRmID0gKFBvc2l4TmV0d29ya0ludGVyZmFjZSopKG0tPkhvc3RJbnRlcmZhY2VzKTsgaW50ZiAhPSBOVUxMOyBpbnRmID0gaW50Zk5leHQpCisrICAgICAgICB7CisrICAgICAgICAgICAgaW50Zk5leHQgPSAoUG9zaXhOZXR3b3JrSW50ZXJmYWNlKikoaW50Zi0+Y29yZUludGYubmV4dCk7CisrICAgICAgICAgICAgaWYgKGludGYtPmNvcmVJbnRmLkxvb3BiYWNrKSBUZWFyRG93bkludGVyZmFjZShtLCBpbnRmKTsKKysgICAgICAgIH0KKysgICAgfQorKyAgICBlbHNlCisrICAgIHsKKysgICAgICAgIGZvdW5kID0gbUROU2ZhbHNlOworKworKyAgICAgICAgZm9yIChpbnRmID0gKFBvc2l4TmV0d29ya0ludGVyZmFjZSopKG0tPkhvc3RJbnRlcmZhY2VzKTsgaW50ZiAhPSBOVUxMOyBpbnRmID0gKFBvc2l4TmV0d29ya0ludGVyZmFjZSopKGludGYtPmNvcmVJbnRmLm5leHQpKQorKyAgICAgICAgeworKyAgICAgICAgICAgIGlmIChpbnRmLT5jb3JlSW50Zi5Mb29wYmFjaykKKysgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgIGZvdW5kID0gbUROU3RydWU7CisrICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysgICAgICAgIH0KKysKKysgICAgICAgIGlmICghZm91bmQgJiYgKGlmaV9sb29wNCAhPSBOVUxMKSkKKysgICAgICAgIHsKKysgICAgICAgICAgICBTZXR1cE9uZUludGVyZmFjZShtLCBpZmlfbG9vcDQpOworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIGlmIChpZmlfbGlzdCAhPSBOVUxMKSBmcmVlX2lmaV9pbmZvKGlmaV9saXN0KTsKKyAKKytjbGVhbnVwOgorICAgICB3aGlsZSAoKGNoYW5nZWRJbnRlcmZhY2UgPSAoTmV0d29ya0ludGVyZmFjZUluZGV4KiljaGFuZ2VkSW50ZXJmYWNlcy5IZWFkKSAhPSBOVUxMKQorICAgICB7CisgICAgICAgICBSZW1vdmVGcm9tTGlzdCgmY2hhbmdlZEludGVyZmFjZXMsIGNoYW5nZWRJbnRlcmZhY2UpOworQEAgLTE0MDAsMTUgKzE1MjcsMTEgQEAgbUROU2V4cG9ydCB2b2lkIG1ETlNQbGF0Zm9ybUNsb3NlKG1ETlMgKmNvbnN0IG0pCisgI2VuZGlmCisgfQorIAorLS8vIFRoaXMgaXMgdXNlZCBpbnRlcm5hbGx5IGJ5IEludGVyZmFjZUNoYW5nZUNhbGxiYWNrLgorLS8vIEl0J3MgYWxzbyBleHBvcnRlZCBzbyB0aGF0IHRoZSBTdGFuZGFsb25lIFJlc3BvbmRlciAobUROU1Jlc3BvbmRlclBvc2l4KQorKy8vIFRoaXMgaXMgZXhwb3J0ZWQgc28gdGhhdCB0aGUgU3RhbmRhbG9uZSBSZXNwb25kZXIgKG1ETlNSZXNwb25kZXJQb3NpeCkKKyAvLyBjYW4gY2FsbCBpdCBpbiByZXNwb25zZSB0byBhIFNJR0hVUCAobWFpbmx5IGZvciBkZWJ1Z2dpbmcgcHVycG9zZXMpLgorIG1ETlNleHBvcnQgbVN0YXR1cyBtRE5TUGxhdGZvcm1Qb3NpeFJlZnJlc2hJbnRlcmZhY2VMaXN0KG1ETlMgKmNvbnN0IG0pCisgeworICAgICBpbnQgZXJyOworLSAgICAvLyBUaGlzIGlzIGEgcHJldHR5IGhlYXZ5d2VpZ2h0IHdheSB0byBwcm9jZXNzIGludGVyZmFjZSBjaGFuZ2VzIC0tCistICAgIC8vIGRlc3Ryb3lpbmcgdGhlIGVudGlyZSBpbnRlcmZhY2UgbGlzdCBhbmQgdGhlbiBtYWtpbmcgZnJlc2ggb25lIGZyb20gc2NyYXRjaC4KKy0gICAgLy8gV2Ugc2hvdWxkIG1ha2UgaXQgbGlrZSB0aGUgT1MgWCB2ZXJzaW9uLCB3aGljaCBsZWF2ZXMgdW5jaGFuZ2VkIGludGVyZmFjZXMgYWxvbmUuCisgICAgIENsZWFySW50ZXJmYWNlTGlzdChtKTsKKyAgICAgZXJyID0gU2V0dXBJbnRlcmZhY2VMaXN0KG0pOworICAgICByZXR1cm4gUG9zaXhFcnJvclRvU3RhdHVzKGVycik7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDA2LVJlbW92ZS11bm5lZWRlZC1mdW5jdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDYtUmVtb3ZlLXVubmVlZGVkLWZ1bmN0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI0NjFhNjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDA2LVJlbW92ZS11bm5lZWRlZC1mdW5jdGlvbi5wYXRjaApAQCAtMCwwICsxLDUxIEBACitGcm9tIDE1N2Q2N2YxNTI3Nzc3NTRjMDU5Y2VkNzUxMTM1MjEwMmYyM2ZmYWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CitEYXRlOiBNb24sIDI0IEp1bCAyMDE3IDA5OjM5OjE4IC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMDYvMTFdIFJlbW92ZSB1bm5lZWRlZCBmdW5jdGlvbgorCitSZW1vdmVzIGEgZnVuY3Rpb24gd2Ugbm8gbG9uZ2VyIG5lZWQgYnkgaW50ZWdyYXRpbmcgaXQgaW50byB0aGUgb25seQorZnVuY3Rpb24gdGhhdCBjYWxscyBpdC4gVGhpcyB3YXMgb3JpZ2luYWxseSBzZXBhcmF0ZWQgc28gdGhhdCB3ZSBjb3VsZAorb25seSBwcm9jZXNzIG5ldHdvcmsgaW50ZXJmYWNlcyB0aGF0IG5ldGxpbmsgaW5kaWNhdGVkIGhhZCBiZWVuIGNoYW5nZWQsCit0aGlzIGhhcyBzaW5jZSBiZWVuIGV4dGVuZGVkIHRvIHRlc3QgZm9yIGFsbCBuZXR3b3JrIGludGVmYWNlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2R0c0BhcHBsZS5jb21dCisKK1NpZ25lZC1vZmYtYnk6IE5hdGUgS2Fyc3RlbnMgPG5hdGUua2Fyc3RlbnNAZ2FybWluLmNvbT4KKy0tLQorIG1ETlNQb3NpeC9tRE5TUG9zaXguYyB8IDEzICsrLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21ETlNQb3NpeC9tRE5TUG9zaXguYyBiL21ETlNQb3NpeC9tRE5TUG9zaXguYworaW5kZXggNTlhOGI4Yy4uM2ZjNTQ1MSAxMDA2NDQKKy0tLSBhL21ETlNQb3NpeC9tRE5TUG9zaXguYworKysrIGIvbUROU1Bvc2l4L21ETlNQb3NpeC5jCitAQCAtMTA3OSwyNCArMTA3OSwxNSBAQCBtRE5TbG9jYWwgbVN0YXR1cyBPcGVuSWZOb3RpZnlTb2NrZXQoaW50ICpwRkQpCisgICAgIHJldHVybiBlcnI7CisgfQorIAorLW1ETlNsb2NhbCBtRE5TQm9vbCBMaXN0Q29udGFpbnNJbnRlcmZhY2VJbmRleChHZW5MaW5rZWRMaXN0ICpsaXN0LCBpbnQgaWZfaW5kZXgpCisrbUROU2xvY2FsIHZvaWQgQWRkSW50ZXJmYWNlSW5kZXhUb0xpc3QoR2VuTGlua2VkTGlzdCAqbGlzdCwgaW50IGlmX2luZGV4KQorIHsKKyAgICAgTmV0d29ya0ludGVyZmFjZUluZGV4ICppdGVtOworIAorICAgICBmb3IgKGl0ZW0gPSAoTmV0d29ya0ludGVyZmFjZUluZGV4KilsaXN0LT5IZWFkOyBpdGVtICE9IE5VTEw7IGl0ZW0gPSBpdGVtLT5OZXh0KQorICAgICB7CistICAgICAgICBpZiAoaWZfaW5kZXggPT0gaXRlbS0+aWZfaW5kZXgpIHJldHVybiBtRE5TdHJ1ZTsKKysgICAgICAgIGlmIChpZl9pbmRleCA9PSBpdGVtLT5pZl9pbmRleCkgcmV0dXJuOworICAgICB9CisgCistICAgIHJldHVybiBtRE5TZmFsc2U7CistfQorLQorLW1ETlNsb2NhbCB2b2lkIEFkZEludGVyZmFjZUluZGV4VG9MaXN0KEdlbkxpbmtlZExpc3QgKmxpc3QsIGludCBpZl9pbmRleCkKKy17CistICAgIE5ldHdvcmtJbnRlcmZhY2VJbmRleCAqaXRlbTsKKy0KKy0gICAgaWYgKExpc3RDb250YWluc0ludGVyZmFjZUluZGV4KGxpc3QsIGlmX2luZGV4KSkgcmV0dXJuOworLQorICAgICBpdGVtID0gbWFsbG9jKHNpemVvZiAqaXRlbSk7CisgICAgIGlmIChpdGVtID09IE5VTEwpIHJldHVybjsKKyAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDctSW5kaWNhdGUtbG9vcGJhY2staW50ZXJmYWNlLXRvLW1ETlMtY29yZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDctSW5kaWNhdGUtbG9vcGJhY2staW50ZXJmYWNlLXRvLW1ETlMtY29yZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjIwMWM2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvZmlsZXMvMDAwNy1JbmRpY2F0ZS1sb29wYmFjay1pbnRlcmZhY2UtdG8tbUROUy1jb3JlLnBhdGNoCkBAIC0wLDAgKzEsMTI5IEBACitGcm9tIDA3YTk0MDFkODQ4MDRkN2YwMTgxYWE0ZmIwZjEzYTU0YjJhMWM5YTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CitEYXRlOiBUdWUsIDEgQXVnIDIwMTcgMTc6MDY6MDEgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAwNy8xMV0gSW5kaWNhdGUgbG9vcGJhY2sgaW50ZXJmYWNlIHRvIG1ETlMgY29yZQorCitUZWxscyB0aGUgbUROUyBjb3JlIGlmIGFuIGludGVyZmFjZSBpcyBhIGxvb3BiYWNrIGludGVyZmFjZSwKK3NpbWlsYXIgdG8gQWRkSW50ZXJmYWNlVG9MaXN0KCkgaW4gdGhlIE1hY09TIGltcGxlbWVudGF0aW9uLgorQWxzbyByZW9yZ2FuaXplcyBTZXR1cE9uZUludGVyZmFjZSgpIHRvIHVzZSBhIGNvbnN0IHN0cnVjdAorcmF0aGVyIHRoYW4gZ3Jvd2luZyBpdHMgcGFyYW1ldGVyIGxpc3QgYWdhaW4uCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtkdHNAYXBwbGUuY29tXQorCitTaWduZWQtb2ZmLWJ5OiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CistLS0KKyBtRE5TUG9zaXgvbUROU1Bvc2l4LmMgfCAzNyArKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbUROU1Bvc2l4L21ETlNQb3NpeC5jIGIvbUROU1Bvc2l4L21ETlNQb3NpeC5jCitpbmRleCAzZmM1NDUxLi43OThhYjEwIDEwMDY0NAorLS0tIGEvbUROU1Bvc2l4L21ETlNQb3NpeC5jCisrKysgYi9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKK0BAIC04ODksMTYgKzg4OSwxNCBAQCBtRE5TbG9jYWwgdm9pZCBDbGVhblJlY2VudEludGVyZmFjZXModm9pZCkKKyAKKyAvLyBDcmVhdGVzIGEgUG9zaXhOZXR3b3JrSW50ZXJmYWNlIGZvciB0aGUgaW50ZXJmYWNlIHdob3NlIElQIGFkZHJlc3MgaXMKKyAvLyBpbnRmQWRkciBhbmQgd2hvc2UgbmFtZSBpcyBpbnRmTmFtZSBhbmQgcmVnaXN0ZXJzIGl0IHdpdGggbUROUyBjb3JlLgorLW1ETlNsb2NhbCBpbnQgU2V0dXBPbmVJbnRlcmZhY2UobUROUyAqY29uc3QgbSwgc3RydWN0IHNvY2thZGRyICppbnRmQWRkciwgc3RydWN0IHNvY2thZGRyICppbnRmTWFzaywgY29uc3QgY2hhciAqaW50Zk5hbWUsIGludCBpbnRmSW5kZXgpCisrbUROU2xvY2FsIGludCBTZXR1cE9uZUludGVyZmFjZShtRE5TICpjb25zdCBtLCBzdHJ1Y3QgaWZpX2luZm8gKmNvbnN0IGlmaSkKKyB7CisgICAgIGludCBlcnIgPSAwOworICAgICBQb3NpeE5ldHdvcmtJbnRlcmZhY2UgKmludGY7CisgICAgIFBvc2l4TmV0d29ya0ludGVyZmFjZSAqYWxpYXMgPSBOVUxMOworIAorICAgICBhc3NlcnQobSAhPSBOVUxMKTsKKy0gICAgYXNzZXJ0KGludGZBZGRyICE9IE5VTEwpOworLSAgICBhc3NlcnQoaW50Zk5hbWUgIT0gTlVMTCk7CistICAgIGFzc2VydChpbnRmTWFzayAhPSBOVUxMKTsKKysgICAgYXNzZXJ0KGlmaSAhPSBOVUxMKTsKKyAKKyAgICAgLy8gQWxsb2NhdGUgdGhlIGludGVyZmFjZSBzdHJ1Y3R1cmUgaXRzZWxmLgorICAgICBpbnRmID0gKFBvc2l4TmV0d29ya0ludGVyZmFjZSopY2FsbG9jKDEsIHNpemVvZigqaW50ZikpOworQEAgLTkwNywyNiArOTA1LDI3IEBAIG1ETlNsb2NhbCBpbnQgU2V0dXBPbmVJbnRlcmZhY2UobUROUyAqY29uc3QgbSwgc3RydWN0IHNvY2thZGRyICppbnRmQWRkciwgc3RydWN0CisgICAgIC8vIEFuZCBtYWtlIGEgY29weSBvZiB0aGUgaW50Zk5hbWUuCisgICAgIGlmIChlcnIgPT0gMCkKKyAgICAgeworLSAgICAgICAgaW50Zi0+aW50Zk5hbWUgPSBzdHJkdXAoaW50Zk5hbWUpOworKyAgICAgICAgaW50Zi0+aW50Zk5hbWUgPSBzdHJkdXAoaWZpLT5pZmlfbmFtZSk7CisgICAgICAgICBpZiAoaW50Zi0+aW50Zk5hbWUgPT0gTlVMTCkgeyBhc3NlcnQoMCk7IGVyciA9IEVOT01FTTsgfQorICAgICB9CisgCisgICAgIGlmIChlcnIgPT0gMCkKKyAgICAgeworICAgICAgICAgLy8gU2V0IHVwIHRoZSBmaWVsZHMgcmVxdWlyZWQgYnkgdGhlIG1ETlMgY29yZS4KKy0gICAgICAgIFNvY2tBZGRyVG9tRE5TQWRkcihpbnRmQWRkciwgJmludGYtPmNvcmVJbnRmLmlwLCBOVUxMKTsKKy0gICAgICAgIFNvY2tBZGRyVG9tRE5TQWRkcihpbnRmTWFzaywgJmludGYtPmNvcmVJbnRmLm1hc2ssIE5VTEwpOworKyAgICAgICAgU29ja0FkZHJUb21ETlNBZGRyKGlmaS0+aWZpX2FkZHIsICZpbnRmLT5jb3JlSW50Zi5pcCwgTlVMTCk7CisrICAgICAgICBTb2NrQWRkclRvbUROU0FkZHIoaWZpLT5pZmlfbmV0bWFzaywgJmludGYtPmNvcmVJbnRmLm1hc2ssIE5VTEwpOworIAorICAgICAgICAgLy9Mb2dNc2coIlNldHVwT25lSW50ZXJmYWNlOiAlI2EgJSNhIiwgICZpbnRmLT5jb3JlSW50Zi5pcCwgICZpbnRmLT5jb3JlSW50Zi5tYXNrKTsKKy0gICAgICAgIHN0cm5jcHkoaW50Zi0+Y29yZUludGYuaWZuYW1lLCBpbnRmTmFtZSwgc2l6ZW9mKGludGYtPmNvcmVJbnRmLmlmbmFtZSkpOworKyAgICAgICAgc3RybmNweShpbnRmLT5jb3JlSW50Zi5pZm5hbWUsIGlmaS0+aWZpX25hbWUsIHNpemVvZihpbnRmLT5jb3JlSW50Zi5pZm5hbWUpKTsKKyAgICAgICAgIGludGYtPmNvcmVJbnRmLmlmbmFtZVtzaXplb2YoaW50Zi0+Y29yZUludGYuaWZuYW1lKS0xXSA9IDA7CisgICAgICAgICBpbnRmLT5jb3JlSW50Zi5BZHZlcnRpc2UgPSBtLT5BZHZlcnRpc2VMb2NhbEFkZHJlc3NlczsKKyAgICAgICAgIGludGYtPmNvcmVJbnRmLk1jYXN0VHhSeCA9IG1ETlN0cnVlOworKyAgICAgICAgaW50Zi0+Y29yZUludGYuTG9vcGJhY2sgPSAoKGlmaS0+aWZpX2ZsYWdzICYgSUZGX0xPT1BCQUNLKSAhPSAwKSA/IG1ETlN0cnVlIDogbUROU2ZhbHNlOworIAorICAgICAgICAgLy8gU2V0IHVwIHRoZSBleHRyYSBmaWVsZHMgaW4gUG9zaXhOZXR3b3JrSW50ZXJmYWNlLgorICAgICAgICAgYXNzZXJ0KGludGYtPmludGZOYW1lICE9IE5VTEwpOyAgICAgICAgIC8vIGludGYtPmludGZOYW1lIGFscmVhZHkgc2V0IHVwIGFib3ZlCistICAgICAgICBpbnRmLT5pbmRleCAgICAgICAgICAgICAgICA9IGludGZJbmRleDsKKy0gICAgICAgIGludGYtPnNhX2ZhbWlseSAgICAgICAgICAgID0gaW50ZkFkZHItPnNhX2ZhbWlseTsKKysgICAgICAgIGludGYtPmluZGV4ICAgICAgICAgICAgICAgID0gaWZpLT5pZmlfaW5kZXg7CisrICAgICAgICBpbnRmLT5zYV9mYW1pbHkgICAgICAgICAgICA9IGlmaS0+aWZpX2FkZHItPnNhX2ZhbWlseTsKKyAgICAgICAgIGludGYtPm11bHRpY2FzdFNvY2tldDQgICAgID0gLTE7CisgI2lmIEhBVkVfSVBWNgorICAgICAgICAgaW50Zi0+bXVsdGljYXN0U29ja2V0NiAgICAgPSAtMTsKK0BAIC05MzYsMTcgKzkzNSwxNyBAQCBtRE5TbG9jYWwgaW50IFNldHVwT25lSW50ZXJmYWNlKG1ETlMgKmNvbnN0IG0sIHN0cnVjdCBzb2NrYWRkciAqaW50ZkFkZHIsIHN0cnVjdAorICAgICAgICAgaW50Zi0+Y29yZUludGYuSW50ZXJmYWNlSUQgPSAobUROU0ludGVyZmFjZUlEKWFsaWFzOworIAorICAgICAgICAgaWYgKGFsaWFzICE9IGludGYpCistICAgICAgICAgICAgZGVidWdmKCJTZXR1cE9uZUludGVyZmFjZTogJXMgJSNhIGlzIGFuIGFsaWFzIG9mICUjYSIsIGludGZOYW1lLCAmaW50Zi0+Y29yZUludGYuaXAsICZhbGlhcy0+Y29yZUludGYuaXApOworKyAgICAgICAgICAgIGRlYnVnZigiU2V0dXBPbmVJbnRlcmZhY2U6ICVzICUjYSBpcyBhbiBhbGlhcyBvZiAlI2EiLCBpZmktPmlmaV9uYW1lLCAmaW50Zi0+Y29yZUludGYuaXAsICZhbGlhcy0+Y29yZUludGYuaXApOworICAgICB9CisgCisgICAgIC8vIFNldCB1cCB0aGUgbXVsdGljYXN0IHNvY2tldAorICAgICBpZiAoZXJyID09IDApCisgICAgIHsKKy0gICAgICAgIGlmIChhbGlhcy0+bXVsdGljYXN0U29ja2V0NCA9PSAtMSAmJiBpbnRmQWRkci0+c2FfZmFtaWx5ID09IEFGX0lORVQpCistICAgICAgICAgICAgZXJyID0gU2V0dXBTb2NrZXQoaW50ZkFkZHIsIE11bHRpY2FzdEROU1BvcnQsIGludGYtPmluZGV4LCAmYWxpYXMtPm11bHRpY2FzdFNvY2tldDQpOworKyAgICAgICAgaWYgKGFsaWFzLT5tdWx0aWNhc3RTb2NrZXQ0ID09IC0xICYmIGlmaS0+aWZpX2FkZHItPnNhX2ZhbWlseSA9PSBBRl9JTkVUKQorKyAgICAgICAgICAgIGVyciA9IFNldHVwU29ja2V0KGlmaS0+aWZpX2FkZHIsIE11bHRpY2FzdEROU1BvcnQsIGludGYtPmluZGV4LCAmYWxpYXMtPm11bHRpY2FzdFNvY2tldDQpOworICNpZiBIQVZFX0lQVjYKKy0gICAgICAgIGVsc2UgaWYgKGFsaWFzLT5tdWx0aWNhc3RTb2NrZXQ2ID09IC0xICYmIGludGZBZGRyLT5zYV9mYW1pbHkgPT0gQUZfSU5FVDYpCistICAgICAgICAgICAgZXJyID0gU2V0dXBTb2NrZXQoaW50ZkFkZHIsIE11bHRpY2FzdEROU1BvcnQsIGludGYtPmluZGV4LCAmYWxpYXMtPm11bHRpY2FzdFNvY2tldDYpOworKyAgICAgICAgZWxzZSBpZiAoYWxpYXMtPm11bHRpY2FzdFNvY2tldDYgPT0gLTEgJiYgaWZpLT5pZmlfYWRkci0+c2FfZmFtaWx5ID09IEFGX0lORVQ2KQorKyAgICAgICAgICAgIGVyciA9IFNldHVwU29ja2V0KGlmaS0+aWZpX2FkZHIsIE11bHRpY2FzdEROU1BvcnQsIGludGYtPmluZGV4LCAmYWxpYXMtPm11bHRpY2FzdFNvY2tldDYpOworICNlbmRpZgorICAgICB9CisgCitAQCAtOTczLDggKzk3Miw4IEBAIG1ETlNsb2NhbCBpbnQgU2V0dXBPbmVJbnRlcmZhY2UobUROUyAqY29uc3QgbSwgc3RydWN0IHNvY2thZGRyICppbnRmQWRkciwgc3RydWN0CisgICAgIH0KKyAgICAgZWxzZQorICAgICB7CistICAgICAgICAvLyBVc2UgaW50Zk5hbWUgaW5zdGVhZCBvZiBpbnRmLT5pbnRmTmFtZSBpbiB0aGUgbmV4dCBsaW5lIHRvIGF2b2lkIGRlcmVmZXJlbmNpbmcgTlVMTC4KKy0gICAgICAgIGRlYnVnZigiU2V0dXBPbmVJbnRlcmZhY2U6ICVzICUjYSBmYWlsZWQgdG8gcmVnaXN0ZXIgJWQiLCBpbnRmTmFtZSwgJmludGYtPmNvcmVJbnRmLmlwLCBlcnIpOworKyAgICAgICAgLy8gVXNlIGlmaS0+aWZpX25hbWUgaW5zdGVhZCBvZiBpbnRmLT5pbnRmTmFtZSBpbiB0aGUgbmV4dCBsaW5lIHRvIGF2b2lkIGRlcmVmZXJlbmNpbmcgTlVMTC4KKysgICAgICAgIGRlYnVnZigiU2V0dXBPbmVJbnRlcmZhY2U6ICVzICUjYSBmYWlsZWQgdG8gcmVnaXN0ZXIgJWQiLCBpZmktPmlmaV9uYW1lLCAmaW50Zi0+Y29yZUludGYuaXAsIGVycik7CisgICAgICAgICBpZiAoaW50ZikgeyBGcmVlUG9zaXhOZXR3b3JrSW50ZXJmYWNlKGludGYpOyBpbnRmID0gTlVMTDsgfQorICAgICB9CisgCitAQCAtMTAyMyw3ICsxMDIyLDcgQEAgbUROU2xvY2FsIGludCBTZXR1cEludGVyZmFjZUxpc3QobUROUyAqY29uc3QgbSkKKyAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgIHsKKy0gICAgICAgICAgICAgICAgICAgIGlmIChTZXR1cE9uZUludGVyZmFjZShtLCBpLT5pZmlfYWRkciwgaS0+aWZpX25ldG1hc2ssIGktPmlmaV9uYW1lLCBpLT5pZmlfaW5kZXgpID09IDApCisrICAgICAgICAgICAgICAgICAgICBpZiAoU2V0dXBPbmVJbnRlcmZhY2UobSwgaSkgPT0gMCkKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaS0+aWZpX2FkZHItPnNhX2ZhbWlseSA9PSBBRl9JTkVUKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZGF2NCA9IG1ETlN0cnVlOworICAgICAgICAgICAgICAgICB9CitAQCAtMTAzNyw3ICsxMDM2LDcgQEAgbUROU2xvY2FsIGludCBTZXR1cEludGVyZmFjZUxpc3QobUROUyAqY29uc3QgbSkKKyAgICAgICAgIC8vIEluIHRoZSBpbnRlcmltLCB3ZSBza2lwIGxvb3BiYWNrIGludGVyZmFjZSBvbmx5IGlmIHdlIGZvdW5kIGF0IGxlYXN0IG9uZSB2NCBpbnRlcmZhY2UgdG8gdXNlCisgICAgICAgICAvLyBpZiAoKG0tPkhvc3RJbnRlcmZhY2VzID09IE5VTEwpICYmIChmaXJzdExvb3BiYWNrICE9IE5VTEwpKQorICAgICAgICAgaWYgKCFmb3VuZGF2NCAmJiBmaXJzdExvb3BiYWNrKQorLSAgICAgICAgICAgICh2b2lkKSBTZXR1cE9uZUludGVyZmFjZShtLCBmaXJzdExvb3BiYWNrLT5pZmlfYWRkciwgZmlyc3RMb29wYmFjay0+aWZpX25ldG1hc2ssIGZpcnN0TG9vcGJhY2stPmlmaV9uYW1lLCBmaXJzdExvb3BiYWNrLT5pZmlfaW5kZXgpOworKyAgICAgICAgICAgICh2b2lkKSBTZXR1cE9uZUludGVyZmFjZShtLCBmaXJzdExvb3BiYWNrKTsKKyAgICAgfQorIAorICAgICAvLyBDbGVhbiB1cC4KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDgtTWFyay1kZWxldGVkLWludGVyZmFjZXMtYXMtYmVpbmctY2hhbmdlZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDgtTWFyay1kZWxldGVkLWludGVyZmFjZXMtYXMtYmVpbmctY2hhbmdlZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZGM1MTA1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvZmlsZXMvMDAwOC1NYXJrLWRlbGV0ZWQtaW50ZXJmYWNlcy1hcy1iZWluZy1jaGFuZ2VkLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gMGZjYzBmMjEwZjNhOTMxMGExOTYzZGU2NDBiMzg0Y2U4NjY0MTBmZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5hdGUgS2Fyc3RlbnMgPG5hdGUua2Fyc3RlbnNAZ2FybWluLmNvbT4KK0RhdGU6IFdlZCwgOSBBdWcgMjAxNyAwOToxNjo1OCAtMDUwMAorU3ViamVjdDogW1BBVENIIDA4LzExXSBNYXJrIGRlbGV0ZWQgaW50ZXJmYWNlcyBhcyBiZWluZyBjaGFuZ2VkCisKK05ldGxpbmsgbm90aWZpY2F0aW9uIGhhbmRsaW5nIGlnbm9yZXMgbWVzc2FnZXMgZm9yIGRlbGV0ZWQgbGlua3MsCitSVE1fREVMTElOSy4gSXQgZG9lcyBoYW5kbGUgUlRNX0dFVExJTksuIEFjY29yZGluZyB0byBsaWJubCBkb2N1LQorbWVudGF0aW9uIChodHRwOi8vd3d3LmluZnJhZGVhZC5vcmcvfnRnci9saWJubC9kb2Mvcm91dGUuaHRtbCkKK1JUTV9ERUxMSU5LIGNhbiBiZSBzZW50IGJ5IHRoZSBrZXJuZWwsIGJ1dCBSVE1fR0VUTElOSyBjYW5ub3QuCitUaGVyZSB3YXMgbGlrZWx5IGEgbWl4dXAgaW4gdGhlIG9yaWdpbmFsIGltcGxlbWVudGF0aW9uLCBzbyB0aGlzCitjaGFuZ2UgcmVwbGFjZXMgaGFuZGxpbmcgZm9yIFJUTV9HRVRMSU5LIHdpdGggUlRNX0RFTExJTksuCisKK1Rlc3RpbmcgYW5kIFZlcmlmaWNhdGlvbiBJbnN0cnVjdGlvbnM6CisgIDEuIFVzZSBpcC1saW5rIHRvIGFkZCBhbmQgcmVtb3ZlIGEgVkxBTiBpbnRlcmZhY2UgYW5kIHZlcmlmeQorICAgICB0aGF0IG1ETlNSZXNwb25kZXIgaGFuZGxlcyB0aGUgZGVsZXRlZCBsaW5rLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZHRzQGFwcGxlLmNvbV0KKworU2lnbmVkLW9mZi1ieTogTmF0ZSBLYXJzdGVucyA8bmF0ZS5rYXJzdGVuc0BnYXJtaW4uY29tPgorLS0tCisgbUROU1Bvc2l4L21ETlNQb3NpeC5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbUROU1Bvc2l4L21ETlNQb3NpeC5jIGIvbUROU1Bvc2l4L21ETlNQb3NpeC5jCitpbmRleCA3OThhYjEwLi5hOGE1N2RmIDEwMDY0NAorLS0tIGEvbUROU1Bvc2l4L21ETlNQb3NpeC5jCisrKysgYi9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKK0BAIC0xMTYzLDcgKzExNjMsNyBAQCBtRE5TbG9jYWwgdm9pZCAgICAgICAgICBQcm9jZXNzUm91dGluZ05vdGlmaWNhdGlvbihpbnQgc2QsIEdlbkxpbmtlZExpc3QgKmNoYW5nZQorICNlbmRpZgorIAorICAgICAgICAgLy8gUHJvY2VzcyB0aGUgTmV0TGluayBtZXNzYWdlCistICAgICAgICBpZiAocE5MTXNnLT5ubG1zZ190eXBlID09IFJUTV9HRVRMSU5LIHx8IHBOTE1zZy0+bmxtc2dfdHlwZSA9PSBSVE1fTkVXTElOSykKKysgICAgICAgIGlmIChwTkxNc2ctPm5sbXNnX3R5cGUgPT0gUlRNX0RFTExJTksgfHwgcE5MTXNnLT5ubG1zZ190eXBlID09IFJUTV9ORVdMSU5LKQorICAgICAgICAgICAgIEFkZEludGVyZmFjZUluZGV4VG9MaXN0KGNoYW5nZWRJbnRlcmZhY2VzLCAoKHN0cnVjdCBpZmluZm9tc2cqKSBOTE1TR19EQVRBKHBOTE1zZykpLT5pZmlfaW5kZXgpOworICAgICAgICAgZWxzZSBpZiAocE5MTXNnLT5ubG1zZ190eXBlID09IFJUTV9ERUxBRERSIHx8IHBOTE1zZy0+bmxtc2dfdHlwZSA9PSBSVE1fTkVXQUREUikKKyAgICAgICAgICAgICBBZGRJbnRlcmZhY2VJbmRleFRvTGlzdChjaGFuZ2VkSW50ZXJmYWNlcywgKChzdHJ1Y3QgaWZhZGRybXNnKikgTkxNU0dfREFUQShwTkxNc2cpKS0+aWZhX2luZGV4KTsKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMDktRml4LXBvc3NpYmxlLU5VTEwtZGVyZWZlcmVuY2UucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDA5LUZpeC1wb3NzaWJsZS1OVUxMLWRlcmVmZXJlbmNlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2MmQ2OTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDA5LUZpeC1wb3NzaWJsZS1OVUxMLWRlcmVmZXJlbmNlLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gMzhjZmYxOTc4MWY4MTU4NjkyNmIwMmYwZmQxY2IzNmMwNDAzOTVlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5hdGUgS2Fyc3RlbnMgPG5hdGUua2Fyc3RlbnNAZ2FybWluLmNvbT4KK0RhdGU6IFRodSwgMTAgQXVnIDIwMTcgMDg6MjE6NTMgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAwOS8xMV0gRml4IHBvc3NpYmxlIE5VTEwgZGVyZWZlcmVuY2UKKworRml4ZXMgYSBwb3NzaWJsZSBOVUxMIGRlcmVmZXJlbmNlIGlmIG1lbW9yeSBmb3IKK3RoZSBQb3NpeE5ldHdvcmtJbnRlcmZhY2UgY291bGQgbm90IGJlIGFsbG9jYXRlZC4KK090aGVyIGxvZ2ljIHNlZW1zIHRvIHByZXZlbnQgZGVyZWZlcmVuY2luZyB0aGlzCit2YXJpYWJsZSBpZiBOVUxMLCBidXQgdGhpcyBpbnN0YW5jZSBzZWVtcyB0byBoYXZlCitiZWVuIG92ZXJsb29rZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtkdHNAYXBwbGUuY29tXQorCitTaWduZWQtb2ZmLWJ5OiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CistLS0KKyBtRE5TUG9zaXgvbUROU1Bvc2l4LmMgfCAxMSArKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmMgYi9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKK2luZGV4IGE4YTU3ZGYuLjMyNDNlZDQgMTAwNjQ0CistLS0gYS9tRE5TUG9zaXgvbUROU1Bvc2l4LmMKKysrKyBiL21ETlNQb3NpeC9tRE5TUG9zaXguYworQEAgLTk1MSwxMiArOTUxLDE1IEBAIG1ETlNsb2NhbCBpbnQgU2V0dXBPbmVJbnRlcmZhY2UobUROUyAqY29uc3QgbSwgc3RydWN0IGlmaV9pbmZvICpjb25zdCBpZmkpCisgCisgICAgIC8vIElmIGludGVyZmFjZSBpcyBhIGRpcmVjdCBsaW5rLCBhZGRyZXNzIHJlY29yZCB3aWxsIGJlIG1hcmtlZCBhcyBrRE5TUmVjb3JkVHlwZUtub3duVW5pcXVlCisgICAgIC8vIGFuZCBza2lwIHRoZSBwcm9iZSBwaGFzZSBvZiB0aGUgcHJvYmUvYW5ub3VuY2UgcGFja2V0IHNlcXVlbmNlLgorLSAgICBpbnRmLT5jb3JlSW50Zi5EaXJlY3RMaW5rID0gbUROU2ZhbHNlOworKyAgICBpZiAoZXJyID09IDApCisrICAgIHsKKysgICAgICAgIGludGYtPmNvcmVJbnRmLkRpcmVjdExpbmsgPSBtRE5TZmFsc2U7CisgI2lmZGVmIERJUkVDVExJTktfSU5URVJGQUNFX05BTUUKKy0gICAgaWYgKHN0cmNtcChpbnRmTmFtZSwgU1RSSU5HSUZZKERJUkVDVExJTktfSU5URVJGQUNFX05BTUUpKSA9PSAwKQorLSAgICAgICAgaW50Zi0+Y29yZUludGYuRGlyZWN0TGluayA9IG1ETlN0cnVlOworKyAgICAgICAgaWYgKHN0cmNtcChpbnRmTmFtZSwgU1RSSU5HSUZZKERJUkVDVExJTktfSU5URVJGQUNFX05BTUUpKSA9PSAwKQorKyAgICAgICAgICAgIGludGYtPmNvcmVJbnRmLkRpcmVjdExpbmsgPSBtRE5TdHJ1ZTsKKyAjZW5kaWYKKy0gICAgaW50Zi0+Y29yZUludGYuU3VwcG9ydHNVbmljYXN0TUROU1Jlc3BvbnNlID0gbUROU3RydWU7CisrICAgICAgICBpbnRmLT5jb3JlSW50Zi5TdXBwb3J0c1VuaWNhc3RNRE5TUmVzcG9uc2UgPSBtRE5TdHJ1ZTsKKysgICAgfQorIAorICAgICAvLyBUaGUgaW50ZXJmYWNlIGlzIGFsbCByZWFkeSB0byBnbywgbGV0J3MgcmVnaXN0ZXIgaXQgd2l0aCB0aGUgbUROUyBjb3JlLgorICAgICBpZiAoZXJyID09IDApCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDEwLUhhbmRsZS1lcnJvcnMtZnJvbS1zb2NrZXQtY2FsbHMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDEwLUhhbmRsZS1lcnJvcnMtZnJvbS1zb2NrZXQtY2FsbHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjliMDE1NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMTAtSGFuZGxlLWVycm9ycy1mcm9tLXNvY2tldC1jYWxscy5wYXRjaApAQCAtMCwwICsxLDYyIEBACitGcm9tIDM4MmIzYjkyNGU0M2FiZDFiZGM1NzkyOTE4MTYxZDA5MjI2NjY2OTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBOYXRlIEthcnN0ZW5zIDxuYXRlLmthcnN0ZW5zQGdhcm1pbi5jb20+CitEYXRlOiBUaHUsIDEwIEF1ZyAyMDE3IDA4OjI3OjMyIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0ggMTAvMTFdIEhhbmRsZSBlcnJvcnMgZnJvbSBzb2NrZXQgY2FsbHMKKworQWRkcyBoYW5kbGluZyBmb3Igc29ja2V0KCkgb3IgcmVhZCgpIHJldHVybmluZyBhCituZWdhdGl2ZSB2YWx1ZSAoaW5kaWNhdGluZyBhbiBlcnJvciBoYXMgb2NjdXJyZWQpLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZHRzQGFwcGxlLmNvbV0KKworU2lnbmVkLW9mZi1ieTogTmF0ZSBLYXJzdGVucyA8bmF0ZS5rYXJzdGVuc0BnYXJtaW4uY29tPgorLS0tCisgbUROU1Bvc2l4L21ETlNQb3NpeC5jIHwgMTIgKysrKysrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21ETlNQb3NpeC9tRE5TUG9zaXguYyBiL21ETlNQb3NpeC9tRE5TUG9zaXguYworaW5kZXggMzI0M2VkNC4uODRhZjI2YiAxMDA2NDQKKy0tLSBhL21ETlNQb3NpeC9tRE5TUG9zaXguYworKysrIGIvbUROU1Bvc2l4L21ETlNQb3NpeC5jCitAQCAtMTEyOSw3ICsxMTI5LDcgQEAgbUROU2xvY2FsIHZvaWQgICAgICAgICAgUHJvY2Vzc1JvdXRpbmdOb3RpZmljYXRpb24oaW50IHNkLCBHZW5MaW5rZWRMaXN0ICpjaGFuZ2UKKyAvLyBSZWFkIHRocm91Z2ggdGhlIG1lc3NhZ2VzIG9uIHNkIGFuZCBpZiBhbnkgaW5kaWNhdGUgdGhhdCBhbnkgaW50ZXJmYWNlIHJlY29yZHMgc2hvdWxkCisgLy8gYmUgdG9ybiBkb3duIGFuZCByZWJ1aWx0LCByZXR1cm4gYWZmZWN0ZWQgaW5kaWNlcyBhcyBhIGJpdG1hc2suIE90aGVyd2lzZSByZXR1cm4gMC4KKyB7CistICAgIHNzaXplX3QgcmVhZENvdW50OworKyAgICBzc2l6ZV90IHJlYWRWYWwsIHJlYWRDb3VudDsKKyAgICAgY2hhciBidWZmWzQwOTZdOworICAgICBzdHJ1Y3Qgbmxtc2doZHIgICAgICAgICAqcE5MTXNnID0gKHN0cnVjdCBubG1zZ2hkciopIGJ1ZmY7CisgCitAQCAtMTEzOCw3ICsxMTM4LDEwIEBAIG1ETlNsb2NhbCB2b2lkICAgICAgICAgIFByb2Nlc3NSb3V0aW5nTm90aWZpY2F0aW9uKGludCBzZCwgR2VuTGlua2VkTGlzdCAqY2hhbmdlCisgICAgIC8vIGVub3VnaCB0byBob2xkIGFsbCBwZW5kaW5nIGRhdGEgYW5kIHNvIGF2b2lkIG1lc3NhZ2UgZnJhZ21lbnRhdGlvbi4KKyAgICAgLy8gKE5vdGUgdGhhdCBGSU9OUkVBRCBpcyBub3Qgc3VwcG9ydGVkIG9uIEFGX05FVExJTksuKQorIAorLSAgICByZWFkQ291bnQgPSByZWFkKHNkLCBidWZmLCBzaXplb2YgYnVmZik7CisrICAgIHJlYWRWYWwgPSByZWFkKHNkLCBidWZmLCBzaXplb2YgYnVmZik7CisrICAgIGlmIChyZWFkVmFsIDwgMCkgcmV0dXJuOworKyAgICByZWFkQ291bnQgPSByZWFkVmFsOworKworICAgICB3aGlsZSAoMSkKKyAgICAgeworICAgICAgICAgLy8gTWFrZSBzdXJlIHdlJ3ZlIGdvdCBhbiBlbnRpcmUgbmxtc2doZHIgaW4gdGhlIGJ1ZmZlciwgYW5kIHBheWxvYWQsIHRvby4KK0BAIC0xMTU0LDcgKzExNTcsOSBAQCBtRE5TbG9jYWwgdm9pZCAgICAgICAgICBQcm9jZXNzUm91dGluZ05vdGlmaWNhdGlvbihpbnQgc2QsIEdlbkxpbmtlZExpc3QgKmNoYW5nZQorICAgICAgICAgICAgICAgICBwTkxNc2cgPSAoc3RydWN0IG5sbXNnaGRyKikgYnVmZjsKKyAKKyAgICAgICAgICAgICAgICAgLy8gcmVhZCBtb3JlIGRhdGEKKy0gICAgICAgICAgICAgICAgcmVhZENvdW50ICs9IHJlYWQoc2QsIGJ1ZmYgKyByZWFkQ291bnQsIHNpemVvZiBidWZmIC0gcmVhZENvdW50KTsKKysgICAgICAgICAgICAgICAgcmVhZFZhbCA9IHJlYWQoc2QsIGJ1ZmYgKyByZWFkQ291bnQsIHNpemVvZiBidWZmIC0gcmVhZENvdW50KTsKKysgICAgICAgICAgICAgICAgaWYgKHJlYWRWYWwgPCAwKSByZXR1cm47CisrICAgICAgICAgICAgICAgIHJlYWRDb3VudCArPSByZWFkVmFsOworICAgICAgICAgICAgICAgICBjb250aW51ZTsgICAgICAgICAgICAgICAgICAgLy8gc3BpbiBhcm91bmQgYW5kIHJldmFsaWRhdGUgd2l0aCBuZXcgcmVhZENvdW50CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIGVsc2UKK0BAIC0xNDI5LDYgKzE0MzQsNyBAQCBtRE5TbG9jYWwgbUROU0Jvb2wgbUROU1BsYXRmb3JtSW5pdF9DYW5SZWNlaXZlVW5pY2FzdCh2b2lkKQorICAgICBpbnQgZXJyOworICAgICBpbnQgcyA9IHNvY2tldChBRl9JTkVULCBTT0NLX0RHUkFNLCBJUFBST1RPX1VEUCk7CisgICAgIHN0cnVjdCBzb2NrYWRkcl9pbiBzNTM1MzsKKysgICAgaWYgKHMgPCAwKSByZXR1cm4gbUROU2ZhbHNlOworICAgICBzNTM1My5zaW5fZmFtaWx5ICAgICAgPSBBRl9JTkVUOworICAgICBzNTM1My5zaW5fcG9ydCAgICAgICAgPSBNdWx0aWNhc3RETlNQb3J0Lk5vdEFuSW50ZWdlcjsKKyAgICAgczUzNTMuc2luX2FkZHIuc19hZGRyID0gMDsKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL2ZpbGVzLzAwMTEtQ2hhbmdlLWEtZHluYW1pYy1hbGxvY2F0aW9uLXRvLWZpbGUtc2NvcGUtdmFyaWFibGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDExLUNoYW5nZS1hLWR5bmFtaWMtYWxsb2NhdGlvbi10by1maWxlLXNjb3BlLXZhcmlhYmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NGZiMzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9maWxlcy8wMDExLUNoYW5nZS1hLWR5bmFtaWMtYWxsb2NhdGlvbi10by1maWxlLXNjb3BlLXZhcmlhYmxlLnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gMTlkZTI2ZGI2OTQwOGYwMjI0MWUyMzJiMzkyMjQ1ODlhMGY2MzBkZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5hdGUgS2Fyc3RlbnMgPG5hdGUua2Fyc3RlbnNAZ2FybWluLmNvbT4KK0RhdGU6IFRodSwgMTAgQXVnIDIwMTcgMDg6NDY6MDMgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSCAxMS8xMV0gQ2hhbmdlIGEgZHluYW1pYyBhbGxvY2F0aW9uIHRvIGZpbGUtc2NvcGUgdmFyaWFibGUKKworQ2hhbmdlcyBhIHZhcmlhYmxlIGZyb20gYmVpbmcgZHluYW1pY2FsbHktYWxsb2NhdGVkIHRvIGJlaW5nCitzdGF0aWNhbGx5LWFsbG9jYXRlZCBhdCB0aGUgZmlsZSBzY29wZS4gQWRkcmVzc2VzIGEgQ292ZXJpdHkKK2lzc3VlIHdoZXJlIGl0IGFwcGVhcmVkIHRoYXQgdGhlIG1lbW9yeSB3YXMgYmVpbmcgbGVha2VkLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbZHRzQGFwcGxlLmNvbV0KKworU2lnbmVkLW9mZi1ieTogTmF0ZSBLYXJzdGVucyA8bmF0ZS5rYXJzdGVuc0BnYXJtaW4uY29tPgorLS0tCisgbUROU1Bvc2l4L21ETlNQb3NpeC5jIHwgMTIgKysrKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21ETlNQb3NpeC9tRE5TUG9zaXguYyBiL21ETlNQb3NpeC9tRE5TUG9zaXguYworaW5kZXggODRhZjI2Yi4uYjc3OTVlZCAxMDA2NDQKKy0tLSBhL21ETlNQb3NpeC9tRE5TUG9zaXguYworKysrIGIvbUROU1Bvc2l4L21ETlNQb3NpeC5jCitAQCAtOTEsNiArOTEsNyBAQCBzdGF0aWMgc2lnc2V0X3QgZ0V2ZW50U2lnbmFsU2V0OyAgICAgICAgICAgICAgICAvLyBTaWduYWxzIHdoaWNoIGV2ZW50IGxvb3AgbGlzdAorIHN0YXRpYyBzaWdzZXRfdCBnRXZlbnRTaWduYWxzOyAgICAgICAgICAgICAgICAgIC8vIFNpZ25hbHMgd2hpY2ggd2VyZSByZWNlaXZlZCB3aGlsZSBpbnNpZGUgbG9vcAorIAorIHN0YXRpYyBQb3NpeE5ldHdvcmtJbnRlcmZhY2UgKmdSZWNlbnRJbnRlcmZhY2VzOworK3N0YXRpYyBJZkNoYW5nZVJlYyBnQ2hnUmVjOworIAorIC8vICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorIC8vIEdsb2JhbHMgKGZvciBkZWJ1Z2dpbmcpCitAQCAtMTQxMiwxNiArMTQxMywxMSBAQCBjbGVhbnVwOgorIG1ETlNsb2NhbCBtU3RhdHVzIFdhdGNoRm9ySW50ZXJmYWNlQ2hhbmdlKG1ETlMgKmNvbnN0IG0pCisgeworICAgICBtU3RhdHVzIGVycjsKKy0gICAgSWZDaGFuZ2VSZWMgKnBDaGdSZWM7CisgCistICAgIHBDaGdSZWMgPSAoSWZDaGFuZ2VSZWMqKSBtRE5TUGxhdGZvcm1NZW1BbGxvY2F0ZShzaXplb2YgKnBDaGdSZWMpOworLSAgICBpZiAocENoZ1JlYyA9PSBOVUxMKQorLSAgICAgICAgcmV0dXJuIG1TdGF0dXNfTm9NZW1vcnlFcnI7CistCistICAgIHBDaGdSZWMtPm1ETlMgPSBtOworLSAgICBlcnIgPSBPcGVuSWZOb3RpZnlTb2NrZXQoJnBDaGdSZWMtPk5vdGlmeVNEKTsKKysgICAgZ0NoZ1JlYy5tRE5TID0gbTsKKysgICAgZXJyID0gT3BlbklmTm90aWZ5U29ja2V0KCZnQ2hnUmVjLk5vdGlmeVNEKTsKKyAgICAgaWYgKGVyciA9PSAwKQorLSAgICAgICAgZXJyID0gbUROU1Bvc2l4QWRkRkRUb0V2ZW50TG9vcChwQ2hnUmVjLT5Ob3RpZnlTRCwgSW50ZXJmYWNlQ2hhbmdlQ2FsbGJhY2ssIHBDaGdSZWMpOworKyAgICAgICAgZXJyID0gbUROU1Bvc2l4QWRkRkRUb0V2ZW50TG9vcChnQ2hnUmVjLk5vdGlmeVNELCBJbnRlcmZhY2VDaGFuZ2VDYWxsYmFjaywgJmdDaGdSZWMpOworIAorICAgICByZXR1cm4gZXJyOworIH0KKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL21kbnNfODc4LjI2MC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvbWRuc184NzguMjYwLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxNzg5NDUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL21kbnMvbWRuc184NzguMjYwLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5MCArMCwwIEBACi1TVU1NQVJZID0gIlB1Ymxpc2hlcyAmIGJyb3dzZXMgYXZhaWxhYmxlIHNlcnZpY2VzIG9uIGEgbGluayBhY2NvcmRpbmcgdG8gdGhlIFplcm9jb25mIC8gQm9uam91ciBwcm90b2NvbCIKLURFU0NSSVBUSU9OID0gIkJvbmpvdXIsIGFsc28ga25vd24gYXMgemVyby1jb25maWd1cmF0aW9uIG5ldHdvcmtpbmcsIGVuYWJsZXMgYXV0b21hdGljIGRpc2NvdmVyeSBvZiBjb21wdXRlcnMsIGRldmljZXMsIGFuZCBzZXJ2aWNlcyBvbiBJUCBuZXR3b3Jrcy4iCi1IT01FUEFHRSA9ICJodHRwOi8vZGV2ZWxvcGVyLmFwcGxlLmNvbS9uZXR3b3JraW5nL2JvbmpvdXIvIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vTElDRU5TRTttZDU9MzFjNTAzNzE5MjFlMGZiNzMxMDAzYmJjNjY1ZjI5YmYiCi0KLUNPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAnbnVsbCcKLQotUlBST1ZJREVTXyR7UE59ICs9ICJsaWJkbnNfc2Quc28iCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9vcGVuc291cmNlLmFwcGxlLmNvbS90YXJiYWxscy9tRE5TUmVzcG9uZGVyL21ETlNSZXNwb25kZXItJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2J1aWxkLnBhdGNoO3BhdGNoZGlyPS4uIFwKLSAgICAgICAgICAgZmlsZTovL21kbnMuc2VydmljZSBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhZWI5MmQ4MzhhNGFhMjQwMmVmMTI4ZWQ1MDE0ODRlYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzY2M3MTU4MmU4ZWVlNDY5YzJkZThlY2FlMWQ3NjllN2YzMmIzNDY4ZGZiN2YyY2E3N2YxZGVlMWYzMGE3ZDFlIgotCi1QQVJBTExFTF9NQUtFID0gIiIKLQotUyA9ICIke1dPUktESVJ9L21ETlNSZXNwb25kZXItJHtQVn0vbUROU1Bvc2l4IgotCi1FWFRSQV9PRU1BS0UgKz0gIm9zPWxpbnV4IERFQlVHPTAgJ0NDPSR7Q0N9JyAnTEQ9JHtDQ0xEfSAke0xERkxBR1N9JyIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWRvX2luc3RhbGwgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgYnVpbGQvcHJvZC9tZG5zZCAke0R9JHtzYmluZGlyfQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0gICAgY3AgYnVpbGQvcHJvZC9saWJkbnNfc2Quc28gJHtEfSR7bGliZGlyfS9saWJkbnNfc2Quc28uMQotICAgIGNobW9kIDA2NDQgJHtEfSR7bGliZGlyfS9saWJkbnNfc2Quc28uMQotICAgIGxuIC1zIGxpYmRuc19zZC5zby4xICR7RH0ke2xpYmRpcn0vbGliZG5zX3NkLnNvCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNjQ0IC4uL21ETlNTaGFyZWQvZG5zX3NkLmggJHtEfSR7aW5jbHVkZWRpcn0KLQotICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44Ci0gICAgaW5zdGFsbCAtbSAwNjQ0IC4uL21ETlNTaGFyZWQvbUROU1Jlc3BvbmRlci44ICR7RH0ke21hbmRpcn0vbWFuOC9tZG5zZC44Ci0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgLi4vQ2xpZW50cy9idWlsZC9kbnMtc2QgJHtEfSR7YmluZGlyfQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0gICAgb2VfbGliaW5zdGFsbCAtQyBidWlsZC9wcm9kIC1zbyBsaWJuc3NfbWRucy0wLjIgJHtEfSR7bGliZGlyfQotICAgIGxuIC1zIGxpYm5zc19tZG5zLTAuMi5zbyAke0R9JHtsaWJkaXJ9L2xpYm5zc19tZG5zLnNvLjIKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLSAgICBpbnN0YWxsIC1tIDA2NDQgbnNzX21kbnMuY29uZiAke0R9JHtzeXNjb25mZGlyfQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjUKLSAgICBpbnN0YWxsIC1tIDA2NDQgbnNzX21kbnMuY29uZi41ICR7RH0ke21hbmRpcn0vbWFuNQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjgKLSAgICBpbnN0YWxsIC1tIDA2NDQgbGlibnNzX21kbnMuOCAke0R9JHttYW5kaXJ9L21hbjgKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbWRucy5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotfQotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotICAgIHNlZCAtZSAnL15ob3N0czovcy9ccypcPG1kbnNcPi8vJyBcCi0gICAgICAgIC1lICdzL1woXmhvc3RzOi4qXClcKFw8ZmlsZXNcPlwpXCguKlwpXChcPGRuc1w+XClcKC4qXCkvXDFcMiBtZG5zXDNcNFw1LycgXAotICAgICAgICAtaSAkRC9ldGMvbnNzd2l0Y2guY29uZgotfQotCi1wa2dfcHJlcm1fJHtQTn0gKCkgewotICAgIHNlZCAtZSAnL15ob3N0czovcy9ccypcPG1kbnNcPi8vJyBcCi0gICAgICAgIC1lICcvXmhvc3RzOi9zL1xzKm1kbnMvLycgXAotICAgICAgICAtaSAkRC9ldGMvbnNzd2l0Y2guY29uZgotfQotCi1pbmhlcml0IHN5c3RlbWQKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm1kbnMuc2VydmljZSIKLQotRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbWRucy5zZXJ2aWNlIgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9saWJkbnNfc2Quc28uMSBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2Rucy1zZCBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm5zc19tZG5zLTAuMi5zbyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9uc3NfbWRucy5jb25mIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9saWJkbnNfc2Quc28gXAotICAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2Ruc19zZC5oICIKLQotRklMRVNfJHtQTn0tbWFuICs9ICIke21hbmRpcn0vbWFuOC9tZG5zZC44IFwKLSAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjUvbnNzX21kbnMuY29uZi41IFwKLSAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjgvbGlibnNzX21kbnMuOCIKLQotUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tZGV2ICR7UE59LW1hbiAke1BOfS1kYmciCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9tZG5zXzg3OC4yNzAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9tZG5zL21kbnNfODc4LjI3MC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmOGRjOTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbWRucy9tZG5zXzg3OC4yNzAuMi5iYgpAQCAtMCwwICsxLDEwMSBAQAorU1VNTUFSWSA9ICJQdWJsaXNoZXMgJiBicm93c2VzIGF2YWlsYWJsZSBzZXJ2aWNlcyBvbiBhIGxpbmsgYWNjb3JkaW5nIHRvIHRoZSBaZXJvY29uZiAvIEJvbmpvdXIgcHJvdG9jb2wiCitERVNDUklQVElPTiA9ICJCb25qb3VyLCBhbHNvIGtub3duIGFzIHplcm8tY29uZmlndXJhdGlvbiBuZXR3b3JraW5nLCBlbmFibGVzIGF1dG9tYXRpYyBkaXNjb3Zlcnkgb2YgY29tcHV0ZXJzLCBkZXZpY2VzLCBhbmQgc2VydmljZXMgb24gSVAgbmV0d29ya3MuIgorSE9NRVBBR0UgPSAiaHR0cDovL2RldmVsb3Blci5hcHBsZS5jb20vbmV0d29ya2luZy9ib25qb3VyLyIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PTMxYzUwMzcxOTIxZTBmYjczMTAwM2JiYzY2NWYyOWJmIgorCitDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsID0gJ251bGwnCisKK1JQUk9WSURFU18ke1BOfSArPSAibGliZG5zX3NkLnNvIgorCitTUkNfVVJJID0gImh0dHBzOi8vb3BlbnNvdXJjZS5hcHBsZS5jb20vdGFyYmFsbHMvbUROU1Jlc3BvbmRlci9tRE5TUmVzcG9uZGVyLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9idWlsZC5wYXRjaDtwYXRjaGRpcj0uLiBcCisgICAgICAgICAgIGZpbGU6Ly9tZG5zLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1DcmVhdGUtc3Vicm91dGluZS1mb3ItY2xlYW5pbmctcmVjZW50LWludGVyZmFjZXMucGF0Y2g7cGF0Y2hkaXI9Li4gXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1DcmVhdGUtc3Vicm91dGluZS1mb3ItdGVhcmluZy1kb3duLWFuLWludGVyZmFjZS5wYXRjaDtwYXRjaGRpcj0uLiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLVRyYWNrLWludGVyZmFjZS1zb2NrZXQtZmFtaWx5LnBhdGNoO3BhdGNoZGlyPS4uIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtVXNlLWxpc3QtZm9yLWNoYW5nZWQtaW50ZXJmYWNlcy5wYXRjaDtwYXRjaGRpcj0uLiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LUhhbmRsZS1ub2lzeS1uZXRsaW5rLXNvY2tldHMucGF0Y2g7cGF0Y2hkaXI9Li4gXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1SZW1vdmUtdW5uZWVkZWQtZnVuY3Rpb24ucGF0Y2g7cGF0Y2hkaXI9Li4gXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1JbmRpY2F0ZS1sb29wYmFjay1pbnRlcmZhY2UtdG8tbUROUy1jb3JlLnBhdGNoO3BhdGNoZGlyPS4uIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtTWFyay1kZWxldGVkLWludGVyZmFjZXMtYXMtYmVpbmctY2hhbmdlZC5wYXRjaDtwYXRjaGRpcj0uLiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LUZpeC1wb3NzaWJsZS1OVUxMLWRlcmVmZXJlbmNlLnBhdGNoO3BhdGNoZGlyPS4uIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtSGFuZGxlLWVycm9ycy1mcm9tLXNvY2tldC1jYWxscy5wYXRjaDtwYXRjaGRpcj0uLiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLUNoYW5nZS1hLWR5bmFtaWMtYWxsb2NhdGlvbi10by1maWxlLXNjb3BlLXZhcmlhYmxlLnBhdGNoO3BhdGNoZGlyPS4uIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjRlMTM5YThlMTEzMzM0OTAwNmIwNDM2MjkxYzllMjliIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJjZWYwZWU5OTAwNTA0YzUyNzdmYjgxZGUwYTI4ZTZjMDgzNWZlNDgyZWJlY2YxMDY3YzY4NjRmNWM0ZWRhNzQiCisKK1BBUkFMTEVMX01BS0UgPSAiIgorCitTID0gIiR7V09SS0RJUn0vbUROU1Jlc3BvbmRlci0ke1BWfS9tRE5TUG9zaXgiCisKK0VYVFJBX09FTUFLRSArPSAib3M9bGludXggREVCVUc9MCAnQ0M9JHtDQ30nICdMRD0ke0NDTER9ICR7TERGTEFHU30nIgorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZG9faW5zdGFsbCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtzYmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSBidWlsZC9wcm9kL21kbnNkICR7RH0ke3NiaW5kaXJ9CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKyAgICBjcCBidWlsZC9wcm9kL2xpYmRuc19zZC5zbyAke0R9JHtsaWJkaXJ9L2xpYmRuc19zZC5zby4xCisgICAgY2htb2QgMDY0NCAke0R9JHtsaWJkaXJ9L2xpYmRuc19zZC5zby4xCisgICAgbG4gLXMgbGliZG5zX3NkLnNvLjEgJHtEfSR7bGliZGlyfS9saWJkbnNfc2Quc28KKworICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgLi4vbUROU1NoYXJlZC9kbnNfc2QuaCAke0R9JHtpbmNsdWRlZGlyfQorCisgICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjgKKyAgICBpbnN0YWxsIC1tIDA2NDQgLi4vbUROU1NoYXJlZC9tRE5TUmVzcG9uZGVyLjggJHtEfSR7bWFuZGlyfS9tYW44L21kbnNkLjgKKworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAuLi9DbGllbnRzL2J1aWxkL2Rucy1zZCAke0R9JHtiaW5kaXJ9CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKyAgICBvZV9saWJpbnN0YWxsIC1DIGJ1aWxkL3Byb2QgLXNvIGxpYm5zc19tZG5zLTAuMiAke0R9JHtsaWJkaXJ9CisgICAgbG4gLXMgbGlibnNzX21kbnMtMC4yLnNvICR7RH0ke2xpYmRpcn0vbGlibnNzX21kbnMuc28uMgorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorICAgIGluc3RhbGwgLW0gMDY0NCBuc3NfbWRucy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuNQorICAgIGluc3RhbGwgLW0gMDY0NCBuc3NfbWRucy5jb25mLjUgJHtEfSR7bWFuZGlyfS9tYW41CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuOAorICAgIGluc3RhbGwgLW0gMDY0NCBsaWJuc3NfbWRucy44ICR7RH0ke21hbmRpcn0vbWFuOAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9tZG5zLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCit9CisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisgICAgc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bWRuc1w+Ly8nIFwKKyAgICAgICAgLWUgJ3MvXCheaG9zdHM6LipcKVwoXDxmaWxlc1w+XClcKC4qXClcKFw8ZG5zXD5cKVwoLipcKS9cMVwyIG1kbnNcM1w0XDUvJyBcCisgICAgICAgIC1pICREL2V0Yy9uc3N3aXRjaC5jb25mCit9CisKK3BrZ19wcmVybV8ke1BOfSAoKSB7CisgICAgc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bWRuc1w+Ly8nIFwKKyAgICAgICAgLWUgJy9eaG9zdHM6L3MvXHMqbWRucy8vJyBcCisgICAgICAgIC1pICREL2V0Yy9uc3N3aXRjaC5jb25mCit9CisKK2luaGVyaXQgc3lzdGVtZAorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibWRucy5zZXJ2aWNlIgorCitGSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tZG5zLnNlcnZpY2UiCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2xpYmRuc19zZC5zby4xIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vZG5zLXNkIFwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlibnNzX21kbnMtMC4yLnNvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L25zc19tZG5zLmNvbmYiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYmRuc19zZC5zbyBcCisgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vZG5zX3NkLmggIgorCitGSUxFU18ke1BOfS1tYW4gKz0gIiR7bWFuZGlyfS9tYW44L21kbnNkLjggXAorICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuNS9uc3NfbWRucy5jb25mLjUgXAorICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuOC9saWJuc3NfbWRucy44IgorCitQQUNLQUdFUyA9ICIke1BOfSAke1BOfS1kZXYgJHtQTn0tbWFuICR7UE59LWRiZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcC8wMDAxLUFkZC1wa2ctY29uZmlnLXN1cHBvcnQtZm9yLWJ1aWxkaW5nLWFwcGxpY2F0aW9ucy1hbmQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMS1BZGQtcGtnLWNvbmZpZy1zdXBwb3J0LWZvci1idWlsZGluZy1hcHBsaWNhdGlvbnMtYW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjYjk1ODgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXAvMDAwMS1BZGQtcGtnLWNvbmZpZy1zdXBwb3J0LWZvci1idWlsZGluZy1hcHBsaWNhdGlvbnMtYW5kLnBhdGNoCkBAIC0wLDAgKzEsMTcwIEBACitGcm9tIGFlYThjMmYwYmY4MDA0YzhkYThjYTlhY2IwNGFiMDc3OThjZDgwNjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIdWdoIE1jTWFzdGVyIDxodWdoLm1jbWFzdGVyQG91dGxvb2suY29tPgorRGF0ZTogV2VkLCAzIEFwciAyMDE5IDIxOjM2OjAzICsxMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBwa2ctY29uZmlnIHN1cHBvcnQgZm9yIGJ1aWxkaW5nIGFwcGxpY2F0aW9ucyBhbmQKKyBzdWItYWdlbnRzCisKK1RoZSBuZXRzbm1wIHBhY2thZ2Ugc2hvdWxkIGJlIHVzZWQgd2hlbiBidWlsZGluZyBOZXQtU05NUCBhcHBsaWNhdGlvbnMuCitUaGUgbmV0c25tcC1hZ2VudCBwYWNrYWdlIHNob3VsZCBiZSB1c2VkIHdoZW4gYnVpbGRpbmcgTmV0LVNOTVAgc3ViYWdlbnRzLgorCitTaWduZWQtb2ZmLWJ5OiBIdWdoIE1jTWFzdGVyIDxodWdoLm1jbWFzdGVyQG91dGxvb2suY29tPgorWyBidmFuYXNzY2hlOiBlZGl0ZWQgbWFrZWZpbGUgY29kZSBhbmQgLnBjIGZpbGVzOyBhZGRlZCAuL2NvbmZpZ3VyZSBjaGFuZ2VzIF0KKworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wL25ldC1zbm1wL3BhdGNoZXMvX2Rpc2N1c3MvdGhyZWFkL2EwZDY2ZTkxZGQvZjk0MC9hdHRhY2htZW50LzAwMDEtQWRkLXBrZy1jb25maWctc3VwcG9ydC1mb3ItYnVpbGRpbmctYXBwbGljYXRpb25zLWFuZC5wYXRjaAorCistLS0KKyBNYWtlZmlsZS5pbiAgICAgICAgIHwgIDIgKysKKyBNYWtlZmlsZS5ydWxlcyAgICAgIHwgMzAgKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCisgY29uZmlndXJlICAgICAgICAgICB8ICA0ICsrKysKKyBjb25maWd1cmUuYWMgICAgICAgIHwgIDEgKworIG5ldHNubXAtYWdlbnQucGMuaW4gfCAxMiArKysrKysrKysrKysKKyBuZXRzbm1wLnBjLmluICAgICAgIHwgMTIgKysrKysrKysrKysrCisgNiBmaWxlcyBjaGFuZ2VkLCA1NyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBuZXRzbm1wLWFnZW50LnBjLmluCisgY3JlYXRlIG1vZGUgMTAwNjQ0IG5ldHNubXAucGMuaW4KKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IDlkYmRkZTEzNTNiMS4uZWM5NzI2MzZjMjc5IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtMzUsNiArMzUsNyBAQCBJTlNUQUxMQlVJTFRIRUFERVJTPWluY2x1ZGUvbmV0LXNubXAvbmV0LXNubXAtY29uZmlnLmgKKyBJTlNUQUxMQlVJTFRJTkNMVURFSEVBREVSUz1ARkVBVFVSRUhFQURFUlNACisgSU5TVEFMTEJJTlNDUklQVFM9bmV0LXNubXAtY29uZmlnIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyCisgSU5TVEFMTFVDREhFQURFUlM9dWNkLXNubXAtY29uZmlnLmggdmVyc2lvbi5oIG1pYl9tb2R1bGVfY29uZmlnLmgKKytJTlNUQUxMX1BLR0NPTkZJRz1uZXRzbm1wLnBjIG5ldHNubXAtYWdlbnQucGMKKyAKKyAjCisgIyBvdGhlciBpbnN0YWxsIHJ1bGVzLgorQEAgLTI3NSw2ICsyNzYsNyBAQCBjb25maWdjbGVhbjogbWFrZWZpbGVjbGVhbgorIAkJbGlidG9vbCBpbmNsdWRlL25ldC1zbm1wL25ldC1zbm1wLWNvbmZpZy5oIFwKKyAJCW5ldC1zbm1wLWNvbmZpZyBuZXQtc25tcC1jb25maWcteCBjb25maWd1cmUtc3VtbWFyeSBcCisgCQluZXQtc25tcC1jcmVhdGUtdjMtdXNlciBuZXQtc25tcC1jcmVhdGUtdjMtdXNlci14CisrCXJtIC1mICoucGMKKyAJcm0gLWYgbWlicy8uaW5kZXgKKyAJcm0gLWYgaW5jbHVkZS9uZXQtc25tcC9hZ2VudC9taWJfbW9kdWxlX2NvbmZpZy5oCQlcCisgCQlpbmNsdWRlL25ldC1zbm1wL2FnZW50L2FnZW50X21vZHVsZV9jb25maWcuaAkJXAorZGlmZiAtLWdpdCBhL01ha2VmaWxlLnJ1bGVzIGIvTWFrZWZpbGUucnVsZXMKK2luZGV4IDllOWU5MDA5ZTVkMi4uZTcxNGY5MWU3MjVlIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUucnVsZXMKKysrKyBiL01ha2VmaWxlLnJ1bGVzCitAQCAtODUsMTIgKzg1LDE0IEBAIHN1YmRpcnM6CisgIyBpbnN0YWxsbGlicyBoYW5kbGVzIGxvY2FsLCB1Y2QgYW5kIHN1YmRpciBsaWJzLiBuZWVkIHRvIGRvIHN1YmRpciBsaWJzCisgIyBiZWZvcmUgYmlucywgc2luemUgdGhvc2UgbGlicyBtYXkgYmUgbmVlZGVkIGZvciBzdWNjZXNzZnVsIGxpbmtpbmcKKyBpbnN0YWxsOiBpbnN0YWxsbG9jYWxoZWFkZXJzIEBpbnN0YWxsdWNkaGVhZGVyc0AgXAorLSAgICAgICAgIGluc3RhbGxsaWJzIFwKKy0gICAgICAgICBpbnN0YWxsbG9jYWxiaW4gICAgICBpbnN0YWxsbG9jYWxzYmluICAgXAorKyAgICAgICAgIGluc3RhbGxsaWJzICAgICAgICAgaW5zdGFsbF9wa2djb25maWcgICBcCisrICAgICAgICAgaW5zdGFsbGxvY2FsYmluICAgICBpbnN0YWxsbG9jYWxzYmluICAgIFwKKyAgICAgICAgICBpbnN0YWxsc3ViZGlycyAgICAgICQoT1RIRVJJTlNUQUxMKQorIAorLXVuaW5zdGFsbDogdW5pbnN0YWxsbGlicyB1bmluc3RhbGxiaW4gdW5pbnN0YWxsc2JpbiB1bmluc3RhbGxoZWFkZXJzIFwKKy0gICAgICAgICAgIHVuaW5zdGFsbHN1YmRpcnMgJChPVEhFUlVOSU5TVEFMTCkKKyt1bmluc3RhbGw6IHVuaW5zdGFsbGxpYnMgICAgIHVuaW5zdGFsbF9wa2djb25maWcgXAorKyAgICAgICAgICAgdW5pbnN0YWxsYmluICAgICAgdW5pbnN0YWxsc2JpbiAgICAgICBcCisrICAgICAgICAgICB1bmluc3RhbGxoZWFkZXJzICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgIHVuaW5zdGFsbHN1YmRpcnMgICQoT1RIRVJVTklOU1RBTEwpCisgCisgaW5zdGFsbHByb2dzOiBpbnN0YWxsYmluIGluc3RhbGxzYmluCisgCitAQCAtMjg3LDYgKzI4OSwyNiBAQCB1bmluc3RhbGxsaWJzOgorIAkJZG9uZSBcCisgCWZpCisgCisrIworKyMgcGtnLWNvbmZpZyBmaWxlcworKyMKKytpbnN0YWxsX3BrZ2NvbmZpZzogJChJTlNUQUxMX1BLR0NPTkZJRykKKysJQGlmIHRlc3QgIngkKElOU1RBTExfUEtHQ09ORklHKSIgIT0geDsgdGhlbgkJCVwKKysJCSQoU0hFTEwpICQodG9wX3NyY2RpcikvbWtpbnN0YWxsZGlycyAkKElOU1RBTExfUFJFRklYKSQobGliZGlyKS9wa2djb25maWc7IFwKKysJCWZvciBpIGluICQoSU5TVEFMTF9QS0dDT05GSUcpOyBkbwkJCVwKKysJCQllY2hvICJpbnN0YWxsaW5nICQkaSBpbiAkKElOU1RBTExfUFJFRklYKSQobGliZGlyKS9wa2djb25maWciOyBcCisrCQlkb25lOwkJCQkJCQlcCisrCQkkKElOU1RBTEwpICQoSU5TVEFMTF9QS0dDT05GSUcpICQoSU5TVEFMTF9QUkVGSVgpJChsaWJkaXIpL3BrZ2NvbmZpZzsgXAorKwlmaQorKworK3VuaW5zdGFsbF9wa2djb25maWc6CisrCUBpZiB0ZXN0ICJ4JChJTlNUQUxMX1BLR0NPTkZJRykiICE9IHg7IHRoZW4JCQlcCisrCQlmb3IgaSBpbiAkKElOU1RBTExfUEtHQ09ORklHKTsgZG8JCQlcCisrCQkJZWNobyAicmVtb3ZpbmcgJCRpIGZyb20gJChJTlNUQUxMX1BSRUZJWCkkKGxpYmRpcikvcGtnY29uZmlnIjsgXAorKwkJCSQoVU5JTlNUQUxMKSAkKElOU1RBTExfUFJFRklYKSQobGliZGlyKS9wa2djb25maWcvJCRpO1wKKysJCWRvbmU7CQkJCQkJCVwKKysJZmkKKysKKyAjCisgIyBub3JtYWwgYmluIGJpbmFyaWVzCisgIworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggNWVjNDRmNWNlMDgyLi41MTAzYTRkYzlkODggMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTMwNDIyLDYgKzMwNDIyLDggQEAgYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIG5ldC1zbm1wLWNvbmZpZzpuZXQtc25tcC1jb25maWcuaW4iCisgCisgYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIG5ldC1zbm1wLWNyZWF0ZS12My11c2VyOm5ldC1zbm1wLWNyZWF0ZS12My11c2VyLmluIgorIAorK2FjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBuZXRzbm1wLnBjOm5ldHNubXAucGMuaW4gbmV0c25tcC1hZ2VudC5wYzpuZXRzbm1wLWFnZW50LnBjLmluIgorKworIGFjX2NvbmZpZ19maWxlcz0iJGFjX2NvbmZpZ19maWxlcyBkaXN0L2dlbmVyYXRpb24tc2NyaXB0cy9nZW4tdmFyaWFibGVzOmRpc3QvZ2VuZXJhdGlvbi1zY3JpcHRzL2dlbi12YXJpYWJsZXMuaW4iCisgCisgYWNfY29uZmlnX2ZpbGVzPSIkYWNfY29uZmlnX2ZpbGVzIGxvY2FsL3NubXBjb25mIgorQEAgLTMxNDQ1LDYgKzMxNDQ3LDggQEAgZG8KKyAgICAgIm1pYnMvTWFrZWZpbGUiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgbWlicy9NYWtlZmlsZTpNYWtlZmlsZS50b3A6bWlicy9NYWtlZmlsZS5pbjpNYWtlZmlsZS5ydWxlcyIgOzsKKyAgICAgIm5ldC1zbm1wLWNvbmZpZyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBuZXQtc25tcC1jb25maWc6bmV0LXNubXAtY29uZmlnLmluIiA7OworICAgICAibmV0LXNubXAtY3JlYXRlLXYzLXVzZXIiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgbmV0LXNubXAtY3JlYXRlLXYzLXVzZXI6bmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuaW4iIDs7CisrICAgICJuZXRzbm1wLnBjIikgQ09ORklHX0ZJTEVTPSIkQ09ORklHX0ZJTEVTIG5ldHNubXAucGM6bmV0c25tcC5wYy5pbiIgOzsKKysgICAgIm5ldHNubXAtYWdlbnQucGMiKSBDT05GSUdfRklMRVM9IiRDT05GSUdfRklMRVMgbmV0c25tcC1hZ2VudC5wYzpuZXRzbm1wLWFnZW50LnBjLmluIiA7OworICAgICAiZGlzdC9nZW5lcmF0aW9uLXNjcmlwdHMvZ2VuLXZhcmlhYmxlcyIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBkaXN0L2dlbmVyYXRpb24tc2NyaXB0cy9nZW4tdmFyaWFibGVzOmRpc3QvZ2VuZXJhdGlvbi1zY3JpcHRzL2dlbi12YXJpYWJsZXMuaW4iIDs7CisgICAgICJsb2NhbC9zbm1wY29uZiIpIENPTkZJR19GSUxFUz0iJENPTkZJR19GSUxFUyBsb2NhbC9zbm1wY29uZiIgOzsKKyAgICAgImRlZmF1bHQiKSBDT05GSUdfQ09NTUFORFM9IiRDT05GSUdfQ09NTUFORFMgZGVmYXVsdCIgOzsKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDRjNGRjZTA5ZDQ4OC4uZDYyYTAyZGE1ZDg4IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xMzYsNiArMTM2LDcgQEAgQUNfQ09ORklHX0ZJTEVTKFtuZXQtc25tcC1jb25maWc6bmV0LXNubXAtY29uZmlnLmluXSwKKyAJCVtjaG1vZCAreCBuZXQtc25tcC1jb25maWddKQorIEFDX0NPTkZJR19GSUxFUyhbbmV0LXNubXAtY3JlYXRlLXYzLXVzZXI6bmV0LXNubXAtY3JlYXRlLXYzLXVzZXIuaW5dLAorIAkJW2NobW9kICt4IG5ldC1zbm1wLWNyZWF0ZS12My11c2VyXSkKKytBQ19DT05GSUdfRklMRVMoW25ldHNubXAucGM6bmV0c25tcC5wYy5pbiBuZXRzbm1wLWFnZW50LnBjOm5ldHNubXAtYWdlbnQucGMuaW5dKQorIEFDX0NPTkZJR19GSUxFUyhbZGlzdC9nZW5lcmF0aW9uLXNjcmlwdHMvZ2VuLXZhcmlhYmxlczpkaXN0L2dlbmVyYXRpb24tc2NyaXB0cy9nZW4tdmFyaWFibGVzLmluXSkKKyBBQ19DT05GSUdfRklMRVMoW2xvY2FsL3NubXBjb25mXSkKKyAKK2RpZmYgLS1naXQgYS9uZXRzbm1wLWFnZW50LnBjLmluIGIvbmV0c25tcC1hZ2VudC5wYy5pbgorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwMC4uM2ExYzc3YmJmODE0CistLS0gL2Rldi9udWxsCisrKysgYi9uZXRzbm1wLWFnZW50LnBjLmluCitAQCAtMCwwICsxLDEyIEBACisrcHJlZml4PUBwcmVmaXhACisrZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorK2luY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisrbGliZGlyPUBsaWJkaXJACisrCisrTmFtZTogbmV0c25tcC1hZ2VudCAoQFBBQ0tBR0VfTkFNRUApCisrRGVzY3JpcHRpb246IFNOTVAgKFNpbXBsZSBOZXR3b3JrIE1hbmFnZW1lbnQgUHJvdG9jb2wpIHN1Yi1hZ2VudCBTREsuCisrVVJMOiBodHRwOi8vd3d3Lm5ldC1zbm1wLm9yZworK1ZlcnNpb246IEBQQUNLQUdFX1ZFUlNJT05ACisrQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0KKytMaWJzOiAtTCR7bGliZGlyfSAtbG5ldHNubXBtaWJzIC1sbmV0c25tcGFnZW50IC1sbmV0c25tcAorK0xpYnMucHJpdmF0ZTogQExERkxBR1NAIEBMTUlCTElCU0AgQExBR0VOVExJQlNAIEBQRVJMTERPUFRTX0ZPUl9BUFBTQCBATE5FVFNOTVBMSUJTQCBATElCU0AKK2RpZmYgLS1naXQgYS9uZXRzbm1wLnBjLmluIGIvbmV0c25tcC5wYy5pbgorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwMC4uMGExZjU3ODVhNGY0CistLS0gL2Rldi9udWxsCisrKysgYi9uZXRzbm1wLnBjLmluCitAQCAtMCwwICsxLDEyIEBACisrcHJlZml4PUBwcmVmaXhACisrZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAorK2luY2x1ZGVkaXI9QGluY2x1ZGVkaXJACisrbGliZGlyPUBsaWJkaXJACisrCisrTmFtZTogbmV0c25tcCAoQFBBQ0tBR0VfTkFNRUApCisrRGVzY3JpcHRpb246IFNOTVAgKFNpbXBsZSBOZXR3b3JrIE1hbmFnZW1lbnQgUHJvdG9jb2wpIGRhZW1vbiBhbmQgYXBwbGljYXRpb25zLgorK1VSTDogaHR0cDovL3d3dy5uZXQtc25tcC5vcmcKKytWZXJzaW9uOiBAUEFDS0FHRV9WRVJTSU9OQAorK0NmbGFnczogLUkke2luY2x1ZGVkaXJ9CisrTGliczogLUwke2xpYmRpcn0gLWxuZXRzbm1wCisrTGlicy5wcml2YXRlOiBATERGTEFHU0AgQExORVRTTk1QTElCU0AgQExJQlNAIEBQRVJMTERPUFRTX0ZPUl9BUFBTQAorLS0gCisyLjIxLjAuMTk2LmcwNDFmNWVhMWNmOTgKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wXzUuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9uZXQtc25tcC9uZXQtc25tcF81LjguYmIKaW5kZXggMTkyYjZiNS4uNTQ2NjY0OSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL25ldC1zbm1wL25ldC1zbm1wXzUuOC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvbmV0LXNubXAvbmV0LXNubXBfNS44LmJiCkBAIC0yNyw2ICsyNyw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9yZXByb2R1Y2liaWxpdHktaGF2ZS1wcmludGNhcC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9yZXByb2R1Y2liaWxpdHktYWNjZXB0LWNvbmZpZ3VyZS1vcHRpb25zLWZyb20tZW52LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtbmV0LXNubXAtZml4LWNvbXBpbGUtZXJyb3ItZGlzYWJsZS1kZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtcGtnLWNvbmZpZy1zdXBwb3J0LWZvci1idWlsZGluZy1hcHBsaWNhdGlvbnMtYW5kLnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjYzYmZjNjVmYmI4NmNkYjYxNjU5OGRmMWFmZjY0NThhIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImIyZmMzNTAwODQwZWJlNTMyNzM0YzQ3ODZiMGRhNGVmMGE1ZjY3ZTUxZWY0Yzg2YjMzNDVkNjk3ZTQ5NzZhZGYiCkBAIC0zNCw3ICszNSw3IEBACiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbmV0LXNubXAvZmlsZXMvbmV0LXNubXAvIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL25ldC1zbm1wLyg/UDxwdmVyPlxkKyhcLlxkKykrKS8iCiAKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtcmMuZCBzaXRlaW5mbyBzeXN0ZW1kIHBrZ2NvbmZpZyBwZXJsbmF0aXZlIHB0ZXN0Citpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgc2l0ZWluZm8gc3lzdGVtZCBwa2djb25maWcgcGVybG5hdGl2ZSBwdGVzdCBtdWx0aWxpYl9zY3JpcHQgbXVsdGlsaWJfaGVhZGVyCiAKIEVYVFJBX09FTUFLRSA9ICJJTlNUQUxMX1BSRUZJWD0ke0R9IE9USEVSTERGTEFHUz0nJHtMREZMQUdTfScgSE9TVF9DUFBGTEFHUz0nJHtCVUlMRF9DUFBGTEFHU30nIgogCkBAIC0xMjMsMTEgKzEyNCwxNCBAQAogICAgICAgICAtaSAke0R9JHtiaW5kaXJ9L25ldC1zbm1wLWNyZWF0ZS12My11c2VyCiAgICAgc2VkIC1lICdzQF5OU0NfU1JDRElSPS4qQE5TQ19TUkNESVI9LkBnJyBcCiAgICAgICAgIC1lICdzQFteIF0qLWZkZWJ1Zy1wcmVmaXgtbWFwPVteICJdKkBAZycgXAorICAgICAgICAtZSAnc0BbXiBdKi1mbWFjcm8tcHJlZml4LW1hcD1bXiAiXSpAQGcnIFwKICAgICAgICAgLWUgJ3NAW14gXSotLXN5c3Jvb3Q9W14gIl0qQEBnJyBcCiAgICAgICAgIC1lICdzQFteIF0qLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1bXiAiXSpAQGcnIFwKICAgICAgICAgLWUgJ3NAW14gXSotLXdpdGgtaW5zdGFsbC1wcmVmaXg9W14gIl0qQEBnJyBcCiAgICAgICAgIC1lICdzQFteIF0qUEtHX0NPTkZJR19QQVRIPVteICJdKkBAZycgXAogICAgICAgICAtZSAnc0BbXiBdKlBLR19DT05GSUdfTElCRElSPVteICJdKkBAZycgXAorICAgICAgICAtZSAnc0AtTCR7U1RBR0lOR19ESVJfSE9TVH0ke2xpYmRpcn1AQGcnIFwKKyAgICAgICAgLWUgJ3NALUkke1NUQUdJTkdfRElSX0hPU1R9JHtpbmNsdWRlZGlyfUBAZycgXAogICAgICAgICAtaSAke0R9JHtiaW5kaXJ9L25ldC1zbm1wLWNvbmZpZwogCiAgICAgaWYgWyAiJHtIQVNfUEVSTH0iID0gIjEiIF07IHRoZW4KQEAgLTEzNSw2ICsxMzksOCBAQAogICAgICAgICAgICAgLWUgInNAXk5TQ19MSUJESVI9LUwuKkBOU0NfTElCRElSPS1MXCRce2xpYmRpclx9QGciIFwKICAgICAgICAgICAgIC1pICR7RH0ke2JpbmRpcn0vbmV0LXNubXAtY29uZmlnCiAgICAgZmkKKworICAgIG9lX211bHRpbGliX2hlYWRlciBuZXQtc25tcC9uZXQtc25tcC1jb25maWcuaAogfQogCiBkb19pbnN0YWxsX3B0ZXN0KCkgewpAQCAtMjY3LDMgKzI3Myw1IEBACiBSQ09ORkxJQ1RTXyR7UE59LXNlcnZlci1zbm1wdHJhcGQgKz0gIiR7UE59LXNlcnZlci1zbm1wdHJhcGQtc3lzdGVtZCIKIAogTEVBRF9TT05BTUUgPSAibGlibmV0c25tcC5zbyIKKworTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfS1kZXY6JHtiaW5kaXJ9L25ldC1zbm1wLWNvbmZpZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubGxkcC9maWxlcy8wMDAxLUZpeC1tdXNsLWxpYmMtYnVpbGQtaXNzdWUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmxsZHAvZmlsZXMvMDAwMS1GaXgtbXVzbC1saWJjLWJ1aWxkLWlzc3VlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwYjA4MmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmxsZHAvZmlsZXMvMDAwMS1GaXgtbXVzbC1saWJjLWJ1aWxkLWlzc3VlLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gYTY0ZTUyZjliNTg1MTlhYTJiOGExMDczZmE2YzA0ZGEwNDkzMzQyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvbmF0aGFuIFJpY2hhcmRzb24gPGpvbmF0aGFuLnJpY2hhcmRzb25AYnJvYWRjb20uY29tPgorRGF0ZTogV2VkLCAyNiBGZWIgMjAyMCAxMjoxNjozOCAtMDgwMAorU3ViamVjdDogW1BBVENIXSBGaXggbXVzbCBsaWJjIGJ1aWxkIGlzc3VlCisKK2NsaWYuaCBzaG91bGQgaW5jbHVkZSBzeXMvdHlwZXMuaCBmb3IgdGhlIGRlZmluaXRpb24gb2YgcGlkX3QuIEl0IGZhaWxzCit0byBjb21waWxlIHdoZW4gdXNpbmcgbXVzbCBsaWJjLgorCitTaWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBSaWNoYXJkc29uIDxqb25hdGhhbi5yaWNoYXJkc29uQGJyb2FkY29tLmNvbT4KKworLS0tCisgaW5jbHVkZS9jbGlmLmggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvY2xpZi5oIGIvaW5jbHVkZS9jbGlmLmgKK2luZGV4IDY0OGVlZGYuLjkyZjRmZDggMTAwNjQ0CistLS0gYS9pbmNsdWRlL2NsaWYuaAorKysrIGIvaW5jbHVkZS9jbGlmLmgKK0BAIC0zMiw2ICszMiw3IEBACisgI2lmbmRlZiBDTElGX0gKKyAjZGVmaW5lIENMSUZfSAorIAorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKyAjaW5jbHVkZSA8c3lzL3VuLmg+CisgI2luY2x1ZGUgImNsaWZfc29jay5oIgorIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sbGRwL2ZpbGVzLzAwMDEtYXV0b3Rvb2xzLUFkZC1pbmNsdWRlLXBhdGgtdG8tZ2VuZXJhdGVkLXZlcnNpb24uaC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubGxkcC9maWxlcy8wMDAxLWF1dG90b29scy1BZGQtaW5jbHVkZS1wYXRoLXRvLWdlbmVyYXRlZC12ZXJzaW9uLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU4ZmMxMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubGxkcC9maWxlcy8wMDAxLWF1dG90b29scy1BZGQtaW5jbHVkZS1wYXRoLXRvLWdlbmVyYXRlZC12ZXJzaW9uLmgucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSBlYjE0YWE2NmRjMDM4NDA3MWFmNDAxY2NlZDhjMDI5OTNiNTU1MDJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9uYXRoYW4gUmljaGFyZHNvbiA8am9uYXRoYW4ucmljaGFyZHNvbkBicm9hZGNvbS5jb20+CitEYXRlOiBXZWQsIDI2IEZlYiAyMDIwIDE1OjU0OjUxIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGF1dG90b29sczogQWRkIGluY2x1ZGUgcGF0aCB0byBnZW5lcmF0ZWQgdmVyc2lvbi5oCisKK1doZW4gdGhlIGJ1aWxkIGRpciBpc24ndCB0aGUgc2FtZSBhcyBzb3VyY2UgZGlyIGl0IGZhaWxzIHRvIGNvbXBpbGUKK2JlY2F1c2UgdGhlIGdlbmVyYXRlZCB2ZXJzaW9uLmggZnJvbSBBQ19DT05GSUdfRklMRVMgaXMgYWx3YXlzIGluIGJ1aWxkCitkaXIuIEluY2x1ZGUgdGhlIHBhdGggdG8gaXQgaW4gQU1fQ1BQRkxBR1MuCisKK1NpZ25lZC1vZmYtYnk6IEpvbmF0aGFuIFJpY2hhcmRzb24gPGpvbmF0aGFuLnJpY2hhcmRzb25AYnJvYWRjb20uY29tPgorCistLS0KKyBNYWtlZmlsZS5hbSB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggMGZiOWJiMC4uMjk1MjAxOSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTE0LDYgKzE0LDkgQEAgZW5kaWYKKyBBTV9DUFBGTEFHUyA9IC1JJHtzcmNkaXJ9L2luY2x1ZGUgLURTWVNDT05GRElSPSJcIiR7c3lzY29uZmRpcn1cIiIgXAorIAktRF9GT1JUSUZZX1NPVVJDRT0yCisgCisrIyBSZXF1aXJlZCBmb3IgdGhlIGdlbmVyYXRlZCB2ZXJzaW9uLmggd2hlbiBidWlsZCBkaXIgaXMgbm90IHRoZSBzYW1lIGFzIHNyY2Rpci4KKytBTV9DUFBGTEFHUyArPSAtSSR7dG9wX2J1aWxkZGlyfS9pbmNsdWRlCisrCisgQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKKyAKKyBwYXJzZV9jbGkubzogQ0ZMQUdTKz0tVV9GT1JUSUZZX1NPVVJDRSAtV25vLWVycm9yCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvb3BlbmxsZHAvZmlsZXMvMDAwMS1hdXRvdG9vbHMtQWRkLW9wdGlvbi10by1kaXNhYmxlLWluc3RhbGxhdGlvbi1vZi1zeXN0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sbGRwL2ZpbGVzLzAwMDEtYXV0b3Rvb2xzLUFkZC1vcHRpb24tdG8tZGlzYWJsZS1pbnN0YWxsYXRpb24tb2Ytc3lzdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjZhNTI5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sbGRwL2ZpbGVzLzAwMDEtYXV0b3Rvb2xzLUFkZC1vcHRpb24tdG8tZGlzYWJsZS1pbnN0YWxsYXRpb24tb2Ytc3lzdC5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGcm9tIGRjM2YyMjUwOTA4NTg3NzEwZjEwOWM4MGRkZjhhOTRmMGJjNDBiODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb25hdGhhbiBSaWNoYXJkc29uIDxqb25hdGhhbi5yaWNoYXJkc29uQGJyb2FkY29tLmNvbT4KK0RhdGU6IEZyaSwgNiBBcHIgMjAxOCAxMDo0OTowNCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBhdXRvdG9vbHM6IEFkZCBvcHRpb24gdG8gZGlzYWJsZSBpbnN0YWxsYXRpb24gb2Ygc3lzdGVtZCBjb25mCisgZmlsZXMKKworQWRkIG9wdGlvbiB0byBjb25maWd1cmUuYWMgdG8gZW5hYmxlIG9yIGRpc2FibGUgaW5zdGFsbCBvZiBzeXN0ZW1kIGNvbmYKK2ZpbGVzLiBJZiAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXIgaXMgcGFzc2VkIHRvIGNvbmZpZ3VyZSB0aGVuIHRoZQorZmlsZXMgd2lsbCBiZSBpbnN0YWxsZWQgdG8gdGhlIHByb3ZpZGVkIGRpcmVjdG9yeS4gSWYgdGhlIG9wdGlvbiBpc24ndAorcHJvdmlkZWQgdGhlbiB0aGUgdmFsdWUgaXMgZGV0ZXJtaW5lZCBmcm9tIHRoZSBzeXN0ZW1kIHBrZ2NvbmZpZyBmaWxlLAoraWYgZm91bmQgaW4gUEtHX0NPTkZJR19QQVRILgorCitUaGlzIGNoYW5nZSBpcyByZXF1aXJlZCBiZWNhdXNlIE1ha2VmaWxlLmFtIGFsd2F5cyBpbnN0YWxsZWQgdGhlIGZpbGVzCit0byBhIGhhcmQgY29kZWQgcGF0aCB0aGF0IGNvdWxkbid0IGJlIGNoYW5nZWQuCisKKworU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gUmljaGFyZHNvbiA8am9uYXRoYW4ucmljaGFyZHNvbkBicm9hZGNvbS5jb20+CistLS0KKyBNYWtlZmlsZS5hbSAgfCAzICsrLQorIGNvbmZpZ3VyZS5hYyB8IDkgKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCAyOTJjMGZkLi4wZmI5YmIwIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMTM4LDggKzEzOCw5IEBAIGluc3RhbGwtZGF0YS1ob29rOglpbnN0YWxsZGlycy1sb2NhbAorIHBrZ2NvbmZpZ2RpciA9ICR7bGliZGlyfS9wa2djb25maWcKKyBwa2djb25maWdfREFUQSA9IGxsZHBhZC5wYyBsaWJsbGRwX2NsaWYucGMKKyAKKy1zeXN0ZW1kc3lzdGVtdW5pdGRpciA9ICQocHJlZml4KS9saWIvc3lzdGVtZC9zeXN0ZW0KKytpZiBIQVZFX1NZU1RFTUQKKyBkaXN0X3N5c3RlbWRzeXN0ZW11bml0X0RBVEEgPSBsbGRwYWQuc2VydmljZSBsbGRwYWQuc29ja2V0CisrZW5kaWYKKyAKKyBiYXNoY29tcGxldGlvbmRpciA9ICQoc3lzY29uZmRpcikvYmFzaF9jb21wbGV0aW9uLmQKKyBkaXN0X2Jhc2hjb21wbGV0aW9uX0RBVEEgPSBjb250cmliL2Jhc2hfY29tcGxldGlvbi9sbGRwYWQgY29udHJpYi9iYXNoX2NvbXBsZXRpb24vbGxkcHRvb2wKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDA2Njc0NDYuLmY3NWY0MzMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTk1LDYgKzk1LDE1IEBAIEFDX1RZUEVfVUlOVDE2X1QKKyBBQ19UWVBFX1VJTlQzMl9UCisgQUNfVFlQRV9VSU5UOF9UCisgCisrIyBTdXBwb3J0IGZvciBzeXN0ZW1kIHVuaXQgZmlsZXMuCisrQUNfQVJHX1dJVEgoW3N5c3RlbWRzeXN0ZW11bml0ZGlyXSwKKysgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9RElSXSwgW0RpcmVjdG9yeSBmb3Igc3lzdGVtZCBzZXJ2aWNlIGZpbGVzXSksCisrICAgICAgICBbXSwgW3dpdGhfc3lzdGVtZHN5c3RlbXVuaXRkaXI9JCgkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXN5c3RlbWRzeXN0ZW11bml0ZGlyIHN5c3RlbWQpXSkKKytpZiB0ZXN0ICJ4JHdpdGhfc3lzdGVtZHN5c3RlbXVuaXRkaXIiICE9IHhubzsgdGhlbgorKyAgICAgICAgQUNfU1VCU1QoW3N5c3RlbWRzeXN0ZW11bml0ZGlyXSwgWyR3aXRoX3N5c3RlbWRzeXN0ZW11bml0ZGlyXSkKKytmaQorK0FNX0NPTkRJVElPTkFMKEhBVkVfU1lTVEVNRCwgW3Rlc3QgLW4gIiR3aXRoX3N5c3RlbWRzeXN0ZW11bml0ZGlyIiAtYSAieCR3aXRoX3N5c3RlbWRzeXN0ZW11bml0ZGlyIiAhPSB4bm8gXSkKKysKKyBBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlIGluY2x1ZGUvdmVyc2lvbi5oIGxsZHBhZC5zcGVjIGxsZHBhZC5wYyBsaWJsbGRwX2NsaWYucGNdKQorIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKKyBBQ19PVVRQVVQKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubGxkcC9vcGVubGxkcF8xLjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9vcGVubGxkcC9vcGVubGxkcF8xLjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZmJmMDY0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL29wZW5sbGRwL29wZW5sbGRwXzEuMC4xLmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAiT3Blbi1MTERQIgorREVTQ1JJUFRJT04gPSAiTGluayBMYXllciBEaXNjb3ZlcnkgUHJvdG9jb2wgZm9yIExpbnV4IHRoYXQgaW5jbHVkZXMgc3VwcG9ydCBmb3IgRENCWCIKK0hPTUVQQUdFID0gImh0dHA6Ly9vcGVuLWxsZHAub3JnL3N0YXJ0IgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGMyYmMyODNlNjVkZjM5OGNlZDVmNWI3NDdlNzgxNjIiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgcGtnY29uZmlnIGF1dG90b29scworaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnc3lzdGVtZCcsICcnLCBkKX0KKworREVQRU5EUyA9ICJsaWJubCBsaWJjb25maWcgcmVhZGxpbmUiCisKK1NSQ1JFViA9ICIzNmQ3MjlkZTdjZTViNTZjZjA2MWQ5NGQ2MTBjZjA1MTAxNTQ4MjBjIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ludGVsL29wZW5sbGRwLmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9bWFzdGVyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LW11c2wtbGliYy1idWlsZC1pc3N1ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWF1dG90b29scy1BZGQtaW5jbHVkZS1wYXRoLXRvLWdlbmVyYXRlZC12ZXJzaW9uLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1hdXRvdG9vbHMtQWRkLW9wdGlvbi10by1kaXNhYmxlLWluc3RhbGxhdGlvbi1vZi1zeXN0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCisjIE1ha2VmaWxlLmFtIGFkZHMgLVdlcnJvciB0byBBTV9DRkxBR1MuIFRoZXJlIGFyZSB3YXJuaW5ncyBzbyBkaXNhYmxlIGl0LgorVEFSR0VUX0NGTEFHUyArPSAiLVduby1lcnJvciIKKworIyBFbmFibGUgaW5zdGFsbCBvZiBzeXN0ZW1kIGNvbmYgZmlsZXMuCitFWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICctLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfScsICcnLCBkKX0iCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJsbGRwYWQuc2VydmljZSBsbGRwYWQuc29ja2V0IgorCisjIFRvIGVuYWJsZSBzZXJ2aWNlIGF0IGJvb3Qgc2V0IHRvIGVuYWJsZSBpbiBsb2NhbC5jb25mLgorU1lTVEVNRF9BVVRPX0VOQUJMRSA/PSAiZGlzYWJsZSIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAiaXByb3V0ZTItdGMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcHB0cC1saW51eC9wcHRwLWxpbnV4XzEuMTAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9wcHRwLWxpbnV4L3BwdHAtbGludXhfMS4xMC4wLmJiCmluZGV4IDMyMjE1ODEuLjUzYTc5YWYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9wcHRwLWxpbnV4L3BwdHAtbGludXhfMS4xMC4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9wcHRwLWxpbnV4L3BwdHAtbGludXhfMS4xMC4wLmJiCkBAIC05LDYgKzksOCBAQAogTElDRU5TRSA9ICJHUEx2MisiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKIAoraW5oZXJpdCBwZXJsbmF0aXZlCisKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3NvdXJjZWZvcmdlL3BwdHBjbGllbnQvcHB0cC0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vb3B0aW9ucy5wcHRwIFwKICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3F1YWdnYS9xdWFnZ2EuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3F1YWdnYS9xdWFnZ2EuaW5jCmluZGV4IGRmZDZhYTcuLjEzNGEzM2QgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy9xdWFnZ2EvcXVhZ2dhLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1wcm90b2NvbHMvcXVhZ2dhL3F1YWdnYS5pbmMKQEAgLTQwLDcgKzQwLDcgQEAKIFBBQ0tBR0VDT05GSUdbY2FwXSA9ICItLWVuYWJsZS1jYXBhYmlsaXRpZXMsLS1kaXNhYmxlLWNhcGFiaWxpdGllcyxsaWJjYXAiCiBQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLWxpYnBhbSwgLS13aXRob3V0LWxpYnBhbSwgbGlicGFtIgogCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCB1c2VyYWRkIHN5c3RlbWQgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCB1c2VyYWRkIHN5c3RlbWQgcGtnY29uZmlnIG11bHRpbGliX2hlYWRlcgogCiBTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWJncGQgJHtQTn0taXNpc2QgJHtQTn0tb3NwZjZkICR7UE59LW9zcGZkICR7UE59LXJpcGQgJHtQTn0tcmlwbmdkIgogU1lTVEVNRF9TRVJWSUNFXyR7UE59LWJncGQgPSAiYmdwZC5zZXJ2aWNlIgpAQCAtMTA2LDYgKzEwNiw5IEBACiAgICAgc2VkIC1pICdzIS9ldGMvISR7c3lzY29uZmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8qICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvd2F0Y2hxdWFnZ2EKICAgICBzZWQgLWkgJ3MhL3Zhci8hJHtsb2NhbHN0YXRlZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLyogJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvdm9sYXRpbGVzLjAzX3F1YWdnYQogICAgIHNlZCAtaSAncyFeUEFUSD0uKiFQQVRIPSR7YmFzZV9zYmluZGlyfToke3NiaW5kaXJ9OiR7YmFzZV9iaW5kaXJ9OiR7YmluZGlyfSEnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8qCisgICAgc2VkIC1pICdzIS0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9W14gIl0qISEnICR7RH0ke2luY2x1ZGVkaXJ9L3F1YWdnYS92ZXJzaW9uLmgKKworICAgIG9lX211bHRpbGliX2hlYWRlciBxdWFnZ2EvdmVyc2lvbi5oCiAKICAgICAjIEZvciBQQU0KICAgICBmb3IgZmVhdHVyZSBpbiAke0RJU1RST19GRUFUVVJFU307IGRvCkBAIC0xMTYsOSArMTE5LDkgQEAKICAgICBkb25lCiAKICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLSAgICAgICAgZWNobyAiZCAvdmFyL3J1bi9xdWFnZ2EgMDc1NSBxdWFnZ2EgcXVhZ2dhIC0iIFwKLSAgICAgICAgPiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLyR7QlBOfS5jb25mCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L3RtcGZpbGVzLmQKKyAgICAgICAgZWNobyAiZCAvcnVuL3F1YWdnYSAwNzU1IHF1YWdnYSBxdWFnZ2EgLSIgXAorICAgICAgICA+ICR7RH0ke25vbmFyY2hfbGliZGlyfS90bXBmaWxlcy5kLyR7QlBOfS5jb25mCiAgICAgZmkKIAogICAgICMgUmVtb3ZlIHN5c2luaXQgc2NyaXB0IGlmIHN5c3Zpbml0IGlzIG5vdCBpbiBESVNUUk9fRkVBVFVSRVMKQEAgLTE2Niw2ICsxNjksOCBAQAogRklMRVNfJHtQTn0td2F0Y2hxdWFnZ2EgPSAiJHtzYmluZGlyfS93YXRjaHF1YWdnYSAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvd2F0Y2hxdWFnZ2EgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvd2F0Y2hxdWFnZ2EiCiAKK0ZJTEVTXyR7UE59ICs9ICIke25vbmFyY2hfbGliZGlyfS90bXBmaWxlcy5kLyouY29uZiIKKwogIyBJbmRpY2F0ZSB0aGF0IHRoZSBkZWZhdWx0IGZpbGVzIGFyZSBjb25maWd1cmF0aW9uIGZpbGVzCiBDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9kZWZhdWx0L3F1YWdnYSBcCiAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9xdWFnZ2EvYmdwZC5jb25mIFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXByb3RvY29scy91c3JzY3RwL3VzcnNjdHBfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3VzcnNjdHAvdXNyc2N0cF9naXQuYmIKaW5kZXggYTVhNTYwNS4uNGY4ZTRkNCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3VzcnNjdHAvdXNyc2N0cF9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtcHJvdG9jb2xzL3VzcnNjdHAvdXNyc2N0cF9naXQuYmIKQEAgLTgsNiArOCw4IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKKwogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCiAKIERFUEVORFMgKz0gIm9wZW5zc2wiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2FycHRhYmxlcy9hcnB0YWJsZXMvMDAwMS1Vc2UtQVJQQ0ZMQUdTLWZvci1wYWNrYWdlLXNwZWNpZmljLWNvbXBpbGVyLWZsYWdzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9hcnB0YWJsZXMvYXJwdGFibGVzLzAwMDEtVXNlLUFSUENGTEFHUy1mb3ItcGFja2FnZS1zcGVjaWZpYy1jb21waWxlci1mbGFncy5wYXRjaAppbmRleCBlOGJlNDVlLi5lYjU4Mzg5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2FycHRhYmxlcy9hcnB0YWJsZXMvMDAwMS1Vc2UtQVJQQ0ZMQUdTLWZvci1wYWNrYWdlLXNwZWNpZmljLWNvbXBpbGVyLWZsYWdzLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYXJwdGFibGVzL2FycHRhYmxlcy8wMDAxLVVzZS1BUlBDRkxBR1MtZm9yLXBhY2thZ2Utc3BlY2lmaWMtY29tcGlsZXItZmxhZ3MucGF0Y2gKQEAgLTgsMjQgKzgsMTcgQEAKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIC0tLQotIE1ha2VmaWxlICAgICAgICAgICAgfCAxNSArKysrKysrLS0tLS0tLS0KLSBleHRlbnNpb25zL01ha2VmaWxlIHwgIDUgKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisgTWFrZWZpbGUgICAgICAgICAgICB8IDEwICsrKystLS0tLS0KKyBleHRlbnNpb25zL01ha2VmaWxlIHwgIDQgKysrKworIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggN2JlYWQwZC4uMzM2ZGI2YiAxMDA2NDQKK2luZGV4IDYyZWJkZjIuLmNkMDY4MTMgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZQogKysrIGIvTWFrZWZpbGUKLUBAIC03LDE1ICs3LDEzIEBAIExJQkRJUjo9JChQUkVGSVgpL2xpYgotIEJJTkRJUjo9JChQUkVGSVgpL3NiaW4KLSBNQU5ESVI6PSQoUFJFRklYKS9tYW4KLSBtYW44ZGlyPSQoTUFORElSKS9tYW44Ci0tSU5JVERJUjo9L2V0Yy9yYy5kL2luaXQuZAotK0lOSVRESVI6PS9ldGMvaW5pdC5kCi0gU1lTQ09ORklHRElSOj0vZXRjL3N5c2NvbmZpZwotIERFU1RESVI6PQorQEAgLTEyLDkgKzEyLDcgQEAgREVTVERJUjo9CiAgCi0gTUFOUyA9IGFycHRhYmxlcy44IGFycHRhYmxlcy1zYXZlLjggYXJwdGFibGVzLXJlc3RvcmUuOAorIE1BTlMgPSBhcnB0YWJsZXMtbGVnYWN5LjggYXJwdGFibGVzLXNhdmUuOCBhcnB0YWJsZXMtcmVzdG9yZS44CiAgCiAtQ09QVF9GTEFHUzo9LU8yCiAtQ0ZMQUdTOj0kKENPUFRfRkxBR1MpIC1XYWxsIC1XdW51c2VkIC1JJChLRVJORUxfRElSKS9pbmNsdWRlLyAtSWluY2x1ZGUvIC1EQVJQVEFCTEVTX1ZFUlNJT049XCIkKEFSUFRBQkxFU19WRVJTSU9OKVwiICMtZyAtRERFQlVHICMtcGcgIyAtREFSUFRDX0RFQlVHCkBAIC0zNCw4ICsyNyw4IEBACiAgaWZuZGVmIEFSUFRfTElCRElSCiAgQVJQVF9MSUJESVI6PSQoTElCRElSKS9hcnB0YWJsZXMKICBlbmRpZgotQEAgLTI1LDEzICsyMywxMyBAQCBpbmNsdWRlIGV4dGVuc2lvbnMvTWFrZWZpbGUKLSBhbGw6IGFycHRhYmxlcyBsaWJhcnB0Yy9saWJhcnB0Yy5hCitAQCAtMjQsMTMgKzIyLDEzIEBAIGluY2x1ZGUgZXh0ZW5zaW9ucy9NYWtlZmlsZQorIGFsbDogYXJwdGFibGVzLWxlZ2FjeSBsaWJhcnB0Yy9saWJhcnB0Yy5hCiAgCiAgYXJwdGFibGVzLm86IGFycHRhYmxlcy5jCiAtCSQoQ0MpICQoQ0ZMQUdTKSAtYyAtbyAkQCAkPApAQCAtNTEsMjkgKzQ0LDE4IEBACiAgCiAgbGliYXJwdGMvbGliYXJwdGMuYTogbGliYXJwdGMvbGliYXJwdGMubwogIAkkKEFSKSByY3MgJEAgJDwKLUBAIC01Myw3ICs1MSw4IEBAIHNjcmlwdHM6IGFycHRhYmxlcy1zYXZlIGFycHRhYmxlcy1yZXN0b3JlIGFycHRhYmxlcy5zeXN2Ci0gCWluc3RhbGwgLW0gMDc1NSBhcnB0YWJsZXMtcmVzdG9yZV8gJChERVNURElSKSQoQklORElSKS9hcnB0YWJsZXMtcmVzdG9yZQotIAljYXQgYXJwdGFibGVzLnN5c3YgfCBzZWQgJ3MvX19FWEVDX1BBVEhfXy8kKHRtcDEpL2cnIHwgc2VkICdzL19fU1lTQ09ORklHX18vJCh0bXAyKS9nJyA+IGFycHRhYmxlcy5zeXN2XwotIAlpZiBbICIkKERFU1RESVIpIiAhPSAiIiBdOyB0aGVuIG1rZGlyIC1wICQoREVTVERJUikkKElOSVRESVIpOyBmaQotLQlpZiB0ZXN0IC1kICQoREVTVERJUikkKElOSVRESVIpOyB0aGVuIGluc3RhbGwgLW0gMDc1NSBhcnB0YWJsZXMuc3lzdl8gJChERVNURElSKSQoSU5JVERJUikvYXJwdGFibGVzOyBmaQotKwlpbnN0YWxsIC1kICQoREVTVERJUikkKElOSVRESVIpCi0rCWluc3RhbGwgLW0gMDc1NSBhcnB0YWJsZXMuc3lzdl8gJChERVNURElSKSQoSU5JVERJUikvYXJwdGFibGVzCi0gCXJtIC1mIGFycHRhYmxlcy1zYXZlXyBhcnB0YWJsZXMtcmVzdG9yZV8gYXJwdGFibGVzLnN5c3ZfCi0gCi0gLlBIT05ZOiBpbnN0YWxsLW1hbgogZGlmZiAtLWdpdCBhL2V4dGVuc2lvbnMvTWFrZWZpbGUgYi9leHRlbnNpb25zL01ha2VmaWxlCi1pbmRleCAwMTg5Y2M5Li5iMDQ2NDI1IDEwMDY0NAoraW5kZXggMDE4OWNjOS4uZThhZjc4MiAxMDA2NDQKIC0tLSBhL2V4dGVuc2lvbnMvTWFrZWZpbGUKICsrKyBiL2V4dGVuc2lvbnMvTWFrZWZpbGUKLUBAIC00LDQgKzQsNyBAQCBFWFRfRlVOQys9c3RhbmRhcmQgbWFuZ2xlIENMQVNTSUZZIE1BUksKLSBFWFRfT0JKUys9JChmb3JlYWNoIFQsJChFWFRfRlVOQyksIGV4dGVuc2lvbnMvYXJwdF8kKFQpLm8pCitAQCAtNSwzICs1LDcgQEAgRVhUX09CSlMrPSQoZm9yZWFjaCBULCQoRVhUX0ZVTkMpLCBleHRlbnNpb25zL2FycHRfJChUKS5vKQogIAogIGV4dGVuc2lvbnMvZWJ0XyUubzogZXh0ZW5zaW9ucy9hcnB0XyUuYyBpbmNsdWRlL2FycHRhYmxlcy5oIGluY2x1ZGUvYXJwdGFibGVzX2NvbW1vbi5oCi0tCSQoQ0MpICQoQ0ZMQUdTKSAkKFBST0dTUEVDUykgLWMgLW8gJEAgJDwKKyAJJChDQykgJChDRkxBR1MpICQoUFJPR1NQRUNTKSAtYyAtbyAkQCAkPAogKwkkKENDKSAkKENGTEFHUykgJChBUlBDRkxBR1MpICQoUFJPR1NQRUNTKSAtYyAtbyAkQCAkPAogKwogK2V4dGVuc2lvbnMvYXJwdF8lLm86IGV4dGVuc2lvbnMvYXJwdF8lLmMgaW5jbHVkZS9hcnB0YWJsZXMuaCBpbmNsdWRlL2FycHRhYmxlc19jb21tb24uaAogKwkkKENDKSAkKENGTEFHUykgJChBUlBDRkxBR1MpICQoUFJPR1NQRUNTKSAtYyAtbyAkQCAkPAogLS0gCi0yLjEyLjEKKzIuMTcuMQogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2FycHRhYmxlcy9hcnB0YWJsZXMvYXJwdGFibGVzLWluaXQtYnVzeWJveC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYXJwdGFibGVzL2FycHRhYmxlcy9hcnB0YWJsZXMtaW5pdC1idXN5Ym94LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDk1NmM0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYXJwdGFibGVzL2FycHRhYmxlcy9hcnB0YWJsZXMtaW5pdC1idXN5Ym94LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotSW5kZXg6IGFycHRhYmxlcy12MC4wLjMtNC9hcnB0YWJsZXMuc3lzdgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGFycHRhYmxlcy12MC4wLjMtNC5vcmlnL2FycHRhYmxlcy5zeXN2CTIwMTAtMDMtMjIgMTY6Mjg6MDMuMDAwMDAwMDAwICswMzAwCi0rKysgYXJwdGFibGVzLXYwLjAuMy00L2FycHRhYmxlcy5zeXN2CTIwMTAtMDMtMjIgMTY6Mjc6NTEuMDAwMDAwMDAwICswMzAwCi1AQCAtMTIsMTAgKzEyLDEwIEBACi0gIyBjb25maWc6IF9fU1lTQ09ORklHX18vYXJwdGFibGVzCi0gCi0gc291cmNlIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucwotLXNvdXJjZSAvZXRjL3N5c2NvbmZpZy9uZXR3b3JrCi0rIyBzb3VyY2UgL2V0Yy9zeXNjb25maWcvbmV0d29yawotIAotICMgQ2hlY2sgdGhhdCBuZXR3b3JraW5nIGlzIHVwLgotLVsgJHtORVRXT1JLSU5HfSA9ICJubyIgXSAmJiBleGl0IDAKLSsjIFsgJHtORVRXT1JLSU5HfSA9ICJubyIgXSAmJiBleGl0IDAKLSAKLSBbIC14IF9fRVhFQ19QQVRIX18vYXJwdGFibGVzIF0gfHwgZXhpdCAxCi0gWyAteCBfX0VYRUNfUEFUSF9fL2FycHRhYmxlcy1zYXZlIF0gfHwgZXhpdCAxCi1AQCAtMjgsMzIgKzI4LDMwIEBACi0gZGVzYz0iQXJwIGZpbHRlcmluZyIKLSAKLSBzdGFydCgpIHsKLS0JZWNobyAtbiAkIlN0YXJ0aW5nICRkZXNjICgkcHJvZyk6ICIKLSsJZWNobyAtbiAiU3RhcnRpbmcgJGRlc2MgKCRwcm9nKTogIgotIAlfX0VYRUNfUEFUSF9fL2FycHRhYmxlcy1yZXN0b3JlIDwgX19TWVNDT05GSUdfXy9hcnB0YWJsZXMgfHwgUkVUVkFMPTEKLSAKLSAJaWYgWyAkUkVUVkFMIC1lcSAwIF07IHRoZW4KLS0JCXN1Y2Nlc3MgIiRwcm9nIHN0YXJ0dXAiCi0tCQlybSAtZiAvdmFyL2xvY2svc3Vic3lzLyRwcm9nCi0rCQllY2hvICIkcHJvZyBvayIKLSsJCXRvdWNoIC92YXIvbG9jay9zdWJzeXMvJHByb2cKLSAJZWxzZQotLQkJZmFpbHVyZSAiJHByb2cgc3RhcnR1cCIKLSsJCWVjaG8gIiRwcm9nIGZhaWxlZCIKLSAJZmkKLSAKLS0JZWNobwotIAlyZXR1cm4gJFJFVFZBTAotIH0KLSAKLSBzdG9wKCkgewotLQllY2hvIC1uICQiU3RvcHBpbmcgJGRlc2MgKCRwcm9nKTogIgotKwllY2hvIC1uICJTdG9wcGluZyAkZGVzYyAoJHByb2cpOiAiCi0gCV9fRVhFQ19QQVRIX18vYXJwdGFibGVzLXJlc3RvcmUgPCAvZGV2L251bGwgfHwgUkVUVkFMPTEKLSAKLSAJaWYgWyAkUkVUVkFMIC1lcSAwIF07IHRoZW4KLS0JCXN1Y2Nlc3MgIiRwcm9nIHNodXRkb3duIgotLQkJcm0gLWYgJXtfbG9jYWxzdGF0ZWRpcn0vbG9jay9zdWJzeXMvJHByb2cKLSsJCWVjaG8gIiRwcm9nIHN0b3BwZWQiCi0rCQlybSAtZiAvdmFyL2xvY2svc3Vic3lzLyRwcm9nCi0gCWVsc2UKLS0JCWZhaWx1cmUgIiRwcm9nIHNodXRkb3duIgotKwkJZWNobyAiJHByb2cgZmFpbGVkIHRvIHN0b3AiCi0gCWZpCi0gCi0tCWVjaG8KLSAJcmV0dXJuICRSRVRWQUwKLSB9Ci0gCi1AQCAtNjMsMTUgKzYxLDE0IEBACi0gfQotIAotIHNhdmUoKSB7Ci0tCWVjaG8gLW4gJCJTYXZpbmcgJGRlc2MgKCRwcm9nKTogIgotKwllY2hvIC1uICJTYXZpbmcgJGRlc2MgKCRwcm9nKTogIgotIAlfX0VYRUNfUEFUSF9fL2FycHRhYmxlcy1zYXZlID4gX19TWVNDT05GSUdfXy9hcnB0YWJsZXMgfHwgUkVUVkFMPTEKLSAKLSAJaWYgWyAkUkVUVkFMIC1lcSAwIF07IHRoZW4KLS0JCXN1Y2Nlc3MgIiRwcm9nIHNhdmVkIgotKwkJZWNobyAiJHByb2cgc2F2ZWQiCi0gCWVsc2UKLS0JCWZhaWx1cmUgIiRwcm9nIHNhdmVkIgotKwkJZWNobyAiJHByb2cgaXMgbm90IHNhdmVkIgotIAlmaQotLQllY2hvCi0gfQotIAotIGNhc2UgIiQxIiBpbgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9hcnB0YWJsZXMvYXJwdGFibGVzL2FycHRhYmxlcy1yZW1vdmUtYmFzaGlzbS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYXJwdGFibGVzL2FycHRhYmxlcy9hcnB0YWJsZXMtcmVtb3ZlLWJhc2hpc20ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzMzI2NTguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9hcnB0YWJsZXMvYXJwdGFibGVzL2FycHRhYmxlcy1yZW1vdmUtYmFzaGlzbS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLUZyb20gY2QzMTJiYzBlMzY4NjQwNDQyODg3OGQyM2I4ODg4Y2JhMDlhMjBlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxOCBTZXAgMjAxNCAxOTo0Njo1OCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBhcnB0YWJsZXMuc3lzdjogcmVtb3ZlIGJhc2hpc20KLQotVXNlICIuIiB0byByZXBsYWNlIG9mICJzb3VyY2UiLCBhbmQgY2hhbmdlIC9iaW4vYmFzaCB0byAvYmluL3NoLCB0aGUKLWVjaG8gJCJmb28iIHdvcmtzIHdlbGwgaW4gYnVzeWJveC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gYXJwdGFibGVzLnN5c3YgfCAgICA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYXJwdGFibGVzLnN5c3YgYi9hcnB0YWJsZXMuc3lzdgotaW5kZXggN2E5MGJkMi4uNzcxMDM3NiAxMDA2NDQKLS0tLSBhL2FycHRhYmxlcy5zeXN2Ci0rKysgYi9hcnB0YWJsZXMuc3lzdgotQEAgLTEsNCArMSw0IEBACi0tIyEvYmluL2Jhc2gKLSsjIS9iaW4vc2gKLSAjCi0gIyBpbml0IHNjcmlwdCBmb3IgYXJwdGFibGVzCi0gIwotQEAgLTExLDcgKzExLDcgQEAKLSAjCi0gIyBjb25maWc6IF9fU1lTQ09ORklHX18vYXJwdGFibGVzCi0gCi0tc291cmNlIC9ldGMvaW5pdC5kL2Z1bmN0aW9ucwotKy4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCi0gIyBzb3VyY2UgL2V0Yy9zeXNjb25maWcvbmV0d29yawotIAotICMgQ2hlY2sgdGhhdCBuZXR3b3JraW5nIGlzIHVwLgotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYXJwdGFibGVzL2FycHRhYmxlc19naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2FycHRhYmxlcy9hcnB0YWJsZXNfZ2l0LmJiCmluZGV4IGNlYzFkMWYuLmMwMmExOTkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYXJwdGFibGVzL2FycHRhYmxlc19naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9hcnB0YWJsZXMvYXJwdGFibGVzX2dpdC5iYgpAQCAtMiwxNSArMiwxMyBAQAogU0VDVElPTiA9ICJuZXQiCiBMSUNFTlNFID0gIkdQTC0yLjAiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9HUEwtMi4wO21kNT04MDFmODA5ODBkMTcxZGQ2NDI1NjEwODMzYTIyZGJlNiIKLVNSQ1JFViA9ICJmNGFiOGY2M2YxMWE3MmYxNDY4N2E2NjQ2ZDA0YWUxYmFlM2ZhNDVmIgotUFYgPSAiMC4wLjQrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiZWZhZTg5NDllMzFmOGIyZWI2MjkwZjM3N2EyODM4NGNlY2FmMTA1YSIKK1BWID0gIjAuMC41K2dpdCR7U1JDUFZ9IgogCiBTUkNfVVJJID0gIiBcCiAgICAgZ2l0Oi8vZ2l0Lm5ldGZpbHRlci5vcmcvYXJwdGFibGVzIFwKICAgICBmaWxlOi8vMDAwMS1Vc2UtQVJQQ0ZMQUdTLWZvci1wYWNrYWdlLXNwZWNpZmljLWNvbXBpbGVyLWZsYWdzLnBhdGNoIFwKLSAgICBmaWxlOi8vYXJwdGFibGVzLWluaXQtYnVzeWJveC5wYXRjaCBcCiAgICAgZmlsZTovL2FycHRhYmxlcy1hcnB0LWdldC10YXJnZXQtZml4LnBhdGNoIFwKLSAgICBmaWxlOi8vYXJwdGFibGVzLXJlbW92ZS1iYXNoaXNtLnBhdGNoIFwKICAgICBmaWxlOi8vYXJwdGFibGVzLnNlcnZpY2UgXAogIgogU1JDX1VSSVthcnB0YWJsZXMubWQ1c3VtXSA9ICIxZDRhYjA1NzYxZjA2M2IwNzUxNjQ1ZDhmMmI4ZjhlNSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlcy9jbWFrZS1pbnN0YWxsLWxpYmNhcmVzLnBjLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzL2NtYWtlLWluc3RhbGwtbGliY2FyZXMucGMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjYWRiMmIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzL2NtYWtlLWluc3RhbGwtbGliY2FyZXMucGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotRnJvbSAxMjQxNDMwNDI0NWNjZTZlZjBlOGI5NTQ3OTQ5YmU1MTA5ODQ1MzUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMjQgSnVsIDIwMTggMTM6MzM6MzMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY21ha2U6IEluc3RhbGwgbGliY2FyZXMucGMKLQotUHJlcGFyZSBhbmQgaW5zdGFsbCBsaWJjYXJlcy5wYyBmaWxlIGR1cmluZyBjbWFrZSBidWlsZCwgc28gbGlicmFyaWVzCi11c2luZyBwa2ctY29uZmlnIHRvIGZpbmQgbGliY2FyZXMgd2lsbCBub3QgZmFpbC4KLQotU2lnbmVkLW9mZi1ieTogQWxleGV5IEZpcmFnbyA8YWxleGV5X2ZpcmFnb0BtZW50b3IuY29tPgotCi11cGRhdGUgdG8gMS4xNC4wLCBmaXggcGF0Y2ggd2FybmluZwotCi1TaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgotLS0tCi0gQ01ha2VMaXN0cy50eHQgICAgICB8IDIzICsrKysrKysrKysrKysrKysrKysrKysrCi0gbGliY2FyZXMucGMuY21ha2VpbiB8IDIwICsrKysrKysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxpYmNhcmVzLnBjLmNtYWtlaW4KLQotZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDYwYTg4MGMuLjcxZWFhNTMgMTAwNjQ0Ci0tLS0gYS9DTWFrZUxpc3RzLnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC0xOTMsMjIgKzE5MywzMCBAQCBBRERfREVGSU5JVElPTlMoJHtTWVNGTEFHU30pCi0gCi0gCi0gIyBUZWxsIEMtQXJlcyBhYm91dCBsaWJyYXJpZXMgdG8gZGVwZW5kIG9uCi0rIyBBbHNvIHBhc3MgdGhlc2UgbGlicmFyaWVzIHRvIHBrZy1jb25maWcgZmlsZQotK1NFVChDQVJFU19QUklWQVRFX0xJQlNfTElTVCkKLSBJRiAoSEFWRV9MSUJSRVNPTFYpCi0gCUxJU1QgKEFQUEVORCBDQVJFU19ERVBFTkRFTlRfTElCUyByZXNvbHYpCi0rCUxJU1QgKEFQUEVORCBDQVJFU19QUklWQVRFX0xJQlNfTElTVCAiLWxyZXNvbHYiKQotIEVORElGICgpCi0gSUYgKEhBVkVfTElCTlNMKQotIAlMSVNUIChBUFBFTkQgQ0FSRVNfREVQRU5ERU5UX0xJQlMgbnNsKQotKwlMSVNUIChBUFBFTkQgQ0FSRVNfUFJJVkFURV9MSUJTX0xJU1QgIi1sbnNsIikKLSBFTkRJRiAoKQotIElGIChIQVZFX0xJQlNPQ0tFVCkKLSAJTElTVCAoQVBQRU5EIENBUkVTX0RFUEVOREVOVF9MSUJTIHNvY2tldCkKLSsJTElTVCAoQVBQRU5EIENBUkVTX1BSSVZBVEVfTElCU19MSVNUICItbHNvY2tldCIpCi0gRU5ESUYgKCkKLSBJRiAoSEFWRV9MSUJSVCkKLSAJTElTVCAoQVBQRU5EIENBUkVTX0RFUEVOREVOVF9MSUJTIHJ0KQotKwlMSVNUIChBUFBFTkQgQ0FSRVNfUFJJVkFURV9MSUJTX0xJU1QgIi1scnQiKQotIEVORElGICgpCi0gSUYgKFdJTjMyKQotIAlMSVNUIChBUFBFTkQgQ0FSRVNfREVQRU5ERU5UX0xJQlMgd3MyXzMyKQotKwlMSVNUIChBUFBFTkQgQ0FSRVNfUFJJVkFURV9MSUJTX0xJU1QgIi1sd3MyXzMyIikKLSBFTkRJRiAoKQotIAotK3N0cmluZyAoUkVQTEFDRSAiOyIgIiAiIENBUkVTX1BSSVZBVEVfTElCUyAiJHtDQVJFU19QUklWQVRFX0xJQlNfTElTVH0iKQotIAotICMgV2hlbiBjaGVja2luZyBmb3Igc3ltYm9scywgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2Ugc2V0IHRoZSBwcm9wZXIKLSAjIGhlYWRlcnMsIGxpYnJhcmllcywgYW5kIGRlZmluaXRpb25zIGZvciB0aGUgZGV0ZWN0aW9uIHRvIHdvcmsgcHJvcGVybHkKLUBAIC01MTQsNiArNTIyLDE1IEBAIENPTkZJR1VSRV9GSUxFIChhcmVzX2J1aWxkLmguY21ha2UgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2FyZXNfYnVpbGQuaCkKLSAjIFdyaXRlIGFyZXNfY29uZmlnLmggY29uZmlndXJhdGlvbiBmaWxlLiAgVGhpcyBpcyB1c2VkIG9ubHkgZm9yIHRoZSBidWlsZC4KLSBDT05GSUdVUkVfRklMRSAoYXJlc19jb25maWcuaC5jbWFrZSAke1BST0pFQ1RfQklOQVJZX0RJUn0vYXJlc19jb25maWcuaCkKLSAKLSsjIFBhc3MgcmVxdWlyZWQgQ0ZMQUdTIHRvIHBrZy1jb25maWcgaW4gY2FzZSBvZiBzdGF0aWMgbGlicmFyeQotK0lGIChDQVJFU19TVEFUSUMpCi0rICAgICAgIFNFVCAoQ1BQRkxBR19DQVJFU19TVEFUSUNMSUIgIi1EQ0FSRVNfU1RBVElDTElCIikKLStFTkRJRigpCi0rCi0rIyBXcml0ZSBhcmVzX2NvbmZpZy5oIGNvbmZpZ3VyYXRpb24gZmlsZS4gIFRoaXMgaXMgdXNlZCBvbmx5IGZvciB0aGUgYnVpbGQuCi0rQ09ORklHVVJFX0ZJTEUgKGxpYmNhcmVzLnBjLmNtYWtlaW4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2xpYmNhcmVzLnBjIEBPTkxZKQotKwotKwotIAotICMgVFJBTlNGT1JNX01BS0VGSUxFX0lOQwotICMKLUBAIC02NjQsNiArNjgxLDEyIEBAIElGIChDQVJFU19JTlNUQUxMKQotIAlJTlNUQUxMIChGSUxFUyAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2xpYmNhcmVzLnBjIiBERVNUSU5BVElPTiAiJHtDTUFLRV9JTlNUQUxMX0xJQkRJUn0vcGtnY29uZmlnIikKLSBFTkRJRiAoKQotIAotKyMgcGtnLWNvbmZpZyBmaWxlCi0rSUYgKENBUkVTX0lOU1RBTEwpCi0rICAgICAgIFNFVCAoUEtHQ09ORklHX0lOU1RBTExfRElSICIke0NNQUtFX0lOU1RBTExfTElCRElSfS9wa2djb25maWciKQotKyAgICAgICBJTlNUQUxMIChGSUxFUyAiJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L2xpYmNhcmVzLnBjIiBERVNUSU5BVElPTiAke1BLR0NPTkZJR19JTlNUQUxMX0RJUn0pCi0rRU5ESUYgKCkKLSsKLSAjIExlZ2FjeSBjaGFpbi1idWlsZGluZyB2YXJpYWJsZXMgKHByb3ZpZGVkIGZvciBjb21wYXRpYmlsaXR5IHdpdGggb2xkIGNvZGUpLgotICMgRG9uJ3QgdXNlIHRoZXNlLCBleHRlcm5hbCBjb2RlIHNob3VsZCBiZSB1cGRhdGVkIHRvIHJlZmVyIHRvIHRoZSBhbGlhc2VzIGRpcmVjdGx5IChlLmcuLCBDYXJlczo6Y2FyZXMpLgotIFNFVCAoQ0FSRVNfRk9VTkQgMSBDQUNIRSBJTlRFUk5BTCAiQ0FSRVMgTElCUkFSWSBGT1VORCIpCi1kaWZmIC0tZ2l0IGEvbGliY2FyZXMucGMuY21ha2VpbiBiL2xpYmNhcmVzLnBjLmNtYWtlaW4KLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4zNTc5MjU2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9saWJjYXJlcy5wYy5jbWFrZWluCi1AQCAtMCwwICsxLDIwIEBACi0rIyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotKyMgUHJvamVjdCAgICAgICAgX19fICAgICAgIF9fIF8gXyBfXyBfX18gIF9fXyAKLSsjICAgICAgICAgICAgICAgLyBfX3xfX19fIC8gX2AgfCAnX18vIF8gXC8gX198Ci0rIyAgICAgICAgICAgICAgfCAoX3xfX19fX3wgKF98IHwgfCB8ICBfXy9cX18gXAotKyMgICAgICAgICAgICAgICBcX19ffCAgICAgXF9fLF98X3wgIFxfX198fF9fXy8KLSsjCi0rcHJlZml4PUBDTUFLRV9JTlNUQUxMX1BSRUZJWEAKLStleGVjX3ByZWZpeD1AQ01BS0VfSU5TVEFMTF9QUkVGSVhACi0rbGliZGlyPUBDTUFLRV9JTlNUQUxMX0ZVTExfTElCRElSQAotK2luY2x1ZGVkaXI9QENNQUtFX0lOU1RBTExfRlVMTF9JTkNMVURFRElSQAotKwotK05hbWU6IGMtYXJlcwotK1VSTDogaHR0cDovL2RhbmllbC5oYXh4LnNlL3Byb2plY3RzL2MtYXJlcy8KLStEZXNjcmlwdGlvbjogYXN5bmNocm9ub3VzIEROUyBsb29rdXAgbGlicmFyeQotK1ZlcnNpb246IEBWRVJTSU9OQAotK1JlcXVpcmVzOiAKLStSZXF1aXJlcy5wcml2YXRlOiAKLStDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfSBAQ1BQRkxBR19DQVJFU19TVEFUSUNMSUJACi0rTGliczogLUwke2xpYmRpcn0gLWxjYXJlcwotK0xpYnMucHJpdmF0ZTogQENBUkVTX1BSSVZBVEVfTElCU0AKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzXzEuMTUuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlc18xLjE1LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0Mzc1MjkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzXzEuMTUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLSMgQ29weXJpZ2h0IChjKSAyMDEyLTIwMTQgTEcgRWxlY3Ryb25pY3MsIEluYy4KLVNVTU1BUlkgPSAiYy1hcmVzIGlzIGEgQyBsaWJyYXJ5IHRoYXQgcmVzb2x2ZXMgbmFtZXMgYXN5bmNocm9ub3VzbHkuIgotSE9NRVBBR0UgPSAiaHR0cDovL2RhbmllbC5oYXh4LnNlL3Byb2plY3RzL2MtYXJlcy8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PWZiOTk3NDU0YzhkNjJhYTZhNDdmMDdhOGNkNDhiMDA2IgotCi1QViA9ICIxLjE1LjArZ2l0ciR7U1JDUFZ9IgotCi1TUkNfVVJJID0gIlwKLSAgICBnaXQ6Ly9naXRodWIuY29tL2MtYXJlcy9jLWFyZXMuZ2l0IFwKLSAgICBmaWxlOi8vY21ha2UtaW5zdGFsbC1saWJjYXJlcy5wYy5wYXRjaCBcCi0iCi1TUkNSRVYgPSAiZTk4MjkyNGFjZWU3ZjczMTNiNGJhYTRlZTVlYzAwMGM1ZTM3M2MzMCIKLQotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiY2FyZXMtKD9QPHB2ZXI+XGQrXyhcZF8/KSspIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwotCi1QQUNLQUdFUyA9KyAiJHtQTn0tdXRpbHMiCi0KLUZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jaWZzL2NpZnMtdXRpbHMvMDAwMS1CdWdmaXgtTW9kaWZ5LXRoZS1kaXItb2YtaW5zdGFsbC1leGVjLWhvb2stYW5kLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jaWZzL2NpZnMtdXRpbHMvMDAwMS1CdWdmaXgtTW9kaWZ5LXRoZS1kaXItb2YtaW5zdGFsbC1leGVjLWhvb2stYW5kLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIzM2FlNDAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2NpZnMvY2lmcy11dGlscy8wMDAxLUJ1Z2ZpeC1Nb2RpZnktdGhlLWRpci1vZi1pbnN0YWxsLWV4ZWMtaG9vay1hbmQucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSBmNjFmNWY4YTMyODIwNzg2N2I1YzUyM2IxYzZiZWY2YWFlY2FhYjg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogV2FuZyBNaW5neXUgPHdhbmdteUBjbi5mdWppdHN1LmNvbT4KK0RhdGU6IFNhdCwgMTUgRmViIDIwMjAgMTY6MDU6NTggKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gQnVnZml4OiBNb2RpZnkgdGhlIGRpciBvZiBpbnN0YWxsLWV4ZWMtaG9vayBhbmQKKyBpbnN0YWxsLWRhdGEtaG9vaworCitFcnJvciBtZXNzYWdlOgorKGNkIC9zYmluICYmIGxuIC1zZiBtb3VudC5jaWZzIG1vdW50LnNtYjMpCisgIC95b2N0by93b3JrMDAxL2Zuc3Qvd2FuZ215L2J1aWxkL3RtcC9ob3N0dG9vbHMvaW5zdGFsbCAtYyBtb3VudC5jaWZzCisnL3lvY3RvL3dvcmswMDEvZm5zdC93YW5nbXkvYnVpbGQvdG1wL3dvcmsvY29yZTItNjQtcG9reS1saW51eC9jaWZzLXV0aWxzLzYuMTAtcjAvaW1hZ2Uvc2JpbicKK21ha2UgIGluc3RhbGwtZGF0YS1ob29rCitsbjogZmFpbGVkIHRvIGNyZWF0ZSBzeW1ib2xpYyBsaW5rICdtb3VudC5zbWIzJzogUGVybWlzc2lvbiBkZW5pZWQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFdhbmcgTWluZ3l1IDx3YW5nbXlAY24uZnVqaXRzdS5jb20+CistLS0KKyBNYWtlZmlsZS5hbSB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQoraW5kZXggZmU5Y2QzNC4uZTliZTZiMyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTExOSwxMSArMTE5LDExIEBAIGVuZGlmCisgU1VCRElSUyA9IGNvbnRyaWIKKyAKKyBpbnN0YWxsLWV4ZWMtaG9vazoKKy0JKGNkICQoUk9PVFNCSU5ESVIpICYmIGxuIC1zZiBtb3VudC5jaWZzIG1vdW50LnNtYjMpCisrCShjZCAkKERFU1RESVIpJChST09UU0JJTkRJUikgJiYgbG4gLXNmIG1vdW50LmNpZnMgbW91bnQuc21iMykKKyAKKyBpbnN0YWxsLWRhdGEtaG9vazoKKy0JKGNkICQobWFuOGRpcikgJiYgbG4gLXNmIG1vdW50LmNpZnMuOCBtb3VudC5zbWIzLjgpCisrCSh0ZXN0IC1uICIkKG1hbl9NQU5TKSIgfHwgZXhpdCAwOyBjZCAkKERFU1RESVIpJChtYW44ZGlyKSAmJiBsbiAtc2YgbW91bnQuY2lmcy44IG1vdW50LnNtYjMuOCkKKyAKKyB1bmluc3RhbGwtaG9vazoKKy0JKGNkICQoUk9PVFNCSU5ESVIpICYmIHJtIC1mICQoUk9PVFNCSU5ESVIpL21vdW50LnNtYjMpCistCShjZCAkKG1hbjhkaXIpICYmIHJtIC1mICQobWFuOGRpcikvbW91bnQuc21iMy44KQorKwkoY2QgJChERVNURElSKSQoUk9PVFNCSU5ESVIpICYmIHJtIC1mICQoREVTVERJUikkKFJPT1RTQklORElSKS9tb3VudC5zbWIzKQorKwkodGVzdCAtbiAiJChtYW5fTUFOUykiIHx8IGV4aXQgMDsgY2QgJChERVNURElSKSQobWFuOGRpcikgJiYgcm0gLWYgJChERVNURElSKSQobWFuOGRpcikvbW91bnQuc21iMy44KQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9jaWZzL2NpZnMtdXRpbHNfNi4xMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2lmcy9jaWZzLXV0aWxzXzYuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGQ4MmVlNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2lmcy9jaWZzLXV0aWxzXzYuMTAuYmIKQEAgLTAsMCArMSwzOSBAQAorREVTQ1JJUFRJT04gPSAiQSBhIHBhY2thZ2Ugb2YgdXRpbGl0aWVzIGZvciBkb2luZyBhbmQgbWFuYWdpbmcgbW91bnRzIG9mIHRoZSBMaW51eCBDSUZTIGZpbGVzeXN0ZW0uIgorSE9NRVBBR0UgPSAiaHR0cDovL3dpa2kuc2FtYmEub3JnL2luZGV4LnBocC9MaW51eENJRlNfdXRpbHMiCitTRUNUSU9OID0gIm90aGVyb3NmcyIKK0xJQ0VOU0UgPSAiR1BMdjMgJiBMR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworUFYgPSAiNi4xMCIKKworU1JDUkVWID0gIjVmZjVmYzJlY2MxMDM1M2ZkMzlhZDUwOGRiNWMyODI4ZmQyZDhkOWEiCitTUkNfVVJJID0gImdpdDovL2dpdC5zYW1iYS5vcmcvY2lmcy11dGlscy5naXQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitERVBFTkRTICs9ICJsaWJ0YWxsb2MiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW2NhcF0gPSAiLS13aXRoLWxpYmNhcCwtLXdpdGhvdXQtbGliY2FwLGxpYmNhcCIKKyMgd2hlbiBlbmFibGVkLCBpdCBjcmVhdGVzICR7YmluZGlyfS9jaWZzY3JlZHMgYW5kIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5IGluIGRvX2luc3RhbGxfYXBwZW5kIGlzIG5lZWRlZAorUEFDS0FHRUNPTkZJR1tjaWZzY3JlZHNdID0gIi0tZW5hYmxlLWNpZnNjcmVkcywtLWRpc2FibGUtY2lmc2NyZWRzLGtleXV0aWxzIgorIyB3aGVuIGVuYWJsZWQsIGl0IGNyZWF0ZXMgJHtzYmluZGlyfS9jaWZzLnVwY2FsbCBhbmQgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgaW4gZG9faW5zdGFsbF9hcHBlbmQgaXMgbmVlZGVkCitQQUNLQUdFQ09ORklHW2NpZnN1cGNhbGxdID0gIi0tZW5hYmxlLWNpZnN1cGNhbGwsLS1kaXNhYmxlLWNpZnN1cGNhbGwsa3JiNSBsaWJ0YWxsb2Mga2V5dXRpbHMiCitQQUNLQUdFQ09ORklHW2NpZnNpZG1hcF0gPSAiLS1lbmFibGUtY2lmc2lkbWFwLC0tZGlzYWJsZS1jaWZzaWRtYXAsa2V5dXRpbHMgc2FtYmEiCitQQUNLQUdFQ09ORklHW2NpZnNhY2xdID0gIi0tZW5hYmxlLWNpZnNhY2wsLS1kaXNhYmxlLWNpZnNhY2wsc2FtYmEiCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLS1lbmFibGUtcGFtIC0td2l0aC1wYW1kaXI9JHtiYXNlX2xpYmRpcn0vc2VjdXJpdHksLS1kaXNhYmxlLXBhbSxsaWJwYW0ga2V5dXRpbHMiCisKK1NSQ19VUkkgKz0gIiBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1CdWdmaXgtTW9kaWZ5LXRoZS1kaXItb2YtaW5zdGFsbC1leGVjLWhvb2stYW5kLnBhdGNoIFwKKyAgICAgICAgICAgICIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgUmVtb3ZlIGVtcHR5IC91c3IvYmluIGFuZCAvdXNyL3NiaW4gZGlyZWN0b3JpZXMgc2luY2UgdGhlIG1vdW50IGhlbHBlcgorICAgICMgaXMgaW5zdGFsbGVkIHRvIC9zYmluCisgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7YmluZGlyfSAke0R9JHtzYmluZGlyfQorfQorCitGSUxFU18ke1BOfSArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Ly5kZWJ1ZyIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtY2lmcyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2lmcy9jaWZzLXV0aWxzXzYuOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvY2lmcy9jaWZzLXV0aWxzXzYuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFkY2IyMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2NpZnMvY2lmcy11dGlsc182LjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJBIGEgcGFja2FnZSBvZiB1dGlsaXRpZXMgZm9yIGRvaW5nIGFuZCBtYW5hZ2luZyBtb3VudHMgb2YgdGhlIExpbnV4IENJRlMgZmlsZXN5c3RlbS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd2lraS5zYW1iYS5vcmcvaW5kZXgucGhwL0xpbnV4Q0lGU191dGlscyIKLVNFQ1RJT04gPSAib3RoZXJvc2ZzIgotTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1QViA9ICI2LjkiCi0KLVNSQ1JFViA9ICI5YThjMjFhZDllNDUxMGE4M2EzYTQxZjdhMDRmNzYzYTRmZTllYzA5IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXQuc2FtYmEub3JnL2NpZnMtdXRpbHMuZ2l0IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotREVQRU5EUyArPSAibGlidGFsbG9jIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tjYXBdID0gIi0td2l0aC1saWJjYXAsLS13aXRob3V0LWxpYmNhcCxsaWJjYXAiCi0jIHdoZW4gZW5hYmxlZCwgaXQgY3JlYXRlcyAke2JpbmRpcn0vY2lmc2NyZWRzIGFuZCAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSBpbiBkb19pbnN0YWxsX2FwcGVuZCBpcyBuZWVkZWQKLVBBQ0tBR0VDT05GSUdbY2lmc2NyZWRzXSA9ICItLWVuYWJsZS1jaWZzY3JlZHMsLS1kaXNhYmxlLWNpZnNjcmVkcyxrZXl1dGlscyIKLSMgd2hlbiBlbmFibGVkLCBpdCBjcmVhdGVzICR7c2JpbmRpcn0vY2lmcy51cGNhbGwgYW5kIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5IGluIGRvX2luc3RhbGxfYXBwZW5kIGlzIG5lZWRlZAotUEFDS0FHRUNPTkZJR1tjaWZzdXBjYWxsXSA9ICItLWVuYWJsZS1jaWZzdXBjYWxsLC0tZGlzYWJsZS1jaWZzdXBjYWxsLGtyYjUgbGlidGFsbG9jIGtleXV0aWxzIgotUEFDS0FHRUNPTkZJR1tjaWZzaWRtYXBdID0gIi0tZW5hYmxlLWNpZnNpZG1hcCwtLWRpc2FibGUtY2lmc2lkbWFwLGtleXV0aWxzIHNhbWJhIgotUEFDS0FHRUNPTkZJR1tjaWZzYWNsXSA9ICItLWVuYWJsZS1jaWZzYWNsLC0tZGlzYWJsZS1jaWZzYWNsLHNhbWJhIgotUEFDS0FHRUNPTkZJR1twYW1dID0gIi0tZW5hYmxlLXBhbSAtLXdpdGgtcGFtZGlyPSR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5LC0tZGlzYWJsZS1wYW0sbGlicGFtIGtleXV0aWxzIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBSZW1vdmUgZW1wdHkgL3Vzci9iaW4gYW5kIC91c3Ivc2JpbiBkaXJlY3RvcmllcyBzaW5jZSB0aGUgbW91bnQgaGVscGVyCi0gICAgIyBpcyBpbnN0YWxsZWQgdG8gL3NiaW4KLSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtiaW5kaXJ9ICR7RH0ke3NiaW5kaXJ9Ci19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2Jhc2VfbGliZGlyfS9zZWN1cml0eSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvLmRlYnVnIgotUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1jaWZzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kbnNzZWMtY29uZi9kbnNzZWMtY29uZl8yLjAyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kbnNzZWMtY29uZi9kbnNzZWMtY29uZl8yLjAyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYTU5YmQyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG5zc2VjLWNvbmYvZG5zc2VjLWNvbmZfMi4wMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAiRE5TU0VDIGFuZCBETFYgY29uZmlndXJhdGlvbiBhbmQgcHJpbWluZyB0b29sIgotREVTQ1JJUFRJT04gPSAiXAotRE5TU0VDIGNvbmZpZ3VyYXRpb24gYW5kIHByaW1pbmcgdG9vbC4gS2V5cyBhcmUgcmVxdWlyZWQgdW50aWwgdGhlIHJvb3QgXAotaXMgc2lnbmVkLCBhcyB3ZWxsIGFzIGZvciBsb2NhbCB1bnB1Ymxpc2hlZCBETlNTRUMga2V5cyB0byBiZSBwcmVsb2FkZWQgXAotaW50byB0aGUgcmVjdXJzaXZlIG5hbWVzZXJ2ZXIuIFRoZXNlIEROU1NFQyBjb25maWd1cmF0aW9uIGZpbGVzIGNhbiBiZSBcCi1kaXJlY3RseSBpbmNsdWRlZCBpbiB0aGUgYmluZCBvciB1bmJvdW5kIG5hbWVzZXJ2ZXIgY29uZmlndXJhdGlvbiBmaWxlcy4gXAotZG5zc2VjLWNvbmYgaW5jbHVkZXMgYSBjb21tYW5kbGluZSBjb25maWd1cmF0aW9uIGNsaWVudCBmb3IgQmluZCBhbmQgXAotVW5ib3VuZCwga25vd24gRE5TU0VDIGtleXMsIFVSTCdzIHRvIG9mZmljaWFsIHB1YmxpY2F0aW9uIHBhZ2VzIG9mIGtleXMsIFwKLWFuZCBoYXJ2ZXN0ZWQga2V5cywgYXMgd2VsbCBhIHNjcmlwdCB0byBoYXJ2ZXN0IEROU0tFWSdzIGZyb20gRE5TLiBcCi1TZWUgYWxzbzogc3lzdGVtLWNvbmZpZy1kbnNzZWMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20veGVsZXJhbmNlL2Ruc3NlYy1jb25mIgotU0VDVElPTiA9ICJuZXQiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIgotREVQRU5EUyArPSAieG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIFwKLSAgICAgICAgICAgIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3hlbGVyYW5jZS9kbnNzZWMtY29uZi5naXQiCi1TUkNSRVYgPSAiOGU3OTk2ODM3MzZiNGE3YjVlNWU3OGY5OGZiYTBhNmY0ODM5MzUzNyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9faW5zdGFsbCAoKSB7Ci0gICAgcm0gLXJmICR7RH0KLSAgICBtYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IEVUQ0RJUj0ke0R9JHtzeXNjb25mZGlyfSBpbnN0YWxsCi0gICAgIyBXZSBubyBsb25nZXIgc2hpcCB0cnVzdCBhbmNob3JzLiBNb3N0IG9mIHRoZXNlIGFyZSBpbiB0aGUgRExWIFJlZ2lzdHJ5IG5vdy4KLSAgICAjIGFuZCBpdCBwcmV2ZW50cyB0aGUgcHJvYmxlbSBvZiBzaGlwcGluZyBvdXRkYXRlZCB0cnVzdCBhbmNob3JzLgotICAgICMgRm9yIERMViwgd2Ugc2hpcCB0aGUgSVNDIERMViBSZWdpc3RyeSBrZXkKLSAgICBybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vcGtpL2Ruc3NlYy1rZXlzL2hhcnZlc3QvKgotICAgIHJtIC1yZiAke0R9JHtzeXNjb25mZGlyfS9wa2kvZG5zc2VjLWtleXMvcHJvZHVjdGlvbi9yZXZlcnNlLyoKLSAgICBpbnN0YWxsIC1kIC1tIDA3NTUgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCi0gICAgaW5zdGFsbCAtbSAwNjQ0IHBhY2thZ2luZy9mZWRvcmEvZG5zc2VjLnN5c2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvZG5zc2VjCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZG92ZWNvdC9kb3ZlY290XzIuMi4zNi40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kb3ZlY290L2RvdmVjb3RfMi4yLjM2LjQuYmIKaW5kZXggMjM5YTI1Mi4uMGY3ZmFkMiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kb3ZlY290L2RvdmVjb3RfMi4yLjM2LjQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9kb3ZlY290L2RvdmVjb3RfMi4yLjM2LjQuYmIKQEAgLTE5LDcgKzE5LDcgQEAKIENGTEFHUyArPSAiLUkke1NUQUdJTkdfSU5DRElSfS90aXJwYyIKIExERkxBR1MgKz0gIi1sdGlycGMiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVzZXJhZGQKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kIHVzZXJhZGQgZ2V0dGV4dAogCiBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnbGRhcCBwYW0nLCBkKX0iCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZHJiZC9kcmJkLXV0aWxzXzkuMTEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZHJiZC9kcmJkLXV0aWxzXzkuMTEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg2YjBmNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RyYmQvZHJiZC11dGlsc185LjExLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1TVU1NQVJZID0gIkRpc3RyaWJ1dGVkIGJsb2NrIGRldmljZSBkcml2ZXIgZm9yIExpbnV4IgotREVTQ1JJUFRJT04gPSAiRFJCRCBtaXJyb3JzIGEgYmxvY2sgZGV2aWNlIG92ZXIgdGhlIG5ldHdvcmsgdG8gYW5vdGhlciBtYWNoaW5lLlwKLURSQkQgbWlycm9ycyBhIGJsb2NrIGRldmljZSBvdmVyIHRoZSBuZXR3b3JrIHRvIGFub3RoZXIgbWFjaGluZS5cCi1UaGluayBvZiBpdCBhcyBuZXR3b3JrZWQgcmFpZCAxLiBJdCBpcyBhIGJ1aWxkaW5nIGJsb2NrIGZvclwKLXNldHRpbmcgdXAgaGlnaCBhdmFpbGFiaWxpdHkgKEhBKSBjbHVzdGVycy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmRyYmQub3JnLyIKLVNFQ1RJT04gPSAiYWRtaW4iCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1NzRjNjk2NWFlNWY1ODNlNTU4ODBlMzk3ZmJiMDE4IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vTElOQklUL2RyYmQtdXRpbHM7bmFtZT1kcmJkLXV0aWxzIFwKLSAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9MSU5CSVQvZHJiZC1oZWFkZXJzO25hbWU9ZHJiZC1oZWFkZXJzO2Rlc3RzdWZmaXg9Z2l0L2RyYmQtaGVhZGVycyBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCd1c3JtZXJnZScsJ2ZpbGU6Ly8wMDAxLWRyYmQtdXRpbHMtc3VwcG9ydC11c3JtZXJnZS5wYXRjaCcsJycsZCl9IFwKLSAgICAgICAgICAiCi0jIHY5LjExLjAKLVNSQ1JFVl9kcmJkLXV0aWxzID0gIjYzMDkyNzUxZTc2ZTFmYmEzOTdlNTNkZjRiZTVjMTE2MWI4M2EyMjMiCi1TUkNSRVZfZHJiZC1oZWFkZXJzID0gImQxMDBlZTAxYmY1YWE4ZDUyMjA3NjdlNGUzNWM0MjI0ZmFhOGQ4NjUiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vTElOQklUL2RyYmQtdXRpbHMvcmVsZWFzZXMiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJkcmJkLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBzeXN0ZW1kCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgICAgICAgICAgICAgIC0td2l0aC1pbml0ZGlyPS9ldGMvaW5pdC5kICAgIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcGFjZW1ha2VyICAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LXJnbWFuYWdlciAgICAgICAgICAgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC1iYXNoY29tcGxldGlvbiAgICAgIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtZGlzdHJvIGRlYmlhbiAgICAgICAgICBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWluaXRzY3JpcHR0eXBlPWJvdGggICAgXAotICAgICAgICAgICAgICAgIC0td2l0aC1zeXN0ZW1kdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbWFudWFsIFwKLSAgICAgICAgICAgICAgICIKLQotIyBJZiB3ZSBoYXZlIGluaGVyaXRlZCByZXByb2R1Y2libGVfYnVpbGQsIHdlIHdhbnQgdG8gdXNlIGl0LgotZXhwb3J0IFdBTlRfRFJCRF9SRVBST0RVQ0lCTEVfQlVJTEQgPSAieWVzIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIGRvbid0IGluc3RhbGwgZW1wdHkgL3Zhci9sb2NrIGFuZCAvdmFyL3J1biB0byBhdm9pZCBjb25mbGljdCB3aXRoIGJhc2UtZmlsZXMKLSAgICBybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbG9jawotICAgIHJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgcGVybC1tb2R1bGUtZXhwb3J0ZXIgcGVybC1tb2R1bGUtY29uc3RhbnQgcGVybC1tb2R1bGUtb3ZlcmxvYWRpbmcgcGVybC1tb2R1bGUtZXhwb3J0ZXItaGVhdnkiCi0KLSMgVGhlIGRyYmQgaXRlbXMgYXJlIGV4cGxpY2l0bHkgcHV0IHVuZGVyIC9saWIgd2hlbiBpbnN0YWxsZWQuCi0jCi1GSUxFU18ke1BOfSArPSAiL3J1biIKLUZJTEVTXyR7UE59ICs9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2RyYmQgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L2RyYmQgXAotICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L3RtcGZpbGVzLmQiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZHJiZC8uZGVidWciCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RyYmQvZHJiZC11dGlsc185LjEyLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2RyYmQvZHJiZC11dGlsc185LjEyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjgzZjY4ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZHJiZC9kcmJkLXV0aWxzXzkuMTIuMC5iYgpAQCAtMCwwICsxLDU4IEBACitTVU1NQVJZID0gIkRpc3RyaWJ1dGVkIGJsb2NrIGRldmljZSBkcml2ZXIgZm9yIExpbnV4IgorREVTQ1JJUFRJT04gPSAiRFJCRCBtaXJyb3JzIGEgYmxvY2sgZGV2aWNlIG92ZXIgdGhlIG5ldHdvcmsgdG8gYW5vdGhlciBtYWNoaW5lLlwKK0RSQkQgbWlycm9ycyBhIGJsb2NrIGRldmljZSBvdmVyIHRoZSBuZXR3b3JrIHRvIGFub3RoZXIgbWFjaGluZS5cCitUaGluayBvZiBpdCBhcyBuZXR3b3JrZWQgcmFpZCAxLiBJdCBpcyBhIGJ1aWxkaW5nIGJsb2NrIGZvclwKK3NldHRpbmcgdXAgaGlnaCBhdmFpbGFiaWxpdHkgKEhBKSBjbHVzdGVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmRyYmQub3JnLyIKK1NFQ1RJT04gPSAiYWRtaW4iCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1NzRjNjk2NWFlNWY1ODNlNTU4ODBlMzk3ZmJiMDE4IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vTElOQklUL2RyYmQtdXRpbHM7bmFtZT1kcmJkLXV0aWxzIFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9MSU5CSVQvZHJiZC1oZWFkZXJzO25hbWU9ZHJiZC1oZWFkZXJzO2Rlc3RzdWZmaXg9Z2l0L2RyYmQtaGVhZGVycyBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCd1c3JtZXJnZScsJ2ZpbGU6Ly8wMDAxLWRyYmQtdXRpbHMtc3VwcG9ydC11c3JtZXJnZS5wYXRjaCcsJycsZCl9IFwKKyAgICAgICAgICAiCisjIHY5LjEyLjAKK1NSQ1JFVl9kcmJkLXV0aWxzID0gIjkxNjI5YTRjY2U0OWNhMGQ0ZjkxN2ZlMGJmZmEyNWNmZThkYjMwNTIiCitTUkNSRVZfZHJiZC1oZWFkZXJzID0gIjIzMzAwNmI0ZDI2Y2YzMTk2MzhiZTBlZjZkMTZlYzdkZWUyODdiNjYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vTElOQklUL2RyYmQtdXRpbHMvcmVsZWFzZXMiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJkcmJkLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCisKK0RFUEVORFMgPSAiZmxleC1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBzeXN0ZW1kCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgICAgICAgICAgICAgIC0td2l0aC1pbml0ZGlyPS9ldGMvaW5pdC5kICAgIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcGFjZW1ha2VyICAgICAgICAgICBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LXJnbWFuYWdlciAgICAgICAgICAgXAorICAgICAgICAgICAgICAgIC0td2l0aG91dC1iYXNoY29tcGxldGlvbiAgICAgIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZGlzdHJvIGRlYmlhbiAgICAgICAgICBcCisgICAgICAgICAgICAgICAgLS13aXRoLWluaXRzY3JpcHR0eXBlPWJvdGggICAgXAorICAgICAgICAgICAgICAgIC0td2l0aC1zeXN0ZW1kdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbWFudWFsIFwKKyAgICAgICAgICAgICAgICIKKworIyBJZiB3ZSBoYXZlIGluaGVyaXRlZCByZXByb2R1Y2libGVfYnVpbGQsIHdlIHdhbnQgdG8gdXNlIGl0LgorZXhwb3J0IFdBTlRfRFJCRF9SRVBST0RVQ0lCTEVfQlVJTEQgPSAieWVzIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIGRvbid0IGluc3RhbGwgZW1wdHkgL3Zhci9sb2NrIGFuZCAvdmFyL3J1biB0byBhdm9pZCBjb25mbGljdCB3aXRoIGJhc2UtZmlsZXMKKyAgICBybSAtcmYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbG9jaworICAgIHJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KK30KKworUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgcGVybC1tb2R1bGUtZXhwb3J0ZXIgcGVybC1tb2R1bGUtY29uc3RhbnQgcGVybC1tb2R1bGUtb3ZlcmxvYWRpbmcgcGVybC1tb2R1bGUtZXhwb3J0ZXItaGVhdnkiCisKKyMgVGhlIGRyYmQgaXRlbXMgYXJlIGV4cGxpY2l0bHkgcHV0IHVuZGVyIC9saWIgd2hlbiBpbnN0YWxsZWQuCisjCitGSUxFU18ke1BOfSArPSAiL3J1biIKK0ZJTEVTXyR7UE59ICs9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2RyYmQgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L2RyYmQgXAorICAgICAgICAgICAgICAgICR7bm9uYXJjaF9saWJkaXJ9L3RtcGZpbGVzLmQiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZHJiZC8uZGVidWciCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2ZldGNobWFpbC9mZXRjaG1haWxfNi40LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2ZldGNobWFpbC9mZXRjaG1haWxfNi40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxY2FhOTEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9mZXRjaG1haWwvZmV0Y2htYWlsXzYuNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJGZXRjaG1haWwgcmV0cmlldmVzIG1haWwgZnJvbSByZW1vdGUgbWFpbCBzZXJ2ZXJzIGFuZCBmb3J3YXJkcyBpdCB2aWEgU01UUCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZmV0Y2htYWlsLmluZm8vIgotREVTQ1JJUFRJT04gPSAiRmV0Y2htYWlsIGlzIGEgZnVsbC1mZWF0dXJlZCwgcm9idXN0LCB3ZWxsLWRvY3VtZW50ZWQgcmVtb3RlLW1haWwgcmV0cmlldmFsIGFuZCBmb3J3YXJkaW5nIHV0aWxpdHkgaW50ZW5kZWQgdG8gYmUgdXNlZCBvdmVyIG9uLWRlbWFuZCBUQ1AvSVAgbGlua3MgKHN1Y2ggYXMgU0xJUCBvciBQUFAgY29ubmVjdGlvbnMpLiBJdCBzdXBwb3J0cyBldmVyeSByZW1vdGUtbWFpbCBwcm90b2NvbCBub3cgaW4gdXNlIG9uIHRoZSBJbnRlcm5ldDogUE9QMiwgUE9QMywgUlBPUCwgQVBPUCwgS1BPUCwgYWxsIGZsYXZvcnMgb2YgSU1BUCwgRVRSTiwgYW5kIE9ETVIuIEl0IGNhbiBldmVuIHN1cHBvcnQgSVB2NiBhbmQgSVBTRUMuIgotU0VDVElPTiA9ICJtYWlsIgotTElDRU5TRSA9ICJHUEx2MiAmIE1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWNhNTM5ODVjMWZkMDUzYWUwYmZmZmZhYTg5ZWQ0OWYxIgotCi1ERVBFTkRTID0gIm9wZW5zc2wiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImMyYjgzNmE5MTljZGQ0ZWM1M2IwNmI3MGUwYWEzZTYzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNmMzNmMTFkZDA4YzNlOGNjM2U5ZDE4ZWVjNjg2YjE2MjZkNDgxOGY0ZDVhNzI3OTE1MDdiYmM0ZGNlNmE5YTAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHl0aG9uLWRpciBweXRob25uYXRpdmUKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC1zc2w9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSIKLQotUEFDS0FHRVMgPSsgImZldGNobWFpbC1weXRob24iCi1GSUxFU19mZXRjaG1haWwtcHl0aG9uID0gIiR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9LyoiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2ZldGNobWFpbC9mZXRjaG1haWxfNi40LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2ZldGNobWFpbC9mZXRjaG1haWxfNi40LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWUyZDFiZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvZmV0Y2htYWlsL2ZldGNobWFpbF82LjQuMy5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIkZldGNobWFpbCByZXRyaWV2ZXMgbWFpbCBmcm9tIHJlbW90ZSBtYWlsIHNlcnZlcnMgYW5kIGZvcndhcmRzIGl0IHZpYSBTTVRQIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mZXRjaG1haWwuaW5mby8iCitERVNDUklQVElPTiA9ICJGZXRjaG1haWwgaXMgYSBmdWxsLWZlYXR1cmVkLCByb2J1c3QsIHdlbGwtZG9jdW1lbnRlZCByZW1vdGUtbWFpbCByZXRyaWV2YWwgYW5kIGZvcndhcmRpbmcgdXRpbGl0eSBpbnRlbmRlZCB0byBiZSB1c2VkIG92ZXIgb24tZGVtYW5kIFRDUC9JUCBsaW5rcyAoc3VjaCBhcyBTTElQIG9yIFBQUCBjb25uZWN0aW9ucykuIEl0IHN1cHBvcnRzIGV2ZXJ5IHJlbW90ZS1tYWlsIHByb3RvY29sIG5vdyBpbiB1c2Ugb24gdGhlIEludGVybmV0OiBQT1AyLCBQT1AzLCBSUE9QLCBBUE9QLCBLUE9QLCBhbGwgZmxhdm9ycyBvZiBJTUFQLCBFVFJOLCBhbmQgT0RNUi4gSXQgY2FuIGV2ZW4gc3VwcG9ydCBJUHY2IGFuZCBJUFNFQy4iCitTRUNUSU9OID0gIm1haWwiCitMSUNFTlNFID0gIkdQTHYyICYgTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2E1Mzk4NWMxZmQwNTNhZTBiZmZmZmFhODllZDQ5ZjEiCisKK0RFUEVORFMgPSAib3BlbnNzbCIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNjE0ZDVhMDVhYzlhMDQyYmZjOTMxN2U1NDk5YmFmZDQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjAzNjBlMTRiOWFhNWQwNjVlZWY4ZmY5OWFkMDM0N2VmNmNiYmZjOTM0YzgxMTQ5MDgyOTVhNDAyYTA5ZDNlNCIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBweXRob24zLWRpciBweXRob24zbmF0aXZlCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtc3NsPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0iCisKK1BBQ0tBR0VTID0rICJmZXRjaG1haWwtcHl0aG9uIgorRklMRVNfZmV0Y2htYWlsLXB5dGhvbiA9ICIke2xpYmRpcn0vJHtQWVRIT05fRElSfS8qIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJtZW1jYWNoZWQvbGlibWVtY2FjaGVkLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlibWVtY2FjaGVkL2xpYm1lbWNhY2hlZC5pbmMKaW5kZXggZDlhODIxZC4uMzE5YWIyOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJtZW1jYWNoZWQvbGlibWVtY2FjaGVkLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYm1lbWNhY2hlZC9saWJtZW1jYWNoZWQuaW5jCkBAIC02LDYgKzYsOCBAQAogCiBTUkNfVVJJID0gImh0dHA6Ly9sYXVuY2hwYWQubmV0L2xpYm1lbWNhY2hlZC8xLjAvJHtQVn0vK2Rvd25sb2FkL2xpYm1lbWNhY2hlZC0ke1BWfS50YXIuZ3oiCiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvbGlibWVtY2FjaGVkIgorCiBUQVJHRVRfTERGTEFHUyArPSAiLWx1dWlkIgogVEFSR0VUX0NGTEFHUyArPSAiLURfX1VTRV9HTlUgLURfR05VX1NPVVJDRSIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiLzAwMDEtd2FmLWFkZC1zdXBwb3J0LW9mLWNyb3NzX2NvbXBpbGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGIvMDAwMS13YWYtYWRkLXN1cHBvcnQtb2YtY3Jvc3NfY29tcGlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIwYzlhMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGIvMDAwMS13YWYtYWRkLXN1cHBvcnQtb2YtY3Jvc3NfY29tcGlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLUZyb20gNGI4NDYzZmY0M2Y4OTgzYTcwNmIxODFjNTI5MjQ5MWY5Zjk1NGJlMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDI1IEphbiAyMDE5IDE1OjAwOjU5ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHdhZjogYWRkIHN1cHBvcnQgb2YgY3Jvc3NfY29tcGlsZQotCi1BZnRlciB1cGdyYWRlIGxpYnRkYiBmcm9tIDEuMy4xNiB0byAxLjMuMTcsIHdhZiBidWlsZCBzeXN0ZW0KLXdoaWNoIHVzZWQgYnkgbGlidGRiIHVwZ3JhZGUgZnJvbSAxLjUuMTkgdG8gMi4wLjgKLQotb24gMS41LjE5LCBmb3IgY3Jvc3NfY29tcGlsZSwgc3VicHJvY2Vzcy5Qb3BlbiBpcyBzZXQgdG8gYmUKLXNhbWJhX2Nyb3NzLmNyb3NzX1BvcGVuLCB3aGljaCB3aWxsIG5vdCBleGVjdXRlIHRlc3Rwcm9nIG9uCi1ob3N0LCBidXQgb25seSByZWFkIHJlc3VsdCBmcm9tIGNyb3NzLWFuc3dlcnMudHh0IHdoaWNoIGlzCi1wYXNzZWQgYnkgb3B0aW9uIC0tY3Jvc3MtYW5zd2VyCi0KLXBhcnQgb2Ygb2xkIGNvZGU6Ci0gICAgYXJncyA9IFV0aWxzLnRvX2xpc3Qoa3cuZ2V0KCdleGVjX2FyZ3MnLCBbXSkpCi0gICAgcHJvYyA9IFV0aWxzLnBwcm9jLlBvcGVuKFtsYXN0cHJvZ10gKyBhcmdzLCBzdGRvdXQ9VXRpbHMucHByb2MuUElQRSwgc3RkZXJyPVV0aWxzLnBwcm9jLlBJUEUpCi0KLWJ1dCBvbiAyLjAuOCwgZXhlY19hcmdzIGlzIG5vdCB1c2VkIGFuZCBjYXVzZSBkb19jb25maWd1cmUKLWZhaWxlZCB3aXRoIEV4ZWMgZm9ybWF0IGVycm9yCi0KLWZpeGVkIGJ5IGFwcGVuZCBjcm9zcyBhbnNlciByZWxhdGVkIGFyZ3MgdG8gY21kCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGxhYi5jb20vc2FtYmEtdGVhbS9zYW1iYS9tZXJnZV9yZXF1ZXN0cy8yMTFdCi0KLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0aGlyZF9wYXJ0eS93YWYvd2FmbGliL1Rvb2xzL2NfY29uZmlnLnB5IHwgMTEgKysrKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvd2FmL3dhZmxpYi9Ub29scy9jX2NvbmZpZy5weSBiL3RoaXJkX3BhcnR5L3dhZi93YWZsaWIvVG9vbHMvY19jb25maWcucHkKLWluZGV4IDc2MDgyMTUuLjc2N2NmMzMgMTAwNjQ0Ci0tLS0gYS90aGlyZF9wYXJ0eS93YWYvd2FmbGliL1Rvb2xzL2NfY29uZmlnLnB5Ci0rKysgYi90aGlyZF9wYXJ0eS93YWYvd2FmbGliL1Rvb2xzL2NfY29uZmlnLnB5Ci1AQCAtNjYwLDIwICs2NjAsMjEgQEAgY2xhc3MgdGVzdF9leGVjKFRhc2suVGFzayk6Ci0gCSIiIgotIAljb2xvciA9ICdQSU5LJwotIAlkZWYgcnVuKHNlbGYpOgotKwkJYXJncyA9IHNlbGYuZ2VuZXJhdG9yLmJsZC5rdy5nZXQoJ2V4ZWNfYXJncycsIFtdKQotIAkJaWYgZ2V0YXR0cihzZWxmLmdlbmVyYXRvciwgJ3JwYXRoJywgTm9uZSk6Ci0gCQkJaWYgZ2V0YXR0cihzZWxmLmdlbmVyYXRvciwgJ2RlZmluZV9yZXQnLCBGYWxzZSk6Ci0tCQkJCXNlbGYuZ2VuZXJhdG9yLmJsZC5yZXR2YWwgPSBzZWxmLmdlbmVyYXRvci5ibGQuY21kX2FuZF9sb2coW3NlbGYuaW5wdXRzWzBdLmFic3BhdGgoKV0pCi0tCQkJZWxzZToKLS0JCQkJc2VsZi5nZW5lcmF0b3IuYmxkLnJldHZhbCA9IHNlbGYuZ2VuZXJhdG9yLmJsZC5leGVjX2NvbW1hbmQoW3NlbGYuaW5wdXRzWzBdLmFic3BhdGgoKV0pCi0rCQkJCXNlbGYuZ2VuZXJhdG9yLmJsZC5yZXR2YWwgPSBzZWxmLmdlbmVyYXRvci5ibGQuY21kX2FuZF9sb2coW3NlbGYuaW5wdXRzWzBdLmFic3BhdGgoKV0gKyBhcmdzKQotKwkJCWVsc2U6IAotKwkJCQlzZWxmLmdlbmVyYXRvci5ibGQucmV0dmFsID0gc2VsZi5nZW5lcmF0b3IuYmxkLmV4ZWNfY29tbWFuZChbc2VsZi5pbnB1dHNbMF0uYWJzcGF0aCgpXSArIGFyZ3MpCi0gCQllbHNlOgotIAkJCWVudiA9IHNlbGYuZW52LmVudiBvciB7fQotIAkJCWVudi51cGRhdGUoZGljdChvcy5lbnZpcm9uKSkKLSAJCQlmb3IgdmFyIGluICgnTERfTElCUkFSWV9QQVRIJywgJ0RZTERfTElCUkFSWV9QQVRIJywgJ1BBVEgnKToKLSAJCQkJZW52W3Zhcl0gPSBzZWxmLmlucHV0c1swXS5wYXJlbnQuYWJzcGF0aCgpICsgb3MucGF0aC5wYXRoc2VwICsgZW52LmdldCh2YXIsICcnKQotIAkJCWlmIGdldGF0dHIoc2VsZi5nZW5lcmF0b3IsICdkZWZpbmVfcmV0JywgRmFsc2UpOgotLQkJCQlzZWxmLmdlbmVyYXRvci5ibGQucmV0dmFsID0gc2VsZi5nZW5lcmF0b3IuYmxkLmNtZF9hbmRfbG9nKFtzZWxmLmlucHV0c1swXS5hYnNwYXRoKCldLCBlbnY9ZW52KQotKwkJCQlzZWxmLmdlbmVyYXRvci5ibGQucmV0dmFsID0gc2VsZi5nZW5lcmF0b3IuYmxkLmNtZF9hbmRfbG9nKFtzZWxmLmlucHV0c1swXS5hYnNwYXRoKCldICsgYXJncywgZW52PWVudikKLSAJCQllbHNlOgotLQkJCQlzZWxmLmdlbmVyYXRvci5ibGQucmV0dmFsID0gc2VsZi5nZW5lcmF0b3IuYmxkLmV4ZWNfY29tbWFuZChbc2VsZi5pbnB1dHNbMF0uYWJzcGF0aCgpXSwgZW52PWVudikKLSsJCQkJc2VsZi5nZW5lcmF0b3IuYmxkLnJldHZhbCA9IHNlbGYuZ2VuZXJhdG9yLmJsZC5leGVjX2NvbW1hbmQoW3NlbGYuaW5wdXRzWzBdLmFic3BhdGgoKV0gKyBhcmdzLCBlbnY9ZW52KQotIAotIEBmZWF0dXJlKCd0ZXN0X2V4ZWMnKQotIEBhZnRlcl9tZXRob2QoJ2FwcGx5X2xpbmsnKQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGIvdGRiLUFkZC1jb25maWd1cmUtb3B0aW9ucy1mb3ItcGFja2FnZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGIvdGRiLUFkZC1jb25maWd1cmUtb3B0aW9ucy1mb3ItcGFja2FnZXMucGF0Y2gKaW5kZXggNDgxZmQ2OC4uYzM1Y2FiNyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiL3RkYi1BZGQtY29uZmlndXJlLW9wdGlvbnMtZm9yLXBhY2thZ2VzLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGRiL2xpYnRkYi90ZGItQWRkLWNvbmZpZ3VyZS1vcHRpb25zLWZvci1wYWNrYWdlcy5wYXRjaApAQCAtNzgsNyArNzgsNyBAQAogKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xpbnV4L3R5cGVzLmggY3J5cHQuaCBsb2NhbGUuaCBjb21wYXQuaCcpCiArICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnYXR0ci94YXR0ci5oIGNvbXBhdC5oIGN0eXBlLmggZHVzdGF0LmgnKQogICAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2ZjbnRsLmggZm5tYXRjaC5oIGdsb2IuaCBoaXN0b3J5Lmgga3JiNS5oIGxhbmdpbmZvLmgnKQotLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xpYmFpby5oIGxvY2FsZS5oIG5kaXIuaCBwd2QuaCcpCistICAgIGNvbmYuQ0hFQ0tfSEVBREVSUygnbG9jYWxlLmggbmRpci5oIHB3ZC5oJykKIC0gICAgY29uZi5DSEVDS19IRUFERVJTKCdzaGFkb3cuaCBzeXMvYWNsLmgnKQogLSAgICBjb25mLkNIRUNLX0hFQURFUlMoJ3N5cy9hdHRyaWJ1dGVzLmggYXR0ci9hdHRyaWJ1dGVzLmggc3lzL2NhcGFiaWxpdHkuaCBzeXMvZGlyLmggc3lzL2Vwb2xsLmgnKQogKyAgICBjb25mLkNIRUNLX0hFQURFUlMoJ2xvY2FsZS5oIG5kaXIuaCBwd2QuaCcpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGJfMS40LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xpYnRkYi9saWJ0ZGJfMS40LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NzNlODAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiXzEuNC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgdGRiIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vdGRiLnNhbWJhLm9yZy8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEwtMy4wKyAmIEdQTC0zLjArIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly90b29scy90ZGJkdW1wLmM7ZW5kbGluZT0xODttZDU9YjU5Y2Q0NWFhODYyNDU3ODEyNmE4Yzk4ZjQ4MDE4YzQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS90ZGIuaDtlbmRsaW5lPTI3O21kNT1mNWJiNTQ0NjQxZDMwODE4MjFiY2MxZGQ1ODMxMGJlNiIKLQotU1JDX1VSSSA9ICJodHRwczovL3NhbWJhLm9yZy9mdHAvdGRiL3RkYi0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vdGRiLUFkZC1jb25maWd1cmUtb3B0aW9ucy1mb3ItcGFja2FnZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS13YWYtYWRkLXN1cHBvcnQtb2YtY3Jvc3NfY29tcGlsZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiMmMwNWFkNjgzMzQzNjhkMzI1OGE2M2RiNzA5ZjI1NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MDQwYjJjY2U0MDI4ZTM5MmYwNjNmOTFiYmU3NmI4YjI4ZmVjYzJiN2MwYzYwNzFjNjdiNWViMzE2OGUwMDRhIgotCi1QQUNLQUdFQ09ORklHID8/PSAiXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCcsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbYWNsXSA9ICItLXdpdGgtYWNsLC0td2l0aG91dC1hY2wsYWNsIgotUEFDS0FHRUNPTkZJR1thdHRyXSA9ICItLXdpdGgtYXR0ciwtLXdpdGhvdXQtYXR0cixhdHRyIgotUEFDS0FHRUNPTkZJR1tsaWJhaW9dID0gIi0td2l0aC1saWJhaW8sLS13aXRob3V0LWxpYmFpbyxsaWJhaW8iCi1QQUNLQUdFQ09ORklHW2xpYmJzZF0gPSAiLS13aXRoLWxpYmJzZCwtLXdpdGhvdXQtbGliYnNkLGxpYmJzZCIKLVBBQ0tBR0VDT05GSUdbbGliY2FwXSA9ICItLXdpdGgtbGliY2FwLC0td2l0aG91dC1saWJjYXAsbGliY2FwIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCIKLQotUyA9ICIke1dPUktESVJ9L3RkYi0ke1BWfSIKLQotaW5oZXJpdCB3YWYtc2FtYmEKLQotI2Nyb3NzX2NvbXBpbGUgY2Fubm90IHVzZSBwcmVmb3JrZWQgcHJvY2Vzcywgc2luY2UgZm9yayBwcm9jZXNzIGVhcmxpZXIgdGhhbiBwb2ludCBzdWJwcm9jZXMucG9wZW4KLSN0byBjcm9zcyBQb3BlbgotZXhwb3J0IFdBRl9OT19QUkVGT1JLPSJ5ZXMiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXJwYXRoIFwKLSAgICAgICAgICAgICAgICAgLS1idW5kbGVkLWxpYnJhcmllcz1OT05FIFwKLSAgICAgICAgICAgICAgICAgLS1idWlsdGluLWxpYnJhcmllcz1yZXBsYWNlIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWxpYmljb252PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH1cCi0gICAgICAgICAgICAgICAgIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgIyBhZGQgdGhpcyBsaW5rIGZvciBjcm9zcyBjaGVjayBweXRob24gbW9kdWxlIGV4aXN0ZW5jZS4gZWc6IG9uIHg4Ni02NCBob3N0LCBjaGVjayBweXRob24gbW9kdWxlCi0gICAgICMgdW5kZXIgcmVjaXBlLXN5c3Jvb3Qgd2hpY2ggaXMgbWlwczY0LgotICAgICBjZCAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn07IGxuIC1zIHRkYi4qLnNvIHRkYi5zbwotfQotCi1QQUNLQUdFUyArPSAidGRiLXRvb2xzIHB5dGhvbjMtdGRiIgotCi1SUFJPVklERVNfJHtQTn0tZGJnICs9ICJweXRob24zLXRkYi1kYmciCi0KLUZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qLnNvLioiCi1GSUxFU190ZGItdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU19weXRob24zLXRkYiA9ICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMvKiIKLVJERVBFTkRTX3B5dGhvbjMtdGRiID0gInB5dGhvbjMiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfXB5dGhvbjMtdGRiID0gImRldi1zbyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGRiL2xpYnRkYl8xLjQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbGlidGRiL2xpYnRkYl8xLjQuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTMxMDE0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZGIvbGlidGRiXzEuNC4zLmJiCkBAIC0wLDAgKzEsNTYgQEAKK1NVTU1BUlkgPSAiVGhlIHRkYiBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL3RkYi5zYW1iYS5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMLTMuMCsgJiBHUEwtMy4wKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vdG9vbHMvdGRiZHVtcC5jO2VuZGxpbmU9MTg7bWQ1PWI1OWNkNDVhYTg2MjQ1NzgxMjZhOGM5OGY0ODAxOGM0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdGRiLmg7ZW5kbGluZT0yNzttZDU9ZjViYjU0NDY0MWQzMDgxODIxYmNjMWRkNTgzMTBiZTYiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9zYW1iYS5vcmcvZnRwL3RkYi90ZGItJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3RkYi1BZGQtY29uZmlndXJlLW9wdGlvbnMtZm9yLXBhY2thZ2VzLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImU2MzhlODg5MGY3NDM2MjRhNzU0MzA0YjNmOTk0ZjRkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM4MDU4MzkzZGZhMTVmNDdlMTFlYmQyZjFkMTMyNjkzZjBiM2IzYjhiZjIyZDAyMDFiZmIzMDUwMjZmODhhMWIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3hhdHRyJywgJ2F0dHInLCAnJywgZCl9IFwKKyIKKworUEFDS0FHRUNPTkZJR1thY2xdID0gIi0td2l0aC1hY2wsLS13aXRob3V0LWFjbCxhY2wiCitQQUNLQUdFQ09ORklHW2F0dHJdID0gIi0td2l0aC1hdHRyLC0td2l0aG91dC1hdHRyLGF0dHIiCitQQUNLQUdFQ09ORklHW2xpYmFpb10gPSAiLS13aXRoLWxpYmFpbywtLXdpdGhvdXQtbGliYWlvLGxpYmFpbyIKK1BBQ0tBR0VDT05GSUdbbGliYnNkXSA9ICItLXdpdGgtbGliYnNkLC0td2l0aG91dC1saWJic2QsbGliYnNkIgorUEFDS0FHRUNPTkZJR1tsaWJjYXBdID0gIi0td2l0aC1saWJjYXAsLS13aXRob3V0LWxpYmNhcCxsaWJjYXAiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQsLS13aXRob3V0LXZhbGdyaW5kLHZhbGdyaW5kIgorCitTID0gIiR7V09SS0RJUn0vdGRiLSR7UFZ9IgorCitpbmhlcml0IHdhZi1zYW1iYQorCisjY3Jvc3NfY29tcGlsZSBjYW5ub3QgdXNlIHByZWZvcmtlZCBwcm9jZXNzLCBzaW5jZSBmb3JrIHByb2Nlc3MgZWFybGllciB0aGFuIHBvaW50IHN1YnByb2Nlcy5wb3BlbgorI3RvIGNyb3NzIFBvcGVuCitleHBvcnQgV0FGX05PX1BSRUZPUks9InllcyIKKworRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtcnBhdGggXAorICAgICAgICAgICAgICAgICAtLWJ1bmRsZWQtbGlicmFyaWVzPU5PTkUgXAorICAgICAgICAgICAgICAgICAtLWJ1aWx0aW4tbGlicmFyaWVzPXJlcGxhY2UgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtbGliaWNvbnY9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fVwKKyAgICAgICAgICAgICAgICAiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICAjIGFkZCB0aGlzIGxpbmsgZm9yIGNyb3NzIGNoZWNrIHB5dGhvbiBtb2R1bGUgZXhpc3RlbmNlLiBlZzogb24geDg2LTY0IGhvc3QsIGNoZWNrIHB5dGhvbiBtb2R1bGUKKyAgICAgIyB1bmRlciByZWNpcGUtc3lzcm9vdCB3aGljaCBpcyBtaXBzNjQuCisgICAgIGNkICR7RH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfTsgbG4gLXMgdGRiLiouc28gdGRiLnNvCit9CisKK1BBQ0tBR0VTICs9ICJ0ZGItdG9vbHMgcHl0aG9uMy10ZGIiCisKK1JQUk9WSURFU18ke1BOfS1kYmcgKz0gInB5dGhvbjMtdGRiLWRiZyIKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9Lyouc28uKiIKK0ZJTEVTX3RkYi10b29scyA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTX3B5dGhvbjMtdGRiID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0vc2l0ZS1wYWNrYWdlcy8qIgorUkRFUEVORFNfcHl0aG9uMy10ZGIgPSAicHl0aG9uMyIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9cHl0aG9uMy10ZGIgPSAiZGV2LXNvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9sb3dwYW4tdG9vbHMvbG93cGFuLXRvb2xzX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbG93cGFuLXRvb2xzL2xvd3Bhbi10b29sc19naXQuYmIKaW5kZXggNTg1OTY4Zi4uNTkxN2NmYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9sb3dwYW4tdG9vbHMvbG93cGFuLXRvb2xzX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L2xvd3Bhbi10b29scy9sb3dwYW4tdG9vbHNfZ2l0LmJiCkBAIC0yMSw3ICsyMSw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHB5dGhvbi1kaXIgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scyBweXRob24zLWRpciBwa2djb25maWcKIAogQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFtX2N2X3B5dGhvbl9weXRob25kaXI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vbG93cGFuLXRvb2xzIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L21lbWNhY2hlZC9tZW1jYWNoZWRfMS41LjIwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9tZW1jYWNoZWQvbWVtY2FjaGVkXzEuNS4yMC5iYgppbmRleCAzN2E3N2MzLi5mZWI0ZjNmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L21lbWNhY2hlZC9tZW1jYWNoZWRfMS41LjIwLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbWVtY2FjaGVkL21lbWNhY2hlZF8xLjUuMjAuYmIKQEAgLTI2LDcgKzI2LDcgQEAKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZmQ3YjAyM2E5Y2VmZTdhZThhNjcxODRmNTFkODQxZGJiZjk3OTk0ZWQwZThhNTVlMzFlZTA5MjMyMGVhMWU0IgogCiAjIHNldCB0aGUgc2FtZSBDT01QQVRJQkxFX0hPU1QgYXMgbGliaHVnZXRsYmZzCi1DT01QQVRJQkxFX0hPU1QgPSAnKGkuODZ8eDg2XzY0fHBvd2VycGN8cG93ZXJwYzY0fGFybSkuKi1saW51eCcKK0NPTVBBVElCTEVfSE9TVCA9ICIoaS44Nnx4ODZfNjR8cG93ZXJwY3xwb3dlcnBjNjR8YWFyY2g2NHxhcm0pLiotbGludXgqIgogCiBweXRob24gX19hbm9ueW1vdXMgKCkgewogICAgIGVuZGlhbm5lc3MgPSBkLmdldFZhcignU0lURUlORk9fRU5ESUFOTkVTUycpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25iZGtpdC9uYmRraXQvMDAwMS1zZXJ2ZXItRml4LWJ1aWxkLXdoZW4tcHJpbnRmLWlzLWEtbWFjcm8ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25iZGtpdC9uYmRraXQvMDAwMS1zZXJ2ZXItRml4LWJ1aWxkLXdoZW4tcHJpbnRmLWlzLWEtbWFjcm8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzdlYzQxZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmJka2l0L25iZGtpdC8wMDAxLXNlcnZlci1GaXgtYnVpbGQtd2hlbi1wcmludGYtaXMtYS1tYWNyby5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDI4ZjA3NzE1YWI0ZDY3MGNlODFlMTI3NzZiYmVjZTA0MzMwNWJkODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAxMSBBcHIgMjAyMCAxNTowODozOSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBzZXJ2ZXI6IEZpeCBidWlsZCB3aGVuIHByaW50ZiBpcyBhIG1hY3JvCisKK2NsYW5nIGNvbXBsYWlucyBvbiB4ODYgd2hlbiBidWlsZGluZworCittYWluLmM6MTE2OjI6IGVycm9yOiBlbWJlZGRpbmcgYSAjaW5jbHVkZSBkaXJlY3RpdmUgd2l0aGluIG1hY3JvIGFyZ3VtZW50cyBpcyBub3Qgc3VwcG9ydGVkCisgXgorCitjb252ZXJ0IG5lc3RpbmcgaW5jbHVkZSBpbnRvIGEgc3RyaW5nIGFzc2lnbm1lbnQsIHRvIHNhbWUgZWZmZWN0IGJ1dAorbWFraW5nIGl0IGNvbXBhdGlibGUgd2l0aCBjbGFuZyBhcyB3ZWxsCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGliZ3Vlc3Rmcy9uYmRraXQvcHVsbC8zXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNlcnZlci9tYWluLmMgfCA1ICsrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NlcnZlci9tYWluLmMgYi9zZXJ2ZXIvbWFpbi5jCitpbmRleCA3NDgxMjJmLi5jMGFjODc0IDEwMDY0NAorLS0tIGEvc2VydmVyL21haW4uYworKysrIGIvc2VydmVyL21haW4uYworQEAgLTExMiw5ICsxMTIsMTAgQEAgc3RhdGljIHZvaWQKKyB1c2FnZSAodm9pZCkKKyB7CisgICAvKiAtLXtzaG9ydCxsb25nfS1vcHRpb25zIHJlbWFpbiB1bmRvY3VtZW50ZWQgKi8KKy0gIHByaW50ZiAoCisrICBjaGFyIGNvbnN0ICpvcHRfbGlzdCA9CisgI2luY2x1ZGUgInN5bm9wc2lzLmMiCistICApOworKwkgIDsKKysgIHByaW50ZiAoIiVzXG4iLCBvcHRfbGlzdCk7CisgICBwcmludGYgKCJcbiIKKyAgICAgICAgICAgIlBsZWFzZSByZWFkIHRoZSBuYmRraXQoMSkgbWFudWFsIHBhZ2UgZm9yIGZ1bGwgdXNhZ2UuXG4iKTsKKyB9CistLSAKKzIuMjYuMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25iZGtpdC9uYmRraXRfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uYmRraXQvbmJka2l0X2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjNlNDllCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uYmRraXQvbmJka2l0X2dpdC5iYgpAQCAtMCwwICsxLDM2IEBACitTVU1NQVJZID0gIm5iZGtpdCBpcyBhIHRvb2xraXQgZm9yIGNyZWF0aW5nIE5CRCBzZXJ2ZXJzLiIKK0RFU0NSSVBUSU9OID0gIk5CRCDigJQgTmV0d29yayBCbG9jayBEZXZpY2Ug4oCUIGlzIGEgcHJvdG9jb2wgXAorZm9yIGFjY2Vzc2luZyBCbG9jayBEZXZpY2VzIChoYXJkIGRpc2tzIGFuZCBkaXNrLWxpa2UgdGhpbmdzKSBcCitvdmVyIGEgTmV0d29yay4gXAorXAorbmJka2l0IGlzIGEgdG9vbGtpdCBmb3IgY3JlYXRpbmcgTkJEIHNlcnZlcnMuIgorCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliZ3Vlc3Rmcy9uYmRraXQiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTQzMzJhOTc4MDg5OTRjZjIxMzNhNjViNmM2ZjMzZWFmIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGliZ3Vlc3Rmcy9uYmRraXQuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc2VydmVyLUZpeC1idWlsZC13aGVuLXByaW50Zi1pcy1hLW1hY3JvLnBhdGNoIFwKKyIKKworUFYgPSAiMS4xOS42K2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gIjI1NzU2MWJjOWYyZjAxZWI5ZjIxNjg2YmNlYzRiODYzZDE3YTI2YzQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0RFUEVORFMgPSAiY3VybCB4eiBlMmZzcHJvZ3MgemxpYiIKKworIyBhdXRvdG9vbHMtYnJva2Vuc2VwIGlzIG5lZWRlZCBhcyBuYmRraXQgZG9lcyBub3Qgc3VwcG9ydCBidWlsZCBpbiBleHRlcm5hbCBkaXJlY3RvcnkKK2luaGVyaXQgcGtnY29uZmlnIHB5dGhvbjNuYXRpdmUgcGVybG5hdGl2ZSBiYXNoLWNvbXBsZXRpb24gYXV0b3Rvb2xzLWJyb2tlbnNlcAorCisjIFRob3NlIGFyZSByZXF1aXJlZCB0byBidWlsZCBzdGFuZGFsb25lCitFWFRSQV9PRUNPTkYgPSAiIC0td2l0aG91dC1saWJ2aXJ0IC0td2l0aG91dC1saWJndWVzdGZzIC0tZGlzYWJsZS1wZXJsIgorCisjIERpc2FibGUgc29tZSBleHRlbmRlZCBzdXBwb3J0IChub3QgZGVzaXJlZCBmb3Igc21hbGwgZW1iZWRkZWQgc3lzdGVtcykKKyNFWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtcHl0aG9uIgorI0VYVFJBX09FQ09ORiArPSAiIC0tZGlzYWJsZS1vY2FtbCIKKyNFWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtcnVzdCIKKyNFWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtcnVieSIKKyNFWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtdGNsIgorI0VYVFJBX09FQ09ORiArPSAiIC0tZGlzYWJsZS1sdWEiCisjRVhUUkFfT0VDT05GICs9ICIgLS1kaXNhYmxlLXZkZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25jcC9saWJvd2ZhdF8wLjMyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uY3AvbGlib3dmYXRfMC4zMi5iYgppbmRleCAyNGY0MTM1Li5kMmY0ZGY3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25jcC9saWJvd2ZhdF8wLjMyLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmNwL2xpYm93ZmF0XzAuMzIuYmIKQEAgLTI2LDQgKzI2LDYgQEAKICAgICAgICAgTUFOM0RJUj0ke21hbmRpcn0vbWFuMwogfQogCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25kaXNjNi9uZGlzYzZfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZGlzYzYvbmRpc2M2X2dpdC5iYgppbmRleCBlYzQ4Nzk3Li41Zjg2NjA1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25kaXNjNi9uZGlzYzZfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmRpc2M2L25kaXNjNl9naXQuYmIKQEAgLTE1LDYgKzE1LDggQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAorREVQRU5EUyA9ICJjb3JldXRpbHMtbmF0aXZlIgorCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0CiAKIEVYVFJBX09FQ09ORiArPSAiUEVSTD0ke1VTUkJJTlBBVEh9L3BlcmwiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldGNmL25ldGNmXzAuMi44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRjZi9uZXRjZl8wLjIuOC5iYgppbmRleCBjNTdlN2Q0Li5hMTgwNTcxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldGNmL25ldGNmXzAuMi44LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0Y2YvbmV0Y2ZfMC4yLjguYmIKQEAgLTIwLDcgKzIwLDcgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZAoraW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scyBwZXJsbmF0aXZlIHBrZ2NvbmZpZyBzeXN0ZW1kCiAKIEVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAtLXdpdGgtZHJpdmVyPXJlZGhhdCIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRwZXJmL25ldHBlcmZfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZXRwZXJmL25ldHBlcmZfZ2l0LmJiCmluZGV4IGYxZjYyZGYuLmQ0OGYzYWUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmV0cGVyZi9uZXRwZXJmX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25ldHBlcmYvbmV0cGVyZl9naXQuYmIKQEAgLTE5LDcgKzE5LDcgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotaW5oZXJpdCB1cGRhdGUtcmMuZCBhdXRvdG9vbHMKK2luaGVyaXQgdXBkYXRlLXJjLmQgYXV0b3Rvb2xzIHRleGluZm8KIAogIyBjcHVfc2V0LnBhdGNoIHBsdXMgX0dOVV9TT1VSQ0UgbWFrZXMgc3JjL25ldGxpYi5jIGNvbXBpbGUgd2l0aCBDUFVfIG1hY3JvcwogQ0ZMQUdTX2FwcGVuZCA9ICIgLURET19VTklYIC1ERE9fSVBWNiAtRF9HTlVfU09VUkNFIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZ2h0dHAyL25naHR0cDJfMS40MC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uZ2h0dHAyL25naHR0cDJfMS40MC4wLmJiCmluZGV4IGYzN2U5YjcuLjllZDhjNTYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmdodHRwMi9uZ2h0dHAyXzEuNDAuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25naHR0cDIvbmdodHRwMl8xLjQwLjAuYmIKQEAgLTE0LDcgKzE0LDcgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICI4ZDFhNmI5Njc2MDI1NGU0ZGQxNDJkNzE3NmU4ZmI3YyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIwOWZjNDNkNDI4ZmYyMzcxMzg3MzNjNzM3YjI5ZmIxYTdlNDlkNDlkZTA2ZDJlZGJlZDNiYzRjZGNlZTY5MDczIgogCi1pbmhlcml0IGNtYWtlIG1hbnBhZ2VzIHB5dGhvbm5hdGl2ZQoraW5oZXJpdCBjbWFrZSBtYW5wYWdlcyBweXRob24zbmF0aXZlCiBQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICIiCiAKICMgZXhhbXBsZXMgYXJlIG5ldmVyIGluc3RhbGxlZCwgYW5kIGRvbid0IG5lZWQgdG8gYmUgYnVpbHQgaW4gdGhlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cGJpbmQtbXRfMi42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9uaXMveXBiaW5kLW10XzIuNi5iYgppbmRleCA0ZjdmOGFhLi4wM2I5OGM5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L25pcy95cGJpbmQtbXRfMi42LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbmlzL3lwYmluZC1tdF8yLjYuYmIKQEAgLTQ1LDcgKzQ1LDcgQEAKIAogQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiYWNfY3ZfcHJvZ19TVFJJUD0vYmluL3RydWUiCiAKLUNGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtSSR7U1RBR0lOR19JTkNESVJ9L25zczMiCitDRkxBR1NfYXBwZW5kID0gIiAtSSR7U1RBR0lOR19JTkNESVJ9L25zczMgLUkke1NUQUdJTkdfSU5DRElSfS9uc3ByIgogCiBkb19pbnN0YWxsX2FwcGVuZCAoKSB7CiAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRvcC9udG9wL2VtYmVkLWxpYnMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcC9lbWJlZC1saWJzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJkMWFiNzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcC9lbWJlZC1saWJzLnBhdGNoCkBAIC0wLDAgKzEsMjAgQEAKK1VzZSAtLWVtYmVkIG9wdGlvbiBzbyB0aGF0IGl0IGNhbiByZXR1cm4gbGlicHl0aG9uIGFzIHdlbGwKKworJSAuLi9yZWNpcGUtc3lzcm9vdC1uYXRpdmUvdXNyL2Jpbi9weXRob24zLW5hdGl2ZS9weXRob24zLWNvbmZpZyAtLWxpYnMgLS1lbWJlZAorLWxweXRob24zLjggLWxjcnlwdCAtbHB0aHJlYWQgLWxkbCAtbHV0aWwgLWxtIC1sbQorW2tyYWpAYXBvbGxvIC9tbnQvYi95b2UvYnVpbGQvdG1wL3dvcmsvY29ydGV4YTd0MmhmLW5lb24tdmZwdjQteW9lLWxpbnV4LWdudWVhYmkvbnRvcC81LjAuMS1yMC9udG9wLTUuMC4xXQorJSAuLi9yZWNpcGUtc3lzcm9vdC1uYXRpdmUvdXNyL2Jpbi9weXRob24zLW5hdGl2ZS9weXRob24zLWNvbmZpZyAtLWxpYnMKKy1sY3J5cHQgLWxwdGhyZWFkIC1sZGwgLWx1dGlsIC1sbSAtbG0KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtMTQ2Myw3ICsxNDYzLDcgQEAgZG5sPgorICAgZmkKKyAKKyAgIGlmIHRlc3QgIngkUFlUSE9OX0NPTkZJRyIgIT0gIngiOyB0aGVuCistICAgIFBZVEhPTl9MSUJTPSJgJFBZVEhPTl9DT05GSUcgLS1saWJzYCIKKysgICAgUFlUSE9OX0xJQlM9ImAkUFlUSE9OX0NPTkZJRyAtLWxpYnMgLS1lbWJlZGAiCisgICAgIGlmIHRlc3QgIngkUFlUSE9OX0xJQlMiID0gIngiOyB0aGVuCisgICAgICAgQUNfTVNHX1JFU1VMVChQeXRob25bLWRldmVsXSBzdXBwb3J0IGlzIHByZXNlbnQgYnV0IG1pc2NvbmZpZ3VyZWQpICAgICAKKyAgICAgZWxzZSAgIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udG9wL250b3BfNS4wLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcF81LjAuMS5iYgppbmRleCA4MGYwMDliLi5kODM1ZTM5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcF81LjAuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250b3AvbnRvcF81LjAuMS5iYgpAQCAtMTksMTUgKzE5LDE2IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5EUEktSW5jbHVkZS1zeXMtdHlwZXMuaC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBsdWdpbnMtTWFrZWZpbGUuYW0tZml4LWZvci1hdXRvbWFrZS0xLjE2LjEucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZml4LW1pc3NpbmctcmV0dXJuLWZyb20tbm9uLXZvaWQtZnVuY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZW1iZWQtbGlicy5wYXRjaCBcCiAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjAxNzEwYjY5MjVhOGE1ZmZlMWE0MWI4YjUxMmViZDY5IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlOGU4NGNiMTRkMjE3M2JlYWNhNGQ0Y2I5OTFhMTRkODRhNGJlZjg0ZWMzN2IyMjc2YmMzNjNmNDVjNTJlZjgiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9udG9wL2ZpbGVzL250b3AvU3RhYmxlIgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXNlcmFkZCBweXRob25uYXRpdmUgcGtnY29uZmlnIHN5c3RlbWQKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1c2VyYWRkIHB5dGhvbjNuYXRpdmUgcGtnY29uZmlnIHN5c3RlbWQKIAotREVQRU5EUyA9ICJnZW9pcCBycmR0b29sIHB5dGhvbiB6bGliIGxpYnBjYXAgZ2RibSIKK0RFUEVORFMgPSAiZ2VvaXAgcnJkdG9vbCBweXRob24zIHpsaWIgbGlicGNhcCBnZGJtIgogCiBQQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCBzbm1wIHBsdWdpbnMiCiBQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1zc2wsIC0td2l0aG91dC1zc2wsIG9wZW5zc2wsIG9wZW5zc2wiCkBAIC0zNSw3ICszNiw3IEBACiAtLWRpc2FibGUtc25tcCxuZXQtc25tcCwiCiBQQUNLQUdFQ09ORklHW3BsdWdpbnNdID0gIi0tZW5hYmxlLXBsdWdpbnM9eWVzLCAtLWRpc2FibGUtcGx1Z2lucywgLCIKIAotRVhUUkFfT0VDT05GICs9ICJhY19jdl9maWxlX2FjbG9jYWxfbTQ9eWVzIGFjX2N2X2ZpbGVfZGVwY29tcD1ubyIKK0VYVFJBX09FQ09ORiArPSAiYWNfY3ZfZmlsZV9hY2xvY2FsX200PXllcyBhY19jdl9maWxlX2RlcGNvbXA9bm8gUFlUSE9OX0NPTkZJRz1weXRob24zLWNvbmZpZyIKIAogZG9fY29uZmlndXJlKCkgewogICAgIGNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYWNsb2NhbC9saWJ0b29sLm00IGxpYnRvb2wubTQuaW4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRwL250cC9yZXByb2R1Y2liaWxpdHktcmVzcGVjdC1zb3VyY2UtZGF0ZS1lcG9jaC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRwL250cC9yZXByb2R1Y2liaWxpdHktcmVzcGVjdC1zb3VyY2UtZGF0ZS1lcG9jaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNThlNzFjMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L250cC9udHAvcmVwcm9kdWNpYmlsaXR5LXJlc3BlY3Qtc291cmNlLWRhdGUtZXBvY2gucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi0tLS0gbnRwLTQuMi44cDEyLm9yaWdpbmFsL3NjcmlwdHMvYnVpbGQvbWt2ZXIuaW4JMjAxOC0xMS0xMiAxNDowNjo0OS4zMzMwMjA0MzAgKzEzMDAKLSsrKyBudHAtNC4yLjhwMTIvc2NyaXB0cy9idWlsZC9ta3Zlci5pbgkyMDE4LTExLTEyIDE0OjE1OjA0Ljk0NzQ4MDE2NyArMTMwMAotQEAgLTE1LDcgKzE1LDEyIEBACi0gICopIENvbmZTdHI9IiR7Q29uZlN0cn0tQFZFUl9TVUZGSVhAIiA7OwotIGVzYWMKLSAKLS1Db25mU3RyPSIkQ29uZlN0ciBgTENfVElNRT1DIFRaPVVUQyBkYXRlYCIKLStpZiBbIC1uICIkU09VUkNFX0RBVEVfRVBPQ0giIF07IHRoZW4KLSsgICBDb25mU3RyPSIkQ29uZlN0ciBgTENfVElNRT1DIFRaPVVUQyBkYXRlIC1kQCRTT1VSQ0VfREFURV9FUE9DSCAyPi9kZXYvbnVsbGAiIHx8Ci0rICAgQ29uZlN0cj0iJENvbmZTdHIgYExDX1RJTUU9QyBUWj1VVEMgZGF0ZSAtciAkU09VUkNFX0RBVEVfRVBPQ0hgIgotK2Vsc2UKLSsgICBDb25mU3RyPSIkQ29uZlN0ciBgTENfVElNRT1DIFRaPVVUQyBkYXRlYCIKLStmaQotIAotIGlmIFsgISAtZiAudmVyc2lvbiBdOyB0aGVuCi0gICBlY2hvIDAgPiAudmVyc2lvbgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udHAvbnRwXzQuMi44cDEzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udHAvbnRwXzQuMi44cDEzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTUwZmFiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRwL250cF80LjIuOHAxMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3OSArMCwwIEBACi1TVU1NQVJZID0gIk5ldHdvcmsgVGltZSBQcm90b2NvbCBkYWVtb24gYW5kIHV0aWxpdGllcyIKLURFU0NSSVBUSU9OID0gIlRoZSBOZXR3b3JrIFRpbWUgUHJvdG9jb2wgKE5UUCkgaXMgdXNlZCB0byBcCi1zeW5jaHJvbml6ZSB0aGUgdGltZSBvZiBhIGNvbXB1dGVyIGNsaWVudCBvciBzZXJ2ZXIgdG8gXAotYW5vdGhlciBzZXJ2ZXIgb3IgcmVmZXJlbmNlIHRpbWUgc291cmNlLCBzdWNoIGFzIGEgcmFkaW8gXAotb3Igc2F0ZWxsaXRlIHJlY2VpdmVyIG9yIG1vZGVtLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zdXBwb3J0Lm50cC5vcmciCi1TRUNUSU9OID0gIm5ldCIKLUxJQ0VOU0UgPSAiTlRQIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT00Y2VlMzMyNTc0Njc1MDllNDk4ZjRjZDlhNmE0YmQ1MyIKLQotREVQRU5EUyA9ICJsaWJldmVudCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmVlY2lzLnVkZWwuZWR1L35udHAvbnRwX3Nwb29sL250cDQvbnRwLTQuMi9udHAtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL250cC00LjIuNF9wNi1uYW5vLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlcHJvZHVjaWJpbGl0eS1maXhlZC1wYXRoLXRvLXBvc2l4LXNoZWxsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlcHJvZHVjaWJpbGl0eS1yZXNwZWN0LXNvdXJjZS1kYXRlLWVwb2NoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL250cGQgXAotICAgICAgICAgICBmaWxlOi8vbnRwLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vbnRwZGF0ZSBcCi0gICAgICAgICAgIGZpbGU6Ly9udHBkYXRlLmRlZmF1bHQgXAotICAgICAgICAgICBmaWxlOi8vbnRwZGF0ZS5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL250cGQuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9zbnRwLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vc250cCBcCi0gICAgICAgICAgIGZpbGU6Ly9udHBkLmxpc3QgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWEwNDBhYjliNGNhNjU2YjUyMjliODlkNmI4MjJmMTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjg4NzcyY2VjZmNkOWE1MzY5NGZmYWIxMDhkMTgyNWEzMWJhNzdmM2E4NDY2YjA0MDFiYWVjYTNiYzIzMmEzOCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgdXNlcmFkZCBzeXN0ZW1kIHBrZ2NvbmZpZwotCi0jIFRoZSBhY19jdl9oZWFkZXJfcmVhZGxpbmVfaGlzdG9yeSBpcyB0byBzdG9wIG50cGRjIGRlcGVuZGluZyBvbiBlaXRoZXIKLSMgcmVhZGxpbmUgb3IgY3Vyc2VzCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1uZXQtc25tcC1jb25maWc9bm8gXAotICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbnRwc25tcGQgXAotICAgICAgICAgICAgICAgICBhY19jdl9oZWFkZXJfcmVhZGxpbmVfaGlzdG9yeV9oPW5vIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLXlpZWxkaW5nX3NlbGVjdD15ZXMgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtbG9jZmlsZT1yZWRoYXQgXAotICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcnBhdGggXAotICAgICAgICAgICAgICAgICAiCi1DRkxBR1NfYXBwZW5kID0gIiAtRFBUWVNfQVJFX0dFVFBUIC1EUFRZU19BUkVfU0VBUkNIRUQiCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1OVFBfVVNFUl9IT01FID89ICIvdmFyL2xpYi9udHAiCi1VU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZS1kaXIgJHtOVFBfVVNFUl9IT01FfSBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgXAotICAgICAgICAgICAgICAgICAgICAgICAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIG50cCIKLQotIyBOQjogZGVidWcgaXMgZGVmYXVsdC1lbmFibGVkIGJ5IE5UUDsga2VlcCBpdCBkZWZhdWx0LWVuYWJsZWQgaGVyZS4KLVBBQ0tBR0VDT05GSUcgPz89ICJjYXAgZGVidWcgcmVmY2xvY2tzIG9wZW5zc2wgXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbC1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtb3BlbnNzbC1pbmNkaXI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtY3J5cHRvLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1vcGVuc3NsIC0td2l0aG91dC1jcnlwdG8sIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbY2FwXSA9ICItLWVuYWJsZS1saW51eGNhcHMsLS1kaXNhYmxlLWxpbnV4Y2FwcyxsaWJjYXAiCi1QQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtbGluZWVkaXRsaWJzLC0td2l0aG91dC1saW5lZWRpdGxpYnMscmVhZGxpbmUiCi1QQUNLQUdFQ09ORklHW3JlZmNsb2Nrc10gPSAiLS1lbmFibGUtYWxsLWNsb2NrcywtLWRpc2FibGUtYWxsLWNsb2NrcyxwcHMtdG9vbHMiCi1QQUNLQUdFQ09ORklHW2RlYnVnXSA9ICItLWVuYWJsZS1kZWJ1Z2dpbmcsLS1kaXNhYmxlLWRlYnVnZ2luZyIKLVBBQ0tBR0VDT05GSUdbbWRuc10gPSAiYWNfY3ZfaGVhZGVyX2Ruc19zZF9oPXllcyxhY19jdl9oZWFkZXJfZG5zX3NkX2g9bm8sbWRucyIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9udHAuY29uZiAke0R9JHtzeXNjb25mZGlyfQotICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vbnRwZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L250cGRhdGUgJHtEfSR7YmluZGlyfS9udHBkYXRlLXN5bmMKLQotICAgIGluc3RhbGwgLW0gNzU1IC1kICR7RH0ke05UUF9VU0VSX0hPTUV9Ci0gICAgY2hvd24gbnRwOm50cCAke0R9JHtOVFBfVVNFUl9IT01FfQotCi0gICAgIyBGaXggaGFyZGNvZGVkIHBhdGhzIGluIHNjcmlwdHMKLSAgICBzZWQgLWkgJ3MhL3Vzci9zYmluLyEke3NiaW5kaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYwotICAgIHNlZCAtaSAncyEvdXNyL2Jpbi8hJHtiaW5kaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYwotICAgIHNlZCAtaSAncyEvZXRjLyEke3N5c2NvbmZkaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYwotICAgIHNlZCAtaSAncyEvdmFyLyEke2xvY2Fsc3RhdGVkaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYwotICAgIHNlZCAtaSAncyFeUEFUSD0uKiFQQVRIPSR7YmFzZV9zYmluZGlyfToke2Jhc2VfYmluZGlyfToke3NiaW5kaXJ9OiR7YmluZGlyfSEnICR7RH0ke2JpbmRpcn0vbnRwZGF0ZS1zeW5jCi0gICAgc2VkIC1pICcxcywjIS4qcGVybCAtdywjISAke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtzYmluZGlyfS9udHB0cmFjZQotICAgIHNlZCAtaSAnL3VzZS9pIHVzZSB3YXJuaW5nczsnICR7RH0ke3NiaW5kaXJ9L250cHRyYWNlCi0gICAgc2VkIC1pICcxcywjIS4qcGVybCwjISAke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtzYmluZGlyfS9udHAtd2FpdAotICAgIHNlZCAtaSAnL3VzZS9pIHVzZSB3YXJuaW5nczsnICR7RH0ke3NiaW5kaXJ9L250cC13YWl0Ci0gICAgc2VkIC1pICcxcywjIS4qcGVybCAtdywjISAke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtzYmluZGlyfS9jYWxjX3RpY2thZGoKLSAgICBzZWQgLWkgJy91c2UvaSB1c2Ugd2FybmluZ3M7JyAke0R9JHtzYmluZGlyfS9jYWxjX3RpY2thZGoKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLSAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L250cGRhdGUuZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L250cGRhdGUKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zbnRwICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQKLSAgICBsbiAtcyAke2JpbmRpcn0vbnRwZGF0ZS1zeW5jICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9udHBkYXRlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbnRwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NudHAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLQotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9udHAtdW5pdHMuZAotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L250cGQubGlzdCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L250cC11bml0cy5kLzYwLW50cGQubGlzdAotCi0gICAgIyBSZW1vdmUgYW4gZW1wdHkgbGliZXhlY2Rpci4KLSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsaWJleGVjZGlyfQotfQotCi1QQUNLQUdFUyArPSAibnRwZGF0ZSBzbnRwIG50cGRjIG50cHEgJHtQTn0tdGlja2FkaiAke1BOfS11dGlscyIKLSMgTk9URTogeW91IGRvbid0IG5lZWQgbnRwZGF0ZSwgdXNlICJudHBkIC1xIC1nIC14IgotCi0jIG50cCBvcmlnaW5hbGx5IGluY2x1ZGVzIHRpY2thZGouIEl0J3Mgc3BsaXQgb2ZmIGZvciBpbmNsdXNpb24gaW4gc21hbGwgZmlybXdhcmUgaW1hZ2VzIG9uIHBsYXRmb3JtcwotIyB3aXRoIHdvbmt5IGNsb2NrcyAoZS5nLiBPcGVuU2x1ZykKLVJERVBFTkRTXyR7UE59ID0gIiR7UE59LXRpY2thZGoiCi0jIG50cGQgcmVxdWlyZSBsaWJnY2MgZm9yIGV4ZWN1dGlvbgotUkRFUEVORFNfJHtQTn0gKz0gImxpYmdjYyIKLSMgSGFuZGxlIG1vdmUgZnJvbSBiaW4gdG8gdXRpbHMgcGFja2FnZQotUlBST1ZJREVTXyR7UE59LXV0aWxzID0gIiR7UE59LWJpbiIKLVJSRVBMQUNFU18ke1BOfS11dGlscyA9ICIke1BOfS1iaW4iCi1SQ09ORkxJQ1RTXyR7UE59LXV0aWxzID0gIiR7UE59LWJpbiIKLSMgbnRwZGMgYW5kIG50cHEgd2VyZSBzcGxpdCBvdXQgb2YgbnRwLXV0aWxzCi1SREVQRU5EU18ke1BOfS11dGlscyA9ICJudHBkYyBudHBxIgotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IG50cGRhdGUgc250cCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJudHBkLnNlcnZpY2UiCi1TWVNURU1EX1NFUlZJQ0VfbnRwZGF0ZSA9ICJudHBkYXRlLnNlcnZpY2UiCi1TWVNURU1EX1NFUlZJQ0Vfc250cCA9ICJzbnRwLnNlcnZpY2UiCi1TWVNURU1EX0FVVE9fRU5BQkxFX3NudHAgPSAiZGlzYWJsZSIKLQotUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLQotUlBST1ZJREVTX250cGRhdGUgKz0gIm50cGRhdGUtc3lzdGVtZCIKLVJSRVBMQUNFU19udHBkYXRlICs9ICJudHBkYXRlLXN5c3RlbWQiCi1SQ09ORkxJQ1RTX250cGRhdGUgKz0gIm50cGRhdGUtc3lzdGVtZCIKLQotUlNVR0dFU1RTXyR7UE59ID0gImlhbmEtZXRjIgotCi1GSUxFU18ke1BOfSA9ICIke3NiaW5kaXJ9L250cGQubnRwICR7c3lzY29uZmRpcn0vbnRwLmNvbmYgJHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCBcCi0gICAgJHtOVFBfVVNFUl9IT01FfSBcCi0gICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L250cC11bml0cy5kLzYwLW50cGQubGlzdCBcCi0iCi1GSUxFU18ke1BOfS10aWNrYWRqID0gIiR7c2JpbmRpcn0vdGlja2FkaiIKLUZJTEVTXyR7UE59LXV0aWxzID0gIiR7c2JpbmRpcn0gJHtkYXRhZGlyfS9udHAvbGliIgotUkRFUEVORFNfJHtQTn0tdXRpbHMgKz0gInBlcmwiCi1GSUxFU19udHBkYXRlID0gIiR7c2JpbmRpcn0vbnRwZGF0ZSBcCi0gICAgJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQvbnRwZGF0ZS1zeW5jIFwKLSAgICAke2JpbmRpcn0vbnRwZGF0ZS1zeW5jIFwKLSAgICAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvbnRwZGF0ZSBcCi0gICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9udHBkYXRlLnNlcnZpY2UgXAotIgotRklMRVNfc250cCA9ICIke3NiaW5kaXJ9L3NudHAgXAotICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvc250cCBcCi0gICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc250cC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAiCi1GSUxFU19udHBkYyA9ICIke3NiaW5kaXJ9L250cGRjIgotRklMRVNfbnRwcSA9ICIke3NiaW5kaXJ9L250cHEiCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L250cC5jb25mIgotQ09ORkZJTEVTX250cGRhdGUgPSAiJHtzeXNjb25mZGlyfS9kZWZhdWx0L250cGRhdGUiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJudHBkIgotIyBObyBkZXBlbmRlbmNpZXMsIHNvIGp1c3QgZ28gaW4gYXQgdGhlIHN0YW5kYXJkIGxldmVsICgyMCkKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgotCi1wa2dfcG9zdGluc3RfbnRwZGF0ZSgpIHsKLSAgICBpZiAhIGdyZXAgLXEgLXMgbnRwZGF0ZSAkRC92YXIvc3Bvb2wvY3Jvbi9yb290OyB0aGVuCi0gICAgICAgIGVjaG8gImFkZGluZyBjcm9udGFiIgotICAgICAgICB0ZXN0IC1kICREL3Zhci9zcG9vbC9jcm9uIHx8IG1rZGlyIC1wICREL3Zhci9zcG9vbC9jcm9uCi0gICAgICAgIGVjaG8gIjMwICogKiAqICogICAgJHtiaW5kaXJ9L250cGRhdGUtc3luYyBzaWxlbnQiID4+ICREL3Zhci9zcG9vbC9jcm9uL3Jvb3QKLSAgICBmaQotfQotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJudHBkIgotQUxURVJOQVRJVkVfTElOS19OQU1FW250cGRdID0gIiR7c2JpbmRpcn0vbnRwZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRwL250cF80LjIuOHAxNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnRwL250cF80LjIuOHAxNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZGY2NjA4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udHAvbnRwXzQuMi44cDE0LmJiCkBAIC0wLDAgKzEsMTc4IEBACitTVU1NQVJZID0gIk5ldHdvcmsgVGltZSBQcm90b2NvbCBkYWVtb24gYW5kIHV0aWxpdGllcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBOZXR3b3JrIFRpbWUgUHJvdG9jb2wgKE5UUCkgaXMgdXNlZCB0byBcCitzeW5jaHJvbml6ZSB0aGUgdGltZSBvZiBhIGNvbXB1dGVyIGNsaWVudCBvciBzZXJ2ZXIgdG8gXAorYW5vdGhlciBzZXJ2ZXIgb3IgcmVmZXJlbmNlIHRpbWUgc291cmNlLCBzdWNoIGFzIGEgcmFkaW8gXAorb3Igc2F0ZWxsaXRlIHJlY2VpdmVyIG9yIG1vZGVtLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9zdXBwb3J0Lm50cC5vcmciCitTRUNUSU9OID0gIm5ldCIKK0xJQ0VOU0UgPSAiTlRQIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT00MTkwYjM5NDM1NjExZTkyYTRkYTc0ZTY4MjYyM2YxOSIKKworREVQRU5EUyA9ICJsaWJldmVudCIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmVlY2lzLnVkZWwuZWR1L35udHAvbnRwX3Nwb29sL250cDQvbnRwLTQuMi9udHAtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL250cC00LjIuNF9wNi1uYW5vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlcHJvZHVjaWJpbGl0eS1maXhlZC1wYXRoLXRvLXBvc2l4LXNoZWxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL250cGQgXAorICAgICAgICAgICBmaWxlOi8vbnRwLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vbnRwZGF0ZSBcCisgICAgICAgICAgIGZpbGU6Ly9udHBkYXRlLmRlZmF1bHQgXAorICAgICAgICAgICBmaWxlOi8vbnRwZGF0ZS5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL250cGQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9zbnRwLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vc250cCBcCisgICAgICAgICAgIGZpbGU6Ly9udHBkLmxpc3QgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzgzZWRhZjFkNjhkZGY2NTFiZGU2NGVkYTU0YTU3OWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTk2MGU0ZjA4MWY2YWFmZDEwOGQ3MjFiYzNhYjE1ZjllOGRmZDA4ZGMwODMzOWFhOTViY2E5ZDI1NDVlNGViNyIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgdXNlcmFkZCBzeXN0ZW1kIHBrZ2NvbmZpZworCisjIFRoZSBhY19jdl9oZWFkZXJfcmVhZGxpbmVfaGlzdG9yeSBpcyB0byBzdG9wIG50cGRjIGRlcGVuZGluZyBvbiBlaXRoZXIKKyMgcmVhZGxpbmUgb3IgY3Vyc2VzCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1uZXQtc25tcC1jb25maWc9bm8gXAorICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbnRwc25tcGQgXAorICAgICAgICAgICAgICAgICBhY19jdl9oZWFkZXJfcmVhZGxpbmVfaGlzdG9yeV9oPW5vIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXlpZWxkaW5nX3NlbGVjdD15ZXMgXAorICAgICAgICAgICAgICAgICAtLXdpdGgtbG9jZmlsZT1yZWRoYXQgXAorICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtcnBhdGggXAorICAgICAgICAgICAgICAgICAiCitDRkxBR1NfYXBwZW5kID0gIiAtRFBUWVNfQVJFX0dFVFBUIC1EUFRZU19BUkVfU0VBUkNIRUQiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitOVFBfVVNFUl9IT01FID89ICIvdmFyL2xpYi9udHAiCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZS1kaXIgJHtOVFBfVVNFUl9IT01FfSBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tbm8tY3JlYXRlLWhvbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIG50cCIKKworIyBOQjogZGVidWcgaXMgZGVmYXVsdC1lbmFibGVkIGJ5IE5UUDsga2VlcCBpdCBkZWZhdWx0LWVuYWJsZWQgaGVyZS4KK1BBQ0tBR0VDT05GSUcgPz89ICJjYXAgZGVidWcgcmVmY2xvY2tzIG9wZW5zc2wgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbC1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtb3BlbnNzbC1pbmNkaXI9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtY3J5cHRvLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1vcGVuc3NsIC0td2l0aG91dC1jcnlwdG8sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbY2FwXSA9ICItLWVuYWJsZS1saW51eGNhcHMsLS1kaXNhYmxlLWxpbnV4Y2FwcyxsaWJjYXAiCitQQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICItLXdpdGgtbGluZWVkaXRsaWJzLC0td2l0aG91dC1saW5lZWRpdGxpYnMscmVhZGxpbmUiCitQQUNLQUdFQ09ORklHW3JlZmNsb2Nrc10gPSAiLS1lbmFibGUtYWxsLWNsb2NrcywtLWRpc2FibGUtYWxsLWNsb2NrcyxwcHMtdG9vbHMiCitQQUNLQUdFQ09ORklHW2RlYnVnXSA9ICItLWVuYWJsZS1kZWJ1Z2dpbmcsLS1kaXNhYmxlLWRlYnVnZ2luZyIKK1BBQ0tBR0VDT05GSUdbbWRuc10gPSAiYWNfY3ZfaGVhZGVyX2Ruc19zZF9oPXllcyxhY19jdl9oZWFkZXJfZG5zX3NkX2g9bm8sbWRucyIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9udHAuY29uZiAke0R9JHtzeXNjb25mZGlyfQorICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vbnRwZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L250cGRhdGUgJHtEfSR7YmluZGlyfS9udHBkYXRlLXN5bmMKKworICAgIGluc3RhbGwgLW0gNzU1IC1kICR7RH0ke05UUF9VU0VSX0hPTUV9CisgICAgY2hvd24gbnRwOm50cCAke0R9JHtOVFBfVVNFUl9IT01FfQorCisgICAgIyBGaXggaGFyZGNvZGVkIHBhdGhzIGluIHNjcmlwdHMKKyAgICBzZWQgLWkgJ3MhL3Vzci9zYmluLyEke3NiaW5kaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYworICAgIHNlZCAtaSAncyEvdXNyL2Jpbi8hJHtiaW5kaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYworICAgIHNlZCAtaSAncyEvZXRjLyEke3N5c2NvbmZkaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYworICAgIHNlZCAtaSAncyEvdmFyLyEke2xvY2Fsc3RhdGVkaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCAke0R9JHtiaW5kaXJ9L250cGRhdGUtc3luYworICAgIHNlZCAtaSAncyFeUEFUSD0uKiFQQVRIPSR7YmFzZV9zYmluZGlyfToke2Jhc2VfYmluZGlyfToke3NiaW5kaXJ9OiR7YmluZGlyfSEnICR7RH0ke2JpbmRpcn0vbnRwZGF0ZS1zeW5jCisgICAgc2VkIC1pICcxcywjIS4qcGVybCAtdywjISAke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtzYmluZGlyfS9udHB0cmFjZQorICAgIHNlZCAtaSAnL3VzZS9pIHVzZSB3YXJuaW5nczsnICR7RH0ke3NiaW5kaXJ9L250cHRyYWNlCisgICAgc2VkIC1pICcxcywjIS4qcGVybCwjISAke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtzYmluZGlyfS9udHAtd2FpdAorICAgIHNlZCAtaSAnL3VzZS9pIHVzZSB3YXJuaW5nczsnICR7RH0ke3NiaW5kaXJ9L250cC13YWl0CisgICAgc2VkIC1pICcxcywjIS4qcGVybCAtdywjISAke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtzYmluZGlyfS9jYWxjX3RpY2thZGoKKyAgICBzZWQgLWkgJy91c2UvaSB1c2Ugd2FybmluZ3M7JyAke0R9JHtzYmluZGlyfS9jYWxjX3RpY2thZGoKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L250cGRhdGUuZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L250cGRhdGUKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zbnRwICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvCisKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQKKyAgICBsbiAtcyAke2JpbmRpcn0vbnRwZGF0ZS1zeW5jICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9udHBkYXRlLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbnRwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NudHAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9udHAtdW5pdHMuZAorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L250cGQubGlzdCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L250cC11bml0cy5kLzYwLW50cGQubGlzdAorCisgICAgIyBSZW1vdmUgYW4gZW1wdHkgbGliZXhlY2Rpci4KKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsaWJleGVjZGlyfQorfQorCitQQUNLQUdFUyArPSAibnRwZGF0ZSBzbnRwIG50cGRjIG50cHEgJHtQTn0tdGlja2FkaiAke1BOfS11dGlscyIKKyMgTk9URTogeW91IGRvbid0IG5lZWQgbnRwZGF0ZSwgdXNlICJudHBkIC1xIC1nIC14IgorCisjIG50cCBvcmlnaW5hbGx5IGluY2x1ZGVzIHRpY2thZGouIEl0J3Mgc3BsaXQgb2ZmIGZvciBpbmNsdXNpb24gaW4gc21hbGwgZmlybXdhcmUgaW1hZ2VzIG9uIHBsYXRmb3JtcworIyB3aXRoIHdvbmt5IGNsb2NrcyAoZS5nLiBPcGVuU2x1ZykKK1JERVBFTkRTXyR7UE59ID0gIiR7UE59LXRpY2thZGoiCisjIG50cGQgcmVxdWlyZSBsaWJnY2MgZm9yIGV4ZWN1dGlvbgorUkRFUEVORFNfJHtQTn0gKz0gImxpYmdjYyIKKyMgSGFuZGxlIG1vdmUgZnJvbSBiaW4gdG8gdXRpbHMgcGFja2FnZQorUlBST1ZJREVTXyR7UE59LXV0aWxzID0gIiR7UE59LWJpbiIKK1JSRVBMQUNFU18ke1BOfS11dGlscyA9ICIke1BOfS1iaW4iCitSQ09ORkxJQ1RTXyR7UE59LXV0aWxzID0gIiR7UE59LWJpbiIKKyMgbnRwZGMgYW5kIG50cHEgd2VyZSBzcGxpdCBvdXQgb2YgbnRwLXV0aWxzCitSREVQRU5EU18ke1BOfS11dGlscyA9ICJudHBkYyBudHBxIgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IG50cGRhdGUgc250cCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJudHBkLnNlcnZpY2UiCitTWVNURU1EX1NFUlZJQ0VfbnRwZGF0ZSA9ICJudHBkYXRlLnNlcnZpY2UiCitTWVNURU1EX1NFUlZJQ0Vfc250cCA9ICJzbnRwLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFX3NudHAgPSAiZGlzYWJsZSIKKworUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKKworUlBST1ZJREVTX250cGRhdGUgKz0gIm50cGRhdGUtc3lzdGVtZCIKK1JSRVBMQUNFU19udHBkYXRlICs9ICJudHBkYXRlLXN5c3RlbWQiCitSQ09ORkxJQ1RTX250cGRhdGUgKz0gIm50cGRhdGUtc3lzdGVtZCIKKworUlNVR0dFU1RTXyR7UE59ID0gImlhbmEtZXRjIgorCitGSUxFU18ke1BOfSA9ICIke3NiaW5kaXJ9L250cGQubnRwICR7c3lzY29uZmRpcn0vbnRwLmNvbmYgJHtzeXNjb25mZGlyfS9pbml0LmQvbnRwZCBcCisgICAgJHtOVFBfVVNFUl9IT01FfSBcCisgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L250cC11bml0cy5kLzYwLW50cGQubGlzdCBcCisiCitGSUxFU18ke1BOfS10aWNrYWRqID0gIiR7c2JpbmRpcn0vdGlja2FkaiIKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7c2JpbmRpcn0gJHtkYXRhZGlyfS9udHAvbGliIgorUkRFUEVORFNfJHtQTn0tdXRpbHMgKz0gInBlcmwiCitGSUxFU19udHBkYXRlID0gIiR7c2JpbmRpcn0vbnRwZGF0ZSBcCisgICAgJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQvbnRwZGF0ZS1zeW5jIFwKKyAgICAke2JpbmRpcn0vbnRwZGF0ZS1zeW5jIFwKKyAgICAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvbnRwZGF0ZSBcCisgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9udHBkYXRlLnNlcnZpY2UgXAorIgorRklMRVNfc250cCA9ICIke3NiaW5kaXJ9L3NudHAgXAorICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2RlZmF1bHQvc250cCBcCisgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc250cC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAiCitGSUxFU19udHBkYyA9ICIke3NiaW5kaXJ9L250cGRjIgorRklMRVNfbnRwcSA9ICIke3NiaW5kaXJ9L250cHEiCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L250cC5jb25mIgorQ09ORkZJTEVTX250cGRhdGUgPSAiJHtzeXNjb25mZGlyfS9kZWZhdWx0L250cGRhdGUiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJudHBkIgorIyBObyBkZXBlbmRlbmNpZXMsIHNvIGp1c3QgZ28gaW4gYXQgdGhlIHN0YW5kYXJkIGxldmVsICgyMCkKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgorCitwa2dfcG9zdGluc3RfbnRwZGF0ZSgpIHsKKyAgICBpZiAhIGdyZXAgLXEgLXMgbnRwZGF0ZSAkRC92YXIvc3Bvb2wvY3Jvbi9yb290OyB0aGVuCisgICAgICAgIGVjaG8gImFkZGluZyBjcm9udGFiIgorICAgICAgICB0ZXN0IC1kICREL3Zhci9zcG9vbC9jcm9uIHx8IG1rZGlyIC1wICREL3Zhci9zcG9vbC9jcm9uCisgICAgICAgIGVjaG8gIjMwICogKiAqICogICAgJHtiaW5kaXJ9L250cGRhdGUtc3luYyBzaWxlbnQiID4+ICREL3Zhci9zcG9vbC9jcm9uL3Jvb3QKKyAgICBmaQorfQorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJudHBkIgorQUxURVJOQVRJVkVfTElOS19OQU1FW250cGRdID0gIiR7c2JpbmRpcn0vbnRwZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnZtZXRjbGkvbnZtZXRjbGlfMC43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9udm1ldGNsaS9udm1ldGNsaV8wLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzFmNTVlMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvbnZtZXRjbGkvbnZtZXRjbGlfMC43LmJiCkBAIC0wLDAgKzEsMzkgQEAKK1NVTU1BUlkgPSAiTlZNLUV4cHJlc3MgdGFyZ2V0IHVzZXIgc3BhY2UgY29uZmlndXJhdGlvbiB1dGlsaXR5LiIKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgY29tbWFuZCBsaW5lIGludGVyZmFjZSB0byB0aGUgTlZNZSBcCitvdmVyIEZhYnJpY3MgbnZtZXQgaW4gdGhlIExpbnV4IGtlcm5lbC4gIEl0IGFsbG93cyBjb25maWd1cmluZyB0aGUgbnZtZXQgXAoraW50ZXJhY3RpdmVseSBhcyB3ZWxsIGFzIHNhdmluZyAvIHJlc3RvcmluZyB0aGUgY29uZmlndXJhdGlvbiB0byAvIGZyb20gYSBqc29uIFwKK2ZpbGUuIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWRlY2U3ODIxYmYzZmQ3MGZlMTMwOWVhYTM3ZDUyYTIiCisKK2luaGVyaXQgc3lzdGVtZCBzZXR1cHRvb2xzMworCisjIG52bWV0IHNlcnZpY2Ugd2lsbCBzdGFydCBhbmQgc3RvcCB0aGUgTlZNZSBUYXJnZXQgY29uZmlndXJhdGlvbiBvbiBib290IGFuZAorIyBzaHV0ZG93biBmcm9tIGEgc2F2ZWQgTlZNZSBUYXJnZXQgY29uZmlndXJhdGlvbiBpbiB0aGUgL2V0Yy9udm1ldC9jb25maWcuanNvbgorIyBmaWxlLiBUaGlzIGZpbGUgaXMgbm90IGluc3RhbGxlZCBieSBkZWZhdWx0IHNpbmNlIHRoZSBjb25maWd1cmF0aW9uIHdpbGwgdmFyeQorIyBvbiByZWFsIHN5c3RlbXMuIEV4YW1wbGUgY29uZmlndXJhdGlvbiBmaWxlcyBhcmUgcHJvdmlkZWQgYnkgaW5jbHVkaW5nIHRoZQorIyBudm1ldGNsaS1leGFtcGxlcyBwYWNrYWdlLgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm52bWV0LnNlcnZpY2UiCisKK1NZU1RFTURfQVVUT19FTkFCTEUgPz0gImRpc2FibGUiCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zIHB5dGhvbjMtc2l4IHB5dGhvbjMtcHlwYXJzaW5nIHB5dGhvbjMtY29uZmlnc2hlbGwtZmIiCisKK1NSQ1JFViA9ICIwYTZiMDg4ZGIyZGMyZTVkZTExZTZmMjNmMWU4OTBlNGI1NGZlZTY0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXQuaW5mcmFkZWFkLm9yZy91c2Vycy9oY2gvbnZtZXRjbGkuZ2l0O2JyYW5jaD1tYXN0ZXIiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgSW5zdGFsbCBleGFtcGxlIGNvbmZpZ3VyYXRpb24gc2NyaXB0cy4KKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L252bWV0CisgICAgY3AgLWZyICR7U30vZXhhbXBsZXMgJHtEfSR7ZGF0YWRpcn0vbnZtZXQvCisKKyAgICAjIEluc3RhbGwgc3lzdGVtZCBzZXJ2aWNlIGZpbGUuCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGNwIC1mciAke1N9L252bWV0LnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KK30KKworIyBFeGFtcGxlcyBwYWNrYWdlIGNvbnRhaW5zIGV4YW1wbGUganNvbiBmaWxlcyB1c2VkIHRvIGNvbmZpZ3VyZSBudm1ldC4KK1BBQ0tBR0VTICs9ICIke1BOfS1leGFtcGxlcyIKK0ZJTEVTXyR7UE59LWV4YW1wbGVzID0gIiR7ZGF0YWRpcn0vbnZtZXQvZXhhbXBsZXMvKiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvaXBtaV9zZXJpYWxfYm1jX2VtdS5jLWluY2x1ZGUtcmVhZGxpbmUuaC1mcm9tLXJlYWRsaS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvZmlsZXMvaXBtaV9zZXJpYWxfYm1jX2VtdS5jLWluY2x1ZGUtcmVhZGxpbmUuaC1mcm9tLXJlYWRsaS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTIwOGRlOC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL2ZpbGVzL2lwbWlfc2VyaWFsX2JtY19lbXUuYy1pbmNsdWRlLXJlYWRsaW5lLmgtZnJvbS1yZWFkbGkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIGJlYmZiM2MyNDU4MmVjNGU0NWQ3OWM1YjUyMTM1MTk3YmY3MzczZGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDE0IEp1biAyMDE5IDE0OjE3OjM0ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlwbWlfc2VyaWFsX2JtY19lbXUuYzogaW5jbHVkZSByZWFkbGluZS5oIGZyb20gcmVhZGxpbmUKLQotVGhlIGxpYmVkaXQgaGFkIGJlZW4gcmVtb3ZlZCBhbmQgc3dpdGhlZCB0byByZWFkbGluZS4KLVdlIG5lZWQgdG8gaW5jbHVkZSByZWFkbGluZS5oIGZyb20gcmVhZGxpbmUgcmF0aGVyIHRoYW4gZWRpdGxpbmUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzYW1wbGUvaXBtaV9zZXJpYWxfYm1jX2VtdS5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc2FtcGxlL2lwbWlfc2VyaWFsX2JtY19lbXUuYyBiL3NhbXBsZS9pcG1pX3NlcmlhbF9ibWNfZW11LmMKLWluZGV4IGUwYWUwMTkuLjFiOGJiOWEgMTAwNjQ0Ci0tLS0gYS9zYW1wbGUvaXBtaV9zZXJpYWxfYm1jX2VtdS5jCi0rKysgYi9zYW1wbGUvaXBtaV9zZXJpYWxfYm1jX2VtdS5jCi1AQCAtNDIsNyArNDIsNyBAQAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN5cy9zZWxlY3QuaD4KLS0jaW5jbHVkZSA8ZWRpdGxpbmUvcmVhZGxpbmUuaD4KLSsjaW5jbHVkZSA8cmVhZGxpbmUvcmVhZGxpbmUuaD4KLSAKLSAjZGVmaW5lIF9HTlVfU09VUkNFCi0gI2luY2x1ZGUgPGdldG9wdC5oPgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL29wZW5pcG1pXzIuMC4yNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvb3BlbmlwbWlfMi4wLjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDkyNzgwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbmlwbWkvb3BlbmlwbWlfMi4wLjI3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLVNVTU1BUlkgPSAiSVBNSSAoSW50ZWxsaWdlbnQgUGxhdGZvcm0gTWFuYWdlbWVudCBJbnRlcmZhY2UpIGxpYnJhcnkgYW5kIHRvb2xzIgotREVTQ1JJUFRJT04gPSAiT3BlbklQTUkgaXMgYW4gZWZmb3J0IHRvIGNyZWF0ZSBhIGZ1bGwtZnVuY3Rpb24gSVBNSSBzeXN0ZW0sIFwKLXRvIGFsbG93IGZ1bGwgYWNjZXNzIHRvIGFsbCBJUE1JIGluZm9ybWF0aW9uIG9uIGEgc2VydmVyIFwKLWFuZCB0byBhYnN0cmFjdCBpdCB0byBhIGxldmVsIHRoYXQgd2lsbCBtYWtlIGl0IGVhc3kgdG8gdXNlIgotCi1IT01FUEFHRSA9ICJodHRwOi8vb3BlbmlwbWkuc291cmNlZm9yZ2UubmV0IgotCi1ERVBFTkRTID0gIiBcCi0gICAgZ2xpYi0yLjAgXAotICAgIG5jdXJzZXMgXAotICAgIG5ldC1zbm1wIFwKLSAgICBvcGVuc3NsIFwKLSAgICBwb3B0IFwKLSAgICBweXRob24gXAotICAgIHN3aWctbmF0aXZlIFwKLSAgICByZWFkbGluZSBcCi0gICAgIgotCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEgJiBCU0QiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT1kODA0NWYzYjhmOTI5YzFjYjI5YTFlM2ZkNzM3YjQ5OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkJTRDttZDU9NGIzMThkNDE2MGViNjljOGVlNTM0NTJmZWIxYjRjZGYgXAotICAgICAgICAgICAgICAgICAgICAiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L29wZW5pcG1pL09wZW5JUE1JLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtc3ltbGluay1pbnN0YWxsLWVycm9yLWluLWNtZGxhbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb3BlbmlwbWktbm8tb3BlbmlwbWlndWktbWFuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5pcG1pLXJlbW92ZS1ob3N0LXBhdGgtZnJvbS1sYV9MREZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2lwbWktaW5pdC1maXgtdGhlLWFyZ3VtZW50cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pbmNsdWRlX3N5c190eXBlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pcG1pX3NlcmlhbF9ibWNfZW11LmMtaW5jbHVkZS1yZWFkbGluZS5oLWZyb20tcmVhZGxpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wZW5pcG1pLWhlbHBlciBcCi0gICAgICAgICAgIGZpbGU6Ly9pcG1pLnNlcnZpY2UgXAotICAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9PcGVuSVBNSS0ke1BWfSIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ1MjVjZWFhMDdkZjU0NDA2NzRlN2U2OGE2NzcyZmU3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYzYjFmYWZhYWVjMmUyYmFjMzJmZWM1YTg2OTQxYWQ4YjhjYjY0NTQzNDcwYmQ2ZDgxOWQ3YjE2NjcxM2QyMGIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgcHl0aG9ubmF0aXZlIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQgc3lzdGVtZCBjcGFuLWJhc2UKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMgXAotICAgICAgICAgICAgICAgIC0td2l0aC1wZXJsPScke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvcGVybCcgXAotICAgICAgICAgICAgICAgIC0td2l0aC1weXRob249JyR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbicgXAotICAgICAgICAgICAgICAgIC0td2l0aC1weXRob25pbnN0YWxsPScke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgXAotICAgICAgICAgICAgICAgIC0td2l0aC1nbGlidmVyPTIuMCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImdkYm0iCi1QQUNLQUdFQ09ORklHW2dkYm1dID0gImFjX2N2X2hlYWRlcl9nZGJtX2g9eWVzLGFjX2N2X2hlYWRlcl9nZGJtX2g9bm8sZ2RibSwiCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1wZXJsICR7UE59LXB5dGhvbiIKLVBSSVZBVEVfTElCU18ke1BOfS1wZXJsID0gImxpYk9wZW5JUE1JLnNvLjAiCi0KLUZJTEVTXyR7UE59LXBlcmwgPSAiIFwKLSAgICAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL09wZW5JUE1JLnBtIFwKLSAgICAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL2F1dG8vT3BlbklQTUkvT3BlbklQTUkuc28gXAotICAgICIKLQotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiBcCi0gICAgJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvKi9hdXRvL09wZW5JUE1JLy5kZWJ1ZyBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vLmRlYnVnIFwKLSAgICAiCi0KLWRvX2NvbmZpZ3VyZSAoKSB7Ci0KLSAgICAjIExldCdzIHBlcmZvcm0gcmVndWxhciBjb25maWd1cmF0aW9uIGZpcnN0IHRoZW4gaGFuZGxlIHBlcmwgaXNzdWVzLgotICAgIGF1dG90b29sc19kb19jb25maWd1cmUKLQotICAgIHBlcmxfdmVyPWBwZXJsIC1WOnZlcnNpb24gfCBjdXQgLWRcJyAtZiAyYAotICAgIAotICAgICMgRm9yY2Ugb3BlbmlwbWkgcGVybCBiaW5kaW5ncyB0byBiZSBjb21waWxlZCB1c2luZyBwZXJsLW5hdGl2ZSBpbnN0ZWFkIG9mCi0gICAgIyB0aGUgaG9zdCdzIHBlcmwuIFNldCB0aGUgcHJvcGVyIGluc3RhbGwgZGlyZWN0b3J5IGZvciB0aGUgcmVzdWx0aW5nCi0gICAgIyBvcGVuaXBtaS5wbSBhbmQgb3BlbmlwbWkuc28KLSAgICBmb3IgaSBpbiAke1N9L3N3aWcvTWFrZWZpbGUgJHtTfS9zd2lnL3BlcmwvTWFrZWZpbGU7IGRvCi0gICAgICAgIGVjaG8gIlNBTDogaSA9ICRpIgotICAgICAgICBlY2hvICJTQUw6IFNUQUdJTkdfSU5DRElSX05BVElWRSA9ICRTVEFHSU5HX0lOQ0RJUl9OQVRJVkUiCi0gICAgICAgIGVjaG8gIlNBTDogbGliZGlyID0gJGxpYmRpciIKLSAgICAgICAgc2VkIC1pIC1lICIvXlBFUkxfQ0ZMQUdTL3M6LUkvdXNyL2xvY2FsL2luY2x1ZGU6LUkke1NUQUdJTkdfSU5DRElSX05BVElWRX06ZyIgJGkKLSAgICAgICAgc2VkIC1pIC1lICIvXlBFUkxfQ0ZMQUdTL3M6LUkgLiogOi1JICR7U1RBR0lOR19MSUJESVJ9JHtQRVJMX09XTl9ESVJ9L3Blcmw1LyR7QGdldF9wZXJsX3ZlcnNpb24oZCl9LyR7QGdldF9wZXJsX2FyY2goZCl9L0NPUkUgOmciICRpCi0gICAgICAgIHNlZCAtaSAtZSAiL15QRVJMX0lOU1RBTExfRElSL3M6XlBFUkxfSU5TVEFMTF9ESVIgPSAuKjpQRVJMX0lOU1RBTExfRElSID0gJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvJHBlcmxfdmVyOmciICRpCi0gICAgZG9uZQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgZWNobyAiU0FMOiBEID0gJEQiCi0gICAgZWNobyAiU0FMOiBsaWJkaXIgPSAkbGliZGlyIgotICAgIGluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vaXBtaS5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9pcG1pCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vaXBtaS5zeXNjb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9pcG1pCi0gICAgIyBTQUw6IG12OiBjYW5ub3Qgc3RhdCBgL2xvY2FsZGlzay9sb2FkYnVpbGQvc2xpdHRsZTEvd29ya3NwYWNlL2NndHNfdGVzdF9idWlsZC9iaXRiYWtlX2J1aWxkL3RtcC93b3JrL3g4Nl82NC13cnMtbGludXgvb3BlbmlwbWktMi4wLjE5LXI0L2ltYWdlL3Vzci9saWI2NC9wZXJsNSc6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLSAgICAjIFNBTDogcmVhbCBwYXRoIHRvIHBlcmwgaXMgL2xvY2FsZGlzay9sb2FkYnVpbGQvc2xpdHRsZTEvd29ya3NwYWNlL2NndHNfdGVzdF9idWlsZC9iaXRiYWtlX2J1aWxkL3RtcC93b3JrL3g4Nl82NC13cnMtbGludXgvcGVybC01LjE0LjItcjguMy9wYWNrYWdlL3Vzci9saWI2NC9wZXJsNSBhbmQgaXQgaXMgYSBzeW1saW5rIHRvIHBlcmwgc28gbm8gbmVlZCB0byBtdi4KLSAgICBpZiBbIC1kICR7RH0ke2xpYmRpcn0vcGVybDUgXQotICAgIHRoZW4KLSAgICAgICAgbXYgJHtEfSR7bGliZGlyfS9wZXJsNSAke0R9JHtsaWJkaXJ9L3BlcmwKLSAgICBmaQotIAotICAgICMgZm9yIHN5c3RlbWQKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSAwNjY0ICR7V09SS0RJUn0vaXBtaS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgc2VkIC1pIC1lICJzLEBMSUJFWEVDRElSQCwke2xpYmV4ZWNkaXJ9LGciICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2lwbWkuc2VydmljZQotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZXhlY2Rpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9vcGVuaXBtaS1oZWxwZXIgJHtEfSR7bGliZXhlY2Rpcn0KLX0KLQotSU5JVFNDUklQVF9OQU1FID0gImlwbWkiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAzMCAuIHN0b3AgNzAgMCAxIDIgMyA0IDUgNiAuIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiaXBtaS5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9vcGVuaXBtaV8yLjAuMjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW5pcG1pL29wZW5pcG1pXzIuMC4yOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTk2ZWI5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVuaXBtaS9vcGVuaXBtaV8yLjAuMjguYmIKQEAgLTAsMCArMSwxMTIgQEAKK1NVTU1BUlkgPSAiSVBNSSAoSW50ZWxsaWdlbnQgUGxhdGZvcm0gTWFuYWdlbWVudCBJbnRlcmZhY2UpIGxpYnJhcnkgYW5kIHRvb2xzIgorREVTQ1JJUFRJT04gPSAiT3BlbklQTUkgaXMgYW4gZWZmb3J0IHRvIGNyZWF0ZSBhIGZ1bGwtZnVuY3Rpb24gSVBNSSBzeXN0ZW0sIFwKK3RvIGFsbG93IGZ1bGwgYWNjZXNzIHRvIGFsbCBJUE1JIGluZm9ybWF0aW9uIG9uIGEgc2VydmVyIFwKK2FuZCB0byBhYnN0cmFjdCBpdCB0byBhIGxldmVsIHRoYXQgd2lsbCBtYWtlIGl0IGVhc3kgdG8gdXNlIgorCitIT01FUEFHRSA9ICJodHRwOi8vb3BlbmlwbWkuc291cmNlZm9yZ2UubmV0IgorCitERVBFTkRTID0gIiBcCisgICAgZ2xpYi0yLjAgXAorICAgIG5jdXJzZXMgXAorICAgIG5ldC1zbm1wIFwKKyAgICBvcGVuc3NsIFwKKyAgICBwb3B0IFwKKyAgICBweXRob24zIFwKKyAgICBzd2lnLW5hdGl2ZSBcCisgICAgcmVhZGxpbmUgXAorICAgICIKKworTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xICYgQlNEIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9ZDgwNDVmM2I4ZjkyOWMxY2IyOWExZTNmZDczN2I0OTkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5CU0Q7bWQ1PTRiMzE4ZDQxNjBlYjY5YzhlZTUzNDUyZmViMWI0Y2RmIFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9vcGVuaXBtaS9PcGVuSVBNSS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZml4LXN5bWxpbmstaW5zdGFsbC1lcnJvci1pbi1jbWRsYW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29wZW5pcG1pLW5vLW9wZW5pcG1pZ3VpLW1hbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVuaXBtaS1yZW1vdmUtaG9zdC1wYXRoLWZyb20tbGFfTERGTEFHUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9pcG1pLWluaXQtZml4LXRoZS1hcmd1bWVudHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaW5jbHVkZV9zeXNfdHlwZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vb3BlbmlwbWktaGVscGVyIFwKKyAgICAgICAgICAgZmlsZTovL2lwbWkuc2VydmljZSBcCisgICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L09wZW5JUE1JLSR7UFZ9IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmEzN2YwOGUzMDYwNjJlYzczYzdlZDJhMmJkNGQ1ZjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGU4YjFkZTJhOWEwNDFiNDE5MTMzZWNiMjFmOTU2ZTk5OTg0MWNmMmU3NTllOTczZWViYTlhMzZmOGI0MDk5NiIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBweXRob24zbmF0aXZlIHBlcmxuYXRpdmUgdXBkYXRlLXJjLmQgc3lzdGVtZCBjcGFuLWJhc2UKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMgXAorICAgICAgICAgICAgICAgIC0td2l0aC1wZXJsPScke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvcGVybCcgXAorICAgICAgICAgICAgICAgIC0td2l0aC1weXRob249JyR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zJyBcCisgICAgICAgICAgICAgICAgLS13aXRoLXB5dGhvbmluc3RhbGw9JyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBcCisgICAgICAgICAgICAgICAgLS13aXRoLWdsaWJ2ZXI9Mi4wIgorCitQQUNLQUdFQ09ORklHID8/PSAiZ2RibSIKK1BBQ0tBR0VDT05GSUdbZ2RibV0gPSAiYWNfY3ZfaGVhZGVyX2dkYm1faD15ZXMsYWNfY3ZfaGVhZGVyX2dkYm1faD1ubyxnZGJtLCIKKworUEFDS0FHRVMgKz0gIiR7UE59LXBlcmwgJHtQTn0tcHl0aG9uIgorUFJJVkFURV9MSUJTXyR7UE59LXBlcmwgPSAibGliT3BlbklQTUkuc28uMCIKKworRklMRVNfJHtQTn0tcGVybCA9ICIgXAorICAgICR7bGliZGlyfS9wZXJsL3ZlbmRvcl9wZXJsLyovT3BlbklQTUkucG0gXAorICAgICR7bGliZGlyfS9wZXJsL3ZlbmRvcl9wZXJsLyovYXV0by9PcGVuSVBNSS9PcGVuSVBNSS5zbyBcCisgICAgIgorCitGSUxFU18ke1BOfS1weXRob24gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiIFwKKyAgICAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8qL2F1dG8vT3BlbklQTUkvLmRlYnVnIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8uZGVidWcgXAorICAgICIKKworZG9fY29uZmlndXJlICgpIHsKKworICAgICMgTGV0J3MgcGVyZm9ybSByZWd1bGFyIGNvbmZpZ3VyYXRpb24gZmlyc3QgdGhlbiBoYW5kbGUgcGVybCBpc3N1ZXMuCisgICAgYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZQorCisgICAgcGVybF92ZXI9YHBlcmwgLVY6dmVyc2lvbiB8IGN1dCAtZFwnIC1mIDJgCisgICAgCisgICAgIyBGb3JjZSBvcGVuaXBtaSBwZXJsIGJpbmRpbmdzIHRvIGJlIGNvbXBpbGVkIHVzaW5nIHBlcmwtbmF0aXZlIGluc3RlYWQgb2YKKyAgICAjIHRoZSBob3N0J3MgcGVybC4gU2V0IHRoZSBwcm9wZXIgaW5zdGFsbCBkaXJlY3RvcnkgZm9yIHRoZSByZXN1bHRpbmcKKyAgICAjIG9wZW5pcG1pLnBtIGFuZCBvcGVuaXBtaS5zbworICAgIGZvciBpIGluICR7U30vc3dpZy9NYWtlZmlsZSAke1N9L3N3aWcvcGVybC9NYWtlZmlsZTsgZG8KKyAgICAgICAgZWNobyAiU0FMOiBpID0gJGkiCisgICAgICAgIGVjaG8gIlNBTDogU1RBR0lOR19JTkNESVJfTkFUSVZFID0gJFNUQUdJTkdfSU5DRElSX05BVElWRSIKKyAgICAgICAgZWNobyAiU0FMOiBsaWJkaXIgPSAkbGliZGlyIgorICAgICAgICBzZWQgLWkgLWUgIi9eUEVSTF9DRkxBR1MvczotSS91c3IvbG9jYWwvaW5jbHVkZTotSSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfTpnIiAkaQorICAgICAgICBzZWQgLWkgLWUgIi9eUEVSTF9DRkxBR1MvczotSSAuKiA6LUkgJHtTVEFHSU5HX0xJQkRJUn0ke1BFUkxfT1dOX0RJUn0vcGVybDUvJHtAZ2V0X3BlcmxfdmVyc2lvbihkKX0vJHtAZ2V0X3BlcmxfYXJjaChkKX0vQ09SRSA6ZyIgJGkKKyAgICAgICAgc2VkIC1pIC1lICIvXlBFUkxfSU5TVEFMTF9ESVIvczpeUEVSTF9JTlNUQUxMX0RJUiA9IC4qOlBFUkxfSU5TVEFMTF9ESVIgPSAke2xpYmRpcn0vcGVybC92ZW5kb3JfcGVybC8kcGVybF92ZXI6ZyIgJGkKKyAgICBkb25lCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBlY2hvICJTQUw6IEQgPSAkRCIKKyAgICBlY2hvICJTQUw6IGxpYmRpciA9ICRsaWJkaXIiCisgICAgaW5zdGFsbCAtbSAwNzU1IC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9pcG1pLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2lwbWkKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9pcG1pLnN5c2NvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2lwbWkKKyAgICAjIFNBTDogbXY6IGNhbm5vdCBzdGF0IGAvbG9jYWxkaXNrL2xvYWRidWlsZC9zbGl0dGxlMS93b3Jrc3BhY2UvY2d0c190ZXN0X2J1aWxkL2JpdGJha2VfYnVpbGQvdG1wL3dvcmsveDg2XzY0LXdycy1saW51eC9vcGVuaXBtaS0yLjAuMTktcjQvaW1hZ2UvdXNyL2xpYjY0L3Blcmw1JzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQorICAgICMgU0FMOiByZWFsIHBhdGggdG8gcGVybCBpcyAvbG9jYWxkaXNrL2xvYWRidWlsZC9zbGl0dGxlMS93b3Jrc3BhY2UvY2d0c190ZXN0X2J1aWxkL2JpdGJha2VfYnVpbGQvdG1wL3dvcmsveDg2XzY0LXdycy1saW51eC9wZXJsLTUuMTQuMi1yOC4zL3BhY2thZ2UvdXNyL2xpYjY0L3Blcmw1IGFuZCBpdCBpcyBhIHN5bWxpbmsgdG8gcGVybCBzbyBubyBuZWVkIHRvIG12LgorICAgIGlmIFsgLWQgJHtEfSR7bGliZGlyfS9wZXJsNSBdCisgICAgdGhlbgorICAgICAgICBtdiAke0R9JHtsaWJkaXJ9L3Blcmw1ICR7RH0ke2xpYmRpcn0vcGVybAorICAgIGZpCisgCisgICAgIyBmb3Igc3lzdGVtZAorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NjQgJHtXT1JLRElSfS9pcG1pLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBzZWQgLWkgLWUgInMsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0sZyIgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vaXBtaS5zZXJ2aWNlCisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJleGVjZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L29wZW5pcG1pLWhlbHBlciAke0R9JHtsaWJleGVjZGlyfQorfQorCitJTklUU0NSSVBUX05BTUUgPSAiaXBtaSIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDMwIC4gc3RvcCA3MCAwIDEgMiAzIDQgNSA2IC4iCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJpcG1pLnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW52cG4vb3BlbnZwbl8yLjQuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbnZwbi9vcGVudnBuXzIuNC43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTRlYjI1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvb3BlbnZwbi9vcGVudnBuXzIuNC43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGZ1bGwtZmVhdHVyZWQgU1NMIFZQTiBzb2x1dGlvbiB2aWEgdHVuIGRldmljZS4iCi1IT01FUEFHRSA9ICJodHRwczovL29wZW52cG4ubmV0LyIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdhZWU1OTZlZDJkZWVmZTNlOGE4NjFlMjQyOTJhYmJhIgotREVQRU5EUyA9ICJsem8gb3BlbnNzbCBpcHJvdXRlMiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgotCi1pbmhlcml0IGF1dG90b29scyBzeXN0ZW1kIHVwZGF0ZS1yYy5kCi0KLVNSQ19VUkkgPSAiaHR0cDovL3N3dXBkYXRlLm9wZW52cG4ub3JnL2NvbW11bml0eS9yZWxlYXNlcy8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vb3BlbnZwbiBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVudnBuQC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL29wZW52cG4tdm9sYXRpbGUuY29uZiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjlkNjdjYWJjOWIwNDQxMDYyZWJkNGUxMmJiN2RmZWRiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjczZGNlNTQyZWQzZDZmMDU1MzY3NGY0OTAyNWRmYmRmZjE4MzQ4ZWI4YTI1ZTYyMTUxMzVkNjg2YjE2NTQyM2MiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSArPSAib3BlbnZwbkBsb29wYmFjay1zZXJ2ZXIuc2VydmljZSBvcGVudnBuQGxvb3BiYWNrLWNsaWVudC5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59IgotSU5JVFNDUklQVF9OQU1FXyR7UE59ID0gIm9wZW52cG4iCi1JTklUU0NSSVBUX1BBUkFNU18ke1BOfSA9ICJzdGFydCAxMCAyIDMgNCA1IC4gc3RvcCA3MCAwIDEgNiAuIgotCi1DRkxBR1MgKz0gIi1mbm8taW5saW5lIgotCi0jIEkgd2FudCBvcGVudnBuIHRvIGJlIGFibGUgdG8gcmVhZCBwYXNzd29yZCBmcm9tIGZpbGUgKGhydykKLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtaXByb3V0ZTIiCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJycsICctLWRpc2FibGUtcGx1Z2luLWF1dGgtcGFtJywgZCl9IgotCi0jIEV4cGxpY2l0bHkgc3BlY2lmeSBJUFJPVVRFIHRvIGJ5cGFzcyB0aGUgY29uZmlndXJlLXRpbWUgY2hlY2sgZm9yIC9zYmluL2lwIG9uIHRoZSBob3N0LgotRVhUUkFfT0VDT05GICs9ICJJUFJPVVRFPSR7YmFzZV9zYmluZGlyfS9pcCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9vcGVudnBuICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L29wZW52cG4KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZQotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc2FtcGxlL3NhbXBsZS1jb25maWctZmlsZXMvbG9vcGJhY2stc2VydmVyICAke0R9JHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS9sb29wYmFjay1zZXJ2ZXIuY29uZgotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc2FtcGxlL3NhbXBsZS1jb25maWctZmlsZXMvbG9vcGJhY2stY2xpZW50ICAke0R9JHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS9sb29wYmFjay1jbGllbnQuY29uZgotICAgIGluc3RhbGwgLWRtIDc1NSAke0R9JHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS9zYW1wbGUta2V5cwotICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vc2FtcGxlL3NhbXBsZS1rZXlzLyogJHtEfSR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvc2FtcGxlLWtleXMKLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vcGVudnBuQC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L29wZW52cG5ALnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5AbG9vcGJhY2stc2VydmVyLnNlcnZpY2UKLSAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vcGVudnBuQC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVudnBuQGxvb3BiYWNrLWNsaWVudC5zZXJ2aWNlCi0KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbGliCi0gICAgICAgIGluc3RhbGwgLWQgLW0gNzEwICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvb3BlbnZwbgotCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGVudnBuLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9vcGVudnBuLmNvbmYKLSAgICAgICAgc2VkIC1pIC1lICdzI0BMT0NBTFNUQVRFRElSQCMke2xvY2Fsc3RhdGVkaXJ9I2cnICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvb3BlbnZwbi5jb25mCi0gICAgZmkKLX0KLQotUEFDS0FHRVMgPSsgIiAke1BOfS1zYW1wbGUgIgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLXR1biIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vb3BlbnZwbi9wbHVnaW5zLy5kZWJ1ZyIKLUZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5ALnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZCBcCi0gICAgICAgICAgICAgICAiCi1GSUxFU18ke1BOfS1zYW1wbGUgKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkBsb29wYmFjay1zZXJ2ZXIuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkBsb29wYmFjay1jbGllbnQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVudnBuL29wZW52cG5fMi40LjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L29wZW52cG4vb3BlbnZwbl8yLjQuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOWVmYTU3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9vcGVudnBuL29wZW52cG5fMi40LjguYmIKQEAgLTAsMCArMSw3MyBAQAorU1VNTUFSWSA9ICJBIGZ1bGwtZmVhdHVyZWQgU1NMIFZQTiBzb2x1dGlvbiB2aWEgdHVuIGRldmljZS4iCitIT01FUEFHRSA9ICJodHRwczovL29wZW52cG4ubmV0LyIKK1NFQ1RJT04gPSAibmV0IgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdhZWU1OTZlZDJkZWVmZTNlOGE4NjFlMjQyOTJhYmJhIgorREVQRU5EUyA9ICJsem8gb3BlbnNzbCBpcHJvdXRlMiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgorCitpbmhlcml0IGF1dG90b29scyBzeXN0ZW1kIHVwZGF0ZS1yYy5kCisKK1NSQ19VUkkgPSAiaHR0cDovL3N3dXBkYXRlLm9wZW52cG4ub3JnL2NvbW11bml0eS9yZWxlYXNlcy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vb3BlbnZwbiBcCisgICAgICAgICAgIGZpbGU6Ly9vcGVudnBuQC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL29wZW52cG4tdm9sYXRpbGUuY29uZiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vb3BlbnZwbi5uZXQvY29tbXVuaXR5LWRvd25sb2FkcyIKKworU1JDX1VSSVttZDVzdW1dID0gImU5Y2I0MDU0MmUxN2NlMjk1ZDgwODYwNjkwNzEwYWFiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY1ZTFkYTNmM2EwOGU3ZTkwMGMxNzVlN2ZjMzBkODM0ODgxZmQyZGVhMGViMzliMjUzMjVhODYxYTlkYTBiYzUiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSArPSAib3BlbnZwbkBsb29wYmFjay1zZXJ2ZXIuc2VydmljZSBvcGVudnBuQGxvb3BiYWNrLWNsaWVudC5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59IgorSU5JVFNDUklQVF9OQU1FXyR7UE59ID0gIm9wZW52cG4iCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfSA9ICJzdGFydCAxMCAyIDMgNCA1IC4gc3RvcCA3MCAwIDEgNiAuIgorCitDRkxBR1MgKz0gIi1mbm8taW5saW5lIgorCisjIEkgd2FudCBvcGVudnBuIHRvIGJlIGFibGUgdG8gcmVhZCBwYXNzd29yZCBmcm9tIGZpbGUgKGhydykKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtaXByb3V0ZTIiCitFWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJycsICctLWRpc2FibGUtcGx1Z2luLWF1dGgtcGFtJywgZCl9IgorCisjIEV4cGxpY2l0bHkgc3BlY2lmeSBJUFJPVVRFIHRvIGJ5cGFzcyB0aGUgY29uZmlndXJlLXRpbWUgY2hlY2sgZm9yIC9zYmluL2lwIG9uIHRoZSBob3N0LgorRVhUUkFfT0VDT05GICs9ICJJUFJPVVRFPSR7YmFzZV9zYmluZGlyfS9pcCIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9vcGVudnBuICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L29wZW52cG4KKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZQorICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc2FtcGxlL3NhbXBsZS1jb25maWctZmlsZXMvbG9vcGJhY2stc2VydmVyICAke0R9JHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS9sb29wYmFjay1zZXJ2ZXIuY29uZgorICAgIGluc3RhbGwgLW0gNzU1ICR7U30vc2FtcGxlL3NhbXBsZS1jb25maWctZmlsZXMvbG9vcGJhY2stY2xpZW50ICAke0R9JHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS9sb29wYmFjay1jbGllbnQuY29uZgorICAgIGluc3RhbGwgLWRtIDc1NSAke0R9JHtzeXNjb25mZGlyfS9vcGVudnBuL3NhbXBsZS9zYW1wbGUta2V5cworICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vc2FtcGxlL3NhbXBsZS1rZXlzLyogJHtEfSR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvc2FtcGxlLWtleXMKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vcGVudnBuQC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L29wZW52cG5ALnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5AbG9vcGJhY2stc2VydmVyLnNlcnZpY2UKKyAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9vcGVudnBuQC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vcGVudnBuQGxvb3BiYWNrLWNsaWVudC5zZXJ2aWNlCisKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbGliCisgICAgICAgIGluc3RhbGwgLWQgLW0gNzEwICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9saWIvb3BlbnZwbgorCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9vcGVudnBuLXZvbGF0aWxlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9vcGVudnBuLmNvbmYKKyAgICAgICAgc2VkIC1pIC1lICdzI0BMT0NBTFNUQVRFRElSQCMke2xvY2Fsc3RhdGVkaXJ9I2cnICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvb3BlbnZwbi5jb25mCisgICAgZmkKK30KKworUEFDS0FHRVMgPSsgIiAke1BOfS1zYW1wbGUgIgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLXR1biIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vb3BlbnZwbi9wbHVnaW5zLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL29wZW52cG5ALnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZCBcCisgICAgICAgICAgICAgICAiCitGSUxFU18ke1BOfS1zYW1wbGUgKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkBsb29wYmFjay1zZXJ2ZXIuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3BlbnZwbkBsb29wYmFjay1jbGllbnQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vb3BlbnZwbi9zYW1wbGUvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9yZG1hLWNvcmUvcmRtYS1jb3JlLzAwMDEtUmVtb3ZlLW1hbi1maWxlcy13aGljaC1jYW50LWJlLWJ1aWx0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9yZG1hLWNvcmUvcmRtYS1jb3JlLzAwMDEtUmVtb3ZlLW1hbi1maWxlcy13aGljaC1jYW50LWJlLWJ1aWx0LnBhdGNoCmluZGV4IGYxNDM3YTAuLmZlZWQwMjEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcmRtYS1jb3JlL3JkbWEtY29yZS8wMDAxLVJlbW92ZS1tYW4tZmlsZXMtd2hpY2gtY2FudC1iZS1idWlsdC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmUvMDAwMS1SZW1vdmUtbWFuLWZpbGVzLXdoaWNoLWNhbnQtYmUtYnVpbHQucGF0Y2gKQEAgLTI1NCw5ICsyNTQsMTAgQEAKIGluZGV4IDBiZDllYmExLi44NzZiNmZjZiAxMDA2NDQKIC0tLSBhL3Byb3ZpZGVycy9tbHg1L21hbi9DTWFrZUxpc3RzLnR4dAogKysrIGIvcHJvdmlkZXJzL21seDUvbWFuL0NNYWtlTGlzdHMudHh0Ci1AQCAtMSw3MiArMSw3IEBACitAQCAtMSw4MSArMSw3IEBACiAgcmRtYV9tYW5fcGFnZXMoCiAtICBtbHg1ZHZfYWxsb2NfZG0uMy5tZAorLSAgbWx4NWR2X2FsbG9jX3Zhci4zLm1kCiAtICBtbHg1ZHZfY3JlYXRlX2NxLjMubWQKIC0gIG1seDVkdl9jcmVhdGVfZmxvdy4zLm1kCiAtICBtbHg1ZHZfY3JlYXRlX2Zsb3dfYWN0aW9uX21vZGlmeV9oZWFkZXIuMy5tZApAQCAtMjc0LDYgKzI3NSw3IEBACiAtICBtbHg1ZHZfZGV2eF9zdWJzY3JpYmVfZGV2eF9ldmVudC4zLm1kCiAtICBtbHg1ZHZfZGV2eF91bWVtX3JlZy4zLm1kCiAtICBtbHg1ZHZfZHJfZmxvdy4zLm1kCistICBtbHg1ZHZfZHVtcC4zLm1kCiAtICBtbHg1ZHZfZmxvd19hY3Rpb25fZXNwLjMubWQKICAgIG1seDVkdl9nZXRfY2xvY2tfaW5mby4zCiAgICBtbHg1ZHZfaW5pdF9vYmouMwpAQCAtMjg1LDYgKzI4Nyw3IEBACiAgICBtbHg1ZHYuNwogICkKIC1yZG1hX2FsaWFzX21hbl9wYWdlcygKKy0gbWx4NWR2X2FsbG9jX3Zhci4zIG1seDVkdl9mcmVlX3Zhci4zCiAtIG1seDVkdl9jcmVhdGVfbWtleS4zIG1seDVkdl9kZXN0cm95X21rZXkuMwogLSBtbHg1ZHZfZGV2eF9hbGxvY191YXIuMyBtbHg1ZHZfZGV2eF9mcmVlX3Vhci4zCiAtIG1seDVkdl9kZXZ4X2NyZWF0ZV9jbWRfY29tcC4zIG1seDVkdl9kZXZ4X2Rlc3Ryb3lfY21kX2NvbXAuMwpAQCAtMzExLDEwICszMTQsMTIgQEAKIC0gbWx4NWR2X2RyX2Zsb3cuMyBtbHg1ZHZfZHJfYWN0aW9uX2NyZWF0ZV9kZXN0X3Zwb3J0LjMKIC0gbWx4NWR2X2RyX2Zsb3cuMyBtbHg1ZHZfZHJfYWN0aW9uX2NyZWF0ZV9mbG93X2NvdW50ZXIuMwogLSBtbHg1ZHZfZHJfZmxvdy4zIG1seDVkdl9kcl9hY3Rpb25fY3JlYXRlX2Ryb3AuMworLSBtbHg1ZHZfZHJfZmxvdy4zIG1seDVkdl9kcl9hY3Rpb25fY3JlYXRlX2Zsb3dfbWV0ZXIuMwogLSBtbHg1ZHZfZHJfZmxvdy4zIG1seDVkdl9kcl9hY3Rpb25fY3JlYXRlX21vZGlmeV9oZWFkZXIuMwogLSBtbHg1ZHZfZHJfZmxvdy4zIG1seDVkdl9kcl9hY3Rpb25fY3JlYXRlX3BhY2tldF9yZWZvcm1hdC4zCiAtIG1seDVkdl9kcl9mbG93LjMgbWx4NWR2X2RyX2FjdGlvbl9jcmVhdGVfdGFnLjMKIC0gbWx4NWR2X2RyX2Zsb3cuMyBtbHg1ZHZfZHJfYWN0aW9uX2Rlc3Ryb3kuMworLSBtbHg1ZHZfZHJfZmxvdy4zIG1seDVkdl9kcl9hY3Rpb25fbW9kaWZ5X2Zsb3dfbWV0ZXIuMwogLSBtbHg1ZHZfZHJfZmxvdy4zIG1seDVkdl9kcl9kb21haW5fY3JlYXRlLjMKIC0gbWx4NWR2X2RyX2Zsb3cuMyBtbHg1ZHZfZHJfZG9tYWluX2Rlc3Ryb3kuMwogLSBtbHg1ZHZfZHJfZmxvdy4zIG1seDVkdl9kcl9kb21haW5fc3luYy4zCkBAIC0zMjQsNiArMzI5LDEwIEBACiAtIG1seDVkdl9kcl9mbG93LjMgbWx4NWR2X2RyX3J1bGVfZGVzdHJveS4zCiAtIG1seDVkdl9kcl9mbG93LjMgbWx4NWR2X2RyX3RhYmxlX2NyZWF0ZS4zCiAtIG1seDVkdl9kcl9mbG93LjMgbWx4NWR2X2RyX3RhYmxlX2Rlc3Ryb3kuMworLSBtbHg1ZHZfZHVtcC4zIG1seDVkdl9kdW1wX2RyX2RvbWFpbi4zCistIG1seDVkdl9kdW1wLjMgbWx4NWR2X2R1bXBfZHJfbWF0Y2hlci4zCistIG1seDVkdl9kdW1wLjMgbWx4NWR2X2R1bXBfZHJfcnVsZS4zCistIG1seDVkdl9kdW1wLjMgbWx4NWR2X2R1bXBfZHJfdGFibGUuMwogLSBtbHg1ZHZfd3JfcG9zdC4zIG1seDVkdl93cl9zZXRfZGNfYWRkci4zCiAtIG1seDVkdl93cl9wb3N0LjMgbWx4NWR2X3FwX2V4X2Zyb21faWJ2X3FwX2V4LjMKIC0pCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmUvMDAwMS1Vc2Utb3ZlcmxvYWRhYmxlLWF0dHJpYnV0ZS13aXRoLWNsYW5nLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9yZG1hLWNvcmUvcmRtYS1jb3JlLzAwMDEtVXNlLW92ZXJsb2FkYWJsZS1hdHRyaWJ1dGUtd2l0aC1jbGFuZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJhNjg0Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmUvMDAwMS1Vc2Utb3ZlcmxvYWRhYmxlLWF0dHJpYnV0ZS13aXRoLWNsYW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSA0Mjk3NmVkMGEwMTYwODY0YjQxNjgwNjA0ZWE5Y2RiM2MxNzVjYjk0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTUgSmFuIDIwMjAgMTc6NDg6MjggLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIG92ZXJsb2FkYWJsZSBhdHRyaWJ1dGUgd2l0aCBjbGFuZwotCi1UaGlzIGlzIG92ZXJyaWRpbmcgdGhlIGxpYmMgaW1wbGVtZW50YXRpb24KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGlicmRtYWNtL3ByZWxvYWQuYyB8IDggKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJyZG1hY20vcHJlbG9hZC5jIGIvbGlicmRtYWNtL3ByZWxvYWQuYwotaW5kZXggZDQ2YmViMWIuLmI0NTFkZTUwIDEwMDY0NAotLS0tIGEvbGlicmRtYWNtL3ByZWxvYWQuYwotKysrIGIvbGlicmRtYWNtL3ByZWxvYWQuYwotQEAgLTU5LDYgKzU5LDEyIEBACi0gI2luY2x1ZGUgImNtYS5oIgotICNpbmNsdWRlICJpbmRleGVyLmgiCi0gCi0rI2lmZGVmIF9fY2xhbmdfXwotKyNkZWZpbmUgT1ZFUkxPQUQgIF9fYXR0cmlidXRlX18oKG92ZXJsb2FkYWJsZSkpIAotKyNlbHNlCi0rI2RlZmluZSBPVkVSTE9BRAotKyNlbmRpZgotKwotIHN0cnVjdCBzb2NrZXRfY2FsbHMgewotIAlpbnQgKCpzb2NrZXQpKGludCBkb21haW4sIGludCB0eXBlLCBpbnQgcHJvdG9jb2wpOwotIAlpbnQgKCpiaW5kKShpbnQgc29ja2V0LCBjb25zdCBzdHJ1Y3Qgc29ja2FkZHIgKmFkZHIsIHNvY2tsZW5fdCBhZGRybGVuKTsKLUBAIC03OTMsNyArNzk5LDcgQEAgc3NpemVfdCByZWN2KGludCBzb2NrZXQsIHZvaWQgKmJ1Ziwgc2l6ZV90IGxlbiwgaW50IGZsYWdzKQotIAkJcnJlY3YoZmQsIGJ1ZiwgbGVuLCBmbGFncykgOiByZWFsLnJlY3YoZmQsIGJ1ZiwgbGVuLCBmbGFncyk7Ci0gfQotIAotLXNzaXplX3QgcmVjdmZyb20oaW50IHNvY2tldCwgdm9pZCAqYnVmLCBzaXplX3QgbGVuLCBpbnQgZmxhZ3MsCi0rc3NpemVfdCBPVkVSTE9BRCByZWN2ZnJvbShpbnQgc29ja2V0LCB2b2lkICpidWYsIHNpemVfdCBsZW4sIGludCBmbGFncywKLSAJCSBzdHJ1Y3Qgc29ja2FkZHIgKnNyY19hZGRyLCBzb2NrbGVuX3QgKmFkZHJsZW4pCi0gewotIAlpbnQgZmQ7Ci0tLSAKLTIuMjUuMAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmUvMDAwMS1saWJyZG1hY20tVXNlLXNjaGVkX3lpZWxkLWluc3RlYWQtb2YtcHRocmVhZF95aWVsZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcmRtYS1jb3JlL3JkbWEtY29yZS8wMDAxLWxpYnJkbWFjbS1Vc2Utc2NoZWRfeWllbGQtaW5zdGVhZC1vZi1wdGhyZWFkX3lpZWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MGFiZDMzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcmRtYS1jb3JlL3JkbWEtY29yZS8wMDAxLWxpYnJkbWFjbS1Vc2Utc2NoZWRfeWllbGQtaW5zdGVhZC1vZi1wdGhyZWFkX3lpZWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbSA2YWM5NTYyZDc1NmQ0MjU5Mjk5NGFlYWFjN2E1ZTdiMmJiY2U1Y2FiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMTQgRGVjIDIwMTkgMTQ6MDc6NTcgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbGlicmRtYWNtOiBVc2Ugc2NoZWRfeWllbGQgaW5zdGVhZCBvZiBwdGhyZWFkX3lpZWxkCi0KLWdsaWJjIHJlZGlyZWN0cyBwdGhyZWFkX3lpZWxkIHRvIHNjaGVkX3lpZWxkIGFkZGl0aW9uYWxseSB3ZSBnZXQgaXQKLXdvcmtpbmcgd2l0aCBtdXNsIG9uIGxpbnV4Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGludXgtcmRtYS9yZG1hLWNvcmUvcHVsbC82MzVdCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGlicmRtYWNtL3Jzb2NrZXQuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYnJkbWFjbS9yc29ja2V0LmMgYi9saWJyZG1hY20vcnNvY2tldC5jCi1pbmRleCA4OWFlMjEzOS4uN2ZjNWIyNjYgMTAwNjQ0Ci0tLS0gYS9saWJyZG1hY20vcnNvY2tldC5jCi0rKysgYi9saWJyZG1hY20vcnNvY2tldC5jCi1AQCAtMzAzOCw3ICszMDM4LDcgQEAgc3RhdGljIGludCByc19wb2xsX2VudGVyKHZvaWQpCi0gCXB0aHJlYWRfbXV0ZXhfbG9jaygmbXV0KTsKLSAJaWYgKHN1c3BlbmRwb2xsKSB7Ci0gCQlwdGhyZWFkX211dGV4X3VubG9jaygmbXV0KTsKLS0JCXB0aHJlYWRfeWllbGQoKTsKLSsJCXNjaGVkX3lpZWxkKCk7Ci0gCQlyZXR1cm4gLUVCVVNZOwotIAl9Ci0gCi0tLSAKLTIuMjQuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmVfMjcuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcmRtYS1jb3JlL3JkbWEtY29yZV8yNy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTc5NzlkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcmRtYS1jb3JlL3JkbWEtY29yZV8yNy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotU1VNTUFSWSA9ICJVc2Vyc3BhY2Ugc3VwcG9ydCBmb3IgSW5maW5pQmFuZC9SRE1BIHZlcmJzIgotREVTQ1JJUFRJT04gPSAiVGhpcyBpcyB0aGUgdXNlcnNwYWNlIGNvbXBvbmVudHMgZm9yIHRoZSBMaW51eCBLZXJuZWwncyBkcml2ZXJzIEluZmluaWJhbmQvUkRNQSBzdWJzeXN0ZW0uIgotU0VDVElPTiA9ICJsaWJzIgotCi1ERVBFTkRTID0gImxpYm5sIgotUkRFUEVORFNfJHtQTn0gPSAiYmFzaCBwZXJsIgotCi1CUkFOQ0ggPSAic3RhYmxlLXYke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC1yZG1hL3JkbWEtY29yZS5naXQ7YnJhbmNoPSR7QlJBTkNIfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1tYW4tZmlsZXMtd2hpY2gtY2FudC1iZS1idWlsdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYnJkbWFjbS1Vc2Utc2NoZWRfeWllbGQtaW5zdGVhZC1vZi1wdGhyZWFkX3lpZWxkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLW92ZXJsb2FkYWJsZS1hdHRyaWJ1dGUtd2l0aC1jbGFuZy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ1JFViA9ICI4NGNhZjAzNWFlNjEyM2UyMjk2YjcyMDA2Y2QyY2Y2OThjNjVlYjQ2IgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotI0RlZmF1bHQgRHVhbCBMaWNlbnNlIGh0dHBzOi8vZ2l0aHViLmNvbS9saW51eC1yZG1hL3JkbWEtY29yZS9ibG9iL21hc3Rlci9DT1BZSU5HLm1kCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSB8IEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5CU0RfRkI7bWQ1PTBlYzE4YmFlMWE5ZGY5MmM4ZDZhZTAxZjk0YTI4OWFlIFwKLQkJICAgZmlsZTovL0NPUFlJTkcuR1BMMjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi0KLUVYVFJBX09FQ01BS0UgPSAiIFwKLSAgICAtRENNQUtFX0lOU1RBTExfU1lTVEVNRF9TRVJWSUNFRElSPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0gXAotICAgIC1EQ01BS0VfSU5TVEFMTF9QRVJMRElSPSR7bGliZGlyfS9wZXJsNS8ke0BnZXRfcGVybF92ZXJzaW9uKGQpfSBcCi0iCi0KLUZJTEVTX1NPTElCU0RFViA9ICIiCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9LyoiCi1JTlNBTkVfU0tJUF8ke1BOfSArPSAiZGV2LXNvIgotCi1pbmhlcml0IGNtYWtlIGNwYW4tYmFzZSBzeXN0ZW1kCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIgXAotICAgIHNycF9kYWVtb24uc2VydmljZSBcCi0gICAgaXdwbWQuc2VydmljZSBcCi0gICAgaWJhY20uc29ja2V0IFwKLSAgICByZG1hLWxvYWQtbW9kdWxlc0Auc2VydmljZSBcCi0gICAgc3JwX2RhZW1vbl9wb3J0QC5zZXJ2aWNlIFwKLSAgICByZG1hLWh3LnRhcmdldCBcCi0gICAgaWJhY20uc2VydmljZSBcCi0iCi1TWVNURU1EX0FVVE9fRU5BQkxFID0gImRpc2FibGUiCi0KLU9FQ01BS0VfRklORF9ST09UX1BBVEhfTU9ERV9QUk9HUkFNID0gIkJPVEgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmVfMjguMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvcmRtYS1jb3JlL3JkbWEtY29yZV8yOC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1ZmQ3ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3JkbWEtY29yZS9yZG1hLWNvcmVfMjguMC5iYgpAQCAtMCwwICsxLDQyIEBACitTVU1NQVJZID0gIlVzZXJzcGFjZSBzdXBwb3J0IGZvciBJbmZpbmlCYW5kL1JETUEgdmVyYnMiCitERVNDUklQVElPTiA9ICJUaGlzIGlzIHRoZSB1c2Vyc3BhY2UgY29tcG9uZW50cyBmb3IgdGhlIExpbnV4IEtlcm5lbCdzIGRyaXZlcnMgSW5maW5pYmFuZC9SRE1BIHN1YnN5c3RlbS4iCitTRUNUSU9OID0gImxpYnMiCisKK0RFUEVORFMgPSAibGlibmwiCitSREVQRU5EU18ke1BOfSA9ICJiYXNoIHBlcmwiCisKK0JSQU5DSCA9ICJzdGFibGUtdiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpbnV4LXJkbWEvcmRtYS1jb3JlLmdpdDticmFuY2g9JHtCUkFOQ0h9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLW1hbi1maWxlcy13aGljaC1jYW50LWJlLWJ1aWx0LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDUkVWID0gImYxMmM5NTNmMDg2NDY5MWVhY2M5ZmNjNGNkYTQ4OWI5MmZmZDVhODUiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCisjRGVmYXVsdCBEdWFsIExpY2Vuc2UgaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXJkbWEvcmRtYS1jb3JlL2Jsb2IvbWFzdGVyL0NPUFlJTkcubWQKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIHwgR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkJTRF9GQjttZDU9MGVjMThiYWUxYTlkZjkyYzhkNmFlMDFmOTRhMjg5YWUgXAorCQkgICBmaWxlOi8vQ09QWUlORy5HUEwyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworRVhUUkFfT0VDTUFLRSA9ICIgXAorICAgIC1EQ01BS0VfSU5TVEFMTF9TWVNURU1EX1NFUlZJQ0VESVI9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSBcCisgICAgLURDTUFLRV9JTlNUQUxMX1BFUkxESVI9JHtsaWJkaXJ9L3Blcmw1LyR7QGdldF9wZXJsX3ZlcnNpb24oZCl9IFwKKyIKKworRklMRVNfU09MSUJTREVWID0gIiIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vKiIKK0lOU0FORV9TS0lQXyR7UE59ICs9ICJkZXYtc28iCisKK2luaGVyaXQgY21ha2UgY3Bhbi1iYXNlIHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiBcCisgICAgc3JwX2RhZW1vbi5zZXJ2aWNlIFwKKyAgICBpd3BtZC5zZXJ2aWNlIFwKKyAgICBpYmFjbS5zb2NrZXQgXAorICAgIHJkbWEtbG9hZC1tb2R1bGVzQC5zZXJ2aWNlIFwKKyAgICBzcnBfZGFlbW9uX3BvcnRALnNlcnZpY2UgXAorICAgIHJkbWEtaHcudGFyZ2V0IFwKKyAgICBpYmFjbS5zZXJ2aWNlIFwKKyIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKKworT0VDTUFLRV9GSU5EX1JPT1RfUEFUSF9NT0RFX1BST0dSQU0gPSAiQk9USCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3BpY2Uvc3BpY2UtcHJvdG9jb2xfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zcGljZS9zcGljZS1wcm90b2NvbF9naXQuYmIKaW5kZXggOTY2Y2E0MS4uMWQ1NmJlYSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zcGljZS9zcGljZS1wcm90b2NvbF9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zcGljZS9zcGljZS1wcm90b2NvbF9naXQuYmIKQEAgLTEzLDkgKzEzLDkgQEAKIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjM3MzExY2I1NjA0ZjNlNWNjMmZiMGZkMjM1MjdlOTUiCiAKLVBWID0gIjAuMTQuMCtnaXQke1NSQ1BWfSIKK1BWID0gIjAuMTQuMStnaXQke1NSQ1BWfSIKIAotU1JDUkVWID0gImY3MmVjZTk5M2FlYWYyM2Y3N2UyODQ1NTYyYjIwZTU1NjNlNTJiYTAiCitTUkNSRVYgPSAiZTBlYzE3OGE3MmFhMzNlMzA3ZWU1YWMwMmI2M2JmMzM2ZGE5MjFhNSIKIAogU1JDX1VSSSA9ICIgXAogICAgIGdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL3NwaWNlL3NwaWNlLXByb3RvY29sIFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3BpY2Uvc3BpY2VfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zcGljZS9zcGljZV9naXQuYmIKaW5kZXggMDZhNzljNS4uOWQzYTBlNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zcGljZS9zcGljZV9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zcGljZS9zcGljZV9naXQuYmIKQEAgLTI5LDEzICsyOSwxMiBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHB5dGhvbm5hdGl2ZSBweXRob24tZGlyIHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBweXRob24zbmF0aXZlIHB5dGhvbjMtZGlyIHBrZ2NvbmZpZwogCi1ERVBFTkRTICs9ICJzcGljZS1wcm90b2NvbCBqcGVnIHBpeG1hbiBhbHNhLWxpYiBnbGliLTIuMCBweXRob24tcHlwYXJzaW5nLW5hdGl2ZSBweXRob24tc2l4LW5hdGl2ZSBnbGliLTIuMC1uYXRpdmUiCitERVBFTkRTICs9ICJzcGljZS1wcm90b2NvbCBqcGVnIHBpeG1hbiBhbHNhLWxpYiBnbGliLTIuMCBweXRob24zLXB5cGFyc2luZy1uYXRpdmUgcHl0aG9uMy1zaXgtbmF0aXZlIGdsaWItMi4wLW5hdGl2ZSIKIERFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICJuYXRpdmVzZGstb3BlbnNzbCIKIAotZXhwb3J0IFBZVEhPTj0iJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIgotZXhwb3J0IFBZVEhPTlBBVEg9IiR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2xpYmRpcn0vcHl0aG9uMi43L3NpdGUtcGFja2FnZXMiCitleHBvcnQgUFlUSE9OPSIke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyIKIAogQ0ZMQUdTX2FwcGVuZCA9ICIgLVduby1lcnJvciIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHJvbmdzd2FuL3N0cm9uZ3N3YW5fNS44LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vc3Ryb25nc3dhbl81LjguMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjA1ZDY5Ni4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3N0cm9uZ3N3YW4vc3Ryb25nc3dhbl81LjguMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzNSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJzdHJvbmdTd2FuIGlzIGFuIE9wZW5Tb3VyY2UgSVBzZWMgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBcCi1MaW51eCBvcGVyYXRpbmcgc3lzdGVtLiIKLVNVTU1BUlkgPSAic3Ryb25nU3dhbiBpcyBhbiBPcGVuU291cmNlIElQc2VjIGltcGxlbWVudGF0aW9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zdHJvbmdzd2FuLm9yZyIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotREVQRU5EUyA9ICJnbXAgb3BlbnNzbCBmbGV4LW5hdGl2ZSBmbGV4IGJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuc3Ryb25nc3dhbi5vcmcvc3Ryb25nc3dhbi0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1mdW50aW9uLXBhcmFtZXRlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lbW9yeS5oLUluY2x1ZGUtc3RkaW50LmgtZm9yLXVpbnRwdHJfdC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ5NGVhYzJjYWVkNTFiMGNjNzc2ZTU4ODdiMTBiYWNlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg2OTAwZGRiZTczMzdjOTIzZGFkZjJjODMzOWFlOGVkMmI5MTU4ZTM2OTE3NDU4ODRkMDhhZTUzNDY3NzQzMGUiCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInN0cm9uZ3N3YW4tKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgICAgICAtLXdpdGhvdXQtbGliLXByZWZpeCBcCi0gICAgICAgIC0td2l0aC1kZXYtaGVhZGVycz0ke2luY2x1ZGVkaXJ9L3N0cm9uZ3N3YW4gXAotIgotCi1FWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICctLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8nLCAnLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyJywgZCl9IgotCi1QQUNLQUdFQ09ORklHID8/PSAiY2hhcm9uIGN1cmwgZ21wIG9wZW5zc2wgc3Ryb2tlIHNxbGl0ZTMgXAotICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdsZGFwJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbYWVzbmldID0gIi0tZW5hYmxlLWFlc25pLC0tZGlzYWJsZS1hZXNuaSwsJHtQTn0tcGx1Z2luLWFlc25pIgotUEFDS0FHRUNPTkZJR1tiZmRdID0gIi0tZW5hYmxlLWJmZC1iYWNrdHJhY2VzLC0tZGlzYWJsZS1iZmQtYmFja3RyYWNlcyxiaW51dGlscyIKLVBBQ0tBR0VDT05GSUdbY2hhcm9uXSA9ICItLWVuYWJsZS1jaGFyb24sLS1kaXNhYmxlLWNoYXJvbiwiCi1QQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCwke1BOfS1wbHVnaW4tY3VybCIKLVBBQ0tBR0VDT05GSUdbZ21wXSA9ICItLWVuYWJsZS1nbXAsLS1kaXNhYmxlLWdtcCxnbXAsJHtQTn0tcGx1Z2luLWdtcCIKLVBBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtbGRhcCwtLWRpc2FibGUtbGRhcCxvcGVubGRhcCwke1BOfS1wbHVnaW4tbGRhcCIKLVBBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0tZW5hYmxlLW15c3FsLC0tZGlzYWJsZS1teXNxbCxteXNxbDUsJHtQTn0tcGx1Z2luLW15c3FsIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wsJHtQTn0tcGx1Z2luLW9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3NjZXBdID0gIi0tZW5hYmxlLXNjZXBjbGllbnQsLS1kaXNhYmxlLXNjZXBjbGllbnQsIgotUEFDS0FHRUNPTkZJR1tzb3VwXSA9ICItLWVuYWJsZS1zb3VwLC0tZGlzYWJsZS1zb3VwLGxpYnNvdXAtMi40LCR7UE59LXBsdWdpbi1zb3VwIgotUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLWVuYWJsZS1zcWxpdGUsLS1kaXNhYmxlLXNxbGl0ZSxzcWxpdGUzLCR7UE59LXBsdWdpbi1zcWxpdGUiCi1QQUNLQUdFQ09ORklHW3N0cm9rZV0gPSAiLS1lbmFibGUtc3Ryb2tlLC0tZGlzYWJsZS1zdHJva2UsLCR7UE59LXBsdWdpbi1zdHJva2UiCi1QQUNLQUdFQ09ORklHW3N3YW5jdGxdID0gIi0tZW5hYmxlLXN3YW5jdGwsLS1kaXNhYmxlLXN3YW5jdGwsLGxpYmdjYyIKLQotIyByZXF1aXJlcyBzd2FuY3RsCi1QQUNLQUdFQ09ORklHW3N5c3RlbWQtY2hhcm9uXSA9ICItLWVuYWJsZS1zeXN0ZW1kLC0tZGlzYWJsZS1zeXN0ZW1kLHN5c3RlbWQsIgotCi1pbmhlcml0IGF1dG90b29scyBzeXN0ZW1kIHBrZ2NvbmZpZwotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLWlwc2VjIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2lwc2VjL2xpYioke1NPTElCU30iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7YmluZGlyfS8uZGVidWcgJHtzYmluZGlyfS8uZGVidWcgJHtsaWJkaXJ9L2lwc2VjLy5kZWJ1ZyAke2xpYmV4ZWNkaXJ9L2lwc2VjLy5kZWJ1ZyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2lwc2VjL2xpYioke1NPTElCU0RFVn0gJHtsaWJkaXJ9L2lwc2VjLyoubGEgJHtsaWJkaXJ9L2lwc2VjL2luY2x1ZGUvY29uZmlnLmgiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9pcHNlYy8qLmEiCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9LyouY29uZiAke3N5c2NvbmZkaXJ9L2lwc2VjLmQvKi5jb25mICR7c3lzY29uZmRpcn0vc3Ryb25nc3dhbi5kLyouY29uZiIKLQotUEFDS0FHRVMgKz0gIiR7UE59LXBsdWdpbnMiCi1BTExPV19FTVBUWV8ke1BOfS1wbHVnaW5zID0gIjEiCi0KLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl4ke1BOfS1wbHVnaW4tLiokIgotTk9BVVRPUEFDS0FHRURFQlVHID0gIjEiCi0KLXB5dGhvbiBzcGxpdF9zdHJvbmdzd2FuX3BsdWdpbnMgKCkgewotICAgIHN5c2NvbmZkaXIgPSBkLmV4cGFuZCgnJHtzeXNjb25mZGlyfS9zdHJvbmdzd2FuLmQvY2hhcm9uJykKLSAgICBsaWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2lwc2VjL3BsdWdpbnMnKQotICAgIGRiZ2xpYmRpciA9IG9zLnBhdGguam9pbihsaWJkaXIsICcuZGVidWcnKQotCi0gICAgZGVmIGFkZF9wbHVnaW5fY29uZihmLCBwa2csIGZpbGVfcmVnZXgsIG91dHB1dF9wYXR0ZXJuLCBtb2R1bGVuYW1lKToKLSAgICAgICAgZHZhciA9IGQuZ2V0VmFyKCdQS0dEJykKLSAgICAgICAgb2xkZmlsZXMgPSBkLmdldFZhcignQ09ORkZJTEVTXycgKyBwa2cpCi0gICAgICAgIG5ld2ZpbGUgPSAnLycgKyBvcy5wYXRoLnJlbHBhdGgoZiwgZHZhcikKLQotICAgICAgICBpZiBub3Qgb2xkZmlsZXM6Ci0gICAgICAgICAgICBkLnNldFZhcignQ09ORkZJTEVTXycgKyBwa2csIG5ld2ZpbGUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBkLnNldFZhcignQ09ORkZJTEVTXycgKyBwa2csIG9sZGZpbGVzICsgIiAiICsgbmV3ZmlsZSkKLQotICAgIHNwbGl0X3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnbGlic3Ryb25nc3dhbi0oLiopXC5zbycsICcke1BOfS1wbHVnaW4tJXMnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4nLCBwcmVwZW5kPVRydWUpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgc3lzY29uZmRpciwgJyguKilcLmNvbmYnLCAnJHtQTn0tcGx1Z2luLSVzJywgJ3N0cm9uZ1N3YW4gJXMgcGx1Z2luJywgcHJlcGVuZD1UcnVlLCBob29rPWFkZF9wbHVnaW5fY29uZikKLQotICAgIHNwbGl0X2RiZ19wYWNrYWdlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIGRiZ2xpYmRpciwgJ2xpYnN0cm9uZ3N3YW4tKC4qKVwuc28nLCAnJHtQTn0tcGx1Z2luLSVzLWRiZycsICdzdHJvbmdTd2FuICVzIHBsdWdpbiAtIERlYnVnZ2luZyBmaWxlcycsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGJnJykKLSAgICBzcGxpdF9kZXZfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdsaWJzdHJvbmdzd2FuLSguKilcLmxhJywgJyR7UE59LXBsdWdpbi0lcy1kZXYnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4gLSBEZXZlbG9wbWVudCBmaWxlcycsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGV2JykKLSAgICBzcGxpdF9zdGF0aWNkZXZfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdsaWJzdHJvbmdzd2FuLSguKilcLmEnLCAnJHtQTn0tcGx1Z2luLSVzLXN0YXRpY2RldicsICdzdHJvbmdTd2FuICVzIHBsdWdpbiAtIERldmVsb3BtZW50IGZpbGVzIChTdGF0aWMgTGlicmFyaWVzKScsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tc3RhdGljZGV2JykKLQotICAgIGlmIHNwbGl0X3BhY2thZ2VzOgotICAgICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCi0gICAgICAgIGQuc2V0VmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLXBsdWdpbnMnLCAnICcuam9pbihzcGxpdF9wYWNrYWdlcykpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLWRiZycsICcgJyArICcgJy5qb2luKHNwbGl0X2RiZ19wYWNrYWdlcykpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLWRldicsICcgJyArICcgJy5qb2luKHNwbGl0X2Rldl9wYWNrYWdlcykpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLXN0YXRpY2RldicsICcgJyArICcgJy5qb2luKHNwbGl0X3N0YXRpY2Rldl9wYWNrYWdlcykpCi19Ci0KLVBBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAic3BsaXRfc3Ryb25nc3dhbl9wbHVnaW5zICIKLQotIyBJbnN0YWxsIHNvbWUgZGVmYXVsdCBwbHVnaW5zIGJhc2VkIG9uIGRlZmF1bHQgc3Ryb25nU3dhbiAuL2NvbmZpZ3VyZSBvcHRpb25zCi0jIFNlZSBodHRwczovL3dpa2kuc3Ryb25nc3dhbi5vcmcvcHJvamVjdHMvc3Ryb25nc3dhbi93aWtpL1BsdWdpbmxpc3QKLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQTn0tcGx1Z2luLWFlcyBcCi0gICAgJHtQTn0tcGx1Z2luLWF0dHIgXAotICAgICR7UE59LXBsdWdpbi1jbWFjIFwKLSAgICAke1BOfS1wbHVnaW4tY29uc3RyYWludHMgXAotICAgICR7UE59LXBsdWdpbi1kZXMgXAotICAgICR7UE59LXBsdWdpbi1kbnNrZXkgXAotICAgICR7UE59LXBsdWdpbi1obWFjIFwKLSAgICAke1BOfS1wbHVnaW4ta2VybmVsLW5ldGxpbmsgXAotICAgICR7UE59LXBsdWdpbi1tZDUgXAotICAgICR7UE59LXBsdWdpbi1ub25jZSBcCi0gICAgJHtQTn0tcGx1Z2luLXBlbSBcCi0gICAgJHtQTn0tcGx1Z2luLXBncCBcCi0gICAgJHtQTn0tcGx1Z2luLXBrY3MxIFwKLSAgICAke1BOfS1wbHVnaW4tcGtjczcgXAotICAgICR7UE59LXBsdWdpbi1wa2NzOCBcCi0gICAgJHtQTn0tcGx1Z2luLXBrY3MxMiBcCi0gICAgJHtQTn0tcGx1Z2luLXB1YmtleSBcCi0gICAgJHtQTn0tcGx1Z2luLXJhbmRvbSBcCi0gICAgJHtQTn0tcGx1Z2luLXJjMiBcCi0gICAgJHtQTn0tcGx1Z2luLXJlc29sdmUgXAotICAgICR7UE59LXBsdWdpbi1yZXZvY2F0aW9uIFwKLSAgICAke1BOfS1wbHVnaW4tc2hhMSBcCi0gICAgJHtQTn0tcGx1Z2luLXNoYTIgXAotICAgICR7UE59LXBsdWdpbi1zb2NrZXQtZGVmYXVsdCBcCi0gICAgJHtQTn0tcGx1Z2luLXNzaGtleSBcCi0gICAgJHtQTn0tcGx1Z2luLXVwZG93biBcCi0gICAgJHtQTn0tcGx1Z2luLXZpY2kgXAotICAgICR7UE59LXBsdWdpbi14NTA5IFwKLSAgICAke1BOfS1wbHVnaW4teGF1dGgtZ2VuZXJpYyBcCi0gICAgJHtQTn0tcGx1Z2luLXhjYmMgXAotICAgICR7UE59LXBsdWdpbi1jdXJ2ZTI1NTE5IFwKLSAgICAiCi0KLVJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKLVJDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3dhbmN0bCcsICcke0JQTn0uc2VydmljZScsICcnLCBkKX0gJHtCUE59LXN0YXJ0ZXIuc2VydmljZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3Ryb25nc3dhbi9zdHJvbmdzd2FuXzUuOC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC9zdHJvbmdzd2FuL3N0cm9uZ3N3YW5fNS44LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGEyNzMzMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvc3Ryb25nc3dhbi9zdHJvbmdzd2FuXzUuOC40LmJiCkBAIC0wLDAgKzEsMTM1IEBACitERVNDUklQVElPTiA9ICJzdHJvbmdTd2FuIGlzIGFuIE9wZW5Tb3VyY2UgSVBzZWMgaW1wbGVtZW50YXRpb24gZm9yIHRoZSBcCitMaW51eCBvcGVyYXRpbmcgc3lzdGVtLiIKK1NVTU1BUlkgPSAic3Ryb25nU3dhbiBpcyBhbiBPcGVuU291cmNlIElQc2VjIGltcGxlbWVudGF0aW9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zdHJvbmdzd2FuLm9yZyIKK1NFQ1RJT04gPSAibmV0IgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorREVQRU5EUyA9ICJnbXAgb3BlbnNzbCBmbGV4LW5hdGl2ZSBmbGV4IGJpc29uLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuc3Ryb25nc3dhbi5vcmcvc3Ryb25nc3dhbi0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1mdW50aW9uLXBhcmFtZXRlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lbW9yeS5oLUluY2x1ZGUtc3RkaW50LmgtZm9yLXVpbnRwdHJfdC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjA2MzRlN2Y0MDU5MWJkM2Y2NzcwZTU4M2MzZjI3ZDI5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJkOWE1N2UzMzgxM2I2MmQ1OGNiYTA3NTMxYzRkNWEzNWM2YjgyM2RmZTliOGZmN2M2MjNiNjU3MWYwMjU1M2MiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInN0cm9uZ3N3YW4tKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgICAgICAtLXdpdGhvdXQtbGliLXByZWZpeCBcCisgICAgICAgIC0td2l0aC1kZXYtaGVhZGVycz0ke2luY2x1ZGVkaXJ9L3N0cm9uZ3N3YW4gXAorIgorCitFWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICctLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8nLCAnLS13aXRob3V0LXN5c3RlbWRzeXN0ZW11bml0ZGlyJywgZCl9IgorCitQQUNLQUdFQ09ORklHID8/PSAiY2hhcm9uIGN1cmwgZ21wIG9wZW5zc2wgc3Ryb2tlIHNxbGl0ZTMgXAorICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdsZGFwJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbYWVzbmldID0gIi0tZW5hYmxlLWFlc25pLC0tZGlzYWJsZS1hZXNuaSwsJHtQTn0tcGx1Z2luLWFlc25pIgorUEFDS0FHRUNPTkZJR1tiZmRdID0gIi0tZW5hYmxlLWJmZC1iYWNrdHJhY2VzLC0tZGlzYWJsZS1iZmQtYmFja3RyYWNlcyxiaW51dGlscyIKK1BBQ0tBR0VDT05GSUdbY2hhcm9uXSA9ICItLWVuYWJsZS1jaGFyb24sLS1kaXNhYmxlLWNoYXJvbiwiCitQQUNLQUdFQ09ORklHW2N1cmxdID0gIi0tZW5hYmxlLWN1cmwsLS1kaXNhYmxlLWN1cmwsY3VybCwke1BOfS1wbHVnaW4tY3VybCIKK1BBQ0tBR0VDT05GSUdbZ21wXSA9ICItLWVuYWJsZS1nbXAsLS1kaXNhYmxlLWdtcCxnbXAsJHtQTn0tcGx1Z2luLWdtcCIKK1BBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtbGRhcCwtLWRpc2FibGUtbGRhcCxvcGVubGRhcCwke1BOfS1wbHVnaW4tbGRhcCIKK1BBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0tZW5hYmxlLW15c3FsLC0tZGlzYWJsZS1teXNxbCxteXNxbDUsJHtQTn0tcGx1Z2luLW15c3FsIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wsJHtQTn0tcGx1Z2luLW9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3NjZXBdID0gIi0tZW5hYmxlLXNjZXBjbGllbnQsLS1kaXNhYmxlLXNjZXBjbGllbnQsIgorUEFDS0FHRUNPTkZJR1tzb3VwXSA9ICItLWVuYWJsZS1zb3VwLC0tZGlzYWJsZS1zb3VwLGxpYnNvdXAtMi40LCR7UE59LXBsdWdpbi1zb3VwIgorUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLWVuYWJsZS1zcWxpdGUsLS1kaXNhYmxlLXNxbGl0ZSxzcWxpdGUzLCR7UE59LXBsdWdpbi1zcWxpdGUiCitQQUNLQUdFQ09ORklHW3N0cm9rZV0gPSAiLS1lbmFibGUtc3Ryb2tlLC0tZGlzYWJsZS1zdHJva2UsLCR7UE59LXBsdWdpbi1zdHJva2UiCitQQUNLQUdFQ09ORklHW3N3YW5jdGxdID0gIi0tZW5hYmxlLXN3YW5jdGwsLS1kaXNhYmxlLXN3YW5jdGwsLGxpYmdjYyIKKworIyByZXF1aXJlcyBzd2FuY3RsCitQQUNLQUdFQ09ORklHW3N5c3RlbWQtY2hhcm9uXSA9ICItLWVuYWJsZS1zeXN0ZW1kLC0tZGlzYWJsZS1zeXN0ZW1kLHN5c3RlbWQsIgorCitpbmhlcml0IGF1dG90b29scyBzeXN0ZW1kIHBrZ2NvbmZpZworCitSUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLWlwc2VjIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2lwc2VjL2xpYioke1NPTElCU30iCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7YmluZGlyfS8uZGVidWcgJHtzYmluZGlyfS8uZGVidWcgJHtsaWJkaXJ9L2lwc2VjLy5kZWJ1ZyAke2xpYmV4ZWNkaXJ9L2lwc2VjLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2lwc2VjL2xpYioke1NPTElCU0RFVn0gJHtsaWJkaXJ9L2lwc2VjLyoubGEgJHtsaWJkaXJ9L2lwc2VjL2luY2x1ZGUvY29uZmlnLmgiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9pcHNlYy8qLmEiCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9LyouY29uZiAke3N5c2NvbmZkaXJ9L2lwc2VjLmQvKi5jb25mICR7c3lzY29uZmRpcn0vc3Ryb25nc3dhbi5kLyouY29uZiIKKworUEFDS0FHRVMgKz0gIiR7UE59LXBsdWdpbnMiCitBTExPV19FTVBUWV8ke1BOfS1wbHVnaW5zID0gIjEiCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl4ke1BOfS1wbHVnaW4tLiokIgorTk9BVVRPUEFDS0FHRURFQlVHID0gIjEiCisKK3B5dGhvbiBzcGxpdF9zdHJvbmdzd2FuX3BsdWdpbnMgKCkgeworICAgIHN5c2NvbmZkaXIgPSBkLmV4cGFuZCgnJHtzeXNjb25mZGlyfS9zdHJvbmdzd2FuLmQvY2hhcm9uJykKKyAgICBsaWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2lwc2VjL3BsdWdpbnMnKQorICAgIGRiZ2xpYmRpciA9IG9zLnBhdGguam9pbihsaWJkaXIsICcuZGVidWcnKQorCisgICAgZGVmIGFkZF9wbHVnaW5fY29uZihmLCBwa2csIGZpbGVfcmVnZXgsIG91dHB1dF9wYXR0ZXJuLCBtb2R1bGVuYW1lKToKKyAgICAgICAgZHZhciA9IGQuZ2V0VmFyKCdQS0dEJykKKyAgICAgICAgb2xkZmlsZXMgPSBkLmdldFZhcignQ09ORkZJTEVTXycgKyBwa2cpCisgICAgICAgIG5ld2ZpbGUgPSAnLycgKyBvcy5wYXRoLnJlbHBhdGgoZiwgZHZhcikKKworICAgICAgICBpZiBub3Qgb2xkZmlsZXM6CisgICAgICAgICAgICBkLnNldFZhcignQ09ORkZJTEVTXycgKyBwa2csIG5ld2ZpbGUpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBkLnNldFZhcignQ09ORkZJTEVTXycgKyBwa2csIG9sZGZpbGVzICsgIiAiICsgbmV3ZmlsZSkKKworICAgIHNwbGl0X3BhY2thZ2VzID0gZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCAnbGlic3Ryb25nc3dhbi0oLiopXC5zbycsICcke1BOfS1wbHVnaW4tJXMnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4nLCBwcmVwZW5kPVRydWUpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgc3lzY29uZmRpciwgJyguKilcLmNvbmYnLCAnJHtQTn0tcGx1Z2luLSVzJywgJ3N0cm9uZ1N3YW4gJXMgcGx1Z2luJywgcHJlcGVuZD1UcnVlLCBob29rPWFkZF9wbHVnaW5fY29uZikKKworICAgIHNwbGl0X2RiZ19wYWNrYWdlcyA9IGRvX3NwbGl0X3BhY2thZ2VzKGQsIGRiZ2xpYmRpciwgJ2xpYnN0cm9uZ3N3YW4tKC4qKVwuc28nLCAnJHtQTn0tcGx1Z2luLSVzLWRiZycsICdzdHJvbmdTd2FuICVzIHBsdWdpbiAtIERlYnVnZ2luZyBmaWxlcycsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGJnJykKKyAgICBzcGxpdF9kZXZfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdsaWJzdHJvbmdzd2FuLSguKilcLmxhJywgJyR7UE59LXBsdWdpbi0lcy1kZXYnLCAnc3Ryb25nU3dhbiAlcyBwbHVnaW4gLSBEZXZlbG9wbWVudCBmaWxlcycsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tZGV2JykKKyAgICBzcGxpdF9zdGF0aWNkZXZfcGFja2FnZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsICdsaWJzdHJvbmdzd2FuLSguKilcLmEnLCAnJHtQTn0tcGx1Z2luLSVzLXN0YXRpY2RldicsICdzdHJvbmdTd2FuICVzIHBsdWdpbiAtIERldmVsb3BtZW50IGZpbGVzIChTdGF0aWMgTGlicmFyaWVzKScsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJHtQTn0tc3RhdGljZGV2JykKKworICAgIGlmIHNwbGl0X3BhY2thZ2VzOgorICAgICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCisgICAgICAgIGQuc2V0VmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLXBsdWdpbnMnLCAnICcuam9pbihzcGxpdF9wYWNrYWdlcykpCisgICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLWRiZycsICcgJyArICcgJy5qb2luKHNwbGl0X2RiZ19wYWNrYWdlcykpCisgICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLWRldicsICcgJyArICcgJy5qb2luKHNwbGl0X2Rldl9wYWNrYWdlcykpCisgICAgICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU18nICsgcG4gKyAnLXN0YXRpY2RldicsICcgJyArICcgJy5qb2luKHNwbGl0X3N0YXRpY2Rldl9wYWNrYWdlcykpCit9CisKK1BBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAic3BsaXRfc3Ryb25nc3dhbl9wbHVnaW5zICIKKworIyBJbnN0YWxsIHNvbWUgZGVmYXVsdCBwbHVnaW5zIGJhc2VkIG9uIGRlZmF1bHQgc3Ryb25nU3dhbiAuL2NvbmZpZ3VyZSBvcHRpb25zCisjIFNlZSBodHRwczovL3dpa2kuc3Ryb25nc3dhbi5vcmcvcHJvamVjdHMvc3Ryb25nc3dhbi93aWtpL1BsdWdpbmxpc3QKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQTn0tcGx1Z2luLWFlcyBcCisgICAgJHtQTn0tcGx1Z2luLWF0dHIgXAorICAgICR7UE59LXBsdWdpbi1jbWFjIFwKKyAgICAke1BOfS1wbHVnaW4tY29uc3RyYWludHMgXAorICAgICR7UE59LXBsdWdpbi1kZXMgXAorICAgICR7UE59LXBsdWdpbi1kbnNrZXkgXAorICAgICR7UE59LXBsdWdpbi1obWFjIFwKKyAgICAke1BOfS1wbHVnaW4ta2VybmVsLW5ldGxpbmsgXAorICAgICR7UE59LXBsdWdpbi1tZDUgXAorICAgICR7UE59LXBsdWdpbi1ub25jZSBcCisgICAgJHtQTn0tcGx1Z2luLXBlbSBcCisgICAgJHtQTn0tcGx1Z2luLXBncCBcCisgICAgJHtQTn0tcGx1Z2luLXBrY3MxIFwKKyAgICAke1BOfS1wbHVnaW4tcGtjczcgXAorICAgICR7UE59LXBsdWdpbi1wa2NzOCBcCisgICAgJHtQTn0tcGx1Z2luLXBrY3MxMiBcCisgICAgJHtQTn0tcGx1Z2luLXB1YmtleSBcCisgICAgJHtQTn0tcGx1Z2luLXJhbmRvbSBcCisgICAgJHtQTn0tcGx1Z2luLXJjMiBcCisgICAgJHtQTn0tcGx1Z2luLXJlc29sdmUgXAorICAgICR7UE59LXBsdWdpbi1yZXZvY2F0aW9uIFwKKyAgICAke1BOfS1wbHVnaW4tc2hhMSBcCisgICAgJHtQTn0tcGx1Z2luLXNoYTIgXAorICAgICR7UE59LXBsdWdpbi1zb2NrZXQtZGVmYXVsdCBcCisgICAgJHtQTn0tcGx1Z2luLXNzaGtleSBcCisgICAgJHtQTn0tcGx1Z2luLXVwZG93biBcCisgICAgJHtQTn0tcGx1Z2luLXZpY2kgXAorICAgICR7UE59LXBsdWdpbi14NTA5IFwKKyAgICAke1BOfS1wbHVnaW4teGF1dGgtZ2VuZXJpYyBcCisgICAgJHtQTn0tcGx1Z2luLXhjYmMgXAorICAgICR7UE59LXBsdWdpbi1jdXJ2ZTI1NTE5IFwKKyAgICAiCisKK1JQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1JDT05GTElDVFNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3dhbmN0bCcsICcke0JQTn0uc2VydmljZScsICcnLCBkKX0gJHtCUE59LXN0YXJ0ZXIuc2VydmljZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdWZ0cC91ZnRwXzQuMTAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdWZ0cC91ZnRwXzQuMTAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZTM1ZWUxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC91ZnRwL3VmdHBfNC4xMC4yLmJiCkBAIC0wLDAgKzEsMTcgQEAKK0RFU0NSSVBUSU9OID0gIkVuY3J5cHRlZCBVRFAgYmFzZWQgRlRQIHdpdGggbXVsdGljYXN0IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdWZ0cC1tdWx0aWNhc3QiCitTRUNUSU9OID0gImxpYnMvbmV0d29yayIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy91ZnRwLW11bHRpY2FzdC9maWxlcy9zb3VyY2UtdGFyLyIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vdWZ0cC1tdWx0aWNhc3Qvc291cmNlLXRhci91ZnRwLSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkYjA1MTliZjdiMWUwMzI5NDQ5ZTgxYzFlNjgyNjJmOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlY2FiNmFiMDdmZTBlYmFmN2JmZTM1ZDk5ZmUyZGEyOGVkZTNkZGM2ZjIxZjgyNWQzYjI1OWNmMTcxMjU4NTA1IgorCitERVBFTkRTID0gIm9wZW5zc2wiCisKK2RvX2luc3RhbGwgKCkgeworCW9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdWZ0cC91ZnRwXzQuMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3VmdHAvdWZ0cF80LjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NmMwYzIyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdWZ0cC91ZnRwXzQuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1ERVNDUklQVElPTiA9ICJFbmNyeXB0ZWQgVURQIGJhc2VkIEZUUCB3aXRoIG11bHRpY2FzdCIKLUhPTUVQQUdFID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3VmdHAtbXVsdGljYXN0IgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvdWZ0cC1tdWx0aWNhc3QvZmlsZXMvc291cmNlLXRhci8iCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3VmdHAtbXVsdGljYXN0L3NvdXJjZS10YXIvdWZ0cC0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiZGY2NDA3YWYzYTAwNjdiODgxNDMxYjNkYWQxNDllZjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTFiYThhYWU4MGM3YzljY2FmMDQ2MDBiNjI4Y2JlY2E0Njk5ZWQ0ODI2OGZlNDNkMmJmNTM5YTQxMDgzZjI5MiIKLQotREVQRU5EUyA9ICJvcGVuc3NsIgotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3VuYm91bmQvdW5ib3VuZF8xLjkuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdW5ib3VuZC91bmJvdW5kXzEuOS40LmJiCmluZGV4IDAzZWIyZmEuLjYyMDAyMTQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdW5ib3VuZC91bmJvdW5kXzEuOS40LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvdW5ib3VuZC91bmJvdW5kXzEuOS40LmJiCkBAIC0yMyw3ICsyMyw3IEBACiAKIEVYVFJBX09FQ09ORiA9ICItLXdpdGgtbGliZXhwYXQ9JHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9IFwKIAkJLS13aXRoLXNzbD0ke1NUQUdJTkdfRVhFQ1BSRUZJWERJUn0gXAotCQlsaWJ0b29sPSR7VEFSR0VUX1BSRUZJWH1saWJ0b29sIFwKKwkJbGlidG9vbD0ke0hPU1RfU1lTfS1saWJ0b29sIFwKICIKIAkJCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvd2lyZXNoYXJrL3dpcmVzaGFya18zLjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvd2lyZXNoYXJrL3dpcmVzaGFya18zLjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY0NmIzMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1zdXBwb3J0L3dpcmVzaGFyay93aXJlc2hhcmtfMy4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4MSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJ3aXJlc2hhcmsgLSBhIHBvcHVsYXIgbmV0d29yayBwcm90b2NvbCBhbmFseXplciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cud2lyZXNoYXJrLm9yZyIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJHUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmUyNzEyMzRiYTFhMTNjNmU1MTJlNzZiOTRhYzJmNzciCi0KLURFUEVORFMgPSAicGNyZSBleHBhdCBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgbGliZ2NyeXB0IGxpYmdwZy1lcnJvciBsaWJ4bWwyIGJpc29uLW5hdGl2ZSIKLQotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB3aXJlc2hhcmstbmF0aXZlIGNocnBhdGgtcmVwbGFjZW1lbnQtbmF0aXZlICIKLQotU1JDX1VSSSA9ICJodHRwczovLzEuZXUuZGwud2lyZXNoYXJrLm9yZy9zcmMvYWxsLXZlcnNpb25zL3dpcmVzaGFyay0ke1BWfS50YXIueHoiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovLzEuYXMuZGwud2lyZXNoYXJrLm9yZy9zcmMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyNTk5MTVhZGJiYWRlZDE1ZGUwNzVhZmU3YjRiMDNiNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0Y2ZkMzNhMTlhNDU0ZmY0MDAyMjQzZTlkMDRkNmFmZDY0MjgwYTEwOWEyMWFlNjUyYTE5MmYyYmUyYjFiNjZjIgotCi1QRSA9ICIxIgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBweXRob24zbmF0aXZlIHBlcmxuYXRpdmUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLVBBQ0tBR0VDT05GSUcgPz0gImxpYnBjYXAgZ251dGxzIGxpYm5sIGxpYmNhcCBzYmMgJHtAYmIudXRpbHMuY29udGFpbnMoJ0JCRklMRV9DT0xMRUNUSU9OUycsICdxdDUtbGF5ZXInLCAncXQ1IHBsdWdpbnMnLCAnJywgZCl9IgotCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJsaWJwY2FwIGdudXRscyBzc2wgbGlic3NoIgotCi1QQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLURFTkFCTEVfQ0FQPU9OLC1ERU5BQkxFX0NBUD1PRkYgLURFTkFCTEVfUENBUF9OR19ERUZBVUxUPU9OLCBsaWJjYXAiCi1QQUNLQUdFQ09ORklHW2xpYnBjYXBdID0gIi1ERU5BQkxFX1BDQVA9T04sLURFTkFCTEVfUENBUD1PRkYgLURFTkFCTEVfUENBUF9OR19ERUZBVUxUPU9OICwgbGlicGNhcCIKLVBBQ0tBR0VDT05GSUdbbGlic21pXSA9ICItREVOQUJMRV9TTUk9T04sLURFTkFCTEVfU01JPU9GRixsaWJzbWkiCi1QQUNLQUdFQ09ORklHW2xpYm5sXSA9ICIsLGxpYm5sIgotUEFDS0FHRUNPTkZJR1twb3J0YXVkaW9dID0gIi1ERU5BQkxFX1BPUlRBVURJTz1PTiwtREVOQUJMRV9QT1JUQVVESU89T0ZGLCBwb3J0YXVkaW8tdjE5IgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi1ERU5BQkxFX0dOVVRMUz1PTiwtREVOQUJMRV9HTlVUTFM9T0ZGLCBnbnV0bHMiCi1QQUNLQUdFQ09ORklHW3NzbF0gPSAiLCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItREVOQUJMRV9LUkI1PU9OLC1ERU5BQkxFX0tSQjU9T0ZGLCBrcmI1IgotUEFDS0FHRUNPTkZJR1tsdWFdID0gIi1ERU5BQkxFX0xVQT1PTiwtREVOQUJMRV9MVUE9T0ZGLCBsdWEiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi1ERU5BQkxFX1pMSUI9T04sLURFTkFCTEVfWkxJQj1PRkYsIHpsaWIiCi1QQUNLQUdFQ09ORklHW2dlb2lwXSA9ICIsLCBnZW9pcCIKLVBBQ0tBR0VDT05GSUdbcGx1Z2luc10gPSAiLURFTkFCTEVfUExVR0lOUz1PTiwtREVOQUJMRV9QTFVHSU5TPU9GRiIKLVBBQ0tBR0VDT05GSUdbc2JjXSA9ICItREVOQUJMRV9TQkM9T04sLURFTkFCTEVfU0JDPU9GRiwgc2JjIgotUEFDS0FHRUNPTkZJR1tsaWJzc2hdID0gIiwsbGlic3NoMiIKLVBBQ0tBR0VDT05GSUdbbHo0XSA9ICItREVOQUJMRV9MWjQ9T04sLURFTkFCTEVfTFo0PU9GRiwgbHo0IgotCi0jIHRoZXNlIG5leHQgdHdvIG9wdGlvbnMgcmVxdWlyZSBhZGRpb25hbCBsYXllcnMKLVBBQ0tBR0VDT05GSUdbYy1hcmVzXSA9ICItREVOQUJMRV9DQVJFUz1PTiwtREVOQUJMRV9DQVJFUz1PRkYsIGMtYXJlcyIKLVBBQ0tBR0VDT05GSUdbcXQ1XSA9ICItREVOQUJMRV9RVDU9T04gLURCVUlMRF93aXJlc2hhcms9T04sIC1ERU5BQkxFX1FUNT1PRkYgLURCVUlMRF93aXJlc2hhcms9T0ZGLCBxdHRvb2xzLW5hdGl2ZSBxdG11bHRpbWVkaWEgcXRzdmciCi0KLWluaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncXQ1JywgJ2NtYWtlX3F0NScsICcnLCBkKX0KLQotRVhUUkFfT0VDTUFLRSArPSAiLURFTkFCTEVfTkVUTElOSz1PTiBcCi0gICAgICAgICAgICAgICAgICAtREJVSUxEX21tZGJyZXNvbHZlPU9GRiBcCi0gICAgICAgICAgICAgICAgICAtREJVSUxEX3JhbmRwa3RkdW1wPU9GRiBcCi0gICAgICAgICAgICAgICAgICAtREJVSUxEX2FuZHJvaWRkdW1wPU9GRiBcCi0gICAgICAgICAgICAgICAgICAtREJVSUxEX2RjZXJwY2lkbDJ3cnM9T0ZGIFwKLSAgICAgICAgICAgICAgICAgIC1ETV9JTkNMVURFX0RJUj0ke2luY2x1ZGVkaXJ9IFwKLSAgICAgICAgICAgICAgICAgIC1ETV9MSUJSQVJZPSR7bGliZGlyfSBcCi0gICAgICAgICAgICAgICAgICIKLUNGTEFHU19hcHBlbmQgPSAiIC1sbSIKLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotCWZvciBmIGluIGxlbW9uCi0JZG8KLQkJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vcnVuLyRmICR7RH0ke2JpbmRpcn0KLQlkb25lCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQlmb3IgZiBpbiBgZmluZCAke0R9JHtsaWJkaXJ9ICR7RH0ke2JpbmRpcn0gLXR5cGUgZiAtZXhlY3V0YWJsZWAKLQlkbwotCQljaHJwYXRoIC0tZGVsZXRlICRmCi0JZG9uZQotfQotCi1QQUNLQUdFX0JFRk9SRV9QTiArPSAidHNoYXJrIgotCi1GSUxFU190c2hhcmsgPSAiJHtiaW5kaXJ9L3RzaGFyayAke21hbmRpcn0vbWFuMS90c2hhcmsuKiIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0qIgotCi1SREVQRU5EU190c2hhcmsgPSAid2lyZXNoYXJrIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvd2lyZXNoYXJrL3dpcmVzaGFya18zLjIuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZy9yZWNpcGVzLXN1cHBvcnQvd2lyZXNoYXJrL3dpcmVzaGFya18zLjIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYjU0NTAyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtc3VwcG9ydC93aXJlc2hhcmsvd2lyZXNoYXJrXzMuMi4yLmJiCkBAIC0wLDAgKzEsODEgQEAKK0RFU0NSSVBUSU9OID0gIndpcmVzaGFyayAtIGEgcG9wdWxhciBuZXR3b3JrIHByb3RvY29sIGFuYWx5emVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy53aXJlc2hhcmsub3JnIgorU0VDVElPTiA9ICJuZXQiCitMSUNFTlNFID0gIkdQTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02ZTI3MTIzNGJhMWExM2M2ZTUxMmU3NmI5NGFjMmY3NyIKKworREVQRU5EUyA9ICJwY3JlIGV4cGF0IGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJnY3J5cHQgbGliZ3BnLWVycm9yIGxpYnhtbDIgYmlzb24tbmF0aXZlIgorCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHdpcmVzaGFyay1uYXRpdmUgY2hycGF0aC1yZXBsYWNlbWVudC1uYXRpdmUgIgorCitTUkNfVVJJID0gImh0dHBzOi8vMS5ldS5kbC53aXJlc2hhcmsub3JnL3NyYy9hbGwtdmVyc2lvbnMvd2lyZXNoYXJrLSR7UFZ9LnRhci54eiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vMS5hcy5kbC53aXJlc2hhcmsub3JnL3NyYyIKKworU1JDX1VSSVttZDVzdW1dID0gImU0NjhiNzhlMTE3NmUwMjEyYjEzZWY4MDlmNTlkY2JiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmNTkyM2VmNGMzZmVlMzcwZWQwY2ExYmIzMjRmMzdjMjQ2MDE1ZWJhNGE3ZTc0YWI5NWQ5MjA4ZmVlZGVkNzkiCisKK1BFID0gIjEiCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnIHB5dGhvbjNuYXRpdmUgcGVybG5hdGl2ZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gbWltZSBtaW1lLXhkZworCitQQUNLQUdFQ09ORklHID89ICJsaWJwY2FwIGdudXRscyBsaWJubCBsaWJjYXAgc2JjIgorCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJsaWJwY2FwIGdudXRscyBzc2wgbGlic3NoIgorCitQQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLURFTkFCTEVfQ0FQPU9OLC1ERU5BQkxFX0NBUD1PRkYgLURFTkFCTEVfUENBUF9OR19ERUZBVUxUPU9OLCBsaWJjYXAiCitQQUNLQUdFQ09ORklHW2xpYnBjYXBdID0gIi1ERU5BQkxFX1BDQVA9T04sLURFTkFCTEVfUENBUD1PRkYgLURFTkFCTEVfUENBUF9OR19ERUZBVUxUPU9OICwgbGlicGNhcCIKK1BBQ0tBR0VDT05GSUdbbGlic21pXSA9ICItREVOQUJMRV9TTUk9T04sLURFTkFCTEVfU01JPU9GRixsaWJzbWkiCitQQUNLQUdFQ09ORklHW2xpYm5sXSA9ICIsLGxpYm5sIgorUEFDS0FHRUNPTkZJR1twb3J0YXVkaW9dID0gIi1ERU5BQkxFX1BPUlRBVURJTz1PTiwtREVOQUJMRV9QT1JUQVVESU89T0ZGLCBwb3J0YXVkaW8tdjE5IgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi1ERU5BQkxFX0dOVVRMUz1PTiwtREVOQUJMRV9HTlVUTFM9T0ZGLCBnbnV0bHMiCitQQUNLQUdFQ09ORklHW3NzbF0gPSAiLCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1trcmI1XSA9ICItREVOQUJMRV9LUkI1PU9OLC1ERU5BQkxFX0tSQjU9T0ZGLCBrcmI1IgorUEFDS0FHRUNPTkZJR1tsdWFdID0gIi1ERU5BQkxFX0xVQT1PTiwtREVOQUJMRV9MVUE9T0ZGLCBsdWEiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi1ERU5BQkxFX1pMSUI9T04sLURFTkFCTEVfWkxJQj1PRkYsIHpsaWIiCitQQUNLQUdFQ09ORklHW2dlb2lwXSA9ICIsLCBnZW9pcCIKK1BBQ0tBR0VDT05GSUdbcGx1Z2luc10gPSAiLURFTkFCTEVfUExVR0lOUz1PTiwtREVOQUJMRV9QTFVHSU5TPU9GRiIKK1BBQ0tBR0VDT05GSUdbc2JjXSA9ICItREVOQUJMRV9TQkM9T04sLURFTkFCTEVfU0JDPU9GRiwgc2JjIgorUEFDS0FHRUNPTkZJR1tsaWJzc2hdID0gIiwsbGlic3NoMiIKK1BBQ0tBR0VDT05GSUdbbHo0XSA9ICItREVOQUJMRV9MWjQ9T04sLURFTkFCTEVfTFo0PU9GRiwgbHo0IgorCisjIHRoZXNlIG5leHQgdHdvIG9wdGlvbnMgcmVxdWlyZSBhZGRpb25hbCBsYXllcnMKK1BBQ0tBR0VDT05GSUdbYy1hcmVzXSA9ICItREVOQUJMRV9DQVJFUz1PTiwtREVOQUJMRV9DQVJFUz1PRkYsIGMtYXJlcyIKK1BBQ0tBR0VDT05GSUdbcXQ1XSA9ICItREVOQUJMRV9RVDU9T04gLURCVUlMRF93aXJlc2hhcms9T04sIC1ERU5BQkxFX1FUNT1PRkYgLURCVUlMRF93aXJlc2hhcms9T0ZGLCBxdHRvb2xzLW5hdGl2ZSBxdG11bHRpbWVkaWEgcXRzdmciCisKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncXQ1JywgJ2NtYWtlX3F0NScsICcnLCBkKX0KKworRVhUUkFfT0VDTUFLRSArPSAiLURFTkFCTEVfTkVUTElOSz1PTiBcCisgICAgICAgICAgICAgICAgICAtREJVSUxEX21tZGJyZXNvbHZlPU9GRiBcCisgICAgICAgICAgICAgICAgICAtREJVSUxEX3JhbmRwa3RkdW1wPU9GRiBcCisgICAgICAgICAgICAgICAgICAtREJVSUxEX2FuZHJvaWRkdW1wPU9GRiBcCisgICAgICAgICAgICAgICAgICAtREJVSUxEX2RjZXJwY2lkbDJ3cnM9T0ZGIFwKKyAgICAgICAgICAgICAgICAgIC1ETV9JTkNMVURFX0RJUj0ke2luY2x1ZGVkaXJ9IFwKKyAgICAgICAgICAgICAgICAgIC1ETV9MSUJSQVJZPSR7bGliZGlyfSBcCisgICAgICAgICAgICAgICAgICIKK0NGTEFHU19hcHBlbmQgPSAiIC1sbSIKKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWZvciBmIGluIGxlbW9uCisJZG8KKwkJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vcnVuLyRmICR7RH0ke2JpbmRpcn0KKwlkb25lCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKwlmb3IgZiBpbiBgZmluZCAke0R9JHtsaWJkaXJ9ICR7RH0ke2JpbmRpcn0gLXR5cGUgZiAtZXhlY3V0YWJsZWAKKwlkbworCQljaHJwYXRoIC0tZGVsZXRlICRmCisJZG9uZQorfQorCitQQUNLQUdFX0JFRk9SRV9QTiArPSAidHNoYXJrIgorCitGSUxFU190c2hhcmsgPSAiJHtiaW5kaXJ9L3RzaGFyayAke21hbmRpcn0vbWFuMS90c2hhcmsuKiIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0qIgorCitSREVQRU5EU190c2hhcmsgPSAid2lyZXNoYXJrIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvY29uZi9sYXllci5jb25mIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jb25mL2xheWVyLmNvbmYKaW5kZXggYmFkODc4NS4uYWRjZWM4MyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jb25mL2xheWVyLmNvbmYKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9jb25mL2xheWVyLmNvbmYKQEAgLTIzLDEzICsyMywyMCBAQAogCiBCQkZJTEVfUFJJT1JJVFlfb3BlbmVtYmVkZGVkLWxheWVyID0gIjYiCiAKKyMgb25seSBhY3RpdmF0ZXMgY29udGVudCB3aGVuIGlkZW50aWZpZWQgbGF5ZXJzIGFyZSBwcmVzZW50LAorIyB0byBlbnN1cmUgeW9jdG8gY29tcGF0aWJpbGl0eSBjaGVjayBwYXNzCitCQkZJTEVTX0RZTkFNSUMgKz0gIiBcCittZXRhLXB5dGhvbjoke0xBWUVSRElSfS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLSovKi8qLmJiIFwKK3BlcmwtbGF5ZXI6JHtMQVlFUkRJUn0vZHluYW1pYy1sYXllcnMvcGVybC1sYXllci9yZWNpcGVzLSovKi8qLmJiIFwKKyIKKwogIyBUaGlzIHNob3VsZCBvbmx5IGJlIGluY3JlbWVudGVkIG9uIHNpZ25pZmljYW50IGNoYW5nZXMgdGhhdCB3aWxsCiAjIGNhdXNlIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggb3RoZXIgbGF5ZXJzCiBMQVlFUlZFUlNJT05fb3BlbmVtYmVkZGVkLWxheWVyID0gIjEiCiAKIExBWUVSREVQRU5EU19vcGVuZW1iZWRkZWQtbGF5ZXIgPSAiY29yZSIKIAotTEFZRVJTRVJJRVNfQ09NUEFUX29wZW5lbWJlZGRlZC1sYXllciA9ICJ0aHVkIHdhcnJpb3IgemV1cyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9vcGVuZW1iZWRkZWQtbGF5ZXIgPSAidGh1ZCB3YXJyaW9yIHpldXMgZHVuZmVsbCIKIAogTElDRU5TRV9QQVRIICs9ICIke0xBWUVSRElSfS9saWNlbnNlcyIKIApAQCAtNDksMTEgKzU2LDEzIEBACiAgIHVzYi1tb2Rlc3dpdGNoLWRhdGEtPnVzYi1tb2Rlc3dpdGNoIFwKICAgbG1zZW5zb3JzLT5sbXNlbnNvcnMtY29uZmlnIFwKICAgcGhvcm9uaXgtdGVzdC1zdWl0ZS0+YmFzaCBcCi0gIHBob3Jvbml4LXRlc3Qtc3VpdGUtPnB5dGhvbiBcCisgIHBob3Jvbml4LXRlc3Qtc3VpdGUtPnB5dGhvbjMgXAogICBwaG9yb25peC10ZXN0LXN1aXRlLT5waHAgXAogICBwaG9yb25peC10ZXN0LXN1aXRlLT5sc2ItcmVsZWFzZSBcCiAgIHBob3Jvbml4LXRlc3Qtc3VpdGUtPnV0aWwtbGludXggXAogICBwaG9yb25peC10ZXN0LXN1aXRlLT5idXN5Ym94IFwKKyAgcGhvcm9uaXgtdGVzdC1zdWl0ZS0+c2hhcmVkLW1pbWUtaW5mbyBcCisgIHBob3Jvbml4LXRlc3Qtc3VpdGUtPmRlc2t0b3AtZmlsZS11dGlscyBcCiAiCiAKICMgdHRmLmluYyBpbmhlcml0cyBmb250Y2FjaGUgd2hpY2ggYWRkcyBmb250Y29uZmlnLXV0aWxzIHRvIFJERVBFTkRTCkBAIC03MCw2ICs3OSw3IEBACiAgIHR0Zi1saWJlcmF0aW9uLXNhbnMtbmFycm93LT5mb250Y29uZmlnIFwKICAgdHRmLWxrbHVnLT5mb250Y29uZmlnIFwKICAgdHRmLWxvaGl0LT5mb250Y29uZmlnIFwKKyAgdHRmLW5vdG8tZW1vamktPmZvbnRjb25maWcgXAogICB0dGYtcHQtc2Fucy0+Zm9udGNvbmZpZyBcCiAgIHR0Zi1yb2JvdG8tPmZvbnRjb25maWcgXAogICB0dGYtbXBsdXMtPmZvbnRjb25maWcgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9zcGVlZHRlc3QtY2xpL3NwZWVkdGVzdC1jbGlfMi4xLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtYmVuY2htYXJrL3NwZWVkdGVzdC1jbGkvc3BlZWR0ZXN0LWNsaV8yLjEuMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9zcGVlZHRlc3QtY2xpL3NwZWVkdGVzdC1jbGlfMi4xLjIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1iZW5jaG1hcmsvc3BlZWR0ZXN0LWNsaS9zcGVlZHRlc3QtY2xpXzIuMS4yLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL3J3bWVtL3J3bWVtXzEuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1ic3AvcndtZW0vcndtZW1fMS4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL3J3bWVtL3J3bWVtXzEuMi5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWJzcC9yd21lbS9yd21lbV8xLjIuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjLzAwMDEtRml4LWJ1aWxkLW9uLTMyYml0LWFyY2hlcy13aXRoLTY0Yml0LXRpbWVfdC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjLzAwMDEtRml4LWJ1aWxkLW9uLTMyYml0LWFyY2hlcy13aXRoLTY0Yml0LXRpbWVfdC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saXJjL2xpcmMvMDAwMS1GaXgtYnVpbGQtb24tMzJiaXQtYXJjaGVzLXdpdGgtNjRiaXQtdGltZV90LnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy8wMDAxLUZpeC1idWlsZC1vbi0zMmJpdC1hcmNoZXMtd2l0aC02NGJpdC10aW1lX3QucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjL2xpcmMudG1wZmlsZXMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjLnRtcGZpbGVzCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjLnRtcGZpbGVzCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjLnRtcGZpbGVzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjX29wdGlvbnMuY29uZiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjL2xpcmNfb3B0aW9ucy5jb25mCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjX29wdGlvbnMuY29uZgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saXJjL2xpcmMvbGlyY19vcHRpb25zLmNvbmYKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjL2xpcmNkLmNvbmYgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjZC5jb25mCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjZC5jb25mCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjZC5jb25mCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjZC5pbml0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saXJjL2xpcmMvbGlyY2QuaW5pdApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saXJjL2xpcmMvbGlyY2QuaW5pdApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saXJjL2xpcmMvbGlyY2QuaW5pdApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saXJjL2xpcmMvbGlyY2Quc2VydmljZSBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjL2xpcmNkLnNlcnZpY2UKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjL2xpcmNkLnNlcnZpY2UKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjL2xpcmNkLnNlcnZpY2UKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjL2xpcmNleGVjLmluaXQgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjZXhlYy5pbml0CnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjZXhlYy5pbml0CnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9saXJjZXhlYy5pbml0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9wb2xsZmQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyYy9wb2xsZmQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjL3BvbGxmZC5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saXJjL2xpcmMvcG9sbGZkLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyY18wLjkuNGQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyY18wLjkuNGQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU5OTY5NgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlyYy9saXJjXzAuOS40ZC5iYgpAQCAtMCwwICsxLDg2IEBACitERVNDUklQVElPTiA9ICJMSVJDIGlzIGEgcGFja2FnZSB0aGF0IGFsbG93cyB5b3UgdG8gZGVjb2RlIGFuZCBzZW5kIGluZnJhLXJlZCBzaWduYWxzIG9mIG1hbnkgY29tbW9ubHkgdXNlZCByZW1vdGUgY29udHJvbHMuIgorREVTQ1JJUFRJT05fYXBwZW5kX2xpcmMgPSAiIFRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgbGlyYyBkYWVtb24sIGxpYnJhcmllcyBhbmQgdG9vbHMuIgorREVTQ1JJUFRJT05fYXBwZW5kX2xpcmMtZXhlYyA9ICIgVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGEgZGFlbW9uIHRoYXQgcnVucyBwcm9ncmFtcyBvbiBJUiBzaWduYWxzLiIKK0RFU0NSSVBUSU9OX2FwcGVuZF9saXJjLXJlbW90ZXMgPSAiIFRoaXMgcGFja2FnZSBjb250YWlucyBzb21lIGNvbmZpZyBmaWxlcyBmb3IgcmVtb3Rlcy4iCitERVNDUklQVElPTl9hcHBlbmRfbGlyYy1uc2x1MmV4YW1wbGUgPSAiIFRoaXMgcGFja2FnZSBjb250YWlucyBhIHdvcmtpbmcgY29uZmlnIGZvciBSQzUgcmVtb3RlcyBhbmQgYSBtb2RpZmllZCBOU0xVMi4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpcmMub3JnIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkdQTHYyIgorREVQRU5EUyA9ICJsaWJ4c2x0LW5hdGl2ZSBhbHNhLWxpYiBsaWJmdGRpIGxpYnVzYjEgbGlidXNiLWNvbXBhdCBqYWNrIHBvcnRhdWRpby12MTkgcHl0aG9uMy1weXlhbWwiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gImh0dHA6Ly9wcmRvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvbGlyYy9saXJjLSR7UFZ9LnRhci5iejIgXAorICAgIGZpbGU6Ly9wb2xsZmQucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1vbi0zMmJpdC1hcmNoZXMtd2l0aC02NGJpdC10aW1lX3QucGF0Y2ggXAorICAgIGZpbGU6Ly9saXJjZC5zZXJ2aWNlIFwKKyAgICBmaWxlOi8vbGlyY2QuaW5pdCBcCisgICAgZmlsZTovL2xpcmNleGVjLmluaXQgXAorICAgIGZpbGU6Ly9saXJjZC5jb25mIFwKKyAgICBmaWxlOi8vbGlyY19vcHRpb25zLmNvbmYgXAorICAgIGZpbGU6Ly9saXJjLnRtcGZpbGVzIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwZDExNjc5Y2JkZDk0YTVhNmRhMDBhOGU3MjMxYjRiZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNjhmMThjMzViNDg5Yjg2NWMwYTc0MWQxMTliMTM2ZTg3MDIxOTE1MzhjZDM1NTFiOTc3YTdhZjZjNGU0MWFiIgorCitTWVNURU1EX1BBQ0tBR0VTID0gImxpcmMgbGlyYy1leGVjIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImxpcmNkLnNlcnZpY2UgbGlyY21kLnNlcnZpY2UgbGlyY2Qtc2V0dXAuc2VydmljZSBsaXJjZC11aW5wdXQuc2VydmljZSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1leGVjID0gImlyZXhlYy5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRV9saXJjID0gImVuYWJsZSIKK1NZU1RFTURfQVVUT19FTkFCTEVfbGlyYy1leGVjID0gImVuYWJsZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgcHl0aG9uM25hdGl2ZQorCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCwtLXdpdGgteD1ubyxsaWJ4MTEsIgorCitQQUNLQUdFQ09ORklHID89ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICcgc3lzdGVtZCcsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJyB4MTEnLCAnJywgZCl9IFwKKyIKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gIkhBVkVfV09SS0lOR19QT0xMPXllcyIKKworI0VYVFJBX09FTUFLRSA9ICdTVUJESVJTPSJsaWIgZGFlbW9ucyB0b29scyInCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1tIDA3NTUgLWQgJHtEfSR7c3lzY29uZmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgLWQgJHtEfSR7c3lzY29uZmRpcn0vbGlyYworICAgIGluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtsaWJkaXJ9L3RtcGZpbGVzLmQKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saXJjZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2xpcmMvCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlyY19vcHRpb25zLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vbGlyYy8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saXJjZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2xpcmNleGVjLmluaXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlyYy50bXBmaWxlcyAke0R9JHtsaWJkaXJ9L3RtcGZpbGVzLmQvbGlyYy5jb25mCisgICAgcm0gLXJmICR7RH0ke2xpYmRpcn0vbGlyYy9wbHVnaW5zLyoubGEKKyAgICBybWRpciAke0R9L3Zhci9ydW4vbGlyYyAke0R9L3Zhci9ydW4KKyAgICBjaG93biAtUiByb290OnJvb3QgJHtEfSR7ZGF0YWRpcn0vbGlyYy9jb250cmliCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1jb250cmliICR7UE59LWV4ZWMgJHtQTn0tcGx1Z2lucyAke1BOfS1weXRob24iCisKK1JERVBFTkRTXyR7UE59ID0gImJhc2giCitSREVQRU5EU18ke1BOfS1leGVjID0gIiR7UE59IgorUkRFUEVORFNfJHtQTn0tcHl0aG9uID0gInB5dGhvbjMtc2hlbGwgcHl0aG9uMy1weXlhbWwgcHl0aG9uMy1kYXRldGltZSBweXRob24zLW5ldGNsaWVudCBweXRob24zLXN0cmluZ29sZCIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAiJHtQTn0tZXhlYyAke1BOfS1wbHVnaW5zIgorCitGSUxFU18ke1BOfS1wbHVnaW5zID0gIiR7bGliZGlyfS9saXJjL3BsdWdpbnMvKi5zbyAke2RhdGFkaXJ9L2xpcmMvY29uZmlncyIKK0ZJTEVTXyR7UE59LWNvbnRyaWIgPSAiJHtkYXRhZGlyfS9saXJjL2NvbnRyaWIiCitGSUxFU18ke1BOfS1leGVjID0gIiR7YmluZGlyfS9pcmV4ZWMgJHtzeXNjb25mZGlyfS9saXJjZXhlYyAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2lyZXhlYy5zZXJ2aWNlIgorRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbGlyY2V4ZWMuaW5pdCIKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2xpcmNkLnNlcnZpY2UiCitGSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9saXJjZC5zb2NrZXQiCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3RtcGZpbGVzLmQvbGlyYy5jb25mIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vbGlyYy9wbHVnaW5zLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LXB5dGhvbiArPSAiJHtiaW5kaXJ9L2lyZGItZ2V0ICR7YmluZGlyfS9pcnRleHQydWRwICR7YmluZGlyfS9saXJjZC1zZXR1cCAke2JpbmRpcn0vcHJvbnRvMmxpcmMgJHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcyIKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJsaXJjIGxpcmMtZXhlYyIKK0lOSVRTQ1JJUFRfTkFNRV9saXJjLWV4ZWMgPSAibGlyY2V4ZWMiCitJTklUU0NSSVBUX1BBUkFNU19saXJjLWV4ZWMgPSAiZGVmYXVsdHMgMjEiCisKKyMgdGhpcyBpcyBmb3IgZGlzdHJpYnV0aW9ucyB0aGF0IGRvbid0IHVzZSB1ZGV2Citwa2dfcG9zdGluc3RfJHtQTn1fYXBwZW5kKCkgeworICAgIGlmIFsgISAtYyAkRC9kZXYvbGlyYyAtYSAhIC1mIC9zYmluL3VkZXZkIF07IHRoZW4gbWtub2QgJEQvZGV2L2xpcmMgYyA2MSAwOyBmaQorfQorCitTRUNVUklUWV9DRkxBR1MgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtb2UuYmJhcHBlbmQgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLW9lLmJiYXBwZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUwZGE1ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLW9lLmJiYXBwZW5kCkBAIC0wLDAgKzEsMjAgQEAKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWRldnRvb2xzICs9ICJcCisgICAgcHl0aG9uMy1kaXN0dXRpbHMtZXh0cmEgXAorICAgIHJ3bWVtIFwKKyAgICBzcGVlZHRlc3QtY2xpIFwKKyAgICBtb25nb2RiIFwKKyIKKworUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtY29ubmVjdGl2aXR5ICs9ICJcCisgICAgbGlyYyBcCisiCisKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWV4dGVuZGVkICs9ICJcCisgICAgbGNkcHJvYyBcCisgICAgbW96anMgXAorIgorUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2Utc3VwcG9ydCArPSAiXAorICAgIHNtZW0gXAorIgorUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtZXh0ZW5kZWRfcmVtb3ZlX2xpYmMtbXVzbCA9ICJsY2Rwcm9jIgorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLUludGVsUkRGUE1hdGhMaWIyMFUxLUNoZWNrLWZvci1fX0RFRklORURfd2NoYXJfdC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtSW50ZWxSREZQTWF0aExpYjIwVTEtQ2hlY2stZm9yLV9fREVGSU5FRF93Y2hhcl90LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLUludGVsUkRGUE1hdGhMaWIyMFUxLUNoZWNrLWZvci1fX0RFRklORURfd2NoYXJfdC5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1JbnRlbFJERlBNYXRoTGliMjBVMS1DaGVjay1mb3ItX19ERUZJTkVEX3djaGFyX3QucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtTWFyay1vbmUtb2Ytc3RyZXJyb3Jfci1pbXBsZW1lbnRhdGlvbi1nbGliYy1zcGVjaWZpYy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtTWFyay1vbmUtb2Ytc3RyZXJyb3Jfci1pbXBsZW1lbnRhdGlvbi1nbGliYy1zcGVjaWZpYy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1NYXJrLW9uZS1vZi1zdHJlcnJvcl9yLWltcGxlbWVudGF0aW9uLWdsaWJjLXNwZWNpZmljLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLU1hcmstb25lLW9mLXN0cmVycm9yX3ItaW1wbGVtZW50YXRpb24tZ2xpYmMtc3BlY2lmaWMucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtU3VwcG9ydC1kZXByZWNhdGVkLXJlc29sdmVyLWZ1bmN0aW9ucy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtU3VwcG9ydC1kZXByZWNhdGVkLXJlc29sdmVyLWZ1bmN0aW9ucy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1TdXBwb3J0LWRlcHJlY2F0ZWQtcmVzb2x2ZXItZnVuY3Rpb25zLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVN1cHBvcnQtZGVwcmVjYXRlZC1yZXNvbHZlci1mdW5jdGlvbnMucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVGVsbC1zY29ucy10by11c2UtYnVpbGQtc2V0dGluZ3MtZnJvbS1lbnZpcm9ubWVudC12YS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVGVsbC1zY29ucy10by11c2UtYnVpbGQtc2V0dGluZ3MtZnJvbS1lbnZpcm9ubWVudC12YS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1UZWxsLXNjb25zLXRvLXVzZS1idWlsZC1zZXR0aW5ncy1mcm9tLWVudmlyb25tZW50LXZhLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVRlbGwtc2NvbnMtdG8tdXNlLWJ1aWxkLXNldHRpbmdzLWZyb20tZW52aXJvbm1lbnQtdmEucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLV9fR0xJQkNfXy10by1jb250cm9sLXVzZS1vZi1nbnVfZ2V0X2xpYmNfdmVyc2lvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLV9fR0xJQkNfXy10by1jb250cm9sLXVzZS1vZi1nbnVfZ2V0X2xpYmNfdmVyc2lvbi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1Vc2UtX19HTElCQ19fLXRvLWNvbnRyb2wtdXNlLW9mLWdudV9nZXRfbGliY192ZXJzaW9uLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1fX0dMSUJDX18tdG8tY29udHJvbC11c2Utb2YtZ251X2dldF9saWJjX3ZlcnNpb24ucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtVXNlLWxvbmctbG9uZy1pbnN0ZWFkLW9mLWludDY0X3QucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1sb25nLWxvbmctaW5zdGVhZC1vZi1pbnQ2NF90LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1sb25nLWxvbmctaW5zdGVhZC1vZi1pbnQ2NF90LnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLVVzZS1sb25nLWxvbmctaW5zdGVhZC1vZi1pbnQ2NF90LnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLWFzaW8tRG9udC11c2UtZXhwZXJpbWVudGFsLXdpdGgtY2xhbmcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAxLWFzaW8tRG9udC11c2UtZXhwZXJpbWVudGFsLXdpdGgtY2xhbmcucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDEtYXNpby1Eb250LXVzZS1leHBlcmltZW50YWwtd2l0aC1jbGFuZy5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMS1hc2lvLURvbnQtdXNlLWV4cGVyaW1lbnRhbC13aXRoLWNsYW5nLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAyLUFkZC1hLWRlZmluaXRpb24tZm9yLXRoZS1tYWNyby1fX0VMRl9OQVRJVkVfQ0xBU1MucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAyLUFkZC1hLWRlZmluaXRpb24tZm9yLXRoZS1tYWNyby1fX0VMRl9OQVRJVkVfQ0xBU1MucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDItQWRkLWEtZGVmaW5pdGlvbi1mb3ItdGhlLW1hY3JvLV9fRUxGX05BVElWRV9DTEFTUy5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMi1BZGQtYS1kZWZpbml0aW9uLWZvci10aGUtbWFjcm8tX19FTEZfTkFUSVZFX0NMQVNTLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAyLUZpeC1kZWZhdWx0LXN0YWNrLXNpemUtdG8tMjU2Sy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDItRml4LWRlZmF1bHQtc3RhY2stc2l6ZS10by0yNTZLLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAyLUZpeC1kZWZhdWx0LXN0YWNrLXNpemUtdG8tMjU2Sy5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMi1GaXgtZGVmYXVsdC1zdGFjay1zaXplLXRvLTI1NksucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDMtRml4LXVua25vd24tcHJlZml4LWVudi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDMtRml4LXVua25vd24tcHJlZml4LWVudi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwMy1GaXgtdW5rbm93bi1wcmVmaXgtZW52LnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDAzLUZpeC11bmtub3duLXByZWZpeC1lbnYucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDQtd2lyZWR0aWdlci1EaXNhYmxlLXN0cnRvdXEtb24tbXVzbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzAwMDQtd2lyZWR0aWdlci1EaXNhYmxlLXN0cnRvdXEtb24tbXVzbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvMDAwNC13aXJlZHRpZ2VyLURpc2FibGUtc3RydG91cS1vbi1tdXNsLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8wMDA0LXdpcmVkdGlnZXItRGlzYWJsZS1zdHJ0b3VxLW9uLW11c2wucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1kYnMvbW9uZ29kYi9tb25nb2RiLzEyOTYucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8xMjk2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlODRiY2IKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi8xMjk2LnBhdGNoCkBAIC0wLDAgKzEsNTIgQEAKK1Vwc3RyZWFtLVN0YXR1czogc3VibWl0dGVkIGh0dHBzOi8vZ2l0aHViLmNvbS9tb25nb2RiL21vbmdvL3B1bGwvMTI5NgorRnJvbSAzNjJiZTA2ZmMxNmE1YWQwZjllOWFhOTBjYzc2M2M1MjQyZThlMzVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmFicmljZSBGb250YWluZSA8Zm9udGFpbmUuZmFicmljZUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDkgRmViIDIwMTkgMTI6NDE6NDUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gc3NsX21hbmFnZXIuY3BwOiBmaXggYnVpbGQgd2l0aCBnY2MgNyBhbmQgLWZwZXJtaXNzaXZlCisKK0NoYW5nZSBwcm90b3R5cGUgb2YgREVSVG9rZW46OnBhcnNlIGZ1bmN0aW9uIGZyb20KK3BhcnNlKENvbnN0RGF0YVJhbmdlIGNkciwgc2l6ZV90KiBvdXRMZW5ndGgpOwordG8gcGFyc2UoQ29uc3REYXRhUmFuZ2UgY2RyLCB1aW50NjRfdCogb3V0TGVuZ3RoKTsKKworT3RoZXJ3aXNlLCB3ZSBnb3QgdGhlIGZvbGxvd2luZyBlcnJvcjoKKworc3JjL21vbmdvL3V0aWwvbmV0L3NzbF9tYW5hZ2VyLmNwcDogSW4gc3RhdGljIG1lbWJlciBmdW5jdGlvbiAnc3RhdGljIG1vbmdvOjpTdGF0dXNXaXRoPG1vbmdvOjp7YW5vbnltb3VzfTo6REVSVG9rZW4+IG1vbmdvOjp7YW5vbnltb3VzfTo6REVSVG9rZW46OnBhcnNlKG1vbmdvOjpDb25zdERhdGFSYW5nZSwgc2l6ZV90KiknOgorc3JjL21vbmdvL3V0aWwvbmV0L3NzbF9tYW5hZ2VyLmNwcDo1NzU6Nzk6IGVycm9yOiBpbnZhbGlkIGNvbnZlcnNpb24gZnJvbSAnc2l6ZV90KiB7YWthIHVuc2lnbmVkIGludCp9JyB0byAnbG9uZyB1bnNpZ25lZCBpbnQqJyBbLWZwZXJtaXNzaXZlXQorICBpZiAobW9uZ29VbnNpZ25lZEFkZE92ZXJmbG93NjQodGFnQW5kTGVuZ3RoQnl0ZUNvdW50LCBkZXJMZW5ndGgsIG91dExlbmd0aCkgfHwKKworU2lnbmVkLW9mZi1ieTogRmFicmljZSBGb250YWluZSA8Zm9udGFpbmUuZmFicmljZUBnbWFpbC5jb20+CistLS0KKyBzcmMvbW9uZ28vdXRpbC9uZXQvc3NsX21hbmFnZXIuY3BwIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL21vbmdvL3V0aWwvbmV0L3NzbF9tYW5hZ2VyLmNwcCBiL3NyYy9tb25nby91dGlsL25ldC9zc2xfbWFuYWdlci5jcHAKK2luZGV4IGI5M2ViZTg0YTRhMy4uMzUxMWViNWQ5OThmIDEwMDY0NAorLS0tIGEvc3JjL21vbmdvL3V0aWwvbmV0L3NzbF9tYW5hZ2VyLmNwcAorKysrIGIvc3JjL21vbmdvL3V0aWwvbmV0L3NzbF9tYW5hZ2VyLmNwcAorQEAgLTc4Miw3ICs3ODIsNyBAQCBjbGFzcyBERVJUb2tlbiB7CisgICAgICAqCisgICAgICAqIFJldHVybnMgYSBERVJUb2tlbiB3aGljaCBjb25zaXN0cyBvZiB0aGUgKHRhZywgbGVuZ3RoLCB2YWx1ZSkgdHVwbGUuCisgICAgICAqLworLSAgICBzdGF0aWMgU3RhdHVzV2l0aDxERVJUb2tlbj4gcGFyc2UoQ29uc3REYXRhUmFuZ2UgY2RyLCBzaXplX3QqIG91dExlbmd0aCk7CisrICAgIHN0YXRpYyBTdGF0dXNXaXRoPERFUlRva2VuPiBwYXJzZShDb25zdERhdGFSYW5nZSBjZHIsIHVpbnQ2NF90KiBvdXRMZW5ndGgpOworIAorIHByaXZhdGU6CisgICAgIERFUlR5cGUgX3R5cGV7REVSVHlwZTo6RW5kT2ZDb250ZW50fTsKK0BAIC03OTksNyArNzk5LDcgQEAgc3RydWN0IERhdGFUeXBlOjpIYW5kbGVyPERFUlRva2VuPiB7CisgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuZ3RoLAorICAgICAgICAgICAgICAgICAgICAgICAgc2l6ZV90KiBhZHZhbmNlZCwKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0ZDo6cHRyZGlmZl90IGRlYnVnX29mZnNldCkgeworLSAgICAgICAgc2l6ZV90IG91dExlbmd0aDsKKysgICAgICAgIHVpbnQ2NF90IG91dExlbmd0aDsKKyAKKyAgICAgICAgIGF1dG8gc3dQYWlyID0gREVSVG9rZW46OnBhcnNlKENvbnN0RGF0YVJhbmdlKHB0ciwgbGVuZ3RoKSwgJm91dExlbmd0aCk7CisgCitAQCAtODQ0LDcgKzg0NCw3IEBAIFN0YXR1c1dpdGg8c3RkOjpzdHJpbmc+IHJlYWRERVJTdHJpbmcoQ29uc3REYXRhUmFuZ2VDdXJzb3ImIGNkYykgeworIH0KKyAKKyAKKy1TdGF0dXNXaXRoPERFUlRva2VuPiBERVJUb2tlbjo6cGFyc2UoQ29uc3REYXRhUmFuZ2UgY2RyLCBzaXplX3QqIG91dExlbmd0aCkgeworK1N0YXR1c1dpdGg8REVSVG9rZW4+IERFUlRva2VuOjpwYXJzZShDb25zdERhdGFSYW5nZSBjZHIsIHVpbnQ2NF90KiBvdXRMZW5ndGgpIHsKKyAgICAgY29uc3Qgc2l6ZV90IGtUYWdMZW5ndGggPSAxOworICAgICBjb25zdCBzaXplX3Qga1RhZ0xlbmd0aEFuZEluaXRpYWxMZW5ndGhCeXRlTGVuZ3RoID0ga1RhZ0xlbmd0aCArIDE7CisgCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYi9hcm02NC1zdXBwb3J0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvYXJtNjQtc3VwcG9ydC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvYXJtNjQtc3VwcG9ydC5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGIvYXJtNjQtc3VwcG9ydC5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGJfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGJfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4ODQxZWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYl9naXQuYmIKQEAgLTAsMCArMSw3NiBAQAorU1VNTUFSWSA9ICJtb25nb2RiIgorTElDRU5TRSA9ICJTU1BMLTEgJiBBcGFjaGUtMi4wICYgWmxpYiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UtQ29tbXVuaXR5LnR4dDttZDU9M2E4NjVmMjdmMTFmNDNlY2JlNTQyZDllYTM4N2RjZjEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQVBBQ0hFLTIuMC50eHQ7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorCitERVBFTkRTID0gIm9wZW5zc2wgbGlicGNhcCB6bGliIGJvb3N0IGN1cmwgcHl0aG9uMyBcCisgICAgICAgICAgIHB5dGhvbjMtc2V0dXB0b29scy1uYXRpdmUgXAorICAgICAgICAgICBweXRob24zLXB5eWFtbC1uYXRpdmUgcHl0aG9uMy1jaGVldGFoLW5hdGl2ZSBcCisgICAgICAgICAgIHB5dGhvbjMtcHN1dGlsLW5hdGl2ZSBweXRob24zLXJlZ2V4LW5hdGl2ZSBcCisgICAgICAgICAgICIKKworaW5oZXJpdCBzY29ucyBkb3MydW5peCBzaXRlaW5mbyBweXRob24zbmF0aXZlCisKK1BWID0gIjQuMi4yIgorI3Y0LjIuMgorU1JDUkVWID0gImEwYmJiZmY2YWRhMTU5ZTE5Mjk4ZDM3OTQ2YWM4ZGM0YjQ5N2VhZGYiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbW9uZ29kYi9tb25nby5naXQ7YnJhbmNoPXY0LjIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1UZWxsLXNjb25zLXRvLXVzZS1idWlsZC1zZXR0aW5ncy1mcm9tLWVudmlyb25tZW50LXZhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWxvbmctbG9uZy1pbnN0ZWFkLW9mLWludDY0X3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtX19HTElCQ19fLXRvLWNvbnRyb2wtdXNlLW9mLWdudV9nZXRfbGliY192ZXJzaW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLWEtZGVmaW5pdGlvbi1mb3ItdGhlLW1hY3JvLV9fRUxGX05BVElWRV9DTEFTUy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hcm02NC1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSW50ZWxSREZQTWF0aExpYjIwVTEtQ2hlY2stZm9yLV9fREVGSU5FRF93Y2hhcl90LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtU3VwcG9ydC1kZXByZWNhdGVkLXJlc29sdmVyLWZ1bmN0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUZpeC11bmtub3duLXByZWZpeC1lbnYucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMTI5Ni5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9IlwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFyay1vbmUtb2Ytc3RyZXJyb3Jfci1pbXBsZW1lbnRhdGlvbi1nbGliYy1zcGVjaWZpYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeC1kZWZhdWx0LXN0YWNrLXNpemUtdG8tMjU2Sy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXdpcmVkdGlnZXItRGlzYWJsZS1zdHJ0b3VxLW9uLW11c2wucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX3Rvb2xjaGFpbi1jbGFuZyA9ICJcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFzaW8tRG9udC11c2UtZXhwZXJpbWVudGFsLXdpdGgtY2xhbmcucGF0Y2ggXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0NPTVBBVElCTEVfSE9TVCA/PSAnKHg4Nl82NHxpLjg2fHBvd2VycGM2NHxhcm18YWFyY2g2NCkuKi1saW51eCcKKworUEFDS0FHRUNPTkZJRyA/Pz0gInRjbWFsbG9jIHN5c3RlbS1wY3JlIgorIyBncGVyZnRvb2xzIGNvbXBpbGF0aW9uIGZhaWxzIGZvciBhcm0gYmVsb3cgdjcgYmVjYXVzZSBvZiBtaXNzaW5nIHN1cHBvcnQgb2YKKyMgZG1iIG9wZXJhdGlvbi4gU28gd2UgdXNlIHN5c3RlbS1hbGxvY2F0b3IgaW5zdGVhZCBvZiB0Y21hbGxvYworUEFDS0FHRUNPTkZJR19yZW1vdmVfYXJtdjYgPSAidGNtYWxsb2MiCitQQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAidGNtYWxsb2MiCitQQUNLQUdFQ09ORklHX3JlbW92ZV9yaXNjdjY0ID0gInRjbWFsbG9jIgorUEFDS0FHRUNPTkZJR19yZW1vdmVfcmlzY3YzMiA9ICJ0Y21hbGxvYyIKKworUEFDS0FHRUNPTkZJR1t0Y21hbGxvY10gPSAiLS11c2Utc3lzdGVtLXRjbWFsbG9jLC0tYWxsb2NhdG9yPXN5c3RlbSxncGVyZnRvb2xzLCIKK1BBQ0tBR0VDT05GSUdbc2hlbGxdID0gIiwtLWpzLWVuZ2luZT1ub25lLCwiCitQQUNLQUdFQ09ORklHW3N5c3RlbS1wY3JlXSA9ICItLXVzZS1zeXN0ZW0tcGNyZSwsbGlicGNyZSwiCisKK0VYVFJBX09FU0NPTlMgPSAiLS1wcmVmaXg9JHtEfSR7cHJlZml4fSBcCisgICAgICAgICAgICAgICAgIExJQlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0gXAorICAgICAgICAgICAgICAgICBMSU5LRkxBR1M9JyR7TERGTEFHU30nIFwKKyAgICAgICAgICAgICAgICAgQ1hYRkxBR1M9JyR7Q1hYRkxBR1N9JyBcCisgICAgICAgICAgICAgICAgIFRBUkdFVF9BUkNIPSR7VEFSR0VUX0FSQ0h9IFwKKyAgICAgICAgICAgICAgICAgLS1zc2wgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtd2FybmluZ3MtYXMtZXJyb3JzIFwKKyAgICAgICAgICAgICAgICAgLS11c2Utc3lzdGVtLXpsaWIgXAorICAgICAgICAgICAgICAgICAtLW5vc3RyaXAgXAorICAgICAgICAgICAgICAgICAtLWVuZGlhbj0ke0BvZS51dGlscy5jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICdsaXR0bGUnLCAnYmlnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgLS13aXJlZHRpZ2VyPSR7QFsnb2ZmJywnb24nXVtkLmdldFZhcignU0lURUlORk9fQklUUycpICE9ICczMiddfSBcCisgICAgICAgICAgICAgICAgICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gXAorICAgICAgICAgICAgICAgICBjb3JlIgorCitzY29uc19kb19jb21waWxlKCkgeworICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vc2NvbnMgJHtQQVJBTExFTF9NQUtFfSAke0VYVFJBX09FU0NPTlN9IHx8IFwKKyAgICAgICAgZGllICJzY29ucyBidWlsZCBleGVjdXRpb24gZmFpbGVkLiIKK30KKworc2NvbnNfZG9faW5zdGFsbCgpIHsKKyAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3Njb25zIGluc3RhbGwgJHtFWFRSQV9PRVNDT05TfXx8IFwKKyAgICAgICAgZGllICJzY29ucyBpbnN0YWxsIGV4ZWN1dGlvbiBmYWlsZWQuIgorfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xjZHByb2MvbGNkcHJvYy8wMDAxLUZpeC1wYXJhbGxlbC1idWlsZC1maXgtcG9ydC1pbnRlcm5hbC1tYWtlLWRlcGVuZGVuY2kucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbGNkcHJvYy9sY2Rwcm9jLzAwMDEtRml4LXBhcmFsbGVsLWJ1aWxkLWZpeC1wb3J0LWludGVybmFsLW1ha2UtZGVwZW5kZW5jaS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xjZHByb2MvbGNkcHJvYy8wMDAxLUZpeC1wYXJhbGxlbC1idWlsZC1maXgtcG9ydC1pbnRlcm5hbC1tYWtlLWRlcGVuZGVuY2kucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9sY2Rwcm9jL2xjZHByb2MvMDAwMS1GaXgtcGFyYWxsZWwtYnVpbGQtZml4LXBvcnQtaW50ZXJuYWwtbWFrZS1kZXBlbmRlbmNpLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGNkcHJvYy9sY2Rwcm9jLzAwMDItSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgtZGVmaW5pdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9sY2Rwcm9jL2xjZHByb2MvMDAwMi1JbmNsdWRlLWxpbWl0cy5oLWZvci1QQVRIX01BWC1kZWZpbml0aW9uLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGNkcHJvYy9sY2Rwcm9jLzAwMDItSW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgtZGVmaW5pdGlvbi5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL2xjZHByb2MvbGNkcHJvYy8wMDAyLUluY2x1ZGUtbGltaXRzLmgtZm9yLVBBVEhfTUFYLWRlZmluaXRpb24ucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sY2Rwcm9jL2xjZHByb2MvMDAwMy1GaXgtbm9uLXg4Ni1wbGF0Zm9ybXMtb24tbXVzbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9sY2Rwcm9jL2xjZHByb2MvMDAwMy1GaXgtbm9uLXg4Ni1wbGF0Zm9ybXMtb24tbXVzbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xjZHByb2MvbGNkcHJvYy8wMDAzLUZpeC1ub24teDg2LXBsYXRmb3Jtcy1vbi1tdXNsLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbGNkcHJvYy9sY2Rwcm9jLzAwMDMtRml4LW5vbi14ODYtcGxhdGZvcm1zLW9uLW11c2wucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sY2Rwcm9jL2xjZHByb2NfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL2xjZHByb2MvbGNkcHJvY19naXQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9sY2Rwcm9jL2xjZHByb2NfZ2l0LmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbGNkcHJvYy9sY2Rwcm9jX2dpdC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDEtUG9ydC1idWlsZC10by1weXRob24zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDEtUG9ydC1idWlsZC10by1weXRob24zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1MjUwNDcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1Qb3J0LWJ1aWxkLXRvLXB5dGhvbjMucGF0Y2gKQEAgLTAsMCArMSw2ODk3IEBACitGcm9tIDMzYTM3M2JhNDFkOTc4YWY2MGMyZjAyMzBiY2JhNmFkMjczNTdlYzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcmVhcz0yME09QzM9QkNsbGVyPz0gPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorRGF0ZTogV2VkLCAyOSBKYW4gMjAyMCAxNjoyNToxMSArMDEwMAorU3ViamVjdDogW1BBVENIXSBQb3J0IGJ1aWxkIHRvIHB5dGhvbjMKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworKiBmaXJzdCB0b29sIG9mIGNob2ljZSB3YXMgMnRvMworKiBzb21lIHBhcnRzIHdlcmUgdGFrZW4gZnJvbSBbMV0gYnV0IGR1cmluZyB3b3JrIGl0IHdhcyBmb3VuZCB0aGF0IHRoaXMgcGF0Y2gKKyAgaW50cm9kdWNlcyBpbnRlcmVzdGluZyBlZmZlY3RzIC0gc2VlIGhhc2ggZnVuY3Rpb25zLiBXb3JraW5nIG1vcmUgb24gdGhpcworICBtYWtlcyBtZSBndWVzcyB0aGF0IG9uZSBoYXMgbmV2ZXIgd29ya2VkLi4uCisqIEZldyBwYXJ0cyB3ZXJlIHRha2VuIGZyb20gdXBzdHJlYW0gbWlycm9yIFsyXS4gU2luY2UgdGhleSB1c2Ugc2l4IGZvciBwb3J0aW5nCisgIHRvIHB5dGhvbjMgaXQgYWRkcyB1cyBhIG5ldyBkZXBlbmRlbmN5LgorKiBUbyBnZXQgYSBiZXR0ZXIgb3ZlcnZpZXcgd2hhdCBpcyBnb2luZyBvbiBvciBmYWlsaW5nIHNvbWUgYWRkaXRpb25hbCBtZXNzYWdlcworICB3ZXJlIGFkZGVkLiBUaGUgbW9zdCB2ZXJib3NlIG9uZSBpcyBsZWZ0IGRpc2FibGVkIC0gc2VlCisgIHB5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvX19pbml0X18ucHkgLyBMaW5lIDMxMCBvbndhcmRzCisqIG1ham9yIGNoYW5nZXMgdXBzdHJlYW0gb24gYnVpbGQgYXJlIG5vdCB0byBleHBlY3Qgc28gdXBncmFkaW5nIHNob3VsZCBjYXVzZQorICBsaXR0bGUgdHJvdWJsZSBhbmQgY2hhbmdlcyBjYW4gYmUgdHJhY2tlZCBieSBbM10KKyogc29tZSBzb2x1dGlvbnMgYXJlIHdvcmthcm91bmRzL2hhY2tzIHNvIHRoaXMgcGF0Y2ggd2lsbCBub3QgYmUgYWNjZXBldGVkCisgIHVwc3RyZWFtLiBUaGlzIHNob3VsZCBub3QgYmUgYSBwcm9iZWxtZSBmb3IgdXM6IG9uY2UgbW96anMgPj0gNjggd2lsbCBhcnJpdmUKKyAgd2UgaGF2ZSB0byBnbyB0byBydXN0L2NhcmdvIGJhc2VkIGJ1aWxkIGFueXdheS4KKworWzFdIGh0dHBzOi8vY29kZS5mb3hraXQudXMvYWRlbGllL3BhY2thZ2VzL2Jsb2IvZjJiNTc3M2RhMTlhYjM5N2ZiZTY0ZmQzMmRhY2MzODNjZmU0Y2Q3Ny91c2VyL21vempzL3B5dGhvbjMucGF0Y2gKK1syXSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9nZWNrby1kZXYKK1szXSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9nZWNrby1kZXYvdHJlZS9lc3I2MAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXByb3BwcmlhdGUgW1NvbWUgSGFja3NdCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CistLS0KKyBidWlsZC9hdXRvY29uZi9jb25maWcuc3RhdHVzLm00ICAgICAgICAgICAgICAgfCAgIDIgKy0KKyBidWlsZC9tb3ouY29uZmlndXJlL2FuZHJvaWQtbmRrLmNvbmZpZ3VyZSAgICAgfCAgIDQgKy0KKyBidWlsZC9tb3ouY29uZmlndXJlL2NoZWNrcy5jb25maWd1cmUgICAgICAgICAgfCAgIDQgKy0KKyBidWlsZC9tb3ouY29uZmlndXJlL2luaXQuY29uZmlndXJlICAgICAgICAgICAgfCAgMzEgKy0KKyBidWlsZC9tb3ouY29uZmlndXJlL2tleWZpbGVzLmNvbmZpZ3VyZSAgICAgICAgfCAgIDQgKy0KKyBidWlsZC9tb3ouY29uZmlndXJlL29sZC5jb25maWd1cmUgICAgICAgICAgICAgfCAgMzIgKy0KKyBidWlsZC9tb3ouY29uZmlndXJlL3Rvb2xjaGFpbi5jb25maWd1cmUgICAgICAgfCAgMTggKy0KKyBidWlsZC9tb3ouY29uZmlndXJlL3V0aWwuY29uZmlndXJlICAgICAgICAgICAgfCAgIDkgKy0KKyBidWlsZC9tb3ouY29uZmlndXJlL3dpbmRvd3MuY29uZmlndXJlICAgICAgICAgfCAgMTAgKy0KKyBidWlsZC90ZW1wbGF0ZXMubW96YnVpbGQgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KKyBjb25maWcvTW96WmlwRmlsZS5weSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMTIgKy0KKyBjb25maWcvZXhwYW5kbGlicy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDYgKy0KKyBjb25maWcvZXhwYW5kbGlic19leGVjLnB5ICAgICAgICAgICAgICAgICAgICAgfCAgMTQgKy0KKyBjb25maWcvZXhwYW5kbGlic19nZW4ucHkgICAgICAgICAgICAgICAgICAgICAgfCAgIDQgKy0KKyBjb25maWd1cmUucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNDIgKy0KKyBqcy9zcmMvYnVpbGQvbW96LmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDggKy0KKyBqcy9zcmMvYnVpbHRpbi9lbWJlZGpzLnB5ICAgICAgICAgICAgICAgICAgICAgfCAgMTAgKy0KKyBqcy9zcmMvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKy0KKyBqcy9zcmMvZnJvbnRlbmQvR2VuZXJhdGVSZXNlcnZlZFdvcmRzLnB5ICAgICAgfCAgIDYgKy0KKyBqcy9zcmMvZ2MvR2VuZXJhdGVTdGF0c1BoYXNlcy5weSAgICAgICAgICAgICAgfCAgIDQgKy0KKyBqcy9zcmMvb2xkLWNvbmZpZ3VyZS5pbiAgICAgICAgICAgICAgICAgICAgICAgfCAgIDIgKworIG1lbW9yeS9idWlsZC9tb3ouYnVpbGQgICAgICAgICAgICAgICAgICAgICAgICB8ICAgOCArLQorIG1vemdsdWUvYnVpbGQvbW96LmJ1aWxkICAgICAgICAgICAgICAgICAgICAgICB8ICAyMiArLQorIC4uLi9tb3pidWlsZC9tb3pidWlsZC9hY3Rpb24vY2hlY2tfYmluYXJ5LnB5ICB8ICAgMiArCisgLi4uL21vemJ1aWxkL2FjdGlvbi9wcm9jZXNzX2RlZmluZV9maWxlcy5weSAgIHwgICA0ICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvYmFzZS5weSAgICAgIHwgICA4ICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvY29tbW9uLnB5ICAgIHwgICA4ICstCisgLi4uL21vemJ1aWxkL2JhY2tlbmQvY29uZmlnZW52aXJvbm1lbnQucHkgICAgIHwgIDE0ICstCisgLi4uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvZmFzdGVybWFrZS5weSAgIHwgIDEwICstCisgLi4uL21vemJ1aWxkL2JhY2tlbmQvcmVjdXJzaXZlbWFrZS5weSAgICAgICAgIHwgMTgxICsrKy0tLS0KKyBweXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlnX3N0YXR1cy5weSAgICAgfCAgIDcgKy0KKyAuLi4vbW96YnVpbGQvbW96YnVpbGQvY29uZmlndXJlL19faW5pdF9fLnB5ICAgfCAgODMgKysrLQorIC4uLi9tb3pidWlsZC9jb25maWd1cmUvY2hlY2tfZGVidWdfcmFuZ2VzLnB5ICB8ICAgNiArLQorIHB5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvb3B0aW9ucy5weSB8ICAyNCArLQorIHB5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvdXRpbC5weSAgICB8ICAxMiArLQorIC4uLi9tb3pidWlsZC9tb3pidWlsZC9jb250cm9sbGVyL2J1aWxkaW5nLnB5ICB8ICAxNiArLQorIHB5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9mcm9udGVuZC9jb250ZXh0LnB5ICB8ICA4OSArKy0tCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2Zyb250ZW5kL2RhdGEucHkgICAgIHwgICA4ICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2Zyb250ZW5kL2VtaXR0ZXIucHkgIHwgIDUwICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2Zyb250ZW5kL3JlYWRlci5weSAgIHwgIDQ5ICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2Zyb250ZW5kL3NhbmRib3gucHkgIHwgICAzICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2phci5weSAgICAgICAgICAgICAgIHwgIDEyICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL21ha2V1dGlsLnB5ICAgICAgICAgIHwgIDI0ICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL21vemluZm8ucHkgICAgICAgICAgIHwgICA4ICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3ByZXByb2Nlc3Nvci5weSAgICAgIHwgIDI3ICstCisgcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3NoZWxsdXRpbC5weSAgICAgICAgIHwgICA2ICstCisgLi4uL3Rlc3QvYmFja2VuZC90ZXN0X3JlY3Vyc2l2ZW1ha2UucHkgICAgICAgIHwgIDE4ICstCisgLi4uL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL2NvbW1vbi5weSAgICAgICAgIHwgICA4ICstCisgLi4uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL2xpbnQucHkgIHwgICA4ICstCisgLi4uL3Rlc3QvY29uZmlndXJlL3Rlc3RfY2hlY2tzX2NvbmZpZ3VyZS5weSAgIHwgICA4ICstCisgLi4uL3Rlc3QvY29uZmlndXJlL3Rlc3RfY29tcGlsZV9jaGVja3MucHkgICAgIHwgICA0ICstCisgLi4uL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfY29uZmlndXJlLnB5IHwgMjQ0ICsrKysrLS0tLS0KKyAuLi4vbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF9saW50LnB5ICAgICAgfCAgMjQgKy0KKyAuLi4vdGVzdC9jb25maWd1cmUvdGVzdF9tb3pfY29uZmlndXJlLnB5ICAgICAgfCAgMzIgKy0KKyAuLi4vbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF9vcHRpb25zLnB5ICAgfCA0NTAgKysrKysrKysrLS0tLS0tLS0tCisgLi4uL2NvbmZpZ3VyZS90ZXN0X3Rvb2xjaGFpbl9jb25maWd1cmUucHkgICAgIHwgIDIyICstCisgLi4uL3Rlc3QvY29uZmlndXJlL3Rlc3RfdG9vbGNoYWluX2hlbHBlcnMucHkgIHwgIDYyICstLQorIC4uLi9jb25maWd1cmUvdGVzdF90b29sa2l0X21vel9jb25maWd1cmUucHkgICB8ICAgMiArLQorIC4uLi9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X3V0aWwucHkgICAgICB8ICAgOCArLQorIHB5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0aW5nLnB5ICAgICAgICAgICB8ICAxMCArLQorIHB5dGhvbi9tb3pidWlsZC9tb3pidWlsZC91dGlsLnB5ICAgICAgICAgICAgICB8ICA3OSArKy0KKyBweXRob24vbW96YnVpbGQvbW96YnVpbGQvdmlydHVhbGVudi5weSAgICAgICAgfCAgIDYgKy0KKyBweXRob24vbW96YnVpbGQvbW96cGFjay9jaHJvbWUvbWFuaWZlc3QucHkgICAgfCAgIDYgKy0KKyBweXRob24vbW96YnVpbGQvbW96cGFjay9jb3BpZXIucHkgICAgICAgICAgICAgfCAgMTIgKy0KKyBweXRob24vbW96YnVpbGQvbW96cGFjay9maWxlcy5weSAgICAgICAgICAgICAgfCAgMjIgKy0KKyBweXRob24vbW96YnVpbGQvbW96cGFjay9tYW5pZmVzdHMucHkgICAgICAgICAgfCAgMTYgKy0KKyBweXRob24vbW96YnVpbGQvbW96cGFjay9tb3pqYXIucHkgICAgICAgICAgICAgfCAgMzcgKy0KKyAuLi4vbWFuaWZlc3RwYXJzZXIvbWFuaWZlc3RwYXJzZXIvaW5pLnB5ICAgICAgfCAgMTMgKy0KKyAuLi4vbWFuaWZlc3RwYXJzZXIvbWFuaWZlc3RwYXJzZXIucHkgICAgICAgICAgfCAgMjQgKy0KKyB0ZXN0aW5nL21vemJhc2UvbW96aW5mby9tb3ppbmZvL21vemluZm8ucHkgICAgfCAgMjYgKy0KKyAuLi4vbW96cHJvY2Vzcy9tb3pwcm9jZXNzL3Byb2Nlc3NoYW5kbGVyLnB5ICAgfCAgMTAgKy0KKyB0aGlyZF9wYXJ0eS9weXRob24vd2hpY2gvd2hpY2gucHkgICAgICAgICAgICAgfCAgMTggKy0KKyA3MiBmaWxlcyBjaGFuZ2VkLCAxMDgxIGluc2VydGlvbnMoKyksIDk5MyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2J1aWxkL2F1dG9jb25mL2NvbmZpZy5zdGF0dXMubTQgYi9idWlsZC9hdXRvY29uZi9jb25maWcuc3RhdHVzLm00CitpbmRleCBjNzU1NzUzODYuLjU0M2MyZDY4MiAxMDA2NDQKKy0tLSBhL2J1aWxkL2F1dG9jb25mL2NvbmZpZy5zdGF0dXMubTQKKysrKyBiL2J1aWxkL2F1dG9jb25mL2NvbmZpZy5zdGF0dXMubTQKK0BAIC0xMjIsNyArMTIyLDcgQEAgdHJhcCAncm0gLWYgJENPTkZJR19TVEFUVVMgY29uZnRlc3QqOyBleGl0IDEnIDEgMiAxNQorIAorIGRubCBXZSdyZSBnb2luZyB0byBuZWVkIFsgXSBmb3IgcHl0aG9uIHN5bnRheC4KKyBjaGFuZ2VxdW90ZSg8PDwsID4+PilkbmwKKy1lY2hvIGNyZWF0aW5nICRDT05GSUdfU1RBVFVTCisrZWNobyBjcmVhdGluZyAkQ09ORklHX1NUQVRVUyBpbiBgcHdkYAorIAorIGNhdCA+ICRDT05GSUdfU1RBVFVTIDw8RU9GCisgCitkaWZmIC0tZ2l0IGEvYnVpbGQvbW96LmNvbmZpZ3VyZS9hbmRyb2lkLW5kay5jb25maWd1cmUgYi9idWlsZC9tb3ouY29uZmlndXJlL2FuZHJvaWQtbmRrLmNvbmZpZ3VyZQoraW5kZXggMTA2N2I4NjE5Li4zYjU5MmEyMzcgMTAwNjQ0CistLS0gYS9idWlsZC9tb3ouY29uZmlndXJlL2FuZHJvaWQtbmRrLmNvbmZpZ3VyZQorKysrIGIvYnVpbGQvbW96LmNvbmZpZ3VyZS9hbmRyb2lkLW5kay5jb25maWd1cmUKK0BAIC0zMCw3ICszMCw3IEBAIGpzX29wdGlvbignLS13aXRoLWFuZHJvaWQtdmVyc2lvbicsCisgCisgCisgQGRlcGVuZHMoJy0td2l0aC1hbmRyb2lkLXZlcnNpb24nLCBtaW5fYW5kcm9pZF92ZXJzaW9uLCAnLS1oZWxwJykKKy1AaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSdWYWx1ZUVycm9yJykKKytAaW1wb3J0cyhfZnJvbT0nYnVpbHRpbnMnLCBfaW1wb3J0PSdWYWx1ZUVycm9yJykKKyBkZWYgYW5kcm9pZF92ZXJzaW9uKHZhbHVlLCBtaW5fdmVyc2lvbiwgXyk6CisgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICMgU29tZW9uZSBoYXMgcGFzc2VkIC0td2l0aG91dC1hbmRyb2lkLXZlcnNpb24uCitAQCAtNjgsNyArNjgsNyBAQCBhZGRfb2xkX2NvbmZpZ3VyZV9hc3NpZ25tZW50KCdhbmRyb2lkX25kaycsIG5kaykKKyAKKyBAZGVwZW5kcyhuZGspCisgQGNoZWNraW5nKCdmb3IgYW5kcm9pZCBuZGsgdmVyc2lvbicpCistQGltcG9ydHMoX2Zyb209J19fYnVpbHRpbl9fJywgX2ltcG9ydD0nb3BlbicpCisrQGltcG9ydHMoX2Zyb209J2J1aWx0aW5zJywgX2ltcG9ydD0nb3BlbicpCisgZGVmIG5ka192ZXJzaW9uKG5kayk6CisgICAgIGlmIG5vdCBuZGs6CisgICAgICAgICAjIEJ1aWxkaW5nICdqcy9zcmMnIGZvciBub24tQW5kcm9pZC4KK2RpZmYgLS1naXQgYS9idWlsZC9tb3ouY29uZmlndXJlL2NoZWNrcy5jb25maWd1cmUgYi9idWlsZC9tb3ouY29uZmlndXJlL2NoZWNrcy5jb25maWd1cmUKK2luZGV4IDUxNjY1MmRhOS4uMTFlMTA5MWM2IDEwMDY0NAorLS0tIGEvYnVpbGQvbW96LmNvbmZpZ3VyZS9jaGVja3MuY29uZmlndXJlCisrKysgYi9idWlsZC9tb3ouY29uZmlndXJlL2NoZWNrcy5jb25maWd1cmUKK0BAIC0xNCw3ICsxNCw3IEBACisgCisgCisgQHRlbXBsYXRlCistQGltcG9ydHMoX2Zyb209J19fYnVpbHRpbl9fJywgX2ltcG9ydD0nRXhjZXB0aW9uJykKKytAaW1wb3J0cyhfZnJvbT0nYnVpbHRpbnMnLCBfaW1wb3J0PSdFeGNlcHRpb24nKQorIGRlZiBfZGVjbGFyZV9leGNlcHRpb25zKCk6CisgICAgIGNsYXNzIEZhdGFsQ2hlY2tFcnJvcihFeGNlcHRpb24pOgorICAgICAgICAgJycnQW4gZXhjZXB0aW9uIHRvIHRocm93IGZyb20gYSBmdW5jdGlvbiBkZWNvcmF0ZWQgd2l0aCBAY2hlY2tpbmcuCitAQCAtNTcsNyArNTcsNyBAQCBkZWYgY2hlY2tpbmcod2hhdCwgY2FsbGJhY2s9Tm9uZSk6CisgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgIHJldCA9IGZ1bmMoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgICAgICBleGNlcHQgRmF0YWxDaGVja0Vycm9yIGFzIGU6CistICAgICAgICAgICAgICAgICAgICBlcnJvciA9IGUubWVzc2FnZQorKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgPSBzdHIoZSkKKyAgICAgICAgICAgICAgICAgZGlzcGxheV9yZXQgPSBjYWxsYmFjayhyZXQpIGlmIGNhbGxiYWNrIGVsc2UgcmV0CisgICAgICAgICAgICAgICAgIGlmIGRpc3BsYXlfcmV0IGlzIFRydWU6CisgICAgICAgICAgICAgICAgICAgICBsb2cuaW5mbygneWVzJykKK2RpZmYgLS1naXQgYS9idWlsZC9tb3ouY29uZmlndXJlL2luaXQuY29uZmlndXJlIGIvYnVpbGQvbW96LmNvbmZpZ3VyZS9pbml0LmNvbmZpZ3VyZQoraW5kZXggNjQ4YWMyZGVkLi40ZDc0NTQ3ZDggMTAwNjQ0CistLS0gYS9idWlsZC9tb3ouY29uZmlndXJlL2luaXQuY29uZmlndXJlCisrKysgYi9idWlsZC9tb3ouY29uZmlndXJlL2luaXQuY29uZmlndXJlCitAQCAtMTQsNyArMTQsNyBAQCBvcHRpb24oZW52PSdESVNUJywgbmFyZ3M9MSwgaGVscD0nRElTVCBkaXJlY3RvcnknKQorIAorIAorIEBkZXBlbmRzKCctLWhlbHAnLCAnRElTVCcpCistQGltcG9ydHMoX2Zyb209J19fYnVpbHRpbl9fJywgX2ltcG9ydD0nb3BlbicpCisrQGltcG9ydHMoX2Zyb209J2J1aWx0aW5zJywgX2ltcG9ydD0nb3BlbicpCisgQGltcG9ydHMoX2Zyb209J29zLnBhdGgnLCBfaW1wb3J0PSdleGlzdHMnKQorIGRlZiBjaGVja19idWlsZF9lbnZpcm9ubWVudChoZWxwLCBkaXN0KToKKyAgICAgdG9wb2JqZGlyID0gb3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmFic3BhdGgoJy4nKSkKK0BAIC02NSw3ICs2NSw3IEBAIGRlZiBjaGVja19idWlsZF9lbnZpcm9ubWVudChoZWxwLCBkaXN0KToKKyAgICAgIyBDaGVjayBmb3IgQ1JMRiBsaW5lIGVuZGluZ3MuCisgICAgIHdpdGggb3Blbihvcy5wYXRoLmpvaW4odG9wc3JjZGlyLCAnY29uZmlndXJlLnB5JyksICdyYicpIGFzIGZoOgorICAgICAgICAgZGF0YSA9IGZoLnJlYWQoKQorLSAgICAgICAgaWYgJ1xyJyBpbiBkYXRhOgorKyAgICAgICAgaWYgYidccicgaW4gZGF0YToKKyAgICAgICAgICAgICBkaWUoJ1xuICoqKlxuJworICAgICAgICAgICAgICAgICAnICogVGhlIHNvdXJjZSB0cmVlIGFwcGVhcnMgdG8gaGF2ZSBXaW5kb3dzLXN0eWxlIGxpbmUgZW5kaW5ncy5cbicKKyAgICAgICAgICAgICAgICAgJyAqXG4nCitAQCAtMjY5LDcgKzI2OSw3IEBAIGRlZiBlYXJseV9vcHRpb25zKCk6CisgICAgIGRlZiBlYXJseV9vcHRpb25zKCk6CisgICAgICAgICByZXR1cm4gc2V0KAorICAgICAgICAgICAgIG9wdGlvbi5lbnYKKy0gICAgICAgICAgICBmb3Igb3B0aW9uIGluIF9fc2FuZGJveF9fLl9vcHRpb25zLml0ZXJ2YWx1ZXMoKQorKyAgICAgICAgICAgIGZvciBvcHRpb24gaW4gX19zYW5kYm94X18uX29wdGlvbnMudmFsdWVzKCkKKyAgICAgICAgICAgICBpZiBvcHRpb24uZW52CisgICAgICAgICApCisgICAgIHJldHVybiBlYXJseV9vcHRpb25zCitAQCAtMzA3LDE1ICszMDcsMTUgQEAgZGVmIG1vemNvbmZpZ19vcHRpb25zKG1vemNvbmZpZywgYXV0b21hdGlvbiwgaGVscCk6CisgICAgICAgICAgICAgICAgIGxvZy5pbmZvKCcgICVzJyAlIGFyZykKKyAgICAgICAgICAgICAgICAgaGVscGVyLmFkZChhcmcsIG9yaWdpbj0nbW96Y29uZmlnJywgYXJncz1oZWxwZXIuX2FyZ3MpCisgCistICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBtb3pjb25maWdbJ2VudiddWydhZGRlZCddLml0ZXJpdGVtcygpOgorKyAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gbW96Y29uZmlnWydlbnYnXVsnYWRkZWQnXS5pdGVtcygpOgorICAgICAgICAgICAgIGFkZChrZXksIHZhbHVlKQorICAgICAgICAgICAgIG9zLmVudmlyb25ba2V5XSA9IHZhbHVlCistICAgICAgICBmb3Iga2V5LCAoXywgdmFsdWUpIGluIG1vemNvbmZpZ1snZW52J11bJ21vZGlmaWVkJ10uaXRlcml0ZW1zKCk6CisrICAgICAgICBmb3Iga2V5LCAoXywgdmFsdWUpIGluIG1vemNvbmZpZ1snZW52J11bJ21vZGlmaWVkJ10uaXRlbXMoKToKKyAgICAgICAgICAgICBhZGQoa2V5LCB2YWx1ZSkKKyAgICAgICAgICAgICBvcy5lbnZpcm9uW2tleV0gPSB2YWx1ZQorLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gbW96Y29uZmlnWyd2YXJzJ11bJ2FkZGVkJ10uaXRlcml0ZW1zKCk6CisrICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBtb3pjb25maWdbJ3ZhcnMnXVsnYWRkZWQnXS5pdGVtcygpOgorICAgICAgICAgICAgIGFkZChrZXksIHZhbHVlKQorLSAgICAgICAgZm9yIGtleSwgKF8sIHZhbHVlKSBpbiBtb3pjb25maWdbJ3ZhcnMnXVsnbW9kaWZpZWQnXS5pdGVyaXRlbXMoKToKKysgICAgICAgIGZvciBrZXksIChfLCB2YWx1ZSkgaW4gbW96Y29uZmlnWyd2YXJzJ11bJ21vZGlmaWVkJ10uaXRlbXMoKToKKyAgICAgICAgICAgICBhZGQoa2V5LCB2YWx1ZSkKKyAKKyAKK0BAIC0zNTMsNyArMzUzLDcgQEAgb3B0aW9uKGVudj0nUFlUSE9OMycsIG5hcmdzPTEsIGhlbHA9J1B5dGhvbiAzIGludGVycHJldGVyICgzLjUgb3IgbGF0ZXIpJykKKyBAZGVwZW5kcygnUFlUSE9OMycpCisgQGNoZWNraW5nKCdmb3IgUHl0aG9uIDMnLAorICAgICAgICAgICBjYWxsYmFjaz1sYW1iZGEgeDogJyVzICglcyknICUgKHgucGF0aCwgeC5zdHJfdmVyc2lvbikgaWYgeCBlbHNlICdubycpCistQGltcG9ydHMoX2Zyb209J19fYnVpbHRpbl9fJywgX2ltcG9ydD0nRXhjZXB0aW9uJykKKytAaW1wb3J0cyhfZnJvbT0nYnVpbHRpbnMnLCBfaW1wb3J0PSdFeGNlcHRpb24nKQorIEBpbXBvcnRzKF9mcm9tPSdtb3pidWlsZC5weXRob251dGlsJywgX2ltcG9ydD0nZmluZF9weXRob24zX2V4ZWN1dGFibGUnKQorIEBpbXBvcnRzKF9mcm9tPSdtb3pidWlsZC5weXRob251dGlsJywgX2ltcG9ydD0ncHl0aG9uX2V4ZWN1dGFibGVfdmVyc2lvbicpCisgZGVmIHB5dGhvbjMoZW52X3B5dGhvbik6CitAQCAtMzc3LDkgKzM3Nyw2IEBAIGRlZiBweXRob24zKGVudl9weXRob24pOgorICAgICAgICAgaWYgbm90IHB5dGhvbjoKKyAgICAgICAgICAgICByZXR1cm4gTm9uZQorIAorLSAgICAgICAgIyBUaGUgQVBJIHJldHVybnMgYSBieXRlcyB3aGVyZWFzIGV2ZXJ5dGhpbmcgaW4gY29uZmlndXJlIGlzIHVuaWNvZGUuCistICAgICAgICBweXRob24gPSBweXRob24uZGVjb2RlKCd1dGYtOCcpCistCisgICAgIHJldHVybiBuYW1lc3BhY2UoCisgICAgICAgICBwYXRoPXB5dGhvbiwKKyAgICAgICAgIHZlcnNpb249dmVyc2lvbiwKK0BAIC00ODEsNiArNDc4LDggQEAgZGVmIGhnX2NvbmZpZyhidWlsZF9lbnYsIGhnLCB2ZXJzaW9uKToKKyBAaW1wb3J0cygncmUnKQorIGRlZiBnaXRfdmVyc2lvbihnaXQpOgorICAgICBvdXQgPSBjaGVja19jbWRfb3V0cHV0KGdpdCwgJy0tdmVyc2lvbicpLnJzdHJpcCgpCisrICAgIGlmIGlzaW5zdGFuY2Uob3V0LCBieXRlcyk6CisrICAgICAgICBvdXQgPSBvdXQuZGVjb2RlKCd1dGYtOCcpCisgCisgICAgIG1hdGNoID0gcmUuc2VhcmNoKCdnaXQgdmVyc2lvbiAoLiopJCcsIG91dCkKKyAKK0BAIC01NTEsOCArNTUwLDggQEAgb3B0aW9uKCctLXRhcmdldCcsIG5hcmdzPTEsCisgQGltcG9ydHMoX2Zyb209J21vemJ1aWxkLmNvbmZpZ3VyZS5jb25zdGFudHMnLCBfaW1wb3J0PSdFbmRpYW5uZXNzJykKKyBAaW1wb3J0cyhfZnJvbT0nbW96YnVpbGQuY29uZmlndXJlLmNvbnN0YW50cycsIF9pbXBvcnQ9J0tlcm5lbCcpCisgQGltcG9ydHMoX2Zyb209J21vemJ1aWxkLmNvbmZpZ3VyZS5jb25zdGFudHMnLCBfaW1wb3J0PSdPUycpCistQGltcG9ydHMoX2Zyb209J19fYnVpbHRpbl9fJywgX2ltcG9ydD0nS2V5RXJyb3InKQorLUBpbXBvcnRzKF9mcm9tPSdfX2J1aWx0aW5fXycsIF9pbXBvcnQ9J1ZhbHVlRXJyb3InKQorK0BpbXBvcnRzKF9mcm9tPSdidWlsdGlucycsIF9pbXBvcnQ9J0tleUVycm9yJykKKytAaW1wb3J0cyhfZnJvbT0nYnVpbHRpbnMnLCBfaW1wb3J0PSdWYWx1ZUVycm9yJykKKyBkZWYgc3BsaXRfdHJpcGxldCh0cmlwbGV0LCBhbGxvd191bmtub3duPUZhbHNlKToKKyAgICAgIyBUaGUgc3RhbmRhcmQgdHJpcGxldCBpcyBkZWZpbmVkIGFzCisgICAgICMgICBDUFVfVFlQRS1NQU5VRkFDVFVSRVItT1BFUkFUSU5HX1NZU1RFTQorQEAgLTU2Miw2ICs1NjEsOCBAQCBkZWYgc3BsaXRfdHJpcGxldCh0cmlwbGV0LCBhbGxvd191bmtub3duPUZhbHNlKToKKyAgICAgIyBBZGRpdGlvbmFsbHksIHNvbWUgbWF5IG9taXQgInVua25vd24iIHdoZW4gdGhlIG1hbnVmYWN0dXJlcgorICAgICAjIGlzIG5vdCBzcGVjaWZpZWQgYW5kIGVtaXQKKyAgICAgIyAgIENQVV9UWVBFLU9QRVJBVElOR19TWVNURU0KKysgICAgaWYgaXNpbnN0YW5jZSh0cmlwbGV0LCBieXRlcyk6CisrICAgICAgICB0cmlwbGV0ID0gdHJpcGxldC5kZWNvZGUoJ3V0Zi04JykKKyAgICAgcGFydHMgPSB0cmlwbGV0LnNwbGl0KCctJywgMikKKyAgICAgaWYgbGVuKHBhcnRzKSA9PSAzOgorICAgICAgICAgY3B1LCBfLCBvcyA9IHBhcnRzCitAQCAtOTg3LDcgKzk4OCw3IEBAIGFkZF9vbGRfY29uZmlndXJlX2Fzc2lnbm1lbnQoJ01PWl9CVUlMRF9BUFAnLCBidWlsZF9wcm9qZWN0KQorICMgLSBvdGhlcndpc2UsIGlmIHdlIGhhdmUgImEiIGluIEdSRV9NSUxFU1RPTkUsIHdlJ3JlIGJ1aWxkaW5nIE5pZ2h0bHkgb3IgQXVyb3JhCisgIyAtIG90aGVyd2lzZSwgd2UncmUgYnVpbGRpbmcgUmVsZWFzZS9CZXRhIChkZWZpbmUgUkVMRUFTRV9PUl9CRVRBKQorIEBkZXBlbmRzKGNoZWNrX2J1aWxkX2Vudmlyb25tZW50LCAnLS1oZWxwJykKKy1AaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSdvcGVuJykKKytAaW1wb3J0cyhfZnJvbT0nYnVpbHRpbnMnLCBfaW1wb3J0PSdvcGVuJykKKyBAaW1wb3J0cygncmUnKQorIGRlZiBtaWxlc3RvbmUoYnVpbGRfZW52LCBfKToKKyAgICAgbWlsZXN0b25lX3BhdGggPSBvcy5wYXRoLmpvaW4oYnVpbGRfZW52LnRvcHNyY2RpciwKK0BAIC0xMTA1LDcgKzExMDYsNyBAQCBkZWYgZW5hYmxlZF9pbl9uaWdodGx5KG1pbGVzdG9uZSwgXyk6CisgZGVmIGFsbF9jb25maWd1cmVfb3B0aW9ucygpOgorICAgICByZXN1bHQgPSBbXQorICAgICBwcmV2aW91cyA9IE5vbmUKKy0gICAgZm9yIG9wdGlvbiBpbiBfX3NhbmRib3hfXy5fb3B0aW9ucy5pdGVydmFsdWVzKCk6CisrICAgIGZvciBvcHRpb24gaW4gX19zYW5kYm94X18uX29wdGlvbnMudmFsdWVzKCk6CisgICAgICAgICAjIF9fc2FuZGJveF9fLl9vcHRpb25zIGNvbnRhaW5zIGl0ZW1zIGZvciBib3RoIG9wdGlvbi5uYW1lIGFuZAorICAgICAgICAgIyBvcHRpb24uZW52LiBCdXQgaXQncyBhbHNvIGFuIE9yZGVyZWREaWN0LCBtZWFuaW5nIGJvdGggYXJlCisgICAgICAgICAjIGNvbnNlY3V0aXZlLgorZGlmZiAtLWdpdCBhL2J1aWxkL21vei5jb25maWd1cmUva2V5ZmlsZXMuY29uZmlndXJlIGIvYnVpbGQvbW96LmNvbmZpZ3VyZS9rZXlmaWxlcy5jb25maWd1cmUKK2luZGV4IDVkNTFjY2NlYS4uMTRhMzVhM2M2IDEwMDY0NAorLS0tIGEvYnVpbGQvbW96LmNvbmZpZ3VyZS9rZXlmaWxlcy5jb25maWd1cmUKKysrKyBiL2J1aWxkL21vei5jb25maWd1cmUva2V5ZmlsZXMuY29uZmlndXJlCitAQCAtMTYsOCArMTYsOCBAQCBkZWYga2V5ZmlsZShkZXNjLCBkZWZhdWx0PU5vbmUsIGhlbHA9Tm9uZSwgY2FsbGJhY2s9bGFtYmRhIHg6IHgpOgorIAorICAgICBAZGVwZW5kcygnLS13aXRoLSVzLWtleWZpbGUnICUgbmFtZSkKKyAgICAgQGNoZWNraW5nKCdmb3IgdGhlICVzIGtleScgJSBkZXNjLCBsYW1iZGEgeDogeCBhbmQgeCBpcyBub3Qgbm9fa2V5KQorLSAgICBAaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSdvcGVuJykKKy0gICAgQGltcG9ydHMoX2Zyb209J19fYnVpbHRpbl9fJywgX2ltcG9ydD0nSU9FcnJvcicpCisrICAgIEBpbXBvcnRzKF9mcm9tPSdidWlsdGlucycsIF9pbXBvcnQ9J29wZW4nKQorKyAgICBAaW1wb3J0cyhfZnJvbT0nYnVpbHRpbnMnLCBfaW1wb3J0PSdJT0Vycm9yJykKKyAgICAgZGVmIGtleWZpbGUodmFsdWUpOgorICAgICAgICAgaWYgdmFsdWU6CisgICAgICAgICAgICAgdHJ5OgorZGlmZiAtLWdpdCBhL2J1aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZSBiL2J1aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZQoraW5kZXggODFjMTBiOTFmLi4yOWI0OTZiYWUgMTAwNjQ0CistLS0gYS9idWlsZC9tb3ouY29uZmlndXJlL29sZC5jb25maWd1cmUKKysrKyBiL2J1aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZQorQEAgLTY0LDkgKzY0LDkgQEAgc2V0X2NvbmZpZygnQVVUT0NPTkYnLCBhdXRvY29uZikKKyAKKyBAZGVwZW5kcygnT0xEX0NPTkZJR1VSRScsIG1vemNvbmZpZywgYXV0b2NvbmYsIGNoZWNrX2J1aWxkX2Vudmlyb25tZW50LCBzaGVsbCwKKyAgICAgICAgICBvbGRfY29uZmlndXJlX2Fzc2lnbm1lbnRzLCBidWlsZF9wcm9qZWN0KQorLUBpbXBvcnRzKF9mcm9tPSdfX2J1aWx0aW5fXycsIF9pbXBvcnQ9J29wZW4nKQorLUBpbXBvcnRzKF9mcm9tPSdfX2J1aWx0aW5fXycsIF9pbXBvcnQ9J3ByaW50JykKKy1AaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSdzb3J0ZWQnKQorK0BpbXBvcnRzKF9mcm9tPSdidWlsdGlucycsIF9pbXBvcnQ9J29wZW4nKQorK0BpbXBvcnRzKF9mcm9tPSdidWlsdGlucycsIF9pbXBvcnQ9J3ByaW50JykKKytAaW1wb3J0cyhfZnJvbT0nYnVpbHRpbnMnLCBfaW1wb3J0PSdzb3J0ZWQnKQorIEBpbXBvcnRzKCdnbG9iJykKKyBAaW1wb3J0cygnaXRlcnRvb2xzJykKKyBAaW1wb3J0cygnc3VicHJvY2VzcycpCitAQCAtMTEzLDcgKzExMyw3IEBAIGRlZiBwcmVwYXJlX2NvbmZpZ3VyZShvbGRfY29uZmlndXJlLCBtb3pjb25maWcsIGF1dG9jb25mLCBidWlsZF9lbnYsIHNoZWxsLAorIAorICAgICAgICAgIyBNYWtlIG9sZC1jb25maWd1cmUgYXBwZW5kIHRvIGNvbmZpZy5sb2csIHdoZXJlIHdlIHB1dCBvdXIgb3duIGxvZy4KKyAgICAgICAgICMgVGhpcyBjb3VsZCBiZSBkb25lIHdpdGggYSBtNCBtYWNybywgYnV0IGl0J3Mgd2F5IGVhc2llciB0aGlzIHdheQorLSAgICAgICAgc2NyaXB0ID0gc2NyaXB0LnJlcGxhY2UoJz4uL2NvbmZpZy5sb2cnLCAnPj4uL2NvbmZpZy5sb2cnKQorKyAgICAgICAgc2NyaXB0ID0gc2NyaXB0LnJlcGxhY2UoYic+Li9jb25maWcubG9nJywgYic+Pi4vY29uZmlnLmxvZycpCisgCisgICAgICAgICB3aXRoIG9wZW4ob2xkX2NvbmZpZ3VyZSwgJ3diJykgYXMgZmg6CisgICAgICAgICAgICAgZmgud3JpdGUoc2NyaXB0KQorQEAgLTI4Miw4ICsyODIsOCBAQCBkZWYgb2xkX2NvbmZpZ3VyZV9vcHRpb25zKCpvcHRpb25zKToKKyAgICAgJy0teC1pbmNsdWRlcycsCisgICAgICctLXgtbGlicmFyaWVzJywKKyApCistQGltcG9ydHMoX2Zyb209J19fYnVpbHRpbl9fJywgX2ltcG9ydD0nY29tcGlsZScpCistQGltcG9ydHMoX2Zyb209J19fYnVpbHRpbl9fJywgX2ltcG9ydD0nb3BlbicpCisrQGltcG9ydHMoX2Zyb209J2J1aWx0aW5zJywgX2ltcG9ydD0nY29tcGlsZScpCisrQGltcG9ydHMoX2Zyb209J2J1aWx0aW5zJywgX2ltcG9ydD0nb3BlbicpCisgQGltcG9ydHMoJ2xvZ2dpbmcnKQorIEBpbXBvcnRzKCdvcycpCisgQGltcG9ydHMoJ3N1YnByb2Nlc3MnKQorQEAgLTMyNiw3ICszMjYsNyBAQCBkZWYgb2xkX2NvbmZpZ3VyZShwcmVwYXJlX2NvbmZpZ3VyZSwgZXh0cmFfb2xkX2NvbmZpZ3VyZV9hcmdzLCBhbGxfb3B0aW9ucywKKyAgICAgbG9nLmRlYnVnKCdSdW5uaW5nICVzJywgcXVvdGUoKmNtZCkpCisgICAgIGlmIGV4dHJhX2VudjoKKyAgICAgICAgIGxvZy5kZWJ1Zygnd2l0aCBleHRyYSBlbnZpcm9ubWVudDogJXMnLAorLSAgICAgICAgICAgICAgICAgICcgJy5qb2luKCclcz0lcycgJSBwYWlyIGZvciBwYWlyIGluIGV4dHJhX2Vudi5pdGVyaXRlbXMoKSkpCisrICAgICAgICAgICAgICAgICAgJyAnLmpvaW4oJyVzPSVzJyAlIHBhaXIgZm9yIHBhaXIgaW4gZXh0cmFfZW52Lml0ZW1zKCkpKQorIAorICAgICAjIE91ciBsb2dnaW5nIGdvZXMgdG8gY29uZmlnLmxvZywgdGhlIHNhbWUgZmlsZSBvbGQuY29uZmlndXJlIHVzZXMuCisgICAgICMgV2UgY2FuJ3Qgc2hhcmUgdGhlIGhhbmRsZSBvbiB0aGUgZmlsZSwgc28gY2xvc2UgaXQuIFdlIGFzc3VtZSBub3RoaW5nCitAQCAtMzU5LDcgKzM1OSw3IEBAIGRlZiBvbGRfY29uZmlndXJlKHByZXBhcmVfY29uZmlndXJlLCBleHRyYV9vbGRfY29uZmlndXJlX2FyZ3MsIGFsbF9vcHRpb25zLAorICAgICAgICAgIyBFdmVyeSB2YXJpYXRpb24gb2YgdGhlIGV4ZWMoKSBmdW5jdGlvbiBJIHRyaWVkIGxlZCB0bzoKKyAgICAgICAgICMgU3ludGF4RXJyb3I6IHVucXVhbGlmaWVkIGV4ZWMgaXMgbm90IGFsbG93ZWQgaW4gZnVuY3Rpb24gJ21haW4nIGl0CisgICAgICAgICAjIGNvbnRhaW5zIGEgbmVzdGVkIGZ1bmN0aW9uIHdpdGggZnJlZSB2YXJpYWJsZXMKKy0gICAgICAgIGV4ZWMgY29kZSBpbiByYXdfY29uZmlnICMgbm9xYQorKyAgICAgICAgZXhlYyhjb2RlLCByYXdfY29uZmlnKSAjIG5vcWEKKyAKKyAgICAgIyBFbnN1cmUgYWxsIHRoZSBmbGFncyBrbm93biB0byBvbGQtY29uZmlndXJlIGFwcGVhciBpbiB0aGUKKyAgICAgIyBAb2xkX2NvbmZpZ3VyZV9vcHRpb25zIGFib3ZlLgorQEAgLTM5MywxNiArMzkzLDI0IEBAIGRlZiBzZXRfb2xkX2NvbmZpZ3VyZV9kZWZpbmUobmFtZSwgdmFsdWUpOgorIEBkZXBlbmRzKG9sZF9jb25maWd1cmUpCisgQGltcG9ydHMoJ3R5cGVzJykKKyBkZWYgcG9zdF9vbGRfY29uZmlndXJlKHJhd19jb25maWcpOgorKyAgICBsb2cuaW5mbygncG9zdF9vbGRfY29uZmlndXJlIHN0YXJ0ZWQnKQorKworICAgICBmb3IgaywgdiBpbiByYXdfY29uZmlnWydzdWJzdHMnXToKKyAgICAgICAgIHNldF9vbGRfY29uZmlndXJlX2NvbmZpZygKKy0gICAgICAgICAgICBrWzE6LTFdLCB2WzE6LTFdIGlmIGlzaW5zdGFuY2UodiwgdHlwZXMuU3RyaW5nVHlwZXMpIGVsc2UgdikKKysgICAgICAgICAgICBrWzE6LTFdLCB2WzE6LTFdIGlmIGlzaW5zdGFuY2Uodiwgc3RyKSBlbHNlIHYpCisrCisrICAgIGxvZy5pbmZvKCdwb3N0X29sZF9jb25maWd1cmUgMSBmaW5pc2hlZCcpCisgCistICAgIGZvciBrLCB2IGluIGRpY3QocmF3X2NvbmZpZ1snZGVmaW5lcyddKS5pdGVyaXRlbXMoKToKKysgICAgZm9yIGssIHYgaW4gZGljdChyYXdfY29uZmlnWydkZWZpbmVzJ10pLml0ZW1zKCk6CisgICAgICAgICBzZXRfb2xkX2NvbmZpZ3VyZV9kZWZpbmUoa1sxOi0xXSwgdlsxOi0xXSkKKyAKKysgICAgbG9nLmluZm8oJ3Bvc3Rfb2xkX2NvbmZpZ3VyZSAyIGZpbmlzaGVkJykKKysKKyAgICAgc2V0X29sZF9jb25maWd1cmVfY29uZmlnKCdub25fZ2xvYmFsX2RlZmluZXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmF3X2NvbmZpZ1snbm9uX2dsb2JhbF9kZWZpbmVzJ10pCisgCisrICAgIGxvZy5pbmZvKCdwb3N0X29sZF9jb25maWd1cmUgMyBmaW5pc2hlZCcpCisrCisgCisgIyBBc3N1bWluZyBubyBvdGhlciBvcHRpb24gaXMgZGVjbGFyZWQgYWZ0ZXIgdGhpcyBmdW5jdGlvbiwgaGFuZGxlIHRoZQorICMgZW52IG9wdGlvbnMgdGhhdCB3ZXJlIGluamVjdGVkIGJ5IG1vemNvbmZpZ19vcHRpb25zIGJ5IGNyZWF0aW5nIGR1bW15CitAQCAtNDE0LDYgKzQyMiw3IEBAIGRlZiBwb3N0X29sZF9jb25maWd1cmUocmF3X2NvbmZpZyk6CisgQGltcG9ydHMoJ19fc2FuZGJveF9fJykKKyBAaW1wb3J0cyhfZnJvbT0nbW96YnVpbGQuY29uZmlndXJlLm9wdGlvbnMnLCBfaW1wb3J0PSdPcHRpb24nKQorIGRlZiByZW1haW5pbmdfbW96Y29uZmlnX29wdGlvbnMoXyk6CisrICAgIGxvZy5pbmZvKCdyZW1haW5pbmdfbW96Y29uZmlnX29wdGlvbnMgc3RhcnRlZCcpCisgICAgIGhlbHBlciA9IF9fc2FuZGJveF9fLl9oZWxwZXIKKyAgICAgZm9yIGFyZyBpbiBoZWxwZXI6CisgICAgICAgICBpZiBoZWxwZXIuX29yaWdpbnNbYXJnXSAhPSAnbW96Y29uZmlnJzoKK0BAIC00MjIsNSArNDMxLDYgQEAgZGVmIHJlbWFpbmluZ19tb3pjb25maWdfb3B0aW9ucyhfKToKKyAgICAgICAgIGlmIG5hbWUuaXN1cHBlcigpIGFuZCBuYW1lIG5vdCBpbiBfX3NhbmRib3hfXy5fb3B0aW9uczoKKyAgICAgICAgICAgICBvcHRpb24gPSBPcHRpb24oZW52PW5hbWUsIG5hcmdzPScqJywgaGVscD1uYW1lKQorICAgICAgICAgICAgIGhlbHBlci5oYW5kbGUob3B0aW9uKQorKyAgICBsb2cuaW5mbygncmVtYWluaW5nX21vemNvbmZpZ19vcHRpb25zIGZpbmlzaGVkJykKKyAKKyAjIFBsZWFzZSBkbyBub3QgYWRkIGFueXRoaW5nIGFmdGVyIHJlbWFpbmluZ19tb3pjb25maWdfb3B0aW9ucygpCitkaWZmIC0tZ2l0IGEvYnVpbGQvbW96LmNvbmZpZ3VyZS90b29sY2hhaW4uY29uZmlndXJlIGIvYnVpbGQvbW96LmNvbmZpZ3VyZS90b29sY2hhaW4uY29uZmlndXJlCitpbmRleCBmYzY0MGM3NWUuLmM1NTA4ZGZiNyAxMDA3NTUKKy0tLSBhL2J1aWxkL21vei5jb25maWd1cmUvdG9vbGNoYWluLmNvbmZpZ3VyZQorKysrIGIvYnVpbGQvbW96LmNvbmZpZ3VyZS90b29sY2hhaW4uY29uZmlndXJlCitAQCAtMzkxLDcgKzM5MSw3IEBAIGRlZiBnZXRfY29tcGlsZXJfaW5mbyhjb21waWxlciwgbGFuZ3VhZ2UpOgorICAgICAgICAgKCdDUFUnLCBDUFVfcHJlcHJvY2Vzc29yX2NoZWNrcyksCisgICAgICAgICAoJ0tFUk5FTCcsIGtlcm5lbF9wcmVwcm9jZXNzb3JfY2hlY2tzKSwKKyAgICAgKToKKy0gICAgICAgIGZvciBuLCAodmFsdWUsIGNvbmRpdGlvbikgaW4gZW51bWVyYXRlKHByZXByb2Nlc3Nvcl9jaGVja3MuaXRlcml0ZW1zKCkpOgorKyAgICAgICAgZm9yIG4sICh2YWx1ZSwgY29uZGl0aW9uKSBpbiBlbnVtZXJhdGUocHJlcHJvY2Vzc29yX2NoZWNrcy5pdGVtcygpKToKKyAgICAgICAgICAgICBjaGVjayArPSBkZWRlbnQoJycnXAorICAgICAgICAgICAgICAgICAjJShpZilzICUoY29uZGl0aW9uKXMKKyAgICAgICAgICAgICAgICAgJSUlKG5hbWUpcyAiJSh2YWx1ZSlzIgorQEAgLTQyNSw5ICs0MjUsOSBAQCBkZWYgZ2V0X2NvbXBpbGVyX2luZm8oY29tcGlsZXIsIGxhbmd1YWdlKToKKyAgICAgZGF0YSA9IHt9CisgICAgIGZvciBsaW5lIGluIHJlc3VsdC5zcGxpdGxpbmVzKCk6CisgICAgICAgICBpZiBsaW5lLnN0YXJ0c3dpdGgoYiclJyk6CistICAgICAgICAgICAgaywgXywgdiA9IGxpbmUucGFydGl0aW9uKCcgJykKKy0gICAgICAgICAgICBrID0gay5sc3RyaXAoJyUnKQorLSAgICAgICAgICAgIGRhdGFba10gPSB2LnJlcGxhY2UoJyAnLCAnJykubHN0cmlwKCciJykucnN0cmlwKCciJykKKysgICAgICAgICAgICBrLCBfLCB2ID0gbGluZS5wYXJ0aXRpb24oYicgJykKKysgICAgICAgICAgICBrID0gay5sc3RyaXAoYiclJykuZGVjb2RlKCd1dGYtOCcpCisrICAgICAgICAgICAgZGF0YVtrXSA9IHYucmVwbGFjZShiJyAnLCBiJycpLmxzdHJpcChiJyInKS5yc3RyaXAoYiciJykuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgICAgICAgbG9nLmRlYnVnKCclcyA9ICVzJywgaywgZGF0YVtrXSkKKyAKKyAgICAgdHJ5OgorQEAgLTU1MSw3ICs1NTEsNyBAQCBkZWYgY2hlY2tfY29tcGlsZXIoY29tcGlsZXIsIGxhbmd1YWdlLCB0YXJnZXQpOgorICAgICApCisgCisgCistQGltcG9ydHMoX2Zyb209J19fYnVpbHRpbl9fJywgX2ltcG9ydD0nb3BlbicpCisrQGltcG9ydHMoX2Zyb209J2J1aWx0aW5zJywgX2ltcG9ydD0nb3BlbicpCisgQGltcG9ydHMoJ2pzb24nKQorIEBpbXBvcnRzKCdzdWJwcm9jZXNzJykKKyBAaW1wb3J0cygnc3lzJykKK0BAIC02MDYsNyArNjA2LDcgQEAgZGVmIHZzX21ham9yX3ZlcnNpb24odmFsdWUpOgorIAorIAorIEBkZXBlbmRzKGhvc3QsIHRhcmdldCwgdnNfbWFqb3JfdmVyc2lvbiwgY2hlY2tfYnVpbGRfZW52aXJvbm1lbnQsICctLXdpdGgtdmlzdWFsLXN0dWRpby12ZXJzaW9uJykKKy1AaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSdzb3J0ZWQnKQorK0BpbXBvcnRzKF9mcm9tPSdidWlsdGlucycsIF9pbXBvcnQ9J3NvcnRlZCcpCisgQGltcG9ydHMoX2Zyb209J29wZXJhdG9yJywgX2ltcG9ydD0naXRlbWdldHRlcicpCisgQGltcG9ydHMoJ3BsYXRmb3JtJykKKyBkZWYgdmNfY29tcGlsZXJfcGF0aChob3N0LCB0YXJnZXQsIHZzX21ham9yX3ZlcnNpb24sIGVudiwgdnNfcmVsZWFzZV9uYW1lKToKK0BAIC04MDcsNyArODA3LDcgQEAgZGVmIGNvbXBpbGVyKGxhbmd1YWdlLCBob3N0X29yX3RhcmdldCwgY19jb21waWxlcj1Ob25lLCBvdGhlcl9jb21waWxlcj1Ob25lLAorICAgICAgICAgICAgICAgICAgICAgdGFyZ2V0Lm9zICE9ICdBbmRyb2lkJzoKKyAgICAgICAgICAgICAgICAgcmV0dXJuIG5hbWVzcGFjZSgqKnsKKyAgICAgICAgICAgICAgICAgICAgIGs6IFtdIGlmIGsgPT0gJ2ZsYWdzJyBlbHNlIHYKKy0gICAgICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIG90aGVyX2NvbXBpbGVyLl9fZGljdF9fLml0ZXJpdGVtcygpCisrICAgICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBvdGhlcl9jb21waWxlci5fX2RpY3RfXy5pdGVtcygpCisgICAgICAgICAgICAgICAgIH0pCisgCisgICAgICMgTm9ybWFsbHksIHdlJ2QgdXNlIGB2YXJgIGluc3RlYWQgb2YgYF92YXJgLCBidXQgdGhlIGludGVyYWN0aW9uIHdpdGgKK0BAIC0xMjM4LDcgKzEyMzgsNyBAQCBzZXRfY29uZmlnKCdWSVNJQklMSVRZX0ZMQUdTJywgdmlzaWJpbGl0eV9mbGFncykKKyAKKyBAZGVwZW5kcyhjX2NvbXBpbGVyKQorIEBpbXBvcnRzKCdtdWx0aXByb2Nlc3NpbmcnKQorLUBpbXBvcnRzKF9mcm9tPSdfX2J1aWx0aW5fXycsIF9pbXBvcnQ9J21pbicpCisrQGltcG9ydHMoX2Zyb209J2J1aWx0aW5zJywgX2ltcG9ydD0nbWluJykKKyBkZWYgcGdvX2ZsYWdzKGNvbXBpbGVyKToKKyAgICAgaWYgY29tcGlsZXIudHlwZSBpbiAoJ2djYycsICdjbGFuZycpOgorICAgICAgICAgcmV0dXJuIG5hbWVzcGFjZSgKK0BAIC0xNTE3LDYgKzE1MTcsOCBAQCBkZWYgZW5hYmxlX2dudV9saW5rZXIoZW5hYmxlX2dvbGRfb3B0aW9uLCBjX2NvbXBpbGVyLCBkZXZlbG9wZXJfb3B0aW9ucywgYnVpbGRfZQorICAgICAgICAgZ29sZCA9IGNoZWNrX2NtZF9vdXRwdXQoKmRldGVjdGlvbl9jbWQpLnN0cmlwKCkKKyAgICAgICAgIGlmIG5vdCBnb2xkOgorICAgICAgICAgICAgIHJldHVybgorKyAgICAgICAgaWYgaXNpbnN0YW5jZShnb2xkLCBieXRlcyk6CisrICAgICAgICAgICAgZ29sZCA9IGdvbGQuZGVjb2RlKCd1dGYtOCcpCisgCisgICAgICAgICBnb2xkRnVsbFBhdGggPSBmaW5kX3Byb2dyYW0oZ29sZCkKKyAgICAgICAgIGlmIGdvbGRGdWxsUGF0aCBpcyBOb25lOgorZGlmZiAtLWdpdCBhL2J1aWxkL21vei5jb25maWd1cmUvdXRpbC5jb25maWd1cmUgYi9idWlsZC9tb3ouY29uZmlndXJlL3V0aWwuY29uZmlndXJlCitpbmRleCAzMjg0ZmQ4YjUuLjIxODgxM2UyZCAxMDA2NDQKKy0tLSBhL2J1aWxkL21vei5jb25maWd1cmUvdXRpbC5jb25maWd1cmUKKysrKyBiL2J1aWxkL21vei5jb25maWd1cmUvdXRpbC5jb25maWd1cmUKK0BAIC0yNSw3ICsyNSw2IEBAIGRlZiBjb25maWd1cmVfZXJyb3IobWVzc2FnZSk6CisgIyBkb2VzIG5vdC4KKyAKKyAKKy1AaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSd1bmljb2RlJykKKyBAaW1wb3J0cygnc3VicHJvY2VzcycpCisgQGltcG9ydHMoJ3N5cycpCisgQGltcG9ydHMoX2Zyb209J21vemJ1aWxkLmNvbmZpZ3VyZS51dGlsJywgX2ltcG9ydD0nTGluZUlPJykKK0BAIC0zOSwxMCArMzgsMTAgQEAgZGVmIGNoZWNrX2NtZF9vdXRwdXQoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgaWYgJ2VudicgaW4ga3dhcmdzOgorICAgICAgICAgbm9ybWFsaXplZF9lbnYgPSB7fQorICAgICAgICAgZm9yIGssIHYgaW4ga3dhcmdzWydlbnYnXS5pdGVtcygpOgorLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoaywgdW5pY29kZSk6CisrICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShrLCBzdHIpOgorICAgICAgICAgICAgICAgICBrID0gay5lbmNvZGUoJ3V0Zi04JywgJ3N0cmljdCcpCisgCistICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2LCB1bmljb2RlKToKKysgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHYsIHN0cik6CisgICAgICAgICAgICAgICAgIHYgPSB2LmVuY29kZSgndXRmLTgnLCAnc3RyaWN0JykKKyAKKyAgICAgICAgICAgICBub3JtYWxpemVkX2VudltrXSA9IHYKK0BAIC0yODUsNyArMjg0LDcgQEAgZGVmIHVuaXF1ZV9saXN0KGwpOgorICMgICAgICgnMTkuMCcsICd4NjQnLCByJ0M6XC4uLlxhbWQ2NFxjbC5leGUnKQorICMgICAgICgnMTkuMCcsICd4ODYnLCByJ0M6XC4uLlxhbWQ2NF94ODZcY2wuZXhlJykKKyBAaW1wb3J0cyhfaW1wb3J0PSdfd2lucmVnJywgX2FzPSd3aW5yZWcnKQorLUBpbXBvcnRzKF9mcm9tPSdfX2J1aWx0aW5fXycsIF9pbXBvcnQ9J1dpbmRvd3NFcnJvcicpCisrQGltcG9ydHMoX2Zyb209J2J1aWx0aW5zJywgX2ltcG9ydD0nV2luZG93c0Vycm9yJykKKyBAaW1wb3J0cyhfZnJvbT0nZm5tYXRjaCcsIF9pbXBvcnQ9J2ZubWF0Y2gnKQorIGRlZiBnZXRfcmVnaXN0cnlfdmFsdWVzKHBhdHRlcm4sIGdldF8zMl9hbmRfNjRfYml0PUZhbHNlKToKKyAgICAgZGVmIGVudW1faGVscGVyKGZ1bmMsIGtleSk6CitAQCAtMzYwLDYgKzM1OSw4IEBAIGRlZiBnZXRfcmVnaXN0cnlfdmFsdWVzKHBhdHRlcm4sIGdldF8zMl9hbmRfNjRfYml0PUZhbHNlKToKKyBAaW1wb3J0cyhfZnJvbT0nbW96YnVpbGQuY29uZmlndXJlLnV0aWwnLCBfaW1wb3J0PSdWZXJzaW9uJywgX2FzPSdfVmVyc2lvbicpCisgZGVmIFZlcnNpb24odik6CisgICAgICdBIHZlcnNpb24gbnVtYmVyIHRoYXQgY2FuIGJlIGNvbXBhcmVkIHVzZWZ1bGx5LicKKysgICAgaWYgaXNpbnN0YW5jZSh2LCBieXRlcyk6CisrICAgICAgICB2ID0gdi5kZWNvZGUoJ3V0Zi04JykKKyAgICAgcmV0dXJuIF9WZXJzaW9uKHYpCisgCisgIyBEZW5vdGVzIGEgZGVwcmVjYXRlZCBvcHRpb24uIENvbWJpbmVzIG9wdGlvbigpIGFuZCBAZGVwZW5kczoKK2RpZmYgLS1naXQgYS9idWlsZC9tb3ouY29uZmlndXJlL3dpbmRvd3MuY29uZmlndXJlIGIvYnVpbGQvbW96LmNvbmZpZ3VyZS93aW5kb3dzLmNvbmZpZ3VyZQoraW5kZXggYTViNzkwZTNiLi4yYjg4ZmM0NDcgMTAwNjQ0CistLS0gYS9idWlsZC9tb3ouY29uZmlndXJlL3dpbmRvd3MuY29uZmlndXJlCisrKysgYi9idWlsZC9tb3ouY29uZmlndXJlL3dpbmRvd3MuY29uZmlndXJlCitAQCAtMTAsNyArMTAsNyBAQCBvcHRpb24oJy0td2l0aC13aW5kb3dzLXZlcnNpb24nLCBuYXJncz0xLCBkZWZhdWx0PSc2MDMnLAorIAorIAorIEBkZXBlbmRzKCctLXdpdGgtd2luZG93cy12ZXJzaW9uJykKKy1AaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSdWYWx1ZUVycm9yJykKKytAaW1wb3J0cyhfZnJvbT0nYnVpbHRpbnMnLCBfaW1wb3J0PSdWYWx1ZUVycm9yJykKKyBkZWYgdmFsaWRfd2luZG93c192ZXJzaW9uKHZhbHVlKToKKyAgICAgaWYgbm90IHZhbHVlOgorICAgICAgICAgZGllKCdDYW5ub3QgYnVpbGQgd2l0aCAtLXdpdGhvdXQtd2luZG93cy12ZXJzaW9uJykKK0BAIC01MCw4ICs1MCw4IEBAIGRlZiB3aW5kb3dzX3Nka19kaXIodmFsdWUsIGhvc3QpOgorIAorIEBpbXBvcnRzKCdvcycpCisgQGltcG9ydHMoJ3JlJykKKy1AaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSdzb3J0ZWQnKQorLUBpbXBvcnRzKF9mcm9tPSdfX2J1aWx0aW5fXycsIF9pbXBvcnQ9J1dpbmRvd3NFcnJvcicpCisrQGltcG9ydHMoX2Zyb209J2J1aWx0aW5zJywgX2ltcG9ydD0nc29ydGVkJykKKytAaW1wb3J0cyhfZnJvbT0nYnVpbHRpbnMnLCBfaW1wb3J0PSdXaW5kb3dzRXJyb3InKQorIGRlZiBnZXRfc2RrX2RpcnMoc2RrLCBzdWJkaXIpOgorICAgICBkZWYgZ2V0X2RpcnNfY29udGFpbmluZyhzZGssIHN0ZW0sIHN1YmRpcik6CisgICAgICAgICBiYXNlID0gb3MucGF0aC5qb2luKHNkaywgc3RlbSkKK0BAIC05Niw3ICs5Niw3IEBAIGRlZiB2YWxpZF93aW5kb3dzX3Nka19kaXJfcmVzdWx0KHZhbHVlKToKKyAKKyBAZGVwZW5kcyhjX2NvbXBpbGVyLCB3aW5kb3dzX3Nka19kaXIsIHZhbGlkX3dpbmRvd3NfdmVyc2lvbiwgJ1dJTkRPV1NTREtESVInKQorIEBjaGVja2luZygnZm9yIFdpbmRvd3MgU0RLJywgdmFsaWRfd2luZG93c19zZGtfZGlyX3Jlc3VsdCkKKy1AaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSdzb3J0ZWQnKQorK0BpbXBvcnRzKF9mcm9tPSdidWlsdGlucycsIF9pbXBvcnQ9J3NvcnRlZCcpCisgQGltcG9ydHMoX2Zyb209J3RleHR3cmFwJywgX2ltcG9ydD0nZGVkZW50JykKKyBkZWYgdmFsaWRfd2luZG93c19zZGtfZGlyKGNvbXBpbGVyLCB3aW5kb3dzX3Nka19kaXIsIHRhcmdldF92ZXJzaW9uLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgd2luZG93c19zZGtfZGlyX2Vudik6CitAQCAtMTc0LDcgKzE3NCw3IEBAIGRlZiB2YWxpZF91Y3J0X3Nka19kaXJfcmVzdWx0KHZhbHVlKToKKyBAZGVwZW5kcyh3aW5kb3dzX3Nka19kaXIsICdXSU5ET1dTU0RLRElSJywgY19jb21waWxlcikKKyBAY2hlY2tpbmcoJ2ZvciBVbml2ZXJzYWwgQ1JUIFNESycsIHZhbGlkX3VjcnRfc2RrX2Rpcl9yZXN1bHQpCisgQGltcG9ydHMoJ29zJykKKy1AaW1wb3J0cyhfZnJvbT0nX19idWlsdGluX18nLCBfaW1wb3J0PSdzb3J0ZWQnKQorK0BpbXBvcnRzKF9mcm9tPSdidWlsdGlucycsIF9pbXBvcnQ9J3NvcnRlZCcpCisgQGltcG9ydHMoX2ltcG9ydD0nbW96cGFjay5wYXRoJywgX2FzPSdtb3pwYXRoJykKKyBkZWYgdmFsaWRfdWNydF9zZGtfZGlyKHdpbmRvd3Nfc2RrX2Rpciwgd2luZG93c19zZGtfZGlyX2VudiwgY19jb21waWxlcik6CisgICAgIGlmIHdpbmRvd3Nfc2RrX2Rpcl9lbnY6CitkaWZmIC0tZ2l0IGEvYnVpbGQvdGVtcGxhdGVzLm1vemJ1aWxkIGIvYnVpbGQvdGVtcGxhdGVzLm1vemJ1aWxkCitpbmRleCAzZGE4NTBjZTUuLmFlNWU0MTBmZSAxMDA2NDQKKy0tLSBhL2J1aWxkL3RlbXBsYXRlcy5tb3pidWlsZAorKysrIGIvYnVpbGQvdGVtcGxhdGVzLm1vemJ1aWxkCitAQCAtMTAsNyArMTAsNyBAQCBkZWYgQmluYXJ5KCk6CisgICAgIHRlbXBsYXRlcy4nJycKKyAKKyAgICAgIyBBZGQgLWxsb2cgYnkgZGVmYXVsdCwgc2luY2Ugd2UgdXNlIGl0IGFsbCBvdmVyIHRoZSBwbGFjZS4KKy0gICAgaWYgQ09ORklHWydPU19UQVJHRVQnXSA9PSAnQW5kcm9pZCc6CisrICAgIGlmIHN0cihDT05GSUdbJ09TX1RBUkdFVCddKSA9PSAnQW5kcm9pZCc6CisgICAgICAgICBPU19MSUJTICs9IFsnbG9nJ10KKyAKKyAKK2RpZmYgLS1naXQgYS9jb25maWcvTW96WmlwRmlsZS5weSBiL2NvbmZpZy9Nb3paaXBGaWxlLnB5CitpbmRleCAzMzdmZTA1MjEuLmRjN2FkZDRjMyAxMDA2NDQKKy0tLSBhL2NvbmZpZy9Nb3paaXBGaWxlLnB5CisrKysgYi9jb25maWcvTW96WmlwRmlsZS5weQorQEAgLTE4LDcgKzE4LDcgQEAgY2xhc3MgWmlwRmlsZSh6aXBmaWxlLlppcEZpbGUpOgorICAgZGVmIF9faW5pdF9fKHNlbGYsIGZpbGUsIG1vZGU9InIiLCBjb21wcmVzc2lvbj16aXBmaWxlLlpJUF9TVE9SRUQsCisgICAgICAgICAgICAgICAgbG9jayA9IEZhbHNlKToKKyAgICAgaWYgbG9jazoKKy0gICAgICBhc3NlcnQgaXNpbnN0YW5jZShmaWxlLCBiYXNlc3RyaW5nKQorKyAgICAgIGFzc2VydCBpc2luc3RhbmNlKGZpbGUsIHN0cikKKyAgICAgICBzZWxmLmxvY2tmaWxlID0gbG9ja19maWxlKGZpbGUgKyAnLmxjaycpCisgICAgIGVsc2U6CisgICAgICAgc2VsZi5sb2NrZmlsZSA9IE5vbmUKK0BAIC00Niw3ICs0Niw3IEBAIGNsYXNzIFppcEZpbGUoemlwZmlsZS5aaXBGaWxlKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRlX3RpbWU9dGltZS5sb2NhbHRpbWUodGltZS50aW1lKCkpKQorICAgICAgIHppbmZvLmNvbXByZXNzX3R5cGUgPSBzZWxmLmNvbXByZXNzaW9uCisgICAgICAgIyBBZGQgc29tZSBzdGFuZGFyZCBVTklYIGZpbGUgYWNjZXNzIHBlcm1pc3Npb25zICgtcnctci0tci0tKS4KKy0gICAgICB6aW5mby5leHRlcm5hbF9hdHRyID0gKDB4ODFhNCAmIDB4RkZGRikgPDwgMTZMCisrICAgICAgemluZm8uZXh0ZXJuYWxfYXR0ciA9ICgweDgxYTQgJiAweEZGRkYpIDw8IDE2CisgICAgIGVsc2U6CisgICAgICAgemluZm8gPSB6aW5mb19vcl9hcmNuYW1lCisgCitAQCAtNTgsNyArNTgsNyBAQCBjbGFzcyBaaXBGaWxlKHppcGZpbGUuWmlwRmlsZSk6CisgICAgICMgYXMgdGhlIG9sZCwgcmV1c2UgdGhlIGV4aXN0aW5nIGVudHJ5LgorIAorICAgICBkb1NlZWsgPSBGYWxzZSAjIHN0b3JlIGlmIHdlIG5lZWQgdG8gc2VlayB0byB0aGUgZW9mIGFmdGVyIG92ZXJ3cml0aW5nCistICAgIGlmIHNlbGYuTmFtZVRvSW5mby5oYXNfa2V5KHppbmZvLmZpbGVuYW1lKToKKysgICAgaWYgemluZm8uZmlsZW5hbWUgaW4gc2VsZi5OYW1lVG9JbmZvOgorICAgICAgICMgRmluZCB0aGUgbGFzdCBaaXBJbmZvIHdpdGggb3VyIG5hbWUuCisgICAgICAgIyBMYXN0LCBiZWNhdXNlIHRoYXQncyBjYXRjaGluZyBtdWx0aXBsZSBvdmVyd3JpdGVzCisgICAgICAgaSA9IGxlbihzZWxmLmZpbGVsaXN0KQorQEAgLTEwOSwxNCArMTA5LDE0IEBAIGNsYXNzIFppcEZpbGUoemlwZmlsZS5aaXBGaWxlKToKKyAgICAgICAjIGFkanVzdCBmaWxlIG1vZGUgaWYgd2Ugb3JpZ2luYWxseSBqdXN0IHdyb3RlLCBub3cgd2UgcmV3cml0ZQorICAgICAgIHNlbGYuZnAuY2xvc2UoKQorICAgICAgIHNlbGYuZnAgPSBvcGVuKHNlbGYuZmlsZW5hbWUsICdyK2InKQorLSAgICBhbGwgPSBtYXAobGFtYmRhIHppOiAoemksIFRydWUpLCBzZWxmLmZpbGVsaXN0KSArIFwKKy0gICAgICAgIG1hcChsYW1iZGEgemk6ICh6aSwgRmFsc2UpLCBzZWxmLl9yZW1vdmUpCisrICAgIGFsbCA9IFsoemksIFRydWUpIGZvciB6aSBpbiBzZWxmLmZpbGVsaXN0XSArIFwKKysgICAgICAgIFsoemksIEZhbHNlKSBmb3IgemkgaW4gc2VsZi5fcmVtb3ZlXQorICAgICBhbGwuc29ydChsYW1iZGEgbCwgcjogY21wKGxbMF0uaGVhZGVyX29mZnNldCwgclswXS5oZWFkZXJfb2Zmc2V0KSkKKyAgICAgIyBlbXB0eSBfcmVtb3ZlIGZvciBtdWx0aXBsZSBjbG9zZXMKKyAgICAgc2VsZi5fcmVtb3ZlID0gW10KKyAKKyAgICAgbGVuZ3RocyA9IFthbGxbaSsxXVswXS5oZWFkZXJfb2Zmc2V0IC0gYWxsW2ldWzBdLmhlYWRlcl9vZmZzZXQKKy0gICAgICAgICAgICAgICBmb3IgaSBpbiB4cmFuZ2UobGVuKGFsbCktMSldCisrICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGFsbCktMSldCisgICAgIGxlbmd0aHMuYXBwZW5kKHNlbGYuZW5kIC0gYWxsWy0xXVswXS5oZWFkZXJfb2Zmc2V0KQorICAgICB0b19wb3MgPSAwCisgICAgIGZvciAoemksIGtlZXApLCBsZW5ndGggaW4gemlwKGFsbCwgbGVuZ3Rocyk6CitkaWZmIC0tZ2l0IGEvY29uZmlnL2V4cGFuZGxpYnMucHkgYi9jb25maWcvZXhwYW5kbGlicy5weQoraW5kZXggYWMwNmM0MzJmLi5kZjFmZWQxNWQgMTAwNjQ0CistLS0gYS9jb25maWcvZXhwYW5kbGlicy5weQorKysrIGIvY29uZmlnL2V4cGFuZGxpYnMucHkKK0BAIC0yNiw3ICsyNiw3IEBAICR7TElCX1BSRUZJWH0ke1JPT1R9LiR7TElCX1NVRkZJWH0gZm9sbG93aW5nIHRoZXNlIHJ1bGVzOgorICAgZGVzY3JpcHRvciBjb250YWlucy4gQW5kIGZvciBlYWNoIG9mIHRoZXNlIExJQlMsIGFsc28gYXBwbHkgdGhlIHNhbWUKKyAgIHJ1bGVzLgorICcnJworLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgd2l0aF9zdGF0ZW1lbnQKKysKKyBpbXBvcnQgc3lzLCBvcywgZXJybm8KKyBpbXBvcnQgZXhwYW5kbGlic19jb25maWcgYXMgY29uZgorIAorQEAgLTM2LDcgKzM2LDcgQEAgZGVmIGVuc3VyZVBhcmVudERpcihmaWxlKToKKyAgICAgaWYgZGlyIGFuZCBub3Qgb3MucGF0aC5leGlzdHMoZGlyKToKKyAgICAgICAgIHRyeToKKyAgICAgICAgICAgICBvcy5tYWtlZGlycyhkaXIpCistICAgICAgICBleGNlcHQgT1NFcnJvciwgZXJyb3I6CisrICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlcnJvcjoKKyAgICAgICAgICAgICBpZiBlcnJvci5lcnJubyAhPSBlcnJuby5FRVhJU1Q6CisgICAgICAgICAgICAgICAgIHJhaXNlCisgCitAQCAtMTQwLDQgKzE0MCw0IEBAIGNsYXNzIEV4cGFuZEFyZ3MobGlzdCk6CisgICAgICAgICByZXR1cm4gW3JlbGF0aXZpemUoYXJnKV0KKyAKKyBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorLSAgICBwcmludCAiICIuam9pbihFeHBhbmRBcmdzKHN5cy5hcmd2WzE6XSkpCisrICAgIHByaW50KCIgIi5qb2luKEV4cGFuZEFyZ3Moc3lzLmFyZ3ZbMTpdKSkpCitkaWZmIC0tZ2l0IGEvY29uZmlnL2V4cGFuZGxpYnNfZXhlYy5weSBiL2NvbmZpZy9leHBhbmRsaWJzX2V4ZWMucHkKK2luZGV4IGRmNjU2MDE2Yy4uZmI3ODZhNmE4IDEwMDY0NAorLS0tIGEvY29uZmlnL2V4cGFuZGxpYnNfZXhlYy5weQorKysrIGIvY29uZmlnL2V4cGFuZGxpYnNfZXhlYy5weQorQEAgLTIwLDcgKzIwLDcgQEAgV2l0aCB0aGUgLS1zeW1ib2wtb3JkZXIgYXJndW1lbnQsIGZvbGxvd2VkIGJ5IGEgZmlsZSBuYW1lLCBpdCB3aWxsIGFkZCB0aGUKKyByZWxldmFudCBsaW5rZXIgb3B0aW9ucyB0byBjaGFuZ2UgdGhlIG9yZGVyIGluIHdoaWNoIHRoZSBsaW5rZXIgcHV0cyB0aGUKKyBzeW1ib2xzIGFwcGVhciBpbiB0aGUgcmVzdWx0aW5nIGJpbmFyeS4gT25seSB3b3JrcyBmb3IgRUxGIHRhcmdldHMuCisgJycnCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB3aXRoX3N0YXRlbWVudAorKworIGltcG9ydCBzeXMKKyBpbXBvcnQgb3MKKyBmcm9tIGV4cGFuZGxpYnMgaW1wb3J0ICgKK0BAIC0zMDQsMTEgKzMwNCwxMSBAQCBjbGFzcyBTZWN0aW9uRmluZGVyKG9iamVjdCk6CisgICAgICAgICByZXR1cm4gc3ltcworIAorIGRlZiBwcmludF9jb21tYW5kKG91dCwgYXJncyk6CistICAgIHByaW50ID4+b3V0LCAiRXhlY3V0aW5nOiAiICsgIiAiLmpvaW4oYXJncykKKysgICAgcHJpbnQoIkV4ZWN1dGluZzogIiArICIgIi5qb2luKGFyZ3MpLCBmaWxlPW91dCkKKyAgICAgZm9yIHRtcCBpbiBbZiBmb3IgZiBpbiBhcmdzLnRtcCBpZiBvcy5wYXRoLmlzZmlsZShmKV06CistICAgICAgICBwcmludCA+Pm91dCwgdG1wICsgIjoiCisrICAgICAgICBwcmludCh0bXAgKyAiOiIsIGZpbGU9b3V0KQorICAgICAgICAgd2l0aCBvcGVuKHRtcCkgYXMgZmlsZToKKy0gICAgICAgICAgICBwcmludCA+Pm91dCwgIiIuam9pbihbIiAgICAiICsgbCBmb3IgbCBpbiBmaWxlLnJlYWRsaW5lcygpXSkKKysgICAgICAgICAgICBwcmludCgiIi5qb2luKFsiICAgICIgKyBsIGZvciBsIGluIGZpbGUucmVhZGxpbmVzKCldKSwgZmlsZT1vdXQpCisgICAgIG91dC5mbHVzaCgpCisgCisgZGVmIG1haW4oYXJncywgcHJvY19jYWxsYmFjaz1Ob25lKToKK0BAIC0zMzgsMTMgKzMzOCwxMyBAQCBkZWYgbWFpbihhcmdzLCBwcm9jX2NhbGxiYWNrPU5vbmUpOgorICAgICAgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKGFyZ3MsIHN0ZG91dCA9IHN1YnByb2Nlc3MuUElQRSwgc3RkZXJyID0gc3VicHJvY2Vzcy5TVERPVVQpCisgICAgICAgICAgICAgaWYgcHJvY19jYWxsYmFjazoKKyAgICAgICAgICAgICAgICAgcHJvY19jYWxsYmFjayhwcm9jKQorLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKy0gICAgICAgICAgICBwcmludCA+PnN5cy5zdGRlcnIsICdlcnJvcjogTGF1bmNoaW5nJywgYXJncywgJzonLCBlCisrICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisrICAgICAgICAgICAgcHJpbnQoJ2Vycm9yOiBMYXVuY2hpbmcnLCBhcmdzLCAnOicsIGUsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgICAgICAgICByYWlzZSBlCisgICAgICAgICAoc3Rkb3V0LCBzdGRlcnIpID0gcHJvYy5jb21tdW5pY2F0ZSgpCisgICAgICAgICBpZiBwcm9jLnJldHVybmNvZGUgYW5kIG5vdCBvcHRpb25zLnZlcmJvc2U6CisgICAgICAgICAgICAgcHJpbnRfY29tbWFuZChzeXMuc3RkZXJyLCBhcmdzKQorLSAgICAgICAgc3lzLnN0ZGVyci53cml0ZShzdGRvdXQpCisrICAgICAgICBzeXMuc3RkZXJyLndyaXRlKHN0ZG91dC5kZWNvZGUoInV0Zi04IikpCisgICAgICAgICBzeXMuc3RkZXJyLmZsdXNoKCkKKyAgICAgICAgIGlmIHByb2MucmV0dXJuY29kZToKKyAgICAgICAgICAgICByZXR1cm4gcHJvYy5yZXR1cm5jb2RlCitkaWZmIC0tZ2l0IGEvY29uZmlnL2V4cGFuZGxpYnNfZ2VuLnB5IGIvY29uZmlnL2V4cGFuZGxpYnNfZ2VuLnB5CitpbmRleCBiMWRlNjNjZDAuLmRjNjJiZDE4NCAxMDA2NDQKKy0tLSBhL2NvbmZpZy9leHBhbmRsaWJzX2dlbi5weQorKysrIGIvY29uZmlnL2V4cGFuZGxpYnNfZ2VuLnB5CitAQCAtNSw3ICs1LDcgQEAKKyAnJydHaXZlbiBhIGxpc3Qgb2Ygb2JqZWN0IGZpbGVzIGFuZCBsaWJyYXJ5IG5hbWVzLCBwcmludHMgYSBsaWJyYXJ5CisgZGVzY3JpcHRvciB0byBzdGFuZGFyZCBvdXRwdXQnJycKKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CisrCisgaW1wb3J0IHN5cworIGltcG9ydCBvcworIGltcG9ydCBleHBhbmRsaWJzX2NvbmZpZyBhcyBjb25mCitAQCAtMzgsNCArMzgsNCBAQCBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorIAorICAgICBlbnN1cmVQYXJlbnREaXIob3B0aW9ucy5vdXRwdXQpCisgICAgIHdpdGggb3BlbihvcHRpb25zLm91dHB1dCwgJ3cnKSBhcyBvdXRmaWxlOgorLSAgICAgICAgcHJpbnQgPj5vdXRmaWxlLCBnZW5lcmF0ZShhcmdzKQorKyAgICAgICAgcHJpbnQoZ2VuZXJhdGUoYXJncyksIGZpbGU9b3V0ZmlsZSkKK2RpZmYgLS1naXQgYS9jb25maWd1cmUucHkgYi9jb25maWd1cmUucHkKK2luZGV4IDc3MWUzNGUzOC4uYmVlMzI5ZDdjIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLnB5CisrKysgYi9jb25maWd1cmUucHkKK0BAIC0yLDEwICsyLDExIEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24sIHVuaWNvZGVfbGl0ZXJhbHMKKysKKyAKKyBpbXBvcnQgY29kZWNzCisgaW1wb3J0IGl0ZXJ0b29scworK2ltcG9ydCBsb2dnaW5nCisgaW1wb3J0IG9zCisgaW1wb3J0IHN5cworIGltcG9ydCB0ZXh0d3JhcAorQEAgLTM0LDcgKzM1LDkgQEAgZnJvbSBtb3pidWlsZC51dGlsIGltcG9ydCAoCisgZGVmIG1haW4oYXJndik6CisgICAgIGNvbmZpZyA9IHt9CisgICAgIHNhbmRib3ggPSBDb25maWd1cmVTYW5kYm94KGNvbmZpZywgb3MuZW52aXJvbiwgYXJndikKKysgICAgcHJpbnQoJ3NhbmRib3gucnVuIHN0YXJ0ZWQnKQorICAgICBzYW5kYm94LnJ1bihvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgJ21vei5jb25maWd1cmUnKSkKKysgICAgcHJpbnQoJ3NhbmRib3gucnVuIGZpbmlzaGVkJykKKyAKKyAgICAgaWYgc2FuZGJveC5faGVscDoKKyAgICAgICAgIHJldHVybiAwCitAQCAtNTYsMTIgKzU5LDIxIEBAIGRlZiBjb25maWdfc3RhdHVzKGNvbmZpZyk6CisgCisgICAgIHNhbml0aXplZF9jb25maWcgPSB7fQorICAgICBzYW5pdGl6ZWRfY29uZmlnWydzdWJzdHMnXSA9IHsKKy0gICAgICAgIGs6IHNhbml0aXplZF9ib29scyh2KSBmb3IgaywgdiBpbiBjb25maWcuaXRlcml0ZW1zKCkKKysgICAgICAgIGs6IHNhbml0aXplZF9ib29scyh2KSBmb3IgaywgdiBpbiBjb25maWcuaXRlbXMoKQorICAgICAgICAgaWYgayBub3QgaW4gKCdERUZJTkVTJywgJ25vbl9nbG9iYWxfZGVmaW5lcycsICdUT1BTUkNESVInLCAnVE9QT0JKRElSJywKKyAgICAgICAgICAgICAgICAgICAgICAnQUxMX0NPTkZJR1VSRV9QQVRIUycpCisgICAgIH0KKysKKysgICAgIyBIYWNrIGFyb3VuZCBPcHRpb25WYWx1ZSBlbnRyaWVzIHVua25vd24gZHVyaW5nIGNvbXBpbGUKKysgICAgZm9yIG9wdCBpbiAoJ0JVSUxEX0JBQ0tFTkRTJywgJ01PWl9VSV9MT0NBTEUnLCAnUlVTVEZMQUdTJyApOgorKyAgICAgICAgb2xkID0gc2FuaXRpemVkX2NvbmZpZ1snc3Vic3RzJ11bb3B0XQorKyAgICAgICAgbmV3ID0gW10KKysgICAgICAgIGZvciBzZXR0aW5nIGluIG9sZDoKKysgICAgICAgICAgICBuZXcuYXBwZW5kKHNldHRpbmcpCisrICAgICAgICBzYW5pdGl6ZWRfY29uZmlnWydzdWJzdHMnXVtvcHRdID0gbmV3CisrCisgICAgIHNhbml0aXplZF9jb25maWdbJ2RlZmluZXMnXSA9IHsKKy0gICAgICAgIGs6IHNhbml0aXplZF9ib29scyh2KSBmb3IgaywgdiBpbiBjb25maWdbJ0RFRklORVMnXS5pdGVyaXRlbXMoKQorKyAgICAgICAgazogc2FuaXRpemVkX2Jvb2xzKHYpIGZvciBrLCB2IGluIGNvbmZpZ1snREVGSU5FUyddLml0ZW1zKCkKKyAgICAgfQorICAgICBzYW5pdGl6ZWRfY29uZmlnWydub25fZ2xvYmFsX2RlZmluZXMnXSA9IGNvbmZpZ1snbm9uX2dsb2JhbF9kZWZpbmVzJ10KKyAgICAgc2FuaXRpemVkX2NvbmZpZ1sndG9wc3JjZGlyJ10gPSBjb25maWdbJ1RPUFNSQ0RJUiddCitAQCAtNzEsMjAgKzgzLDE3IEBAIGRlZiBjb25maWdfc3RhdHVzKGNvbmZpZyk6CisgICAgICMgQ3JlYXRlIGNvbmZpZy5zdGF0dXMuIEV2ZW50dWFsbHksIHdlJ2xsIHdhbnQgdG8ganVzdCBkbyB0aGUgd29yayBpdCBkb2VzCisgICAgICMgaGVyZSwgd2hlbiB3ZSdyZSBhYmxlIHRvIHNraXAgY29uZmlndXJlIHRlc3RzL3VzZSBjYWNoZWQgcmVzdWx0cy9ub3QgcmVseQorICAgICAjIG9uIGF1dG9jb25mLgorLSAgICBwcmludCgiQ3JlYXRpbmcgY29uZmlnLnN0YXR1cyIsIGZpbGU9c3lzLnN0ZGVycikKKy0gICAgZW5jb2RpbmcgPSAnbWJjcycgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMicgZWxzZSAndXRmLTgnCistICAgIHdpdGggY29kZWNzLm9wZW4oJ2NvbmZpZy5zdGF0dXMnLCAndycsIGVuY29kaW5nKSBhcyBmaDoKKysgICAgbG9nZ2luZy5nZXRMb2dnZXIoJ21vei5jb25maWd1cmUnKS5pbmZvKCdDcmVhdGluZyBjb25maWcuc3RhdHVzJykKKysgICAgd2l0aCBjb2RlY3Mub3BlbignY29uZmlnLnN0YXR1cycsICd3JywgJ3V0Zi04JykgYXMgZmg6CisgICAgICAgICBmaC53cml0ZSh0ZXh0d3JhcC5kZWRlbnQoJycnXAorICAgICAgICAgICAgICMhJShweXRob24pcworLSAgICAgICAgICAgICMgY29kaW5nPSUoZW5jb2RpbmcpcworLSAgICAgICAgICAgIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscworLSAgICAgICAgICAgIGZyb20gbW96YnVpbGQudXRpbCBpbXBvcnQgZW5jb2RlCistICAgICAgICAgICAgZW5jb2RpbmcgPSAnJShlbmNvZGluZylzJworLSAgICAgICAgJycnKSAlIHsncHl0aG9uJzogY29uZmlnWydQWVRIT04nXSwgJ2VuY29kaW5nJzogZW5jb2Rpbmd9KQorKyAgICAgICAgICAgICMgY29kaW5nPXV0Zi04CisrICAgICAgICAgICAgcHJpbnQoImNvbmZpZy5zdGF0dXMgc3RhcnRlZCIpCisrICAgICAgICAnJycpICUgeydweXRob24nOiBjb25maWdbJ1BZVEhPTiddfSkKKyAgICAgICAgICMgQSBsb3Qgb2YgdGhlIGJ1aWxkIGJhY2tlbmQgY29kZSBpcyBjdXJyZW50bHkgZXhwZWN0aW5nIGJ5dGUKKyAgICAgICAgICMgc3RyaW5ncyBhbmQgYnJlYWtzIGluIHN1YnRsZSB3YXlzIHdpdGggdW5pY29kZSBzdHJpbmdzLiAoYnVnIDEyOTY1MDgpCistICAgICAgICBmb3IgaywgdiBpbiBzYW5pdGl6ZWRfY29uZmlnLml0ZXJpdGVtcygpOgorLSAgICAgICAgICAgIGZoLndyaXRlKCclcyA9IGVuY29kZSglcywgZW5jb2RpbmcpXG4nICUgKGssIGluZGVudGVkX3JlcHIodikpKQorKyAgICAgICAgZm9yIGssIHYgaW4gc2FuaXRpemVkX2NvbmZpZy5pdGVtcygpOgorKyAgICAgICAgICAgIGZoLndyaXRlKCclcyA9ICVzXG4nICUgKGssIGluZGVudGVkX3JlcHIodikpKQorICAgICAgICAgZmgud3JpdGUoIl9fYWxsX18gPSBbJ3RvcG9iamRpcicsICd0b3BzcmNkaXInLCAnZGVmaW5lcycsICIKKyAgICAgICAgICAgICAgICAgICInbm9uX2dsb2JhbF9kZWZpbmVzJywgJ3N1YnN0cycsICdtb3pjb25maWcnXSIpCisgCitAQCAtOTcsNiArMTA2LDkgQEAgZGVmIGNvbmZpZ19zdGF0dXMoY29uZmlnKToKKyAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBkaWN0KFsobmFtZSwgZ2xvYmFscygpW25hbWVdKSBmb3IgbmFtZSBpbiBfX2FsbF9fXSkKKyAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ19zdGF0dXMoKiphcmdzKQorICAgICAgICAgICAgICcnJykpCisrICAgICAgICBmaC53cml0ZSh0ZXh0d3JhcC5kZWRlbnQoJycnCisrICAgICAgICAgICAgcHJpbnQoImNvbmZpZy5zdGF0dXMgZmluaXNoZWQiKQorKyAgICAgICAgJycnKSkKKyAKKyAgICAgcGFydGlhbF9jb25maWcgPSBQYXJ0aWFsQ29uZmlnRW52aXJvbm1lbnQoY29uZmlnWydUT1BPQkpESVInXSkKKyAgICAgcGFydGlhbF9jb25maWcud3JpdGVfdmFycyhzYW5pdGl6ZWRfY29uZmlnKQorQEAgLTExNiw3ICsxMjgsNyBAQCBkZWYgY29uZmlnX3N0YXR1cyhjb25maWcpOgorICAgICAjIGV4ZWN1dGFibGUgcGVybWlzc2lvbnMuCisgICAgIG9zLmNobW9kKCdjb25maWcuc3RhdHVzJywgMG83NTUpCisgICAgIGlmIGNvbmZpZy5nZXQoJ01PWl9CVUlMRF9BUFAnKSAhPSAnanMnIG9yIGNvbmZpZy5nZXQoJ0pTX1NUQU5EQUxPTkUnKToKKy0gICAgICAgIG9zLmVudmlyb25bYidXUklURV9NT1pJTkZPJ10gPSBiJzEnCisrICAgICAgICBvcy5lbnZpcm9uWydXUklURV9NT1pJTkZPJ10gPSAnMScKKyAgICAgICAgIGZyb20gbW96YnVpbGQuY29uZmlnX3N0YXR1cyBpbXBvcnQgY29uZmlnX3N0YXR1cworIAorICAgICAgICAgIyBTb21lIHZhbHVlcyBpbiBzYW5pdGl6ZWRfY29uZmlnIGFsc28gaGF2ZSBtb3JlIGNvbXBsZXggdHlwZXMsIHN1Y2ggYXMKK0BAIC0xMjcsNyArMTM5LDcgQEAgZGVmIGNvbmZpZ19zdGF0dXMoY29uZmlnKToKKyAKKyAgICAgICAgICMgQSBsb3Qgb2YgdGhlIGJ1aWxkIGJhY2tlbmQgY29kZSBpcyBjdXJyZW50bHkgZXhwZWN0aW5nIGJ5dGUgc3RyaW5ncworICAgICAgICAgIyBhbmQgYnJlYWtzIGluIHN1YnRsZSB3YXlzIHdpdGggdW5pY29kZSBzdHJpbmdzLgorLSAgICAgICAgcmV0dXJuIGNvbmZpZ19zdGF0dXMoYXJncz1bXSwgKiplbmNvZGUoc2FuaXRpemVkX2NvbmZpZywgZW5jb2RpbmcpKQorKyAgICAgICAgcmV0dXJuIGNvbmZpZ19zdGF0dXMoYXJncz1bXSwgKipzYW5pdGl6ZWRfY29uZmlnKQorICAgICByZXR1cm4gMAorIAorIAorZGlmZiAtLWdpdCBhL2pzL3NyYy9idWlsZC9tb3ouYnVpbGQgYi9qcy9zcmMvYnVpbGQvbW96LmJ1aWxkCitpbmRleCBhN2Y1ZmE0Y2UuLjg1NmNhZTMyZCAxMDA2NDQKKy0tLSBhL2pzL3NyYy9idWlsZC9tb3ouYnVpbGQKKysrKyBiL2pzL3NyYy9idWlsZC9tb3ouYnVpbGQKK0BAIC00NywyMiArNDcsMjIgQEAgVVNFX0xJQlMgKz0gWworICAgICAnemxpYicsCisgXQorIAorLWlmIENPTkZJR1snT1NfQVJDSCddIG5vdCBpbiAoJ1dJTk5UJywgJ0hQLVVYJyk6CisraWYgc3RyKENPTkZJR1snT1NfQVJDSCddKSBub3QgaW4gKCdXSU5OVCcsICdIUC1VWCcpOgorICAgICBPU19MSUJTICs9IFsKKyAgICAgICAgICdtJywKKyAgICAgXQorIAorLWlmIENPTkZJR1snT1NfQVJDSCddID09ICdGcmVlQlNEJzoKKytpZiBzdHIoQ09ORklHWydPU19BUkNIJ10pID09ICdGcmVlQlNEJzoKKyAgICAgT1NfTElCUyArPSBbCisgICAgICAgICAnLXB0aHJlYWQnLAorICAgICBdCisgCistaWYgQ09ORklHWydPU19BUkNIJ10gPT0gJ0xpbnV4JzoKKytpZiBzdHIoQ09ORklHWydPU19BUkNIJ10pID09ICdMaW51eCc6CisgICAgIE9TX0xJQlMgKz0gWworICAgICAgICAgJ2RsJywKKyAgICAgXQorIAorLWlmIENPTkZJR1snT1NfQVJDSCddID09ICdTdW5PUyc6CisraWYgc3RyKENPTkZJR1snT1NfQVJDSCddKSA9PSAnU3VuT1MnOgorICAgICBPU19MSUJTICs9IFsKKyAgICAgICAgICdwb3NpeDQnLAorICAgICAgICAgJ2RsJywKK2RpZmYgLS1naXQgYS9qcy9zcmMvYnVpbHRpbi9lbWJlZGpzLnB5IGIvanMvc3JjL2J1aWx0aW4vZW1iZWRqcy5weQoraW5kZXggYmEyNWU3MWMxLi5kNGYyZGUxMjIgMTAwNjQ0CistLS0gYS9qcy9zcmMvYnVpbHRpbi9lbWJlZGpzLnB5CisrKysgYi9qcy9zcmMvYnVpbHRpbi9lbWJlZGpzLnB5CitAQCAtMzYsNyArMzYsNyBAQAorICMKKyAjIEl0IHVzZXMgdGhlIEMgcHJlcHJvY2Vzc29yIHRvIHByb2Nlc3MgaXRzIGlucHV0cy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IHdpdGhfc3RhdGVtZW50CisrCisgaW1wb3J0IHJlLCBzeXMsIG9zLCBzdWJwcm9jZXNzCisgaW1wb3J0IHNobGV4CisgaW1wb3J0IHdoaWNoCitAQCAtNTIsOCArNTIsOCBAQCBkZWYgVG9DQXNjaWlBcnJheShsaW5lcyk6CisgCisgZGVmIFRvQ0FycmF5KGxpbmVzKToKKyAgIHJlc3VsdCA9IFtdCistICBmb3IgY2hyIGluIGxpbmVzOgorLSAgICByZXN1bHQuYXBwZW5kKHN0cihvcmQoY2hyKSkpCisrICBmb3IgY2hhciBpbiBsaW5lczoKKysgICAgcmVzdWx0LmFwcGVuZCgiMHglMC4yWCIgJSBjaGFyKQorICAgcmV0dXJuICIsICIuam9pbihyZXN1bHQpCisgCisgSEVBREVSX1RFTVBMQVRFID0gIiIiXAorQEAgLTg3LDcgKzg3LDcgQEAgZGVmIGVtYmVkKGN4eCwgcHJlcHJvY2Vzc29yT3B0aW9uLCBjcHBmbGFncywgbXNncywgc291cmNlcywgY19vdXQsIGpzX291dCwgbmFtZXMKKyAKKyAgIGpzX291dC53cml0ZShwcm9jZXNzZWQpCisgICBpbXBvcnQgemxpYgorLSAgY29tcHJlc3NlZCA9IHpsaWIuY29tcHJlc3MocHJvY2Vzc2VkKQorKyAgY29tcHJlc3NlZCA9IHpsaWIuY29tcHJlc3MocHJvY2Vzc2VkLmVuY29kZSgndXRmLTgnKSkKKyAgIGRhdGEgPSBUb0NBcnJheShjb21wcmVzc2VkKQorICAgY19vdXQud3JpdGUoSEVBREVSX1RFTVBMQVRFICUgeworICAgICAnc291cmNlc190eXBlJzogJ3Vuc2lnbmVkIGNoYXInLAorQEAgLTEwNyw3ICsxMDcsNyBAQCBkZWYgcHJlcHJvY2VzcyhjeHgsIHByZXByb2Nlc3Nvck9wdGlvbiwgc291cmNlLCBhcmdzID0gW10pOgorICAgdG1wT3V0ID0gJ3NlbGYtaG9zdGluZy1wcmVwcm9jZXNzZWQucHAnOworICAgb3V0cHV0QXJnID0gc2hsZXguc3BsaXQocHJlcHJvY2Vzc29yT3B0aW9uICsgdG1wT3V0KQorIAorLSAgd2l0aCBvcGVuKHRtcEluLCAnd2InKSBhcyBpbnB1dDoKKysgIHdpdGggb3Blbih0bXBJbiwgJ3cnKSBhcyBpbnB1dDoKKyAgICAgaW5wdXQud3JpdGUoc291cmNlKQorICAgcHJpbnQoJyAnLmpvaW4oY3h4ICsgb3V0cHV0QXJnICsgYXJncyArIFt0bXBJbl0pKQorICAgcmVzdWx0ID0gc3VicHJvY2Vzcy5Qb3BlbihjeHggKyBvdXRwdXRBcmcgKyBhcmdzICsgW3RtcEluXSkud2FpdCgpCitkaWZmIC0tZ2l0IGEvanMvc3JjL2NvbmZpZ3VyZSBiL2pzL3NyYy9jb25maWd1cmUKK2luZGV4IDNiM2EzOWFmMy4uOGY1ZWE0MWQwIDEwMDc1NQorLS0tIGEvanMvc3JjL2NvbmZpZ3VyZQorKysrIGIvanMvc3JjL2NvbmZpZ3VyZQorQEAgLTI0LDQgKzI0LDQgQEAgZXhwb3J0IE9MRF9DT05GSUdVUkU9IiRTUkNESVIiL29sZC1jb25maWd1cmUKKyAKKyBzZXQgLS0gIiRAIiAtLWVuYWJsZS1wcm9qZWN0PWpzCisgCistd2hpY2ggcHl0aG9uMi43ID4gL2Rldi9udWxsICYmIGV4ZWMgcHl0aG9uMi43ICIkVE9QU1JDRElSL2NvbmZpZ3VyZS5weSIgIiRAIiB8fCBleGVjIHB5dGhvbiAiJFRPUFNSQ0RJUi9jb25maWd1cmUucHkiICIkQCIKKyt3aGljaCBweXRob24zID4gL2Rldi9udWxsICYmIGV4ZWMgcHl0aG9uMyAiJFRPUFNSQ0RJUi9jb25maWd1cmUucHkiICIkQCIgfHwgZXhlYyBweXRob24gIiRUT1BTUkNESVIvY29uZmlndXJlLnB5IiAiJEAiCitkaWZmIC0tZ2l0IGEvanMvc3JjL2Zyb250ZW5kL0dlbmVyYXRlUmVzZXJ2ZWRXb3Jkcy5weSBiL2pzL3NyYy9mcm9udGVuZC9HZW5lcmF0ZVJlc2VydmVkV29yZHMucHkKK2luZGV4IDNhYTIzMDdiOS4uMzgxYzhlMmI0IDEwMDY0NAorLS0tIGEvanMvc3JjL2Zyb250ZW5kL0dlbmVyYXRlUmVzZXJ2ZWRXb3Jkcy5weQorKysrIGIvanMvc3JjL2Zyb250ZW5kL0dlbmVyYXRlUmVzZXJ2ZWRXb3Jkcy5weQorQEAgLTgwLDE0ICs4MCwxNCBAQCBkZWYgc3BsaXRfbGlzdF9wZXJfY29sdW1uKHJlc2VydmVkX3dvcmRfbGlzdCwgY29sdW1uKToKKyAgICAgICAgIHBlcl9jb2x1bW4gPSBjb2x1bW5fZGljdC5zZXRkZWZhdWx0KHdvcmRbY29sdW1uXSwgW10pCisgICAgICAgICBwZXJfY29sdW1uLmFwcGVuZChpdGVtKQorIAorLSAgICByZXR1cm4gc29ydGVkKGNvbHVtbl9kaWN0Lml0ZW1zKCksIGtleT1sYW1iZGEgKGNoYXIsIHdvcmQpOiBvcmQoY2hhcikpCisrICAgIHJldHVybiBzb3J0ZWQobGlzdChjb2x1bW5fZGljdC5pdGVtcygpKSwga2V5PWxhbWJkYSBjaGFyX3dvcmQ6IG9yZChjaGFyX3dvcmRbMF0pKQorIAorIGRlZiBnZW5lcmF0ZV9sZXR0ZXJfc3dpdGNoKG9wdCwgdW5wcm9jZXNzZWRfY29sdW1ucywgcmVzZXJ2ZWRfd29yZF9saXN0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbHVtbnM9Tm9uZSk6CisgICAgIGFzc2VydChsZW4ocmVzZXJ2ZWRfd29yZF9saXN0KSAhPSAwKTsKKyAKKyAgICAgaWYgbm90IGNvbHVtbnM6CistICAgICAgICBjb2x1bW5zID0gcmFuZ2UoMCwgdW5wcm9jZXNzZWRfY29sdW1ucykKKysgICAgICAgIGNvbHVtbnMgPSBsaXN0KHJhbmdlKDAsIHVucHJvY2Vzc2VkX2NvbHVtbnMpKQorIAorICAgICBpZiBsZW4ocmVzZXJ2ZWRfd29yZF9saXN0KSA9PSAxOgorICAgICAgICAgaW5kZXgsIHdvcmQgPSByZXNlcnZlZF93b3JkX2xpc3RbMF0KK0BAIC0xNjEsNyArMTYxLDcgQEAgZGVmIHNwbGl0X2xpc3RfcGVyX2xlbmd0aChyZXNlcnZlZF93b3JkX2xpc3QpOgorICAgICAgICAgcGVyX2xlbmd0aCA9IGxlbmd0aF9kaWN0LnNldGRlZmF1bHQobGVuKHdvcmQpLCBbXSkKKyAgICAgICAgIHBlcl9sZW5ndGguYXBwZW5kKGl0ZW0pCisgCistICAgIHJldHVybiBzb3J0ZWQobGVuZ3RoX2RpY3QuaXRlbXMoKSwga2V5PWxhbWJkYSAobGVuZ3RoLCB3b3JkKTogbGVuZ3RoKQorKyAgICByZXR1cm4gc29ydGVkKGxpc3QobGVuZ3RoX2RpY3QuaXRlbXMoKSksIGtleT1sYW1iZGEgbGVuZ3RoX3dvcmQ6IGxlbmd0aF93b3JkWzBdKQorIAorIGRlZiBnZW5lcmF0ZV9zd2l0Y2gob3B0LCByZXNlcnZlZF93b3JkX2xpc3QpOgorICAgICBhc3NlcnQobGVuKHJlc2VydmVkX3dvcmRfbGlzdCkgIT0gMCk7CitkaWZmIC0tZ2l0IGEvanMvc3JjL2djL0dlbmVyYXRlU3RhdHNQaGFzZXMucHkgYi9qcy9zcmMvZ2MvR2VuZXJhdGVTdGF0c1BoYXNlcy5weQoraW5kZXggMmRhZjgzNTU1Li5lMzlhMjZhNGIgMTAwNjQ0CistLS0gYS9qcy9zcmMvZ2MvR2VuZXJhdGVTdGF0c1BoYXNlcy5weQorKysrIGIvanMvc3JjL2djL0dlbmVyYXRlU3RhdHNQaGFzZXMucHkKK0BAIC0yNjcsNyArMjY3LDcgQEAgZGVmIGdlbmVyYXRlSGVhZGVyKG91dCk6CisgICAgICMKKyAgICAgIyBHZW5lcmF0ZSBQaGFzZUtpbmQgZW51bS4KKyAgICAgIworLSAgICBwaGFzZUtpbmROYW1lcyA9IG1hcChsYW1iZGEgcGhhc2VLaW5kOiBwaGFzZUtpbmQubmFtZSwgQWxsUGhhc2VLaW5kcykKKysgICAgcGhhc2VLaW5kTmFtZXMgPSBbcGhhc2VLaW5kLm5hbWUgZm9yIHBoYXNlS2luZCBpbiBBbGxQaGFzZUtpbmRzXQorICAgICBleHRyYVBoYXNlS2luZHMgPSBbCisgICAgICAgICAiTk9ORSA9IExJTUlUIiwKKyAgICAgICAgICJFWFBMSUNJVF9TVVNQRU5TSU9OID0gTElNSVQiLAorQEAgLTI3OSw3ICsyNzksNyBAQCBkZWYgZ2VuZXJhdGVIZWFkZXIob3V0KToKKyAgICAgIworICAgICAjIEdlbmVyYXRlIFBoYXNlIGVudW0uCisgICAgICMKKy0gICAgcGhhc2VOYW1lcyA9IG1hcChsYW1iZGEgcGhhc2U6IHBoYXNlLm5hbWUsIEFsbFBoYXNlcykKKysgICAgcGhhc2VOYW1lcyA9IFtwaGFzZS5uYW1lIGZvciBwaGFzZSBpbiBBbGxQaGFzZXNdCisgICAgIGV4dHJhUGhhc2VzID0gWworICAgICAgICAgIk5PTkUgPSBMSU1JVCIsCisgICAgICAgICAiRVhQTElDSVRfU1VTUEVOU0lPTiA9IExJTUlUIiwKK2RpZmYgLS1naXQgYS9qcy9zcmMvb2xkLWNvbmZpZ3VyZS5pbiBiL2pzL3NyYy9vbGQtY29uZmlndXJlLmluCitpbmRleCAxMWMzZDVhMmUuLjM4OTI2NTQwNCAxMDA2NDQKKy0tLSBhL2pzL3NyYy9vbGQtY29uZmlndXJlLmluCisrKysgYi9qcy9zcmMvb2xkLWNvbmZpZ3VyZS5pbgorQEAgLTE4ODQsMyArMTg4NCw1IEBAIGlmIHRlc3QgIiRKU19TVEFOREFMT05FIjsgdGhlbgorIGZpCisgCisgcm0gLWZyIGNvbmZkZWZzKiAkYWNfY2xlYW5fZmlsZXMKKytlY2hvIGNvbmZkZWZzKiAkYWNfY2xlYW5fZmlsZXMgcmVtb3ZlZAorK2VjaG8gIm9sZC1jb25maWd1cmUgZG9uZSIKK2RpZmYgLS1naXQgYS9tZW1vcnkvYnVpbGQvbW96LmJ1aWxkIGIvbWVtb3J5L2J1aWxkL21vei5idWlsZAoraW5kZXggZTJjNzE1MjcxLi5mMDljZTc5MzUgMTAwNjQ0CistLS0gYS9tZW1vcnkvYnVpbGQvbW96LmJ1aWxkCisrKysgYi9tZW1vcnkvYnVpbGQvbW96LmJ1aWxkCitAQCAtMzAsNyArMzAsNyBAQCBlbHNlOgorICAgICAgICAgJ2ZhbGxiYWNrLmNwcCcsCisgICAgIF0KKyAKKy1pZiBDT05GSUdbJ09TX1RBUkdFVCddID09ICdEYXJ3aW4nIGFuZCAoQ09ORklHWydNT1pfUkVQTEFDRV9NQUxMT0MnXSBvcgorK2lmIHN0cihDT05GSUdbJ09TX1RBUkdFVCddKSA9PSAnRGFyd2luJyBhbmQgKENPTkZJR1snTU9aX1JFUExBQ0VfTUFMTE9DJ10gb3IKKyAgICAgICAgIENPTkZJR1snTU9aX01FTU9SWSddKToKKyAgICAgU09VUkNFUyArPSBbCisgICAgICAgICAnem9uZS5jJywKK0BAIC0zOCwxNSArMzgsMTUgQEAgaWYgQ09ORklHWydPU19UQVJHRVQnXSA9PSAnRGFyd2luJyBhbmQgKENPTkZJR1snTU9aX1JFUExBQ0VfTUFMTE9DJ10gb3IKKyAKKyBMaWJyYXJ5KCdtZW1vcnknKQorIAorLWlmIENPTkZJR1snT1NfVEFSR0VUJ10gPT0gJ0FuZHJvaWQnIGFuZCBDT05GSUdbJ0NDX1RZUEUnXSA9PSAnY2xhbmcnOgorK2lmIHN0cihDT05GSUdbJ09TX1RBUkdFVCddKSA9PSAnQW5kcm9pZCcgYW5kIHN0cihDT05GSUdbJ0NDX1RZUEUnXSkgPT0gJ2NsYW5nJzoKKyAgICAgQ1hYRkxBR1MgKz0gWworICAgICAgICAgJy1Xbm8tdGF1dG9sb2dpY2FsLXBvaW50ZXItY29tcGFyZScsCisgICAgIF0KKyAKKy1pZiBDT05GSUdbJ01PWl9CVUlMRF9BUFAnXSAhPSAnbWVtb3J5JzoKKytpZiBzdHIoQ09ORklHWydNT1pfQlVJTERfQVBQJ10pICE9ICdtZW1vcnknOgorICAgICBGSU5BTF9MSUJSQVJZID0gJ21vemdsdWUnCisgCistaWYgQ09ORklHWydDQ19UWVBFJ10gaW4gKCdtc3ZjJywgJ2NsYW5nLWNsJyk6CisraWYgc3RyKENPTkZJR1snQ0NfVFlQRSddKSBpbiAoJ21zdmMnLCAnY2xhbmctY2wnKToKKyAgICAgQ1hYRkxBR1MgKz0gWyctd2Q0MjczJ10gIyBpbmNvbnNpc3RlbnQgZGxsIGxpbmthZ2UgKGJ1ZyA1NTgxNjMpCisgCisgaWYgQ09ORklHWydNT1pfUkVQTEFDRV9NQUxMT0NfU1RBVElDJ106CitkaWZmIC0tZ2l0IGEvbW96Z2x1ZS9idWlsZC9tb3ouYnVpbGQgYi9tb3pnbHVlL2J1aWxkL21vei5idWlsZAoraW5kZXggNTM3NTg0ODVhLi41ZTkzMDg4MDIgMTAwNjQ0CistLS0gYS9tb3pnbHVlL2J1aWxkL21vei5idWlsZAorKysrIGIvbW96Z2x1ZS9idWlsZC9tb3ouYnVpbGQKK0BAIC05LDEyICs5LDEyIEBACisgIyBJZiB0aGlzIGlzIGV2ZXIgY2hhbmdlZCwgdXBkYXRlIE1PWl9TSEFSRURfTU9aR0xVRSBpbiBicm93c2VyL2luc3RhbGxlci9NYWtlZmlsZS5pbgorIGlmIENPTkZJR1snSlNfU1RBTkRBTE9ORSddIGFuZCBub3QgQ09ORklHWydNT1pfTUVNT1JZJ106CisgICAgIExpYnJhcnkoJ21vemdsdWUnKQorLWVsaWYgQ09ORklHWydPU19UQVJHRVQnXSBpbiAoJ1dJTk5UJywgJ0RhcndpbicsICdBbmRyb2lkJyk6CisrZWxpZiBzdHIoQ09ORklHWydPU19UQVJHRVQnXSkgaW4gKCdXSU5OVCcsICdEYXJ3aW4nLCAnQW5kcm9pZCcpOgorICAgICBTaGFyZWRMaWJyYXJ5KCdtb3pnbHVlJykKKyBlbHNlOgorICAgICBMaWJyYXJ5KCdtb3pnbHVlJykKKyAKKy1pZiBDT05GSUdbJ09TX1RBUkdFVCddID09ICdBbmRyb2lkJzoKKytpZiBzdHIoQ09ORklHWydPU19UQVJHRVQnXSkgPT0gJ0FuZHJvaWQnOgorICAgICBTT1VSQ0VTICs9IFsKKyAgICAgICAgICdCaW9uaWNHbHVlLmNwcCcsCisgICAgIF0KK0BAIC0yNCwxNCArMjQsMTQgQEAgaWYgQ09ORklHWydNT1pfQVNBTiddOgorICAgICAgICAgJ0FzYW5PcHRpb25zLmNwcCcsCisgICAgIF0KKyAKKy1pZiBDT05GSUdbJ09TX1RBUkdFVCddID09ICdXSU5OVCc6CisraWYgc3RyKENPTkZJR1snT1NfVEFSR0VUJ10pID09ICdXSU5OVCc6CisgICAgIERFRkZJTEUgPSAnbW96Z2x1ZS5kZWYnCisgICAgICMgV2UnbGwgYnJlYWsgdGhlIERMTCBibG9ja2xpc3QgaWYgd2UgaW1tZWRpYXRlbHkgbG9hZCB1c2VyMzIuZGxsCisgICAgIERFTEFZTE9BRF9ETExTICs9IFsKKyAgICAgICAgICd1c2VyMzIuZGxsJywKKyAgICAgXQorIAorLSAgICBpZiBDT05GSUdbJ0NDX1RZUEUnXSA9PSAibXN2YyI6CisrICAgIGlmIHN0cihDT05GSUdbJ0NDX1RZUEUnXSkgPT0gIm1zdmMiOgorICAgICAgICAgQ0ZMQUdTICs9IFsnLWd1YXJkOmNmJ10KKyAgICAgICAgIENYWEZMQUdTICs9IFsnLWd1YXJkOmNmJ10KKyAgICAgICAgIExERkxBR1MgKz0gWyctZ3VhcmQ6Y2YnXQorQEAgLTQ4LDEyICs0OCwxMiBAQCBpZiBDT05GSUdbJ01PWl9XSURHRVRfVE9PTEtJVCddOgorICAgICAgICAgICAgICdkdW1teS5jcHAnLAorICAgICAgICAgXQorIAorLSAgICBpZiBDT05GSUdbJ09TX1RBUkdFVCddID09ICdXSU5OVCc6CisrICAgIGlmIHN0cihDT05GSUdbJ09TX1RBUkdFVCddKSA9PSAnV0lOTlQnOgorICAgICAgICAgTE9DQUxfSU5DTFVERVMgKz0gWworICAgICAgICAgICAgICcvbWVtb3J5L2J1aWxkJywKKyAgICAgICAgIF0KKyAKKy0gICAgICAgIGlmIENPTkZJR1snQ0NfVFlQRSddID09ICJtc3ZjIjoKKysgICAgICAgIGlmIHN0cihDT05GSUdbJ0NDX1RZUEUnXSkgPT0gIm1zdmMiOgorICAgICAgICAgICAgIFNPVVJDRVMgKz0gWydXaW5kb3dzQ0ZHU3RhdHVzLmNwcCddCisgICAgICAgICBTT1VSQ0VTICs9IFsKKyAgICAgICAgICAgICAnQXV0aGVudGljb2RlLmNwcCcsCitAQCAtODUsMTcgKzg1LDE3IEBAIGlmIENPTkZJR1snTU9aX1dJREdFVF9UT09MS0lUJ106CisgICAgICAgICAnV2luZG93c0RsbEJsb2NrbGlzdC5oJywKKyAgICAgXQorIAorLSAgICBpZiBDT05GSUdbJ0NQVV9BUkNIJ10uc3RhcnRzd2l0aCgneDg2Jyk6CisrICAgIGlmIHN0cihDT05GSUdbJ0NQVV9BUkNIJ10pLnN0YXJ0c3dpdGgoJ3g4NicpOgorICAgICAgICAgU09VUkNFUyArPSBbCisgICAgICAgICAgICAgJ1NTRS5jcHAnLAorICAgICAgICAgXQorIAorLSAgICBpZiBDT05GSUdbJ0NQVV9BUkNIJ10gPT0gJ2FybSc6CisrICAgIGlmIHN0cihDT05GSUdbJ0NQVV9BUkNIJ10pID09ICdhcm0nOgorICAgICAgICAgU09VUkNFUyArPSBbCisgICAgICAgICAgICAgJ2FybS5jcHAnLAorICAgICAgICAgXQorIAorLSAgICBpZiBDT05GSUdbJ0NQVV9BUkNIJ10uc3RhcnRzd2l0aCgnbWlwcycpOgorKyAgICBpZiBzdHIoQ09ORklHWydDUFVfQVJDSCddKS5zdGFydHN3aXRoKCdtaXBzJyk6CisgICAgICAgICBTT1VSQ0VTICs9IFsKKyAgICAgICAgICAgICAnbWlwcy5jcHAnLAorICAgICAgICAgXQorQEAgLTExNCw3ICsxMTQsNyBAQCBMSUJSQVJZX0RFRklORVNbJ01PWl9IQVNfTU9aR0xVRSddID0gVHJ1ZQorIAorIExERkxBR1MgKz0gQ09ORklHWydNT1pfR0xVRV9XUkFQX0xERkxBR1MnXQorIAorLWlmIENPTkZJR1snT1NfVEFSR0VUJ10gPT0gJ0Rhcndpbic6CisraWYgc3RyKENPTkZJR1snT1NfVEFSR0VUJ10pID09ICdEYXJ3aW4nOgorICAgICAjIE9uIE9TWCAxMC4xMC4zLCBhIGRlYWQgbG9jayBoYXBwZW5zIGluIHNvbWUgY2FzZXMgaW52b2x2aW5nIGR5bmFtaWMKKyAgICAgIyBzeW1ib2wgcmVzb2x1dGlvbiBmb3Igc3ltYm9scyB0aGF0IGplbWFsbG9jIGl0c2VsZiB1c2VzLiBXaGlsZSBpdAorICAgICAjIG1pZ2h0IGJlIHBvc3NpYmxlIHRvIGZpbmQgYSB3YXkgdG8gYXZvaWQgYWxsIHN1Y2ggc3ltYm9sIHJlc29sdXRpb25zLAorQEAgLTEyNCw3ICsxMjQsNyBAQCBpZiBDT05GSUdbJ09TX1RBUkdFVCddID09ICdEYXJ3aW4nOgorICAgICAjIGZvciBUTFMuCisgICAgIExERkxBR1MgKz0gWyctV2wsLWJpbmRfYXRfbG9hZCddCisgCistaWYgQ09ORklHWydNT1pfTElOS0VSJ10gYW5kIENPTkZJR1snVEFSR0VUX0NQVSddID09ICdhcm0nOgorK2lmIENPTkZJR1snTU9aX0xJTktFUiddIGFuZCBzdHIoQ09ORklHWydUQVJHRVRfQ1BVJ10pID09ICdhcm0nOgorICAgICBMREZMQUdTICs9IFsnLVdsLC12ZXJzaW9uLXNjcmlwdCwlcy9hcm0tZWFiaS1maWx0ZXInICUgU1JDRElSXQorIAorIERJU1RfSU5TVEFMTCA9IFRydWUKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYWN0aW9uL2NoZWNrX2JpbmFyeS5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9hY3Rpb24vY2hlY2tfYmluYXJ5LnB5CitpbmRleCA1NjY1ZWYwNTMuLmI2OTZmNzNkNiAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9hY3Rpb24vY2hlY2tfYmluYXJ5LnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYWN0aW9uL2NoZWNrX2JpbmFyeS5weQorQEAgLTEwNCw2ICsxMDQsOCBAQCBkZWYgaXRlcl9yZWFkZWxmX3N5bWJvbHModGFyZ2V0LCBiaW5hcnkpOgorIAorIGRlZiBpdGVyX3JlYWRlbGZfZHluYW1pYyh0YXJnZXQsIGJpbmFyeSk6CisgICAgIGZvciBsaW5lIGluIGdldF9vdXRwdXQodGFyZ2V0WydyZWFkZWxmJ10sICctZCcsIGJpbmFyeSk6CisrICAgICAgICBpZiBpc2luc3RhbmNlKGxpbmUsIGJ5dGVzKToKKysgICAgICAgICAgICBsaW5lPWxpbmUuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgICBkYXRhID0gbGluZS5zcGxpdChOb25lLCAyKQorICAgICAgICAgaWYgZGF0YSBhbmQgbGVuKGRhdGEpID09IDMgYW5kIGRhdGFbMF0uc3RhcnRzd2l0aCgnMHgnKToKKyAgICAgICAgICAgICB5aWVsZCBkYXRhWzFdLnJzdHJpcCgnKScpLmxzdHJpcCgnKCcpLCBkYXRhWzJdCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2FjdGlvbi9wcm9jZXNzX2RlZmluZV9maWxlcy5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9hY3Rpb24vcHJvY2Vzc19kZWZpbmVfZmlsZXMucHkKK2luZGV4IDU2M2ZiYjhmYS4uYzNkZjI4NjliIDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2FjdGlvbi9wcm9jZXNzX2RlZmluZV9maWxlcy5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2FjdGlvbi9wcm9jZXNzX2RlZmluZV9maWxlcy5weQorQEAgLTIsNyArMiw3IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbiwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCBhcmdwYXJzZQorIGltcG9ydCBvcworQEAgLTUzLDcgKzUzLDcgQEAgZGVmIHByb2Nlc3NfZGVmaW5lX2ZpbGUob3V0cHV0LCBpbnB1dCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ09ORklHVVJFX0RFRklORV9GSUxFJykKKyAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVzID0gJ1xuJy5qb2luKHNvcnRlZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyNkZWZpbmUgJXMgJXMnICUgKG5hbWUsIHZhbCkKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbCBpbiBjb25maWcuZGVmaW5lc1snQUxMREVGSU5FUyddLml0ZXJpdGVtcygpKSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbCBpbiBjb25maWcuZGVmaW5lc1snQUxMREVGSU5FUyddLml0ZW1zKCkpKQorICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBsWzptLnN0YXJ0KCdjbWQnKSAtIDFdIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKyBkZWZpbmVzICsgbFttLmVuZCgnbmFtZScpOl0KKyAgICAgICAgICAgICAgICAgICAgIGVsaWYgY21kID09ICdkZWZpbmUnOgorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9iYWNrZW5kL2Jhc2UucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYmFja2VuZC9iYXNlLnB5CitpbmRleCBhOGQ1Yzk0ZTAuLjdjZGE2MzQ3NSAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9iYWNrZW5kL2Jhc2UucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9iYWNrZW5kL2Jhc2UucHkKK0BAIC0yLDcgKzIsNyBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscworKworIAorIGZyb20gYWJjIGltcG9ydCAoCisgICAgIEFCQ01ldGEsCitAQCAtMzEsNyArMzEsNyBAQCBmcm9tIC5jb25maWdlbnZpcm9ubWVudCBpbXBvcnQgQ29uZmlnRW52aXJvbm1lbnQKKyBmcm9tIG1vemJ1aWxkLmJhc2UgaW1wb3J0IEV4ZWN1dGlvblN1bW1hcnkKKyAKKyAKKy1jbGFzcyBCdWlsZEJhY2tlbmQoTG9nZ2luZ01peGluKToKKytjbGFzcyBCdWlsZEJhY2tlbmQoTG9nZ2luZ01peGluLCBtZXRhY2xhc3M9QUJDTWV0YSk6CisgICAgICIiIkFic3RyYWN0IGJhc2UgY2xhc3MgZm9yIGJ1aWxkIGJhY2tlbmRzLgorIAorICAgICBBIGJ1aWxkIGJhY2tlbmQgaXMgbWVyZWx5IGEgY29uc3VtZXIgb2YgdGhlIGJ1aWxkIGNvbmZpZ3VyYXRpb24gKHRoZSBvdXRwdXQKK0BAIC0zOSw4ICszOSw2IEBAIGNsYXNzIEJ1aWxkQmFja2VuZChMb2dnaW5nTWl4aW4pOgorICAgICBpcyB0aGUgZGlzY3JldGlvbiBvZiB0aGUgc3BlY2lmaWMgaW1wbGVtZW50YXRpb24uCisgICAgICIiIgorIAorLSAgICBfX21ldGFjbGFzc19fID0gQUJDTWV0YQorLQorICAgICBkZWYgX19pbml0X18oc2VsZiwgZW52aXJvbm1lbnQpOgorICAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZW52aXJvbm1lbnQsIChDb25maWdFbnZpcm9ubWVudCwgRW1wdHlDb25maWcpKQorICAgICAgICAgc2VsZi5wb3B1bGF0ZV9sb2dnZXIoKQorQEAgLTMxMSw3ICszMDksNyBAQCBjbGFzcyBCdWlsZEJhY2tlbmQoTG9nZ2luZ01peGluKToKKyAgICAgICAgIHNyY2RpciA9IG1venBhdGguZGlybmFtZShvYmouaW5wdXRfcGF0aCkKKyAgICAgICAgIHBwLmNvbnRleHQudXBkYXRlKHsKKyAgICAgICAgICAgICBrOiAnICcuam9pbih2KSBpZiBpc2luc3RhbmNlKHYsIGxpc3QpIGVsc2UgdgorLSAgICAgICAgICAgIGZvciBrLCB2IGluIG9iai5jb25maWcuc3Vic3RzLml0ZXJpdGVtcygpCisrICAgICAgICAgICAgZm9yIGssIHYgaW4gb2JqLmNvbmZpZy5zdWJzdHMuaXRlbXMoKQorICAgICAgICAgfSkKKyAgICAgICAgIHBwLmNvbnRleHQudXBkYXRlKAorICAgICAgICAgICAgIHRvcF9zcmNkaXI9b2JqLnRvcHNyY2RpciwKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYmFja2VuZC9jb21tb24ucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYmFja2VuZC9jb21tb24ucHkKK2luZGV4IGQwMGNiYmNhZi4uZjc0N2RmNDQ2IDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvY29tbW9uLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYmFja2VuZC9jb21tb24ucHkKK0BAIC0yLDcgKzIsNyBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCBqc29uCisgaW1wb3J0IG9zCitAQCAtMTc0LDcgKzE3NCw3IEBAIGNsYXNzIENvbW1vbkJhY2tlbmQoQnVpbGRCYWNrZW5kKToKKyAgICAgICAgIGlmIGxlbihzZWxmLl9pZGxfbWFuYWdlci5pZGxzKToKKyAgICAgICAgICAgICBzZWxmLl93cml0ZV9ydXN0X3hwaWRsX3N1bW1hcnkoc2VsZi5faWRsX21hbmFnZXIpCisgICAgICAgICAgICAgc2VsZi5faGFuZGxlX2lkbF9tYW5hZ2VyKHNlbGYuX2lkbF9tYW5hZ2VyKQorLSAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9nZW5lcmF0ZWRfc291cmNlcyhtb3pwYXRoLmpvaW4oc2VsZi5lbnZpcm9ubWVudC50b3BvYmpkaXIsICdkaXN0L2luY2x1ZGUvJXMuaCcgJSBpZGxbJ3Jvb3QnXSkgZm9yIGlkbCBpbiBzZWxmLl9pZGxfbWFuYWdlci5pZGxzLnZhbHVlcygpKQorKyAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9nZW5lcmF0ZWRfc291cmNlcyhtb3pwYXRoLmpvaW4oc2VsZi5lbnZpcm9ubWVudC50b3BvYmpkaXIsICdkaXN0L2luY2x1ZGUvJXMuaCcgJSBpZGxbJ3Jvb3QnXSkgZm9yIGlkbCBpbiBsaXN0KHNlbGYuX2lkbF9tYW5hZ2VyLmlkbHMudmFsdWVzKCkpKQorIAorIAorICAgICAgICAgZm9yIGNvbmZpZyBpbiBzZWxmLl9jb25maWdzOgorQEAgLTM3MiwxNCArMzcyLDE0IEBAIGNsYXNzIENvbW1vbkJhY2tlbmQoQnVpbGRCYWNrZW5kKToKKyAKKyAgICAgICAgIHdpdGggc2VsZi5fd3JpdGVfZmlsZShtb3pwYXRoLmpvaW4odG9wb2JqZGlyLCAnZGlzdCcsICd4cGNycycsICdydCcsICdhbGwucnMnKSkgYXMgZmg6CisgICAgICAgICAgICAgZmgud3JpdGUoIi8vIFRISVMgRklMRSBJUyBHRU5FUkFURUQgLSBETyBOT1QgRURJVFxuXG4iKQorLSAgICAgICAgICAgIGZvciBpZGwgaW4gbWFuYWdlci5pZGxzLnZhbHVlcygpOgorKyAgICAgICAgICAgIGZvciBpZGwgaW4gbGlzdChtYW5hZ2VyLmlkbHMudmFsdWVzKCkpOgorICAgICAgICAgICAgICAgICBmaC53cml0ZShpbmNsdWRlX3RtcGwgJSAoInJ0IiwgaWRsWydyb290J10pKQorICAgICAgICAgICAgICAgICBmaC53cml0ZSgiO1xuIikKKyAKKyAgICAgICAgIHdpdGggc2VsZi5fd3JpdGVfZmlsZShtb3pwYXRoLmpvaW4odG9wb2JqZGlyLCAnZGlzdCcsICd4cGNycycsICdidCcsICdhbGwucnMnKSkgYXMgZmg6CisgICAgICAgICAgICAgZmgud3JpdGUoIi8vIFRISVMgRklMRSBJUyBHRU5FUkFURUQgLSBETyBOT1QgRURJVFxuXG4iKQorICAgICAgICAgICAgIGZoLndyaXRlKCImW1xuIikKKy0gICAgICAgICAgICBmb3IgaWRsIGluIG1hbmFnZXIuaWRscy52YWx1ZXMoKToKKysgICAgICAgICAgICBmb3IgaWRsIGluIGxpc3QobWFuYWdlci5pZGxzLnZhbHVlcygpKToKKyAgICAgICAgICAgICAgICAgZmgud3JpdGUoaW5jbHVkZV90bXBsICUgKCJidCIsIGlkbFsncm9vdCddKSkKKyAgICAgICAgICAgICAgICAgZmgud3JpdGUoIixcbiIpCisgICAgICAgICAgICAgZmgud3JpdGUoIl1cbiIpCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvY29uZmlnZW52aXJvbm1lbnQucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYmFja2VuZC9jb25maWdlbnZpcm9ubWVudC5weQoraW5kZXggMzY3NmE3ZDE4Li5mMDg5NmNlYTQgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYmFja2VuZC9jb25maWdlbnZpcm9ubWVudC5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvY29uZmlnZW52aXJvbm1lbnQucHkKK0BAIC0yLDE0ICsyLDE0IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisrCisgCisgaW1wb3J0IG9zCisgaW1wb3J0IHN5cworIGltcG9ydCBqc29uCisgCisgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgSXRlcmFibGUsIE9yZGVyZWREaWN0CistZnJvbSB0eXBlcyBpbXBvcnQgU3RyaW5nVHlwZXMsIE1vZHVsZVR5cGUKKytmcm9tIHR5cGVzIGltcG9ydCBNb2R1bGVUeXBlCisgCisgaW1wb3J0IG1venBhY2sucGF0aCBhcyBtb3pwYXRoCisgCitAQCAtMjIsNyArMjIsNyBAQCBmcm9tIG1vemJ1aWxkLnNoZWxsdXRpbCBpbXBvcnQgcXVvdGUgYXMgc2hlbGxfcXVvdGUKKyAKKyAKKyBpZiBzeXMudmVyc2lvbl9pbmZvLm1ham9yID09IDI6CistICAgIHRleHRfdHlwZSA9IHVuaWNvZGUKKysgICAgdGV4dF90eXBlID0gc3RyCisgZWxzZToKKyAgICAgdGV4dF90eXBlID0gc3RyCisgCitAQCAtMTUxLDcgKzE1MSw3IEBAIGNsYXNzIENvbmZpZ0Vudmlyb25tZW50KG9iamVjdCk6CisgICAgICAgICAgICAgc2hlbGxfcXVvdGUoc2VsZi5kZWZpbmVzW25hbWVdKS5yZXBsYWNlKCckJywgJyQkJykpCisgICAgICAgICAgICAgZm9yIG5hbWUgaW4gc29ydGVkKGdsb2JhbF9kZWZpbmVzKV0pCisgICAgICAgICBkZWYgc2VyaWFsaXplKG5hbWUsIG9iaik6CistICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIFN0cmluZ1R5cGVzKToKKysgICAgICAgICAgICBpZiBpc2luc3RhbmNlKG9iaiwgc3RyKToKKyAgICAgICAgICAgICAgICAgcmV0dXJuIG9iagorICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBJdGVyYWJsZSk6CisgICAgICAgICAgICAgICAgIHJldHVybiAnICcuam9pbihvYmopCitAQCAtMTg1LDggKzE4NSw4IEBAIGNsYXNzIENvbmZpZ0Vudmlyb25tZW50KG9iamVjdCk6CisgICAgICAgICAgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gdi5kZWNvZGUoJ3V0Zi04JywgJ3JlcGxhY2UnKQorIAorLSAgICAgICAgZm9yIGssIHYgaW4gc2VsZi5zdWJzdHMuaXRlbXMoKToKKy0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh2LCBTdHJpbmdUeXBlcyk6CisrICAgICAgICBmb3IgaywgdiBpbiBsaXN0KHNlbGYuc3Vic3RzLml0ZW1zKCkpOgorKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHYsIHN0cik6CisgICAgICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodiwgSXRlcmFibGUpOgorICAgICAgICAgICAgICAgICAgICAgdHlwZSh2KShkZWNvZGUoaSkgZm9yIGkgaW4gdikKKyAgICAgICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHYsIHRleHRfdHlwZSk6CitAQCAtMjU1LDcgKzI1NSw3IEBAIGNsYXNzIFBhcnRpYWxDb25maWdEaWN0KG9iamVjdCk6CisgICAgICAgICBleGlzdGluZ19maWxlcyA9IHNlbGYuX2xvYWRfY29uZmlnX3RyYWNrKCkKKyAKKyAgICAgICAgIG5ld19maWxlcyA9IHNldCgpCistICAgICAgICBmb3IgaywgdiBpbiB2YWx1ZXMuaXRlcml0ZW1zKCk6CisrICAgICAgICBmb3IgaywgdiBpbiB2YWx1ZXMuaXRlbXMoKToKKyAgICAgICAgICAgICBuZXdfZmlsZXMuYWRkKHNlbGYuX3dyaXRlX2ZpbGUoaywgdikpCisgCisgICAgICAgICBmb3IgZmlsZW5hbWUgaW4gZXhpc3RpbmdfZmlsZXMgLSBuZXdfZmlsZXM6CitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvZmFzdGVybWFrZS5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9iYWNrZW5kL2Zhc3Rlcm1ha2UucHkKK2luZGV4IGIwMjlhYTEwZi4uYjY2YWRlNjRmIDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvZmFzdGVybWFrZS5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvZmFzdGVybWFrZS5weQorQEAgLTIsNyArMiw3IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCB1bmljb2RlX2xpdGVyYWxzLCBwcmludF9mdW5jdGlvbgorKworIAorIGZyb20gbW96YnVpbGQuYmFja2VuZC5iYXNlIGltcG9ydCBQYXJ0aWFsQmFja2VuZAorIGZyb20gbW96YnVpbGQuYmFja2VuZC5jb21tb24gaW1wb3J0IENvbW1vbkJhY2tlbmQKK0BAIC0xNDAsNyArMTQwLDcgQEAgY2xhc3MgRmFzdGVyTWFrZUJhY2tlbmQoQ29tbW9uQmFja2VuZCwgUGFydGlhbEJhY2tlbmQpOgorICAgICAgICAgIyBBZGQgaW5mb3JtYXRpb24gZm9yIGNocm9tZSBtYW5pZmVzdCBnZW5lcmF0aW9uCisgICAgICAgICBtYW5pZmVzdF90YXJnZXRzID0gW10KKyAKKy0gICAgICAgIGZvciB0YXJnZXQsIGVudHJpZXMgaW4gc2VsZi5fbWFuaWZlc3RfZW50cmllcy5pdGVyaXRlbXMoKToKKysgICAgICAgIGZvciB0YXJnZXQsIGVudHJpZXMgaW4gc2VsZi5fbWFuaWZlc3RfZW50cmllcy5pdGVtcygpOgorICAgICAgICAgICAgIG1hbmlmZXN0X3RhcmdldHMuYXBwZW5kKHRhcmdldCkKKyAgICAgICAgICAgICBpbnN0YWxsX3RhcmdldCA9IG1venBhdGguYmFzZWRpcih0YXJnZXQsIGluc3RhbGxfbWFuaWZlc3RzX2Jhc2VzKQorICAgICAgICAgICAgIHNlbGYuX2luc3RhbGxfbWFuaWZlc3RzW2luc3RhbGxfdGFyZ2V0XS5hZGRfY29udGVudCgKK0BAIC0xNTIsMTMgKzE1MiwxMyBAQCBjbGFzcyBGYXN0ZXJNYWtlQmFja2VuZChDb21tb25CYWNrZW5kLCBQYXJ0aWFsQmFja2VuZCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICUgJyAnLmpvaW4oc2VsZi5faW5zdGFsbF9tYW5pZmVzdHMua2V5cygpKSkKKyAKKyAgICAgICAgICMgQWRkIGRlcGVuZGVuY2llcyB3ZSBpbmZlcmVkOgorLSAgICAgICAgZm9yIHRhcmdldCwgZGVwcyBpbiBzZWxmLl9kZXBlbmRlbmNpZXMuaXRlcml0ZW1zKCk6CisrICAgICAgICBmb3IgdGFyZ2V0LCBkZXBzIGluIHNlbGYuX2RlcGVuZGVuY2llcy5pdGVtcygpOgorICAgICAgICAgICAgIG1rLmNyZWF0ZV9ydWxlKFt0YXJnZXRdKS5hZGRfZGVwZW5kZW5jaWVzKAorICAgICAgICAgICAgICAgICAnJChUT1BPQkpESVIpLyVzJyAlIGQgZm9yIGQgaW4gZGVwcykKKyAKKyAgICAgICAgIG1rLmFkZF9zdGF0ZW1lbnQoJ2luY2x1ZGUgJChUT1BTUkNESVIpL2NvbmZpZy9mYXN0ZXIvcnVsZXMubWsnKQorIAorLSAgICAgICAgZm9yIGJhc2UsIGluc3RhbGxfbWFuaWZlc3QgaW4gc2VsZi5faW5zdGFsbF9tYW5pZmVzdHMuaXRlcml0ZW1zKCk6CisrICAgICAgICBmb3IgYmFzZSwgaW5zdGFsbF9tYW5pZmVzdCBpbiBzZWxmLl9pbnN0YWxsX21hbmlmZXN0cy5pdGVtcygpOgorICAgICAgICAgICAgIHdpdGggc2VsZi5fd3JpdGVfZmlsZSgKKyAgICAgICAgICAgICAgICAgICAgIG1venBhdGguam9pbihzZWxmLmVudmlyb25tZW50LnRvcG9iamRpciwgJ2Zhc3RlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbGxfJXMnICUgYmFzZS5yZXBsYWNlKCcvJywgJ18nKSkpIGFzIGZoOgorQEAgLTE2Nyw3ICsxNjcsNyBAQCBjbGFzcyBGYXN0ZXJNYWtlQmFja2VuZChDb21tb25CYWNrZW5kLCBQYXJ0aWFsQmFja2VuZCk6CisgICAgICAgICAjIEZvciBhcnRpZmFjdCBidWlsZHMgb25seSwgd3JpdGUgYSBzaW5nbGUgdW5pZmllZCBtYW5pZmVzdCBmb3IgY29uc3VtcHRpb24gYnkgfG1hY2ggd2F0Y2h8LgorICAgICAgICAgaWYgc2VsZi5lbnZpcm9ubWVudC5pc19hcnRpZmFjdF9idWlsZDoKKyAgICAgICAgICAgICB1bmlmaWVkX21hbmlmZXN0ID0gSW5zdGFsbE1hbmlmZXN0KCkKKy0gICAgICAgICAgICBmb3IgYmFzZSwgaW5zdGFsbF9tYW5pZmVzdCBpbiBzZWxmLl9pbnN0YWxsX21hbmlmZXN0cy5pdGVyaXRlbXMoKToKKysgICAgICAgICAgICBmb3IgYmFzZSwgaW5zdGFsbF9tYW5pZmVzdCBpbiBzZWxmLl9pbnN0YWxsX21hbmlmZXN0cy5pdGVtcygpOgorICAgICAgICAgICAgICAgICAjIEV4cGVjdCAnZGlzdC9iaW4vKionLCB3aGljaCBpbmNsdWRlcyAnZGlzdC9iaW4nIHdpdGggbm8gdHJhaWxpbmcgc2xhc2guCisgICAgICAgICAgICAgICAgIGFzc2VydCBiYXNlLnN0YXJ0c3dpdGgoJ2Rpc3QvYmluJykKKyAgICAgICAgICAgICAgICAgYmFzZSA9IGJhc2VbbGVuKCdkaXN0L2JpbicpOl0KK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYmFja2VuZC9yZWN1cnNpdmVtYWtlLnB5IGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2JhY2tlbmQvcmVjdXJzaXZlbWFrZS5weQoraW5kZXggZGQ5MDIwZDYyLi5hYTg5Y2MyOTcgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYmFja2VuZC9yZWN1cnNpdmVtYWtlLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvYmFja2VuZC9yZWN1cnNpdmVtYWtlLnB5CitAQCAtMiw3ICsyLDcgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKKyAjIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIHVuaWNvZGVfbGl0ZXJhbHMKKysKKyAKKyBpbXBvcnQgbG9nZ2luZworIGltcG9ydCBvcworQEAgLTEyLDcgKzEyLDcgQEAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgKAorICAgICBkZWZhdWx0ZGljdCwKKyAgICAgbmFtZWR0dXBsZSwKKyApCistZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KKytmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworIGZyb20gaXRlcnRvb2xzIGltcG9ydCBjaGFpbgorIAorIGZyb20gbW96cGFjay5tYW5pZmVzdHMgaW1wb3J0ICgKK0BAIC04MCw3NSArODAsNzYgQEAgZnJvbSAuLnV0aWwgaW1wb3J0ICgKKyApCisgZnJvbSAuLm1ha2V1dGlsIGltcG9ydCBNYWtlZmlsZQorIGZyb20gbW96YnVpbGQuc2hlbGx1dGlsIGltcG9ydCBxdW90ZSBhcyBzaGVsbF9xdW90ZQorK2Zyb20gZnVuY3Rvb2xzIGltcG9ydCByZWR1Y2UKKyAKKyBNT1pCVUlMRF9WQVJJQUJMRVMgPSBbCistICAgIGInQVNGTEFHUycsCistICAgIGInQ01TUkNTJywKKy0gICAgYidDTU1TUkNTJywKKy0gICAgYidDUFBfVU5JVF9URVNUUycsCistICAgIGInRElSUycsCistICAgIGInRElTVF9JTlNUQUxMJywKKy0gICAgYidFWFRSQV9EU09fTERPUFRTJywKKy0gICAgYidFWFRSQV9KU19NT0RVTEVTJywKKy0gICAgYidFWFRSQV9QUF9DT01QT05FTlRTJywKKy0gICAgYidFWFRSQV9QUF9KU19NT0RVTEVTJywKKy0gICAgYidGT1JDRV9TSEFSRURfTElCJywKKy0gICAgYidGT1JDRV9TVEFUSUNfTElCJywKKy0gICAgYidGSU5BTF9MSUJSQVJZJywKKy0gICAgYidIT1NUX0NGTEFHUycsCistICAgIGInSE9TVF9DU1JDUycsCistICAgIGInSE9TVF9DTU1TUkNTJywKKy0gICAgYidIT1NUX0NYWEZMQUdTJywKKy0gICAgYidIT1NUX0VYVFJBX0xJQlMnLAorLSAgICBiJ0hPU1RfTElCUkFSWV9OQU1FJywKKy0gICAgYidIT1NUX1BST0dSQU0nLAorLSAgICBiJ0hPU1RfU0lNUExFX1BST0dSQU1TJywKKy0gICAgYidKQVJfTUFOSUZFU1QnLAorLSAgICBiJ0pBVkFfSkFSX1RBUkdFVFMnLAorLSAgICBiJ0xJQlJBUllfTkFNRScsCistICAgIGInTElCUycsCistICAgIGInTUFLRV9GUkFNRVdPUksnLAorLSAgICBiJ01PRFVMRScsCistICAgIGInTk9fRElTVF9JTlNUQUxMJywKKy0gICAgYidOT19FWFBBTkRfTElCUycsCistICAgIGInTk9fSU5URVJGQUNFU19NQU5JRkVTVCcsCistICAgIGInTk9fSlNfTUFOSUZFU1QnLAorLSAgICBiJ09TX0xJQlMnLAorLSAgICBiJ1BBUkFMTEVMX0RJUlMnLAorLSAgICBiJ1BSRUZfSlNfRVhQT1JUUycsCistICAgIGInUFJPR1JBTScsCistICAgIGInUkVTT1VSQ0VfRklMRVMnLAorLSAgICBiJ1NIQVJFRF9MSUJSQVJZX0xJQlMnLAorLSAgICBiJ1NIQVJFRF9MSUJSQVJZX05BTUUnLAorLSAgICBiJ1NJTVBMRV9QUk9HUkFNUycsCistICAgIGInU09OQU1FJywKKy0gICAgYidTVEFUSUNfTElCUkFSWV9OQU1FJywKKy0gICAgYidURVNUX0RJUlMnLAorLSAgICBiJ1RPT0xfRElSUycsCisrICAgICdBU0ZMQUdTJywKKysgICAgJ0NNU1JDUycsCisrICAgICdDTU1TUkNTJywKKysgICAgJ0NQUF9VTklUX1RFU1RTJywKKysgICAgJ0RJUlMnLAorKyAgICAnRElTVF9JTlNUQUxMJywKKysgICAgJ0VYVFJBX0RTT19MRE9QVFMnLAorKyAgICAnRVhUUkFfSlNfTU9EVUxFUycsCisrICAgICdFWFRSQV9QUF9DT01QT05FTlRTJywKKysgICAgJ0VYVFJBX1BQX0pTX01PRFVMRVMnLAorKyAgICAnRk9SQ0VfU0hBUkVEX0xJQicsCisrICAgICdGT1JDRV9TVEFUSUNfTElCJywKKysgICAgJ0ZJTkFMX0xJQlJBUlknLAorKyAgICAnSE9TVF9DRkxBR1MnLAorKyAgICAnSE9TVF9DU1JDUycsCisrICAgICdIT1NUX0NNTVNSQ1MnLAorKyAgICAnSE9TVF9DWFhGTEFHUycsCisrICAgICdIT1NUX0VYVFJBX0xJQlMnLAorKyAgICAnSE9TVF9MSUJSQVJZX05BTUUnLAorKyAgICAnSE9TVF9QUk9HUkFNJywKKysgICAgJ0hPU1RfU0lNUExFX1BST0dSQU1TJywKKysgICAgJ0pBUl9NQU5JRkVTVCcsCisrICAgICdKQVZBX0pBUl9UQVJHRVRTJywKKysgICAgJ0xJQlJBUllfTkFNRScsCisrICAgICdMSUJTJywKKysgICAgJ01BS0VfRlJBTUVXT1JLJywKKysgICAgJ01PRFVMRScsCisrICAgICdOT19ESVNUX0lOU1RBTEwnLAorKyAgICAnTk9fRVhQQU5EX0xJQlMnLAorKyAgICAnTk9fSU5URVJGQUNFU19NQU5JRkVTVCcsCisrICAgICdOT19KU19NQU5JRkVTVCcsCisrICAgICdPU19MSUJTJywKKysgICAgJ1BBUkFMTEVMX0RJUlMnLAorKyAgICAnUFJFRl9KU19FWFBPUlRTJywKKysgICAgJ1BST0dSQU0nLAorKyAgICAnUkVTT1VSQ0VfRklMRVMnLAorKyAgICAnU0hBUkVEX0xJQlJBUllfTElCUycsCisrICAgICdTSEFSRURfTElCUkFSWV9OQU1FJywKKysgICAgJ1NJTVBMRV9QUk9HUkFNUycsCisrICAgICdTT05BTUUnLAorKyAgICAnU1RBVElDX0xJQlJBUllfTkFNRScsCisrICAgICdURVNUX0RJUlMnLAorKyAgICAnVE9PTF9ESVJTJywKKyAgICAgIyBYWFggY29uZmlnL01ha2VmaWxlLmluIHNwZWNpZmllcyB0aGlzIGluIGEgbWFrZSBpbnZvY2F0aW9uCisgICAgICMnVVNFX0VYVEVOU0lPTl9NQU5JRkVTVCcsCistICAgIGInWFBDU0hFTExfVEVTVFMnLAorLSAgICBiJ1hQSURMX01PRFVMRScsCisrICAgICdYUENTSEVMTF9URVNUUycsCisrICAgICdYUElETF9NT0RVTEUnLAorIF0KKyAKKyBERVBSRUNBVEVEX1ZBUklBQkxFUyA9IFsKKy0gICAgYidFWFBPUlRfTElCUkFSWScsCistICAgIGInRVhUUkFfTElCUycsCistICAgIGInSE9TVF9MSUJTJywKKy0gICAgYidMSUJYVUxfTElCUkFSWScsCistICAgIGInTU9DSElURVNUX0ExMVlfRklMRVMnLAorLSAgICBiJ01PQ0hJVEVTVF9CUk9XU0VSX0ZJTEVTJywKKy0gICAgYidNT0NISVRFU1RfQlJPV1NFUl9GSUxFU19QQVJUUycsCistICAgIGInTU9DSElURVNUX0NIUk9NRV9GSUxFUycsCistICAgIGInTU9DSElURVNUX0ZJTEVTJywKKy0gICAgYidNT0NISVRFU1RfRklMRVNfUEFSVFMnLAorLSAgICBiJ01PQ0hJVEVTVF9NRVRST19GSUxFUycsCistICAgIGInTU9DSElURVNUX1JPQk9DT1BfRklMRVMnLAorLSAgICBiJ01PRFVMRV9PUFRJTUlaRV9GTEFHUycsCistICAgIGInTU9aX0NIUk9NRV9GSUxFX0ZPUk1BVCcsCistICAgIGInU0hPUlRfTElCTkFNRScsCistICAgIGInVEVTVElOR19KU19NT0RVTEVTJywKKy0gICAgYidURVNUSU5HX0pTX01PRFVMRV9ESVInLAorKyAgICAnRVhQT1JUX0xJQlJBUlknLAorKyAgICAnRVhUUkFfTElCUycsCisrICAgICdIT1NUX0xJQlMnLAorKyAgICAnTElCWFVMX0xJQlJBUlknLAorKyAgICAnTU9DSElURVNUX0ExMVlfRklMRVMnLAorKyAgICAnTU9DSElURVNUX0JST1dTRVJfRklMRVMnLAorKyAgICAnTU9DSElURVNUX0JST1dTRVJfRklMRVNfUEFSVFMnLAorKyAgICAnTU9DSElURVNUX0NIUk9NRV9GSUxFUycsCisrICAgICdNT0NISVRFU1RfRklMRVMnLAorKyAgICAnTU9DSElURVNUX0ZJTEVTX1BBUlRTJywKKysgICAgJ01PQ0hJVEVTVF9NRVRST19GSUxFUycsCisrICAgICdNT0NISVRFU1RfUk9CT0NPUF9GSUxFUycsCisrICAgICdNT0RVTEVfT1BUSU1JWkVfRkxBR1MnLAorKyAgICAnTU9aX0NIUk9NRV9GSUxFX0ZPUk1BVCcsCisrICAgICdTSE9SVF9MSUJOQU1FJywKKysgICAgJ1RFU1RJTkdfSlNfTU9EVUxFUycsCisrICAgICdURVNUSU5HX0pTX01PRFVMRV9ESVInLAorIF0KKyAKKyBNT1pCVUlMRF9WQVJJQUJMRVNfTUVTU0FHRSA9ICdJdCBzaG91bGQgb25seSBiZSBkZWZpbmVkIGluIG1vei5idWlsZCBmaWxlcy4nCitAQCAtMjA3LDcgKzIwOCw3IEBAIGNsYXNzIEJhY2tlbmRNYWtlRmlsZShvYmplY3QpOgorICAgICAgICAgc2VsZi5maC53cml0ZShidWYpCisgCisgICAgIGRlZiB3cml0ZV9vbmNlKHNlbGYsIGJ1Zik6CistICAgICAgICBpZiBpc2luc3RhbmNlKGJ1ZiwgdW5pY29kZSk6CisrICAgICAgICBpZiBpc2luc3RhbmNlKGJ1Ziwgc3RyKToKKyAgICAgICAgICAgICBidWYgPSBidWYuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgICBpZiBiJ1xuJyArIGJ1ZiBub3QgaW4gc2VsZi5maC5nZXR2YWx1ZSgpOgorICAgICAgICAgICAgIHNlbGYud3JpdGUoYnVmKQorQEAgLTI4MCw3ICsyODEsNyBAQCBjbGFzcyBSZWN1cnNpdmVNYWtlVHJhdmVyc2FsKG9iamVjdCk6CisgICAgICAgICBIZWxwZXIgZnVuY3Rpb24gdG8gY2FsbCBhIGZpbHRlciBmcm9tIGNvbXB1dGVfZGVwZW5kZW5jaWVzIGFuZAorICAgICAgICAgdHJhdmVyc2UuCisgICAgICAgICAiIiIKKy0gICAgICAgIHJldHVybiBmaWx0ZXIoY3VycmVudCwgc2VsZi5nZXRfc3ViZGlycyhjdXJyZW50KSkKKysgICAgICAgIHJldHVybiBsaXN0KGZpbHRlcihjdXJyZW50LCBzZWxmLmdldF9zdWJkaXJzKGN1cnJlbnQpKSkKKyAKKyAgICAgZGVmIGNvbXB1dGVfZGVwZW5kZW5jaWVzKHNlbGYsIGZpbHRlcj1Ob25lKToKKyAgICAgICAgICIiIgorQEAgLTcxMCw3ICs3MTEsNyBAQCBjbGFzcyBSZWN1cnNpdmVNYWtlQmFja2VuZChDb21tb25CYWNrZW5kKToKKyAgICAgICAgIGNvbnZlbmllbmNlIHZhcmlhYmxlcywgYW5kIHRoZSBvdGhlciBkZXBlbmRlbmN5IGRlZmluaXRpb25zIGZvciBhCisgICAgICAgICBob3BlZnVsbHkgcHJvcGVyIGRpcmVjdG9yeSB0cmF2ZXJzYWwuCisgICAgICAgICAiIiIKKy0gICAgICAgIGZvciB0aWVyLCBub19za2lwIGluIHNlbGYuX25vX3NraXAuaXRlbXMoKToKKysgICAgICAgIGZvciB0aWVyLCBub19za2lwIGluIGxpc3Qoc2VsZi5fbm9fc2tpcC5pdGVtcygpKToKKyAgICAgICAgICAgICBzZWxmLmxvZyhsb2dnaW5nLkRFQlVHLCAnZmlsbF9yb290X21rJywgeworICAgICAgICAgICAgICAgICAnbnVtYmVyJzogbGVuKG5vX3NraXApLCAndGllcic6IHRpZXIKKyAgICAgICAgICAgICAgICAgfSwgJ1VzaW5nIHtudW1iZXJ9IGRpcmVjdG9yaWVzIGR1cmluZyB7dGllcn0nKQorQEAgLTc1Nyw3ICs3NTgsNyBAQCBjbGFzcyBSZWN1cnNpdmVNYWtlQmFja2VuZChDb21tb25CYWNrZW5kKToKKyAgICAgICAgIGZvciB0aWVyLCBmaWx0ZXIgaW4gZmlsdGVyczoKKyAgICAgICAgICAgICBtYWluLCBhbGxfZGVwcyA9IFwKKyAgICAgICAgICAgICAgICAgc2VsZi5fdHJhdmVyc2FsLmNvbXB1dGVfZGVwZW5kZW5jaWVzKGZpbHRlcikKKy0gICAgICAgICAgICBmb3IgZGlyLCBkZXBzIGluIGFsbF9kZXBzLml0ZW1zKCk6CisrICAgICAgICAgICAgZm9yIGRpciwgZGVwcyBpbiBsaXN0KGFsbF9kZXBzLml0ZW1zKCkpOgorICAgICAgICAgICAgICAgICBpZiBkZXBzIGlzIG5vdCBOb25lIG9yIChkaXIgaW4gc2VsZi5faWRsX2RpcnMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgdGllciA9PSAnZXhwb3J0Jyk6CisgICAgICAgICAgICAgICAgICAgICBydWxlID0gcm9vdF9kZXBzX21rLmNyZWF0ZV9ydWxlKFsnJXMvJXMnICUgKGRpciwgdGllcildKQorQEAgLTc3MCw3ICs3NzEsNyBAQCBjbGFzcyBSZWN1cnNpdmVNYWtlQmFja2VuZChDb21tb25CYWNrZW5kKToKKyAgICAgICAgICAgICAgICAgcnVsZS5hZGRfZGVwZW5kZW5jaWVzKCclcy8lcycgJSAoZCwgdGllcikgZm9yIGQgaW4gbWFpbikKKyAKKyAgICAgICAgIGFsbF9jb21waWxlX2RlcHMgPSByZWR1Y2UobGFtYmRhIHgseTogeHx5LAorLSAgICAgICAgICAgIHNlbGYuX2NvbXBpbGVfZ3JhcGgudmFsdWVzKCkpIGlmIHNlbGYuX2NvbXBpbGVfZ3JhcGggZWxzZSBzZXQoKQorKyAgICAgICAgICAgIGxpc3Qoc2VsZi5fY29tcGlsZV9ncmFwaC52YWx1ZXMoKSkpIGlmIHNlbGYuX2NvbXBpbGVfZ3JhcGggZWxzZSBzZXQoKQorICAgICAgICAgIyBJbmNsdWRlIHRoZSBmb2xsb3dpbmcgYXMgZGVwZW5kZW5jaWVzIG9mIHRoZSB0b3AgcmVjdXJzaW9uIHRhcmdldCBmb3IKKyAgICAgICAgICMgY29tcGlsYXRpb246CisgICAgICAgICAjIC0gbm9kZXMgdGhhdCBhcmUgbm90IGRlcGVuZGVuZGVkIHVwb24gYnkgYW55dGhpbmcuIFR5cGljYWxseSwgdGhpcworQEAgLTc4Myw3ICs3ODQsNyBAQCBjbGFzcyBSZWN1cnNpdmVNYWtlQmFja2VuZChDb21tb25CYWNrZW5kKToKKyAgICAgICAgICMgICBhcyBkaXJlY3QgZGVwZW5kZW5jaWVzIG9mIHRoZSB0b3AgcmVjdXJzaW9uIHRhcmdldCwgdG8gc29tZWhvdworICAgICAgICAgIyAgIHByaW9yaXRpemUgdGhlbS4KKyAgICAgICAgICMgICAxLiBTZWUgYnVnIDEyNjIyNDEgY29tbWVudCA1LgorLSAgICAgICAgY29tcGlsZV9yb290cyA9IFt0IGZvciB0LCBkZXBzIGluIHNlbGYuX2NvbXBpbGVfZ3JhcGguaXRlcml0ZW1zKCkKKysgICAgICAgIGNvbXBpbGVfcm9vdHMgPSBbdCBmb3IgdCwgZGVwcyBpbiBsaXN0KHNlbGYuX2NvbXBpbGVfZ3JhcGguaXRlbXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGRlcHMgb3IgdCBub3QgaW4gYWxsX2NvbXBpbGVfZGVwc10KKyAKKyAgICAgICAgIHJ1bGUgPSByb290X2RlcHNfbWsuY3JlYXRlX3J1bGUoWydyZWN1cnNlX2NvbXBpbGUnXSkKK0BAIC04NDUsMTQgKzg0NiwxNCBAQCBjbGFzcyBSZWN1cnNpdmVNYWtlQmFja2VuZChDb21tb25CYWNrZW5kKToKKyAgICAgICAgICAgICBydWxlLmFkZF9kZXBlbmRlbmNpZXMoWyckKENVUkRJUikvJTogJSddKQorIAorICAgICBkZWYgX2NoZWNrX2JsYWNrbGlzdGVkX3ZhcmlhYmxlcyhzZWxmLCBtYWtlZmlsZV9pbiwgbWFrZWZpbGVfY29udGVudCk6CistICAgICAgICBpZiBiJ0VYVEVSTkFMTFlfTUFOQUdFRF9NQUtFX0ZJTEUnIGluIG1ha2VmaWxlX2NvbnRlbnQ6CisrICAgICAgICBpZiAnRVhURVJOQUxMWV9NQU5BR0VEX01BS0VfRklMRScgaW4gbWFrZWZpbGVfY29udGVudDoKKyAgICAgICAgICAgICAjIEJ5cGFzcyB0aGUgdmFyaWFibGUgcmVzdHJpY3Rpb25zIGZvciBleHRlcm5hbGx5IG1hbmFnZWQgbWFrZWZpbGVzLgorICAgICAgICAgICAgIHJldHVybgorIAorICAgICAgICAgZm9yIGwgaW4gbWFrZWZpbGVfY29udGVudC5zcGxpdGxpbmVzKCk6CisgICAgICAgICAgICAgbCA9IGwuc3RyaXAoKQorICAgICAgICAgICAgICMgRG9uJ3QgY2hlY2sgY29tbWVudHMKKy0gICAgICAgICAgICBpZiBsLnN0YXJ0c3dpdGgoYicjJyk6CisrICAgICAgICAgICAgaWYgbC5zdGFydHN3aXRoKCcjJyk6CisgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgZm9yIHggaW4gY2hhaW4oTU9aQlVJTERfVkFSSUFCTEVTLCBERVBSRUNBVEVEX1ZBUklBQkxFUyk6CisgICAgICAgICAgICAgICAgIGlmIHggbm90IGluIGw6CitAQCAtOTA5LDExICs5MTAsMTEgQEAgY2xhc3MgUmVjdXJzaXZlTWFrZUJhY2tlbmQoQ29tbW9uQmFja2VuZCk6CisgICAgICAgICAgICAgICAgICAgICAjIERpcmVjdG9yaWVzIHdpdGggYSBNYWtlZmlsZSBjb250YWluaW5nIGEgdG9vbHMgdGFyZ2V0LCBvcgorICAgICAgICAgICAgICAgICAgICAgIyBYUElfUEtHTkFNRSBvciBJTlNUQUxMX0VYVEVOU0lPTl9JRCBjYW4ndCBiZSBza2lwcGVkIGFuZAorICAgICAgICAgICAgICAgICAgICAgIyBtdXN0IHJ1biBkdXJpbmcgdGhlICd0b29scycgdGllci4KKy0gICAgICAgICAgICAgICAgICAgIGZvciB0IGluIChiJ1hQSV9QS0dOQU1FJywgYidJTlNUQUxMX0VYVEVOU0lPTl9JRCcsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGIndG9vbHMnKToKKysgICAgICAgICAgICAgICAgICAgIGZvciB0IGluICgnWFBJX1BLR05BTUUnLCAnSU5TVEFMTF9FWFRFTlNJT05fSUQnLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndG9vbHMnKToKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0IG5vdCBpbiBjb250ZW50OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHQgPT0gYid0b29scycgYW5kIG5vdCByZS5zZWFyY2goJyg/Ol58XHMpdG9vbHMuKjo6JywgY29udGVudCwgcmUuTSk6CisrICAgICAgICAgICAgICAgICAgICAgICAgaWYgdCA9PSAndG9vbHMnIGFuZCBub3QgcmUuc2VhcmNoKCcoPzpefFxzKXRvb2xzLio6OicsIGNvbnRlbnQsIHJlLk0pOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG9iamRpciA9PSBzZWxmLmVudmlyb25tZW50LnRvcG9iamRpcjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKK0BAIC05MzMsNyArOTM0LDcgQEAgY2xhc3MgUmVjdXJzaXZlTWFrZUJhY2tlbmQoQ29tbW9uQmFja2VuZCk6CisgICAgICAgICBzZWxmLl9maWxsX3Jvb3RfbWsoKQorIAorICAgICAgICAgIyBNYWtlIHRoZSBtYXN0ZXIgdGVzdCBtYW5pZmVzdCBmaWxlcy4KKy0gICAgICAgIGZvciBmbGF2b3IsIHQgaW4gc2VsZi5fdGVzdF9tYW5pZmVzdHMuaXRlbXMoKToKKysgICAgICAgIGZvciBmbGF2b3IsIHQgaW4gbGlzdChzZWxmLl90ZXN0X21hbmlmZXN0cy5pdGVtcygpKToKKyAgICAgICAgICAgICBpbnN0YWxsX3ByZWZpeCwgbWFuaWZlc3RzID0gdAorICAgICAgICAgICAgIG1hbmlmZXN0X3N0ZW0gPSBtb3pwYXRoLmpvaW4oaW5zdGFsbF9wcmVmaXgsICclcy5pbmknICUgZmxhdm9yKQorICAgICAgICAgICAgIHNlbGYuX3dyaXRlX21hc3Rlcl90ZXN0X21hbmlmZXN0KG1venBhdGguam9pbigKK0BAIC0xMDM5LDcgKzEwNDAsNyBAQCBjbGFzcyBSZWN1cnNpdmVNYWtlQmFja2VuZChDb21tb25CYWNrZW5kKToKKyAgICAgICAgIGZvciBwIGluICgnTWFrZWZpbGUnLCAnYmFja2VuZC5taycsICcuZGVwcy8ubWtkaXIuZG9uZScpOgorICAgICAgICAgICAgIGJ1aWxkX2ZpbGVzLmFkZF9vcHRpb25hbF9leGlzdHMocCkKKyAKKy0gICAgICAgIGZvciBpZGwgaW4gbWFuYWdlci5pZGxzLnZhbHVlcygpOgorKyAgICAgICAgZm9yIGlkbCBpbiBsaXN0KG1hbmFnZXIuaWRscy52YWx1ZXMoKSk6CisgICAgICAgICAgICAgc2VsZi5faW5zdGFsbF9tYW5pZmVzdHNbJ2Rpc3RfaWRsJ10uYWRkX2xpbmsoaWRsWydzb3VyY2UnXSwKKyAgICAgICAgICAgICAgICAgaWRsWydiYXNlbmFtZSddKQorICAgICAgICAgICAgIHNlbGYuX2luc3RhbGxfbWFuaWZlc3RzWydkaXN0X2luY2x1ZGUnXS5hZGRfb3B0aW9uYWxfZXhpc3RzKCclcy5oJworQEAgLTEwODYsNyArMTA4Nyw3IEBAIGNsYXNzIFJlY3Vyc2l2ZU1ha2VCYWNrZW5kKENvbW1vbkJhY2tlbmQpOgorIAorICAgICAgICAgaW50ZXJmYWNlc19tYW5pZmVzdHMgPSBbXQorICAgICAgICAgZGlzdF9kaXIgPSBtb3pwYXRoLmpvaW4oc2VsZi5lbnZpcm9ubWVudC50b3BvYmpkaXIsICdkaXN0JykKKy0gICAgICAgIGZvciBtYW5pZmVzdCwgZW50cmllcyBpbiBtYW5hZ2VyLmludGVyZmFjZV9tYW5pZmVzdHMuaXRlbXMoKToKKysgICAgICAgIGZvciBtYW5pZmVzdCwgZW50cmllcyBpbiBsaXN0KG1hbmFnZXIuaW50ZXJmYWNlX21hbmlmZXN0cy5pdGVtcygpKToKKyAgICAgICAgICAgICBpbnRlcmZhY2VzX21hbmlmZXN0cy5hcHBlbmQobW96cGF0aC5qb2luKCckKERFUFRIKScsIG1hbmlmZXN0KSkKKyAgICAgICAgICAgICBmb3IgeHB0IGluIHNvcnRlZChlbnRyaWVzKToKKyAgICAgICAgICAgICAgICAgcmVnaXN0ZXJlZF94cHRfZmlsZXMuYWRkKG1venBhdGguam9pbigKK0BAIC0xMTk0LDcgKzExOTUsNyBAQCBjbGFzcyBSZWN1cnNpdmVNYWtlQmFja2VuZChDb21tb25CYWNrZW5kKToKKyAgICAgICAgICMgRG9uJ3QgYWxsb3cgZmlsZXMgdG8gYmUgZGVmaW5lZCBtdWx0aXBsZSB0aW1lcyB1bmxlc3MgaXQgaXMgYWxsb3dlZC4KKyAgICAgICAgICMgV2UgY3VycmVudGx5IGFsbG93IGR1cGxpY2F0ZXMgZm9yIG5vbi10ZXN0IGZpbGVzIG9yIHRlc3QgZmlsZXMgaWYKKyAgICAgICAgICMgdGhlIG1hbmlmZXN0IGlzIGxpc3RlZCBhcyBhIGR1cGxpY2F0ZS4KKy0gICAgICAgIGZvciBzb3VyY2UsIChkZXN0LCBpc190ZXN0KSBpbiBvYmouaW5zdGFsbHMuaXRlbXMoKToKKysgICAgICAgIGZvciBzb3VyY2UsIChkZXN0LCBpc190ZXN0KSBpbiBsaXN0KG9iai5pbnN0YWxscy5pdGVtcygpKToKKyAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIHNlbGYuX2luc3RhbGxfbWFuaWZlc3RzWydfdGVzdF9maWxlcyddLmFkZF9saW5rKHNvdXJjZSwgZGVzdCkKKyAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKK0BAIC0xNTU4LDcgKzE1NTksNyBAQCBjbGFzcyBSZWN1cnNpdmVNYWtlQmFja2VuZChDb21tb25CYWNrZW5kKToKKyAgICAgICAgIG1hbl9kaXIgPSBtb3pwYXRoLmpvaW4oc2VsZi5lbnZpcm9ubWVudC50b3BvYmpkaXIsICdfYnVpbGRfbWFuaWZlc3RzJywKKyAgICAgICAgICAgICBkZXN0KQorIAorLSAgICAgICAgZm9yIGssIG1hbmlmZXN0IGluIG1hbmlmZXN0cy5pdGVtcygpOgorKyAgICAgICAgZm9yIGssIG1hbmlmZXN0IGluIGxpc3QobWFuaWZlc3RzLml0ZW1zKCkpOgorICAgICAgICAgICAgIHdpdGggc2VsZi5fd3JpdGVfZmlsZShtb3pwYXRoLmpvaW4obWFuX2RpciwgaykpIGFzIGZoOgorICAgICAgICAgICAgICAgICBtYW5pZmVzdC53cml0ZShmaWxlb2JqPWZoKQorIAorQEAgLTE1OTMsMjAgKzE1OTQsMjAgQEAgY2xhc3MgUmVjdXJzaXZlTWFrZUJhY2tlbmQoQ29tbW9uQmFja2VuZCk6CisgICAgICAgICAgICAgICAgIHBwLmNvbnRleHQudXBkYXRlKGV4dHJhKQorICAgICAgICAgICAgIGlmIG5vdCBwcC5jb250ZXh0LmdldCgnYXV0b2NvbmZtaycsICcnKToKKyAgICAgICAgICAgICAgICAgcHAuY29udGV4dFsnYXV0b2NvbmZtayddID0gJ2F1dG9jb25mLm1rJworLSAgICAgICAgICAgIHBwLmhhbmRsZUxpbmUoYicjIFRISVMgRklMRSBXQVMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQuIERPIE5PVCBNT0RJRlkgQlkgSEFORC5cbicpOworLSAgICAgICAgICAgIHBwLmhhbmRsZUxpbmUoYidERVBUSCA6PSBAREVQVEhAXG4nKQorLSAgICAgICAgICAgIHBwLmhhbmRsZUxpbmUoYid0b3BvYmpkaXIgOj0gQHRvcG9iamRpckBcbicpCistICAgICAgICAgICAgcHAuaGFuZGxlTGluZShiJ3RvcHNyY2RpciA6PSBAdG9wX3NyY2RpckBcbicpCistICAgICAgICAgICAgcHAuaGFuZGxlTGluZShiJ3NyY2RpciA6PSBAc3JjZGlyQFxuJykKKy0gICAgICAgICAgICBwcC5oYW5kbGVMaW5lKGInVlBBVEggOj0gQHNyY2RpckBcbicpCistICAgICAgICAgICAgcHAuaGFuZGxlTGluZShiJ3JlbGF0aXZlc3JjZGlyIDo9IEByZWxhdGl2ZXNyY2RpckBcbicpCistICAgICAgICAgICAgcHAuaGFuZGxlTGluZShiJ2luY2x1ZGUgJChERVBUSCkvY29uZmlnL0BhdXRvY29uZm1rQFxuJykKKysgICAgICAgICAgICBwcC5oYW5kbGVMaW5lKCcjIFRISVMgRklMRSBXQVMgQVVUT01BVElDQUxMWSBHRU5FUkFURUQuIERPIE5PVCBNT0RJRlkgQlkgSEFORC5cbicpOworKyAgICAgICAgICAgIHBwLmhhbmRsZUxpbmUoJ0RFUFRIIDo9IEBERVBUSEBcbicpCisrICAgICAgICAgICAgcHAuaGFuZGxlTGluZSgndG9wb2JqZGlyIDo9IEB0b3BvYmpkaXJAXG4nKQorKyAgICAgICAgICAgIHBwLmhhbmRsZUxpbmUoJ3RvcHNyY2RpciA6PSBAdG9wX3NyY2RpckBcbicpCisrICAgICAgICAgICAgcHAuaGFuZGxlTGluZSgnc3JjZGlyIDo9IEBzcmNkaXJAXG4nKQorKyAgICAgICAgICAgIHBwLmhhbmRsZUxpbmUoJ1ZQQVRIIDo9IEBzcmNkaXJAXG4nKQorKyAgICAgICAgICAgIHBwLmhhbmRsZUxpbmUoJ3JlbGF0aXZlc3JjZGlyIDo9IEByZWxhdGl2ZXNyY2RpckBcbicpCisrICAgICAgICAgICAgcHAuaGFuZGxlTGluZSgnaW5jbHVkZSAkKERFUFRIKS9jb25maWcvQGF1dG9jb25mbWtAXG4nKQorICAgICAgICAgICAgIGlmIG5vdCBzdHViOgorICAgICAgICAgICAgICAgICBwcC5kb19pbmNsdWRlKG9iai5pbnB1dF9wYXRoKQorICAgICAgICAgICAgICMgRW1wdHkgbGluZSB0byBhdm9pZCBmYWlsdXJlcyB3aGVuIGxhc3QgbGluZSBpbiBNYWtlZmlsZS5pbiBlbmRzCisgICAgICAgICAgICAgIyB3aXRoIGEgYmFja3NsYXNoLgorLSAgICAgICAgICAgIHBwLmhhbmRsZUxpbmUoYidcbicpCistICAgICAgICAgICAgcHAuaGFuZGxlTGluZShiJ2luY2x1ZGUgJCh0b3BzcmNkaXIpL2NvbmZpZy9yZWN1cnNlLm1rXG4nKQorKyAgICAgICAgICAgIHBwLmhhbmRsZUxpbmUoJ1xuJykKKysgICAgICAgICAgICBwcC5oYW5kbGVMaW5lKCdpbmNsdWRlICQodG9wc3JjZGlyKS9jb25maWcvcmVjdXJzZS5ta1xuJykKKyAgICAgICAgIGlmIG5vdCBzdHViOgorICAgICAgICAgICAgICMgQWRkaW5nIHRoZSBNYWtlZmlsZS5pbiBoZXJlIGhhcyB0aGUgZGVzaXJlZCBzaWRlLWVmZmVjdAorICAgICAgICAgICAgICMgdGhhdCBpZiB0aGUgTWFrZWZpbGUuaW4gZGlzYXBwZWFycywgdGhpcyB3aWxsIGZvcmNlCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2NvbmZpZ19zdGF0dXMucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlnX3N0YXR1cy5weQoraW5kZXggZDQ2ZjEzMzJkLi5hOWEyN2E2OTkgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlnX3N0YXR1cy5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2NvbmZpZ19zdGF0dXMucHkKK0BAIC03Nyw2ICs3Nyw3IEBAIGRlZiBjb25maWdfc3RhdHVzKHRvcG9iamRpcj0nLicsIHRvcHNyY2Rpcj0nLicsIGRlZmluZXM9Tm9uZSwKKyAgICAgU2VlIGJ1aWxkL2F1dG9jb25mL2NvbmZpZy5zdGF0dXMubTQuCisgICAgICcnJworIAorKyAgICBwcmludCgiY29uZmlnX3N0YXR1cyBzdGFydGVkIikKKyAgICAgaWYgJ0NPTkZJR19GSUxFUycgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgIHJhaXNlIEV4Y2VwdGlvbignVXNpbmcgdGhlIENPTkZJR19GSUxFUyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgJworICAgICAgICAgICAgICdzdXBwb3J0ZWQuJykKK0BAIC0xMTksNyArMTIwLDcgQEAgZGVmIGNvbmZpZ19zdGF0dXModG9wb2JqZGlyPScuJywgdG9wc3JjZGlyPScuJywgZGVmaW5lcz1Ob25lLAorICAgICBpZiAnV1JJVEVfTU9aSU5GTycgaW4gb3MuZW52aXJvbjoKKyAgICAgICAgIHdyaXRlX21vemluZm8ob3MucGF0aC5qb2luKHRvcG9iamRpciwgJ21vemluZm8uanNvbicpLCBlbnYsIG9zLmVudmlyb24pCisgCistICAgIGNwdV9zdGFydCA9IHRpbWUuY2xvY2soKQorKyAgICBjcHVfc3RhcnQgPSB0aW1lLnBlcmZfY291bnRlcigpCisgICAgIHRpbWVfc3RhcnQgPSB0aW1lLnRpbWUoKQorIAorICAgICAjIE1ha2UgYXBwcm9wcmlhdGUgYmFja2VuZCBpbnN0YW5jZXMsIGRlZmF1bHRpbmcgdG8gUmVjdXJzaXZlTWFrZUJhY2tlbmQsCitAQCAtMTU1LDcgKzE1Niw3IEBAIGRlZiBjb25maWdfc3RhdHVzKHRvcG9iamRpcj0nLicsIHRvcHNyY2Rpcj0nLicsIGRlZmluZXM9Tm9uZSwKKyAgICAgICAgICAgICBzdW1tYXJ5ID0gb2JqLmd5cF9zdW1tYXJ5KCkKKyAgICAgICAgICAgICBwcmludChzdW1tYXJ5LCBmaWxlPXN5cy5zdGRlcnIpCisgCistICAgIGNwdV90aW1lID0gdGltZS5jbG9jaygpIC0gY3B1X3N0YXJ0CisrICAgIGNwdV90aW1lID0gdGltZS5wZXJmX2NvdW50ZXIoKSAtIGNwdV9zdGFydAorICAgICB3YWxsX3RpbWUgPSB0aW1lLnRpbWUoKSAtIHRpbWVfc3RhcnQKKyAgICAgZWZmaWNpZW5jeSA9IGNwdV90aW1lIC8gd2FsbF90aW1lIGlmIHdhbGxfdGltZSBlbHNlIDEwMAorICAgICB1bnRyYWNrZWQgPSB3YWxsX3RpbWUgLSBleGVjdXRpb25fdGltZQorQEAgLTE3OSwzICsxODAsNSBAQCBkZWYgY29uZmlnX3N0YXR1cyh0b3BvYmpkaXI9Jy4nLCB0b3BzcmNkaXI9Jy4nLCBkZWZpbmVzPU5vbmUsCisgICAgICMgQWR2ZXJ0aXNlIEFuZHJvaWQgU3R1ZGlvIGlmIGl0IGlzIGFwcHJvcHJpYXRlLgorICAgICBpZiBNYWNoQ29tbWFuZENvbmRpdGlvbnMuaXNfYW5kcm9pZChlbnYpOgorICAgICAgICAgcHJpbnQoQU5EUk9JRF9JREVfQURWRVJUSVNFTUVOVCkKKysKKysgICAgcHJpbnQoImNvbmZpZ19zdGF0dXMgZmluaXNoZWQiKQorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvX19pbml0X18ucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlndXJlL19faW5pdF9fLnB5CitpbmRleCBkMDM2MTU3MDcuLjEzZDYyM2Q0ZiAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvX19pbml0X18ucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvX19pbml0X18ucHkKK0BAIC0yLDkgKzIsOSBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24sIHVuaWNvZGVfbGl0ZXJhbHMKKyAKKy1pbXBvcnQgX19idWlsdGluX18KKysKKytpbXBvcnQgYnVpbHRpbnMKKyBpbXBvcnQgaW5zcGVjdAorIGltcG9ydCBsb2dnaW5nCisgaW1wb3J0IG9zCitAQCAtMzgsNiArMzgsOCBAQCBmcm9tIG1vemJ1aWxkLnV0aWwgaW1wb3J0ICgKKyAKKyBpbXBvcnQgbW96cGFjay5wYXRoIGFzIG1venBhdGgKKyAKKytpbXBvcnQgdHJhY2ViYWNrCisrCisgCisgY2xhc3MgQ29uZmlndXJlRXJyb3IoRXhjZXB0aW9uKToKKyAgICAgcGFzcworQEAgLTY5LDcgKzcxLDcgQEAgY2xhc3MgU2FuZGJveERlcGVuZHNGdW5jdGlvbihvYmplY3QpOgorICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwga2V5KToKKyAgICAgICAgIHJldHVybiBzZWxmLl9nZXRhdHRyKGtleSkuc2FuZGJveGVkCisgCistICAgIGRlZiBfX25vbnplcm9fXyhzZWxmKToKKysgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgorICAgICAgICAgcmFpc2UgQ29uZmlndXJlRXJyb3IoCisgICAgICAgICAgICAgJ0Nhbm5vdCBkbyBib29sZWFuIG9wZXJhdGlvbnMgb24gQGRlcGVuZHMgZnVuY3Rpb25zLicpCisgCitAQCAtOTYsNiArOTgsNyBAQCBjbGFzcyBEZXBlbmRzRnVuY3Rpb24ob2JqZWN0KToKKyAgICAgICAgICAgICBzYW5kYm94Ll92YWx1ZV9mb3Ioc2VsZikKKyAgICAgICAgIGVsaWYgbm90IHNhbmRib3guX2hlbHA6CisgICAgICAgICAgICAgc2FuZGJveC5fZXhlY3V0aW9uX3F1ZXVlLmFwcGVuZCgoc2FuZGJveC5fdmFsdWVfZm9yLCAoc2VsZiwpKSkKKysgICAgICAgICAgICBzYW5kYm94LnRhc2tzX2RlYnVnX291dCgiRGVwZW5kc0Z1bmN0aW9uLl9faW5pdCAlcyIgJSBmdW5jLl9fbmFtZV9fKQorIAorICAgICBAcHJvcGVydHkKKyAgICAgZGVmIG5hbWUoc2VsZik6CitAQCAtMjA2LDYgKzIwOSwxNSBAQCBjbGFzcyBDb21iaW5lZERlcGVuZHNGdW5jdGlvbihEZXBlbmRzRnVuY3Rpb24pOgorICAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIHJldHVybiBub3Qgc2VsZiA9PSBvdGhlcgorIAorKyAgICBkZWYgX19oYXNoX18oc2VsZik6CisrICAgICAgICAjIFRoaXMgd2FzIG9uZSB3YXMgdGFrZW4gZnJvbSBbMV0gaW5pdGlhbGx5LiBTaG91bGQgbm90IGhhdmUgZG9uZSB0aGF0OgorKyAgICAgICAgIyBpdCBjYXVzZXMgZXhwbG9zaW9uIG9mIENvbmZpZ3VyZVNhbmRib3guX2V4ZWN1dGlvbl9xdWV1ZSB3aXRoIDEwMCUKKysgICAgICAgICMgQ1BVIGxvYWQgYW5kIGVhdGluZyBhbGwgYXZhbGlhYmxlIG1lbW9yeS4uLgorKyAgICAgICAgIworKyAgICAgICAgIyBbMV0gaHR0cHM6Ly9jb2RlLmZveGtpdC51cy9hZGVsaWUvcGFja2FnZXMvYmxvYi9mMmI1NzczZGExOWFiMzk3ZmJlNjRmZDMyZGFjYzM4M2NmZTRjZDc3L3VzZXIvbW96anMvcHl0aG9uMy5wYXRjaCNMODA2OAorKyAgICAgICAgcmV0dXJuIGhhc2goKHNlbGYuX25hbWUsIHR1cGxlKHNlbGYuZGVwZW5kZW5jaWVzKSkpCisrCisrCisgY2xhc3MgU2FuZGJveGVkR2xvYmFsKGRpY3QpOgorICAgICAnJydJZGVudGlmaWFibGUgZGljdCB0eXBlIGZvciB1c2UgYXMgZnVuY3Rpb24gZ2xvYmFsJycnCisgCitAQCAtMjUzLDExICsyNjUsMTIgQEAgY2xhc3MgQ29uZmlndXJlU2FuZGJveChkaWN0KToKKyAgICAgIyBUaGUgZGVmYXVsdCBzZXQgb2YgYnVpbHRpbnMuIFdlIGV4cG9zZSB1bmljb2RlIGFzIHN0ciB0byBtYWtlIHNhbmRib3hlZAorICAgICAjIGZpbGVzIG1vcmUgcHl0aG9uMy1yZWFkeS4KKyAgICAgQlVJTFRJTlMgPSBSZWFkT25seURpY3QoeworLSAgICAgICAgYjogZ2V0YXR0cihfX2J1aWx0aW5fXywgYikKKysgICAgICAgIGI6IGdldGF0dHIoYnVpbHRpbnMsIGIpCisgICAgICAgICBmb3IgYiBpbiAoJ05vbmUnLCAnRmFsc2UnLCAnVHJ1ZScsICdpbnQnLCAnYm9vbCcsICdhbnknLCAnYWxsJywgJ2xlbicsCisgICAgICAgICAgICAgICAgICAgJ2xpc3QnLCAndHVwbGUnLCAnc2V0JywgJ2RpY3QnLCAnaXNpbnN0YW5jZScsICdnZXRhdHRyJywKKy0gICAgICAgICAgICAgICAgICAnaGFzYXR0cicsICdlbnVtZXJhdGUnLCAncmFuZ2UnLCAnemlwJykKKy0gICAgfSwgX19pbXBvcnRfXz1mb3JiaWRkZW5faW1wb3J0LCBzdHI9dW5pY29kZSkKKysgICAgICAgICAgICAgICAgICAnaGFzYXR0cicsICdlbnVtZXJhdGUnLCAncmFuZ2UnLCAnemlwJywgJ19fYnVpbGRfY2xhc3NfXycsCisrICAgICAgICAgICAgICAgICAgJ2J5dGVzJywgJ2V4ZWMnKQorKyAgICB9LCBfX2ltcG9ydF9fPWZvcmJpZGRlbl9pbXBvcnQsIHN0cj1zdHIpCisgCisgICAgICMgRXhwb3NlIGEgbGltaXRlZCBzZXQgb2YgZnVuY3Rpb25zIGZyb20gb3MucGF0aAorICAgICBPUyA9IFJlYWRPbmx5TmFtZXNwYWNlKHBhdGg9UmVhZE9ubHlOYW1lc3BhY2UoKip7CitAQCAtMjk0LDYgKzMwNywxMSBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgIyBRdWV1ZSBvZiBmdW5jdGlvbnMgdG8gZXhlY3V0ZSwgd2l0aCB0aGVpciBhcmd1bWVudHMKKyAgICAgICAgIHNlbGYuX2V4ZWN1dGlvbl9xdWV1ZSA9IFtdCisgCisrICAgICAgICAjIEZvciBkZWJ1Z2dpbmc6IFNob3cgbnVtYmVyIG9mIHRhc2tzIHN0YXJ0ZWQgaW4gcnVuKCkgLyBhZGRlZCBlbHNld2hlcmUKKysgICAgICAgICMgYW5kIHNvbWUgYWRkaXRpb25hbCBpbmZvCisrICAgICAgICBzZWxmLnRhc2tfZGVidWcgPSBGYWxzZSAjIHNldCBUcnVlIHRvIGVuYWJsZQorKyAgICAgICAgc2VsZi50YXNrc19zdGFydGVkID0gMAorKworICAgICAgICAgIyBTdG9yZSB0aGUgYHdoZW5gcyBhc3NvY2lhdGVkIHRvIHNvbWUgb3B0aW9ucy4KKyAgICAgICAgIHNlbGYuX2NvbmRpdGlvbnMgPSB7fQorIAorQEAgLTMzMSw3ICszNDksNyBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgICAgICAgICByZXR1cm4gbWV0aG9kCisgICAgICAgICAgICAgZGVmIHdyYXBwZWQoKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgICAgICAgICAgb3V0X2FyZ3MgPSBbCistICAgICAgICAgICAgICAgICAgICBhcmcuZGVjb2RlKGVuY29kaW5nKSBpZiBpc2luc3RhbmNlKGFyZywgc3RyKSBlbHNlIGFyZworKyAgICAgICAgICAgICAgICAgICAgYXJnLmRlY29kZShlbmNvZGluZykgaWYgaXNpbnN0YW5jZShhcmcsIGJ5dGVzKSBlbHNlIGFyZworICAgICAgICAgICAgICAgICAgICAgZm9yIGFyZyBpbiBhcmdzCisgICAgICAgICAgICAgICAgIF0KKyAgICAgICAgICAgICAgICAgcmV0dXJuIG1ldGhvZCgqb3V0X2FyZ3MsICoqa3dhcmdzKQorQEAgLTM2MCw2ICszNzgsMTQgQEAgY2xhc3MgQ29uZmlndXJlU2FuZGJveChkaWN0KToKKyAgICAgICAgICAgICBoYW5kbGVyLnNldEZvcm1hdHRlcihmb3JtYXR0ZXIpCisgICAgICAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoaGFuZGxlcikKKyAKKysgICAgZGVmIHRhc2tzX2RlYnVnX291dChzZWxmLCB0ZXh0KToKKysgICAgICAgIGlmIHNlbGYudGFza19kZWJ1ZzoKKysgICAgICAgICAgICBwcmludCgiJXMgLyBxdWV1ZWQgJWkgLyBkb25lICVpIiAlKHRleHQsIGxlbihzZWxmLl9leGVjdXRpb25fcXVldWUpLCBzZWxmLnRhc2tzX3N0YXJ0ZWQpKQorKyAgICAgICAgICAgICNpZiBsZW4oc2VsZi5fZXhlY3V0aW9uX3F1ZXVlKSA+IDUwMDA6CisrICAgICAgICAgICAgIyAgICB0cmFjZWJhY2sucHJpbnRfc3RhY2soZmlsZT1zeXMuc3Rkb3V0KQorKyAgICAgICAgICAgICNpZiBsZW4oc2VsZi5fZXhlY3V0aW9uX3F1ZXVlKSA+IDUwMTA6CisrICAgICAgICAgICAgIyAgICByYWlzZSBFeGNlcHRpb24oIlRvbyBtYW55IHRhc2tzIikKKysKKyAgICAgZGVmIGluY2x1ZGVfZmlsZShzZWxmLCBwYXRoKToKKyAgICAgICAgICcnJ0luY2x1ZGUgb25lIGZpbGUgaW4gdGhlIHNhbmRib3guIFVzZXJzIG9mIHRoaXMgY2xhc3MgcHJvYmFibHkgd2FudAorICAgICAgICAgdG8gdXNlIGBydW5gIGluc3RlYWQuCitAQCAtMzgwLDYgKzQwNiw5IEBAIGNsYXNzIENvbmZpZ3VyZVNhbmRib3goZGljdCk6CisgICAgICAgICBpZiBwYXRoIGluIHNlbGYuX2FsbF9wYXRoczoKKyAgICAgICAgICAgICByYWlzZSBDb25maWd1cmVFcnJvcigKKyAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBpbmNsdWRlIGAlc2AgYmVjYXVzZSBpdCB3YXMgaW5jbHVkZWQgYWxyZWFkeS4nICUgcGF0aCkKKysKKysgICAgICAgIGlmIHNlbGYudGFza19kZWJ1ZzoKKysgICAgICAgICAgICBwcmludCgiaW5jbHVkZV9maWxlIiwgcGF0aCkKKyAgICAgICAgIHNlbGYuX3BhdGhzLmFwcGVuZChwYXRoKQorICAgICAgICAgc2VsZi5fYWxsX3BhdGhzLmFkZChwYXRoKQorIAorQEAgLTM5OCw3ICs0MjcsNyBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgaWYgcGF0aDoKKyAgICAgICAgICAgICBzZWxmLmluY2x1ZGVfZmlsZShwYXRoKQorIAorLSAgICAgICAgZm9yIG9wdGlvbiBpbiBzZWxmLl9vcHRpb25zLml0ZXJ2YWx1ZXMoKToKKysgICAgICAgIGZvciBvcHRpb24gaW4gc2VsZi5fb3B0aW9ucy52YWx1ZXMoKToKKyAgICAgICAgICAgICAjIEFsbCBvcHRpb25zIG11c3QgYmUgcmVmZXJlbmNlZCBieSBzb21lIEBkZXBlbmRzIGZ1bmN0aW9uCisgICAgICAgICAgICAgaWYgb3B0aW9uIG5vdCBpbiBzZWxmLl9zZWVuOgorICAgICAgICAgICAgICAgICByYWlzZSBDb25maWd1cmVFcnJvcigKK0BAIC00MjUsNiArNDU0LDggQEAgY2xhc3MgQ29uZmlndXJlU2FuZGJveChkaWN0KToKKyAKKyAgICAgICAgICMgUnVuIHRoZSBleGVjdXRpb24gcXVldWUKKyAgICAgICAgIGZvciBmdW5jLCBhcmdzIGluIHNlbGYuX2V4ZWN1dGlvbl9xdWV1ZToKKysgICAgICAgICAgICBzZWxmLnRhc2tzX3N0YXJ0ZWQgKz0gMQorKyAgICAgICAgICAgIHNlbGYudGFza3NfZGVidWdfb3V0KCJDb25maWd1cmVTYW5kYm94LnJ1biglcykiICUgZnVuYy5fX25hbWVfXykKKyAgICAgICAgICAgICBmdW5jKCphcmdzKQorIAorICAgICAgICAgaWYgc2VsZi5faGVscDoKK0BAIC01MDQsNyArNTM1LDcgQEAgY2xhc3MgQ29uZmlndXJlU2FuZGJveChkaWN0KToKKyAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gUG9zaXRpdmVPcHRpb25WYWx1ZSgpCisgICAgICAgICAgICAgICAgIGVsaWYgdmFsdWUgaXMgRmFsc2Ugb3IgdmFsdWUgPT0gKCk6CisgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IE5lZ2F0aXZlT3B0aW9uVmFsdWUoKQorLSAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIHR5cGVzLlN0cmluZ1R5cGVzKToKKysgICAgICAgICAgICAgICAgZWxpZiBpc2luc3RhbmNlKHZhbHVlLCAoc3RyLCkpOgorICAgICAgICAgICAgICAgICAgICAgdmFsdWUgPSBQb3NpdGl2ZU9wdGlvblZhbHVlKCh2YWx1ZSwpKQorICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIHR1cGxlKToKKyAgICAgICAgICAgICAgICAgICAgIHZhbHVlID0gUG9zaXRpdmVPcHRpb25WYWx1ZSh2YWx1ZSkKK0BAIC01NDQsNyArNTc1LDcgQEAgY2xhc3MgQ29uZmlndXJlU2FuZGJveChkaWN0KToKKyAgICAgICAgIHJldHVybiB2YWx1ZQorIAorICAgICBkZWYgX2RlcGVuZGVuY3koc2VsZiwgYXJnLCBjYWxsZWVfbmFtZSwgYXJnX25hbWU9Tm9uZSk6CistICAgICAgICBpZiBpc2luc3RhbmNlKGFyZywgdHlwZXMuU3RyaW5nVHlwZXMpOgorKyAgICAgICAgaWYgaXNpbnN0YW5jZShhcmcsIChzdHIsKSk6CisgICAgICAgICAgICAgcHJlZml4LCBuYW1lLCB2YWx1ZXMgPSBPcHRpb24uc3BsaXRfb3B0aW9uKGFyZykKKyAgICAgICAgICAgICBpZiB2YWx1ZXMgIT0gKCk6CisgICAgICAgICAgICAgICAgIHJhaXNlIENvbmZpZ3VyZUVycm9yKCJPcHRpb24gbXVzdCBub3QgY29udGFpbiBhbiAnPSciKQorQEAgLTYwOCw3ICs2MzksNyBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgJycnCisgICAgICAgICB3aGVuID0gc2VsZi5fbm9ybWFsaXplX3doZW4oa3dhcmdzLmdldCgnd2hlbicpLCAnb3B0aW9uJykKKyAgICAgICAgIGFyZ3MgPSBbc2VsZi5fcmVzb2x2ZShhcmcpIGZvciBhcmcgaW4gYXJnc10KKy0gICAgICAgIGt3YXJncyA9IHtrOiBzZWxmLl9yZXNvbHZlKHYpIGZvciBrLCB2IGluIGt3YXJncy5pdGVyaXRlbXMoKQorKyAgICAgICAga3dhcmdzID0ge2s6IHNlbGYuX3Jlc29sdmUodikgZm9yIGssIHYgaW4ga3dhcmdzLml0ZW1zKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGsgIT0gJ3doZW4nfQorICAgICAgICAgb3B0aW9uID0gT3B0aW9uKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgIGlmIHdoZW46CitAQCAtNjg5LDcgKzcyMCw3IEBAIGNsYXNzIENvbmZpZ3VyZVNhbmRib3goZGljdCk6CisgICAgICAgICB3aXRoIHNlbGYub25seV93aGVuX2ltcGwod2hlbik6CisgICAgICAgICAgICAgd2hhdCA9IHNlbGYuX3Jlc29sdmUod2hhdCkKKyAgICAgICAgICAgICBpZiB3aGF0OgorLSAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZSh3aGF0LCB0eXBlcy5TdHJpbmdUeXBlcyk6CisrICAgICAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHdoYXQsIChzdHIsKSk6CisgICAgICAgICAgICAgICAgICAgICByYWlzZSBUeXBlRXJyb3IoIlVuZXhwZWN0ZWQgdHlwZTogJyVzJyIgJSB0eXBlKHdoYXQpLl9fbmFtZV9fKQorICAgICAgICAgICAgICAgICBzZWxmLmluY2x1ZGVfZmlsZSh3aGF0KQorIAorQEAgLTcwNyw3ICs3MzgsNyBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgICAgIChrWzotbGVuKCdfaW1wbCcpXSwgZ2V0YXR0cihzZWxmLCBrKSkKKyAgICAgICAgICAgICBmb3IgayBpbiBkaXIoc2VsZikgaWYgay5lbmRzd2l0aCgnX2ltcGwnKSBhbmQgayAhPSAndGVtcGxhdGVfaW1wbCcKKyAgICAgICAgICkKKy0gICAgICAgIGdsb2IudXBkYXRlKChrLCB2KSBmb3IgaywgdiBpbiBzZWxmLml0ZXJpdGVtcygpIGlmIGsgbm90IGluIGdsb2IpCisrICAgICAgICBnbG9iLnVwZGF0ZSgoaywgdikgZm9yIGssIHYgaW4gc2VsZi5pdGVtcygpIGlmIGsgbm90IGluIGdsb2IpCisgCisgICAgICAgICAjIEFueSBmdW5jdGlvbiBhcmd1bWVudCB0byB0aGUgdGVtcGxhdGUgbXVzdCBiZSBwcmVwYXJlZCB0byBiZSBzYW5kYm94ZWQuCisgICAgICAgICAjIElmIHRoZSB0ZW1wbGF0ZSBpdHNlbGYgcmV0dXJucyBhIGZ1bmN0aW9uIChpbiB3aGljaCBjYXNlLCBpdCdzIHZlcnkKK0BAIC03MzEsNyArNzYyLDcgQEAgY2xhc3MgQ29uZmlndXJlU2FuZGJveChkaWN0KToKKyAgICAgICAgICAgICBkZWYgd3JhcHBlcigqYXJncywgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgICBhcmdzID0gW21heWJlX3ByZXBhcmVfZnVuY3Rpb24oYXJnKSBmb3IgYXJnIGluIGFyZ3NdCisgICAgICAgICAgICAgICAgIGt3YXJncyA9IHtrOiBtYXliZV9wcmVwYXJlX2Z1bmN0aW9uKHYpCistICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBrd2FyZ3MuaXRlcml0ZW1zKCl9CisrICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgaywgdiBpbiBrd2FyZ3MuaXRlbXMoKX0KKyAgICAgICAgICAgICAgICAgcmV0ID0gdGVtcGxhdGUoKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICAgICAgICAgICBpZiBpc2Z1bmN0aW9uKHJldCk6CisgICAgICAgICAgICAgICAgICAgICAjIFdlIGNhbid0IGV4cGVjdCB0aGUgc2FuZGJveGVkIGNvZGUgdG8gdGhpbmsgYWJvdXQgYWxsIHRoZQorQEAgLTc2Niw3ICs3OTcsNyBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgZm9yIHZhbHVlLCByZXF1aXJlZCBpbiAoCisgICAgICAgICAgICAgICAgIChfaW1wb3J0LCBUcnVlKSwgKF9mcm9tLCBGYWxzZSksIChfYXMsIEZhbHNlKSk6CisgCistICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHR5cGVzLlN0cmluZ1R5cGVzKSBhbmQgKAorKyAgICAgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCAoc3RyLCkpIGFuZCAoCisgICAgICAgICAgICAgICAgICAgICByZXF1aXJlZCBvciB2YWx1ZSBpcyBub3QgTm9uZSk6CisgICAgICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5leHBlY3RlZCB0eXBlOiAnJXMnIiAlIHR5cGUodmFsdWUpLl9fbmFtZV9fKQorICAgICAgICAgICAgIGlmIHZhbHVlIGlzIG5vdCBOb25lIGFuZCBub3Qgc2VsZi5SRV9NT0RVTEUubWF0Y2godmFsdWUpOgorQEAgLTgwNyw3ICs4MzgsNyBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgIyBTcGVjaWFsIGNhc2UgZm9yIHRoZSBvcGVuKCkgYnVpbHRpbiwgYmVjYXVzZSBvdGhlcndpc2UsIHVzaW5nIGl0CisgICAgICAgICAjIGZhaWxzIHdpdGggIklPRXJyb3I6IGZpbGUoKSBjb25zdHJ1Y3RvciBub3QgYWNjZXNzaWJsZSBpbgorICAgICAgICAgIyByZXN0cmljdGVkIG1vZGUiCistICAgICAgICBpZiB3aGF0ID09ICdfX2J1aWx0aW5fXy5vcGVuJzoKKysgICAgICAgIGlmIHdoYXQgPT0gJ2J1aWx0aW5zLm9wZW4nOgorICAgICAgICAgICAgIHJldHVybiBsYW1iZGEgKmFyZ3MsICoqa3dhcmdzOiBvcGVuKCphcmdzLCAqKmt3YXJncykKKyAgICAgICAgICMgVW50aWwgdGhpcyBwcm92ZXMgdG8gYmUgYSBwZXJmb3JtYW5jZSBwcm9ibGVtLCBqdXN0IGNvbnN0cnVjdCBhbgorICAgICAgICAgIyBpbXBvcnQgc3RhdGVtZW50IGFuZCBleGVjdXRlIGl0LgorQEAgLTgyOSw3ICs4NjAsNyBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgbmFtZSA9IHNlbGYuX3Jlc29sdmUobmFtZSwgbmVlZF9oZWxwX2RlcGVuZGVuY3k9RmFsc2UpCisgICAgICAgICBpZiBuYW1lIGlzIE5vbmU6CisgICAgICAgICAgICAgcmV0dXJuCistICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShuYW1lLCB0eXBlcy5TdHJpbmdUeXBlcyk6CisrICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShuYW1lLCAoc3RyLCkpOgorICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5leHBlY3RlZCB0eXBlOiAnJXMnIiAlIHR5cGUobmFtZSkuX19uYW1lX18pCisgICAgICAgICBpZiBuYW1lIGluIGRhdGE6CisgICAgICAgICAgICAgcmFpc2UgQ29uZmlndXJlRXJyb3IoCitAQCAtODUwLDYgKzg4MSw3IEBAIGNsYXNzIENvbmZpZ3VyZVNhbmRib3goZGljdCk6CisgCisgICAgICAgICBzZWxmLl9leGVjdXRpb25fcXVldWUuYXBwZW5kKCgKKyAgICAgICAgICAgICBzZWxmLl9yZXNvbHZlX2FuZF9zZXQsIChzZWxmLl9jb25maWcsIG5hbWUsIHZhbHVlLCB3aGVuKSkpCisrICAgICAgICBzZWxmLnRhc2tzX2RlYnVnX291dCgiQ29uZmlndXJlU2FuZGJveC5zZXRfY29uZmlnX2ltcGwgLyAlcyglcyIgJSAobmFtZSwgdmFsdWUpKQorIAorICAgICBkZWYgc2V0X2RlZmluZV9pbXBsKHNlbGYsIG5hbWUsIHZhbHVlLCB3aGVuPU5vbmUpOgorICAgICAgICAgJycnSW1wbGVtZW50YXRpb24gb2Ygc2V0X2RlZmluZSgpLgorQEAgLTg2NCw2ICs4OTYsNyBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgZGVmaW5lcyA9IHNlbGYuX2NvbmZpZy5zZXRkZWZhdWx0KCdERUZJTkVTJywge30pCisgICAgICAgICBzZWxmLl9leGVjdXRpb25fcXVldWUuYXBwZW5kKCgKKyAgICAgICAgICAgICBzZWxmLl9yZXNvbHZlX2FuZF9zZXQsIChkZWZpbmVzLCBuYW1lLCB2YWx1ZSwgd2hlbikpKQorKyAgICAgICAgc2VsZi50YXNrc19kZWJ1Z19vdXQoIkNvbmZpZ3VyZVNhbmRib3guc2V0X2RlZmluZV9pbXBsIC8gJXMoJXMpIiAlIChuYW1lLCB2YWx1ZSkpCisgCisgICAgIGRlZiBpbXBseV9vcHRpb25faW1wbChzZWxmLCBvcHRpb24sIHZhbHVlLCByZWFzb249Tm9uZSwgd2hlbj1Ob25lKToKKyAgICAgICAgICcnJ0ltcGxlbWVudGF0aW9uIG9mIGltcGx5X29wdGlvbigpLgorQEAgLTkyMiw3ICs5NTUsNyBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHBvc3NpYmxlX3JlYXNvbnNbMF0sIE9wdGlvbik6CisgICAgICAgICAgICAgICAgICAgICByZWFzb24gPSBwb3NzaWJsZV9yZWFzb25zWzBdCisgICAgICAgICBpZiBub3QgcmVhc29uIGFuZCAoaXNpbnN0YW5jZSh2YWx1ZSwgKGJvb2wsIHR1cGxlKSkgb3IKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICBpc2luc3RhbmNlKHZhbHVlLCB0eXBlcy5TdHJpbmdUeXBlcykpOgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UodmFsdWUsIChzdHIsKSkpOgorICAgICAgICAgICAgICMgQSByZWFzb24gY2FuIGJlIHByb3ZpZGVkIGF1dG9tYXRpY2FsbHkgd2hlbiBpbXBseV9vcHRpb24KKyAgICAgICAgICAgICAjIGlzIGNhbGxlZCB3aXRoIGFuIGltbWVkaWF0ZSB2YWx1ZS4KKyAgICAgICAgICAgICBfLCBmaWxlbmFtZSwgbGluZSwgXywgXywgXyA9IGluc3BlY3Quc3RhY2soKVsxXQorQEAgLTk1NSwxMCArOTg4LDEwIEBAIGNsYXNzIENvbmZpZ3VyZVNhbmRib3goZGljdCk6CisgICAgICAgICBpZiBub3QgaW5zcGVjdC5pc2Z1bmN0aW9uKGZ1bmMpOgorICAgICAgICAgICAgIHJhaXNlIFR5cGVFcnJvcigiVW5leHBlY3RlZCB0eXBlOiAnJXMnIiAlIHR5cGUoZnVuYykuX19uYW1lX18pCisgICAgICAgICBpZiBmdW5jIGluIHNlbGYuX3ByZXBhcmVkX2Z1bmN0aW9uczoKKy0gICAgICAgICAgICByZXR1cm4gZnVuYywgZnVuYy5mdW5jX2dsb2JhbHMKKysgICAgICAgICAgICByZXR1cm4gZnVuYywgZnVuYy5fX2dsb2JhbHNfXworIAorICAgICAgICAgZ2xvYiA9IFNhbmRib3hlZEdsb2JhbCgKKy0gICAgICAgICAgICAoaywgdikgZm9yIGssIHYgaW4gZnVuYy5mdW5jX2dsb2JhbHMuaXRlcml0ZW1zKCkKKysgICAgICAgICAgICAoaywgdikgZm9yIGssIHYgaW4gZnVuYy5fX2dsb2JhbHNfXy5pdGVtcygpCisgICAgICAgICAgICAgaWYgKGluc3BlY3QuaXNmdW5jdGlvbih2KSBhbmQgdiBub3QgaW4gc2VsZi5fdGVtcGxhdGVzKSBvciAoCisgICAgICAgICAgICAgICAgIGluc3BlY3QuaXNjbGFzcyh2KSBhbmQgaXNzdWJjbGFzcyh2LCBFeGNlcHRpb24pKQorICAgICAgICAgKQorQEAgLTk3OSwyMCArMTAxMiwyMCBAQCBjbGFzcyBDb25maWd1cmVTYW5kYm94KGRpY3QpOgorICAgICAgICAgIyBOb3RlIHRoaXMgaXMgbm90IGVudGlyZWx5IGJ1bGxldCBwcm9vZiAoaWYgdGhlIHZhbHVlIGlzIGUuZy4gYSBsaXN0LAorICAgICAgICAgIyB0aGUgbGlzdCBjb250ZW50cyBjb3VsZCBoYXZlIGNoYW5nZWQpLCBidXQgY292ZXJzIHRoZSBiYXNlcy4KKyAgICAgICAgIGNsb3N1cmUgPSBOb25lCistICAgICAgICBpZiBmdW5jLmZ1bmNfY2xvc3VyZToKKysgICAgICAgIGlmIGZ1bmMuX19jbG9zdXJlX186CisgICAgICAgICAgICAgZGVmIG1ha2VjZWxsKGNvbnRlbnQpOgorICAgICAgICAgICAgICAgICBkZWYgZigpOgorICAgICAgICAgICAgICAgICAgICAgY29udGVudAorLSAgICAgICAgICAgICAgICByZXR1cm4gZi5mdW5jX2Nsb3N1cmVbMF0KKysgICAgICAgICAgICAgICAgcmV0dXJuIGYuX19jbG9zdXJlX19bMF0KKyAKKyAgICAgICAgICAgICBjbG9zdXJlID0gdHVwbGUobWFrZWNlbGwoY2VsbC5jZWxsX2NvbnRlbnRzKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgY2VsbCBpbiBmdW5jLmZ1bmNfY2xvc3VyZSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGNlbGwgaW4gZnVuYy5fX2Nsb3N1cmVfXykKKyAKKyAgICAgICAgIG5ld19mdW5jID0gc2VsZi53cmFwcyhmdW5jKSh0eXBlcy5GdW5jdGlvblR5cGUoCistICAgICAgICAgICAgZnVuYy5mdW5jX2NvZGUsCisrICAgICAgICAgICAgZnVuYy5fX2NvZGVfXywKKyAgICAgICAgICAgICBnbG9iLAorICAgICAgICAgICAgIGZ1bmMuX19uYW1lX18sCistICAgICAgICAgICAgZnVuYy5mdW5jX2RlZmF1bHRzLAorKyAgICAgICAgICAgIGZ1bmMuX19kZWZhdWx0c19fLAorICAgICAgICAgICAgIGNsb3N1cmUKKyAgICAgICAgICkpCisgICAgICAgICBAc2VsZi53cmFwcyhuZXdfZnVuYykKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlndXJlL2NoZWNrX2RlYnVnX3Jhbmdlcy5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvY2hlY2tfZGVidWdfcmFuZ2VzLnB5CitpbmRleCBjMGNhYTljYzUuLmEzZTFmMzdlMSAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvY2hlY2tfZGVidWdfcmFuZ2VzLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlndXJlL2NoZWNrX2RlYnVnX3Jhbmdlcy5weQorQEAgLTYsNyArNiw3IEBACisgIyB0byBhIGdpdmVuIGNvbXBpbGF0aW9uIHVuaXQuIFRoaXMgaXMgdXNlZCBhcyBhIGhlbHBlciB0byBmaW5kIGEgYnVnIGluIHNvbWUKKyAjIHZlcnNpb25zIG9mIEdOVSBsZC4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorKworIAorIGltcG9ydCBzdWJwcm9jZXNzCisgaW1wb3J0IHN5cworQEAgLTQ1LDYgKzQ1LDggQEAgZGVmIGdldF9yYW5nZV9sZW5ndGgocmFuZ2UsIGRlYnVnX3Jhbmdlcyk6CisgZGVmIG1haW4oYmluLCBjb21waWxhdGlvbl91bml0KToKKyAgICAgcCA9IHN1YnByb2Nlc3MuUG9wZW4oWydvYmpkdW1wJywgJy1XJywgYmluXSwgc3Rkb3V0ID0gc3VicHJvY2Vzcy5QSVBFLCBzdGRlcnIgPSBzdWJwcm9jZXNzLlBJUEUpCisgICAgIChvdXQsIGVycikgPSBwLmNvbW11bmljYXRlKCkKKysgICAgaWYgaXNpbnN0YW5jZShvdXQsIGJ5dGVzKToKKysgICAgICAgIG91dCA9IG91dC5kZWNvZGUoJ3V0Zi04JykKKyAgICAgc2VjdGlvbnMgPSByZS5zcGxpdCgnXG4oQ29udGVudHMgb2YgdGhlfFRoZSBzZWN0aW9uKSAnLCBvdXQpCisgICAgIGRlYnVnX2luZm8gPSBbcyBmb3IgcyBpbiBzZWN0aW9ucyBpZiBzLnN0YXJ0c3dpdGgoJy5kZWJ1Z19pbmZvJyldCisgICAgIGRlYnVnX3JhbmdlcyA9IFtzIGZvciBzIGluIHNlY3Rpb25zIGlmIHMuc3RhcnRzd2l0aCgnLmRlYnVnX3JhbmdlcycpXQorQEAgLTU5LDQgKzYxLDQgQEAgZGVmIG1haW4oYmluLCBjb21waWxhdGlvbl91bml0KToKKyAKKyAKKyBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorLSAgICBwcmludChtYWluKCpzeXMuYXJndlsxOl0pKQorKyAgICBwcmludCgobWFpbigqc3lzLmFyZ3ZbMTpdKSkpCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2NvbmZpZ3VyZS9vcHRpb25zLnB5IGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2NvbmZpZ3VyZS9vcHRpb25zLnB5CitpbmRleCA1M2FlMmFlNmQuLjRkODBjYWQ4NiAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9jb25maWd1cmUvb3B0aW9ucy5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2NvbmZpZ3VyZS9vcHRpb25zLnB5CitAQCAtMiw3ICsyLDcgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKKyAjIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uLCB1bmljb2RlX2xpdGVyYWxzCisrCisgCisgaW1wb3J0IG9zCisgaW1wb3J0IHN5cworQEAgLTEyLDcgKzEyLDcgQEAgZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QKKyAKKyBkZWYgaXN0dXBsZW9mc3RyaW5ncyhvYmopOgorICAgICByZXR1cm4gaXNpbnN0YW5jZShvYmosIHR1cGxlKSBhbmQgbGVuKG9iaikgYW5kIGFsbCgKKy0gICAgICAgIGlzaW5zdGFuY2UobywgdHlwZXMuU3RyaW5nVHlwZXMpIGZvciBvIGluIG9iaikKKysgICAgICAgIGlzaW5zdGFuY2UobywgKHN0ciwpKSBmb3IgbyBpbiBvYmopCisgCisgCisgY2xhc3MgT3B0aW9uVmFsdWUodHVwbGUpOgorQEAgLTg4LDcgKzg4LDcgQEAgY2xhc3MgUG9zaXRpdmVPcHRpb25WYWx1ZShPcHRpb25WYWx1ZSk6CisgICAgIGluIHRoZSBmb3JtIG9mIGEgdHVwbGUgZm9yIHdoZW4gdmFsdWVzIGFyZSBnaXZlbiB0byB0aGUgb3B0aW9uIChpbiB0aGUgZm9ybQorICAgICAtLW9wdGlvbj12YWx1ZVssdmFsdWUyLi4uXS4KKyAgICAgJycnCistICAgIGRlZiBfX25vbnplcm9fXyhzZWxmKToKKysgICAgZGVmIF9fYm9vbF9fKHNlbGYpOgorICAgICAgICAgcmV0dXJuIFRydWUKKyAKKyAKK0BAIC0xMTMsNyArMTEzLDcgQEAgY2xhc3MgQ29uZmxpY3RpbmdPcHRpb25FcnJvcihJbnZhbGlkT3B0aW9uRXJyb3IpOgorICAgICAgICAgaWYgZm9ybWF0X2RhdGE6CisgICAgICAgICAgICAgbWVzc2FnZSA9IG1lc3NhZ2UuZm9ybWF0KCoqZm9ybWF0X2RhdGEpCisgICAgICAgICBzdXBlcihDb25mbGljdGluZ09wdGlvbkVycm9yLCBzZWxmKS5fX2luaXRfXyhtZXNzYWdlKQorLSAgICAgICAgZm9yIGssIHYgaW4gZm9ybWF0X2RhdGEuaXRlcml0ZW1zKCk6CisrICAgICAgICBmb3IgaywgdiBpbiBmb3JtYXRfZGF0YS5pdGVtcygpOgorICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgaywgdikKKyAKKyAKK0BAIC0xNDksNyArMTQ5LDcgQEAgY2xhc3MgT3B0aW9uKG9iamVjdCk6CisgICAgICAgICAgICAgICAgICdBdCBsZWFzdCBhbiBvcHRpb24gbmFtZSBvciBhbiBlbnZpcm9ubWVudCB2YXJpYWJsZSBuYW1lIG11c3QgJworICAgICAgICAgICAgICAgICAnYmUgZ2l2ZW4nKQorICAgICAgICAgaWYgbmFtZToKKy0gICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShuYW1lLCB0eXBlcy5TdHJpbmdUeXBlcyk6CisrICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobmFtZSwgKHN0ciwpKToKKyAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZE9wdGlvbkVycm9yKCdPcHRpb24gbXVzdCBiZSBhIHN0cmluZycpCisgICAgICAgICAgICAgaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgnLS0nKToKKyAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZE9wdGlvbkVycm9yKCdPcHRpb24gbXVzdCBzdGFydCB3aXRoIGAtLWAnKQorQEAgLTE1OCw3ICsxNTgsNyBAQCBjbGFzcyBPcHRpb24ob2JqZWN0KToKKyAgICAgICAgICAgICBpZiBub3QgbmFtZS5pc2xvd2VyKCk6CisgICAgICAgICAgICAgICAgIHJhaXNlIEludmFsaWRPcHRpb25FcnJvcignT3B0aW9uIG11c3QgYmUgYWxsIGxvd2VyY2FzZScpCisgICAgICAgICBpZiBlbnY6CistICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZW52LCB0eXBlcy5TdHJpbmdUeXBlcyk6CisrICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZW52LCAoc3RyLCkpOgorICAgICAgICAgICAgICAgICByYWlzZSBJbnZhbGlkT3B0aW9uRXJyb3IoCisgICAgICAgICAgICAgICAgICAgICAnRW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZSBtdXN0IGJlIGEgc3RyaW5nJykKKyAgICAgICAgICAgICBpZiBub3QgZW52LmlzdXBwZXIoKToKK0BAIC0xNjgsOCArMTY4LDggQEAgY2xhc3MgT3B0aW9uKG9iamVjdCk6CisgICAgICAgICAgICAgICAgIGlzaW5zdGFuY2UobmFyZ3MsIGludCkgYW5kIG5hcmdzID49IDApOgorICAgICAgICAgICAgIHJhaXNlIEludmFsaWRPcHRpb25FcnJvcigKKyAgICAgICAgICAgICAgICAgIm5hcmdzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCAnPycsICcqJyBvciAnKyciKQorLSAgICAgICAgaWYgKG5vdCBpc2luc3RhbmNlKGRlZmF1bHQsIHR5cGVzLlN0cmluZ1R5cGVzKSBhbmQKKy0gICAgICAgICAgICAgICAgbm90IGlzaW5zdGFuY2UoZGVmYXVsdCwgKGJvb2wsIHR5cGVzLk5vbmVUeXBlKSkgYW5kCisrICAgICAgICBpZiAobm90IGlzaW5zdGFuY2UoZGVmYXVsdCwgKHN0ciwpKSBhbmQKKysgICAgICAgICAgICAgICAgbm90IGlzaW5zdGFuY2UoZGVmYXVsdCwgKGJvb2wsIHR5cGUoTm9uZSkpKSBhbmQKKyAgICAgICAgICAgICAgICAgbm90IGlzdHVwbGVvZnN0cmluZ3MoZGVmYXVsdCkpOgorICAgICAgICAgICAgIHJhaXNlIEludmFsaWRPcHRpb25FcnJvcigKKyAgICAgICAgICAgICAgICAgJ2RlZmF1bHQgbXVzdCBiZSBhIGJvb2wsIGEgc3RyaW5nIG9yIGEgdHVwbGUgb2Ygc3RyaW5ncycpCitAQCAtMjQxLDcgKzI0MSw3IEBAIGNsYXNzIE9wdGlvbihvYmplY3QpOgorICAgICAgICAgICAgICAgICAgICAgJywgJy5qb2luKCInJXMnIiAlIGMgZm9yIGMgaW4gY2hvaWNlcykpCisgICAgICAgICBlbGlmIGhhc19jaG9pY2VzOgorICAgICAgICAgICAgIG1heGFyZ3MgPSBzZWxmLm1heGFyZ3MKKy0gICAgICAgICAgICBpZiBsZW4oY2hvaWNlcykgPCBtYXhhcmdzIGFuZCBtYXhhcmdzICE9IHN5cy5tYXhpbnQ6CisrICAgICAgICAgICAgaWYgbGVuKGNob2ljZXMpIDwgbWF4YXJncyBhbmQgbWF4YXJncyAhPSBzeXMubWF4c2l6ZToKKyAgICAgICAgICAgICAgICAgcmFpc2UgSW52YWxpZE9wdGlvbkVycm9yKCdOb3QgZW5vdWdoIGBjaG9pY2VzYCBmb3IgYG5hcmdzYCcpCisgICAgICAgICBzZWxmLmNob2ljZXMgPSBjaG9pY2VzCisgICAgICAgICBzZWxmLmhlbHAgPSBoZWxwCitAQCAtMjU1LDcgKzI1NSw3IEBAIGNsYXNzIE9wdGlvbihvYmplY3QpOgorICAgICAgICAgd2hlcmUgcHJlZml4IGlzIG9uZSBvZiAnd2l0aCcsICd3aXRob3V0JywgJ2VuYWJsZScgb3IgJ2Rpc2FibGUnLgorICAgICAgICAgVGhlICc9dmFsdWVzJyBwYXJ0IGlzIG9wdGlvbmFsLiBWYWx1ZXMgYXJlIHNlcGFyYXRlZCB3aXRoIGNvbW1hcy4KKyAgICAgICAgICcnJworLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3B0aW9uLCB0eXBlcy5TdHJpbmdUeXBlcyk6CisrICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvcHRpb24sIChzdHIsKSk6CisgICAgICAgICAgICAgcmFpc2UgSW52YWxpZE9wdGlvbkVycm9yKCdPcHRpb24gbXVzdCBiZSBhIHN0cmluZycpCisgCisgICAgICAgICBlbGVtZW50cyA9IG9wdGlvbi5zcGxpdCgnPScsIDEpCitAQCAtMzA4LDcgKzMwOCw3IEBAIGNsYXNzIE9wdGlvbihvYmplY3QpOgorICAgICBkZWYgbWF4YXJncyhzZWxmKToKKyAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc2VsZi5uYXJncywgaW50KToKKyAgICAgICAgICAgICByZXR1cm4gc2VsZi5uYXJncworLSAgICAgICAgcmV0dXJuIDEgaWYgc2VsZi5uYXJncyA9PSAnPycgZWxzZSBzeXMubWF4aW50CisrICAgICAgICByZXR1cm4gMSBpZiBzZWxmLm5hcmdzID09ICc/JyBlbHNlIHN5cy5tYXhzaXplCisgCisgICAgIGRlZiBfdmFsaWRhdGVfbmFyZ3Moc2VsZiwgbnVtKToKKyAgICAgICAgIG1pbmFyZ3MsIG1heGFyZ3MgPSBzZWxmLm1pbmFyZ3MsIHNlbGYubWF4YXJncworQEAgLTQ5OSw1ICs0OTksNSBAQCBjbGFzcyBDb21tYW5kTGluZUhlbHBlcihvYmplY3QpOgorIAorICAgICBkZWYgX19pdGVyX18oc2VsZik6CisgICAgICAgICBmb3IgZCBpbiAoc2VsZi5fYXJncywgc2VsZi5fZXh0cmFfYXJncyk6CistICAgICAgICAgICAgZm9yIGFyZywgcG9zIGluIGQuaXRlcnZhbHVlcygpOgorKyAgICAgICAgICAgIGZvciBhcmcsIHBvcyBpbiBkLnZhbHVlcygpOgorICAgICAgICAgICAgICAgICB5aWVsZCBhcmcKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlndXJlL3V0aWwucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlndXJlL3V0aWwucHkKK2luZGV4IDlkOGIyZWIwZS4uYTEyOTg2ZTQ4IDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2NvbmZpZ3VyZS91dGlsLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29uZmlndXJlL3V0aWwucHkKK0BAIC03NywxNSArNzcsNyBAQCBjbGFzcyBDb25maWd1cmVPdXRwdXRIYW5kbGVyKGxvZ2dpbmcuSGFuZGxlcik6CisgICAgICAgICAjIFB5dGhvbiBoYXMgdGhpcyBmZWF0dXJlIHdoZXJlIGl0IHNldHMgdGhlIGVuY29kaW5nIG9mIHBpcGVzIHRvCisgICAgICAgICAjIGFzY2lpLCB3aGljaCBibGF0YW50bHkgZmFpbHMgd2hlbiB0cnlpbmcgdG8gcHJpbnQgb3V0IG5vbi1hc2NpaS4KKyAgICAgICAgIGRlZiBmaXhfZW5jb2RpbmcoZmgpOgorLSAgICAgICAgICAgIHRyeToKKy0gICAgICAgICAgICAgICAgaXNhdHR5ID0gZmguaXNhdHR5KCkKKy0gICAgICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6CistICAgICAgICAgICAgICAgIGlzYXR0eSA9IFRydWUKKy0KKy0gICAgICAgICAgICBpZiBub3QgaXNhdHR5OgorLSAgICAgICAgICAgICAgICBlbmNvZGluZyA9IGdldHByZWZlcnJlZGVuY29kaW5nKCkKKy0gICAgICAgICAgICAgICAgaWYgZW5jb2Rpbmc6CistICAgICAgICAgICAgICAgICAgICByZXR1cm4gY29kZWNzLmdldHdyaXRlcihlbmNvZGluZykoZmgpCisrICAgICAgICAgICAgIyBubyBtYWdpYyBvbiBvZSAvIHB5dGhvbjMKKyAgICAgICAgICAgICByZXR1cm4gZmgKKyAKKyAgICAgICAgIHNlbGYuX3N0ZG91dCA9IGZpeF9lbmNvZGluZyhzdGRvdXQpCitAQCAtMjAwLDcgKzE5Miw3IEBAIGNsYXNzIExpbmVJTyhvYmplY3QpOgorICAgICAgICAgc2VsZi5fZXJyb3JzID0gZXJyb3JzCisgCisgICAgIGRlZiB3cml0ZShzZWxmLCBidWYpOgorLSAgICAgICAgaWYgc2VsZi5fZW5jb2RpbmcgYW5kIGlzaW5zdGFuY2UoYnVmLCBzdHIpOgorKyAgICAgICAgaWYgc2VsZi5fZW5jb2RpbmcgYW5kIGlzaW5zdGFuY2UoYnVmLCBieXRlcyk6CisgICAgICAgICAgICAgYnVmID0gYnVmLmRlY29kZShzZWxmLl9lbmNvZGluZywgc2VsZi5fZXJyb3JzKQorICAgICAgICAgbGluZXMgPSBidWYuc3BsaXRsaW5lcygpCisgICAgICAgICBpZiBub3QgbGluZXM6CitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2NvbnRyb2xsZXIvYnVpbGRpbmcucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29udHJvbGxlci9idWlsZGluZy5weQoraW5kZXggZDVhZjUzMmY3Li5lOTgxMGZlNTggMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvY29udHJvbGxlci9idWlsZGluZy5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2NvbnRyb2xsZXIvYnVpbGRpbmcucHkKK0BAIC0yLDcgKzIsNyBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCBlcnJubworIGltcG9ydCBnZXRwYXNzCitAQCAtMTQ2LDcgKzE0Niw3IEBAIGNsYXNzIFRpZXJTdGF0dXMob2JqZWN0KToKKyAgICAgICAgICIiIgorICAgICAgICAgbyA9IFtdCisgCistICAgICAgICBmb3IgdGllciwgc3RhdGUgaW4gc2VsZi50aWVycy5pdGVtcygpOgorKyAgICAgICAgZm9yIHRpZXIsIHN0YXRlIGluIGxpc3Qoc2VsZi50aWVycy5pdGVtcygpKToKKyAgICAgICAgICAgICB0X2VudHJ5ID0gZGljdCgKKyAgICAgICAgICAgICAgICAgbmFtZT10aWVyLAorICAgICAgICAgICAgICAgICBzdGFydD1zdGF0ZVsnYmVnaW5fdGltZSddLAorQEAgLTU3NCw3ICs1NzQsNyBAQCBjbGFzcyBCdWlsZFByb2dyZXNzRm9vdGVyKEZvb3Rlcik6CisgCisgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZXJtaW5hbCwgbW9uaXRvcik6CisgICAgICAgICBGb290ZXIuX19pbml0X18oc2VsZiwgdGVybWluYWwpCistICAgICAgICBzZWxmLnRpZXJzID0gbW9uaXRvci50aWVycy50aWVyX3N0YXR1cy52aWV3aXRlbXMoKQorKyAgICAgICAgc2VsZi50aWVycyA9IG1vbml0b3IudGllcnMudGllcl9zdGF0dXMuaXRlbXMoKQorIAorICAgICBkZWYgZHJhdyhzZWxmKToKKyAgICAgICAgICIiIkRyYXdzIHRoaXMgZm9vdGVyIGluIHRoZSB0ZXJtaW5hbC4iIiIKK0BAIC05MTEsOCArOTExLDggQEAgY2xhc3MgQ0NhY2hlU3RhdHMob2JqZWN0KToKKyAKKyAgICAgICAgIHJldHVybiAnXG4nLmpvaW4obGluZXMpCisgCistICAgIGRlZiBfX25vbnplcm9fXyhzZWxmKToKKy0gICAgICAgIHJlbGF0aXZlX3ZhbHVlcyA9IFt2IGZvciBrLCB2IGluIHNlbGYuX3ZhbHVlcy5pdGVtcygpCisrICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKKysgICAgICAgIHJlbGF0aXZlX3ZhbHVlcyA9IFt2IGZvciBrLCB2IGluIGxpc3Qoc2VsZi5fdmFsdWVzLml0ZW1zKCkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgayBub3QgaW4gc2VsZi5BQlNPTFVURV9LRVlTXQorICAgICAgICAgcmV0dXJuIChhbGwodiA+PSAwIGZvciB2IGluIHJlbGF0aXZlX3ZhbHVlcykgYW5kCisgICAgICAgICAgICAgICAgIGFueSh2ID4gMCBmb3IgdiBpbiByZWxhdGl2ZV92YWx1ZXMpKQorQEAgLTExNTYsNyArMTE1Niw3IEBAIGNsYXNzIEJ1aWxkRHJpdmVyKE1vemJ1aWxkT2JqZWN0KToKKyAKKyAgICAgICAgIGhpZ2hfZmluZGVyLCBmaW5kZXJfcGVyY2VudCA9IG1vbml0b3IuaGF2ZV9oaWdoX2ZpbmRlcl91c2FnZSgpCisgICAgICAgICBpZiBoaWdoX2ZpbmRlcjoKKy0gICAgICAgICAgICBwcmludChGSU5ERVJfU0xPV19NRVNTQUdFICUgZmluZGVyX3BlcmNlbnQpCisrICAgICAgICAgICAgcHJpbnQoKEZJTkRFUl9TTE9XX01FU1NBR0UgJSBmaW5kZXJfcGVyY2VudCkpCisgCisgICAgICAgICBjY2FjaGVfZW5kID0gbW9uaXRvci5jY2FjaGVfc3RhdHMoKQorIAorQEAgLTEyNzYsOCArMTI3Niw4IEBAIGNsYXNzIEJ1aWxkRHJpdmVyKE1vemJ1aWxkT2JqZWN0KToKKyAgICAgICAgICIiIkluc3RhbGwgdGVzdCBmaWxlcy4iIiIKKyAKKyAgICAgICAgIGlmIHNlbGYuaXNfY2xvYmJlcl9uZWVkZWQoKToKKy0gICAgICAgICAgICBwcmludChJTlNUQUxMX1RFU1RTX0NMT0JCRVIuZm9ybWF0KAorLSAgICAgICAgICAgICAgICAgIGNsb2JiZXJfZmlsZT1vcy5wYXRoLmpvaW4oc2VsZi50b3BvYmpkaXIsICdDTE9CQkVSJykpKQorKyAgICAgICAgICAgIHByaW50KChJTlNUQUxMX1RFU1RTX0NMT0JCRVIuZm9ybWF0KAorKyAgICAgICAgICAgICAgICAgIGNsb2JiZXJfZmlsZT1vcy5wYXRoLmpvaW4oc2VsZi50b3BvYmpkaXIsICdDTE9CQkVSJykpKSkKKyAgICAgICAgICAgICBzeXMuZXhpdCgxKQorIAorICAgICAgICAgaWYgbm90IHRlc3Rfb2JqczoKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvZnJvbnRlbmQvY29udGV4dC5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9mcm9udGVuZC9jb250ZXh0LnB5CitpbmRleCBmYmRiZWZjMWQuLjFhZWY2YTY1YSAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9mcm9udGVuZC9jb250ZXh0LnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvZnJvbnRlbmQvY29udGV4dC5weQorQEAgLTE0LDcgKzE0LDcgQEAgSWYgeW91IGFyZSBsb29raW5nIGZvciB0aGUgYWJzb2x1dGUgYXV0aG9yaXR5IG9uIHdoYXQgbW96LmJ1aWxkIGZpbGVzIGNhbgorIGNvbnRhaW4sIHlvdSd2ZSBjb21lIHRvIHRoZSByaWdodCBwbGFjZS4KKyAiIiIKKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCBvcworIAorQEAgLTIzNywxNSArMjM3LDE1IEBAIGNsYXNzIENvbnRleHQoS2V5ZWREZWZhdWx0RGljdCk6CisgICAgICAgICBUaGlzIGZ1bmN0aW9uIGlzIHRyYW5zYWN0aW9uYWw6IGlmIHNldGl0ZW0gZmFpbHMgZm9yIG9uZSBvZiB0aGUgdmFsdWVzLAorICAgICAgICAgdGhlIGNvbnRleHQgaXMgbm90IHVwZGF0ZWQgYXQgYWxsLiIiIgorICAgICAgICAgaWYgaXNpbnN0YW5jZShpdGVyYWJsZSwgZGljdCk6CistICAgICAgICAgICAgaXRlcmFibGUgPSBpdGVyYWJsZS5pdGVtcygpCisrICAgICAgICAgICAgaXRlcmFibGUgPSBsaXN0KGl0ZXJhYmxlLml0ZW1zKCkpCisgCisgICAgICAgICB1cGRhdGUgPSB7fQorLSAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gaXRlcnRvb2xzLmNoYWluKGl0ZXJhYmxlLCBrd2FyZ3MuaXRlbXMoKSk6CisrICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBpdGVydG9vbHMuY2hhaW4oaXRlcmFibGUsIGxpc3Qoa3dhcmdzLml0ZW1zKCkpKToKKyAgICAgICAgICAgICBzdG9yZWRfdHlwZSA9IHNlbGYuX3ZhbGlkYXRlKGtleSwgdmFsdWUpCisgICAgICAgICAgICAgIyBEb24ndCBjcmVhdGUgYW4gaW5zdGFuY2Ugb2Ygc3RvcmVkX3R5cGUgaWYgY29lcmNpb24gaXMgbmVlZGVkLAorICAgICAgICAgICAgICMgdW50aWwgYWxsIHZhbHVlcyBhcmUgdmFsaWRhdGVkLgorICAgICAgICAgICAgIHVwZGF0ZVtrZXldID0gKHZhbHVlLCBzdG9yZWRfdHlwZSkKKy0gICAgICAgIGZvciBrZXksICh2YWx1ZSwgc3RvcmVkX3R5cGUpIGluIHVwZGF0ZS5pdGVtcygpOgorKyAgICAgICAgZm9yIGtleSwgKHZhbHVlLCBzdG9yZWRfdHlwZSkgaW4gbGlzdCh1cGRhdGUuaXRlbXMoKSk6CisgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHN0b3JlZF90eXBlKToKKyAgICAgICAgICAgICAgICAgdXBkYXRlW2tleV0gPSBzdG9yZWRfdHlwZSh2YWx1ZSkKKyAgICAgICAgICAgICBlbHNlOgorQEAgLTMxMSw3ICszMTEsNyBAQCBjbGFzcyBCYXNlQ29tcGlsZUZsYWdzKENvbnRleHREZXJpdmVkVmFsdWUsIGRpY3QpOgorICAgICAgICAgIyBhIHRlbXBsYXRlIHdlcmUgc2V0IGFuZCB3aGljaCB3ZXJlIHByb3ZpZGVkIGFzIGRlZmF1bHRzLgorICAgICAgICAgdGVtcGxhdGVfbmFtZSA9IGdldGF0dHIoY29udGV4dCwgJ3RlbXBsYXRlJywgTm9uZSkKKyAgICAgICAgIGlmIHRlbXBsYXRlX25hbWUgaW4gKE5vbmUsICdHeXAnKToKKy0gICAgICAgICAgICBkaWN0Ll9faW5pdF9fKHNlbGYsICgoaywgdiBpZiB2IGlzIE5vbmUgZWxzZSBUeXBlZExpc3QodW5pY29kZSkodikpCisrICAgICAgICAgICAgZGljdC5fX2luaXRfXyhzZWxmLCAoKGssIHYgaWYgdiBpcyBOb25lIGVsc2UgVHlwZWRMaXN0KHN0cikodikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGssIHYsIF8gaW4gc2VsZi5mbGFnX3ZhcmlhYmxlcykpCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIGRpY3QuX19pbml0X18oc2VsZikKK0BAIC01MjAsMTMgKzUyMCwxMyBAQCBjbGFzcyBDb21waWxlRmxhZ3MoQmFzZUNvbXBpbGVGbGFncyk6CisgICAgICAgICBpZiBrZXkgaW4gc2VsZiBhbmQgc2VsZltrZXldIGlzIE5vbmU6CisgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignYCVzYCBtYXkgbm90IGJlIHNldCBpbiBDT01QSUxFX0ZMQUdTIGZyb20gbW96LmJ1aWxkLCB0aGlzICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICd2YWx1ZSBpcyByZXNvbHZlZCBmcm9tIHRoZSBlbWl0dGVyLicgJSBrZXkpCistICAgICAgICBpZiBub3QgKGlzaW5zdGFuY2UodmFsdWUsIGxpc3QpIGFuZCBhbGwoaXNpbnN0YW5jZSh2LCBiYXNlc3RyaW5nKSBmb3IgdiBpbiB2YWx1ZSkpOgorKyAgICAgICAgaWYgbm90IChpc2luc3RhbmNlKHZhbHVlLCBsaXN0KSBhbmQgYWxsKGlzaW5zdGFuY2Uodiwgc3RyKSBmb3IgdiBpbiB2YWx1ZSkpOgorICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ0EgbGlzdCBvZiBzdHJpbmdzIG11c3QgYmUgcHJvdmlkZWQgYXMgYSB2YWx1ZSBmb3IgYSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29tcGlsZSBmbGFncyBjYXRlZ29yeS4nKQorICAgICAgICAgZGljdC5fX3NldGl0ZW1fXyhzZWxmLCBrZXksIHZhbHVlKQorIAorIAorLWNsYXNzIEZpbmFsVGFyZ2V0VmFsdWUoQ29udGV4dERlcml2ZWRWYWx1ZSwgdW5pY29kZSk6CisrY2xhc3MgRmluYWxUYXJnZXRWYWx1ZShDb250ZXh0RGVyaXZlZFZhbHVlLCBzdHIpOgorICAgICBkZWYgX19uZXdfXyhjbHMsIGNvbnRleHQsIHZhbHVlPSIiKToKKyAgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICAgICB2YWx1ZSA9ICdkaXN0LycKK0BAIC01MzYsNyArNTM2LDcgQEAgY2xhc3MgRmluYWxUYXJnZXRWYWx1ZShDb250ZXh0RGVyaXZlZFZhbHVlLCB1bmljb2RlKToKKyAgICAgICAgICAgICAgICAgdmFsdWUgKz0gJ2JpbicKKyAgICAgICAgICAgICBpZiBjb250ZXh0WydESVNUX1NVQkRJUiddOgorICAgICAgICAgICAgICAgICB2YWx1ZSArPSAnLycgKyBjb250ZXh0WydESVNUX1NVQkRJUiddCistICAgICAgICByZXR1cm4gdW5pY29kZS5fX25ld19fKGNscywgdmFsdWUpCisrICAgICAgICByZXR1cm4gc3RyLl9fbmV3X18oY2xzLCB2YWx1ZSkKKyAKKyAKKyBkZWYgRW51bSgqdmFsdWVzKToKK0BAIC01ODQsNyArNTg0LDcgQEAgY2xhc3MgUGF0aE1ldGEodHlwZSk6CisgICAgICAgICAgICAgICAgIGNscyA9IFNvdXJjZVBhdGgKKyAgICAgICAgIHJldHVybiBzdXBlcihQYXRoTWV0YSwgY2xzKS5fX2NhbGxfXyhjb250ZXh0LCB2YWx1ZSkKKyAKKy1jbGFzcyBQYXRoKENvbnRleHREZXJpdmVkVmFsdWUsIHVuaWNvZGUpOgorK2NsYXNzIFBhdGgoQ29udGV4dERlcml2ZWRWYWx1ZSwgc3RyLCBtZXRhY2xhc3M9UGF0aE1ldGEpOgorICAgICAiIiJTdG9yZXMgYW5kIHJlc29sdmVzIGEgc291cmNlIHBhdGggcmVsYXRpdmUgdG8gYSBnaXZlbiBjb250ZXh0CisgCisgICAgIFRoaXMgY2xhc3MgaXMgdXNlZCBhcyBhIGJhY2tpbmcgdHlwZSBmb3Igc29tZSBvZiB0aGUgc2FuZGJveCB2YXJpYWJsZXMuCitAQCAtNTk1LDcgKzU5NSw2IEBAIGNsYXNzIFBhdGgoQ29udGV4dERlcml2ZWRWYWx1ZSwgdW5pY29kZSk6CisgICAgICAgLSAnIW9iamRpci9yZWxhdGl2ZS9wYXRocycKKyAgICAgICAtICclL2ZpbGVzeXN0ZW0vYWJzb2x1dGUvcGF0aHMnCisgICAgICIiIgorLSAgICBfX21ldGFjbGFzc19fID0gUGF0aE1ldGEKKyAKKyAgICAgZGVmIF9fbmV3X18oY2xzLCBjb250ZXh0LCB2YWx1ZT1Ob25lKToKKyAgICAgICAgIHJldHVybiBzdXBlcihQYXRoLCBjbHMpLl9fbmV3X18oY2xzLCB2YWx1ZSkKK0BAIC02MTIsMTAgKzYxMSwxNCBAQCBjbGFzcyBQYXRoKENvbnRleHREZXJpdmVkVmFsdWUsIHVuaWNvZGUpOgorICAgICAgICAgIiIiCisgICAgICAgICByZXR1cm4gUGF0aChzZWxmLmNvbnRleHQsIG1venBhdGguam9pbihzZWxmLCAqcCkpCisgCisrICAgIEBzdGF0aWNtZXRob2QKKysgICAgZGVmIGNtcChhLCBiKToKKysgICAgICAgIHJldHVybiAoYSA+IGIpIC0gKGEgPCBiKQorKworICAgICBkZWYgX19jbXBfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICBpZiBpc2luc3RhbmNlKG90aGVyLCBQYXRoKSBhbmQgc2VsZi5zcmNkaXIgIT0gb3RoZXIuc3JjZGlyOgorLSAgICAgICAgICAgIHJldHVybiBjbXAoc2VsZi5mdWxsX3BhdGgsIG90aGVyLmZ1bGxfcGF0aCkKKy0gICAgICAgIHJldHVybiBjbXAodW5pY29kZShzZWxmKSwgb3RoZXIpCisrICAgICAgICAgICAgcmV0dXJuIHNlbGYuY21wKHNlbGYuZnVsbF9wYXRoLCBvdGhlci5mdWxsX3BhdGgpCisrICAgICAgICByZXR1cm4gc2VsZi5jbXAoc3RyKHNlbGYpLCBvdGhlcikKKyAKKyAgICAgIyBfX2NtcF9fIGlzIG5vdCBlbm91Z2ggYmVjYXVzZSB1bmljb2RlIGhhcyBfX2VxX18sIF9fbmVfXywgZXRjLiBkZWZpbmVkCisgICAgICMgYW5kIF9fY21wX18gaXMgb25seSB1c2VkIGZvciB0aG9zZSB3aGVuIHRoZXkgZG9uJ3QgZXhpc3QuCitAQCAtNzczLDcgKzc3Niw3IEBAIGRlZiBDb250ZXh0RGVyaXZlZFR5cGVkUmVjb3JkKCpmaWVsZHMpOgorICAgICAgICAgX19zbG90c19fID0gdHVwbGUoW25hbWUgZm9yIG5hbWUsIF8gaW4gZmllbGRzXSkKKyAKKyAgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb250ZXh0KToKKy0gICAgICAgICAgICBmb3IgZm5hbWUsIGZ0eXBlIGluIHNlbGYuX2ZpZWxkcy5pdGVtcygpOgorKyAgICAgICAgICAgIGZvciBmbmFtZSwgZnR5cGUgaW4gbGlzdChzZWxmLl9maWVsZHMuaXRlbXMoKSk6CisgICAgICAgICAgICAgICAgIGlmIGlzc3ViY2xhc3MoZnR5cGUsIENvbnRleHREZXJpdmVkVmFsdWUpOgorICAgICAgICAgICAgICAgICAgICAgc2V0YXR0cihzZWxmLCBmbmFtZSwgc2VsZi5fZmllbGRzW2ZuYW1lXShjb250ZXh0KSkKKyAgICAgICAgICAgICAgICAgZWxzZToKK0BAIC05MDksOCArOTEyLDggQEAgZGVmIFR5cGVkTGlzdFdpdGhBY3Rpb24odHlwLCBhY3Rpb24pOgorICAgICByZXR1cm4gX1R5cGVkTGlzdFdpdGhBY3Rpb24KKyAKKyBXZWJQbGF0Zm9ybVRlc3RNYW5pZmVzdCA9IFR5cGVkTmFtZWRUdXBsZSgiV2ViUGxhdGZvcm1UZXN0TWFuaWZlc3QiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsoIm1hbmlmZXN0X3BhdGgiLCB1bmljb2RlKSwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCJ0ZXN0X3Jvb3QiLCB1bmljb2RlKV0pCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWygibWFuaWZlc3RfcGF0aCIsIHN0ciksCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgidGVzdF9yb290Iiwgc3RyKV0pCisgTWFuaWZlc3RwYXJzZXJNYW5pZmVzdExpc3QgPSBPcmRlcmVkUGF0aExpc3RXaXRoQWN0aW9uKHJlYWRfbWFuaWZlc3RwYXJzZXJfbWFuaWZlc3QpCisgUmVmdGVzdE1hbmlmZXN0TGlzdCA9IE9yZGVyZWRQYXRoTGlzdFdpdGhBY3Rpb24ocmVhZF9yZWZ0ZXN0X21hbmlmZXN0KQorIFdwdE1hbmlmZXN0TGlzdCA9IFR5cGVkTGlzdFdpdGhBY3Rpb24oV2ViUGxhdGZvcm1UZXN0TWFuaWZlc3QsIHJlYWRfd3B0X21hbmlmZXN0KQorQEAgLTkxOCwxOCArOTIxLDE4IEBAIFdwdE1hbmlmZXN0TGlzdCA9IFR5cGVkTGlzdFdpdGhBY3Rpb24oV2ViUGxhdGZvcm1UZXN0TWFuaWZlc3QsIHJlYWRfd3B0X21hbmlmZXN0CisgT3JkZXJlZFNvdXJjZUxpc3QgPSBDb250ZXh0RGVyaXZlZFR5cGVkTGlzdChTb3VyY2VQYXRoLCBTdHJpY3RPcmRlcmluZ09uQXBwZW5kTGlzdCkKKyBPcmRlcmVkVGVzdEZsYXZvckxpc3QgPSBUeXBlZExpc3QoRW51bSgqYWxsX3Rlc3RfZmxhdm9ycygpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3RyaWN0T3JkZXJpbmdPbkFwcGVuZExpc3QpCistT3JkZXJlZFN0cmluZ0xpc3QgPSBUeXBlZExpc3QodW5pY29kZSwgU3RyaWN0T3JkZXJpbmdPbkFwcGVuZExpc3QpCisrT3JkZXJlZFN0cmluZ0xpc3QgPSBUeXBlZExpc3Qoc3RyLCBTdHJpY3RPcmRlcmluZ09uQXBwZW5kTGlzdCkKKyBEZXBlbmRlbnRUZXN0c0VudHJ5ID0gQ29udGV4dERlcml2ZWRUeXBlZFJlY29yZCgoJ2ZpbGVzJywgT3JkZXJlZFNvdXJjZUxpc3QpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgndGFncycsIE9yZGVyZWRTdHJpbmdMaXN0KSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoJ2ZsYXZvcnMnLCBPcmRlcmVkVGVzdEZsYXZvckxpc3QpKQorIEJ1Z3ppbGxhQ29tcG9uZW50ID0gVHlwZWROYW1lZFR1cGxlKCdCdWd6aWxsYUNvbXBvbmVudCcsCistICAgICAgICAgICAgICAgICAgICAgICAgWygncHJvZHVjdCcsIHVuaWNvZGUpLCAoJ2NvbXBvbmVudCcsIHVuaWNvZGUpXSkKKysgICAgICAgICAgICAgICAgICAgICAgICBbKCdwcm9kdWN0Jywgc3RyKSwgKCdjb21wb25lbnQnLCBzdHIpXSkKKyBTY2hlZHVsaW5nQ29tcG9uZW50cyA9IENvbnRleHREZXJpdmVkVHlwZWRSZWNvcmQoCistICAgICAgICAoJ2luY2x1c2l2ZScsIFR5cGVkTGlzdCh1bmljb2RlLCBTdHJpY3RPcmRlcmluZ09uQXBwZW5kTGlzdCkpLAorLSAgICAgICAgKCdleGNsdXNpdmUnLCBUeXBlZExpc3QodW5pY29kZSwgU3RyaWN0T3JkZXJpbmdPbkFwcGVuZExpc3QpKSkKKysgICAgICAgICgnaW5jbHVzaXZlJywgVHlwZWRMaXN0KHN0ciwgU3RyaWN0T3JkZXJpbmdPbkFwcGVuZExpc3QpKSwKKysgICAgICAgICgnZXhjbHVzaXZlJywgVHlwZWRMaXN0KHN0ciwgU3RyaWN0T3JkZXJpbmdPbkFwcGVuZExpc3QpKSkKKyAKKyBHZW5lcmF0ZWRGaWxlc0xpc3QgPSBTdHJpY3RPcmRlcmluZ09uQXBwZW5kTGlzdFdpdGhGbGFnc0ZhY3RvcnkoeworLSAgICAnc2NyaXB0JzogdW5pY29kZSwKKysgICAgJ3NjcmlwdCc6IHN0ciwKKyAgICAgJ2lucHV0cyc6IGxpc3QsCisgICAgICdmbGFncyc6IGxpc3QsIH0pCisgCitAQCAtMTA5Niw3ICsxMDk5LDcgQEAgY2xhc3MgRmlsZXMoU3ViQ29udGV4dCk6CisgICAgICAgICBzZWxmLnRlc3RfdGFncyB8PSBvdGhlci50ZXN0X3RhZ3MKKyAgICAgICAgIHNlbGYudGVzdF9mbGF2b3JzIHw9IG90aGVyLnRlc3RfZmxhdm9ycworIAorLSAgICAgICAgZm9yIGssIHYgaW4gb3RoZXIuaXRlbXMoKToKKysgICAgICAgIGZvciBrLCB2IGluIGxpc3Qob3RoZXIuaXRlbXMoKSk6CisgICAgICAgICAgICAgaWYgayA9PSAnSU1QQUNURURfVEVTVFMnOgorICAgICAgICAgICAgICAgICBzZWxmLnRlc3RfZmlsZXMgfD0gc2V0KG1venBhdGgucmVscGF0aChlLmZ1bGxfcGF0aCwgZS5jb250ZXh0LmNvbmZpZy50b3BzcmNkaXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGUgaW4gdi5maWxlcykKK0BAIC0xMTU0LDcgKzExNTcsNyBAQCBjbGFzcyBGaWxlcyhTdWJDb250ZXh0KToKKyAKKyAgICAgICAgIGJ1Z19jb21wb25lbnRzID0gQ291bnRlcigpCisgCistICAgICAgICBmb3IgZiBpbiBmaWxlcy52YWx1ZXMoKToKKysgICAgICAgIGZvciBmIGluIGxpc3QoZmlsZXMudmFsdWVzKCkpOgorICAgICAgICAgICAgIGJ1Z19jb21wb25lbnQgPSBmLmdldCgnQlVHX0NPTVBPTkVOVCcpCisgICAgICAgICAgICAgaWYgYnVnX2NvbXBvbmVudDoKKyAgICAgICAgICAgICAgICAgYnVnX2NvbXBvbmVudHNbYnVnX2NvbXBvbmVudF0gKz0gMQorQEAgLTEyMzIsNyArMTIzNSw3IEBAIFZBUklBQkxFUyA9IHsKKyAgICAgICAgIFJ1c3RMaWJyYXJ5IHRlbXBsYXRlIGluc3RlYWQuCisgICAgICAgICAiIiIpLAorIAorLSAgICAnUlVTVF9MSUJSQVJZX1RBUkdFVF9ESVInOiAodW5pY29kZSwgdW5pY29kZSwKKysgICAgJ1JVU1RfTElCUkFSWV9UQVJHRVRfRElSJzogKHN0ciwgc3RyLAorICAgICAgICAgIiIiV2hlcmUgQ0FSR09fVEFSR0VUX0RJUiBzaG91bGQgcG9pbnQgd2hlbiBjb21waWxpbmcgdGhpcyBsaWJyYXJ5LiAgSWYKKyAgICAgICAgIG5vdCBzZXQsIGl0IGRlZmF1bHRzIHRvIHRoZSBjdXJyZW50IG9iamRpci4gIEl0IHNob3VsZCBiZSBhIHJlbGF0aXZlIHBhdGgKKyAgICAgICAgIHRvIHRoZSBjdXJyZW50IG9iamRpcjsgYWJzb2x1dGUgcGF0aHMgc2hvdWxkIG5vdCBiZSB1c2VkLgorQEAgLTEyNDgsNyArMTI1MSw3IEBAIFZBUklBQkxFUyA9IHsKKyAgICAgICAgIEhvc3RSdXN0TGlicmFyeSB0ZW1wbGF0ZSBpbnN0ZWFkLgorICAgICAgICAgIiIiKSwKKyAKKy0gICAgJ1JVU1RfVEVTVCc6ICh1bmljb2RlLCB1bmljb2RlLAorKyAgICAnUlVTVF9URVNUJzogKHN0ciwgc3RyLAorICAgICAgICAgIiIiTmFtZSBvZiBhIFJ1c3QgdGVzdCB0byBidWlsZCBhbmQgcnVuIHZpYSBgY2FyZ28gdGVzdGAuCisgCisgICAgICAgICBUaGlzIHZhcmlhYmxlIHNob3VsZCBub3QgYmUgdXNlZCBkaXJlY3RseTsgeW91IHNob3VsZCBiZSB1c2luZyB0aGUKK0BAIC0xNDg3LDcgKzE0OTAsNyBAQCBWQVJJQUJMRVMgPSB7CisgICAgICAgICAiIiJMaWtlIGBgT0JKRElSX0ZJTEVTYGAsIHdpdGggcHJlcHJvY2Vzc2luZy4gVXNlIHNwYXJpbmdseS4KKyAgICAgICAgICIiIiksCisgCistICAgICdGSU5BTF9MSUJSQVJZJzogKHVuaWNvZGUsIHVuaWNvZGUsCisrICAgICdGSU5BTF9MSUJSQVJZJzogKHN0ciwgc3RyLAorICAgICAgICAgIiIiTGlicmFyeSBpbiB3aGljaCB0aGUgb2JqZWN0cyBvZiB0aGUgY3VycmVudCBkaXJlY3Rvcnkgd2lsbCBiZSBsaW5rZWQuCisgCisgICAgICAgICBUaGlzIHZhcmlhYmxlIGNvbnRhaW5zIHRoZSBuYW1lIG9mIGEgbGlicmFyeSwgZGVmaW5lZCBlbHNld2hlcmUgd2l0aAorQEAgLTE1MjgsNyArMTUzMSw3IEBAIFZBUklBQkxFUyA9IHsKKyAgICAgICAgIHdpdGggdGhlIGhvc3QgY29tcGlsZXIuCisgICAgICAgICAiIiIpLAorIAorLSAgICAnSE9TVF9MSUJSQVJZX05BTUUnOiAodW5pY29kZSwgdW5pY29kZSwKKysgICAgJ0hPU1RfTElCUkFSWV9OQU1FJzogKHN0ciwgc3RyLAorICAgICAgICAgIiIiTmFtZSBvZiB0YXJnZXQgbGlicmFyeSBnZW5lcmF0ZWQgd2hlbiBjcm9zcyBjb21waWxpbmcuCisgICAgICAgICAiIiIpLAorIAorQEAgLTE1NDYsNyArMTU0OSw3IEBAIFZBUklBQkxFUyA9IHsKKyAgICAgICAgIGxpYnJhcmllcyB0aGF0IGxpbmsgaW50byB0aGlzIGxpYnJhcnkgdmlhIEZJTkFMX0xJQlJBUlkuCisgICAgICAgICAiIiIpLAorIAorLSAgICAnTElCUkFSWV9OQU1FJzogKHVuaWNvZGUsIHVuaWNvZGUsCisrICAgICdMSUJSQVJZX05BTUUnOiAoc3RyLCBzdHIsCisgICAgICAgICAiIiJUaGUgY29kZSBuYW1lIG9mIHRoZSBsaWJyYXJ5IGdlbmVyYXRlZCBmb3IgYSBkaXJlY3RvcnkuCisgCisgICAgICAgICBCeSBkZWZhdWx0IFNUQVRJQ19MSUJSQVJZX05BTUUgYW5kIFNIQVJFRF9MSUJSQVJZX05BTUUgdGFrZSB0aGlzIG5hbWUuCitAQCAtMTU1OCw3ICsxNTYxLDcgQEAgVkFSSUFCTEVTID0geworICAgICAgICAgYGBleGFtcGxlL2NvbXBvbmVudHMveHBjb21zYW1wbGUubGliYGAgb24gV2luZG93cy4KKyAgICAgICAgICIiIiksCisgCistICAgICdTSEFSRURfTElCUkFSWV9OQU1FJzogKHVuaWNvZGUsIHVuaWNvZGUsCisrICAgICdTSEFSRURfTElCUkFSWV9OQU1FJzogKHN0ciwgc3RyLAorICAgICAgICAgIiIiVGhlIG5hbWUgb2YgdGhlIHN0YXRpYyBsaWJyYXJ5IGdlbmVyYXRlZCBmb3IgYSBkaXJlY3RvcnksIGlmIGl0IG5lZWRzIHRvCisgICAgICAgICBkaWZmZXIgZnJvbSB0aGUgbGlicmFyeSBjb2RlIG5hbWUuCisgCitAQCAtMTU3Miw3ICsxNTc1LDcgQEAgVkFSSUFCTEVTID0geworICAgICAgICAgSW1wbGllcyBGT1JDRV9TSEFSRURfTElCLgorICAgICAgICAgIiIiKSwKKyAKKy0gICAgJ1NUQVRJQ19MSUJSQVJZX05BTUUnOiAodW5pY29kZSwgdW5pY29kZSwKKysgICAgJ1NUQVRJQ19MSUJSQVJZX05BTUUnOiAoc3RyLCBzdHIsCisgICAgICAgICAiIiJUaGUgbmFtZSBvZiB0aGUgc3RhdGljIGxpYnJhcnkgZ2VuZXJhdGVkIGZvciBhIGRpcmVjdG9yeSwgaWYgaXQgbmVlZHMgdG8KKyAgICAgICAgIGRpZmZlciBmcm9tIHRoZSBsaWJyYXJ5IGNvZGUgbmFtZS4KKyAKK0BAIC0xNjA0LDMxICsxNjA3LDMxIEBAIFZBUklBQkxFUyA9IHsKKyAKKyAgICAgICAgIFRoaXMgdmFyaWFibGUgY29udGFpbnMgYSBsaXN0IG9mIHN5c3RlbSBsaWJhcmllcyB0byBsaW5rIGFnYWluc3QuCisgICAgICAgICAiIiIpLAorLSAgICAnUkNGSUxFJzogKHVuaWNvZGUsIHVuaWNvZGUsCisrICAgICdSQ0ZJTEUnOiAoc3RyLCBzdHIsCisgICAgICAgICAiIiJUaGUgcHJvZ3JhbSAucmMgZmlsZS4KKyAKKyAgICAgICAgIFRoaXMgdmFyaWFibGUgY2FuIG9ubHkgYmUgdXNlZCBvbiBXaW5kb3dzLgorICAgICAgICAgIiIiKSwKKyAKKy0gICAgJ1JFU0ZJTEUnOiAodW5pY29kZSwgdW5pY29kZSwKKysgICAgJ1JFU0ZJTEUnOiAoc3RyLCBzdHIsCisgICAgICAgICAiIiJUaGUgcHJvZ3JhbSAucmVzIGZpbGUuCisgCisgICAgICAgICBUaGlzIHZhcmlhYmxlIGNhbiBvbmx5IGJlIHVzZWQgb24gV2luZG93cy4KKyAgICAgICAgICIiIiksCisgCistICAgICdSQ0lOQ0xVREUnOiAodW5pY29kZSwgdW5pY29kZSwKKysgICAgJ1JDSU5DTFVERSc6IChzdHIsIHN0ciwKKyAgICAgICAgICIiIlRoZSByZXNvdXJjZSBzY3JpcHQgZmlsZSB0byBiZSBpbmNsdWRlZCBpbiB0aGUgZGVmYXVsdCAucmVzIGZpbGUuCisgCisgICAgICAgICBUaGlzIHZhcmlhYmxlIGNhbiBvbmx5IGJlIHVzZWQgb24gV2luZG93cy4KKyAgICAgICAgICIiIiksCisgCistICAgICdERUZGSUxFJzogKHVuaWNvZGUsIHVuaWNvZGUsCisrICAgICdERUZGSUxFJzogKHN0ciwgc3RyLAorICAgICAgICAgIiIiVGhlIHByb2dyYW0gLmRlZiAobW9kdWxlIGRlZmluaXRpb24pIGZpbGUuCisgCisgICAgICAgICBUaGlzIHZhcmlhYmxlIGNhbiBvbmx5IGJlIHVzZWQgb24gV2luZG93cy4KKyAgICAgICAgICIiIiksCisgCistICAgICdTWU1CT0xTX0ZJTEUnOiAoUGF0aCwgdW5pY29kZSwKKysgICAgJ1NZTUJPTFNfRklMRSc6IChQYXRoLCBzdHIsCisgICAgICAgICAiIiJBIGZpbGUgY29udGFpbmluZyBhIGxpc3Qgb2Ygc3ltYm9scyB0byBleHBvcnQgZnJvbSBhIHNoYXJlZCBsaWJyYXJ5LgorIAorICAgICAgICAgVGhlIGdpdmVuIGZpbGUgY29udGFpbnMgYSBsaXN0IG9mIHN5bWJvbHMgdG8gYmUgZXhwb3J0ZWQsIGFuZCBpcworQEAgLTE2NDksNyArMTY1Miw3IEBAIFZBUklBQkxFUyA9IHsKKyAgICAgICAgIGBgQklOX1NVRkZJWGBgLCB0aGUgbmFtZSB3aWxsIHJlbWFpbiB1bmNoYW5nZWQuCisgICAgICAgICAiIiIpLAorIAorLSAgICAnU09OQU1FJzogKHVuaWNvZGUsIHVuaWNvZGUsCisrICAgICdTT05BTUUnOiAoc3RyLCBzdHIsCisgICAgICAgICAiIiJUaGUgc29uYW1lIG9mIHRoZSBzaGFyZWQgb2JqZWN0IGN1cnJlbnRseSBiZWluZyBsaW5rZWQKKyAKKyAgICAgICAgIHNvbmFtZSBpcyB0aGUgImxvZ2ljYWwgbmFtZSIgb2YgYSBzaGFyZWQgb2JqZWN0LCBvZnRlbiB1c2VkIHRvIHByb3ZpZGUKK0BAIC0xNzE5LDcgKzE3MjIsNyBAQCBWQVJJQUJMRVMgPSB7CisgICAgICAgICBgYEdFTkVSQVRFRF9GSUxFU2BgLgorICAgICAgICAgIiIiKSwKKyAKKy0gICAgJ1BST0dSQU0nIDogKHVuaWNvZGUsIHVuaWNvZGUsCisrICAgICdQUk9HUkFNJyA6IChzdHIsIHN0ciwKKyAgICAgICAgICIiIkNvbXBpbGVkIGV4ZWN1dGFibGUgbmFtZS4KKyAKKyAgICAgICAgIElmIHRoZSBjb25maWd1cmF0aW9uIHRva2VuIGBgQklOX1NVRkZJWGBgIGlzIHNldCwgaXRzIHZhbHVlIHdpbGwgYmUKK0BAIC0xNzI3LDcgKzE3MzAsNyBAQCBWQVJJQUJMRVMgPSB7CisgICAgICAgICBgYEJJTl9TVUZGSVhgYCwgYGBQUk9HUkFNYGAgd2lsbCByZW1haW4gdW5jaGFuZ2VkLgorICAgICAgICAgIiIiKSwKKyAKKy0gICAgJ0hPU1RfUFJPR1JBTScgOiAodW5pY29kZSwgdW5pY29kZSwKKysgICAgJ0hPU1RfUFJPR1JBTScgOiAoc3RyLCBzdHIsCisgICAgICAgICAiIiJDb21waWxlZCBob3N0IGV4ZWN1dGFibGUgbmFtZS4KKyAKKyAgICAgICAgIElmIHRoZSBjb25maWd1cmF0aW9uIHRva2VuIGBgSE9TVF9CSU5fU1VGRklYYGAgaXMgc2V0LCBpdHMgdmFsdWUgd2lsbCBiZQorQEAgLTE3NjUsNyArMTc2OCw3IEBAIFZBUklBQkxFUyA9IHsKKyAgICAgICAgIGZpbGVzLgorICAgICAgICAgIiIiKSwKKyAKKy0gICAgJ1hQSURMX01PRFVMRSc6ICh1bmljb2RlLCB1bmljb2RlLAorKyAgICAnWFBJRExfTU9EVUxFJzogKHN0ciwgc3RyLAorICAgICAgICAgIiIiWFBDT00gSW50ZXJmYWNlIERlZmluaXRpb24gTW9kdWxlIE5hbWUuCisgCisgICAgICAgICBUaGlzIGlzIHRoZSBuYW1lIG9mIHRoZSBgYC54cHRgYCBmaWxlIHRoYXQgaXMgY3JlYXRlZCBieSBsaW5raW5nCitAQCAtMTkyNCwxNCArMTkyNywxNCBAQCBWQVJJQUJMRVMgPSB7CisgCisgCisgICAgICMgVGhlIGZvbGxvd2luZyB2YXJpYWJsZXMgYXJlIHVzZWQgdG8gY29udHJvbCB0aGUgdGFyZ2V0IG9mIGluc3RhbGxlZCBmaWxlcy4KKy0gICAgJ1hQSV9OQU1FJzogKHVuaWNvZGUsIHVuaWNvZGUsCisrICAgICdYUElfTkFNRSc6IChzdHIsIHN0ciwKKyAgICAgICAgICIiIlRoZSBuYW1lIG9mIGFuIGV4dGVuc2lvbiBYUEkgdG8gZ2VuZXJhdGUuCisgCisgICAgICAgICBXaGVuIHRoaXMgdmFyaWFibGUgaXMgcHJlc2VudCwgdGhlIHJlc3VsdHMgb2YgdGhpcyBkaXJlY3Rvcnkgd2lsbCBlbmQgdXAKKyAgICAgICAgIGJlaW5nIHBhY2thZ2VkIGludG8gYW4gZXh0ZW5zaW9uIGluc3RlYWQgb2YgdGhlIG1haW4gZGlzdC9iaW4gcmVzdWx0cy4KKyAgICAgICAgICIiIiksCisgCistICAgICdESVNUX1NVQkRJUic6ICh1bmljb2RlLCB1bmljb2RlLAorKyAgICAnRElTVF9TVUJESVInOiAoc3RyLCBzdHIsCisgICAgICAgICAiIiJUaGUgbmFtZSBvZiBhbiBhbHRlcm5hdGUgZGlyZWN0b3J5IHRvIGluc3RhbGwgZmlsZXMgdG8uCisgCisgICAgICAgICBXaGVuIHRoaXMgdmFyaWFibGUgaXMgcHJlc2VudCwgdGhlIHJlc3VsdHMgb2YgdGhpcyBkaXJlY3Rvcnkgd2lsbCBlbmQgdXAKK0BAIC0xOTM5LDcgKzE5NDIsNyBAQCBWQVJJQUJMRVMgPSB7CisgICAgICAgICBvdGhlcndpc2UgYmUgcGxhY2VkLgorICAgICAgICAgIiIiKSwKKyAKKy0gICAgJ0ZJTkFMX1RBUkdFVCc6IChGaW5hbFRhcmdldFZhbHVlLCB1bmljb2RlLAorKyAgICAnRklOQUxfVEFSR0VUJzogKEZpbmFsVGFyZ2V0VmFsdWUsIHN0ciwKKyAgICAgICAgICIiIlRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdG8gaW5zdGFsbCB0YXJnZXRzIHRvLgorIAorICAgICAgICAgVGhlIGRpcmVjdG9yeSBpcyByZWxhdGl2ZSB0byB0aGUgdG9wIG9mIHRoZSBvYmplY3QgZGlyZWN0b3J5LiBUaGUKK0BAIC0xOTcwLDcgKzE5NzMsNyBAQCBWQVJJQUJMRVMgPSB7CisgCisgICAgICdHWVBfRElSUyc6IChTdHJpY3RPcmRlcmluZ09uQXBwZW5kTGlzdFdpdGhGbGFnc0ZhY3RvcnkoeworICAgICAgICAgICAgICd2YXJpYWJsZXMnOiBkaWN0LAorLSAgICAgICAgICAgICdpbnB1dCc6IHVuaWNvZGUsCisrICAgICAgICAgICAgJ2lucHV0Jzogc3RyLAorICAgICAgICAgICAgICdzYW5kYm94X3ZhcnMnOiBkaWN0LAorICAgICAgICAgICAgICdub19jaHJvbWl1bSc6IGJvb2wsCisgICAgICAgICAgICAgJ25vX3VuaWZpZWQnOiBib29sLAorQEAgLTIxOTQsNyArMjE5Nyw3IEBAIFZBUklBQkxFUyA9IHsKKyB9CisgCisgIyBTYW5pdHkgY2hlY2s6IHdlIGRvbid0IHdhbnQgYW55IHZhcmlhYmxlIGFib3ZlIHRvIGhhdmUgYSBsaXN0IGFzIHN0b3JhZ2UgdHlwZS4KKy1mb3IgbmFtZSwgKHN0b3JhZ2VfdHlwZSwgaW5wdXRfdHlwZXMsIGRvY3MpIGluIFZBUklBQkxFUy5pdGVtcygpOgorK2ZvciBuYW1lLCAoc3RvcmFnZV90eXBlLCBpbnB1dF90eXBlcywgZG9jcykgaW4gbGlzdChWQVJJQUJMRVMuaXRlbXMoKSk6CisgICAgIGlmIHN0b3JhZ2VfdHlwZSA9PSBsaXN0OgorICAgICAgICAgcmFpc2UgUnVudGltZUVycm9yKCclcyBoYXMgYSAibGlzdCIgc3RvcmFnZSB0eXBlLiBVc2UgIkxpc3QiIGluc3RlYWQuJworICAgICAgICAgICAgICUgbmFtZSkKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvZnJvbnRlbmQvZGF0YS5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9mcm9udGVuZC9kYXRhLnB5CitpbmRleCA0NDJmYzllMGEuLjgzNzQ1M2E5ZiAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9mcm9udGVuZC9kYXRhLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvZnJvbnRlbmQvZGF0YS5weQorQEAgLTE1LDcgKzE1LDcgQEAgY29udGFpbnMgdGhlIGNvZGUgZm9yIGNvbnZlcnRpbmcgZXhlY3V0ZWQgbW96YnVpbGQgZmlsZXMgaW50byB0aGVzZSBkYXRhCisgc3RydWN0dXJlcy4KKyAiIiIKKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscworKworIAorIGZyb20gbW96YnVpbGQudXRpbCBpbXBvcnQgU3RyaWN0T3JkZXJpbmdPbkFwcGVuZExpc3QKKyBmcm9tIG1venBhY2suY2hyb21lLm1hbmlmZXN0IGltcG9ydCBNYW5pZmVzdEVudHJ5CitAQCAtMTgyLDcgKzE4Miw3IEBAIGNsYXNzIENvbXB1dGVkRmxhZ3MoQ29udGV4dERlcml2ZWQpOgorICAgICAgICAgICAgIGlmIHZhbHVlOgorICAgICAgICAgICAgICAgICBmb3IgZGVzdF92YXIgaW4gZGVzdF92YXJzOgorICAgICAgICAgICAgICAgICAgICAgZmxhZ3NbZGVzdF92YXJdLmV4dGVuZCh2YWx1ZSkKKy0gICAgICAgIHJldHVybiBmbGFncy5pdGVtcygpCisrICAgICAgICByZXR1cm4gbGlzdChmbGFncy5pdGVtcygpKQorIAorIGNsYXNzIFhQSURMRmlsZShDb250ZXh0RGVyaXZlZCk6CisgICAgICIiIkRlc2NyaWJlcyBhbiBYUElETCBmaWxlIHRvIGJlIGNvbXBpbGVkLiIiIgorQEAgLTIxMyw3ICsyMTMsNyBAQCBjbGFzcyBCYXNlRGVmaW5lcyhDb250ZXh0RGVyaXZlZCk6CisgICAgICAgICBzZWxmLmRlZmluZXMgPSBkZWZpbmVzCisgCisgICAgIGRlZiBnZXRfZGVmaW5lcyhzZWxmKToKKy0gICAgICAgIGZvciBkZWZpbmUsIHZhbHVlIGluIHNlbGYuZGVmaW5lcy5pdGVyaXRlbXMoKToKKysgICAgICAgIGZvciBkZWZpbmUsIHZhbHVlIGluIHNlbGYuZGVmaW5lcy5pdGVtcygpOgorICAgICAgICAgICAgIGlmIHZhbHVlIGlzIFRydWU6CisgICAgICAgICAgICAgICAgIHlpZWxkKCctRCVzJyAlIGRlZmluZSkKKyAgICAgICAgICAgICBlbGlmIHZhbHVlIGlzIEZhbHNlOgorQEAgLTQ5NCw3ICs0OTQsNyBAQCBjbGFzcyBTaW1wbGVQcm9ncmFtKEJhc2VQcm9ncmFtKToKKyAgICAgS0lORCA9ICd0YXJnZXQnCisgCisgICAgIGRlZiBzb3VyY2VfZmlsZXMoc2VsZik6CistICAgICAgICBmb3Igc3JjcyBpbiBzZWxmLnNvdXJjZXMudmFsdWVzKCk6CisrICAgICAgICBmb3Igc3JjcyBpbiBsaXN0KHNlbGYuc291cmNlcy52YWx1ZXMoKSk6CisgICAgICAgICAgICAgZm9yIGYgaW4gc3JjczoKKyAgICAgICAgICAgICAgICAgaWYgbW96cGF0aC5iYXNlbmFtZShtb3pwYXRoLnNwbGl0ZXh0KGYpWzBdKSA9PSBtb3pwYXRoLnNwbGl0ZXh0KHNlbGYucHJvZ3JhbSlbMF06CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gW2ZdCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2Zyb250ZW5kL2VtaXR0ZXIucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvZnJvbnRlbmQvZW1pdHRlci5weQoraW5kZXggNjQyYjM4MWMwLi5jMjgzNDRhNzUgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvZnJvbnRlbmQvZW1pdHRlci5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2Zyb250ZW5kL2VtaXR0ZXIucHkKK0BAIC0yLDcgKzIsNyBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCBpdGVydG9vbHMKKyBpbXBvcnQgbG9nZ2luZworQEAgLTExNiw4ICsxMTYsOCBAQCBjbGFzcyBUcmVlTWV0YWRhdGFFbWl0dGVyKExvZ2dpbmdNaXhpbik6CisgICAgICAgICAjIGFyZ3VtZW50cy4gVGhpcyBncm9zcyBoYWNrIHdvcmtzIGFyb3VuZCB0aGUgcHJvYmxlbSB1bnRpbCB3ZQorICAgICAgICAgIyByaWQgb3Vyc2VsdmVzIG9mIDIuNi4KKyAgICAgICAgIHNlbGYuaW5mbyA9IHt9CistICAgICAgICBmb3IgaywgdiBpbiBtb3ppbmZvLmluZm8uaXRlbXMoKToKKy0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGssIHVuaWNvZGUpOgorKyAgICAgICAgZm9yIGssIHYgaW4gbGlzdChtb3ppbmZvLmluZm8uaXRlbXMoKSk6CisrICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShrLCBzdHIpOgorICAgICAgICAgICAgICAgICBrID0gay5lbmNvZGUoJ2FzY2lpJykKKyAgICAgICAgICAgICBzZWxmLmluZm9ba10gPSB2CisgCitAQCAtMjM0LDcgKzIzNCw3IEBAIGNsYXNzIFRyZWVNZXRhZGF0YUVtaXR0ZXIoTG9nZ2luZ01peGluKToKKyAKKyAKKyAgICAgICAgICMgTmV4dCBkbyBGSU5BTF9MSUJSQVJZIGxpbmthZ2UuCistICAgICAgICBmb3IgbGliIGluIChsIGZvciBsaWJzIGluIHNlbGYuX2xpYnMudmFsdWVzKCkgZm9yIGwgaW4gbGlicyk6CisrICAgICAgICBmb3IgbGliIGluIChsIGZvciBsaWJzIGluIGxpc3Qoc2VsZi5fbGlicy52YWx1ZXMoKSkgZm9yIGwgaW4gbGlicyk6CisgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UobGliLCAoU3RhdGljTGlicmFyeSwgUnVzdExpYnJhcnkpKSBvciBub3QgbGliLmxpbmtfaW50bzoKKyAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICBpZiBsaWIubGlua19pbnRvIG5vdCBpbiBzZWxmLl9saWJzOgorQEAgLTI5NCwxMyArMjk0LDEzIEBAIGNsYXNzIFRyZWVNZXRhZGF0YUVtaXR0ZXIoTG9nZ2luZ01peGluKToKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaWIubGlua19pbnRvID09IG91dGVybGliLmJhc2VuYW1lKToKKyAgICAgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9kZWZpbmVzKGxpYiwgZGVmaW5lcykKKyAKKy0gICAgICAgIGZvciBsaWIgaW4gKGwgZm9yIGxpYnMgaW4gc2VsZi5fbGlicy52YWx1ZXMoKSBmb3IgbCBpbiBsaWJzKToKKysgICAgICAgIGZvciBsaWIgaW4gKGwgZm9yIGxpYnMgaW4gbGlzdChzZWxmLl9saWJzLnZhbHVlcygpKSBmb3IgbCBpbiBsaWJzKToKKyAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGxpYiwgTGlicmFyeSk6CisgICAgICAgICAgICAgICAgIHByb3BhZ2F0ZV9kZWZpbmVzKGxpYiwgbGliLmxpYl9kZWZpbmVzKQorICAgICAgICAgICAgIHlpZWxkIGxpYgorIAorIAorLSAgICAgICAgZm9yIGxpYiBpbiAobCBmb3IgbGlicyBpbiBzZWxmLl9saWJzLnZhbHVlcygpIGZvciBsIGluIGxpYnMpOgorKyAgICAgICAgZm9yIGxpYiBpbiAobCBmb3IgbGlicyBpbiBsaXN0KHNlbGYuX2xpYnMudmFsdWVzKCkpIGZvciBsIGluIGxpYnMpOgorICAgICAgICAgICAgIGxpYl9kZWZpbmVzID0gbGlzdChsaWIubGliX2RlZmluZXMuZ2V0X2RlZmluZXMoKSkKKyAgICAgICAgICAgICBpZiBsaWJfZGVmaW5lczoKKyAgICAgICAgICAgICAgICAgb2JqZGlyX2ZsYWdzID0gc2VsZi5fY29tcGlsZV9mbGFnc1tsaWIub2JqZGlyXQorQEAgLTMxMCwxMyArMzEwLDEzIEBAIGNsYXNzIFRyZWVNZXRhZGF0YUVtaXR0ZXIoTG9nZ2luZ01peGluKToKKyAgICAgICAgICAgICAgICAgaWYgb2JqZGlyX2ZsYWdzOgorICAgICAgICAgICAgICAgICAgICAgb2JqZGlyX2ZsYWdzLnJlc29sdmVfZmxhZ3MoJ0xJQlJBUllfREVGSU5FUycsIGxpYl9kZWZpbmVzKQorIAorLSAgICAgICAgZm9yIGZsYWdzX29iaiBpbiBzZWxmLl9jb21waWxlX2ZsYWdzLnZhbHVlcygpOgorKyAgICAgICAgZm9yIGZsYWdzX29iaiBpbiBsaXN0KHNlbGYuX2NvbXBpbGVfZmxhZ3MudmFsdWVzKCkpOgorICAgICAgICAgICAgIHlpZWxkIGZsYWdzX29iagorIAorLSAgICAgICAgZm9yIGZsYWdzX29iaiBpbiBzZWxmLl9jb21waWxlX2FzX2ZsYWdzLnZhbHVlcygpOgorKyAgICAgICAgZm9yIGZsYWdzX29iaiBpbiBsaXN0KHNlbGYuX2NvbXBpbGVfYXNfZmxhZ3MudmFsdWVzKCkpOgorICAgICAgICAgICAgIHlpZWxkIGZsYWdzX29iagorIAorLSAgICAgICAgZm9yIG9iaiBpbiBzZWxmLl9iaW5hcmllcy52YWx1ZXMoKToKKysgICAgICAgIGZvciBvYmogaW4gbGlzdChzZWxmLl9iaW5hcmllcy52YWx1ZXMoKSk6CisgICAgICAgICAgICAgeWllbGQgb2JqCisgCisgCitAQCAtNDA5LDcgKzQwOSw3IEBAIGNsYXNzIFRyZWVNZXRhZGF0YUVtaXR0ZXIoTG9nZ2luZ01peGluKToKKyAgICAgICAgICAgICAgICAgICAgICAgICBsaWJzW2tleV0gPSBsCisgICAgICAgICAgICAgICAgICAgICBpZiBrZXkgbm90IGluIGxpYnM6CisgICAgICAgICAgICAgICAgICAgICAgICAgbGlic1trZXldID0gbAorLSAgICAgICAgICAgIGNhbmRpZGF0ZXMgPSBsaWJzLnZhbHVlcygpCisrICAgICAgICAgICAgY2FuZGlkYXRlcyA9IGxpc3QobGlicy52YWx1ZXMoKSkKKyAgICAgICAgICAgICBpZiBmb3JjZV9zdGF0aWMgYW5kIG5vdCBjYW5kaWRhdGVzOgorICAgICAgICAgICAgICAgICBpZiBkaXI6CisgICAgICAgICAgICAgICAgICAgICByYWlzZSBTYW5kYm94VmFsaWRhdGlvbkVycm9yKAorQEAgLTQ3Myw5ICs0NzMsOSBAQCBjbGFzcyBUcmVlTWV0YWRhdGFFbWl0dGVyKExvZ2dpbmdNaXhpbik6CisgCisgICAgIGRlZiBfdmVyaWZ5X2RlcHMoc2VsZiwgY29udGV4dCwgY3JhdGVfZGlyLCBjcmF0ZV9uYW1lLCBkZXBlbmRlbmNpZXMsIGRlc2NyaXB0aW9uPSdEZXBlbmRlbmN5Jyk6CisgICAgICAgICAiIiJWZXJpZnkgdGhhdCBhIGNyYXRlJ3MgZGVwZW5kZW5jaWVzIGFsbCBzcGVjaWZ5IGxvY2FsIHBhdGhzLiIiIgorLSAgICAgICAgZm9yIGRlcF9jcmF0ZV9uYW1lLCB2YWx1ZXMgaW4gZGVwZW5kZW5jaWVzLml0ZXJpdGVtcygpOgorKyAgICAgICAgZm9yIGRlcF9jcmF0ZV9uYW1lLCB2YWx1ZXMgaW4gZGVwZW5kZW5jaWVzLml0ZW1zKCk6CisgICAgICAgICAgICAgIyBBIHNpbXBsZSB2ZXJzaW9uIG51bWJlci4KKy0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlcywgKHN0ciwgdW5pY29kZSkpOgorKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWVzLCBzdHIpOgorICAgICAgICAgICAgICAgICByYWlzZSBTYW5kYm94VmFsaWRhdGlvbkVycm9yKAorICAgICAgICAgICAgICAgICAgICAgJyVzICVzIG9mIGNyYXRlICVzIGRvZXMgbm90IGxpc3QgYSBwYXRoJyAlIChkZXNjcmlwdGlvbiwgZGVwX2NyYXRlX25hbWUsIGNyYXRlX25hbWUpLAorICAgICAgICAgICAgICAgICAgICAgY29udGV4dCkKK0BAIC01MjksNyArNTI5LDcgQEAgY2xhc3MgVHJlZU1ldGFkYXRhRW1pdHRlcihMb2dnaW5nTWl4aW4pOgorIAorICAgICAgICAgY2FyZ29fdGFyZ2V0X2RpciA9IGNvbnRleHQuZ2V0KCdSVVNUX0xJQlJBUllfVEFSR0VUX0RJUicsICcuJykKKyAKKy0gICAgICAgIGRlcGVuZGVuY2llcyA9IHNldChjb25maWcuZ2V0KCdkZXBlbmRlbmNpZXMnLCB7fSkuaXRlcmtleXMoKSkKKysgICAgICAgIGRlcGVuZGVuY2llcyA9IHNldChjb25maWcuZ2V0KCdkZXBlbmRlbmNpZXMnLCB7fSkua2V5cygpKQorIAorICAgICAgICAgZmVhdHVyZXMgPSBjb250ZXh0LmdldChjbHMuRkVBVFVSRVNfVkFSLCBbXSkKKyAgICAgICAgIHVuaXF1ZV9mZWF0dXJlcyA9IHNldChmZWF0dXJlcykKK0BAIC04NjMsNyArODYzLDcgQEAgY2xhc3MgVHJlZU1ldGFkYXRhRW1pdHRlcihMb2dnaW5nTWl4aW4pOgorICAgICAgICAgYXNzZXJ0IG5vdCBnZW5fc291cmNlc1snVU5JRklFRF9TT1VSQ0VTJ10KKyAKKyAgICAgICAgIG5vX3BnbyA9IGNvbnRleHQuZ2V0KCdOT19QR08nKQorLSAgICAgICAgbm9fcGdvX3NvdXJjZXMgPSBbZiBmb3IgZiwgZmxhZ3MgaW4gYWxsX2ZsYWdzLml0ZXJpdGVtcygpCisrICAgICAgICBub19wZ29fc291cmNlcyA9IFtmIGZvciBmLCBmbGFncyBpbiBhbGxfZmxhZ3MuaXRlbXMoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgZmxhZ3Mubm9fcGdvXQorICAgICAgICAgaWYgbm9fcGdvOgorICAgICAgICAgICAgIGlmIG5vX3Bnb19zb3VyY2VzOgorQEAgLTg5MCw3ICs4OTAsNyBAQCBjbGFzcyBUcmVlTWV0YWRhdGFFbWl0dGVyKExvZ2dpbmdNaXhpbik6CisgCisgICAgICAgICAjIFRoZSBpbnZlcnNlIG9mIHRoZSBhYm92ZSwgbWFwcGluZyBzdWZmaXhlcyB0byB0aGVpciBjYW5vbmljYWwgc3VmZml4LgorICAgICAgICAgY2Fub25pY2FsaXplZF9zdWZmaXhfbWFwID0ge30KKy0gICAgICAgIGZvciBzdWZmaXgsIGFsdGVybmF0aXZlcyBpbiBzdWZmaXhfbWFwLml0ZXJpdGVtcygpOgorKyAgICAgICAgZm9yIHN1ZmZpeCwgYWx0ZXJuYXRpdmVzIGluIHN1ZmZpeF9tYXAuaXRlbXMoKToKKyAgICAgICAgICAgICBhbHRlcm5hdGl2ZXMuYWRkKHN1ZmZpeCkKKyAgICAgICAgICAgICBmb3IgYSBpbiBhbHRlcm5hdGl2ZXM6CisgICAgICAgICAgICAgICAgIGNhbm9uaWNhbGl6ZWRfc3VmZml4X21hcFthXSA9IHN1ZmZpeAorQEAgLTkxNCw3ICs5MTQsNyBAQCBjbGFzcyBUcmVlTWV0YWRhdGFFbWl0dGVyKExvZ2dpbmdNaXhpbik6CisgICAgICAgICAjIFNvdXJjZSBmaWxlcyB0byB0cmFjayBmb3IgbGlua2FibGVzIGFzc29jaWF0ZWQgd2l0aCB0aGlzIGNvbnRleHQuCisgICAgICAgICBjdHh0X3NvdXJjZXMgPSBkZWZhdWx0ZGljdChsYW1iZGE6IGRlZmF1bHRkaWN0KGxpc3QpKQorIAorLSAgICAgICAgZm9yIHZhcmlhYmxlLCAoa2xhc3MsIGdlbl9rbGFzcywgc3VmZml4ZXMpIGluIHZhcm1hcC5pdGVtcygpOgorKyAgICAgICAgZm9yIHZhcmlhYmxlLCAoa2xhc3MsIGdlbl9rbGFzcywgc3VmZml4ZXMpIGluIGxpc3QodmFybWFwLml0ZW1zKCkpOgorICAgICAgICAgICAgIGFsbG93ZWRfc3VmZml4ZXMgPSBzZXQoKS51bmlvbigqW3N1ZmZpeF9tYXBbc10gZm9yIHMgaW4gc3VmZml4ZXNdKQorIAorICAgICAgICAgICAgICMgRmlyc3QgZW5zdXJlIHRoYXQgd2UgaGF2ZW4ndCBiZWVuIGdpdmVuIGZpbGV0eXBlcyB0aGF0IHdlIGRvbid0CitAQCAtOTQxLDIwICs5NDEsMjAgQEAgY2xhc3MgVHJlZU1ldGFkYXRhRW1pdHRlcihMb2dnaW5nTWl4aW4pOgorICAgICAgICAgICAgICAgICAgICAgb2JqID0gY2xzKCphcmdsaXN0KQorICAgICAgICAgICAgICAgICAgICAgc3JjcyA9IG9iai5maWxlcworICAgICAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShvYmosIFVuaWZpZWRTb3VyY2VzKSBhbmQgb2JqLmhhdmVfdW5pZmllZF9tYXBwaW5nOgorLSAgICAgICAgICAgICAgICAgICAgICAgIHNyY3MgPSBkaWN0KG9iai51bmlmaWVkX3NvdXJjZV9tYXBwaW5nKS5rZXlzKCkKKysgICAgICAgICAgICAgICAgICAgICAgICBzcmNzID0gbGlzdChkaWN0KG9iai51bmlmaWVkX3NvdXJjZV9tYXBwaW5nKS5rZXlzKCkpCisgICAgICAgICAgICAgICAgICAgICBjdHh0X3NvdXJjZXNbdmFyaWFibGVdW2Nhbm9uaWNhbF9zdWZmaXhdICs9IHNvcnRlZChzcmNzKQorICAgICAgICAgICAgICAgICAgICAgeWllbGQgb2JqCisgCisgICAgICAgICBpZiBjdHh0X3NvdXJjZXM6CisgICAgICAgICAgICAgZm9yIGxpbmthYmxlIGluIGxpbmthYmxlczoKKyAgICAgICAgICAgICAgICAgZm9yIHRhcmdldF92YXIgaW4gKCdTT1VSQ0VTJywgJ1VOSUZJRURfU09VUkNFUycpOgorLSAgICAgICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCwgc3JjcyBpbiBjdHh0X3NvdXJjZXNbdGFyZ2V0X3Zhcl0uaXRlbXMoKToKKysgICAgICAgICAgICAgICAgICAgIGZvciBzdWZmaXgsIHNyY3MgaW4gbGlzdChjdHh0X3NvdXJjZXNbdGFyZ2V0X3Zhcl0uaXRlbXMoKSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgbGlua2FibGUuc291cmNlc1tzdWZmaXhdICs9IHNyY3MKKyAgICAgICAgICAgICBmb3IgaG9zdF9saW5rYWJsZSBpbiBob3N0X2xpbmthYmxlczoKKy0gICAgICAgICAgICAgICAgZm9yIHN1ZmZpeCwgc3JjcyBpbiBjdHh0X3NvdXJjZXNbJ0hPU1RfU09VUkNFUyddLml0ZW1zKCk6CisrICAgICAgICAgICAgICAgIGZvciBzdWZmaXgsIHNyY3MgaW4gbGlzdChjdHh0X3NvdXJjZXNbJ0hPU1RfU09VUkNFUyddLml0ZW1zKCkpOgorICAgICAgICAgICAgICAgICAgICAgaG9zdF9saW5rYWJsZS5zb3VyY2VzW3N1ZmZpeF0gKz0gc3JjcworIAorLSAgICAgICAgZm9yIGYsIGZsYWdzIGluIGFsbF9mbGFncy5pdGVyaXRlbXMoKToKKysgICAgICAgIGZvciBmLCBmbGFncyBpbiBhbGxfZmxhZ3MuaXRlbXMoKToKKyAgICAgICAgICAgICBpZiBmbGFncy5mbGFnczoKKyAgICAgICAgICAgICAgICAgZXh0ID0gbW96cGF0aC5zcGxpdGV4dChmKVsxXQorICAgICAgICAgICAgICAgICB5aWVsZCBQZXJTb3VyY2VGbGFnKGNvbnRleHQsIGYsIGZsYWdzLmZsYWdzKQorQEAgLTExNDMsNyArMTE0Myw3IEBAIGNsYXNzIFRyZWVNZXRhZGF0YUVtaXR0ZXIoTG9nZ2luZ01peGluKToKKyAgICAgICAgIGZvciBvYmogaW4gc2VsZi5faGFuZGxlX2xpbmthYmxlcyhjb250ZXh0LCBwYXNzdGhydSwgZ2VuZXJhdGVkX2ZpbGVzKToKKyAgICAgICAgICAgICB5aWVsZCBvYmoKKyAKKy0gICAgICAgIGdlbmVyYXRlZF9maWxlcy51cGRhdGUoWyclcyVzJyAlIChrLCBzZWxmLmNvbmZpZy5zdWJzdHMuZ2V0KCdCSU5fU1VGRklYJywgJycpKSBmb3IgayBpbiBzZWxmLl9iaW5hcmllcy5rZXlzKCldKQorKyAgICAgICAgZ2VuZXJhdGVkX2ZpbGVzLnVwZGF0ZShbJyVzJXMnICUgKGssIHNlbGYuY29uZmlnLnN1YnN0cy5nZXQoJ0JJTl9TVUZGSVgnLCAnJykpIGZvciBrIGluIGxpc3Qoc2VsZi5fYmluYXJpZXMua2V5cygpKV0pCisgCisgICAgICAgICBjb21wb25lbnRzID0gW10KKyAgICAgICAgIGZvciB2YXIsIGNscyBpbiAoCitAQCAtMTI3Nyw3ICsxMjc3LDcgQEAgY2xhc3MgVHJlZU1ldGFkYXRhRW1pdHRlcihMb2dnaW5nTWl4aW4pOgorICAgICAgICAgZm9yIG9iaiBpbiBzZWxmLl9wcm9jZXNzX2phcl9tYW5pZmVzdHMoY29udGV4dCk6CisgICAgICAgICAgICAgeWllbGQgb2JqCisgCistICAgICAgICBmb3IgbmFtZSwgamFyIGluIGNvbnRleHQuZ2V0KCdKQVZBX0pBUl9UQVJHRVRTJywge30pLml0ZW1zKCk6CisrICAgICAgICBmb3IgbmFtZSwgamFyIGluIGxpc3QoY29udGV4dC5nZXQoJ0pBVkFfSkFSX1RBUkdFVFMnLCB7fSkuaXRlbXMoKSk6CisgICAgICAgICAgICAgeWllbGQgQ29udGV4dFdyYXBwZWQoY29udGV4dCwgamFyKQorIAorICAgICAgICAgY29tcHV0ZWRfYXNfZmxhZ3MucmVzb2x2ZV9mbGFncygnTU9aQlVJTEQnLAorQEAgLTEzNDYsNyArMTM0Niw3IEBAIGNsYXNzIFRyZWVNZXRhZGF0YUVtaXR0ZXIoTG9nZ2luZ01peGluKToKKyAgICAgICAgICAgICBzY3JpcHQgPSBtb3pwYXRoLmpvaW4obW96cGF0aC5kaXJuYW1lKG1venBhdGguZGlybmFtZShfX2ZpbGVfXykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnYWN0aW9uJywgJ3Byb2Nlc3NfZGVmaW5lX2ZpbGVzLnB5JykKKyAgICAgICAgICAgICB5aWVsZCBHZW5lcmF0ZWRGaWxlKGNvbnRleHQsIHNjcmlwdCwgJ3Byb2Nlc3NfZGVmaW5lX2ZpbGUnLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdW5pY29kZShwYXRoKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cihwYXRoKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtQYXRoKGNvbnRleHQsIHBhdGggKyAnLmluJyldKQorIAorICAgICAgICAgZ2VuZXJhdGVkX2ZpbGVzID0gY29udGV4dC5nZXQoJ0dFTkVSQVRFRF9GSUxFUycpIG9yIFtdCitAQCAtMTM5Myw3ICsxMzkzLDcgQEAgY2xhc3MgVHJlZU1ldGFkYXRhRW1pdHRlcihMb2dnaW5nTWl4aW4pOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZsYWdzLmZsYWdzLCBsb2NhbGl6ZWQ9bG9jYWxpemVkKQorIAorICAgICBkZWYgX3Byb2Nlc3NfdGVzdF9tYW5pZmVzdHMoc2VsZiwgY29udGV4dCk6CistICAgICAgICBmb3IgcHJlZml4LCBpbmZvIGluIFRFU1RfTUFOSUZFU1RTLml0ZW1zKCk6CisrICAgICAgICBmb3IgcHJlZml4LCBpbmZvIGluIGxpc3QoVEVTVF9NQU5JRkVTVFMuaXRlbXMoKSk6CisgICAgICAgICAgICAgZm9yIHBhdGgsIG1hbmlmZXN0IGluIGNvbnRleHQuZ2V0KCclc19NQU5JRkVTVFMnICUgcHJlZml4LCBbXSk6CisgICAgICAgICAgICAgICAgIGZvciBvYmogaW4gc2VsZi5fcHJvY2Vzc190ZXN0X21hbmlmZXN0KGNvbnRleHQsIGluZm8sIHBhdGgsIG1hbmlmZXN0KToKKyAgICAgICAgICAgICAgICAgICAgIHlpZWxkIG9iagorQEAgLTE0NzksNyArMTQ3OSw3IEBAIGNsYXNzIFRyZWVNZXRhZGF0YUVtaXR0ZXIoTG9nZ2luZ01peGluKToKKyAKKyAgICAgICAgICAgICAgICAgcHJvY2Vzc19zdXBwb3J0X2ZpbGVzKHRlc3QpCisgCistICAgICAgICAgICAgZm9yIHBhdGgsIG1fZGVmYXVsdHMgaW4gbXBtYW5pZmVzdC5tYW5pZmVzdF9kZWZhdWx0cy5pdGVtcygpOgorKyAgICAgICAgICAgIGZvciBwYXRoLCBtX2RlZmF1bHRzIGluIGxpc3QobXBtYW5pZmVzdC5tYW5pZmVzdF9kZWZhdWx0cy5pdGVtcygpKToKKyAgICAgICAgICAgICAgICAgcHJvY2Vzc19zdXBwb3J0X2ZpbGVzKG1fZGVmYXVsdHMpCisgCisgICAgICAgICAgICAgIyBXZSBhbHNvIGNvcHkgbWFuaWZlc3RzIGludG8gdGhlIG91dHB1dCBkaXJlY3RvcnksCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2Zyb250ZW5kL3JlYWRlci5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9mcm9udGVuZC9yZWFkZXIucHkKK2luZGV4IGMxZWZjMWMzZC4uMGNkZjhiOGRiIDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2Zyb250ZW5kL3JlYWRlci5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2Zyb250ZW5kL3JlYWRlci5weQorQEAgLTE2LDcgKzE2LDcgQEAgVGhlIEJ1aWxkUmVhZGVyIGNvbnRhaW5zIGJhc2ljIGxvZ2ljIGZvciB0cmF2ZXJzaW5nIGEgdHJlZSBvZiBtb3pidWlsZCBmaWxlcy4KKyBJdCBkb2VzIHRoaXMgYnkgZXhhbWluaW5nIHNwZWNpZmljIHZhcmlhYmxlcyBwb3B1bGF0ZWQgZHVyaW5nIGV4ZWN1dGlvbi4KKyAiIiIKKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24sIHVuaWNvZGVfbGl0ZXJhbHMKKysKKyAKKyBpbXBvcnQgYXN0CisgaW1wb3J0IGluc3BlY3QKK0BAIC04MSwxMiArODEsMTMgQEAgZnJvbSAuY29udGV4dCBpbXBvcnQgKAorIAorIGZyb20gbW96YnVpbGQuYmFzZSBpbXBvcnQgRXhlY3V0aW9uU3VtbWFyeQorIGZyb20gY29uY3VycmVudC5mdXR1cmVzLnByb2Nlc3MgaW1wb3J0IFByb2Nlc3NQb29sRXhlY3V0b3IKKytmcm9tIGZ1bmN0b29scyBpbXBvcnQgcmVkdWNlCisgCisgCisgCisgaWYgc3lzLnZlcnNpb25faW5mby5tYWpvciA9PSAyOgorLSAgICB0ZXh0X3R5cGUgPSB1bmljb2RlCistICAgIHR5cGVfdHlwZSA9IHR5cGVzLlR5cGVUeXBlCisrICAgIHRleHRfdHlwZSA9IHN0cgorKyAgICB0eXBlX3R5cGUgPSB0eXBlCisgZWxzZToKKyAgICAgdGV4dF90eXBlID0gc3RyCisgICAgIHR5cGVfdHlwZSA9IHR5cGUKK0BAIC0xMjcsNyArMTI4LDcgQEAgY2xhc3MgRW1wdHlDb25maWcob2JqZWN0KToKKyAKKyAgICAgICAgIHNlbGYuc3Vic3RzID0gc2VsZi5Qb3B1bGF0ZU9uR2V0RGljdChFbXB0eVZhbHVlLCBzdWJzdHMgb3Igc2VsZi5kZWZhdWx0X3N1YnN0cykKKyAgICAgICAgIHVkaWN0ID0ge30KKy0gICAgICAgIGZvciBrLCB2IGluIHNlbGYuc3Vic3RzLml0ZW1zKCk6CisrICAgICAgICBmb3IgaywgdiBpbiBsaXN0KHNlbGYuc3Vic3RzLml0ZW1zKCkpOgorICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uodiwgc3RyKToKKyAgICAgICAgICAgICAgICAgdWRpY3Rbay5kZWNvZGUoJ3V0Zi04JyldID0gdi5kZWNvZGUoJ3V0Zi04JykKKyAgICAgICAgICAgICBlbHNlOgorQEAgLTMxMSw3ICszMTIsNyBAQCBjbGFzcyBNb3pidWlsZFNhbmRib3goU2FuZGJveCk6CisgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdgdGVtcGxhdGVgIGlzIGEgZnVuY3Rpb24gZGVjb3JhdG9yLiBZb3UgbXVzdCAnCisgICAgICAgICAgICAgICAgICd1c2UgaXQgYXMgYEB0ZW1wbGF0ZWAgcHJlY2VkaW5nIGEgZnVuY3Rpb24gZGVjbGFyYXRpb24uJykKKyAKKy0gICAgICAgIG5hbWUgPSBmdW5jLmZ1bmNfbmFtZQorKyAgICAgICAgbmFtZSA9IGZ1bmMuX19uYW1lX18KKyAKKyAgICAgICAgIGlmIG5hbWUgaW4gc2VsZi50ZW1wbGF0ZXM6CisgICAgICAgICAgICAgcmFpc2UgS2V5RXJyb3IoCitAQCAtMzkwLDcgKzM5MSw3IEBAIGNsYXNzIE1vemJ1aWxkU2FuZGJveChTYW5kYm94KToKKyAgICAgICAgICAgICBrbGFzcyA9IHNlbGYuX2NvbnRleHQuX19jbGFzc19fCisgICAgICAgICAgICAgc2VsZi5fY29udGV4dC5fX2NsYXNzX18gPSBUZW1wbGF0ZUNvbnRleHQKKyAgICAgICAgICAgICAjIFRoZSBzYW5kYm94IHdpbGwgZG8gYWxsIHRoZSBuZWNlc3NhcnkgY2hlY2tzIGZvciB0aGVzZSBtZXJnZXMuCistICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gY29udGV4dC5pdGVtcygpOgorKyAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGxpc3QoY29udGV4dC5pdGVtcygpKToKKyAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGljdCk6CisgICAgICAgICAgICAgICAgICAgICBzZWxmW2tleV0udXBkYXRlKHZhbHVlKQorICAgICAgICAgICAgICAgICBlbGlmIGlzaW5zdGFuY2UodmFsdWUsIChsaXN0LCBIaWVyYXJjaGljYWxTdHJpbmdMaXN0KSk6CitAQCAtNDA3LDEyICs0MDgsMTQgQEAgY2xhc3MgTW96YnVpbGRTYW5kYm94KFNhbmRib3gpOgorIAorIGNsYXNzIFRlbXBsYXRlRnVuY3Rpb24ob2JqZWN0KToKKyAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGZ1bmMsIHNhbmRib3gpOgorLSAgICAgICAgc2VsZi5wYXRoID0gZnVuYy5mdW5jX2NvZGUuY29fZmlsZW5hbWUKKy0gICAgICAgIHNlbGYubmFtZSA9IGZ1bmMuZnVuY19uYW1lCisrICAgICAgICBzZWxmLnBhdGggPSBmdW5jLl9fY29kZV9fLmNvX2ZpbGVuYW1lCisrICAgICAgICBzZWxmLm5hbWUgPSBmdW5jLl9fbmFtZV9fCisgCistICAgICAgICBjb2RlID0gZnVuYy5mdW5jX2NvZGUKKysgICAgICAgIGNvZGUgPSBmdW5jLl9fY29kZV9fCisgICAgICAgICBmaXJzdGxpbmVubyA9IGNvZGUuY29fZmlyc3RsaW5lbm8KKyAgICAgICAgIGxpbmVzID0gc2FuZGJveC5fY3VycmVudF9zb3VyY2Uuc3BsaXRsaW5lcyhUcnVlKQorKyAgICAgICAgaWYgbGVuKGxpbmVzKSBhbmQgaXNpbnN0YW5jZShsaW5lc1swXSwgYnl0ZXMpOgorKyAgICAgICAgICAgIGxpbmVzID0gW2wuZGVjb2RlKCd1dGYtOCcpIGZvciBsIGluIGxpbmVzXQorICAgICAgICAgbGluZXMgPSBpbnNwZWN0LmdldGJsb2NrKGxpbmVzW2ZpcnN0bGluZW5vIC0gMTpdKQorIAorICAgICAgICAgIyBUaGUgY29kZSBsaW5lcyB3ZSBnZXQgb3V0IG9mIGluc3BlY3QuZ2V0c291cmNlbGluZXMgbG9vayBsaWtlCitAQCAtNDMwLDcgKzQzMyw3IEBAIGNsYXNzIFRlbXBsYXRlRnVuY3Rpb24ob2JqZWN0KToKKyAgICAgICAgICMgYWN0dWFsbHkgbmV2ZXIgY2FsbHMgX19nZXRpdGVtX18gYW5kIF9fc2V0aXRlbV9fLCBzbyB3ZSBuZWVkIHRvCisgICAgICAgICAjIG1vZGlmeSB0aGUgQVNUIHNvIHRoYXQgYWNjZXNzZXMgdG8gZ2xvYmFscyBhcmUgcHJvcGVybHkgZGlyZWN0ZWQKKyAgICAgICAgICMgdG8gYSBkaWN0LgorLSAgICAgICAgc2VsZi5fZ2xvYmFsX25hbWUgPSBiJ19kYXRhJyAjIEFTVCB3YW50cyBzdHIgZm9yIHRoaXMsIG5vdCB1bmljb2RlCisrICAgICAgICBzZWxmLl9nbG9iYWxfbmFtZSA9ICdfZGF0YScKKyAgICAgICAgICMgSW4gY2FzZSAnX2RhdGEnIGlzIGEgbmFtZSB1c2VkIGZvciBhIHZhcmlhYmxlIGluIHRoZSBmdW5jdGlvbiBjb2RlLAorICAgICAgICAgIyBwcmVwZW5kIG1vcmUgdW5kZXJzY29yZXMgdW50aWwgd2UgZmluZCBhbiB1bnVzZWQgbmFtZS4KKyAgICAgICAgIHdoaWxlIChzZWxmLl9nbG9iYWxfbmFtZSBpbiBjb2RlLmNvX25hbWVzIG9yCitAQCAtNDQ5LDggKzQ1Miw4IEBAIGNsYXNzIFRlbXBsYXRlRnVuY3Rpb24ob2JqZWN0KToKKyAgICAgICAgICAgICBjb21waWxlKGZ1bmNfYXN0LCBzZWxmLnBhdGgsICdleGVjJyksCisgICAgICAgICAgICAgZ2xvYiwKKyAgICAgICAgICAgICBzZWxmLm5hbWUsCistICAgICAgICAgICAgZnVuYy5mdW5jX2RlZmF1bHRzLAorLSAgICAgICAgICAgIGZ1bmMuZnVuY19jbG9zdXJlLAorKyAgICAgICAgICAgIGZ1bmMuX19kZWZhdWx0c19fLAorKyAgICAgICAgICAgIGZ1bmMuX19jbG9zdXJlX18sCisgICAgICAgICApCisgICAgICAgICBmdW5jKCkKKyAKK0BAIC00NjQsMTEgKzQ2NywxMSBAQCBjbGFzcyBUZW1wbGF0ZUZ1bmN0aW9uKG9iamVjdCk6CisgICAgICAgICAgICAgJ19fYnVpbHRpbnNfXyc6IHNhbmRib3guX2J1aWx0aW5zCisgICAgICAgICB9CisgICAgICAgICBmdW5jID0gdHlwZXMuRnVuY3Rpb25UeXBlKAorLSAgICAgICAgICAgIHNlbGYuX2Z1bmMuZnVuY19jb2RlLAorKyAgICAgICAgICAgIHNlbGYuX2Z1bmMuX19jb2RlX18sCisgICAgICAgICAgICAgZ2xvYiwKKyAgICAgICAgICAgICBzZWxmLm5hbWUsCistICAgICAgICAgICAgc2VsZi5fZnVuYy5mdW5jX2RlZmF1bHRzLAorLSAgICAgICAgICAgIHNlbGYuX2Z1bmMuZnVuY19jbG9zdXJlCisrICAgICAgICAgICAgc2VsZi5fZnVuYy5fX2RlZmF1bHRzX18sCisrICAgICAgICAgICAgc2VsZi5fZnVuYy5fX2Nsb3N1cmVfXworICAgICAgICAgKQorICAgICAgICAgc2FuZGJveC5leGVjX2Z1bmN0aW9uKGZ1bmMsIGFyZ3MsIGt3YXJncywgc2VsZi5wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJlY29tZXNfY3VycmVudF9wYXRoPUZhbHNlKQorQEAgLTQ4NCw3ICs0ODcsNyBAQCBjbGFzcyBUZW1wbGF0ZUZ1bmN0aW9uKG9iamVjdCk6CisgICAgICAgICBkZWYgdmlzaXRfU3RyKHNlbGYsIG5vZGUpOgorICAgICAgICAgICAgICMgU3RyaW5nIG5vZGVzIHdlIGdvdCBmcm9tIHRoZSBBU1QgcGFyc2VyIGFyZSBzdHIsIGJ1dCB3ZSB3YW50CisgICAgICAgICAgICAgIyB1bmljb2RlIGxpdGVyYWxzIGV2ZXJ5d2hlcmUsIHNvIHRyYW5zZm9ybSB0aGVtLgorLSAgICAgICAgICAgIG5vZGUucyA9IHVuaWNvZGUobm9kZS5zKQorKyAgICAgICAgICAgIG5vZGUucyA9IHN0cihub2RlLnMpCisgICAgICAgICAgICAgcmV0dXJuIG5vZGUKKyAKKyAgICAgICAgIGRlZiB2aXNpdF9OYW1lKHNlbGYsIG5vZGUpOgorQEAgLTYxNyw3ICs2MjAsNyBAQCBjbGFzcyBCdWlsZFJlYWRlckVycm9yKEV4Y2VwdGlvbik6CisgCisgICAgICAgICAgICAgZm9yIGwgaW4gdHJhY2ViYWNrLmZvcm1hdF9leGNlcHRpb24odHlwZShzZWxmLm90aGVyKSwgc2VsZi5vdGhlciwKKyAgICAgICAgICAgICAgICAgc2VsZi50cmFjZSk6CistICAgICAgICAgICAgICAgIHMud3JpdGUodW5pY29kZShsKSkKKysgICAgICAgICAgICAgICAgcy53cml0ZShzdHIobCkpCisgCisgICAgICAgICByZXR1cm4gcy5nZXR2YWx1ZSgpCisgCitAQCAtNzY3LDcgKzc3MCw3IEBAIGNsYXNzIEJ1aWxkUmVhZGVyRXJyb3IoRXhjZXB0aW9uKToKKyAgICAgICAgICAgICBzLndyaXRlKCcgICAgJXNcbicgJSBpbm5lci5hcmdzWzJdKQorICAgICAgICAgICAgIHMud3JpdGUoJ1xuJykKKyAgICAgICAgICAgICBjbG9zZV9tYXRjaGVzID0gZGlmZmxpYi5nZXRfY2xvc2VfbWF0Y2hlcyhpbm5lci5hcmdzWzJdLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZBUklBQkxFUy5rZXlzKCksIDIpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdChWQVJJQUJMRVMua2V5cygpKSwgMikKKyAgICAgICAgICAgICBpZiBjbG9zZV9tYXRjaGVzOgorICAgICAgICAgICAgICAgICBzLndyaXRlKCdNYXliZSB5b3UgbWVhbnQgJXM/XG4nICUgJyBvciAnLmpvaW4oY2xvc2VfbWF0Y2hlcykpCisgICAgICAgICAgICAgICAgIHMud3JpdGUoJ1xuJykKK0BAIC0xMTUyLDcgKzExNTUsNyBAQCBjbGFzcyBCdWlsZFJlYWRlcihvYmplY3QpOgorICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRleHQpCisgICAgICAgICAgICAgICAgIG5vbl91bmlmaWVkX3NvdXJjZXMuYWRkKHNvdXJjZSkKKyAgICAgICAgICAgICBhY3Rpb25fb3ZlcnJpZGVzID0ge30KKy0gICAgICAgICAgICBmb3IgYWN0aW9uLCBzY3JpcHQgaW4gZ3lwX2Rpci5hY3Rpb25fb3ZlcnJpZGVzLml0ZXJpdGVtcygpOgorKyAgICAgICAgICAgIGZvciBhY3Rpb24sIHNjcmlwdCBpbiBneXBfZGlyLmFjdGlvbl9vdmVycmlkZXMuaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgYWN0aW9uX292ZXJyaWRlc1thY3Rpb25dID0gU291cmNlUGF0aChjb250ZXh0LCBzY3JpcHQpCisgCisgICAgICAgICAgICAgZ3lwX3Byb2Nlc3NvciA9IEd5cFByb2Nlc3Nvcihjb250ZXh0LmNvbmZpZywKK0BAIC0xMTg4LDcgKzExOTEsNyBAQCBjbGFzcyBCdWlsZFJlYWRlcihvYmplY3QpOgorIAorICAgICAgICAgICAgICAgICByZWN1cnNlX2luZm9bZF1ba2V5XSA9IGRpY3Qoc2FuZGJveC5tZXRhZGF0YVtrZXldKQorIAorLSAgICAgICAgZm9yIHBhdGgsIGNoaWxkX21ldGFkYXRhIGluIHJlY3Vyc2VfaW5mby5pdGVtcygpOgorKyAgICAgICAgZm9yIHBhdGgsIGNoaWxkX21ldGFkYXRhIGluIGxpc3QocmVjdXJzZV9pbmZvLml0ZW1zKCkpOgorICAgICAgICAgICAgIGNoaWxkX3BhdGggPSBwYXRoLmpvaW4oJ21vei5idWlsZCcpLmZ1bGxfcGF0aAorIAorICAgICAgICAgICAgICMgRW5zdXJlIHdlIGRvbid0IGJyZWFrIG91dCBvZiB0aGUgdG9wc3JjZGlyLiBXZSBkb24ndCBkbyByZWFscGF0aAorQEAgLTEyNzksNyArMTI4Miw3IEBAIGNsYXNzIEJ1aWxkUmVhZGVyKG9iamVjdCk6CisgICAgICAgICAjIFRoZXJlIGlzIHJvb20gdG8gaW1wcm92ZSB0aGlzIGNvZGUgKGFuZCB0aGUgY29kZSBpbgorICAgICAgICAgIyBfZmluZF9yZWxldmFudF9tb3pidWlsZHMpIHRvIGJldHRlciBoYW5kbGUgbXVsdGlwbGUgZmlsZXMgaW4gdGhlIHNhbWUKKyAgICAgICAgICMgZGlyZWN0b3J5LiBCdWcgMTEzNjk2NiB0cmFja3MuCistICAgICAgICBmb3IgcGF0aCwgbWJwYXRocyBpbiByZWxldmFudHMuaXRlbXMoKToKKysgICAgICAgIGZvciBwYXRoLCBtYnBhdGhzIGluIGxpc3QocmVsZXZhbnRzLml0ZW1zKCkpOgorICAgICAgICAgICAgIHBhdGhfbW96YnVpbGRzW3BhdGhdID0gW21venBhdGguam9pbih0b3BzcmNkaXIsIHApIGZvciBwIGluIG1icGF0aHNdCisgCisgICAgICAgICAgICAgZm9yIGksIG1icGF0aCBpbiBlbnVtZXJhdGUobWJwYXRoc1swOi0xXSk6CitAQCAtMTMxNiw3ICsxMzE5LDcgQEAgY2xhc3MgQnVpbGRSZWFkZXIob2JqZWN0KToKKyAgICAgICAgICAgICBhbGxfY29udGV4dHMuYXBwZW5kKGNvbnRleHQpCisgCisgICAgICAgICByZXN1bHQgPSB7fQorLSAgICAgICAgZm9yIHBhdGgsIHBhdGhzIGluIHBhdGhfbW96YnVpbGRzLml0ZW1zKCk6CisrICAgICAgICBmb3IgcGF0aCwgcGF0aHMgaW4gbGlzdChwYXRoX21vemJ1aWxkcy5pdGVtcygpKToKKyAgICAgICAgICAgICByZXN1bHRbcGF0aF0gPSByZWR1Y2UobGFtYmRhIHgsIHk6IHggKyB5LCAoY29udGV4dHNbcF0gZm9yIHAgaW4gcGF0aHMpLCBbXSkKKyAKKyAgICAgICAgIHJldHVybiByZXN1bHQsIGFsbF9jb250ZXh0cworQEAgLTEzNTYsNyArMTM1OSw3IEBAIGNsYXNzIEJ1aWxkUmVhZGVyKG9iamVjdCk6CisgCisgICAgICAgICByID0ge30KKyAKKy0gICAgICAgIGZvciBwYXRoLCBjdHhzIGluIHBhdGhzLml0ZW1zKCk6CisrICAgICAgICBmb3IgcGF0aCwgY3R4cyBpbiBsaXN0KHBhdGhzLml0ZW1zKCkpOgorICAgICAgICAgICAgICMgU2hvdWxkIGJlIG5vcm1hbGl6ZWQgYnkgcmVhZF9yZWxldmFudF9tb3pidWlsZHMuCisgICAgICAgICAgICAgYXNzZXJ0ICdcXCcgbm90IGluIHBhdGgKKyAKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvZnJvbnRlbmQvc2FuZGJveC5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9mcm9udGVuZC9zYW5kYm94LnB5CitpbmRleCBiMjA5MDgwMmUuLjZkOTQyOTFlYSAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9mcm9udGVuZC9zYW5kYm94LnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvZnJvbnRlbmQvc2FuZGJveC5weQorQEAgLTE3LDcgKzE3LDcgQEAgS2V5RXJyb3IgYXJlIG1hY2hpbmUgcGFyc2VhYmxlLiBUaGlzIG1hY2hpbmUtZnJpZW5kbHkgZGF0YSBpcyB1c2VkIHRvIHByZXNlbnQKKyB1c2VyLWZyaWVuZGx5IGVycm9yIG1lc3NhZ2VzIGluIHRoZSBjYXNlIG9mIGVycm9ycy4KKyAiIiIKKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCBvcworIGltcG9ydCBzeXMKK0BAIC0xMTIsNiArMTEyLDcgQEAgY2xhc3MgU2FuZGJveChkaWN0KToKKyAgICAgICAgICdpbnQnOiBpbnQsCisgICAgICAgICAnc2V0Jzogc2V0LAorICAgICAgICAgJ3R1cGxlJzogdHVwbGUsCisrICAgICAgICAnc3RyJzogc3RyLAorICAgICB9KQorIAorICAgICBkZWYgX19pbml0X18oc2VsZiwgY29udGV4dCwgZmluZGVyPWRlZmF1bHRfZmluZGVyKToKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvamFyLnB5IGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL2phci5weQoraW5kZXggNDdhMmVmZjYzLi45NmFlYTYzY2UgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvamFyLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvamFyLnB5CitAQCAtOCw3ICs4LDcgQEAgcHJvY2Vzc2luZyBqYXIubW4gZmlsZXMuCisgU2VlIHRoZSBkb2N1bWVudGF0aW9uIGZvciBqYXIubW4gb24gTURDIGZvciBmdXJ0aGVyIGRldGFpbHMgb24gdGhlIGZvcm1hdC4KKyAnJycKKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorKworIAorIGltcG9ydCBzeXMKKyBpbXBvcnQgb3MKK0BAIC0xNyw3ICsxNyw3IEBAIGltcG9ydCByZQorIGltcG9ydCBsb2dnaW5nCisgZnJvbSB0aW1lIGltcG9ydCBsb2NhbHRpbWUKKyBmcm9tIE1velppcEZpbGUgaW1wb3J0IFppcEZpbGUKKy1mcm9tIGNTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KKytmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CisgCisgZnJvbSBtb3pidWlsZC5wcmVwcm9jZXNzb3IgaW1wb3J0IFByZXByb2Nlc3NvcgorQEAgLTMwMiw5ICszMDIsOSBAQCBjbGFzcyBKYXJNYWtlcihvYmplY3QpOgorICAgICAgICAgJycndXBkYXRlTWFuaWZlc3QgcmVwbGFjZXMgdGhlICUgaW4gdGhlIGNocm9tZSByZWdpc3RyYXRpb24gZW50cmllcworICAgICAgICAgd2l0aCB0aGUgZ2l2ZW4gY2hyb21lIGJhc2UgcGF0aCwgYW5kIHVwZGF0ZXMgdGhlIGdpdmVuIG1hbmlmZXN0IGZpbGUuCisgICAgICAgICAnJycKKy0gICAgICAgIG15cmVnaXN0ZXIgPSBkaWN0LmZyb21rZXlzKG1hcChsYW1iZGEgczogcy5yZXBsYWNlKCclJywKKy0gICAgICAgICAgICBjaHJvbWViYXNlcGF0aCksIHJlZ2lzdGVyKSkKKy0gICAgICAgIGFkZEVudHJpZXNUb0xpc3RGaWxlKG1hbmlmZXN0UGF0aCwgbXlyZWdpc3Rlci5pdGVya2V5cygpKQorKyAgICAgICAgbXlyZWdpc3RlciA9IGRpY3QuZnJvbWtleXMoW3MucmVwbGFjZSgnJScsCisrICAgICAgICAgICAgY2hyb21lYmFzZXBhdGgpIGZvciBzIGluIHJlZ2lzdGVyXSkKKysgICAgICAgIGFkZEVudHJpZXNUb0xpc3RGaWxlKG1hbmlmZXN0UGF0aCwgaXRlcihteXJlZ2lzdGVyLmtleXMoKSkpCisgCisgICAgIGRlZiBtYWtlSmFyKHNlbGYsIGluZmlsZSwgamFyZGlyKToKKyAgICAgICAgICcnJ21ha2VKYXIgaXMgdGhlIG1haW4gZW50cnkgcG9pbnQgdG8gSmFyTWFrZXIuCitAQCAtMzIyLDcgKzMyMiw3IEBAIGNsYXNzIEphck1ha2VyKG9iamVjdCk6CisgICAgICAgICBlbGlmIHNlbGYucmVsYXRpdmVzcmNkaXI6CisgICAgICAgICAgICAgc2VsZi5sb2NhbGVkaXJzID0gXAorICAgICAgICAgICAgICAgICBzZWxmLmdlbmVyYXRlTG9jYWxlRGlycyhzZWxmLnJlbGF0aXZlc3JjZGlyKQorLSAgICAgICAgaWYgaXNpbnN0YW5jZShpbmZpbGUsIGJhc2VzdHJpbmcpOgorKyAgICAgICAgaWYgaXNpbnN0YW5jZShpbmZpbGUsIHN0cik6CisgICAgICAgICAgICAgbG9nZ2luZy5pbmZvKCdwcm9jZXNzaW5nICcgKyBpbmZpbGUpCisgICAgICAgICAgICAgc2VsZi5zb3VyY2VkaXJzLmFwcGVuZChfbm9ybXBhdGgob3MucGF0aC5kaXJuYW1lKGluZmlsZSkpKQorICAgICAgICAgcHAgPSBzZWxmLnBwLmNsb25lKCkKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvbWFrZXV0aWwucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvbWFrZXV0aWwucHkKK2luZGV4IGZjZDQ1YmVkMi4uZjc3YzVkMmMzIDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL21ha2V1dGlsLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvbWFrZXV0aWwucHkKK0BAIC0yLDExICsyLDEwIEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisrCisgCisgaW1wb3J0IG9zCisgaW1wb3J0IHJlCistZnJvbSB0eXBlcyBpbXBvcnQgU3RyaW5nVHlwZXMKKyBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBJdGVyYWJsZQorIAorIAorQEAgLTY2LDcgKzY1LDcgQEAgY2xhc3MgX1NpbXBsZU9yZGVyZWRTZXQob2JqZWN0KToKKyAgICAgICAgIHNlbGYuX2xpc3QgPSBbXQorICAgICAgICAgc2VsZi5fc2V0ID0gc2V0KCkKKyAKKy0gICAgZGVmIF9fbm9uemVyb19fKHNlbGYpOgorKyAgICBkZWYgX19ib29sX18oc2VsZik6CisgICAgICAgICByZXR1cm4gYm9vbChzZWxmLl9zZXQpCisgCisgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKK0BAIC0xMDMsMTkgKzEwMiwxOSBAQCBjbGFzcyBSdWxlKG9iamVjdCk6CisgCisgICAgIGRlZiBhZGRfdGFyZ2V0cyhzZWxmLCB0YXJnZXRzKToKKyAgICAgICAgICcnJ0FkZCBhZGRpdGlvbmFsIHRhcmdldHMgdG8gdGhlIHJ1bGUuJycnCistICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZSh0YXJnZXRzLCBJdGVyYWJsZSkgYW5kIG5vdCBpc2luc3RhbmNlKHRhcmdldHMsIFN0cmluZ1R5cGVzKQorKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UodGFyZ2V0cywgSXRlcmFibGUpIGFuZCBub3QgaXNpbnN0YW5jZSh0YXJnZXRzLCBzdHIpCisgICAgICAgICBzZWxmLl90YXJnZXRzLnVwZGF0ZSh0YXJnZXRzKQorICAgICAgICAgcmV0dXJuIHNlbGYKKyAKKyAgICAgZGVmIGFkZF9kZXBlbmRlbmNpZXMoc2VsZiwgZGVwcyk6CisgICAgICAgICAnJydBZGQgZGVwZW5kZW5jaWVzIHRvIHRoZSBydWxlLicnJworLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZGVwcywgSXRlcmFibGUpIGFuZCBub3QgaXNpbnN0YW5jZShkZXBzLCBTdHJpbmdUeXBlcykKKysgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRlcHMsIEl0ZXJhYmxlKSBhbmQgbm90IGlzaW5zdGFuY2UoZGVwcywgc3RyKQorICAgICAgICAgc2VsZi5fZGVwZW5kZW5jaWVzLnVwZGF0ZShkZXBzKQorICAgICAgICAgcmV0dXJuIHNlbGYKKyAKKyAgICAgZGVmIGFkZF9jb21tYW5kcyhzZWxmLCBjb21tYW5kcyk6CisgICAgICAgICAnJydBZGQgY29tbWFuZHMgdG8gdGhlIHJ1bGUuJycnCistICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjb21tYW5kcywgSXRlcmFibGUpIGFuZCBub3QgaXNpbnN0YW5jZShjb21tYW5kcywgU3RyaW5nVHlwZXMpCisrICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShjb21tYW5kcywgSXRlcmFibGUpIGFuZCBub3QgaXNpbnN0YW5jZShjb21tYW5kcywgc3RyKQorICAgICAgICAgc2VsZi5fY29tbWFuZHMuZXh0ZW5kKGNvbW1hbmRzKQorICAgICAgICAgcmV0dXJuIHNlbGYKKyAKK0BAIC0xMzksMTMgKzEzOCwxNiBAQCBjbGFzcyBSdWxlKG9iamVjdCk6CisgICAgICAgICAnJycKKyAgICAgICAgIGlmIG5vdCBzZWxmLl90YXJnZXRzOgorICAgICAgICAgICAgIHJldHVybgorLSAgICAgICAgZmgud3JpdGUoJyVzOicgJSAnICcuam9pbihzZWxmLl90YXJnZXRzKSkKKysgICAgICAgIHdzdHJpbmcgPSAnJXM6JyAlICcgJy5qb2luKHNlbGYuX3RhcmdldHMpCisgICAgICAgICBpZiBzZWxmLl9kZXBlbmRlbmNpZXM6CistICAgICAgICAgICAgZmgud3JpdGUoJyAlcycgJSAnICcuam9pbihzZWxmLmRlcGVuZGVuY2llcygpKSkKKy0gICAgICAgIGZoLndyaXRlKCdcbicpCisrICAgICAgICAgICAgd3N0cmluZyArPSAnICVzJyAlICcgJy5qb2luKHNlbGYuZGVwZW5kZW5jaWVzKCkpCisrICAgICAgICB3c3RyaW5nICs9ICdcbicKKyAgICAgICAgIGZvciBjbWQgaW4gc2VsZi5fY29tbWFuZHM6CistICAgICAgICAgICAgZmgud3JpdGUoJ1x0JXNcbicgJSBjbWQpCistCisrICAgICAgICAgICAgd3N0cmluZyArPSAnXHQlc1xuJyAlIGNtZAorKyAgICAgICAgdHJ5OgorKyAgICAgICAgICAgIGZoLndyaXRlKHdzdHJpbmcuZW5jb2RlKCd1dGYtOCcpKQorKyAgICAgICAgZXhjZXB0IFR5cGVFcnJvcjoKKysgICAgICAgICAgICBmaC53cml0ZSh3c3RyaW5nKQorIAorICMgY29sb24gZm9sbG93ZWQgYnkgYW55dGhpbmcgZXhjZXB0IGEgc2xhc2ggKFdpbmRvd3MgcGF0aCBkZXRlY3Rpb24pCisgX2RlcGZpbGVzcGxpdHRlciA9IHJlLmNvbXBpbGUocic6KD8hW1xcL10pJykKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvbW96aW5mby5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9tb3ppbmZvLnB5CitpbmRleCA3ZTdhZDFiMmEuLmYwM2YyMGJhMyAxMDA3NTUKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9tb3ppbmZvLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvbW96aW5mby5weQorQEAgLTUsNyArNSw3IEBACisgIyBUaGlzIG1vZHVsZSBwcm9kdWNlcyBhIEpTT04gZmlsZSB0aGF0IHByb3ZpZGVzIGJhc2ljIGJ1aWxkIGluZm8gYW5kCisgIyBjb25maWd1cmF0aW9uIG1ldGFkYXRhLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisrCisgCisgaW1wb3J0IG9zCisgaW1wb3J0IHJlCitAQCAtMzMsNyArMzMsNyBAQCBkZWYgYnVpbGRfZGljdChjb25maWcsIGVudj1vcy5lbnZpcm9uKToKKyAgICAgICAgIGRbJ21vemNvbmZpZyddID0gY29uZmlnLm1vemNvbmZpZworIAorICAgICAjIG9zCistICAgIG8gPSBzdWJzdHNbIk9TX1RBUkdFVCJdCisrICAgIG8gPSBzdHIoc3Vic3RzWyJPU19UQVJHRVQiXSkKKyAgICAga25vd25fb3MgPSB7IkxpbnV4IjogImxpbnV4IiwKKyAgICAgICAgICAgICAgICAgIldJTk5UIjogIndpbiIsCisgICAgICAgICAgICAgICAgICJEYXJ3aW4iOiAibWFjIiwKK0BAIC0xNDgsNyArMTQ4LDcgQEAgZGVmIHdyaXRlX21vemluZm8oZmlsZSwgY29uZmlnLCBlbnY9b3MuZW52aXJvbik6CisgICAgIGFuZCB3aGF0IGtleXMgYXJlIHByb2R1Y2VkLgorICAgICAiIiIKKyAgICAgYnVpbGRfY29uZiA9IGJ1aWxkX2RpY3QoY29uZmlnLCBlbnYpCistICAgIGlmIGlzaW5zdGFuY2UoZmlsZSwgYmFzZXN0cmluZyk6CistICAgICAgICBmaWxlID0gb3BlbihmaWxlLCAnd2InKQorKyAgICBpZiBpc2luc3RhbmNlKGZpbGUsIHN0cik6CisrICAgICAgICBmaWxlID0gb3BlbihmaWxlLCAndycpCisgCisgICAgIGpzb24uZHVtcChidWlsZF9jb25mLCBmaWxlLCBzb3J0X2tleXM9VHJ1ZSwgaW5kZW50PTQpCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3ByZXByb2Nlc3Nvci5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9wcmVwcm9jZXNzb3IucHkKK2luZGV4IDY3ODBiOGI3Mi4uMTllNTk4ODRlIDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3ByZXByb2Nlc3Nvci5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3ByZXByb2Nlc3Nvci5weQorQEAgLTI3LDcgKzI3LDggQEAgaW1wb3J0IG9zCisgaW1wb3J0IHJlCisgZnJvbSBvcHRwYXJzZSBpbXBvcnQgT3B0aW9uUGFyc2VyCisgaW1wb3J0IGVycm5vCistZnJvbSBtYWtldXRpbCBpbXBvcnQgTWFrZWZpbGUKKytmcm9tIC5tYWtldXRpbCBpbXBvcnQgTWFrZWZpbGUKKytmcm9tIGZ1bmN0b29scyBpbXBvcnQgcmVkdWNlCisgCisgIyBoYWNrIGFyb3VuZCB3aW4zMiBtYW5nbGluZyBvdXIgbGluZSBlbmRpbmdzCisgIyBodHRwOi8vYXNwbi5hY3RpdmVzdGF0ZS5jb20vQVNQTi9Db29rYm9vay9QeXRob24vUmVjaXBlLzY1NDQzCitAQCAtMjMwLDcgKzIzMSw3IEBAIGNsYXNzIEV4cHJlc3Npb246CisgICAgICAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICAgICAgcmV0dXJuIHNlbGYudmFsdWUuX19yZXByX18oKQorIAorLSAgICBjbGFzcyBQYXJzZUVycm9yKFN0YW5kYXJkRXJyb3IpOgorKyAgICBjbGFzcyBQYXJzZUVycm9yKEV4Y2VwdGlvbik6CisgICAgICAgICAiIiIKKyAgICAgICAgIEVycm9yIHJhaXNlZCB3aGVuIHBhcnNpbmcgZmFpbHMuCisgICAgICAgICBJdCBoYXMgdHdvIG1lbWJlcnMsIG9mZnNldCBhbmQgY29udGVudCwgd2hpY2ggZ2l2ZSB0aGUgb2Zmc2V0IG9mIHRoZQorQEAgLTI3OCw3ICsyNzksNyBAQCBjbGFzcyBQcmVwcm9jZXNzb3I6CisgICAgICAgICBzZWxmLmNvbnRleHQgPSBDb250ZXh0KCkKKyAgICAgICAgIGZvciBrLHYgaW4geydGSUxFJzogJycsCisgICAgICAgICAgICAgICAgICAgICAnTElORSc6IDAsCistICAgICAgICAgICAgICAgICAgICAnRElSRUNUT1JZJzogb3MucGF0aC5hYnNwYXRoKCcuJyl9Lml0ZXJpdGVtcygpOgorKyAgICAgICAgICAgICAgICAgICAgJ0RJUkVDVE9SWSc6IG9zLnBhdGguYWJzcGF0aCgnLicpfS5pdGVtcygpOgorICAgICAgICAgICAgIHNlbGYuY29udGV4dFtrXSA9IHYKKyAgICAgICAgIHNlbGYuYWN0aW9uTGV2ZWwgPSAwCisgICAgICAgICBzZWxmLmRpc2FibGVMZXZlbCA9IDAKK0BAIC0yOTIsMjEgKzI5MywyMSBAQCBjbGFzcyBQcmVwcm9jZXNzb3I6CisgICAgICAgICBzZWxmLmNtZHMgPSB7fQorICAgICAgICAgZm9yIGNtZCwgbGV2ZWwgaW4geydkZWZpbmUnOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmRlZic6IDAsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2lmJzogc3lzLm1heGludCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAnaWZkZWYnOiBzeXMubWF4aW50LAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZm5kZWYnOiBzeXMubWF4aW50LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZic6IHN5cy5tYXhzaXplLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZmRlZic6IHN5cy5tYXhzaXplLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdpZm5kZWYnOiBzeXMubWF4c2l6ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWxzZSc6IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VsaWYnOiAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbGlmZGVmJzogMSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZWxpZm5kZWYnOiAxLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdlbmRpZic6IHN5cy5tYXhpbnQsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2VuZGlmJzogc3lzLm1heHNpemUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2V4cGFuZCc6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2xpdGVyYWwnOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmaWx0ZXInOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICd1bmZpbHRlcic6IDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luY2x1ZGUnOiAwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICdpbmNsdWRlc3Vic3QnOiAwLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvcic6IDB9Lml0ZXJpdGVtcygpOgorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdlcnJvcic6IDB9Lml0ZW1zKCk6CisgICAgICAgICAgICAgc2VsZi5jbWRzW2NtZF0gPSAobGV2ZWwsIGdldGF0dHIoc2VsZiwgJ2RvXycgKyBjbWQpKQorICAgICAgICAgc2VsZi5vdXQgPSBzeXMuc3Rkb3V0CisgICAgICAgICBzZWxmLnNldE1hcmtlcihtYXJrZXIpCitAQCAtNDM0LDcgKzQzNSw3IEBAIGNsYXNzIFByZXByb2Nlc3NvcjoKKyAgICAgICAgIGZpbHRlcmVkTGluZSA9IHNlbGYuYXBwbHlGaWx0ZXJzKGFMaW5lKQorICAgICAgICAgaWYgZmlsdGVyZWRMaW5lICE9IGFMaW5lOgorICAgICAgICAgICAgIHNlbGYuYWN0aW9uTGV2ZWwgPSAyCistICAgICAgICBzZWxmLm91dC53cml0ZShmaWx0ZXJlZExpbmUpCisrICAgICAgICBzZWxmLm91dC53cml0ZShmaWx0ZXJlZExpbmUuZW5jb2RlKCd1dGYtOCcpKQorIAorICAgICBkZWYgaGFuZGxlQ29tbWFuZExpbmUoc2VsZiwgYXJncywgZGVmYXVsdFRvU3RkaW4gPSBGYWxzZSk6CisgICAgICAgICAiIiIKK0BAIC00NjgsNyArNDY5LDcgQEAgY2xhc3MgUHJlcHJvY2Vzc29yOgorICAgICAgICAgICAgICAgICByYWlzZSBQcmVwcm9jZXNzb3IuRXJyb3Ioc2VsZiwgIi0tZGVwZW5kIGRvZXNuJ3Qgd29yayB3aXRoIHN0ZG91dCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBOb25lKQorICAgICAgICAgICAgIHRyeToKKy0gICAgICAgICAgICAgICAgZnJvbSBtYWtldXRpbCBpbXBvcnQgTWFrZWZpbGUKKysgICAgICAgICAgICAgICAgZnJvbSAubWFrZXV0aWwgaW1wb3J0IE1ha2VmaWxlCisgICAgICAgICAgICAgZXhjZXB0OgorICAgICAgICAgICAgICAgICByYWlzZSBQcmVwcm9jZXNzb3IuRXJyb3Ioc2VsZiwgIi0tZGVwZW5kIHJlcXVpcmVzIHRoZSAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAibW96YnVpbGQubWFrZXV0aWwgbW9kdWxlIiwgTm9uZSkKK0BAIC02ODMsNyArNjg0LDcgQEAgY2xhc3MgUHJlcHJvY2Vzc29yOgorICAgICAgICAgY3VycmVudCA9IGRpY3Qoc2VsZi5maWx0ZXJzKQorICAgICAgICAgZm9yIGYgaW4gZmlsdGVyczoKKyAgICAgICAgICAgICBjdXJyZW50W2ZdID0gZ2V0YXR0cihzZWxmLCAnZmlsdGVyXycgKyBmKQorLSAgICAgICAgZmlsdGVyTmFtZXMgPSBjdXJyZW50LmtleXMoKQorKyAgICAgICAgZmlsdGVyTmFtZXMgPSBsaXN0KGN1cnJlbnQua2V5cygpKQorICAgICAgICAgZmlsdGVyTmFtZXMuc29ydCgpCisgICAgICAgICBzZWxmLmZpbHRlcnMgPSBbKGZuLCBjdXJyZW50W2ZuXSkgZm9yIGZuIGluIGZpbHRlck5hbWVzXQorICAgICAgICAgcmV0dXJuCitAQCAtNjkzLDcgKzY5NCw3IEBAIGNsYXNzIFByZXByb2Nlc3NvcjoKKyAgICAgICAgIGZvciBmIGluIGZpbHRlcnM6CisgICAgICAgICAgICAgaWYgZiBpbiBjdXJyZW50OgorICAgICAgICAgICAgICAgICBkZWwgY3VycmVudFtmXQorLSAgICAgICAgZmlsdGVyTmFtZXMgPSBjdXJyZW50LmtleXMoKQorKyAgICAgICAgZmlsdGVyTmFtZXMgPSBsaXN0KGN1cnJlbnQua2V5cygpKQorICAgICAgICAgZmlsdGVyTmFtZXMuc29ydCgpCisgICAgICAgICBzZWxmLmZpbHRlcnMgPSBbKGZuLCBjdXJyZW50W2ZuXSkgZm9yIGZuIGluIGZpbHRlck5hbWVzXQorICAgICAgICAgcmV0dXJuCitAQCAtNzM4LDcgKzczOSw3IEBAIGNsYXNzIFByZXByb2Nlc3NvcjoKKyAgICAgICAgIGFyZ3MgY2FuIGVpdGhlciBiZSBhIGZpbGUgbmFtZSwgb3IgYSBmaWxlLWxpa2Ugb2JqZWN0LgorICAgICAgICAgRmlsZXMgc2hvdWxkIGJlIG9wZW5lZCwgYW5kIHdpbGwgYmUgY2xvc2VkIGFmdGVyIHByb2Nlc3NpbmcuCisgICAgICAgICAiIiIKKy0gICAgICAgIGlzTmFtZSA9IHR5cGUoYXJncykgPT0gc3RyIG9yIHR5cGUoYXJncykgPT0gdW5pY29kZQorKyAgICAgICAgaXNOYW1lID0gdHlwZShhcmdzKSA9PSBzdHIgb3IgdHlwZShhcmdzKSA9PSBzdHIKKyAgICAgICAgIG9sZENoZWNrTGluZU51bWJlcnMgPSBzZWxmLmNoZWNrTGluZU51bWJlcnMKKyAgICAgICAgIHNlbGYuY2hlY2tMaW5lTnVtYmVycyA9IEZhbHNlCisgICAgICAgICBpZiBpc05hbWU6CitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3NoZWxsdXRpbC5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC9zaGVsbHV0aWwucHkKK2luZGV4IDE4NWE5NzBlZS4uYzBjMTVmOGYyIDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3NoZWxsdXRpbC5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3NoZWxsdXRpbC5weQorQEAgLTE1LDcgKzE1LDcgQEAgZGVmIF90b2tlbnMycmUoKip0b2tlbnMpOgorICAgICAjIHdoaWNoIG1hdGNoZXMgdGhlIHBhdHRlcm4gYW5kIGNhcHR1cmVzIGl0IGluIGEgbmFtZWQgbWF0Y2ggZ3JvdXAuCisgICAgICMgVGhlIGdyb3VwIG5hbWVzIGFuZCBwYXR0ZXJucyBhcmUgZ2l2ZW4gYXMgYXJndW1lbnRzLgorICAgICBhbGxfdG9rZW5zID0gJ3wnLmpvaW4oJyg/UDwlcz4lcyknICUgKG5hbWUsIHZhbHVlKQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZhbHVlIGluIHRva2Vucy5pdGVyaXRlbXMoKSkKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiB0b2tlbnMuaXRlbXMoKSkKKyAgICAgbm9uZXNjYXBlZCA9IHInKD88IVxcKSg/OiVzKScgJSBhbGxfdG9rZW5zCisgCisgICAgICMgVGhlIGZpbmFsIHBhdHRlcm4gbWF0Y2hlcyBlaXRoZXIgdGhlIGFib3ZlIHBhdHRlcm4sIG9yIGFuIGVzY2FwZWQKK0BAIC05Niw3ICs5Niw3IEBAIGNsYXNzIF9DbGluZVNwbGl0dGVyKG9iamVjdCk6CisgICAgICAgICAgICAgc2VsZi5jbGluZSA9IHNlbGYuY2xpbmVbbS5lbmQoKTpdCisgCisgICAgICAgICAgICAgbWF0Y2ggPSB7bmFtZTogdmFsdWUKKy0gICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gbS5ncm91cGRpY3QoKS5pdGVtcygpIGlmIHZhbHVlfQorKyAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBsaXN0KG0uZ3JvdXBkaWN0KCkuaXRlbXMoKSkgaWYgdmFsdWV9CisgICAgICAgICAgICAgaWYgJ3F1b3RlJyBpbiBtYXRjaDoKKyAgICAgICAgICAgICAgICAgIyAiIG9yICcgc3RhcnQgYSBxdW90ZWQgc3RyaW5nCisgICAgICAgICAgICAgICAgIGlmIG1hdGNoWydxdW90ZSddID09ICciJzoKK0BAIC0xNDQsNyArMTQ0LDcgQEAgY2xhc3MgX0NsaW5lU3BsaXR0ZXIob2JqZWN0KToKKyAgICAgICAgICAgICBzZWxmLl9wdXNoKHNlbGYuY2xpbmVbOm0uc3RhcnQoKV0pCisgICAgICAgICAgICAgc2VsZi5jbGluZSA9IHNlbGYuY2xpbmVbbS5lbmQoKTpdCisgICAgICAgICAgICAgbWF0Y2ggPSB7bmFtZTogdmFsdWUKKy0gICAgICAgICAgICAgICAgICAgICBmb3IgbmFtZSwgdmFsdWUgaW4gbS5ncm91cGRpY3QoKS5pdGVtcygpIGlmIHZhbHVlfQorKyAgICAgICAgICAgICAgICAgICAgIGZvciBuYW1lLCB2YWx1ZSBpbiBsaXN0KG0uZ3JvdXBkaWN0KCkuaXRlbXMoKSkgaWYgdmFsdWV9CisgICAgICAgICAgICAgaWYgJ3F1b3RlJyBpbiBtYXRjaDoKKyAgICAgICAgICAgICAgICAgIyBhIGRvdWJsZSBxdW90ZSBlbmRzIHRoZSBxdW90ZWQgc3RyaW5nLCBzbyBnbyBiYWNrIHRvCisgICAgICAgICAgICAgICAgICMgdW5xdW90ZWQgcGFyc2luZworZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2JhY2tlbmQvdGVzdF9yZWN1cnNpdmVtYWtlLnB5IGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvYmFja2VuZC90ZXN0X3JlY3Vyc2l2ZW1ha2UucHkKK2luZGV4IGEwNTA1OWY4YS4uMzU1YTk2MTY1IDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvYmFja2VuZC90ZXN0X3JlY3Vyc2l2ZW1ha2UucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2JhY2tlbmQvdGVzdF9yZWN1cnNpdmVtYWtlLnB5CitAQCAtMiw5ICsyLDkgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKKyAjIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCB1bmljb2RlX2xpdGVyYWxzCisgCistaW1wb3J0IGNQaWNrbGUgYXMgcGlja2xlCisrCisraW1wb3J0IHBpY2tsZSBhcyBwaWNrbGUKKyBpbXBvcnQganNvbgorIGltcG9ydCBvcworIGltcG9ydCB1bml0dGVzdAorQEAgLTMzMyw3ICszMzMsNyBAQCBjbGFzcyBUZXN0UmVjdXJzaXZlTWFrZUJhY2tlbmQoQmFja2VuZFRlc3Rlcik6CisgICAgICAgICAgICAgXSwKKyAgICAgICAgIH0KKyAKKy0gICAgICAgIGZvciB2YXIsIHZhbCBpbiBleHBlY3RlZC5pdGVtcygpOgorKyAgICAgICAgZm9yIHZhciwgdmFsIGluIGxpc3QoZXhwZWN0ZWQuaXRlbXMoKSk6CisgICAgICAgICAgICAgIyBwcmludCgidGVzdF92YXJpYWJsZV9wYXNzdGhydVslc10iICUgKHZhcikpCisgICAgICAgICAgICAgZm91bmQgPSBbc3RyIGZvciBzdHIgaW4gbGluZXMgaWYgc3RyLnN0YXJ0c3dpdGgodmFyKV0KKyAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGZvdW5kLCB2YWwpCitAQCAtMzcyLDcgKzM3Miw3IEBAIGNsYXNzIFRlc3RSZWN1cnNpdmVNYWtlQmFja2VuZChCYWNrZW5kVGVzdGVyKToKKyAgICAgICAgICAgICBdLAorICAgICAgICAgfQorIAorLSAgICAgICAgZm9yIHZhciwgdmFsIGluIGV4cGVjdGVkLml0ZW1zKCk6CisrICAgICAgICBmb3IgdmFyLCB2YWwgaW4gbGlzdChleHBlY3RlZC5pdGVtcygpKToKKyAgICAgICAgICAgICBmb3VuZCA9IFtzdHIgZm9yIHN0ciBpbiBsaW5lcyBpZiBzdHIuc3RhcnRzd2l0aCh2YXIpXQorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZm91bmQsIHZhbCkKKyAKK0BAIC01NjMsNyArNTYzLDcgQEAgY2xhc3MgVGVzdFJlY3Vyc2l2ZU1ha2VCYWNrZW5kKEJhY2tlbmRUZXN0ZXIpOgorIAorICAgICAgICAgIyBUaGlzIGlzIG5vdCB0aGUgbW9zdCByb2J1c3QgdGVzdCBpbiB0aGUgd29ybGQsIGJ1dCBpdCBnZXRzIHRoZSBqb2IKKyAgICAgICAgICMgZG9uZS4KKy0gICAgICAgIGVudHJpZXMgPSBbZSBmb3IgZSBpbiBtLl9kZXN0cy5rZXlzKCkgaWYgJyoqJyBpbiBlXQorKyAgICAgICAgZW50cmllcyA9IFtlIGZvciBlIGluIGxpc3QobS5fZGVzdHMua2V5cygpKSBpZiAnKionIGluIGVdCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihlbnRyaWVzKSwgMSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ3N1cHBvcnQvKionLCBlbnRyaWVzWzBdKQorIAorQEAgLTU5MCwxMSArNTkwLDExIEBAIGNsYXNzIFRlc3RSZWN1cnNpdmVNYWtlQmFja2VuZChCYWNrZW5kVGVzdGVyKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgc2V0KFsnY2hpbGQvdGVzdF9zdWIuanMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdjaGlsZC9kYXRhLyoqJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY2hpbGQvYW5vdGhlci1maWxlLnNqcyddKSkKKy0gICAgICAgIGZvciBrZXkgaW4gdGVzdF9pbnN0YWxscy5rZXlzKCk6CisrICAgICAgICBmb3Iga2V5IGluIGxpc3QodGVzdF9pbnN0YWxscy5rZXlzKCkpOgorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oa2V5LCB0ZXN0X2luc3RhbGxzKQorIAorICAgICAgICAgc3ludGhlc2l6ZWRfbWFuaWZlc3QgPSBJbnN0YWxsTWFuaWZlc3QoKQorLSAgICAgICAgZm9yIGl0ZW0sIGluc3RhbGxzIGluIHRlc3RfaW5zdGFsbHMuaXRlbXMoKToKKysgICAgICAgIGZvciBpdGVtLCBpbnN0YWxscyBpbiBsaXN0KHRlc3RfaW5zdGFsbHMuaXRlbXMoKSk6CisgICAgICAgICAgICAgZm9yIGluc3RhbGxfaW5mbyBpbiBpbnN0YWxsczoKKyAgICAgICAgICAgICAgICAgaWYgbGVuKGluc3RhbGxfaW5mbykgPT0gMzoKKyAgICAgICAgICAgICAgICAgICAgIHN5bnRoZXNpemVkX21hbmlmZXN0LmFkZF9wYXR0ZXJuX2xpbmsoKmluc3RhbGxfaW5mbykKK0BAIC02MDIsNyArNjAyLDcgQEAgY2xhc3MgVGVzdFJlY3Vyc2l2ZU1ha2VCYWNrZW5kKEJhY2tlbmRUZXN0ZXIpOgorICAgICAgICAgICAgICAgICAgICAgc3ludGhlc2l6ZWRfbWFuaWZlc3QuYWRkX2xpbmsoKmluc3RhbGxfaW5mbykKKyAKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHN5bnRoZXNpemVkX21hbmlmZXN0KSwgMykKKy0gICAgICAgIGZvciBpdGVtLCBpbmZvIGluIHN5bnRoZXNpemVkX21hbmlmZXN0Ll9kZXN0cy5pdGVtcygpOgorKyAgICAgICAgZm9yIGl0ZW0sIGluZm8gaW4gbGlzdChzeW50aGVzaXplZF9tYW5pZmVzdC5fZGVzdHMuaXRlbXMoKSk6CisgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbihpdGVtLCBtKQorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaW5mbywgbS5fZGVzdHNbaXRlbV0pCisgCitAQCAtODY0LDcgKzg2NCw3IEBAIGNsYXNzIFRlc3RSZWN1cnNpdmVNYWtlQmFja2VuZChCYWNrZW5kVGVzdGVyKToKKyAgICAgICAgIGV4cGVjdGVkW21venBhdGguam9pbihlbnYudG9wb2JqZGlyLCAnZmluYWwtdGFyZ2V0JyldID0gWworICAgICAgICAgICAgICdGSU5BTF9UQVJHRVQgPSAkKERFUFRIKS9yYW5kb20tZmluYWwtdGFyZ2V0JworICAgICAgICAgXQorLSAgICAgICAgZm9yIGtleSwgZXhwZWN0ZWRfcnVsZXMgaW4gZXhwZWN0ZWQuaXRlcml0ZW1zKCk6CisrICAgICAgICBmb3Iga2V5LCBleHBlY3RlZF9ydWxlcyBpbiBleHBlY3RlZC5pdGVtcygpOgorICAgICAgICAgICAgIGJhY2tlbmRfcGF0aCA9IG1venBhdGguam9pbihrZXksICdiYWNrZW5kLm1rJykKKyAgICAgICAgICAgICBsaW5lcyA9IFtsLnN0cmlwKCkgZm9yIGwgaW4gb3BlbihiYWNrZW5kX3BhdGgsICdydCcpLnJlYWRsaW5lcygpWzI6XV0KKyAgICAgICAgICAgICBmb3VuZCA9IFtzdHIgZm9yIHN0ciBpbiBsaW5lcyBpZgorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS9jb21tb24ucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvY29tbW9uLnB5CitpbmRleCAxNTBjNmUzOTMuLjVlMmMyYWZhYSAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS9jb21tb24ucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS9jb21tb24ucHkKK0BAIC0yLDcgKzIsNyBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24sIHVuaWNvZGVfbGl0ZXJhbHMKKysKKyAKKyBpbXBvcnQgY29weQorIGltcG9ydCBlcnJubworQEAgLTE2LDcgKzE2LDcgQEAgZnJvbSBtb3pidWlsZC5jb25maWd1cmUgaW1wb3J0IENvbmZpZ3VyZVNhbmRib3gKKyBmcm9tIG1vemJ1aWxkLnV0aWwgaW1wb3J0IFJlYWRPbmx5TmFtZXNwYWNlCisgZnJvbSBtb3pwYWNrIGltcG9ydCBwYXRoIGFzIG1venBhdGgKKyAKKy1mcm9tIFN0cmluZ0lPIGltcG9ydCBTdHJpbmdJTworK2Zyb20gaW8gaW1wb3J0IFN0cmluZ0lPCisgZnJvbSB3aGljaCBpbXBvcnQgV2hpY2hFcnJvcgorIAorIGZyb20gYnVpbGRjb25maWcgaW1wb3J0ICgKK0BAIC03NywxMCArNzcsMTAgQEAgY2xhc3MgQ29uZmlndXJlVGVzdFNhbmRib3goQ29uZmlndXJlU2FuZGJveCk6CisgICAgICAgICBzZWxmLl9zZWFyY2hfcGF0aCA9IGVudmlyb24uZ2V0KCdQQVRIJywgJycpLnNwbGl0KG9zLnBhdGhzZXApCisgCisgICAgICAgICBzZWxmLl9zdWJwcm9jZXNzX3BhdGhzID0geworLSAgICAgICAgICAgIG1venBhdGguYWJzcGF0aChrKTogdiBmb3IgaywgdiBpbiBwYXRocy5pdGVyaXRlbXMoKSBpZiB2CisrICAgICAgICAgICAgbW96cGF0aC5hYnNwYXRoKGspOiB2IGZvciBrLCB2IGluIHBhdGhzLml0ZW1zKCkgaWYgdgorICAgICAgICAgfQorIAorLSAgICAgICAgcGF0aHMgPSBwYXRocy5rZXlzKCkKKysgICAgICAgIHBhdGhzID0gbGlzdChwYXRocy5rZXlzKCkpCisgCisgICAgICAgICBlbnZpcm9uID0gZGljdChlbnZpcm9uKQorICAgICAgICAgaWYgJ0NPTkZJR19TSEVMTCcgbm90IGluIGVudmlyb246CitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL2xpbnQucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvbGludC5weQoraW5kZXggOThmNWY0ZmU3Li5hNTQ5YjRiY2YgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvbGludC5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL2xpbnQucHkKK0BAIC0yLDExICsyLDExIEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbiwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCBvcworIGltcG9ydCB1bml0dGVzdAorLWZyb20gU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCisrZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KKyBmcm9tIG1venVuaXQgaW1wb3J0IG1haW4KKyBmcm9tIGJ1aWxkY29uZmlnIGltcG9ydCAoCisgICAgIHRvcG9iamRpciwKK0BAIC00MCw5ICs0MCw3IEBAIGNsYXNzIExpbnRNZXRhKHR5cGUpOgorICAgICAgICAgcmV0dXJuIHR5cGUuX19uZXdfXyhtY3MsIG5hbWUsIGJhc2VzLCBhdHRycykKKyAKKyAKKy1jbGFzcyBMaW50KHVuaXR0ZXN0LlRlc3RDYXNlKToKKy0gICAgX19tZXRhY2xhc3NfXyA9IExpbnRNZXRhCistCisrY2xhc3MgTGludCh1bml0dGVzdC5UZXN0Q2FzZSwgbWV0YWNsYXNzPUxpbnRNZXRhKToKKyAgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICAgc2VsZi5fY3VyZGlyID0gb3MuZ2V0Y3dkKCkKKyAgICAgICAgIG9zLmNoZGlyKHRvcG9iamRpcikKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF9jaGVja3NfY29uZmlndXJlLnB5IGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfY2hlY2tzX2NvbmZpZ3VyZS5weQoraW5kZXggYzYwMDAwYmIyLi4wNzA5MWMwNzcgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF9jaGVja3NfY29uZmlndXJlLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF9jaGVja3NfY29uZmlndXJlLnB5CitAQCAtMiw5ICsyLDkgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKKyAjIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uLCB1bmljb2RlX2xpdGVyYWxzCisgCistZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KKysKKytmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworIGltcG9ydCBvcworIGltcG9ydCBzeXMKKyBpbXBvcnQgdGV4dHdyYXAKK0BAIC00NDcsNyArNDQ3LDcgQEAgY2xhc3MgVGVzdENoZWNrc0NvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgY2hlY2tpbmcgZm9yIGEuLi4gJXMKKyAgICAgICAgICcnJyAlIHNlbGYuT1RIRVJfQSkpCisgCistICAgICAgICBkaXJzID0gbWFwKG1venBhdGguZGlybmFtZSwgKHNlbGYuT1RIRVJfQSwgc2VsZi5LTk9XTl9BKSkKKysgICAgICAgIGRpcnMgPSBsaXN0KG1hcChtb3pwYXRoLmRpcm5hbWUsIChzZWxmLk9USEVSX0EsIHNlbGYuS05PV05fQSkpKQorICAgICAgICAgY29uZmlnLCBvdXQsIHN0YXR1cyA9IHNlbGYuZ2V0X3Jlc3VsdCh0ZXh0d3JhcC5kZWRlbnQoJycnXAorICAgICAgICAgICAgIGNoZWNrX3Byb2coIkEiLCAoImtub3duLWEiLCksIHBhdGhzPVsiJXMiXSkKKyAgICAgICAgICcnJyAlIG9zLnBhdGhzZXAuam9pbihkaXJzKSkpCitAQCAtNDU3LDcgKzQ1Nyw3IEBAIGNsYXNzIFRlc3RDaGVja3NDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIGNoZWNraW5nIGZvciBhLi4uICVzCisgICAgICAgICAnJycgJSBzZWxmLk9USEVSX0EpKQorIAorLSAgICAgICAgZGlycyA9IG1hcChtb3pwYXRoLmRpcm5hbWUsIChzZWxmLktOT1dOX0EsIHNlbGYuS05PV05fQikpCisrICAgICAgICBkaXJzID0gbGlzdChtYXAobW96cGF0aC5kaXJuYW1lLCAoc2VsZi5LTk9XTl9BLCBzZWxmLktOT1dOX0IpKSkKKyAgICAgICAgIGNvbmZpZywgb3V0LCBzdGF0dXMgPSBzZWxmLmdldF9yZXN1bHQodGV4dHdyYXAuZGVkZW50KCcnJ1wKKyAgICAgICAgICAgICBjaGVja19wcm9nKCJBIiwgKCJrbm93bi1hIiwpLCBwYXRocz1bIiVzIiwgIiVzIl0pCisgICAgICAgICAnJycgJSAob3MucGF0aHNlcC5qb2luKGRpcnMpLCBzZWxmLk9USEVSX0EpKSkKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF9jb21waWxlX2NoZWNrcy5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X2NvbXBpbGVfY2hlY2tzLnB5CitpbmRleCBiNWJlM2JmMmUuLjI4MjAwMGJiMiAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X2NvbXBpbGVfY2hlY2tzLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF9jb21waWxlX2NoZWNrcy5weQorQEAgLTIsMTQgKzIsMTQgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKKyAjIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uLCB1bmljb2RlX2xpdGVyYWxzCisrCisgCisgaW1wb3J0IG9zCisgaW1wb3J0IHRleHR3cmFwCisgaW1wb3J0IHVuaXR0ZXN0CisgaW1wb3J0IG1venBhY2sucGF0aCBhcyBtb3pwYXRoCisgCistZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KKytmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworIAorIGZyb20gYnVpbGRjb25maWcgaW1wb3J0IHRvcHNyY2RpcgorIGZyb20gY29tbW9uIGltcG9ydCBDb25maWd1cmVUZXN0U2FuZGJveAorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X2NvbmZpZ3VyZS5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X2NvbmZpZ3VyZS5weQoraW5kZXggZjM3ZTI3MDFmLi5lYjBjYTg0ZmIgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF9jb25maWd1cmUucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X2NvbmZpZ3VyZS5weQorQEAgLTIsOSArMiw5IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbiwgdW5pY29kZV9saXRlcmFscworIAorLWZyb20gU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCisrCisrZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KKyBpbXBvcnQgb3MKKyBpbXBvcnQgc3lzCisgaW1wb3J0IHRleHR3cmFwCitAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAKKyAgICAgICAgIGlmICctLWhlbHAnIGluIG9wdGlvbnM6CisgICAgICAgICAgICAgcmV0dXJuIG91dC5nZXR2YWx1ZSgpLCBjb25maWcKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCcnLCBvdXQuZ2V0dmFsdWUoKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJycsIG91dC5nZXR2YWx1ZSgpKQorICAgICAgICAgcmV0dXJuIGNvbmZpZworIAorICAgICBkZWYgbW96X2NvbmZpZ3VyZShzZWxmLCBzb3VyY2UpOgorQEAgLTU1LDcgKzU1LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIGRlZiB0ZXN0X2RlZmF1bHRzKHNlbGYpOgorICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKCkKKyAgICAgICAgIHNlbGYubWF4RGlmZiA9IE5vbmUKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHsKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoeworICAgICAgICAgICAgICdDSE9JQ0VTJzogTmVnYXRpdmVPcHRpb25WYWx1ZSgpLAorICAgICAgICAgICAgICdERUZBVUxURUQnOiBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnbm90LXNpbXBsZScsKSksCisgICAgICAgICAgICAgJ0lTX0dDQyc6IE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSwKK0BAIC03MSw5ICs3MSw5IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICBkZWYgdGVzdF9oZWxwKHNlbGYpOgorICAgICAgICAgaGVscCwgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS1oZWxwJ10sIHByb2c9J2NvbmZpZ3VyZScpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh7fSwgY29uZmlnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh7fSwgY29uZmlnKQorICAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICdVc2FnZTogY29uZmlndXJlIFtvcHRpb25zXVxuJworICAgICAgICAgICAgICdcbicKKyAgICAgICAgICAgICAnT3B0aW9uczogW2RlZmF1bHRzIGluIGJyYWNrZXRzIGFmdGVyIGRlc2NyaXB0aW9uc11cbicKK0BAIC0xMDksNyArMTA5LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICApOgorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0VOQUJMRURfU0lNUExFJywgY29uZmlnKQorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1NJTVBMRScsIGNvbmZpZykKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhOZWdhdGl2ZU9wdGlvblZhbHVlKCksIGNvbmZpZ1snU0lNUExFJ10pCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOZWdhdGl2ZU9wdGlvblZhbHVlKCksIGNvbmZpZ1snU0lNUExFJ10pCisgCisgICAgICAgICBmb3IgY29uZmlnIGluICgKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKFsnLS1lbmFibGUtc2ltcGxlJ10pLAorQEAgLTExNyw3ICsxMTcsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICk6CisgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignRU5BQkxFRF9TSU1QTEUnLCBjb25maWcpCisgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignU0lNUExFJywgY29uZmlnKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFBvc2l0aXZlT3B0aW9uVmFsdWUoKSwgY29uZmlnWydTSU1QTEUnXSkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKSwgY29uZmlnWydTSU1QTEUnXSkKKyAgICAgICAgICAgICBzZWxmLmFzc2VydElzKGNvbmZpZ1snU0lNUExFJ10sIGNvbmZpZ1snRU5BQkxFRF9TSU1QTEUnXSkKKyAKKyAgICAgICAgICMgLS1lbmFibGUtc2ltcGxlIGRvZXNuJ3QgdGFrZSB2YWx1ZXMuCitAQCAtMTM1LDcgKzEzNSw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PXsnTU9aX1dJVEhfRU5WJzogJzEnfSksCisgICAgICAgICApOgorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ1dJVEhfRU5WJywgY29uZmlnKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSwgY29uZmlnWydXSVRIX0VOViddKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTmVnYXRpdmVPcHRpb25WYWx1ZSgpLCBjb25maWdbJ1dJVEhfRU5WJ10pCisgCisgICAgICAgICBmb3IgY29uZmlnIGluICgKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKFsnLS1lbmFibGUtd2l0aC1lbnYnXSksCitAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZW52PXsnTU9aX1dJVEhfRU5WJzogJyd9KSwKKyAgICAgICAgICk6CisgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignV0lUSF9FTlYnLCBjb25maWcpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgpLCBjb25maWdbJ1dJVEhfRU5WJ10pCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb3NpdGl2ZU9wdGlvblZhbHVlKCksIGNvbmZpZ1snV0lUSF9FTlYnXSkKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKToKKyAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoWyctLWVuYWJsZS13aXRoLWVudj12YWx1ZSddKQorQEAgLTE2MCwyMyArMTYwLDIzIEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZyhbJy0tZW5hYmxlLXZhbHVlcycsICctLWRpc2FibGUtdmFsdWVzJ10pLAorICAgICAgICAgKToKKyAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUsIGNvbmZpZykKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhOZWdhdGl2ZU9wdGlvblZhbHVlKCksIGNvbmZpZ1tuYW1lXSkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSwgY29uZmlnW25hbWVdKQorIAorICAgICAgICAgZm9yIGNvbmZpZyBpbiAoCisgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKFsnLS1lbmFibGUtdmFsdWVzJ10pLAorICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZyhbJy0tZGlzYWJsZS12YWx1ZXMnLCAnLS1lbmFibGUtdmFsdWVzJ10pLAorICAgICAgICAgKToKKyAgICAgICAgICAgICBzZWxmLmFzc2VydEluKG5hbWUsIGNvbmZpZykKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCksIGNvbmZpZ1tuYW1lXSkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKSwgY29uZmlnW25hbWVdKQorIAorICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS1lbmFibGUtdmFsdWVzPWZvbyddKQorICAgICAgICAgc2VsZi5hc3NlcnRJbihuYW1lLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCgnZm9vJywpKSwgY29uZmlnW25hbWVdKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb3NpdGl2ZU9wdGlvblZhbHVlKCgnZm9vJywpKSwgY29uZmlnW25hbWVdKQorIAorICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS1lbmFibGUtdmFsdWVzPWZvbyxiYXInXSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0SW4obmFtZSwgY29uZmlnKQorICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGNvbmZpZ1tuYW1lXSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdmb28nLCAnYmFyJykpLCBjb25maWdbbmFtZV0pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdmb28nLCAnYmFyJykpLCBjb25maWdbbmFtZV0pCisgCisgICAgIGRlZiB0ZXN0X3ZhbHVlczIoc2VsZik6CisgICAgICAgICBzZWxmLnRlc3RfdmFsdWVzKCdWQUxVRVMyJykKK0BAIC0xODcsMTIgKzE4NywxMiBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgZGVmIHRlc3RfcmV0dXJuZWRfZGVmYXVsdChzZWxmKToKKyAgICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZyhbJy0tZW5hYmxlLXNpbXBsZSddKQorICAgICAgICAgc2VsZi5hc3NlcnRJbignREVGQVVMVEVEJywgY29uZmlnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdzaW1wbGUnLCkpLCBjb25maWdbJ0RFRkFVTFRFRCddKQorIAorICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS1kaXNhYmxlLXNpbXBsZSddKQorICAgICAgICAgc2VsZi5hc3NlcnRJbignREVGQVVMVEVEJywgY29uZmlnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdub3Qtc2ltcGxlJywpKSwgY29uZmlnWydERUZBVUxURUQnXSkKKyAKKyAgICAgZGVmIHRlc3RfcmV0dXJuZWRfY2hvaWNlcyhzZWxmKToKK0BAIC0yMDAsMTMgKzIwMCwxMyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICBjb25maWcgPSBzZWxmLmdldF9jb25maWcoCisgICAgICAgICAgICAgICAgIFsnLS1lbmFibGUtdmFsdWVzPWFscGhhJywgJy0tcmV0dXJuZWQtY2hvaWNlcz0lcycgJSB2YWxdKQorICAgICAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0NIT0lDRVMnLCBjb25maWcpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgodmFsLCkpLCBjb25maWdbJ0NIT0lDRVMnXSkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKHZhbCwpKSwgY29uZmlnWydDSE9JQ0VTJ10pCisgCisgICAgICAgICBmb3IgdmFsIGluICgnMCcsICcxJywgJzInKToKKyAgICAgICAgICAgICBjb25maWcgPSBzZWxmLmdldF9jb25maWcoCisgICAgICAgICAgICAgICAgIFsnLS1lbmFibGUtdmFsdWVzPW51bWVyaWMnLCAnLS1yZXR1cm5lZC1jaG9pY2VzPSVzJyAlIHZhbF0pCisgICAgICAgICAgICAgc2VsZi5hc3NlcnRJbignQ0hPSUNFUycsIGNvbmZpZykKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCh2YWwsKSksIGNvbmZpZ1snQ0hPSUNFUyddKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9zaXRpdmVPcHRpb25WYWx1ZSgodmFsLCkpLCBjb25maWdbJ0NIT0lDRVMnXSkKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKToKKyAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoWyctLWVuYWJsZS12YWx1ZXM9bnVtZXJpYycsCitAQCAtMjE4LDEyICsyMTgsMTIgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIGRlZiB0ZXN0X2luY2x1ZGVkKHNlbGYpOgorICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKGVudj17J0NDJzogJ2djYyd9KQorICAgICAgICAgc2VsZi5hc3NlcnRJbignSVNfR0NDJywgY29uZmlnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnWydJU19HQ0MnXSwgVHJ1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnWydJU19HQ0MnXSwgVHJ1ZSkKKyAKKyAgICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZygKKyAgICAgICAgICAgICBbJy0tZW5hYmxlLWluY2x1ZGU9ZXh0cmEuY29uZmlndXJlJywgJy0tZXh0cmEnXSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0VYVFJBJywgY29uZmlnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgpLCBjb25maWdbJ0VYVFJBJ10pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKSwgY29uZmlnWydFWFRSQSddKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpOgorICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZyhbJy0tZXh0cmEnXSkKK0BAIC0yMzEsNyArMjMxLDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIGRlZiB0ZXN0X3RlbXBsYXRlKHNlbGYpOgorICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKGVudj17J0NDJzogJ2djYyd9KQorICAgICAgICAgc2VsZi5hc3NlcnRJbignQ0ZMQUdTJywgY29uZmlnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnWydDRkxBR1MnXSwgWyctV2Vycm9yPWZvb2JhciddKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ0NGTEFHUyddLCBbJy1XZXJyb3I9Zm9vYmFyJ10pCisgCisgICAgICAgICBjb25maWcgPSBzZWxmLmdldF9jb25maWcoZW52PXsnQ0MnOiAnY2xhbmcnfSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ0NGTEFHUycsIGNvbmZpZykKK0BAIC0yODgsNyArMjg4LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgc2FuZGJveAorICAgICAgICAgKQorIAorLSAgICAgICAgaW1wb3J0IF9fYnVpbHRpbl9fCisrICAgICAgICBpbXBvcnQgYnVpbHRpbnMKKyAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2FuZGJveFsnZm9vJ10oKSwgX19idWlsdGluX18pCisgCisgICAgICAgICBleGVjXyh0ZXh0d3JhcC5kZWRlbnQoJycnCitAQCAtMzAwLDcgKzMwMCw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgKQorIAorICAgICAgICAgZiA9IHNhbmRib3hbJ2ZvbyddKCkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGYubmFtZSwgb3MuZGV2bnVsbCkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZi5uYW1lLCBvcy5kZXZudWxsKQorICAgICAgICAgZi5jbG9zZSgpCisgCisgICAgICAgICAjIFRoaXMgdW5sb2NrcyB0aGUgc2FuZGJveAorQEAgLTMzNiw4ICszMzYsOCBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIHNlbGYuYXNzZXJ0SXMoc2FuZGJveFsnZm9vJ10oKSwgc2FuZGJveCkKKyAKKyAgICAgICAgICMgTm90aGluZyBsZWFrZWQgZnJvbSB0aGUgZnVuY3Rpb24gYmVpbmcgZXhlY3V0ZWQKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNhbmRib3gua2V5cygpLCBbJ19fYnVpbHRpbnNfXycsICdmb28nXSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHNhbmRib3hbJ19fYnVpbHRpbnNfXyddLCBDb25maWd1cmVTYW5kYm94LkJVSUxUSU5TKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KHNhbmRib3gua2V5cygpKSwgWydfX2J1aWx0aW5zX18nLCAnZm9vJ10pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNhbmRib3hbJ19fYnVpbHRpbnNfXyddLCBDb25maWd1cmVTYW5kYm94LkJVSUxUSU5TKQorIAorICAgICAgICAgZXhlY18odGV4dHdyYXAuZGVkZW50KCcnJworICAgICAgICAgICAgIEB0ZW1wbGF0ZQorQEAgLTM1NCw3ICszNTQsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoTmFtZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgIHNhbmRib3guX2RlcGVuZHNbc2FuZGJveFsnYmFyJ11dLnJlc3VsdCgpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImdsb2JhbCBuYW1lICdzeXMnIGlzIG5vdCBkZWZpbmVkIikKKyAKKyAgICAgZGVmIHRlc3RfYXBwbHlfaW1wb3J0cyhzZWxmKToKK0BAIC0zODAsMjggKzM4MCwyOCBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICBzYW5kYm94CisgICAgICAgICApCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhsZW4oaW1wb3J0cyksIDEpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihpbXBvcnRzKSwgMSkKKyAKKyAgICAgZGVmIHRlc3Rfb3NfcGF0aChzZWxmKToKKyAgICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZyhbJy0td2l0aC1pbXBvcnRzPSVzJyAlIF9fZmlsZV9fXSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0hBU19BQlNQQVRIJywgY29uZmlnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnWydIQVNfQUJTUEFUSCddLCBUcnVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ0hBU19BQlNQQVRIJ10sIFRydWUpCisgICAgICAgICBzZWxmLmFzc2VydEluKCdIQVNfR0VUQVRJTUUnLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ0hBU19HRVRBVElNRSddLCBUcnVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ0hBU19HRVRBVElNRSddLCBUcnVlKQorICAgICAgICAgc2VsZi5hc3NlcnRJbignSEFTX0dFVEFUSU1FMicsIGNvbmZpZykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZ1snSEFTX0dFVEFUSU1FMiddLCBGYWxzZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnWydIQVNfR0VUQVRJTUUyJ10sIEZhbHNlKQorIAorICAgICBkZWYgdGVzdF90ZW1wbGF0ZV9jYWxsKHNlbGYpOgorICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKGVudj17J0NDJzogJ2djYyd9KQorICAgICAgICAgc2VsZi5hc3NlcnRJbignVEVNUExBVEVfVkFMVUUnLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ1RFTVBMQVRFX1ZBTFVFJ10sIDQyKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ1RFTVBMQVRFX1ZBTFVFJ10sIDQyKQorICAgICAgICAgc2VsZi5hc3NlcnRJbignVEVNUExBVEVfVkFMVUVfMicsIGNvbmZpZykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZ1snVEVNUExBVEVfVkFMVUVfMiddLCAyMSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnWydURU1QTEFURV9WQUxVRV8yJ10sIDIxKQorIAorICAgICBkZWYgdGVzdF90ZW1wbGF0ZV9pbXBvcnRzKHNlbGYpOgorICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS1lbmFibGUtaW1wb3J0cy1pbi10ZW1wbGF0ZSddKQorICAgICAgICAgc2VsZi5hc3NlcnRJbignUExBVEZPUk0nLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ1BMQVRGT1JNJ10sIHN5cy5wbGF0Zm9ybSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnWydQTEFURk9STSddLCBzeXMucGxhdGZvcm0pCisgCisgICAgIGRlZiB0ZXN0X2RlY29yYXRvcnMoc2VsZik6CisgICAgICAgICBjb25maWcgPSB7fQorQEAgLTQxOSwyNyArNDE5LDI3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHJldHVybiBzZWxmLmdldF9jb25maWcoKmFyZ3MsIGNvbmZpZ3VyZT0nc2V0X2NvbmZpZy5jb25maWd1cmUnKQorIAorICAgICAgICAgaGVscCwgY29uZmlnID0gZ2V0X2NvbmZpZyhbJy0taGVscCddKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7fSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnLCB7fSkKKyAKKyAgICAgICAgIGNvbmZpZyA9IGdldF9jb25maWcoWyctLXNldC1mb28nXSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0ZPTycsIGNvbmZpZykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZ1snRk9PJ10sIFRydWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZ1snRk9PJ10sIFRydWUpCisgCisgICAgICAgICBjb25maWcgPSBnZXRfY29uZmlnKFsnLS1zZXQtYmFyJ10pCisgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdGT08nLCBjb25maWcpCisgICAgICAgICBzZWxmLmFzc2VydEluKCdCQVInLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ0JBUiddLCBUcnVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ0JBUiddLCBUcnVlKQorIAorICAgICAgICAgY29uZmlnID0gZ2V0X2NvbmZpZyhbJy0tc2V0LXZhbHVlPXF1eCddKQorICAgICAgICAgc2VsZi5hc3NlcnRJbignVkFMVUUnLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ1ZBTFVFJ10sICdxdXgnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ1ZBTFVFJ10sICdxdXgnKQorIAorICAgICAgICAgY29uZmlnID0gZ2V0X2NvbmZpZyhbJy0tc2V0LW5hbWU9aG9nZSddKQorICAgICAgICAgc2VsZi5hc3NlcnRJbignaG9nZScsIGNvbmZpZykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZ1snaG9nZSddLCBUcnVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ2hvZ2UnXSwgVHJ1ZSkKKyAKKyAgICAgICAgIGNvbmZpZyA9IGdldF9jb25maWcoW10pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWcsIHsnQkFSJzogRmFsc2V9KQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHsnQkFSJzogRmFsc2V9KQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25maWd1cmVFcnJvcik6CisgICAgICAgICAgICAgIyBCb3RoIC0tc2V0LWZvbyBhbmQgLS1zZXQtbmFtZT1GT08gYXJlIGdvaW5nIHRvIHRyeSB0bworQEAgLTQ1NCwxMSArNDU0LDExIEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHNldF9jb25maWcoJ1FVWCcsICdxdXgnLCB3aGVuPSctLXdpdGgtcXV4JykKKyAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKCkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWcsIHsKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZywgeworICAgICAgICAgICAgICAgICAnRk9PJzogJ2ZvbycsCisgICAgICAgICAgICAgfSkKKyAgICAgICAgICAgICBjb25maWcgPSBzZWxmLmdldF9jb25maWcoWyctLXdpdGgtcXV4J10pCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7CisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHsKKyAgICAgICAgICAgICAgICAgJ0ZPTyc6ICdmb28nLAorICAgICAgICAgICAgICAgICAnUVVYJzogJ3F1eCcsCisgICAgICAgICAgICAgfSkKK0BAIC00NjgsMjcgKzQ2OCwyNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICByZXR1cm4gc2VsZi5nZXRfY29uZmlnKCphcmdzLCBjb25maWd1cmU9J3NldF9kZWZpbmUuY29uZmlndXJlJykKKyAKKyAgICAgICAgIGhlbHAsIGNvbmZpZyA9IGdldF9jb25maWcoWyctLWhlbHAnXSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZywgeydERUZJTkVTJzoge319KQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHsnREVGSU5FUyc6IHt9fSkKKyAKKyAgICAgICAgIGNvbmZpZyA9IGdldF9jb25maWcoWyctLXNldC1mb28nXSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0ZPTycsIGNvbmZpZ1snREVGSU5FUyddKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnWydERUZJTkVTJ11bJ0ZPTyddLCBUcnVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ0RFRklORVMnXVsnRk9PJ10sIFRydWUpCisgCisgICAgICAgICBjb25maWcgPSBnZXRfY29uZmlnKFsnLS1zZXQtYmFyJ10pCisgICAgICAgICBzZWxmLmFzc2VydE5vdEluKCdGT08nLCBjb25maWdbJ0RFRklORVMnXSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0SW4oJ0JBUicsIGNvbmZpZ1snREVGSU5FUyddKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnWydERUZJTkVTJ11bJ0JBUiddLCBUcnVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ0RFRklORVMnXVsnQkFSJ10sIFRydWUpCisgCisgICAgICAgICBjb25maWcgPSBnZXRfY29uZmlnKFsnLS1zZXQtdmFsdWU9cXV4J10pCisgICAgICAgICBzZWxmLmFzc2VydEluKCdWQUxVRScsIGNvbmZpZ1snREVGSU5FUyddKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnWydERUZJTkVTJ11bJ1ZBTFVFJ10sICdxdXgnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ0RFRklORVMnXVsnVkFMVUUnXSwgJ3F1eCcpCisgCisgICAgICAgICBjb25maWcgPSBnZXRfY29uZmlnKFsnLS1zZXQtbmFtZT1ob2dlJ10pCisgICAgICAgICBzZWxmLmFzc2VydEluKCdob2dlJywgY29uZmlnWydERUZJTkVTJ10pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ0RFRklORVMnXVsnaG9nZSddLCBUcnVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ0RFRklORVMnXVsnaG9nZSddLCBUcnVlKQorIAorICAgICAgICAgY29uZmlnID0gZ2V0X2NvbmZpZyhbXSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZ1snREVGSU5FUyddLCB7J0JBUic6IEZhbHNlfSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnWydERUZJTkVTJ10sIHsnQkFSJzogRmFsc2V9KQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25maWd1cmVFcnJvcik6CisgICAgICAgICAgICAgIyBCb3RoIC0tc2V0LWZvbyBhbmQgLS1zZXQtbmFtZT1GT08gYXJlIGdvaW5nIHRvIHRyeSB0bworQEAgLTUwMywxMSArNTAzLDExIEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHNldF9kZWZpbmUoJ1FVWCcsICdxdXgnLCB3aGVuPSctLXdpdGgtcXV4JykKKyAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKCkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ0RFRklORVMnXSwgeworKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnWydERUZJTkVTJ10sIHsKKyAgICAgICAgICAgICAgICAgJ0ZPTyc6ICdmb28nLAorICAgICAgICAgICAgIH0pCisgICAgICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS13aXRoLXF1eCddKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZ1snREVGSU5FUyddLCB7CisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWdbJ0RFRklORVMnXSwgeworICAgICAgICAgICAgICAgICAnRk9PJzogJ2ZvbycsCisgICAgICAgICAgICAgICAgICdRVVgnOiAncXV4JywKKyAgICAgICAgICAgICB9KQorQEAgLTUxOCwxOSArNTE4LDE5IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgICAqYXJncywgY29uZmlndXJlPSdpbXBseV9vcHRpb24vc2ltcGxlLmNvbmZpZ3VyZScpCisgCisgICAgICAgICBoZWxwLCBjb25maWcgPSBnZXRfY29uZmlnKFsnLS1oZWxwJ10pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWcsIHt9KQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHt9KQorIAorICAgICAgICAgY29uZmlnID0gZ2V0X2NvbmZpZyhbXSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZywge30pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZywge30pCisgCisgICAgICAgICBjb25maWcgPSBnZXRfY29uZmlnKFsnLS1lbmFibGUtZm9vJ10pCisgICAgICAgICBzZWxmLmFzc2VydEluKCdCQVInLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ0JBUiddLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCkpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZ1snQkFSJ10sIFBvc2l0aXZlT3B0aW9uVmFsdWUoKSkKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIGdldF9jb25maWcoWyctLWVuYWJsZS1mb28nLCAnLS1kaXNhYmxlLWJhciddKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgIGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgIictLWVuYWJsZS1iYXInIGltcGxpZWQgYnkgJy0tZW5hYmxlLWZvbycgY29uZmxpY3RzIHdpdGggIgorICAgICAgICAgICAgICInLS1kaXNhYmxlLWJhcicgZnJvbSB0aGUgY29tbWFuZC1saW5lIikKK0BAIC01NDEsMzEgKzU0MSwzMSBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAgICAgKmFyZ3MsIGNvbmZpZ3VyZT0naW1wbHlfb3B0aW9uL25lZ2F0aXZlLmNvbmZpZ3VyZScpCisgCisgICAgICAgICBoZWxwLCBjb25maWcgPSBnZXRfY29uZmlnKFsnLS1oZWxwJ10pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWcsIHt9KQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHt9KQorIAorICAgICAgICAgY29uZmlnID0gZ2V0X2NvbmZpZyhbXSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZywge30pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZywge30pCisgCisgICAgICAgICBjb25maWcgPSBnZXRfY29uZmlnKFsnLS1lbmFibGUtZm9vJ10pCisgICAgICAgICBzZWxmLmFzc2VydEluKCdCQVInLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ0JBUiddLCBOZWdhdGl2ZU9wdGlvblZhbHVlKCkpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZ1snQkFSJ10sIE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSkKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIGdldF9jb25maWcoWyctLWVuYWJsZS1mb28nLCAnLS1lbmFibGUtYmFyJ10pCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAiJy0tZGlzYWJsZS1iYXInIGltcGxpZWQgYnkgJy0tZW5hYmxlLWZvbycgY29uZmxpY3RzIHdpdGggIgorICAgICAgICAgICAgICInLS1lbmFibGUtYmFyJyBmcm9tIHRoZSBjb21tYW5kLWxpbmUiKQorIAorICAgICAgICAgY29uZmlnID0gZ2V0X2NvbmZpZyhbJy0tZGlzYWJsZS1ob2dlJ10pCisgICAgICAgICBzZWxmLmFzc2VydEluKCdCQVInLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ0JBUiddLCBOZWdhdGl2ZU9wdGlvblZhbHVlKCkpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZ1snQkFSJ10sIE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSkKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIGdldF9jb25maWcoWyctLWRpc2FibGUtaG9nZScsICctLWVuYWJsZS1iYXInXSkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICBlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICInLS1kaXNhYmxlLWJhcicgaW1wbGllZCBieSAnLS1kaXNhYmxlLWhvZ2UnIGNvbmZsaWN0cyB3aXRoICIKKyAgICAgICAgICAgICAiJy0tZW5hYmxlLWJhcicgZnJvbSB0aGUgY29tbWFuZC1saW5lIikKK0BAIC01NzYsMjMgKzU3NiwyMyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAgICAgKmFyZ3MsIGNvbmZpZ3VyZT0naW1wbHlfb3B0aW9uL3ZhbHVlcy5jb25maWd1cmUnKQorIAorICAgICAgICAgaGVscCwgY29uZmlnID0gZ2V0X2NvbmZpZyhbJy0taGVscCddKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7fSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnLCB7fSkKKyAKKyAgICAgICAgIGNvbmZpZyA9IGdldF9jb25maWcoW10pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWcsIHt9KQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHt9KQorIAorICAgICAgICAgY29uZmlnID0gZ2V0X2NvbmZpZyhbJy0tZW5hYmxlLWZvbz1hJ10pCisgICAgICAgICBzZWxmLmFzc2VydEluKCdCQVInLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ0JBUiddLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsKSkpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZ1snQkFSJ10sIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdhJywpKSkKKyAKKyAgICAgICAgIGNvbmZpZyA9IGdldF9jb25maWcoWyctLWVuYWJsZS1mb289YSxiJ10pCisgICAgICAgICBzZWxmLmFzc2VydEluKCdCQVInLCBjb25maWcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWdbJ0JBUiddLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsJ2InKSkpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZ1snQkFSJ10sIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdhJywnYicpKSkKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIGdldF9jb25maWcoWyctLWVuYWJsZS1mb289YSxiJywgJy0tZGlzYWJsZS1iYXInXSkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICBlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICInLS1lbmFibGUtYmFyPWEsYicgaW1wbGllZCBieSAnLS1lbmFibGUtZm9vJyBjb25mbGljdHMgd2l0aCAiCisgICAgICAgICAgICAgIictLWRpc2FibGUtYmFyJyBmcm9tIHRoZSBjb21tYW5kLWxpbmUiKQorQEAgLTYwMywxNSArNjAzLDE1IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgICAqYXJncywgY29uZmlndXJlPSdpbXBseV9vcHRpb24vaW5mZXIuY29uZmlndXJlJykKKyAKKyAgICAgICAgIGhlbHAsIGNvbmZpZyA9IGdldF9jb25maWcoWyctLWhlbHAnXSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZywge30pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZywge30pCisgCisgICAgICAgICBjb25maWcgPSBnZXRfY29uZmlnKFtdKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7fSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnLCB7fSkKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIGdldF9jb25maWcoWyctLWVuYWJsZS1mb28nLCAnLS1kaXNhYmxlLWJhciddKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgIGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgIictLWVuYWJsZS1iYXInIGltcGxpZWQgYnkgJy0tZW5hYmxlLWZvbycgY29uZmxpY3RzIHdpdGggIgorICAgICAgICAgICAgICInLS1kaXNhYmxlLWJhcicgZnJvbSB0aGUgY29tbWFuZC1saW5lIikKK0BAIC02MTksNyArNjE5LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENvbmZpZ3VyZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZyhbXSwgY29uZmlndXJlPSdpbXBseV9vcHRpb24vaW5mZXJfa28uY29uZmlndXJlJykKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICBlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICJDYW5ub3QgaW5mZXIgd2hhdCBpbXBsaWVzICctLWVuYWJsZS1iYXInLiBQbGVhc2UgYWRkIGEgYHJlYXNvbmAgIgorICAgICAgICAgICAgICJ0byB0aGUgYGltcGx5X29wdGlvbmAgY2FsbC4iKQorQEAgLTYzMCwyNSArNjMwLDI1IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgICAqYXJncywgY29uZmlndXJlPSdpbXBseV9vcHRpb24vaW1tLmNvbmZpZ3VyZScpCisgCisgICAgICAgICBoZWxwLCBjb25maWcgPSBnZXRfY29uZmlnKFsnLS1oZWxwJ10pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWcsIHt9KQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHt9KQorIAorICAgICAgICAgY29uZmlnID0gZ2V0X2NvbmZpZyhbXSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZywge30pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZywge30pCisgCisgICAgICAgICBjb25maWdfcGF0aCA9IG1venBhdGguYWJzcGF0aCgKKyAgICAgICAgICAgICBtb3pwYXRoLmpvaW4odGVzdF9kYXRhX3BhdGgsICdpbXBseV9vcHRpb24nLCAnaW1tLmNvbmZpZ3VyZScpKQorIAorLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlc1JlZ2V4cChJbnZhbGlkT3B0aW9uRXJyb3IsCisrICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXgoSW52YWxpZE9wdGlvbkVycm9yLAorICAgICAgICAgICAgICItLWVuYWJsZS1mb28nIGltcGxpZWQgYnkgJ2ltcGx5X29wdGlvbiBhdCAlczo3JyBjb25mbGljdHMgd2l0aCAiCisgICAgICAgICAgICAgIictLWRpc2FibGUtZm9vJyBmcm9tIHRoZSBjb21tYW5kLWxpbmUiICUgY29uZmlnX3BhdGgpOgorICAgICAgICAgICAgIGdldF9jb25maWcoWyctLWRpc2FibGUtZm9vJ10pCisgCistICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKEludmFsaWRPcHRpb25FcnJvciwKKysgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbnZhbGlkT3B0aW9uRXJyb3IsCisgICAgICAgICAgICAgIi0tZW5hYmxlLWJhcj1mb28sYmFyJyBpbXBsaWVkIGJ5ICdpbXBseV9vcHRpb24gYXQgJXM6MTYnIGNvbmZsaWN0cyIKKyAgICAgICAgICAgICAiIHdpdGggJy0tZW5hYmxlLWJhcj1hLGIsYycgZnJvbSB0aGUgY29tbWFuZC1saW5lIiAlIGNvbmZpZ19wYXRoKToKKyAgICAgICAgICAgICBnZXRfY29uZmlnKFsnLS1lbmFibGUtYmFyPWEsYixjJ10pCisgCistICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKEludmFsaWRPcHRpb25FcnJvciwKKysgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbnZhbGlkT3B0aW9uRXJyb3IsCisgICAgICAgICAgICAgIi0tZW5hYmxlLWJhej1CQVonIGltcGxpZWQgYnkgJ2ltcGx5X29wdGlvbiBhdCAlczoyNScgY29uZmxpY3RzIgorICAgICAgICAgICAgICIgd2l0aCAnLS1lbmFibGUtYmF6PVFVVVgnIGZyb20gdGhlIGNvbW1hbmQtbGluZSIgJSBjb25maWdfcGF0aCk6CisgICAgICAgICAgICAgZ2V0X2NvbmZpZyhbJy0tZW5hYmxlLWJhej1RVVVYJ10pCitAQCAtNjYwLDcgKzY2MCw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImAtLXdpdGgtZm9vYCwgZW1pdHRlZCBmcm9tIGAlc2AgbGluZSAyLCBpcyB1bmtub3duLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbW96cGF0aC5qb2luKHRlc3RfZGF0YV9wYXRoLCAnbW96LmNvbmZpZ3VyZScpKQorIAorQEAgLTY3NSw3ICs2NzUsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIHR5cGU6ICdpbnQnIikKKyAKKyAgICAgZGVmIHRlc3RfaW1wbHlfb3B0aW9uX3doZW4oc2VsZik6CitAQCAtNjg2LDEyICs2ODYsMTIgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgc2V0X2NvbmZpZygnUVVYJywgZGVwZW5kcygnLS13aXRoLXF1eCcpKGxhbWJkYSB4OiB4KSkKKyAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKCkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWcsIHsKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZywgeworICAgICAgICAgICAgICAgICAnUVVYJzogTmVnYXRpdmVPcHRpb25WYWx1ZSgpLAorICAgICAgICAgICAgIH0pCisgCisgICAgICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS13aXRoLWZvbyddKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZywgeworKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnLCB7CisgICAgICAgICAgICAgICAgICdRVVgnOiBQb3NpdGl2ZU9wdGlvblZhbHVlKCksCisgICAgICAgICAgICAgfSkKKyAKK0BAIC03MDAsNyArNzAwLDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgd2l0aCBzZWxmLm1vel9jb25maWd1cmUoJ29wdGlvbigiLS13aXRoLWZvbyIsIGhlbHA9ImZvbyIpJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAnT3B0aW9uIGAtLXdpdGgtZm9vYCBpcyBub3QgaGFuZGxlZCA7IHJlZmVyZW5jZSBpdCB3aXRoIGEgQGRlcGVuZHMnCisgICAgICAgICApCitAQCAtNzEyLDcgKzcxMiw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAnT3B0aW9uIGAtLXdpdGgtZm9vYCBhbHJlYWR5IGRlZmluZWQnCisgICAgICAgICApCitAQCAtNzI0LDcgKzcyNCw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAnT3B0aW9uIGBNT1pfRk9PYCBhbHJlYWR5IGRlZmluZWQnCisgICAgICAgICApCitAQCAtNzM2LDcgKzczNiw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAnT3B0aW9uIGBNT1pfRk9PYCBhbHJlYWR5IGRlZmluZWQnCisgICAgICAgICApCitAQCAtNzQ4LDcgKzc0OCw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAnT3B0aW9uIGBNT1pfRk9PYCBhbHJlYWR5IGRlZmluZWQnCisgICAgICAgICApCitAQCAtNzYwLDcgKzc2MCw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAnT3B0aW9uIGAtLXdpdGgtZm9vYCBhbHJlYWR5IGRlZmluZWQnCisgICAgICAgICApCitAQCAtNzc2LDE4ICs3NzYsMTggQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgc2V0X2NvbmZpZygnUVVYJywgZGVwZW5kcygnLS13aXRoLXF1eCcsIHdoZW49Jy0td2l0aC1mb28nKShsYW1iZGEgeDogeCkpCisgICAgICAgICAnJycpOgorICAgICAgICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZygpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7CisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHsKKyAgICAgICAgICAgICAgICAgJ0ZPTyc6IE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSwKKyAgICAgICAgICAgICB9KQorIAorICAgICAgICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZyhbJy0td2l0aC1mb28nXSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWcsIHsKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZywgeworICAgICAgICAgICAgICAgICAnRk9PJzogUG9zaXRpdmVPcHRpb25WYWx1ZSgpLAorICAgICAgICAgICAgICAgICAnUVVYJzogTmVnYXRpdmVPcHRpb25WYWx1ZSgpLAorICAgICAgICAgICAgIH0pCisgCisgICAgICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS13aXRoLWZvbycsICctLXdpdGgtcXV4J10pCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7CisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHsKKyAgICAgICAgICAgICAgICAgJ0ZPTyc6IFBvc2l0aXZlT3B0aW9uVmFsdWUoKSwKKyAgICAgICAgICAgICAgICAgJ1FVWCc6IFBvc2l0aXZlT3B0aW9uVmFsdWUoKSwKKyAgICAgICAgICAgICB9KQorQEAgLTc5NSw3ICs3OTUsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKFsnLS13aXRoLWJhciddKQorIAorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgIGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICctLXdpdGgtYmFyIGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBjb25maWd1cmF0aW9uJworICAgICAgICAgICAgICkKK0BAIC04MDMsNyArODAzLDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZyhbJy0td2l0aC1xdXgnXSkKKyAKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgICAgICBlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAnLS13aXRoLXF1eCBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgY29uZmlndXJhdGlvbicKKyAgICAgICAgICAgICApCitAQCAtODExLDE4ICs4MTEsMTggQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZyhbJ1FVWD0xJ10pCisgCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICAgICAgZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgJ1FVWCBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgY29uZmlndXJhdGlvbicKKyAgICAgICAgICAgICApCisgCisgICAgICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKGVudj17J1FVWCc6ICcxJ30pCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7CisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHsKKyAgICAgICAgICAgICAgICAgJ0ZPTyc6IE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSwKKyAgICAgICAgICAgICB9KQorIAorICAgICAgICAgICAgIGhlbHAsIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZyhbJy0taGVscCddKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGhlbHAsIHRleHR3cmFwLmRlZGVudCgnJydcCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoZWxwLCB0ZXh0d3JhcC5kZWRlbnQoJycnXAorICAgICAgICAgICAgICAgICBVc2FnZTogY29uZmlndXJlIFtvcHRpb25zXQorIAorICAgICAgICAgICAgICAgICBPcHRpb25zOiBbZGVmYXVsdHMgaW4gYnJhY2tldHMgYWZ0ZXIgZGVzY3JpcHRpb25zXQorQEAgLTgzMyw3ICs4MzMsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpKQorIAorICAgICAgICAgICAgIGhlbHAsIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZyhbJy0taGVscCcsICctLXdpdGgtZm9vJ10pCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoaGVscCwgdGV4dHdyYXAuZGVkZW50KCcnJ1wKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGhlbHAsIHRleHR3cmFwLmRlZGVudCgnJydcCisgICAgICAgICAgICAgICAgIFVzYWdlOiBjb25maWd1cmUgW29wdGlvbnNdCisgCisgICAgICAgICAgICAgICAgIE9wdGlvbnM6IFtkZWZhdWx0cyBpbiBicmFja2V0cyBhZnRlciBkZXNjcmlwdGlvbnNdCitAQCAtODUxLDcgKzg1MSw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29uZmlndXJlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0BkZXBlbmRzIGZ1bmN0aW9uIG5lZWRzIHRoZSBzYW1lIGB3aGVuYCBhcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbnMgaXQgZGVwZW5kcyBvbicpCisgCitAQCAtODY4LDcgKzg2OCw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29uZmlndXJlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0BkZXBlbmRzIGZ1bmN0aW9uIG5lZWRzIHRoZSBzYW1lIGB3aGVuYCBhcyAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ29wdGlvbnMgaXQgZGVwZW5kcyBvbicpCisgCitAQCAtODk2LDcgKzg5Niw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHdpdGggc2VsZi5tb3pfY29uZmlndXJlKCdpbmNsdWRlKCIuLi9mb28uY29uZmlndXJlIiknKToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKCkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICBlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICdDYW5ub3QgaW5jbHVkZSBgJXNgIGJlY2F1c2UgaXQgaXMgbm90IGluIGEgc3ViZGlyZWN0b3J5IG9mIGAlc2AnCisgICAgICAgICAgICAgJSAobW96cGF0aC5ub3JtcGF0aChtb3pwYXRoLmpvaW4odGVzdF9kYXRhX3BhdGgsICcuLicsCitAQCAtOTExLDcgKzkxMSw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAnQ2Fubm90IGluY2x1ZGUgYCVzYCBiZWNhdXNlIGl0IHdhcyBpbmNsdWRlZCBhbHJlYWR5LicKKyAgICAgICAgICAgICAlIG1venBhdGgubm9ybXBhdGgobW96cGF0aC5qb2luKHRlc3RfZGF0YV9wYXRoLAorQEAgLTkyNCw3ICs5MjQsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwgIlVuZXhwZWN0ZWQgdHlwZTogJ2ludCciKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLCAiVW5leHBlY3RlZCB0eXBlOiAnaW50JyIpCisgCisgICAgIGRlZiB0ZXN0X2luY2x1ZGVfd2hlbihzZWxmKToKKyAgICAgICAgIHdpdGggTW9ja2VkT3Blbih7CitAQCAtOTY3LDI2ICs5NjcsMjYgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKSwKKyAgICAgICAgIH0pOgorICAgICAgICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZygpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7fSkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZywge30pCisgCisgICAgICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS13aXRoLWZvbyddKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZywge30pCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHt9KQorIAorICAgICAgICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZyhbJy0td2l0aC1iYXInXSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb25maWcsIHsKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbmZpZywgeworICAgICAgICAgICAgICAgICAnQkFSJzogJ2JhcicsCisgICAgICAgICAgICAgfSkKKyAKKyAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKFsnLS13aXRoLXF1eCddKQorIAorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoCisgICAgICAgICAgICAgICAgIGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICctLXdpdGgtcXV4IGlzIG5vdCBhdmFpbGFibGUgaW4gdGhpcyBjb25maWd1cmF0aW9uJworICAgICAgICAgICAgICkKKyAKKyAgICAgICAgICAgICBjb25maWcgPSBzZWxmLmdldF9jb25maWcoWyctLXdpdGgtZm9vJywgJy0td2l0aC1mb28tcmVhbGx5J10pCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7CisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHsKKyAgICAgICAgICAgICAgICAgJ0ZPTyc6ICdmb28nLAorICAgICAgICAgICAgICAgICAnRk9PMic6IFRydWUsCisgICAgICAgICAgICAgfSkKK0BAIC05OTgsNyArOTk4LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKCkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsICdDYW5ub3QgcmVhc3NpZ24gYnVpbHRpbnMnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLCAnQ2Fubm90IHJlYXNzaWduIGJ1aWx0aW5zJykKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoS2V5RXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgd2l0aCBzZWxmLm1vel9jb25maWd1cmUoJycnCitAQCAtMTAwNiw3ICsxMDA2LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKCkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2Fubm90IGFzc2lnbiBgZm9vYCBiZWNhdXNlIGl0IGlzIG5laXRoZXIgYSAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnQGRlcGVuZHMgbm9yIGEgQHRlbXBsYXRlJykKKyAKK0BAIC0xMDE5LDcgKzEwMTksNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJAZGVwZW5kcyBuZWVkcyBhdCBsZWFzdCBvbmUgYXJndW1lbnQiKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25maWd1cmVFcnJvcikgYXMgZToKK0BAIC0xMDMwLDcgKzEwMzAsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICInLS13aXRoLWZvbycgaXMgbm90IGEga25vd24gb3B0aW9uLiBNYXliZSBpdCdzICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJkZWNsYXJlZCB0b28gbGF0ZT8iKQorIAorQEAgLTEwNDIsNyArMTA0Miw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIk9wdGlvbiBtdXN0IG5vdCBjb250YWluIGFuICc9JyIpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgZToKK0BAIC0xMDUzLDcgKzEwNTMsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJDYW5ub3QgdXNlIG9iamVjdCBvZiB0eXBlICdpbnQnIGFzIGFyZ3VtZW50ICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJ0byBAZGVwZW5kcyIpCisgCitAQCAtMTA2NSw3ICsxMDY1LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKCkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiQ2Fubm90IGRlY29yYXRlIGdlbmVyYXRvciBmdW5jdGlvbnMgd2l0aCBAZGVwZW5kcyIpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKFR5cGVFcnJvcikgYXMgZToKK0BAIC0xMDc0LDcgKzEwNzQsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJVbmV4cGVjdGVkIHR5cGU6ICdpbnQnIikKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29uZmlndXJlRXJyb3IpIGFzIGU6CitAQCAtMTA4OCw3ICsxMDg4LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKCkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGBmb29gIGZ1bmN0aW9uIG1heSBub3QgYmUgY2FsbGVkIikKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoVHlwZUVycm9yKSBhcyBlOgorQEAgLTEwOTksNyArMTA5OSw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImRlcGVuZHNfaW1wbCgpIGdvdCBhbiB1bmV4cGVjdGVkIGtleXdvcmQgYXJndW1lbnQgJ2ZvbyciKQorIAorICAgICBkZWYgdGVzdF9kZXBlbmRzX3doZW4oc2VsZik6CitAQCAtMTEyNCwxMiArMTEyNCwxMiBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICBzZXRfY29uZmlnKCdRVVgnLCBxdXgpCisgICAgICAgICAnJycpOgorICAgICAgICAgICAgIGNvbmZpZyA9IHNlbGYuZ2V0X2NvbmZpZygpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29uZmlnLCB7CisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb25maWcsIHsKKyAgICAgICAgICAgICAgICAgJ0ZPTyc6ICdmb28nLAorICAgICAgICAgICAgIH0pCisgCisgICAgICAgICAgICAgY29uZmlnID0gc2VsZi5nZXRfY29uZmlnKFsnLS13aXRoLXF1eCddKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbmZpZywgeworKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29uZmlnLCB7CisgICAgICAgICAgICAgICAgICdGT08nOiAnZm9vJywKKyAgICAgICAgICAgICAgICAgJ1FVWCc6ICdxdXgnLAorICAgICAgICAgICAgIH0pCitAQCAtMTE0NCw3ICsxMTQ0LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKCkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnQGltcG9ydHMgbXVzdCBhcHBlYXIgYWZ0ZXIgQHRlbXBsYXRlJykKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29uZmlndXJlRXJyb3IpIGFzIGU6CitAQCAtMTE1Nyw3ICsxMTU3LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKCkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAnQGltcG9ydHMgbXVzdCBhcHBlYXIgYWZ0ZXIgQGRlcGVuZHMnKQorIAorICAgICAgICAgZm9yIGltcG9ydF8gaW4gKAorQEAgLTExNzQsNyArMTE3NCw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgICAnJycgJSBpbXBvcnRfKToKKyAgICAgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwgIlVuZXhwZWN0ZWQgdHlwZTogJ2ludCciKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwgIlVuZXhwZWN0ZWQgdHlwZTogJ2ludCciKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhUeXBlRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgd2l0aCBzZWxmLm1vel9jb25maWd1cmUoJycnCitAQCAtMTE4NSw3ICsxMTg1LDcgQEAgY2xhc3MgVGVzdENvbmZpZ3VyZSh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5nZXRfY29uZmlnKCkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsICJVbmV4cGVjdGVkIHR5cGU6ICdpbnQnIikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwgIlVuZXhwZWN0ZWQgdHlwZTogJ2ludCciKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhWYWx1ZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgIHdpdGggc2VsZi5tb3pfY29uZmlndXJlKCcnJworQEAgLTExOTUsNyArMTE5NSw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYuZ2V0X2NvbmZpZygpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIkludmFsaWQgYXJndW1lbnQgdG8gQGltcG9ydHM6ICdvcyonIikKKyAKKyAgICAgZGVmIHRlc3Rfb25seV93aGVuKHNlbGYpOgorQEAgLTEyNTAsNyArMTI1MCw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoWyctLWZvbyddKQorIAorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWZvbyBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgY29uZmlndXJhdGlvbicpCisgCisgICAgICAgICAjIENhbm5vdCBkZXBlbmQgb24gYW4gb3B0aW9uIGRlZmluZWQgaW4gYSBvbmx5X3doZW4gYmxvY2ssIGJlY2F1c2Ugd2UKK0BAIC0xMjYxLDcgKzEyNjEsNyBAQCBjbGFzcyBUZXN0Q29uZmlndXJlKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKENvbmZpZ3VyZUVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoKQorIAorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdAZGVwZW5kcyBmdW5jdGlvbiBuZWVkcyB0aGUgc2FtZSBgd2hlbmAgYXMgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdvcHRpb25zIGl0IGRlcGVuZHMgb24nKQorIAorQEAgLTEyNzgsNyArMTI3OCw3IEBAIGNsYXNzIFRlc3RDb25maWd1cmUodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICBzZWxmLmdldF9jb25maWcoKQorIAorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWZvbyBpcyBub3QgYXZhaWxhYmxlIGluIHRoaXMgY29uZmlndXJhdGlvbicpCisgCisgICAgICAgICAjIEFuZCBzaW1pbGFybHkgZG9lc24ndCBmYWlsIHdoZW4gdGhlIGNvbmRpdGlvbiBpcyB0cnVlLgorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X2xpbnQucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF9saW50LnB5CitpbmRleCA2ZDhkNGM0OWYuLjZhZDg5NzgzOSAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X2xpbnQucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X2xpbnQucHkKK0BAIC0yLDkgKzIsOSBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24sIHVuaWNvZGVfbGl0ZXJhbHMKKyAKKy1mcm9tIFN0cmluZ0lPIGltcG9ydCBTdHJpbmdJTworKworK2Zyb20gaW8gaW1wb3J0IFN0cmluZ0lPCisgaW1wb3J0IG9zCisgaW1wb3J0IHRleHR3cmFwCisgaW1wb3J0IHVuaXR0ZXN0CitAQCAtNjIsNyArNjIsNyBAQCBjbGFzcyBUZXN0TGludCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5saW50X3Rlc3QoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJgYmFyYCBkZXBlbmRzIG9uICctLWhlbHAnIGFuZCBgZm9vYC4gIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgImBmb29gIG11c3QgZGVwZW5kIG9uICctLWhlbHAnIikKKyAKK0BAIC04NSw3ICs4NSw3IEBAIGNsYXNzIFRlc3RMaW50KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmxpbnRfdGVzdCgpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgImBiYXJgIGRlcGVuZHMgb24gJy0taGVscCcgYW5kIGBmb29gLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiYGZvb2AgbXVzdCBkZXBlbmQgb24gJy0taGVscCciKQorIAorQEAgLTExMSw3ICsxMTEsNyBAQCBjbGFzcyBUZXN0TGludCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5saW50X3Rlc3QoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaXNzaW5nIEBkZXBlbmRzIGZvciBgZm9vYDogJy0taGVscCciKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhDb25maWd1cmVFcnJvcikgYXMgZToKK0BAIC0xMzAsNyArMTMwLDcgQEAgY2xhc3MgVGVzdExpbnQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICcnJyk6CisgICAgICAgICAgICAgICAgIHNlbGYubGludF90ZXN0KCkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiTWlzc2luZyBAZGVwZW5kcyBmb3IgYGZvb2A6ICctLWhlbHAnIikKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQ29uZmlndXJlRXJyb3IpIGFzIGU6CitAQCAtMTQ1LDcgKzE0NSw3IEBAIGNsYXNzIFRlc3RMaW50KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmxpbnRfdGVzdCgpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIk1pc3NpbmcgQGRlcGVuZHMgZm9yIGBmb29gOiAnLS1oZWxwJyIpCisgCisgICAgICAgICAjIFRoaXMgd291bGQgaGF2ZSBmYWlsZWQgd2l0aCAiTWlzc2luZyBAZGVwZW5kcyBmb3IgYGZvb2A6ICctLWhlbHAnIgorQEAgLTE3OCw3ICsxNzgsNyBAQCBjbGFzcyBUZXN0TGludCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5saW50X3Rlc3QoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJNaXNzaW5nIEBkZXBlbmRzIGZvciBgZm9vYDogJy0taGVscCciKQorIAorICAgICAgICAgIyBUaGVyZSBpcyBhIGRlZmF1bHQgcmVzdHJpY3RlZCBgb3NgIG1vZHVsZSB3aGVuIHRoZXJlIGlzIG5vIGV4cGxpY2l0CitAQCAtMjA1LDcgKzIwNSw3IEBAIGNsYXNzIFRlc3RMaW50KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmxpbnRfdGVzdCgpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzOjM6IFRoZSBkZXBlbmRlbmN5IG9uIGAtLWZvb2AgaXMgdW51c2VkLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbW96cGF0aC5qb2luKHRlc3RfZGF0YV9wYXRoLCAnbW96LmNvbmZpZ3VyZScpKQorIAorQEAgLTIyMiw3ICsyMjIsNyBAQCBjbGFzcyBUZXN0TGludCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5saW50X3Rlc3QoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIlczo1OiBUaGUgZGVwZW5kZW5jeSBvbiBgYmFyYCBpcyB1bnVzZWQuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBtb3pwYXRoLmpvaW4odGVzdF9kYXRhX3BhdGgsICdtb3ouY29uZmlndXJlJykpCisgCitAQCAtMjM2LDcgKzIzNiw3IEBAIGNsYXNzIFRlc3RMaW50KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICAnJycpOgorICAgICAgICAgICAgICAgICBzZWxmLmxpbnRfdGVzdCgpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzOjI6IFRoZSBkZXBlbmRlbmN5IG9uIGA8bGFtYmRhPmAgaXMgdW51c2VkLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbW96cGF0aC5qb2luKHRlc3RfZGF0YV9wYXRoLCAnbW96LmNvbmZpZ3VyZScpKQorIAorQEAgLTI1Nyw3ICsyNTcsNyBAQCBjbGFzcyBUZXN0TGludCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJycnKToKKyAgICAgICAgICAgICAgICAgc2VsZi5saW50X3Rlc3QoKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICIlczo5OiBUaGUgZGVwZW5kZW5jeSBvbiBgcXV4YCBpcyB1bnVzZWQuIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBtb3pwYXRoLmpvaW4odGVzdF9kYXRhX3BhdGgsICdtb3ouY29uZmlndXJlJykpCisgCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfbW96X2NvbmZpZ3VyZS5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X21vel9jb25maWd1cmUucHkKK2luZGV4IGIzMzQyZTI2OC4uN2EyNmU5ZTA5IDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfbW96X2NvbmZpZ3VyZS5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfbW96X2NvbmZpZ3VyZS5weQorQEAgLTIsNyArMiw3IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbiwgdW5pY29kZV9saXRlcmFscworKworIAorIGZyb20gbW96dW5pdCBpbXBvcnQgbWFpbgorIGZyb20gbW96cGFjayBpbXBvcnQgcGF0aCBhcyBtb3pwYXRoCitAQCAtMjcsMTAgKzI3LDEwIEBAIGNsYXNzIFRlc3RNb3pDb25maWd1cmUoQmFzZUNvbmZpZ3VyZVRlc3QpOgorICAgICAgICAgICAgIHNoZWxsID0gbW96cGF0aC5hYnNwYXRoKCcvYmluL3NoJykKKyAgICAgICAgICAgICByZXR1cm4gcmVzdWx0LnJlcGxhY2UoJ0NPTkZJR19TSEVMTD0lcyAnICUgc2hlbGwsICcnKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0tZW5hYmxlLWFwcGxpY2F0aW9uPWJyb3dzZXInLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnLS1lbmFibGUtYXBwbGljYXRpb249YnJvd3NlcicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICBnZXRfdmFsdWVfZm9yKFsnLS1lbmFibGUtYXBwbGljYXRpb249YnJvd3NlciddKSkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLWVuYWJsZS1hcHBsaWNhdGlvbj1icm93c2VyICcKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0tZW5hYmxlLWFwcGxpY2F0aW9uPWJyb3dzZXIgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01PWl9WVFVORT0xJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF92YWx1ZV9mb3IoWyctLWVuYWJsZS1hcHBsaWNhdGlvbj1icm93c2VyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdNT1pfVlRVTkU9MSddKSkKK0BAIC0zOSwyNSArMzksMjUgQEAgY2xhc3MgVGVzdE1vekNvbmZpZ3VyZShCYXNlQ29uZmlndXJlVGVzdCk6CisgICAgICAgICAgICAgZW52aXJvbj17J01PWl9WVFVORSc6ICcxJ30sCisgICAgICAgICAgICAgbW96Y29uZmlnPSdhY19hZGRfb3B0aW9ucyAtLWVuYWJsZS1wcm9qZWN0PWpzJykKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLWVuYWJsZS1wcm9qZWN0PWpzIE1PWl9WVFVORT0xJywKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0tZW5hYmxlLXByb2plY3Q9anMgTU9aX1ZUVU5FPTEnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgdmFsdWUpCisgCisgICAgICAgICAjIC0tZGlzYWJsZS1qcy1zaGVsbCBpcyB0aGUgZGVmYXVsdCwgc28gaXQncyBmaWx0ZXJlZCBvdXQuCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS1lbmFibGUtYXBwbGljYXRpb249YnJvd3NlcicsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLWVuYWJsZS1hcHBsaWNhdGlvbj1icm93c2VyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF92YWx1ZV9mb3IoWyctLWVuYWJsZS1hcHBsaWNhdGlvbj1icm93c2VyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtanMtc2hlbGwnXSkpCisgCisgICAgICAgICAjIE5vcm1hbGx5LCAtLXdpdGhvdXQtZm9vIHdvdWxkIGJlIGZpbHRlcmVkIG91dCBiZWNhdXNlIHRoYXQncyB0aGUKKyAgICAgICAgICMgZGVmYXVsdCwgYnV0IHNpbmNlIGl0IGlzIGEgKGZha2UpIG9sZC1jb25maWd1cmUgb3B0aW9uLCBpdCBhbHdheXMKKyAgICAgICAgICMgYXBwZWFycy4KKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLWVuYWJsZS1hcHBsaWNhdGlvbj1icm93c2VyIC0td2l0aG91dC1mb28nLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnLS1lbmFibGUtYXBwbGljYXRpb249YnJvd3NlciAtLXdpdGhvdXQtZm9vJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF92YWx1ZV9mb3IoWyctLWVuYWJsZS1hcHBsaWNhdGlvbj1icm93c2VyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXdpdGhvdXQtZm9vJ10pKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0tZW5hYmxlLWFwcGxpY2F0aW9uPWJyb3dzZXIgLS13aXRoLWZvbycsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLWVuYWJsZS1hcHBsaWNhdGlvbj1icm93c2VyIC0td2l0aC1mb28nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2V0X3ZhbHVlX2ZvcihbJy0tZW5hYmxlLWFwcGxpY2F0aW9uPWJyb3dzZXInLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0td2l0aC1mb28nXSkpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygiLS1lbmFibGUtYXBwbGljYXRpb249YnJvd3NlciAnLS13aXRoLWZvbz1mb28gYmFyJyIsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCItLWVuYWJsZS1hcHBsaWNhdGlvbj1icm93c2VyICctLXdpdGgtZm9vPWZvbyBiYXInIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGdldF92YWx1ZV9mb3IoWyctLWVuYWJsZS1hcHBsaWNhdGlvbj1icm93c2VyJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLXdpdGgtZm9vPWZvbyBiYXInXSkpCisgCitAQCAtNjksNyArNjksNyBAQCBjbGFzcyBUZXN0TW96Q29uZmlndXJlKEJhc2VDb25maWd1cmVUZXN0KToKKyAgICAgICAgICAgICAgICAgc2VsZi52ZXJzaW9uID0gdmVyc2lvbgorIAorICAgICAgICAgICAgIGRlZiBfX2NhbGxfXyhzZWxmLCBzdGRpbiwgYXJncyk6CistICAgICAgICAgICAgICAgIHRoaXMuYXNzZXJ0RXF1YWxzKGFyZ3MsICgnLXZlcnNpb24nLCkpCisrICAgICAgICAgICAgICAgIHRoaXMuYXNzZXJ0RXF1YWwoYXJncywgKCctdmVyc2lvbicsKSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIDAsIHNlbGYudmVyc2lvbiwgJycKKyAKKyAgICAgICAgIGRlZiBjaGVja19uc2lzX3ZlcnNpb24odmVyc2lvbik6CitAQCAtODQsMTMgKzg0LDEzIEBAIGNsYXNzIFRlc3RNb3pDb25maWd1cmUoQmFzZUNvbmZpZ3VyZVRlc3QpOgorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhTeXN0ZW1FeGl0KSBhcyBlOgorICAgICAgICAgICAgIGNoZWNrX25zaXNfdmVyc2lvbigndjMuMGEyJykKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNoZWNrX25zaXNfdmVyc2lvbigndjMuMGIxJyksICczLjBiMScpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjaGVja19uc2lzX3ZlcnNpb24oJ3YzLjBiMicpLCAnMy4wYjInKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY2hlY2tfbnNpc192ZXJzaW9uKCd2My4wcmMxJyksICczLjByYzEnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY2hlY2tfbnNpc192ZXJzaW9uKCd2My4wJyksICczLjAnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY2hlY2tfbnNpc192ZXJzaW9uKCd2My4wLTInKSwgJzMuMCcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjaGVja19uc2lzX3ZlcnNpb24oJ3YzLjAuMScpLCAnMy4wJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNoZWNrX25zaXNfdmVyc2lvbigndjMuMScpLCAnMy4xJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tfbnNpc192ZXJzaW9uKCd2My4wYjEnKSwgJzMuMGIxJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tfbnNpc192ZXJzaW9uKCd2My4wYjInKSwgJzMuMGIyJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tfbnNpc192ZXJzaW9uKCd2My4wcmMxJyksICczLjByYzEnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGVja19uc2lzX3ZlcnNpb24oJ3YzLjAnKSwgJzMuMCcpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNoZWNrX25zaXNfdmVyc2lvbigndjMuMC0yJyksICczLjAnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjaGVja19uc2lzX3ZlcnNpb24oJ3YzLjAuMScpLCAnMy4wJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY2hlY2tfbnNpc192ZXJzaW9uKCd2My4xJyksICczLjEnKQorIAorIAorIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3Rfb3B0aW9ucy5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X29wdGlvbnMucHkKK2luZGV4IDlkZWZjY2IyYy4uMzMwY2UzYjFmIDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3Rfb3B0aW9ucy5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3Rfb3B0aW9ucy5weQorQEAgLTIsNyArMiw3IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbiwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCB1bml0dGVzdAorIAorQEAgLTI4LDEzOSArMjgsMTM5IEBAIGNsYXNzIE9wdGlvbihPcHRpb24pOgorIGNsYXNzIFRlc3RPcHRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorICAgICBkZWYgdGVzdF9vcHRpb24oc2VsZik6CisgICAgICAgICBvcHRpb24gPSBPcHRpb24oJy0tb3B0aW9uJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5wcmVmaXgsICcnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9uLm5hbWUsICdvcHRpb24nKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9uLmVudiwgTm9uZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLnByZWZpeCwgJycpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbi5uYW1lLCAnb3B0aW9uJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLmVudiwgTm9uZSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0RmFsc2Uob3B0aW9uLmRlZmF1bHQpCisgCisgICAgICAgICBvcHRpb24gPSBPcHRpb24oJy0tZW5hYmxlLW9wdGlvbicpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb24ucHJlZml4LCAnZW5hYmxlJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYW1lLCAnb3B0aW9uJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5lbnYsIE5vbmUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbi5wcmVmaXgsICdlbmFibGUnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24ubmFtZSwgJ29wdGlvbicpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbi5lbnYsIE5vbmUpCisgICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9wdGlvbi5kZWZhdWx0KQorIAorICAgICAgICAgb3B0aW9uID0gT3B0aW9uKCctLWRpc2FibGUtb3B0aW9uJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5wcmVmaXgsICdkaXNhYmxlJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYW1lLCAnb3B0aW9uJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5lbnYsIE5vbmUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbi5wcmVmaXgsICdkaXNhYmxlJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLm5hbWUsICdvcHRpb24nKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24uZW52LCBOb25lKQorICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9wdGlvbi5kZWZhdWx0KQorIAorICAgICAgICAgb3B0aW9uID0gT3B0aW9uKCctLXdpdGgtb3B0aW9uJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5wcmVmaXgsICd3aXRoJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYW1lLCAnb3B0aW9uJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5lbnYsIE5vbmUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbi5wcmVmaXgsICd3aXRoJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLm5hbWUsICdvcHRpb24nKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24uZW52LCBOb25lKQorICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcHRpb24uZGVmYXVsdCkKKyAKKyAgICAgICAgIG9wdGlvbiA9IE9wdGlvbignLS13aXRob3V0LW9wdGlvbicpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb24ucHJlZml4LCAnd2l0aG91dCcpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb24ubmFtZSwgJ29wdGlvbicpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb24uZW52LCBOb25lKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24ucHJlZml4LCAnd2l0aG91dCcpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbi5uYW1lLCAnb3B0aW9uJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLmVudiwgTm9uZSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcHRpb24uZGVmYXVsdCkKKyAKKyAgICAgICAgIG9wdGlvbiA9IE9wdGlvbignLS13aXRob3V0LW9wdGlvbi1mb28nLCBlbnY9J01PWl9PUFRJT04nKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9uLmVudiwgJ01PWl9PUFRJT04nKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24uZW52LCAnTU9aX09QVElPTicpCisgCisgICAgICAgICBvcHRpb24gPSBPcHRpb24oZW52PSdNT1pfT1BUSU9OJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5wcmVmaXgsICcnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3B0aW9uLm5hbWUsIE5vbmUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb24uZW52LCAnTU9aX09QVElPTicpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG9wdGlvbi5wcmVmaXgsICcnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24ubmFtZSwgTm9uZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLmVudiwgJ01PWl9PUFRJT04nKQorICAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcHRpb24uZGVmYXVsdCkKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIE9wdGlvbignLS1vcHRpb24nLCBuYXJncz0wLCBkZWZhdWx0PSgnYScsKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGdpdmVuIGBkZWZhdWx0YCBkb2Vzbid0IHNhdGlzZnkgYG5hcmdzYCIpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0tb3B0aW9uJywgbmFyZ3M9MSwgZGVmYXVsdD0oKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICBlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICdkZWZhdWx0IG11c3QgYmUgYSBib29sLCBhIHN0cmluZyBvciBhIHR1cGxlIG9mIHN0cmluZ3MnKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgT3B0aW9uKCctLW9wdGlvbicsIG5hcmdzPTEsIGRlZmF1bHQ9VHJ1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGdpdmVuIGBkZWZhdWx0YCBkb2Vzbid0IHNhdGlzZnkgYG5hcmdzYCIpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0tb3B0aW9uJywgbmFyZ3M9MSwgZGVmYXVsdD0oJ2EnLCAnYicpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZ2l2ZW4gYGRlZmF1bHRgIGRvZXNuJ3Qgc2F0aXNmeSBgbmFyZ3NgIikKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIE9wdGlvbignLS1vcHRpb24nLCBuYXJncz0yLCBkZWZhdWx0PSgpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKAorICAgICAgICAgICAgIGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgJ2RlZmF1bHQgbXVzdCBiZSBhIGJvb2wsIGEgc3RyaW5nIG9yIGEgdHVwbGUgb2Ygc3RyaW5ncycpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0tb3B0aW9uJywgbmFyZ3M9MiwgZGVmYXVsdD1UcnVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZ2l2ZW4gYGRlZmF1bHRgIGRvZXNuJ3Qgc2F0aXNmeSBgbmFyZ3NgIikKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIE9wdGlvbignLS1vcHRpb24nLCBuYXJncz0yLCBkZWZhdWx0PSgnYScsKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGdpdmVuIGBkZWZhdWx0YCBkb2Vzbid0IHNhdGlzZnkgYG5hcmdzYCIpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0tb3B0aW9uJywgbmFyZ3M9Jz8nLCBkZWZhdWx0PSgnYScsICdiJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBnaXZlbiBgZGVmYXVsdGAgZG9lc24ndCBzYXRpc2Z5IGBuYXJnc2AiKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgT3B0aW9uKCctLW9wdGlvbicsIG5hcmdzPScrJywgZGVmYXVsdD0oKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgKKyAgICAgICAgICAgICBlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICdkZWZhdWx0IG11c3QgYmUgYSBib29sLCBhIHN0cmluZyBvciBhIHR1cGxlIG9mIHN0cmluZ3MnKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgT3B0aW9uKCctLW9wdGlvbicsIG5hcmdzPScrJywgZGVmYXVsdD1UcnVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZ2l2ZW4gYGRlZmF1bHRgIGRvZXNuJ3Qgc2F0aXNmeSBgbmFyZ3NgIikKKyAKKyAgICAgICAgICMgLS1kaXNhYmxlIG9wdGlvbnMgd2l0aCBhIG5hcmdzIHZhbHVlIHRoYXQgcmVxdWlyZXMgYXQgbGVhc3Qgb25lCisgICAgICAgICAjIGFyZ3VtZW50IG5lZWQgdG8gYmUgZ2l2ZW4gYSBkZWZhdWx0LgorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgT3B0aW9uKCctLWRpc2FibGUtb3B0aW9uJywgbmFyZ3M9MSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGdpdmVuIGBkZWZhdWx0YCBkb2Vzbid0IHNhdGlzZnkgYG5hcmdzYCIpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0tZGlzYWJsZS1vcHRpb24nLCBuYXJncz0nKycpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBnaXZlbiBgZGVmYXVsdGAgZG9lc24ndCBzYXRpc2Z5IGBuYXJnc2AiKQorIAorICAgICAgICAgIyBUZXN0IG5hcmdzIGluZmVyZW5jZSBmcm9tIGRlZmF1bHQgdmFsdWUKKyAgICAgICAgIG9wdGlvbiA9IE9wdGlvbignLS13aXRoLWZvbycsIGRlZmF1bHQ9VHJ1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYXJncywgMCkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLm5hcmdzLCAwKQorIAorICAgICAgICAgb3B0aW9uID0gT3B0aW9uKCctLXdpdGgtZm9vJywgZGVmYXVsdD1GYWxzZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYXJncywgMCkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLm5hcmdzLCAwKQorIAorICAgICAgICAgb3B0aW9uID0gT3B0aW9uKCctLXdpdGgtZm9vJywgZGVmYXVsdD0nYScpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb24ubmFyZ3MsICc/JykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLm5hcmdzLCAnPycpCisgCisgICAgICAgICBvcHRpb24gPSBPcHRpb24oJy0td2l0aC1mb28nLCBkZWZhdWx0PSgnYScsKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYXJncywgJz8nKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24ubmFyZ3MsICc/JykKKyAKKyAgICAgICAgIG9wdGlvbiA9IE9wdGlvbignLS13aXRoLWZvbycsIGRlZmF1bHQ9KCdhJywgJ2InKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYXJncywgJyonKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24ubmFyZ3MsICcqJykKKyAKKyAgICAgICAgIG9wdGlvbiA9IE9wdGlvbihlbnY9J0ZPTycsIGRlZmF1bHQ9VHJ1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYXJncywgMCkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLm5hcmdzLCAwKQorIAorICAgICAgICAgb3B0aW9uID0gT3B0aW9uKGVudj0nRk9PJywgZGVmYXVsdD1GYWxzZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYXJncywgMCkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLm5hcmdzLCAwKQorIAorICAgICAgICAgb3B0aW9uID0gT3B0aW9uKGVudj0nRk9PJywgZGVmYXVsdD0nYScpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHRpb24ubmFyZ3MsICc/JykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0aW9uLm5hcmdzLCAnPycpCisgCisgICAgICAgICBvcHRpb24gPSBPcHRpb24oZW52PSdGT08nLCBkZWZhdWx0PSgnYScsKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYXJncywgJz8nKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24ubmFyZ3MsICc/JykKKyAKKyAgICAgICAgIG9wdGlvbiA9IE9wdGlvbihlbnY9J0ZPTycsIGRlZmF1bHQ9KCdhJywgJ2InKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKG9wdGlvbi5uYXJncywgJyonKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChvcHRpb24ubmFyZ3MsICcqJykKKyAKKyAgICAgZGVmIHRlc3Rfb3B0aW9uX29wdGlvbihzZWxmKToKKyAgICAgICAgIGZvciBvcHRpb24gaW4gKAorQEAgLTE3MCw3MCArMTcwLDcwIEBAIGNsYXNzIFRlc3RPcHRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICctLXdpdGgtb3B0aW9uJywKKyAgICAgICAgICAgICAnLS13aXRob3V0LW9wdGlvbicsCisgICAgICAgICApOgorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKE9wdGlvbihvcHRpb24pLm9wdGlvbiwgb3B0aW9uKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKE9wdGlvbihvcHRpb24sIGVudj0nRk9PJykub3B0aW9uLCBvcHRpb24pCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChPcHRpb24ob3B0aW9uKS5vcHRpb24sIG9wdGlvbikKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE9wdGlvbihvcHRpb24sIGVudj0nRk9PJykub3B0aW9uLCBvcHRpb24pCisgCisgICAgICAgICAgICAgb3B0ID0gT3B0aW9uKG9wdGlvbiwgZGVmYXVsdD1GYWxzZSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHQub3B0aW9uLAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0Lm9wdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24ucmVwbGFjZSgnLWRpc2FibGUtJywgJy1lbmFibGUtJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgnLXdpdGhvdXQtJywgJy13aXRoLScpKQorIAorICAgICAgICAgICAgIG9wdCA9IE9wdGlvbihvcHRpb24sIGRlZmF1bHQ9VHJ1ZSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhvcHQub3B0aW9uLAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3B0Lm9wdGlvbiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcHRpb24ucmVwbGFjZSgnLWVuYWJsZS0nLCAnLWRpc2FibGUtJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAucmVwbGFjZSgnLXdpdGgtJywgJy13aXRob3V0LScpKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoT3B0aW9uKGVudj0nRk9PJykub3B0aW9uLCAnRk9PJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoT3B0aW9uKGVudj0nRk9PJykub3B0aW9uLCAnRk9PJykKKyAKKyAgICAgZGVmIHRlc3Rfb3B0aW9uX2Nob2ljZXMoc2VsZik6CisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0tb3B0aW9uJywgbmFyZ3M9MywgY2hvaWNlcz0oJ2EnLCAnYicpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICdOb3QgZW5vdWdoIGBjaG9pY2VzYCBmb3IgYG5hcmdzYCcpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0td2l0aG91dC1vcHRpb24nLCBuYXJncz0xLCBjaG9pY2VzPSgnYScsICdiJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0EgYGRlZmF1bHRgIG11c3QgYmUgZ2l2ZW4gYWxvbmcgd2l0aCBgY2hvaWNlc2AnKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgT3B0aW9uKCctLXdpdGhvdXQtb3B0aW9uJywgbmFyZ3M9JysnLCBjaG9pY2VzPSgnYScsICdiJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0EgYGRlZmF1bHRgIG11c3QgYmUgZ2l2ZW4gYWxvbmcgd2l0aCBgY2hvaWNlc2AnKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgT3B0aW9uKCctLXdpdGhvdXQtb3B0aW9uJywgZGVmYXVsdD0nYycsIGNob2ljZXM9KCdhJywgJ2InKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGBkZWZhdWx0YCB2YWx1ZSBtdXN0IGJlIG9uZSBvZiAnYScsICdiJyIpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0td2l0aG91dC1vcHRpb24nLCBkZWZhdWx0PSgnYScsICdjJywpLCBjaG9pY2VzPSgnYScsICdiJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIlRoZSBgZGVmYXVsdGAgdmFsdWUgbXVzdCBiZSBvbmUgb2YgJ2EnLCAnYiciKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgT3B0aW9uKCctLXdpdGhvdXQtb3B0aW9uJywgZGVmYXVsdD0oJ2MnLCksIGNob2ljZXM9KCdhJywgJ2InKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGBkZWZhdWx0YCB2YWx1ZSBtdXN0IGJlIG9uZSBvZiAnYScsICdiJyIpCisgCisgICAgICAgICBvcHRpb24gPSBPcHRpb24oJy0td2l0aC1vcHRpb24nLCBuYXJncz0nKycsIGNob2ljZXM9KCdhJywgJ2InKSkKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIG9wdGlvbi5nZXRfdmFsdWUoJy0td2l0aC1vcHRpb249YycpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLCAiJ2MnIGlzIG5vdCBvbmUgb2YgJ2EnLCAnYiciKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLCAiJ2MnIGlzIG5vdCBvbmUgb2YgJ2EnLCAnYiciKQorIAorICAgICAgICAgdmFsdWUgPSBvcHRpb24uZ2V0X3ZhbHVlKCctLXdpdGgtb3B0aW9uPWIsYScpCisgICAgICAgICBzZWxmLmFzc2VydFRydWUodmFsdWUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYicsICdhJykpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2InLCAnYScpKSwgdmFsdWUpCisgCisgICAgICAgICBvcHRpb24gPSBPcHRpb24oJy0td2l0aG91dC1vcHRpb24nLCBuYXJncz0nKicsIGRlZmF1bHQ9J2EnLAorICAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9KCdhJywgJ2InKSkKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIG9wdGlvbi5nZXRfdmFsdWUoJy0td2l0aC1vcHRpb249YycpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLCAiJ2MnIGlzIG5vdCBvbmUgb2YgJ2EnLCAnYiciKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLCAiJ2MnIGlzIG5vdCBvbmUgb2YgJ2EnLCAnYiciKQorIAorICAgICAgICAgdmFsdWUgPSBvcHRpb24uZ2V0X3ZhbHVlKCctLXdpdGgtb3B0aW9uPWIsYScpCisgICAgICAgICBzZWxmLmFzc2VydFRydWUodmFsdWUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYicsICdhJykpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2InLCAnYScpKSwgdmFsdWUpCisgCisgICAgICAgICAjIFRlc3QgbmFyZ3MgaW5mZXJlbmNlIGZyb20gY2hvaWNlcworICAgICAgICAgb3B0aW9uID0gT3B0aW9uKCctLXdpdGgtb3B0aW9uJywgY2hvaWNlcz0oJ2EnLCAnYicpKQorQEAgLTI0NCwzNyArMjQ0LDM3IEBAIGNsYXNzIFRlc3RPcHRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgICAgICAgICAgIGNob2ljZXM9KCdhJywgJ2InLCAnYycsICdkJykpCisgCisgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJy0td2l0aC1vcHRpb249K2QnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2InLCAnYycsICdkJykpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2InLCAnYycsICdkJykpLCB2YWx1ZSkKKyAKKyAgICAgICAgIHZhbHVlID0gb3B0aW9uLmdldF92YWx1ZSgnLS13aXRoLW9wdGlvbj0tYicpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYycsKSksIHZhbHVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYycsKSksIHZhbHVlKQorIAorICAgICAgICAgdmFsdWUgPSBvcHRpb24uZ2V0X3ZhbHVlKCctLXdpdGgtb3B0aW9uPS1iLCtkJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdjJywnZCcpKSwgdmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdjJywnZCcpKSwgdmFsdWUpCisgCisgICAgICAgICAjIEFkZGluZyBzb21ldGhpbmcgdGhhdCBpcyBpbiB0aGUgZGVmYXVsdCBpcyBmaW5lCisgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJy0td2l0aC1vcHRpb249K2InKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2InLCAnYycpKSwgdmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdiJywgJ2MnKSksIHZhbHVlKQorIAorICAgICAgICAgIyBSZW1vdmluZyBzb21ldGhpbmcgdGhhdCBpcyBub3QgaW4gdGhlIGRlZmF1bHQgaXMgZmluZSwgYXMgbG9uZyBhcyBpdAorICAgICAgICAgIyBpcyBvbmUgb2YgdGhlIGNob2ljZXMKKyAgICAgICAgIHZhbHVlID0gb3B0aW9uLmdldF92YWx1ZSgnLS13aXRoLW9wdGlvbj0tYScpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYicsICdjJykpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2InLCAnYycpKSwgdmFsdWUpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBvcHRpb24uZ2V0X3ZhbHVlKCctLXdpdGgtb3B0aW9uPS1lJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiJ2UnIGlzIG5vdCBvbmUgb2YgJ2EnLCAnYicsICdjJywgJ2QnIikKKyAKKyAgICAgICAgICMgT3RoZXIgIm5vdCBhIGNob2ljZSIgZXJyb3JzLgorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgb3B0aW9uLmdldF92YWx1ZSgnLS13aXRoLW9wdGlvbj0rZScpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIidlJyBpcyBub3Qgb25lIG9mICdhJywgJ2InLCAnYycsICdkJyIpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBvcHRpb24uZ2V0X3ZhbHVlKCctLXdpdGgtb3B0aW9uPWUnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICInZScgaXMgbm90IG9uZSBvZiAnYScsICdiJywgJ2MnLCAnZCciKQorIAorICAgICBkZWYgdGVzdF9vcHRpb25fdmFsdWVfY29tcGFyZShzZWxmKToKK0BAIC0yOTQsNyArMjk0LDcgQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgCisgICAgICAgICAjIEZvciB1c2FiaWxpdHkgcmVhc29ucywgd2UgcmFpc2UgVHlwZUVycm9yIHdoZW4gYXR0ZW1wdGluZyB0byBjb21wYXJlCisgICAgICAgICAjIGFnYWluc3QgYSBub24tdHVwbGUuCistICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKFR5cGVFcnJvciwgJ2Nhbm5vdCBjb21wYXJlIGEnKToKKysgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChUeXBlRXJyb3IsICdjYW5ub3QgY29tcGFyZSBhJyk6CisgICAgICAgICAgICAgdmFsID09ICdmb28nCisgCisgICAgICAgICAjIEJ1dCB3ZSBhbGxvdyBlbXB0eSBvcHRpb24gdmFsdWVzIHRvIGNvbXBhcmUgb3RoZXJ3aXNlIHdlIGNhbid0CitAQCAtMzEzLDM2ICszMTMsMzYgQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgCisgICAgIGRlZiB0ZXN0X29wdGlvbl92YWx1ZV9mb3JtYXQoc2VsZik6CisgICAgICAgICB2YWwgPSBQb3NpdGl2ZU9wdGlvblZhbHVlKCkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLXdpdGgtdmFsdWUnLCB2YWwuZm9ybWF0KCctLXdpdGgtdmFsdWUnKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLXdpdGgtdmFsdWUnLCB2YWwuZm9ybWF0KCctLXdpdGhvdXQtdmFsdWUnKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLWVuYWJsZS12YWx1ZScsIHZhbC5mb3JtYXQoJy0tZW5hYmxlLXZhbHVlJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS1lbmFibGUtdmFsdWUnLCB2YWwuZm9ybWF0KCctLWRpc2FibGUtdmFsdWUnKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLXZhbHVlJywgdmFsLmZvcm1hdCgnLS12YWx1ZScpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ1ZBTFVFPTEnLCB2YWwuZm9ybWF0KCdWQUxVRScpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnLS13aXRoLXZhbHVlJywgdmFsLmZvcm1hdCgnLS13aXRoLXZhbHVlJykpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLXdpdGgtdmFsdWUnLCB2YWwuZm9ybWF0KCctLXdpdGhvdXQtdmFsdWUnKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0tZW5hYmxlLXZhbHVlJywgdmFsLmZvcm1hdCgnLS1lbmFibGUtdmFsdWUnKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0tZW5hYmxlLXZhbHVlJywgdmFsLmZvcm1hdCgnLS1kaXNhYmxlLXZhbHVlJykpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLXZhbHVlJywgdmFsLmZvcm1hdCgnLS12YWx1ZScpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVkFMVUU9MScsIHZhbC5mb3JtYXQoJ1ZBTFVFJykpCisgCisgICAgICAgICB2YWwgPSBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLXdpdGgtdmFsdWU9YScsIHZhbC5mb3JtYXQoJy0td2l0aC12YWx1ZScpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0td2l0aC12YWx1ZT1hJywgdmFsLmZvcm1hdCgnLS13aXRob3V0LXZhbHVlJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS1lbmFibGUtdmFsdWU9YScsIHZhbC5mb3JtYXQoJy0tZW5hYmxlLXZhbHVlJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS1lbmFibGUtdmFsdWU9YScsIHZhbC5mb3JtYXQoJy0tZGlzYWJsZS12YWx1ZScpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0tdmFsdWU9YScsIHZhbC5mb3JtYXQoJy0tdmFsdWUnKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdWQUxVRT1hJywgdmFsLmZvcm1hdCgnVkFMVUUnKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0td2l0aC12YWx1ZT1hJywgdmFsLmZvcm1hdCgnLS13aXRoLXZhbHVlJykpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLXdpdGgtdmFsdWU9YScsIHZhbC5mb3JtYXQoJy0td2l0aG91dC12YWx1ZScpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnLS1lbmFibGUtdmFsdWU9YScsIHZhbC5mb3JtYXQoJy0tZW5hYmxlLXZhbHVlJykpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLWVuYWJsZS12YWx1ZT1hJywgdmFsLmZvcm1hdCgnLS1kaXNhYmxlLXZhbHVlJykpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLXZhbHVlPWEnLCB2YWwuZm9ybWF0KCctLXZhbHVlJykpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdWQUxVRT1hJywgdmFsLmZvcm1hdCgnVkFMVUUnKSkKKyAKKyAgICAgICAgIHZhbCA9IFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdhJywgJ2InKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLXdpdGgtdmFsdWU9YSxiJywgdmFsLmZvcm1hdCgnLS13aXRoLXZhbHVlJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS13aXRoLXZhbHVlPWEsYicsIHZhbC5mb3JtYXQoJy0td2l0aG91dC12YWx1ZScpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0tZW5hYmxlLXZhbHVlPWEsYicsIHZhbC5mb3JtYXQoJy0tZW5hYmxlLXZhbHVlJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS1lbmFibGUtdmFsdWU9YSxiJywgdmFsLmZvcm1hdCgnLS1kaXNhYmxlLXZhbHVlJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS12YWx1ZT1hLGInLCB2YWwuZm9ybWF0KCctLXZhbHVlJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnVkFMVUU9YSxiJywgdmFsLmZvcm1hdCgnVkFMVUUnKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0td2l0aC12YWx1ZT1hLGInLCB2YWwuZm9ybWF0KCctLXdpdGgtdmFsdWUnKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0td2l0aC12YWx1ZT1hLGInLCB2YWwuZm9ybWF0KCctLXdpdGhvdXQtdmFsdWUnKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0tZW5hYmxlLXZhbHVlPWEsYicsIHZhbC5mb3JtYXQoJy0tZW5hYmxlLXZhbHVlJykpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLWVuYWJsZS12YWx1ZT1hLGInLCB2YWwuZm9ybWF0KCctLWRpc2FibGUtdmFsdWUnKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0tdmFsdWU9YSxiJywgdmFsLmZvcm1hdCgnLS12YWx1ZScpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVkFMVUU9YSxiJywgdmFsLmZvcm1hdCgnVkFMVUUnKSkKKyAKKyAgICAgICAgIHZhbCA9IE5lZ2F0aXZlT3B0aW9uVmFsdWUoKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0td2l0aG91dC12YWx1ZScsIHZhbC5mb3JtYXQoJy0td2l0aC12YWx1ZScpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0td2l0aG91dC12YWx1ZScsIHZhbC5mb3JtYXQoJy0td2l0aG91dC12YWx1ZScpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0tZGlzYWJsZS12YWx1ZScsIHZhbC5mb3JtYXQoJy0tZW5hYmxlLXZhbHVlJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS1kaXNhYmxlLXZhbHVlJywgdmFsLmZvcm1hdCgnLS1kaXNhYmxlLXZhbHVlJykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnJywgdmFsLmZvcm1hdCgnLS12YWx1ZScpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ1ZBTFVFPScsIHZhbC5mb3JtYXQoJ1ZBTFVFJykpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLXdpdGhvdXQtdmFsdWUnLCB2YWwuZm9ybWF0KCctLXdpdGgtdmFsdWUnKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0td2l0aG91dC12YWx1ZScsIHZhbC5mb3JtYXQoJy0td2l0aG91dC12YWx1ZScpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnLS1kaXNhYmxlLXZhbHVlJywgdmFsLmZvcm1hdCgnLS1lbmFibGUtdmFsdWUnKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0tZGlzYWJsZS12YWx1ZScsIHZhbC5mb3JtYXQoJy0tZGlzYWJsZS12YWx1ZScpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnJywgdmFsLmZvcm1hdCgnLS12YWx1ZScpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnVkFMVUU9JywgdmFsLmZvcm1hdCgnVkFMVUUnKSkKKyAKKyAgICAgZGVmIHRlc3Rfb3B0aW9uX3ZhbHVlKHNlbGYsIG5hbWU9J29wdGlvbicsIG5hcmdzPTAsIGRlZmF1bHQ9Tm9uZSk6CisgICAgICAgICBkaXNhYmxlZCA9IG5hbWUuc3RhcnRzd2l0aCgoJ2Rpc2FibGUtJywgJ3dpdGhvdXQtJykpCitAQCAtMzU5LDI4ICszNTksMjggQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgCisgICAgICAgICBpZiBuYXJncyBpbiAoMCwgJz8nLCAnKicpIG9yIGRpc2FibGVkOgorICAgICAgICAgICAgIHZhbHVlID0gb3B0aW9uLmdldF92YWx1ZSgnLS0lcycgJSBuYW1lLCAnb3B0aW9uJykKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZSwgcG9zT3B0aW9uVmFsdWUoKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZS5vcmlnaW4sICdvcHRpb24nKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIHBvc09wdGlvblZhbHVlKCkpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZS5vcmlnaW4sICdvcHRpb24nKQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgb3B0aW9uLmdldF92YWx1ZSgnLS0lcycgJSBuYW1lKQorICAgICAgICAgICAgIGlmIG5hcmdzID09IDE6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJXMgdGFrZXMgMSB2YWx1ZScgJSBuYW1lKQorICAgICAgICAgICAgIGVsaWYgbmFyZ3MgPT0gJysnOgorLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSVzIHRha2VzIDEgb3IgbW9yZSB2YWx1ZXMnICUgbmFtZSkKKyAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSVzIHRha2VzIDIgdmFsdWVzJyAlIG5hbWUpCisgCisgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJycpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZSwgZGVmYXVsdFZhbHVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUub3JpZ2luLCAnZGVmYXVsdCcpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBkZWZhdWx0VmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLm9yaWdpbiwgJ2RlZmF1bHQnKQorIAorICAgICAgICAgdmFsdWUgPSBvcHRpb24uZ2V0X3ZhbHVlKE5vbmUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZSwgZGVmYXVsdFZhbHVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUub3JpZ2luLCAnZGVmYXVsdCcpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBkZWZhdWx0VmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLm9yaWdpbiwgJ2RlZmF1bHQnKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcik6CisgICAgICAgICAgICAgdmFsdWUgPSBvcHRpb24uZ2V0X3ZhbHVlKCdNT1pfT1BUSU9OPScsICdlbnZpcm9ubWVudCcpCitAQCAtMzkzLDQ3ICszOTMsNDcgQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgCisgICAgICAgICBpZiBuYXJncyBpbiAoMSwgJz8nLCAnKicsICcrJykgYW5kIG5vdCBkaXNhYmxlZDoKKyAgICAgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJy0tJXM9JyAlIG5hbWUsICdvcHRpb24nKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnJywpKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZS5vcmlnaW4sICdvcHRpb24nKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCcnLCkpKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnb3B0aW9uJykKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIG9wdGlvbi5nZXRfdmFsdWUoJy0tJXM9JyAlIG5hbWUpCisgICAgICAgICAgICAgaWYgZGlzYWJsZWQ6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBwYXNzIGEgdmFsdWUgdG8gLS0lcycgJSBuYW1lKQorICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJXMgdGFrZXMgJWQgdmFsdWVzJyAlIChuYW1lLCBuYXJncykpCisgCisgICAgICAgICBpZiBuYXJncyBpbiAoMSwgJz8nLCAnKicsICcrJykgYW5kIG5vdCBkaXNhYmxlZDoKKyAgICAgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJy0tJXM9Zm9vJyAlIG5hbWUsICdvcHRpb24nKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnZm9vJywpKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZS5vcmlnaW4sICdvcHRpb24nKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdmb28nLCkpKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnb3B0aW9uJykKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIG9wdGlvbi5nZXRfdmFsdWUoJy0tJXM9Zm9vJyAlIG5hbWUpCisgICAgICAgICAgICAgaWYgZGlzYWJsZWQ6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0Nhbm5vdCBwYXNzIGEgdmFsdWUgdG8gLS0lcycgJSBuYW1lKQorICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJXMgdGFrZXMgJWQgdmFsdWVzJyAlIChuYW1lLCBuYXJncykpCisgCisgICAgICAgICBpZiBuYXJncyBpbiAoMiwgJyonLCAnKycpIGFuZCBub3QgZGlzYWJsZWQ6CisgICAgICAgICAgICAgdmFsdWUgPSBvcHRpb24uZ2V0X3ZhbHVlKCctLSVzPWZvbyxiYXInICUgbmFtZSwgJ29wdGlvbicpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdmb28nLCAnYmFyJykpKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLm9yaWdpbiwgJ29wdGlvbicpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2ZvbycsICdiYXInKSkpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZS5vcmlnaW4sICdvcHRpb24nKQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgb3B0aW9uLmdldF92YWx1ZSgnLS0lcz1mb28sYmFyJyAlIG5hbWUsICdvcHRpb24nKQorICAgICAgICAgICAgIGlmIGRpc2FibGVkOgorLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDYW5ub3QgcGFzcyBhIHZhbHVlIHRvIC0tJXMnICUgbmFtZSkKKyAgICAgICAgICAgICBlbGlmIG5hcmdzID09ICc/JzoKKy0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0lcyB0YWtlcyAwIG9yIDEgdmFsdWVzJyAlIG5hbWUpCisgICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS0lcyB0YWtlcyAlZCB2YWx1ZSVzJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChuYW1lLCBuYXJncywgJ3MnIGlmIG5hcmdzICE9IDEgZWxzZSAnJykpCisgCitAQCAtNDQxLDU5ICs0NDEsNTkgQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0KQorICAgICAgICAgaWYgbmFyZ3MgaW4gKDAsICc/JywgJyonKSBvciBkaXNhYmxlZDoKKyAgICAgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJy0tJXMnICUgbmFtZSwgJ29wdGlvbicpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIHBvc09wdGlvblZhbHVlKCkpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUub3JpZ2luLCAnb3B0aW9uJykKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBwb3NPcHRpb25WYWx1ZSgpKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnb3B0aW9uJykKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIG9wdGlvbi5nZXRfdmFsdWUoJy0tJXMnICUgbmFtZSkKKyAgICAgICAgICAgICBpZiBkaXNhYmxlZDoKKy0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQ2Fubm90IHBhc3MgYSB2YWx1ZSB0byAtLSVzJyAlIG5hbWUpCisgICAgICAgICAgICAgZWxpZiBuYXJncyA9PSAnKyc6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJXMgdGFrZXMgMSBvciBtb3JlIHZhbHVlcycgJSBuYW1lKQorICAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJXMgdGFrZXMgJWQgdmFsdWUlcycKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAobmFtZSwgbmFyZ3MsICdzJyBpZiBuYXJncyAhPSAxIGVsc2UgJycpKQorIAorICAgICAgICAgdmFsdWUgPSBvcHRpb24uZ2V0X3ZhbHVlKCcnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIGRlZmF1bHRWYWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLm9yaWdpbiwgJ2RlZmF1bHQnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgZGVmYXVsdFZhbHVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZS5vcmlnaW4sICdkZWZhdWx0JykKKyAKKyAgICAgICAgIHZhbHVlID0gb3B0aW9uLmdldF92YWx1ZShOb25lKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIGRlZmF1bHRWYWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLm9yaWdpbiwgJ2RlZmF1bHQnKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgZGVmYXVsdFZhbHVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZS5vcmlnaW4sICdkZWZhdWx0JykKKyAKKyAgICAgICAgIHZhbHVlID0gb3B0aW9uLmdldF92YWx1ZSgnTU9aX09QVElPTj0nLCAnZW52aXJvbm1lbnQnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLm9yaWdpbiwgJ2Vudmlyb25tZW50JykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnZW52aXJvbm1lbnQnKQorIAorICAgICAgICAgaWYgbmFyZ3MgaW4gKDAsICc/JywgJyonKToKKyAgICAgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJ01PWl9PUFRJT049MScsICdlbnZpcm9ubWVudCcpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZS5vcmlnaW4sICdlbnZpcm9ubWVudCcpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgUG9zaXRpdmVPcHRpb25WYWx1ZSgpKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnZW52aXJvbm1lbnQnKQorICAgICAgICAgZWxpZiBuYXJncyBpbiAoMSwgJysnKToKKyAgICAgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJ01PWl9PUFRJT049MScsICdlbnZpcm9ubWVudCcpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCcxJywpKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZS5vcmlnaW4sICdlbnZpcm9ubWVudCcpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgUG9zaXRpdmVPcHRpb25WYWx1ZSgoJzEnLCkpKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnZW52aXJvbm1lbnQnKQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgb3B0aW9uLmdldF92YWx1ZSgnTU9aX09QVElPTj0xJywgJ2Vudmlyb25tZW50JykKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLCAnTU9aX09QVElPTiB0YWtlcyAyIHZhbHVlcycpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLCAnTU9aX09QVElPTiB0YWtlcyAyIHZhbHVlcycpCisgCisgICAgICAgICBpZiBuYXJncyBpbiAoMSwgJz8nLCAnKicsICcrJykgYW5kIG5vdCBkaXNhYmxlZDoKKyAgICAgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJy0tJXM9JyAlIG5hbWUsICdvcHRpb24nKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnJywpKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZS5vcmlnaW4sICdvcHRpb24nKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCcnLCkpKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnb3B0aW9uJykKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIG9wdGlvbi5nZXRfdmFsdWUoJy0tJXM9JyAlIG5hbWUsICdvcHRpb24nKQorICAgICAgICAgICAgIGlmIGRpc2FibGVkOgorLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdDYW5ub3QgcGFzcyBhIHZhbHVlIHRvIC0tJXMnICUgbmFtZSkKKyAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSVzIHRha2VzICVkIHZhbHVlcycgJSAobmFtZSwgbmFyZ3MpKQorIAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhBc3NlcnRpb25FcnJvcik6CitAQCAtNTAxLDI2ICs1MDEsMjYgQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgCisgICAgICAgICBpZiBuYXJncyBpbiAoMSwgJz8nLCAnKicsICcrJyk6CisgICAgICAgICAgICAgdmFsdWUgPSBvcHRpb24uZ2V0X3ZhbHVlKCdNT1pfT1BUSU9OPWZvbycsICdlbnZpcm9ubWVudCcpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdmb28nLCkpKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLm9yaWdpbiwgJ2Vudmlyb25tZW50JykKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnZm9vJywpKSkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLm9yaWdpbiwgJ2Vudmlyb25tZW50JykKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIG9wdGlvbi5nZXRfdmFsdWUoJ01PWl9PUFRJT049Zm9vJywgJ2Vudmlyb25tZW50JykKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTU9aX09QVElPTiB0YWtlcyAlZCB2YWx1ZXMnICUgbmFyZ3MpCisgCisgICAgICAgICBpZiBuYXJncyBpbiAoMiwgJyonLCAnKycpOgorICAgICAgICAgICAgIHZhbHVlID0gb3B0aW9uLmdldF92YWx1ZSgnTU9aX09QVElPTj1mb28sYmFyJywgJ2Vudmlyb25tZW50JykKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZSwgUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2ZvbycsICdiYXInKSkpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUub3JpZ2luLCAnZW52aXJvbm1lbnQnKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdmb28nLCAnYmFyJykpKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnZW52aXJvbm1lbnQnKQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICAgICAgb3B0aW9uLmdldF92YWx1ZSgnTU9aX09QVElPTj1mb28sYmFyJywgJ2Vudmlyb25tZW50JykKKyAgICAgICAgICAgICBpZiBuYXJncyA9PSAnPyc6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01PWl9PUFRJT04gdGFrZXMgMCBvciAxIHZhbHVlcycpCisgICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTU9aX09QVElPTiB0YWtlcyAlZCB2YWx1ZSVzJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChuYXJncywgJ3MnIGlmIG5hcmdzICE9IDEgZWxzZSAnJykpCisgCitAQCAtNTMyLDI2ICs1MzIsMjYgQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgZW52X29wdGlvbi5nZXRfdmFsdWUoJy0tJXMnICUgbmFtZSkKKyAKKyAgICAgICAgIHZhbHVlID0gZW52X29wdGlvbi5nZXRfdmFsdWUoJycpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZSwgZGVmYXVsdFZhbHVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUub3JpZ2luLCAnZGVmYXVsdCcpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBkZWZhdWx0VmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLm9yaWdpbiwgJ2RlZmF1bHQnKQorIAorICAgICAgICAgdmFsdWUgPSBlbnZfb3B0aW9uLmdldF92YWx1ZSgnTU9aX09QVElPTj0nLCAnZW52aXJvbm1lbnQnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIG5lZ09wdGlvblZhbHVlKCkpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZS5vcmlnaW4sICdlbnZpcm9ubWVudCcpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBuZWdPcHRpb25WYWx1ZSgpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZS5vcmlnaW4sICdlbnZpcm9ubWVudCcpCisgCisgICAgICAgICBpZiBuYXJncyBpbiAoMCwgJz8nLCAnKicpOgorICAgICAgICAgICAgIHZhbHVlID0gZW52X29wdGlvbi5nZXRfdmFsdWUoJ01PWl9PUFRJT049MScsICdlbnZpcm9ubWVudCcpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIHBvc09wdGlvblZhbHVlKCkpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgcG9zT3B0aW9uVmFsdWUoKSkKKyAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUodmFsdWUpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUub3JpZ2luLCAnZW52aXJvbm1lbnQnKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnZW52aXJvbm1lbnQnKQorICAgICAgICAgZWxpZiBuYXJncyBpbiAoMSwgJysnKToKKyAgICAgICAgICAgICB2YWx1ZSA9IGVudl9vcHRpb24uZ2V0X3ZhbHVlKCdNT1pfT1BUSU9OPTEnLCAnZW52aXJvbm1lbnQnKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnMScsKSkpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUub3JpZ2luLCAnZW52aXJvbm1lbnQnKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCcxJywpKSkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLm9yaWdpbiwgJ2Vudmlyb25tZW50JykKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIGVudl9vcHRpb24uZ2V0X3ZhbHVlKCdNT1pfT1BUSU9OPTEnLCAnZW52aXJvbm1lbnQnKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsICdNT1pfT1BUSU9OIHRha2VzIDIgdmFsdWVzJykKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsICdNT1pfT1BUSU9OIHRha2VzIDIgdmFsdWVzJykKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgZW52X29wdGlvbi5nZXRfdmFsdWUoJy0tJXMnICUgbmFtZSkKK0BAIC01NjEsMjYgKzU2MSwyNiBAQCBjbGFzcyBUZXN0T3B0aW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAKKyAgICAgICAgIGlmIG5hcmdzIGluICgxLCAnPycsICcqJywgJysnKToKKyAgICAgICAgICAgICB2YWx1ZSA9IGVudl9vcHRpb24uZ2V0X3ZhbHVlKCdNT1pfT1BUSU9OPWZvbycsICdlbnZpcm9ubWVudCcpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdmb28nLCkpKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLm9yaWdpbiwgJ2Vudmlyb25tZW50JykKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnZm9vJywpKSkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLm9yaWdpbiwgJ2Vudmlyb25tZW50JykKKyAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgICAgIGVudl9vcHRpb24uZ2V0X3ZhbHVlKCdNT1pfT1BUSU9OPWZvbycsICdlbnZpcm9ubWVudCcpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01PWl9PUFRJT04gdGFrZXMgJWQgdmFsdWVzJyAlIG5hcmdzKQorIAorICAgICAgICAgaWYgbmFyZ3MgaW4gKDIsICcqJywgJysnKToKKyAgICAgICAgICAgICB2YWx1ZSA9IGVudl9vcHRpb24uZ2V0X3ZhbHVlKCdNT1pfT1BUSU9OPWZvbyxiYXInLCAnZW52aXJvbm1lbnQnKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHZhbHVlLCBQb3NpdGl2ZU9wdGlvblZhbHVlKCgnZm9vJywgJ2JhcicpKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZS5vcmlnaW4sICdlbnZpcm9ubWVudCcpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZSwgUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2ZvbycsICdiYXInKSkpCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCh2YWx1ZS5vcmlnaW4sICdlbnZpcm9ubWVudCcpCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICBlbnZfb3B0aW9uLmdldF92YWx1ZSgnTU9aX09QVElPTj1mb28sYmFyJywgJ2Vudmlyb25tZW50JykKKyAgICAgICAgICAgICBpZiBuYXJncyA9PSAnPyc6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ01PWl9PUFRJT04gdGFrZXMgMCBvciAxIHZhbHVlcycpCisgICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnTU9aX09QVElPTiB0YWtlcyAlZCB2YWx1ZSVzJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChuYXJncywgJ3MnIGlmIG5hcmdzICE9IDEgZWxzZSAnJykpCisgCitAQCAtNTkyLDI4ICs1OTIsMjggQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9ZGVmYXVsdCkKKyAKKyAgICAgICAgIHZhbHVlID0gb3B0aW9uLmdldF92YWx1ZSgnLS0lcy1vcHRpb24nICUgZGlzYWJsZSwgJ29wdGlvbicpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZSwgTmVnYXRpdmVPcHRpb25WYWx1ZSgpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUub3JpZ2luLCAnb3B0aW9uJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUub3JpZ2luLCAnb3B0aW9uJykKKyAKKyAgICAgICAgIG9wdGlvbiA9IHNlbGYudGVzdF9vcHRpb25fdmFsdWUoJyVzLW9wdGlvbicgJSBkaXNhYmxlLCBuYXJncz1uYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1kZWZhdWx0KQorIAorICAgICAgICAgaWYgbmFyZ3MgaW4gKDAsICc/JywgJyonKToKKyAgICAgICAgICAgICB2YWx1ZSA9IG9wdGlvbi5nZXRfdmFsdWUoJy0tJXMtb3B0aW9uJyAlIGVuYWJsZSwgJ29wdGlvbicpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHModmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyh2YWx1ZS5vcmlnaW4sICdvcHRpb24nKQorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwodmFsdWUsIFBvc2l0aXZlT3B0aW9uVmFsdWUoKSkKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHZhbHVlLm9yaWdpbiwgJ29wdGlvbicpCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgICAgICBvcHRpb24uZ2V0X3ZhbHVlKCctLSVzLW9wdGlvbicgJSBlbmFibGUsICdvcHRpb24nKQorICAgICAgICAgICAgIGlmIG5hcmdzID09IDE6CistICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tJXMtb3B0aW9uIHRha2VzIDEgdmFsdWUnICUgZW5hYmxlKQorICAgICAgICAgICAgIGVsaWYgbmFyZ3MgPT0gJysnOgorLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSVzLW9wdGlvbiB0YWtlcyAxIG9yIG1vcmUgdmFsdWVzJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGVuYWJsZSkKKyAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLSVzLW9wdGlvbiB0YWtlcyAyIHZhbHVlcycgJSBlbmFibGUpCisgCisgICAgIGRlZiB0ZXN0X29wdGlvbl92YWx1ZV93aXRoKHNlbGYpOgorQEAgLTYyMiwxMiArNjIyLDEyIEBAIGNsYXNzIFRlc3RPcHRpb24odW5pdHRlc3QuVGVzdENhc2UpOgorICAgICBkZWYgdGVzdF9vcHRpb25fdmFsdWVfaW52YWxpZF9uYXJncyhzZWxmKToKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoSW52YWxpZE9wdGlvbkVycm9yKSBhcyBlOgorICAgICAgICAgICAgIE9wdGlvbignLS1vcHRpb24nLCBuYXJncz0nZm9vJykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAibmFyZ3MgbXVzdCBiZSBhIHBvc2l0aXZlIGludGVnZXIsICc/JywgJyonIG9yICcrJyIpCisgCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0tb3B0aW9uJywgbmFyZ3M9LTIpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhlLmV4Y2VwdGlvbi5tZXNzYWdlLAorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChlLmV4Y2VwdGlvbi5tZXNzYWdlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIm5hcmdzIG11c3QgYmUgYSBwb3NpdGl2ZSBpbnRlZ2VyLCAnPycsICcqJyBvciAnKyciKQorIAorICAgICBkZWYgdGVzdF9vcHRpb25fdmFsdWVfbmFyZ3NfMShzZWxmKToKK0BAIC02MzgsNyArNjM4LDcgQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAjIEEgZGVmYXVsdCBpcyByZXF1aXJlZAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgT3B0aW9uKCctLWRpc2FibGUtb3B0aW9uJywgbmFyZ3M9MSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGUuZXhjZXB0aW9uLm1lc3NhZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAiVGhlIGdpdmVuIGBkZWZhdWx0YCBkb2Vzbid0IHNhdGlzZnkgYG5hcmdzYCIpCisgCisgICAgIGRlZiB0ZXN0X29wdGlvbl92YWx1ZV9uYXJnc18yKHNlbGYpOgorQEAgLTY0OSw3ICs2NDksNyBAQCBjbGFzcyBUZXN0T3B0aW9uKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICMgQSBkZWZhdWx0IGlzIHJlcXVpcmVkCisgICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKEludmFsaWRPcHRpb25FcnJvcikgYXMgZToKKyAgICAgICAgICAgICBPcHRpb24oJy0tZGlzYWJsZS1vcHRpb24nLCBuYXJncz0yKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZ2l2ZW4gYGRlZmF1bHRgIGRvZXNuJ3Qgc2F0aXNmeSBgbmFyZ3NgIikKKyAKKyAgICAgZGVmIHRlc3Rfb3B0aW9uX3ZhbHVlX25hcmdzXzBfb3JfMShzZWxmKToKK0BAIC02NzYsNyArNjc2LDcgQEAgY2xhc3MgVGVzdE9wdGlvbih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAjIEEgZGVmYXVsdCBpcyByZXF1aXJlZAorICAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhJbnZhbGlkT3B0aW9uRXJyb3IpIGFzIGU6CisgICAgICAgICAgICAgT3B0aW9uKCctLWRpc2FibGUtb3B0aW9uJywgbmFyZ3M9JysnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoZS5leGNlcHRpb24ubWVzc2FnZSwKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZS5leGNlcHRpb24ubWVzc2FnZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICJUaGUgZ2l2ZW4gYGRlZmF1bHRgIGRvZXNuJ3Qgc2F0aXNmeSBgbmFyZ3NgIikKKyAKKyAKK0BAIC02ODQsMjEgKzY4NCwyMSBAQCBjbGFzcyBUZXN0Q29tbWFuZExpbmVIZWxwZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICBkZWYgdGVzdF9iYXNpYyhzZWxmKToKKyAgICAgICAgIGhlbHBlciA9IENvbW1hbmRMaW5lSGVscGVyKHt9LCBbJ2NtZCcsICctLWZvbycsICctLWJhciddKQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWyctLWZvbycsICctLWJhciddLCBsaXN0KGhlbHBlcikpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFsnLS1mb28nLCAnLS1iYXInXSwgbGlzdChoZWxwZXIpKQorIAorICAgICAgICAgaGVscGVyLmFkZCgnLS1lbmFibGUtcXV4JykKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFsnLS1mb28nLCAnLS1iYXInLCAnLS1lbmFibGUtcXV4J10sIGxpc3QoaGVscGVyKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyctLWZvbycsICctLWJhcicsICctLWVuYWJsZS1xdXgnXSwgbGlzdChoZWxwZXIpKQorIAorICAgICAgICAgdmFsdWUsIG9wdGlvbiA9IGhlbHBlci5oYW5kbGUoT3B0aW9uKCctLWJhcicpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoWyctLWZvbycsICctLWVuYWJsZS1xdXgnXSwgbGlzdChoZWxwZXIpKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgpLCB2YWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLWJhcicsIG9wdGlvbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoWyctLWZvbycsICctLWVuYWJsZS1xdXgnXSwgbGlzdChoZWxwZXIpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb3NpdGl2ZU9wdGlvblZhbHVlKCksIHZhbHVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnLS1iYXInLCBvcHRpb24pCisgCisgICAgICAgICB2YWx1ZSwgb3B0aW9uID0gaGVscGVyLmhhbmRsZShPcHRpb24oJy0tYmF6JykpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhbJy0tZm9vJywgJy0tZW5hYmxlLXF1eCddLCBsaXN0KGhlbHBlcikpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhOZWdhdGl2ZU9wdGlvblZhbHVlKCksIHZhbHVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoTm9uZSwgb3B0aW9uKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChbJy0tZm9vJywgJy0tZW5hYmxlLXF1eCddLCBsaXN0KGhlbHBlcikpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSwgdmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5vbmUsIG9wdGlvbikKKyAKKyAgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoQXNzZXJ0aW9uRXJyb3IpOgorICAgICAgICAgICAgIENvbW1hbmRMaW5lSGVscGVyKHt9LCBbJy0tZm9vJywgJy0tYmFyJ10pCitAQCAtNzA3LDg5ICs3MDcsODkgQEAgY2xhc3MgVGVzdENvbW1hbmRMaW5lSGVscGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIGZvbyA9IE9wdGlvbignLS13aXRoLWZvbycsIG5hcmdzPScqJykKKyAgICAgICAgIGhlbHBlciA9IENvbW1hbmRMaW5lSGVscGVyKHt9LCBbJ2NtZCcsICctLXdpdGgtZm9vPWEsYiddKQorICAgICAgICAgdmFsdWUsIG9wdGlvbiA9IGhlbHBlci5oYW5kbGUoZm9vKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2EnLCAnYicpKSwgdmFsdWUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnY29tbWFuZC1saW5lJywgdmFsdWUub3JpZ2luKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0td2l0aC1mb289YSxiJywgb3B0aW9uKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsICdiJykpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2NvbW1hbmQtbGluZScsIHZhbHVlLm9yaWdpbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0td2l0aC1mb289YSxiJywgb3B0aW9uKQorIAorICAgICAgICAgaGVscGVyID0gQ29tbWFuZExpbmVIZWxwZXIoe30sIFsnY21kJywgJy0td2l0aC1mb289YSxiJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0td2l0aG91dC1mb28nXSkKKyAgICAgICAgIHZhbHVlLCBvcHRpb24gPSBoZWxwZXIuaGFuZGxlKGZvbykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSwgdmFsdWUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnY29tbWFuZC1saW5lJywgdmFsdWUub3JpZ2luKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0td2l0aG91dC1mb28nLCBvcHRpb24pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSwgdmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdjb21tYW5kLWxpbmUnLCB2YWx1ZS5vcmlnaW4pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLXdpdGhvdXQtZm9vJywgb3B0aW9uKQorIAorICAgICAgICAgaGVscGVyID0gQ29tbWFuZExpbmVIZWxwZXIoe30sIFsnY21kJywgJy0td2l0aG91dC1mb28nLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS13aXRoLWZvbz1hLGInXSkKKyAgICAgICAgIHZhbHVlLCBvcHRpb24gPSBoZWxwZXIuaGFuZGxlKGZvbykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdhJywgJ2InKSksIHZhbHVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ2NvbW1hbmQtbGluZScsIHZhbHVlLm9yaWdpbikKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCctLXdpdGgtZm9vPWEsYicsIG9wdGlvbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2EnLCAnYicpKSwgdmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdjb21tYW5kLWxpbmUnLCB2YWx1ZS5vcmlnaW4pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLXdpdGgtZm9vPWEsYicsIG9wdGlvbikKKyAKKyAgICAgICAgIGZvbyA9IE9wdGlvbignLS13aXRoLWZvbycsIGVudj0nRk9PJywgbmFyZ3M9JyonKQorICAgICAgICAgaGVscGVyID0gQ29tbWFuZExpbmVIZWxwZXIoeydGT08nOiAnJ30sIFsnY21kJywgJy0td2l0aC1mb289YSxiJ10pCisgICAgICAgICB2YWx1ZSwgb3B0aW9uID0gaGVscGVyLmhhbmRsZShmb28pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsICdiJykpLCB2YWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdjb21tYW5kLWxpbmUnLCB2YWx1ZS5vcmlnaW4pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS13aXRoLWZvbz1hLGInLCBvcHRpb24pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdhJywgJ2InKSksIHZhbHVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnY29tbWFuZC1saW5lJywgdmFsdWUub3JpZ2luKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnLS13aXRoLWZvbz1hLGInLCBvcHRpb24pCisgCisgICAgICAgICBoZWxwZXIgPSBDb21tYW5kTGluZUhlbHBlcih7J0ZPTyc6ICdhLGInfSwgWydjbWQnLCAnLS13aXRob3V0LWZvbyddKQorICAgICAgICAgdmFsdWUsIG9wdGlvbiA9IGhlbHBlci5oYW5kbGUoZm9vKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoTmVnYXRpdmVPcHRpb25WYWx1ZSgpLCB2YWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdjb21tYW5kLWxpbmUnLCB2YWx1ZS5vcmlnaW4pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS13aXRob3V0LWZvbycsIG9wdGlvbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTmVnYXRpdmVPcHRpb25WYWx1ZSgpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2NvbW1hbmQtbGluZScsIHZhbHVlLm9yaWdpbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0td2l0aG91dC1mb28nLCBvcHRpb24pCisgCisgICAgICAgICBoZWxwZXIgPSBDb21tYW5kTGluZUhlbHBlcih7J0ZPTyc6ICcnfSwgWydjbWQnLCAnLS13aXRoLWJhcj1hLGInXSkKKyAgICAgICAgIHZhbHVlLCBvcHRpb24gPSBoZWxwZXIuaGFuZGxlKGZvbykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKE5lZ2F0aXZlT3B0aW9uVmFsdWUoKSwgdmFsdWUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnZW52aXJvbm1lbnQnLCB2YWx1ZS5vcmlnaW4pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnRk9PPScsIG9wdGlvbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTmVnYXRpdmVPcHRpb25WYWx1ZSgpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Vudmlyb25tZW50JywgdmFsdWUub3JpZ2luKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRk9PPScsIG9wdGlvbikKKyAKKyAgICAgICAgIGhlbHBlciA9IENvbW1hbmRMaW5lSGVscGVyKHsnRk9PJzogJ2EsYid9LCBbJ2NtZCcsICctLXdpdGhvdXQtYmFyJ10pCisgICAgICAgICB2YWx1ZSwgb3B0aW9uID0gaGVscGVyLmhhbmRsZShmb28pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsICdiJykpLCB2YWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdlbnZpcm9ubWVudCcsIHZhbHVlLm9yaWdpbikKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdGT089YSxiJywgb3B0aW9uKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsICdiJykpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2Vudmlyb25tZW50JywgdmFsdWUub3JpZ2luKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRk9PPWEsYicsIG9wdGlvbikKKyAKKyAgICAgICAgIGhlbHBlciA9IENvbW1hbmRMaW5lSGVscGVyKHt9LCBbJ2NtZCcsICctLXdpdGgtZm9vPWEsYicsICdGT089J10pCisgICAgICAgICB2YWx1ZSwgb3B0aW9uID0gaGVscGVyLmhhbmRsZShmb28pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhOZWdhdGl2ZU9wdGlvblZhbHVlKCksIHZhbHVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ2NvbW1hbmQtbGluZScsIHZhbHVlLm9yaWdpbikKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdGT089Jywgb3B0aW9uKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChOZWdhdGl2ZU9wdGlvblZhbHVlKCksIHZhbHVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnY29tbWFuZC1saW5lJywgdmFsdWUub3JpZ2luKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRk9PPScsIG9wdGlvbikKKyAKKyAgICAgICAgIGhlbHBlciA9IENvbW1hbmRMaW5lSGVscGVyKHt9LCBbJ2NtZCcsICctLXdpdGhvdXQtZm9vJywgJ0ZPTz1hLGInXSkKKyAgICAgICAgIHZhbHVlLCBvcHRpb24gPSBoZWxwZXIuaGFuZGxlKGZvbykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdhJywgJ2InKSksIHZhbHVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ2NvbW1hbmQtbGluZScsIHZhbHVlLm9yaWdpbikKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdGT089YSxiJywgb3B0aW9uKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsICdiJykpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2NvbW1hbmQtbGluZScsIHZhbHVlLm9yaWdpbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ0ZPTz1hLGInLCBvcHRpb24pCisgCisgICAgICAgICBoZWxwZXIgPSBDb21tYW5kTGluZUhlbHBlcih7fSwgWydjbWQnLCAnRk9PPScsICctLXdpdGgtZm9vPWEsYiddKQorICAgICAgICAgdmFsdWUsIG9wdGlvbiA9IGhlbHBlci5oYW5kbGUoZm9vKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2EnLCAnYicpKSwgdmFsdWUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnY29tbWFuZC1saW5lJywgdmFsdWUub3JpZ2luKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0td2l0aC1mb289YSxiJywgb3B0aW9uKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsICdiJykpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2NvbW1hbmQtbGluZScsIHZhbHVlLm9yaWdpbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0td2l0aC1mb289YSxiJywgb3B0aW9uKQorIAorICAgICAgICAgaGVscGVyID0gQ29tbWFuZExpbmVIZWxwZXIoe30sIFsnY21kJywgJ0ZPTz1hLGInLCAnLS13aXRob3V0LWZvbyddKQorICAgICAgICAgdmFsdWUsIG9wdGlvbiA9IGhlbHBlci5oYW5kbGUoZm9vKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoTmVnYXRpdmVPcHRpb25WYWx1ZSgpLCB2YWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdjb21tYW5kLWxpbmUnLCB2YWx1ZS5vcmlnaW4pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS13aXRob3V0LWZvbycsIG9wdGlvbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoTmVnYXRpdmVPcHRpb25WYWx1ZSgpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ2NvbW1hbmQtbGluZScsIHZhbHVlLm9yaWdpbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0td2l0aG91dC1mb28nLCBvcHRpb24pCisgCisgICAgIGRlZiB0ZXN0X2V4dHJhX2FyZ3Moc2VsZik6CisgICAgICAgICBmb28gPSBPcHRpb24oJy0td2l0aC1mb28nLCBlbnY9J0ZPTycsIG5hcmdzPScqJykKKyAgICAgICAgIGhlbHBlciA9IENvbW1hbmRMaW5lSGVscGVyKHt9LCBbJ2NtZCddKQorICAgICAgICAgaGVscGVyLmFkZCgnRk9PPWEsYixjJywgJ290aGVyLW9yaWdpbicpCisgICAgICAgICB2YWx1ZSwgb3B0aW9uID0gaGVscGVyLmhhbmRsZShmb28pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsICdiJywgJ2MnKSksIHZhbHVlKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJ290aGVyLW9yaWdpbicsIHZhbHVlLm9yaWdpbikKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdGT089YSxiLGMnLCBvcHRpb24pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdhJywgJ2InLCAnYycpKSwgdmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdvdGhlci1vcmlnaW4nLCB2YWx1ZS5vcmlnaW4pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdGT089YSxiLGMnLCBvcHRpb24pCisgCisgICAgICAgICBoZWxwZXIgPSBDb21tYW5kTGluZUhlbHBlcih7fSwgWydjbWQnXSkKKyAgICAgICAgIGhlbHBlci5hZGQoJ0ZPTz1hLGIsYycsICdvdGhlci1vcmlnaW4nKQorICAgICAgICAgaGVscGVyLmFkZCgnLS13aXRoLWZvbz1hLGIsYycsICdvdGhlci1vcmlnaW4nKQorICAgICAgICAgdmFsdWUsIG9wdGlvbiA9IGhlbHBlci5oYW5kbGUoZm9vKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2EnLCAnYicsICdjJykpLCB2YWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdvdGhlci1vcmlnaW4nLCB2YWx1ZS5vcmlnaW4pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS13aXRoLWZvbz1hLGIsYycsIG9wdGlvbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2EnLCAnYicsICdjJykpLCB2YWx1ZSkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJ290aGVyLW9yaWdpbicsIHZhbHVlLm9yaWdpbikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJy0td2l0aC1mb289YSxiLGMnLCBvcHRpb24pCisgCisgICAgICAgICAjIEFkZGluZyBjb25mbGljdGluZyBvcHRpb25zIGlzIG5vdCBhbGxvd2VkLgorICAgICAgICAgaGVscGVyID0gQ29tbWFuZExpbmVIZWxwZXIoe30sIFsnY21kJ10pCitAQCAtODA5LDkgKzgwOSw5IEBAIGNsYXNzIFRlc3RDb21tYW5kTGluZUhlbHBlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAjIEJ1dCBhZGRpbmcgdGhlIHNhbWUgaXMgYWxsb3dlZC4KKyAgICAgICAgIGhlbHBlci5hZGQoJ0ZPTz1hLGIsYycsICdvdGhlci1vcmlnaW4nKQorICAgICAgICAgdmFsdWUsIG9wdGlvbiA9IGhlbHBlci5oYW5kbGUoZm9vKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgoJ2EnLCAnYicsICdjJykpLCB2YWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdvdGhlci1vcmlnaW4nLCB2YWx1ZS5vcmlnaW4pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnRk9PPWEsYixjJywgb3B0aW9uKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChQb3NpdGl2ZU9wdGlvblZhbHVlKCgnYScsICdiJywgJ2MnKSksIHZhbHVlKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnb3RoZXItb3JpZ2luJywgdmFsdWUub3JpZ2luKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnRk9PPWEsYixjJywgb3B0aW9uKQorIAorICAgICAgICAgIyBUaGUgc2FtZSBydWxlIGFzIGFib3ZlIGFwcGxpZXMgd2hlbiB1c2luZyB0aGUgb3B0aW9uIGZvcm0gdnMuIHRoZQorICAgICAgICAgIyB2YXJpYWJsZSBmb3JtLiBCdXQgd2UgY2FuJ3QgZGV0ZWN0IGl0IHdoZW4gLmFkZCBpcyBjYWxsZWQuCitAQCAtODM3LDkgKzgzNyw5IEBAIGNsYXNzIFRlc3RDb21tYW5kTGluZUhlbHBlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBoZWxwZXIuYWRkKCdGT089YSxiLGMnLCAnb3RoZXItb3JpZ2luJykKKyAgICAgICAgIGhlbHBlci5hZGQoJy0td2l0aC1mb289YSxiLGMnLCAnb3RoZXItb3JpZ2luJykKKyAgICAgICAgIHZhbHVlLCBvcHRpb24gPSBoZWxwZXIuaGFuZGxlKGZvbykKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdhJywgJ2InLCAnYycpKSwgdmFsdWUpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnb3RoZXItb3JpZ2luJywgdmFsdWUub3JpZ2luKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJy0td2l0aC1mb289YSxiLGMnLCBvcHRpb24pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKCdhJywgJ2InLCAnYycpKSwgdmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdvdGhlci1vcmlnaW4nLCB2YWx1ZS5vcmlnaW4pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLXdpdGgtZm9vPWEsYixjJywgb3B0aW9uKQorIAorICAgICAgICAgIyBDb25mbGljdHMgYXJlIGFsc28gbm90IGFsbG93ZWQgYWdhaW5zdCB3aGF0IGlzIGluIHRoZQorICAgICAgICAgIyBlbnZpcm9ubWVudC9vbiB0aGUgY29tbWFuZCBsaW5lLgorQEAgLTg2OSwxOSArODY5LDE5IEBAIGNsYXNzIFRlc3RDb21tYW5kTGluZUhlbHBlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBmb28gPSBPcHRpb24oJy0tZm9vJywKKyAgICAgICAgICAgICAgICAgICAgICBwb3NzaWJsZV9vcmlnaW5zPSgnY29tbWFuZC1saW5lJywpKQorICAgICAgICAgdmFsdWUsIG9wdGlvbiA9IGhlbHBlci5oYW5kbGUoZm9vKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoUG9zaXRpdmVPcHRpb25WYWx1ZSgpLCB2YWx1ZSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKCdjb21tYW5kLWxpbmUnLCB2YWx1ZS5vcmlnaW4pCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnLS1mb28nLCBvcHRpb24pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFBvc2l0aXZlT3B0aW9uVmFsdWUoKSwgdmFsdWUpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdjb21tYW5kLWxpbmUnLCB2YWx1ZS5vcmlnaW4pCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCctLWZvbycsIG9wdGlvbikKKyAKKyAgICAgICAgIGJhciA9IE9wdGlvbignLS1iYXInLAorICAgICAgICAgICAgICAgICAgICAgIHBvc3NpYmxlX29yaWdpbnM9KCdtb3pjb25maWcnLCkpCistICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKEludmFsaWRPcHRpb25FcnJvciwKKysgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbnZhbGlkT3B0aW9uRXJyb3IsCisgICAgICAgICAgICAgIi0tYmFyIGNhbiBub3QgYmUgc2V0IGJ5IGNvbW1hbmQtbGluZS4gVmFsdWVzIGFyZSBhY2NlcHRlZCBmcm9tOiBtb3pjb25maWciKToKKyAgICAgICAgICAgICBoZWxwZXIuaGFuZGxlKGJhcikKKyAKKyAgICAgICAgIGJheiA9IE9wdGlvbihlbnY9J0JBWicsCisgICAgICAgICAgICAgICAgICAgICAgcG9zc2libGVfb3JpZ2lucz0oJ2ltcGxpZWQnLCkpCistICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzUmVnZXhwKEludmFsaWRPcHRpb25FcnJvciwKKysgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXNSZWdleChJbnZhbGlkT3B0aW9uRXJyb3IsCisgICAgICAgICAgICAgIkJBWj0xIGNhbiBub3QgYmUgc2V0IGJ5IGVudmlyb25tZW50LiBWYWx1ZXMgYXJlIGFjY2VwdGVkIGZyb206IGltcGxpZWQiKToKKyAgICAgICAgICAgICBoZWxwZXIuaGFuZGxlKGJheikKKyAKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF90b29sY2hhaW5fY29uZmlndXJlLnB5IGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfdG9vbGNoYWluX2NvbmZpZ3VyZS5weQoraW5kZXggY2I3ZmY3MDllLi5jMzM5YTMyYmYgMTAwNzU1CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF90b29sY2hhaW5fY29uZmlndXJlLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF90b29sY2hhaW5fY29uZmlndXJlLnB5CitAQCAtMiwxMiArMiwxMiBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24sIHVuaWNvZGVfbGl0ZXJhbHMKKysKKyAKKyBpbXBvcnQgbG9nZ2luZworIGltcG9ydCBvcworIAorLWZyb20gU3RyaW5nSU8gaW1wb3J0IFN0cmluZ0lPCisrZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8KKyAKKyBmcm9tIG1venVuaXQgaW1wb3J0IG1haW4KKyAKK0BAIC0zNjYsOSArMzY2LDkgQEAgY2xhc3MgQmFzZVRvb2xjaGFpblRlc3QoQmFzZUNvbmZpZ3VyZVRlc3QpOgorICAgICAgICAgICAgICAgICBjb21waWxlciA9IHNhbmRib3guX3ZhbHVlX2ZvcihzYW5kYm94W3Zhcl0pCisgICAgICAgICAgICAgICAgICMgQWRkIHZhciBvbiBib3RoIGVuZHMgdG8gbWFrZSBpdCBjbGVhciB3aGljaCBvZiB0aGUKKyAgICAgICAgICAgICAgICAgIyB2YXJpYWJsZXMgaXMgZmFpbGluZyB0aGUgdGVzdCB3aGVuIHRoYXQgaGFwcGVucy4KKy0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKHZhciwgY29tcGlsZXIpLCAodmFyLCByZXN1bHQpKQorKyAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCh2YXIsIGNvbXBpbGVyKSwgKHZhciwgcmVzdWx0KSkKKyAgICAgICAgICAgICBleGNlcHQgU3lzdGVtRXhpdDoKKy0gICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoKHZhciwgcmVzdWx0KSwKKysgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgodmFyLCByZXN1bHQpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmFyLCBzZWxmLm91dC5nZXR2YWx1ZSgpLnN0cmlwKCkpKQorICAgICAgICAgICAgICAgICByZXR1cm4KKyAKK0BAIC00MDcsNyArNDA3LDcgQEAgY2xhc3MgQmFzZVRvb2xjaGFpblRlc3QoQmFzZUNvbmZpZ3VyZVRlc3QpOgorICAgICAgICAgICAgICdSVVNUX0xJQl9TVUZGSVgnLAorICAgICAgICAgICAgICdPQkpfU1VGRklYJywKKyAgICAgICAgICk6CistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoJyVzPSVzJyAlIChrLCBzYW5kYm94LmdldF9jb25maWcoaykpLAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoJyVzPSVzJyAlIChrLCBzYW5kYm94LmdldF9jb25maWcoaykpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICclcz0lcycgJSAoaywgbGlicmFyeV9uYW1lX2luZm9ba10pKQorIAorIAorQEAgLTU4NCw3ICs1ODQsNyBAQCBjbGFzcyBMaW51eFRvb2xjaGFpblRlc3QoQmFzZVRvb2xjaGFpblRlc3QpOgorICAgICAgICAgIyBXZSdsbCB0cnkgZ2NjIGFuZCBjbGFuZywgYnV0IHNpbmNlIHRoZXJlIGlzIG5vIGdjYyAoZ2NjLXgueSBkb2Vzbid0CisgICAgICAgICAjIGNvdW50KSwgZmluZCBjbGFuZy4KKyAgICAgICAgIHBhdGhzID0geworLSAgICAgICAgICAgIGs6IHYgZm9yIGssIHYgaW4gc2VsZi5QQVRIUy5pdGVyaXRlbXMoKQorKyAgICAgICAgICAgIGs6IHYgZm9yIGssIHYgaW4gc2VsZi5QQVRIUy5pdGVtcygpCisgICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShrKSBub3QgaW4gKCdnY2MnLCAnZysrJykKKyAgICAgICAgIH0KKyAgICAgICAgIHNlbGYuZG9fdG9vbGNoYWluX3Rlc3QocGF0aHMsIHsKK0BAIC02MTksNyArNjE5LDcgQEAgY2xhc3MgTGludXhUb29sY2hhaW5UZXN0KEJhc2VUb29sY2hhaW5UZXN0KToKKyAgICAgICAgICMgRXZlbiBpZiB0aGVyZSBhcmUgZ2NjLXgueSBvciBjbGFuZy14LnkgY29tcGlsZXJzIGF2YWlsYWJsZSwgd2UKKyAgICAgICAgICMgZG9uJ3QgdHJ5IHRoZW0uIFRoaXMgY291bGQgYmUgY29uc2lkZXJlZCBzb21ldGhpbmcgdG8gaW1wcm92ZS4KKyAgICAgICAgIHBhdGhzID0geworLSAgICAgICAgICAgIGs6IHYgZm9yIGssIHYgaW4gc2VsZi5QQVRIUy5pdGVyaXRlbXMoKQorKyAgICAgICAgICAgIGs6IHYgZm9yIGssIHYgaW4gc2VsZi5QQVRIUy5pdGVtcygpCisgICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShrKSBub3QgaW4gKCdnY2MnLCAnZysrJywgJ2NsYW5nJywgJ2NsYW5nKysnKQorICAgICAgICAgfQorICAgICAgICAgc2VsZi5kb190b29sY2hhaW5fdGVzdChwYXRocywgeworQEAgLTgwMCw3ICs4MDAsNyBAQCBjbGFzcyBPU1hUb29sY2hhaW5UZXN0KEJhc2VUb29sY2hhaW5UZXN0KToKKyAgICAgZGVmIHRlc3Rfbm90X2djYyhzZWxmKToKKyAgICAgICAgICMgV2Ugd29uJ3QgcGljayBHQ0MgaWYgaXQncyB0aGUgb25seSB0aGluZyBhdmFpbGFibGUuCisgICAgICAgICBwYXRocyA9IHsKKy0gICAgICAgICAgICBrOiB2IGZvciBrLCB2IGluIHNlbGYuUEFUSFMuaXRlcml0ZW1zKCkKKysgICAgICAgICAgICBrOiB2IGZvciBrLCB2IGluIHNlbGYuUEFUSFMuaXRlbXMoKQorICAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUoaykgbm90IGluICgnY2xhbmcnLCAnY2xhbmcrKycpCisgICAgICAgICB9CisgICAgICAgICBzZWxmLmRvX3Rvb2xjaGFpbl90ZXN0KHBhdGhzLCB7CitAQCAtOTc2LDcgKzk3Niw3IEBAIGNsYXNzIFdpbmRvd3NUb29sY2hhaW5UZXN0KEJhc2VUb29sY2hhaW5UZXN0KToKKyAgICAgZGVmIHRlc3RfY2xhbmdfY2woc2VsZik6CisgICAgICAgICAjIFdlJ2xsIHBpY2sgY2xhbmctY2wgaWYgbXN2YyBjYW4ndCBiZSBmb3VuZC4KKyAgICAgICAgIHBhdGhzID0geworLSAgICAgICAgICAgIGs6IHYgZm9yIGssIHYgaW4gc2VsZi5QQVRIUy5pdGVyaXRlbXMoKQorKyAgICAgICAgICAgIGs6IHYgZm9yIGssIHYgaW4gc2VsZi5QQVRIUy5pdGVtcygpCisgICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShrKSAhPSAnY2wnCisgICAgICAgICB9CisgICAgICAgICBzZWxmLmRvX3Rvb2xjaGFpbl90ZXN0KHBhdGhzLCB7CitAQCAtOTg3LDcgKzk4Nyw3IEBAIGNsYXNzIFdpbmRvd3NUb29sY2hhaW5UZXN0KEJhc2VUb29sY2hhaW5UZXN0KToKKyAgICAgZGVmIHRlc3RfZ2NjKHNlbGYpOgorICAgICAgICAgIyBXZSdsbCBwaWNrIEdDQyBpZiBtc3ZjIGFuZCBjbGFuZy1jbCBjYW4ndCBiZSBmb3VuZC4KKyAgICAgICAgIHBhdGhzID0geworLSAgICAgICAgICAgIGs6IHYgZm9yIGssIHYgaW4gc2VsZi5QQVRIUy5pdGVyaXRlbXMoKQorKyAgICAgICAgICAgIGs6IHYgZm9yIGssIHYgaW4gc2VsZi5QQVRIUy5pdGVtcygpCisgICAgICAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShrKSBub3QgaW4gKCdjbCcsICdjbGFuZy1jbCcpCisgICAgICAgICB9CisgICAgICAgICBzZWxmLmRvX3Rvb2xjaGFpbl90ZXN0KHBhdGhzLCB7CitAQCAtMTAwNiw3ICsxMDA2LDcgQEAgY2xhc3MgV2luZG93c1Rvb2xjaGFpblRlc3QoQmFzZVRvb2xjaGFpblRlc3QpOgorICAgICBkZWYgdGVzdF9jbGFuZyhzZWxmKToKKyAgICAgICAgICMgV2UnbGwgcGljayBjbGFuZyBpZiBub3RoaW5nIGVsc2UgaXMgZm91bmQuCisgICAgICAgICBwYXRocyA9IHsKKy0gICAgICAgICAgICBrOiB2IGZvciBrLCB2IGluIHNlbGYuUEFUSFMuaXRlcml0ZW1zKCkKKysgICAgICAgICAgICBrOiB2IGZvciBrLCB2IGluIHNlbGYuUEFUSFMuaXRlbXMoKQorICAgICAgICAgICAgIGlmIG9zLnBhdGguYmFzZW5hbWUoaykgbm90IGluICgnY2wnLCAnY2xhbmctY2wnLCAnZ2NjJykKKyAgICAgICAgIH0KKyAgICAgICAgIHNlbGYuZG9fdG9vbGNoYWluX3Rlc3QocGF0aHMsIHsKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF90b29sY2hhaW5faGVscGVycy5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X3Rvb2xjaGFpbl9oZWxwZXJzLnB5CitpbmRleCA4ZWMzM2E4YjcuLmJhMDQ2ZWQxMiAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X3Rvb2xjaGFpbl9oZWxwZXJzLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdC9jb25maWd1cmUvdGVzdF90b29sY2hhaW5faGVscGVycy5weQorQEAgLTIsNyArMiw3IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbiwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCBjb3B5CisgaW1wb3J0IHJlCitAQCAtMTAsNyArMTAsNyBAQCBpbXBvcnQgdHlwZXMKKyBpbXBvcnQgdW5pdHRlc3QKKyAKKyBmcm9tIGZubWF0Y2ggaW1wb3J0IGZubWF0Y2gKKy1mcm9tIFN0cmluZ0lPIGltcG9ydCBTdHJpbmdJTworK2Zyb20gaW8gaW1wb3J0IFN0cmluZ0lPCisgZnJvbSB0ZXh0d3JhcCBpbXBvcnQgZGVkZW50CisgCisgZnJvbSBtb3p1bml0IGltcG9ydCAoCitAQCAtNDMsNyArNDMsNyBAQCBjbGFzcyBDb21waWxlclByZXByb2Nlc3NvcihQcmVwcm9jZXNzb3IpOgorICAgICAgICAgIyBIYWNrIGFyb3VuZCBpdCBlbm91Z2ggdGhhdCB0aGUgY29uZmlndXJlIHRlc3RzIHdvcmsgcHJvcGVybHkuCisgICAgICAgICBjb250ZXh0ID0gc2VsZi5jb250ZXh0CisgICAgICAgICBkZWYgbm9ybWFsaXplX251bWJlcnModmFsdWUpOgorLSAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UodmFsdWUsIHR5cGVzLlN0cmluZ1R5cGVzKToKKysgICAgICAgICAgICBpZiBpc2luc3RhbmNlKHZhbHVlLCAoc3RyLCkpOgorICAgICAgICAgICAgICAgICBpZiB2YWx1ZVstMTpdID09ICdMJyBhbmQgdmFsdWVbOi0xXS5pc2RpZ2l0KCk6CisgICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IGludCh2YWx1ZVs6LTFdKQorICAgICAgICAgICAgIHJldHVybiB2YWx1ZQorQEAgLTUzLDcgKzUzLDcgQEAgY2xhc3MgQ29tcGlsZXJQcmVwcm9jZXNzb3IoUHJlcHJvY2Vzc29yKToKKyAgICAgICAgICAgICByZXR1cm4gc2VsZi5IQVNfRkVBVFVSRS5zdWIocidcMVwyJywgZXhwcikKKyAgICAgICAgIHNlbGYuY29udGV4dCA9IHNlbGYuQ29udGV4dCgKKyAgICAgICAgICAgICAobm9ybWFsaXplX2hhc19mZWF0dXJlKGspLCBub3JtYWxpemVfbnVtYmVycyh2KSkKKy0gICAgICAgICAgICBmb3IgaywgdiBpbiBjb250ZXh0Lml0ZXJpdGVtcygpCisrICAgICAgICAgICAgZm9yIGssIHYgaW4gY29udGV4dC5pdGVtcygpCisgICAgICAgICApCisgICAgICAgICB0cnk6CisgICAgICAgICAgICAgcmV0dXJuIFByZXByb2Nlc3Nvci5kb19pZihzZWxmLCBub3JtYWxpemVfaGFzX2ZlYXR1cmUoZXhwcmVzc2lvbiksCitAQCAtOTUsNyArOTUsNyBAQCBjbGFzcyBUZXN0Q29tcGlsZXJQcmVwcm9jZXNzb3IodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgaW5wdXQubmFtZSA9ICdmb28nCisgICAgICAgICBwcC5kb19pbmNsdWRlKGlucHV0KQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocHAub3V0LmdldHZhbHVlKCksICcxIC4gMiAuIGMgIkQiJykKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocHAub3V0LmdldHZhbHVlKCksICcxIC4gMiAuIGMgIkQiJykKKyAKKyAgICAgZGVmIHRlc3RfY29uZGl0aW9uKHNlbGYpOgorICAgICAgICAgcHAgPSBDb21waWxlclByZXByb2Nlc3Nvcih7CitAQCAtMTI1LDcgKzEyNSw3IEBAIGNsYXNzIFRlc3RDb21waWxlclByZXByb2Nlc3Nvcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBpbnB1dC5uYW1lID0gJ2ZvbycKKyAgICAgICAgIHBwLmRvX2luY2x1ZGUoaW5wdXQpCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscygnSUZERUZfQVxuSUZfQVxuSUZfQlxuSUZfTk9UX0NcbicsIHBwLm91dC5nZXR2YWx1ZSgpKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnSUZERUZfQVxuSUZfQVxuSUZfQlxuSUZfTk9UX0NcbicsIHBwLm91dC5nZXR2YWx1ZSgpKQorIAorIAorIGNsYXNzIEZha2VDb21waWxlcihkaWN0KToKK0BAIC0xNjQsOSArMTY0LDkgQEAgY2xhc3MgRmFrZUNvbXBpbGVyKGRpY3QpOgorICAgICAnJycKKyAgICAgZGVmIF9faW5pdF9fKHNlbGYsICpkZWZpbml0aW9ucyk6CisgICAgICAgICBmb3IgZGVmaW5pdGlvbiBpbiBkZWZpbml0aW9uczoKKy0gICAgICAgICAgICBpZiBhbGwobm90IGlzaW5zdGFuY2UoZCwgZGljdCkgZm9yIGQgaW4gZGVmaW5pdGlvbi5pdGVydmFsdWVzKCkpOgorKyAgICAgICAgICAgIGlmIGFsbChub3QgaXNpbnN0YW5jZShkLCBkaWN0KSBmb3IgZCBpbiBkZWZpbml0aW9uLnZhbHVlcygpKToKKyAgICAgICAgICAgICAgICAgZGVmaW5pdGlvbiA9IHtOb25lOiBkZWZpbml0aW9ufQorLSAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGRlZmluaXRpb24uaXRlcml0ZW1zKCk6CisrICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gZGVmaW5pdGlvbi5pdGVtcygpOgorICAgICAgICAgICAgICAgICBzZWxmLnNldGRlZmF1bHQoa2V5LCB7fSkudXBkYXRlKHZhbHVlKQorIAorICAgICBkZWYgX19jYWxsX18oc2VsZiwgc3RkaW4sIGFyZ3MpOgorQEAgLTE3OCwxNCArMTc4LDE0IEBAIGNsYXNzIEZha2VDb21waWxlcihkaWN0KToKKyAgICAgICAgICAgICBwcCA9IENvbXBpbGVyUHJlcHJvY2Vzc29yKHNlbGZbTm9uZV0pCisgCisgICAgICAgICAgICAgZGVmIGFwcGx5X2RlZm4oZGVmbik6CistICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIGRlZm4uaXRlcml0ZW1zKCk6CisrICAgICAgICAgICAgICAgIGZvciBrLCB2IGluIGRlZm4uaXRlbXMoKToKKyAgICAgICAgICAgICAgICAgICAgIGlmIHYgaXMgRmFsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgayBpbiBwcC5jb250ZXh0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWwgcHAuY29udGV4dFtrXQorICAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgICBwcC5jb250ZXh0W2tdID0gdgorIAorLSAgICAgICAgICAgIGZvciBnbG9iLCBkZWZuIGluIHNlbGYuaXRlcml0ZW1zKCk6CisrICAgICAgICAgICAgZm9yIGdsb2IsIGRlZm4gaW4gc2VsZi5pdGVtcygpOgorICAgICAgICAgICAgICAgICBpZiBnbG9iIGFuZCBub3QgZ2xvYi5zdGFydHN3aXRoKCctJykgYW5kIGZubWF0Y2goZmlsZSwgZ2xvYik6CisgICAgICAgICAgICAgICAgICAgICBhcHBseV9kZWZuKGRlZm4pCisgCitAQCAtMjE2LDcgKzIxNiw3IEBAIGNsYXNzIFRlc3RGYWtlQ29tcGlsZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICAgICAnQSc6ICcxJywKKyAgICAgICAgICAgICAgICAgJ0InOiAnMicsCisgICAgICAgICAgICAgfSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlcihOb25lLCBbJy1FJywgJ2ZpbGUnXSksCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21waWxlcihOb25lLCBbJy1FJywgJ2ZpbGUnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsICcxIDIgQycsICcnKSkKKyAKKyAgICAgICAgICAgICBjb21waWxlciA9IEZha2VDb21waWxlcih7CitAQCAtMjM4LDI1ICsyMzgsMjUgQEAgY2xhc3MgVGVzdEZha2VDb21waWxlcih1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgICAgICAgICAnQic6ICc0MicsCisgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgfSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlcihOb25lLCBbJy1FJywgJ2ZpbGUnXSksCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21waWxlcihOb25lLCBbJy1FJywgJ2ZpbGUnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsICcxIDIgQycsICcnKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlcihOb25lLCBbJy1FJywgJy1mb28nLCAnZmlsZSddKSwKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBpbGVyKE5vbmUsIFsnLUUnLCAnLWZvbycsICdmaWxlJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLCAnMSAyIGZvbycsICcnKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlcihOb25lLCBbJy1FJywgJy1iYXInLCAnZmlsZSddKSwKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBpbGVyKE5vbmUsIFsnLUUnLCAnLWJhcicsICdmaWxlJ10pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgwLCAnMSBiYXIgYmFyJywgJycpKQorLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbXBpbGVyKE5vbmUsIFsnLUUnLCAnLXF1eCcsICdmaWxlJ10pLAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGlsZXIoTm9uZSwgWyctRScsICctcXV4JywgJ2ZpbGUnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsICcxIEIgQycsICcnKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlcihOb25lLCBbJy1FJywgJy1mb28nLCAnLWJhcicsICdmaWxlJ10pLAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGlsZXIoTm9uZSwgWyctRScsICctZm9vJywgJy1iYXInLCAnZmlsZSddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgJzEgYmFyIGJhcicsICcnKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlcihOb25lLCBbJy1FJywgJy1iYXInLCAnLWZvbycsICdmaWxlJ10pLAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGlsZXIoTm9uZSwgWyctRScsICctYmFyJywgJy1mb28nLCAnZmlsZSddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgJzEgYmFyIGZvbycsICcnKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlcihOb25lLCBbJy1FJywgJy1iYXInLCAnLXF1eCcsICdmaWxlJ10pLAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGlsZXIoTm9uZSwgWyctRScsICctYmFyJywgJy1xdXgnLCAnZmlsZSddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgJzEgQiBiYXInLCAnJykpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29tcGlsZXIoTm9uZSwgWyctRScsICctcXV4JywgJy1iYXInLCAnZmlsZSddKSwKKysgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBpbGVyKE5vbmUsIFsnLUUnLCAnLXF1eCcsICctYmFyJywgJ2ZpbGUnXSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDAsICcxIGJhciBiYXInLCAnJykpCistICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29tcGlsZXIoTm9uZSwgWyctRScsICdmaWxlLmMnXSksCisrICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21waWxlcihOb25lLCBbJy1FJywgJ2ZpbGUuYyddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgJzEgNDIgQycsICcnKSkKKy0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlcihOb25lLCBbJy1FJywgJy1iYXInLCAnZmlsZS5jJ10pLAorKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGlsZXIoTm9uZSwgWyctRScsICctYmFyJywgJ2ZpbGUuYyddKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMCwgJzEgYmFyIGJhcicsICcnKSkKKyAKKyAgICAgZGVmIHRlc3RfbXVsdGlwbGVfZGVmaW5pdGlvbnMoc2VsZik6CitAQCAtMjY3LDcgKzI2Nyw3IEBAIGNsYXNzIFRlc3RGYWtlQ29tcGlsZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICdDJzogMywKKyAgICAgICAgIH0pCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlciwgeworKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21waWxlciwgeworICAgICAgICAgICAgIE5vbmU6IHsKKyAgICAgICAgICAgICAgICAgJ0EnOiAxLAorICAgICAgICAgICAgICAgICAnQic6IDIsCitAQCAtMjgyLDcgKzI4Miw3IEBAIGNsYXNzIFRlc3RGYWtlQ29tcGlsZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgICdDJzogMywKKyAgICAgICAgIH0pCisgCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhjb21waWxlciwgeworKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChjb21waWxlciwgeworICAgICAgICAgICAgIE5vbmU6IHsKKyAgICAgICAgICAgICAgICAgJ0EnOiAxLAorICAgICAgICAgICAgICAgICAnQic6IDQsCitAQCAtMzAyLDcgKzMwMiw3IEBAIGNsYXNzIFRlc3RGYWtlQ29tcGlsZXIodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIH0sCisgICAgICAgICB9KQorIAorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMoY29tcGlsZXIsIHsKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoY29tcGlsZXIsIHsKKyAgICAgICAgICAgICBOb25lOiB7CisgICAgICAgICAgICAgICAgICdBJzogMSwKKyAgICAgICAgICAgICAgICAgJ0InOiA0LAorQEAgLTMzMCw3ICszMzAsNyBAQCBjbGFzcyBUZXN0RmFrZUNvbXBpbGVyKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgICAgICB9LAorICAgICAgICAgfSkKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKGNvbXBpbGVyLCB7CisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGNvbXBpbGVyLCB7CisgICAgICAgICAgICAgTm9uZTogeworICAgICAgICAgICAgICAgICAnQSc6IDEsCisgICAgICAgICAgICAgICAgICdCJzogMiwKK0BAIC0zNzAsNyArMzcwLDcgQEAgY2xhc3MgQ29tcGlsZXJSZXN1bHQoUmVhZE9ubHlOYW1lc3BhY2UpOgorICAgICBkZWYgX19hZGRfXyhzZWxmLCBvdGhlcik6CisgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShvdGhlciwgZGljdCkKKyAgICAgICAgIHJlc3VsdCA9IGNvcHkuZGVlcGNvcHkoc2VsZi5fX2RpY3RfXykKKy0gICAgICAgIGZvciBrLCB2IGluIG90aGVyLml0ZXJpdGVtcygpOgorKyAgICAgICAgZm9yIGssIHYgaW4gb3RoZXIuaXRlbXMoKToKKyAgICAgICAgICAgICBpZiBrID09ICdmbGFncyc6CisgICAgICAgICAgICAgICAgIHJlc3VsdC5zZXRkZWZhdWx0KGssIFtdKS5leHRlbmQodikKKyAgICAgICAgICAgICBlbHNlOgorQEAgLTM4MSw3ICszODEsNyBAQCBjbGFzcyBDb21waWxlclJlc3VsdChSZWFkT25seU5hbWVzcGFjZSk6CisgY2xhc3MgVGVzdENvbXBpbGVyUmVzdWx0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgZGVmIHRlc3RfY29tcGlsZXJfcmVzdWx0KHNlbGYpOgorICAgICAgICAgcmVzdWx0ID0gQ29tcGlsZXJSZXN1bHQoKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzdWx0Ll9fZGljdF9fLCB7CisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdC5fX2RpY3RfXywgeworICAgICAgICAgICAgICd3cmFwcGVyJzogW10sCisgICAgICAgICAgICAgJ2NvbXBpbGVyJzogbW96cGF0aC5hYnNwYXRoKCcnKSwKKyAgICAgICAgICAgICAndmVyc2lvbic6ICcnLAorQEAgLTM5Nyw3ICszOTcsNyBAQCBjbGFzcyBUZXN0Q29tcGlsZXJSZXN1bHQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgICAgIGxhbmd1YWdlPSdDJywKKyAgICAgICAgICAgICBmbGFncz1bJy1zdGQ9Z251OTknXSwKKyAgICAgICAgICkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHJlc3VsdC5fX2RpY3RfXywgeworKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuX19kaWN0X18sIHsKKyAgICAgICAgICAgICAnd3JhcHBlcic6IFtdLAorICAgICAgICAgICAgICdjb21waWxlcic6IG1venBhdGguYWJzcGF0aCgnL3Vzci9iaW4vZ2NjJyksCisgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnNC4yLjEnLAorQEAgLTQwNyw3ICs0MDcsNyBAQCBjbGFzcyBUZXN0Q29tcGlsZXJSZXN1bHQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgfSkKKyAKKyAgICAgICAgIHJlc3VsdDIgPSByZXN1bHQgKyB7J2ZsYWdzJzogWyctbTMyJ119CistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN1bHQyLl9fZGljdF9fLCB7CisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHJlc3VsdDIuX19kaWN0X18sIHsKKyAgICAgICAgICAgICAnd3JhcHBlcic6IFtdLAorICAgICAgICAgICAgICdjb21waWxlcic6IG1venBhdGguYWJzcGF0aCgnL3Vzci9iaW4vZ2NjJyksCisgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnNC4yLjEnLAorQEAgLTQxNiwxNCArNDE2LDE0IEBAIGNsYXNzIFRlc3RDb21waWxlclJlc3VsdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICAgICAgJ2ZsYWdzJzogWyctc3RkPWdudTk5JywgJy1tMzInXSwKKyAgICAgICAgIH0pCisgICAgICAgICAjIE9yaWdpbmFsIGZsYWdzIGFyZSB1bnRvdWNoZWQuCistICAgICAgICBzZWxmLmFzc2VydEVxdWFscyhyZXN1bHQuZmxhZ3MsIFsnLXN0ZD1nbnU5OSddKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQuZmxhZ3MsIFsnLXN0ZD1nbnU5OSddKQorIAorICAgICAgICAgcmVzdWx0MyA9IHJlc3VsdCArIHsKKyAgICAgICAgICAgICAnY29tcGlsZXInOiAnL3Vzci9iaW4vZ2NjLTQuNycsCisgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnNC43LjMnLAorICAgICAgICAgICAgICdmbGFncyc6IFsnLW0zMiddLAorICAgICAgICAgfQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMocmVzdWx0My5fX2RpY3RfXywgeworKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChyZXN1bHQzLl9fZGljdF9fLCB7CisgICAgICAgICAgICAgJ3dyYXBwZXInOiBbXSwKKyAgICAgICAgICAgICAnY29tcGlsZXInOiBtb3pwYXRoLmFic3BhdGgoJy91c3IvYmluL2djYy00LjcnKSwKKyAgICAgICAgICAgICAndmVyc2lvbic6ICc0LjcuMycsCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfdG9vbGtpdF9tb3pfY29uZmlndXJlLnB5IGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfdG9vbGtpdF9tb3pfY29uZmlndXJlLnB5CitpbmRleCBhYzM1ZDc0NWYuLmNkZDhlY2UxYiAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X3Rvb2xraXRfbW96X2NvbmZpZ3VyZS5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfdG9vbGtpdF9tb3pfY29uZmlndXJlLnB5CitAQCAtMiw3ICsyLDcgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKKyAjIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uLCB1bmljb2RlX2xpdGVyYWxzCisrCisgCisgaW1wb3J0IG9zCisgCitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfdXRpbC5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC90ZXN0L2NvbmZpZ3VyZS90ZXN0X3V0aWwucHkKK2luZGV4IDlmOTU3NWZkMC4uYzJkYjFhNjI4IDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfdXRpbC5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3QvY29uZmlndXJlL3Rlc3RfdXRpbC5weQorQEAgLTIsNyArMiw3IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbiwgdW5pY29kZV9saXRlcmFscworKworIAorIGltcG9ydCBsb2dnaW5nCisgaW1wb3J0IG9zCitAQCAtMTEsNyArMTEsNyBAQCBpbXBvcnQgdGV4dHdyYXAKKyBpbXBvcnQgdW5pdHRlc3QKKyBpbXBvcnQgc3lzCisgCistZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KKytmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworIAorIGZyb20gbW96dW5pdCBpbXBvcnQgbWFpbgorIGZyb20gbW96cGFjayBpbXBvcnQgcGF0aCBhcyBtb3pwYXRoCitAQCAtNDM0LDExICs0MzQsMTEgQEAgY2xhc3MgVGVzdExvZ1N1YnByb2Nlc3NPdXRwdXQodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgZXhjZXB0IFN5c3RlbUV4aXQgYXMgZToKKyAgICAgICAgICAgICBzdGF0dXMgPSBlLmNvZGUKKyAKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWxzKHN0YXR1cywgMCkKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwKQorICAgICAgICAgcXVvdGVfY2hhciA9ICInIgorICAgICAgICAgaWYgZ2V0cHJlZmVycmVkZW5jb2RpbmcoKS5sb3dlcigpID09ICd1dGYtOCc6CisgICAgICAgICAgICAgcXVvdGVfY2hhciA9ICdcdTAwQjQnLmVuY29kZSgndXRmLTgnKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbHMob3V0LmdldHZhbHVlKCkuc3RyaXAoKSwgcXVvdGVfY2hhcikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0LmdldHZhbHVlKCkuc3RyaXAoKSwgcXVvdGVfY2hhcikKKyAKKyAKKyBjbGFzcyBUZXN0VmVyc2lvbih1bml0dGVzdC5UZXN0Q2FzZSk6CitkaWZmIC0tZ2l0IGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3RpbmcucHkgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdGluZy5weQoraW5kZXggMzIyOWMzZjc3Li44MmQyNTBmYWIgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdGVzdGluZy5weQorKysrIGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3Rlc3RpbmcucHkKK0BAIC0yLDkgKzIsOSBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscworIAorLWltcG9ydCBjUGlja2xlIGFzIHBpY2tsZQorKworK2ltcG9ydCBwaWNrbGUgYXMgcGlja2xlCisgaW1wb3J0IG9zCisgaW1wb3J0IHN5cworIAorQEAgLTcwLDcgKzcwLDcgQEAgUkVGVEVTVF9GTEFWT1JTID0gKCdjcmFzaHRlc3QnLCAncmVmdGVzdCcpCisgV0VCX1BMQVRGT1JNX1RFU1RTX0ZMQVZPUlMgPSAoJ3dlYi1wbGF0Zm9ybS10ZXN0cycsKQorIAorIGRlZiBhbGxfdGVzdF9mbGF2b3JzKCk6CistICAgIHJldHVybiAoW3ZbMF0gZm9yIHYgaW4gVEVTVF9NQU5JRkVTVFMudmFsdWVzKCldICsKKysgICAgcmV0dXJuIChbdlswXSBmb3IgdiBpbiBsaXN0KFRFU1RfTUFOSUZFU1RTLnZhbHVlcygpKV0gKworICAgICAgICAgICAgIGxpc3QoUkVGVEVTVF9GTEFWT1JTKSArCisgICAgICAgICAgICAgbGlzdChXRUJfUExBVEZPUk1fVEVTVFNfRkxBVk9SUykpCisgCitAQCAtMjEwLDcgKzIxMCw3IEBAIGRlZiBpbnN0YWxsX3Rlc3RfZmlsZXModG9wc3JjZGlyLCB0b3BvYmpkaXIsIHRlc3RzX3Jvb3QsIHRlc3Rfb2Jqcyk6CisgICAgIG9ubHkgYSBmZXcgdGVzdHMgbmVlZCB0byBiZSBydW4uCisgICAgICIiIgorICAgICBmbGF2b3JfaW5mbyA9IHtmbGF2b3I6IChyb290LCBwcmVmaXgsIGluc3RhbGwpCistICAgICAgICAgICAgICAgICAgIGZvciAoZmxhdm9yLCByb290LCBwcmVmaXgsIGluc3RhbGwpIGluIFRFU1RfTUFOSUZFU1RTLnZhbHVlcygpfQorKyAgICAgICAgICAgICAgICAgICBmb3IgKGZsYXZvciwgcm9vdCwgcHJlZml4LCBpbnN0YWxsKSBpbiBsaXN0KFRFU1RfTUFOSUZFU1RTLnZhbHVlcygpKX0KKyAgICAgb2JqZGlyX2Rlc3QgPSBtb3pwYXRoLmpvaW4odG9wb2JqZGlyLCB0ZXN0c19yb290KQorIAorICAgICBjb252ZXJ0ZXIgPSBTdXBwb3J0RmlsZXNDb252ZXJ0ZXIoKQorQEAgLTI5Miw3ICsyOTIsNyBAQCBkZWYgcmVhZF93cHRfbWFuaWZlc3QoY29udGV4dCwgcGF0aHMpOgorICAgICAgICAgcGF0aHNfZmlsZSA9IG9zLnBhdGguam9pbihjb250ZXh0LmNvbmZpZy50b3BzcmNkaXIsICJ0ZXN0aW5nIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIndlYi1wbGF0Zm9ybSIsICJ0ZXN0cyIsICJ0b29scyIsICJsb2NhbHBhdGhzLnB5IikKKyAgICAgICAgIF9nbG9iYWxzID0geyJfX2ZpbGVfXyI6IHBhdGhzX2ZpbGV9CistICAgICAgICBleGVjZmlsZShwYXRoc19maWxlLCBfZ2xvYmFscykKKysgICAgICAgIGV4ZWMoY29tcGlsZShvcGVuKHBhdGhzX2ZpbGUsICJyYiIpLnJlYWQoKSwgcGF0aHNfZmlsZSwgJ2V4ZWMnKSwgX2dsb2JhbHMpCisgICAgICAgICBpbXBvcnQgbWFuaWZlc3QgYXMgd3B0bWFuaWZlc3QKKyAgICAgZmluYWxseToKKyAgICAgICAgIHN5cy5wYXRoID0gb2xkX3BhdGgKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdXRpbC5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC91dGlsLnB5CitpbmRleCA0ZWEyMjdkYzAuLjc5Y2IxNTcxMyAxMDA2NDQKKy0tLSBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC91dGlsLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96YnVpbGQvdXRpbC5weQorQEAgLTUsNyArNSw3IEBACisgIyBUaGlzIGZpbGUgY29udGFpbnMgbWlzY2VsbGFuZW91cyB1dGlsaXR5IGZ1bmN0aW9ucyB0aGF0IGRvbid0IGJlbG9uZyBhbnl3aGVyZQorICMgaW4gcGFydGljdWxhci4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydCwgdW5pY29kZV9saXRlcmFscywgcHJpbnRfZnVuY3Rpb24KKysKKyAKKyBpbXBvcnQgYXJncGFyc2UKKyBpbXBvcnQgY29sbGVjdGlvbnMKK0BAIC0yMSw2ICsyMSw5IEBAIGltcG9ydCBzdGF0CisgaW1wb3J0IHN5cworIGltcG9ydCB0aW1lCisgaW1wb3J0IHR5cGVzCisraW1wb3J0IHBwcmludAorK2ltcG9ydCBzaXgKKytpbXBvcnQgc3VicHJvY2VzcworIAorIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0ICgKKyAgICAgZGVmYXVsdGRpY3QsCitAQCAtMzYsNyArMzksNyBAQCBmcm9tIGlvIGltcG9ydCAoCisgaWYgc3lzLnZlcnNpb25faW5mb1swXSA9PSAzOgorICAgICBzdHJfdHlwZSA9IHN0cgorIGVsc2U6CistICAgIHN0cl90eXBlID0gYmFzZXN0cmluZworKyAgICBzdHJfdHlwZSA9IHN0cgorIAorIGlmIHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInOgorICAgICBfa2VybmVsMzIgPSBjdHlwZXMud2luZGxsLmtlcm5lbDMyCitAQCAtNzgsNyArODEsNyBAQCBkZWYgaGFzaF9maWxlKHBhdGgsIGhhc2hlcj1Ob25lKToKKyAgICAgcmV0dXJuIGguaGV4ZGlnZXN0KCkKKyAKKyAKKy1jbGFzcyBFbXB0eVZhbHVlKHVuaWNvZGUpOgorK2NsYXNzIEVtcHR5VmFsdWUoc3RyKToKKyAgICAgIiIiQSBkdW1teSB0eXBlIHRoYXQgYmVoYXZlcyBsaWtlIGFuIGVtcHR5IHN0cmluZyBhbmQgc2VxdWVuY2UuCisgCisgICAgIFRoaXMgdHlwZSBleGlzdHMgaW4gb3JkZXIgdG8gc3VwcG9ydAorQEAgLTkyLDcgKzk1LDcgQEAgY2xhc3MgRW1wdHlWYWx1ZSh1bmljb2RlKToKKyBjbGFzcyBSZWFkT25seU5hbWVzcGFjZShvYmplY3QpOgorICAgICAiIiJBIGNsYXNzIGZvciBvYmplY3RzIHdpdGggaW1tdXRhYmxlIGF0dHJpYnV0ZXMgc2V0IGF0IGluaXRpYWxpemF0aW9uLiIiIgorICAgICBkZWYgX19pbml0X18oc2VsZiwgKiprd2FyZ3MpOgorLSAgICAgICAgZm9yIGssIHYgaW4ga3dhcmdzLml0ZXJpdGVtcygpOgorKyAgICAgICAgZm9yIGssIHYgaW4ga3dhcmdzLml0ZW1zKCk6CisgICAgICAgICAgICAgc3VwZXIoUmVhZE9ubHlOYW1lc3BhY2UsIHNlbGYpLl9fc2V0YXR0cl9fKGssIHYpCisgCisgICAgIGRlZiBfX2RlbGF0dHJfXyhzZWxmLCBrZXkpOgorQEAgLTIyNCw3ICsyMjcsNyBAQCBjbGFzcyBGaWxlQXZvaWRXcml0ZShCeXRlc0lPKToKKyAgICAgICAgIHNlbGYubW9kZSA9IG1vZGUKKyAKKyAgICAgZGVmIHdyaXRlKHNlbGYsIGJ1Zik6CistICAgICAgICBpZiBpc2luc3RhbmNlKGJ1ZiwgdW5pY29kZSk6CisrICAgICAgICBpZiBpc2luc3RhbmNlKGJ1Ziwgc3RyKToKKyAgICAgICAgICAgICBidWYgPSBidWYuZW5jb2RlKCd1dGYtOCcpCisgICAgICAgICBCeXRlc0lPLndyaXRlKHNlbGYsIGJ1ZikKKyAKK0BAIC0yNjcsNiArMjcwLDEwIEBAIGNsYXNzIEZpbGVBdm9pZFdyaXRlKEJ5dGVzSU8pOgorICAgICAgICAgICAgIGlmICdiJyBpbiBzZWxmLm1vZGU6CisgICAgICAgICAgICAgICAgIHdyaXRlbW9kZSArPSAnYicKKyAgICAgICAgICAgICB3aXRoIG9wZW4oc2VsZi5uYW1lLCB3cml0ZW1vZGUpIGFzIGZpbGU6CisrICAgICAgICAgICAgICAgIGlmICdiJyBpbiBzZWxmLm1vZGUgYW5kIGlzaW5zdGFuY2UoYnVmLCBzdHIpOgorKyAgICAgICAgICAgICAgICAgICAgYnVmID0gYnVmLmVuY29kZSgndXRmLTgnKQorKyAgICAgICAgICAgICAgICBlbGlmICdiJyBub3QgaW4gc2VsZi5tb2RlIGFuZCBpc2luc3RhbmNlKGJ1ZiwgYnl0ZXMpOgorKyAgICAgICAgICAgICAgICAgICAgYnVmID0gYnVmLmRlY29kZSgndXRmLTgnKQorICAgICAgICAgICAgICAgICBmaWxlLndyaXRlKGJ1ZikKKyAKKyAgICAgICAgIGlmIHNlbGYuX2NhcHR1cmVfZGlmZjoKK0BAIC0zODEsNyArMzg4LDcgQEAgY2xhc3MgTGlzdE1peGluKG9iamVjdCk6CisgICAgIGRlZiBfX2FkZF9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgICMgQWxsb3cgTm9uZSBhbmQgRW1wdHlWYWx1ZSBpcyBhIHNwZWNpYWwgY2FzZSBiZWNhdXNlIGl0IG1ha2VzIHVuZGVmaW5lZAorICAgICAgICAgIyB2YXJpYWJsZSByZWZlcmVuY2VzIGluIG1vei5idWlsZCBiZWhhdmUgYmV0dGVyLgorLSAgICAgICAgb3RoZXIgPSBbXSBpZiBpc2luc3RhbmNlKG90aGVyLCAodHlwZXMuTm9uZVR5cGUsIEVtcHR5VmFsdWUpKSBlbHNlIG90aGVyCisrICAgICAgICBvdGhlciA9IFtdIGlmIGlzaW5zdGFuY2Uob3RoZXIsICh0eXBlKE5vbmUpLCBFbXB0eVZhbHVlKSkgZWxzZSBvdGhlcgorICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2Uob3RoZXIsIGxpc3QpOgorICAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoJ09ubHkgbGlzdHMgY2FuIGJlIGFwcGVuZGVkIHRvIGxpc3RzLicpCisgCitAQCAtMzkwLDcgKzM5Nyw3IEBAIGNsYXNzIExpc3RNaXhpbihvYmplY3QpOgorICAgICAgICAgcmV0dXJuIG5ld19saXN0CisgCisgICAgIGRlZiBfX2lhZGRfXyhzZWxmLCBvdGhlcik6CistICAgICAgICBvdGhlciA9IFtdIGlmIGlzaW5zdGFuY2Uob3RoZXIsICh0eXBlcy5Ob25lVHlwZSwgRW1wdHlWYWx1ZSkpIGVsc2Ugb3RoZXIKKysgICAgICAgIG90aGVyID0gW10gaWYgaXNpbnN0YW5jZShvdGhlciwgKHR5cGUoTm9uZSksIEVtcHR5VmFsdWUpKSBlbHNlIG90aGVyCisgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShvdGhlciwgbGlzdCk6CisgICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcignT25seSBsaXN0cyBjYW4gYmUgYXBwZW5kZWQgdG8gbGlzdHMuJykKKyAKK0BAIC01NjEsMTQgKzU2OCwxNCBAQCBkZWYgRmxhZ3NGYWN0b3J5KGZsYWdzKToKKyAgICAgZnVuY3Rpb25zIGJlbG93LgorICAgICAiIiIKKyAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZmxhZ3MsIGRpY3QpCistICAgIGFzc2VydCBhbGwoaXNpbnN0YW5jZSh2LCB0eXBlKSBmb3IgdiBpbiBmbGFncy52YWx1ZXMoKSkKKysgICAgYXNzZXJ0IGFsbChpc2luc3RhbmNlKHYsIHR5cGUpIGZvciB2IGluIGxpc3QoZmxhZ3MudmFsdWVzKCkpKQorIAorICAgICBjbGFzcyBGbGFncyhvYmplY3QpOgorLSAgICAgICAgX19zbG90c19fID0gZmxhZ3Mua2V5cygpCisrICAgICAgICBfX3Nsb3RzX18gPSBsaXN0KGZsYWdzLmtleXMoKSkKKyAgICAgICAgIF9mbGFncyA9IGZsYWdzCisgCisgICAgICAgICBkZWYgdXBkYXRlKHNlbGYsICoqa3dhcmdzKToKKy0gICAgICAgICAgICBmb3IgaywgdiBpbiBrd2FyZ3MuaXRlcml0ZW1zKCk6CisrICAgICAgICAgICAgZm9yIGssIHYgaW4ga3dhcmdzLml0ZW1zKCk6CisgICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgaywgdikKKyAKKyAgICAgICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKK0BAIC0xMDA2LDggKzEwMTMsNiBAQCBkZWYgVHlwZWROYW1lZFR1cGxlKG5hbWUsIGZpZWxkcyk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2dvdCAlcywgZXhwZWN0ZWQgJXMnICUgKGZuYW1lLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHR5cGUodmFsdWUpLCBmdHlwZSkpCisgCistICAgICAgICAgICAgc3VwZXIoVHlwZWRUdXBsZSwgc2VsZikuX19pbml0X18oKmFyZ3MsICoqa3dhcmdzKQorLQorICAgICBUeXBlZFR1cGxlLl9maWVsZHMgPSBmaWVsZHMKKyAKKyAgICAgcmV0dXJuIFR5cGVkVHVwbGUKK0BAIC0xMDk5LDE0ICsxMTA0LDE0IEBAIGRlZiBncm91cF91bmlmaWVkX2ZpbGVzKGZpbGVzLCB1bmlmaWVkX3ByZWZpeCwgdW5pZmllZF9zdWZmaXgsCisgICAgICMgaXNzdWUuICBTbyB3ZSBkbyBhIGxpdHRsZSBkYW5jZSB0byBmaWx0ZXIgaXQgb3V0IG91cnNlbHZlcy4KKyAgICAgZHVtbXlfZmlsbF92YWx1ZSA9ICgiZHVtbXkiLCkKKyAgICAgZGVmIGZpbHRlcl9vdXRfZHVtbXkoaXRlcmFibGUpOgorLSAgICAgICAgcmV0dXJuIGl0ZXJ0b29scy5pZmlsdGVyKGxhbWJkYSB4OiB4ICE9IGR1bW15X2ZpbGxfdmFsdWUsCisrICAgICAgICByZXR1cm4gZmlsdGVyKGxhbWJkYSB4OiB4ICE9IGR1bW15X2ZpbGxfdmFsdWUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXRlcmFibGUpCisgCisgICAgICMgRnJvbSB0aGUgaXRlcnRvb2xzIGRvY3VtZW50YXRpb24sIHNsaWdodGx5IG1vZGlmaWVkOgorICAgICBkZWYgZ3JvdXBlcihuLCBpdGVyYWJsZSk6CisgICAgICAgICAiZ3JvdXBlcigzLCAnQUJDREVGRycsICd4JykgLS0+IEFCQyBERUYgR3h4IgorICAgICAgICAgYXJncyA9IFtpdGVyKGl0ZXJhYmxlKV0gKiBuCistICAgICAgICByZXR1cm4gaXRlcnRvb2xzLml6aXBfbG9uZ2VzdChmaWxsdmFsdWU9ZHVtbXlfZmlsbF92YWx1ZSwgKmFyZ3MpCisrICAgICAgICByZXR1cm4gaXRlcnRvb2xzLnppcF9sb25nZXN0KGZpbGx2YWx1ZT1kdW1teV9maWxsX3ZhbHVlLCAqYXJncykKKyAKKyAgICAgZm9yIGksIHVuaWZpZWRfZ3JvdXAgaW4gZW51bWVyYXRlKGdyb3VwZXIoZmlsZXNfcGVyX3VuaWZpZWRfZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZXMpKToKK0BAIC0xMTIzLDcgKzExMjgsNyBAQCBkZWYgcGFpcihpdGVyYWJsZSk6CisgICAgICAgICBbKDEsMiksICgzLDQpLCAoNSw2KV0KKyAgICAgJycnCisgICAgIGkgPSBpdGVyKGl0ZXJhYmxlKQorLSAgICByZXR1cm4gaXRlcnRvb2xzLml6aXBfbG9uZ2VzdChpLCBpKQorKyAgICByZXR1cm4gaXRlcnRvb2xzLnppcF9sb25nZXN0KGksIGkpCisgCisgCisgVkFSSUFCTEVTX1JFID0gcmUuY29tcGlsZSgnXCRcKChcdyspXCknKQorQEAgLTExNDEsNyArMTE0Niw3IEBAIGRlZiBleHBhbmRfdmFyaWFibGVzKHMsIHZhcmlhYmxlcyk6CisgICAgICAgICB2YWx1ZSA9IHZhcmlhYmxlcy5nZXQobmFtZSkKKyAgICAgICAgIGlmIG5vdCB2YWx1ZToKKyAgICAgICAgICAgICBjb250aW51ZQorLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UodmFsdWUsIHR5cGVzLlN0cmluZ1R5cGVzKToKKysgICAgICAgIGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCAoc3RyLCkpOgorICAgICAgICAgICAgIHZhbHVlID0gJyAnLmpvaW4odmFsdWUpCisgICAgICAgICByZXN1bHQgKz0gdmFsdWUKKyAgICAgcmV0dXJuIHJlc3VsdAorQEAgLTExNjgsNyArMTE3Myw3IEBAIGNsYXNzIEVudW1TdHJpbmdDb21wYXJpc29uRXJyb3IoRXhjZXB0aW9uKToKKyAgICAgcGFzcworIAorIAorLWNsYXNzIEVudW1TdHJpbmcodW5pY29kZSk6CisrY2xhc3MgRW51bVN0cmluZyhzdHIpOgorICAgICAnJydBIHN0cmluZyB0eXBlIHRoYXQgb25seSBjYW4gaGF2ZSBhIGxpbWl0ZWQgc2V0IG9mIHZhbHVlcywgc2ltaWxhcmx5IHRvCisgICAgIGFuIEVudW0sIGFuZCBjYW4gb25seSBiZSBjb21wYXJlZCBhZ2FpbnN0IHRoYXQgc2V0IG9mIHZhbHVlcy4KKyAKK0BAIC0xMTg1LDggKzExOTAsOCBAQCBjbGFzcyBFbnVtU3RyaW5nKHVuaWNvZGUpOgorICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIGlmIG90aGVyIG5vdCBpbiBzZWxmLlBPU1NJQkxFX1ZBTFVFUzoKKyAgICAgICAgICAgICByYWlzZSBFbnVtU3RyaW5nQ29tcGFyaXNvbkVycm9yKAorLSAgICAgICAgICAgICAgICAnQ2FuIG9ubHkgY29tcGFyZSB3aXRoICVzJworLSAgICAgICAgICAgICAgICAlICcsICcuam9pbigiJyVzJyIgJSB2IGZvciB2IGluIHNlbGYuUE9TU0lCTEVfVkFMVUVTKSkKKysgICAgICAgICAgICAgICAgJyVzIGlzIG5vdCBpbiAlcycKKysgICAgICAgICAgICAgICAgJSAob3RoZXIsICcsICcuam9pbigiJyVzJyIgJSB2IGZvciB2IGluIHNlbGYuUE9TU0lCTEVfVkFMVUVTKSkpCisgICAgICAgICByZXR1cm4gc3VwZXIoRW51bVN0cmluZywgc2VsZikuX19lcV9fKG90aGVyKQorIAorICAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKK0BAIC0xMjA0LDE0ICsxMjA5LDE0IEBAIGRlZiBfZXNjYXBlX2NoYXIoYyk6CisgICAgICMgcXVvdGluZyBjb3VsZCBiZSBkb25lIHdpdGggZWl0aGVyICcgb3IgIi4KKyAgICAgaWYgYyA9PSAiJyI6CisgICAgICAgICByZXR1cm4gIlxcJyIKKy0gICAgcmV0dXJuIHVuaWNvZGUoYy5lbmNvZGUoJ3VuaWNvZGVfZXNjYXBlJykpCisrICAgIHJldHVybiBzdHIoYy5lbmNvZGUoJ3VuaWNvZGVfZXNjYXBlJykpCisgCisgIyBNYXBwaW5nIHRhYmxlIGJldHdlZW4gcmF3IGNoYXJhY3RlcnMgYmVsb3cgXHg4MCBhbmQgdGhlaXIgZXNjYXBlZAorICMgY291bnRlcnBhcnQsIHdoZW4gdGhleSBkaWZmZXIKKyBfSU5ERU5URURfUkVQUl9UQUJMRSA9IHsKKyAgICAgYzogZQorICAgICBmb3IgYywgZSBpbiBtYXAobGFtYmRhIHg6ICh4LCBfZXNjYXBlX2NoYXIoeCkpLAorLSAgICAgICAgICAgICAgICAgICAgbWFwKHVuaWNociwgcmFuZ2UoMTI4KSkpCisrICAgICAgICAgICAgICAgICAgICBtYXAoY2hyLCByYW5nZSgxMjgpKSkKKyAgICAgaWYgYyAhPSBlCisgfQorICMgUmVnZXhwIG1hdGNoaW5nIGFsbCBjaGFyYWN0ZXJzIHRvIGVzY2FwZS4KK0BAIC0xMjE5LDcgKzEyMjQsMzMgQEAgX0lOREVOVEVEX1JFUFJfUkUgPSByZS5jb21waWxlKAorICAgICAnKFsnICsgJycuam9pbihfSU5ERU5URURfUkVQUl9UQUJMRS52YWx1ZXMoKSkgKyAnXSspJykKKyAKKyAKKysjIFN0b2xlbiBmcm9tIGdlY2tvIG1hc3RlciBbMV0KKysjIFsxXSBodHRwczovL2dpdGh1Yi5jb20vbW96aWxsYS9nZWNrby1kZXYvYmxvYi80MTY1YTJlODQzYzQ5NGJmYjNlMzVkOGExZmJmOWM2MTIwOWUzNjc1L3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC91dGlsLnB5I0wxMjg2CisrCisrIyBUaGUgZGVmYXVsdCBQcmV0dHlQcmludGVyIGhhcyBzb21lIGlzc3VlcyB3aXRoIFVURi04LCBzbyB3ZSBuZWVkIHRvIG92ZXJyaWRlCisrIyBzb21lIHN0dWZmIGhlcmUuCisrY2xhc3MgX1ByZXR0eVByaW50ZXIocHByaW50LlByZXR0eVByaW50ZXIpOgorKyAgICBkZWYgZm9ybWF0KHNlbGYsIG9iamVjdCwgY29udGV4dCwgbWF4bGV2ZWxzLCBsZXZlbCk6CisrICAgICAgICBpZiBub3QgKGlzaW5zdGFuY2Uob2JqZWN0LCBzaXgudGV4dF90eXBlKSBvcgorKyAgICAgICAgICAgICAgICBpc2luc3RhbmNlKG9iamVjdCwgc2l4LmJpbmFyeV90eXBlKSk6CisrICAgICAgICAgICAgcmV0dXJuIHN1cGVyKF9QcmV0dHlQcmludGVyLCBzZWxmKS5mb3JtYXQoCisrICAgICAgICAgICAgICAgIG9iamVjdCwgY29udGV4dCwgbWF4bGV2ZWxzLCBsZXZlbCkKKysgICAgICAgICMgVGhpcyBpcyBzdXBlciBoYWNreSBhbmQgd2VpcmQsIGJ1dCB0aGUgb3V0cHV0IG9mICdyZXByJyBhY3R1YWxseQorKyAgICAgICAgIyB2YXJpZXMgYmFzZWQgb24gdGhlIGRlZmF1bHQgSS9PIGVuY29kaW5nIG9mIHRoZSBwcm9jZXNzLCB3aGljaCBpc24ndAorKyAgICAgICAgIyBuZWNlc3NhcmlseSB1dGYtOC4gSW5zdGVhZCB3ZSBvcGVuIGEgbmV3IHNoZWxsIGFuZCBhc2sgd2hhdCB0aGUgcmVwcgorKyAgICAgICAgIyBXT1VMRCBiZSBhc3N1bWluZyB0aGUgZGVmYXVsdCBlbmNvZGluZyBpcyB1dGYtOC4gSWYgeW91IGNhbiBjb21lIHVwCisrICAgICAgICAjIHdpdGggYSBiZXR0ZXIgd2F5IG9mIGRvaW5nIHRoaXMgd2l0aG91dCBzaW1wbHkgcmUtaW1wbGVtZW50aW5nIHRoZQorKyAgICAgICAgIyBsb2dpYyBvZiAicmVwciIsIHBsZWFzZSByZXBsYWNlIHRoaXMuCisrICAgICAgICBlbnYgPSBkaWN0KG9zLmVudmlyb24pCisrICAgICAgICBlbnZbJ1BZVEhPTklPRU5DT0RJTkcnXSA9ICd1dGYtOCcKKysgICAgICAgIHJldCA9IHNpeC5lbnN1cmVfdGV4dChzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgKKysgICAgICAgICAgICBbc3lzLmV4ZWN1dGFibGVdLCBpbnB1dD0ncHJpbnQocmVwciglcykpJyAlIHJlcHIob2JqZWN0KSwKKysgICAgICAgICAgICB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSwgZW52PWVudiwgZW5jb2Rpbmc9J3V0Zi04JykpLnN0cmlwKCkKKysgICAgICAgIHJldHVybiAocmV0LCBUcnVlLCBGYWxzZSkKKysKKyBkZWYgaW5kZW50ZWRfcmVwcihvLCBpbmRlbnQ9NCk6CisrICAgIHJldHVybiBfUHJldHR5UHJpbnRlcihpbmRlbnQ9aW5kZW50KS5wZm9ybWF0KG8pCisrCisgICAgICcnJ1NpbWlsYXIgdG8gcmVwcigpLCBidXQgcmV0dXJucyBhbiBpbmRlbnRlZCByZXByZXNlbnRhdGlvbiBvZiB0aGUgb2JqZWN0CisgCisgICAgIE9uZSBub3RhYmxlIGRpZmZlcmVuY2Ugd2l0aCByZXByIGlzIHRoYXQgdGhlIHJldHVybmVkIHJlcHJlc2VudGF0aW9uCitAQCAtMTI0Miw3ICsxMjczLDcgQEAgZGVmIGluZGVudGVkX3JlcHIobywgaW5kZW50PTQpOgorICAgICAgICAgZWxpZiBpc2luc3RhbmNlKG8sIGJ5dGVzKToKKyAgICAgICAgICAgICB5aWVsZCAnYicKKyAgICAgICAgICAgICB5aWVsZCByZXByKG8pCistICAgICAgICBlbGlmIGlzaW5zdGFuY2UobywgdW5pY29kZSk6CisrICAgICAgICBlbGlmIGlzaW5zdGFuY2Uobywgc3RyKToKKyAgICAgICAgICAgICB5aWVsZCAiJyIKKyAgICAgICAgICAgICAjIFdlIHdhbnQgYSByZWFkYWJsZSBzdHJpbmcgKG5vbiBlc2NhcGVkIHVuaWNvZGUpLCBidXQgc29tZQorICAgICAgICAgICAgICMgc3BlY2lhbCBjaGFyYWN0ZXJzIG5lZWQgZXNjYXBpbmcgKGUuZy4gXG4sIFx0LCBldGMuKQorQEAgLTEyNzIsMTEgKzEzMDMsMTEgQEAgZGVmIGVuY29kZShvYmosIGVuY29kaW5nPSd1dGYtOCcpOgorICAgICBpZiBpc2luc3RhbmNlKG9iaiwgZGljdCk6CisgICAgICAgICByZXR1cm4geworICAgICAgICAgICAgIGVuY29kZShrLCBlbmNvZGluZyk6IGVuY29kZSh2LCBlbmNvZGluZykKKy0gICAgICAgICAgICBmb3IgaywgdiBpbiBvYmouaXRlcml0ZW1zKCkKKysgICAgICAgICAgICBmb3IgaywgdiBpbiBvYmouaXRlbXMoKQorICAgICAgICAgfQorICAgICBpZiBpc2luc3RhbmNlKG9iaiwgYnl0ZXMpOgorICAgICAgICAgcmV0dXJuIG9iagorLSAgICBpZiBpc2luc3RhbmNlKG9iaiwgdW5pY29kZSk6CisrICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBzdHIpOgorICAgICAgICAgcmV0dXJuIG9iai5lbmNvZGUoZW5jb2RpbmcpCisgICAgIGlmIGlzaW5zdGFuY2Uob2JqLCBJdGVyYWJsZSk6CisgICAgICAgICByZXR1cm4gW2VuY29kZShpLCBlbmNvZGluZykgZm9yIGkgaW4gb2JqXQorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC92aXJ0dWFsZW52LnB5IGIvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3ZpcnR1YWxlbnYucHkKK2luZGV4IDM4ZDA2ZDcxZC4uYzY3YzA0NmYzIDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21vemJ1aWxkL3ZpcnR1YWxlbnYucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pidWlsZC92aXJ0dWFsZW52LnB5CitAQCAtNTMxLDkgKzUzMSw5IEBAIGRlZiB2ZXJpZnlfcHl0aG9uX3ZlcnNpb24obG9nX2hhbmRsZSk6CisgCisgICAgIG91ciA9IExvb3NlVmVyc2lvbignJWQuJWQuJWQnICUgKG1ham9yLCBtaW5vciwgbWljcm8pKQorIAorLSAgICBpZiBtYWpvciAhPSBNSU5JTVVNX1BZVEhPTl9NQUpPUiBvciBvdXIgPCBNSU5JTVVNX1BZVEhPTl9WRVJTSU9OOgorLSAgICAgICAgbG9nX2hhbmRsZS53cml0ZSgnUHl0aG9uICVzIG9yIGdyZWF0ZXIgKGJ1dCBub3QgUHl0aG9uIDMpIGlzICcKKy0gICAgICAgICAgICAncmVxdWlyZWQgdG8gYnVpbGQuICcgJSBNSU5JTVVNX1BZVEhPTl9WRVJTSU9OKQorKyAgICBpZiBvdXIgPCBNSU5JTVVNX1BZVEhPTl9WRVJTSU9OOgorKyAgICAgICAgbG9nX2hhbmRsZS53cml0ZSgnUHl0aG9uICVzIG9yIGdyZWF0ZXIgaXMgcmVxdWlyZWQgdG8gYnVpbGQuICcKKysgICAgICAgICAgICAlIE1JTklNVU1fUFlUSE9OX1ZFUlNJT04pCisgICAgICAgICBsb2dfaGFuZGxlLndyaXRlKCdZb3UgYXJlIHJ1bm5pbmcgUHl0aG9uICVzLlxuJyAlIG91cikKKyAKKyAgICAgICAgIGlmIG9zLm5hbWUgaW4gKCdudCcsICdjZScpOgorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL2Nocm9tZS9tYW5pZmVzdC5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL2Nocm9tZS9tYW5pZmVzdC5weQoraW5kZXggYzkxYjk5Y2YxLi4wMmVhYzBkYmIgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96cGFjay9jaHJvbWUvbWFuaWZlc3QucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL2Nocm9tZS9tYW5pZmVzdC5weQorQEAgLTIsMTEgKzIsMTEgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKKyAjIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKKysKKyAKKyBpbXBvcnQgcmUKKyBpbXBvcnQgb3MKKy1mcm9tIHVybHBhcnNlIGltcG9ydCB1cmxwYXJzZQorK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZQorIGltcG9ydCBtb3pwYWNrLnBhdGggYXMgbW96cGF0aAorIGZyb20gbW96cGFjay5jaHJvbWUuZmxhZ3MgaW1wb3J0IEZsYWdzCisgZnJvbSBtb3pwYWNrLmVycm9ycyBpbXBvcnQgZXJyb3JzCitAQCAtMzE2LDcgKzMxNiw3IEBAIGNsYXNzIE1hbmlmZXN0Q29udHJhY3QoTWFuaWZlc3RFbnRyeSk6CisgICAgICAgICByZXR1cm4gc2VsZi5zZXJpYWxpemUoc2VsZi5jb250cmFjdElELCBzZWxmLmNpZCkKKyAKKyAjIEFsbCBtYW5pZmVzdCBjbGFzc2VzIGJ5IHRoZWlyIHR5cGUgbmFtZS4KKy1NQU5JRkVTVFNfVFlQRVMgPSBkaWN0KFsoYy50eXBlLCBjKSBmb3IgYyBpbiBnbG9iYWxzKCkudmFsdWVzKCkKKytNQU5JRkVTVFNfVFlQRVMgPSBkaWN0KFsoYy50eXBlLCBjKSBmb3IgYyBpbiBsaXN0KGdsb2JhbHMoKS52YWx1ZXMoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIHR5cGUoYykgPT0gdHlwZSBhbmQgaXNzdWJjbGFzcyhjLCBNYW5pZmVzdEVudHJ5KQorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGhhc2F0dHIoYywgJ3R5cGUnKSBhbmQgYy50eXBlXSkKKyAKK2RpZmYgLS1naXQgYS9weXRob24vbW96YnVpbGQvbW96cGFjay9jb3BpZXIucHkgYi9weXRob24vbW96YnVpbGQvbW96cGFjay9jb3BpZXIucHkKK2luZGV4IDFlNTIxZTUyYi4uNDNlZDliZTRhIDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21venBhY2svY29waWVyLnB5CisrKysgYi9weXRob24vbW96YnVpbGQvbW96cGFjay9jb3BpZXIucHkKK0BAIC0yLDcgKzIsNyBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcworICMgZmlsZSwgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorKworIAorIGltcG9ydCBvcworIGltcG9ydCBzdGF0CitAQCAtMTEzLDcgKzExMyw3IEBAIGNsYXNzIEZpbGVSZWdpc3RyeShvYmplY3QpOgorICAgICAgICAgJycnCisgICAgICAgICBSZXR1cm4gYWxsIHBhdGhzIHN0b3JlZCBpbiB0aGUgY29udGFpbmVyLCBpbiB0aGUgb3JkZXIgdGhleSB3ZXJlIGFkZGVkLgorICAgICAgICAgJycnCistICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXMua2V5cygpCisrICAgICAgICByZXR1cm4gbGlzdChzZWxmLl9maWxlcy5rZXlzKCkpCisgCisgICAgIGRlZiBfX2xlbl9fKHNlbGYpOgorICAgICAgICAgJycnCitAQCAtMTQ2LDcgKzE0Niw3IEBAIGNsYXNzIEZpbGVSZWdpc3RyeShvYmplY3QpOgorICAgICAgICAgICAgIGZvciBwYXRoLCBmaWxlIGluIHJlZ2lzdHJ5OgorICAgICAgICAgICAgICAgICAoLi4uKQorICAgICAgICAgJycnCistICAgICAgICByZXR1cm4gc2VsZi5fZmlsZXMuaXRlcml0ZW1zKCkKKysgICAgICAgIHJldHVybiBpdGVyKHNlbGYuX2ZpbGVzLml0ZW1zKCkpCisgCisgICAgIGRlZiByZXF1aXJlZF9kaXJlY3RvcmllcyhzZWxmKToKKyAgICAgICAgICcnJworQEAgLTE1NSw3ICsxNTUsNyBAQCBjbGFzcyBGaWxlUmVnaXN0cnkob2JqZWN0KToKKyAgICAgICAgIHVuc3BlY2lmaWVkICh2aXJ0dWFsKSByb290IGRpcmVjdG9yeSAoYW5kIGRvIG5vdCBpbmNsdWRlIHNhaWQgcm9vdAorICAgICAgICAgZGlyZWN0b3J5KS4KKyAgICAgICAgICcnJworLSAgICAgICAgcmV0dXJuIHNldChrIGZvciBrLCB2IGluIHNlbGYuX3JlcXVpcmVkX2RpcmVjdG9yaWVzLml0ZW1zKCkgaWYgdiA+IDApCisrICAgICAgICByZXR1cm4gc2V0KGsgZm9yIGssIHYgaW4gbGlzdChzZWxmLl9yZXF1aXJlZF9kaXJlY3Rvcmllcy5pdGVtcygpKSBpZiB2ID4gMCkKKyAKKyAgICAgZGVmIG91dHB1dF90b19pbnB1dHNfdHJlZShzZWxmKToKKyAgICAgICAgICcnJworQEAgLTI5NSw3ICsyOTUsNyBAQCBjbGFzcyBGaWxlQ29waWVyKEZpbGVSZWdpc3RyeSk6CisgCisgICAgICAgICBSZXR1cm5zIGEgRmlsZUNvcHlSZXN1bHQgdGhhdCBkZXRhaWxzIHdoYXQgY2hhbmdlZC4KKyAgICAgICAgICcnJworLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZGVzdGluYXRpb24sIGJhc2VzdHJpbmcpCisrICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkZXN0aW5hdGlvbiwgc3RyKQorICAgICAgICAgYXNzZXJ0IG5vdCBvcy5wYXRoLmV4aXN0cyhkZXN0aW5hdGlvbikgb3Igb3MucGF0aC5pc2RpcihkZXN0aW5hdGlvbikKKyAKKyAgICAgICAgIHJlc3VsdCA9IEZpbGVDb3B5UmVzdWx0KCkKK0BAIC01NjMsNyArNTYzLDcgQEAgY2xhc3MgSmFycmVyKEZpbGVSZWdpc3RyeSwgQmFzZUZpbGUpOgorICAgICAgICAgICAgIGRlZiBleGlzdHMoc2VsZik6CisgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLmRlZmxhdGVyIGlzIG5vdCBOb25lCisgCistICAgICAgICBpZiBpc2luc3RhbmNlKGRlc3QsIGJhc2VzdHJpbmcpOgorKyAgICAgICAgaWYgaXNpbnN0YW5jZShkZXN0LCBzdHIpOgorICAgICAgICAgICAgIGRlc3QgPSBEZXN0KGRlc3QpCisgICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkZXN0LCBEZXN0KQorIAorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL2ZpbGVzLnB5IGIvcHl0aG9uL21vemJ1aWxkL21venBhY2svZmlsZXMucHkKK2luZGV4IDhjZTM1MzM3NS4uYmYzNWUzOWI4IDEwMDY0NAorLS0tIGEvcHl0aG9uL21vemJ1aWxkL21venBhY2svZmlsZXMucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL2ZpbGVzLnB5CitAQCAtMiw3ICsyLDcgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMKKyAjIGZpbGUsIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKKysKKyAKKyBpbXBvcnQgZXJybm8KKyBpbXBvcnQgb3MKK0BAIC01Nyw3ICs1Nyw3IEBAIGVsc2U6CisgCisgICAgIGRlZiBfY29weWZpbGUoc3JjLCBkZXN0KToKKyAgICAgICAgICMgRmFsc2UgaW5kaWNhdGVzIGBkZXN0YCBzaG91bGQgYmUgb3ZlcndyaXR0ZW4gaWYgaXQgZXhpc3RzIGFscmVhZHkuCistICAgICAgICBpZiBpc2luc3RhbmNlKHNyYywgdW5pY29kZSkgYW5kIGlzaW5zdGFuY2UoZGVzdCwgdW5pY29kZSk6CisrICAgICAgICBpZiBpc2luc3RhbmNlKHNyYywgc3RyKSBhbmQgaXNpbnN0YW5jZShkZXN0LCBzdHIpOgorICAgICAgICAgICAgIF9Db3B5RmlsZVcoc3JjLCBkZXN0LCBGYWxzZSkKKyAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShzcmMsIHN0cikgYW5kIGlzaW5zdGFuY2UoZGVzdCwgc3RyKToKKyAgICAgICAgICAgICBfQ29weUZpbGVBKHNyYywgZGVzdCwgRmFsc2UpCitAQCAtMTY0LDcgKzE2NCw3IEBAIGNsYXNzIEJhc2VGaWxlKG9iamVjdCk6CisgICAgICAgICBkaXNhYmxlZCB3aGVuIHNraXBfaWZfb2xkZXIgaXMgRmFsc2UuCisgICAgICAgICBSZXR1cm5zIHdoZXRoZXIgYSBjb3B5IHdhcyBhY3R1YWxseSBwZXJmb3JtZWQgKFRydWUpIG9yIG5vdCAoRmFsc2UpLgorICAgICAgICAgJycnCistICAgICAgICBpZiBpc2luc3RhbmNlKGRlc3QsIGJhc2VzdHJpbmcpOgorKyAgICAgICAgaWYgaXNpbnN0YW5jZShkZXN0LCBzdHIpOgorICAgICAgICAgICAgIGRlc3QgPSBEZXN0KGRlc3QpCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRlc3QsIERlc3QpCitAQCAtMjc4LDExICsyNzgsMTEgQEAgY2xhc3MgRXhlY3V0YWJsZUZpbGUoRmlsZSk6CisgICAgICcnJworICAgICBkZWYgY29weShzZWxmLCBkZXN0LCBza2lwX2lmX29sZGVyPVRydWUpOgorICAgICAgICAgcmVhbF9kZXN0ID0gZGVzdAorLSAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoZGVzdCwgYmFzZXN0cmluZyk6CisrICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShkZXN0LCBzdHIpOgorICAgICAgICAgICAgIGZkLCBkZXN0ID0gbWtzdGVtcCgpCisgICAgICAgICAgICAgb3MuY2xvc2UoZmQpCisgICAgICAgICAgICAgb3MucmVtb3ZlKGRlc3QpCistICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkZXN0LCBiYXNlc3RyaW5nKQorKyAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZGVzdCwgc3RyKQorICAgICAgICAgIyBJZiBGaWxlLmNvcHkgZGlkbid0IGFjdHVhbGx5IGNvcHkgYmVjYXVzZSBkZXN0IGlzIG5ld2VyLCBjaGVjayB0aGUKKyAgICAgICAgICMgZmlsZSBzaXplcy4gSWYgZGVzdCBpcyBzbWFsbGVyLCBpdCBtZWFucyBpdCBpcyBhbHJlYWR5IHN0cmlwcGVkIGFuZAorICAgICAgICAgIyBlbGZoYWNrZWQsIHNvIHdlIGNhbiBza2lwLgorQEAgLTMxOSw3ICszMTksNyBAQCBjbGFzcyBBYnNvbHV0ZVN5bWxpbmtGaWxlKEZpbGUpOgorICAgICAgICAgRmlsZS5fX2luaXRfXyhzZWxmLCBwYXRoKQorIAorICAgICBkZWYgY29weShzZWxmLCBkZXN0LCBza2lwX2lmX29sZGVyPVRydWUpOgorLSAgICAgICAgYXNzZXJ0IGlzaW5zdGFuY2UoZGVzdCwgYmFzZXN0cmluZykKKysgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRlc3QsIHN0cikKKyAKKyAgICAgICAgICMgVGhlIGxvZ2ljIGluIHRoaXMgZnVuY3Rpb24gaXMgY29tcGxpY2F0ZWQgYnkgdGhlIGZhY3QgdGhhdCBzeW1saW5rcworICAgICAgICAgIyBhcmVuJ3QgdW5pdmVyc2FsbHkgc3VwcG9ydGVkLiBTbywgd2hlcmUgc3ltbGlua3MgYXJlbid0IHN1cHBvcnRlZCwgd2UKK0BAIC00MTAsNyArNDEwLDcgQEAgY2xhc3MgSGFyZGxpbmtGaWxlKEZpbGUpOgorICAgICAnJycKKyAKKyAgICAgZGVmIGNvcHkoc2VsZiwgZGVzdCwgc2tpcF9pZl9vbGRlcj1UcnVlKToKKy0gICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRlc3QsIGJhc2VzdHJpbmcpCisrICAgICAgICBhc3NlcnQgaXNpbnN0YW5jZShkZXN0LCBzdHIpCisgCisgICAgICAgICBpZiBub3QgaGFzYXR0cihvcywgJ2xpbmsnKToKKyAgICAgICAgICAgICByZXR1cm4gc3VwZXIoSGFyZGxpbmtGaWxlLCBzZWxmKS5jb3B5KAorQEAgLTQ3MSw3ICs0NzEsNyBAQCBjbGFzcyBFeGlzdGluZ0ZpbGUoQmFzZUZpbGUpOgorICAgICAgICAgc2VsZi5yZXF1aXJlZCA9IHJlcXVpcmVkCisgCisgICAgIGRlZiBjb3B5KHNlbGYsIGRlc3QsIHNraXBfaWZfb2xkZXI9VHJ1ZSk6CistICAgICAgICBpZiBpc2luc3RhbmNlKGRlc3QsIGJhc2VzdHJpbmcpOgorKyAgICAgICAgaWYgaXNpbnN0YW5jZShkZXN0LCBzdHIpOgorICAgICAgICAgICAgIGRlc3QgPSBEZXN0KGRlc3QpCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRlc3QsIERlc3QpCitAQCAtNTE3LDcgKzUxNyw3IEBAIGNsYXNzIFByZXByb2Nlc3NlZEZpbGUoQmFzZUZpbGUpOgorICAgICAgICAgJycnCisgICAgICAgICBJbnZva2VzIHRoZSBwcmVwcm9jZXNzb3IgdG8gY3JlYXRlIHRoZSBkZXN0aW5hdGlvbiBmaWxlLgorICAgICAgICAgJycnCistICAgICAgICBpZiBpc2luc3RhbmNlKGRlc3QsIGJhc2VzdHJpbmcpOgorKyAgICAgICAgaWYgaXNpbnN0YW5jZShkZXN0LCBzdHIpOgorICAgICAgICAgICAgIGRlc3QgPSBEZXN0KGRlc3QpCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRlc3QsIERlc3QpCitAQCAtNjU3LDcgKzY1Nyw3IEBAIGNsYXNzIFhQVEZpbGUoR2VuZXJhdGVkRmlsZSk6CisgICAgICAgICB0aGUgaW5kaXZpZHVhbCBYUFRzIHRvIGxpbmsuCisgICAgICAgICBza2lwX2lmX29sZGVyIGlzIGlnbm9yZWQuCisgICAgICAgICAnJycKKy0gICAgICAgIGlmIGlzaW5zdGFuY2UoZGVzdCwgYmFzZXN0cmluZyk6CisrICAgICAgICBpZiBpc2luc3RhbmNlKGRlc3QsIHN0cik6CisgICAgICAgICAgICAgZGVzdCA9IERlc3QoZGVzdCkKKyAgICAgICAgIGFzc2VydCBpc2luc3RhbmNlKGRlc3QsIERlc3QpCisgCitAQCAtMTEwOCw3ICsxMTA4LDcgQEAgY2xhc3MgQ29tcG9zZWRGaW5kZXIoQmFzZUZpbmRlcik6CisgICAgICAgICBmcm9tIG1venBhY2suY29waWVyIGltcG9ydCBGaWxlUmVnaXN0cnkKKyAgICAgICAgIHNlbGYuZmlsZXMgPSBGaWxlUmVnaXN0cnkoKQorIAorLSAgICAgICAgZm9yIGJhc2UsIGZpbmRlciBpbiBzb3J0ZWQoZmluZGVycy5pdGVyaXRlbXMoKSk6CisrICAgICAgICBmb3IgYmFzZSwgZmluZGVyIGluIHNvcnRlZChmaW5kZXJzLml0ZW1zKCkpOgorICAgICAgICAgICAgIGlmIHNlbGYuZmlsZXMuY29udGFpbnMoYmFzZSk6CisgICAgICAgICAgICAgICAgIHNlbGYuZmlsZXMucmVtb3ZlKGJhc2UpCisgICAgICAgICAgICAgZm9yIHAsIGYgaW4gZmluZGVyLmZpbmQoJycpOgorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL21hbmlmZXN0cy5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL21hbmlmZXN0cy5weQoraW5kZXggMjdjNjY2MzRiLi5mNzliNDAwODYgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96cGFjay9tYW5pZmVzdHMucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL21hbmlmZXN0cy5weQorQEAgLTIsOCArMiw2IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCB1bmljb2RlX2xpdGVyYWxzCistCisgZnJvbSBjb250ZXh0bGliIGltcG9ydCBjb250ZXh0bWFuYWdlcgorIGltcG9ydCBqc29uCisgCitAQCAtMTE2LDcgKzExNCw3IEBAIGNsYXNzIEluc3RhbGxNYW5pZmVzdChvYmplY3QpOgorICAgICAgICAgc2VsZi5fc291cmNlX2ZpbGVzID0gc2V0KCkKKyAKKyAgICAgICAgIGlmIHBhdGggb3IgZmlsZW9iajoKKy0gICAgICAgICAgICB3aXRoIF9hdXRvX2ZpbGVvYmoocGF0aCwgZmlsZW9iaiwgJ3JiJykgYXMgZmg6CisrICAgICAgICAgICAgd2l0aCBfYXV0b19maWxlb2JqKHBhdGgsIGZpbGVvYmosICdyJykgYXMgZmg6CisgICAgICAgICAgICAgICAgIHNlbGYuX3NvdXJjZV9maWxlcy5hZGQoZmgubmFtZSkKKyAgICAgICAgICAgICAgICAgc2VsZi5fbG9hZF9mcm9tX2ZpbGVvYmooZmgpCisgCitAQCAtMTc1LDcgKzE3Myw3IEBAIGNsYXNzIEluc3RhbGxNYW5pZmVzdChvYmplY3QpOgorICAgICAgICAgICAgICAgICBkZXN0LCBjb250ZW50ID0gZmllbGRzWzE6XQorIAorICAgICAgICAgICAgICAgICBzZWxmLmFkZF9jb250ZW50KAorLSAgICAgICAgICAgICAgICAgICAgc2VsZi5fZGVjb2RlX2ZpZWxkX2VudHJ5KGNvbnRlbnQpLmVuY29kZSgndXRmLTgnKSwgZGVzdCkKKysgICAgICAgICAgICAgICAgICAgIHNlbGYuX2RlY29kZV9maWVsZF9lbnRyeShjb250ZW50KSwgZGVzdCkKKyAgICAgICAgICAgICAgICAgY29udGludWUKKyAKKyAgICAgICAgICAgICAjIERvbid0IGZhaWwgZm9yIG5vbi1hY3Rpb25hYmxlIGl0ZW1zLCBhbGxvd2luZworQEAgLTIyOCw3ICsyMjYsNyBAQCBjbGFzcyBJbnN0YWxsTWFuaWZlc3Qob2JqZWN0KToKKyAKKyAgICAgICAgIEl0IGlzIGFuIGVycm9yIGlmIGJvdGggYXJlIHNwZWNpZmllZC4KKyAgICAgICAgICIiIgorLSAgICAgICAgd2l0aCBfYXV0b19maWxlb2JqKHBhdGgsIGZpbGVvYmosICd3YicpIGFzIGZoOgorKyAgICAgICAgd2l0aCBfYXV0b19maWxlb2JqKHBhdGgsIGZpbGVvYmosICd3JykgYXMgZmg6CisgICAgICAgICAgICAgZmgud3JpdGUoJyVkXG4nICUgc2VsZi5DVVJSRU5UX1ZFUlNJT04pCisgCisgICAgICAgICAgICAgZm9yIGRlc3QgaW4gc29ydGVkKHNlbGYuX2Rlc3RzKToKK0BAIC0yNDIsMTMgKzI0MCwxMSBAQCBjbGFzcyBJbnN0YWxsTWFuaWZlc3Qob2JqZWN0KToKKyAgICAgICAgICAgICAgICAgICAgIGZvciBwYXRoIGluIHBhdGhzOgorICAgICAgICAgICAgICAgICAgICAgICAgIHNvdXJjZSA9IG1venBhdGguam9pbihiYXNlLCBwYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzID0gWyclZCcgJSB0eXBlLCBtb3pwYXRoLmpvaW4oZGVzdCwgcGF0aCksIHNvdXJjZV0KKy0gICAgICAgICAgICAgICAgICAgICAgICBmaC53cml0ZSgnJXNcbicgJSBzZWxmLkZJRUxEX1NFUEFSQVRPUi5qb2luKAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwLmVuY29kZSgndXRmLTgnKSBmb3IgcCBpbiBwYXJ0cykpCisrICAgICAgICAgICAgICAgICAgICAgICAgZmgud3JpdGUoJyVzXG4nICUgc2VsZi5GSUVMRF9TRVBBUkFUT1Iuam9pbihwYXJ0cykpCisgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICBwYXJ0cyA9IFsnJWQnICUgZW50cnlbMF0sIGRlc3RdCisgICAgICAgICAgICAgICAgICAgICBwYXJ0cy5leHRlbmQoZW50cnlbMTpdKQorLSAgICAgICAgICAgICAgICAgICAgZmgud3JpdGUoJyVzXG4nICUgc2VsZi5GSUVMRF9TRVBBUkFUT1Iuam9pbigKKy0gICAgICAgICAgICAgICAgICAgICAgICBwLmVuY29kZSgndXRmLTgnKSBmb3IgcCBpbiBwYXJ0cykpCisrICAgICAgICAgICAgICAgICAgICBmaC53cml0ZSgnJXNcbicgJSBzZWxmLkZJRUxEX1NFUEFSQVRPUi5qb2luKHBhcnRzKSkKKyAKKyAgICAgZGVmIGFkZF9saW5rKHNlbGYsIHNvdXJjZSwgZGVzdCk6CisgICAgICAgICAiIiJBZGQgYSBsaW5rIHRvIHRoaXMgbWFuaWZlc3QuCitAQCAtNDM5LDcgKzQzNSw3IEBAIGNsYXNzIEluc3RhbGxNYW5pZmVzdChvYmplY3QpOgorICAgICAgICAgICAgIGlmIGluc3RhbGxfdHlwZSA9PSBzZWxmLkNPTlRFTlQ6CisgICAgICAgICAgICAgICAgICMgR2VuZXJhdGVkRmlsZSBleHBlY3QgdGhlIGJ1ZmZlciBpbnRlcmZhY2UsIHdoaWNoIHRoZSB1bmljb2RlCisgICAgICAgICAgICAgICAgICMgdHlwZSBkb2Vzbid0IGhhdmUsIHNvIGVuY29kZSB0byBhIHN0ci4KKy0gICAgICAgICAgICAgICAgY29udGVudCA9IHNlbGYuX2RlY29kZV9maWVsZF9lbnRyeShlbnRyeVsxXSkuZW5jb2RlKCd1dGYtOCcpCisrICAgICAgICAgICAgICAgIGNvbnRlbnQgPSBzZWxmLl9kZWNvZGVfZmllbGRfZW50cnkoZW50cnlbMV0pCisgICAgICAgICAgICAgICAgIHJlZ2lzdHJ5LmFkZChkZXN0LCBHZW5lcmF0ZWRGaWxlKGNvbnRlbnQpKQorICAgICAgICAgICAgICAgICBjb250aW51ZQorIAorZGlmZiAtLWdpdCBhL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL21vemphci5weSBiL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL21vemphci5weQoraW5kZXggYTcyM2ZkMmMwLi4wYjA0ZDIzM2MgMTAwNjQ0CistLS0gYS9weXRob24vbW96YnVpbGQvbW96cGFjay9tb3pqYXIucHkKKysrKyBiL3B5dGhvbi9tb3pidWlsZC9tb3pwYWNrL21vemphci5weQorQEAgLTIsNyArMiw3IEBACisgIyBMaWNlbnNlLCB2LiAyLjAuIElmIGEgY29weSBvZiB0aGUgTVBMIHdhcyBub3QgZGlzdHJpYnV0ZWQgd2l0aCB0aGlzCisgIyBmaWxlLCBZb3UgY2FuIG9idGFpbiBvbmUgYXQgaHR0cDovL21vemlsbGEub3JnL01QTC8yLjAvLgorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0CisrCisgCisgZnJvbSBpbyBpbXBvcnQgQnl0ZXNJTworIGltcG9ydCBzdHJ1Y3QKK0BAIC0xNCw5ICsxNCwxMCBAQCBmcm9tIHppcGZpbGUgaW1wb3J0ICgKKyAgICAgWklQX0RFRkxBVEVELAorICkKKyBmcm9tIGNvbGxlY3Rpb25zIGltcG9ydCBPcmRlcmVkRGljdAorLWZyb20gdXJscGFyc2UgaW1wb3J0IHVybHBhcnNlLCBQYXJzZVJlc3VsdAorK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCB1cmxwYXJzZSwgUGFyc2VSZXN1bHQKKyBpbXBvcnQgbW96cGFjay5wYXRoIGFzIG1venBhdGgKKyBmcm9tIG1vemJ1aWxkLnV0aWwgaW1wb3J0IG1lbW9pemUKKytmcm9tIGZ1bmN0b29scyBpbXBvcnQgcmVkdWNlCisgCisgCisgSkFSX1NUT1JFRCA9IFpJUF9TVE9SRUQKK0BAIC03Miw3ICs3Myw3IEBAIGNsYXNzIEphclN0cnVjdChvYmplY3QpOgorICAgICAgICAgYW4gaW5zdGFuY2Ugd2l0aCBlbXB0eSBmaWVsZHMuCisgICAgICAgICAnJycKKyAgICAgICAgIGFzc2VydCBzZWxmLk1BR0lDIGFuZCBpc2luc3RhbmNlKHNlbGYuU1RSVUNULCBPcmRlcmVkRGljdCkKKy0gICAgICAgIHNlbGYuc2l6ZV9maWVsZHMgPSBzZXQodCBmb3IgdCBpbiBzZWxmLlNUUlVDVC5pdGVydmFsdWVzKCkKKysgICAgICAgIHNlbGYuc2l6ZV9maWVsZHMgPSBzZXQodCBmb3IgdCBpbiBzZWxmLlNUUlVDVC52YWx1ZXMoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgdCBpbiBKYXJTdHJ1Y3QuVFlQRV9NQVBQSU5HKQorICAgICAgICAgc2VsZi5fdmFsdWVzID0ge30KKyAgICAgICAgIGlmIGRhdGE6CitAQCAtOTQsNyArOTUsNyBAQCBjbGFzcyBKYXJTdHJ1Y3Qob2JqZWN0KToKKyAgICAgICAgICMgRm9yIGFsbCBmaWVsZHMgdXNlZCBhcyBvdGhlciBmaWVsZHMgc2l6ZXMsIGtlZXAgdHJhY2sgb2YgdGhlaXIgdmFsdWUKKyAgICAgICAgICMgc2VwYXJhdGVseS4KKyAgICAgICAgIHNpemVzID0gZGljdCgodCwgMCkgZm9yIHQgaW4gc2VsZi5zaXplX2ZpZWxkcykKKy0gICAgICAgIGZvciBuYW1lLCB0IGluIHNlbGYuU1RSVUNULml0ZXJpdGVtcygpOgorKyAgICAgICAgZm9yIG5hbWUsIHQgaW4gc2VsZi5TVFJVQ1QuaXRlbXMoKToKKyAgICAgICAgICAgICBpZiB0IGluIEphclN0cnVjdC5UWVBFX01BUFBJTkc6CisgICAgICAgICAgICAgICAgIHZhbHVlLCBzaXplID0gSmFyU3RydWN0LmdldF9kYXRhKHQsIGRhdGFbb2Zmc2V0Ol0pCisgICAgICAgICAgICAgZWxzZToKK0BAIC0xMTMsNyArMTE0LDcgQEAgY2xhc3MgSmFyU3RydWN0KG9iamVjdCk6CisgICAgICAgICBJbml0aWFsaXplIGFuIGluc3RhbmNlIHdpdGggZW1wdHkgZmllbGRzLgorICAgICAgICAgJycnCisgICAgICAgICBzZWxmLnNpZ25hdHVyZSA9IHNlbGYuTUFHSUMKKy0gICAgICAgIGZvciBuYW1lLCB0IGluIHNlbGYuU1RSVUNULml0ZXJpdGVtcygpOgorKyAgICAgICAgZm9yIG5hbWUsIHQgaW4gc2VsZi5TVFJVQ1QuaXRlbXMoKToKKyAgICAgICAgICAgICBpZiBuYW1lIGluIHNlbGYuc2l6ZV9maWVsZHM6CisgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgc2VsZi5fdmFsdWVzW25hbWVdID0gMCBpZiB0IGluIEphclN0cnVjdC5UWVBFX01BUFBJTkcgZWxzZSAnJworQEAgLTEzOCw5ICsxMzksOSBAQCBjbGFzcyBKYXJTdHJ1Y3Qob2JqZWN0KToKKyAgICAgICAgIGZyb20gc2VsZi5TVFJVQ1QuCisgICAgICAgICAnJycKKyAgICAgICAgIHNlcmlhbGl6ZWQgPSBzdHJ1Y3QucGFjaygnPEknLCBzZWxmLnNpZ25hdHVyZSkKKy0gICAgICAgIHNpemVzID0gZGljdCgodCwgbmFtZSkgZm9yIG5hbWUsIHQgaW4gc2VsZi5TVFJVQ1QuaXRlcml0ZW1zKCkKKysgICAgICAgIHNpemVzID0gZGljdCgodCwgbmFtZSkgZm9yIG5hbWUsIHQgaW4gc2VsZi5TVFJVQ1QuaXRlbXMoKQorICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCB0IGluIEphclN0cnVjdC5UWVBFX01BUFBJTkcpCistICAgICAgICBmb3IgbmFtZSwgdCBpbiBzZWxmLlNUUlVDVC5pdGVyaXRlbXMoKToKKysgICAgICAgIGZvciBuYW1lLCB0IGluIHNlbGYuU1RSVUNULml0ZW1zKCk6CisgICAgICAgICAgICAgaWYgdCBpbiBKYXJTdHJ1Y3QuVFlQRV9NQVBQSU5HOgorICAgICAgICAgICAgICAgICBmb3JtYXQsIHNpemUgPSBKYXJTdHJ1Y3QuVFlQRV9NQVBQSU5HW3RdCisgICAgICAgICAgICAgICAgIGlmIG5hbWUgaW4gc2l6ZXM6CitAQCAtMTU5LDcgKzE2MCw3IEBAIGNsYXNzIEphclN0cnVjdChvYmplY3QpOgorICAgICAgICAgdmFyaWFibGUgbGVuZ3RoIGZpZWxkcy4KKyAgICAgICAgICcnJworICAgICAgICAgc2l6ZSA9IEphclN0cnVjdC5UWVBFX01BUFBJTkdbJ3VpbnQzMiddWzFdCistICAgICAgICBmb3IgbmFtZSwgdHlwZSBpbiBzZWxmLlNUUlVDVC5pdGVyaXRlbXMoKToKKysgICAgICAgIGZvciBuYW1lLCB0eXBlIGluIHNlbGYuU1RSVUNULml0ZW1zKCk6CisgICAgICAgICAgICAgaWYgdHlwZSBpbiBKYXJTdHJ1Y3QuVFlQRV9NQVBQSU5HOgorICAgICAgICAgICAgICAgICBzaXplICs9IEphclN0cnVjdC5UWVBFX01BUFBJTkdbdHlwZV1bMV0KKyAgICAgICAgICAgICBlbHNlOgorQEAgLTE4MCw3ICsxODEsNyBAQCBjbGFzcyBKYXJTdHJ1Y3Qob2JqZWN0KToKKyAgICAgICAgIHJldHVybiBrZXkgaW4gc2VsZi5fdmFsdWVzCisgCisgICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKy0gICAgICAgIHJldHVybiBzZWxmLl92YWx1ZXMuaXRlcml0ZW1zKCkKKysgICAgICAgIHJldHVybiBpdGVyKHNlbGYuX3ZhbHVlcy5pdGVtcygpKQorIAorICAgICBkZWYgX19yZXByX18oc2VsZik6CisgICAgICAgICByZXR1cm4gIjwlcyAlcz4iICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLAorQEAgLTM3NCw3ICszNzUsNyBAQCBjbGFzcyBKYXJSZWFkZXIob2JqZWN0KToKKyAgICAgICAgIGVudHJpZXMgPSBzZWxmLmVudHJpZXMKKyAgICAgICAgIGlmIG5vdCBlbnRyaWVzOgorICAgICAgICAgICAgIHJldHVybiBKQVJfU1RPUkVECistICAgICAgICByZXR1cm4gbWF4KGZbJ2NvbXByZXNzaW9uJ10gZm9yIGYgaW4gZW50cmllcy5pdGVydmFsdWVzKCkpCisrICAgICAgICByZXR1cm4gbWF4KGZbJ2NvbXByZXNzaW9uJ10gZm9yIGYgaW4gZW50cmllcy52YWx1ZXMoKSkKKyAKKyAgICAgQHByb3BlcnR5CisgICAgIGRlZiBlbnRyaWVzKHNlbGYpOgorQEAgLTM5MCw3ICszOTEsNyBAQCBjbGFzcyBKYXJSZWFkZXIob2JqZWN0KToKKyAgICAgICAgICAgICBwcmVsb2FkID0gSmFyU3RydWN0LmdldF9kYXRhKCd1aW50MzInLCBzZWxmLl9kYXRhKVswXQorICAgICAgICAgZW50cmllcyA9IE9yZGVyZWREaWN0KCkKKyAgICAgICAgIG9mZnNldCA9IHNlbGYuX2NkaXJfZW5kWydjZGlyX29mZnNldCddCistICAgICAgICBmb3IgZSBpbiB4cmFuZ2Uoc2VsZi5fY2Rpcl9lbmRbJ2NkaXJfZW50cmllcyddKToKKysgICAgICAgIGZvciBlIGluIHJhbmdlKHNlbGYuX2NkaXJfZW5kWydjZGlyX2VudHJpZXMnXSk6CisgICAgICAgICAgICAgZW50cnkgPSBKYXJDZGlyRW50cnkoc2VsZi5fZGF0YVtvZmZzZXQ6XSkKKyAgICAgICAgICAgICBvZmZzZXQgKz0gZW50cnkuc2l6ZQorICAgICAgICAgICAgICMgQ3JlYXRvciBob3N0IHN5c3RlbS4gMCBpcyBNU0RPUywgMyBpcyBVbml4CitAQCAtNDUyLDcgKzQ1Myw3IEBAIGNsYXNzIEphclJlYWRlcihvYmplY3QpOgorICAgICAgICAgICAgIGZvciBmaWxlIGluIGphclJlYWRlcjoKKyAgICAgICAgICAgICAgICAgLi4uCisgICAgICAgICAnJycKKy0gICAgICAgIGZvciBlbnRyeSBpbiBzZWxmLmVudHJpZXMuaXRlcnZhbHVlcygpOgorKyAgICAgICAgZm9yIGVudHJ5IGluIHNlbGYuZW50cmllcy52YWx1ZXMoKToKKyAgICAgICAgICAgICB5aWVsZCBzZWxmLl9nZXRyZWFkZXIoZW50cnkpCisgCisgICAgIGRlZiBfX2dldGl0ZW1fXyhzZWxmLCBuYW1lKToKK0BAIC01NDcsNyArNTQ4LDcgQEAgY2xhc3MgSmFyV3JpdGVyKG9iamVjdCk6CisgICAgICAgICBoZWFkZXJzID0ge30KKyAgICAgICAgIHByZWxvYWRfc2l6ZSA9IDAKKyAgICAgICAgICMgUHJlcGFyZSBjZW50cmFsIGRpcmVjdG9yeSBlbnRyaWVzCistICAgICAgICBmb3IgZW50cnksIGNvbnRlbnQgaW4gc2VsZi5fY29udGVudHMuaXRlcnZhbHVlcygpOgorKyAgICAgICAgZm9yIGVudHJ5LCBjb250ZW50IGluIHNlbGYuX2NvbnRlbnRzLnZhbHVlcygpOgorICAgICAgICAgICAgIGhlYWRlciA9IEphckxvY2FsRmlsZUhlYWRlcigpCisgICAgICAgICAgICAgZm9yIG5hbWUgaW4gZW50cnkuU1RSVUNUOgorICAgICAgICAgICAgICAgICBpZiBuYW1lIGluIGhlYWRlcjoKK0BAIC01NjIsNyArNTYzLDcgQEAgY2xhc3MgSmFyV3JpdGVyKG9iamVjdCk6CisgICAgICAgICBlbmRbJ2Rpc2tfZW50cmllcyddID0gbGVuKHNlbGYuX2NvbnRlbnRzKQorICAgICAgICAgZW5kWydjZGlyX2VudHJpZXMnXSA9IGVuZFsnZGlza19lbnRyaWVzJ10KKyAgICAgICAgIGVuZFsnY2Rpcl9zaXplJ10gPSByZWR1Y2UobGFtYmRhIHgsIHk6IHggKyB5WzBdLnNpemUsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2NvbnRlbnRzLnZhbHVlcygpLCAwKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaXN0KHNlbGYuX2NvbnRlbnRzLnZhbHVlcygpKSwgMCkKKyAgICAgICAgICMgT24gb3B0aW1pemVkIGFyY2hpdmVzLCBzdG9yZSB0aGUgcHJlbG9hZGVkIHNpemUgYW5kIHRoZSBjZW50cmFsCisgICAgICAgICAjIGRpcmVjdG9yeSBlbnRyaWVzLCBmb2xsb3dlZCBieSB0aGUgZmlyc3QgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5LgorICAgICAgICAgaWYgc2VsZi5fb3B0aW1pemU6CitAQCAtNTcxLDE4ICs1NzIsMTggQEAgY2xhc3MgSmFyV3JpdGVyKG9iamVjdCk6CisgICAgICAgICAgICAgaWYgcHJlbG9hZF9zaXplOgorICAgICAgICAgICAgICAgICBwcmVsb2FkX3NpemUgKz0gb2Zmc2V0CisgICAgICAgICAgICAgc2VsZi5fZGF0YS53cml0ZShzdHJ1Y3QucGFjaygnPEknLCBwcmVsb2FkX3NpemUpKQorLSAgICAgICAgICAgIGZvciBlbnRyeSwgXyBpbiBzZWxmLl9jb250ZW50cy5pdGVydmFsdWVzKCk6CisrICAgICAgICAgICAgZm9yIGVudHJ5LCBfIGluIHNlbGYuX2NvbnRlbnRzLnZhbHVlcygpOgorICAgICAgICAgICAgICAgICBlbnRyeVsnb2Zmc2V0J10gKz0gb2Zmc2V0CisgICAgICAgICAgICAgICAgIHNlbGYuX2RhdGEud3JpdGUoZW50cnkuc2VyaWFsaXplKCkpCisgICAgICAgICAgICAgc2VsZi5fZGF0YS53cml0ZShlbmQuc2VyaWFsaXplKCkpCisgICAgICAgICAjIFN0b3JlIGxvY2FsIGZpbGUgZW50cmllcyBmb2xsb3dlZCBieSBjb21wcmVzc2VkIGRhdGEKKy0gICAgICAgIGZvciBlbnRyeSwgY29udGVudCBpbiBzZWxmLl9jb250ZW50cy5pdGVydmFsdWVzKCk6CisrICAgICAgICBmb3IgZW50cnksIGNvbnRlbnQgaW4gc2VsZi5fY29udGVudHMudmFsdWVzKCk6CisgICAgICAgICAgICAgc2VsZi5fZGF0YS53cml0ZShoZWFkZXJzW2VudHJ5XS5zZXJpYWxpemUoKSkKKyAgICAgICAgICAgICBzZWxmLl9kYXRhLndyaXRlKGNvbnRlbnQpCisgICAgICAgICAjIE9uIG5vbiBvcHRpbWl6ZWQgYXJjaGl2ZXMsIHN0b3JlIHRoZSBjZW50cmFsIGRpcmVjdG9yeSBlbnRyaWVzLgorICAgICAgICAgaWYgbm90IHNlbGYuX29wdGltaXplOgorICAgICAgICAgICAgIGVuZFsnY2Rpcl9vZmZzZXQnXSA9IG9mZnNldAorLSAgICAgICAgICAgIGZvciBlbnRyeSwgXyBpbiBzZWxmLl9jb250ZW50cy5pdGVydmFsdWVzKCk6CisrICAgICAgICAgICAgZm9yIGVudHJ5LCBfIGluIHNlbGYuX2NvbnRlbnRzLnZhbHVlcygpOgorICAgICAgICAgICAgICAgICBzZWxmLl9kYXRhLndyaXRlKGVudHJ5LnNlcmlhbGl6ZSgpKQorICAgICAgICAgIyBTdG9yZSB0aGUgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5LgorICAgICAgICAgc2VsZi5fZGF0YS53cml0ZShlbmQuc2VyaWFsaXplKCkpCitAQCAtNjIyLDcgKzYyMyw3IEBAIGNsYXNzIEphcldyaXRlcihvYmplY3QpOgorICAgICAgICAgICAgIGRlZmxhdGVyID0gZGF0YQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICBkZWZsYXRlciA9IERlZmxhdGVyKGNvbXByZXNzLCBjb21wcmVzc19sZXZlbD1zZWxmLl9jb21wcmVzc19sZXZlbCkKKy0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKGRhdGEsIGJhc2VzdHJpbmcpOgorKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZGF0YSwgc3RyKToKKyAgICAgICAgICAgICAgICAgZGVmbGF0ZXIud3JpdGUoZGF0YSkKKyAgICAgICAgICAgICBlbGlmIGhhc2F0dHIoZGF0YSwgJ3JlYWQnKToKKyAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihkYXRhLCAnc2VlaycpOgorZGlmZiAtLWdpdCBhL3Rlc3RpbmcvbW96YmFzZS9tYW5pZmVzdHBhcnNlci9tYW5pZmVzdHBhcnNlci9pbmkucHkgYi90ZXN0aW5nL21vemJhc2UvbWFuaWZlc3RwYXJzZXIvbWFuaWZlc3RwYXJzZXIvaW5pLnB5CitpbmRleCBlNWJhMjQ5YzEuLmMxNDFhMThiNyAxMDA2NDQKKy0tLSBhL3Rlc3RpbmcvbW96YmFzZS9tYW5pZmVzdHBhcnNlci9tYW5pZmVzdHBhcnNlci9pbmkucHkKKysrKyBiL3Rlc3RpbmcvbW96YmFzZS9tYW5pZmVzdHBhcnNlci9tYW5pZmVzdHBhcnNlci9pbmkucHkKK0BAIC0yLDcgKzIsNyBAQAorICMgTGljZW5zZSwgdi4gMi4wLiBJZiBhIGNvcHkgb2YgdGhlIE1QTCB3YXMgbm90IGRpc3RyaWJ1dGVkIHdpdGggdGhpcyBmaWxlLAorICMgWW91IGNhbiBvYnRhaW4gb25lIGF0IGh0dHA6Ly9tb3ppbGxhLm9yZy9NUEwvMi4wLy4KKyAKKy1mcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorKworIAorIGltcG9ydCBvcworIGltcG9ydCBzeXMKK0BAIC0xMiw3ICsxMiw3IEBAIF9fYWxsX18gPSBbJ3JlYWRfaW5pJywgJ2NvbWJpbmVfZmllbGRzJ10KKyAKKyBjbGFzcyBJbmlQYXJzZUVycm9yKEV4Y2VwdGlvbik6CisgICAgIGRlZiBfX2luaXRfXyhzZWxmLCBmcCwgbGluZW51bSwgbXNnKToKKy0gICAgICAgIGlmIGlzaW5zdGFuY2UoZnAsIGJhc2VzdHJpbmcpOgorKyAgICAgICAgaWYgaXNpbnN0YW5jZShmcCwgc3RyKToKKyAgICAgICAgICAgICBwYXRoID0gZnAKKyAgICAgICAgIGVsaWYgaGFzYXR0cihmcCwgJ25hbWUnKToKKyAgICAgICAgICAgICBwYXRoID0gZnAubmFtZQorQEAgLTQzLDEyICs0MywxNSBAQCBkZWYgcmVhZF9pbmkoZnAsIHZhcmlhYmxlcz1Ob25lLCBkZWZhdWx0PSdERUZBVUxUJywgZGVmYXVsdHNfb25seT1GYWxzZSwKKyAgICAgc2VjdGlvbnMgPSBbXQorICAgICBrZXkgPSB2YWx1ZSA9IE5vbmUKKyAgICAgc2VjdGlvbl9uYW1lcyA9IHNldCgpCistICAgIGlmIGlzaW5zdGFuY2UoZnAsIGJhc2VzdHJpbmcpOgorKyAgICBpZiBpc2luc3RhbmNlKGZwLCBzdHIpOgorICAgICAgICAgZnAgPSBmaWxlKGZwKQorIAorICAgICAjIHJlYWQgdGhlIGxpbmVzCisgICAgIGZvciAobGluZW51bSwgbGluZSkgaW4gZW51bWVyYXRlKGZwLnJlYWQoKS5zcGxpdGxpbmVzKCksIHN0YXJ0PTEpOgorIAorKyAgICAgICAgaWYgaXNpbnN0YW5jZShsaW5lLCBieXRlcyk6CisrICAgICAgICAgICBsaW5lID0gbGluZS5kZWNvZGUoJ3V0Zi04JykKKysKKyAgICAgICAgIHN0cmlwcGVkID0gbGluZS5zdHJpcCgpCisgCisgICAgICAgICAjIGlnbm9yZSBibGFuayBsaW5lcworQEAgLTY2LDcgKzY5LDcgQEAgZGVmIHJlYWRfaW5pKGZwLCB2YXJpYWJsZXM9Tm9uZSwgZGVmYXVsdD0nREVGQVVMVCcsIGRlZmF1bHRzX29ubHk9RmFsc2UsCisgICAgICAgICBpbmxpbmVfcHJlZml4ZXMgPSB7cDogLTEgZm9yIHAgaW4gY29tbWVudHN9CisgICAgICAgICB3aGlsZSBjb21tZW50X3N0YXJ0ID09IHN5cy5tYXhzaXplIGFuZCBpbmxpbmVfcHJlZml4ZXM6CisgICAgICAgICAgICAgbmV4dF9wcmVmaXhlcyA9IHt9CistICAgICAgICAgICAgZm9yIHByZWZpeCwgaW5kZXggaW4gaW5saW5lX3ByZWZpeGVzLml0ZW1zKCk6CisrICAgICAgICAgICAgZm9yIHByZWZpeCwgaW5kZXggaW4gbGlzdChpbmxpbmVfcHJlZml4ZXMuaXRlbXMoKSk6CisgICAgICAgICAgICAgICAgIGluZGV4ID0gbGluZS5maW5kKHByZWZpeCwgaW5kZXgrMSkKKyAgICAgICAgICAgICAgICAgaWYgaW5kZXggPT0gLTE6CisgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorQEAgLTE2Myw3ICsxNjYsNyBAQCBkZWYgY29tYmluZV9maWVsZHMoZ2xvYmFsX3ZhcnMsIGxvY2FsX3ZhcnMpOgorICAgICAgICAgJ3N1cHBvcnQtZmlsZXMnOiAnJXMgJXMnLAorICAgICB9CisgICAgIGZpbmFsX21hcHBpbmcgPSBnbG9iYWxfdmFycy5jb3B5KCkKKy0gICAgZm9yIGZpZWxkX25hbWUsIHZhbHVlIGluIGxvY2FsX3ZhcnMuaXRlbXMoKToKKysgICAgZm9yIGZpZWxkX25hbWUsIHZhbHVlIGluIGxpc3QobG9jYWxfdmFycy5pdGVtcygpKToKKyAgICAgICAgIGlmIGZpZWxkX25hbWUgbm90IGluIGZpZWxkX3BhdHRlcm5zIG9yIGZpZWxkX25hbWUgbm90IGluIGdsb2JhbF92YXJzOgorICAgICAgICAgICAgIGZpbmFsX21hcHBpbmdbZmllbGRfbmFtZV0gPSB2YWx1ZQorICAgICAgICAgICAgIGNvbnRpbnVlCitkaWZmIC0tZ2l0IGEvdGVzdGluZy9tb3piYXNlL21hbmlmZXN0cGFyc2VyL21hbmlmZXN0cGFyc2VyL21hbmlmZXN0cGFyc2VyLnB5IGIvdGVzdGluZy9tb3piYXNlL21hbmlmZXN0cGFyc2VyL21hbmlmZXN0cGFyc2VyL21hbmlmZXN0cGFyc2VyLnB5CitpbmRleCA5MjEzNjlmZDIuLjViMmY0YzQ1MyAxMDA3NTUKKy0tLSBhL3Rlc3RpbmcvbW96YmFzZS9tYW5pZmVzdHBhcnNlci9tYW5pZmVzdHBhcnNlci9tYW5pZmVzdHBhcnNlci5weQorKysrIGIvdGVzdGluZy9tb3piYXNlL21hbmlmZXN0cGFyc2VyL21hbmlmZXN0cGFyc2VyL21hbmlmZXN0cGFyc2VyLnB5CitAQCAtMiw5ICsyLDkgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMgZmlsZSwKKyAjIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uCisgCistZnJvbSBTdHJpbmdJTyBpbXBvcnQgU3RyaW5nSU8KKysKKytmcm9tIGlvIGltcG9ydCBTdHJpbmdJTworIGltcG9ydCBqc29uCisgaW1wb3J0IGZubWF0Y2gKKyBpbXBvcnQgb3MKK0BAIC0yMyw3ICsyMyw3IEBAIGZyb20gLmZpbHRlcnMgaW1wb3J0ICgKKyBfX2FsbF9fID0gWydNYW5pZmVzdFBhcnNlcicsICdUZXN0TWFuaWZlc3QnLCAnY29udmVydCddCisgCisgcmVscGF0aCA9IG9zLnBhdGgucmVscGF0aAorLXN0cmluZyA9IChiYXNlc3RyaW5nLCkKKytzdHJpbmcgPSAoc3RyLCkKKyAKKyAKKyAjIHBhdGggbm9ybWFsaXphdGlvbgorQEAgLTE5NSw3ICsxOTUsNyBAQCBjbGFzcyBNYW5pZmVzdFBhcnNlcihvYmplY3QpOgorIAorICAgICAgICAgICAgICMgb3RoZXJ3aXNlIGFuIGl0ZW0KKyAgICAgICAgICAgICAjIGFwcGx5IGFuY2VzdG9yIGRlZmF1bHRzLCB3aGlsZSBtYWludGFpbmluZyBjdXJyZW50IGZpbGUgcHJpb3JpdHkKKy0gICAgICAgICAgICBkYXRhID0gZGljdChzZWxmLl9hbmNlc3Rvcl9kZWZhdWx0cy5pdGVtcygpICsgZGF0YS5pdGVtcygpKQorKyAgICAgICAgICAgIGRhdGEgPSBkaWN0KGxpc3Qoc2VsZi5fYW5jZXN0b3JfZGVmYXVsdHMuaXRlbXMoKSkgKyBsaXN0KGRhdGEuaXRlbXMoKSkpCisgCisgICAgICAgICAgICAgdGVzdCA9IGRhdGEKKyAgICAgICAgICAgICB0ZXN0WyduYW1lJ10gPSBzZWN0aW9uCitAQCAtMzIzLDE5ICszMjMsMTkgQEAgY2xhc3MgTWFuaWZlc3RQYXJzZXIob2JqZWN0KToKKyAgICAgICAgICMgbWFrZSBzb21lIGNoZWNrIGZ1bmN0aW9ucworICAgICAgICAgaWYgaW52ZXJzZToKKyAgICAgICAgICAgICBkZWYgaGFzX3RhZ3ModGVzdCk6CistICAgICAgICAgICAgICAgIHJldHVybiBub3QgdGFncy5pbnRlcnNlY3Rpb24odGVzdC5rZXlzKCkpCisrICAgICAgICAgICAgICAgIHJldHVybiBub3QgdGFncy5pbnRlcnNlY3Rpb24obGlzdCh0ZXN0LmtleXMoKSkpCisgCisgICAgICAgICAgICAgZGVmIGRpY3RfcXVlcnkodGVzdCk6CistICAgICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGt3YXJncy5pdGVtcygpOgorKyAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBsaXN0KGt3YXJncy5pdGVtcygpKToKKyAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QuZ2V0KGtleSkgPT0gdmFsdWU6CisgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIGRlZiBoYXNfdGFncyh0ZXN0KToKKy0gICAgICAgICAgICAgICAgcmV0dXJuIHRhZ3MuaXNzdWJzZXQodGVzdC5rZXlzKCkpCisrICAgICAgICAgICAgICAgIHJldHVybiB0YWdzLmlzc3Vic2V0KGxpc3QodGVzdC5rZXlzKCkpKQorIAorICAgICAgICAgICAgIGRlZiBkaWN0X3F1ZXJ5KHRlc3QpOgorLSAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBrd2FyZ3MuaXRlbXMoKToKKysgICAgICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gbGlzdChrd2FyZ3MuaXRlbXMoKSk6CisgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0LmdldChrZXkpICE9IHZhbHVlOgorICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorQEAgLTM1OSw3ICszNTksNyBAQCBjbGFzcyBNYW5pZmVzdFBhcnNlcihvYmplY3QpOgorICAgICAgICAgaWYgdGVzdHMgaXMgTm9uZToKKyAgICAgICAgICAgICBtYW5pZmVzdHMgPSBbXQorICAgICAgICAgICAgICMgTWFrZSBzdXJlIHRvIHJldHVybiBhbGwgdGhlIG1hbmlmZXN0cywgZXZlbiBvbmVzIHdpdGhvdXQgdGVzdHMuCistICAgICAgICAgICAgZm9yIG1hbmlmZXN0IGluIHNlbGYubWFuaWZlc3RfZGVmYXVsdHMua2V5cygpOgorKyAgICAgICAgICAgIGZvciBtYW5pZmVzdCBpbiBsaXN0KHNlbGYubWFuaWZlc3RfZGVmYXVsdHMua2V5cygpKToKKyAgICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShtYW5pZmVzdCwgdHVwbGUpOgorICAgICAgICAgICAgICAgICAgICAgcGFyZW50bWFuaWZlc3QsIG1hbmlmZXN0ID0gbWFuaWZlc3QKKyAgICAgICAgICAgICAgICAgaWYgbWFuaWZlc3Qgbm90IGluIG1hbmlmZXN0czoKK0BAIC00MDksNyArNDA5LDcgQEAgY2xhc3MgTWFuaWZlc3RQYXJzZXIob2JqZWN0KToKKyAgICAgICAgICIiIgorIAorICAgICAgICAgZmlsZXMgPSBzZXQoW10pCistICAgICAgICBpZiBpc2luc3RhbmNlKGRpcmVjdG9yaWVzLCBiYXNlc3RyaW5nKToKKysgICAgICAgIGlmIGlzaW5zdGFuY2UoZGlyZWN0b3JpZXMsIHN0cik6CisgICAgICAgICAgICAgZGlyZWN0b3JpZXMgPSBbZGlyZWN0b3JpZXNdCisgCisgICAgICAgICAjIGdldCBmaWxlcyBpbiBkaXJlY3RvcmllcworQEAgLTQ3Niw3ICs0NzYsNyBAQCBjbGFzcyBNYW5pZmVzdFBhcnNlcihvYmplY3QpOgorICAgICAgICAgICAgIHByaW50KCdbREVGQVVMVF0nLCBmaWxlPWZwKQorICAgICAgICAgICAgIGZvciB0YWcgaW4gZ2xvYmFsX3RhZ3M6CisgICAgICAgICAgICAgICAgIHByaW50KCclcyA9JyAlIHRhZywgZmlsZT1mcCkKKy0gICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBnbG9iYWxfa3dhcmdzLml0ZW1zKCk6CisrICAgICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gbGlzdChnbG9iYWxfa3dhcmdzLml0ZW1zKCkpOgorICAgICAgICAgICAgICAgICBwcmludCgnJXMgPSAlcycgJSAoa2V5LCB2YWx1ZSksIGZpbGU9ZnApCisgICAgICAgICAgICAgcHJpbnQoZmlsZT1mcCkKKyAKK0BAIC02MDIsNyArNjAyLDcgQEAgY2xhc3MgTWFuaWZlc3RQYXJzZXIob2JqZWN0KToKKyAgICAgICAgIGludGVybmFsIGZ1bmN0aW9uIHRvIGltcG9ydCBkaXJlY3RvcmllcworICAgICAgICAgIiIiCisgCistICAgICAgICBpZiBpc2luc3RhbmNlKHBhdHRlcm4sIGJhc2VzdHJpbmcpOgorKyAgICAgICAgaWYgaXNpbnN0YW5jZShwYXR0ZXJuLCBzdHIpOgorICAgICAgICAgICAgIHBhdHRlcm5zID0gW3BhdHRlcm5dCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIHBhdHRlcm5zID0gcGF0dGVybgorZGlmZiAtLWdpdCBhL3Rlc3RpbmcvbW96YmFzZS9tb3ppbmZvL21vemluZm8vbW96aW5mby5weSBiL3Rlc3RpbmcvbW96YmFzZS9tb3ppbmZvL21vemluZm8vbW96aW5mby5weQoraW5kZXggOTBjMTg3NTY4Li42YzVhMWYzMjIgMTAwNzU1CistLS0gYS90ZXN0aW5nL21vemJhc2UvbW96aW5mby9tb3ppbmZvL21vemluZm8ucHkKKysrKyBiL3Rlc3RpbmcvbW96YmFzZS9tb3ppbmZvL21vemluZm8vbW96aW5mby5weQorQEAgLTgsNyArOCw3IEBACisgIyBsaW51eCkgdG8gdGhlIGluZm9ybWF0aW9uOyBJIGNlcnRhaW5seSB3b3VsZG4ndCB3YW50IGFueW9uZSBwYXJzaW5nIHRoaXMKKyAjIGluZm9ybWF0aW9uIGFuZCBoYXZpbmcgYmVoYXZpb3VyIGRlcGVuZCBvbiBpdAorIAorLWZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbgorKworIAorIGltcG9ydCBvcworIGltcG9ydCBwbGF0Zm9ybQorQEAgLTI0LDcgKzI0LDcgQEAgX29zID0gb3MKKyBjbGFzcyB1bmtub3duKG9iamVjdCk6CisgICAgICIiIm1hcmtlciBjbGFzcyBmb3IgdW5rbm93biBpbmZvcm1hdGlvbiIiIgorIAorLSAgICBkZWYgX19ub256ZXJvX18oc2VsZik6CisrICAgIGRlZiBfX2Jvb2xfXyhzZWxmKToKKyAgICAgICAgIHJldHVybiBGYWxzZQorIAorICAgICBkZWYgX19zdHJfXyhzZWxmKToKK0BAIC05NiwyMCArOTYsMTcgQEAgZWxpZiBzeXN0ZW0uc3RhcnRzd2l0aCgoJ01JTkdXJywgJ01TWVNfTlQnKSk6CisgICAgIGluZm9bJ29zJ10gPSAnd2luJworICAgICBvc192ZXJzaW9uID0gdmVyc2lvbiA9IHVua25vd24KKyBlbGlmIHN5c3RlbSA9PSAiTGludXgiOgorLSAgICBpZiBoYXNhdHRyKHBsYXRmb3JtLCAibGludXhfZGlzdHJpYnV0aW9uIik6CistICAgICAgICAoZGlzdHJvLCBvc192ZXJzaW9uLCBjb2RlbmFtZSkgPSBwbGF0Zm9ybS5saW51eF9kaXN0cmlidXRpb24oKQorLSAgICBlbHNlOgorLSAgICAgICAgKGRpc3Rybywgb3NfdmVyc2lvbiwgY29kZW5hbWUpID0gcGxhdGZvcm0uZGlzdCgpCisgICAgIGlmIG5vdCBwcm9jZXNzb3I6CisgICAgICAgICBwcm9jZXNzb3IgPSBtYWNoaW5lCistICAgIHZlcnNpb24gPSAiJXMgJXMiICUgKGRpc3Rybywgb3NfdmVyc2lvbikKKysKKysgICAgZGlzdHJvID0gJ09FL1lvY3RvJworKyAgICBvc192ZXJzaW9uID0gdmVyc2lvbiA9IHVua25vd24KKyAKKyAgICAgIyBCdWcgaW4gUHl0aG9uIDIncyBgcGxhdGZvcm1gIGxpYnJhcnk6CisgICAgICMgSXQgd2lsbCByZXR1cm4gYSB0cmlwbGUgb2YgZW1wdHkgc3RyaW5ncyBpZiB0aGUgZGlzdHJpYnV0aW9uIGlzIG5vdCBzdXBwb3J0ZWQuCisgICAgICMgSXQgd29ya3Mgb24gUHl0aG9uIDMuIElmIHdlIGRvbid0IGhhdmUgYW4gT1MgdmVyc2lvbiwKKyAgICAgIyB0aGUgdW5pdCB0ZXN0cyBmYWlsIHRvIHJ1bi4KKyAgICAgaWYgbm90IGRpc3RybyBhbmQgbm90IG9zX3ZlcnNpb24gYW5kIG5vdCBjb2RlbmFtZToKKy0gICAgICAgIGRpc3RybyA9ICdsZnMnCisgICAgICAgICB2ZXJzaW9uID0gcmVsZWFzZQorICAgICAgICAgb3NfdmVyc2lvbiA9IHJlbGVhc2UKKyAKK0BAIC0xMzEsNyArMTI4LDcgQEAgZWxzZToKKyAgICAgb3NfdmVyc2lvbiA9IHZlcnNpb24gPSB1bmtub3duCisgCisgaW5mb1sndmVyc2lvbiddID0gdmVyc2lvbgorLWluZm9bJ29zX3ZlcnNpb24nXSA9IFN0cmluZ1ZlcnNpb24ob3NfdmVyc2lvbikKKytpbmZvWydvc192ZXJzaW9uJ10gPSB2ZXJzaW9uCisgCisgIyBwcm9jZXNzb3IgdHlwZSBhbmQgYml0cworIGlmIHByb2Nlc3NvciBpbiBbImkzODYiLCAiaTY4NiJdOgorQEAgLTE4OCwxMiArMTg1LDcgQEAgZGVmIHVwZGF0ZShuZXdfaW5mbyk6CisgICAgICAgICAgICAgICAgICAgICAgdG8gYSBqc29uIGZpbGUgY29udGFpbmluZyB0aGUgbmV3IGluZm8uCisgICAgICIiIgorIAorLSAgICBQWTMgPSBzeXMudmVyc2lvbl9pbmZvWzBdID09IDMKKy0gICAgaWYgUFkzOgorLSAgICAgICAgc3RyaW5nX3R5cGVzID0gc3RyLAorLSAgICBlbHNlOgorLSAgICAgICAgc3RyaW5nX3R5cGVzID0gYmFzZXN0cmluZywKKy0gICAgaWYgaXNpbnN0YW5jZShuZXdfaW5mbywgc3RyaW5nX3R5cGVzKToKKysgICAgaWYgaXNpbnN0YW5jZShuZXdfaW5mbywgc3RyKToKKyAgICAgICAgICMgbGF6eSBpbXBvcnQKKyAgICAgICAgIGltcG9ydCBtb3pmaWxlCisgICAgICAgICBpbXBvcnQganNvbgorQEAgLTI5NSw3ICsyODcsNyBAQCBkZWYgbWFpbihhcmdzPU5vbmUpOgorIAorICAgICAjIHByaW50IG91dCBjaG9pY2VzIGlmIHJlcXVlc3RlZAorICAgICBmbGFnID0gRmFsc2UKKy0gICAgZm9yIGtleSwgdmFsdWUgaW4gb3B0aW9ucy5fX2RpY3RfXy5pdGVtcygpOgorKyAgICBmb3Iga2V5LCB2YWx1ZSBpbiBsaXN0KG9wdGlvbnMuX19kaWN0X18uaXRlbXMoKSk6CisgICAgICAgICBpZiB2YWx1ZSBpcyBUcnVlOgorICAgICAgICAgICAgIHByaW50KCclcyBjaG9pY2VzOiAlcycgJSAoa2V5LCAnICcuam9pbihbc3RyKGNob2ljZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBjaG9pY2UgaW4gY2hvaWNlc1trZXldXSkpKQorQEAgLTMwNCw3ICsyOTYsNyBAQCBkZWYgbWFpbihhcmdzPU5vbmUpOgorICAgICAgICAgcmV0dXJuCisgCisgICAgICMgb3RoZXJ3aXNlLCBwcmludCBvdXQgYWxsIGluZm8KKy0gICAgZm9yIGtleSwgdmFsdWUgaW4gaW5mby5pdGVtcygpOgorKyAgICBmb3Iga2V5LCB2YWx1ZSBpbiBsaXN0KGluZm8uaXRlbXMoKSk6CisgICAgICAgICBwcmludCgnJXM6ICVzJyAlIChrZXksIHZhbHVlKSkKKyAKKyAKK2RpZmYgLS1naXQgYS90ZXN0aW5nL21vemJhc2UvbW96cHJvY2Vzcy9tb3pwcm9jZXNzL3Byb2Nlc3NoYW5kbGVyLnB5IGIvdGVzdGluZy9tb3piYXNlL21venByb2Nlc3MvbW96cHJvY2Vzcy9wcm9jZXNzaGFuZGxlci5weQoraW5kZXggM2VmYjY1MGI3Li4yNTc1YTQ3MDIgMTAwNjQ0CistLS0gYS90ZXN0aW5nL21vemJhc2UvbW96cHJvY2Vzcy9tb3pwcm9jZXNzL3Byb2Nlc3NoYW5kbGVyLnB5CisrKysgYi90ZXN0aW5nL21vemJhc2UvbW96cHJvY2Vzcy9tb3pwcm9jZXNzL3Byb2Nlc3NoYW5kbGVyLnB5CitAQCAtMiw3ICsyLDcgQEAKKyAjIExpY2Vuc2UsIHYuIDIuMC4gSWYgYSBjb3B5IG9mIHRoZSBNUEwgd2FzIG5vdCBkaXN0cmlidXRlZCB3aXRoIHRoaXMgZmlsZSwKKyAjIFlvdSBjYW4gb2J0YWluIG9uZSBhdCBodHRwOi8vbW96aWxsYS5vcmcvTVBMLzIuMC8uCisgCistZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uCisrCisgCisgaW1wb3J0IGVycm5vCisgaW1wb3J0IG9zCitAQCAtMTMsNyArMTMsNyBAQCBpbXBvcnQgdGhyZWFkaW5nCisgaW1wb3J0IHRpbWUKKyBpbXBvcnQgdHJhY2ViYWNrCisgCistZnJvbSBRdWV1ZSBpbXBvcnQgUXVldWUsIEVtcHR5CisrZnJvbSBxdWV1ZSBpbXBvcnQgUXVldWUsIEVtcHR5CisgZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUKKyAKKyAKK0BAIC0xMjQsMTQgKzEyNCwxNCBAQCBjbGFzcyBQcm9jZXNzSGFuZGxlck1peGluKG9iamVjdCk6CisgICAgICAgICAgICAgdGhyZWFkID0gdGhyZWFkaW5nLmN1cnJlbnRfdGhyZWFkKCkubmFtZQorICAgICAgICAgICAgIHByaW50KCJEQkc6Ok1PWlBST0MgUElEOnt9ICh7fSkgfCB7fSIuZm9ybWF0KHNlbGYucGlkLCB0aHJlYWQsIG1zZykpCisgCistICAgICAgICBkZWYgX19kZWxfXyhzZWxmLCBfbWF4aW50PXN5cy5tYXhpbnQpOgorKyAgICAgICAgZGVmIF9fZGVsX18oc2VsZiwgX21heGludD1zeXMubWF4c2l6ZSk6CisgICAgICAgICAgICAgaWYgaXNXaW46CisgICAgICAgICAgICAgICAgIGhhbmRsZSA9IGdldGF0dHIoc2VsZiwgJ19oYW5kbGUnLCBOb25lKQorICAgICAgICAgICAgICAgICBpZiBoYW5kbGU6CisgICAgICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKHNlbGYsICdfaW50ZXJuYWxfcG9sbCcpOgorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2ludGVybmFsX3BvbGwoX2RlYWRzdGF0ZT1fbWF4aW50KQorICAgICAgICAgICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnBvbGwoX2RlYWRzdGF0ZT1zeXMubWF4aW50KQorKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucG9sbChfZGVhZHN0YXRlPXN5cy5tYXhzaXplKQorICAgICAgICAgICAgICAgICBpZiBoYW5kbGUgb3Igc2VsZi5fam9iIG9yIHNlbGYuX2lvX3BvcnQ6CisgICAgICAgICAgICAgICAgICAgICBzZWxmLl9jbGVhbnVwKCkKKyAgICAgICAgICAgICBlbHNlOgorQEAgLTI0Myw3ICsyNDMsNyBAQCBjbGFzcyBQcm9jZXNzSGFuZGxlck1peGluKG9iamVjdCk6CisgICAgICAgICAgICAgICAgICAgICAgcDJjcmVhZCwgcDJjd3JpdGUsCisgICAgICAgICAgICAgICAgICAgICAgYzJwcmVhZCwgYzJwd3JpdGUsCisgICAgICAgICAgICAgICAgICAgICAgZXJycmVhZCwgZXJyd3JpdGUpID0gYXJnc190dXBsZQorLSAgICAgICAgICAgICAgICBpZiBub3QgaXNpbnN0YW5jZShhcmdzLCBiYXNlc3RyaW5nKToKKysgICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UoYXJncywgc3RyKToKKyAgICAgICAgICAgICAgICAgICAgIGFyZ3MgPSBzdWJwcm9jZXNzLmxpc3QyY21kbGluZShhcmdzKQorIAorICAgICAgICAgICAgICAgICAjIEFsd2F5cyBvciBpbiB0aGUgY3JlYXRlIG5ldyBwcm9jZXNzIGdyb3VwCitkaWZmIC0tZ2l0IGEvdGhpcmRfcGFydHkvcHl0aG9uL3doaWNoL3doaWNoLnB5IGIvdGhpcmRfcGFydHkvcHl0aG9uL3doaWNoL3doaWNoLnB5CitpbmRleCA5YzdkMTA4MzUuLmYwMmIyNjE2ZSAxMDA2NDQKKy0tLSBhL3RoaXJkX3BhcnR5L3B5dGhvbi93aGljaC93aGljaC5weQorKysrIGIvdGhpcmRfcGFydHkvcHl0aG9uL3doaWNoL3doaWNoLnB5CitAQCAtOTAsMTMgKzkwLDEzIEBAIGRlZiBfZ2V0UmVnaXN0ZXJlZEV4ZWN1dGFibGUoZXhlTmFtZSk6CisgICAgIGlmIHN5cy5wbGF0Zm9ybS5zdGFydHN3aXRoKCd3aW4nKToKKyAgICAgICAgIGlmIG9zLnBhdGguc3BsaXRleHQoZXhlTmFtZSlbMV0ubG93ZXIoKSAhPSAnLmV4ZSc6CisgICAgICAgICAgICAgZXhlTmFtZSArPSAnLmV4ZScKKy0gICAgICAgIGltcG9ydCBfd2lucmVnCisrICAgICAgICBpbXBvcnQgd2lucmVnCisgICAgICAgICB0cnk6CisgICAgICAgICAgICAga2V5ID0gIlNPRlRXQVJFXFxNaWNyb3NvZnRcXFdpbmRvd3NcXEN1cnJlbnRWZXJzaW9uXFxBcHAgUGF0aHNcXCIgK1wKKyAgICAgICAgICAgICAgICAgICBleGVOYW1lCistICAgICAgICAgICAgdmFsdWUgPSBfd2lucmVnLlF1ZXJ5VmFsdWUoX3dpbnJlZy5IS0VZX0xPQ0FMX01BQ0hJTkUsIGtleSkKKysgICAgICAgICAgICB2YWx1ZSA9IHdpbnJlZy5RdWVyeVZhbHVlKHdpbnJlZy5IS0VZX0xPQ0FMX01BQ0hJTkUsIGtleSkKKyAgICAgICAgICAgICByZWdpc3RlcmVkID0gKHZhbHVlLCAiZnJvbSBIS0xNXFwiK2tleSkKKy0gICAgICAgIGV4Y2VwdCBfd2lucmVnLmVycm9yOgorKyAgICAgICAgZXhjZXB0IHdpbnJlZy5lcnJvcjoKKyAgICAgICAgICAgICBwYXNzCisgICAgICAgICBpZiByZWdpc3RlcmVkIGFuZCBub3Qgb3MucGF0aC5leGlzdHMocmVnaXN0ZXJlZFswXSk6CisgICAgICAgICAgICAgcmVnaXN0ZXJlZCA9IE5vbmUKK0BAIC0yNDQsNyArMjQ0LDcgQEAgZGVmIHdoaWNoKGNvbW1hbmQsIHBhdGg9Tm9uZSwgdmVyYm9zZT0wLCBleHRzPU5vbmUpOgorICAgICBJZiBubyBtYXRjaCBpcyBmb3VuZCBmb3IgdGhlIGNvbW1hbmQsIGEgV2hpY2hFcnJvciBpcyByYWlzZWQuCisgICAgICIiIgorICAgICB0cnk6CistICAgICAgICBtYXRjaCA9IHdoaWNoZ2VuKGNvbW1hbmQsIHBhdGgsIHZlcmJvc2UsIGV4dHMpLm5leHQoKQorKyAgICAgICAgbWF0Y2ggPSBuZXh0KHdoaWNoZ2VuKGNvbW1hbmQsIHBhdGgsIHZlcmJvc2UsIGV4dHMpKQorICAgICBleGNlcHQgU3RvcEl0ZXJhdGlvbjoKKyAgICAgICAgIHJhaXNlIFdoaWNoRXJyb3IoIkNvdWxkIG5vdCBmaW5kICclcycgb24gdGhlIHBhdGguIiAlIGNvbW1hbmQpCisgICAgIHJldHVybiBtYXRjaAorQEAgLTI4MSwxNyArMjgxLDE3IEBAIGRlZiBtYWluKGFyZ3YpOgorICAgICB0cnk6CisgICAgICAgICBvcHRsaXN0LCBhcmdzID0gZ2V0b3B0LmdldG9wdChhcmd2WzE6XSwgJ2hhVnZxcDplOicsCisgICAgICAgICAgICAgWydoZWxwJywgJ2FsbCcsICd2ZXJzaW9uJywgJ3ZlcmJvc2UnLCAncXVpZXQnLCAncGF0aD0nLCAnZXh0cz0nXSkKKy0gICAgZXhjZXB0IGdldG9wdC5HZXRvcHRFcnJvciwgbXNnOgorKyAgICBleGNlcHQgZ2V0b3B0LkdldG9wdEVycm9yIGFzIG1zZzoKKyAgICAgICAgIHN5cy5zdGRlcnIud3JpdGUoIndoaWNoOiBlcnJvcjogJXMuIFlvdXIgaW52b2NhdGlvbiB3YXM6ICVzXG4iXAorICAgICAgICAgICAgICAgICAgICAgICAgICAlIChtc2csIGFyZ3YpKQorICAgICAgICAgc3lzLnN0ZGVyci53cml0ZSgiVHJ5ICd3aGljaCAtLWhlbHAnLlxuIikKKyAgICAgICAgIHJldHVybiAxCisgICAgIGZvciBvcHQsIG9wdGFyZyBpbiBvcHRsaXN0OgorICAgICAgICAgaWYgb3B0IGluICgnLWgnLCAnLS1oZWxwJyk6CistICAgICAgICAgICAgcHJpbnQgX2NtZGxuVXNhZ2UKKysgICAgICAgICAgICBwcmludChfY21kbG5Vc2FnZSkKKyAgICAgICAgICAgICByZXR1cm4gMAorICAgICAgICAgZWxpZiBvcHQgaW4gKCctVicsICctLXZlcnNpb24nKToKKy0gICAgICAgICAgICBwcmludCAid2hpY2ggJXMiICUgX192ZXJzaW9uX18KKysgICAgICAgICAgICBwcmludCgid2hpY2ggJXMiICUgX192ZXJzaW9uX18pCisgICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgIGVsaWYgb3B0IGluICgnLWEnLCAnLS1hbGwnKToKKyAgICAgICAgICAgICBhbGwgPSAxCitAQCAtMzE5LDkgKzMxOSw5IEBAIGRlZiBtYWluKGFyZ3YpOgorICAgICAgICAgbm1hdGNoZXMgPSAwCisgICAgICAgICBmb3IgbWF0Y2ggaW4gd2hpY2hnZW4oYXJnLCBwYXRoPWFsdHBhdGgsIHZlcmJvc2U9dmVyYm9zZSwgZXh0cz1leHRzKToKKyAgICAgICAgICAgICBpZiB2ZXJib3NlOgorLSAgICAgICAgICAgICAgICBwcmludCAiJXMgKCVzKSIgJSBtYXRjaAorKyAgICAgICAgICAgICAgICBwcmludCgiJXMgKCVzKSIgJSBtYXRjaCkKKyAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBwcmludCBtYXRjaAorKyAgICAgICAgICAgICAgICBwcmludChtYXRjaCkKKyAgICAgICAgICAgICBubWF0Y2hlcyArPSAxCisgICAgICAgICAgICAgaWYgbm90IGFsbDoKKyAgICAgICAgICAgICAgICAgYnJlYWsKKy0tIAorMi4yMS4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAxLWpzLnBjLmluLWRvLW5vdC1pbmNsdWRlLVJlcXVpcmVkRGVmaW5lcy5oLWZvci1kZXBlbmQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMi1qcy5wYy5pbi1kby1ub3QtaW5jbHVkZS1SZXF1aXJlZERlZmluZXMuaC1mb3ItZGVwZW5kLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1qcy5wYy5pbi1kby1ub3QtaW5jbHVkZS1SZXF1aXJlZERlZmluZXMuaC1mb3ItZGVwZW5kLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMi1qcy5wYy5pbi1kby1ub3QtaW5jbHVkZS1SZXF1aXJlZERlZmluZXMuaC1mb3ItZGVwZW5kLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMy1maXgtY3Jvc3MtY29tcGlsYXRpb24tb24taTU4Ni10YXJnZXRzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDMtZml4LWNyb3NzLWNvbXBpbGF0aW9uLW9uLWk1ODYtdGFyZ2V0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDkyOWE4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDMtZml4LWNyb3NzLWNvbXBpbGF0aW9uLW9uLWk1ODYtdGFyZ2V0cy5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIGE0NTIxMzhhMWRkMjc0YmZhZDM4MWE3MDE3Mjk3ODMzNjBkYzg2ZmIgTW9uIFNlcCAxNyAgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFjaWVqIEJvcnplY2tpIDxtYWNpZWouYm9yemVja2lAb3Blbi1ybmQucGw+CitEYXRlOiBUdWUsIDUgSmFuIDIwMTYgMjI6MDQ6MTcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGNyb3NzIGNvbXBpbGF0aW9uIG9uIGk1ODYgdGFyZ2V0cworCitSZW1vdmUgb2ZmZW5kaW5nIC1XbCwtcnBhdGgtbGluayB0aGF0IG1heSBjYXVzZSBob3N0IGxpYnJhcmllcyB0byBiZSBwaWNrZWQKK2R1cmluZyBsaW5raW5nLiBUaGUgcGF0Y2ggYXBwbGllcyBhIGZpeCB0byBjb25maWd1cmUuaW4uIFNvIGFzIG5vdCB0bworcmVnZW5lcmF0ZSBjb25maWd1cmUsIHNpbWlsYXIgZml4IGlzIGFwcGxpZWQgdGhlcmUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IE1hY2llaiBCb3J6ZWNraSA8bWFjaWVqLmJvcnplY2tpQG9wZW4tcm5kLnBsPgorCitSZWJhc2UgdG8gNTIuOC4xCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKK1JlYmFzZSB0byA2MC45LjAgKGZpcmVmb3gtZXNyIHNvdXJjZXMpCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorLS0tCisganMvc3JjL29sZC1jb25maWd1cmUuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9qcy9zcmMvb2xkLWNvbmZpZ3VyZS5pbiBiL2pzL3NyYy9vbGQtY29uZmlndXJlLmluCitpbmRleCAzZDUzZWUxLi4xMWMzZDVhIDEwMDY0NAorLS0tIGEvanMvc3JjL29sZC1jb25maWd1cmUuaW4KKysrKyBiL2pzL3NyYy9vbGQtY29uZmlndXJlLmluCitAQCAtNDA1LDcgKzQwNSw3IEBAIEFTPSckKENDKScKKyBBU19EQVNIX0NfRkxBRz0nLWMnCisgTU9aX1VTRVJfRElSPSIubW96aWxsYSIKKyAKKy1NT1pfRklYX0xJTktfUEFUSFM9Ii1XbCwtcnBhdGgtbGluaywke0RJU1R9L2JpbiAtV2wsLXJwYXRoLWxpbmssJHtwcmVmaXh9L2xpYiIKKytNT1pfRklYX0xJTktfUEFUSFM9Ii1XbCwtcnBhdGgtbGluaywke0RJU1R9L2JpbiIKKyAKKyBkbmwgQ29uZmlndXJlIHBsYXRmb3JtLXNwZWNpZmljIENQVSBhcmNoaXRlY3R1cmUgY29tcGlsZXIgb3B0aW9ucy4KKyBkbmwgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tIAorMi4yMS4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA0LWRvLW5vdC1jcmVhdGUtcHl0aG9uLWVudmlyb25tZW50LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDQtZG8tbm90LWNyZWF0ZS1weXRob24tZW52aXJvbm1lbnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTg1ZmMzNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA0LWRvLW5vdC1jcmVhdGUtcHl0aG9uLWVudmlyb25tZW50LnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKK0Zyb20gNTAyOGQxY2Q2NjljMTc5ZWQ0OTA2MTMxNmQwNGM4ZTg4NjJhNWJkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMTIgSnVsIDIwMTggMTU6MDQ6NDcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzVdIGRvIG5vdCBjcmVhdGUgcHl0aG9uIGVudmlyb25tZW50CisKK1VzZSBvZSdzIHB5dGhvbiBlbnZpcm9ubWVudCByYXRoZXIgdGhhbiBjcmVhdGUgb25lIG9mIGhvc3QKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCitSZWJhc2UgdG8gNjAuOS4wIChmaXJlZm94LWVzciBzb3VyY2VzKQorU2lnbmVkLW9mZi1ieTogQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KKy0tLQorIGJ1aWxkL21vei5jb25maWd1cmUvaW5pdC5jb25maWd1cmUgfCAxOCAtLS0tLS0tLS0tLS0tLS0tLS0KKyBjb25maWd1cmUucHkgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKysrKysrLQorIDMgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCisKKy0tLSBhL2J1aWxkL21vei5jb25maWd1cmUvaW5pdC5jb25maWd1cmUKKysrKyBiL2J1aWxkL21vei5jb25maWd1cmUvaW5pdC5jb25maWd1cmUKK0BAIC0yNTAsMjQgKzI1MCw2IEBAIGRlZiB2aXJ0dWFsZW52X3B5dGhvbihlbnZfcHl0aG9uLCBidWlsZF8KKyAgICAgZWxzZToKKyAgICAgICAgIHB5dGhvbiA9IHN5cy5leGVjdXRhYmxlCisgCistICAgIGlmIG5vdCBtYW5hZ2VyLnVwX3RvX2RhdGUocHl0aG9uKToKKy0gICAgICAgIGxvZy5pbmZvKCdDcmVhdGluZyBQeXRob24gZW52aXJvbm1lbnQnKQorLSAgICAgICAgbWFuYWdlci5idWlsZChweXRob24pCistCistICAgIHB5dGhvbiA9IG5vcm1zZXAobWFuYWdlci5weXRob25fcGF0aCkKKy0KKy0gICAgaWYgcHl0aG9uICE9IG5vcm1zZXAoc3lzLmV4ZWN1dGFibGUpOgorLSAgICAgICAgbG9nLmluZm8oJ1JlZXhlY3V0aW5nIGluIHRoZSB2aXJ0dWFsZW52JykKKy0gICAgICAgIGlmIGVudl9weXRob246CistICAgICAgICAgICAgZGVsIG9zLmVudmlyb25bJ1BZVEhPTiddCistICAgICAgICAjIE9uZSB3b3VsZCBwcmVmZXIgdG8gdXNlIG9zLmV4ZWNsLCBidXQgdGhhdCdzIGNvbXBsZXRlbHkgYm9ya2VkIG9uCistICAgICAgICAjIFdpbmRvd3MuCistICAgICAgICBzeXMuZXhpdChzdWJwcm9jZXNzLmNhbGwoW3B5dGhvbl0gKyBzeXMuYXJndikpCistCistICAgICMgV2UgYXJlIG5vdyBpbiB0aGUgdmlydHVhbGVudgorLSAgICBpZiBub3QgZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYigpOgorLSAgICAgICAgZGllKCdDb3VsZCBub3QgZGV0ZXJtaW5lIHB5dGhvbiBzaXRlIHBhY2thZ2VzIGRpcmVjdG9yeScpCistCisgICAgIHJldHVybiBweXRob24KKyAKKyAKKy0tLSBhL2NvbmZpZ3VyZS5weQorKysrIGIvY29uZmlndXJlLnB5CitAQCAtMTIsNyArMTIsMTUgQEAgaW1wb3J0IHRleHR3cmFwCisgCisgCisgYmFzZV9kaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKKy1zeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGJhc2VfZGlyLCAncHl0aG9uJywgJ21vemJ1aWxkJykpCisrc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihiYXNlX2RpciwgJ2NvbmZpZycpKQorK2RlZiBnZXRfaW1tZWRpYXRlX3N1YmRpcmVjdG9yaWVzKGFfZGlyKToKKysgICAgcmV0dXJuIFtuYW1lIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoYV9kaXIpCisrICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oYV9kaXIsIG5hbWUpKV0KKytmb3IgcyBpbiBbInB5dGhvbiIsICJ0ZXN0aW5nL21vemJhc2UiXToKKysgICAgc3ViX2RpciA9IG9zLnBhdGguam9pbihiYXNlX2RpciwgcykKKysgICAgZm9yIG1vZHVsZV9kaXIgaW4gZ2V0X2ltbWVkaWF0ZV9zdWJkaXJlY3RvcmllcyhzdWJfZGlyKToKKysgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oc3ViX2RpciwgbW9kdWxlX2RpcikpCisrCisgZnJvbSBtb3pidWlsZC5jb25maWd1cmUgaW1wb3J0IENvbmZpZ3VyZVNhbmRib3gKKyBmcm9tIG1vemJ1aWxkLm1ha2V1dGlsIGltcG9ydCBNYWtlZmlsZQorIGZyb20gbW96YnVpbGQucHl0aG9udXRpbCBpbXBvcnQgaXRlcl9tb2R1bGVzX2luX3BhdGgKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAyLWZpeC1jYW5ub3QtZmluZC1saW5rLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDUtZml4LWNhbm5vdC1maW5kLWxpbmsucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAyLWZpeC1jYW5ub3QtZmluZC1saW5rLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwNS1maXgtY2Fubm90LWZpbmQtbGluay5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDMtd29ya2Fyb3VuZC1hdXRvY29uZi0yLjEzLWRldGVjdGlvbi1mYWlsZWQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwNi13b3JrYXJvdW5kLWF1dG9jb25mLTIuMTMtZGV0ZWN0aW9uLWZhaWxlZC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDMtd29ya2Fyb3VuZC1hdXRvY29uZi0yLjEzLWRldGVjdGlvbi1mYWlsZWQucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA2LXdvcmthcm91bmQtYXV0b2NvbmYtMi4xMy1kZXRlY3Rpb24tZmFpbGVkLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwNS1maXgtZG9fY29tcGlsZS1mYWlsZWQtb24tbWlwcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA3LWZpeC1kb19jb21waWxlLWZhaWxlZC1vbi1taXBzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwNS1maXgtZG9fY29tcGlsZS1mYWlsZWQtb24tbWlwcy5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDctZml4LWRvX2NvbXBpbGUtZmFpbGVkLW9uLW1pcHMucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9hZGQtcmlzY3Ytc3VwcG9ydC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA4LWFkZC1yaXNjdi1zdXBwb3J0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvYWRkLXJpc2N2LXN1cHBvcnQucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA4LWFkZC1yaXNjdi1zdXBwb3J0LnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1tb3pqcy1maXgtY29yZWR1bXAtY2F1c2VkLWJ5LWdldGVudi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA5LW1vempzLWZpeC1jb3JlZHVtcC1jYXVzZWQtYnktZ2V0ZW52LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1tb3pqcy1maXgtY29yZWR1bXAtY2F1c2VkLWJ5LWdldGVudi5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDktbW96anMtZml4LWNvcmVkdW1wLWNhdXNlZC1ieS1nZXRlbnYucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9mb3JtYXQtb3ZlcmZsb3cucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAxMC1mb3JtYXQtb3ZlcmZsb3cucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9mb3JtYXQtb3ZlcmZsb3cucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDEwLWZvcm1hdC1vdmVyZmxvdy5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDEtVG8tZml4LWJ1aWxkLWVycm9yLW9uLWFybTMyQkUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAxMS1Uby1maXgtYnVpbGQtZXJyb3Itb24tYXJtMzJCRS5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDEtVG8tZml4LWJ1aWxkLWVycm9yLW9uLWFybTMyQkUucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDExLVRvLWZpeC1idWlsZC1lcnJvci1vbi1hcm0zMkJFLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvSlNfUFVCTElDX0FQSS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDEyLUpTX1BVQkxJQ19BUEkucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9KU19QVUJMSUNfQVBJLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAxMi1KU19QVUJMSUNfQVBJLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1yaXNjdi1EaXNhYmxlLWF0b21pYy1vcGVyYXRpb25zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMTMtcmlzY3YtRGlzYWJsZS1hdG9taWMtb3BlcmF0aW9ucy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDEtcmlzY3YtRGlzYWJsZS1hdG9taWMtb3BlcmF0aW9ucy5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMTMtcmlzY3YtRGlzYWJsZS1hdG9taWMtb3BlcmF0aW9ucy5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzL2ZhbGxiYWNrLXRvLTIwMTEtQysrLXN0YW5kYXJkLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMTQtZmFsbGJhY2stdG8tMjAxMS1DKystc3RhbmRhcmQucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9mYWxsYmFjay10by0yMDExLUMrKy1zdGFuZGFyZC5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMTQtZmFsbGJhY2stdG8tMjAxMS1DKystc3RhbmRhcmQucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAxLWZpeC1jb21waWxpbmctZmFpbHVyZS1vbi1taXBzNjQtbjMyLWJzcC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9taXBzYXJjaG4zMi8wMDAxLWZpeC1jb21waWxpbmctZmFpbHVyZS1vbi1taXBzNjQtbjMyLWJzcC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDEtZml4LWNvbXBpbGluZy1mYWlsdXJlLW9uLW1pcHM2NC1uMzItYnNwLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvbWlwc2FyY2huMzIvMDAwMS1maXgtY29tcGlsaW5nLWZhaWx1cmUtb24tbWlwczY0LW4zMi1ic3AucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA2LXN1cHBvcnQtbXVzbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9tdXNsLzAwMDEtc3VwcG9ydC1tdXNsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwNi1zdXBwb3J0LW11c2wucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy9tdXNsLzAwMDEtc3VwcG9ydC1tdXNsLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1qcy1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzL211c2wvMDAwMi1qcy1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1qcy1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvbXVzbC8wMDAyLWpzLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqc182MC45LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anNfNjAuOS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0NjZjNjIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anNfNjAuOS4wLmJiCkBAIC0wLDAgKzEsMTM1IEBACitTVU1NQVJZID0gIlNwaWRlck1vbmtleSBpcyBNb3ppbGxhJ3MgSmF2YVNjcmlwdCBlbmdpbmUgd3JpdHRlbiBpbiBDL0MrKyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZGV2ZWxvcGVyLm1vemlsbGEub3JnL2VuLVVTL2RvY3MvTW96aWxsYS9Qcm9qZWN0cy9TcGlkZXJNb25rZXkiCitMSUNFTlNFID0gIk1QTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kYzliNmVjZDE5YTE0YTU0YTYyOGVkYWFmMjM3MzNiZiIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHBzOi8vYXJjaGl2ZS5tb3ppbGxhLm9yZy9wdWIvZmlyZWZveC9yZWxlYXNlcy8ke1BWfWVzci9zb3VyY2UvZmlyZWZveC0ke1BWfWVzci5zb3VyY2UudGFyLnh6IFwKKyAgICBmaWxlOi8vMDAwMS1Qb3J0LWJ1aWxkLXRvLXB5dGhvbjMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLWpzLnBjLmluLWRvLW5vdC1pbmNsdWRlLVJlcXVpcmVkRGVmaW5lcy5oLWZvci1kZXBlbmQucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLWZpeC1jcm9zcy1jb21waWxhdGlvbi1vbi1pNTg2LXRhcmdldHMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA0LWRvLW5vdC1jcmVhdGUtcHl0aG9uLWVudmlyb25tZW50LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNS1maXgtY2Fubm90LWZpbmQtbGluay5wYXRjaCBcCisgICAgZmlsZTovLzAwMDYtd29ya2Fyb3VuZC1hdXRvY29uZi0yLjEzLWRldGVjdGlvbi1mYWlsZWQucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA3LWZpeC1kb19jb21waWxlLWZhaWxlZC1vbi1taXBzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwOC1hZGQtcmlzY3Ytc3VwcG9ydC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDktbW96anMtZml4LWNvcmVkdW1wLWNhdXNlZC1ieS1nZXRlbnYucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDEwLWZvcm1hdC1vdmVyZmxvdy5wYXRjaCBcCisgICAgZmlsZTovLzAwMTEtVG8tZml4LWJ1aWxkLWVycm9yLW9uLWFybTMyQkUucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDEyLUpTX1BVQkxJQ19BUEkucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDEzLXJpc2N2LURpc2FibGUtYXRvbWljLW9wZXJhdGlvbnMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDE0LWZhbGxiYWNrLXRvLTIwMTEtQysrLXN0YW5kYXJkLnBhdGNoIFwKKyIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAorICAgIGZpbGU6Ly9tdXNsLzAwMDEtc3VwcG9ydC1tdXNsLnBhdGNoIFwKKyAgICBmaWxlOi8vbXVzbC8wMDAyLWpzLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAorIgorU1JDX1VSSV9hcHBlbmRfbWlwc2FyY2huMzIgPSAiIFwKKyAgICBmaWxlOi8vbWlwc2FyY2huMzIvMDAwMS1maXgtY29tcGlsaW5nLWZhaWx1cmUtb24tbWlwczY0LW4zMi1ic3AucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjY5YTBiZTljZTY5NWU1ZGM0OTQxZWQwYzc4ZWYwMGMyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmNDUzYzhjYzU2NjllNDZlMzhmOTc3NzY0ZDQ5YTM2Mjk1YmYwZDAyMzYxOWQ5YWFjNzgyZTZiYjNlOGM1M2YiCisKK1MgPSAiJHtXT1JLRElSfS9maXJlZm94LSR7QGQuZ2V0VmFyKCJQViIpLnJlcGxhY2UoImVzciIsICIiKX0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwZXJsbmF0aXZlIHB5dGhvbjNuYXRpdmUKKworaW5oZXJpdCBmZWF0dXJlc19jaGVjaworQ09ORkxJQ1RfRElTVFJPX0ZFQVRVUkVTX21pcHNhcmNobjMyID0gImxkLWlzLWdvbGQiCisKK0RFUEVORFMgKz0gIiBcCisgICAgbnNwciB6bGliIGF1dG9jb25mLTIuMTMtbmF0aXZlIFwKKyAgICBweXRob24zLXNpeC1uYXRpdmUgcHl0aG9uMy1weXRvbWwtbmF0aXZlIFwKKyAgICBweXRob24zLWpzbWluLW5hdGl2ZSBweXRob24zLXNpeCBcCisiCisKKyMgRGlzYWJsZSBudWxsIHBvaW50ZXIgb3B0aW1pemF0aW9uIGluIGdjYyA+PSA2CisjIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTMyODA0NQorQ0ZMQUdTICs9ICItZm5vLXRyZWUtdnJwIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tZGVsZXRlLW51bGwtcG9pbnRlci1jaGVja3MiCitDWFhGTEFHUyArPSAiLWZuby10cmVlLXZycCAtZm5vLXN0cmljdC1hbGlhc2luZyAtZm5vLWRlbGV0ZS1udWxsLXBvaW50ZXItY2hlY2tzIgorCisjIG5zcHIncyBwYWNrYWdlLWNvbmZpZyBpcyBpZ25vcmVkIHNvIHNldCBsaWJzIG1hbnVhbGx5CitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IFwKKyAgICAtLWhvc3Q9JHtCVUlMRF9TWVN9IFwKKyAgICAtLXByZWZpeD0ke3ByZWZpeH0gXAorICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCisgICAgLS1kaXNhYmxlLXRlc3RzIC0tZGlzYWJsZS1zdHJpcCAtLWRpc2FibGUtb3B0aW1pemUgXAorICAgIC0tZGlzYWJsZS1qZW1hbGxvYyBcCisgICAgLS13aXRoLW5zcHItY2ZsYWdzPSctSSR7U1RBR0lOR19JTkNESVJ9L25zcHIgLUkke1NUQUdJTkdfSU5DRElSfS9uc3MzJyBcCisgICAgLS13aXRoLW5zcHItbGlicz0nLWxwbGRzNCAtbHBsYzQgLWxuc3ByNCcgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICItLWVuYWJsZS1nb2xkIiwgJy0tZGlzYWJsZS1nb2xkJywgZCl9IFwKKyIKKworIyBXaXRob3V0IHRoaXMsIEpTX0luaXQoKSB3aWxsIGZhaWwgZm9yIG1pcHM2NC4KK0VYVFJBX09FQ09ORl9hcHBlbmRfbWlwc2FyY2ggPSAiIC0td2l0aC1pbnRsLWFwaT1idWlsZCIKK0VYVFJBX09FQ09ORl9hcHBlbmRfcG93ZXJwYyA9ICIgLS13aXRoLWludGwtYXBpPWJ1aWxkIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX21pcHNhcmNoID0gIiAtLWRpc2FibGUtaW9uIgorRVhUUkFfT0VDT05GX2FwcGVuZF9yaXNjdjY0ID0gIiAtLWRpc2FibGUtaW9uIgorRVhUUkFfT0VDT05GX2FwcGVuZF9yaXNjdjMyID0gIiAtLWRpc2FibGUtaW9uIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0teC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSAtLXgtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9LC0teC1pbmNsdWRlcz1ubyAtLXgtbGlicmFyaWVzPW5vLHZpcnR1YWwvbGlieDExIgorCitFWFRSQV9PRU1BS0VfdGFzay1jb21waWxlICs9ICJCVUlMRF9PUFQ9MSBPU19MREZMQUdTPSctV2wsLWxhdG9taWMgJHtMREZMQUdTfSciCitFWFRSQV9PRU1BS0VfdGFzay1pbnN0YWxsICs9ICJTVEFUSUNfTElCUkFSWV9OQU1FPWpzX3N0YXRpYyIKKworZXhwb3J0IEhPU1RfQ0MgPSAiJHtCVUlMRF9DQ30iCitleHBvcnQgSE9TVF9DWFggPSAiJHtCVUlMRF9DWFh9IgorZXhwb3J0IEhPU1RfQ0ZMQUdTID0gIiR7QlVJTERfQ0ZMQUdTfSIKK2V4cG9ydCBIT1NUX0NQUEZMQUdTID0gIiR7QlVJTERfQ1BQRkxBR1N9IgorZXhwb3J0IEhPU1RfQ1hYRkxBR1MgPSAiJHtCVUlMRF9DWFhGTEFHU30iCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICBleHBvcnQgU0hFTEw9Ii9iaW4vc2giCisgICAgY2QgJHtTfQorICAgICMgQWRkIG1vempzIHB5dGhvbi1tb2R1bGVzIG5lY2Vzc2FyeQorICAgIFBZVEhPTlBBVEg9IiR7U30vdGhpcmRfcGFydHkvcHl0aG9uL3doaWNoOiR7U30vY29uZmlnOiR7U30vYnVpbGQiCisgICAgZm9yIHN1Yl9kaXIgaW4gcHl0aG9uIHRlc3RpbmcvbW96YmFzZTsgZG8KKyAgICAgICAgZm9yIG1vZHVsZV9kaXIgaW4gYGxzICRzdWJfZGlyIC0xYDtkbworICAgICAgICAgICAgWyAkbW9kdWxlX2RpciA9ICJ2aXJ0dWFsZW52IiBdICYmIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBbIC1kICIke1N9LyRzdWJfZGlyLyRtb2R1bGVfZGlyIiBdO3RoZW4KKyAgICAgICAgICAgICAgICBQWVRIT05QQVRIPSIkUFlUSE9OUEFUSDoke1N9LyRzdWJfZGlyLyRtb2R1bGVfZGlyIgorICAgICAgICAgICAgZmkKKyAgICAgICAgZG9uZQorICAgIGRvbmUKKyAgICBlY2hvICIkUFlUSE9OUEFUSCIgPiAke0J9L1BZVEhPTlBBVEgKKyAgICBleHBvcnQgUFlUSE9OUEFUSD1gY2F0ICR7Qn0vUFlUSE9OUEFUSGAKKworICAgIGNkICR7U30vanMvc3JjCisgICAgYXV0b2NvbmYyMTMgLS1tYWNyb2Rpcj0ke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2F1dG9jb25mMjEzIG9sZC1jb25maWd1cmUuaW4gPiBvbGQtY29uZmlndXJlCisKKyAgICBjZCAke0J9CisgICAgJHtTfS9qcy9zcmMvY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQorCisgICAgIyBNYWtlIHN0YW5kYXJkIE1ha2VmaWxlIGNoZWNrcyBwYXNzCisgICAgdG91Y2ggJHtTfS9qcy9zcmMvY29uZmlndXJlCisgICAgdG91Y2ggJHtCfS9jb25maWcuc3RhdHVzCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgU0hFTEw9Ii9iaW4vc2giCisgICAgZXhwb3J0IFBZVEhPTlBBVEg9YGNhdCAke0J9L1BZVEhPTlBBVEhgCit9CisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgU0hFTEw9Ii9iaW4vc2giCisgICAgZXhwb3J0IFBZVEhPTlBBVEg9YGNhdCAke0J9L1BZVEhPTlBBVEhgCit9CisKK1BBQ0tBR0VTID0rICJsaWIke0JQTn0iCitGSUxFU19saWIke0JQTn0gKz0gIiR7bGliZGlyfS9saWIqLnNvIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vanM2MC1jb25maWciCisKKyMgRmFpbHMgdG8gYnVpbGQgd2l0aCB0aHVtYi0xIChxZW11YXJtKQorI3wge3N0YW5kYXJkIGlucHV0fTogQXNzZW1ibGVyIG1lc3NhZ2VzOgorI3wge3N0YW5kYXJkIGlucHV0fToyMTcyOiBFcnJvcjogc2hpZnRzIGluIENNUC9NT1YgaW5zdHJ1Y3Rpb25zIGFyZSBvbmx5IHN1cHBvcnRlZCBpbiB1bmlmaWVkIHN5bnRheCAtLSBgbW92IHIyLHIxLExTUiMyMCcKKyN8IHtzdGFuZGFyZCBpbnB1dH06MjE3MzogRXJyb3I6IHVuc2hpZnRlZCByZWdpc3RlciByZXF1aXJlZCAtLSBgYmljIHIyLHIyLCMoMTw8MTEpJworI3wge3N0YW5kYXJkIGlucHV0fToyMTc0OiBFcnJvcjogdW5zaGlmdGVkIHJlZ2lzdGVyIHJlcXVpcmVkIC0tIGBvcnIgcjEscjEsIygxPDwyMCknCisjfCB7c3RhbmRhcmQgaW5wdXR9OjIxNzY6IEVycm9yOiBpbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGluIFRodW1iMTYgbW9kZSAtLSBgc3VicyByMixyMiwjMHgzMDAnCisjfCB7c3RhbmRhcmQgaW5wdXR9OjIxNzg6IEVycm9yOiBpbnN0cnVjdGlvbiBub3Qgc3VwcG9ydGVkIGluIFRodW1iMTYgbW9kZSAtLSBgc3VicyByNSxyMiwjNTInCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorCitESVNBQkxFX1NUQVRJQyA9ICIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtc3VwcG9ydC9zbWVtL3NtZW0vMDAwMS1zbWVtLWZpeC1zdXBwb3J0LWZvci1zb3VyY2Utb3B0aW9uLXB5dGhvbjMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL21ldGEtcHl0aG9uL3JlY2lwZXMtc3VwcG9ydC9zbWVtL3NtZW0vMDAwMS1zbWVtLWZpeC1zdXBwb3J0LWZvci1zb3VyY2Utb3B0aW9uLXB5dGhvbjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWMxYmU1YQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1zdXBwb3J0L3NtZW0vc21lbS8wMDAxLXNtZW0tZml4LXN1cHBvcnQtZm9yLXNvdXJjZS1vcHRpb24tcHl0aG9uMy5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIDNmZjc4ZjFmMDA5NzMzOTNkMWE3ZWU0ZTQ2N2EyYmFjZjFjODA3ZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8Z2l0QGFuZHJlZC5uZXQ+CitEYXRlOiBXZWQsIDUgRmViIDIwMjAgMTY6MTQ6MjEgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gc21lbTogZml4IHN1cHBvcnQgZm9yIC0tc291cmNlIG9wdGlvbiAocHl0aG9uMykKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVXNpbmcgLS1zb3VyY2UgZG9lc24ndCB3b3JrIHdpdGhvdXQgdGhpcyBwYXRjaDoKK1RyYWNlYmFjayAobW9zdCByZWNlbnQgY2FsbCBsYXN0KToKKyAgRmlsZSAiLi9zbWVtIiwgbGluZSA3MjcsIGluIDxtb2R1bGU+CisgICAgc2hvd3BpZHMoKQorICBGaWxlICIuL3NtZW0iLCBsaW5lIDI5OSwgaW4gc2hvd3BpZHMKKyAgICBzaG93dGFibGUocHQua2V5cygpLCBmaWVsZHMsIGNvbHVtbnMuc3BsaXQoKSwgb3B0aW9ucy5zb3J0IG9yICdwc3MnKQorICBGaWxlICIuL3NtZW0iLCBsaW5lIDUxOSwgaW4gc2hvd3RhYmxlCisgICAgbXQgPSB0b3RhbG1lbSgpCisgIEZpbGUgIi4vc21lbSIsIGxpbmUgMTE4LCBpbiB0b3RhbG1lbQorICAgIF90b3RhbG1lbSA9IG1lbW9yeSgpWydtZW10b3RhbCddCisgIEZpbGUgIi4vc21lbSIsIGxpbmUgMTkzLCBpbiBtZW1vcnkKKyAgICBtID0gZi5tYXRjaChsKQorVHlwZUVycm9yOiBjYW5ub3QgdXNlIGEgc3RyaW5nIHBhdHRlcm4gb24gYSBieXRlcy1saWtlIG9iamVjdAorCitweXRob24zJ3MgdGFyZmlsZSByZXR1cm5zIGJ5dGVzLCB3aGVyZWFzIGFsbCBvZiB0aGUgcmVzdCBvZgordGhlIGNvZGUgYXNzdW1lcyBzdHIuCisKK0ZpeCB0aGUgdGFyZmlsZSB1c2FnZSB0byBjb252ZXJ0IHRvIHN0ciBiZWZvcmUgcmV0dXJuaW5nIHRoZQorcmVzdWx0cy4KKworU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGdpdEBhbmRyZWQubmV0PgorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt1cHN0cmVhbSB3YW50cyB0byBzdXBwb3J0IHB5dGhvbjIgJiBweXRob24zXQorLS0tCisgc21lbSB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zbWVtIGIvc21lbQoraW5kZXggNDZhMzE4OS4uNTRkNDBkZCAxMDA3NTUKKy0tLSBhL3NtZW0KKysrKyBiL3NtZW0KK0BAIC05MCw5ICs5MCw5IEBAIGNsYXNzIHRhcmRhdGEocHJvY2RhdGEpOgorICAgICAgICAgICAgICAgICBkLGYgPSB0aS5uYW1lLnNwbGl0KCcvJykKKyAgICAgICAgICAgICAgICAgeWllbGQgZAorICAgICBkZWYgX3JlYWQoc2VsZiwgZik6CistICAgICAgICByZXR1cm4gc2VsZi50YXIuZXh0cmFjdGZpbGUoZikucmVhZCgpCisrICAgICAgICByZXR1cm4gc2VsZi50YXIuZXh0cmFjdGZpbGUoZikucmVhZCgpLmRlY29kZSgpCisgICAgIGRlZiBfcmVhZGxpbmVzKHNlbGYsIGYpOgorLSAgICAgICAgcmV0dXJuIHNlbGYudGFyLmV4dHJhY3RmaWxlKGYpLnJlYWRsaW5lcygpCisrICAgICAgICByZXR1cm4gW2wuZGVjb2RlKCkgZm9yIGwgaW4gc2VsZi50YXIuZXh0cmFjdGZpbGUoZikucmVhZGxpbmVzKCldCisgICAgIGRlZiBwaWR1c2VyKHNlbGYsIHApOgorICAgICAgICAgdCA9IHNlbGYudGFyLmdldG1lbWJlcigiJWQiICUgcCkKKyAgICAgICAgIGlmIHQudW5hbWU6CistLSAKKzIuMjMuMC5yYzEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9tZXRhLXB5dGhvbi9yZWNpcGVzLXN1cHBvcnQvc21lbS9zbWVtXzEuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1zdXBwb3J0L3NtZW0vc21lbV8xLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTBkYjljMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvbWV0YS1weXRob24vcmVjaXBlcy1zdXBwb3J0L3NtZW0vc21lbV8xLjUuYmIKQEAgLTAsMCArMSw0MyBAQAorU1VNTUFSWSA9ICJSZXBvcnQgYXBwbGljYXRpb24gbWVtb3J5IHVzYWdlIGluIGEgbWVhbmluZ2Z1bCB3YXkiCitERVNDUklQVElPTiA9ICJzbWVtIGlzIGEgdG9vbCB0aGF0IGNhbiBnaXZlIG51bWVyb3VzIHJlcG9ydHMgb24gbWVtb3J5IHVzYWdlIG9uIExpbnV4IFwKK3N5c3RlbXMuIFVubGlrZSBleGlzdGluZyB0b29scywgc21lbSBjYW4gcmVwb3J0IHByb3BvcnRpb25hbCBzZXQgc2l6ZSAoUFNTKSwgXAord2hpY2ggaXMgYSBtb3JlIG1lYW5pbmdmdWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIGFtb3VudCBvZiBtZW1vcnkgdXNlZCBieSBcCitsaWJyYXJpZXMgYW5kIGFwcGxpY2F0aW9ucyBpbiBhIHZpcnR1YWwgbWVtb3J5IHN5c3RlbS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnNlbGVuaWMuY29tL3NtZW0vIgorU0VDVElPTiA9ICJBcHBsaWNhdGlvbnMvU3lzdGVtIgorCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitIR19DSEFOR0VTRVQgPSAiOTgyNzNjZTMzMWJiIgorU1JDX1VSSSA9ICJodHRwczovL3NlbGVuaWMuY29tL3JlcG8vJHtCUE59L2FyY2hpdmUvJHtIR19DSEFOR0VTRVR9LnRhci5iejI7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc21lbS1maXgtc3VwcG9ydC1mb3Itc291cmNlLW9wdGlvbi1weXRob24zLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gIjUxYzM5ODk3NzkzNjBmNDJiNDJlZjQ2YjI4MzFiZTNhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE2MTEzMWM2ODZhNmQ5OTYyYTBlOTY5MTI1MjZkZDQ2MzA4ZTAyMmQ2MmUzZjhhY2FlZDVhNTZmZGE4ZTA4Y2UiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NlbGVuaWMuY29tL3JlcG8vc21lbS90YWdzIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitTID0gIiR7V09SS0RJUn0vJHtCUE59LSR7SEdfQ0hBTkdFU0VUfSIKKworZG9fY29tcGlsZSgpIHsKKyAgICAgICAgJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30gc21lbWNhcC5jIC1vIHNtZW1jYXAKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7bWFuZGlyfS9tYW44CisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3NtZW0gJHtEfSR7YmluZGlyfS8KKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtEfSR7YmluZGlyfS9zbWVtCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3NtZW1jYXAgJHtEfSR7YmluZGlyfS8KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vc21lbS44ICR7RH0vJHttYW5kaXJ9L21hbjgvCit9CisKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtY29yZSBweXRob24zLWNvbXByZXNzaW9uIgorUlJFQ09NTUVORFNfJHtQTn0gPSAicHl0aG9uMy1tYXRwbG90bGliIHB5dGhvbjMtbnVtcHkiCisKK1BBQ0tBR0VfQkVGT1JFX1BOID0gInNtZW1jYXAiCisKK0ZJTEVTX3NtZW1jYXAgPSAiJHtiaW5kaXJ9L3NtZW1jYXAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9wZXJsLWxheWVyL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLW9lLmJiYXBwZW5kIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9wZXJsLWxheWVyL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLW9lLmJiYXBwZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5YmM3ODgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2R5bmFtaWMtbGF5ZXJzL3BlcmwtbGF5ZXIvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtb2UuYmJhcHBlbmQKQEAgLTAsMCArMSBAQAorUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2Utc3VwcG9ydCArPSAiZGVic3VtcyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvcGVybC1sYXllci9yZWNpcGVzLXN1cHBvcnQvZGVic3Vtcy9kZWJzdW1zXzIuMi4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9keW5hbWljLWxheWVycy9wZXJsLWxheWVyL3JlY2lwZXMtc3VwcG9ydC9kZWJzdW1zL2RlYnN1bXNfMi4yLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDdhYjVlNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvZHluYW1pYy1sYXllcnMvcGVybC1sYXllci9yZWNpcGVzLXN1cHBvcnQvZGVic3Vtcy9kZWJzdW1zXzIuMi4yLmJiCkBAIC0wLDAgKzEsNTYgQEAKK1NVTU1BUlkgPSAiTWlzY2VsbGFuZW91cyB1dGlsaXRpZXMgc3BlY2lmaWMgdG8gRGViaWFuIgorU1VNTUFSWV8ke1BOfS1jcm9uID0gIkNyb24gc2NyaXB0cyB0byBjb250cm9sIGF1dG9tYXRpYyBkZWJzdW0gY2hlY2tpbmciCitERVNDUklQVElPTiA9ICJBIHRvb2wgZm9yIHZlcmlmaWNhdGlvbiBvZiBpbnN0YWxsZWQgcGFja2FnZSBmaWxlcyBhZ2FpbnN0IFwKK01ENSBjaGVja3N1bXMgZGVic3VtcyBjYW4gdmVyaWZ5IHRoZSBpbnRlZ3JpdHkgb2YgaW5zdGFsbGVkIHBhY2thZ2UgZmlsZXMgXAorYWdhaW5zdCBNRDUgY2hlY2tzdW1zIGluc3RhbGxlZCBieSB0aGUgcGFja2FnZSwgb3IgZ2VuZXJhdGVkIGZyb20gYSAuZGViIFwKK2FyY2hpdmUuIgorREVTQ1JJUFRJT05fJHtQTn0tY3JvbiA9ICJDcm9uIHNjcmlwdHMgdG8gY29udHJvbCBhdXRvbWF0aWMgc3lzdGVtIGludGVncml0eSBcCitjaGVja2luZyB2aWEgZGVic3Vtcy4iCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9NzcwZDc1MTU1M2U2NTU5ZTllYWVmZDJlMTFjY2Y3ZTkiCisKK1NSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNzA1MzBUMjEyMTA4Wi9wb29sL21haW4vZC9kZWJzdW1zL2RlYnN1bXNfMi4yLjIudGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjgyYjA3MTA4NTVhN2U1MjEyZDQzNTgxNjNhMjY5ZTc5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFhNjE4OTZmOTNhNmJiZmUwMTYxYzIxZGNkNjc1MjlhZThlMWVjOGMzY2NmMjQ0NTIzYzUyYzRhZDgyNTNkOTciCisKKyMgdGhlIHBhY2thZ2UgaXMgdGFrZW4gZnJvbSBzbmFwc2hvdHMuZGViaWFuLm9yZzsgdGhhdCBzb3VyY2UgaXMgc3RhdGljIGFuZCBnb2VzIHN0YWxlCisjIHNvIHdlIGNoZWNrIHRoZSBsYXRlc3QgdXBzdHJlYW0gZnJvbSBhIGRpcmVjdG9yeSB0aGF0IGRvZXMgZ2V0IHVwZGF0ZWQKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vZC8ke0JQTn0vIgorCitpbmhlcml0IHBlcmxuYXRpdmUgZ2V0dGV4dAorCitERVBFTkRTICs9ICJwbzRhLW5hdGl2ZSIKKworZG9faW5zdGFsbCgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseSAke0R9LyR7c3lzY29uZmRpcn0vY3Jvbi53ZWVrbHkKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vY3Jvbi5tb250aGx5ICR7RH0ke3NiaW5kaXJ9ICR7RH0ke2JpbmRpcn0KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjEgJHtEfSR7bWFuZGlyfS9tYW44CisgICAgICAgIGluc3RhbGwgLW0gMDc1NSBkZWJzdW1zICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSByZGVic3VtcyAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsIC1tIDA3NTUgZGVic3Vtc19pbml0ICR7RH0ke3NiaW5kaXJ9CisgICAgICAgIGluc3RhbGwgLW0gMDY0NCBtYW4vZGVic3Vtcy4xICR7RH0ke21hbmRpcn0vbWFuMS8KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IG1hbi9yZGVic3Vtcy4xICR7RH0ke21hbmRpcn0vbWFuMS8KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IG1hbi9kZWJzdW1zX2luaXQuOCAke0R9JHttYW5kaXJ9L21hbjgvCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCBkZWJpYW4vY3Jvbi5kYWlseSBcCisgICAgICAgICAgICAgICAgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkvZGVic3VtcworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgZGViaWFuL2Nyb24ud2Vla2x5IFwKKyAgICAgICAgICAgICAgICAke0R9LyR7c3lzY29uZmRpcn0vY3Jvbi53ZWVrbHkvZGVic3VtcworICAgICAgICBpbnN0YWxsIC1tIDA2NDQgZGViaWFuL2Nyb24ubW9udGhseSBcCisgICAgICAgICAgICAgICAgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nyb24ubW9udGhseS9kZWJzdW1zCisgICAgICAgICMgTXVzdCBleGlzdCwgZGVmYXVsdHMgdG8gZW1wdHkuCisgICAgICAgIHRvdWNoICR7RH0vJHtzeXNjb25mZGlyfS9kZWJzdW1zLWlnbm9yZQorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tY3JvbiIKKworUkRFUEVORFNfJHtQTn0gPSAiZHBrZyBkcGtnLXBlcmwgbGliZmlsZS1mbm1hdGNoLXBlcmwgcGVybCBcCisgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jb25zdGFudCBwZXJsLW1vZHVsZS1kaWdlc3QtbWQ1IFwKKyAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWVycm5vIHBlcmwtbW9kdWxlLWZjbnRsIFwKKyAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtYmFzZW5hbWUgcGVybC1tb2R1bGUtZmlsZS1jb3B5IFwKKyAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtZmluZCBwZXJsLW1vZHVsZS1maWxlLWdsb2IgXAorICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1wYXRoIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCisgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXRlbXAgcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgXAorICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtcG9zaXgiCisKK0ZJTEVTXyR7UE59LWNyb24gPSAiJHtzeXNjb25mZGlyfS9jcm9uLioiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2xpY2Vuc2VzL3d4V2lkZ2V0cyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvbGljZW5zZXMvd3hXaWRnZXRzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmNmI5ZDYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL2xpY2Vuc2VzL3d4V2lkZ2V0cwpAQCAtMCwwICsxLDU0IEBACisgICAgICAgICAgICAgICAgd3hXaW5kb3dzIExpYnJhcnkgTGljZW5jZSwgVmVyc2lvbiAzLjEKKyAgICAgICAgICAgICAgICA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorCisgIENvcHlyaWdodCAoYykgMTk5OC0yMDA1IEp1bGlhbiBTbWFydCwgUm9iZXJ0IFJvZWJsaW5nIGV0IGFsCisKKyAgRXZlcnlvbmUgaXMgcGVybWl0dGVkIHRvIGNvcHkgYW5kIGRpc3RyaWJ1dGUgdmVyYmF0aW0gY29waWVzCisgIG9mIHRoaXMgbGljZW5jZSBkb2N1bWVudCwgYnV0IGNoYW5naW5nIGl0IGlzIG5vdCBhbGxvd2VkLgorCisgICAgICAgICAgICAgICAgICAgICAgIFdYV0lORE9XUyBMSUJSQVJZIExJQ0VOQ0UKKyAgICAgVEVSTVMgQU5EIENPTkRJVElPTlMgRk9SIENPUFlJTkcsIERJU1RSSUJVVElPTiBBTkQgTU9ESUZJQ0FUSU9OCisKKyAgVGhpcyBsaWJyYXJ5IGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKKyAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbmNlIGFzIHB1Ymxpc2hlZCBieQorICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbmNlLCBvciAoYXQKKyAgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorCisgIFRoaXMgbGlicmFyeSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLCBidXQKKyAgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVSBMaWJyYXJ5CisgIEdlbmVyYWwgUHVibGljIExpY2VuY2UgZm9yIG1vcmUgZGV0YWlscy4KKworICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbmNlCisgIGFsb25nIHdpdGggdGhpcyBzb2Z0d2FyZSwgdXN1YWxseSBpbiBhIGZpbGUgbmFtZWQgQ09QWUlORy5MSUIuICBJZiBub3QsCisgIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsCisgIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCisKKyAgRVhDRVBUSU9OIE5PVElDRQorCisgIDEuIEFzIGEgc3BlY2lhbCBleGNlcHRpb24sIHRoZSBjb3B5cmlnaHQgaG9sZGVycyBvZiB0aGlzIGxpYnJhcnkgZ2l2ZQorICBwZXJtaXNzaW9uIGZvciBhZGRpdGlvbmFsIHVzZXMgb2YgdGhlIHRleHQgY29udGFpbmVkIGluIHRoaXMgcmVsZWFzZSBvZgorICB0aGUgbGlicmFyeSBhcyBsaWNlbmNlZCB1bmRlciB0aGUgd3hXaW5kb3dzIExpYnJhcnkgTGljZW5jZSwgYXBwbHlpbmcKKyAgZWl0aGVyIHZlcnNpb24gMy4xIG9mIHRoZSBMaWNlbmNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uIG9mCisgIHRoZSBMaWNlbmNlIGFzIHB1Ymxpc2hlZCBieSB0aGUgY29weXJpZ2h0IGhvbGRlcnMgb2YgdmVyc2lvbgorICAzLjEgb2YgdGhlIExpY2VuY2UgZG9jdW1lbnQuCisKKyAgMi4gVGhlIGV4Y2VwdGlvbiBpcyB0aGF0IHlvdSBtYXkgdXNlLCBjb3B5LCBsaW5rLCBtb2RpZnkgYW5kIGRpc3RyaWJ1dGUKKyAgdW5kZXIgeW91ciBvd24gdGVybXMsIGJpbmFyeSBvYmplY3QgY29kZSB2ZXJzaW9ucyBvZiB3b3JrcyBiYXNlZAorICBvbiB0aGUgTGlicmFyeS4KKworICAzLiBJZiB5b3UgY29weSBjb2RlIGZyb20gZmlsZXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKKyAgR2VuZXJhbCBQdWJsaWMgTGljZW5jZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5jZSBpbnRvIGEKKyAgY29weSBvZiB0aGlzIGxpYnJhcnksIGFzIHRoaXMgbGljZW5jZSBwZXJtaXRzLCB0aGUgZXhjZXB0aW9uIGRvZXMgbm90CisgIGFwcGx5IHRvIHRoZSBjb2RlIHRoYXQgeW91IGFkZCBpbiB0aGlzIHdheS4gIFRvIGF2b2lkIG1pc2xlYWRpbmcgYW55b25lIGFzCisgIHRvIHRoZSBzdGF0dXMgb2Ygc3VjaCBtb2RpZmllZCBmaWxlcywgeW91IG11c3QgZGVsZXRlIHRoaXMgZXhjZXB0aW9uCisgIG5vdGljZSBmcm9tIHN1Y2ggY29kZSBhbmQvb3IgYWRqdXN0IHRoZSBsaWNlbnNpbmcgY29uZGl0aW9ucyBub3RpY2UKKyAgYWNjb3JkaW5nbHkuCisKKyAgNC4gSWYgeW91IHdyaXRlIG1vZGlmaWNhdGlvbnMgb2YgeW91ciBvd24gZm9yIHRoaXMgbGlicmFyeSwgaXQgaXMgeW91cgorICBjaG9pY2Ugd2hldGhlciB0byBwZXJtaXQgdGhpcyBleGNlcHRpb24gdG8gYXBwbHkgdG8geW91ciBtb2RpZmljYXRpb25zLgorICBJZiB5b3UgZG8gbm90IHdpc2ggdGhhdCwgeW91IG11c3QgZGVsZXRlIHRoZSBleGNlcHRpb24gbm90aWNlIGZyb20gc3VjaAorICBjb2RlIGFuZC9vciBhZGp1c3QgdGhlIGxpY2Vuc2luZyBjb25kaXRpb25zIG5vdGljZSBhY2NvcmRpbmdseS4KKworCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvYW5hbHl6ZS1zdXNwZW5kL2FuYWx5emUtc3VzcGVuZF81LjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2FuYWx5emUtc3VzcGVuZC9hbmFseXplLXN1c3BlbmRfNS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjBhYWQzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvYW5hbHl6ZS1zdXNwZW5kL2FuYWx5emUtc3VzcGVuZF81LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1TVU1NQVJZID0gIkFuYWx5emUgU3VzcGVuZCIKLURFU0NSSVBUSU9OID0gImFuYWx5emUtc3VzcGVuZCBpcyBhIHRvb2wgZm9yIHN5c3RlbSBkZXZlbG9wZXJzIHRvIHZpc3VhbGl6ZSBcCi10aGUgYWN0aXZpdHkgYmV0d2VlbiBzdXNwZW5kIGFuZCByZXN1bWUsIGFsbG93aW5nIHRoZW0gdG8gaWRlbnRpZnkgXAotaW5lZmZpY2llbmNpZXMgYW5kIGJvdHRsZW5lY2tzLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL3N1c3BlbmRyZXN1bWUiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTJmODg0ZDJhZTFmZjg3YzA5ZTViN2NjYzJjNGNhN2UiCi0KLSMgQXBhcnQgZnJvbSB0aGUgbGlzdGVkIFJERVBFTkRTLCBhbmFseXplLXN1c3BlbmQgZGVwZW5kcyBvbiBzb21lIGZlYXR1cmVzCi0jIHByb3ZpZGVkIGJ5IHRoZSBrZXJuZWwuIFRoZXNlIG9wdGlvbnMgYXJlOgotIyAgIC0gQ09ORklHX1BNX0RFQlVHPXkKLSMgICAtIENPTkZJR19QTV9TTEVFUF9ERUJVRz15Ci0jICAgLSBDT05GSUdfRlRSQUNFPXkKLSMgICAtIENPTkZJR19GVU5DVElPTl9UUkFDRVI9eQotIyAgIC0gQ09ORklHX0ZVTkNUSU9OX0dSQVBIX1RSQUNFUj15Ci0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tY29yZSBweXRob24tZGF0ZXRpbWUgcHl0aG9uLXN0cmluZ29sZCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tLzAxb3JnL3N1c3BlbmRyZXN1bWUuZ2l0O3Byb3RvY29sPWh0dHBzIgotU1JDUkVWID0gImNmNTk1MjdkYzI0ZmRkMmYzMTRhZTRkY2FlYjNkNjhhMTE3OTg4ZjYiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtRG0gMDc1NSBhbmFseXplX3N1c3BlbmQucHkgJHtEfSR7YmluZGlyfS9hbmFseXplX3N1c3BlbmQucHkKLSAgICBpbnN0YWxsIC1EbSAwNjQ0IFJFQURNRSAke0R9JHtkb2NkaXJ9L2FuYWx5emUtc3VzcGVuZC9SRUFETUUKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2Zpby9maWxlcy9weXRob24zX3NoZWJhbmdzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9maW8vZmlsZXMvcHl0aG9uM19zaGViYW5ncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjhiMDIxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9maW8vZmlsZXMvcHl0aG9uM19zaGViYW5ncy5wYXRjaApAQCAtMCwwICsxLDM4IEBACitweXRob24zOiBjaGFuZ2UgZm91ciBzaGViYW5ncyB0byBweXRob24zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqb2Uuc2xhdGVyQHdpbmRyaXZlci5jb20+CisKKy0tLSBhL3Rvb2xzL2Zpb19qc29ucGx1c19jbGF0MmNzdgorKysrIGIvdG9vbHMvZmlvX2pzb25wbHVzX2NsYXQyY3N2CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyBOb3RlOiB0aGlzIHNjcmlwdCBpcyBweXRob24yIGFuZCBweXRob24zIGNvbXBhdGlibGUuCisgIworICMgZmlvX2pzb25wbHVzX2NsYXQyY3N2CistLS0gYS90b29scy9maW9sb2dwYXJzZXIucHkKKysrKyBiL3Rvb2xzL2Zpb2xvZ3BhcnNlci5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgTm90ZTogdGhpcyBzY3JpcHQgaXMgcHl0aG9uMiBhbmQgcHl0aG9uIDMgY29tcGF0aWJsZS4KKyAjCisgIyBmaW9sb2dwYXJzZXIucHkKKy0tLSBhL3Rvb2xzL2hpc3QvZmlvbG9ncGFyc2VyX2hpc3QucHkKKysrKyBiL3Rvb2xzL2hpc3QvZmlvbG9ncGFyc2VyX2hpc3QucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIgCisgICAgIFV0aWxpdHkgZm9yIGNvbnZlcnRpbmcgKl9jbGF0X2hpc3QqIGZpbGVzIGdlbmVyYXRlZCBieSBmaW8gaW50byBsYXRlbmN5IHN0YXRpc3RpY3MuCisgICAgIAorLS0tIGEvdG9vbHMvcGxvdC9maW8yZ251cGxvdAorKysrIGIvdG9vbHMvcGxvdC9maW8yZ251cGxvdAorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgTm90ZTogdGhpcyBzY3JpcHQgaXMgcHl0aG9uMiBhbmQgcHl0aG9uMyBjb21wYXRpYmxlLgorICMKKyAjICBDb3B5cmlnaHQgKEMpIDIwMTMgZU5vdmFuY2UgU0FTIDxsaWNlbnNpbmdAZW5vdmFuY2UuY29tPgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9maW8vZmlvXzMuMTcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2Zpby9maW9fMy4xNy5iYgppbmRleCBlNDFjMjFkLi43NTlkMTA4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2Zpby9maW9fMy4xNy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2Zpby9maW9fMy4xNy5iYgpAQCAtMTEsNyArMTEsOCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCiAKIERFUEVORFMgPSAibGliYWlvIHpsaWIgY29yZXV0aWxzLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbiBiYXNoIgorREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAncG1lbScsICdwbWRrJywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtY29yZSBiYXNoIgogCiBQQUNLQUdFQ09ORklHX05VTUEgPSAibnVtYSIKICMgQVJNIGRvZXMgbm90IGN1cnJlbnRseSBzdXBwb3J0IE5VTUEKQEAgLTI0LDYgKzI1LDcgQEAKIFNSQ1JFViA9ICIwOGNlOWRjMjBiOGE0ZTU1ZGI3YWY2ZDg2OWRkZmE0OWI0YTAyZDAzIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLmRrL2Zpby5naXQgXAogICAgICAgICAgIGZpbGU6Ly8wMDAxLXVwZGF0ZS10aGUtaW50ZXJwcmV0ZXItcGF0aHMucGF0Y2ggXAorICAgICAgICAgIGZpbGU6Ly9weXRob24zX3NoZWJhbmdzLnBhdGNoIFwKICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKQEAgLTMyLDcgKzM0LDcgQEAKIERJU0FCTEVfU1RBVElDID0gIiIKIAogRVhUUkFfT0VNQUtFID0gIkNDPScke0NDfScgTERGTEFHUz0nJHtMREZMQUdTfSciCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLW9wdGltaXphdGlvbnMiCitFWFRSQV9PRUNPTkYgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAneDg2JywgJy0tZGlzYWJsZS1vcHRpbWl6YXRpb25zJywgJycsIGQpfSIKIAogZG9fY29uZmlndXJlKCkgewogICAgIC4vY29uZmlndXJlICR7RVhUUkFfT0VDT05GfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9nbG1hcmsyL2dsbWFyazJfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9nbG1hcmsyL2dsbWFyazJfZ2l0LmJiCmluZGV4IDUwYjU1M2MuLjZkMjBiYmQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvZ2xtYXJrMi9nbG1hcmsyX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2dsbWFyazIvZ2xtYXJrMl9naXQuYmIKQEAgLTEwLDEzICsxMCwxMyBAQAogCiBERVBFTkRTID0gImxpYnBuZyBqcGVnIHVkZXYiCiAKLVBWID0gIjIwMTkwOTA0KyR7U1JDUFZ9IgorUFYgPSAiMjAxOTEyMjYrJHtTUkNQVn0iCiAKIENPTVBBVElCTEVfSE9TVF9ycGkgID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3ZjNGdyYXBoaWNzJywgJy4qLWxpbnV4KicsICdudWxsJywgZCl9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZ2xtYXJrMi9nbG1hcmsyLmdpdDtwcm90b2NvbD1odHRwcyBcCiAgICAgICAgICAgIGZpbGU6Ly9weXRob24zLnBhdGNoIgotU1JDUkVWID0gIjI0YTExMzlkY2JmZDg2YmQwMjA2NTMxNmVhYTkwNTU5ZTM5Mzc0ZTEiCitTUkNSRVYgPSAiNzJkYWJjNWQ3MmI0OWM2ZDQ1YmFkZWI4YTk0MWJhNGQ4MjliMGJkNiIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pb3pvbmUzL2lvem9uZTNfNDg4LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pb3pvbmUzL2lvem9uZTNfNDg4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZDllMDc3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvaW96b25lMy9pb3pvbmUzXzQ4OC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyMCArMCwwIEBACi1TVU1NQVJZID0gIkZpbGVzeXN0ZW0gYW5kIERpc2sgQmVuY2htYXJraW5nIFRvb2wiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lmlvem9uZS5vcmcvIgotQVVUSE9SID0gIkRvbiBDYXBwcyA8ZG9uLmNhcHBzMkB2ZXJpem9uLm5ldD4sIFdpbGxpYW0gRC4gTm9yY290dCA8d25vcmNvdHRAdXMub3JhY2xlLmNvbT4iCi1TRUNUSU9OID0gImNvbnNvbGUvdGVzdHMiCi1MSUNFTlNFID0gImlvem9uZTMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9pb3pvbmUuYztiZWdpbmxpbmU9Mzc7ZW5kbGluZT00ODttZDU9NzMzMTI2MDA5MTg2OGRjYWQwZjllZGVhNzM1YjVmNGIgXAotICAgIGZpbGU6Ly9pb3pvbmUuYztiZWdpbmxpbmU9Mjc2O2VuZGxpbmU9MjgyO21kNT03N2Y5ZWU1MWU0NWI1N2E3ZTc1MTljNGZhMGI0ZjAwYiBcCi0iCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuaW96b25lLm9yZy9zcmMvY3VycmVudC8ke0JQTn1fJHtQVn0udGFyIFwKLSAgICBmaWxlOi8vcGFyYWxsZWxpc20ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWxldC1zeXN0ZW0taGVhZGVycy1wcm92aWRlLXByZWFkNjQucGF0Y2ggXAotICAgIGZpbGU6Ly9jb3B5cmlnaHQudHh0IFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkNjBhNjllNDRjZGE4NDM2ZjRmOTRkODYwOTU4ZWZjMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NjAyNjUxNjNkOTNmMTVmN2FkMzUyZjcyNmQ0ODM3YzVkZDc5NGZmZjM1N2M3NDNmZGI1NmNiY2Y0YWJjYTA0IgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJpb3pvbmUzXyg/UDxwdmVyPlxkKykudGFyIgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59XyR7UFZ9L3NyYy9jdXJyZW50LyIKLQotIwotIyBBbGwgb3RoZXIgYXJjaGVzIGNhbiB1c2UgdGhlIGRlZmF1bHQgT0VNQUtFIGV4Y2VwdCB0aG9zZQotIyBleHBsaWNpdGx5IGxpc3RlZCBiZWxvdy4gQW5vdGhlciwgdGhlIGlvem9uZTMgTWFrZWZpbGUKLSMgbmVlZHMgdG8gYmUgdG9sZCBhYm91dCB0aGUgY3Jvc3MtY29tcGlsZXIgZXhwbGljaXRseSBoZXJlLgotIwotRVhUUkFfT0VNQUtFX3Bvd2VycGMgPSAibGludXgtcG93ZXJwYyBDQz0nJHtDQ30nIEdDQz0nJHtDQ30nIgotRVhUUkFfT0VNQUtFX3Bvd2VycGM2NCA9ICJsaW51eC1wb3dlcnBjNjQgQ0M9JyR7Q0N9JyBHQ0M9JyR7Q0N9JyIKLUVYVFJBX09FTUFLRV94ODYtNjQgPSAibGludXgtQU1ENjQgQ0M9JyR7Q0N9JyBHQ0M9JyR7Q0N9JyIKLUVYVFJBX09FTUFLRV9hcm0gPSAibGludXgtYXJtIENDPScke0NDfScgR0NDPScke0NDfSciCi1FWFRSQV9PRU1BS0UgPSAibGludXggQ0M9JyR7Q0N9JyBHQ0M9JyR7Q0N9JyIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9IFwKLSAgICAgICAgICAgICAgICR7RH0ke21hbmRpcn0vbWFuMSBcCi0gICAgICAgICAgICAgICAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59L2V4YW1wbGVzCi0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9pb3pvbmUgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2ZpbGVvcCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vJHtCUE59XyR7UFZ9L2RvY3MvaW96b25lLjEgJHtEfSR7bWFuZGlyfS9tYW4xLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2NvcHlyaWdodC50eHQgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS8KLQotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9LyouZGVtICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vZXhhbXBsZXMKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9jbGllbnRfbGlzdCAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59L2V4YW1wbGVzCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vR251cGxvdC50eHQgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS9leGFtcGxlcwotCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vR2VuZXJhdGVfR3JhcGhzICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vZXhhbXBsZXMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9nZW5nbnVwbG90LnNoICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vZXhhbXBsZXMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9yZXBvcnQucGwgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS9leGFtcGxlcwotCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vJHtCUE59XyR7UFZ9L2RvY3MvSW96b25lX3BzLmd6ICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vJHtCUE59XyR7UFZ9L2RvY3MvSU96b25lX21zd29yZF85OC5wZGYgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8ke0JQTn1fJHtQVn0vZG9jcy9SdW5fcnVsZXMuZG9jICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RvYy8ke1BOfS9jb3B5cmlnaHQudHh0IgotCi0jIExJQ0VOU0U6Ci0jCi0jICBDb3B5cmlnaHQgMTk5MSwgMTk5MiwgMTk5NCwgMTk5OCwgMTk5OSwgMjAwMiAgIFdpbGxpYW0gRC4gTm9yY290dAotIwotIyAgTGljZW5zZSB0byBmcmVlbHkgdXNlIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgaXMgaGVyZWJ5IGdyYW50ZWQKLSMgIGJ5IHRoZSBhdXRob3IsIHN1YmplY3QgdG8gdGhlIGNvbmRpdGlvbiB0aGF0IHRoaXMgY29weXJpZ2h0IG5vdGljZQotIyAgcmVtYWlucyBpbnRhY3QuICBUaGUgYXV0aG9yIHJldGFpbnMgdGhlIGV4Y2x1c2l2ZSByaWdodCB0byBwdWJsaXNoCi0jICBkZXJpdmF0aXZlIHdvcmtzIGJhc2VkIG9uIHRoaXMgd29yaywgaW5jbHVkaW5nLCBidXQgbm90IGxpbWl0ZWQgdG8KLSMgIHJldmlzZWQgdmVyc2lvbnMgb2YgdGhpcyB3b3JrLgotIwotCi0jCi0jIEJlbG93IGlzIGF1dGhvciByZXBseSB0byBxdWVzdGlvbiBhYm91dCBkaXN0cmlidXRpbmcgaW96b25lMyBpbgotIyBPcGVuRW1iZWRkZWQ6Ci0jCi0jID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotIwotIyBNYXJjaW4sCi0jCi0jICAgICBSZS1kaXN0cmlidXRpb24gaXMgcGVybWl0dGVkIGFzIGxvbmcgYXMgdGhlIGNvcHlyaWdodCBpcwotIyAgICAgbWFpbnRhaW5lZCBhbmQgdGhlIHNvdXJjZSBjb2RlIGlzIG5vdCBjaGFuZ2VkLiBJIGRvIG5vdAotIyAgICAgc2VlIGEgcHJvYmxlbSB3aXRoIHlvdXIgbW9kcyB0byBlbmFibGUgZmlsZW9wIGZvciBMaW51eC1hcm0sCi0jICAgICBhcyB0aGVzZSBtb2RzIGhhdmUgYmVlbiByZXR1cm5lZCB0byB0aGUgSW96b25lIGZvbGtzLAotIyAgICAgYW5kIHRoZXkgaGF2ZSBiZWVuIGFjY2VwdGVkIGZvciBpbmNsdXNpb24gaW4gdGhlIG5leHQKLSMgICAgIHJlbGVhc2UgOi0pCi0jCi0jIFRoYW5rIHlvdSBmb3IgeW91ciBjb250cmlidXRpb24sCi0jIERvbiBDYXBwcwotIwotIyAtLS0tLSBPcmlnaW5hbCBNZXNzYWdlIC0tLS0tCi0jIEZyb206ICJNYXJjaW4gSnVzemtpZXdpY3oiIDxmaXJtYUBocncub25lLnBsPgotIyBUbzogIkRvbiBDYXBwcyIgPGRvbi5jYXBwczJAdmVyaXpvbi5uZXQ+OyAiV2lsbGlhbSBELiBOb3Jjb3R0IgotIyA8d25vcmNvdHRAdXMub3JhY2xlLmNvbT4KLSMgU2VudDogU3VuZGF5LCBPY3RvYmVyIDI5LCAyMDA2IDQ6NTUgUE0KLSMgU3ViamVjdDogaW96b25lMyAyNjMgcGF0Y2ggZm9yIGFybSBhbmQgTGljZW5zZSBxdWVzdGlvbgotIwotIwotIyA+IE1vcm5pbmcKLSMgPgotIyA+IEkgd2FudCB0byBpbmNsdWRlIGlvem9uZTMgaW4gT3BlbkVtYmVkZGVkIFsxXSBtZXRhZGF0YSB0byBnaXZlIGl0IGZvcgotIyA+IG90aGVyIGRldmVsb3BlcnMuIEN1cnJlbnRseSBPRSBpcyB1c2VkIHRvIGJ1aWxkIGZldyBkaXN0cmlidXRpb25zIGZvcgotIyA+IG1pc2MgcGxhdGZvcm1zOiBBUk0sIFNIMywgU0g0LCB4ODYsIFBvd2VyUEMgYW5kIGRpZmZlcmVudCB0eXBlcyBvZgotIyA+IG1hY2hpbmVzIChQREEsIHNldHRvcGJveCwgZGV2Ym9hcmRzLCBkZXNrdG9wcywgdGhpbiBjbGllbnRzLCByb3V0ZXJzKS4KLSMgPgotIyA+IEFjY29yZGluZyB0byB5b3VyIGRpc3RyaWJ1dGlvbiBvZiBkZXJpdmF0aW9ucyBpcyBmb3JiaWRkZW4uIFBhY2thZ2luZwotIyA+IGlvem9uZTMgaW4gT3BlbkVtYmVkZGVkIHdpbGwgbm90IGludm9sdmUgYW55IHNvdXJjZSBjb2RlIGNoYW5nZXMuIEJ1dAotIyA+IHdoZW4gSSB3YXMgYnVpbGRpbmcgaXQgZm9yIEFSTSBJIGRpc2NvdmVyZWQgdGhhdCBmaWxlb3AgYmluYXJ5IHdhcyBub3QKLSMgPiBidWlsdCAtIHNvIEkgY3JlYXRlZCBwYXRjaCBmb3IgaXQgKGF0dGFjaGVkKS4gTm90IHlldCB0ZXN0ZWQgaXQgb24gdGFyZ2V0Ci0jID4gZGV2aWNlLgotIyA+Ci0jID4gVGh1cywgSSBzZWVrIHlvdXIgd3JpdHRlbiBwZXJtaXNzaW9uIHZpYSBlLW1haWwgdG8gZGlzdHJpYnV0ZSBhIHBhY2thZ2Ugb2YKLSMgPiB0aGUgdW5tb2RpZmllZCBzb3VyY2UgY29kZSBhbmQgYWxzbyBhIHBhY2thZ2Ugb2YgdGhlIHByZS1jb21waWxlZCBiaW5hcnkuCi0jID4gWW91ciBjb3B5cmlnaHQgc3RhdGVtZW50IHdpbGwgYmUgaW5jbHVkZWQgaW4gdGhlIHBhY2thZ2UuCi0jID4KLSMgPgotIyA+IDEuIGh0dHA6Ly93d3cub3BlbmVtYmVkZGVkLm9yZy8KLSMgPgotIyA+IFJlZ2FyZHMKLSMgPiAtLQotIyA+IEpJRDogaHJ3LWphYmJlci5vcmcKLSMgPiBPcGVuRW1iZWRkZWQgZGV2ZWxvcGVyL2NvbnN1bHRhbnQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pb3pvbmUzL2lvem9uZTNfNDg5LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9pb3pvbmUzL2lvem9uZTNfNDg5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0YjdlNGYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2lvem9uZTMvaW96b25lM180ODkuYmIKQEAgLTAsMCArMSwxMjEgQEAKK1NVTU1BUlkgPSAiRmlsZXN5c3RlbSBhbmQgRGlzayBCZW5jaG1hcmtpbmcgVG9vbCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuaW96b25lLm9yZy8iCitBVVRIT1IgPSAiRG9uIENhcHBzIDxkb24uY2FwcHMyQHZlcml6b24ubmV0PiwgV2lsbGlhbSBELiBOb3Jjb3R0IDx3bm9yY290dEB1cy5vcmFjbGUuY29tPiIKK1NFQ1RJT04gPSAiY29uc29sZS90ZXN0cyIKK0xJQ0VOU0UgPSAiaW96b25lMyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2lvem9uZS5jO2JlZ2lubGluZT0zNztlbmRsaW5lPTQ4O21kNT03MzMxMjYwMDkxODY4ZGNhZDBmOWVkZWE3MzViNWY0YiBcCisgICAgZmlsZTovL2lvem9uZS5jO2JlZ2lubGluZT0yNzY7ZW5kbGluZT0yODI7bWQ1PTc3ZjllZTUxZTQ1YjU3YTdlNzUxOWM0ZmEwYjRmMDBiIFwKKyIKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5pb3pvbmUub3JnL3NyYy9jdXJyZW50LyR7QlBOfV8ke1BWfS50YXIgXAorICAgIGZpbGU6Ly9wYXJhbGxlbGlzbS5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtbGV0LXN5c3RlbS1oZWFkZXJzLXByb3ZpZGUtcHJlYWQ2NC5wYXRjaCBcCisgICAgZmlsZTovL2NvcHlyaWdodC50eHQgXAorIgorU1JDX1VSSVttZDVzdW1dID0gImU4NjMyODE5ODc2ODljZDZkOTcyOWU1MzU2MzdiNzdkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYxNTU4NTBkMTAxOWYyNDUwZGM5MjZiYmRiNWEyNGFiZjQyM2VlM2JiOTI4YWIxZTY4NTY5Y2Y2MGE5MDg1ODQiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImlvem9uZTNfKD9QPHB2ZXI+XGQrKS50YXIiCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn1fJHtQVn0vc3JjL2N1cnJlbnQvIgorCisjCisjIEFsbCBvdGhlciBhcmNoZXMgY2FuIHVzZSB0aGUgZGVmYXVsdCBPRU1BS0UgZXhjZXB0IHRob3NlCisjIGV4cGxpY2l0bHkgbGlzdGVkIGJlbG93LiBBbm90aGVyLCB0aGUgaW96b25lMyBNYWtlZmlsZQorIyBuZWVkcyB0byBiZSB0b2xkIGFib3V0IHRoZSBjcm9zcy1jb21waWxlciBleHBsaWNpdGx5IGhlcmUuCisjCitFWFRSQV9PRU1BS0VfcG93ZXJwYyA9ICJsaW51eC1wb3dlcnBjIENDPScke0NDfScgR0NDPScke0NDfSciCitFWFRSQV9PRU1BS0VfcG93ZXJwYzY0ID0gImxpbnV4LXBvd2VycGM2NCBDQz0nJHtDQ30nIEdDQz0nJHtDQ30nIgorRVhUUkFfT0VNQUtFX3Bvd2VycGM2NGxlID0gImxpbnV4LXBvd2VycGM2NCBDQz0nJHtDQ30nIEdDQz0nJHtDQ30nIgorRVhUUkFfT0VNQUtFX3g4Ni02NCA9ICJsaW51eC1BTUQ2NCBDQz0nJHtDQ30nIEdDQz0nJHtDQ30nIgorRVhUUkFfT0VNQUtFX2FybSA9ICJsaW51eC1hcm0gQ0M9JyR7Q0N9JyBHQ0M9JyR7Q0N9JyIKK0VYVFJBX09FTUFLRSA9ICJsaW51eCBDQz0nJHtDQ30nIEdDQz0nJHtDQ30nIgorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0gXAorICAgICAgICAgICAgICAgJHtEfSR7bWFuZGlyfS9tYW4xIFwKKyAgICAgICAgICAgICAgICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vZXhhbXBsZXMKKworICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2lvem9uZSAke0R9JHtiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vZmlsZW9wICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8ke0JQTn1fJHtQVn0vZG9jcy9pb3pvbmUuMSAke0R9JHttYW5kaXJ9L21hbjEvCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vY29weXJpZ2h0LnR4dCAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59LworCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vKi5kZW0gJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS9leGFtcGxlcworICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2NsaWVudF9saXN0ICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vZXhhbXBsZXMKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9HbnVwbG90LnR4dCAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59L2V4YW1wbGVzCisKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9HZW5lcmF0ZV9HcmFwaHMgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS9leGFtcGxlcworICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2dlbmdudXBsb3Quc2ggJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS9leGFtcGxlcworICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3JlcG9ydC5wbCAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59L2V4YW1wbGVzCisKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8ke0JQTn1fJHtQVn0vZG9jcy9Jb3pvbmVfcHMuZ3ogJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8ke0JQTn1fJHtQVn0vZG9jcy9JT3pvbmVfbXN3b3JkXzk4LnBkZiAke0R9JHtkYXRhZGlyfS9kb2MvJHtCUE59LworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LyR7QlBOfV8ke1BWfS9kb2NzL1J1bl9ydWxlcy5kb2MgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS8KK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZG9jLyR7UE59L2NvcHlyaWdodC50eHQiCisKKyMgTElDRU5TRToKKyMKKyMgIENvcHlyaWdodCAxOTkxLCAxOTkyLCAxOTk0LCAxOTk4LCAxOTk5LCAyMDAyICAgV2lsbGlhbSBELiBOb3Jjb3R0CisjCisjICBMaWNlbnNlIHRvIGZyZWVseSB1c2UgYW5kIGRpc3RyaWJ1dGUgdGhpcyBzb2Z0d2FyZSBpcyBoZXJlYnkgZ3JhbnRlZAorIyAgYnkgdGhlIGF1dGhvciwgc3ViamVjdCB0byB0aGUgY29uZGl0aW9uIHRoYXQgdGhpcyBjb3B5cmlnaHQgbm90aWNlCisjICByZW1haW5zIGludGFjdC4gIFRoZSBhdXRob3IgcmV0YWlucyB0aGUgZXhjbHVzaXZlIHJpZ2h0IHRvIHB1Ymxpc2gKKyMgIGRlcml2YXRpdmUgd29ya3MgYmFzZWQgb24gdGhpcyB3b3JrLCBpbmNsdWRpbmcsIGJ1dCBub3QgbGltaXRlZCB0bworIyAgcmV2aXNlZCB2ZXJzaW9ucyBvZiB0aGlzIHdvcmsuCisjCisKKyMKKyMgQmVsb3cgaXMgYXV0aG9yIHJlcGx5IHRvIHF1ZXN0aW9uIGFib3V0IGRpc3RyaWJ1dGluZyBpb3pvbmUzIGluCisjIE9wZW5FbWJlZGRlZDoKKyMKKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisjCisjIE1hcmNpbiwKKyMKKyMgICAgIFJlLWRpc3RyaWJ1dGlvbiBpcyBwZXJtaXR0ZWQgYXMgbG9uZyBhcyB0aGUgY29weXJpZ2h0IGlzCisjICAgICBtYWludGFpbmVkIGFuZCB0aGUgc291cmNlIGNvZGUgaXMgbm90IGNoYW5nZWQuIEkgZG8gbm90CisjICAgICBzZWUgYSBwcm9ibGVtIHdpdGggeW91ciBtb2RzIHRvIGVuYWJsZSBmaWxlb3AgZm9yIExpbnV4LWFybSwKKyMgICAgIGFzIHRoZXNlIG1vZHMgaGF2ZSBiZWVuIHJldHVybmVkIHRvIHRoZSBJb3pvbmUgZm9sa3MsCisjICAgICBhbmQgdGhleSBoYXZlIGJlZW4gYWNjZXB0ZWQgZm9yIGluY2x1c2lvbiBpbiB0aGUgbmV4dAorIyAgICAgcmVsZWFzZSA6LSkKKyMKKyMgVGhhbmsgeW91IGZvciB5b3VyIGNvbnRyaWJ1dGlvbiwKKyMgRG9uIENhcHBzCisjCisjIC0tLS0tIE9yaWdpbmFsIE1lc3NhZ2UgLS0tLS0KKyMgRnJvbTogIk1hcmNpbiBKdXN6a2lld2ljeiIgPGZpcm1hQGhydy5vbmUucGw+CisjIFRvOiAiRG9uIENhcHBzIiA8ZG9uLmNhcHBzMkB2ZXJpem9uLm5ldD47ICJXaWxsaWFtIEQuIE5vcmNvdHQiCisjIDx3bm9yY290dEB1cy5vcmFjbGUuY29tPgorIyBTZW50OiBTdW5kYXksIE9jdG9iZXIgMjksIDIwMDYgNDo1NSBQTQorIyBTdWJqZWN0OiBpb3pvbmUzIDI2MyBwYXRjaCBmb3IgYXJtIGFuZCBMaWNlbnNlIHF1ZXN0aW9uCisjCisjCisjID4gTW9ybmluZworIyA+CisjID4gSSB3YW50IHRvIGluY2x1ZGUgaW96b25lMyBpbiBPcGVuRW1iZWRkZWQgWzFdIG1ldGFkYXRhIHRvIGdpdmUgaXQgZm9yCisjID4gb3RoZXIgZGV2ZWxvcGVycy4gQ3VycmVudGx5IE9FIGlzIHVzZWQgdG8gYnVpbGQgZmV3IGRpc3RyaWJ1dGlvbnMgZm9yCisjID4gbWlzYyBwbGF0Zm9ybXM6IEFSTSwgU0gzLCBTSDQsIHg4NiwgUG93ZXJQQyBhbmQgZGlmZmVyZW50IHR5cGVzIG9mCisjID4gbWFjaGluZXMgKFBEQSwgc2V0dG9wYm94LCBkZXZib2FyZHMsIGRlc2t0b3BzLCB0aGluIGNsaWVudHMsIHJvdXRlcnMpLgorIyA+CisjID4gQWNjb3JkaW5nIHRvIHlvdXIgZGlzdHJpYnV0aW9uIG9mIGRlcml2YXRpb25zIGlzIGZvcmJpZGRlbi4gUGFja2FnaW5nCisjID4gaW96b25lMyBpbiBPcGVuRW1iZWRkZWQgd2lsbCBub3QgaW52b2x2ZSBhbnkgc291cmNlIGNvZGUgY2hhbmdlcy4gQnV0CisjID4gd2hlbiBJIHdhcyBidWlsZGluZyBpdCBmb3IgQVJNIEkgZGlzY292ZXJlZCB0aGF0IGZpbGVvcCBiaW5hcnkgd2FzIG5vdAorIyA+IGJ1aWx0IC0gc28gSSBjcmVhdGVkIHBhdGNoIGZvciBpdCAoYXR0YWNoZWQpLiBOb3QgeWV0IHRlc3RlZCBpdCBvbiB0YXJnZXQKKyMgPiBkZXZpY2UuCisjID4KKyMgPiBUaHVzLCBJIHNlZWsgeW91ciB3cml0dGVuIHBlcm1pc3Npb24gdmlhIGUtbWFpbCB0byBkaXN0cmlidXRlIGEgcGFja2FnZSBvZgorIyA+IHRoZSB1bm1vZGlmaWVkIHNvdXJjZSBjb2RlIGFuZCBhbHNvIGEgcGFja2FnZSBvZiB0aGUgcHJlLWNvbXBpbGVkIGJpbmFyeS4KKyMgPiBZb3VyIGNvcHlyaWdodCBzdGF0ZW1lbnQgd2lsbCBiZSBpbmNsdWRlZCBpbiB0aGUgcGFja2FnZS4KKyMgPgorIyA+CisjID4gMS4gaHR0cDovL3d3dy5vcGVuZW1iZWRkZWQub3JnLworIyA+CisjID4gUmVnYXJkcworIyA+IC0tCisjID4gSklEOiBocnctamFiYmVyLm9yZworIyA+IE9wZW5FbWJlZGRlZCBkZXZlbG9wZXIvY29uc3VsdGFudAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9maWxlcy8wMDAxLWh1Z2VfcGFnZV9zZXR1cF9oZWxwZXItdXNlLXB5dGhvbjMtaW50ZXJwcmV0ZXIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9maWxlcy8wMDAxLWh1Z2VfcGFnZV9zZXR1cF9oZWxwZXItdXNlLXB5dGhvbjMtaW50ZXJwcmV0ZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTQ1ZjI4MwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2ZpbGVzLzAwMDEtaHVnZV9wYWdlX3NldHVwX2hlbHBlci11c2UtcHl0aG9uMy1pbnRlcnByZXRlci5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIGI3N2M2MWRlNGQ4OGQyYzZlNWQzMWY0ZjVhNTg3N2NjNGM2MTI3MmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZXkgWmhpemhpa2luIDxhbmRyZXkuekBnbWFpbC5jb20+CitEYXRlOiBNb24sIDI3IEphbiAyMDIwIDE3OjI3OjU1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGh1Z2VfcGFnZV9zZXR1cF9oZWxwZXI6IHVzZSBweXRob24zIGludGVycHJldGVyCisKK1NldHVwIGhlbHBlciBzY3JpcHQgaXMgYWxyZWFkeSBwcmVwYXJlZCB0byBiZSB1c2VkIHdpdGggcHl0aG9uMywgdXNlIHRoZQoraW50ZXJwcmV0ZXIgZXhwbGljaXRseS4gVGhpcyByZW1vdmVzIGRlcGVuZGVuY3kgdG8gcHl0aG9uMiBhbmQgd2lsbCBub3QKK2ZhaWwgdGhlIFFBIGNoZWNrLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLXNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZXkgWmhpemhpa2luIDxhbmRyZXkuekBnbWFpbC5jb20+CistLS0KKyBodWdlX3BhZ2Vfc2V0dXBfaGVscGVyLnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaHVnZV9wYWdlX3NldHVwX2hlbHBlci5weSBiL2h1Z2VfcGFnZV9zZXR1cF9oZWxwZXIucHkKK2luZGV4IGE5YmEyYmYuLjdiYTBjOTIgMTAwNzU1CistLS0gYS9odWdlX3BhZ2Vfc2V0dXBfaGVscGVyLnB5CisrKysgYi9odWdlX3BhZ2Vfc2V0dXBfaGVscGVyLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL3B5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAKKyAjCisgIyBUb29sIHRvIHNldCB1cCBMaW51eCBsYXJnZSBwYWdlIHN1cHBvcnQgd2l0aCBtaW5pbWFsIGVmZm9ydAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvbGliaHVnZXRsYmZzX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvbGliaHVnZXRsYmZzL2xpYmh1Z2V0bGJmc19naXQuYmIKaW5kZXggZTY2ZGIxYS4uNDc2OGQ3YiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9saWJodWdldGxiZnMvbGliaHVnZXRsYmZzX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYmVuY2htYXJrL2xpYmh1Z2V0bGJmcy9saWJodWdldGxiZnNfZ2l0LmJiCkBAIC00LDcgKzQsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTEdQTC0yLjE7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgogCiBERVBFTkRTID0gInN5c2ZzdXRpbHMiCi1SREVQRU5EU18ke1BOfSArPSAiYmFzaCBweXRob24gcHl0aG9uLWlvIHB5dGhvbi1sYW5nIHB5dGhvbi1zdWJwcm9jZXNzIHB5dGhvbi1yZXNvdXJjZSIKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNoIHB5dGhvbjMtY29yZSIKIFJERVBFTkRTXyR7UE59LXRlc3RzICs9ICJiYXNoIHB5dGhvbjMtY29yZSIKIAogUFYgPSAiMi4yMiIKQEAgLTI1LDYgKzI1LDcgQEAKICAgICBmaWxlOi8vMDAwNS1JbmNsdWRlLWRpcmVudC5oLWZvci1pbm9fdC5wYXRjaCBcCiAgICAgZmlsZTovLzAwMDYtaW5jbHVkZS1saW1pdHMuaC1mb3ItUEFUSF9NQVgucGF0Y2ggXAogICAgIGZpbGU6Ly8wMDAxLXRlc3RzLWFkZC1leHBsaWNpdC1wZXJtaXNzaW9ucy10by1vcGVuLWNhbGwucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWh1Z2VfcGFnZV9zZXR1cF9oZWxwZXItdXNlLXB5dGhvbjMtaW50ZXJwcmV0ZXIucGF0Y2ggXAogIgogCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCkBAIC0zNyw2ICszOCw3IEBACiBMSUJIVUdFVExCRlNfQVJDSCA9ICIke1RBUkdFVF9BUkNIfSIKIExJQkhVR0VUTEJGU19BUkNIX3Bvd2VycGMgPSAicHBjIgogTElCSFVHRVRMQkZTX0FSQ0hfcG93ZXJwYzY0ID0gInBwYzY0IgorTElCSFVHRVRMQkZTX0FSQ0hfcG93ZXJwYzY0bGUgPSAicHBjNjQiCiBFWFRSQV9PRU1BS0UgPSAiJ0FSQ0g9JHtMSUJIVUdFVExCRlNfQVJDSH0nICdPUFQ9JHtDRkxBR1N9JyAnQ0M9JHtDQ30nICR7TElCQVJHU30gQlVJTERUWVBFPU5BVElWRU9OTFkgVj0yIgogUEFSQUxMRUxfTUFLRSA9ICIiCiBDRkxBR1MgKz0gIi1mZXhwZW5zaXZlLW9wdGltaXphdGlvbnMgLWZyZW5hbWUtcmVnaXN0ZXJzIC1mb21pdC1mcmFtZS1wb2ludGVyIC1nMCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1iZW5jaG1hcmsvcGhvcm9uaXgtdGVzdC1zdWl0ZS9waG9yb25peC10ZXN0LXN1aXRlXzkuMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9waG9yb25peC10ZXN0LXN1aXRlL3Bob3Jvbml4LXRlc3Qtc3VpdGVfOS4yLjEuYmIKaW5kZXggNTJiMzQxYi4uNGE4ZTViNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9waG9yb25peC10ZXN0LXN1aXRlL3Bob3Jvbml4LXRlc3Qtc3VpdGVfOS4yLjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJlbmNobWFyay9waG9yb25peC10ZXN0LXN1aXRlL3Bob3Jvbml4LXRlc3Qtc3VpdGVfOS4yLjEuYmIKQEAgLTExLDcgKzExLDcgQEAKIAogUyA9ICIke1dPUktESVJ9L3Bob3Jvbml4LXRlc3Qtc3VpdGUiCiAKLWluaGVyaXQgc3lzdGVtZCBhbGxhcmNoCitpbmhlcml0IHN5c3RlbWQgYWxsYXJjaCBtaW1lIG1pbWUteGRnCiAKIGRvX2luc3RhbGwoKSB7CiAgICAgREVTVERJUj0ke0R9IC4vaW5zdGFsbC1zaCAke2V4ZWNfcHJlZml4fQpAQCAtMjksNyArMjksNyBAQAogU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgogU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInBob3JvbWF0aWMtY2xpZW50LnNlcnZpY2UgcGhvcm9tYXRpYy1zZXJ2ZXIuc2VydmljZSIKIAotUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcHl0aG9uIHBocC1jbGkgdXRpbC1saW51eC1sc2NwdSBvcy1yZWxlYXNlIGxzYi1yZWxlYXNlIgorUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcHl0aG9uMy1jb3JlIHBocC1jbGkgdXRpbC1saW51eC1sc2NwdSBvcy1yZWxlYXNlIGxzYi1yZWxlYXNlIgogCiBGSUxFU18ke1BOfSArPSAiIFwKICAgICAke2RhdGFkaXJ9L3Bob3Jvbml4LXRlc3Qtc3VpdGUgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZGFjLXV0aWxzL2VkYWMtdXRpbHNfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9lZGFjLXV0aWxzL2VkYWMtdXRpbHNfZ2l0LmJiCmluZGV4IDA5ZTczODQuLmI4OWZlNjcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZWRhYy11dGlscy9lZGFjLXV0aWxzX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2VkYWMtdXRpbHMvZWRhYy11dGlsc19naXQuYmIKQEAgLTMwLDYgKzMwLDcgQEAKIFJERVBFTkRTXyR7UE59X2FhcmNoNjQgPSAiZG1pZGVjb2RlIgogUkRFUEVORFNfJHtQTn1fcG93ZXJwYyA9ICJkbWlkZWNvZGUiCiBSREVQRU5EU18ke1BOfV9wb3dlcnBjNjQgPSAiZG1pZGVjb2RlIgorUkRFUEVORFNfJHtQTn1fcG93ZXJwYzY0bGUgPSAiZG1pZGVjb2RlIgogUkRFUEVORFNfJHtQTn1fYXBwZW5kID0gIiBcCiAgICAgcGVybCBcCiAgICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2ZsYXNocm9tL2ZsYXNocm9tLzAwMDEtdHlwZWNhc3QtZW51bS1jb252ZXJzaW9ucy1leHBsaWNpdGx5LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9mbGFzaHJvbS9mbGFzaHJvbS8wMDAxLXR5cGVjYXN0LWVudW0tY29udmVyc2lvbnMtZXhwbGljaXRseS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWM1MzY1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9mbGFzaHJvbS9mbGFzaHJvbS8wMDAxLXR5cGVjYXN0LWVudW0tY29udmVyc2lvbnMtZXhwbGljaXRseS5wYXRjaApAQCAtMCwwICsxLDY5IEBACitGcm9tIDhhMjM2MzMwZjJhZjU2YmRlMjFlOWY2OTIwOGVhM2U1OWY1MjlmMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxNSBNYXIgMjAyMCAxNzowMjozMCAtMDcwMAorU3ViamVjdDogW1BBVENIXSB0eXBlY2FzdCBlbnVtIGNvbnZlcnNpb25zIGV4cGxpY2l0bHkKKworY2xhbmcgY29tcGxhaW5zIGxpa2UgYmVsb3cKKworbGliZmxhc2hyb20uYzoxOTE6NDM6IGVycm9yOiBpbXBsaWNpdCBjb252ZXJzaW9uIGZyb20gZW51bWVyYXRpb24gdHlwZSAnY29uc3QgZW51bSB0ZXN0X3N0YXRlJyB0byBkaWZmZXJlbnQgZW51bWVyYXRpb24gdHlwZSAnZW51bSBmbGFzaHJvbV90ZXN0X3N0YXRlJyBbLVdlcnJvciwtV2VudW0tY29udmVyc2lvbl0KKyAgICAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnRlZF9ib2FyZHNbaV0ud29ya2luZyA9IGJpbmZvW2ldLndvcmtpbmc7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfiB+fn5+fn5+fn5efn5+fn5+CitsaWJmbGFzaHJvbS5jOjIyOTo0NjogZXJyb3I6IGltcGxpY2l0IGNvbnZlcnNpb24gZnJvbSBlbnVtZXJhdGlvbiB0eXBlICdjb25zdCBlbnVtIHRlc3Rfc3RhdGUnIHRvIGRpZmZlcmVudCBlbnVtZXJhdGlvbiB0eXBlICdlbnVtIGZsYXNocm9tX3Rlc3Rfc3RhdGUnIFstV2Vycm9yLC1XZW51bS1jb252ZXJzaW9uXQorICAgICAgICAgICAgICAgICAgICAgICAgc3VwcG9ydGVkX2NoaXBzZXRzW2ldLnN0YXR1cyA9IGNoaXBzZXRbaV0uc3RhdHVzOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB+IH5+fn5+fn5+fn5+Xn5+fn5+CisKK0hvd2V2ZXIgdGhlc2UgZW51bXMgYXJlIGV4YWN0bHkgc2FtZSBzbyB0aGV5IGNhbiBiZSB0eXBlY2FzdGVkCisKK2xpYmZsYXNocm9tLmgKKworLyoqIEBpbmdyb3VwIGZsYXNocm9tLXF1ZXJ5ICovCitlbnVtIGZsYXNocm9tX3Rlc3Rfc3RhdGUgeworICAgICAgICBGTEFTSFJPTV9URVNURURfT0sgID0gMCwKKyAgICAgICAgRkxBU0hST01fVEVTVEVEX05UICA9IDEsCisgICAgICAgIEZMQVNIUk9NX1RFU1RFRF9CQUQgPSAyLAorICAgICAgICBGTEFTSFJPTV9URVNURURfREVQID0gMywKKyAgICAgICAgRkxBU0hST01fVEVTVEVEX05BICA9IDQsCit9OworCitmbGFzaC5oCisKK2VudW0gdGVzdF9zdGF0ZSB7CisgICAgICAgICAgT0sgPSAwLAorICAgICAgICAgIE5UID0gMSwgLyogTm90IHRlc3RlZCAqLworICAgICAgICAgIEJBRCwgICAgLyogS25vd24gdG8gbm90IHdvcmsgKi8KKyAgICAgICAgICBERVAsICAgIC8qIFN1cHBvcnQgZGVwZW5kcyBvbiBjb25maWd1cmF0aW9uIChlLmcuIEludGVsIGZsYXNoIGRlc2NyaXB0b3IpICovCisgICAgICAgICAgTkEsICAgICAvKiBOb3QgYXBwbGljYWJsZSAoZS5nLiB3cml0ZSBzdXBwb3J0IG9uIFJPTSBjaGlwcykgKi8KKyAgfTsKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWJmbGFzaHJvbS5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmZsYXNocm9tLmMgYi9saWJmbGFzaHJvbS5jCitpbmRleCAwZGVjMjJlLi43OTU2Njg1IDEwMDY0NAorLS0tIGEvbGliZmxhc2hyb20uYworKysrIGIvbGliZmxhc2hyb20uYworQEAgLTE4OCw3ICsxODgsNyBAQCBzdHJ1Y3QgZmxhc2hyb21fYm9hcmRfaW5mbyAqZmxhc2hyb21fc3VwcG9ydGVkX2JvYXJkcyh2b2lkKQorIAkJZm9yICg7IGkgPCBib2FyZHNfa25vd25fc2l6ZTsgKytpKSB7CisgCQkJc3VwcG9ydGVkX2JvYXJkc1tpXS52ZW5kb3IgPSBiaW5mb1tpXS52ZW5kb3I7CisgCQkJc3VwcG9ydGVkX2JvYXJkc1tpXS5uYW1lID0gYmluZm9baV0ubmFtZTsKKy0JCQlzdXBwb3J0ZWRfYm9hcmRzW2ldLndvcmtpbmcgPSBiaW5mb1tpXS53b3JraW5nOworKwkJCXN1cHBvcnRlZF9ib2FyZHNbaV0ud29ya2luZyA9IChlbnVtIGZsYXNocm9tX3Rlc3Rfc3RhdGUpYmluZm9baV0ud29ya2luZzsKKyAJCX0KKyAJfSBlbHNlIHsKKyAJCW1zZ19nZXJyKCJNZW1vcnkgYWxsb2NhdGlvbiBlcnJvciFcbiIpOworQEAgLTIyNiw3ICsyMjYsNyBAQCBzdHJ1Y3QgZmxhc2hyb21fY2hpcHNldF9pbmZvICpmbGFzaHJvbV9zdXBwb3J0ZWRfY2hpcHNldHModm9pZCkKKyAJCQlzdXBwb3J0ZWRfY2hpcHNldHNbaV0uY2hpcHNldCA9IGNoaXBzZXRbaV0uZGV2aWNlX25hbWU7CisgCQkJc3VwcG9ydGVkX2NoaXBzZXRzW2ldLnZlbmRvcl9pZCA9IGNoaXBzZXRbaV0udmVuZG9yX2lkOworIAkJCXN1cHBvcnRlZF9jaGlwc2V0c1tpXS5jaGlwc2V0X2lkID0gY2hpcHNldFtpXS5kZXZpY2VfaWQ7CistCQkJc3VwcG9ydGVkX2NoaXBzZXRzW2ldLnN0YXR1cyA9IGNoaXBzZXRbaV0uc3RhdHVzOworKwkJCXN1cHBvcnRlZF9jaGlwc2V0c1tpXS5zdGF0dXMgPSAoZW51bSBmbGFzaHJvbV90ZXN0X3N0YXRlKWNoaXBzZXRbaV0uc3RhdHVzOworIAkgIH0KKyAJfSBlbHNlIHsKKyAJCW1zZ19nZXJyKCJNZW1vcnkgYWxsb2NhdGlvbiBlcnJvciFcbiIpOworLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9mbGFzaHJvbS9mbGFzaHJvbV8xLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2ZsYXNocm9tL2ZsYXNocm9tXzEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc0YTFhNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2ZsYXNocm9tL2ZsYXNocm9tXzEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLURFU0NSSVBUSU9OID0gImZsYXNocm9tIGlzIGEgdXRpbGl0eSBmb3IgaWRlbnRpZnlpbmcsIHJlYWRpbmcsIHdyaXRpbmcsIHZlcmlmeWluZyBhbmQgZXJhc2luZyBmbGFzaCBjaGlwcyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1IT01FUEFHRSA9ICJodHRwOi8vZmxhc2hyb20ub3JnIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLURFUEVORFMgPSAicGNpdXRpbHMgbGlidXNiIGxpYnVzYi1jb21wYXQiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZC5mbGFzaHJvbS5vcmcvcmVsZWFzZXMvZmxhc2hyb20tdiR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiOTFiYWI2YzA3MmUzOGE0OTNiYjRlYjY3M2U0ZmUwZDYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWVhZGE5YzcwYzIyNDIxMjE3YzY2OTM1NjE4MGMwZGVkZGQwYjYwODc2ZTYzZDIyMjRlMzI2MGI5MGMxNGUxOSIKLQotUyA9ICIke1dPUktESVJ9L2ZsYXNocm9tLXYke1BWfSIKLQotaW5oZXJpdCBwa2djb25maWcKLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IGluc3RhbGwKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZmxhc2hyb20vZmxhc2hyb21fMS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9mbGFzaHJvbS9mbGFzaHJvbV8xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjQyY2VjMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvZmxhc2hyb20vZmxhc2hyb21fMS4yLmJiCkBAIC0wLDAgKzEsMjAgQEAKK0RFU0NSSVBUSU9OID0gImZsYXNocm9tIGlzIGEgdXRpbGl0eSBmb3IgaWRlbnRpZnlpbmcsIHJlYWRpbmcsIHdyaXRpbmcsIHZlcmlmeWluZyBhbmQgZXJhc2luZyBmbGFzaCBjaGlwcyIKK0xJQ0VOU0UgPSAiR1BMdjIiCitIT01FUEFHRSA9ICJodHRwOi8vZmxhc2hyb20ub3JnIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKK0RFUEVORFMgPSAicGNpdXRpbHMgbGlidXNiIGxpYnVzYi1jb21wYXQiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9kb3dubG9hZC5mbGFzaHJvbS5vcmcvcmVsZWFzZXMvZmxhc2hyb20tdiR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10eXBlY2FzdC1lbnVtLWNvbnZlcnNpb25zLWV4cGxpY2l0bHkucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiN2Y4ZTRiODcwODdlYjEyZWNlZTBmY2M1NDQ1YjQ5NTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTFmOGQ5NTg4MWY1YTQzNjVkZmU1ODc3NmNlODIxZGZjZWUwZjEzOGY3NWQwZjQ0ZjhhM2NkMDMyZDllYTQyYiIKKworUyA9ICIke1dPUktESVJ9L2ZsYXNocm9tLXYke1BWfSIKKworaW5oZXJpdCBwa2djb25maWcKKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IGluc3RhbGwKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnNfMy42LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL2xtX3NlbnNvcnMvbG1zZW5zb3JzXzMuNi4wLmJiCmluZGV4IDQ4NDkwZTguLjg5MGRiNTUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbG1fc2Vuc29ycy9sbXNlbnNvcnNfMy42LjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9sbV9zZW5zb3JzL2xtc2Vuc29yc18zLjYuMC5iYgpAQCAtNyw3ICs3LDYgQEAKIERFUEVORFMgPSAiIFwKICAgICBiaXNvbi1uYXRpdmUgXAogICAgIGZsZXgtbmF0aXZlIFwKLSAgICBycmR0b29sIFwKICAgICB2aXJ0dWFsL2xpYmljb252IFwKICIKIApAQCAtOTEsNyArOTAsNyBAQAogUkRFUEVORFNfJHtQTn0gKz0gIiBcCiAgICAgJHtQTn0tbGlic2Vuc29ycyBcCiAgICAgJHtQTn0tc2Vuc29ycyBcCi0gICAgJHtQTn0tc2Vuc29yZCBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2Vuc29yZCcsICcke1BOfS1zZW5zb3JkJywgJycsIGQpfSBcCiAgICAgJHtQTn0tZmFuY29udHJvbCBcCiAgICAgJHtQTn0tc2Vuc29yc2RldGVjdCBcCiAgICAgJHtQTn0tc2Vuc29yc2NvbmZjb252ZXJ0IFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbnZtZS1jbGkvbnZtZS1jbGkvMDAwMS1maXgtbXVzbC1jb21waWxhdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbnZtZS1jbGkvbnZtZS1jbGkvMDAwMS1maXgtbXVzbC1jb21waWxhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTVkMGRhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9udm1lLWNsaS9udm1lLWNsaS8wMDAxLWZpeC1tdXNsLWNvbXBpbGF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gMGZmN2FkMmM4OGUzYTQ3ZTdlM2Y2ZmU2OGMyOGE4ZDJkOGE3MWYxZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE5lZWwgQ2hvdGFpIDxuZWVsQGNob3QuYWk+CitEYXRlOiBGcmksIDE0IEZlYiAyMDIwIDE3OjU2OjIzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBtdXNsIGNvbXBpbGF0aW9uCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saW51eC1udm1lL252bWUtY2xpL2NvbW1pdC8wZmY3YWQyYzg4ZTNhNDdlN2UzZjZmZTY4YzI4YThkMmQ4YTcxZjFmXQorU2lnbmVkLW9mZi1ieTogUGllcnJlLUplYW4gVGV4aWVyIDxwanRleGllckBrb25jZXB0by5pbz4KKy0tLQorIHBsdWdpbnMvbWljcm9uL21pY3Jvbi1udm1lLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3BsdWdpbnMvbWljcm9uL21pY3Jvbi1udm1lLmMgYi9wbHVnaW5zL21pY3Jvbi9taWNyb24tbnZtZS5jCitpbmRleCA4MjQwODg3Li4xNjVmY2YwIDEwMDY0NAorLS0tIGEvcGx1Z2lucy9taWNyb24vbWljcm9uLW52bWUuYworKysrIGIvcGx1Z2lucy9taWNyb24vbWljcm9uLW52bWUuYworQEAgLTEzLDYgKzEzLDcgQEAKKyAjaW5jbHVkZSAibnZtZS1wcmludC5oIgorICNpbmNsdWRlICJudm1lLWlvY3RsLmgiCisgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorKyNpbmNsdWRlIDxsaW1pdHMuaD4KKyAKKyAjZGVmaW5lIENSRUFURV9DTUQKKyAjaW5jbHVkZSAibWljcm9uLW52bWUuaCIKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9udm1lLWNsaS9udm1lLWNsaV8xLjEwLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtYnNwL252bWUtY2xpL252bWUtY2xpXzEuMTAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZjRiYjJkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9udm1lLWNsaS9udm1lLWNsaV8xLjEwLjEuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJOVk1lIG1hbmFnZW1lbnQgY29tbWFuZCBsaW5lIGludGVyZmFjZSIKK0FVVEhPUiA9ICJTdGVmYW4gV2llaGxlciA8c3RlZmFuLndpZWhsZXJAbWlzc2luZ2xpbmtlbGVjdHJvbmljcy5jb20+IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LW52bWUvbnZtZS1jbGkiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODI2NDUzNWMwYzRlOWM2YzMzNTYzNWM0MDI2YTgwMjIiCitERVBFTkRTID0gInV0aWwtbGludXgiCitQViAuPSAiK2dpdCR7U1JDUFZ9IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGludXgtbnZtZS9udm1lLWNsaS5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtbXVzbC1jb21waWxhdGlvbi5wYXRjaCBcCisiCitTUkNSRVYgPSAiMWQ4NGQ2YWUwYzdkN2NlZmY1YTczZmUxNzRkZGU4YjAwMDVmNjEwOCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBiYXNoLWNvbXBsZXRpb24gc3lzdGVtZAorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbC1zcGVjIERFU1RESVI9JHtEfSBQUkVGSVg9JHtwcmVmaXh9IFwKKyAgICAgICAgVURFVkRJUj0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYgU1lTVEVNRERJUj0ke3N5c3RlbWRfdW5pdGRpcn0KK30KKworcGtnX3Bvc3RpbnN0X29udGFyZ2V0XyR7UE59KCkgeworICAgICR7c2JpbmRpcn0vbnZtZSBnZW4taG9zdG5xbiA+ICR7c3lzY29uZmRpcn0vbnZtZS9ob3N0bnFuCisgICAgJHtiaW5kaXJ9L3V1aWRnZW4gPiAke3N5c2NvbmZkaXJ9L252bWUvaG9zdGlkCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1kcmFjdXQgJHtQTn0tenNoLWNvbXBsZXRpb24iCisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IgorRklMRVNfJHtQTn0tZHJhY3V0ID0gIiR7bm9uYXJjaF9saWJkaXJ9L2RyYWN1dC9kcmFjdXQuY29uZi5kIgorRklMRVNfJHtQTn0tenNoLWNvbXBsZXRpb24gPSAiJHtkYXRhZGlyfS96c2gvc2l0ZS1mdW5jdGlvbnMiCisKK1JERVBFTkRTXyR7UE59ID0gInV0aWwtbGludXgtdXVpZGdlbiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ic3AvbnZtZS1jbGkvbnZtZS1jbGlfMS45LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9udm1lLWNsaS9udm1lLWNsaV8xLjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhOGJjMTcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWJzcC9udm1lLWNsaS9udm1lLWNsaV8xLjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIk5WTWUgbWFuYWdlbWVudCBjb21tYW5kIGxpbmUgaW50ZXJmYWNlIgotQVVUSE9SID0gIlN0ZWZhbiBXaWVobGVyIDxzdGVmYW4ud2llaGxlckBtaXNzaW5nbGlua2VsZWN0cm9uaWNzLmNvbT4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGludXgtbnZtZS9udm1lLWNsaSIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04MjY0NTM1YzBjNGU5YzZjMzM1NjM1YzQwMjZhODAyMiIKLURFUEVORFMgPSAidXRpbC1saW51eCIKLVBWIC49ICIrZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC1udm1lL252bWUtY2xpLmdpdCIKLVNSQ1JFViA9ICI5NzdlN2Q0Y2Y1OWMzYzdmODllOWMwOTNjOTFmOTkxYjA3MjkyZTQ1IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGJhc2gtY29tcGxldGlvbiBzeXN0ZW1kCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsLXNwZWMgREVTVERJUj0ke0R9IFBSRUZJWD0ke3ByZWZpeH0gXAotICAgICAgICBVREVWRElSPSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldiBTWVNURU1ERElSPSR7c3lzdGVtZF91bml0ZGlyfQotfQotCi1wa2dfcG9zdGluc3Rfb250YXJnZXRfJHtQTn0oKSB7Ci0gICAgJHtzYmluZGlyfS9udm1lIGdlbi1ob3N0bnFuID4gJHtzeXNjb25mZGlyfS9udm1lL2hvc3RucW4KLSAgICAke2JpbmRpcn0vdXVpZGdlbiA+ICR7c3lzY29uZmRpcn0vbnZtZS9ob3N0aWQKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LWRyYWN1dCAke1BOfS16c2gtY29tcGxldGlvbiIKLQotRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0iCi1GSUxFU18ke1BOfS1kcmFjdXQgPSAiJHtub25hcmNoX2xpYmRpcn0vZHJhY3V0L2RyYWN1dC5jb25mLmQiCi1GSUxFU18ke1BOfS16c2gtY29tcGxldGlvbiA9ICIke2RhdGFkaXJ9L3pzaC9zaXRlLWZ1bmN0aW9ucyIKLQotUkRFUEVORFNfJHtQTn0gPSAidXRpbC1saW51eC11dWlkZ2VuIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9nYW1tdS9nYW1tdV8xLjMyLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2dhbW11L2dhbW11XzEuMzIuMC5iYgppbmRleCA0NDQxMTc1Li5mZDZiODVmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2dhbW11L2dhbW11XzEuMzIuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2dhbW11L2dhbW11XzEuMzIuMC5iYgpAQCAtMTMsNyArMTMsNyBAQAogU1JDX1VSSVttZDVzdW1dID0gIjhlYTE2YzZiM2NjNDgwOTdhOGU2MjMxMWZlMGUyNWI5IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlNjdjYWExMDJhYTRjOGZiZWQ1MzAwZTVhMDI2MmU0MDQxMWM0Y2M3OWY0Mzc5YThkMzRlZWQ3OTc5NjhmYzMiCiAKLWluaGVyaXQgZGlzdHV0aWxzIGNtYWtlIGdldHRleHQKK2luaGVyaXQgZGlzdHV0aWxzMyBjbWFrZSBnZXR0ZXh0CiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogICAgICMgdGhlc2UgZmlsZXMgc2VlbSB0byBvbmx5IGJlIHVzZWQgYnkgc3ltYmlhbiBhbmQgdHJpZ2dlciBRQSB3YXJuaW5ncwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9nZW5zaW8vZ2Vuc2lvLzAwMDEtZmlsdGVyLVJlbmFtZS1zb21lLXZhcmlhYmxlcy10by10cl9zdGR4eHgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2dlbnNpby9nZW5zaW8vMDAwMS1maWx0ZXItUmVuYW1lLXNvbWUtdmFyaWFibGVzLXRvLXRyX3N0ZHh4eC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmM0OGEyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9nZW5zaW8vZ2Vuc2lvLzAwMDEtZmlsdGVyLVJlbmFtZS1zb21lLXZhcmlhYmxlcy10by10cl9zdGR4eHgucGF0Y2gKQEAgLTAsMCArMSwxMDggQEAKK0Zyb20gNjAxZTZlNTZmNDRiOTFkOTU3YmI2NDM2NjI0NTVmNTI1NDBmMzM2YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENvcmV5IE1pbnlhcmQgPGNtaW55YXJkQG12aXN0YS5jb20+CitEYXRlOiBUdWUsIDI1IEZlYiAyMDIwIDE2OjA4OjQwIC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpbHRlcjogUmVuYW1lIHNvbWUgdmFyaWFibGVzIHRvIHRyX3N0ZHh4eAorCitzdGRvdXQgYW5kIHN0ZGVyciBjYW4gYmUgbWFjcm9zLCBkb24ndCB1c2UgdGhlIG5hbWVzIGRpcmVjdGx5LgorCitTaWduZWQtb2ZmLWJ5OiBDb3JleSBNaW55YXJkIDxjbWlueWFyZEBtdmlzdGEuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2NtaW55YXJkL2dlbnNpby9jb21taXQvNjAxZTZlNTZmNDRiOTFkOTU3YmI2NDM2NjI0NTVmNTI1NDBmMzM2YV0KK1NpZ25lZC1vZmYtYnk6IFBpZXJyZS1KZWFuIFRleGllciA8cGp0ZXhpZXJAa29uY2VwdG8uaW8+CistLS0KKyBsaWIvZ2Vuc2lvX2ZpbHRlcl90cmFjZS5jIHwgMjggKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9nZW5zaW9fZmlsdGVyX3RyYWNlLmMgYi9saWIvZ2Vuc2lvX2ZpbHRlcl90cmFjZS5jCitpbmRleCBkMzlkNThiLi5hYmUyZGI2IDEwMDY0NAorLS0tIGEvbGliL2dlbnNpb19maWx0ZXJfdHJhY2UuYworKysrIGIvbGliL2dlbnNpb19maWx0ZXJfdHJhY2UuYworQEAgLTMyLDggKzMyLDggQEAgc3RydWN0IHRyYWNlX2ZpbHRlciB7CisgICAgIGVudW0gdHJhY2VfZGlyIGRpcjsKKyAgICAgYm9vbCByYXc7CisgICAgIGNoYXIgKmZpbGVuYW1lOworLSAgICBib29sIHN0ZG91dDsKKy0gICAgYm9vbCBzdGRlcnI7CisrICAgIGJvb2wgdHJfc3Rkb3V0OworKyAgICBib29sIHRyX3N0ZGVycjsKKyAKKyAgICAgRklMRSAqdHI7CisgfTsKK0BAIC04Miw5ICs4Miw5IEBAIHRyYWNlX3RyeV9jb25uZWN0KHN0cnVjdCBnZW5zaW9fZmlsdGVyICpmaWx0ZXIsIHN0cnVjdCB0aW1ldmFsICp0aW1lb3V0KQorIHsKKyAgICAgc3RydWN0IHRyYWNlX2ZpbHRlciAqdGZpbHRlciA9IGZpbHRlcl90b190cmFjZShmaWx0ZXIpOworIAorLSAgICBpZiAodGZpbHRlci0+c3Rkb3V0KSB7CisrICAgIGlmICh0ZmlsdGVyLT50cl9zdGRvdXQpIHsKKyAJdGZpbHRlci0+dHIgPSBzdGRvdXQ7CistICAgIH0gZWxzZSBpZiAodGZpbHRlci0+c3RkZXJyKSB7CisrICAgIH0gZWxzZSBpZiAodGZpbHRlci0+dHJfc3RkZXJyKSB7CisgCXRmaWx0ZXItPnRyID0gc3RkZXJyOworICAgICB9IGVsc2UgaWYgKHRmaWx0ZXItPmZpbGVuYW1lKSB7CisgCXRmaWx0ZXItPnRyID0gZm9wZW4odGZpbHRlci0+ZmlsZW5hbWUsICJhKyIpOworQEAgLTk5LDcgKzk5LDcgQEAgdHJhY2VfdHJ5X2Rpc2Nvbm5lY3Qoc3RydWN0IGdlbnNpb19maWx0ZXIgKmZpbHRlciwgc3RydWN0IHRpbWV2YWwgKnRpbWVvdXQpCisgeworICAgICBzdHJ1Y3QgdHJhY2VfZmlsdGVyICp0ZmlsdGVyID0gZmlsdGVyX3RvX3RyYWNlKGZpbHRlcik7CisgCistICAgIGlmICghdGZpbHRlci0+c3Rkb3V0ICYmICF0ZmlsdGVyLT5zdGRlcnIgJiYgdGZpbHRlci0+dHIpCisrICAgIGlmICghdGZpbHRlci0+dHJfc3Rkb3V0ICYmICF0ZmlsdGVyLT50cl9zdGRlcnIgJiYgdGZpbHRlci0+dHIpCisgCWZjbG9zZSh0ZmlsdGVyLT50cik7CisgICAgIHRmaWx0ZXItPnRyID0gTlVMTDsKKyAgICAgcmV0dXJuIDA7CitAQCAtMzMxLDEyICszMzEsMTIgQEAgc3RhdGljIGludCBnZW5zaW9fdHJhY2VfZmlsdGVyX2Z1bmMoc3RydWN0IGdlbnNpb19maWx0ZXIgKmZpbHRlciwgaW50IG9wLAorIAorIHN0YXRpYyBzdHJ1Y3QgZ2Vuc2lvX2ZpbHRlciAqCisgZ2Vuc2lvX3RyYWNlX2ZpbHRlcl9yYXdfYWxsb2Moc3RydWN0IGdlbnNpb19vc19mdW5jcyAqbywgZW51bSB0cmFjZV9kaXIgZGlyLAorLQkJCSAgICAgIGJvb2wgcmF3LCBjb25zdCBjaGFyICpmaWxlbmFtZSwgYm9vbCBzdGRvdXQsCistCQkJICAgICAgYm9vbCBzdGRlcnIpCisrCQkJICAgICAgYm9vbCByYXcsIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBib29sIHRyX3N0ZG91dCwKKysJCQkgICAgICBib29sIHRyX3N0ZGVycikKKyB7CisgICAgIHN0cnVjdCB0cmFjZV9maWx0ZXIgKnRmaWx0ZXI7CisgCistICAgIGlmICghZmlsZW5hbWUgJiYgIXN0ZG91dCAmJiAhc3RkZXJyKQorKyAgICBpZiAoIWZpbGVuYW1lICYmICF0cl9zdGRvdXQgJiYgIXRyX3N0ZGVycikKKyAJZGlyID0gVFJBQ0VfTk9ORTsKKyAKKyAgICAgdGZpbHRlciA9IG8tPnphbGxvYyhvLCBzaXplb2YoKnRmaWx0ZXIpKTsKK0BAIC0zNTEsOCArMzUxLDggQEAgZ2Vuc2lvX3RyYWNlX2ZpbHRlcl9yYXdfYWxsb2Moc3RydWN0IGdlbnNpb19vc19mdW5jcyAqbywgZW51bSB0cmFjZV9kaXIgZGlyLAorIAlpZiAoIXRmaWx0ZXItPmZpbGVuYW1lKQorIAkgICAgZ290byBvdXRfbm9tZW07CisgICAgIH0KKy0gICAgdGZpbHRlci0+c3Rkb3V0ID0gc3Rkb3V0OworLSAgICB0ZmlsdGVyLT5zdGRlcnIgPSBzdGRlcnI7CisrICAgIHRmaWx0ZXItPnRyX3N0ZG91dCA9IHRyX3N0ZG91dDsKKysgICAgdGZpbHRlci0+dHJfc3RkZXJyID0gdHJfc3RkZXJyOworIAorICAgICB0ZmlsdGVyLT5sb2NrID0gby0+YWxsb2NfbG9jayhvKTsKKyAgICAgaWYgKCF0ZmlsdGVyLT5sb2NrKQorQEAgLTM4NSw3ICszODUsNyBAQCBnZW5zaW9fdHJhY2VfZmlsdGVyX2FsbG9jKHN0cnVjdCBnZW5zaW9fb3NfZnVuY3MgKm8sCisgeworICAgICBzdHJ1Y3QgZ2Vuc2lvX2ZpbHRlciAqZmlsdGVyOworICAgICBpbnQgZGlyID0gVFJBQ0VfTk9ORTsKKy0gICAgYm9vbCByYXcgPSBmYWxzZSwgc3Rkb3V0ID0gZmFsc2UsIHN0ZGVyciA9IGZhbHNlOworKyAgICBib29sIHJhdyA9IGZhbHNlLCB0cl9zdGRvdXQgPSBmYWxzZSwgdHJfc3RkZXJyID0gZmFsc2U7CisgICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lID0gTlVMTDsKKyAgICAgdW5zaWduZWQgaW50IGk7CisgCitAQCAtMzk2LDE1ICszOTYsMTUgQEAgZ2Vuc2lvX3RyYWNlX2ZpbHRlcl9hbGxvYyhzdHJ1Y3QgZ2Vuc2lvX29zX2Z1bmNzICpvLAorIAkgICAgY29udGludWU7CisgCWlmIChnZW5zaW9fY2hlY2tfa2V5dmFsdWUoYXJnc1tpXSwgImZpbGUiLCAmZmlsZW5hbWUpID4gMCkKKyAJICAgIGNvbnRpbnVlOworLQlpZiAoZ2Vuc2lvX2NoZWNrX2tleWJvb2woYXJnc1tpXSwgInN0ZG91dCIsICZzdGRvdXQpID4gMCkKKysJaWYgKGdlbnNpb19jaGVja19rZXlib29sKGFyZ3NbaV0sICJzdGRvdXQiLCAmdHJfc3Rkb3V0KSA+IDApCisgCSAgICBjb250aW51ZTsKKy0JaWYgKGdlbnNpb19jaGVja19rZXlib29sKGFyZ3NbaV0sICJzdGRlcnIiLCAmc3RkZXJyKSA+IDApCisrCWlmIChnZW5zaW9fY2hlY2tfa2V5Ym9vbChhcmdzW2ldLCAic3RkZXJyIiwgJnRyX3N0ZGVycikgPiAwKQorIAkgICAgY29udGludWU7CisgCXJldHVybiBHRV9JTlZBTDsKKyAgICAgfQorIAorICAgICBmaWx0ZXIgPSBnZW5zaW9fdHJhY2VfZmlsdGVyX3Jhd19hbGxvYyhvLCBkaXIsIHJhdywgZmlsZW5hbWUsCistCQkJCQkgICBzdGRvdXQsIHN0ZGVycik7CisrCQkJCQkgICB0cl9zdGRvdXQsIHRyX3N0ZGVycik7CisgICAgIGlmICghZmlsdGVyKQorIAlyZXR1cm4gR0VfTk9NRU07CisgCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ2Vuc2lvL2dlbnNpb18xLjUuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvZ2Vuc2lvL2dlbnNpb18xLjUuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Yzk3NjYyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9nZW5zaW8vZ2Vuc2lvXzEuNS4zLmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiQSBsaWJyYXJ5IHRvIGFic3RyYWN0IHN0cmVhbSBJL08gbGlrZSBzZXJpYWwgcG9ydCwgVENQLCB0ZWxuZXQsIGV0YyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9jbWlueWFyZC9nZW5zaW8iCitMSUNFTlNFID0gIkdQTC0yLjAgJiBMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT1hMGZkMzY5MDhhZjg0M2JjZWUxMGNiNmRmYzQ3ZmE2NyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iYWUzMDE5YjRjNmRjNDEzOGMyMTc4NjRiZDA0MzMxZiBcCisgICAgICAgICAgICAgICAgICAgICIKKworU1JDUkVWID0gIjk1ZWMxYWIzMWVlOTc0MTFmYzM3MTU2ZDEyMDYxYWRjZjAzMzE1OTgiCitQViA9ICIxLjUuMytnaXQke1NSQ1BWfSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2NtaW55YXJkL2dlbnNpbztwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpbHRlci1SZW5hbWUtc29tZS12YXJpYWJsZXMtdG8tdHJfc3RkeHh4LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scworCitQQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCB0Y3Atd3JhcHBlcnMiCisKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2w9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSwtLXdpdGhvdXQtb3BlbnNzbCwgb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLXdpdGgtdGNwLXdyYXBwZXJzLC0td2l0aG91dC10Y3Atd3JhcHBlcnMsIHRjcC13cmFwcGVycyIKK1BBQ0tBR0VDT05GSUdbc3dpZ10gPSAiLS13aXRoLXN3aWcsLS13aXRob3V0LXN3aWcsIHN3aWciCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtcHl0aG9uIgorCitSREVQRU5EU18ke1BOfSArPSAiYmFzaCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkL0NWRS0yMDE5LTE2Mjc1LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGQvQ1ZFLTIwMTktMTYyNzUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWNlZmQ0ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkL0NWRS0yMDE5LTE2Mjc1LnBhdGNoCkBAIC0wLDAgKzEsNzkgQEAKK0Zyb20gZDg2ZDY2ZGMwNzNiYzIxZDNiMTJmYWY0MTEyMDYyYWUwMGMxNzczZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvdW5pIE1hbGluZW4gPGpAdzEuZmk+CitEYXRlOiBUaHUsIDI5IEF1ZyAyMDE5IDExOjUyOjA0ICswMzAwCitTdWJqZWN0OiBBUDogU2lsZW50bHkgaWdub3JlIG1hbmFnZW1lbnQgZnJhbWUgZnJvbSB1bmV4cGVjdGVkIHNvdXJjZQorYWRkcmVzcworCitEbyBub3QgcHJvY2VzcyBhbnkgcmVjZWl2ZWQgTWFuYWdlbWVudCBmcmFtZXMgd2l0aCB1bmV4cGVjdGVkL2ludmFsaWQgU0EKK3NvIHRoYXQgd2UgZG8gbm90IGFkZCBhbnkgc3RhdGUgZm9yIHVuZXhwZWN0ZWQgU1RBIGFkZHJlc3NlcyBvciBlbmQgdXAKK3NlbmRpbmcgb3V0IGZyYW1lcyB0byB1bmV4cGVjdGVkIGRlc3RpbmF0aW9uLiBUaGlzIHByZXZlbnRzIHVuZXhwZWN0ZWQKK3NlcXVlbmNlcyB3aGVyZSBhbiB1bnByb3RlY3RlZCBmcmFtZSBtaWdodCBlbmQgdXAgY2F1c2luZyB0aGUgQVAgdG8gc2VuZAorb3V0IGEgcmVzcG9uc2UgdG8gYW5vdGhlciBkZXZpY2UgYW5kIHRoYXQgb3RoZXIgZGV2aWNlIHByb2Nlc3NpbmcgdGhlCit1bmV4cGVjdGVkIHJlc3BvbnNlLgorCitJbiBwYXJ0aWN1bGFyLCB0aGlzIHByZXZlbnRzIHNvbWUgcG90ZW50aWFsIGRlbmlhbCBvZiBzZXJ2aWNlIGNhc2VzCit3aGVyZSB0aGUgdW5leHBlY3RlZCByZXNwb25zZSBmcmFtZSBmcm9tIHRoZSBBUCBtaWdodCByZXN1bHQgaW4gYQorY29ubmVjdGVkIHN0YXRpb24gZHJvcHBpbmcgaXRzIGFzc29jaWF0aW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkCitDVkU6IENWRS0yMDE5LTE2Mjc1CisKK1JlZmVyZW5jZSB0byB1cHN0cmVhbSBwYXRjaDoKK2h0dHBzOi8vdzEuZmkvY2dpdC9ob3N0YXAvY29tbWl0Lz9pZD1kODZkNjZkYzA3M2JjMjFkM2IxMmZhZjQxMTIwNjJhZTAwYzE3NzNmCisKK1NpZ25lZC1vZmYtYnk6IEpvdW5pIE1hbGluZW4gPGpAdzEuZmk+CistLS0KKyBzcmMvYXAvZHJ2X2NhbGxiYWNrcy5jIHwgMTMgKysrKysrKysrKysrKworIHNyYy9hcC9pZWVlODAyXzExLmMgICAgfCAxMiArKysrKysrKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9hcC9kcnZfY2FsbGJhY2tzLmMgYi9zcmMvYXAvZHJ2X2NhbGxiYWNrcy5jCitpbmRleCAzMTU4NzY4Li4zNGNhMzc5IDEwMDY0NAorLS0tIGEvc3JjL2FwL2Rydl9jYWxsYmFja3MuYworKysrIGIvc3JjL2FwL2Rydl9jYWxsYmFja3MuYworQEAgLTEzMSw2ICsxMzEsMTkgQEAgaW50IGhvc3RhcGRfbm90aWZfYXNzb2Moc3RydWN0IGhvc3RhcGRfZGF0YSAqaGFwZCwgY29uc3QgdTggKmFkZHIsCisgCQkJICAgImhvc3RhcGRfbm90aWZfYXNzb2M6IFNraXAgZXZlbnQgd2l0aCBubyBhZGRyZXNzIik7CisgCQlyZXR1cm4gLTE7CisgCX0KKysKKysJaWYgKGlzX211bHRpY2FzdF9ldGhlcl9hZGRyKGFkZHIpIHx8CisrCSAgICBpc196ZXJvX2V0aGVyX2FkZHIoYWRkcikgfHwKKysJICAgIG9zX21lbWNtcChhZGRyLCBoYXBkLT5vd25fYWRkciwgRVRIX0FMRU4pID09IDApIHsKKysJCS8qIERvIG5vdCBwcm9jZXNzIGFueSBmcmFtZXMgd2l0aCB1bmV4cGVjdGVkL2ludmFsaWQgU0Egc28gdGhhdAorKwkJICogd2UgZG8gbm90IGFkZCBhbnkgc3RhdGUgZm9yIHVuZXhwZWN0ZWQgU1RBIGFkZHJlc3NlcyBvciBlbmQKKysJCSAqIHVwIHNlbmRpbmcgb3V0IGZyYW1lcyB0byB1bmV4cGVjdGVkIGRlc3RpbmF0aW9uLiAqLworKwkJd3BhX3ByaW50ZihNU0dfREVCVUcsICIlczogSW52YWxpZCBTQT0iIE1BQ1NUUgorKwkJCSAgICIgaW4gcmVjZWl2ZWQgaW5kaWNhdGlvbiAtIGlnbm9yZSB0aGlzIGluZGljYXRpb24gc2lsZW50bHkiLAorKwkJCSAgIF9fZnVuY19fLCBNQUMyU1RSKGFkZHIpKTsKKysJCXJldHVybiAwOworKwl9CisrCisgCXJhbmRvbV9hZGRfcmFuZG9tbmVzcyhhZGRyLCBFVEhfQUxFTik7CisgCisgCWhvc3RhcGRfbG9nZ2VyKGhhcGQsIGFkZHIsIEhPU1RBUERfTU9EVUxFX0lFRUU4MDIxMSwKK2RpZmYgLS1naXQgYS9zcmMvYXAvaWVlZTgwMl8xMS5jIGIvc3JjL2FwL2llZWU4MDJfMTEuYworaW5kZXggYzg1YTI4ZC4uMjgxNjgxMiAxMDA2NDQKKy0tLSBhL3NyYy9hcC9pZWVlODAyXzExLmMKKysrKyBiL3NyYy9hcC9pZWVlODAyXzExLmMKK0BAIC00NjI2LDYgKzQ2MjYsMTggQEAgaW50IGllZWU4MDJfMTFfbWdtdChzdHJ1Y3QgaG9zdGFwZF9kYXRhICpoYXBkLCBjb25zdCB1OCAqYnVmLCBzaXplX3QgbGVuLAorIAlmYyA9IGxlX3RvX2hvc3QxNihtZ210LT5mcmFtZV9jb250cm9sKTsKKyAJc3R5cGUgPSBXTEFOX0ZDX0dFVF9TVFlQRShmYyk7CisgCisrCWlmIChpc19tdWx0aWNhc3RfZXRoZXJfYWRkcihtZ210LT5zYSkgfHwKKysJICAgIGlzX3plcm9fZXRoZXJfYWRkcihtZ210LT5zYSkgfHwKKysJICAgIG9zX21lbWNtcChtZ210LT5zYSwgaGFwZC0+b3duX2FkZHIsIEVUSF9BTEVOKSA9PSAwKSB7CisrCQkvKiBEbyBub3QgcHJvY2VzcyBhbnkgZnJhbWVzIHdpdGggdW5leHBlY3RlZC9pbnZhbGlkIFNBIHNvIHRoYXQKKysJCSAqIHdlIGRvIG5vdCBhZGQgYW55IHN0YXRlIGZvciB1bmV4cGVjdGVkIFNUQSBhZGRyZXNzZXMgb3IgZW5kCisrCQkgKiB1cCBzZW5kaW5nIG91dCBmcmFtZXMgdG8gdW5leHBlY3RlZCBkZXN0aW5hdGlvbi4gKi8KKysJCXdwYV9wcmludGYoTVNHX0RFQlVHLCAiTUdNVDogSW52YWxpZCBTQT0iIE1BQ1NUUgorKwkJCSAgICIgaW4gcmVjZWl2ZWQgZnJhbWUgLSBpZ25vcmUgdGhpcyBmcmFtZSBzaWxlbnRseSIsCisrCQkJICAgTUFDMlNUUihtZ210LT5zYSkpOworKwkJcmV0dXJuIDA7CisrCX0KKysKKyAJaWYgKHN0eXBlID09IFdMQU5fRkNfU1RZUEVfQkVBQ09OKSB7CisgCQloYW5kbGVfYmVhY29uKGhhcGQsIG1nbXQsIGxlbiwgZmkpOworIAkJcmV0dXJuIDE7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZF8yLjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2hvc3RhcGQvaG9zdGFwZF8yLjkuYmIKaW5kZXggOTgyNTE0Zi4uNjhkYzEyMyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ob3N0YXBkL2hvc3RhcGRfMi45LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaG9zdGFwZC9ob3N0YXBkXzIuOS5iYgpAQCAtMTEsNiArMTEsNyBAQAogICAgIGZpbGU6Ly9kZWZjb25maWcgXAogICAgIGZpbGU6Ly9pbml0IFwKICAgICBmaWxlOi8vaG9zdGFwZC5zZXJ2aWNlIFwKKyAgICBmaWxlOi8vQ1ZFLTIwMTktMTYyNzUucGF0Y2ggXAogIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiZjE4OGZjNTNhNDk1ZmU3YWYzYjZkNzdkM2MzMWRlZTgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lyc3NpL2lyc3NpXzEuMS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcnNzaS9pcnNzaV8xLjEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI4NjdlOC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lyc3NpL2lyc3NpXzEuMS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJuY3Vyc2VzIElSQyBjbGllbnQiCi1ERVNDUklQVElPTiA9ICJJcnNzaSBpcyBhbiBuY3Vyc2VzIElSQyBjbGllbnQiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTVmZGMxMTEzMzA2MTY3ZDZlYTI1NjE0MDRjZTAyZjgiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgbmN1cnNlcyBvcGVuc3NsIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyNzFkMmZkODc1Y2RkZDM0NTI2MjM0ZDhhNzY2ZDgyYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1Y2NjMmI4OWEzOTRlOTFiZWEwYWE4M2E5NTFjM2IxZDQ3MWM3NmRhODdiNDE2OWVjNDM1NTMwYTMxYmY5NzMyIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGgtdGV4dHVpIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLXByb3h5IFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWJvdCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1wZXJsPW5vIFwKLSAgICAgICAgICAgICAgICAgLS1lbmFibGUtdHJ1ZS1jb2xvciIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXJzc2kvaXJzc2lfMS4yLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lyc3NpL2lyc3NpXzEuMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhNTQwM2UKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lyc3NpL2lyc3NpXzEuMi4yLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAibmN1cnNlcyBJUkMgY2xpZW50IgorREVTQ1JJUFRJT04gPSAiSXJzc2kgaXMgYW4gbmN1cnNlcyBJUkMgY2xpZW50IgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1ZmRjMTExMzMwNjE2N2Q2ZWEyNTYxNDA0Y2UwMmY4IgorCitERVBFTkRTID0gImdsaWItMi4wIG5jdXJzZXMgb3BlbnNzbCIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiODU0N2Y4OWUwMTRlMjNlMWJiYmI2NjViY2Y3ZTJmNzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjcyNzA2MGM5MTg1NjhiYTJmZjQyOTVhZDczNjEyOGRiYTBiOTk1ZDdiMjA0OTFiY2ExMWY1OTNiZDg1NzU3OCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtdGV4dHVpIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLXByb3h5IFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWJvdCBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1wZXJsPW5vIFwKKyAgICAgICAgICAgICAgICAgLS1lbmFibGUtdHJ1ZS1jb2xvciIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXdkL2l3ZC8wMDAxLU1ha2VmaWxlLmFtLUF2b2lkLXJlZGlyZWN0aW9uLW9mLWlucHV0LWFuZC1vdXRwdXQtZmkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3ZC9pd2QvMDAwMS1NYWtlZmlsZS5hbS1Bdm9pZC1yZWRpcmVjdGlvbi1vZi1pbnB1dC1hbmQtb3V0cHV0LWZpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2VmMDA3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXdkL2l3ZC8wMDAxLU1ha2VmaWxlLmFtLUF2b2lkLXJlZGlyZWN0aW9uLW9mLWlucHV0LWFuZC1vdXRwdXQtZmkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIGYyYTJiOWY0NDVhYjFlMzFmYmIyN2E3NDc0NGU5YTJlZGVkZmNlMTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCA0IE5vdiAyMDE5IDE2OjM4OjA0IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBBdm9pZCByZWRpcmVjdGlvbiBvZiBpbnB1dCBhbmQgb3V0cHV0IGZpbGVzCi0KLUVuc3VyZSB0aGF0IGRpcmVjdG9yeSBpcyBjcmVhdGVkIGJlZm9yZSBpdHMgd3JpdHRlbiB0bwotCi1UaGlzIGNhbiBjYXVzZSBhIGJ1aWxkIHJhY2UgaW4gYSBoaWdobHkgcGFyYWxsZWxpc2VkIGJ1aWxkIHdoZXJlIGEgZGlyZWN0b3J5IGlzIG5vdCB5ZXQgY3JlYXRlZCBidXQKLW91dHB1dCBmaWxlIGlzIGJlaW5nIHdyaXR0ZW4gdXNpbmcgcmVkaXJlY3Rpb24gZS5nLgotCi1yc3QybWFuLnB5IC0tc3RyaWN0IC0tbm8tcmF3IC0tbm8tZ2VuZXJhdG9yIC0tbm8tZGF0ZXN0YW1wIDwgLi4vZ2l0L21vbml0b3IvaXdtb24ucnN0ID4gbW9uaXRvci9pd21vbi4xCi0vYmluL3NoOiBtb25pdG9yL2l3bW9uLjE6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLW1ha2VbMV06ICoqKiBbTWFrZWZpbGU6MzU0NDogbW9uaXRvci9pd21vbi4xXSBFcnJvciAxCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gfCA1ICsrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDgyM2I3ZDAyLi4xYmQwMDA1YyAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTYyNiw4ICs2MjYsOSBAQCBTRURfUFJPQ0VTUyA9ICQoQU1fVl9HRU4pJChNS0RJUl9QKSAkKGRpciAkQCkgJiYgJChTRUQpIFwKLSAJCTwgJDwgPiAkQAotIAotIGlmIFJVTl9SU1QyTUFOCi0tUlNUMk1BTl9QUk9DRVNTID0gJChBTV9WX0dFTikkKFJTVDJNQU4pIC0tc3RyaWN0IC0tbm8tcmF3IC0tbm8tZ2VuZXJhdG9yIFwKLS0JCQktLW5vLWRhdGVzdGFtcCA8ICQ8ID4gJEAKLStSU1QyTUFOX1BST0NFU1MgPSAkKEFNX1ZfR0VOKSQoTUtESVJfUCkgJChkaXIgJEApICYmIFwKLSsJCQkkKEFNX1ZfR0VOKSQoUlNUMk1BTikgLS1zdHJpY3QgLS1uby1yYXcgXAotKwkJCS0tbm8tZ2VuZXJhdG9yIC0tbm8tZGF0ZXN0YW1wICQ8ICRACi0gZWxzZQotIFJTVDJNQU5fUFJPQ0VTUyA9ICQoQU1fVl9HRU4pdGVzdCAtZiAkQCB8fCBcCi0gCQl7IGVjaG8gIkdlbmVyYXRlZCBtYW51YWwgcGFnZSAkQCBkb2VzIG5vdCBleGlzdCI7IGZhbHNlOyB9Ci0tLSAKLTIuMjQuMAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3ZC9pd2RfMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pd2QvaXdkXzEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2MzNGNhMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3ZC9pd2RfMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiV2lyZWxlc3MgZGFlbW9uIGZvciBMaW51eCIKLUxJQ0VOU0UgPSAiTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYjUwNGI2N2M1MDMzMWZjNzg3MzRmZWQ5MGZiMGUwOSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgcHl0aG9uM25hdGl2ZQotCi1ERVBFTkRTID0gImVsbCByZWFkbGluZSBkYnVzIHB5dGhvbjMtZG9jdXRpbHMtbmF0aXZlIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vbmV0d29yay93aXJlbGVzcy9pd2QuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tQXZvaWQtcmVkaXJlY3Rpb24tb2YtaW5wdXQtYW5kLW91dHB1dC1maS5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDUkVWID0gIjk3MWUxZDIwMzhhMjAzYWQ0M2JkMjI3OGE4MTFhOWU1ZWM4ZDUyZGIiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKLVBBQ0tBR0VDT05GSUdbd2lyZWRdID0gIi0tZW5hYmxlLXdpcmVkLC0tZGlzYWJsZS13aXJlZCIKLVBBQ0tBR0VDT05GSUdbb2Zvbm9dID0gIi0tZW5hYmxlLW9mb25vLC0tZGlzYWJsZS1vZm9ubyIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWQtdW5pdGRpcj0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9LC0tZGlzYWJsZS1zeXN0ZW1kLXNlcnZpY2Usc3lzdGVtZCIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1leHRlcm5hbC1lbGwiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBta2RpciAtcCAke1N9L2J1aWxkLWF1eAotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBta2RpciAtLXBhcmVudHMgJHtEfSR7ZG9jZGlyfS8ke0JQTn0KLSAgICBpbnN0YWxsIC1tNjQ0ICR7U30vZG9jLyoudHh0ICR7RH0ke2RvY2Rpcn0vJHtCUE59Ci19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMSAke25vbmFyY2hfbGliZGlyfS9tb2R1bGVzLWxvYWQuZCAke3N5c3RlbWRfdW5pdGRpcn0vbmV0d29yay8iCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJpd2Quc2VydmljZSAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd3aXJlZCcsICdlYWQuc2VydmljZScsICcnLCBkKX0iCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gIlwKLSAgICBrZXJuZWwtbW9kdWxlLXBrY3M3LW1lc3NhZ2UgXAotICAgIGtlcm5lbC1tb2R1bGUtcGtjczgta2V5LXBhcnNlciBcCi0gICAga2VybmVsLW1vZHVsZS14NTA5LWtleS1wYXJzZXIgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pd2QvaXdkXzEuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXdkL2l3ZF8xLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTBhYzAzZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXdkL2l3ZF8xLjYuYmIKQEAgLTAsMCArMSw1NCBAQAorU1VNTUFSWSA9ICJXaXJlbGVzcyBkYWVtb24gZm9yIExpbnV4IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9pd2Qud2lraS5rZXJuZWwub3JnLyIKK0xJQ0VOU0UgPSAiTEdQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYjUwNGI2N2M1MDMzMWZjNzg3MzRmZWQ5MGZiMGUwOSIKKworREVQRU5EUyA9ICJlbGwiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9uZXR3b3JrL3dpcmVsZXNzL2l3ZC5naXQiCitTUkNSRVYgPSAiYWQ5N2Y0Zjk0NWI4Mjg0MjVmZjI4OGU5MDU1MjNlMTFiMzMwZDQxZCIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIG1hbnBhZ2VzIHBrZ2NvbmZpZyBweXRob24zbmF0aXZlIHN5c3RlbWQKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgY2xpZW50IFwKKyAgICBtb25pdG9yIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbY2xpZW50XSA9ICItLWVuYWJsZS1jbGllbnQsLS1kaXNhYmxlLWNsaWVudCxyZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbbW9uaXRvcl0gPSAiLS1lbmFibGUtbW9uaXRvciwtLWRpc2FibGUtbW9uaXRvciIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbnVhbC1wYWdlcywtLWRpc2FibGUtbWFudWFsLXBhZ2VzLHB5dGhvbjMtZG9jdXRpbHMtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1t3aXJlZF0gPSAiLS1lbmFibGUtd2lyZWQsLS1kaXNhYmxlLXdpcmVkIgorUEFDS0FHRUNPTkZJR1tvZm9ub10gPSAiLS1lbmFibGUtb2Zvbm8sLS1kaXNhYmxlLW9mb25vIgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzdGVtZC11bml0ZGlyPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS1kaXNhYmxlLXN5c3RlbWQtc2VydmljZSxzeXN0ZW1kIgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtZXh0ZXJuYWwtZWxsIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiIFwKKyAgICBpd2Quc2VydmljZSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnd2lyZWQnLCAnZWFkLnNlcnZpY2UnLCAnJywgZCl9IFwKKyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke1N9L2J1aWxkLWF1eAorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIElmIGNsaWVudCBhbmQgbW9uaXRvciBhcmUgZGlzYWJsZWQsIGJpbmRpciBpcyBlbXB0eSwgY2F1c2luZyBhIFFBIGVycm9yCisgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfS8ke2JpbmRpcn0KK30KKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7bm9uYXJjaF9saWJkaXJ9L21vZHVsZXMtbG9hZC5kIFwKKyAgICAke3N5c3RlbWRfdW5pdGRpcn0vbmV0d29yayBcCisiCisKK1JERVBFTkRTXyR7UE59ID0gImRidXMiCisKK1JSRUNPTU1FTkRTXyR7UE59ID0gIlwKKyAgICBrZXJuZWwtbW9kdWxlLXBrY3M3LW1lc3NhZ2UgXAorICAgIGtlcm5lbC1tb2R1bGUtcGtjczgta2V5LXBhcnNlciBcCisgICAga2VybmVsLW1vZHVsZS14NTA5LWtleS1wYXJzZXIgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJldi9saWJldl80LjI3LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJldi9saWJldl80LjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTQ1MzZiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGliZXYvbGliZXZfNC4yNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiQSBmdWxsLWZlYXR1cmVkIGFuZCBoaWdoLXBlcmZvcm1hbmNlIGV2ZW50IGxvb3AgdGhhdCBpcyBsb29zZWx5IFwKLW1vZGVsbGVkIGFmdGVyIGxpYmV2ZW50LiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb2Z0d2FyZS5zY2htb3JwLmRlL3BrZy9saWJldi5odG1sIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UgfCBHUEwtMi4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQ2YWQ0MTZhZmQwNDBjOTA2OThlZGNkZjFjYmVlMzQ3IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kaXN0LnNjaG1vcnAuZGUvbGliZXYvQXR0aWMvJHtCUH0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImQzODkyNWZiYzAzMDE1M2ZlNjc0YzRlMGU4NjRhNjlhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJkNTUyNmZjOGRhNGYwNzJkZDVjNzNlMThmYmIxNjY2ZjVlZjhlZDc4YjczYmJhMTJlMTk1Y2ZkZDgxMDM0NGUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLXBpYyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBBdm9pZCBjb25mbGljdGluZyB3aXRoIGxpYmV2ZW50LiBUaGUgcHJvdmlkZWQgY29tcGF0aWJpbGl0eSBsYXllciBpcwotICAgICMgc3RpbGwgYmFzaWMgc28gZHJvcCBpdCBmb3Igbm93LgotICAgIHJtICR7RH0ke2luY2x1ZGVkaXJ9L2V2ZW50LmgKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYmV2L2xpYmV2XzQuMzMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYmV2L2xpYmV2XzQuMzMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzYwYzJkYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGliZXYvbGliZXZfNC4zMy5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIkEgZnVsbC1mZWF0dXJlZCBhbmQgaGlnaC1wZXJmb3JtYW5jZSBldmVudCBsb29wIHRoYXQgaXMgbG9vc2VseSBcCittb2RlbGxlZCBhZnRlciBsaWJldmVudC4iCitIT01FUEFHRSA9ICJodHRwOi8vc29mdHdhcmUuc2NobW9ycC5kZS9wa2cvbGliZXYuaHRtbCIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIHwgR1BMLTIuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kNmFkNDE2YWZkMDQwYzkwNjk4ZWRjZGYxY2JlZTM0NyIKKworU1JDX1VSSSA9ICJodHRwOi8vZGlzdC5zY2htb3JwLmRlL2xpYmV2L0F0dGljLyR7QlB9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhMzQzM2YyMzU4MzE2NzA4MWJmNGFjZGQ1YjAxYjM0ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1MDdlYjdiOGQxMDE1ZmJlYzViOTM1ZjM0ZWJlZDE1YmYzNDZiZWQwNGExMWFiODJiOGVlZTg0OGM0MjA1YWVhIgorCitpbmhlcml0IGF1dG90b29scworCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1waWMiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgQXZvaWQgY29uZmxpY3Rpbmcgd2l0aCBsaWJldmVudC4gVGhlIHByb3ZpZGVkIGNvbXBhdGliaWxpdHkgbGF5ZXIgaXMKKyAgICAjIHN0aWxsIGJhc2ljIHNvIGRyb3AgaXQgZm9yIG5vdy4KKyAgICBybSAke0R9JHtpbmNsdWRlZGlyfS9ldmVudC5oCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJtYmltL2xpYm1iaW0vY2xhbmcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm1iaW0vbGlibWJpbS9jbGFuZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg4NTc4NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm1iaW0vbGlibWJpbS9jbGFuZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLUNoZWNrIGZvciBjbGFuZyBjb21waWxlciBzaW5jZSB3ZSBuZWVkIHRvIGRpc2FibGUKLXVudXNlZC1mdW5jdGlvbiB3YXJuaW5nIGZvciBjbGFuZywgYXQgc2FtZSB0aW1lCi1wYXNzIHdlcnJvciB3aGVuIGNoZWNraW5nIGZvciBjb21waWxlciBvcHRpb25zIGlmCi13ZXJyb3IgaXMgZW5hYmxlZCBzbyBzcHVyaW91cyBvcHRpb25zIGRvIG5vdCBnZXQKLWVuYWJsZWQuIE9ubHkgdGhlIG9uZXMgdGhhdCBhcmUgc3VwcG9ydGVkIGJ5IGdpdmVuCi1jb21waWxlciBhcmUgYWNjZXB0ZWQuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGxpYm1iaW0tMS4xNC4wL200L2NvbXBpbGVyLXdhcm5pbmdzLm00Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlibWJpbS0xLjE0LjAub3JpZy9tNC9jb21waWxlci13YXJuaW5ncy5tNAotKysrIGxpYm1iaW0tMS4xNC4wL200L2NvbXBpbGVyLXdhcm5pbmdzLm00Ci1AQCAtMiwxMCArMiwzMCBAQCBBQ19ERUZVTihbTElCTUJJTV9DT01QSUxFUl9XQVJOSU5HU10sCi0gW0FDX0FSR19FTkFCTEUobW9yZS13YXJuaW5ncywKLSAJQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLW1vcmUtd2FybmluZ3NdLCBbUG9zc2libGUgdmFsdWVzOiBuby95ZXMvZXJyb3JdKSwKLSAJc2V0X21vcmVfd2FybmluZ3M9IiRlbmFibGV2YWwiLHNldF9tb3JlX3dhcm5pbmdzPWVycm9yKQotKwotKyMgQ2xhbmcgdGhyb3dzIGEgbG90IG9mIHdhcm5pbmdzIHdoZW4gaXQgZG9lcyBub3QgdW5kZXJzdGFuZCBhIGZsYWcuIERpc2FibGUKLSsjIHRoaXMgd2FybmluZyBmb3Igbm93IHNvIG90aGVyIHdhcm5pbmdzIGFyZSB2aXNpYmxlLgotK0FDX01TR19DSEVDS0lORyhbaWYgY29tcGlsaW5nIHdpdGggY2xhbmddKQotK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU0oW10sIFtbCi0rI2lmbmRlZiBfX2NsYW5nX18KLSsJbm90IGNsYW5nCi0rI2VuZGlmCi0rCV1dKV0sCi0rCVtDTEFORz15ZXNdLAotKwlbQ0xBTkc9bm9dCi0rKQotK0FDX01TR19SRVNVTFQoWyRDTEFOR10pCi0rQVNfSUYoW3Rlc3QgIngkQ0xBTkciID0gInh5ZXMiXSwgW0NMQU5HX0ZMQUdTPS1Xbm8tZXJyb3I9dW51c2VkLWZ1bmN0aW9uXSkKLStDRkxBR1M9IiRDRkxBR1MgJENMQU5HX0ZMQUdTIgotK0xERkxBR1M9IiRMREZMQUdTICRDTEFOR19GTEFHUyIKLSsKLSBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG1vcmUgd2FybmluZ3MpCi0gaWYgdGVzdCAiJEdDQyIgPSAieWVzIiAtYSAiJHNldF9tb3JlX3dhcm5pbmdzIiAhPSAibm8iOyB0aGVuCi0gCUFDX01TR19SRVNVTFQoeWVzKQotIAlDRkxBR1M9Ii1XYWxsIC1zdGQ9Z251ODkgJENGTEFHUyIKLSsJaWYgdGVzdCAieCRzZXRfbW9yZV93YXJuaW5ncyIgPSB4ZXJyb3I7IHRoZW4KLSsJCVdFUlJPUj0iLVdlcnJvciIKLSsJZmkKLSAKLSAJZm9yIG9wdGlvbiBpbiAtV21pc3NpbmctZGVjbGFyYXRpb25zIC1XbWlzc2luZy1wcm90b3R5cGVzIFwKLSAJCSAgICAgIC1XZGVjbGFyYXRpb24tYWZ0ZXItc3RhdGVtZW50IC1Xc3RyaWN0LXByb3RvdHlwZXMgXAotQEAgLTE3LDIyICszNywyMyBAQCBpZiB0ZXN0ICIkR0NDIiA9ICJ5ZXMiIC1hICIkc2V0X21vcmVfd2FyCi0gCQkgICAgICAtV21pc3NpbmctaW5jbHVkZS1kaXJzIC1XYWdncmVnYXRlLXJldHVybiBcCi0gCQkgICAgICAtV2Zvcm1hdC1zZWN1cml0eSAtV3R5cGUtbGltaXRzOyBkbwotIAkJU0FWRV9DRkxBR1M9IiRDRkxBR1MiCi0tCQlDRkxBR1M9IiRDRkxBR1MgJG9wdGlvbiIKLSsJCUNGTEFHUz0iJENGTEFHUyAkb3B0aW9uICRXRVJST1IiCi0gCQlBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgZ2NjIHVuZGVyc3RhbmRzICRvcHRpb25dKQotIAkJQUNfVFJZX0NPTVBJTEUoW10sIFtdLAotIAkJCWhhc19vcHRpb249eWVzLAotIAkJCWhhc19vcHRpb249bm8sKQotIAkJaWYgdGVzdCAkaGFzX29wdGlvbiA9IG5vOyB0aGVuCi0gCQkJQ0ZMQUdTPSIkU0FWRV9DRkxBR1MiCi0rCQllbHNlCi0rCQkJQ0ZMQUdTPSIkU0FWRV9DRkxBR1MgJG9wdGlvbiIKLSAJCWZpCi0gCQlBQ19NU0dfUkVTVUxUKCRoYXNfb3B0aW9uKQotIAkJdW5zZXQgaGFzX29wdGlvbgotIAkJdW5zZXQgU0FWRV9DRkxBR1MKLSAJZG9uZQotKwlDRkxBR1M9IiRDRkxBR1MgJFdFUlJPUiIKLSAJdW5zZXQgb3B0aW9uCi0tCWlmIHRlc3QgIngkc2V0X21vcmVfd2FybmluZ3MiID0geGVycm9yOyB0aGVuCi0tCQlDRkxBR1M9IiRDRkxBR1MgLVdlcnJvciIKLS0JZmkKLSsJdW5zZXQgV0VSUk9SCi0gZWxzZQotIAlBQ19NU0dfUkVTVUxUKG5vKQotIGZpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm1iaW0vbGlibWJpbV8xLjIwLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm1iaW0vbGlibWJpbV8xLjIwLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzZWY4MGMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJtYmltL2xpYm1iaW1fMS4yMC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJsaWJtYmltIGlzIGxpYnJhcnkgZm9yIHRhbGtpbmcgdG8gV1dBTiBkZXZpY2VzIGJ5IE1CSU0gcHJvdG9jb2wiCi1ERVNDUklQVElPTiA9ICJsaWJtYmltIGlzIGEgZ2xpYi1iYXNlZCBsaWJyYXJ5IGZvciB0YWxraW5nIHRvIFdXQU4gbW9kZW1zIGFuZCBkZXZpY2VzIHdoaWNoIHNwZWFrIHRoZSBNb2JpbGUgSW50ZXJmYWNlIEJyb2FkYmFuZCBNb2RlbCAoTUJJTSkgcHJvdG9jb2wiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYm1iaW0vIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0iCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYmd1ZGV2IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmFzaC1jb21wbGV0aW9uCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vY2xhbmcucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImQzOGQ2MzdlMzNjZGU4YTkxNDg0ZjUzYTlmNmM0ZDQ5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFjMjcwOGE0MDliMDlmMWY2ZjE3ODZhOGE5ZTM5YzM2NjE5YWE4ZDZmMjg1ZWE5NDNkYWE3YTQ4ZWEzNmQzZTgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm1iaW0vbGlibWJpbV8xLjIyLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm1iaW0vbGlibWJpbV8xLjIyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFlMzE0ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibWJpbS9saWJtYmltXzEuMjIuMC5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gImxpYm1iaW0gaXMgbGlicmFyeSBmb3IgdGFsa2luZyB0byBXV0FOIGRldmljZXMgYnkgTUJJTSBwcm90b2NvbCIKK0RFU0NSSVBUSU9OID0gImxpYm1iaW0gaXMgYSBnbGliLWJhc2VkIGxpYnJhcnkgZm9yIHRhbGtpbmcgdG8gV1dBTiBtb2RlbXMgYW5kIGRldmljZXMgd2hpY2ggc3BlYWsgdGhlIE1vYmlsZSBJbnRlcmZhY2UgQnJvYWRiYW5kIE1vZGVsIChNQklNKSBwcm90b2NvbCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGlibWJpbS8iCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gIiBcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgbGliZ3VkZXYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiYXNoLWNvbXBsZXRpb24KKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gIjg3MDYwZTg5NTcwMTMxNzdlNDE0MGVkYzZmNjRmNWJkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVjMDc3OGViMWNkMTJjMzYwNDUyMzEzNGU1NTE4M2Y1MTQ3YjBjYWU3MTE1MGU4NzViNTgzNzY4ZjdhYTFmMzgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm10cC9saWJtdHBfMS4xLjE2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJtdHAvbGlibXRwXzEuMS4xNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk2ZTMxNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm10cC9saWJtdHBfMS4xLjE2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotIyBUT0RPOiBpbmNsdWRlIGRlYmlhbidzIG10cC10b29scyBtYW4gcGFnZSAobmVlZHMgeHNsdHByb2MtbmF0aXZlIGFuZAotIyBkb2Nib29rLXhzbC1uYXRpdmUsIG9yIHdlIHByZWdlbmVyYXRlIGl0KSwgYWRkIHN1cHBvcnQgZm9yIGRveHlnZW4KLSMgZ2VuZXJhdGlvbiBmdWxseSB3aXRoIC1uYXRpdmVzCi1ERVNDUklQVElPTiA9ICJsaWJtdHAgaXMgYW4gSW5pdGlhdG9yIGltcGxlbWVudGF0aW9uIG9mIHRoZSBNZWRpYSBUcmFuc2ZlciBcCi1Qcm90b2NvbCAoTVRQKSBpbiB0aGUgZm9ybSBvZiBhIGxpYnJhcnkgc3VpdGFibGUgcHJpbWFyaWx5IGZvciBQT1NJWCBcCi1jb21wbGlhbnQgb3BlcmF0aW5nIHN5c3RlbXMiCi1TVU1NQVJZID0gImxpYm10cCBpcyBhbiBJbml0aWF0b3IgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1lZGlhIFRyYW5zZmVyIFByb3RvY29sIChNVFApIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpYm10cC5zb3VyY2Vmb3JnZS5uZXQvIgotTElDRU5TRSA9ICJMR1BMLTIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gIlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9MDQ0OGQzNjc2YmMwZGUwMDQwNmFmMjI3ZDM0MWE0ZDEgXAotICAgIGZpbGU6Ly9zcmMvcHRwLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0yMjttZDU9MzAzY2M0NDIyZmQ1NDllZjg2ODlhZGVkMjA0MzRhOWEgXAotICAgIGZpbGU6Ly9leGFtcGxlcy9hbGJ1bXMuYztiZWdpbmxpbmU9NTtlbmRsaW5lPTIxO21kNT04NGY0ZTU1ZGZlYzQ5ZTg5OGI3ZjY4YTgyOGMxNTYyMCBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi1ERVBFTkRTID0gImxpYnVzYjEgZ2V0dGV4dC1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QlBOfS1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IgotU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vMDAwMS1Vc2UtbmF0aXZlLW10cC1ob3RwbHVnLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNzc5NjE3OWFmNDZlOTA5MzhkZGUxZDBjNGQxZDFkNGMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWI2OGY5ZGQxZWQzOGRlNTU4ZGU2ODdmNDBlMjU1YTM5ZTRkNWUzMmVmM2RlNjAxZjBhYzE5ZGQ1NjgyYmJhMCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlCi0KLUVYVFJBX09FQ09ORiArPSAiIFwKLSAgICAtLWRpc2FibGUtcnBhdGggXAotICAgIC0td2l0aC11ZGV2PSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldiBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2xhcmdlZmlsZScsIGQpfSIKLVBBQ0tBR0VDT05GSUdbZG94eWdlbl0gPSAiLS1lbmFibGUtZG94eWdlbiwtLWRpc2FibGUtZG94eWdlbiIKLVBBQ0tBR0VDT05GSUdbbGFyZ2VmaWxlXSA9ICItLWVuYWJsZS1sYXJnZWZpbGUsLS1kaXNhYmxlLWxhcmdlZmlsZSIKLVBBQ0tBR0VDT05GSUdbbXRwel0gPSAiLS1lbmFibGUtbXRweiwtLWRpc2FibGUtbXRweixsaWJnY3J5cHQiCi0KLVBBQ0tBR0VTID0rICIke0JQTn0tY29tbW9uICR7QlBOfS1ydW50aW1lIgotCi1SREVQRU5EU18ke0JQTn0gKz0gImxpYm10cC1jb21tb24iCi1SUkVDT01NRU5EU18ke0JQTn0gKz0gImxpYm10cC1ydW50aW1lICR7UE59LWJpbiIKLQotRklMRVNfJHtCUE59LWNvbW1vbiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC8qIgotU1VNTUFSWV8ke0JQTn0tY29tbW9uID0gIlRoZSB1ZGV2IHJ1bGVzIGZpbGUgZm9yIE1UUCBkZXZpY2VzIgotCi1GSUxFU18ke0JQTn0tcnVudGltZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvbXRwLXByb2JlIgotUkRFUEVORFNfJHtCUE59LXJ1bnRpbWUgPSAibGlibXRwLWNvbW1vbiIKLVNVTU1BUllfJHtCUE59LXJ1bnRpbWUgPSAibXRwLXByb2JlLCB1c2VkIGZvciB0aGUgTVRQIHVkZXYgcnVsZXMiCi1ERVNDUklQVElPTl8ke0JQTn0tcnVudGltZSA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgbXRwLXByb2JlLCBhIHByb2dyYW0gdG8gcHJvYmUgbmV3bHkgY29ubmVjdGVkIGRldmljZSBpbnRlcmZhY2VzIGZyb20gdXNlcnNwYWNlIHRvIGRldGVybWluZSBpZiB0aGV5IGFyZSBNVFAgZGV2aWNlcywgdXNlZCBmb3IgdWRldiBydWxlcy4iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm10cC9saWJtdHBfMS4xLjE3LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJtdHAvbGlibXRwXzEuMS4xNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NGRlY2JjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJtdHAvbGlibXRwXzEuMS4xNy5iYgpAQCAtMCwwICsxLDUwIEBACisjIFRPRE86IGluY2x1ZGUgZGViaWFuJ3MgbXRwLXRvb2xzIG1hbiBwYWdlIChuZWVkcyB4c2x0cHJvYy1uYXRpdmUgYW5kCisjIGRvY2Jvb2steHNsLW5hdGl2ZSwgb3Igd2UgcHJlZ2VuZXJhdGUgaXQpLCBhZGQgc3VwcG9ydCBmb3IgZG94eWdlbgorIyBnZW5lcmF0aW9uIGZ1bGx5IHdpdGggLW5hdGl2ZXMKK0RFU0NSSVBUSU9OID0gImxpYm10cCBpcyBhbiBJbml0aWF0b3IgaW1wbGVtZW50YXRpb24gb2YgdGhlIE1lZGlhIFRyYW5zZmVyIFwKK1Byb3RvY29sIChNVFApIGluIHRoZSBmb3JtIG9mIGEgbGlicmFyeSBzdWl0YWJsZSBwcmltYXJpbHkgZm9yIFBPU0lYIFwKK2NvbXBsaWFudCBvcGVyYXRpbmcgc3lzdGVtcyIKK1NVTU1BUlkgPSAibGlibXRwIGlzIGFuIEluaXRpYXRvciBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTWVkaWEgVHJhbnNmZXIgUHJvdG9jb2wgKE1UUCkiCitIT01FUEFHRSA9ICJodHRwOi8vbGlibXRwLnNvdXJjZWZvcmdlLm5ldC8iCitMSUNFTlNFID0gIkxHUEwtMi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT0wNDQ4ZDM2NzZiYzBkZTAwNDA2YWYyMjdkMzQxYTRkMSBcCisgICAgZmlsZTovL3NyYy9wdHAuYztiZWdpbmxpbmU9MztlbmRsaW5lPTIyO21kNT0zMDNjYzQ0MjJmZDU0OWVmODY4OWFkZWQyMDQzNGE5YSBcCisgICAgZmlsZTovL2V4YW1wbGVzL2FsYnVtcy5jO2JlZ2lubGluZT01O2VuZGxpbmU9MjE7bWQ1PTg0ZjRlNTVkZmVjNDllODk4YjdmNjhhODI4YzE1NjIwIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0RFUEVORFMgPSAibGlidXNiMSBnZXR0ZXh0LW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtCUE59LW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly8wMDAxLVVzZS1uYXRpdmUtbXRwLWhvdHBsdWcucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MWFlYTVkMzEzOWU1MTg5YzJlMDU1ZWQyYzk4Y2Q5MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmOGEzNGNmNTJkOWY5YjljYjhjN2YyNmIxMmRhMzQ3ZDRhZjdlYjkwNGMxMzE4OTYwMmU0YzZiNjJkMWE3OWRjIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbGliX3BhY2thZ2UKKworRVhUUkFfT0VDT05GICs9ICIgXAorICAgIC0tZGlzYWJsZS1ycGF0aCBcCisgICAgLS13aXRoLXVkZXY9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2IFwKKyIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnbGFyZ2VmaWxlJywgZCl9IgorUEFDS0FHRUNPTkZJR1tkb3h5Z2VuXSA9ICItLWVuYWJsZS1kb3h5Z2VuLC0tZGlzYWJsZS1kb3h5Z2VuIgorUEFDS0FHRUNPTkZJR1tsYXJnZWZpbGVdID0gIi0tZW5hYmxlLWxhcmdlZmlsZSwtLWRpc2FibGUtbGFyZ2VmaWxlIgorUEFDS0FHRUNPTkZJR1ttdHB6XSA9ICItLWVuYWJsZS1tdHB6LC0tZGlzYWJsZS1tdHB6LGxpYmdjcnlwdCIKKworUEFDS0FHRVMgPSsgIiR7QlBOfS1jb21tb24gJHtCUE59LXJ1bnRpbWUiCisKK1JERVBFTkRTXyR7QlBOfSArPSAibGlibXRwLWNvbW1vbiIKK1JSRUNPTU1FTkRTXyR7QlBOfSArPSAibGlibXRwLXJ1bnRpbWUgJHtQTn0tYmluIgorCitGSUxFU18ke0JQTn0tY29tbW9uID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLyoiCitTVU1NQVJZXyR7QlBOfS1jb21tb24gPSAiVGhlIHVkZXYgcnVsZXMgZmlsZSBmb3IgTVRQIGRldmljZXMiCisKK0ZJTEVTXyR7QlBOfS1ydW50aW1lID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi9tdHAtcHJvYmUiCitSREVQRU5EU18ke0JQTn0tcnVudGltZSA9ICJsaWJtdHAtY29tbW9uIgorU1VNTUFSWV8ke0JQTn0tcnVudGltZSA9ICJtdHAtcHJvYmUsIHVzZWQgZm9yIHRoZSBNVFAgdWRldiBydWxlcyIKK0RFU0NSSVBUSU9OXyR7QlBOfS1ydW50aW1lID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyBtdHAtcHJvYmUsIGEgcHJvZ3JhbSB0byBwcm9iZSBuZXdseSBjb25uZWN0ZWQgZGV2aWNlIGludGVyZmFjZXMgZnJvbSB1c2Vyc3BhY2UgdG8gZGV0ZXJtaW5lIGlmIHRoZXkgYXJlIE1UUCBkZXZpY2VzLCB1c2VkIGZvciB1ZGV2IHJ1bGVzLiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicW1pL2xpYnFtaV8xLjI0LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnFtaS9saWJxbWlfMS4yNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWE1OGQyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicW1pL2xpYnFtaV8xLjI0LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1TVU1NQVJZID0gImxpYnFtaSBpcyBhIGxpYnJhcnkgZm9yIHRhbGtpbmcgdG8gV1dBTiBkZXZpY2VzIGJ5IFFNSSBwcm90b2NvbCIKLURFU0NSSVBUSU9OID0gImxpYnFtaSBpcyBhIGdsaWItYmFzZWQgbGlicmFyeSBmb3IgdGFsa2luZyB0byBXV0FOIG1vZGVtcyBhbmQgZGV2aWNlcyB3aGljaCBzcGVhayB0aGUgUXVhbGNvbW0gTVNNIEludGVyZmFjZSAoUU1JKSBwcm90b2NvbCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGlicW1pIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0iCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmFzaC1jb21wbGV0aW9uCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlNDljNDE5MTEyZDcwOGI1MzAxYWY3Y2NjMmMwOTBmZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YWU0ZTQ3NmY5NjBkYmMwZDA0YjFjMDM2ODc3NmViNzhlZGZmZDQ0MjFmM2U0YzA3NGJiMmJmYjYzNzViMjgyIgotCi1QQUNLQUdFQ09ORklHID8/PSAidWRldiBtYmltIgotUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICIsLS13aXRob3V0LXVkZXYsbGliZ3VkZXYiCi1QQUNLQUdFQ09ORklHW21iaW1dID0gIi0tZW5hYmxlLW1iaW0tcW11eCwtLWRpc2FibGUtbWJpbS1xbXV4LGxpYm1iaW0iCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfdG9vbGNoYWluLWNsYW5nID0gIiAtLWVuYWJsZS1tb3JlLXdhcm5pbmdzPW5vIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJxbWkvbGlicW1pXzEuMjQuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicW1pL2xpYnFtaV8xLjI0LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTI0YjBmMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlicW1pL2xpYnFtaV8xLjI0LjguYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJsaWJxbWkgaXMgYSBsaWJyYXJ5IGZvciB0YWxraW5nIHRvIFdXQU4gZGV2aWNlcyBieSBRTUkgcHJvdG9jb2wiCitERVNDUklQVElPTiA9ICJsaWJxbWkgaXMgYSBnbGliLWJhc2VkIGxpYnJhcnkgZm9yIHRhbGtpbmcgdG8gV1dBTiBtb2RlbXMgYW5kIGRldmljZXMgd2hpY2ggc3BlYWsgdGhlIFF1YWxjb21tIE1TTSBJbnRlcmZhY2UgKFFNSSkgcHJvdG9jb2wiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL2xpYnFtaSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiIFwKKyAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJhc2gtY29tcGxldGlvbgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzc5M2RiMmM5MWQ3OTI4MTYwMzQxYjM1N2IyNjMxNWQ5Yzg3OWVjYjM2Njk5Y2I3YTZiMzYwNTRjYmE2MDg5MyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInVkZXYgbWJpbSIKK1BBQ0tBR0VDT05GSUdbdWRldl0gPSAiLC0td2l0aG91dC11ZGV2LGxpYmd1ZGV2IgorUEFDS0FHRUNPTkZJR1ttYmltXSA9ICItLWVuYWJsZS1tYmltLXFtdXgsLS1kaXNhYmxlLW1iaW0tcW11eCxsaWJtYmltIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX3Rvb2xjaGFpbi1jbGFuZyA9ICIgLS1lbmFibGUtbW9yZS13YXJuaW5ncz1ubyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlidXYvbGlidXZfMS4zNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1di9saWJ1dl8xLjM0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4NDJiYmQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1di9saWJ1dl8xLjM0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gIkEgbXVsdGktcGxhdGZvcm0gc3VwcG9ydCBsaWJyYXJ5IHdpdGggYSBmb2N1cyBvbiBhc3luY2hyb25vdXMgSS9PIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYnV2L2xpYnV2IgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vbGlidXYvbGlidXYvaXNzdWVzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNjg5MDJhNDMwZTMyMjAwMjYzZDE4MmQ0NDkyNGQ0NyIKLQotU1JDUkVWID0gIjE1YWU3NTAxNTFhYzkzNDFlNTk0NWViMzhmODk4MmQ1OWZiOTkyMDEiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGlidXYvbGlidXY7YnJhbmNoPXYxLngiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICAke1N9L2F1dG9nZW4uc2ggfHwgYmJub3RlICIke1BOfSBmYWlsZWQgdG8gYXV0b2dlbi5zaCIKLSAgICBvZV9ydW5jb25mCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1di9saWJ1dl8xLjM2LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYnV2L2xpYnV2XzEuMzYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWVhYTJiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ1di9saWJ1dl8xLjM2LjAuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJBIG11bHRpLXBsYXRmb3JtIHN1cHBvcnQgbGlicmFyeSB3aXRoIGEgZm9jdXMgb24gYXN5bmNocm9ub3VzIEkvTyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJ1di9saWJ1diIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYnV2L2xpYnV2L2lzc3VlcyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTY4OTAyYTQzMGUzMjIwMDI2M2QxODJkNDQ5MjRkNDciCisKK1NSQ1JFViA9ICI1MzNiNzM4ODM4YWQ4NDA3MDMyZTE0YjY3NzJiMjllZjlhZjYzY2ZhIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpYnV2L2xpYnV2O2JyYW5jaD12MS54IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scworCitkb19jb25maWd1cmUoKSB7CisgICAgJHtTfS9hdXRvZ2VuLnNoIHx8IGJibm90ZSAiJHtQTn0gZmFpbGVkIHRvIGF1dG9nZW4uc2giCisgICAgb2VfcnVuY29uZgorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlid2Vic29ja2V0cy9saWJ3ZWJzb2NrZXRzXzMuMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ3ZWJzb2NrZXRzL2xpYndlYnNvY2tldHNfMy4yLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljNTUwMzMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJ3ZWJzb2NrZXRzL2xpYndlYnNvY2tldHNfMy4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gIkNhbm9uaWNhbCBsaWJ3ZWJzb2NrZXRzLm9yZyB3ZWJzb2NrZXQgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHBzOi8vbGlid2Vic29ja2V0cy5vcmcvIgotTElDRU5TRSA9ICJMR1BMLTIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTRjZTg3ZjNmYWNiNmY5MTFjMTQyYzhiZWY5YmZiMzgwIgotCi1ERVBFTkRTID0gInpsaWIiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi1TUkNSRVYgPSAiOTQ5MzFjYWQwMDNmYWY5ZDMxNmU2OThiNTU3YmJiNmQyNDVmMWY5MSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS93YXJtY2F0L2xpYndlYnNvY2tldHMuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD12My4yLXN0YWJsZSIKLQotaW5oZXJpdCBjbWFrZSBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/PSAibGlidXYgY2xpZW50IHNlcnZlciBodHRwMiBzc2wiCi1QQUNLQUdFQ09ORklHW2NsaWVudF0gPSAiLURMV1NfV0lUSE9VVF9DTElFTlQ9T0ZGLC1ETFdTX1dJVEhPVVRfQ0xJRU5UPU9OLCIKLVBBQ0tBR0VDT05GSUdbaHR0cDJdID0gIi1ETFdTX1dJVEhfSFRUUDI9T04sLURMV1NfV0lUSF9IVFRQMj1PRkYsIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItRExXU19JUFY2PU9OLC1ETFdTX0lQVjY9T0ZGLCIKLVBBQ0tBR0VDT05GSUdbbGliZXZdID0gIi1ETFdTX1dJVEhfTElCRVY9T04sLURMV1NfV0lUSF9MSUJFVj1PRkYsbGliZXYiCi1QQUNLQUdFQ09ORklHW2xpYnV2XSA9ICItRExXU19XSVRIX0xJQlVWPU9OLC1ETFdTX1dJVEhfTElCVVY9T0ZGLGxpYnV2IgotUEFDS0FHRUNPTkZJR1tzZXJ2ZXJdID0gIi1ETFdTX1dJVEhPVVRfU0VSVkVSPU9GRiwtRExXU19XSVRIT1VUX1NFUlZFUj1PTiwiCi1QQUNLQUdFQ09ORklHW3NzbF0gPSAiLURMV1NfV0lUSF9TU0w9T04sLURMV1NfV0lUSF9TU0w9T0ZGLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3Rlc3RhcHBzXSA9ICItRExXU19XSVRIT1VUX1RFU1RBUFBTPU9GRiwtRExXU19XSVRIT1VUX1RFU1RBUFBTPU9OLCIKLQotRVhUUkFfT0VDTUFLRSArPSAiIFwKLSAgICAtRExJQl9TVUZGSVg9JHtAZC5nZXRWYXIoJ2Jhc2VsaWInKS5yZXBsYWNlKCdsaWInLCAnJyl9IFwKLSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RhcHBzIgotCi1GSUxFU18ke1BOfS10ZXN0YXBwcyArPSAiJHtkYXRhZGlyfS9saWJ3ZWJzb2NrZXRzLXRlc3Qtc2VydmVyLyoiCi0KLUNGTEFHU19hcHBlbmQgPSAiIC1Xbm8tZXJyb3IiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYndlYnNvY2tldHMvbGlid2Vic29ja2V0c180LjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlid2Vic29ja2V0cy9saWJ3ZWJzb2NrZXRzXzQuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMWY1N2EKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYndlYnNvY2tldHMvbGlid2Vic29ja2V0c180LjAuMS5iYgpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIkNhbm9uaWNhbCBsaWJ3ZWJzb2NrZXRzLm9yZyB3ZWJzb2NrZXQgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vbGlid2Vic29ja2V0cy5vcmcvIgorTElDRU5TRSA9ICJNSVQgJiBabGliICYgQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OGM0N2IwNzgxMjQzMDhhNGUxMzU0ZThkNTlmNjA2YjciCisKK0RFUEVORFMgPSAiemxpYiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFViA9ICI2ZWIzOTM4OGY0M2Y2ZTJhMjdmMGVmY2JmOGNiMjM5MWUzODgyNGU5IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3dhcm1jYXQvbGlid2Vic29ja2V0cy5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPXY0LjAtc3RhYmxlIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dhcm1jYXQvJHtCUE59L3JlbGVhc2VzIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPlxkKyhcLlxkKykrKSIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcKKworUEFDS0FHRUNPTkZJRyA/PSAibGlidXYgY2xpZW50IHNlcnZlciBodHRwMiBzc2wiCitQQUNLQUdFQ09ORklHW2NsaWVudF0gPSAiLURMV1NfV0lUSE9VVF9DTElFTlQ9T0ZGLC1ETFdTX1dJVEhPVVRfQ0xJRU5UPU9OLCIKK1BBQ0tBR0VDT05GSUdbaHR0cDJdID0gIi1ETFdTX1dJVEhfSFRUUDI9T04sLURMV1NfV0lUSF9IVFRQMj1PRkYsIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItRExXU19JUFY2PU9OLC1ETFdTX0lQVjY9T0ZGLCIKK1BBQ0tBR0VDT05GSUdbbGliZXZdID0gIi1ETFdTX1dJVEhfTElCRVY9T04sLURMV1NfV0lUSF9MSUJFVj1PRkYsbGliZXYiCitQQUNLQUdFQ09ORklHW2xpYnV2XSA9ICItRExXU19XSVRIX0xJQlVWPU9OLC1ETFdTX1dJVEhfTElCVVY9T0ZGLGxpYnV2IgorUEFDS0FHRUNPTkZJR1tzZXJ2ZXJdID0gIi1ETFdTX1dJVEhPVVRfU0VSVkVSPU9GRiwtRExXU19XSVRIT1VUX1NFUlZFUj1PTiwiCitQQUNLQUdFQ09ORklHW3NzbF0gPSAiLURMV1NfV0lUSF9TU0w9T04sLURMV1NfV0lUSF9TU0w9T0ZGLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3Rlc3RhcHBzXSA9ICItRExXU19XSVRIT1VUX1RFU1RBUFBTPU9GRiwtRExXU19XSVRIT1VUX1RFU1RBUFBTPU9OLCIKKworRVhUUkFfT0VDTUFLRSArPSAiIFwKKyAgICAtRExJQl9TVUZGSVg9JHtAZC5nZXRWYXIoJ2Jhc2VsaWInKS5yZXBsYWNlKCdsaWInLCAnJyl9IFwKKyIKKworUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RhcHBzIgorCitGSUxFU18ke1BOfS10ZXN0YXBwcyArPSAiJHtkYXRhZGlyfS9saWJ3ZWJzb2NrZXRzLXRlc3Qtc2VydmVyLyoiCisKK0NGTEFHU19hcHBlbmQgPSAiIC1Xbm8tZXJyb3IiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyY18wLjkuNGQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpcmMvbGlyY18wLjkuNGQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwNmNhZWUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saXJjL2xpcmNfMC45LjRkLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiTElSQyBpcyBhIHBhY2thZ2UgdGhhdCBhbGxvd3MgeW91IHRvIGRlY29kZSBhbmQgc2VuZCBpbmZyYS1yZWQgc2lnbmFscyBvZiBtYW55IGNvbW1vbmx5IHVzZWQgcmVtb3RlIGNvbnRyb2xzLiIKLURFU0NSSVBUSU9OX2FwcGVuZF9saXJjID0gIiBUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIGxpcmMgZGFlbW9uLCBsaWJyYXJpZXMgYW5kIHRvb2xzLiIKLURFU0NSSVBUSU9OX2FwcGVuZF9saXJjLWV4ZWMgPSAiIFRoaXMgcGFja2FnZSBjb250YWlucyBhIGRhZW1vbiB0aGF0IHJ1bnMgcHJvZ3JhbXMgb24gSVIgc2lnbmFscy4iCi1ERVNDUklQVElPTl9hcHBlbmRfbGlyYy1yZW1vdGVzID0gIiBUaGlzIHBhY2thZ2UgY29udGFpbnMgc29tZSBjb25maWcgZmlsZXMgZm9yIHJlbW90ZXMuIgotREVTQ1JJUFRJT05fYXBwZW5kX2xpcmMtbnNsdTJleGFtcGxlID0gIiBUaGlzIHBhY2thZ2UgY29udGFpbnMgYSB3b3JraW5nIGNvbmZpZyBmb3IgUkM1IHJlbW90ZXMgYW5kIGEgbW9kaWZpZWQgTlNMVTIuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saXJjLm9yZyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJHUEx2MiIKLURFUEVORFMgPSAibGlieHNsdC1uYXRpdmUgYWxzYS1saWIgbGliZnRkaSBsaWJ1c2IxIGxpYnVzYi1jb21wYXQgamFjayBwb3J0YXVkaW8tdjE5IgotCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1TUkNfVVJJID0gImh0dHA6Ly9wcmRvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvbGlyYy9saXJjLSR7UFZ9LnRhci5iejIgXAotICAgIGZpbGU6Ly9wb2xsZmQucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1vbi0zMmJpdC1hcmNoZXMtd2l0aC02NGJpdC10aW1lX3QucGF0Y2ggXAotICAgIGZpbGU6Ly9saXJjZC5zZXJ2aWNlIFwKLSAgICBmaWxlOi8vbGlyY2QuaW5pdCBcCi0gICAgZmlsZTovL2xpcmNleGVjLmluaXQgXAotICAgIGZpbGU6Ly9saXJjZC5jb25mIFwKLSAgICBmaWxlOi8vbGlyY19vcHRpb25zLmNvbmYgXAotICAgIGZpbGU6Ly9saXJjLnRtcGZpbGVzIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIwZDExNjc5Y2JkZDk0YTVhNmRhMDBhOGU3MjMxYjRiZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNjhmMThjMzViNDg5Yjg2NWMwYTc0MWQxMTliMTM2ZTg3MDIxOTE1MzhjZDM1NTFiOTc3YTdhZjZjNGU0MWFiIgotCi1TWVNURU1EX1BBQ0tBR0VTID0gImxpcmMgbGlyYy1leGVjIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImxpcmNkLnNlcnZpY2UgbGlyY21kLnNlcnZpY2UgbGlyY2Qtc2V0dXAuc2VydmljZSBsaXJjZC11aW5wdXQuc2VydmljZSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1leGVjID0gImlyZXhlYy5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRV9saXJjID0gImVuYWJsZSIKLVNZU1RFTURfQVVUT19FTkFCTEVfbGlyYy1leGVjID0gImVuYWJsZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQgcHl0aG9uM25hdGl2ZQotCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCwtLXdpdGgteD1ubyxsaWJ4MTEsIgotCi1QQUNLQUdFQ09ORklHID89ICIgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICcgc3lzdGVtZCcsICcnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJyB4MTEnLCAnJywgZCl9IFwKLSIKLUNBQ0hFRF9DT05GSUdVUkVWQVJTID0gIkhBVkVfV09SS0lOR19QT0xMPXllcyIKLQotI0VYVFJBX09FTUFLRSA9ICdTVUJESVJTPSJsaWIgZGFlbW9ucyB0b29scyInCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1tIDA3NTUgLWQgJHtEfSR7c3lzY29uZmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgLWQgJHtEfSR7c3lzY29uZmRpcn0vbGlyYwotICAgIGluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtsaWJkaXJ9L3RtcGZpbGVzLmQKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saXJjZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2xpcmMvCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlyY19vcHRpb25zLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vbGlyYy8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9saXJjZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2xpcmNleGVjLmluaXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlyYy50bXBmaWxlcyAke0R9JHtsaWJkaXJ9L3RtcGZpbGVzLmQvbGlyYy5jb25mCi0gICAgcm0gLXJmICR7RH0ke2xpYmRpcn0vbGlyYy9wbHVnaW5zLyoubGEKLSAgICBybWRpciAke0R9L3Zhci9ydW4vbGlyYyAke0R9L3Zhci9ydW4KLSAgICBjaG93biAtUiByb290OnJvb3QgJHtEfSR7ZGF0YWRpcn0vbGlyYy9jb250cmliCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1jb250cmliICR7UE59LWV4ZWMgJHtQTn0tcGx1Z2lucyAke1BOfS1weXRob24iCi0KLVJERVBFTkRTXyR7UE59ID0gImJhc2giCi1SREVQRU5EU18ke1BOfS1leGVjID0gIiR7UE59IgotUkRFUEVORFNfJHtQTn0tcHl0aG9uID0gInB5dGhvbiIKLQotUlJFQ09NTUVORFNfbGlyYyA9ICIke1BOfS1leGVjICR7UE59LXBsdWdpbnMiCi0KLUZJTEVTXyR7UE59LXBsdWdpbnMgPSAiJHtsaWJkaXJ9L2xpcmMvcGx1Z2lucy8qLnNvICR7ZGF0YWRpcn0vbGlyYy9jb25maWdzIgotRklMRVNfJHtQTn0tY29udHJpYiA9ICIke2RhdGFkaXJ9L2xpcmMvY29udHJpYiIKLUZJTEVTXyR7UE59LWV4ZWMgPSAiJHtiaW5kaXJ9L2lyZXhlYyAke3N5c2NvbmZkaXJ9L2xpcmNleGVjICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vaXJleGVjLnNlcnZpY2UiCi1GSUxFU18ke1BOfSArPSAiJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9saXJjZXhlYy5pbml0IgotRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbGlyY2Quc2VydmljZSIKLUZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2xpcmNkLnNvY2tldCIKLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vdG1wZmlsZXMuZC9saXJjLmNvbmYiCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9saXJjL3BsdWdpbnMvLmRlYnVnIgotRklMRVNfJHtQTn0tcHl0aG9uICs9ICIke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzIgotCi0KLUlOSVRTQ1JJUFRfUEFDS0FHRVMgPSAibGlyYyBsaXJjLWV4ZWMiCi1JTklUU0NSSVBUX05BTUVfbGlyYy1leGVjID0gImxpcmNleGVjIgotSU5JVFNDUklQVF9QQVJBTVNfbGlyYy1leGVjID0gImRlZmF1bHRzIDIxIgotCi0jIHRoaXMgaXMgZm9yIGRpc3RyaWJ1dGlvbnMgdGhhdCBkb24ndCB1c2UgdWRldgotcGtnX3Bvc3RpbnN0XyR7UE59X2FwcGVuZCgpIHsKLSAgICBpZiBbICEgLWMgJEQvZGV2L2xpcmMgLWEgISAtZiAvc2Jpbi91ZGV2ZCBdOyB0aGVuIG1rbm9kICREL2Rldi9saXJjIGMgNjEgMDsgZmkKLX0KLQotU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vZGVtbWFuYWdlci9tb2RlbW1hbmFnZXJfMS4xMC44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb2RlbW1hbmFnZXIvbW9kZW1tYW5hZ2VyXzEuMTAuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2NkMjFjYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L21vZGVtbWFuYWdlci9tb2RlbW1hbmFnZXJfMS4xMC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotU1VNTUFSWSA9ICJNb2RlbU1hbmFnZXIgaXMgYSBkYWVtb24gY29udHJvbGxpbmcgYnJvYWRiYW5kIGRldmljZXMvY29ubmVjdGlvbnMiCi1ERVNDUklQVElPTiA9ICJNb2RlbU1hbmFnZXIgaXMgYSBEQnVzLWFjdGl2YXRlZCBkYWVtb24gd2hpY2ggY29udHJvbHMgbW9iaWxlIGJyb2FkYmFuZCAoMkcvM0cvNEcpIGRldmljZXMgYW5kIGNvbm5lY3Rpb25zIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9Nb2RlbU1hbmFnZXIvIgotTElDRU5TRSA9ICJHUEwtMi4wICYgTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gIiBcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSIKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCBzeXN0ZW1kIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGJhc2gtY29tcGxldGlvbgotCi1ERVBFTkRTID0gImdsaWItMi4wIGxpYmd1ZGV2IGludGx0b29sLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9Nb2RlbU1hbmFnZXIvTW9kZW1NYW5hZ2VyLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImMwNWFjNDI0NmM4MWNjMTVkNjE3YzRhMTI5MjMyOTg4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNiZTE3NDA3OGRiZGYzZjc0NmE1NWYwMDA0MzUzZDNjMjdkYTJhMzFkYTU1MzAzNmQ5MGZjN2RjMzRhMDE2OWEiCi0KLVMgPSAiJHtXT1JLRElSfS9Nb2RlbU1hbmFnZXItJHtQVn0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJtYmltIHFtaSBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCBwb2xraXQnLCBkKX0gXAotIgotCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywsIgotUEFDS0FHRUNPTkZJR1twb2xraXRdID0gIi0td2l0aC1wb2xraXQ9eWVzLC0td2l0aC1wb2xraXQ9bm8scG9sa2l0IgotIyBTdXBwb3J0IFdXQU4gbW9kZW1zIGFuZCBkZXZpY2VzIHdoaWNoIHNwZWFrIHRoZSBNb2JpbGUgSW50ZXJmYWNlIEJyb2FkYmFuZCBNb2RlbCAoTUJJTSkgcHJvdG9jb2wuCi1QQUNLQUdFQ09ORklHW21iaW1dID0gIi0td2l0aC1tYmltLC0td2l0aG91dC1tYmltLGxpYm1iaW0iCi0jIFN1cHBvcnQgV1dBTiBtb2RlbXMgYW5kIGRldmljZXMgd2hpY2ggc3BlYWsgdGhlIFF1YWxjb21tIE1TTSBJbnRlcmZhY2UgKFFNSSkgcHJvdG9jb2wuCi1QQUNLQUdFQ09ORklHW3FtaV0gPSAiLS13aXRoLXFtaSwtLXdpdGhvdXQtcW1pLGxpYnFtaSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS13aXRoLXVkZXYtYmFzZS1kaXI9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2IFwKLSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfdG9vbGNoYWluLWNsYW5nID0gIiAtLWVuYWJsZS1tb3JlLXdhcm5pbmdzPW5vIgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2RhdGFkaXJ9L2ljb25zIFwKLSAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMSBcCi0gICAgJHtkYXRhZGlyfS9Nb2RlbU1hbmFnZXIgXAotICAgICR7bGliZGlyfS9Nb2RlbU1hbmFnZXIgXAotICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0gXAotIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiBcCi0gICAgJHtsaWJkaXJ9L01vZGVtTWFuYWdlci8qLmxhIFwKLSIKLQotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIgXAotICAgICR7bGliZGlyfS9Nb2RlbU1hbmFnZXIvKi5hIFwKLSIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vTW9kZW1NYW5hZ2VyLy5kZWJ1ZyIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIk1vZGVtTWFuYWdlci5zZXJ2aWNlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9tb2RlbW1hbmFnZXIvbW9kZW1tYW5hZ2VyXzEuMTIuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9kZW1tYW5hZ2VyL21vZGVtbWFuYWdlcl8xLjEyLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDdhODZiOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvbW9kZW1tYW5hZ2VyL21vZGVtbWFuYWdlcl8xLjEyLjguYmIKQEAgLTAsMCArMSw1NyBAQAorU1VNTUFSWSA9ICJNb2RlbU1hbmFnZXIgaXMgYSBkYWVtb24gY29udHJvbGxpbmcgYnJvYWRiYW5kIGRldmljZXMvY29ubmVjdGlvbnMiCitERVNDUklQVElPTiA9ICJNb2RlbU1hbmFnZXIgaXMgYSBEQnVzLWFjdGl2YXRlZCBkYWVtb24gd2hpY2ggY29udHJvbHMgbW9iaWxlIGJyb2FkYmFuZCAoMkcvM0cvNEcpIGRldmljZXMgYW5kIGNvbm5lY3Rpb25zIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9Nb2RlbU1hbmFnZXIvIgorTElDRU5TRSA9ICJHUEwtMi4wICYgTEdQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gIiBcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKKyIKKworaW5oZXJpdCBnbm9tZWJhc2UgZ2V0dGV4dCBzeXN0ZW1kIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGJhc2gtY29tcGxldGlvbgorCitERVBFTkRTID0gImdsaWItMi4wIGxpYmd1ZGV2IGludGx0b29sLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9Nb2RlbU1hbmFnZXIvTW9kZW1NYW5hZ2VyLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgICIKKworU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY4YjUzZDA2MTViYTBkM2UyYmJmMzg2ZWQwMjlkZmU2NDRhNmEzMGE3OWFiOGQ4NTUyMzUyN2JiNGU3MTNhZmYiCisKK1MgPSAiJHtXT1JLRElSfS9Nb2RlbU1hbmFnZXItJHtQVn0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICJtYmltIHFtaSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCBwb2xraXQnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHW2F0XSA9ICItLXdpdGgtYXQtY29tbWFuZC12aWEtZGJ1cyIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vLCwiCitQQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS13aXRoLXBvbGtpdD15ZXMsLS13aXRoLXBvbGtpdD1ubyxwb2xraXQiCisjIFN1cHBvcnQgV1dBTiBtb2RlbXMgYW5kIGRldmljZXMgd2hpY2ggc3BlYWsgdGhlIE1vYmlsZSBJbnRlcmZhY2UgQnJvYWRiYW5kIE1vZGVsIChNQklNKSBwcm90b2NvbC4KK1BBQ0tBR0VDT05GSUdbbWJpbV0gPSAiLS13aXRoLW1iaW0sLS13aXRob3V0LW1iaW0sbGlibWJpbSIKKyMgU3VwcG9ydCBXV0FOIG1vZGVtcyBhbmQgZGV2aWNlcyB3aGljaCBzcGVhayB0aGUgUXVhbGNvbW0gTVNNIEludGVyZmFjZSAoUU1JKSBwcm90b2NvbC4KK1BBQ0tBR0VDT05GSUdbcW1pXSA9ICItLXdpdGgtcW1pLC0td2l0aG91dC1xbWksbGlicW1pIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLXdpdGgtdWRldi1iYXNlLWRpcj0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYgXAorIgorRVhUUkFfT0VDT05GX2FwcGVuZF90b29sY2hhaW4tY2xhbmcgPSAiIC0tZW5hYmxlLW1vcmUtd2FybmluZ3M9bm8iCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vaWNvbnMgXAorICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAorICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKKyAgICAke2RhdGFkaXJ9L01vZGVtTWFuYWdlciBcCisgICAgJHtsaWJkaXJ9L01vZGVtTWFuYWdlciBcCisgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSBcCisiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiIFwKKyAgICAke2xpYmRpcn0vTW9kZW1NYW5hZ2VyLyoubGEgXAorIgorCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiBcCisgICAgJHtsaWJkaXJ9L01vZGVtTWFuYWdlci8qLmEgXAorIgorCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9Nb2RlbU1hbmFnZXIvLmRlYnVnIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiTW9kZW1NYW5hZ2VyLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BhaG8tbXF0dC1jL2ZpbGVzLzAwMDEtRml4LWJ1Zy1vZi1mcmVlLXdpdGgtbXVzbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGFoby1tcXR0LWMvZmlsZXMvMDAwMS1GaXgtYnVnLW9mLWZyZWUtd2l0aC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyZjllN2EKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BhaG8tbXF0dC1jL2ZpbGVzLzAwMDEtRml4LWJ1Zy1vZi1mcmVlLXdpdGgtbXVzbC5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDk2MjMzYTgzODJiOTUyMDI5M2E0OGIwOGRjM2IyMDRhMjEyMDU4MDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBXYW5nIE1pbmd5dSA8d2FuZ215QGNuLmZ1aml0c3UuY29tPgorRGF0ZTogRnJpLCAyNCBBcHIgMjAyMCAwMDo1MzoxOSArMDkwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVnIG9mIGZyZWUoKSB3aXRoIG11c2wKKworVGhpcyBmaXhlcyBidWlsZCBlcnJvciB3aXRoIG11c2wgQyBsaWJyYXJ5OgorL3ViaW51eC1kZXYvdWJpbnV4MDAxL2NvbnRyaWJ1dGlvbi9idWlsZC90bXAvd29yay9hcm12N3ZldDJoZi1uZW9uLXBva3ktbGludXgtbXVzbGVhYmkvcGFoby1tcXR0LWMvMS4zLjItcjAvZ2l0L3NyYy9IZWFwLmg6NTU6MjQ6CitlcnJvcjogZXhwZWN0ZWQgZGVjbGFyYXRpb24gc3BlY2lmaWVycyBvciAnLi4uJyBiZWZvcmUgc3RyaW5nIGNvbnN0YW50CisgICA1NSB8ICNkZWZpbmUgZnJlZSh4KSBteWZyZWUoX19GSUxFX18sIF9fTElORV9fLCB4KQorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+CisvdWJpbnV4LWRldi91YmludXgwMDEvY29udHJpYnV0aW9uL2J1aWxkL3RtcC93b3JrL2FybXY3dmV0MmhmLW5lb24tcG9reS1saW51eC1tdXNsZWFiaS9wYWhvLW1xdHQtYy8xLjMuMi1yMC9naXQvc3JjL0hlYXAuaDo1NTozNDoKK2Vycm9yOiBleHBlY3RlZCBkZWNsYXJhdGlvbiBzcGVjaWZpZXJzIG9yICcuLi4nIGJlZm9yZSBudW1lcmljIGNvbnN0YW50CisgICA1NSB8ICNkZWZpbmUgZnJlZSh4KSBteWZyZWUoX19GSUxFX18sIF9fTElORV9fLCB4KQorICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fgorCitTaWduZWQtb2ZmLWJ5OiBXYW5nIE1pbmd5dSA8d2FuZ215QGNuLmZ1aml0c3UuY29tPgorLS0tCisgc3JjL01RVFRSZWFzb25Db2Rlcy5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL01RVFRSZWFzb25Db2Rlcy5jIGIvc3JjL01RVFRSZWFzb25Db2Rlcy5jCitpbmRleCA0MTZlYWI1Li40NzlkYmFjIDEwMDY0NAorLS0tIGEvc3JjL01RVFRSZWFzb25Db2Rlcy5jCisrKysgYi9zcmMvTVFUVFJlYXNvbkNvZGVzLmMKK0BAIC0xNiwxMCArMTYsMTAgQEAKKyAKKyAjaW5jbHVkZSAiTVFUVFJlYXNvbkNvZGVzLmgiCisgCistI2luY2x1ZGUgIkhlYXAuaCIKKyAjaW5jbHVkZSAiU3RhY2tUcmFjZS5oIgorIAorICNpbmNsdWRlIDxtZW1vcnkuaD4KKysjaW5jbHVkZSAiSGVhcC5oIgorIAorICNkZWZpbmUgQVJSQVlfU0laRShhKSAoc2l6ZW9mKGEpIC8gc2l6ZW9mKGFbMF0pKQorIAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wYWhvLW1xdHQtYy9wYWhvLW1xdHQtY18xLjMuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGFoby1tcXR0LWMvcGFoby1tcXR0LWNfMS4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhMjQ5NjcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wYWhvLW1xdHQtYy9wYWhvLW1xdHQtY18xLjMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiUGFobyBNUVRUIC0gQyBsaWJyYXJpZXMgZm9yIHRoZSBNUVRUIGFuZCBNUVRULVNOIHByb3RvY29scyIKLURFU0NSSVBUSU9OID0gIkNsaWVudCBpbXBsZW1lbnRhdGlvbiBvZiBvcGVuIGFuZCBzdGFuZGFyZCBtZXNzYWdpbmcgcHJvdG9jb2xzIGZvciBNYWNoaW5lLXRvLU1hY2hpbmUgKE0yTSkgYW5kIEludGVybmV0IG9mIFRoaW5ncyAoSW9UKS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhaG8vIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIkVQTC0xLjAgfCBFREwtMS4wIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gIiBcCi0gICAgICAgIGZpbGU6Ly9lZGwtdjEwO21kNT0zYWRmY2M3MGY1YWViN2E0NGYzZjliNDk1YWExZmJmMyBcCi0gICAgICAgIGZpbGU6Ly9lcGwtdjEwO21kNT02NTljOGU5MmE0MGI2ZGYxZDllM2RjY2Y1YWU0NWEwOCBcCi0gICAgICAgIGZpbGU6Ly9ub3RpY2UuaHRtbDttZDU9YTAwZDZmOWFiNTQyYmU3YmFiYzJkOGI4MGQ1ZDJhNGMgXAotICAgICAgICBmaWxlOi8vYWJvdXQuaHRtbDttZDU9ZGNkZTQzOGQ3M2NmNDIzOTNkYTlkNDBmYWJjMGM5YmMgXAotIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZWNsaXBzZS9wYWhvLm1xdHQuYztwcm90b2NvbD1odHRwIgotCi1TUkNSRVYgPSAiZDM0YzUxMjE0ZjQxNzJmMmUxMmJiMTc1MzJjOWY0NGY3MmE1N2RkNCIKLQotREVQRU5EUyA9ICJvcGVuc3NsIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgcGFoby1tcXR0IGluc3RhbGxlcyBzb21lIHRoaW5nIHRoYXQgd2UgZG9uJ3Qgd2FudC4KLSAgICBybSAtcmYgJHtEfSR7cHJlZml4fS9zYW1wbGVzCi0gICAgZmluZCAke0R9JHtwcmVmaXh9IC1tYXhkZXB0aCAxIC10eXBlIGYgLWRlbGV0ZQotfQotCi1FWFRSQV9PRUNNQUtFID0gIi1EUEFIT19XSVRIX1NTTD1PTiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvcGFoby1tcXR0LWMvcGFoby1tcXR0LWNfMS4zLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BhaG8tbXF0dC1jL3BhaG8tbXF0dC1jXzEuMy4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhOGM3MTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BhaG8tbXF0dC1jL3BhaG8tbXF0dC1jXzEuMy4yLmJiCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiUGFobyBNUVRUIC0gQyBsaWJyYXJpZXMgZm9yIHRoZSBNUVRUIGFuZCBNUVRULVNOIHByb3RvY29scyIKK0RFU0NSSVBUSU9OID0gIkNsaWVudCBpbXBsZW1lbnRhdGlvbiBvZiBvcGVuIGFuZCBzdGFuZGFyZCBtZXNzYWdpbmcgcHJvdG9jb2xzIGZvciBNYWNoaW5lLXRvLU1hY2hpbmUgKE0yTSkgYW5kIEludGVybmV0IG9mIFRoaW5ncyAoSW9UKS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmVjbGlwc2Uub3JnL3BhaG8vIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCitMSUNFTlNFID0gIkVQTC0xLjAgfCBFREwtMS4wIgorCitMSUNfRklMRVNfQ0hLU1VNID0gIiBcCisgICAgICAgIGZpbGU6Ly9lZGwtdjEwO21kNT0zYWRmY2M3MGY1YWViN2E0NGYzZjliNDk1YWExZmJmMyBcCisgICAgICAgIGZpbGU6Ly9lcGwtdjIwO21kNT1kOWZjMGVmZWY1MjI4NzA0ZTdmNWIzN2YyNzE5MjcyMyBcCisgICAgICAgIGZpbGU6Ly9ub3RpY2UuaHRtbDttZDU9OTQzZjg2MTA2OTg4OWFjZWNlYmY1MWRmYTI0NDc4ZTIgXAorICAgICAgICBmaWxlOi8vYWJvdXQuaHRtbDttZDU9ZTU2NjJjYmI1ZjhmZDVjOWZhYWM1MjZlNDA3Nzg5OGUgXAorIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZWNsaXBzZS9wYWhvLm1xdHQuYztwcm90b2NvbD1odHRwIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1Zy1vZi1mcmVlLXdpdGgtbXVzbC5wYXRjaCIKKworU1JDUkVWID0gImZiZTM5MDY0YzQ0MTZmODc5MzA4YThhNTM5MGIxOWQ1NDQ5NzA3ODkiCisKK0RFUEVORFMgPSAib3BlbnNzbCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIHBhaG8tbXF0dCBpbnN0YWxsZXMgc29tZSB0aGluZyB0aGF0IHdlIGRvbid0IHdhbnQuCisgICAgcm0gLXJmICR7RH0ke3ByZWZpeH0vc2FtcGxlcworICAgIGZpbmQgJHtEfSR7cHJlZml4fSAtbWF4ZGVwdGggMSAtdHlwZSBmIC1kZWxldGUKK30KKworRVhUUkFfT0VDTUFLRSA9ICItRFBBSE9fV0lUSF9TU0w9T04iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2xpYmMtbXVzbCgpIHsKKyAgICBzZWQgLWkgLWUgInMvU0VUKExJQlNfU1lTVEVNIGMgZGwgcHRocmVhZCBhbmwgcnQpL1NFVChMSUJTX1NZU1RFTSBjIGRsIHB0aHJlYWQgcnQpL2ciICR7U30vc3JjL0NNYWtlTGlzdHMudHh0IAorfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zZXIybmV0L3NlcjJuZXRfMy41LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NlcjJuZXQvc2VyMm5ldF8zLjUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQ4YWFiMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NlcjJuZXQvc2VyMm5ldF8zLjUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBzZXJpYWwgdG8gbmV0d29yayBwcm94eSIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9zZXIybmV0LyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJhZTMwMTliNGM2ZGM0MTM4YzIxNzg2NGJkMDQzMzFmIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L3NlcjJuZXQvc2VyMm5ldC9zZXIybmV0LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjU2OTI2N2IzN2I4ZjUwN2Q4ODc0ZjI4ZjUzMzRiNWQyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAyZjVkZDBhYmJlZjVhMTdiODA4MzZiMGRlMWVmMDU4OGUyNTcxMDZmYjVlMjY5Yjg2ODIyYmZkMDAxZGM4NjIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NlcjJuZXQvc2VyMm5ldF80LjEuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvc2VyMm5ldC9zZXIybmV0XzQuMS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkZjEzNGUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3NlcjJuZXQvc2VyMm5ldF80LjEuNS5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIkEgc2VyaWFsIHRvIG5ldHdvcmsgcHJveHkiCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvc2VyMm5ldC8iCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYWUzMDE5YjRjNmRjNDEzOGMyMTc4NjRiZDA0MzMxZiIKKworREVQRU5EUyA9ICJnZW5zaW8gbGlieWFtbCIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9zZXIybmV0L3NlcjJuZXQvc2VyMm5ldC0ke1BWfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MmM1ZTU2ZDJkNTRjZWQwY2RlYjc2NGE3ZThmZWM5MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkZjkwNGQyNzFlYjE2MWMyNjVjOTU2ZjBjYjkzOGRkMGEzNzVkZGE0YTkxOWEzNDRmNzNiMDhiYzUwYjlmMzA4IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LWlkbGVfMC4yLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktaWRsZV8wLjIuMC5iYgppbmRleCBjYTA5ZjZkLi43Y2IyNWI2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktaWRsZV8wLjIuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktaWRsZV8wLjIuMC5iYgpAQCAtMTEsNyArMTEsMTIgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICI5MmEyZGU1MTk4Mjg0Y2JkM2M0MzBiMGQxYTk3MWE4NiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMDEzYWQ0YjM4ZDE0ZWU2MzBiOGNjOGFkYTVlOTVjY2FhODQ5YjlhNmZlMTVkMmVhZjZkMDcxN2Q3NmYyZmFiIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHl0aG9ubmF0aXZlCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgJHtAYmIudXRpbHMuY29udGFpbnMoIkJCRklMRV9DT0xMRUNUSU9OUyIsICJtZXRhLXB5dGhvbjIiLCAicHl0aG9ubmF0aXZlIiwgIiIsIGQpfQogCiBGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS90ZWxlcGF0aHkgXAogICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xIgorCitweXRob24oKSB7CisgICAgaWYgJ21ldGEtcHl0aG9uMicgbm90IGluIGQuZ2V0VmFyKCdCQkZJTEVfQ09MTEVDVElPTlMnKS5zcGxpdCgpOgorICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCdSZXF1aXJlcyBtZXRhLXB5dGhvbjIgdG8gYmUgcHJlc2VudC4nKQorfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96YWJiaXgvemFiYml4XzQuNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96YWJiaXgvemFiYml4XzQuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTZmZjBkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemFiYml4L3phYmJpeF80LjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLVNVTU1BUlkgPSAiT3Blbi1zb3VyY2UgbW9uaXRvcmluZyBzb2x1dGlvbiBmb3IgeW91ciBJVCBpbmZyYXN0cnVjdHVyZSIKLURFU0NSSVBUSU9OID0gIlwKLVpBQkJJWCBpcyBzb2Z0d2FyZSB0aGF0IG1vbml0b3JzIG51bWVyb3VzIHBhcmFtZXRlcnMgb2YgYSBuZXR3b3JrIGFuZCB0aGUgXAotaGVhbHRoIGFuZCBpbnRlZ3JpdHkgb2Ygc2VydmVycy4gWkFCQklYIHVzZXMgYSBmbGV4aWJsZSBub3RpZmljYXRpb24gXAotbWVjaGFuaXNtIHRoYXQgYWxsb3dzIHVzZXJzIHRvIGNvbmZpZ3VyZSBlLW1haWwgYmFzZWQgYWxlcnRzIGZvciB2aXJ0dWFsbHkgXAotYW55IGV2ZW50LiBUaGlzIGFsbG93cyBhIGZhc3QgcmVhY3Rpb24gdG8gc2VydmVyIHByb2JsZW1zLiBaQUJCSVggb2ZmZXJzIFwKLWV4Y2VsbGVudCByZXBvcnRpbmcgYW5kIGRhdGEgdmlzdWFsaXNhdGlvbiBmZWF0dXJlcyBiYXNlZCBvbiB0aGUgc3RvcmVkIFwKLWRhdGEuIFRoaXMgbWFrZXMgWkFCQklYIGlkZWFsIGZvciBjYXBhY2l0eSBwbGFubmluZy4gXAotXAotWkFCQklYIHN1cHBvcnRzIGJvdGggcG9sbGluZyBhbmQgdHJhcHBpbmcuIEFsbCBaQUJCSVggcmVwb3J0cyBhbmQgXAotc3RhdGlzdGljcywgYXMgd2VsbCBhcyBjb25maWd1cmF0aW9uIHBhcmFtZXRlcnMgYXJlIGFjY2Vzc2VkIHRocm91Z2ggYSBcCi13ZWItYmFzZWQgZnJvbnQgZW5kLiBBIHdlYi1iYXNlZCBmcm9udCBlbmQgZW5zdXJlcyB0aGF0IHRoZSBzdGF0dXMgb2YgXAoteW91ciBuZXR3b3JrIGFuZCB0aGUgaGVhbHRoIG9mIHlvdXIgc2VydmVycyBjYW4gYmUgYXNzZXNzZWQgZnJvbSBhbnkgXAotbG9jYXRpb24uIFByb3Blcmx5IGNvbmZpZ3VyZWQsIFpBQkJJWCBjYW4gcGxheSBhbiBpbXBvcnRhbnQgcm9sZSBpbiBcCi1tb25pdG9yaW5nIElUIGluZnJhc3RydWN0dXJlLiBUaGlzIGlzIGVxdWFsbHkgdHJ1ZSBmb3Igc21hbGwgXAotb3JnYW5pc2F0aW9ucyB3aXRoIGEgZmV3IHNlcnZlcnMgYW5kIGZvciBsYXJnZSBjb21wYW5pZXMgd2l0aCBhIFwKLW11bHRpdHVkZSBvZiBzZXJ2ZXJzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuemFiYml4LmNvbS8iCi1TRUNUSU9OID0gIkFwcGxpY2F0aW9ucy9JbnRlcm5ldCIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzAwZTkzOGFkMzAzMTQ3ZmVkZTIyOTRlZDc4ZmUwMmUiCi1ERVBFTkRTICA9ICJsaWJldmVudCBsaWJwY3JlIG9wZW5sZGFwIHZpcnR1YWwvbGliaWNvbnYgemxpYiIKLQotUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vamFpc3QuZGwuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvemFiYml4L1pBQkJJWCUyMExhdGVzdCUyMFN0YWJsZS8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vMDAwMS1GaXgtY29uZmlndXJlLmFjLnBhdGNoIFwKLSAgICBmaWxlOi8vemFiYml4LWFnZW50LnNlcnZpY2UgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTlkZjk0MTQ5NzkwZjg2NzMyZjE4ZDA0MmI3MDE1NWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGJmNzRlNTk3ZGQ0MWE1NTgzMDVmZTE3YTJiMWVkNmZlMmQ3NzA0NGI4NzY5NmE5MmU0MjI3ZmJmMzE1NTY0YSIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGxpbnV4LWtlcm5lbC1iYXNlIHBrZ2NvbmZpZyBzeXN0ZW1kIHVzZXJhZGQKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ6YWJiaXgtYWdlbnQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZW5hYmxlIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgemFiYml4IgotVVNFUkFERF9QQVJBTV8ke1BOfSA9ICItciAtZyB6YWJiaXggLWQgL3Zhci9saWIvemFiYml4IFwKLSAgICAtcyAvc2Jpbi9ub2xvZ2luIC1jIFwiWmFiYml4IE1vbml0b3JpbmcgU3lzdGVtXCIgemFiYml4IFwKLSIKLQotS0VSTkVMX1ZFUlNJT04gPSAiJHtAZ2V0X2tlcm5lbHZlcnNpb25faGVhZGVycygnJHtTVEFHSU5HX0tFUk5FTF9ESVJ9Jyl9IgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIFwKLSAgICAtLWVuYWJsZS1hZ2VudCBcCi0gICAgLS1lbmFibGUtaXB2NiBcCi0gICAgLS13aXRoLW5ldC1zbm1wIFwKLSAgICAtLXdpdGgtbGRhcD0ke1NUQUdJTkdfRVhFQ1BSRUZJWERJUn0gXAotICAgIC0td2l0aC11bml4b2RiYyBcCi0gICAgLS13aXRoLXNzaDIgXAotICAgIC0td2l0aC1zcWxpdGUzIFwKLSAgICAtLXdpdGgtemxpYiBcCi0gICAgLS13aXRoLWxpYnB0aHJlYWQgXAotICAgIC0td2l0aC1saWJldmVudCBcCi0gICAgLS13aXRoLWxpYnBjcmUgXAotIgotQ0ZMQUdTX2FwcGVuZCA9ICIgLWxsZGFwIC1sbGJlciAtcHRocmVhZCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgZXhwb3J0IEtFUk5FTF9WRVJTSU9OPSIke0tFUk5FTF9WRVJTSU9OfSIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3phYmJpeC1hZ2VudC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgICAgICBzZWQgLWkgLWUgJ3MjQFNCSU5ESVJAIyR7c2JpbmRpcn0jZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vemFiYml4LWFnZW50LnNlcnZpY2UKLSAgICBmaQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9IgotCi1SREVQRU5EU18ke1BOfSA9ICJsb2dyb3RhdGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3phYmJpeC96YWJiaXhfNC40LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3phYmJpeC96YWJiaXhfNC40LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGUwZGRkNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemFiYml4L3phYmJpeF80LjQuNi5iYgpAQCAtMCwwICsxLDc4IEBACitTVU1NQVJZID0gIk9wZW4tc291cmNlIG1vbml0b3Jpbmcgc29sdXRpb24gZm9yIHlvdXIgSVQgaW5mcmFzdHJ1Y3R1cmUiCitERVNDUklQVElPTiA9ICJcCitaQUJCSVggaXMgc29mdHdhcmUgdGhhdCBtb25pdG9ycyBudW1lcm91cyBwYXJhbWV0ZXJzIG9mIGEgbmV0d29yayBhbmQgdGhlIFwKK2hlYWx0aCBhbmQgaW50ZWdyaXR5IG9mIHNlcnZlcnMuIFpBQkJJWCB1c2VzIGEgZmxleGlibGUgbm90aWZpY2F0aW9uIFwKK21lY2hhbmlzbSB0aGF0IGFsbG93cyB1c2VycyB0byBjb25maWd1cmUgZS1tYWlsIGJhc2VkIGFsZXJ0cyBmb3IgdmlydHVhbGx5IFwKK2FueSBldmVudC4gVGhpcyBhbGxvd3MgYSBmYXN0IHJlYWN0aW9uIHRvIHNlcnZlciBwcm9ibGVtcy4gWkFCQklYIG9mZmVycyBcCitleGNlbGxlbnQgcmVwb3J0aW5nIGFuZCBkYXRhIHZpc3VhbGlzYXRpb24gZmVhdHVyZXMgYmFzZWQgb24gdGhlIHN0b3JlZCBcCitkYXRhLiBUaGlzIG1ha2VzIFpBQkJJWCBpZGVhbCBmb3IgY2FwYWNpdHkgcGxhbm5pbmcuIFwKK1wKK1pBQkJJWCBzdXBwb3J0cyBib3RoIHBvbGxpbmcgYW5kIHRyYXBwaW5nLiBBbGwgWkFCQklYIHJlcG9ydHMgYW5kIFwKK3N0YXRpc3RpY3MsIGFzIHdlbGwgYXMgY29uZmlndXJhdGlvbiBwYXJhbWV0ZXJzIGFyZSBhY2Nlc3NlZCB0aHJvdWdoIGEgXAord2ViLWJhc2VkIGZyb250IGVuZC4gQSB3ZWItYmFzZWQgZnJvbnQgZW5kIGVuc3VyZXMgdGhhdCB0aGUgc3RhdHVzIG9mIFwKK3lvdXIgbmV0d29yayBhbmQgdGhlIGhlYWx0aCBvZiB5b3VyIHNlcnZlcnMgY2FuIGJlIGFzc2Vzc2VkIGZyb20gYW55IFwKK2xvY2F0aW9uLiBQcm9wZXJseSBjb25maWd1cmVkLCBaQUJCSVggY2FuIHBsYXkgYW4gaW1wb3J0YW50IHJvbGUgaW4gXAorbW9uaXRvcmluZyBJVCBpbmZyYXN0cnVjdHVyZS4gVGhpcyBpcyBlcXVhbGx5IHRydWUgZm9yIHNtYWxsIFwKK29yZ2FuaXNhdGlvbnMgd2l0aCBhIGZldyBzZXJ2ZXJzIGFuZCBmb3IgbGFyZ2UgY29tcGFuaWVzIHdpdGggYSBcCittdWx0aXR1ZGUgb2Ygc2VydmVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnphYmJpeC5jb20vIgorU0VDVElPTiA9ICJBcHBsaWNhdGlvbnMvSW50ZXJuZXQiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMwMGU5MzhhZDMwMzE0N2ZlZGUyMjk0ZWQ3OGZlMDJlIgorREVQRU5EUyAgPSAibGliZXZlbnQgbGlicGNyZSBvcGVubGRhcCB2aXJ0dWFsL2xpYmljb252IHpsaWIiCisKK1BBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCisKK1NSQ19VUkkgPSAiaHR0cDovL2phaXN0LmRsLnNvdXJjZWZvcmdlLm5ldC9wcm9qZWN0L3phYmJpeC9aQUJCSVglMjBMYXRlc3QlMjBTdGFibGUvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgZmlsZTovLzAwMDEtRml4LWNvbmZpZ3VyZS5hYy5wYXRjaCBcCisgICAgZmlsZTovL3phYmJpeC1hZ2VudC5zZXJ2aWNlIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImU2NjY1MzkyMjBiZTkzYjFhZjM4ZTQwZjVmYmIxZjc5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIyYmIyOGU2Njc0MjRhZDQ2ODhmNDc3MzI4NTNmNDI0MWRmMGU3OGE3NjA3NzI3YjA0M2Q3MDRiYTcyNmFlMGUiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBsaW51eC1rZXJuZWwtYmFzZSBwa2djb25maWcgc3lzdGVtZCB1c2VyYWRkCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0iCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiemFiYml4LWFnZW50LnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImVuYWJsZSIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIHphYmJpeCIKK1VTRVJBRERfUEFSQU1fJHtQTn0gPSAiLXIgLWcgemFiYml4IC1kIC92YXIvbGliL3phYmJpeCBcCisgICAgLXMgL3NiaW4vbm9sb2dpbiAtYyBcIlphYmJpeCBNb25pdG9yaW5nIFN5c3RlbVwiIHphYmJpeCBcCisiCisKK0tFUk5FTF9WRVJTSU9OID0gIiR7QGdldF9rZXJuZWx2ZXJzaW9uX2hlYWRlcnMoJyR7U1RBR0lOR19LRVJORUxfRElSfScpfSIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1lbmFibGUtZGVwZW5kZW5jeS10cmFja2luZyBcCisgICAgLS1lbmFibGUtYWdlbnQgXAorICAgIC0tZW5hYmxlLWlwdjYgXAorICAgIC0td2l0aC1uZXQtc25tcCBcCisgICAgLS13aXRoLWxkYXA9JHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9IFwKKyAgICAtLXdpdGgtdW5peG9kYmMgXAorICAgIC0td2l0aC1zc2gyIFwKKyAgICAtLXdpdGgtc3FsaXRlMyBcCisgICAgLS13aXRoLXpsaWIgXAorICAgIC0td2l0aC1saWJwdGhyZWFkIFwKKyAgICAtLXdpdGgtbGliZXZlbnQgXAorICAgIC0td2l0aC1saWJwY3JlIFwKKyIKK0NGTEFHU19hcHBlbmQgPSAiIC1sbGRhcCAtbGxiZXIgLXB0aHJlYWQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIGV4cG9ydCBLRVJORUxfVkVSU0lPTj0iJHtLRVJORUxfVkVSU0lPTn0iCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS96YWJiaXgtYWdlbnQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICAgICAgc2VkIC1pIC1lICdzI0BTQklORElSQCMke3NiaW5kaXJ9I2cnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3phYmJpeC1hZ2VudC5zZXJ2aWNlCisgICAgZmkKK30KKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfSIKKworUkRFUEVORFNfJHtQTn0gPSAibG9ncm90YXRlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvY3ptcV80LjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemVyb21xL2N6bXFfNC4yLjAuYmIKaW5kZXggNGVjMWMwNC4uN2M5YTMzZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvY3ptcV80LjIuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3plcm9tcS9jem1xXzQuMi4wLmJiCkBAIC05LDYgKzksOCBAQAogU1JDX1VSSVttZDVzdW1dID0gIjdlMDk5OTdkYjZhYzNiMjVlOGVkMTA0MDUzMDQwNzIyIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImNmYWIyOWMyYjNjYzhhODQ1NzQ5NzU4YTUxZTFkZDVmNTE2MGMxZWY1N2UyYTQxZWE5NmU0YzJkY2M4ZmVjZWIiCiAKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vemVyb21xLyR7QlBOfS9yZWxlYXNlcyIKKwogaW5oZXJpdCBjbWFrZQogCiBQQUNLQUdFUyA9ICJsaWIke0JQTn0gbGliJHtCUE59LWRldiBsaWIke0JQTn0tc3RhdGljZGV2ICR7UE59ICR7UE59LWRiZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemVyb21xL2ZpbGVzLzAwMDEtQ01ha2VMaXN0cy10eHQtQXZvaWQtaG9zdC1zcGVjaWZpYy1wYXRoLXRvLWxpYnNvZGl1bS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemVyb21xL2ZpbGVzLzAwMDEtQ01ha2VMaXN0cy10eHQtQXZvaWQtaG9zdC1zcGVjaWZpYy1wYXRoLXRvLWxpYnNvZGl1bS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjNkZWU0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvZmlsZXMvMDAwMS1DTWFrZUxpc3RzLXR4dC1Bdm9pZC1ob3N0LXNwZWNpZmljLXBhdGgtdG8tbGlic29kaXVtLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb206IE5pa28gTWF1bm8gPG5pa28ubWF1bm9AdmFpc2FsYS5jb20+CitEYXRlOiBXZWQgQXByIDIyIDA5OjAwOjAwIDIwMjAgKzAzMDAKK1N1YmplY3Q6IENNYWtlTGlzdHMudHh0OiBBdm9pZCBob3N0LXNwZWNpZmljIHBhdGggdG8gbGlic29kaXVtCisKK0F2b2lkIHByb3BhZ2F0aW5nIGZ1bGwgYnVpbGQgaG9zdCBzcGVjaWZpYyBwYXRoIHRvIGdlbmVyYXRlZAorWmVyb01RVGFyZ2V0cy5jbWFrZSB3aGVuIGJ1aWxkaW5nIHdpdGggbGlic29kaXVtLCB3aGljaCBjaGFuZ2VzIHRoZQorY29udGVudCBpbiBnZW5lcmF0ZWQgWmVyb01RVGFyZ2V0cy5jbWFrZSBmaWxlcyBmb2xsb3dpbmdseToKKworICAtSU5URVJGQUNFX0xJTktfTElCUkFSSUVTICItbHB0aHJlYWQ7L2J1aWxkL2hvc3Qvc3BlY2lmaWMvcGF0aC90by96ZXJvbXEvNC4zLjItcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2xpYi9saWJzb2RpdW0uc287LWxydCIKKyAgK0lOVEVSRkFDRV9MSU5LX0xJQlJBUklFUyAiLWxwdGhyZWFkOy1sc29kaXVtOy1scnQiCisKK1RoaXMgY2hhbmdlIG1pdGlnYXRlcyBhbiBpc3N1ZSBzdGVtbWluZyBmcm9tIHJldXNlIG9mIGJ1aWxkIGFydGlmYWN0cword2hlcmUgdGhlIHBhdGggdG8gbGlic29kaXVtLnNvIGRvZXMgbm90IG1hdGNoIGV4YWN0bHkgYmV0d2VlbiB0d28KK2RpZmZlcmVudCBidWlsZCBob3N0cy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE5pa28gTWF1bm8gPG5pa28ubWF1bm9AdmFpc2FsYS5jb20+CisKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTEyMTAsNyArMTIxMCw3IEBACisgICB0YXJnZXRfbGlua19saWJyYXJpZXMobGliem1xICR7T1BUSU9OQUxfTElCUkFSSUVTfSAke0NNQUtFX1RIUkVBRF9MSUJTX0lOSVR9KQorIAorICAgaWYoU09ESVVNX0ZPVU5EKQorLSAgICB0YXJnZXRfbGlua19saWJyYXJpZXMobGliem1xICR7U09ESVVNX0xJQlJBUklFU30pCisrICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhsaWJ6bXEgLWxzb2RpdW0pCisgICAgICMgT24gU29sYXJpcywgbGlic29kaXVtIGRlcGVuZHMgb24gbGlic3NwCisgICAgIGlmKCR7Q01BS0VfU1lTVEVNX05BTUV9IE1BVENIRVMgIlN1bk9TIikKKyAgICAgICB0YXJnZXRfbGlua19saWJyYXJpZXMobGliem1xIHNzcCkKK0BAIC0xMjQwLDcgKzEyNDAsNyBAQAorICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGxpYnptcS1zdGF0aWMgJHtPUFRJT05BTF9MSUJSQVJJRVN9ICR7Q01BS0VfVEhSRUFEX0xJQlNfSU5JVH0pCisgCisgICBpZihTT0RJVU1fRk9VTkQpCistICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhsaWJ6bXEtc3RhdGljICR7U09ESVVNX0xJQlJBUklFU30pCisrICAgIHRhcmdldF9saW5rX2xpYnJhcmllcyhsaWJ6bXEtc3RhdGljIC1sc29kaXVtKQorICAgICAjIE9uIFNvbGFyaXMsIGxpYnNvZGl1bSBkZXBlbmRzIG9uIGxpYnNzcAorICAgICBpZigke0NNQUtFX1NZU1RFTV9OQU1FfSBNQVRDSEVTICJTdW5PUyIpCisgICAgICAgdGFyZ2V0X2xpbmtfbGlicmFyaWVzKGxpYnptcS1zdGF0aWMgc3NwKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvemVyb21xXzQuMy4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvbm5lY3Rpdml0eS96ZXJvbXEvemVyb21xXzQuMy4yLmJiCmluZGV4IGFkZjJjN2IuLjAyYTRjMDQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb25uZWN0aXZpdHkvemVyb21xL3plcm9tcV80LjMuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29ubmVjdGl2aXR5L3plcm9tcS96ZXJvbXFfNC4zLjIuYmIKQEAgLTcsMTEgKzcsMTQgQEAKIFBBQ0tBR0VDT05GSUdbbGlic29kaXVtXSA9ICItRFdJVEhfTElCU09ESVVNPU9OLC1EV0lUSF9MSUJTT0RJVU09T0ZGLCBsaWJzb2RpdW0iCiAKIFNSQ19VUkkgPSAiaHR0cDovL2dpdGh1Yi5jb20vemVyb21xL2xpYnptcS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vemVyb21xLSR7UFZ9LnRhci5neiBcCisgICAgZmlsZTovLzAwMDEtQ01ha2VMaXN0cy10eHQtQXZvaWQtaG9zdC1zcGVjaWZpYy1wYXRoLXRvLWxpYnNvZGl1bS5wYXRjaCBcCiAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMjA0N2U5MTdjMmNjOTM1MDVlMjU3OWJjYmE2N2E1NzMiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWJkN2I1YzgzMGQ2NDI4OTU2YjY3YTA0NTRhN2Y4Y2JlZDFkZTc0YjNiMDFlNWMzM2M1Mzc4ZTIyNzQwZjc2MyIKIAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vbGliem1xL3JlbGVhc2VzIgorCiBpbmhlcml0IGNtYWtlIHB0ZXN0IHBrZ2NvbmZpZwogCiBFWFRSQV9PRUNNQUtFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnLURCVUlMRF9URVNUUz1PTicsICctREJVSUxEX1RFU1RTPU9GRicsIGQpfSBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtYnJva2VyLzAwMDEtbGF1bmNoLWltcHJvdmUtZXJyb3ItaGFuZGxpbmctZm9yLW9wZW5kaXIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtYnJva2VyLzAwMDEtbGF1bmNoLWltcHJvdmUtZXJyb3ItaGFuZGxpbmctZm9yLW9wZW5kaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjYzE3NWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlci8wMDAxLWxhdW5jaC1pbXByb3ZlLWVycm9yLWhhbmRsaW5nLWZvci1vcGVuZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSBmNDJkNWUzODg1OWM2NWExODZhY2QwZGE5NGJiZWVjYTEyZmFmN2EyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGF2aWQgUmhlaW5zYmVyZyA8ZGF2aWQucmhlaW5zYmVyZ0BnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDIgTWF5IDIwMTkgMTc6MzM6MzQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gbGF1bmNoOiBpbXByb3ZlIGVycm9yIGhhbmRsaW5nIGZvciBvcGVuZGlyKCkKLQotVGhpcyBpbXByb3ZlcyB0aGUgZXJyb3ItaGFuZGxpbmcgb2Ygb3BlbmRpcigpIGJ5IGFsd2F5cyBwcmludGluZwotZGlhZ25vc3RpY3MuIEZ1cnRoZXJtb3JlLCBpdCBhbGlnbnMgdGhlIGJlaGF2aW9yIHdpdGggZGJ1cy1kZWFtb24gYW5kCi1pZ25vcmVzIEVBQ0NFUy4KLQotU2lnbmVkLW9mZi1ieTogRGF2aWQgUmhlaW5zYmVyZyA8ZGF2aWQucmhlaW5zYmVyZ0BnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IGRidXMtYnJva2VyQGY0MmQ1ZTM4ODU5YzY1YTE4NmFjZDBkYTk0YmJlZWNhMTJmYWY3YTIKLS0tLQotIHNyYy9sYXVuY2gvbGF1bmNoZXIuYyB8IDE3ICsrKysrKysrKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvbGF1bmNoL2xhdW5jaGVyLmMgYi9zcmMvbGF1bmNoL2xhdW5jaGVyLmMKLWluZGV4IDMxYTUzNjQuLjJlYzRiZGEgMTAwNjQ0Ci0tLS0gYS9zcmMvbGF1bmNoL2xhdW5jaGVyLmMKLSsrKyBiL3NyYy9sYXVuY2gvbGF1bmNoZXIuYwotQEAgLTc0OSwxMCArNzQ5LDIzIEBAIHN0YXRpYyBpbnQgbGF1bmNoZXJfbG9hZF9zZXJ2aWNlX2RpcihMYXVuY2hlciAqbGF1bmNoZXIsIGNvbnN0IGNoYXIgKmRpcnBhdGgsIE5TCi0gCi0gICAgICAgICBkaXIgPSBvcGVuZGlyKGRpcnBhdGgpOwotICAgICAgICAgaWYgKCFkaXIpIHsKLS0gICAgICAgICAgICAgICAgaWYgKGVycm5vID09IEVOT0VOVCB8fCBlcnJubyA9PSBFTk9URElSKQotKyAgICAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRU5PRU5UIHx8IGVycm5vID09IEVOT1RESVIpIHsKLSAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMDsKLS0gICAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICB9IGVsc2UgaWYgKGVycm5vID09IEVBQ0NFUykgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19hcHBlbmRfaGVyZSgmbGF1bmNoZXItPmxvZywgTE9HX0VSUiwgMCwgTlVMTCk7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgciA9IGxvZ19jb21taXRmKCZsYXVuY2hlci0+bG9nLCAiQWNjZXNzIGRlbmllZCB0byBzZXJ2aWNlIGRpcmVjdG9yeSAnJXMnXG4iLCBkaXJwYXRoKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAocikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcl9mb2xkKHIpOwotKwotKyAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwotKyAgICAgICAgICAgICAgICB9IGVsc2UgewotKyAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19hcHBlbmRfaGVyZSgmbGF1bmNoZXItPmxvZywgTE9HX0VSUiwgZXJybm8sIE5VTEwpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBsb2dfY29tbWl0ZigmbGF1bmNoZXItPmxvZywgIlVuYWJsZSB0byBvcGVuIHNlcnZpY2UgZGlyZWN0b3J5ICclcyc6ICVtXG4iLCBkaXJwYXRoKTsKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiAocikKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcl9mb2xkKHIpOwotKwotICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBlcnJvcl9vcmlnaW4oLWVycm5vKTsKLSsgICAgICAgICAgICAgICAgfQotICAgICAgICAgfQotIAotICAgICAgICAgciA9IGRpcndhdGNoX2FkZChsYXVuY2hlci0+ZGlyd2F0Y2gsIGRpcnBhdGgpOwotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlci8wMDAyLW1ldHJpY3MtY2hhbmdlLXRoZS1jb25zdGFudC11c2VkLWZvci1pbnZhbGlkLXRpbWVzdGEucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtYnJva2VyLzAwMDItbWV0cmljcy1jaGFuZ2UtdGhlLWNvbnN0YW50LXVzZWQtZm9yLWludmFsaWQtdGltZXN0YS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjdhMmRjNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtYnJva2VyLzAwMDItbWV0cmljcy1jaGFuZ2UtdGhlLWNvbnN0YW50LXVzZWQtZm9yLWludmFsaWQtdGltZXN0YS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLUZyb20gMzU3MGIzZTliYTM2N2YxMDcxOGI1NjMzNmNlMzJkNTI1NGY2NjU3NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRvbSBHdW5kZXJzZW4gPHRlZ0Bqa2xtLm5vPgotRGF0ZTogVGh1LCA5IE1heSAyMDE5IDEzOjAwOjM3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1ldHJpY3M6IGNoYW5nZSB0aGUgY29uc3RhbnQgdXNlZCBmb3IgaW52YWxpZCB0aW1lc3RhbXBzCi0KLVVzZSAodWludDY0X3QpLTEgcmF0aGVyIHRoYW4gMCB0byBpbmRpY2F0ZSBhbiBpbnZhbGlkIHRpbWVzdGFtcC4gSXQKLXNob3VsZCBub3QgYmUgcG9zc2libGUgZm9yIHRoZSBrZXJuZWwgdG8gcmV0dXJuIDAgZnJvbQotY2xvY2tfZ2V0dGltZSgpLCBidXQgd2UgaGF2ZSByZWNlaXZlZCBzb21lIHJlcG9ydHMgb2Ygb3VyIGFzc2VydHMKLXRyaWdnZXJpbmcsIHNvIGF2b2lkIHRoZSBpc3N1ZSBlbnRpcmVseSAgYnkgdXNpbmcgLTEgaW5zdGVhZCAod2hpY2gKLXJlYWxseSBjYW4gbmV2ZXIgYmUgcmV0dXJuZWQpLgotCi1TZWUgaHR0cHM6Ly9yZXRyYWNlLmZlZG9yYXByb2plY3Qub3JnL2ZhZi9yZXBvcnRzLzI1Mzk0ODQvCi0KLVNpZ25lZC1vZmYtYnk6IFRvbSBHdW5kZXJzZW4gPHRlZ0Bqa2xtLm5vPgotVXBzdHJlYW0tU3RhdHVzOiBkYnVzLWJyb2tlckAzNTcwYjNlOWJhMzY3ZjEwNzE4YjU2MzM2Y2UzMmQ1MjU0ZjY2NTc1Ci0tLS0KLSBzcmMvdXRpbC9tZXRyaWNzLmMgfCA4ICsrKystLS0tCi0gc3JjL3V0aWwvbWV0cmljcy5oIHwgOSArKysrKystLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvdXRpbC9tZXRyaWNzLmMgYi9zcmMvdXRpbC9tZXRyaWNzLmMKLWluZGV4IGI1YTcxODIuLmVlZjk0ZWIgMTAwNjQ0Ci0tLS0gYS9zcmMvdXRpbC9tZXRyaWNzLmMKLSsrKyBiL3NyYy91dGlsL21ldHJpY3MuYwotQEAgLTI2LDcgKzI2LDcgQEAgdm9pZCBtZXRyaWNzX2luaXQoTWV0cmljcyAqbWV0cmljcywgY2xvY2tpZF90IGlkKSB7Ci0gfQotIAotIHZvaWQgbWV0cmljc19kZWluaXQoTWV0cmljcyAqbWV0cmljcykgewotLSAgICAgICAgY19hc3NlcnQoIW1ldHJpY3MtPnRpbWVzdGFtcCk7Ci0rICAgICAgICBjX2Fzc2VydChtZXRyaWNzLT50aW1lc3RhbXAgPT0gTUVUUklDU19USU1FU1RBTVBfSU5WQUxJRCk7Ci0gICAgICAgICBtZXRyaWNzX2luaXQobWV0cmljcywgbWV0cmljcy0+aWQpOwotIH0KLSAKLUBAIC04Miw3ICs4Miw3IEBAIHZvaWQgbWV0cmljc19zYW1wbGVfYWRkKE1ldHJpY3MgKm1ldHJpY3MsIHVpbnQ2NF90IHRpbWVzdGFtcCkgewotICAqIGEgc2FtcGxlIGlzIG5vdCBjdXJyZW50bHkgcnVubmluZy4KLSAgKi8KLSB2b2lkIG1ldHJpY3Nfc2FtcGxlX3N0YXJ0KE1ldHJpY3MgKm1ldHJpY3MpIHsKLS0gICAgICAgIGNfYXNzZXJ0KCFtZXRyaWNzLT50aW1lc3RhbXApOwotKyAgICAgICAgY19hc3NlcnQobWV0cmljcy0+dGltZXN0YW1wID09IE1FVFJJQ1NfVElNRVNUQU1QX0lOVkFMSUQpOwotICAgICAgICAgbWV0cmljcy0+dGltZXN0YW1wID0gbWV0cmljc19nZXRfdGltZShtZXRyaWNzKTsKLSB9Ci0gCi1AQCAtOTMsMTEgKzkzLDExIEBAIHZvaWQgbWV0cmljc19zYW1wbGVfc3RhcnQoTWV0cmljcyAqbWV0cmljcykgewotICAqIEVuZCBhIGN1cnJlbnRseSBydW5uaW5nIHNhbXBsZSwgYW5kIHVwZGF0ZSB0aGUgaW50ZXJuYWwgc3RhdGUuCi0gICovCi0gdm9pZCBtZXRyaWNzX3NhbXBsZV9lbmQoTWV0cmljcyAqbWV0cmljcykgewotLSAgICAgICAgY19hc3NlcnQobWV0cmljcy0+dGltZXN0YW1wKTsKLSsgICAgICAgIGNfYXNzZXJ0KG1ldHJpY3MtPnRpbWVzdGFtcCAhPSBNRVRSSUNTX1RJTUVTVEFNUF9JTlZBTElEKTsKLSAKLSAgICAgICAgIG1ldHJpY3Nfc2FtcGxlX2FkZChtZXRyaWNzLCBtZXRyaWNzLT50aW1lc3RhbXApOwotIAotLSAgICAgICAgbWV0cmljcy0+dGltZXN0YW1wID0gMDsKLSsgICAgICAgIG1ldHJpY3MtPnRpbWVzdGFtcCA9IE1FVFJJQ1NfVElNRVNUQU1QX0lOVkFMSUQ7Ci0gfQotIAotIC8qKgotZGlmZiAtLWdpdCBhL3NyYy91dGlsL21ldHJpY3MuaCBiL3NyYy91dGlsL21ldHJpY3MuaAotaW5kZXggYThlZTkxNS4uYjAwZGVlNiAxMDA2NDQKLS0tLSBhL3NyYy91dGlsL21ldHJpY3MuaAotKysrIGIvc3JjL3V0aWwvbWV0cmljcy5oCi1AQCAtOCw2ICs4LDggQEAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLSAKLSsjZGVmaW5lIE1FVFJJQ1NfVElNRVNUQU1QX0lOVkFMSUQgKCh1aW50NjRfdCkgLTEpCi0rCi0gdHlwZWRlZiBzdHJ1Y3QgTWV0cmljcyBNZXRyaWNzOwotIAotIHN0cnVjdCBNZXRyaWNzIHsKLUBAIC0yMyw5ICsyNSwxMCBAQCBzdHJ1Y3QgTWV0cmljcyB7Ci0gICAgICAgICB1aW50NjRfdCBzdW1fb2Zfc3F1YXJlczsKLSB9OwotIAotLSNkZWZpbmUgTUVUUklDU19JTklUKF9pZCkgeyAgICAgICAgICAgICAgICAgICAgIFwKLS0gICAgICAgICAgICAgICAgLm1pbmltdW0gPSAodWludDY0X3QpIC0xLCAgICAgICBcCi0tICAgICAgICAgICAgICAgIC5pZCA9IChfaWQpLCAgICAgICAgICAgICAgICAgICAgXAotKyNkZWZpbmUgTUVUUklDU19JTklUKF9pZCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgIC5taW5pbXVtID0gKHVpbnQ2NF90KSAtMSwgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgLmlkID0gKF9pZCksICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAudGltZXN0YW1wID0gTUVUUklDU19USU1FU1RBTVBfSU5WQUxJRCwgICAgICAgICBcCi0gICAgICAgICB9Ci0gCi0gdm9pZCBtZXRyaWNzX2luaXQoTWV0cmljcyAqbWV0cmljcywgY2xvY2tpZF90IGlkKTsKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1icm9rZXIvMDAwMy1kYnVzLXNvY2tldC10cmVhdC1NU0dfQ1RSVU5DLWdyYWNlZnVsbHkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtYnJva2VyLzAwMDMtZGJ1cy1zb2NrZXQtdHJlYXQtTVNHX0NUUlVOQy1ncmFjZWZ1bGx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2Y5ZTcxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1icm9rZXIvMDAwMy1kYnVzLXNvY2tldC10cmVhdC1NU0dfQ1RSVU5DLWdyYWNlZnVsbHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MyArMCwwIEBACi1Gcm9tIDUyMGM0N2M1M2RlZWI4OTNlMDMxOTRmZWZhZjNjNWI5MjIzZWRlMjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBEYXZpZCBSaGVpbnNiZXJnIDxkYXZpZC5yaGVpbnNiZXJnQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTAgTWF5IDIwMTkgMTA6NTg6MDYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gZGJ1cy9zb2NrZXQ6IHRyZWF0IE1TR19DVFJVTkMgZ3JhY2VmdWxseQotCi1BcyBpdCB0dXJucyBvdXQsIExTTXMgYWxsb3cgY2xpZW50cyB0byB0cmlnZ2VyIGEgTVNHX0NUUlVOQyBvbiB0aGUKLXJlbW90ZSBzaWRlIG9mIGEgdW5peCBzb2NrZXQuIFdoZW5ldmVyIExTTXMgcmVqZWN0IHRoZSB0cmFuc21pc3Npb24gb2YKLWFuIEZELCB0aGV5IHdpbGwgc2ltcGx5IGRyb3AgdGhlIEZEIGFuZCBzZXQgTVNHX0NUUlVOQywgd2l0aG91dCBhbnkKLW90aGVyIGVycm9yIG5vdGlmaWNhdGlvbi4KLQotVGhlcmVmb3JlLCB3ZSBtdXN0IGFzc3VtZSBhbnkgb2NjdXJhbmNlIG9mIE1TR19DVFJVTkMgaXMgdHJpZ2dlciBieSBhCi1jbGllbnQuIFRoaXMgbWFrZXMgaXQgaW1wb3NzaWJsZSB0byBjb25zaWRlciBNU0dfQ1RSVU5DIGZvciBhbnkgb3RoZXIKLWVycm9yIGhhbmRsaW5nLCBhbmQgYXMgc3VjaCB3ZSBhcmUgbGVmdCB0byBkaXNjb25uZWN0aW5nIHRoZSBjbGllbnQgYW5kCi1pZ25vcmluZyB0aGUgZmxhZy4KLQotTHVja2lseSwgTVNHX0NUUlVOQyBpcyBleHBlY3RlZCBmb3IgYW55IG90aGVyIGV2ZW50LCBzbyB3ZSBvbmx5IHVzZWQgaXQKLWZvciBkaWFnbm9zdGljcyBzbyBmYXIuCi0KLVNpZ25lZC1vZmYtYnk6IERhdmlkIFJoZWluc2JlcmcgPGRhdmlkLnJoZWluc2JlcmdAZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBkYnVzLWJyb2tlckA1MjBjNDdjNTNkZWViODkzZTAzMTk0ZmVmYWYzYzViOTIyM2VkZTI3Ci0tLS0KLSBzcmMvZGJ1cy9zb2NrZXQuYyB8IDQ0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2RidXMvc29ja2V0LmMgYi9zcmMvZGJ1cy9zb2NrZXQuYwotaW5kZXggY2FjZGZmMi4uNmU2YmExMCAxMDA2NDQKLS0tLSBhL3NyYy9kYnVzL3NvY2tldC5jCi0rKysgYi9zcmMvZGJ1cy9zb2NrZXQuYwotQEAgLTU5MywxOCArNTkzLDQwIEBAIHN0YXRpYyBpbnQgc29ja2V0X3JlY3Ztc2coU29ja2V0ICpzb2NrZXQsCi0gCi0gICAgICAgICBpZiAobXNnLm1zZ19mbGFncyAmIE1TR19DVFJVTkMpIHsKLSAgICAgICAgICAgICAgICAgLyoKLS0gICAgICAgICAgICAgICAgICogVGhpcyBmbGFnIG1lYW5zIHRoZSBjb250cm9sLWJ1ZmZlciB3YXMgdG9vIHNtYWxsIHRvIHJldHJpZXZlCi0tICAgICAgICAgICAgICAgICAqIGFsbCBkYXRhLiBJZiB0aGlzIGNhbiBiZSB0cmlnZ2VyZWQgcmVtb3RlbHksIGl0IG1lYW5zIGEgcGVlcgotLSAgICAgICAgICAgICAgICAgKiBjYW4gY2F1c2UgdXMgdG8gbWlzcyBGRHMuIEhlbmNlLCB3ZSByZWFsbHkgbXVzdCBwcm90ZWN0Ci0tICAgICAgICAgICAgICAgICAqIGFnYWluc3QgdGhpcy4KLS0gICAgICAgICAgICAgICAgICogV2UgZG8gcHJvdmlkZSBzdWl0YWJseSBzaXplZCBidWZmZXJzIHRvIGJlIHByZXBhcmVkIGZvciBhbnkKLS0gICAgICAgICAgICAgICAgICogcG9zc2libGUgc2NlbmFyaW8uIFNvIGlmIHRoaXMgaGFwcGVucywgc29tZXRoaW5nIGlzIGZpc2h5Ci0tICAgICAgICAgICAgICAgICAqIGFuZCB3ZSBiZXR0ZXIgcmVwb3J0IGl0LgotLSAgICAgICAgICAgICAgICAgKiBOb3RlIHRoYXQgdGhpcyBpcyBhbHNvIHJlcG9ydGVkIGJ5IHRoZSBrZXJuZWwgaWYgd2UgZXhjZWVkZWQKLS0gICAgICAgICAgICAgICAgICogb3VyIE5PRklMRSBsaW1pdC4gU2luY2UgdGhpcyBpbXBsaWVzIHJlc291cmNlCi0tICAgICAgICAgICAgICAgICAqIG1pc2NvbmZpZ3VyYXRpb24gYXMgd2VsbCwgd2UgdHJlYXQgaXQgdGhlIHNhbWUgd2F5LgotKyAgICAgICAgICAgICAgICAgKiBPdXIgY29udHJvbC1idWZmZXItc2l6ZSBpcyBjYXJlZnVsbHkgY2FsY3VsYXRlZCB0byBiZSBiaWcKLSsgICAgICAgICAgICAgICAgICogZW5vdWdoIGZvciBhbnkgcG9zc2libGUgYW5jaWxsYXJ5IGRhdGEgd2UgZXhwZWN0LiBUaGVyZWZvcmUsCi0rICAgICAgICAgICAgICAgICAqIHRoZSBrZXJuZWwgc2hvdWxkIG5ldmVyIGJlIHJlcXVpcmVkIHRvIHRydW5jYXRlIGl0LCBhbmQgdGh1cwotKyAgICAgICAgICAgICAgICAgKiBNU0dfQ1RSVU5DIHdpbGwgbmV2ZXIgYmUgc2V0LiBUaGlzIGlzIGFsc28gZm93YXJkIGNvbXBhdGlibGUKLSsgICAgICAgICAgICAgICAgICogdG8gZnV0dXJlIGV4dGVuc2lvbnMgdG8gdGhlIGFuY2lsbGFyeSBkYXRhLCBzaW5jZSB0aGVzZSBtdXN0Ci0rICAgICAgICAgICAgICAgICAqIGJlIGVuYWJsZWQgZXhwbGljaXRseSBiZWZvcmUgdGhlIGtlcm5lbCBjb25zaWRlcnMgZm9yd2FyZGluZwotKyAgICAgICAgICAgICAgICAgKiB0aGVtLgotKyAgICAgICAgICAgICAgICAgKgotKyAgICAgICAgICAgICAgICAgKiBVbmZvcnR1bmF0ZWx5LCB0aGUgU0NNX1JJR0hUUyBpbXBsZW1lbnRhdGlvbiBtaWdodCBzZXQgdGhpcwotKyAgICAgICAgICAgICAgICAgKiBmbGFnIGFzIHdlbGwuIEluIHBhcnRpY3VsYXIsIGlmIG5vdCBhbGwgRkRzIGNhbiBiZSByZXR1cm5lZAotKyAgICAgICAgICAgICAgICAgKiB0byB1c2VyLXNwYWNlLCBNU0dfQ1RSVU5DIHdpbGwgYmUgc2V0IChzaWduYWxsaW5nIHRoYXQgdGhlCi0rICAgICAgICAgICAgICAgICAqIEZELXNldCBpcyBub24tY29tcGxldGUpLiBObyBvdGhlciBlcnJvciBpcyByZXR1cm5lZCBvcgotKyAgICAgICAgICAgICAgICAgKiBzaWduYWxsZWQsIHRob3VnaC4gVGhlcmUgYXJlIHNldmVyYWwgcmVhc29ucyB3aHkgdGhlIEZECi0rICAgICAgICAgICAgICAgICAqIHRyYW5zbWlzc2lvbiBjYW4gZmFpbC4gTW9zdCBpbXBvcnRhbnRseSwgaWYgd2UgZXhoYXVzdCBvdXIKLSsgICAgICAgICAgICAgICAgICogRkQgbGltaXQsIGZ1cnRoZXIgRkRzIHdpbGwgc2ltcGx5IGJlIGRpc2NhcmRlZC4gV2UgYXJlCi0rICAgICAgICAgICAgICAgICAqIHByb3RlY3RlZCBhZ2FpbnN0IHRoaXMgYnkgb3VyIGFjY291bnRpbmctcXVvdGFzLCBidXQgd2UKLSsgICAgICAgICAgICAgICAgICogd291bGQgc3RpbGwgbGlrZSB0byBjYXRjaCB0aGlzIGNvbmRpdGlvbiBhbmQgd2FybiBsb3VkbHkuCi0rICAgICAgICAgICAgICAgICAqIEhvd2V2ZXIsIEZEcyBhcmUgYWxzbyBkcm9wcGVkIGlmIHRoZSBzZWN1cml0eSBsYXllciByZWZ1c2VkCi0rICAgICAgICAgICAgICAgICAqIHRoZSB0cmFuc21pc3Npb24gb2YgdGhlIEZEIGluIHF1ZXN0aW9uLiBUaGlzIG1lYW5zLCBpZiBhbgotKyAgICAgICAgICAgICAgICAgKiBMU00gcmVmdXNlcyB0aGUgRC1CdXMgY2xpZW50IHRvIHNlbmQgdXMgYW4gRkQsIHRoZSBGRCBpcwotKyAgICAgICAgICAgICAgICAgKiBqdXN0IGRyb3BwZWQgYW5kIE1TR19DVFJVTkMgd2lsbCBiZSBzZXQuIFRoaXMgY2FuIGJlCi0rICAgICAgICAgICAgICAgICAqIHRyaWdnZXJlZCBieSBjbGllbnRzLgotKyAgICAgICAgICAgICAgICAgKgotKyAgICAgICAgICAgICAgICAgKiBUbyBzdW1tYXJpemU6IEluIGFuIGlkZWFsIHdvcmxkLCB3ZSB3b3VsZCBleHBlY3QgdGhpcyBmbGFnCi0rICAgICAgICAgICAgICAgICAqIHRvIG5ldmVyIGJlIHNldCwgYW5kIHdlIHdvdWxkIGp1c3QgdXNlCi0rICAgICAgICAgICAgICAgICAqIGBlcnJvcl9vcmlnaW4oLUVOT1RSRUNPVkVSQUJMRSlgIHRvIHByb3ZpZGUgZGlhZ25vc3RpY3MuCi0rICAgICAgICAgICAgICAgICAqIFVuZm9ydHVuYXRlbHksIHRoZSBncm9zcyBtaXN1c2Ugb2YgdGhpcyBmbGFnIGZvciBMU00KLSsgICAgICAgICAgICAgICAgICogc2VjdXJpdHkgZW5mb3JjZW1lbnRzIG1lYW5zIHdlIGhhdmUgdG8gYXNzdW1lIGFueSBvY2N1cmVuY2UKLSsgICAgICAgICAgICAgICAgICogb2YgTVNHX0NUUlVOQyBtZWFucyB0aGUgY2xpZW50IHdhcyByZWZ1c2VkIHRvIHNlbmQgYQotKyAgICAgICAgICAgICAgICAgKiBzcGVjaWZpYyBtZXNzYWdlLiBPdXIgb25seSBwb3NzaWJsZSB3YXkgdG8gZGVhbCB3aXRoIHRoaXMgaXMKLSsgICAgICAgICAgICAgICAgICogdG8gZGlzY29ubmVjdCB0aGUgY2xpZW50LgotICAgICAgICAgICAgICAgICAgKi8KLS0gICAgICAgICAgICAgICAgciA9IGVycm9yX29yaWdpbigtRU5PVFJFQ09WRVJBQkxFKTsKLSsgICAgICAgICAgICAgICAgc29ja2V0X2Nsb3NlKHNvY2tldCk7Ci0rICAgICAgICAgICAgICAgIHIgPSBTT0NLRVRfRV9MT1NUX0lOVEVSRVNUOwotICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotICAgICAgICAgfQotIAotLS0gCi0yLjIxLjAKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlci8wMDA0LWxhdW5jaGVyLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1icm9rZXIvMDAwNC1sYXVuY2hlci1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzNDhkOTcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlci8wMDA0LWxhdW5jaGVyLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gZmMxZDI2ZGQwOGM0OGMwNGZjOTg4M2IzNmE5NGMyMTlhYmEyMDkxYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEx1Y2EgQm9jY2Fzc2kgPGx1Y2EuYm9jY2Fzc2lAbWljcm9zb2Z0LmNvbT4KLURhdGU6IE1vbiwgMjggT2N0IDIwMTkgMTQ6MzE6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gbGF1bmNoZXI6IGZpeCBidWlsZCB3aXRoIG11c2wgbGliYwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi0uLi9zcmMvbGF1bmNoL2xhdW5jaGVyLmM6IEluIGZ1bmN0aW9uIOKAmGxhdW5jaGVyX2ZvcmvigJk6Ci0uLi9zcmMvbGF1bmNoL2xhdW5jaGVyLmM6Mzc4OjYwOiBlcnJvcjog4oCYV0VYSVRFROKAmSB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiDigJhXSUZFWElURUTigJk/Ci0gICAgICAgICByID0gc2RfZXZlbnRfYWRkX2NoaWxkKGxhdW5jaGVyLT5ldmVudCwgTlVMTCwgcGlkLCBXRVhJVEVELCBsYXVuY2hlcl9vbl9jaGlsZF9leGl0LCBsYXVuY2hlcik7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBXSUZFWElURUQKLQotSW5jbHVkZSBzeXMvd2FpdC5oIHdoaWNoIGRlZmluZXMgaXQuCi0KLVNpZ25lZC1vZmYtYnk6IEx1Y2EgQm9jY2Fzc2kgPGx1Y2EuYm9jY2Fzc2lAbWljcm9zb2Z0LmNvbT4KLVN1Z2dlc3RlZC1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogcGVuZGluZyBodHRwczovL2dpdGh1Yi5jb20vYnVzMS9kYnVzLWJyb2tlci9wdWxsLzIxNAotLS0tCi0gc3JjL2xhdW5jaC9sYXVuY2hlci5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvbGF1bmNoL2xhdW5jaGVyLmMgYi9zcmMvbGF1bmNoL2xhdW5jaGVyLmMKLWluZGV4IDJlYzRiZGEuLjFmMzhmY2YgMTAwNjQ0Ci0tLS0gYS9zcmMvbGF1bmNoL2xhdW5jaGVyLmMKLSsrKyBiL3NyYy9sYXVuY2gvbGF1bmNoZXIuYwotQEAgLTEwLDYgKzEwLDcgQEAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgotICNpbmNsdWRlIDxzeXMvdW4uaD4KLSsjaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSAjaW5jbHVkZSA8c3lzdGVtZC9zZC1idXMuaD4KLSAjaW5jbHVkZSA8c3lzdGVtZC9zZC1kYWVtb24uaD4KLSAjaW5jbHVkZSA8c3lzdGVtZC9zZC1ldmVudC5oPgotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlcl8yMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1icm9rZXJfMjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiNDEwMWEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlcl8yMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiZGJ1cyBicm9rZXIiCi1ERVNDUklQVElPTiA9ICJEcm9wLWluIHJlcGxhY2VtZW50IGZvciBkYnVzLWRhZW1vbi4iCi0KLVNFQ1RJT04gPSAiYmFzZSIKLQotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9N2I0ODZjMjMzOGQyMjVhMTQwNWQ5NzllZDJjMTVjZTgiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2J1czEvZGJ1cy1icm9rZXIvcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9L2RidXMtYnJva2VyLSR7UFZ9LnRhci54eiIKLVNSQ19VUkkgKz0gIiBmaWxlOi8vMDAwMS1sYXVuY2gtaW1wcm92ZS1lcnJvci1oYW5kbGluZy1mb3Itb3BlbmRpci5wYXRjaCIKLVNSQ19VUkkgKz0gIiBmaWxlOi8vMDAwMi1tZXRyaWNzLWNoYW5nZS10aGUtY29uc3RhbnQtdXNlZC1mb3ItaW52YWxpZC10aW1lc3RhLnBhdGNoIgotU1JDX1VSSSArPSAiIGZpbGU6Ly8wMDAzLWRidXMtc29ja2V0LXRyZWF0LU1TR19DVFJVTkMtZ3JhY2VmdWxseS5wYXRjaCIKLVNSQ19VUkkgKz0gIiBmaWxlOi8vMDAwNC1sYXVuY2hlci1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiYTE3ODg2YTkyYWIxZTBiYzJlNGIxYTI3NDMzOWUzODgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmZmZjlhODMxYTUxNDY1OWUyYzdkNzA0ZTc2ODY3Y2UzMWViY2Y0M2U4ZDdhNjJlMDgwYzY2NTZmNjRjZDM5ZSIKLQotaW5oZXJpdCBtZXNvbiBwa2djb25maWcgc3lzdGVtZCBmZWF0dXJlc19jaGVjawotCi1ERVBFTkRTID0gImV4cGF0IHN5c3RlbWQiCi1ERVBFTkRTICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzZWxpbnV4JywgJ2xpYnNlbGludXgnLCAnJywgZCl9IgotREVQRU5EUyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsICdhdWRpdCcsICcnLCBkKX0iCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtCUE59LnNlcnZpY2UiCi0KLUZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IgotRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IgotRklMRVNfJHtQTn0gKz0gIiR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQvY2F0YWxvZyIKLQotRVhUUkFfT0VNRVNPTiArPSAiIC1Ec2VsaW51eD0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3NlbGludXgnLCAndHJ1ZScsICdmYWxzZScsIGQpfSIKLUVYVFJBX09FTUVTT04gKz0gIiAtRGF1ZGl0PSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9IgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtYnJva2VyXzIyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlcl8yMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMGI2ZjdmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWJyb2tlcl8yMi5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gImRidXMgYnJva2VyIgorREVTQ1JJUFRJT04gPSAiRHJvcC1pbiByZXBsYWNlbWVudCBmb3IgZGJ1cy1kYWVtb24uIgorCitTRUNUSU9OID0gImJhc2UiCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTdiNDg2YzIzMzhkMjI1YTE0MDVkOTc5ZWQyYzE1Y2U4IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9idXMxL2RidXMtYnJva2VyL3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS9kYnVzLWJyb2tlci0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiMDNjNDczMGYyMTEwYjU0OTJlMTIxMmM4MWFmMzI1ZGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzJmMzA3MDBjZWZjOTk3YzQ3OWQ3NWZjYzQyZjMxNzc5NDBmMWViYmVlOWM1YTYwYzFlM2VlMzliOTBhOTc4MyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9idXMxLyR7QlBOfS9yZWxlYXNlcyIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgc3lzdGVtZCBmZWF0dXJlc19jaGVjaworCitERVBFTkRTID0gImV4cGF0IHN5c3RlbWQiCitERVBFTkRTICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzZWxpbnV4JywgJ2xpYnNlbGludXgnLCAnJywgZCl9IgorREVQRU5EUyArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsICdhdWRpdCcsICcnLCBkKX0iCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiJHtCUE59LnNlcnZpY2UiCisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9IgorRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IgorRklMRVNfJHtQTn0gKz0gIiR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQvY2F0YWxvZyIKKworRVhUUkFfT0VNRVNPTiArPSAiIC1Ec2VsaW51eD0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3NlbGludXgnLCAndHJ1ZScsICdmYWxzZScsIGQpfSIKK0VYVFJBX09FTUVTT04gKz0gIiAtRGF1ZGl0PSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9IgorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9lbWxvZy9lbWxvZy8wMDAxLVJlbW92ZS1tb2R1bGVzX2NsZWFuLWZyb20tY2xlYW4tdGFyZ2V0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZW1sb2cvZW1sb2cvMDAwMS1SZW1vdmUtbW9kdWxlc19jbGVhbi1mcm9tLWNsZWFuLXRhcmdldC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWJhNTI4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZW1sb2cvZW1sb2cvMDAwMS1SZW1vdmUtbW9kdWxlc19jbGVhbi1mcm9tLWNsZWFuLXRhcmdldC5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIGZkMGE0ZWUyMDFiNWM3YjI0ZGE3OWRjZDM0NmFjMTIxOTc4OTUxYTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU3VuLCAyOSBNYXIgMjAyMCAxOTo1ODozNiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBSZW1vdmUgbW9kdWxlc19jbGVhbiBmcm9tIGNsZWFuIHRhcmdldAorCitUaGlzIGlzIG5lZWRlZCB3aGVuIGJ1aWxkaW5nIGFwcGxpY2F0aW9ucyAody9vIG1vZHVsZSkKK1NpbmNlIE9FIHdpbGwgcnVuICdtYWtlIGNsZWFuJyBiZWZvcmUgcmVjb25maWd1cmluZywgdGhpcword2lsbCB0cnkgdG8gcnVuIG1vZHVsZV9jbGVhbiBhbmQgd2lsbCB3cm9uZ2x5IHRyeSB0byBsb29rIGZvciByZW1vdmluZworbW9kdWxlcyBmcm9tIC9saWIvbW9kdWxlcworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBPRS1TcGVjaWZpYyBdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IGM2MDg2M2YuLmZjODk3ZDUgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0yMyw3ICsyMyw3IEBAIGFsbDogbW9kdWxlcyBuYmNhdCBta2VtbG9nCisgCisgaW5zdGFsbDogbW9kdWxlc19pbnN0YWxsIG5iY2F0X2luc3RhbGwgbWtlbWxvZ19pbnN0YWxsCisgCistY2xlYW46IG1vZHVsZXNfY2xlYW4gbmJjYXRfY2xlYW4gbWtlbWxvZ19jbGVhbgorK2NsZWFuOiBuYmNhdF9jbGVhbiBta2VtbG9nX2NsZWFuCisgCisgbW9kdWxlczoKKyAJJChNQUtFKSAtQyAkKEtESVIpIE09JChDVVJESVIpIG1vZHVsZXMKKy0tIAorMi4yNi4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2VtbG9nL2VtbG9nX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2VtbG9nL2VtbG9nX2dpdC5iYgppbmRleCAyMjMwOGQ3Li4zODdkZDY3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9lbWxvZy9lbWxvZ19naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvZW1sb2cvZW1sb2dfZ2l0LmJiCkBAIC0xLDYgKzEsOCBAQAogcmVxdWlyZSAke0JQTn0uaW5jCiAKLVNSQ19VUkkgKz0gImZpbGU6Ly8ke0JQTn0uaW5pdGQiCitTUkNfVVJJICs9ICJmaWxlOi8vJHtCUE59LmluaXRkIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1tb2R1bGVzX2NsZWFuLWZyb20tY2xlYW4tdGFyZ2V0LnBhdGNoIFwKKyAgICAgICAgICAgICIKIAogU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vRHJvcC11c2Utb2YtZXJyb3ItaC5wYXRjaCIKIApAQCAtOCw2ICsxMCw4IEBACiAKIElOSVRTQ1JJUFRfTkFNRSA9ICIke0JQTn0iCiAKKworCiBkb19jb21waWxlKCkgewogICAgIG9lX3J1bm1ha2UgbmJjYXQKICAgICBvZV9ydW5tYWtlIG1rZW1sb2cKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2xpYm5mYy9saWJuZmNfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGlibmZjL2xpYm5mY19naXQuYmIKaW5kZXggNjRjNWY1Yy4uMjg1MWVjZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGlibmZjL2xpYm5mY19naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGlibmZjL2xpYm5mY19naXQuYmIKQEAgLTcsNiArNyw4IEBACiAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwogCitQViA9ICIxLjcuMStnaXQke1NSQ1BWfSIKKwogUyA9ICIke1dPUktESVJ9L2dpdCIKIFNSQ1JFViA9ICIyZDQ1NDM2NzNlOWI3NmMwMjY3OWNhOGI4OTI1OTY1OWYxYWZkOTMyIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL25mYy10b29scy9saWJuZmMuZ2l0IFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2xpYnNpZ2MrKy0yLjAvbGlic2lnYysrLTIuMF8yLjEwLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9saWJzaWdjKystMi4wL2xpYnNpZ2MrKy0yLjBfMi4xMC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTViOWNlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2xpYnNpZ2MrKy0yLjAvbGlic2lnYysrLTIuMF8yLjEwLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIkEgbGlicmFyeSBmb3IgbG9vc2UgY291cGxpbmcgb2YgQysrIG1ldGhvZCBjYWxscyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kODA0NWYzYjhmOTI5YzFjYjI5YTFlM2ZkNzM3YjQ5OSIKLQotREVQRU5EUyA9ICJtbS1jb21tb24iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvbGlic2lnYysrLzIuMTAvbGlic2lnYysrLSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIxYjA2N2JmYWUwYjUwMmU2YTUxMjczMzZjYjA5ZDJkZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMWNhMDI1MzM3OTU5NmY5YzE5ZjA3MGM4M2QzNjJiMTJkZmQzOWMwYTNlYTFkZDgxM2U4ZTIxYzFhMDk3YTk4IgotCi1TID0gIiR7V09SS0RJUn0vbGlic2lnYysrLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scwotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9zaWdjKystKi8iCi1GSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vZGV2aGVscCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi1TRUNVUklUWV9DRkxBR1MgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2xpYnNpZ2MrKy0yLjAvbGlic2lnYysrLTIuMF8yLjEwLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9saWJzaWdjKystMi4wL2xpYnNpZ2MrKy0yLjBfMi4xMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2MTI5ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9saWJzaWdjKystMi4wL2xpYnNpZ2MrKy0yLjBfMi4xMC4zLmJiCkBAIC0wLDAgKzEsMjAgQEAKK1NVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBsb29zZSBjb3VwbGluZyBvZiBDKysgbWV0aG9kIGNhbGxzIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ4MDQ1ZjNiOGY5MjljMWNiMjlhMWUzZmQ3MzdiNDk5IgorCitERVBFTkRTID0gIm1tLWNvbW1vbiIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9saWJzaWdjKysvMi4xMC9saWJzaWdjKystJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImVhNjhjN2FmYzIzYTRiODlhMmRmYTc4MzQ0NDYwNzg1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBiNjhkZmM2MzEzYzZjYzkwYWM5ODljNmQ3MjJhMWJmMDU4NWFkMTM4NDZlNzk3NDZhYTg3Y2IyNjU5MDQ3ODYiCisKK1MgPSAiJHtXT1JLRElSfS9saWJzaWdjKystJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3NpZ2MrKy0qLyIKK0ZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9kZXZoZWxwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK1NFQ1VSSVRZX0NGTEFHUyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGlic2lnYysrLTIuMC9saWJzaWdjKystM18zLjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL2xpYnNpZ2MrKy0yLjAvbGlic2lnYysrLTNfMy4wLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI2YmQwMmMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGlic2lnYysrLTIuMC9saWJzaWdjKystM18zLjAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVNVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciBsb29zZSBjb3VwbGluZyBvZiBDKysgbWV0aG9kIGNhbGxzIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NTliZmZlMjk5MzgxNmViMzJlYzRiYzFlYzFkNTg3NSIKLQotREVQRU5EUyA9ICJtbS1jb21tb24iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvbGlic2lnYysrLzMuMC9saWJzaWdjKystJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjFmOTNmOGVkNGVhZDM4ZTg3NjE1NzgzNGIyYzU3YzIxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRiNzc2NzZkZTFlNzQ3NzRlYzQ1NmJjYzZhYzZmMDRhMjc5MWExMmNjMWZlMDdmODMwNWQ0YzNjODZlMmYzMzkiCi0KLVMgPSAiJHtXT1JLRElSfS9saWJzaWdjKystJHtQVn0iCi0KLWluaGVyaXQgc2V0dXB0b29sczMgbWVzb24KLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vc2lnYysrLSovIgotRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L2RldmhlbHAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotU0VDVVJJVFlfQ0ZMQUdTID0gIiR7U0VDVVJJVFlfTk9fUElFX0NGTEFHU30iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9saWJzaWdjKystMi4wL2xpYnNpZ2MrKy0zXzMuMC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGlic2lnYysrLTIuMC9saWJzaWdjKystM18zLjAuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzRmNWQ2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvbGlic2lnYysrLTIuMC9saWJzaWdjKystM18zLjAuMy5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIkEgbGlicmFyeSBmb3IgbG9vc2UgY291cGxpbmcgb2YgQysrIG1ldGhvZCBjYWxscyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTU5YmZmZTI5OTM4MTZlYjMyZWM0YmMxZWMxZDU4NzUiCisKK0RFUEVORFMgPSAibW0tY29tbW9uIgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL2xpYnNpZ2MrKy8zLjAvbGlic2lnYysrLSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ZGNhNDU1OWU3MzJmNDc3MTAzNzBiYWE4YmMyZTY2ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlNGY0ODY2YTg5NGJkYmUwNTNlNGZiMjJjY2M2YmM0YjY4NTFmZDMxYTQ3NDZmZGQyMGIyY2Y2ZTg3YzZlZGI2IgorCitTID0gIiR7V09SS0RJUn0vbGlic2lnYysrLSR7UFZ9IgorCitpbmhlcml0IHNldHVwdG9vbHMzIG1lc29uCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3NpZ2MrKy0qLyIKK0ZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9kZXZoZWxwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK1NFQ1VSSVRZX0NGTEFHUyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS1vZS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtb2UuYmIKaW5kZXggNTlmMTcwMy4uODM1OGU5MyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS1vZS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLW9lLmJiCkBAIC00Niw3ICs0Niw3IEBACiAiCiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWJlbmNobWFya3MgPSAiXAotICAgIGFuYWx5emUtc3VzcGVuZCBkaHJ5c3RvbmUgaXBlcmYyIGxpbnBhY2sgcGhvcm9uaXgtdGVzdC1zdWl0ZSBcCisgICAgZGhyeXN0b25lIGlwZXJmMiBsaW5wYWNrIHBob3Jvbml4LXRlc3Qtc3VpdGUgXAogICAgIHRpb2JlbmNoIGJvbm5pZSsrIGZpbyBpcGVyZjIgaXBlcmYzIGxtYmVuY2ggcy1zdWl0ZSB3aGV0c3RvbmUgXAogICAgIGxpYmMtYmVuY2ggbWVtdGVzdGVyIHN5c2JlbmNoIGRiZW5jaCBpb3pvbmUzIGxpYmh1Z2V0bGJmcyBcCiAgICAgbmJlbmNoLWJ5dGUgdGlueW1lbWJlbmNoIFwKQEAgLTYyLDE0ICs2MiwxNSBAQAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtY29ubmVjdGl2aXR5ID0iXAogICAgIGdhbW11IGhvc3RhcGQgaXJzc2kga3JiNSBsaWJldiBsaWJpbW9iaWxlZGV2aWNlIFwKICAgICBsaWJtYmltIGxpYm10cCBsaWJuZHAgbGlicW1pIGxpYnRvcnJlbnQgXAotICAgIGxpYnV2IGxpYndlYnNvY2tldHMgbGludXhwdHAgbGlyYyBsb3VkbW91dGggXAorICAgIGxpYnV2IGxpYndlYnNvY2tldHMgbGludXhwdHAgbG91ZG1vdXRoIFwKICAgICBtb2RlbW1hbmFnZXIgbW9zaCAgXAogICAgIHBhaG8tbXF0dC1jIHBob25ldC11dGlscyByYWJiaXRtcS1jIHJma2lsbCBydG9ycmVudCBcCi0gICAgc2VyMm5ldCBzbXN0b29sczMgdGVsZXBhdGh5LWdsaWIgdGVsZXBhdGh5LWlkbGUgdGhyaWZ0IFwKKyAgICBzZXIybmV0IHNtc3Rvb2xzMyB0ZWxlcGF0aHktZ2xpYiB0aHJpZnQgXAogICAgIHVzYm11eGQgemFiYml4IHplcm9tcSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAib2JleC1kYXRhLXNlcnZlciIsICIiLCBkKX0gXAogICAgIGxpYm1pa21vZCBcCiAgICAgb2JleGZ0cCBvcGVub2JleCBsaWJuZXQgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJCQkZJTEVfQ09MTEVDVElPTlMiLCAibWV0YS1weXRob24yIiwgInRlbGVwYXRoeS1pZGxlIiwgIiIsIGQpfSBcCiAgICAgIgogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtY29ubmVjdGl2aXR5X2FwcGVuZF9saWJjLWdsaWJjID0gIiB3dnN0cmVhbXMgd3ZkaWFsIgogCkBAIC0xMDAsMjQgKzEwMSwyNSBAQAogCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1kYnMgPSJcCiAgICAgbGV2ZWxkYiBsaWJkYmkgbWFyaWFkYiBtYXJpYWRiLW5hdGl2ZSBcCi0gICAgbXlzcWwtcHl0aG9uIHBvc3RncmVzcWwgcHNxbG9kYmMgcm9ja3NkYiBzb2NpIFwKKyAgICBwb3N0Z3Jlc3FsIHBzcWxvZGJjIHJvY2tzZGIgc29jaSBcCiAgICAgc3FsaXRlIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiQkJGSUxFX0NPTExFQ1RJT05TIiwgIm1ldGEtcHl0aG9uMiIsICJteXNxbC1weXRob24iLCAiIiwgZCl9IFwKICAgICAiCiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWRldnRvb2xzID0iXAogICAgIGFuZHJvaWQtdG9vbHMgYW5kcm9pZC10b29scy1jb25mIGJvb3RjaGFydCBicmVha3BhZCBcCiAgICAgY2FwbnByb3RvIGNnZGIgY3Njb3BlIGN0YWdzIFwKICAgICBkZWJvb3RzdHJhcCBkbWFsbG9jIGZsYXRidWZmZXJzIFwKLSAgICBnaWZsaWIgaWNvbi1zbGljZXIgaXB0cmFmLW5nIGpxIGpzb25jcHAganNvbnJwYyBqc29uLXNwaXJpdCBcCisgICAgZ2lmbGliIGdycGMgaWNvbi1zbGljZXIgaXB0cmFmLW5nIGpxIGpzb25jcHAganNvbnJwYyBqc29uLXNwaXJpdCBcCiAgICAga2NvbmZpZy1mcm9udGVuZHMgbGVtb24gbGliZWRpdCBsaWJnZWUgbGlic29tYm9rMyBcCiAgICAgbGlidWJveCBsb2c0Y3BsdXMgbHNodyBsdHJhY2UgbHVhIG1jcHAgbWVtc3RhdCBtZXJjdXJpYWwgXAotICAgIG1waWNoIG1zZ3BhY2stYyBubG9obWFubi1qc29uIG5vZGVqcyBvcGVub2NkIHBheC11dGlscyBcCisgICAgbXBpY2ggbXNncGFjay1jIG5sb2htYW5uLWpzb24gb3Blbm9jZCBwYXgtdXRpbHMgXAogICAgIGlwYy1ydW4gbGliZGJkLW15c3FsLXBlcmwgbGliZGJpLXBlcmwgbGliaW8tcHR5LXBlcmwgcGhwIFwKLSAgICBwcm90b2J1ZiBwcm90b2J1Zi1jIHB5dGhvbjMtZGlzdHV0aWxzLWV4dHJhIFwKLSAgICBweXRob24tY3B1c2V0IHB5dGhvbi1kaXN0dXRpbHMtZXh0cmEgcHl0aG9uLWZ1dHVyZXMgcHl0aG9uLXB5Z29iamVjdCBcCi0gICAgcmFwaWRqc29uIHNlcmlhbGNoZWNrIHNpcDMgc2lwIHRjbGFwIHVmdHJhY2UgdXctaW1hcCB2YWxpanNvbiBcCisgICAgcHJvdG9idWYgcHJvdG9idWYtYyBcCisgICAgcmFwaWRqc29uIHNlcmlhbGNoZWNrIHNpcDMgdGNsYXAgdWZ0cmFjZSB1dy1pbWFwIHZhbGlqc29uIFwKICAgICB4bWxycGMtYyB5YWpsIHlhc20gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAieDExIiwgImdlYW55IGdlYW55LXBsdWdpbnMgZ2xhZGUgdGsiLCAiIiwgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiQkJGSUxFX0NPTExFQ1RJT05TIiwgIm1ldGEtcHl0aG9uMiIsICJub2RlanMiLCAiIiwgZCl9IFwKICAgICAiCiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWRldnRvb2xzX3JlbW92ZV9hcm12NSA9ICJ1ZnRyYWNlIG5vZGVqcyIKQEAgLTEyNywxOSArMTI5LDE5IEBACiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1kZXZ0b29sc19yZW1vdmVfcG93ZXJwYyA9ICJhbmRyb2lkLXRvb2xzIGJyZWFrcGFkIHVmdHJhY2UgbHNodyIKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWRldnRvb2xzX3JlbW92ZV9wb3dlcnBjNjQgPSAiYW5kcm9pZC10b29scyB1ZnRyYWNlIGxzaHciCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1kZXZ0b29sc19yZW1vdmVfcG93ZXJwYzY0bGUgPSAiYW5kcm9pZC10b29scyB1ZnRyYWNlIGxzaHciCi1SREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1kZXZ0b29sc19yZW1vdmVfcmlzY3Y2NCA9ICJub2RlanMgdWZ0cmFjZSBsc2h3IgotUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtZGV2dG9vbHNfcmVtb3ZlX3Jpc2N2MzIgPSAibm9kZWpzIHVmdHJhY2UgbHNodyIKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWRldnRvb2xzX3JlbW92ZV9yaXNjdjY0ID0gImJyZWFrcGFkIGx0cmFjZSBub2RlanMgdWZ0cmFjZSBsc2h3IgorUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtZGV2dG9vbHNfcmVtb3ZlX3Jpc2N2MzIgPSAiYnJlYWtwYWQgbHRyYWNlIG5vZGVqcyB1ZnRyYWNlIGxzaHciCiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWV4dGVuZGVkID0iXAogICAgIGJ5YWNjIGNmZW5naW5lIGNmZW5naW5lLW1hc3RlcmZpbGVzIGNtcGktYmluZGluZ3MgXAogICAgIGRkcmVzY3VlIGRpYWxvZyBkdW1iLWluaXQgZW5zY3JpcHQgZmx1ZW50Yml0IFwKICAgICBoYXZlZ2VkIGhleGVkaXQgaGlyZWRpcyBocGxpcCBod2xvYyBpbmRlbnQgaW90b3AgaXNvbWQ1c3VtIFwKLSAgICBqYW5zc29uIGtvbmtyZXRjbXBpIGxjZHByb2MgbGliYmxvY2tkZXYgbGliY2VjIGxpYmNvbmZpZyBcCisgICAgamFuc3NvbiBrb25rcmV0Y21waSBsaWJibG9ja2RldiBsaWJjZWMgbGliY29uZmlnIFwKICAgICBsaWJkaXZlY29tcHV0ZXIgbGlicGxpc3QgbGlidXNibXV4ZCBcCiAgICAgbGlibG9ja2ZpbGUgbGlibG9nZ2luZyBsaWJsb2dub3JtIGxpYm1vZGJ1cyBsaWJtb2RidXMgXAogICAgIGxpYnB3cXVhbGl0eSBsaWJxYiBsaWJ1aW8gXAogICAgIGxvY2tmaWxlLXByb2dzIGxvZ3dhdGNoIGxwcm5nIG1haWx4IG1kNWRlZXAgXAotICAgIG1vempzIG1yYWEgbmFuYSBuaWNzdGF0IFwKKyAgICBtcmFhIG5hbmEgbmljc3RhdCBcCiAgICAgcDd6aXAgcDhwbGF0Zm9ybSBsaWJmaWxlLWZubWF0Y2gtcGVybCBcCiAgICAgcmFycGQgcmVkaXMgcnJkdG9vbCBsaWJmYXN0anNvbiBsaWJyZWxwIHJzeXNsb2cgc2FubG9jayBcCiAgICAgc2JsaW0tY21waS1kZXZlbCBzYmxpbS1zZmMtY29tbW9uIHNibGltLXNmY2MgXApAQCAtMTUzLDcgKzE1NSw3IEBACiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwYW0iLCAicGFtLXNzaC1hZ2VudC1hdXRoIG9wZW53c21hbiBzYmxpbS1zZmNiICIsICIiLCBkKX0gXAogICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAicG9sa2l0IiwgInBvbGtpdCBwb2xraXQtZ3JvdXAtcnVsZS1kYXRldGltZSAiLCAiIiwgZCl9IFwKICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInBvbGtpdCIsICJwb2xraXQtZ3JvdXAtcnVsZS1uZXR3b3JrICIsICIiLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJCQlBBVEgiLCAibWV0YS1weXRob24iLCAib3BlbmxtaS10b29scyIsICIiLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJCQkZJTEVfQ09MTEVDVElPTlMiLCAibWV0YS1weXRob24yIiwgIm9wZW5sbWktdG9vbHMiLCAiIiwgZCl9IFwKICAgICAiCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1leHRlbmRlZF9yZW1vdmVfbWlwc2FyY2ggPSAidXBtIG1yYWEgdGlwdG9wIgogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtZXh0ZW5kZWRfcmVtb3ZlX3Bvd2VycGMgPSAidXBtIG1yYWEiCkBAIC0xNjEsNyArMTYzLDYgQEAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWV4dGVuZGVkX3JlbW92ZV9wb3dlcnBjNjRsZSA9ICJ1cG0gbXJhYSIKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWV4dGVuZGVkX3JlbW92ZV9yaXNjdjY0ID0gInVwbSBtcmFhIHRpcHRvcCIKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWV4dGVuZGVkX3JlbW92ZV9yaXNjdjMyID0gInVwbSBtcmFhIHRpcHRvcCIKLVJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWV4dGVuZGVkX3JlbW92ZV9saWJjLW11c2wgPSAibGNkcHJvYyIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtZ25vbWUgPSJcCiAgICAgYXRrbW0gZ25vbWUtY29tbW9uIGdub21lLWRvYy11dGlscy1zdHViIGd0a21tIFwKQEAgLTE2OSw4ICsxNzAsOSBAQAogICAgICIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtZ3JhcGhpY3MgPSJcCi0gICAgYmFibCBjYWlyb21tIGRpZXRzcGxhc2ggZGlyZWN0ZmIgZGlyZWN0ZmItZXhhbXBsZXMgZG5mZHJhZ29yYSBcCi0gICAgZmJncmFiIGZiaWRhIGZvbnRmb3JnZSBmdndtIGdlZ2wgZ2ltcCBnbG0gZ3Bob3RvMiBsaWJncGhvdG8yIFwKKyAgICBjYWlyb21tIGRpZXRzcGxhc2ggZGlyZWN0ZmIgZGlyZWN0ZmItZXhhbXBsZXMgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJQQUNLQUdFX0NMQVNTRVMiLCAicGFja2FnZV9ycG0iLCAiZG5mZHJhZ29yYSBkbmYtcGx1Z2luLXR1aSIsICIiLCBkKX0gXAorICAgIGZiZ3JhYiBmYmlkYSBmb250Zm9yZ2UgZnZ3bSBnbG0gZ3Bob3RvMiBsaWJncGhvdG8yIFwKICAgICBndGtwZXJmIGphc3BlciBsZXB0b25pY2EgbGlibW5nIGxpYnNkbDItaW1hZ2UgbGlic2RsMi1taXhlciBsaWJzZGwyLW5ldCBcCiAgICAgbGlic2RsLWdmeCBsaWJzZGwtaW1hZ2UgbGlic2RsLW1peGVyIGxpYnNkbC1uZXQgbGlic2RsLXR0ZiBcCiAgICAgbGlidm5jc2VydmVyIGxpYnl1aSBsaWJ5dWktbmN1cnNlcyBseGRtIG51bWxvY2t4IG9wZW5ib3ggb3BlbmpwZWcgXApAQCAtMTg3LDE1ICsxODksMjMgQEAKICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIm9wZW5nbCIsICJmcmVlZ2x1dCBsaWJzZGwyLXR0ZiIsICIiLCBkKX0gXAogICAgICIKIAorCisKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWtlcm5lbCA9IlwKICAgICBhZ2VudC1wcm94eSBicm9hZGNvbS1idC1maXJtd2FyZSBjcHVwb3dlciBcCiAgICAgY3Jhc2ggaXBtaXRvb2wgbWluaWNvcmVkdW1wZXIgb3Byb2ZpbGUgXAogICAgICIKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLWtlcm5lbF9hcHBlbmRfeDg2ID0gIiBwbS1ncmFwaCAiCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1rZXJuZWxfYXBwZW5kX3g4Ni02NCA9ICIgcG0tZ3JhcGggIgorCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1rZXJuZWxfcmVtb3ZlX2xpYmMtbXVzbCA9ICJjcmFzaCBtaW5pY29yZWR1bXBlciIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2Uta2VybmVsX3JlbW92ZV9taXBzNjQgPSAiY3Jhc2giCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1rZXJuZWxfcmVtb3ZlX21pcHM2NGVsID0gImNyYXNoIgogCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1rZXJuZWxfcmVtb3ZlX3Jpc2N2NjQgPSAiY3Jhc2ggb3Byb2ZpbGUiCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1rZXJuZWxfcmVtb3ZlX3Jpc2N2MzIgPSAiY3Jhc2ggb3Byb2ZpbGUiCisKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLW11bHRpbWVkaWEgPSJcCiAgICAgYWxzYS1vc3MgYXVkaW9maWxlIGNkcmtpdCBpZDNsaWIgXAogICAgIGEyam1pZGlkIGphY2sgbGliYXNzIGxpYmJ1cm4gbGliY2RpbyBsaWJjZGlvLXBhcmFub2lhIFwKQEAgLTIzMCw5ICsyNDAsOSBAQAogTkUxMF9hcm12N3ZlID0gIm5lMTAiCiAKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLXN1cHBvcnQgPSJcCi0gICAgYW50aHkgYXNpbyBhdG9wIGF1Z2VhcyBhdnJvLWMgYmR3Z2MgZnJhbWUgZ3JhaWwgXAorICAgIGFudGh5IGFzaW8gYXRvcCBhdWdlYXMgYXZyby1jIGJkd2djIGZyYW1lIGdyYWlsIGMtYXJlcyBcCiAgICAgY2NpZCBjZXJlcy1zb2x2ZXIgY2tlcm1pdCBjcHByZXN0IGN0YXBpLWNvbW1vbiBkYWVtb25pemUgXAotICAgIGRhZW1vbnRvb2xzIGRlYnN1bXMgZGV2bWVtMiBkZnUtdXRpbCBkZnUtdXRpbC1uYXRpdmUgZGlnaXRlbXAgXAorICAgIGRhZW1vbnRvb2xzIGRldm1lbTIgZGZ1LXV0aWwgZGZ1LXV0aWwtbmF0aXZlIGRpZ2l0ZW1wIFwKICAgICBkc3RhdCBlamVjdCBlbmNhIGVwZWcgZXNwZWFrIGZic2V0IGZic2V0LW1vZGVzIFwKICAgICBmZnR3IGZsdGstbmF0aXZlIGdkIGdmbGFncyBnbG9nIGdudWxpYiBncGVyZnRvb2xzIFwKICAgICBncG0gZ3JhZG0gZ3NsIGdzb2FwIGhkZHRlbXAgaGlkYXBpIGh0b3AgaHVuc3BlbGwgaHdkYXRhIGlrc2VtZWwgXApAQCAtMjQxLDE4ICsyNTEsMTggQEAKICAgICBsaWJncGlvZCBsaWJpaW8gbGlianMtanF1ZXJ5IGxpYmpzLXNpenpsZSBsaWJsaW5lYnJlYWsgbGlibWljcm9odHRwZCBcCiAgICAgbGlibXhtbCBsaWJvYXV0aCBsaWJvbCBsaWJvb3AgbGlicDExIGxpYnJhdzEzOTQgbGlic21pIGxpYnNvYyBsaWJzc2gyIFwKICAgICBsaWJzc2ggbGlidGFyIGxpYnRlYW0gbGlidGlueXhtbDIgbGlidGlueXhtbCBsaWJ1c2JnIGxpYnVzYi1jb21wYXQgbGlidXRlbXB0ZXIgXAotICAgIGxpbmtzIGxpby11dGlscyBsb2NrZGV2IGxvZzRjIGxvZzRjcHAgbG9nd2FybiBsaWJkZXZtYXBwZXIgbHZtMiBcCisgICAgbGlua3MgbG9ja2RldiBsb2c0YyBsb2c0Y3BwIGxvZ3dhcm4gbGliZGV2bWFwcGVyIGx2bTIgXAogICAgIG1haWxjYXAgbWJ1ZmZlciBtZyBtaW5pbmkgXAogICAgIG11bHRpcGF0aC10b29scyBuYW5vIG5lb24gbm1vbiBudW1hY3RsIG9uaWcgb3BlbmN0IG9wZW5sZGFwIFwKICAgICBvcGVuc2Mgd2J4bWwyIHA5MTBuZCBwY3NjLWxpdGUgcGljb2NvbSBsaWJvdHIgcGlkZ2luIFwKICAgICBwbmdjaGVjayBwb2NvIHBvcHBsZXIgcG9wcGxlci1kYXRhIHBvcnRhdWRpby12MTkgcHBzLXRvb2xzIFwKLSAgICBwdiBweGFyZWdzIHJhcHRvcjIgcmRmaW5kIHJlYWQtZWRpZCByc25hcHNob3QgczNjMjR4eC1ncGlvIHMzYzY0eHgtZ3BpbyBcCi0gICAgc2pmMjQxMC1saW51eC1uYXRpdmUgc2F0eXIgc2RwYXJtIHB0eS1mb3J3YXJkLW5hdGl2ZSBzZXJpYWwtZm9yd2FyZCBcCi0gICAgc2czLXV0aWxzIHNoYXJ1dGlscyBzbWVtIHNwaXRvb2xzIHNyZWNvcmQgc3NpYXBpIHN0bTMyZmxhc2ggXAorICAgIHB2IHB4YXJlZ3MgcmFwdG9yMiByZGZpbmQgcmVhZC1lZGlkIHJzbmFwc2hvdCBcCisgICAgc2F0eXIgc2RwYXJtIHB0eS1mb3J3YXJkLW5hdGl2ZSBzZXJpYWwtZm9yd2FyZCBcCisgICAgc2czLXV0aWxzIHNoYXJ1dGlscyBzcGl0b29scyBzcmVjb3JkIHNzaWFwaSBzdG0zMmZsYXNoIFwKICAgICBzeXNsb2ctbmcgc3lzdGVtLWNvbmZpZy1rZXlib2FyZCB0YmIgdGhpbi1wcm92aXNpb25pbmctdG9vbHMgdG9reW9jYWJpbmV0IFwKICAgICB0cmVlIHVodWJjdGwgdW5peG9kYmMgdXJpcGFyc2VyIHVzYi1tb2Rlc3dpdGNoIFwKLSAgICB1c2ItbW9kZXN3aXRjaC1kYXRhIHVzYnBhdGggdXRoYXNoIHV0b3VjaC1ldmVtdSB1dG91Y2gtZnJhbWUgXAotICAgIHZpbSB2aW0tdGlueSB3ZWJzb2NrZXRwcCB3bWljb25maWcgeGRlbHRhMyB4ZGctdXNlci1kaXJzIHhtbHN0YXJsZXQgXAorICAgIHVzYi1tb2Rlc3dpdGNoLWRhdGEgdXRoYXNoIHV0b3VjaC1ldmVtdSB1dG91Y2gtZnJhbWUgXAorICAgIHZpbSB2aW0tdGlueSB3ZWJzb2NrZXRwcCB4ZGVsdGEzIHhkZy11c2VyLWRpcnMgeG1sc3RhcmxldCBcCiAgICAgemJhciB6aWxlIFwKICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgIngxMSIsICJnZWlzIHRvc2NvdGVybSB1aW0gc3luZXJneSB1dG91Y2gtbXR2aWV3IGxpbmtzLXgxMSBmbHRrIHBpZGdpbi1vdHIiLCAiIiwgZCl9IFwKICAgICBsaWJjYW5iZXJyYSBcCkBAIC0yNjAsMTIgKzI3MCwxMyBAQAogICAgIHByb2NtYWlsIFwKICAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInBvbGtpdCIsICJ1ZGlza3MyIHVwb3dlciIsICIiLCBkKX0gXAogICAgICR7TkUxMH0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJCQkZJTEVfQ09MTEVDVElPTlMiLCAibWV0YS1weXRob24yIiwgImxpby11dGlscyIsICIiLCBkKX0gXAogICAgICIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2Utc3VwcG9ydF9yZW1vdmVfYXJtID0ibnVtYWN0bCIKIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLXN1cHBvcnRfcmVtb3ZlX21pcHNhcmNoID0gImdwZXJmdG9vbHMiCi1SREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1zdXBwb3J0X3JlbW92ZV9yaXNjdjY0ID0gInVpbSIKLVJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLXN1cHBvcnRfcmVtb3ZlX3Jpc2N2MzIgPSAidWltIgorUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2Utc3VwcG9ydF9yZW1vdmVfcmlzY3Y2NCA9ICJncGVyZnRvb2xzIHVpbSIKK1JERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLW9lLXN1cHBvcnRfcmVtb3ZlX3Jpc2N2MzIgPSAiZ3BlcmZ0b29scyB1aW0iCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1zdXBwb3J0X3JlbW92ZV9wb3dlcnBjID0gInNzaWFwaSIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2Utc3VwcG9ydC1lZ2wgPSJcCkBAIC0yOTYsNiArMzA3LDkgQEAKICAgICBsaWJlZS1wdGVzdCBcCiAgICAgcG9jby1wdGVzdCBcCiAgICAgIgorUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtcHRlc3QtcGFja2FnZXNfcmVtb3ZlX3Jpc2N2NjQgPSAib3Byb2ZpbGUtcHRlc3QiCitSREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1vZS1wdGVzdC1wYWNrYWdlc19yZW1vdmVfcmlzY3YzMiA9ICJvcHJvZmlsZS1wdGVzdCIKKwogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtb2UtcHRlc3QtcGFja2FnZXNfYXBwZW5kX3g4NiA9ICJcCiAgICAgbWNlbG9nLXB0ZXN0IFwKICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3BseW1vdXRoL3BseW1vdXRoXzAuOS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGx5bW91dGgvcGx5bW91dGhfMC45LjQuYmIKaW5kZXggMzA1OTc3ZS4uOGI3MWMyYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGx5bW91dGgvcGx5bW91dGhfMC45LjQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvcGx5bW91dGgvcGx5bW91dGhfMC45LjQuYmIKQEAgLTI2LDcgKzI2LDggQEAKIAogRVhUUkFfT0VDT05GICs9ICIgLS1lbmFibGUtc2hhcmVkIC0tZGlzYWJsZS1zdGF0aWMgLS1kaXNhYmxlLWd0ayAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiBcCiAgICAgLS13aXRoLWxvZ289JHtMT0dPfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJy0tZW5hYmxlLXN5c3RlbWQtaW50ZWdyYXRpb24gLS13aXRoLXN5c3RlbS1yb290LWluc3RhbGwgLS13aXRoLXN5c3RlbWQtdHR5LWFzay1wYXNzd29yZC1hZ2VudD0ke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLXR0eS1hc2stcGFzc3dvcmQtYWdlbnQnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS1lbmFibGUtc3lzdGVtZC1pbnRlZ3JhdGlvbiAtLXdpdGgtc3lzdGVtZC10dHktYXNrLXBhc3N3b3JkLWFnZW50PSR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtdHR5LWFzay1wYXNzd29yZC1hZ2VudCcsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndXNybWVyZ2UnLCctLXdpdGhvdXQtc3lzdGVtLXJvb3QtaW5zdGFsbCcsJy0td2l0aC1zeXN0ZW0tcm9vdC1pbnN0YWxsJyxkKX0gXAogIgogCiBQQUNLQUdFQ09ORklHID8/PSAicGFuZ28gaW5pdHJkIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvc2FmZWMvc2FmZWNfMy41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvc2FmZWMvc2FmZWNfMy41LmJiCmluZGV4IGM5YWNlM2IuLjk0Y2RiM2EgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3NhZmVjL3NhZmVjXzMuNS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9zYWZlYy9zYWZlY18zLjUuYmIKQEAgLTE0LDYgKzE0LDEwIEBACiAKIENQUEZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1EX0dOVV9TT1VSQ0UiCiAKLUNPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0fGkuODZ8cG93ZXJwY3xwb3dlcnBjNjR8YXJtKS4qLWxpbnV4JworQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjR8aS44Nnxwb3dlcnBjfHBvd2VycGM2NHxhcm18YWFyY2g2NCkuKi1saW51eCcKIAotUkRFUEVORFNfJHtQTn0gPSAicGVybCIKK1BBQ0tBR0VTID0rICIke1BOfS1jaGVjayIKKworRklMRVNfJHtQTn0tY2hlY2sgKz0gIiR7YmluZGlyfS9jaGVja19mb3JfdW5zYWZlX2FwaXMiCisKK1JERVBFTkRTXyR7UE59LWNoZWNrICs9ICJwZXJsIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvc2RidXMtYysrL3NkYnVzLWMrKy0wLjcuNi9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9zZGJ1cy1jKysvc2RidXMtYysrLTAuOC4xL3J1bi1wdGVzdApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvc2RidXMtYysrL3NkYnVzLWMrKy0wLjcuNi9ydW4tcHRlc3QKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3NkYnVzLWMrKy9zZGJ1cy1jKystMC44LjEvcnVuLXB0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9zZGJ1cy1jKysvc2RidXMtYysrLXRvb2xzLW5hdGl2ZV8wLjcuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3NkYnVzLWMrKy9zZGJ1cy1jKystdG9vbHMtbmF0aXZlXzAuNy42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NDkyYzIzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3NkYnVzLWMrKy9zZGJ1cy1jKystdG9vbHMtbmF0aXZlXzAuNy42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJzZGJ1cy1jKysgbmF0aXZlIHRvb2xzIgotREVTQ1JJUFRJT04gPSAiTmF0aXZlIGludGVyZmFjZSBjb2RlIGdlbmVyYXRvciBmb3IgZGV2ZWxvcG1lbnQgd2l0aCBzZGJ1cy1jKysiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1N9L0NPUFlJTkc7bWQ1PTE4MDNmYTljMmMzY2U4Y2IwNmI0ODYxZDc1MzEwNzQyIgotCi1pbmhlcml0IGNtYWtlIG5hdGl2ZQotCi1ERVBFTkRTICs9ICJleHBhdCIKLQotU1JDUkVWID0gIjUxMjFkNDZlZWQ0MjIzMTI4NWMxOGQzMTdhOWY0OGUwYjI4NDlkNWUiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vS2lzdGxlci1Hcm91cC9zZGJ1cy1jcHAuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD1tYXN0ZXI7c3VicGF0aD10b29scyIKLQotUyA9ICIke1dPUktESVJ9L3Rvb2xzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNvcmUvc2RidXMtYysrL3NkYnVzLWMrKy10b29sc18wLjguMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3NkYnVzLWMrKy9zZGJ1cy1jKystdG9vbHNfMC44LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVhZWMwZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3NkYnVzLWMrKy9zZGJ1cy1jKystdG9vbHNfMC44LjEuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJzZGJ1cy1jKysgbmF0aXZlIHRvb2xzIgorREVTQ1JJUFRJT04gPSAiTmF0aXZlIGludGVyZmFjZSBjb2RlIGdlbmVyYXRvciBmb3IgZGV2ZWxvcG1lbnQgd2l0aCBzZGJ1cy1jKysiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1N9L0NPUFlJTkc7bWQ1PTE4MDNmYTljMmMzY2U4Y2IwNmI0ODYxZDc1MzEwNzQyIgorCitpbmhlcml0IGNtYWtlCisKK0RFUEVORFMgKz0gImV4cGF0IgorCitTUkNSRVYgPSAiM2E0ZjM0M2ZiOTI0NjUwZTc2Mzk2NjBlZmE1ZjE0Mzk2MTE2MjA0NCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9LaXN0bGVyLUdyb3VwL3NkYnVzLWNwcC5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPW1hc3RlcjtzdWJwYXRoPXRvb2xzIgorCitTID0gIiR7V09SS0RJUn0vdG9vbHMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3NkYnVzLWMrKy9zZGJ1cy1jKytfMC43LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9zZGJ1cy1jKysvc2RidXMtYysrXzAuNy42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Nzc3NGNiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3NkYnVzLWMrKy9zZGJ1cy1jKytfMC43LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gInNkYnVzLWMrKyIKLURFU0NSSVBUSU9OID0gIkhpZ2gtbGV2ZWwgQysrIEQtQnVzIGxpYnJhcnkgZGVzaWduZWQgdG8gcHJvdmlkZSBlYXN5LXRvLXVzZSB5ZXQgcG93ZXJmdWwgQVBJIGluIG1vZGVybiBDKysiCi0KLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE4MDNmYTljMmMzY2U4Y2IwNmI0ODYxZDc1MzEwNzQyIgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBzeXN0ZW1kIHB0ZXN0Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnd2l0aC1leHRlcm5hbC1saWJzeXN0ZW1kJywgJ3dpdGgtYnVpbHRpbi1saWJzeXN0ZW1kJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJ3dpdGgtdGVzdHMnLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1t3aXRoLWJ1aWx0aW4tbGlic3lzdGVtZF0gPSAiLCxzZGJ1cy1jKystbGlic3lzdGVtZCxsaWJjYXAiCi1QQUNLQUdFQ09ORklHW3dpdGgtZXh0ZXJuYWwtbGlic3lzdGVtZF0gPSAiLCxzeXN0ZW1kLGxpYnN5c3RlbWQiCi1QQUNLQUdFQ09ORklHW3dpdGgtdGVzdHNdID0gIi1EQlVJTERfVEVTVFM9T04gLURURVNUU19JTlNUQUxMX1BBVEg9JHtsaWJkaXJ9LyR7QlBOfS90ZXN0cywtREJVSUxEX1RFU1RTPU9GRiIKLQotREVQRU5EUyArPSAiZXhwYXQiCi0KLVNSQ1JFViA9ICI1MTIxZDQ2ZWVkNDIyMzEyODVjMThkMzE3YTlmNDhlMGIyODQ5ZDVlIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0tpc3RsZXItR3JvdXAvc2RidXMtY3BwLmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9bWFzdGVyIgotU1JDX1VSSSArPSAiZmlsZTovL3J1bi1wdGVzdCIKLQotRVhUUkFfT0VDTUFLRSA9ICItREJVSUxEX0NPREVfR0VOPU9OIFwKLSAgICAgICAgICAgICAgICAgLURCVUlMRF9ET0M9T04gXAotICAgICAgICAgICAgICAgICAtREJVSUxEX0RPWFlHRU5fRE9DPU9GRiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRklMRVNfJHtQTn1fcmVtb3ZlID0gIiR7c3lzY29uZmRpcn0iCi1GSUxFU18ke1BOfS1wdGVzdCArPSAiJHtzeXNjb25mZGlyfS9kYnVzLTEvc3lzdGVtLmQvIgotRklMRVNfJHtQTn0tcHRlc3QgKz0gIiR7bGliZGlyfS8ke0JQTn0vdGVzdHMiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9zZGJ1cy1jKysteG1sMmNwcCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jb3JlL3NkYnVzLWMrKy9zZGJ1cy1jKytfMC44LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9zZGJ1cy1jKysvc2RidXMtYysrXzAuOC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZDYzZmQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY29yZS9zZGJ1cy1jKysvc2RidXMtYysrXzAuOC4xLmJiCkBAIC0wLDAgKzEsMzIgQEAKK1NVTU1BUlkgPSAic2RidXMtYysrIgorREVTQ1JJUFRJT04gPSAiSGlnaC1sZXZlbCBDKysgRC1CdXMgbGlicmFyeSBkZXNpZ25lZCB0byBwcm92aWRlIGVhc3ktdG8tdXNlIHlldCBwb3dlcmZ1bCBBUEkgaW4gbW9kZXJuIEMrKyIKKworU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTgwM2ZhOWMyYzNjZThjYjA2YjQ4NjFkNzUzMTA3NDIiCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnIHN5c3RlbWQgcHRlc3QKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd3aXRoLWV4dGVybmFsLWxpYnN5c3RlbWQnLCAnd2l0aC1idWlsdGluLWxpYnN5c3RlbWQnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnd2l0aC10ZXN0cycsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHW3dpdGgtYnVpbHRpbi1saWJzeXN0ZW1kXSA9ICIsLHNkYnVzLWMrKy1saWJzeXN0ZW1kLGxpYmNhcCIKK1BBQ0tBR0VDT05GSUdbd2l0aC1leHRlcm5hbC1saWJzeXN0ZW1kXSA9ICIsLHN5c3RlbWQsbGlic3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbd2l0aC10ZXN0c10gPSAiLURCVUlMRF9URVNUUz1PTiAtRFRFU1RTX0lOU1RBTExfUEFUSD0ke2xpYmRpcn0vJHtCUE59L3Rlc3RzLC1EQlVJTERfVEVTVFM9T0ZGIgorCitERVBFTkRTICs9ICJleHBhdCIKKworU1JDUkVWID0gIjNhNGYzNDNmYjkyNDY1MGU3NjM5NjYwZWZhNWYxNDM5NjExNjIwNDQiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vS2lzdGxlci1Hcm91cC9zZGJ1cy1jcHAuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD1tYXN0ZXIiCitTUkNfVVJJICs9ICJmaWxlOi8vcnVuLXB0ZXN0IgorCitFWFRSQV9PRUNNQUtFID0gIi1EQlVJTERfQ09ERV9HRU49T04gXAorICAgICAgICAgICAgICAgICAtREJVSUxEX0RPQz1PTiBcCisgICAgICAgICAgICAgICAgIC1EQlVJTERfRE9YWUdFTl9ET0M9T0ZGIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitGSUxFU18ke1BOfV9yZW1vdmUgPSAiJHtzeXNjb25mZGlyfSIKK0ZJTEVTXyR7UE59LXB0ZXN0ICs9ICIke3N5c2NvbmZkaXJ9L2RidXMtMS9zeXN0ZW0uZC8iCitGSUxFU18ke1BOfS1wdGVzdCArPSAiJHtsaWJkaXJ9LyR7QlBOfS90ZXN0cyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L3NkYnVzLWMrKy14bWwyY3BwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9ib3Rhbi9ib3Rhbl8yLjEzLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2JvdGFuL2JvdGFuXzIuMTMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDg1NGJkNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2JvdGFuL2JvdGFuXzIuMTMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLVNVTU1BUlkgPSAiQ3J5cHRvIGFuZCBUTFMgZm9yIEMrKzExIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9ib3Rhbi5yYW5kb21iaXQubmV0IgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9saWNlbnNlLnR4dDttZDU9YTAyZTAzYzhmYTJjNWU3YjliM2ZjYzFiOTgxMWZkM2IiCi1TRUNUSU9OID0gImxpYnMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9ib3Rhbi5yYW5kb21iaXQubmV0L3JlbGVhc2VzL0JvdGFuLSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5ZjkwYzdkNTIzNzc4YmU1ZjIzZjNjZTc5MDQ2YmEzNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNTdhZTQyYTQxZTEwOTFiY2E1OGY0NGY0MWFkZGViZDlhMzkwYjY1MTYwMzk1MmM4ODFlYzg5ZDUwMTg3ZTkwIgotCi1TID0gIiR7V09SS0RJUn0vQm90YW4tJHtQVn0iCi0KLWluaGVyaXQgcHl0aG9uM25hdGl2ZSBzaXRlaW5mbyBsaWJfcGFja2FnZQotCi1DUFUgPz0gIiR7VEFSR0VUX0FSQ0h9IgotQ1BVX3g4NiA9ICJ4ODZfMzIiCi1DUFVfYXJtdjdhID0gImFybXY3IgotQ1BVX2FybXY3dmUgPSAiYXJtdjciCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLQlweXRob24zICR7U30vY29uZmlndXJlLnB5IFwKLQktLXByZWZpeD0iJHtEfSR7cHJlZml4fSIgXAotCS0tY3B1PSIke0NQVX0iIFwKLQktLWNjLWJpbj0iJHtDWFh9IiBcCi0JLS1jeHhmbGFncz0iJHtDWFhGTEFHU30iIFwKLQktLWxkZmxhZ3M9IiR7TERGTEFHU30iIFwKLQktLXdpdGgtZW5kaWFuPSR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJ2xpdHRsZScsICdiaWcnLCBkKX0gXAotCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwibmVvbiIsIiIsIi0tZGlzYWJsZS1uZW9uIixkKX0gXAotCS0td2l0aC1zeXNyb290LWRpcj0ke1NUQUdJTkdfRElSX1RBUkdFVH0gXAotCS0td2l0aC1idWlsZC1kaXI9IiR7Qn0iIFwKLQktLW9wdGltaXplLWZvci1zaXplIFwKLQktLXdpdGgtc3RhY2stcHJvdGVjdG9yIFwKLQktLWVuYWJsZS1zaGFyZWQtbGlicmFyeSBcCi0JLS13aXRoLXB5dGhvbi12ZXJzaW9ucz0zIFwKLQkke0VYVFJBX09FQ09ORn0KLX0KLQotZG9fY29tcGlsZSgpIHsKLQlvZV9ydW5tYWtlCi19Ci1kb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgaW5zdGFsbAotCXNlZCAtaSAtZSAic3wke0R9fHxnIiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9ib3Rhbi0yLnBjCi19Ci0KLVBBQ0tBR0VTICs9ICIke1BOfS1weXRob24zIgotCi1GSUxFU18ke1BOfS1weXRob24zID0gIiR7bGliZGlyfS9weXRob24zIgotCi1SREVQRU5EU18ke1BOfS1weXRob24zICs9ICJweXRob24zIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9ib3Rhbi9ib3Rhbl8yLjE0LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL2JvdGFuL2JvdGFuXzIuMTQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MmU4OWY2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9ib3Rhbi9ib3Rhbl8yLjE0LjAuYmIKQEAgLTAsMCArMSw1MSBAQAorU1VNTUFSWSA9ICJDcnlwdG8gYW5kIFRMUyBmb3IgQysrMTEiCitIT01FUEFHRSA9ICJodHRwczovL2JvdGFuLnJhbmRvbWJpdC5uZXQiCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xpY2Vuc2UudHh0O21kNT1hMDJlMDNjOGZhMmM1ZTdiOWIzZmNjMWI5ODExZmQzYiIKK1NFQ1RJT04gPSAibGlicyIKKworU1JDX1VSSSA9ICJodHRwczovL2JvdGFuLnJhbmRvbWJpdC5uZXQvcmVsZWFzZXMvQm90YW4tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImViYzY4YzA4Yjk5YmJjNGI0ZmM5YmRiZmFkMzk4YjAyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBjMTBmMTJiNDI0YTQwZWUxOWJkZTAwMjkyMDk4ZTIwMWQ3NDk4NTM1YzA2MmQ4ZDViNTg2ZDA3ODYxYTU0YjUiCisKK1MgPSAiJHtXT1JLRElSfS9Cb3Rhbi0ke1BWfSIKKworaW5oZXJpdCBweXRob24zbmF0aXZlIHNpdGVpbmZvIGxpYl9wYWNrYWdlCisKK0NQVSA/PSAiJHtUQVJHRVRfQVJDSH0iCitDUFVfeDg2ID0gIng4Nl8zMiIKK0NQVV9hcm12N2EgPSAiYXJtdjciCitDUFVfYXJtdjd2ZSA9ICJhcm12NyIKKworZG9fY29uZmlndXJlKCkgeworCXB5dGhvbjMgJHtTfS9jb25maWd1cmUucHkgXAorCS0tcHJlZml4PSIke0R9JHtleGVjX3ByZWZpeH0iIFwKKwktLWxpYmRpcj0iJHtEfSR7bGliZGlyfSIgXAorCS0tY3B1PSIke0NQVX0iIFwKKwktLWNjLWJpbj0iJHtDWFh9IiBcCisJLS1jeHhmbGFncz0iJHtDWFhGTEFHU30iIFwKKwktLWxkZmxhZ3M9IiR7TERGTEFHU30iIFwKKwktLXdpdGgtZW5kaWFuPSR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJ2xpdHRsZScsICdiaWcnLCBkKX0gXAorCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwibmVvbiIsIiIsIi0tZGlzYWJsZS1uZW9uIixkKX0gXAorCS0td2l0aC1zeXNyb290LWRpcj0ke1NUQUdJTkdfRElSX0hPU1R9IFwKKwktLXdpdGgtYnVpbGQtZGlyPSIke0J9IiBcCisJLS1vcHRpbWl6ZS1mb3Itc2l6ZSBcCisJLS13aXRoLXN0YWNrLXByb3RlY3RvciBcCisJLS1lbmFibGUtc2hhcmVkLWxpYnJhcnkgXAorCS0td2l0aC1weXRob24tdmVyc2lvbnM9MyBcCisJJHtFWFRSQV9PRUNPTkZ9Cit9CisKK2RvX2NvbXBpbGUoKSB7CisJb2VfcnVubWFrZQorfQorZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlIGluc3RhbGwKKwlzZWQgLWkgLWUgInN8JHtEfXx8ZyIgJHtEfSR7bGliZGlyfS9wa2djb25maWcvYm90YW4tMi5wYworfQorCitQQUNLQUdFUyArPSAiJHtQTn0tcHl0aG9uMyIKKworRklMRVNfJHtQTn0tcHl0aG9uMyA9ICIke2xpYmRpcn0vcHl0aG9uMyIKKworUkRFUEVORFNfJHtQTn0tcHl0aG9uMyArPSAicHl0aG9uMyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vY3J5cHRzZXR1cC9jcnlwdHNldHVwXzIuMi4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9jcnlwdHNldHVwL2NyeXB0c2V0dXBfMi4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3OWI5ZWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9jcnlwdHNldHVwL2NyeXB0c2V0dXBfMi4yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5MiArMCwwIEBACi1TVU1NQVJZID0gIk1hbmFnZSBwbGFpbiBkbS1jcnlwdCBhbmQgTFVLUyBlbmNyeXB0ZWQgdm9sdW1lcyIKLURFU0NSSVBUSU9OID0gIkNyeXB0c2V0dXAgaXMgdXNlZCB0byBjb252ZW5pZW50bHkgc2V0dXAgZG0tY3J5cHQgbWFuYWdlZCBcCi1kZXZpY2UtbWFwcGVyIG1hcHBpbmdzLiBUaGVzZSBpbmNsdWRlIHBsYWluIGRtLWNyeXB0IHZvbHVtZXMgYW5kIFwKLUxVS1Mgdm9sdW1lcy4gVGhlIGRpZmZlcmVuY2UgaXMgdGhhdCBMVUtTIHVzZXMgYSBtZXRhZGF0YSBoZWFkZXIgXAotYW5kIGNhbiBoZW5jZSBvZmZlciBtb3JlIGZlYXR1cmVzIHRoYW4gcGxhaW4gZG0tY3J5cHQuIE9uIHRoZSBvdGhlciBcCi1oYW5kLCB0aGUgaGVhZGVyIGlzIHZpc2libGUgYW5kIHZ1bG5lcmFibGUgdG8gZGFtYWdlLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0bGFiLmNvbS9jcnlwdHNldHVwL2NyeXB0c2V0dXAiCi1TRUNUSU9OID0gImNvbnNvbGUiCi1MSUNFTlNFID0gIkdQTC0yLjAtd2l0aC1PcGVuU1NMLWV4Y2VwdGlvbiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMyMTA3ZGQyODNiMWRmZWI2NmM5YjNlNmJlMzEyMzI2IgotCi1ERVBFTkRTID0gIiBcCi0gICAganNvbi1jIFwKLSAgICBsaWJkZXZtYXBwZXIgXAotICAgIHBvcHQgXAotICAgIHV0aWwtbGludXggXAotIgotCi1SREVQRU5EU18ke1BOfSA9ICIgXAotICAgIGxpYmRldm1hcHBlciBcCi0iCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy8ke0JQTn0vdiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19LyR7QlB9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyYjY0Y2E5ZWExNmU4MjNkZjM1OWVhY2Y5YzAyNDE0YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYWYwZWM5NTUxYWI5Yzg3MDA3NGNhZTlkM2Y2OGQ4MmNhYjAwNGY0MDk1ZmE4OWRiMGU0NDEzNzEzNDI0YTQ2IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi0jIFVzZSBvcGVuc3NsIGJlY2F1c2UgbGliZ2NyeXB0IGRyb3BzIHJvb3QgcHJpdmlsZWdlcwotIyBpZiBsaWJnY3J5cHQgaXMgbGlua2VkIHdpdGggbGliY2FwIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUcgPz89ICIgXAotICAgIGtleXJpbmcgXAotICAgIGNyeXB0c2V0dXAgXAotICAgIHZlcml0eXNldHVwIFwKLSAgICBjcnlwdHNldHVwLXJlZW5jcnlwdCBcCi0gICAgaW50ZWdyaXR5c2V0dXAgXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3NlbGludXgnLCBkKX0gXAotICAgIGtlcm5lbF9jcnlwdG8gXAotICAgIGludGVybmFsLWFyZ29uMiBcCi0gICAgYmxraWQgXAotICAgIGx1a3MtYWRqdXN0LXh0cy1rZXlzaXplIFwKLSAgICBvcGVuc3NsIFwKLSIKLVBBQ0tBR0VDT05GSUdfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAotICAgIHVkZXYgXAotIgotCi1QQUNLQUdFQ09ORklHW2tleXJpbmddID0gIi0tZW5hYmxlLWtleXJpbmcsLS1kaXNhYmxlLWtleXJpbmciCi1QQUNLQUdFQ09ORklHW2ZpcHNdID0gIi0tZW5hYmxlLWZpcHMsLS1kaXNhYmxlLWZpcHMiCi1QQUNLQUdFQ09ORklHW3B3cXVhbGl0eV0gPSAiLS1lbmFibGUtcHdxdWFsaXR5LC0tZGlzYWJsZS1wd3F1YWxpdHksbGlicHdxdWFsaXR5IgotUEFDS0FHRUNPTkZJR1twYXNzd2RxY10gPSAiLS1lbmFibGUtcGFzc3dkcWMsLS1kaXNhYmxlLXBhc3N3ZHFjLHBhc3N3ZHFjIgotUEFDS0FHRUNPTkZJR1tjcnlwdHNldHVwXSA9ICItLWVuYWJsZS1jcnlwdHNldHVwLC0tZGlzYWJsZS1jcnlwdHNldHVwIgotUEFDS0FHRUNPTkZJR1t2ZXJpdHlzZXR1cF0gPSAiLS1lbmFibGUtdmVyaXR5c2V0dXAsLS1kaXNhYmxlLXZlcml0eXNldHVwIgotUEFDS0FHRUNPTkZJR1tjcnlwdHNldHVwLXJlZW5jcnlwdF0gPSAiLS1lbmFibGUtY3J5cHRzZXR1cC1yZWVuY3J5cHQsLS1kaXNhYmxlLWNyeXB0c2V0dXAtcmVlbmNyeXB0IgotUEFDS0FHRUNPTkZJR1tpbnRlZ3JpdHlzZXR1cF0gPSAiLS1lbmFibGUtaW50ZWdyaXR5c2V0dXAsLS1kaXNhYmxlLWludGVncml0eXNldHVwIgotUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItLWVuYWJsZS1zZWxpbnV4LC0tZGlzYWJsZS1zZWxpbnV4IgotUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLWVuYWJsZS11ZGV2LC0tZGlzYWJsZS11ZGV2LCx1ZGV2IgotUEFDS0FHRUNPTkZJR1trZXJuZWxfY3J5cHRvXSA9ICItLWVuYWJsZS1rZXJuZWxfY3J5cHRvLC0tZGlzYWJsZS1rZXJuZWxfY3J5cHRvIgotIyBnY3J5cHQtcGtiZGYyIHJlcXVyaWVzIC0td2l0aC1jcnlwdG9fYmFja2VuZD1nY3J5cHQgb3IgdGhlIGZsYWcgaXNuJ3QKLSMgcmVjb2duaXplZC4KLVBBQ0tBR0VDT05GSUdbZ2NyeXB0LXBia2RmMl0gPSAiLS1lbmFibGUtZ2NyeXB0LXBia2RmMiIKLVBBQ0tBR0VDT05GSUdbaW50ZXJuYWwtYXJnb24yXSA9ICItLWVuYWJsZS1pbnRlcm5hbC1hcmdvbjIsLS1kaXNhYmxlLWludGVybmFsLWFyZ29uMiIKLVBBQ0tBR0VDT05GSUdbaW50ZXJuYWwtc3NlLWFyZ29uMl0gPSAiLS1lbmFibGUtaW50ZXJuYWwtc3NlLWFyZ29uMiwtLWRpc2FibGUtaW50ZXJuYWwtc3NlLWFyZ29uMiIKLVBBQ0tBR0VDT05GSUdbYmxraWRdID0gIi0tZW5hYmxlLWJsa2lkLC0tZGlzYWJsZS1ibGtpZCx1dGlsLWxpbnV4IgotUEFDS0FHRUNPTkZJR1tkZXYtcmFuZG9tXSA9ICItLWVuYWJsZS1kZXYtcmFuZG9tLC0tZGlzYWJsZS1kZXYtcmFuZG9tIgotUEFDS0FHRUNPTkZJR1tsdWtzLWFkanVzdC14dHMta2V5c2l6ZV0gPSAiLS1lbmFibGUtbHVrcy1hZGp1c3QteHRzLWtleXNpemUsLS1kaXNhYmxlLWx1a3MtYWRqdXN0LXh0cy1rZXlzaXplIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtY3J5cHRvX2JhY2tlbmQ9b3BlbnNzbCwsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbZ2NyeXB0XSA9ICItLXdpdGgtY3J5cHRvX2JhY2tlbmQ9Z2NyeXB0LCxsaWJnY3J5cHQiCi1QQUNLQUdFQ09ORklHW25zc10gPSAiLS13aXRoLWNyeXB0b19iYWNrZW5kPW5zcywsbnNzIgotUEFDS0FHRUNPTkZJR1trZXJuZWxdID0gIi0td2l0aC1jcnlwdG9fYmFja2VuZD1rZXJuZWwiCi1QQUNLQUdFQ09ORklHW25ldHRsZV0gPSAiLS13aXRoLWNyeXB0b19iYWNrZW5kPW5ldHRsZSwsbmV0dGxlIgotUEFDS0FHRUNPTkZJR1tsdWtzMl0gPSAiLS13aXRoLWRlZmF1bHQtbHVrcy1mb3JtYXQ9TFVLUzIsLS13aXRoLWRlZmF1bHQtbHVrcy1mb3JtYXQ9TFVLUzEiCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gImtlcm5lbC1tb2R1bGUtYWVzLWdlbmVyaWMgXAotICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS1kbS1jcnlwdCBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLW1kNSBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWNiYyBcCi0gICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLXNoYTI1Ni1nZW5lcmljIFwKLSAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUteHRzIFwKLSIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXN0YXRpYyIKLSMgQnVpbGRpbmcgd2l0aG91dCBsYXJnZWZpbGUgaXMgbm90IHN1cHBvcnRlZCBieSB1cHN0cmVhbQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1sYXJnZWZpbGUiCi0jIFJlcXVpcmVzIGEgc3RhdGljIHBvcHQgbGlicmFyeQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtc3RhdGljLWNyeXB0c2V0dXAiCi0jIFRoZXJlJ3Mgbm8gcmVjaXBlIGZvciBsaWJhcmdvbjIgeWV0Ci1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1saWJhcmdvbjIiCi0KLUZJTEVTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJyR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL2NyeXB0c2V0dXAuY29uZicsICcnLCBkKX0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vY3J5cHRzZXR1cC9jcnlwdHNldHVwXzIuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9jcnlwdHNldHVwL2NyeXB0c2V0dXBfMi4zLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWMzNzVmZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vY3J5cHRzZXR1cC9jcnlwdHNldHVwXzIuMy4xLmJiCkBAIC0wLDAgKzEsOTIgQEAKK1NVTU1BUlkgPSAiTWFuYWdlIHBsYWluIGRtLWNyeXB0IGFuZCBMVUtTIGVuY3J5cHRlZCB2b2x1bWVzIgorREVTQ1JJUFRJT04gPSAiQ3J5cHRzZXR1cCBpcyB1c2VkIHRvIGNvbnZlbmllbnRseSBzZXR1cCBkbS1jcnlwdCBtYW5hZ2VkIFwKK2RldmljZS1tYXBwZXIgbWFwcGluZ3MuIFRoZXNlIGluY2x1ZGUgcGxhaW4gZG0tY3J5cHQgdm9sdW1lcyBhbmQgXAorTFVLUyB2b2x1bWVzLiBUaGUgZGlmZmVyZW5jZSBpcyB0aGF0IExVS1MgdXNlcyBhIG1ldGFkYXRhIGhlYWRlciBcCithbmQgY2FuIGhlbmNlIG9mZmVyIG1vcmUgZmVhdHVyZXMgdGhhbiBwbGFpbiBkbS1jcnlwdC4gT24gdGhlIG90aGVyIFwKK2hhbmQsIHRoZSBoZWFkZXIgaXMgdmlzaWJsZSBhbmQgdnVsbmVyYWJsZSB0byBkYW1hZ2UuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRsYWIuY29tL2NyeXB0c2V0dXAvY3J5cHRzZXR1cCIKK1NFQ1RJT04gPSAiY29uc29sZSIKK0xJQ0VOU0UgPSAiR1BMLTIuMC13aXRoLU9wZW5TU0wtZXhjZXB0aW9uIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzIxMDdkZDI4M2IxZGZlYjY2YzliM2U2YmUzMTIzMjYiCisKK0RFUEVORFMgPSAiIFwKKyAgICBqc29uLWMgXAorICAgIGxpYmRldm1hcHBlciBcCisgICAgcG9wdCBcCisgICAgdXRpbC1saW51eCBcCisiCisKK1JERVBFTkRTXyR7UE59ID0gIiBcCisgICAgbGliZGV2bWFwcGVyIFwKKyIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzLyR7QlBOfS92JHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0uJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVsxXX0vJHtCUH0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImNlZjQ4MmMwNTc5ZjM0ZDk1MjQzMTFhYzcwYzA4NzVmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkyYWJhNGQ1NTlhMmNmNzA0M2ZhZWQ5MmUwZjIyYzVhZGRlYTM2YmQ2M2Y4YzAzOWJhNWE4ZjNhMTU5ZmU3ZDIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcGtnY29uZmlnCisKKyMgVXNlIG9wZW5zc2wgYmVjYXVzZSBsaWJnY3J5cHQgZHJvcHMgcm9vdCBwcml2aWxlZ2VzCisjIGlmIGxpYmdjcnlwdCBpcyBsaW5rZWQgd2l0aCBsaWJjYXAgc3VwcG9ydAorUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAga2V5cmluZyBcCisgICAgY3J5cHRzZXR1cCBcCisgICAgdmVyaXR5c2V0dXAgXAorICAgIGNyeXB0c2V0dXAtcmVlbmNyeXB0IFwKKyAgICBpbnRlZ3JpdHlzZXR1cCBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCcsIGQpfSBcCisgICAga2VybmVsX2NyeXB0byBcCisgICAgaW50ZXJuYWwtYXJnb24yIFwKKyAgICBibGtpZCBcCisgICAgbHVrcy1hZGp1c3QteHRzLWtleXNpemUgXAorICAgIG9wZW5zc2wgXAorIgorUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCisgICAgdWRldiBcCisiCisKK1BBQ0tBR0VDT05GSUdba2V5cmluZ10gPSAiLS1lbmFibGUta2V5cmluZywtLWRpc2FibGUta2V5cmluZyIKK1BBQ0tBR0VDT05GSUdbZmlwc10gPSAiLS1lbmFibGUtZmlwcywtLWRpc2FibGUtZmlwcyIKK1BBQ0tBR0VDT05GSUdbcHdxdWFsaXR5XSA9ICItLWVuYWJsZS1wd3F1YWxpdHksLS1kaXNhYmxlLXB3cXVhbGl0eSxsaWJwd3F1YWxpdHkiCitQQUNLQUdFQ09ORklHW3Bhc3N3ZHFjXSA9ICItLWVuYWJsZS1wYXNzd2RxYywtLWRpc2FibGUtcGFzc3dkcWMscGFzc3dkcWMiCitQQUNLQUdFQ09ORklHW2NyeXB0c2V0dXBdID0gIi0tZW5hYmxlLWNyeXB0c2V0dXAsLS1kaXNhYmxlLWNyeXB0c2V0dXAiCitQQUNLQUdFQ09ORklHW3Zlcml0eXNldHVwXSA9ICItLWVuYWJsZS12ZXJpdHlzZXR1cCwtLWRpc2FibGUtdmVyaXR5c2V0dXAiCitQQUNLQUdFQ09ORklHW2NyeXB0c2V0dXAtcmVlbmNyeXB0XSA9ICItLWVuYWJsZS1jcnlwdHNldHVwLXJlZW5jcnlwdCwtLWRpc2FibGUtY3J5cHRzZXR1cC1yZWVuY3J5cHQiCitQQUNLQUdFQ09ORklHW2ludGVncml0eXNldHVwXSA9ICItLWVuYWJsZS1pbnRlZ3JpdHlzZXR1cCwtLWRpc2FibGUtaW50ZWdyaXR5c2V0dXAiCitQQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0tZW5hYmxlLXNlbGludXgsLS1kaXNhYmxlLXNlbGludXgiCitQQUNLQUdFQ09ORklHW3VkZXZdID0gIi0tZW5hYmxlLXVkZXYsLS1kaXNhYmxlLXVkZXYsLHVkZXYiCitQQUNLQUdFQ09ORklHW2tlcm5lbF9jcnlwdG9dID0gIi0tZW5hYmxlLWtlcm5lbF9jcnlwdG8sLS1kaXNhYmxlLWtlcm5lbF9jcnlwdG8iCisjIGdjcnlwdC1wa2JkZjIgcmVxdXJpZXMgLS13aXRoLWNyeXB0b19iYWNrZW5kPWdjcnlwdCBvciB0aGUgZmxhZyBpc24ndAorIyByZWNvZ25pemVkLgorUEFDS0FHRUNPTkZJR1tnY3J5cHQtcGJrZGYyXSA9ICItLWVuYWJsZS1nY3J5cHQtcGJrZGYyIgorUEFDS0FHRUNPTkZJR1tpbnRlcm5hbC1hcmdvbjJdID0gIi0tZW5hYmxlLWludGVybmFsLWFyZ29uMiwtLWRpc2FibGUtaW50ZXJuYWwtYXJnb24yIgorUEFDS0FHRUNPTkZJR1tpbnRlcm5hbC1zc2UtYXJnb24yXSA9ICItLWVuYWJsZS1pbnRlcm5hbC1zc2UtYXJnb24yLC0tZGlzYWJsZS1pbnRlcm5hbC1zc2UtYXJnb24yIgorUEFDS0FHRUNPTkZJR1tibGtpZF0gPSAiLS1lbmFibGUtYmxraWQsLS1kaXNhYmxlLWJsa2lkLHV0aWwtbGludXgiCitQQUNLQUdFQ09ORklHW2Rldi1yYW5kb21dID0gIi0tZW5hYmxlLWRldi1yYW5kb20sLS1kaXNhYmxlLWRldi1yYW5kb20iCitQQUNLQUdFQ09ORklHW2x1a3MtYWRqdXN0LXh0cy1rZXlzaXplXSA9ICItLWVuYWJsZS1sdWtzLWFkanVzdC14dHMta2V5c2l6ZSwtLWRpc2FibGUtbHVrcy1hZGp1c3QteHRzLWtleXNpemUiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1jcnlwdG9fYmFja2VuZD1vcGVuc3NsLCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tnY3J5cHRdID0gIi0td2l0aC1jcnlwdG9fYmFja2VuZD1nY3J5cHQsLGxpYmdjcnlwdCIKK1BBQ0tBR0VDT05GSUdbbnNzXSA9ICItLXdpdGgtY3J5cHRvX2JhY2tlbmQ9bnNzLCxuc3MiCitQQUNLQUdFQ09ORklHW2tlcm5lbF0gPSAiLS13aXRoLWNyeXB0b19iYWNrZW5kPWtlcm5lbCIKK1BBQ0tBR0VDT05GSUdbbmV0dGxlXSA9ICItLXdpdGgtY3J5cHRvX2JhY2tlbmQ9bmV0dGxlLCxuZXR0bGUiCitQQUNLQUdFQ09ORklHW2x1a3MyXSA9ICItLXdpdGgtZGVmYXVsdC1sdWtzLWZvcm1hdD1MVUtTMiwtLXdpdGgtZGVmYXVsdC1sdWtzLWZvcm1hdD1MVUtTMSIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAia2VybmVsLW1vZHVsZS1hZXMtZ2VuZXJpYyBcCisgICAgICAgICAgICAgICAgICAgICBrZXJuZWwtbW9kdWxlLWRtLWNyeXB0IFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtbWQ1IFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtY2JjIFwKKyAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtc2hhMjU2LWdlbmVyaWMgXAorICAgICAgICAgICAgICAgICAgICAga2VybmVsLW1vZHVsZS14dHMgXAorIgorCitFWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc3RhdGljIgorIyBCdWlsZGluZyB3aXRob3V0IGxhcmdlZmlsZSBpcyBub3Qgc3VwcG9ydGVkIGJ5IHVwc3RyZWFtCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxhcmdlZmlsZSIKKyMgUmVxdWlyZXMgYSBzdGF0aWMgcG9wdCBsaWJyYXJ5CitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1zdGF0aWMtY3J5cHRzZXR1cCIKKyMgVGhlcmUncyBubyByZWNpcGUgZm9yIGxpYmFyZ29uMiB5ZXQKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWxpYmFyZ29uMiIKKworRklMRVNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvY3J5cHRzZXR1cC5jb25mJywgJycsIGQpfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9wa2NzMTEtaGVscGVyL3BrY3MxMS1oZWxwZXJfMS4yNS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9wa2NzMTEtaGVscGVyL3BrY3MxMS1oZWxwZXJfMS4yNS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNzFmMmVhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1jcnlwdG8vcGtjczExLWhlbHBlci9wa2NzMTEtaGVscGVyXzEuMjUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBsaWJyYXJ5IGZvciB1c2luZyBQS0NTIgotREVTQ1JJUFRJT04gPSAicGtjczExLWhlbHBlciBpcyBhIGxpYnJhcnkgdGhhdCBzaW1wbGlmaWVzIHRoZSBpbnRlcmFjdGlvbiB3aXRoIFBLQ1MgXAotcHJvdmlkZXJzIGZvciBlbmQtdXNlciBhcHBsaWNhdGlvbnMgdXNpbmcgYSBzaW1wbGUgQVBJIGFuZCBvcHRpb25hbCBPcGVuU1NMIFwKLWVuZ2luZS4gVGhlIGxpYnJhcnkgYWxsb3dzIHVzaW5nIG11bHRpcGxlIFBLQ1MgZW51bWVyYXRpbmcgYXZhaWxhYmxlIHRva2VuIFwKLWNlcnRpZmljYXRlcywgb3Igc2VsZWN0aW5nIGEgY2VydGlmaWNhdGUgZGlyZWN0bHkgYnkgc2VyaWFsaXplZCBpZCwgaGFuZGxpbmcgXAotY2FyZCByZW1vdmFsIGFuZCBjYXJkIGluc2VydCBldmVudHMsIGhhbmRsaW5nIGNhcmQgaWUtaW5zZXJ0IHRvIGEgZGlmZmVyZW50IFwKLXNsb3QsIHN1cHBvcnRpbmcgc2Vzc2lvbiBleHBpcmF0aW9uIGFuZCBtdWNoIG1vcmUgYWxsIHVzaW5nIGEgc2ltcGxlIEFQSS4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNjLXByb2plY3Qub3JnL3BrY3MxMS1oZWxwZXIvIgotU0VDVElPTiA9ICJEZXZlbG9wbWVudC9MaWJyYXJpZXMiCi0KLUxJQ0VOU0UgPSAiR1BMdjIgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gIiBcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PTMwZjEwZDIyY2ZiMWJhOThjY2Q3MTRhNDFhZDMzMTFhIFwKLSAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PThhNzFkMDQ3NWQwOGVlZTc2ZDhiNmQwYzZkYmVjNTQzIFwKLSAgICBmaWxlOi8vQ09QWUlORy5CU0Q7bWQ1PTY2YjdhMzdjM2MxMDQ4M2MxZmQ4NjAwNzcyNjEwNGQ3IFwKLSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9PcGVuU0MvJHtCUE59LmdpdCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLSMgdjEuMjUuMQotU1JDUkVWID0gIjI3MTNjYjA5ZGNkOTAxMDRjYjdiY2ViNWYxNGNkNmY5MDgzNGY3YjEiCi0KLURFUEVORFMgPSAiemxpYiBuZXR0bGUgZ251dGxzIGdtcCBvcGVuc3NsIG5zcyBuc3ByIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtY3J5cHRvL3BrY3MxMS1oZWxwZXIvcGtjczExLWhlbHBlcl8xLjI2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9wa2NzMTEtaGVscGVyL3BrY3MxMS1oZWxwZXJfMS4yNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YjZlN2NjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWNyeXB0by9wa2NzMTEtaGVscGVyL3BrY3MxMS1oZWxwZXJfMS4yNi5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIkEgbGlicmFyeSBmb3IgdXNpbmcgUEtDUyIKK0RFU0NSSVBUSU9OID0gInBrY3MxMS1oZWxwZXIgaXMgYSBsaWJyYXJ5IHRoYXQgc2ltcGxpZmllcyB0aGUgaW50ZXJhY3Rpb24gd2l0aCBQS0NTIFwKK3Byb3ZpZGVycyBmb3IgZW5kLXVzZXIgYXBwbGljYXRpb25zIHVzaW5nIGEgc2ltcGxlIEFQSSBhbmQgb3B0aW9uYWwgT3BlblNTTCBcCitlbmdpbmUuIFRoZSBsaWJyYXJ5IGFsbG93cyB1c2luZyBtdWx0aXBsZSBQS0NTIGVudW1lcmF0aW5nIGF2YWlsYWJsZSB0b2tlbiBcCitjZXJ0aWZpY2F0ZXMsIG9yIHNlbGVjdGluZyBhIGNlcnRpZmljYXRlIGRpcmVjdGx5IGJ5IHNlcmlhbGl6ZWQgaWQsIGhhbmRsaW5nIFwKK2NhcmQgcmVtb3ZhbCBhbmQgY2FyZCBpbnNlcnQgZXZlbnRzLCBoYW5kbGluZyBjYXJkIGllLWluc2VydCB0byBhIGRpZmZlcmVudCBcCitzbG90LCBzdXBwb3J0aW5nIHNlc3Npb24gZXhwaXJhdGlvbiBhbmQgbXVjaCBtb3JlIGFsbCB1c2luZyBhIHNpbXBsZSBBUEkuIgorCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zYy1wcm9qZWN0Lm9yZy9wa2NzMTEtaGVscGVyLyIKK1NFQ1RJT04gPSAiRGV2ZWxvcG1lbnQvTGlicmFyaWVzIgorCitMSUNFTlNFID0gIkdQTHYyICYgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT0zMGYxMGQyMmNmYjFiYTk4Y2NkNzE0YTQxYWQzMzExYSBcCisgICAgZmlsZTovL0NPUFlJTkcuR1BMO21kNT04YTcxZDA0NzVkMDhlZWU3NmQ4YjZkMGM2ZGJlYzU0MyBcCisgICAgZmlsZTovL0NPUFlJTkcuQlNEO21kNT02NmI3YTM3YzNjMTA0ODNjMWZkODYwMDc3MjYxMDRkNyBcCisiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vT3BlblNDLyR7QlBOfS5naXQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisjIHYxLjI2CitTUkNSRVYgPSAiYzdhMGNmYTA4ZGRjNzVkOTYzYTgzNWQzNTg4MTcwYWYwZTVmMTExNSIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAicGtjczExLWhlbHBlci0oP1A8cHZlcj5cZCsoXC5cZCspKykiCisKK0RFUEVORFMgPSAiemxpYiBuZXR0bGUgZ251dGxzIGdtcCBvcGVuc3NsIG5zcyBuc3ByIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1zdGF0aWMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYl9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL21vbmdvZGIvbW9uZ29kYl9naXQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNkOGNjZGMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9tb25nb2RiL21vbmdvZGJfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotU1VNTUFSWSA9ICJtb25nb2RiIgotTElDRU5TRSA9ICJTU1BMLTEgJiBBcGFjaGUtMi4wICYgWmxpYiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UtQ29tbXVuaXR5LnR4dDttZDU9M2E4NjVmMjdmMTFmNDNlY2JlNTQyZDllYTM4N2RjZjEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQVBBQ0hFLTIuMC50eHQ7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgotCi1ERVBFTkRTID0gIm9wZW5zc2wgbGlicGNhcCB6bGliIGJvb3N0IGN1cmwgcHl0aG9uMyBcCi0gICAgICAgICAgIHB5dGhvbjMtc2V0dXB0b29scy1uYXRpdmUgXAotICAgICAgICAgICBweXRob24zLXB5eWFtbC1uYXRpdmUgcHl0aG9uMy1jaGVldGFoLW5hdGl2ZSBcCi0gICAgICAgICAgIHB5dGhvbjMtcHN1dGlsLW5hdGl2ZSBweXRob24zLXJlZ2V4LW5hdGl2ZSBcCi0gICAgICAgICAgICIKLQotaW5oZXJpdCBzY29ucyBkb3MydW5peCBzaXRlaW5mbyBweXRob24zbmF0aXZlCi0KLVBWID0gIjQuMi4wK2dpdCR7U1JDUFZ9IgotI3Y0LjIuMAotU1JDUkVWID0gIjE4Y2U1YzlmNTZhMDFmMmM5MzNhNzIwZDY0NzA3ZjM0NTZmODFjOGIiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbW9uZ29kYi9tb25nby5naXQ7YnJhbmNoPXY0LjIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1UZWxsLXNjb25zLXRvLXVzZS1idWlsZC1zZXR0aW5ncy1mcm9tLWVudmlyb25tZW50LXZhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLWxvbmctbG9uZy1pbnN0ZWFkLW9mLWludDY0X3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtX19HTElCQ19fLXRvLWNvbnRyb2wtdXNlLW9mLWdudV9nZXRfbGliY192ZXJzaW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLWEtZGVmaW5pdGlvbi1mb3ItdGhlLW1hY3JvLV9fRUxGX05BVElWRV9DTEFTUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hcm02NC1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSW50ZWxSREZQTWF0aExpYjIwVTEtQ2hlY2stZm9yLV9fREVGSU5FRF93Y2hhcl90LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtU3VwcG9ydC1kZXByZWNhdGVkLXJlc29sdmVyLWZ1bmN0aW9ucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUZpeC11bmtub3duLXByZWZpeC1lbnYucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSJcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1hcmstb25lLW9mLXN0cmVycm9yX3ItaW1wbGVtZW50YXRpb24tZ2xpYmMtc3BlY2lmaWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtZGVmYXVsdC1zdGFjay1zaXplLXRvLTI1NksucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC13aXJlZHRpZ2VyLURpc2FibGUtc3RydG91cS1vbi1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF90b29sY2hhaW4tY2xhbmcgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1hc2lvLURvbnQtdXNlLWV4cGVyaW1lbnRhbC13aXRoLWNsYW5nLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1DT01QQVRJQkxFX0hPU1QgPz0gJyh4ODZfNjR8cG93ZXJwYzY0fGFhcmNoNjQpLiotbGludXgnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJ0Y21hbGxvYyBzeXN0ZW0tcGNyZSIKLSMgZ3BlcmZ0b29scyBjb21waWxhdGlvbiBmYWlscyBmb3IgYXJtIGJlbG93IHY3IGJlY2F1c2Ugb2YgbWlzc2luZyBzdXBwb3J0IG9mCi0jIGRtYiBvcGVyYXRpb24uIFNvIHdlIHVzZSBzeXN0ZW0tYWxsb2NhdG9yIGluc3RlYWQgb2YgdGNtYWxsb2MKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2FybXY2ID0gInRjbWFsbG9jIgotUEFDS0FHRUNPTkZJR19yZW1vdmVfbGliYy1tdXNsID0gInRjbWFsbG9jIgotCi1QQUNLQUdFQ09ORklHW3RjbWFsbG9jXSA9ICItLXVzZS1zeXN0ZW0tdGNtYWxsb2MsLS1hbGxvY2F0b3I9c3lzdGVtLGdwZXJmdG9vbHMsIgotUEFDS0FHRUNPTkZJR1tzaGVsbF0gPSAiLC0tanMtZW5naW5lPW5vbmUsLCIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtLXBjcmVdID0gIi0tdXNlLXN5c3RlbS1wY3JlLCxsaWJwY3JlLCIKLQotRVhUUkFfT0VTQ09OUyA9ICItLXByZWZpeD0ke0R9JHtwcmVmaXh9IFwKLSAgICAgICAgICAgICAgICAgTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgIExJTktGTEFHUz0nJHtMREZMQUdTfScgXAotICAgICAgICAgICAgICAgICBDWFhGTEFHUz0nJHtDWFhGTEFHU30nIFwKLSAgICAgICAgICAgICAgICAgVEFSR0VUX0FSQ0g9JHtUQVJHRVRfQVJDSH0gXAotICAgICAgICAgICAgICAgICAtLXNzbCBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS13YXJuaW5ncy1hcy1lcnJvcnMgXAotICAgICAgICAgICAgICAgICAtLXVzZS1zeXN0ZW0temxpYiBcCi0gICAgICAgICAgICAgICAgIC0tbm9zdHJpcCBcCi0gICAgICAgICAgICAgICAgIC0tZW5kaWFuPSR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdTSVRFSU5GT19FTkRJQU5ORVNTJywgJ2xlJywgJ2xpdHRsZScsICdiaWcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAtLXdpcmVkdGlnZXI9JHtAWydvZmYnLCdvbiddW2QuZ2V0VmFyKCdTSVRFSU5GT19CSVRTJykgIT0gJzMyJ119IFwKLSAgICAgICAgICAgICAgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCi0gICAgICAgICAgICAgICAgIGNvcmUiCi0KLXNjb25zX2RvX2NvbXBpbGUoKSB7Ci0gICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9zY29ucyAke1BBUkFMTEVMX01BS0V9ICR7RVhUUkFfT0VTQ09OU30gfHwgXAotICAgICAgICBkaWUgInNjb25zIGJ1aWxkIGV4ZWN1dGlvbiBmYWlsZWQuIgotfQotCi1zY29uc19kb19pbnN0YWxsKCkgewotICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vc2NvbnMgaW5zdGFsbCAke0VYVFJBX09FU0NPTlN9fHwgXAotICAgICAgICBkaWUgInNjb25zIGluc3RhbGwgZXhlY3V0aW9uIGZhaWxlZC4iCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGItbmF0aXZlXzEwLjQuMTEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGItbmF0aXZlXzEwLjQuMTIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi1uYXRpdmVfMTAuNC4xMS5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiLW5hdGl2ZV8xMC40LjEyLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiLmluYwppbmRleCAyM2RlNjlkLi45NWY1YWNiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi5pbmMKQEAgLTIxLDggKzIxLDggQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLWJyZWFrYWdlLWZyb20tbG9ja19ndWFyZC1lcnJvci02MTYxLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWxpYnJhcnktTFo0LWxvb2t1cC5wYXRjaCBcCiAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImQwZGU4ODFhYjhlYWQ0NjkyOGNhZmI3ZDU1ODUzNWMxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRjMDc2MjMyYjk5NDMzYjA5ZWIzYzZkNjJmNjA3MTkyYjM0NzRkMDIyNzAzNjk5YjhmNmFlZjRlNzlkZTNmYjkiCitTUkNfVVJJW21kNXN1bV0gPSAiOTdkN2MwZjUwOGMwNGEzMWMxMzhmZGIyNGU5NWRiYzQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmVmMWUxZDM4YWEyNTNkZDhhNTEwMDZiZDE1YWFkMTg0OTEyZmNlMzFjNDQ2YmI2OTQzNGZjZGU3MzVhYTIwOCIKIAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9NYXJpYURCL3NlcnZlci9yZWxlYXNlcyIKIApAQCAtMTY4LDYgKzE2OCwxMCBAQAogICAgIGlmIFsgLWYgJHtEfSR7ZGF0YWRpcn0vZG9jL1JFQURNRSBdOyB0aGVuCiAgICAgICAgIG12ICR7RH0ke2RhdGFkaXJ9L2RvYy9SRUFETUUgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7UE59LwogICAgIGZpCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBtdiAke0R9L2xpYi9zZWN1cml0eSAke0R9LyR7bGliZGlyfQorICAgICAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9L2xpYgorICAgIGZpCiB9CiAKIFBBQ0tBR0VTID0gIiR7UE59LWRiZyAke1BOfSBcCkBAIC0yOTksMTEgKzMwMywxNCBAQAogICAgICR7c2JpbmRpcn0vbmRiZCBcCiAgICAgJHtzYmluZGlyfS9uZGJfbWdtZCBcCiAgICAgJHtsaWJkaXJ9L3BsdWdpbi8qLnNvIFwKKyAgICAke2xpYmRpcn0vc2VjdXJpdHkvKi5zbyBcCisgICAgJHtsaWJkaXJ9L3BsdWdpbi9hdXRoX3BhbV90b29sX2Rpci9hdXRoX3BhbV90b29sIFwKICAgICAke2RhdGFkaXJ9L215c3FsLyBcCiAgICAgJHtsb2NhbHN0YXRlZGlyfS9teXNxbC8gXAogICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL215c3FsZCBcCiAgICAgJHtzeXNjb25mZGlyfS9teS5jbmYgXAogICAgICR7c3lzY29uZmRpcn0vbXkuY25mLmQvc2VydmVyLmNuZiBcCisgICAgJHtzeXNjb25mZGlyfS9zZWN1cml0eS91c2VyX21hcC5jb25mIFwKICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQiCiAKIERFU0NSSVBUSU9OXyR7UE59LWxlZnRvdmVycyA9ICJ1bnBhY2thZ2VkIGFuZCBwcm9iYWJseSB1bm5lZWRlZCBmaWxlcyBmb3IgJHtQTn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvZml4LWFybS1hdG9taWMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGIvZml4LWFybS1hdG9taWMucGF0Y2gKaW5kZXggMTg1YjdiNy4uMDViMGNmOCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiL2ZpeC1hcm0tYXRvbWljLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYi9maXgtYXJtLWF0b21pYy5wYXRjaApAQCAtMSw2ICsxLDYgQEAKLUZyb20gZmZhYWY0ZDQzZWJmMmVmNmQwMjI5YTYwZjQwN2MxZjVhMDZlNWM1MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZjQ0N2FjYTUzNGQxYTEyODA5ZWViMTQ2ZTgyMjBkMzA1Y2MzODg0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE1pbmdsaSBZdSA8bWluZ2xpLnl1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDE1IE1hciAyMDE5IDAxOjQ2OjA1IC0wNzAwCitEYXRlOiBUaHUsIDkgQXByIDIwMjAgMTQ6MDc6MTkgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gYnVpbGRfcm9ja3NkYi5jbWFrZTogZml4IGF0b21pYyBzdXBwb3J0IG9uIGFybQogCiBDaGVjayB0byBsaW5rIHdpdGggbGliYXRvbWljIHRvIGVuYWJsZSBDMTEgYXRvbWljcyBzdXBwb3J0CkBAIC0xMCwxNCArMTAsMTYgQEAKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLVNpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPG1pbmdsaS55dUB3aW5kcml2ZXIuY29tPgogLS0tCiAgc3RvcmFnZS9yb2Nrc2RiL2J1aWxkX3JvY2tzZGIuY21ha2UgfCAzICsrKwogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKIAorZGlmZiAtLWdpdCBhL3N0b3JhZ2Uvcm9ja3NkYi9idWlsZF9yb2Nrc2RiLmNtYWtlIGIvc3RvcmFnZS9yb2Nrc2RiL2J1aWxkX3JvY2tzZGIuY21ha2UKK2luZGV4IGQ3ODk1YjAuLjNiY2Q1MmEgMTAwNjQ0CiAtLS0gYS9zdG9yYWdlL3JvY2tzZGIvYnVpbGRfcm9ja3NkYi5jbWFrZQogKysrIGIvc3RvcmFnZS9yb2Nrc2RiL2J1aWxkX3JvY2tzZGIuY21ha2UKLUBAIC00NzAsNiArNDcwLDkgQEAgbGlzdChBUFBFTkQgU09VUkNFUyAke0NNQUtFX0NVUlJFTlRfQklOQQorQEAgLTQ3MCw2ICs0NzAsOSBAQCBsaXN0KEFQUEVORCBTT1VSQ0VTICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9idWlsZF92ZXJzaW9uLmNjKQogIAogIEFERF9DT05WRU5JRU5DRV9MSUJSQVJZKHJvY2tzZGJsaWIgJHtTT1VSQ0VTfSkKICB0YXJnZXRfbGlua19saWJyYXJpZXMocm9ja3NkYmxpYiAke1RISVJEUEFSVFlfTElCU30gJHtTWVNURU1fTElCU30pCkBAIC0yNSw1ICsyNyw4IEBACiArICBUQVJHRVRfTElOS19MSUJSQVJJRVMocm9ja3NkYmxpYiBhdG9taWMpCiArRU5ESUYoKQogIElGKENNQUtFX0NYWF9DT01QSUxFUl9JRCBNQVRDSEVTICJHTlUiIE9SIENNQUtFX0NYWF9DT01QSUxFUl9JRCBNQVRDSEVTICJDbGFuZyIpCi0gICBzZXRfdGFyZ2V0X3Byb3BlcnRpZXMocm9ja3NkYmxpYiBQUk9QRVJUSUVTIENPTVBJTEVfRkxBR1MgIi1mUElDIC1mbm8tYnVpbHRpbi1tZW1jbXAiKQorICAgc2V0X3RhcmdldF9wcm9wZXJ0aWVzKHJvY2tzZGJsaWIgUFJPUEVSVElFUyBDT01QSUxFX0ZMQUdTICItZlBJQyAtZm5vLWJ1aWx0aW4tbWVtY21wIC1Xbm8tZXJyb3IiKQogIGVuZGlmKCkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiXzEwLjQuMTEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL21hcmlhZGJfMTAuNC4xMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9teXNxbC9tYXJpYWRiXzEwLjQuMTEuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbWFyaWFkYl8xMC40LjEyLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL215c3FsL215c3FsLXB5dGhvbl8xLjIuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbXlzcWwtcHl0aG9uXzEuMi41LmJiCmluZGV4IGYyZmFlYzEuLjQ2MTdkYTggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbXlzcWwtcHl0aG9uXzEuMi41LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvbXlzcWwvbXlzcWwtcHl0aG9uXzEuMi41LmJiCkBAIC0xNiw0ICsxNiw5IEBACiAKIFMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgogCi1pbmhlcml0IHNldHVwdG9vbHMKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoIkJCRklMRV9DT0xMRUNUSU9OUyIsICJtZXRhLXB5dGhvbjIiLCAic2V0dXB0b29scyIsICIiLCBkKX0KKworcHl0aG9uKCkgeworICAgIGlmICdtZXRhLXB5dGhvbjInIG5vdCBpbiBkLmdldFZhcignQkJGSUxFX0NPTExFQ1RJT05TJykuc3BsaXQoKToKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgnUmVxdWlyZXMgbWV0YS1weXRob24yIHRvIGJlIHByZXNlbnQuJykKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsLmluYwppbmRleCA5MWQwMjc1Li5kMzU3MTFjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvcG9zdGdyZXNxbC5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWwuaW5jCkBAIC0zNyw3ICszNyw3IEBACiAjIExERkxBR1MgZm9yIHNoYXJlZCBsaWJyYXJpZXMKIGV4cG9ydCBMREZMQUdTX1NMID0gIiR7TERGTEFHU30iCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwZXJsbmF0aXZlIHB5dGhvbm5hdGl2ZSB1c2VyYWRkIHVwZGF0ZS1yYy5kIHN5c3RlbWQgZ2V0dGV4dCBjcGFuLWJhc2UKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwZXJsbmF0aXZlIHB5dGhvbjNuYXRpdmUgdXNlcmFkZCB1cGRhdGUtcmMuZCBzeXN0ZW1kIGdldHRleHQgY3Bhbi1iYXNlCiAKIENGTEFHUyArPSAiLUkke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9IC1JJHtTVEFHSU5HX0lOQ0RJUn0vdGNsOC42IgogCkBAIC01OCw3ICs1OCw3IEBACiBQQUNLQUdFQ09ORklHID8/PSAiJHtlbmFibGVfcGFtfSBvcGVuc3NsIHB5dGhvbiB1dWlkIGxpYnhtbCB0Y2wgbmxzIGxpYnhtbCBwZXJsIgogUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1wYW0sLS13aXRob3V0LXBhbSxsaWJwYW0sIgogUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtb3BlbnNzbCwtLXdpdGhvdXQtb3BlbnNzbCxvcGVuc3NsLCIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLXdpdGgtcHl0aG9uLC0td2l0aG91dC1weXRob24scHl0aG9uLHB5dGhvbiIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLXdpdGgtcHl0aG9uLC0td2l0aG91dC1weXRob24scHl0aG9uMyxweXRob24zIgogUEFDS0FHRUNPTkZJR1t1dWlkXSA9ICItLXdpdGgtdXVpZD1lMmZzLC0td2l0aG91dC11dWlkLHV0aWwtbGludXgsIgogUEFDS0FHRUNPTkZJR1t0Y2xdID0gIi0td2l0aC10Y2wgLS13aXRoLXRjbGNvbmZpZz0ke1NUQUdJTkdfQklORElSX0NST1NTfSwtLXdpdGhvdXQtdGNsLHRjbCB0Y2wtbmF0aXZlLCIKIFBBQ0tBR0VDT05GSUdbbmxzXSA9ICItLWVuYWJsZS1ubHMsLS1kaXNhYmxlLW5scywsIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWxfMTIuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsXzEyLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4Njg1MTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9wb3N0Z3Jlc3FsL3Bvc3RncmVzcWxfMTIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLXJlcXVpcmUgcG9zdGdyZXNxbC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT04N2RhMmI4NDg4NDg2MGI3MWY1ZjI0YWIzN2U3ZGE3OCIKLQotU1JDX1VSSSArPSAiXAotICAgZmlsZTovL25vdC1jaGVjay1saWJwZXJsLnBhdGNoIFwKLSAgIGZpbGU6Ly8wMDAxLUFkZC1zdXBwb3J0LWZvci1SSVNDLVYucGF0Y2ggXAotICAgZmlsZTovLzAwMDEtSW1wcm92ZS1yZXByb2R1Y2liaWxpdHkucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmVlMWJkNGVjNWY0OTM2M2EzZjQ1NmYwN2U1OTliNDEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTA5YmYzYWJiYWY2NzYzOTgwZDBmOGFjYmI5NDNiNzYyOWE4YjIwMDczZGUxOGQ4NjdhZWNkYjc5ODg0ODNlZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcG9zdGdyZXNxbC9wb3N0Z3Jlc3FsXzEyLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvcG9zdGdyZXNxbF8xMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MTNlNTAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3Bvc3RncmVzcWwvcG9zdGdyZXNxbF8xMi4yLmJiCkBAIC0wLDAgKzEsMTIgQEAKK3JlcXVpcmUgcG9zdGdyZXNxbC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT1mYzRjZTIxOTYwZjBjNTYxNDYwZDc1MGJjMjcwZDExZiIKKworU1JDX1VSSSArPSAiXAorICAgZmlsZTovL25vdC1jaGVjay1saWJwZXJsLnBhdGNoIFwKKyAgIGZpbGU6Ly8wMDAxLUFkZC1zdXBwb3J0LWZvci1SSVNDLVYucGF0Y2ggXAorICAgZmlsZTovLzAwMDEtSW1wcm92ZS1yZXByb2R1Y2liaWxpdHkucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYTg4Y2VlYThlY2YyNzQxMzA3ZjY2M2U0NTM5YjU4YjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWQxZGNjNGM0ZmM1MDA3ODZiNzQ1NjM1YTllMWViYTk1MDE5NWNlMjBiODkxM2Y1MDM0NWJiN2Q1MzY5YjVkZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcm9ja3NkYi9maWxlcy8wMDAxLUZpeC1idWlsZC1icmVha2FnZS1mcm9tLWxvY2tfZ3VhcmQtZXJyb3ItNjE2MS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcm9ja3NkYi9maWxlcy8wMDAxLUZpeC1idWlsZC1icmVha2FnZS1mcm9tLWxvY2tfZ3VhcmQtZXJyb3ItNjE2MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWM4N2QwYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3JvY2tzZGIvZmlsZXMvMDAwMS1GaXgtYnVpbGQtYnJlYWthZ2UtZnJvbS1sb2NrX2d1YXJkLWVycm9yLTYxNjEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIGI2MjY3MDNkZTdlY2U1MDdmMzYwNTA3ZTQ5ZDNlY2I0NDhiMTJlMDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXlzYW0gWWFiYW5kZWggPG15YWJhbmRlaEBmYi5jb20+Ci1EYXRlOiBUaHUsIDEyIERlYyAyMDE5IDEzOjQ4OjUwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCBicmVha2FnZSBmcm9tIGxvY2tfZ3VhcmQgZXJyb3IgKCM2MTYxKQotCi1TdW1tYXJ5OgotVGhpcyBjaGFuZ2UgZml4ZXMgYSBzb3VyY2UgaXNzdWUgdGhhdCBjYXVzZWQgY29tcGlsZSB0aW1lIGVycm9yIHdoaWNoIGJyZWFrcyBidWlsZCBmb3IgbWFueSBmYmNvZGUgc2VydmljZXMgaW4gdGhhdCBzZXR1cC4gVGhlIHNpemUoKSBtZW1iZXIgZnVuY3Rpb24gb2YgY2hhbm5lbCBpcyBhIGNvbnN0IG1lbWJlciwgc28gbWVtYmVyIHZhcmlhYmxlcyBhY2Nlc3NlZCB3aXRoaW4gaXQgYXJlIGltcGxpY2l0bHkgY29uc3QgYXMgd2VsbC4gVGhpcyBjYXVzZWQgZXJyb3Igd2hlbiBjbGFuZyBmYWlscyB0byByZXNvbHZlIHRvIGEgY29uc3RydWN0b3IgdGhhdCB0YWtlcyBzdGQ6Om11dGV4IGJlY2F1c2UgdGhlIHN1aXRhYmxlIGNvbnN0cnVjdG9yIGdvdCByZWplY3RlZCBkdWUgdG8gbG9zcyBvZiBjb25zdG5lc3MgZm9yIGl0cyBhcmd1bWVudC4gVGhlIGZpeCBpcyB0byBhZGQgbXV0YWJsZSBtb2RpZmllciB0byB0aGUgbG9ja18gbWVtYmVyIG9mIGNoYW5uZWwuCi1QdWxsIFJlcXVlc3QgcmVzb2x2ZWQ6IGh0dHBzOi8vZ2l0aHViLmNvbS9mYWNlYm9vay9yb2Nrc2RiL3B1bGwvNjE2MQotCi1EaWZmZXJlbnRpYWwgUmV2aXNpb246IEQxODk2NzY4NQotCi1QdWxsZWQgQnk6IG1heXNhbXlhYmFuZGVoCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotZmJzaGlwaXQtc291cmNlLWlkOiA2OThiNmE1MTUzYzNjOTJlZWFjYjg0MmM0NjdhYTI4Y2MzNTBkNDMyCi0tLS0KLSB1dGlsL2NoYW5uZWwuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3V0aWwvY2hhbm5lbC5oIGIvdXRpbC9jaGFubmVsLmgKLWluZGV4IDAyMjU0ODJjMC4uYThhNDc2ODBhIDEwMDY0NAotLS0tIGEvdXRpbC9jaGFubmVsLmgKLSsrKyBiL3V0aWwvY2hhbm5lbC5oCi1AQCAtNjAsNyArNjAsNyBAQCBjbGFzcyBjaGFubmVsIHsKLSAKLSAgcHJpdmF0ZToKLSAgIHN0ZDo6Y29uZGl0aW9uX3ZhcmlhYmxlIGN2XzsKLS0gIHN0ZDo6bXV0ZXggbG9ja187Ci0rICBtdXRhYmxlIHN0ZDo6bXV0ZXggbG9ja187Ci0gICBzdGQ6OnF1ZXVlPFQ+IGJ1ZmZlcl87Ci0gICBib29sIGVvZl87Ci0gfTsKLS0tIAotMi4yNC4xCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcm9ja3NkYi9maWxlcy8wMDAxLWNtYWtlLUFkZC1jaGVjay1mb3ItYXRvbWljLXN1cHBvcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3JvY2tzZGIvZmlsZXMvMDAwMS1jbWFrZS1BZGQtY2hlY2stZm9yLWF0b21pYy1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliZmIxZjMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3JvY2tzZGIvZmlsZXMvMDAwMS1jbWFrZS1BZGQtY2hlY2stZm9yLWF0b21pYy1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsMTE1IEBACitGcm9tIGJhMGEwZTU0ZDk1NDRiYWJiZDM5NjM4OTFmNGUzMjAwZGQ1NTgzZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAyMCAxNToxMDozNyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBjbWFrZTogQWRkIGNoZWNrIGZvciBhdG9taWMgc3VwcG9ydAorCitEZXRlY3QgaWYgbGliYXRvbWljIHNob3VsZCBiZSBsaW5rZWQgaW4gb3IgY29tcGlsZXIgYW5kIHBsYXRmb3JtIGNhbgorcHJvdmlkZSB0aGUgbmVlZGVkIGF0b21pYyBpbnN0cmluc2ljcywgdGhpcyBoZWxwcyBidWlsZCBvbiBjZXJ0YWluCitwbGF0Zm9ybXMgbGlrZSBtaXBzIG9yIGNsYW5nL2kzODYKKworRml4ZXMKKworfCAvbW50L2IveW9lL2J1aWxkL3RtcC93b3JrL21pcHMzMnIyLXlvZS1saW51eC9yb2Nrc2RiLzYuNi40LXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZS91c3IvYmluL21pcHMteW9lLWxpbnV4L21pcHMteW9lLWxpbnV4LWxkOiBsaWJyb2Nrc2RiLnNvLjYuNi40OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX2F0b21pY19leGNoYW5nZV84JworfCAvbW50L2IveW9lL2J1aWxkL3RtcC93b3JrL21pcHMzMnIyLXlvZS1saW51eC9yb2Nrc2RiLzYuNi40LXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZS91c3IvYmluL21pcHMteW9lLWxpbnV4L21pcHMteW9lLWxpbnV4LWxkOiBsaWJyb2Nrc2RiLnNvLjYuNi40OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX2F0b21pY19mZXRjaF9vcl84JworfCAvbW50L2IveW9lL2J1aWxkL3RtcC93b3JrL21pcHMzMnIyLXlvZS1saW51eC9yb2Nrc2RiLzYuNi40LXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZS91c3IvYmluL21pcHMteW9lLWxpbnV4L21pcHMteW9lLWxpbnV4LWxkOiBsaWJyb2Nrc2RiLnNvLjYuNi40OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX2F0b21pY19jb21wYXJlX2V4Y2hhbmdlXzgnCit8IC9tbnQvYi95b2UvYnVpbGQvdG1wL3dvcmsvbWlwczMycjIteW9lLWxpbnV4L3JvY2tzZGIvNi42LjQtcjAvcmVjaXBlLXN5c3Jvb3QtbmF0aXZlL3Vzci9iaW4vbWlwcy15b2UtbGludXgvbWlwcy15b2UtbGludXgtbGQ6IGxpYnJvY2tzZGIuc28uNi42LjQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fYXRvbWljX2ZldGNoX3N1Yl84JworfCAvbW50L2IveW9lL2J1aWxkL3RtcC93b3JrL21pcHMzMnIyLXlvZS1saW51eC9yb2Nrc2RiLzYuNi40LXIwL3JlY2lwZS1zeXNyb290LW5hdGl2ZS91c3IvYmluL21pcHMteW9lLWxpbnV4L21pcHMteW9lLWxpbnV4LWxkOiBsaWJyb2Nrc2RiLnNvLjYuNi40OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX2F0b21pY19sb2FkXzgnCit8IC9tbnQvYi95b2UvYnVpbGQvdG1wL3dvcmsvbWlwczMycjIteW9lLWxpbnV4L3JvY2tzZGIvNi42LjQtcjAvcmVjaXBlLXN5c3Jvb3QtbmF0aXZlL3Vzci9iaW4vbWlwcy15b2UtbGludXgvbWlwcy15b2UtbGludXgtbGQ6IGxpYnJvY2tzZGIuc28uNi42LjQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fYXRvbWljX3N0b3JlXzgnCit8IC9tbnQvYi95b2UvYnVpbGQvdG1wL3dvcmsvbWlwczMycjIteW9lLWxpbnV4L3JvY2tzZGIvNi42LjQtcjAvcmVjaXBlLXN5c3Jvb3QtbmF0aXZlL3Vzci9iaW4vbWlwcy15b2UtbGludXgvbWlwcy15b2UtbGludXgtbGQ6IGxpYnJvY2tzZGIuc28uNi42LjQ6IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fYXRvbWljX2ZldGNoX2FkZF84JworCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL2ZhY2Vib29rL3JvY2tzZGIvcHVsbC82NTU1XQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIENNYWtlTGlzdHMudHh0ICAgICAgICAgICAgICAgICAgfCAgNiArKysKKyBjbWFrZS9tb2R1bGVzL0NoZWNrQXRvbWljLmNtYWtlIHwgNjkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA3NSBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGNtYWtlL21vZHVsZXMvQ2hlY2tBdG9taWMuY21ha2UKKworLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtNzgwLDcgKzc4MCwxMyBAQCBpZihXSU4zMikKKyAgIHNldChTWVNURU1fTElCUyAke1NZU1RFTV9MSUJTfSBzaGx3YXBpLmxpYiBycGNydDQubGliKQorICAgc2V0KExJQlMgJHtST0NLU0RCX1NUQVRJQ19MSUJ9ICR7VEhJUkRQQVJUWV9MSUJTfSAke1NZU1RFTV9MSUJTfSkKKyBlbHNlKCkKKysgICMgY2hlY2sgaWYgbGlua2luZyBhZ2FpbnN0IGxpYmF0b21pYyBpcyBuZWNlc3NhcnkKKysgIGluY2x1ZGUoQ2hlY2tBdG9taWMpCisrCisgICBzZXQoU1lTVEVNX0xJQlMgJHtDTUFLRV9USFJFQURfTElCU19JTklUfSkKKysgIGlmKEhBVkVfQ1hYX0FUT01JQ19XSVRIX0xJQiBPUiBIQVZFX0NYWF9BVE9NSUNTNjRfV0lUSF9MSUIpCisrICAgIHNldChTWVNURU1fTElCUyAke1NZU1RFTV9MSUJTfSBhdG9taWMpCisrICBlbmRpZigpCisgICBzZXQoTElCUyAke1JPQ0tTREJfU0hBUkVEX0xJQn0gJHtUSElSRFBBUlRZX0xJQlN9ICR7U1lTVEVNX0xJQlN9KQorIAorICAgYWRkX2xpYnJhcnkoJHtST0NLU0RCX1NIQVJFRF9MSUJ9IFNIQVJFRCAke1NPVVJDRVN9KQorLS0tIC9kZXYvbnVsbAorKysrIGIvY21ha2UvbW9kdWxlcy9DaGVja0F0b21pYy5jbWFrZQorQEAgLTAsMCArMSw2OSBAQAorKyMgQ2hlY2tzIGlmIGF0b21pYyBvcGVyYXRpb25zIGFyZSBzdXBwb3J0ZWQgbmF0aXZlbHkgb3IgaWYgbGlua2luZyBhZ2FpbnN0CisrIyBsaWJhdG9taWMgaXMgbmVlZGVkLgorKworKyMgQ2hlY2sgaW5zcGlyZWQgYnkgTExWTXMgY21ha2UvbW9kdWxlcy9DaGVja0F0b21pYy5jbWFrZQorKworK0lOQ0xVREUoQ2hlY2tDWFhTb3VyY2VDb21waWxlcykKKytJTkNMVURFKENoZWNrTGlicmFyeUV4aXN0cykKKysKKytmdW5jdGlvbihjaGVja193b3JraW5nX2N4eF9hdG9taWNzIHZhcm5hbWUpCisrICBzZXQoT0xEX0NNQUtFX1JFUVVJUkVEX0ZMQUdTICR7Q01BS0VfUkVRVUlSRURfRkxBR1N9KQorKyAgc2V0KENNQUtFX1JFUVVJUkVEX0ZMQUdTICIke0NNQUtFX1JFUVVJUkVEX0ZMQUdTfSAtc3RkPWMrKzExIikKKysgIENIRUNLX0NYWF9TT1VSQ0VfQ09NUElMRVMoIgorKyNpbmNsdWRlIDxhdG9taWM+Cisrc3RkOjphdG9taWM8aW50PiB4OworK2ludCBtYWluKCkgeworKyAgcmV0dXJuIHg7CisrfQorKyIgJHt2YXJuYW1lfSkKKysgIHNldChDTUFLRV9SRVFVSVJFRF9GTEFHUyAke09MRF9DTUFLRV9SRVFVSVJFRF9GTEFHU30pCisrZW5kZnVuY3Rpb24oY2hlY2tfd29ya2luZ19jeHhfYXRvbWljcykKKysKKytmdW5jdGlvbihjaGVja193b3JraW5nX2N4eF9hdG9taWNzNjQgdmFybmFtZSkKKysgIHNldChPTERfQ01BS0VfUkVRVUlSRURfRkxBR1MgJHtDTUFLRV9SRVFVSVJFRF9GTEFHU30pCisrICBzZXQoQ01BS0VfUkVRVUlSRURfRkxBR1MgIi1zdGQ9YysrMTEgJHtDTUFLRV9SRVFVSVJFRF9GTEFHU30iKQorKyAgQ0hFQ0tfQ1hYX1NPVVJDRV9DT01QSUxFUygiCisrI2luY2x1ZGUgPGF0b21pYz4KKysjaW5jbHVkZSA8Y3N0ZGludD4KKytzdGQ6OmF0b21pYzx1aW50NjRfdD4geCAoMCk7Cisrc3RkOjphdG9taWM8ZG91YmxlPiB5ICgwKTsKKytpbnQgbWFpbigpIHsKKysgIHVpbnQ2NF90IGkgPSB4LmxvYWQoc3RkOjptZW1vcnlfb3JkZXJfcmVsYXhlZCk7CisrICByZXR1cm4gaW50KHkpOworK30KKysiICR7dmFybmFtZX0pCisrICBzZXQoQ01BS0VfUkVRVUlSRURfRkxBR1MgJHtPTERfQ01BS0VfUkVRVUlSRURfRkxBR1N9KQorK2VuZGZ1bmN0aW9uKGNoZWNrX3dvcmtpbmdfY3h4X2F0b21pY3M2NCkKKysKKysjIENoZWNrIGlmIGF0b21pY3Mgd29yayB3aXRob3V0IGxpYmF0b21pYworK2NoZWNrX3dvcmtpbmdfY3h4X2F0b21pY3MoSEFWRV9DWFhfQVRPTUlDU19XSVRIT1VUX0xJQikKKysKKytpZihOT1QgSEFWRV9DWFhfQVRPTUlDU19XSVRIT1VUX0xJQikKKysgIGNoZWNrX2xpYnJhcnlfZXhpc3RzKGF0b21pYyBfX2F0b21pY19mZXRjaF9hZGRfNCAiIiBIQVZFX0xJQkFUT01JQykKKysgIGlmKCBIQVZFX0xJQkFUT01JQyApCisrICAgIGxpc3QoQVBQRU5EIENNQUtFX1JFUVVJUkVEX0xJQlJBUklFUyAiYXRvbWljIikKKysgICAgY2hlY2tfd29ya2luZ19jeHhfYXRvbWljcyhIQVZFX0NYWF9BVE9NSUNTX1dJVEhfTElCKQorKyAgICBpZiAoTk9UIEhBVkVfQ1hYX0FUT01JQ1NfV0lUSF9MSUIpCisrICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiSG9zdCBjb21waWxlciBtdXN0IHN1cHBvcnQgc3RkOjphdG9taWMhIikKKysgICAgZW5kaWYoKQorKyAgZWxzZSgpCisrICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkhvc3QgY29tcGlsZXIgYXBwZWFycyB0byByZXF1aXJlIGxpYmF0b21pYywgYnV0IGNhbm5vdCBmaW5kIGl0LiIpCisrICBlbmRpZigpCisrZW5kaWYoKQorKworKyMgQ2hlY2sgaWYgNjRiaXQgYXRvbWljcyB3b3JrIHdpdGhvdXQgbGliYXRvbWljCisrY2hlY2tfd29ya2luZ19jeHhfYXRvbWljczY0KEhBVkVfQ1hYX0FUT01JQ1M2NF9XSVRIT1VUX0xJQikKKysKKytpZihOT1QgSEFWRV9DWFhfQVRPTUlDUzY0X1dJVEhPVVRfTElCKQorKyAgY2hlY2tfbGlicmFyeV9leGlzdHMoYXRvbWljIF9fYXRvbWljX2xvYWRfOCAiIiBIQVZFX0NYWF9MSUJBVE9NSUNTNjQpCisrICBpZihIQVZFX0NYWF9MSUJBVE9NSUNTNjQpCisrICAgIGxpc3QoQVBQRU5EIENNQUtFX1JFUVVJUkVEX0xJQlJBUklFUyAiYXRvbWljIikKKysgICAgY2hlY2tfd29ya2luZ19jeHhfYXRvbWljczY0KEhBVkVfQ1hYX0FUT01JQ1M2NF9XSVRIX0xJQikKKysgICAgaWYgKE5PVCBIQVZFX0NYWF9BVE9NSUNTNjRfV0lUSF9MSUIpCisrICAgICAgbWVzc2FnZShGQVRBTF9FUlJPUiAiSG9zdCBjb21waWxlciBtdXN0IHN1cHBvcnQgc3RkOjphdG9taWMhIikKKysgICAgZW5kaWYoKQorKyAgZWxzZSgpCisrICAgIG1lc3NhZ2UoRkFUQUxfRVJST1IgIkhvc3QgY29tcGlsZXIgYXBwZWFycyB0byByZXF1aXJlIGxpYmF0b21pYywgYnV0IGNhbm5vdCBmaW5kIGl0LiIpCisrICBlbmRpZigpCisrZW5kaWYoKQorKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9yb2Nrc2RiL3JvY2tzZGJfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRicy9yb2Nrc2RiL3JvY2tzZGJfZ2l0LmJiCmluZGV4IDcxM2Q1YmIuLmI5MDM4ZGYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kYnMvcm9ja3NkYi9yb2Nrc2RiX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGJzL3JvY2tzZGIvcm9ja3NkYl9naXQuYmIKQEAgLTYsMTMgKzYsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UubGV2ZWxkYjttZDU9ZmIwNGZmNTdhMTRmMzA4ZjJlZWQ0YTliODdkNDU4MzciCiAKLVNSQ1JFViA9ICI0Y2ZiZDg3YWZkMDhhMTZkZjI4NDM2ZmI5OTBlZjZiMTU0ZWU2MTE0IgotU1JDQlJBTkNIID0gIjYuNS5mYiIKLVBWID0gIjYuNS4yIgorU1JDUkVWID0gIjU1MWExMTA5MTg0OTNhMTlkMTEyNDNmNTM0MDhiOTc0ODVkZTE0MTEiCitTUkNCUkFOQ0ggPSAiNi42LmZiIgorUFYgPSAiNi42LjQiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9mYWNlYm9vay8ke0JQTn0uZ2l0O2JyYW5jaD0ke1NSQ0JSQU5DSH0gXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtYnJlYWthZ2UtZnJvbS1sb2NrX2d1YXJkLWVycm9yLTYxNjEucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1kYi13cml0ZV90aHJlYWQuY2MtSW5pdGlhbGl6ZS1zdGF0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNtYWtlLUFkZC1jaGVjay1mb3ItYXRvbWljLXN1cHBvcnQucGF0Y2ggXAogICAgICAgICAgICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKQEAgLTM5LDMgKzM5LDUgQEAKICAgICAjIGZpeCBmb3IgcWEgY2hlY2sgYnVpbGRwYXRocwogICAgIHNlZCAtaSAicyMke1JFQ0lQRV9TWVNST09UfSMjZyIgJHtEfSR7bGliZGlyfS9jbWFrZS9yb2Nrc2RiL1JvY2tzREJUYXJnZXRzLmNtYWtlCiB9CisKK0xERkxBR1NfYXBwZW5kX3Jpc2N2NjQgPSAiIC1wdGhyZWFkIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2Fic2VpbC1jcHAvYWJzZWlsLWNwcC8wMDAxLUFkZC1SSVNDVi1zdXBwb3J0LXRvLUdldFByb2dyYW1Db3VudGVyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2Fic2VpbC1jcHAvYWJzZWlsLWNwcC8wMDAxLUFkZC1SSVNDVi1zdXBwb3J0LXRvLUdldFByb2dyYW1Db3VudGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1ZWMwNzAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYWJzZWlsLWNwcC9hYnNlaWwtY3BwLzAwMDEtQWRkLVJJU0NWLXN1cHBvcnQtdG8tR2V0UHJvZ3JhbUNvdW50ZXIucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSA5ODNlZWFlMDc5Mjk0NmZlNWMwOTBmOTUxNjRjODkyZWM2ZGI1Y2M0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMTYgRmViIDIwMjAgMTY6MjI6NTMgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIFJJU0NWIHN1cHBvcnQgdG8gR2V0UHJvZ3JhbUNvdW50ZXIoKQorCitJZGVudGlmeSBQQyByZWdpc3RlciBmcm9tIHNpZ25hbCBjb250ZXh0CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vYWJzZWlsL2Fic2VpbC1jcHAvcHVsbC82MjFdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZXhhbWluZV9zdGFjay5jYyB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9leGFtaW5lX3N0YWNrLmNjIGIvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvZXhhbWluZV9zdGFjay5jYworaW5kZXggNDczOWZiYy4uZmI3NzQ1MCAxMDA2NDQKKy0tLSBhL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2V4YW1pbmVfc3RhY2suY2MKKysrKyBiL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL2V4YW1pbmVfc3RhY2suY2MKK0BAIC01Myw2ICs1Myw4IEBAIHZvaWQqIEdldFByb2dyYW1Db3VudGVyKHZvaWQqIHZ1YykgeworICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29udGV4dC0+dWNfbWNvbnRleHQuZ3BfcmVnc1szMl0pOworICNlbGlmIGRlZmluZWQoX19wb3dlcnBjX18pCisgICAgIHJldHVybiByZWludGVycHJldF9jYXN0PHZvaWQqPihjb250ZXh0LT51Y19tY29udGV4dC5yZWdzLT5uaXApOworKyNlbGlmIGRlZmluZWQoX19yaXNjdikKKysgICAgcmV0dXJuIHJlaW50ZXJwcmV0X2Nhc3Q8dm9pZCo+KGNvbnRleHQtPnVjX21jb250ZXh0Ll9fZ3JlZ3NbUkVHX1BDXSk7CisgI2VsaWYgZGVmaW5lZChfX3MzOTBfXykgJiYgIWRlZmluZWQoX19zMzkweF9fKQorICAgICByZXR1cm4gcmVpbnRlcnByZXRfY2FzdDx2b2lkKj4oY29udGV4dC0+dWNfbWNvbnRleHQucHN3LmFkZHIgJiAweDdmZmZmZmZmKTsKKyAjZWxpZiBkZWZpbmVkKF9fczM5MF9fKSAmJiBkZWZpbmVkKF9fczM5MHhfXykKKy0tIAorMi4yNS4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hYnNlaWwtY3BwL2Fic2VpbC1jcHAvMDAwMS1SZW1vdmUtbWFlcy1vcHRpb24tZnJvbS1jcm9zcy1jb21waWxhdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hYnNlaWwtY3BwL2Fic2VpbC1jcHAvMDAwMS1SZW1vdmUtbWFlcy1vcHRpb24tZnJvbS1jcm9zcy1jb21waWxhdGlvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YzQxY2Q4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2Fic2VpbC1jcHAvYWJzZWlsLWNwcC8wMDAxLVJlbW92ZS1tYWVzLW9wdGlvbi1mcm9tLWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsNTMgQEAKK0Zyb20gNzA5MjY2NjZmN2M1YzM1YWRkMzYzZTNiY2FkZTZlYWFiYWNlNzIwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNpbmFuIEtheWEgPHNpbmFuLmtheWFAbWljcm9zb2Z0LmNvbT4KK0RhdGU6IE1vbiwgMyBGZWIgMjAyMCAwMzoyNTo1NyArMDAwMAorU3ViamVjdDogW1BBVENIXSBSZW1vdmUgbWFlcyBvcHRpb24gZnJvbSBjcm9zcy1jb21waWxhdGlvbgorCistLS0KKyBhYnNsL2NvcHRzL0dFTkVSQVRFRF9BYnNlaWxDb3B0cy5jbWFrZSB8IDQgLS0tLQorIGFic2wvY29wdHMvR0VORVJBVEVEX2NvcHRzLmJ6bCAgICAgICAgIHwgNCAtLS0tCisgYWJzbC9jb3B0cy9jb3B0cy5weSAgICAgICAgICAgICAgICAgICAgfCA0IC0tLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDEyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYWJzbC9jb3B0cy9HRU5FUkFURURfQWJzZWlsQ29wdHMuY21ha2UgYi9hYnNsL2NvcHRzL0dFTkVSQVRFRF9BYnNlaWxDb3B0cy5jbWFrZQoraW5kZXggMDFiZDQwYi4uYWY5OTY5NCAxMDA2NDQKKy0tLSBhL2Fic2wvY29wdHMvR0VORVJBVEVEX0Fic2VpbENvcHRzLmNtYWtlCisrKysgYi9hYnNsL2NvcHRzL0dFTkVSQVRFRF9BYnNlaWxDb3B0cy5jbWFrZQorQEAgLTIzMCw3ICsyMzAsMyBAQCBsaXN0KEFQUEVORCBBQlNMX1JBTkRPTV9IV0FFU19NU1ZDX1g2NF9GTEFHUworICAgICAiL09iMiIKKyApCisgCistbGlzdChBUFBFTkQgQUJTTF9SQU5ET01fSFdBRVNfWDY0X0ZMQUdTCistICAgICItbWFlcyIKKy0gICAgIi1tc3NlNC4xIgorLSkKK2RpZmYgLS1naXQgYS9hYnNsL2NvcHRzL0dFTkVSQVRFRF9jb3B0cy5iemwgYi9hYnNsL2NvcHRzL0dFTkVSQVRFRF9jb3B0cy5iemwKK2luZGV4IDgyZjMzMmYuLjlhNTQ4ZDEgMTAwNjQ0CistLS0gYS9hYnNsL2NvcHRzL0dFTkVSQVRFRF9jb3B0cy5iemwKKysrKyBiL2Fic2wvY29wdHMvR0VORVJBVEVEX2NvcHRzLmJ6bAorQEAgLTIzMSw3ICsyMzEsMyBAQCBBQlNMX1JBTkRPTV9IV0FFU19NU1ZDX1g2NF9GTEFHUyA9IFsKKyAgICAgIi9PYjIiLAorIF0KKyAKKy1BQlNMX1JBTkRPTV9IV0FFU19YNjRfRkxBR1MgPSBbCistICAgICItbWFlcyIsCistICAgICItbXNzZTQuMSIsCistXQorZGlmZiAtLWdpdCBhL2Fic2wvY29wdHMvY29wdHMucHkgYi9hYnNsL2NvcHRzL2NvcHRzLnB5CitpbmRleCAwNjhhYmNlLi5jMmY3MGZiIDEwMDY0NAorLS0tIGEvYWJzbC9jb3B0cy9jb3B0cy5weQorKysrIGIvYWJzbC9jb3B0cy9jb3B0cy5weQorQEAgLTIwMywxMCArMjAzLDYgQEAgQ09QVF9WQVJTID0geworICAgICAjIHRvIGltcHJvdmUgcGVyZm9ybWFuY2Ugb2Ygc29tZSByYW5kb20gYml0IGdlbmVyYXRvcnMuCisgICAgICJBQlNMX1JBTkRPTV9IV0FFU19BUk02NF9GTEFHUyI6IFsiLW1hcmNoPWFybXY4LWErY3J5cHRvIl0sCisgICAgICJBQlNMX1JBTkRPTV9IV0FFU19BUk0zMl9GTEFHUyI6IFsiLW1mcHU9bmVvbiJdLAorLSAgICAiQUJTTF9SQU5ET01fSFdBRVNfWDY0X0ZMQUdTIjogWworLSAgICAgICAgIi1tYWVzIiwKKy0gICAgICAgICItbXNzZTQuMSIsCistICAgIF0sCisgICAgICJBQlNMX1JBTkRPTV9IV0FFU19NU1ZDX1g2NF9GTEFHUyI6IFsKKyAgICAgICAgICIvTzIiLCAgIyBNYXhpbWl6ZSBzcGVlZAorICAgICAgICAgIi9PYjIiLCAgIyBBZ2dyZXNzaXZlIGlubGluaW5nCistLSAKKzIuMjMuMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYWJzZWlsLWNwcC9hYnNlaWwtY3BwLzAwMDEtYWJzbC1hbHdheXMtdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYWJzZWlsLWNwcC9hYnNlaWwtY3BwLzAwMDEtYWJzbC1hbHdheXMtdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJiNTlkOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hYnNlaWwtY3BwL2Fic2VpbC1jcHAvMDAwMS1hYnNsLWFsd2F5cy11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIDE0MjI5ZThjNmY0MmE5NmU0ZDcyNTEyNDE5M2NlZWZhNTRlNWUxYTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCA5IEFwciAyMDIwIDEzOjA2OjI3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGFic2w6IGFsd2F5cyB1c2UgPGFzbS9zZ2lkZWZzLmg+CisKK0ZpeGVzIG1pcHMvbXVzbCBidWlsZCwgc2luY2Ugc2dpZGVmcy5oIGlzIG5vdCBwcmVzZW50IG9uIGFsbCBDIGxpYnJhcmllcworYnV0IG9uIGxpbnV4IGFzbS9zZ2lkZWZzLmggaXMgdGhlcmUgYW5kIGNvbnRhaW5zIHNhbWUgZGVmaW5pdGlvbnMsIHVzaW5nCit0aGF0IG1ha2VzIGl0IHBvcnRhYmxlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGFic2wvYmFzZS9pbnRlcm5hbC9kaXJlY3RfbW1hcC5oIHwgNiArLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9hYnNsL2Jhc2UvaW50ZXJuYWwvZGlyZWN0X21tYXAuaCBiL2Fic2wvYmFzZS9pbnRlcm5hbC9kaXJlY3RfbW1hcC5oCitpbmRleCAyZTVlNDIyLi5jNTE1MzI1IDEwMDY0NAorLS0tIGEvYWJzbC9iYXNlL2ludGVybmFsL2RpcmVjdF9tbWFwLmgKKysrKyBiL2Fic2wvYmFzZS9pbnRlcm5hbC9kaXJlY3RfbW1hcC5oCitAQCAtNDEsMTMgKzQxLDkgQEAKKyAKKyAjaWZkZWYgX19taXBzX18KKyAvLyBJbmNsdWRlIGRlZmluaXRpb25zIG9mIHRoZSBBQkkgY3VycmVudGx5IGluIHVzZS4KKy0jaWZkZWYgX19CSU9OSUNfXworLS8vIEFuZHJvaWQgZG9lc24ndCBoYXZlIHNnaWRlZnMuaCwgYnV0IGRvZXMgaGF2ZSBhc20vc2dpZGVmcy5oLCB3aGljaCBoYXMgdGhlCisrLy8gYmlvbmljL211c2wgQyBsaWJzIGRvbid0IGhhdmUgc2dpZGVmcy5oLCBidXQgZG8gaGF2ZSBhc20vc2dpZGVmcy5oLCB3aGljaCBoYXMgdGhlCisgLy8gZGVmaW5pdGlvbnMgd2UgbmVlZC4KKyAjaW5jbHVkZSA8YXNtL3NnaWRlZnMuaD4KKy0jZWxzZQorLSNpbmNsdWRlIDxzZ2lkZWZzLmg+CistI2VuZGlmICAvLyBfX0JJT05JQ19fCisgI2VuZGlmICAvLyBfX21pcHNfXworIAorIC8vIFNZU19tbWFwIGFuZCBTWVNfbXVubWFwIGFyZSBub3QgZGVmaW5lZCBpbiBBbmRyb2lkLgorLS0gCisyLjI2LjAKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2Fic2VpbC1jcHAvYWJzZWlsLWNwcC8wMDAyLUFkZC1mb3Jnb3R0ZW4tQUJTTF9IQVZFX1ZEU09fU1VQUE9SVC1jb25kaXRpb25hbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hYnNlaWwtY3BwL2Fic2VpbC1jcHAvMDAwMi1BZGQtZm9yZ290dGVuLUFCU0xfSEFWRV9WRFNPX1NVUFBPUlQtY29uZGl0aW9uYWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFiNGE3MwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hYnNlaWwtY3BwL2Fic2VpbC1jcHAvMDAwMi1BZGQtZm9yZ290dGVuLUFCU0xfSEFWRV9WRFNPX1NVUFBPUlQtY29uZGl0aW9uYWwucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSA5Mzg0NzM1MzgzYTBiODY4OGUzZjA1ZWQyM2E1M2YxODg2M2VhZTIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2luYW4gS2F5YSA8c2luYW4ua2F5YUBtaWNyb3NvZnQuY29tPgorRGF0ZTogVHVlLCAxMSBGZWIgMjAyMCAxMTozNjowMCAtMDUwMAorU3ViamVjdDogW1BBVENIXSBBZGQgZm9yZ290dGVuIEFCU0xfSEFWRV9WRFNPX1NVUFBPUlQgY29uZGl0aW9uYWwKKworU2lnbmVkLW9mZi1ieTogU2luYW4gS2F5YSA8c2luYW4ua2F5YUBtaWNyb3NvZnQuY29tPgorLS0tCisgYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV94ODYtaW5sLmluYyB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2Fic2wvZGVidWdnaW5nL2ludGVybmFsL3N0YWNrdHJhY2VfeDg2LWlubC5pbmMgYi9hYnNsL2RlYnVnZ2luZy9pbnRlcm5hbC9zdGFja3RyYWNlX3g4Ni1pbmwuaW5jCitpbmRleCBmZjBmZDMxLi4yODYwN2MzIDEwMDY0NAorLS0tIGEvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV94ODYtaW5sLmluYworKysrIGIvYWJzbC9kZWJ1Z2dpbmcvaW50ZXJuYWwvc3RhY2t0cmFjZV94ODYtaW5sLmluYworQEAgLTE3MSw2ICsxNzEsNyBAQCBzdGF0aWMgdm9pZCAqKk5leHRTdGFja0ZyYW1lKHZvaWQgKipvbGRfZnAsIGNvbnN0IHZvaWQgKnVjKSB7CisgICAgIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBjaGFyICprZXJuZWxfcnRfc2lncmV0dXJuX2FkZHJlc3MgPSBudWxscHRyOworICAgICBzdGF0aWMgY29uc3QgdW5zaWduZWQgY2hhciAqa2VybmVsX3ZzeXNjYWxsX2FkZHJlc3MgPSBudWxscHRyOworICAgICBpZiAobnVtX3B1c2hfaW5zdHJ1Y3Rpb25zID09IC0xKSB7CisrI2lmZGVmIEFCU0xfSEFWRV9WRFNPX1NVUFBPUlQKKyAgICAgICBhYnNsOjpkZWJ1Z2dpbmdfaW50ZXJuYWw6OlZEU09TdXBwb3J0IHZkc287CisgICAgICAgaWYgKHZkc28uSXNQcmVzZW50KCkpIHsKKyAgICAgICAgIGFic2w6OmRlYnVnZ2luZ19pbnRlcm5hbDo6VkRTT1N1cHBvcnQ6OlN5bWJvbEluZm8KK0BAIC0xOTksNiArMjAwLDkgQEAgc3RhdGljIHZvaWQgKipOZXh0U3RhY2tGcmFtZSh2b2lkICoqb2xkX2ZwLCBjb25zdCB2b2lkICp1YykgeworICAgICAgIH0gZWxzZSB7CisgICAgICAgICBudW1fcHVzaF9pbnN0cnVjdGlvbnMgPSAwOworICAgICAgIH0KKysjZWxzZQorKyAgICAgIG51bV9wdXNoX2luc3RydWN0aW9ucyA9IDA7CisrI2VuZGlmCisgICAgIH0KKyAgICAgaWYgKG51bV9wdXNoX2luc3RydWN0aW9ucyAhPSAwICYmIGtlcm5lbF9ydF9zaWdyZXR1cm5fYWRkcmVzcyAhPSBudWxscHRyICYmCisgICAgICAgICBvbGRfZnBbMV0gPT0ga2VybmVsX3J0X3NpZ3JldHVybl9hZGRyZXNzKSB7CistLSAKKzIuMjAuMS53aW5kb3dzLjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2Fic2VpbC1jcHAvYWJzZWlsLWNwcC8wMDAzLUFkZC1mUElDLW9wdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hYnNlaWwtY3BwL2Fic2VpbC1jcHAvMDAwMy1BZGQtZlBJQy1vcHRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmI3ODgxMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hYnNlaWwtY3BwL2Fic2VpbC1jcHAvMDAwMy1BZGQtZlBJQy1vcHRpb24ucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBkNzE2MGQ2NDdjOGY4ODQ3ZjNlYThkN2IwZWIyMjI5MzY5NjJjMWFmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2luYW4gS2F5YSA8c2luYW4ua2F5YUBtaWNyb3NvZnQuY29tPgorRGF0ZTogVHVlLCAxMSBGZWIgMjAyMCAxMTo1ODowMiAtMDUwMAorU3ViamVjdDogW1BBVENIXSBBZGQgZlBJQyBvcHRpb24KKworU2lnbmVkLW9mZi1ieTogU2luYW4gS2F5YSA8c2luYW4ua2F5YUBtaWNyb3NvZnQuY29tPgorLS0tCisgQ01ha2VMaXN0cy50eHQgfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IDc0YTNhNGMuLjRmODM3YjMgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC03OSw2ICs3OSw5IEBAIG9wdGlvbihBQlNMX1VTRV9HT09HTEVURVNUX0hFQUQKKyAKKyBvcHRpb24oQUJTTF9SVU5fVEVTVFMgIklmIE9OLCBBYnNlaWwgdGVzdHMgd2lsbCBiZSBydW4uIiBPRkYpCisgCisrIyBsaW5rIGZhaWxzIG9uIGFybTY0IGFuZCB4ODYtNjQgd2l0aG91dCB0aGlzCisrYWRkX2NvbXBpbGVfb3B0aW9ucygtZlBJQykKKysKKyBpZigke0FCU0xfUlVOX1RFU1RTfSkKKyAgICMgZW5hYmxlIENUZXN0LiAgVGhpcyB3aWxsIHNldCBCVUlMRF9URVNUSU5HIHRvIE9OIHVubGVzcyBvdGhlcndpc2Ugc3BlY2lmaWVkCisgICAjIG9uIHRoZSBjb21tYW5kIGxpbmUKKy0tIAorMi4yMC4xLndpbmRvd3MuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYWJzZWlsLWNwcC9hYnNlaWwtY3BwX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hYnNlaWwtY3BwL2Fic2VpbC1jcHBfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlhNDQxMzMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYWJzZWlsLWNwcC9hYnNlaWwtY3BwX2dpdC5iYgpAQCAtMCwwICsxLDU3IEBACitTVU1NQVJZID0gIkFic2VpbCBpcyBhIGNwcCBsaWJyYXJ5IGxpa2UgU1RMIgorREVTQ1JJUFRJT04gPSAiQWJzZWlsIHByb3ZpZGVzIHBpZWNlcyBtaXNzaW5nIGZyb20gdGhlIEMrKyBzdGFuZGFyZC4gQ29udGFpbnMgXAorYWRkaXRpb25hbCB1c2VmdWwgbGlicmFyaWVzIGxpa2UgYWxnb3JpdGhtLCBjb250YWluZXIsIGRlYnVnZ2luZywgaGFzaCwgbWVtb3J5LCBcCittZXRhLCBudW1lcmljLCBzdHJpbmdzLCBzeW5jaHJvbml6YXRpb24sIHRpbWUsIHR5cGVzIGFuZCB1dGlsaXR5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9hYnNlaWwuaW8vIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZGY1MmM2ZWRiN2FkYzIyZTUzM2IyYmFjYzNiZDM5MTUiCisKK1BWID0gIjIwMTkwODA4K2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gImFhODQ0ODk5YzkzN2JkZTVkMmIyNGYyNzZiNTk5OTdlNWI2NjhiZGUiCitCUkFOQ0ggPSAibHRzXzIwMTlfMDhfMDgiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYWJzZWlsL2Fic2VpbC1jcHA7YnJhbmNoPSR7QlJBTkNIfSAgICAgICAgICAgICAgICBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1tYWVzLW9wdGlvbi1mcm9tLWNyb3NzLWNvbXBpbGF0aW9uLnBhdGNoICAgICAgICBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1mb3Jnb3R0ZW4tQUJTTF9IQVZFX1ZEU09fU1VQUE9SVC1jb25kaXRpb25hbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUFkZC1mUElDLW9wdGlvbi5wYXRjaCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1SSVNDVi1zdXBwb3J0LXRvLUdldFByb2dyYW1Db3VudGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYWJzbC1hbHdheXMtdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2ggXAorICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBsaWJleGVjaW5mbyAiCisKK0FTTkVFREVEX2NsYXNzLW5hdGl2ZSA9ICIiCitBU05FRURFRF9jbGFzcy1uYXRpdmVzZGsgPSAiIgorCitpbmhlcml0IGNtYWtlCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK3B5dGhvbiAoKSB7CisgICAgYXJjaCA9IGQuZ2V0VmFyKCJUQVJHRVRfQVJDSCIpCisKKyAgICBpZiBhcmNoID09ICJhYXJjaDY0IjoKKyAgICAgICAgdHVuZXMgPSBkLmdldFZhcigiVFVORV9GRUFUVVJFUyIpCisgICAgICAgIGlmIG5vdCB0dW5lczoKKyAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCIlcy0lcyBOZWVkcyBzdXBwb3J0IGZvciBjcnlwdG8gb24gYXJtdjgiICUgKHBrZ24sIHBrZ3YpKQorICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHBrZ24gPSBkLmdldFZhcigiUE4iKQorICAgICAgICBwa2d2ID0gZC5nZXRWYXIoIlBWIikKKyAgICAgICAgaWYgImNyeXB0byIgbm90IGluIHR1bmVzOgorICAgICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFBhY2thZ2UoIiVzLSVzIE5lZWRzIHN1cHBvcnQgZm9yIGNyeXB0byBvbiBhcm12OCIgJSAocGtnbiwgcGtndikpCisKKyAgICBpZiBhcmNoID09ICJ4ODZfNjQiOgorICAgICAgICB0dW5lcyA9IGQuZ2V0VmFyKCJUVU5FX0ZFQVRVUkVTIikKKyAgICAgICAgaWYgbm90IHR1bmVzOgorICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUGFja2FnZSgiJXMtJXMgTmVlZHMgc3VwcG9ydCBmb3IgY29yZWk3IG9uIHg4Nl82NCIgJSAocGtnbiwgcGtndikpCisgICAgICAgICAgIHJldHVybgorICAgICAgICBwa2duID0gZC5nZXRWYXIoIlBOIikKKyAgICAgICAgcGtndiA9IGQuZ2V0VmFyKCJQViIpCisgICAgICAgIGlmICJjb3JlaTciIG5vdCBpbiB0dW5lczoKKyAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBQYWNrYWdlKCIlcy0lcyBOZWVkcyBzdXBwb3J0IGZvciBjb3JlaTcgb24geDg2XzY0IiAlIChwa2duLCBwa2d2KSkKKworfQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2J1aWxkLzAwMDEtUmlzY3YtQWRkLXJpc2Mtdi1BbmRyb2lkLWNvbmZpZy1oZWFkZXIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzL2J1aWxkLzAwMDEtUmlzY3YtQWRkLXJpc2Mtdi1BbmRyb2lkLWNvbmZpZy1oZWFkZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdjNDQzYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvYnVpbGQvMDAwMS1SaXNjdi1BZGQtcmlzYy12LUFuZHJvaWQtY29uZmlnLWhlYWRlci5wYXRjaApAQCAtMCwwICsxLDM1OSBAQAorRnJvbSA4MmRjZTEzZWE3YjViMzFjNjM4NTFiZDY3ZjY2MDcyNDEzOTE3ZTczIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbnhpIE1hbyA8bWFvY2hlbnhpQGVzd2luLmNvbT4KK0RhdGU6IE1vbiwgMjAgQXByIDIwMjAgMTU6MzI6NDAgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAxLzFdIFJpc2N2OiBBZGQgcmlzYy12IEFuZHJvaWQgY29uZmlnIGhlYWRlcgorCistLS0KKyAuLi4vYXJjaC9saW51eC1yaXNjdjY0L0FuZHJvaWRDb25maWcuaCAgICAgICAgfCAzNDAgKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDM0MCBpbnNlcnRpb25zKCspCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGNvcmUvY29tYm8vaW5jbHVkZS9hcmNoL2xpbnV4LXJpc2N2NjQvQW5kcm9pZENvbmZpZy5oCisKK2RpZmYgLS1naXQgYS9jb3JlL2NvbWJvL2luY2x1ZGUvYXJjaC9saW51eC1yaXNjdjY0L0FuZHJvaWRDb25maWcuaCBiL2NvcmUvY29tYm8vaW5jbHVkZS9hcmNoL2xpbnV4LXJpc2N2NjQvQW5kcm9pZENvbmZpZy5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uYmNiZGE4Zjg3ZgorLS0tIC9kZXYvbnVsbAorKysrIGIvY29yZS9jb21iby9pbmNsdWRlL2FyY2gvbGludXgtcmlzY3Y2NC9BbmRyb2lkQ29uZmlnLmgKK0BAIC0wLDAgKzEsMzQwIEBACisrLyoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTMgVGhlIEFuZHJvaWQgT3BlbiBTb3VyY2UgUHJvamVjdAorKyAqCisrICogTGljZW5zZWQgdW5kZXIgdGhlIEFwYWNoZSBMaWNlbnNlLCBWZXJzaW9uIDIuMCAodGhlICJMaWNlbnNlIik7CisrICogeW91IG1heSBub3QgdXNlIHRoaXMgZmlsZSBleGNlcHQgaW4gY29tcGxpYW5jZSB3aXRoIHRoZSBMaWNlbnNlLgorKyAqIFlvdSBtYXkgb2J0YWluIGEgY29weSBvZiB0aGUgTGljZW5zZSBhdAorKyAqCisrICogICAgICBodHRwOi8vd3d3LmFwYWNoZS5vcmcvbGljZW5zZXMvTElDRU5TRS0yLjAKKysgKgorKyAqIFVubGVzcyByZXF1aXJlZCBieSBhcHBsaWNhYmxlIGxhdyBvciBhZ3JlZWQgdG8gaW4gd3JpdGluZywgc29mdHdhcmUKKysgKiBkaXN0cmlidXRlZCB1bmRlciB0aGUgTGljZW5zZSBpcyBkaXN0cmlidXRlZCBvbiBhbiAiQVMgSVMiIEJBU0lTLAorKyAqIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBDT05ESVRJT05TIE9GIEFOWSBLSU5ELCBlaXRoZXIgZXhwcmVzcyBvciBpbXBsaWVkLgorKyAqIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKysgKiBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KKysgKi8KKysKKysvKgorKyAqIEFuZHJvaWQgY29uZmlnIC0tICJhbmRyb2lkLWFhcmNoNjQiLiAgVXNlZCBmb3IgQVJNIGFhcmNoNjQgZGV2aWNlIGJ1aWxkcy4KKysgKi8KKysjaWZuZGVmIF9BTkRST0lEX0NPTkZJR19ICisrI2RlZmluZSBfQU5EUk9JRF9DT05GSUdfSAorKworKy8qCisrICogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAhISEgSU1QT1JUQU5UICEhIQorKyAqID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorKyAqCisrICogVGhpcyBmaWxlIGlzIGluY2x1ZGVkIGJ5IEFMTCBDL0MrKyBzb3VyY2UgZmlsZXMuICBEb24ndCBwdXQgYW55dGhpbmcgaW4KKysgKiBoZXJlIHVubGVzcyB5b3UgYXJlIGFic29sdXRlbHkgY2VydGFpbiBpdCBjYW4ndCBnbyBhbnl3aGVyZSBlbHNlLgorKyAqCisrICogQW55IEMrKyBzdHVmZiBtdXN0IGJlIHdyYXBwZWQgd2l0aCAiI2lmZGVmIF9fY3BsdXNwbHVzIi4gIERvIG5vdCB1c2UgIi8vIgorKyAqIGNvbW1lbnRzLgorKyAqLworKworKy8qCisrICogVGhyZWFkaW5nIG1vZGVsLiAgQ2hvb3NlIG9uZToKKysgKgorKyAqIEhBVkVfUFRIUkVBRFMgLSB1c2UgdGhlIHB0aHJlYWRzIGxpYnJhcnkuCisrICogSEFWRV9XSU4zMl9USFJFQURTIC0gdXNlIFdpbjMyIHRocmVhZCBwcmltaXRpdmVzLgorKyAqICAtLSBjb21iaW5lIEhBVkVfQ1JFQVRFVEhSRUFELCBIQVZFX0NSRUFURU1VVEVYLCBhbmQgSEFWRV9fQkVHSU5USFJFQURFWAorKyAqLworKyNkZWZpbmUgSEFWRV9QVEhSRUFEUworKworKy8qCisrICogRG8gd2UgaGF2ZSBwdGhyZWFkX3NldG5hbWVfbnAoKT8KKysgKgorKyAqIChIQVZFX1BUSFJFQURfU0VUTkFNRV9OUCBpcyB1c2VkIGJ5IFdlYktpdCB0byBlbmFibGUgYSBmdW5jdGlvbiB3aXRoCisrICogdGhlIHNhbWUgbmFtZSBidXQgZGlmZmVyZW50IHBhcmFtZXRlcnMsIHNvIHdlIGNhbid0IHVzZSB0aGF0IGhlcmUuKQorKyAqLworKyNkZWZpbmUgSEFWRV9BTkRST0lEX1BUSFJFQURfU0VUTkFNRV9OUAorKworKy8qCisrICogRG8gd2UgaGF2ZSB0aGUgZnV0ZXggc3lzY2FsbD8KKysgKi8KKysjZGVmaW5lIEhBVkVfRlVURVgKKysKKysvKgorKyAqIFByb2Nlc3MgY3JlYXRpb24gbW9kZWwuICBDaG9vc2Ugb25lOgorKyAqCisrICogSEFWRV9GT1JLRVhFQyAtIHVzZSBmb3JrKCkgYW5kIGV4ZWMoKQorKyAqIEhBVkVfV0lOMzJfUFJPQyAtIHVzZSBDcmVhdGVQcm9jZXNzKCkKKysgKi8KKysjZGVmaW5lIEhBVkVfRk9SS0VYRUMKKysKKysvKgorKyAqIFByb2Nlc3Mgb3V0LW9mLW1lbW9yeSBhZGp1c3RtZW50LiAgU2V0IGlmIHJ1bm5pbmcgb24gTGludXgsCisrICogd2hlcmUgd2UgY2FuIHdyaXRlIHRvIC9wcm9jLzxwaWQ+L29vbV9hZGogdG8gbW9kaWZ5IHRoZSBvdXQtb2YtbWVtb3J5CisrICogYmFkbmVzcyBhZGp1c3RtZW50LgorKyAqLworKyNkZWZpbmUgSEFWRV9PT01fQURKCisrCisrLyoKKysgKiBJUEMgbW9kZWwuICBDaG9vc2Ugb25lOgorKyAqCisrICogSEFWRV9TWVNWX0lQQyAtIHVzZSB0aGUgY2xhc3NpYyBTeXNWIElQQyBtZWNoYW5pc21zIChzZW1nZXQsIHNobWdldCkuCisrICogSEFWRV9NQUNPU1hfSVBDIC0gdXNlIE1hY2ludG9zaCBJUEMgbWVjaGFuaXNtcyAoc2VtX29wZW4sIG1tYXApLgorKyAqIEhBVkVfV0lOMzJfSVBDIC0gdXNlIFdpbjMyIElQQyAoQ3JlYXRlU2VtYXBob3JlLCBDcmVhdGVGaWxlTWFwcGluZykuCisrICogSEFWRV9BTkRST0lEX0lQQyAtIHVzZSBBbmRyb2lkIHZlcnNpb25zICg/LCBtbWFwKS4KKysgKi8KKysjZGVmaW5lIEhBVkVfQU5EUk9JRF9JUEMKKysKKysvKgorKyAqIE1lbW9yeS1tYXBwaW5nIG1vZGVsLiBDaG9vc2Ugb25lOgorKyAqCisrICogSEFWRV9QT1NJWF9GSUxFTUFQIC0gdXNlIHRoZSBQb3NpeCBzeXMvbW1hcC5oCisrICogSEFWRV9XSU4zMl9GSUxFTUFQIC0gdXNlIFdpbjMyIGZpbGVtYXBzCisrICovCisrI2RlZmluZSAgSEFWRV9QT1NJWF9GSUxFTUFQCisrCisrLyoKKysgKiBEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSA8dGVybWlvLmg+CisrICovCisrI2RlZmluZSAgSEFWRV9URVJNSU9fSCAxCisrCisrLyoKKysgKiBEZWZpbmUgdGhpcyBpZiB5b3UgaGF2ZSA8c3lzL3NlbmRmaWxlLmg+CisrICovCisrI2RlZmluZSAgSEFWRV9TWVNfU0VOREZJTEVfSCAxCisrCisrLyoKKysgKiBEZWZpbmUgdGhpcyBpZiB5b3UgYnVpbGQgYWdhaW5zdCBNU1ZDUlQuRExMCisrICovCisrLyogI2RlZmluZSBIQVZFX01TX0NfUlVOVElNRSAqLworKworKy8qCisrICogRGVmaW5lIHRoaXMgaWYgeW91IGhhdmUgc3lzL3Vpby5oCisrICovCisrI2RlZmluZSAgSEFWRV9TWVNfVUlPX0ggMQorKworKy8qCisrICogRGVmaW5lIHRoaXMgaWYgeW91ciBwbGF0Zm9ybXMgaW1wbGVtZW50cyBzeW1ib2xpYyBsaW5rcworKyAqIGluIGl0cyBmaWxlc3lzdGVtcworKyAqLworKyNkZWZpbmUgSEFWRV9TWU1MSU5LUworKworKy8qCisrICogRGVmaW5lIHRoaXMgaWYgd2UgaGF2ZSBsb2NhbHRpbWVfcigpLgorKyAqLworKy8qICNkZWZpbmUgSEFWRV9MT0NBTFRJTUVfUiAxICovCisrCisrLyoKKysgKiBEZWZpbmUgdGhpcyBpZiB3ZSBoYXZlIGdldGhvc3RieW5hbWVfcigpLgorKyAqLworKy8qICNkZWZpbmUgSEFWRV9HRVRIT1NUQllOQU1FX1IgKi8KKysKKysvKgorKyAqIERlZmluZSB0aGlzIGlmIHdlIGhhdmUgaW9jdGwoKS4KKysgKi8KKysjZGVmaW5lIEhBVkVfSU9DVEwKKysKKysvKgorKyAqIERlZmluZSB0aGlzIGlmIHdlIHdhbnQgdG8gdXNlIFdpblNvY2suCisrICovCisrLyogI2RlZmluZSBIQVZFX1dJTlNPQ0sgKi8KKysKKysvKgorKyAqIERlZmluZSB0aGlzIGlmIGhhdmUgY2xvY2tfZ2V0dGltZSgpIGFuZCBmcmllbmRzCisrICovCisrI2RlZmluZSBIQVZFX1BPU0lYX0NMT0NLUworKworKy8qCisrICogRGVmaW5lIHRoaXMgaWYgd2UgaGF2ZSBsaW51eCBzdHlsZSBlcG9sbCgpCisrICovCisrI2RlZmluZSBIQVZFX0VQT0xMCisrCisrLyoKKysgKiBFbmRpYW5uZXNzIG9mIHRoZSB0YXJnZXQgbWFjaGluZS4gIENob29zZSBvbmU6CisrICoKKysgKiBIQVZFX0VORElBTl9IIC0tIGhhdmUgZW5kaWFuLmggaGVhZGVyIHdlIGNhbiBpbmNsdWRlLgorKyAqIEhBVkVfTElUVExFX0VORElBTiAtLSB3ZSBhcmUgbGl0dGxlIGVuZGlhbi4KKysgKiBIQVZFX0JJR19FTkRJQU4gLS0gd2UgYXJlIGJpZyBlbmRpYW4uCisrICovCisrI2RlZmluZSBIQVZFX0VORElBTl9ICisrI2RlZmluZSBIQVZFX0xJVFRMRV9FTkRJQU4KKysKKysjZGVmaW5lIF9GSUxFX09GRlNFVF9CSVRTIDY0CisrLyogI2RlZmluZSBfTEFSR0VGSUxFX1NPVVJDRSAxICovCisrCisrLyoKKysgKiBEZWZpbmUgaWYgcGxhdGZvcm0gaGFzIG9mZjY0X3QgKGFuZCBsc2VlazY0IGFuZCBvdGhlciB4eHg2NCBmdW5jdGlvbnMpCisrICovCisrI2RlZmluZSBIQVZFX09GRjY0X1QKKysKKysvKgorKyAqIERlZmluZWQgaWYgd2UgaGF2ZSB0aGUgYmFja3RyYWNlKCkgY2FsbCBmb3IgcmV0cmlldmluZyBhIHN0YWNrIHRyYWNlLgorKyAqIE5lZWRlZCBmb3IgQ2FsbFN0YWNrIHRvIG9wZXJhdGU7IGlmIG5vdCBkZWZpbmVkLCBDYWxsU3RhY2sgaXMKKysgKiBub24tZnVuY3Rpb25hbC4KKysgKi8KKysjZGVmaW5lIEhBVkVfQkFDS1RSQUNFIDAKKysKKysvKgorKyAqIERlZmluZWQgaWYgd2UgaGF2ZSB0aGUgY3h4YWJpLmggaGVhZGVyIGZvciBkZW1hbmdsaW5nIEMrKyBzeW1ib2xzLiAgSWYKKysgKiBub3QgZGVmaW5lZCwgc3RhY2sgY3Jhd2xzIHdpbGwgYmUgZGlzcGxheWVkIHdpdGggcmF3IG1hbmdsZWQgc3ltYm9scworKyAqLworKyNkZWZpbmUgSEFWRV9DWFhBQkkgMAorKworKy8qCisrICogRGVmaW5lZCBpZiB3ZSBoYXZlIHRoZSBnZXR0aWQoKSBzeXN0ZW0gY2FsbC4KKysgKi8KKysjZGVmaW5lIEhBVkVfR0VUVElECisrCisrLyoKKysgKiBEZWZpbmVkIGlmIHdlIGhhdmUgdGhlIHNjaGVkX3NldHNjaGVkdWxlcigpIGNhbGwKKysgKi8KKysjZGVmaW5lIEhBVkVfU0NIRURfU0VUU0NIRURVTEVSCisrCisrLyoKKysgKiBBZGQgYW55IGV4dHJhIHBsYXRmb3JtLXNwZWNpZmljIGRlZmluZXMgaGVyZS4KKysgKi8KKysjaWZuZGVmIF9fbGludXhfXworKyNkZWZpbmUgX19saW51eF9fCisrI2VuZGlmCisrCisrLyoKKysgKiBEZWZpbmUgaWYgd2UgaGF2ZSA8bWFsbG9jLmg+IGhlYWRlcgorKyAqLworKyNkZWZpbmUgSEFWRV9NQUxMT0NfSAorKworKy8qCisrICogRGVmaW5lIGlmIHdlJ3JlIHJ1bm5pbmcgb24gKm91ciogbGludXggb24gZGV2aWNlIG9yIGVtdWxhdG9yLgorKyAqLworKyNkZWZpbmUgSEFWRV9BTkRST0lEX09TIDEKKysKKysvKgorKyAqIERlZmluZSBpZiB3ZSBoYXZlIExpbnV4LXN0eWxlIG5vbi1maWxlc3lzdGVtIFVuaXggRG9tYWluIFNvY2tldHMKKysgKi8KKysjZGVmaW5lIEhBVkVfTElOVVhfTE9DQUxfU09DS0VUX05BTUVTUEFDRSAxCisrCisrLyoKKysgKiBEZWZpbmUgaWYgd2UgaGF2ZSBMaW51eCdzIGlub3RpZnkgaW4gPHN5cy9pbm90aWZ5Lmg+LgorKyAqLworKyNkZWZpbmUgSEFWRV9JTk9USUZZIDEKKysKKysvKgorKyAqIERlZmluZSBpZiB3ZSBoYXZlIG1hZHZpc2UoKSBpbiA8c3lzL21tYW4uaD4KKysgKi8KKysjZGVmaW5lIEhBVkVfTUFEVklTRSAxCisrCisrLyoKKysgKiBEZWZpbmUgaWYgdG0gc3RydWN0IGhhcyB0bV9nbXRvZmYgZmllbGQKKysgKi8KKysjZGVmaW5lIEhBVkVfVE1fR01UT0ZGIDEKKysKKysvKgorKyAqIERlZmluZSBpZiBkaXJlbnQgc3RydWN0IGhhcyBkX3R5cGUgZmllbGQKKysgKi8KKysjZGVmaW5lIEhBVkVfRElSRU5UX0RfVFlQRSAxCisrCisrLyoKKysgKiBEZWZpbmUgaWYgbGliYyBpbmNsdWRlcyBBbmRyb2lkIHN5c3RlbSBwcm9wZXJ0aWVzIGltcGxlbWVudGF0aW9uLgorKyAqLworKyNkZWZpbmUgSEFWRV9MSUJDX1NZU1RFTV9QUk9QRVJUSUVTIDEKKysKKysvKgorKyAqIERlZmluZSBpZiBzeXN0ZW0gcHJvdmlkZXMgYSBzeXN0ZW0gcHJvcGVydHkgc2VydmVyIChzaG91bGQgYmUKKysgKiBtdXR1YWxseSBleGNsdXNpdmUgd2l0aCBIQVZFX0xJQkNfU1lTVEVNX1BST1BFUlRJRVMpLgorKyAqLworKy8qICNkZWZpbmUgSEFWRV9TWVNURU1fUFJPUEVSVFlfU0VSVkVSICovCisrCisrLyoKKysgKiBXaGF0IENQVSBhcmNoaXRlY3R1cmUgZG9lcyB0aGlzIHBsYXRmb3JtIHVzZT8KKysgKi8KKysjZGVmaW5lIEFSQ0hfQUFSQ0g2NAorKworKy8qCisrICogRGVmaW5lIGlmIHRoZSBzaXplIG9mIGVudW1zIGlzIGFzIHNob3J0IGFzIHBvc3NpYmxlLAorKyAqLworKy8qICNkZWZpbmUgSEFWRV9TSE9SVF9FTlVNUyAqLworKworKy8qCisrICogc3ByaW50ZigpIGZvcm1hdCBzdHJpbmcgZm9yIHNoYXJlZCBsaWJyYXJ5IG5hbWluZy4KKysgKi8KKysjZGVmaW5lIE9TX1NIQVJFRF9MSUJfRk9STUFUX1NUUiAgICAibGliJXMuc28iCisrCisrLyoKKysgKiB0eXBlIGZvciB0aGUgdGhpcmQgYXJndW1lbnQgdG8gbWluY29yZSgpLgorKyAqLworKyNkZWZpbmUgTUlOQ09SRV9QT0lOVEVSX1RZUEUgdW5zaWduZWQgY2hhciAqCisrCisrLyoKKysgKiBUaGUgZGVmYXVsdCBwYXRoIHNlcGFyYXRvciBmb3IgdGhlIHBsYXRmb3JtCisrICovCisrI2RlZmluZSBPU19QQVRIX1NFUEFSQVRPUiAnLycKKysKKysvKgorKyAqIElzIHRoZSBmaWxlc3lzdGVtIGNhc2Ugc2Vuc2l0aXZlPworKyAqLworKyNkZWZpbmUgT1NfQ0FTRV9TRU5TSVRJVkUKKysKKysvKgorKyAqIERlZmluZSBpZiA8c3lzL3NvY2tldC5oPiBleGlzdHMuCisrICovCisrI2RlZmluZSBIQVZFX1NZU19TT0NLRVRfSCAxCisrCisrLyoKKysgKiBEZWZpbmUgaWYgdGhlIHN0cmxjcHkoKSBmdW5jdGlvbiBleGlzdHMgb24gdGhlIHN5c3RlbS4KKysgKi8KKysjZGVmaW5lIEhBVkVfU1RSTENQWSAxCisrCisrLyoKKysgKiBEZWZpbmUgaWYgdGhlIG9wZW5fbWVtc3RyZWFtKCkgZnVuY3Rpb24gZXhpc3RzIG9uIHRoZSBzeXN0ZW0uCisrICovCisrLyogI2RlZmluZSBIQVZFX09QRU5fTUVNU1RSRUFNIDEgKi8KKysKKysvKgorKyAqIERlZmluZSBpZiB0aGUgQlNEIGZ1bm9wZW4oKSBmdW5jdGlvbiBleGlzdHMgb24gdGhlIHN5c3RlbS4KKysgKi8KKysjZGVmaW5lIEhBVkVfRlVOT1BFTiAxCisrCisrLyoKKysgKiBEZWZpbmUgaWYgcHJjdGwoKSBleGlzdHMKKysgKi8KKysjZGVmaW5lIEhBVkVfUFJDVEwgMQorKworKy8qCisrICogRGVmaW5lIGlmIHdyaXRldigpIGV4aXN0cworKyAqLworKyNkZWZpbmUgSEFWRV9XUklURVYgMQorKworKy8qCisrICogRGVmaW5lIGlmIDxzdGRpbnQuaD4gZXhpc3RzLgorKyAqLworKyNkZWZpbmUgSEFWRV9TVERJTlRfSCAxCisrCisrLyoKKysgKiBEZWZpbmUgaWYgPHN0ZGJvb2wuaD4gZXhpc3RzLgorKyAqLworKyNkZWZpbmUgSEFWRV9TVERCT09MX0ggMQorKworKy8qCisrICogRGVmaW5lIGlmIDxzY2hlZC5oPiBleGlzdHMuCisrICovCisrI2RlZmluZSBIQVZFX1NDSEVEX0ggMQorKworKy8qCisrICogRGVmaW5lIGlmIHByZWFkKCkgZXhpc3RzCisrICovCisrI2RlZmluZSBIQVZFX1BSRUFEIDEKKysKKysvKgorKyAqIERlZmluZSBpZiB3ZSBoYXZlIHN0X210aW0gaW4gc3RydWN0IHN0YXQKKysgKi8KKysjZGVmaW5lIEhBVkVfU1RBVF9TVF9NVElNIDEKKysKKysvKgorKyAqIERlZmluZSBpZiBwcmludGYoKSBzdXBwb3J0cyAlemQgZm9yIHNpemVfdCBhcmd1bWVudHMKKysgKi8KKysjZGVmaW5lIEhBVkVfUFJJTlRGX1pEIDEKKysKKysvKgorKyAqIERlZmluZSB0byAxIGlmIDxzdGRsaWIuaD4gcHJvdmlkZXMgcXNvcnRfcigpIHdpdGggYSBCU0Qgc3R5bGUgZnVuY3Rpb24gcHJvdG90eXBlLgorKyAqLworKyNkZWZpbmUgSEFWRV9CU0RfUVNPUlRfUiAwCisrCisrLyoKKysgKiBEZWZpbmUgdG8gMSBpZiA8c3RkbGliLmg+IHByb3ZpZGVzIHFzb3J0X3IoKSB3aXRoIGEgR05VIHN0eWxlIGZ1bmN0aW9uIHByb3RvdHlwZS4KKysgKi8KKysjZGVmaW5lIEhBVkVfR05VX1FTT1JUX1IgMAorKworKyNlbmRpZiAvKiBfQU5EUk9JRF9DT05GSUdfSCAqLworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2FuZHJvaWQtdG9vbHMvYW5kcm9pZC10b29scy9jb3JlLzAwMTMtYWRiLVN1cHBvcnQtcmlzY3Y2NC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvY29yZS8wMDEzLWFkYi1TdXBwb3J0LXJpc2N2NjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTg0MzRhZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHMvY29yZS8wMDEzLWFkYi1TdXBwb3J0LXJpc2N2NjQucGF0Y2gKQEAgLTAsMCArMSwxODkgQEAKK0Zyb20gNDhkZGY0ZmI5OTk5MzE5NDJjMzU5MzUwZmIzMWNkNTU3NTE0ZTFjNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW54aSBNYW8gPG1hb2NoZW54aUBlc3dpbi5jb20+CitEYXRlOiBNb24sIDIwIEFwciAyMDIwIDE1OjI3OjIyICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMS8xXSBhZGI6IFN1cHBvcnQgcmlzY3Y2NAorCistLS0KKyBpbmNsdWRlL2N1dGlscy9hdG9taWMtaW5saW5lLmggIHwgICAyICsKKyBpbmNsdWRlL2N1dGlscy9hdG9taWMtcmlzY3Y2NC5oIHwgMTU2ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxNTggaW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL2N1dGlscy9hdG9taWMtcmlzY3Y2NC5oCisKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2N1dGlscy9hdG9taWMtaW5saW5lLmggYi9pbmNsdWRlL2N1dGlscy9hdG9taWMtaW5saW5lLmgKK2luZGV4IGEzMWU5MTM1NzkuLmI1ZGMzODIwOWMgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2N1dGlscy9hdG9taWMtaW5saW5lLmgKKysrKyBiL2luY2x1ZGUvY3V0aWxzL2F0b21pYy1pbmxpbmUuaAorQEAgLTU1LDYgKzU1LDggQEAgZXh0ZXJuICJDIiB7CisgI2luY2x1ZGUgPGN1dGlscy9hdG9taWMtbWlwczY0Lmg+CisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyAjaW5jbHVkZSA8Y3V0aWxzL2F0b21pYy1taXBzLmg+CisrI2VsaWYgZGVmaW5lZChfX3Jpc2N2KSAmJiBfX3Jpc2N2X3hsZW4gPT0gNjQKKysjaW5jbHVkZSA8Y3V0aWxzL2F0b21pYy1yaXNjdjY0Lmg+CisgI2Vsc2UKKyAjZXJyb3IgYXRvbWljIG9wZXJhdGlvbnMgYXJlIHVuc3VwcG9ydGVkCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9jdXRpbHMvYXRvbWljLXJpc2N2NjQuaCBiL2luY2x1ZGUvY3V0aWxzL2F0b21pYy1yaXNjdjY0LmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4yNjY0ZGI1YTg2CistLS0gL2Rldi9udWxsCisrKysgYi9pbmNsdWRlL2N1dGlscy9hdG9taWMtcmlzY3Y2NC5oCitAQCAtMCwwICsxLDE1NiBAQAorKy8qCisrICogQ29weXJpZ2h0IChDKSAyMDE0IFRoZSBBbmRyb2lkIE9wZW4gU291cmNlIFByb2plY3QKKysgKiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqCisrICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisrICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisrICogYXJlIG1ldDoKKysgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKysgKiAgKiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbgorKyAqICAgIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUKKysgKiAgICBkaXN0cmlidXRpb24uCisrICoKKysgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQgQ09OVFJJQlVUT1JTCisrICogIkFTIElTIiBBTkQgQU5ZIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QKKysgKiBMSU1JVEVEIFRPLCBUSEUgSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUworKyAqIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFCisrICogQ09QWVJJR0hUIE9XTkVSIE9SIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULAorKyAqIElOQ0lERU5UQUwsIFNQRUNJQUwsIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsCisrICogQlVUIE5PVCBMSU1JVEVEIFRPLCBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTCisrICogT0YgVVNFLCBEQVRBLCBPUiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VECisrICogQU5EIE9OIEFOWSBUSEVPUlkgT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLAorKyAqIE9SIFRPUlQgKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVAorKyAqIE9GIFRIRSBVU0UgT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRgorKyAqIFNVQ0ggREFNQUdFLgorKyAqLworKworKyNpZm5kZWYgQU5EUk9JRF9DVVRJTFNfQVRPTUlDX1JJU0NWNjRfSAorKyNkZWZpbmUgQU5EUk9JRF9DVVRJTFNfQVRPTUlDX1JJU0NWNjRfSAorKworKyNpbmNsdWRlIDxzdGRpbnQuaD4KKysKKysjaWZuZGVmIEFORFJPSURfQVRPTUlDX0lOTElORQorKyNkZWZpbmUgQU5EUk9JRF9BVE9NSUNfSU5MSU5FIGlubGluZSBfX2F0dHJpYnV0ZV9fKChhbHdheXNfaW5saW5lKSkKKysjZW5kaWYKKysKKysvKgorKyAgIFRPRE9BQXJjaDY0OiBSZXZpc2l0IHRoZSBiZWxvdyBmdW5jdGlvbnMgYW5kIGNoZWNrIGZvciBwb3RlbnRpYWwKKysgICBvcHRpbWl6YXRpb25zIHVzaW5nIGFzc2VtYmx5IGNvZGUgb3Igb3RoZXJ3aXNlLgorKyovCisrCisrZXh0ZXJuIEFORFJPSURfQVRPTUlDX0lOTElORQorK3ZvaWQgYW5kcm9pZF9jb21waWxlcl9iYXJyaWVyKHZvaWQpCisreworKyAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoIiIgOiA6IDogIm1lbW9yeSIpOworK30KKysKKytleHRlcm4gQU5EUk9JRF9BVE9NSUNfSU5MSU5FCisrdm9pZCBhbmRyb2lkX21lbW9yeV9iYXJyaWVyKHZvaWQpCisreworKyAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoImZlbmNlIHJ3LHJ3IiA6IDogOiAibWVtb3J5Iik7CisrfQorKworK2V4dGVybiBBTkRST0lEX0FUT01JQ19JTkxJTkUKKytpbnQzMl90IGFuZHJvaWRfYXRvbWljX2FjcXVpcmVfbG9hZCh2b2xhdGlsZSBjb25zdCBpbnQzMl90ICpwdHIpCisreworKyAgICBpbnQzMl90IHZhbHVlID0gKnB0cjsKKysgICAgYW5kcm9pZF9tZW1vcnlfYmFycmllcigpOworKyAgICByZXR1cm4gdmFsdWU7CisrfQorKworK2V4dGVybiBBTkRST0lEX0FUT01JQ19JTkxJTkUKKytpbnQzMl90IGFuZHJvaWRfYXRvbWljX3JlbGVhc2VfbG9hZCh2b2xhdGlsZSBjb25zdCBpbnQzMl90ICpwdHIpCisreworKyAgICBhbmRyb2lkX21lbW9yeV9iYXJyaWVyKCk7CisrICAgIHJldHVybiAqcHRyOworK30KKysKKytleHRlcm4gQU5EUk9JRF9BVE9NSUNfSU5MSU5FCisrdm9pZCBhbmRyb2lkX2F0b21pY19hY3F1aXJlX3N0b3JlKGludDMyX3QgdmFsdWUsIHZvbGF0aWxlIGludDMyX3QgKnB0cikKKyt7CisrICAgICpwdHIgPSB2YWx1ZTsKKysgICAgYW5kcm9pZF9tZW1vcnlfYmFycmllcigpOworK30KKysKKytleHRlcm4gQU5EUk9JRF9BVE9NSUNfSU5MSU5FCisrdm9pZCBhbmRyb2lkX2F0b21pY19yZWxlYXNlX3N0b3JlKGludDMyX3QgdmFsdWUsIHZvbGF0aWxlIGludDMyX3QgKnB0cikKKyt7CisrICAgIGFuZHJvaWRfbWVtb3J5X2JhcnJpZXIoKTsKKysgICAgKnB0ciA9IHZhbHVlOworK30KKysKKytleHRlcm4gQU5EUk9JRF9BVE9NSUNfSU5MSU5FCisraW50IGFuZHJvaWRfYXRvbWljX2NhcyhpbnQzMl90IG9sZF92YWx1ZSwgaW50MzJfdCBuZXdfdmFsdWUsCisrICAgICAgICAgICAgICAgICAgICAgICB2b2xhdGlsZSBpbnQzMl90ICpwdHIpCisreworKyAgICByZXR1cm4gX19zeW5jX3ZhbF9jb21wYXJlX2FuZF9zd2FwKHB0ciwgb2xkX3ZhbHVlLCBuZXdfdmFsdWUpICE9IG9sZF92YWx1ZTsKKyt9CisrCisrZXh0ZXJuIEFORFJPSURfQVRPTUlDX0lOTElORQorK2ludCBhbmRyb2lkX2F0b21pY19hY3F1aXJlX2NhcyhpbnQzMl90IG9sZF92YWx1ZSwgaW50MzJfdCBuZXdfdmFsdWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvbGF0aWxlIGludDMyX3QgKnB0cikKKyt7CisrICAgIGludCBzdGF0dXMgPSBhbmRyb2lkX2F0b21pY19jYXMob2xkX3ZhbHVlLCBuZXdfdmFsdWUsIHB0cik7CisrICAgIGFuZHJvaWRfbWVtb3J5X2JhcnJpZXIoKTsKKysgICAgcmV0dXJuIHN0YXR1czsKKyt9CisrCisrZXh0ZXJuIEFORFJPSURfQVRPTUlDX0lOTElORQorK2ludCBhbmRyb2lkX2F0b21pY19yZWxlYXNlX2NhcyhpbnQzMl90IG9sZF92YWx1ZSwgaW50MzJfdCBuZXdfdmFsdWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvbGF0aWxlIGludDMyX3QgKnB0cikKKyt7CisrICAgIGFuZHJvaWRfbWVtb3J5X2JhcnJpZXIoKTsKKysgICAgcmV0dXJuIGFuZHJvaWRfYXRvbWljX2NhcyhvbGRfdmFsdWUsIG5ld192YWx1ZSwgcHRyKTsKKyt9CisrCisrZXh0ZXJuIEFORFJPSURfQVRPTUlDX0lOTElORQorK2ludDMyX3QgYW5kcm9pZF9hdG9taWNfYWRkKGludDMyX3QgaW5jcmVtZW50LCB2b2xhdGlsZSBpbnQzMl90ICpwdHIpCisreworKyAgICBpbnQzMl90IHByZXYsIHN0YXR1czsKKysgICAgYW5kcm9pZF9tZW1vcnlfYmFycmllcigpOworKyAgICBkbyB7CisrICAgICAgICBwcmV2ID0gKnB0cjsKKysgICAgICAgIHN0YXR1cyA9IGFuZHJvaWRfYXRvbWljX2NhcyhwcmV2LCBwcmV2ICsgaW5jcmVtZW50LCBwdHIpOworKyAgICB9IHdoaWxlIChfX2J1aWx0aW5fZXhwZWN0KHN0YXR1cyAhPSAwLCAwKSk7CisrICAgIHJldHVybiBwcmV2OworK30KKysKKytleHRlcm4gQU5EUk9JRF9BVE9NSUNfSU5MSU5FCisraW50MzJfdCBhbmRyb2lkX2F0b21pY19pbmModm9sYXRpbGUgaW50MzJfdCAqYWRkcikKKyt7CisrICAgIHJldHVybiBhbmRyb2lkX2F0b21pY19hZGQoMSwgYWRkcik7CisrfQorKworK2V4dGVybiBBTkRST0lEX0FUT01JQ19JTkxJTkUKKytpbnQzMl90IGFuZHJvaWRfYXRvbWljX2RlYyh2b2xhdGlsZSBpbnQzMl90ICphZGRyKQorK3sKKysgICAgcmV0dXJuIGFuZHJvaWRfYXRvbWljX2FkZCgtMSwgYWRkcik7CisrfQorKworK2V4dGVybiBBTkRST0lEX0FUT01JQ19JTkxJTkUKKytpbnQzMl90IGFuZHJvaWRfYXRvbWljX2FuZChpbnQzMl90IHZhbHVlLCB2b2xhdGlsZSBpbnQzMl90ICpwdHIpCisreworKyAgICBpbnQzMl90IHByZXYsIHN0YXR1czsKKysgICAgYW5kcm9pZF9tZW1vcnlfYmFycmllcigpOworKyAgICBkbyB7CisrICAgICAgICBwcmV2ID0gKnB0cjsKKysgICAgICAgIHN0YXR1cyA9IGFuZHJvaWRfYXRvbWljX2NhcyhwcmV2LCBwcmV2ICYgdmFsdWUsIHB0cik7CisrICAgIH0gd2hpbGUgKF9fYnVpbHRpbl9leHBlY3Qoc3RhdHVzICE9IDAsIDApKTsKKysgICAgcmV0dXJuIHByZXY7CisrfQorKworK2V4dGVybiBBTkRST0lEX0FUT01JQ19JTkxJTkUKKytpbnQzMl90IGFuZHJvaWRfYXRvbWljX29yKGludDMyX3QgdmFsdWUsIHZvbGF0aWxlIGludDMyX3QgKnB0cikKKyt7CisrICAgIGludDMyX3QgcHJldiwgc3RhdHVzOworKyAgICBhbmRyb2lkX21lbW9yeV9iYXJyaWVyKCk7CisrICAgIGRvIHsKKysgICAgICAgIHByZXYgPSAqcHRyOworKyAgICAgICAgc3RhdHVzID0gYW5kcm9pZF9hdG9taWNfY2FzKHByZXYsIHByZXYgfCB2YWx1ZSwgcHRyKTsKKysgICAgfSB3aGlsZSAoX19idWlsdGluX2V4cGVjdChzdGF0dXMgIT0gMCwgMCkpOworKyAgICByZXR1cm4gcHJldjsKKyt9CisrCisrI2VuZGlmIC8qIEFORFJPSURfQ1VUSUxTX0FUT01JQ19SSVNDVl9IICovCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYW5kcm9pZC10b29scy9hbmRyb2lkLXRvb2xzXzUuMS4xLnIzNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHNfNS4xLjEucjM3LmJiCmluZGV4IGMwZDA4ZGIuLmZiNjEyNWUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHNfNS4xLjEucjM3LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hbmRyb2lkLXRvb2xzL2FuZHJvaWQtdG9vbHNfNS4xLjEucjM3LmJiCkBAIC0zOCwxMSArMzgsMTMgQEAKICAgICBmaWxlOi8vY29yZS8wMDExLVJlbW92ZS1iaW9uaWMtc3BlY2lmaWMtY2FsbHMucGF0Y2g7cGF0Y2hkaXI9c3lzdGVtL2NvcmUgXAogICAgIGZpbGU6Ly9jb3JlLzAwMTItRml4LWltcGxpY2l0LWRlY2xhcmF0aW9uLW9mLXN0bGNhdC1zdHJsY29weS1mdW5jdGlvbi5wYXRjaDtwYXRjaGRpcj1zeXN0ZW0vY29yZSBcCiAgICAgZmlsZTovL2NvcmUvYWRiX2xpYnNzbF8xMS5kaWZmO3BhdGNoZGlyPXN5c3RlbS9jb3JlIFwKKyAgICBmaWxlOi8vY29yZS8wMDEzLWFkYi1TdXBwb3J0LXJpc2N2NjQucGF0Y2g7cGF0Y2hkaXI9c3lzdGVtL2NvcmUgXAogICAgIGZpbGU6Ly9leHRyYXMvMDAwMS1leHQ0X3V0aWxzLXJlbW92ZS1zZWxpbnV4LWV4dGVuc2lvbnMucGF0Y2g7cGF0Y2hkaXI9c3lzdGVtL2V4dHJhcyBcCiAgICAgZmlsZTovL2V4dHJhcy8wMDAyLWV4dDRfdXRpbHMtYWRkLW8tYXJndW1lbnQtdG8tcHJlc2VydmUtb3duZXJzaGlwLnBhdGNoO3BhdGNoZGlyPXN5c3RlbS9leHRyYXMgXAogICAgIGZpbGU6Ly9saWJzZWxpbnV4LzAwMDEtUmVtb3ZlLWJpb25pYy1zcGVjaWZpYy1jYWxscy5wYXRjaDtwYXRjaGRpcj1leHRlcm5hbC9saWJzZWxpbnV4IFwKICAgICBmaWxlOi8vbGlic2VsaW51eC8wMDAxLWxpYnNlbGludXgtRG8tbm90LWRlZmluZS1nZXR0aWQtaWYtZ2xpYmMtMi4zMC1pcy11c2UucGF0Y2g7cGF0Y2hkaXI9ZXh0ZXJuYWwvbGlic2VsaW51eCBcCiAgICAgZmlsZTovL2FuZHJvaWQtdG9vbHMtYWRiZC5zZXJ2aWNlIFwKKyAgICBmaWxlOi8vYnVpbGQvMDAwMS1SaXNjdi1BZGQtcmlzYy12LUFuZHJvaWQtY29uZmlnLWhlYWRlci5wYXRjaDtwYXRjaGRpcj1idWlsZCBcCiAgICAgZmlsZTovL2dpdGlnbm9yZSBcCiAgICAgZmlsZTovL2FkYi5taztzdWJkaXI9JHtCUE59IFwKICAgICBmaWxlOi8vYWRiZC5taztzdWJkaXI9JHtCUE59IFwKQEAgLTYxLDYgKzYzLDcgQEAKIAogQ09NUEFUSUJMRV9IT1NUX3Bvd2VycGMgPSAiKG51bGwpIgogQ09NUEFUSUJMRV9IT1NUX3Bvd2VycGM2NCA9ICIobnVsbCkiCitDT01QQVRJQkxFX0hPU1RfcG93ZXJwYzY0bGUgPSAiKG51bGwpIgogCiBpbmhlcml0IHN5c3RlbWQKIApAQCAtOTMsNiArOTYsOSBAQAogICAgICAgYWFyY2g2NCkKICAgICAgICAgZXhwb3J0IGFuZHJvaWRfYXJjaD1saW51eC1hcm02NAogICAgICAgOzsKKyAgICAgIHJpc2N2NjQpCisgICAgICAgIGV4cG9ydCBhbmRyb2lkX2FyY2g9bGludXgtcmlzY3Y2NAorICAgICAgOzsKICAgICAgIG1pcHN8bWlwc2VsKQogICAgICAgICBleHBvcnQgYW5kcm9pZF9hcmNoPWxpbnV4LW1pcHMKICAgICAgIDs7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYXV0b2NvbmYtMi4xMy9hdXRvY29uZi0yLjEzLW5hdGl2ZV8yLjEzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLTIuMTMvYXV0b2NvbmYtMi4xMy1uYXRpdmVfMi4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNTRhNzMzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLTIuMTMvYXV0b2NvbmYtMi4xMy1uYXRpdmVfMi4xMy5iYgpAQCAtMCwwICsxLDY3IEBACitTVU1NQVJZID0gIkEgR05VIHRvb2wgdGhhdCBwcm9kdWNlIHNoZWxsIHNjcmlwdHMgdG8gYXV0b21hdGljYWxseSBjb25maWd1cmUgc29mdHdhcmUiCitERVNDUklQVElPTiA9ICJBdXRvY29uZiBpcyBhbiBleHRlbnNpYmxlIHBhY2thZ2Ugb2YgTTQgbWFjcm9zIHRoYXQgcHJvZHVjZSBzaGVsbCBzY3JpcHRzIHRvIGF1dG9tYXRpY2FsbHkgXCAKK2NvbmZpZ3VyZSBzb2Z0d2FyZSBzb3VyY2UgY29kZSBwYWNrYWdlcy4gQXV0b2NvbmYgY3JlYXRlcyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGZvciBhIHBhY2thZ2UgZnJvbSBhIHRlbXBsYXRlIFwKK2ZpbGUgdGhhdCBsaXN0cyB0aGUgb3BlcmF0aW5nIHN5c3RlbSBmZWF0dXJlcyB0aGF0IHRoZSBwYWNrYWdlIGNhbiB1c2UsIGluIHRoZSBmb3JtIG9mIE00IG1hY3JvIGNhbGxzLiIKK1NFQ1RJT04gPSAiZGV2ZWwiCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi8iCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNFTlNFID0gIkdQTHYyICYgR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zNjFiNmI4MzdjYWQyNmM2OTAwYTkyNmI2MmFhZGE1ZiIKKworU1JDX1VSSSA9ICIgXAorICAgICR7R05VX01JUlJPUn0vYXV0b2NvbmYvYXV0b2NvbmYtJHtQVn0udGFyLmd6IFwKKyAgICBmaWxlOi8vMDAwMS1BZGQtY29uZmlnLmd1ZXNzLWNvbmZpZy5zdWItaW5zdGFsbC10by1kZXN0ZGlyLnBhdGNoIFwKKyIKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5ZGU1NmQ0YTE2MWE3MjMyMjgyMjBiMGY0MjVkYzcxMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMDYxMTEzNmJlZTUwNTgxMWU5Y2ExMWNhN2FjMTg4ZWY1MzIzYThlMmVmMTljZmZkM2VkYjNjZjA4ZmQ3OTFlIgorCitpbmhlcml0IG5hdGl2ZSB0ZXhpbmZvCisKK0RFUEVORFMgKz0gIm00LW5hdGl2ZSBnbnUtY29uZmlnLW5hdGl2ZSIKK1JERVBFTkRTXyR7UE59ID0gIm00LW5hdGl2ZSBnbnUtY29uZmlnLW5hdGl2ZSIKKworUEVSTCA9ICIke1VTUkJJTlBBVEh9L3BlcmwiCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BFUkw9JyR7UEVSTH0nIgorCitDT05GSUdVUkVPUFRTID0gIiBcCisgICAgLS1idWlsZD0ke0JVSUxEX1NZU30gXAorICAgIC0taG9zdD0ke0hPU1RfU1lTfSBcCisgICAgLS10YXJnZXQ9JHtUQVJHRVRfU1lTfSBcCisgICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKKyAgICAtLWV4ZWNfcHJlZml4PSR7ZXhlY19wcmVmaXh9IFwKKyAgICAtLWJpbmRpcj0ke2JpbmRpcn0gXAorICAgIC0tc2JpbmRpcj0ke3NiaW5kaXJ9IFwKKyAgICAtLWxpYmV4ZWNkaXI9JHtsaWJleGVjZGlyfSBcCisgICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0gXAorICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9IFwKKyAgICAtLXNoYXJlZHN0YXRlZGlyPSR7c2hhcmVkc3RhdGVkaXJ9IFwKKyAgICAtLWxvY2Fsc3RhdGVkaXI9JHtsb2NhbHN0YXRlZGlyfSBcCisgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLWluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfSBcCisgICAgLS1vbGRpbmNsdWRlZGlyPSR7b2xkaW5jbHVkZWRpcn0gXAorICAgIC0taW5mb2Rpcj0ke2luZm9kaXJ9IFwKKyAgICAtLW1hbmRpcj0ke21hbmRpcn0gXAorICAgIC0tZGlzYWJsZS1zaWxlbnQtcnVsZXMgXAorIgorCitFWFRSQV9PRUNPTkYgKz0gImFjX2N2X3BhdGhfTTQ9bTQgYWNfY3ZfcHJvZ19URVNUX0VNQUNTPW5vIgorCitkb19jb25maWd1cmUoKSB7CisgICAgLi9jb25maWd1cmUgJHtDT05GSUdVUkVPUFRTfQorfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorCisgICAgIyBhdm9pZCBjb25mbGljdHMgd2l0aCBzdGFuZGFyZCBhdXRvdG9vbHMKKyAgICB2ZXI9IjIxMyIKKyAgICBmb3IgZmlsZSBpbiBgZmluZCAke0R9JHtiaW5kaXJ9IC10eXBlIGZgOyBkbworICAgICAgICBtdiAkZmlsZSAkZmlsZSR2ZXIKKyAgICBkb25lCisJbXYgJHtEfSR7ZGF0YWRpcn0vYXV0b2NvbmYgJHtEfSR7ZGF0YWRpcn0vYXV0b2NvbmYyMTMKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi0yLjEzL2F1dG9jb25mLTIuMTMvMDAwMS1BZGQtY29uZmlnLmd1ZXNzLWNvbmZpZy5zdWItaW5zdGFsbC10by1kZXN0ZGlyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLTIuMTMvYXV0b2NvbmYtMi4xMy8wMDAxLUFkZC1jb25maWcuZ3Vlc3MtY29uZmlnLnN1Yi1pbnN0YWxsLXRvLWRlc3RkaXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZlOWVjYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi0yLjEzL2F1dG9jb25mLTIuMTMvMDAwMS1BZGQtY29uZmlnLmd1ZXNzLWNvbmZpZy5zdWItaW5zdGFsbC10by1kZXN0ZGlyLnBhdGNoCkBAIC0wLDAgKzEsNjcgQEAKK0Zyb20gM2QzZTIzZjdiMTRlODc4NDk0MDVhNGUxMDlhNjliNzY2OTY2MTVmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDExIERlYyAyMDE5IDIzOjE4OjE5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBjb25maWcuZ3Vlc3MgY29uZmlnLnN1YiAvIGluc3RhbGwgdG8gZGVzdGRpcgorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0NvbmZpZ3VyYXRpb25dCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5pbiB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCBhNmM5NGQ0Li40YjFiNzA4IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtMTM3LDIzICsxMzcsMjMgQEAgaW5zdGFsbGNoZWNrOiBhbGwgaW5zdGFsbAorIAljZCB0ZXN0c3VpdGUgJiYgJHtNQUtFfSBBVVRPQ09ORj0ke2JpbmRpcn0vYXV0b2NvbmYgJEAKKyAKKyBpbnN0YWxsZGlyczoKKy0JJChTSEVMTCkgJHtzcmNkaXJ9L21raW5zdGFsbGRpcnMgJChiaW5kaXIpICQoaW5mb2RpcikgJChhY2RhdGFkaXIpCisrCSQoU0hFTEwpICR7c3JjZGlyfS9ta2luc3RhbGxkaXJzICR7REVTVERJUn0kKGJpbmRpcikgJHtERVNURElSfSQoaW5mb2RpcikgJHtERVNURElSfSQoYWNkYXRhZGlyKQorIAorIGluc3RhbGw6IGFsbCAkKE00RklMRVMpIGFjY29uZmlnLmggaW5zdGFsbGRpcnMgaW5zdGFsbC1pbmZvCisgCWZvciBwIGluICQoQVNDUklQVFMpOyBkbyBcCistCSAgJChJTlNUQUxMX1BST0dSQU0pICQkcCAkKGJpbmRpcikvYGVjaG8gJCRwfHNlZCAnJCh0cmFuc2Zvcm0pJ2A7IFwKKysJICAkKElOU1RBTExfUFJPR1JBTSkgJCRwICR7REVTVERJUn0kKGJpbmRpcikvYGVjaG8gJCRwfHNlZCAnJCh0cmFuc2Zvcm0pJ2A7IFwKKyAJZG9uZQorIAlmb3IgaSBpbiAkKE00RlJPWkVOKTsgZG8gXAorLQkgICQoSU5TVEFMTF9EQVRBKSAkJGkgJChhY2RhdGFkaXIpLyQkaTsgXAorKwkgICQoSU5TVEFMTF9EQVRBKSAkJGkgJHtERVNURElSfSQoYWNkYXRhZGlyKS8kJGk7IFwKKyAJZG9uZQorIAlmb3IgaSBpbiAkKE00RklMRVMpIGFjY29uZmlnLmg7IGRvIFwKKy0JICAkKElOU1RBTExfREFUQSkgJChzcmNkaXIpLyQkaSAkKGFjZGF0YWRpcikvJCRpOyBcCisrCSAgJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS8kJGkgJHtERVNURElSfSQoYWNkYXRhZGlyKS8kJGk7IFwKKyAJZG9uZQorIAktaWYgdGVzdCAtZiBhdXRvc2NhbjsgdGhlbiBcCistCSQoSU5TVEFMTF9QUk9HUkFNKSBhdXRvc2NhbiAkKGJpbmRpcikvYGVjaG8gYXV0b3NjYW58c2VkICckKHRyYW5zZm9ybSknYDsgXAorKwkkKElOU1RBTExfUFJPR1JBTSkgYXV0b3NjYW4gJHtERVNURElSfSQoYmluZGlyKS9gZWNobyBhdXRvc2NhbnxzZWQgJyQodHJhbnNmb3JtKSdgOyBcCisgCWZvciBpIGluIGFjZnVuY3Rpb25zIGFjaGVhZGVycyBhY2lkZW50aWZpZXJzIGFjcHJvZ3JhbXMgXAorLQkgIGFjbWFrZXZhcnM7IGRvIFwKKy0JJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS8kJGkgJChhY2RhdGFkaXIpLyQkaTsgXAorKwkgIGFjbWFrZXZhcnMgY29uZmlnLmd1ZXNzIGNvbmZpZy5zdWI7IGRvIFwKKysJJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS8kJGkgJHtERVNURElSfSQoYWNkYXRhZGlyKS8kJGk7IFwKKyAJZG9uZTsgXAorIAllbHNlIDo7IGZpCisgCitAQCAtMTYxLDExICsxNjEsMTEgQEAgaW5zdGFsbDogYWxsICQoTTRGSUxFUykgYWNjb25maWcuaCBpbnN0YWxsZGlycyBpbnN0YWxsLWluZm8KKyBpbnN0YWxsLWluZm86IGluZm8gaW5zdGFsbGRpcnMKKyAJaWYgdGVzdCAtZiBhdXRvY29uZi5pbmZvOyB0aGVuIFwKKyAJICBmb3IgaSBpbiAqLmluZm8qOyBkbyBcCistCSAgICAkKElOU1RBTExfREFUQSkgJCRpICQoaW5mb2RpcikvJCRpOyBcCisrCSAgICAkKElOU1RBTExfREFUQSkgJCRpICR7REVTVERJUn0kKGluZm9kaXIpLyQkaTsgXAorIAkgIGRvbmU7IFwKKyAJZWxzZSBcCisgCSAgZm9yIGkgaW4gJChzcmNkaXIpLyouaW5mbyo7IGRvIFwKKy0JICAgICQoSU5TVEFMTF9EQVRBKSAkJGkgJChpbmZvZGlyKS9gZWNobyAkJGkgfCBzZWQgJ3N8XiQoc3JjZGlyKS98fCdgOyBcCisrCSAgICAkKElOU1RBTExfREFUQSkgJCRpICR7REVTVERJUn0kKGluZm9kaXIpL2BlY2hvICQkaSB8IHNlZCAnc3xeJChzcmNkaXIpL3x8J2A7IFwKKyAJICBkb25lOyBcCisgCWZpCisgCistLSAKKzIuMjEuMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWRfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2JyZWFrcGFkL2JyZWFrcGFkX2dpdC5iYgppbmRleCBmZjVhY2JlLi5kYWYyNjJlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvYnJlYWtwYWQvYnJlYWtwYWRfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9icmVha3BhZC9icmVha3BhZF9naXQuYmIKQEAgLTQ5LDYgKzQ5LDggQEAKIENYWEZMQUdTICs9ICItRF9HTlVfU09VUkNFIgogCiBDT01QQVRJQkxFX0hPU1RfcG93ZXJwYyA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX3Jpc2N2NjQgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9yaXNjdjMyID0gIm51bGwiCiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY2dkYi9jZ2RiXzAuNy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NnZGIvY2dkYl8wLjcuMS5iYgppbmRleCA1N2UzNjRlLi45ZDM3M2ZjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY2dkYi9jZ2RiXzAuNy4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jZ2RiL2NnZGJfMC43LjEuYmIKQEAgLTcsNyArNyw3IEBACiAKIERFUEVORFMgPSAiZmxleC1uYXRpdmUgcmVhZGxpbmUgbmN1cnNlcyIKIAotaW5oZXJpdCBhdXRvdG9vbHMKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KIAogU1JDX1VSSSA9ICJodHRwOi8vY2dkYi5tZS9maWxlcy8ke0JQfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Bdm9pZC11c2Utb2YtbWlwcy13aGljaC1pcy1yZXNlcnZlZC1vbi1taXBzLnBhdGNoIFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9janNvbi9janNvbl8xLjcuMTMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY2pzb24vY2pzb25fMS43LjEzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU2MTc0ODIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY2pzb24vY2pzb25fMS43LjEzLmJiCkBAIC0wLDAgKzEsMjEgQEAKK0RFU0NSSVBUSU9OID0gIlVsdHJhbGlnaHR3ZWlnaHQgSlNPTiBwYXJzZXIgaW4gQU5TSSBDIgorQVVUSE9SID0gIkRhdmUgR2FtYmxlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL0RhdmVHYW1ibGUvY0pTT04iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIxODk0N2Y3N2U4Y2I4ZTJmYTAyOTE4ZGM0MWM1MGQwIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vRGF2ZUdhbWJsZS9jSlNPTi5naXQiCitTUkNSRVYgPSAiMzk4NTNlNTE0OGRhZDhkYzVkMzJlYTJiMDA5NDNjZjRhMGM2ZjEyMCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcKKworRVhUUkFfT0VDTUFLRSArPSAiXAorICAgIC1ERU5BQkxFX0NKU09OX1VUSUxTPU9uIFwKKyAgICAtREVOQUJMRV9DVVNUT01fQ09NUElMRVJfRkxBR1M9T0ZGIFwKKyAgICAtREJVSUxEX1NIQVJFRF9BTkRfU1RBVElDX0xJQlM9T24gXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY2xvYy9jbG9jXzEuODQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY2xvYy9jbG9jXzEuODQuYmIKaW5kZXggZjllY2QwZS4uM2U0NmM3MiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2Nsb2MvY2xvY18xLjg0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jbG9jL2Nsb2NfMS44NC5iYgpAQCAtOSw2ICs5LDggQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJhNTJmMzg0MzgyNTM3N2NmYTRlNGIzYjMwYTU2N2FiNCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjM2YwYTZiZDIzMTkxMTA0MThjY2IzZTU1YTdhMWI2ZDBlZGZkNzUyOGJmZDJhZTVkNTMwOTM4YWJlOTBmMjU0IgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FsRGFuaWFsLyR7QlBOfS9yZWxlYXNlcyIKKwogZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKIGRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY29uY3VycmVuY3lraXQvY29uY3VycmVuY3lraXRfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NvbmN1cnJlbmN5a2l0L2NvbmN1cnJlbmN5a2l0X2dpdC5iYgppbmRleCAxOTc2N2MzLi44YzZjZjdkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY29uY3VycmVuY3lraXQvY29uY3VycmVuY3lraXRfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9jb25jdXJyZW5jeWtpdC9jb25jdXJyZW5jeWtpdF9naXQuYmIKQEAgLTIxLDYgKzIxLDcgQEAKIGluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAogCiBQTEFUX3Bvd2VycGM2NCA9ICJwcGM2NCIKK1BMQVRfcG93ZXJwYzY0bGUgPSAicHBjNjQiCiBQTEFUID89ICIke0hPU1RfQVJDSH0iCiAKIGRvX2NvbmZpZ3VyZSAoKSB7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3B1aWQvY3B1aWRfMjAxODA1MTkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3B1aWQvY3B1aWRfMjAxODA1MTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzM2EwMDAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NwdWlkL2NwdWlkXzIwMTgwNTE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCB0b29sIHRvIGR1bXAgeDg2IENQVUlEIGluZm9ybWF0aW9uIGFib3V0IHRoZSBDUFUocykiCi1ERVNDUklQVElPTiA9ICJjcHVpZCBkdW1wcyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQ1BVKHMpIGdhdGhlcmVkIFwKLWZyb20gdGhlIENQVUlEIGluc3RydWN0aW9uLCBhbmQgYWxzbyBkZXRlcm1pbmVzIHRoZSBleGFjdCBtb2RlbCBvZiBDUFUocykuIFwKLUl0IHN1cHBvcnRzIEludGVsLCBBTUQsIGFuZCBWSUEgQ1BVcywgYXMgd2VsbCBhcyBvbGRlciBUcmFuc21ldGEsIEN5cml4LCBcCi1VTUMsIE5leEdlbiwgUmlzZSwgYW5kIFNpUyBDUFVzIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZXRhbGxlbi5jb20vJHtCUE59LyR7QlB9LnNyYy50YXIuZ3ogXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYjNiNGU0NGVmNDk1NzUwNDNhOTFkZWYwMjA3ZGNjNzYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTY3ODIzYmUzNmYyM2NiYzk3MmViMGFhODgyZDA2OWMxZDE1NWE1OTc4OTkwYWMzYmNmNDI1ZTZhMmU3ZmY5YSIKLQotQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NCkuKi1saW51eCIKLQotIyBUaGUgaW5zdGFsbCBydWxlIGZyb20gdGhlIE1ha2VmaWxlIGhhcyBoYXJkY29kZWQgcGF0aHMsIHNvIHdlIGR1cGxpY2F0ZQotIyB0aGUgYWN0aW9ucyB0byBhY2NvbW1vZGF0ZSBkaWZmZXJlbnQgcGF0aHMuCi1kb19pbnN0YWxsICgpIHsKLSAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtCfS9jcHVpZCAke0R9LyR7YmluZGlyfS9jcHVpZAotICAgIGluc3RhbGwgLUQgLW0gMDQ0NCAke0J9L2NwdWlkLm1hbi5neiAke0R9LyR7bWFuZGlyfQotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NwdWlkL2NwdWlkXzIwMjAwMjExLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2NwdWlkL2NwdWlkXzIwMjAwMjExLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU2NDYyYTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvY3B1aWQvY3B1aWRfMjAyMDAyMTEuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJMaW51eCB0b29sIHRvIGR1bXAgeDg2IENQVUlEIGluZm9ybWF0aW9uIGFib3V0IHRoZSBDUFUocykiCitERVNDUklQVElPTiA9ICJjcHVpZCBkdW1wcyBkZXRhaWxlZCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgQ1BVKHMpIGdhdGhlcmVkIFwKK2Zyb20gdGhlIENQVUlEIGluc3RydWN0aW9uLCBhbmQgYWxzbyBkZXRlcm1pbmVzIHRoZSBleGFjdCBtb2RlbCBvZiBDUFUocykuIFwKK0l0IHN1cHBvcnRzIEludGVsLCBBTUQsIGFuZCBWSUEgQ1BVcywgYXMgd2VsbCBhcyBvbGRlciBUcmFuc21ldGEsIEN5cml4LCBcCitVTUMsIE5leEdlbiwgUmlzZSwgYW5kIFNpUyBDUFVzIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZXRhbGxlbi5jb20vJHtCUE59LyR7QlB9LnNyYy50YXIuZ3ogXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiYzNkZGE0MGFlZTc4YmQxODc5MjlmNDU0YTNjNzVmMzUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTU3MGNhMjNjZTU1NDNmYjY5NzRhYmNiYmRlMDI2MWVhN2RiZmVhNDBmNGU3MzM1YjQ4NzAyNzQzMTVlNTIxYiIKKworQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NCkuKi1saW51eCIKKworaW5oZXJpdCBwZXJsbmF0aXZlCisKKyMgVGhlIGluc3RhbGwgcnVsZSBmcm9tIHRoZSBNYWtlZmlsZSBoYXMgaGFyZGNvZGVkIHBhdGhzLCBzbyB3ZSBkdXBsaWNhdGUKKyMgdGhlIGFjdGlvbnMgdG8gYWNjb21tb2RhdGUgZGlmZmVyZW50IHBhdGhzLgorZG9faW5zdGFsbCAoKSB7CisgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7Qn0vY3B1aWQgJHtEfS8ke2JpbmRpcn0vY3B1aWQKKyAgICBpbnN0YWxsIC1EIC1tIDA0NDQgJHtCfS9jcHVpZC5tYW4uZ3ogJHtEfS8ke21hbmRpcn0KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kbmYtcGx1Z2luLXR1aS9kbmYtcGx1Z2luLXR1aV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZG5mLXBsdWdpbi10dWkvZG5mLXBsdWdpbi10dWlfZ2l0LmJiCmluZGV4IGE4MzY3YjUuLjQwNjQ5NGUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kbmYtcGx1Z2luLXR1aS9kbmYtcGx1Z2luLXR1aV9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2RuZi1wbHVnaW4tdHVpL2RuZi1wbHVnaW4tdHVpX2dpdC5iYgpAQCAtNCw4ICs0LDggQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdWJpbnV4L2RuZi1wbHVnaW4tdHVpLmdpdDticmFuY2g9bWFzdGVyICIKLVNSQ1JFViA9ICIzMWQ2ODY2ZDVlZGEwMmJlOWE2YmZiMWZjYTllOTA5NWIxMmVlY2QxIgotUFYgPSAiMS4wIgorU1JDUkVWID0gImM1NDE2YWRlYjIxMDE1NGRjNGNjYzRjM2UxYzUyOTdkODNlYmQ0MWUiCitQViA9ICIxLjEiCiAKIFNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJmaWxlOi8vb2UtcmVtb3RlLnJlcG8uc2FtcGxlIgogCkBAIC0zNywzICszNyw0IEBACiAiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgorUE5CTEFDS0xJU1RbZG5mLXBsdWdpbi10dWldID89ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRV9DTEFTU0VTJywgJ3BhY2thZ2VfcnBtJywgJycsICdkb2VzIG5vdCBidWlsZCBjb3JyZWN0bHkgd2l0aG91dCBwYWNrYWdlX3JwbSBpbiBQQUNLQUdFX0NMQVNTRVMnLCBkKX0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZG94eWdlbi9kb3h5Z2VuL2RveHlnZW4tbmF0aXZlLW9ubHktY2hlY2stcHl0aG9uMy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9kb3h5Z2VuL2RveHlnZW4vZG94eWdlbi1uYXRpdmUtb25seS1jaGVjay1weXRob24zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NjUwYzIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZG94eWdlbi9kb3h5Z2VuL2RveHlnZW4tbmF0aXZlLW9ubHktY2hlY2stcHl0aG9uMy5wYXRjaApAQCAtMCwwICsxLDQzMyBAQAorSXQgZmFpbHMgdG8gY29tcGlsZSBkb3h5Z2VuLW5hdGl2ZSB3aGVuIC91c3IvYmluL3B5dGhvbiBpcyBhIGxpbmsgdG8gcHl0aG9uMyBvbgorYnVpbGQgaG9zdDoKKworfCBGYWlsZWQgdG8gaW1wb3J0IHRoZSBzaXRlIG1vZHVsZQorfCBUcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Cit8ICAgRmlsZSAiL3Vzci9saWI2NC9weXRob24zLjYvc2l0ZS5weSIsIGxpbmUgNTY0LCBpbiA8bW9kdWxlPgorfCAgICAgbWFpbigpCit8ICAgRmlsZSAiL3Vzci9saWI2NC9weXRob24zLjYvc2l0ZS5weSIsIGxpbmUgNTUwLCBpbiBtYWluCit8ICAgICBrbm93bl9wYXRocyA9IGFkZHVzZXJzaXRlcGFja2FnZXMoa25vd25fcGF0aHMpCit8ICAgRmlsZSAiL3Vzci9saWI2NC9weXRob24zLjYvc2l0ZS5weSIsIGxpbmUgMjgyLCBpbiBhZGR1c2Vyc2l0ZXBhY2thZ2VzCit8ICAgICB1c2VyX3NpdGUgPSBnZXR1c2Vyc2l0ZXBhY2thZ2VzKCkKK3wgICBGaWxlICIvdXNyL2xpYjY0L3B5dGhvbjMuNi9zaXRlLnB5IiwgbGluZSAyNTgsIGluIGdldHVzZXJzaXRlcGFja2FnZXMKK3wgICAgIHVzZXJfYmFzZSA9IGdldHVzZXJiYXNlKCkgIyB0aGlzIHdpbGwgYWxzbyBzZXQgVVNFUl9CQVNFCit8ICAgRmlsZSAiL3Vzci9saWI2NC9weXRob24zLjYvc2l0ZS5weSIsIGxpbmUgMjQ4LCBpbiBnZXR1c2VyYmFzZQorfCAgICAgVVNFUl9CQVNFID0gZ2V0X2NvbmZpZ192YXIoJ3VzZXJiYXNlJykKK3wgICBGaWxlICIvdXNyL2xpYjY0L3B5dGhvbjMuNi9zeXNjb25maWcucHkiLCBsaW5lIDYwNCwgaW4gZ2V0X2NvbmZpZ192YXIKK3wgICAgIHJldHVybiBnZXRfY29uZmlnX3ZhcnMoKS5nZXQobmFtZSkKK3wgICBGaWxlICIvdXNyL2xpYjY0L3B5dGhvbjMuNi9zeXNjb25maWcucHkiLCBsaW5lIDU1MywgaW4gZ2V0X2NvbmZpZ192YXJzCit8ICAgICBfaW5pdF9wb3NpeChfQ09ORklHX1ZBUlMpCit8ICAgRmlsZSAiL3Vzci9saWI2NC9weXRob24zLjYvc3lzY29uZmlnLnB5IiwgbGluZSA0MjQsIGluIF9pbml0X3Bvc2l4Cit8ICAgICBfdGVtcCA9IF9faW1wb3J0X18obmFtZSwgZ2xvYmFscygpLCBsb2NhbHMoKSwgWydidWlsZF90aW1lX3ZhcnMnXSwgMCkKK3wgTW9kdWxlTm90Rm91bmRFcnJvcjogTm8gbW9kdWxlIG5hbWVkICdfc3lzY29uZmlnZGF0YScKKworUmVwbGFjZSBmaW5kX3BhY2thZ2UgUHl0aG9uSW50ZXJwIHdpdGggUHl0aG9uMyB0byBmaXggdGhpcyBpc3N1ZSB0aGF0CitpdCB1c2VzIHB5dGhvbjMgZnJvbSBweXRob24zLW5hdGl2ZS4gQW5kIGl0IGFsc28gcmVwbGFjZXMgdGhlIHJlc3VsdAordmFyaWFibGUgUFlUSE9OX0VYRUNVVEFCTEUgd2l0aCBQeXRob24zX0VYRUNVVEFCTEUuCisKK1RoaXMgcGF0Y2ggaXMgb25seSBuZWVkZGVkIGJ5IGRveHlnZW4tbmF0aXZlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGVbb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggOTY5YWU1OC4uNjA0NDAwZiAxMDA2NDQKKy0tLSBhL0NNYWtlTGlzdHMudHh0CisrKysgYi9DTWFrZUxpc3RzLnR4dAorQEAgLTkzLDcgKzkzLDcgQEAgZWxzZSAoKQorIGVuZGlmICgpCisgCisgZmluZF9wcm9ncmFtKERPVCBOQU1FUyBkb3QpCistZmluZF9wYWNrYWdlKFB5dGhvbkludGVycCBSRVFVSVJFRCkKKytmaW5kX3BhY2thZ2UoUHl0aG9uMyBSRVFVSVJFRCkKKyBmaW5kX3BhY2thZ2UoRkxFWCBSRVFVSVJFRCkKKyBmaW5kX3BhY2thZ2UoQklTT04gUkVRVUlSRUQpCisgaWYgKEJJU09OX1ZFUlNJT04gVkVSU0lPTl9MRVNTIDIuNykKK2RpZmYgLS1naXQgYS9hZGRvbi9kb3h5d2l6YXJkL0NNYWtlTGlzdHMudHh0IGIvYWRkb24vZG94eXdpemFyZC9DTWFrZUxpc3RzLnR4dAoraW5kZXggNmFhY2Q4Yi4uZmExOTdlOSAxMDA2NDQKKy0tLSBhL2FkZG9uL2RveHl3aXphcmQvQ01ha2VMaXN0cy50eHQKKysrKyBiL2FkZG9uL2RveHl3aXphcmQvQ01ha2VMaXN0cy50eHQKK0BAIC01OCw3ICs1OCw3IEBAIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygke0dFTkVSQVRFRF9TUkNfV0laQVJEfS9zZXR0aW5ncy5oIFBST1BFUlRJRVMgR0VORVJBCisgCisgIyBnZW5lcmF0ZSB2ZXJzaW9uLmNwcAorIGFkZF9jdXN0b21fY29tbWFuZCgKKy0gICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy92ZXJzaW9uLnB5ICR7VkVSU0lPTn0gPiAke0dFTkVSQVRFRF9TUkNfV0laQVJEfS92ZXJzaW9uLmNwcAorKyAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy92ZXJzaW9uLnB5ICR7VkVSU0lPTn0gPiAke0dFTkVSQVRFRF9TUkNfV0laQVJEfS92ZXJzaW9uLmNwcAorICAgICBERVBFTkRTICR7Q01BS0VfU09VUkNFX0RJUn0vVkVSU0lPTiAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy92ZXJzaW9uLnB5CisgICAgIE9VVFBVVCAke0dFTkVSQVRFRF9TUkNfV0laQVJEfS92ZXJzaW9uLmNwcAorICkKK0BAIC02Niw3ICs2Niw3IEBAIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygke0dFTkVSQVRFRF9TUkNfV0laQVJEfS92ZXJzaW9uLmNwcCBQUk9QRVJUSUVTIEdFTkVSCisgCisgIyBnZW5lcmF0ZSBjb25maWdkb2MuY3BwCisgYWRkX2N1c3RvbV9jb21tYW5kKAorLUNPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvY29uZmlnZ2VuLnB5IC13aXogJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvY29uZmlnLnhtbCA+ICR7R0VORVJBVEVEX1NSQ19XSVpBUkR9L2NvbmZpZ2RvYy5jcHAKKytDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWdnZW4ucHkgLXdpeiAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWcueG1sID4gJHtHRU5FUkFURURfU1JDX1dJWkFSRH0vY29uZmlnZG9jLmNwcAorIE9VVFBVVCAke0dFTkVSQVRFRF9TUkNfV0laQVJEfS9jb25maWdkb2MuY3BwCisgKQorIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygke0dFTkVSQVRFRF9TUkNfV0laQVJEfS9jb25maWdkb2MuY3BwIFBST1BFUlRJRVMgR0VORVJBVEVEIDEpCitAQCAtNzQsNyArNzQsNyBAQCBzZXRfc291cmNlX2ZpbGVzX3Byb3BlcnRpZXMoJHtHRU5FUkFURURfU1JDX1dJWkFSRH0vY29uZmlnZG9jLmNwcCBQUk9QRVJUSUVTIEdFTgorIHNldChMRVhfRklMRVMgY29uZmlnX2RveHl3KSAKKyBmb3JlYWNoKGxleF9maWxlICR7TEVYX0ZJTEVTfSkKKyAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorLQkgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9zY2FuX3N0YXRlcy5weSAke0NNQUtFX1NPVVJDRV9ESVJ9L2FkZG9uL2RveHl3aXphcmQvJHtsZXhfZmlsZX0ubCA+ICR7R0VORVJBVEVEX1NSQ19XSVpBUkR9LyR7bGV4X2ZpbGV9LmwuaAorKwkgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvc2Nhbl9zdGF0ZXMucHkgJHtDTUFLRV9TT1VSQ0VfRElSfS9hZGRvbi9kb3h5d2l6YXJkLyR7bGV4X2ZpbGV9LmwgPiAke0dFTkVSQVRFRF9TUkNfV0laQVJEfS8ke2xleF9maWxlfS5sLmgKKyAgICAgICAgIERFUEVORFMgJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvc2Nhbl9zdGF0ZXMucHkgJHtDTUFLRV9TT1VSQ0VfRElSfS9hZGRvbi9kb3h5d2l6YXJkLyR7bGV4X2ZpbGV9LmwKKyAJT1VUUFVUICAke0dFTkVSQVRFRF9TUkNfV0laQVJEfS8ke2xleF9maWxlfS5sLmgKKyAgICAgKQorZGlmZiAtLWdpdCBhL2RvYy9DTWFrZUxpc3RzLnR4dCBiL2RvYy9DTWFrZUxpc3RzLnR4dAoraW5kZXggMDMyYzE2YS4uMzMyZjFiMiAxMDA2NDQKKy0tLSBhL2RvYy9DTWFrZUxpc3RzLnR4dAorKysrIGIvZG9jL0NNYWtlTGlzdHMudHh0CitAQCAtMTMyLDcgKzEzMiw3IEBAIGNvbmZpZ3VyZV9maWxlKCR7Q01BS0VfU09VUkNFX0RJUn0vZG9jL2RveHlpbmRleGVyLjEgICAgICAke1BST0pFQ1RfQklOQVJZX0RJUn0vCisgCisgIyBkb2MvbGFuZ3VhZ2UuZG9jIChzZWUgdGFnIERveHlmaWxlOklOUFVUKQorIGFkZF9jdXN0b21fY29tbWFuZCgKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gdHJhbnNsYXRvci5weSAke0NNQUtFX1NPVVJDRV9ESVJ9CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSB0cmFuc2xhdG9yLnB5ICR7Q01BS0VfU09VUkNFX0RJUn0KKyAgICAgICAgIERFUEVORFMgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2RvYy9tYWludGFpbmVycy50eHQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2RvYy9sYW5ndWFnZS50cGwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2RvYy90cmFuc2xhdG9yLnB5CisgICAgICAgICBPVVRQVVQgbGFuZ3VhZ2UuZG9jCisgICAgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke1BST0pFQ1RfQklOQVJZX0RJUn0vZG9jCitAQCAtMTQxLDcgKzE0MSw3IEBAIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcyhsYW5ndWFnZS5kb2MgUFJPUEVSVElFUyBHRU5FUkFURUQgMSkKKyAKKyAjIGRvYy9jb25maWcuZG9jIChzZWUgdGFnIERveHlmaWxlOklOUFVUKQorIGFkZF9jdXN0b21fY29tbWFuZCgKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gICR7VE9QfS9zcmMvY29uZmlnZ2VuLnB5IC1kb2MgJHtUT1B9L3NyYy9jb25maWcueG1sID4gY29uZmlnLmRvYworKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9zcmMvY29uZmlnZ2VuLnB5IC1kb2MgJHtUT1B9L3NyYy9jb25maWcueG1sID4gY29uZmlnLmRvYworICAgICAgICAgREVQRU5EUyAke1RPUH0vc3JjL2NvbmZpZy54bWwgJHtUT1B9L3NyYy9jb25maWdnZW4ucHkKKyAgICAgICAgIE9VVFBVVCBjb25maWcuZG9jCisgICAgICAgICBXT1JLSU5HX0RJUkVDVE9SWSAke1BST0pFQ1RfQklOQVJZX0RJUn0vZG9jLworQEAgLTE5Miw3ICsxOTIsNyBAQCBhZGRfY3VzdG9tX3RhcmdldChkb2NzX2NobQorICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgZWNobyAiICAgIGZvciBmaWxlIGluIGZpbGVzOiIgPj4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2NobS9kb3h5Z2VuX21hbnVhbF9leGFtcGxlc19jaG0ucHkKKyAgICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGVjaG8gIiAgICAgICAgaWYgZmlsZS5lbmRzd2l0aCgnLmh0bWwnKSBvciBmaWxlLmVuZHN3aXRoKCcucG5nJykgb3IgZmlsZS5lbmRzd2l0aCgnLmNzcycpIG9yIGZpbGUuZW5kc3dpdGgoJy5naWYnKToiID4+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9jaG0vZG94eWdlbl9tYW51YWxfZXhhbXBsZXNfY2htLnB5CisgICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtRSBlY2hvICIgICAgICAgICAgICBwcmludChvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZSkpIiA+PiAke1BST0pFQ1RfQklOQVJZX0RJUn0vY2htL2RveHlnZW5fbWFudWFsX2V4YW1wbGVzX2NobS5weQorLSAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgY2hkaXIgICR7UFJPSkVDVF9CSU5BUllfRElSfS9jaG0gJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2NobS9kb3h5Z2VuX21hbnVhbF9leGFtcGxlc19jaG0ucHkgPj4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2NobS9kb3h5Z2VuX21hbnVhbC5oaHAKKysgICAgQ09NTUFORCAke0NNQUtFX0NPTU1BTkR9IC1FIGNoZGlyICAke1BST0pFQ1RfQklOQVJZX0RJUn0vY2htICR7UHl0aG9uM19FWEVDVVRBQkxFfSAke1BST0pFQ1RfQklOQVJZX0RJUn0vY2htL2RveHlnZW5fbWFudWFsX2V4YW1wbGVzX2NobS5weSA+PiAke1BST0pFQ1RfQklOQVJZX0RJUn0vY2htL2RveHlnZW5fbWFudWFsLmhocAorICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgY2hkaXIgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2NobSAiJHtIVE1MX0hFTFBfQ09NUElMRVJ9IiBkb3h5Z2VuX21hbnVhbC5oaHAgfHwgZWNobyA+IG51bAorICAgICBDT01NQU5EICR7Q01BS0VfQ09NTUFORH0gLUUgcmVuYW1lICR7UFJPSkVDVF9CSU5BUllfRElSfS9jaG0vaW5kZXguY2htICR7UFJPSkVDVF9CSU5BUllfRElSfS9jaG0vZG94eWdlbl9tYW51YWwuY2htCisgICAgICAgICBERVBFTkRTICR7UFJPSkVDVF9CSU5BUllfRElSfS9kb2MvbGFuZ3VhZ2UuZG9jICR7UFJPSkVDVF9CSU5BUllfRElSfS9kb2MvY29uZmlnLmRvYworZGlmZiAtLWdpdCBhL2V4YW1wbGVzL0NNYWtlTGlzdHMudHh0IGIvZXhhbXBsZXMvQ01ha2VMaXN0cy50eHQKK2luZGV4IDk2N2YzZDQuLmE4ZDFhYWQgMTAwNjQ0CistLS0gYS9leGFtcGxlcy9DTWFrZUxpc3RzLnR4dAorKysrIGIvZXhhbXBsZXMvQ01ha2VMaXN0cy50eHQKK0BAIC01MiwxOTYgKzUyLDE5NiBAQCBhZGRfY3VzdG9tX3RhcmdldChleGFtcGxlcworIAorIGFkZF9jdXN0b21fY29tbWFuZCgKKyAJQ09NTUFORCAke0VYRUNVVEFCTEVfT1VUUFVUX1BBVEh9L2RveHlnZW4gY2xhc3MuY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9jbGFzcy9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvY2xhc3MvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9jbGFzcy9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvY2xhc3MvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIGNsYXNzLmggY2xhc3MuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9jbGFzcy9odG1sL2luZGV4Lmh0bWwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvY2xhc3MvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiBkZWZpbmUuY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9kZWZpbmUvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2RlZmluZS9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2RlZmluZS9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZGVmaW5lL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBkZWZpbmUuaCBkZWZpbmUuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9kZWZpbmUvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2RlZmluZS9sYXRleC9yZWZtYW5fZG9jLnRleAorICkKKyAKKyBhZGRfY3VzdG9tX2NvbW1hbmQoCisgCUNPTU1BTkQgJHtFWEVDVVRBQkxFX09VVFBVVF9QQVRIfS9kb3h5Z2VuIGVudW0uY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9lbnVtL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9lbnVtL2xhdGV4L3JlZm1hbl9kb2MudGV4CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZW51bS9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZW51bS9sYXRleC9yZWZtYW5fZG9jLnRleAorIAlERVBFTkRTIGRveHlnZW4gZW51bS5oIGVudW0uY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9lbnVtL2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9lbnVtL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgKQorIAorIGFkZF9jdXN0b21fY29tbWFuZCgKKyAJQ09NTUFORCAke0VYRUNVVEFCTEVfT1VUUFVUX1BBVEh9L2RveHlnZW4gZmlsZS5jZmcKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2ZpbGUvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2ZpbGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9maWxlL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9maWxlL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBmaWxlLmggZmlsZS5jZmcgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkKKyAJT1VUUFVUICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2ZpbGUvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2ZpbGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiBmdW5jLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZnVuYy9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZnVuYy9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2Z1bmMvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2Z1bmMvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIGZ1bmMuaCBmdW5jLmNmZyAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZnVuYy9odG1sL2luZGV4Lmh0bWwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZnVuYy9sYXRleC9yZWZtYW5fZG9jLnRleAorICkKKyAKKyBhZGRfY3VzdG9tX2NvbW1hbmQoCisgCUNPTU1BTkQgJHtFWEVDVVRBQkxFX09VVFBVVF9QQVRIfS9kb3h5Z2VuIGphdmFkb2MtYmFubmVyLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvamF2YWRvYy1iYW5uZXIvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2phdmFkb2MtYmFubmVyL2xhdGV4L3JlZm1hbl9kb2MudGV4CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvamF2YWRvYy1iYW5uZXIvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2phdmFkb2MtYmFubmVyL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBqYXZhZG9jLWJhbm5lci5oIGphdmFkb2MtYmFubmVyLmNmZyAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvamF2YWRvYy1iYW5uZXIvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2phdmFkb2MtYmFubmVyL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgKQorIAorIGFkZF9jdXN0b21fY29tbWFuZCgKKyAJQ09NTUFORCAke0VYRUNVVEFCTEVfT1VUUFVUX1BBVEh9L2RveHlnZW4gcGFnZS5jZmcKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3BhZ2UvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3BhZ2UvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9wYWdlL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9wYWdlL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBwYWdlLmRvYyBwYWdlLmNmZyAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcGFnZS9odG1sL2luZGV4Lmh0bWwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcGFnZS9sYXRleC9yZWZtYW5fZG9jLnRleAorICkKKyAKKyBhZGRfY3VzdG9tX2NvbW1hbmQoCisgCUNPTU1BTkQgJHtFWEVDVVRBQkxFX09VVFBVVF9QQVRIfS9kb3h5Z2VuIHJlbGF0ZXMuY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9yZWxhdGVzL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9yZWxhdGVzL2xhdGV4L3JlZm1hbl9kb2MudGV4CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcmVsYXRlcy9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcmVsYXRlcy9sYXRleC9yZWZtYW5fZG9jLnRleAorIAlERVBFTkRTIGRveHlnZW4gcmVsYXRlcy5jcHAgcmVsYXRlcy5jZmcgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkKKyAJT1VUUFVUICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3JlbGF0ZXMvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3JlbGF0ZXMvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiBhdXRob3IuY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9hdXRob3IvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2F1dGhvci9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2F1dGhvci9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvYXV0aG9yL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBhdXRob3IuY3BwIGF1dGhvci5jZmcgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkKKyAJT1VUUFVUICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2F1dGhvci9odG1sL2luZGV4Lmh0bWwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvYXV0aG9yL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgKQorIAorIGFkZF9jdXN0b21fY29tbWFuZCgKKyAJQ09NTUFORCAke0VYRUNVVEFCTEVfT1VUUFVUX1BBVEh9L2RveHlnZW4gcGFyLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcGFyL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9wYXIvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9wYXIvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3Bhci9sYXRleC9yZWZtYW5fZG9jLnRleAorIAlERVBFTkRTIGRveHlnZW4gcGFyLmNwcCBwYXIuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9wYXIvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3Bhci9sYXRleC9yZWZtYW5fZG9jLnRleAorICkKKyAKKyBhZGRfY3VzdG9tX2NvbW1hbmQoCisgCUNPTU1BTkQgJHtFWEVDVVRBQkxFX09VVFBVVF9QQVRIfS9kb3h5Z2VuIG92ZXJsb2FkLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvb3ZlcmxvYWQvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL292ZXJsb2FkL2xhdGV4L3JlZm1hbl9kb2MudGV4CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvb3ZlcmxvYWQvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL292ZXJsb2FkL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBvdmVybG9hZC5jcHAgb3ZlcmxvYWQuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9vdmVybG9hZC9odG1sL2luZGV4Lmh0bWwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvb3ZlcmxvYWQvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiBleGFtcGxlLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZXhhbXBsZS9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZXhhbXBsZS9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2V4YW1wbGUvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2V4YW1wbGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIGV4YW1wbGUuY3BwIGV4YW1wbGVfdGVzdC5jcHAgZXhhbXBsZS5jZmcgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkKKyAJT1VUUFVUICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2V4YW1wbGUvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2V4YW1wbGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiBpbmNsdWRlLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvaW5jbHVkZS9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvaW5jbHVkZS9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2luY2x1ZGUvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2luY2x1ZGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIGluY2x1ZGUuY3BwIGluY2x1ZGVfdGVzdC5jcHAgaW5jbHVkZS5jZmcgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkKKyAJT1VUUFVUICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2luY2x1ZGUvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2luY2x1ZGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiBxdHN0eWxlLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcXRzdHlsZS9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcXRzdHlsZS9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3F0c3R5bGUvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3F0c3R5bGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIHF0c3R5bGUuY3BwIHF0c3R5bGUuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9xdHN0eWxlL2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9xdHN0eWxlL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgKQorIAorIGFkZF9jdXN0b21fY29tbWFuZCgKKyAJQ09NTUFORCAke0VYRUNVVEFCTEVfT1VUUFVUX1BBVEh9L2RveHlnZW4gamRzdHlsZS5jZmcKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2pkc3R5bGUvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2pkc3R5bGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9qZHN0eWxlL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9qZHN0eWxlL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBqZHN0eWxlLmNwcCBqZHN0eWxlLmNmZyAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvamRzdHlsZS9odG1sL2luZGV4Lmh0bWwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvamRzdHlsZS9sYXRleC9yZWZtYW5fZG9jLnRleAorICkKKyAKKyBhZGRfY3VzdG9tX2NvbW1hbmQoCisgCUNPTU1BTkQgJHtFWEVDVVRBQkxFX09VVFBVVF9QQVRIfS9kb3h5Z2VuIHN0cnVjdGNtZC5jZmcKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3N0cnVjdGNtZC9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvc3RydWN0Y21kL2xhdGV4L3JlZm1hbl9kb2MudGV4CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvc3RydWN0Y21kL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9zdHJ1Y3RjbWQvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIHN0cnVjdGNtZC5oIHN0cnVjdGNtZC5jZmcgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkKKyAJT1VUUFVUICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3N0cnVjdGNtZC9odG1sL2luZGV4Lmh0bWwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvc3RydWN0Y21kL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgKQorIAorIGFkZF9jdXN0b21fY29tbWFuZCgKKyAJQ09NTUFORCAke0VYRUNVVEFCTEVfT1VUUFVUX1BBVEh9L2RveHlnZW4gYXV0b2xpbmsuY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9hdXRvbGluay9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvYXV0b2xpbmsvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9hdXRvbGluay9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvYXV0b2xpbmsvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIGF1dG9saW5rLmNwcCBhdXRvbGluay5jZmcgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkKKyAJT1VUUFVUICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2F1dG9saW5rL2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9hdXRvbGluay9sYXRleC9yZWZtYW5fZG9jLnRleAorICkKKyAKKyBhZGRfY3VzdG9tX2NvbW1hbmQoCisgCUNPTU1BTkQgJHtFWEVDVVRBQkxFX09VVFBVVF9QQVRIfS9kb3h5Z2VuIHRhZy5jZmcKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3RhZy9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvdGFnL2xhdGV4L3JlZm1hbl9kb2MudGV4CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvdGFnL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy90YWcvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIHRhZy5jcHAgdGFnLmNmZyAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9leGFtcGxlL2h0bWwvaW5kZXguaHRtbCAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvdGFnL2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy90YWcvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiByZXN0eXBlZGVmLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcmVzdHlwZWRlZi9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcmVzdHlwZWRlZi9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3Jlc3R5cGVkZWYvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3Jlc3R5cGVkZWYvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIHJlc3R5cGVkZWYuY3BwIHJlc3R5cGVkZWYuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9yZXN0eXBlZGVmL2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9yZXN0eXBlZGVmL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgKQorIAorIGFkZF9jdXN0b21fY29tbWFuZCgKKyAJQ09NTUFORCAke0VYRUNVVEFCTEVfT1VUUFVUX1BBVEh9L2RveHlnZW4gYWZ0ZXJkb2MuY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9hZnRlcmRvYy9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvYWZ0ZXJkb2MvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9hZnRlcmRvYy9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvYWZ0ZXJkb2MvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIGFmdGVyZG9jLmggYWZ0ZXJkb2MuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9hZnRlcmRvYy9odG1sL2luZGV4Lmh0bWwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvYWZ0ZXJkb2MvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiB0ZW1wbC5jZmcKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3RlbXBsYXRlL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy90ZW1wbGF0ZS9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3RlbXBsYXRlL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy90ZW1wbGF0ZS9sYXRleC9yZWZtYW5fZG9jLnRleAorIAlERVBFTkRTIGRveHlnZW4gdGVtcGwuY3BwIHRlbXBsLmNmZyAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvdGVtcGxhdGUvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3RlbXBsYXRlL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgKQorIAorIGFkZF9jdXN0b21fY29tbWFuZCgKKyAJQ09NTUFORCAke0VYRUNVVEFCTEVfT1VUUFVUX1BBVEh9L2RveHlnZW4gZ3JvdXAuY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9ncm91cC9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZ3JvdXAvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9ncm91cC9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZ3JvdXAvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIGdyb3VwLmNwcCBncm91cC5jZmcgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkKKyAJT1VUUFVUICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2dyb3VwL2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9ncm91cC9sYXRleC9yZWZtYW5fZG9jLnRleAorICkKKyAKKyBhZGRfY3VzdG9tX2NvbW1hbmQoCisgCUNPTU1BTkQgJHtFWEVDVVRBQkxFX09VVFBVVF9QQVRIfS9kb3h5Z2VuIG1lbWdycC5jZmcKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL21lbWdycC9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvbWVtZ3JwL2xhdGV4L3JlZm1hbl9kb2MudGV4CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvbWVtZ3JwL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9tZW1ncnAvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIG1lbWdycC5jcHAgbWVtZ3JwLmNmZyAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvbWVtZ3JwL2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9tZW1ncnAvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiBweWV4YW1wbGUuY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9weWV4YW1wbGUvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3B5ZXhhbXBsZS9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3B5ZXhhbXBsZS9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcHlleGFtcGxlL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBweWV4YW1wbGUucHkgcHlleGFtcGxlLmNmZyAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvcHlleGFtcGxlL2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9weWV4YW1wbGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiB0Y2xleGFtcGxlLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvdGNsZXhhbXBsZS9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvdGNsZXhhbXBsZS9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3RjbGV4YW1wbGUvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL3RjbGV4YW1wbGUvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIHRjbGV4YW1wbGUudGNsIHRjbGV4YW1wbGUuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy90Y2xleGFtcGxlL2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy90Y2xleGFtcGxlL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgKQorIAorIGFkZF9jdXN0b21fY29tbWFuZCgKKyAJQ09NTUFORCAke0VYRUNVVEFCTEVfT1VUUFVUX1BBVEh9L2RveHlnZW4gbXV4LmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvbXV4L2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9tdXgvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9tdXgvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL211eC9sYXRleC9yZWZtYW5fZG9jLnRleAorIAlERVBFTkRTIGRveHlnZW4gbXV4LnZoZGwgbXV4LmNmZyAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvbXV4L2h0bWwvaW5kZXguaHRtbCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9tdXgvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyApCisgCisgYWRkX2N1c3RvbV9jb21tYW5kKAorIAlDT01NQU5EICR7RVhFQ1VUQUJMRV9PVVRQVVRfUEFUSH0vZG94eWdlbiBtYW51YWwuY2ZnCistICAgICAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weSAgPCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9tYW51YWwvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL21hbnVhbC9sYXRleC9yZWZtYW5fZG9jLnRleAorKyAgICAgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL21hbnVhbC9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvbWFudWFsL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBtYW51YWwuYyBtYW51YWwuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9tYW51YWwvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL21hbnVhbC9sYXRleC9yZWZtYW5fZG9jLnRleAorICkKKyAKKyBhZGRfY3VzdG9tX2NvbW1hbmQoCisgCUNPTU1BTkQgJHtFWEVDVVRBQkxFX09VVFBVVF9QQVRIfS9kb3h5Z2VuIGRvY3N0cmluZy5jZmcKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5ICA8ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2RvY3N0cmluZy9sYXRleC9yZWZtYW4udGV4ID4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZG9jc3RyaW5nL2xhdGV4L3JlZm1hbl9kb2MudGV4CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZG9jc3RyaW5nL2xhdGV4L3JlZm1hbi50ZXggPiAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9kb2NzdHJpbmcvbGF0ZXgvcmVmbWFuX2RvYy50ZXgKKyAJREVQRU5EUyBkb3h5Z2VuIGRvY3N0cmluZy5weSBkb2NzdHJpbmcuY2ZnICR7VE9QfS9leGFtcGxlcy9zdHJpcF9leGFtcGxlLnB5CisgCU9VVFBVVCAke1BST0pFQ1RfQklOQVJZX0RJUn0vaHRtbC9leGFtcGxlcy9kb2NzdHJpbmcvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2RvY3N0cmluZy9sYXRleC9yZWZtYW5fZG9jLnRleAorICkKK0BAIC0yNDksNyArMjQ5LDcgQEAgYWRkX2N1c3RvbV9jb21tYW5kKAorIGlmIChET1QpCisgICBhZGRfY3VzdG9tX2NvbW1hbmQoCisgCUNPTU1BTkQgJHtFWEVDVVRBQkxFX09VVFBVVF9QQVRIfS9kb3h5Z2VuIGRpYWdyYW1zLmNmZworLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZGlhZ3JhbXMvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2RpYWdyYW1zL2xhdGV4L3JlZm1hbl9kb2MudGV4CisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAgJHtUT1B9L2V4YW1wbGVzL3N0cmlwX2V4YW1wbGUucHkgIDwgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZGlhZ3JhbXMvbGF0ZXgvcmVmbWFuLnRleCA+ICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2RpYWdyYW1zL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgCURFUEVORFMgZG94eWdlbiBkaWFncmFtc19hLmggZGlhZ3JhbXNfYi5oIGRpYWdyYW1zX2MuaCBkaWFncmFtc19kLmggZGlhZ3JhbXNfZS5oIGRpYWdyYW1zLmNmZyAke1RPUH0vZXhhbXBsZXMvc3RyaXBfZXhhbXBsZS5weQorIAlPVVRQVVQgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2h0bWwvZXhhbXBsZXMvZGlhZ3JhbXMvaHRtbC9pbmRleC5odG1sICR7UFJPSkVDVF9CSU5BUllfRElSfS9odG1sL2V4YW1wbGVzL2RpYWdyYW1zL2xhdGV4L3JlZm1hbl9kb2MudGV4CisgICApCitkaWZmIC0tZ2l0IGEvbGlibXNjZ2VuL0NNYWtlTGlzdHMudHh0IGIvbGlibXNjZ2VuL0NNYWtlTGlzdHMudHh0CitpbmRleCAwNzlmY2ZjLi5lNmQ4NmY2IDEwMDY0NAorLS0tIGEvbGlibXNjZ2VuL0NNYWtlTGlzdHMudHh0CisrKysgYi9saWJtc2NnZW4vQ01ha2VMaXN0cy50eHQKK0BAIC03LDcgKzcsNyBAQCBpbmNsdWRlX2RpcmVjdG9yaWVzKAorIHNldChMRVhfRklMRVMgbXNjZ2VuX2xleGVyKSAKKyBmb3JlYWNoKGxleF9maWxlICR7TEVYX0ZJTEVTfSkKKyAgICAgYWRkX2N1c3RvbV9jb21tYW5kKAorLSAgICAgICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9zY2FuX3N0YXRlcy5weSAke0NNQUtFX1NPVVJDRV9ESVJ9L2xpYm1zY2dlbi8ke2xleF9maWxlfS5sID4gJHtHRU5FUkFURURfU1JDfS8ke2xleF9maWxlfS5sLmgKKysgICAgICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICR7Q01BS0VfU09VUkNFX0RJUn0vc3JjL3NjYW5fc3RhdGVzLnB5ICR7Q01BS0VfU09VUkNFX0RJUn0vbGlibXNjZ2VuLyR7bGV4X2ZpbGV9LmwgPiAke0dFTkVSQVRFRF9TUkN9LyR7bGV4X2ZpbGV9LmwuaAorICAgICAgICAgREVQRU5EUyAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9zY2FuX3N0YXRlcy5weSAke0NNQUtFX1NPVVJDRV9ESVJ9L2xpYm1zY2dlbi8ke2xleF9maWxlfS5sCisgICAgICAgICBPVVRQVVQgICR7R0VORVJBVEVEX1NSQ30vJHtsZXhfZmlsZX0ubC5oCisgICAgICkKK2RpZmYgLS1naXQgYS9zcmMvQ01ha2VMaXN0cy50eHQgYi9zcmMvQ01ha2VMaXN0cy50eHQKK2luZGV4IDIzNDYwZDAuLjU4ZjY3OWEgMTAwNjQ0CistLS0gYS9zcmMvQ01ha2VMaXN0cy50eHQKKysrKyBiL3NyYy9DTWFrZUxpc3RzLnR4dAorQEAgLTM1LDcgKzM1LDcgQEAgc2V0X3NvdXJjZV9maWxlc19wcm9wZXJ0aWVzKCR7R0VORVJBVEVEX1NSQ30vc2V0dGluZ3MuaCBQUk9QRVJUSUVTIEdFTkVSQVRFRCAxKQorIAorICMgY29uZmlndmFsdWVzLmgKKyBhZGRfY3VzdG9tX2NvbW1hbmQoCistICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvY29uZmlnZ2VuLnB5IC1tYXBoICR7Q01BS0VfU09VUkNFX0RJUn0vc3JjL2NvbmZpZy54bWwgPiAke0dFTkVSQVRFRF9TUkN9L2NvbmZpZ3ZhbHVlcy5oCisrICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICR7Q01BS0VfU09VUkNFX0RJUn0vc3JjL2NvbmZpZ2dlbi5weSAtbWFwaCAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWcueG1sID4gJHtHRU5FUkFURURfU1JDfS9jb25maWd2YWx1ZXMuaAorICAgICBERVBFTkRTICR7Q01BS0VfU09VUkNFX0RJUn0vc3JjL2NvbmZpZy54bWwgJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvY29uZmlnZ2VuLnB5CisgICAgIE9VVFBVVCAke0dFTkVSQVRFRF9TUkN9L2NvbmZpZ3ZhbHVlcy5oCisgKQorQEAgLTQ3LDcgKzQ3LDcgQEAgYWRkX2N1c3RvbV90YXJnZXQoCisgCisgIyBjb25maWd2YWx1ZXMuY3BwCisgYWRkX2N1c3RvbV9jb21tYW5kKAorLSAgICBDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9ICR7Q01BS0VfU09VUkNFX0RJUn0vc3JjL2NvbmZpZ2dlbi5weSAtbWFwcyAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWcueG1sID4gJHtHRU5FUkFURURfU1JDfS9jb25maWd2YWx1ZXMuY3BwCisrICAgIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICR7Q01BS0VfU09VUkNFX0RJUn0vc3JjL2NvbmZpZ2dlbi5weSAtbWFwcyAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWcueG1sID4gJHtHRU5FUkFURURfU1JDfS9jb25maWd2YWx1ZXMuY3BwCisgICAgIERFUEVORFMgJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvY29uZmlnLnhtbCAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWdnZW4ucHkKKyAgICAgT1VUUFVUICR7R0VORVJBVEVEX1NSQ30vY29uZmlndmFsdWVzLmNwcAorICkKK0BAIC01NSw3ICs1NSw3IEBAIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygke0dFTkVSQVRFRF9TUkN9L2NvbmZpZ3ZhbHVlcy5jcHAgUFJPUEVSVElFUyBHRU5FUkFUCisgCisgIyBjb25maWdvcHRpb25zLmNwcAorIGFkZF9jdXN0b21fY29tbWFuZCgKKy0gICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWdnZW4ucHkgLWNwcCAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWcueG1sID4gJHtHRU5FUkFURURfU1JDfS9jb25maWdvcHRpb25zLmNwcAorKyAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWdnZW4ucHkgLWNwcCAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9jb25maWcueG1sID4gJHtHRU5FUkFURURfU1JDfS9jb25maWdvcHRpb25zLmNwcAorICAgICBERVBFTkRTICR7Q01BS0VfU09VUkNFX0RJUn0vc3JjL2NvbmZpZy54bWwgJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvY29uZmlnZ2VuLnB5CisgICAgIE9VVFBVVCAke0dFTkVSQVRFRF9TUkN9L2NvbmZpZ29wdGlvbnMuY3BwCisgKQorQEAgLTg2LDcgKzg2LDcgQEAgZmlsZShHTE9CIFJFU09VUkNFUyAke0NNQUtFX1NPVVJDRV9ESVJ9L3RlbXBsYXRlcy8qLyopCisgIyByZXNvdXJjZXMuY3BwCisgYWRkX2N1c3RvbV9jb21tYW5kKAorICAgICBDT01NRU5UICAiR2VuZXJhdGluZyAke0dFTkVSQVRFRF9TUkN9L3Jlc291cmNlcy5jcHAiCistICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvcmVzMmNjX2NtZC5weSAke0NNQUtFX1NPVVJDRV9ESVJ9L3RlbXBsYXRlcyAke0dFTkVSQVRFRF9TUkN9L3Jlc291cmNlcy5jcHAKKysgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvcmVzMmNjX2NtZC5weSAke0NNQUtFX1NPVVJDRV9ESVJ9L3RlbXBsYXRlcyAke0dFTkVSQVRFRF9TUkN9L3Jlc291cmNlcy5jcHAKKyAgICAgREVQRU5EUyAke1JFU09VUkNFU30KKyAgICAgT1VUUFVUICR7R0VORVJBVEVEX1NSQ30vcmVzb3VyY2VzLmNwcAorICkKK0BAIC05NCw3ICs5NCw3IEBAIHNldF9zb3VyY2VfZmlsZXNfcHJvcGVydGllcygke0dFTkVSQVRFRF9TUkN9L3Jlc291cmNlcy5jcHAgUFJPUEVSVElFUyBHRU5FUkFURUQKKyAKKyAjIGxheW91dF9kZWZhdWx0LnhtbAorIGFkZF9jdXN0b21fY29tbWFuZCgKKy0gICAgQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy90b19jX2NtZC5weSA8ICR7Q01BS0VfU09VUkNFX0RJUn0vc3JjL2xheW91dF9kZWZhdWx0LnhtbCA+ICR7R0VORVJBVEVEX1NSQ30vbGF5b3V0X2RlZmF1bHQueG1sLmgKKysgICAgQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvdG9fY19jbWQucHkgPCAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9sYXlvdXRfZGVmYXVsdC54bWwgPiAke0dFTkVSQVRFRF9TUkN9L2xheW91dF9kZWZhdWx0LnhtbC5oCisgICAgIERFUEVORFMgJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvbGF5b3V0X2RlZmF1bHQueG1sCisgICAgIE9VVFBVVCAgJHtHRU5FUkFURURfU1JDfS9sYXlvdXRfZGVmYXVsdC54bWwuaAorICkKK0BAIC0xMjQsNyArMTI0LDcgQEAgZm9yZWFjaChsZXhfZmlsZSAke0xFWF9GSUxFU30pCisgICAgIHNldChMRVhfRklMRVNfSCAke0xFWF9GSUxFU19IfSAiICIgJHtHRU5FUkFURURfU1JDfS8ke2xleF9maWxlfS5sLmggQ0FDSEUgSU5URVJOQUwgIlN0b3JlcyBnZW5lcmF0ZWQgZmlsZXMiKQorICAgICBzZXQoTEVYX0ZJTEVTX0NQUCAke0xFWF9GSUxFU19DUFB9ICIgIiAke0dFTkVSQVRFRF9TUkN9LyR7bGV4X2ZpbGV9LmNwcCBDQUNIRSBJTlRFUk5BTCAiU3RvcmVzIGdlbmVyYXRlZCBmaWxlcyIpCisgICAgIGFkZF9jdXN0b21fY29tbWFuZCgKKy0gICAgICAgIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvc2Nhbl9zdGF0ZXMucHkgJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvJHtsZXhfZmlsZX0ubCA+ICR7R0VORVJBVEVEX1NSQ30vJHtsZXhfZmlsZX0ubC5oCisrICAgICAgICBDT01NQU5EICR7UHl0aG9uM19FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy9zY2FuX3N0YXRlcy5weSAke0NNQUtFX1NPVVJDRV9ESVJ9L3NyYy8ke2xleF9maWxlfS5sID4gJHtHRU5FUkFURURfU1JDfS8ke2xleF9maWxlfS5sLmgKKyAgICAgICAgIERFUEVORFMgJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvc2Nhbl9zdGF0ZXMucHkgJHtDTUFLRV9TT1VSQ0VfRElSfS9zcmMvJHtsZXhfZmlsZX0ubAorICAgICAgICAgT1VUUFVUICAke0dFTkVSQVRFRF9TUkN9LyR7bGV4X2ZpbGV9LmwuaAorICAgICApCitkaWZmIC0tZ2l0IGEvdGVzdGluZy9DTWFrZUxpc3RzLnR4dCBiL3Rlc3RpbmcvQ01ha2VMaXN0cy50eHQKK2luZGV4IDQwY2I0MGIuLmEzMDFhY2QgMTAwNjQ0CistLS0gYS90ZXN0aW5nL0NNYWtlTGlzdHMudHh0CisrKysgYi90ZXN0aW5nL0NNYWtlTGlzdHMudHh0CitAQCAtMSw5ICsxLDkgQEAKKyBhZGRfY3VzdG9tX3RhcmdldCh0ZXN0cworICAgICAgICAgIENPTU1FTlQgIlJ1bm5pbmcgZG94eWdlbiB0ZXN0cy4uLiIKKy0JIENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gJHtDTUFLRV9TT1VSQ0VfRElSfS90ZXN0aW5nL3J1bnRlc3RzLnB5IC0tZG94eWdlbiAke1BST0pFQ1RfQklOQVJZX0RJUn0vYmluL2RveHlnZW4gLS1pbnB1dGRpciAke0NNQUtFX1NPVVJDRV9ESVJ9L3Rlc3RpbmcgLS1vdXRwdXRkaXIgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L3Rlc3RpbmcKKysJIENPTU1BTkQgJHtQeXRob24zX0VYRUNVVEFCTEV9ICR7Q01BS0VfU09VUkNFX0RJUn0vdGVzdGluZy9ydW50ZXN0cy5weSAtLWRveHlnZW4gJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2Jpbi9kb3h5Z2VuIC0taW5wdXRkaXIgJHtDTUFLRV9TT1VSQ0VfRElSfS90ZXN0aW5nIC0tb3V0cHV0ZGlyICR7UFJPSkVDVF9CSU5BUllfRElSfS90ZXN0aW5nCisgICAgICAgICAgREVQRU5EUyBkb3h5Z2VuCisgKQorIGFkZF90ZXN0KE5BTUUgc3VpdGUKKy0JQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAke0NNQUtFX1NPVVJDRV9ESVJ9L3Rlc3RpbmcvcnVudGVzdHMucHkgLS1kb3h5Z2VuICQ8VEFSR0VUX0ZJTEU6ZG94eWdlbj4gLS1pbnB1dGRpciAke0NNQUtFX1NPVVJDRV9ESVJ9L3Rlc3RpbmcgLS1vdXRwdXRkaXIgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L3Rlc3RpbmcKKysJQ09NTUFORCAke1B5dGhvbjNfRVhFQ1VUQUJMRX0gJHtDTUFLRV9TT1VSQ0VfRElSfS90ZXN0aW5nL3J1bnRlc3RzLnB5IC0tZG94eWdlbiAkPFRBUkdFVF9GSUxFOmRveHlnZW4+IC0taW5wdXRkaXIgJHtDTUFLRV9TT1VSQ0VfRElSfS90ZXN0aW5nIC0tb3V0cHV0ZGlyICR7UFJPSkVDVF9CSU5BUllfRElSfS90ZXN0aW5nCisgKQorIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2RveHlnZW4vZG94eWdlbl8xLjguMTcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZG94eWdlbi9kb3h5Z2VuXzEuOC4xNy5iYgppbmRleCA3YTRlZWUzLi40NWRlNzE4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZG94eWdlbi9kb3h5Z2VuXzEuOC4xNy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZG94eWdlbi9kb3h5Z2VuXzEuOC4xNy5iYgpAQCAtOSw2ICs5LDcgQEAKIFNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQfS5zcmMudGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtZG9uLXQtbG9vay1mb3ItSWNvbnYucGF0Y2ggXAogIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vZG94eWdlbi1uYXRpdmUtb25seS1jaGVjay1weXRob24zLnBhdGNoIgogU1JDX1VSSVttZDVzdW1dID0gIjc5OTdhMTVjNzNhOGJkNmQwMDNlYWJhNWMyZWUyYjQ3IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJjYmE5ODhhZjJkNDk1NTQxY2JiZTU1NDFiM2JlZTBlZTExMTQ0ZGNiMjNhODFlYWRhMTlmNTUwMWZkOGI1OTkiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9mbGF0YnVmZmVycy9mbGF0YnVmZmVycy8wMDAxLUFkZC1kZXRlY3Rpb24tb2Ytc3RydG91bGxfbC1mdW5jdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9mbGF0YnVmZmVycy9mbGF0YnVmZmVycy8wMDAxLUFkZC1kZXRlY3Rpb24tb2Ytc3RydG91bGxfbC1mdW5jdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNlODIxMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZmxhdGJ1ZmZlcnMvZmxhdGJ1ZmZlcnMvMDAwMS1BZGQtZGV0ZWN0aW9uLW9mLXN0cnRvdWxsX2wtZnVuY3Rpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIGJmZjdmZmJjNTEzMGNkNDZjYWYzM2I3NmI0YmIwNTkzZmNkMTUwNjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBWbGFkaW1pciBHbGF2bnl5IDwzMTg5NzMyMCt2Z2xhdm55eUB1c2Vycy5ub3JlcGx5LmdpdGh1Yi5jb20+Ci1EYXRlOiBGcmksIDEwIE1heSAyMDE5IDAwOjE1OjI5ICswNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEFkZCBkZXRlY3Rpb24gb2Ygc3RydG91bGxfbCBmdW5jdGlvbiAoIzUzMzMpICgjNTMzNykKLQotU2lnbmVkLW9mZi1ieTogRmFicmljZSBGb250YWluZSA8Zm9udGFpbmUuZmFicmljZUBnbWFpbC5jb20+Ci1bUmV0cmlldmVkIGZyb206Ci1odHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2ZsYXRidWZmZXJzL2NvbW1pdC9iZmY3ZmZiYzUxMzBjZDQ2Y2FmMzNiNzZiNGJiMDU5M2ZjZDE1MDY2XQotLS0tCi0gQ01ha2VMaXN0cy50eHQgfCAxMiArKysrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggMDY0MGMzN2I1Li4zMGJlMjM4ZmUgMTAwNjQ0Ci0tLS0gYS9DTWFrZUxpc3RzLnR4dAotKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC00MiwxMiArNDIsMTggQEAgaWYoREVGSU5FRCBGTEFUQlVGRkVSU19NQVhfUEFSU0lOR19ERVBUSCkKLSAgIG1lc3NhZ2UoU1RBVFVTICJGTEFUQlVGRkVSU19NQVhfUEFSU0lOR19ERVBUSDogJHtGTEFUQlVGRkVSU19NQVhfUEFSU0lOR19ERVBUSH0iKQotIGVuZGlmKCkKLSAKLS0jIEF1dG8tZGV0ZWN0IGxvY2FsZS1uYXJyb3cgJ3N0cnRvZF9sJyBmdW5jdGlvbi4KLSsjIEF1dG8tZGV0ZWN0IGxvY2FsZS1uYXJyb3cgJ3N0cnRvZF9sJyBhbmQgICdzdHJ0b3VsbF9sJyBmdW5jdGlvbnMuCi0gaWYoTk9UIERFRklORUQgRkxBVEJVRkZFUlNfTE9DQUxFX0lOREVQRU5ERU5UKQotKyAgc2V0KEZMQVRCVUZGRVJTX0xPQ0FMRV9JTkRFUEVOREVOVCAwKQotICAgaWYoTVNWQykKLS0gICAgY2hlY2tfY3h4X3N5bWJvbF9leGlzdHMoX3N0cnRvZl9sIHN0ZGxpYi5oIEZMQVRCVUZGRVJTX0xPQ0FMRV9JTkRFUEVOREVOVCkKLSsgICAgY2hlY2tfY3h4X3N5bWJvbF9leGlzdHMoX3N0cnRvZl9sIHN0ZGxpYi5oIEZMQVRCVUZGRVJTX0hBU19TVFJUT0ZfTCkKLSsgICAgY2hlY2tfY3h4X3N5bWJvbF9leGlzdHMoX3N0cnRvdWk2NF9sIHN0ZGxpYi5oIEZMQVRCVUZGRVJTX0hBU19TVFJUT1VMTF9MKQotICAgZWxzZSgpCi0tICAgIGNoZWNrX2N4eF9zeW1ib2xfZXhpc3RzKHN0cnRvZl9sIHN0ZGxpYi5oIEZMQVRCVUZGRVJTX0xPQ0FMRV9JTkRFUEVOREVOVCkKLSsgICAgY2hlY2tfY3h4X3N5bWJvbF9leGlzdHMoc3RydG9mX2wgc3RkbGliLmggRkxBVEJVRkZFUlNfSEFTX1NUUlRPRl9MKQotKyAgICBjaGVja19jeHhfc3ltYm9sX2V4aXN0cyhzdHJ0b3VsbF9sIHN0ZGxpYi5oIEZMQVRCVUZGRVJTX0hBU19TVFJUT1VMTF9MKQotKyAgZW5kaWYoKQotKyAgaWYoRkxBVEJVRkZFUlNfSEFTX1NUUlRPRl9MIEFORCBGTEFUQlVGRkVSU19IQVNfU1RSVE9VTExfTCkKLSsgICAgc2V0KEZMQVRCVUZGRVJTX0xPQ0FMRV9JTkRFUEVOREVOVCAxKQotICAgZW5kaWYoKQotIGVuZGlmKCkKLSBhZGRfZGVmaW5pdGlvbnMoLURGTEFUQlVGRkVSU19MT0NBTEVfSU5ERVBFTkRFTlQ9JDxCT09MOiR7RkxBVEJVRkZFUlNfTE9DQUxFX0lOREVQRU5ERU5UfT4pCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZmxhdGJ1ZmZlcnMvZmxhdGJ1ZmZlcnNfMS4xMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2ZsYXRidWZmZXJzL2ZsYXRidWZmZXJzXzEuMTEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI5NDQxZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZmxhdGJ1ZmZlcnMvZmxhdGJ1ZmZlcnNfMS4xMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU1VNTUFSWSA9ICJNZW1vcnkgRWZmaWNpZW50IFNlcmlhbGl6YXRpb24gTGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvZmxhdGJ1ZmZlcnMiCi1TRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi0KLVBBQ0tBR0VfQkVGT1JFX1BOID0gIiR7UE59LWNvbXBpbGVyIgotCi1SREVQRU5EU18ke1BOfS1jb21waWxlciA9ICIke1BOfSIKLVJERVBFTkRTXyR7UE59LWRldiArPSAiJHtQTn0tY29tcGlsZXIiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1hODczYzU2NDVjMTg0ZDUxZTBmOWIzNGUxZDdjZjU1OSIKLQotU1JDUkVWID0gIjllN2U4Y2JlOWY2NzUxMjNkZDQxYjdjNjI4NjhhY2FkMzkxODhjYWUiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9nb29nbGUvZmxhdGJ1ZmZlcnMuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWRldGVjdGlvbi1vZi1zdHJ0b3VsbF9sLWZ1bmN0aW9uLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLSMgTWFrZSBzdXJlIEMrKzExIGlzIHVzZWQsIHJlcXVpcmVkIGZvciBleGFtcGxlIGZvciBHQ0MgNC45Ci1DWFhGTEFHUyArPSAiLXN0ZD1jKysxMSAtZlBJQyIKLUJVSUxEX0NYWEZMQUdTICs9ICItc3RkPWMrKzExIC1mUElDIgotCi0jIEJVSUxEX1RZUEU9UmVsZWFzZSBpcyByZXF1aXJlZCwgb3RoZXJ3aXNlIGZsYXRjIGlzIG5vdCBpbnN0YWxsZWQKLUVYVFJBX09FQ01BS0UgKz0gIlwKLSAgICAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSBcCi0gICAgLURGTEFUQlVGRkVSU19CVUlMRF9URVNUUz1PRkYgXCAgICAKLSAgICAtREZMQVRCVUZGRVJTX0JVSUxEX1NIQVJFRExJQj1PTiBcCi0iCi0KLWluaGVyaXQgY21ha2UKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRklMRVNfJHtQTn0tY29tcGlsZXIgPSAiJHtiaW5kaXJ9IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZmxhdGJ1ZmZlcnMvZmxhdGJ1ZmZlcnNfMS4xMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2ZsYXRidWZmZXJzL2ZsYXRidWZmZXJzXzEuMTIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMzFjZWY2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2ZsYXRidWZmZXJzL2ZsYXRidWZmZXJzXzEuMTIuMC5iYgpAQCAtMCwwICsxLDM0IEBACitTVU1NQVJZID0gIk1lbW9yeSBFZmZpY2llbnQgU2VyaWFsaXphdGlvbiBMaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9mbGF0YnVmZmVycyIKK1NFQ1RJT04gPSAiY29uc29sZS90b29scyIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKKworUEFDS0FHRV9CRUZPUkVfUE4gPSAiJHtQTn0tY29tcGlsZXIiCisKK1JERVBFTkRTXyR7UE59LWNvbXBpbGVyID0gIiR7UE59IgorUkRFUEVORFNfJHtQTn0tZGV2ICs9ICIke1BOfS1jb21waWxlciIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorCitTUkNSRVYgPSAiNmRmNDBhMjQ3MTczN2IyNzI3MWJkZDliOTAwYWI1ZjNhZWM3NDZjNyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dvb2dsZS9mbGF0YnVmZmVycy5naXQiCisKKyMgTWFrZSBzdXJlIEMrKzExIGlzIHVzZWQsIHJlcXVpcmVkIGZvciBleGFtcGxlIGZvciBHQ0MgNC45CitDWFhGTEFHUyArPSAiLXN0ZD1jKysxMSAtZlBJQyIKK0JVSUxEX0NYWEZMQUdTICs9ICItc3RkPWMrKzExIC1mUElDIgorCisjIEJVSUxEX1RZUEU9UmVsZWFzZSBpcyByZXF1aXJlZCwgb3RoZXJ3aXNlIGZsYXRjIGlzIG5vdCBpbnN0YWxsZWQKK0VYVFJBX09FQ01BS0UgKz0gIlwKKyAgICAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSBcCisgICAgLURGTEFUQlVGRkVSU19CVUlMRF9URVNUUz1PRkYgXCAgICAKKyAgICAtREZMQVRCVUZGRVJTX0JVSUxEX1NIQVJFRExJQj1PTiBcCisiCisKK2luaGVyaXQgY21ha2UKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworRklMRVNfJHtQTn0tY29tcGlsZXIgPSAiJHtiaW5kaXJ9IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2VhbnkvZ2VhbnlfMS4zNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nZWFueS9nZWFueV8xLjM2LmJiCmluZGV4IDE3ZTE2YmYuLjgyODIwOTEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nZWFueS9nZWFueV8xLjM2LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nZWFueS9nZWFueV8xLjM2LmJiCkBAIC01LDcgKzUsNyBAQAogCiBERVBFTkRTID0gImd0ayszIGxpYnhtbC1wYXJzZXItcGVybC1uYXRpdmUgcHl0aG9uMy1kb2N1dGlscy1uYXRpdmUgaW50bHRvb2wtbmF0aXZlIgogCi1pbmhlcml0IGZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBwa2djb25maWcgcGVybG5hdGl2ZSBnZXR0ZXh0Citpbmhlcml0IGZlYXR1cmVzX2NoZWNrIGF1dG90b29scyBwa2djb25maWcgcGVybG5hdGl2ZSBnZXR0ZXh0IG1pbWUteGRnCiAKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZV8zLjIyLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGVfMy4yMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZGQ3MDU3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZV8zLjIyLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIkdsYWRlIC0gQSBVc2VyIEludGVyZmFjZSBEZXNpZ25lciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nbmFzaCIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hYWJlODc1OTFjYjhhZTBmM2M2OGJlNjk3N2JiNTUyMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9OWFjMmU3Y2ZmMWRkYWY0OGI2ZWFiNjAyOGYyM2VmODggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMO21kNT0yNTI4OTBkOWVlZTI2YWFiN2I0MzJlOGI4YTYxNjQ3NSIKLURFUEVORFMgPSAiZ3RrKyBndGsrMyBnbGliLTIuMCBsaWJ4bWwyIGludGx0b29sLW5hdGl2ZSBcCi0gICAgICAgICAgIGdub21lLWNvbW1vbi1uYXRpdmUgXAotIgotCi0KLWluaGVyaXQgZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnbm9tZWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5nbm9tZS5vcmcvcHViL0dOT01FL3NvdXJjZXMvZ2xhZGUvMy4yMi9nbGFkZS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXllbHAtaGVscC1ydWxlcy12YXIucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyMjY4MDJjZjNiMDY4NjEyNDA1MjQ4MDVhYTZmZTZmZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkZmY4OWEyZWYyZWFmMDAwZmYyYTQ2OTc5OTc4ZDAzY2I5MjAyY2IwNDY2OGUwMWQwZWE1YzViYjU1NDdlMzlhIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1tYW4tcGFnZXMiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyogJHtsaWJkaXJ9L2dsYWRlL21vZHVsZXMvbGliZ2xhZGVndGsuc28iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nbGFkZS9tb2R1bGVzL2xpYmdsYWRlZ3RrLmxhIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ2xhZGUvbW9kdWxlcy8uZGVidWcvbGliZ2xhZGVndGsuc28iCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9nbGFkZS9nbGFkZV8zLjIyLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGVfMy4yMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkNTM5YjIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ2xhZGUvZ2xhZGVfMy4yMi4yLmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiR2xhZGUgLSBBIFVzZXIgSW50ZXJmYWNlIERlc2lnbmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2duYXNoIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWFhYmU4NzU5MWNiOGFlMGYzYzY4YmU2OTc3YmI1NTIyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMO21kNT05YWMyZTdjZmYxZGRhZjQ4YjZlYWI2MDI4ZjIzZWY4OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEw7bWQ1PTI1Mjg5MGQ5ZWVlMjZhYWI3YjQzMmU4YjhhNjE2NDc1IgorREVQRU5EUyA9ICJndGsrIGd0ayszIGdsaWItMi4wIGxpYnhtbDIgaW50bHRvb2wtbmF0aXZlIFwKKyAgICAgICAgICAgZ25vbWUtY29tbW9uLW5hdGl2ZSBcCisiCisKKworaW5oZXJpdCBmZWF0dXJlc19jaGVjayBhdXRvdG9vbHMgcGtnY29uZmlnIGdub21lYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gbWltZS14ZGcKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9nbGFkZS8zLjIyL2dsYWRlLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUteWVscC1oZWxwLXJ1bGVzLXZhci5wYXRjaCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImMwNzRmYTM3OGM4ZjFhZDgwZDIwMTMzYzRhZTZmNDJkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVkZWZhNmViMjRiNGQxNWJkNTI1ODkxMjFkYzEwOWJjMDhjMjg2MTU3YzQxMjg4ZGViNzRkZDljYzNmMjZhMjEiCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLW1hbi1wYWdlcyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vKiAke2xpYmRpcn0vZ2xhZGUvbW9kdWxlcy9saWJnbGFkZWd0ay5zbyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dsYWRlL21vZHVsZXMvbGliZ2xhZGVndGsubGEiCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9nbGFkZS9tb2R1bGVzLy5kZWJ1Zy9saWJnbGFkZWd0ay5zbyIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWdycGNfY3BwX3BsdWdpbi1wYXRoLWR1cmluZy1jcm9zcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGMvMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtZ3JwY19jcHBfcGx1Z2luLXBhdGgtZHVyaW5nLWNyb3NzLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW5ldHdvcmtpbmcvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGMvMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtZ3JwY19jcHBfcGx1Z2luLXBhdGgtZHVyaW5nLWNyb3NzLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWdycGNfY3BwX3BsdWdpbi1wYXRoLWR1cmluZy1jcm9zcy5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWxpYnJhcmllcy1pbnN0YWxsYXRpb24tZm9yLUxpbnV4LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2dycGMvZ3JwYy8wMDAxLUNNYWtlTGlzdHMudHh0LUZpeC1saWJyYXJpZXMtaW5zdGFsbGF0aW9uLWZvci1MaW51eC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1uZXR3b3JraW5nL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWxpYnJhcmllcy1pbnN0YWxsYXRpb24tZm9yLUxpbnV4LnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWxpYnJhcmllcy1pbnN0YWxsYXRpb24tZm9yLUxpbnV4LnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjXzEuMjQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ncnBjL2dycGNfMS4yNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1MjU2MmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3JwYy9ncnBjXzEuMjQuMy5iYgpAQCAtMCwwICsxLDY3IEBACitERVNDUklQVElPTiA9ICJBIGhpZ2ggcGVyZm9ybWFuY2UsIG9wZW4gc291cmNlLCBnZW5lcmFsLXB1cnBvc2UgUlBDIGZyYW1ld29yay4gXAorUHJvdmlkZXMgZ1JQQyBsaWJyYXJpZXMgZm9yIG11bHRpcGxlIGxhbmd1YWdlcyB3cml0dGVuIG9uIHRvcCBvZiBzaGFyZWQgQyBjb3JlIGxpYnJhcnkgXAorKEMrKywgTm9kZS5qcywgUHl0aG9uLCBSdWJ5LCBPYmplY3RpdmUtQywgUEhQLCBDIykiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ3JwYy9ncnBjIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcGFjaGUtMiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorCitERVBFTkRTID0gImdmbGFncyBjLWFyZXMgcHJvdG9idWYgcHJvdG9idWYtbmF0aXZlIHByb3RvYnVmLWMgcHJvdG9idWYtYy1uYXRpdmUgb3BlbnNzbCBsaWJuc2wyIgorREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBnb29nbGV0ZXN0IGdycGMtbmF0aXZlICIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgZ3JwYy1uYXRpdmUgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorU1JDUkVWX2dycGMgPSAiMmRlMmU4ZGQ4OTIxZTFmN2QwNDNlMDFmYWY3ZmU4YTI5MWZiYjA3MiIKK1NSQ1JFVl91cGIgPSAiOWVmZmNiY2IyN2YwYTY2NWY5ZjM0NTAzMDE4OGMwYjI5MWUzMjQ4MiIKK0JSQU5DSCA9ICJ2MS4yNC54IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dycGMvZ3JwYy5naXQ7cHJvdG9jb2w9aHR0cHM7bmFtZT1ncnBjO2JyYW5jaD0ke0JSQU5DSH0gXAorICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL3Byb3RvY29sYnVmZmVycy91cGI7bmFtZT11cGI7ZGVzdHN1ZmZpeD1naXQvdGhpcmRfcGFydHkvdXBiIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQ01ha2VMaXN0cy50eHQtRml4LWxpYnJhcmllcy1pbnN0YWxsYXRpb24tZm9yLUxpbnV4LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vMDAwMS1DTWFrZUxpc3RzLnR4dC1GaXgtZ3JwY19jcHBfcGx1Z2luLXBhdGgtZHVyaW5nLWNyb3NzLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIGZpbGU6Ly8wMDAxLUNNYWtlTGlzdHMudHh0LUZpeC1ncnBjX2NwcF9wbHVnaW4tcGF0aC1kdXJpbmctY3Jvc3MucGF0Y2giCisKKyMgRml4ZXMgYnVpbGQgd2l0aCBvbGRlciBjb21waWxlcnMgNC44IGVzcGVjaWFsbHkgb24gdWJ1bnR1IDE0LjA0CitDWFhGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtV2wsLS1uby1hcy1uZWVkZWQiCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnCisKK0VYVFJBX09FQ01BS0UgPSAiIFwKKyAgICAtRGdSUENfQ0FSRVNfUFJPVklERVI9cGFja2FnZSBcCisgICAgLURnUlBDX1pMSUJfUFJPVklERVI9cGFja2FnZSBcCisgICAgLURnUlBDX1NTTF9QUk9WSURFUj1wYWNrYWdlIFwKKyAgICAtRGdSUENfUFJPVE9CVUZfUFJPVklERVI9cGFja2FnZSBcCisgICAgLURnUlBDX0dGTEFHU19QUk9WSURFUj1wYWNrYWdlIFwKKyAgICAtRGdSUENfSU5TVEFMTD1PTiBcCisgICAgLURDTUFLRV9DUk9TU0NPTVBJTElORz1PTiBcCisgICAgLURCVUlMRF9TSEFSRURfTElCUz1PTiBcCisgICAgLURnUlBDX0lOU1RBTExfTElCRElSPSR7YmFzZWxpYn0gXAorICAgIC1EZ1JQQ19JTlNUQUxMX0NNQUtFRElSPSR7YmFzZWxpYn0vY21ha2UvJHtCUE59IFwKKyAgICAiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX21pcHNhcmNoKCkgeworICAgIHNlZCAtaSAtZSAicy9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gcnQgbSBwdGhyZWFkKS9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gYXRvbWljIHJ0IG0gcHRocmVhZCkvZyIgJHtTfS9DTWFrZUxpc3RzLnR4dAorfQorCitkb19jb25maWd1cmVfcHJlcGVuZF9wb3dlcnBjKCkgeworICAgIHNlZCAtaSAtZSAicy9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gcnQgbSBwdGhyZWFkKS9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gYXRvbWljIHJ0IG0gcHRocmVhZCkvZyIgJHtTfS9DTWFrZUxpc3RzLnR4dAorfQorCitkb19jb25maWd1cmVfcHJlcGVuZF9yaXNjdjY0KCkgeworICAgIHNlZCAtaSAtZSAicy9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gcnQgbSBwdGhyZWFkKS9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gYXRvbWljIHJ0IG0gcHRocmVhZCkvZyIgJHtTfS9DTWFrZUxpc3RzLnR4dAorfQorCitkb19jb25maWd1cmVfcHJlcGVuZF9yaXNjdjMyKCkgeworICAgIHNlZCAtaSAtZSAicy9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gcnQgbSBwdGhyZWFkKS9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gYXRvbWljIHJ0IG0gcHRocmVhZCkvZyIgJHtTfS9DTWFrZUxpc3RzLnR4dAorfQorCitkb19jb25maWd1cmVfcHJlcGVuZF90b29sY2hhaW4tY2xhbmdfeDg2KCkgeworICAgIHNlZCAtaSAtZSAicy9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gcnQgbSBwdGhyZWFkKS9zZXQoX2dSUENfQUxMVEFSR0VUU19MSUJSQVJJRVMgXCR7Q01BS0VfRExfTElCU30gYXRvbWljIHJ0IG0gcHRocmVhZCkvZyIgJHtTfS9DTWFrZUxpc3RzLnR4dAorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NZU1JPT1RfRElSU19CTEFDS0xJU1RfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIke2Jhc2VsaWJ9L2NtYWtlL2dycGMiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2d1aWRlci9ndWlkZXJfMy45LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3VpZGVyL2d1aWRlcl8zLjkuNi5iYgppbmRleCAwMDU3ZGI2Li5mMDU5MDAyIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3VpZGVyL2d1aWRlcl8zLjkuNi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvZ3VpZGVyL2d1aWRlcl8zLjkuNi5iYgpAQCAtMTYsNyArMTYsNyBAQAogUyA9ICIke1dPUktESVJ9L2dpdCIKIFIgPSAiJHtSRUNJUEVfU1lTUk9PVH0iCiAKLWluaGVyaXQgZGlzdHV0aWxzCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJCQkZJTEVfQ09MTEVDVElPTlMiLCAibWV0YS1weXRob24yIiwgImRpc3R1dGlscyIsICIiLCBkKX0KIAogR1VJREVSX09CSiA9ICJndWlkZXIucHljIgogR1VJREVSX1NDUklQVCA9ICJndWlkZXIiCkBAIC0zMywzICszMyw3IEBACiAKIFJERVBFTkRTXyR7UE59ID0gInB5dGhvbi1jdHlwZXMgcHl0aG9uLXNoZWxsIFwKICAgICAgICAgICAgICAgICAgIHB5dGhvbi1qc29uIHB5dGhvbi1zdWJwcm9jZXNzIgorcHl0aG9uKCkgeworICAgIGlmICdtZXRhLXB5dGhvbjInIG5vdCBpbiBkLmdldFZhcignQkJGSUxFX0NPTExFQ1RJT05TJykuc3BsaXQoKToKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgnUmVxdWlyZXMgbWV0YS1weXRob24yIHRvIGJlIHByZXNlbnQuJykKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qcS9qcV8xLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvanEvanFfMS42LmJiCmluZGV4IDAwODZlYWUuLmJmYWVlZDUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qcS9qcV8xLjYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2pxL2pxXzEuNi5iYgpAQCAtOCw4ICs4LDEwIEBACiBMSUNFTlNFID0gIk1JVCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE1ZDAzZTM2MGZhNzM5OWY3NmQ1YTQzNTlmYzcyY2JmIgogCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zdGVkb2xhbi8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtCUH0vJHtCUH0udGFyLmd6IFwKLSIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3N0ZWRvbGFuLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke0JQfS8ke0JQfS50YXIuZ3oiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc3RlZG9sYW4vJHtCUE59L3JlbGVhc2VzIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAianFcLSg/UDxwdmVyPihcZCtcLlxkKykpKD8hX1xkKykudGFyLmd6IgogCiBTUkNfVVJJW21kNXN1bV0gPSAiZTY4ZmJkNmE5OTJlMzZmMWFjNDhjOTliYmY4MjVkNmIiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWRlOGM4ZTI5YWFhM2ZiOWNjNmI0N2JiMjcyOTlmMjcxMzU0ZWJiNzI1MTRlM2FjY2FkYzdkMzhiNWJiYWE3MiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29ucnBjL2pzb25ycGNfMS4yLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvanNvbnJwYy9qc29ucnBjXzEuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYmY0NGQ3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29ucnBjL2pzb25ycGNfMS4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIkMrKyBmcmFtZXdvcmsgZm9yIGpzb24tcnBjIDEuMCBhbmQgMi4wIgotREVTQ1JJUFRJT04gPSAiSnNvblJwYy1DcHAgaXMgYW4gT3BlblNvdXJjZSBpbXBsZW1lbnRhdGlvbiBvZiBKU09OLVJQQyBcCi0gICAgICAgICAgICAgICBwcm90b2NvbCBpbiBDKysuIEpTT04tUlBDIGlzIGEgbGlnaHR3ZWlnaHQgcmVtb3RlIHByb2NlZHVyZSBcCi0gICAgICAgICAgICAgICBjYWxsIHByb3RvY29sIHNpbWlsYXIgdG8gWE1MLVJQQy4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vY2luZW1hc3QvbGlianNvbi1ycGMtY3BwIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NGU3MjhjNWIzNjAxOGY2YzM4M2I0YjllZmQ5Yzg4NDAiCi1TRUNUSU9OID0gImxpYnMiCi0KLURFUEVORFMgPSAiY3VybCBqc29uY3BwIGxpYm1pY3JvaHR0cGQgaGlyZWRpcyIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2NpbmVtYXN0L2xpYmpzb24tcnBjLWNwcCIKLVNSQ1JFViA9ICI0ZWQ1YjAwZGNjNDA5NDA1YTE5ZTZkOGM2NDc4ZjcwMzE1MzQzMGUxIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHW2NvdmVyYWdlXSA9ICItRFdJVEhfQ09WRVJBR0U9WUVTLC1EV0lUSF9DT1ZFUkFHRT1OTywsIgotCi1pbmhlcml0IGNtYWtlCi0KLUVYVFJBX09FQ01BS0UgKz0gIi1EQ09NUElMRV9URVNUUz1OTyAtRENPTVBJTEVfU1RVQkdFTj1OTyAtRENPTVBJTEVfRVhBTVBMRVM9Tk8gXAotICAgICAgICAgICAgICAgICAgLURCVUlMRF9TSEFSRURfTElCUz1ZRVMgLURCVUlMRF9TVEFUSUNfTElCUz1ZRVMgXAotICAgICAgICAgICAgICAgICAgLURDTUFLRV9MSUJSQVJZX1BBVEg9JHtsaWJkaXJ9IFwKLSIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGlianNvbi1ycGMtY3BwL2NtYWtlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2pzb25ycGMvanNvbnJwY18xLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29ucnBjL2pzb25ycGNfMS4zLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2E5Njc1ZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9qc29ucnBjL2pzb25ycGNfMS4zLjAuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJDKysgZnJhbWV3b3JrIGZvciBqc29uLXJwYyAxLjAgYW5kIDIuMCIKK0RFU0NSSVBUSU9OID0gIkpzb25ScGMtQ3BwIGlzIGFuIE9wZW5Tb3VyY2UgaW1wbGVtZW50YXRpb24gb2YgSlNPTi1SUEMgXAorICAgICAgICAgICAgICAgcHJvdG9jb2wgaW4gQysrLiBKU09OLVJQQyBpcyBhIGxpZ2h0d2VpZ2h0IHJlbW90ZSBwcm9jZWR1cmUgXAorICAgICAgICAgICAgICAgY2FsbCBwcm90b2NvbCBzaW1pbGFyIHRvIFhNTC1SUEMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2NpbmVtYXN0L2xpYmpzb24tcnBjLWNwcCIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTRlNzI4YzViMzYwMThmNmMzODNiNGI5ZWZkOWM4ODQwIgorU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTID0gImN1cmwganNvbmNwcCBsaWJtaWNyb2h0dHBkIGhpcmVkaXMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9jaW5lbWFzdC9saWJqc29uLXJwYy1jcHAiCitTUkNSRVYgPSAiYzY5NmY2OTMyMTEzYjgxY2QyMGNkNGEzNGZkYjE4MDhlNzczZjIzZSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworUEFDS0FHRUNPTkZJRyA/PSAiIgorUEFDS0FHRUNPTkZJR1tjb3ZlcmFnZV0gPSAiLURXSVRIX0NPVkVSQUdFPVlFUywtRFdJVEhfQ09WRVJBR0U9Tk8sLCIKKworaW5oZXJpdCBjbWFrZQorCitFWFRSQV9PRUNNQUtFICs9ICItRENPTVBJTEVfVEVTVFM9Tk8gLURDT01QSUxFX1NUVUJHRU49Tk8gLURDT01QSUxFX0VYQU1QTEVTPU5PIFwKKyAgICAgICAgICAgICAgICAgIC1EQlVJTERfU0hBUkVEX0xJQlM9WUVTIC1EQlVJTERfU1RBVElDX0xJQlM9WUVTIFwKKyAgICAgICAgICAgICAgICAgIC1EQ01BS0VfTElCUkFSWV9QQVRIPSR7bGliZGlyfSBcCisiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYmpzb24tcnBjLWNwcC9jbWFrZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sYXBhY2svbGFwYWNrXzMuOC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xhcGFjay9sYXBhY2tfMy44LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1NDQ3NDQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xhcGFjay9sYXBhY2tfMy44LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1TVU1NQVJZID0gIkxpbmVhciBBbGdlYnJhIFBBQ0thZ2UiCi1VUkwgPSAiaHR0cDovL3d3dy5uZXRsaWIub3JnL2xhcGFjayIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTMwZjhhYTUwMGE0N2M3ZGFiMGY4ZWZiNWExYzlhNDAiCi0KLSMgUmVjaXBlIG5lZWRzIEZPUlRSQU4gc3VwcG9ydCAoY29waWVkIGZyb20gY29uZi9sb2NhbC5jb25mLnNhbXBsZS5leHRlbmRlZCkKLSMgRW5hYmxpbmcgRk9SVFJBTgotIyBOb3RlIHRoaXMgaXMgbm90IG9mZmljaWFsbHkgc3VwcG9ydGVkIGFuZCBpcyBqdXN0IGlsbHVzdHJhdGVkIGhlcmUgdG8KLSMgc2hvdyBhbiBleGFtcGxlIG9mIGhvdyBpdCBjYW4gYmUgZG9uZQotIyBZb3UnbGwgYWxzbyBuZWVkIHlvdXIgZm9ydHJhbiByZWNpcGUgdG8gZGVwZW5kIG9uIGxpYmdmb3J0cmFuCi0jRk9SVFJBTl9mb3JjZXZhcmlhYmxlID0gIixmb3J0cmFuIgotI1JVTlRJTUVUQVJHRVRfYXBwZW5kX3BuLWdjYy1ydW50aW1lID0gIiBsaWJxdWFkbWF0aCIKLQotREVQRU5EUyA9ICJsaWJnZm9ydHJhbiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm5ldGxpYi5vcmcvbGFwYWNrL2xhcGFjay0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiOTY1OTFhZmZkYmY1OGM0NTBkNDVjMWRhYTU0MGRiZDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGViMjJjYzRhNjEyMGJmZjcyNjIxMTU1YTk5MTdmNDg1Zjk2ZWY4MzE5YWMwNzRhN2FmYmM2OGFhYjg4YmNmNiIKLQotRVhUUkFfT0VDTUFLRSA9ICIgLURCVUlMRF9TSEFSRURfTElCUz1PTiAiCi1PRUNNQUtFX0dFTkVSQVRPUiA9ICJVbml4IE1ha2VmaWxlcyIKLQotaW5oZXJpdCBjbWFrZSBwa2djb25maWcKLUVYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xhcGFjay9sYXBhY2tfMy45LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGFwYWNrL2xhcGFja18zLjkuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmQ0ZGY1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2xhcGFjay9sYXBhY2tfMy45LjAuYmIKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJMaW5lYXIgQWxnZWJyYSBQQUNLYWdlIgorVVJMID0gImh0dHA6Ly93d3cubmV0bGliLm9yZy9sYXBhY2siCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTkzMGY4YWE1MDBhNDdjN2RhYjBmOGVmYjVhMWM5YTQwIgorCisjIFJlY2lwZSBuZWVkcyBGT1JUUkFOIHN1cHBvcnQgKGNvcGllZCBmcm9tIGNvbmYvbG9jYWwuY29uZi5zYW1wbGUuZXh0ZW5kZWQpCisjIEVuYWJsaW5nIEZPUlRSQU4KKyMgTm90ZSB0aGlzIGlzIG5vdCBvZmZpY2lhbGx5IHN1cHBvcnRlZCBhbmQgaXMganVzdCBpbGx1c3RyYXRlZCBoZXJlIHRvCisjIHNob3cgYW4gZXhhbXBsZSBvZiBob3cgaXQgY2FuIGJlIGRvbmUKKyMgWW91J2xsIGFsc28gbmVlZCB5b3VyIGZvcnRyYW4gcmVjaXBlIHRvIGRlcGVuZCBvbiBsaWJnZm9ydHJhbgorI0ZPUlRSQU5fZm9yY2V2YXJpYWJsZSA9ICIsZm9ydHJhbiIKKyNSVU5USU1FVEFSR0VUX2FwcGVuZF9wbi1nY2MtcnVudGltZSA9ICIgbGlicXVhZG1hdGgiCisKK0RFUEVORFMgPSAibGliZ2ZvcnRyYW4iCisKK1NSQ1JFViA9ICI2YWNjOTlkNWYzOTEzMGJlN2NlYzAwZmI4MzU2MDYwNDIxMDFhOTcwIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL1JlZmVyZW5jZS1MQVBBQ0svbGFwYWNrLmdpdDtwcm90b2NvbD1odHRwcyIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0VYVFJBX09FQ01BS0UgPSAiIC1EQlVJTERfU0hBUkVEX0xJQlM9T04gIgorT0VDTUFLRV9HRU5FUkFUT1IgPSAiVW5peCBNYWtlZmlsZXMiCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnCitFWENMVURFX0ZST01fV09STEQgPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJnZWUvbGliZ2VlXzAuMjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJnZWUvbGliZ2VlXzAuMjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTA0OGU0OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGliZ2VlL2xpYmdlZV8wLjIwLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJsaWJnZWUgaXMgYSBjb2xsZWN0aW9uIGxpYnJhcnkgcHJvdmlkaW5nIEdPYmplY3QtYmFzZWQgaW50ZXJmYWNlcyBcCi1hbmQgY2xhc3NlcyBmb3IgY29tbW9ubHkgdXNlZCBkYXRhIHN0cnVjdHVyZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL0xpYmdlZSIKLVNFQ1RJT04gPSAibGlicyIKLURFUEVORFMgPSAiZ2xpYi0yLjAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiYzA5MzkwMTg1N2ZjZDExOGYwNjVmOTAwOTgyYzI0IgotCi1QRSA9ICIxIgotaW5oZXJpdCBnbm9tZWJhc2UgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgTUFDUk9TPSJsaWJ0b29sLm00IGx0fm9ic29sZXRlLm00IGx0b3B0aW9ucy5tNCBsdHN1Z2FyLm00IGx0dmVyc2lvbi5tNCIKLSAgICBmb3IgaSBpbiAke01BQ1JPU307IGRvCi0gICAgICAgIHJtIC1mIG00LyRpCi0gICAgZG9uZQotfQotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI0NWRiNDc4ZjJiMzAwYWRhOGUwMzllYmM2Yzk0NThkZSIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjllMDM1YzRiNzU1ZjQ2YmZhZTcwYmE4MWNkY2Y4MzI4YjAzZjU1NDM3M2NlYzhjODE2ZThiNTY4MGY4NTM1M2MiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGliZ2VlL2xpYmdlZV8wLjIwLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbGliZ2VlL2xpYmdlZV8wLjIwLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTc2ZWZmNgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9saWJnZWUvbGliZ2VlXzAuMjAuMy5iYgpAQCAtMCwwICsxLDIyIEBACitERVNDUklQVElPTiA9ICJsaWJnZWUgaXMgYSBjb2xsZWN0aW9uIGxpYnJhcnkgcHJvdmlkaW5nIEdPYmplY3QtYmFzZWQgaW50ZXJmYWNlcyBcCithbmQgY2xhc3NlcyBmb3IgY29tbW9ubHkgdXNlZCBkYXRhIHN0cnVjdHVyZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2xpdmUuZ25vbWUub3JnL0xpYmdlZSIKK1NFQ1RJT04gPSAibGlicyIKK0RFUEVORFMgPSAiZ2xpYi0yLjAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiYzA5MzkwMTg1N2ZjZDExOGYwNjVmOTAwOTgyYzI0IgorCitQRSA9ICIxIgoraW5oZXJpdCBnbm9tZWJhc2UgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgTUFDUk9TPSJsaWJ0b29sLm00IGx0fm9ic29sZXRlLm00IGx0b3B0aW9ucy5tNCBsdHN1Z2FyLm00IGx0dmVyc2lvbi5tNCIKKyAgICBmb3IgaSBpbiAke01BQ1JPU307IGRvCisgICAgICAgIHJtIC1mIG00LyRpCisgICAgZG9uZQorfQorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJlNTc0YjM5NTJiOTNkMjE5YjVlYzdjNzRjNTg5MmMzMyIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQwYjVlZGVmYzg4Y2JjYTVmMTcwOWQxOWZhNjJhZWY0OTA5MjJjNjU3N2ExNGFjNGU3YjA4NTUwNzkxMWE1ZGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHRyYWNlL2x0cmFjZV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHRyYWNlL2x0cmFjZV9naXQuYmIKaW5kZXggNmI2NmMyNS4uNTcxMDk0MyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x0cmFjZS9sdHJhY2VfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdHJhY2UvbHRyYWNlX2dpdC5iYgpAQCAtMzgsNiArMzgsOSBAQAogUEFDS0FHRUNPTkZJR1t1bndpbmRdID0gIi0td2l0aC1saWJ1bndpbmQsLS13aXRob3V0LWxpYnVud2luZCxsaWJ1bndpbmQiCiBQQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0tZW5hYmxlLXNlbGludXgsLS1kaXNhYmxlLXNlbGludXgsbGlic2VsaW51eCxsaWJzZWxpbnV4IgogCitDT01QQVRJQkxFX0hPU1RfcmlzY3Y2NCA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX3Jpc2N2MzIgPSAibnVsbCIKKwogZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewogICAgICggY2QgJHtTfTsgLi9hdXRvZ2VuLnNoICkKIH0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWEvbHVhXzUuMy41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YS9sdWFfNS4zLjUuYmIKaW5kZXggYWU0MWU2Mi4uYTIzYTRhNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YS9sdWFfNS4zLjUuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YS9sdWFfNS4zLjUuYmIKQEAgLTM1LDYgKzM1LDcgQEAKIAogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CiAgICAgc2VkIC1pIC1lIHM6L3Vzci9sb2NhbDoke3ByZWZpeH06ZyBzcmMvbHVhY29uZi5oCisgICAgc2VkIC1pIC1lIHM6bGliL2x1YS86JHtiYXNlbGlifS9sdWEvOmcgc3JjL2x1YWNvbmYuaAogfQogCiBkb19jb21waWxlICgpIHsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWFqaXQvbHVhaml0L2NsYW5nLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXQvY2xhbmcucGF0Y2gKaW5kZXggYzM5ZWY2Zi4uODA3Y2M0NCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXQvY2xhbmcucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXQvY2xhbmcucGF0Y2gKQEAgLTgsOCArOCw4IEBACiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gTHVhSklULTIuMC41Lm9yaWcvc3JjL2xqX2FyY2guaAogKysrIEx1YUpJVC0yLjAuNS9zcmMvbGpfYXJjaC5oCi1AQCAtMzEzLDcgKzMxMyw3IEBACi0gI2Vycm9yICJOZWVkIGF0IGxlYXN0IEdDQyA0LjIgb3IgbmV3ZXIiCitAQCAtNDM2LDcgKzQzNiw3IEBACisgI2VuZGlmCiAgI2VuZGlmCiAgI2VsaWYgIUxKX1RBUkdFVF9QUzMKIC0jaWYgKF9fR05VQ19fIDwgNCkgfHwgKChfX0dOVUNfXyA9PSA0KSAmJiBfX0dOVUNfTUlOT1JfXyA8IDMpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhaml0L2x1YWppdF8yLjAuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWFqaXQvbHVhaml0XzIuMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOGEwNDcwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWFqaXQvbHVhaml0XzIuMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOTggKzAsMCBAQAotU1VNTUFSWSA9ICJKdXN0LUluLVRpbWUgQ29tcGlsZXIgZm9yIEx1YSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0xMGE5NmM5MzQwM2FmZmNjMzQ3NjVmNGMyNjEyYmMyMiIKLUhPTUVQQUdFID0gImh0dHA6Ly9sdWFqaXQub3JnIgotCi1QViAuPSAiK2dpdCR7U1JDUFZ9IgotU1JDUkVWID0gIjAyYjUyMTk4MWExYWI5MTlmZjJjZDRkOWJjYWVlODBiYWY3N2RjZTIiCi1TUkNfVVJJID0gImdpdDovL2x1YWppdC5vcmcvZ2l0L2x1YWppdC0yLjAuZ2l0O3Byb3RvY29sPWh0dHAgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3Qtc3RyaXAtYXV0b21hdGljYWxseS10aGlzLWxlYXZlcy10aGUtc3RyaXBwaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NsYW5nLnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBwa2djb25maWcgYmluY29uZmlnIHNpdGVpbmZvCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi0jIGh0dHA6Ly9sdWFqaXQub3JnL2luc3RhbGwuaHRtbCNjcm9zcwotIyBIb3N0IGx1YWppdCBuZWVkcyB0byBiZSBjb21waWxlZCB3aXRoIHRoZSBzYW1lIHBvaW50ZXIgc2l6ZQotIyBJZiB5b3Ugd2FudCB0byBjcm9zcy1jb21waWxlIHRvIGFueSAzMiBiaXQgdGFyZ2V0IG9uIGFuIHg2NCBPUywKLSMgeW91IG5lZWQgdG8gaW5zdGFsbCB0aGUgbXVsdGlsaWIgZGV2ZWxvcG1lbnQgcGFja2FnZSAoZS5nLgotIyBsaWJjNi1kZXYtaTM4NiBvbiBEZWJpYW4vVWJ1bnR1KSBhbmQgYnVpbGQgYSAzMiBiaXQgaG9zdCBwYXJ0Ci0jIChIT1NUX0NDPSJnY2MgLW0zMiIpLgotQlVJTERfQ0NfQVJDSF9hcHBlbmQgPSAiICR7QFsnLW0zMicsJyddW2QuZ2V0VmFyKCdTSVRFSU5GT19CSVRTJykgIT0gJzMyJ119IgotCi0jIFRoZSBsdWEgbWFrZWZpbGVzIGV4cGVjdCB0aGUgVEFSR0VUX1NZUyB0byBiZSBmcm9tIHVuYW1lIC1zCi0jIFZhbHVlczogV2luZG93cywgTGludXgsIERhcndpbiwgaU9TLCBTdW5PUywgUFMzLCBHTlUva0ZyZWVCU0QKLUxVQV9UQVJHRVRfT1MgPSAiVW5rbm93biIKLUxVQV9UQVJHRVRfT1NfZGFyd2luID0gIkRhcndpbiIKLUxVQV9UQVJHRVRfT1NfbGludXggPSAiTGludXgiCi1MVUFfVEFSR0VUX09TX2xpbnV4LWdudWVhYmkgPSAiTGludXgiCi1MVUFfVEFSR0VUX09TX21pbmd3MzIgPSAiV2luZG93cyIKLQotIyBXZSBkb24ndCB3YW50IHRoZSBsdWEgYnVpbGRzeXN0ZW0ncyBjb21waWxlciBvcHRpbWl6YXRpb25zLCBvciBpdHMKLSMgc3RyaXBwaW5nLCBhbmQgd2UgZG9uJ3Qgd2FudCBpdCB0byBwaWNrIHVwIENGTEFHUyBvciBMREZMQUdTLCBhcyB0aG9zZSBhcHBseQotIyB0byBib3RoIGhvc3QgYW5kIHRhcmdldCBjb21waWxlcwotRVhUUkFfT0VNQUtFID0gIlwKLSAgICBRPSBFPSdAOicgXAotICAgIFwKLSAgICBDQ09QVD0gQ0NPUFRfeDg2PSBDRkxBR1M9IExERkxBR1M9IFRBUkdFVF9TVFJJUD0nQDonIFwKLSAgICBcCi0gICAgJ1RBUkdFVF9TWVM9JHtMVUFfVEFSR0VUX09TfScgXAotICAgIFwKLSAgICAnQ0M9JHtDQ30nIFwKLSAgICAnVEFSR0VUX0FSPSR7QVJ9IHJjdXMnIFwKLSAgICAnVEFSR0VUX0NGTEFHUz0ke0NGTEFHU30nIFwKLSAgICAnVEFSR0VUX0xERkxBR1M9JHtMREZMQUdTfScgXAotICAgICdUQVJHRVRfU0hMREZMQUdTPSR7TERGTEFHU30nIFwKLSAgICAnSE9TVF9DQz0ke0JVSUxEX0NDfScgXAotICAgICdIT1NUX0NGTEFHUz0ke0JVSUxEX0NGTEFHU30nIFwKLSAgICBcCi0gICAgJ1BSRUZJWD0ke3ByZWZpeH0nIFwKLSAgICAnTVVMVElMSUI9JHtiYXNlbGlifScgXAotICAgICdMRENPTkZJRz06JyBcCi0iCi0KLWRvX2NvbXBpbGUgKCkgewotICAgIG9lX3J1bm1ha2UKLX0KLQotIyBUaGVyZSdzIElOU1RBTExfTElCIGFuZCBJTlNUQUxMX1NIQVJFIGFsc28sIGJ1dCB0aGUgbHVhIGJpbmFyeSBoYXJkY29kZXMgdGhlCi0jICcvc2hhcmUnIGFuZCAnLycgKyBMVUFfTVVMVElMSUIgcGF0aHMsIHNvIHdlIGRvbid0IHdhbnQgdG8gYnJlYWsgdGhvc2UKLSMgZXhwZWN0YXRpb25zLgotRVhUUkFfT0VNQUtFSU5TVCA9ICJcCi0gICAgJ0RFU1RESVI9JHtEfScgXAotICAgICdJTlNUQUxMX0JJTj0ke0R9JHtiaW5kaXJ9JyBcCi0gICAgJ0lOU1RBTExfSU5DPSR7RH0ke2luY2x1ZGVkaXJ9L2x1YWppdC0kKE1BSlZFUikuJChNSU5WRVIpJyBcCi0gICAgJ0lOU1RBTExfTUFOPSR7RH0ke21hbmRpcn0vbWFuMScgXAotIgotZG9faW5zdGFsbCAoKSB7Ci0gICAgb2VfcnVubWFrZSAke0VYVFJBX09FTUFLRUlOU1R9IGluc3RhbGwKLSAgICBybWRpciAke0R9JHtkYXRhZGlyfS9sdWEvNS4qIFwKLSAgICAgICAgICAke0R9JHtkYXRhZGlyfS9sdWEgXAotICAgICAgICAgICR7RH0ke2xpYmRpcn0vbHVhLzUuKiBcCi0gICAgICAgICAgJHtEfSR7bGliZGlyfS9sdWEKLX0KLQotUEFDS0FHRVMgKz0gJ2x1YWppdC1jb21tb24nCi0KLSMgU2VlIHRoZSBjb21tZW50IGZvciBFWFRSQV9PRU1BS0VJTlNULiBUaGlzIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhlIGhhcmRjb2RlZAotIyBwYXRocyBhcmUgcGFja2FnZWQgcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSBsaWJkaXIgYW5kIGRhdGFkaXIgcGF0aHMgYXJlLgotRklMRVNfJHtQTn0gKz0gIiR7cHJlZml4fS8ke2Jhc2VsaWJ9ICR7cHJlZml4fS9zaGFyZSIKLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGlibHVhaml0LTUuMS5zby4yIFwKLSAgICAke2xpYmRpcn0vbGlibHVhaml0LTUuMS5zby4ke1BWfSBcCi0iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9saWJsdWFqaXQtNS4xLmEgXAotICAgICR7bGliZGlyfS9saWJsdWFqaXQtNS4xLnNvIFwKLSAgICAke2xpYmRpcn0vcGtnY29uZmlnL2x1YWppdC5wYyBcCi0iCi1GSUxFU19sdWFqaXQtY29tbW9uID0gIiR7ZGF0YWRpcn0vJHtCUE59LSR7UFZ9IgotCi0jIEFhcmNoNjQvbWlwczY0L3BwYy9wcGM2NCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgcmVsZWFzZQotQ09NUEFUSUJMRV9IT1NUX2FhcmNoNjQgPSAibnVsbCIKLUNPTVBBVElCTEVfSE9TVF9taXBzYXJjaG4zMiA9ICJudWxsIgotQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjY0ID0gIm51bGwiCi1DT01QQVRJQkxFX0hPU1RfcG93ZXJwYyA9ICJudWxsIgotQ09NUEFUSUJMRV9IT1NUX3Bvd2VycGM2NCA9ICJudWxsIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXRfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YWppdC9sdWFqaXRfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0ZjgyMTYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhaml0L2x1YWppdF9naXQuYmIKQEAgLTAsMCArMSw5OSBAQAorU1VNTUFSWSA9ICJKdXN0LUluLVRpbWUgQ29tcGlsZXIgZm9yIEx1YSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT1kNzM5YmI5MjUwYTU1YzEyNGE1NDViNTg4ZmQ3Njc3MSIKK0hPTUVQQUdFID0gImh0dHA6Ly9sdWFqaXQub3JnIgorCitQViA9ICIyLjEuMH5iZXRhMyIKK1NSQ1JFViA9ICIwYWQ2MGNjYmMzNzY4ZmE4ZTNlNzI2ODU4YWRmMjYxOTUwZWRiYzIyIgorU1JDX1VSSSA9ICJnaXQ6Ly9sdWFqaXQub3JnL2dpdC9sdWFqaXQtMi4wLmdpdDtwcm90b2NvbD1odHRwO2JyYW5jaD12Mi4xIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXN0cmlwLWF1dG9tYXRpY2FsbHktdGhpcy1sZWF2ZXMtdGhlLXN0cmlwcGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jbGFuZy5wYXRjaCBcCisgICAgICAgICAgICIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBwa2djb25maWcgYmluY29uZmlnIHNpdGVpbmZvCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCisjIGh0dHA6Ly9sdWFqaXQub3JnL2luc3RhbGwuaHRtbCNjcm9zcworIyBIb3N0IGx1YWppdCBuZWVkcyB0byBiZSBjb21waWxlZCB3aXRoIHRoZSBzYW1lIHBvaW50ZXIgc2l6ZQorIyBJZiB5b3Ugd2FudCB0byBjcm9zcy1jb21waWxlIHRvIGFueSAzMiBiaXQgdGFyZ2V0IG9uIGFuIHg2NCBPUywKKyMgeW91IG5lZWQgdG8gaW5zdGFsbCB0aGUgbXVsdGlsaWIgZGV2ZWxvcG1lbnQgcGFja2FnZSAoZS5nLgorIyBsaWJjNi1kZXYtaTM4NiBvbiBEZWJpYW4vVWJ1bnR1KSBhbmQgYnVpbGQgYSAzMiBiaXQgaG9zdCBwYXJ0CisjIChIT1NUX0NDPSJnY2MgLW0zMiIpLgorQlVJTERfQ0NfQVJDSF9hcHBlbmQgPSAiICR7QFsnLW0zMicsJyddW2QuZ2V0VmFyKCdTSVRFSU5GT19CSVRTJykgIT0gJzMyJ119IgorCisjIFRoZSBsdWEgbWFrZWZpbGVzIGV4cGVjdCB0aGUgVEFSR0VUX1NZUyB0byBiZSBmcm9tIHVuYW1lIC1zCisjIFZhbHVlczogV2luZG93cywgTGludXgsIERhcndpbiwgaU9TLCBTdW5PUywgUFMzLCBHTlUva0ZyZWVCU0QKK0xVQV9UQVJHRVRfT1MgPSAiVW5rbm93biIKK0xVQV9UQVJHRVRfT1NfZGFyd2luID0gIkRhcndpbiIKK0xVQV9UQVJHRVRfT1NfbGludXggPSAiTGludXgiCitMVUFfVEFSR0VUX09TX2xpbnV4LWdudWVhYmkgPSAiTGludXgiCitMVUFfVEFSR0VUX09TX21pbmd3MzIgPSAiV2luZG93cyIKKworIyBXZSBkb24ndCB3YW50IHRoZSBsdWEgYnVpbGRzeXN0ZW0ncyBjb21waWxlciBvcHRpbWl6YXRpb25zLCBvciBpdHMKKyMgc3RyaXBwaW5nLCBhbmQgd2UgZG9uJ3Qgd2FudCBpdCB0byBwaWNrIHVwIENGTEFHUyBvciBMREZMQUdTLCBhcyB0aG9zZSBhcHBseQorIyB0byBib3RoIGhvc3QgYW5kIHRhcmdldCBjb21waWxlcworRVhUUkFfT0VNQUtFID0gIlwKKyAgICBRPSBFPSdAOicgXAorICAgIFwKKyAgICBDQ09QVD0gQ0NPUFRfeDg2PSBDRkxBR1M9IExERkxBR1M9IFRBUkdFVF9TVFJJUD0nQDonIFwKKyAgICBcCisgICAgJ1RBUkdFVF9TWVM9JHtMVUFfVEFSR0VUX09TfScgXAorICAgIFwKKyAgICAnQ0M9JHtDQ30nIFwKKyAgICAnVEFSR0VUX0FSPSR7QVJ9IHJjdXMnIFwKKyAgICAnVEFSR0VUX0NGTEFHUz0ke0NGTEFHU30nIFwKKyAgICAnVEFSR0VUX0xERkxBR1M9JHtMREZMQUdTfScgXAorICAgICdUQVJHRVRfU0hMREZMQUdTPSR7TERGTEFHU30nIFwKKyAgICAnSE9TVF9DQz0ke0JVSUxEX0NDfScgXAorICAgICdIT1NUX0NGTEFHUz0ke0JVSUxEX0NGTEFHU30nIFwKKyAgICBcCisgICAgJ1BSRUZJWD0ke3ByZWZpeH0nIFwKKyAgICAnTVVMVElMSUI9JHtiYXNlbGlifScgXAorICAgICdMRENPTkZJRz06JyBcCisiCisKK2RvX2NvbXBpbGUgKCkgeworICAgIG9lX3J1bm1ha2UKK30KKworIyBUaGVyZSdzIElOU1RBTExfTElCIGFuZCBJTlNUQUxMX1NIQVJFIGFsc28sIGJ1dCB0aGUgbHVhIGJpbmFyeSBoYXJkY29kZXMgdGhlCisjICcvc2hhcmUnIGFuZCAnLycgKyBMVUFfTVVMVElMSUIgcGF0aHMsIHNvIHdlIGRvbid0IHdhbnQgdG8gYnJlYWsgdGhvc2UKKyMgZXhwZWN0YXRpb25zLgorRVhUUkFfT0VNQUtFSU5TVCA9ICJcCisgICAgJ0RFU1RESVI9JHtEfScgXAorICAgICdJTlNUQUxMX0JJTj0ke0R9JHtiaW5kaXJ9JyBcCisgICAgJ0lOU1RBTExfSU5DPSR7RH0ke2luY2x1ZGVkaXJ9L2x1YWppdC0kKE1BSlZFUikuJChNSU5WRVIpJyBcCisgICAgJ0lOU1RBTExfTUFOPSR7RH0ke21hbmRpcn0vbWFuMScgXAorIgorZG9faW5zdGFsbCAoKSB7CisgICAgb2VfcnVubWFrZSAke0VYVFJBX09FTUFLRUlOU1R9IGluc3RhbGwKKyAgICBybWRpciAke0R9JHtkYXRhZGlyfS9sdWEvNS4qIFwKKyAgICAgICAgICAke0R9JHtkYXRhZGlyfS9sdWEgXAorICAgICAgICAgICR7RH0ke2xpYmRpcn0vbHVhLzUuKiBcCisgICAgICAgICAgJHtEfSR7bGliZGlyfS9sdWEKK30KKworUEFDS0FHRVMgKz0gJ2x1YWppdC1jb21tb24nCisKKyMgU2VlIHRoZSBjb21tZW50IGZvciBFWFRSQV9PRU1BS0VJTlNULiBUaGlzIGlzIG5lZWRlZCB0byBlbnN1cmUgdGhlIGhhcmRjb2RlZAorIyBwYXRocyBhcmUgcGFja2FnZWQgcmVnYXJkbGVzcyBvZiB3aGF0IHRoZSBsaWJkaXIgYW5kIGRhdGFkaXIgcGF0aHMgYXJlLgorRklMRVNfJHtQTn0gKz0gIiR7cHJlZml4fS8ke2Jhc2VsaWJ9ICR7cHJlZml4fS9zaGFyZSIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGlibHVhaml0LTUuMS5zby4yIFwKKyAgICAke2xpYmRpcn0vbGlibHVhaml0LTUuMS5zby4ke1BWfSBcCisiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9saWJsdWFqaXQtNS4xLmEgXAorICAgICR7bGliZGlyfS9saWJsdWFqaXQtNS4xLnNvIFwKKyAgICAke2xpYmRpcn0vcGtnY29uZmlnL2x1YWppdC5wYyBcCisiCitGSUxFU19sdWFqaXQtY29tbW9uID0gIiR7ZGF0YWRpcn0vJHtCUE59LSR7UFZ9IgorCisjIG1pcHM2NC9wcGMvcHBjNjQvcmlzY3Y2NCBpcyBub3Qgc3VwcG9ydGVkIGluIHRoaXMgcmVsZWFzZQorQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjMyID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfbWlwc2FyY2huNjQgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9wb3dlcnBjID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfcG93ZXJwYzY0ID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfcG93ZXJwYzY0bGUgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9yaXNjdjY0ID0gIm51bGwiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhcG9zaXgvbHVhcG9zaXgvMDAwMS1maXgtYXZvaWQtcmFjZS1jb25kaXRpb24tYmV0d2Vlbi10ZXN0LWFuZC1ta2Rpci5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9sdWFwb3NpeC9sdWFwb3NpeC8wMDAxLWZpeC1hdm9pZC1yYWNlLWNvbmRpdGlvbi1iZXR3ZWVuLXRlc3QtYW5kLW1rZGlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4YTllM2QKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhcG9zaXgvbHVhcG9zaXgvMDAwMS1maXgtYXZvaWQtcmFjZS1jb25kaXRpb24tYmV0d2Vlbi10ZXN0LWFuZC1ta2Rpci5wYXRjaApAQCAtMCwwICsxLDc1IEBACitGcm9tIDRkZmNhMDM2Yzk2MDcxYmQyYTJjODBmZjg0NzE5YzZkMzc4NTgzNzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIYXNlZWIgQXNocmFmIDxIYXNlZWJfQXNocmFmQG1lbnRvci5jb20+CitEYXRlOiBGcmksIDE3IEFwciAyMDIwIDE0OjM2OjUwICswNTAwCitTdWJqZWN0OiBbUEFUQ0ggMS8xXSBmaXg6IGF2b2lkIHJhY2UgY29uZGl0aW9uIGJldHdlZW4gdGVzdCBhbmQgbWtkaXIKKword2hlbiBidWlsZGluZyBpbiBwYXJhbGxlbCB0aGUgcmFjZSBjb25kaXRpb24sIHdoZW4gdGhlIGRpcmVjdG9yeQoraXMgdGVzdGVkIGZvciBleGlzdGVuY2UgYW5kIGl0IGlzIGNyZWF0ZWQsIGNhbiBicmVhayB0aGUgYnVpbGQKKworU2lnbmVkLW9mZi1ieTogSGFzZWViIEFzaHJhZiA8SGFzZWViX0FzaHJhZkBtZW50b3IuY29tPgorLS0tCisgTWFrZWZpbGUuaW4gICAgICAgICAgICB8IDYgKysrLS0tCisgYnVpbGQtYXV4L3JvY2tzcGVjcy5tayB8IDIgKy0KKyBsb2NhbC5tayAgICAgICAgICAgICAgIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggOWI1MWVmMy4uNDcyMjUyNSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTE2MzcsNyArMTYzNyw3IEBAIGRpc3RjbGVhbi10YWdzOgorIAorIGRpc3RkaXI6ICQoRElTVEZJTEVTKQorIAkkKGFtX19yZW1vdmVfZGlzdGRpcikKKy0JdGVzdCAtZCAiJChkaXN0ZGlyKSIgfHwgbWtkaXIgIiQoZGlzdGRpcikiCisrCSQoTUtESVJfUCkgIiQoZGlzdGRpcikiCisgCUBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAncy9bXS5bXiQkXFwqXS9cXFxcJi9nJ2A7IFwKKyAJdG9wc3JjZGlyc3RyaXA9YGVjaG8gIiQodG9wX3NyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCpdL1xcXFwmL2cnYDsgXAorIAlsaXN0PSckKERJU1RGSUxFUyknOyBcCitAQCAtMTk3NSw3ICsxOTc1LDcgQEAgY2xlYW4tbG9jYWw6CisgCXJtIC1mICQocG9zaXhfc3VibW9kdWxlcykKKyAKKyAkKGFsbGh0bWwpOiAkKEVYVFJBX2V4dF9wb3NpeF9wb3NpeF9sYV9TT1VSQ0VTKSAkKGV4dF9wb3NpeF9wb3NpeF9sYV9TT1VSQ0VTKQorLQl0ZXN0IC1kICQoYnVpbGRkaXIpL2RvYyB8fCBta2RpciAkKGJ1aWxkZGlyKS9kb2MKKysJJChNS0RJUl9QKSAkKGJ1aWxkZGlyKS9kb2MKKyBASEFWRV9MRE9DX1RSVUVACSQoTERPQykgLWMgYnVpbGQtYXV4L2NvbmZpZy5sZCAtZCAkKGFic19zcmNkaXIpL2RvYyAuCisgQEhBVkVfTERPQ19GQUxTRUAJJChNS0RJUl9QKSBkb2MKKyBASEFWRV9MRE9DX0ZBTFNFQAl0b3VjaCBkb2MvaW5kZXguaHRtbCBkb2MvbGRvYy5jc3MKK0BAIC0xOTgzLDcgKzE5ODMsNyBAQCAkKGFsbGh0bWwpOiAkKEVYVFJBX2V4dF9wb3NpeF9wb3NpeF9sYV9TT1VSQ0VTKSAkKGV4dF9wb3NpeF9wb3NpeF9sYV9TT1VSQ0VTKQorIGRvYzogJChhbGxodG1sKQorIAorICQobHVhcm9ja3NfY29uZmlnKTogTWFrZWZpbGUuYW0KKy0JQHRlc3QgLWQgYnVpbGQtYXV4IHx8IG1rZGlyIGJ1aWxkLWF1eAorKwlAJChNS0RJUl9QKSBidWlsZC1hdXgKKyAJJChBTV9WX0dFTil7CQkJCQkJXAorIAkgICQoc2V0X0xVQV9CSU5ESVIpOwkJCQkJXAorIAkgIGVjaG8gJ3JvY2tzX3RyZWVzID0geyAiJChhYnNfc3JjZGlyKS9sdWFyb2NrcyIgfSc7CVwKK2RpZmYgLS1naXQgYS9idWlsZC1hdXgvcm9ja3NwZWNzLm1rIGIvYnVpbGQtYXV4L3JvY2tzcGVjcy5taworaW5kZXggZWJkMWRiZi4uYzhmYmRiYyAxMDA2NDQKKy0tLSBhL2J1aWxkLWF1eC9yb2Nrc3BlY3MubWsKKysrKyBiL2J1aWxkLWF1eC9yb2Nrc3BlY3MubWsKK0BAIC02Miw3ICs2Miw3IEBAIExVQV9JTkNESVIgPSBgY2QgJCRMVUFfQklORElSLy4uL2luY2x1ZGUgJiYgcHdkYAorIExVQV9MSUJESVIgPSBgY2QgJCRMVUFfQklORElSLy4uL2xpYiAmJiBwd2RgCisgCisgJChsdWFyb2Nrc19jb25maWcpOiBNYWtlZmlsZS5hbQorLQlAdGVzdCAtZCBidWlsZC1hdXggfHwgbWtkaXIgYnVpbGQtYXV4CisrCUAkKE1LRElSX1ApIGJ1aWxkLWF1eAorIAkkKEFNX1ZfR0VOKXsJCQkJCQlcCisgCSAgJChzZXRfTFVBX0JJTkRJUik7CQkJCQlcCisgCSAgZWNobyAncm9ja3NfdHJlZXMgPSB7ICIkKGFic19zcmNkaXIpL2x1YXJvY2tzIiB9JzsJXAorZGlmZiAtLWdpdCBhL2xvY2FsLm1rIGIvbG9jYWwubWsKK2luZGV4IGQzOTFlZjcuLjgwYjIyY2UgMTAwNjQ0CistLS0gYS9sb2NhbC5taworKysrIGIvbG9jYWwubWsKK0BAIC0yNTUsNyArMjU1LDcgQEAgZGlzdF9leGFtcGxlc19EQVRBICs9CQkJCVwKKyBhbGxodG1sID0gJChkaXN0X2RvY19EQVRBKSAkKGRpc3RfZXhhbXBsZXNfREFUQSkgJChkaXN0X21vZHVsZXNfREFUQSkgJChkaXN0X2NsYXNzZXNfREFUQSkKKyAKKyAkKGFsbGh0bWwpOiAkKEVYVFJBX2V4dF9wb3NpeF9wb3NpeF9sYV9TT1VSQ0VTKSAkKGV4dF9wb3NpeF9wb3NpeF9sYV9TT1VSQ0VTKQorLQl0ZXN0IC1kICQoYnVpbGRkaXIpL2RvYyB8fCBta2RpciAkKGJ1aWxkZGlyKS9kb2MKKysJJChNS0RJUl9QKSAkKGJ1aWxkZGlyKS9kb2MKKyBpZiBIQVZFX0xET0MKKyAJJChMRE9DKSAtYyBidWlsZC1hdXgvY29uZmlnLmxkIC1kICQoYWJzX3NyY2RpcikvZG9jIC4KKyBlbHNlCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbHVhcG9zaXgvbHVhcG9zaXhfMzMuNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YXBvc2l4L2x1YXBvc2l4XzMzLjQuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmVlOWZlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL2x1YXBvc2l4L2x1YXBvc2l4XzMzLjQuMC5iYgpAQCAtMCwwICsxLDIxIEBACitERVNDUklQVElPTiA9ICJsdWFwb3NpeCBpcyBhIFBPU0lYIGJpbmRpbmcgZm9yIEx1YS4iCitMSUNFTlNFID0gIk1JVCIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9sdWFwb3NpeC9sdWFwb3NpeCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdkZDJhYWQwNGJiN2NhMjEyZTY5MTI3YmE4ZDU4ZjlmIgorCitERVBFTkRTICs9ICJsdWEtbmF0aXZlIGx1YSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2x1YXBvc2l4L2x1YXBvc2l4LmdpdDticmFuY2g9cmVsZWFzZSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1hdm9pZC1yYWNlLWNvbmRpdGlvbi1iZXR3ZWVuLXRlc3QtYW5kLW1rZGlyLnBhdGNoIFwKKyIKK1NSQ1JFViA9ICI4ZTQ5MDJlZDgxYzkyMmVkOGY3NmE3ZWQ4NWJlMWVhYTNmZDdlNjZkIgorUyA9ICIke1dPUktESVJ9L2dpdCIKK0xVQV9WRVJTSU9OID0gIjUuMyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAnbHVhZGlyPSR7ZGF0YWRpcn0vbHVhLyR7TFVBX1ZFUlNJT059JyAnbHVhZXhlY2Rpcj0ke2xpYmRpcn0vbHVhLyR7TFVBX1ZFUlNJT059JyBpbnN0YWxsCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7ZGF0YWRpcn0vbHVhLyR7TFVBX1ZFUlNJT059ICR7bGliZGlyfS9sdWEvJHtMVUFfVkVSU0lPTn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbmFub3BiL25hbm9wYl8wLjQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9uYW5vcGIvbmFub3BiXzAuNC4wLmJiCmluZGV4IGFlZGQ1M2EuLjIxZDExMGEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9uYW5vcGIvbmFub3BiXzAuNC4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9uYW5vcGIvbmFub3BiXzAuNC4wLmJiCkBAIC05LDcgKzksNyBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGNtYWtlIHB5dGhvbm5hdGl2ZQoraW5oZXJpdCBjbWFrZSBweXRob24zbmF0aXZlCiAKIGRvX2luc3RhbGxfYXBwZW5kKCkgewogICAgIGluc3RhbGwgLURtIDA3NTUgJHtTfS9nZW5lcmF0b3IvbmFub3BiX2dlbmVyYXRvci5weSAke0R9JHtiaW5kaXJ9L25hbm9wYl9nZW5lcmF0b3IucHkKQEAgLTI2LDMgKzI2LDUgQEAKICIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitQTkJMQUNLTElTVFtuYW5vcGJdID0gIk5lZWRzIGZvcndhcmQgcG9ydGluZyB0byB1c2UgcHl0aG9uMyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ubG9obWFubi1maWZvL25sb2htYW5uLWZpZm9fZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25sb2htYW5uLWZpZm8vbmxvaG1hbm4tZmlmb19naXQuYmIKaW5kZXggMzI2YTRhYi4uYTk3ZWI1MyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25sb2htYW5uLWZpZm8vbmxvaG1hbm4tZmlmb19naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25sb2htYW5uLWZpZm8vbmxvaG1hbm4tZmlmb19naXQuYmIKQEAgLTEwLDYgKzEwLDggQEAKIAogU1JDUkVWID0gIjBkZmJmNWRhY2JiMTVhMzJjNDNmOTEyYTdlNjZhNTRhYWUzOWQwZjkiCiAKK1VQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKKwogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogIyBubG9obWFubi1maWZvIGlzIGEgaGVhZGVyIG9ubHkgQysrIGxpYnJhcnksIHNvIHRoZSBtYWluIHBhY2thZ2Ugd2lsbCBiZSBlbXB0eS4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDEtRGlzYWJsZS1ydW5uaW5nLWd5cC1maWxlcy1mb3ItYnVuZGxlZC1kZXBzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMS1EaXNhYmxlLXJ1bm5pbmctZ3lwLWZpbGVzLWZvci1idW5kbGVkLWRlcHMucGF0Y2gKaW5kZXggNWQwZGMwMy4uNGRkMTIxZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMS1EaXNhYmxlLXJ1bm5pbmctZ3lwLWZpbGVzLWZvci1idW5kbGVkLWRlcHMucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMS1EaXNhYmxlLXJ1bm5pbmctZ3lwLWZpbGVzLWZvci1idW5kbGVkLWRlcHMucGF0Y2gKQEAgLTQsMjMgKzQsMjIgQEAKIFN1YmplY3Q6IFtQQVRDSF0gRGlzYWJsZSBydW5uaW5nIGd5cCBvbiBzaGFyZWQgZGVwcwogCiAtLS0KLSBNYWtlZmlsZSB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgTWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCBhOTg3NzJmLi5mNTY2M2UyIDEwMDY0NAoraW5kZXggMDk0NzMwMGYyNC4uNmM5ODY5MTk4NCAxMDA2NDQKIC0tLSBhL01ha2VmaWxlCiArKysgYi9NYWtlZmlsZQotQEAgLTEyMyw4ICsxMjMsOCBAQCB3aXRoLWNvZGUtY2FjaGU6Ci0gdGVzdC1jb2RlLWNhY2hlOiB3aXRoLWNvZGUtY2FjaGUKLSAJJChQWVRIT04pIHRvb2xzL3Rlc3QucHkgJChQQVJBTExFTF9BUkdTKSAtLW1vZGU9JChCVUlMRFRZUEVfTE9XRVIpIGNvZGUtY2FjaGUKK0BAIC0xNDEsNyArMTQxLDcgQEAgdGVzdC1jb2RlLWNhY2hlOiB3aXRoLWNvZGUtY2FjaGUKKyAJZWNobyAiJ3Rlc3QtY29kZS1jYWNoZScgdGFyZ2V0IGlzIGEgbm9vcCIKICAKLS1vdXQvTWFrZWZpbGU6IGNvbW1vbi5neXBpIGRlcHMvdXYvdXYuZ3lwIGRlcHMvaHR0cF9wYXJzZXIvaHR0cF9wYXJzZXIuZ3lwIFwKLS0gICAgICAgICAgICAgIGRlcHMvemxpYi96bGliLmd5cCBkZXBzL3Y4L2d5cGZpbGVzL3Rvb2xjaGFpbi5neXBpIFwKLStvdXQvTWFrZWZpbGU6IGNvbW1vbi5neXBpIGRlcHMvaHR0cF9wYXJzZXIvaHR0cF9wYXJzZXIuZ3lwIFwKLSsgICAgICAgICAgICAgIGRlcHMvdjgvZ3lwZmlsZXMvdG9vbGNoYWluLmd5cGkgXAotICAgICAgICAgICAgICAgZGVwcy92OC9neXBmaWxlcy9mZWF0dXJlcy5neXBpIGRlcHMvdjgvZ3lwZmlsZXMvdjguZ3lwIG5vZGUuZ3lwIFwKLSAgICAgICAgICAgICAgIGNvbmZpZy5neXBpCisgb3V0L01ha2VmaWxlOiBjb25maWcuZ3lwaSBjb21tb24uZ3lwaSBub2RlLmd5cCBcCistCWRlcHMvdXYvdXYuZ3lwIGRlcHMvaHR0cF9wYXJzZXIvaHR0cF9wYXJzZXIuZ3lwIGRlcHMvemxpYi96bGliLmd5cCBcCisrCWRlcHMvaHR0cF9wYXJzZXIvaHR0cF9wYXJzZXIuZ3lwIFwKKyAJdG9vbHMvdjhfZ3lwZmlsZXMvdG9vbGNoYWluLmd5cGkgdG9vbHMvdjhfZ3lwZmlsZXMvZmVhdHVyZXMuZ3lwaSBcCisgCXRvb2xzL3Y4X2d5cGZpbGVzL2luc3BlY3Rvci5neXBpIHRvb2xzL3Y4X2d5cGZpbGVzL3Y4Lmd5cAogIAkkKFBZVEhPTikgdG9vbHMvZ3lwX25vZGUucHkgLWYgbWFrZQogLS0gCi0yLjE5LjIKKzIuMjAuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqcy8wMDAxLWJ1aWxkLWFsbG93LXBhc3NpbmctbXVsdGlwbGUtbGlicy10by1wa2dfY29uZmlnLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMS1idWlsZC1hbGxvdy1wYXNzaW5nLW11bHRpcGxlLWxpYnMtdG8tcGtnX2NvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xM2VkZjIyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMS1idWlsZC1hbGxvdy1wYXNzaW5nLW11bHRpcGxlLWxpYnMtdG8tcGtnX2NvbmZpZy5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGZkYWEwZTNiZWY5M2M1YzcyYTcyNThiNWYxZTMwNzE4ZTdkODFmOWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8Z2l0QGFuZHJlZC5uZXQ+CitEYXRlOiBNb24sIDIgTWFyIDIwMjAgMTI6MTc6MDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIGJ1aWxkOiBhbGxvdyBwYXNzaW5nIG11bHRpcGxlIGxpYnMgdG8gcGtnX2NvbmZpZworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitTb21ldGltZXMgaXQncyBuZWNlc3NhcnkgdG8gcGFzcyBtdWx0aXBsZSBsaWJyYXJ5IG5hbWVzIHRvIHBrZy1jb25maWcsCitlLmcuIHRoZSBicm90bGkgc2hhcmVkIGxpYnJhcmllcyBjYW4gYmUgcHVsbGVkIGluIHdpdGgKKyAgICBwa2ctY29uZmlnIGxpYmJyb3RsaWVuYyBsaWJicm90bGlkZWMKKworVXBkYXRlIHRoZSBjb2RlIHRvIGhhbmRsZSBib3RoLCBzdHJpbmdzIChhcyB1c2VkIHNvIGZhciksIGFuZCBsaXN0cworb2Ygc3RyaW5ncy4KKworU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGdpdEBhbmRyZWQubmV0PgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL3B1bGwvMzIwNDZdCisgY29uZmlndXJlLnB5IHwgNiArKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUucHkgYi9jb25maWd1cmUucHkKK2luZGV4IGJlYjA4ZGYwODguLmUzZjc4ZjJmZWQgMTAwNzU1CistLS0gYS9jb25maWd1cmUucHkKKysrKyBiL2NvbmZpZ3VyZS5weQorQEAgLTY4MCw3ICs2ODAsMTEgQEAgZGVmIHBrZ19jb25maWcocGtnKToKKyAgIHJldHZhbCA9ICgpCisgICBmb3IgZmxhZyBpbiBbJy0tbGlicy1vbmx5LWwnLCAnLS1jZmxhZ3Mtb25seS1JJywKKyAgICAgICAgICAgICAgICAnLS1saWJzLW9ubHktTCcsICctLW1vZHZlcnNpb24nXToKKy0gICAgYXJncyArPSBbZmxhZywgcGtnXQorKyAgICBhcmdzICs9IFtmbGFnXQorKyAgICBpZiBpc2luc3RhbmNlKHBrZywgbGlzdCk6CisrICAgICAgYXJncyArPSBwa2cKKysgICAgZWxzZToKKysgICAgICBhcmdzICs9IFtwa2ddCisgICAgIHRyeToKKyAgICAgICBwcm9jID0gc3VicHJvY2Vzcy5Qb3BlbihzaGxleC5zcGxpdChwa2dfY29uZmlnKSArIGFyZ3MsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKy0tIAorMi4yNS4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDItVXNpbmctbmF0aXZlLWJpbmFyaWVzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMi1Vc2luZy1uYXRpdmUtYmluYXJpZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjUxNDJkYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDItVXNpbmctbmF0aXZlLWJpbmFyaWVzLnBhdGNoCkBAIC0wLDAgKzEsNzEgQEAKK0Zyb20gNmMzYWMyMDQ3N2E0YmFjNjQzMDg4ZjI0ZGYzYzA0MmU2MjdmYWZhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEd1aWxsYXVtZSBCdXJlbCA8Z3VpbGxhdW1lLmJ1cmVsQHN0b3Jtc2hpZWxkLmV1PgorRGF0ZTogRnJpLCAzIEphbiAyMDIwIDExOjI1OjU0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFVzaW5nIG5hdGl2ZSBiaW5hcmllcworCistLS0KKyBub2RlLmd5cCAgICAgICAgICAgICAgICAgfCAgNCArKy0tCisgdG9vbHMvdjhfZ3lwZmlsZXMvdjguZ3lwIHwgMTEgKysrKy0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL25vZGUuZ3lwIGIvbm9kZS5neXAKK2luZGV4IDhmNGRjNTE4Li5kOTM4OTE5MCAxMDA2NDQKKy0tLSBhL25vZGUuZ3lwCisrKysgYi9ub2RlLmd5cAorQEAgLTQ0Niw3ICs0NDYsNyBAQAorICAgICAgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvbm9kZV9jb2RlX2NhY2hlLmNjJywKKyAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgICAnYWN0aW9uJzogWworLSAgICAgICAgICAgICAgICAnPEAoX2lucHV0cyknLAorKyAgICAgICAgICAgICAgICAnbWtjb2RlY2FjaGUnLAorICAgICAgICAgICAgICAgICAnPEAoX291dHB1dHMpJywKKyAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgfSwKK0BAIC00NzEsNyArNDcxLDcgQEAKKyAgICAgICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL25vZGVfc25hcHNob3QuY2MnLAorICAgICAgICAgICAgICAgXSwKKyAgICAgICAgICAgICAgICdhY3Rpb24nOiBbCistICAgICAgICAgICAgICAgICc8QChfaW5wdXRzKScsCisrICAgICAgICAgICAgICAgICdub2RlX21rc25hcHNob3QnLAorICAgICAgICAgICAgICAgICAnPEAoX291dHB1dHMpJywKKyAgICAgICAgICAgICAgIF0sCisgICAgICAgICAgICAgfSwKK2RpZmYgLS1naXQgYS90b29scy92OF9neXBmaWxlcy92OC5neXAgYi90b29scy92OF9neXBmaWxlcy92OC5neXAKK2luZGV4IGE1MDZhNjdkLi5jOTFmN2RkZSAxMDA2NDQKKy0tLSBhL3Rvb2xzL3Y4X2d5cGZpbGVzL3Y4Lmd5cAorKysrIGIvdG9vbHMvdjhfZ3lwZmlsZXMvdjguZ3lwCitAQCAtMTQwLDcgKzE0MCw4IEBACisgICAgICAgICAgICAgJzxAKHRvcnF1ZV9vdXRwdXRzKScsCisgICAgICAgICAgIF0sCisgICAgICAgICAgICdhY3Rpb24nOiBbCistICAgICAgICAgICAgJzxAKF9pbnB1dHMpJywKKysgICAgICAgICAgICAndG9ycXVlJywKKysgICAgICAgICAgICAnPEAodG9ycXVlX2ZpbGVzKScsCisgICAgICAgICAgICAgJy1vJywgJzwodG9ycXVlX291dHB1dF9yb290KS90b3JxdWUtZ2VuZXJhdGVkJywKKyAgICAgICAgICAgICAnLXY4LXJvb3QnLCAnPChWOF9ST09UKScKKyAgICAgICAgICAgXSwKK0BAIC0yNDcsOSArMjQ4LDcgQEAKKyAgICAgICAgICAgICAnPChnZW5lcmF0ZV9ieXRlY29kZV9idWlsdGluc19saXN0X291dHB1dCknLAorICAgICAgICAgICBdLAorICAgICAgICAgICAnYWN0aW9uJzogWworLSAgICAgICAgICAgICdweXRob24nLAorLSAgICAgICAgICAgICc8KFY4X1JPT1QpL3Rvb2xzL3J1bi5weScsCistICAgICAgICAgICAgJzxAKF9pbnB1dHMpJywKKysgICAgICAgICAgICAnYnl0ZWNvZGVfYnVpbHRpbnNfbGlzdF9nZW5lcmF0b3InLAorICAgICAgICAgICAgICc8QChfb3V0cHV0cyknLAorICAgICAgICAgICBdLAorICAgICAgICAgfSwKK0BAIC0xMzk2LDkgKzEzOTUsNyBAQAorICAgICAgICAgICAgICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS9zcmMvcmVnZXhwL3NwZWNpYWwtY2FzZS5jYycsCisgICAgICAgICAgIF0sCisgICAgICAgICAgICdhY3Rpb24nOiBbCistICAgICAgICAgICAgJ3B5dGhvbicsCistICAgICAgICAgICAgJzwoVjhfUk9PVCkvdG9vbHMvcnVuLnB5JywKKy0gICAgICAgICAgICAnPEAoX2lucHV0cyknLAorKyAgICAgICAgICAgICdnZW4tcmVnZXhwLXNwZWNpYWwtY2FzZScsCisgICAgICAgICAgICAgJzxAKF9vdXRwdXRzKScsCisgICAgICAgICAgIF0sCisgICAgICAgICB9LAorLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMi1Vc2luZy1uYXRpdmUtdG9ycXVlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMi1Vc2luZy1uYXRpdmUtdG9ycXVlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlOTAzNWY5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDItVXNpbmctbmF0aXZlLXRvcnF1ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gNGJiZWU1ZTNkNThiYzQ5MTE5OTlmM2VjMmNjNWFhYjhkZWQ2NzE3YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJXaW5rZXIgTWF0dGhpYXMgKFRULUNBL0VORzEpIiA8TWF0dGhpYXMuV2lua2VyQGRlLmJvc2NoLmNvbT4KLURhdGU6IFR1ZSwgMTEgRGVjIDIwMTggMTA6NDQ6MjkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNpbmcgbmF0aXZlIHRvcnF1ZQotCi0tLS0KLSBkZXBzL3Y4L2d5cGZpbGVzL3Y4Lmd5cCB8IDYgKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2RlcHMvdjgvZ3lwZmlsZXMvdjguZ3lwIGIvZGVwcy92OC9neXBmaWxlcy92OC5neXAKLWluZGV4IDhjNzhmMDIyNTUuLjQzNDE2ODg0NGUgMTAwNjQ0Ci0tLS0gYS9kZXBzL3Y4L2d5cGZpbGVzL3Y4Lmd5cAotKysrIGIvZGVwcy92OC9neXBmaWxlcy92OC5neXAKLUBAIC0yODMxLDcgKzI4MzEsNiBAQAotICAgICAgICAgewotICAgICAgICAgICAnYWN0aW9uX25hbWUnOiAncnVuX3RvcnF1ZScsCi0gICAgICAgICAgICdpbnB1dHMnOiBbICAjIE9yZGVyIG1hdHRlcnMuCi0tICAgICAgICAgICAgJzwoUFJPRFVDVF9ESVIpLzwoRVhFQ1VUQUJMRV9QUkVGSVgpdG9ycXVlPChFWEVDVVRBQkxFX1NVRkZJWCknLAotICAgICAgICAgICAgICcuLi9zcmMvYnVpbHRpbnMvYmFzZS50cScsCi0gICAgICAgICAgICAgJy4uL3NyYy9idWlsdGlucy9hcnJheS50cScsCi0gICAgICAgICAgICAgJy4uL3NyYy9idWlsdGlucy90eXBlZC1hcnJheS50cScsCi1AQCAtMjg0NSw3ICsyODQ0LDEwIEBACi0gICAgICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3RvcnF1ZS1nZW5lcmF0ZWQvYnVpbHRpbnMtdHlwZWQtYXJyYXktZnJvbS1kc2wtZ2VuLmNjJywKLSAgICAgICAgICAgICAnPChTSEFSRURfSU5URVJNRURJQVRFX0RJUikvdG9ycXVlLWdlbmVyYXRlZC9idWlsdGlucy10eXBlZC1hcnJheS1mcm9tLWRzbC1nZW4uaCcsCi0gICAgICAgICAgIF0sCi0tICAgICAgICAgICdhY3Rpb24nOiBbJzxAKF9pbnB1dHMpJywgJy1vJywgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpL3RvcnF1ZS1nZW5lcmF0ZWQnXSwKLSsgICAgICAgICAgJ2FjdGlvbic6IFsKLSsgICAgICAgICAgICAndG9ycXVlJywKLSsgICAgICAgICAgICAnPEAoX2lucHV0cyknLAotKyAgICAgICAgICAgICctbycsICc8KFNIQVJFRF9JTlRFUk1FRElBVEVfRElSKS90b3JxdWUtZ2VuZXJhdGVkJ10sCi0gICAgICAgICB9LAotICAgICAgIF0sCi0gICAgIH0sICMgdG9ycXVlCi0tLSAKLTIuMTkuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqcy8wMDAyLWJ1aWxkLWFsbG93LXVzZS1vZi1zeXN0ZW0taW5zdGFsbGVkLWJyb3RsaS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDItYnVpbGQtYWxsb3ctdXNlLW9mLXN5c3RlbS1pbnN0YWxsZWQtYnJvdGxpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZjMDM4ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqcy8wMDAyLWJ1aWxkLWFsbG93LXVzZS1vZi1zeXN0ZW0taW5zdGFsbGVkLWJyb3RsaS5wYXRjaApAQCAtMCwwICsxLDY2IEBACitGcm9tIGYwZjkyN2ZlZWU4Y2IxZmIxNzM4MzVkNWMzZjZiZWI2YmY3ZDVlNTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8Z2l0QGFuZHJlZC5uZXQ+CitEYXRlOiBNb24sIDIgTWFyIDIwMjAgMTI6MTc6MzUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIGJ1aWxkOiBhbGxvdyB1c2Ugb2Ygc3lzdGVtLWluc3RhbGxlZCBicm90bGkKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworYnJvdGxpIGlzIGF2YWlsYWJsZSBhcyBhIHNoYXJlZCBsaWJyYXJ5IHNpbmNlIDIwMTYsIHNvIGl0IG1ha2VzIHNlbnNlCit0byBhbGxvdyBpdHMgdXNlIGFzIGEgc3lzdGVtLWluc3RhbGxlZCB2ZXJzaW9uLgorCitTb21lIG9mIHRoZSBpbmZyYXN0cnVjdHVyZSB3YXMgaW4gcGxhY2UgYWxyZWFkeSAobm9kZS5neXAgYW5kCitub2RlLmd5cGkpLCBidXQgc29tZSBiaXRzIGluIHRoZSBjb25maWd1cmUgc2NyaXB0IGhlcmUgd2VyZSBtaXNzaW5nLgorCitBZGQgdGhlbSwga2VlcGluZyB0aGUgZGVmYXVsdCBhcyBiZWZvcmUsIHRvIHVzZSB0aGUgYnVuZGxlZCB2ZXJzaW9uLgorCitSZWZzOiBodHRwczovL2dpdGh1Yi5jb20vZ29vZ2xlL2Jyb3RsaS9wdWxsLzQyMQorU2lnbmVkLW9mZi1ieTogQW5kcsOpIERyYXN6aWsgPGdpdEBhbmRyZWQubmV0PgorLS0tCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL25vZGVqcy9ub2RlL3B1bGwvMzIwNDZdCisgY29uZmlndXJlLnB5IHwgMjIgKysrKysrKysrKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUucHkgYi9jb25maWd1cmUucHkKK2luZGV4IGUzZjc4ZjJmZWQuLjAxOTBlMzFiNDEgMTAwNzU1CistLS0gYS9jb25maWd1cmUucHkKKysrKyBiL2NvbmZpZ3VyZS5weQorQEAgLTMwMSw2ICszMDEsMjcgQEAgc2hhcmVkX29wdGdyb3VwLmFkZF9vcHRpb24oJy0tc2hhcmVkLXpsaWItbGlicGF0aCcsCisgICAgIGRlc3Q9J3NoYXJlZF96bGliX2xpYnBhdGgnLAorICAgICBoZWxwPSdhIGRpcmVjdG9yeSB0byBzZWFyY2ggZm9yIHRoZSBzaGFyZWQgemxpYiBETEwnKQorIAorK3NoYXJlZF9vcHRncm91cC5hZGRfb3B0aW9uKCctLXNoYXJlZC1icm90bGknLAorKyAgICBhY3Rpb249J3N0b3JlX3RydWUnLAorKyAgICBkZXN0PSdzaGFyZWRfYnJvdGxpJywKKysgICAgaGVscD0nbGluayB0byBhIHNoYXJlZCBicm90bGkgRExMIGluc3RlYWQgb2Ygc3RhdGljIGxpbmtpbmcnKQorKworK3NoYXJlZF9vcHRncm91cC5hZGRfb3B0aW9uKCctLXNoYXJlZC1icm90bGktaW5jbHVkZXMnLAorKyAgICBhY3Rpb249J3N0b3JlJywKKysgICAgZGVzdD0nc2hhcmVkX2Jyb3RsaV9pbmNsdWRlcycsCisrICAgIGhlbHA9J2RpcmVjdG9yeSBjb250YWluaW5nIGJyb3RsaSBoZWFkZXIgZmlsZXMnKQorKworK3NoYXJlZF9vcHRncm91cC5hZGRfb3B0aW9uKCctLXNoYXJlZC1icm90bGktbGlibmFtZScsCisrICAgIGFjdGlvbj0nc3RvcmUnLAorKyAgICBkZXN0PSdzaGFyZWRfYnJvdGxpX2xpYm5hbWUnLAorKyAgICBkZWZhdWx0PSdicm90bGlkZWMsYnJvdGxpZW5jJywKKysgICAgaGVscD0nYWx0ZXJuYXRpdmUgbGliIG5hbWUgdG8gbGluayB0byBbZGVmYXVsdDogJWRlZmF1bHRdJykKKysKKytzaGFyZWRfb3B0Z3JvdXAuYWRkX29wdGlvbignLS1zaGFyZWQtYnJvdGxpLWxpYnBhdGgnLAorKyAgICBhY3Rpb249J3N0b3JlJywKKysgICAgZGVzdD0nc2hhcmVkX2Jyb3RsaV9saWJwYXRoJywKKysgICAgaGVscD0nYSBkaXJlY3RvcnkgdG8gc2VhcmNoIGZvciB0aGUgc2hhcmVkIGJyb3RsaSBETEwnKQorKworIHNoYXJlZF9vcHRncm91cC5hZGRfb3B0aW9uKCctLXNoYXJlZC1jYXJlcycsCisgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgIGRlc3Q9J3NoYXJlZF9jYXJlcycsCitAQCAtMTY5Miw2ICsxNzEzLDcgQEAgY29uZmlndXJlX25hcGkob3V0cHV0KQorIGNvbmZpZ3VyZV9saWJyYXJ5KCd6bGliJywgb3V0cHV0KQorIGNvbmZpZ3VyZV9saWJyYXJ5KCdodHRwX3BhcnNlcicsIG91dHB1dCkKKyBjb25maWd1cmVfbGlicmFyeSgnbGlidXYnLCBvdXRwdXQpCisrY29uZmlndXJlX2xpYnJhcnkoJ2Jyb3RsaScsIG91dHB1dCwgcGtnbmFtZT1bJ2xpYmJyb3RsaWRlYycsICdsaWJicm90bGllbmMnXSkKKyBjb25maWd1cmVfbGlicmFyeSgnY2FyZXMnLCBvdXRwdXQsIHBrZ25hbWU9J2xpYmNhcmVzJykKKyBjb25maWd1cmVfbGlicmFyeSgnbmdodHRwMicsIG91dHB1dCwgcGtnbmFtZT0nbGlibmdodHRwMicpCisgY29uZmlndXJlX3Y4KG91dHB1dCkKKy0tIAorMi4yNS4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDMtSW5zdGFsbC1ib3RoLWJpbmFyaWVzLWFuZC11c2UtbGliZGlyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMy1JbnN0YWxsLWJvdGgtYmluYXJpZXMtYW5kLXVzZS1saWJkaXIucGF0Y2gKaW5kZXggN2FhNzBmZS4uNTk5Zjc0MiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMy1JbnN0YWxsLWJvdGgtYmluYXJpZXMtYW5kLXVzZS1saWJkaXIucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwMy1JbnN0YWxsLWJvdGgtYmluYXJpZXMtYW5kLXVzZS1saWJkaXIucGF0Y2gKQEAgLTE1LDE3ICsxNSwxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnbWFpbC5jb20+Ci0KIC0tLQogIGNvbmZpZ3VyZS5weSAgICAgfCAgNyArKysrKysrCiAgdG9vbHMvaW5zdGFsbC5weSB8IDMxICsrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0KICAyIGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLnB5IGIvY29uZmlndXJlLnB5Ci1pbmRleCBjZmQ0MjA3Li5lYjI2ZjdkIDEwMDc1NQoraW5kZXggMjBjY2UyMTRkYi4uZTJkNzhhMmE1MSAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZS5weQogKysrIGIvY29uZmlndXJlLnB5Ci1AQCAtNTUyLDYgKzU1MiwxMiBAQCBwYXJzZXIuYWRkX29wdGlvbignLS1zaGFyZWQnLAorQEAgLTU1OSw2ICs1NTksMTIgQEAgcGFyc2VyLmFkZF9vcHRpb24oJy0tc2hhcmVkJywKICAgICAgaGVscD0nY29tcGlsZSBzaGFyZWQgbGlicmFyeSBmb3IgZW1iZWRkaW5nIG5vZGUgaW4gYW5vdGhlciBwcm9qZWN0LiAnICsKICAgICAgICAgICAnKFRoaXMgbW9kZSBpcyBub3Qgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgZm9yIHJlZ3VsYXIgYXBwbGljYXRpb25zKScpCiAgCkBAIC0zOCwxOSArMzcsMTkgQEAKICBwYXJzZXIuYWRkX29wdGlvbignLS13aXRob3V0LXY4LXBsYXRmb3JtJywKICAgICAgYWN0aW9uPSdzdG9yZV90cnVlJywKICAgICAgZGVzdD0nd2l0aG91dF92OF9wbGF0Zm9ybScsCi1AQCAtMTA5NSw2ICsxMTAxLDcgQEAgZGVmIGNvbmZpZ3VyZV9ub2RlKG8pOgotICAgaWYgb3B0aW9ucy5jb2RlX2NhY2hlX3BhdGg6Ci0gICAgIG9bJ3ZhcmlhYmxlcyddWydub2RlX2NvZGVfY2FjaGVfcGF0aCddID0gb3B0aW9ucy5jb2RlX2NhY2hlX3BhdGgKK0BAIC0xMTAzLDYgKzExMDksNyBAQCBkZWYgY29uZmlndXJlX25vZGUobyk6CisgICBpZiBvWyd2YXJpYWJsZXMnXVsnd2FudF9zZXBhcmF0ZV9ob3N0X3Rvb2xzZXQnXSA9PSAwOgorICAgICBvWyd2YXJpYWJsZXMnXVsnbm9kZV9jb2RlX2NhY2hlJ10gPSAneWVzJyAjIEZvciB0ZXN0aW5nCiAgICBvWyd2YXJpYWJsZXMnXVsnbm9kZV9zaGFyZWQnXSA9IGIob3B0aW9ucy5zaGFyZWQpCiArICBvWyd2YXJpYWJsZXMnXVsnbGliZGlyJ10gPSBvcHRpb25zLmxpYmRpcgogICAgbm9kZV9tb2R1bGVfdmVyc2lvbiA9IGdldG1vZHVsZXZlcnNpb24uZ2V0X3ZlcnNpb24oKQogIAogICAgaWYgc3lzLnBsYXRmb3JtID09ICdkYXJ3aW4nOgogZGlmZiAtLWdpdCBhL3Rvb2xzL2luc3RhbGwucHkgYi90b29scy9pbnN0YWxsLnB5Ci1pbmRleCAwMjhjMzJlLi5iZjQ0M2M0IDEwMDc1NQoraW5kZXggNjU1ODAyOTgwYS4uZmU0NzIzYmYxNSAxMDA3NTUKIC0tLSBhL3Rvb2xzL2luc3RhbGwucHkKICsrKyBiL3Rvb2xzL2luc3RhbGwucHkKLUBAIC0xMTcsMjYgKzExNywyMyBAQCBkZWYgc3ViZGlyX2ZpbGVzKHBhdGgsIGRlc3QsIGFjdGlvbik6CitAQCAtMTIxLDI2ICsxMjEsMjMgQEAgZGVmIHN1YmRpcl9maWxlcyhwYXRoLCBkZXN0LCBhY3Rpb24pOgogIAogIGRlZiBmaWxlcyhhY3Rpb24pOgogICAgaXNfd2luZG93cyA9IHN5cy5wbGF0Zm9ybSA9PSAnd2luMzInCkBAIC05Miw1ICs5MSw1IEBACiAgICBpZiAndHJ1ZScgPT0gdmFyaWFibGVzLmdldCgnbm9kZV91c2VfZHRyYWNlJyk6CiAgICAgIGFjdGlvbihbJ291dC9SZWxlYXNlL25vZGUuZCddLCAnbGliL2R0cmFjZS9ub2RlLmQnKQogLS0gCi0yLjIzLjAKKzIuMjAuMQogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqcy8wMDA0LU1ha2UtY29tcGF0aWJpbGl0eS13aXRoLWdjYy00LjgucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqcy8wMDA0LU1ha2UtY29tcGF0aWJpbGl0eS13aXRoLWdjYy00LjgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkyNWMwODUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwNC1NYWtlLWNvbXBhdGliaWxpdHktd2l0aC1nY2MtNC44LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotSW1wbGVtZW50IGZ1bmN0aW9uIGFzIHdyYXBwZXIgZm9yIHN0ZDo6bWFrZV91bmlxdWUKLW1ldGhvZCB0byBiZSBjb21wYXRpYmxlIHdpdGggZ2NjIDwgNC45IC4KLSJlcnJvcjo6bWFrZV91bmlxdWUgaXMgbm90IGEgbWVtYmVyIG9mICdzdGQnIgotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEJyYWQgQmlzaG9wIDxicmFkbGV5YkBmdXp6aWVzcXVpcnJlbC5jb20+Ci0KLWRpZmYgLU5hdXIgbm9kZS12MTAuMTUuMS9zcmMvY2FyZXNfd3JhcC5jYyBub2RlLXYxMC4xNS4xL3NyYy9jYXJlc193cmFwLmNjCi0tLS0gbm9kZS12MTAuMTUuMS9zcmMvY2FyZXNfd3JhcC5jYwkyMDE5LTAxLTI5IDA4OjIwOjUwLjAwMDAwMDAwMCArMDEwMAotKysrIG5vZGUtdjEwLjE1LjEvc3JjL2NhcmVzX3dyYXAuY2MJMjAxOS0wMi0yMSAxNjoyMjoyNS40ODkxMzE2NjUgKzAxMDAKLUBAIC01Miw2ICs1MiwxNiBAQAotICMgZGVmaW5lIEFJX1Y0TUFQUEVEIDAKLSAjZW5kaWYKLSAKLSsjaWZuZGVmIF9fY3BwX2xpYl9tYWtlX3VuaXF1ZQotK25hbWVzcGFjZSBzdGQgewotKyAgLy8vIG1ha2VfdW5pcXVlIGltcGxlbWVudGF0aW9uCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotKyAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1ha2VfdW5pcXVlKEFyZ3MmJi4uLiBhcmdzKSB7Ci0rICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8VD4obmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7Ci0rICB9Ci0rfQotKyNlbmRpZgotKwotIG5hbWVzcGFjZSBub2RlIHsKLSBuYW1lc3BhY2UgY2FyZXNfd3JhcCB7Ci0gCi1kaWZmIC1OYXVyIG5vZGUtdjEwLjE1LjEvc3JjL2luc3BlY3Rvcl9hZ2VudC5jYyBub2RlLXYxMC4xNS4xL3NyYy9pbnNwZWN0b3JfYWdlbnQuY2MKLS0tLSBub2RlLXYxMC4xNS4xL3NyYy9pbnNwZWN0b3JfYWdlbnQuY2MJMjAxOS0wMS0yOSAwODoyMDo1MC4wMDAwMDAwMDAgKzAxMDAKLSsrKyBub2RlLXYxMC4xNS4xL3NyYy9pbnNwZWN0b3JfYWdlbnQuY2MJMjAxOS0wMi0yMSAxNjoyMjowOS4wMDAxODU5OTIgKzAxMDAKLUBAIC0yNCw2ICsyNCwxNiBAQAotICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0gI2VuZGlmICAvLyBfX1BPU0lYX18KLSAKLSsjaWZuZGVmIF9fY3BwX2xpYl9tYWtlX3VuaXF1ZQotK25hbWVzcGFjZSBzdGQgewotKyAgLy8vIG1ha2VfdW5pcXVlIGltcGxlbWVudGF0aW9uCi0rICB0ZW1wbGF0ZTx0eXBlbmFtZSBULCB0eXBlbmFtZS4uLiBBcmdzPgotKyAgc3RkOjp1bmlxdWVfcHRyPFQ+IG1ha2VfdW5pcXVlKEFyZ3MmJi4uLiBhcmdzKSB7Ci0rICAgIHJldHVybiBzdGQ6OnVuaXF1ZV9wdHI8VD4obmV3IFQoc3RkOjpmb3J3YXJkPEFyZ3M+KGFyZ3MpLi4uKSk7Ci0rICB9Ci0rfQotKyNlbmRpZgotKwotIG5hbWVzcGFjZSBub2RlIHsKLSBuYW1lc3BhY2UgaW5zcGVjdG9yIHsKLSBuYW1lc3BhY2UgewotCi1kaWZmIC0tZ2l0IGEvc3JjL2luc3BlY3Rvci9tYWluX3RocmVhZF9pbnRlcmZhY2UuY2MgYi9zcmMvaW5zcGVjdG9yL21haW5fdGhyZWFkX2ludGVyZmFjZS5jYwotaW5kZXggZTM3NGMwZmQ3MC4uMDVkN2Q4YzYwZiAxMDA2NDQKLS0tLSBhL3NyYy9pbnNwZWN0b3IvbWFpbl90aHJlYWRfaW50ZXJmYWNlLmNjCi0rKysgYi9zcmMvaW5zcGVjdG9yL21haW5fdGhyZWFkX2ludGVyZmFjZS5jYwotQEAgLTYsNiArNiwxNiBAQAotICNpbmNsdWRlIDxmdW5jdGlvbmFsPgotICNpbmNsdWRlIDx1bmljb2RlL3VuaXN0ci5oPgotCi0rI2lmbmRlZiBfX2NwcF9saWJfbWFrZV91bmlxdWUKLStuYW1lc3BhY2Ugc3RkIHsKLSsgIC8vLyBtYWtlX3VuaXF1ZSBpbXBsZW1lbnRhdGlvbgotKyAgdGVtcGxhdGU8dHlwZW5hbWUgVCwgdHlwZW5hbWUuLi4gQXJncz4KLSsgIHN0ZDo6dW5pcXVlX3B0cjxUPiBtYWtlX3VuaXF1ZShBcmdzJiYuLi4gYXJncykgewotKyAgICByZXR1cm4gc3RkOjp1bmlxdWVfcHRyPFQ+KG5ldyBUKHN0ZDo6Zm9yd2FyZDxBcmdzPihhcmdzKS4uLikpOwotKyAgfQotK30KLSsjZW5kaWYKLSsKLSBuYW1lc3BhY2Ugbm9kZSB7Ci0gbmFtZXNwYWNlIGluc3BlY3RvciB7Ci0gbmFtZXNwYWNlIHsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDQtdjgtZG9uLXQtb3ZlcnJpZGUtQVJNLUNGTEFHUy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDQtdjgtZG9uLXQtb3ZlcnJpZGUtQVJNLUNGTEFHUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2VkOTcyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwNC12OC1kb24tdC1vdmVycmlkZS1BUk0tQ0ZMQUdTLnBhdGNoCkBAIC0wLDAgKzEsMTAyIEBACitGcm9tIDQ3ZWU1Y2M1NTAxMjg5MjA1ZDNlOGU5ZjI3ZWE5ZGFmMThjZWJhYzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8Z2l0QGFuZHJlZC5uZXQ+CitEYXRlOiBTYXQsIDkgTm92IDIwMTkgMTQ6NDU6MzAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gdjg6IGRvbid0IG92ZXJyaWRlIEFSTSBDRkxBR1MKK01JTUUtVmVyc2lvbjogMS4wCitDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKK0NvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKKworVGhpcyBvdmVycmlkZXMgeW9jdG8tcHJvdmlkZWQgYnVpbGQgZmxhZ3Mgd2l0aCBpdHMgb3duLCBlLmcgd2UgZ2V0CisgICAgYXJtLXBva3ktbGludXgtbXVzbGVhYmktZysrICAtbXRodW1iIC1tZnB1PW5lb24gLW1mbG9hdC1hYmk9aGFyZCAtbWNwdT1jb3J0ZXgtYTcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbWFyY2g9YXJtdjctYSAtbWZwdT1uZW9uIC1tZmxvYXQtYWJpPWhhcmQgLW1hcm0KKworQ2F1c2luZyB0aGUgbGF0dGVyIHRvIG92ZXJyaWRlIHRoZSBmb3JtZXIsIGFuZCBjb21waWxlciB3YXJuaW5nczoKKyAgICBjYzFwbHVzOiB3YXJuaW5nOiBzd2l0Y2ggJy1tY3B1PWNvcnRleC1hNycgY29uZmxpY3RzIHdpdGggJy1tYXJjaD1hcm12Ny1hJyBzd2l0Y2gKKworUGF0Y2ggdGhpcyBvdXQsIHNvIHRoYXQgeW9jdG8tcHJvdmlkZWQgZmxhZ3MgdGFrZSBwcmVjZWRlbmNlLgorTm90ZSB0aGF0IGluIHJlYWxpdHkgdGhlIHNhbWUgc2hvdWxkIHByb2JhYmx5IGJlIGRvbmUgZm9yIGFsbCB0aGUgb3RoZXIKK3N1cHBvcnRlZCBhcmNoaXRlY3R1cmVzLCB0b28uCisKK05vdGUgdGhhdCB0aGlzIGFsc28gc3dpdGNoZXMgdG8gVGh1bWIoMikgbW9kZSAoaW4gbXkgY2FzZSkuIE5vIG9idmlvdXMKK3Byb2JsZW1zIGhhdmUgYmVlbiBub3RlZCBkdXJpbmcgY29tcGlsYXRpb24gb3IgcnVudGltZS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1zcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxnaXRAYW5kcmVkLm5ldD4KKy0tLQorIHRvb2xzL3Y4X2d5cGZpbGVzL3Rvb2xjaGFpbi5neXBpIHwgNTIgKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rvb2xzL3Y4X2d5cGZpbGVzL3Rvb2xjaGFpbi5neXBpIGIvdG9vbHMvdjhfZ3lwZmlsZXMvdG9vbGNoYWluLmd5cGkKK2luZGV4IDI2NGIzZTQ3OGUuLjBiNDE4NDgxNDUgMTAwNjQ0CistLS0gYS90b29scy92OF9neXBmaWxlcy90b29sY2hhaW4uZ3lwaQorKysrIGIvdG9vbHMvdjhfZ3lwZmlsZXMvdG9vbGNoYWluLmd5cGkKK0BAIC0yMTEsMzEgKzIxMSw3IEBACisgICAgICAgICAndGFyZ2V0X2NvbmRpdGlvbnMnOiBbCisgICAgICAgICAgIFsnX3Rvb2xzZXQ9PSJob3N0IicsIHsKKyAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKKy0gICAgICAgICAgICAgIFsndjhfdGFyZ2V0X2FyY2g9PWhvc3RfYXJjaCcsIHsKKy0gICAgICAgICAgICAgICAgIyBIb3N0IGJ1aWx0IHdpdGggYW4gQXJtIENYWCBjb21waWxlci4KKy0gICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCistICAgICAgICAgICAgICAgICAgWyAnYXJtX3ZlcnNpb249PTcnLCB7CistICAgICAgICAgICAgICAgICAgICAnY2ZsYWdzJzogWyctbWFyY2g9YXJtdjctYScsXSwKKy0gICAgICAgICAgICAgICAgICB9XSwKKy0gICAgICAgICAgICAgICAgICBbICdhcm1fdmVyc2lvbj09NyBvciBhcm1fdmVyc2lvbj09ImRlZmF1bHQiJywgeworLSAgICAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCistICAgICAgICAgICAgICAgICAgICAgIFsgJ2FybV9mcHUhPSJkZWZhdWx0IicsIHsKKy0gICAgICAgICAgICAgICAgICAgICAgICAnY2ZsYWdzJzogWyctbWZwdT08KGFybV9mcHUpJyxdLAorLSAgICAgICAgICAgICAgICAgICAgICB9XSwKKy0gICAgICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICAgICAgfV0sCistICAgICAgICAgICAgICAgICAgWyAnYXJtX2Zsb2F0X2FiaSE9ImRlZmF1bHQiJywgeworLSAgICAgICAgICAgICAgICAgICAgJ2NmbGFncyc6IFsnLW1mbG9hdC1hYmk9PChhcm1fZmxvYXRfYWJpKScsXSwKKy0gICAgICAgICAgICAgICAgICB9XSwKKy0gICAgICAgICAgICAgICAgICBbICdhcm1fdGh1bWI9PTEnLCB7CistICAgICAgICAgICAgICAgICAgICAnY2ZsYWdzJzogWyctbXRodW1iJyxdLAorLSAgICAgICAgICAgICAgICAgIH1dLAorLSAgICAgICAgICAgICAgICAgIFsgJ2FybV90aHVtYj09MCcsIHsKKy0gICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOiBbJy1tYXJtJyxdLAorLSAgICAgICAgICAgICAgICAgIH1dLAorLSAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICAgICAgfSwgeworLSAgICAgICAgICAgICAgICAjICd2OF90YXJnZXRfYXJjaCE9aG9zdF9hcmNoJworKyAgICAgICAgICAgICAgWyd2OF90YXJnZXRfYXJjaCE9aG9zdF9hcmNoJywgeworICAgICAgICAgICAgICAgICAjIEhvc3Qgbm90IGJ1aWx0IHdpdGggYW4gQXJtIENYWCBjb21waWxlciAoc2ltdWxhdG9yIGJ1aWxkKS4KKyAgICAgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCisgICAgICAgICAgICAgICAgICAgWyAnYXJtX2Zsb2F0X2FiaT09ImhhcmQiJywgeworQEAgLTI1NCwzMSArMjMwLDcgQEAKKyAgICAgICAgICAgfV0sICAjIF90b29sc2V0PT0iaG9zdCIKKyAgICAgICAgICAgWydfdG9vbHNldD09InRhcmdldCInLCB7CisgICAgICAgICAgICAgJ2NvbmRpdGlvbnMnOiBbCistICAgICAgICAgICAgICBbJ3Y4X3RhcmdldF9hcmNoPT10YXJnZXRfYXJjaCcsIHsKKy0gICAgICAgICAgICAgICAgIyBUYXJnZXQgYnVpbHQgd2l0aCBhbiBBcm0gQ1hYIGNvbXBpbGVyLgorLSAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKKy0gICAgICAgICAgICAgICAgICBbICdhcm1fdmVyc2lvbj09NycsIHsKKy0gICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOiBbJy1tYXJjaD1hcm12Ny1hJyxdLAorLSAgICAgICAgICAgICAgICAgIH1dLAorLSAgICAgICAgICAgICAgICAgIFsgJ2FybV92ZXJzaW9uPT03IG9yIGFybV92ZXJzaW9uPT0iZGVmYXVsdCInLCB7CistICAgICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKKy0gICAgICAgICAgICAgICAgICAgICAgWyAnYXJtX2ZwdSE9ImRlZmF1bHQiJywgeworLSAgICAgICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOiBbJy1tZnB1PTwoYXJtX2ZwdSknLF0sCistICAgICAgICAgICAgICAgICAgICAgIH1dLAorLSAgICAgICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgICB9XSwKKy0gICAgICAgICAgICAgICAgICBbICdhcm1fZmxvYXRfYWJpIT0iZGVmYXVsdCInLCB7CistICAgICAgICAgICAgICAgICAgICAnY2ZsYWdzJzogWyctbWZsb2F0LWFiaT08KGFybV9mbG9hdF9hYmkpJyxdLAorLSAgICAgICAgICAgICAgICAgIH1dLAorLSAgICAgICAgICAgICAgICAgIFsgJ2FybV90aHVtYj09MScsIHsKKy0gICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOiBbJy1tdGh1bWInLF0sCistICAgICAgICAgICAgICAgICAgfV0sCistICAgICAgICAgICAgICAgICAgWyAnYXJtX3RodW1iPT0wJywgeworLSAgICAgICAgICAgICAgICAgICAgJ2NmbGFncyc6IFsnLW1hcm0nLF0sCistICAgICAgICAgICAgICAgICAgfV0sCistICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgICB9LCB7CistICAgICAgICAgICAgICAgICMgJ3Y4X3RhcmdldF9hcmNoIT10YXJnZXRfYXJjaCcKKysgICAgICAgICAgICAgIFsndjhfdGFyZ2V0X2FyY2ghPXRhcmdldF9hcmNoJywgeworICAgICAgICAgICAgICAgICAjIFRhcmdldCBub3QgYnVpbHQgd2l0aCBhbiBBcm0gQ1hYIGNvbXBpbGVyIChzaW11bGF0b3IgYnVpbGQpLgorICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKKyAgICAgICAgICAgICAgICAgICBbICdhcm1fZmxvYXRfYWJpPT0iaGFyZCInLCB7CistLSAKKzIuMjAuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqcy8wMDA1LUxpbmstYXRvbWljLWxpYnJhcnkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqcy8wMDA1LUxpbmstYXRvbWljLWxpYnJhcnkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY2ZmYxOGIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwNS1MaW5rLWF0b21pYy1saWJyYXJ5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotTGluayBhdG9taWMgbGlicmFyeSB0byBmaXggbWlzc2luZyB1bmRlZmluZWQgcmVmZXJyZW5jZXMKLWxpa2UgInVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fYXRvbWljX2ZldGNoX2FkZF84JyIKLQotU2lnbmVkLW9mZi1ieTogQW5kcmVqIFZhbGVrIDxhbmRyZWoudmFsZWtAc2llbWVucy5jb20+Ci0KLWRpZmYgLU5hdXIgbm9kZS12MTAuMTUuMS9kZXBzL3Y4L2d5cGZpbGVzL3Y4Lmd5cCBub2RlLXYxMC4xNS4xL2RlcHMvdjgvZ3lwZmlsZXMvdjguZ3lwCi0tLS0gbm9kZS12MTAuMTUuMS9kZXBzL3Y4L2d5cGZpbGVzL3Y4Lmd5cAkyMDE5LTAyLTEzIDA5OjAyOjIxLjAwMDAwMDAwMCArMDEwMAotKysrIG5vZGUtdjEwLjE1LjEvZGVwcy92OC9neXBmaWxlcy92OC5neXAJMjAxOS0wMi0xNSAyMToyNzoxMS43NTU2Nzk2NjAgKzAxMDAKLUBAIC00NTIsNiArNDUyLDExIEBACi0gICAgICAgICAnPChERVBUSCknLAotICAgICAgICAgJzwoU0hBUkVEX0lOVEVSTUVESUFURV9ESVIpJwotICAgICAgIF0sCi0rICAgICAgJ2xpbmtfc2V0dGluZ3MnOiB7Ci0rICAgICAgICAnbGlicmFyaWVzJzogWwotKyAgICAgICAgICAnLWxhdG9taWMnCi0rICAgICAgICBdLAotKyAgICAgIH0sCi0gICAgICAgJ3NvdXJjZXMnOiBbCi0gICAgICAgICAnPEAoaW5zcGVjdG9yX2FsbF9zb3VyY2VzKScsCi0gICAgICAgICAnLi4vaW5jbHVkZS8vdjgtaW5zcGVjdG9yLXByb3RvY29sLmgnLApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwNy12OC1kb24tdC1vdmVycmlkZS1BUk0tQ0ZMQUdTLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvMDAwNy12OC1kb24tdC1vdmVycmlkZS1BUk0tQ0ZMQUdTLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjJjYmZiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzLzAwMDctdjgtZG9uLXQtb3ZlcnJpZGUtQVJNLUNGTEFHUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEwMiArMCwwIEBACi1Gcm9tIDQ3ZWU1Y2M1NTAxMjg5MjA1ZDNlOGU5ZjI3ZWE5ZGFmMThjZWJhYzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiA9P1VURi04P3E/QW5kcj1DMz1BOT0yMERyYXN6aWs/PSA8Z2l0QGFuZHJlZC5uZXQ+Ci1EYXRlOiBTYXQsIDkgTm92IDIwMTkgMTQ6NDU6MzAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gdjg6IGRvbid0IG92ZXJyaWRlIEFSTSBDRkxBR1MKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVGhpcyBvdmVycmlkZXMgeW9jdG8tcHJvdmlkZWQgYnVpbGQgZmxhZ3Mgd2l0aCBpdHMgb3duLCBlLmcgd2UgZ2V0Ci0gICAgYXJtLXBva3ktbGludXgtbXVzbGVhYmktZysrICAtbXRodW1iIC1tZnB1PW5lb24gLW1mbG9hdC1hYmk9aGFyZCAtbWNwdT1jb3J0ZXgtYTcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLi4uIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtbWFyY2g9YXJtdjctYSAtbWZwdT1uZW9uIC1tZmxvYXQtYWJpPWhhcmQgLW1hcm0KLQotQ2F1c2luZyB0aGUgbGF0dGVyIHRvIG92ZXJyaWRlIHRoZSBmb3JtZXIsIGFuZCBjb21waWxlciB3YXJuaW5nczoKLSAgICBjYzFwbHVzOiB3YXJuaW5nOiBzd2l0Y2ggJy1tY3B1PWNvcnRleC1hNycgY29uZmxpY3RzIHdpdGggJy1tYXJjaD1hcm12Ny1hJyBzd2l0Y2gKLQotUGF0Y2ggdGhpcyBvdXQsIHNvIHRoYXQgeW9jdG8tcHJvdmlkZWQgZmxhZ3MgdGFrZSBwcmVjZWRlbmNlLgotTm90ZSB0aGF0IGluIHJlYWxpdHkgdGhlIHNhbWUgc2hvdWxkIHByb2JhYmx5IGJlIGRvbmUgZm9yIGFsbCB0aGUgb3RoZXIKLXN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzLCB0b28uCi0KLU5vdGUgdGhhdCB0aGlzIGFsc28gc3dpdGNoZXMgdG8gVGh1bWIoMikgbW9kZSAoaW4gbXkgY2FzZSkuIE5vIG9idmlvdXMKLXByb2JsZW1zIGhhdmUgYmVlbiBub3RlZCBkdXJpbmcgY29tcGlsYXRpb24gb3IgcnVudGltZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1zcGVjaWZpY10KLVNpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxnaXRAYW5kcmVkLm5ldD4KLS0tLQotIGRlcHMvdjgvZ3lwZmlsZXMvdG9vbGNoYWluLmd5cGkgfCA1MiArKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA1MCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2RlcHMvdjgvZ3lwZmlsZXMvdG9vbGNoYWluLmd5cGkgYi9kZXBzL3Y4L2d5cGZpbGVzL3Rvb2xjaGFpbi5neXBpCi1pbmRleCA5MTBhMjEyLi4xMzkwYjE1IDEwMDY0NAotLS0tIGEvZGVwcy92OC9neXBmaWxlcy90b29sY2hhaW4uZ3lwaQotKysrIGIvZGVwcy92OC9neXBmaWxlcy90b29sY2hhaW4uZ3lwaQotQEAgLTE5OSwzMSArMTk5LDcgQEAKLSAgICAgICAgICd0YXJnZXRfY29uZGl0aW9ucyc6IFsKLSAgICAgICAgICAgWydfdG9vbHNldD09Imhvc3QiJywgewotICAgICAgICAgICAgICdjb25kaXRpb25zJzogWwotLSAgICAgICAgICAgICAgWyd2OF90YXJnZXRfYXJjaD09aG9zdF9hcmNoJywgewotLSAgICAgICAgICAgICAgICAjIEhvc3QgYnVpbHQgd2l0aCBhbiBBcm0gQ1hYIGNvbXBpbGVyLgotLSAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKLS0gICAgICAgICAgICAgICAgICBbICdhcm1fdmVyc2lvbj09NycsIHsKLS0gICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOiBbJy1tYXJjaD1hcm12Ny1hJyxdLAotLSAgICAgICAgICAgICAgICAgIH1dLAotLSAgICAgICAgICAgICAgICAgIFsgJ2FybV92ZXJzaW9uPT03IG9yIGFybV92ZXJzaW9uPT0iZGVmYXVsdCInLCB7Ci0tICAgICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKLS0gICAgICAgICAgICAgICAgICAgICAgWyAnYXJtX2ZwdSE9ImRlZmF1bHQiJywgewotLSAgICAgICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOiBbJy1tZnB1PTwoYXJtX2ZwdSknLF0sCi0tICAgICAgICAgICAgICAgICAgICAgIH1dLAotLSAgICAgICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgICAgICB9XSwKLS0gICAgICAgICAgICAgICAgICBbICdhcm1fZmxvYXRfYWJpIT0iZGVmYXVsdCInLCB7Ci0tICAgICAgICAgICAgICAgICAgICAnY2ZsYWdzJzogWyctbWZsb2F0LWFiaT08KGFybV9mbG9hdF9hYmkpJyxdLAotLSAgICAgICAgICAgICAgICAgIH1dLAotLSAgICAgICAgICAgICAgICAgIFsgJ2FybV90aHVtYj09MScsIHsKLS0gICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOiBbJy1tdGh1bWInLF0sCi0tICAgICAgICAgICAgICAgICAgfV0sCi0tICAgICAgICAgICAgICAgICAgWyAnYXJtX3RodW1iPT0wJywgewotLSAgICAgICAgICAgICAgICAgICAgJ2NmbGFncyc6IFsnLW1hcm0nLF0sCi0tICAgICAgICAgICAgICAgICAgfV0sCi0tICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICB9LCB7Ci0tICAgICAgICAgICAgICAgICMgJ3Y4X3RhcmdldF9hcmNoIT1ob3N0X2FyY2gnCi0rICAgICAgICAgICAgICBbJ3Y4X3RhcmdldF9hcmNoIT1ob3N0X2FyY2gnLCB7Ci0gICAgICAgICAgICAgICAgICMgSG9zdCBub3QgYnVpbHQgd2l0aCBhbiBBcm0gQ1hYIGNvbXBpbGVyIChzaW11bGF0b3IgYnVpbGQpLgotICAgICAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKLSAgICAgICAgICAgICAgICAgICBbICdhcm1fZmxvYXRfYWJpPT0iaGFyZCInLCB7Ci1AQCAtMjQyLDMxICsyMTgsNyBAQAotICAgICAgICAgICB9XSwgICMgX3Rvb2xzZXQ9PSJob3N0IgotICAgICAgICAgICBbJ190b29sc2V0PT0idGFyZ2V0IicsIHsKLSAgICAgICAgICAgICAnY29uZGl0aW9ucyc6IFsKLS0gICAgICAgICAgICAgIFsndjhfdGFyZ2V0X2FyY2g9PXRhcmdldF9hcmNoJywgewotLSAgICAgICAgICAgICAgICAjIFRhcmdldCBidWlsdCB3aXRoIGFuIEFybSBDWFggY29tcGlsZXIuCi0tICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzogWwotLSAgICAgICAgICAgICAgICAgIFsgJ2FybV92ZXJzaW9uPT03JywgewotLSAgICAgICAgICAgICAgICAgICAgJ2NmbGFncyc6IFsnLW1hcmNoPWFybXY3LWEnLF0sCi0tICAgICAgICAgICAgICAgICAgfV0sCi0tICAgICAgICAgICAgICAgICAgWyAnYXJtX3ZlcnNpb249PTcgb3IgYXJtX3ZlcnNpb249PSJkZWZhdWx0IicsIHsKLS0gICAgICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzogWwotLSAgICAgICAgICAgICAgICAgICAgICBbICdhcm1fZnB1IT0iZGVmYXVsdCInLCB7Ci0tICAgICAgICAgICAgICAgICAgICAgICAgJ2NmbGFncyc6IFsnLW1mcHU9PChhcm1fZnB1KScsXSwKLS0gICAgICAgICAgICAgICAgICAgICAgfV0sCi0tICAgICAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgICAgIH1dLAotLSAgICAgICAgICAgICAgICAgIFsgJ2FybV9mbG9hdF9hYmkhPSJkZWZhdWx0IicsIHsKLS0gICAgICAgICAgICAgICAgICAgICdjZmxhZ3MnOiBbJy1tZmxvYXQtYWJpPTwoYXJtX2Zsb2F0X2FiaSknLF0sCi0tICAgICAgICAgICAgICAgICAgfV0sCi0tICAgICAgICAgICAgICAgICAgWyAnYXJtX3RodW1iPT0xJywgewotLSAgICAgICAgICAgICAgICAgICAgJ2NmbGFncyc6IFsnLW10aHVtYicsXSwKLS0gICAgICAgICAgICAgICAgICB9XSwKLS0gICAgICAgICAgICAgICAgICBbICdhcm1fdGh1bWI9PTAnLCB7Ci0tICAgICAgICAgICAgICAgICAgICAnY2ZsYWdzJzogWyctbWFybScsXSwKLS0gICAgICAgICAgICAgICAgICB9XSwKLS0gICAgICAgICAgICAgICAgXSwKLS0gICAgICAgICAgICAgIH0sIHsKLS0gICAgICAgICAgICAgICAgIyAndjhfdGFyZ2V0X2FyY2ghPXRhcmdldF9hcmNoJwotKyAgICAgICAgICAgICAgWyd2OF90YXJnZXRfYXJjaCE9dGFyZ2V0X2FyY2gnLCB7Ci0gICAgICAgICAgICAgICAgICMgVGFyZ2V0IG5vdCBidWlsdCB3aXRoIGFuIEFybSBDWFggY29tcGlsZXIgKHNpbXVsYXRvciBidWlsZCkuCi0gICAgICAgICAgICAgICAgICdjb25kaXRpb25zJzogWwotICAgICAgICAgICAgICAgICAgIFsgJ2FybV9mbG9hdF9hYmk9PSJoYXJkIicsIHsKLS0tIAotMi4yMy4wLnJjMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqcy9iaWctZW5kaWFuLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvYmlnLWVuZGlhbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjkzODE4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvYmlnLWVuZGlhbi5wYXRjaApAQCAtMCwwICsxLDE4IEBACisKK2h0dHBzOi8vZ2l0aHViLmNvbS92OC92OC9jb21taXQvODc4Y2NiMzNiZDNjZjBlNmRjMDE4ZmY4ZDE1ODQzZjU4NWFjMDdiZQorCitkaWQgc29tZSBhdXRvbWF0ZWQgY2xlYW51cHMgYnV0IGl0IG1pc3NlZCBiaWctZW5kaWFuIGNvZGUuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLSBhL2RlcHMvdjgvc3JjL3J1bnRpbWUvcnVudGltZS11dGlscy5oCisrKysgYi9kZXBzL3Y4L3NyYy9ydW50aW1lL3J1bnRpbWUtdXRpbHMuaAorQEAgLTEyNiw3ICsxMjYsNyBAQCBzdGF0aWMgaW5saW5lIE9iamVjdFBhaXIgTWFrZVBhaXIoT2JqZWN0CisgI2lmIGRlZmluZWQoVjhfVEFSR0VUX0xJVFRMRV9FTkRJQU4pCisgICByZXR1cm4geC5wdHIoKSB8IChzdGF0aWNfY2FzdDxPYmplY3RQYWlyPih5LnB0cigpKSA8PCAzMik7CisgI2VsaWYgZGVmaW5lZChWOF9UQVJHRVRfQklHX0VORElBTikKKy0gIHJldHVybiB5LT5wdHIoKSB8IChzdGF0aWNfY2FzdDxPYmplY3RQYWlyPih4LT5wdHIoKSkgPDwgMzIpOworKyAgcmV0dXJuIHkucHRyKCkgfCAoc3RhdGljX2Nhc3Q8T2JqZWN0UGFpcj4oeC5wdHIoKSkgPDwgMzIpOworICNlbHNlCisgI2Vycm9yIFVua25vd24gZW5kaWFubmVzcworICNlbmRpZgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanMvbWlwcy13YXJuaW5ncy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzL21pcHMtd2FybmluZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE3NzNmMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9ub2RlanMvbm9kZWpzL21pcHMtd2FybmluZ3MucGF0Y2gKQEAgLTAsMCArMSwxOSBAQAorQWRkIGV4cGxpY2l0IHN0YXRpYyBjYXN0IHRvIGZpeCBuYXJyb3dpbmcgd2FybmluZworCitGaXhlcworZGVwcy92OC9zcmMvY29kZWdlbi9taXBzL2Fzc2VtYmxlci1taXBzLmNjOjM1NTY6NDQ6IGVycm9yOiBub24tY29uc3RhbnQtZXhwcmVzc2lvbiBjYW5ub3QgYmUgbmFycm93ZWQgZnJvbSB0eXBlICdpbnQnIHRvICdzaXplX3QnIChha2EgJ3Vuc2lnbmVkIGludCcpIGluIGluaXRpYWxpemVyIGxpc3QgWy1XYysrMTEtbmFycm93aW5nXQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLSBhL2RlcHMvdjgvc3JjL2NvZGVnZW4vbWlwcy9hc3NlbWJsZXItbWlwcy5jYworKysrIGIvZGVwcy92OC9zcmMvY29kZWdlbi9taXBzL2Fzc2VtYmxlci1taXBzLmNjCitAQCAtMzU1Myw3ICszNTUzLDcgQEAgdm9pZCBBc3NlbWJsZXI6Okdyb3dCdWZmZXIoKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbG9jX2luZm9fd3JpdGVyLmxhc3RfcGMoKSArIHBjX2RlbHRhKTsKKyAKKyAgIC8vIFJlbG9jYXRlIHJ1bnRpbWUgZW50cmllcy4KKy0gIFZlY3RvcjxieXRlPiBpbnN0cnVjdGlvbnN7YnVmZmVyX3N0YXJ0XywgcGNfb2Zmc2V0KCl9OworKyAgVmVjdG9yPGJ5dGU+IGluc3RydWN0aW9uc3tidWZmZXJfc3RhcnRfLCBzdGF0aWNfY2FzdDxzaXplX3Q+KHBjX29mZnNldCgpKX07CisgICBWZWN0b3I8Y29uc3QgYnl0ZT4gcmVsb2NfaW5mb3tyZWxvY19pbmZvX3dyaXRlci5wb3MoKSwgcmVsb2Nfc2l6ZX07CisgICBmb3IgKFJlbG9jSXRlcmF0b3IgaXQoaW5zdHJ1Y3Rpb25zLCByZWxvY19pbmZvLCAwKTsgIWl0LmRvbmUoKTsgaXQubmV4dCgpKSB7CisgICAgIFJlbG9jSW5mbzo6TW9kZSBybW9kZSA9IGl0LnJpbmZvKCktPnJtb2RlKCk7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqc18xMC4xNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanNfMTAuMTcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzFhNDc2My4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqc18xMC4xNy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUwICswLDAgQEAKLURFU0NSSVBUSU9OID0gIm5vZGVKUyBFdmVudGVkIEkvTyBmb3IgVjggSmF2YVNjcmlwdCIKLUhPTUVQQUdFID0gImh0dHA6Ly9ub2RlanMub3JnIgotTElDRU5TRSA9ICJNSVQgJiBCU0QgJiBBcnRpc3RpYy0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iZTk4MGViN2NjYWZlMjg3Y2I0MzgwNzZhNjVlODg4YyIKLQotREVQRU5EUyA9ICJvcGVuc3NsIgotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBub2RlanMtbmF0aXZlIgotCi1pbmhlcml0IHBrZ2NvbmZpZyBweXRob25uYXRpdmUKLQotQ09NUEFUSUJMRV9NQUNISU5FX2FybXY0ID0gIighLiphcm12NCkuKiIKLUNPTVBBVElCTEVfTUFDSElORV9hcm12NSA9ICIoIS4qYXJtdjUpLioiCi1DT01QQVRJQkxFX01BQ0hJTkVfbWlwczY0ID0gIighLiptaXBzNjQpLioiCi0KLUNPTVBBVElCTEVfSE9TVF9yaXNjdjY0ID0gIm51bGwiCi1DT01QQVRJQkxFX0hPU1RfcmlzY3YzMiA9ICJudWxsIgotCi1TUkNfVVJJID0gImh0dHA6Ly9ub2RlanMub3JnL2Rpc3QvdiR7UFZ9L25vZGUtdiR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtcnVubmluZy1neXAtZmlsZXMtZm9yLWJ1bmRsZWQtZGVwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUluc3RhbGwtYm90aC1iaW5hcmllcy1hbmQtdXNlLWxpYmRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LU1ha2UtY29tcGF0aWJpbGl0eS13aXRoLWdjYy00LjgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy12OC1kb24tdC1vdmVycmlkZS1BUk0tQ0ZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLVVzaW5nLW5hdGl2ZS10b3JxdWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1MaW5rLWF0b21pYy1saWJyYXJ5LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDVhNTZkMGFiZjc2NGE5MWY2MjdmMDY5MGNkNGI5ZjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDEyNjY3ZDc2YmQ1MjczYzA3Y2I2OWMyMTU5OTgxMDlmZDViYjM1Yzg3NDY1NGY5M2U2YTAxMzJkNjY2YzU4ZSIKLQotUyA9ICIke1dPUktESVJ9L25vZGUtdiR7UFZ9IgotCi0jIHY4IGVycm9ycyBvdXQgaWYgeW91IGhhdmUgc2V0IENDQUNIRQotQ0NBQ0hFID0gIiIKLQotZGVmIG1hcF9ub2RlanNfYXJjaChhLCBkKToKLSAgICBpbXBvcnQgcmUKLQotICAgIGlmICAgcmUubWF0Y2goJ2kuODYkJywgYSk6IHJldHVybiAnaWEzMicKLSAgICBlbGlmIHJlLm1hdGNoKCd4ODZfNjQkJywgYSk6IHJldHVybiAneDY0JwotICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjQkJywgYSk6IHJldHVybiAnYXJtNjQnCi0gICAgZWxpZiByZS5tYXRjaCgnKHBvd2VycGM2NHxwcGM2NGxlKSQnLCBhKTogcmV0dXJuICdwcGM2NCcKLSAgICBlbGlmIHJlLm1hdGNoKCdwb3dlcnBjJCcsIGEpOiByZXR1cm4gJ3BwYycKLSAgICByZXR1cm4gYQotCi1BUkNIRkxBR1NfYXJtID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2NhbGxjb252ZW50aW9uLWhhcmQnLCAnLS13aXRoLWFybS1mbG9hdC1hYmk9aGFyZCcsICctLXdpdGgtYXJtLWZsb2F0LWFiaT1zb2Z0ZnAnLCBkKX0gXAotICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduZW9uJywgJy0td2l0aC1hcm0tZnB1PW5lb24nLCBcCi0gICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3ZmcHYzZDE2JywgJy0td2l0aC1hcm0tZnB1PXZmcHYzLWQxNicsIFwKLSAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAndmZwdjMnLCAnLS13aXRoLWFybS1mcHU9dmZwdjMnLCBcCi0gICAgICAgICAgICAgICAgICAgICctLXdpdGgtYXJtLWZwdT12ZnAnLCBkKSwgZCksIGQpfSIKLUdZUF9ERUZJTkVTX2FwcGVuZF9taXBzZWwgPSAiIG1pcHNfYXJjaF92YXJpYW50PSdyMScgIgotQVJDSEZMQUdTID89ICIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJhcmVzIGljdSBsaWJ1diB6bGliIgotUEFDS0FHRUNPTkZJR1thcmVzXSA9ICItLXNoYXJlZC1jYXJlcywsYy1hcmVzIgotUEFDS0FHRUNPTkZJR1tneXBdID0gIiwsZ3lwLXB5Mi1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW2ljdV0gPSAiLS13aXRoLWludGw9c3lzdGVtLWljdSwtLXdpdGhvdXQtaW50bCxpY3UiCi1QQUNLQUdFQ09ORklHW2xpYnV2XSA9ICItLXNoYXJlZC1saWJ1diwsbGlidXYiCi1QQUNLQUdFQ09ORklHW25naHR0cDJdID0gIi0tc2hhcmVkLW5naHR0cDIsLG5naHR0cDIiCi1QQUNLQUdFQ09ORklHW3NoYXJlZF0gPSAiLS1zaGFyZWQiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0tc2hhcmVkLXpsaWIsLHpsaWIiCi0KLSMgV2UgZG9uJ3Qgd2FudCB0byBjcm9zcy1jb21waWxlIGR1cmluZyB0YXJnZXQgY29tcGlsZSwKLSMgYW5kIHdlIG5lZWQgdG8gdXNlIHRoZSByaWdodCBmbGFncyBkdXJpbmcgaG9zdCBjb21waWxlLAotIyB0b28uCi1FWFRSQV9PRU1BS0UgPSAiXAotICAgIENDLmhvc3Q9JyR7Q0N9JyBcCi0gICAgQ0ZMQUdTLmhvc3Q9JyR7Q1BQRkxBR1N9ICR7Q0ZMQUdTfScgXAotICAgIENYWC5ob3N0PScke0NYWH0nIFwKLSAgICBDWFhGTEFHUy5ob3N0PScke0NQUEZMQUdTfSAke0NYWEZMQUdTfScgXAotICAgIExERkxBR1MuaG9zdD0nJHtMREZMQUdTfScgXAotICAgIEFSLmhvc3Q9JyR7QVJ9JyBcCi0gICAgXAotICAgIGJ1aWxkZGlyX25hbWU9Li8gXAotIgotCi1weXRob24gZG9fdW5wYWNrKCkgewotICAgIGltcG9ydCBzaHV0aWwKLQotICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnYmFzZV9kb191bnBhY2snLCBkKQotCi0gICAgc2h1dGlsLnJtdHJlZShkLmdldFZhcignUycpICsgJy9kZXBzL29wZW5zc2wnLCBUcnVlKQotICAgIGlmICdhcmVzJyBpbiBkLmdldFZhcignUEFDS0FHRUNPTkZJRycpOgotICAgICAgICBzaHV0aWwucm10cmVlKGQuZ2V0VmFyKCdTJykgKyAnL2RlcHMvY2FyZXMnLCBUcnVlKQotICAgIGlmICdneXAnIGluIGQuZ2V0VmFyKCdQQUNLQUdFQ09ORklHJyk6Ci0gICAgICAgIHNodXRpbC5ybXRyZWUoZC5nZXRWYXIoJ1MnKSArICcvdG9vbHMvZ3lwJywgVHJ1ZSkKLSAgICBpZiAnbGlidXYnIGluIGQuZ2V0VmFyKCdQQUNLQUdFQ09ORklHJyk6Ci0gICAgICAgIHNodXRpbC5ybXRyZWUoZC5nZXRWYXIoJ1MnKSArICcvZGVwcy91dicsIFRydWUpCi0gICAgaWYgJ25naHR0cDInIGluIGQuZ2V0VmFyKCdQQUNLQUdFQ09ORklHJyk6Ci0gICAgICAgIHNodXRpbC5ybXRyZWUoZC5nZXRWYXIoJ1MnKSArICcvZGVwcy9uZ2h0dHAyJywgVHJ1ZSkKLSAgICBpZiAnemxpYicgaW4gZC5nZXRWYXIoJ1BBQ0tBR0VDT05GSUcnKToKLSAgICAgICAgc2h1dGlsLnJtdHJlZShkLmdldFZhcignUycpICsgJy9kZXBzL3psaWInLCBUcnVlKQotfQotCi0jIE5vZGUgaXMgd2F5IHRvbyBjb29sIHRvIHVzZSBwcm9wZXIgYXV0b3Rvb2xzLCBzbyB3ZSBpbnN0YWxsIHR3byB3cmFwcGVycyB0byBmb3JjZWZ1bGx5IGluamVjdCBwcm9wZXIgYXJjaCBjZmxhZ3MgdG8gd29ya2Fyb3VuZCBneXBpCi1kb19jb25maWd1cmUgKCkgewotICAgIGV4cG9ydCBMRD0iJHtDWFh9IgotICAgIEdZUF9ERUZJTkVTPSIke0dZUF9ERUZJTkVTfSIgZXhwb3J0IEdZUF9ERUZJTkVTCi0gICAgIyAkVEFSR0VUX0FSQ0ggc2V0dGluZ3MgZG9uJ3QgbWF0Y2ggLS1kZXN0LWNwdSBzZXR0aW5ncwotICAgLi9jb25maWd1cmUgLS1wcmVmaXg9JHtwcmVmaXh9IC0td2l0aG91dC1zbmFwc2hvdCAtLXNoYXJlZC1vcGVuc3NsIFwKLSAgICAgICAgICAgICAgIC0tZGVzdC1jcHU9IiR7QG1hcF9ub2RlanNfYXJjaChkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZCl9IiBcCi0gICAgICAgICAgICAgICAtLWRlc3Qtb3M9bGludXggXAotICAgICAgICAgICAgICAgLS1saWJkaXI9JHtEfSR7bGliZGlyfSBcCi0gICAgICAgICAgICAgICAke0FSQ0hGTEFHU30gXAotICAgICAgICAgICAgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQotfQotCi1kb19jb21waWxlICgpIHsKLSAgICBleHBvcnQgTEQ9IiR7Q1hYfSIKLSAgICBvZV9ydW5tYWtlIEJVSUxEVFlQRT1SZWxlYXNlCi19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgICMgdXNlIG5vZGUgZnJvbSBQQVRIIGluc3RlYWQgb2YgYWJzb2x1dGUgcGF0aCB0byBzeXNyb290Ci0gICAgIyBub2RlLXYwLjEwLjI1L3Rvb2xzL2luc3RhbGwucHkgaXMgdXNpbmc6Ci0gICAgIyBzaGViYW5nID0gb3MucGF0aC5qb2luKG5vZGVfcHJlZml4LCAnYmluL25vZGUnKQotICAgICMgdXBkYXRlX3NoZWJhbmcobGlua19wYXRoLCBzaGViYW5nKQotICAgICMgYW5kIG5vZGVfcHJlZml4IGNhbiBiZSB2ZXJ5IGxvbmcgcGF0aCB0byBiaW5kaXIgaW4gbmF0aXZlIHN5c3Jvb3QgYW5kCi0gICAgIyB3aGVuIGl0IGV4Y2VlZHMgMTI4IGNoYXJhY3RlciBzaGViYW5nIGxpbWl0IGl0J3Mgc3RyaXBwZWQgdG8gaW5jb3JyZWN0IHBhdGgKLSAgICAjIGFuZCBucG0gZmFpbHMgdG8gZXhlY3V0ZSBsaWtlIGluIHRoaXMgY2FzZSB3aXRoIDEzMyBjaGFyYWN0ZXJzIHNob3cgaW4gbG9nLmRvX2luc3RhbGw6Ci0gICAgIyB1cGRhdGluZyBzaGViYW5nIG9mIC9ob21lL2plbmtpbnMvd29ya3NwYWNlL2J1aWxkLXdlYm9zLW5pZ2h0bHkvZGV2aWNlL3FlbXV4ODYvbGFiZWwvb3Blbi13ZWJvcy1idWlsZGVyL0JVSUxELXFlbXV4ODYvd29yay94ODZfNjQtbGludXgvbm9kZWpzLW5hdGl2ZS8wLjEwLjE1LXIwL2ltYWdlL2hvbWUvamVua2lucy93b3Jrc3BhY2UvYnVpbGQtd2Vib3MtbmlnaHRseS9kZXZpY2UvcWVtdXg4Ni9sYWJlbC9vcGVuLXdlYm9zLWJ1aWxkZXIvQlVJTEQtcWVtdXg4Ni9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9ucG0gdG8gL2hvbWUvamVua2lucy93b3Jrc3BhY2UvYnVpbGQtd2Vib3MtbmlnaHRseS9kZXZpY2UvcWVtdXg4Ni9sYWJlbC9vcGVuLXdlYm9zLWJ1aWxkZXIvQlVJTEQtcWVtdXg4Ni9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2Jpbi9ub2RlCi0gICAgIyAvdXNyL2Jpbi9ucG0gaXMgc3ltbGluayB0byAvdXNyL2xpYi9ub2RlX21vZHVsZXMvbnBtL2Jpbi9ucG0tY2xpLmpzCi0gICAgIyB1c2Ugc2VkIG9uIG5wbS1jbGkuanMgYmVjYXVzZSBvdGhlcndpc2Ugc3ltbGluayBpcyByZXBsYWNlZCB3aXRoIG5vcm1hbCBmaWxlIGFuZAotICAgICMgbnBtLWNsaS5qcyBjb250aW51ZXMgdG8gdXNlIG9sZCBzaGViYW5nCi0gICAgc2VkICIxc14uKl4jXCEvdXNyL2Jpbi9lbnYgbm9kZV5nIiAtaSAke0R9JHtleGVjX3ByZWZpeH0vbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMKLQotICAgICMgSW5zdGFsbCB0aGUgbmF0aXZlIHRvcnF1ZSB0byBwcm92aWRlIGl0IHdpdGhpbiBzeXNyb290IGZvciB0aGUgdGFyZ2V0IGNvbXBpbGF0aW9uCi0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vb3V0L1JlbGVhc2UvdG9ycXVlICR7RH0ke2JpbmRpcn0vdG9ycXVlCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICBzZWQgIjFzXi4qXiNcISR7YmluZGlyfS9lbnYgbm9kZV5nIiAtaSAke0R9JHtleGVjX3ByZWZpeH0vbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LW5wbSIKLUZJTEVTXyR7UE59LW5wbSA9ICIke2V4ZWNfcHJlZml4fS9saWIvbm9kZV9tb2R1bGVzICR7YmluZGlyfS9ucG0gJHtiaW5kaXJ9L25weCIKLVJERVBFTkRTXyR7UE59LW5wbSA9ICJiYXNoIHB5dGhvbi1jb3JlIHB5dGhvbi1zaGVsbCBweXRob24tZGF0ZXRpbWUgcHl0aG9uLXN1YnByb2Nlc3MgcHl0aG9uLXRleHR1dGlscyBcCi0gICAgcHl0aG9uLWNvbXBpbGVyIHB5dGhvbi1taXNjIHB5dGhvbi1tdWx0aXByb2Nlc3NpbmciCi0KLVBBQ0tBR0VTID0rICIke1BOfS1zeXN0ZW10YXAiCi1GSUxFU18ke1BOfS1zeXN0ZW10YXAgPSAiJHtkYXRhZGlyfS9zeXN0ZW10YXAiCi0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvbm9kZWpzL25vZGVqc18xMi4xNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanNfMTIuMTQuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDY4ZmIzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL25vZGVqcy9ub2RlanNfMTIuMTQuMS5iYgpAQCAtMCwwICsxLDE2MyBAQAorREVTQ1JJUFRJT04gPSAibm9kZUpTIEV2ZW50ZWQgSS9PIGZvciBWOCBKYXZhU2NyaXB0IgorSE9NRVBBR0UgPSAiaHR0cDovL25vZGVqcy5vcmciCitMSUNFTlNFID0gIk1JVCAmIEJTRCAmIEFydGlzdGljLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWJlNGQ1MTA3YzY0ZGMzZDdjNTdlMzc5N2UxYTA2NzRiIgorCitERVBFTkRTID0gIm9wZW5zc2wiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIG5vZGVqcy1uYXRpdmUiCisKK2luaGVyaXQgcGtnY29uZmlnIHB5dGhvbjNuYXRpdmUKKworQ09NUEFUSUJMRV9NQUNISU5FX2FybXY0ID0gIighLiphcm12NCkuKiIKK0NPTVBBVElCTEVfTUFDSElORV9hcm12NSA9ICIoIS4qYXJtdjUpLioiCitDT01QQVRJQkxFX01BQ0hJTkVfbWlwczY0ID0gIighLiptaXBzNjQpLioiCisKK0NPTVBBVElCTEVfSE9TVF9yaXNjdjY0ID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfcmlzY3YzMiA9ICJudWxsIgorCitTUkNfVVJJID0gImh0dHA6Ly9ub2RlanMub3JnL2Rpc3QvdiR7UFZ9L25vZGUtdiR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURpc2FibGUtcnVubmluZy1neXAtZmlsZXMtZm9yLWJ1bmRsZWQtZGVwcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLUluc3RhbGwtYm90aC1iaW5hcmllcy1hbmQtdXNlLWxpYmRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LXY4LWRvbi10LW92ZXJyaWRlLUFSTS1DRkxBR1MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYmlnLWVuZGlhbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLWFsbG93LXBhc3NpbmctbXVsdGlwbGUtbGlicy10by1wa2dfY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItYnVpbGQtYWxsb3ctdXNlLW9mLXN5c3RlbS1pbnN0YWxsZWQtYnJvdGxpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21pcHMtd2FybmluZ3MucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItVXNpbmctbmF0aXZlLWJpbmFyaWVzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMWM3OGE3NWY1Yzk1MzIxZjUzM2VjY2NjYTY5NWU4MTQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODc3YjRiODQyMzE4YjBlMDliYzc1NGZhZjczNDNmMmYwOTdmMGZjNGY4OGFiOWFlNTdjZjk5NDRlODhlN2FkYiIKKworUyA9ICIke1dPUktESVJ9L25vZGUtdiR7UFZ9IgorCisjIHY4IGVycm9ycyBvdXQgaWYgeW91IGhhdmUgc2V0IENDQUNIRQorQ0NBQ0hFID0gIiIKKworZGVmIG1hcF9ub2RlanNfYXJjaChhLCBkKToKKyAgICBpbXBvcnQgcmUKKworICAgIGlmICAgcmUubWF0Y2goJ2kuODYkJywgYSk6IHJldHVybiAnaWEzMicKKyAgICBlbGlmIHJlLm1hdGNoKCd4ODZfNjQkJywgYSk6IHJldHVybiAneDY0JworICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjQkJywgYSk6IHJldHVybiAnYXJtNjQnCisgICAgZWxpZiByZS5tYXRjaCgnKHBvd2VycGM2NHxwcGM2NGxlKSQnLCBhKTogcmV0dXJuICdwcGM2NCcKKyAgICBlbGlmIHJlLm1hdGNoKCdwb3dlcnBjJCcsIGEpOiByZXR1cm4gJ3BwYycKKyAgICByZXR1cm4gYQorCitBUkNIRkxBR1NfYXJtID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2NhbGxjb252ZW50aW9uLWhhcmQnLCAnLS13aXRoLWFybS1mbG9hdC1hYmk9aGFyZCcsICctLXdpdGgtYXJtLWZsb2F0LWFiaT1zb2Z0ZnAnLCBkKX0gXAorICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICduZW9uJywgJy0td2l0aC1hcm0tZnB1PW5lb24nLCBcCisgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3ZmcHYzZDE2JywgJy0td2l0aC1hcm0tZnB1PXZmcHYzLWQxNicsIFwKKyAgICAgICAgICAgICAgICAgICAgYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAndmZwdjMnLCAnLS13aXRoLWFybS1mcHU9dmZwdjMnLCBcCisgICAgICAgICAgICAgICAgICAgICctLXdpdGgtYXJtLWZwdT12ZnAnLCBkKSwgZCksIGQpfSIKK0dZUF9ERUZJTkVTX2FwcGVuZF9taXBzZWwgPSAiIG1pcHNfYXJjaF92YXJpYW50PSdyMScgIgorQVJDSEZMQUdTID89ICIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJhcmVzIGJyb3RsaSBpY3UgbGlidXYgemxpYiIKK1BBQ0tBR0VDT05GSUdbYXJlc10gPSAiLS1zaGFyZWQtY2FyZXMsLGMtYXJlcyIKK1BBQ0tBR0VDT05GSUdbYnJvdGxpXSA9ICItLXNoYXJlZC1icm90bGksLGJyb3RsaSIKK1BBQ0tBR0VDT05GSUdbaWN1XSA9ICItLXdpdGgtaW50bD1zeXN0ZW0taWN1LC0td2l0aG91dC1pbnRsLGljdSIKK1BBQ0tBR0VDT05GSUdbbGlidXZdID0gIi0tc2hhcmVkLWxpYnV2LCxsaWJ1diIKK1BBQ0tBR0VDT05GSUdbbmdodHRwMl0gPSAiLS1zaGFyZWQtbmdodHRwMiwsbmdodHRwMiIKK1BBQ0tBR0VDT05GSUdbc2hhcmVkXSA9ICItLXNoYXJlZCIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS1zaGFyZWQtemxpYiwsemxpYiIKKworIyBXZSBkb24ndCB3YW50IHRvIGNyb3NzLWNvbXBpbGUgZHVyaW5nIHRhcmdldCBjb21waWxlLAorIyBhbmQgd2UgbmVlZCB0byB1c2UgdGhlIHJpZ2h0IGZsYWdzIGR1cmluZyBob3N0IGNvbXBpbGUsCisjIHRvby4KK0VYVFJBX09FTUFLRSA9ICJcCisgICAgQ0MuaG9zdD0nJHtDQ30nIFwKKyAgICBDRkxBR1MuaG9zdD0nJHtDUFBGTEFHU30gJHtDRkxBR1N9JyBcCisgICAgQ1hYLmhvc3Q9JyR7Q1hYfScgXAorICAgIENYWEZMQUdTLmhvc3Q9JyR7Q1BQRkxBR1N9ICR7Q1hYRkxBR1N9JyBcCisgICAgTERGTEFHUy5ob3N0PScke0xERkxBR1N9JyBcCisgICAgQVIuaG9zdD0nJHtBUn0nIFwKKyAgICBcCisgICAgYnVpbGRkaXJfbmFtZT0uLyBcCisiCisKK3B5dGhvbiBkb191bnBhY2soKSB7CisgICAgaW1wb3J0IHNodXRpbAorCisgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdiYXNlX2RvX3VucGFjaycsIGQpCisKKyAgICBzaHV0aWwucm10cmVlKGQuZ2V0VmFyKCdTJykgKyAnL2RlcHMvb3BlbnNzbCcsIFRydWUpCisgICAgaWYgJ2FyZXMnIGluIGQuZ2V0VmFyKCdQQUNLQUdFQ09ORklHJyk6CisgICAgICAgIHNodXRpbC5ybXRyZWUoZC5nZXRWYXIoJ1MnKSArICcvZGVwcy9jYXJlcycsIFRydWUpCisgICAgaWYgJ2Jyb3RsaScgaW4gZC5nZXRWYXIoJ1BBQ0tBR0VDT05GSUcnKToKKyAgICAgICAgc2h1dGlsLnJtdHJlZShkLmdldFZhcignUycpICsgJy9kZXBzL2Jyb3RsaScsIFRydWUpCisgICAgaWYgJ2xpYnV2JyBpbiBkLmdldFZhcignUEFDS0FHRUNPTkZJRycpOgorICAgICAgICBzaHV0aWwucm10cmVlKGQuZ2V0VmFyKCdTJykgKyAnL2RlcHMvdXYnLCBUcnVlKQorICAgIGlmICduZ2h0dHAyJyBpbiBkLmdldFZhcignUEFDS0FHRUNPTkZJRycpOgorICAgICAgICBzaHV0aWwucm10cmVlKGQuZ2V0VmFyKCdTJykgKyAnL2RlcHMvbmdodHRwMicsIFRydWUpCisgICAgaWYgJ3psaWInIGluIGQuZ2V0VmFyKCdQQUNLQUdFQ09ORklHJyk6CisgICAgICAgIHNodXRpbC5ybXRyZWUoZC5nZXRWYXIoJ1MnKSArICcvZGVwcy96bGliJywgVHJ1ZSkKK30KKworIyBOb2RlIGlzIHdheSB0b28gY29vbCB0byB1c2UgcHJvcGVyIGF1dG90b29scywgc28gd2UgaW5zdGFsbCB0d28gd3JhcHBlcnMgdG8gZm9yY2VmdWxseSBpbmplY3QgcHJvcGVyIGFyY2ggY2ZsYWdzIHRvIHdvcmthcm91bmQgZ3lwaQorZG9fY29uZmlndXJlICgpIHsKKyAgICBleHBvcnQgTEQ9IiR7Q1hYfSIKKyAgICBHWVBfREVGSU5FUz0iJHtHWVBfREVGSU5FU30iIGV4cG9ydCBHWVBfREVGSU5FUworICAgICMgJFRBUkdFVF9BUkNIIHNldHRpbmdzIGRvbid0IG1hdGNoIC0tZGVzdC1jcHUgc2V0dGluZ3MKKyAgICBweXRob24zIGNvbmZpZ3VyZS5weSAtLXByZWZpeD0ke3ByZWZpeH0gLS1jcm9zcy1jb21waWxpbmcgLS13aXRob3V0LXNuYXBzaG90IC0tc2hhcmVkLW9wZW5zc2wgXAorICAgICAgICAgICAgICAgLS13aXRob3V0LWR0cmFjZSBcCisgICAgICAgICAgICAgICAtLXdpdGhvdXQtZXR3IFwKKyAgICAgICAgICAgICAgIC0tZGVzdC1jcHU9IiR7QG1hcF9ub2RlanNfYXJjaChkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZCl9IiBcCisgICAgICAgICAgICAgICAtLWRlc3Qtb3M9bGludXggXAorICAgICAgICAgICAgICAgLS1saWJkaXI9JHtEfSR7bGliZGlyfSBcCisgICAgICAgICAgICAgICAke0FSQ0hGTEFHU30gXAorICAgICAgICAgICAgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQorfQorCitkb19jb21waWxlICgpIHsKKyAgICBleHBvcnQgTEQ9IiR7Q1hYfSIKKyAgICBvZV9ydW5tYWtlIEJVSUxEVFlQRT1SZWxlYXNlCit9CisKK2RvX2luc3RhbGwgKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBERVNURElSPSR7RH0KKworICAgICMgd2Fzbid0IHVwZGF0ZWQgc2luY2UgMjAwOSBhbmQgaXMgdGhlIG9ubHkgdGhpbmcgcmVxdWlyaW5nIHB5dGhvbjIgaW4gcnVudGltZQorICAgICMgRVJST1I6IG5vZGVqcy0xMi4xNC4xLXIwIGRvX3BhY2thZ2VfcWE6IFFBIElzc3VlOiAvdXNyL2xpYi9ub2RlX21vZHVsZXMvbnBtL25vZGVfbW9kdWxlcy9ub2RlLWd5cC9neXAvc2FtcGxlcy9zYW1wbGVzIGNvbnRhaW5lZCBpbiBwYWNrYWdlIG5vZGVqcy1ucG0gcmVxdWlyZXMgL3Vzci9iaW4vcHl0aG9uLCBidXQgbm8gcHJvdmlkZXJzIGZvdW5kIGluIFJERVBFTkRTX25vZGVqcy1ucG0/IFtmaWxlLXJkZXBzXQorICAgIHJtIC1mICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvbm9kZV9tb2R1bGVzL25wbS9ub2RlX21vZHVsZXMvbm9kZS1neXAvZ3lwL3NhbXBsZXMvc2FtcGxlcworfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgICAgIyB1c2Ugbm9kZSBmcm9tIFBBVEggaW5zdGVhZCBvZiBhYnNvbHV0ZSBwYXRoIHRvIHN5c3Jvb3QKKyAgICAjIG5vZGUtdjAuMTAuMjUvdG9vbHMvaW5zdGFsbC5weSBpcyB1c2luZzoKKyAgICAjIHNoZWJhbmcgPSBvcy5wYXRoLmpvaW4obm9kZV9wcmVmaXgsICdiaW4vbm9kZScpCisgICAgIyB1cGRhdGVfc2hlYmFuZyhsaW5rX3BhdGgsIHNoZWJhbmcpCisgICAgIyBhbmQgbm9kZV9wcmVmaXggY2FuIGJlIHZlcnkgbG9uZyBwYXRoIHRvIGJpbmRpciBpbiBuYXRpdmUgc3lzcm9vdCBhbmQKKyAgICAjIHdoZW4gaXQgZXhjZWVkcyAxMjggY2hhcmFjdGVyIHNoZWJhbmcgbGltaXQgaXQncyBzdHJpcHBlZCB0byBpbmNvcnJlY3QgcGF0aAorICAgICMgYW5kIG5wbSBmYWlscyB0byBleGVjdXRlIGxpa2UgaW4gdGhpcyBjYXNlIHdpdGggMTMzIGNoYXJhY3RlcnMgc2hvdyBpbiBsb2cuZG9faW5zdGFsbDoKKyAgICAjIHVwZGF0aW5nIHNoZWJhbmcgb2YgL2hvbWUvamVua2lucy93b3Jrc3BhY2UvYnVpbGQtd2Vib3MtbmlnaHRseS9kZXZpY2UvcWVtdXg4Ni9sYWJlbC9vcGVuLXdlYm9zLWJ1aWxkZXIvQlVJTEQtcWVtdXg4Ni93b3JrL3g4Nl82NC1saW51eC9ub2RlanMtbmF0aXZlLzAuMTAuMTUtcjAvaW1hZ2UvaG9tZS9qZW5raW5zL3dvcmtzcGFjZS9idWlsZC13ZWJvcy1uaWdodGx5L2RldmljZS9xZW11eDg2L2xhYmVsL29wZW4td2Vib3MtYnVpbGRlci9CVUlMRC1xZW11eDg2L3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvYmluL25wbSB0byAvaG9tZS9qZW5raW5zL3dvcmtzcGFjZS9idWlsZC13ZWJvcy1uaWdodGx5L2RldmljZS9xZW11eDg2L2xhYmVsL29wZW4td2Vib3MtYnVpbGRlci9CVUlMRC1xZW11eDg2L3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvYmluL25vZGUKKyAgICAjIC91c3IvYmluL25wbSBpcyBzeW1saW5rIHRvIC91c3IvbGliL25vZGVfbW9kdWxlcy9ucG0vYmluL25wbS1jbGkuanMKKyAgICAjIHVzZSBzZWQgb24gbnBtLWNsaS5qcyBiZWNhdXNlIG90aGVyd2lzZSBzeW1saW5rIGlzIHJlcGxhY2VkIHdpdGggbm9ybWFsIGZpbGUgYW5kCisgICAgIyBucG0tY2xpLmpzIGNvbnRpbnVlcyB0byB1c2Ugb2xkIHNoZWJhbmcKKyAgICBzZWQgIjFzXi4qXiNcIS91c3IvYmluL2VudiBub2RlXmciIC1pICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcworCisgICAgIyBJbnN0YWxsIHRoZSBuYXRpdmUgYmluYXJpZXMgdG8gcHJvdmlkZSBpdCB3aXRoaW4gc3lzcm9vdCBmb3IgdGhlIHRhcmdldCBjb21waWxhdGlvbgorICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L291dC9SZWxlYXNlL3RvcnF1ZSAke0R9JHtiaW5kaXJ9L3RvcnF1ZQorICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L291dC9SZWxlYXNlL2J5dGVjb2RlX2J1aWx0aW5zX2xpc3RfZ2VuZXJhdG9yICR7RH0ke2JpbmRpcn0vYnl0ZWNvZGVfYnVpbHRpbnNfbGlzdF9nZW5lcmF0b3IKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsJ2ljdScsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L291dC9SZWxlYXNlL2dlbi1yZWdleHAtc3BlY2lhbC1jYXNlICR7RH0ke2JpbmRpcn0vZ2VuLXJlZ2V4cC1zcGVjaWFsLWNhc2UKKyAgICBmaQorICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L291dC9SZWxlYXNlL21rY29kZWNhY2hlICR7RH0ke2JpbmRpcn0vbWtjb2RlY2FjaGUKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9vdXQvUmVsZWFzZS9ub2RlX21rc25hcHNob3QgJHtEfSR7YmluZGlyfS9ub2RlX21rc25hcHNob3QKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgIHNlZCAiMXNeLipeI1whJHtiaW5kaXJ9L2VudiBub2RlXmciIC1pICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvbm9kZV9tb2R1bGVzL25wbS9iaW4vbnBtLWNsaS5qcworfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tbnBtIgorRklMRVNfJHtQTn0tbnBtID0gIiR7ZXhlY19wcmVmaXh9L2xpYi9ub2RlX21vZHVsZXMgJHtiaW5kaXJ9L25wbSAke2JpbmRpcn0vbnB4IgorUkRFUEVORFNfJHtQTn0tbnBtID0gImJhc2ggcHl0aG9uMy1jb3JlIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1kYXRldGltZSBcCisgICAgcHl0aG9uMy1taXNjIHB5dGhvbjMtbXVsdGlwcm9jZXNzaW5nIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tc3lzdGVtdGFwIgorRklMRVNfJHtQTn0tc3lzdGVtdGFwID0gIiR7ZGF0YWRpcn0vc3lzdGVtdGFwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9vY3RhdmUvb2N0YXZlXzQuNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29jdGF2ZS9vY3RhdmVfNC40LjEuYmIKaW5kZXggNzFkMjQ1MC4uZWMzZTgyNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29jdGF2ZS9vY3RhdmVfNC40LjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL29jdGF2ZS9vY3RhdmVfNC40LjEuYmIKQEAgLTcsMTEgKzcsMTEgQEAKIAogREVQRU5EUyA9ICJncGVyZi1uYXRpdmUgdGV4aW5mbyBsYXBhY2sgcGNyZSByZWFkbGluZSIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHRleGluZm8gZ2V0dGV4dAoraW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHRleGluZm8gZ2V0dGV4dCBtaW1lLXhkZwogCiBFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWphdmEgLS1kaXNhYmxlLWRvY3MiCiAKLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9vY3RhdmUvJHtQTn0tJHtQVn0udGFyLmd6IFwKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9vY3RhdmUvJHtCUE59LSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtYmxhcy1saWJyYXJ5LWludGVnZXItc2l6ZS5wYXRjaCBcCiAiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wY2ltZW0vcGNpbWVtXzIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wY2ltZW0vcGNpbWVtXzIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDdkNWE4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BjaW1lbS9wY2ltZW1fMi4wLmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiU2ltcGxlIHByb2dyYW0gdG8gcmVhZCAmIHdyaXRlIHRvIGEgcGNpIGRldmljZSBmcm9tIHVzZXJzcGFjZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iaWxsZmFycm93L3BjaW1lbSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2JpbGxmYXJyb3cvcGNpbWVtL2lzc3VlcyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitDT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NHxhYXJjaDY0fGFybSkiCisKK1NSQ1JFViA9ICIwOTcyNGVkYjE3ODNhOThkYTJiN2FlNTNjNWFhYTg3NDkzYWFiYzliIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2JpbGxmYXJyb3cvcGNpbWVtLmdpdCAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7Qn0vcGNpbWVtICR7RH0ke2JpbmRpcn0vcGNpbWVtCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJkYmktcGVybF8xLjY0Mi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmRiaS1wZXJsXzEuNjQyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTMyYjNmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmRiaS1wZXJsXzEuNjQyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjIgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgUGVybCBEYXRhYmFzZSBJbnRlcmZhY2UiCi1ERVNDUklQVElPTiA9ICJEQkkgaXMgYSBkYXRhYmFzZSBhY2Nlc3MgQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlIFwKLShBUEkpIGZvciB0aGUgUGVybCBMYW5ndWFnZS4gVGhlIERCSSBBUEkgU3BlY2lmaWNhdGlvbiBkZWZpbmVzIGEgc2V0IFwKLW9mIGZ1bmN0aW9ucywgdmFyaWFibGVzIGFuZCBjb252ZW50aW9ucyB0aGF0IHByb3ZpZGUgYSBjb25zaXN0ZW50IFwKLWRhdGFiYXNlIGludGVyZmFjZSBpbmRlcGVuZGVudCBvZiB0aGUgYWN0dWFsIGRhdGFiYXNlIGJlaW5nIHVzZWQuIFwKLSIKLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9EQkkvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTEwOTgyYzcxNDhlMGEwMTJjMGZkODA1MzQ1MjJmNWM1IgotCi1TUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL1QvVEkvVElNQi9EQkktJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImYyYmExOGI1Y2VhMWM4Y2IzMjJhNjJiZTBhODQ3ZjNkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNmMjAyNTAyM2E1NjI4NmNlYmQxNWNiNDk1ZTM2Y2NkOWI0NTZjM2NjMjI5YmYyY2UxZjY5ZTllYmZjMjdmNWQiCi0KLVMgPSAiJHtXT1JLRElSfS9EQkktJHtQVn0iCi0KLWluaGVyaXQgY3BhbiBwdGVzdC1wZXJsCi0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLQkjIHRlc3QgcmVxdWlyZXMgIi1UIiAodGFpbnQpIGNvbW1hbmQgbGluZSBvcHRpb24KLQlybSAtcmYgJHtCfS90L3BvZC1jb3ZlcmFnZS50Ci0Jcm0gLXJmICR7Qn0vdC8xM3RhaW50LnQKLQkjIHNvdXJjZSBvZiB0ZXN0IGZhaWx1cmUgbm90IG9idmlvdXMKLQlybSAtcmYgJHtCfS90Lzg1Z29mZXIudAotCSMgdW5jbGVhciB3aHkgdGhlcmUgYXJlIHNldmVyYWwgZHVwbGljYXRlcyBvZiB0ZXN0cyBpbiB0YXJiYWxsCi0Jcm0gLXJmICR7Qn0vdC96Ki50Ci19Ci0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICIgXAotICAgIHBlcmwgXAotICAgIHBlcmwtbW9kdWxlLWNhcnAgXAotICAgIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKLSAgICBwZXJsLW1vZHVsZS1leHBvcnRlci1oZWF2eSBcCi0gICAgcGVybC1tb2R1bGUtZHluYWxvYWRlciBcCi0gICAgcGVybC1tb2R1bGUtaW8tZGlyIFwKLSAgICBwZXJsLW1vZHVsZS1zY2FsYXItdXRpbCBcCi0gICAgcGVybC1tb2R1bGUtdW5pdmVyc2FsIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiIFwKLSAgICAke1BOfSBcCi0gICAgcGVybC1tb2R1bGUtYiBcCi0gICAgcGVybC1tb2R1bGUtYmVuY2htYXJrIFwKLSAgICBwZXJsLW1vZHVsZS1jd2QgXAotICAgIHBlcmwtbW9kdWxlLWRhdGEtZHVtcGVyIFwKLSAgICBwZXJsLW1vZHVsZS1lbmNvZGUgXAotICAgIHBlcmwtbW9kdWxlLWVuY29kZS1ieXRlIFwKLSAgICBwZXJsLW1vZHVsZS1lbmNvZGUtZW5jb2RpbmcgXAotICAgIHBlcmwtbW9kdWxlLWZpbGUtY29weSBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1wYXRoIFwKLSAgICBwZXJsLW1vZHVsZS1saWIgXAotICAgIHBlcmwtbW9kdWxlLXBlcmxpbyBcCi0gICAgcGVybC1tb2R1bGUtcGVybGlvLXNjYWxhciBcCi0gICAgcGVybC1tb2R1bGUtcGVybGlvLXZpYSBcCi0gICAgcGVybC1tb2R1bGUtc2RibS1maWxlIFwKLSAgICBwZXJsLW1vZHVsZS1zdG9yYWJsZSBcCi0gICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKLSAgICBwZXJsLW1vZHVsZS11dGY4IFwKLSAgICAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZGJpLXBlcmxfMS42NDMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJkYmktcGVybF8xLjY0My5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWZhZDQ2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZGJpLXBlcmxfMS42NDMuYmIKQEAgLTAsMCArMSw2MiBAQAorU1VNTUFSWSA9ICJUaGUgUGVybCBEYXRhYmFzZSBJbnRlcmZhY2UiCitERVNDUklQVElPTiA9ICJEQkkgaXMgYSBkYXRhYmFzZSBhY2Nlc3MgQXBwbGljYXRpb24gUHJvZ3JhbW1pbmcgSW50ZXJmYWNlIFwKKyhBUEkpIGZvciB0aGUgUGVybCBMYW5ndWFnZS4gVGhlIERCSSBBUEkgU3BlY2lmaWNhdGlvbiBkZWZpbmVzIGEgc2V0IFwKK29mIGZ1bmN0aW9ucywgdmFyaWFibGVzIGFuZCBjb252ZW50aW9ucyB0aGF0IHByb3ZpZGUgYSBjb25zaXN0ZW50IFwKK2RhdGFiYXNlIGludGVyZmFjZSBpbmRlcGVuZGVudCBvZiB0aGUgYWN0dWFsIGRhdGFiYXNlIGJlaW5nIHVzZWQuIFwKKyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9EQkkvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTEwOTgyYzcxNDhlMGEwMTJjMGZkODA1MzQ1MjJmNWM1IgorCitTUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL1QvVEkvVElNQi9EQkktJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gIjM1MmY4MGIxZTIzNzY5YzExNjA4MmE5MDkwNWQ3Mzk4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhMmI5OTNkYjU2MGEyYzM3M2MxNzRlZTk3NmE1MTAyN2RkNzgwZWM3NjZhZTE3NjIwYzIwMzkzZDJlODM2ZmEiCisKK1MgPSAiJHtXT1JLRElSfS9EQkktJHtQVn0iCisKK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKwkjIHRlc3QgcmVxdWlyZXMgIi1UIiAodGFpbnQpIGNvbW1hbmQgbGluZSBvcHRpb24KKwlybSAtcmYgJHtCfS90L3BvZC1jb3ZlcmFnZS50CisJcm0gLXJmICR7Qn0vdC8xM3RhaW50LnQKKwkjIHNvdXJjZSBvZiB0ZXN0IGZhaWx1cmUgbm90IG9idmlvdXMKKwlybSAtcmYgJHtCfS90Lzg1Z29mZXIudAorCSMgdW5jbGVhciB3aHkgdGhlcmUgYXJlIHNldmVyYWwgZHVwbGljYXRlcyBvZiB0ZXN0cyBpbiB0YXJiYWxsCisJcm0gLXJmICR7Qn0vdC96Ki50Cit9CisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICIgXAorICAgIHBlcmwgXAorICAgIHBlcmwtbW9kdWxlLWNhcnAgXAorICAgIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKKyAgICBwZXJsLW1vZHVsZS1leHBvcnRlci1oZWF2eSBcCisgICAgcGVybC1tb2R1bGUtZHluYWxvYWRlciBcCisgICAgcGVybC1tb2R1bGUtaW8tZGlyIFwKKyAgICBwZXJsLW1vZHVsZS1zY2FsYXItdXRpbCBcCisgICAgcGVybC1tb2R1bGUtdW5pdmVyc2FsIFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiIFwKKyAgICAke1BOfSBcCisgICAgcGVybC1tb2R1bGUtYiBcCisgICAgcGVybC1tb2R1bGUtYmVuY2htYXJrIFwKKyAgICBwZXJsLW1vZHVsZS1jd2QgXAorICAgIHBlcmwtbW9kdWxlLWRhdGEtZHVtcGVyIFwKKyAgICBwZXJsLW1vZHVsZS1lbmNvZGUgXAorICAgIHBlcmwtbW9kdWxlLWVuY29kZS1ieXRlIFwKKyAgICBwZXJsLW1vZHVsZS1lbmNvZGUtZW5jb2RpbmcgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtY29weSBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1wYXRoIFwKKyAgICBwZXJsLW1vZHVsZS1saWIgXAorICAgIHBlcmwtbW9kdWxlLXBlcmxpbyBcCisgICAgcGVybC1tb2R1bGUtcGVybGlvLXNjYWxhciBcCisgICAgcGVybC1tb2R1bGUtcGVybGlvLXZpYSBcCisgICAgcGVybC1tb2R1bGUtc2RibS1maWxlIFwKKyAgICBwZXJsLW1vZHVsZS1zdG9yYWJsZSBcCisgICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKKyAgICBwZXJsLW1vZHVsZS11dGY4IFwKKyAgICAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliaW8tcHR5LXBlcmxfMS4xMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmlvLXB0eS1wZXJsXzEuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxYTk1ZTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliaW8tcHR5LXBlcmxfMS4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBtb2R1bGUgZm9yIHBzZXVkbyB0dHkgSU8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTUVUQS55bWw7YmVnaW5saW5lPTExO2VuZGxpbmU9MTI7bWQ1PWIyNTYyZjk0OTA3ZWViNDJlOGNlOWQ0NWY2MjhlNTg3IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuY3Bhbi5vcmcvbW9kdWxlcy9ieS1tb2R1bGUvSU8vSU8tVHR5LSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjExNjk1YTFhNTE2YjNiZDFiOTBjZTc1ZmYwY2UzZTZkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyZWY4NzcwZDMzMDkxNzgyMDNmOGM4YWMyNWU2MjNlNjNjZjc2ZTk3ODMwZmQzYmUyODBhZGUxYTU1NTI5MGQiCi0KLVMgPSAiJHtXT1JLRElSfS9JTy1UdHktJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9wZXJsL3ZlbmRvcl9wZXJsLyovYXV0by9JTy9UdHkvLmRlYnVnLyIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliaW8tcHR5LXBlcmxfMS4xNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmlvLXB0eS1wZXJsXzEuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWFiMjFkMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmlvLXB0eS1wZXJsXzEuMTQuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSBmb3IgcHNldWRvIHR0eSBJTyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NRVRBLnltbDtiZWdpbmxpbmU9MTE7ZW5kbGluZT0xMjttZDU9YjI1NjJmOTQ5MDdlZWI0MmU4Y2U5ZDQ1ZjYyOGU1ODciCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5jcGFuLm9yZy9tb2R1bGVzL2J5LW1vZHVsZS9JTy9JTy1UdHktJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzBiY2VjNGIxYjE5ODM4ZWQyMDlmYjk2YTEzZjNlODkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTFmM2U0ZTMxMTEyOGJkYjJjNmExNWYwMmM1MTM3NmNiODUyY2NmOWRmOWJlYmU4ZGZiYjVmOTU2MWViOTViNSIKKworUyA9ICIke1dPUktESVJ9L0lPLVR0eS0ke1BWfSIKKworaW5oZXJpdCBjcGFuCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvKi9hdXRvL0lPL1R0eS8uZGVidWcvIgorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJqc29uLXBlcmxfNC4wMjAwMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmpzb24tcGVybF80LjAyMDAwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRlNWE4YTYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJqc29uLXBlcmxfNC4wMjAwMC5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIlBlcmwgbW9kdWxlIHRvIGRlY29kZS9lbmNvZGUganNvbiBmaWxlcyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgSlNPTi5wbSBtb2R1bGUgd2l0aCBmcmllbmRzLiBcCitUaGUgbW9kdWxlIGltcGxlbWVudHMgSlNPTiBlbmNvZGUvZGVjb2RlLiIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL0pTT04iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0xMTcxO2VuZGxpbmU9MTE3NjttZDU9M2JlMmNiODE1OWQwOTQ3NjhlNjczODZjNDUzZThiYmUiCisKK0RFUEVORFMgKz0gInBlcmwiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9tYWthbWFrYS9KU09OLmdpdDtwcm90b2NvbD1odHRwcyIKKworU1JDUkVWID0gIjQyYTYzMjRkZjY1NGU5MjQxOTUxMmNlZTgwYzBiNDkxNTVkOWU1NmQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY3BhbgorCitSREVQRU5EU18ke1BOfSArPSAicGVybCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlicGVybGlvLWd6aXAtcGVybF8wLjIwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlicGVybGlvLWd6aXAtcGVybF8wLjIwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZmZTdhN2QKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJwZXJsaW8tZ3ppcC1wZXJsXzAuMjAuYmIKQEAgLTAsMCArMSwzMCBAQAorU1VNTUFSWSA9ICJQZXJsIG1vZHVsZSB0byBtYW5pcHVsYXRlIGFuZCBhY2Nlc3MgZ3ppcCBmaWxlcyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgZ3ppcC5wbSBtb2R1bGUgd2l0aCBmcmllbmRzLiBcCitUaGUgbW9kdWxlIGltcGxlbWVudHMgcGVybGlvIGxheWVyIGZvciBnemlwLiIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcG9kL1BlcmxJTzo6Z3ppcCIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTU1O2VuZGxpbmU9NjE7bWQ1PWJjM2RhMmRlYzFmYmVhNTlhYzkxMTcyYzVlMGViODM3IgorCitERVBFTkRTICs9ICJwZXJsIgorCitTUkNfVVJJID0gImh0dHBzOi8vY3Bhbi5tZXRhY3Bhbi5vcmcvYXV0aG9ycy9pZC9OL05XL05XQ0xBUksvUGVybElPLWd6aXAtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDM5M2VhZTVkMGIyM2RmNmNmNDBlZDQ0YWY3ZDcxMWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDg0ODY3OWEzZjIwMWUzZjNiMGM1ZjZmOTUyNmU2MDJhZjUyOTIzZmZhNDcxYTJhMzY1N2RiNzg2YmQzYmRjNSIKKworUyA9ICIke1dPUktESVJ9L1BlcmxJTy1nemlwLSR7UFZ9IgorCitFWFRSQV9DUEFORkxBR1MgPSAiRVhQQVRMSUJQQVRIPSR7U1RBR0lOR19MSUJESVJ9IEVYUEFUSU5DUEFUSD0ke1NUQUdJTkdfSU5DRElSfSIKKworaW5oZXJpdCBjcGFuCisKK2RvX2NvbXBpbGUoKSB7CisJZXhwb3J0IExJQkM9IiQoZmluZCAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vIC1uYW1lICdsaWJjLSouc28nKSIKKwljcGFuX2RvX2NvbXBpbGUKK30KKworUkRFUEVORFNfJHtQTn0gKz0gInBlcmwgcGVybC1tb2R1bGUtcGVybGlvIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1saWJ4bWwyLWRldGVjdGlvbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLWxpYnhtbDItZGV0ZWN0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2M2ZDRlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLWxpYnhtbDItZGV0ZWN0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotVXNlIHBrZy1jb25maWcgZm9yIGxpYnhtbDIgZGV0ZWN0aW9uLgotCi14bWwyLWNvbmZpZyBkb2VzIG5vdCB3b3JrLiBVc2UgcGtnY29uZmlnIHRvIHNldCBDUFBGTEFHUyBhbmQgTElCUy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiAgS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5pbiB8IDE1ICsrLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEzIGRlbGV0aW9ucygtKQotLS0tIGEvYWNpbmNsdWRlLm00Ci0rKysgYi9hY2luY2x1ZGUubTQKLUBAIC0yNDgxLDggKzI0ODEsOCBAQCBBQ19ERUZVTihbUEhQX1NFVFVQX0xJQlhNTF0sIFsKLSAgICAgTElCWE1MX1ZFUlNJT049YGV4cHIgWyRdMSBcKiAxMDAwMDAwICsgWyRdMiBcKiAxMDAwICsgWyRdM2AKLSAgICAgaWYgdGVzdCAiJExJQlhNTF9WRVJTSU9OIiAtZ2UgIjIwMDYwMTEiOyB0aGVuCi0gICAgICAgZm91bmRfbGlieG1sPXllcwotLSAgICAgIExJQlhNTF9MSUJTPWAkWE1MMl9DT05GSUcgLS1saWJzYAotLSAgICAgIExJQlhNTF9JTkNTPWAkWE1MMl9DT05GSUcgLS1jZmxhZ3NgCi0rICAgICAgTElCWE1MX0xJQlM9YHBrZy1jb25maWcgLS1saWJzIGxpYnhtbC0yLjBgCi0rICAgICAgTElCWE1MX0lOQ1M9YHBrZy1jb25maWcgLS1jZmxhZ3MgbGlieG1sLTIuMGAKLSAgICAgZWxzZQotICAgICAgIEFDX01TR19FUlJPUihbbGlieG1sMiB2ZXJzaW9uIDIuNi4xMSBvciBncmVhdGVyIHJlcXVpcmVkLl0pCi0gICAgIGZpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLWFjaW5jbHVkZS5tNC1kb24tdC11bnNldC1jYWNoZS12YXJpYWJsZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLWFjaW5jbHVkZS5tNC1kb24tdC11bnNldC1jYWNoZS12YXJpYWJsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxZGJlMjYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1hY2luY2x1ZGUubTQtZG9uLXQtdW5zZXQtY2FjaGUtdmFyaWFibGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotRnJvbSBkMjY3OWM4OWMwYjE1YjkwZTUzNjBiNDg2MzI1OGE3OTU1ZTVmNGU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMTIgRmViIDIwMTkgMTU6NTk6MTkgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gYWNpbmNsdWRlLm00OiBkb24ndCB1bnNldCBjYWNoZSB2YXJpYWJsZXMKLQotVW5zZXR0aW5nIHByZXZlbnRzIGNhY2hlIHZhcmlhYmxlIGZyb20gYmVpbmcgcGFzc2VkIHRvIGNvbmZpZ3VyZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1zcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLQotdXBkYXRlIHBhdGNoIHRvIHZlcnNpb24gNy4zLjIKLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBhY2luY2x1ZGUubTQgfCA0IC0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2FjaW5jbHVkZS5tNCBiL2FjaW5jbHVkZS5tNAotaW5kZXggMjVmOTAwZC4uMjY0MTk2OSAxMDA2NDQKLS0tLSBhL2FjaW5jbHVkZS5tNAotKysrIGIvYWNpbmNsdWRlLm00Ci1AQCAtMTkyMSw4ICsxOTIxLDYgQEAgZGVmaW5lKFtwaHBzaGlmdF0sW2lmZWxzZShpbmRleChbJEBdLFssXSksLTEsLFtzdWJzdHIoWyRAXSxpbmNyKGluZGV4KFskQF0sWyxdKSkKLSBkbmwKLSBBQ19ERUZVTihbUEhQX0NIRUNLX0ZVTkNfTElCXSxbCi0gICBpZmVsc2UoJDIsLDosWwotLSAgdW5zZXQgYWNfY3ZfbGliXyQyW11fJDEKLS0gIHVuc2V0IGFjX2N2X2xpYl8kMltdX19fJDEKLSAgIHVuc2V0IGZvdW5kCi0gICBBQ19DSEVDS19MSUIoJDIsICQxLCBbZm91bmQ9eWVzXSwgWwotICAgICBBQ19DSEVDS19MSUIoJDIsIF9fJDEsIFtmb3VuZD15ZXNdLCBbZm91bmQ9bm9dKQotQEAgLTE5NTQsOCArMTk1Miw2IEBAIGRubCBpbiB0aGUgZGVmYXVsdCBsaWJyYXJpZXMgYW5kIGFzIGEgZmFsbCBiYWNrIGluIHRoZSBzcGVjaWZpZWQgbGlicmFyeS4KLSBkbmwgRGVmaW5lcyBIQVZFX2Z1bmMgYW5kIEhBVkVfbGlicmFyeSBpZiBmb3VuZCBhbmQgYWRkcyB0aGUgbGlicmFyeSB0byBMSUJTLgotIGRubAotIEFDX0RFRlVOKFtQSFBfQ0hFQ0tfRlVOQ10sWwotLSAgdW5zZXQgYWNfY3ZfZnVuY18kMQotLSAgdW5zZXQgYWNfY3ZfZnVuY19fXyQxCi0gICB1bnNldCBmb3VuZAotIAotICAgQUNfQ0hFQ0tfRlVOQygkMSwgW2ZvdW5kPXllc10sWyBBQ19DSEVDS19GVU5DKF9fJDEsW2ZvdW5kPXllc10sW2ZvdW5kPW5vXSkgXSkKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1hY2luY2x1ZGUubTQtc2tpcC1iaW5jb25maWctY2hlY2stZm9yLWxpYnhtbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtYWNpbmNsdWRlLm00LXNraXAtYmluY29uZmlnLWNoZWNrLWZvci1saWJ4bWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE1MzI5MjYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1hY2luY2x1ZGUubTQtc2tpcC1iaW5jb25maWctY2hlY2stZm9yLWxpYnhtbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZyb20gYTJkMTQ2YjhkZDlkMDJmNTIzZDFlMjA1ZDc5NzkyNjI2YTcxZGVjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDIgQXByIDIwMTggMTU6Mjc6MDkgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gYWNpbmNsdWRlLm00OiBza2lwIGJpbmNvbmZpZyBjaGVjayBmb3IgbGlieG1sCi0KLVdlIHdhbnQgbGlieG1sIGZsYWdzIHRvIGJlIHBpY2tlZCB1cCB1c2luZyBwa2ctY29uZmlnIGluc3RlYWQgb2YgdGhlCi14bWwyLWNvbmZpZyBmaWxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLXNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotCi0tLS0KLSBhY2luY2x1ZGUubTQgfCAyOSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2FjaW5jbHVkZS5tNCBiL2FjaW5jbHVkZS5tNAotaW5kZXggZDQyZDcwOC4uZDMyNzY2YSAxMDA2NDQKLS0tLSBhL2FjaW5jbHVkZS5tNAotKysrIGIvYWNpbmNsdWRlLm00Ci1AQCAtMjUyNSwzNSArMjUyNSw2IEBAIGRubAotIEFDX0RFRlVOKFtQSFBfU0VUVVBfTElCWE1MXSwgWwotICAgZm91bmRfbGlieG1sPW5vCi0gCi0tICBkbmwgRmlyc3QgdHJ5IHRvIGZpbmQgeG1sMi1jb25maWcKLS0gIEFDX0NBQ0hFX0NIRUNLKFtmb3IgeG1sMi1jb25maWcgcGF0aF0sIGFjX2N2X3BocF94bWwyX2NvbmZpZ19wYXRoLAotLSAgWwotLSAgICBmb3IgaSBpbiAkUEhQX0xJQlhNTF9ESVIgL3Vzci9sb2NhbCAvdXNyOyBkbwotLSAgICAgIGlmIHRlc3QgLXggIiRpL2Jpbi94bWwyLWNvbmZpZyI7IHRoZW4KLS0gICAgICAgIGFjX2N2X3BocF94bWwyX2NvbmZpZ19wYXRoPSIkaS9iaW4veG1sMi1jb25maWciCi0tICAgICAgICBicmVhawotLSAgICAgIGZpCi0tICAgIGRvbmUKLS0gIF0pCi0tCi0tICBpZiB0ZXN0IC14ICIkYWNfY3ZfcGhwX3htbDJfY29uZmlnX3BhdGgiOyB0aGVuCi0tICAgIFhNTDJfQ09ORklHPSIkYWNfY3ZfcGhwX3htbDJfY29uZmlnX3BhdGgiCi0tICAgIGxpYnhtbF9mdWxsX3ZlcnNpb249YCRYTUwyX0NPTkZJRyAtLXZlcnNpb25gCi0tICAgIGFjX0lGUz0kSUZTCi0tICAgIElGUz0iLiIKLS0gICAgc2V0ICRsaWJ4bWxfZnVsbF92ZXJzaW9uCi0tICAgIElGUz0kYWNfSUZTCi0tICAgIExJQlhNTF9WRVJTSU9OPWBleHByIFskXTEgXCogMTAwMDAwMCArIFskXTIgXCogMTAwMCArIFskXTNgCi0tICAgIGlmIHRlc3QgIiRMSUJYTUxfVkVSU0lPTiIgLWdlICIyMDA2MDExIjsgdGhlbgotLSAgICAgIGZvdW5kX2xpYnhtbD15ZXMKLS0gICAgICBMSUJYTUxfTElCUz1gJFhNTDJfQ09ORklHIC0tbGlic2AKLS0gICAgICBMSUJYTUxfSU5DUz1gJFhNTDJfQ09ORklHIC0tY2ZsYWdzYAotLSAgICBlbHNlCi0tICAgICAgQUNfTVNHX0VSUk9SKFtsaWJ4bWwyIHZlcnNpb24gMi42LjExIG9yIGdyZWF0ZXIgcmVxdWlyZWQuXSkKLS0gICAgZmkKLS0gIGZpCi0tCi0tICBkbmwgSWYgeG1sMi1jb25maWcgZmFpbHMsIHRyeSBwa2ctY29uZmlnCi0gICBpZiB0ZXN0ICIkZm91bmRfbGlieG1sIiA9ICJubyI7IHRoZW4KLSAgICAgaWYgdGVzdCAteiAiJFBLR19DT05GSUciOyB0aGVuCi0gICAgICAgQUNfUEFUSF9QUk9HKFBLR19DT05GSUcsIHBrZy1jb25maWcsIG5vKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1jb25maWd1cmUuYWMtZG9uLXQtaW5jbHVkZS1idWlsZC1saWJ0b29sLm00LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1jb25maWd1cmUuYWMtZG9uLXQtaW5jbHVkZS1idWlsZC1saWJ0b29sLm00LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI4NjEzNjYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLWNvbmZpZ3VyZS5hYy1kb24tdC1pbmNsdWRlLWJ1aWxkLWxpYnRvb2wubTQucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBmNWEzNGU3NzE1MzJiODQzM2YzMDdiNjc5NTAwYzI2YWYzMjhiYTM1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMTcgQXByIDIwMjAgMTU6MDE6NTcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBkb24ndCBpbmNsdWRlIGJ1aWxkL2xpYnRvb2wubTQKKword2UgZGVsZXRlIGJ1aWxkL2xpYnRvb2wubTQgYmVmb3JlIGRvX2NvbmZpZ3VyZSwKK3dlIHdpbGwgdXNlIGxpYnRvb2wubTQgdW5kZXIgQUNMT0NBTERJUgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLXNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMDZjNmEyNy4uZjg1MTQ0ZSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNiw3ICs2LDYgQEAgZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBtNF9pbmNsdWRlKFtidWlsZC9heF9jaGVja19jb21waWxlX2ZsYWcubTRdKQorIG00X2luY2x1ZGUoW2J1aWxkL2F4X2Z1bmNfd2hpY2hfZ2V0aG9zdGJ5bmFtZV9yLm00XSkKKyBtNF9pbmNsdWRlKFtidWlsZC9heF9nY2NfZnVuY19hdHRyaWJ1dGUubTRdKQorLW00X2luY2x1ZGUoW2J1aWxkL2xpYnRvb2wubTRdKQorIG00X2luY2x1ZGUoW2J1aWxkL3BocF9jeHhfY29tcGlsZV9zdGRjeHgubTRdKQorIG00X2luY2x1ZGUoW2J1aWxkL3BocC5tNF0pCisgbTRfaW5jbHVkZShbYnVpbGQvcGtnLm00XSkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1tYWluLXBocF9pbmkuYy1idWlsZC1lbXB0eS1waHBfbG9hZF96ZW5kX2V4dGVuc2lvbl9jLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1tYWluLXBocF9pbmkuYy1idWlsZC1lbXB0eS1waHBfbG9hZF96ZW5kX2V4dGVuc2lvbl9jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2U5NzM4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtbWFpbi1waHBfaW5pLmMtYnVpbGQtZW1wdHktcGhwX2xvYWRfemVuZF9leHRlbnNpb25fYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLUZyb20gMjg0MmFhMmEwNzhlYjFjYWQ1NTU0MGI2MWU3ZWRmMTExMzk1MTUwZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRob21hcyBQZXRhenpvbmkgPHRob21hcy5wZXRhenpvbmlAYm9vdGxpbi5jb20+Ci1EYXRlOiBNb24sIDI2IEZlYiAyMDE4IDE5OjMwOjU1ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1haW4vcGhwX2luaS5jOiBidWlsZCBlbXB0eSBwaHBfbG9hZF96ZW5kX2V4dGVuc2lvbl9jYigpIHdoZW4KLSAhSEFWRV9MSUJETAotCi1Db21taXQgMDc4MmE3ZmM2MzE0YzhiZDNjYmZkNTdmMTJkMDQ3OWJmOWNjOGRjNyAoIkZpeGVkIGJ1ZyAjNzQ4NjYKLWV4dGVuc2lvbl9kaXIgPSAiLi9leHQiIG5vdyB1c2UgY3VycmVudCBkaXJlY3RvcnkgZm9yIGJhc2UiKSBtb2RpZmllZAotdGhlIHBocF9sb2FkX3plbmRfZXh0ZW5zaW9uX2NiKCkgZnVuY3Rpb24gdG8gdXNlIHBocF9sb2FkX3NobGliKCksIGFuZAotcGFzcyBhIGhhbmRsZSB0byB0aGUgbmV3bHkgaW50cm9kdWNlZCB6ZW5kX2xvYWRfZXh0ZW5zaW9uX2hhbmRsZSgpCi1mdW5jdGlvbiBpbnN0ZWFkIG9mIHBhc3NpbmcgdGhlIGV4dGVuc2lvbiBwYXRoIHRvCi16ZW5kX2xvYWRfZXh0ZW5zaW9uKCkuCi0KLVdoaWxlIGRvaW5nIHNvLCBpdCBpbnRyb2R1Y2VkIGEgY2FsbCB0byBwaHBfbG9hZF9zaGxpYigpIGZyb20gY29kZQotdGhhdCBpcyBidWlsdCBldmVuIHdoZW4gSEFWRV9MSUJETCBpcyBub3QgZGVmaW5lZC4gSG93ZXZlciwKLXBocF9sb2FkX3NobGliKCkgaXMgbm90IGltcGxlbWVudGVkIHdoZW4gSEFWRV9MSUJETCBpcyBub3QgZGVmaW5lZCwKLWZvciBvYnZpb3VzIHJlYXNvbnMuCi0KLUl0IHR1cm5zIG91dCB0aGF0IHplbmRfbG9hZF9leHRlbnNpb25faGFuZGxlKCkgYW55d2F5IGRvZXNuJ3QgZG8KLWFueXRoaW5nIHdoZW4gWkVORF9FWFRFTlNJT05TX1NVUFBPUlQgaXMgZGVmaW5lZCB0byAwLCBhbmQKLVpFTkRfRVhURU5TSU9OU19TVVBQT1JUIGlzIG5vdCBkZWZpbmVkIHdoZW4gSEFWRV9MSUJETCBpcyBub3QgZGVmaW5lZAotKFplbmQvemVuZF9wb3J0YWJpbGl0eS5oKS4KLQotRml4ZXMgdGhlIGZvbGxvd2luZyBidWlsZCBmYWlsdXJlIHdoZW4gYnVpbGRpbmcgb24gYSBzeXN0ZW0gdGhhdAotZG9lc24ndCBoYXZlIGxpYmRsOgotCi1tYWluL3BocF9pbmkubzogSW4gZnVuY3Rpb24gYHBocF9sb2FkX3plbmRfZXh0ZW5zaW9uX2NiJzoKLXBocF9pbmkuYzooLnRleHQrMHg0NzgpOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBwaHBfbG9hZF9zaGxpYicKLXBocF9pbmkuYzooLnRleHQrMHg0YjApOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBwaHBfbG9hZF9zaGxpYicKLWNvbGxlY3QyOiBlcnJvcjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwOi8vZ2l0LnBocC5uZXQvP3A9cGhwLXNyYy5naXQ7YT1jb21taXQ7aD0yODQyYWEyYTA3OGViMWNhZDU1NTQwYjYxZTdlZGYxMTEzOTUxNTBkXQotU2lnbmVkLW9mZi1ieTogVGhvbWFzIFBldGF6em9uaSA8dGhvbWFzLnBldGF6em9uaUBib290bGluLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0tLS0KLSBtYWluL3BocF9pbmkuYyB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL21haW4vcGhwX2luaS5jIGIvbWFpbi9waHBfaW5pLmMKLWluZGV4IGJhNThlYjEuLmZjYTI2M2UgMTAwNjQ0Ci0tLS0gYS9tYWluL3BocF9pbmkuYwotKysrIGIvbWFpbi9waHBfaW5pLmMKLUBAIC0zNTAsNiArMzUwLDcgQEAgc3RhdGljIHZvaWQgcGhwX2xvYWRfcGhwX2V4dGVuc2lvbl9jYih2b2lkICphcmcpCi0gCi0gLyoge3t7IHBocF9sb2FkX3plbmRfZXh0ZW5zaW9uX2NiCi0gICovCi0rI2lmZGVmIEhBVkVfTElCREwKLSBzdGF0aWMgdm9pZCBwaHBfbG9hZF96ZW5kX2V4dGVuc2lvbl9jYih2b2lkICphcmcpCi0gewotIAljaGFyICpmaWxlbmFtZSA9ICooKGNoYXIgKiopIGFyZyk7Ci1AQCAtNDA5LDYgKzQxMCw5IEBAIHN0YXRpYyB2b2lkIHBocF9sb2FkX3plbmRfZXh0ZW5zaW9uX2NiKHZvaWQgKmFyZykKLSAJCWVmcmVlKGxpYnBhdGgpOwotIAl9Ci0gfQotKyNlbHNlCi0rc3RhdGljIHZvaWQgcGhwX2xvYWRfemVuZF9leHRlbnNpb25fY2Iodm9pZCAqYXJnKSB7IH0KLSsjZW5kaWYKLSAvKiB9fX0gKi8KLSAKLSAvKiB7e3sgcGhwX2luaXRfY29uZmlnCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtb3BjYWNoZS1jb25maWcubTQtZW5hYmxlLW9wY2FjaGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLW9wY2FjaGUtY29uZmlnLm00LWVuYWJsZS1vcGNhY2hlLnBhdGNoCmluZGV4IDM0ZjQzM2YuLmVlMGQ1ZWQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtb3BjYWNoZS1jb25maWcubTQtZW5hYmxlLW9wY2FjaGUucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1vcGNhY2hlLWNvbmZpZy5tNC1lbmFibGUtb3BjYWNoZS5wYXRjaApAQCAtMSwzMCArMSwyNyBAQAotRnJvbSA4ZGU1YmE2OWQyMGQwNDliOGNhOTgzYTk0NzBjNzMwMzE0MmVjMGIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLURhdGU6IFN1biwgMjggQXByIDIwMTkgMTY6NTU6MTMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gRnJvbSBmYjEzOWQ5NzA3ZGFiZTE2ODRiNDcyYTA4YTZlYjU3NjFlZGU0YTNhIE1vbiBTZXAgMTcKLSAwMDowMDowMCAyMDAxIEZyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+IERhdGU6IFR1ZSwgMTIKLSBGZWIgMjAxOSAxNDo1NjoxNiArMDgwMCBTdWJqZWN0OiBbUEFUQ0hdIG9wY2FjaGUvY29uZmlnLm00OiBlbmFibGUgb3BjYWNoZQorb3BjYWNoZS9jb25maWcubTQ6IGVuYWJsZSBvcGNhY2hlCiAKLVdlIGNhbid0IHVzZSBBQ19UUllfUlVOIHRvIHJ1biBwcm9ncmFtcyBpbiBhIGNyb3NzIGNvbXBpbGUgZW52aXJvbm1lbnQuIFNldAotdGhlIHZhcmlhYmxlcyBkaXJlY3RseSBpbnN0ZWFkIHNpbmNlIHdlIGtub3cgdGhhdCB3ZSdkIGJlIHJ1bm5pbmcgb24gbGF0ZXN0CitXZSBjYW4ndCB1c2UgQUNfVFJZX1JVTiB0byBydW4gcHJvZ3JhbXMgaW4gYSBjcm9zcyBjb21waWxlIGVudmlyb25tZW50LgorU2V0Cit0aGUgdmFyaWFibGVzIGRpcmVjdGx5IGluc3RlYWQgc2luY2Ugd2Uga25vdyB0aGF0IHdlJ2QgYmUgcnVubmluZyBvbgorbGF0ZXN0CiBlbm91Z2ggbGludXgga2VybmVsLgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0NvbmZpZ3VyYXRpb25dCiAKIFNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CiAKLXVwZGF0ZSBwYXRjaCB0byB2ZXJzaW9uIDcuMy40Cit1cGRhdGUgcGF0Y2ggdG8gdmVyc2lvbiA3LjQuNAogU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KIC0tLQotIGV4dC9vcGNhY2hlL2NvbmZpZy5tNCB8IDMxMiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDMwNiBkZWxldGlvbnMoLSkKKyBleHQvb3BjYWNoZS9jb25maWcubTQgfCAxOTQgKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxOTEgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9leHQvb3BjYWNoZS9jb25maWcubTQgYi9leHQvb3BjYWNoZS9jb25maWcubTQKLWluZGV4IDQ4MTAyMTcuLjIyYzNkNjEgMTAwNjQ0CitpbmRleCA2YzQwY2FmLi44NGRkZjFlIDEwMDY0NAogLS0tIGEvZXh0L29wY2FjaGUvY29uZmlnLm00CiArKysgYi9leHQvb3BjYWNoZS9jb25maWcubTQKLUBAIC0yNywzMTkgKzI3LDE5IEBAIGlmIHRlc3QgIiRQSFBfT1BDQUNIRSIgIT0gIm5vIjsgdGhlbgotICAgQUNfQ0hFQ0tfSEVBREVSUyhbdW5pc3RkLmggc3lzL3Vpby5oXSkKK0BAIC0yMywyMDEgKzIzLDEzIEBAIGlmIHRlc3QgIiRQSFBfT1BDQUNIRSIgIT0gIm5vIjsgdGhlbgorICAgQUNfQ0hFQ0tfRlVOQ1MoW21wcm90ZWN0XSkKICAKICAgIEFDX01TR19DSEVDS0lORyhmb3Igc3lzdmlwYyBzaGFyZWQgbWVtb3J5IHN1cHBvcnQpCiAtICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwpAQCAtOTUsOSArOTIsOCBAQAogLSAgICBBQ19ERUZJTkUoSEFWRV9TSE1fSVBDLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIFN5c1YgSVBDIFNITSBzdXBwb3J0XSkKIC0gICAgbXNnPXllc10sW21zZz1ub10sW21zZz1ub10pCiAtICBBQ19NU0dfUkVTVUxUKFskbXNnXSkKLS0KICsgIEFDX0RFRklORShIQVZFX1NITV9JUEMsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgU3lzViBJUEMgU0hNIHN1cHBvcnRdKQotKyAgCisgCiAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG1tYXAoKSB1c2luZyBNQVBfQU5PTiBzaGFyZWQgbWVtb3J5IHN1cHBvcnQpCiAtICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwogLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTExNCw3ICsxMTAsOCBAQAogLSNpZm5kZWYgTUFQX0ZBSUxFRAogLSMgZGVmaW5lIE1BUF9GQUlMRUQgKCh2b2lkKiktMSkKIC0jZW5kaWYKLS0KKysgIEFDX0RFRklORShIQVZFX1NITV9NTUFQX0FOT04sIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgbW1hcChNQVBfQU5PTikgU0hNIHN1cHBvcnRdKQorIAogLWludCBtYWluKCkgewogLSAgcGlkX3QgcGlkOwogLSAgaW50IHN0YXR1czsKQEAgLTE0OSw2NCArMTQ2LDggQEAKIC0gICAgQUNfREVGSU5FKEhBVkVfU0hNX01NQVBfQU5PTiwgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBtbWFwKE1BUF9BTk9OKSBTSE0gc3VwcG9ydF0pCiAtICAgIG1zZz15ZXNdLFttc2c9bm9dLFttc2c9bm9dKQogLSAgQUNfTVNHX1JFU1VMVChbJG1zZ10pCi0rICBBQ19ERUZJTkUoSEFWRV9TSE1fTU1BUF9BTk9OLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIG1tYXAoTUFQX0FOT04pIFNITSBzdXBwb3J0XSkKLSAKLSAgIEFDX01TR19DSEVDS0lORyhmb3IgbW1hcCgpIHVzaW5nIC9kZXYvemVybyBzaGFyZWQgbWVtb3J5IHN1cHBvcnQpCi0tICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwotLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0jaW5jbHVkZSA8c3lzL3dhaXQuaD4KLS0jaW5jbHVkZSA8c3lzL21tYW4uaD4KLS0jaW5jbHVkZSA8c3lzL3N0YXQuaD4KLS0jaW5jbHVkZSA8ZmNudGwuaD4KLS0jaW5jbHVkZSA8dW5pc3RkLmg+Ci0tI2luY2x1ZGUgPHN0cmluZy5oPgogLQotLSNpZm5kZWYgTUFQX0ZBSUxFRAotLSMgZGVmaW5lIE1BUF9GQUlMRUQgKCh2b2lkKiktMSkKLS0jZW5kaWYKLS0KLS1pbnQgbWFpbigpIHsKLS0gIHBpZF90IHBpZDsKLS0gIGludCBzdGF0dXM7Ci0tICBpbnQgZmQ7Ci0tICBjaGFyICpzaG07Ci0tCi0tICBmZCA9IG9wZW4oIi9kZXYvemVybyIsIE9fUkRXUiwgU19JUlVTUiB8IFNfSVdVU1IpOwotLSAgaWYgKGZkID09IC0xKSB7Ci0tICAgIHJldHVybiAxOwotLSAgfQotLQotLSAgc2htID0gbW1hcChOVUxMLCA0MDk2LCBQUk9UX1JFQUQgfCBQUk9UX1dSSVRFLCBNQVBfU0hBUkVELCBmZCwgMCk7Ci0tICBpZiAoc2htID09IE1BUF9GQUlMRUQpIHsKLS0gICAgcmV0dXJuIDI7Ci0tICB9Ci0tCi0tICBzdHJjcHkoc2htLCAiaGVsbG8iKTsKLS0KLS0gIHBpZCA9IGZvcmsoKTsKLS0gIGlmIChwaWQgPCAwKSB7Ci0tICAgIHJldHVybiA1OwotLSAgfSBlbHNlIGlmIChwaWQgPT0gMCkgewotLSAgICBzdHJjcHkoc2htLCAiYnllIik7Ci0tICAgIHJldHVybiA2OwotLSAgfQotLSAgaWYgKHdhaXQoJnN0YXR1cykgIT0gcGlkKSB7Ci0tICAgIHJldHVybiA3OwotLSAgfQotLSAgaWYgKCFXSUZFWElURUQoc3RhdHVzKSB8fCBXRVhJVFNUQVRVUyhzdGF0dXMpICE9IDYpIHsKLS0gICAgcmV0dXJuIDg7Ci0tICB9Ci0tICBpZiAoc3RyY21wKHNobSwgImJ5ZSIpICE9IDApIHsKLS0gICAgcmV0dXJuIDk7Ci0tICB9Ci0tICByZXR1cm4gMDsKLS19Ci0tXV0pXSxbZG5sCi0tICAgIEFDX0RFRklORShIQVZFX1NITV9NTUFQX1pFUk8sIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgbW1hcCgiL2Rldi96ZXJvIikgU0hNIHN1cHBvcnRdKQotLSAgICBtc2c9eWVzXSxbbXNnPW5vXSxbbXNnPW5vXSkKLS0gIEFDX01TR19SRVNVTFQoWyRtc2ddKQotKyAgQUNfREVGSU5FKEhBVkVfU0hNX01NQVBfWkVSTywgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSBtbWFwKCIvZGV2L3plcm8iKSBTSE0gc3VwcG9ydF0pCi0gCistICBQSFBfQ0hFQ0tfRlVOQ19MSUIoc2htX29wZW4sIHJ0KQogICAgQUNfTVNHX0NIRUNLSU5HKGZvciBtbWFwKCkgdXNpbmcgc2htX29wZW4oKSBzaGFyZWQgbWVtb3J5IHN1cHBvcnQpCiAtICBBQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwogLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KQEAgLTIzMCw3ICsxNzEsNyBAQAogLSAgY2hhciAqc2htOwogLSAgY2hhciB0bXBuYW1lWzQwOTZdOwogLQotLSAgc3ByaW50Zih0bXBuYW1lLCJ0ZXN0LnNobS4lZFhYWFhYWCIsIGdldHBpZCgpKTsKKy0gIHNwcmludGYodG1wbmFtZSwiL29wY2FjaGUudGVzdC5zaG0uJWRYWFhYWFgiLCBnZXRwaWQoKSk7CiAtICBpZiAobWt0ZW1wKHRtcG5hbWUpID09IE5VTEwpIHsKIC0gICAgcmV0dXJuIDE7CiAtICB9CkBAIC0yNzMsODAgKzIxNCwxNSBAQAogLX0KIC1dXSldLFtkbmwKIC0gICAgQUNfREVGSU5FKEhBVkVfU0hNX01NQVBfUE9TSVgsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgUE9TSVggbW1hcCgpIFNITSBzdXBwb3J0XSkKLS0gICAgbXNnPXllc10sW21zZz1ub10sW21zZz1ub10pCi0tICBBQ19NU0dfUkVTVUxUKFskbXNnXSkKKy0gICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKKy0gICAgUEhQX0NIRUNLX0xJQlJBUlkocnQsIHNobV91bmxpbmssIFtQSFBfQUREX0xJQlJBUlkocnQsMSxPUENBQ0hFX1NIQVJFRF9MSUJBREQpXSkKKy0gIF0sWworLSAgICBBQ19NU0dfUkVTVUxUKFtub10pCistICBdLFsKKy0gICAgQUNfTVNHX1JFU1VMVChbbm9dKQorLSAgXSkKICsgIEFDX0RFRklORShIQVZFX1NITV9NTUFQX1BPU0lYLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIFBPU0lYIG1tYXAoKSBTSE0gc3VwcG9ydF0pCiAgCi0gICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG1tYXAoKSB1c2luZyByZWd1bGFyIGZpbGUgc2hhcmVkIG1lbW9yeSBzdXBwb3J0KQotLSAgQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKLS0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tI2luY2x1ZGUgPHN5cy93YWl0Lmg+Ci0tI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0tI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0tI2luY2x1ZGUgPGZjbnRsLmg+Ci0tI2luY2x1ZGUgPHVuaXN0ZC5oPgotLSNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2luY2x1ZGUgPHN0ZGlvLmg+Ci0tCi0tI2lmbmRlZiBNQVBfRkFJTEVECi0tIyBkZWZpbmUgTUFQX0ZBSUxFRCAoKHZvaWQqKS0xKQotLSNlbmRpZgotLQotLWludCBtYWluKCkgewotLSAgcGlkX3QgcGlkOwotLSAgaW50IHN0YXR1czsKLS0gIGludCBmZDsKLS0gIGNoYXIgKnNobTsKLS0gIGNoYXIgdG1wbmFtZVs0MDk2XTsKLS0KLS0gIHNwcmludGYodG1wbmFtZSwidGVzdC5zaG0uJWRYWFhYWFgiLCBnZXRwaWQoKSk7Ci0tICBpZiAobWt0ZW1wKHRtcG5hbWUpID09IE5VTEwpIHsKLS0gICAgcmV0dXJuIDE7Ci0tICB9Ci0tICBmZCA9IG9wZW4odG1wbmFtZSwgT19SRFdSIHwgT19DUkVBVCwgU19JUlVTUiB8IFNfSVdVU1IpOwotLSAgaWYgKGZkID09IC0xKSB7Ci0tICAgIHJldHVybiAyOwotLSAgfQotLSAgaWYgKGZ0cnVuY2F0ZShmZCwgNDA5NikgPCAwKSB7Ci0tICAgIGNsb3NlKGZkKTsKLS0gICAgdW5saW5rKHRtcG5hbWUpOwotLSAgICByZXR1cm4gMzsKLS0gIH0KLS0KLS0gIHNobSA9IG1tYXAoTlVMTCwgNDA5NiwgUFJPVF9SRUFEIHwgUFJPVF9XUklURSwgTUFQX1NIQVJFRCwgZmQsIDApOwotLSAgaWYgKHNobSA9PSBNQVBfRkFJTEVEKSB7Ci0tICAgIHJldHVybiA0OwotLSAgfQotLSAgdW5saW5rKHRtcG5hbWUpOwotLSAgY2xvc2UoZmQpOwotLQotLSAgc3RyY3B5KHNobSwgImhlbGxvIik7Ci0tCi0tICBwaWQgPSBmb3JrKCk7Ci0tICBpZiAocGlkIDwgMCkgewotLSAgICByZXR1cm4gNTsKLS0gIH0gZWxzZSBpZiAocGlkID09IDApIHsKLS0gICAgc3RyY3B5KHNobSwgImJ5ZSIpOwotLSAgICByZXR1cm4gNjsKLS0gIH0KLS0gIGlmICh3YWl0KCZzdGF0dXMpICE9IHBpZCkgewotLSAgICByZXR1cm4gNzsKLS0gIH0KLS0gIGlmICghV0lGRVhJVEVEKHN0YXR1cykgfHwgV0VYSVRTVEFUVVMoc3RhdHVzKSAhPSA2KSB7Ci0tICAgIHJldHVybiA4OwotLSAgfQotLSAgaWYgKHN0cmNtcChzaG0sICJieWUiKSAhPSAwKSB7Ci0tICAgIHJldHVybiA5OwotLSAgfQotLSAgcmV0dXJuIDA7Ci0tfQotLV1dKV0sW2RubAotLSAgICBBQ19ERUZJTkUoSEFWRV9TSE1fTU1BUF9GSUxFLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIG1tYXAoKSBTSE0gc3VwcG9ydF0pCi0tICAgIG1zZz15ZXNdLFttc2c9bm9dLFttc2c9bm9dKQotLSAgQUNfTVNHX1JFU1VMVChbJG1zZ10pCi0rICBBQ19ERUZJTkUoSEFWRV9TSE1fTU1BUF9GSUxFLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIG1tYXAoKSBTSE0gc3VwcG9ydF0pCi0gCiAgICBQSFBfTkVXX0VYVEVOU0lPTihvcGNhY2hlLAogIAlaZW5kQWNjZWxlcmF0b3IuYyBcCiAtLSAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtcGhwLWRvbi10LXVzZS1icm9rZW4td3JhcHBlci1mb3ItbWtkaXIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLXBocC1kb24tdC11c2UtYnJva2VuLXdyYXBwZXItZm9yLW1rZGlyLnBhdGNoCmluZGV4IDJmN2Q1ODEuLmQ2ODczNzMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtcGhwLWRvbi10LXVzZS1icm9rZW4td3JhcHBlci1mb3ItbWtkaXIucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDAwMS1waHAtZG9uLXQtdXNlLWJyb2tlbi13cmFwcGVyLWZvci1ta2Rpci5wYXRjaApAQCAtNCwxNyArNCwyMCBAQAogU3ViamVjdDogW1BBVENIIDIvOF0gcGhwOiBkb24ndCB1c2UgYnJva2VuIHdyYXBwZXIgZm9yIG1rZGlyCiAKIFNpZ25lZC1vZmYtYnk6IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+CisKK3VwZGF0ZSBwYXRjaCB0byB2ZXJzaW9uIDcuNC40CitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgogLS0tCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQogCi0gTWFrZWZpbGUuZ2xvYmFsIHwgMiArLQorIGJ1aWxkL01ha2VmaWxlLmdsb2JhbCB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmdsb2JhbCBiL01ha2VmaWxlLmdsb2JhbAorZGlmZiAtLWdpdCBhL2J1aWxkL01ha2VmaWxlLmdsb2JhbCBiL2J1aWxkL01ha2VmaWxlLmdsb2JhbAogaW5kZXggZmY4NThjMi4uYWU1NTRiNCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmdsb2JhbAotKysrIGIvTWFrZWZpbGUuZ2xvYmFsCistLS0gYS9idWlsZC9NYWtlZmlsZS5nbG9iYWwKKysrKyBiL2J1aWxkL01ha2VmaWxlLmdsb2JhbAogQEAgLTEsNCArMSw0IEBACiAtbWtpbnN0YWxsZGlycyA9ICQodG9wX3NyY2RpcikvYnVpbGQvc2h0b29sIG1rZGlyIC1wCiArbWtpbnN0YWxsZGlycyA9IG1rZGlyIC1wCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLXBocC5tNC1kb24tdC11bnNldC1jYWNoZS12YXJpYWJsZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDAxLXBocC5tNC1kb24tdC11bnNldC1jYWNoZS12YXJpYWJsZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ3MjFlYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwLzAwMDEtcGhwLm00LWRvbi10LXVuc2V0LWNhY2hlLXZhcmlhYmxlcy5wYXRjaApAQCAtMCwwICsxLDM5IEBACitwaHAubTQ6IGRvbid0IHVuc2V0IGNhY2hlIHZhcmlhYmxlcworCitVbnNldHRpbmcgcHJldmVudHMgY2FjaGUgdmFyaWFibGUgZnJvbSBiZWluZyBwYXNzZWQgdG8gY29uZmlndXJlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLXNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorCit1cGRhdGUgdGhpcyBwYXRjaCB0byA3LjQuNCwgYWNpbmNsdWRlLm00IG1vdmUgdG8gYnVpbGQvcGhwLm00CitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgYnVpbGQvcGhwLm00IHwgNCAtLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9idWlsZC9waHAubTQgYi9idWlsZC9waHAubTQKK2luZGV4IDVjNDVkMTMuLjIxOGVjNDcgMTAwNjQ0CistLS0gYS9idWlsZC9waHAubTQKKysrKyBiL2J1aWxkL3BocC5tNAorQEAgLTE1ODcsOCArMTU4Nyw2IEBAIGRubCBQSFBfQ0hFQ0tfRlVOQ19MSUIKKyBkbmwKKyBBQ19ERUZVTihbUEhQX0NIRUNLX0ZVTkNfTElCXSxbCisgICBpZmVsc2UoJDIsLDosWworLSAgdW5zZXQgYWNfY3ZfbGliXyQyW11fJDEKKy0gIHVuc2V0IGFjX2N2X2xpYl8kMltdX19fJDEKKyAgIHVuc2V0IGZvdW5kCisgICBBQ19DSEVDS19MSUIoJDIsICQxLCBbZm91bmQ9eWVzXSwgWworICAgICBBQ19DSEVDS19MSUIoJDIsIF9fJDEsIFtmb3VuZD15ZXNdLCBbZm91bmQ9bm9dKQorQEAgLTE2MjAsOCArMTYxOCw2IEBAIGRubCBhbmQgYXMgYSBmYWxsIGJhY2sgaW4gdGhlIHNwZWNpZmllZCBsaWJyYXJ5LiBEZWZpbmVzIEhBVkVfZnVuYyBhbmQKKyBkbmwgSEFWRV9saWJyYXJ5IGlmIGZvdW5kIGFuZCBhZGRzIHRoZSBsaWJyYXJ5IHRvIExJQlMuCisgZG5sCisgQUNfREVGVU4oW1BIUF9DSEVDS19GVU5DXSxbCistICB1bnNldCBhY19jdl9mdW5jXyQxCistICB1bnNldCBhY19jdl9mdW5jX19fJDEKKyAgIHVuc2V0IGZvdW5kCisgCisgICBBQ19DSEVDS19GVU5DKCQxLCBbZm91bmQ9eWVzXSxbIEFDX0NIRUNLX0ZVTkMoX18kMSxbZm91bmQ9eWVzXSxbZm91bmQ9bm9dKSBdKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDQ4LVVzZS1wa2ctY29uZmlnLWZvci1GcmVlVHlwZTItZGV0ZWN0aW9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvMDA0OC1Vc2UtcGtnLWNvbmZpZy1mb3ItRnJlZVR5cGUyLWRldGVjdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM2ZGRhYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC8wMDQ4LVVzZS1wa2ctY29uZmlnLWZvci1GcmVlVHlwZTItZGV0ZWN0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTMgKzAsMCBAQAotRnJvbTogPT91dGYtOD9iP1QyNWt4WmxsYWlCVGRYTER2UT09Pz0gPG9uZHJlakBzdXJ5Lm9yZz4KLURhdGU6IE1vbiwgMjIgT2N0IDIwMTggMDY6NTQ6MzEgKzAwMDAKLVN1YmplY3Q6IFVzZSBwa2ctY29uZmlnIGZvciBGcmVlVHlwZTIgZGV0ZWN0aW9uCi0KLS0tLQotIGV4dC9nZC9jb25maWcubTQgfCAzMCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9leHQvZ2QvY29uZmlnLm00IGIvZXh0L2dkL2NvbmZpZy5tNAotaW5kZXggNDk4ZDg3MC4uZDI4YzZhZSAxMDA2NDQKLS0tLSBhL2V4dC9nZC9jb25maWcubTQKLSsrKyBiL2V4dC9nZC9jb25maWcubTQKLUBAIC0xODQsMjEgKzE4NCwyOSBAQCBBQ19ERUZVTihbUEhQX0dEX1hQTV0sWwotIEFDX0RFRlVOKFtQSFBfR0RfRlJFRVRZUEUyXSxbCi0gICBpZiB0ZXN0ICIkUEhQX0ZSRUVUWVBFX0RJUiIgIT0gIm5vIjsgdGhlbgotIAotLSAgICBmb3IgaSBpbiAkUEhQX0ZSRUVUWVBFX0RJUiAvdXNyL2xvY2FsIC91c3I7IGRvCi0tICAgICAgaWYgdGVzdCAtZiAiJGkvYmluL2ZyZWV0eXBlLWNvbmZpZyI7IHRoZW4KLS0gICAgICAgIEZSRUVUWVBFMl9ESVI9JGkKLS0gICAgICAgIEZSRUVUWVBFMl9DT05GSUc9IiRpL2Jpbi9mcmVldHlwZS1jb25maWciCi0tICAgICAgICBicmVhawotKyAgICBpZiB0ZXN0IC16ICIkUEtHX0NPTkZJRyI7IHRoZW4KLSsgICAgICBBQ19QQVRIX1BST0coUEtHX0NPTkZJRywgcGtnLWNvbmZpZywgbm8pCi0rICAgIGZpCi0rICAgIGlmIHRlc3QgLXggIiRQS0dfQ09ORklHIiAmJiAkUEtHX0NPTkZJRyAtLWV4aXN0cyBmcmVldHlwZTIgOyB0aGVuCi0rICAgICAgRlJFRVRZUEUyX0NGTEFHUz1gJFBLR19DT05GSUcgLS1jZmxhZ3MgZnJlZXR5cGUyYAotKyAgICAgIEZSRUVUWVBFMl9MSUJTPWAkUEtHX0NPTkZJRyAtLWxpYnMgZnJlZXR5cGUyYAotKyAgICBlbHNlCi0rICAgICAgZm9yIGkgaW4gJFBIUF9GUkVFVFlQRV9ESVIgL3Vzci9sb2NhbCAvdXNyOyBkbwotKyAgICAgICAgaWYgdGVzdCAtZiAiJGkvYmluL2ZyZWV0eXBlLWNvbmZpZyI7IHRoZW4KLSsgICAgICAgICAgRlJFRVRZUEUyX0RJUj0kaQotKyAgICAgICAgICBGUkVFVFlQRTJfQ09ORklHPSIkaS9iaW4vZnJlZXR5cGUtY29uZmlnIgotKyAgICAgICAgICBicmVhawotKyAgICAgICAgZmkKLSsgICAgICBkb25lCi0rCi0rICAgICAgaWYgdGVzdCAteiAiJEZSRUVUWVBFMl9ESVIiOyB0aGVuCi0rICAgICAgICBBQ19NU0dfRVJST1IoW2ZyZWV0eXBlLWNvbmZpZyBub3QgZm91bmQuXSkKLSAgICAgICBmaQotLSAgICBkb25lCi0gCi0tICAgIGlmIHRlc3QgLXogIiRGUkVFVFlQRTJfRElSIjsgdGhlbgotLSAgICAgIEFDX01TR19FUlJPUihbZnJlZXR5cGUtY29uZmlnIG5vdCBmb3VuZC5dKQotKyAgICAgIEZSRUVUWVBFMl9DRkxBR1M9YCRGUkVFVFlQRTJfQ09ORklHIC0tY2ZsYWdzYAotKyAgICAgIEZSRUVUWVBFMl9MSUJTPWAkRlJFRVRZUEUyX0NPTkZJRyAtLWxpYnNgCi0gICAgIGZpCi0gCi0tICAgIEZSRUVUWVBFMl9DRkxBR1M9YCRGUkVFVFlQRTJfQ09ORklHIC0tY2ZsYWdzYAotLSAgICBGUkVFVFlQRTJfTElCUz1gJEZSRUVUWVBFMl9DT05GSUcgLS1saWJzYAotLQotICAgICBQSFBfRVZBTF9JTkNMSU5FKCRGUkVFVFlQRTJfQ0ZMQUdTKQotICAgICBQSFBfRVZBTF9MSUJMSU5FKCRGUkVFVFlQRTJfTElCUywgR0RfU0hBUkVEX0xJQkFERCkKLSAgICAgQUNfREVGSU5FKEhBVkVfTElCRlJFRVRZUEUsMSxbIF0pCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC83MF9tb2RfcGhwNS5jb25mIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvNzBfbW9kX3BocDUuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWRlNmZiMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC83MF9tb2RfcGhwNS5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotIyB2aW06IGZ0PWFwYWNoZSBzdz00IHRzPTQKLTxJZkRlZmluZSBQSFA1PgotCSMgTG9hZCB0aGUgbW9kdWxlIGZpcnN0Ci0JPElmTW9kdWxlICFzYXBpX2FwYWNoZTIuYz4KLQkJTG9hZE1vZHVsZSBwaHA1X21vZHVsZSAgICBsaWIvYXBhY2hlMi9tb2R1bGVzL2xpYnBocDUuc28KLQk8L0lmTW9kdWxlPgotCi0JIyBTZXQgaXQgdG8gaGFuZGxlIHRoZSBmaWxlcwotCUFkZEhhbmRsZXIgcGhwNS1zY3JpcHQgLnBocCAucGh0bWwgLnBocDMgLnBocDQgLnBocDUKLQlBZGRUeXBlIGFwcGxpY2F0aW9uL3gtaHR0cGQtcGhwLXNvdXJjZSAucGhwcwotCURpcmVjdG9yeUluZGV4IGluZGV4Lmh0bWwgaW5kZXguaHRtbC52YXIgaW5kZXgucGhwIGluZGV4LnBodG1sCi08L0lmRGVmaW5lPgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvQ1ZFLTIwMTktNjk3OC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL0NWRS0yMDE5LTY5NzgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3Y2RmZDkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvQ1ZFLTIwMTktNjk3OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5MiArMCwwIEBACi1Gcm9tIDA4OWY3YzBiYzI4ZDM5OWIwNDIwYWE2ZWYwNThlNGMxYzEyMGIyYWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiQ2hyaXN0b3BoIE0uIEJlY2tlciIgPGNtYmVja2VyNjlAZ214LmRlPgotRGF0ZTogU2F0LCAxOSBKYW4gMjAxOSAxMDozNTozOSArMDEwMAotU3ViamVjdDogW1BBVENIXSBTeW5jIHdpdGggdXBzdHJlYW0KLQotRXZlbiB0aG91Z2ggbGliZ2QvbGliZ2QjNDkyIGlzIG5vdCBhIHJlbGV2YW50IGJ1ZyBmaXggZm9yIFBIUCwgc2luY2UKLXRoZSBiaW5kaW5nIGRvZXNuJ3QgdXNlIHRoZSBgZ2RJbWFnZSpQdHIoKWAgZnVuY3Rpb25zIGF0IGFsbCwgd2UncmUKLXBvcnRpbmcgdGhlIGZpeCB0byBzdGF5IGluIHN5bmMgaGVyZS4KLS0tLQotIGV4dC9nZC9saWJnZC9nZF9naWZfb3V0LmMgfCAyMCArKysrKysrKysrKysrKysrKy0tLQotIGV4dC9nZC9saWJnZC9nZF9qcGVnLmMgICAgfCAxNyArKysrKysrKysrKysrKy0tLQotIGV4dC9nZC9saWJnZC9nZF93Ym1wLmMgICAgfCAxOCArKysrKysrKysrKysrKystLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHA6Ly9naXQucGhwLm5ldC8/cD1waHAtc3JjLmdpdDthPWNvbW1pdDtoPTA4OWY3YzBiYzI4ZDM5OWIwNDIwYWE2ZWYwNThlNGMxYzEyMGIyYWVdCi1DVkU6IENWRS0yMDE5LTY5NzgKLQotU2lnbmVkLW9mZi1ieTogVHJldm9yIEdhbWJsaW4gPHRyZXZvci5nYW1ibGluQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9leHQvZ2QvbGliZ2QvZ2RfZ2lmX291dC5jIGIvZXh0L2dkL2xpYmdkL2dkX2dpZl9vdXQuYwotaW5kZXggMWYyYTZiOTM2YS4uMmUxZjM4YWY3MCAxMDA2NDQKLS0tLSBhL2V4dC9nZC9saWJnZC9nZF9naWZfb3V0LmMKLSsrKyBiL2V4dC9nZC9saWJnZC9nZF9naWZfb3V0LmMKLUBAIC05NywxMiArOTcsMTggQEAgc3RhdGljIHZvaWQgY2xfaGFzaCAocmVnaXN0ZXIgY291bnRfaW50IGNoc2l6ZSwgR2lmQ3R4ICpjdHgpOwotIHN0YXRpYyB2b2lkIGNoYXJfaW5pdCAoR2lmQ3R4ICpjdHgpOwotIHN0YXRpYyB2b2lkIGNoYXJfb3V0IChpbnQgYywgR2lmQ3R4ICpjdHgpOwotIHN0YXRpYyB2b2lkIGZsdXNoX2NoYXIgKEdpZkN0eCAqY3R4KTsKLSsKLStzdGF0aWMgaW50IF9nZEltYWdlR2lmQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHhQdHIgb3V0KTsKLSsKLSB2b2lkICogZ2RJbWFnZUdpZlB0ciAoZ2RJbWFnZVB0ciBpbSwgaW50ICpzaXplKQotIHsKLSAgIHZvaWQgKnJ2OwotICAgZ2RJT0N0eCAqb3V0ID0gZ2ROZXdEeW5hbWljQ3R4ICgyMDQ4LCBOVUxMKTsKLS0gIGdkSW1hZ2VHaWZDdHggKGltLCBvdXQpOwotLSAgcnYgPSBnZERQRXh0cmFjdERhdGEgKG91dCwgc2l6ZSk7Ci0rCWlmICghX2dkSW1hZ2VHaWZDdHgoaW0sIG91dCkpIHsKLSsJCXJ2ID0gZ2REUEV4dHJhY3REYXRhKG91dCwgc2l6ZSk7Ci0rCX0gZWxzZSB7Ci0rCQlydiA9IE5VTEw7Ci0rCX0KLSAgIG91dC0+Z2RfZnJlZSAob3V0KTsKLSAgIHJldHVybiBydjsKLSB9Ci1AQCAtMTE1LDYgKzEyMSwxMiBAQCB2b2lkIGdkSW1hZ2VHaWYgKGdkSW1hZ2VQdHIgaW0sIEZJTEUgKiBvdXRGaWxlKQotIH0KLSAKLSB2b2lkIGdkSW1hZ2VHaWZDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQpCi0rewotKwlfZ2RJbWFnZUdpZkN0eChpbSwgb3V0KTsKLSt9Ci0rCi0rLyogcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIDEgb24gZmFpbHVyZSAqLwotK3N0YXRpYyBpbnQgX2dkSW1hZ2VHaWZDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQpCi0gewotIAlnZEltYWdlUHRyIHBpbSA9IDAsIHRpbSA9IGltOwotIAlpbnQgaW50ZXJsYWNlLCBCaXRzUGVyUGl4ZWw7Ci1AQCAtMTI1LDcgKzEzNyw3IEBAIHZvaWQgZ2RJbWFnZUdpZkN0eChnZEltYWdlUHRyIGltLCBnZElPQ3R4UHRyIG91dCkKLSAJCQliYXNlZCB0ZW1wb3JhcnkgaW1hZ2UuICovCi0gCQlwaW0gPSBnZEltYWdlQ3JlYXRlUGFsZXR0ZUZyb21UcnVlQ29sb3IoaW0sIDEsIDI1Nik7Ci0gCQlpZiAoIXBpbSkgewotLQkJCXJldHVybjsKLSsJCQlyZXR1cm4gMTsKLSAJCX0KLSAJCXRpbSA9IHBpbTsKLSAJfQotQEAgLTEzOCw2ICsxNTAsOCBAQCB2b2lkIGdkSW1hZ2VHaWZDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQpCi0gCQkvKiBEZXN0cm95IHBhbGV0dGUgYmFzZWQgdGVtcG9yYXJ5IGltYWdlLiAqLwotIAkJZ2RJbWFnZURlc3Ryb3koCXBpbSk7Ci0gCX0KLSsKLSsgICAgcmV0dXJuIDA7Ci0gfQotIAotIHN0YXRpYyBpbnQKLWRpZmYgLS1naXQgYS9leHQvZ2QvbGliZ2QvZ2RfanBlZy5jIGIvZXh0L2dkL2xpYmdkL2dkX2pwZWcuYwotaW5kZXggOGNmNzFmY2JjOS4uZWY0NmM0YTIyYyAxMDA2NDQKLS0tLSBhL2V4dC9nZC9saWJnZC9nZF9qcGVnLmMKLSsrKyBiL2V4dC9nZC9saWJnZC9nZF9qcGVnLmMKLUBAIC0xMzIsNiArMTMyLDcgQEAgY29uc3QgY2hhciAqIGdkSnBlZ0dldFZlcnNpb25TdHJpbmcoKQotIAl9Ci0gfQotIAotK3N0YXRpYyBpbnQgX2dkSW1hZ2VKcGVnQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHggKm91dGZpbGUsIGludCBxdWFsaXR5KTsKLSAKLSAvKgotICAqIFdyaXRlIElNIHRvIE9VVEZJTEUgYXMgYSBKRklGLWZvcm1hdHRlZCBKUEVHIGltYWdlLCB1c2luZyBxdWFsaXR5Ci1AQCAtMTUzLDggKzE1NCwxMSBAQCB2b2lkICpnZEltYWdlSnBlZ1B0ciAoZ2RJbWFnZVB0ciBpbSwgaW50ICpzaXplLCBpbnQgcXVhbGl0eSkKLSB7Ci0gCXZvaWQgKnJ2OwotIAlnZElPQ3R4ICpvdXQgPSBnZE5ld0R5bmFtaWNDdHggKDIwNDgsIE5VTEwpOwotLQlnZEltYWdlSnBlZ0N0eCAoaW0sIG91dCwgcXVhbGl0eSk7Ci0tCXJ2ID0gZ2REUEV4dHJhY3REYXRhIChvdXQsIHNpemUpOwotKwlpZiAoIV9nZEltYWdlSnBlZ0N0eChpbSwgb3V0LCBxdWFsaXR5KSkgewotKwkJcnYgPSBnZERQRXh0cmFjdERhdGEob3V0LCBzaXplKTsKLSsJfSBlbHNlIHsKLSsJCXJ2ID0gTlVMTDsKLSsJfQotIAlvdXQtPmdkX2ZyZWUgKG91dCk7Ci0gCi0gCXJldHVybiBydjsKLUBAIC0xNjMsNiArMTY3LDEyIEBAIHZvaWQgKmdkSW1hZ2VKcGVnUHRyIChnZEltYWdlUHRyIGltLCBpbnQgKnNpemUsIGludCBxdWFsaXR5KQotIHZvaWQganBlZ19nZElPQ3R4X2Rlc3QgKGpfY29tcHJlc3NfcHRyIGNpbmZvLCBnZElPQ3R4ICogb3V0ZmlsZSk7Ci0gCi0gdm9pZCBnZEltYWdlSnBlZ0N0eCAoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eCAqIG91dGZpbGUsIGludCBxdWFsaXR5KQotK3sKLSsJX2dkSW1hZ2VKcGVnQ3R4KGltLCBvdXRmaWxlLCBxdWFsaXR5KTsKLSt9Ci0rCi0rLyogcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIDEgb24gZmFpbHVyZSAqLwotK3N0YXRpYyBpbnQgX2dkSW1hZ2VKcGVnQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHggKm91dGZpbGUsIGludCBxdWFsaXR5KQotIHsKLSAJc3RydWN0IGpwZWdfY29tcHJlc3Nfc3RydWN0IGNpbmZvOwotIAlzdHJ1Y3QganBlZ19lcnJvcl9tZ3IgamVycjsKLUBAIC0xODQsNyArMTk0LDcgQEAgdm9pZCBnZEltYWdlSnBlZ0N0eCAoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eCAqIG91dGZpbGUsIGludCBxdWFsaXR5KQotIAkJaWYgKHJvdykgewotIAkJCWdkRnJlZSAocm93KTsKLSAJCX0KLS0JCXJldHVybjsKLSsJCXJldHVybiAxOwotIAl9Ci0gCi0gCWNpbmZvLmVyci0+ZXJyb3JfZXhpdCA9IGZhdGFsX2pwZWdfZXJyb3I7Ci1AQCAtMjc3LDYgKzI4Nyw3IEBAIHZvaWQgZ2RJbWFnZUpwZWdDdHggKGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHggKiBvdXRmaWxlLCBpbnQgcXVhbGl0eSkKLSAJanBlZ19maW5pc2hfY29tcHJlc3MgKCZjaW5mbyk7Ci0gCWpwZWdfZGVzdHJveV9jb21wcmVzcyAoJmNpbmZvKTsKLSAJZ2RGcmVlIChyb3cpOwotKwlyZXR1cm4gMDsKLSB9Ci0gCi0gZ2RJbWFnZVB0ciBnZEltYWdlQ3JlYXRlRnJvbUpwZWcgKEZJTEUgKiBpbkZpbGUpCi1kaWZmIC0tZ2l0IGEvZXh0L2dkL2xpYmdkL2dkX3dibXAuYyBiL2V4dC9nZC9saWJnZC9nZF93Ym1wLmMKLWluZGV4IDU1Y2VkMzQ0M2QuLmZkOWVkYWQyY2EgMTAwNjQ0Ci0tLS0gYS9leHQvZ2QvbGliZ2QvZ2Rfd2JtcC5jCi0rKysgYi9leHQvZ2QvbGliZ2QvZ2Rfd2JtcC5jCi1AQCAtODIsNiArODIsNyBAQCBpbnQgZ2RfZ2V0aW4gKHZvaWQgKmluKQotIAlyZXR1cm4gKGdkR2V0QygoZ2RJT0N0eCAqKSBpbikpOwotIH0KLSAKLStzdGF0aWMgaW50IF9nZEltYWdlV0JNUEN0eChnZEltYWdlUHRyIGltYWdlLCBpbnQgZmcsIGdkSU9DdHggKm91dCk7Ci0gCi0gLyogICAgICBnZEltYWdlV0JNUEN0eAotICAgICoqICAtLS0tLS0tLS0tLS0tLQotQEAgLTkzLDYgKzk0LDEyIEBAIGludCBnZF9nZXRpbiAodm9pZCAqaW4pCi0gICAgKiogIG91dDogICAgdGhlIHN0cmVhbSB3aGVyZSB0byB3cml0ZQotICAqLwotIHZvaWQgZ2RJbWFnZVdCTVBDdHggKGdkSW1hZ2VQdHIgaW1hZ2UsIGludCBmZywgZ2RJT0N0eCAqIG91dCkKLSt7Ci0rCV9nZEltYWdlV0JNUEN0eChpbWFnZSwgZmcsIG91dCk7Ci0rfQotKwotKy8qIHJldHVybnMgMCBvbiBzdWNjZXNzLCAxIG9uIGZhaWx1cmUgKi8KLStzdGF0aWMgaW50IF9nZEltYWdlV0JNUEN0eChnZEltYWdlUHRyIGltYWdlLCBpbnQgZmcsIGdkSU9DdHggKm91dCkKLSB7Ci0gCWludCB4LCB5LCBwb3M7Ci0gCVdibXAgKndibXA7Ci1AQCAtMTAwLDcgKzEwNyw3IEBAIHZvaWQgZ2RJbWFnZVdCTVBDdHggKGdkSW1hZ2VQdHIgaW1hZ2UsIGludCBmZywgZ2RJT0N0eCAqIG91dCkKLSAJLyogY3JlYXRlIHRoZSBXQk1QICovCi0gCWlmICgod2JtcCA9IGNyZWF0ZXdibXAgKGdkSW1hZ2VTWCAoaW1hZ2UpLCBnZEltYWdlU1kgKGltYWdlKSwgV0JNUF9XSElURSkpID09IE5VTEwpIHsKLSAJCWdkX2Vycm9yKCJDb3VsZCBub3QgY3JlYXRlIFdCTVAiKTsKLS0JCXJldHVybjsKLSsJCXJldHVybiAxOwotIAl9Ci0gCi0gCS8qIGZpbGwgdXAgdGhlIFdCTVAgc3RydWN0dXJlICovCi1AQCAtMTE2LDcgKzEyMyw5IEBAIHZvaWQgZ2RJbWFnZVdCTVBDdHggKGdkSW1hZ2VQdHIgaW1hZ2UsIGludCBmZywgZ2RJT0N0eCAqIG91dCkKLSAKLSAJLyogd3JpdGUgdGhlIFdCTVAgdG8gYSBnZCBmaWxlIGRlc2NyaXB0b3IgKi8KLSAJaWYgKHdyaXRld2JtcCAod2JtcCwgJmdkX3B1dG91dCwgb3V0KSkgewotKwkJZnJlZXdibXAod2JtcCk7Ci0gCQlnZF9lcnJvcigiQ291bGQgbm90IHNhdmUgV0JNUCIpOwotKwkJcmV0dXJuIDE7Ci0gCX0KLSAJLyogZGVzIHN1Ym1pdHRlZCB0aGlzIGJ1Z2ZpeDogZ2RGcmVlIHRoZSBtZW1vcnkuICovCi0gCWZyZWV3Ym1wKHdibXApOwotQEAgLTIwNCw4ICsyMTMsMTEgQEAgdm9pZCAqIGdkSW1hZ2VXQk1QUHRyIChnZEltYWdlUHRyIGltLCBpbnQgKnNpemUsIGludCBmZykKLSB7Ci0gCXZvaWQgKnJ2OwotIAlnZElPQ3R4ICpvdXQgPSBnZE5ld0R5bmFtaWNDdHgoMjA0OCwgTlVMTCk7Ci0tCWdkSW1hZ2VXQk1QQ3R4KGltLCBmZywgb3V0KTsKLS0JcnYgPSBnZERQRXh0cmFjdERhdGEob3V0LCBzaXplKTsKLSsJaWYgKCFfZ2RJbWFnZVdCTVBDdHgoaW0sIGZnLCBvdXQpKSB7Ci0rCQlydiA9IGdkRFBFeHRyYWN0RGF0YShvdXQsIHNpemUpOwotKwl9IGVsc2UgewotKwkJcnYgPSBOVUxMOwotKwl9Ci0gCW91dC0+Z2RfZnJlZShvdXQpOwotIAotIAlyZXR1cm4gcnY7Ci0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9pY29udi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2ljb252LnBhdGNoCmluZGV4IGVjZjdkODcuLjllYzhhODkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2ljb252LnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2ljb252LnBhdGNoCkBAIC0xLDMyICsxLDMzIEBACi1Gcm9tIDE3Y2M1NjQ1ZjNhY2Y5NDNhNWEwNjQ2NWQwOWQwZWJjZmVhOTg3YmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotRGF0ZTogV2VkLCAyIE5vdiAyMDExIDE2OjU0OjU3ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZworU3ViamVjdDogW1BBVENIXSBGcm9tIDE3Y2M1NjQ1ZjNhY2Y5NDNhNWEwNjQ2NWQwOWQwZWJjZmVhOTg3YmQgTW9uIFNlcCAxNworIDAwOjAwOjAwIDIwMDEgRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4gRGF0ZTogV2VkLCAyIE5vdgorIDIwMTEgMTY6NTQ6NTcgKzAxMDAgU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAordXBkYXRlIHBhdGNoIHRvIHZlcnNpb24gNy40LjQKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CiAtLS0KLSBhY2luY2x1ZGUubTQgICAgICAgIHwgMyArKy0KKyBidWlsZC9waHAubTQgICAgICAgIHwgMyArKy0KICBleHQvaWNvbnYvY29uZmlnLm00IHwgMiArLQogIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1kaWZmIC0tZ2l0IGEvYWNpbmNsdWRlLm00IGIvYWNpbmNsdWRlLm00Ci1pbmRleCBkMzI3NjZhLi5hZDUxNjZlIDEwMDY0NAotLS0tIGEvYWNpbmNsdWRlLm00Ci0rKysgYi9hY2luY2x1ZGUubTQKLUBAIC0yNDQ1LDcgKzI0NDUsOCBAQCBBQ19ERUZVTihbUEhQX1NFVFVQX0lDT05WXSwgWwotICAgZG5sIENoZWNrIGxpYmMgZmlyc3QgaWYgbm8gcGF0aCBpcyBwcm92aWRlZCBpbiAtLXdpdGgtaWNvbnYKLSAgIGRubAorZGlmZiAtLWdpdCBhL2J1aWxkL3BocC5tNCBiL2J1aWxkL3BocC5tNAoraW5kZXggNzM5Mjg3Ni4uNWM0NWQxMyAxMDA2NDQKKy0tLSBhL2J1aWxkL3BocC5tNAorKysrIGIvYnVpbGQvcGhwLm00CitAQCAtMTk1MCw3ICsxOTUwLDggQEAgQUNfREVGVU4oW1BIUF9TRVRVUF9JQ09OVl0sIFsKKyAgIGVjaG8gPiBleHQvaWNvbnYvcGhwX2ljb252X3N1cHBvcnRzX2Vycm5vLmgKICAKKyAgIGRubCBDaGVjayBsaWJjIGZpcnN0IGlmIG5vIHBhdGggaXMgcHJvdmlkZWQgaW4gLS13aXRoLWljb252LgogLSAgaWYgdGVzdCAiJFBIUF9JQ09OViIgPSAieWVzIjsgdGhlbgogKyAgZG5sIG11c3QgY2hlY2sgYWdhaW5zdCBubywgbm90IGFnYWluc3QgeWVzIGFzIFBIUF9JQ09OViBjYW4gYWxzbyBpbmNsdWRlIGEgcGF0aCwgd2hpY2ggaW1wbGllcyB5ZXMKICsgIGlmIHRlc3QgIiRQSFBfSUNPTlYiICE9ICJubyI7IHRoZW4KLSAgICAgZG5sIFJlc2V0IExJQlMgdGVtcG9yYXJpbHkgYXMgaXQgbWF5IGhhdmUgYWxyZWFkeSBiZWVuIGluY2x1ZGVkCi0gICAgIGRubCAtbGljb252IGluLgorICAgICBkbmwgUmVzZXQgTElCUyB0ZW1wb3JhcmlseSBhcyBpdCBtYXkgaGF2ZSBhbHJlYWR5IGJlZW4gaW5jbHVkZWQgLWxpY29udiBpbi4KICAgICAgTElCU19zYXZlPSIkTElCUyIKKyAgICAgTElCUz0KIGRpZmYgLS1naXQgYS9leHQvaWNvbnYvY29uZmlnLm00IGIvZXh0L2ljb252L2NvbmZpZy5tNAotaW5kZXggNmEwNTY5Ny4uOTczZTc1MCAxMDA2NDQKK2luZGV4IGZlOWI0N2EuLmI2YjYzMmYgMTAwNjQ0CiAtLS0gYS9leHQvaWNvbnYvY29uZmlnLm00CiArKysgYi9leHQvaWNvbnYvY29uZmlnLm00Ci1AQCAtMTUsNyArMTUsNyBAQCBpZiB0ZXN0ICIkUEhQX0lDT05WIiAhPSAibm8iOyB0aGVuCitAQCAtMTQsNyArMTQsNyBAQCBpZiB0ZXN0ICIkUEhQX0lDT05WIiAhPSAibm8iOyB0aGVuCiAgCiAgICBpZiB0ZXN0ICIkaWNvbnZfYXZhaWwiICE9ICJubyI7IHRoZW4KICAgICAgaWYgdGVzdCAteiAiJElDT05WX0RJUiI7IHRoZW4KQEAgLTM1LDMgKzM2LDYgQEAKICAgICAgICAgIGlmIHRlc3QgLWYgIiRpL2luY2x1ZGUvaWNvbnYuaCIgfHwgdGVzdCAtZiAiJGkvaW5jbHVkZS9naWNvbnYuaCI7IHRoZW4KICAgICAgICAgICAgUEhQX0lDT05WX1BSRUZJWD0iJGkiCiAgICAgICAgICAgIGJyZWFrCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2ltYXAtZml4LWF1dG9mb28ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9pbWFwLWZpeC1hdXRvZm9vLnBhdGNoCmluZGV4IDE2MzU5YWYuLmViZTVmNmEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL2ltYXAtZml4LWF1dG9mb28ucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvaW1hcC1maXgtYXV0b2Zvby5wYXRjaApAQCAtMSwzMiArMSwxOSBAQAotRnJvbSBjMDg0YzgzNDlkMTc4MDk4MGUyMzJjYjI4YjYwYTEwOWUzZDg5NDM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KLURhdGU6IFdlZCwgMiBOb3YgMjAxMSAxNjo1NDo1NyArMDEwMAotU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1N1YmplY3Q6IFtQQVRDSF0gRnJvbSBjMDg0YzgzNDlkMTc4MDk4MGUyMzJjYjI4YjYwYTEwOWUzZDg5NDM4IE1vbiBTZXAgMTcKKyAwMDowMDowMCAyMDAxIEZyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+IERhdGU6IFdlZCwgMiBOb3YKKyAyMDExIDE2OjU0OjU3ICswMTAwIFN1YmplY3Q6IFtQQVRDSF0gVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKK3VwZGF0ZSBwYXRjaCB0byB2ZXJzaW9uIDcuNC40CitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgogLS0tCi0gYWNpbmNsdWRlLm00ICAgICAgIHwgIDIgKy0KICBleHQvaW1hcC9jb25maWcubTQgfCAxMCArKy0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL2FjaW5jbHVkZS5tNCBiL2FjaW5jbHVkZS5tNAotaW5kZXggYWQ1MTY2ZS4uZjZhNTVlYyAxMDA2NDQKLS0tLSBhL2FjaW5jbHVkZS5tNAotKysrIGIvYWNpbmNsdWRlLm00Ci1AQCAtMjM1MCw3ICsyMzUwLDcgQEAgQUNfREVGVU4oW1BIUF9TRVRVUF9PUEVOU1NMXSxbCi0gICAgICAgUEhQX09QRU5TU0xfRElSPSIvdXNyL2xvY2FsL3NzbCAvdXNyL2xvY2FsIC91c3IgL3Vzci9sb2NhbC9vcGVuc3NsIgotICAgICBmaQotIAotLSAgICBmb3IgaSBpbiAkUEhQX09QRU5TU0xfRElSOyBkbwotKyAgICBmb3IgaSBpbiAkUEhQX09QRU5TU0xfRElSICRQSFBfT1BFTlNTTF9ESVIvdXNyOyBkbwotICAgICAgIGlmIHRlc3QgLXIgJGkvaW5jbHVkZS9vcGVuc3NsL2V2cC5oOyB0aGVuCi0gICAgICAgICBPUEVOU1NMX0lOQ0RJUj0kaS9pbmNsdWRlCi0gICAgICAgZmkKIGRpZmYgLS1naXQgYS9leHQvaW1hcC9jb25maWcubTQgYi9leHQvaW1hcC9jb25maWcubTQKLWluZGV4IGJhZGI2ZTIuLjhmZjgwM2MgMTAwNjQ0CitpbmRleCA1MDg2YTMxLi4wZTkzOGJkIDEwMDY0NAogLS0tIGEvZXh0L2ltYXAvY29uZmlnLm00CiArKysgYi9leHQvaW1hcC9jb25maWcubTQKLUBAIC0xMDksNyArMTA5LDcgQEAgaWYgdGVzdCAiJFBIUF9JTUFQIiAhPSAibm8iOyB0aGVuCi0gICAgIFBIUF9ORVdfRVhURU5TSU9OKGltYXAsIHBocF9pbWFwLmMsICRleHRfc2hhcmVkKQorQEAgLTExMCw3ICsxMTAsNyBAQCBpZiB0ZXN0ICIkUEhQX0lNQVAiICE9ICJubyI7IHRoZW4KKyAgICAgUEhQX05FV19FWFRFTlNJT04oaW1hcCwgcGhwX2ltYXAuYywgJGV4dF9zaGFyZWQsLCAtRFpFTkRfRU5BQkxFX1NUQVRJQ19UU1JNTFNfQ0FDSEU9MSkKICAgICAgQUNfREVGSU5FKEhBVkVfSU1BUCwxLFsgXSkKICAKIC0gICAgZm9yIGkgaW4gJFBIUF9JTUFQIC91c3IvbG9jYWwgL3VzcjsgZG8KQEAgLTM0LDcgKzIxLDcgQEAKICAgICAgICBJTUFQX0lOQ19DSEsoKQogICAgICAgIGVsW11JTUFQX0lOQ19DSEsoL2luY2x1ZGUvYy1jbGllbnQpCiAgICAgICAgZWxbXUlNQVBfSU5DX0NISygvaW5jbHVkZS9pbWFwKQotQEAgLTE5OCwxMyArMTk4LDcgQEAgaWYgdGVzdCAiJFBIUF9JTUFQIiAhPSAibm8iOyB0aGVuCitAQCAtMTk5LDEzICsxOTksNyBAQCBpZiB0ZXN0ICIkUEhQX0lNQVAiICE9ICJubyI7IHRoZW4KICAgICAgICBBQ19NU0dfRVJST1IoQ2Fubm90IGZpbmQgcmZjODIyLmguIFBsZWFzZSBjaGVjayB5b3VyIGMtY2xpZW50IGluc3RhbGxhdGlvbi4pCiAgICAgIGZpCiAgCkBAIC00OSwzICszNiw2IEBACiAgICAgICAgSU1BUF9MSUI9JGxpYgogICAgICAgIElNQVBfTElCX0NISygkUEhQX0xJQkRJUikKICAgICAgICBJTUFQX0xJQl9DSEsoYy1jbGllbnQpCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BoYXItbWFrZWZpbGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waGFyLW1ha2VmaWxlLnBhdGNoCmluZGV4IDMzNmNmMGQuLmViNzNiYzQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BoYXItbWFrZWZpbGUucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvcGhhci1tYWtlZmlsZS5wYXRjaApAQCAtMSwyNCArMSwyNSBAQAotRnJvbSAwODk2MmE1NmY2OTk2M2UwMTg5MmQ5OGNhNWI3NWRlODM1NGJkM2Y1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KLURhdGU6IFdlZCwgMiBOb3YgMjAxMSAxNjo1NDo1NyArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggcGhhciBwYWNrYWdpbmcKK1N1YmplY3Q6IFtQQVRDSF0gRnJvbSAwODk2MmE1NmY2OTk2M2UwMTg5MmQ5OGNhNWI3NWRlODM1NGJkM2Y1IE1vbiBTZXAgMTcKKyAwMDowMDowMCAyMDAxIEZyb206IEtvZW4gS29vaSA8a29lbkBkb21pbmlvbi50aHJ1aGVyZS5uZXQ+IERhdGU6IFdlZCwgMiBOb3YKKyAyMDExIDE2OjU0OjU3ICswMTAwIFN1YmplY3Q6IFtQQVRDSF0gRml4IHBoYXIgcGFja2FnaW5nCiAKIEluaGVyaXRlZCBmcm9tIE9FLUNsYXNzaWMsIHdpdGggc29tZSBhZGRpdGlvbnMgdG8gZml4IGhvc3QgcGF0aHMgbGVha2luZwogaW50byB0aGUgdGFyZ2V0IHBhY2thZ2UuCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlnXQogCit1cGRhdGUgcGF0Y2ggdG8gdmVyc2lvbiA3LjQuNAorU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KIC0tLQogIGV4dC9waGFyL01ha2VmaWxlLmZyYWcgfCAxNyArKystLS0tLS0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZXh0L3BoYXIvTWFrZWZpbGUuZnJhZyBiL2V4dC9waGFyL01ha2VmaWxlLmZyYWcKLWluZGV4IDBlMzcxM2YuLjIyZjc4OTggMTAwNjQ0CitpbmRleCA2NDQyZjMzLi42MTQ1NDEyIDEwMDY0NAogLS0tIGEvZXh0L3BoYXIvTWFrZWZpbGUuZnJhZwogKysrIGIvZXh0L3BoYXIvTWFrZWZpbGUuZnJhZwogQEAgLTEwLDIwICsxMCw5IEBAIHBoYXJjbWQ6ICQoYnVpbGRkaXIpL3BoYXIucGhwICQoYnVpbGRkaXIpL3BoYXIucGhhcgogIAotIFBIUF9QSEFSQ01EX1NFVFRJTkdTID0gLW4gLWQgJ29wZW5fYmFzZWRpcj0nIC1kICdvdXRwdXRfYnVmZmVyaW5nPTAnIC1kICdtZW1vcnlfbGltaXQ9LTEnIC1kIHBoYXIucmVhZG9ubHk9MCAtZCAnc2FmZV9tb2RlPTAnCisgUEhQX1BIQVJDTURfU0VUVElOR1MgPSAtbiAtZCAnb3Blbl9iYXNlZGlyPScgLWQgJ291dHB1dF9idWZmZXJpbmc9MCcgLWQgJ21lbW9yeV9saW1pdD0tMScgLWQgcGhhci5yZWFkb25seT0wCiAgUEhQX1BIQVJDTURfRVhFQ1VUQUJMRSA9IGAgXAogLQlpZiB0ZXN0IC14ICIkKHRvcF9idWlsZGRpcikvJChTQVBJX0NMSV9QQVRIKSI7IHRoZW4gXAogLQkJJCh0b3Bfc3JjZGlyKS9idWlsZC9zaHRvb2wgZWNobyAtbiAtLSAiJCh0b3BfYnVpbGRkaXIpLyQoU0FQSV9DTElfUEFUSCkgLW4iOyBcCkBAIC0zNCw5ICszNSwxMiBAQAogLQkJJCh0b3Bfc3JjZGlyKS9idWlsZC9zaHRvb2wgZWNobyAtbiAtLSAiJChQSFBfRVhFQ1VUQUJMRSkiOyBcCiAtCWZpO2AKIC1QSFBfUEhBUkNNRF9CQU5HID0gYCQodG9wX3NyY2RpcikvYnVpbGQvc2h0b29sIGVjaG8gLW4gLS0gIiQoSU5TVEFMTF9ST09UKSQoYmluZGlyKS8kKHByb2dyYW1fcHJlZml4KXBocCQocHJvZ3JhbV9zdWZmaXgpJChFWEVFWFQpIjtgCi0rCQkkKHRvcF9zcmNkaXIpL2J1aWxkL3NodG9vbCBlY2hvIC1uIC0tICIkKFBIUF9FWEVDVVRBQkxFKSI7IGAKKysgICAgICAgICAgICAgICAkKHRvcF9zcmNkaXIpL2J1aWxkL3NodG9vbCBlY2hvIC1uIC0tICIkKFBIUF9FWEVDVVRBQkxFKSI7IGAKICsKICtQSFBfUEhBUkNNRF9CQU5HID0gYCQodG9wX3NyY2RpcikvYnVpbGQvc2h0b29sIGVjaG8gLW4gLS0gIiQoYmluZGlyKS8kKHByb2dyYW1fcHJlZml4KXBocCQocHJvZ3JhbV9zdWZmaXgpJChFWEVFWFQpIjtgCiAgCiAgJChidWlsZGRpcikvcGhhci9waGFyLmluYzogJChzcmNkaXIpL3BoYXIvcGhhci5pbmMKICAJLUB0ZXN0IC1kICQoYnVpbGRkaXIpL3BoYXIgfHwgbWtkaXIgJChidWlsZGRpcikvcGhhcgorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waHBfZXhlY19uYXRpdmUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocC9waHBfZXhlY19uYXRpdmUucGF0Y2gKaW5kZXggODA0MDkwMC4uNGFlYzQ4MSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHAvcGhwX2V4ZWNfbmF0aXZlLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwL3BocF9leGVjX25hdGl2ZS5wYXRjaApAQCAtMSwyMiArMSwyNiBAQAotRnJvbSBkMjUxYjVhYTNkMjM4MDNkMDE2Y2ExNjgxOGUyZTFkMmYyYjcwYTAyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KLURhdGU6IFdlZCwgMiBOb3YgMjAxMSAxNjo1NDo1NyArMDEwMAotU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcmlhdGUKK1N1YmplY3Q6IFtQQVRDSF0gcm9tIGQyNTFiNWFhM2QyMzgwM2QwMTZjYTE2ODE4ZTJlMWQyZjJiNzBhMDIgTW9uIFNlcCAxNworIDAwOjAwOjAwIDIwMDEgRnJvbTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4gRGF0ZTogV2VkLCAyIE5vdgorIDIwMTEgMTY6NTQ6NTcgKzAxMDAgU3ViamVjdDogW1BBVENIXSBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcmlhdGUKIAordXBkYXRlIHBhdGNoIHRvIHZlcnNpb24gNy40LjQKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CiAtLS0KICBzYXBpL2NsaS9jb25maWcubTQgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9zYXBpL2NsaS9jb25maWcubTQgYi9zYXBpL2NsaS9jb25maWcubTQKLWluZGV4IDIxNjgxNTEuLjIwYTgxZGIgMTAwNjQ0CitpbmRleCA5MTdkNDVmLi5hYWYxZTI3IDEwMDY0NAogLS0tIGEvc2FwaS9jbGkvY29uZmlnLm00CiArKysgYi9zYXBpL2NsaS9jb25maWcubTQKLUBAIC01MCw3ICs1MCw3IEBAIGlmIHRlc3QgIiRQSFBfQ0xJIiAhPSAibm8iOyB0aGVuCitAQCAtNDcsNyArNDcsNyBAQCBpZiB0ZXN0ICIkUEhQX0NMSSIgIT0gIm5vIjsgdGhlbgogICAgZXNhYwogIAotICAgZG5sIFNldCBleGVjdXRhYmxlIGZvciB0ZXN0cworICAgZG5sIFNldCBleGVjdXRhYmxlIGZvciB0ZXN0cy4KIC0gIFBIUF9FWEVDVVRBQkxFPSJcJCh0b3BfYnVpbGRkaXIpL1wkKFNBUElfQ0xJX1BBVEgpIgogKyAgUEhQX0VYRUNVVEFCTEU9IiR7UEhQX05BVElWRV9ESVJ9L3BocCIKICAgIFBIUF9TVUJTVChQSFBfRVhFQ1VUQUJMRSkKICAKLSAgIGRubCBFeHBvc2UgdG8gTWFrZWZpbGUKKyAgIGRubCBFeHBvc2UgdG8gTWFrZWZpbGUuCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzcuMy4xMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzcuMy4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTdmYjg0Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcGhwL3BocF83LjMuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNzUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHNlcnZlci1zaWRlLCBIVE1MLWVtYmVkZGVkIHNjcmlwdGluZyBsYW5ndWFnZSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGhwLm5ldCIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotCi1MSUNFTlNFID0gIlBIUC0zLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mYjA3YmZjNTFmNmQ1ZTBjMzBiNjVkOTcwMTIzM2IyZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi1ERVBFTkRTID0gInpsaWIgYnppcDIgbGlieG1sMiB2aXJ0dWFsL2xpYmljb252IHBocC1uYXRpdmUgbGVtb24tbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAiemxpYi1uYXRpdmUgbGlieG1sMi1uYXRpdmUiCi0KLVBIUF9NQUpPUl9WRVJTSU9OID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19IgotCi1TUkNfVVJJID0gImh0dHA6Ly9waHAubmV0L2Rpc3RyaWJ1dGlvbnMvcGhwLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1waHAtZG9uLXQtdXNlLWJyb2tlbi13cmFwcGVyLWZvci1ta2Rpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFjaW5jbHVkZS5tNC1kb24tdC11bnNldC1jYWNoZS12YXJpYWJsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDA0OC1Vc2UtcGtnLWNvbmZpZy1mb3ItRnJlZVR5cGUyLWRldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1saWJ4bWwyLWRldGVjdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4tcGhwLWZpeGhlYWRlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOS02OTc4LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAotICAgICAgICAgICAgZmlsZTovL2ljb252LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9pbWFwLWZpeC1hdXRvZm9vLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9waHBfZXhlY19uYXRpdmUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3BocC1mcG0uY29uZiBcCi0gICAgICAgICAgICBmaWxlOi8vcGhwLWZwbS1hcGFjaGUuY29uZiBcCi0gICAgICAgICAgICBmaWxlOi8vNzBfbW9kX3BocCR7UEhQX01BSk9SX1ZFUlNJT059LmNvbmYgXAotICAgICAgICAgICAgZmlsZTovL3BocC1mcG0uc2VydmljZSBcCi0gICAgICAgICAgICBmaWxlOi8vcGVhci1tYWtlZmlsZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vcGhhci1tYWtlZmlsZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1vcGNhY2hlLWNvbmZpZy5tNC1lbmFibGUtb3BjYWNoZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8veGZhaWxfdHdvX2J1Z190ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIgotUyA9ICIke1dPUktESVJ9L3BocC0ke1BWfSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyMWI3MTBiNDEyNmQ0ZDU0NzE0ZGU5NjkzYTZjN2IwZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MmQxZmY0YjEzYzcwOTM2MzVmMWVjMzM4YTVlNjg5MWNhOTliMTBlNjVmYmNhZGQ1MjdlNWJiODRkMTFiNWU3IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHl0aG9ubmF0aXZlIGdldHRleHQKLQotIyBwaHBpemUgaXMgbm90IHNjYW5uZWQgZm9yIGFic29sdXRlIHBhdGhzIGJ5IGRlZmF1bHQgKGJ1dCBwaHAtY29uZmlnIGlzKS4KLSMKLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICJwaHBpemUiCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiYnVpbGQtZGVmcy5oIgotCi1QSFBfTElCRElSID0gIiR7bGliZGlyfS9waHAke1BIUF9NQUpPUl9WRVJTSU9OfSIKLQotIyBDb21tb24gRVhUUkFfT0VDT05GCi1DT01NT05fRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNvY2tldHMgXAotICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1wY250bCBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNoYXJlZCBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1waWMgXAotICAgICAgICAgICAgICAgICAgICAgICAtLWxpYmRpcj0ke1BIUF9MSUJESVJ9IFwKLSIKLUVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1tYnN0cmluZyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtd2RkeCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtZnBtIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtbGliZGlyPSR7YmFzZWxpYn0gXAotICAgICAgICAgICAgICAgIC0td2l0aC1nZXR0ZXh0PSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWljb252PSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtYnoyPSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7ZXhlY19wcmVmaXh9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtY29uZmlnLWZpbGUtcGF0aD0ke3N5c2NvbmZkaXJ9L3BocC9hcGFjaGUyLXBocCR7UEhQX01BSk9SX1ZFUlNJT059IFwKLSAgICAgICAgICAgICAgICAke0BvZS51dGlscy5jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICdhY19jdl9jX2JpZ2VuZGlhbl9waHA9bm8nLCAnYWNfY3ZfY19iaWdlbmRpYW5fcGhwPXllcycsIGQpfSBcCi0gICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGFtJywgJycsICdhY19jdl9saWJfcGFtX3BhbV9zdGFydD1ubycsIGQpfSBcCi0gICAgICAgICAgICAgICAgJHtDT01NT05fRVhUUkFfT0VDT05GfSBcCi0iCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfcmlzY3Y2NCA9ICIgLS13aXRoLXBjcmUtaml0PW5vIgotRVhUUkFfT0VDT05GX2FwcGVuZF9yaXNjdjMyID0gIiAtLXdpdGgtcGNyZS1qaXQ9bm8iCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9mdW5jX2Rsb3Blbj1ubyBhY19jdl9saWJfZGxfZGxvcGVuPXllcyIKLQotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICIgXAotICAgICAgICAgICAgICAgIC0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS8uLiBcCi0gICAgICAgICAgICAgICAgLS13aXRob3V0LWljb252IFwKLSAgICAgICAgICAgICAgICAke0NPTU1PTl9FWFRSQV9PRUNPTkZ9IFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIm15c3FsIHNxbGl0ZTMgaW1hcCBvcGNhY2hlIG9wZW5zc2wgXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYgcGFtJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKLQotUEFDS0FHRUNPTkZJR1t6aXBdID0gIi0tZW5hYmxlLXppcCAtLXdpdGgtbGliemlwPSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSwsbGliemlwIgotCi1QQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWxpPW15c3FsbmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLXBkby1teXNxbD1teXNxbG5kIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICwtLXdpdGhvdXQtbXlzcWxpIC0td2l0aG91dC1wZG8tbXlzcWwgXAotICAgICAgICAgICAgICAgICAgICAgICAgLG15c3FsNSIKLQotUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLXdpdGgtc3FsaXRlMz0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1wZG8tc3FsaXRlPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLC0td2l0aG91dC1zcWxpdGUzIC0td2l0aG91dC1wZG8tc3FsaXRlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgLHNxbGl0ZTMiCi1QQUNLQUdFQ09ORklHW3Bnc3FsXSA9ICItLXdpdGgtcGdzcWw9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtleGVjX3ByZWZpeH0sLS13aXRob3V0LXBnc3FsLHBvc3RncmVzcWwiCi1QQUNLQUdFQ09ORklHW3NvYXBdID0gIi0tZW5hYmxlLWxpYnhtbCAtLWVuYWJsZS1zb2FwLCAtLWRpc2FibGUtc29hcCwgbGlieG1sMiIKLVBBQ0tBR0VDT05GSUdbYXBhY2hlMl0gPSAiLS13aXRoLWFweHMyPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2FweHMsLGFwYWNoZTItbmF0aXZlIGFwYWNoZTIiCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLCxsaWJwYW0iCi1QQUNLQUdFQ09ORklHW2ltYXBdID0gIi0td2l0aC1pbWFwPSR7U1RBR0lOR19ESVJfSE9TVH0gXAotICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtaW1hcC1zc2w9JHtTVEFHSU5HX0RJUl9IT1NUfSBcCi0gICAgICAgICAgICAgICAgICAgICAgICwtLXdpdGhvdXQtaW1hcCAtLXdpdGhvdXQtaW1hcC1zc2wgXAotICAgICAgICAgICAgICAgICAgICAgICAsdXctaW1hcCIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi1QQUNLQUdFQ09ORklHW29wY2FjaGVdID0gIi0tZW5hYmxlLW9wY2FjaGUsLS1kaXNhYmxlLW9wY2FjaGUiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQ9JHtTVEFHSU5HX0RJUl9UQVJHRVR9L3VzciwtLXdpdGgtdmFsZ3JpbmQ9bm8sdmFsZ3JpbmQiCi0KLWV4cG9ydCBQSFBfTkFUSVZFX0RJUiA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0iCi1leHBvcnQgUEhQX1BFQVJfUEhQX0JJTiA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGhwIgotQ0ZMQUdTICs9ICIgLURfR05VX1NPVVJDRSAtZyAtRFBUWVNfQVJFX0dFVFBUIC1EUFRZU19BUkVfU0VBUkNIRUQgLUkke1NUQUdJTkdfSU5DRElSfS9hcGFjaGUyIgotCi1FWFRSQV9PRU1BS0UgPSAiSU5TVEFMTF9ST09UPSR7RH0iCi0KLWFjcGF0aHMgPSAiIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgcm0gLWYgJHtTfS9idWlsZC9saWJ0b29sLm00ICR7U30vbHRtYWluLnNoICR7U30vYWNsb2NhbC5tNAotICAgIGZpbmQgJHtTfSAtbmFtZSBjb25maWcubTQgfCB4YXJncyAtbjEgc2VkIC1pICdzIUFQWFNfSFRUUEQ9LiohQVBYU19IVFRQRD0ke1NUQUdJTkdfU0JJTkRJUl9OQVRJVkV9L2h0dHBkIScKLX0KLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLSAgICAjIE5vLCBsaWJ0b29sLCB3ZSByZWFsbHkgZG9uJ3Qgd2FudCBycGF0aCBzZXQuLi4KLSAgICBzZWQgLWkgJ3N8XmhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Lip8aGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0iInxnJyAke0hPU1RfU1lTfS1saWJ0b29sCi0gICAgc2VkIC1pICdzfF5ydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSHxydW5wYXRoX3Zhcj1ESUVfUlBBVEhfRElFfGcnICR7SE9TVF9TWVN9LWxpYnRvb2wKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgIHJtIC1yZiAke0R9LyR7UEhQX0xJQkRJUn0vcGhwLy5yZWdpc3RyeQotICAgIHJtIC1yZiAke0R9LyR7UEhQX0xJQkRJUn0vcGhwLy5jaGFubmVscwotICAgIHJtIC1yZiAke0R9LyR7UEhQX0xJQkRJUn0vcGhwLy5bYS16XSoKLX0KLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotICAgIGNhdCAke0FDTE9DQUxESVJ9L2xpYnRvb2wubTQgJHtBQ0xPQ0FMRElSfS9sdH5vYnNvbGV0ZS5tNCAke0FDTE9DQUxESVJ9L2x0b3B0aW9ucy5tNCBcCi0gICAgICAgICR7QUNMT0NBTERJUn0vbHRzdWdhci5tNCAke0FDTE9DQUxESVJ9L2x0dmVyc2lvbi5tNCA+ICR7U30vYnVpbGQvbGlidG9vbC5tNAotfQotCi1kb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FwYWNoZTInLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICAjIEluc3RhbGwgZHVtbXkgY29uZmlnIGZpbGUgc28gYXB4cyBkb2Vzbid0IGZhaWwKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9hcGFjaGUyCi0gICAgICAgIHByaW50ZiAiXG5Mb2FkTW9kdWxlIGR1bW15X21vZHVsZSBtb2R1bGVzL21vZF9kdW1teS5zb1xuIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvaHR0cGQuY29uZgotICAgIGZpCi19Ci0KLSMgZml4bWUKLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9LwotICAgIGlmIFsgLWQgJHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9JHtzeXNjb25mZGlyfSBdO3RoZW4KLSAgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1JFQ0lQRV9TWVNST09UX05BVElWRX0ke3N5c2NvbmZkaXJ9L3BlYXIuY29uZiAke0R9JHtzeXNjb25mZGlyfS8KLSAgICBmaQotICAgIHJtIC1yZiAke0R9LyR7VE1QRElSfQotICAgIHJtIC1yZiAke0R9Ly5yZWdpc3RyeQotICAgIHJtIC1yZiAke0R9Ly5jaGFubmVscwotICAgIHJtIC1yZiAke0R9Ly5bYS16XSoKLSAgICBybSAtcmYgJHtEfS92YXIKLSAgICBybSAtZiAgJHtEfS8ke3N5c2NvbmZkaXJ9L3BocC1mcG0uY29uZi5kZWZhdWx0Ci0gICAgc2VkIC1pICdzOiR7U1RBR0lOR19ESVJfTkFUSVZFfTo6ZycgJHtEfSR7c3lzY29uZmRpcn0vcGVhci5jb25mCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcGhwLWZwbS5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9waHAtZnBtLmNvbmYKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9hcGFjaGUyL2NvbmYuZAotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3BocC1mcG0tYXBhY2hlLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kL3BocC1mcG0uY29uZgotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgc2VkIC1pICdzOj0vdXNyL3NiaW46PSR7c2JpbmRpcn06ZycgJHtCfS9zYXBpL2ZwbS9pbml0LmQucGhwLWZwbQotICAgIHNlZCAtaSAnczo9L2V0Yzo9JHtzeXNjb25mZGlyfTpnJyAke0J9L3NhcGkvZnBtL2luaXQuZC5waHAtZnBtCi0gICAgc2VkIC1pICdzOj0vdmFyOj0ke2xvY2Fsc3RhdGVkaXJ9OmcnICR7Qn0vc2FwaS9mcG0vaW5pdC5kLnBocC1mcG0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS9zYXBpL2ZwbS9pbml0LmQucGhwLWZwbSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcGhwLWZwbQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3BocC1mcG0tYXBhY2hlLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kL3BocC1mcG0uY29uZgotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTt0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcGhwLWZwbS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgICAgICBzZWQgLWkgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAotICAgICAgICAgICAgLWUgJ3MsQExPQ0FMU1RBVEVESVJALCR7bG9jYWxzdGF0ZWRpcn0sZycgXAotICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcGhwLWZwbS5zZXJ2aWNlCi0gICAgZmkKLQotICAgIFRNUD1gZGlybmFtZSAke0R9LyR7VE1QRElSfWAKLSAgICB3aGlsZSB0ZXN0ICR7VE1QfSAhPSAke0R9OyBkbwotICAgICAgICBpZiBbIC1kICR7VE1QfSBdOyB0aGVuCi0gICAgICAgICAgICBybWRpciAke1RNUH0KLSAgICAgICAgZmkKLSAgICAgICAgVE1QPWBkaXJuYW1lICR7VE1QfWA7Ci0gICAgZG9uZQotCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXBhY2hlMicsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYXBhY2hlMi9tb2R1bGVzLmQKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9waHAvYXBhY2hlMi1waHAke1BIUF9NQUpPUl9WRVJTSU9OfQotICAgICAgICBpbnN0YWxsIC1tIDY0NCAgJHtXT1JLRElSfS83MF9tb2RfcGhwJHtQSFBfTUFKT1JfVkVSU0lPTn0uY29uZiAke0R9JHtzeXNjb25mZGlyfS9hcGFjaGUyL21vZHVsZXMuZAotICAgICAgICBzZWQgLWkgcyxsaWIvLCR7bGliZXhlY2Rpcn0vLCAke0R9JHtzeXNjb25mZGlyfS9hcGFjaGUyL21vZHVsZXMuZC83MF9tb2RfcGhwJHtQSFBfTUFKT1JfVkVSU0lPTn0uY29uZgotICAgICAgICBjYXQgJHtTfS9waHAuaW5pLXByb2R1Y3Rpb24gfCBcCi0gICAgICAgICAgICBzZWQgLWUgJ3MsZXh0ZW5zaW9uX2RpciA9IFwiXC4vXCIsZXh0ZW5zaW9uX2RpciA9IFwiL3Vzci9saWIvZXh0ZW5zaW9uc1wiLCcgXAotICAgICAgICAgICAgPiAke0R9JHtzeXNjb25mZGlyfS9waHAvYXBhY2hlMi1waHAke1BIUF9NQUpPUl9WRVJTSU9OfS9waHAuaW5pCi0gICAgICAgIHJtIC1mICR7RH0ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvaHR0cGQuY29uZioKLSAgICBmaQotfQotCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gInBocF9zeXNyb290X3ByZXByb2Nlc3MiCi0KLXBocF9zeXNyb290X3ByZXByb2Nlc3MgKCkgewotICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8KLSAgICBpbnN0YWxsIC1tIDc1NSAke0R9JHtiaW5kaXJ9L3BocGl6ZSAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LwotICAgIGluc3RhbGwgLW0gNzU1ICR7RH0ke2JpbmRpcn0vcGhwLWNvbmZpZyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LwotCi0gICAgc2VkIC1pICdzIWV2YWwgZWNobyAvIWV2YWwgZWNobyAke1NUQUdJTkdfRElSX0hPU1R9LyEnICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vcGhwaXplCi0gICAgc2VkIC1pICdzIV5pbmNsdWRlX2Rpcj0uKiFpbmNsdWRlX2Rpcj0ke1NUQUdJTkdfSU5DRElSfS9waHAhJyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L3BocC1jb25maWcKLX0KLQotTU9EUEhQX1BBQ0tBR0UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXBhY2hlMicsICcke1BOfS1tb2RwaHAnLCAnJywgZCl9IgotCi1QQUNLQUdFUyA9ICIke1BOfS1kYmcgJHtQTn0tY2xpICR7UE59LWNnaSAke1BOfS1mcG0gJHtQTn0tZnBtLWFwYWNoZTIgJHtQTn0tcGVhciAke1BOfS1waGFyICR7TU9EUEhQX1BBQ0tBR0V9ICR7UE59LWRldiAke1BOfS1zdGF0aWNkZXYgJHtQTn0tZG9jICR7UE59LW9wY2FjaGUgJHtQTn0iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJsaWJnY2MiCi1SREVQRU5EU18ke1BOfS1wZWFyID0gIiR7UE59IgotUkRFUEVORFNfJHtQTn0tcGhhciA9ICIke1BOfS1jbGkiCi1SREVQRU5EU18ke1BOfS1jbGkgPSAiJHtQTn0iCi1SREVQRU5EU18ke1BOfS1tb2RwaHAgPSAiJHtQTn0gYXBhY2hlMiIKLVJERVBFTkRTXyR7UE59LW9wY2FjaGUgPSAiJHtQTn0iCi0KLUlOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0tZnBtIgotaW5oZXJpdCB1cGRhdGUtcmMuZAotCi1GSUxFU18ke1BOfS1kYmcgPSsgIiR7YmluZGlyfS8uZGVidWcgXAotICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2FwYWNoZTIvbW9kdWxlcy8uZGVidWciCi1GSUxFU18ke1BOfS1kb2MgKz0gIiR7UEhQX0xJQkRJUn0vcGhwL2RvYyIKLUZJTEVTXyR7UE59LWNsaSA9ICIke2JpbmRpcn0vcGhwIgotRklMRVNfJHtQTn0tcGhhciA9ICIke2JpbmRpcn0vcGhhcioiCi1GSUxFU18ke1BOfS1jZ2kgPSAiJHtiaW5kaXJ9L3BocC1jZ2kiCi1GSUxFU18ke1BOfS1mcG0gPSAiJHtzYmluZGlyfS9waHAtZnBtICR7c3lzY29uZmRpcn0vcGhwLWZwbS5jb25mICR7ZGF0YWRpcn0vZnBtICR7c3lzY29uZmRpcn0vaW5pdC5kL3BocC1mcG0gJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9waHAtZnBtLnNlcnZpY2UgJHtzeXNjb25mZGlyfS9waHAtZnBtLmQvd3d3LmNvbmYuZGVmYXVsdCIKLUZJTEVTXyR7UE59LWZwbS1hcGFjaGUyID0gIiR7c3lzY29uZmRpcn0vYXBhY2hlMi9jb25mLmQvcGhwLWZwbS5jb25mIgotQ09ORkZJTEVTXyR7UE59LWZwbSA9ICIke3N5c2NvbmZkaXJ9L3BocC1mcG0uY29uZiIKLUNPTkZGSUxFU18ke1BOfS1mcG0tYXBhY2hlMiA9ICIke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kL3BocC1mcG0uY29uZiIKLUlOSVRTQ1JJUFRfTkFNRV8ke1BOfS1mcG0gPSAicGhwLWZwbSIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LWZwbSA9ICJkZWZhdWx0cyA2MCIKLUZJTEVTXyR7UE59LXBlYXIgPSAiJHtiaW5kaXJ9L3BlYXIqICR7YmluZGlyfS9wZWNsICR7UEhQX0xJQkRJUn0vcGhwL1BFQVIgXAotICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwL1BFQVIqLnBocCAke1BIUF9MSUJESVJ9L3BocC9TeXN0ZW0ucGhwIFwKLSAgICAgICAgICAgICAgICAke1BIUF9MSUJESVJ9L3BocC9wZWNsY21kLnBocCAke1BIUF9MSUJESVJ9L3BocC9wZWFyY21kLnBocCBcCi0gICAgICAgICAgICAgICAgJHtQSFBfTElCRElSfS9waHAvLmNoYW5uZWxzICR7UEhQX0xJQkRJUn0vcGhwLy5jaGFubmVscy8uYWxpYXMgXAotICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwLy5yZWdpc3RyeSAke1BIUF9MSUJESVJ9L3BocC9BcmNoaXZlL1Rhci5waHAgXAotICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwL0NvbnNvbGUvR2V0b3B0LnBocCAke1BIUF9MSUJESVJ9L3BocC9PUy9HdWVzcy5waHAgXAotICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwL2RhdGEvUEVBUiBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9wZWFyLmNvbmYiCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfS9waHAgJHtQSFBfTElCRElSfS9idWlsZCAke2JpbmRpcn0vcGhwaXplIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vcGhwLWNvbmZpZyAke1BIUF9MSUJESVJ9L3BocC8uZGVwZGIgXAotICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwLy5kZXBkYmxvY2sgJHtQSFBfTElCRElSfS9waHAvLmZpbGVtYXAgXAotICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwLy5sb2NrICR7UEhQX0xJQkRJUn0vcGhwL3Rlc3QiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UEhQX0xJQkRJUn0vZXh0ZW5zaW9ucy8qLyouYSIKLUZJTEVTXyR7UE59LW9wY2FjaGUgPSAiJHtQSFBfTElCRElSfS9leHRlbnNpb25zLyovb3BjYWNoZSR7U09MSUJTREVWfSIKLUZJTEVTXyR7UE59ID0gIiR7UEhQX0xJQkRJUn0vcGhwIgotRklMRVNfJHtQTn0gKz0gIiR7YmluZGlyfSAke2xpYmV4ZWNkaXJ9L2FwYWNoZTIiCi0KLVNVTU1BUllfJHtQTn0tbW9kcGhwID0gIlBIUCBtb2R1bGUgZm9yIHRoZSBBcGFjaGUgSFRUUCBzZXJ2ZXIiCi1GSUxFU18ke1BOfS1tb2RwaHAgPSAiJHtsaWJkaXJ9L2FwYWNoZTIgJHtzeXNjb25mZGlyfSIKLQotTU9EUEhQX09MRFBBQ0tBR0UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXBhY2hlMicsICdtb2RwaHAnLCAnJywgZCl9IgotUlBST1ZJREVTXyR7UE59LW1vZHBocCA9ICIke01PRFBIUF9PTERQQUNLQUdFfSIKLVJSRVBMQUNFU18ke1BOfS1tb2RwaHAgPSAiJHtNT0RQSFBfT0xEUEFDS0FHRX0iCi1SQ09ORkxJQ1RTXyR7UE59LW1vZHBocCA9ICIke01PRFBIUF9PTERQQUNLQUdFfSIKLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcGhwIFwKLSAgICAgICAgUEhQX1BFQVJfU1lTQ09ORl9ESVI9JHtzeXNjb25mZGlyfS8KLX0KLQotCi0jIEZhaWxzIHRvIGJ1aWxkIHdpdGggdGh1bWItMSAocWVtdWFybSkKLSMgfCB7c3RhbmRhcmQgaW5wdXR9OiBBc3NlbWJsZXIgbWVzc2FnZXM6Ci0jIHwge3N0YW5kYXJkIGlucHV0fTozNzE5OiBFcnJvcjogc2VsZWN0ZWQgcHJvY2Vzc29yIGRvZXMgbm90IHN1cHBvcnQgVGh1bWIgbW9kZSBgc211bGwgcjAscjIscjkscjMnCi0jIHwge3N0YW5kYXJkIGlucHV0fTozNzIwOiBFcnJvcjogdW5zaGlmdGVkIHJlZ2lzdGVyIHJlcXVpcmVkIC0tIGBzdWIgcjIscjIscjAsYXNyIzMxJwotIyB8IHtzdGFuZGFyZCBpbnB1dH06Mzc5NjogRXJyb3I6IHNlbGVjdGVkIHByb2Nlc3NvciBkb2VzIG5vdCBzdXBwb3J0IFRodW1iIG1vZGUgYHNtdWxsIHIwLHIyLHIzLHIzJwotIyB8IHtzdGFuZGFyZCBpbnB1dH06Mzc5NzogRXJyb3I6IHVuc2hpZnRlZCByZWdpc3RlciByZXF1aXJlZCAtLSBgc3ViIHIyLHIyLHIwLGFzciMzMScKLSMgfCBtYWtlOiAqKiogW2V4dC9zdGFuZGFyZC9tYXRoLmxvXSBFcnJvciAxCi1BUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzcuNC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BocC9waHBfNy40LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmY0YzI4ZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9waHAvcGhwXzcuNC40LmJiCkBAIC0wLDAgKzEsMjY5IEBACitTVU1NQVJZID0gIkEgc2VydmVyLXNpZGUsIEhUTUwtZW1iZWRkZWQgc2NyaXB0aW5nIGxhbmd1YWdlIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5waHAubmV0IgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiUEhQLTMuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTdlNTcxYjg4OGQ1ODViMzFmOWVmNWVkY2M2NDdmYTMwIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK0RFUEVORFMgPSAiemxpYiBiemlwMiBsaWJ4bWwyIHZpcnR1YWwvbGliaWNvbnYgcGhwLW5hdGl2ZSBsZW1vbi1uYXRpdmUiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJ6bGliLW5hdGl2ZSBsaWJ4bWwyLW5hdGl2ZSIKKworUEhQX01BSk9SX1ZFUlNJT04gPSAiJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0iCisKK1NSQ19VUkkgPSAiaHR0cDovL3BocC5uZXQvZGlzdHJpYnV0aW9ucy9waHAtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBocC1kb24tdC11c2UtYnJva2VuLXdyYXBwZXItZm9yLW1rZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi1waHAtZml4aGVhZGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWRvbi10LWluY2x1ZGUtYnVpbGQtbGlidG9vbC5tNC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBocC5tNC1kb24tdC11bnNldC1jYWNoZS12YXJpYWJsZXMucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCisgICAgICAgICAgICBmaWxlOi8vaWNvbnYucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2ltYXAtZml4LWF1dG9mb28ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3BocF9leGVjX25hdGl2ZS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcGhwLWZwbS5jb25mIFwKKyAgICAgICAgICAgIGZpbGU6Ly9waHAtZnBtLWFwYWNoZS5jb25mIFwKKyAgICAgICAgICAgIGZpbGU6Ly83MF9tb2RfcGhwJHtQSFBfTUFKT1JfVkVSU0lPTn0uY29uZiBcCisgICAgICAgICAgICBmaWxlOi8vcGhwLWZwbS5zZXJ2aWNlIFwKKyAgICAgICAgICAgIGZpbGU6Ly9wZWFyLW1ha2VmaWxlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9waGFyLW1ha2VmaWxlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW9wY2FjaGUtY29uZmlnLm00LWVuYWJsZS1vcGNhY2hlLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly94ZmFpbF90d29fYnVnX3Rlc3RzLnBhdGNoIFwKKyAgICAgICAgICAiCitTID0gIiR7V09SS0RJUn0vcGhwLSR7UFZ9IgorU1JDX1VSSVttZDVzdW1dID0gIjI2MmMyNThhM2I4YjU2OTlmY2NhODlhNjRlNTg3NThjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwOGU4ZjQxODJlYzhhMjc2N2IwYjFiOGUxZTdjNjlmYjE0OWIzN2NmYjk4ZWU0YTM3NDc1ZTA4MmZhOTgyOWYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBweXRob24zbmF0aXZlIGdldHRleHQKKworIyBwaHBpemUgaXMgbm90IHNjYW5uZWQgZm9yIGFic29sdXRlIHBhdGhzIGJ5IGRlZmF1bHQgKGJ1dCBwaHAtY29uZmlnIGlzKS4KKyMKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICJwaHBpemUiCitTU1RBVEVfU0NBTl9GSUxFUyArPSAiYnVpbGQtZGVmcy5oIgorCitQSFBfTElCRElSID0gIiR7bGliZGlyfS9waHAke1BIUF9NQUpPUl9WRVJTSU9OfSIKKworIyBDb21tb24gRVhUUkFfT0VDT05GCitDT01NT05fRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNvY2tldHMgXAorICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1wY250bCBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ycGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1waWMgXAorICAgICAgICAgICAgICAgICAgICAgICAtLWxpYmRpcj0ke1BIUF9MSUJESVJ9IFwKKyIKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1tYnN0cmluZyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtZnBtIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtbGliZGlyPSR7YmFzZWxpYn0gXAorICAgICAgICAgICAgICAgIC0td2l0aC1nZXR0ZXh0PSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisgICAgICAgICAgICAgICAgLS13aXRoLWljb252PSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtYnoyPSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7ZXhlY19wcmVmaXh9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtY29uZmlnLWZpbGUtcGF0aD0ke3N5c2NvbmZkaXJ9L3BocC9hcGFjaGUyLXBocCR7UEhQX01BSk9SX1ZFUlNJT059IFwKKyAgICAgICAgICAgICAgICAke0BvZS51dGlscy5jb25kaXRpb25hbCgnU0lURUlORk9fRU5ESUFOTkVTUycsICdsZScsICdhY19jdl9jX2JpZ2VuZGlhbl9waHA9bm8nLCAnYWNfY3ZfY19iaWdlbmRpYW5fcGhwPXllcycsIGQpfSBcCisgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGFtJywgJycsICdhY19jdl9saWJfcGFtX3BhbV9zdGFydD1ubycsIGQpfSBcCisgICAgICAgICAgICAgICAgJHtDT01NT05fRVhUUkFfT0VDT05GfSBcCisiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfcmlzY3Y2NCA9ICIgLS13aXRoLXBjcmUtaml0PW5vIgorRVhUUkFfT0VDT05GX2FwcGVuZF9yaXNjdjMyID0gIiAtLXdpdGgtcGNyZS1qaXQ9bm8iCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9mdW5jX2Rsb3Blbj1ubyBhY19jdl9saWJfZGxfZGxvcGVuPXllcyIKKworRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICIgXAorICAgICAgICAgICAgICAgIC0td2l0aC16bGliPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS8uLiBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LWljb252IFwKKyAgICAgICAgICAgICAgICAke0NPTU1PTl9FWFRSQV9PRUNPTkZ9IFwKKyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIm15c3FsIHNxbGl0ZTMgaW1hcCBvcGNhY2hlIG9wZW5zc2wgXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYgcGFtJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKKworUEFDS0FHRUNPTkZJR1t6aXBdID0gIi0tZW5hYmxlLXppcCAtLXdpdGgtbGliemlwPSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSwsbGliemlwIgorCitQQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWxpPW15c3FsbmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLXBkby1teXNxbD1teXNxbG5kIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICwtLXdpdGhvdXQtbXlzcWxpIC0td2l0aG91dC1wZG8tbXlzcWwgXAorICAgICAgICAgICAgICAgICAgICAgICAgLG15c3FsNSIKKworUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLXdpdGgtc3FsaXRlMz0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aC1wZG8tc3FsaXRlPSR7U1RBR0lOR19MSUJESVJ9Ly4uIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLC0td2l0aG91dC1zcWxpdGUzIC0td2l0aG91dC1wZG8tc3FsaXRlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLHNxbGl0ZTMiCitQQUNLQUdFQ09ORklHW3Bnc3FsXSA9ICItLXdpdGgtcGdzcWw9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtleGVjX3ByZWZpeH0sLS13aXRob3V0LXBnc3FsLHBvc3RncmVzcWwiCitQQUNLQUdFQ09ORklHW3NvYXBdID0gIi0tZW5hYmxlLWxpYnhtbCAtLWVuYWJsZS1zb2FwLCAtLWRpc2FibGUtc29hcCwgbGlieG1sMiIKK1BBQ0tBR0VDT05GSUdbYXBhY2hlMl0gPSAiLS13aXRoLWFweHMyPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2FweHMsLGFwYWNoZTItbmF0aXZlIGFwYWNoZTIiCitQQUNLQUdFQ09ORklHW3BhbV0gPSAiLCxsaWJwYW0iCitQQUNLQUdFQ09ORklHW2ltYXBdID0gIi0td2l0aC1pbWFwPSR7U1RBR0lOR19ESVJfSE9TVH0gXAorICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtaW1hcC1zc2w9JHtTVEFHSU5HX0RJUl9IT1NUfSBcCisgICAgICAgICAgICAgICAgICAgICAgICwtLXdpdGhvdXQtaW1hcCAtLXdpdGhvdXQtaW1hcC1zc2wgXAorICAgICAgICAgICAgICAgICAgICAgICAsdXctaW1hcCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCitQQUNLQUdFQ09ORklHW29wY2FjaGVdID0gIi0tZW5hYmxlLW9wY2FjaGUsLS1kaXNhYmxlLW9wY2FjaGUiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQ9JHtTVEFHSU5HX0RJUl9UQVJHRVR9L3VzciwtLXdpdGgtdmFsZ3JpbmQ9bm8sdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW21icmVnZXhdID0gIi0tZW5hYmxlLW1icmVnZXgsIC0tZGlzYWJsZS1tYnJlZ2V4LCBvbmlndXJ1bWEiCisKK2V4cG9ydCBQSFBfTkFUSVZFX0RJUiA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0iCitleHBvcnQgUEhQX1BFQVJfUEhQX0JJTiA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vcGhwIgorQ0ZMQUdTICs9ICIgLURfR05VX1NPVVJDRSAtZyAtRFBUWVNfQVJFX0dFVFBUIC1EUFRZU19BUkVfU0VBUkNIRUQgLUkke1NUQUdJTkdfSU5DRElSfS9hcGFjaGUyIgorCitFWFRSQV9PRU1BS0UgPSAiSU5TVEFMTF9ST09UPSR7RH0iCisKK2FjcGF0aHMgPSAiIgorCitkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CisgICAgcm0gLWYgJHtTfS9idWlsZC9saWJ0b29sLm00ICR7U30vbHRtYWluLnNoICR7U30vYWNsb2NhbC5tNAorICAgIGZpbmQgJHtTfSAtbmFtZSBjb25maWcubTQgfCB4YXJncyAtbjEgc2VkIC1pICdzIUFQWFNfSFRUUEQ9LiohQVBYU19IVFRQRD0ke1NUQUdJTkdfU0JJTkRJUl9OQVRJVkV9L2h0dHBkIScKK30KKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKyAgICAjIE5vLCBsaWJ0b29sLCB3ZSByZWFsbHkgZG9uJ3Qgd2FudCBycGF0aCBzZXQuLi4KKyAgICBzZWQgLWkgJ3N8XmhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Lip8aGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0iInxnJyAke0hPU1RfU1lTfS1saWJ0b29sCisgICAgc2VkIC1pICdzfF5ydW5wYXRoX3Zhcj1MRF9SVU5fUEFUSHxydW5wYXRoX3Zhcj1ESUVfUlBBVEhfRElFfGcnICR7SE9TVF9TWVN9LWxpYnRvb2wKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgIHJtIC1yZiAke0R9LyR7UEhQX0xJQkRJUn0vcGhwLy5yZWdpc3RyeQorICAgIHJtIC1yZiAke0R9LyR7UEhQX0xJQkRJUn0vcGhwLy5jaGFubmVscworICAgIHJtIC1yZiAke0R9LyR7UEhQX0xJQkRJUn0vcGhwLy5bYS16XSoKK30KKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworICAgIGNhdCAke0FDTE9DQUxESVJ9L2xpYnRvb2wubTQgJHtBQ0xPQ0FMRElSfS9sdH5vYnNvbGV0ZS5tNCAke0FDTE9DQUxESVJ9L2x0b3B0aW9ucy5tNCBcCisgICAgICAgICR7QUNMT0NBTERJUn0vbHRzdWdhci5tNCAke0FDTE9DQUxESVJ9L2x0dmVyc2lvbi5tNCA+ICR7U30vYnVpbGQvbGlidG9vbC5tNAorfQorCitkb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2FwYWNoZTInLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICAjIEluc3RhbGwgZHVtbXkgY29uZmlnIGZpbGUgc28gYXB4cyBkb2Vzbid0IGZhaWwKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9hcGFjaGUyCisgICAgICAgIHByaW50ZiAiXG5Mb2FkTW9kdWxlIGR1bW15X21vZHVsZSBtb2R1bGVzL21vZF9kdW1teS5zb1xuIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvaHR0cGQuY29uZgorICAgIGZpCit9CisKKyMgZml4bWUKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9LworICAgIHJtIC1yZiAke0R9LyR7VE1QRElSfQorICAgIHJtIC1yZiAke0R9Ly5yZWdpc3RyeQorICAgIHJtIC1yZiAke0R9Ly5jaGFubmVscworICAgIHJtIC1yZiAke0R9Ly5bYS16XSoKKyAgICBybSAtcmYgJHtEfS92YXIKKyAgICBybSAtZiAgJHtEfS8ke3N5c2NvbmZkaXJ9L3BocC1mcG0uY29uZi5kZWZhdWx0CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcGhwLWZwbS5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9waHAtZnBtLmNvbmYKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9hcGFjaGUyL2NvbmYuZAorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3BocC1mcG0tYXBhY2hlLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kL3BocC1mcG0uY29uZgorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgc2VkIC1pICdzOj0vdXNyL3NiaW46PSR7c2JpbmRpcn06ZycgJHtCfS9zYXBpL2ZwbS9pbml0LmQucGhwLWZwbQorICAgIHNlZCAtaSAnczo9L2V0Yzo9JHtzeXNjb25mZGlyfTpnJyAke0J9L3NhcGkvZnBtL2luaXQuZC5waHAtZnBtCisgICAgc2VkIC1pICdzOj0vdmFyOj0ke2xvY2Fsc3RhdGVkaXJ9OmcnICR7Qn0vc2FwaS9mcG0vaW5pdC5kLnBocC1mcG0KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS9zYXBpL2ZwbS9pbml0LmQucGhwLWZwbSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcGhwLWZwbQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3BocC1mcG0tYXBhY2hlLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kL3BocC1mcG0uY29uZgorCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTt0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcGhwLWZwbS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworICAgICAgICBzZWQgLWkgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorICAgICAgICAgICAgLWUgJ3MsQExPQ0FMU1RBVEVESVJALCR7bG9jYWxzdGF0ZWRpcn0sZycgXAorICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcGhwLWZwbS5zZXJ2aWNlCisgICAgZmkKKworICAgIFRNUD1gZGlybmFtZSAke0R9LyR7VE1QRElSfWAKKyAgICB3aGlsZSB0ZXN0ICR7VE1QfSAhPSAke0R9OyBkbworICAgICAgICBpZiBbIC1kICR7VE1QfSBdOyB0aGVuCisgICAgICAgICAgICBybWRpciAke1RNUH0KKyAgICAgICAgZmkKKyAgICAgICAgVE1QPWBkaXJuYW1lICR7VE1QfWA7CisgICAgZG9uZQorCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXBhY2hlMicsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYXBhY2hlMi9tb2R1bGVzLmQKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9waHAvYXBhY2hlMi1waHAke1BIUF9NQUpPUl9WRVJTSU9OfQorICAgICAgICBpbnN0YWxsIC1tIDY0NCAgJHtXT1JLRElSfS83MF9tb2RfcGhwJHtQSFBfTUFKT1JfVkVSU0lPTn0uY29uZiAke0R9JHtzeXNjb25mZGlyfS9hcGFjaGUyL21vZHVsZXMuZAorICAgICAgICBzZWQgLWkgcyxsaWIvLCR7bGliZXhlY2Rpcn0vLCAke0R9JHtzeXNjb25mZGlyfS9hcGFjaGUyL21vZHVsZXMuZC83MF9tb2RfcGhwJHtQSFBfTUFKT1JfVkVSU0lPTn0uY29uZgorICAgICAgICBjYXQgJHtTfS9waHAuaW5pLXByb2R1Y3Rpb24gfCBcCisgICAgICAgICAgICBzZWQgLWUgJ3MsZXh0ZW5zaW9uX2RpciA9IFwiXC4vXCIsZXh0ZW5zaW9uX2RpciA9IFwiL3Vzci9saWIvZXh0ZW5zaW9uc1wiLCcgXAorICAgICAgICAgICAgPiAke0R9JHtzeXNjb25mZGlyfS9waHAvYXBhY2hlMi1waHAke1BIUF9NQUpPUl9WRVJTSU9OfS9waHAuaW5pCisgICAgICAgIHJtIC1mICR7RH0ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvaHR0cGQuY29uZioKKyAgICBmaQorfQorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gInBocF9zeXNyb290X3ByZXByb2Nlc3MiCisKK3BocF9zeXNyb290X3ByZXByb2Nlc3MgKCkgeworICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfS8KKyAgICBpbnN0YWxsIC1tIDc1NSAke0R9JHtiaW5kaXJ9L3BocGl6ZSAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LworICAgIGluc3RhbGwgLW0gNzU1ICR7RH0ke2JpbmRpcn0vcGhwLWNvbmZpZyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9LworCisgICAgc2VkIC1pICdzIWV2YWwgZWNobyAvIWV2YWwgZWNobyAke1NUQUdJTkdfRElSX0hPU1R9LyEnICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vcGhwaXplCisgICAgc2VkIC1pICdzIV5pbmNsdWRlX2Rpcj0uKiFpbmNsdWRlX2Rpcj0ke1NUQUdJTkdfSU5DRElSfS9waHAhJyAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L3BocC1jb25maWcKK30KKworTU9EUEhQX1BBQ0tBR0UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXBhY2hlMicsICcke1BOfS1tb2RwaHAnLCAnJywgZCl9IgorCitQQUNLQUdFUyA9ICIke1BOfS1kYmcgJHtQTn0tY2xpICR7UE59LWNnaSAke1BOfS1mcG0gJHtQTn0tZnBtLWFwYWNoZTIgJHtQTn0tcGVhciAke1BOfS1waGFyICR7TU9EUEhQX1BBQ0tBR0V9ICR7UE59LWRldiAke1BOfS1zdGF0aWNkZXYgJHtQTn0tZG9jICR7UE59LW9wY2FjaGUgJHtQTn0iCisKK1JERVBFTkRTXyR7UE59ICs9ICJsaWJnY2MiCitSREVQRU5EU18ke1BOfS1wZWFyID0gIiR7UE59IgorUkRFUEVORFNfJHtQTn0tcGhhciA9ICIke1BOfS1jbGkiCitSREVQRU5EU18ke1BOfS1jbGkgPSAiJHtQTn0iCitSREVQRU5EU18ke1BOfS1tb2RwaHAgPSAiJHtQTn0gYXBhY2hlMiIKK1JERVBFTkRTXyR7UE59LW9wY2FjaGUgPSAiJHtQTn0iCisKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0tZnBtIgoraW5oZXJpdCB1cGRhdGUtcmMuZAorCitGSUxFU18ke1BOfS1kYmcgPSsgIiR7YmluZGlyfS8uZGVidWcgXAorICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2FwYWNoZTIvbW9kdWxlcy8uZGVidWciCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7UEhQX0xJQkRJUn0vcGhwL2RvYyIKK0ZJTEVTXyR7UE59LWNsaSA9ICIke2JpbmRpcn0vcGhwIgorRklMRVNfJHtQTn0tcGhhciA9ICIke2JpbmRpcn0vcGhhcioiCitGSUxFU18ke1BOfS1jZ2kgPSAiJHtiaW5kaXJ9L3BocC1jZ2kiCitGSUxFU18ke1BOfS1mcG0gPSAiJHtzYmluZGlyfS9waHAtZnBtICR7c3lzY29uZmRpcn0vcGhwLWZwbS5jb25mICR7ZGF0YWRpcn0vZnBtICR7c3lzY29uZmRpcn0vaW5pdC5kL3BocC1mcG0gJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9waHAtZnBtLnNlcnZpY2UgJHtzeXNjb25mZGlyfS9waHAtZnBtLmQvd3d3LmNvbmYuZGVmYXVsdCIKK0ZJTEVTXyR7UE59LWZwbS1hcGFjaGUyID0gIiR7c3lzY29uZmRpcn0vYXBhY2hlMi9jb25mLmQvcGhwLWZwbS5jb25mIgorQ09ORkZJTEVTXyR7UE59LWZwbSA9ICIke3N5c2NvbmZkaXJ9L3BocC1mcG0uY29uZiIKK0NPTkZGSUxFU18ke1BOfS1mcG0tYXBhY2hlMiA9ICIke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kL3BocC1mcG0uY29uZiIKK0lOSVRTQ1JJUFRfTkFNRV8ke1BOfS1mcG0gPSAicGhwLWZwbSIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LWZwbSA9ICJkZWZhdWx0cyA2MCIKK0ZJTEVTXyR7UE59LXBlYXIgPSAiJHtiaW5kaXJ9L3BlYXIqICR7YmluZGlyfS9wZWNsICR7UEhQX0xJQkRJUn0vcGhwL1BFQVIgXAorICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwL1BFQVIqLnBocCAke1BIUF9MSUJESVJ9L3BocC9TeXN0ZW0ucGhwIFwKKyAgICAgICAgICAgICAgICAke1BIUF9MSUJESVJ9L3BocC9wZWNsY21kLnBocCAke1BIUF9MSUJESVJ9L3BocC9wZWFyY21kLnBocCBcCisgICAgICAgICAgICAgICAgJHtQSFBfTElCRElSfS9waHAvLmNoYW5uZWxzICR7UEhQX0xJQkRJUn0vcGhwLy5jaGFubmVscy8uYWxpYXMgXAorICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwLy5yZWdpc3RyeSAke1BIUF9MSUJESVJ9L3BocC9BcmNoaXZlL1Rhci5waHAgXAorICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwL0NvbnNvbGUvR2V0b3B0LnBocCAke1BIUF9MSUJESVJ9L3BocC9PUy9HdWVzcy5waHAgXAorICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwL2RhdGEvUEVBUiBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9wZWFyLmNvbmYiCitGSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfS9waHAgJHtQSFBfTElCRElSfS9idWlsZCAke2JpbmRpcn0vcGhwaXplIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vcGhwLWNvbmZpZyAke1BIUF9MSUJESVJ9L3BocC8uZGVwZGIgXAorICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwLy5kZXBkYmxvY2sgJHtQSFBfTElCRElSfS9waHAvLmZpbGVtYXAgXAorICAgICAgICAgICAgICAgICR7UEhQX0xJQkRJUn0vcGhwLy5sb2NrICR7UEhQX0xJQkRJUn0vcGhwL3Rlc3QiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UEhQX0xJQkRJUn0vZXh0ZW5zaW9ucy8qLyouYSIKK0ZJTEVTXyR7UE59LW9wY2FjaGUgPSAiJHtQSFBfTElCRElSfS9leHRlbnNpb25zLyovb3BjYWNoZSR7U09MSUJTREVWfSIKK0ZJTEVTXyR7UE59ID0gIiR7UEhQX0xJQkRJUn0vcGhwIgorRklMRVNfJHtQTn0gKz0gIiR7YmluZGlyfSAke2xpYmV4ZWNkaXJ9L2FwYWNoZTIiCisKK1NVTU1BUllfJHtQTn0tbW9kcGhwID0gIlBIUCBtb2R1bGUgZm9yIHRoZSBBcGFjaGUgSFRUUCBzZXJ2ZXIiCitGSUxFU18ke1BOfS1tb2RwaHAgPSAiJHtsaWJkaXJ9L2FwYWNoZTIgJHtzeXNjb25mZGlyfSIKKworTU9EUEhQX09MRFBBQ0tBR0UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXBhY2hlMicsICdtb2RwaHAnLCAnJywgZCl9IgorUlBST1ZJREVTXyR7UE59LW1vZHBocCA9ICIke01PRFBIUF9PTERQQUNLQUdFfSIKK1JSRVBMQUNFU18ke1BOfS1tb2RwaHAgPSAiJHtNT0RQSFBfT0xEUEFDS0FHRX0iCitSQ09ORkxJQ1RTXyR7UE59LW1vZHBocCA9ICIke01PRFBIUF9PTERQQUNLQUdFfSIKKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcGhwIFwKKyAgICAgICAgUEhQX1BFQVJfU1lTQ09ORl9ESVI9JHtzeXNjb25mZGlyfS8KK30KKworCisjIEZhaWxzIHRvIGJ1aWxkIHdpdGggdGh1bWItMSAocWVtdWFybSkKKyMgfCB7c3RhbmRhcmQgaW5wdXR9OiBBc3NlbWJsZXIgbWVzc2FnZXM6CisjIHwge3N0YW5kYXJkIGlucHV0fTozNzE5OiBFcnJvcjogc2VsZWN0ZWQgcHJvY2Vzc29yIGRvZXMgbm90IHN1cHBvcnQgVGh1bWIgbW9kZSBgc211bGwgcjAscjIscjkscjMnCisjIHwge3N0YW5kYXJkIGlucHV0fTozNzIwOiBFcnJvcjogdW5zaGlmdGVkIHJlZ2lzdGVyIHJlcXVpcmVkIC0tIGBzdWIgcjIscjIscjAsYXNyIzMxJworIyB8IHtzdGFuZGFyZCBpbnB1dH06Mzc5NjogRXJyb3I6IHNlbGVjdGVkIHByb2Nlc3NvciBkb2VzIG5vdCBzdXBwb3J0IFRodW1iIG1vZGUgYHNtdWxsIHIwLHIyLHIzLHIzJworIyB8IHtzdGFuZGFyZCBpbnB1dH06Mzc5NzogRXJyb3I6IHVuc2hpZnRlZCByZWdpc3RlciByZXF1aXJlZCAtLSBgc3ViIHIyLHIyLHIwLGFzciMzMScKKyMgfCBtYWtlOiAqKiogW2V4dC9zdGFuZGFyZC9tYXRoLmxvXSBFcnJvciAxCitBUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wbHkvcGx5X2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wbHkvcGx5X2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZDY5M2IzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3BseS9wbHlfZ2l0LmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiUGx5OiBBIGxpZ2h0LXdlaWdodCBkeW5hbWljIHRyYWNlciBmb3IgZUJQRiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pb3Zpc29yL3BseSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKKworREVQRU5EUyArPSAiYmlzb24tbmF0aXZlIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaW92aXNvci9wbHkiCitTUkNSRVYgPSAiYWE1YjlhYzMxMzA3ZWMxYWNlY2U4MThiZTMzNGVmODAxYzgwMmExMiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK0NPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0Lip8YWFyY2g2NC4qfGFybS4qfHBvd2VycGMuKiktbGludXgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWYtY18xLjMuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zi1jXzEuMy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTJmODJkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zi1jXzEuMy4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotU1VNTUFSWSA9ICJQcm90b2NvbCBCdWZmZXJzIC0gc3RydWN0dXJlZCBkYXRhIHNlcmlhbGlzYXRpb24gbWVjaGFuaXNtIgotREVTQ1JJUFRJT04gPSAiVGhpcyBpcyBwcm90b2J1Zi1jLCBhIEMgaW1wbGVtZW50YXRpb24gb2YgdGhlIEdvb2dsZSBQcm90b2NvbCBCdWZmZXJzIGRhdGEgXAotc2VyaWFsaXphdGlvbiBmb3JtYXQuIEl0IGluY2x1ZGVzIGxpYnByb3RvYnVmLWMsIGEgcHVyZSBDIGxpYnJhcnkgdGhhdCBcCi1pbXBsZW1lbnRzIHByb3RvYnVmIGVuY29kaW5nIGFuZCBkZWNvZGluZywgYW5kIHByb3RvYy1jLCBhIGNvZGUgZ2VuZXJhdG9yIHRoYXQgXAotY29udmVydHMgUHJvdG9jb2wgQnVmZmVyIC5wcm90byBmaWxlcyB0byBDIGRlc2NyaXB0b3IgY29kZSwgYmFzZWQgb24gdGhlIFwKLW9yaWdpbmFsIHByb3RvYy4gcHJvdG9idWYtYyBmb3JtZXJseSBpbmNsdWRlZCBhbiBSUEMgaW1wbGVtZW50YXRpb247IHRoYXQgY29kZSBcCi1oYXMgYmVlbiBzcGxpdCBvdXQgaW50byB0aGUgcHJvdG9idWYtYy1ycGMgcHJvamVjdC4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHJvdG9idWYtYy9wcm90b2J1Zi1jIgotU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jYjkwMTE2ODcxNWY0NzgyYTJiMDZjM2RkYWVmYTU1OCIKLQotREVQRU5EUyA9ICJwcm90b2J1Zi1uYXRpdmUgcHJvdG9idWYiCi0KLVNSQ1JFViA9ICIxMzkwNDA5ZjRlZTRlMjZkMDYzNTMxMDk5NWI1MTZlYjcwMmMzZjllIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcHJvdG9idWYtYy9wcm90b2J1Zi1jLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWF2b2lkLXJhY2UtY29uZGl0aW9uLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLSNtYWtlIHN1cmUgYysrMTEgaXMgdXNlZAotQ1hYRkxBR1MgKz0gIi1zdGQ9YysrMTEiCi1CVUlMRF9DWFhGTEFHUyArPSAiLXN0ZD1jKysxMSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVBBQ0tBR0VfQkVGT1JFX1BOID0gIiR7UE59LWNvbXBpbGVyIgotCi1GSUxFU18ke1BOfS1jb21waWxlciA9ICIke2JpbmRpcn0iCi0KLVJERVBFTkRTXyR7UE59LWNvbXBpbGVyID0gInByb3RvYnVmLWNvbXBpbGVyIgotUkRFUEVORFNfJHtQTn0tZGV2ICs9ICIke1BOfS1jb21waWxlciIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmLWNfMS4zLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWYtY18xLjMuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NGMzODkzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmLWNfMS4zLjMuYmIKQEAgLTAsMCArMSwzNiBAQAorU1VNTUFSWSA9ICJQcm90b2NvbCBCdWZmZXJzIC0gc3RydWN0dXJlZCBkYXRhIHNlcmlhbGlzYXRpb24gbWVjaGFuaXNtIgorREVTQ1JJUFRJT04gPSAiVGhpcyBpcyBwcm90b2J1Zi1jLCBhIEMgaW1wbGVtZW50YXRpb24gb2YgdGhlIEdvb2dsZSBQcm90b2NvbCBCdWZmZXJzIGRhdGEgXAorc2VyaWFsaXphdGlvbiBmb3JtYXQuIEl0IGluY2x1ZGVzIGxpYnByb3RvYnVmLWMsIGEgcHVyZSBDIGxpYnJhcnkgdGhhdCBcCitpbXBsZW1lbnRzIHByb3RvYnVmIGVuY29kaW5nIGFuZCBkZWNvZGluZywgYW5kIHByb3RvYy1jLCBhIGNvZGUgZ2VuZXJhdG9yIHRoYXQgXAorY29udmVydHMgUHJvdG9jb2wgQnVmZmVyIC5wcm90byBmaWxlcyB0byBDIGRlc2NyaXB0b3IgY29kZSwgYmFzZWQgb24gdGhlIFwKK29yaWdpbmFsIHByb3RvYy4gcHJvdG9idWYtYyBmb3JtZXJseSBpbmNsdWRlZCBhbiBSUEMgaW1wbGVtZW50YXRpb247IHRoYXQgY29kZSBcCitoYXMgYmVlbiBzcGxpdCBvdXQgaW50byB0aGUgcHJvdG9idWYtYy1ycGMgcHJvamVjdC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHJvdG9idWYtYy9wcm90b2J1Zi1jIgorU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jYjkwMTE2ODcxNWY0NzgyYTJiMDZjM2RkYWVmYTU1OCIKKworREVQRU5EUyA9ICJwcm90b2J1Zi1uYXRpdmUgcHJvdG9idWYiCisKK1NSQ1JFViA9ICJmMjBhM2ZhMTMxYzI3NWEwZTc5NWQ5OWEyOGY5NGI0ZGJiYjVhZjI2IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcHJvdG9idWYtYy9wcm90b2J1Zi1jLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWF2b2lkLXJhY2UtY29uZGl0aW9uLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKKyNtYWtlIHN1cmUgYysrMTEgaXMgdXNlZAorQ1hYRkxBR1MgKz0gIi1zdGQ9YysrMTEiCitCVUlMRF9DWFhGTEFHUyArPSAiLXN0ZD1jKysxMSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VfQkVGT1JFX1BOID0gIiR7UE59LWNvbXBpbGVyIgorCitGSUxFU18ke1BOfS1jb21waWxlciA9ICIke2JpbmRpcn0iCisKK1JERVBFTkRTXyR7UE59LWNvbXBpbGVyID0gInByb3RvYnVmLWNvbXBpbGVyIgorUkRFUEVORFNfJHtQTn0tZGV2ICs9ICIke1BOfS1jb21waWxlciIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmXzMuMTAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zl8zLjEwLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4NTI2ZjEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3Byb3RvYnVmL3Byb3RvYnVmXzMuMTAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDkwICswLDAgQEAKLVNVTU1BUlkgPSAiUHJvdG9jb2wgQnVmZmVycyAtIHN0cnVjdHVyZWQgZGF0YSBzZXJpYWxpc2F0aW9uIG1lY2hhbmlzbSIKLURFU0NSSVBUSU9OID0gIlByb3RvY29sIEJ1ZmZlcnMgYXJlIGEgd2F5IG9mIGVuY29kaW5nIHN0cnVjdHVyZWQgZGF0YSBpbiBhbiBcCi1lZmZpY2llbnQgeWV0IGV4dGVuc2libGUgZm9ybWF0LiBHb29nbGUgdXNlcyBQcm90b2NvbCBCdWZmZXJzIGZvciBhbG1vc3QgXAotYWxsIG9mIGl0cyBpbnRlcm5hbCBSUEMgcHJvdG9jb2xzIGFuZCBmaWxlIGZvcm1hdHMuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9wcm90b2J1ZiIKLVNFQ1RJT04gPSAiY29uc29sZS90b29scyIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzdiNTc2MmUwN2YwYWY4Yzc0Y2U4MGE4YmRhNDI2NmIiCi0KLURFUEVORFMgPSAiemxpYiIKLURFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgcHJvdG9idWYtbmF0aXZlIgotCi1TUkNSRVYgPSAiZDA5ZDY0OWFlYTM2ZjAyYzAzZjgzOTZiYTM5YThkNGRiOGE2MDdlNCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dvb2dsZS9wcm90b2J1Zi5naXQ7YnJhbmNoPTMuMTAueCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wcm90b2J1Zi1maXgtY29uZmlndXJlLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0taW5jbHVkZS1kZXNjcmlwdG9yLmNjLXdoZW4tYnVpbGRpbmctbGlicC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWV4YW1wbGVzLU1ha2VmaWxlLXJlc3BlY3QtQ1hYLUxERkxBR1MtdmFyaWFibGVzLWZpeC0ucGF0Y2ggXAotIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBwdGVzdAotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIiwsIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1wcm90b2M9ZWNobyIKLQotVEVTVF9TUkNfRElSID0gImV4YW1wbGVzIgotTEFOR19TVVBQT1JUID0gImNwcCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAncHl0aG9uJywgJycsIGQpfSIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlta2RpciAtcCAiJHtCfS8ke1RFU1RfU1JDX0RJUn0iCi0KLQkjIEFkZCB0aGUgbG9jYXRpb24gb2YgdGhlIGNyb3NzLWNvbXBpbGVkIGhlYWRlciBhbmQgbGlicmFyeSBmaWxlcwotCSMgd2hpY2ggaGF2ZW4ndCBiZWVuIGluc3RhbGxlZCB5ZXQuCi0JY3AgIiR7Qn0vcHJvdG9idWYucGMiICIke0J9LyR7VEVTVF9TUkNfRElSfS9wcm90b2J1Zi5wYyIKLQlzZWQgLWUgJ3N8bGliZGlyPXxsaWJkaXI9JHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfXwnIC1pICIke0J9LyR7VEVTVF9TUkNfRElSfS9wcm90b2J1Zi5wYyIKLQlzZWQgLWUgJ3N8Q2ZsYWdzOnxDZmxhZ3M6IC1JJHtTfS9zcmN8JyAtaSAiJHtCfS8ke1RFU1RfU1JDX0RJUn0vcHJvdG9idWYucGMiCi0Jc2VkIC1lICdzfExpYnM6fExpYnM6IC1MJHtCfS9zcmMvLmxpYnN8JyAtaSAiJHtCfS8ke1RFU1RfU1JDX0RJUn0vcHJvdG9idWYucGMiCi0JZXhwb3J0IFBLR19DT05GSUdfUEFUSD0iJHtCfS8ke1RFU1RfU1JDX0RJUn0iCi0KLQkjIFNhdmUgdGhlIHBrZ2NmZyBzeXNyb290IHZhcmlhYmxlLCBhbmQgdXBkYXRlIGl0IHRvIG5vdGhpbmcgc28KLQkjIHRoYXQgaXQgZG9lc24ndCBhcHBlbmQgdGhlIHN5c3Jvb3QgdG8gdGhlIGJlZ2lubmluZyBvZiBwYXRocy4KLQkjIFRoZSBoZWFkZXIgYW5kIGxpYnJhcnkgZmlsZXMgYXJlbid0IGluc3RhbGxlZCB0byB0aGUgdGFyZ2V0Ci0JIyBzeXN0ZW0geWV0LiAgU28gdGhlIGFic29sdXRlIHBhdGhzIHdlcmUgc3BlY2lmaWVkIGFib3ZlLgotCXNhdmVfcGtnX2NvbmZpZ19zeXNyb290X2Rpcj0kUEtHX0NPTkZJR19TWVNST09UX0RJUgotCWV4cG9ydCBQS0dfQ09ORklHX1NZU1JPT1RfRElSPQotCi0JIyBDb21waWxlIHRoZSB0ZXN0cwotCWZvciBsYW5nIGluICR7TEFOR19TVVBQT1JUfTsgZG8KLQkJb2VfcnVubWFrZSAtQyAiJHtTfS8ke1RFU1RfU1JDX0RJUn0iICR7bGFuZ30KLQlkb25lCi0KLQkjIFJlc3RvcmUgdGhlIHBrZ2NvbmZpZyBzeXNyb290IHZhcmlhYmxlCi0JZXhwb3J0IFBLR19DT05GSUdfU1lTUk9PVF9ESVI9JHNhdmVfcGtnX2NvbmZpZ19zeXNyb290X2RpcgotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWxvY2FsIG9sZGRpcj1gcHdkYAotCi0JY2QgIiR7U30vJHtURVNUX1NSQ19ESVJ9IgotCWluc3RhbGwgLWQgIiR7RH0vJHtQVEVTVF9QQVRIfSIKLQlmb3IgaSBpbiBhZGRfcGVyc29uKiBsaXN0X3Blb3BsZSo7IGRvCi0JCWlmIFsgLXggIiRpIiBdOyB0aGVuCi0JCQlpbnN0YWxsICIkaSIgIiR7RH0vJHtQVEVTVF9QQVRIfSIKLQkJZmkKLQlkb25lCi0JY3AgIiR7U30vJHtURVNUX1NSQ19ESVJ9L2FkZHJlc3Nib29rX3BiMi5weSIgIiR7RH0vJHtQVEVTVF9QQVRIfSIKLQljZCAiJG9sZGRpciIKLX0KLQotUEFDS0FHRV9CRUZPUkVfUE4gPSAiJHtQTn0tY29tcGlsZXIgJHtQTn0tbGl0ZSIKLQotRklMRVNfJHtQTn0tY29tcGlsZXIgPSAiJHtiaW5kaXJ9ICR7bGliZGlyfS9saWJwcm90b2Mke1NPTElCU30iCi1GSUxFU18ke1BOfS1saXRlID0gIiR7bGliZGlyfS9saWJwcm90b2J1Zi1saXRlJHtTT0xJQlN9IgotCi1SREVQRU5EU18ke1BOfS1jb21waWxlciA9ICIke1BOfSIKLVJERVBFTkRTXyR7UE59LWRldiArPSAiJHtQTn0tY29tcGlsZXIiCi1SREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24tcHJvdG9idWYnLCAnJywgZCl9IgotCi1NSVBTX0lOU1RSVUNUSU9OX1NFVCA9ICJtaXBzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLUxERkxBR1NfYXBwZW5kX2FybSA9ICIgLWxhdG9taWMiCi1MREZMQUdTX2FwcGVuZF9taXBzID0gIiAtbGF0b21pYyIKLUxERkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sYXRvbWljIgotTERGTEFHU19hcHBlbmRfbWlwc2VsID0gIiAtbGF0b21pYyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wcm90b2J1Zi9wcm90b2J1Zl8zLjExLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWZfMy4xMS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkNmM1YjIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHJvdG9idWYvcHJvdG9idWZfMy4xMS40LmJiCkBAIC0wLDAgKzEsOTAgQEAKK1NVTU1BUlkgPSAiUHJvdG9jb2wgQnVmZmVycyAtIHN0cnVjdHVyZWQgZGF0YSBzZXJpYWxpc2F0aW9uIG1lY2hhbmlzbSIKK0RFU0NSSVBUSU9OID0gIlByb3RvY29sIEJ1ZmZlcnMgYXJlIGEgd2F5IG9mIGVuY29kaW5nIHN0cnVjdHVyZWQgZGF0YSBpbiBhbiBcCitlZmZpY2llbnQgeWV0IGV4dGVuc2libGUgZm9ybWF0LiBHb29nbGUgdXNlcyBQcm90b2NvbCBCdWZmZXJzIGZvciBhbG1vc3QgXAorYWxsIG9mIGl0cyBpbnRlcm5hbCBSUEMgcHJvdG9jb2xzIGFuZCBmaWxlIGZvcm1hdHMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dvb2dsZS9wcm90b2J1ZiIKK1NFQ1RJT04gPSAiY29uc29sZS90b29scyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzdiNTc2MmUwN2YwYWY4Yzc0Y2U4MGE4YmRhNDI2NmIiCisKK0RFUEVORFMgPSAiemxpYiIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgcHJvdG9idWYtbmF0aXZlIgorCitTUkNSRVYgPSAiZDBiZmQ1MjIxMTgyZGExYTdjYzI4MGYzMzM3YjVlNDFhODk1MzljZiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dvb2dsZS9wcm90b2J1Zi5naXQ7YnJhbmNoPTMuMTEueCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wcm90b2J1Zi1maXgtY29uZmlndXJlLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0taW5jbHVkZS1kZXNjcmlwdG9yLmNjLXdoZW4tYnVpbGRpbmctbGlicC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWV4YW1wbGVzLU1ha2VmaWxlLXJlc3BlY3QtQ1hYLUxERkxBR1MtdmFyaWFibGVzLWZpeC0ucGF0Y2ggXAorIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBwdGVzdAorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tweXRob25dID0gIiwsIgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1wcm90b2M9ZWNobyIKKworVEVTVF9TUkNfRElSID0gImV4YW1wbGVzIgorTEFOR19TVVBQT1JUID0gImNwcCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAncHl0aG9uJywgJycsIGQpfSIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlta2RpciAtcCAiJHtCfS8ke1RFU1RfU1JDX0RJUn0iCisKKwkjIEFkZCB0aGUgbG9jYXRpb24gb2YgdGhlIGNyb3NzLWNvbXBpbGVkIGhlYWRlciBhbmQgbGlicmFyeSBmaWxlcworCSMgd2hpY2ggaGF2ZW4ndCBiZWVuIGluc3RhbGxlZCB5ZXQuCisJY3AgIiR7Qn0vcHJvdG9idWYucGMiICIke0J9LyR7VEVTVF9TUkNfRElSfS9wcm90b2J1Zi5wYyIKKwlzZWQgLWUgJ3N8bGliZGlyPXxsaWJkaXI9JHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfXwnIC1pICIke0J9LyR7VEVTVF9TUkNfRElSfS9wcm90b2J1Zi5wYyIKKwlzZWQgLWUgJ3N8Q2ZsYWdzOnxDZmxhZ3M6IC1JJHtTfS9zcmN8JyAtaSAiJHtCfS8ke1RFU1RfU1JDX0RJUn0vcHJvdG9idWYucGMiCisJc2VkIC1lICdzfExpYnM6fExpYnM6IC1MJHtCfS9zcmMvLmxpYnN8JyAtaSAiJHtCfS8ke1RFU1RfU1JDX0RJUn0vcHJvdG9idWYucGMiCisJZXhwb3J0IFBLR19DT05GSUdfUEFUSD0iJHtCfS8ke1RFU1RfU1JDX0RJUn0iCisKKwkjIFNhdmUgdGhlIHBrZ2NmZyBzeXNyb290IHZhcmlhYmxlLCBhbmQgdXBkYXRlIGl0IHRvIG5vdGhpbmcgc28KKwkjIHRoYXQgaXQgZG9lc24ndCBhcHBlbmQgdGhlIHN5c3Jvb3QgdG8gdGhlIGJlZ2lubmluZyBvZiBwYXRocy4KKwkjIFRoZSBoZWFkZXIgYW5kIGxpYnJhcnkgZmlsZXMgYXJlbid0IGluc3RhbGxlZCB0byB0aGUgdGFyZ2V0CisJIyBzeXN0ZW0geWV0LiAgU28gdGhlIGFic29sdXRlIHBhdGhzIHdlcmUgc3BlY2lmaWVkIGFib3ZlLgorCXNhdmVfcGtnX2NvbmZpZ19zeXNyb290X2Rpcj0kUEtHX0NPTkZJR19TWVNST09UX0RJUgorCWV4cG9ydCBQS0dfQ09ORklHX1NZU1JPT1RfRElSPQorCisJIyBDb21waWxlIHRoZSB0ZXN0cworCWZvciBsYW5nIGluICR7TEFOR19TVVBQT1JUfTsgZG8KKwkJb2VfcnVubWFrZSAtQyAiJHtTfS8ke1RFU1RfU1JDX0RJUn0iICR7bGFuZ30KKwlkb25lCisKKwkjIFJlc3RvcmUgdGhlIHBrZ2NvbmZpZyBzeXNyb290IHZhcmlhYmxlCisJZXhwb3J0IFBLR19DT05GSUdfU1lTUk9PVF9ESVI9JHNhdmVfcGtnX2NvbmZpZ19zeXNyb290X2RpcgorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWxvY2FsIG9sZGRpcj1gcHdkYAorCisJY2QgIiR7U30vJHtURVNUX1NSQ19ESVJ9IgorCWluc3RhbGwgLWQgIiR7RH0vJHtQVEVTVF9QQVRIfSIKKwlmb3IgaSBpbiBhZGRfcGVyc29uKiBsaXN0X3Blb3BsZSo7IGRvCisJCWlmIFsgLXggIiRpIiBdOyB0aGVuCisJCQlpbnN0YWxsICIkaSIgIiR7RH0vJHtQVEVTVF9QQVRIfSIKKwkJZmkKKwlkb25lCisJY3AgIiR7U30vJHtURVNUX1NSQ19ESVJ9L2FkZHJlc3Nib29rX3BiMi5weSIgIiR7RH0vJHtQVEVTVF9QQVRIfSIKKwljZCAiJG9sZGRpciIKK30KKworUEFDS0FHRV9CRUZPUkVfUE4gPSAiJHtQTn0tY29tcGlsZXIgJHtQTn0tbGl0ZSIKKworRklMRVNfJHtQTn0tY29tcGlsZXIgPSAiJHtiaW5kaXJ9ICR7bGliZGlyfS9saWJwcm90b2Mke1NPTElCU30iCitGSUxFU18ke1BOfS1saXRlID0gIiR7bGliZGlyfS9saWJwcm90b2J1Zi1saXRlJHtTT0xJQlN9IgorCitSREVQRU5EU18ke1BOfS1jb21waWxlciA9ICIke1BOfSIKK1JERVBFTkRTXyR7UE59LWRldiArPSAiJHtQTn0tY29tcGlsZXIiCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24tcHJvdG9idWYnLCAnJywgZCl9IgorCitNSVBTX0lOU1RSVUNUSU9OX1NFVCA9ICJtaXBzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK0xERkxBR1NfYXBwZW5kX2FybSA9ICIgLWxhdG9taWMiCitMREZMQUdTX2FwcGVuZF9taXBzID0gIiAtbGF0b21pYyIKK0xERkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sYXRvbWljIgorTERGTEFHU19hcHBlbmRfbWlwc2VsID0gIiAtbGF0b21pYyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wdWdpeG1sL3B1Z2l4bWxfMS4xMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9wdWdpeG1sL3B1Z2l4bWxfMS4xMC5iYgppbmRleCBkNDhhZDM3Li42OWU2NjI4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHVnaXhtbC9wdWdpeG1sXzEuMTAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B1Z2l4bWwvcHVnaXhtbF8xLjEwLmJiCkBAIC0xMyw2ICsxMyw4IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiZjk3MjM3ZTk5MDgyMDFjNmQ4NTM2MjEwNzQ3YjY2YWYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTVmMzk5ZmJiNDcwOTQyNDEwZDM0ODU4NGRjOTUzYmNhZWM5MjY0MTVkMzQ2MmY0NzFlZjM1MGYyOWI1ODcwYSIKIAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS96ZXV4LyR7QlBOfS9yZWxlYXNlcyIKKwogaW5oZXJpdCBjbWFrZQogCiBFWFRSQV9PRUNNQUtFICs9ICItREJVSUxEX1NIQVJFRF9MSUJTPU9OIFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNwdXNldF8xLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcHVzZXRfMS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjU1YTUxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNwdXNldF8xLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIkNwdXNldCBpcyBhIFB5dGhvbiBhcHBsaWNhdGlvbiB0byBtYWtlIHVzaW5nIHRoZSBjcHVzZXRzIGZhY2lsaXRpZXMgaW4gdGhlIExpbnV4IGtlcm5lbCBlYXNpZXIiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLVNSQ1JFViA9ICI2YzQ2ZDcxYTFjNmVlNzExMDYzMTUzYjlmNzc4NzI4MDEyOGY3MjUyIgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xwZWNoYWNlay9jcHVzZXQuZ2l0O3Byb3RvY29sPWh0dHBzOyIKLQotaW5oZXJpdCBkaXN0dXRpbHMKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgIHB5dGhvbi1jb3JlIFwKLSAgICBweXRob24tcmUgXAotICAgIHB5dGhvbi1sb2dnaW5nIFwKLSAgICBweXRob24tdGV4dHV0aWxzIFwKLSAgICBweXRob24tdW5peGFkbWluIFwKLSAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kaXN0dXRpbHMtZXh0cmEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kaXN0dXRpbHMtZXh0cmEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViODRmNzQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGlzdHV0aWxzLWV4dHJhLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1kaXN0dXRpbHMtZXh0cmEuaW5jCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgcHl0aG9uLWRpc3R1dGlscyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mdXR1cmVzXzMuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZnV0dXJlc18zLjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTYzNmY3My4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mdXR1cmVzXzMuMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlIGNvbmN1cnJlbnQuZnV0dXJlcyBtb2R1bGUgcHJvdmlkZXMgYSBoaWdoLWxldmVsIGludGVyZmFjZSBmb3IgYXN5bmNocm9ub3VzbHkgZXhlY3V0aW5nIGNhbGxhYmxlcy4iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiUFNGIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODM0ZDk4MmY5NzNjNDhiNmQ2NjJiNTk0NGM1YWI1NjciCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYWdyb25ob2xtL3B5dGhvbmZ1dHVyZXMiCi1ERVBFTkRTID0gInB5dGhvbiIKLQotU1JDX1VSSVttZDVzdW1dID0gImI0M2EzOWFlMTQ3NWUzZmQ2OTQwZjJiNGY3MjE0Njc1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlMDMzYWY3NmE1ZTM1ZjU4ZTU2ZGE3YTkxZTY4NzcwNmZhZjRlN2JkZmIyY2JjM2YyY2NhNmI5YmNkYTk3OTQiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzbWluXzIuMi4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNtaW5fMi4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwMGQxZTIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNtaW5fMi4yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJKYXZhU2NyaXB0IG1pbmlmaWVyLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS90aWtpdHUvanNtaW4vIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zYTMzMDFjZTJhZDY0N2UxNzJmNGExMDE2YzY3MzI0ZCIKLQotaW5oZXJpdCBzZXR1cHRvb2xzIHB5cGkKLVNSQ19VUklbbWQ1c3VtXSA9ICIwMGU3YTMxNzlhNDU5MWFhYjJlZTcwN2IzMjE0ZTJmZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNmRmOTliMmNkMWM3NWQ5ZDM0MmU0MzM1YjUzNTc4OWI4ZGE5MTA3ZWM3NDgyMTI3MDZlZjdiYmU1YzI1NTNiIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3QvMDAwMS1weXRob24tcHlvYmplY3QtZml4LWluc3RhbGwtZGlyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0LzAwMDEtcHl0aG9uLXB5b2JqZWN0LWZpeC1pbnN0YWxsLWRpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODQ4Y2RhNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3QvMDAwMS1weXRob24tcHlvYmplY3QtZml4LWluc3RhbGwtZGlyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIxICswLDAgQEAKLUZyb20gOGI0NjQ4ZDViYzUwY2IxYzE0OTYxZWQzOGJmOTdkNWE2OTNmNTIzNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDI0IEp1biAyMDE5IDE0OjUxOjUyICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHB5dGhvbi1weW9iamVjdDogZml4IHRoZSB3cm9uZyBpbnN0YWxsIGRpciBmb3IgcHl0aG9uMgotCi0qIGFmdGVyIHVwZ3JhZGUgdG8gMy4zMi4xLCBweWdvYmplY3Qgc3dpdGNoIHRvIGJ1aWxkIHdpdGggbWVzb24sIGFuZAotICBkZWZhdWx0IHB5dGhvbiBvcHRpb24gaXMgcHl0aG9uMywgc3dpdGNoIHRvIHB5dGhvbjIKLQotKiBkZWZhdWx0IGluc3RhbGwgZGlyIGdldCBieSBweXRob24uaW5zdGFsbF9zb3VyY2VzIGFuZCAKLXB5dGhvbi5nZXRfaW5zdGFsbF9kaXIgaXMgZ2V0IGZyb20gcHl0aG9uJ3Mgc3lzY29uZmlnIGluZm8sCi1ub3QgbGlrZSBweXRob24zLCBmb3IgcHl0aG9uMiwgdGhlIGluc3RhbGwgZGlyIGluY2x1ZGUgdGhlIGJhc2VkaXIgb2YKLXJlY2lwZS1zeXNyb290LW5hdGl2ZSwgYWRkIHN0YWdlZGlyIG9wdGlvbiBmb3IgdXNlciB0byBjb25maWcKLWNvcnJlY3QgaW5zdGFsbCBkaXIuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Utc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnaS9tZXNvbi5idWlsZCAgICAgICAgICAgIHwgNyArKystLS0tCi0gZ2kvb3ZlcnJpZGVzL21lc29uLmJ1aWxkICB8IDQgKystLQotIGdpL3JlcG9zaXRvcnkvbWVzb24uYnVpbGQgfCA0ICsrLS0KLSBtZXNvbi5idWlsZCAgICAgICAgICAgICAgIHwgNCArKystCi0gbWVzb25fb3B0aW9ucy50eHQgICAgICAgICB8IDEgKwotIHB5Z3RrY29tcGF0L21lc29uLmJ1aWxkICAgfCA0ICsrLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDExIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2kvbWVzb24uYnVpbGQgYi9naS9tZXNvbi5idWlsZAotaW5kZXggYzFhZmQ2OC4uMjQ5YzIzZCAxMDA2NDQKLS0tLSBhL2dpL21lc29uLmJ1aWxkCi0rKysgYi9naS9tZXNvbi5idWlsZAotQEAgLTYwLDkgKzYwLDggQEAgcHl0aG9uX3NvdXJjZXMgPSBbCi0gICAndHlwZXMucHknLAotIF0KLSAKLS1weXRob24uaW5zdGFsbF9zb3VyY2VzKHB5dGhvbl9zb3VyY2VzLAotLSAgcHVyZSA6IGZhbHNlLAotLSAgc3ViZGlyIDogJ2dpJwotK2luc3RhbGxfZGF0YShweXRob25fc291cmNlcywKLSsgIGluc3RhbGxfZGlyOiBqb2luX3BhdGhzKHN0YWdlZGlyLCAnZ2knKQotICkKLSAKLSAjIGh0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL2lzc3Vlcy80MTE3Ci1AQCAtNzYsNyArNzUsNyBAQCBnaWV4dCA9IHB5dGhvbi5leHRlbnNpb25fbW9kdWxlKCdfZ2knLCBzb3VyY2VzLAotICAgZGVwZW5kZW5jaWVzIDogW3B5dGhvbl9leHRfZGVwLCBnbGliX2RlcCwgZ2lfZGVwLCBmZmlfZGVwXSwKLSAgIGluY2x1ZGVfZGlyZWN0b3JpZXM6IGluY2x1ZGVfZGlyZWN0b3JpZXMoJy4uJyksCi0gICBpbnN0YWxsOiB0cnVlLAotLSAgc3ViZGlyIDogJ2dpJywKLSsgIGluc3RhbGxfZGlyOiBqb2luX3BhdGhzKHN0YWdlZGlyLCAnZ2knKSwKLSAgIGNfYXJnczogcHlleHRfY19hcmdzICsgbWFpbl9jX2FyZ3MKLSApCi0KLWRpZmYgLS1naXQgYS9naS9vdmVycmlkZXMvbWVzb24uYnVpbGQgYi9naS9vdmVycmlkZXMvbWVzb24uYnVpbGQKLWluZGV4IDZmZjA3M2YuLjk2NGZlZjEgMTAwNjQ0Ci0tLS0gYS9naS9vdmVycmlkZXMvbWVzb24uYnVpbGQKLSsrKyBiL2dpL292ZXJyaWRlcy9tZXNvbi5idWlsZAotQEAgLTEwLDYgKzEwLDYgQEAgcHl0aG9uX3NvdXJjZXMgPSBbCi0gICAna2V5c3ltcy5weScsCi0gICAnX19pbml0X18ucHknXQotIAotLXB5dGhvbi5pbnN0YWxsX3NvdXJjZXMocHl0aG9uX3NvdXJjZXMsCi0tICBzdWJkaXIgOiBqb2luX3BhdGhzKCdnaScsICdvdmVycmlkZXMnKQotK2luc3RhbGxfZGF0YShweXRob25fc291cmNlcywKLSsgIGluc3RhbGxfZGlyOiBqb2luX3BhdGhzKHN0YWdlZGlyLCAnZ2knLCAnb3ZlcnJpZGVzJykKLSApCi1kaWZmIC0tZ2l0IGEvZ2kvcmVwb3NpdG9yeS9tZXNvbi5idWlsZCBiL2dpL3JlcG9zaXRvcnkvbWVzb24uYnVpbGQKLWluZGV4IGZkYzEzNmIuLmZjODhhZGYgMTAwNjQ0Ci0tLS0gYS9naS9yZXBvc2l0b3J5L21lc29uLmJ1aWxkCi0rKysgYi9naS9yZXBvc2l0b3J5L21lc29uLmJ1aWxkCi1AQCAtMSw1ICsxLDUgQEAKLSBweXRob25fc291cmNlcyA9IFsnX19pbml0X18ucHknXQotIAotLXB5dGhvbi5pbnN0YWxsX3NvdXJjZXMocHl0aG9uX3NvdXJjZXMsCi0tICBzdWJkaXIgOiBqb2luX3BhdGhzKCdnaScsICdyZXBvc2l0b3J5JykKLStpbnN0YWxsX2RhdGEocHl0aG9uX3NvdXJjZXMsCi0rICBpbnN0YWxsX2Rpcjogam9pbl9wYXRocyhzdGFnZWRpciwgJ2dpJywgJ3JlcG9zaXRvcnknKQotICkKLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCBkMjdhMDA1Li5lY2Q1NWQ1IDEwMDY0NAotLS0tIGEvbWVzb24uYnVpbGQKLSsrKyBiL21lc29uLmJ1aWxkCi1AQCAtMTY1LDEyICsxNjUsMTQgQEAgZWxzZQotICAgcHlfdmVyc2lvbiA9IHB5Z29iamVjdF92ZXJzaW9uCi0gZW5kaWYKLSAKLStzdGFnZWRpciA9IGdldF9vcHRpb24oJ3N0YWdlZGlyJykKLSsKLSBwa2dpbmZvX2NvbmYgPSBjb25maWd1cmF0aW9uX2RhdGEoKQotIHBrZ2luZm9fY29uZi5zZXQoJ1ZFUlNJT04nLCBweV92ZXJzaW9uKQotIGNvbmZpZ3VyZV9maWxlKGlucHV0IDogJ1BLRy1JTkZPLmluJywKLSAgIG91dHB1dCA6ICdQeUdPYmplY3QtQDBALmVnZy1pbmZvJy5mb3JtYXQocHlfdmVyc2lvbiksCi0gICBjb25maWd1cmF0aW9uIDogcGtnaW5mb19jb25mLAotLSAgaW5zdGFsbF9kaXIgOiBweXRob24uZ2V0X2luc3RhbGxfZGlyKHB1cmUgOiBmYWxzZSkpCi0rICBpbnN0YWxsX2RpciA6IHN0YWdlZGlyKQotIAotIHN1YmRpcignZ2knKQotIHN1YmRpcigncHlndGtjb21wYXQnKQotZGlmZiAtLWdpdCBhL21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKLWluZGV4IDVkZDRjYmMuLjIxZGVmMTYgMTAwNjQ0Ci0tLS0gYS9tZXNvbl9vcHRpb25zLnR4dAotKysrIGIvbWVzb25fb3B0aW9ucy50eHQKLUBAIC0xLDMgKzEsNCBAQAotIG9wdGlvbigncHl0aG9uJywgdHlwZSA6ICdzdHJpbmcnLCB2YWx1ZSA6ICdweXRob24zJykKLSBvcHRpb24oJ3B5Y2Fpcm8nLCB0eXBlIDogJ2Jvb2xlYW4nLCB2YWx1ZSA6IHRydWUsIGRlc2NyaXB0aW9uIDogJ2J1aWxkIHdpdGggcHljYWlybyBpbnRlZ3JhdGlvbicpCi0gb3B0aW9uKCd0ZXN0cycsIHR5cGUgOiAnYm9vbGVhbicsIHZhbHVlIDogdHJ1ZSwgZGVzY3JpcHRpb24gOiAnYnVpbGQgdW5pdCB0ZXN0cycpCi0rb3B0aW9uKCdzdGFnZWRpcicsIHR5cGUgOiAnc3RyaW5nJywgdmFsdWUgOiAnJykKLWRpZmYgLS1naXQgYS9weWd0a2NvbXBhdC9tZXNvbi5idWlsZCBiL3B5Z3RrY29tcGF0L21lc29uLmJ1aWxkCi1pbmRleCA5ZTQzYzQ0Li5lZjMzMjJkIDEwMDY0NAotLS0tIGEvcHlndGtjb21wYXQvbWVzb24uYnVpbGQKLSsrKyBiL3B5Z3RrY29tcGF0L21lc29uLmJ1aWxkCi1AQCAtMyw2ICszLDYgQEAgcHl0aG9uX3NvdXJjZXMgPSBbCi0gICAnZ2VuZXJpY3RyZWVtb2RlbC5weScsCi0gICAncHlndGtjb21wYXQucHknXQotIAotLXB5dGhvbi5pbnN0YWxsX3NvdXJjZXMocHl0aG9uX3NvdXJjZXMsCi0tICBzdWJkaXIgOiAncHlndGtjb21wYXQnCi0raW5zdGFsbF9kYXRhKHB5dGhvbl9zb3VyY2VzLAotKyAgaW5zdGFsbF9kaXI6IGpvaW5fcGF0aHMoc3RhZ2VkaXIsICdweWd0a2NvbXBhdCcpCi0gKQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3RfMy4zNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlnb2JqZWN0XzMuMzQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGNiZDA3Zi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdvYmplY3RfMy4zNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gR09iamVjdCBiaW5kaW5ncyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucHlndGsub3JnLyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IgotCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotaW5oZXJpdCBnbm9tZWJhc2UgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGRpc3R1dGlscy1iYXNlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1ERVBFTkRTICs9ICJweXRob24gZ2xpYi0yLjAiCi0KLVNSQ05BTUUgPSAicHlnb2JqZWN0IgotU1JDX1VSSSA9ICIgXAotICAgIGh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzLyR7U1JDTkFNRX0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovLzAwMDEtcHl0aG9uLXB5b2JqZWN0LWZpeC1pbnN0YWxsLWRpci5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjYTFkYzRmMzFjMWQ2ZDI4Mzc1OGU4ZjMxNWE4OGFiNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4N2UyYzlhYTc4NWYzNTJlZjExMWRjYzVmNjNkZjliODVjZjZlMDVlNTJmZjA0ZjgwM2ZmYmViZGFjZjUyNzFhIgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUID0gImludHJvc3BlY3Rpb24iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJzdGFnZWRpciIKLQotUEFDS0FHRUNPTkZJR1tjYWlyb10gPSAiLURweWNhaXJvPXRydWUsLURweWNhaXJvPWZhbHNlLCBjYWlybyBweXRob24tcHljYWlybywgcHl0aG9uLXB5Y2Fpcm8iCi1QQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItRHRlc3RzPXRydWUsIC1EdGVzdHM9ZmFsc2UsICwgIgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi1EcHl0aG9uPXB5dGhvbjMsIC1EcHl0aG9uPXB5dGhvbjIsICwgIgotUEFDS0FHRUNPTkZJR1tzdGFnZWRpcl0gPSAiLURzdGFnZWRpcj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSwgLURzdGFnZWRpcj0iIiwgLCAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLXBrZ3V0aWwiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIFJlbW92ZSBmaWxlcyB0aGF0IGNsYXNoIHdpdGggcHl0aG9uMy1weWdvYmplY3Q7IHRoZWlyIGNvbnRlbnQgaXMgc2FtZQotICAgIHJtIC1yICR7RH0ke2luY2x1ZGVkaXJ9L3B5Z29iamVjdC0zLjAvcHlnb2JqZWN0LmggJHtEfSR7bGliZGlyfS9wa2djb25maWcKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dG9tbC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRvbWwuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxODA1MzFkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dG9tbC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1TVU1NQVJZID0gIkEgVE9NTC0wLjQuMCBwYXJzZXIvd3JpdGVyIGZvciBQeXRob24iCi1IT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B5dG9tbC8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Y2ZmZjQyMzY5OWJkYWVmMjQzMzE5MzNhYzRmNTYwNzgiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlNTlkZDM2YTU1OWRkMmE4NzZlNGMxNDljNjllOTQ3YiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZWVjZjdjOGQwYWRjZmYzYjM3NWIwOWZlNDAzNDA3YWE5YjY0NWM0OTllNWFiOGNhYzY3MGFjNGEzNWY2MWU3IgotCi1pbmhlcml0IHB5cGkKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0b21sXzAuMS4yMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dG9tbF8wLjEuMjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4ZmE5NTMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0b21sXzAuMS4yMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXB5dG9tbC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeF8xLjEzLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXhfMS4xMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjI2ZTgzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeF8xLjEzLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXguaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13aGljaF8xLjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdoaWNoXzEuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDFmZGM3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdoaWNoXzEuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAid2hpY2gucHkgLS0gYSBwb3J0YWJsZSBHTlUgd2hpY2ggcmVwbGFjZW1lbnQiCi1IT01FUEFHRSA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3Avd2hpY2gvIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0wMzBiMDk3OTg2ODE0ODJiOWFkMTJhYzQ3YmU0OTZlYSIKLQotaW5oZXJpdCBzZXR1cHRvb2xzIHB5cGkgcHl0aG9uLWRpcgotCi1TUkNSRVYgPSAiNDI1YmRlZWIyZDg3YzM2ZTIzMTNkYzRiOGQ2OWZmMmJiNWEwMmVlOSIKLVBZUElfU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3RyZW50bS93aGljaCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgcm1kaXIgLXAgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfQotICAgIHJtZGlyIC1wIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2RhdGFkaXJ9Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9zaXAvc2lwXzQuMTkuMTkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvc2lwL3NpcF80LjE5LjE5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGExNWI4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy9zaXAvc2lwXzQuMTkuMTkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1yZXF1aXJlIHNpcC5pbmMKLQotREVQRU5EUyA9ICJweXRob24iCi0KLWluaGVyaXQgcHl0aG9uLWRpciBweXRob25uYXRpdmUKLQotUEFDS0FHRVMgKz0gInB5dGhvbi1zaXAiCi0KLUZJTEVTX3B5dGhvbi1zaXAgPSAiJHtsaWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy8iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvLmRlYnVnIgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdWZ0cmFjZS91ZnRyYWNlXzAuOS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWRldnRvb2xzL3VmdHJhY2UvdWZ0cmFjZV8wLjkuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGJhNjA3Yy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdWZ0cmFjZS91ZnRyYWNlXzAuOS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotU1VNTUFSWSA9ICJUcmFjZSBhbmQgYW5hbHl6ZSBleGVjdXRpb24gb2YgYSBwcm9ncmFtIHdyaXR0ZW4gaW4gQy9DKysiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbmFtaHl1bmcvdWZ0cmFjZSIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL25hbWh5dW5nL3VmdHJhY2UvaXNzdWVzIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotREVQRU5EUyA9ICJlbGZ1dGlscyIKLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIgotCi1pbmhlcml0IGF1dG90b29scwotCi0jIHYwLjkuMwotU1JDUkVWID0gImU3Nzc4MGU3NTI0YzBhOTdmMjUzMTNiMjA1ODM3MTkxYmJlOTcxMmEiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbmFtaHl1bmcvJHtCUE59IFwKLSAgICAgICAgICAgIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbGFyZ3AiCi0KLWRlZiBzZXRfdGFyZ2V0X2FyY2goZCk6Ci0gICAgaW1wb3J0IHJlCi0gICAgYXJjaCA9IGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpCi0gICAgaWYgcmUubWF0Y2gocidpLjg2JywgYXJjaCwgcmUuSSk6Ci0gICAgICAgIHJldHVybiAnaTM4NicKLSAgICBlbGlmIHJlLm1hdGNoKCdhcm1lYicsIGFyY2gsIHJlLkkpOgotICAgICAgICByZXR1cm4gJ2FybScKLSAgICBlbHNlOgotICAgICAgICByZXR1cm4gYXJjaAotCi1FWFRSQV9VRlRSQUNFX09FQ09ORiA9ICJBUkNIPSR7QHNldF90YXJnZXRfYXJjaChkKX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgd2l0aF9lbGZ1dGlscz0vdXNlL2xpYmVsZi9mcm9tL3N5c3Jvb3QiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICAke1N9L2NvbmZpZ3VyZSAke0VYVFJBX1VGVFJBQ0VfT0VDT05GfQotfQotCi1GSUxFU19TT0xJQlNERVYgPSAiIgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLnNvIgotCi1DT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fGFhcmNoNjR8YXJtKSIKLQotIyB1ZnRyYWNlIHN1cHBvcnRzIGFybXY2IGFuZCBhYm92ZQotQ09NUEFUSUJMRV9IT1NUX2FybXY0ID0gJ251bGwnCi1DT01QQVRJQkxFX0hPU1RfYXJtdjUgPSAnbnVsbCcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy91ZnRyYWNlL3VmdHJhY2VfMC45LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdWZ0cmFjZS91ZnRyYWNlXzAuOS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmZTQ2MWIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMvdWZ0cmFjZS91ZnRyYWNlXzAuOS40LmJiCkBAIC0wLDAgKzEsNDUgQEAKK1NVTU1BUlkgPSAiVHJhY2UgYW5kIGFuYWx5emUgZXhlY3V0aW9uIG9mIGEgcHJvZ3JhbSB3cml0dGVuIGluIEMvQysrIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL25hbWh5dW5nL3VmdHJhY2UiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9uYW1oeXVuZy91ZnRyYWNlL2lzc3VlcyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK0RFUEVORFMgPSAiZWxmdXRpbHMiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGFyZ3Atc3RhbmRhbG9uZSIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworIyB2MC45LjQKK1NSQ1JFViA9ICI1ZTQyMmMwZWM4N2I0MWQxNGU5Y2U4NTI3OTgzNDA2NzE4ZWY2NGUwIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL25hbWh5dW5nLyR7QlBOfSBcCisgICAgICAgICAgICIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0xERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWxhcmdwIgorCitkZWYgc2V0X3RhcmdldF9hcmNoKGQpOgorICAgIGltcG9ydCByZQorICAgIGFyY2ggPSBkLmdldFZhcignVEFSR0VUX0FSQ0gnKQorICAgIGlmIHJlLm1hdGNoKHInaS44NicsIGFyY2gsIHJlLkkpOgorICAgICAgICByZXR1cm4gJ2kzODYnCisgICAgZWxpZiByZS5tYXRjaCgnYXJtZWInLCBhcmNoLCByZS5JKToKKyAgICAgICAgcmV0dXJuICdhcm0nCisgICAgZWxzZToKKyAgICAgICAgcmV0dXJuIGFyY2gKKworRVhUUkFfVUZUUkFDRV9PRUNPTkYgPSAiQVJDSD0ke0BzZXRfdGFyZ2V0X2FyY2goZCl9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpdGhfZWxmdXRpbHM9L3VzZS9saWJlbGYvZnJvbS9zeXNyb290IgorCitkb19jb25maWd1cmUoKSB7CisgICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9VRlRSQUNFX09FQ09ORn0KK30KKworRklMRVNfU09MSUJTREVWID0gIiIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vKi5zbyIKKworQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxhYXJjaDY0fGFybSkiCisKKyMgdWZ0cmFjZSBzdXBwb3J0cyBhcm12NiBhbmQgYWJvdmUKK0NPTVBBVElCTEVfSE9TVF9hcm12NCA9ICdudWxsJworQ09NUEFUSUJMRV9IT1NUX2FybXY1ID0gJ251bGwnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZGV2dG9vbHMveWFzbS95YXNtX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy95YXNtL3lhc21fZ2l0LmJiCmluZGV4IGRjNGZiZjcuLjUzODU2MjYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy95YXNtL3lhc21fZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1kZXZ0b29scy95YXNtL3lhc21fZ2l0LmJiCkBAIC0xMyw3ICsxMyw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHl0aG9ubmF0aXZlCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHB5dGhvbjNuYXRpdmUKIAogQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiQ0NMRF9GT1JfQlVJTEQ9JyR7Q0NfRk9SX0JVSUxEfSciCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ib2luYy9ib2luYy1jbGllbnRfNy4xNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ib2luYy9ib2luYy1jbGllbnRfNy4xNi5iYgppbmRleCAxYjBhZjU1Li5kYjkwZjA2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYm9pbmMvYm9pbmMtY2xpZW50XzcuMTYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2JvaW5jL2JvaW5jLWNsaWVudF83LjE2LmJiCkBAIC0yOSw3ICsyOSw3IEBACiAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2d0aysgbGlibm90aWZ5IHhjYi11dGlsIGxpYnhzY3Juc2F2ZXInLCAnJywgZCl9IFwKICAgICAgICAgICAgbmV0dGxlIFwKICIKLVNSQ1JFViA9ICJhNDMyZTFjY2JmODY0Zjk5YzdiMjlhMTY0NWRlMzgwNTY5MTVmOTQ0IgorU1JDUkVWID0gImUwZTAzM2FmOWZjYTNjY2E4NGEzNDE3ZWE2NTMxYWUyNWJlNzNhN2EiCiBCUkFOQ0ggPSAiY2xpZW50X3JlbGVhc2UvNy8ke1BWfSIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9CT0lOQy9ib2luYztwcm90b2NvbD1odHRwczticmFuY2g9JHtCUkFOQ0h9IFwKICAgICAgICAgICAgZmlsZTovL2JvaW5jLUFNX0NPTkRJVElPTkFMLnBhdGNoIFwKQEAgLTczLDE1ICs3MywxNiBAQAogCXNlZCAtaSAtZSAnc3xec3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Lip8c3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9IiJ8ZycgJHtCfS8ke1RBUkdFVF9TWVN9LWxpYnRvb2wKIAlzZWQgLWkgLWUgJ3N8XnJ1bnBhdGhfdmFyPUxEX1JVTl9QQVRIfHJ1bnBhdGhfdmFyPURJRV9SUEFUSF9ESUV8ZycgJHtCfS8ke1RBUkdFVF9TWVN9LWxpYnRvb2wKIH0KKwogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAJaWYgWyAtZSAke0R9JHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZC9zeXN0ZW0vYm9pbmMtY2xpZW50LnNlcnZpY2UgXTsgdGhlbgotICAgICAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQogCQltdiBcCiAJCSR7RH0ke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kL3N5c3RlbS9ib2luYy1jbGllbnQuc2VydmljZSBcCiAJCSR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2JvaW5jLWNsaWVudC5zZXJ2aWNlCiAJCXJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kL3N5c3RlbSBcCi0gICAgICAgICAgICAgICAgJHtEfSR7bm9uYXJjaF9saWJkaXJ9L3N5c3RlbWQgXAotICAgICAgICAgICAgICAgICR7RH0ke25vbmFyY2hfbGliZGlyfQorCQkke0R9JHtub25hcmNoX2xpYmRpcn0vc3lzdGVtZCBcCisJCSR7RH0ke25vbmFyY2hfbGliZGlyfQogCWZpCiB9CiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9icm90bGkvYnJvdGxpXzEuMC43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Jyb3RsaS9icm90bGlfMS4wLjcuYmIKaW5kZXggZTRlNDU0Yi4uNzBkYmNhZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Jyb3RsaS9icm90bGlfMS4wLjcuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2Jyb3RsaS9icm90bGlfMS4wLjcuYmIKQEAgLTE4LDMgKzE4LDUgQEAKIAkJbXYgLXYgIiR7bGlifSIgIiQoZWNobyAke2xpYn0gfCBzZWQgcy8tc3RhdGljLy8pIgogCWRvbmUKIH0KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2NfMjAxOTExMjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2NfMjAxOTExMjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0ZTU3ZjUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjXzIwMTkxMTI1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotIyBTaWdoLiBUaGlzIGlzIG9uZSBvZiB0aG9zZSBwbGFjZXMgd2hlcmUgZXZlcnlvbmUgbGljZW5zZXMgaXQgZGlmZmVyZW50bHkuIFNvbWVvbmUKLSMgZXZlbiBhcHBseSBVQ0IgdG8gaXQgKEZyZWUvTmV0L09wZW5CU0QpLiBUaGUgbWFpbnRhaW5lciBzdGF0ZXMgdGhhdDoKLSMgIkkndmUgZm91bmQgbm8gcmVsaWFibGUgc291cmNlIHdoaWNoIHN0YXRlcyB0aGF0IGJ5YWNjIG11c3QgYmVhciBhIFVDQiBjb3B5cmlnaHQuIgotIyBTZXR0aW5nIHRvIFBEIGFzIHRoaXMgaXMgd2hhdCB0aGUgdXBzdHJlYW0gaGFzIGl0IGFzLgotCi1MSUNFTlNFID0gIlBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcGFja2FnZS9kZWJpYW4vY29weXJpZ2h0O21kNT0zZWI3YzYzNTQzNGZhZmUyM2VmMzBmYzI2M2U2M2IyZiIKLXJlcXVpcmUgYnlhY2MuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2NzQ1YTRmYmYwNzIzYzRjOTI4MGZjM2U1NjhiM2QxYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNzFjMmViZTM2YWZhYTg0NDhiODBlODkzNDczYTY4MWU2M2EzYjhhNGVkNjM2YzBkNjc1NzgwYTAyNDExY2RlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjXzIwMjAwMzMwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2J5YWNjL2J5YWNjXzIwMjAwMzMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3NTMxMWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvYnlhY2MvYnlhY2NfMjAyMDAzMzAuYmIKQEAgLTAsMCArMSwxMSBAQAorIyBTaWdoLiBUaGlzIGlzIG9uZSBvZiB0aG9zZSBwbGFjZXMgd2hlcmUgZXZlcnlvbmUgbGljZW5zZXMgaXQgZGlmZmVyZW50bHkuIFNvbWVvbmUKKyMgZXZlbiBhcHBseSBVQ0IgdG8gaXQgKEZyZWUvTmV0L09wZW5CU0QpLiBUaGUgbWFpbnRhaW5lciBzdGF0ZXMgdGhhdDoKKyMgIkkndmUgZm91bmQgbm8gcmVsaWFibGUgc291cmNlIHdoaWNoIHN0YXRlcyB0aGF0IGJ5YWNjIG11c3QgYmVhciBhIFVDQiBjb3B5cmlnaHQuIgorIyBTZXR0aW5nIHRvIFBEIGFzIHRoaXMgaXMgd2hhdCB0aGUgdXBzdHJlYW0gaGFzIGl0IGFzLgorCitMSUNFTlNFID0gIlBEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vcGFja2FnZS9kZWJpYW4vY29weXJpZ2h0O21kNT0yNjI4NTdlYzU5MjNmMDczZmEwNmExZjE4MTIyMjVlYSIKK3JlcXVpcmUgYnlhY2MuaW5jCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkZWNmNmU2YjgyZWEyZWZhZTZiYmFkMzJkNzc3N2RhOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMDk5ZTJkZDhhNjg0ZDczOWFjNmI5YTBlNDNkNDY4MzE0YTViYzM0ZmQyMTQ2NjUwMmQxMjBiMThkZjUxZmIwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lLW1hc3RlcmZpbGVzL3B5dGhvbjMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmUtbWFzdGVyZmlsZXMvcHl0aG9uMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmY2NzAxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lLW1hc3RlcmZpbGVzL3B5dGhvbjMucGF0Y2gKQEAgLTAsMCArMSwxNiBAQAorLS0tIGEvbW9kdWxlcy9wYWNrYWdlcy9hcHRfZ2V0CisrKysgYi9tb2R1bGVzL3BhY2thZ2VzL2FwdF9nZXQKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Zhci9jZmVuZ2luZS9iaW4vcHl0aG9uCisrIyEvdmFyL2NmZW5naW5lL2Jpbi9weXRob24zCisgCisgaW1wb3J0IHN5cworIGltcG9ydCBvcworLS0tIGEvbW9kdWxlcy9wYWNrYWdlcy9hcHRfZ2V0LmluCisrKysgYi9tb2R1bGVzL3BhY2thZ2VzL2FwdF9nZXQuaW4KK0BAIC0xLDQgKzEsNCBAQAorLSMhQGJpbmRpckAvcHl0aG9uCisrIyFAYmluZGlyQC9weXRob24zCisgCisgaW1wb3J0IHN5cworIGltcG9ydCBvcwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lLW1hc3RlcmZpbGVzXzMuMTIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jZmVuZ2luZS9jZmVuZ2luZS1tYXN0ZXJmaWxlc18zLjEyLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkYTZhZjkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lLW1hc3RlcmZpbGVzXzMuMTIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLSMKLSMgQ29weXJpZ2h0IChDKSAyMDE0IC0gMjAxNyBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KLSMKLVNVTU1BUlkgPSAiQmFzZSBwb2xpY3kgZm9yIENGRW5naW5lIgotCi1ERVNDUklQVElPTiA9ICJDRkVuZ2luZSBpcyBhbiBJVCBpbmZyYXN0cnVjdHVyZSBhdXRvbWF0aW9uIGZyYW1ld29yayBcCi10aGF0IGhlbHBzIGVuZ2luZWVycywgc3lzdGVtIGFkbWluaXN0cmF0b3JzIGFuZCBvdGhlciBzdGFrZWhvbGRlcnMgXAotaW4gYW4gSVQgc3lzdGVtIHRvIG1hbmFnZSBhbmQgdW5kZXJzdGFuZCBJVCBpbmZyYXN0cnVjdHVyZSB0aHJvdWdob3V0IFwKLWl0cyBsaWZlY3ljbGUuIENGRW5naW5lIHRha2VzIHN5c3RlbXMgZnJvbSBCdWlsZCB0byBEZXBsb3ksIE1hbmFnZSBhbmQgQXVkaXQuIFwKLSBcCi1UaGlzIHBhY2thZ2UgaXMgaW50ZW5kZWQgdG8gcHJvdmlkZSBhIHN0YWJsZSBiYXNlIHBvbGljeSBmb3IgXAotaW5zdGFsbGF0aW9ucyBhbmQgdXBncmFkZXMsIGFuZCBpcyB1c2VkIGJ5IENGRW5naW5lIDMuNiBhbmQgbmV3ZXIuIFwKLSBcCi1UaGUgY29udGVudHMgb2YgdGhpcyBwYWNrZ2UgYXJlIGludGVuZGVkIHRvIGxpdmUgaW4gYC92YXIvY2ZlbmdpbmUvbWFzdGVyZmlsZXNgIFwKLW9yIHdoZXJldmVyIGAkKHN5cy5tYXN0ZXJkaXIpYCBwb2ludHMuIFwKLSIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2NmZW5naW5lLmNvbSIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05Zjc2NDI2ZjllZjhjNmY2NzM5ZmFkZDIxZDgxN2E0ZiIKLQotU1JDX1VSSSA9ICJodHRwczovL2NmZW5naW5lLXBhY2thZ2UtcmVwb3MuczMuYW1hem9uYXdzLmNvbS90YXJiYWxscy8ke0JQfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkNTliZDhjOTU2MjBkYTgxNmMzODJmNzQ5ZDQyNTg2MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxYzUwZTNkOGM3MDIwOTdlMTNhMjEyNTg2MjZkOTM2ZDZmZjJlNjQ5MmU4OTNkZmUyODZmZjBkNjIwNGQ3YTY1IgotCi1pbmhlcml0IGF1dG90b29scwotCi1leHBvcnQgRVhQTElDSVRfVkVSU0lPTj0iJHtQVn0iCi0KLUVYVFJBX09FQ09ORiA9ICItLXByZWZpeD0ke2RhdGFkaXJ9L2NmZW5naW5lIgotCi1GSUxFU18ke1BOfSA9ICIke2RhdGFkaXJ9L2NmZW5naW5lIgotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWNvcmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmUtbWFzdGVyZmlsZXNfMy4xNS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lLW1hc3RlcmZpbGVzXzMuMTUuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNWFjODU1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lLW1hc3RlcmZpbGVzXzMuMTUuMC5iYgpAQCAtMCwwICsxLDQxIEBACisjCisjIENvcHlyaWdodCAoQykgMjAxNCAtIDIwMTcgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCisjCitTVU1NQVJZID0gIkJhc2UgcG9saWN5IGZvciBDRkVuZ2luZSIKKworREVTQ1JJUFRJT04gPSAiQ0ZFbmdpbmUgaXMgYW4gSVQgaW5mcmFzdHJ1Y3R1cmUgYXV0b21hdGlvbiBmcmFtZXdvcmsgXAordGhhdCBoZWxwcyBlbmdpbmVlcnMsIHN5c3RlbSBhZG1pbmlzdHJhdG9ycyBhbmQgb3RoZXIgc3Rha2Vob2xkZXJzIFwKK2luIGFuIElUIHN5c3RlbSB0byBtYW5hZ2UgYW5kIHVuZGVyc3RhbmQgSVQgaW5mcmFzdHJ1Y3R1cmUgdGhyb3VnaG91dCBcCitpdHMgbGlmZWN5Y2xlLiBDRkVuZ2luZSB0YWtlcyBzeXN0ZW1zIGZyb20gQnVpbGQgdG8gRGVwbG95LCBNYW5hZ2UgYW5kIEF1ZGl0LiBcCisgXAorVGhpcyBwYWNrYWdlIGlzIGludGVuZGVkIHRvIHByb3ZpZGUgYSBzdGFibGUgYmFzZSBwb2xpY3kgZm9yIFwKK2luc3RhbGxhdGlvbnMgYW5kIHVwZ3JhZGVzLCBhbmQgaXMgdXNlZCBieSBDRkVuZ2luZSAzLjYgYW5kIG5ld2VyLiBcCisgXAorVGhlIGNvbnRlbnRzIG9mIHRoaXMgcGFja2dlIGFyZSBpbnRlbmRlZCB0byBsaXZlIGluIGAvdmFyL2NmZW5naW5lL21hc3RlcmZpbGVzYCBcCitvciB3aGVyZXZlciBgJChzeXMubWFzdGVyZGlyKWAgcG9pbnRzLiBcCisiCisKK0hPTUVQQUdFID0gImh0dHA6Ly9jZmVuZ2luZS5jb20iCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OWY3NjQyNmY5ZWY4YzZmNjczOWZhZGQyMWQ4MTdhNGYiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9jZmVuZ2luZS1wYWNrYWdlLXJlcG9zLnMzLmFtYXpvbmF3cy5jb20vdGFyYmFsbHMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3B5dGhvbjMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNmQ0NTZmZGQ5YmQyNGZmNjYxN2VlYWEwNWVmYWU2MDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGEwNzFjMGM0YmE3ZGY5YmFkOTMxNDRjZmY1ZmJjMDU2NmU1MTcyYWZkNjYyMDEwNzJlMzE5M2I3NmM1NWEzOCIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworZXhwb3J0IEVYUExJQ0lUX1ZFUlNJT049IiR7UFZ9IgorCitFWFRSQV9PRUNPTkYgPSAiLS1wcmVmaXg9JHtkYXRhZGlyfS9jZmVuZ2luZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgcm0gLXJmICR7RH0ke2RhdGFkaXJ9L2NmZW5naW5lL21vZHVsZXMvcGFja2FnZXMvenlwcGVyICR7RH0ke2RhdGFkaXJ9L2NmZW5naW5lL21vZHVsZXMvcGFja2FnZXMveXVtCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7ZGF0YWRpcn0vY2ZlbmdpbmUiCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLWNvcmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmVfMy4xMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lXzMuMTIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQwMTIzZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmVfMy4xMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTQgLSAyMDE3IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgotIwotU1VNTUFSWSA9ICJDRkVuZ2luZSBpcyBhbiBJVCBpbmZyYXN0cnVjdHVyZSBhdXRvbWF0aW9uIGZyYW1ld29yayIKLQotREVTQ1JJUFRJT04gPSAiQ0ZFbmdpbmUgaXMgYW4gSVQgaW5mcmFzdHJ1Y3R1cmUgYXV0b21hdGlvbiBmcmFtZXdvcmsgXAotdGhhdCBoZWxwcyBlbmdpbmVlcnMsIHN5c3RlbSBhZG1pbmlzdHJhdG9ycyBhbmQgb3RoZXIgc3Rha2Vob2xkZXJzIFwKLWluIGFuIElUIHN5c3RlbSB0byBtYW5hZ2UgYW5kIHVuZGVyc3RhbmQgSVQgaW5mcmFzdHJ1Y3R1cmUgdGhyb3VnaG91dCBcCi1pdHMgbGlmZWN5Y2xlLiBDRkVuZ2luZSB0YWtlcyBzeXN0ZW1zIGZyb20gQnVpbGQgdG8gRGVwbG95LCBNYW5hZ2UgYW5kIEF1ZGl0LiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2NmZW5naW5lLmNvbSIKLQotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY4YjM0ODI4YWIzNzNkNmIxYmI0YjBmYzYwYTc4NDk0IgotCi1ERVBFTkRTID0gImF0dHIgdG9reW9jYWJpbmV0IgotCi1TUkNfVVJJID0gImh0dHBzOi8vY2ZlbmdpbmUtcGFja2FnZS1yZXBvcy5zMy5hbWF6b25hd3MuY29tL3RhcmJhbGxzLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9zZXQtcGF0aC1vZi1kZWZhdWx0LWNvbmZpZy1maWxlLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzNlZjEyMjYwZGI0YjQzMDM1MjIyOWYzN2Y3Y2IwZTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDcxYmE5OGEyNzIzOTBjNmZhOGJjMjBlOGVhMjdmMDA1MGEwYTcyYTNlNmIyMDZhNDc2MmI0NjQ2YmUzMzJlYyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgc3lzdGVtZAotCi1leHBvcnQgRVhQTElDSVRfVkVSU0lPTj0iJHtQVn0iCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjZmVuZ2luZTMuc2VydmljZSBjZi1hcGFjaGUuc2VydmljZSBjZi1odWIuc2VydmljZSBjZi1wb3N0Z3Jlcy5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjZi1ydW5hbGVydHMuc2VydmljZSBjZi1leGVjZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBjZi1tb25pdG9yZC5zZXJ2aWNlICBjZi1zZXJ2ZXJkLnNlcnZpY2UgXAotIgotU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfSA9ICJkaXNhYmxlIgotCi1QQUNLQUdFQ09ORklHID8/PSAibGlicGNyZSBvcGVuc3NsIFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0gc3lzdGVtZCcsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW2xpYnhtbDJdID0gIi0td2l0aC1saWJ4bWwyPXllcywtLXdpdGgtbGlieG1sMj1ubyxsaWJ4bWwyLCIKLVBBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0td2l0aC1teXNxbD15ZXMsLS13aXRoLW15c3FsPW5vLG15c3FsLCIKLVBBQ0tBR0VDT05GSUdbcG9zdGdyZXNxbF0gPSAiLS13aXRoLXBvc3RncmVzcWw9eWVzLC0td2l0aC1wb3N0Z3Jlc3FsPW5vLHBvc3RncmVzcWwsIgotUEFDS0FHRUNPTkZJR1thY2xdID0gIi0td2l0aC1saWJhY2w9eWVzLC0td2l0aC1saWJhY2w9bm8sYWNsLCIKLVBBQ0tBR0VDT05GSUdbbGlidmlydF0gPSAiLS13aXRoLWxpYnZpcnQ9eWVzLC0td2l0aC1saWJ2aXJ0PW5vLGxpYnZpcnQsIgotUEFDS0FHRUNPTkZJR1tsaWJwY3JlXSA9ICItLXdpdGgtcGNyZT15ZXMsLS13aXRoLXBjcmU9bm8sbGlicGNyZSwiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsPXllcywtLXdpdGgtb3BlbnNzbD1ubyxvcGVuc3NsLCIKLVBBQ0tBR0VDT05GSUdbcGFtXSA9ICItLXdpdGgtcGFtPXllcywtLXdpdGgtcGFtPW5vLGxpYnBhbSwiCi1QQUNLQUdFQ09ORklHW2xpYnlhbWxdID0gIi0td2l0aC1saWJ5YW1sLC0td2l0aG91dC1saWJ5YW1sLGxpYnlhbWwsIgotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzdGVtZC1zZXJ2aWNlPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0sLS13aXRob3V0LXN5c3RlbWQtc2VydmljZSIKLVBBQ0tBR0VDT05GSUdbbGliY3VybF0gPSAiLS13aXRoLWxpYmN1cmwsLS13aXRob3V0LWxpYmN1cmwsY3VybCwiCi0KLUVYVFJBX09FQ09ORiA9ICJod19jdl9mdW5jX3ZhX2NvcHk9eWVzIC0td2l0aC1pbml0LXNjcmlwdD0ke3N5c2NvbmZkaXJ9L2luaXQuZCAtLXdpdGgtdG9reW9jYWJpbmV0IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9LyR7QlBOfS9iaW4KLSAgICBmb3IgZiBpbiBgbHMgJHtEfSR7YmluZGlyfWA7IGRvCi0gICAgICAgIGxuIC1zICR7YmluZGlyfS9gYmFzZW5hbWUgJGZgICR7RH0ke2xvY2Fsc3RhdGVkaXJ9LyR7QlBOfS9iaW4vCi0gICAgZG9uZQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0Ci0gICAgY2F0IDw8IEVPRiA+ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvY2ZlbmdpbmUzCi1SVU5fQ0ZfU0VSVkVSRD0xCi1SVU5fQ0ZfRVhFQ0Q9MQotUlVOX0NGX01PTklUT1JEPTEKLVJVTl9DRl9IVUI9MAotRU9GCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgLUQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NmZW5naW5lMyAke0R9JHtkYXRhZGlyfS8ke0JQTn0vY2ZlbmdpbmUzCi0gICAgICAgIHNlZCAtaSAtZSAncyMvZXRjL2luaXQuZCMke2RhdGFkaXJ9LyR7QlBOfSMnICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Lyouc2VydmljZQotICAgIGZpCi19Ci0KLVJERVBFTkRTXyR7UE59ICs9ICIke0JQTn0tbWFzdGVyZmlsZXMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY2ZlbmdpbmUvY2ZlbmdpbmVfMy4xNS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lXzMuMTUuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDE0NmJmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NmZW5naW5lL2NmZW5naW5lXzMuMTUuMC5iYgpAQCAtMCwwICsxLDcyIEBACisjCisjIENvcHlyaWdodCAoQykgMjAxNCAtIDIwMTcgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCisjCitTVU1NQVJZID0gIkNGRW5naW5lIGlzIGFuIElUIGluZnJhc3RydWN0dXJlIGF1dG9tYXRpb24gZnJhbWV3b3JrIgorCitERVNDUklQVElPTiA9ICJDRkVuZ2luZSBpcyBhbiBJVCBpbmZyYXN0cnVjdHVyZSBhdXRvbWF0aW9uIGZyYW1ld29yayBcCit0aGF0IGhlbHBzIGVuZ2luZWVycywgc3lzdGVtIGFkbWluaXN0cmF0b3JzIGFuZCBvdGhlciBzdGFrZWhvbGRlcnMgXAoraW4gYW4gSVQgc3lzdGVtIHRvIG1hbmFnZSBhbmQgdW5kZXJzdGFuZCBJVCBpbmZyYXN0cnVjdHVyZSB0aHJvdWdob3V0IFwKK2l0cyBsaWZlY3ljbGUuIENGRW5naW5lIHRha2VzIHN5c3RlbXMgZnJvbSBCdWlsZCB0byBEZXBsb3ksIE1hbmFnZSBhbmQgQXVkaXQuIgorCitIT01FUEFHRSA9ICJodHRwOi8vY2ZlbmdpbmUuY29tIgorCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjMzYWEyNWU1Mzk4MzIzN2NmMGJkNGMyMzhhZjI1NWYiCisKK0RFUEVORFMgPSAiYXR0ciB0b2t5b2NhYmluZXQgYmlzb24tbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHBzOi8vY2ZlbmdpbmUtcGFja2FnZS1yZXBvcy5zMy5hbWF6b25hd3MuY29tL3RhcmJhbGxzLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9zZXQtcGF0aC1vZi1kZWZhdWx0LWNvbmZpZy1maWxlLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImQ0ZGFiZmE0NmQ4YWZhMTUxYmU1NjEwZjE4NDM1NGU3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZhNTNlMTM3Zjg1MGViMjY4YThlN2FlNDU3OGI1ZGI1ZGMzODM2NTYzNDFmNTA1M2RjMWEzNTNlZDAyODgyNjUiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBzeXN0ZW1kCisKK2V4cG9ydCBFWFBMSUNJVF9WRVJTSU9OPSIke1BWfSIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImNmZW5naW5lMy5zZXJ2aWNlIGNmLWFwYWNoZS5zZXJ2aWNlIGNmLWh1Yi5zZXJ2aWNlIGNmLXBvc3RncmVzLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGNmLXJ1bmFsZXJ0cy5zZXJ2aWNlIGNmLWV4ZWNkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGNmLW1vbml0b3JkLnNlcnZpY2UgIGNmLXNlcnZlcmQuc2VydmljZSBcCisiCitTWVNURU1EX0FVVE9fRU5BQkxFXyR7UE59ID0gImRpc2FibGUiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJsaWJwY3JlIG9wZW5zc2wgXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbSBzeXN0ZW1kJywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbbGlieG1sMl0gPSAiLS13aXRoLWxpYnhtbDI9eWVzLC0td2l0aC1saWJ4bWwyPW5vLGxpYnhtbDIsIgorUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS13aXRoLW15c3FsPXllcywtLXdpdGgtbXlzcWw9bm8sbXlzcWwsIgorUEFDS0FHRUNPTkZJR1twb3N0Z3Jlc3FsXSA9ICItLXdpdGgtcG9zdGdyZXNxbD15ZXMsLS13aXRoLXBvc3RncmVzcWw9bm8scG9zdGdyZXNxbCwiCitQQUNLQUdFQ09ORklHW2FjbF0gPSAiLS13aXRoLWxpYmFjbD15ZXMsLS13aXRoLWxpYmFjbD1ubyxhY2wsIgorUEFDS0FHRUNPTkZJR1tsaWJ2aXJ0XSA9ICItLXdpdGgtbGlidmlydD15ZXMsLS13aXRoLWxpYnZpcnQ9bm8sbGlidmlydCwiCitQQUNLQUdFQ09ORklHW2xpYnBjcmVdID0gIi0td2l0aC1wY3JlPXllcywtLXdpdGgtcGNyZT1ubyxsaWJwY3JlLCIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2w9eWVzLC0td2l0aC1vcGVuc3NsPW5vLG9wZW5zc2wsIgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1wYW09eWVzLC0td2l0aC1wYW09bm8sbGlicGFtLCIKK1BBQ0tBR0VDT05GSUdbbGlieWFtbF0gPSAiLS13aXRoLWxpYnlhbWwsLS13aXRob3V0LWxpYnlhbWwsbGlieWFtbCwiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kLXNlcnZpY2U9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSwtLXdpdGhvdXQtc3lzdGVtZC1zZXJ2aWNlIgorUEFDS0FHRUNPTkZJR1tsaWJjdXJsXSA9ICItLXdpdGgtbGliY3VybCwtLXdpdGhvdXQtbGliY3VybCxjdXJsLCIKKworRVhUUkFfT0VDT05GID0gImh3X2N2X2Z1bmNfdmFfY29weT15ZXMgLS13aXRoLWluaXQtc2NyaXB0PSR7c3lzY29uZmRpcn0vaW5pdC5kIC0td2l0aC10b2t5b2NhYmluZXQiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vJHtCUE59L2JpbgorICAgIGZvciBmIGluIGBscyAke0R9JHtiaW5kaXJ9YDsgZG8KKyAgICAgICAgbG4gLXMgJHtiaW5kaXJ9L2BiYXNlbmFtZSAkZmAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vJHtCUE59L2Jpbi8KKyAgICBkb25lCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKyAgICBjYXQgPDwgRU9GID4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9jZmVuZ2luZTMKK1JVTl9DRl9TRVJWRVJEPTEKK1JVTl9DRl9FWEVDRD0xCitSVU5fQ0ZfTU9OSVRPUkQ9MQorUlVOX0NGX0hVQj0wCitFT0YKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLW0gMDc1NSAtRCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY2ZlbmdpbmUzICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9jZmVuZ2luZTMKKyAgICAgICAgc2VkIC1pIC1lICdzIy9ldGMvaW5pdC5kIyR7ZGF0YWRpcn0vJHtCUE59IycgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vKi5zZXJ2aWNlCisgICAgZmkKKyAgICBybSAtcmYgJHtEfSR7ZGF0YWRpcn0vY2ZlbmdpbmUvbW9kdWxlcy9wYWNrYWdlcy96eXBwZXIKK30KKworUkRFUEVORFNfJHtQTn0gKz0gIiR7QlBOfS1tYXN0ZXJmaWxlcyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLVJlbW92ZS1pbmNsdWRpbmctc3lzLXN5c2N0bC5oLW9uLWdsaWJjLWJhc2VkLXN5c3RlbXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGQvMDAwMS1SZW1vdmUtaW5jbHVkaW5nLXN5cy1zeXNjdGwuaC1vbi1nbGliYy1iYXNlZC1zeXN0ZW1zLnBhdGNoCmluZGV4IDNkZWUzNGMuLjc5NDg3ODggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLVJlbW92ZS1pbmNsdWRpbmctc3lzLXN5c2N0bC5oLW9uLWdsaWJjLWJhc2VkLXN5c3RlbXMucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkLzAwMDEtUmVtb3ZlLWluY2x1ZGluZy1zeXMtc3lzY3RsLmgtb24tZ2xpYmMtYmFzZWQtc3lzdGVtcy5wYXRjaApAQCAtMyw4MCArMywyOSBAQAogRGF0ZTogU2F0LCAyNyBKdWwgMjAxOSAxNDoyMDoxNCAtMDcwMAogU3ViamVjdDogW1BBVENIXSBSZW1vdmUgaW5jbHVkaW5nIHN5cy9zeXNjdGwuaCBvbiBnbGliYyBiYXNlZCBzeXN0ZW1zCiAKLUdsaWJjIDIuMzAgaGFzIGFkZGVkIGRlcHJlY2F0aW9uIG5vdGljZSBhbmQgY29sbGVjdGQgZGV0ZWN0cyBpdCBhcyB3YXJuaW5nIFsxXQorR2xpYmMgMi4zMCBoYXMgYWRkZWQgZGVwcmVjYXRpb24gbm90aWNlIGFuZCBjb2xsZWN0ZCBkZXRlY3RzIGl0IGFzCit3YXJuaW5nIFsxXQogCiBGaXhlcwotc3lzL3N5c2N0bC5oOjIxOjI6IGVycm9yOiAiVGhlIDxzeXMvc3lzY3RsLmg+IGhlYWRlciBpcyBkZXByZWNhdGVkIGFuZCB3aWxsIGJlIHJlbW92ZWQuIiBbLVdlcnJvciwtVyN3YXJuaW5nc10KK3N5cy9zeXNjdGwuaDoyMToyOiBlcnJvcjogIlRoZSA8c3lzL3N5c2N0bC5oPiBoZWFkZXIgaXMgZGVwcmVjYXRlZCBhbmQKK3dpbGwgYmUgcmVtb3ZlZC4iIFstV2Vycm9yLC1XI3dhcm5pbmdzXQogCi1bMV0gaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvP3A9Z2xpYmMuZ2l0O2E9Y29tbWl0O2g9NzQ0ZTgyOTYzNzE2MmJiN2Q1MDI5NjMyYWFjZjM0MWM2NGI4Njk5MAorWzFdCitodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD1nbGliYy5naXQ7YT1jb21taXQ7aD03NDRlODI5NjM3MTYyYmI3ZDUwMjk2MzJhYWNmMzQxYzY0Yjg2OTkwCiAKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vY29sbGVjdGQvY29sbGVjdGQvcHVsbC8zMjM0XQorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK1todHRwczovL2dpdGh1Yi5jb20vY29sbGVjdGQvY29sbGVjdGQvcHVsbC8zMjM0XQogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIC0tLQotIHNyYy9jb250ZXh0c3dpdGNoLmMgfCAyICstCi0gc3JjL21lbW9yeS5jICAgICAgICB8IDIgKy0KLSBzcmMvc3dhcC5jICAgICAgICAgIHwgMiArLQotIHNyYy91dWlkLmMgICAgICAgICAgfCAyICstCi0gNCBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisgc3JjL3Byb2Nlc3Nlcy5jIHwgMiArLQorIHNyYy91cHRpbWUuYyAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotLS0tIGEvc3JjL2NvbnRleHRzd2l0Y2guYwotKysrIGIvc3JjL2NvbnRleHRzd2l0Y2guYwotQEAgLTI2LDcgKzI2LDcgQEAKLSAjaW5jbHVkZSAiY29tbW9uLmgiCi0gI2luY2x1ZGUgInBsdWdpbi5oIgotIAotLSNpZmRlZiBIQVZFX1NZU19TWVNDVExfSAotKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1NZU0NUTF9IKSAmJiAhZGVmaW5lZChfX0dMSUJDX18pCi0gI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KLSAjZW5kaWYKLSAKLS0tLSBhL3NyYy9tZW1vcnkuYwotKysrIGIvc3JjL21lbW9yeS5jCi1AQCAtMjgsNyArMjgsNyBAQAotICNpbmNsdWRlICJjb21tb24uaCIKLSAjaW5jbHVkZSAicGx1Z2luLmgiCi0gCi0tI2lmZGVmIEhBVkVfU1lTX1NZU0NUTF9ICi0rI2lmIGRlZmluZWQoSEFWRV9TWVNfU1lTQ1RMX0gpICYmICFkZWZpbmVkKF9fR0xJQkNfXykKLSAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgotICNlbmRpZgotICNpZmRlZiBIQVZFX1NZU19WTU1FVEVSX0gKLS0tLSBhL3NyYy9zd2FwLmMKLSsrKyBiL3NyYy9zd2FwLmMKLUBAIC00OSw3ICs0OSw3IEBACi0gI2lmIEhBVkVfU1lTX1BBUkFNX0gKLSAjaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0gI2VuZGlmCi0tI2lmIEhBVkVfU1lTX1NZU0NUTF9ICi0rI2lmIGRlZmluZWQoSEFWRV9TWVNfU1lTQ1RMX0gpICYmICFkZWZpbmVkKF9fR0xJQkNfXykKLSAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgotICNlbmRpZgotICNpZiBIQVZFX1NZU19ES1NUQVRfSAotLS0tIGEvc3JjL3V1aWQuYwotKysrIGIvc3JjL3V1aWQuYwotQEAgLTI5LDcgKzI5LDcgQEAKLSAjaW5jbHVkZSAiY29tbW9uLmgiCi0gI2luY2x1ZGUgInBsdWdpbi5oIgotIAotLSNpZiBIQVZFX1NZU19TWVNDVExfSAotKyNpZiBkZWZpbmVkKEhBVkVfU1lTX1NZU0NUTF9IKSAmJiAhZGVmaW5lZChfX0dMSUJDX18pCi0gI2luY2x1ZGUgPHN5cy9zeXNjdGwuaD4KLSAjZW5kaWYKLSAKLS0tLSBhL3NyYy9jcHUuYwotKysrIGIvc3JjL2NwdS5jCi1AQCAtNjAsNyArNjAsNyBAQAotIAotICNpZiAoZGVmaW5lZChIQVZFX1NZU0NUTCkgJiYgSEFWRV9TWVNDVEwpIHx8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgIChkZWZpbmVkKEhBVkVfU1lTQ1RMQllOQU1FKSAmJiBIQVZFX1NZU0NUTEJZTkFNRSkKLS0jaWZkZWYgSEFWRV9TWVNfU1lTQ1RMX0gKLSsjaWYgZGVmaW5lZChIQVZFX1NZU19TWVNDVExfSCkgJiYgIWRlZmluZWQoX19HTElCQ19fKQotICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+Ci0gI2VuZGlmCi0gCitkaWZmIC0tZ2l0IGEvc3JjL3Byb2Nlc3Nlcy5jIGIvc3JjL3Byb2Nlc3Nlcy5jCitpbmRleCBmODM5MTNhLi45ZjcxNTExIDEwMDY0NAogLS0tIGEvc3JjL3Byb2Nlc3Nlcy5jCiArKysgYi9zcmMvcHJvY2Vzc2VzLmMKLUBAIC04Miw3ICs4Miw3IEBACitAQCAtODcsNyArODcsNyBAQAogICNpZiBIQVZFX01BQ0hfVk1fUFJPVF9ICiAgI2luY2x1ZGUgPG1hY2gvdm1fcHJvdC5oPgogICNlbmRpZgpAQCAtODUsNiArMzQsOCBAQAogICNpbmNsdWRlIDxzeXMvc3lzY3RsLmg+CiAgI2VuZGlmCiAgLyogI2VuZGlmIEhBVkVfVEhSRUFEX0lORk8gKi8KK2RpZmYgLS1naXQgYS9zcmMvdXB0aW1lLmMgYi9zcmMvdXB0aW1lLmMKK2luZGV4IDA4OTJiZGEuLjRiMTUxNTAgMTAwNjQ0CiAtLS0gYS9zcmMvdXB0aW1lLmMKICsrKyBiL3NyYy91cHRpbWUuYwogQEAgLTMzLDcgKzMzLDcgQEAKQEAgLTk2LDMgKzQ3LDcgQEAKICAjaW5jbHVkZSA8c3lzL3N5c2N0bC5oPgogIC8qIFVzaW5nIHN5c2N0bCBpbnRlcmZhY2UgdG8gcmV0cmlldmUgdGhlIGJvb3QgdGltZSBvbiAqQlNEIC8gRGFyd2luIC8gT1MgWAogICAqIHN5c3RlbXMgKi8KKyAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLWNvbmRpdGlvbmFsbHktY2hlY2stbGlidmlydC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLWNvbmRpdGlvbmFsbHktY2hlY2stbGlidmlydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWVlNzVjYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGQvMDAwMS1jb25kaXRpb25hbGx5LWNoZWNrLWxpYnZpcnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tIDM4NWJmMWMyZWM1Nzk0MmUxN2VlNTI5ZTU3ZWVmMGRjZDk5OTA0ZTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3kgTGkgPHJvbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDEgU2VwIDIwMTUgMTc6MDA6MzMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gW1BBVENIXSBjb25kaXRpb25hbGx5IGNoZWNrIGxpYnZpcnQKLQotVXBzdHJlYW0tU3RhdHVlOiBQZW5kaW5nCi0KLWNoZWNrIGlmIGxpYnZpcnQgaXMgYXZhaWxhYmxlIG9ubHkgd2hlbiBhIHVzZXIgd2FudHMgdG8gdXNlIGxpYnZpcnQKLQotU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBjb25maWd1cmUuYWMgfCAxMyArKysrKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMTAxZDZmOWYuLmE3ZWNhOTdkIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC01NzU4LDExICs1NzU4LDE0IEBAIGVsc2UKLSAgIHdpdGhfbGlieG1sMj0ibm8gKHBrZy1jb25maWcgZG9lc24ndCBrbm93IGxpYnhtbC0yLjApIgotIGZpCi0gCi0tJFBLR19DT05GSUcgLS1leGlzdHMgbGlidmlydCAyPi9kZXYvbnVsbAotLWlmIHRlc3QgJD8gPSAwOyB0aGVuCi0tICB3aXRoX2xpYnZpcnQ9InllcyIKLS1lbHNlCi0tICB3aXRoX2xpYnZpcnQ9Im5vIChwa2ctY29uZmlnIGRvZXNuJ3Qga25vdyBsaWJ2aXJ0KSIKLStpZiB0ZXN0ICJ4JGVuYWJsZV9saWJ2aXJ0IiA9ICJ4eWVzIjsgdGhlbgotKwkkUEtHX0NPTkZJRyAtLWV4aXN0cyBsaWJ2aXJ0IDI+L2Rldi9udWxsCi0rCWlmIHRlc3QgIiQ/IiA9ICIwIgotKwl0aGVuCi0rCQl3aXRoX2xpYnZpcnQ9InllcyIKLSsJZWxzZQotKwkJd2l0aF9saWJ2aXJ0PSJubyAocGtnLWNvbmZpZyBkb2Vzbid0IGtub3cgbGlidmlydCkiCi0rCWZpCi0gZmkKLSAKLSBpZiB0ZXN0ICJ4JHdpdGhfbGlieG1sMiIgPSAieHllcyI7IHRoZW4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGQvMDAwMS1jb25maWd1cmUtQ2hlY2stZm9yLVduby1lcnJvci1mb3JtYXQtdHJ1bmNhdGlvbi1jb21wLnBhdGNoCmluZGV4IGQyYzcyNjguLjhkMzFlMTIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkLzAwMDEtY29uZmlndXJlLUNoZWNrLWZvci1Xbm8tZXJyb3ItZm9ybWF0LXRydW5jYXRpb24tY29tcC5wYXRjaApAQCAtMjMsOSArMjMsOSBAQAogaW5kZXggYTdlY2E5N2QuLjU2MGViOTg4IDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKLUBAIC02Nzk0LDYgKzY3OTQsNyBAQCBpZiB0ZXN0ICJ4JGVuYWJsZV93ZXJyb3IiICE9ICJ4bm8iOyB0aGVuCi0gICBBTV9DRkxBR1M9IiRBTV9DRkxBR1MgLVdlcnJvciIKLSAgIEFNX0NYWEZMQUdTPSIkQU1fQ1hYRkxBR1MgLVdlcnJvciIKK0BAIC03MTAxLDYgKzcxMDEsNyBAQCBpZiB0ZXN0ICJ4JEdDQyIgPSAieHllcyI7IHRoZW4KKyAgICAgQU1fQ1hYRkxBR1M9IiRBTV9DWFhGTEFHUyAtV2Vycm9yIgorICAgZmkKICBmaQogK0FYX0NIRUNLX0NPTVBJTEVfRkxBRyhbLVdlcnJvciAtV2Vycm9yPWZvcm1hdC10cnVuY2F0aW9uXSxbQU1fQ0ZMQUdTPSIkQU1fQ0ZMQUdTIC1Xbm8tZXJyb3I9Zm9ybWF0LXRydW5jYXRpb24iIEFNX0NYWEZMQUdTPSIkQU1fQ1hYRkxBR1MgLVduby1lcnJvcj1mb3JtYXQtdHJ1bmNhdGlvbiJdKQogIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkLzAwMDEtZml4LXRvLWJ1aWxkLXdpdGgtZ2xpYmMtMi4yNS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZC8wMDAxLWZpeC10by1idWlsZC13aXRoLWdsaWJjLTIuMjUucGF0Y2gKaW5kZXggYmU5NDJlNS4uMWUxNDBmOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkLzAwMDEtZml4LXRvLWJ1aWxkLXdpdGgtZ2xpYmMtMi4yNS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGQvMDAwMS1maXgtdG8tYnVpbGQtd2l0aC1nbGliYy0yLjI1LnBhdGNoCkBAIC0xMSw4ICsxMSw4IEBACiBpbmRleCAzNzI1ZjlhLi4yMDIyMjViIDEwMDY0NAogLS0tIGEvc3JjL21kLmMKICsrKyBiL3NyYy9tZC5jCi1AQCAtMjUsNiArMjUsNyBAQAotICNpbmNsdWRlICJ1dGlsc19pZ25vcmVsaXN0LmgiCitAQCAtMjYsNiArMjYsNyBAQAorICNpbmNsdWRlICJ1dGlscy9pZ25vcmVsaXN0L2lnbm9yZWxpc3QuaCIKICAKICAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiArI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZF81LjExLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGRfNS4xMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE3MGU4MmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvY29sbGVjdGQvY29sbGVjdGRfNS4xMS4wLmJiCkBAIC0wLDAgKzEsODggQEAKK1NVTU1BUlkgPSAiQ29sbGVjdHMgYW5kIHN1bW1hcmlzZXMgc3lzdGVtIHBlcmZvcm1hbmNlIHN0YXRpc3RpY3MiCitERVNDUklQVElPTiA9ICJjb2xsZWN0ZCBpcyBhIGRhZW1vbiB3aGljaCBjb2xsZWN0cyBzeXN0ZW0gcGVyZm9ybWFuY2Ugc3RhdGlzdGljcyBwZXJpb2RpY2FsbHkgYW5kIHByb3ZpZGVzIG1lY2hhbmlzbXMgdG8gc3RvcmUgdGhlIHZhbHVlcyBpbiBhIHZhcmlldHkgb2Ygd2F5cywgZm9yIGV4YW1wbGUgaW4gUlJEIGZpbGVzLiIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xYmQyMWYxOWY3ZjBjNjFhN2JlOGVjYWNiMGUyODg1NCIKKworREVQRU5EUyA9ICJycmR0b29sIGN1cmwgbGlicGNhcCBsaWJ4bWwyIHlhamwgbGliZ2NyeXB0IGxpYnRvb2wgbHZtMiIKKworU1JDX1VSSSA9ICJodHRwOi8vY29sbGVjdGQub3JnL2ZpbGVzL2NvbGxlY3RkLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vY29sbGVjdGQuaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9jb2xsZWN0ZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL25vLWdjcnlwdC1iYWRwYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LXRvLWJ1aWxkLXdpdGgtZ2xpYmMtMi4yNS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNS1EaXNhYmxlLW5ldy1nY2M4LXdhcm5pbmdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDYtbGliY29sbGVjdGRjbGllbnQtRml4LXN0cmluZy1vdmVyZmxvdy1lcnJvcnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtaW5jbHVkaW5nLXN5cy1zeXNjdGwuaC1vbi1nbGliYy1iYXNlZC1zeXN0ZW1zLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjEzYjFjOTQ2ZjY2ODRhYmU0NTNlMjRiNWNkODBlYzQ1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM3YjEwYTgwNmUzNGFhODU3MGMxY2FmYTYwMDZjNjA0Nzk2ZmFlMTNjYzJlMWIzZTYzMGQzM2RjYmE5ZTVkYjIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUgdXBkYXRlLXJjLmQgcGtnY29uZmlnIHN5c3RlbWQKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImNvbGxlY3RkLnNlcnZpY2UiCisKKyMgRmxvYXRpbmdwb2ludCBsYXlvdXQsIGFyY2hpdGVjdHVyZSBkZXBlbmRlbnQKKyMgJ25vdGhpbmcnLCAnZW5kaWFuZmxpcCcgb3IgJ2ludHN3YXAnCitGUExBWU9VVCA/PSAiLS13aXRoLWZwLWxheW91dD1ub3RoaW5nIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tvcGVuamRrXSA9ICItLXdpdGgtamF2YT0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke2xpYmRpcn0vanZtLC0td2l0aG91dC1qYXZhLG9wZW5qZGstNyIKK1BBQ0tBR0VDT05GSUdbc25tcF0gPSAiLS1lbmFibGUtc25tcCwtLWRpc2FibGUtc25tcCAtLXdpdGgtbGlibmV0c25tcD1ubyxuZXQtc25tcCIKK1BBQ0tBR0VDT05GSUdbbGlibWVtY2FjaGVkXSA9ICItLXdpdGgtbGlibWVtY2FjaGVkLC0td2l0aG91dC1saWJtZW1jYWNoZWQsbGlibWVtY2FjaGVkIgorUEFDS0FHRUNPTkZJR1tpcHRhYmxlc10gPSAiLS1lbmFibGUtaXB0YWJsZXMsLS1kaXNhYmxlLWlwdGFibGVzLGlwdGFibGVzIgorUEFDS0FHRUNPTkZJR1twb3N0Z3Jlc3FsXSA9ICItLWVuYWJsZS1wb3N0Z3Jlc3FsIC0td2l0aC1saWJwcT15ZXMsIFwKKyAgICAgICAgLS1kaXNhYmxlLXBvc3RncmVzcWwgLS13aXRoLWxpYnBxPW5vLHBvc3RncmVzcWwiCitQQUNLQUdFQ09ORklHW215c3FsXSA9ICItLWVuYWJsZS1teXNxbCAtLXdpdGgtbGlibXlzcWw9eWVzLCBcCisgICAgICAgIC0tZGlzYWJsZS1teXNxbCAtLXdpdGgtbGlibXlzcWw9bm8sbXlzcWw1IgorUEFDS0FHRUNPTkZJR1tkYmldID0gIi0tZW5hYmxlLWRiaSwtLWRpc2FibGUtZGJpLGxpYmRiaSIKK1BBQ0tBR0VDT05GSUdbbW9kYnVzXSA9ICItLWVuYWJsZS1tb2RidXMsLS1kaXNhYmxlLW1vZGJ1cyxsaWJtb2RidXMiCitQQUNLQUdFQ09ORklHW2xpYm93Y2FwaV0gPSAiLS13aXRoLWxpYm93Y2FwaSwtLXdpdGhvdXQtbGlib3djYXBpLG93ZnMiCitQQUNLQUdFQ09ORklHW3NlbnNvcnNdID0gIi0tZW5hYmxlLXNlbnNvcnMgLS13aXRoLWxpYnNlbnNvcnM9eWVzLCBcCisgICAgICAgIC0tZGlzYWJsZS1zZW5zb3JzIC0td2l0aC1saWJzZW5zb3JzPW5vLGxtc2Vuc29ycyIKK1BBQ0tBR0VDT05GSUdbYW1xcF0gPSAiLS1lbmFibGUtYW1xcCAtLXdpdGgtbGlicmFiYml0bXE9eWVzLCBcCisgICAgICAgIC0tZGlzYWJsZS1hbXFwIC0td2l0aC1saWJyYWJiaXRtcT1ubyxyYWJiaXRtcS1jIgorIyBwcm90b2J1Zi1jLCBsaWJ2aXJ0IHRoYXQgYXJlIGN1cnJlbnRseSBvbmx5IGF2YWlsYWJsZSBpbiBtZXRhLXZpcnR1YWxpemF0aW9uIGxheWVyCitQQUNLQUdFQ09ORklHW3BpbmJhXSA9ICItLWVuYWJsZS1waW5iYSwtLWRpc2FibGUtcGluYmEscHJvdG9idWYtYy1uYXRpdmUgcHJvdG9idWYtYyIKK1BBQ0tBR0VDT05GSUdbbGlidmlydF0gPSAiLS1lbmFibGUtdmlydCwtLWRpc2FibGUtdmlydCxsaWJ2aXJ0IgorUEFDS0FHRUNPTkZJR1tsaWJlc210cF0gPSAiLS13aXRoLWxpYmVzbXRwLC0td2l0aG91dC1saWJlc210cCxsaWJlc210cCIKK1BBQ0tBR0VDT05GSUdbbGlibW5sXSA9ICItLXdpdGgtbGlibW5sLC0td2l0aG91dC1saWJtbmwsbGlibW5sIgorUEFDS0FHRUNPTkZJR1tsaWJhdGFzbWFydF0gPSAiLS13aXRoLWxpYmF0YXNtYXJ0LC0td2l0aG91dC1saWJhdGFzbWFydCxsaWJhdGFzbWFydCIKK1BBQ0tBR0VDT05GSUdbbGRhcF0gPSAiLS1lbmFibGUtb3BlbmxkYXAgLS13aXRoLWxpYmxkYXAsLS1kaXNhYmxlLW9wZW5sZGFwIC0td2l0aG91dC1saWJsZGFwLCBvcGVubGRhcCIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgICAgICAgICAgICAgJHtGUExBWU9VVH0gXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1wZXJsIC0td2l0aC1saWJwZXJsPW5vIC0td2l0aC1wZXJsLWJpbmRpbmdzPW5vIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtbGliZ2NyeXB0PSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2xpYmdjcnlwdC1jb25maWcgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ub3RpZnlfZGVza3RvcCBcCisiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vY29sbGVjdGQuaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY29sbGVjdGQKKyAgICBzZWQgLWkgJ3MhL3Vzci9zYmluLyEke3NiaW5kaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY29sbGVjdGQKKyAgICBzZWQgLWkgJ3MhL2V0Yy8hJHtzeXNjb25mZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NvbGxlY3RkCisgICAgc2VkIC1pICdzIS92YXIvISR7bG9jYWxzdGF0ZWRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb2xsZWN0ZAorICAgIHNlZCAtaSAncyFeUEFUSD0uKiFQQVRIPSR7YmFzZV9zYmluZGlyfToke2Jhc2VfYmluZGlyfToke3NiaW5kaXJ9OiR7YmluZGlyfSEnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb2xsZWN0ZAorICAgIGluc3RhbGwgLURtIDA2NDAgJHtCfS9zcmMvY29sbGVjdGQuY29uZiAke0R9JHtzeXNjb25mZGlyfS9jb2xsZWN0ZC5jb25mCisgICAgIyBGaXggY29uZmlndXJhdGlvbiBmaWxlIHRvIGFsbG93IGNvbGxlY3RkIHRvIHN0YXJ0IHVwCisgICAgc2VkIC1pICdzIV4jRlFETkxvb2t1cFsgXHRdKnRydWUhRlFETkxvb2t1cCAgIGZhbHNlIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2NvbGxlY3RkLmNvbmYKKworICAgIHJtZGlyICIke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4iCisgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IgorCisgICAgIyBJbnN0YWxsIHN5c3RlbWQgdW5pdCBmaWxlcworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9jb2xsZWN0ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKyAgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vY29sbGVjdGQuc2VydmljZQorfQorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9jb2xsZWN0ZC5jb25mIgorCitJTklUU0NSSVBUX05BTUUgPSAiY29sbGVjdGQiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKKworIyB0aHJlc2hvbGQuc28gbG9hZC5zbyBhcmUgYWxzbyBwcm92aWRlZCBieSBnZWdsCisjIGRpc2suc28gaXMgYWxzbyBwcm92aWRlZCBieSBsaWJncGhvdG8yLWNhbWxpYnMKK1BSSVZBVEVfTElCUyA9ICJ0aHJlc2hvbGQuc28gbG9hZC5zbyBkaXNrLnNvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkXzUuOC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2NvbGxlY3RkL2NvbGxlY3RkXzUuOC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOTUxYWMwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9jb2xsZWN0ZC9jb2xsZWN0ZF81LjguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLVNVTU1BUlkgPSAiQ29sbGVjdHMgYW5kIHN1bW1hcmlzZXMgc3lzdGVtIHBlcmZvcm1hbmNlIHN0YXRpc3RpY3MiCi1ERVNDUklQVElPTiA9ICJjb2xsZWN0ZCBpcyBhIGRhZW1vbiB3aGljaCBjb2xsZWN0cyBzeXN0ZW0gcGVyZm9ybWFuY2Ugc3RhdGlzdGljcyBwZXJpb2RpY2FsbHkgYW5kIHByb3ZpZGVzIG1lY2hhbmlzbXMgdG8gc3RvcmUgdGhlIHZhbHVlcyBpbiBhIHZhcmlldHkgb2Ygd2F5cywgZm9yIGV4YW1wbGUgaW4gUlJEIGZpbGVzLiIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xYmQyMWYxOWY3ZjBjNjFhN2JlOGVjYWNiMGUyODg1NCIKLQotREVQRU5EUyA9ICJycmR0b29sIGN1cmwgbGlicGNhcCBsaWJ4bWwyIHlhamwgbGliZ2NyeXB0IGxpYnRvb2wgbHZtMiIKLQotU1JDX1VSSSA9ICJodHRwOi8vY29sbGVjdGQub3JnL2ZpbGVzL2NvbGxlY3RkLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vY29sbGVjdGQuaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb2xsZWN0ZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL25vLWdjcnlwdC1iYWRwYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZGl0aW9uYWxseS1jaGVjay1saWJ2aXJ0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LXRvLWJ1aWxkLXdpdGgtZ2xpYmMtMi4yNS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1DaGVjay1mb3ItV25vLWVycm9yLWZvcm1hdC10cnVuY2F0aW9uLWNvbXAucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1EaXNhYmxlLW5ldy1nY2M4LXdhcm5pbmdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtbGliY29sbGVjdGRjbGllbnQtRml4LXN0cmluZy1vdmVyZmxvdy1lcnJvcnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtaW5jbHVkaW5nLXN5cy1zeXNjdGwuaC1vbi1nbGliYy1iYXNlZC1zeXN0ZW1zLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImJmY2U5NmM0MmNlZGU1MjQzMDI4NTEwYmNjNTdjMWU2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU3OTZmZGEyN2NlMDYzNzdmNDkxYWQ5MWFhMjg2OTYyYTY4YzJiNTQwNzZhYTc3YTI5NjczZDUzMjA0NDUzZGEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB5dGhvbm5hdGl2ZSB1cGRhdGUtcmMuZCBwa2djb25maWcgc3lzdGVtZAotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiY29sbGVjdGQuc2VydmljZSIKLQotIyBGbG9hdGluZ3BvaW50IGxheW91dCwgYXJjaGl0ZWN0dXJlIGRlcGVuZGVudAotIyAnbm90aGluZycsICdlbmRpYW5mbGlwJyBvciAnaW50c3dhcCcKLUZQTEFZT1VUID89ICItLXdpdGgtZnAtbGF5b3V0PW5vdGhpbmciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW29wZW5qZGtdID0gIi0td2l0aC1qYXZhPSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7bGliZGlyfS9qdm0sLS13aXRob3V0LWphdmEsb3Blbmpkay03IgotUEFDS0FHRUNPTkZJR1tzbm1wXSA9ICItLWVuYWJsZS1zbm1wLC0tZGlzYWJsZS1zbm1wIC0td2l0aC1saWJuZXRzbm1wPW5vLG5ldC1zbm1wIgotUEFDS0FHRUNPTkZJR1tsaWJtZW1jYWNoZWRdID0gIi0td2l0aC1saWJtZW1jYWNoZWQsLS13aXRob3V0LWxpYm1lbWNhY2hlZCxsaWJtZW1jYWNoZWQiCi1QQUNLQUdFQ09ORklHW2lwdGFibGVzXSA9ICItLWVuYWJsZS1pcHRhYmxlcywtLWRpc2FibGUtaXB0YWJsZXMsaXB0YWJsZXMiCi1QQUNLQUdFQ09ORklHW3Bvc3RncmVzcWxdID0gIi0tZW5hYmxlLXBvc3RncmVzcWwgLS13aXRoLWxpYnBxPXllcywgXAotICAgICAgICAtLWRpc2FibGUtcG9zdGdyZXNxbCAtLXdpdGgtbGlicHE9bm8scG9zdGdyZXNxbCIKLVBBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0tZW5hYmxlLW15c3FsIC0td2l0aC1saWJteXNxbD15ZXMsIFwKLSAgICAgICAgLS1kaXNhYmxlLW15c3FsIC0td2l0aC1saWJteXNxbD1ubyxteXNxbDUiCi1QQUNLQUdFQ09ORklHW2RiaV0gPSAiLS1lbmFibGUtZGJpLC0tZGlzYWJsZS1kYmksbGliZGJpIgotUEFDS0FHRUNPTkZJR1ttb2RidXNdID0gIi0tZW5hYmxlLW1vZGJ1cywtLWRpc2FibGUtbW9kYnVzLGxpYm1vZGJ1cyIKLVBBQ0tBR0VDT05GSUdbbGlib3djYXBpXSA9ICItLXdpdGgtbGlib3djYXBpLC0td2l0aG91dC1saWJvd2NhcGksb3dmcyIKLVBBQ0tBR0VDT05GSUdbc2Vuc29yc10gPSAiLS1lbmFibGUtc2Vuc29ycyAtLXdpdGgtbGlic2Vuc29ycz15ZXMsIFwKLSAgICAgICAgLS1kaXNhYmxlLXNlbnNvcnMgLS13aXRoLWxpYnNlbnNvcnM9bm8sbG1zZW5zb3JzIgotUEFDS0FHRUNPTkZJR1thbXFwXSA9ICItLWVuYWJsZS1hbXFwIC0td2l0aC1saWJyYWJiaXRtcT15ZXMsIFwKLSAgICAgICAgLS1kaXNhYmxlLWFtcXAgLS13aXRoLWxpYnJhYmJpdG1xPW5vLHJhYmJpdG1xLWMiCi0jIHByb3RvYnVmLWMsIGxpYnZpcnQgdGhhdCBhcmUgY3VycmVudGx5IG9ubHkgYXZhaWxhYmxlIGluIG1ldGEtdmlydHVhbGl6YXRpb24gbGF5ZXIKLVBBQ0tBR0VDT05GSUdbcGluYmFdID0gIi0tZW5hYmxlLXBpbmJhLC0tZGlzYWJsZS1waW5iYSxwcm90b2J1Zi1jLW5hdGl2ZSBwcm90b2J1Zi1jIgotUEFDS0FHRUNPTkZJR1tsaWJ2aXJ0XSA9ICItLWVuYWJsZS12aXJ0LC0tZGlzYWJsZS12aXJ0LGxpYnZpcnQiCi1QQUNLQUdFQ09ORklHW2xpYmVzbXRwXSA9ICItLXdpdGgtbGliZXNtdHAsLS13aXRob3V0LWxpYmVzbXRwLGxpYmVzbXRwIgotUEFDS0FHRUNPTkZJR1tsaWJtbmxdID0gIi0td2l0aC1saWJtbmwsLS13aXRob3V0LWxpYm1ubCxsaWJtbmwiCi1QQUNLQUdFQ09ORklHW2xpYmF0YXNtYXJ0XSA9ICItLXdpdGgtbGliYXRhc21hcnQsLS13aXRob3V0LWxpYmF0YXNtYXJ0LGxpYmF0YXNtYXJ0IgotUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1vcGVubGRhcCAtLXdpdGgtbGlibGRhcCwtLWRpc2FibGUtb3BlbmxkYXAgLS13aXRob3V0LWxpYmxkYXAsIG9wZW5sZGFwIgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAgICAgICAgICAgICAke0ZQTEFZT1VUfSBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXBlcmwgLS13aXRoLWxpYnBlcmw9bm8gLS13aXRoLXBlcmwtYmluZGluZ3M9bm8gXAotICAgICAgICAgICAgICAgIC0td2l0aC1saWJnY3J5cHQ9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vbGliZ2NyeXB0LWNvbmZpZyBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLW5vdGlmeV9kZXNrdG9wIFwKLSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9jb2xsZWN0ZC5pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb2xsZWN0ZAotICAgIHNlZCAtaSAncyEvdXNyL3NiaW4vISR7c2JpbmRpcn0vIWcnICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9jb2xsZWN0ZAotICAgIHNlZCAtaSAncyEvZXRjLyEke3N5c2NvbmZkaXJ9LyFnJyAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvY29sbGVjdGQKLSAgICBzZWQgLWkgJ3MhL3Zhci8hJHtsb2NhbHN0YXRlZGlyfS8hZycgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NvbGxlY3RkCi0gICAgc2VkIC1pICdzIV5QQVRIPS4qIVBBVEg9JHtiYXNlX3NiaW5kaXJ9OiR7YmFzZV9iaW5kaXJ9OiR7c2JpbmRpcn06JHtiaW5kaXJ9IScgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2NvbGxlY3RkCi0gICAgaW5zdGFsbCAtRG0gMDY0MCAke0J9L3NyYy9jb2xsZWN0ZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2NvbGxlY3RkLmNvbmYKLSAgICAjIEZpeCBjb25maWd1cmF0aW9uIGZpbGUgdG8gYWxsb3cgY29sbGVjdGQgdG8gc3RhcnQgdXAKLSAgICBzZWQgLWkgJ3MhXiNGUUROTG9va3VwWyBcdF0qdHJ1ZSFGUUROTG9va3VwICAgZmFsc2UhZycgJHtEfSR7c3lzY29uZmRpcn0vY29sbGVjdGQuY29uZgotCi0gICAgcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKLSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCi0KLSAgICAjIEluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGVzCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2NvbGxlY3RkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotICAgICAgICAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9jb2xsZWN0ZC5zZXJ2aWNlCi19Ci0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L2NvbGxlY3RkLmNvbmYiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJjb2xsZWN0ZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgotCi0jIHRocmVzaG9sZC5zbyBsb2FkLnNvIGFyZSBhbHNvIHByb3ZpZGVkIGJ5IGdlZ2wKLSMgZGlzay5zbyBpcyBhbHNvIHByb3ZpZGVkIGJ5IGxpYmdwaG90bzItY2FtbGlicwotUFJJVkFURV9MSUJTID0gInRocmVzaG9sZC5zbyBsb2FkLnNvIGRpc2suc28iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGRyZXNjdWUvZGRyZXNjdWVfMS4yNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kZHJlc2N1ZS9kZHJlc2N1ZV8xLjI0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MmJkMTFiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kZHJlc2N1ZS9kZHJlc2N1ZV8xLjI0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotU1VNTUFSWSA9ICJEYXRhIHJlY292ZXJ5IHRvb2wiCi1ERVNDUklQVElPTiA9ICJHTlUgZGRyZXNjdWUgaXMgYSBkYXRhIHJlY292ZXJ5IHRvb2wuIEl0IGNvcGllcyBkYXRhIFwKLSAgICBmcm9tIG9uZSBmaWxlIG9yIGJsb2NrIGRldmljZSAoaGFyZCBkaXNjLCBjZHJvbSwgZXRjKSB0byBhbm90aGVyLCBcCi0gICAgdHJ5aW5nIGhhcmQgdG8gcmVzY3VlIGRhdGEgaW4gY2FzZSBvZiByZWFkIGVycm9ycy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZGRyZXNjdWUvZGRyZXNjdWUuaHRtbCIKLVNFQ1RJT04gPSAiY29uc29sZSIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NmQ2ZTMwMGZmZDhmYjlkMThiZDliMTM2YTliYmExMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9tYWluX2NvbW1vbi5jYztiZWdpbmxpbmU9NTtlbmRsaW5lPTE2O21kNT0zZWMyODhiMjY3NjUyOGNkMmIwNjkzNjRlMzEzMDE2ZiIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIubHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiOGFjODlmODMzYzBkZjIyMTcyM2UzM2I0NDdlMjMwZmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGI1ZDNmZWVkZTcwZTM2NTdjYTZiM2M3ODQ0ZjIzMTMxODUxY2JiNmFmMGNlY2M5NzIxNTAwZjdkNzAyMTA4NyIKLQotIyBUaGlzIGlzbid0IGFscmVhZHkgYWRkZWQgYnkgYmFzZS5iYmNsYXNzCi1kb191bnBhY2tbZGVwZW5kc10gKz0gImx6aXAtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCi0KLUNPTkZJR1VSRU9QVFMgPSAiXAotICAgICctLXNyY2Rpcj0ke1N9JyBcCi0gICAgJy0tcHJlZml4PSR7cHJlZml4fScgXAotICAgICctLWV4ZWMtcHJlZml4PSR7ZXhlY19wcmVmaXh9JyBcCi0gICAgJy0tYmluZGlyPSR7YmluZGlyfScgXAotICAgICctLWRhdGFkaXI9JHtkYXRhZGlyfScgXAotICAgICctLWluZm9kaXI9JHtpbmZvZGlyfScgXAotICAgICctLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfScgXAotICAgICdDWFg9JHtDWFh9JyBcCi0gICAgJ0NQUEZMQUdTPSR7Q1BQRkxBR1N9JyBcCi0gICAgJ0NYWEZMQUdTPSR7Q1hYRkxBR1N9JyBcCi0gICAgJ0xERkxBR1M9JHtMREZMQUdTfScgXAotIgotRVhUUkFfT0VNQUtFID0gIiIKLQotZG9fY29uZmlndXJlICgpIHsKLSAgICAke1N9L2NvbmZpZ3VyZSAke0NPTkZJR1VSRU9QVFN9Ci19Ci0KLWRvX2luc3RhbGwgKCkgewotICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotICAgICMgSW5mbyBkaXIgbGlzdGluZyBpc24ndCBpbnRlcmVzdGluZyBhdCB0aGlzIHBvaW50IHNvIHJlbW92ZSBpdCBpZiBpdCBleGlzdHMuCi0gICAgaWYgWyAtZSAiJHtEfSR7aW5mb2Rpcn0vZGlyIiBdOyB0aGVuCi0gICAgICAgIHJtIC1mICR7RH0ke2luZm9kaXJ9L2RpcgotICAgIGZpCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGRyZXNjdWUvZGRyZXNjdWVfMS4yNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kZHJlc2N1ZS9kZHJlc2N1ZV8xLjI1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNmMjQzNTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGRyZXNjdWUvZGRyZXNjdWVfMS4yNS5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIkRhdGEgcmVjb3ZlcnkgdG9vbCIKK0RFU0NSSVBUSU9OID0gIkdOVSBkZHJlc2N1ZSBpcyBhIGRhdGEgcmVjb3ZlcnkgdG9vbC4gSXQgY29waWVzIGRhdGEgXAorICAgIGZyb20gb25lIGZpbGUgb3IgYmxvY2sgZGV2aWNlIChoYXJkIGRpc2MsIGNkcm9tLCBldGMpIHRvIGFub3RoZXIsIFwKKyAgICB0cnlpbmcgaGFyZCB0byByZXNjdWUgZGF0YSBpbiBjYXNlIG9mIHJlYWQgZXJyb3JzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9kZHJlc2N1ZS9kZHJlc2N1ZS5odG1sIgorU0VDVElPTiA9ICJjb25zb2xlIgorTElDRU5TRSA9ICJHUEx2MisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc2ZDZlMzAwZmZkOGZiOWQxOGJkOWIxMzZhOWJiYTEzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL21haW5fY29tbW9uLmNjO2JlZ2lubGluZT01O2VuZGxpbmU9MTY7bWQ1PTNlYzI4OGIyNjc2NTI4Y2QyYjA2OTM2NGUzMTMwMTZmIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5seiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5OWZkN2EyOGJmOTk1M2Q4ODUzNGM3ZWU5YWI1YmQyYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjZTUzOGViZDI2YTA5ZjQ1ZGE2N2QzYWQzZjc0MzE5MzI0MjgyMzFjZWVjN2EyZDI1NWY3MTZmYTIzMWExMDYzIgorCisjIFRoaXMgaXNuJ3QgYWxyZWFkeSBhZGRlZCBieSBiYXNlLmJiY2xhc3MKK2RvX3VucGFja1tkZXBlbmRzXSArPSAibHppcC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKKworQ09ORklHVVJFT1BUUyA9ICJcCisgICAgJy0tc3JjZGlyPSR7U30nIFwKKyAgICAnLS1wcmVmaXg9JHtwcmVmaXh9JyBcCisgICAgJy0tZXhlYy1wcmVmaXg9JHtleGVjX3ByZWZpeH0nIFwKKyAgICAnLS1iaW5kaXI9JHtiaW5kaXJ9JyBcCisgICAgJy0tZGF0YWRpcj0ke2RhdGFkaXJ9JyBcCisgICAgJy0taW5mb2Rpcj0ke2luZm9kaXJ9JyBcCisgICAgJy0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9JyBcCisgICAgJ0NYWD0ke0NYWH0nIFwKKyAgICAnQ1BQRkxBR1M9JHtDUFBGTEFHU30nIFwKKyAgICAnQ1hYRkxBR1M9JHtDWFhGTEFHU30nIFwKKyAgICAnTERGTEFHUz0ke0xERkxBR1N9JyBcCisiCitFWFRSQV9PRU1BS0UgPSAiIgorCitkb19jb25maWd1cmUgKCkgeworICAgICR7U30vY29uZmlndXJlICR7Q09ORklHVVJFT1BUU30KK30KKworZG9faW5zdGFsbCAoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCisgICAgIyBJbmZvIGRpciBsaXN0aW5nIGlzbid0IGludGVyZXN0aW5nIGF0IHRoaXMgcG9pbnQgc28gcmVtb3ZlIGl0IGlmIGl0IGV4aXN0cy4KKyAgICBpZiBbIC1lICIke0R9JHtpbmZvZGlyfS9kaXIiIF07IHRoZW4KKyAgICAgICAgcm0gLWYgJHtEfSR7aW5mb2Rpcn0vZGlyCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kbHQtZGFlbW9uL2RsdC1kYWVtb24vMDAwMi1Eb24tdC1leGVjdXRlLXByb2Nlc3Nlcy1hcy1hLXNwZWNpZmljLXVzZXIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGx0LWRhZW1vbi9kbHQtZGFlbW9uLzAwMDItRG9uLXQtZXhlY3V0ZS1wcm9jZXNzZXMtYXMtYS1zcGVjaWZpYy11c2VyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4MWJlMjUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGx0LWRhZW1vbi9kbHQtZGFlbW9uLzAwMDItRG9uLXQtZXhlY3V0ZS1wcm9jZXNzZXMtYXMtYS1zcGVjaWZpYy11c2VyLnBhdGNoCkBAIC0wLDAgKzEsOTQgQEAKK0Zyb20gYmNjYTRjOTkzOTRiYTQyMmQwM2E1ZTc2ZjJhMDAyM2VmMjQ4ODI0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFuZHJlaSBHaGVyemFuIDxhbmRyZWkuZ2hlcnphbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCAxOCBOb3YgMjAxNCAxNTo0NzoyMiArMDEwMAorU3ViamVjdDogW1BBVENIIDIvNF0gRG9uJ3QgZXhlY3V0ZSBwcm9jZXNzZXMgYXMgYSBzcGVjaWZpYyB1c2VyLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0NvbmZpZ3VyYXRpb24gU3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpLmdoZXJ6YW5Ad2luZHJpdmVyLmNvbT4KKy0tLQorIHN5c3RlbWQvZGx0LWFkYXB0b3ItdWRwLnNlcnZpY2UuY21ha2UgIHwgMSAtCisgc3lzdGVtZC9kbHQtZGJ1cy5zZXJ2aWNlLmNtYWtlICAgICAgICAgfCAxIC0KKyBzeXN0ZW1kL2RsdC1leGFtcGxlLXVzZXIuc2VydmljZS5jbWFrZSB8IDEgLQorIHN5c3RlbWQvZGx0LXJlY2VpdmUuc2VydmljZS5jbWFrZSAgICAgIHwgMSAtCisgc3lzdGVtZC9kbHQtc3lzdGVtLnNlcnZpY2UuY21ha2UgICAgICAgfCAxIC0KKyBzeXN0ZW1kL2RsdC5zZXJ2aWNlLmNtYWtlICAgICAgICAgICAgICB8IDEgLQorIDYgZmlsZXMgY2hhbmdlZCwgNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c3RlbWQvZGx0LWFkYXB0b3ItdWRwLnNlcnZpY2UuY21ha2UgYi9zeXN0ZW1kL2RsdC1hZGFwdG9yLXVkcC5zZXJ2aWNlLmNtYWtlCitpbmRleCA4ZGFjMWYyLi5lY2Y5ZjllIDEwMDY0NAorLS0tIGEvc3lzdGVtZC9kbHQtYWRhcHRvci11ZHAuc2VydmljZS5jbWFrZQorKysrIGIvc3lzdGVtZC9kbHQtYWRhcHRvci11ZHAuc2VydmljZS5jbWFrZQorQEAgLTIxLDkgKzIxLDggQEAgV2FudHM9ZGx0LnNlcnZpY2UKKyAKKyBbU2VydmljZV0KKyBUeXBlPXNpbXBsZQorLVVzZXI9QERMVF9VU0VSQAorIEV4ZWNTdGFydD1AQ01BS0VfSU5TVEFMTF9QUkVGSVhAL2Jpbi9kbHQtYWRhcHRvci11ZHAgLWEgQERMVF9BREFQVE9SX1VEUF9BUFBJREAgLWMgQERMVF9BREFQVE9SX1VEUF9DVElEQCAtcCBARExUX0FEQVBUT1JfVURQX1BPUlRACisgTGltaXRDT1JFPWluZmluaXR5CisgCisgW0luc3RhbGxdCistV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKK1wgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorK1dhbnRlZEJ5PW11bHRpLXVzZXIudGFyZ2V0CitkaWZmIC0tZ2l0IGEvc3lzdGVtZC9kbHQtZGJ1cy5zZXJ2aWNlLmNtYWtlIGIvc3lzdGVtZC9kbHQtZGJ1cy5zZXJ2aWNlLmNtYWtlCitpbmRleCA5YmFmM2U5Li43NGE3ZWFjIDEwMDY0NAorLS0tIGEvc3lzdGVtZC9kbHQtZGJ1cy5zZXJ2aWNlLmNtYWtlCisrKysgYi9zeXN0ZW1kL2RsdC1kYnVzLnNlcnZpY2UuY21ha2UKK0BAIC0yMCw3ICsyMCw2IEBAIFdhbnRzPWRsdC5zZXJ2aWNlCisgCisgW1NlcnZpY2VdCisgVHlwZT1zaW1wbGUKKy1Vc2VyPUBETFRfVVNFUkAKKyBFeGVjU3RhcnQ9QENNQUtFX0lOU1RBTExfUFJFRklYQC9iaW4vZGx0LWRidXMKKyBXYXRjaGRvZ1NlYz1ARExUX1dhdGNoZG9nU2VjQAorIE5vdGlmeUFjY2Vzcz1tYWluCitkaWZmIC0tZ2l0IGEvc3lzdGVtZC9kbHQtZXhhbXBsZS11c2VyLnNlcnZpY2UuY21ha2UgYi9zeXN0ZW1kL2RsdC1leGFtcGxlLXVzZXIuc2VydmljZS5jbWFrZQoraW5kZXggYjY2NTc0Mi4uMzUwMDliMCAxMDA2NDQKKy0tLSBhL3N5c3RlbWQvZGx0LWV4YW1wbGUtdXNlci5zZXJ2aWNlLmNtYWtlCisrKysgYi9zeXN0ZW1kL2RsdC1leGFtcGxlLXVzZXIuc2VydmljZS5jbWFrZQorQEAgLTIxLDYgKzIxLDUgQEAgV2FudHM9ZGx0LnNlcnZpY2UKKyAKKyBbU2VydmljZV0KKyBUeXBlPXNpbXBsZQorLVVzZXI9QERMVF9VU0VSQAorIEV4ZWNTdGFydD1AQ01BS0VfSU5TVEFMTF9QUkVGSVhAL2Jpbi9kbHQtZXhhbXBsZS11c2VyICJIYWxsbyBmcm9tIEdFTklWSSBETFQgZXhhbXBsZSB1c2VyIGFwcGxpY2F0aW9uIgorLUxpbWl0Q09SRT1pbmZpbml0eQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrTGltaXRDT1JFPWluZmluaXR5CitkaWZmIC0tZ2l0IGEvc3lzdGVtZC9kbHQtcmVjZWl2ZS5zZXJ2aWNlLmNtYWtlIGIvc3lzdGVtZC9kbHQtcmVjZWl2ZS5zZXJ2aWNlLmNtYWtlCitpbmRleCBjMDdkNDQ3Li44Zjg4ZjAwIDEwMDY0NAorLS0tIGEvc3lzdGVtZC9kbHQtcmVjZWl2ZS5zZXJ2aWNlLmNtYWtlCisrKysgYi9zeXN0ZW1kL2RsdC1yZWNlaXZlLnNlcnZpY2UuY21ha2UKK0BAIC0yMiw2ICsyMiw1IEBAIFdhbnRzPWRsdC5zZXJ2aWNlCisgCisgW1NlcnZpY2VdCisgVHlwZT1zaW1wbGUKKy1Vc2VyPUBETFRfVVNFUkAKKyBFeGVjU3RhcnQ9QENNQUtFX0lOU1RBTExfUFJFRklYQC9iaW4vZGx0LXJlY2VpdmUgLW8gL3RtcC9kbHRfcmVjZWl2ZV9sb2cuZGx0IGxvY2FsaG9zdAorLUxpbWl0Q09SRT1pbmZpbml0eQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrTGltaXRDT1JFPWluZmluaXR5CitkaWZmIC0tZ2l0IGEvc3lzdGVtZC9kbHQtc3lzdGVtLnNlcnZpY2UuY21ha2UgYi9zeXN0ZW1kL2RsdC1zeXN0ZW0uc2VydmljZS5jbWFrZQoraW5kZXggMGU5MWY0Mi4uMWE1YjkxMyAxMDA3NTUKKy0tLSBhL3N5c3RlbWQvZGx0LXN5c3RlbS5zZXJ2aWNlLmNtYWtlCisrKysgYi9zeXN0ZW1kL2RsdC1zeXN0ZW0uc2VydmljZS5jbWFrZQorQEAgLTIyLDcgKzIyLDYgQEAgV2FudHM9ZGx0LnNlcnZpY2UKKyAKKyBbU2VydmljZV0KKyBUeXBlPXNpbXBsZQorLVVzZXI9QERMVF9VU0VSQAorIEV4ZWNTdGFydD1AQ01BS0VfSU5TVEFMTF9QUkVGSVhAL2Jpbi9kbHQtc3lzdGVtCisgV2F0Y2hkb2dTZWM9QERMVF9XYXRjaGRvZ1NlY0AKKyBOb3RpZnlBY2Nlc3M9bWFpbgorZGlmZiAtLWdpdCBhL3N5c3RlbWQvZGx0LnNlcnZpY2UuY21ha2UgYi9zeXN0ZW1kL2RsdC5zZXJ2aWNlLmNtYWtlCitpbmRleCAwYjNlZTJjLi5lNDc1M2EyIDEwMDc1NQorLS0tIGEvc3lzdGVtZC9kbHQuc2VydmljZS5jbWFrZQorKysrIGIvc3lzdGVtZC9kbHQuc2VydmljZS5jbWFrZQorQEAgLTIxLDcgKzIxLDYgQEAgRG9jdW1lbnRhdGlvbj1tYW46ZGx0LWRhZW1vbigxKSBtYW46ZGx0LmNvbmYoNSkKKyAKKyBbU2VydmljZV0KKyBUeXBlPXNpbXBsZQorLVVzZXI9QERMVF9VU0VSQAorIEV4ZWNTdGFydD1AQ01BS0VfSU5TVEFMTF9QUkVGSVhAL2Jpbi9kbHQtZGFlbW9uCisgV2F0Y2hkb2dTZWM9QERMVF9XYXRjaGRvZ1NlY0AKKyBOb3RpZnlBY2Nlc3M9bWFpbgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RsdC1kYWVtb24vZGx0LWRhZW1vbi8wMDA0LU1vZGlmeS1zeXN0ZW1kLWNvbmZpZy1kaXJlY3RvcnkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGx0LWRhZW1vbi9kbHQtZGFlbW9uLzAwMDQtTW9kaWZ5LXN5c3RlbWQtY29uZmlnLWRpcmVjdG9yeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTAyOGMwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RsdC1kYWVtb24vZGx0LWRhZW1vbi8wMDA0LU1vZGlmeS1zeXN0ZW1kLWNvbmZpZy1kaXJlY3RvcnkucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorRnJvbSA5YTVlNjU1Y2Y1NzMwMTAwOGNkNjFkNTNjOGE0MTBhN2YzOTdlNjUwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaS5naGVyemFuQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDE4IE5vdiAyMDE0IDE1OjUxOjMwICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBNb2RpZnkgc3lzdGVtZCBjb25maWcgZGlyZWN0b3J5CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbQ29uZmlndXJhdGlvbiBTcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWkuZ2hlcnphbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3lzdGVtZC9DTWFrZUxpc3RzLnR4dCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKK2luZGV4IGU2YjQ0YTIuLjBlODg1YmYgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0yMDEsNyArMjAxLDcgQEAgaWYoV0lUSF9TWVNURU1EIE9SIFdJVEhfU1lTVEVNRF9XQVRDSERPRyBPUiBXSVRIX1NZU1RFTURfSk9VUk5BTCkKKyAKKyAgICAgc2V0KHN5c3RlbWRfU1JDUyAke1BST0pFQ1RfU09VUkNFX0RJUn0vc3lzdGVtZC8zcmRwYXJ0eS9zZC1kYWVtb24uYykKKyAKKy0gICAgc2V0KFNZU1RFTURfVU5JVERJUiAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vbGliL3N5c3RlbWQvc3lzdGVtIiBDQUNIRSBQQVRICisrICAgIHNldChTWVNURU1EX1VOSVRESVIgIi9saWIvc3lzdGVtZC9zeXN0ZW0iIENBQ0hFIFBBVEgKKyAgICAgICAgICJTZXQgZGlyZWN0b3J5IHRvIGluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGVzIikKKyAKKyAgICAgYWRkX3N1YmRpcmVjdG9yeShzeXN0ZW1kKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RsdC1kYWVtb24vZGx0LWRhZW1vbi8yMDQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvZGx0LWRhZW1vbi9kbHQtZGFlbW9uLzIwNC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGZjMGJjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RsdC1kYWVtb24vZGx0LWRhZW1vbi8yMDQucGF0Y2gKQEAgLTAsMCArMSwxNDggQEAKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vR0VOSVZJL2RsdC1kYWVtb24vcHVsbC8yMDRdCitGcm9tIDkyODMwYWZmNmU5MTA0MWY1NzQ3NTNkNzhkYTc1OGM2Mjk4MWQ5YTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBHaWFuZnJhbmNvIENvc3RhbWFnbmEgPGNvc3RhbWFnbmFnaWFuZnJhbmNvQHlhaG9vLml0PgorRGF0ZTogU2F0LCAyNSBKYW4gMjAyMCAwOTowODowNyArMDEwMAorU3ViamVjdDogW1BBVENIIDEvM10gZGx0X3VzZXIuaDogZml4IGJ1aWxkIHdoZW4gbXVzbCBpcyB0aGUgbGliYworIGltcGxlbWVudGF0aW9uLCBieSBhZGRpbmcgYSBtaXNzaW5nIGluY2x1ZGUgZm9yIHB0aHJlYWRfdCByZWZlcmVuY2U6CisKK3NlZSBodHRwczovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzMwODAwMC8gZm9yIGRldGFpbHMKKworVGhhbmtzIEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IGZvciB0aGUgcmVwb3J0CisKK1NpZ25lZC1vZmYtYnk6IEdpYW5mcmFuY28gQ29zdGFtYWduYSA8Y29zdGFtYWduYWdpYW5mcmFuY29AeWFob28uaXQ+CitTaWduZWQtb2ZmLWJ5OiBHaWFuZnJhbmNvIENvc3RhbWFnbmEgPGxvY3V0dXNvZmJvcmdAZGViaWFuLm9yZz4KKy0tLQorIGluY2x1ZGUvZGx0L2RsdF91c2VyLmggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2luY2x1ZGUvZGx0L2RsdF91c2VyLmggYi9pbmNsdWRlL2RsdC9kbHRfdXNlci5oCitpbmRleCA2OWNiODU0Li43NjZkMzQ5IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9kbHQvZGx0X3VzZXIuaAorKysrIGIvaW5jbHVkZS9kbHQvZGx0X3VzZXIuaAorQEAgLTc0LDYgKzc0LDcgQEAKKyAgXHsKKyAgKi8KKyAjICAgaW5jbHVkZSA8bXF1ZXVlLmg+CisrIyAgIGluY2x1ZGUgPHB0aHJlYWQuaD4KKyAKKyAjICAgaWYgIWRlZmluZWQgKF9fV0lOMzJfXykKKyAjICAgICAgaW5jbHVkZSA8c2VtYXBob3JlLmg+CisKK0Zyb20gNWY2N2FiYTAyYzEyYjc0NDZlNjNjY2M4NjI4NWMxM2JjNWM3YTQzMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEdpYW5mcmFuY28gQ29zdGFtYWduYSA8Y29zdGFtYWduYWdpYW5mcmFuY29AeWFob28uaXQ+CitEYXRlOiBTYXQsIDI1IEphbiAyMDIwIDA5OjE2OjE0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMi8zXSBkbHQtdGVzdC1pbml0LWZyZWU6IGZpeCBidWlsZCBmYWlsdXJlIHdpdGggc3RyaWN0CisgY29tcGlsZXIgZmxhZ3MsIGR1ZSB0byB1aW50IGJlaW5nIHVuZGVmaW5lZC4gVGhpcyBpcyBhY3R1YWxseSBhbiAiaW50IiB0eXBlLAorIGxvb2tpbmcgYXQgdGhlIHRlc3QgaW1wbGVtZW50YXRpb24KKworU2lnbmVkLW9mZi1ieTogR2lhbmZyYW5jbyBDb3N0YW1hZ25hIDxjb3N0YW1hZ25hZ2lhbmZyYW5jb0B5YWhvby5pdD4KK1NpZ25lZC1vZmYtYnk6IEdpYW5mcmFuY28gQ29zdGFtYWduYSA8bG9jdXR1c29mYm9yZ0BkZWJpYW4ub3JnPgorLS0tCisgc3JjL3Rlc3RzL2RsdC10ZXN0LWluaXQtZnJlZS5jIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy90ZXN0cy9kbHQtdGVzdC1pbml0LWZyZWUuYyBiL3NyYy90ZXN0cy9kbHQtdGVzdC1pbml0LWZyZWUuYworaW5kZXggOTZiNTI0NS4uMzViODgwMyAxMDA2NDQKKy0tLSBhL3NyYy90ZXN0cy9kbHQtdGVzdC1pbml0LWZyZWUuYworKysrIGIvc3JjL3Rlc3RzL2RsdC10ZXN0LWluaXQtZnJlZS5jCitAQCAtMzIsNyArMzIsNyBAQAorIAorIHZvaWQgZXhlYyhjb25zdCBjaGFyICpjbWQsIGNoYXIgKmJ1ZmZlciwgc2l6ZV90IGxlbmd0aCk7Cisgdm9pZCBwcmludE1lbW9yeVVzYWdlKCk7CistY2hhciAqb2NjdXB5TWVtb3J5KHVpbnQgc2l6ZSk7CisrY2hhciAqb2NjdXB5TWVtb3J5KGludCBzaXplKTsKKyB2b2lkIGRvX2V4YW1wbGVfdGVzdCgpOworIHZvaWQgZG9fZGx0X3Rlc3QoKTsKKyAKK0BAIC0xMzEsNyArMTMxLDcgQEAgdm9pZCBwcmludE1lbW9yeVVzYWdlKCkKKyAgICAgcHJpbnRmKCIlcyIsIHJlc3VsdCk7CisgfQorIAorLWNoYXIgKm9jY3VweU1lbW9yeSh1aW50IHNpemUpCisrY2hhciAqb2NjdXB5TWVtb3J5KGludCBzaXplKQorIHsKKyAgICAgY2hhciAqYnVmID0gKGNoYXIgKiltYWxsb2Moc2l6ZSAqIHNpemVvZihjaGFyKSk7CisgCisKK0Zyb20gYzc5MGQ2MWZhZDM4MmU1ZDNlNjQ4ZWU5OTkwNDA4N2ViOWJjNGE3NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEdpYW5mcmFuY28gQ29zdGFtYWduYSA8Y29zdGFtYWduYWdpYW5mcmFuY29AeWFob28uaXQ+CitEYXRlOiBTYXQsIDI1IEphbiAyMDIwIDA5OjIwOjQ4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBzeXMvcG9sbC5oOiBkZXByZWNhdGUgb2xkIHN5cy9wb2xsLmggaW5jbHVkZSBoZWFkZXIsIG5vdworIGdsaWJjL211c2wgd2FudHMgcG9sbC5oIGJlaW5nIGluY2x1ZGVkIGRpcmVjdGx5LiBUaGlzIGZpeGVzIGEgYnVpbGQgZmFpbHVyZQorIG9uIG11c2wgc3lzdGVtcyB3aXRoIHN0cmljdCBjIGhhcmRlbmluZyBmbGFncworCitTaWduZWQtb2ZmLWJ5OiBHaWFuZnJhbmNvIENvc3RhbWFnbmEgPGNvc3RhbWFnbmFnaWFuZnJhbmNvQHlhaG9vLml0PgorU2lnbmVkLW9mZi1ieTogR2lhbmZyYW5jbyBDb3N0YW1hZ25hIDxsb2N1dHVzb2Zib3JnQGRlYmlhbi5vcmc+CistLS0KKyBzcmMvY29uc29sZS9sb2dzdG9yYWdlL2RsdC1sb2dzdG9yYWdlLWN0cmwuYyB8IDIgKy0KKyBzcmMvZGFlbW9uL2RsdF9kYWVtb25fZXZlbnRfaGFuZGxlci5jICAgICAgICB8IDIgKy0KKyBzcmMvZGFlbW9uL2RsdF9kYWVtb25fZXZlbnRfaGFuZGxlci5oICAgICAgICB8IDIgKy0KKyBzcmMvZGFlbW9uL2RsdF9kYWVtb25fZXZlbnRfaGFuZGxlcl90eXBlcy5oICB8IDIgKy0KKyBzcmMvbGliL2RsdF91c2VyLmMgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyA1IGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9jb25zb2xlL2xvZ3N0b3JhZ2UvZGx0LWxvZ3N0b3JhZ2UtY3RybC5jIGIvc3JjL2NvbnNvbGUvbG9nc3RvcmFnZS9kbHQtbG9nc3RvcmFnZS1jdHJsLmMKK2luZGV4IDUyNWMxMzcuLjY2MTRmNDQgMTAwNjQ0CistLS0gYS9zcmMvY29uc29sZS9sb2dzdG9yYWdlL2RsdC1sb2dzdG9yYWdlLWN0cmwuYworKysrIGIvc3JjL2NvbnNvbGUvbG9nc3RvcmFnZS9kbHQtbG9nc3RvcmFnZS1jdHJsLmMKK0BAIC02MSw3ICs2MSw3IEBACisgI2luY2x1ZGUgPHN0cmluZy5oPgorICNpbmNsdWRlIDxnZXRvcHQuaD4KKyAKKy0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KKysjaW5jbHVkZSA8cG9sbC5oPgorIAorICNpZiBkZWZpbmVkKF9fbGludXhfXykKKyAjICAgaW5jbHVkZSAic2QtZGFlbW9uLmgiCitkaWZmIC0tZ2l0IGEvc3JjL2RhZW1vbi9kbHRfZGFlbW9uX2V2ZW50X2hhbmRsZXIuYyBiL3NyYy9kYWVtb24vZGx0X2RhZW1vbl9ldmVudF9oYW5kbGVyLmMKK2luZGV4IDE2MTFmN2IuLjBkNDYzZGEgMTAwNjQ0CistLS0gYS9zcmMvZGFlbW9uL2RsdF9kYWVtb25fZXZlbnRfaGFuZGxlci5jCisrKysgYi9zcmMvZGFlbW9uL2RsdF9kYWVtb25fZXZlbnRfaGFuZGxlci5jCitAQCAtMzAsNyArMzAsNyBAQAorICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAKKy0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KKysjaW5jbHVkZSA8cG9sbC5oPgorICNpbmNsdWRlIDxzeXNsb2cuaD4KKyAKKyAjaW5jbHVkZSAiZGx0X2NvbW1vbi5oIgorZGlmZiAtLWdpdCBhL3NyYy9kYWVtb24vZGx0X2RhZW1vbl9ldmVudF9oYW5kbGVyLmggYi9zcmMvZGFlbW9uL2RsdF9kYWVtb25fZXZlbnRfaGFuZGxlci5oCitpbmRleCBlYjk2MTAxLi5iZDU1MGQzIDEwMDY0NAorLS0tIGEvc3JjL2RhZW1vbi9kbHRfZGFlbW9uX2V2ZW50X2hhbmRsZXIuaAorKysrIGIvc3JjL2RhZW1vbi9kbHRfZGFlbW9uX2V2ZW50X2hhbmRsZXIuaAorQEAgLTI1LDcgKzI1LDcgQEAKKyAgKiBcZmlsZSBkbHRfZGFlbW9uX2V2ZW50X2hhbmRsZXIuaAorICAqLworIAorLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgorKyNpbmNsdWRlIDxwb2xsLmg+CisgCisgI2luY2x1ZGUgImRsdF9kYWVtb25fY29ubmVjdGlvbl90eXBlcy5oIgorICNpbmNsdWRlICJkbHRfZGFlbW9uX2V2ZW50X2hhbmRsZXJfdHlwZXMuaCIKK2RpZmYgLS1naXQgYS9zcmMvZGFlbW9uL2RsdF9kYWVtb25fZXZlbnRfaGFuZGxlcl90eXBlcy5oIGIvc3JjL2RhZW1vbi9kbHRfZGFlbW9uX2V2ZW50X2hhbmRsZXJfdHlwZXMuaAoraW5kZXggMzcwZTUwMy4uMGIxNmQwOCAxMDA2NDQKKy0tLSBhL3NyYy9kYWVtb24vZGx0X2RhZW1vbl9ldmVudF9oYW5kbGVyX3R5cGVzLmgKKysrKyBiL3NyYy9kYWVtb24vZGx0X2RhZW1vbl9ldmVudF9oYW5kbGVyX3R5cGVzLmgKK0BAIC0yNSw3ICsyNSw3IEBACisgICogXGZpbGUgZGx0X2RhZW1vbl9ldmVudF9oYW5kbGVyX3R5cGVzLmgKKyAgKi8KKyAKKy0jaW5jbHVkZSA8c3lzL3BvbGwuaD4KKysjaW5jbHVkZSA8cG9sbC5oPgorIAorICNpbmNsdWRlICJkbHRfZGFlbW9uX2Nvbm5lY3Rpb25fdHlwZXMuaCIKKyAKKyNkaWZmIC0tZ2l0IGEvc3JjL2xpYi9kbHRfdXNlci5jIGIvc3JjL2xpYi9kbHRfdXNlci5jCisjaW5kZXggZmZhOWIwOS4uNTExZjk5MSAxMDA2NDQKKyMtLS0gYS9zcmMvbGliL2RsdF91c2VyLmMKKyMrKysgYi9zcmMvbGliL2RsdF91c2VyLmMKKyNAQCAtNDMsNyArNDMsNyBAQAorIyAjaW5jbHVkZSA8ZXJybm8uaD4KKyMgCisjICNpbmNsdWRlIDxzeXMvdWlvLmg+IC8qIHdyaXRldigpICovCisjLSNpbmNsdWRlIDxzeXMvcG9sbC5oPgorIysjaW5jbHVkZSA8cG9sbC5oPgorIyAKKyMgI2luY2x1ZGUgPGxpbWl0cy5oPgorIyAjaWZkZWYgbGludXgKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kbHQtZGFlbW9uL2RsdC1kYWVtb25fMi4xOC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2RsdC1kYWVtb24vZGx0LWRhZW1vbl8yLjE4LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVjNjM4YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9kbHQtZGFlbW9uL2RsdC1kYWVtb25fMi4xOC40LmJiCkBAIC0wLDAgKzEsNjIgQEAKK1NVTU1BUlkgPSAiRGlhZ25vc3RpYyBMb2cgYW5kIFRyYWNlIgorREVTQ1JJUFRJT04gPSAiVGhpcyBjb21wb25lbnQgcHJvdmlkZXMgYSBzdGFuZGFyZGlzZWQgbG9nIGFuZCB0cmFjZSBpbnRlcmZhY2UsIFwKK2Jhc2VkIG9uIHRoZSBzdGFuZGFyZGlzZWQgcHJvdG9jb2wgc3BlY2lmaWVkIGluIHRoZSBBVVRPU0FSIHN0YW5kYXJkIDQuMCBETFQuIFwKK1RoaXMgY29tcG9uZW50IGNhbiBiZSB1c2VkIGJ5IEdFTklWSSBjb21wb25lbnRzIGFuZCBvdGhlciBhcHBsaWNhdGlvbnMgYXMgXAorbG9nZ2luZyBmYWNpbGl0eSBwcm92aWRpbmc6IFwKKy0gdGhlIERMVCBzaGFyZWQgbGlicmFyeSBcCistIHRoZSBETFQgZGFlbW9uLCBpbmNsdWRpbmcgc3RhcnR1cCBzY3JpcHRzIFwKKy0gdGhlIERMVCBkYWVtb24gYWRhcHRvcnMtIHRoZSBETFQgY2xpZW50IGNvbnNvbGUgdXRpbGl0aWVzIFwKKy0gdGhlIERMVCB0ZXN0IGFwcGxpY2F0aW9ucyIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lmdlbml2aS5vcmcvIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorTElDRU5TRSA9ICJNUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTgxODQyMDgwNjBkZjg4MGZlMzEzN2I5M2ViODhhZWVhIgorCitERVBFTkRTID0gInpsaWIgZ3ppcC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9HRU5JVkkvJHtCUE59LmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgZmlsZTovLzAwMDItRG9uLXQtZXhlY3V0ZS1wcm9jZXNzZXMtYXMtYS1zcGVjaWZpYy11c2VyLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNC1Nb2RpZnktc3lzdGVtZC1jb25maWctZGlyZWN0b3J5LnBhdGNoIFwKKyAgICBmaWxlOi8vMjA0LnBhdGNoIFwKKyIKK1NSQ1JFViA9ICIxNGVhOTcxYmU3ZTgwOGI5YzUwOTljN2Y0MDRlZDNjZjM0MTg3M2M0IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywgZCl9IgorIyBHZW5lcmFsIG9wdGlvbnMKK1BBQ0tBR0VDT05GSUdbZGx0LWV4YW1wbGVzXSA9ICItRFdJVEhfRExUX0VYQU1QTEVTPU9OLC1EV0lUSF9ETFRfRVhBTVBMRVM9T0ZGLCxkbHQtZGFlbW9uLXN5c3RlbWQiCisKKyMgTGludXggb3B0aW9ucworUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItRFdJVEhfU1lTVEVNRD1PTiwtRFdJVEhfU1lTVEVNRD1PRkYsc3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZC13YXRjaGRvZ10gPSAiLURXSVRIX1NZU1RFTURfV0FUQ0hET0c9T04sLURXSVRIX1NZU1RFTURfV0FUQ0hET0c9T0ZGLHN5c3RlbWQsbGlic3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZC1qb3VybmFsXSA9ICItRFdJVEhfU1lTVEVNRF9KT1VSTkFMPU9OLC1EV0lUSF9TWVNURU1EX0pPVVJOQUw9T0ZGLHN5c3RlbWQsbGlic3lzdGVtZCIKK1BBQ0tBR0VDT05GSUdbZGx0LWRidXNdID0gIi1EV0lUSF9ETFRfREJVUz1PTiwtRFdJVEhfRExUX0RCVVM9T0ZGLGRidXMsZGJ1cy1saWIiCitQQUNLQUdFQ09ORklHW3VkcC1jb25uZWN0aW9uXSA9ICItRFdJVEhfVURQX0NPTk5FQ1RJT049T04sLURXSVRIX1VEUF9DT05ORUNUSU9OPU9GRiIKKworIyBDb21tYW5kIGxpbmUgb3B0aW9ucworUEFDS0FHRUNPTkZJR1tkbHQtc3lzdGVtXSA9ICItRFdJVEhfRExUX1NZU1RFTT1PTiwtRFdJVEhfRExUX1NZU1RFTT1PRkYiCitQQUNLQUdFQ09ORklHW2RsdC1hZGFwdG9yXSA9ICItRFdJVEhfRExUX0FEQVBUT1I9T04sLURXSVRIX0RMVF9BREFQVE9SPU9GRiwsZGx0LWRhZW1vbi1zeXN0ZW1kIgorUEFDS0FHRUNPTkZJR1tkbHQtY29uc29sZV0gPSAiLURXSVRIX0RMVF9DT05TT0xFPU9OLC1EV0lUSF9ETFRfQ09OU09MRT1PRkYsLGRsdC1kYWVtb24tc3lzdGVtZCIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBjbWFrZSBzeXN0ZW1kCisKK0VYVFJBX09FQ01BS0UgKz0gIi1EU1lTVEVNRF9VTklURElSPSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0iCisKK1BBQ0tBR0VTICs9ICIke1BOfS1zeXN0ZW1kIgorU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1zeXN0ZW1kIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzeXN0ZW1kJywgJ2RsdC5zZXJ2aWNlJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2RsdC1zeXN0ZW0nLCAnZGx0LXN5c3RlbS5zZXJ2aWNlJywgJycsIGQpfSIKK1NZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0gPSAiZW5hYmxlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LXN5c3RlbWQgPSAiIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkbHQtYWRhcHRvcicsICdkbHQtYWRhcHRvci11ZHAuc2VydmljZScsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2RsdC1leGFtcGxlcycsICdkbHQtZXhhbXBsZS11c2VyLnNlcnZpY2UnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkbHQtZXhhbXBsZXMgZGx0LWNvbnNvbGUnLCAnZGx0LXJlY2VpdmUuc2VydmljZScsICcnLCBkKX0gXAorIgorU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfS1zeXN0ZW1kID0gImRpc2FibGUiCisKK0ZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9kbHQtZmlsZXRyYW5zZmVyIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBybSAtZiAke0R9JHtiaW5kaXJ9L2RsdC10ZXN0LSoKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9maWdsZXQvZmlnbGV0LzAwMDEtYnVpbGQtYWRkLWF1dG90b29scy1zdXBwb3J0LXRvLWFsbG93LWVhc3ktY3Jvc3MtY29tcC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9maWdsZXQvZmlnbGV0LzAwMDEtYnVpbGQtYWRkLWF1dG90b29scy1zdXBwb3J0LXRvLWFsbG93LWVhc3ktY3Jvc3MtY29tcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDI5YTQ3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZpZ2xldC9maWdsZXQvMDAwMS1idWlsZC1hZGQtYXV0b3Rvb2xzLXN1cHBvcnQtdG8tYWxsb3ctZWFzeS1jcm9zcy1jb21wLnBhdGNoCkBAIC0wLDAgKzEsMjUyIEBACitGcm9tIDkwMmIwMjJjMDNhZDY3NjlhYmU0ZDdlNmZkZTFkZjdhODgzODU3ZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBCYXJ0b3N6IEdvbGFzemV3c2tpIDxiZ29sYXN6ZXdza2lAYmF5bGlicmUuY29tPgorRGF0ZTogVHVlLCAyNCBNYXIgMjAyMCAxNDo0NDo1NCArMDEwMAorU3ViamVjdDogW1BBVENIXSBidWlsZDogYWRkIGF1dG90b29scyBzdXBwb3J0IHRvIGFsbG93IGVhc3kgY3Jvc3MtY29tcGlsYXRpb24KKworU2lnbmVkLW9mZi1ieTogQmFydG9zeiBHb2xhc3pld3NraSA8YmdvbGFzemV3c2tpQGJheWxpYnJlLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdXBzdHJlYW0gdXNlcyBhIGN1c3RvbSBNYWtlZmlsZSBhbmQgYnVpbGRzIG9uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbnV4IGFzIHdlbGwgYXMgV2luZG93cy4gSSdtIG5vdCBzdXJlIGF1dG90b29scworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3VsZCBiZSBwcmVmZXJyZWQgYXMgYSBnZW5lcmFsIHNvbHV0aW9uIGJ1dCBpdAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB3b3JrcyB3ZWxsIGVub3VnaCBmb3IgeW9jdG8uXQorLS0tCisgTWFrZWZpbGUgICAgIHwgMTIyIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIE1ha2VmaWxlLmFtICB8ICA2NyArKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgY29uZmlndXJlLmFjIHwgIDIzICsrKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDkwIGluc2VydGlvbnMoKyksIDEyMiBkZWxldGlvbnMoLSkKKyBkZWxldGUgbW9kZSAxMDA2NDQgTWFrZWZpbGUKKyBjcmVhdGUgbW9kZSAxMDA2NDQgTWFrZWZpbGUuYW0KKyBjcmVhdGUgbW9kZSAxMDA2NDQgY29uZmlndXJlLmFjCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IGU5MmJjYWYuLjAwMDAwMDAKKy0tLSBhL01ha2VmaWxlCisrKysgL2Rldi9udWxsCitAQCAtMSwxMjIgKzAsMCBAQAorLSMgTWFrZWZpbGUgZm9yIGZpZ2xldCB2ZXJzaW9uIDIuMi40ICgyNiBKYW4gMjAxMSkKKy0jIGFkYXB0ZWQgZnJvbSBNYWtlZmlsZSBmb3IgZmlnbGV0IHZlcnNpb24gMi4yLjIgKDA1IEp1bHkgMjAwNSkKKy0jIGFkYXB0ZWQgZnJvbSBNYWtlZmlsZSBmb3IgZmlnbGV0IHZlcnNpb24gMi4yICgxNSBPY3QgMTk5NikKKy0jIENvcHlyaWdodCAxOTkzLCAxOTk0LDE5OTUgR2xlbm4gQ2hhcHBlbGwgYW5kIElhbiBDaGFpCistIyBDb3B5cmlnaHQgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSBKb2huIENvd2FuCistIyBDb3B5cmlnaHQgMjAwMiBDaHJpc3RpYWFuIEtlZXQKKy0jIENvcHlyaWdodCAyMDExIENsYXVkaW8gTWF0c3Vva2EKKy0KKy0jIFBsZWFzZSBub3RpY2UgdGhhdCB0byBmb2xsb3cgbW9kZXJuIHN0YW5kYXJkcyBhbmQgZWFzZSB0aGlyZC1wYXJ0eQorLSMgcGFja2FnZSBjcmVhdGlvbiwgYmluYXJpZXMgYXJlIG5vdyBpbnN0YWxsZWQgdW5kZXIgQklORElSLCBhbmQgREVTVERJUgorLSMgaXMgcmVzZXJ2ZWQgZm9yIHRoZSBpbnN0YWxsYXRpb24gcGF0aG5hbWUgcHJlZml4LgorLSMKKy0jIFBsZWFzZSBtYWtlIHN1cmUgQklORElSLCBNQU5ESVIsIERFRkFVTFRGT05URElSIGFuZAorLSMgICBERUZBVUxURk9OVEZJTEUgYXJlIGRlZmluZWQgdG8gcmVmbGVjdCB0aGUgc2l0dWF0aW9uCistIyAgIG9uIHlvdXIgY29tcHV0ZXIuICBTZWUgUkVBRE1FIGZvciBkZXRhaWxzLgorLQorLSMgRG9uJ3QgY2hhbmdlIHRoaXMgZXZlbiBpZiB5b3VyIHNoZWxsIGlzIGRpZmZlcmVudC4gVGhlIG9ubHkgcmVhc29uCistIyBmb3IgY2hhbmdpbmcgdGhpcyBpcyBpZiBzaCBpcyBub3QgaW4gdGhlIHNhbWUgcGxhY2UuCistU0hFTEwgPSAvYmluL3NoCistCistIyBUaGUgQyBjb21waWxlciBhbmQgbGlua2VyIHRvIHVzZQorLUNDCT0gZ2NjCistQ0ZMQUdTCT0gLWcgLU8yIC1XYWxsIC1Xbm8tdW51c2VkLXZhbHVlCistTEQJPSBnY2MKKy1MREZMQUdTID0KKy0KKy0jIEZlYXR1cmUgZmxhZ3M6CistIyAgIGRlZmluZSBUTEZfRk9OVFMgdG8gdXNlIFRPSWxldCBUTEYgZm9udHMKKy1YQ0ZMQUdTCT0gLURUTEZfRk9OVFMKKy0KKy0jIFdoZXJlIHRvIGluc3RhbGwgZmlsZXMKKy1wcmVmaXgJPSAvdXNyL2xvY2FsCistCistIyBXaGVyZSB0aGUgZXhlY3V0YWJsZXMgc2hvdWxkIGJlIHB1dAorLUJJTkRJUgk9ICQocHJlZml4KS9iaW4KKy0KKy0jIFdoZXJlIHRoZSBtYW4gcGFnZSBzaG91bGQgYmUgcHV0CistTUFORElSCT0gJChwcmVmaXgpL21hbgorLQorLSMgV2hlcmUgZmlnbGV0IHdpbGwgc2VhcmNoIGZpcnN0IGZvciBmb250cyAodGhlICIuZmxmIiBmaWxlcykuCistREVGQVVMVEZPTlRESVIgPSAkKHByZWZpeCkvc2hhcmUvZmlnbGV0CistIyBVc2UgdGhpcyBkZWZpbml0aW9uIGlmIHlvdSBjYW4ndCBwdXQgdGhpbmdzIGluICQocHJlZml4KS9zaGFyZS9maWdsZXQKKy0jREVGQVVMVEZPTlRESVIgPSBmb250cworLQorLSMgVGhlIGZpbGVuYW1lIG9mIHRoZSBmb250IHRvIGJlIHVzZWQgaWYgbm8gb3RoZXIgaXMgc3BlY2lmaWVkLAorLSMgICB3aXRob3V0IHN1ZmZpeC4oc3RhbmRhcmQgaXMgcmVjb21tZW5kZWQsIGJ1dCBhbnkgb3RoZXIgY2FuIGJlCistIyAgIHVzZWQpLiBUaGlzIGZvbnQgZmlsZSBzaG91bGQgcmVzaWRlIGluIHRoZSBkaXJlY3Rvcnkgc3BlY2lmaWVkCistIyAgIGJ5IERFRkFVTFRGT05URElSLgorLURFRkFVTFRGT05URklMRSA9IHN0YW5kYXJkCistCistIyMKKy0jIyAgRU5EIE9GIENPTkZJR1VSQVRJT04gU0VDVElPTgorLSMjCistCistVkVSU0lPTgk9IDIuMi41CistRElTVAk9IGZpZ2xldC0kKFZFUlNJT04pCistT0JKUwk9IGZpZ2xldC5vIHppcGlvLm8gY3JjLm8gaW5mbGF0ZS5vIHV0ZjgubworLUJJTlMJPSBmaWdsZXQgY2hrZm9udCBmaWdsaXN0IHNob3dmaWdmb250cworLU1BTlVBTAk9IGZpZ2xldC42IGNoa2ZvbnQuNiBmaWdsaXN0LjYgc2hvd2ZpZ2ZvbnRzLjYKKy1ERklMRVMJPSBNYWtlZmlsZSBNYWtlZmlsZS50YyAkKE1BTlVBTCkgJChPQkpTOi5vPS5jKSBjaGtmb250LmMgZ2V0b3B0LmMgXAorLQkgIGZpZ2xpc3Qgc2hvd2ZpZ2ZvbnRzIENIQU5HRVMgRkFRIFJFQURNRSBMSUNFTlNFIGZpZ2ZvbnQudHh0IFwKKy0JICBjcmMuaCBpbmZsYXRlLmggemlwaW8uaCB1dGY4LmggcnVuLXRlc3RzLnNoIGZpZ21hZ2ljCistCistLmMubzoKKy0JJChDQykgLWMgJChDRkxBR1MpICQoWENGTEFHUykgLURERUZBVUxURk9OVERJUj1cIiQoREVGQVVMVEZPTlRESVIpXCIgXAorLQkJLURERUZBVUxURk9OVEZJTEU9XCIkKERFRkFVTFRGT05URklMRSlcIiAtbyAkKi5vICQ8CistCistYWxsOiAkKEJJTlMpCistCistZmlnbGV0OiAkKE9CSlMpCistCSQoTEQpICQoTERGTEFHUykgLW8gJEAgJChPQkpTKQorLQorLWNoa2ZvbnQ6IGNoa2ZvbnQubworLQkkKExEKSAkKExERkxBR1MpIC1vICRAIGNoa2ZvbnQubworLQorLWNsZWFuOgorLQlybSAtZiAqLm8gKn4gY29yZSBmaWdsZXQgY2hrZm9udAorLQorLWluc3RhbGw6IGFsbAorLQlta2RpciAtcCAkKERFU1RESVIpJChCSU5ESVIpCistCW1rZGlyIC1wICQoREVTVERJUikkKE1BTkRJUikvbWFuNgorLQlta2RpciAtcCAkKERFU1RESVIpJChERUZBVUxURk9OVERJUikKKy0JY3AgJChCSU5TKSAkKERFU1RESVIpJChCSU5ESVIpCistCWNwICQoTUFOVUFMKSAkKERFU1RESVIpJChNQU5ESVIpL21hbjYKKy0JY3AgZm9udHMvKi5mbGYgJChERVNURElSKSQoREVGQVVMVEZPTlRESVIpCistCWNwIGZvbnRzLyouZmxjICQoREVTVERJUikkKERFRkFVTFRGT05URElSKQorLQorLWRpc3Q6CistCXJtIC1SZiAkKERJU1QpICQoRElTVCkudGFyLmd6CistCW1rZGlyICQoRElTVCkvCistCWNwICQoREZJTEVTKSAkKERJU1QpLworLQlta2RpciAkKERJU1QpL2ZvbnRzCistCWNwIGZvbnRzLyouZmxbZmNdICQoRElTVCkvZm9udHMKKy0JbWtkaXIgJChESVNUKS90ZXN0cworLQljcCB0ZXN0cy8qdHh0IHRlc3RzL2VtYm9zcy50bGYgJChESVNUKS90ZXN0cworLQl0YXIgY3ZmIC0gJChESVNUKSB8IGd6aXAgLTljID4gJChESVNUKS50YXIuZ3oKKy0Jcm0gLVJmICQoRElTVCkKKy0JdGFyIHhmICQoRElTVCkudGFyLmd6CistCShjZCAkKERJU1QpOyBtYWtlIGFsbCBjaGVjayB2ZXJjaGVjaykKKy0JQHJtIC1SZiAkKERJU1QpCistCUBlY2hvCistCUBscyAtbCAkKERJU1QpLnRhci5negorLQorLWNoZWNrOgorLQlAZWNobyAiUnVuIHRlc3RzIGluIGBwd2RgIgorLQlALi9ydW4tdGVzdHMuc2ggZm9udHMKKy0JQGVjaG8KKy0KKy12ZXJjaGVjazoKKy0JQHByaW50ZiAiSW5mb2NvZGU6ICI7IC4vZmlnbGV0IC1JMQorLQlALi9maWdsZXQgLXZ8c2VkIC1uICcvVmVyc2lvbi9zLy4qXChWZXJzaW9uXCkvXDEvcCcKKy0JQHByaW50ZiAiUkVBRE1FOiAiOyBoZWFkIC0xIDwgUkVBRE1FfHNlZCAncy8uKikgLy8nCistCUBwcmludGYgIkZBUTogIjsgZ3JlcCBsYXRlc3QgRkFRfHNlZCAncy8gYW5kIGNhbi4qLy8nCistCUBncmVwIC1oICJeXC5USCIgKi42CistCistJChPQkpTKSBjaGtmb250Lm8gZ2V0b3B0Lm86IE1ha2VmaWxlCistY2hrZm9udC5vOiBjaGtmb250LmMKKy1jcmMubzogY3JjLmMgY3JjLmgKKy1maWdsZXQubzogZmlnbGV0LmMgemlwaW8uaAorLWdldG9wdC5vOiBnZXRvcHQuYworLWluZmxhdGUubzogaW5mbGF0ZS5jIGluZmxhdGUuaAorLXppcGlvLm86IHppcGlvLmMgemlwaW8uaCBpbmZsYXRlLmggY3JjLmgKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uN2ZlYjQyYworLS0tIC9kZXYvbnVsbAorKysrIGIvTWFrZWZpbGUuYW0KK0BAIC0wLDAgKzEsNjcgQEAKKytBTV9DRkxBR1MgPSAtaW5jbHVkZSAkKHRvcF9idWlsZGRpcikvY29uZmlnLmggLVdhbGwgLVdleHRyYSAtZworKworK2Jpbl9QUk9HUkFNUyA9IGZpZ2xldCBjaGtmb250CisrZGlzdF9iaW5fU0NSSVBUUyA9IGZpZ2xpc3Qgc2hvd2ZpZ2ZvbnRzCisrCisrZmlnbGV0X1NPVVJDRVMgPSBmaWdsZXQuYyB6aXBpby5jIGNyYy5jIGluZmxhdGUuYyB1dGY4LmMKKytjaGtmb250X1NPVVJDRVMgPSBjaGtmb250LmMKKysKKytmb250ZGlyID0gJChwcmVmaXgpL3NoYXJlL2ZpZ2xldAorK2Rpc3RfZm9udF9EQVRBID0gXAorKwlmb250cy82NDYtY2EyLmZsYyBcCisrCWZvbnRzLzY0Ni1mci5mbGMgXAorKwlmb250cy82NDYtbm8uZmxjIFwKKysJZm9udHMvODg1OS00LmZsYyBcCisrCWZvbnRzL2J1YmJsZS5mbGYgXAorKwlmb250cy9sZWFuLmZsZiBcCisrCWZvbnRzL3Ntc2NyaXB0LmZsZiBcCisrCWZvbnRzL3V0ZjguZmxjIFwKKysJZm9udHMvNjQ2LWNhLmZsYyBcCisrCWZvbnRzLzY0Ni1nYi5mbGMgXAorKwlmb250cy82NDYtcHQyLmZsYyBcCisrCWZvbnRzLzg4NTktNS5mbGMgXAorKwlmb250cy9kaWdpdGFsLmZsZiBcCisrCWZvbnRzL21pbmkuZmxmIFwKKysJZm9udHMvc21zaGFkb3cuZmxmIFwKKysJZm9udHMvNjQ2LWNuLmZsYyBcCisrCWZvbnRzLzY0Ni1odS5mbGMgXAorKwlmb250cy82NDYtcHQuZmxjIFwKKysJZm9udHMvODg1OS03LmZsYyBcCisrCWZvbnRzL2ZyYW5nby5mbGMgXAorKwlmb250cy9tbmVtb25pYy5mbGYgXAorKwlmb250cy9zbXNsYW50LmZsZiBcCisrCWZvbnRzLzY0Ni1jdS5mbGMgXAorKwlmb250cy82NDYtaXJ2LmZsYyBcCisrCWZvbnRzLzY0Ni1zZTIuZmxjIFwKKysJZm9udHMvODg1OS04LmZsYyBcCisrCWZvbnRzL2h6LmZsYyBcCisrCWZvbnRzL21vc2Nvdy5mbGMgXAorKwlmb250cy9zdGFuZGFyZC5mbGYgXAorKwlmb250cy82NDYtZGUuZmxjIFwKKysJZm9udHMvNjQ2LWl0LmZsYyBcCisrCWZvbnRzLzY0Ni1zZS5mbGMgXAorKwlmb250cy84ODU5LTkuZmxjIFwKKysJZm9udHMvaWxoZWJyZXcuZmxjIFwKKysJZm9udHMvc2NyaXB0LmZsZiBcCisrCWZvbnRzL3Rlcm0uZmxmIFwKKysJZm9udHMvNjQ2LWRrLmZsYyBcCisrCWZvbnRzLzY0Ni1qcC5mbGMgXAorKwlmb250cy82NDYteXUuZmxjIFwKKysJZm9udHMvYmFubmVyLmZsZiBcCisrCWZvbnRzL2l2cml0LmZsZiBcCisrCWZvbnRzL3NoYWRvdy5mbGYgXAorKwlmb250cy91cHBlci5mbGMgXAorKwlmb250cy82NDYtZXMyLmZsYyBcCisrCWZvbnRzLzY0Ni1rci5mbGMgXAorKwlmb250cy84ODU5LTIuZmxjIFwKKysJZm9udHMvYmlnLmZsZiBcCisrCWZvbnRzL2ppczAyMDEuZmxjIFwKKysJZm9udHMvc2xhbnQuZmxmIFwKKysJZm9udHMvdXNoZWJyZXcuZmxjIFwKKysJZm9udHMvNjQ2LWVzLmZsYyBcCisrCWZvbnRzLzY0Ni1ubzIuZmxjIFwKKysJZm9udHMvODg1OS0zLmZsYyBcCisrCWZvbnRzL2Jsb2NrLmZsZiBcCisrCWZvbnRzL2tvaThyLmZsYyBcCisrCWZvbnRzL3NtYWxsLmZsZiBcCisrCWZvbnRzL3Vza2F0YS5mbGMKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi43MjE1NGUyCistLS0gL2Rldi9udWxsCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0wLDAgKzEsMjMgQEAKKytBQ19QUkVSRVEoMi42MSkKKysKKytBQ19JTklUKFtmaWdsZXRdLCAyLjIuNSkKKysKKytBQ19DT05GSUdfQVVYX0RJUihbYXV0b3N0dWZmXSkKKytBQ19DT05GSUdfTUFDUk9fRElSUyhbbTRdKQorK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ24gc3ViZGlyLW9iamVjdHNdKQorK200X2lmZGVmKFtBTV9TSUxFTlRfUlVMRVNdLCBbQU1fU0lMRU5UX1JVTEVTKFt5ZXNdKV0pCisrCisrQUNfQ09ORklHX1NSQ0RJUihbZmlnbGV0LmNdKQorK0FDX0NPTkZJR19IRUFERVIoW2NvbmZpZy5oXSkKKysKKytBQ19ERUZJTkUoW0RFRkFVTFRGT05URElSXSwgWyIvdXNyL3NoYXJlL2ZpZ2xldCJdLCBbRGVmYXVsdCBmb250IGRpcmVjdG9yeV0pCisrQUNfREVGSU5FKFtERUZBVUxURk9OVEZJTEVdLCBbInN0YW5kYXJkIl0sIFtEZWZhdWx0IGZvbnRdKQorKworK0FNX1BST0dfQVIKKytBQ19QUk9HX0NDCisrQUNfUFJPR19JTlNUQUxMCisrQUNfSEVBREVSX1NUREMKKysKKytBQ19DT05GSUdfRklMRVMoW01ha2VmaWxlXSkKKysKKytBQ19PVVRQVVQKKy0tIAorMi4yNS4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9maWdsZXQvZmlnbGV0X2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9maWdsZXQvZmlnbGV0X2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjExNjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZpZ2xldC9maWdsZXRfZ2l0LmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiRklHbGV0IGlzIGEgcHJvZ3JhbSB0aGF0IGNyZWF0ZXMgbGFyZ2UgY2hhcmFjdGVycyBvdXQgb2Ygb3JkaW5hcnkgc2NyZWVuIGNoYXJhY3RlcnMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZpZ2xldC5vcmcvIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE2ODhiY2Q5N2IyNzcwNGYxYWZjYWM3MzM2NDA5ODU3IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY21hdHN1b2thL2ZpZ2xldC5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC1hZGQtYXV0b3Rvb2xzLXN1cHBvcnQtdG8tYWxsb3ctZWFzeS1jcm9zcy1jb21wLnBhdGNoIgorU1JDUkVWID0gIjViYmNkNzM4M2E4YzNhNTMxMjk5YjIxNmIwYzczNGUxNDk1YzZkYjMiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorUFYgPSAiMi4yLjUrZ2l0JHtTUkNQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9mbHVlbnRiaXQvZmx1ZW50Yml0XzEuMy41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsdWVudGJpdC9mbHVlbnRiaXRfMS4zLjUuYmIKaW5kZXggZDhjYjhiNS4uMDY4OTVhMCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsdWVudGJpdC9mbHVlbnRiaXRfMS4zLjUuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2ZsdWVudGJpdC9mbHVlbnRiaXRfMS4zLjUuYmIKQEAgLTQzLDYgKzQzLDggQEAKIAogRVhUUkFfT0VDTUFLRSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCctREZMQl9TWVNURU1EPU9uJywnJyxkKX0iCiAKK0VYVFJBX09FQ01BS0VfYXBwZW5kX3Jpc2N2NjQgPSAiIC1ERkxCX0RFUFM9J2F0b21pYyciCisKICMgS2Fma2EgT3V0cHV0IHBsdWdpbiAoZGlzYWJsZWQgYnkgZGVmYXVsdCk6IG5vdGUgdGhhdCB3aGVuCiAjIGVuYWJsaW5nIEthZmthIG91dHB1dCBwbHVnaW4sIHRoZSBiYWNrZW5kIGxpYnJhcnkgbGlicmRrYWZrYQogIyByZXF1aXJlcyAnb3BlbnNzbCcgYXMgYSBkZXBlbmRlbmN5LgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLTMuMTIuNi8wMDAxLWluY2x1ZGUtY3Vwcy1wcGQuaC1mb3ItbWlzc2luZy1wcGQtZGVmaW5pdGlvbnMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAtMy4xMi42LzAwMDEtaW5jbHVkZS1jdXBzLXBwZC5oLWZvci1taXNzaW5nLXBwZC1kZWZpbml0aW9ucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjI1OWI1Zi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAtMy4xMi42LzAwMDEtaW5jbHVkZS1jdXBzLXBwZC5oLWZvci1taXNzaW5nLXBwZC1kZWZpbml0aW9ucy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gN2VmOWMwNDBkZDk1OTEwNWMxNmQ0ZGM2N2UxNGYzYmJlYTI1ZTc3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE2IERlYyAyMDE2IDE5OjUxOjE5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgY3Vwcy9wcGQuaCBmb3IgbWlzc2luZyBwcGQgZGVmaW5pdGlvbnMKLQotRml4ZXMgZXJyb3JzIHNwb3R0ZWQgYnkgY2xhbmcKLQotfCBwcm50L2hwY3Vwcy9IUEN1cHNGaWx0ZXIuY3BwOjM2NToxODogZXJyb3I6IHVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgJ3BwZEZpbmRBdHRyJwotfCAgICAgaWYgKCgoYXR0ciA9IHBwZEZpbmRBdHRyKG1fcHBkLCAiaHBQcmludGVyTGFuZ3VhZ2UiLCBOVUxMKSkgPT0gTlVMTCkgfHwKLXwgICAgICAgICAgICAgICAgICBeCi18IHBybnQvaHBjdXBzL0hQQ3Vwc0ZpbHRlci5jcHA6MzY4OjEzOiBlcnJvcjogdXNlIG9mIHVuZGVjbGFyZWQgaWRlbnRpZmllciAncHBkQ2xvc2UnCi18ICAgICAgICAgICAgIHBwZENsb3NlKG1fcHBkKTsKLXwgICAgICAgICAgICAgXgotfCBwcm50L2hwY3Vwcy9IUEN1cHNGaWx0ZXIuY3BwOjQ0NDo5OiBlcnJvcjogdXNlIG9mIHVuZGVjbGFyZWQgaWRlbnRpZmllciAncHBkQ2xvc2UnCi18ICAgICAgICAgcHBkQ2xvc2UobV9wcGQpOwotfCAgICAgICAgIF4KLXwgcHJudC9ocGN1cHMvSFBDdXBzRmlsdGVyLmNwcDo0OTc6MTM6IGVycm9yOiB1c2Ugb2YgdW5kZWNsYXJlZCBpZGVudGlmaWVyICdwcGRPcGVuRmlsZScKLXwgICAgIG1fcHBkID0gcHBkT3BlbkZpbGUoZ2V0ZW52KCJQUEQiKSk7Ci18ICAgICAgICAgICAgIF4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBwcm50L2hwY3Vwcy9IUEN1cHNGaWx0ZXIuaCB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvcHJudC9ocGN1cHMvSFBDdXBzRmlsdGVyLmggYi9wcm50L2hwY3Vwcy9IUEN1cHNGaWx0ZXIuaAotaW5kZXggMDQzMWE3YS4uZWIwY2FkNiAxMDA2NDQKLS0tLSBhL3BybnQvaHBjdXBzL0hQQ3Vwc0ZpbHRlci5oCi0rKysgYi9wcm50L2hwY3Vwcy9IUEN1cHNGaWx0ZXIuaAotQEAgLTM3LDYgKzM3LDcgQEAKLSAjaW5jbHVkZSAiSm9iLmgiDQotIA0KLSAjaW5jbHVkZSAiZGJ1c2NvbW0uaCINCi0rI2luY2x1ZGUgPGN1cHMvcHBkLmg+DQotIA0KLSAjZGVmaW5lCQlEQklUTUFQRklMRUhFQURFUgkJMTQNCi0gI2RlZmluZQkJREJJVE1BUElORk9IRUFERVIJCTQwDQotLS0gCi0xLjkuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAtMy4xMi42L2NvbmZpZ3VyZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcC0zLjEyLjYvY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWMwMDVjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcC0zLjEyLjYvY29uZmlndXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotSW5kZXg6IGhwbGlwLTMuMTIuNi9jb25maWd1cmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBocGxpcC0zLjEyLjYub3JpZy9jb25maWd1cmUuaW4JMjAxNC0wNy0xNiAyMDowMzo1MS4zMTAwNDQxOTYgKzAwMDAKLSsrKyBocGxpcC0zLjEyLjYvY29uZmlndXJlLmluCTIwMTQtMDctMTggMDc6NTM6MzEuNTg5NTU5MTkyICswMDAwCi1AQCAtMjcsOCArMjcsNyBAQAotIAotICNBQ19QUkVSRVEoMi41OSkKLSBBQ19JTklUKFtIUCBMaW51eCBJbWFnaW5nIGFuZCBQcmludGluZ10sIFszLjEyLjZdLCBbMy4xMi42XSwgW2hwbGlwXSkKLS0jQU1fSU5JVF9BVVRPTUFLRShbMS45IGZvcmVpZ25dKQotLUFNX0lOSVRfQVVUT01BS0UKLStBTV9JTklUX0FVVE9NQUtFKFsxLjkgZm9yZWlnbl0pCi0gQUNfRElTQUJMRV9TVEFUSUMKLSAKLSAjIENoZWNrcyBmb3IgcHJvZ3JhbXMuCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAtMy4xMi42L2N1cHMtMS42LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLTMuMTIuNi9jdXBzLTEuNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2RmMDFhYS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAtMy4xMi42L2N1cHMtMS42LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzk1ICswLDAgQEAKLUltcG9ydGVkIGZyb20gZ2VudG9vOgotaHR0cHM6Ly9idWdzLmdlbnRvby5vcmcvc2hvd19idWcuY2dpP2lkPTQyODY3MgotCi1kaWZmIC1OYXVyIGhwbGlwLTMuMTIuNl9vbGQvcHJudC9jdXBzZXh0L2N1cHNleHQuYyBocGxpcC0zLjEyLjYvcHJudC9jdXBzZXh0L2N1cHNleHQuYwotLS0tIGhwbGlwLTMuMTIuNl9vbGQvcHJudC9jdXBzZXh0L2N1cHNleHQuYwkyMDEyLTA4LTA0IDA5OjE4OjE4LjM4ODMzMDAzOCArMDIwMAotKysrIGhwbGlwLTMuMTIuNi9wcm50L2N1cHNleHQvY3Vwc2V4dC5jCTIwMTItMDgtMDQgMDk6MTg6MjcuODU1MTgxMzI3ICswMjAwCi1AQCAtODcsNiArODcsNDYgQEAKLSAjZGVmaW5lIFBZX1NTSVpFX1RfTUlOIElOVF9NSU4NCi0gI2VuZGlmDQotIA0KLSsjaWYgKENVUFNfVkVSU0lPTl9NQUpPUiA+IDEpIHx8IChDVVBTX1ZFUlNJT05fTUlOT1IgPiA1KQ0KLSsjZGVmaW5lIEhBVkVfQ1VQU18xXzYgMQ0KLSsjZW5kaWYNCi0rDQotKyNpZm5kZWYgSEFWRV9DVVBTXzFfNg0KLSsjZGVmaW5lIGlwcEdldENvdW50KGF0dHIpICAgICBhdHRyLT5udW1fdmFsdWVzDQotKyNkZWZpbmUgaXBwR2V0R3JvdXBUYWcoYXR0cikgIGF0dHItPmdyb3VwX3RhZw0KLSsjZGVmaW5lIGlwcEdldFZhbHVlVGFnKGF0dHIpICBhdHRyLT52YWx1ZV90YWcNCi0rI2RlZmluZSBpcHBHZXROYW1lKGF0dHIpICAgICAgYXR0ci0+bmFtZQ0KLSsjZGVmaW5lIGlwcEdldEJvb2xlYW4oYXR0ciwgZWxlbWVudCkgYXR0ci0+dmFsdWVzW2VsZW1lbnRdLmJvb2xlYW4NCi0rI2RlZmluZSBpcHBHZXRJbnRlZ2VyKGF0dHIsIGVsZW1lbnQpIGF0dHItPnZhbHVlc1tlbGVtZW50XS5pbnRlZ2VyDQotKyNkZWZpbmUgaXBwR2V0U3RhdHVzQ29kZShpcHApIGlwcC0+cmVxdWVzdC5zdGF0dXMuc3RhdHVzX2NvZGUNCi0rI2RlZmluZSBpcHBHZXRTdHJpbmcoYXR0ciwgZWxlbWVudCwgbGFuZ3VhZ2UpIGF0dHItPnZhbHVlc1tlbGVtZW50XS5zdHJpbmcudGV4dA0KLSsNCi0rc3RhdGljIGlwcF9hdHRyaWJ1dGVfdCAqIGlwcEZpcnN0QXR0cmlidXRlKCBpcHBfdCAqaXBwICkNCi0rew0KLSsgICAgaWYgKCFpcHApDQotKyAgICAgICAgcmV0dXJuIChOVUxMKTsNCi0rICAgIHJldHVybiAoaXBwLT5jdXJyZW50ID0gaXBwLT5hdHRycyk7DQotK30NCi0rDQotK3N0YXRpYyBpcHBfYXR0cmlidXRlX3QgKiBpcHBOZXh0QXR0cmlidXRlKCBpcHBfdCAqaXBwICkNCi0rew0KLSsgICAgaWYgKCFpcHAgfHwgIWlwcC0+Y3VycmVudCkNCi0rICAgICAgICByZXR1cm4gKE5VTEwpOw0KLSsgICAgcmV0dXJuIChpcHAtPmN1cnJlbnQgPSBpcHAtPmN1cnJlbnQtPm5leHQpOw0KLSt9DQotKw0KLStzdGF0aWMgaW50IGlwcFNldE9wZXJhdGlvbiggaXBwX3QgKmlwcCwgaXBwX29wX3Qgb3AgKQ0KLSt7DQotKyAgICBpcHAtPnJlcXVlc3Qub3Aub3BlcmF0aW9uX2lkID0gb3A7DQotKyAgICByZXR1cm4gKDEpOw0KLSt9DQotKw0KLStzdGF0aWMgaW50IGlwcFNldFJlcXVlc3RJZCggaXBwX3QgKmlwcCwgaW50IHJlcXVlc3RfaWQgKQ0KLSt7DQotKyAgICBpcHAtPnJlcXVlc3QuYW55LnJlcXVlc3RfaWQgPSByZXF1ZXN0X2lkOw0KLSsgICAgcmV0dXJuICgxKTsNCi0rfQ0KLSsjZW5kaWYNCi0gDQotIGludCBnX251bV9vcHRpb25zID0gMDsNCi0gY3Vwc19vcHRpb25fdCAqIGdfb3B0aW9uczsNCi1AQCAtMzMzLDggKzM3Myw4IEBACi0gICAgIHJlcXVlc3QgPSBpcHBOZXcoKTsNCi0gICAgIGxhbmd1YWdlID0gY3Vwc0xhbmdEZWZhdWx0KCk7DQotIA0KLS0gICAgcmVxdWVzdC0+cmVxdWVzdC5vcC5vcGVyYXRpb25faWQgPSBDVVBTX0dFVF9QUklOVEVSUzsNCi0tICAgIHJlcXVlc3QtPnJlcXVlc3QuYW55LnJlcXVlc3RfaWQgPSAxOw0KLSsgICAgaXBwU2V0T3BlcmF0aW9uKCByZXF1ZXN0LCBDVVBTX0dFVF9QUklOVEVSUyApOw0KLSsgICAgaXBwU2V0UmVxdWVzdElkICggcmVxdWVzdCwgMSk7DQotIA0KLSAgICAgaXBwQWRkU3RyaW5nKCByZXF1ZXN0LCBJUFBfVEFHX09QRVJBVElPTiwgSVBQX1RBR19DSEFSU0VULA0KLSAgICAgICAgICAgICAgICAgICAiYXR0cmlidXRlcy1jaGFyc2V0IiwgTlVMTCwgY3Vwc0xhbmdFbmNvZGluZyggbGFuZ3VhZ2UgKSApOw0KLUBAIC0zNzgsMTAgKzQxOCwxMCBAQAotICAgICAgICAgaXBwX3BzdGF0ZV90IHN0YXRlOw0KLSAgICAgICAgIGludCBpID0gMDsNCi0gDQotLSAgICAgICAgZm9yICggYXR0ciA9IHJlc3BvbnNlLT5hdHRyczsgYXR0ciAhPSBOVUxMOyBhdHRyID0gYXR0ci0+bmV4dCApDQotKyAgICAgICAgZm9yICggYXR0ciA9IGlwcEZpcnN0QXR0cmlidXRlKCByZXNwb25zZSApOyBhdHRyICE9IE5VTEw7IGF0dHIgPSBpcHBOZXh0QXR0cmlidXRlKCByZXNwb25zZSApICkNCi0gICAgICAgICB7DQotLSAgICAgICAgICAgIHdoaWxlICggYXR0ciAhPSBOVUxMICYmIGF0dHItPmdyb3VwX3RhZyAhPSBJUFBfVEFHX1BSSU5URVIgKQ0KLS0gICAgICAgICAgICAgICAgYXR0ciA9IGF0dHItPm5leHQ7DQotKyAgICAgICAgICAgIHdoaWxlICggYXR0ciAhPSBOVUxMICYmIGlwcEdldEdyb3VwVGFnKCBhdHRyICkgIT0gSVBQX1RBR19QUklOVEVSICkNCi0rICAgICAgICAgICAgICAgIGF0dHIgPSBpcHBOZXh0QXR0cmlidXRlKCByZXNwb25zZSApOw0KLSANCi0gICAgICAgICAgICAgaWYgKCBhdHRyID09IE5VTEwgKQ0KLSAgICAgICAgICAgICAgICAgYnJlYWs7DQotQEAgLTM5MCw0MSArNDMwLDQxIEBACi0gICAgICAgICAgICAgc3RhdGUgPSBJUFBfUFJJTlRFUl9JRExFOw0KLSAgICAgICAgICAgICBhY2NlcHRpbmcgPSAwOw0KLSANCi0tICAgICAgICAgICAgd2hpbGUgKCBhdHRyICE9IE5VTEwgJiYgYXR0ci0+Z3JvdXBfdGFnID09IElQUF9UQUdfUFJJTlRFUiApDQotKyAgICAgICAgICAgIHdoaWxlICggYXR0ciAhPSBOVUxMICYmIGlwcEdldEdyb3VwVGFnKCBhdHRyICkgPT0gSVBQX1RBR19QUklOVEVSICkNCi0gICAgICAgICAgICAgew0KLS0gICAgICAgICAgICAgICAgaWYgKCBzdHJjbXAoIGF0dHItPm5hbWUsICJwcmludGVyLW5hbWUiICkgPT0gMCAmJg0KLS0gICAgICAgICAgICAgICAgICAgICAgICBhdHRyLT52YWx1ZV90YWcgPT0gSVBQX1RBR19OQU1FICkNCi0tICAgICAgICAgICAgICAgICAgICBuYW1lID0gYXR0ci0+dmFsdWVzWyAwIF0uc3RyaW5nLnRleHQ7DQotLQ0KLS0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIHN0cmNtcCggYXR0ci0+bmFtZSwgImRldmljZS11cmkiICkgPT0gMCAmJg0KLS0gICAgICAgICAgICAgICAgICAgICAgICBhdHRyLT52YWx1ZV90YWcgPT0gSVBQX1RBR19VUkkgKQ0KLS0gICAgICAgICAgICAgICAgICAgIGRldmljZV91cmkgPSBhdHRyLT52YWx1ZXNbIDAgXS5zdHJpbmcudGV4dDsNCi0tDQotLSAgICAgICAgICAgICAgICBlbHNlIGlmICggc3RyY21wKCBhdHRyLT5uYW1lLCAicHJpbnRlci11cmktc3VwcG9ydGVkIiApID09IDAgJiYNCi0tICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci0+dmFsdWVfdGFnID09IElQUF9UQUdfVVJJICkNCi0tICAgICAgICAgICAgICAgICAgICBwcmludGVyX3VyaSA9IGF0dHItPnZhbHVlc1sgMCBdLnN0cmluZy50ZXh0Ow0KLS0NCi0tICAgICAgICAgICAgICAgIGVsc2UgaWYgKCBzdHJjbXAoIGF0dHItPm5hbWUsICJwcmludGVyLWluZm8iICkgPT0gMCAmJg0KLS0gICAgICAgICAgICAgICAgICAgICAgICBhdHRyLT52YWx1ZV90YWcgPT0gSVBQX1RBR19URVhUICkNCi0tICAgICAgICAgICAgICAgICAgICBpbmZvID0gYXR0ci0+dmFsdWVzWyAwIF0uc3RyaW5nLnRleHQ7DQotLQ0KLS0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIHN0cmNtcCggYXR0ci0+bmFtZSwgInByaW50ZXItbG9jYXRpb24iICkgPT0gMCAmJg0KLS0gICAgICAgICAgICAgICAgICAgICAgICBhdHRyLT52YWx1ZV90YWcgPT0gSVBQX1RBR19URVhUICkNCi0tICAgICAgICAgICAgICAgICAgICBsb2NhdGlvbiA9IGF0dHItPnZhbHVlc1sgMCBdLnN0cmluZy50ZXh0Ow0KLS0NCi0tICAgICAgICAgICAgICAgIGVsc2UgaWYgKCBzdHJjbXAoIGF0dHItPm5hbWUsICJwcmludGVyLW1ha2UtYW5kLW1vZGVsIiApID09IDAgJiYNCi0tICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci0+dmFsdWVfdGFnID09IElQUF9UQUdfVEVYVCApDQotLSAgICAgICAgICAgICAgICAgICAgbWFrZV9tb2RlbCA9IGF0dHItPnZhbHVlc1sgMCBdLnN0cmluZy50ZXh0Ow0KLS0NCi0tICAgICAgICAgICAgICAgIGVsc2UgaWYgKCBzdHJjbXAoIGF0dHItPm5hbWUsICJwcmludGVyLXN0YXRlIiApID09IDAgJiYNCi0tICAgICAgICAgICAgICAgICAgICAgICAgYXR0ci0+dmFsdWVfdGFnID09IElQUF9UQUdfRU5VTSApDQotLSAgICAgICAgICAgICAgICAgICAgc3RhdGUgPSAoIGlwcF9wc3RhdGVfdCApIGF0dHItPnZhbHVlc1sgMCBdLmludGVnZXI7DQotLQ0KLS0gICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChhdHRyLT5uYW1lLCAicHJpbnRlci1pcy1hY2NlcHRpbmctam9icyIpICYmDQotLSAgICAgICAgICAgICAgICAgICAgICAgIGF0dHItPnZhbHVlX3RhZyA9PSBJUFBfVEFHX0JPT0xFQU4pDQotLSAgICAgICAgICAgICAgICAgICAgYWNjZXB0aW5nID0gYXR0ci0+dmFsdWVzWyAwIF0uYm9vbGVhbjsNCi0rICAgICAgICAgICAgICAgIGlmICggc3RyY21wKCBpcHBHZXROYW1lKCBhdHRyICksICJwcmludGVyLW5hbWUiICkgPT0gMCAmJg0KLSsgICAgICAgICAgICAgICAgICAgICAgICBpcHBHZXRWYWx1ZVRhZyggYXR0ciApID09IElQUF9UQUdfTkFNRSApDQotKyAgICAgICAgICAgICAgICAgICAgbmFtZSA9IGlwcEdldFN0cmluZyggYXR0ciwgMCwgTlVMTCApOw0KLSsNCi0rICAgICAgICAgICAgICAgIGVsc2UgaWYgKCBzdHJjbXAoIGlwcEdldE5hbWUoIGF0dHIgKSwgImRldmljZS11cmkiICkgPT0gMCAmJg0KLSsgICAgICAgICAgICAgICAgICAgICAgICBpcHBHZXRWYWx1ZVRhZyggYXR0ciApID09IElQUF9UQUdfVVJJICkNCi0rICAgICAgICAgICAgICAgICAgICBkZXZpY2VfdXJpID0gaXBwR2V0U3RyaW5nKCBhdHRyLCAwLCBOVUxMICk7DQotKw0KLSsgICAgICAgICAgICAgICAgZWxzZSBpZiAoIHN0cmNtcCggaXBwR2V0TmFtZSggYXR0ciApLCAicHJpbnRlci11cmktc3VwcG9ydGVkIiApID09IDAgJiYNCi0rICAgICAgICAgICAgICAgICAgICAgICAgaXBwR2V0VmFsdWVUYWcoIGF0dHIgKSA9PSBJUFBfVEFHX1VSSSApDQotKyAgICAgICAgICAgICAgICAgICAgcHJpbnRlcl91cmkgPSBpcHBHZXRTdHJpbmcoIGF0dHIsIDAsIE5VTEwgKTsNCi0rDQotKyAgICAgICAgICAgICAgICBlbHNlIGlmICggc3RyY21wKCBpcHBHZXROYW1lKCBhdHRyICksICJwcmludGVyLWluZm8iICkgPT0gMCAmJg0KLSsgICAgICAgICAgICAgICAgICAgICAgICBpcHBHZXRWYWx1ZVRhZyggYXR0ciApID09IElQUF9UQUdfVEVYVCApDQotKyAgICAgICAgICAgICAgICAgICAgaW5mbyA9IGlwcEdldFN0cmluZyggYXR0ciwgMCwgTlVMTCApOw0KLSsNCi0rICAgICAgICAgICAgICAgIGVsc2UgaWYgKCBzdHJjbXAoIGlwcEdldE5hbWUoIGF0dHIgKSwgInByaW50ZXItbG9jYXRpb24iICkgPT0gMCAmJg0KLSsgICAgICAgICAgICAgICAgICAgICAgICBpcHBHZXRWYWx1ZVRhZyggYXR0ciApID09IElQUF9UQUdfVEVYVCApDQotKyAgICAgICAgICAgICAgICAgICAgbG9jYXRpb24gPSBpcHBHZXRTdHJpbmcoIGF0dHIsIDAsIE5VTEwgKTsNCi0rDQotKyAgICAgICAgICAgICAgICBlbHNlIGlmICggc3RyY21wKCBpcHBHZXROYW1lKCBhdHRyICksICJwcmludGVyLW1ha2UtYW5kLW1vZGVsIiApID09IDAgJiYNCi0rICAgICAgICAgICAgICAgICAgICAgICAgaXBwR2V0VmFsdWVUYWcoIGF0dHIgKSA9PSBJUFBfVEFHX1RFWFQgKQ0KLSsgICAgICAgICAgICAgICAgICAgIG1ha2VfbW9kZWwgPSBpcHBHZXRTdHJpbmcoIGF0dHIsIDAsIE5VTEwgKTsNCi0rDQotKyAgICAgICAgICAgICAgICBlbHNlIGlmICggc3RyY21wKCBpcHBHZXROYW1lKCBhdHRyICksICJwcmludGVyLXN0YXRlIiApID09IDAgJiYNCi0rICAgICAgICAgICAgICAgICAgICAgICAgaXBwR2V0VmFsdWVUYWcoIGF0dHIgKSA9PSBJUFBfVEFHX0VOVU0gKQ0KLSsgICAgICAgICAgICAgICAgICAgIHN0YXRlID0gKCBpcHBfcHN0YXRlX3QgKSBpcHBHZXRJbnRlZ2VyKCBhdHRyLCAwICk7DQotKw0KLSsgICAgICAgICAgICAgICAgZWxzZSBpZiAoIXN0cmNtcChpcHBHZXROYW1lKCBhdHRyICksICJwcmludGVyLWlzLWFjY2VwdGluZy1qb2JzIikgJiYNCi0rICAgICAgICAgICAgICAgICAgICAgICAgaXBwR2V0VmFsdWVUYWcoIGF0dHIgKSA9PSBJUFBfVEFHX0JPT0xFQU4pDQotKyAgICAgICAgICAgICAgICAgICAgYWNjZXB0aW5nID0gaXBwR2V0Qm9vbGVhbiggYXR0ciwgMCApOw0KLSANCi0tICAgICAgICAgICAgICAgIGF0dHIgPSBhdHRyLT5uZXh0Ow0KLSsgICAgICAgICAgICAgICAgYXR0ciA9IGlwcE5leHRBdHRyaWJ1dGUoIHJlc3BvbnNlICk7DQotICAgICAgICAgICAgIH0NCi0gDQotICAgICAgICAgICAgIGlmICggZGV2aWNlX3VyaSA9PSBOVUxMICkNCi1AQCAtNTIyLDggKzU2Miw4IEBACi0gICAgIHJlcXVlc3QgPSBpcHBOZXcoKTsNCi0gICAgIGxhbmd1YWdlID0gY3Vwc0xhbmdEZWZhdWx0KCk7DQotIA0KLS0gICAgcmVxdWVzdC0+cmVxdWVzdC5vcC5vcGVyYXRpb25faWQgPSBDVVBTX0FERF9QUklOVEVSOw0KLS0gICAgcmVxdWVzdC0+cmVxdWVzdC5hbnkucmVxdWVzdF9pZCA9IDE7DQotKyAgICBpcHBTZXRPcGVyYXRpb24oIHJlcXVlc3QsIENVUFNfQUREX1BSSU5URVIgKTsNCi0rICAgIGlwcFNldFJlcXVlc3RJZCAoIHJlcXVlc3QsIDEgKTsNCi0gDQotICAgICBpcHBBZGRTdHJpbmcoIHJlcXVlc3QsIElQUF9UQUdfT1BFUkFUSU9OLCBJUFBfVEFHX0NIQVJTRVQsDQotICAgICAgICAgICAgICAgICAgICJhdHRyaWJ1dGVzLWNoYXJzZXQiLCBOVUxMLCBjdXBzTGFuZ0VuY29kaW5nKCBsYW5ndWFnZSApICk7DQotQEAgLTU2OCw3ICs2MDgsNyBAQAotICAgICB9DQotICAgICBlbHNlDQotICAgICB7DQotLSAgICAgICAgc3RhdHVzID0gcmVzcG9uc2UtPnJlcXVlc3Quc3RhdHVzLnN0YXR1c19jb2RlOw0KLSsgICAgICAgIHN0YXR1cyA9IGlwcEdldFN0YXR1c0NvZGUoIHJlc3BvbnNlICk7DQotICAgICAgICAgLy9pcHBEZWxldGUoIHJlc3BvbnNlICk7DQotICAgICAgICAgciA9IDE7DQotICAgICB9DQotQEAgLTYzMSw4ICs2NzEsOCBAQAotICAgICAgICAqLw0KLSAgICAgcmVxdWVzdCA9IGlwcE5ldygpOw0KLSANCi0tICAgIHJlcXVlc3QtPnJlcXVlc3Qub3Aub3BlcmF0aW9uX2lkID0gQ1VQU19ERUxFVEVfUFJJTlRFUjsNCi0tICAgIHJlcXVlc3QtPnJlcXVlc3Qub3AucmVxdWVzdF9pZCA9IDE7DQotKyAgICBpcHBTZXRPcGVyYXRpb24oIHJlcXVlc3QsIENVUFNfREVMRVRFX1BSSU5URVIgKTsNCi0rICAgIGlwcFNldFJlcXVlc3RJZCAoIHJlcXVlc3QsIDEgKTsNCi0gDQotICAgICBsYW5ndWFnZSA9IGN1cHNMYW5nRGVmYXVsdCgpOw0KLSANCi1AQCAtNjUwLDcgKzY5MCw3IEBACi0gICAgICAqLw0KLSAgICAgcmVzcG9uc2UgPSBjdXBzRG9SZXF1ZXN0KCBodHRwLCByZXF1ZXN0LCAiL2FkbWluLyIgKTsNCi0gDQotLSAgICBpZiAoICggcmVzcG9uc2UgIT0gTlVMTCApICYmICggcmVzcG9uc2UtPnJlcXVlc3Quc3RhdHVzLnN0YXR1c19jb2RlIDw9IElQUF9PS19DT05GTElDVCApICkNCi0rICAgIGlmICggKCByZXNwb25zZSAhPSBOVUxMICkgJiYgKCBpcHBHZXRTdGF0dXNDb2RlKCByZXNwb25zZSApIDw9IElQUF9PS19DT05GTElDVCApICkNCi0gICAgIHsNCi0gICAgICAgICByID0gMTsNCi0gICAgIH0NCi1AQCAtNzIxLDggKzc2MSw4IEBACi0gDQotICAgICByZXF1ZXN0ID0gaXBwTmV3KCk7DQotIA0KLS0gICAgcmVxdWVzdC0+cmVxdWVzdC5vcC5vcGVyYXRpb25faWQgPSBDVVBTX1NFVF9ERUZBVUxUOw0KLS0gICAgcmVxdWVzdC0+cmVxdWVzdC5vcC5yZXF1ZXN0X2lkID0gMTsNCi0rICAgIGlwcFNldE9wZXJhdGlvbiggcmVxdWVzdCwgQ1VQU19TRVRfREVGQVVMVCApOw0KLSsgICAgaXBwU2V0UmVxdWVzdElkICggcmVxdWVzdCwgMSApOw0KLSANCi0gICAgIGxhbmd1YWdlID0gY3Vwc0xhbmdEZWZhdWx0KCk7DQotIA0KLUBAIC03NDMsNyArNzgzLDcgQEAKLSANCi0gICAgIHJlc3BvbnNlID0gY3Vwc0RvUmVxdWVzdCggaHR0cCwgcmVxdWVzdCwgIi9hZG1pbi8iICk7DQotIA0KLS0gICAgaWYgKCAoIHJlc3BvbnNlICE9IE5VTEwgKSAmJiAoIHJlc3BvbnNlLT5yZXF1ZXN0LnN0YXR1cy5zdGF0dXNfY29kZSA8PSBJUFBfT0tfQ09ORkxJQ1QgKSApDQotKyAgICBpZiAoICggcmVzcG9uc2UgIT0gTlVMTCApICYmICggaXBwR2V0U3RhdHVzQ29kZSggcmVzcG9uc2UgKSA8PSBJUFBfT0tfQ09ORkxJQ1QgKSApDQotICAgICB7DQotICAgICAgICAgciA9IDE7DQotICAgICB9DQotQEAgLTc5Nyw4ICs4MzcsOCBAQAotIA0KLSAgICAgcmVxdWVzdCA9IGlwcE5ldygpOw0KLSANCi0tICAgIHJlcXVlc3QtPnJlcXVlc3Qub3Aub3BlcmF0aW9uX2lkID0gb3A7DQotLSAgICByZXF1ZXN0LT5yZXF1ZXN0Lm9wLnJlcXVlc3RfaWQgPSAxOw0KLSsgICAgaXBwU2V0T3BlcmF0aW9uKCByZXF1ZXN0LCBvcCApOw0KLSsgICAgaXBwU2V0UmVxdWVzdElkICggcmVxdWVzdCwgMSApOw0KLSANCi0gICAgIGxhbmd1YWdlID0gY3Vwc0xhbmdEZWZhdWx0KCk7DQotIA0KLUBAIC04MjIsNyArODYyLDcgQEAKLSANCi0gICAgIHJlc3BvbnNlID0gY3Vwc0RvUmVxdWVzdChodHRwLCByZXF1ZXN0LCAiL2FkbWluLyIpOw0KLSANCi0tICAgIGlmICgoIHJlc3BvbnNlICE9IE5VTEwgKSAmJiAocmVzcG9uc2UtPnJlcXVlc3Quc3RhdHVzLnN0YXR1c19jb2RlIDw9IElQUF9PS19DT05GTElDVCkpDQotKyAgICBpZiAoKCByZXNwb25zZSAhPSBOVUxMICkgJiYgKGlwcEdldFN0YXR1c0NvZGUoIHJlc3BvbnNlICkgPD0gSVBQX09LX0NPTkZMSUNUKSkNCi0gICAgIHsNCi0gICAgICAgICByID0gMTsNCi0gICAgIH0NCi1AQCAtODM3LDcgKzg3Nyw3IEBACi0gICAgIGlmICggcmVzcG9uc2UgIT0gTlVMTCApDQotICAgICAgICAgaXBwRGVsZXRlKCByZXNwb25zZSApOw0KLSANCi0tICAgIHJldHVybiBQeV9CdWlsZFZhbHVlKCAiaSIsIHIgKTs7DQotKyAgICByZXR1cm4gUHlfQnVpbGRWYWx1ZSggImkiLCByICk7DQotIH0NCi0gDQotIA0KLUBAIC0xMTE2LDggKzExNTYsOCBAQAotIA0KLSAgICAgcmVxdWVzdCA9IGlwcE5ldygpOw0KLSANCi0tICAgIHJlcXVlc3QtPnJlcXVlc3Qub3Aub3BlcmF0aW9uX2lkID0gQ1VQU19HRVRfUFBEUzsNCi0tICAgIHJlcXVlc3QtPnJlcXVlc3Qub3AucmVxdWVzdF9pZCAgID0gMTsNCi0rICAgIGlwcFNldE9wZXJhdGlvbiggcmVxdWVzdCwgQ1VQU19HRVRfUFBEUyApOw0KLSsgICAgaXBwU2V0UmVxdWVzdElkICggcmVxdWVzdCwgMSApOw0KLSANCi0gICAgIGxhbmd1YWdlID0gY3Vwc0xhbmdEZWZhdWx0KCk7DQotIA0KLUBAIC0xMTQzLDQzICsxMTgzLDQzIEBACi0gICAgIGlmICgocmVzcG9uc2UgPSBjdXBzRG9SZXF1ZXN0KGh0dHAsIHJlcXVlc3QsICIvIikpICE9IE5VTEwpDQotICAgICB7DQotIA0KLS0gICAgICAgIGZvciAoYXR0ciA9IHJlc3BvbnNlLT5hdHRyczsgYXR0cjsgYXR0ciA9IGF0dHItPm5leHQpDQotKyAgICAgICAgZm9yIChhdHRyID0gaXBwRmlyc3RBdHRyaWJ1dGUoIHJlc3BvbnNlICk7IGF0dHI7IGF0dHIgPSBpcHBOZXh0QXR0cmlidXRlKCByZXNwb25zZSApKQ0KLSAgICAgICAgIHsNCi0gICAgICAgICAgICAgUHlPYmplY3QgKmRpY3Q7DQotICAgICAgICAgICAgIGNoYXIgKnBwZG5hbWUgPSBOVUxMOw0KLSANCi0tICAgICAgICAgICAgd2hpbGUgKGF0dHIgJiYgYXR0ci0+Z3JvdXBfdGFnICE9IElQUF9UQUdfUFJJTlRFUikNCi0tICAgICAgICAgICAgICAgIGF0dHIgPSBhdHRyLT5uZXh0Ow0KLSsgICAgICAgICAgICB3aGlsZSAoYXR0ciAmJiBpcHBHZXRHcm91cFRhZyggYXR0ciApICE9IElQUF9UQUdfUFJJTlRFUikNCi0rICAgICAgICAgICAgICAgIGF0dHIgPSBpcHBOZXh0QXR0cmlidXRlKCByZXNwb25zZSApOw0KLSANCi0gICAgICAgICAgICAgaWYgKCFhdHRyKQ0KLSAgICAgICAgICAgICAgICAgYnJlYWs7DQotIA0KLSAgICAgICAgICAgICBkaWN0ID0gUHlEaWN0X05ldyAoKTsNCi0gDQotLSAgICAgICAgICAgIGZvciAoOyBhdHRyICYmIGF0dHItPmdyb3VwX3RhZyA9PSBJUFBfVEFHX1BSSU5URVI7IGF0dHIgPSBhdHRyLT5uZXh0KQ0KLSsgICAgICAgICAgICBmb3IgKDsgYXR0ciAmJiBpcHBHZXRHcm91cFRhZyggYXR0ciApID09IElQUF9UQUdfUFJJTlRFUjsgYXR0ciA9IGlwcE5leHRBdHRyaWJ1dGUoIHJlc3BvbnNlICkpDQotICAgICAgICAgICAgIHsNCi0gICAgICAgICAgICAgICAgIFB5T2JqZWN0ICp2YWwgPSBOVUxMOw0KLSANCi0tICAgICAgICAgICAgICAgIGlmICghc3RyY21wIChhdHRyLT5uYW1lLCAicHBkLW5hbWUiKSAmJiBhdHRyLT52YWx1ZV90YWcgPT0gSVBQX1RBR19OQU1FKQ0KLSsgICAgICAgICAgICAgICAgaWYgKCFzdHJjbXAgKGlwcEdldE5hbWUoIGF0dHIgKSwgInBwZC1uYW1lIikgJiYgaXBwR2V0VmFsdWVUYWcoIGF0dHIgKSA9PSBJUFBfVEFHX05BTUUpDQotICAgICAgICAgICAgICAgICB7DQotLSAgICAgICAgICAgICAgICAgICAgcHBkbmFtZSA9IGF0dHItPnZhbHVlc1swXS5zdHJpbmcudGV4dDsNCi0rICAgICAgICAgICAgICAgICAgICBwcGRuYW1lID0gaXBwR2V0U3RyaW5nKCBhdHRyLCAwLCBOVUxMICk7DQotIA0KLSAgICAgICAgICAgICAgICAgICAgIC8vc3ByaW50ZiggYnVmLCAicHJpbnQgJyVzJyIsIHBwZG5hbWUpOw0KLSAgICAgICAgICAgICAgICAgICAgIC8vUHlSdW5fU2ltcGxlU3RyaW5nKCBidWYgKTsNCi0gICAgICAgICAgICAgICAgIH0NCi0gDQotLSAgICAgICAgICAgICAgICBlbHNlIGlmIChhdHRyLT52YWx1ZV90YWcgPT0gSVBQX1RBR19URVhUIHx8IGF0dHItPnZhbHVlX3RhZyA9PSBJUFBfVEFHX05BTUUgfHwgYXR0ci0+dmFsdWVfdGFnID09IElQUF9UQUdfS0VZV09SRCkNCi0tICAgICAgICAgICAgICAgIC8vZWxzZSBpZiAoKCFzdHJjbXAgKGF0dHItPm5hbWUsICJwcGQtbmF0dXJhbC1sYW5ndWFnZSIpICYmIGF0dHItPnZhbHVlX3RhZyA9PSBJUFBfVEFHX0xBTkdVQUdFKSB8fA0KLS0gICAgICAgICAgICAgICAgLy8gICAgKCFzdHJjbXAgKGF0dHItPm5hbWUsICJwcGQtbWFrZS1hbmQtbW9kZWwiKSAmJiBhdHRyLT52YWx1ZV90YWcgPT0gSVBQX1RBR19URVhUKSB8fA0KLS0gICAgICAgICAgICAgICAgLy8gICAgKCFzdHJjbXAgKGF0dHItPm5hbWUsICJwcGQtbWFrZSIpICYmIGF0dHItPnZhbHVlX3RhZyA9PSBJUFBfVEFHX1RFWFQpIHx8DQotLSAgICAgICAgICAgICAgICAvLyAgICAoIXN0cmNtcCAoYXR0ci0+bmFtZSwgInBwZC1kZXZpY2UtaWQiKSAmJiBhdHRyLT52YWx1ZV90YWcgPT0gSVBQX1RBR19URVhUKSkNCi0rICAgICAgICAgICAgICAgIGVsc2UgaWYgKGlwcEdldFZhbHVlVGFnKCBhdHRyICkgPT0gSVBQX1RBR19URVhUIHx8IGlwcEdldFZhbHVlVGFnKCBhdHRyICkgPT0gSVBQX1RBR19OQU1FIHx8IGlwcEdldFZhbHVlVGFnKCBhdHRyICkgPT0gSVBQX1RBR19LRVlXT1JEKQ0KLSsgICAgICAgICAgICAgICAgLy9lbHNlIGlmICgoIXN0cmNtcCAoaXBwR2V0TmFtZSggYXR0ciApLCAicHBkLW5hdHVyYWwtbGFuZ3VhZ2UiKSAmJiBpcHBHZXRWYWx1ZVRhZyggYXR0ciApID09IElQUF9UQUdfTEFOR1VBR0UpIHx8DQotKyAgICAgICAgICAgICAgICAvLyAgICAoIXN0cmNtcCAoaXBwR2V0TmFtZSggYXR0ciApLCAicHBkLW1ha2UtYW5kLW1vZGVsIikgJiYgaXBwR2V0VmFsdWVUYWcoIGF0dHIgKSA9PSBJUFBfVEFHX1RFWFQpIHx8DQotKyAgICAgICAgICAgICAgICAvLyAgICAoIXN0cmNtcCAoaXBwR2V0TmFtZSggYXR0ciApLCAicHBkLW1ha2UiKSAmJiBpcHBHZXRWYWx1ZVRhZyggYXR0ciApID09IElQUF9UQUdfVEVYVCkgfHwNCi0rICAgICAgICAgICAgICAgIC8vICAgICghc3RyY21wIChpcHBHZXROYW1lKCBhdHRyICksICJwcGQtZGV2aWNlLWlkIikgJiYgaXBwR2V0VmFsdWVUYWcoIGF0dHIgKSA9PSBJUFBfVEFHX1RFWFQpKQ0KLSAgICAgICAgICAgICAgICAgew0KLS0gICAgICAgICAgICAgICAgICAgIHZhbCA9IFB5T2JqX2Zyb21fVVRGOChhdHRyLT52YWx1ZXNbMF0uc3RyaW5nLnRleHQpOw0KLSsgICAgICAgICAgICAgICAgICAgIHZhbCA9IFB5T2JqX2Zyb21fVVRGOChpcHBHZXRTdHJpbmcoIGF0dHIsIDAsIE5VTEwgKSk7DQotICAgICAgICAgICAgICAgICB9DQotIA0KLSAgICAgICAgICAgICAgICAgaWYgKHZhbCkNCi0gICAgICAgICAgICAgICAgIHsNCi0tICAgICAgICAgICAgICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyAoZGljdCwgYXR0ci0+bmFtZSwgdmFsKTsNCi0rICAgICAgICAgICAgICAgICAgICBQeURpY3RfU2V0SXRlbVN0cmluZyAoZGljdCwgaXBwR2V0TmFtZSggYXR0ciApLCB2YWwpOw0KLSAgICAgICAgICAgICAgICAgICAgIFB5X0RFQ1JFRiAodmFsKTsNCi0gICAgICAgICAgICAgICAgIH0NCi0gICAgICAgICAgICAgfQ0KLWRpZmYgLU5hdXIgaHBsaXAtMy4xMi42X29sZC9zY2FuL3NhbmUvaHBhaW8uYyBocGxpcC0zLjEyLjYvc2Nhbi9zYW5lL2hwYWlvLmMKLS0tLSBocGxpcC0zLjEyLjZfb2xkL3NjYW4vc2FuZS9ocGFpby5jCTIwMTItMDgtMDQgMDk6MTg6MjEuNDU4Mzg5OTEzICswMjAwCi0rKysgaHBsaXAtMy4xMi42L3NjYW4vc2FuZS9ocGFpby5jCTIwMTItMDgtMDQgMDk6MTg6MjcuODc1MTgxNzIwICswMjAwCi1AQCAtNDcsNiArNDcsNDMgQEAKLSAjZGVmaW5lIERFQlVHX0RFQ0xBUkVfT05MWQotICNpbmNsdWRlICJzYW5laV9kZWJ1Zy5oIgotIAotKyNpZiAoQ1VQU19WRVJTSU9OX01BSk9SID4gMSkgfHwgKENVUFNfVkVSU0lPTl9NSU5PUiA+IDUpCi0rI2RlZmluZSBIQVZFX0NVUFNfMV82IDEKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIEhBVkVfQ1VQU18xXzYKLSsjZGVmaW5lIGlwcEdldEdyb3VwVGFnKGF0dHIpICBhdHRyLT5ncm91cF90YWcKLSsjZGVmaW5lIGlwcEdldFZhbHVlVGFnKGF0dHIpICBhdHRyLT52YWx1ZV90YWcKLSsjZGVmaW5lIGlwcEdldE5hbWUoYXR0cikgICAgICBhdHRyLT5uYW1lCi0rI2RlZmluZSBpcHBHZXRTdHJpbmcoYXR0ciwgZWxlbWVudCwgbGFuZ3VhZ2UpIGF0dHItPnZhbHVlc1tlbGVtZW50XS5zdHJpbmcudGV4dAotKwotK3N0YXRpYyBpcHBfYXR0cmlidXRlX3QgKiBpcHBGaXJzdEF0dHJpYnV0ZSggaXBwX3QgKmlwcCApCi0rewotKyAgICBpZiAoIWlwcCkKLSsgICAgICAgIHJldHVybiAoTlVMTCk7Ci0rICAgIHJldHVybiAoaXBwLT5jdXJyZW50ID0gaXBwLT5hdHRycyk7Ci0rfQotKwotK3N0YXRpYyBpcHBfYXR0cmlidXRlX3QgKiBpcHBOZXh0QXR0cmlidXRlKCBpcHBfdCAqaXBwICkKLSt7Ci0rICAgIGlmICghaXBwIHx8ICFpcHAtPmN1cnJlbnQpCi0rICAgICAgICByZXR1cm4gKE5VTEwpOwotKyAgICByZXR1cm4gKGlwcC0+Y3VycmVudCA9IGlwcC0+Y3VycmVudC0+bmV4dCk7Ci0rfQotKwotK3N0YXRpYyBpbnQgaXBwU2V0T3BlcmF0aW9uKCBpcHBfdCAqaXBwLCBpcHBfb3BfdCBvcCApCi0rewotKyAgICBpcHAtPnJlcXVlc3Qub3Aub3BlcmF0aW9uX2lkID0gb3A7Ci0rICAgIHJldHVybiAoMSk7Ci0rfQotKwotK3N0YXRpYyBpbnQgaXBwU2V0UmVxdWVzdElkKCBpcHBfdCAqaXBwLCBpbnQgcmVxdWVzdF9pZCApCi0rewotKyAgICBpcHAtPnJlcXVlc3QuYW55LnJlcXVlc3RfaWQgPSByZXF1ZXN0X2lkOwotKyAgICByZXR1cm4gKDEpOwotK30KLSsjZW5kaWYKLSsKLSBzdGF0aWMgU0FORV9EZXZpY2UgKipEZXZpY2VMaXN0ID0gTlVMTDsKLSAKLSBzdGF0aWMgaW50IEFkZERldmljZUxpc3QoY2hhciAqdXJpLCBjaGFyICptb2RlbCwgU0FORV9EZXZpY2UgKioqcGQpCi1AQCAtMTg2LDggKzIyMyw4IEBACi0gICAgLyogQXNzZW1ibGUgdGhlIElQUCByZXF1ZXN0ICovCi0gICAgcmVxdWVzdCA9IGlwcE5ldygpOwotIAotLSAgIHJlcXVlc3QtPnJlcXVlc3Qub3Aub3BlcmF0aW9uX2lkID0gQ1VQU19HRVRfUFJJTlRFUlM7Ci0tICAgcmVxdWVzdC0+cmVxdWVzdC5hbnkucmVxdWVzdF9pZCAgPSAxOwotKyAgIGlwcFNldE9wZXJhdGlvbiggcmVxdWVzdCwgQ1VQU19HRVRfUFJJTlRFUlMgKTsKLSsgICBpcHBTZXRSZXF1ZXN0SWQoIHJlcXVlc3QsIDEgKTsKLSAKLSAgICBpcHBBZGRTdHJpbmcocmVxdWVzdCwgSVBQX1RBR19PUEVSQVRJT04sIElQUF9UQUdfQ0hBUlNFVCwgImF0dHJpYnV0ZXMtY2hhcnNldCIsIE5VTEwsICJ1dGYtOCIpOwotICAgIGlwcEFkZFN0cmluZyhyZXF1ZXN0LCBJUFBfVEFHX09QRVJBVElPTiwgSVBQX1RBR19MQU5HVUFHRSwgImF0dHJpYnV0ZXMtbmF0dXJhbC1sYW5ndWFnZSIsIE5VTEwsICJlbiIpOwotQEAgLTE5NywyMCArMjM0LDIwIEBACi0gICAgaWYgKChyZXNwb25zZSA9IGN1cHNEb1JlcXVlc3QoaHR0cCwgcmVxdWVzdCwgIi8iKSkgPT0gTlVMTCkKLSAgICAgICBnb3RvIGJ1Z291dDsKLSAKLS0gICBmb3IgKGF0dHIgPSByZXNwb25zZS0+YXR0cnM7IGF0dHIgIT0gTlVMTDsgYXR0ciA9IGF0dHItPm5leHQpCi0rICAgZm9yIChhdHRyID0gaXBwRmlyc3RBdHRyaWJ1dGUgKCByZXNwb25zZSApOyBhdHRyICE9IE5VTEw7IGF0dHIgPSBpcHBOZXh0QXR0cmlidXRlKCByZXNwb25zZSApKQotICAgIHsKLSAgICAgICAvKiBTa2lwIGxlYWRpbmcgYXR0cmlidXRlcyB1bnRpbCB3ZSBoaXQgYSBwcmludGVyLiAqLwotLSAgICAgIHdoaWxlIChhdHRyICE9IE5VTEwgJiYgYXR0ci0+Z3JvdXBfdGFnICE9IElQUF9UQUdfUFJJTlRFUikKLS0gICAgICAgICBhdHRyID0gYXR0ci0+bmV4dDsKLSsgICAgICB3aGlsZSAoYXR0ciAhPSBOVUxMICYmIGlwcEdldEdyb3VwVGFnKCBhdHRyICkgIT0gSVBQX1RBR19QUklOVEVSKQotKyAgICAgICAgIGF0dHIgPSBpcHBOZXh0QXR0cmlidXRlKCByZXNwb25zZSApOwotIAotICAgICAgIGlmIChhdHRyID09IE5VTEwpCi0gICAgICAgICAgYnJlYWs7Ci0gCi0tICAgICAgd2hpbGUgKGF0dHIgIT0gTlVMTCAmJiBhdHRyLT5ncm91cF90YWcgPT0gSVBQX1RBR19QUklOVEVSKQotKyAgICAgIHdoaWxlIChhdHRyICE9IE5VTEwgJiYgaXBwR2V0R3JvdXBUYWcoIGF0dHIgKSA9PSBJUFBfVEFHX1BSSU5URVIpCi0gICAgICAgewotLSAgICAgICAgIGlmIChzdHJjbXAoYXR0ci0+bmFtZSwgImRldmljZS11cmkiKSA9PSAwICYmIGF0dHItPnZhbHVlX3RhZyA9PSBJUFBfVEFHX1VSSSAmJiBBZGRDdXBzTGlzdChhdHRyLT52YWx1ZXNbMF0uc3RyaW5nLnRleHQsIHByaW50ZXIpID09IDApCi0rICAgICAgICAgaWYgKHN0cmNtcChpcHBHZXROYW1lKCBhdHRyICksICJkZXZpY2UtdXJpIikgPT0gMCAmJiBpcHBHZXRWYWx1ZVRhZyggYXR0ciApID09IElQUF9UQUdfVVJJICYmIEFkZEN1cHNMaXN0KGlwcEdldFN0cmluZyggYXR0ciwgMCwgTlVMTCApLCBwcmludGVyKSA9PSAwKQotICAgICAgICAgICAgIGNudCsrOwotLSAgICAgICAgIGF0dHIgPSBhdHRyLT5uZXh0OwotKyAgICAgICAgIGF0dHIgPSBpcHBOZXh0QXR0cmlidXRlKCByZXNwb25zZSApOwotICAgICAgIH0KLSAKLSAgICAgICBpZiAoYXR0ciA9PSBOVUxMKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLTMuMTIuNi9maXgtbGlidXNiLXBhdGhzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLTMuMTIuNi9maXgtbGlidXNiLXBhdGhzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMzQ3ZjgzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcC0zLjEyLjYvZml4LWxpYnVzYi1wYXRocy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotZGlmZiAtcnVwTiBocGxpcC0zLjEyLjZfb3JpZy9jb25maWd1cmUuaW4gaHBsaXAtMy4xMi42L2NvbmZpZ3VyZS5pbgotLS0tIGhwbGlwLTMuMTIuNl9vcmlnL2NvbmZpZ3VyZS5pbgkyMDEyLTA2LTE4IDIwOjQ0OjI0LjAwMDAwMDAwMCArMTAwMAotKysrIGhwbGlwLTMuMTIuNi9jb25maWd1cmUuaW4JMjAxMi0wOC0xNiAxMzo0MDowNy4yNTk5Mjc2NTAgKzEwMDAKLUBAIC01MjQsNiArNTI0LDggQEAgaWYgdGVzdCAiJGhwaWpzX29ubHlfYnVpbGQiID0gIm5vIjsgdGhlbgotICAgICAgIEFDX0NIRUNLX0hFQURFUlModXNiLmgsICxbQUNfTVNHX0VSUk9SKFtjYW5ub3QgZmluZCBsaWJ1c2ItZGV2ZWwgc3VwcG9ydF0sIDExKV0pCi0gICAgZWxzZQotICAgICAgIEFDX0NIRUNLX0xJQihbdXNiLTEuMF0sIFtsaWJ1c2JfaW5pdF0sIFtMSUJTPSIkTElCUyJdLCBbQUNfTVNHX0VSUk9SKFtjYW5ub3QgZmluZCBsaWJ1c2IgMS4wIHN1cHBvcnRdLCAyKV0pCi0rICAgICAgTElCVVNCSU5DTFVERVJPT1Q/PSIvdXNyL2luY2x1ZGUvIgotKyAgICAgIEFDX0FSR19WQVIoTElCVVNCSU5DTFVERVJPT1QsIFtwYXRoIHRvIGxpYnVzYi0xLjAgZm9sZGVyXSkKLSAgICAgICBBQ19DSEVDS19IRUFERVJTKGxpYnVzYi0xLjAvbGlidXNiLmgsICxbQUNfTVNHX0VSUk9SKFtjYW5ub3QgZmluZCBsaWJ1c2ItMS4wLWRldmVsIHN1cHBvcnRdLCAxMSldKQotICAgIGZpCi0gZmkKLWRpZmYgLXJ1cE4gaHBsaXAtMy4xMi42X29yaWcvTWFrZWZpbGUuYW0gaHBsaXAtMy4xMi42L01ha2VmaWxlLmFtCi0tLS0gaHBsaXAtMy4xMi42X29yaWcvTWFrZWZpbGUuYW0JMjAxMi0wNi0xOCAyMDo0NDoxMy4wMDAwMDAwMDAgKzEwMDAKLSsrKyBocGxpcC0zLjEyLjYvTWFrZWZpbGUuYW0JMjAxMi0wOC0xNiAxMzo0MToxMi4zMDc5MzI4MjIgKzEwMDAKLUBAIC03Miw3ICs3Miw3IEBAIGxpYmhwbXVkX2xhX1NPVVJDRVMgPSBpby9ocG11ZC9ocG11ZC5jIGkKLSAJICBpby9ocG11ZC9ocG11ZC5oIGlvL2hwbXVkL2hwbXVkaS5oIGlvL2hwbXVkL2xpc3QuaCBpby9ocG11ZC9tbGMuaCBpby9ocG11ZC9wbWwuaCBpby9ocG11ZC9kb3Q0LmMgXAotIAkgIGlvL2hwbXVkL2RvdDQuaCBpby9ocG11ZC9qZC5jIGlvL2hwbXVkL2pkLmggaW8vaHBtdWQvcHAuYyBpby9ocG11ZC9wcC5oIGlvL2hwbXVkL211c2IuaCBpby9ocG11ZC9tdXNiX2xpYnVzYjAxLmMKLSBlbHNlCi0tbGliaHBtdWRfbGFfQ0ZMQUdTID0gLUkvdXNyL2luY2x1ZGUvbGlidXNiLTEuMCAtRE1VRE5BTUU9XCIkKE1VRE5BTUUpXCIgLURDT05GRElSPVwiJChocGxpcF9jb25mZGlyKVwiCi0rbGliaHBtdWRfbGFfQ0ZMQUdTID0gLUkvJChMSUJVU0JJTkNMVURFUk9PVCkvbGlidXNiLTEuMCAtRE1VRE5BTUU9XCIkKE1VRE5BTUUpXCIgLURDT05GRElSPVwiJChocGxpcF9jb25mZGlyKVwiCi0gbGliaHBtdWRfbGFfU09VUkNFUyA9IGlvL2hwbXVkL2hwbXVkLmMgaW8vaHBtdWQvbWxjLmMgaW8vaHBtdWQvbW9kZWwuYyBpby9ocG11ZC9wbWwuYyBcCi0gCSAgaW8vaHBtdWQvaHBtdWQuaCBpby9ocG11ZC9ocG11ZGkuaCBpby9ocG11ZC9saXN0LmggaW8vaHBtdWQvbWxjLmggaW8vaHBtdWQvcG1sLmggaW8vaHBtdWQvZG90NC5jIFwKLSAJICBpby9ocG11ZC9kb3Q0LmggaW8vaHBtdWQvamQuYyBpby9ocG11ZC9qZC5oIGlvL2hwbXVkL3BwLmMgaW8vaHBtdWQvcHAuaCBpby9ocG11ZC9tdXNiLmggaW8vaHBtdWQvbXVzYi5jCi1AQCAtMjg2LDcgKzI4Niw3IEBAIGhwbXVkZXh0X2xhX0xJQkFERCA9IGxpYmhwbXVkLmxhCi0gaWYgTElCVVNCMDFfQlVJTEQKLSBocG11ZGV4dF9sYV9DRkxBR1MgPSAtSSQoUFlUSE9OSU5DTFVERURJUikKLSBlbHNlCi0taHBtdWRleHRfbGFfQ0ZMQUdTID0tSS91c3IvaW5jbHVkZS9saWJ1c2ItMS4wIC1JJChQWVRIT05JTkNMVURFRElSKQotK2hwbXVkZXh0X2xhX0NGTEFHUyA9LUkkKExJQlVTQklOQ0xVREVST09UKS9saWJ1c2ItMS4wIC1JJChQWVRIT05JTkNMVURFRElSKQotIGVuZGlmCi0gCi0gIyB1aSAocXQzKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLTMuMTIuNi9zZXR1cC1hZGQtc2xlZXAtYWZ0ZXItY3Vwcy1yZXNldC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcC0zLjEyLjYvc2V0dXAtYWRkLXNsZWVwLWFmdGVyLWN1cHMtcmVzZXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMWI2YzQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLTMuMTIuNi9zZXR1cC1hZGQtc2xlZXAtYWZ0ZXItY3Vwcy1yZXNldC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLS0tLSBocGxpcC0zLjExLjEwL3NldHVwLnB5Lm9yaWcJMjAxMS0xMC0wMiAxNDowNjoxOS4wMDAwMDAwMDAgKzExMDAKLSsrKyBocGxpcC0zLjExLjEwL3NldHVwLnB5CTIwMTItMDItMjkgMDg6MjE6MzkuMTY3OTk5OTM4ICsxMTAwCi1AQCAtNTczLDYgKzU3Myw3IEBACi0gCi0gICAgICAgICAgICAgbG9nLmRlYnVnKCJSZXN0YXJ0aW5nIENVUFMuLi4iKQotICAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gdXRpbHMucnVuKHJlc3RhcnRfY3VwcygpKQotKyAgICAgICAgICAgIHRpbWUuc2xlZXAoMykKLSAgICAgICAgICAgICBsb2cuZGVidWcoIlJlc3RhcnQgQ1VQUyByZXR1cm5lZDogZXhpdD0lZCBvdXRwdXQ9JXMiICUgKHN0YXR1cywgb3V0cHV0KSkKLSAKLSAgICAgICAgICAgICBjdXBzLnNldFBhc3N3b3JkUHJvbXB0KCJZb3UgZG8gbm90IGhhdmUgcGVybWlzc2lvbiB0byBhZGQgYSBwcmludGVyLiIpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAvMDMwLXJlcGxhY2VfdW5zYWZlX21lbWNweV93aXRoX21lbW1vdmUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAvMDMwLXJlcGxhY2VfdW5zYWZlX21lbWNweV93aXRoX21lbW1vdmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmJhYmIyYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcC8wMzAtcmVwbGFjZV91bnNhZmVfbWVtY3B5X3dpdGhfbWVtbW92ZS5wYXRjaApAQCAtMCwwICsxLDE1IEBACitodHRwczovL2J1Z3MubGF1bmNocGFkLm5ldC9ocGxpcC8rYnVnLzE2NzIyNTYKKworbWVtY3B5IHNob3VsZCBuZXZlciBiZSB1c2VkIHdpdGggb3ZlcmxhcHBpbmcgbWVtb3J5IHJlZ2lvbnMKKworLS0tIGEvaW8vaHBtdWQvbXVzYi5jCisrKysgYi9pby9ocG11ZC9tdXNiLmMKK0BAIC03NzUsNyArNzc1LDcgQEAgc3RhdGljIGludCBkZXZpY2VfaWQoaW50IGZkLCB1bnNpZ25lZCBjaAorICAgICAgICAgbGVuID0gc2l6ZS0xOyAgIC8qIGxlYXZlIGJ5dGUgZm9yIHplcm8gdGVybWluYXRpb24gKi8KKyAgICAgaWYgKGxlbiA+IDIpCisgICAgICAgICBsZW4gLT0gMjsKKy0gICAgbWVtY3B5KGJ1ZmZlciwgYnVmZmVyKzIsIGxlbik7ICAgIC8qIHJlbW92ZSBsZW5ndGggKi8KKysgICAgbWVtbW92ZShidWZmZXIsIGJ1ZmZlcisyLCBsZW4pOyAgICAvKiByZW1vdmUgbGVuZ3RoICovCisgICAgIGJ1ZmZlcltsZW5dPTA7CisgICAgIERCRygicmVhZCBhY3R1YWwgZGV2aWNlX2lkIHN1Y2Nlc3NmdWxseSBmZD0lZCBsZW49JWRcbiIsIGZkLCBsZW4pOworIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLzA1MC1maXgtZ2xpYmNpc21zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLzA1MC1maXgtZ2xpYmNpc21zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwMjBiZDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAvMDUwLWZpeC1nbGliY2lzbXMucGF0Y2gKQEAgLTAsMCArMSwxNyBAQAorZGlmZiAtLWdpdCBhL3NjYW4vc2FuZS9PcmJsaXRlU2Nhbi9MaW51eENvbW1vbi5oIGIvc2Nhbi9zYW5lL09yYmxpdGVTY2FuL0xpbnV4Q29tbW9uLmgKK2luZGV4IDY2MDVkZDkuLjU1YzcxMTAgMTAwNjQ0CistLS0gYS9zY2FuL3NhbmUvT3JibGl0ZVNjYW4vTGludXhDb21tb24uaAorKysrIGIvc2Nhbi9zYW5lL09yYmxpdGVTY2FuL0xpbnV4Q29tbW9uLmgKK0BAIC0xOCwxMCArMTgsOCBAQCB0eXBlZGVmIHVfaW50MzJfdAkJCVVJbnQzMjsKKyB0eXBlZGVmIGludDMyX3QJCQkJU0ludDMyOw0KKyAvL3R5cGVkZWYgdW5zaWduZWQgbG9uZwkJCVVJbnQzMjsNCisgLy90eXBlZGVmIHNpZ25lZCBsb25nCQkJU0ludDMyOw0KKy10eXBlZGVmIF9fUzY0X1RZUEUJCQlTSW50NjQ7DQorLXR5cGVkZWYgX19VNjRfVFlQRQkJCVVJbnQ2NDsNCistdHlwZWRlZiBfX1M2NF9UWVBFCQkJaW50NjRfdDsNCistdHlwZWRlZiBfX1U2NF9UWVBFCQkJdWludDY0X3Q7DQorK3R5cGVkZWYgaW50NjRfdCAJCQlTSW50NjQ7DQorK3R5cGVkZWYgdWludDY0X3QJCQlVSW50NjQ7DQorIA0KKyAvL3R5cGVkZWYgdW5zaWduZWQgbG9uZwlVTE9ORzsNCisgLy90eXBlZGVmIHZvaWQqCQkJTFBWT0lEOw0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcC82MDAtZml4LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLzYwMC1maXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTFhNTAzNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcC82MDAtZml4LnBhdGNoCkBAIC0wLDAgKzEsMTAgQEAKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtMjU0LDcgKzI1NCw2IEBAIGlmIHRlc3QgIiRjbGFzc19kcml2ZXIiID0gInllcyI7IHRoZW4KKyAgICB0ZXN0IGBzaCAuL2NyZWF0ZVBQRC5zaCAtZmAgPT0gMAorIGVsc2UKKyAgICBBQ19NU0dfUkVTVUxUKG5vKQorLSAgIHRlc3QgYHNoIC4vY3JlYXRlUFBELnNoIC1xYCA9PSAwCisgZmkKKyBBTV9DT05ESVRJT05BTChIUExJUF9DTEFTU19EUklWRVIsIHRlc3QgeCRjbGFzc19kcml2ZXIgPSB4eWVzKQorIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLzk5OS1yZW1vdmUtbEltYWdlUHJvY2Vzc29yLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwLzk5OS1yZW1vdmUtbEltYWdlUHJvY2Vzc29yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFlZTRhYzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAvOTk5LXJlbW92ZS1sSW1hZ2VQcm9jZXNzb3IucGF0Y2gKQEAgLTAsMCArMSw2OSBAQAorIyAuLi9iaW4vbGQ6IGNhbm5vdCBmaW5kIC1sSW1hZ2VQcm9jZXNzb3IKKy0tLSBhL01ha2VmaWxlLmFtCisrKysgYi9NYWtlZmlsZS5hbQorQEAgLTU5MCwxMSArNTkwLDEwIEBAIGhwY3Vwc19TT1VSQ0VTID0gcHJudC9ocGN1cHMvSFBDdXBzRmlsdGUKKyAJcHJudC9ocGN1cHMvZmxhdGVfY29sb3JzcGFjZS5oIHBybnQvaHBjdXBzL1J1bkxlbkVuY29kaW5nLmggcHJudC9ocGN1cHMvY29tbW9uX2RlZmluZXMuaCBcCisgCXBybnQvaHBjdXBzL2dlblBDTG0uaCBcCisgCWNvbW1vbi91dGlscy5jIGNvbW1vbi91dGlscy5oIHBybnQvaHBjdXBzL0hicGwxX1dyYXBwZXIuY3BwIHBybnQvaHBjdXBzL2dlblBDTG0uY3BwIFwKKy0JcHJudC9ocGN1cHMvZ2VuSlBFR1N0cmlwcy5jcHAgcHJudC9ocGN1cHMvUnVuTGVuRW5jb2RpbmcuY3BwIFwKKy0JcHJudC9ocGN1cHMvSW1hZ2VQcm9jZXNzb3IuaAorKwlwcm50L2hwY3Vwcy9nZW5KUEVHU3RyaXBzLmNwcCBwcm50L2hwY3Vwcy9SdW5MZW5FbmNvZGluZy5jcHAKKyAKKyBocGN1cHNfQ1hYRkxBR1MgPSAkKEFQREtfRU5ESUFOX0ZMQUcpICQoREJVU19DRkxBR1MpCistaHBjdXBzX0xEQUREID0gLUwuL3BybnQvaHBjdXBzLyAtbGpwZWcgLWxkbCAtbEltYWdlUHJvY2Vzc29yIC1sY3VwcyAtbGN1cHNpbWFnZSAtbHogJChEQlVTX0xJQlMpCisraHBjdXBzX0xEQUREID0gLUwuL3BybnQvaHBjdXBzLyAtbGpwZWcgLWxkbCAtbGN1cHMgLWxjdXBzaW1hZ2UgLWx6ICQoREJVU19MSUJTKQorICNlbHNlCisgI2hwY3Vwc2RpciA9ICQoY3Vwc2ZpbHRlcmRpcikKKyAjaHBjdXBzX1BST0dSQU1TID0gaHBjdXBzCistLS0gYS9wcm50L2hwY3Vwcy9IUEN1cHNGaWx0ZXIuY3BwCisrKysgYi9wcm50L2hwY3Vwcy9IUEN1cHNGaWx0ZXIuY3BwCitAQCAtNjM3LDE2ICs2MzcsMTAgQEAgaW50IEhQQ3Vwc0ZpbHRlcjo6cHJvY2Vzc1Jhc3RlckRhdGEoY3VwcworIAorIAorICAgICBzcHJpbnRmKGhwUHJlUHJvY2Vzc2VkUmFzdGVyRmlsZSwgIiVzL2hwXyVzX2N1cHNfU3dhcGVkUGFnZXNYWFhYWFgiLENVUFNfVE1QX0RJUiwgbV9KQS51c2VyX25hbWUpOworLSAgICBpbWFnZV9wcm9jZXNzb3JfdCogaW1hZ2VQcm9jZXNzb3IgPSBpbWFnZVByb2Nlc3NvckNyZWF0ZSgpOworIAorICAgICB3aGlsZSAoY3Vwc1Jhc3RlclJlYWRIZWFkZXIyKGN1cHNfcmFzdGVyLCAmY3Vwc19oZWFkZXIpKQorICAgICB7CisgCistICAgICAgICBJTUFHRV9QUk9DRVNTT1JfRVJST1IgcmVzdWx0ID0gaW1hZ2VQcm9jZXNzb3JTdGFydFBhZ2UoaW1hZ2VQcm9jZXNzb3IsICZjdXBzX2hlYWRlcik7CistICAgICAgICBpZiAocmVzdWx0ICE9IElQRV9TVUNDRVNTKXsKKy0gICAgICAgICAgICBkYmdsb2coIkRFQlVHOiBpbWFnZVByb2Nlc3NvclN0YXJ0UGFnZSBmYWlsZWQgcmVzdWx0ID0gJWRcbiIsIHJlc3VsdCk7CistICAgICAgICB9CistCisgICAgICAgICBjdXJyZW50X3BhZ2VfbnVtYmVyKys7CisgCisgICAgICAgICBpZiAoY3VycmVudF9wYWdlX251bWJlciA9PSAxKSB7CitAQCAtNzQ1LDExICs3MzksNiBAQCBpbnQgSFBDdXBzRmlsdGVyOjpwcm9jZXNzUmFzdGVyRGF0YShjdXBzCisgICAgICAgICAgICAgY29sb3JfcmFzdGVyID0gcmdiUmFzdGVyOworICAgICAgICAgICAgIGJsYWNrX3Jhc3RlciA9IGtSYXN0ZXI7CisgCistICAgICAgICAgICAgcmVzdWx0ID0gaW1hZ2VQcm9jZXNzb3JQcm9jZXNzTGluZShpbWFnZVByb2Nlc3NvciwgbV9wUHJpbnRlckJ1ZmZlciwgY3Vwc19oZWFkZXIuY3Vwc0J5dGVzUGVyTGluZSk7CistICAgICAgICAgICAgaWYgKHJlc3VsdCAhPSBJUEVfU1VDQ0VTUyl7CistICAgICAgICAgICAgICAgIGRiZ2xvZygiREVCVUc6IGltYWdlUHJvY2Vzc29yUHJvY2Vzc0xpbmUgZmFpbGVkIHJlc3VsdCA9ICVkXG4iLCByZXN1bHQpOworLSAgICAgICAgICAgIH0KKy0KKyAKKyAgICAgICAgICAgICBpZiAoKHkgPT0gMCkgJiYgIWlzX2xqbW9ubykgeworICAgICAgICAgICAgICAgICAvL0ZvciBsam1vbm8sIG1ha2Ugc3VyZSB0aGF0IGZpcnN0IGxpbmUgaXMgbm90IGEgYmxhbmtSYXN0ZXIgbGluZS5PdGhlcndpc2UgcHJpbnRlcgorQEAgLTc4MCwxMSArNzY5LDYgQEAgaW50IEhQQ3Vwc0ZpbHRlcjo6cHJvY2Vzc1Jhc3RlckRhdGEoY3VwcworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0gIC8vIGZvcigpIGxvb3AgZW5kCisgCistICAgICAgICByZXN1bHQgPSBpbWFnZVByb2Nlc3NvckVuZFBhZ2UoaW1hZ2VQcm9jZXNzb3IpOworLSAgICAgICAgaWYgKHJlc3VsdCAhPSBJUEVfU1VDQ0VTUyl7CistICAgICAgICAgICAgICAgIGRiZ2xvZygiREVCVUc6IGltYWdlUHJvY2Vzc29yRW5kUGFnZSBmYWlsZWQgcmVzdWx0ID0gJWRcbiIsIHJlc3VsdCk7CistICAgICAgICB9CistCisgCisgICAgICAgICBtX0pvYi5OZXdQYWdlKCk7CisgICAgICAgICBpZiAoZXJyICE9IE5PX0VSUk9SKSB7CitAQCAtODAwLDggKzc4NCw2IEBAIGludCBIUEN1cHNGaWx0ZXI6OnByb2Nlc3NSYXN0ZXJEYXRhKGN1cHMKKyAgICAgICAgIHJnYlJhc3RlciA9IE5VTEw7CisgICAgIH0KKyAKKy0gICAgaW1hZ2VQcm9jZXNzb3JEZXN0cm95KGltYWdlUHJvY2Vzc29yKTsKKy0KKyAgICAgdW5saW5rKGhwUHJlUHJvY2Vzc2VkUmFzdGVyRmlsZSk7CisgICAgIHJldHVybiByZXRfc3RhdHVzOworIH0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcC9jb25maWd1cmUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAvY29uZmlndXJlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhmZTc3YzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAvY29uZmlndXJlLnBhdGNoCkBAIC0wLDAgKzEsMTIgQEAKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtMjcsOCArMjcsNyBAQAorIAorICNBQ19QUkVSRVEoMi41OSkKKyBBQ19JTklUKFtIUCBMaW51eCBJbWFnaW5nIGFuZCBQcmludGluZ10sIFszLjE5LjEyXSwgWzMuMTkuMTJdLCBbaHBsaXBdKQorLSNBTV9JTklUX0FVVE9NQUtFKFsxLjkgZm9yZWlnbl0pCistQU1fSU5JVF9BVVRPTUFLRQorK0FNX0lOSVRfQVVUT01BS0UoW2ZvcmVpZ25dKQorIEFDX0RJU0FCTEVfU1RBVElDCisgCisgIyBDaGVja3MgZm9yIHByb2dyYW1zLgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwL2ZpeC1saWJ1c2ItcGF0aHMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAvZml4LWxpYnVzYi1wYXRocy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWExZGUwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwL2ZpeC1saWJ1c2ItcGF0aHMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQorCistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTU5OSw2ICs1OTksOCBAQCBpZiB0ZXN0ICIkY2xhc3NfZHJpdmVyIiA9ICJubyIgJiYgdGVzdCAiCisgICAgICAgQUNfQ0hFQ0tfSEVBREVSUyh1c2IuaCwgLFtBQ19NU0dfRVJST1IoW2Nhbm5vdCBmaW5kIGxpYnVzYi1kZXZlbCBzdXBwb3J0XSwgMTEpXSkKKyAgICBlbHNlCisgICAgICAgQUNfQ0hFQ0tfTElCKFt1c2ItMS4wXSwgW2xpYnVzYl9pbml0XSwgW0xJQlM9IiRMSUJTIl0sIFtBQ19NU0dfRVJST1IoW2Nhbm5vdCBmaW5kIGxpYnVzYiAxLjAgc3VwcG9ydF0sIDIpXSkKKysgICAgICBMSUJVU0JJTkNMVURFUk9PVD89Ii91c3IvaW5jbHVkZS8iCisrICAgICAgQUNfQVJHX1ZBUihMSUJVU0JJTkNMVURFUk9PVCwgW3BhdGggdG8gbGlidXNiLTEuMCBmb2xkZXJdKQorICAgICAgIEFDX0NIRUNLX0hFQURFUlMobGlidXNiLTEuMC9saWJ1c2IuaCwgLFtBQ19NU0dfRVJST1IoW2Nhbm5vdCBmaW5kIGxpYnVzYi0xLjAtZGV2ZWwgc3VwcG9ydF0sIDExKV0pCisgICAgZmkKKyBmaQorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMTA5LDcgKzEwOSw3IEBAIGxpYmhwbXVkX2xhX1NPVVJDRVMgKz0gaW8vaHBtdWQvbXVzYl9saWIKKyBsaWJocG11ZF9sYV9MREZMQUdTICs9IC1sdXNiCisgZWxzZQorIGxpYmhwbXVkX2xhX1NPVVJDRVMgKz0gaW8vaHBtdWQvbXVzYi5jIAorLWxpYmhwbXVkX2xhX0NGTEFHUyAgKz0gLUkvdXNyL2luY2x1ZGUvbGlidXNiLTEuMAorK2xpYmhwbXVkX2xhX0NGTEFHUyAgKz0gLUkkKExJQlVTQklOQ0xVREVST09UKS9saWJ1c2ItMS4wCisgbGliaHBtdWRfbGFfTERGTEFHUyArPSAtbHVzYi0xLjAKKyBlbmRpZgorIAorQEAgLTM2Miw3ICszNjIsNyBAQCBocG11ZGV4dF9sYV9DRkxBR1MgKz0gLUlwcm90b2NvbC9kaXNjb3ZlCisgZW5kaWYKKyAKKyBpZiAhTElCVVNCMDFfQlVJTEQKKy1ocG11ZGV4dF9sYV9DRkxBR1MgKz0tSS91c3IvaW5jbHVkZS9saWJ1c2ItMS4wIAorK2hwbXVkZXh0X2xhX0NGTEFHUyArPS1JJChMSUJVU0JJTkNMVURFUk9PVCkvbGlidXNiLTEuMCAKKyBlbmRpZgorIGVuZGlmICMhSFBMSVBfQ0xBU1NfRFJJVkVSCisgIyB1aSAocXQzKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwL2hwbGlwLTMuMTkuNi1maXgtcmV0dXJuLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwL2hwbGlwLTMuMTkuNi1maXgtcmV0dXJuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3NTQ2YjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXAvaHBsaXAtMy4xOS42LWZpeC1yZXR1cm4ucGF0Y2gKQEAgLTAsMCArMSwyMCBAQAorRnJvbSAyZmNkMGU3OWIyMWVjNmRiZjk3NWFkN2QxYjU2OTdhNzg5OTNlMmYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGF2aWQgVmFsbGVhdSA8dmFsbGVhdUBjaHJvbWl1bS5vcmc+CitEYXRlOiBXZWQsIDE0IEF1ZyAyMDE5IDE1OjQ3OjM4IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeGluZyBpbnZhbGlkIHJldHVybiBpbiB2b2lkIGZ1bmN0aW9uCisKKy0tLQorIHBybnQvaHBwcy9ocHBzZmlsdGVyLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKKy0tLSBhL3BybnQvaHBwcy9ocHBzZmlsdGVyLmMKKysrKyBiL3BybnQvaHBwcy9ocHBzZmlsdGVyLmMKK0BAIC0xMDQsNyArMTA0LDcgQEAgc3RhdGljIHZvaWQgb3Blbl90ZW1wYm9va2xldGZpbGUoY2hhciAqbQorICAgICBpZihwdGVtcGJvb2tsZXRfZmlsZSA9PSBOVUxMKQorICAgICB7CisgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJFUlJPUjogVW5hYmxlIHRvIG9wZW4gdGVtcCBmaWxlICVzXG4iLCB0ZW1wX2ZpbGVuYW1lKTsKKy0gICAgICAgICAgICByZXR1cm4gMTsKKysgICAgICAgICAgICByZXR1cm47CisgICAgIH0gIAorICAgICBjaG1vZCh0ZW1wX2ZpbGVuYW1lLCBTX0lSVVNSIHwgU19JV1VTUiB8IFNfSVJHUlAgfCBTX0lST1RIKTsKKyAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcF8zLjEyLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaHBsaXAvaHBsaXBfMy4xMi42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3N2M5OTViLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcF8zLjEyLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NSArMCwwIEBACi1TVU1NQVJZID0gIkhQIExpbnV4IEltYWdpbmcgYW5kIFByaW50aW5nIgotTElDRU5TRT0iR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00NDJiYjNjYmJlZWI2MDY0M2E4NzMyNTcxOGI4YThlZSIKLQotUFIgPSAicjEiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vc2V0dXAtYWRkLXNsZWVwLWFmdGVyLWN1cHMtcmVzZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWxpYnVzYi1wYXRocy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jdXBzLTEuNi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pbmNsdWRlLWN1cHMtcHBkLmgtZm9yLW1pc3NpbmctcHBkLWRlZmluaXRpb25zLnBhdGNoIFwKLSIKLQotREVQRU5EUyArPSAiY3VwcyBweXRob24gbGlidXNiIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcHl0aG9uLWRpciBweXRob25uYXRpdmUgcGtnY29uZmlnCi0KLWV4cG9ydCBTVEFHSU5HX0lOQ0RJUgotZXhwb3J0IFNUQUdJTkdfTElCRElSCi0KLUVYVFJBX09FQ09ORiArPSAiXAotICAgICAgICBMSUJVU0JJTkNMVURFUk9PVD0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgIC0tZGlzYWJsZS1uZXR3b3JrLWJ1aWxkIFwKLSAgICAgICAgLS1kaXNhYmxlLWRvYy1idWlsZCBcCi0gICAgICAgIC0tZGlzYWJsZS1wcC1idWlsZCBcCi0gICAgICAgIC0tZGlzYWJsZS1zY2FuLWJ1aWxkIFwKLSAgICAgICAgLS1kaXNhYmxlLWd1aS1idWlsZCBcCi0gICAgICAgIC0tZGlzYWJsZS1mYXgtYnVpbGQgXAotICAgICAgICAtLWRpc2FibGUtcG9saWN5a2l0ICBcCi0gICAgICAgIC0tZGlzYWJsZS1xdDQgXAotICAgICAgICAtLWRpc2FibGUtcXQzIFwKLSAgICAgICAgLS1kaXNhYmxlLWRidXMtYnVpbGQgXAotICAgICAgICAtLWRpc2FibGUtZm9vbWF0aWMtZHJ2LWluc3RhbGwgXAotICAgICAgICAtLWVuYWJsZS1mb29tYXRpYy1wcGQtaW5zdGFsbCAgXAotICAgICAgICAtLWVuYWJsZS1mb29tYXRpYy1yaXAtaHBsaXAtaW5zdGFsbCBcCi0gICAgICAgIC0td2l0aC1jdXBzYmFja2VuZGRpcj0ke2xpYmRpcn0vY3Vwcy9iYWNrZW5kIFwKLSAgICAgICAgLS13aXRoLWN1cHNmaWx0ZXJkaXI9JHtsaWJkaXJ9L2N1cHMvZmlsdGVyIFwKLSIKLQotUEFDS0FHRVMgKz0gIiR7UE59LXBwZCAke1BOfS1jdXBzICR7UE59LWJhY2tlbmQgJHtQTn0tZmlsdGVyICR7UE59LWhhbCIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgICAgIHB5dGhvbiBcCi0gICAgICAgIHB5dGhvbi1zeXNsb2cgXAotICAgICAgICBweXRob24tcHByaW50IFwKLSAgICAgICAgcHl0aG9uLWNvbXByZXNzaW9uIFwKLSAgICAgICAgcHl0aG9uLXNoZWxsIFwKLSAgICAgICAgcHl0aG9uLXhtbCBcCi0gICAgICAgIHB5dGhvbi11bml4YWRtaW4gXAotICAgICAgICBweXRob24taHRtbCBcCi0gICAgICAgIHB5dGhvbi1yZXNvdXJjZSBcCi0gICAgICAgIHB5dGhvbi10ZXJtaW5hbCBcCi0gICAgICAgIHB5dGhvbi1zdWJwcm9jZXNzXAotIgotUkRFUEVORFNfJHtQTn0tZmlsdGVyICs9ICJwZXJsIgotCi0jIG5lZWQgdG8gc25hZyB0aGUgZGVidWcgZmlsZSBvciBPRSB3aWxsIGZhaWwgb24gYmFja2VuZCBwYWNrYWdlCi1GSUxFU18ke1BOfS1kYmcgKz0gIlwKLSAgICAgICAgJHtsaWJkaXJ9L2N1cHMvYmFja2VuZC8uZGVidWcgXAotICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8uZGVidWcgXAotICAgICAgICAke2xpYmRpcn0vY3Vwcy9maWx0ZXIvLmRlYnVnICIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmxhIgotRklMRVNfJHtQTn0tcHBkID0gIiR7ZGF0YWRpcn0vcHBkIgotRklMRVNfJHtQTn0tY3VwcyA9ICIke2RhdGFkaXJ9L2N1cHMiCi1GSUxFU18ke1BOfS1iYWNrZW5kID0gIiR7bGliZGlyfS9jdXBzL2JhY2tlbmQiCi1GSUxFU18ke1BOfS1maWx0ZXIgPSAiJHtsaWJkaXJ9L2N1cHMvZmlsdGVyIgotRklMRVNfJHtQTn0taGFsID0gIiR7ZGF0YWRpcn0vaGFsIgotCi1GSUxFU18ke1BOfSArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5zbyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjUzMDM5MzhlODYzMDc3NWVhNmZiMzgzYWY4NTc3NWU1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU0NTc4MDAwNzkyOTY5YWRiNTgzZTc1ZWZlYWNiOWM0NmFiNjk2NTllYzdlOTQyNGRlMzkwNjEzZjM1OTU3NzUiCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcF8zLjE5LjEyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2hwbGlwL2hwbGlwXzMuMTkuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODgzYTZmZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ocGxpcC9ocGxpcF8zLjE5LjEyLmJiCkBAIC0wLDAgKzEsODggQEAKK1NVTU1BUlkgPSAiSFAgTGludXggSW1hZ2luZyBhbmQgUHJpbnRpbmciCitMSUNFTlNFPSJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTIwZjJjODE5NDk5Y2MyMDYzZTlhN2IwN2I0MDg4MTVjIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtbGlidXNiLXBhdGhzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzk5OS1yZW1vdmUtbEltYWdlUHJvY2Vzc29yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzYwMC1maXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDMwLXJlcGxhY2VfdW5zYWZlX21lbWNweV93aXRoX21lbW1vdmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDUwLWZpeC1nbGliY2lzbXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaHBsaXAtMy4xOS42LWZpeC1yZXR1cm4ucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImQ3MmJjNzdkNzkxYzE1MGMyYzIyYjg0ZTk1NTNiYWIzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI3ZjM5ODUwMmZiNjU5ZTBkZThlNTQ5NzYyMzdlM2M2YTY0ZmVjMGIzYzM2MDU0YTUxNTg3NmY3YjAwNmIyNTUiCisKK0RFUEVORFMgKz0gImN1cHMgcHl0aG9uMyBsaWJ1c2IiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBweXRob24zLWRpciBweXRob24zbmF0aXZlIHBrZ2NvbmZpZyBzeXN0ZW1kCisKK2V4cG9ydCBTVEFHSU5HX0lOQ0RJUgorZXhwb3J0IFNUQUdJTkdfTElCRElSCisKK0NGTEFHUyArPSAiLUkke1NUQUdJTkdfSU5DRElSfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0ke1BZVEhPTl9BQkl9IgorCitFWFRSQV9PRUNPTkYgKz0gIlwKKyAgICAgICAgTElCVVNCSU5DTFVERVJPT1Q9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICAgICAgICAtLWVuYWJsZS1jdXBzLXBwZC1pbnN0YWxsIFwKKyAgICAgICAgLS1kaXNhYmxlLW5ldHdvcmstYnVpbGQgXAorICAgICAgICAtLWRpc2FibGUtZG9jLWJ1aWxkIFwKKyAgICAgICAgLS1kaXNhYmxlLXBwLWJ1aWxkIFwKKyAgICAgICAgLS1kaXNhYmxlLXNjYW4tYnVpbGQgXAorICAgICAgICAtLWRpc2FibGUtZ3VpLWJ1aWxkIFwKKyAgICAgICAgLS1kaXNhYmxlLWZheC1idWlsZCBcCisgICAgICAgIC0tZGlzYWJsZS1wb2xpY3lraXQgIFwKKyAgICAgICAgLS1kaXNhYmxlLXF0NCBcCisgICAgICAgIC0tZGlzYWJsZS1xdDMgXAorICAgICAgICAtLWRpc2FibGUtZGJ1cy1idWlsZCBcCisgICAgICAgIC0tZW5hYmxlLWZvb21hdGljLWRydi1pbnN0YWxsIFwKKyAgICAgICAgLS1kaXNhYmxlLWZvb21hdGljLXBwZC1pbnN0YWxsIFwKKyAgICAgICAgLS1kaXNhYmxlLWZvb21hdGljLXJpcC1ocGxpcC1pbnN0YWxsIFwKKyAgICAgICAgLS13aXRoLWN1cHNiYWNrZW5kZGlyPSR7bGliZGlyfS9jdXBzL2JhY2tlbmQgXAorICAgICAgICAtLXdpdGgtY3Vwc2ZpbHRlcmRpcj0ke2xpYmRpcn0vY3Vwcy9maWx0ZXIgXAorIgorCitFWFRSQV9PRU1BS0UgPSAicnVsZXNzeXN0ZW1kaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIHJtIC1yZiAke0R9JHtkYXRhZGlyfS9ocGxpcC91cGdyYWRlLnB5CisgICAgcm0gLXJmICR7RH0ke2RhdGFkaXJ9L2hwbGlwL3VuaW5zdGFsbC5weQorICAgIHNlZCAtaSAtZSAic3wvdXNyL2Jpbi9lbnYgcHl0aG9ufC91c3IvYmluL2VudiBweXRob24zfGciICR7RH0ke2RhdGFkaXJ9L2hwbGlwLyoucHkKKyAgICBzZWQgLWkgLWUgInN8L3Vzci9iaW4vcHl0aG9ufC91c3IvYmluL2VudiBweXRob24zfGciICR7RH0ke2RhdGFkaXJ9L2hwbGlwLyoucHkKK30KKworUEFDS0FHRVMgKz0gIiR7UE59LXBwZCAke1BOfS1jdXBzICR7UE59LWJhY2tlbmQgJHtQTn0tZmlsdGVyICR7UE59LWhhbCIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgICAgIHB5dGhvbjNcCisgICAgICAgIHB5dGhvbjMtc3lzbG9nIFwKKyAgICAgICAgcHl0aG9uMy1wcHJpbnQgXAorICAgICAgICBweXRob24zLWNvbXByZXNzaW9uIFwKKyAgICAgICAgcHl0aG9uMy1zaGVsbCBcCisgICAgICAgIHB5dGhvbjMteG1sIFwKKyAgICAgICAgcHl0aG9uMy11bml4YWRtaW4gXAorICAgICAgICBweXRob24zLWh0bWwgXAorICAgICAgICBweXRob24zLXJlc291cmNlIFwKKyAgICAgICAgcHl0aG9uMy10ZXJtaW5hbCBcCisiCitSREVQRU5EU18ke1BOfS1maWx0ZXIgKz0gInBlcmwiCisKKyMgbmVlZCB0byBzbmFnIHRoZSBkZWJ1ZyBmaWxlIG9yIE9FIHdpbGwgZmFpbCBvbiBiYWNrZW5kIHBhY2thZ2UKK0ZJTEVTXyR7UE59LWRiZyArPSAiXAorICAgICAgICAke2xpYmRpcn0vY3Vwcy9iYWNrZW5kLy5kZWJ1ZyBcCisgICAgICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9Ly5kZWJ1ZyBcCisgICAgICAgICR7bGliZGlyfS9jdXBzL2ZpbHRlci8uZGVidWcgIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoubGEiCitGSUxFU18ke1BOfS1wcGQgPSAiJHtkYXRhZGlyfS9wcGQiCitGSUxFU18ke1BOfS1jdXBzID0gIiR7ZGF0YWRpcn0vY3VwcyIKK0ZJTEVTXyR7UE59LWJhY2tlbmQgPSAiJHtsaWJkaXJ9L2N1cHMvYmFja2VuZCIKK0ZJTEVTXyR7UE59LWZpbHRlciA9ICIke2xpYmRpcn0vY3Vwcy9maWx0ZXIiCitGSUxFU18ke1BOfS1oYWwgPSAiJHtkYXRhZGlyfS9oYWwiCisKK0ZJTEVTXyR7UE59ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLnNvIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiaHBsaXAtcHJpbnRlckAuc2VydmljZSIKKworQ0xFQU5CUk9LRU4gPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pY2V3bS9pY2V3bV8xLjUuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pY2V3bS9pY2V3bV8xLjUuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmU2ZGUwMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaWNld20vaWNld21fMS41LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJJY2UgV2luZG93IE1hbmFnZXIgKEljZVdNKSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00YTI2OTUyNDY3ZWY3OWE3ZWZjYTRhOWNmNTJkNDE3YiIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaWNlLXdtLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLXNraXAtcnVubmluZy10ZXN0LXByb2dyYW0td2hlbi1jcm9zcy1jby5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZWJhOTRhNzkzNWEwNTMxZDJjMTRlZWIxNDI2YWVlZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmMWMxMzQ0YjIwYTllODYzNTE0M2Y3MGVlMjc5MzBiNTVmODEzYzE1Y2E2MWY4NGQ3NzU4NGQzMTFiNmFjMDI3IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBwZXJsbmF0aXZlIGZlYXR1cmVzX2NoZWNrIHFlbXUKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLWxpYmRpcj0ke2RhdGFkaXJ9L2ljZXdtIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtY2ZnZGlyPSR7c3lzY29uZmRpcn0vaWNld20gXAotICAgICAgICAgICAgICAgIC0td2l0aC1kb2NkaXI9JHtkb2NkaXJ9L2ljZXdtIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1mcmliaWRpIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS14aW5lcmFtYSBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtc2hhcGUiCi0KLURFUEVORFMgPSAiYXNjaWlkb2MtbmF0aXZlIGZvbnRjb25maWcgZ2RrLXBpeGJ1ZiBsaWJ4ZnQgbGlieHBtIGxpYnhyYW5kciBsaWJ4aW5lcmFtYSBsaWJpY2UgbGlic20gbGlieDExIGxpYnhleHQgbGlieHJlbmRlciIKLURFUEVORFNfYXBwZW5kID0gIiBxZW11LW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gInBlcmwgZnJpYmlkaSIKLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQotICAgIGNkICR7Qn0KLSAgICBvZV9ydW5tYWtlIC1DIHNyYyBnZW5wcmVmCi0KLSAgICBxZW11X2JpbmFyeT0iJHtAcWVtdV93cmFwcGVyX2NtZGxpbmUoZCwgJyR7U1RBR0lOR19ESVJfVEFSR0VUfScsWycke0J9L3NyYy8ubGlicycsJyR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2xpYmRpcn0nLCcke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0nXSl9IgotICAgIGNhdCA+cWVtdXdyYXBwZXIgPDxFT0YKLSMhL2Jpbi9zaAotJHtxZW11X2JpbmFyeX0gc3JjL2dlbnByZWYgIlwkQCIKLUVPRgotICAgIGNobW9kICt4IHFlbXV3cmFwcGVyCi0gICAgLi9xZW11d3JhcHBlciA+IHNyYy9wcmVmZXJlbmNlcwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94c2Vzc2lvbnMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaWNld20vaWNld21fMS42LjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaWNld20vaWNld21fMS42LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjQxYTJiMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pY2V3bS9pY2V3bV8xLjYuNS5iYgpAQCAtMCwwICsxLDQ2IEBACitERVNDUklQVElPTiA9ICJJY2UgV2luZG93IE1hbmFnZXIgKEljZVdNKSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00YTI2OTUyNDY3ZWY3OWE3ZWZjYTRhOWNmNTJkNDE3YiIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaWNlLXdtLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmx6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLXNraXAtcnVubmluZy10ZXN0LXByb2dyYW0td2hlbi1jcm9zcy1jby5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNDFlNmFiZjg0MmZmM2Y4NzA1YTgxZDM1MmJlN2M1YjE4MWM1ODc1NDljMTgzZGUwNjQxYzM4MjAyMzRhN2IyIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ljZS13bS8ke0JQTn0vcmVsZWFzZXMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHBlcmxuYXRpdmUgZmVhdHVyZXNfY2hlY2sgcWVtdSB1cGRhdGUtYWx0ZXJuYXRpdmVzCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1saWJkaXI9JHtkYXRhZGlyfS9pY2V3bSBcCisgICAgICAgICAgICAgICAgLS13aXRoLWNmZ2Rpcj0ke3N5c2NvbmZkaXJ9L2ljZXdtIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZG9jZGlyPSR7ZG9jZGlyfS9pY2V3bSBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtZnJpYmlkaSBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUteGluZXJhbWEgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXNoYXBlIgorCitERVBFTkRTID0gImFzY2lpZG9jLW5hdGl2ZSBmb250Y29uZmlnIGdkay1waXhidWYgbGlieGZ0IGxpYnhwbSBsaWJ4cmFuZHIgXAorICAgIGxpYnhpbmVyYW1hIGxpYmljZSBsaWJzbSBsaWJ4MTEgbGlieGV4dCBsaWJ4cmVuZGVyIGxpYnhjb21wb3NpdGUgbGlieGRhbWFnZSBcCisgICAgbGlieGZpeGVzIgorREVQRU5EU19hcHBlbmQgPSAiIHFlbXUtbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gPSAicGVybCBmcmliaWRpIgorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCisgICAgY2QgJHtCfQorICAgIG9lX3J1bm1ha2UgLUMgc3JjIGdlbnByZWYKKworICAgIHFlbXVfYmluYXJ5PSIke0BxZW11X3dyYXBwZXJfY21kbGluZShkLCAnJHtTVEFHSU5HX0RJUl9UQVJHRVR9JyxbJyR7Qn0vc3JjLy5saWJzJywnJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7bGliZGlyfScsJyR7U1RBR0lOR19ESVJfVEFSR0VUfS8ke2Jhc2VfbGliZGlyfSddKX0iCisgICAgY2F0ID5xZW11d3JhcHBlciA8PEVPRgorIyEvYmluL3NoCiske3FlbXVfYmluYXJ5fSBzcmMvZ2VucHJlZiAiXCRAIgorRU9GCisgICAgY2htb2QgK3ggcWVtdXdyYXBwZXIKKyAgICAuL3FlbXV3cmFwcGVyID4gc3JjL3ByZWZlcmVuY2VzCit9CisKK0FMVEVSTkFUSVZFXyR7UE59ID0gIngtc2Vzc2lvbi1tYW5hZ2VyIgorQUxURVJOQVRJVkVfVEFSR0VUW3gtc2Vzc2lvbi1tYW5hZ2VyXSA9ICIke2JpbmRpcn0vaWNld20tc2Vzc2lvbiIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZXyR7UE59ID0gIjEwMCIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veHNlc3Npb25zIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2luZGVudC9pbmRlbnQvMDAwMS1GaXgtYnVpbGRzLXdpdGgtcmVjZW50LWdldHRleHQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaW5kZW50L2luZGVudC8wMDAxLUZpeC1idWlsZHMtd2l0aC1yZWNlbnQtZ2V0dGV4dC5wYXRjaAppbmRleCBlNDhkZmIzLi5lOWRhZGFjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaW5kZW50L2luZGVudC8wMDAxLUZpeC1idWlsZHMtd2l0aC1yZWNlbnQtZ2V0dGV4dC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaW5kZW50L2luZGVudC8wMDAxLUZpeC1idWlsZHMtd2l0aC1yZWNlbnQtZ2V0dGV4dC5wYXRjaApAQCAtOSw4ICs5LDYgQEAKICBNYWtlZmlsZS5hbSB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDU0OGZlYTcuLmNmMDFjNWUgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5hbQogKysrIGIvTWFrZWZpbGUuYW0KIEBAIC0xLDcgKzEsNyBAQApAQCAtMTgsNyArMTYsMTcgQEAKICBBVVRPTUFLRV9PUFRJT05TID0gbm8tdGV4aW5mby50ZXgKICAKIC1TVUJESVJTID0gaW50bCBzcmMgZG9jIHBvIG1hbgotK1NVQkRJUlMgPSBzcmMgZG9jIHBvIG1hbgorK1NVQkRJUlMgPSBzcmMgcG8gbWFuCiAgCiAgQlVJTFRfU09VUkNFUyA9IAogIAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC01OCw3ICs1OCw2IEBAIGZpCisgQUNfSEVBREVSX0RJUkVOVAorIAorIEFDX09VVFBVVChbIAorLSAgIGludGwvTWFrZWZpbGUKKyAgICBwby9NYWtlZmlsZS5pbgorICAgIE1ha2VmaWxlCisgICAgc3JjL01ha2VmaWxlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaW5kZW50L2luZGVudF8yLjIuMTIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaW5kZW50L2luZGVudF8yLjIuMTIuYmIKaW5kZXggZjhkNjNkNC4uOTBiYThhMiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2luZGVudC9pbmRlbnRfMi4yLjEyLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pbmRlbnQvaW5kZW50XzIuMi4xMi5iYgpAQCAtOSw2ICs5LDcgQEAKIHlvdSB3YW50IGEgcHJvZ3JhbSB0byBmb3JtYXQgeW91ciBjb2RlLiIKIExJQ0VOU0UgPSAiR1BMdjMiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKwogREVQRU5EUyA9ICJ2aXJ0dWFsL2dldHRleHQiCiAKIFNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmd6IFwKQEAgLTE5LDEwICsyMCw4IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiNDc2NGI2YWM5OGY2NjU0YTM1ZGExMTdiOGU1ZThlMTQiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTc3ZDY4YzAyMTE1MTU0NTliODgxMjExOGQ2MDY4MTJlMzAwMDk3Y2ZhYzBiNGU5ZmIzNDcyNjY0MjYzYmI4YiIKIAotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dAoraW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCiAKLUNGTEFHU19jbGFzcy1uYXRpdmUgKz0gIiAtV25vLWVycm9yPXVudXNlZC12YWx1ZSIKLQotRklMRVNfJHtQTn0tZG9jICs9ICIvdXNyL2RvYy9pbmRlbnQvaW5kZW50Lmh0bWwiCitDRkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLVduby1lcnJvcj11bnVzZWQtdmFsdWUiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2lvdG9wL2lvdG9wXzAuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9pb3RvcC9pb3RvcF8wLjYuYmIKaW5kZXggYjAxZDdmNi4uM2E1OTcyMSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2lvdG9wL2lvdG9wXzAuNi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvaW90b3AvaW90b3BfMC42LmJiCkBAIC00LDI0ICs0LDI2IEBACiAgICAgYSB0YWJsZSBvZiBjdXJyZW50IEkvTyB1c2FnZSBieSBwcm9jZXNzZXMgb24gdGhlIHN5c3RlbS4iCiBIT01FUEFHRSA9ICJodHRwOi8vZ3VpY2hhei5mcmVlLmZyL2lvdG9wLyIKIAotCiBMSUNFTlNFID0gIkdQTHYyKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgogCi1TUkNfVVJJID0gImh0dHA6Ly9ndWljaGF6LmZyZWUuZnIvaW90b3AvZmlsZXMvJHtCUH0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1ZWY5NDU2YjI2ZDc2OTRhYmYzMTAxYTcyZTFlMGQxZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYWRlYTJhMjRlZGE0OWJiYmFlYjRlNmVkMjA0MjM1NWI0NDFkYmQ3MTYxZTg4MzA2N2EwMmJmYzhkY2VmNzViIgorUFYgLj0gIitnaXQke1NSQ1BWfSIKKworU1JDUkVWID0gIjFiZmIzYmM3MGZlYmIxZmZiOTUxNDZiNmRjZDY1MjU3MjI4MDk5YTMiCitTUkNfVVJJID0gImdpdDovL3JlcG8ub3IuY3ovaW90b3AuZ2l0IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3JlcG8ub3IuY3ovaW90b3AuZ2l0L3RhZ3MiCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJpb3RvcC0oP1A8cHZlcj5cZCsoXC5cZCspKykiCiAKLWluaGVyaXQgZGlzdHV0aWxzCitpbmhlcml0IGRpc3R1dGlsczMKIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAgICAgcm0gLWYgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NpdGUucHlvIHx8IHRydWUKICAgICBybSAtZiAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2l0ZS5weSAgfHwgdHJ1ZQogfQogCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24tY3Vyc2VzIHB5dGhvbi10ZXh0dXRpbHMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWNvZGVjcyBweXRob24tY3R5cGVzIHB5dGhvbi1wcHJpbnQgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXNoZWxsIHB5dGhvbi1zdWJwcm9jZXNzIHB5dGhvbi1jb3JlIgorUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uMy1jdXJzZXMgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1jb2RlY3MgcHl0aG9uMy1jdHlwZXMgcHl0aG9uMy1wcHJpbnQgXAorICAgICAgICAgICAgICAgICAgcHl0aG9uMy1zaGVsbCBweXRob24zLWNvcmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQva29ua3JldGNtcGkva29ua3JldGNtcGlfMC45LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQva29ua3JldGNtcGkva29ua3JldGNtcGlfMC45LjIuYmIKaW5kZXggZjYyY2Y2Yi4uZTZkNTY2MyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2tvbmtyZXRjbXBpL2tvbmtyZXRjbXBpXzAuOS4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9rb25rcmV0Y21waS9rb25rcmV0Y21waV8wLjkuMi5iYgpAQCAtNiw3ICs2LDcgQEAKIEhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ybm92YWNlay9rb25rcmV0Y21waSIKIExJQ0VOU0UgPSAiTUlUIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjY3MzI3MGJmYzM1MGQ5Y2UxZWZjODcyNGM2YzE4NzMiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHN3aWctbmF0aXZlIHNibGltLWNtcGktZGV2ZWwgcHl0aG9uIgorREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBzd2lnLW5hdGl2ZSBzYmxpbS1jbXBpLWRldmVsIHB5dGhvbjMiCiBERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGNtcGktYmluZGluZ3MtbmF0aXZlIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcm5vdmFjZWsva29ua3JldGNtcGkuZ2l0IFwKQEAgLTM0LDYgKzM0LDYgQEAKIAogUlBST1ZJREVTXyR7UE59LWRiZyArPSAiJHtQTn0tcHl0aG9uLWRiZyIKIAotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7bGliZGlyfS9weXRob24yLjcvc2l0ZS1wYWNrYWdlcy9rb25rcmV0bW9mLnB5KiAke2xpYmRpcn0vcHl0aG9uMi43L3NpdGUtcGFja2FnZXMvX2tvbmtyZXRtb2Yuc28iCitGSUxFU18ke1BOfS1weXRob24gPSAiJHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy9rb25rcmV0bW9mLnB5KiAke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL19rb25rcmV0bW9mLnNvIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJjZWMvbGliY2VjLzAwMDEtRW5oYW5jZS1yZXByb2R1Y2liaWxpdHkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliY2VjL2xpYmNlYy8wMDAxLUVuaGFuY2UtcmVwcm9kdWNpYmlsaXR5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYwODg4N2IKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliY2VjL2xpYmNlYy8wMDAxLUVuaGFuY2UtcmVwcm9kdWNpYmlsaXR5LnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gMjQwNzI3ZDMxNDI3MDBhZjc3OWNhNmY1YzQ2Nzc0MTk3ODdiY2EyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI4IEFwciAyMDIwIDE2OjE1OjIwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEVuaGFuY2UgcmVwcm9kdWNpYmlsaXR5CisKK1NldEJ1aWxkSW5mby5jbWFrZSBncm9rcyBpbmZvcm1hdGlvbiBmcm9tIGJ1aWxkIHN5c3RlbSBhbmQgZW1pdHMgdGhhdAoraW50byBzb3VyY2Vjb2RlICggaGVhZGVyIGZpbGUgKSB3aGljaCBpcyB0aGVuIGNvbXBpbGVkIGludG8gYmluYXJ5LCB0aGlzCitzdHJpbmcgaXMgYnVpbGQgc3lzdGVtIGRlcGVuZGVudCwgdGhlcmVmb3JlIGNhbiBjYXVzZSByZXByb2R1Y2liaWxpdHkKK2lzc3VlcywgaGVyZSB3ZSBzZXQgc3RhdGljIHN0cmluZyBmb3IgTElCX0lORk8KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1zcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9saWJjZWMvQ01ha2VMaXN0cy50eHQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbGliY2VjL0NNYWtlTGlzdHMudHh0IGIvc3JjL2xpYmNlYy9DTWFrZUxpc3RzLnR4dAoraW5kZXggMTlhMDcwYi4uNGIzYzgyNyAxMDA2NDQKKy0tLSBhL3NyYy9saWJjZWMvQ01ha2VMaXN0cy50eHQKKysrKyBiL3NyYy9saWJjZWMvQ01ha2VMaXN0cy50eHQKK0BAIC0xMzMsNyArMTMzLDcgQEAgc2V0KENFQ19IRUFERVJTIGRldmljZXMvQ0VDUmVjb3JkaW5nRGV2aWNlLmgKKyBzb3VyY2VfZ3JvdXAoIkhlYWRlciBGaWxlcyIgRklMRVMgJHtDRUNfSEVBREVSU30pCisgCisgIyBwbGF0Zm9ybSBhbmQgZGV2aWNlIHNwZWNpZmljCistaW5jbHVkZShjbWFrZS9TZXRCdWlsZEluZm8uY21ha2UpCisrc2V0KExJQl9JTkZPICJjb21waWxlZCBvbiAke0NNQUtFX1NZU1RFTX0gLi4uICIpCisgaW5jbHVkZShjbWFrZS9DaGVja1BsYXRmb3JtU3VwcG9ydC5jbWFrZSkKKyAKKyAjIyBjcmVhdGUgcHJvamVjdCBncm91cHMKKy0tIAorMi4yNi4yCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJjZWMvbGliY2VjX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJjZWMvbGliY2VjX2dpdC5iYgppbmRleCA4ZDVhODI0Li4zOWNlYjQ4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliY2VjL2xpYmNlY19naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmNlYy9saWJjZWNfZ2l0LmJiCkBAIC0yLDE4ICsyLDE5IEBACiBIT01FUEFHRSA9ICJodHRwOi8vbGliY2VjLnB1bHNlLWVpZ2h0LmNvbS8iCiAKIExJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTYxZmQ4NmY5Yzk0N2I0MzAxMjYxODFkYTJjNmM3MTUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iM2E3MTllOTdmNDllNDg0MWU5MDU3M2Y5YjFhOThhYyIKIAogREVQRU5EUyA9ICJwOHBsYXRmb3JtIHVkZXYgbmN1cnNlcyBzd2lnLW5hdGl2ZSBweXRob24zIgogCiBERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdsaWJ4MTEgbGlieHJhbmRyJywgJycsIGQpfSIKIERFUEVORFNfYXBwZW5kX3JwaSA9ICIke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICd2YzRncmFwaGljcycsICcnLCAnIHVzZXJsYW5kJywgZCl9IgogCi1QViA9ICI0LjAuNCIKK1BWID0gIjUuMC4wIgogCi1TUkNSRVYgPSAiM2JiZDQzMjE2MTg1MDNkMTQwMDgzODdhNzJmYWJiNjc0Mzg3ODgzMSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9QdWxzZS1FaWdodC9saWJjZWMuZ2l0IFwKK1NSQ1JFViA9ICI0M2JjMjdmZTdiZTQ5MTE0OWU2ZjU3ZDE0MTEwZTAyYWJkYWMyZjI0IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL1B1bHNlLUVpZ2h0L2xpYmNlYy5naXQ7YnJhbmNoPXJlbGVhc2UgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1DaGVja1BsYXRmb3JtU3VwcG9ydC5jbWFrZS1Eby1ub3QtaGFyZGNvZGUtbGliLXBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1FbmhhbmNlLXJlcHJvZHVjaWJpbGl0eS5wYXRjaCBcCiAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vMDAwMS1pZG4tZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi8wMDAxLWlkbi1mb3JtYXQtc2VjdXJpdHktd2FybmluZ3MucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuXzEuMzUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8xLjM1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEwNTc0MDMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8xLjM1LmJiCkBAIC0wLDAgKzEsNDAgQEAKK1NVTU1BUlkgPSAiSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWUgc3VwcG9ydCBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiSW1wbGVtZW50YXRpb24gb2YgdGhlIFN0cmluZ3ByZXAsIFB1bnljb2RlIGFuZCBJRE5BIHNwZWNpZmljYXRpb25zIGRlZmluZWQgYnkgdGhlIElFVEYgSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWVzIChJRE4pIHdvcmtpbmcgZ3JvdXAuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmlkbi8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIihMR1BMdjIuMSsgfCBMR1BMdjMpICYgR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGY0YmU0Nzk0MGE5MWVlNjk1NTZmNWY3MWVlZDRhZWMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlOR3YyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9pZG5hLmg7ZW5kbGluZT0yMTttZDU9MzdjZmZhZDI0ODA3ZjQ0NmEyNGRlM2U3MzcxZjIwYjkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2lkbi5jO2VuZGxpbmU9MjA7bWQ1PTA5ZTk3MDM0YTg4NzdiMzQ1MWNiNjUwNjVmYzJjMDZlIgorREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmljb252IGF1dG9jb25mLWFyY2hpdmUiCisKK2luaGVyaXQgcGtnY29uZmlnIGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gZ3RrLWRvYworCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGliaWRuLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pZG4tZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmVmNjM0MTQxZmUzOTMyNmNiMzU0Yjc1ZTg5MWZlYWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjExYWYxMDA1YjQ2YjdiMTVkMDU3ZDdmMTA3MzE1YTFhZDQ2OTM1YzdmY2RmMjQzYzE2ZTQ2ZWMxNGYwZmUxZSIKKworIyBjb21tYW5kIHRvb2wgaXMgdW5kZXIgR1BMdjMrLCB3aGlsZSBsaWJpZG4gaXRzZWxmIGlzIHVuZGVyIExHUEx2Mi4xKyBvciBMR1BMdjMKKyMgc28gcGFja2FnZSBjb21tYW5kIGludG8gYSBzZXBhcmF0ZSBwYWNrYWdlCitQQUNLQUdFUyA9KyAiaWRuIgorRklMRVNfaWRuID0gIiR7YmluZGlyfS8qIgorCitMSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyB8IExHUEx2MyIKK0xJQ0VOU0VfaWRuID0gIkdQTHYzKyIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1jc2hhcnAiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCXJtIC1yZiAke0R9JHtkYXRhZGlyfS9lbWFjcworfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJpbW9iaWxlZGV2aWNlL2xpYnBsaXN0XzIuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmltb2JpbGVkZXZpY2UvbGlicGxpc3RfMi4xLjAuYmIKaW5kZXggNDhkZWM0Ny4uMzY2NTllNyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmltb2JpbGVkZXZpY2UvbGlicGxpc3RfMi4xLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYmltb2JpbGVkZXZpY2UvbGlicGxpc3RfMi4xLjAuYmIKQEAgLTQsOSArNCw5IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYmI1YzUwYWI3Y2FiNGJhZWZmYmExNDk3NzAzMGMwNyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9NmFiMTdiNDE2NDA1NjQ0MzRkZGE4NWMwNmI3MTI0ZjciCiAKLURFUEVORFMgPSAibGlieG1sMiBnbGliLTIuMCBzd2lnIHB5dGhvbiIKK0RFUEVORFMgPSAibGlieG1sMiBnbGliLTIuMCBzd2lnIHB5dGhvbjMiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBweXRob25uYXRpdmUKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBweXRob24zbmF0aXZlCiAKIFNSQ1JFViA9ICIzZGYwMmQ0ZDBlOTAwODc3MWU4NjIyZmRjMTBkZTgzMzNiM2YwZDg1IgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpYmltb2JpbGVkZXZpY2UvbGlicGxpc3Q7cHJvdG9jb2w9aHR0cHMgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnB3cXVhbGl0eS9maWxlcy9hZGQtbWlzc2luZy1weXRob24taW5jbHVkZS1kaXItZm9yLWNyb3NzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnB3cXVhbGl0eS9maWxlcy9hZGQtbWlzc2luZy1weXRob24taW5jbHVkZS1kaXItZm9yLWNyb3NzLnBhdGNoCmluZGV4IGQxMjQ5MmYuLmVjODY3MjEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJwd3F1YWxpdHkvZmlsZXMvYWRkLW1pc3NpbmctcHl0aG9uLWluY2x1ZGUtZGlyLWZvci1jcm9zcy5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicHdxdWFsaXR5L2ZpbGVzL2FkZC1taXNzaW5nLXB5dGhvbi1pbmNsdWRlLWRpci1mb3ItY3Jvc3MucGF0Y2gKQEAgLTEzLDI4ICsxMywyMyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvcHl0aG9uL01ha2VmaWxlLmFtIGIvcHl0aG9uL01ha2VmaWxlLmFtCi1pbmRleCBhYmM1Y2QzLi5lMzViYTcxIDEwMDY0NAoraW5kZXggMWQwMGMwYy4uNTI4MTZiMiAxMDA2NDQKIC0tLSBhL3B5dGhvbi9NYWtlZmlsZS5hbQogKysrIGIvcHl0aG9uL01ha2VmaWxlLmFtCi1AQCAtMTQsNCArMTQsNCBAQCBhbGwtbG9jYWw6Ci0gCUNGTEFHUz0iJHtDRkxBR1N9IC1mbm8tc3RyaWN0LWFsaWFzaW5nIiBAUFlUSE9OQklOQVJZQCBzZXR1cC5weSBidWlsZCAtLWJ1aWxkLWxpYj0uCitAQCAtMTQsNyArMTQsNyBAQCBhbGwtbG9jYWw6CisgCUNGTEFHUz0iJHtDRkxBR1N9IC1mbm8tc3RyaWN0LWFsaWFzaW5nIiBAUFlUSE9OQklOQVJZQCBzZXR1cC5weSBidWlsZCAtLWJ1aWxkLWJhc2UgcHkkKFBZVEhPTlJFVikKICAKICBpbnN0YWxsLWV4ZWMtbG9jYWw6Ci0tCUNGTEFHUz0iJHtDRkxBR1N9IC1mbm8tc3RyaWN0LWFsaWFzaW5nIiBAUFlUSE9OQklOQVJZQCBzZXR1cC5weSBpbnN0YWxsIC0tcHJlZml4PSR7REVTVERJUn0ke3ByZWZpeH0KLSsJQ0ZMQUdTPSIke0NGTEFHU30gLWZuby1zdHJpY3QtYWxpYXNpbmciIEBQWVRIT05CSU5BUllAIHNldHVwLnB5IGluc3RhbGwgLS1wcmVmaXg9JHtERVNURElSfSR7cHJlZml4fSAtLWluc3RhbGwtbGliPSR7REVTVERJUn0vJHtQWVRIT05TSVRFRElSfQorLQlDRkxBR1M9IiR7Q0ZMQUdTfSAtZm5vLXN0cmljdC1hbGlhc2luZyIgQFBZVEhPTkJJTkFSWUAgc2V0dXAucHkgYnVpbGQgLS1idWlsZC1iYXNlIHB5JChQWVRIT05SRVYpIGluc3RhbGwgLS1wcmVmaXg9JHtERVNURElSfSR7cHJlZml4fQorKwlDRkxBR1M9IiR7Q0ZMQUdTfSAtZm5vLXN0cmljdC1hbGlhc2luZyIgQFBZVEhPTkJJTkFSWUAgc2V0dXAucHkgYnVpbGQgLS1idWlsZC1iYXNlIHB5JChQWVRIT05SRVYpIGluc3RhbGwgLS1wcmVmaXg9JHtERVNURElSfSR7cHJlZml4fSAtLWluc3RhbGwtbGliPSR7REVTVERJUn0vJHtQWVRIT05TSVRFRElSfQorIAorIGNsZWFuLWxvY2FsOgorIAlybSAtcmYgcHkkKFBZVEhPTlJFVikKIGRpZmYgLS1naXQgYS9weXRob24vc2V0dXAucHkuaW4gYi9weXRob24vc2V0dXAucHkuaW4KLWluZGV4IDY0NTc1OTUuLmQzZGIwZTUgMTAwNzU1CitpbmRleCBhNzQxYjkxLi42NzU5YTk1IDEwMDc1NQogLS0tIGEvcHl0aG9uL3NldHVwLnB5LmluCiArKysgYi9weXRob24vc2V0dXAucHkuaW4KLUBAIC02LDYgKzYsNyBAQAotIAotIGZyb20gZGlzdHV0aWxzLmNvcmUgaW1wb3J0IHNldHVwLCBFeHRlbnNpb24KLSBmcm9tIGRpc3R1dGlscy5jb21tYW5kLmJ1aWxkX2V4dCBpbXBvcnQgYnVpbGRfZXh0IGFzIF9idWlsZF9leHQKLStpbXBvcnQgb3MKLSAKLSBjbGFzcyBidWlsZF9leHQoX2J1aWxkX2V4dCk6Ci0gICAgIGRlZiBnZW5jb25zdGFudHMoc2VsZiwgaGVhZGVyZmlsZSwgb3V0cHV0ZmlsZSk6Ci1AQCAtMjMsNyArMjQsNyBAQCBjbGFzcyBidWlsZF9leHQoX2J1aWxkX2V4dCk6CitAQCAtMzMsNyArMzMsNyBAQCBjbGFzcyBzZGlzdChfc2Rpc3QpOgogIAogIHB3cW1vZHVsZSA9IEV4dGVuc2lvbigncHdxdWFsaXR5JywKICAgICAgICAgICAgICBzb3VyY2VzID0gWydwd3F1YWxpdHkuYyddLApAQCAtNDQsNSArMzksNSBAQAogICAgICAgICAgICAgIGxpYnJhcmllcyA9IFsncHdxdWFsaXR5J10pCiAgCiAtLSAKLTEuOS4xCisyLjE3LjEKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnB3cXVhbGl0eS9saWJwd3F1YWxpdHlfMS40LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicHdxdWFsaXR5L2xpYnB3cXVhbGl0eV8xLjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWZiMjVjZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicHdxdWFsaXR5L2xpYnB3cXVhbGl0eV8xLjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkxpYnJhcnkgZm9yIHBhc3N3b3JkIHF1YWxpdHkgY2hlY2tpbmcgYW5kIGdlbmVyYXRpbmcgcmFuZG9tIHBhc3N3b3JkcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJwd3F1YWxpdHkvbGlicHdxdWFsaXR5IgotU0VDVElPTiA9ICJkZXZlbC9saWIiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmJkMmYxMzg2ZGY4MTNhNDU5YTBjMzRmZGU2NzZmYzIiCi0KLVNSQ05BTUUgPSAibGlicHdxdWFsaXR5IgotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtTUkNOQU1FfS8ke1NSQ05BTUV9L3JlbGVhc2VzL2Rvd25sb2FkLyR7U1JDTkFNRX0tJHtQVn0vJHtTUkNOQU1FfS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2FkZC1taXNzaW5nLXB5dGhvbi1pbmNsdWRlLWRpci1mb3ItY3Jvc3MucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjhkZWZjYzcyODBhOTBlOTQwMGQ2Njg5YzkzYTI3OWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWRlNmZmMDQ2Y2YyMTcyZDI2NWEyY2I2ZjhkYTQzOWQ4OTRmM2U0ZTgxNTdiMDU2YzUxNTUxNTIzMmZhZGU2YiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJwd3F1YWxpdHkvbGlicHdxdWFsaXR5L3JlbGVhc2VzIgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotREVQRU5EUyA9ICJjcmFja2xpYiB2aXJ0dWFsL2dldHRleHQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGRpc3R1dGlsczMtYmFzZSBnZXR0ZXh0Ci0KLUIgPSAiJHtTfSIKLQotZXhwb3J0IFBZVEhPTl9ESVIKLWV4cG9ydCBCVUlMRF9TWVMKLWV4cG9ydCBIT1NUX1NZUwotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1weXRob24tcmV2PSR7UFlUSE9OX0JBU0VWRVJTSU9OfSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1weXRob24tYmluYXJ5PSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1weXRob25zaXRlZGlyPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKLSAgICAgICAgICAgICAgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbScsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLS1lbmFibGUtcGFtLCAtLWRpc2FibGUtcGFtLCBsaWJwYW0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vc2VjdXJpdHkvcGFtX3B3cXVhbGl0eS5zbyIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3NlY3VyaXR5Ly5kZWJ1ZyIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L3NlY3VyaXR5L3BhbV9wd3F1YWxpdHkuYSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3NlY3VyaXR5L3BhbV9wd3F1YWxpdHkubGEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicHdxdWFsaXR5L2xpYnB3cXVhbGl0eV8xLjQuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJwd3F1YWxpdHkvbGlicHdxdWFsaXR5XzEuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0ZDJmN2UKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicHdxdWFsaXR5L2xpYnB3cXVhbGl0eV8xLjQuMi5iYgpAQCAtMCwwICsxLDQxIEBACitERVNDUklQVElPTiA9ICJMaWJyYXJ5IGZvciBwYXNzd29yZCBxdWFsaXR5IGNoZWNraW5nIGFuZCBnZW5lcmF0aW5nIHJhbmRvbSBwYXNzd29yZHMiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGlicHdxdWFsaXR5L2xpYnB3cXVhbGl0eSIKK1NFQ1RJT04gPSAiZGV2ZWwvbGliIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTZiZDJmMTM4NmRmODEzYTQ1OWEwYzM0ZmRlNjc2ZmMyIgorCitTUkNOQU1FID0gImxpYnB3cXVhbGl0eSIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS9yZWxlYXNlcy9kb3dubG9hZC8ke1NSQ05BTUV9LSR7UFZ9LyR7U1JDTkFNRX0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9hZGQtbWlzc2luZy1weXRob24taW5jbHVkZS1kaXItZm9yLWNyb3NzLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImFlNmU2MWZjMzNmNWRhYzBkZTVlODQ3ZWI3NTIwZDcxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUyNjNlMDllZTYyMjY5YzA5MmY3OTBhYzE1OTExMmFlZDNlNjY4MjZhNzk1ZTNhZmVjODVmZGVhYzQyODFjOGUiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGlicHdxdWFsaXR5L2xpYnB3cXVhbGl0eS9yZWxlYXNlcyIKKworUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCisKK0RFUEVORFMgPSAiY3JhY2tsaWIgdmlydHVhbC9nZXR0ZXh0IgorCitpbmhlcml0IGF1dG90b29scyBkaXN0dXRpbHMzLWJhc2UgZ2V0dGV4dAorCitCID0gIiR7U30iCisKK2V4cG9ydCBQWVRIT05fRElSCitleHBvcnQgQlVJTERfU1lTCitleHBvcnQgSE9TVF9TWVMKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGgtcHl0aG9uLXJldj0ke1BZVEhPTl9CQVNFVkVSU0lPTn0gXAorICAgICAgICAgICAgICAgICAtLXdpdGgtcHl0aG9uLWJpbmFyeT0ke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gXAorICAgICAgICAgICAgICAgICAtLXdpdGgtcHl0aG9uc2l0ZWRpcj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCisgICAgICAgICAgICAgICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdwYW0nLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi0tZW5hYmxlLXBhbSwgLS1kaXNhYmxlLXBhbSwgbGlicGFtIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3NlY3VyaXR5L3BhbV9wd3F1YWxpdHkuc28iCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9zZWN1cml0eS8uZGVidWciCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9zZWN1cml0eS9wYW1fcHdxdWFsaXR5LmEiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9zZWN1cml0eS9wYW1fcHdxdWFsaXR5LmxhIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnFiL2xpYnFiXzEuMC41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnFiL2xpYnFiXzEuMC41LmJiCmluZGV4IDgyNTAzYTEuLmNkNDAxOTYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJxYi9saWJxYl8xLjAuNS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbGlicWIvbGlicWJfMS4wLjUuYmIKQEAgLTMzLDMgKzMzLDUgQEAKICAgICAoIGNkICR7U30KICAgICAke1N9L2F1dG9nZW4uc2ggKQogfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJzdGF0Z3JhYi9saWJzdGF0Z3JhYl8wLjkyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnN0YXRncmFiL2xpYnN0YXRncmFiXzAuOTIuYmIKaW5kZXggYzYxZDdjOS4uYTA4MWNiMSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnN0YXRncmFiL2xpYnN0YXRncmFiXzAuOTIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnN0YXRncmFiL2xpYnN0YXRncmFiXzAuOTIuYmIKQEAgLTE0LDYgKzE0LDggQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICI1MzYyYjJkZGJlYzU0YjM5MDFlN2Q3MGMyMmNkYTI0OSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YmYxOTA2YWZmOWZmYzNlZWFjZjMyNTY3MjcwZjRkODE5MDU1ZDgzODZkOThiOWM4YzA1NTE5MDEyZDVhMTk2IgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMiCisKICMgUGVybDUgaXMgZm9yIHRlc3RzIG9ubHkKIEVYVFJBX09FQ09ORiA9ICItLXdpdGhvdXQtcGVybDUgLS13aXRoLW1udHRhYj0vcHJvYy9tb3VudHMiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJ6aXAvbGliemlwXzEuNS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnppcC9saWJ6aXBfMS41LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVkNzI1YmYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnppcC9saWJ6aXBfMS41LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJsaWJ6aXAgaXMgYSBDIGxpYnJhcnkgZm9yIHJlYWRpbmcsIGNyZWF0aW5nLCBhbmQgbW9kaWZ5aW5nIHppcCBhcmNoaXZlcy4iCi1IT01FUEFHRSA9ICJodHRwczovL2xpYnppcC5vcmcvIgotCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTAxZjhiMWI4ZGE2NDAzNzM5MDk0Mzk2ZTE1YjFlNzIyIgotCi1ERVBFTkRTID0gInpsaWIgYnppcDIiCi0KLVBBQ0tBR0VDT05GSUdbc3NsXSA9ICItREVOQUJMRV9PUEVOU1NMPU9OLC1ERU5BQkxFX09QRU5TU0w9T0ZGLG9wZW5zc2wiCi0KLVBBQ0tBR0VDT05GSUcgPz0gInNzbCIKLQotaW5oZXJpdCBjbWFrZQotCi1TUkNfVVJJID0gImh0dHBzOi8vbGliemlwLm9yZy9kb3dubG9hZC9saWJ6aXAtJHtQVn0udGFyLnh6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjlkZDM4ZDI3M2JjZGVjNWQzZDE0OThmZTY2ODRmNDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjNkZTRkNGJkNDlhMDFlMGNhYjM1MDdmYzE2M2Y4OGUxNjUxNjk1YjZiOWNiMjVhZDE3NGRiZTMxOWQ0YTNiNCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJ6aXAvbGliemlwXzEuNi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL2xpYnppcC9saWJ6aXBfMS42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDFhZDU1MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9saWJ6aXAvbGliemlwXzEuNi4xLmJiCkBAIC0wLDAgKzEsMTkgQEAKK0RFU0NSSVBUSU9OID0gImxpYnppcCBpcyBhIEMgbGlicmFyeSBmb3IgcmVhZGluZywgY3JlYXRpbmcsIGFuZCBtb2RpZnlpbmcgemlwIGFyY2hpdmVzLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vbGliemlwLm9yZy8iCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTMzYmIxMTdhYTU1ZjlhYWQzZDI4ZTI5MjU2Zjk5MTkiCisKK0RFUEVORFMgPSAiemxpYiBiemlwMiIKKworUEFDS0FHRUNPTkZJR1tzc2xdID0gIi1ERU5BQkxFX09QRU5TU0w9T04sLURFTkFCTEVfT1BFTlNTTD1PRkYsb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbbHptYV0gPSAiLURFTkFCTEVfTFpNQT1PTiwtREVOQUJMRV9MWk1BPU9GRix4eiIKKworUEFDS0FHRUNPTkZJRyA/PSAic3NsIGx6bWEiCisKK2luaGVyaXQgY21ha2UKKworU1JDX1VSSSA9ICJodHRwczovL2xpYnppcC5vcmcvZG93bmxvYWQvbGliemlwLSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gImY5YTIyODYxOWFhYjI0NDZhZGRjOWM5ZTBlMmRlMTQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcwNWRhYzdhNjcxYjNmNDQwMTgxNDgxZTYwN2IwOTA4MTI5YTljZjFkZGZjYmE3NWQ2NjQzNmMwZTdkMzM2NDEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anMvMDAwMS1kby1ub3QtY3JlYXRlLXB5dGhvbi1lbnZpcm9ubWVudC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAxLWRvLW5vdC1jcmVhdGUtcHl0aG9uLWVudmlyb25tZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2MxYjY5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDAxLWRvLW5vdC1jcmVhdGUtcHl0aG9uLWVudmlyb25tZW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotRnJvbSA1MDI4ZDFjZDY2OWMxNzllZDQ5MDYxMzE2ZDA0YzhlODg2MmE1YmQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxMiBKdWwgMjAxOCAxNTowNDo0NyArMDgwMAotU3ViamVjdDogW1BBVENIIDEvNV0gZG8gbm90IGNyZWF0ZSBweXRob24gZW52aXJvbm1lbnQKLQotVXNlIG9lJ3MgcHl0aG9uIGVudmlyb25tZW50IHJhdGhlciB0aGFuIGNyZWF0ZSBvbmUgb2YgaG9zdAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBidWlsZC9tb3ouY29uZmlndXJlL2luaXQuY29uZmlndXJlIHwgMTggLS0tLS0tLS0tLS0tLS0tLS0tCi0gY29uZmlndXJlLnB5ICAgICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrKysrKy0KLSBqcy9zcmMvb2xkLWNvbmZpZ3VyZSAgICAgICAgICAgICAgIHwgIDQgKystLQotIDMgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCi0KLS0tLSBhL2J1aWxkL21vei5jb25maWd1cmUvaW5pdC5jb25maWd1cmUKLSsrKyBiL2J1aWxkL21vei5jb25maWd1cmUvaW5pdC5jb25maWd1cmUKLUBAIC0yNTAsMjQgKzI1MCw2IEBAIGRlZiB2aXJ0dWFsZW52X3B5dGhvbihlbnZfcHl0aG9uLCBidWlsZF8KLSAgICAgZWxzZToKLSAgICAgICAgIHB5dGhvbiA9IHN5cy5leGVjdXRhYmxlCi0gCi0tICAgIGlmIG5vdCBtYW5hZ2VyLnVwX3RvX2RhdGUocHl0aG9uKToKLS0gICAgICAgIGxvZy5pbmZvKCdDcmVhdGluZyBQeXRob24gZW52aXJvbm1lbnQnKQotLSAgICAgICAgbWFuYWdlci5idWlsZChweXRob24pCi0tCi0tICAgIHB5dGhvbiA9IG5vcm1zZXAobWFuYWdlci5weXRob25fcGF0aCkKLS0KLS0gICAgaWYgcHl0aG9uICE9IG5vcm1zZXAoc3lzLmV4ZWN1dGFibGUpOgotLSAgICAgICAgbG9nLmluZm8oJ1JlZXhlY3V0aW5nIGluIHRoZSB2aXJ0dWFsZW52JykKLS0gICAgICAgIGlmIGVudl9weXRob246Ci0tICAgICAgICAgICAgZGVsIG9zLmVudmlyb25bJ1BZVEhPTiddCi0tICAgICAgICAjIE9uZSB3b3VsZCBwcmVmZXIgdG8gdXNlIG9zLmV4ZWNsLCBidXQgdGhhdCdzIGNvbXBsZXRlbHkgYm9ya2VkIG9uCi0tICAgICAgICAjIFdpbmRvd3MuCi0tICAgICAgICBzeXMuZXhpdChzdWJwcm9jZXNzLmNhbGwoW3B5dGhvbl0gKyBzeXMuYXJndikpCi0tCi0tICAgICMgV2UgYXJlIG5vdyBpbiB0aGUgdmlydHVhbGVudgotLSAgICBpZiBub3QgZGlzdHV0aWxzLnN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYigpOgotLSAgICAgICAgZGllKCdDb3VsZCBub3QgZGV0ZXJtaW5lIHB5dGhvbiBzaXRlIHBhY2thZ2VzIGRpcmVjdG9yeScpCi0tCi0gICAgIHJldHVybiBweXRob24KLSAKLSAKLS0tLSBhL2NvbmZpZ3VyZS5weQotKysrIGIvY29uZmlndXJlLnB5Ci1AQCAtMTIsNyArMTIsMTUgQEAgaW1wb3J0IHRleHR3cmFwCi0gCi0gCi0gYmFzZV9kaXIgPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSkKLS1zeXMucGF0aC5pbnNlcnQoMCwgb3MucGF0aC5qb2luKGJhc2VfZGlyLCAncHl0aG9uJywgJ21vemJ1aWxkJykpCi0rc3lzLnBhdGguaW5zZXJ0KDAsIG9zLnBhdGguam9pbihiYXNlX2RpciwgJ2NvbmZpZycpKQotK2RlZiBnZXRfaW1tZWRpYXRlX3N1YmRpcmVjdG9yaWVzKGFfZGlyKToKLSsgICAgcmV0dXJuIFtuYW1lIGZvciBuYW1lIGluIG9zLmxpc3RkaXIoYV9kaXIpCi0rICAgICAgICAgICAgaWYgb3MucGF0aC5pc2Rpcihvcy5wYXRoLmpvaW4oYV9kaXIsIG5hbWUpKV0KLStmb3IgcyBpbiBbInB5dGhvbiIsICJ0ZXN0aW5nL21vemJhc2UiXToKLSsgICAgc3ViX2RpciA9IG9zLnBhdGguam9pbihiYXNlX2RpciwgcykKLSsgICAgZm9yIG1vZHVsZV9kaXIgaW4gZ2V0X2ltbWVkaWF0ZV9zdWJkaXJlY3RvcmllcyhzdWJfZGlyKToKLSsgICAgICAgIHN5cy5wYXRoLmluc2VydCgwLCBvcy5wYXRoLmpvaW4oc3ViX2RpciwgbW9kdWxlX2RpcikpCi0rCi0gZnJvbSBtb3pidWlsZC5jb25maWd1cmUgaW1wb3J0IENvbmZpZ3VyZVNhbmRib3gKLSBmcm9tIG1vemJ1aWxkLm1ha2V1dGlsIGltcG9ydCBNYWtlZmlsZQotIGZyb20gbW96YnVpbGQucHl0aG9udXRpbCBpbXBvcnQgaXRlcl9tb2R1bGVzX2luX3BhdGgKLS0tLSBhL2pzL3NyYy9vbGQtY29uZmlndXJlCi0rKysgYi9qcy9zcmMvb2xkLWNvbmZpZ3VyZQotQEAgLTk5NzQsNyArOTk3NCw3IEBAIGlmIHRlc3QgIiRKU19TVEFOREFMT05FIjsgdGhlbgotICAgCi0gaWYgdGVzdCAiJG5vX3JlY3Vyc2lvbiIgIT0geWVzOyB0aGVuCi0gICB0cmFwICcnIEVYSVQKLS0gIGlmICEgJFBZVEhPTiAkX3RvcHNyY2Rpci9idWlsZC9zdWJjb25maWd1cmUucHkgLS1saXN0IHN1YmNvbmZpZ3VyZXMgLS1za2lwIHNraXBfc3ViY29uZmlndXJlczsgdGhlbgotKyAgaWYgISBQWVRIT05QQVRIPSRfdG9wc3JjZGlyL3B5dGhvbi9tb3pidWlsZC8gJFBZVEhPTiAkX3RvcHNyY2Rpci9idWlsZC9zdWJjb25maWd1cmUucHkgLS1saXN0IHN1YmNvbmZpZ3VyZXMgLS1za2lwIHNraXBfc3ViY29uZmlndXJlczsgdGhlbgotICAgICAgIGV4aXQgMQotICAgZmkKLSBmaQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDQtZG8tbm90LXVzZS1hdXRvY29uZi0yLjEzLXRvLXJlZnJlc2gtb2xkLmNvbmZpZ3VyZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDA0LWRvLW5vdC11c2UtYXV0b2NvbmYtMi4xMy10by1yZWZyZXNoLW9sZC5jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjYmE3OWMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMDQtZG8tbm90LXVzZS1hdXRvY29uZi0yLjEzLXRvLXJlZnJlc2gtb2xkLmNvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gYTQ2YWRiNzRiNWJhNWUxN2Q2NzZkMzFkNzBmYWNhNzZjMTM4MWQxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTIgSnVsIDIwMTggMjE6MjU6NDYgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzVdIGRvIG5vdCB1c2UgYXV0b2NvbmYgMi4xMyB0byByZWZyZXNoIG9sZC5jb25maWd1cmUKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYnVpbGQvbW96LmNvbmZpZ3VyZS9vbGQuY29uZmlndXJlIHwgMiArLQotIGpzL3NyYy9vbGQtY29uZmlndXJlICAgICAgICAgICAgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2J1aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZSBiL2J1aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZQotaW5kZXggZWNlNDdmNC4uYTczOTAwZiAxMDA2NDQKLS0tLSBhL2J1aWxkL21vei5jb25maWd1cmUvb2xkLmNvbmZpZ3VyZQotKysrIGIvYnVpbGQvbW96LmNvbmZpZ3VyZS9vbGQuY29uZmlndXJlCi1AQCAtODMsNyArODMsNyBAQCBkZWYgcHJlcGFyZV9jb25maWd1cmUob2xkX2NvbmZpZ3VyZSwgbW96Y29uZmlnLCBhdXRvY29uZiwgYnVpbGRfZW52LCBzaGVsbCwKLSAgICAgICAgICAgICBvbGRfY29uZmlndXJlID0gb3MucGF0aC5qb2luKG9sZF9jb25maWd1cmVfZGlyLCAnanMnLCAnc3JjJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguYmFzZW5hbWUob2xkX2NvbmZpZ3VyZSkpCi0gCi0tICAgIHJlZnJlc2ggPSBUcnVlCi0rICAgIHJlZnJlc2ggPSBGYWxzZQotICAgICBpZiBleGlzdHMob2xkX2NvbmZpZ3VyZSk6Ci0gICAgICAgICBtdGltZSA9IGdldG10aW1lKG9sZF9jb25maWd1cmUpCi0gICAgICAgICBhY2xvY2FsID0gb3MucGF0aC5qb2luKGJ1aWxkX2Vudi50b3BzcmNkaXIsICdidWlsZCcsICdhdXRvY29uZicsCi1kaWZmIC0tZ2l0IGEvanMvc3JjL29sZC1jb25maWd1cmUgYi9qcy9zcmMvb2xkLWNvbmZpZ3VyZQotaW5kZXggNzViMDBlMS4uOGE4ZWY1MiAxMDA2NDQKLS0tLSBhL2pzL3NyYy9vbGQtY29uZmlndXJlCi0rKysgYi9qcy9zcmMvb2xkLWNvbmZpZ3VyZQotQEAgLTYxOSw3ICs2MTksNyBAQCBpZiB0ZXN0IC16ICIkc3JjZGlyIjsgdGhlbgotICAgYWNfcHJvZz0kMAotICAgYWNfY29uZmRpcj1gZWNobyAkYWNfcHJvZ3xzZWQgJ3MlL1teL11bXi9dKiQlJSdgCi0gICB0ZXN0ICJ4JGFjX2NvbmZkaXIiID0gIngkYWNfcHJvZyIgJiYgYWNfY29uZmRpcj0uCi0tICBzcmNkaXI9JGFjX2NvbmZkaXIKLSsgIHNyY2Rpcj0iJGFjX2NvbmZkaXIvLi4vLi4vIgotICAgaWYgdGVzdCAhIC1yICRzcmNkaXIvJGFjX3VuaXF1ZV9maWxlOyB0aGVuCi0gICAgIHNyY2Rpcj0uLgotICAgZmkKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMTAtZml4LWNyb3NzLWNvbXBpbGF0aW9uLW9uLWk1ODYtdGFyZ2V0cy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tb3pqcy9tb3pqcy8wMDEwLWZpeC1jcm9zcy1jb21waWxhdGlvbi1vbi1pNTg2LXRhcmdldHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhYzI1ZjYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzLzAwMTAtZml4LWNyb3NzLWNvbXBpbGF0aW9uLW9uLWk1ODYtdGFyZ2V0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gYTQ1MjEzOGExZGQyNzRiZmFkMzgxYTcwMTcyOTc4MzM2MGRjODZmYiBNb24gU2VwIDE3ICAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYWNpZWogQm9yemVja2kgPG1hY2llai5ib3J6ZWNraUBvcGVuLXJuZC5wbD4KLURhdGU6IFR1ZSwgNSBKYW4gMjAxNiAyMjowNDoxNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBmaXggY3Jvc3MgY29tcGlsYXRpb24gb24gaTU4NiB0YXJnZXRzCi0KLVJlbW92ZSBvZmZlbmRpbmcgLVdsLC1ycGF0aC1saW5rIHRoYXQgbWF5IGNhdXNlIGhvc3QgbGlicmFyaWVzIHRvIGJlIHBpY2tlZAotZHVyaW5nIGxpbmtpbmcuIFRoZSBwYXRjaCBhcHBsaWVzIGEgZml4IHRvIGNvbmZpZ3VyZS5pbi4gU28gYXMgbm90IHRvCi1yZWdlbmVyYXRlIGNvbmZpZ3VyZSwgc2ltaWxhciBmaXggaXMgYXBwbGllZCB0aGVyZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWFjaWVqIEJvcnplY2tpIDxtYWNpZWouYm9yemVja2lAb3Blbi1ybmQucGw+Ci0KLVJlYmFzZSB0byA1Mi44LjEKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGpzL3NyYy9vbGQtY29uZmlndXJlIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi0tLS0gYS9qcy9zcmMvb2xkLWNvbmZpZ3VyZQotKysrIGIvanMvc3JjL29sZC1jb25maWd1cmUKLUBAIC0zODMzLDcgKzM4MzMsNyBAQCBBUz0nJChDQyknCi0gQVNfREFTSF9DX0ZMQUc9Jy1jJwotIE1PWl9VU0VSX0RJUj0iLm1vemlsbGEiCi0gCi0tTU9aX0ZJWF9MSU5LX1BBVEhTPSItV2wsLXJwYXRoLWxpbmssJHtESVNUfS9iaW4gLVdsLC1ycGF0aC1saW5rLCR7cHJlZml4fS9saWIiCi0rTU9aX0ZJWF9MSU5LX1BBVEhTPSItV2wsLXJwYXRoLWxpbmssJHtESVNUfS9iaW4iCi0gCi0gCi0gCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anNfNjAuNS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21vempzL21vempzXzYwLjUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzg5YmNhYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbW96anMvbW96anNfNjAuNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMyICswLDAgQEAKLVNVTU1BUlkgPSAiU3BpZGVyTW9ua2V5IGlzIE1vemlsbGEncyBKYXZhU2NyaXB0IGVuZ2luZSB3cml0dGVuIGluIEMvQysrIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL1Byb2plY3RzL1NwaWRlck1vbmtleSIKLUxJQ0VOU0UgPSAiTVBMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWRjOWI2ZWNkMTlhMTRhNTRhNjI4ZWRhYWYyMzczM2JmIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZGV2LmdlbnRvby5vcmcvfmF4cy9kaXN0ZmlsZXMvbW96anMtNjAuNS4yLnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1qcy5wYy5pbi1kby1ub3QtaW5jbHVkZS1SZXF1aXJlZERlZmluZXMuaC1mb3ItZGVwZW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtZml4LWNyb3NzLWNvbXBpbGF0aW9uLW9uLWk1ODYtdGFyZ2V0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWRvLW5vdC1jcmVhdGUtcHl0aG9uLWVudmlyb25tZW50LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZml4LWNhbm5vdC1maW5kLWxpbmsucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy13b3JrYXJvdW5kLWF1dG9jb25mLTIuMTMtZGV0ZWN0aW9uLWZhaWxlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWRvLW5vdC11c2UtYXV0b2NvbmYtMi4xMy10by1yZWZyZXNoLW9sZC5jb25maWd1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1maXgtZG9fY29tcGlsZS1mYWlsZWQtb24tbWlwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGQtcmlzY3Ytc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1vempzLWZpeC1jb3JlZHVtcC1jYXVzZWQtYnktZ2V0ZW52LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Zvcm1hdC1vdmVyZmxvdy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVRvLWZpeC1idWlsZC1lcnJvci1vbi1hcm0zMkJFLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0pTX1BVQkxJQ19BUEkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1yaXNjdi1EaXNhYmxlLWF0b21pYy1vcGVyYXRpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZhbGxiYWNrLXRvLTIwMTEtQysrLXN0YW5kYXJkLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LXN1cHBvcnQtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWpzLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9taXBzYXJjaG4zMiA9ICIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtY29tcGlsaW5nLWZhaWx1cmUtb24tbWlwczY0LW4zMi1ic3AucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMDIzZWQwMTRlOWU5M2QwMTYyMGQxMjFiYzA2YTM1ODkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjUxMDM5Yzk5NzQxNWZkMGYxM2Y4ZTAxOTY2YjRhOGZmODBjYmY5MGRlYjhiMTRjMTg4MjcxMDRhMzY5Y2MwZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHBlcmxuYXRpdmUgcHl0aG9ubmF0aXZlCi0KLWluaGVyaXQgZmVhdHVyZXNfY2hlY2sKLUNPTkZMSUNUX0RJU1RST19GRUFUVVJFU19taXBzYXJjaG4zMiA9ICJsZC1pcy1nb2xkIgotCi1ERVBFTkRTICs9ICJuc3ByIHpsaWIgcHl0aG9uLXNpeC1uYXRpdmUgcHl0aG9uLXB5dG9tbC1uYXRpdmUgXAotICAgICAgICAgICAgcHl0aG9uLWpzbWluLW5hdGl2ZSBweXRob24tZnV0dXJlcy1uYXRpdmUgXAotICAgICAgICAgICAgcHl0aG9uLXdoaWNoLW5hdGl2ZSIKLQotIyBEaXNhYmxlIG51bGwgcG9pbnRlciBvcHRpbWl6YXRpb24gaW4gZ2NjID49IDYKLSMgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xMzI4MDQ1Ci1DRkxBR1MgKz0gIi1mbm8tdHJlZS12cnAgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZuby1kZWxldGUtbnVsbC1wb2ludGVyLWNoZWNrcyIKLUNYWEZMQUdTICs9ICItZm5vLXRyZWUtdnJwIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1mbm8tZGVsZXRlLW51bGwtcG9pbnRlci1jaGVja3MiCi0KLSMgbnNwcidzIHBhY2thZ2UtY29uZmlnIGlzIGlnbm9yZWQgc28gc2V0IGxpYnMgbWFudWFsbHkKLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tdGFyZ2V0PSR7VEFSR0VUX1NZU30gXAotICAgIC0taG9zdD0ke0JVSUxEX1NZU30gXAotICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCi0gICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKLSAgICAtLWRpc2FibGUtdGVzdHMgLS1kaXNhYmxlLXN0cmlwIC0tZGlzYWJsZS1vcHRpbWl6ZSBcCi0gICAgLS1kaXNhYmxlLWplbWFsbG9jIFwKLSAgICAtLXdpdGgtbnNwci1saWJzPSctbHBsZHM0IC1scGxjNCAtbG5zcHI0JyBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgIi0tZW5hYmxlLWdvbGQiLCAnLS1kaXNhYmxlLWdvbGQnLCBkKX0gXAotIgotCi0jIFdpdGhvdXQgdGhpcywgSlNfSW5pdCgpIHdpbGwgZmFpbCBmb3IgbWlwczY0LgotRVhUUkFfT0VDT05GX2FwcGVuZF9taXBzYXJjaCA9ICIgLS13aXRoLWludGwtYXBpPWJ1aWxkIgotRVhUUkFfT0VDT05GX2FwcGVuZF9wb3dlcnBjID0gIiAtLXdpdGgtaW50bC1hcGk9YnVpbGQiCi0KLUVYVFJBX09FQ09ORl9hcHBlbmRfbWlwc2FyY2ggPSAiIC0tZGlzYWJsZS1pb24iCi1FWFRSQV9PRUNPTkZfYXBwZW5kX3Jpc2N2NjQgPSAiIC0tZGlzYWJsZS1pb24iCi1FWFRSQV9PRUNPTkZfYXBwZW5kX3Jpc2N2MzIgPSAiIC0tZGlzYWJsZS1pb24iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS14LWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IC0teC1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0sLS14LWluY2x1ZGVzPW5vIC0teC1saWJyYXJpZXM9bm8sdmlydHVhbC9saWJ4MTEiCi0KLUVYVFJBX09FTUFLRV90YXNrLWNvbXBpbGUgKz0gIkJVSUxEX09QVD0xIE9TX0xERkxBR1M9Jy1XbCwtbGF0b21pYyAke0xERkxBR1N9JyIKLUVYVFJBX09FTUFLRV90YXNrLWluc3RhbGwgKz0gIlNUQVRJQ19MSUJSQVJZX05BTUU9anNfc3RhdGljIgotCi1leHBvcnQgSE9TVF9DQyA9ICIke0JVSUxEX0NDfSIKLWV4cG9ydCBIT1NUX0NYWCA9ICIke0JVSUxEX0NYWH0iCi1leHBvcnQgSE9TVF9DRkxBR1MgPSAiJHtCVUlMRF9DRkxBR1N9IgotZXhwb3J0IEhPU1RfQ1BQRkxBR1MgPSAiJHtCVUlMRF9DUFBGTEFHU30iCi1leHBvcnQgSE9TVF9DWFhGTEFHUyA9ICIke0JVSUxEX0NYWEZMQUdTfSIKLQotZG9fY29uZmlndXJlKCkgewotICAgIGV4cG9ydCBTSEVMTD0iL2Jpbi9zaCIKLSAgICBleHBvcnQgVE1QPSIke0J9IgotICAgICR7U30vanMvc3JjL2NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0KLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIGV4cG9ydCBTSEVMTD0iL2Jpbi9zaCIKLSAgICBleHBvcnQgUwotICAgIGV4cG9ydCBQWVRIT05QQVRICi0gICAgY2QgJHtTfQotICAgIGZvciBzdWJfZGlyIGluIHB5dGhvbiB0ZXN0aW5nL21vemJhc2U7IGRvCi0gICAgICAgIGZvciBtb2R1bGVfZGlyIGluIGBscyAkc3ViX2RpciAtMWA7ZG8KLSAgICAgICAgICAgIFsgJG1vZHVsZV9kaXIgPSAidmlydHVhbGVudiIgXSAmJiBjb250aW51ZQotICAgICAgICAgICAgaWYgWyAtZCAiJHtTfS8kc3ViX2Rpci8kbW9kdWxlX2RpciIgXTt0aGVuCi0gICAgICAgICAgICAgICAgUFlUSE9OUEFUSD0iJFBZVEhPTlBBVEg6JHtTfS8kc3ViX2Rpci8kbW9kdWxlX2RpciIKLSAgICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKLSAgICBkb25lCi0gICAgUFlUSE9OUEFUSD0iJFBZVEhPTlBBVEg6JHtTfS9jb25maWc6JHtTfS9idWlsZCIKLSAgICBjZCAtCi19Ci0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLSAgICBleHBvcnQgU0hFTEw9Ii9iaW4vc2giCi0gICAgZXhwb3J0IFMKLSAgICBleHBvcnQgUFlUSE9OUEFUSAotICAgIGNkICR7U30KLSAgICBmb3Igc3ViX2RpciBpbiBweXRob24gdGVzdGluZy9tb3piYXNlOyBkbwotICAgICAgICBmb3IgbW9kdWxlX2RpciBpbiBgbHMgJHN1Yl9kaXIgLTFgO2RvCi0gICAgICAgICAgICBbICRtb2R1bGVfZGlyID0gInZpcnR1YWxlbnYiIF0gJiYgY29udGludWUKLSAgICAgICAgICAgIGlmIFsgLWQgIiR7U30vJHN1Yl9kaXIvJG1vZHVsZV9kaXIiIF07dGhlbgotICAgICAgICAgICAgICAgIFBZVEhPTlBBVEg9IiRQWVRIT05QQVRIOiR7U30vJHN1Yl9kaXIvJG1vZHVsZV9kaXIiCi0gICAgICAgICAgICBmaQotICAgICAgICBkb25lCi0gICAgZG9uZQotICAgIFBZVEhPTlBBVEg9IiRQWVRIT05QQVRIOiR7U30vY29uZmlnOiR7U30vYnVpbGQiCi0gICAgY2QgLQotfQotCi1QQUNLQUdFUyA9KyAibGliJHtCUE59IgotRklMRVNfbGliJHtCUE59ICs9ICIke2xpYmRpcn0vbGliKi5zbyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2pzNjAtY29uZmlnIgotCi0jIEZhaWxzIHRvIGJ1aWxkIHdpdGggdGh1bWItMSAocWVtdWFybSkKLSN8IHtzdGFuZGFyZCBpbnB1dH06IEFzc2VtYmxlciBtZXNzYWdlczoKLSN8IHtzdGFuZGFyZCBpbnB1dH06MjE3MjogRXJyb3I6IHNoaWZ0cyBpbiBDTVAvTU9WIGluc3RydWN0aW9ucyBhcmUgb25seSBzdXBwb3J0ZWQgaW4gdW5pZmllZCBzeW50YXggLS0gYG1vdiByMixyMSxMU1IjMjAnCi0jfCB7c3RhbmRhcmQgaW5wdXR9OjIxNzM6IEVycm9yOiB1bnNoaWZ0ZWQgcmVnaXN0ZXIgcmVxdWlyZWQgLS0gYGJpYyByMixyMiwjKDE8PDExKScKLSN8IHtzdGFuZGFyZCBpbnB1dH06MjE3NDogRXJyb3I6IHVuc2hpZnRlZCByZWdpc3RlciByZXF1aXJlZCAtLSBgb3JyIHIxLHIxLCMoMTw8MjApJwotI3wge3N0YW5kYXJkIGlucHV0fToyMTc2OiBFcnJvcjogaW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBpbiBUaHVtYjE2IG1vZGUgLS0gYHN1YnMgcjIscjIsIzB4MzAwJwotI3wge3N0YW5kYXJkIGlucHV0fToyMTc4OiBFcnJvcjogaW5zdHJ1Y3Rpb24gbm90IHN1cHBvcnRlZCBpbiBUaHVtYjE2IG1vZGUgLS0gYHN1YnMgcjUscjIsIzUyJwotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLQotRElTQUJMRV9TVEFUSUMgPSAiIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21yYWEvbXJhYS8wMDAxLWNtYWtlLVVzZS1hLXJlZ3VsYXItZXhwcmVzc2lvbi10by1tYXRjaC14ODYtYXJjaGl0ZWMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbXJhYS9tcmFhLzAwMDEtY21ha2UtVXNlLWEtcmVndWxhci1leHByZXNzaW9uLXRvLW1hdGNoLXg4Ni1hcmNoaXRlYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wY2FlMDJmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL21yYWEvbXJhYS8wMDAxLWNtYWtlLVVzZS1hLXJlZ3VsYXItZXhwcmVzc2lvbi10by1tYXRjaC14ODYtYXJjaGl0ZWMucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSA1ZGUxODNkYzQzNmJiNjQ3MzYxYWI2NDFkODkxYzExM2U2YTdkYWRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgOCBNYXIgMjAyMCAxNjozMDo0OCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBjbWFrZTogVXNlIGEgcmVndWxhciBleHByZXNzaW9uIHRvIG1hdGNoIHg4NiBhcmNoaXRlY3R1cmVzCisKK2luIE9FIHdlIHVzZSBpNjg2IGZvciBxZW11eDg2IGFuZCB0aGlzIHJlc3VsdHMgaW4KKworLS0gSU5GTyAtIFRhcmdldCBhcmNoIGlzIGk2ODYKK0NNYWtlIEVycm9yIGF0IENNYWtlTGlzdHMudHh0OjE5MSAobWVzc2FnZSk6CisgIE9ubHkgeDg2LCBhcm0sIG1pcHMsIFBFUklQSEVSQUxNQU4gYW5kIG1vY2sgcGxhdGZvcm1zIGN1cnJlbnRseSBzdXBwb3J0ZWQKKworU28gdXNpbmcgYSB3aWxkY2FyZCBoZWxwcyBpbiB1c2luZyBhbnkgeDg2IGFyY2gKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIENNYWtlTGlzdHMudHh0IHwgMyArLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCAyNTBkOTEwNi4uZmI2NDI3MjIgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0xNzYsOCArMTc2LDcgQEAgZWxzZSAoKQorICAgbWVzc2FnZSAoU1RBVFVTICJJTkZPIC0gT3ZlcnJpZGUgYXJjaCBpcyAke0RFVEVDVEVEX0FSQ0h9IikKKyBlbmRpZigpCisgCistaWYgKERFVEVDVEVEX0FSQ0ggU1RSRVFVQUwgImk1ODYiIE9SIERFVEVDVEVEX0FSQ0ggU1RSRVFVQUwgIng4Nl82NCIKKy0gICAgT1IgREVURUNURURfQVJDSCBTVFJFUVVBTCAiaTM4NiIpCisraWYgKERFVEVDVEVEX0FSQ0ggTUFUQ0hFUyAiaT84NiIgT1IgREVURUNURURfQVJDSCBTVFJFUVVBTCAieDg2XzY0IikKKyAgIHNldCAoWDg2UExBVCBPTikKKyBlbHNlaWYgKERFVEVDVEVEX0FSQ0ggTUFUQ0hFUyAiYXJtLioiIE9SIERFVEVDVEVEX0FSQ0ggTUFUQ0hFUyAiYWFyY2g2NCIpCisgICBzZXQgKEFSTVBMQVQgT04pCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvbXJhYS9tcmFhX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tcmFhL21yYWFfZ2l0LmJiCmluZGV4IDZkNDJjNjcuLjQwM2Q2NDEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tcmFhL21yYWFfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9tcmFhL21yYWFfZ2l0LmJiCkBAIC0zLDEyICszLDEzIEBACiBTRUNUSU9OID0gImxpYnMiCiAKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGI5MmEzYjQ5N2Q3OTQzMDQyYTZkYjQwYzA4OGMzZjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05MWU3ZGU1MGE4ZDNjZjAxMDU3ZjMxOGQ3MjQ2MGFjZCIKIAotU1JDUkVWID0gIjk2NzU4NWM5ZWEwZTFhODgxOGQyMTcyZDIzOTVkODUwMmY2MTgwYTIiCi1QViA9ICIyLjAuMCtnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICJlMTVjZTZmYmM3NjE0OGJhODgzNWFkYzkyMTk2YjBkMGEzZjI0NWU3IgorUFYgPSAiMi4xLjArZ2l0JHtTUkNQVn0iCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9pbnRlbC1pb3QtZGV2a2l0LyR7QlBOfS5naXQ7cHJvdG9jb2w9aHR0cCBcCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZWNsaXBzZS8ke0JQTn0uZ2l0O3Byb3RvY29sPWh0dHAgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jbWFrZS1Vc2UtYS1yZWd1bGFyLWV4cHJlc3Npb24tdG8tbWF0Y2gteDg2LWFyY2hpdGVjLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpAQCAtMjYsNiArMjcsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIC1EUFlUSE9OX0lOQ0xVREVfRElSPSR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0ke1BZVEhPTl9BQkl9IFwKICAgICAgICAgICAgICAgICAgICAgICAgIgogCitDRkxBR1MgKz0gIi1mY29tbW9uIgorCiAjIFByZXBlbmQgbXJhYS11dGlscyB0byBtYWtlIHN1cmUgYmluZGlyIGVuZHMgdXAgaW4gdGhlcmUKIFBBQ0tBR0VTID0rICIke1BOfS11dGlscyIKIApAQCAtNjAsMyArNjMsNSBAQAogIyMjIEluY2x1ZGUgZGVzaXJlZCBsYW5ndWFnZSBiaW5kaW5ncyAjIyMKIFBBQ0tBR0VTID0rICIke0BiYi51dGlscy5jb250YWlucygnQklORElOR1MnLCAnbm9kZWpzJywgJ25vZGUtJHtQTn0nLCAnJywgZCl9IgogUEFDS0FHRVMgPSsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCSU5ESU5HUycsICdweXRob24nLCAnJHtQWVRIT05fUE59LSR7UE59JywgJycsIGQpfSIKKworVE9PTENIQUlOID0gImdjYyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9uYW5hL25hbmFfMi41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL25hbmEvbmFuYV8yLjUuYmIKaW5kZXggNTk1ODUyYS4uNDIzNTAwNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL25hbmEvbmFuYV8yLjUuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL25hbmEvbmFuYV8yLjUuYmIKQEAgLTE1LDcgKzE1LDcgQEAKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTZhYTU3ZjNiN2ZkZGE4NzBjZWU1OTcyNzViZDVkMTEiCiAKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgdGV4aW5mbwogCiBFWFRSQV9PRU1BS0UgPSAiREVTVERJUj0ke0R9IgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3BlbmxtaS9vcGVubG1pLXRvb2xzXzAuMTAuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktdG9vbHNfMC4xMC41LmJiCmluZGV4IDQxOWIzZWUuLjA0ZjgyZDIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktdG9vbHNfMC4xMC41LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9vcGVubG1pL29wZW5sbWktdG9vbHNfMC4xMC41LmJiCkBAIC01LDcgKzUsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vQ09QWUlORzttZDU9NzU4NTk5ODk1NDVlMzc5NjhhOTliNjMxZWY0MjcyMmUiCiBTRUNUSU9OID0gIlN5c3RlbS9NYW5hZ2VtZW50IgogCi1pbmhlcml0IHNldHVwdG9vbHMKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoIkJCRklMRV9DT0xMRUNUSU9OUyIsICJtZXRhLXB5dGhvbjIiLCAic2V0dXB0b29scyIsICIiLCBkKX0KIAogREVQRU5EUyA9ICJweXRob24tbmF0aXZlIHB5dGhvbi1weXdiZW0tbmF0aXZlIHB5dGhvbi1tMmNyeXB0byBweXRob24tcHl3YmVtIgogCkBAIC0xNywxMCArMTcsMTAgQEAKIFMgPSAiJHtXT1JLRElSfS8ke0JQfS9jbGkiCiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAncy9AQFZFUlNJT05AQC8kKFZFUlNJT04pL2cnIHNldHVwLnB5LnNrZWwgPnNldHVwLnB5CisgICAgc2VkICdzL0BAVkVSU0lPTkBALyQoVkVSU0lPTikvZycgJHtTfS9zZXR1cC5weS5za2VsID4gJHtTfS9zZXR1cC5weQogfQogCiBweXRob24oKSB7Ci0gICAgaWYgJ21ldGEtcHl0aG9uJyBub3QgaW4gZC5nZXRWYXIoJ0JCRklMRV9DT0xMRUNUSU9OUycpLnNwbGl0KCk6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoJ1JlcXVpcmVzIG1ldGEtcHl0aG9uIHRvIGJlIHByZXNlbnQuJykKKyAgICBpZiAnbWV0YS1weXRob24yJyBub3QgaW4gZC5nZXRWYXIoJ0JCRklMRV9DT0xMRUNUSU9OUycpLnNwbGl0KCk6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoJ1JlcXVpcmVzIG1ldGEtcHl0aG9uMiB0byBiZSBwcmVzZW50LicpCiB9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3N0cmVlL29zdHJlZV8yMDE5LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3N0cmVlL29zdHJlZV8yMDE5LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZjUxMWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29zdHJlZS9vc3RyZWVfMjAxOS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTczICswLDAgQEAKLVNVTU1BUlkgPSAiVmVyc2lvbmVkIE9wZXJhdGluZyBTeXN0ZW0gUmVwb3NpdG9yeS4iCi1ERVNDUklQVElPTiA9ICJsaWJvc3RyZWUgaXMgYm90aCBhIHNoYXJlZCBsaWJyYXJ5IGFuZCBzdWl0ZSBvZiBjb21tYW5kIGxpbmUgXAotdG9vbHMgdGhhdCBjb21iaW5lcyBhIFwiZ2l0LWxpa2VcIiBtb2RlbCBmb3IgY29tbWl0dGluZyBhbmQgZG93bmxvYWRpbmcgXAotYm9vdGFibGUgZmlsZXN5c3RlbSB0cmVlcywgYWxvbmcgd2l0aCBhIGxheWVyIGZvciBkZXBsb3lpbmcgdGhlbSBhbmQgbWFuYWdpbmcgXAotdGhlIGJvb3Rsb2FkZXIgY29uZmlndXJhdGlvbi4iCi1IT01FUEFHRSA9ICJodHRwczovL29zdHJlZS5yZWFkdGhlZG9jcy5pbyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgotCi1ERVBFTkRTID0gIiBcCi0gICAgZ2xpYi0yLjAgXAotICAgIGdwZ21lIFwKLSAgICBlMmZzcHJvZ3MgXAotICAgIGxpYmNhcCBcCi0gICAgemxpYiBcCi0gICAgeHogXAotICAgIGJpc29uLW5hdGl2ZSBcCi0iCi0KLSMgVGhlIFlvY3RvIG1pcnJvciBoYXMgYW4gb2xkIGV4cG9ydCBvZiBvc3RyZWU6Ci0jIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9taXJyb3Ivc291cmNlcy9naXQyX2dpdGh1Yi5jb20ub3N0cmVlZGV2Lm9zdHJlZS50YXIuZ3oKLVBSRU1JUlJPUlMgPSAiIgotCi1TUkNfVVJJID0gIiBcCi0gICAgZ2l0c206Ly9naXRodWIuY29tL29zdHJlZWRldi9vc3RyZWUgXAotICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotIgotU1JDUkVWID0gIjQzNzA2MjAyZjdkZTJjZTBjODI5YTQ2Y2FhYjM1MGFlMTY1NmY2YWQiCi0KLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj5cZCtcLlxkKykiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJhc2gtY29tcGxldGlvbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBtYW5wYWdlcyBwa2djb25maWcgcHRlc3QtZ25vbWUgc3lzdGVtZAotCi0jIFBhY2thZ2UgY29uZmlndXJhdGlvbiAtIG1hdGNoIG9zdHJlZSBkZWZhdWx0cywgYnV0IHdpdGhvdXQgcm9maWxlcy1mdXNlCi0jIG90aGVyd2lzZSB3ZSBpbnRyb2R1Y2UgYSBkZXBlbmRlbmRlbmN5IG9uIG1ldGEtZmlsZXN5c3RlbXMKLSMKLSMgSWYgcnVubmluZyB3aXRoIHB0ZXN0LCBib3RoIHNvdXAgKGZvciB0cml2aWFsLWh0dHBkKSBhbmQgeGF0dHIgYXJlIHJlcXVpcmVkCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzZWxpbnV4IHNtYWNrJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnc3lzdGVtZCBsaWJtb3VudCcsICcnLCBkKX0gXAotICAgIHNvdXAgXAotIgotCi0jIFdlIGluY2x1ZGUgc291cCBiZWNhdXNlIG9zdHJlZSBjYW4ndCAoY3VycmVudGx5KSBiZSBidWlsdCB3aXRob3V0Ci0jIHNvdXAgb3IgY3VybCAtIGh0dHBzOi8vZ2l0aHViLmNvbS9vc3RyZWVkZXYvb3N0cmVlL2lzc3Vlcy8xODk3Ci1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA/Pz0gIiBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCBzbWFjaycsIGQpfSBcCi0gICAgYnVpbHRpbi1ncnViMi1ta2NvbmZpZyBcCi0gICAgc291cCBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbYXZhaGldID0gIi0td2l0aC1hdmFoaSwgLS13aXRob3V0LWF2YWhpLCBhdmFoaSIKLVBBQ0tBR0VDT05GSUdbYnVpbHRpbi1ncnViMi1ta2NvbmZpZ10gPSAiLS13aXRoLWJ1aWx0aW4tZ3J1YjItbWtjb25maWcsIC0td2l0aG91dC1idWlsdGluLWdydWIyLW1rY29uZmlnIgotUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLXdpdGgtY3VybCwgLS13aXRob3V0LWN1cmwsIGN1cmwiCi1QQUNLQUdFQ09ORklHW2RyYWN1dF0gPSAiLS13aXRoLWRyYWN1dCwgLS13aXRob3V0LWRyYWN1dCIKLVBBQ0tBR0VDT05GSUdbZ2pzXSA9ICJhY19jdl9wYXRoX0dKUz0ke2JpbmRpcn0vZ2pzIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1jcnlwdG89Z251dGxzLCAsIGdudXRscyIKLVBBQ0tBR0VDT05GSUdbbGliYXJjaGl2ZV0gPSAiLS13aXRoLWxpYmFyY2hpdmUsIC0td2l0aG91dC1saWJhcmNoaXZlLCBsaWJhcmNoaXZlIgotUEFDS0FHRUNPTkZJR1tsaWJtb3VudF0gPSAiLS13aXRoLWxpYm1vdW50LCAtLXdpdGhvdXQtbGlibW91bnQsIHV0aWwtbGludXgiCi1QQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4sIC0tZGlzYWJsZS1tYW4sIGxpYnhzbHQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbbWtpbml0Y3Bpb10gPSAiLS13aXRoLW1raW5pdGNwaW8sIC0td2l0aG91dC1ta2luaXRjcGlvIgotUEFDS0FHRUNPTkZJR1tuby1odHRwMl0gPSAiLS1kaXNhYmxlLWh0dHAyLCAtLWVuYWJsZS1odHRwMiIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLWNyeXB0bz1vcGVuc3NsLCAsIG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3JvZmlsZXMtZnVzZV0gPSAiLS1lbmFibGUtcm9maWxlcy1mdXNlLCAtLWRpc2FibGUtcm9maWxlcy1mdXNlLCBmdXNlIgotUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItLXdpdGgtc2VsaW51eCwgLS13aXRob3V0LXNlbGludXgsIGxpYnNlbGludXgiCi1QQUNLQUdFQ09ORklHW3NtYWNrXSA9ICItLXdpdGgtc21hY2ssIC0td2l0aG91dC1zbWFjaywgc21hY2siCi1QQUNLQUdFQ09ORklHW3NvdXBdID0gIi0td2l0aC1zb3VwLCAtLXdpdGhvdXQtc291cCAtLWRpc2FibGUtZ2xpYnRlc3QsIGxpYnNvdXAtMi40IgotUEFDS0FHRUNPTkZJR1tzdGF0aWNdID0gIiIKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLWxpYnN5c3RlbWQgLS13aXRoLXN5c3RlbWRzeXN0ZW11bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0sIC0td2l0aG91dC1saWJzeXN0ZW1kLCBzeXN0ZW1kIgotUEFDS0FHRUNPTkZJR1t0cml2aWFsLWh0dHBkLWNtZGxpbmVdID0gIi0tZW5hYmxlLXRyaXZpYWwtaHR0cGQtY21kbGluZSwgLS1kaXNhYmxlLXRyaXZpYWwtaHR0cGQtY21kbGluZSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc3RhdGljJywgJy0td2l0aC1zdGF0aWMtY29tcGlsZXI9XCcke0NDfSAke0NGTEFHU30gJHtDUFBGTEFHU30gJHtMREZMQUdTfVwnJywgJycsIGQpfSBcCi0iCi0KLSMgTWFrZWZpbGUtbGlib3N0cmVlLmFtIG92ZXJyaWRlcyB0aGlzIHRvIGF2b2lkIGEgYnVpbGQgcHJvYmxlbSB3aXRoIGNsYW5nLAotIyBidXQgdGhhdCBmaXggYnJlYWtzIGNyb3NzIGNvbXBpbGF0aW9uIGFuZCB3ZSBkb24ndCBuZWVkIGl0Ci1FWFRSQV9PRU1BS0UgPSAiIFwKLSAgICBJTlRST1NQRUNUSU9OX1NDQU5ORVJfRU5WPSBcCi0iCi0KLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiIFwKLSAgICAtLWVuYWJsZS13cnBzZXVkby1jb21wYXQgXAotICAgIC0tZGlzYWJsZS1vdG1wZmlsZSBcCi0iCi0KLSMgUGF0aCB0byAke3ByZWZpeH0vbGliL29zdHJlZS9vc3RyZWUtZ3J1Yi1nZW5lcmF0b3IgaXMgaGFyZGNvZGVkIG9uIHRoZQotIyBkb19jb25maWd1cmUgc3RhZ2Ugc28gd2UgZG8gZGVwZW5kIG9uIGl0Ci1TWVNST09UX0RJUiA9ICIke1NUQUdJTkdfRElSX1RBUkdFVH0iCi1TWVNST09UX0RJUl9jbGFzcy1uYXRpdmUgPSAiJHtTVEFHSU5HX0RJUl9OQVRJVkV9IgotZG9fY29uZmlndXJlW3ZhcmRlcHNdICs9ICJTWVNST09UX0RJUiIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyB0aGlzIHJlZmxlY3RzIHdoYXQgYXV0b2dlbi5zaCBkb2VzLCBidXQgdGhlIE9FIHdyYXBwZXJzIGZvciBhdXRvcmVjb25mCi0gICAgIyBhbGxvdyBpdCB0byB3b3JrIHdpdGhvdXQgdGhlIG90aGVyIGd5cmF0aW9ucyB3aGljaCBleGlzdCB0aGVyZQotICAgIGNwICR7U30vbGliZ2xueC9NYWtlZmlsZS1saWJnbG54LmFtICR7U30vbGliZ2xueC9NYWtlZmlsZS1saWJnbG54LmFtLmluYwotICAgIGNwICR7U30vYnNkaWZmL01ha2VmaWxlLWJzZGlmZi5hbSAke1N9L2JzZGlmZi9NYWtlZmlsZS1ic2RpZmYuYW0uaW5jCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L29zdHJlZSBPU1RSRUVfR1JVQjJfRVhFQz0iJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L29zdHJlZS9vc3RyZWUtZ3J1Yi1nZW5lcmF0b3IiCi19Ci0KLVBBQ0tBR0VfQkVGT1JFX1BOID0gIiBcCi0gICAgJHtQTn0tZHJhY3V0IFwKLSAgICAke1BOfS1ncnViIFwKLSAgICAke1BOfS1ta2luaXRjcGlvIFwKLSAgICAke1BOfS1zd2l0Y2hyb290IFwKLSAgICAke1BOfS10cml2aWFsLWh0dHBkIFwKLSIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtub25hcmNoX2xpYmRpcn0vJHtCUE59IFwKLSAgICAke25vbmFyY2hfbGliZGlyfS90bXBmaWxlcy5kIFwKLSAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtIFwKLSAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLWdlbmVyYXRvcnMgXAotIgotRklMRVNfJHtQTn0tZHJhY3V0ID0gIiBcCi0gICAgJHtzeXNjb25mZGlyfS9kcmFjdXQuY29uZi5kIFwKLSAgICAke2xpYmRpcn0vZHJhY3V0IFwKLSIKLUZJTEVTXyR7UE59LWdydWIgPSAiIFwKLSAgICAke3N5c2NvbmZkaXJ9L2dydWIuZCBcCi0gICAgJHtsaWJleGVjZGlyfS9saWJvc3RyZWUvZ3J1YjItMTVfb3N0cmVlIFwKLSIKLUZJTEVTXyR7UE59LW1raW5pdGNwaW8gPSAiIFwKLSAgICAke3N5c2NvbmZkaXJ9L29zdHJlZS1ta2luaXRjcGlvLmNvbmYgXAotICAgICR7bGliZGlyfS9pbml0Y3BpbyBcCi0iCi1GSUxFU18ke1BOfS1zd2l0Y2hyb290ID0gIiBcCi0gICAgJHtub25hcmNoX2xpYmRpcn0vJHtCUE59L29zdHJlZS1wcmVwYXJlLXJvb3QgXAotICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vb3N0cmVlLXByZXBhcmUtcm9vdC5zZXJ2aWNlIFwKLSIKLUZJTEVTXyR7UE59LXRyaXZpYWwtaHR0cGQgPSAiIFwKLSAgICAke2xpYmV4ZWNkaXJ9L2xpYm9zdHJlZS9vc3RyZWUtdHJpdmlhbC1odHRwZCBcCi0iCi0KLVJERVBFTkRTXyR7UE59ID0gIiBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndHJpdmlhbC1odHRwZC1jbWRsaW5lJywgJyR7UE59LXRyaXZpYWwtaHR0cGQnLCAnJywgZCl9IFwKLSIKLVJERVBFTkRTXyR7UE59LWRyYWN1dCA9ICJiYXNoIgotUkRFUEVORFNfJHtQTn0tbWtpbml0Y3BpbyA9ICJiYXNoIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIiBcCi0gICAgZ251cGcgXAotICAgICR7UE59LXN3aXRjaHJvb3QgXAotIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCi0gICAgYXR0ciBcCi0gICAgYmFzaCBcCi0gICAgY29yZXV0aWxzIFwKLSAgICBjcGlvIFwKLSAgICBkaWZmdXRpbHMgXAotICAgIGZpbmR1dGlscyBcCi0gICAgZ3JlcCBcCi0gICAgcHl0aG9uMy1jb3JlIFwKLSAgICBweXRob24zLW11bHRpcHJvY2Vzc2luZyBcCi0gICAgdGFyIFwKLSAgICAke1BOfS10cml2aWFsLWh0dHBkIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnQkJGSUxFX0NPTExFQ1RJT05TJywgJ21ldGEtcHl0aG9uJywgJ3B5dGhvbjMtcHl5YW1sJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ2pzJywgJ2dqcycsICcnLCBkKX0gXAotIgotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGdsaWJjLXV0aWxzIGdsaWJjLWxvY2FsZWRhdGEtZW4tdXMiCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJrZXJuZWwtbW9kdWxlLW92ZXJsYXkiCi1SUkVDT01NRU5EU18ke1BOfS1wdGVzdCArPSAic3RyYWNlIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAib3N0cmVlLXJlbW91bnQuc2VydmljZSBvc3RyZWUtZmluYWxpemUtc3RhZ2VkLnBhdGgiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tc3dpdGNocm9vdCA9ICJvc3RyZWUtcHJlcGFyZS1yb290LnNlcnZpY2UiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29zdHJlZS9vc3RyZWVfMjAyMC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL29zdHJlZS9vc3RyZWVfMjAyMC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzMDIxYzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvb3N0cmVlL29zdHJlZV8yMDIwLjMuYmIKQEAgLTAsMCArMSwxODkgQEAKK1NVTU1BUlkgPSAiVmVyc2lvbmVkIE9wZXJhdGluZyBTeXN0ZW0gUmVwb3NpdG9yeS4iCitERVNDUklQVElPTiA9ICJsaWJvc3RyZWUgaXMgYm90aCBhIHNoYXJlZCBsaWJyYXJ5IGFuZCBzdWl0ZSBvZiBjb21tYW5kIGxpbmUgXAordG9vbHMgdGhhdCBjb21iaW5lcyBhIFwiZ2l0LWxpa2VcIiBtb2RlbCBmb3IgY29tbWl0dGluZyBhbmQgZG93bmxvYWRpbmcgXAorYm9vdGFibGUgZmlsZXN5c3RlbSB0cmVlcywgYWxvbmcgd2l0aCBhIGxheWVyIGZvciBkZXBsb3lpbmcgdGhlbSBhbmQgbWFuYWdpbmcgXAordGhlIGJvb3Rsb2FkZXIgY29uZmlndXJhdGlvbi4iCitIT01FUEFHRSA9ICJodHRwczovL29zdHJlZS5yZWFkdGhlZG9jcy5pbyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCitERVBFTkRTID0gIiBcCisgICAgZ2xpYi0yLjAgXAorICAgIGUyZnNwcm9ncyBcCisgICAgbGliY2FwIFwKKyAgICB6bGliIFwKKyAgICB4eiBcCisgICAgYmlzb24tbmF0aXZlIFwKKyIKKworIyBUaGUgWW9jdG8gbWlycm9yIGhhcyBhbiBvbGQgZXhwb3J0IG9mIG9zdHJlZToKKyMgaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL21pcnJvci9zb3VyY2VzL2dpdDJfZ2l0aHViLmNvbS5vc3RyZWVkZXYub3N0cmVlLnRhci5negorUFJFTUlSUk9SUyA9ICIiCisKK1NSQ19VUkkgPSAiIFwKKyAgICBnaXRzbTovL2dpdGh1Yi5jb20vb3N0cmVlZGV2L29zdHJlZSBcCisgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCitTUkNSRVYgPSAiNmVkNDgyMzRiYTU3OWZmNzNlYjEyOGFmMjM3MjEyYjBhMDBmMjA1NyIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPlxkK1wuXGQrKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmFzaC1jb21wbGV0aW9uIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIG1hbnBhZ2VzIHBrZ2NvbmZpZyBwdGVzdC1nbm9tZSBzeXN0ZW1kCisKKyMgUGFja2FnZSBjb25maWd1cmF0aW9uIC0gbWF0Y2ggb3N0cmVlIGRlZmF1bHRzLCBidXQgd2l0aG91dCByb2ZpbGVzLWZ1c2UKKyMgb3RoZXJ3aXNlIHdlIGludHJvZHVjZSBhIGRlcGVuZGVuZGVuY3kgb24gbWV0YS1maWxlc3lzdGVtcworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc2VsaW51eCBzbWFjaycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3N5c3RlbWQgbGlibW91bnQnLCAnJywgZCl9IFwKKyAgICBnbGliIFwKKyAgICBncGdtZSBcCisgICAgc291cCBcCisiCisKKyMgV2UgaW5jbHVkZSBzb3VwIGJlY2F1c2Ugb3N0cmVlIGNhbid0IChjdXJyZW50bHkpIGJlIGJ1aWx0IHdpdGhvdXQKKyMgc291cCBvciBjdXJsIC0gaHR0cHM6Ly9naXRodWIuY29tL29zdHJlZWRldi9vc3RyZWUvaXNzdWVzLzE4OTcKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID8/PSAiIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzZWxpbnV4IHNtYWNrJywgZCl9IFwKKyAgICBidWlsdGluLWdydWIyLW1rY29uZmlnIFwKKyAgICBncGdtZSBcCisgICAgc291cCBcCisiCisKK1BBQ0tBR0VDT05GSUdbYXZhaGldID0gIi0td2l0aC1hdmFoaSwgLS13aXRob3V0LWF2YWhpLCBhdmFoaSIKK1BBQ0tBR0VDT05GSUdbYnVpbHRpbi1ncnViMi1ta2NvbmZpZ10gPSAiLS13aXRoLWJ1aWx0aW4tZ3J1YjItbWtjb25maWcsIC0td2l0aG91dC1idWlsdGluLWdydWIyLW1rY29uZmlnIgorUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLXdpdGgtY3VybCwgLS13aXRob3V0LWN1cmwsIGN1cmwiCitQQUNLQUdFQ09ORklHW2RyYWN1dF0gPSAiLS13aXRoLWRyYWN1dCwgLS13aXRob3V0LWRyYWN1dCIKK1BBQ0tBR0VDT05GSUdbZ2xpYl0gPSAiLS13aXRoLWNyeXB0bz1nbGliIgorUEFDS0FHRUNPTkZJR1tnanNdID0gImFjX2N2X3BhdGhfR0pTPSR7YmluZGlyfS9nanMiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLWNyeXB0bz1nbnV0bHMsICwgZ251dGxzIgorUEFDS0FHRUNPTkZJR1tncGdtZV0gPSAiLS13aXRoLWdwZ21lLCAtLXdpdGhvdXQtZ3BnbWUsIGdwZ21lIgorUEFDS0FHRUNPTkZJR1tsaWJhcmNoaXZlXSA9ICItLXdpdGgtbGliYXJjaGl2ZSwgLS13aXRob3V0LWxpYmFyY2hpdmUsIGxpYmFyY2hpdmUiCitQQUNLQUdFQ09ORklHW2xpYm1vdW50XSA9ICItLXdpdGgtbGlibW91bnQsIC0td2l0aG91dC1saWJtb3VudCwgdXRpbC1saW51eCIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbiwgLS1kaXNhYmxlLW1hbiwgbGlieHNsdC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1tta2luaXRjcGlvXSA9ICItLXdpdGgtbWtpbml0Y3BpbywgLS13aXRob3V0LW1raW5pdGNwaW8iCitQQUNLQUdFQ09ORklHW25vLWh0dHAyXSA9ICItLWRpc2FibGUtaHR0cDIsIC0tZW5hYmxlLWh0dHAyIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLXdpdGgtY3J5cHRvPW9wZW5zc2wsICwgb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbcm9maWxlcy1mdXNlXSA9ICItLWVuYWJsZS1yb2ZpbGVzLWZ1c2UsIC0tZGlzYWJsZS1yb2ZpbGVzLWZ1c2UsIGZ1c2UiCitQQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi0td2l0aC1zZWxpbnV4LCAtLXdpdGhvdXQtc2VsaW51eCwgbGlic2VsaW51eCIKK1BBQ0tBR0VDT05GSUdbc21hY2tdID0gIi0td2l0aC1zbWFjaywgLS13aXRob3V0LXNtYWNrLCBzbWFjayIKK1BBQ0tBR0VDT05GSUdbc291cF0gPSAiLS13aXRoLXNvdXAsIC0td2l0aG91dC1zb3VwIC0tZGlzYWJsZS1nbGlidGVzdCwgbGlic291cC0yLjQiCitQQUNLQUdFQ09ORklHW3N0YXRpY10gPSAiIgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtbGlic3lzdGVtZCAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSwgLS13aXRob3V0LWxpYnN5c3RlbWQsIHN5c3RlbWQiCitQQUNLQUdFQ09ORklHW3RyaXZpYWwtaHR0cGQtY21kbGluZV0gPSAiLS1lbmFibGUtdHJpdmlhbC1odHRwZC1jbWRsaW5lLCAtLWRpc2FibGUtdHJpdmlhbC1odHRwZC1jbWRsaW5lIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzdGF0aWMnLCAnLS13aXRoLXN0YXRpYy1jb21waWxlcj1cJyR7Q0N9ICR7Q0ZMQUdTfSAke0NQUEZMQUdTfSAke0xERkxBR1N9XCcnLCAnJywgZCl9IFwKKyIKKworIyBNYWtlZmlsZS1saWJvc3RyZWUuYW0gb3ZlcnJpZGVzIHRoaXMgdG8gYXZvaWQgYSBidWlsZCBwcm9ibGVtIHdpdGggY2xhbmcsCisjIGJ1dCB0aGF0IGZpeCBicmVha3MgY3Jvc3MgY29tcGlsYXRpb24gYW5kIHdlIGRvbid0IG5lZWQgaXQKK0VYVFJBX09FTUFLRSA9ICIgXAorICAgIElOVFJPU1BFQ1RJT05fU0NBTk5FUl9FTlY9IFwKKyIKKworRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICIgXAorICAgIC0tZW5hYmxlLXdycHNldWRvLWNvbXBhdCBcCisgICAgLS1kaXNhYmxlLW90bXBmaWxlIFwKKyIKKworIyBQYXRoIHRvICR7cHJlZml4fS9saWIvb3N0cmVlL29zdHJlZS1ncnViLWdlbmVyYXRvciBpcyBoYXJkY29kZWQgb24gdGhlCisjIGRvX2NvbmZpZ3VyZSBzdGFnZSBzbyB3ZSBkbyBkZXBlbmQgb24gaXQKK1NZU1JPT1RfRElSID0gIiR7U1RBR0lOR19ESVJfVEFSR0VUfSIKK1NZU1JPT1RfRElSX2NsYXNzLW5hdGl2ZSA9ICIke1NUQUdJTkdfRElSX05BVElWRX0iCitkb19jb25maWd1cmVbdmFyZGVwc10gKz0gIlNZU1JPT1RfRElSIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIHRoaXMgcmVmbGVjdHMgd2hhdCBhdXRvZ2VuLnNoIGRvZXMsIGJ1dCB0aGUgT0Ugd3JhcHBlcnMgZm9yIGF1dG9yZWNvbmYKKyAgICAjIGFsbG93IGl0IHRvIHdvcmsgd2l0aG91dCB0aGUgb3RoZXIgZ3lyYXRpb25zIHdoaWNoIGV4aXN0IHRoZXJlCisgICAgY3AgJHtTfS9saWJnbG54L01ha2VmaWxlLWxpYmdsbnguYW0gJHtTfS9saWJnbG54L01ha2VmaWxlLWxpYmdsbnguYW0uaW5jCisgICAgY3AgJHtTfS9ic2RpZmYvTWFrZWZpbGUtYnNkaWZmLmFtICR7U30vYnNkaWZmL01ha2VmaWxlLWJzZGlmZi5hbS5pbmMKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vb3N0cmVlIE9TVFJFRV9HUlVCMl9FWEVDPSIke1NUQUdJTkdfTElCRElSX05BVElWRX0vb3N0cmVlL29zdHJlZS1ncnViLWdlbmVyYXRvciIKK30KKworUEFDS0FHRV9CRUZPUkVfUE4gPSAiIFwKKyAgICAke1BOfS1kcmFjdXQgXAorICAgICR7UE59LWdydWIgXAorICAgICR7UE59LW1raW5pdGNwaW8gXAorICAgICR7UE59LXN3aXRjaHJvb3QgXAorICAgICR7UE59LXRyaXZpYWwtaHR0cGQgXAorIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke25vbmFyY2hfbGliZGlyfS8ke0JQTn0gXAorICAgICR7bm9uYXJjaF9saWJkaXJ9L3RtcGZpbGVzLmQgXAorICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0gXAorICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0tZ2VuZXJhdG9ycyBcCisiCitGSUxFU18ke1BOfS1kcmFjdXQgPSAiIFwKKyAgICAke3N5c2NvbmZkaXJ9L2RyYWN1dC5jb25mLmQgXAorICAgICR7bGliZGlyfS9kcmFjdXQgXAorIgorRklMRVNfJHtQTn0tZ3J1YiA9ICIgXAorICAgICR7c3lzY29uZmRpcn0vZ3J1Yi5kIFwKKyAgICAke2xpYmV4ZWNkaXJ9L2xpYm9zdHJlZS9ncnViMi0xNV9vc3RyZWUgXAorIgorRklMRVNfJHtQTn0tbWtpbml0Y3BpbyA9ICIgXAorICAgICR7c3lzY29uZmRpcn0vb3N0cmVlLW1raW5pdGNwaW8uY29uZiBcCisgICAgJHtsaWJkaXJ9L2luaXRjcGlvIFwKKyIKK0ZJTEVTXyR7UE59LXN3aXRjaHJvb3QgPSAiIFwKKyAgICAke25vbmFyY2hfbGliZGlyfS8ke0JQTn0vb3N0cmVlLXByZXBhcmUtcm9vdCBcCisgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9vc3RyZWUtcHJlcGFyZS1yb290LnNlcnZpY2UgXAorIgorRklMRVNfJHtQTn0tdHJpdmlhbC1odHRwZCA9ICIgXAorICAgICR7bGliZXhlY2Rpcn0vbGlib3N0cmVlL29zdHJlZS10cml2aWFsLWh0dHBkIFwKKyIKKworUkRFUEVORFNfJHtQTn0gPSAiIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0cml2aWFsLWh0dHBkLWNtZGxpbmUnLCAnJHtQTn0tdHJpdmlhbC1odHRwZCcsICcnLCBkKX0gXAorIgorUkRFUEVORFNfJHtQTn0tZHJhY3V0ID0gImJhc2giCitSREVQRU5EU18ke1BOfS1ta2luaXRjcGlvID0gImJhc2giCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGdtZScsICdnbnVwZycsICcnLCBkKX0gXAorICAgICR7UE59LXN3aXRjaHJvb3QgXAorIgorCisjCisjIE5vdGUgdGhhdCB0byBnZXQgcHRlc3QgdG8gcGFzcyB5b3UgYWxzbyBuZWVkOgorIworIyAgIHhhdHRyIGluIERJU1RST19GRUFUVVJFUworIyAgIHN0YXRpYyBvc3RyZWUtcHJlcGFyZS1yb290IChQQUNLQUdFQ09ORklHX2FwcGVuZF9wbi1vc3RyZWUgPSAiIHN0YXRpYyIpCisjICAgbWV0YS1weXRob24gaW4geW91ciBsYXllcnMKKyMgICBvdmVybGF5ZnMgaW4geW91ciBrZXJuZWwgKEtFUk5FTF9FWFRSQV9GRUFUVVJFUyArPSAiZmVhdHVyZXMvb3ZlcmxheWZzL292ZXJsYXlmcy5zY2MiKQorIyAgIGJ1c3lib3ggYnVpbHQgc3RhdGljYWxseQorIyAgIC92YXIvdG1wIGFzIGEgcmVhbCBmaWxlc3lzdGVtIChub3QgYSB0bXBmcykKKyMgICBTdWZmaWNpZW50IGRpc2sgc3BhY2UgKElNQUdFX1JPT1RGU19TSVpFID0gIjUyNDI4OCIpIGFuZCBSQU0gKFFCX01FTSA9ICItbSAxMDI0IikKKyMKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorICAgIGF0dHIgXAorICAgIGJhc2ggXAorICAgIGNvcmV1dGlscyBcCisgICAgY3BpbyBcCisgICAgZGlmZnV0aWxzIFwKKyAgICBmaW5kdXRpbHMgXAorICAgIGdyZXAgXAorICAgIHB5dGhvbjMtY29yZSBcCisgICAgcHl0aG9uMy1tdWx0aXByb2Nlc3NpbmcgXAorICAgIHN0cmFjZSBcCisgICAgdGFyIFwKKyAgICB1dGlsLWxpbnV4IFwKKyAgICB4eiBcCisgICAgJHtQTn0tdHJpdmlhbC1odHRwZCBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0JCRklMRV9DT0xMRUNUSU9OUycsICdtZXRhLXB5dGhvbicsICdweXRob24zLXB5eWFtbCcsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dqcycsICdnanMnLCAnJywgZCl9IFwKKyIKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy11dGlscyBnbGliYy1sb2NhbGVkYXRhLWVuLXVzIgorCitSUkVDT01NRU5EU18ke1BOfSArPSAia2VybmVsLW1vZHVsZS1vdmVybGF5IgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAib3N0cmVlLXJlbW91bnQuc2VydmljZSBvc3RyZWUtZmluYWxpemUtc3RhZ2VkLnBhdGgiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tc3dpdGNocm9vdCA9ICJvc3RyZWUtcHJlcGFyZS1yb290LnNlcnZpY2UiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9wYW0tc3NoLWFnZW50LWF1dGhfMC4xMC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9wYW0tc3NoLWFnZW50LWF1dGhfMC4xMC4zLmJiCmluZGV4IDQxYjRkMGQuLjc4NzE4MDEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wYW0vcGFtLXNzaC1hZ2VudC1hdXRoXzAuMTAuMy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL3BhbS1zc2gtYWdlbnQtYXV0aF8wLjEwLjMuYmIKQEAgLTI3LDcgKzI3LDcgQEAKICMKIFMgPSAiJHtXT1JLRElSfS9wYW1fc3NoX2FnZW50X2F1dGgtJHtQVn0iCiAKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAoraW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBlcmxuYXRpdmUKIAogIyBBdm9pZCBhdXRvcmVjb25mLiAgT3ZlcnJpZGUgdGhlIC0tbGliZXhlYyBvZV9ydW5jb25mIHNwZWNpZmllcyBzbyB0aGF0CiAjIHRoZSBtb2R1bGUgaXMgcHV0IHdpdGggdGhlIG90aGVyIHBhbSBtb2R1bGVzLiAgQmVjYXVzZSBpdCBjYW5ub3QsIGluIGdlbmVyYWwsCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcGVndGwvcGVndGxfMi44LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcGVndGwvcGVndGxfMi44LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczMzMzNjMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BlZ3RsL3BlZ3RsXzIuOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotREVTQ1JJUFRJT049ImhlYWRlci1vbmx5IGxpYnJhcnkgZm9yIGNyZWF0aW5nIHBhcnNlcnMgYWNjb3JkaW5nIHRvIFBhcnNpbmcgRXhwcmVzc2lvbiBHcmFtbWFyIgotSE9NRVBBR0U9Imh0dHBzOi8vZ2l0aHViLmNvbS90YW9jcHAvUEVHVEwiCi1MSUNFTlNFPSJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hZTc3YjBkOTAzYTc4OGNiNDhmNGYwOTI2ZmZjNDY4YiIKLQotU1JDUkVWID0gIjdhZmY4MGRhMmNhNGZjYjBiNDdmMzJiYTY4NGZmMmUxY2Q0OGM1NzkiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdGFvY3BwL1BFR1RMLmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9Mi54IFwKLSAgICAgICAgICAiCi0KLWluaGVyaXQgY21ha2UKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wZWd0bC9wZWd0bF8yLjguMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9wZWd0bC9wZWd0bF8yLjguMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Mjc0MWQ4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3BlZ3RsL3BlZ3RsXzIuOC4zLmJiCkBAIC0wLDAgKzEsMTIgQEAKK0RFU0NSSVBUSU9OPSJoZWFkZXItb25seSBsaWJyYXJ5IGZvciBjcmVhdGluZyBwYXJzZXJzIGFjY29yZGluZyB0byBQYXJzaW5nIEV4cHJlc3Npb24gR3JhbW1hciIKK0hPTUVQQUdFPSJodHRwczovL2dpdGh1Yi5jb20vdGFvY3BwL1BFR1RMIgorTElDRU5TRT0iTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NmE1MTk1ZjcyMGE4ZDQzNmE0MTQ4ZTBjYjg2NjA0MDAiCisKK1NSQ1JFViA9ICI0N2U4NzhhZDRmZDcyYzkxMjUzYzlkNDdiNmYxN2UwMDFjYTJkZmNmIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Rhb2NwcC9QRUdUTC5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPTIueCBcCisgICAgICAgICAgIgorCitpbmhlcml0IGNtYWtlCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXMvMDAwMS1zcmMtRG8tbm90LXJlc2V0LUZJTkFMX0xJQlMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXMvMDAwMS1zcmMtRG8tbm90LXJlc2V0LUZJTkFMX0xJQlMucGF0Y2gKaW5kZXggMDRhZjE1ZC4uYjVjNDEzMyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JlZGlzL3JlZGlzLzAwMDEtc3JjLURvLW5vdC1yZXNldC1GSU5BTF9MSUJTLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yZWRpcy9yZWRpcy8wMDAxLXNyYy1Eby1ub3QtcmVzZXQtRklOQUxfTElCUy5wYXRjaApAQCAtMTgsNyArMTgsNyBAQAogaW5kZXggN2Y3YzYyNS4uYzcxZGQzYiAxMDA2NDQKIC0tLSBhL3NyYy9NYWtlZmlsZQogKysrIGIvc3JjL01ha2VmaWxlCi1AQCAtNjYsNyArNjYsNyBAQCBlbmRpZgorQEAgLTc1LDcgKzc1LDcgQEAgZW5kaWYKICAKICBGSU5BTF9DRkxBR1M9JChTVEQpICQoV0FSTikgJChPUFQpICQoREVCVUcpICQoQ0ZMQUdTKSAkKFJFRElTX0NGTEFHUykKICBGSU5BTF9MREZMQUdTPSQoTERGTEFHUykgJChSRURJU19MREZMQUdTKSAkKERFQlVHKQpAQCAtMjYsNyArMjYsNyBAQAogK0ZJTkFMX0xJQlMrPS1sbQogIERFQlVHPS1nIC1nZ2RiCiAgCi0gaWZlcSAoJCh1bmFtZV9TKSxTdW5PUykKKyAjIExpbnV4IEFSTSBuZWVkcyAtbGF0b21pYyBhdCBsaW5raW5nIHRpbWUKIC0tIAogMi4yMy4wCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yZWRpcy9yZWRpcy8wMDA1LU1hcmstZXh0ZXJuLWRlZmluaXRpb24tb2YtU0RTX05PSU5JVC1pbi1zZHMuaC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yZWRpcy9yZWRpcy8wMDA1LU1hcmstZXh0ZXJuLWRlZmluaXRpb24tb2YtU0RTX05PSU5JVC1pbi1zZHMuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY3NTY4Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXMvMDAwNS1NYXJrLWV4dGVybi1kZWZpbml0aW9uLW9mLVNEU19OT0lOSVQtaW4tc2RzLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1Gcm9tIDdmN2Y3MTBjODgyMWI3MjU0YmFlYWY5NDVjYTNjYTI2M2I5ODQ1ZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAyMSBEZWMgMjAxOSAxMToxNzo1MCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBNYXJrIGV4dGVybiBkZWZpbml0aW9uIG9mIFNEU19OT0lOSVQgaW4gc2RzLmgKLQotVGhpcyBoZWxwcyBhdm9pZGluZyBtdWx0aXBsZSBkZWZpbml0aW9uIG9mIHRoaXMgdmFyaWFibGUsIGl0cyBhbHNvCi1kZWZpbmVkIGdsb2JhbGx5IGluIHNkcy5jCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9zZHMuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9zZHMuaCBiL3NyYy9zZHMuaAotaW5kZXggMWJkYjYwZC4uYWRjYzEyYyAxMDA2NDQKLS0tLSBhL3NyYy9zZHMuaAotKysrIGIvc3JjL3Nkcy5oCi1AQCAtMzQsNyArMzQsNyBAQAotICNkZWZpbmUgX19TRFNfSAotIAotICNkZWZpbmUgU0RTX01BWF9QUkVBTExPQyAoMTAyNCoxMDI0KQotLWNvbnN0IGNoYXIgKlNEU19OT0lOSVQ7Ci0rZXh0ZXJuIGNvbnN0IGNoYXIgKlNEU19OT0lOSVQ7Ci0gCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzdGRhcmcuaD4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yZWRpcy9yZWRpc181LjAuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yZWRpcy9yZWRpc181LjAuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkxNTc1NS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXNfNS4wLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1TVU1NQVJZID0gIlJlZGlzIGtleS12YWx1ZSBzdG9yZSIKLURFU0NSSVBUSU9OID0gIlJlZGlzIGlzIGFuIG9wZW4gc291cmNlLCBhZHZhbmNlZCBrZXktdmFsdWUgc3RvcmUuIgotSE9NRVBBR0UgPSAiaHR0cDovL3JlZGlzLmlvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYzAxYjQ5ZmVkNGRmMWE3OTg0MzY4OGZhM2Y3YjlkNiIKLURFUEVORFMgPSAicmVhZGxpbmUgbHVhIG5jdXJzZXMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnJlZGlzLmlvL3JlbGVhc2VzLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9yZWRpcy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2luaXQtcmVkaXMtc2VydmVyIFwKLSAgICAgICAgICAgZmlsZTovL3JlZGlzLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vaGlyZWRpcy11c2UtZGVmYXVsdC1DQy1pZi1pdC1pcy1zZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbHVhLXVwZGF0ZS1NYWtlZmlsZS10by11c2UtZW52aXJvbm1lbnQtYnVpbGQtc2V0dGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vZS11c2UtbGliYy1tYWxsb2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1zcmMtRG8tbm90LXJlc2V0LUZJTkFMX0xJQlMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1NYXJrLWV4dGVybi1kZWZpbml0aW9uLW9mLVNEU19OT0lOSVQtaW4tc2RzLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vR05VX1NPVVJDRS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjYxMmVjNDMwNzVhODg4YmM4YjhhN2RkOGNjYjJlMGY3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYxZGI3NGVhYmY2ODAxZjA1N2ZkMjRiNTkwMjMyZjJmMzM3ZDQyMjI4MGZkMTk0ODZlY2EwM2JlODdkM2E4MmIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtcmMuZCBzeXN0ZW1kIHVzZXJhZGQKLQotRklOQUxfTElCU194ODZfdG9vbGNoYWluLWNsYW5nID0gIi1sYXRvbWljIgotRklOQUxfTElCU19taXBzID0gIi1sYXRvbWljIgotRklOQUxfTElCU19hcm0gPSAiLWxhdG9taWMiCi1GSU5BTF9MSUJTX3Bvd2VycGMgPSAiLWxhdG9taWMiCi0KLWV4cG9ydCBGSU5BTF9MSUJTCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICA9ICItLXN5c3RlbSAtLWhvbWUtZGlyIC92YXIvbGliL3JlZGlzIC1nIHJlZGlzIC0tc2hlbGwgL2Jpbi9mYWxzZSByZWRpcyIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIHJlZGlzIgotCi1SRURJU19PTl9TWVNURU1EID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9IgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgKGNkIGRlcHMgJiYgb2VfcnVubWFrZSBoaXJlZGlzIGx1YSBsaW5lbm9pc2UpCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgZXhwb3J0IFBSRUZJWD0ke0R9LyR7cHJlZml4fQotICAgIG9lX3J1bm1ha2UgaW5zdGFsbAotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L3JlZGlzCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcmVkaXMuY29uZiAke0R9LyR7c3lzY29uZmRpcn0vcmVkaXMvcmVkaXMuY29uZgotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQtcmVkaXMtc2VydmVyICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvcmVkaXMtc2VydmVyCi0gICAgaW5zdGFsbCAtZCAke0R9L3Zhci9saWIvcmVkaXMvCi0gICAgY2hvd24gcmVkaXMucmVkaXMgJHtEfS92YXIvbGliL3JlZGlzLwotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JlZGlzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLSAgICBzZWQgLWkgJ3MhL3Vzci9zYmluLyEke3NiaW5kaXJ9LyFnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9yZWRpcy5zZXJ2aWNlCi0KLSAgICBpZiBbICIke1JFRElTX09OX1NZU1RFTUR9IiA9IHRydWUgXTsgdGhlbgotICAgICAgICBzZWQgLWkgJ3MhZGFlbW9uaXplIHllcyEjIGRhZW1vbml6ZSB5ZXMhJyAke0R9LyR7c3lzY29uZmRpcn0vcmVkaXMvcmVkaXMuY29uZgotICAgIGZpCi19Ci0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3JlZGlzL3JlZGlzLmNvbmYiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJyZWRpcy1zZXJ2ZXIiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA4NyIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJlZGlzLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXNfNS4wLjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcmVkaXMvcmVkaXNfNS4wLjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDA0MjkzMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yZWRpcy9yZWRpc181LjAuOS5iYgpAQCAtMCwwICsxLDY2IEBACitTVU1NQVJZID0gIlJlZGlzIGtleS12YWx1ZSBzdG9yZSIKK0RFU0NSSVBUSU9OID0gIlJlZGlzIGlzIGFuIG9wZW4gc291cmNlLCBhZHZhbmNlZCBrZXktdmFsdWUgc3RvcmUuIgorSE9NRVBBR0UgPSAiaHR0cDovL3JlZGlzLmlvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYzAxYjQ5ZmVkNGRmMWE3OTg0MzY4OGZhM2Y3YjlkNiIKK0RFUEVORFMgPSAicmVhZGxpbmUgbHVhIG5jdXJzZXMiCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnJlZGlzLmlvL3JlbGVhc2VzLyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9yZWRpcy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2luaXQtcmVkaXMtc2VydmVyIFwKKyAgICAgICAgICAgZmlsZTovL3JlZGlzLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vaGlyZWRpcy11c2UtZGVmYXVsdC1DQy1pZi1pdC1pcy1zZXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbHVhLXVwZGF0ZS1NYWtlZmlsZS10by11c2UtZW52aXJvbm1lbnQtYnVpbGQtc2V0dGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9vZS11c2UtbGliYy1tYWxsb2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zcmMtRG8tbm90LXJlc2V0LUZJTkFMX0xJQlMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vR05VX1NPVVJDRS5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImM5NDUyM2M5ZjRlZTY2MjAyN2RkZjkwNTc1ZDBlMDU4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUzZDBhZTE2NGNkMzM1MzZjM2Q0YjcyMGFlOWExMjhlYTYxNjZlYmYwNGZmMWFkZDNiODVmMTI0MjA5MGNiODUiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtcmMuZCBzeXN0ZW1kIHVzZXJhZGQKKworRklOQUxfTElCU194ODZfdG9vbGNoYWluLWNsYW5nID0gIi1sYXRvbWljIgorRklOQUxfTElCU19taXBzID0gIi1sYXRvbWljIgorRklOQUxfTElCU19hcm0gPSAiLWxhdG9taWMiCitGSU5BTF9MSUJTX3Bvd2VycGMgPSAiLWxhdG9taWMiCisKK2V4cG9ydCBGSU5BTF9MSUJTCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ICA9ICItLXN5c3RlbSAtLWhvbWUtZGlyIC92YXIvbGliL3JlZGlzIC1nIHJlZGlzIC0tc2hlbGwgL2Jpbi9mYWxzZSByZWRpcyIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIHJlZGlzIgorCitSRURJU19PTl9TWVNURU1EID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9IgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgKGNkIGRlcHMgJiYgb2VfcnVubWFrZSBoaXJlZGlzIGx1YSBsaW5lbm9pc2UpCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgZXhwb3J0IFBSRUZJWD0ke0R9LyR7cHJlZml4fQorICAgIG9lX3J1bm1ha2UgaW5zdGFsbAorICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L3JlZGlzCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcmVkaXMuY29uZiAke0R9LyR7c3lzY29uZmRpcn0vcmVkaXMvcmVkaXMuY29uZgorICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQtcmVkaXMtc2VydmVyICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvcmVkaXMtc2VydmVyCisgICAgaW5zdGFsbCAtZCAke0R9L3Zhci9saWIvcmVkaXMvCisgICAgY2hvd24gcmVkaXMucmVkaXMgJHtEfS92YXIvbGliL3JlZGlzLworCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JlZGlzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKyAgICBzZWQgLWkgJ3MhL3Vzci9zYmluLyEke3NiaW5kaXJ9LyFnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9yZWRpcy5zZXJ2aWNlCisKKyAgICBpZiBbICIke1JFRElTX09OX1NZU1RFTUR9IiA9IHRydWUgXTsgdGhlbgorICAgICAgICBzZWQgLWkgJ3MhZGFlbW9uaXplIHllcyEjIGRhZW1vbml6ZSB5ZXMhJyAke0R9LyR7c3lzY29uZmRpcn0vcmVkaXMvcmVkaXMuY29uZgorICAgIGZpCit9CisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3JlZGlzL3JlZGlzLmNvbmYiCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJyZWRpcy1zZXJ2ZXIiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA4NyIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJlZGlzLnNlcnZpY2UiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnJkdG9vbC9ycmR0b29sXzEuNy4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JyZHRvb2wvcnJkdG9vbF8xLjcuMi5iYgppbmRleCBiMzljZWRhLi41NjYyZTYzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnJkdG9vbC9ycmR0b29sXzEuNy4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9ycmR0b29sL3JyZHRvb2xfMS43LjIuYmIKQEAgLTQsNyArNCw3IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT0zOWRmODRjZmQ4YTVlMThiZjk4OGYyNzdmNzk0NjY3NiIKIAotREVQRU5EUyA9ICJsaWJwbmcgemxpYiBjYWlybyBwYW5nbyBnbGliLTIuMCBsaWJ4bWwyIGdyb2ZmLW5hdGl2ZSBweXRob24tc2V0dXB0b29scy1uYXRpdmUiCitERVBFTkRTID0gImxpYnBuZyB6bGliIGNhaXJvIHBhbmdvIGdsaWItMi4wIGxpYnhtbDIgZ3JvZmYtbmF0aXZlIHB5dGhvbjMtc2V0dXB0b29scy1uYXRpdmUiCiAKIFNSQ1JFViA9ICI1NmE4M2Y0ZjUyZTY3NDVjZDQzNTJmOWVlMDA4YmUzMTgzYTZkZWRmIgogUFYgPSAiMS43LjIiCkBAIC0xNSw3ICsxNSw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgY3BhbiBhdXRvdG9vbHMtYnJva2Vuc2VwIGdldHRleHQgcHl0aG9ubmF0aXZlIHB5dGhvbi1kaXIgc3lzdGVtZAoraW5oZXJpdCBjcGFuIGF1dG90b29scy1icm9rZW5zZXAgZ2V0dGV4dCBweXRob24zbmF0aXZlIHB5dGhvbjMtZGlyIHN5c3RlbWQKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCiAKQEAgLTI0LDcgKzI0LDcgQEAKIAogRVhUUkFfQVVUT1JFQ09ORiA9ICItSSBtNCAtLWV4Y2x1ZGU9YXV0b3BvaW50IgogCi1QQUNLQUdFQ09ORklHID8/PSAicHl0aG9uIHBlcmwgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKK1BBQ0tBR0VDT05GSUcgPz89ICJwZXJsICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCiAKIFBBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob249eWVzIFwKIGFtX2N2X3B5dGhvbl9weXRob25kaXI9JHtTVEFHSU5HX0xJQkRJUn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMgXApAQCAtMTIzLDcgKzEyMyw3IEBACiBERVNDUklQVElPTl8ke1BOfS1weXRob24gPSBcCiAiVGhlICR7UE59LXB5dGhvbiBwYWNrYWdlIGluY2x1ZGVzIFJSRHRvb2wgYmluZGluZ3MgZm9yIHB5dGhvbi4iCiBGSUxFU18ke1BOfS1weXRob24gPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfS9zaXRlLXBhY2thZ2VzLyoiCi1SREVQRU5EU18ke1BOfS1weXRob24gPSAicHl0aG9uIgorUkRFUEVORFNfJHtQTn0tcHl0aG9uID0gInB5dGhvbjMiCiAKIEZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L3BlcmwvdmVuZG9yX3BlcmwvKi9hdXRvL1JSRHMvLmRlYnVnIFwKICAgICAke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059L3NpdGUtcGFja2FnZXMvLmRlYnVnIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvbGlicmVscF8xLjQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL2xpYnJlbHBfMS40LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE2YzYzYTcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvbGlicmVscF8xLjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiQSByZWxpYWJsZSBsb2dnaW5nIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcnN5c2xvZy9saWJyZWxwIgotCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWZiOWMxMGVkOWZkNjgyNjc1NzYxNTQ1NWNhODkzYTkiCi0KLURFUEVORFMgPSAiZ21wIG5ldHRsZSBsaWJpZG4gemxpYiBnbnV0bHMgb3BlbnNzbCIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JzeXNsb2cvbGlicmVscC5naXQ7cHJvdG9jb2w9aHR0cHMgXAotIgotCi1TUkNSRVYgPSAiZTk2NDQzZGRhM2MwODBmYTk5MWRlY2VjMjZiYzRhYzk4ZDI0YjlhMiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUNQUEZMQUdTICs9ICItV25vLWVycm9yIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvbGlicmVscF8xLjUuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL2xpYnJlbHBfMS41LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTQ2NjMxNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL2xpYnJlbHBfMS41LjAuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJBIHJlbGlhYmxlIGxvZ2dpbmcgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9yc3lzbG9nL2xpYnJlbHAiCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZmI5YzEwZWQ5ZmQ2ODI2NzU3NjE1NDU1Y2E4OTNhOSIKKworREVQRU5EUyA9ICJnbXAgbmV0dGxlIGxpYmlkbiB6bGliIGdudXRscyBvcGVuc3NsIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnN5c2xvZy9saWJyZWxwLmdpdDtwcm90b2NvbD1odHRwcyBcCisiCisKK1NSQ1JFViA9ICIwYmViMjI1OGUxMmU0MTMxZGMzMWUyNjEwNzhlYTUzZDE4Zjc4N2Q3IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworQ1BQRkxBR1MgKz0gIi1Xbm8tZXJyb3IiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvcnVuLXB0ZXN0CmluZGV4IDM3NzBhNzUuLmFhNjk4ZDggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvcnVuLXB0ZXN0CisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2cvcnVuLXB0ZXN0CkBAIC0xLDMgKzEsOCBAQAogIyEvYmluL3NoCiAjCitzZXQgLWUKK3NldCAtbyBwaXBlZmFpbAorCitTQ1JJUFRQQVRIPSIkKCBjZCAiJChkaXJuYW1lICIkMCIpIiA7IHB3ZCAtUCApIgorY2QgJHtTQ1JJUFRQQVRIfQogbWFrZSAtQyB0ZXN0cyAtayBjaGVjay1URVNUUwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZ184LjE5MTEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2dfOC4xOTExLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAyYWMwM2UuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3JzeXNsb2cvcnN5c2xvZ184LjE5MTEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5MCArMCwwIEBACi1TVU1NQVJZID0gIlJzeXNsb2cgaXMgYW4gZW5oYW5jZWQgbXVsdGktdGhyZWFkZWQgc3lzbG9nZCIKLURFU0NSSVBUSU9OID0gIlwKLVJzeXNsb2cgaXMgYW4gZW5oYW5jZWQgc3lzbG9nZCBzdXBwb3J0aW5nLCBhbW9uZyBvdGhlcnMsIE15U1FMLFwKLSBQb3N0Z3JlU1FMLCBmYWlsb3ZlciBsb2cgZGVzdGluYXRpb25zLCBzeXNsb2cvdGNwLCBmaW5lIGdyYWluXAotIG91dHB1dCBmb3JtYXQgY29udHJvbCwgaGlnaCBwcmVjaXNpb24gdGltZXN0YW1wcywgcXVldWVkIG9wZXJhdGlvbnNcCi0gYW5kIHRoZSBhYmlsaXR5IHRvIGZpbHRlciBvbiBhbnkgbWVzc2FnZSBwYXJ0LiBJdCBpcyBxdWl0ZVwKLSBjb21wYXRpYmxlIHRvIHN0b2NrIHN5c2tsb2dkIGFuZCBjYW4gYmUgdXNlZCBhcyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuXAotIEl0cyBhZHZhbmNlZCBmZWF0dXJlcyBtYWtlIGl0IHN1aXRhYmxlIGZvciBlbnRlcnByaXNlLWNsYXNzLFwKLSBlbmNyeXB0aW9uIHByb3RlY3RlZCBzeXNsb2cgcmVsYXkgY2hhaW5zIHdoaWxlIGF0IHRoZSBzYW1lIHRpbWUgYmVpbmdcCi0gdmVyeSBlYXN5IHRvIHNldHVwIGZvciB0aGUgbm92aWNlIHVzZXIuIgotCi1ERVBFTkRTID0gInpsaWIgbGliZXN0ciBsaWJmYXN0anNvbiBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUgbGlibG9nZ2luZyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucnN5c2xvZy5jb20vIgotTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyAmIEFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01MWQ5NjM1ZTY0NmZiNzVlMWI3NGMwNzRmNzg4ZTk3MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9Y2I3OTAzZjFlNWMzOWFlODM4MjA5ZTEzMGRjYTI3MGEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5BU0wyMDttZDU9MDUyZjhhMDkyMDY2MTVhYjA3MzI2ZmY4Y2UyZDlkMzJcCi0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5yc3lzbG9nLmNvbS9kb3dubG9hZC9maWxlcy9kb3dubG9hZC9yc3lzbG9nLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vaW5pdHNjcmlwdCBcCi0gICAgICAgICAgIGZpbGU6Ly9yc3lzbG9nLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vcnN5c2xvZy5sb2dyb3RhdGUgXAotICAgICAgICAgICBmaWxlOi8vdXNlLXBrZ2NvbmZpZy10by1jaGVjay1saWJnY3J5cHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLQotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCi0gICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtdGltZS1oLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE1NGUzM2ZlYjU4NzIxNmYyOTU1MDUwYTgzMDExMDRjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUxZjQ3NzZiMWM2MmFkNzIyMGY0ZDYyNGE4OWE5NmIwYzNkNDczODAwNjg5OTM1NmVhYWVmMGYxZjkxZWUxMDQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcnN5c2xvZy9yc3lzbG9nL3JlbGVhc2VzIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1cGRhdGUtcmMuZCBwdGVzdAotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1nZW5lcmF0ZS1tYW4tcGFnZXMgYXBfY3ZfYXRvbWljX2J1aWx0aW5zPXllcyIKLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtaW1maWxlLXRlc3RzIgotRVhUUkFfT0VDT05GX3JlbW92ZV9taXBzYXJjaCA9ICJhcF9jdl9hdG9taWNfYnVpbHRpbnM9eWVzIgotRVhUUkFfT0VDT05GX3JlbW92ZV9wb3dlcnBjID0gImFwX2N2X2F0b21pY19idWlsdGlucz15ZXMiCi0KLSMgZmlyc3QgbGluZSBpcyBkZWZhdWx0IHllcyBpbiBjb25maWd1cmUKLVBBQ0tBR0VDT05GSUcgPz89ICIgXAotICAgIHJzeXNsb2dkIHJzeXNsb2dydCBrbG9nIGluZXQgcmVnZXhwIHV1aWQgbGliZ2NyeXB0IFwKLSAgICBmbWh0dHAgaW1kaWFnIGdudXRscyBpbWZpbGUgXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3NubXAgc3lzdGVtZCcsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICd0ZXN0YmVuY2ggcmVscCAke1ZBTEdSSU5EfScsICcnLCBkKX0gXAotIgotCi0jIGRlZmF1bHQgeWVzIGluIGNvbmZpZ3VyZQotUEFDS0FHRUNPTkZJR1tyZWxwXSA9ICItLWVuYWJsZS1yZWxwLC0tZGlzYWJsZS1yZWxwLGxpYnJlbHAsIgotUEFDS0FHRUNPTkZJR1tyc3lzbG9nZF0gPSAiLS1lbmFibGUtcnN5c2xvZ2QsLS1kaXNhYmxlLXJzeXNsb2dkLCwiCi1QQUNLQUdFQ09ORklHW3JzeXNsb2dydF0gPSAiLS1lbmFibGUtcnN5c2xvZ3J0LC0tZGlzYWJsZS1yc3lzbG9ncnQsLCIKLVBBQ0tBR0VDT05GSUdbZm1odHRwXSA9ICItLWVuYWJsZS1mbWh0dHAsLS1kaXNhYmxlLWZtaHR0cCxjdXJsLCIKLVBBQ0tBR0VDT05GSUdbaW5ldF0gPSAiLS1lbmFibGUtaW5ldCwtLWRpc2FibGUtaW5ldCwsIgotUEFDS0FHRUNPTkZJR1trbG9nXSA9ICItLWVuYWJsZS1rbG9nLC0tZGlzYWJsZS1rbG9nLCwiCi1QQUNLQUdFQ09ORklHW3JlZ2V4cF0gPSAiLS1lbmFibGUtcmVnZXhwLC0tZGlzYWJsZS1yZWdleHAsLCIKLVBBQ0tBR0VDT05GSUdbdXVpZF0gPSAiLS1lbmFibGUtdXVpZCwtLWRpc2FibGUtdXVpZCx1dGlsLWxpbnV4LCIKLVBBQ0tBR0VDT05GSUdbbGliZ2NyeXB0XSA9ICItLWVuYWJsZS1saWJnY3J5cHQsLS1kaXNhYmxlLWxpYmdjcnlwdCxsaWJnY3J5cHQsIgotUEFDS0FHRUNPTkZJR1t0ZXN0YmVuY2hdID0gIi0tZW5hYmxlLXRlc3RiZW5jaCAtLWVuYWJsZS1vbXN0ZG91dCwtLWRpc2FibGUtdGVzdGJlbmNoIC0tZGlzYWJsZS1vbXN0ZG91dCwsIgotCi0jIGRlZmF1bHQgbm8gaW4gY29uZmlndXJlCi1QQUNLQUdFQ09ORklHW2RlYnVnXSA9ICItLWVuYWJsZS1kZWJ1ZywtLWRpc2FibGUtZGVidWcsLCIKLVBBQ0tBR0VDT05GSUdbaW1kaWFnXSA9ICItLWVuYWJsZS1pbWRpYWcsLS1kaXNhYmxlLWltZGlhZywsIgotUEFDS0FHRUNPTkZJR1tpbWZpbGVdID0gIi0tZW5hYmxlLWltZmlsZSwtLWRpc2FibGUtaW1maWxlLCwiCi1QQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAsbmV0LXNubXAsIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscywtLWRpc2FibGUtZ251dGxzLGdudXRscywiCi1QQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCwiCi1QQUNLQUdFQ09ORklHW2ltam91cm5hbF0gPSAiLS1lbmFibGUtaW1qb3VybmFsLC0tZGlzYWJsZS1pbWpvdXJuYWwsIgotUEFDS0FHRUNPTkZJR1ttbWpzb25wYXJzZV0gPSAiLS1lbmFibGUtbW1qc29ucGFyc2UsLS1kaXNhYmxlLW1tanNvbnBhcnNlLCIKLVBBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0tZW5hYmxlLW15c3FsLC0tZGlzYWJsZS1teXNxbCxteXNxbDUsIgotUEFDS0FHRUNPTkZJR1twb3N0Z3Jlc3FsXSA9ICItLWVuYWJsZS1wZ3NxbCwtLWRpc2FibGUtcGdzcWwscG9zdGdyZXNxbCwiCi1QQUNLQUdFQ09ORklHW2xpYmRiaV0gPSAiLS1lbmFibGUtbGliZGJpLC0tZGlzYWJsZS1saWJkYmksbGliZGJpLCIKLVBBQ0tBR0VDT05GSUdbbWFpbF0gPSAiLS1lbmFibGUtbWFpbCwtLWRpc2FibGUtbWFpbCwsIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQsLS1kaXNhYmxlLXZhbGdyaW5kLHZhbGdyaW5kLCIKLQotVEVTVERJUiA9ICJ0ZXN0cyIKLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgZWNobyAnYnVpbGR0ZXN0LVRFU1RTOiAkKGNoZWNrX1BST0dSQU1TKScgPj4gJHtURVNURElSfS9NYWtlZmlsZQotICAgIG9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBidWlsZHRlc3QtVEVTVFMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICAjIGluc3RhbGwgdGhlIHRlc3RzCi0gICAgY3AgLXJmICR7U30vJHtURVNURElSfSAke0R9JHtQVEVTVF9QQVRIfQotICAgIGNwIC1yZiAke0J9LyR7VEVTVERJUn0gJHtEfSR7UFRFU1RfUEFUSH0KLQotICAgICMgZG8gTk9UIG5lZWQgdG8gcmVidWlsZCBNYWtlZmlsZSBpdHNlbGYKLSAgICBzZWQgLWkgJ3MvXk1ha2VmaWxlOi4qJC9NYWtlZmlsZTovJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCi0gICAgIyBkbyBOT1QgbmVlZCB0byByZWJ1aWxkICQoY2hlY2tfUFJPR1JBTVMpCi0gICAgc2VkIC1pICdzL15jaGVjay1URVNUUzouKiQvY2hlY2stVEVTVFM6LycgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQotCi0gICAgIyBmaXggdGhlIHNyY2RpciwgdG9wX3NyY2RpcgotICAgIHNlZCAtaSAncyxeXChzcmNkaXIgPSBcKS4qLFwxJHtQVEVTVF9QQVRIfS90ZXN0cywnICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKLSAgICBzZWQgLWkgJ3MsXlwodG9wX3NyY2RpciA9IFwpLiosXDEke1BURVNUX1BBVEh9L3Rlc3RzLCcgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQotICAgICMgZml4IHRoZSBhYnNfdG9wX2J1aWxkZGlyCi0gICAgc2VkIC1pICdzLF5cKGFic190b3BfYnVpbGRkaXIgPSBcKS4qLFwxJHtQVEVTVF9QQVRIfS8sJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCi0KLSAgICAjIHZhbGdyaW5kIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggYXJtIGFuZCBtaXBzLAotICAgICMgc28gcmVtb3ZlIHJlbGF0ZWQgdGVzdCBjYXNlcyBpZiB0aGVyZSBpcyBubyB2YWxncmluZC4KLSAgICBpZiBbIHgke1ZBTEdSSU5EfSA9IHggXTsgdGhlbgotICAgICAgICBzZWQgLWkgJy91ZHAtbXNncmVkdWMtL2QnICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKLSAgICBmaQotCi0gICAgIyBpbnN0YWxsIHRlc3QtZHJpdmVyCi0gICAgaW5zdGFsbCAtbSA2NDQgJHtTfS90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfQotCi0gICAgIyBpbnN0YWxsIG5lY2Vzc2FyeSBsaW5rcwotICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdG9vbHMKLSAgICBsbiAtc2YgJHtzYmluZGlyfS9yc3lzbG9nZCAke0R9JHtQVEVTVF9QQVRIfS90b29scy9yc3lzbG9nZAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9ydW50aW1lCi0gICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9ydW50aW1lLy5saWJzCi0gICAgKAotICAgICAgICBjZCAke0R9LyR7bGliZGlyfS9yc3lzbG9nCi0gICAgICAgIGFsbHNvPSIqLnNvIgotICAgICAgICBmb3IgaSBpbiAkYWxsc287IGRvCi0gICAgICAgICAgICBsbiAtc2YgJHtsaWJkaXJ9L3JzeXNsb2cvJGkgJHtEfSR7UFRFU1RfUEFUSH0vcnVudGltZS8ubGlicy8kaQotICAgICAgICBkb25lCi0gICAgKQotCi0gICAgIyBmaXggdGhlIG1vZHVsZSBsb2FkIHBhdGggd2l0aCBydW50aW1lLy5saWJzCi0gICAgZmluZCAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9IC1uYW1lICIqLmNvbmYiIC1vIC1uYW1lICIqLnNoIiAtbyAtbmFtZSAiKi5jIiB8IHhhcmdzIFwKLSAgICAgICAgc2VkIC1pIC1lICdzOi4uL3BsdWdpbnMvLiovLmxpYnMvOi4uL3J1bnRpbWUvLmxpYnMvOmcnCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCIKLSAgICBpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuZCIKLSAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L2luaXRzY3JpcHQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c2xvZwotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vcnN5c2xvZy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3JzeXNsb2cuY29uZgotICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vcnN5c2xvZy5sb2dyb3RhdGUgJHtEfSR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmQvbG9ncm90YXRlLnJzeXNsb2cKLSAgICBzZWQgLWkgLWUgInMjQEJJTkRJUkAjJHtiaW5kaXJ9I2ciICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kL2xvZ3JvdGF0ZS5yc3lzbG9nCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdpbWpvdXJuYWwnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kIDA3NTUgJHtEfSR7c3lzY29uZmRpcn0vcnN5c2xvZy5kCi0gICAgICAgIGVjaG8gJyRNb2RMb2FkIGltam91cm5hbCcgPj4gJHtEfSR7c3lzY29uZmRpcn0vcnN5c2xvZy5kL2ltam91cm5hbC5jb25mCi0gICAgZmkKLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtbWpzb25wYXJzZScsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgMDc1NSAke0R9JHtzeXNjb25mZGlyfS9yc3lzbG9nLmQKLSAgICAgICAgZWNobyAnJE1vZExvYWQgbW1qc29ucGFyc2UnID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3JzeXNsb2cuZC9tbWpzb25wYXJzZS5jb25mCi0gICAgZmkKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7YmluZGlyfSIKLQotSU5JVFNDUklQVF9OQU1FID0gInN5c2xvZyIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9yc3lzbG9nLmNvbmYiCi0KLVJDT05GTElDVFNfJHtQTn0gPSAiYnVzeWJveC1zeXNsb2cgc3lza2xvZ2Qgc3lzbG9nLW5nIgotCi1SUFJPVklERVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCi1SQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIiR7QlBOfS5zZXJ2aWNlIgotCi1SREVQRU5EU18ke1BOfSArPSAibG9ncm90YXRlIgotCi0jIGZvciByc3lzbG9nLXB0ZXN0Ci1WQUxHUklORCA9ICJ2YWxncmluZCIKLQotIyB2YWxncmluZCBzdXBwb3J0cyBhcm12NyBhbmQgYWJvdmUKLVZBTEdSSU5EX2FybXY0ID0gJycKLVZBTEdSSU5EX2FybXY1ID0gJycKLVZBTEdSSU5EX2FybXY2ID0gJycKLQotIyBYMzIgaXNuJ3Qgc3VwcG9ydGVkIGJ5IHZhbGdyaW5kIGF0IHRoaXMgdGltZQotVkFMR1JJTkRfbGludXgtZ251eDMyID0gJycKLVZBTEdSSU5EX2xpbnV4LW11c2x4MzIgPSAnJwotCi0jIERpc2FibGUgZm9yIHNvbWUgTUlQUyB2YXJpYW50cwotVkFMR1JJTkRfbWlwc2FyY2hyNiA9ICcnCi1WQUxHUklORF9saW51eC1nbnVuMzIgPSAnJwotCi0jIERpc2FibGUgZm9yIHBvd2VycGM2NCB3aXRoIG11c2wKLVZBTEdSSU5EX2xpYmMtbXVzbF9wb3dlcnBjNjQgPSAnJwotCi0jIFJJU0MtViBzdXBwb3J0IGZvciB2YWxncmluZCBpcyBub3QgdGhlcmUgeWV0Ci1WQUxHUklORF9yaXNjdjY0ID0gIiIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIlwKLSAgbWFrZSBkaWZmdXRpbHMgZ3ppcCBiYXNoIGdhd2sgY29yZXV0aWxzIHByb2NwcyBcCi0gIGxpYmdjYyBweXRob24tY29yZSBweXRob24taW8gXAotICAiCi1SUkVDT01NRU5EU18ke1BOfS1wdGVzdCArPSAiJHtUQ0xJQkN9LWRiZyAke1ZBTEdSSU5EfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9yc3lzbG9nL3JzeXNsb2dfOC4yMDAyLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nXzguMjAwMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2MDUxNDUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvcnN5c2xvZy9yc3lzbG9nXzguMjAwMi4wLmJiCkBAIC0wLDAgKzEsMjAwIEBACitTVU1NQVJZID0gIlJzeXNsb2cgaXMgYW4gZW5oYW5jZWQgbXVsdGktdGhyZWFkZWQgc3lzbG9nZCIKK0RFU0NSSVBUSU9OID0gIlwKK1JzeXNsb2cgaXMgYW4gZW5oYW5jZWQgc3lzbG9nZCBzdXBwb3J0aW5nLCBhbW9uZyBvdGhlcnMsIE15U1FMLFwKKyBQb3N0Z3JlU1FMLCBmYWlsb3ZlciBsb2cgZGVzdGluYXRpb25zLCBzeXNsb2cvdGNwLCBmaW5lIGdyYWluXAorIG91dHB1dCBmb3JtYXQgY29udHJvbCwgaGlnaCBwcmVjaXNpb24gdGltZXN0YW1wcywgcXVldWVkIG9wZXJhdGlvbnNcCisgYW5kIHRoZSBhYmlsaXR5IHRvIGZpbHRlciBvbiBhbnkgbWVzc2FnZSBwYXJ0LiBJdCBpcyBxdWl0ZVwKKyBjb21wYXRpYmxlIHRvIHN0b2NrIHN5c2tsb2dkIGFuZCBjYW4gYmUgdXNlZCBhcyBhIGRyb3AtaW4gcmVwbGFjZW1lbnQuXAorIEl0cyBhZHZhbmNlZCBmZWF0dXJlcyBtYWtlIGl0IHN1aXRhYmxlIGZvciBlbnRlcnByaXNlLWNsYXNzLFwKKyBlbmNyeXB0aW9uIHByb3RlY3RlZCBzeXNsb2cgcmVsYXkgY2hhaW5zIHdoaWxlIGF0IHRoZSBzYW1lIHRpbWUgYmVpbmdcCisgdmVyeSBlYXN5IHRvIHNldHVwIGZvciB0aGUgbm92aWNlIHVzZXIuIgorCitERVBFTkRTID0gInpsaWIgbGliZXN0ciBsaWJmYXN0anNvbiBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUgbGlibG9nZ2luZyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucnN5c2xvZy5jb20vIgorTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyAmIEFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01MWQ5NjM1ZTY0NmZiNzVlMWI3NGMwNzRmNzg4ZTk3MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUjttZDU9Y2I3OTAzZjFlNWMzOWFlODM4MjA5ZTEzMGRjYTI3MGEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5BU0wyMDttZDU9MDUyZjhhMDkyMDY2MTVhYjA3MzI2ZmY4Y2UyZDlkMzJcCisiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5yc3lzbG9nLmNvbS9kb3dubG9hZC9maWxlcy9kb3dubG9hZC9yc3lzbG9nLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vaW5pdHNjcmlwdCBcCisgICAgICAgICAgIGZpbGU6Ly9yc3lzbG9nLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vcnN5c2xvZy5sb2dyb3RhdGUgXAorICAgICAgICAgICBmaWxlOi8vdXNlLXBrZ2NvbmZpZy10by1jaGVjay1saWJnY3J5cHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCisgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtdGltZS1oLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImZiZTZkMTgyMDUxNzBlMjJiYWQ0NzA5NTRkMGRjODc0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZlODZjMTRkODYwZGExMjAyYzc2NjE2ZmVhYzA1MzllYTVhNDBhNGFkMTgyZDc0YjdkNmQyNDE5Y2MyMzgxZjgiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vcnN5c2xvZy9yc3lzbG9nL3JlbGVhc2VzIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1cGRhdGUtcmMuZCBwdGVzdAorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1nZW5lcmF0ZS1tYW4tcGFnZXMgYXBfY3ZfYXRvbWljX2J1aWx0aW5zPXllcyIKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtaW1maWxlLXRlc3RzIgorRVhUUkFfT0VDT05GX3JlbW92ZV9taXBzYXJjaCA9ICJhcF9jdl9hdG9taWNfYnVpbHRpbnM9eWVzIgorRVhUUkFfT0VDT05GX3JlbW92ZV9wb3dlcnBjID0gImFwX2N2X2F0b21pY19idWlsdGlucz15ZXMiCisKKyMgZmlyc3QgbGluZSBpcyBkZWZhdWx0IHllcyBpbiBjb25maWd1cmUKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgIHJzeXNsb2dkIHJzeXNsb2dydCBrbG9nIGluZXQgcmVnZXhwIHV1aWQgbGliZ2NyeXB0IFwKKyAgICBmbWh0dHAgaW1kaWFnIGdudXRscyBpbWZpbGUgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3NubXAgc3lzdGVtZCcsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICd0ZXN0YmVuY2ggcmVscCAke1ZBTEdSSU5EfScsICcnLCBkKX0gXAorIgorCisjIGRlZmF1bHQgeWVzIGluIGNvbmZpZ3VyZQorUEFDS0FHRUNPTkZJR1tyZWxwXSA9ICItLWVuYWJsZS1yZWxwLC0tZGlzYWJsZS1yZWxwLGxpYnJlbHAsIgorUEFDS0FHRUNPTkZJR1tyc3lzbG9nZF0gPSAiLS1lbmFibGUtcnN5c2xvZ2QsLS1kaXNhYmxlLXJzeXNsb2dkLCwiCitQQUNLQUdFQ09ORklHW3JzeXNsb2dydF0gPSAiLS1lbmFibGUtcnN5c2xvZ3J0LC0tZGlzYWJsZS1yc3lzbG9ncnQsLCIKK1BBQ0tBR0VDT05GSUdbZm1odHRwXSA9ICItLWVuYWJsZS1mbWh0dHAsLS1kaXNhYmxlLWZtaHR0cCxjdXJsLCIKK1BBQ0tBR0VDT05GSUdbaW5ldF0gPSAiLS1lbmFibGUtaW5ldCwtLWRpc2FibGUtaW5ldCwsIgorUEFDS0FHRUNPTkZJR1trbG9nXSA9ICItLWVuYWJsZS1rbG9nLC0tZGlzYWJsZS1rbG9nLCwiCitQQUNLQUdFQ09ORklHW3JlZ2V4cF0gPSAiLS1lbmFibGUtcmVnZXhwLC0tZGlzYWJsZS1yZWdleHAsLCIKK1BBQ0tBR0VDT05GSUdbdXVpZF0gPSAiLS1lbmFibGUtdXVpZCwtLWRpc2FibGUtdXVpZCx1dGlsLWxpbnV4LCIKK1BBQ0tBR0VDT05GSUdbbGliZ2NyeXB0XSA9ICItLWVuYWJsZS1saWJnY3J5cHQsLS1kaXNhYmxlLWxpYmdjcnlwdCxsaWJnY3J5cHQsIgorUEFDS0FHRUNPTkZJR1t0ZXN0YmVuY2hdID0gIi0tZW5hYmxlLXRlc3RiZW5jaCAtLWVuYWJsZS1vbXN0ZG91dCwtLWRpc2FibGUtdGVzdGJlbmNoIC0tZGlzYWJsZS1vbXN0ZG91dCwsIgorCisjIGRlZmF1bHQgbm8gaW4gY29uZmlndXJlCitQQUNLQUdFQ09ORklHW2RlYnVnXSA9ICItLWVuYWJsZS1kZWJ1ZywtLWRpc2FibGUtZGVidWcsLCIKK1BBQ0tBR0VDT05GSUdbaW1kaWFnXSA9ICItLWVuYWJsZS1pbWRpYWcsLS1kaXNhYmxlLWltZGlhZywsIgorUEFDS0FHRUNPTkZJR1tpbWZpbGVdID0gIi0tZW5hYmxlLWltZmlsZSwtLWRpc2FibGUtaW1maWxlLCwiCitQQUNLQUdFQ09ORklHW3NubXBdID0gIi0tZW5hYmxlLXNubXAsLS1kaXNhYmxlLXNubXAsbmV0LXNubXAsIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscywtLWRpc2FibGUtZ251dGxzLGdudXRscywiCitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi0td2l0aC1zeXN0ZW1kc3lzdGVtdW5pdGRpcj0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLywtLXdpdGhvdXQtc3lzdGVtZHN5c3RlbXVuaXRkaXIsc3lzdGVtZCwiCitQQUNLQUdFQ09ORklHW2ltam91cm5hbF0gPSAiLS1lbmFibGUtaW1qb3VybmFsLC0tZGlzYWJsZS1pbWpvdXJuYWwsIgorUEFDS0FHRUNPTkZJR1ttbWpzb25wYXJzZV0gPSAiLS1lbmFibGUtbW1qc29ucGFyc2UsLS1kaXNhYmxlLW1tanNvbnBhcnNlLCIKK1BBQ0tBR0VDT05GSUdbbXlzcWxdID0gIi0tZW5hYmxlLW15c3FsLC0tZGlzYWJsZS1teXNxbCxteXNxbDUsIgorUEFDS0FHRUNPTkZJR1twb3N0Z3Jlc3FsXSA9ICItLWVuYWJsZS1wZ3NxbCwtLWRpc2FibGUtcGdzcWwscG9zdGdyZXNxbCwiCitQQUNLQUdFQ09ORklHW2xpYmRiaV0gPSAiLS1lbmFibGUtbGliZGJpLC0tZGlzYWJsZS1saWJkYmksbGliZGJpLCIKK1BBQ0tBR0VDT05GSUdbbWFpbF0gPSAiLS1lbmFibGUtbWFpbCwtLWRpc2FibGUtbWFpbCwsIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQsLS1kaXNhYmxlLXZhbGdyaW5kLHZhbGdyaW5kLCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgc2VkIC1pIC1lICdzfHB5dGhvbiB8cHl0aG9uMyB8ZycgJHtTfS90ZXN0cy8qLnNoCisgICAgc2VkIC1pIC1lICdzfC91c3IvYmluL2VudiBweXRob258L3Vzci9iaW4vZW52IHB5dGhvbjN8ZycgJHtTfS90ZXN0cy8qLnB5CisgICAgc2VkIC1pIC1lICdzfC91c3IvYmluL2VudiBweXRob258L3Vzci9iaW4vZW52IHB5dGhvbjN8ZycgJHtTfS90ZXN0cy90ZXN0c3VpdGVzLyoucHkKK30KKworVEVTVERJUiA9ICJ0ZXN0cyIKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgZWNobyAnYnVpbGR0ZXN0LVRFU1RTOiAkKGNoZWNrX1BST0dSQU1TKScgPj4gJHtURVNURElSfS9NYWtlZmlsZQorICAgIG9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBidWlsZHRlc3QtVEVTVFMKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICAjIGluc3RhbGwgdGhlIHRlc3RzCisgICAgY3AgLXJmICR7U30vJHtURVNURElSfSAke0R9JHtQVEVTVF9QQVRIfQorICAgIGNwIC1yZiAke0J9LyR7VEVTVERJUn0gJHtEfSR7UFRFU1RfUEFUSH0KKworICAgICMgZG8gTk9UIG5lZWQgdG8gcmVidWlsZCBNYWtlZmlsZSBpdHNlbGYKKyAgICBzZWQgLWkgJ3MvXk1ha2VmaWxlOi4qJC9NYWtlZmlsZTovJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCisgICAgIyBkbyBOT1QgbmVlZCB0byByZWJ1aWxkICQoY2hlY2tfUFJPR1JBTVMpCisgICAgc2VkIC1pICdzL15jaGVjay1URVNUUzouKiQvY2hlY2stVEVTVFM6LycgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQorCisgICAgIyBmaXggdGhlIHNyY2RpciwgdG9wX3NyY2RpcgorICAgIHNlZCAtaSAncyxeXChzcmNkaXIgPSBcKS4qLFwxJHtQVEVTVF9QQVRIfS90ZXN0cywnICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKKyAgICBzZWQgLWkgJ3MsXlwodG9wX3NyY2RpciA9IFwpLiosXDEke1BURVNUX1BBVEh9L3Rlc3RzLCcgJHtEfSR7UFRFU1RfUEFUSH0vJHtURVNURElSfS9NYWtlZmlsZQorICAgICMgZml4IHRoZSBhYnNfdG9wX2J1aWxkZGlyCisgICAgc2VkIC1pICdzLF5cKGFic190b3BfYnVpbGRkaXIgPSBcKS4qLFwxJHtQVEVTVF9QQVRIfS8sJyAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCisKKyAgICAjIHZhbGdyaW5kIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggYXJtIGFuZCBtaXBzLAorICAgICMgc28gcmVtb3ZlIHJlbGF0ZWQgdGVzdCBjYXNlcyBpZiB0aGVyZSBpcyBubyB2YWxncmluZC4KKyAgICBpZiBbIHgke1ZBTEdSSU5EfSA9IHggXTsgdGhlbgorICAgICAgICBzZWQgLWkgJy91ZHAtbXNncmVkdWMtL2QnICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKKyAgICBmaQorCisgICAgIyBpbnN0YWxsIHRlc3QtZHJpdmVyCisgICAgaW5zdGFsbCAtbSA2NDQgJHtTfS90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfQorCisgICAgIyBpbnN0YWxsIG5lY2Vzc2FyeSBsaW5rcworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdG9vbHMKKyAgICBsbiAtc2YgJHtzYmluZGlyfS9yc3lzbG9nZCAke0R9JHtQVEVTVF9QQVRIfS90b29scy9yc3lzbG9nZAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9ydW50aW1lCisgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9ydW50aW1lLy5saWJzCisgICAgKAorICAgICAgICBjZCAke0R9LyR7bGliZGlyfS9yc3lzbG9nCisgICAgICAgIGFsbHNvPSIqLnNvIgorICAgICAgICBmb3IgaSBpbiAkYWxsc287IGRvCisgICAgICAgICAgICBsbiAtc2YgJHtsaWJkaXJ9L3JzeXNsb2cvJGkgJHtEfSR7UFRFU1RfUEFUSH0vcnVudGltZS8ubGlicy8kaQorICAgICAgICBkb25lCisgICAgKQorCisgICAgIyBmaXggdGhlIG1vZHVsZSBsb2FkIHBhdGggd2l0aCBydW50aW1lLy5saWJzCisgICAgZmluZCAke0R9JHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9IC1uYW1lICIqLmNvbmYiIC1vIC1uYW1lICIqLnNoIiAtbyAtbmFtZSAiKi5jIiB8IHhhcmdzIFwKKyAgICAgICAgc2VkIC1pIC1lICdzOi4uL3BsdWdpbnMvLiovLmxpYnMvOi4uL3J1bnRpbWUvLmxpYnMvOmcnCisgICAgIyBmaXggdGhlIHB5dGhvbjMgcGF0aCBmb3IgdGVzdHMvc2V0LWVudmFyCisgICAgc2VkIC1pIC1lIHM6JHtIT1NUVE9PTFNfRElSfToke2JpbmRpcn06ZyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9zZXQtZW52dmFycworfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQiCisgICAgaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vbG9ncm90YXRlLmQiCisgICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9pbml0c2NyaXB0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXNsb2cKKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3JzeXNsb2cuY29uZiAke0R9JHtzeXNjb25mZGlyfS9yc3lzbG9nLmNvbmYKKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3JzeXNsb2cubG9ncm90YXRlICR7RH0ke3N5c2NvbmZkaXJ9L2xvZ3JvdGF0ZS5kL2xvZ3JvdGF0ZS5yc3lzbG9nCisgICAgc2VkIC1pIC1lICJzI0BCSU5ESVJAIyR7YmluZGlyfSNnIiAke0R9JHtzeXNjb25mZGlyfS9sb2dyb3RhdGUuZC9sb2dyb3RhdGUucnN5c2xvZworCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnaW1qb3VybmFsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAwNzU1ICR7RH0ke3N5c2NvbmZkaXJ9L3JzeXNsb2cuZAorICAgICAgICBlY2hvICckTW9kTG9hZCBpbWpvdXJuYWwnID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3JzeXNsb2cuZC9pbWpvdXJuYWwuY29uZgorICAgIGZpCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbW1qc29ucGFyc2UnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kIDA3NTUgJHtEfSR7c3lzY29uZmRpcn0vcnN5c2xvZy5kCisgICAgICAgIGVjaG8gJyRNb2RMb2FkIG1tanNvbnBhcnNlJyA+PiAke0R9JHtzeXNjb25mZGlyfS9yc3lzbG9nLmQvbW1qc29ucGFyc2UuY29uZgorICAgIGZpCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2JpbmRpcn0iCisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJzeXNsb2ciCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyIKKworQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vcnN5c2xvZy5jb25mIgorCitSQ09ORkxJQ1RTXyR7UE59ID0gImJ1c3lib3gtc3lzbG9nIHN5c2tsb2dkIHN5c2xvZy1uZyIKKworUlBST1ZJREVTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgorUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0JQTn0uc2VydmljZSIKKworUkRFUEVORFNfJHtQTn0gKz0gImxvZ3JvdGF0ZSIKKworIyBmb3IgcnN5c2xvZy1wdGVzdAorVkFMR1JJTkQgPSAidmFsZ3JpbmQiCisKKyMgdmFsZ3JpbmQgc3VwcG9ydHMgYXJtdjcgYW5kIGFib3ZlCitWQUxHUklORF9hcm12NCA9ICcnCitWQUxHUklORF9hcm12NSA9ICcnCitWQUxHUklORF9hcm12NiA9ICcnCisKKyMgWDMyIGlzbid0IHN1cHBvcnRlZCBieSB2YWxncmluZCBhdCB0aGlzIHRpbWUKK1ZBTEdSSU5EX2xpbnV4LWdudXgzMiA9ICcnCitWQUxHUklORF9saW51eC1tdXNseDMyID0gJycKKworIyBEaXNhYmxlIGZvciBzb21lIE1JUFMgdmFyaWFudHMKK1ZBTEdSSU5EX21pcHNhcmNocjYgPSAnJworVkFMR1JJTkRfbGludXgtZ251bjMyID0gJycKKworIyBEaXNhYmxlIGZvciBwb3dlcnBjNjQgd2l0aCBtdXNsCitWQUxHUklORF9saWJjLW11c2xfcG93ZXJwYzY0ID0gJycKK1ZBTEdSSU5EX2xpYmMtbXVzbF9wb3dlcnBjNjRsZSA9ICcnCisKKyMgUklTQy1WIHN1cHBvcnQgZm9yIHZhbGdyaW5kIGlzIG5vdCB0aGVyZSB5ZXQKK1ZBTEdSSU5EX3Jpc2N2NjQgPSAiIgorVkFMR1JJTkRfcmlzY3YzMiA9ICIiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJcCisgIG1ha2UgZGlmZnV0aWxzIGd6aXAgYmFzaCBnYXdrIGNvcmV1dGlscyBwcm9jcHMgXAorICBsaWJnY2MgcHl0aG9uMy1jb3JlIHB5dGhvbjMtaW8gXAorICAiCitSUkVDT01NRU5EU18ke1BOfS1wdGVzdCArPSAiJHtUQ0xJQkN9LWRiZyAke1ZBTEdSSU5EfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zaWdyb2svbGlic2lncm9rXzAuNS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NpZ3Jvay9saWJzaWdyb2tfMC41LjIuYmIKaW5kZXggMzVlNTlkNi4uZThjMzZhOCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NpZ3Jvay9saWJzaWdyb2tfMC41LjIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NpZ3Jvay9saWJzaWdyb2tfMC41LjIuYmIKQEAgLTE1LDcgKzE1LDcgQEAKIAogUEFDS0FHRUNPTkZJRyA/Pz0gInNlcmlhbHBvcnQgZnRkaSB1c2IiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIG1pbWUKIAogU1JDX1VSSSA9ICJodHRwOi8vc2lncm9rLm9yZy9kb3dubG9hZC9zb3VyY2UvbGlic2lncm9rL2xpYnNpZ3Jvay0ke1BWfS50YXIuZ3oiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zaWdyb2svc2lncm9rLWNsaV8wLjcuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zaWdyb2svc2lncm9rLWNsaV8wLjcuMS5iYgppbmRleCAyMjkzZjE0Li4zNjllMmY2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc2lncm9rL3NpZ3Jvay1jbGlfMC43LjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NpZ3Jvay9zaWdyb2stY2xpXzAuNy4xLmJiCkBAIC0xMCw3ICsxMCw3IEBACiAKIFBBQ0tBR0VDT05GSUcgPz89ICJkZWNvZGUiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIG1pbWUteGRnCiAKIFNSQ19VUkkgPSAiaHR0cDovL3NpZ3Jvay5vcmcvZG93bmxvYWQvc291cmNlL3NpZ3Jvay1jbGkvc2lncm9rLWNsaS0ke1BWfS50YXIuZ3oiCiBTUkNfVVJJW21kNXN1bV0gPSAiM2Y0NWNlNjY0YmFkNTI5ZDhiM2Y3OGE2MWIwMTdkNzUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc25hcHB5L3NuYXBweV8xLjEuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zbmFwcHkvc25hcHB5XzEuMS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjM3YzVmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zbmFwcHkvc25hcHB5XzEuMS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotIwotIyBDb3B5cmlnaHQgKEMpIDIwMTQgV2luZCBSaXZlciBTeXN0ZW1zLCBJbmMuCi0jIFJlbGVhc2VkIHVuZGVyIHRoZSBCU0QtMy1DbGF1c2UgbGljZW5zZSAoc2VlIENPUFlJTkcuQlNELTMgZm9yIHRoZSB0ZXJtcykKLSMKLVNVTU1BUlkgPSAiQSBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJTbmFwcHkgaXMgYSBmYXN0IGRhdGEgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24gbGlicmFyeSBcCi1JdCB3YXMgZGVzaWduZWQgdG8gYmUgdmVyeSBmYXN0IGFuZCBzdGFibGUsIGJ1dCBub3QgdG8gYWNoaWV2ZSBhIGhpZ2ggXAotY29tcHJlc3Npb24gcmF0aW8uIgotCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY2MmYzMDgwMzI0YTk3YjMxNTlhN2E3ZTYxODEyZDBjIgotCi1TUkNfVVJJID0gImh0dHBzOi8vc3JjLmZlZG9yYXByb2plY3Qub3JnL3JlcG8vcGtncy9zbmFwcHkvc25hcHB5LTEuMS43LnRhci5nei9zaGE1MTIvMzIwNDZmNTMyNjA2YmE1NDVhNGU0ODI1YzBjNjZhMTliZTQ0OWYyY2EyZmY3NjBhNmZhMTcwYTM2MDM3MzE0NzlhN2RlYWRiNjgzNTQ2ZTVmOGI1MDMzNDE0YzUwZjRhOWEyOWY2ZDIzYjdhNDFmMDQ3ZTU2NmU2OWVjYTdjYWYvc25hcHB5LTEuMS43LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gImVlOTA4NjI5MWM5YWU4ZGViNGRhYzVlMGI4NWJmNTRhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkZmEwMmU4NzNmZjUxYTExZWUwMmI5Y2EzOTE4MDdmMGM4ZWEwNTI5YTQ5MjRhZmE2NDVmYmY5NzE2M2Y5ZDQiCi0KLWluaGVyaXQgY21ha2UgcGtnY29uZmlnCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2x6b10gPSAiLURIQVZFX0xJQkxaTzI9MSwtREhBVkVfTElCTFpPMj0wLGx6bywiCi1UQVJHRVRfQ0ZMQUdTICs9ICItZlBJQyIKLQotRVhUUkFfT0VDTUFLRSArPSAnLURCVUlMRF9TSEFSRURfTElCUz0iT04iIFwKLSAgICAgICAgICAgICAgICAgICcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zbmFwcHkvc25hcHB5XzEuMS44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NuYXBweS9zbmFwcHlfMS4xLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDZkMWU0MQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zbmFwcHkvc25hcHB5XzEuMS44LmJiCkBAIC0wLDAgKzEsMjUgQEAKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE0IFdpbmQgUml2ZXIgU3lzdGVtcywgSW5jLgorIyBSZWxlYXNlZCB1bmRlciB0aGUgQlNELTMtQ2xhdXNlIGxpY2Vuc2UgKHNlZSBDT1BZSU5HLkJTRC0zIGZvciB0aGUgdGVybXMpCisjCitTVU1NQVJZID0gIkEgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAiU25hcHB5IGlzIGEgZmFzdCBkYXRhIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIGxpYnJhcnkgXAorSXQgd2FzIGRlc2lnbmVkIHRvIGJlIHZlcnkgZmFzdCBhbmQgc3RhYmxlLCBidXQgbm90IHRvIGFjaGlldmUgYSBoaWdoIFwKK2NvbXByZXNzaW9uIHJhdGlvLiIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mNjJmMzA4MDMyNGE5N2IzMTU5YTdhN2U2MTgxMmQwYyIKKworU1JDX1VSSSA9ICJodHRwczovL3NyYy5mZWRvcmFwcm9qZWN0Lm9yZy9yZXBvL3BrZ3Mvc25hcHB5L3NuYXBweS0xLjEuOC50YXIuZ3ovc2hhNTEyL2VmZTE4ZmYxYjNlZGRhMWI0YjZjZWZjYmM2ZGE4MTE5YzA1ZDYzYWZkYmY3YTc4NGYzNDkwMzUzYzc0ZGNlZDc2YmFlZDdiNWYxYWEzNGI5OTg5OTcyOTE5MmI5ZDY1N2MzM2M3NmRlNGI1MDdhNTE1NTNmYTgwMDFhZTc1YzFjL3NuYXBweS0xLjEuOC50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3MGU0OGNiYTdmZWNmMjg5MTUzZDAwOTc5MWM5OTc3ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxNmI2NzdmMDc4MzJhNjEyYjA4MzYxNzhkYjdmMzc0ZTQxNGY5NDY1N2MxMzhlNjk5M2NiZmM1ZGNjNTg2NTFmIgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tsem9dID0gIi1ESEFWRV9MSUJMWk8yPTEsLURIQVZFX0xJQkxaTzI9MCxsem8sIgorVEFSR0VUX0NGTEFHUyArPSAiLWZQSUMiCisKK0VYVFJBX09FQ01BS0UgKz0gJy1EQlVJTERfU0hBUkVEX0xJQlM9Ik9OIiBcCisgICAgICAgICAgICAgICAgICAnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc29ja2V0Y2FuL2Nhbi11dGlscy8wMDAxLWZpeC1pbmNsdWRlLXRvLWZpbmQtU0lPQ0dTVEFNUC13aXRoLWxhdGVzdC1rZXJuZWwucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc29ja2V0Y2FuL2Nhbi11dGlscy8wMDAxLWZpeC1pbmNsdWRlLXRvLWZpbmQtU0lPQ0dTVEFNUC13aXRoLWxhdGVzdC1rZXJuZWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiZjNhZWUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NvY2tldGNhbi9jYW4tdXRpbHMvMDAwMS1maXgtaW5jbHVkZS10by1maW5kLVNJT0NHU1RBTVAtd2l0aC1sYXRlc3Qta2VybmVsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLUZyb20gMjA5ODFjOGEzMjg3NDdmODIzYjdlZWY2OGQwYzI4MTJiM2VhZWQzMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZhYnJpY2UgRm9udGFpbmUgPGZvbnRhaW5lLmZhYnJpY2VAZ21haWwuY29tPgotRGF0ZTogU3VuLCAxNCBKdWwgMjAxOSAyMTo1MDo0MyArMDIwMAotU3ViamVjdDogW1BBVENIXSBmaXggaW5jbHVkZSB0byBmaW5kIFNJT0NHU1RBTVAgd2l0aCBsYXRlc3Qga2VybmVsCi0KLUluIGxpbnV4IGtlcm5lbCBjb21taXQgMDc2OGUxNzA3M2RjNTI3Y2NkMThlZDVmOTZjZTg1Zjk5ODVlOTExNQotdGhlIGFzbS1nZW5lcmljL3NvY2tpb3MuaCBoZWFkZXIgbm8gbG9uZ2VyIGRlZmluZXMgU0lPQ0dTVEFNUC4KLUluc3RlYWQgaXQgcHJvdmlkZXMgb25seSBTSU9DR1NUQU1QX09MRC4KLQotVGhlIGxpbnV4L3NvY2tpb3MuaCBoZWFkZXIgbm93IGRlZmluZXMgU0lPQ0dTVEFNUCB1c2luZyBlaXRoZXIKLVNJT0NHU1RBTVBfT0xEIG9yIFNJT0NHU1RBTVBfTkVXIGFzIGFwcHJvcHJpYXRlLiBUaGlzIGxpbnV4IG9ubHkKLWhlYWRlciBmaWxlIGlzIG5vdCBwdWxsZWQgc28gd2UgZ2V0IGEgYnVpbGQgZmFpbHVyZS4KLQotY2FubG9nc2VydmVyLmM6IEluIGZ1bmN0aW9uICdtYWluJzoKLWNhbmxvZ3NlcnZlci5jOjQwNDoyMTogZXJyb3I6ICdTSU9DR1NUQU1QJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiAnU0lPQ0dSQVJQJz8KLSAgICAgaWYgKGlvY3RsKHNbaV0sIFNJT0NHU1RBTVAsICZ0dikgPCAwKQotICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fgotICAgICAgICAgICAgICAgICAgICAgU0lPQ0dSQVJQCi1jYW5sb2dzZXJ2ZXIuYzo0MDQ6MjE6IG5vdGU6IGVhY2ggdW5kZWNsYXJlZCBpZGVudGlmaWVyIGlzIHJlcG9ydGVkIG9ubHkgb25jZSBmb3IgZWFjaCBmdW5jdGlvbiBpdCBhcHBlYXJzIGluCi0KLUZpeGVzOgotIC0gaHR0cDovL2F1dG9idWlsZC5idWlsZHJvb3Qub3JnL3Jlc3VsdHMvMzYzZGU3ZDliZjQzM2JlOGJjNDdiYTRlZTUyYWUwYmI4MGZhOTAyMQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGludXgtY2FuL2Nhbi11dGlscy9jb21taXQvZTk1OTBiMWNhNzVkMzYwZWFmMzIxMWJlYmQ4NjA1ODIxNGQ0ODA2NF0KLVNpZ25lZC1vZmYtYnk6IEZhYnJpY2UgRm9udGFpbmUgPGZvbnRhaW5lLmZhYnJpY2VAZ21haWwuY29tPgotLS0tCi0gY2FubG9nc2VydmVyLmMgfCAxICsKLSBjYW5zbmlmZmVyLmMgICB8IDEgKwotIGlzb3RwZHVtcC5jICAgIHwgMSArCi0gaXNvdHBwZXJmLmMgICAgfCAxICsKLSBpc290cHNuaWZmZXIuYyB8IDEgKwotIHNsY2FucHR5LmMgICAgIHwgMSArCi0gNiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2NhbmxvZ3NlcnZlci5jIGIvY2FubG9nc2VydmVyLmMKLWluZGV4IGUzMzUwYjcuLmY1MzE2NWMgMTAwNjQ0Ci0tLS0gYS9jYW5sb2dzZXJ2ZXIuYwotKysrIGIvY2FubG9nc2VydmVyLmMKLUBAIC02MSw2ICs2MSw3IEBACi0gCi0gI2luY2x1ZGUgPGxpbnV4L2Nhbi5oPgotICNpbmNsdWRlIDxsaW51eC9jYW4vcmF3Lmg+Ci0rI2luY2x1ZGUgPGxpbnV4L3NvY2tpb3MuaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gCi1kaWZmIC0tZ2l0IGEvY2Fuc25pZmZlci5jIGIvY2Fuc25pZmZlci5jCi1pbmRleCA3YjBhM2ZhLi5iZjdkNzJlIDEwMDY0NAotLS0tIGEvY2Fuc25pZmZlci5jCi0rKysgYi9jYW5zbmlmZmVyLmMKLUBAIC02MSw2ICs2MSw3IEBACi0gCi0gI2luY2x1ZGUgPGxpbnV4L2Nhbi5oPgotICNpbmNsdWRlIDxsaW51eC9jYW4vYmNtLmg+Ci0rI2luY2x1ZGUgPGxpbnV4L3NvY2tpb3MuaD4KLSAKLSAjaW5jbHVkZSAidGVybWluYWwuaCIKLSAKLWRpZmYgLS1naXQgYS9pc290cGR1bXAuYyBiL2lzb3RwZHVtcC5jCi1pbmRleCBiMmI2NTBhLi4zNmQ4YWYzIDEwMDY0NAotLS0tIGEvaXNvdHBkdW1wLmMKLSsrKyBiL2lzb3RwZHVtcC5jCi1AQCAtNTUsNiArNTUsNyBAQAotIAotICNpbmNsdWRlIDxsaW51eC9jYW4uaD4KLSAjaW5jbHVkZSA8bGludXgvY2FuL3Jhdy5oPgotKyNpbmNsdWRlIDxsaW51eC9zb2NraW9zLmg+Ci0gI2luY2x1ZGUgInRlcm1pbmFsLmgiCi0gCi0gI2RlZmluZSBOT19DQU5fSUQgMHhGRkZGRkZGRlUKLWRpZmYgLS1naXQgYS9pc290cHBlcmYuYyBiL2lzb3RwcGVyZi5jCi1pbmRleCBkYjNhMmI3Li41ODUyYTU3IDEwMDY0NAotLS0tIGEvaXNvdHBwZXJmLmMKLSsrKyBiL2lzb3RwcGVyZi5jCi1AQCAtNTYsNiArNTYsNyBAQAotIAotICNpbmNsdWRlIDxsaW51eC9jYW4uaD4KLSAjaW5jbHVkZSA8bGludXgvY2FuL3Jhdy5oPgotKyNpbmNsdWRlIDxsaW51eC9zb2NraW9zLmg+Ci0gCi0gI2RlZmluZSBOT19DQU5fSUQgMHhGRkZGRkZGRlUKLSAjZGVmaW5lIFBFUkNFTlRSRVMgMiAvKiByZXNvbHV0aW9uIGluIHBlcmNlbnQgZm9yIGJhcmdyYXBoICovCi1kaWZmIC0tZ2l0IGEvaXNvdHBzbmlmZmVyLmMgYi9pc290cHNuaWZmZXIuYwotaW5kZXggZjQyZTE4Yi4uZDdhNGM2NiAxMDA2NDQKLS0tLSBhL2lzb3Rwc25pZmZlci5jCi0rKysgYi9pc290cHNuaWZmZXIuYwotQEAgLTU1LDYgKzU1LDcgQEAKLSAKLSAjaW5jbHVkZSA8bGludXgvY2FuLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2Nhbi9pc290cC5oPgotKyNpbmNsdWRlIDxsaW51eC9zb2NraW9zLmg+Ci0gI2luY2x1ZGUgInRlcm1pbmFsLmgiCi0gCi0gI2RlZmluZSBOT19DQU5fSUQgMHhGRkZGRkZGRlUKLWRpZmYgLS1naXQgYS9zbGNhbnB0eS5jIGIvc2xjYW5wdHkuYwotaW5kZXggNDMxY2E2OC4uN2RmYWY1YyAxMDA2NDQKLS0tLSBhL3NsY2FucHR5LmMKLSsrKyBiL3NsY2FucHR5LmMKLUBAIC00MCw2ICs0MCw3IEBACi0gCi0gI2luY2x1ZGUgPGxpbnV4L2Nhbi5oPgotICNpbmNsdWRlIDxsaW51eC9jYW4vcmF3Lmg+Ci0rI2luY2x1ZGUgPGxpbnV4L3NvY2tpb3MuaD4KLSAKLSAvKiBtYXhpbXVtIHJ4IGJ1ZmZlciBsZW46IGV4dGVuZGVkIENBTiBmcmFtZSB3aXRoIHRpbWVzdGFtcCAqLwotICNkZWZpbmUgU0xDX01UVSAoc2l6ZW9mKCJUMTExMTIyMjI4MTEyMjMzNDQ1NTY2Nzc4OEVBNUZcciIpKzEpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc29ja2V0Y2FuL2Nhbi11dGlsc19naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc29ja2V0Y2FuL2Nhbi11dGlsc19naXQuYmIKaW5kZXggZGI1MDU1Zi4uNTE5MzY4OCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3NvY2tldGNhbi9jYW4tdXRpbHNfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zb2NrZXRjYW4vY2FuLXV0aWxzX2dpdC5iYgpAQCAtMSwxOCArMSwxNSBAQAogU1VNTUFSWSA9ICJMaW51eCBDQU4gbmV0d29yayBkZXZlbG9wbWVudCB1dGlsaXRpZXMiCi1ERVNDUklQVElPTiA9ICJMaW51eCBDQU4gbmV0d29yayBkZXZlbG9wbWVudCIKIExJQ0VOU0UgPSAiR1BMdjIgJiBCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9pbmNsdWRlL2xpbnV4L2Nhbi5oO2VuZGxpbmU9NDM7bWQ1PTM5MGEyYzlhM2M1ZTM1OTVhMDY5YWMxNDM2NTUzZWU3IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vaW5jbHVkZS9saW51eC9jYW4uaDtlbmRsaW5lPTQ0O21kNT1hOWUxMTY5YzZjOWExMTRhNjEzMjllOTlmODZmZGQzMSIKIAogREVQRU5EUyA9ICJsaWJzb2NrZXRjYW4iCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC1jYW4vJHtCUE59LmdpdDtwcm90b2NvbD1naXQ7YnJhbmNoPW1hc3RlciBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1pbmNsdWRlLXRvLWZpbmQtU0lPQ0dTVEFNUC13aXRoLWxhdGVzdC1rZXJuZWwucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNSRVYgPSAiNGM4ZmIwNWNiNGQ2ZGRjZDY3Mjk5MDA4ZGI1NGFmNDIzZjg2ZmQwNSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC1jYW4vJHtCUE59LmdpdDtwcm90b2NvbD1naXQiCiAKLVBWID0gIjAuMCtnaXRyJHtTUkNQVn0iCitTUkNSRVYgPSAiZGE2NWZkZmUwZDE5ODY2MjVlZTAwYWYwYjU2YWUxN2VjMTMyZTcwMCIKKworUFYgPSAiMjAyMC4wMi4wNCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zeXNkaWcvc3lzZGlnLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1iYWNrdHJhY2UtQVBJcy1hcmUtZ2xpYmMtc3BlY2lmaS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zeXNkaWcvc3lzZGlnLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1iYWNrdHJhY2UtQVBJcy1hcmUtZ2xpYmMtc3BlY2lmaS5wYXRjaAppbmRleCA3ZDNmOGExLi5jYjgwNjExIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc3lzZGlnL3N5c2RpZy8wMDAxLUZpeC1idWlsZC13aXRoLW11c2wtYmFja3RyYWNlLUFQSXMtYXJlLWdsaWJjLXNwZWNpZmkucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3N5c2RpZy9zeXNkaWcvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLWJhY2t0cmFjZS1BUElzLWFyZS1nbGliYy1zcGVjaWZpLnBhdGNoCkBAIC05LDQyICs5LDQxIEBACiAgdXNlcnNwYWNlL2xpYnNpbnNwL3V0aWxzLmggICB8IDIgKy0KICAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAotZGlmZiAtLWdpdCBhL3VzZXJzcGFjZS9saWJzaW5zcC91dGlscy5jcHAgYi91c2Vyc3BhY2UvbGlic2luc3AvdXRpbHMuY3BwCi1pbmRleCA4ZjIzZjljLi5jNDk2YTU3IDEwMDY0NAogLS0tIGEvdXNlcnNwYWNlL2xpYnNpbnNwL3V0aWxzLmNwcAogKysrIGIvdXNlcnNwYWNlL2xpYnNpbnNwL3V0aWxzLmNwcAotQEAgLTIxLDcgKzIxLDkgQEAgYWxvbmcgd2l0aCBzeXNkaWcuICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCitAQCAtMjIsNyArMjIsNyBAQCBsaW1pdGF0aW9ucyB1bmRlciB0aGUgTGljZW5zZS4KICAjaW5jbHVkZSA8bGltaXRzLmg+CiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogICNpbmNsdWRlIDxzeXMvdGltZS5oPgotKyNpZmRlZiBfX0dMSUJDX18KKy0jaWZuZGVmIENZR1dJTkdfQUdFTlQKKysjaWYgIWRlZmluZWQoQ1lHV0lOR19BR0VOVCkgfHwgZGVmaW5lZChfX0dMSUJDX18pCiAgI2luY2x1ZGUgPGV4ZWNpbmZvLmg+Ci0rI2VuZGlmCisgI2VuZGlmCiAgI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDxzeXMvdGltZS5oPgotICNpbmNsdWRlIDxuZXRkYi5oPgotQEAgLTc0MSw3ICs3NDMsNyBAQCB1aW50NjRfdCBzaW5zcF91dGlsczo6Z2V0X2N1cnJlbnRfdGltZV9ucygpCi0gICAgIHJldHVybiB0di50dl9zZWMgKiAodWludDY0X3QpIDEwMDAwMDAwMDAgKyB0di50dl91c2VjICogMTAwMDsKLSB9CitAQCAtNzgwLDYgKzc4MCw3IEBAIGJvb2wgc2luc3BfdXRpbHM6Omdsb2JfbWF0Y2goY29uc3QgY2hhcgogIAotLSNpZm5kZWYgX1dJTjMyCi0rI2lmIGRlZmluZWQoX1dJTjMyKSAmJiBkZWZpbmVkKF9fR0xJQkNfXykKKyAjaWZuZGVmIENZR1dJTkdfQUdFTlQKKyAjaWZuZGVmIF9XSU4zMgorKyNpZmRlZiBfX0dMSUJDX18KICB2b2lkIHNpbnNwX3V0aWxzOjpidCh2b2lkKQogIHsKICAJc3RhdGljIGNvbnN0IGNoYXIgc3RhcnRbXSA9ICJCQUNLVFJBQ0UgLS0tLS0tLS0tLS0tIjsKLWRpZmYgLS1naXQgYS91c2Vyc3BhY2UvbGlic2luc3AvdXRpbHMuaCBiL3VzZXJzcGFjZS9saWJzaW5zcC91dGlscy5oCi1pbmRleCA2MDBkMDBiLi40YWI0NjUwIDEwMDY0NAorQEAgLTgwMSw2ICs4MDIsNyBAQCB2b2lkIHNpbnNwX3V0aWxzOjpidCh2b2lkKQorIAorIAlmcmVlKGJ0X3N5bXMpOworIH0KKysjZW5kaWYgLy8gR2xpYmMKKyAjZW5kaWYgLy8gX1dJTjMyCisgI2VuZGlmIC8vIENZR1dJTkdfQUdFTlQKKyAKIC0tLSBhL3VzZXJzcGFjZS9saWJzaW5zcC91dGlscy5oCiArKysgYi91c2Vyc3BhY2UvbGlic2luc3AvdXRpbHMuaAotQEAgLTc5LDcgKzc5LDcgQEAgcHVibGljOgorQEAgLTEwNCw3ICsxMDQsNyBAQCBwdWJsaWM6CiAgCi0gCXN0YXRpYyB1aW50NjRfdCBnZXRfY3VycmVudF90aW1lX25zKCk7CisgCXN0YXRpYyBib29sIGdsb2JfbWF0Y2goY29uc3QgY2hhciAqcGF0dGVybiwgY29uc3QgY2hhciAqc3RyaW5nKTsKICAKIC0jaWZuZGVmIF9XSU4zMgogKyNpZiBub3QgZGVmaW5lZChfV0lOMzIpICYmIGRlZmluZWQoX19HTElCQ19fKQogIAkvLwogIAkvLyBQcmludCB0aGUgY2FsbCBzdGFjawogIAkvLwotLS0gCi0yLjYuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc3lzZGlnL3N5c2RpZy8wMDAxLWZpeC1idWlsZC13aXRoLUx1YUpJVC0yLjEtYmV0YXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc3lzZGlnL3N5c2RpZy8wMDAxLWZpeC1idWlsZC13aXRoLUx1YUpJVC0yLjEtYmV0YXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzFiMGI4YwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zeXNkaWcvc3lzZGlnLzAwMDEtZml4LWJ1aWxkLXdpdGgtTHVhSklULTIuMS1iZXRhcy5wYXRjaApAQCAtMCwwICsxLDk2IEBACitGcm9tIGFlODJkZTY2NGE2YmE2YWIyNjU0YWRmOWJlZDgxZjIyYjZmZGMxOWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFdmdlbmkgR29sb3YgPGV2Z2VuaUBnb2xvdi5kZT4KK0RhdGU6IFN1biwgMjcgQXVnIDIwMTcgMTM6NTE6MTkgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGJ1aWxkIHdpdGggTHVhSklUIDIuMSBiZXRhcworCitMdWFKSVQgMi4xIGRyb3BzIHNvbWUgY29tcGF0IHN5bWJvbHMgWzFdLiBBbmQgd2hpbGUgSSB0aGluayB0aGF0IHRoaXMgaXMKK3dyb25nLCBhcyBpdCBicmVha3MgY29tcGF0aWJpbGl0eSB3aXRoIEx1YSA1LjEgWzJdLCBpdCBpcyBxdWl0ZSBlYXN5IHRvCithZG9wdCB0aGUgY29kZSB0byB3b3JrIHdpdGggYm90aCB2ZXJzaW9ucyAoMi4wIGFuZCAyLjEpIG9mIEx1YUpJVCBhbmQKK3JlbWFpbiBMdWEgNS4xIGNvbXBhdGlibGUuCisKK1sxXSBodHRwczovL2dpdGh1Yi5jb20vTHVhSklUL0x1YUpJVC9jb21taXQvZGMzMjBjYTcwZjJjNWJiMzk3N2I4Mjg1M2JjZWU2ZGFkMjUyM2QwMQorWzJdIGh0dHBzOi8vZ2l0aHViLmNvbS9MdWFKSVQvTHVhSklUL2lzc3Vlcy8zMjUKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9MdWFKSVQvTHVhSklUL2lzc3Vlcy8zMjVdCitTaWduZWQtb2ZmLWJ5OiBFdmdlbmkgR29sb3YgPGV2Z2VuaUBnb2xvdi5kZT4KK3N5c2RpZy1DTEEtMS4wLXNpZ25lZC1vZmYtYnk6IEV2Z2VuaSBHb2xvdiA8ZXZnZW5pQGdvbG92LmRlPgorLS0tCisgQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB1c2Vyc3BhY2UvbGlic2luc3AvY2hpc2VsLmNwcCAgICAgICAgIHwgNiArKystLS0KKyB1c2Vyc3BhY2UvbGlic2luc3AvbHVhX3BhcnNlci5jcHAgICAgIHwgMiArLQorIHVzZXJzcGFjZS9saWJzaW5zcC9sdWFfcGFyc2VyX2FwaS5jcHAgfCAyICstCisgNCBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCBkNzAyMDQ5My4uMzNlNTI0ZjUgMTAwNjQ0CistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0xNDAsNyArMTQwLDcgQEAgb3B0aW9uKFVTRV9CVU5ETEVEX0RFUFMgIkVuYWJsZSBidW5kbGVkIGRlcGVuZGVuY2llcyBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBzeXN0ZW0KKyBvcHRpb24oVVNFX0JVTkRMRURfTFVBSklUICJFbmFibGUgYnVpbGRpbmcgb2YgdGhlIGJ1bmRsZWQgTHVhSklUIiAke1VTRV9CVU5ETEVEX0RFUFN9KQorIAorIGlmKE5PVCBVU0VfQlVORExFRF9MVUFKSVQpCistCWZpbmRfcGF0aChMVUFKSVRfSU5DTFVERSBsdWFqaXQuaCBQQVRIX1NVRkZJWEVTIGx1YWppdC0yLjAgbHVhaml0KQorKwlmaW5kX3BhdGgoTFVBSklUX0lOQ0xVREUgbHVhaml0LmggUEFUSF9TVUZGSVhFUyBsdWFqaXQtMi4xIGx1YWppdC0yLjAgbHVhaml0KQorIAlmaW5kX2xpYnJhcnkoTFVBSklUX0xJQiBOQU1FUyBsdWFqaXQgbHVhaml0LTUuMSkKKyAJaWYoTFVBSklUX0lOQ0xVREUgQU5EIExVQUpJVF9MSUIpCisgCQltZXNzYWdlKFNUQVRVUyAiRm91bmQgTHVhSklUOiBpbmNsdWRlOiAke0xVQUpJVF9JTkNMVURFfSwgbGliOiAke0xVQUpJVF9MSUJ9IikKK2RpZmYgLS1naXQgYS91c2Vyc3BhY2UvbGlic2luc3AvY2hpc2VsLmNwcCBiL3VzZXJzcGFjZS9saWJzaW5zcC9jaGlzZWwuY3BwCitpbmRleCAwYTZlM2NmOC4uMGMyZTI1NWEgMTAwNjQ0CistLS0gYS91c2Vyc3BhY2UvbGlic2luc3AvY2hpc2VsLmNwcAorKysrIGIvdXNlcnNwYWNlL2xpYnNpbnNwL2NoaXNlbC5jcHAKK0BAIC05OCw3ICs5OCw3IEBAIHZvaWQgbHVhX3N0YWNrZHVtcChsdWFfU3RhdGUgKkwpCisgLy8gTHVhIGNhbGxiYWNrcworIC8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8KKyAjaWZkZWYgSEFTX0xVQV9DSElTRUxTCistY29uc3Qgc3RhdGljIHN0cnVjdCBsdWFMX3JlZyBsbF9zeXNkaWcgW10gPQorK2NvbnN0IHN0YXRpYyBzdHJ1Y3QgbHVhTF9SZWcgbGxfc3lzZGlnIFtdID0KKyB7CisgCXsic2V0X2ZpbHRlciIsICZsdWFfY2JhY2tzOjpzZXRfZ2xvYmFsX2ZpbHRlcn0sCisgCXsic2V0X3NuYXBsZW4iLCAmbHVhX2NiYWNrczo6c2V0X3NuYXBsZW59LAorQEAgLTEzNCw3ICsxMzQsNyBAQCBjb25zdCBzdGF0aWMgc3RydWN0IGx1YUxfcmVnIGxsX3N5c2RpZyBbXSA9CisgCXtOVUxMLE5VTEx9CisgfTsKKyAKKy1jb25zdCBzdGF0aWMgc3RydWN0IGx1YUxfcmVnIGxsX2NoaXNlbCBbXSA9CisrY29uc3Qgc3RhdGljIHN0cnVjdCBsdWFMX1JlZyBsbF9jaGlzZWwgW10gPQorIHsKKyAJeyJyZXF1ZXN0X2ZpZWxkIiwgJmx1YV9jYmFja3M6OnJlcXVlc3RfZmllbGR9LAorIAl7InNldF9maWx0ZXIiLCAmbHVhX2NiYWNrczo6c2V0X2ZpbHRlcn0sCitAQCAtMTQ2LDcgKzE0Niw3IEBAIGNvbnN0IHN0YXRpYyBzdHJ1Y3QgbHVhTF9yZWcgbGxfY2hpc2VsIFtdID0KKyAJe05VTEwsTlVMTH0KKyB9OworIAorLWNvbnN0IHN0YXRpYyBzdHJ1Y3QgbHVhTF9yZWcgbGxfZXZ0IFtdID0KKytjb25zdCBzdGF0aWMgc3RydWN0IGx1YUxfUmVnIGxsX2V2dCBbXSA9CisgeworIAl7ImZpZWxkIiwgJmx1YV9jYmFja3M6OmZpZWxkfSwKKyAJeyJnZXRfbnVtIiwgJmx1YV9jYmFja3M6OmdldF9udW19LAorZGlmZiAtLWdpdCBhL3VzZXJzcGFjZS9saWJzaW5zcC9sdWFfcGFyc2VyLmNwcCBiL3VzZXJzcGFjZS9saWJzaW5zcC9sdWFfcGFyc2VyLmNwcAoraW5kZXggMGUyNjYxN2QuLjc4ODEwZDk2IDEwMDY0NAorLS0tIGEvdXNlcnNwYWNlL2xpYnNpbnNwL2x1YV9wYXJzZXIuY3BwCisrKysgYi91c2Vyc3BhY2UvbGlic2luc3AvbHVhX3BhcnNlci5jcHAKK0BAIC0zMiw3ICszMiw3IEBAIGV4dGVybiAiQyIgeworICNpbmNsdWRlICJsYXV4bGliLmgiCisgfQorIAorLWNvbnN0IHN0YXRpYyBzdHJ1Y3QgbHVhTF9yZWcgbGxfZmlsdGVyIFtdID0KKytjb25zdCBzdGF0aWMgc3RydWN0IGx1YUxfUmVnIGxsX2ZpbHRlciBbXSA9CisgeworIAl7InJlbF9leHByIiwgJmx1YV9wYXJzZXJfY2JhY2tzOjpyZWxfZXhwcn0sCisgCXsiYm9vbF9vcCIsICZsdWFfcGFyc2VyX2NiYWNrczo6Ym9vbF9vcH0sCitkaWZmIC0tZ2l0IGEvdXNlcnNwYWNlL2xpYnNpbnNwL2x1YV9wYXJzZXJfYXBpLmNwcCBiL3VzZXJzcGFjZS9saWJzaW5zcC9sdWFfcGFyc2VyX2FwaS5jcHAKK2luZGV4IGM4OWU5MTI2Li5lMDE2OWZlMSAxMDA2NDQKKy0tLSBhL3VzZXJzcGFjZS9saWJzaW5zcC9sdWFfcGFyc2VyX2FwaS5jcHAKKysrKyBiL3VzZXJzcGFjZS9saWJzaW5zcC9sdWFfcGFyc2VyX2FwaS5jcHAKK0BAIC0yNjYsNyArMjY2LDcgQEAgaW50IGx1YV9wYXJzZXJfY2JhY2tzOjpyZWxfZXhwcihsdWFfU3RhdGUgKmxzKQorIAkJCQkJc3RyaW5nIGVyciA9ICJHb3Qgbm9uLXRhYmxlIGFzIGluLWV4cHJlc3Npb24gb3BlcmFuZFxuIjsKKyAJCQkJCXRocm93IHNpbnNwX2V4Y2VwdGlvbigicGFyc2VyIEFQSSBlcnJvciIpOworIAkJCQl9CistCQkJCWludCBuID0gbHVhTF9nZXRuKGxzLCA0KTsgIC8qIGdldCBzaXplIG9mIHRhYmxlICovCisrCQkJCWludCBuID0gKGludClsdWFfb2JqbGVuKGxzLCA0KTsgIC8qIGdldCBzaXplIG9mIHRhYmxlICovCisgCQkJCWZvciAoaT0xOyBpPD1uOyBpKyspCisgCQkJCXsKKyAJCQkJCWx1YV9yYXdnZXRpKGxzLCA0LCBpKTsKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zeXNkaWcvc3lzZGlnLzAwMDEtbGlic2luc3AtUG9ydC10by1idWlsZC13aXRoLWx1YS01LjIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc3lzZGlnL3N5c2RpZy8wMDAxLWxpYnNpbnNwLVBvcnQtdG8tYnVpbGQtd2l0aC1sdWEtNS4yLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmVjMGNhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zeXNkaWcvc3lzZGlnLzAwMDEtbGlic2luc3AtUG9ydC10by1idWlsZC13aXRoLWx1YS01LjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotRnJvbSBjMjc4MmE2Y2E5NjgxOTBlMjIxYzI1YjA4OTA2MDBiYThjZDQzNzk4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjMgT2N0IDIwMTUgMDA6MjM6MTUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gbGlic2luc3A6IFBvcnQgdG8gYnVpbGQgd2l0aCBsdWEgPj0gNS4yCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSB1c2Vyc3BhY2UvbGlic2luc3AvY2hpc2VsLmNwcCB8IDQwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS91c2Vyc3BhY2UvbGlic2luc3AvY2hpc2VsLmNwcCBiL3VzZXJzcGFjZS9saWJzaW5zcC9jaGlzZWwuY3BwCi1pbmRleCAzY2ZiZDhkLi4yZGI5MzQ4IDEwMDY0NAotLS0tIGEvdXNlcnNwYWNlL2xpYnNpbnNwL2NoaXNlbC5jcHAKLSsrKyBiL3VzZXJzcGFjZS9saWJzaW5zcC9jaGlzZWwuY3BwCi1AQCAtOTQsNyArOTQsNyBAQCB2b2lkIGx1YV9zdGFja2R1bXAobHVhX1N0YXRlICpMKQotIC8vIEx1YSBjYWxsYmFja3MKLSAvLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vLy8vCi0gI2lmZGVmIEhBU19MVUFfQ0hJU0VMUwotLWNvbnN0IHN0YXRpYyBzdHJ1Y3QgbHVhTF9yZWcgbGxfc3lzZGlnIFtdID0gCi0rY29uc3Qgc3RhdGljIHN0cnVjdCBsdWFMX1JlZyBsbF9zeXNkaWcgW10gPQotIHsKLSAJeyJzZXRfZmlsdGVyIiwgJmx1YV9jYmFja3M6OnNldF9nbG9iYWxfZmlsdGVyfSwKLSAJeyJzZXRfc25hcGxlbiIsICZsdWFfY2JhY2tzOjpzZXRfc25hcGxlbn0sCi1AQCAtMTIwLDcgKzEyMCw3IEBAIGNvbnN0IHN0YXRpYyBzdHJ1Y3QgbHVhTF9yZWcgbGxfc3lzZGlnIFtdID0KLSAJe05VTEwsTlVMTH0KLSB9OwotIAotLWNvbnN0IHN0YXRpYyBzdHJ1Y3QgbHVhTF9yZWcgbGxfY2hpc2VsIFtdID0gCi0rY29uc3Qgc3RhdGljIHN0cnVjdCBsdWFMX1JlZyBsbF9jaGlzZWwgW10gPQotIHsKLSAJeyJyZXF1ZXN0X2ZpZWxkIiwgJmx1YV9jYmFja3M6OnJlcXVlc3RfZmllbGR9LAotIAl7InNldF9maWx0ZXIiLCAmbHVhX2NiYWNrczo6c2V0X2ZpbHRlcn0sCi1AQCAtMTMxLDcgKzEzMSw3IEBAIGNvbnN0IHN0YXRpYyBzdHJ1Y3QgbHVhTF9yZWcgbGxfY2hpc2VsIFtdID0KLSAJe05VTEwsTlVMTH0KLSB9OwotIAotLWNvbnN0IHN0YXRpYyBzdHJ1Y3QgbHVhTF9yZWcgbGxfZXZ0IFtdID0gCi0rY29uc3Qgc3RhdGljIHN0cnVjdCBsdWFMX1JlZyBsbF9ldnQgW10gPQotIHsKLSAJeyJmaWVsZCIsICZsdWFfY2JhY2tzOjpmaWVsZH0sCi0gCXsiZ2V0X251bSIsICZsdWFfY2JhY2tzOjpnZXRfbnVtfSwKLUBAIC04NTMsMTAgKzg1MywyOCBAQCBib29sIHNpbnNwX2NoaXNlbDo6cGFyc2Vfdmlld19pbmZvKGx1YV9TdGF0ZSAqbHMsIE9VVCBjaGlzZWxfZGVzYyogY2QpCi0gCi0gCi0gI2lmZGVmIEhBU19MVUFfQ0hJU0VMUwotK3N0YXRpYyB2b2lkIGNoaXNlbF9sdWFfcmVnaXN0ZXJsaWIobHVhX1N0YXRlICpMLCBjb25zdCBjaGFyICpsaWJuYW1lLAotKwkJCQljb25zdCBsdWFMX1JlZyAqbCwgaW50IGluZCkKLSt7Ci0rI2lmIExVQV9WRVJTSU9OX05VTSA+PSA1MDIKLSsJaWYgKGxpYm5hbWUpCi0rCXsKLSsJCWx1YV9uZXd0YWJsZShMKTsKLSsJCWx1YUxfc2V0ZnVuY3MoTCwgbCwgaW5kKTsKLSsJCWx1YV9wdXNodmFsdWUoTCwgLTEpOwotKwkJbHVhX3NldGdsb2JhbChMLCBsaWJuYW1lKTsKLSsJfQotKwllbHNlCi0rCQlsdWFMX3NldGZ1bmNzKEwsIGwsIGluZCk7Ci0rI2Vsc2UKLSsJbHVhTF9yZWdpc3RlcihMLCBsaWJuYW1lLCBsKTsKLSsjZW5kaWYKLSt9Ci0rCi0gLy8gSW5pdGlhbGl6ZXMgYSBsdWEgY2hpc2VsCi0gYm9vbCBzaW5zcF9jaGlzZWw6OmluaXRfbHVhX2NoaXNlbChjaGlzZWxfZGVzYyAmY2QsIHN0cmluZyBjb25zdCAmZnBhdGgpCi0gewotLQlsdWFfU3RhdGUqIGxzID0gbHVhX29wZW4oKTsKLSsJbHVhX1N0YXRlKiBscyA9IGx1YUxfbmV3c3RhdGUoKTsKLSAJaWYobHMgPT0gTlVMTCkKLSAJewotIAkJcmV0dXJuIGZhbHNlOwotQEAgLTg2Nyw5ICs4ODUsOSBAQCBib29sIHNpbnNwX2NoaXNlbDo6aW5pdF9sdWFfY2hpc2VsKGNoaXNlbF9kZXNjICZjZCwgc3RyaW5nIGNvbnN0ICZmcGF0aCkKLSAJLy8KLSAJLy8gTG9hZCBvdXIgb3duIGx1YSBsaWJzCi0gCS8vCi0tCWx1YUxfb3BlbmxpYihscywgInN5c2RpZyIsIGxsX3N5c2RpZywgMCk7Ci0tCWx1YUxfb3BlbmxpYihscywgImNoaXNlbCIsIGxsX2NoaXNlbCwgMCk7Ci0tCWx1YUxfb3BlbmxpYihscywgImV2dCIsIGxsX2V2dCwgMCk7Ci0rCWNoaXNlbF9sdWFfcmVnaXN0ZXJsaWIobHMsICJzeXNkaWciLCBsbF9zeXNkaWcsIDApOwotKwljaGlzZWxfbHVhX3JlZ2lzdGVybGliKGxzLCAiY2hpc2VsIiwgbGxfY2hpc2VsLCAwKTsKLSsJY2hpc2VsX2x1YV9yZWdpc3RlcmxpYihscywgImV2dCIsIGxsX2V2dCwgMCk7Ci0gCi0gCS8vCi0gCS8vIEFkZCBvdXIgY2hpc2VsIHBhdGhzIHRvIHBhY2thZ2UucGF0aAotQEAgLTExMTEsMTYgKzExMjksMTYgQEAgdm9pZCBzaW5zcF9jaGlzZWw6OmxvYWQoc3RyaW5nIGNtZHN0cikKLSAJLy8KLSAJLy8gT3BlbiB0aGUgc2NyaXB0Ci0gCS8vCi0tCW1fbHMgPSBsdWFfb3BlbigpOwotKwltX2xzID0gbHVhTF9uZXdzdGF0ZSgpOwotICAKLSAJbHVhTF9vcGVubGlicyhtX2xzKTsKLSAKLSAJLy8KLSAJLy8gTG9hZCBvdXIgb3duIGx1YSBsaWJzCi0gCS8vCi0tCWx1YUxfb3BlbmxpYihtX2xzLCAic3lzZGlnIiwgbGxfc3lzZGlnLCAwKTsKLS0JbHVhTF9vcGVubGliKG1fbHMsICJjaGlzZWwiLCBsbF9jaGlzZWwsIDApOwotLQlsdWFMX29wZW5saWIobV9scywgImV2dCIsIGxsX2V2dCwgMCk7Ci0rCWNoaXNlbF9sdWFfcmVnaXN0ZXJsaWIobV9scywgInN5c2RpZyIsIGxsX3N5c2RpZywgMCk7Ci0rCWNoaXNlbF9sdWFfcmVnaXN0ZXJsaWIobV9scywgImNoaXNlbCIsIGxsX2NoaXNlbCwgMCk7Ci0rCWNoaXNlbF9sdWFfcmVnaXN0ZXJsaWIobV9scywgImV2dCIsIGxsX2V2dCwgMCk7Ci0gCi0gCS8vCi0gCS8vIEFkZCBvdXIgY2hpc2VsIHBhdGhzIHRvIHBhY2thZ2UucGF0aAotLS0gCi0yLjYuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc3lzZGlnL3N5c2RpZy9hYXJjaDY0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3N5c2RpZy9zeXNkaWcvYWFyY2g2NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMTZiMGVjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3N5c2RpZy9zeXNkaWcvYWFyY2g2NC5wYXRjaApAQCAtMCwwICsxLDM1OSBAQAorQ2hlY2sgaWYgbGVnYWN5IHN5c2NhbGxzIGV4aXN0CisKK0EgbG90IG9mIGxlZ2FjeSBzeXNjYWxscyBhcmUgcmVwbGFjZWQgd2l0aCAqYXQgYW5kIGFyZSBub3QgaW1wbGVtZW50ZWQgaW4gbmV3ZXIKK2FyY2hpdGVjdHVyZXMgbGlrZSBhYXJjaDY0CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vZHJhaW9zL3N5c2RpZy9wdWxsLzE2MDFdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tIGEvZHJpdmVyL3N5c2NhbGxfdGFibGUuYworKysrIGIvZHJpdmVyL3N5c2NhbGxfdGFibGUuYworQEAgLTQyLDI2ICs0Miw0NiBAQCBvciBHUEwyLnR4dCBmb3IgZnVsbCBjb3BpZXMgb2YgdGhlIGxpY2VuCisgICogU1lTQ0FMTCBUQUJMRQorICAqLworIGNvbnN0IHN0cnVjdCBzeXNjYWxsX2V2dF9wYWlyIGdfc3lzY2FsbF90YWJsZVtTWVNDQUxMX1RBQkxFX1NJWkVdID0geworKyNpZmRlZiBfX05SX29wZW4KKyAJW19fTlJfb3BlbiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX05FVkVSX0RST1AsIFBQTUVfU1lTQ0FMTF9PUEVOX0UsIFBQTUVfU1lTQ0FMTF9PUEVOX1h9LAorKyNlbmRpZgorKyNpZmRlZiBfX05SX2NyZWF0CisgCVtfX05SX2NyZWF0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9ORVZFUl9EUk9QLCBQUE1FX1NZU0NBTExfQ1JFQVRfRSwgUFBNRV9TWVNDQUxMX0NSRUFUX1h9LAorKyNlbmRpZgorIAlbX19OUl9jbG9zZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCB8IFVGX1NJTVBMRURSSVZFUl9LRUVQLCBQUE1FX1NZU0NBTExfQ0xPU0VfRSwgUFBNRV9TWVNDQUxMX0NMT1NFX1h9LAorIAlbX19OUl9icmsgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfQUxXQVlTX0RST1AsIFBQTUVfU1lTQ0FMTF9CUktfNF9FLCBQUE1FX1NZU0NBTExfQlJLXzRfWH0sCisgCVtfX05SX3JlYWQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQsIFBQTUVfU1lTQ0FMTF9SRUFEX0UsIFBQTUVfU1lTQ0FMTF9SRUFEX1h9LAorIAlbX19OUl93cml0ZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfV1JJVEVfRSwgUFBNRV9TWVNDQUxMX1dSSVRFX1h9LAorIAlbX19OUl9leGVjdmUgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCB8IFVGX1NJTVBMRURSSVZFUl9LRUVQLCBQUE1FX1NZU0NBTExfRVhFQ1ZFXzE5X0UsIFBQTUVfU1lTQ0FMTF9FWEVDVkVfMTlfWH0sCisgCVtfX05SX2Nsb25lIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9ORVZFUl9EUk9QIHwgVUZfU0lNUExFRFJJVkVSX0tFRVAsIFBQTUVfU1lTQ0FMTF9DTE9ORV8yMF9FLCBQUE1FX1NZU0NBTExfQ0xPTkVfMjBfWH0sCisrI2lmZGVmIF9fTlJfZm9yaworIAlbX19OUl9mb3JrIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCB8IFVGX1NJTVBMRURSSVZFUl9LRUVQLCBQUE1FX1NZU0NBTExfRk9SS18yMF9FLCBQUE1FX1NZU0NBTExfRk9SS18yMF9YfSwKKysjZW5kaWYKKysjaWZkZWYgX19OUl92Zm9yaworIAlbX19OUl92Zm9yayAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCB8IFVGX1NJTVBMRURSSVZFUl9LRUVQLCBQUE1FX1NZU0NBTExfVkZPUktfMjBfRSwgUFBNRV9TWVNDQUxMX1ZGT1JLXzIwX1h9LAorKyNlbmRpZgorKyNpZmRlZiBfX05SX3BpcGUKKyAJW19fTlJfcGlwZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX05FVkVSX0RST1AsIFBQTUVfU1lTQ0FMTF9QSVBFX0UsIFBQTUVfU1lTQ0FMTF9QSVBFX1h9LAorKyNlbmRpZgorIAlbX19OUl9waXBlMiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCwgUFBNRV9TWVNDQUxMX1BJUEVfRSwgUFBNRV9TWVNDQUxMX1BJUEVfWH0sCisrI2lmZGVmIF9fTlJfZXZlbnRmZAorIAlbX19OUl9ldmVudGZkIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCwgUFBNRV9TWVNDQUxMX0VWRU5URkRfRSwgUFBNRV9TWVNDQUxMX0VWRU5URkRfWH0sCisrI2VuZGlmCisgCVtfX05SX2V2ZW50ZmQyIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9ORVZFUl9EUk9QLCBQUE1FX1NZU0NBTExfRVZFTlRGRF9FLCBQUE1FX1NZU0NBTExfRVZFTlRGRF9YfSwKKyAJW19fTlJfZnV0ZXggLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX0FMV0FZU19EUk9QLCBQUE1FX1NZU0NBTExfRlVURVhfRSwgUFBNRV9TWVNDQUxMX0ZVVEVYX1h9LAorKyNpZmRlZiBfX05SX3N0YXQKKyAJW19fTlJfc3RhdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX0FMV0FZU19EUk9QLCBQUE1FX1NZU0NBTExfU1RBVF9FLCBQUE1FX1NZU0NBTExfU1RBVF9YfSwKKysjZW5kaWYKKysjaWZkZWYgX19OUl9sc3RhdAorIAlbX19OUl9sc3RhdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfQUxXQVlTX0RST1AsIFBQTUVfU1lTQ0FMTF9MU1RBVF9FLCBQUE1FX1NZU0NBTExfTFNUQVRfWH0sCisrI2VuZGlmCisgCVtfX05SX2ZzdGF0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9BTFdBWVNfRFJPUCwgUFBNRV9TWVNDQUxMX0ZTVEFUX0UsIFBQTUVfU1lTQ0FMTF9GU1RBVF9YfSwKKysjaWZkZWYgX19OUl9lcG9sbF93YWl0CisgCVtfX05SX2Vwb2xsX3dhaXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9BTFdBWVNfRFJPUCwgUFBNRV9TWVNDQUxMX0VQT0xMV0FJVF9FLCBQUE1FX1NZU0NBTExfRVBPTExXQUlUX1h9LAorKyNlbmRpZgorKyNpZmRlZiBfX05SX3BvbGwKKyAJW19fTlJfcG9sbCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX0FMV0FZU19EUk9QLCBQUE1FX1NZU0NBTExfUE9MTF9FLCBQUE1FX1NZU0NBTExfUE9MTF9YfSwKKysjZW5kaWYKKyAjaWZkZWYgX19OUl9zZWxlY3QKKyAJW19fTlJfc2VsZWN0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX0FMV0FZU19EUk9QLCBQUE1FX1NZU0NBTExfU0VMRUNUX0UsIFBQTUVfU1lTQ0FMTF9TRUxFQ1RfWH0sCisgI2VuZGlmCitAQCAtNzAsMTMgKzkwLDIxIEBAIGNvbnN0IHN0cnVjdCBzeXNjYWxsX2V2dF9wYWlyIGdfc3lzY2FsbF8KKyAJW19fTlJfZ2V0Y3dkIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX0FMV0FZU19EUk9QLCBQUE1FX1NZU0NBTExfR0VUQ1dEX0UsIFBQTUVfU1lTQ0FMTF9HRVRDV0RfWH0sCisgCVtfX05SX2NoZGlyIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9ORVZFUl9EUk9QIHwgVUZfU0lNUExFRFJJVkVSX0tFRVAsIFBQTUVfU1lTQ0FMTF9DSERJUl9FLCBQUE1FX1NZU0NBTExfQ0hESVJfWH0sCisgCVtfX05SX2ZjaGRpciAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9ORVZFUl9EUk9QIHwgVUZfU0lNUExFRFJJVkVSX0tFRVAsIFBQTUVfU1lTQ0FMTF9GQ0hESVJfRSwgUFBNRV9TWVNDQUxMX0ZDSERJUl9YfSwKKysjaWZkZWYgX19OUl9ta2RpcgorIAlbX19OUl9ta2RpciAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfTUtESVJfMl9FLCBQUE1FX1NZU0NBTExfTUtESVJfMl9YfSwKKysjZW5kaWYKKysjaWZkZWYgX19OUl9ybWRpcgorIAlbX19OUl9ybWRpciAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfUk1ESVJfMl9FLCBQUE1FX1NZU0NBTExfUk1ESVJfMl9YfSwKKysjZW5kaWYKKyAJW19fTlJfb3BlbmF0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX05FVkVSX0RST1AsIFBQTUVfU1lTQ0FMTF9PUEVOQVRfMl9FLCBQUE1FX1NZU0NBTExfT1BFTkFUXzJfWH0sCisgCVtfX05SX21rZGlyYXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQsIFBQTUVfU1lTQ0FMTF9NS0RJUkFUX0UsIFBQTUVfU1lTQ0FMTF9NS0RJUkFUX1h9LAorKyNpZmRlZiBfX05SX2xpbmsKKyAJW19fTlJfbGluayAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCwgUFBNRV9TWVNDQUxMX0xJTktfMl9FLCBQUE1FX1NZU0NBTExfTElOS18yX1h9LAorKyNlbmRpZgorIAlbX19OUl9saW5rYXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfTElOS0FUXzJfRSwgUFBNRV9TWVNDQUxMX0xJTktBVF8yX1h9LAorKyNpZmRlZiBfX05SX3VubGluaworIAlbX19OUl91bmxpbmsgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfVU5MSU5LXzJfRSwgUFBNRV9TWVNDQUxMX1VOTElOS18yX1h9LAorKyNlbmRpZgorIAlbX19OUl91bmxpbmthdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfVU5MSU5LQVRfMl9FLCBQUE1FX1NZU0NBTExfVU5MSU5LQVRfMl9YfSwKKyAJW19fTlJfcHJlYWQ2NCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCwgUFBNRV9TWVNDQUxMX1BSRUFEX0UsIFBQTUVfU1lTQ0FMTF9QUkVBRF9YfSwKKyAJW19fTlJfcHdyaXRlNjQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCwgUFBNRV9TWVNDQUxMX1BXUklURV9FLCBQUE1FX1NZU0NBTExfUFdSSVRFX1h9LAorQEAgLTg1LDE2ICsxMTMsMjIgQEAgY29uc3Qgc3RydWN0IHN5c2NhbGxfZXZ0X3BhaXIgZ19zeXNjYWxsXworIAlbX19OUl9wcmVhZHYgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfUFJFQURWX0UsIFBQTUVfU1lTQ0FMTF9QUkVBRFZfWH0sCisgCVtfX05SX3B3cml0ZXYgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQsIFBQTUVfU1lTQ0FMTF9QV1JJVEVWX0UsIFBQTUVfU1lTQ0FMTF9QV1JJVEVWX1h9LAorIAlbX19OUl9kdXAgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCB8IFVGX1NJTVBMRURSSVZFUl9LRUVQLCBQUE1FX1NZU0NBTExfRFVQX0UsIFBQTUVfU1lTQ0FMTF9EVVBfWH0sCisrI2lmZGVmIF9fTlJfZHVwMgorIAlbX19OUl9kdXAyIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCB8IFVGX1NJTVBMRURSSVZFUl9LRUVQLCBQUE1FX1NZU0NBTExfRFVQX0UsIFBQTUVfU1lTQ0FMTF9EVVBfWH0sCisrI2VuZGlmCisgCVtfX05SX2R1cDMgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9ORVZFUl9EUk9QIHwgVUZfU0lNUExFRFJJVkVSX0tFRVAsIFBQTUVfU1lTQ0FMTF9EVVBfRSwgUFBNRV9TWVNDQUxMX0RVUF9YfSwKKysjaWZkZWYgX19OUl9zaWduYWxmZAorIAlbX19OUl9zaWduYWxmZCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCwgUFBNRV9TWVNDQUxMX1NJR05BTEZEX0UsIFBQTUVfU1lTQ0FMTF9TSUdOQUxGRF9YfSwKKysjZW5kaWYKKyAJW19fTlJfc2lnbmFsZmQ0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX05FVkVSX0RST1AsIFBQTUVfU1lTQ0FMTF9TSUdOQUxGRF9FLCBQUE1FX1NZU0NBTExfU0lHTkFMRkRfWH0sCisgCVtfX05SX2tpbGwgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQsIFBQTUVfU1lTQ0FMTF9LSUxMX0UsIFBQTUVfU1lTQ0FMTF9LSUxMX1h9LAorIAlbX19OUl90a2lsbCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfVEtJTExfRSwgUFBNRV9TWVNDQUxMX1RLSUxMX1h9LAorIAlbX19OUl90Z2tpbGwgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfVEdLSUxMX0UsIFBQTUVfU1lTQ0FMTF9UR0tJTExfWH0sCisgCVtfX05SX25hbm9zbGVlcCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9BTFdBWVNfRFJPUCwgUFBNRV9TWVNDQUxMX05BTk9TTEVFUF9FLCBQUE1FX1NZU0NBTExfTkFOT1NMRUVQX1h9LAorIAlbX19OUl90aW1lcmZkX2NyZWF0ZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfTkVWRVJfRFJPUCwgUFBNRV9TWVNDQUxMX1RJTUVSRkRfQ1JFQVRFX0UsIFBQTUVfU1lTQ0FMTF9USU1FUkZEX0NSRUFURV9YfSwKKysjaWZkZWYgX19OUl9pbm90aWZ5X2luaXQKKyAJW19fTlJfaW5vdGlmeV9pbml0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX05FVkVSX0RST1AsIFBQTUVfU1lTQ0FMTF9JTk9USUZZX0lOSVRfRSwgUFBNRV9TWVNDQUxMX0lOT1RJRllfSU5JVF9YfSwKKysjZW5kaWYKKyAJW19fTlJfaW5vdGlmeV9pbml0MSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX05FVkVSX0RST1AsIFBQTUVfU1lTQ0FMTF9JTk9USUZZX0lOSVRfRSwgUFBNRV9TWVNDQUxMX0lOT1RJRllfSU5JVF9YfSwKKyAJW19fTlJfZmNobW9kYXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCwgUFBNRV9TWVNDQUxMX0ZDSE1PREFUX0UsIFBQTUVfU1lTQ0FMTF9GQ0hNT0RBVF9YfSwKKyAJW19fTlJfZmNobW9kIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCwgUFBNRV9TWVNDQUxMX0ZDSE1PRF9FLCBQUE1FX1NZU0NBTExfRkNITU9EX1h9LAorQEAgLTExNCwxNCArMTQ4LDIyIEBAIGNvbnN0IHN0cnVjdCBzeXNjYWxsX2V2dF9wYWlyIGdfc3lzY2FsbF8KKyAjZW5kaWYKKyAvKiBbX19OUl9vbGRfc2VsZWN0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0Je1VGX1VTRUQsIFBQTUVfR0VORVJJQ19FLCBQUE1FX0dFTkVSSUNfWH0sICovCisgCVtfX05SX3BzZWxlY3Q2IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9BTFdBWVNfRFJPUCwgUFBNRV9HRU5FUklDX0UsIFBQTUVfR0VORVJJQ19YfSwKKysjaWZkZWYgX19OUl9lcG9sbF9jcmVhdGUKKyAJW19fTlJfZXBvbGxfY3JlYXRlIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX0FMV0FZU19EUk9QLCBQUE1FX0dFTkVSSUNfRSwgUFBNRV9HRU5FUklDX1h9LAorKyNlbmRpZgorIAlbX19OUl9lcG9sbF9jdGwgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfQUxXQVlTX0RST1AsIFBQTUVfR0VORVJJQ19FLCBQUE1FX0dFTkVSSUNfWH0sCisrI2lmZGVmIF9fTlJfdXNlbGliCisgCVtfX05SX3VzZWxpYiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9BTFdBWVNfRFJPUCwgUFBNRV9HRU5FUklDX0UsIFBQTUVfR0VORVJJQ19YfSwKKysjZW5kaWYKKyAJW19fTlJfc2NoZWRfc2V0cGFyYW0gLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX0FMV0FZU19EUk9QLCBQUE1FX0dFTkVSSUNfRSwgUFBNRV9HRU5FUklDX1h9LAorIAlbX19OUl9zY2hlZF9nZXRwYXJhbSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfQUxXQVlTX0RST1AsIFBQTUVfR0VORVJJQ19FLCBQUE1FX0dFTkVSSUNfWH0sCisgCVtfX05SX3N5c2xvZyAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9BTFdBWVNfRFJPUCwgUFBNRV9HRU5FUklDX0UsIFBQTUVfR0VORVJJQ19YfSwKKysjaWZkZWYgX19OUl9jaG1vZAorIAlbX19OUl9jaG1vZCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfQ0hNT0RfRSwgUFBNRV9TWVNDQUxMX0NITU9EX1h9LAorKyNlbmRpZgorKyNpZmRlZiBfX05SX2xjaG93bgorIAlbX19OUl9sY2hvd24gLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX0dFTkVSSUNfRSwgUFBNRV9HRU5FUklDX1h9LAorKyNlbmRpZgorICNpZmRlZiBfX05SX3V0aW1lCisgCVtfX05SX3V0aW1lIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9BTFdBWVNfRFJPUCwgUFBNRV9HRU5FUklDX0UsIFBQTUVfR0VORVJJQ19YfSwKKyAjZW5kaWYKK0BAIC0xMzEsOCArMTczLDkgQEAgY29uc3Qgc3RydWN0IHN5c2NhbGxfZXZ0X3BhaXIgZ19zeXNjYWxsXworICNpZmRlZiBfX05SX2FsYXJtCisgCVtfX05SX2FsYXJtIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9BTFdBWVNfRFJPUCwgUFBNRV9HRU5FUklDX0UsIFBQTUVfR0VORVJJQ19YfSwKKyAjZW5kaWYKKysjaWZkZWYgX19OUl9wYXVzZQorIAlbX19OUl9wYXVzZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfQUxXQVlTX0RST1AsIFBQTUVfR0VORVJJQ19FLCBQUE1FX0dFTkVSSUNfWH0sCistCisrI2VuZGlmCisgI2lmbmRlZiBfX05SX3NvY2tldGNhbGwKKyAJW19fTlJfc29ja2V0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX05FVkVSX0RST1AgfCBVRl9TSU1QTEVEUklWRVJfS0VFUCwgUFBNRV9TT0NLRVRfU09DS0VUX0UsIFBQTUVfU09DS0VUX1NPQ0tFVF9YfSwKKyAJW19fTlJfYmluZCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCB8IFVGX05FVkVSX0RST1AsIFBQTUVfU09DS0VUX0JJTkRfRSwgIFBQTUVfU09DS0VUX0JJTkRfWH0sCitAQCAtMTg0LDkgKzIyNywxMyBAQCBjb25zdCBzdHJ1Y3Qgc3lzY2FsbF9ldnRfcGFpciBnX3N5c2NhbGxfCisgCVtfX05SX3Byb2Nlc3Nfdm1fd3JpdGV2IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAge1VGX1VTRUQsIFBQTUVfR0VORVJJQ19FLCBQUE1FX0dFTkVSSUNfWH0sCisgI2VuZGlmCisgCisrI2lmZGVmIF9fTlJfcmVuYW1lCisgCVtfX05SX3JlbmFtZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQsIFBQTUVfU1lTQ0FMTF9SRU5BTUVfRSwgUFBNRV9TWVNDQUxMX1JFTkFNRV9YfSwKKysjZW5kaWYKKyAJW19fTlJfcmVuYW1lYXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCwgUFBNRV9TWVNDQUxMX1JFTkFNRUFUX0UsIFBQTUVfU1lTQ0FMTF9SRU5BTUVBVF9YfSwKKysjaWZkZWYgX19OUl9zeW1saW5rCisgCVtfX05SX3N5bWxpbmsgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAge1VGX1VTRUQsIFBQTUVfU1lTQ0FMTF9TWU1MSU5LX0UsIFBQTUVfU1lTQ0FMTF9TWU1MSU5LX1h9LAorKyNlbmRpZgorIAlbX19OUl9zeW1saW5rYXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgIHtVRl9VU0VELCBQUE1FX1NZU0NBTExfU1lNTElOS0FUX0UsIFBQTUVfU1lTQ0FMTF9TWU1MSU5LQVRfWH0sCisgCVtfX05SX3NlbmRmaWxlIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gICAgICAgICAgICAgICAgICAge1VGX1VTRUQsIFBQTUVfU1lTQ0FMTF9TRU5ERklMRV9FLCBQUE1FX1NZU0NBTExfU0VOREZJTEVfWH0sCisgI2lmZGVmIF9fTlJfc2VuZGZpbGU2NAorQEAgLTI1NSw3ICszMDIsOSBAQCBjb25zdCBzdHJ1Y3Qgc3lzY2FsbF9ldnRfcGFpciBnX3N5c2NhbGxfCisgI2lmZGVmIF9fTlJfZ2V0cmVzZ2lkMzIKKyAJW19fTlJfZ2V0cmVzZ2lkMzIgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICB7VUZfVVNFRCwgUFBNRV9TWVNDQUxMX0dFVFJFU0dJRF9FLCBQUE1FX1NZU0NBTExfR0VUUkVTR0lEX1ggfSwKKyAjZW5kaWYKKysjaWZkZWYgX19OUl9nZXRkZW50cworIAlbX19OUl9nZXRkZW50cyAtIFNZU0NBTExfVEFCTEVfSUQwXSA9ICAgICAgICAgICAgICAgICAgIHtVRl9VU0VEIHwgVUZfQUxXQVlTX0RST1AsIFBQTUVfU1lTQ0FMTF9HRVRERU5UU19FLCBQUE1FX1NZU0NBTExfR0VUREVOVFNfWH0sCisrI2VuZGlmCisgCVtfX05SX2dldGRlbnRzNjQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAge1VGX1VTRUQgfCBVRl9BTFdBWVNfRFJPUCwgUFBNRV9TWVNDQUxMX0dFVERFTlRTNjRfRSwgUFBNRV9TWVNDQUxMX0dFVERFTlRTNjRfWH0sCisgI2lmZGVmIF9fTlJfc2V0bnMKKyAJW19fTlJfc2V0bnMgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSAgICAgICAgICAgICAgICAgICAgICB7VUZfVVNFRCwgUFBNRV9TWVNDQUxMX1NFVE5TX0UsIFBQTUVfU1lTQ0FMTF9TRVROU19YfSwKK0BAIC0yOTgsMTkgKzM0NywzMyBAQCBjb25zdCBlbnVtIHBwbV9zeXNjYWxsX2NvZGUgZ19zeXNjYWxsX2NvCisgCVtfX05SX2V4aXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfRVhJVCwKKyAJW19fTlJfcmVhZCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19SRUFELAorIAlbX19OUl93cml0ZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19XUklURSwKKysjaWZkZWYgX19OUl9vcGVuCisgCVtfX05SX29wZW4gLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfT1BFTiwKKysjZW5kaWYKKyAJW19fTlJfY2xvc2UgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfQ0xPU0UsCisrI2lmZGVmIF9fTlJfY3JlYXQKKyAJW19fTlJfY3JlYXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfQ1JFQVQsCisrI2VuZGlmCisrI2lmZGVmIF9fTlJfbGluaworIAlbX19OUl9saW5rIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0xJTkssCisrI2VuZGlmCisrI2lmZGVmIF9fTlJfdW5saW5rCisgCVtfX05SX3VubGluayAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19VTkxJTkssCisrI2VuZGlmCisgCVtfX05SX2NoZGlyIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0NIRElSLAorICNpZmRlZiBfX05SX3RpbWUKKyAJW19fTlJfdGltZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19USU1FLAorICNlbmRpZgorKyNpZmRlZiBfX05SX21rbm9kCisgCVtfX05SX21rbm9kIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX01LTk9ELAorKyNlbmRpZgorKyNpZmRlZiBfX05SX2NobW9kCisgCVtfX05SX2NobW9kIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0NITU9ELAorKyNlbmRpZgorIC8qIFtfX05SX2xjaG93bjE2IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX05SX0xDSE9XTjE2LCAqLworKyNpZmRlZiBfX05SX3N0YXQKKyAJW19fTlJfc3RhdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19TVEFULAorKyNlbmRpZgorIAlbX19OUl9sc2VlayAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19MU0VFSywKKyAJW19fTlJfZ2V0cGlkIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0dFVFBJRCwKKyAJW19fTlJfbW91bnQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfTU9VTlQsCitAQCAtMzIyLDE3ICszODUsMjcgQEAgY29uc3QgZW51bSBwcG1fc3lzY2FsbF9jb2RlIGdfc3lzY2FsbF9jbworIAlbX19OUl9hbGFybSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19BTEFSTSwKKyAjZW5kaWYKKyAJW19fTlJfZnN0YXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfRlNUQVQsCisrI2lmZGVmIF9fTlJfcGF1c2UKKyAJW19fTlJfcGF1c2UgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfUEFVU0UsCisrI2VuZGlmCisgI2lmZGVmIF9fTlJfdXRpbWUKKyAJW19fTlJfdXRpbWUgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfVVRJTUUsCisgI2VuZGlmCisgCVtfX05SX3N5bmMgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfU1lOQywKKyAJW19fTlJfa2lsbCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19LSUxMLAorKyNpZmRlZiBfX05SX3JlbmFtZQorIAlbX19OUl9yZW5hbWUgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfUkVOQU1FLAorKyNlbmRpZgorKyNpZmRlZiBfX05SX21rZGlyCisgCVtfX05SX21rZGlyIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX01LRElSLAorKyNlbmRpZgorKyNpZmRlZiBfX05SX3JtZGlyCisgCVtfX05SX3JtZGlyIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1JNRElSLAorKyNlbmRpZgorIAlbX19OUl9kdXAgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfRFVQLAorKyNpZmRlZiBfX05SX3BpcGUKKyAJW19fTlJfcGlwZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19QSVBFLAorKyNlbmRpZgorIAlbX19OUl90aW1lcyAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19USU1FUywKKyAJW19fTlJfYnJrIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0JSSywKKyAvKiBbX19OUl9zZXRnaWQxNiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19OUl9TRVRHSUQxNiwgKi8KK0BAIC0zNDUsMTAgKzQxOCwxNiBAQCBjb25zdCBlbnVtIHBwbV9zeXNjYWxsX2NvZGUgZ19zeXNjYWxsX2NvCisgCVtfX05SX3NldHBnaWQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfU0VUUEdJRCwKKyAJW19fTlJfdW1hc2sgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfVU1BU0ssCisgCVtfX05SX2Nocm9vdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19DSFJPT1QsCisrI2lmZGVmIF9fTlJfdXN0YXQKKyAJW19fTlJfdXN0YXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfVVNUQVQsCisrI2VuZGlmCisrI2lmZGVmIF9fTlJfZHVwMgorIAlbX19OUl9kdXAyIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0RVUDIsCisrI2VuZGlmCisgCVtfX05SX2dldHBwaWQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfR0VUUFBJRCwKKysjaWZkZWYgX19OUl9nZXRwZ3JwCisgCVtfX05SX2dldHBncnAgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfR0VUUEdSUCwKKysjZW5kaWYKKyAJW19fTlJfc2V0c2lkIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1NFVFNJRCwKKyAJW19fTlJfc2V0aG9zdG5hbWUgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfU0VUSE9TVE5BTUUsCisgCVtfX05SX3NldHJsaW1pdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19TRVRSTElNSVQsCitAQCAtMzU5LDEwICs0MzgsMTggQEAgY29uc3QgZW51bSBwcG1fc3lzY2FsbF9jb2RlIGdfc3lzY2FsbF9jbworIC8qIFtfX05SX2dldGdyb3VwczE2IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX05SX0dFVEdST1VQUzE2LCAqLworIC8qIFtfX05SX3NldGdyb3VwczE2IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX05SX1NFVEdST1VQUzE2LCAqLworIC8qIFtfX05SX29sZF9zZWxlY3QgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfTlJfT0xEX1NFTEVDVCwgKi8KKysjaWZkZWYgX19OUl9zeW1saW5rCisgCVtfX05SX3N5bWxpbmsgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfU1lNTElOSywKKysjZW5kaWYKKysjaWZkZWYgX19OUl9sc3RhdAorIAlbX19OUl9sc3RhdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19MU1RBVCwKKysjZW5kaWYKKysjaWZkZWYgX19OUl9yZWFkbGluaworIAlbX19OUl9yZWFkbGluayAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19SRUFETElOSywKKysjZW5kaWYKKysjaWZkZWYgX19OUl91c2VsaWIKKyAJW19fTlJfdXNlbGliIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1VTRUxJQiwKKysjZW5kaWYKKyAJW19fTlJfc3dhcG9uIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1NXQVBPTiwKKyAJW19fTlJfcmVib290IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1JFQk9PVCwKKyAvKiBbX19OUl9vbGRfcmVhZGRpciAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19OUl9PTERfUkVBRERJUiwgKi8KK0BAIC0zOTksMTIgKzQ4NiwxNiBAQCBjb25zdCBlbnVtIHBwbV9zeXNjYWxsX2NvZGUgZ19zeXNjYWxsX2NvCisgCVtfX05SX2RlbGV0ZV9tb2R1bGUgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfREVMRVRFX01PRFVMRSwKKyAJW19fTlJfZ2V0cGdpZCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19HRVRQR0lELAorIAlbX19OUl9mY2hkaXIgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfRkNIRElSLAorKyNpZmRlZiBfX05SX3N5c2ZzCisgCVtfX05SX3N5c2ZzIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1NZU0ZTLAorKyNlbmRpZgorIAlbX19OUl9wZXJzb25hbGl0eSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19QRVJTT05BTElUWSwKKyAvKiBbX19OUl9zZXRmc3VpZDE2IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX05SX1NFVEZTVUlEMTYsICovCisgLyogW19fTlJfc2V0ZnNnaWQxNiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19OUl9TRVRGU0dJRDE2LCAqLworIC8qIFtfX05SX2xsc2VlayAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19OUl9MTFNFRUssICovCisrI2lmZGVmIF9fTlJfZ2V0ZGVudHMKKyAJW19fTlJfZ2V0ZGVudHMgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfR0VUREVOVFMsCisrI2VuZGlmCisgI2lmZGVmIF9fTlJfc2VsZWN0CisgCVtfX05SX3NlbGVjdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19TRUxFQ1QsCisgI2VuZGlmCitAQCAtNDMxLDcgKzUyMiw5IEBAIGNvbnN0IGVudW0gcHBtX3N5c2NhbGxfY29kZSBnX3N5c2NhbGxfY28KKyAJW19fTlJfbXJlbWFwIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX01SRU1BUCwKKyAvKiBbX19OUl9zZXRyZXN1aWQxNiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19OUl9TRVRSRVNVSUQxNiwgKi8KKyAvKiBbX19OUl9nZXRyZXN1aWQxNiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19OUl9HRVRSRVNVSUQxNiwgKi8KKysjaWZkZWYgX19OUl9wb2xsCisgCVtfX05SX3BvbGwgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfUE9MTCwKKysjZW5kaWYKKyAvKiBbX19OUl9zZXRyZXNnaWQxNiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19OUl9TRVRSRVNHSUQxNiwgKi8KKyAvKiBbX19OUl9nZXRyZXNnaWQxNiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19OUl9HRVRSRVNHSUQxNiwgKi8KKyAJW19fTlJfcHJjdGwgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfUFJDVEwsCitAQCAtNDUzLDEzICs1NDYsMTcgQEAgY29uc3QgZW51bSBwcG1fc3lzY2FsbF9jb2RlIGdfc3lzY2FsbF9jbworIAlbX19OUl9nZXRybGltaXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfR0VUUkxJTUlULAorICNlbmRpZgorIC8qIFtfX05SX21tYXBfcGdvZmYgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfTlJfTU1BUF9QR09GRiwgKi8KKysjaWZkZWYgX19OUl9sY2hvd24KKyAJW19fTlJfbGNob3duIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0xDSE9XTiwKKysjZW5kaWYKKyAJW19fTlJfc2V0cmV1aWQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfU0VUUkVVSUQsCisgCVtfX05SX3NldHJlZ2lkIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1NFVFJFR0lELAorIAlbX19OUl9nZXRncm91cHMgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfR0VUR1JPVVBTLAorIAlbX19OUl9zZXRncm91cHMgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfU0VUR1JPVVBTLAorIAlbX19OUl9mY2hvd24gLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfRkNIT1dOLAorKyNpZmRlZiBfX05SX2Nob3duCisgCVtfX05SX2Nob3duIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0NIT1dOLAorKyNlbmRpZgorIAlbX19OUl9zZXRmc3VpZCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19TRVRGU1VJRCwKKyAJW19fTlJfc2V0ZnNnaWQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfU0VURlNHSUQsCisgCVtfX05SX3Bpdm90X3Jvb3QgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfUElWT1RfUk9PVCwKK0BAIC00OTQsOSArNTkxLDEzIEBAIGNvbnN0IGVudW0gcHBtX3N5c2NhbGxfY29kZSBnX3N5c2NhbGxfY28KKyAJW19fTlJfaW9fc3VibWl0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0lPX1NVQk1JVCwKKyAJW19fTlJfaW9fY2FuY2VsIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0lPX0NBTkNFTCwKKyAJW19fTlJfZXhpdF9ncm91cCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19FWElUX0dST1VQLAorKyNpZmRlZiBfX05SX2Vwb2xsX2NyZWF0ZQorIAlbX19OUl9lcG9sbF9jcmVhdGUgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfRVBPTExfQ1JFQVRFLAorKyNlbmRpZgorIAlbX19OUl9lcG9sbF9jdGwgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfRVBPTExfQ1RMLAorKyNpZmRlZiBfX05SX2Vwb2xsX3dhaXQKKyAJW19fTlJfZXBvbGxfd2FpdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19FUE9MTF9XQUlULAorKyNlbmRpZgorIAlbX19OUl9yZW1hcF9maWxlX3BhZ2VzIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1JFTUFQX0ZJTEVfUEFHRVMsCisgCVtfX05SX3NldF90aWRfYWRkcmVzcyAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19TRVRfVElEX0FERFJFU1MsCisgCVtfX05SX3RpbWVyX2NyZWF0ZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19USU1FUl9DUkVBVEUsCitAQCAtNTA5LDcgKzYxMCw5IEBAIGNvbnN0IGVudW0gcHBtX3N5c2NhbGxfY29kZSBnX3N5c2NhbGxfY28KKyAJW19fTlJfY2xvY2tfZ2V0cmVzIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0NMT0NLX0dFVFJFUywKKyAJW19fTlJfY2xvY2tfbmFub3NsZWVwIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0NMT0NLX05BTk9TTEVFUCwKKyAJW19fTlJfdGdraWxsIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1RHS0lMTCwKKysjaWZkZWYgX19OUl91dGltZXMKKyAJW19fTlJfdXRpbWVzIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1VUSU1FUywKKysjZW5kaWYKKyAJW19fTlJfbXFfb3BlbiAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19NUV9PUEVOLAorIAlbX19OUl9tcV91bmxpbmsgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfTVFfVU5MSU5LLAorIAlbX19OUl9tcV90aW1lZHNlbmQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfTVFfVElNRURTRU5ELAorQEAgLTUyMywxNCArNjI2LDE4IEBAIGNvbnN0IGVudW0gcHBtX3N5c2NhbGxfY29kZSBnX3N5c2NhbGxfY28KKyAJW19fTlJfa2V5Y3RsIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0tFWUNUTCwKKyAJW19fTlJfaW9wcmlvX3NldCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19JT1BSSU9fU0VULAorIAlbX19OUl9pb3ByaW9fZ2V0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0lPUFJJT19HRVQsCisrI2lmZGVmIF9fTlJfaW5vdGlmeV9pbml0CisgCVtfX05SX2lub3RpZnlfaW5pdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19JTk9USUZZX0lOSVQsCisrI2VuZGlmCisgCVtfX05SX2lub3RpZnlfYWRkX3dhdGNoIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0lOT1RJRllfQUREX1dBVENILAorIAlbX19OUl9pbm90aWZ5X3JtX3dhdGNoIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0lOT1RJRllfUk1fV0FUQ0gsCisgCVtfX05SX29wZW5hdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19PUEVOQVQsCisgCVtfX05SX21rZGlyYXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfTUtESVJBVCwKKyAJW19fTlJfbWtub2RhdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19NS05PREFULAorIAlbX19OUl9mY2hvd25hdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19GQ0hPV05BVCwKKysjaWZkZWYgX19OUl9mdXRpbWVzYXQKKyAJW19fTlJfZnV0aW1lc2F0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0ZVVElNRVNBVCwKKysjZW5kaWYKKyAJW19fTlJfdW5saW5rYXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfVU5MSU5LQVQsCisgCVtfX05SX3JlbmFtZWF0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1JFTkFNRUFULAorIAlbX19OUl9saW5rYXQgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfTElOS0FULAorQEAgLTU1MSw5ICs2NTgsMTMgQEAgY29uc3QgZW51bSBwcG1fc3lzY2FsbF9jb2RlIGdfc3lzY2FsbF9jbworICNlbmRpZgorIAlbX19OUl9lcG9sbF9wd2FpdCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19FUE9MTF9QV0FJVCwKKyAJW19fTlJfdXRpbWVuc2F0IC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX1VUSU1FTlNBVCwKKysjaWZkZWYgX19OUl9zaWduYWxmZAorIAlbX19OUl9zaWduYWxmZCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19TSUdOQUxGRCwKKysjZW5kaWYKKyAJW19fTlJfdGltZXJmZF9jcmVhdGUgLSBTWVNDQUxMX1RBQkxFX0lEMF0gPSBQUE1fU0NfVElNRVJGRF9DUkVBVEUsCisrI2lmZGVmIF9fTlJfZXZlbnRmZAorIAlbX19OUl9ldmVudGZkIC0gU1lTQ0FMTF9UQUJMRV9JRDBdID0gUFBNX1NDX0VWRU5URkQsCisrI2VuZGlmCisgCVtfX05SX3RpbWVyZmRfc2V0dGltZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19USU1FUkZEX1NFVFRJTUUsCisgCVtfX05SX3RpbWVyZmRfZ2V0dGltZSAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19USU1FUkZEX0dFVFRJTUUsCisgCVtfX05SX3NpZ25hbGZkNCAtIFNZU0NBTExfVEFCTEVfSUQwXSA9IFBQTV9TQ19TSUdOQUxGRDQsCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc3lzZGlnL3N5c2RpZy9maXgtdWludDY0LWNvbnN0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3N5c2RpZy9zeXNkaWcvZml4LXVpbnQ2NC1jb25zdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Yzc1NjI5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3N5c2RpZy9zeXNkaWcvZml4LXVpbnQ2NC1jb25zdC5wYXRjaApAQCAtMCwwICsxLDE2IEBACitGaXggeDg2IGJ1aWxkCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tIGEvdXNlcnNwYWNlL2xpYnNpbnNwL2Nncm91cF9saW1pdHMuY3BwCisrKysgYi91c2Vyc3BhY2UvbGlic2luc3AvY2dyb3VwX2xpbWl0cy5jcHAKK0BAIC05LDcgKzksNyBAQCBuYW1lc3BhY2UgeworIC8vIFRoaXMgcmVwb3J0cyBleHRyZW1lbHkgbGFyZ2UgdmFsdWVzIChlLmcuIGFsbW9zdC1idXQtbm90LXF1aXRlIDlFaUIgYXMgc2V0IGJ5IGs4cykgYXMgdW5saW1pdGVkLgorIC8vIE5vdGU6IHdlIHVzZSB0aGUgc2FtZSBtYXhpbXVtIHZhbHVlIGZvciBjcHUgc2hhcmVzL3F1b3RhcyBhcyB3ZWxsOyB0aGUgdHlwaWNhbCB2YWx1ZXMgYXJlIG11Y2ggbG93ZXIKKyAvLyBhbmQgc28gc2hvdWxkIG5ldmVyIGV4Y2VlZCBDR1JPVVBfVkFMX01BWCBlaXRoZXIKKy1jb25zdGV4cHIgY29uc3QgaW50NjRfdCBDR1JPVVBfVkFMX01BWCA9ICgxVUwgPDwgNDJ1KSAtIDE7CisrY29uc3RleHByIGNvbnN0IGludDY0X3QgQ0dST1VQX1ZBTF9NQVggPSAoMVVMTCA8PCA0MnUpIC0gMTsKKyAKKyAvKioKKyAgKiBcYnJpZWYgUmVhZCBhIHNpbmdsZSBpbnQ2NF90IHZhbHVlIGZyb20gY2dyb3VwZnMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zeXNkaWcvc3lzZGlnX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC9zeXNkaWcvc3lzZGlnX2dpdC5iYgppbmRleCA0ZjU4MjgxLi4wNGEwMjJhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvc3lzZGlnL3N5c2RpZ19naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3N5c2RpZy9zeXNkaWdfZ2l0LmJiCkBAIC0zLDM5ICszLDUyIEBACiBzeXN0ZW0gc3RhdGUgYW5kIGFjdGl2aXR5IGZyb20gYSBydW5uaW5nIExpbnV4IGluc3RhbmNlLCB0aGVuIHNhdmUsIFwKIGZpbHRlciBhbmQgYW5hbHl6ZS4iCiBIT01FUEFHRSA9ICJodHRwOi8vd3d3LnN5c2RpZy5vcmcvIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wICYgKE1JVCB8IEdQTC0yLjApIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjhmZWUzZDU5Nzk3NTQ2Y2ZmYWIwNGYzYjg4YjJkNDQiCiAKIGluaGVyaXQgY21ha2UgcGtnY29uZmlnCiAKLU9FQ01BS0VfR0VORVJBVE9SID0gIlVuaXggTWFrZWZpbGVzIgorI09FQ01BS0VfR0VORVJBVE9SID0gIlVuaXggTWFrZWZpbGVzIgorSklUID89ICJqaXQiCitKSVRfbWlwc2FyY2huMzIgPSAiIgorSklUX21pcHNhcmNobjY0ID0gIiIKK0pJVF9yaXNjdjY0ID0gIiIKK0pJVF9yaXNjdjMyID0gIiIKIAotREVQRU5EUyA9ICJsdWFqaXQgemxpYiBuY3Vyc2VzIgorREVQRU5EUyArPSAibHVhJHtKSVR9IHpsaWIgYy1hcmVzIGdycGMtbmF0aXZlIGdycGMgY3VybCBuY3Vyc2VzIGpzb25jcHAgdGJiIGpxIG9wZW5zc2wgZWxmdXRpbHMgcHJvdG9idWYgcHJvdG9idWYtbmF0aXZlIGpxLW5hdGl2ZSIKIFJERVBFTkRTXyR7UE59ID0gImJhc2giCiAKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9kcmFpb3Mvc3lzZGlnLmdpdDticmFuY2g9bWFzdGVyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGlic2luc3AtUG9ydC10by1idWlsZC13aXRoLWx1YS01LjIucGF0Y2ggXAorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2RyYWlvcy9zeXNkaWcuZ2l0O2JyYW5jaD1kZXYgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtYnVpbGQtd2l0aC1MdWFKSVQtMi4xLWJldGFzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC1iYWNrdHJhY2UtQVBJcy1hcmUtZ2xpYmMtc3BlY2lmaS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtdWludDY0LWNvbnN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FhcmNoNjQucGF0Y2ggXAogICAgICAgICAgICIKLVNSQ1JFViA9ICI4NWQxNmYzM2E4MmExN2Y4N2NjZGJjMDg4NzQ5MjcxYzcxZDg3MDEzIgotUFYgPSAiMC4xLjEwMitnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICI4ZGFlZWY4ZGE3NTJjNWYwN2Y0MzkzOTFiYzIwYzU5NDhlYjExNDcwIgorUFYgPSAiMC4yNi42IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1ESVJfRVRDPSIvZXRjIgotRVhUUkFfT0VDTUFLRSA9ICcgLURVU0VfQlVORExFRF9MVUFKSVQ9Ik9GRiIgXAotICAgICAgICAgICAgICAgICAgLURVU0VfQlVORExFRF9aTElCPSJPRkYiIFwKLSAgICAgICAgICAgICAgICAgIC1EQlVJTERfRFJJVkVSPSJPRkYiIFwKLSAgICAgICAgICAgICAgICAgIC1EVVNFX0JVTkRMRURfTkNVUlNFUz0iT0ZGIiBcCi0gICAgICAgICAgICAgICAgICAtRERJUl9FVEM9IiR7RElSX0VUQ30iIFwKLSAgICAgICAgICAgICAgICAnCitFWFRSQV9PRUNNQUtFID0gIlwKKyAgICAgICAgICAgICAgICAtREJVSUxEX0RSSVZFUj1PRkYgXAorICAgICAgICAgICAgICAgIC1EVVNFX0JVTkRMRURfREVQUz1PRkYgXAorICAgICAgICAgICAgICAgIC1EVVNFX0JVTkRMRURfQjY0PU9OIFwKKyAgICAgICAgICAgICAgICAtRENSRUFURV9URVNUX1RBUkdFVFM9T0ZGIFwKKyAgICAgICAgICAgICAgICAtRERJUl9FVEM9JHtzeXNjb25mZGlyfSBcCisgICAgICAgICAgICAgICAgLURMVUFfSU5DTFVERV9ESVI9JHtTVEFHSU5HX0lOQ0RJUn0vbHVhaml0LTIuMSBcCisgICAgICAgICAgICAgICAgLURMVUFfTElCUkFSWT1saWJsdWFqaXQtNS4xLnNvIFwKKyIKIAogRklMRVNfJHtQTn0gKz0gIiBcCiAgICAgJHtESVJfRVRDfS8qIFwKICAgICAke2RhdGFkaXJ9L3pzaC8qIFwKICAgICAke3ByZWZpeH0vc3JjLyogIFwKICIKLQotIyBsdWFqaXQgbm90IHN1cHBvcnRlZCBvbiBBYXJjaDY0Ci1DT01QQVRJQkxFX0hPU1QgPSAiXig/IWFhcmNoNjQpLioiCi0KKyMgVXNlIGdldGFkZHJpbmZvX2EgaXMgYSBHTlUgZXh0ZW5zaW9uIGluIGxpYnNpbnNwCisjIEl0IHNob3VsZCBiZSBmaXhlZCBpbiBzeXNkaWcsIHVudGlsIHRoZW4gZGlzYWJsZQorIyBvbiBtdXNsCisjIFNvbWV0aGluZyBsaWtlIHRoaXMgaHR0cHM6Ly9jb2RlLnZpZGVvbGFuLm9yZy9lUGlyYXQvdmxjLy0vY29tbWl0LzAxZmQ5ZmU0YzdmNmM1NTU4ZjczNDVmMzhhYmYwMTUyZTE3ODUzYWIgIGlzIG5lZWRlZCB0byBmaXggaXQKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9taXBzID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfcmlzY3Y2NCA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX3Jpc2N2MzIgPSAibnVsbCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90bXV4L3RtdXhfMi42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RtdXgvdG11eF8yLjYuYmIKaW5kZXggZmJhNTE1Ni4uMTdjMmZiYSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RtdXgvdG11eF8yLjYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RtdXgvdG11eF8yLjYuYmIKQEAgLTExLDYgKzExLDggQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJkNTQxZmYzOTIyNDlmOTRjNGYzNjM1NzkzNTU2ZjgyNyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMTdjZDE3MGE5NGQ3YjU4YzA2OTg3NTJlMWY0ZjI2M2FiNmRjNDc0MjUyMzBkZjdlNTNhNjQzNWNjN2NkN2U4IgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3RtdXgvdG11eC9yZWxlYXNlcyIKKwogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCiAKIFBBQ0tBR0VDT05GSUcgPz89ICIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdHJpZ2dlcmhhcHB5L3RyaWdnZXJoYXBweV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdHJpZ2dlcmhhcHB5L3RyaWdnZXJoYXBweV9naXQuYmIKaW5kZXggMjRkZjc1MC4uMzhjZTRmNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3RyaWdnZXJoYXBweS90cmlnZ2VyaGFwcHlfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC90cmlnZ2VyaGFwcHkvdHJpZ2dlcmhhcHB5X2dpdC5iYgpAQCAtMTEsNyArMTEsNyBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIHN5c3RlbWQKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgcGVybG5hdGl2ZSB1cGRhdGUtcmMuZCBzeXN0ZW1kCiAKIFBBQ0tBR0VDT05GSUcgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCdzeXN0ZW1kJywnJyxkKX0iCiBQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIiwsc3lzdGVtZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC91cG0vdXBtLzAwMDEtY21ha2UtRGlzYWJsZS11c2luZy1Xbm8tbWF5YmUtdW5pbml0aWFsaXplZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC91cG0vdXBtLzAwMDEtY21ha2UtRGlzYWJsZS11c2luZy1Xbm8tbWF5YmUtdW5pbml0aWFsaXplZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjU4MTg1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3VwbS91cG0vMDAwMS1jbWFrZS1EaXNhYmxlLXVzaW5nLVduby1tYXliZS11bmluaXRpYWxpemVkLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gMTY5ZjYyNzcwZjYzYTQzYjE1ZDRkNGM4MjMzNmZkNTdjODQ2N2NmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDQgQXByIDIwMjAgMjE6NDM6NTEgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gY21ha2U6IERpc2FibGUgdXNpbmcgLVduby1tYXliZS11bmluaXRpYWxpemVkCisKK1RoaXMgd2FybmluZyBjYXVzZXMgY2xhbmcgYnVpbGRzIHRvIGZhaWwgYmVjYXVzZSB0aGlzIGlzIG5vdCBhCityZWNvZ25pc2VkIHdhcm5pbmcgd2l0aCBjbGFuZworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9DTWFrZUxpc3RzLnR4dCB8IDEgLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCisKKy0tLSBhL3NyYy9DTWFrZUxpc3RzLnR4dAorKysrIGIvc3JjL0NNYWtlTGlzdHMudHh0CitAQCAtNiw3ICs2LDYgQEAKKyBzZXQgKFNXSUdfQ1hYX0RJU0FCTEVfV0FSTklOR1MgLVduby1lcnJvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtV25vLWRlbGV0ZS1ub24tdmlydHVhbC1kdG9yCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1Xbm8tdW51c2VkLWZ1bmN0aW9uCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1Xbm8tbWF5YmUtdW5pbml0aWFsaXplZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtV25vLXN0cmljdC1hbGlhc2luZykKKyAKKyAjIElmIGJ1aWxkaW5nIHVuZGVyIGFuZHJvaWQsIG1ha2Ugc3VyZSBzd2lnIGdldHMgYW4gQU5EUk9JRCBmbGFnCistLS0gYS9DTWFrZUxpc3RzLnR4dAorKysrIGIvQ01ha2VMaXN0cy50eHQKK0BAIC0xMTUsOCArMTE1LDcgQEAgZW5kaWYgKFdFUlJPUikKKyB1cG1fYWRkX2NvbXBpbGVfZmxhZ3MoQyAke0NfQ1hYX1dBUk5JTkdfRkxBR1N9CisgICAtV2luaXQtc2VsZgorICAgLVdpbXBsaWNpdAorLSAgLVdzaWduLWNvbXBhcmUKKy0gIC1XbWlzc2luZy1wYXJhbWV0ZXItdHlwZSkKKysgIC1Xc2lnbi1jb21wYXJlKQorIAorICMgU2V0IENYWCBjb21waWxlciB3YXJuaW5nIGZsYWdzIGF0IHRvcC1sZXZlbCBzY29wZSBhbmQgZW1pdCBhIHdhcm5pbmcgYWJvdXQKKyAjIHVuc3VwcG9ydGVkIGZsYWdzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL3VwbV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvdXBtL3VwbV9naXQuYmIKaW5kZXggNmRiOGY4OC4uNWIzNTg1YyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3VwbS91cG1fZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1leHRlbmRlZC91cG0vdXBtX2dpdC5iYgpAQCAtMTAsMTEgKzEwLDEyIEBACiBTUkNSRVYgPSAiNWNmMjBkZjk2YzZiMzVjMTlkNWI4NzFiYTRlMzE5ZTk2YjRkZjcyZCIKIFBWID0gIjIuMC4wK2dpdCR7U1JDUFZ9IgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaW50ZWwtaW90LWRldmtpdC8ke0JQTn0uZ2l0O3Byb3RvY29sPWh0dHAgXAorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2VjbGlwc2UvJHtCUE59LmdpdDtwcm90b2NvbD1odHRwIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQ01ha2VMaXN0cy50eHQtVXNlLVNXSUdfU1VQUE9SVF9GSUxFUy10by1maW5kLXRoZS1saS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1zdGRpbnQtdHlwZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1pbml0aWFsaXplLWxvY2FsLXZhcmlhYmxlcy1iZWZvcmUtdXNlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtY21ha2UtRGlzYWJsZS1Xbm8tbWlzbGVhZGluZy1pbmRlbnRhdGlvbi13aXRoLWNsYW5nLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNtYWtlLURpc2FibGUtdXNpbmctV25vLW1heWJlLXVuaW5pdGlhbGl6ZWQucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ19VUklfYXBwZW5kX3Rvb2xjaGFpbi1jbGFuZ194ODYgPSAiIGZpbGU6Ly8wMDAxLW5tZWFfZ3BzLUxpbmstd2l0aC1sYXRvbWljLnBhdGNoICIKQEAgLTI2LDYgKzI3LDggQEAKIAogaW5oZXJpdCBkaXN0dXRpbHMzLWJhc2UgY21ha2UgcGtnY29uZmlnCiAKK0VYVFJBX09FQ01BS0UgKz0gIi1VUFlUSE9OX0VYRUNVVEFCTEUgLURXRVJST1I9b2ZmIgorCiAjIG92ZXJyaWRlIHRoaXMgaW4gbG9jYWwuY29uZiB0byBnZXQgbmVlZGVkIGJpbmRpbmdzLgogIyBCSU5ESU5HU19wbi11cG09InB5dGhvbiIKICMgd2lsbCByZXN1bHQgaW4gb25seSB0aGUgcHl0aG9uIGJpbmRpbmdzIGJlaW5nIGJ1aWx0L3BhY2thZ2VkLgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3d4d2lkZ2V0cy93eHdpZGdldHNfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWV4dGVuZGVkL3d4d2lkZ2V0cy93eHdpZGdldHNfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA2MzM3YjcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZXh0ZW5kZWQvd3h3aWRnZXRzL3d4d2lkZ2V0c19naXQuYmIKQEAgLTAsMCArMSw4MiBAQAorU1VNTUFSWSA9ICJDcm9zcy1QbGF0dGZvcm0gR1VJIExpYnJhcnkiCitERVNDUklQVElPTSA9ICJ3eFdpZGdldHMgaXMgYSBmcmVlIGFuZCBvcGVuIHNvdXJjZSBjcm9zcy1wbGF0Zm9ybSBDKysgZnJhbWV3b3JrIGZvciB3cml0aW5nIGFkdmFuY2VkIEdVSSBhcHBsaWNhdGlvbnMgdXNpbmcgbmF0aXZlIGNvbnRyb2xzLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lnd4d2lkZ2V0cy5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL3RyYWMud3h3aWRnZXRzLm9yZy8iCisKKyMgd3hXaWRnZXRzIGxpY2VuY2UgaXMgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIExHUEwgZXhwbGljaXRseSBhbGxvd2luZyBub3QKKyMgZGlzdHJpYnV0aW5nIHRoZSBzb3VyY2VzIG9mIGFuIGFwcGxpY2F0aW9uIHVzaW5nIHRoZSBsaWJyYXJ5IGV2ZW4gaW4gdGhlCisjIGNhc2Ugb2Ygc3RhdGljIGxpbmtpbmcuCitMSUNFTlNFID0gInd4V2lkZ2V0cyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvbGljZW5jZS50eHQ7bWQ1PTk4MWY1MGE5MzQ4Mjg2MjBiMDhmNDRkNzVkYjU1N2M2IgorCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3F0JywgJ2NtYWtlX3F0NScsICdjbWFrZScsIGQpfQoraW5oZXJpdCBmZWF0dXJlc19jaGVjayBsaWJfcGFja2FnZQorCisjIEFsbCB0b29sa2l0LWNvbmZpZ3MgZXhjZXB0ICdub19ndWknIHJlcXVpcmUgeDExIGV4cGxpY2l0bHkgKHNlZSB0b29sa2l0LmNtYWtlKQorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25vX2d1aScsICcnLCAneDExJywgZCl9IgorCitERVBFTkRTICs9ICIgXAorICAgIGpwZWcgXAorICAgIGxpYnBuZyBcCisgICAgdGlmZiBcCisiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS93eFdpZGdldHMvd3hXaWRnZXRzLmdpdCIKK1BWID0gIjMuMS4zIgorU1JDUkVWPSAiOGE0MGQyM2IyN2VkMWM4MGI1YTJjYTlmN2U4NDYxZGY0ZmJjMWEzMSIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKKyMgVGhlc2UgY2FuIGJlIGVpdGhlciAnYnVpbHRpbicgb3IgJ3N5cycgYW5kIGJ1aWx0aW4gbWVhbnMgY2xvbmVkIHNvdXJlcyBhcmUKKyMgYnVpbGQuIFNvIHRoZXNlIGNhbm5vdCBiZSBQQUNLQUdFQ09ORklHcyBhbmQgbGV0J3MgdXNlIGxpYnMgd2hlcmUgd2UgY2FuIChzZWUKKyMgREVQRU5EUykKK0VYVFJBX09FQ01BS0UgKz0gIiBcCisgICAgLUR3eFVTRV9MSUJKUEVHPXN5cyBcCisgICAgLUR3eFVTRV9MSUJQTkc9c3lzIFwKKyAgICAtRHd4VVNFX0xJQlRJRkY9c3lzIFwKKyAgICAtRHd4VVNFX1JFR0VYPWJ1aWx0aW4gXAorIgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCisgICAgLURIQVZFX0xPQ0FMRV9UPU9GRiBcCisiCisKK1BBQ0tBR0VDT05GSUcgPz0gImd0ayIKKworIyBOb3RlIG9uIHRvb2xraXQtUEFDS0FHRUNPTkZJR3M6IHNlbGVjdCBleGFjdGx5IG9uZSBvZiAnbm9fZ3VpJyAvICdndGsnIC8gJ3F0JworUEFDS0FHRUNPTkZJR1tub19ndWldID0gIi1Ed3hVU0VfR1VJPU9GRiwsLCwscXQgZ3RrIgorUEFDS0FHRUNPTkZJR1tndGtdID0gIi1Ed3hCVUlMRF9UT09MS0lUPWd0azMgLUR3eFVTRV9HVUk9T04sLGd0ayszLCwsbm9fZ3VpIHF0IgorUEFDS0FHRUNPTkZJR1txdF0gPSAiLUR3eEJVSUxEX1RPT0xLSVQ9cXQgIC1Ed3hVU0VfR1VJPU9OLCxxdGJhc2UsLCxub19ndWkgZ3RrIgorcHl0aG9uICgpIHsKKyAgICBwa2djb25maWcgPSBkLmdldFZhcignUEFDS0FHRUNPTkZJRycpCisgICAgaWYgKG5vdCAnbm9fZ3VpJyBpbiBwa2djb25maWcpIGFuZCAobm90ICdndGsnIGluIHBrZ2NvbmZpZykgYW5kIChub3QgJ3F0JyBpbiBwa2djb25maWcpOgorICAgICAgICBiYi5lcnJvcigiUEFDS0FHRUNPTkZJRyBtdXN0IHNlbGVjdCBhIHRvb2xraXQuIEFkZCBvbmUgb2Ygbm9fZ3VpIC8gZ3RrIC8gcXQhIikKK30KKworIyBOb3RlcyBvbiBvdGhlciBQQUNLQUdFQ09ORklHczoKKyMgKiAnbm9fZ3VpJyBvdmVycmlkZXMgc29tZSBjb25maWdzIGJlbG93IHNvIHRoZXkgYXJlIG1hcmtlZCBhcyBjb25mbGljdGluZworIyAgIHdpdGggJ25vX2d1aScgdG8gYXZvaWQgc3VycHJpc2VzCisjICogcXQrZ3N0cmVhbWVyIGlzIGJyb2tlbiBkdWUgdG8gaW5jb3JyZWN0IHJlZmVyZW5jZXMgb24gZ2xpYi0yLjAgLT4gbWFyaworIyAgIGFzIGNvbmZsaWN0aW5nCisjICogd3hVU0VfTElCR05PTUVWRlMgaXMgZm9yIGd0azIgKHNlZSBpbml0LmNtYWtlKSB3aGljaCB3ZSBkb24ndCBzdXBwb3J0CisjICAgLT4gbm8gZ3ZmcyBQQUNLQUdFQ09ORklHCisjICogbGlibXNwYWNrIGlzIGluIG1ldGEtc2VjdXJpdHkKK1BBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyXSA9ICItRHd4VVNFX01FRElBQ1RSTD1PTiwtRHd4VVNFX01FRElBQ1RSTD1PRkYsZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSwsLG5vX2d1aSBxdCIKK1BBQ0tBR0VDT05GSUdbbGlic2VjcmV0XSA9ICItRHd4VVNFX1NFQ1JFVFNUT1JFPU9OLC1Ed3hVU0VfU0VDUkVUU1RPUkU9T0ZGLGxpYnNlY3JldCwsLG5vX2d1aSIKK1BBQ0tBR0VDT05GSUdbbHptYV0gPSAiLUR3eFVTRV9MSUJMWk1BPU9OLC1Ed3hVU0VfTElCTFpNQT1PRkYseHoiCitQQUNLQUdFQ09ORklHW21zcGFja10gPSAiLUR3eFVTRV9MSUJNU1BBQ0s9T04sLUR3eFVTRV9MSUJNU1BBQ0s9T0ZGLGxpYm1zcGFjayIKK1BBQ0tBR0VDT05GSUdbc2RsX2F1ZGlvXSA9ICItRHd4VVNFX0xJQlNETD1PTiwtRHd4VVNFX0xJQlNETD1PRkYsbGlic2RsMiIKK1BBQ0tBR0VDT05GSUdbd2Via2l0XSA9ICItRHd4VVNFX1dFQlZJRVdfV0VCS0lUPU9OLC1Ed3hVU0VfV0VCVklFV19XRUJLSVQ9T0ZGLHdlYmtpdGd0aywsLG5vX2d1aSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgIyBkbyBub3Qgc2hpcCBiaW5kaXIgaWYgZW1wdHkKKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtiaW5kaXJ9Cit9CisKKyMgbGliIG5hbWVzIGFyZSBub3QgY2Fub25pY2FsCitGSUxFU19TT0xJQlNERVYgPSAiIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2xpYmRpcn0vbGlid3hfKi5zbyBcCisgICAgJHtsaWJkaXJ9L3d4LyBcCisiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3d4L2luY2x1ZGUvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2dtaW1lL2dtaW1lXzMuMi41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2dtaW1lL2dtaW1lXzMuMi41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NjgwODNiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9nbWltZS9nbWltZV8zLjIuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLUxJQ0VOU0UgPSAiTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mYmMwOTM5MDE4NTdmY2QxMThmMDY1ZjkwMDk4MmMyNCIKLURFU0NSSVBUSU9OID0gIlJ1bnRpbWUgbGlicmFyaWVzIGZvciBwYXJzaW5nIGFuZCBjcmVhdGluZyBNSU1FIG1haWwiCi1TRUNUSU9OID0gImxpYnMiCi1ERVBFTkRTID0gImdsaWItMi4wIHpsaWIiCi0KLWluaGVyaXQgZ25vbWViYXNlIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNfVVJJICs9ICJmaWxlOi8vaWNvbnYtZGV0ZWN0LmggXAotICAgICAgICAgICAgZmlsZTovL25vZG9sdC5wYXRjaCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiOTg5NzBlMzk5NWU2N2FjM2YyMzgyN2ZmNTIzMDhmOWUiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJmYjc1NTY1MDFmODVjM2JmM2U2NWZkZDgyNjk3Y2JjNGZhNGI1NWRjY2QzM2FkMTQyMzljZTAxOTdlNzhiYTU5IgotCi1leHBvcnQgYWNfY3ZfaGF2ZV9pY29udl9kZXRlY3RfaD0ieWVzIgotZG9fY29uZmlndXJlX2FwcGVuZCA9ICJjcCAke1dPUktESVJ9L2ljb252LWRldGVjdC5oICR7U30iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvZ21pbWUvZ21pbWVfMy4yLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvZ21pbWUvZ21pbWVfMy4yLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQxYmI3ZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9nbWltZS9nbWltZV8zLjIuNi5iYgpAQCAtMCwwICsxLDE2IEBACitMSUNFTlNFID0gIkxHUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmJjMDkzOTAxODU3ZmNkMTE4ZjA2NWY5MDA5ODJjMjQiCitERVNDUklQVElPTiA9ICJSdW50aW1lIGxpYnJhcmllcyBmb3IgcGFyc2luZyBhbmQgY3JlYXRpbmcgTUlNRSBtYWlsIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJnbGliLTIuMCB6bGliIgorCitpbmhlcml0IGdub21lYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworU1JDX1VSSSArPSAiZmlsZTovL2ljb252LWRldGVjdC5oIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ub2RvbHQucGF0Y2giCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjY1NjU0OGRjNDMxMDA0ZDFlYmY5NWU1ZDBiYjRiOWM4IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiYWJmZjE5NGM3YzQ4MDJmYmEyZTIzMzg5MGQwOWRkZThiZjcxNzBjM2FkNWUxMzAwMDYwMWM4ZDViM2M0NDcxNyIKKworZXhwb3J0IGFjX2N2X2hhdmVfaWNvbnZfZGV0ZWN0X2g9InllcyIKK2RvX2NvbmZpZ3VyZV9hcHBlbmQgPSAiY3AgJHtXT1JLRElSfS9pY29udi1kZXRlY3QuaCAke1N9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYnBlYXMvbGlicGVhc18xLjI0LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGlicGVhcy9saWJwZWFzXzEuMjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM4ZTBlMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGlicGVhcy9saWJwZWFzXzEuMjQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAibGlicGVhcyBpcyBhIGdvYmplY3QtYmFzZWQgcGx1Z2lucyBlbmdpbmUiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL0xpYnBlYXMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRiNTRhMWZkNTVhNDQ4ODY1YTBiMzJkNDE1OTg3NTlkIgotCi1ERVBFTkRTID0gImd0ayszIgotCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgotCi1pbmhlcml0IGdub21lYmFzZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBndGstaWNvbi1jYWNoZQotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJiYmVjZjMzNGE3MzMzZDBhNWQ0ZDY1NWJhMzhiZTliNCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjljM2FjZjdhNTY3Y2JiNGY4YmY2MmIwOTZlMDEzZjEyYzM5MTFjYzg1MGMzZmE5OTAwY2JkNWFhNGY2ZWMyODQiCi0KLVBBQ0tBR0VDT05GSUdbcHl0aG9uM10gPSAiLURweXRob24zPXRydWUsLURweXRob24zPWZhbHNlLHB5dGhvbjMtcHlnb2JqZWN0IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZGVtbyAke1BOfS1weXRob24zIgotRklMRVNfJHtQTn0tZGVtbyA9ICIgXAotICAgICR7YmluZGlyfS9wZWFzLWRlbW8gXAotICAgICR7bGliZGlyfS9wZWFzLWRlbW8gXAotIgotCi1SREVQRU5EU18ke1BOfS1weXRob24zID0gInB5dGhvbjMtcHlnb2JqZWN0IgotRklMRVNfJHtQTn0tcHl0aG9uMyA9ICIke2xpYmRpcn0vbGlicGVhcy0xLjAvbG9hZGVycy9saWJweXRob24zbG9hZGVyLnNvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYnBlYXMvbGlicGVhc18xLjI1LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvbGlicGVhcy9saWJwZWFzXzEuMjUuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzQxOWE0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdub21lL2xpYnBlYXMvbGlicGVhc18xLjI1LjMuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJsaWJwZWFzIGlzIGEgZ29iamVjdC1iYXNlZCBwbHVnaW5zIGVuZ2luZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvTGlicGVhcyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGI1NGExZmQ1NWE0NDg4NjVhMGIzMmQ0MTU5ODc1OWQiCisKK0RFUEVORFMgPSAiZ3RrKzMiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitHVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCisKK2luaGVyaXQgZ25vbWViYXNlIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIGd0ay1pY29uLWNhY2hlCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjA4YmZmZjhmOTY4OGNmNjMwZGNiMGY5NTA2MTc2NjFmIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMWM5YmJiMjk3NDBjMjljZDZlMWRkMGM5OTY0NzIyZmYwOGNkNWU2ZjY4ZjFiNWMxMzViYzM5MWE2Y2U5NzYzOSIKKworUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItRHB5dGhvbjM9dHJ1ZSwtRHB5dGhvbjM9ZmFsc2UscHl0aG9uMy1weWdvYmplY3QiCisKK1BBQ0tBR0VTID0rICIke1BOfS1kZW1vICR7UE59LXB5dGhvbjMiCitGSUxFU18ke1BOfS1kZW1vID0gIiBcCisgICAgJHtiaW5kaXJ9L3BlYXMtZGVtbyBcCisgICAgJHtsaWJkaXJ9L3BlYXMtZGVtbyBcCisiCisKK1JERVBFTkRTXyR7UE59LXB5dGhvbjMgPSAicHl0aG9uMy1weWdvYmplY3QiCitGSUxFU18ke1BOfS1weXRob24zID0gIiR7bGliZGlyfS9saWJwZWFzLTEuMC9sb2FkZXJzL2xpYnB5dGhvbjNsb2FkZXIuc28iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ25vbWUvcHl4ZGcvcHl4ZGdfMC4yNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9weXhkZy9weXhkZ18wLjI2LmJiCmluZGV4IDAxMjhhN2MuLmE5NTdjMWQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9weXhkZy9weXhkZ18wLjI2LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1nbm9tZS9weXhkZy9weXhkZ18wLjI2LmJiCkBAIC03LDYgKzcsNiBAQAogU1JDUkVWID0gIjdkYjE0ZGNmNGM0MzA1YzM4NTlhMmQ5ZmNmOWY1ZGEyZGIzMjgzMzAiCiBTUkNfVVJJID0gImdpdDovL2Fub25naXQuZnJlZWRlc2t0b3Aub3JnL3hkZy9weXhkZyIKIAotaW5oZXJpdCBkaXN0dXRpbHMKK2luaGVyaXQgZGlzdHV0aWxzMwogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2JhYmwvYmFibF8wLjEuNjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvYmFibC9iYWJsXzAuMS42Mi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGE3ZGJjYS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvYmFibC9iYWJsXzAuMS42Mi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiQmFibCBpcyBhIGR5bmFtaWMsIGFueSB0byBhbnksIHBpeGVsIGZvcm1hdCBjb252ZXJzaW9uIGxpYnJhcnkiCi1MSUNFTlNFID0gIkxHUEwtMy4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYiCi0KLWluaGVyaXQgZ25vbWViYXNlCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5naW1wLm9yZy9wdWIvJHtCUE59LzAuMS8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gIjI4ZmE5ZDQzNTQ5Mzc4Y2VlYmUyODcxZDc3MjFkZDQ2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRjMjc5ZjE3NGVkYmNiMDg4MjFjZjM3ZTRhYjBiYzAyZTY5NDkzNjliMDBiMTUwYzc1OWE2YzI0YmZkM2Y1MTAiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vYmFibC0qLyouc28iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9iYWJsLSovKi5sYSIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2JhYmwtKi8uZGVidWcvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoCmluZGV4IDQ2ZDRkYmQuLjZhN2IxYmYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmEvMDAwMS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhLzAwMDEtRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2gKQEAgLTksMTIgKzksMTIgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDdjNjZiMzkuLjE0ODllZjYgMTAwNjQ0CitpbmRleCAyMzBjODdiLi5lNjk5ZTgzIDEwMDY0NAogLS0tIGEvQ01ha2VMaXN0cy50eHQKICsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtMTksNyArMTksNyBAQCBlbHNlKE5PVCBTUEhJTlhfRVhFQ1VUQUJMRS1OT1RGT1VORCkKLSAJbWVzc2FnZShTVEFUVVMgIkNvdWxkIE5PVCBmaW5kIHNwaGlueC1idWlsZC4iKQotIGVuZGlmKE5PVCBTUEhJTlhfRVhFQ1VUQUJMRS1OT1RGT1VORCkKK0BAIC0xOSw3ICsxOSw3IEBAIGVsc2UoU1BISU5YX0VYRUNVVEFCTEUgU1RSRVFVQUwgIlNQSElOWF9FWEVDVVRBQkxFLU5PVEZPVU5EIikKKyAJbWVzc2FnZShTVEFUVVMgIkZvdW5kIHNwaGlueC1idWlsZDogJHtTUEhJTlhfRVhFQ1VUQUJMRX0iKQorIGVuZGlmKFNQSElOWF9FWEVDVVRBQkxFIFNUUkVRVUFMICJTUEhJTlhfRVhFQ1VUQUJMRS1OT1RGT1VORCIpCiAgCiAtZXhlY3V0ZV9wcm9jZXNzKENPTU1BTkQgJHtQWVRIT05fRVhFQ1VUQUJMRX0gLWMgImZyb20gZGlzdHV0aWxzLnN5c2NvbmZpZyBpbXBvcnQgZ2V0X3B5dGhvbl9saWI7IHByaW50KGdldF9weXRob25fbGliKCksIGVuZD0nJykiIE9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCiArI2V4ZWN1dGVfcHJvY2VzcyhDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9IC1jICJmcm9tIGRpc3R1dGlscy5zeXNjb25maWcgaW1wb3J0IGdldF9weXRob25fbGliOyBwcmludChnZXRfcHl0aG9uX2xpYigpLCBlbmQ9JycpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX0lOU1RBTExfRElSKQpAQCAtMjIsNSArMjIsNSBAQAogIGV4ZWN1dGVfcHJvY2VzcyhDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9IC1jICJpbXBvcnQgc3lzOyBzeXMuc3Rkb3V0LndyaXRlKCclcy4lcycgJSAoc3lzLnZlcnNpb25faW5mby5tYWpvciwgc3lzLnZlcnNpb25faW5mby5taW5vcikpIiBPVVRQVVRfVkFSSUFCTEUgUFlUSE9OX01BSk9SX0RPVF9NSU5PUl9WRVJTSU9OKQogIG1lc3NhZ2UoU1RBVFVTICJQeXRob24gaW5zdGFsbCBkaXIgaXMgJHtQWVRIT05fSU5TVEFMTF9ESVJ9IikKIC0tIAotMi43LjQKKzIuMTcuMQogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhLzAwMDEtUnVuLXB5dGhvbi1zY3JpcHRzLXVzaW5nLWVudi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmEvMDAwMS1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NWI2YjhmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmEvMDAwMS1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotRnJvbSAxNWQwYWZjZmE0ODY4YjdiMDcyYjM0MzRiYWMwMDY0NjE3ZDYxZjk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgotRGF0ZTogVHVlLCAxOSBEZWMgMjAxNyAxNDo1MzoxNCArMDkwMAotU3ViamVjdDogW1BBVENIXSBSdW4gcHl0aG9uIHNjcmlwdHMgdXNpbmcgZW52Ci0KLU90aGVyd2lzZSB0aGUgYnVpbGQgdG9vbHMgaGFyZGNvZGUgdGhlIHB5dGhvbiBwYXRoIGludG8gdGhlbS4KLQotU2lnbmVkLW9mZi1ieTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgotLS0tCi0gYmluL2RuZmRyYWdvcmEgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9iaW4vZG5mZHJhZ29yYSBiL2Jpbi9kbmZkcmFnb3JhCi1pbmRleCBiOGUwNTUwLi5jZDgwZjdmIDEwMDc1NQotLS0tIGEvYmluL2RuZmRyYWdvcmEKLSsrKyBiL2Jpbi9kbmZkcmFnb3JhCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL3B5dGhvbjMKLSsjIS91c3IvYmluL2VudiBweXRob24zCi0gIyB2aW06IHNldCBldCB0cz00IHN3PTQ6Ci0gIyAgICBDb3B5cmlnaHQgMjAxNi0yMDE3IEFuZ2VsbyBOYXNlbGxpIDxhbmFzZWxsaUBsaW51eC5pdD4KLSAjCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmEvMDAwMS1Uby1maXgtZXJyb3Itd2hlbi1kb19wYWNrYWdlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLVRvLWZpeC1lcnJvci13aGVuLWRvX3BhY2thZ2UucGF0Y2gKaW5kZXggOTBjZTFkMC4uYmVmNDcxMSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLVRvLWZpeC1lcnJvci13aGVuLWRvX3BhY2thZ2UucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLVRvLWZpeC1lcnJvci13aGVuLWRvX3BhY2thZ2UucGF0Y2gKQEAgLTMsNyArMyw4IEBACiBEYXRlOiBUdWUsIDE5IERlYyAyMDE3IDExOjE1OjI5ICswOTAwCiBTdWJqZWN0OiBbUEFUQ0hdIFRvIGZpeCBlcnJvciB3aGVuIGRvX3BhY2thZ2UKIAotUUEgSXNzdWU6IG5hdGl2ZXNkay1kbmZkcmFnb3JhOiBGaWxlcy9kaXJlY3RvcmllcyB3ZXJlIGluc3RhbGxlZCBidXQgbm90IHNoaXBwZWQgaW4gYW55IHBhY2thZ2U6CitRQSBJc3N1ZTogbmF0aXZlc2RrLWRuZmRyYWdvcmE6IEZpbGVzL2RpcmVjdG9yaWVzIHdlcmUgaW5zdGFsbGVkIGJ1dCBub3QKK3NoaXBwZWQgaW4gYW55IHBhY2thZ2U6CiAgIC9ldGMKICAgL2V0Yy9kbmZkcmFnb3JhCiAgIC9ldGMvZG5mZHJhZ29yYS9kbmZkcmFnb3JhLnlhbWwKQEAgLTE0LDE4ICsxNSwxOCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggN2M2NmIzOS4uYTU2NTlmNyAxMDA2NDQKK2luZGV4IDIzMGM4N2IuLjFiOGQ4MDAgMTAwNjQ0CiAtLS0gYS9DTWFrZUxpc3RzLnR4dAogKysrIGIvQ01ha2VMaXN0cy50eHQKLUBAIC01Miw3ICs1Miw3IEBAIGVuZGlmKEVOQUJMRV9DT01QUykKK0BAIC02OCw3ICs2OCw3IEBAIGVuZGlmKEVOQUJMRV9DT01QUykKICBzZXQoQ01BS0VfSU5TVEFMTF9CSU5ESVIgIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L2JpbiIpCiAgc2V0KENNQUtFX0lOU1RBTExfREFUQVJPT1RESVIgIiR7Q01BS0VfSU5TVEFMTF9QUkVGSVh9L3NoYXJlIikKICBzZXQoQ01BS0VfSU5TVEFMTF9MT0NBTEVESVIgIiR7Q01BS0VfSU5TVEFMTF9EQVRBUk9PVERJUn0vbG9jYWxlIikKLS1zZXQoQ01BS0VfSU5TVEFMTF9GVUxMX1NZU0NPTkZESVIgIi9ldGMiKQotK3NldChDTUFLRV9JTlNUQUxMX0ZVTExfU1lTQ09ORkRJUiAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vLi4vZXRjIikKKy1zZXQoQ01BS0VfSU5TVEFMTF9GVUxMX1NZU0NPTkZESVIgIi9ldGMiIENBQ0hFIFBBVEggInN5c2NvbmZpZyBkaXJlY3RvcnkgKGRlZmF1bHQgL2V0YykiKQorK3NldChDTUFLRV9JTlNUQUxMX0ZVTExfU1lTQ09ORkRJUiAiJHtDTUFLRV9JTlNUQUxMX1BSRUZJWH0vLi4vZXRjIiBDQUNIRSBQQVRIICJzeXNjb25maWcgZGlyZWN0b3J5IChkZWZhdWx0IC9ldGMpIikKICAKICAjIENvbmZpZ3VyZSBmaWxlcwogIGNvbmZpZ3VyZV9maWxlKCR7Q01BS0VfU09VUkNFX0RJUn0vZXRjL2RuZmRyYWdvcmEueWFtbC5pbiAke0NNQUtFX0JJTkFSWV9ESVJ9L2V0Yy9kbmZkcmFnb3JhLnlhbWwgQE9OTFkpCiAtLSAKLTIuNy40CisyLjE3LjEKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2RuZmRyYWdvcmEvZG5mZHJhZ29yYS8wMDAxLWRpc2FibGUtYnVpbGQtbWFucGFnZXMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhLzAwMDEtZGlzYWJsZS1idWlsZC1tYW5wYWdlcy5wYXRjaAppbmRleCA4OGJiNjM0Li5jOGIxMDVlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhLzAwMDEtZGlzYWJsZS1idWlsZC1tYW5wYWdlcy5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhLzAwMDEtZGlzYWJsZS1idWlsZC1tYW5wYWdlcy5wYXRjaApAQCAtOSwxNyArOSwxNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA3YzY2YjM5Li5mYzMyNzUwIDEwMDY0NAoraW5kZXggMjMwYzg3Yi4uMTYyNDk5OCAxMDA2NDQKIC0tLSBhL0NNYWtlTGlzdHMudHh0CiArKysgYi9DTWFrZUxpc3RzLnR4dAotQEAgLTY1LDcgKzY1LDYgQEAgZW5kaWYoR0VUVEVYVF9GT1VORCkKK0BAIC04MSw3ICs4MSw2IEBAIGVuZGlmKEdFVFRFWFRfRk9VTkQpCiAgCiAgIyBCdWlsZCBhbmQgaW5zdGFsbCB0aGUgbWFuLXBhZ2VzCi0gaWYoTk9UIFNQSElOWF9FWEVDVVRBQkxFLU5PVEZPVU5EKQorIGlmKE5PVCBTUEhJTlhfRVhFQ1VUQUJMRSBTVFJFUVVBTCAiU1BISU5YX0VYRUNVVEFCTEUtTk9URk9VTkQiKQogLQlhZGRfc3ViZGlyZWN0b3J5KG1hbikKLSBlbmRpZihOT1QgU1BISU5YX0VYRUNVVEFCTEUtTk9URk9VTkQpCisgZW5kaWYoTk9UIFNQSElOWF9FWEVDVVRBQkxFIFNUUkVRVUFMICJTUEhJTlhfRVhFQ1VUQUJMRS1OT1RGT1VORCIpCiAgCiAgIyBJbnN0YWxsaW5nIGFwcGxpY2F0aW9uIGNvZGUKIC0tIAotMi43LjQKKzIuMTcuMQogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZG5mZHJhZ29yYS9kbmZkcmFnb3JhX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmFfZ2l0LmJiCmluZGV4IDljZDFlZmIuLjAwNzM4NTEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmFfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9kbmZkcmFnb3JhL2RuZmRyYWdvcmFfZ2l0LmJiCkBAIC03LDE1ICs3LDE0IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc2FibGUtYnVpbGQtbWFucGFnZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVRvLWZpeC1lcnJvci13aGVuLWRvX3BhY2thZ2UucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoIFwKICAgICAgICAgICAgIgogCi1QViA9ICIxLjAuMStnaXQke1NSQ1BWfSIKLVNSQ1JFViA9ICI0ZmVmNGNlODg5YjhlNGZhMDMxOTFkNDE0ZjYzYmZkNTA3OTYxNTJhIgorUFYgPSAiMS4xLjIrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiMTllMTIzMTMyY2ZkNGVmZDg2MGU1MjA0MjYxYzNjMjI4YmZlODBhOCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotaW5oZXJpdCBjbWFrZSBnZXR0ZXh0IHBrZ2NvbmZpZyBweXRob24zLWRpciBweXRob24zbmF0aXZlIGRpc3R1dGlsczMtYmFzZQoraW5oZXJpdCBjbWFrZSBnZXR0ZXh0IHBrZ2NvbmZpZyBweXRob24zLWRpciBweXRob24zbmF0aXZlIGRpc3R1dGlsczMtYmFzZSBtaW1lLXhkZwogCiBERVBFTkRTICs9ICJkbmYgcHl0aG9uMyAiCiAjREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgKz0gIm5hdGl2ZXNkay1weXRob24zIgpAQCAtMjcsNCArMjYsNyBAQAogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKIAotRklMRVNfJHtQTn0gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vICR7ZGF0YWRpcn0vICR7YmluZGlyfS8gJHtzeXNjb25mZGlyfS9kbmZkcmFnb3JhICIKK0ZJTEVTXyR7UE59ID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyAke2RhdGFkaXJ9LyAke2JpbmRpcn0vICR7c3lzY29uZmRpcn0vZG5mZHJhZ29yYSAke3N5c2NvbmZkaXJ9L3hkZyIKKworUE5CTEFDS0xJU1RbZG5mZHJhZ29yYV0gPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFX0NMQVNTRVMnLCAncGFja2FnZV9ycG0nLCAnJywgJ2RvZXMgbm90IGJ1aWxkIGNvcnJlY3RseSB3aXRob3V0IHBhY2thZ2VfcnBtIGluIFBBQ0tBR0VfQ0xBU1NFUycsIGQpfSIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZiZ3JhYi9mYmdyYWJfMS4zLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZmJncmFiL2ZiZ3JhYl8xLjMuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lM2RmZjkxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZiZ3JhYi9mYmdyYWJfMS4zLjMuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJGQkdyYWIgaXMgYSBmcmFtZWJ1ZmZlciBzY3JlZW5zaG90IHByb2dyYW0iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vR3VubmFyTW9uZWxsL2ZiZ3JhYiIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYTViZWQyZjYwZDM1NzYxOGNhMTYxYWQ1MzlmN2MwYSIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0RFUEVORFMgPSAibGlicG5nIHpsaWIiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vR3VubmFyTW9uZWxsL2ZiZ3JhYi5naXQ7cHJvdG9jb2w9aHR0cHMiCisKK1NSQ1JFViA9ICJiMTc5ZTJhNDJiOGE1ZDcyNTE2YjljOGQ5MTcxM2M5MDI1Y2Y2MDQ0IgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHNlZCAtaSAnc3wkKERFU1RESVIpL3Vzci9tYW4vfCQoREVTVERJUikke21hbmRpcn0vfGcnICR7U30vTWFrZWZpbGUKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mYmdyYWIvZmJncmFiXzEuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mYmdyYWIvZmJncmFiXzEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTEyYmMwOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZmJncmFiL2ZiZ3JhYl8xLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIkZCR3JhYiBpcyBhIGZyYW1lYnVmZmVyIHNjcmVlbnNob3QgcHJvZ3JhbSIKLUhPTUVQQUdFID0gImh0dHA6Ly9mYmdyYWIubW9uZWxscy5zZS8iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWE1YmVkMmY2MGQzNTc2MThjYTE2MWFkNTM5ZjdjMGEiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1ERVBFTkRTID0gImxpYnBuZyB6bGliIgotU1JDX1VSSSA9ICJodHRwOi8vZmJncmFiLm1vbmVsbHMuc2UvJHtCUH0udGFyLmd6IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotU1JDX1VSSVttZDVzdW1dID0gIjdkOGMyNDA4MWM2ODFkZmJiYTIxZjI5MzRjMWFjNjU2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmYWI0NzhjYmY4NzMxZmJhY2VmYWE3NjIzNmE4ZjhiMzhjY2ZmOTIwYzUzYjNhODI1M2JjMzU1MDlmYmE4ZWQiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAnc3wkKERFU1RESVIpL3Vzci9tYW4vfCQoREVTVERJUikke21hbmRpcn0vfGcnICR7U30vTWFrZWZpbGUKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mb250Zm9yZ2UvZm9udGZvcmdlXzIwMTkwODAxLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRmb3JnZS9mb250Zm9yZ2VfMjAxOTA4MDEuYmIKaW5kZXggYjg0ODA2Zi4uMTg2M2Y5NSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRmb3JnZS9mb250Zm9yZ2VfMjAxOTA4MDEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZvbnRmb3JnZS9mb250Zm9yZ2VfMjAxOTA4MDEuYmIKQEAgLTYsMTAgKzYsMTAgQEAKICAgICBmaWxlOi8vTElDRU5TRTttZDU9ZDA0MmYzZDJhOGZkNzIwOGI3MDRhNDk5MTY4ZTNjODkgXAogIgogCi1ERVBFTkRTID0gImdsaWItMi4wIHBhbmdvIGdpZmxpYiB0aWZmIGxpYnhtbDIganBlZyBsaWJ0b29sIHV0aGFzaCBnZXR0ZXh0LW5hdGl2ZSIKK0RFUEVORFMgPSAicHl0aG9uMyBnbGliLTIuMCBwYW5nbyBnaWZsaWIgdGlmZiBsaWJ4bWwyIGpwZWcgbGlidG9vbCB1dGhhc2ggZ2V0dGV4dC1uYXRpdmUiCiBERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGxpYnhpIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHl0aG9uM25hdGl2ZSBmZWF0dXJlc19jaGVjayBnZXR0ZXh0IGd0ay1pY29uLWNhY2hlIG1pbWUKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBweXRob24zbmF0aXZlIGZlYXR1cmVzX2NoZWNrIGdldHRleHQgZ3RrLWljb24tY2FjaGUgbWltZSBtaW1lLXhkZwogCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgeDExIgogCkBAIC0yMCw5ICsyMCwxMiBAQAogIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlidW5pbmFtZXNsaXN0IgorRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlidW5pbmFtZXNsaXN0ICAtLWVuYWJsZS1weXRob24tc2NyaXB0aW5nIC0tZW5hYmxlLXB5dGhvbi1leHRlbnNpb24iCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgd2l0aF94PW5vIgogCitMREZMQUdTICs9ICItbHB5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0iCitCVUlMRF9MREZMQUdTICs9ICItbHB5dGhvbiR7UFlUSE9OX0JBU0VWRVJTSU9OfSR7UFlUSE9OX0FCSX0iCisKICNkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKICMgdXRoYXNoIHNvdXJjZXMgYXJlIGV4cGVjdGVkIGluIHV0aGFzaC9zcmMKICMgICAgbWtkaXIgLXAgJHtTfS91dGhhc2gvc3JjCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZWdsdXQvZnJlZWdsdXRfMy4wLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZWdsdXQvZnJlZWdsdXRfMy4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNTQwYmIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWVnbHV0L2ZyZWVnbHV0XzMuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiRnJlZUdMVVQgaXMgYSBmcmVlLXNvZnR3YXJlL29wZW4tc291cmNlIGFsdGVybmF0aXZlIHRvIHRoZSBPcGVuR0wgXAotICAgICAgICAgICAgICAgVXRpbGl0eSBUb29sa2l0IChHTFVUKSBsaWJyYXJ5IgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04OWMwYjU4YTNlMDFjZTNkODI1NGM5ZjU5ZTc4YWRmYiIKLQotU1JDX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy8ke0JQTn0vZmlsZXMvJHtCUE59LyR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiOTBjM2NhNGRkOWQ1MWNmMzIyNzZiYzUzNDRlYzk3NTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmE0M2JlODUxNWIwMWVhODJiY2ZhMTdkMjlhZTBkNDBiZDEyODM0MmYwOTMwY2QxZjM3NWYxZmY5OTlmNzZhMiIKLQotaW5oZXJpdCBjbWFrZSBmZWF0dXJlc19jaGVjawotCi0jIGRlcGVuZHMgb24gdmlydHVhbC9saWJ4MTEsIHZpcnR1YWwvbGliZ2wKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgb3BlbmdsIgotCi1QUk9WSURFUyArPSAibWVzYS1nbHV0IgotCi1ERVBFTkRTID0gInZpcnR1YWwvbGlieDExIGxpYnhtdSBsaWJ4aSB2aXJ0dWFsL2xpYmdsIGxpYmdsdSBsaWJ4cmFuZHIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZWdsdXQvZnJlZWdsdXRfMy4yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZWdsdXQvZnJlZWdsdXRfMy4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODUxNjQxYwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mcmVlZ2x1dC9mcmVlZ2x1dF8zLjIuMS5iYgpAQCAtMCwwICsxLDE3IEBACitERVNDUklQVElPTiA9ICJGcmVlR0xVVCBpcyBhIGZyZWUtc29mdHdhcmUvb3Blbi1zb3VyY2UgYWx0ZXJuYXRpdmUgdG8gdGhlIE9wZW5HTCBcCisgICAgICAgICAgICAgICBVdGlsaXR5IFRvb2xraXQgKEdMVVQpIGxpYnJhcnkiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTg5YzBiNThhM2UwMWNlM2Q4MjU0YzlmNTllNzhhZGZiIgorCitTUkNfVVJJID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzLyR7QlBOfS9maWxlcy8ke0JQTn0vJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZDVjNjcwYzEwODYzNTg1OThhNmQ0YTlkMTY2OTQ5ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNDAwMGUwMjEwMmFjYWYyNTk5OThjODcwZTI1MjE0NzM5ZDFmMTZmNjdmOTljYjM1ZTRmNDY4NDEzOTlkYTY4IgorCitpbmhlcml0IGNtYWtlIGZlYXR1cmVzX2NoZWNrCisKKyMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMSwgdmlydHVhbC9saWJnbAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSBvcGVuZ2wiCisKK1BST1ZJREVTICs9ICJtZXNhLWdsdXQiCisKK0RFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlieG11IGxpYnhpIHZpcnR1YWwvbGliZ2wgbGliZ2x1IGxpYnhyYW5kciIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mdndtL2Z2d21fMi42LjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZnZ3bS9mdndtXzIuNi45LmJiCmluZGV4IGQxYmE0ODIuLjUxZjVhNGUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9mdndtL2Z2d21fMi42LjkuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2Z2d20vZnZ3bV8yLjYuOS5iYgpAQCAtNDAsNyArNDAsNyBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnIHB5dGhvbm5hdGl2ZSBwZXJsbmF0aXZlIGZlYXR1cmVzX2NoZWNrCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMgcGtnY29uZmlnIHB5dGhvbjNuYXRpdmUgcGVybG5hdGl2ZSBmZWF0dXJlc19jaGVjawogIyBkZXBlbmRzIG9uIHZpcnR1YWwvbGlieDExCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2VnbC9nZWdsL3BrZ2NvbmZpZy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nZWdsL2dlZ2wvcGtnY29uZmlnLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTQ1YjYyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9nZWdsL2dlZ2wvcGtnY29uZmlnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotSW5kZXg6IGdlZ2wtMC4yLjAvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2VnbC0wLjIuMC5vcmlnL2NvbmZpZ3VyZS5hYwkyMDEyLTA0LTAyIDIxOjU2OjQ5LjAwMDAwMDAwMCArMDAwMAotKysrIGdlZ2wtMC4yLjAvY29uZmlndXJlLmFjCTIwMTQtMDctMTcgMjE6MzQ6MTUuMzEyNTQ2NjAyICswMDAwCi1AQCAtNzY1LDE1ICs3NjUsNyBAQAotIAotIGhhdmVfc2RsPSJubyIKLSBpZiB0ZXN0ICJ4JHdpdGhfc2RsIiAhPSAieG5vIjsgdGhlbgotLSAgQUNfUEFUSF9QUk9HKFNETF9DT05GSUcsIHNkbC1jb25maWcsIG5vKQotLSAgaWYgdGVzdCAiJFNETF9DT05GSUciID0gIm5vIjsgdGhlbgotLSAgICBoYXZlX3NkbD0ibm8gIChTREwgbGlicmFyeSBub3QgZm91bmQpIgotLSAgICBBQ19NU0dfUkVTVUxUKFsqKiogQ2hlY2sgZm9yIFNETCBsaWJyYXJ5IGZhaWxlZC5dKQotLSAgZWxzZQotLSAgICBoYXZlX3NkbD0ieWVzIgotLSAgICBTRExfQ0ZMQUdTPWAkU0RMX0NPTkZJRyAtLWNmbGFnc2AKLS0gICAgU0RMX0xJQlM9YCRTRExfQ09ORklHIC0tbGlic2AKLS0gIGZpCi0rICBQS0dfQ0hFQ0tfTU9EVUxFUyhbU0RMXSwgW3NkbF0sIFtoYXZlX3NkbD0ieWVzIl0sIFtoYXZlX3NkbD0ibm8gIChTREwgbGlicmFyeSBub3QgZm91bmQpIl0pCi0gZmkKLSAKLSBBTV9DT05ESVRJT05BTChIQVZFX1NETCwgdGVzdCAiJGhhdmVfc2RsIiA9ICJ5ZXMiKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dlZ2wvZ2VnbF8wLjMuMTguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2VnbC9nZWdsXzAuMy4xOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGRiMGY3OS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2VnbC9nZWdsXzAuMy4xOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLVNVTU1BUlkgPSAiR0VHTCAoR2VuZXJpYyBHcmFwaGljcyBMaWJyYXJ5KSBpcyBhIGdyYXBoIGJhc2VkIGltYWdlIHByb2Nlc3NpbmcgZnJhbWV3b3JrIgotTElDRU5TRSA9ICJMR1BMLTMuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotREVQRU5EUyA9ICJiYWJsIGxpYnJzdmcgZ2xpYi0yLjAgZ3RrKyBwYW5nbyBjYWlybyBleHBhdCB6bGliIGxpYnBuZyBqcGVnIHZpcnR1YWwvbGlic2RsIGpzb24tZ2xpYiBpbnRsdG9vbC1uYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jcyIKLQotaW5oZXJpdCBmZWF0dXJlc19jaGVjayBnbm9tZWJhc2UgdmFsYSBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbamFzcGVyXSA9ICItLXdpdGgtamFzcGVyLC0td2l0aG91dC1qYXNwZXIsamFzcGVyIgotUEFDS0FHRUNPTkZJR1thdmZvcm1hdF0gPSAiLS13aXRoLWxpYmF2Zm9ybWF0LC0td2l0aG91dC1saWJhdmZvcm1hdCxsaWJhdiIKLVBBQ0tBR0VDT05GSUdbbGNtc10gPSAiLS13aXRoLWxjbXMsLS13aXRob3V0LWxjbXMsbGNtcyIKLVBBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLS13aXRoLWxpYnRpZmYsLS13aXRob3V0LWxpYnRpZmYsdGlmZiIKLVBBQ0tBR0VDT05GSUdbd2VicF0gPSAiLS13aXRoLXdlYnAsLS13aXRob3V0LXdlYnAsd2VicCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdpbXAub3JnL3B1Yi8ke0JQTn0vMC4zLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZTVjNmYyMjkyNjE0NzhkYzQzNmEzOGM4NDQwNWIyYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkNzg1OGVmMjZlZGUxMzZkMTRlM2RlMTg4YTllOWMwZGU3NzA3MDYxYTlmYjk2ZDdkNjE1ZmFiNDk1ODQ5MWZiIgotCi1MREZMQUdTICs9ICItbG0iCi0KLSMgVGhlcmUgYXJlIGEgY291cGxlIG9mIG5vbi1zeW1saW5rIC5zbyBmaWxlcyBpbnN0YWxsZWQgaW50byBsaWJkaXIsIHdoaWNoIG5lZWQgdG8gZ28gaW50byBtYWluIHBhY2thZ2UKLUZJTEVTXyR7UE59X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L2dlZ2wtMC4zLyouc28gJHtsaWJkaXJ9L2dlZ2wtMC4zLyouanNvbiAke2xpYmRpcn0vbGliZ2VnbC1ucGQtMC4zLnNvICR7bGliZGlyfS9saWJnZWdsLXNjLTAuMy5zbyIKLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7bGliZGlyfS9nZWdsLTAuMy8qLmxhICR7bGliZGlyfS9saWJnZWdsLTAuMy5zbyIKLUZJTEVTXyR7UE59LWRldl9yZW1vdmUgPSAiJHtsaWJkaXJ9L2xpYiouc28iCi0KLSMgRmFpbHMgdG8gYnVpbGQgd2l0aCB0aHVtYi0xIChxZW11YXJtKQotIyBnZWdsLTAuMi4wL29wZXJhdGlvbnMvY29tbW9uL21hdHRpbmctZ2xvYmFsLmM6IEluIGZ1bmN0aW9uICdtYXR0aW5nX3Byb2Nlc3MnOgotIyBnZWdsLTAuMi4wL29wZXJhdGlvbnMvY29tbW9uL21hdHRpbmctZ2xvYmFsLmM6NDYzOjE6IGludGVybmFsIGNvbXBpbGVyIGVycm9yOiBpbiBwYXRjaF9qdW1wX2luc24sIGF0IGNmZ3J0bC5jOjEyNzUKLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dpbXAvZ2ltcC8wMDAxLWNvbmZpZ3VyZS1hYy1kby1ub3QtY2hlY2stZm9yLWZyZWV0eXBlLWNvbmZpZy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXAvMDAwMS1jb25maWd1cmUtYWMtZG8tbm90LWNoZWNrLWZvci1mcmVldHlwZS1jb25maWcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlY2QwMTIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dpbXAvZ2ltcC8wMDAxLWNvbmZpZ3VyZS1hYy1kby1ub3QtY2hlY2stZm9yLWZyZWV0eXBlLWNvbmZpZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gNzJhZDc2ODQxZDg3ZTg1NzQyODY5M2Q4MTJhOTYxOTM1Mjg0YWM2MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9BbmRyZWFzPTIwTT1DMz1CQ2xsZXI/PSA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLURhdGU6IFRodSwgMTIgRmViIDIwMTUgMTU6NTc6NDcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLWFjOiBkbyBub3QgY2hlY2sgZm9yIGZyZWV0eXBlLWNvbmZpZwotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1mcmVldHlwZS1jb25maWcgaXMgbm90IGFsbG93ZWQgaW4gb3VyIGVudmlyb25tZW50IC0gc2VlIGFsc28gYmluY29uZmlnLWRpc2FibGVkCi0KLVVwc3RyZWFtLVN0YXR1czogaW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDcgLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyNjgxMmI2Li5hYmVjNzE0IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02NDcsMTMgKzY0Nyw2IEBAIGlmIHRlc3QgIngkZm9udGNvbmZpZ19vayIgPSB4bm87IHRoZW4KLSBmaQotIAotIAotLUFDX1BBVEhfUFJPRyhGUkVFVFlQRV9DT05GSUcsIGZyZWV0eXBlLWNvbmZpZywgbm8pCi0taWYgdGVzdCAieCRGUkVFVFlQRV9DT05GSUciICE9ICJ4bm8iIDsgdGhlbgotLSAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgZnJlZXR5cGUgbGlicmFyaWVzXSkKLS0gIEZSRUVUWVBFX0xJQlM9YCRGUkVFVFlQRV9DT05GSUcgLS1saWJzYAotLSAgQUNfTVNHX1JFU1VMVCgkRlJFRVRZUEVfTElCUykKLS1maQotLUFDX1NVQlNUKEZSRUVUWVBFX0xJQlMpCi0gCi0gCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0tLSAKLTEuOS4zCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXAvMDAwMy1GaXgtdXNlLW9mLWdlZ2wtQVBJLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dpbXAvZ2ltcC8wMDAzLUZpeC11c2Utb2YtZ2VnbC1BUEkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkYTc4ZTIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dpbXAvZ2ltcC8wMDAzLUZpeC11c2Utb2YtZ2VnbC1BUEkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGUxYzhmNGI4MzIzZTM5NjUyNzFhOTM1MjllYWI1Nzc0YzFhNzA4M2MgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAyOSBKdW4gMjAxNyAxMDozMjoxNCAtMDcwMAotU3ViamVjdDogW1BBVENIIDMvM10gRml4IHVzZSBvZiBnZWdsIEFQSQotCi1uZXdlciB2ZXJzaW9uIG9mIGdlZ2wgZG9lcyBub3QgZGVmaW5lIEdFR0xfSVNfUEFSQU1fU1BFQ19NVUxUSUxJTkUKLQotfCBjb3JlL2xpYmFwcGNvcmUuYShnaW1wcGFyYW1zcGVjcy1kdXBsaWNhdGUubyk6IEluIGZ1bmN0aW9uIGBnaW1wX3BhcmFtX3NwZWNfZHVwbGljYXRlJzoKLXwgL3Vzci9zcmMvZGVidWcvZ2ltcC8yLjguMjItcjAvZ2ltcC0yLjguMjIvYXBwL2NvcmUvLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vd29ya3NwYWNlL3NvdXJjZXMvZ2ltcC9hcHAvY29yZS9naW1wcGFyYW1zcGVjcy1kdXBsaWNhdGUuYzo3MDogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgR0VHTF9JU19QQVJBTV9TUEVDX01VTFRJTElORScKLXwgY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gYXBwL2NvcmUvZ2ltcHBhcmFtc3BlY3MtZHVwbGljYXRlLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9hcHAvY29yZS9naW1wcGFyYW1zcGVjcy1kdXBsaWNhdGUuYyBiL2FwcC9jb3JlL2dpbXBwYXJhbXNwZWNzLWR1cGxpY2F0ZS5jCi1pbmRleCBjMGI3NDI2Li4yZWZhZjIzIDEwMDY0NAotLS0tIGEvYXBwL2NvcmUvZ2ltcHBhcmFtc3BlY3MtZHVwbGljYXRlLmMKLSsrKyBiL2FwcC9jb3JlL2dpbXBwYXJhbXNwZWNzLWR1cGxpY2F0ZS5jCi1AQCAtNjcsNyArNjcsNyBAQCBnaW1wX3BhcmFtX3NwZWNfZHVwbGljYXRlIChHUGFyYW1TcGVjICpwc3BlYykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3BlYy0+ZGVmYXVsdF92YWx1ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHNwZWMtPmZsYWdzKTsKLSAKLS0gICAgICAgICAgaWYgKEdFR0xfSVNfUEFSQU1fU1BFQ19NVUxUSUxJTkUgKHBzcGVjKSkKLSsgICAgICAgICAgaWYgKGdlZ2xfcGFyYW1fc3BlY19nZXRfcHJvcGVydHlfa2V5KHBzcGVjLCAibXVsdGlsaW5lIikpCi0gICAgICAgICAgICAgewotICAgICAgICAgICAgICAgZ19wYXJhbV9zcGVjX3NldF9xZGF0YSAobmV3LCBtdWx0aWxpbmVfcXVhcmssCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHSU5UX1RPX1BPSU5URVIgKFRSVUUpKTsKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXAvYnVtcF9CYWJsLUdFR0xfdmVyc2lvbnMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2ltcC9naW1wL2J1bXBfQmFibC1HRUdMX3ZlcnNpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzFiZjMyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXAvYnVtcF9CYWJsLUdFR0xfdmVyc2lvbnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1CdW1wIGFjY2VwdGFibGUgdmVyc2lvbnMgb2YgYmFibCBhbmQgZ2VnbC4KLQotUGF0Y2ggaXMgdGFrZW4gZnJvbSBkZWJpYW46Ci1odHRwczovL3BhY2thZ2VzLmRlYmlhbi5vcmcvc3RyZXRjaC9naW1wCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLWRpZmYgLS1naXQgYS9hcHAvc2FuaXR5LmMgYi9hcHAvc2FuaXR5LmMKLWluZGV4IGZlYmRkZmIuLjg1ZmVhNTUgMTAwNjQ0Ci0tLS0gYS9hcHAvc2FuaXR5LmMKLSsrKyBiL2FwcC9zYW5pdHkuYwotQEAgLTM1MSw3ICszNTEsNyBAQCBzYW5pdHlfY2hlY2tfYmFibCAodm9pZCkKLSAKLSAjZGVmaW5lIEJBQkxfUkVRVUlSRURfTUFKT1IgMAotICNkZWZpbmUgQkFCTF9SRVFVSVJFRF9NSU5PUiAxCi0tI2RlZmluZSBCQUJMX1JFUVVJUkVEX01JQ1JPIDEwCi0rI2RlZmluZSBCQUJMX1JFUVVJUkVEX01JQ1JPIDEyCi0gCi0gICBiYWJsX2dldF92ZXJzaW9uICgmYmFibF9tYWpvcl92ZXJzaW9uLAotICAgICAgICAgICAgICAgICAgICAgJmJhYmxfbWlub3JfdmVyc2lvbiwKLUBAIC0zODgsNyArMzg4LDcgQEAgc2FuaXR5X2NoZWNrX2dlZ2wgKHZvaWQpCi0gICBnaW50IGdlZ2xfbWljcm9fdmVyc2lvbjsKLSAKLSAjZGVmaW5lIEdFR0xfUkVRVUlSRURfTUFKT1IgMAotLSNkZWZpbmUgR0VHTF9SRVFVSVJFRF9NSU5PUiAyCi0rI2RlZmluZSBHRUdMX1JFUVVJUkVEX01JTk9SIDMKLSAjZGVmaW5lIEdFR0xfUkVRVUlSRURfTUlDUk8gMAotIAotICAgZ2VnbF9nZXRfdmVyc2lvbiAoJmdlZ2xfbWFqb3JfdmVyc2lvbiwKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDI2ODEyYjYuLjQyNTJmZTkgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTQwLDggKzQwLDggQEAgbTRfZGVmaW5lKFtnaW1wX3N0YWJsZV0sCi0gbTRfZGVmaW5lKFtnaW1wX2Z1bGxfbmFtZV0sIFtHTlUgSW1hZ2UgTWFuaXB1bGF0aW9uIFByb2dyYW1dKQotIAotICMgcmVxdWlyZWQgdmVyc2lvbnMgb2Ygb3RoZXIgcGFja2FnZXMKLS1tNF9kZWZpbmUoW2JhYmxfcmVxdWlyZWRfdmVyc2lvbl0sIFswLjEuMTBdKQotLW00X2RlZmluZShbZ2VnbF9yZXF1aXJlZF92ZXJzaW9uXSwgWzAuMi4wXSkKLSttNF9kZWZpbmUoW2JhYmxfcmVxdWlyZWRfdmVyc2lvbl0sIFswLjEuMTJdKQotK200X2RlZmluZShbZ2VnbF9yZXF1aXJlZF92ZXJzaW9uXSwgWzAuMy4wXSkKLSBtNF9kZWZpbmUoW2dsaWJfcmVxdWlyZWRfdmVyc2lvbl0sIFsyLjMwLjJdKQotIG00X2RlZmluZShbYXRrX3JlcXVpcmVkX3ZlcnNpb25dLCBbMi4yLjBdKQotIG00X2RlZmluZShbZ3RrX3JlcXVpcmVkX3ZlcnNpb25dLCBbMi4yNC4xMF0pCi1AQCAtNTE5LDcgKzUxOSw3IEBAIEFDX1NVQlNUKElTT19DT0RFU19MT0NBTEVESVIpCi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIAotIFBLR19DSEVDS19NT0RVTEVTKEJBQkwsIGJhYmwgPj0gYmFibF9yZXF1aXJlZF92ZXJzaW9uKQotLVBLR19DSEVDS19NT0RVTEVTKEdFR0wsIGdlZ2wtMC4yID49IGdlZ2xfcmVxdWlyZWRfdmVyc2lvbikKLStQS0dfQ0hFQ0tfTU9EVUxFUyhHRUdMLCBnZWdsLTAuMyA+PSBnZWdsX3JlcXVpcmVkX3ZlcnNpb24pCi0gUEtHX0NIRUNLX01PRFVMRVMoQVRLLCBhdGsgPj0gYXRrX3JlcXVpcmVkX3ZlcnNpb24pCi0gCi0gQU1fUEFUSF9HTElCXzJfMChnbGliX3JlcXVpcmVkX3ZlcnNpb24sIDosCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ2ltcC9naW1wXzIuOC4yMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXBfMi44LjIyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjQ1MzQ1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9naW1wL2dpbXBfMi44LjIyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgR0lNUCBpcyB0aGUgR05VIEltYWdlIE1hbmlwdWxhdGlvbiBQcm9ncmFtIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5naW1wLm9yZyIKLVNFQ1RJT04gPSAieDExL2dyYXBoaWNzIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1ERVBFTkRTID0gIiBcCi0gICAgZ2RrLXBpeGJ1Zi1uYXRpdmUgXAotICAgIGludGx0b29sLW5hdGl2ZSBcCi0gICAgbGlieHNsdC1uYXRpdmUgXAotICAgIGRidXMtZ2xpYiBcCi0gICAgZ3RrKyBcCi0gICAgYmFibCBcCi0gICAgZ2VnbCBcCi0gICAganBlZyBcCi0gICAgbGlicG5nIFwKLSAgICBsaWJleGlmIFwKLSAgICB0aWZmIFwKLSAgICBsY21zIFwKLSAgICBwb3BwbGVyIFwKLSAgICBqYXNwZXIgXAotICAgIGJ6aXAyIFwKLSAgICBsaWJndWRldiBcCi0gICAgbGlibW5nIFwKLSIKLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2xpYnhtdSBsaWJ4cG0nLCAnJywgZCl9IgotCi1pbmhlcml0IGZlYXR1cmVzX2NoZWNrIGdub21lYmFzZSBndGstaWNvbi1jYWNoZSBndGstZG9jCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5naW1wLm9yZy9wdWIvZ2ltcC92Mi44L2dpbXAtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1hYy1kby1ub3QtY2hlY2stZm9yLWZyZWV0eXBlLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idW1wX0JhYmwtR0VHTF92ZXJzaW9ucy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUZpeC11c2Utb2YtZ2VnbC1BUEkucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiN2U0ZmQ3YTUzYjFkM2MzMmRmZjY0MmFiMWE5NGI0NGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTE4N2EzNWNjNTJiMTEwZDc4MTI0ZDdiMjdiNjhhNjhhZGUxNGE3OTRjMjcyMTMxNGJhYzYxMzRkMmE1NjM4YSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1weXRob24gXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC13ZWJraXQgXAotICAgICAgICAgICAgICAgIC0td2l0aG91dC13bWYiCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0gICAgZmluZCAke0J9IC1uYW1lIE1ha2VmaWxlIHwgeGFyZ3Mgc2VkIC1pIHM6Jy1JJChpbmNsdWRlZGlyKSc6Jy1JLic6ZwotICAgIGZpbmQgJHtCfSAtbmFtZSBNYWtlZmlsZSB8IHhhcmdzIHNlZCAtaSBzOictSS91c3IvaW5jbHVkZSc6Jy1JJHtTVEFHSU5HX0lOQ0RJUn0nOmcKLX0KLQotQ0ZMQUdTICs9ICItZlBJQyIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ2ltcC8yLjAvKi8uZGVidWciCi1GSUxFU18ke1BOfSAgKz0gIiR7ZGF0YWRpcn0vYXBwZGF0YSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzJfMi41LjIzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMl8yLjUuMjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEzYmRmOWMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMl8yLjUuMjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gImxpYmdwaG90bzIgYWxsb3dzIHlvdSB0byBhY2Nlc3MgZGlnaXRhbCBjYW1lcmFzIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA0NDhkMzY3NmJjMGRlMDA0MDZhZjIyN2QzNDFhNGQxIgotCi1ERVBFTkRTID0gImxpYnRvb2wganBlZyB2aXJ0dWFsL2xpYnVzYjAgbGliZXhpZiB6bGliIGxpYnhtbDIiCi0KLSMgVGhlIC5mZGkgYW5kIC5ydWxlcyBmaWxlcyB3ZXJlIGdlbmVyYXRlZCB3aXRoOgotIyAgbGliZ3Bob3RvMi0yLjUuOC9wYWNrYWdpbmcvZ2VuZXJpYyQgcWVtdS1hcm0gLXMgMTA0ODU3NiAtciAyLjYuMjQgLUwgL09FL2FuZ3N0cm9tLWRldi9zdGFnaW5nL2FybXY1dGUtYW5nc3Ryb20tbGludXgtZ251ZWFiaS8gLmxpYnMvcHJpbnQtY2FtZXJhLWxpc3QKLSMgVGhleSBhcmUgcmVsZWFzZSBzcGVjaWZpYywgc28gcGxlYXNlIHJlZ2VuIHdoZW4gYWRkaW5nIG5ldyByZWxlYXNlcwotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9ncGhvdG8vbGliZ3Bob3RvMi0ke1BWfS50YXIuYnoyO25hbWU9bGliZ3Bob3RvMiBcCi0gICAgICAgICAgIGZpbGU6Ly80MC1saWJncGhvdG8yLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLXJlbW92ZS1BTV9QT19TVUJESVJTLnBhdGNoIFwKLSIKLQotU1JDX1VSSVtsaWJncGhvdG8yLm1kNXN1bV0gPSAiYmYwNTJjZTgxNWU2MDdkYzc4MWM1YjBmM2M1Y2E1YzAiCi1TUkNfVVJJW2xpYmdwaG90bzIuc2hhMjU2c3VtXSA9ICJkOGFmMjMzNjRhYTQwZmQ4NjA3ZjdlMDczZGY3NGU3YWNlMDU1ODJmNGJhMTNmMTcyNGQxMmQzYzk3ZTg4NTJkIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBsaWJfcGFja2FnZQotCi1FWFRSQV9PRUNPTkYgPSAiIC0td2l0aC1kcml2ZXJzPWFsbCB1ZGV2c2NyaXB0ZGlyPSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldiBhY19jdl9saWJfbHRkbF9sdF9kbGNhbGxlcl9yZWdpc3Rlcj15ZXMiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2dkXSA9ICIsLS13aXRob3V0LWdkbGliLGdkIgotUEFDS0FHRUNPTkZJR1tzZXJpYWxdID0gIi0tZW5hYmxlLXNlcmlhbCwtLWRpc2FibGUtc2VyaWFsLGxvY2tkZXYiCi0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0gICAgY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0L3BvL01ha2VmaWxlLmluLmluICR7U30vbGliZ3Bob3RvMl9wb3J0L3BvLwotICAgIGNkICR7U30vbGliZ3Bob3RvMl9wb3J0LwotICAgIGF1dG9yZWNvbmYgLVdjcm9zcyAtLXZlcmJvc2UgLS1pbnN0YWxsIC0tZm9yY2UgJHtFWFRSQV9BVVRPUkVDT05GfSAkYWNwYXRocwotICAgIGNkICR7U30KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCi0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vKi5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCi19Ci0KLVBBQ0tBR0VTID0rICJsaWJncGhvdG9wb3J0IGxpYmdwaG90bzItY2FtbGlicyIKLUZJTEVTX2xpYmdwaG90bzItY2FtbGlicyA9ICIke2xpYmRpcn0vbGliZ3Bob3RvMiovKi8qLnNvKiIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImxpYmdwaG90bzItY2FtbGlicyIKLQotRklMRVNfbGliZ3Bob3RvcG9ydCA9ICIke2xpYmRpcn0vbGliZ3Bob3RvMl9wb3J0LnNvLioiCi0KLUZJTEVTXyR7UE59ICs9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvKiIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9LyovKi8uZGVidWciCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS8qLyovKi5sYSIKLUZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9saWJncGhvdG8yX3BvcnQvMC4xMi4wL3ZjYW1lcmEvUkVBRE1FLnR4dCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzJfMi41LjI0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dwaG90bzIvbGliZ3Bob3RvMl8yLjUuMjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ5YjBjNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncGhvdG8yL2xpYmdwaG90bzJfMi41LjI0LmJiCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAibGliZ3Bob3RvMiBhbGxvd3MgeW91IHRvIGFjY2VzcyBkaWdpdGFsIGNhbWVyYXMiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MDQ0OGQzNjc2YmMwZGUwMDQwNmFmMjI3ZDM0MWE0ZDEiCisKK0RFUEVORFMgPSAibGlidG9vbCBqcGVnIHZpcnR1YWwvbGlidXNiMCBsaWJleGlmIHpsaWIgbGlieG1sMiIKKworIyBUaGUgLmZkaSBhbmQgLnJ1bGVzIGZpbGVzIHdlcmUgZ2VuZXJhdGVkIHdpdGg6CisjICBsaWJncGhvdG8yLTIuNS44L3BhY2thZ2luZy9nZW5lcmljJCBxZW11LWFybSAtcyAxMDQ4NTc2IC1yIDIuNi4yNCAtTCAvT0UvYW5nc3Ryb20tZGV2L3N0YWdpbmcvYXJtdjV0ZS1hbmdzdHJvbS1saW51eC1nbnVlYWJpLyAubGlicy9wcmludC1jYW1lcmEtbGlzdAorIyBUaGV5IGFyZSByZWxlYXNlIHNwZWNpZmljLCBzbyBwbGVhc2UgcmVnZW4gd2hlbiBhZGRpbmcgbmV3IHJlbGVhc2VzCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2dwaG90by9saWJncGhvdG8yLSR7UFZ9LnRhci5iejI7bmFtZT1saWJncGhvdG8yIFwKKyAgICAgICAgICAgZmlsZTovLzQwLWxpYmdwaG90bzIucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtcmVtb3ZlLUFNX1BPX1NVQkRJUlMucGF0Y2ggXAorIgorCitTUkNfVVJJW2xpYmdwaG90bzIubWQ1c3VtXSA9ICIwNjM2MzJkODM5YjcxNjk4ZTk5ZGEwY2NkMTliYzlmNiIKK1NSQ19VUklbbGliZ3Bob3RvMi5zaGEyNTZzdW1dID0gImZkM2M1Nzg3NjlmMGZhMzg5YzFlNjgxMjBmMjI0YmQ5ODQ3N2FhM2Q4MmQxNmI4Mjc0NmMxMjY2YzBkNGZiMzEiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IGxpYl9wYWNrYWdlCisKK0VYVFJBX09FQ09ORiA9ICIgLS13aXRoLWRyaXZlcnM9YWxsIHVkZXZzY3JpcHRkaXI9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2IGFjX2N2X2xpYl9sdGRsX2x0X2RsY2FsbGVyX3JlZ2lzdGVyPXllcyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbZ2RdID0gIiwtLXdpdGhvdXQtZ2RsaWIsZ2QiCitQQUNLQUdFQ09ORklHW3NlcmlhbF0gPSAiLS1lbmFibGUtc2VyaWFsLC0tZGlzYWJsZS1zZXJpYWwsbG9ja2RldiIKKworZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKKyAgICBjcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gJHtTfS9saWJncGhvdG8yX3BvcnQvcG8vCisgICAgY2QgJHtTfS9saWJncGhvdG8yX3BvcnQvCisgICAgYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAke0VYVFJBX0FVVE9SRUNPTkZ9ICRhY3BhdGhzCisgICAgY2QgJHtTfQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC8KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8qLnJ1bGVzICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC8KK30KKworUEFDS0FHRVMgPSsgImxpYmdwaG90b3BvcnQgbGliZ3Bob3RvMi1jYW1saWJzIgorRklMRVNfbGliZ3Bob3RvMi1jYW1saWJzID0gIiR7bGliZGlyfS9saWJncGhvdG8yKi8qLyouc28qIgorUlJFQ09NTUVORFNfJHtQTn0gPSAibGliZ3Bob3RvMi1jYW1saWJzIgorCitGSUxFU19saWJncGhvdG9wb3J0ID0gIiR7bGliZGlyfS9saWJncGhvdG8yX3BvcnQuc28uKiIKKworRklMRVNfJHtQTn0gKz0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldi8qIgorRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vKi8qLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyovKi8qLmxhIgorRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9L2xpYmdwaG90bzJfcG9ydC8wLjEyLjAvdmNhbWVyYS9SRUFETUUudHh0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dyYXBodml6L2dyYXBodml6XzIuNDAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ncmFwaHZpei9ncmFwaHZpel8yLjQwLjEuYmIKaW5kZXggMTc2Y2Y0NC4uMTJlY2I5OSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2dyYXBodml6L2dyYXBodml6XzIuNDAuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3JhcGh2aXovZ3JhcGh2aXpfMi40MC4xLmJiCkBAIC02Niw4ICs2Niw4IEBACiBGSUxFU18ke1BOfS1kZW1vICs9ICIke2RhdGFkaXJ9L2dyYXBodml6L2RlbW8vIgogCiBSREVQRU5EU18ke1BOfS1wZXJsICs9ICJwZXJsIgotUkRFUEVORFNfJHtQTn0tcHl0aG9uICs9ICJweXRob24iCi1SREVQRU5EU18ke1BOfS1kZW1vICs9ICJweXRob24gcGVybCIKK1JERVBFTkRTXyR7UE59LXB5dGhvbiArPSAicHl0aG9uMyIKK1JERVBFTkRTXyR7UE59LWRlbW8gKz0gInB5dGhvbjMgcGVybCIKIAogSU5TQU5FX1NLSVBfJHtQTn0tcGVybCA9ICJkZXYtc28iCiBJTlNBTkVfU0tJUF8ke1BOfS1weXRob24gPSAiZGV2LXNvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2d0a3dhdmUvZ3Rrd2F2ZV8zLjMuMTAzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2d0a3dhdmUvZ3Rrd2F2ZV8zLjMuMTAzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODZkOWFhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9ndGt3YXZlL2d0a3dhdmVfMy4zLjEwMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVNVTU1BUlkgPSAiVkNEIChWYWx1ZSBDaGFuZ2UgRHVtcCkgZmlsZSB3YXZlZm9ybSB2aWV3ZXIiCi1ERVNDUklQVElPTiA9ICJndGt3YXZlIGlzIGEgdmlld2VyIGZvciBWQ0QgKFZhbHVlIENoYW5nZSBEdW1wKSBmaWxlcyB3aGljaCBhcmUgdXN1YWxseSBjcmVhdGVkIGJ5IGRpZ2l0YWwgY2lyY3VpdCBzaW11bGF0b3JzLiAoVGhlc2UgZmlsZXMgaGF2ZSBubyBjb25uZWN0aW9uIHRvIHZpZGVvIENEcyEpICIKLUhPTUVQQUdFID0gImh0dHA6Ly9ndGt3YXZlLnNvdXJjZWZvcmdlLm5ldC8iCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTg1OTk4OTU0NWUzNzk2OGE5OWI2MzFlZjQyNzIyZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZ3Rrd2F2ZS5zb3VyY2Vmb3JnZS5uZXQvJHtCUH0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWE5YTU5MTNmOWEwMmEzMzNiMmIyMzYyNmYxNTNmZDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzMyNWFiZjdjZjI2YzUzMzA5YTY3YzBlY2FhZjE5Njc3NGZhOTgyYTcxN2ExMDJjNTk5YWM4YTUxNmVlZWFmNyIKLQotaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbwotREVQRU5EUyA9ICJ0Y2wgdGsgZ3BlcmYtbmF0aXZlIGJ6aXAyIHh6IHBhbmdvIHpsaWIgZ3RrKyBnZGstcGl4YnVmIGdsaWItMi4wIgotUkRFUEVORFNfJHtQTn0gPSAidGstbGliIgotCi0jIGRlcGVuZHMgb24gZ3RrKyB3aGljaCBoYXMgdGhpcyByZXN0cmljdGlvbgotaW5oZXJpdCBmZWF0dXJlc19jaGVjawotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzJESVNUUk9GRUFUVVJFU30iCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtdGNsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IC0td2l0aC10az0ke1NUQUdJTkdfQklORElSX0NST1NTfSAtLXdpdGgtdGlycGMiCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfSAke2RhdGFkaXJ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2d0a3dhdmUvZ3Rrd2F2ZV8zLjMuMTA0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2d0a3dhdmUvZ3Rrd2F2ZV8zLjMuMTA0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjMDZjMzAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvZ3Rrd2F2ZS9ndGt3YXZlXzMuMy4xMDQuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJWQ0QgKFZhbHVlIENoYW5nZSBEdW1wKSBmaWxlIHdhdmVmb3JtIHZpZXdlciIKK0RFU0NSSVBUSU9OID0gImd0a3dhdmUgaXMgYSB2aWV3ZXIgZm9yIFZDRCAoVmFsdWUgQ2hhbmdlIER1bXApIGZpbGVzIHdoaWNoIGFyZSB1c3VhbGx5IGNyZWF0ZWQgYnkgZGlnaXRhbCBjaXJjdWl0IHNpbXVsYXRvcnMuIChUaGVzZSBmaWxlcyBoYXZlIG5vIGNvbm5lY3Rpb24gdG8gdmlkZW8gQ0RzISkgIgorSE9NRVBBR0UgPSAiaHR0cDovL2d0a3dhdmUuc291cmNlZm9yZ2UubmV0LyIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1ODU5OTg5NTQ1ZTM3OTY4YTk5YjYzMWVmNDI3MjJlIgorCitTUkNfVVJJID0gImh0dHA6Ly9ndGt3YXZlLnNvdXJjZWZvcmdlLm5ldC8ke0JQfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMzg3OTY4OWVjZjdlMmNkZDJjZDVhOTFjNWM2MDFkYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkMjBkZDFhOTMwN2I5MDg0MzljNjgxMjJhOWY4MWQzZmY0MzRhNmJmYTU0MzlmMGNiMDEzOThmZWM2NTA4OTRmIgorCitpbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIG1pbWUgbWltZS14ZGcKK0RFUEVORFMgKz0gInRjbCB0ayBncGVyZi1uYXRpdmUgYnppcDIgeHogcGFuZ28gemxpYiBndGsrIGdkay1waXhidWYgZ2xpYi0yLjAiCitSREVQRU5EU18ke1BOfSArPSAidGstbGliIgorCisjIGRlcGVuZHMgb24gZ3RrKyB3aGljaCBoYXMgdGhpcyByZXN0cmljdGlvbgoraW5oZXJpdCBmZWF0dXJlc19jaGVjaworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzJESVNUUk9GRUFUVVJFU30iCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtdGNsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IC0td2l0aC10az0ke1NUQUdJTkdfQklORElSX0NST1NTfSAtLXdpdGgtdGlycGMiCisKK0ZJTEVTXyR7UE59ID0gIiR7YmluZGlyfSAke2RhdGFkaXJ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXJfMC45LjEyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZuY3NlcnZlci9saWJ2bmNzZXJ2ZXJfMC45LjEyLmJiCmluZGV4IDIyZmM4M2EuLmRmZGY4MjQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ2bmNzZXJ2ZXIvbGlidm5jc2VydmVyXzAuOS4xMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlidm5jc2VydmVyL2xpYnZuY3NlcnZlcl8wLjkuMTIuYmIKQEAgLTE3LDcgKzE3LDYgQEAKICAgICBwdGhyZWFkIFwKICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3N5c3RlbWQnLCcnLGQpfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ2lwdjYnLCAnJyxkKX0gXAotICAgIHNhc2wgXAogICAgIHNkbCBcCiAgICAgd2Vic29ja2V0cyBcCiAgICAgemxpYiBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvbGlieXVpL2xpYnl1aS1uY3Vyc2VzXzIuNTIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLW5jdXJzZXNfMi41Mi4wLmJiCmluZGV4IGRhZTVjMzQuLjFhMzc2YTQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLW5jdXJzZXNfMi41Mi4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9saWJ5dWkvbGlieXVpLW5jdXJzZXNfMi41Mi4wLmJiCkBAIC0yNSw4ICsyNSwxMCBAQAogICAgIGdpdCBjaGVja291dCBib290c3RyYXAuc2gKICAgICBzZWQgLWkgInMjL3VzciMke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9JHtiYXNlX3ByZWZpeH0mIyIgYm9vdHN0cmFwLnNoCiAgICAgLi9ib290c3RyYXAuc2gKLSAgICBta2RpciAtcCAke1BLR19DT05GSUdfU1lTUk9PVF9ESVJ9JHtiYXNlX3ByZWZpeH0vdXNyL2xpYjY0LwotICAgIGNwICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2Jhc2VfcHJlZml4fS91c3IvbGliL2xpYnl1aS5zbyogJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSR7YmFzZV9wcmVmaXh9L3Vzci9saWI2NC8KKyAgICBpZiBbIC1lICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2Jhc2VfcHJlZml4fS91c3IvbGliL2xpYnl1aS5zbyBdOyB0aGVuCisgICAgICAgIG1rZGlyIC1wICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2Jhc2VfcHJlZml4fS91c3IvbGliNjQvCisgICAgICAgIGNwICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2Jhc2VfcHJlZml4fS91c3IvbGliL2xpYnl1aS5zbyogJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSR7YmFzZV9wcmVmaXh9L3Vzci9saWI2NC8KKyAgICBmaQogICAgIGNkIC0KICAgICBzZWQgLWkgLWUgInMjXCR7WVBSRUZJWH0jXCR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2Jhc2VfcHJlZml4fSYjIiAke1N9L0NNYWtlTGlzdHMudHh0CiAgICAgc2VkIC1pIC1lICJzIy91c3IjJHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSR7YmFzZV9wcmVmaXh9JiMiICR7UEtHX0NPTkZJR19TWVNST09UX0RJUn0ke2xpYmRpcn0vY21ha2UvbGlieXVpL0xpYnl1aUxpYnJhcnlEZXBlbmRzLXJlbGVhc2UuY21ha2UKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuYm94L2ZpbGVzLzAwMDEtb3BlbmJveC14ZGctYXV0b3N0YXJ0LWNvbnZlcnQtdG8tcHl0aG9uMy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuYm94L2ZpbGVzLzAwMDEtb3BlbmJveC14ZGctYXV0b3N0YXJ0LWNvbnZlcnQtdG8tcHl0aG9uMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZWJlYjAxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5ib3gvZmlsZXMvMDAwMS1vcGVuYm94LXhkZy1hdXRvc3RhcnQtY29udmVydC10by1weXRob24zLnBhdGNoCkBAIC0wLDAgKzEsMTM4IEBACitGcm9tIGI3ZGU5Y2ZmMmE5NTc4ZGQ5MmQxOTEyNDFjMjg0MzdjZDZiYmI1OTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXggS3J1bW1lbmFjaGVyIDxtYXgua3J1bW1lbmFjaGVyQHRvcmFkZXguY29tPgorRGF0ZTogU3VuLCAyIEZlYiAyMDIwIDE0OjM5OjIxICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIG9wZW5ib3gteGRnLWF1dG9zdGFydDogY29udmVydCB0byBweXRob24zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNYXggS3J1bW1lbmFjaGVyIDxtYXgua3J1bW1lbmFjaGVyQHRvcmFkZXguY29tPgorLS0tCisgZGF0YS9hdXRvc3RhcnQvb3BlbmJveC14ZGctYXV0b3N0YXJ0IHwgNzIgKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCAzNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RhdGEvYXV0b3N0YXJ0L29wZW5ib3gteGRnLWF1dG9zdGFydCBiL2RhdGEvYXV0b3N0YXJ0L29wZW5ib3gteGRnLWF1dG9zdGFydAoraW5kZXggMDRhMTdhMS4uNTJkNzYzZiAxMDA3NTUKKy0tLSBhL2RhdGEvYXV0b3N0YXJ0L29wZW5ib3gteGRnLWF1dG9zdGFydAorKysrIGIvZGF0YS9hdXRvc3RhcnQvb3BlbmJveC14ZGctYXV0b3N0YXJ0CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgCisgIyBvcGVuYm94LXhkZy1hdXRvc3RhcnQgcnVucyB0aGluZ3MgYmFzZWQgb24gdGhlIFhERyBhdXRvc3RhcnQgc3BlY2lmaWNhdGlvbgorICMgQ29weXJpZ2h0IChDKSAyMDA4ICAgICAgIERhbmEgSmFuc2VucworQEAgLTI4LDkgKzI4LDkgQEAgdHJ5OgorICAgICBmcm9tIHhkZy5EZXNrdG9wRW50cnkgaW1wb3J0IERlc2t0b3BFbnRyeQorICAgICBmcm9tIHhkZy5FeGNlcHRpb25zIGltcG9ydCBQYXJzaW5nRXJyb3IKKyBleGNlcHQgSW1wb3J0RXJyb3I6CistICAgIHByaW50CistICAgIHByaW50ID4+c3lzLnN0ZGVyciwgIkVSUk9SOiIsIE1FLCAicmVxdWlyZXMgUHlYREcgdG8gYmUgaW5zdGFsbGVkIgorLSAgICBwcmludAorKyAgICBwcmludCgpCisrICAgIHByaW50KCJFUlJPUjoiLCBNRSwgInJlcXVpcmVzIFB5WERHIHRvIGJlIGluc3RhbGxlZCIsIGZpbGU9c3lzLnN0ZGVycikKKysgICAgcHJpbnQoKQorICAgICBzeXMuZXhpdCgxKQorIAorIGRlZiBtYWluKGFyZ3Y9c3lzLmFyZ3YpOgorQEAgLTUxLDcgKzUxLDcgQEAgZGVmIG1haW4oYXJndj1zeXMuYXJndik6CisgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICBhdXRvZmlsZSA9IEF1dG9zdGFydEZpbGUocGF0aCkKKyAgICAgICAgICAgICBleGNlcHQgUGFyc2luZ0Vycm9yOgorLSAgICAgICAgICAgICAgICBwcmludCAiSW52YWxpZCAuZGVza3RvcCBmaWxlOiAiICsgcGF0aAorKyAgICAgICAgICAgICAgICBwcmludCgiSW52YWxpZCAuZGVza3RvcCBmaWxlOiAiICsgcGF0aCkKKyAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICBpZiBub3QgYXV0b2ZpbGUgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgICAgICBmaWxlcy5hcHBlbmQoYXV0b2ZpbGUpCitAQCAtOTksOSArOTksOSBAQCBjbGFzcyBBdXRvc3RhcnRGaWxlOgorIAorICAgICBkZWYgX2FsZXJ0KHNlbGYsIHN0ciwgaW5mbz1GYWxzZSk6CisgICAgICAgICBpZiBpbmZvOgorLSAgICAgICAgICAgIHByaW50ICJcdCAiLCBzdHIKKysgICAgICAgICAgICBwcmludCgiXHQgIiwgc3RyKQorICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICBwcmludCAiXHQqIiwgc3RyCisrICAgICAgICAgICAgcHJpbnQoIlx0KiIsIHN0cikKKyAKKyAgICAgZGVmIF9zaG93SW5FbnZpcm9ubWVudChzZWxmLCBlbnZzLCB2ZXJib3NlPUZhbHNlKToKKyAgICAgICAgIGRlZmF1bHQgPSBub3Qgc2VsZi5kZS5nZXRPbmx5U2hvd0luKCkKK0BAIC0xNDYsMTQgKzE0NiwxNCBAQCBjbGFzcyBBdXRvc3RhcnRGaWxlOgorIAorICAgICBkZWYgZGlzcGxheShzZWxmLCBlbnZzKToKKyAgICAgICAgIGlmIHNlbGYuX3Nob3VsZFJ1bihlbnZzKToKKy0gICAgICAgICAgICBwcmludCAiWypdICIgKyBzZWxmLmRlLmdldE5hbWUoKQorKyAgICAgICAgICAgIHByaW50KCJbKl0gIiArIHNlbGYuZGUuZ2V0TmFtZSgpKQorICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICBwcmludCAiWyBdICIgKyBzZWxmLmRlLmdldE5hbWUoKQorKyAgICAgICAgICAgIHByaW50KCJbIF0gIiArIHNlbGYuZGUuZ2V0TmFtZSgpKQorICAgICAgICAgc2VsZi5fYWxlcnQoIkZpbGU6ICIgKyBzZWxmLnBhdGgsIGluZm89VHJ1ZSkKKyAgICAgICAgIGlmIHNlbGYuZGUuZ2V0RXhlYygpOgorICAgICAgICAgICAgIHNlbGYuX2FsZXJ0KCJFeGVjdXRlczogIiArIHNlbGYuZGUuZ2V0RXhlYygpLCBpbmZvPVRydWUpCisgICAgICAgICBzZWxmLl9zaG91bGRSdW4oZW52cywgVHJ1ZSkKKy0gICAgICAgIHByaW50CisrICAgICAgICBwcmludCgpCisgCisgICAgIGRlZiBydW4oc2VsZiwgZW52cyk6CisgICAgICAgICBoZXJlID0gb3MuZ2V0Y3dkKCkKK0BAIC0xNjUsMzQgKzE2NSwzNCBAQCBjbGFzcyBBdXRvc3RhcnRGaWxlOgorICAgICAgICAgb3MuY2hkaXIoaGVyZSkKKyAKKyBkZWYgc2hvd19oZWxwKCk6CistICAgIHByaW50ICJVc2FnZToiLCBNRSwgIltPUFRJT05dLi4uIFtFTlZJUk9OTUVOVF0uLi4iCistICAgIHByaW50CistICAgIHByaW50ICJUaGlzIHRvb2wgd2lsbCBydW4geGRnIGF1dG9zdGFydCAuZGVza3RvcCBmaWxlcyIKKy0gICAgcHJpbnQKKy0gICAgcHJpbnQgIk9QVElPTlMiCistICAgIHByaW50ICIgIC0tbGlzdCAgICAgICAgU2hvdyBhIGxpc3Qgb2YgdGhlIGZpbGVzIHdoaWNoIHdvdWxkIGJlIHJ1biIKKy0gICAgcHJpbnQgIiAgICAgICAgICAgICAgICBGaWxlcyB3aGljaCB3b3VsZCBiZSBydW4gYXJlIG1hcmtlZCB3aXRoIGFuIGFzdGVyaXgiCistICAgIHByaW50ICIgICAgICAgICAgICAgICAgc3ltYm9sIFsqXS4gIEZvciBmaWxlcyB3aGljaCB3b3VsZCBub3QgYmUgcnVuLCIKKy0gICAgcHJpbnQgIiAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbiBpcyBnaXZlbiBmb3Igd2h5IHRoZXkgYXJlIGV4Y2x1ZGVkIgorLSAgICBwcmludCAiICAtLWhlbHAgICAgICAgIFNob3cgdGhpcyBoZWxwIGFuZCBleGl0IgorLSAgICBwcmludCAiICAtLXZlcnNpb24gICAgIFNob3cgdmVyc2lvbiBhbmQgY29weXJpZ2h0IGluZm9ybWF0aW9uIgorLSAgICBwcmludAorLSAgICBwcmludCAiRU5WSVJPTk1FTlQgc3BlY2lmaWVzIGEgbGlzdCBvZiBlbnZpcm9ubWVudHMgZm9yIHdoaWNoIHRvIHJ1biBhdXRvc3RhcnQiCistICAgIHByaW50ICJhcHBsaWNhdGlvbnMuICBJZiBub25lIGFyZSBzcGVjaWZpZWQsIG9ubHkgYXBwbGljYXRpb25zIHdoaWNoIGRvIG5vdCAiCistICAgIHByaW50ICJsaW1pdCB0aGVtc2VsdmVzIHRvIGNlcnRhaW4gZW52aXJvbm1lbnRzIHdpbGwgYmUgcnVuLiIKKy0gICAgcHJpbnQKKy0gICAgcHJpbnQgIkVOVklST05NRU5UIGNhbiBiZSBvbmUgb3IgbW9yZSBvZjoiCistICAgIHByaW50ICIgIEdOT01FICAgICAgICAgR25vbWUgRGVza3RvcCIKKy0gICAgcHJpbnQgIiAgS0RFICAgICAgICAgICBLREUgRGVza3RvcCIKKy0gICAgcHJpbnQgIiAgUk9YICAgICAgICAgICBST1ggRGVza3RvcCIKKy0gICAgcHJpbnQgIiAgWEZDRSAgICAgICAgICBYRkNFIERlc2t0b3AiCistICAgIHByaW50ICIgIE9sZCAgICAgICAgICAgTGVnYWN5IHN5c3RlbXMiCistICAgIHByaW50CisrICAgIHByaW50KCJVc2FnZToiLCBNRSwgIltPUFRJT05dLi4uIFtFTlZJUk9OTUVOVF0uLi4iKQorKyAgICBwcmludCgpCisrICAgIHByaW50KCJUaGlzIHRvb2wgd2lsbCBydW4geGRnIGF1dG9zdGFydCAuZGVza3RvcCBmaWxlcyIpCisrICAgIHByaW50KCkKKysgICAgcHJpbnQoIk9QVElPTlMiKQorKyAgICBwcmludCgiICAtLWxpc3QgICAgICAgIFNob3cgYSBsaXN0IG9mIHRoZSBmaWxlcyB3aGljaCB3b3VsZCBiZSBydW4iKQorKyAgICBwcmludCgiICAgICAgICAgICAgICAgIEZpbGVzIHdoaWNoIHdvdWxkIGJlIHJ1biBhcmUgbWFya2VkIHdpdGggYW4gYXN0ZXJpeCIpCisrICAgIHByaW50KCIgICAgICAgICAgICAgICAgc3ltYm9sIFsqXS4gIEZvciBmaWxlcyB3aGljaCB3b3VsZCBub3QgYmUgcnVuLCIpCisrICAgIHByaW50KCIgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24gaXMgZ2l2ZW4gZm9yIHdoeSB0aGV5IGFyZSBleGNsdWRlZCIpCisrICAgIHByaW50KCIgIC0taGVscCAgICAgICAgU2hvdyB0aGlzIGhlbHAgYW5kIGV4aXQiKQorKyAgICBwcmludCgiICAtLXZlcnNpb24gICAgIFNob3cgdmVyc2lvbiBhbmQgY29weXJpZ2h0IGluZm9ybWF0aW9uIikKKysgICAgcHJpbnQoKQorKyAgICBwcmludCgiRU5WSVJPTk1FTlQgc3BlY2lmaWVzIGEgbGlzdCBvZiBlbnZpcm9ubWVudHMgZm9yIHdoaWNoIHRvIHJ1biBhdXRvc3RhcnQiKQorKyAgICBwcmludCgiYXBwbGljYXRpb25zLiAgSWYgbm9uZSBhcmUgc3BlY2lmaWVkLCBvbmx5IGFwcGxpY2F0aW9ucyB3aGljaCBkbyBub3QgIikKKysgICAgcHJpbnQoImxpbWl0IHRoZW1zZWx2ZXMgdG8gY2VydGFpbiBlbnZpcm9ubWVudHMgd2lsbCBiZSBydW4uIikKKysgICAgcHJpbnQoKQorKyAgICBwcmludCgiRU5WSVJPTk1FTlQgY2FuIGJlIG9uZSBvciBtb3JlIG9mOiIpCisrICAgIHByaW50KCIgIEdOT01FICAgICAgICAgR25vbWUgRGVza3RvcCIpCisrICAgIHByaW50KCIgIEtERSAgICAgICAgICAgS0RFIERlc2t0b3AiKQorKyAgICBwcmludCgiICBST1ggICAgICAgICAgIFJPWCBEZXNrdG9wIikKKysgICAgcHJpbnQoIiAgWEZDRSAgICAgICAgICBYRkNFIERlc2t0b3AiKQorKyAgICBwcmludCgiICBPbGQgICAgICAgICAgIExlZ2FjeSBzeXN0ZW1zIikKKysgICAgcHJpbnQoKQorIAorIGRlZiBzaG93X3ZlcnNpb24oKToKKy0gICAgcHJpbnQgTUUsIFZFUlNJT04KKy0gICAgcHJpbnQgIkNvcHlyaWdodCAoYykgMjAwOCAgICAgICAgRGFuYSBKYW5zZW5zIgorLSAgICBwcmludAorKyAgICBwcmludChNRSwgVkVSU0lPTikKKysgICAgcHJpbnQoIkNvcHlyaWdodCAoYykgMjAwOCAgICAgICAgRGFuYSBKYW5zZW5zIikKKysgICAgcHJpbnQoKQorIAorIGlmIF9fbmFtZV9fID09ICJfX21haW5fXyI6CisgICAgICAgICBzeXMuZXhpdChtYWluKCkpCistLSAKKzIuMjAuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmJveC9vcGVuYm94XzMuNi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5ib3gvb3BlbmJveF8zLjYuMS5iYgppbmRleCAzM2YzNGU0Li5lMjY5YTI2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmJveC9vcGVuYm94XzMuNi4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuYm94L29wZW5ib3hfMy42LjEuYmIKQEAgLTcsNiArNyw3IEBACiBTUkNfVVJJID0gIiBcCiAgICAgaHR0cDovL2ljY3VsdXMub3JnL29wZW5ib3gvcmVsZWFzZXMvb3BlbmJveC0ke1BWfS50YXIuZ3ogXAogICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLWF2b2lkLXJhY2Utd2hlbi1jcmVhdGluZy1hdXRvc3RhcnQtZGlyZWMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLW9wZW5ib3gteGRnLWF1dG9zdGFydC1jb252ZXJ0LXRvLXB5dGhvbjMucGF0Y2ggXAogIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiYjcyNzk0OTk2YzZhM2FkOTQ2MzQ3MjdiOTVmOWQyMDQiCkBAIC01NCw0ICs1NSw0IEBACiAKIEZJTEVTXyR7UE59LWNvbmZpZyArPSAiJHtzeXNjb25mZGlyfSIKIAotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWNvcmUgJHtQTn0tY29uZmlnICR7UE59LXRoZW1lLWNsZWFybG9va3MgcHl0aG9uIHB5dGhvbi1zaGVsbCBweXhkZyIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1jb3JlICR7UE59LWNvbmZpZyAke1BOfS10aGVtZS1jbGVhcmxvb2tzIHB5dGhvbjMgcHl0aG9uMy1zaGVsbCBweXhkZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuanBlZy9vcGVuanBlZy9DVkUtMjAyMC02ODUxLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5qcGVnL29wZW5qcGVnL0NWRS0yMDIwLTY4NTEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWYyZmM5MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuanBlZy9vcGVuanBlZy9DVkUtMjAyMC02ODUxLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gMDI0Yjg0MDczOTJjYjBiODJiMDRiNThlZDI1NjA5NGVkNTc5OWUwNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEV2ZW4gUm91YXVsdCA8ZXZlbi5yb3VhdWx0QHNwYXRpYWx5cy5jb20+CitEYXRlOiBTYXQsIDExIEphbiAyMDIwIDAxOjUxOjE5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIG9wal9qMmtfdXBkYXRlX2ltYWdlX2RpbWVuc2lvbnMoKTogcmVqZWN0IGltYWdlcyB3aG9zZQorIGNvb3JkaW5hdGVzIGFyZSBiZXlvbmQgSU5UX01BWCAoZml4ZXMgIzEyMjgpCisKKy0tLQorIHNyYy9saWIvb3BlbmpwMi9qMmsuYyB8IDggKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvbGliL29wZW5qcDIvajJrLmMgYi9zcmMvbGliL29wZW5qcDIvajJrLmMKK2luZGV4IDE0ZjZmZjQxLi45MjI1NTBlYiAxMDA2NDQKKy0tLSBhL3NyYy9saWIvb3BlbmpwMi9qMmsuYworKysrIGIvc3JjL2xpYi9vcGVuanAyL2oyay5jCitAQCAtOTIzNiw2ICs5MjM2LDE0IEBAIHN0YXRpYyBPUEpfQk9PTCBvcGpfajJrX3VwZGF0ZV9pbWFnZV9kaW0KKyAgICAgbF9pbWdfY29tcCA9IHBfaW1hZ2UtPmNvbXBzOworICAgICBmb3IgKGl0X2NvbXAgPSAwOyBpdF9jb21wIDwgcF9pbWFnZS0+bnVtY29tcHM7ICsraXRfY29tcCkgeworICAgICAgICAgT1BKX0lOVDMyIGxfaCwgbF93OworKyAgICAgICAgaWYgKHBfaW1hZ2UtPngwID4gKE9QSl9VSU5UMzIpSU5UX01BWCB8fAorKyAgICAgICAgICAgICAgICBwX2ltYWdlLT55MCA+IChPUEpfVUlOVDMyKUlOVF9NQVggfHwKKysgICAgICAgICAgICAgICAgcF9pbWFnZS0+eDEgPiAoT1BKX1VJTlQzMilJTlRfTUFYIHx8CisrICAgICAgICAgICAgICAgIHBfaW1hZ2UtPnkxID4gKE9QSl9VSU5UMzIpSU5UX01BWCkgeworKyAgICAgICAgICAgIG9wal9ldmVudF9tc2cocF9tYW5hZ2VyLCBFVlRfRVJST1IsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAiSW1hZ2UgY29vcmRpbmF0ZXMgYWJvdmUgSU5UX01BWCBhcmUgbm90IHN1cHBvcnRlZFxuIik7CisrICAgICAgICAgICAgcmV0dXJuIE9QSl9GQUxTRTsKKysgICAgICAgIH0KKyAKKyAgICAgICAgIGxfaW1nX2NvbXAtPngwID0gKE9QSl9VSU5UMzIpb3BqX2ludF9jZWlsZGl2KChPUEpfSU5UMzIpcF9pbWFnZS0+eDAsCisgICAgICAgICAgICAgICAgICAgICAgICAgIChPUEpfSU5UMzIpbF9pbWdfY29tcC0+ZHgpOworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5qcGVnL29wZW5qcGVnL0NWRS0yMDIwLTgxMTIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmpwZWcvb3BlbmpwZWcvQ1ZFLTIwMjAtODExMi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjI1MDUzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5qcGVnL29wZW5qcGVnL0NWRS0yMDIwLTgxMTIucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSAwNWY5YjkxZTYwZGViZGEwZTgzOTc3ZTVlNjNiMmU2NjQ4NmY3MDc0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRXZlbiBSb3VhdWx0IDxldmVuLnJvdWF1bHRAc3BhdGlhbHlzLmNvbT4KK0RhdGU6IFRodSwgMzAgSmFuIDIwMjAgMDA6NTk6NTcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gb3BqX3RjZF9pbml0X3RpbGUoKTogYXZvaWQgaW50ZWdlciBvdmVyZmxvdworCitUaGF0IGNvdWxkIGxlYWQgdG8gbGF0ZXIgYXNzZXJ0aW9uIGZhaWx1cmVzLgorCitGaXhlcyAjMTIzMSAvIENWRS0yMDIwLTgxMTIKKy0tLQorIHNyYy9saWIvb3BlbmpwMi90Y2QuYyB8IDIwICsrKysrKysrKysrKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbGliL29wZW5qcDIvdGNkLmMgYi9zcmMvbGliL29wZW5qcDIvdGNkLmMKK2luZGV4IGRlZWNjNGRmLi5hYTQxOTAzMCAxMDA2NDQKKy0tLSBhL3NyYy9saWIvb3BlbmpwMi90Y2QuYworKysrIGIvc3JjL2xpYi9vcGVuanAyL3RjZC5jCitAQCAtOTA1LDggKzkwNSwyNCBAQCBzdGF0aWMgSU5MSU5FIE9QSl9CT09MIG9wal90Y2RfaW5pdF90aWxlKG9wal90Y2RfdCAqcF90Y2QsIE9QSl9VSU5UMzIgcF90aWxlX25vLAorICAgICAgICAgICAgIC8qIHAuIDY0LCBCLjYsIElTTy9JRUMgRkRJUzE1NDQ0LTEgOiAyMDAwICgxOCBhdWd1c3QgMjAwMCkgICovCisgICAgICAgICAgICAgbF90bF9wcmNfeF9zdGFydCA9IG9wal9pbnRfZmxvb3JkaXZwb3cyKGxfcmVzLT54MCwgKE9QSl9JTlQzMilsX3BkeCkgPDwgbF9wZHg7CisgICAgICAgICAgICAgbF90bF9wcmNfeV9zdGFydCA9IG9wal9pbnRfZmxvb3JkaXZwb3cyKGxfcmVzLT55MCwgKE9QSl9JTlQzMilsX3BkeSkgPDwgbF9wZHk7CistICAgICAgICAgICAgbF9icl9wcmNfeF9lbmQgPSBvcGpfaW50X2NlaWxkaXZwb3cyKGxfcmVzLT54MSwgKE9QSl9JTlQzMilsX3BkeCkgPDwgbF9wZHg7CistICAgICAgICAgICAgbF9icl9wcmNfeV9lbmQgPSBvcGpfaW50X2NlaWxkaXZwb3cyKGxfcmVzLT55MSwgKE9QSl9JTlQzMilsX3BkeSkgPDwgbF9wZHk7CisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHRtcCA9ICgoT1BKX1VJTlQzMilvcGpfaW50X2NlaWxkaXZwb3cyKGxfcmVzLT54MSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE9QSl9JTlQzMilsX3BkeCkpIDw8IGxfcGR4OworKyAgICAgICAgICAgICAgICBpZiAodG1wID4gKE9QSl9VSU5UMzIpSU5UX01BWCkgeworKyAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhtYW5hZ2VyLCBFVlRfRVJST1IsICJJbnRlZ2VyIG92ZXJmbG93XG4iKTsKKysgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgbF9icl9wcmNfeF9lbmQgPSAoT1BKX0lOVDMyKXRtcDsKKysgICAgICAgICAgICB9CisrICAgICAgICAgICAgeworKyAgICAgICAgICAgICAgICBPUEpfVUlOVDMyIHRtcCA9ICgoT1BKX1VJTlQzMilvcGpfaW50X2NlaWxkaXZwb3cyKGxfcmVzLT55MSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKE9QSl9JTlQzMilsX3BkeSkpIDw8IGxfcGR5OworKyAgICAgICAgICAgICAgICBpZiAodG1wID4gKE9QSl9VSU5UMzIpSU5UX01BWCkgeworKyAgICAgICAgICAgICAgICAgICAgb3BqX2V2ZW50X21zZyhtYW5hZ2VyLCBFVlRfRVJST1IsICJJbnRlZ2VyIG92ZXJmbG93XG4iKTsKKysgICAgICAgICAgICAgICAgICAgIHJldHVybiBPUEpfRkFMU0U7CisrICAgICAgICAgICAgICAgIH0KKysgICAgICAgICAgICAgICAgbF9icl9wcmNfeV9lbmQgPSAoT1BKX0lOVDMyKXRtcDsKKysgICAgICAgICAgICB9CisgICAgICAgICAgICAgLypmcHJpbnRmKHN0ZGVyciwgIlx0XHRcdHByY194X3N0YXJ0PSVkLCBwcmNfeV9zdGFydD0lZCwgYnJfcHJjX3hfZW5kPSVkLCBicl9wcmNfeV9lbmQ9JWQgXG4iLCBsX3RsX3ByY194X3N0YXJ0LCBsX3RsX3ByY195X3N0YXJ0LCBsX2JyX3ByY194X2VuZCAsbF9icl9wcmNfeV9lbmQgKTsqLworIAorICAgICAgICAgICAgIGxfcmVzLT5wdyA9IChsX3Jlcy0+eDAgPT0gbF9yZXMtPngxKSA/IDBVIDogKE9QSl9VSU5UMzIpKCgKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuanBlZy9vcGVuanBlZ18yLjMuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9vcGVuanBlZy9vcGVuanBlZ18yLjMuMS5iYgppbmRleCBmZmQ0MDk5Li40MjAxMWVmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3Mvb3BlbmpwZWcvb3BlbmpwZWdfMi4zLjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL29wZW5qcGVnL29wZW5qcGVnXzIuMy4xLmJiCkBAIC04LDYgKzgsOCBAQAogU1JDX1VSSSA9ICIgXAogICAgIGdpdDovL2dpdGh1Yi5jb20vdWNsb3V2YWluL29wZW5qcGVnLmdpdCBcCiAgICAgZmlsZTovLzAwMDItRG8tbm90LWFzay1jbWFrZS10by1leHBvcnQtYmluYXJpZXMtdGhleS1kb24tdC1tYWtlLS5wYXRjaCBcCisgICAgZmlsZTovL0NWRS0yMDIwLTY4NTEucGF0Y2ggXAorICAgIGZpbGU6Ly9DVkUtMjAyMC04MTEyLnBhdGNoIFwKICIKIFNSQ1JFViA9ICI1NzA5NjMyNTQ1N2Y5NmQ4Y2QwN2JkM2FmMDRmZTgxZDdhMmJhNzg4IgogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb21tXzIuNDIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nb21tXzIuNDIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzVlNzFhYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29tbV8yLjQyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1TVU1NQVJZID0gIkMrKyBiaW5kaW5ncyBmb3IgdGhlIHBhbmdvIGxpYnJhcnkiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kODA0NWYzYjhmOTI5YzFjYjI5YTFlM2ZkNzM3YjQ5OSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLnRvb2xzO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotREVQRU5EUyA9ICJtbS1jb21tb24gY2Fpcm9tbSBnbGlibW0gcGFuZ28iCi0KLVNIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAuZ25vbWUub3JnL3B1Yi9HTk9NRS9zb3VyY2VzL3BhbmdvbW0vJHtTSFJUX1ZFUn0vcGFuZ29tbS0ke1BWfS50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiNmNmZmVkZjIyMjVjNGU3MjY0NWE3ZDc1N2ZiNWI4MzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2E2ZGEwNjdmZjkzYTY0NDU3ODBjMGI0YjIyNmViODRmNDg0YWIxMDRiODM5MWZiNzQ0YTQ1Y2JjN2VkYmY1NiIKLQotaW5oZXJpdCBmZWF0dXJlc19jaGVjayBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLUVYVFJBX09FQ09ORiA9ICIgLS1kaXNhYmxlLWRvY3VtZW50YXRpb24gIgotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zby4qIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vKi9pbmNsdWRlLyAke2xpYmRpcn0vcGFuZ29tbS0qLyIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvbW1fMi40Mi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvbW1fMi40Mi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3ZDlmZjkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29tbV8yLjQyLjEuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJDKysgYmluZGluZ3MgZm9yIHRoZSBwYW5nbyBsaWJyYXJ5IgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDgwNDVmM2I4ZjkyOWMxY2IyOWExZTNmZDczN2I0OTkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy50b29sczttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK0RFUEVORFMgPSAibW0tY29tbW9uIGNhaXJvbW0gZ2xpYm1tIHBhbmdvIgorCitTSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvR05PTUUvc291cmNlcy9wYW5nb21tLyR7U0hSVF9WRVJ9L3BhbmdvbW0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjMzOWM0OGRkOTJlYmQzYTk5MTFiMjMxNzA4ZjdhODE5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE0YmYwNDkzOTkzMDg3MGQ1Y2ZhOTY4NjBlZDk1M2FkMmNlMDdjM2ZkODcxM2FkZDRhMWJmZTU4NTU4OWY0MGYiCisKK2luaGVyaXQgZmVhdHVyZXNfY2hlY2sgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitFWFRSQV9PRUNPTkYgPSAiIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uICIKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9LyovaW5jbHVkZS8gJHtsaWJkaXJ9L3BhbmdvbW0tKi8iCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9yZW5kZXJkb2MvcmVuZGVyZG9jXzEuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9yZW5kZXJkb2MvcmVuZGVyZG9jXzEuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWY4MWU4NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvcmVuZGVyZG9jL3JlbmRlcmRvY18xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1TVU1NQVJZID0gIlJlbmRlckRvYyByZWNpcGUgcHJvdmlkaW5nIHJlbmRlcmRvY2NtZCIKLURFU0NSSVBUSU9OID0gIlJlbmRlckRvYyBpcyBhIGZyYW1lLWNhcHR1cmUgYmFzZWQgZ3JhcGhpY3MgZGVidWdnZXIiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYmFsZHVyay9yZW5kZXJkb2MiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PTk3NTNiMWI0ZmJhMzI2MWMyN2QxY2U1YzFhY2VmNjY3IgotCi1TUkNSRVYgPSAiYTk0ZjIzOGUzN2NmZTJmMTQyMDkzZWI4ZTVkYTc3NzVhYmFhODhjNiIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9iYWxkdXJrLyR7QlBOfS5naXQ7cHJvdG9jb2w9aHR0cDticmFuY2g9djEueCBcCi0JICAgZmlsZTovLzAwMDEtcmVuZGVyZG9jLXVzZS14eGQtaW5zdGVhZC1vZi1jcm9zcy1jb21waWxpbmctc2hpbS1iaS5wYXRjaCBcCi0JICAgZmlsZTovLzAwMDEtUmVtb3ZlLWdsc2xhbmctcG9vbF9hbGxvY2F0b3Itc2V0QWxsb2NhdG9yLnBhdGNoIFwKLSIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIHZpcnR1YWwvbGliZ2wgbGlieGNiIHhjYi11dGlsLWtleXN5bXMgdmltLW5hdGl2ZSIKLQotUkRFUEVORFNfJHtQTn0gPSAibGlieGNiIHhjYi11dGlsLWtleXN5bXMiCi0KLWluaGVyaXQgY21ha2UgcHl0aG9uM25hdGl2ZSBmZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIG9wZW5nbCIKLQotcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKLSAgICAjIG9ubHkgd29ya3Mgb24gZ2xpYmMgc3lzdGVtcwotICAgIGlmIGQuZ2V0VmFyKCdUQ0xJQkMnKSAhPSAiZ2xpYmMiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJpbmNvbXBhdGlibGUgd2l0aCAlcyBDIGxpYnJhcnkiICUgZC5nZXRWYXIoJ1RDTElCQycpKQotfQotCi1DT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NHxpLjg2fGFybXxhYXJjaDY0KS4qLWxpbnV4IgotCi1FWFRSQV9PRUNNQUtFICs9ICJcCi0gICAgLURFTkFCTEVfUVJFTkRFUkRPQz1PRkYgXAotICAgIC1ERU5BQkxFX1BZUkVOREVSRE9DPU9GRiBcCi0gICAgLURFTkFCTEVfUkVOREVSRE9DQ01EPU9OIFwKLSAgICAtRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSBcCi0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0iCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9yZW5kZXJkb2MvcmVuZGVyZG9jXzEuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy9yZW5kZXJkb2MvcmVuZGVyZG9jXzEuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZWE2MzJkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3JlbmRlcmRvYy9yZW5kZXJkb2NfMS43LmJiCkBAIC0wLDAgKzEsMzggQEAKK1NVTU1BUlkgPSAiUmVuZGVyRG9jIHJlY2lwZSBwcm92aWRpbmcgcmVuZGVyZG9jY21kIgorREVTQ1JJUFRJT04gPSAiUmVuZGVyRG9jIGlzIGEgZnJhbWUtY2FwdHVyZSBiYXNlZCBncmFwaGljcyBkZWJ1Z2dlciIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iYWxkdXJrL3JlbmRlcmRvYyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5tZDttZDU9ZGY3ZWE5ZTE5NmVmYzcwMTRjMTI0NzQ3YTBlZjk3NzIiCisKK1NSQ1JFViA9ICJhNTZhZjU4OWQ5NGRjODUxODA5ZmQ1MzQ0ZDBhZTQ0MWRhNzBjMWYyIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2JhbGR1cmsvJHtCUE59LmdpdDtwcm90b2NvbD1odHRwO2JyYW5jaD12MS54IFwKKwkgICBmaWxlOi8vMDAwMS1yZW5kZXJkb2MtdXNlLXh4ZC1pbnN0ZWFkLW9mLWNyb3NzLWNvbXBpbGluZy1zaGltLWJpLnBhdGNoIFwKKwkgICBmaWxlOi8vMDAwMS1SZW1vdmUtZ2xzbGFuZy1wb29sX2FsbG9jYXRvci1zZXRBbGxvY2F0b3IucGF0Y2ggXAorIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EUyArPSAidmlydHVhbC9saWJ4MTEgdmlydHVhbC9saWJnbCBsaWJ4Y2IgeGNiLXV0aWwta2V5c3ltcyB2aW0tbmF0aXZlIgorCitSREVQRU5EU18ke1BOfSA9ICJsaWJ4Y2IgeGNiLXV0aWwta2V5c3ltcyIKKworaW5oZXJpdCBjbWFrZSBweXRob24zbmF0aXZlIGZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgb3BlbmdsIgorCitweXRob24gX19hbm9ueW1vdXMgKCkgeworICAgICMgb25seSB3b3JrcyBvbiBnbGliYyBzeXN0ZW1zCisgICAgaWYgZC5nZXRWYXIoJ1RDTElCQycpICE9ICJnbGliYyI6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoImluY29tcGF0aWJsZSB3aXRoICVzIEMgbGlicmFyeSIgJSBkLmdldFZhcignVENMSUJDJykpCit9CisKK0NPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0fGkuODZ8YXJtfGFhcmNoNjQpLiotbGludXgiCisKK0VYVFJBX09FQ01BS0UgKz0gIlwKKyAgICAtREVOQUJMRV9RUkVOREVSRE9DPU9GRiBcCisgICAgLURFTkFCTEVfUFlSRU5ERVJET0M9T0ZGIFwKKyAgICAtREVOQUJMRV9SRU5ERVJET0NDTUQ9T04gXAorICAgIC1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfSIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL3RpZ2Vydm5jXzEuMTAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90aWdlcnZuYy90aWdlcnZuY18xLjEwLjEuYmIKaW5kZXggMTY5Mzc3OS4uZjk3YzJiMiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RpZ2Vydm5jL3RpZ2Vydm5jXzEuMTAuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdGlnZXJ2bmMvdGlnZXJ2bmNfMS4xMC4xLmJiCkBAIC0zLDcgKzMsNyBAQAogTElDRU5TRSA9ICJHUEx2MisiCiBTRUNUSU9OID0gIngxMS91dGlscyIKIERFUEVORFMgPSAieHNlcnZlci14b3JnIGdudXRscyBqcGVnIGxpYnh0c3QgZ2V0dGV4dC1uYXRpdmUgZmx0ayIKLVJERVBFTkRTXyR7UE59ID0gImNoa2NvbmZpZyBjb3JldXRpbHMgaGljb2xvci1pY29uLXRoZW1lIHBlcmwiCitSREVQRU5EU18ke1BOfSA9ICJjb3JldXRpbHMgaGljb2xvci1pY29uLXRoZW1lIHBlcmwiCiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0UuVFhUO21kNT03NWIwMmMyODcyNDIxMzgwYmJkNDc3ODFkMmJkNzVkMyIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliLzAwMDEtRml4LWJ1aWxkLWVycm9yLXdpdGgtaW5wdXRfZXZlbnRfc2VjLWZvci1vbGQta2VybmVsLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliLzAwMDEtRml4LWJ1aWxkLWVycm9yLXdpdGgtaW5wdXRfZXZlbnRfc2VjLWZvci1vbGQta2VybmVsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhOGE5ZTUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWIvMDAwMS1GaXgtYnVpbGQtZXJyb3Itd2l0aC1pbnB1dF9ldmVudF9zZWMtZm9yLW9sZC1rZXJuZWwucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSAwNTBiZjI0YzE2ZTk1ZjYzYTc2ZTEzMTU2MzQ2YTA3MjAzNWQ0NWI0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRXZhbiBIYXJ2ZXkgPGV2YW53b3JrMTIzNEBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDE5IE1hciAyMDIwIDAxOjMyOjAzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCBlcnJvciB3aXRoIGlucHV0X2V2ZW50X3NlYyBmb3Igb2xkIGtlcm5lbAorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGlidHMvdHNsaWIvY29tbWl0LzA1MGJmMjRjMTZlOTVmNjNhNzZlMTMxNTYzNDZhMDcyMDM1ZDQ1YjRdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgdG9vbHMvdHNfdWlucHV0LmMgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvdG9vbHMvdHNfdWlucHV0LmMgYi90b29scy90c191aW5wdXQuYworaW5kZXggMTgzMmEwNy4uOWM0MGJiMyAxMDA2NDQKKy0tLSBhL3Rvb2xzL3RzX3VpbnB1dC5jCisrKysgYi90b29scy90c191aW5wdXQuYworQEAgLTUxLDYgKzUxLDExIEBACisgI2luY2x1ZGUgPGxpbnV4L2ZiLmg+CisgI2VuZGlmCisgCisrI2lmbmRlZiBpbnB1dF9ldmVudF9zZWMKKysjZGVmaW5lIGlucHV0X2V2ZW50X3NlYyB0aW1lLnR2X3NlYworKyNkZWZpbmUgaW5wdXRfZXZlbnRfdXNlYyB0aW1lLnR2X3VzZWMKKysjZW5kaWYKKysKKyAjZGVmaW5lIFJFU0VUICAgIlwwMzNbMG0iCisgI2RlZmluZSBSRUQgICAgICJcMDMzWzMxbSIKKyAjZGVmaW5lIEdSRUVOICAgIlwwMzNbMzJtIgorLS0gCisyLjI2LjIKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3RzbGliL3RzbGliXzEuMjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWJfMS4yMS5iYgppbmRleCBiYjI4ZWU0Li43NmM0MjMxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWJfMS4yMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHNsaWIvdHNsaWJfMS4yMS5iYgpAQCAtMTUsNiArMTUsNyBAQAogCiBTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9rZXJnb3RoL3RzbGliL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9L3RzbGliLSR7UFZ9LnRhci54ejtkb3dubG9hZGZpbGVuYW1lPXRzbGliLSR7UFZ9LnRhci54eiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1vbi0zMmJpdC1hcmNoZXMtd2l0aC02NGJpdC10aW1lX3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtZXJyb3Itd2l0aC1pbnB1dF9ldmVudF9zZWMtZm9yLW9sZC1rZXJuZWwucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vdHMuY29uZiBcCiAgICAgICAgICAgIGZpbGU6Ly90c2xpYi5zaCBcCiAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL3R0Zi1odW5reWZvbnRzXzAuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3R0Zi1mb250cy90dGYtaHVua3lmb250c18wLjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmQ1NTJjMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL3R0Zi1odW5reWZvbnRzXzAuMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotcmVxdWlyZSB0dGYuaW5jCi0KLVNVTU1BUlkgPSAiSHVua3kgZm9udHMgLSBUVEYgVmVyc2lvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvaHVua3lmb250cyIKLUxJQ0VOU0UgPSAiTEdQTC0yLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vTElDRU5TRTttZDU9N2ZiYzMzODMwOWFjMzhmZWZjZDY0YjA0YmI5MDNlMzQiCi1QUiA9ICJyNyIKLQotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vaHVua3lmb250cy9odW5reWZvbnRzLSR7UFZ9LnRhci5iejIiCi0KLVMgPSAiJHtXT1JLRElSfS9odW5reWZvbnRzLSR7UFZ9L1RURi8iCi0KLVBBQ0tBR0VTID0gInR0Zi1odW5reS1zYW5zIHR0Zi1odW5reS1zZXJpZiIKLUZPTlRfUEFDS0FHRVMgPSAidHRmLWh1bmt5LXNhbnMgdHRmLWh1bmt5LXNlcmlmIgotCi1GSUxFU190dGYtaHVua3ktc2FucyA9ICIke2RhdGFkaXJ9L2ZvbnRzL3RydWV0eXBlL0h1bmt5U2FucyoudHRmIgotRklMRVNfdHRmLWh1bmt5LXNlcmlmID0gIiR7ZGF0YWRpcn0vZm9udHMvdHJ1ZXR5cGUvSHVua3lTZXJpZioudHRmIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzY0NDQ3OTVhMzU2ZmI4YTU2YzYzYjI4NDA3MjliYWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTBiMTg0OWM1NDViNmFmMjc2NDA3ZDkzMDI1YzczMDk0ZGQ3NGZjMjU5YjA3YzFkOTE1OTRmZGJiOWEwYjgyOSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWh1bmt5Zm9udHNfMC4zLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL3R0Zi1odW5reWZvbnRzXzAuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkZjBjM2EKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL3R0Zi1odW5reWZvbnRzXzAuMy4xLmJiCkBAIC0wLDAgKzEsMjAgQEAKK3JlcXVpcmUgdHRmLmluYworCitTVU1NQVJZID0gIkh1bmt5IGZvbnRzIC0gVFRGIFZlcnNpb24iCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2h1bmt5Zm9udHMiCitMSUNFTlNFID0gIkxHUEwtMi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0NPUFlSSUdIVC5UWFQ7bWQ1PTcwZDM0NDc4ZTM4YjFhZDk5OTUwNzlmOTkyMWY5ZWY3IgorUFIgPSAicjciCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2h1bmt5Zm9udHMvaHVua3lmb250cy0ke1BWfS50YXIuYnoyIgorCitTID0gIiR7V09SS0RJUn0vaHVua3lmb250cy0ke1BWfS9UVEYvIgorCitQQUNLQUdFUyA9ICJ0dGYtaHVua3ktc2FucyB0dGYtaHVua3ktc2VyaWYiCitGT05UX1BBQ0tBR0VTID0gInR0Zi1odW5reS1zYW5zIHR0Zi1odW5reS1zZXJpZiIKKworRklMRVNfdHRmLWh1bmt5LXNhbnMgPSAiJHtkYXRhZGlyfS9mb250cy90cnVldHlwZS9IdW5reVNhbnMqLnR0ZiIKK0ZJTEVTX3R0Zi1odW5reS1zZXJpZiA9ICIke2RhdGFkaXJ9L2ZvbnRzL3RydWV0eXBlL0h1bmt5U2VyaWYqLnR0ZiIKKworU1JDX1VSSVttZDVzdW1dID0gImI5MzMzMTI5Njc4NDJlNTczN2I1NDE1ZmEyMmQ2ODJhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNmYzUyODczN2NjZDEyZWMzYzA5YzRhOTE0NDdkMjQxZDNjNWJjZWVlYjRkMjRiN2YyYzI5YjE1Yzk3MzUzMjgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL3R0Zi1pbmNvbnNvbGF0YV8yMDEwMDUyNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWluY29uc29sYXRhXzIwMTAwNTI2LmJiCmluZGV4IDIwMDQxYmIuLmJmMzJmZWQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWluY29uc29sYXRhXzIwMTAwNTI2LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWluY29uc29sYXRhXzIwMTAwNTI2LmJiCkBAIC0xNCw3ICsxNCw3IEBACiAgICAgJHtkYXRhZGlyfS9kb2MvdHRmLWluY29uc29sYXRhLyoiCiAKIGRvX2NvbmZpZ3VyZSgpIHsKLSAgICBtdiAke1dPUktESVJ9L0luY29uc29sYXRhLm90ZiAke1N9L0luY29uc29sYXRhLnR0ZgorICAgIGNwIC1mciAke1dPUktESVJ9L0luY29uc29sYXRhLm90ZiAke1N9L0luY29uc29sYXRhLnR0ZgogfQogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWxvaGl0XzIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL3R0Zi1sb2hpdF8yLmJiCmluZGV4IGY5Njc5ZDYuLjBhZjBlOTEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLWxvaGl0XzIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3R0Zi1mb250cy90dGYtbG9oaXRfMi5iYgpAQCAtMTUsNyArMTUsNyBAQAogRk9OVF9QQUNLQUdFUyA9ICIke1BOfSIKIEZJTEVTXyR7UE59ID0gIiR7ZGF0YWRpcn0iCiAKLWluaGVyaXQgcHl0aG9ubmF0aXZlCitpbmhlcml0IHB5dGhvbjNuYXRpdmUKIAogZG9fY29tcGlsZSgpIHsKICAgICBjZCAke1N9OyBtYWtlIHR0ZjsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy90dGYtZm9udHMvdHRmLW5vdG8tZW1vamlfMjAxOTA4MTUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL3R0Zi1ub3RvLWVtb2ppXzIwMTkwODE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3NGY3YTcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MvdHRmLWZvbnRzL3R0Zi1ub3RvLWVtb2ppXzIwMTkwODE1LmJiCkBAIC0wLDAgKzEsMTkgQEAKK3JlcXVpcmUgdHRmLmluYworCitTVU1NQVJZID0gIkdvb2dsZSBub3RvIGVtb2ppIGZvbnQgcGFjayIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGVmb250cy9ub3RvLWVtb2ppIgorTElDRU5TRSA9ICJPRkwtMS4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZm9udHMvTElDRU5TRTttZDU9NTU3MTlmYWEwMTEyNzA4ZTk0NmI4MjBiMjRiMTQwOTciCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9nb29nbGVmb250cy9ub3RvLWVtb2ppO3Byb3RvY29sPWh0dHBzIgorU1JDUkVWID0gIjgzM2E0M2QwMzI0NmE5MzI1ZTc0OGEyZDc4MzAwNjQ1NGQ3NmZmNjYiCisKK1BBQ0tBR0VTID0gIiR7UE59LWNvbG9yICR7UE59LXJlZ3VsYXIiCitGT05UX1BBQ0tBR0VTID0gIiR7UE59LWNvbG9yICR7UE59LXJlZ3VsYXIiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0ZJTEVTXyR7UE59LWNvbG9yID0gIiR7ZGF0YWRpcn0vZm9udHMvdHJ1ZXR5cGUvTm90b0NvbG9yRW1vamkudHRmIgorRklMRVNfJHtQTn0tcmVndWxhciA9ICIke2RhdGFkaXJ9L2ZvbnRzL3RydWV0eXBlL05vdG9FbW9qaS1SZWd1bGFyLnR0ZiIKKworZG9fY29tcGlsZVtub2V4ZWNdID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveGRvdG9vbC94ZG90b29sXzEuMjAxMDA0MTYuMjgwOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94ZG90b29sL3hkb3Rvb2xfMS4yMDEwMDQxNi4yODA5LmJiCmluZGV4IGFlYWUwNzEuLjI1OWM2NDAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94ZG90b29sL3hkb3Rvb2xfMS4yMDEwMDQxNi4yODA5LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94ZG90b29sL3hkb3Rvb2xfMS4yMDEwMDQxNi4yODA5LmJiCkBAIC03LDcgKzcsNyBAQAogCiBQUiA9ICJyMSIKIAotaW5oZXJpdCBmZWF0dXJlc19jaGVjayBwa2djb25maWcKK2luaGVyaXQgZmVhdHVyZXNfY2hlY2sgcGtnY29uZmlnIHBlcmxuYXRpdmUKICMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h0ZXJtXzM1MS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94dGVybV8zNTEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZWU1NTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h0ZXJtXzM1MS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLXJlcXVpcmUgcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94b3JnLWFwcC1jb21tb24uaW5jCi1TVU1NQVJZID0gInh0ZXJtIGlzIHRoZSBzdGFuZGFyZCB0ZXJtaW5hbCBlbXVsYXRvciBmb3IgdGhlIFggV2luZG93IFN5c3RlbSIKLURFUEVORFMgPSAibGlieGF3IHhvcmdwcm90byBsaWJ4ZXh0IGxpYnhhdSBsaWJ4aW5lcmFtYSBsaWJ4cG0gbmN1cnNlcyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8veHRlcm0uaDtiZWdpbmxpbmU9MztlbmRsaW5lPTMxO21kNT1jN2ZhY2ViODcyZDkwMTE1ZTdjMGFkOTBlOTBjMzkwZCIKLQotU1JDX1VSSSA9ICJodHRwOi8vaW52aXNpYmxlLW1pcnJvci5uZXQvYXJjaGl2ZXMvJHtCUE59LyR7QlB9LnRneiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1jb25maWd1cmUtdGltZS1jaGVjay1mb3Itc2V0c2lkLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhMDdlZGZiZWUyZTJmNGM2YTlkZGJmODM0ZmE0YmJlYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NjBhOGExMDIyMWM5Yzk3NDRhZmQ4NmRiODdjN2FkOTViYmY5YmU0ZjVmNTI1ZmVjZjM5MTI1ZjBkMmE2ZTE2IgotUEFDS0FHRUNPTkZJRyA/PSAiIgotUEFDS0FHRUNPTkZJR1t4ZnRdID0gIi0tZW5hYmxlLWZyZWV0eXBlLC0tZGlzYWJsZS1mcmVldHlwZSxsaWJ4ZnQgZm9udGNvbmZpZyBmcmVldHlwZS1uYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICIgLS14LWluY2x1ZGVzPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgICAgICAgICAgLS14LWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICAgICAgICAgIEZSRUVUWVBFX0NPTkZJRz0ke1NUQUdJTkdfQklORElSX0NST1NTfS9mcmVldHlwZS1jb25maWcgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtaW1ha2UgXAotICAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGgtaGFjayBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zZXR1aWQgXAotICAgICAgICAgICAgICAgICAtLXdpdGgtYXBwLWRlZmF1bHRzPSR7ZGF0YWRpcn0vWDExL2FwcC1kZWZhdWx0cyBcCi0gICAgICAgICAgICAgICAgICIKLQotQiA9ICIke1N9IgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgZ251LWNvbmZpZ2l6ZSAtLWZvcmNlCi0gICAgc2VkIC1lICJzJS91c3IvY29udHJpYi9YMTFSNiUke1NUQUdJTkdfTElCRElSfSVnIiAtaSBjb25maWd1cmUKLSAgICBvZV9ydW5jb25mCi19Ci0KLSMgYnVzeWJveCBjYW4gc3VwcGx5IHJlc2l6ZSB0b28KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJyZXNpemUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveHRlcm1fMzUzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h0ZXJtXzM1My5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZGU3MDRkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3h0ZXJtXzM1My5iYgpAQCAtMCwwICsxLDM2IEBACityZXF1aXJlIHJlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveG9yZy1hcHAtY29tbW9uLmluYworU1VNTUFSWSA9ICJ4dGVybSBpcyB0aGUgc3RhbmRhcmQgdGVybWluYWwgZW11bGF0b3IgZm9yIHRoZSBYIFdpbmRvdyBTeXN0ZW0iCitERVBFTkRTID0gImxpYnhhdyB4b3JncHJvdG8gbGlieGV4dCBsaWJ4YXUgbGlieGluZXJhbWEgbGlieHBtIG5jdXJzZXMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3h0ZXJtLmg7YmVnaW5saW5lPTM7ZW5kbGluZT0zMTttZDU9OTk2YjFjZTA1ODRjMDc0N2IxN2I1NzY1NGNjODFlOGUiCisKK1NSQ19VUkkgPSAiaHR0cDovL2ludmlzaWJsZS1taXJyb3IubmV0L2FyY2hpdmVzLyR7QlBOfS8ke0JQfS50Z3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtY29uZmlndXJlLXRpbWUtY2hlY2stZm9yLXNldHNpZC5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjQ3YzMwZWJmYTQ0NjIzZjNhMmQxMDBlMGNhZTVjN2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTUyMWQzZWU5ZGVmNjFmNWQ1YzkxMWFmYzc0ZGQ1YzNhNTZjZTE0N2M3MDcxYzc0MDIzZWEyNGNhYzliYjc2OCIKK1BBQ0tBR0VDT05GSUcgPz0gIiIKK1BBQ0tBR0VDT05GSUdbeGZ0XSA9ICItLWVuYWJsZS1mcmVldHlwZSwtLWRpc2FibGUtZnJlZXR5cGUsbGlieGZ0IGZvbnRjb25maWcgZnJlZXR5cGUtbmF0aXZlIgorCitFWFRSQV9PRUNPTkYgPSAiIC0teC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgICAgICAgICAgICAgIC0teC1saWJyYXJpZXM9JHtTVEFHSU5HX0xJQkRJUn0gXAorICAgICAgICAgICAgICAgICBGUkVFVFlQRV9DT05GSUc9JHtTVEFHSU5HX0JJTkRJUl9DUk9TU30vZnJlZXR5cGUtY29uZmlnIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWltYWtlIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoLWhhY2sgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtc2V0dWlkIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWFwcC1kZWZhdWx0cz0ke2RhdGFkaXJ9L1gxMS9hcHAtZGVmYXVsdHMgXAorICAgICAgICAgICAgICAgICAiCisKK0IgPSAiJHtTfSIKKworZG9fY29uZmlndXJlKCkgeworICAgIGdudS1jb25maWdpemUgLS1mb3JjZQorICAgIHNlZCAtZSAicyUvdXNyL2NvbnRyaWIvWDExUjYlJHtTVEFHSU5HX0xJQkRJUn0lZyIgLWkgY29uZmlndXJlCisgICAgb2VfcnVuY29uZgorfQorCisjIGJ1c3lib3ggY2FuIHN1cHBseSByZXNpemUgdG9vCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfJHtQTn0gPSAicmVzaXplIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hjYi11dGlsLWN1cnNvcl8wLjEuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94Y2ItdXRpbC1jdXJzb3JfMC4xLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkzNWVkZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi94Y2ItdXRpbC1jdXJzb3JfMC4xLjMuYmIKQEAgLTAsMCArMSwxMSBAQAorcmVxdWlyZSByZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hjYi11dGlsLmluYworCitTVU1NQVJZID0gIlhDQiBwb3J0IG9mIGxpYlhjdXJzb3IiCisKK0RFUEVORFMgKz0gInhjYi11dGlsIHhjYi11dGlsLXJlbmRlcnV0aWwgeGNiLXV0aWwtaW1hZ2UiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2U0NjliNjFjNzBmZjhkN2NjZTA1NDc0NzY4OTE5NzQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YWMzYjE3Y2JhNTFhYWFhMzZiYTAzNWE1MzUyNzIxNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNWExMGEwNzA2YTFhNzg5YTA3OGJlMjk3YjVmYjY2M2Y2NmE3MWZiN2Y3ZjFiOTk2NTgyNjRjMzU5MjYzOTRmIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3lhZC95YWRfNS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3lhZC95YWRfNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNTNjMDRiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1ncmFwaGljcy95YWQveWFkXzUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiWWV0IEFub3RoZXIgRGlhbG9nIgotREVTQ1JJUFRJT04gPSAiUHJvZ3JhbSBhbGxvd2luZyB5b3UgdG8gZGlzcGxheSBHVEsrIGRpYWxvZyBib3hlcyBmcm9tIGNvbW1hbmQgbGluZSBvciBzaGVsbCBzY3JpcHRzLiIKLUFVVEhPUiA9ICJWaWN0b3IgQW5hbmpldnNreSIKLQotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdjFjb250L3lhZC5naXQiCi1TUkNSRVYgPSAiYzhlYWM4OWNjMjBkOTE1Y2I1ZWQxODVmNDIzMDkxYTI5MWM4YWYyNCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ3NldHRpbmdzCi0KLURFUEVORFMgPSAiZ3RrKzMgZ2xpYi0yLjAtbmF0aXZlIGludGx0b29sLW5hdGl2ZSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vaWNvbnMvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3lhZC95YWRfNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWdyYXBoaWNzL3lhZC95YWRfNi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM3NjBhMzcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtZ3JhcGhpY3MveWFkL3lhZF82LjAuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJZZXQgQW5vdGhlciBEaWFsb2ciCitERVNDUklQVElPTiA9ICJQcm9ncmFtIGFsbG93aW5nIHlvdSB0byBkaXNwbGF5IEdUSysgZGlhbG9nIGJveGVzIGZyb20gY29tbWFuZCBsaW5lIG9yIHNoZWxsIHNjcmlwdHMuIgorQVVUSE9SID0gIlZpY3RvciBBbmFuamV2c2t5IgorCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS92MWNvbnQveWFkLmdpdCIKK1NSQ1JFViA9ICJhNWIxYTdhMzg2N2JjN2RmZmJiYzUzOWY1ODZmMzAxNjg3YjZlYzAyIgorCitpbmhlcml0IGF1dG90b29scyBnc2V0dGluZ3MgZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworREVQRU5EUyA9ICJndGsrMyBnbGliLTIuMC1uYXRpdmUgaW50bHRvb2wtbmF0aXZlIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucy8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoXzcuMi43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaF83LjIuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA5OGQwOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoXzcuMi43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIwICswLDAgQEAKLVNVTU1BUlkgPSAiS2VybmVsIGFuYWx5c2lzIHV0aWxpdHkgZm9yIGxpdmUgc3lzdGVtcywgbmV0ZHVtcCwgZGlza2R1bXAsIGtkdW1wLCBMS0NEIG9yIG1jb3JlIGR1bXBmaWxlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBjb3JlIGFuYWx5c2lzIHN1aXRlIGlzIGEgc2VsZi1jb250YWluZWQgdG9vbCB0aGF0IGNhbiBiZSB1c2VkIHRvXAotaW52ZXN0aWdhdGUgZWl0aGVyIGxpdmUgc3lzdGVtcywga2VybmVsIGNvcmUgZHVtcHMgY3JlYXRlZCBmcm9tIHRoZVwKLW5ldGR1bXAsIGRpc2tkdW1wIGFuZCBrZHVtcCBwYWNrYWdlcyBmcm9tIFJlZCBIYXQgTGludXgsIHRoZSBtY29yZSBrZXJuZWwgcGF0Y2hcCi1vZmZlcmVkIGJ5IE1pc3Npb24gQ3JpdGljYWwgTGludXgsIG9yIHRoZSBMS0NEIGtlcm5lbCBwYXRjaC4iCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9wZW9wbGUucmVkaGF0LmNvbS9hbmRlcnNvbiIKLVNFQ1RJT04gPSAiZGV2ZWwiCi0KLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLURFUEVORFMgPSAiemxpYiByZWFkbGluZSBjb3JldXRpbHMtbmF0aXZlIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2NyYXNoLXV0aWxpdHkvJHtCUE59LmdpdCBcCi0gICAgICAgICAgICR7R05VX01JUlJPUn0vZ2RiL2dkYi03LjYudGFyLmd6O25hbWU9Z2RiO3N1YmRpcj1naXQgXAotICAgICAgICAgICBmaWxlOi8vNzAwMWZvcmNlX2RlZmluZV9hcmNoaXRlY3R1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vNzAwM2Nyb3NzX3JhbmxpYi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNyb3NzX2FkZF9jb25maWd1cmVfb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NpbS1wcGMtZHJvcC1MSUJTLWZyb20tcHNpbS1kZXBlbmRlbmN5LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NpbS1jb21tb24tc2ltLWFyYW5nZS1maXgtZXh0ZXJuLWlubGluZS1oYW5kbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kb25ub3QtZXh0cmFjdC1nZGItZHVyaW5nLWRvLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ2RiX2J1aWxkX2pvYnNfYW5kX25vdF93cml0ZV9jcmFzaF90YXJnZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXVucmVjb2duaXplZC1nY2Mtb3B0aW9uLW0zMi1mb3ItbWlwcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWNyYXNoLWZpeC1idWlsZC1lcnJvci11bmtub3duLXR5cGUtbmFtZS1nZGJfZnByZWdzZXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1jcmFzaC1kZXRlY3QtdGhlLXN5c3Jvb3Qtcy1nbGliYy1oZWFkZXItZmlsZS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ1JFViA9ICI1YjBlMzc3N2NjYmI1NzE2Nzg3OTE5MDNlOTM0NDZjY2QwYWJhMDNhIgotCi1TUkNfVVJJW2dkYi5tZDVzdW1dID0gImE5ODM2NzA3MzM3ZTVmN2JmNzZhMDA5YTg5MDRmNDcwIgotU1JDX1VSSVtnZGIuc2hhMjU2c3VtXSA9ICI4MDcwMzg5YTVkY2MxMDRlYjBiZTQ4M2Q1ODI3MjlmOThlZDRkNzYxYWQxOWNlZGQzZjE3YjVkMjUwMmZhYTM2IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2NyYXNoLXV0aWxpdHkvY3Jhc2gvcmVsZWFzZXMiCi0KLWluaGVyaXQgZ2V0dGV4dAotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBjcm9zcyIKLVRBUkdFVF9DQ19BUkNIX2FwcGVuZCA9ICIgJHtTRUxFQ1RFRF9PUFRJTUlaQVRJT059IgotCi0jIGNyYXNoIDcuMS4zIGFuZCBiZWZvcmUgZG9uJ3Qgc3VwcG9ydCBtaXBzNjQKLUNPTVBBVElCTEVfSE9TVCA9ICJeKD8hbWlwczY0KS4qIgotCi1FWFRSQV9PRU1BS0UgPSAnUlBNUEtHPSIke1BWfSIgXAotICAgICAgICAgICAgICAgIEdEQl9UQVJHRVQ9IiR7VEFSR0VUX1NZU30iIFwKLSAgICAgICAgICAgICAgICBHREJfSE9TVD0iJHtCVUlMRF9TWVN9IiBcCi0gICAgICAgICAgICAgICAgR0RCX01BS0VfSk9CUz0iJHtQQVJBTExFTF9NQUtFfSIgXAotICAgICAgICAgICAgICAgIExERkxBR1M9IiR7TERGTEFHU30iIFwKLSAgICAgICAgICAgICAgICAnCi0KLUVYVFJBX09FTUFLRV9jbGFzcy1jcm9zcyA9ICdSUE1QS0c9IiR7UFZ9IiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCX1RBUkdFVD0iJHtCVUlMRF9TWVN9IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcJHtHREJfQ09ORl9GTEFHU30gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tdGFyZ2V0PSR7VEFSR0VUX1NZU30iIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBHREJfSE9TVD0iJHtCVUlMRF9TWVN9IiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCX01BS0VfSk9CUz0iJHtQQVJBTExFTF9NQUtFfSIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICcKLQotRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIExERkxBR1M9JyR7QlVJTERfTERGTEFHU30nIgotRVhUUkFfT0VNQUtFX2FwcGVuZF9jbGFzcy1jcm9zcyA9ICIgTERGTEFHUz0nJHtCVUlMRF9MREZMQUdTfSciCi0KLVJFTU9WRV9NMzIgPSAic2VkIC1pIC1lICdzLyNkZWZpbmUgVEFSR0VUX0NGTEFHU19BUk1fT05fWDg2XzY0LiovI2RlZmluZSBUQVJHRVRfQ0ZMQUdTX0FSTV9PTl9YODZfNjRcdFwiVEFSR0VUX0NGTEFHUz0tRF9GSUxFX09GRlNFVF9CSVRTPTY0XCIvZycgJHtTfS9jb25maWd1cmUuYyIKLQotUkVNT1ZFX00zMl9jbGFzcy1jcm9zcyA9ICIiCi0KLWRvX2NvbmZpZ3VyZSgpIHsKLSAgICA6Ci19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBjYXNlICR7VEFSR0VUX0FSQ0h9IGluCi0gICAgICAgIGFhcmNoNjQqKSAgICBBUkNIPUFSTTY0IDs7Ci0gICAgICAgIGFybSopICAgICAgICBBUkNIPUFSTSA7OwotICAgICAgICBpKjg2KikgICAgICAgQVJDSD1YODYgOzsKLSAgICAgICAgeDg2XzY0KikgICAgIEFSQ0g9WDg2XzY0IDs7Ci0gICAgICAgIHBvd2VycGM2NCopICBBUkNIPVBQQzY0IDs7Ci0gICAgICAgIHBvd2VycGMqKSAgICBBUkNIPVBQQyA7OwotICAgICAgICBtaXBzKikgICAgICAgQVJDSD1NSVBTIDs7Ci0gICAgZXNhYwotCi0gICAgc2VkIC1pIHMvRk9SQ0VfREVGSU5FX0FSQ0gvIiR7QVJDSH0iL2cgJHtTfS9jb25maWd1cmUuYwotICAgICR7UkVNT1ZFX00zMn0KLSAgICBzZWQgLWkgJ3MvJmd0Oy8+L2cnICR7U30vTWFrZWZpbGUKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICBvZV9ydW5tYWtlICR7RVhUUkFfT0VNQUtFfSBSRUNJUEVfU1lTUk9PVD0ke1JFQ0lQRV9TWVNST09UfQotfQotCi1kb19pbnN0YWxsX3ByZXBlbmQgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQotICAgIGluc3RhbGwgLWQgJHtEfS8ke21hbmRpcn0vbWFuOAotICAgIGluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0vY3Jhc2gKLQotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2NyYXNoLjggJHtEfS8ke21hbmRpcn0vbWFuOC8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9kZWZzLmggJHtEfSR7aW5jbHVkZWRpcn0vY3Jhc2gKLX0KLQotZG9faW5zdGFsbF9jbGFzcy10YXJnZXQgKCkgewotICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgewotICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9JHtTVEFHSU5HX0RJUl9OQVRJVkV9IGluc3RhbGwKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1jcm9zcyAoKSB7Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vY3Jhc2ggJHtEfS8ke2JpbmRpcn0KLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gImxpYmx6bWEiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtY3Jvc3MgPSAiIgotCi0jIENhdXNlcyBnY2MgdG8gZ2V0IHN0dWNrIGFuZCBlYXQgYWxsIGF2YWlsYWJsZSBtZW1vcnkgaW4gcWVtdWFybSBidWlsZHMKLSMgamVua2lucyAgMTUxNjEgIDEwMCAxMi41IDEwMzg5NTk2IDEwMzIxMjg0ID8gICBSICAgIDExOjQwICAyODoxNyAvaG9tZS9qZW5raW5zL29lL3dvcmxkL3Noci1jb3JlL3RtcC1nbGliYy9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYmV4ZWMvYXJtLW9lLWxpbnV4LWdudWVhYmkvZ2NjL2FybS1vZS1saW51eC1nbnVlYWJpLzQuOS4yL2NjMSAtcXVpZXQgLUkgLiAtSSAuIC1JIC4vY29tbW9uIC1JIC4vY29uZmlnIC1JIC4vLi4vaW5jbHVkZS9vcGNvZGUgLUkgLi8uLi9vcGNvZGVzLy4uIC1JIC4vLi4vcmVhZGxpbmUvLi4gLUkgLi4vYmZkIC1JIC4vLi4vYmZkIC1JIC4vLi4vaW5jbHVkZSAtSSAuLi9saWJkZWNudW1iZXIgLUkgLi8uLi9saWJkZWNudW1iZXIgLUkgLi9nbnVsaWIvaW1wb3J0IC1JIGJ1aWxkLWdudWxpYi9pbXBvcnQgLWlzeXNyb290IC9ob21lL2plbmtpbnMvb2Uvd29ybGQvc2hyLWNvcmUvdG1wLWdsaWJjL3N5c3Jvb3RzL3FlbXVhcm0gLU1NRCBldmFsLmQgLU1GIC5kZXBzL2V2YWwuVHBvIC1NUCAtTVQgZXZhbC5vIC1EIExPQ0FMRURJUj0iL3Vzci9sb2NhbC9zaGFyZS9sb2NhbGUiIC1EIENSQVNIX01FUkdFIC1EIEhBVkVfQ09ORklHX0ggLUQgVFVJPTEgZXZhbC5jIC1xdWlldCAtZHVtcGJhc2UgZXZhbC5jIC1tYXJjaD1hcm12NXRlIC1tdGh1bWIgLW10aHVtYi1pbnRlcndvcmsgLW10bHMtZGlhbGVjdD1nbnUgLWF1eGJhc2Utc3RyaXAgZXZhbC5vIC1nIC1PMiAtV2FsbCAtV3BvaW50ZXItYXJpdGggLVdmb3JtYXQtbm9ubGl0ZXJhbCAtV25vLXBvaW50ZXItc2lnbiAtV25vLXVudXNlZCAtV3VudXNlZC12YWx1ZSAtV3VudXNlZC1mdW5jdGlvbiAtV25vLXN3aXRjaCAtV25vLWNoYXItc3Vic2NyaXB0cyAtV21pc3NpbmctcHJvdG90eXBlcyAtV2RlY2xhcmF0aW9uLWFmdGVyLXN0YXRlbWVudCAtV2VtcHR5LWJvZHkgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzIC1vIC0KLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODY5NjQvCi1DT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsID0gJ251bGwnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2NyYXNoL2NyYXNoXzcuMi44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaF83LjIuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzRjOTJjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9jcmFzaC9jcmFzaF83LjIuOC5iYgpAQCAtMCwwICsxLDExOCBAQAorU1VNTUFSWSA9ICJLZXJuZWwgYW5hbHlzaXMgdXRpbGl0eSBmb3IgbGl2ZSBzeXN0ZW1zLCBuZXRkdW1wLCBkaXNrZHVtcCwga2R1bXAsIExLQ0Qgb3IgbWNvcmUgZHVtcGZpbGVzIgorREVTQ1JJUFRJT04gPSAiVGhlIGNvcmUgYW5hbHlzaXMgc3VpdGUgaXMgYSBzZWxmLWNvbnRhaW5lZCB0b29sIHRoYXQgY2FuIGJlIHVzZWQgdG9cCitpbnZlc3RpZ2F0ZSBlaXRoZXIgbGl2ZSBzeXN0ZW1zLCBrZXJuZWwgY29yZSBkdW1wcyBjcmVhdGVkIGZyb20gdGhlXAorbmV0ZHVtcCwgZGlza2R1bXAgYW5kIGtkdW1wIHBhY2thZ2VzIGZyb20gUmVkIEhhdCBMaW51eCwgdGhlIG1jb3JlIGtlcm5lbCBwYXRjaFwKK29mZmVyZWQgYnkgTWlzc2lvbiBDcml0aWNhbCBMaW51eCwgb3IgdGhlIExLQ0Qga2VybmVsIHBhdGNoLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3Blb3BsZS5yZWRoYXQuY29tL2FuZGVyc29uIgorU0VDVElPTiA9ICJkZXZlbCIKKworTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworREVQRU5EUyA9ICJ6bGliIHJlYWRsaW5lIGNvcmV1dGlscy1uYXRpdmUgbmN1cnNlcy1uYXRpdmUiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vY3Jhc2gtdXRpbGl0eS8ke0JQTn0uZ2l0IFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9nZGIvZ2RiLTcuNi50YXIuZ3o7bmFtZT1nZGI7c3ViZGlyPWdpdCBcCisgICAgICAgICAgIGZpbGU6Ly83MDAxZm9yY2VfZGVmaW5lX2FyY2hpdGVjdHVyZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly83MDAzY3Jvc3NfcmFubGliLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY3Jvc3NfYWRkX2NvbmZpZ3VyZV9vcHRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2ltLXBwYy1kcm9wLUxJQlMtZnJvbS1wc2ltLWRlcGVuZGVuY3kucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2ltLWNvbW1vbi1zaW0tYXJhbmdlLWZpeC1leHRlcm4taW5saW5lLWhhbmRsaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rvbm5vdC1leHRyYWN0LWdkYi1kdXJpbmctZG8tY29tcGlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9nZGJfYnVpbGRfam9ic19hbmRfbm90X3dyaXRlX2NyYXNoX3RhcmdldC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtdW5yZWNvZ25pemVkLWdjYy1vcHRpb24tbTMyLWZvci1taXBzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItY3Jhc2gtZml4LWJ1aWxkLWVycm9yLXVua25vd24tdHlwZS1uYW1lLWdkYl9mcHJlZ3NldC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWNyYXNoLWRldGVjdC10aGUtc3lzcm9vdC1zLWdsaWJjLWhlYWRlci1maWxlLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDUkVWID0gIjI0ZjQ4MDFmOGM4ODcxYTJlM2U2NjBmZTlmYThmZGQ4NmJiMjk4NzYiCisKK1NSQ19VUklbZ2RiLm1kNXN1bV0gPSAiYTk4MzY3MDczMzdlNWY3YmY3NmEwMDlhODkwNGY0NzAiCitTUkNfVVJJW2dkYi5zaGEyNTZzdW1dID0gIjgwNzAzODlhNWRjYzEwNGViMGJlNDgzZDU4MjcyOWY5OGVkNGQ3NjFhZDE5Y2VkZDNmMTdiNWQyNTAyZmFhMzYiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3Jhc2gtdXRpbGl0eS9jcmFzaC9yZWxlYXNlcyIKKworaW5oZXJpdCBnZXR0ZXh0CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIGNyb3NzIgorVEFSR0VUX0NDX0FSQ0hfYXBwZW5kID0gIiAke1NFTEVDVEVEX09QVElNSVpBVElPTn0iCisKKyMgY3Jhc2ggNy4xLjMgYW5kIGJlZm9yZSBkb24ndCBzdXBwb3J0IG1pcHM2NC9yaXNjdjY0CitDT01QQVRJQkxFX0hPU1RfcmlzY3Y2NCA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX3Jpc2N2MzIgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9taXBzYXJjaG42NCA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjMyID0gIm51bGwiCisKKworRVhUUkFfT0VNQUtFID0gJ1JQTVBLRz0iJHtQVn0iIFwKKyAgICAgICAgICAgICAgICBHREJfVEFSR0VUPSIke1RBUkdFVF9TWVN9IiBcCisgICAgICAgICAgICAgICAgR0RCX0hPU1Q9IiR7QlVJTERfU1lTfSIgXAorICAgICAgICAgICAgICAgIEdEQl9NQUtFX0pPQlM9IiR7UEFSQUxMRUxfTUFLRX0iIFwKKyAgICAgICAgICAgICAgICBMREZMQUdTPSIke0xERkxBR1N9IiBcCisgICAgICAgICAgICAgICAgJworCitFWFRSQV9PRU1BS0VfY2xhc3MtY3Jvc3MgPSAnUlBNUEtHPSIke1BWfSIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQl9UQVJHRVQ9IiR7QlVJTERfU1lTfSAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgR0RCX0hPU1Q9IiR7QlVJTERfU1lTfSIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdEQl9NQUtFX0pPQlM9IiR7UEFSQUxMRUxfTUFLRX0iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnCisKK0VYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBMREZMQUdTPScke0JVSUxEX0xERkxBR1N9JyIKK0VYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtY3Jvc3MgPSAiIExERkxBR1M9JyR7QlVJTERfTERGTEFHU30nIgorCitkb19jb25maWd1cmUoKSB7CisgICAgOgorfQorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgY2FzZSAke1RBUkdFVF9BUkNIfSBpbgorICAgICAgICBhYXJjaDY0KikgICAgQVJDSD1BUk02NCA7OworICAgICAgICBhcm0qKSAgICAgICAgQVJDSD1BUk0gOzsKKyAgICAgICAgaSo4NiopICAgICAgIEFSQ0g9WDg2IDs7CisgICAgICAgIHg4Nl82NCopICAgICBBUkNIPVg4Nl82NCA7OworICAgICAgICBwb3dlcnBjNjQqKSAgQVJDSD1QUEM2NCA7OworICAgICAgICBwb3dlcnBjKikgICAgQVJDSD1QUEMgOzsKKyAgICAgICAgbWlwcyopICAgICAgIEFSQ0g9TUlQUyA7OworICAgIGVzYWMKKworICAgIHNlZCAtaSBzL0ZPUkNFX0RFRklORV9BUkNILyIke0FSQ0h9Ii9nICR7U30vY29uZmlndXJlLmMKKyAgICBzZWQgLWkgLWUgJ3MvI2RlZmluZSBUQVJHRVRfQ0ZMQUdTX0FSTV9PTl9YODZfNjQuKi8jZGVmaW5lIFRBUkdFVF9DRkxBR1NfQVJNX09OX1g4Nl82NFx0XCJUQVJHRVRfQ0ZMQUdTPS1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjRcIi9nJyAke1N9L2NvbmZpZ3VyZS5jCisgICAgc2VkIC1pICdzLyZndDsvPi9nJyAke1N9L01ha2VmaWxlCit9CisKK2RvX2NvbXBpbGUoKSB7CisgICAgb2VfcnVubWFrZSAke0VYVFJBX09FTUFLRX0gUkVDSVBFX1NZU1JPT1Q9JHtSRUNJUEVfU1lTUk9PVH0KK30KKworZG9faW5zdGFsbF9wcmVwZW5kICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1kICR7RH0vJHttYW5kaXJ9L21hbjgKKyAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L2NyYXNoCisKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9jcmFzaC44ICR7RH0vJHttYW5kaXJ9L21hbjgvCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7U30vZGVmcy5oICR7RH0ke2luY2x1ZGVkaXJ9L2NyYXNoCit9CisKK2RvX2luc3RhbGxfY2xhc3MtdGFyZ2V0ICgpIHsKKyAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlICgpIHsKKyAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSR7U1RBR0lOR19ESVJfTkFUSVZFfSBpbnN0YWxsCit9CisKK2RvX2luc3RhbGxfY2xhc3MtY3Jvc3MgKCkgeworICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L2NyYXNoICR7RH0vJHtiaW5kaXJ9Cit9CisKK1JERVBFTkRTXyR7UE59ICs9ICJsaWJsem1hIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKK1JERVBFTkRTXyR7UE59X2NsYXNzLWNyb3NzID0gIiIKKworIyBDYXVzZXMgZ2NjIHRvIGdldCBzdHVjayBhbmQgZWF0IGFsbCBhdmFpbGFibGUgbWVtb3J5IGluIHFlbXVhcm0gYnVpbGRzCisjIGplbmtpbnMgIDE1MTYxICAxMDAgMTIuNSAxMDM4OTU5NiAxMDMyMTI4NCA/ICAgUiAgICAxMTo0MCAgMjg6MTcgL2hvbWUvamVua2lucy9vZS93b3JsZC9zaHItY29yZS90bXAtZ2xpYmMvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWJleGVjL2FybS1vZS1saW51eC1nbnVlYWJpL2djYy9hcm0tb2UtbGludXgtZ251ZWFiaS80LjkuMi9jYzEgLXF1aWV0IC1JIC4gLUkgLiAtSSAuL2NvbW1vbiAtSSAuL2NvbmZpZyAtSSAuLy4uL2luY2x1ZGUvb3Bjb2RlIC1JIC4vLi4vb3Bjb2Rlcy8uLiAtSSAuLy4uL3JlYWRsaW5lLy4uIC1JIC4uL2JmZCAtSSAuLy4uL2JmZCAtSSAuLy4uL2luY2x1ZGUgLUkgLi4vbGliZGVjbnVtYmVyIC1JIC4vLi4vbGliZGVjbnVtYmVyIC1JIC4vZ251bGliL2ltcG9ydCAtSSBidWlsZC1nbnVsaWIvaW1wb3J0IC1pc3lzcm9vdCAvaG9tZS9qZW5raW5zL29lL3dvcmxkL3Noci1jb3JlL3RtcC1nbGliYy9zeXNyb290cy9xZW11YXJtIC1NTUQgZXZhbC5kIC1NRiAuZGVwcy9ldmFsLlRwbyAtTVAgLU1UIGV2YWwubyAtRCBMT0NBTEVESVI9Ii91c3IvbG9jYWwvc2hhcmUvbG9jYWxlIiAtRCBDUkFTSF9NRVJHRSAtRCBIQVZFX0NPTkZJR19IIC1EIFRVST0xIGV2YWwuYyAtcXVpZXQgLWR1bXBiYXNlIGV2YWwuYyAtbWFyY2g9YXJtdjV0ZSAtbXRodW1iIC1tdGh1bWItaW50ZXJ3b3JrIC1tdGxzLWRpYWxlY3Q9Z251IC1hdXhiYXNlLXN0cmlwIGV2YWwubyAtZyAtTzIgLVdhbGwgLVdwb2ludGVyLWFyaXRoIC1XZm9ybWF0LW5vbmxpdGVyYWwgLVduby1wb2ludGVyLXNpZ24gLVduby11bnVzZWQgLVd1bnVzZWQtdmFsdWUgLVd1bnVzZWQtZnVuY3Rpb24gLVduby1zd2l0Y2ggLVduby1jaGFyLXN1YnNjcmlwdHMgLVdtaXNzaW5nLXByb3RvdHlwZXMgLVdkZWNsYXJhdGlvbi1hZnRlci1zdGF0ZW1lbnQgLVdlbXB0eS1ib2R5IC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10eXBlcyAtbyAtCitBUk1fSU5TVFJVQ1RJT05fU0VUID0gImFybSIKKworIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTg2OTY0LworQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbCA9ICdudWxsJwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdG9vbC9pcG1pdG9vbC8wMDAxLWZydS1GaXgtYnVmZmVyLW92ZXJmbG93LWluLWlwbWlfc3BkX3ByaW50X2ZydS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2wvMDAwMS1mcnUtRml4LWJ1ZmZlci1vdmVyZmxvdy1pbi1pcG1pX3NwZF9wcmludF9mcnUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWFkZmI3ZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2wvMDAwMS1mcnUtRml4LWJ1ZmZlci1vdmVyZmxvdy1pbi1pcG1pX3NwZF9wcmludF9mcnUucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSAyNGFlZDkzZWZiMzBhOGY1NTdhZWRjMmYwM2I2Y2NlYzc1OGNjYmY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyb3N0b3BlciBFcnRsIDxjaGVydGxAbWljcm9zb2Z0LmNvbT4KK0RhdGU6IFRodSwgMjggTm92IDIwMTkgMTY6NDQ6MTggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzVdIGZydTogRml4IGJ1ZmZlciBvdmVyZmxvdyBpbiBpcG1pX3NwZF9wcmludF9mcnUKKworUGFydGlhbCBmaXggZm9yIENWRS0yMDIwLTUyMDgsIHNlZQoraHR0cHM6Ly9naXRodWIuY29tL2lwbWl0b29sL2lwbWl0b29sL3NlY3VyaXR5L2Fkdmlzb3JpZXMvR0hTQS1nNjU5LTlxeHctcDdjcAorCitUaGUgYGlwbWlfc3BkX3ByaW50X2ZydWAgZnVuY3Rpb24gaGFzIGEgc2ltaWxhciBpc3N1ZSBhcyB0aGUgb25lIGZpeGVkCitieSB0aGUgcHJldmlvdXMgY29tbWl0IGluIGByZWFkX2ZydV9hcmVhX3NlY3Rpb25gLiBBbiBpbml0aWFsIHJlcXVlc3QgaXMKK21hZGUgdG8gZ2V0IHRoZSBgZnJ1LnNpemVgLCB3aGljaCBpcyB1c2VkIGFzIHRoZSBzaXplIGZvciB0aGUgYWxsb2NhdGlvbgorb2YgYHNwZF9kYXRhYC4gSW5zaWRlIGEgbG9vcCwgZnVydGhlciByZXF1ZXN0cyBhcmUgcGVyZm9ybWVkIHRvIGdldCB0aGUKK2NvcHkgc2l6ZXMgd2hpY2ggYXJlIG5vdCBjaGVja2VkIGJlZm9yZSBiZWluZyB1c2VkIGFzIHRoZSBzaXplIGZvciBhCitjb3B5IGludG8gdGhlIGJ1ZmZlci4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydFtodHRwczovL2dpdGh1Yi5jb20vaXBtaXRvb2wvaXBtaXRvb2wvY29tbWl0Lzg0MGZiMWNiYjRmYjM2NWNiOTc5NzMwMGUzMzc0ZDRmYWVmY2RiMTBdCitDVkU6IENWRS0yMDIwLTUyMDgKKworU2lnbmVkLW9mZi1ieTogV2VubGluIEthbmcgPHdlbmxpbi5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWIvZGltbV9zcGQuYyB8IDkgKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliL2RpbW1fc3BkLmMgYi9saWIvZGltbV9zcGQuYworaW5kZXggOTFhZTExNy4uNGM5YzIxZCAxMDA2NDQKKy0tLSBhL2xpYi9kaW1tX3NwZC5jCisrKysgYi9saWIvZGltbV9zcGQuYworQEAgLTEwMTQsNyArMTAxNCw3IEBAIGlwbWlfc3BkX3ByaW50X2ZydShzdHJ1Y3QgaXBtaV9pbnRmICogaW50ZiwgdWludDhfdCBpZCkKKyAJc3RydWN0IGlwbWlfcnEgcmVxOworIAlzdHJ1Y3QgZnJ1X2luZm8gZnJ1OworIAl1aW50OF90ICpzcGRfZGF0YSwgbXNnX2RhdGFbNF07CistCWludCBsZW4sIG9mZnNldDsKKysJdWludDMyX3QgbGVuLCBvZmZzZXQ7CisgCisgCW1zZ19kYXRhWzBdID0gaWQ7CisgCitAQCAtMTA5MSw2ICsxMDkxLDEzIEBAIGlwbWlfc3BkX3ByaW50X2ZydShzdHJ1Y3QgaXBtaV9pbnRmICogaW50ZiwgdWludDhfdCBpZCkKKyAJCX0KKyAKKyAJCWxlbiA9IHJzcC0+ZGF0YVswXTsKKysJCWlmKHJzcC0+ZGF0YV9sZW4gPCAxCisrCQkgICB8fCBsZW4gPiByc3AtPmRhdGFfbGVuIC0gMQorKwkJICAgfHwgbGVuID4gZnJ1LnNpemUgLSBvZmZzZXQpCisrCQl7CisrCQkJcHJpbnRmKCIgTm90IGVub3VnaCBidWZmZXIgc2l6ZSIpOworKwkJCXJldHVybiAtMTsKKysJCX0KKyAJCW1lbWNweSgmc3BkX2RhdGFbb2Zmc2V0XSwgcnNwLT5kYXRhICsgMSwgbGVuKTsKKyAJCW9mZnNldCArPSBsZW47CisgCX0gd2hpbGUgKG9mZnNldCA8IGZydS5zaXplKTsKKy0tIAorMS45LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdG9vbC9pcG1pdG9vbC8wMDAxLWZydS1GaXgtYnVmZmVyLW92ZXJmbG93LXZ1bG5lcmFiaWxpdGllcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2wvMDAwMS1mcnUtRml4LWJ1ZmZlci1vdmVyZmxvdy12dWxuZXJhYmlsaXRpZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY1ZTNlZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2wvMDAwMS1mcnUtRml4LWJ1ZmZlci1vdmVyZmxvdy12dWxuZXJhYmlsaXRpZXMucGF0Y2gKQEAgLTAsMCArMSwxMzMgQEAKK0Zyb20gZTgyNGMyMzMxNmFlNTBiZWI3Zjc0ODhmMjA1NWFjNjVlOGIzNDFmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENocm9zdG9wZXIgRXJ0bCA8Y2hlcnRsQG1pY3Jvc29mdC5jb20+CitEYXRlOiBUaHUsIDI4IE5vdiAyMDE5IDE2OjMzOjU5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGZydTogRml4IGJ1ZmZlciBvdmVyZmxvdyB2dWxuZXJhYmlsaXRpZXMKKworUGFydGlhbCBmaXggZm9yIENWRS0yMDIwLTUyMDgsIHNlZQoraHR0cHM6Ly9naXRodWIuY29tL2lwbWl0b29sL2lwbWl0b29sL3NlY3VyaXR5L2Fkdmlzb3JpZXMvR0hTQS1nNjU5LTlxeHctcDdjcAorCitUaGUgYHJlYWRfZnJ1X2FyZWFfc2VjdGlvbmAgZnVuY3Rpb24gb25seSBwZXJmb3JtcyBzaXplIHZhbGlkYXRpb24gb2YKK3JlcXVlc3RlZCByZWFkIHNpemUsIGFuZCBmYWxzZWx5IGFzc3VtZXMgdGhhdCB0aGUgSVBNSSBtZXNzYWdlIHdpbGwgbm90CityZXNwb25kIHdpdGggbW9yZSB0aGFuIHRoZSByZXF1ZXN0ZWQgYW1vdW50IG9mIGRhdGE7IGl0IHVzZXMgdGhlCit1bnZhbGlkYXRlZCByZXNwb25zZSBzaXplIHRvIGNvcHkgaW50byBgZnJ1YnVmYC4gSWYgdGhlIHJlc3BvbnNlIGlzCitsYXJnZXIgdGhhbiB0aGUgcmVxdWVzdCwgdGhpcyBjYW4gcmVzdWx0IGluIG92ZXJmbG93aW5nIHRoZSBidWZmZXIuCisKK1RoZSBzYW1lIGlzc3VlIGFmZmVjdHMgdGhlIGByZWFkX2ZydV9hcmVhYCBmdW5jdGlvbi4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydFtodHRwczovL2dpdGh1Yi5jb20vaXBtaXRvb2wvaXBtaXRvb2wvY29tbWl0L2U4MjRjMjMzMTZhZTUwYmViN2Y3NDg4ZjIwNTVhYzY1ZThiMzQxZjJdCitDVkU6IENWRS0yMDIwLTUyMDgKKworU2lnbmVkLW9mZi1ieTogV2VubGluIEthbmcgPHdlbmxpbi5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWIvaXBtaV9mcnUuYyB8IDMzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL2lwbWlfZnJ1LmMgYi9saWIvaXBtaV9mcnUuYworaW5kZXggYzJhMTM5ZC4uMmUzMjNmZiAxMDA2NDQKKy0tLSBhL2xpYi9pcG1pX2ZydS5jCisrKysgYi9saWIvaXBtaV9mcnUuYworQEAgLTY2Myw3ICs2NjMsMTAgQEAgaW50CisgcmVhZF9mcnVfYXJlYShzdHJ1Y3QgaXBtaV9pbnRmICogaW50Ziwgc3RydWN0IGZydV9pbmZvICpmcnUsIHVpbnQ4X3QgaWQsCisgCQkJdWludDMyX3Qgb2Zmc2V0LCB1aW50MzJfdCBsZW5ndGgsIHVpbnQ4X3QgKmZydWJ1ZikKKyB7CistCXVpbnQzMl90IG9mZiA9IG9mZnNldCwgdG1wLCBmaW5pc2g7CisrCXVpbnQzMl90IG9mZiA9IG9mZnNldDsKKysJdWludDMyX3QgdG1wOworKwl1aW50MzJfdCBmaW5pc2g7CisrCXVpbnQzMl90IHNpemVfbGVmdF9pbl9idWZmZXI7CisgCXN0cnVjdCBpcG1pX3JzICogcnNwOworIAlzdHJ1Y3QgaXBtaV9ycSByZXE7CisgCXVpbnQ4X3QgbXNnX2RhdGFbNF07CitAQCAtNjc2LDEwICs2NzksMTIgQEAgcmVhZF9mcnVfYXJlYShzdHJ1Y3QgaXBtaV9pbnRmICogaW50Ziwgc3RydWN0IGZydV9pbmZvICpmcnUsIHVpbnQ4X3QgaWQsCisgCisgCWZpbmlzaCA9IG9mZnNldCArIGxlbmd0aDsKKyAJaWYgKGZpbmlzaCA+IGZydS0+c2l6ZSkgeworKwkJbWVtc2V0KGZydWJ1ZiArIGZydS0+c2l6ZSwgMCwgbGVuZ3RoIC0gZnJ1LT5zaXplKTsKKyAJCWZpbmlzaCA9IGZydS0+c2l6ZTsKKyAJCWxwcmludGYoTE9HX05PVElDRSwgIlJlYWQgRlJVIEFyZWEgbGVuZ3RoICVkIHRvbyBsYXJnZSwgIgorIAkJCSJBZGp1c3RpbmcgdG8gJWQiLAorIAkJCW9mZnNldCArIGxlbmd0aCwgZmluaXNoIC0gb2Zmc2V0KTsKKysJCWxlbmd0aCA9IGZpbmlzaCAtIG9mZnNldDsKKyAJfQorIAorIAltZW1zZXQoJnJlcSwgMCwgc2l6ZW9mKHJlcSkpOworQEAgLTcxNSw2ICs3MjAsNyBAQCByZWFkX2ZydV9hcmVhKHN0cnVjdCBpcG1pX2ludGYgKiBpbnRmLCBzdHJ1Y3QgZnJ1X2luZm8gKmZydSwgdWludDhfdCBpZCwKKyAJCX0KKyAJfQorIAorKwlzaXplX2xlZnRfaW5fYnVmZmVyID0gbGVuZ3RoOworIAlkbyB7CisgCQl0bXAgPSBmcnUtPmFjY2VzcyA/IG9mZiA+PiAxIDogb2ZmOworIAkJbXNnX2RhdGFbMF0gPSBpZDsKK0BAIC03NTYsOSArNzYyLDE4IEBAIHJlYWRfZnJ1X2FyZWEoc3RydWN0IGlwbWlfaW50ZiAqIGludGYsIHN0cnVjdCBmcnVfaW5mbyAqZnJ1LCB1aW50OF90IGlkLAorIAkJfQorIAorIAkJdG1wID0gZnJ1LT5hY2Nlc3MgPyByc3AtPmRhdGFbMF0gPDwgMSA6IHJzcC0+ZGF0YVswXTsKKysJCWlmKHJzcC0+ZGF0YV9sZW4gPCAxCisrCQkgICB8fCB0bXAgPiByc3AtPmRhdGFfbGVuIC0gMQorKwkJICAgfHwgdG1wID4gc2l6ZV9sZWZ0X2luX2J1ZmZlcikKKysJCXsKKysJCQlwcmludGYoIiBOb3QgZW5vdWdoIGJ1ZmZlciBzaXplIik7CisrCQkJcmV0dXJuIC0xOworKwkJfQorKworIAkJbWVtY3B5KGZydWJ1ZiwgcnNwLT5kYXRhICsgMSwgdG1wKTsKKyAJCW9mZiArPSB0bXA7CisgCQlmcnVidWYgKz0gdG1wOworKwkJc2l6ZV9sZWZ0X2luX2J1ZmZlciAtPSB0bXA7CisgCQkvKiBzb21ldGltZXMgdGhlIHNpemUgcmV0dXJuZWQgaW4gdGhlIEluZm8gY29tbWFuZAorIAkJKiBpcyB0b28gbGFyZ2UuICByZXR1cm4gMCBzbyBoaWdoZXIgbGV2ZWwgZnVuY3Rpb24KKyAJCSogc3RpbGwgYXR0ZW1wdHMgdG8gcGFyc2Ugd2hhdCB3YXMgcmV0dXJuZWQgKi8KK0BAIC03OTEsNyArODA2LDkgQEAgcmVhZF9mcnVfYXJlYV9zZWN0aW9uKHN0cnVjdCBpcG1pX2ludGYgKiBpbnRmLCBzdHJ1Y3QgZnJ1X2luZm8gKmZydSwgdWludDhfdCBpZCwKKyAJCQl1aW50MzJfdCBvZmZzZXQsIHVpbnQzMl90IGxlbmd0aCwgdWludDhfdCAqZnJ1YnVmKQorIHsKKyAJc3RhdGljIHVpbnQzMl90IGZydV9kYXRhX3Jxc3Rfc2l6ZSA9IDIwOworLQl1aW50MzJfdCBvZmYgPSBvZmZzZXQsIHRtcCwgZmluaXNoOworKwl1aW50MzJfdCBvZmYgPSBvZmZzZXQ7CisrCXVpbnQzMl90IHRtcCwgZmluaXNoOworKwl1aW50MzJfdCBzaXplX2xlZnRfaW5fYnVmZmVyOworIAlzdHJ1Y3QgaXBtaV9ycyAqIHJzcDsKKyAJc3RydWN0IGlwbWlfcnEgcmVxOworIAl1aW50OF90IG1zZ19kYXRhWzRdOworQEAgLTgwNCwxMCArODIxLDEyIEBAIHJlYWRfZnJ1X2FyZWFfc2VjdGlvbihzdHJ1Y3QgaXBtaV9pbnRmICogaW50Ziwgc3RydWN0IGZydV9pbmZvICpmcnUsIHVpbnQ4X3QgaWQsCisgCisgCWZpbmlzaCA9IG9mZnNldCArIGxlbmd0aDsKKyAJaWYgKGZpbmlzaCA+IGZydS0+c2l6ZSkgeworKwkJbWVtc2V0KGZydWJ1ZiArIGZydS0+c2l6ZSwgMCwgbGVuZ3RoIC0gZnJ1LT5zaXplKTsKKyAJCWZpbmlzaCA9IGZydS0+c2l6ZTsKKyAJCWxwcmludGYoTE9HX05PVElDRSwgIlJlYWQgRlJVIEFyZWEgbGVuZ3RoICVkIHRvbyBsYXJnZSwgIgorIAkJCSJBZGp1c3RpbmcgdG8gJWQiLAorIAkJCW9mZnNldCArIGxlbmd0aCwgZmluaXNoIC0gb2Zmc2V0KTsKKysJCWxlbmd0aCA9IGZpbmlzaCAtIG9mZnNldDsKKyAJfQorIAorIAltZW1zZXQoJnJlcSwgMCwgc2l6ZW9mKHJlcSkpOworQEAgLTgyMiw2ICs4NDEsOCBAQCByZWFkX2ZydV9hcmVhX3NlY3Rpb24oc3RydWN0IGlwbWlfaW50ZiAqIGludGYsIHN0cnVjdCBmcnVfaW5mbyAqZnJ1LCB1aW50OF90IGlkLAorIAlpZiAoZnJ1LT5hY2Nlc3MgJiYgZnJ1X2RhdGFfcnFzdF9zaXplID4gMTYpCisgI2VuZGlmCisgCQlmcnVfZGF0YV9ycXN0X3NpemUgPSAxNjsKKysKKysJc2l6ZV9sZWZ0X2luX2J1ZmZlciA9IGxlbmd0aDsKKyAJZG8geworIAkJdG1wID0gZnJ1LT5hY2Nlc3MgPyBvZmYgPj4gMSA6IG9mZjsKKyAJCW1zZ19kYXRhWzBdID0gaWQ7CitAQCAtODUzLDggKzg3NCwxNiBAQCByZWFkX2ZydV9hcmVhX3NlY3Rpb24oc3RydWN0IGlwbWlfaW50ZiAqIGludGYsIHN0cnVjdCBmcnVfaW5mbyAqZnJ1LCB1aW50OF90IGlkLAorIAkJfQorIAorIAkJdG1wID0gZnJ1LT5hY2Nlc3MgPyByc3AtPmRhdGFbMF0gPDwgMSA6IHJzcC0+ZGF0YVswXTsKKysJCWlmKHJzcC0+ZGF0YV9sZW4gPCAxCisrCQkgICB8fCB0bXAgPiByc3AtPmRhdGFfbGVuIC0gMQorKwkJICAgfHwgdG1wID4gc2l6ZV9sZWZ0X2luX2J1ZmZlcikKKysJCXsKKysJCQlwcmludGYoIiBOb3QgZW5vdWdoIGJ1ZmZlciBzaXplIik7CisrCQkJcmV0dXJuIC0xOworKwkJfQorIAkJbWVtY3B5KChmcnVidWYgKyBvZmYpLW9mZnNldCwgcnNwLT5kYXRhICsgMSwgdG1wKTsKKyAJCW9mZiArPSB0bXA7CisrCQlzaXplX2xlZnRfaW5fYnVmZmVyIC09IHRtcDsKKyAKKyAJCS8qIHNvbWV0aW1lcyB0aGUgc2l6ZSByZXR1cm5lZCBpbiB0aGUgSW5mbyBjb21tYW5kCisgCQkqIGlzIHRvbyBsYXJnZS4gIHJldHVybiAwIHNvIGhpZ2hlciBsZXZlbCBmdW5jdGlvbgorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdG9vbC9pcG1pdG9vbC8wMDAyLXNlc3Npb24tRml4LWJ1ZmZlci1vdmVyZmxvdy1pbi1pcG1pX2dldF9zZXNzaW9uX2luZm8ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2lwbWl0b29sL2lwbWl0b29sLzAwMDItc2Vzc2lvbi1GaXgtYnVmZmVyLW92ZXJmbG93LWluLWlwbWlfZ2V0X3Nlc3Npb25faW5mby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iODc0MmIxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdG9vbC9pcG1pdG9vbC8wMDAyLXNlc3Npb24tRml4LWJ1ZmZlci1vdmVyZmxvdy1pbi1pcG1pX2dldF9zZXNzaW9uX2luZm8ucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSA4MTE0NGNmYmExMzFiNGRkYmZjZjljNTMwMjc0YjIzYmZjN2UwZWE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyb3N0b3BlciBFcnRsIDxjaGVydGxAbWljcm9zb2Z0LmNvbT4KK0RhdGU6IFRodSwgMjggTm92IDIwMTkgMTY6NTE6NDkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzVdIHNlc3Npb246IEZpeCBidWZmZXIgb3ZlcmZsb3cgaW4gaXBtaV9nZXRfc2Vzc2lvbl9pbmZvCisKK1BhcnRpYWwgZml4IGZvciBDVkUtMjAyMC01MjA4LCBzZWUKK2h0dHBzOi8vZ2l0aHViLmNvbS9pcG1pdG9vbC9pcG1pdG9vbC9zZWN1cml0eS9hZHZpc29yaWVzL0dIU0EtZzY1OS05cXh3LXA3Y3AKKworVGhlIGBpcG1pX2dldF9zZXNzaW9uX2luZm9gIGZ1bmN0aW9uIGRvZXMgbm90IHByb3Blcmx5IGNoZWNrIHRoZQorcmVzcG9uc2UgYGRhdGFfbGVuYCwgd2hpY2ggaXMgdXNlZCBhcyBhIGNvcHkgc2l6ZSwgYWxsb3dpbmcgc3RhY2sgYnVmZmVyCitvdmVyZmxvdy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydFtodHRwczovL2dpdGh1Yi5jb20vaXBtaXRvb2wvaXBtaXRvb2wvY29tbWl0LzQxZDcwMjY5NDZmYWZiZDRkMWVjMGJjYWNhM2VhMzBhNmU4ZWVkMjJdCitDVkU6IENWRS0yMDIwLTUyMDgKKworU2lnbmVkLW9mZi1ieTogV2VubGluIEthbmcgPHdlbmxpbi5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWIvaXBtaV9zZXNzaW9uLmMgfCAxMiArKysrKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL2lwbWlfc2Vzc2lvbi5jIGIvbGliL2lwbWlfc2Vzc2lvbi5jCitpbmRleCA0ODU1YmM0Li43MWJlZjRjIDEwMDY0NAorLS0tIGEvbGliL2lwbWlfc2Vzc2lvbi5jCisrKysgYi9saWIvaXBtaV9zZXNzaW9uLmMKK0BAIC0zMTksOCArMzE5LDEwIEBAIGlwbWlfZ2V0X3Nlc3Npb25faW5mbyhzdHJ1Y3QgaXBtaV9pbnRmICAgICAgICAgKiBpbnRmLAorIAkJfQorIAkJZWxzZQorIAkJeworLQkJCW1lbWNweSgmc2Vzc2lvbl9pbmZvLCAgcnNwLT5kYXRhLCByc3AtPmRhdGFfbGVuKTsKKy0JCQlwcmludF9zZXNzaW9uX2luZm8oJnNlc3Npb25faW5mbywgcnNwLT5kYXRhX2xlbik7CisrCQkJbWVtY3B5KCZzZXNzaW9uX2luZm8sICByc3AtPmRhdGEsCisrCQkJICAgICAgIF9fbWluKHJzcC0+ZGF0YV9sZW4sIHNpemVvZihzZXNzaW9uX2luZm8pKSk7CisrCQkJcHJpbnRfc2Vzc2lvbl9pbmZvKCZzZXNzaW9uX2luZm8sCisrCQkJICAgICAgICAgICAgICAgICAgIF9fbWluKHJzcC0+ZGF0YV9sZW4sIHNpemVvZihzZXNzaW9uX2luZm8pKSk7CisgCQl9CisgCQlicmVhazsKKyAJCQorQEAgLTM1MSw4ICszNTMsMTAgQEAgaXBtaV9nZXRfc2Vzc2lvbl9pbmZvKHN0cnVjdCBpcG1pX2ludGYgICAgICAgICAqIGludGYsCisgCQkJCWJyZWFrOworIAkJCX0KKyAKKy0JCQltZW1jcHkoJnNlc3Npb25faW5mbywgIHJzcC0+ZGF0YSwgcnNwLT5kYXRhX2xlbik7CistCQkJcHJpbnRfc2Vzc2lvbl9pbmZvKCZzZXNzaW9uX2luZm8sIHJzcC0+ZGF0YV9sZW4pOworKwkJCW1lbWNweSgmc2Vzc2lvbl9pbmZvLCAgcnNwLT5kYXRhLAorKwkJCSAgICAgICBfX21pbihyc3AtPmRhdGFfbGVuLCBzaXplb2Yoc2Vzc2lvbl9pbmZvKSkpOworKwkJCXByaW50X3Nlc3Npb25faW5mbygmc2Vzc2lvbl9pbmZvLAorKwkJCSAgICAgICAgICAgICAgICAgICBfX21pbihyc3AtPmRhdGFfbGVuLCBzaXplb2Yoc2Vzc2lvbl9pbmZvKSkpOworIAkJCQorIAkJfSB3aGlsZSAoaSA8PSBzZXNzaW9uX2luZm8uc2Vzc2lvbl9zbG90X2NvdW50KTsKKyAJCWJyZWFrOworLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2lwbWl0b29sL2lwbWl0b29sLzAwMDMtY2hhbm5lbC1GaXgtYnVmZmVyLW92ZXJmbG93LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdG9vbC9pcG1pdG9vbC8wMDAzLWNoYW5uZWwtRml4LWJ1ZmZlci1vdmVyZmxvdy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWViZDM1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdG9vbC9pcG1pdG9vbC8wMDAzLWNoYW5uZWwtRml4LWJ1ZmZlci1vdmVyZmxvdy5wYXRjaApAQCAtMCwwICsxLDY5IEBACitGcm9tIDUwNTc3NjFlMzBlM2E3NjgyZWRhYjYwZjk4ZjYzMTYxNjM5MmRkYzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHJvc3RvcGVyIEVydGwgPGNoZXJ0bEBtaWNyb3NvZnQuY29tPgorRGF0ZTogVGh1LCAyOCBOb3YgMjAxOSAxNjo1NjozOCArMDAwMAorU3ViamVjdDogW1BBVENIIDMvM10gY2hhbm5lbDogRml4IGJ1ZmZlciBvdmVyZmxvdworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitQYXJ0aWFsIGZpeCBmb3IgQ1ZFLTIwMjAtNTIwOCwgc2VlCitodHRwczovL2dpdGh1Yi5jb20vaXBtaXRvb2wvaXBtaXRvb2wvc2VjdXJpdHkvYWR2aXNvcmllcy9HSFNBLWc2NTktOXF4dy1wN2NwCisKK1RoZSBgaXBtaV9nZXRfY2hhbm5lbF9jaXBoZXJfc3VpdGVzYCBmdW5jdGlvbiBkb2VzIG5vdCBwcm9wZXJseSBjaGVjawordGhlIGZpbmFsIHJlc3BvbnNl4oCZcyBgZGF0YV9sZW5gLCB3aGljaCBjYW4gbGVhZCB0byBzdGFjayBidWZmZXIgb3ZlcmZsb3cKK29uIHRoZSBmaW5hbCBjb3B5LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0W2h0dHBzOi8vZ2l0aHViLmNvbS9pcG1pdG9vbC9pcG1pdG9vbC9jb21taXQvOTQ1MmJlODcxODFhNmU4M2NmY2M3NjhiM2VkODMyMTc2M2RiNTBlNF0KK0NWRTogQ1ZFLTIwMjAtNTIwOAorCitbTWFrZSBzb21lIGNoYW5nZXMgdG8gYXBwbHkgaXRdCitTaWduZWQtb2ZmLWJ5OiBXZW5saW4gS2FuZyA8d2VubGluLmthbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIGluY2x1ZGUvaXBtaXRvb2wvaXBtaV9jaGFubmVsLmggfCAgMiArKworIGxpYi9pcG1pX2NoYW5uZWwuYyAgICAgICAgICAgICAgfCAxMCArKysrKysrKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9pcG1pdG9vbC9pcG1pX2NoYW5uZWwuaCBiL2luY2x1ZGUvaXBtaXRvb2wvaXBtaV9jaGFubmVsLmgKK2luZGV4IGIxMzhjMjYuLmQ3Y2NlNWUgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2lwbWl0b29sL2lwbWlfY2hhbm5lbC5oCisrKysgYi9pbmNsdWRlL2lwbWl0b29sL2lwbWlfY2hhbm5lbC5oCitAQCAtNzcsNiArNzcsOCBAQCBzdHJ1Y3QgY2hhbm5lbF9hY2Nlc3NfdCB7CisgCXVpbnQ4X3QgdXNlcl9sZXZlbF9hdXRoOworIH07CisgCisrI2RlZmluZSBNQVhfQ0lQSEVSX1NVSVRFX0RBVEFfTEVOIDB4MTAKKysKKyAvKgorICAqIFRoZSBHZXQgQXV0aGVudGljYXRpb24gQ2FwYWJpbGl0aWVzIHJlc3BvbnNlIHN0cnVjdHVyZQorICAqIEZyb20gdGFibGUgMjItMTUgb2YgdGhlIElQTUkgdjIuMCBzcGVjCitkaWZmIC0tZ2l0IGEvbGliL2lwbWlfY2hhbm5lbC5jIGIvbGliL2lwbWlfY2hhbm5lbC5jCitpbmRleCBmYWIyZTU0Li43NmVjZGNkIDEwMDY0NAorLS0tIGEvbGliL2lwbWlfY2hhbm5lbC5jCisrKysgYi9saWIvaXBtaV9jaGFubmVsLmMKK0BAIC0zNzgsNyArMzc4LDEwIEBAIGlwbWlfZ2V0X2NoYW5uZWxfY2lwaGVyX3N1aXRlcyhzdHJ1Y3QgaXBtaV9pbnRmICppbnRmLCBjb25zdCBjaGFyICpwYXlsb2FkX3R5cGUsCisgCQlscHJpbnRmKExPR19FUlIsICJVbmFibGUgdG8gR2V0IENoYW5uZWwgQ2lwaGVyIFN1aXRlcyIpOworIAkJcmV0dXJuIC0xOworIAl9CistCWlmIChyc3AtPmNjb2RlID4gMCkgeworKwlpZiAocnNwLT5jY29kZQorKwkgICAgfHwgcnNwLT5kYXRhX2xlbiA8IDEKKysJICAgIHx8IHJzcC0+ZGF0YV9sZW4gPiBzaXplb2YodWludDhfdCkgKyBNQVhfQ0lQSEVSX1NVSVRFX0RBVEFfTEVOKQorKwl7CisgCQlscHJpbnRmKExPR19FUlIsICJHZXQgQ2hhbm5lbCBDaXBoZXIgU3VpdGVzIGZhaWxlZDogJXMiLAorIAkJCXZhbDJzdHIocnNwLT5jY29kZSwgY29tcGxldGlvbl9jb2RlX3ZhbHMpKTsKKyAJCXJldHVybiAtMTsKK0BAIC00MTMsNyArNDE2LDEwIEBAIGlwbWlfZ2V0X2NoYW5uZWxfY2lwaGVyX3N1aXRlcyhzdHJ1Y3QgaXBtaV9pbnRmICppbnRmLCBjb25zdCBjaGFyICpwYXlsb2FkX3R5cGUsCisgCQkJbHByaW50ZihMT0dfRVJSLCAiVW5hYmxlIHRvIEdldCBDaGFubmVsIENpcGhlciBTdWl0ZXMiKTsKKyAJCQlyZXR1cm4gLTE7CisgCQl9CistCQlpZiAocnNwLT5jY29kZSA+IDApIHsKKysJCWlmIChyc3AtPmNjb2RlCisrCQkgICAgfHwgcnNwLT5kYXRhX2xlbiA8IDEKKysJCSAgICB8fCByc3AtPmRhdGFfbGVuID4gc2l6ZW9mKHVpbnQ4X3QpICsgTUFYX0NJUEhFUl9TVUlURV9EQVRBX0xFTikKKysJCXsKKyAJCQlscHJpbnRmKExPR19FUlIsICJHZXQgQ2hhbm5lbCBDaXBoZXIgU3VpdGVzIGZhaWxlZDogJXMiLAorIAkJCQkJdmFsMnN0cihyc3AtPmNjb2RlLCBjb21wbGV0aW9uX2NvZGVfdmFscykpOworIAkJCXJldHVybiAtMTsKKy0tIAorMi4xOC4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2wvMDAwNC1sYW5wLUZpeC1idWZmZXItb3ZlcmZsb3dzLWluLWdldF9sYW5fcGFyYW1fc2VsZWN0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdG9vbC9pcG1pdG9vbC8wMDA0LWxhbnAtRml4LWJ1ZmZlci1vdmVyZmxvd3MtaW4tZ2V0X2xhbl9wYXJhbV9zZWxlY3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjVjZTllOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2wvMDAwNC1sYW5wLUZpeC1idWZmZXItb3ZlcmZsb3dzLWluLWdldF9sYW5fcGFyYW1fc2VsZWN0LnBhdGNoCkBAIC0wLDAgKzEsOTQgQEAKK0Zyb20gZTZhYTYwNzZmNjVlNzE1NDRiZDY0NTBkMjBkOTQzZDdiYWFjY2I5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENocm9zdG9wZXIgRXJ0bCA8Y2hlcnRsQG1pY3Jvc29mdC5jb20+CitEYXRlOiBUaHUsIDI4IE5vdiAyMDE5IDE3OjA2OjM5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggNC81XSBsYW5wOiBGaXggYnVmZmVyIG92ZXJmbG93cyBpbiBnZXRfbGFuX3BhcmFtX3NlbGVjdAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitQYXJ0aWFsIGZpeCBmb3IgQ1ZFLTIwMjAtNTIwOCwgc2VlCitodHRwczovL2dpdGh1Yi5jb20vaXBtaXRvb2wvaXBtaXRvb2wvc2VjdXJpdHkvYWR2aXNvcmllcy9HSFNBLWc2NTktOXF4dy1wN2NwCisKK1RoZSBgZ2V0X2xhbl9wYXJhbV9zZWxlY3RgIGZ1bmN0aW9uIGlzIG1pc3NpbmcgYSB2YWxpZGF0aW9uIGNoZWNrIG9uIHRoZQorcmVzcG9uc2XigJlzIGBkYXRhX2xlbmAsIHdoaWNoIGl0IHRoZW4gcmV0dXJucyB0byBjYWxsZXIgZnVuY3Rpb25zLCB3aGVyZQorc3RhY2sgYnVmZmVyIG92ZXJmbG93IGNhbiBvY2N1ci4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydFtodHRwczovL2dpdGh1Yi5jb20vaXBtaXRvb2wvaXBtaXRvb2wvY29tbWl0L2Q0NTU3MmQ3MWU3MDg0MGUwZDRjNTBiZjQ4MjE4NDkyYjc5YzFhMTBdCitDVkU6IENWRS0yMDIwLTUyMDgKKworW01ha2Ugc29tZSBjaGFuZ2VzIHRvIGFwcGx5IGl0XQorU2lnbmVkLW9mZi1ieTogV2VubGluIEthbmcgPHdlbmxpbi5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWIvaXBtaV9sYW5wLmMgfCAxNCArKysrKysrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWIvaXBtaV9sYW5wLmMgYi9saWIvaXBtaV9sYW5wLmMKK2luZGV4IDA2MGU3NTMuLmRlZTIxZWUgMTAwNjQ0CistLS0gYS9saWIvaXBtaV9sYW5wLmMKKysrKyBiL2xpYi9pcG1pX2xhbnAuYworQEAgLTE5MTcsNyArMTkxNyw3IEBAIGlwbWlfbGFuX2FsZXJ0X3NldChzdHJ1Y3QgaXBtaV9pbnRmICogaW50ZiwgdWludDhfdCBjaGFuLCB1aW50OF90IGFsZXJ0LAorIAkJaWYgKHAgPT0gTlVMTCkgeworIAkJCXJldHVybiAoLTEpOworIAkJfQorLQkJbWVtY3B5KGRhdGEsIHAtPmRhdGEsIHAtPmRhdGFfbGVuKTsKKysJCW1lbWNweShkYXRhLCBwLT5kYXRhLCBfX21pbihwLT5kYXRhX2xlbiwgc2l6ZW9mKGRhdGEpKSk7CisgCQkvKiBzZXQgbmV3IGlwYWRkciAqLworIAkJbWVtY3B5KGRhdGErMywgdGVtcCwgNCk7CisgCQlwcmludGYoIlNldHRpbmcgTEFOIEFsZXJ0ICVkIElQIEFkZHJlc3MgdG8gJWQuJWQuJWQuJWRcbiIsIGFsZXJ0LAorQEAgLTE5MzIsNyArMTkzMiw3IEBAIGlwbWlfbGFuX2FsZXJ0X3NldChzdHJ1Y3QgaXBtaV9pbnRmICogaW50ZiwgdWludDhfdCBjaGFuLCB1aW50OF90IGFsZXJ0LAorIAkJaWYgKHAgPT0gTlVMTCkgeworIAkJCXJldHVybiAoLTEpOworIAkJfQorLQkJbWVtY3B5KGRhdGEsIHAtPmRhdGEsIHAtPmRhdGFfbGVuKTsKKysJCW1lbWNweShkYXRhLCBwLT5kYXRhLCBfX21pbihwLT5kYXRhX2xlbiwgc2l6ZW9mKGRhdGEpKSk7CisgCQkvKiBzZXQgbmV3IG1hY2FkZHIgKi8KKyAJCW1lbWNweShkYXRhKzcsIHRlbXAsIDYpOworIAkJcHJpbnRmKCJTZXR0aW5nIExBTiBBbGVydCAlZCBNQUMgQWRkcmVzcyB0byAiCitAQCAtMTk0Nyw3ICsxOTQ3LDcgQEAgaXBtaV9sYW5fYWxlcnRfc2V0KHN0cnVjdCBpcG1pX2ludGYgKiBpbnRmLCB1aW50OF90IGNoYW4sIHVpbnQ4X3QgYWxlcnQsCisgCQlpZiAocCA9PSBOVUxMKSB7CisgCQkJcmV0dXJuICgtMSk7CisgCQl9CistCQltZW1jcHkoZGF0YSwgcC0+ZGF0YSwgcC0+ZGF0YV9sZW4pOworKwkJbWVtY3B5KGRhdGEsIHAtPmRhdGEsIF9fbWluKHAtPmRhdGFfbGVuLCBzaXplb2YoZGF0YSkpKTsKKyAKKyAJCWlmIChzdHJuY2FzZWNtcChhcmd2WzFdLCAiZGVmIiwgMykgPT0gMCB8fAorIAkJICAgIHN0cm5jYXNlY21wKGFyZ3ZbMV0sICJkZWZhdWx0IiwgNykgPT0gMCkgeworQEAgLTE5NzMsNyArMTk3Myw3IEBAIGlwbWlfbGFuX2FsZXJ0X3NldChzdHJ1Y3QgaXBtaV9pbnRmICogaW50ZiwgdWludDhfdCBjaGFuLCB1aW50OF90IGFsZXJ0LAorIAkJaWYgKHAgPT0gTlVMTCkgeworIAkJCXJldHVybiAoLTEpOworIAkJfQorLQkJbWVtY3B5KGRhdGEsIHAtPmRhdGEsIHAtPmRhdGFfbGVuKTsKKysJCW1lbWNweShkYXRhLCBwLT5kYXRhLCBfX21pbihwLT5kYXRhX2xlbiwgc2l6ZW9mKGRhdGEpKSk7CisgCisgCQlpZiAoc3RybmNhc2VjbXAoYXJndlsxXSwgIm9uIiwgMikgPT0gMCB8fAorIAkJICAgIHN0cm5jYXNlY21wKGFyZ3ZbMV0sICJ5ZXMiLCAzKSA9PSAwKSB7CitAQCAtMTk5OCw3ICsxOTk4LDcgQEAgaXBtaV9sYW5fYWxlcnRfc2V0KHN0cnVjdCBpcG1pX2ludGYgKiBpbnRmLCB1aW50OF90IGNoYW4sIHVpbnQ4X3QgYWxlcnQsCisgCQlpZiAocCA9PSBOVUxMKSB7CisgCQkJcmV0dXJuICgtMSk7CisgCQl9CistCQltZW1jcHkoZGF0YSwgcC0+ZGF0YSwgcC0+ZGF0YV9sZW4pOworKwkJbWVtY3B5KGRhdGEsIHAtPmRhdGEsIF9fbWluKHAtPmRhdGFfbGVuLCBzaXplb2YoZGF0YSkpKTsKKyAKKyAJCWlmIChzdHJuY2FzZWNtcChhcmd2WzFdLCAicGV0IiwgMykgPT0gMCkgeworIAkJCXByaW50ZigiU2V0dGluZyBMQU4gQWxlcnQgJWQgZGVzdGluYXRpb24gdG8gUEVUIFRyYXBcbiIsIGFsZXJ0KTsKK0BAIC0yMDI2LDcgKzIwMjYsNyBAQCBpcG1pX2xhbl9hbGVydF9zZXQoc3RydWN0IGlwbWlfaW50ZiAqIGludGYsIHVpbnQ4X3QgY2hhbiwgdWludDhfdCBhbGVydCwKKyAJCWlmIChwID09IE5VTEwpIHsKKyAJCQlyZXR1cm4gKC0xKTsKKyAJCX0KKy0JCW1lbWNweShkYXRhLCBwLT5kYXRhLCBwLT5kYXRhX2xlbik7CisrCQltZW1jcHkoZGF0YSwgcC0+ZGF0YSwgX19taW4ocC0+ZGF0YV9sZW4sIHNpemVvZihkYXRhKSkpOworIAorIAkJaWYgKHN0cjJ1Y2hhcihhcmd2WzFdLCAmZGF0YVsyXSkgIT0gMCkgeworIAkJCWxwcmludGYoTE9HX0VSUiwgIkludmFsaWQgdGltZTogJXMiLCBhcmd2WzFdKTsKK0BAIC0yMDQyLDcgKzIwNDIsNyBAQCBpcG1pX2xhbl9hbGVydF9zZXQoc3RydWN0IGlwbWlfaW50ZiAqIGludGYsIHVpbnQ4X3QgY2hhbiwgdWludDhfdCBhbGVydCwKKyAJCWlmIChwID09IE5VTEwpIHsKKyAJCQlyZXR1cm4gKC0xKTsKKyAJCX0KKy0JCW1lbWNweShkYXRhLCBwLT5kYXRhLCBwLT5kYXRhX2xlbik7CisrCQltZW1jcHkoZGF0YSwgcC0+ZGF0YSwgX19taW4ocC0+ZGF0YV9sZW4sIHNpemVvZihkYXRhKSkpOworIAorIAkJaWYgKHN0cjJ1Y2hhcihhcmd2WzFdLCAmZGF0YVszXSkgIT0gMCkgeworIAkJCWxwcmludGYoTE9HX0VSUiwgIkludmFsaWQgcmV0cnk6ICVzIiwgYXJndlsxXSk7CistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2wvMDAwNS1mcnUtc2RyLUZpeC1pZF9zdHJpbmctYnVmZmVyLW92ZXJmbG93cy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2wvMDAwNS1mcnUtc2RyLUZpeC1pZF9zdHJpbmctYnVmZmVyLW92ZXJmbG93cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjhiOTI1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdG9vbC9pcG1pdG9vbC8wMDA1LWZydS1zZHItRml4LWlkX3N0cmluZy1idWZmZXItb3ZlcmZsb3dzLnBhdGNoCkBAIC0wLDAgKzEsMTQyIEBACitGcm9tIDI2ZTY0Y2E3OGFlODQ0YzVjZWVkZGU4OTUzMWUyOTI0ZDdkNDU5NGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHJvc3RvcGVyIEVydGwgPGNoZXJ0bEBtaWNyb3NvZnQuY29tPgorRGF0ZTogVGh1LCAyOCBOb3YgMjAxOSAxNzoxMzo0NSArMDAwMAorU3ViamVjdDogW1BBVENIIDUvNV0gZnJ1LCBzZHI6IEZpeCBpZF9zdHJpbmcgYnVmZmVyIG92ZXJmbG93cworCitGaW5hbCBwYXJ0IG9mIHRoZSBmaXhlcyBmb3IgQ1ZFLTIwMjAtNTIwOCwgc2VlCitodHRwczovL2dpdGh1Yi5jb20vaXBtaXRvb2wvaXBtaXRvb2wvc2VjdXJpdHkvYWR2aXNvcmllcy9HSFNBLWc2NTktOXF4dy1wN2NwCisKKzkgdmFyaWFudHMgb2Ygc3RhY2sgYnVmZmVyIG92ZXJmbG93IHdoZW4gcGFyc2luZyBgaWRfc3RyaW5nYCBmaWVsZCBvZgorU0RSIHJlY29yZHMgcmV0dXJuZWQgZnJvbSBgQ01EX0dFVF9TRFJgIGNvbW1hbmQuCisKK1NEUiByZWNvcmQgc3RydWN0cyBoYXZlIGFuIGBpZF9jb2RlYCBmaWVsZCwgYW5kIGFuIGBpZF9zdHJpbmdgIGBjaGFyYAorYXJyYXkuCisKK1RoZSBsZW5ndGggb2YgYGlkX3N0cmluZ2AgaXMgY2FsY3VsYXRlZCBhcyBgKGlkX2NvZGUgJiAweDFmKSArIDFgLAord2hpY2ggY2FuIGJlIGxhcmdlciB0aGFuIGV4cGVjdGVkIDE2IGNoYXJhY3RlcnMgKGlmIGBpZF9jb2RlID0gMHhmZmAsCit0aGVuIGxlbmd0aCB3aWxsIGJlIGAoMHhmZiAmIDB4MWYpICsgMSA9IDMyYCkuCisKK0luIG51bWVyb3VzIHBsYWNlcywgdGhpcyBjYW4gY2F1c2Ugc3RhY2sgYnVmZmVyIG92ZXJmbG93IHdoZW4gY29weWluZworaW50byBmaXhlZCBidWZmZXIgb2Ygc2l6ZSBgMTdgIGJ5dGVzIGZyb20gdGhpcyBjYWxjdWxhdGVkIGxlbmd0aC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydFtodHRwczovL2dpdGh1Yi5jb20vaXBtaXRvb2wvaXBtaXRvb2wvY29tbWl0LzdjY2VhMjgzZGQ2MmEwNWEzMjBjMTkyMWUzZDhkNzFhODc3NzI2MzddCitDVkU6IENWRS0yMDIwLTUyMDgKKworU2lnbmVkLW9mZi1ieTogV2VubGluIEthbmcgPHdlbmxpbi5rYW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWIvaXBtaV9mcnUuYyB8ICAyICstCisgbGliL2lwbWlfc2RyLmMgfCA0MCArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAxNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYi9pcG1pX2ZydS5jIGIvbGliL2lwbWlfZnJ1LmMKK2luZGV4IGI3MWVhMjMuLjFkZWNlYTIgMTAwNjQ0CistLS0gYS9saWIvaXBtaV9mcnUuYworKysrIGIvbGliL2lwbWlfZnJ1LmMKK0BAIC0zMDM4LDcgKzMwMzgsNyBAQCBpcG1pX2ZydV9wcmludChzdHJ1Y3QgaXBtaV9pbnRmICogaW50Ziwgc3RydWN0IHNkcl9yZWNvcmRfZnJ1X2xvY2F0b3IgKiBmcnUpCisgCQlyZXR1cm4gMDsKKyAKKyAJbWVtc2V0KGRlc2MsIDAsIHNpemVvZihkZXNjKSk7CistCW1lbWNweShkZXNjLCBmcnUtPmlkX3N0cmluZywgZnJ1LT5pZF9jb2RlICYgMHgwMWYpOworKwltZW1jcHkoZGVzYywgZnJ1LT5pZF9zdHJpbmcsIF9fbWluKGZydS0+aWRfY29kZSAmIDB4MDFmLCBzaXplb2YoZGVzYykpKTsKKyAJZGVzY1tmcnUtPmlkX2NvZGUgJiAweDAxZl0gPSAwOworIAlwcmludGYoIkZSVSBEZXZpY2UgRGVzY3JpcHRpb24gOiAlcyAoSUQgJWQpXG4iLCBkZXNjLCBmcnUtPmRldmljZV9pZCk7CisgCitkaWZmIC0tZ2l0IGEvbGliL2lwbWlfc2RyLmMgYi9saWIvaXBtaV9zZHIuYworaW5kZXggZmE3YjA4Mi4uMTc1YTg2ZiAxMDA2NDQKKy0tLSBhL2xpYi9pcG1pX3Nkci5jCisrKysgYi9saWIvaXBtaV9zZHIuYworQEAgLTIxMTMsNyArMjExMyw3IEBAIGlwbWlfc2RyX3ByaW50X3NlbnNvcl9ldmVudG9ubHkoc3RydWN0IGlwbWlfaW50ZiAqaW50ZiwKKyAJCXJldHVybiAtMTsKKyAKKyAJbWVtc2V0KGRlc2MsIDAsIHNpemVvZiAoZGVzYykpOworLQlzbnByaW50ZihkZXNjLCAoc2Vuc29yLT5pZF9jb2RlICYgMHgxZikgKyAxLCAiJXMiLCBzZW5zb3ItPmlkX3N0cmluZyk7CisrCXNucHJpbnRmKGRlc2MsIHNpemVvZihkZXNjKSwgIiUuKnMiLCAoc2Vuc29yLT5pZF9jb2RlICYgMHgxZikgKyAxLCBzZW5zb3ItPmlkX3N0cmluZyk7CisgCisgCWlmICh2ZXJib3NlKSB7CisgCQlwcmludGYoIlNlbnNvciBJRCAgICAgICAgICAgICAgOiAlcyAoMHgleClcbiIsCitAQCAtMjE2NCw3ICsyMTY0LDcgQEAgaXBtaV9zZHJfcHJpbnRfc2Vuc29yX21jX2xvY2F0b3Ioc3RydWN0IGlwbWlfaW50ZiAqaW50ZiwKKyAJCXJldHVybiAtMTsKKyAKKyAJbWVtc2V0KGRlc2MsIDAsIHNpemVvZiAoZGVzYykpOworLQlzbnByaW50ZihkZXNjLCAobWMtPmlkX2NvZGUgJiAweDFmKSArIDEsICIlcyIsIG1jLT5pZF9zdHJpbmcpOworKwlzbnByaW50ZihkZXNjLCBzaXplb2YoZGVzYyksICIlLipzIiwgKG1jLT5pZF9jb2RlICYgMHgxZikgKyAxLCBtYy0+aWRfc3RyaW5nKTsKKyAKKyAJaWYgKHZlcmJvc2UgPT0gMCkgeworIAkJaWYgKGNzdl9vdXRwdXQpCitAQCAtMjI1Nyw3ICsyMjU3LDcgQEAgaXBtaV9zZHJfcHJpbnRfc2Vuc29yX2dlbmVyaWNfbG9jYXRvcihzdHJ1Y3QgaXBtaV9pbnRmICppbnRmLAorIAljaGFyIGRlc2NbMTddOworIAorIAltZW1zZXQoZGVzYywgMCwgc2l6ZW9mIChkZXNjKSk7CistCXNucHJpbnRmKGRlc2MsIChkZXYtPmlkX2NvZGUgJiAweDFmKSArIDEsICIlcyIsIGRldi0+aWRfc3RyaW5nKTsKKysJc25wcmludGYoZGVzYywgc2l6ZW9mKGRlc2MpLCAiJS4qcyIsIChkZXYtPmlkX2NvZGUgJiAweDFmKSArIDEsIGRldi0+aWRfc3RyaW5nKTsKKyAKKyAJaWYgKCF2ZXJib3NlKSB7CisgCQlpZiAoY3N2X291dHB1dCkKK0BAIC0yMzE0LDcgKzIzMTQsNyBAQCBpcG1pX3Nkcl9wcmludF9zZW5zb3JfZnJ1X2xvY2F0b3Ioc3RydWN0IGlwbWlfaW50ZiAqaW50ZiwKKyAJY2hhciBkZXNjWzE3XTsKKyAKKyAJbWVtc2V0KGRlc2MsIDAsIHNpemVvZiAoZGVzYykpOworLQlzbnByaW50ZihkZXNjLCAoZnJ1LT5pZF9jb2RlICYgMHgxZikgKyAxLCAiJXMiLCBmcnUtPmlkX3N0cmluZyk7CisrCXNucHJpbnRmKGRlc2MsIHNpemVvZihkZXNjKSwgIiUuKnMiLCAoZnJ1LT5pZF9jb2RlICYgMHgxZikgKyAxLCBmcnUtPmlkX3N0cmluZyk7CisgCisgCWlmICghdmVyYm9zZSkgeworIAkJaWYgKGNzdl9vdXRwdXQpCitAQCAtMjUxOCwzNSArMjUxOCw0MyBAQCBpcG1pX3Nkcl9wcmludF9uYW1lX2Zyb21fcmF3ZW50cnkoc3RydWN0IGlwbWlfaW50ZiAqaW50Zix1aW50MTZfdCBpZCwKKyAKKyAgICBpbnQgcmMgPTA7CisgICAgY2hhciBkZXNjWzE3XTsKKysgICBjb25zdCBjaGFyICppZF9zdHJpbmc7CisrICAgdWludDhfdCBpZF9jb2RlOworICAgIG1lbXNldChkZXNjLCAnICcsIHNpemVvZiAoZGVzYykpOworIAorICAgIHN3aXRjaCAoIHR5cGUpIHsKKyAgICAgICBjYXNlIFNEUl9SRUNPUkRfVFlQRV9GVUxMX1NFTlNPUjoKKyAgICAgICByZWNvcmQuZnVsbCA9IChzdHJ1Y3Qgc2RyX3JlY29yZF9mdWxsX3NlbnNvciAqKSByYXc7CistICAgICAgc25wcmludGYoZGVzYywgKHJlY29yZC5mdWxsLT5pZF9jb2RlICYgMHgxZikgKzEsICIlcyIsCistICAgICAgICAgICAgICAgKGNvbnN0IGNoYXIgKilyZWNvcmQuZnVsbC0+aWRfc3RyaW5nKTsKKysgICAgICBpZF9jb2RlID0gcmVjb3JkLmZ1bGwtPmlkX2NvZGU7CisrICAgICAgaWRfc3RyaW5nID0gcmVjb3JkLmZ1bGwtPmlkX3N0cmluZzsKKyAgICAgICBicmVhazsKKysKKyAgICAgICBjYXNlIFNEUl9SRUNPUkRfVFlQRV9DT01QQUNUX1NFTlNPUjoKKyAgICAgICByZWNvcmQuY29tcGFjdCA9IChzdHJ1Y3Qgc2RyX3JlY29yZF9jb21wYWN0X3NlbnNvciAqKSByYXcJOworLSAgICAgIHNucHJpbnRmKGRlc2MsIChyZWNvcmQuY29tcGFjdC0+aWRfY29kZSAmIDB4MWYpICArMSwgIiVzIiwKKy0gICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKXJlY29yZC5jb21wYWN0LT5pZF9zdHJpbmcpOworKyAgICAgIGlkX2NvZGUgPSByZWNvcmQuY29tcGFjdC0+aWRfY29kZTsKKysgICAgICBpZF9zdHJpbmcgPSByZWNvcmQuY29tcGFjdC0+aWRfc3RyaW5nOworICAgICAgIGJyZWFrOworKworICAgICAgIGNhc2UgU0RSX1JFQ09SRF9UWVBFX0VWRU5UT05MWV9TRU5TT1I6CisgICAgICAgcmVjb3JkLmV2ZW50b25seSAgPSAoc3RydWN0IHNkcl9yZWNvcmRfZXZlbnRvbmx5X3NlbnNvciAqKSByYXcgOworLSAgICAgIHNucHJpbnRmKGRlc2MsIChyZWNvcmQuZXZlbnRvbmx5LT5pZF9jb2RlICYgMHgxZikgICsxLCAiJXMiLAorLSAgICAgICAgICAgICAgIChjb25zdCBjaGFyICopcmVjb3JkLmV2ZW50b25seS0+aWRfc3RyaW5nKTsKKy0gICAgICBicmVhazsgICAgICAgICAgICAKKysgICAgICBpZF9jb2RlID0gcmVjb3JkLmV2ZW50b25seS0+aWRfY29kZTsKKysgICAgICBpZF9zdHJpbmcgPSByZWNvcmQuZXZlbnRvbmx5LT5pZF9zdHJpbmc7CisrICAgICAgYnJlYWs7CisrCisgICAgICAgY2FzZSBTRFJfUkVDT1JEX1RZUEVfTUNfREVWSUNFX0xPQ0FUT1I6CisgICAgICAgcmVjb3JkLm1jbG9jICA9IChzdHJ1Y3Qgc2RyX3JlY29yZF9tY19sb2NhdG9yICopIHJhdyA7CistICAgICAgc25wcmludGYoZGVzYywgKHJlY29yZC5tY2xvYy0+aWRfY29kZSAmIDB4MWYpICArMSwgIiVzIiwKKy0gICAgICAgICAgICAgICAoY29uc3QgY2hhciAqKXJlY29yZC5tY2xvYy0+aWRfc3RyaW5nKTsJCQorKyAgICAgIGlkX2NvZGUgPSByZWNvcmQubWNsb2MtPmlkX2NvZGU7CisrICAgICAgaWRfc3RyaW5nID0gcmVjb3JkLm1jbG9jLT5pZF9zdHJpbmc7CisgICAgICAgYnJlYWs7CisrCisgICAgICAgZGVmYXVsdDoKKyAgICAgICByYyA9IC0xOworLSAgICAgIGJyZWFrOworLSAgIH0gICAKKysgICB9CisrICAgaWYgKCFyYykgeworKyAgICAgICBzbnByaW50ZihkZXNjLCBzaXplb2YoZGVzYyksICIlLipzIiwgKGlkX2NvZGUgJiAweDFmKSArIDEsIGlkX3N0cmluZyk7CisrICAgfQorIAorLSAgICAgIGxwcmludGYoTE9HX0lORk8sICJJRDogMHglMDR4ICwgTkFNRTogJS0xNnMiLCBpZCwgZGVzYyk7CisrICAgbHByaW50ZihMT0dfSU5GTywgIklEOiAweCUwNHggLCBOQU1FOiAlLTE2cyIsIGlkLCBkZXNjKTsKKyAgICByZXR1cm4gcmM7CisgfQorIAorLS0gCisxLjkuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2lwbWl0b29sL2lwbWl0b29sXzEuOC4xOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2xfMS44LjE4LmJiCmluZGV4IGI3ZjFhYTkuLjNkZTlhOTIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2xfMS44LjE4LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXRvb2wvaXBtaXRvb2xfMS44LjE4LmJiCkBAIC0yNCw2ICsyNCwxMiBAQAogCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9pcG1pdG9vbC9pcG1pdG9vbC0ke1BWfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtTWlncmF0ZS10by1vcGVuc3NsLTEuMS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZydS1GaXgtYnVmZmVyLW92ZXJmbG93LXZ1bG5lcmFiaWxpdGllcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZydS1GaXgtYnVmZmVyLW92ZXJmbG93LWluLWlwbWlfc3BkX3ByaW50X2ZydS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXNlc3Npb24tRml4LWJ1ZmZlci1vdmVyZmxvdy1pbi1pcG1pX2dldF9zZXNzaW9uX2luZm8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1jaGFubmVsLUZpeC1idWZmZXItb3ZlcmZsb3cucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1sYW5wLUZpeC1idWZmZXItb3ZlcmZsb3dzLWluLWdldF9sYW5fcGFyYW1fc2VsZWN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtZnJ1LXNkci1GaXgtaWRfc3RyaW5nLWJ1ZmZlci1vdmVyZmxvd3MucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiYmFiN2VhMTA0YzdiODU1MjljM2VmNjVjNTQ0MjdhYTMiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGMxYmEzYjE1NTVlZGVmYjdjMzJhZThjZDZhM2UwNDMyMjA1NmJjMDg3OTE4ZjA3MTg5ZWVlZGZjOGI4MWUwMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXV0aWwvaXBtaXV0aWwvMDAwMS1QcmV2ZW50LWFjY2Vzcy10aW1lcy1mcm9tLWNoYW5naW5nLXJlc3VsdGluZy1nemlwLW1kLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdXRpbC9pcG1pdXRpbC8wMDAxLVByZXZlbnQtYWNjZXNzLXRpbWVzLWZyb20tY2hhbmdpbmctcmVzdWx0aW5nLWd6aXAtbWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzhjMDVlZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXV0aWwvaXBtaXV0aWwvMDAwMS1QcmV2ZW50LWFjY2Vzcy10aW1lcy1mcm9tLWNoYW5naW5nLXJlc3VsdGluZy1nemlwLW1kLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Zyb20gZGE2NjhlNWJmMWE3MjE3OTczNjFhYjg2NmQwOTkxM2VlOGUxNTdjNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorRGF0ZTogU2F0LCAyMiBGZWIgMjAyMCAwNDozNzowNCArMDAwMAorU3ViamVjdDogW1BBVENIXSBQcmV2ZW50IGFjY2VzcyB0aW1lcyBmcm9tIGNoYW5naW5nIHJlc3VsdGluZyBnemlwIG1kNXN1bQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK2h0dHBzOi8vZ2l0aHViLmNvbS9pcG1pdG9vbC9pcG1pdG9vbC9wdWxsLzE4NgorLS0tCisgZG9jL01ha2VmaWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZG9jL01ha2VmaWxlLmFtIGIvZG9jL01ha2VmaWxlLmFtCitpbmRleCBiNzkyNzYyLi4yYzUyY2U2IDEwMDY0NAorLS0tIGEvZG9jL01ha2VmaWxlLmFtCisrKysgYi9kb2MvTWFrZWZpbGUuYW0KK0BAIC01OSw1ICs1OSw1IEBAIGluc3RhbGw6CisgCSR7SU5TVEFMTF9EQVRBX1NIfSBpdXNlci44IAkgJHttYW50b30KKyAJJHtJTlNUQUxMX0RBVEFfU0h9IGlzZWx0aW1lLjggCSAke21hbnRvfQorIAkke0lOU1RBTExfREFUQV9TSH0gYm1jbGFucGV0Lm1pYiAke2RhdGF0b30KKy0JY2QgJHttYW50b307IGd6aXAgLWYgKi44CisrCWNkICR7bWFudG99OyBnemlwIC1uZiAqLjgKKyAJCistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2lwbWl1dGlsL2lwbWl1dGlsXzMuMS41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9pcG1pdXRpbC9pcG1pdXRpbF8zLjEuNS5iYgppbmRleCAzZTI2MzQwLi5kMGYzNjg4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2lwbWl1dGlsL2lwbWl1dGlsXzMuMS41LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvaXBtaXV0aWwvaXBtaXV0aWxfMy4xLjUuYmIKQEAgLTIxLDYgKzIxLDcgQEAKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vaXBtaXV0aWwvaXBtaXV0aWwtJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL2ZpeF9zeXN0ZW1kX3BhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1QcmV2ZW50LWFjY2Vzcy10aW1lcy1mcm9tLWNoYW5naW5nLXJlc3VsdGluZy1nemlwLW1kLnBhdGNoIFwKICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMjkyZDZkZjI1Y2FkNjc4YmIyN2U1YzhjZGM2NzQ4ZjkiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNThjY2RiZDU3NTVkN2RkNzI0Nzg3NTY3MTVhZjA5ZTljNzMzMzBkZmFkMmI5MWRiZjAzZDJhYzUwNGIzMDFhMyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva2VybmVsLXNlbGZ0ZXN0L2tlcm5lbC1zZWxmdGVzdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva2VybmVsLXNlbGZ0ZXN0L2tlcm5lbC1zZWxmdGVzdC5iYgppbmRleCAwMmM1NmJlLi4zNjg3YzI2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2tlcm5lbC1zZWxmdGVzdC9rZXJuZWwtc2VsZnRlc3QuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rZXJuZWwtc2VsZnRlc3Qva2VybmVsLXNlbGZ0ZXN0LmJiCkBAIC0xOCwxMSArMTgsMTYgQEAKICMgd2Ugd2lsbCBhcHBlbmQgb3RoZXIga2VybmVsIHNlbGZ0ZXN0IGluIHRoZSBmdXR1cmUKICMgYnBmIHdhcyBhZGRlZCBpbiA0LjEwIHdpdGg6IGh0dHBzOi8vZ2l0aHViLmNvbS90b3J2YWxkcy9saW51eC9jb21taXQvNWFhNWJkMTRjNWY4NjYwYzY0Y2VlZGYxNGE1NDk3ODFiZTQ3ZTUzZAogIyBpZiB5b3UgaGF2ZSBvbGRlciBrZXJuZWwgdGhhbiB0aGF0IHlvdSBuZWVkIHRvIHJlbW92ZSBpdCBmcm9tIFBBQ0tBR0VDT05GSUcKLVBBQ0tBR0VDT05GSUcgPz89ICJicGYgdm0iCitQQUNLQUdFQ09ORklHID8/PSAiYnBmIGZpcm13YXJlIHZtIgogUEFDS0FHRUNPTkZJR19yZW1vdmVfeDg2ID0gImJwZiIKIFBBQ0tBR0VDT05GSUdfcmVtb3ZlX2FybSA9ICJicGYiCisjIGhvc3QgcHRyYWNlLmggaXMgdXNlZCB0byBjb21waWxlIEJQRiB0YXJnZXQgYnV0IG1pcHMgcHRyYWNlLmggaXMgbmVlZGVkCisjIHByb2dzL2xvb3AxLmM6MjE6OTogZXJyb3I6IGluY29tcGxldGUgZGVmaW5pdGlvbiBvZiB0eXBlICdzdHJ1Y3QgdXNlcl9wdF9yZWdzJworIyBtID0gUFRfUkVHU19SQyhjdHgpOworUEFDS0FHRUNPTkZJR19yZW1vdmVfcWVtdW1pcHMgPSAiYnBmIgogCiBQQUNLQUdFQ09ORklHW2JwZl0gPSAiLCxlbGZ1dGlscyBsaWJjYXAgbGliY2FwLW5nIHJzeW5jLW5hdGl2ZSwiCitQQUNLQUdFQ09ORklHW2Zpcm13YXJlXSA9ICIsLGxpYmNhcCwgYmFzaCIKIFBBQ0tBR0VDT05GSUdbdm1dID0gIiwsbGliY2FwLGxpYmdjYyBiYXNoIgogCiBkb19wYXRjaFtkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fc2hhcmVkX3dvcmtkaXIiCkBAIC0zMiw3ICszNyw3IEBACiBTID0gIiR7V09SS0RJUn0vJHtCUH0iCiAKIFRFU1RfTElTVCA9ICJcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2JwZiB2bScsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2JwZiBmaXJtd2FyZSB2bScsIGQpfSBcCiAgICAgcnRjIFwKICIKIApAQCAtNDAsNyArNDUsNyBAQAogICAgIENST1NTX0NPTVBJTEU9JHtUQVJHRVRfUFJFRklYfSBcCiAgICAgQVJDSD0ke0FSQ0h9IFwKICAgICBDQz0iJHtDQ30iIFwKLSAgICBDTEFORz0iY2xhbmcgLWZuby1zdGFjay1wcm90ZWN0b3IiIFwKKyAgICBDTEFORz0iY2xhbmcgLWZuby1zdGFjay1wcm90ZWN0b3IgLXRhcmdldCAke1RBUkdFVF9BUkNIfSAke1RPT0xDSEFJTl9PUFRJT05TfSIgXAogICAgIEFSPSIke0FSfSIgXAogICAgIExEPSIke0xEfSIgXAogICAgIERFU1RESVI9IiR7RH0iIFwKQEAgLTU1LDEwICs2MCwxMyBAQAogIgogCiBkb19jb21waWxlKCkgeworICAgIGlmIFsgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYnBmJywgJ1RydWUnLCAnRmFsc2UnLCBkKX0gPSAnVHJ1ZScgXTsgdGhlbgogICAgIGlmIFsgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RFUEVORFMnLCAnY2xhbmctbmF0aXZlJywgJ1RydWUnLCAnRmFsc2UnLCBkKX0gPSAnRmFsc2UnIF07IHRoZW4KICAgICAgICAgYmJ3YXJuICJjbGFuZyA+PSA2LjAgd2l0aCBicGYgc3VwcG9ydCBpcyBuZWVkZWQgd2l0aCBrZXJuZWwgNC4xOCsgc28KIGVpdGhlciBpbnN0YWxsIGl0IGFuZCBhZGQgaXQgdG8gSE9TVFRPT0xTLCBvciBhZGQgY2xhbmctbmF0aXZlIGZyb20gbWV0YS1jbGFuZyB0byBkZXBlbmRlbmN5IgogICAgIGZpCisgICAgZmkKKwogICAgIGZvciBpIGluICR7VEVTVF9MSVNUfQogICAgIGRvCiAgICAgICAgIG9lX3J1bm1ha2UgLUMgJHtTfS90b29scy90ZXN0aW5nL3NlbGZ0ZXN0cy8ke2l9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2gvMDAwMi1rcGF0Y2gtYnVpbGQtYWxsb3ctb3ZlcnJpZGluZy1vZi1kaXN0cm8tbmFtZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaC8wMDAyLWtwYXRjaC1idWlsZC1hbGxvdy1vdmVycmlkaW5nLW9mLWRpc3Ryby1uYW1lLnBhdGNoCmluZGV4IDYwM2ExNDcuLjBjYzM2ODQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaC8wMDAyLWtwYXRjaC1idWlsZC1hbGxvdy1vdmVycmlkaW5nLW9mLWRpc3Ryby1uYW1lLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaC8wMDAyLWtwYXRjaC1idWlsZC1hbGxvdy1vdmVycmlkaW5nLW9mLWRpc3Ryby1uYW1lLnBhdGNoCkBAIC00OCwxMCArNDgsMTAgQEAKICAJLS1za2lwLWNsZWFudXApCiAgCQllY2hvICJTa2lwcGluZyBjbGVhbnVwIgogIAkJU0tJUENMRUFOVVA9MQotQEAgLTU3MSw3ICs1NzYsNyBAQCBmaQorQEAgLTYxMyw3ICs2MTMsNyBAQCBmaQogICMgRG9uJ3QgY2hlY2sgZXh0ZXJuYWwgZmlsZS4KLSAjIHNoZWxsY2hlY2sgZGlzYWJsZT1TQzEwOTEKLSBzb3VyY2UgL2V0Yy9vcy1yZWxlYXNlCisgIyBzaGVsbGNoZWNrIGRpc2FibGU9U0MxMDkwCisgW1sgLWYgIiRSRUxFQVNFX0ZJTEUiIF1dICYmIHNvdXJjZSAiJFJFTEVBU0VfRklMRSIKIC1ESVNUUk89IiRJRCIKICtESVNUUk89IiR7RElTVFJPOi0ke0lEfX0iCiAgaWYgW1sgIiRESVNUUk8iID0gZmVkb3JhIF1dIHx8IFtbICIkRElTVFJPIiA9IHJoZWwgXV0gfHwgW1sgIiRESVNUUk8iID0gb2wgXV0gfHwgW1sgIiRESVNUUk8iID0gY2VudG9zIF1dOyB0aGVuCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2hfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9rcGF0Y2gva3BhdGNoX2dpdC5iYgppbmRleCA2MzI2YTI1Li5iYTM5ODNlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2twYXRjaC9rcGF0Y2hfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwva3BhdGNoL2twYXRjaF9naXQuYmIKQEAgLTIsOSArMiw5IEBACiAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgogCi1TUkNSRVYgPSAiMmEyOWJjN2RlYTlhN2RhMTI3MDVjN2I1MDMxNWVlZTFhY2RkOTE1NiIKK1NSQ1JFViA9ICIwYzNjMjE5MzA4OTVmNjU4MmE1YzlkOWQ3OTdmN2UxMWZmNDFmZmIyIgogCi1QViA9ICIwLjguMCIKK1BWID0gIjAuOS4xIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL2xpYnBmbS9saWJwZm00XzQuMTAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbGlicGZtL2xpYnBmbTRfNC4xMC4xLmJiCmluZGV4IDliNDNiNGEuLmZmNTZkNDggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbGlicGZtL2xpYnBmbTRfNC4xMC4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbGlicGZtL2xpYnBmbTRfNC4xMC4xLmJiCkBAIC0yMyw2ICsyMyw3IEBACiBFWFRSQV9PRU1BS0UgPSAiREVTVERJUj1cIiR7RH1cIiBQUkVGSVg9XCIke3ByZWZpeH1cIiBMSUJESVI9XCIke2xpYmRpcn1cIiBMRENPTkZJRz1cInRydWVcIiIKIEVYVFJBX09FTUFLRV9hcHBlbmRfcG93ZXJwYyA9ICIgQVJDSD1cInBvd2VycGNcIiIKIEVYVFJBX09FTUFLRV9hcHBlbmRfcG93ZXJwYzY0ID0gIiBBUkNIPVwicG93ZXJwY1wiIEJJVE1PREU9XCI2NFwiIgorRVhUUkFfT0VNQUtFX2FwcGVuZF9wb3dlcnBjNjRsZSA9ICIgQVJDSD1cInBvd2VycGNcIiBCSVRNT0RFPVwiNjRcIiIKIAogUyA9ICIke1dPUktESVJ9L2xpYnBmbS0ke1BWfSIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlLzAwMDEtbWFrZWR1bXBmaWxlLXJlcGxhY2UtaGFyZGNvZGUtQ0ZMQUdTLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlLzAwMDEtbWFrZWR1bXBmaWxlLXJlcGxhY2UtaGFyZGNvZGUtQ0ZMQUdTLnBhdGNoCmluZGV4IGMwZjgyZjMuLmZmMDkzYTcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZS8wMDAxLW1ha2VkdW1wZmlsZS1yZXBsYWNlLWhhcmRjb2RlLUNGTEFHUy5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21ha2VkdW1wZmlsZS9tYWtlZHVtcGZpbGUvMDAwMS1tYWtlZHVtcGZpbGUtcmVwbGFjZS1oYXJkY29kZS1DRkxBR1MucGF0Y2gKQEAgLTgzLDcgKzgzLDcgQEAKICBPQkpfUEFSVD0kKHBhdHN1YnN0ICUuYywlLm8sJChTUkNfUEFSVCkpCiBAQCAtNTIsMTcgKzUzLDE3IEBAIE9CSl9BUkNIPSQocGF0c3Vic3QgJS5jLCUubywkKFNSQ19BUkNIKSkKICAKLSBMSUJTID0gLWxkdyAtbGJ6MiAtbGVibCAtbGRsIC1sZWxmIC1segorIExJQlMgPSAtbGR3IC1sYnoyIC1sZGwgLWxlbGYgLWx6CiAgaWZuZXEgKCQoTElOS1RZUEUpLCBkeW5hbWljKQogLUxJQlMgOj0gLXN0YXRpYyAkKExJQlMpCiArTElCUyA6PSAkKExJQlMpCkBAIC0xMDIsNyArMTAyLDcgQEAKICBlbmRpZgogIAogIExJQlMgOj0gLWxwdGhyZWFkICQoTElCUykKLUBAIC04MiwxNCArODMsMTQgQEAgTElCUyA6PSAkKExJQlMpICQoY2FsbCB0cnktcnVuLFwKK0BAIC04NywxNCArODgsMTQgQEAgTElCUyA6PSAkKExJQlMpICQoY2FsbCB0cnktcnVuLFwKICBhbGw6IG1ha2VkdW1wZmlsZQogIAogICQoT0JKX1BBUlQpOiAkKFNSQ19QQVJUKQpAQCAtMTE5LDcgKzExOSw3IEBACiAgCWVjaG8gLlRIIE1BS0VEVU1QRklMRSA4IFwiJChEQVRFKVwiIFwibWFrZWR1bXBmaWxlIHYkKFZFUlNJT04pXCIgXCJMaW51eCBTeXN0ZW0gQWRtaW5pc3RyYXRvclwncyBNYW51YWxcIiA+IHRlbXAuOAogIAlncmVwIC12ICJeLlRIIE1BS0VEVU1QRklMRSA4IiAkKFZQQVRIKW1ha2VkdW1wZmlsZS44ID4+IHRlbXAuOAogIAltdiB0ZW1wLjggbWFrZWR1bXBmaWxlLjgKLUBAIC0xMDAsNyArMTAxLDcgQEAgbWFrZWR1bXBmaWxlOiAkKFNSQ19CQVNFKSAkKE9CSl9QQVJUKSAkKE9CSl9BUkNIKQorQEAgLTEwNSw3ICsxMDYsNyBAQCBtYWtlZHVtcGZpbGU6ICQoU1JDX0JBU0UpICQoT0JKX1BBUlQpICQoT0JKX0FSQ0gpCiAgCWd6aXAgLWMgLi9tYWtlZHVtcGZpbGUuY29uZi41ID4gLi9tYWtlZHVtcGZpbGUuY29uZi41Lmd6CiAgCiAgZXBwaWNfbWFrZWR1bXBmaWxlLnNvOiBleHRlbnNpb25fZXBwaWMuYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlLzAwMDMtYnVpbGQtRGVsZXRlLWxpYmVibC1mcm9tLXJlcXVpcmVkLWxpYnJhcmllcy1kdXJpbmctbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZS8wMDAzLWJ1aWxkLURlbGV0ZS1saWJlYmwtZnJvbS1yZXF1aXJlZC1saWJyYXJpZXMtZHVyaW5nLWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwOTU2NDMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlLzAwMDMtYnVpbGQtRGVsZXRlLWxpYmVibC1mcm9tLXJlcXVpcmVkLWxpYnJhcmllcy1kdXJpbmctbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gNDYwODUxYzE1ZTgwN2QxYTI1MTVkZmI5ODU0MjNmOGE2NjI0ZjRhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDggSmFuIDIwMjAgMTk6MTQ6MTkgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAzLzNdIGJ1aWxkOiBEZWxldGUgbGliZWJsIGZyb20gcmVxdWlyZWQgbGlicmFyaWVzIGR1cmluZyBsaW5rCi0KLVRoaXMgaXMgYSBzdGF0aWMgbGlicmFyeSBmcm9tIGVsZnV0aWxzLCB3aGljaCBpcyBub3QgbWFkZSBhdmFpbGFibGUgd2hlbgotc3RhdGljIGFyY2hpdmVzIGFyZSBkaXNhYmxlZCwgdGhpcyBjYW4gcmVzdWx0IGluIGxpbmsgZmFpbHVyZXMgZS5nLgotCi1hYXJjaDY0LXlvZS1saW51eC1tdXNsLzkuMi4wL2xkOiBjYW5ub3QgZmluZCAtbGVibAotY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCi1NYWtlZmlsZTo5MzogcmVjaXBlIGZvciB0YXJnZXQgJ21ha2VkdW1wZmlsZScgZmFpbGVkCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggNWRjZTU4OS4uYzNhNDA1NCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTUxLDcgKzUxLDcgQEAgT0JKX1BBUlQ9JChwYXRzdWJzdCAlLmMsJS5vLCQoU1JDX1BBUlQpKQotIFNSQ19BUkNIID0gYXJjaC9hcm0uYyBhcmNoL2FybTY0LmMgYXJjaC94ODYuYyBhcmNoL3g4Nl82NC5jIGFyY2gvaWE2NC5jIGFyY2gvcHBjNjQuYyBhcmNoL3MzOTB4LmMgYXJjaC9wcGMuYyBhcmNoL3NwYXJjNjQuYwotIE9CSl9BUkNIPSQocGF0c3Vic3QgJS5jLCUubywkKFNSQ19BUkNIKSkKLSAKLS1MSUJTID0gLWxkdyAtbGJ6MiAtbGVibCAtbGRsIC1sZWxmIC1segotK0xJQlMgPSAtbGR3IC1sYnoyIC1sZGwgLWxlbGYgLWx6Ci0gaWZuZXEgKCQoTElOS1RZUEUpLCBkeW5hbWljKQotIExJQlMgOj0gJChMSUJTKQotIGVuZGlmCi0tLSAKLTIuMjQuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21ha2VkdW1wZmlsZS9tYWtlZHVtcGZpbGVfMS42LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL21ha2VkdW1wZmlsZS9tYWtlZHVtcGZpbGVfMS42LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5MjRlMzkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlXzEuNi42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotU1VNTUFSWSA9ICJWTWNvcmUgZXh0cmFjdGlvbiB0b29sIgotREVTQ1JJUFRJT04gPSAiXAotICAgIFRoaXMgcHJvZ3JhbSBpcyB1c2VkIHRvIGV4dHJhY3QgYSBzdWJzZXQgb2YgdGhlIG1lbW9yeSBhdmFpbGFibGUgZWl0aGVyIFwKLSAgICB2aWEgL2Rldi9tZW0gb3IgL3Byb2Mvdm1jb3JlIChmb3IgY3Jhc2hkdW1wcykuIEl0IGlzIHVzZWQgdG8gZ2V0IG1lbW9yeSBcCi0gICAgaW1hZ2VzIHdpdGhvdXQgZXh0cmEgdW5lZWRlZCBpbmZvcm1hdGlvbiAoemVybyBwYWdlcywgdXNlcnNwYWNlIHByb2dyYW1zLCBcCi0gICAgZXRjKS4gXAotIgotSE9NRVBBR0UgPSAiaHR0cDovL21ha2VkdW1wZmlsZS5zb3VyY2Vmb3JnZS5uZXQiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotTElDRU5TRSA9ICJHUEx2Mi4wIgotCi1ERVBFTkRTID0gImJ6aXAyIHpsaWIgZWxmdXRpbHMiCi1SREVQRU5EU18ke1BOfS10b29scyA9ICJwZXJsICR7UE59IgotCi0jIGFybSBhbmQgYWFyY2g2NCB3b3VsZCBjb21waWxlIGJ1dCBoYXMgbmV2ZXIgYmVlbiB0ZXN0ZWQgdXBzdHJlYW0uICBtaXBzIHdvdWxkIG5vdCBjb21waWxlLgotIwotQ09NUEFUSUJMRV9IT1NUID0gIih4ODZfNjR8aS44Nnxwb3dlcnBjfGFybXxhYXJjaDY0KS4qLWxpbnV4IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tdG9vbHMiCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKi5wbCIKLQotU1JDX1VSSSA9ICJcCi0gICAgJHtTT1VSQ0VGT1JHRV9NSVJST1J9L21ha2VkdW1wZmlsZS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICBmaWxlOi8vMDAwMS1tYWtlZHVtcGZpbGUtcmVwbGFjZS1oYXJkY29kZS1DRkxBR1MucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLW1lbV9zZWN0aW9uLVN1cHBvcnQtb25seS00Ni1iaXQtZm9yLU1BWF9QSFlTTUVNX0JJVFMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLWJ1aWxkLURlbGV0ZS1saWJlYmwtZnJvbS1yZXF1aXJlZC1saWJyYXJpZXMtZHVyaW5nLWwucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjZmZDYzMmI5N2FkNzhkOWEwYTNiMGYwOTg5MDk0MDY0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQwMDdlZWMwNWNiMTRmMDE1NWYyZDA2YTBkNGRjNzBkMzIxZGJiMmFlYzY1ZmNjZGNlOTUzMTQ1YzgyMzAzMjQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9tYWtlZHVtcGZpbGUvZmlsZXMvbWFrZWR1bXBmaWxlLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIm1ha2VkdW1wZmlsZS8oP1A8cHZlcj5cZCsoXC5cZCspKykvIgotCi1TRUNUSU9OID0gImJhc2UiCi0KLSMgSWYgd2UgZG8gbm90IHNwZWNpZnkgVEFSR0VULCBtYWtlZHVtcGZpbGUgd2lsbCBidWlsZCBmb3IgdGhlIGhvc3QgYnV0IHVzZSB0aGUKLSMgdGFyZ2V0IGdjYy4KLSMKLUVYVFJBX09FTUFLRSA9ICJcCi0gICAgTElOS1RZUEU9c3RhdGljIFwKLSAgICBUQVJHRVQ9JHtUQVJHRVRfQVJDSH0gXAotIgotCi1kb19pbnN0YWxsICgpIHsKLSAgICBta2RpciAtcCAke0R9L3Vzci9iaW4KLSAgICBpbnN0YWxsIC1tIDc1NSAke1N9L21ha2VkdW1wZmlsZSAke0R9L3Vzci9iaW4KLSAgICBpbnN0YWxsIC1tIDc1NSAke1N9L21ha2VkdW1wZmlsZS1SLnBsICR7RH0vdXNyL2JpbgotCi0gICAgbWtkaXIgLXAgJHtEfS91c3Ivc2hhcmUvbWFuL21hbjgKLSAgICBpbnN0YWxsIC1tIDY0NCAke1N9L21ha2VkdW1wZmlsZS44Lmd6ICR7RH0vdXNyL3NoYXJlL21hbi9tYW44Ci0KLSAgICBta2RpciAtcCAke0R9L3Vzci9zaGFyZS9tYW4vbWFuNQotICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vbWFrZWR1bXBmaWxlLmNvbmYuNS5neiAke0R9L3Vzci9zaGFyZS9tYW4vbWFuNQotCi0gICAgbWtkaXIgLXAgJHtEfS9ldGMvCi0gICAgaW5zdGFsbCAtbSA2NDQgJHtTfS9tYWtlZHVtcGZpbGUuY29uZiAke0R9L2V0Yy9tYWtlZHVtcGZpbGUuY29uZi5zYW1wbGUKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZV8xLjYuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvbWFrZWR1bXBmaWxlL21ha2VkdW1wZmlsZV8xLjYuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDE2NzZhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9tYWtlZHVtcGZpbGUvbWFrZWR1bXBmaWxlXzEuNi43LmJiCkBAIC0wLDAgKzEsNTcgQEAKK1NVTU1BUlkgPSAiVk1jb3JlIGV4dHJhY3Rpb24gdG9vbCIKK0RFU0NSSVBUSU9OID0gIlwKKyAgICBUaGlzIHByb2dyYW0gaXMgdXNlZCB0byBleHRyYWN0IGEgc3Vic2V0IG9mIHRoZSBtZW1vcnkgYXZhaWxhYmxlIGVpdGhlciBcCisgICAgdmlhIC9kZXYvbWVtIG9yIC9wcm9jL3ZtY29yZSAoZm9yIGNyYXNoZHVtcHMpLiBJdCBpcyB1c2VkIHRvIGdldCBtZW1vcnkgXAorICAgIGltYWdlcyB3aXRob3V0IGV4dHJhIHVuZWVkZWQgaW5mb3JtYXRpb24gKHplcm8gcGFnZXMsIHVzZXJzcGFjZSBwcm9ncmFtcywgXAorICAgIGV0YykuIFwKKyIKK0hPTUVQQUdFID0gImh0dHA6Ly9tYWtlZHVtcGZpbGUuc291cmNlZm9yZ2UubmV0IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKK0xJQ0VOU0UgPSAiR1BMdjIuMCIKKworREVQRU5EUyA9ICJiemlwMiB6bGliIGVsZnV0aWxzIgorUkRFUEVORFNfJHtQTn0tdG9vbHMgPSAicGVybCAke1BOfSIKKworIyBhcm0gYW5kIGFhcmNoNjQgd291bGQgY29tcGlsZSBidXQgaGFzIG5ldmVyIGJlZW4gdGVzdGVkIHVwc3RyZWFtLiAgbWlwcyB3b3VsZCBub3QgY29tcGlsZS4KKyMKK0NPTVBBVElCTEVfSE9TVCA9ICIoeDg2XzY0fGkuODZ8cG93ZXJwY3xhcm18YWFyY2g2NCkuKi1saW51eCIKKworUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzIgorRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9LyoucGwiCisKK1NSQ19VUkkgPSAiXAorICAgICR7U09VUkNFRk9SR0VfTUlSUk9SfS9tYWtlZHVtcGZpbGUvJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgZmlsZTovLzAwMDEtbWFrZWR1bXBmaWxlLXJlcGxhY2UtaGFyZGNvZGUtQ0ZMQUdTLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1tZW1fc2VjdGlvbi1TdXBwb3J0LW9ubHktNDYtYml0LWZvci1NQVhfUEhZU01FTV9CSVRTLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MDhlZjg0MGNhNDljYTZiZmRlNzdjMDk3Y2Y0MjlmNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlNzAyZmJkZjYyYjRjZDgyOWE3NmU0NmYzZTI0ZWIzZmM3NTAxOTE4Yjg1ZWJkY2Q4YmFlZjRmNTNkNmVlMmM4IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbWFrZWR1bXBmaWxlL2ZpbGVzL21ha2VkdW1wZmlsZS8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJtYWtlZHVtcGZpbGUvKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKKworU0VDVElPTiA9ICJiYXNlIgorCisjIElmIHdlIGRvIG5vdCBzcGVjaWZ5IFRBUkdFVCwgbWFrZWR1bXBmaWxlIHdpbGwgYnVpbGQgZm9yIHRoZSBob3N0IGJ1dCB1c2UgdGhlCisjIHRhcmdldCBnY2MuCisjCitFWFRSQV9PRU1BS0UgPSAiXAorICAgIExJTktUWVBFPXN0YXRpYyBcCisgICAgVEFSR0VUPSR7VEFSR0VUX0FSQ0h9IFwKKyIKKworZG9faW5zdGFsbCAoKSB7CisgICAgbWtkaXIgLXAgJHtEfS91c3IvYmluCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9tYWtlZHVtcGZpbGUgJHtEfS91c3IvYmluCisgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS9tYWtlZHVtcGZpbGUtUi5wbCAke0R9L3Vzci9iaW4KKworICAgIG1rZGlyIC1wICR7RH0vdXNyL3NoYXJlL21hbi9tYW44CisgICAgaW5zdGFsbCAtbSA2NDQgJHtTfS9tYWtlZHVtcGZpbGUuOC5neiAke0R9L3Vzci9zaGFyZS9tYW4vbWFuOAorCisgICAgbWtkaXIgLXAgJHtEfS91c3Ivc2hhcmUvbWFuL21hbjUKKyAgICBpbnN0YWxsIC1tIDY0NCAke1N9L21ha2VkdW1wZmlsZS5jb25mLjUuZ3ogJHtEfS91c3Ivc2hhcmUvbWFuL21hbjUKKworICAgIG1rZGlyIC1wICR7RH0vZXRjLworICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vbWFrZWR1bXBmaWxlLmNvbmYgJHtEfS9ldGMvbWFrZWR1bXBmaWxlLmNvbmYuc2FtcGxlCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jCmluZGV4IGE5ZWU3NzUuLjBlMWUyZWQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUuaW5jCkBAIC0yNSw2ICsyNSw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9yb290LWhvbWUtZGlyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLXJtYi1kZWZpbml0aW9uLWZvci1OSU9TMi1hcmNoaXRlY3R1cmUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1yZXBsYWNlLXN5bV9pdGVyYXRvci0wLXdpdGgtc3ltX2l0ZXJhdG9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLW5ldy1iZmQtQVBJcy1mcm9tLTIuMzQucGF0Y2ggXAogIgogVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAib3Byb2ZpbGUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9vcHJvZmlsZS9maWxlcy9vcHJvZmlsZS8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLzAwMDEtVXNlLW5ldy1iZmQtQVBJcy1mcm9tLTIuMzQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlLzAwMDEtVXNlLW5ldy1iZmQtQVBJcy1mcm9tLTIuMzQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmFmNTZkMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGUvMDAwMS1Vc2UtbmV3LWJmZC1BUElzLWZyb20tMi4zNC5wYXRjaApAQCAtMCwwICsxLDc5IEBACitGcm9tIDM0NzQ1ZmIwNjZhMjY2YWU2YmJiMTVkMDg0NjZkNGQyY2I2YTIxMTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyMCBGZWIgMjAyMCAwODoxMTowNCAtMDgwMAorU3ViamVjdDogW1BBVENIXSBVc2UgbmV3IGJmZCBBUElzIGZyb20gMi4zNCsKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGlidXRpbCsrL2JmZF9zdXBwb3J0LmNwcCB8IDEwICsrKysrLS0tLS0KKyBvcGppdGNvbnYvY3JlYXRlX2JmZC5jICAgIHwgIDYgKysrLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJ1dGlsKysvYmZkX3N1cHBvcnQuY3BwIGIvbGlidXRpbCsrL2JmZF9zdXBwb3J0LmNwcAoraW5kZXggZmE5MDQ4MzkuLmU1M2ExNTMwIDEwMDY0NAorLS0tIGEvbGlidXRpbCsrL2JmZF9zdXBwb3J0LmNwcAorKysrIGIvbGlidXRpbCsrL2JmZF9zdXBwb3J0LmNwcAorQEAgLTEzNyw3ICsxMzcsNyBAQCBzdGF0aWMgYm9vbCBnZXRfYnVpbGRfaWQoYmZkICogaWJmZCwgdW5zaWduZWQgY2hhciAqIGJ1aWxkX2lkKQorIAkJfQorIAl9CisgCistCWJmZF9zaXplX3R5cGUgYnVpbGRpZF9zZWN0X3NpemUgPSBiZmRfc2VjdGlvbl9zaXplKGliZmQsIHNlY3QpOworKwliZmRfc2l6ZV90eXBlIGJ1aWxkaWRfc2VjdF9zaXplID0gYmZkX3NlY3Rpb25fc2l6ZShzZWN0KTsKKyAJY2hhciAqIGNvbnRlbnRzID0gKGNoYXIgKikgeG1hbGxvYyhidWlsZGlkX3NlY3Rfc2l6ZSk7CisgCWVycm5vID0gMDsKKyAJaWYgKCFiZmRfZ2V0X3NlY3Rpb25fY29udGVudHMoaWJmZCwgc2VjdCwKK0BAIC0xODgsNyArMTg4LDcgQEAgYm9vbCBnZXRfZGVidWdfbGlua19pbmZvKGJmZCAqIGliZmQsIHN0cmluZyAmIGZpbGVuYW1lLCB1bnNpZ25lZCBsb25nICYgY3JjMzIpCisgCWlmIChzZWN0ID09IE5VTEwpCisgCQlyZXR1cm4gZmFsc2U7CisgCQorLQliZmRfc2l6ZV90eXBlIGRlYnVnbGlua19zaXplID0gYmZkX3NlY3Rpb25fc2l6ZShpYmZkLCBzZWN0KTsgIAorKwliZmRfc2l6ZV90eXBlIGRlYnVnbGlua19zaXplID0gYmZkX3NlY3Rpb25fc2l6ZShzZWN0KTsgIAorIAljaGFyICogY29udGVudHMgPSAoY2hhciAqKSB4bWFsbG9jKGRlYnVnbGlua19zaXplKTsKKyAJY3ZlcmIgPDwgdmJmZAorIAkgICAgICA8PCAiLmdudV9kZWJ1Z2xpbmsgc2VjdGlvbiBoYXMgc2l6ZSAiIDw8IGRlYnVnbGlua19zaXplIDw8IGVuZGw7CitAQCAtMzQ2LDcgKzM0Niw3IEBAIHZvaWQgZml4dXBfbGluZW5yKGJmZCAqIGFiZmQsIGFzZWN0aW9uICogc2VjdGlvbiwgYXN5bWJvbCAqKiBzeW1zLAorIAkvLyBmaXJzdCByZXN0cmljdCB0aGUgc2VhcmNoIG9uIGEgc2Vuc2libGUgcmFuZ2Ugb2Ygdm1hLCAxNiBpcworIAkvLyBhbiBpbnR1aXRpdmUgdmFsdWUgYmFzZWQgb24gZXBpbG9nIGNvZGUgbG9vaworIAlzaXplX3QgbWF4X3NlYXJjaCA9IDE2OworLQlzaXplX3Qgc2VjdGlvbl9zaXplID0gYmZkX3NlY3Rpb25fc2l6ZShhYmZkLCBzZWN0aW9uKTsKKysJc2l6ZV90IHNlY3Rpb25fc2l6ZSA9IGJmZF9zZWN0aW9uX3NpemUoc2VjdGlvbik7CisgCWlmIChwYyArIG1heF9zZWFyY2ggPiBzZWN0aW9uX3NpemUpCisgCQltYXhfc2VhcmNoID0gc2VjdGlvbl9zaXplIC0gcGM7CisgCitAQCAtODE5LDEwICs4MTksMTAgQEAgZmluZF9uZWFyZXN0X2xpbmUoYmZkX2luZm8gY29uc3QgJiBiLCBvcF9iZmRfc3ltYm9sIGNvbnN0ICYgc3ltLAorIAllbHNlCisgCQlwYyA9IChzeW0udmFsdWUoKSArIG9mZnNldCkgLSBzeW0uZmlsZXBvcygpOworIAorLQlpZiAoKGJmZF9nZXRfc2VjdGlvbl9mbGFncyhhYmZkLCBzZWN0aW9uKSAmIFNFQ19BTExPQykgPT0gMCkKKysJaWYgKChiZmRfc2VjdGlvbl9mbGFncyhzZWN0aW9uKSAmIFNFQ19BTExPQykgPT0gMCkKKyAJCWdvdG8gZmFpbDsKKyAKKy0JaWYgKHBjID49IGJmZF9zZWN0aW9uX3NpemUoYWJmZCwgc2VjdGlvbikpCisrCWlmIChwYyA+PSBiZmRfc2VjdGlvbl9zaXplKHNlY3Rpb24pKQorIAkJZ290byBmYWlsOworIAorIAlyZXQgPSBiZmRfZmluZF9uZWFyZXN0X2xpbmUoYWJmZCwgc2VjdGlvbiwgc3ltcywgcGMsICZjZmlsZW5hbWUsCitkaWZmIC0tZ2l0IGEvb3BqaXRjb252L2NyZWF0ZV9iZmQuYyBiL29waml0Y29udi9jcmVhdGVfYmZkLmMKK2luZGV4IDQ4ZGIxNDNiLi41YzBlOTE1MiAxMDA2NDQKKy0tLSBhL29waml0Y29udi9jcmVhdGVfYmZkLmMKKysrKyBiL29waml0Y29udi9jcmVhdGVfYmZkLmMKK0BAIC04NiwxMiArODYsMTIgQEAgYXNlY3Rpb24gKiBjcmVhdGVfc2VjdGlvbihiZmQgKiBhYmZkLCBjaGFyIGNvbnN0ICogc2VjdGlvbl9uYW1lLAorIAkJYmZkX3BlcnJvcigiYmZkX21ha2Vfc2VjdGlvbiIpOworIAkJZ290byBlcnJvcjsKKyAJfQorLQliZmRfc2V0X3NlY3Rpb25fdm1hKGFiZmQsIHNlY3Rpb24sIHZtYSk7CistCWlmIChiZmRfc2V0X3NlY3Rpb25fc2l6ZShhYmZkLCBzZWN0aW9uLCBzaXplKSA9PSBGQUxTRSkgeworKwliZmRfc2V0X3NlY3Rpb25fdm1hKHNlY3Rpb24sIHZtYSk7CisrCWlmIChiZmRfc2V0X3NlY3Rpb25fc2l6ZShzZWN0aW9uLCBzaXplKSA9PSBGQUxTRSkgeworIAkJYmZkX3BlcnJvcigiYmZkX3NldF9zZWN0aW9uX3NpemUiKTsKKyAJCWdvdG8gZXJyb3I7CisgCX0KKy0JaWYgKGJmZF9zZXRfc2VjdGlvbl9mbGFncyhhYmZkLCBzZWN0aW9uLCBmbGFncykgPT0gRkFMU0UpIHsKKysJaWYgKGJmZF9zZXRfc2VjdGlvbl9mbGFncyhzZWN0aW9uLCBmbGFncykgPT0gRkFMU0UpIHsKKyAJCWJmZF9wZXJyb3IoImJmZF9zZXRfc2VjdGlvbl9mbGFncyIpOworIAkJZ290byBlcnJvcjsKKyAJfQorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZV8xLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvb3Byb2ZpbGUvb3Byb2ZpbGVfMS4zLjAuYmIKaW5kZXggNGU1YjZjYS4uODI0MmE4MyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9vcHJvZmlsZS9vcHJvZmlsZV8xLjMuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL29wcm9maWxlL29wcm9maWxlXzEuMy4wLmJiCkBAIC0xLDYgKzEsMTAgQEAKIHJlcXVpcmUgb3Byb2ZpbGUuaW5jCiAKK0NPTVBBVElCTEVfSE9TVF9yaXNjdjY0ID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfcmlzY3YzMiA9ICJudWxsIgorCiBERVBFTkRTX2FwcGVuZF9wb3dlcnBjNjQgPSAiIGxpYnBmbTQiCitERVBFTkRTX2FwcGVuZF9wb3dlcnBjNjRsZSA9ICIgbGlicGZtNCIKIAogU1JDX1VSSVttZDVzdW1dID0gImJkOTk4ZGY1NTIxZWJlZGFlMzFlNzFjZDNmYjYyMDBiIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk1ZGVkOGJkZTFlYzM5OTIyZjBhZjAxNTk4MWE2N2FlYzYzZTAyNWE1MDFlNGRjMDRjZDY1ZDM4ZjczNjQ3ZTYiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL3BtLWdyYXBoL3BtLWdyYXBoXzUuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvcG0tZ3JhcGgvcG0tZ3JhcGhfNS41LmJiCmluZGV4IDYzYTlmYTguLmExMzc4ODYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvcG0tZ3JhcGgvcG0tZ3JhcGhfNS41LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvcG0tZ3JhcGgvcG0tZ3JhcGhfNS41LmJiCkBAIC0xMiwxMSArMTIsMjIgQEAKICIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKKyMgQXBhcnQgZnJvbSB0aGUgbGlzdGVkIFJERVBFTkRTLCBhbmFseXplLXN1c3BlbmQgZGVwZW5kcyBvbiBzb21lIGZlYXR1cmVzCisjIHByb3ZpZGVkIGJ5IHRoZSBrZXJuZWwuIFRoZXNlIG9wdGlvbnMgYXJlOgorIyAgIC0gQ09ORklHX1BNX0RFQlVHPXkKKyMgICAtIENPTkZJR19QTV9TTEVFUF9ERUJVRz15CisjICAgLSBDT05GSUdfRlRSQUNFPXkKKyMgICAtIENPTkZJR19GVU5DVElPTl9UUkFDRVI9eQorIyAgIC0gQ09ORklHX0ZVTkNUSU9OX0dSQVBIX1RSQUNFUj15CisKIENPTVBBVElCTEVfSE9TVD0nKGkuODZ8eDg2XzY0KS4qJwogRVhUUkFfT0VNQUtFID0gIlBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IEJBU0VMSUI9JHtiYXNlbGlifSIKIAogZG9faW5zdGFsbCgpIHsKICAgICAgICAgb2VfcnVubWFrZSBpbnN0YWxsCisgICAgICAgIGluc3RhbGwgLURtIDA3NTUgJHtTfS9hbmFseXplX3N1c3BlbmQucHkgJHtEfSR7YmluZGlyfS9hbmFseXplX3N1c3BlbmQucHkKIH0KIAogUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtY29yZSBweXRob24zLXRocmVhZGluZyBweXRob24zLWRhdGV0aW1lIHB5dGhvbjMtY29tcHJlc3Npb24iCitSUFJPVklERVNfJHtQTn0gPSAiYW5hbHl6ZS1zdXNwZW5kIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC9zcGlkZXYtdGVzdC9zcGlkZXYtdGVzdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvc3BpZGV2LXRlc3Qvc3BpZGV2LXRlc3QuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYyNjMwMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvc3BpZGV2LXRlc3Qvc3BpZGV2LXRlc3QuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJUZXN0IFNQSSBkZXZpY2VzIgorREVTQ1JJUFRJT04gPSAiU1BJIHRlc3RpbmcgdXRpbGl0eSB1c2luZyB0aGUgc3BpZGV2IGRyaXZlciIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vR1BMLTIuMDttZDU9ODAxZjgwOTgwZDE3MWRkNjQyNTYxMDgzM2EyMmRiZTYiCitQUk9WSURFUyA9ICJ2aXJ0dWFsL3NwaWRldi10ZXN0IgorCitpbmhlcml0IGJhc2gtY29tcGxldGlvbiBrZXJuZWxzcmMga2VybmVsLWFyY2gKKworZG9fcG9wdWxhdGVfbGljW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19wYXRjaCIKKworRVhUUkFfT0VNQUtFID0gIi1DICR7U30vdG9vbHMvc3BpIE89JHtCfSBDUk9TUz0ke1RBUkdFVF9QUkVGSVh9IENDPSIke0NDfSIgTEQ9IiR7TER9IiBBUj0ke0FSfSBBUkNIPSR7QVJDSH0iCisKK2RvX2NvbmZpZ3VyZVtkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fc2hhcmVkX3dvcmtkaXIiCisKK2RvX2NvbXBpbGUoKSB7CisgICAgb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwKK30KKworUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKKworcHl0aG9uIGRvX3BhY2thZ2VfcHJlcGVuZCgpIHsKKyAgICBkLnNldFZhcignUEtHVicsIGQuZ2V0VmFyKCJLRVJORUxfVkVSU0lPTiIsIFRydWUpLnNwbGl0KCItIilbMF0pCit9CisKK0IgPSAiJHtXT1JLRElSfS8ke0JQTn0tJHtQVn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL3R1cmJvc3RhdC90dXJib3N0YXRfMy40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLWtlcm5lbC90dXJib3N0YXQvdHVyYm9zdGF0XzMuNC5iYgppbmRleCA1ZjY1ODhkLi42MDA0MGE0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMta2VybmVsL3R1cmJvc3RhdC90dXJib3N0YXRfMy40LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1rZXJuZWwvdHVyYm9zdGF0L3R1cmJvc3RhdF8zLjQuYmIKQEAgLTIxLDcgKzIxLDcgQEAKICAgICAgICAgICAgICIKIAogUEFDS0FHRV9BUkNIID0gIiR7TUFDSElORV9BUkNIfSIKLURFUEVORFMgPSAidmlydHVhbC9rZXJuZWwiCitERVBFTkRTID0gImxpYmNhcCIKIAogIyBUaGlzIGxvb2tzIGluIFMsIHNvIHdlIGJldHRlciBtYWtlIHN1cmUgdGhlcmUncwogIyBzb21ldGhpbmcgaW4gdGhlIGRpcmVjdG9yeS4KQEAgLTMwLDI1ICszMCwyOCBAQAogCiAKIEVYVFJBX09FTUFLRSA9ICdcCi0gICAgICAgICAgICAgICAgQ0M9IiR7Q0N9IiBcCi0JCSdDRkxBR1M9LVdhbGwgLUkke1NUQUdJTkdfS0VSTkVMX0RJUn0vYXJjaC94ODYvaW5jbHVkZS91YXBpICR7TERGTEFHU30nIFwKKyAgICAgICAgICAgICAgICBDQz0iJHtDQ30iICdDRkxBR1M9LVdhbGwgJHtMREZMQUdTfScgXAogICAgICAgICAgICAgICAgJwogCiAjIElmIHdlIGJ1aWxkIHVuZGVyIFNUQUdJTkdfS0VSTkVMX0RJUiwgc291cmNlIHdpbGwgbm90IGJlIHB1dAogIyBpbnRvIHRoZSBkYmcgcnBtLiAgU1RBR0lOR19LRVJORUxfRElSIHdpbGwgZXhpc3QgYnkgdGhlIHRpbWUKICMgZG9fY29uZmlndXJlKCkgaXMgaW52b2tlZCBzbyB3ZSBjYW4gc2FmZWx5IGNvcHkgZnJvbSBpdC4KICMKK2RvX2NvbmZpZ3VyZVtkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fc2hhcmVkX3dvcmtkaXIiCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKIAlta2RpciAtcCAke1N9CiAJY3AgLXIgJHtTVEFHSU5HX0tFUk5FTF9ESVJ9L2FyY2gveDg2L2luY2x1ZGUvYXNtL21zci1pbmRleC5oICR7U30KIAljcCAtciAke1NUQUdJTkdfS0VSTkVMX0RJUn0vYXJjaC94ODYvaW5jbHVkZS9hc20vaW50ZWwtZmFtaWx5LmggJHtTfQogCWNwIC1yICR7U1RBR0lOR19LRVJORUxfRElSfS9pbmNsdWRlL2xpbnV4L2JpdHMuaCAke1N9CisJY3AgLXIgJHtTVEFHSU5HX0tFUk5FTF9ESVJ9L2luY2x1ZGUvbGludXgvY29uc3QuaCAke1N9CiAJY3AgLXIgJHtTVEFHSU5HX0tFUk5FTF9ESVJ9L3Rvb2xzL3Bvd2VyL3g4Ni90dXJib3N0YXQvKiAke1N9CiAJY3AgLXIgJHtXT1JLRElSfS9DT1BZSU5HICR7U30KIH0KIAogZG9fY29tcGlsZSgpIHsKIAlzZWQgLWkgJ3MjPGxpbnV4L2JpdHMuaD4jImJpdHMuaCIjJyBtc3ItaW5kZXguaAorCXNlZCAtaSAncyM8bGludXgvY29uc3QuaD4jImNvbnN0LmgiIycgYml0cy5oCisJc2VkIC1pIC1lICdzIzx1YXBpL2xpbnV4L2NvbnN0Lmg+IzxsaW51eC9jb25zdC5oPiMnIC1lICdzI19MSU5VWF9DT05TVF9II19MSU5VWF9DT05TVF9IX0tFUk5FTCMnIGNvbnN0LmgKIAlzZWQgLWkgJ3MjTVNSSEVBREVSIyJtc3ItaW5kZXguaCIjJyB0dXJib3N0YXQuYwogCXNlZCAtaSAncyNJTlRFTF9GQU1JTFlfSEVBREVSIyJpbnRlbC1mYW1pbHkuaCIjJyB0dXJib3N0YXQuYwogCXNlZCAtaSAncyNcJChDQykgXCQoQ0ZMQUdTKSBcJDwgLW8gXCQoQlVJTERfT1VUUFVUKS9cJEAjXCQoQ0MpIFwkKENGTEFHUykgXCQoTERGTEFHUykgXCQ8IC1vIFwkKEJVSUxEX09VVFBVVCkvXCRAIycgTWFrZWZpbGUKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2lkM2xpYi9pZDNsaWJfMy44LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9pZDNsaWIvaWQzbGliXzMuOC4zLmJiCmluZGV4IDlkMzExNjAuLjIxZmEwYmQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2lkM2xpYi9pZDNsaWJfMy44LjMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvaWQzbGliL2lkM2xpYl8zLjguMy5iYgpAQCAtMjEsNiArMjEsNyBAQAogIyBwYXRjaGVzIG1haW50YWluZWQgYnkgcXVpbHQuIFNvIG1hbnVhbGx5IGFwcGx5IHRoZW0gYmVmb3JlIGFwcGx5aW5nIG90aGVyIGxvY2FsCiAjIHBhdGNoZXMuIEFsc28gcmVtb3ZlIGFsbCB0ZW1wIGZpbGVzIGJlZm9yZSBsZWF2aW5nLCBiZWNhdXNlIGRvX3BhdGNoKCkgd2lsbCBwb3AKICMgdXAgYWxsIHByZXZpb3VzbHkgYXBwbGllZCBwYXRjaGVzIGluIHRoZSBzdGFydAorZG9fcGF0Y2hbZGVwZW5kc10gKz0gInF1aWx0LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogaWQzbGliX2RvX3BhdGNoKCkgewogICAgIGNkICR7U30KICAgICAjIGl0J3MgaW1wb3J0YW50IHRoYXQgd2Ugb25seSBwb3AgdGhlIGV4aXN0aW5nIHBhdGNoZXMgd2hlbiB0aGV5J3ZlCkBAIC0zMywxNCArMzQsMTQgQEAKICAgICAgICAgIyB0aGUgdGVzdCBpbnNpZGUgd2hpY2ggd2Ugb3BlcmF0ZQogICAgICAgICBRVUlMVF9QQVRDSEVTPSR7U30vcGF0Y2hlcyBxdWlsdCBwb3AgLWEKICAgICBmaQotICAgIGlmIFsgLWQgJHtTfS8ucGMtaWQzbGliIF07IHRoZW4KKyAgICBpZiBbIC1kICR7U30vLnBjLSR7QlBOfSBdOyB0aGVuCiAgICAgICAgIHJtIC1yZiAke1N9Ly5wYwotICAgICAgICBtdiAke1N9Ly5wYy1pZDNsaWIgJHtTfS8ucGMKKyAgICAgICAgbXYgJHtTfS8ucGMtJHtCUE59ICR7U30vLnBjCiAgICAgICAgIFFVSUxUX1BBVENIRVM9JHtTfS9kZWJpYW4vcGF0Y2hlcyBxdWlsdCBwb3AgLWEKICAgICAgICAgcm0gLXJmICR7U30vLnBjICR7U30vZGViaWFuCiAgICAgZmkKICAgICBRVUlMVF9QQVRDSEVTPSR7U30vZGViaWFuL3BhdGNoZXMgcXVpbHQgcHVzaCAtYQotICAgIG12ICR7U30vLnBjICR7U30vLnBjLWlkM2xpYgorICAgIG12ICR7U30vLnBjICR7U30vLnBjLSR7QlBOfQogfQogCiBkb191bnBhY2tbY2xlYW5kaXJzXSArPSAiJHtTfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmR2ZHJlYWQvbGliZHZkcmVhZF82LjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYmR2ZHJlYWQvbGliZHZkcmVhZF82LjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmNhNzRmNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJkdmRyZWFkL2xpYmR2ZHJlYWRfNi4wLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1TVU1NQVJZID0gIkRWRCBhY2Nlc3MgbXVsdGltZWRhIGxpYnJhcnkiCi1TRUNUSU9OID0gImxpYnMvbXVsdGltZWRpYSIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NjRlNzUzZmE3ZDFjYTMxNjMyYmMzODNkYTNiNTdjMjciCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLnZpZGVvbGFuLm9yZy9wdWIvdmlkZW9sYW4vbGliZHZkcmVhZC8ke1BWfS9saWJkdmRyZWFkLSR7UFZ9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiNDk5OTA5MzUxNzRiZjZiMmZhNTAxZTc4OWM1NzgxMzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjkxNDAxYWYyMTNiMjE5Y2RkZTI0YjQ2YzUwYTU3ZjI5MzAxZmViN2Y5NjU2NzhmMWQ3ZWQ0NjMyY2M2ZmViMCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgYmluY29uZmlnIHBrZ2NvbmZpZwotCi1DT05GSUdVUkVPUFRTX3JlbW92ZSA9ICItLWRpc2FibGUtc2lsZW50LXJ1bGVzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGliZHZkcmVhZC9saWJkdmRyZWFkXzYuMS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbGliZHZkcmVhZC9saWJkdmRyZWFkXzYuMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1ZjViNmEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9saWJkdmRyZWFkL2xpYmR2ZHJlYWRfNi4xLjEuYmIKQEAgLTAsMCArMSwxMiBAQAorU1VNTUFSWSA9ICJEVkQgYWNjZXNzIG11bHRpbWVkYSBsaWJyYXJ5IgorU0VDVElPTiA9ICJsaWJzL211bHRpbWVkaWEiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY0ZTc1M2ZhN2QxY2EzMTYzMmJjMzgzZGEzYjU3YzI3IgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC52aWRlb2xhbi5vcmcvcHViL3ZpZGVvbGFuL2xpYmR2ZHJlYWQvJHtQVn0vbGliZHZkcmVhZC0ke1BWfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gIjA5Yzc0MjM1NjhmYjY3OTI3OWZkMmEyYmM2YjEwYjZlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNlMzU3MzA5YTE3YzViZTM3MzEzODViOWVhYmRhNmI3ZTNmYTAxMGY0NjAyMmEwNmYxMDQ1NTNiZjhlMjE3OTYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlIGJpbmNvbmZpZyBwa2djb25maWcKKworQ09ORklHVVJFT1BUU19yZW1vdmUgPSAiLS1kaXNhYmxlLXNpbGVudC1ydWxlcyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXB2XzAuMjYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXB2XzAuMjYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzMyN2M0NS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9tcGxheWVyL21wdl8wLjI2LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi1TVU1NQVJZID0gIk9wZW4gU291cmNlIG11bHRpbWVkaWEgcGxheWVyIgotREVTQ1JJUFRJT04gPSAibXB2IGlzIGEgZm9yayBvZiBtcGxheWVyMiBhbmQgTVBsYXllci4gSXQgc2hhcmVzIHNvbWUgZmVhdHVyZXMgd2l0aCB0aGUgZm9ybWVyIHByb2plY3RzIHdoaWxlIGludHJvZHVjaW5nIG1hbnkgbW9yZS4iCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1wdi5pby8iCi1ERVBFTkRTID0gInpsaWIgZmZtcGVnIGpwZWcgdmlydHVhbC9saWJ4MTEgeHNwIGxpYnh2IFwKLSAgICAgICAgICAgbGlieHNjcm5zYXZlciBsaWJ2NGwgbGlieGluZXJhbWEgXAotIgotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTkxZjFjYjg3MGMxY2MyZDMxMzUxYTRkMjU5NTQ0MWNiIgotCi0jIFdoaWxlIHRoaXMgaXRlbSBkb2VzIG5vdCByZXF1aXJlIGl0LCBpdCBkZXBlbmRzIG9uIGZmbXBlZyB3aGljaCBkb2VzCi1MSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCi0KLVNSQ1JFVl9tcHYgPSAiNGRiODJmMDQ1MDJjYmNkMjBkOWE5NzVkZjlkZmRlOTFkOGMzODllMyIKLVNSQ19VUkkgPSAiIFwKLSAgICBnaXQ6Ly9naXRodWIuY29tL21wdi1wbGF5ZXIvbXB2O25hbWU9bXB2IFwKLSAgICBodHRwOi8vd3d3LmZyZWVoYWNrZXJzLm9yZy9+dG5hZ3kvcmVsZWFzZS93YWYtMS44LjEyO25hbWU9d2FmO2Rvd25sb2FkZmlsZW5hbWU9d2FmO3N1YmRpcj1naXQgXAotIgotU1JDX1VSSVt3YWYubWQ1c3VtXSA9ICJjZWY0ZWU4MjIwNmIxODQzZGIwODJkMGIwNTA2YmY3MSIKLVNSQ19VUklbd2FmLnNoYTI1NnN1bV0gPSAiMDFiZjJiZWFiMjEwNmQxNTU4ODAwYzg3MDliYzJjOGU0OTZkM2RhNGEyY2EzNDNmZTA5MWYyMmZjYTYwYzk4YiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCB3YWYgcGtnY29uZmlnIHB5dGhvbm5hdGl2ZSBmZWF0dXJlc19jaGVjawotCi1MVUEgPz0gImx1YSIKLUxVQV9taXBzNjQgID0gIiIKLUxVQV9hYXJjaDY0ICA9ICIiCi1MVUFfcG93ZXJwYzY0ICA9ICIiCi1MVUFfcG93ZXJwYyAgPSAiIgotCi0jIE5vdGU6IGJvdGggbHVhIGFuZCBsaWJhc3MgYXJlIHJlcXVpcmVkIHRvIGdldCBvbi1zY3JlZW4tZGlzcGxheSAoY29udHJvbHMpCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICAke0xVQX0gXAotICAgIGxpYmFzcyBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2FhcmNoNjQgPSAibHVhIgotUEFDS0FHRUNPTkZJR1tkcm1dID0gIi0tZW5hYmxlLWRybSwtLWRpc2FibGUtZHJtLGxpYmRybSIKLVBBQ0tBR0VDT05GSUdbZ2JtXSA9ICItLWVuYWJsZS1nYm0sLS1kaXNhYmxlLWdibSx2aXJ0dWFsL21lc2EiCi1QQUNLQUdFQ09ORklHW2x1YV0gPSAiLS1lbmFibGUtbHVhLC0tZGlzYWJsZS1sdWEsbHVhIGx1YWppdCIKLVBBQ0tBR0VDT05GSUdbbGliYXNzXSA9ICItLWVuYWJsZS1saWJhc3MsLS1kaXNhYmxlLWxpYmFzcyxsaWJhc3MiCi1QQUNLQUdFQ09ORklHW2xpYmFyY2hpdmVdID0gIi0tZW5hYmxlLWxpYmFyY2hpdmUsLS1kaXNhYmxlLWxpYmFyY2hpdmUsbGliYXJjaGl2ZSIKLVBBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtamFjaywgLS1kaXNhYmxlLWphY2ssIGphY2siCi1QQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItLWVuYWJsZS12YWFwaSwgLS1kaXNhYmxlLXZhYXBpLGxpYnZhIgotUEFDS0FHRUNPTkZJR1t2ZHBhdV0gPSAiLS1lbmFibGUtdmRwYXUsIC0tZGlzYWJsZS12ZHBhdSxsaWJ2ZHBhdSIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwgLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZCBsaWJ4a2Jjb21tb24iCi0KLVNJTVBMRV9UQVJHRVRfU1lTID0gIiR7QCcke1RBUkdFVF9TWVN9Jy5yZXBsYWNlKCcke1RBUkdFVF9WRU5ET1J9JywgJycpfSIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKLSAgICAtLXRhcmdldD0ke1NJTVBMRV9UQVJHRVRfU1lTfSBcCi0gICAgLS1jb25mZGlyPSR7c3lzY29uZmRpcn0gXAotICAgIC0tZGF0YWRpcj0ke2RhdGFkaXJ9IFwKLSAgICAtLWRpc2FibGUtbWFucGFnZS1idWlsZCBcCi0gICAgLS1kaXNhYmxlLWdsIFwKLSAgICAtLWRpc2FibGUtbGlic21iY2xpZW50IFwKLSAgICAtLWRpc2FibGUtZW5jb2RpbmcgXAotICAgIC0tZGlzYWJsZS1saWJibHVyYXkgXAotICAgIC0tZGlzYWJsZS1kdmRyZWFkIFwKLSAgICAtLWRpc2FibGUtZHZkbmF2IFwKLSAgICAtLWRpc2FibGUtY2RkYSBcCi0gICAgLS1kaXNhYmxlLXVjaGFyZGV0IFwKLSAgICAtLWRpc2FibGUtcnViYmVyYmFuZCBcCi0gICAgLS1kaXNhYmxlLWxjbXMyIFwKLSAgICAtLWRpc2FibGUtdmFwb3Vyc3ludGggXAotICAgIC0tZGlzYWJsZS12YXBvdXJzeW50aC1sYXp5IFwKLSAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKLSIKLQotYWRqdXN0X3dhZl9wZXJtcygpIHsKLSAgICBjaG1vZCAreCAke1N9L3dhZgotfQotCi1kb19wYXRjaFtwb3N0ZnVuY3NdICs9ICJhZGp1c3Rfd2FmX3Blcm1zIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXB2XzAuMzIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL21wbGF5ZXIvbXB2XzAuMzIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mN2IwZjMwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvbXBsYXllci9tcHZfMC4zMi4wLmJiCkBAIC0wLDAgKzEsMTE3IEBACitTVU1NQVJZID0gIk9wZW4gU291cmNlIG11bHRpbWVkaWEgcGxheWVyIgorREVTQ1JJUFRJT04gPSAibXB2IGlzIGEgZm9yayBvZiBtcGxheWVyMiBhbmQgTVBsYXllci4gSXQgc2hhcmVzIHNvbWUgZmVhdHVyZXMgd2l0aCB0aGUgZm9ybWVyIHByb2plY3RzIHdoaWxlIGludHJvZHVjaW5nIG1hbnkgbW9yZS4iCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1wdi5pby8iCisKK0RFUEVORFMgPSAiemxpYiBmZm1wZWcganBlZyBsaWJ2NGwiCisKK0RFUEVORFMgKz0gIiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnIHZpcnR1YWwvbGlieDExIHhzcCBsaWJ4diBsaWJ4c2NybnNhdmVyIGxpYnhpbmVyYW1hJywgJycsIGQpfSBcCisiCisKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5HUEw7bWQ1PTkxZjFjYjg3MGMxY2MyZDMxMzUxYTRkMjU5NTQ0MWNiIgorCisjIFdoaWxlIHRoaXMgaXRlbSBkb2VzIG5vdCByZXF1aXJlIGl0LCBpdCBkZXBlbmRzIG9uIGZmbXBlZyB3aGljaCBkb2VzCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCisKK1NSQ1JFVl9tcHYgPSAiNzBiOTkxNzQ5ZGYzODliY2MwYTRlMTQ1YjU2ODcyMzNhMDNiNGVkNyIKK1NSQ19VUkkgPSAiIFwKKyAgICBnaXQ6Ly9naXRodWIuY29tL21wdi1wbGF5ZXIvbXB2O25hbWU9bXB2IFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCB3YWYgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrIG1pbWUteGRnCisKK0xVQSA/PSAibHVhIgorTFVBX21pcHM2NCAgPSAiIgorTFVBX2FhcmNoNjQgID0gIiIKK0xVQV9wb3dlcnBjNjQgID0gIiIKK0xVQV9wb3dlcnBjNjRsZSAgPSAiIgorTFVBX3Jpc2N2NjQgID0gIiIKK0xVQV9yaXNjdjMyICA9ICIiCitMVUFfcG93ZXJwYyAgPSAiIgorCisjIE5vdGU6IGJvdGggbHVhIGFuZCBsaWJhc3MgYXJlIHJlcXVpcmVkIHRvIGdldCBvbi1zY3JlZW4tZGlzcGxheSAoY29udHJvbHMpCitQQUNLQUdFQ09ORklHID8/PSAiIFwKKyAgICAke0xVQX0gXAorICAgIGxpYmFzcyBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHX3JlbW92ZV9hYXJjaDY0ID0gImx1YSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSx2aXJ0dWFsL2xpYngxMSIKK1BBQ0tBR0VDT05GSUdbeHZdID0gIi0tZW5hYmxlLXh2LC0tZGlzYWJsZS14dixsaWJ4diIKK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSA9ICItLWVuYWJsZS1nbCwtLWRpc2FibGUtZ2wsdmlydHVhbC9saWJnbCIKK1BBQ0tBR0VDT05GSUdbZWdsXSA9ICItLWVuYWJsZS1lZ2wsLS1kaXNhYmxlLWVnbCwiCitQQUNLQUdFQ09ORklHW2RybV0gPSAiLS1lbmFibGUtZHJtLC0tZGlzYWJsZS1kcm0sbGliZHJtIgorUEFDS0FHRUNPTkZJR1tnYm1dID0gIi0tZW5hYmxlLWdibSwtLWRpc2FibGUtZ2JtLHZpcnR1YWwvbGliZ2JtIgorUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0tZW5hYmxlLWx1YSwtLWRpc2FibGUtbHVhLGx1YSBsdWFqaXQiCitQQUNLQUdFQ09ORklHW2xpYmFzc10gPSAiLS1lbmFibGUtbGliYXNzLC0tZGlzYWJsZS1saWJhc3MsbGliYXNzIgorUEFDS0FHRUNPTkZJR1tsaWJhcmNoaXZlXSA9ICItLWVuYWJsZS1saWJhcmNoaXZlLC0tZGlzYWJsZS1saWJhcmNoaXZlLGxpYmFyY2hpdmUiCitQQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWphY2ssIC0tZGlzYWJsZS1qYWNrLCBqYWNrIgorUEFDS0FHRUNPTkZJR1t2YWFwaV0gPSAiLS1lbmFibGUtdmFhcGksLS1kaXNhYmxlLXZhYXBpLGxpYnZhIgorUEFDS0FHRUNPTkZJR1t2ZHBhdV0gPSAiLS1lbmFibGUtdmRwYXUsLS1kaXNhYmxlLXZkcGF1LGxpYnZkcGF1IgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQgd2F5bGFuZC1uYXRpdmUgbGlieGtiY29tbW9uIgorCitweXRob24gX19hbm9ueW1vdXMoKSB7CisgICAgcGFja2FnZWNvbmZpZyA9IChkLmdldFZhcigiUEFDS0FHRUNPTkZJRyIpIG9yICIiKS5zcGxpdCgpCisgICAgZXh0cmFzID0gW10KKyAgICBpZiAieDExIiBpbiBwYWNrYWdlY29uZmlnIGFuZCAib3BlbmdsIiBpbiBwYWNrYWdlY29uZmlnOgorICAgICAgICBleHRyYXMuYXBwZW5kKCIgLS1lbmFibGUtZ2wteDExIikKKyAgICBpZiAieDExIiBpbiBwYWNrYWdlY29uZmlnIGFuZCAiZWdsIiBpbiBwYWNrYWdlY29uZmlnOgorICAgICAgICBleHRyYXMuYXBwZW5kKCIgLS1lbmFibGUtZWdsLXgxMSIpCisgICAgaWYgImVnbCIgaW4gcGFja2FnZWNvbmZpZyBhbmQgImRybSIgaW4gcGFja2FnZWNvbmZpZzoKKyAgICAgICAgZXh0cmFzLmFwcGVuZCgiIC0tZW5hYmxlLWVnbC1kcm0iKQorICAgIGlmICJ2YWFwaSIgaW4gcGFja2FnZWNvbmZpZyBhbmQgIngxMSIgaW4gcGFja2FnZWNvbmZpZzoKKyAgICAgICAgZXh0cmFzLmFwcGVuZCgiIC0tZW5hYmxlLXZhYXBpLXgxMSIpCisgICAgaWYgInZhYXBpIiBpbiBwYWNrYWdlY29uZmlnIGFuZCAiZHJtIiBpbiBwYWNrYWdlY29uZmlnOgorICAgICAgICBleHRyYXMuYXBwZW5kKCIgLS1lbmFibGUtdmFhcGktZHJtIikKKyAgICBpZiAidmFhcGkiIGluIHBhY2thZ2Vjb25maWcgYW5kICJ4MTEiIGluIHBhY2thZ2Vjb25maWcgYW5kICJlZ2wiIGluIHBhY2thZ2Vjb25maWc6CisgICAgICAgIGV4dHJhcy5hcHBlbmQoIiAtLWVuYWJsZS12YWFwaS14LWVnbCIpCisgICAgaWYgInZkcGF1IiBpbiBwYWNrYWdlY29uZmlnIGFuZCAib3BlbmdsIiBpbiBwYWNrYWdlY29uZmlnIGFuZCAieDExIiBpbiBwYWNrYWdlY29uZmlnOgorICAgICAgICBleHRyYXMuYXBwZW5kKCIgLS1lbmFibGUtdmRwYXUtZ2wteDExIikKKyAgICBpZiAid2F5bGFuZCIgaW4gcGFja2FnZWNvbmZpZyBhbmQgIm9wZW5nbCIgaW4gcGFja2FnZWNvbmZpZzoKKyAgICAgICAgZXh0cmFzLmFwcGVuZCgiIC0tZW5hYmxlLWdsLXdheWxhbmQiKQorICAgIGlmICJ3YXlsYW5kIiBpbiBwYWNrYWdlY29uZmlnIGFuZCAidmFhcGkiIGluIHBhY2thZ2Vjb25maWc6CisgICAgICAgIGV4dHJhcy5hcHBlbmQoIiAtLWVuYWJsZS12YWFwaS13YXlsYW5kIikKKyAgICBpZiBleHRyYXM6CisgICAgICAgIGQuYXBwZW5kVmFyKCJFWFRSQV9PRUNPTkYiLCAiIi5qb2luKGV4dHJhcykpCit9CisKK1NJTVBMRV9UQVJHRVRfU1lTID0gIiR7QCcke1RBUkdFVF9TWVN9Jy5yZXBsYWNlKCcke1RBUkdFVF9WRU5ET1J9JywgJycpfSIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKKyAgICAtLXRhcmdldD0ke1NJTVBMRV9UQVJHRVRfU1lTfSBcCisgICAgLS1jb25mZGlyPSR7c3lzY29uZmRpcn0gXAorICAgIC0tZGF0YWRpcj0ke2RhdGFkaXJ9IFwKKyAgICAtLWRpc2FibGUtbWFucGFnZS1idWlsZCBcCisgICAgLS1kaXNhYmxlLWxpYnNtYmNsaWVudCBcCisgICAgLS1kaXNhYmxlLWxpYmJsdXJheSBcCisgICAgLS1kaXNhYmxlLWR2ZG5hdiBcCisgICAgLS1kaXNhYmxlLWNkZGEgXAorICAgIC0tZGlzYWJsZS11Y2hhcmRldCBcCisgICAgLS1kaXNhYmxlLXJ1YmJlcmJhbmQgXAorICAgIC0tZGlzYWJsZS1sY21zMiBcCisgICAgLS1kaXNhYmxlLXZhcG91cnN5bnRoIFwKKyAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKKyIKKworZG9fcGF0Y2hbcG9zdGZ1bmNzXSArPSAiZ2V0X3dhZiIKKworZ2V0X3dhZigpIHsKKyAgICBjZCAke1N9CisgICAgLi9ib290c3RyYXAucHkKKyAgICBzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vZW52IHB5dGhvbnwvdXNyL2Jpbi9lbnYgcHl0aG9uM3xnJyAke1N9L3dhZgorICAgIGNkIC0KK30KKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9pY29ucyBcCisgICAgJHtkYXRhZGlyfS96c2ggXAorICAgICR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uIFwKKyAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9waXBld2lyZS9waXBld2lyZS0wLjJfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvcGlwZXdpcmUvcGlwZXdpcmUtMC4yX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iY2IzMDE1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvcGlwZXdpcmUvcGlwZXdpcmUtMC4yX2dpdC5iYgpAQCAtMCwwICsxLDY1IEBACitTVU1NQVJZID0gIk11bHRpbWVkaWEgcHJvY2Vzc2luZyBzZXJ2ZXIgZm9yIExpbnV4IgorQVVUSE9SID0gIldpbSBUYXltYW5zIDx3dGF5bWFuc0ByZWRoYXQuY29tPiIKK0hPTUVQQUdFID0gImh0dHBzOi8vcGlwZXdpcmUub3JnIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorTElDRU5TRSA9ICJMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiIFwKKyAgICBmaWxlOi8vTElDRU5TRTttZDU9ZDgxNTNjNmU2NTk4NmY4NjJhMDU1MGNhNzRhM2VkNzMgXAorICAgIGZpbGU6Ly9MR1BMO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSBcCisiCitERVBFTkRTID0gImFsc2EtbGliIGRidXMgdWRldiIKK1NSQ1JFViA9ICIxNGMxMWMwZmU0ZDM2NmJhZDRjZmVjZGVlOTdiNjY1MmZmOWVkNjNkIgorUFYgPSAiMC4yLjciCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9QaXBlV2lyZS9waXBld2lyZSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgc3lzdGVtZCBtYW5wYWdlcworCitQQUNLQUdFQ09ORklHID8/PSAiXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0gXAorICAgIGdzdHJlYW1lciBcCisiCisKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLURzeXN0ZW1kPXRydWUsLURzeXN0ZW1kPWZhbHNlLHN5c3RlbWQiCitQQUNLQUdFQ09ORklHW2dzdHJlYW1lcl0gPSAiLURnc3RyZWFtZXI9ZW5hYmxlZCwtRGdzdHJlYW1lcj1kaXNhYmxlZCxnbGliLTIuMCBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKK1BBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi1EbWFuPXRydWUsLURtYW49ZmFsc2UsbGlieG1sLXBhcnNlci1wZXJsLW5hdGl2ZSIKKworUEFDS0FHRVMgPSsgIlwKKyAgICAke1BOfS1zcGEtcGx1Z2lucyBcCisgICAgJHtQTn0tYWxzYSBcCisgICAgJHtQTn0tY29uZmlnIFwKKyAgICBnc3RyZWFtZXIxLjAtJHtQTn0gXAorICAgIGxpYiR7UE59IFwKKyAgICBsaWIke1BOfS1tb2R1bGVzIFwKKyIKKworUkRFUEVORFNfbGliJHtQTn0gKz0gImxpYiR7UE59LW1vZHVsZXMgJHtQTn0tc3BhLXBsdWdpbnMiCisKK0ZJTEVTXyR7UE59ID0gIlwKKyAgICAke3N5c2NvbmZkaXJ9L3BpcGV3aXJlL3BpcGV3aXJlLmNvbmYgXAorICAgICR7YmluZGlyfS9waXBld2lyZSogXAorICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LyogXAorIgorRklMRVNfbGliJHtQTn0gPSAiXAorICAgICR7bGliZGlyfS9saWJwaXBld2lyZS0qLnNvLiogXAorIgorRklMRVNfbGliJHtQTn0tbW9kdWxlcyA9ICJcCisgICAgJHtsaWJkaXJ9L3BpcGV3aXJlLSovKiBcCisiCitGSUxFU18ke1BOfS1zcGEtcGx1Z2lucyA9ICJcCisgICAgJHtiaW5kaXJ9L3NwYS0qIFwKKyAgICAke2xpYmRpcn0vc3BhLyogXAorIgorRklMRVNfJHtQTn0tYWxzYSA9ICJcCisgICAgJHtsaWJkaXJ9L2Fsc2EtbGliLyogXAorICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1waXBld2lyZS5jb25mIFwKKyIKK0ZJTEVTX2dzdHJlYW1lcjEuMC0ke1BOfSA9ICJcCisgICAgJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKiBcCisiCisKK0NPTkZGSUxFU18ke1BOfSA9ICJcCisgICAgJHtzeXNjb25mZGlyfS9waXBld2lyZS9waXBld2lyZS5jb25mIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3BpcGV3aXJlL3BpcGV3aXJlX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1tdWx0aW1lZGlhL3BpcGV3aXJlL3BpcGV3aXJlX2dpdC5iYgppbmRleCBiY2IzMDE1Li4xYTQxNWMxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbXVsdGltZWRpYS9waXBld2lyZS9waXBld2lyZV9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW11bHRpbWVkaWEvcGlwZXdpcmUvcGlwZXdpcmVfZ2l0LmJiCkBAIC0yLDE0ICsyLDE0IEBACiBBVVRIT1IgPSAiV2ltIFRheW1hbnMgPHd0YXltYW5zQHJlZGhhdC5jb20+IgogSE9NRVBBR0UgPSAiaHR0cHM6Ly9waXBld2lyZS5vcmciCiBTRUNUSU9OID0gIm11bHRpbWVkaWEiCi1MSUNFTlNFID0gIkxHUEwtMi4xIgorTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gIiBcCi0gICAgZmlsZTovL0xJQ0VOU0U7bWQ1PWQ4MTUzYzZlNjU5ODZmODYyYTA1NTBjYTc0YTNlZDczIFwKLSAgICBmaWxlOi8vTEdQTDttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAorICAgIGZpbGU6Ly9MSUNFTlNFO21kNT1lMmMwYjdkODZkMDRlNzE2YTNjNGM5YWIzNDI2MGU2OSBcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PTk3YmU5NmNhNGZhYjIzZTk2NTdmZmE1OTBiOTMxYzFhIFwKICIKIERFUEVORFMgPSAiYWxzYS1saWIgZGJ1cyB1ZGV2IgotU1JDUkVWID0gIjE0YzExYzBmZTRkMzY2YmFkNGNmZWNkZWU5N2I2NjUyZmY5ZWQ2M2QiCi1QViA9ICIwLjIuNyIKK1NSQ1JFViA9ICI3NGExNjMyZjA3MjA4ODZkNWIzYjZjMjNlZThmY2Q2YzAzY2E3YWFjIgorUFYgPSAiMC4zLjEiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9QaXBlV2lyZS9waXBld2lyZSIKIApAQCAtMTgsMTMgKzE4LDIxIEBACiBpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBzeXN0ZW1kIG1hbnBhZ2VzCiAKIFBBQ0tBR0VDT05GSUcgPz89ICJcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSBcCi0gICAgZ3N0cmVhbWVyIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICdibHVleicsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8gc3lzdGVtZCB2dWxrYW4nLCBkKX0gXAorICAgIGphY2sgZ3N0cmVhbWVyIFwKICIKIAotUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItRHN5c3RlbWQ9dHJ1ZSwtRHN5c3RlbWQ9ZmFsc2Usc3lzdGVtZCIKLVBBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyXSA9ICItRGdzdHJlYW1lcj1lbmFibGVkLC1EZ3N0cmVhbWVyPWRpc2FibGVkLGdsaWItMi4wIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgorUEFDS0FHRUNPTkZJR1tibHVlel0gPSAiLURibHVlejU9dHJ1ZSwtRGJsdWV6NT1mYWxzZSxibHVlejUgc2JjIgorUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItRGphY2s9dHJ1ZSwtRGphY2s9ZmFsc2UsamFjayIKK1BBQ0tBR0VDT05GSUdbZ3N0cmVhbWVyXSA9ICItRGdzdHJlYW1lcj10cnVlLC1EZ3N0cmVhbWVyPWZhbHNlLGdsaWItMi4wIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgogUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLURtYW49dHJ1ZSwtRG1hbj1mYWxzZSxsaWJ4bWwtcGFyc2VyLXBlcmwtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItRHBpcGV3aXJlLXB1bHNlYXVkaW89dHJ1ZSwtRHBpcGV3aXJlLXB1bHNlYXVkaW89ZmFsc2UscHVsc2VhdWRpbyIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLURzeXN0ZW1kPXRydWUsLURzeXN0ZW1kPWZhbHNlLHN5c3RlbWQiCitQQUNLQUdFQ09ORklHW3Z1bGthbl0gPSAiLUR2dWxrYW49dHJ1ZSwtRHZ1bGthbj1mYWxzZSx2dWxrYW4tbG9hZGVyIgorCitMREZMQUdTX2FwcGVuZF9taXBzYXJjaCA9ICIgLWxhdG9taWMiCitMREZMQUdTX2FwcGVuZF94ODYgPSAiIC1sYXRvbWljIgogCiBQQUNLQUdFUyA9KyAiXAogICAgICR7UE59LXNwYS1wbHVnaW5zIFwKQEAgLTMzLDI4ICs0MSwzMSBAQAogICAgIGdzdHJlYW1lcjEuMC0ke1BOfSBcCiAgICAgbGliJHtQTn0gXAogICAgIGxpYiR7UE59LW1vZHVsZXMgXAorICAgIGxpYiR7UE59LWphY2sgXAogIgogCiBSREVQRU5EU19saWIke1BOfSArPSAibGliJHtQTn0tbW9kdWxlcyAke1BOfS1zcGEtcGx1Z2lucyIKIAogRklMRVNfJHtQTn0gPSAiXAogICAgICR7c3lzY29uZmRpcn0vcGlwZXdpcmUvcGlwZXdpcmUuY29uZiBcCisgICAgJHtiaW5kaXJ9L3B3LSogXAogICAgICR7YmluZGlyfS9waXBld2lyZSogXAogICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LyogXAogIgogRklMRVNfbGliJHtQTn0gPSAiXAogICAgICR7bGliZGlyfS9saWJwaXBld2lyZS0qLnNvLiogXAorICAgICR7bGliZGlyfS9saWJqYWNrLSouc28uKiBcCisgICAgJHtsaWJkaXJ9L2xpYnB1bHNlLSouc28uKiBcCiAiCiBGSUxFU19saWIke1BOfS1tb2R1bGVzID0gIlwKICAgICAke2xpYmRpcn0vcGlwZXdpcmUtKi8qIFwKICIKIEZJTEVTXyR7UE59LXNwYS1wbHVnaW5zID0gIlwKICAgICAke2JpbmRpcn0vc3BhLSogXAotICAgICR7bGliZGlyfS9zcGEvKiBcCisgICAgJHtsaWJkaXJ9L3NwYS0qLyogXAogIgogRklMRVNfJHtQTn0tYWxzYSA9ICJcCiAgICAgJHtsaWJkaXJ9L2Fsc2EtbGliLyogXAotICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1waXBld2lyZS5jb25mIFwKICIKIEZJTEVTX2dzdHJlYW1lcjEuMC0ke1BOfSA9ICJcCiAgICAgJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKiBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9ncHNkL2dwc2RfMy4xOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZF8zLjE5LmJiCmluZGV4IDlmZGJiZjIuLmY3NGViZGEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZF8zLjE5LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL2dwc2QvZ3BzZF8zLjE5LmJiCkBAIC0yLDcgKzIsNyBAQAogU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCiBMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTAxNzY0YzM1YWUzNGQ5NTIxOTQ0YmI2YWIzMTJhZjUzIgotREVQRU5EUyA9ICJkYnVzIG5jdXJzZXMgcHl0aG9uIHB5dGhvbjMgcHBzLXRvb2xzIgorREVQRU5EUyA9ICJkYnVzIG5jdXJzZXMgcHl0aG9uMyBwcHMtdG9vbHMiCiBQUk9WSURFUyA9ICJ2aXJ0dWFsL2dwc2QiCiAKIFNSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmd6IFwKQEAgLTEyLDcgKzEyLDcgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJiM2JmODg3MDY3OTRlYjhlNWYyYzI1NDNiZjdiYTg3YiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIyN2RkMjRkNDViMmFjNjliYWFiNzkzM2RhMmJmNmFlNWZiMGJlOTAxMzBmNjdlNzUzYzExMGEzNDc3MTU1ZjM5IgogCi1pbmhlcml0IHNjb25zIHVwZGF0ZS1yYy5kIHB5dGhvbi1kaXIgcHl0aG9ubmF0aXZlIHN5c3RlbWQgdXBkYXRlLWFsdGVybmF0aXZlcworaW5oZXJpdCBzY29ucyB1cGRhdGUtcmMuZCBweXRob24zLWRpciBweXRob24zbmF0aXZlIHN5c3RlbWQgdXBkYXRlLWFsdGVybmF0aXZlcwogCiBJTklUU0NSSVBUX1BBQ0tBR0VTID0gImdwc2QtY29uZiIKIElOSVRTQ1JJUFRfTkFNRSA9ICJncHNkIgpAQCAtODQsNyArODQsNyBAQAogICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L3N5c3RlbWQvJHtCUE59LnNvY2tldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8ke0JQTn0uc29ja2V0CiB9CiAKLVBBQ0tBR0VTID0rICJsaWJncHMgbGliZ3BzZCBweXRob24tcHlncHMgZ3BzZC11ZGV2IGdwc2QtY29uZiBncHNkLWdwc2N0bCBncHMtdXRpbHMiCitQQUNLQUdFUyA9KyAibGliZ3BzIGxpYmdwc2QgcHl0aG9uMy1weWdwcyBncHNkLXVkZXYgZ3BzZC1jb25mIGdwc2QtZ3BzY3RsIGdwcy11dGlscyIKIAogUlBST1ZJREVTXyR7UE59LWRiZyArPSAicHl0aG9uLXB5Z3BzLWRiZyIKIApAQCAtMTE0LDE3ICsxMTQsMTcgQEAKIFNVTU1BUllfZ3BzLXV0aWxzID0gIlV0aWxzIHVzZWQgZm9yIHNpbXVsYXRpbmcsIG1vbml0b3JpbmcsLi4uIGEgR1BTIgogIyBQeXRob24gZmlsZXMgYXJlIHJlcXVpcmVkIGZvciBncHMvZmFrZSwgcmVxdWlyZWQgZm9yIGdwc2Zha2UuCiBGSUxFU19ncHMtdXRpbHMgPSAiJHtiaW5kaXJ9LyogJHtsaWJkaXJ9L2dwcy8qLnB5ICR7bGliZGlyfS9ncHMvKi5zbyIKLVJERVBFTkRTX2dwcy11dGlscyA9ICJweXRob24tcHlncHMiCitSREVQRU5EU19ncHMtdXRpbHMgPSAicHl0aG9uMy1weWdwcyIKIAotU1VNTUFSWV9weXRob24tcHlncHMgPSAiUHl0aG9uIGJpbmRpbmdzIHRvIGdwc2QiCi1GSUxFU19weXRob24tcHlncHMgPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiAke2xpYmRpcn0vZ3BzLyoucHkgJHtsaWJkaXJ9LyouZWdnLWluZm8iCi1SREVQRU5EU19weXRob24tcHlncHMgPSAiIFwKLSAgICBweXRob24tY29yZSBcCi0gICAgcHl0aG9uLWlvIFwKLSAgICBweXRob24tdGhyZWFkaW5nIFwKLSAgICBweXRob24tdGVybWluYWwgXAorU1VNTUFSWV9weXRob24zLXB5Z3BzID0gIlB5dGhvbiBiaW5kaW5ncyB0byBncHNkIgorRklMRVNfcHl0aG9uMy1weWdwcyA9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qICR7bGliZGlyfS9ncHMvKi5weSAke2xpYmRpcn0vKi5lZ2ctaW5mbyIKK1JERVBFTkRTX3B5dGhvbjMtcHlncHMgPSAiIFwKKyAgICBweXRob24zLWNvcmUgXAorICAgIHB5dGhvbjMtaW8gXAorICAgIHB5dGhvbjMtdGhyZWFkaW5nIFwKKyAgICBweXRob24zLXRlcm1pbmFsIFwKICAgICBncHNkIFwKLSAgICBweXRob24tanNvbiIKKyAgICBweXRob24zLWpzb24iCiAKIFJQUk9WSURFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKIFJSRVBMQUNFU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL3Byb2ovcHJval82LjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1uYXZpZ2F0aW9uL3Byb2ovcHJval82LjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmEyNjlkMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9wcm9qL3Byb2pfNi4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIlBST0ouNCAtIENhcnRvZ3JhcGhpYyBQcm9qZWN0aW9ucyBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3RyYWMub3NnZW8ub3JnL3Byb2ovIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc0ZDlhYWVjNWZhMGNkNzM0MzQxZThjNGRjOTFiNjA4IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5vc2dlby5vcmcvJHtCUE59LyR7QlB9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1Y2RlNTU2NTQ1ODI4YmVhZmZiZTUwYjFiYjAzODQ4MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMzAwYzBmODcyZjYzMmFkN2Y4ZWI2MDcyNWVkYmYxNGYwZjhmNTJkYjc0MGEzYWIyM2U3Yjk0ZjFjZDIyYTUwIgotCi1ERVBFTkRTID0gInNxbGl0ZTMgc3FsaXRlMy1uYXRpdmUiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wcm9qIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vcHJvai9wcm9qXzcuMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLW5hdmlnYXRpb24vcHJvai9wcm9qXzcuMC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0Njc0MjQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtbmF2aWdhdGlvbi9wcm9qL3Byb2pfNy4wLjAuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJQUk9KLjQgLSBDYXJ0b2dyYXBoaWMgUHJvamVjdGlvbnMgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly90cmFjLm9zZ2VvLm9yZy9wcm9qLyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NGQ5YWFlYzVmYTBjZDczNDM0MWU4YzRkYzkxYjYwOCIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQub3NnZW8ub3JnLyR7QlBOfS8ke0JQfS50YXIuZ3oiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWUwZTE0YzFiZDJmOTQyOWIxYTI4OTk5MjQwMzA0YzAzNDJlZDczOWViYWVhM2Q0ZmY0NGM1ODViMTA5N2JlOCIKKworREVQRU5EUyA9ICJzcWxpdGUzIHNxbGl0ZTMtbmF0aXZlIHRpZmYiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQorCitQQUNLQUdFQ09ORklHID89ICJjdXJsIgorCitQQUNLQUdFQ09ORklHW2N1cmxdID0gIiwtLXdpdGhvdXQtY3VybCxjdXJsIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wcm9qIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXByaW50aW5nL2N1cHMvY3Vwcy1maWx0ZXJzXzEuMjYuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1wcmludGluZy9jdXBzL2N1cHMtZmlsdGVyc18xLjI2LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3NmVmMDkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXByaW50aW5nL2N1cHMvY3Vwcy1maWx0ZXJzXzEuMjYuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotaW5jbHVkZSBjdXBzLWZpbHRlcnMuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5NzAwOTU1OTZiZjJiOGNmZTkxYWM5MWMwYjUxMjk3YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMDY5YWVmMTM1ODUyMmYxOTAxYTY0NzQ5ZWM3NTNkMjhhMmQ2YTgzMjc1OGJjZTU4ZmZjZDcyMmIyOGMwZTY2IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXByaW50aW5nL2N1cHMvY3Vwcy1maWx0ZXJzXzEuMjcuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1wcmludGluZy9jdXBzL2N1cHMtZmlsdGVyc18xLjI3LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzVjNGE5MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1wcmludGluZy9jdXBzL2N1cHMtZmlsdGVyc18xLjI3LjIuYmIKQEAgLTAsMCArMSw0IEBACitpbmNsdWRlIGN1cHMtZmlsdGVycy5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gIjkwZWJjYWUzMWYyZWFiZDgwMjIzNjQwODY0NmIxZGQ5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE3NGEyYTVjOTE5YmY4OGM2M2NlZDY5MmEyMTcwYWRkNmMyY2Q3MGZmMDZjNDliY2VhMzJlOWNmNTY5NjA0OTIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2VjdXJpdHkvbm1hcC9maWxlcy8wMDAxLU1ha2UtbmRpZmYtc3VwcG9ydC1weXRob24zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L25tYXAvZmlsZXMvMDAwMS1NYWtlLW5kaWZmLXN1cHBvcnQtcHl0aG9uMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yY2ExOGIwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L25tYXAvZmlsZXMvMDAwMS1NYWtlLW5kaWZmLXN1cHBvcnQtcHl0aG9uMy5wYXRjaApAQCAtMCwwICsxLDE3MjAgQEAKK0Zyb20gYmJiZjQ3NGIyZWJkYmRhYzRkNTU3ZTMzNTEyMTBmM2ZlMjE3NWMzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmdsaSBZdSA8bWluZ2xpLnl1QHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDE0IEZlYiAyMDIwIDEwOjA5OjU1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2UgbmRpZmYgc3VwcG9ydCBweXRob24zCisKK0JhY2twb3J0IGEgcGF0Y2ggZnJvbSBkZWJpYW4gdG8gbWFrZSBuZGlmZiBzdXBwb3J0CitweXRob24zLgorCitSZWZlciB0byBodHRwczovL3NvdXJjZXMuZGViaWFuLm9yZy9kYXRhL21haW4vbi9ubWFwLzcuODArZGZzZzEtMi9kZWJpYW4vcGF0Y2hlcy8wMDA0LVB5dGhvbjMtcG9ydC1vZi1uZGlmZi5wYXRjaAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxtaW5nbGkueXVAd2luZHJpdmVyLmNvbT4KKy0tLQorIE1ha2VmaWxlLmluICAgICAgICAgICAgICAgICAgIHwgIDEyICstCisgbmRpZmYvbmRpZmYucHkgICAgICAgICAgICAgICAgfCA0OTUgKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLQorIG5kaWZmL25kaWZmdGVzdC5weSAgICAgICAgICAgIHwgIDk0ICsrKy0tLS0KKyBuZGlmZi9zY3JpcHRzL25kaWZmICAgICAgICAgICB8ICAxNCArLQorIG5kaWZmL3NldHVwLnB5ICAgICAgICAgICAgICAgIHwgIDM0ICstLQorIG5kaWZmL3Rlc3Qtc2NhbnMvYW5vbnltaXplLnB5IHwgIDE4ICstCisgNiBmaWxlcyBjaGFuZ2VkLCAzMzMgaW5zZXJ0aW9ucygrKSwgMzM0IGRlbGV0aW9ucygtKQorIG1vZGUgY2hhbmdlIDEwMDY0NCA9PiAxMDA3NTUgbmRpZmYvc2V0dXAucHkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IGVlZTg4NjMuLjMyZjg2YmEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0zNSw2ICszNSw3IEBAIFpFTk1BUERJUiA9IEBaRU5NQVBESVJACisgTkRJRkZESVIgPSBATkRJRkZESVJACisgTlBJTkdESVIgPSBATlBJTkdESVJACisgUFlUSE9OID0gQFBZVEhPTkAKKytQWVRIT04zID0gL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBERUZTID0gQERFRlNAIC1ETk1BUF9QTEFURk9STT1cIiQoTk1BUF9QTEFURk9STSlcIiAtRE5NQVBEQVRBRElSPVwiJChubWFwZGF0YWRpcilcIgorICMgV2l0aCBHQ0MsIGFkZCBleHRyYSBzZWN1cml0eSBjaGVja3MgdG8gc291cmNlIGNvZGUuCisgIyBodHRwOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLXBhdGNoZXMvMjAwNC0wOS9tc2cwMjA1NS5odG1sCitAQCAtMjYwLDcgKzI2MSw3IEBAIGNsZWFuLXplbm1hcDoKKyAJcm0gLWYgJChaRU5NQVBESVIpL3plbm1hcENvcmUvTmFtZS5weWMKKyAKKyBjbGVhbi1uZGlmZjoKKy0JLWNkICQoTkRJRkZESVIpICYmICQoUFlUSE9OKSBzZXR1cC5weSBjbGVhbiAtLWFsbAorKwktY2QgJChORElGRkRJUikgJiYgJChQWVRIT04zKSBzZXR1cC5weSBjbGVhbiAtLWFsbAorIAorIGNsZWFuLW5waW5nOgorIAktY2QgJChOUElOR0RJUikgJiYgJChNQUtFKSBjbGVhbgorQEAgLTM2OCw2ICszNjksNyBAQCB0ZXN0cy9jaGVja19kbnM6ICQoT0JKUykKKyAjIHRoaXMgYXMgdGhlIGxvY2F0aW9uIG9mIHRoZSBpbnRlcnByZXRlciB3aGVuZXZlciB3ZSdyZSBub3QgZG9pbmcgYQorICMgbG9jYWwgaW5zdGFsbGF0aW9uLgorIERFRkFVTFRfUFlUSE9OX1BBVEggPSAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrREVGQVVMVF9QWVRIT04zX1BBVEggPSAvdXNyL2Jpbi9lbnYgcHl0aG9uMworIAorIGJ1aWxkLXplbm1hcDogJChaRU5NQVBESVIpL3NldHVwLnB5ICQoWkVOTUFQRElSKS96ZW5tYXBDb3JlL1ZlcnNpb24ucHkKKyAjIFdoZW4gREVTVERJUiBpcyBkZWZpbmVkLCBhc3N1bWUgd2UncmUgYnVpbGRpbmcgYW4gZXhlY3V0YWJsZQorQEAgLTM4OCwxMyArMzkwLDEzIEBAIGluc3RhbGwtemVubWFwOiAkKFpFTk1BUERJUikvc2V0dXAucHkKKyAJbG4gLXNmIHplbm1hcCAkKERFU1RESVIpJChiaW5kaXIpL3hubWFwCisgCisgYnVpbGQtbmRpZmY6CistCWNkICQoTkRJRkZESVIpICYmICQoUFlUSE9OKSBzZXR1cC5weSBidWlsZCAkKGlmICQoREVTVERJUiksLS1leGVjdXRhYmxlICIkKERFRkFVTFRfUFlUSE9OX1BBVEgpIikKKysJY2QgJChORElGRkRJUikgJiYgJChQWVRIT04zKSBzZXR1cC5weSBidWlsZCAkKGlmICQoREVTVERJUiksLS1leGVjdXRhYmxlICIkKERFRkFVTFRfUFlUSE9OM19QQVRIKSIpCisgCisgYnVpbGQtbnBpbmc6ICQoTlBJTkdESVIpL01ha2VmaWxlIGJ1aWxkLW5iYXNlIGJ1aWxkLW5zb2NrIGJ1aWxkLW5ldHV0aWwgJChOUElOR0RJUikvbnBpbmcuaCBARE5FVF9CVUlMREAgQFBDQVBfQlVJTERACisgCUBjZCAkKE5QSU5HRElSKSAmJiAkKE1BS0UpCisgCisgaW5zdGFsbC1uZGlmZjoKKy0JY2QgJChORElGRkRJUikgJiYgJChQWVRIT04pIHNldHVwLnB5IGluc3RhbGwgLS1wcmVmaXggIiQocHJlZml4KSIgLS1pbnN0YWxsLWxpYj0iJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iICQoaWYgJChERVNURElSKSwtLXJvb3QgIiQoREVTVERJUikiKQorKwljZCAkKE5ESUZGRElSKSAmJiAkKFBZVEhPTjMpIHNldHVwLnB5IGluc3RhbGwgLS1wcmVmaXggIiQocHJlZml4KSIgLS1pbnN0YWxsLWxpYj0iJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iICQoaWYgJChERVNURElSKSwtLXJvb3QgIiQoREVTVERJUikiKQorIAorIE5TRV9GSUxFUyA9IHNjcmlwdHMvc2NyaXB0LmRiIHNjcmlwdHMvKi5uc2UKKyBOU0VfTElCX0xVQV9GSUxFUyA9IG5zZWxpYi8qLmx1YSBuc2VsaWIvKi5sdWFkb2MKK0BAIC00NDMsNyArNDQ1LDcgQEAgdW5pbnN0YWxsLXplbm1hcDoKKyAJcm0gLWYgJChERVNURElSKSQoYmluZGlyKS94bm1hcAorIAorIHVuaW5zdGFsbC1uZGlmZjoKKy0JY2QgJChORElGRkRJUikgJiYgJChQWVRIT04pIHNldHVwLnB5IHVuaW5zdGFsbAorKwljZCAkKE5ESUZGRElSKSAmJiAkKFBZVEhPTjMpIHNldHVwLnB5IHVuaW5zdGFsbAorIAorIHVuaW5zdGFsbC1uY2F0OgorIAlAY2QgJChOQ0FURElSKSAmJiAkKE1BS0UpIHVuaW5zdGFsbAorQEAgLTQ1OCw3ICs0NjAsNyBAQCBjaGVjay1uY2F0OgorIAlAY2QgJChOQ0FURElSKSAmJiAkKE1BS0UpIGNoZWNrCisgCisgY2hlY2stbmRpZmY6CistCUBjZCAkKE5ESUZGRElSKSAmJiAkKFBZVEhPTikgbmRpZmZ0ZXN0LnB5CisrCUBjZCAkKE5ESUZGRElSKSAmJiAkKFBZVEhPTjMpIG5kaWZmdGVzdC5weQorIAorIGNoZWNrLW5zb2NrOgorIAlAY2QgJChOU09DS0RJUikvc3JjICYmICQoTUFLRSkgY2hlY2sKK2RpZmYgLS1naXQgYS9uZGlmZi9uZGlmZi5weSBiL25kaWZmL25kaWZmLnB5CitpbmRleCAwNDMyNzNmLi5hYmJkMWM1IDEwMDc1NQorLS0tIGEvbmRpZmYvbmRpZmYucHkKKysrKyBiL25kaWZmL25kaWZmLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgCisgIyBOZGlmZgorICMKK0BAIC0yNiwxMSArMjYsMTEgQEAgeG1sLl9fcGF0aF9fID0gW3ggZm9yIHggaW4geG1sLl9fcGF0aF9fIGlmICJfeG1scGx1cyIgbm90IGluIHhdCisgaW1wb3J0IHhtbC5zYXgKKyBpbXBvcnQgeG1sLnNheC5zYXh1dGlscworIGltcG9ydCB4bWwuZG9tLm1pbmlkb20KKy1mcm9tIFN0cmluZ0lPIGltcG9ydCBTdHJpbmdJTworK2Zyb20gaW8gaW1wb3J0IFN0cmluZ0lPCisgCisgdmVyYm9zZSA9IEZhbHNlCisgCistTkRJRkZfWE1MX1ZFUlNJT04gPSB1IjEiCisrTkRJRkZfWE1MX1ZFUlNJT04gPSAiMSIKKyAKKyAKKyBjbGFzcyBPdmVycmlkZUVudGl0eVJlc29sdmVyKHhtbC5zYXguaGFuZGxlci5FbnRpdHlSZXNvbHZlcik6CitAQCAtNzgsMzUgKzc4LDM1IEBAIGNsYXNzIFNjYW4ob2JqZWN0KToKKyAgICAgZGVmIHdyaXRlX25tYXBydW5fb3BlbihzZWxmLCB3cml0ZXIpOgorICAgICAgICAgYXR0cnMgPSB7fQorICAgICAgICAgaWYgc2VsZi5zY2FubmVyIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgIGF0dHJzW3Uic2Nhbm5lciJdID0gc2VsZi5zY2FubmVyCisrICAgICAgICAgICAgYXR0cnNbInNjYW5uZXIiXSA9IHNlbGYuc2Nhbm5lcgorICAgICAgICAgaWYgc2VsZi5hcmdzIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgIGF0dHJzW3UiYXJncyJdID0gc2VsZi5hcmdzCisrICAgICAgICAgICAgYXR0cnNbImFyZ3MiXSA9IHNlbGYuYXJncworICAgICAgICAgaWYgc2VsZi5zdGFydF9kYXRlIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgIGF0dHJzW3Uic3RhcnQiXSA9ICIlZCIgJSB0aW1lLm1rdGltZShzZWxmLnN0YXJ0X2RhdGUudGltZXR1cGxlKCkpCistICAgICAgICAgICAgYXR0cnNbdSJzdGFydHN0ciJdID0gc2VsZi5zdGFydF9kYXRlLnN0cmZ0aW1lKAorKyAgICAgICAgICAgIGF0dHJzWyJzdGFydCJdID0gIiVkIiAlIHRpbWUubWt0aW1lKHNlbGYuc3RhcnRfZGF0ZS50aW1ldHVwbGUoKSkKKysgICAgICAgICAgICBhdHRyc1sic3RhcnRzdHIiXSA9IHNlbGYuc3RhcnRfZGF0ZS5zdHJmdGltZSgKKyAgICAgICAgICAgICAgICAgICAgICIlYSAlYiAlZCAlSDolTTolUyAlWSIpCisgICAgICAgICBpZiBzZWxmLnZlcnNpb24gaXMgbm90IE5vbmU6CistICAgICAgICAgICAgYXR0cnNbdSJ2ZXJzaW9uIl0gPSBzZWxmLnZlcnNpb24KKy0gICAgICAgIHdyaXRlci5zdGFydEVsZW1lbnQodSJubWFwcnVuIiwgYXR0cnMpCisrICAgICAgICAgICAgYXR0cnNbInZlcnNpb24iXSA9IHNlbGYudmVyc2lvbgorKyAgICAgICAgd3JpdGVyLnN0YXJ0RWxlbWVudCgibm1hcHJ1biIsIGF0dHJzKQorIAorICAgICBkZWYgd3JpdGVfbm1hcHJ1bl9jbG9zZShzZWxmLCB3cml0ZXIpOgorLSAgICAgICAgd3JpdGVyLmVuZEVsZW1lbnQodSJubWFwcnVuIikKKysgICAgICAgIHdyaXRlci5lbmRFbGVtZW50KCJubWFwcnVuIikKKyAKKyAgICAgZGVmIG5tYXBydW5fdG9fZG9tX2ZyYWdtZW50KHNlbGYsIGRvY3VtZW50KToKKyAgICAgICAgIGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKKy0gICAgICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUibm1hcHJ1biIpCisrICAgICAgICBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgibm1hcHJ1biIpCisgICAgICAgICBpZiBzZWxmLnNjYW5uZXIgaXMgbm90IE5vbmU6CistICAgICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUodSJzY2FubmVyIiwgc2VsZi5zY2FubmVyKQorKyAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCJzY2FubmVyIiwgc2VsZi5zY2FubmVyKQorICAgICAgICAgaWYgc2VsZi5hcmdzIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKHUiYXJncyIsIHNlbGYuYXJncykKKysgICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgiYXJncyIsIHNlbGYuYXJncykKKyAgICAgICAgIGlmIHNlbGYuc3RhcnRfZGF0ZSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgKKy0gICAgICAgICAgICAgICAgICAgIHUic3RhcnQiLCAiJWQiICUgdGltZS5ta3RpbWUoc2VsZi5zdGFydF9kYXRlLnRpbWV0dXBsZSgpKSkKKysgICAgICAgICAgICAgICAgICAgICJzdGFydCIsICIlZCIgJSB0aW1lLm1rdGltZShzZWxmLnN0YXJ0X2RhdGUudGltZXR1cGxlKCkpKQorICAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKAorLSAgICAgICAgICAgICAgICAgICAgdSJzdGFydHN0ciIsCisrICAgICAgICAgICAgICAgICAgICAic3RhcnRzdHIiLAorICAgICAgICAgICAgICAgICAgICAgc2VsZi5zdGFydF9kYXRlLnN0cmZ0aW1lKCIlYSAlYiAlZCAlSDolTTolUyAlWSIpKQorICAgICAgICAgaWYgc2VsZi52ZXJzaW9uIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKHUidmVyc2lvbiIsIHNlbGYudmVyc2lvbikKKysgICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgidmVyc2lvbiIsIHNlbGYudmVyc2lvbikKKyAgICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQoZWxlbSkKKyAgICAgICAgIHJldHVybiBmcmFnCisgCitAQCAtMTM2LDE3ICsxMzYsMTcgQEAgY2xhc3MgSG9zdChvYmplY3QpOgorIAorICAgICBkZWYgZm9ybWF0X25hbWUoc2VsZik6CisgICAgICAgICAiIiJSZXR1cm4gYSBodW1hbi1yZWFkYWJsZSBpZGVudGlmaWVyIGZvciB0aGlzIGhvc3QuIiIiCistICAgICAgICBhZGRyZXNzX3MgPSB1IiwgIi5qb2luKGEucyBmb3IgYSBpbiBzb3J0ZWQoc2VsZi5hZGRyZXNzZXMpKQorLSAgICAgICAgaG9zdG5hbWVfcyA9IHUiLCAiLmpvaW4oc29ydGVkKHNlbGYuaG9zdG5hbWVzKSkKKysgICAgICAgIGFkZHJlc3NfcyA9ICIsICIuam9pbihhLnMgZm9yIGEgaW4gc29ydGVkKHNlbGYuYWRkcmVzc2VzKSkKKysgICAgICAgIGhvc3RuYW1lX3MgPSAiLCAiLmpvaW4oc29ydGVkKHNlbGYuaG9zdG5hbWVzKSkKKyAgICAgICAgIGlmIGxlbihob3N0bmFtZV9zKSA+IDA6CisgICAgICAgICAgICAgaWYgbGVuKGFkZHJlc3NfcykgPiAwOgorLSAgICAgICAgICAgICAgICByZXR1cm4gdSIlcyAoJXMpIiAlIChob3N0bmFtZV9zLCBhZGRyZXNzX3MpCisrICAgICAgICAgICAgICAgIHJldHVybiAiJXMgKCVzKSIgJSAoaG9zdG5hbWVfcywgYWRkcmVzc19zKQorICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIHJldHVybiBob3N0bmFtZV9zCisgICAgICAgICBlbGlmIGxlbihhZGRyZXNzX3MpID4gMDoKKyAgICAgICAgICAgICByZXR1cm4gYWRkcmVzc19zCisgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIHJldHVybiB1IjxubyBuYW1lPiIKKysgICAgICAgICAgICByZXR1cm4gIjxubyBuYW1lPiIKKyAKKyAgICAgZGVmIGFkZF9wb3J0KHNlbGYsIHBvcnQpOgorICAgICAgICAgc2VsZi5wb3J0c1twb3J0LnNwZWNdID0gcG9ydAorQEAgLTE2Myw0NiArMTYzLDQ2IEBAIGNsYXNzIEhvc3Qob2JqZWN0KToKKyAgICAgICAgIHJldHVybiBzdGF0ZSBpcyBOb25lIG9yIHN0YXRlIGluIHNlbGYuZXh0cmFwb3J0cworIAorICAgICBkZWYgZXh0cmFwb3J0c19zdHJpbmcoc2VsZik6CistICAgICAgICBsaXN0ID0gWyhjb3VudCwgc3RhdGUpIGZvciAoc3RhdGUsIGNvdW50KSBpbiBzZWxmLmV4dHJhcG9ydHMuaXRlbXMoKV0KKysgICAgICAgIGxvY2FsbGlzdCA9IFsoY291bnQsIHN0YXRlKSBmb3IgKHN0YXRlLCBjb3VudCkgaW4gbGlzdChzZWxmLmV4dHJhcG9ydHMuaXRlbXMoKSldCisgICAgICAgICAjIFJldmVyc2Utc29ydCBieSBjb3VudC4KKy0gICAgICAgIGxpc3Quc29ydChyZXZlcnNlPVRydWUpCistICAgICAgICByZXR1cm4gdSIsICIuam9pbigKKy0gICAgICAgICAgICAgICAgW3UiJWQgJXMgcG9ydHMiICUgKGNvdW50LCBzdGF0ZSkgZm9yIChjb3VudCwgc3RhdGUpIGluIGxpc3RdKQorKyAgICAgICAgbG9jYWxsaXN0LnNvcnQocmV2ZXJzZT1UcnVlKQorKyAgICAgICAgcmV0dXJuICIsICIuam9pbigKKysgICAgICAgICAgICAgICAgWyIlZCAlcyBwb3J0cyIgJSAoY291bnQsIHN0YXRlKSBmb3IgKGNvdW50LCBzdGF0ZSkgaW4gbG9jYWxsaXN0XSkKKyAKKyAgICAgZGVmIHN0YXRlX3RvX2RvbV9mcmFnbWVudChzZWxmLCBkb2N1bWVudCk6CisgICAgICAgICBmcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpCisgICAgICAgICBpZiBzZWxmLnN0YXRlIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUic3RhdHVzIikKKy0gICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSh1InN0YXRlIiwgc2VsZi5zdGF0ZSkKKysgICAgICAgICAgICBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic3RhdHVzIikKKysgICAgICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgic3RhdGUiLCBzZWxmLnN0YXRlKQorICAgICAgICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQoZWxlbSkKKyAgICAgICAgIHJldHVybiBmcmFnCisgCisgICAgIGRlZiBob3N0bmFtZV90b19kb21fZnJhZ21lbnQoc2VsZiwgZG9jdW1lbnQsIGhvc3RuYW1lKToKKyAgICAgICAgIGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKKy0gICAgICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUiaG9zdG5hbWUiKQorLSAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUodSJuYW1lIiwgaG9zdG5hbWUpCisrICAgICAgICBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaG9zdG5hbWUiKQorKyAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCBob3N0bmFtZSkKKyAgICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQoZWxlbSkKKyAgICAgICAgIHJldHVybiBmcmFnCisgCisgICAgIGRlZiBleHRyYXBvcnRzX3RvX2RvbV9mcmFnbWVudChzZWxmLCBkb2N1bWVudCk6CisgICAgICAgICBmcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpCistICAgICAgICBmb3Igc3RhdGUsIGNvdW50IGluIHNlbGYuZXh0cmFwb3J0cy5pdGVtcygpOgorLSAgICAgICAgICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUiZXh0cmFwb3J0cyIpCistICAgICAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUodSJzdGF0ZSIsIHN0YXRlKQorLSAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKHUiY291bnQiLCB1bmljb2RlKGNvdW50KSkKKysgICAgICAgIGZvciBzdGF0ZSwgY291bnQgaW4gbGlzdChzZWxmLmV4dHJhcG9ydHMuaXRlbXMoKSk6CisrICAgICAgICAgICAgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImV4dHJhcG9ydHMiKQorKyAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCJzdGF0ZSIsIHN0YXRlKQorKyAgICAgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCJjb3VudCIsIHN0cihjb3VudCkpCisgICAgICAgICAgICAgZnJhZy5hcHBlbmRDaGlsZChlbGVtKQorICAgICAgICAgcmV0dXJuIGZyYWcKKyAKKyAgICAgZGVmIG9zX3RvX2RvbV9mcmFnbWVudChzZWxmLCBkb2N1bWVudCwgb3MpOgorICAgICAgICAgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQorLSAgICAgICAgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJvc21hdGNoIikKKy0gICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKHUibmFtZSIsIG9zKQorKyAgICAgICAgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9zbWF0Y2giKQorKyAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoIm5hbWUiLCBvcykKKyAgICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQoZWxlbSkKKyAgICAgICAgIHJldHVybiBmcmFnCisgCisgICAgIGRlZiB0b19kb21fZnJhZ21lbnQoc2VsZiwgZG9jdW1lbnQpOgorICAgICAgICAgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQorLSAgICAgICAgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJob3N0IikKKysgICAgICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJob3N0IikKKyAKKyAgICAgICAgIGlmIHNlbGYuc3RhdGUgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgZWxlbS5hcHBlbmRDaGlsZChzZWxmLnN0YXRlX3RvX2RvbV9mcmFnbWVudChkb2N1bWVudCkpCitAQCAtMjExLDEzICsyMTEsMTMgQEAgY2xhc3MgSG9zdChvYmplY3QpOgorICAgICAgICAgICAgIGVsZW0uYXBwZW5kQ2hpbGQoYWRkci50b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorIAorICAgICAgICAgaWYgbGVuKHNlbGYuaG9zdG5hbWVzKSA+IDA6CistICAgICAgICAgICAgaG9zdG5hbWVzX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUiaG9zdG5hbWVzIikKKysgICAgICAgICAgICBob3N0bmFtZXNfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhvc3RuYW1lcyIpCisgICAgICAgICAgICAgZm9yIGhvc3RuYW1lIGluIHNlbGYuaG9zdG5hbWVzOgorICAgICAgICAgICAgICAgICBob3N0bmFtZXNfZWxlbS5hcHBlbmRDaGlsZCgKKyAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmhvc3RuYW1lX3RvX2RvbV9mcmFnbWVudChkb2N1bWVudCwgaG9zdG5hbWUpKQorICAgICAgICAgICAgIGVsZW0uYXBwZW5kQ2hpbGQoaG9zdG5hbWVzX2VsZW0pCisgCistICAgICAgICBwb3J0c19lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1InBvcnRzIikKKysgICAgICAgIHBvcnRzX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwb3J0cyIpCisgICAgICAgICBwb3J0c19lbGVtLmFwcGVuZENoaWxkKHNlbGYuZXh0cmFwb3J0c190b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgZm9yIHBvcnQgaW4gc29ydGVkKHNlbGYucG9ydHMudmFsdWVzKCkpOgorICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmlzX2V4dHJhcG9ydHMocG9ydC5zdGF0ZSk6CitAQCAtMjI2LDEzICsyMjYsMTMgQEAgY2xhc3MgSG9zdChvYmplY3QpOgorICAgICAgICAgICAgIGVsZW0uYXBwZW5kQ2hpbGQocG9ydHNfZWxlbSkKKyAKKyAgICAgICAgIGlmIGxlbihzZWxmLm9zKSA+IDA6CistICAgICAgICAgICAgb3NfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJvcyIpCisrICAgICAgICAgICAgb3NfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoIm9zIikKKyAgICAgICAgICAgICBmb3Igb3MgaW4gc2VsZi5vczoKKyAgICAgICAgICAgICAgICAgb3NfZWxlbS5hcHBlbmRDaGlsZChzZWxmLm9zX3RvX2RvbV9mcmFnbWVudChkb2N1bWVudCwgb3MpKQorICAgICAgICAgICAgIGVsZW0uYXBwZW5kQ2hpbGQob3NfZWxlbSkKKyAKKyAgICAgICAgIGlmIGxlbihzZWxmLnNjcmlwdF9yZXN1bHRzKSA+IDA6CistICAgICAgICAgICAgaG9zdHNjcmlwdF9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1Imhvc3RzY3JpcHQiKQorKyAgICAgICAgICAgIGhvc3RzY3JpcHRfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhvc3RzY3JpcHQiKQorICAgICAgICAgICAgIGZvciBzciBpbiBzZWxmLnNjcmlwdF9yZXN1bHRzOgorICAgICAgICAgICAgICAgICBob3N0c2NyaXB0X2VsZW0uYXBwZW5kQ2hpbGQoc3IudG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKyAgICAgICAgICAgICBlbGVtLmFwcGVuZENoaWxkKGhvc3RzY3JpcHRfZWxlbSkKK0BAIC0yNDYsNyArMjQ2LDcgQEAgY2xhc3MgQWRkcmVzcyhvYmplY3QpOgorICAgICAgICAgc2VsZi5zID0gcworIAorICAgICBkZWYgX19lcV9fKHNlbGYsIG90aGVyKToKKy0gICAgICAgIHJldHVybiBzZWxmLl9fY21wX18ob3RoZXIpID09IDAKKysgICAgICAgIHJldHVybiBzZWxmLnNvcnRfa2V5KCkgPT0gb3RoZXIuc29ydF9rZXkoKQorIAorICAgICBkZWYgX19uZV9fKHNlbGYsIG90aGVyKToKKyAgICAgICAgIHJldHVybiBub3Qgc2VsZi5fX2VxX18ob3RoZXIpCitAQCAtMjU0LDggKzI1NCw4IEBAIGNsYXNzIEFkZHJlc3Mob2JqZWN0KToKKyAgICAgZGVmIF9faGFzaF9fKHNlbGYpOgorICAgICAgICAgcmV0dXJuIGhhc2goc2VsZi5zb3J0X2tleSgpKQorIAorLSAgICBkZWYgX19jbXBfXyhzZWxmLCBvdGhlcik6CistICAgICAgICByZXR1cm4gY21wKHNlbGYuc29ydF9rZXkoKSwgb3RoZXIuc29ydF9rZXkoKSkKKysgICAgZGVmIF9fbHRfXyhzZWxmLCBvdGhlcik6CisrICAgICAgICByZXR1cm4gc2VsZi5zb3J0X2tleSgpIDwgb3RoZXIuc29ydF9rZXkoKQorIAorICAgICBkZWYgX19zdHJfXyhzZWxmKToKKyAgICAgICAgIHJldHVybiBzdHIoc2VsZi5zKQorQEAgLTI2NCwyMSArMjY0LDIxIEBAIGNsYXNzIEFkZHJlc3Mob2JqZWN0KToKKyAgICAgICAgIHJldHVybiBzZWxmLnMKKyAKKyAgICAgZGVmIG5ldyh0eXBlLCBzKToKKy0gICAgICAgIGlmIHR5cGUgPT0gdSJpcHY0IjoKKysgICAgICAgIGlmIHR5cGUgPT0gImlwdjQiOgorICAgICAgICAgICAgIHJldHVybiBJUHY0QWRkcmVzcyhzKQorLSAgICAgICAgZWxpZiB0eXBlID09IHUiaXB2NiI6CisrICAgICAgICBlbGlmIHR5cGUgPT0gImlwdjYiOgorICAgICAgICAgICAgIHJldHVybiBJUHY2QWRkcmVzcyhzKQorLSAgICAgICAgZWxpZiB0eXBlID09IHUibWFjIjoKKysgICAgICAgIGVsaWYgdHlwZSA9PSAibWFjIjoKKyAgICAgICAgICAgICByZXR1cm4gTUFDQWRkcmVzcyhzKQorICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKHUiVW5rbm93biBhZGRyZXNzIHR5cGUgJXMuIiAlIHR5cGUpCisrICAgICAgICAgICAgcmFpc2UgVmFsdWVFcnJvcigiVW5rbm93biBhZGRyZXNzIHR5cGUgJXMuIiAlIHR5cGUpCisgICAgIG5ldyA9IHN0YXRpY21ldGhvZChuZXcpCisgCisgICAgIGRlZiB0b19kb21fZnJhZ21lbnQoc2VsZiwgZG9jdW1lbnQpOgorICAgICAgICAgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQorLSAgICAgICAgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJhZGRyZXNzIikKKy0gICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKHUiYWRkciIsIHNlbGYucykKKy0gICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKHUiYWRkcnR5cGUiLCBzZWxmLnR5cGUpCisrICAgICAgICBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYWRkcmVzcyIpCisrICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgiYWRkciIsIHNlbGYucykKKysgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCJhZGRydHlwZSIsIHNlbGYudHlwZSkKKyAgICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQoZWxlbSkKKyAgICAgICAgIHJldHVybiBmcmFnCisgCitAQCAtMjg3LDIxICsyODcsMjEgQEAgY2xhc3MgQWRkcmVzcyhvYmplY3QpOgorIAorIAorIGNsYXNzIElQdjRBZGRyZXNzKEFkZHJlc3MpOgorLSAgICB0eXBlID0gcHJvcGVydHkobGFtYmRhIHNlbGY6IHUiaXB2NCIpCisrICAgIHR5cGUgPSBwcm9wZXJ0eShsYW1iZGEgc2VsZjogImlwdjQiKQorIAorICAgICBkZWYgc29ydF9rZXkoc2VsZik6CisgICAgICAgICByZXR1cm4gKDAsIHNlbGYucykKKyAKKyAKKyBjbGFzcyBJUHY2QWRkcmVzcyhBZGRyZXNzKToKKy0gICAgdHlwZSA9IHByb3BlcnR5KGxhbWJkYSBzZWxmOiB1ImlwdjYiKQorKyAgICB0eXBlID0gcHJvcGVydHkobGFtYmRhIHNlbGY6ICJpcHY2IikKKyAKKyAgICAgZGVmIHNvcnRfa2V5KHNlbGYpOgorICAgICAgICAgcmV0dXJuICgxLCBzZWxmLnMpCisgCisgCisgY2xhc3MgTUFDQWRkcmVzcyhBZGRyZXNzKToKKy0gICAgdHlwZSA9IHByb3BlcnR5KGxhbWJkYSBzZWxmOiB1Im1hYyIpCisrICAgIHR5cGUgPSBwcm9wZXJ0eShsYW1iZGEgc2VsZjogIm1hYyIpCisgCisgICAgIGRlZiBzb3J0X2tleShzZWxmKToKKyAgICAgICAgIHJldHVybiAoMiwgc2VsZi5zKQorQEAgLTMyMCwyOCArMzIwLDI1IEBAIGNsYXNzIFBvcnQob2JqZWN0KToKKyAKKyAgICAgZGVmIHN0YXRlX3N0cmluZyhzZWxmKToKKyAgICAgICAgIGlmIHNlbGYuc3RhdGUgaXMgTm9uZToKKy0gICAgICAgICAgICByZXR1cm4gdSJ1bmtub3duIgorKyAgICAgICAgICAgIHJldHVybiAidW5rbm93biIKKyAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgcmV0dXJuIHVuaWNvZGUoc2VsZi5zdGF0ZSkKKysgICAgICAgICAgICByZXR1cm4gc3RyKHNlbGYuc3RhdGUpCisgCisgICAgIGRlZiBzcGVjX3N0cmluZyhzZWxmKToKKy0gICAgICAgIHJldHVybiB1IiVkLyVzIiAlIHNlbGYuc3BlYworKyAgICAgICAgcmV0dXJuICIlZC8lcyIgJSBzZWxmLnNwZWMKKyAKKy0gICAgZGVmIF9fY21wX18oc2VsZiwgb3RoZXIpOgorLSAgICAgICAgZCA9IGNtcChzZWxmLnNwZWMsIG90aGVyLnNwZWMpCistICAgICAgICBpZiBkICE9IDA6CistICAgICAgICAgICAgcmV0dXJuIGQKKy0gICAgICAgIHJldHVybiBjbXAoKHNlbGYuc3BlYywgc2VsZi5zZXJ2aWNlLCBzZWxmLnNjcmlwdF9yZXN1bHRzKSwKKy0gICAgICAgICAgICAob3RoZXIuc3BlYywgb3RoZXIuc2VydmljZSwgb3RoZXIuc2NyaXB0X3Jlc3VsdHMpKQorKyAgICBkZWYgX19sdF9fKHNlbGYsIG90aGVyKToKKysgICAgICAgIHJldHVybiAoc2VsZi5zcGVjLCBzZWxmLnNlcnZpY2UsIHNlbGYuc2NyaXB0X3Jlc3VsdHMpIDwgKAorKyAgICAgICAgICAgIG90aGVyLnNwZWMsIG90aGVyLnNlcnZpY2UsIG90aGVyLnNjcmlwdF9yZXN1bHRzKQorIAorICAgICBkZWYgdG9fZG9tX2ZyYWdtZW50KHNlbGYsIGRvY3VtZW50KToKKyAgICAgICAgIGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKKy0gICAgICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUicG9ydCIpCistICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSh1InBvcnRpZCIsIHVuaWNvZGUoc2VsZi5zcGVjWzBdKSkKKy0gICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKHUicHJvdG9jb2wiLCBzZWxmLnNwZWNbMV0pCisrICAgICAgICBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicG9ydCIpCisrICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgicG9ydGlkIiwgc3RyKHNlbGYuc3BlY1swXSkpCisrICAgICAgICBlbGVtLnNldEF0dHJpYnV0ZSgicHJvdG9jb2wiLCBzZWxmLnNwZWNbMV0pCisgICAgICAgICBpZiBzZWxmLnN0YXRlIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgIHN0YXRlX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUic3RhdGUiKQorLSAgICAgICAgICAgIHN0YXRlX2VsZW0uc2V0QXR0cmlidXRlKHUic3RhdGUiLCBzZWxmLnN0YXRlKQorKyAgICAgICAgICAgIHN0YXRlX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzdGF0ZSIpCisrICAgICAgICAgICAgc3RhdGVfZWxlbS5zZXRBdHRyaWJ1dGUoInN0YXRlIiwgc2VsZi5zdGF0ZSkKKyAgICAgICAgICAgICBlbGVtLmFwcGVuZENoaWxkKHN0YXRlX2VsZW0pCisgICAgICAgICBlbGVtLmFwcGVuZENoaWxkKHNlbGYuc2VydmljZS50b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgZm9yIHNyIGluIHNlbGYuc2NyaXB0X3Jlc3VsdHM6CitAQCAtMzg1LDcgKzM4Miw3IEBAIGNsYXNzIFNlcnZpY2Uob2JqZWN0KToKKyAgICAgICAgIGlmIGxlbihwYXJ0cykgPT0gMDoKKyAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICByZXR1cm4gdSIvIi5qb2luKHBhcnRzKQorKyAgICAgICAgICAgIHJldHVybiAiLyIuam9pbihwYXJ0cykKKyAKKyAgICAgZGVmIHZlcnNpb25fc3RyaW5nKHNlbGYpOgorICAgICAgICAgIiIiR2V0IGEgc3RyaW5nIGxpa2UgaW4gdGhlIFZFUlNJT04gY29sdW1uIG9mIE5tYXAgb3V0cHV0LiIiIgorQEAgLTM5NSwxNyArMzkyLDE3IEBAIGNsYXNzIFNlcnZpY2Uob2JqZWN0KToKKyAgICAgICAgIGlmIHNlbGYudmVyc2lvbiBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoc2VsZi52ZXJzaW9uKQorICAgICAgICAgaWYgc2VsZi5leHRyYWluZm8gaXMgbm90IE5vbmU6CistICAgICAgICAgICAgcGFydHMuYXBwZW5kKHUiKCVzKSIgJSBzZWxmLmV4dHJhaW5mbykKKysgICAgICAgICAgICBwYXJ0cy5hcHBlbmQoIiglcykiICUgc2VsZi5leHRyYWluZm8pCisgCisgICAgICAgICBpZiBsZW4ocGFydHMpID09IDA6CisgICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgcmV0dXJuIHUiICIuam9pbihwYXJ0cykKKysgICAgICAgICAgICByZXR1cm4gIiAiLmpvaW4ocGFydHMpCisgCisgICAgIGRlZiB0b19kb21fZnJhZ21lbnQoc2VsZiwgZG9jdW1lbnQpOgorICAgICAgICAgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQorLSAgICAgICAgZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJzZXJ2aWNlIikKKy0gICAgICAgIGZvciBhdHRyIGluICh1Im5hbWUiLCB1InByb2R1Y3QiLCB1InZlcnNpb24iLCB1ImV4dHJhaW5mbyIsIHUidHVubmVsIik6CisrICAgICAgICBlbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgic2VydmljZSIpCisrICAgICAgICBmb3IgYXR0ciBpbiAoIm5hbWUiLCAicHJvZHVjdCIsICJ2ZXJzaW9uIiwgImV4dHJhaW5mbyIsICJ0dW5uZWwiKToKKyAgICAgICAgICAgICB2ID0gZ2V0YXR0cihzZWxmLCBhdHRyKQorICAgICAgICAgICAgIGlmIHYgaXMgTm9uZToKKyAgICAgICAgICAgICAgICAgY29udGludWUKK0BAIC00MzUsNTMgKzQzMiw1MyBAQCBjbGFzcyBTY3JpcHRSZXN1bHQob2JqZWN0KToKKyAgICAgICAgIHJlc3VsdCA9IFtdCisgICAgICAgICBsaW5lcyA9IHNlbGYub3V0cHV0LnNwbGl0bGluZXMoKQorICAgICAgICAgaWYgbGVuKGxpbmVzKSA+IDA6CistICAgICAgICAgICAgbGluZXNbMF0gPSBzZWxmLmlkICsgdSI6ICIgKyBsaW5lc1swXQorKyAgICAgICAgICAgIGxpbmVzWzBdID0gc2VsZi5pZCArICI6ICIgKyBsaW5lc1swXQorICAgICAgICAgZm9yIGxpbmUgaW4gbGluZXNbOi0xXToKKy0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHUifCAgIiArIGxpbmUpCisrICAgICAgICAgICAgcmVzdWx0LmFwcGVuZCgifCAgIiArIGxpbmUpCisgICAgICAgICBpZiBsZW4obGluZXMpID4gMDoKKy0gICAgICAgICAgICByZXN1bHQuYXBwZW5kKHUifF8gIiArIGxpbmVzWy0xXSkKKysgICAgICAgICAgICByZXN1bHQuYXBwZW5kKCJ8XyAiICsgbGluZXNbLTFdKQorICAgICAgICAgcmV0dXJuIHJlc3VsdAorIAorICAgICBkZWYgdG9fZG9tX2ZyYWdtZW50KHNlbGYsIGRvY3VtZW50KToKKyAgICAgICAgIGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKKy0gICAgICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUic2NyaXB0IikKKy0gICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKHUiaWQiLCBzZWxmLmlkKQorLSAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUodSJvdXRwdXQiLCBzZWxmLm91dHB1dCkKKysgICAgICAgIGVsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJzY3JpcHQiKQorKyAgICAgICAgZWxlbS5zZXRBdHRyaWJ1dGUoImlkIiwgc2VsZi5pZCkKKysgICAgICAgIGVsZW0uc2V0QXR0cmlidXRlKCJvdXRwdXQiLCBzZWxmLm91dHB1dCkKKyAgICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQoZWxlbSkKKyAgICAgICAgIHJldHVybiBmcmFnCisgCisgCisgZGVmIGZvcm1hdF9iYW5uZXIoc2Nhbik6CisgICAgICIiIkZvcm1hdCBhIHN0YXJ0dXAgYmFubmVyIG1vcmUgb3IgbGVzcyBsaWtlIE5tYXAgZG9lcy4iIiIKKy0gICAgc2Nhbm5lciA9IHUiTm1hcCIKKy0gICAgaWYgc2Nhbi5zY2FubmVyIGlzIG5vdCBOb25lIGFuZCBzY2FuLnNjYW5uZXIgIT0gdSJubWFwIjoKKysgICAgc2Nhbm5lciA9ICJObWFwIgorKyAgICBpZiBzY2FuLnNjYW5uZXIgaXMgbm90IE5vbmUgYW5kIHNjYW4uc2Nhbm5lciAhPSAibm1hcCI6CisgICAgICAgICBzY2FubmVyID0gc2Nhbi5zY2FubmVyCisgICAgIHBhcnRzID0gW3NjYW5uZXJdCisgICAgIGlmIHNjYW4udmVyc2lvbiBpcyBub3QgTm9uZToKKyAgICAgICAgIHBhcnRzLmFwcGVuZChzY2FuLnZlcnNpb24pCistICAgIHBhcnRzLmFwcGVuZCh1InNjYW4iKQorKyAgICBwYXJ0cy5hcHBlbmQoInNjYW4iKQorICAgICBpZiBzY2FuLnN0YXJ0X2RhdGUgaXMgbm90IE5vbmU6CistICAgICAgICBwYXJ0cy5hcHBlbmQodSJpbml0aWF0ZWQgJXMiICUgc2Nhbi5zdGFydF9kYXRlLnN0cmZ0aW1lKAorKyAgICAgICAgcGFydHMuYXBwZW5kKCJpbml0aWF0ZWQgJXMiICUgc2Nhbi5zdGFydF9kYXRlLnN0cmZ0aW1lKAorICAgICAgICAgICAgICIlYSAlYiAlZCAlSDolTTolUyAlWSIpKQorICAgICBpZiBzY2FuLmFyZ3MgaXMgbm90IE5vbmU6CistICAgICAgICBwYXJ0cy5hcHBlbmQodSJhczogJXMiICUgc2Nhbi5hcmdzKQorLSAgICByZXR1cm4gdSIgIi5qb2luKHBhcnRzKQorKyAgICAgICAgcGFydHMuYXBwZW5kKCJhczogJXMiICUgc2Nhbi5hcmdzKQorKyAgICByZXR1cm4gIiAiLmpvaW4ocGFydHMpCisgCisgCisgZGVmIHByaW50X3NjcmlwdF9yZXN1bHRfZGlmZnNfdGV4dCh0aXRsZSwgc2NyaXB0X3Jlc3VsdHNfYSwgc2NyaXB0X3Jlc3VsdHNfYiwKKyAgICAgICAgIHNjcmlwdF9yZXN1bHRfZGlmZnMsIGY9c3lzLnN0ZG91dCk6CistICAgIHRhYmxlID0gVGFibGUodSIqIikKKysgICAgdGFibGUgPSBUYWJsZSgiKiIpCisgICAgIGZvciBzcl9kaWZmIGluIHNjcmlwdF9yZXN1bHRfZGlmZnM6CisgICAgICAgICBzcl9kaWZmLmFwcGVuZF90b19wb3J0X3RhYmxlKHRhYmxlKQorICAgICBpZiBsZW4odGFibGUpID4gMDoKKy0gICAgICAgIHByaW50ID4+IGYKKysgICAgICAgIHByaW50KGZpbGU9ZikKKyAgICAgICAgIGlmIGxlbihzY3JpcHRfcmVzdWx0c19iKSA9PSAwOgorLSAgICAgICAgICAgIHByaW50ID4+IGYsIHUiLSVzOiIgJSB0aXRsZQorKyAgICAgICAgICAgIHByaW50KCItJXM6IiAlIHRpdGxlLCBmaWxlPWYpCisgICAgICAgICBlbGlmIGxlbihzY3JpcHRfcmVzdWx0c19hKSA9PSAwOgorLSAgICAgICAgICAgIHByaW50ID4+IGYsIHUiKyVzOiIgJSB0aXRsZQorKyAgICAgICAgICAgIHByaW50KCIrJXM6IiAlIHRpdGxlLCBmaWxlPWYpCisgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIHByaW50ID4+IGYsIHUiICVzOiIgJSB0aXRsZQorLSAgICAgICAgcHJpbnQgPj4gZiwgdGFibGUKKysgICAgICAgICAgICBwcmludCgiICVzOiIgJSB0aXRsZSwgZmlsZT1mKQorKyAgICAgICAgcHJpbnQodGFibGUsIGZpbGU9ZikKKyAKKyAKKyBkZWYgc2NyaXB0X3Jlc3VsdF9kaWZmc190b19kb21fZnJhZ21lbnQoZWxlbSwgc2NyaXB0X3Jlc3VsdHNfYSwKK0BAIC00ODksMTMgKzQ4NiwxMyBAQCBkZWYgc2NyaXB0X3Jlc3VsdF9kaWZmc190b19kb21fZnJhZ21lbnQoZWxlbSwgc2NyaXB0X3Jlc3VsdHNfYSwKKyAgICAgaWYgbGVuKHNjcmlwdF9yZXN1bHRzX2EpID09IDAgYW5kIGxlbihzY3JpcHRfcmVzdWx0c19iKSA9PSAwOgorICAgICAgICAgcmV0dXJuIGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQorICAgICBlbGlmIGxlbihzY3JpcHRfcmVzdWx0c19iKSA9PSAwOgorLSAgICAgICAgYV9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1ImEiKQorKyAgICAgICAgYV9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpCisgICAgICAgICBmb3Igc3IgaW4gc2NyaXB0X3Jlc3VsdHNfYToKKyAgICAgICAgICAgICBlbGVtLmFwcGVuZENoaWxkKHNyLnRvX2RvbV9mcmFnbWVudChkb2N1bWVudCkpCisgICAgICAgICBhX2VsZW0uYXBwZW5kQ2hpbGQoZWxlbSkKKyAgICAgICAgIHJldHVybiBhX2VsZW0KKyAgICAgZWxpZiBsZW4oc2NyaXB0X3Jlc3VsdHNfYSkgPT0gMDoKKy0gICAgICAgIGJfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJiIikKKysgICAgICAgIGJfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImIiKQorICAgICAgICAgZm9yIHNyIGluIHNjcmlwdF9yZXN1bHRzX2I6CisgICAgICAgICAgICAgZWxlbS5hcHBlbmRDaGlsZChzci50b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgYl9lbGVtLmFwcGVuZENoaWxkKGVsZW0pCitAQCAtNTgxLDEwICs1NzgsMTAgQEAgY2xhc3MgU2NhbkRpZmZUZXh0KFNjYW5EaWZmKToKKyAgICAgICAgIGJhbm5lcl9hID0gZm9ybWF0X2Jhbm5lcihzZWxmLnNjYW5fYSkKKyAgICAgICAgIGJhbm5lcl9iID0gZm9ybWF0X2Jhbm5lcihzZWxmLnNjYW5fYikKKyAgICAgICAgIGlmIGJhbm5lcl9hICE9IGJhbm5lcl9iOgorLSAgICAgICAgICAgIHByaW50ID4+IHNlbGYuZiwgdSItJXMiICUgYmFubmVyX2EKKy0gICAgICAgICAgICBwcmludCA+PiBzZWxmLmYsIHUiKyVzIiAlIGJhbm5lcl9iCisrICAgICAgICAgICAgcHJpbnQoIi0lcyIgJSBiYW5uZXJfYSwgZmlsZT1zZWxmLmYpCisrICAgICAgICAgICAgcHJpbnQoIislcyIgJSBiYW5uZXJfYiwgZmlsZT1zZWxmLmYpCisgICAgICAgICBlbGlmIHZlcmJvc2U6CistICAgICAgICAgICAgcHJpbnQgPj4gc2VsZi5mLCB1IiAlcyIgJSBiYW5uZXJfYQorKyAgICAgICAgICAgIHByaW50KCIgJXMiICUgYmFubmVyX2EsIGZpbGU9c2VsZi5mKQorIAorICAgICBkZWYgb3V0cHV0X3ByZV9zY3JpcHRzKHNlbGYsIHByZV9zY3JpcHRfcmVzdWx0X2RpZmZzKToKKyAgICAgICAgIHByaW50X3NjcmlwdF9yZXN1bHRfZGlmZnNfdGV4dCgiUHJlLXNjYW4gc2NyaXB0IHJlc3VsdHMiLAorQEAgLTU5Nyw3ICs1OTQsNyBAQCBjbGFzcyBTY2FuRGlmZlRleHQoU2NhbkRpZmYpOgorICAgICAgICAgICAgIHBvc3Rfc2NyaXB0X3Jlc3VsdF9kaWZmcywgc2VsZi5mKQorIAorICAgICBkZWYgb3V0cHV0X2hvc3RfZGlmZihzZWxmLCBoX2RpZmYpOgorLSAgICAgICAgcHJpbnQgPj4gc2VsZi5mCisrICAgICAgICBwcmludChmaWxlPXNlbGYuZikKKyAgICAgICAgIGhfZGlmZi5wcmludF90ZXh0KHNlbGYuZikKKyAKKyAgICAgZGVmIG91dHB1dF9lbmRpbmcoc2VsZik6CitAQCAtNjIyLDggKzYxOSw4IEBAIGNsYXNzIFNjYW5EaWZmWE1MKFNjYW5EaWZmKToKKyAKKyAgICAgZGVmIG91dHB1dF9iZWdpbm5pbmcoc2VsZik6CisgICAgICAgICBzZWxmLndyaXRlci5zdGFydERvY3VtZW50KCkKKy0gICAgICAgIHNlbGYud3JpdGVyLnN0YXJ0RWxlbWVudCh1Im5tYXBkaWZmIiwge3UidmVyc2lvbiI6IE5ESUZGX1hNTF9WRVJTSU9OfSkKKy0gICAgICAgIHNlbGYud3JpdGVyLnN0YXJ0RWxlbWVudCh1InNjYW5kaWZmIiwge30pCisrICAgICAgICBzZWxmLndyaXRlci5zdGFydEVsZW1lbnQoIm5tYXBkaWZmIiwgeyJ2ZXJzaW9uIjogTkRJRkZfWE1MX1ZFUlNJT059KQorKyAgICAgICAgc2VsZi53cml0ZXIuc3RhcnRFbGVtZW50KCJzY2FuZGlmZiIsIHt9KQorIAorICAgICAgICAgaWYgc2VsZi5ubWFwcnVuX2RpZmZlcnMoKToKKyAgICAgICAgICAgICBzZWxmLndyaXRlci5mcmFnX2EoCitAQCAtNjM2LDcgKzYzMyw3IEBAIGNsYXNzIFNjYW5EaWZmWE1MKFNjYW5EaWZmKToKKyAKKyAgICAgZGVmIG91dHB1dF9wcmVfc2NyaXB0cyhzZWxmLCBwcmVfc2NyaXB0X3Jlc3VsdF9kaWZmcyk6CisgICAgICAgICBpZiBsZW4ocHJlX3NjcmlwdF9yZXN1bHRfZGlmZnMpID4gMCBvciB2ZXJib3NlOgorLSAgICAgICAgICAgIHByZXNjcmlwdF9lbGVtID0gc2VsZi5kb2N1bWVudC5jcmVhdGVFbGVtZW50KHUicHJlc2NyaXB0IikKKysgICAgICAgICAgICBwcmVzY3JpcHRfZWxlbSA9IHNlbGYuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicHJlc2NyaXB0IikKKyAgICAgICAgICAgICBmcmFnID0gc2NyaXB0X3Jlc3VsdF9kaWZmc190b19kb21fZnJhZ21lbnQoCisgICAgICAgICAgICAgICAgIHByZXNjcmlwdF9lbGVtLCBzZWxmLnNjYW5fYS5wcmVfc2NyaXB0X3Jlc3VsdHMsCisgICAgICAgICAgICAgICAgIHNlbGYuc2Nhbl9iLnByZV9zY3JpcHRfcmVzdWx0cywgcHJlX3NjcmlwdF9yZXN1bHRfZGlmZnMsCitAQCAtNjQ2LDcgKzY0Myw3IEBAIGNsYXNzIFNjYW5EaWZmWE1MKFNjYW5EaWZmKToKKyAKKyAgICAgZGVmIG91dHB1dF9wb3N0X3NjcmlwdHMoc2VsZiwgcG9zdF9zY3JpcHRfcmVzdWx0X2RpZmZzKToKKyAgICAgICAgIGlmIGxlbihwb3N0X3NjcmlwdF9yZXN1bHRfZGlmZnMpID4gMCBvciB2ZXJib3NlOgorLSAgICAgICAgICAgIHBvc3RzY3JpcHRfZWxlbSA9IHNlbGYuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1InBvc3RzY3JpcHQiKQorKyAgICAgICAgICAgIHBvc3RzY3JpcHRfZWxlbSA9IHNlbGYuZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicG9zdHNjcmlwdCIpCisgICAgICAgICAgICAgZnJhZyA9IHNjcmlwdF9yZXN1bHRfZGlmZnNfdG9fZG9tX2ZyYWdtZW50KAorICAgICAgICAgICAgICAgICBwb3N0c2NyaXB0X2VsZW0sIHNlbGYuc2Nhbl9hLnBvc3Rfc2NyaXB0X3Jlc3VsdHMsCisgICAgICAgICAgICAgICAgIHNlbGYuc2Nhbl9iLnBvc3Rfc2NyaXB0X3Jlc3VsdHMsIHBvc3Rfc2NyaXB0X3Jlc3VsdF9kaWZmcywKK0BAIC02NjAsOCArNjU3LDggQEAgY2xhc3MgU2NhbkRpZmZYTUwoU2NhbkRpZmYpOgorICAgICAgICAgZnJhZy51bmxpbmsoKQorIAorICAgICBkZWYgb3V0cHV0X2VuZGluZyhzZWxmKToKKy0gICAgICAgIHNlbGYud3JpdGVyLmVuZEVsZW1lbnQodSJzY2FuZGlmZiIpCistICAgICAgICBzZWxmLndyaXRlci5lbmRFbGVtZW50KHUibm1hcGRpZmYiKQorKyAgICAgICAgc2VsZi53cml0ZXIuZW5kRWxlbWVudCgic2NhbmRpZmYiKQorKyAgICAgICAgc2VsZi53cml0ZXIuZW5kRWxlbWVudCgibm1hcGRpZmYiKQorICAgICAgICAgc2VsZi53cml0ZXIuZW5kRG9jdW1lbnQoKQorIAorIAorQEAgLTcxOSw5ICs3MTYsOSBAQCBjbGFzcyBIb3N0RGlmZihvYmplY3QpOgorICAgICAgICAgc2VsZi5jb3N0ICs9IG9zX2Nvc3QKKyAKKyAgICAgICAgIGV4dHJhcG9ydHNfYSA9IHR1cGxlKChjb3VudCwgc3RhdGUpCistICAgICAgICAgICAgICAgIGZvciAoc3RhdGUsIGNvdW50KSBpbiBzZWxmLmhvc3RfYS5leHRyYXBvcnRzLml0ZW1zKCkpCisrICAgICAgICAgICAgICAgIGZvciAoc3RhdGUsIGNvdW50KSBpbiBsaXN0KHNlbGYuaG9zdF9hLmV4dHJhcG9ydHMuaXRlbXMoKSkpCisgICAgICAgICBleHRyYXBvcnRzX2IgPSB0dXBsZSgoY291bnQsIHN0YXRlKQorLSAgICAgICAgICAgICAgICBmb3IgKHN0YXRlLCBjb3VudCkgaW4gc2VsZi5ob3N0X2IuZXh0cmFwb3J0cy5pdGVtcygpKQorKyAgICAgICAgICAgICAgICBmb3IgKHN0YXRlLCBjb3VudCkgaW4gbGlzdChzZWxmLmhvc3RfYi5leHRyYXBvcnRzLml0ZW1zKCkpKQorICAgICAgICAgaWYgZXh0cmFwb3J0c19hICE9IGV4dHJhcG9ydHNfYjoKKyAgICAgICAgICAgICBzZWxmLmV4dHJhcG9ydHNfY2hhbmdlZCA9IFRydWUKKyAgICAgICAgICAgICBzZWxmLmNvc3QgKz0gMQorQEAgLTc0Nyw2OSArNzQ0LDY5IEBAIGNsYXNzIEhvc3REaWZmKG9iamVjdCk6CisgICAgICAgICAjIE5hbWVzIGFuZCBhZGRyZXNzZXMuCisgICAgICAgICBpZiBzZWxmLmlkX2NoYW5nZWQ6CisgICAgICAgICAgICAgaWYgaG9zdF9hLnN0YXRlIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgICAgICBwcmludCA+PiBmLCB1Ii0lczoiICUgaG9zdF9hLmZvcm1hdF9uYW1lKCkKKysgICAgICAgICAgICAgICAgcHJpbnQoIi0lczoiICUgaG9zdF9hLmZvcm1hdF9uYW1lKCksIGZpbGU9ZikKKyAgICAgICAgICAgICBpZiBzZWxmLmhvc3RfYi5zdGF0ZSBpcyBub3QgTm9uZToKKy0gICAgICAgICAgICAgICAgcHJpbnQgPj4gZiwgdSIrJXM6IiAlIGhvc3RfYi5mb3JtYXRfbmFtZSgpCisrICAgICAgICAgICAgICAgIHByaW50KCIrJXM6IiAlIGhvc3RfYi5mb3JtYXRfbmFtZSgpLCBmaWxlPWYpCisgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIHByaW50ID4+IGYsIHUiICVzOiIgJSBob3N0X2EuZm9ybWF0X25hbWUoKQorKyAgICAgICAgICAgIHByaW50KCIgJXM6IiAlIGhvc3RfYS5mb3JtYXRfbmFtZSgpLCBmaWxlPWYpCisgCisgICAgICAgICAjIFN0YXRlLgorICAgICAgICAgaWYgc2VsZi5zdGF0ZV9jaGFuZ2VkOgorICAgICAgICAgICAgIGlmIGhvc3RfYS5zdGF0ZSBpcyBub3QgTm9uZToKKy0gICAgICAgICAgICAgICAgcHJpbnQgPj4gZiwgdSItSG9zdCBpcyAlcy4iICUgaG9zdF9hLnN0YXRlCisrICAgICAgICAgICAgICAgIHByaW50KCItSG9zdCBpcyAlcy4iICUgaG9zdF9hLnN0YXRlLCBmaWxlPWYpCisgICAgICAgICAgICAgaWYgaG9zdF9iLnN0YXRlIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgICAgICBwcmludCA+PiBmLCB1IitIb3N0IGlzICVzLiIgJSBob3N0X2Iuc3RhdGUKKysgICAgICAgICAgICAgICAgcHJpbnQoIitIb3N0IGlzICVzLiIgJSBob3N0X2Iuc3RhdGUsIGZpbGU9ZikKKyAgICAgICAgIGVsaWYgdmVyYm9zZToKKy0gICAgICAgICAgICBwcmludCA+PiBmLCB1IiBIb3N0IGlzICVzLiIgJSBob3N0X2Iuc3RhdGUKKysgICAgICAgICAgICBwcmludCgiIEhvc3QgaXMgJXMuIiAlIGhvc3RfYi5zdGF0ZSwgZmlsZT1mKQorIAorICAgICAgICAgIyBFeHRyYXBvcnRzLgorICAgICAgICAgaWYgc2VsZi5leHRyYXBvcnRzX2NoYW5nZWQ6CisgICAgICAgICAgICAgaWYgbGVuKGhvc3RfYS5leHRyYXBvcnRzKSA+IDA6CistICAgICAgICAgICAgICAgIHByaW50ID4+IGYsIHUiLU5vdCBzaG93bjogJXMiICUgaG9zdF9hLmV4dHJhcG9ydHNfc3RyaW5nKCkKKysgICAgICAgICAgICAgICAgcHJpbnQoIi1Ob3Qgc2hvd246ICVzIiAlIGhvc3RfYS5leHRyYXBvcnRzX3N0cmluZygpLCBmaWxlPWYpCisgICAgICAgICAgICAgaWYgbGVuKGhvc3RfYi5leHRyYXBvcnRzKSA+IDA6CistICAgICAgICAgICAgICAgIHByaW50ID4+IGYsIHUiK05vdCBzaG93bjogJXMiICUgaG9zdF9iLmV4dHJhcG9ydHNfc3RyaW5nKCkKKysgICAgICAgICAgICAgICAgcHJpbnQoIitOb3Qgc2hvd246ICVzIiAlIGhvc3RfYi5leHRyYXBvcnRzX3N0cmluZygpLCBmaWxlPWYpCisgICAgICAgICBlbGlmIHZlcmJvc2U6CisgICAgICAgICAgICAgaWYgbGVuKGhvc3RfYS5leHRyYXBvcnRzKSA+IDA6CistICAgICAgICAgICAgICAgIHByaW50ID4+IGYsIHUiIE5vdCBzaG93bjogJXMiICUgaG9zdF9hLmV4dHJhcG9ydHNfc3RyaW5nKCkKKysgICAgICAgICAgICAgICAgcHJpbnQoIiBOb3Qgc2hvd246ICVzIiAlIGhvc3RfYS5leHRyYXBvcnRzX3N0cmluZygpLCBmaWxlPWYpCisgCisgICAgICAgICAjIFBvcnQgdGFibGUuCistICAgICAgICBwb3J0X3RhYmxlID0gVGFibGUodSIqKiAqICogKiIpCisrICAgICAgICBwb3J0X3RhYmxlID0gVGFibGUoIioqICogKiAqIikKKyAgICAgICAgIGlmIGhvc3RfYS5zdGF0ZSBpcyBOb25lOgorLSAgICAgICAgICAgIG1hcmsgPSB1IisiCisrICAgICAgICAgICAgbWFyayA9ICIrIgorICAgICAgICAgZWxpZiBob3N0X2Iuc3RhdGUgaXMgTm9uZToKKy0gICAgICAgICAgICBtYXJrID0gdSItIgorKyAgICAgICAgICAgIG1hcmsgPSAiLSIKKyAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgbWFyayA9IHUiICIKKy0gICAgICAgIHBvcnRfdGFibGUuYXBwZW5kKChtYXJrLCB1IlBPUlQiLCB1IlNUQVRFIiwgdSJTRVJWSUNFIiwgdSJWRVJTSU9OIikpCisrICAgICAgICAgICAgbWFyayA9ICIgIgorKyAgICAgICAgcG9ydF90YWJsZS5hcHBlbmQoKG1hcmssICJQT1JUIiwgIlNUQVRFIiwgIlNFUlZJQ0UiLCAiVkVSU0lPTiIpKQorIAorICAgICAgICAgZm9yIHBvcnQgaW4gc2VsZi5wb3J0czoKKyAgICAgICAgICAgICBwb3J0X2RpZmYgPSBzZWxmLnBvcnRfZGlmZnNbcG9ydF0KKyAgICAgICAgICAgICBwb3J0X2RpZmYuYXBwZW5kX3RvX3BvcnRfdGFibGUocG9ydF90YWJsZSwgaG9zdF9hLCBob3N0X2IpCisgCisgICAgICAgICBpZiBsZW4ocG9ydF90YWJsZSkgPiAxOgorLSAgICAgICAgICAgIHByaW50ID4+IGYsIHBvcnRfdGFibGUKKysgICAgICAgICAgICBwcmludChwb3J0X3RhYmxlLCBmaWxlPWYpCisgCisgICAgICAgICAjIE9TIGNoYW5nZXMuCisgICAgICAgICBpZiBzZWxmLm9zX2NoYW5nZWQgb3IgdmVyYm9zZToKKyAgICAgICAgICAgICBpZiBsZW4oaG9zdF9hLm9zKSA+IDA6CisgICAgICAgICAgICAgICAgIGlmIGxlbihob3N0X2Iub3MpID4gMDoKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ID4+IGYsIHUiIE9TIGRldGFpbHM6IgorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiBPUyBkZXRhaWxzOiIsIGZpbGU9ZikKKyAgICAgICAgICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICAgICAgICAgIHByaW50ID4+IGYsIHUiLU9TIGRldGFpbHM6IgorKyAgICAgICAgICAgICAgICAgICAgcHJpbnQoIi1PUyBkZXRhaWxzOiIsIGZpbGU9ZikKKyAgICAgICAgICAgICBlbGlmIGxlbihob3N0X2Iub3MpID4gMDoKKy0gICAgICAgICAgICAgICAgcHJpbnQgPj4gZiwgdSIrT1MgZGV0YWlsczoiCisrICAgICAgICAgICAgICAgIHByaW50KCIrT1MgZGV0YWlsczoiLCBmaWxlPWYpCisgICAgICAgICAgICAgIyBvc19kaWZmcyBpcyBhIGxpc3Qgb2YgNS10dXBsZXMgcmV0dXJuZWQgYnkKKyAgICAgICAgICAgICAjIGRpZmZsaWIuU2VxdWVuY2VNYXRjaGVyLgorICAgICAgICAgICAgIGZvciBvcCwgaTEsIGkyLCBqMSwgajIgaW4gc2VsZi5vc19kaWZmczoKKyAgICAgICAgICAgICAgICAgaWYgb3AgPT0gInJlcGxhY2UiIG9yIG9wID09ICJkZWxldGUiOgorICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoaTEsIGkyKToKKy0gICAgICAgICAgICAgICAgICAgICAgICBwcmludCA+PiBmLCAiLSAgJXMiICUgaG9zdF9hLm9zW2ldCisrICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIi0gICVzIiAlIGhvc3RfYS5vc1tpXSwgZmlsZT1mKQorICAgICAgICAgICAgICAgICBpZiBvcCA9PSAicmVwbGFjZSIgb3Igb3AgPT0gImluc2VydCI6CisgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShqMSwgajIpOgorLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ID4+IGYsICIrICAlcyIgJSBob3N0X2Iub3NbaV0KKysgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiKyAgJXMiICUgaG9zdF9iLm9zW2ldLCBmaWxlPWYpCisgICAgICAgICAgICAgICAgIGlmIG9wID09ICJlcXVhbCI6CisgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShpMSwgaTIpOgorLSAgICAgICAgICAgICAgICAgICAgICAgIHByaW50ID4+IGYsICIgICAlcyIgJSBob3N0X2Eub3NbaV0KKysgICAgICAgICAgICAgICAgICAgICAgICBwcmludCgiICAgJXMiICUgaG9zdF9hLm9zW2ldLCBmaWxlPWYpCisgCisgICAgICAgICBwcmludF9zY3JpcHRfcmVzdWx0X2RpZmZzX3RleHQoIkhvc3Qgc2NyaXB0IHJlc3VsdHMiLAorICAgICAgICAgICAgIGhvc3RfYS5zY3JpcHRfcmVzdWx0cywgaG9zdF9iLnNjcmlwdF9yZXN1bHRzLAorQEAgLTgyMCwzMiArODE3LDMyIEBAIGNsYXNzIEhvc3REaWZmKG9iamVjdCk6CisgICAgICAgICBob3N0X2IgPSBzZWxmLmhvc3RfYgorIAorICAgICAgICAgZnJhZyA9IGRvY3VtZW50LmNyZWF0ZURvY3VtZW50RnJhZ21lbnQoKQorLSAgICAgICAgaG9zdGRpZmZfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJob3N0ZGlmZiIpCisrICAgICAgICBob3N0ZGlmZl9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaG9zdGRpZmYiKQorICAgICAgICAgZnJhZy5hcHBlbmRDaGlsZChob3N0ZGlmZl9lbGVtKQorIAorICAgICAgICAgaWYgaG9zdF9hLnN0YXRlIGlzIE5vbmUgb3IgaG9zdF9iLnN0YXRlIGlzIE5vbmU6CisgICAgICAgICAgICAgIyBUaGUgaG9zdCBpcyBtaXNzaW5nIGluIG9uZSBzY2FuLiBPdXRwdXQgdGhlIHdob2xlIHRoaW5nLgorICAgICAgICAgICAgIGlmIGhvc3RfYS5zdGF0ZSBpcyBub3QgTm9uZToKKy0gICAgICAgICAgICAgICAgYV9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1ImEiKQorKyAgICAgICAgICAgICAgICBhX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIikKKyAgICAgICAgICAgICAgICAgYV9lbGVtLmFwcGVuZENoaWxkKGhvc3RfYS50b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgICAgICAgICBob3N0ZGlmZl9lbGVtLmFwcGVuZENoaWxkKGFfZWxlbSkKKyAgICAgICAgICAgICBlbGlmIGhvc3RfYi5zdGF0ZSBpcyBub3QgTm9uZToKKy0gICAgICAgICAgICAgICAgYl9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1ImIiKQorKyAgICAgICAgICAgICAgICBiX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiIikKKyAgICAgICAgICAgICAgICAgYl9lbGVtLmFwcGVuZENoaWxkKGhvc3RfYi50b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgICAgICAgICBob3N0ZGlmZl9lbGVtLmFwcGVuZENoaWxkKGJfZWxlbSkKKyAgICAgICAgICAgICByZXR1cm4gZnJhZworIAorLSAgICAgICAgaG9zdF9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1Imhvc3QiKQorKyAgICAgICAgaG9zdF9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiaG9zdCIpCisgCisgICAgICAgICAjIFN0YXRlLgorICAgICAgICAgaWYgaG9zdF9hLnN0YXRlID09IGhvc3RfYi5zdGF0ZToKKyAgICAgICAgICAgICBpZiB2ZXJib3NlOgorICAgICAgICAgICAgICAgICBob3N0X2VsZW0uYXBwZW5kQ2hpbGQoaG9zdF9hLnN0YXRlX3RvX2RvbV9mcmFnbWVudChkb2N1bWVudCkpCisgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJhIikKKysgICAgICAgICAgICBhX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJhIikKKyAgICAgICAgICAgICBhX2VsZW0uYXBwZW5kQ2hpbGQoaG9zdF9hLnN0YXRlX3RvX2RvbV9mcmFnbWVudChkb2N1bWVudCkpCisgICAgICAgICAgICAgaG9zdF9lbGVtLmFwcGVuZENoaWxkKGFfZWxlbSkKKy0gICAgICAgICAgICBiX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUiYiIpCisrICAgICAgICAgICAgYl9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYiIpCisgICAgICAgICAgICAgYl9lbGVtLmFwcGVuZENoaWxkKGhvc3RfYi5zdGF0ZV90b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgICAgIGhvc3RfZWxlbS5hcHBlbmRDaGlsZChiX2VsZW0pCisgCitAQCAtODU0LDMxICs4NTEsMzEgQEAgY2xhc3MgSG9zdERpZmYob2JqZWN0KToKKyAgICAgICAgIGFkZHJzZXRfYiA9IHNldChob3N0X2IuYWRkcmVzc2VzKQorICAgICAgICAgZm9yIGFkZHIgaW4gc29ydGVkKGFkZHJzZXRfYS5pbnRlcnNlY3Rpb24oYWRkcnNldF9iKSk6CisgICAgICAgICAgICAgaG9zdF9lbGVtLmFwcGVuZENoaWxkKGFkZHIudG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKy0gICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJhIikKKysgICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKQorICAgICAgICAgZm9yIGFkZHIgaW4gc29ydGVkKGFkZHJzZXRfYSAtIGFkZHJzZXRfYik6CisgICAgICAgICAgICAgYV9lbGVtLmFwcGVuZENoaWxkKGFkZHIudG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKyAgICAgICAgIGlmIGFfZWxlbS5oYXNDaGlsZE5vZGVzKCk6CisgICAgICAgICAgICAgaG9zdF9lbGVtLmFwcGVuZENoaWxkKGFfZWxlbSkKKy0gICAgICAgIGJfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJiIikKKysgICAgICAgIGJfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImIiKQorICAgICAgICAgZm9yIGFkZHIgaW4gc29ydGVkKGFkZHJzZXRfYiAtIGFkZHJzZXRfYSk6CisgICAgICAgICAgICAgYl9lbGVtLmFwcGVuZENoaWxkKGFkZHIudG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKyAgICAgICAgIGlmIGJfZWxlbS5oYXNDaGlsZE5vZGVzKCk6CisgICAgICAgICAgICAgaG9zdF9lbGVtLmFwcGVuZENoaWxkKGJfZWxlbSkKKyAKKyAgICAgICAgICMgSG9zdCBuYW1lcy4KKy0gICAgICAgIGhvc3RuYW1lc19lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1Imhvc3RuYW1lcyIpCisrICAgICAgICBob3N0bmFtZXNfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImhvc3RuYW1lcyIpCisgICAgICAgICBob3N0bmFtZXNldF9hID0gc2V0KGhvc3RfYS5ob3N0bmFtZXMpCisgICAgICAgICBob3N0bmFtZXNldF9iID0gc2V0KGhvc3RfYi5ob3N0bmFtZXMpCisgICAgICAgICBmb3IgaG9zdG5hbWUgaW4gc29ydGVkKGhvc3RuYW1lc2V0X2EuaW50ZXJzZWN0aW9uKGhvc3RuYW1lc2V0X2IpKToKKyAgICAgICAgICAgICBob3N0bmFtZXNfZWxlbS5hcHBlbmRDaGlsZCgKKyAgICAgICAgICAgICAgICAgICAgIGhvc3RfYS5ob3N0bmFtZV90b19kb21fZnJhZ21lbnQoZG9jdW1lbnQsIGhvc3RuYW1lKSkKKy0gICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJhIikKKysgICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKQorICAgICAgICAgZm9yIGhvc3RuYW1lIGluIHNvcnRlZChob3N0bmFtZXNldF9hIC0gaG9zdG5hbWVzZXRfYik6CisgICAgICAgICAgICAgYV9lbGVtLmFwcGVuZENoaWxkKAorICAgICAgICAgICAgICAgICAgICAgaG9zdF9hLmhvc3RuYW1lX3RvX2RvbV9mcmFnbWVudChkb2N1bWVudCwgaG9zdG5hbWUpKQorICAgICAgICAgaWYgYV9lbGVtLmhhc0NoaWxkTm9kZXMoKToKKyAgICAgICAgICAgICBob3N0bmFtZXNfZWxlbS5hcHBlbmRDaGlsZChhX2VsZW0pCistICAgICAgICBiX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUiYiIpCisrICAgICAgICBiX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiIikKKyAgICAgICAgIGZvciBob3N0bmFtZSBpbiBzb3J0ZWQoaG9zdG5hbWVzZXRfYiAtIGhvc3RuYW1lc2V0X2EpOgorICAgICAgICAgICAgIGJfZWxlbS5hcHBlbmRDaGlsZCgKKyAgICAgICAgICAgICAgICAgICAgIGhvc3RfYi5ob3N0bmFtZV90b19kb21fZnJhZ21lbnQoZG9jdW1lbnQsIGhvc3RuYW1lKSkKK0BAIC04ODcsMTUgKzg4NCwxNSBAQCBjbGFzcyBIb3N0RGlmZihvYmplY3QpOgorICAgICAgICAgaWYgaG9zdG5hbWVzX2VsZW0uaGFzQ2hpbGROb2RlcygpOgorICAgICAgICAgICAgIGhvc3RfZWxlbS5hcHBlbmRDaGlsZChob3N0bmFtZXNfZWxlbSkKKyAKKy0gICAgICAgIHBvcnRzX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUicG9ydHMiKQorKyAgICAgICAgcG9ydHNfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInBvcnRzIikKKyAgICAgICAgICMgRXh0cmFwb3J0cy4KKyAgICAgICAgIGlmIGhvc3RfYS5leHRyYXBvcnRzID09IGhvc3RfYi5leHRyYXBvcnRzOgorICAgICAgICAgICAgIHBvcnRzX2VsZW0uYXBwZW5kQ2hpbGQoaG9zdF9hLmV4dHJhcG9ydHNfdG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKyAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgYV9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1ImEiKQorKyAgICAgICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKQorICAgICAgICAgICAgIGFfZWxlbS5hcHBlbmRDaGlsZChob3N0X2EuZXh0cmFwb3J0c190b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgICAgIHBvcnRzX2VsZW0uYXBwZW5kQ2hpbGQoYV9lbGVtKQorLSAgICAgICAgICAgIGJfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJiIikKKysgICAgICAgICAgICBiX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiIikKKyAgICAgICAgICAgICBiX2VsZW0uYXBwZW5kQ2hpbGQoaG9zdF9iLmV4dHJhcG9ydHNfdG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKyAgICAgICAgICAgICBwb3J0c19lbGVtLmFwcGVuZENoaWxkKGJfZWxlbSkKKyAgICAgICAgICMgUG9ydCBsaXN0LgorQEAgLTkxMSwxOCArOTA4LDE4IEBAIGNsYXNzIEhvc3REaWZmKG9iamVjdCk6CisgCisgICAgICAgICAjIE9TIGNoYW5nZXMuCisgICAgICAgICBpZiBzZWxmLm9zX2NoYW5nZWQgb3IgdmVyYm9zZToKKy0gICAgICAgICAgICBvc19lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1Im9zIikKKysgICAgICAgICAgICBvc19lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgib3MiKQorICAgICAgICAgICAgICMgb3NfZGlmZnMgaXMgYSBsaXN0IG9mIDUtdHVwbGVzIHJldHVybmVkIGJ5CisgICAgICAgICAgICAgIyBkaWZmbGliLlNlcXVlbmNlTWF0Y2hlci4KKyAgICAgICAgICAgICBmb3Igb3AsIGkxLCBpMiwgajEsIGoyIGluIHNlbGYub3NfZGlmZnM6CisgICAgICAgICAgICAgICAgIGlmIG9wID09ICJyZXBsYWNlIiBvciBvcCA9PSAiZGVsZXRlIjoKKy0gICAgICAgICAgICAgICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJhIikKKysgICAgICAgICAgICAgICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKQorICAgICAgICAgICAgICAgICAgICAgZm9yIGkgaW4gcmFuZ2UoaTEsIGkyKToKKyAgICAgICAgICAgICAgICAgICAgICAgICBhX2VsZW0uYXBwZW5kQ2hpbGQoaG9zdF9hLm9zX3RvX2RvbV9mcmFnbWVudCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9jdW1lbnQsIGhvc3RfYS5vc1tpXSkpCisgICAgICAgICAgICAgICAgICAgICBvc19lbGVtLmFwcGVuZENoaWxkKGFfZWxlbSkKKyAgICAgICAgICAgICAgICAgaWYgb3AgPT0gInJlcGxhY2UiIG9yIG9wID09ICJpbnNlcnQiOgorLSAgICAgICAgICAgICAgICAgICAgYl9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1ImIiKQorKyAgICAgICAgICAgICAgICAgICAgYl9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYiIpCisgICAgICAgICAgICAgICAgICAgICBmb3IgaSBpbiByYW5nZShqMSwgajIpOgorICAgICAgICAgICAgICAgICAgICAgICAgIGJfZWxlbS5hcHBlbmRDaGlsZChob3N0X2Iub3NfdG9fZG9tX2ZyYWdtZW50KAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkb2N1bWVudCwgaG9zdF9iLm9zW2ldKSkKK0BAIC05MzYsNyArOTMzLDcgQEAgY2xhc3MgSG9zdERpZmYob2JqZWN0KToKKyAKKyAgICAgICAgICMgSG9zdCBzY3JpcHQgY2hhbmdlcy4KKyAgICAgICAgIGlmIGxlbihzZWxmLnNjcmlwdF9yZXN1bHRfZGlmZnMpID4gMCBvciB2ZXJib3NlOgorLSAgICAgICAgICAgIGhvc3RzY3JpcHRfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJob3N0c2NyaXB0IikKKysgICAgICAgICAgICBob3N0c2NyaXB0X2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJob3N0c2NyaXB0IikKKyAgICAgICAgICAgICBob3N0X2VsZW0uYXBwZW5kQ2hpbGQoc2NyaXB0X3Jlc3VsdF9kaWZmc190b19kb21fZnJhZ21lbnQoCisgICAgICAgICAgICAgICAgIGhvc3RzY3JpcHRfZWxlbSwgaG9zdF9hLnNjcmlwdF9yZXN1bHRzLAorICAgICAgICAgICAgICAgICBob3N0X2Iuc2NyaXB0X3Jlc3VsdHMsIHNlbGYuc2NyaXB0X3Jlc3VsdF9kaWZmcywKK0BAIC05ODksMzggKzk4NiwzOCBAQCBjbGFzcyBQb3J0RGlmZihvYmplY3QpOgorICAgICAgICAgICAgIHNlbGYucG9ydF9iLnNlcnZpY2UudmVyc2lvbl9zdHJpbmcoKV0KKyAgICAgICAgIGlmIGFfY29sdW1ucyA9PSBiX2NvbHVtbnM6CisgICAgICAgICAgICAgaWYgdmVyYm9zZSBvciBzZWxmLnNjcmlwdF9yZXN1bHRfZGlmZnMgPiAwOgorLSAgICAgICAgICAgICAgICB0YWJsZS5hcHBlbmQoW3UiICJdICsgYV9jb2x1bW5zKQorKyAgICAgICAgICAgICAgICB0YWJsZS5hcHBlbmQoWyIgIl0gKyBhX2NvbHVtbnMpCisgICAgICAgICBlbHNlOgorICAgICAgICAgICAgIGlmIG5vdCBob3N0X2EuaXNfZXh0cmFwb3J0cyhzZWxmLnBvcnRfYS5zdGF0ZSk6CistICAgICAgICAgICAgICAgIHRhYmxlLmFwcGVuZChbdSItIl0gKyBhX2NvbHVtbnMpCisrICAgICAgICAgICAgICAgIHRhYmxlLmFwcGVuZChbIi0iXSArIGFfY29sdW1ucykKKyAgICAgICAgICAgICBpZiBub3QgaG9zdF9iLmlzX2V4dHJhcG9ydHMoc2VsZi5wb3J0X2Iuc3RhdGUpOgorLSAgICAgICAgICAgICAgICB0YWJsZS5hcHBlbmQoW3UiKyJdICsgYl9jb2x1bW5zKQorKyAgICAgICAgICAgICAgICB0YWJsZS5hcHBlbmQoWyIrIl0gKyBiX2NvbHVtbnMpCisgCisgICAgICAgICBmb3Igc3JfZGlmZiBpbiBzZWxmLnNjcmlwdF9yZXN1bHRfZGlmZnM6CisgICAgICAgICAgICAgc3JfZGlmZi5hcHBlbmRfdG9fcG9ydF90YWJsZSh0YWJsZSkKKyAKKyAgICAgZGVmIHRvX2RvbV9mcmFnbWVudChzZWxmLCBkb2N1bWVudCk6CisgICAgICAgICBmcmFnID0gZG9jdW1lbnQuY3JlYXRlRG9jdW1lbnRGcmFnbWVudCgpCistICAgICAgICBwb3J0ZGlmZl9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1InBvcnRkaWZmIikKKysgICAgICAgIHBvcnRkaWZmX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJwb3J0ZGlmZiIpCisgICAgICAgICBmcmFnLmFwcGVuZENoaWxkKHBvcnRkaWZmX2VsZW0pCisgICAgICAgICBpZiAoc2VsZi5wb3J0X2Euc3BlYyA9PSBzZWxmLnBvcnRfYi5zcGVjIGFuZAorICAgICAgICAgICAgICAgICBzZWxmLnBvcnRfYS5zdGF0ZSA9PSBzZWxmLnBvcnRfYi5zdGF0ZSk6CistICAgICAgICAgICAgcG9ydF9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1InBvcnQiKQorLSAgICAgICAgICAgIHBvcnRfZWxlbS5zZXRBdHRyaWJ1dGUodSJwb3J0aWQiLCB1bmljb2RlKHNlbGYucG9ydF9hLnNwZWNbMF0pKQorLSAgICAgICAgICAgIHBvcnRfZWxlbS5zZXRBdHRyaWJ1dGUodSJwcm90b2NvbCIsIHNlbGYucG9ydF9hLnNwZWNbMV0pCisrICAgICAgICAgICAgcG9ydF9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgicG9ydCIpCisrICAgICAgICAgICAgcG9ydF9lbGVtLnNldEF0dHJpYnV0ZSgicG9ydGlkIiwgc3RyKHNlbGYucG9ydF9hLnNwZWNbMF0pKQorKyAgICAgICAgICAgIHBvcnRfZWxlbS5zZXRBdHRyaWJ1dGUoInByb3RvY29sIiwgc2VsZi5wb3J0X2Euc3BlY1sxXSkKKyAgICAgICAgICAgICBpZiBzZWxmLnBvcnRfYS5zdGF0ZSBpcyBub3QgTm9uZToKKy0gICAgICAgICAgICAgICAgc3RhdGVfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJzdGF0ZSIpCistICAgICAgICAgICAgICAgIHN0YXRlX2VsZW0uc2V0QXR0cmlidXRlKHUic3RhdGUiLCBzZWxmLnBvcnRfYS5zdGF0ZSkKKysgICAgICAgICAgICAgICAgc3RhdGVfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoInN0YXRlIikKKysgICAgICAgICAgICAgICAgc3RhdGVfZWxlbS5zZXRBdHRyaWJ1dGUoInN0YXRlIiwgc2VsZi5wb3J0X2Euc3RhdGUpCisgICAgICAgICAgICAgICAgIHBvcnRfZWxlbS5hcHBlbmRDaGlsZChzdGF0ZV9lbGVtKQorICAgICAgICAgICAgIGlmIHNlbGYucG9ydF9hLnNlcnZpY2UgPT0gc2VsZi5wb3J0X2Iuc2VydmljZToKKyAgICAgICAgICAgICAgICAgcG9ydF9lbGVtLmFwcGVuZENoaWxkKAorICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucG9ydF9hLnNlcnZpY2UudG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKyAgICAgICAgICAgICBlbHNlOgorLSAgICAgICAgICAgICAgICBhX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUiYSIpCisrICAgICAgICAgICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKQorICAgICAgICAgICAgICAgICBhX2VsZW0uYXBwZW5kQ2hpbGQoCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3J0X2Euc2VydmljZS50b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgICAgICAgICBwb3J0X2VsZW0uYXBwZW5kQ2hpbGQoYV9lbGVtKQorLSAgICAgICAgICAgICAgICBiX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUiYiIpCisrICAgICAgICAgICAgICAgIGJfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImIiKQorICAgICAgICAgICAgICAgICBiX2VsZW0uYXBwZW5kQ2hpbGQoCisgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5wb3J0X2Iuc2VydmljZS50b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgICAgICAgICBwb3J0X2VsZW0uYXBwZW5kQ2hpbGQoYl9lbGVtKQorQEAgLTEwMjgsMTAgKzEwMjUsMTAgQEAgY2xhc3MgUG9ydERpZmYob2JqZWN0KToKKyAgICAgICAgICAgICAgICAgcG9ydF9lbGVtLmFwcGVuZENoaWxkKHNyX2RpZmYudG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKyAgICAgICAgICAgICBwb3J0ZGlmZl9lbGVtLmFwcGVuZENoaWxkKHBvcnRfZWxlbSkKKyAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgYV9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCh1ImEiKQorKyAgICAgICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImEiKQorICAgICAgICAgICAgIGFfZWxlbS5hcHBlbmRDaGlsZChzZWxmLnBvcnRfYS50b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgICAgIHBvcnRkaWZmX2VsZW0uYXBwZW5kQ2hpbGQoYV9lbGVtKQorLSAgICAgICAgICAgIGJfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJiIikKKysgICAgICAgICAgICBiX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KCJiIikKKyAgICAgICAgICAgICBiX2VsZW0uYXBwZW5kQ2hpbGQoc2VsZi5wb3J0X2IudG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKyAgICAgICAgICAgICBwb3J0ZGlmZl9lbGVtLmFwcGVuZENoaWxkKGJfZWxlbSkKKyAKK0BAIC0xMDg2LDEzICsxMDgzLDEzIEBAIGNsYXNzIFNjcmlwdFJlc3VsdERpZmYob2JqZWN0KToKKyAgICAgICAgICAgICBmb3Igb3AsIGkxLCBpMiwgajEsIGoyIGluIGRpZmZzLmdldF9vcGNvZGVzKCk6CisgICAgICAgICAgICAgICAgIGlmIG9wID09ICJyZXBsYWNlIiBvciBvcCA9PSAiZGVsZXRlIjoKKyAgICAgICAgICAgICAgICAgICAgIGZvciBrIGluIHJhbmdlKGkxLCBpMik6CistICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuYXBwZW5kX3Jhdyh1Ii0iICsgYV9saW5lc1trXSkKKysgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS5hcHBlbmRfcmF3KCItIiArIGFfbGluZXNba10pCisgICAgICAgICAgICAgICAgIGlmIG9wID09ICJyZXBsYWNlIiBvciBvcCA9PSAiaW5zZXJ0IjoKKyAgICAgICAgICAgICAgICAgICAgIGZvciBrIGluIHJhbmdlKGoxLCBqMik6CistICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuYXBwZW5kX3Jhdyh1IisiICsgYl9saW5lc1trXSkKKysgICAgICAgICAgICAgICAgICAgICAgICB0YWJsZS5hcHBlbmRfcmF3KCIrIiArIGJfbGluZXNba10pCisgICAgICAgICAgICAgICAgIGlmIG9wID09ICJlcXVhbCI6CisgICAgICAgICAgICAgICAgICAgICBmb3IgayBpbiByYW5nZShpMSwgaTIpOgorLSAgICAgICAgICAgICAgICAgICAgICAgIHRhYmxlLmFwcGVuZF9yYXcodSIgIiArIGFfbGluZXNba10pCisrICAgICAgICAgICAgICAgICAgICAgICAgdGFibGUuYXBwZW5kX3JhdygiICIgKyBhX2xpbmVzW2tdKQorIAorICAgICBkZWYgdG9fZG9tX2ZyYWdtZW50KHNlbGYsIGRvY3VtZW50KToKKyAgICAgICAgIGZyYWcgPSBkb2N1bWVudC5jcmVhdGVEb2N1bWVudEZyYWdtZW50KCkKK0BAIC0xMTAyLDExICsxMDk5LDExIEBAIGNsYXNzIFNjcmlwdFJlc3VsdERpZmYob2JqZWN0KToKKyAgICAgICAgICAgICBmcmFnLmFwcGVuZENoaWxkKHNlbGYuc3JfYS50b19kb21fZnJhZ21lbnQoZG9jdW1lbnQpKQorICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICBpZiBzZWxmLnNyX2EgaXMgbm90IE5vbmU6CistICAgICAgICAgICAgICAgIGFfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQodSJhIikKKysgICAgICAgICAgICAgICAgYV9lbGVtID0gZG9jdW1lbnQuY3JlYXRlRWxlbWVudCgiYSIpCisgICAgICAgICAgICAgICAgIGFfZWxlbS5hcHBlbmRDaGlsZChzZWxmLnNyX2EudG9fZG9tX2ZyYWdtZW50KGRvY3VtZW50KSkKKyAgICAgICAgICAgICAgICAgZnJhZy5hcHBlbmRDaGlsZChhX2VsZW0pCisgICAgICAgICAgICAgaWYgc2VsZi5zcl9iIGlzIG5vdCBOb25lOgorLSAgICAgICAgICAgICAgICBiX2VsZW0gPSBkb2N1bWVudC5jcmVhdGVFbGVtZW50KHUiYiIpCisrICAgICAgICAgICAgICAgIGJfZWxlbSA9IGRvY3VtZW50LmNyZWF0ZUVsZW1lbnQoImIiKQorICAgICAgICAgICAgICAgICBiX2VsZW0uYXBwZW5kQ2hpbGQoc2VsZi5zcl9iLnRvX2RvbV9mcmFnbWVudChkb2N1bWVudCkpCisgICAgICAgICAgICAgICAgIGZyYWcuYXBwZW5kQ2hpbGQoYl9lbGVtKQorICAgICAgICAgcmV0dXJuIGZyYWcKK0BAIC0xMTIwLDcgKzExMTcsNyBAQCBjbGFzcyBUYWJsZShvYmplY3QpOgorICAgICAgICAgY29waWVkIHRvIHRoZSBvdXRwdXQuIiIiCisgICAgICAgICBzZWxmLndpZHRocyA9IFtdCisgICAgICAgICBzZWxmLnJvd3MgPSBbXQorLSAgICAgICAgc2VsZi5wcmVmaXggPSB1IiIKKysgICAgICAgIHNlbGYucHJlZml4ID0gIiIKKyAgICAgICAgIHNlbGYucGFkZGluZyA9IFtdCisgICAgICAgICBqID0gMAorICAgICAgICAgd2hpbGUgaiA8IGxlbih0ZW1wbGF0ZSkgYW5kIHRlbXBsYXRlW2pdICE9ICIqIjoKK0BAIC0xMTQ1LDcgKzExNDIsNyBAQCBjbGFzcyBUYWJsZShvYmplY3QpOgorIAorICAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKHJvdykpOgorICAgICAgICAgICAgIGlmIHJvd1tpXSBpcyBOb25lOgorLSAgICAgICAgICAgICAgICBzID0gdSIiCisrICAgICAgICAgICAgICAgIHMgPSAiIgorICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgIHMgPSBzdHIocm93W2ldKQorICAgICAgICAgICAgIGlmIGkgPT0gbGVuKHNlbGYud2lkdGhzKToKK0BAIC0xMTY3LDcgKzExNjQsNyBAQCBjbGFzcyBUYWJsZShvYmplY3QpOgorICAgICAgICAgZm9yIHJvdyBpbiBzZWxmLnJvd3M6CisgICAgICAgICAgICAgcGFydHMgPSBbc2VsZi5wcmVmaXhdCisgICAgICAgICAgICAgaSA9IDAKKy0gICAgICAgICAgICBpZiBpc2luc3RhbmNlKHJvdywgYmFzZXN0cmluZyk6CisrICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShyb3csIHN0cik6CisgICAgICAgICAgICAgICAgICMgQSByYXcgc3RyaW5nLgorICAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQocm93KQorICAgICAgICAgICAgIGVsc2U6CitAQCAtMTE3NiwxMyArMTE3MywxMyBAQCBjbGFzcyBUYWJsZShvYmplY3QpOgorICAgICAgICAgICAgICAgICAgICAgaWYgaSA8IGxlbihzZWxmLnBhZGRpbmcpOgorICAgICAgICAgICAgICAgICAgICAgICAgIHBhcnRzLmFwcGVuZChzZWxmLnBhZGRpbmdbaV0pCisgICAgICAgICAgICAgICAgICAgICBpICs9IDEKKy0gICAgICAgICAgICAgICAgbGluZXMuYXBwZW5kKHUiIi5qb2luKHBhcnRzKS5yc3RyaXAoKSkKKy0gICAgICAgIHJldHVybiB1IlxuIi5qb2luKGxpbmVzKQorKyAgICAgICAgICAgICAgICBsaW5lcy5hcHBlbmQoIiIuam9pbihwYXJ0cykucnN0cmlwKCkpCisrICAgICAgICByZXR1cm4gIlxuIi5qb2luKGxpbmVzKQorIAorIAorIGRlZiB3YXJuKHN0cik6CisgICAgICIiIlByaW50IGEgd2FybmluZyB0byBzdGRlcnIuIiIiCistICAgIHByaW50ID4+IHN5cy5zdGRlcnIsIHN0cgorKyAgICBwcmludChzdHIsIGZpbGU9c3lzLnN0ZGVycikKKyAKKyAKKyBjbGFzcyBObWFwQ29udGVudEhhbmRsZXIoeG1sLnNheC5oYW5kbGVyLkNvbnRlbnRIYW5kbGVyKToKK0BAIC0xMjAwLDIyICsxMTk3LDIyIEBAIGNsYXNzIE5tYXBDb250ZW50SGFuZGxlcih4bWwuc2F4LmhhbmRsZXIuQ29udGVudEhhbmRsZXIpOgorICAgICAgICAgc2VsZi5jdXJyZW50X3BvcnQgPSBOb25lCisgCisgICAgICAgICBzZWxmLl9zdGFydF9lbGVtX2hhbmRsZXJzID0geworLSAgICAgICAgICAgIHUibm1hcHJ1biI6IHNlbGYuX3N0YXJ0X25tYXBydW4sCistICAgICAgICAgICAgdSJob3N0Ijogc2VsZi5fc3RhcnRfaG9zdCwKKy0gICAgICAgICAgICB1InN0YXR1cyI6IHNlbGYuX3N0YXJ0X3N0YXR1cywKKy0gICAgICAgICAgICB1ImFkZHJlc3MiOiBzZWxmLl9zdGFydF9hZGRyZXNzLAorLSAgICAgICAgICAgIHUiaG9zdG5hbWUiOiBzZWxmLl9zdGFydF9ob3N0bmFtZSwKKy0gICAgICAgICAgICB1ImV4dHJhcG9ydHMiOiBzZWxmLl9zdGFydF9leHRyYXBvcnRzLAorLSAgICAgICAgICAgIHUicG9ydCI6IHNlbGYuX3N0YXJ0X3BvcnQsCistICAgICAgICAgICAgdSJzdGF0ZSI6IHNlbGYuX3N0YXJ0X3N0YXRlLAorLSAgICAgICAgICAgIHUic2VydmljZSI6IHNlbGYuX3N0YXJ0X3NlcnZpY2UsCistICAgICAgICAgICAgdSJzY3JpcHQiOiBzZWxmLl9zdGFydF9zY3JpcHQsCistICAgICAgICAgICAgdSJvc21hdGNoIjogc2VsZi5fc3RhcnRfb3NtYXRjaCwKKy0gICAgICAgICAgICB1ImZpbmlzaGVkIjogc2VsZi5fc3RhcnRfZmluaXNoZWQsCisrICAgICAgICAgICAgIm5tYXBydW4iOiBzZWxmLl9zdGFydF9ubWFwcnVuLAorKyAgICAgICAgICAgICJob3N0Ijogc2VsZi5fc3RhcnRfaG9zdCwKKysgICAgICAgICAgICAic3RhdHVzIjogc2VsZi5fc3RhcnRfc3RhdHVzLAorKyAgICAgICAgICAgICJhZGRyZXNzIjogc2VsZi5fc3RhcnRfYWRkcmVzcywKKysgICAgICAgICAgICAiaG9zdG5hbWUiOiBzZWxmLl9zdGFydF9ob3N0bmFtZSwKKysgICAgICAgICAgICAiZXh0cmFwb3J0cyI6IHNlbGYuX3N0YXJ0X2V4dHJhcG9ydHMsCisrICAgICAgICAgICAgInBvcnQiOiBzZWxmLl9zdGFydF9wb3J0LAorKyAgICAgICAgICAgICJzdGF0ZSI6IHNlbGYuX3N0YXJ0X3N0YXRlLAorKyAgICAgICAgICAgICJzZXJ2aWNlIjogc2VsZi5fc3RhcnRfc2VydmljZSwKKysgICAgICAgICAgICAic2NyaXB0Ijogc2VsZi5fc3RhcnRfc2NyaXB0LAorKyAgICAgICAgICAgICJvc21hdGNoIjogc2VsZi5fc3RhcnRfb3NtYXRjaCwKKysgICAgICAgICAgICAiZmluaXNoZWQiOiBzZWxmLl9zdGFydF9maW5pc2hlZCwKKyAgICAgICAgIH0KKyAgICAgICAgIHNlbGYuX2VuZF9lbGVtX2hhbmRsZXJzID0geworLSAgICAgICAgICAgIHUnaG9zdCc6IHNlbGYuX2VuZF9ob3N0LAorLSAgICAgICAgICAgIHUncG9ydCc6IHNlbGYuX2VuZF9wb3J0LAorKyAgICAgICAgICAgICdob3N0Jzogc2VsZi5fZW5kX2hvc3QsCisrICAgICAgICAgICAgJ3BvcnQnOiBzZWxmLl9lbmRfcG9ydCwKKyAgICAgICAgIH0KKyAKKyAgICAgZGVmIHBhcmVudF9lbGVtZW50KHNlbGYpOgorQEAgLTEyNDUsNjggKzEyNDIsNjggQEAgY2xhc3MgTm1hcENvbnRlbnRIYW5kbGVyKHhtbC5zYXguaGFuZGxlci5Db250ZW50SGFuZGxlcik6CisgICAgIGRlZiBfc3RhcnRfbm1hcHJ1bihzZWxmLCBuYW1lLCBhdHRycyk6CisgICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnRfZWxlbWVudCgpIGlzIE5vbmUKKyAgICAgICAgIGlmICJzdGFydCIgaW4gYXR0cnM6CistICAgICAgICAgICAgc3RhcnRfdGltZXN0YW1wID0gaW50KGF0dHJzLmdldCh1InN0YXJ0IikpCisrICAgICAgICAgICAgc3RhcnRfdGltZXN0YW1wID0gaW50KGF0dHJzLmdldCgic3RhcnQiKSkKKyAgICAgICAgICAgICBzZWxmLnNjYW4uc3RhcnRfZGF0ZSA9IGRhdGV0aW1lLmRhdGV0aW1lLmZyb210aW1lc3RhbXAoCisgICAgICAgICAgICAgICAgICAgICBzdGFydF90aW1lc3RhbXApCistICAgICAgICBzZWxmLnNjYW4uc2Nhbm5lciA9IGF0dHJzLmdldCh1InNjYW5uZXIiKQorLSAgICAgICAgc2VsZi5zY2FuLmFyZ3MgPSBhdHRycy5nZXQodSJhcmdzIikKKy0gICAgICAgIHNlbGYuc2Nhbi52ZXJzaW9uID0gYXR0cnMuZ2V0KHUidmVyc2lvbiIpCisrICAgICAgICBzZWxmLnNjYW4uc2Nhbm5lciA9IGF0dHJzLmdldCgic2Nhbm5lciIpCisrICAgICAgICBzZWxmLnNjYW4uYXJncyA9IGF0dHJzLmdldCgiYXJncyIpCisrICAgICAgICBzZWxmLnNjYW4udmVyc2lvbiA9IGF0dHJzLmdldCgidmVyc2lvbiIpCisgCisgICAgIGRlZiBfc3RhcnRfaG9zdChzZWxmLCBuYW1lLCBhdHRycyk6CistICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09IHUibm1hcHJ1biIKKysgICAgICAgIGFzc2VydCBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gIm5tYXBydW4iCisgICAgICAgICBzZWxmLmN1cnJlbnRfaG9zdCA9IEhvc3QoKQorICAgICAgICAgc2VsZi5zY2FuLmhvc3RzLmFwcGVuZChzZWxmLmN1cnJlbnRfaG9zdCkKKyAKKyAgICAgZGVmIF9zdGFydF9zdGF0dXMoc2VsZiwgbmFtZSwgYXR0cnMpOgorLSAgICAgICAgYXNzZXJ0IHNlbGYucGFyZW50X2VsZW1lbnQoKSA9PSB1Imhvc3QiCisrICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09ICJob3N0IgorICAgICAgICAgYXNzZXJ0IHNlbGYuY3VycmVudF9ob3N0IGlzIG5vdCBOb25lCistICAgICAgICBzdGF0ZSA9IGF0dHJzLmdldCh1InN0YXRlIikKKysgICAgICAgIHN0YXRlID0gYXR0cnMuZ2V0KCJzdGF0ZSIpCisgICAgICAgICBpZiBzdGF0ZSBpcyBOb25lOgorICAgICAgICAgICAgIHdhcm4odSclcyBlbGVtZW50IG9mIGhvc3QgJXMgaXMgbWlzc2luZyB0aGUgInN0YXRlIiBhdHRyaWJ1dGU7ICcKKy0gICAgICAgICAgICAgICAgICAgICdhc3N1bWluZyBcdW5rbm93blwuJyAlICgKKysgICAgICAgICAgICAgICAgICAgIHInYXNzdW1pbmcgXHVua25vd25cLicgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc2VsZi5jdXJyZW50X2hvc3QuZm9ybWF0X25hbWUoKSkpCisgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICBzZWxmLmN1cnJlbnRfaG9zdC5zdGF0ZSA9IHN0YXRlCisgCisgICAgIGRlZiBfc3RhcnRfYWRkcmVzcyhzZWxmLCBuYW1lLCBhdHRycyk6CistICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09IHUiaG9zdCIKKysgICAgICAgIGFzc2VydCBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gImhvc3QiCisgICAgICAgICBhc3NlcnQgc2VsZi5jdXJyZW50X2hvc3QgaXMgbm90IE5vbmUKKy0gICAgICAgIGFkZHIgPSBhdHRycy5nZXQodSJhZGRyIikKKysgICAgICAgIGFkZHIgPSBhdHRycy5nZXQoImFkZHIiKQorICAgICAgICAgaWYgYWRkciBpcyBOb25lOgorLSAgICAgICAgICAgIHdhcm4odSclcyBlbGVtZW50IG9mIGhvc3QgJXMgaXMgbWlzc2luZyB0aGUgImFkZHIiICcKKysgICAgICAgICAgICB3YXJuKCclcyBlbGVtZW50IG9mIGhvc3QgJXMgaXMgbWlzc2luZyB0aGUgImFkZHIiICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGU7IHNraXBwaW5nLicgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc2VsZi5jdXJyZW50X2hvc3QuZm9ybWF0X25hbWUoKSkpCisgICAgICAgICAgICAgcmV0dXJuCistICAgICAgICBhZGRydHlwZSA9IGF0dHJzLmdldCh1ImFkZHJ0eXBlIiwgdSJpcHY0IikKKysgICAgICAgIGFkZHJ0eXBlID0gYXR0cnMuZ2V0KCJhZGRydHlwZSIsICJpcHY0IikKKyAgICAgICAgIHNlbGYuY3VycmVudF9ob3N0LmFkZF9hZGRyZXNzKEFkZHJlc3MubmV3KGFkZHJ0eXBlLCBhZGRyKSkKKyAKKyAgICAgZGVmIF9zdGFydF9ob3N0bmFtZShzZWxmLCBuYW1lLCBhdHRycyk6CistICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09IHUiaG9zdG5hbWVzIgorKyAgICAgICAgYXNzZXJ0IHNlbGYucGFyZW50X2VsZW1lbnQoKSA9PSAiaG9zdG5hbWVzIgorICAgICAgICAgYXNzZXJ0IHNlbGYuY3VycmVudF9ob3N0IGlzIG5vdCBOb25lCistICAgICAgICBob3N0bmFtZSA9IGF0dHJzLmdldCh1Im5hbWUiKQorKyAgICAgICAgaG9zdG5hbWUgPSBhdHRycy5nZXQoIm5hbWUiKQorICAgICAgICAgaWYgaG9zdG5hbWUgaXMgTm9uZToKKy0gICAgICAgICAgICB3YXJuKHUnJXMgZWxlbWVudCBvZiBob3N0ICVzIGlzIG1pc3NpbmcgdGhlICJuYW1lIiAnCisrICAgICAgICAgICAgd2FybignJXMgZWxlbWVudCBvZiBob3N0ICVzIGlzIG1pc3NpbmcgdGhlICJuYW1lIiAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlOyBza2lwcGluZy4nICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHNlbGYuY3VycmVudF9ob3N0LmZvcm1hdF9uYW1lKCkpKQorICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgc2VsZi5jdXJyZW50X2hvc3QuYWRkX2hvc3RuYW1lKGhvc3RuYW1lKQorIAorICAgICBkZWYgX3N0YXJ0X2V4dHJhcG9ydHMoc2VsZiwgbmFtZSwgYXR0cnMpOgorLSAgICAgICAgYXNzZXJ0IHNlbGYucGFyZW50X2VsZW1lbnQoKSA9PSB1InBvcnRzIgorKyAgICAgICAgYXNzZXJ0IHNlbGYucGFyZW50X2VsZW1lbnQoKSA9PSAicG9ydHMiCisgICAgICAgICBhc3NlcnQgc2VsZi5jdXJyZW50X2hvc3QgaXMgbm90IE5vbmUKKy0gICAgICAgIHN0YXRlID0gYXR0cnMuZ2V0KHUic3RhdGUiKQorKyAgICAgICAgc3RhdGUgPSBhdHRycy5nZXQoInN0YXRlIikKKyAgICAgICAgIGlmIHN0YXRlIGlzIE5vbmU6CistICAgICAgICAgICAgd2Fybih1JyVzIGVsZW1lbnQgb2YgaG9zdCAlcyBpcyBtaXNzaW5nIHRoZSAic3RhdGUiICcKKysgICAgICAgICAgICB3YXJuKCclcyBlbGVtZW50IG9mIGhvc3QgJXMgaXMgbWlzc2luZyB0aGUgInN0YXRlIiAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlOyBhc3N1bWluZyAidW5rbm93biIuJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBzZWxmLmN1cnJlbnRfaG9zdC5mb3JtYXRfbmFtZSgpKSkKKyAgICAgICAgICAgICBzdGF0ZSA9IE5vbmUKKyAgICAgICAgIGlmIHN0YXRlIGluIHNlbGYuY3VycmVudF9ob3N0LmV4dHJhcG9ydHM6CistICAgICAgICAgICAgd2Fybih1J0R1cGxpY2F0ZSBleHRyYXBvcnRzIHN0YXRlICIlcyIgaW4gaG9zdCAlcy4nICUgKAorKyAgICAgICAgICAgIHdhcm4oJ0R1cGxpY2F0ZSBleHRyYXBvcnRzIHN0YXRlICIlcyIgaW4gaG9zdCAlcy4nICUgKAorICAgICAgICAgICAgICAgICBzdGF0ZSwgc2VsZi5jdXJyZW50X2hvc3QuZm9ybWF0X25hbWUoKSkpCisgCistICAgICAgICBjb3VudCA9IGF0dHJzLmdldCh1ImNvdW50IikKKysgICAgICAgIGNvdW50ID0gYXR0cnMuZ2V0KCJjb3VudCIpCisgICAgICAgICBpZiBjb3VudCBpcyBOb25lOgorLSAgICAgICAgICAgIHdhcm4odSclcyBlbGVtZW50IG9mIGhvc3QgJXMgaXMgbWlzc2luZyB0aGUgImNvdW50IiAnCisrICAgICAgICAgICAgd2FybignJXMgZWxlbWVudCBvZiBob3N0ICVzIGlzIG1pc3NpbmcgdGhlICJjb3VudCIgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZTsgYXNzdW1pbmcgMC4nICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHNlbGYuY3VycmVudF9ob3N0LmZvcm1hdF9uYW1lKCkpKQorICAgICAgICAgICAgIGNvdW50ID0gMAorQEAgLTEzMTQsOTkgKzEzMTEsOTkgQEAgY2xhc3MgTm1hcENvbnRlbnRIYW5kbGVyKHhtbC5zYXguaGFuZGxlci5Db250ZW50SGFuZGxlcik6CisgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICBjb3VudCA9IGludChjb3VudCkKKyAgICAgICAgICAgICBleGNlcHQgVmFsdWVFcnJvcjoKKy0gICAgICAgICAgICAgICAgd2Fybih1IkNhbid0IGNvbnZlcnQgZXh0cmFwb3J0cyBjb3VudCBcIiVzXCIgIgorKyAgICAgICAgICAgICAgICB3YXJuKCJDYW4ndCBjb252ZXJ0IGV4dHJhcG9ydHMgY291bnQgXCIlc1wiICIKKyAgICAgICAgICAgICAgICAgICAgICAgICAidG8gYW4gaW50ZWdlciBpbiBob3N0ICVzOyBhc3N1bWluZyAwLiIgJSAoCistICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzW3UiY291bnQiXSwgc2VsZi5jdXJyZW50X2hvc3QuZm9ybWF0X25hbWUoKSkpCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGF0dHJzWyJjb3VudCJdLCBzZWxmLmN1cnJlbnRfaG9zdC5mb3JtYXRfbmFtZSgpKSkKKyAgICAgICAgICAgICAgICAgY291bnQgPSAwCisgICAgICAgICBzZWxmLmN1cnJlbnRfaG9zdC5leHRyYXBvcnRzW3N0YXRlXSA9IGNvdW50CisgCisgICAgIGRlZiBfc3RhcnRfcG9ydChzZWxmLCBuYW1lLCBhdHRycyk6CistICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09IHUicG9ydHMiCisrICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09ICJwb3J0cyIKKyAgICAgICAgIGFzc2VydCBzZWxmLmN1cnJlbnRfaG9zdCBpcyBub3QgTm9uZQorLSAgICAgICAgcG9ydGlkX3N0ciA9IGF0dHJzLmdldCh1InBvcnRpZCIpCisrICAgICAgICBwb3J0aWRfc3RyID0gYXR0cnMuZ2V0KCJwb3J0aWQiKQorICAgICAgICAgaWYgcG9ydGlkX3N0ciBpcyBOb25lOgorLSAgICAgICAgICAgIHdhcm4odSclcyBlbGVtZW50IG9mIGhvc3QgJXMgbWlzc2luZyB0aGUgInBvcnRpZCIgJworKyAgICAgICAgICAgIHdhcm4oJyVzIGVsZW1lbnQgb2YgaG9zdCAlcyBtaXNzaW5nIHRoZSAicG9ydGlkIiAnCisgICAgICAgICAgICAgICAgICAgICAnYXR0cmlidXRlOyBza2lwcGluZy4nICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgIG5hbWUsIHNlbGYuY3VycmVudF9ob3N0LmZvcm1hdF9uYW1lKCkpKQorICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgdHJ5OgorICAgICAgICAgICAgIHBvcnRpZCA9IGludChwb3J0aWRfc3RyKQorICAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CistICAgICAgICAgICAgd2Fybih1IkNhbid0IGNvbnZlcnQgcG9ydGlkIFwiJXNcIiB0byBhbiBpbnRlZ2VyICIKKysgICAgICAgICAgICB3YXJuKCJDYW4ndCBjb252ZXJ0IHBvcnRpZCBcIiVzXCIgdG8gYW4gaW50ZWdlciAiCisgICAgICAgICAgICAgICAgICAgICAiaW4gaG9zdCAlczsgc2tpcHBpbmcgcG9ydC4iICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgIHBvcnRpZF9zdHIsIHNlbGYuY3VycmVudF9ob3N0LmZvcm1hdF9uYW1lKCkpKQorICAgICAgICAgICAgIHJldHVybgorLSAgICAgICAgcHJvdG9jb2wgPSBhdHRycy5nZXQodSJwcm90b2NvbCIpCisrICAgICAgICBwcm90b2NvbCA9IGF0dHJzLmdldCgicHJvdG9jb2wiKQorICAgICAgICAgaWYgcHJvdG9jb2wgaXMgTm9uZToKKy0gICAgICAgICAgICB3YXJuKHUnJXMgZWxlbWVudCBvZiBob3N0ICVzIG1pc3NpbmcgdGhlICJwcm90b2NvbCIgJworKyAgICAgICAgICAgIHdhcm4oJyVzIGVsZW1lbnQgb2YgaG9zdCAlcyBtaXNzaW5nIHRoZSAicHJvdG9jb2wiICcKKyAgICAgICAgICAgICAgICAgICAgICdhdHRyaWJ1dGU7IHNraXBwaW5nLicgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc2VsZi5jdXJyZW50X2hvc3QuZm9ybWF0X25hbWUoKSkpCisgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICBzZWxmLmN1cnJlbnRfcG9ydCA9IFBvcnQoKHBvcnRpZCwgcHJvdG9jb2wpKQorIAorICAgICBkZWYgX3N0YXJ0X3N0YXRlKHNlbGYsIG5hbWUsIGF0dHJzKToKKy0gICAgICAgIGFzc2VydCBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gdSJwb3J0IgorKyAgICAgICAgYXNzZXJ0IHNlbGYucGFyZW50X2VsZW1lbnQoKSA9PSAicG9ydCIKKyAgICAgICAgIGFzc2VydCBzZWxmLmN1cnJlbnRfaG9zdCBpcyBub3QgTm9uZQorICAgICAgICAgaWYgc2VsZi5jdXJyZW50X3BvcnQgaXMgTm9uZToKKyAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgIGlmICJzdGF0ZSIgbm90IGluIGF0dHJzOgorLSAgICAgICAgICAgIHdhcm4odSclcyBlbGVtZW50IG9mIHBvcnQgJXMgaXMgbWlzc2luZyB0aGUgInN0YXRlIiAnCisrICAgICAgICAgICAgd2FybignJXMgZWxlbWVudCBvZiBwb3J0ICVzIGlzIG1pc3NpbmcgdGhlICJzdGF0ZSIgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZTsgYXNzdW1pbmcgInVua25vd24iLicgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgbmFtZSwgc2VsZi5jdXJyZW50X3BvcnQuc3BlY19zdHJpbmcoKSkpCisgICAgICAgICAgICAgcmV0dXJuCistICAgICAgICBzZWxmLmN1cnJlbnRfcG9ydC5zdGF0ZSA9IGF0dHJzW3Uic3RhdGUiXQorKyAgICAgICAgc2VsZi5jdXJyZW50X3BvcnQuc3RhdGUgPSBhdHRyc1sic3RhdGUiXQorICAgICAgICAgc2VsZi5jdXJyZW50X2hvc3QuYWRkX3BvcnQoc2VsZi5jdXJyZW50X3BvcnQpCisgCisgICAgIGRlZiBfc3RhcnRfc2VydmljZShzZWxmLCBuYW1lLCBhdHRycyk6CistICAgICAgICBhc3NlcnQgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09IHUicG9ydCIKKysgICAgICAgIGFzc2VydCBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gInBvcnQiCisgICAgICAgICBhc3NlcnQgc2VsZi5jdXJyZW50X2hvc3QgaXMgbm90IE5vbmUKKyAgICAgICAgIGlmIHNlbGYuY3VycmVudF9wb3J0IGlzIE5vbmU6CisgICAgICAgICAgICAgcmV0dXJuCistICAgICAgICBzZWxmLmN1cnJlbnRfcG9ydC5zZXJ2aWNlLm5hbWUgPSBhdHRycy5nZXQodSJuYW1lIikKKy0gICAgICAgIHNlbGYuY3VycmVudF9wb3J0LnNlcnZpY2UucHJvZHVjdCA9IGF0dHJzLmdldCh1InByb2R1Y3QiKQorLSAgICAgICAgc2VsZi5jdXJyZW50X3BvcnQuc2VydmljZS52ZXJzaW9uID0gYXR0cnMuZ2V0KHUidmVyc2lvbiIpCistICAgICAgICBzZWxmLmN1cnJlbnRfcG9ydC5zZXJ2aWNlLmV4dHJhaW5mbyA9IGF0dHJzLmdldCh1ImV4dHJhaW5mbyIpCistICAgICAgICBzZWxmLmN1cnJlbnRfcG9ydC5zZXJ2aWNlLnR1bm5lbCA9IGF0dHJzLmdldCh1InR1bm5lbCIpCisrICAgICAgICBzZWxmLmN1cnJlbnRfcG9ydC5zZXJ2aWNlLm5hbWUgPSBhdHRycy5nZXQoIm5hbWUiKQorKyAgICAgICAgc2VsZi5jdXJyZW50X3BvcnQuc2VydmljZS5wcm9kdWN0ID0gYXR0cnMuZ2V0KCJwcm9kdWN0IikKKysgICAgICAgIHNlbGYuY3VycmVudF9wb3J0LnNlcnZpY2UudmVyc2lvbiA9IGF0dHJzLmdldCgidmVyc2lvbiIpCisrICAgICAgICBzZWxmLmN1cnJlbnRfcG9ydC5zZXJ2aWNlLmV4dHJhaW5mbyA9IGF0dHJzLmdldCgiZXh0cmFpbmZvIikKKysgICAgICAgIHNlbGYuY3VycmVudF9wb3J0LnNlcnZpY2UudHVubmVsID0gYXR0cnMuZ2V0KCJ0dW5uZWwiKQorIAorICAgICBkZWYgX3N0YXJ0X3NjcmlwdChzZWxmLCBuYW1lLCBhdHRycyk6CisgICAgICAgICByZXN1bHQgPSBTY3JpcHRSZXN1bHQoKQorLSAgICAgICAgcmVzdWx0LmlkID0gYXR0cnMuZ2V0KHUiaWQiKQorKyAgICAgICAgcmVzdWx0LmlkID0gYXR0cnMuZ2V0KCJpZCIpCisgICAgICAgICBpZiByZXN1bHQuaWQgaXMgTm9uZToKKy0gICAgICAgICAgICB3YXJuKHUnJXMgZWxlbWVudCBtaXNzaW5nIHRoZSAiaWQiIGF0dHJpYnV0ZTsgc2tpcHBpbmcuJyAlIG5hbWUpCisrICAgICAgICAgICAgd2FybignJXMgZWxlbWVudCBtaXNzaW5nIHRoZSAiaWQiIGF0dHJpYnV0ZTsgc2tpcHBpbmcuJyAlIG5hbWUpCisgICAgICAgICAgICAgcmV0dXJuCisgCistICAgICAgICByZXN1bHQub3V0cHV0ID0gYXR0cnMuZ2V0KHUib3V0cHV0IikKKysgICAgICAgIHJlc3VsdC5vdXRwdXQgPSBhdHRycy5nZXQoIm91dHB1dCIpCisgICAgICAgICBpZiByZXN1bHQub3V0cHV0IGlzIE5vbmU6CistICAgICAgICAgICAgd2Fybih1JyVzIGVsZW1lbnQgbWlzc2luZyB0aGUgIm91dHB1dCIgYXR0cmlidXRlOyBza2lwcGluZy4nCisrICAgICAgICAgICAgd2FybignJXMgZWxlbWVudCBtaXNzaW5nIHRoZSAib3V0cHV0IiBhdHRyaWJ1dGU7IHNraXBwaW5nLicKKyAgICAgICAgICAgICAgICAgICAgICUgbmFtZSkKKyAgICAgICAgICAgICByZXR1cm4KKy0gICAgICAgIGlmIHNlbGYucGFyZW50X2VsZW1lbnQoKSA9PSB1InByZXNjcmlwdCI6CisrICAgICAgICBpZiBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gInByZXNjcmlwdCI6CisgICAgICAgICAgICAgc2VsZi5zY2FuLnByZV9zY3JpcHRfcmVzdWx0cy5hcHBlbmQocmVzdWx0KQorLSAgICAgICAgZWxpZiBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gdSJwb3N0c2NyaXB0IjoKKysgICAgICAgIGVsaWYgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09ICJwb3N0c2NyaXB0IjoKKyAgICAgICAgICAgICBzZWxmLnNjYW4ucG9zdF9zY3JpcHRfcmVzdWx0cy5hcHBlbmQocmVzdWx0KQorLSAgICAgICAgZWxpZiBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gdSJob3N0c2NyaXB0IjoKKysgICAgICAgIGVsaWYgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09ICJob3N0c2NyaXB0IjoKKyAgICAgICAgICAgICBzZWxmLmN1cnJlbnRfaG9zdC5zY3JpcHRfcmVzdWx0cy5hcHBlbmQocmVzdWx0KQorLSAgICAgICAgZWxpZiBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gdSJwb3J0IjoKKysgICAgICAgIGVsaWYgc2VsZi5wYXJlbnRfZWxlbWVudCgpID09ICJwb3J0IjoKKyAgICAgICAgICAgICBzZWxmLmN1cnJlbnRfcG9ydC5zY3JpcHRfcmVzdWx0cy5hcHBlbmQocmVzdWx0KQorICAgICAgICAgZWxzZToKKy0gICAgICAgICAgICB3YXJuKHUiJXMgZWxlbWVudCBub3QgaW5zaWRlIHByZXNjcmlwdCwgcG9zdHNjcmlwdCwgaG9zdHNjcmlwdCwgIgorKyAgICAgICAgICAgIHdhcm4oIiVzIGVsZW1lbnQgbm90IGluc2lkZSBwcmVzY3JpcHQsIHBvc3RzY3JpcHQsIGhvc3RzY3JpcHQsICIKKyAgICAgICAgICAgICAgICAgICAgICJvciBwb3J0IGVsZW1lbnQ7IGlnbm9yaW5nLiIgJSBuYW1lKQorICAgICAgICAgICAgIHJldHVybgorIAorICAgICBkZWYgX3N0YXJ0X29zbWF0Y2goc2VsZiwgbmFtZSwgYXR0cnMpOgorLSAgICAgICAgYXNzZXJ0IHNlbGYucGFyZW50X2VsZW1lbnQoKSA9PSB1Im9zIgorKyAgICAgICAgYXNzZXJ0IHNlbGYucGFyZW50X2VsZW1lbnQoKSA9PSAib3MiCisgICAgICAgICBhc3NlcnQgc2VsZi5jdXJyZW50X2hvc3QgaXMgbm90IE5vbmUKKyAgICAgICAgIGlmICJuYW1lIiBub3QgaW4gYXR0cnM6CistICAgICAgICAgICAgd2Fybih1JyVzIGVsZW1lbnQgb2YgaG9zdCAlcyBpcyBtaXNzaW5nIHRoZSAibmFtZSIgJworKyAgICAgICAgICAgIHdhcm4oJyVzIGVsZW1lbnQgb2YgaG9zdCAlcyBpcyBtaXNzaW5nIHRoZSAibmFtZSIgJworICAgICAgICAgICAgICAgICAgICAgJ2F0dHJpYnV0ZTsgc2tpcHBpbmcuJyAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lLCBzZWxmLmN1cnJlbnRfaG9zdC5mb3JtYXRfbmFtZSgpKSkKKyAgICAgICAgICAgICByZXR1cm4KKy0gICAgICAgIHNlbGYuY3VycmVudF9ob3N0Lm9zLmFwcGVuZChhdHRyc1t1Im5hbWUiXSkKKysgICAgICAgIHNlbGYuY3VycmVudF9ob3N0Lm9zLmFwcGVuZChhdHRyc1sibmFtZSJdKQorIAorICAgICBkZWYgX3N0YXJ0X2ZpbmlzaGVkKHNlbGYsIG5hbWUsIGF0dHJzKToKKy0gICAgICAgIGFzc2VydCBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gdSJydW5zdGF0cyIKKysgICAgICAgIGFzc2VydCBzZWxmLnBhcmVudF9lbGVtZW50KCkgPT0gInJ1bnN0YXRzIgorICAgICAgICAgaWYgInRpbWUiIGluIGF0dHJzOgorLSAgICAgICAgICAgIGVuZF90aW1lc3RhbXAgPSBpbnQoYXR0cnMuZ2V0KHUidGltZSIpKQorKyAgICAgICAgICAgIGVuZF90aW1lc3RhbXAgPSBpbnQoYXR0cnMuZ2V0KCJ0aW1lIikpCisgICAgICAgICAgICAgc2VsZi5zY2FuLmVuZF9kYXRlID0gZGF0ZXRpbWUuZGF0ZXRpbWUuZnJvbXRpbWVzdGFtcChlbmRfdGltZXN0YW1wKQorIAorICAgICBkZWYgX2VuZF9ob3N0KHNlbGYsIG5hbWUpOgorQEAgLTE0MjUsMjMgKzE0MjIsMjMgQEAgY2xhc3MgWE1MV3JpdGVyICh4bWwuc2F4LnNheHV0aWxzLlhNTEdlbmVyYXRvcik6CisgCisgICAgIGRlZiBmcmFnKHNlbGYsIGZyYWcpOgorICAgICAgICAgZm9yIG5vZGUgaW4gZnJhZy5jaGlsZE5vZGVzOgorLSAgICAgICAgICAgIG5vZGUud3JpdGV4bWwoc2VsZi5mLCBuZXdsPXUiXG4iKQorKyAgICAgICAgICAgIG5vZGUud3JpdGV4bWwoc2VsZi5mLCBuZXdsPSJcbiIpCisgCisgICAgIGRlZiBmcmFnX2Eoc2VsZiwgZnJhZyk6CistICAgICAgICBzZWxmLnN0YXJ0RWxlbWVudCh1ImEiLCB7fSkKKysgICAgICAgIHNlbGYuc3RhcnRFbGVtZW50KCJhIiwge30pCisgICAgICAgICBmb3Igbm9kZSBpbiBmcmFnLmNoaWxkTm9kZXM6CistICAgICAgICAgICAgbm9kZS53cml0ZXhtbChzZWxmLmYsIG5ld2w9dSJcbiIpCistICAgICAgICBzZWxmLmVuZEVsZW1lbnQodSJhIikKKysgICAgICAgICAgICBub2RlLndyaXRleG1sKHNlbGYuZiwgbmV3bD0iXG4iKQorKyAgICAgICAgc2VsZi5lbmRFbGVtZW50KCJhIikKKyAKKyAgICAgZGVmIGZyYWdfYihzZWxmLCBmcmFnKToKKy0gICAgICAgIHNlbGYuc3RhcnRFbGVtZW50KHUiYiIsIHt9KQorKyAgICAgICAgc2VsZi5zdGFydEVsZW1lbnQoImIiLCB7fSkKKyAgICAgICAgIGZvciBub2RlIGluIGZyYWcuY2hpbGROb2RlczoKKy0gICAgICAgICAgICBub2RlLndyaXRleG1sKHNlbGYuZiwgbmV3bD11IlxuIikKKy0gICAgICAgIHNlbGYuZW5kRWxlbWVudCh1ImIiKQorKyAgICAgICAgICAgIG5vZGUud3JpdGV4bWwoc2VsZi5mLCBuZXdsPSJcbiIpCisrICAgICAgICBzZWxmLmVuZEVsZW1lbnQoImIiKQorIAorIAorIGRlZiB1c2FnZSgpOgorLSAgICBwcmludCB1IiIiXAorKyAgICBwcmludCgiIiJcCisgVXNhZ2U6ICVzIFtvcHRpb25dIEZJTEUxIEZJTEUyCisgQ29tcGFyZSB0d28gTm1hcCBYTUwgZmlsZXMgYW5kIGRpc3BsYXkgYSBsaXN0IG9mIHRoZWlyIGRpZmZlcmVuY2VzLgorIERpZmZlcmVuY2VzIGluY2x1ZGUgaG9zdCBzdGF0ZSBjaGFuZ2VzLCBwb3J0IHN0YXRlIGNoYW5nZXMsIGFuZCBjaGFuZ2VzIHRvCitAQCAtMTQ1MSw3ICsxNDQ4LDcgQEAgc2VydmljZSBhbmQgT1MgZGV0ZWN0aW9uLgorICAgLXYsIC0tdmVyYm9zZSAgYWxzbyBzaG93IGhvc3RzIGFuZCBwb3J0cyB0aGF0IGhhdmVuJ3QgY2hhbmdlZC4KKyAgIC0tdGV4dCAgICAgICAgIGRpc3BsYXkgb3V0cHV0IGluIHRleHQgZm9ybWF0IChkZWZhdWx0KQorICAgLS14bWwgICAgICAgICAgZGlzcGxheSBvdXRwdXQgaW4gWE1MIGZvcm1hdFwKKy0iIiIgJSBzeXMuYXJndlswXQorKyIiIiAlIHN5cy5hcmd2WzBdKQorIAorIEVYSVRfRVFVQUwgPSAwCisgRVhJVF9ESUZGRVJFTlQgPSAxCitAQCAtMTQ1OSw4ICsxNDU2LDggQEAgRVhJVF9FUlJPUiA9IDIKKyAKKyAKKyBkZWYgdXNhZ2VfZXJyb3IobXNnKToKKy0gICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgdSIlczogJXMiICUgKHN5cy5hcmd2WzBdLCBtc2cpCistICAgIHByaW50ID4+IHN5cy5zdGRlcnIsIHUiVHJ5ICclcyAtaCcgZm9yIGhlbHAuIiAlIHN5cy5hcmd2WzBdCisrICAgIHByaW50KCIlczogJXMiICUgKHN5cy5hcmd2WzBdLCBtc2cpLCBmaWxlPXN5cy5zdGRlcnIpCisrICAgIHByaW50KCJUcnkgJyVzIC1oJyBmb3IgaGVscC4iICUgc3lzLmFyZ3ZbMF0sIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgc3lzLmV4aXQoRVhJVF9FUlJPUikKKyAKKyAKK0BAIC0xNDcxLDcgKzE0NjgsNyBAQCBkZWYgbWFpbigpOgorICAgICB0cnk6CisgICAgICAgICBvcHRzLCBpbnB1dF9maWxlbmFtZXMgPSBnZXRvcHQuZ251X2dldG9wdCgKKyAgICAgICAgICAgICAgICAgc3lzLmFyZ3ZbMTpdLCAiaHYiLCBbImhlbHAiLCAidGV4dCIsICJ2ZXJib3NlIiwgInhtbCJdKQorLSAgICBleGNlcHQgZ2V0b3B0LkdldG9wdEVycm9yLCBlOgorKyAgICBleGNlcHQgZ2V0b3B0LkdldG9wdEVycm9yIGFzIGU6CisgICAgICAgICB1c2FnZV9lcnJvcihlLm1zZykKKyAgICAgZm9yIG8sIGEgaW4gb3B0czoKKyAgICAgICAgIGlmIG8gPT0gIi1oIiBvciBvID09ICItLWhlbHAiOgorQEAgLTE0ODEsMTUgKzE0NzgsMTUgQEAgZGVmIG1haW4oKToKKyAgICAgICAgICAgICB2ZXJib3NlID0gVHJ1ZQorICAgICAgICAgZWxpZiBvID09ICItLXRleHQiOgorICAgICAgICAgICAgIGlmIG91dHB1dF9mb3JtYXQgaXMgbm90IE5vbmUgYW5kIG91dHB1dF9mb3JtYXQgIT0gInRleHQiOgorLSAgICAgICAgICAgICAgICB1c2FnZV9lcnJvcih1ImNvbnRyYWRpY3Rvcnkgb3V0cHV0IGZvcm1hdCBvcHRpb25zLiIpCisrICAgICAgICAgICAgICAgIHVzYWdlX2Vycm9yKCJjb250cmFkaWN0b3J5IG91dHB1dCBmb3JtYXQgb3B0aW9ucy4iKQorICAgICAgICAgICAgIG91dHB1dF9mb3JtYXQgPSAidGV4dCIKKyAgICAgICAgIGVsaWYgbyA9PSAiLS14bWwiOgorICAgICAgICAgICAgIGlmIG91dHB1dF9mb3JtYXQgaXMgbm90IE5vbmUgYW5kIG91dHB1dF9mb3JtYXQgIT0gInhtbCI6CistICAgICAgICAgICAgICAgIHVzYWdlX2Vycm9yKHUiY29udHJhZGljdG9yeSBvdXRwdXQgZm9ybWF0IG9wdGlvbnMuIikKKysgICAgICAgICAgICAgICAgdXNhZ2VfZXJyb3IoImNvbnRyYWRpY3Rvcnkgb3V0cHV0IGZvcm1hdCBvcHRpb25zLiIpCisgICAgICAgICAgICAgb3V0cHV0X2Zvcm1hdCA9ICJ4bWwiCisgCisgICAgIGlmIGxlbihpbnB1dF9maWxlbmFtZXMpICE9IDI6CistICAgICAgICB1c2FnZV9lcnJvcih1Im5lZWQgZXhhY3RseSB0d28gaW5wdXQgZmlsZW5hbWVzLiIpCisrICAgICAgICB1c2FnZV9lcnJvcigibmVlZCBleGFjdGx5IHR3byBpbnB1dCBmaWxlbmFtZXMuIikKKyAKKyAgICAgaWYgb3V0cHV0X2Zvcm1hdCBpcyBOb25lOgorICAgICAgICAgb3V0cHV0X2Zvcm1hdCA9ICJ0ZXh0IgorQEAgLTE1MDIsOCArMTQ5OSw4IEBAIGRlZiBtYWluKCk6CisgICAgICAgICBzY2FuX2EubG9hZF9mcm9tX2ZpbGUoZmlsZW5hbWVfYSkKKyAgICAgICAgIHNjYW5fYiA9IFNjYW4oKQorICAgICAgICAgc2Nhbl9iLmxvYWRfZnJvbV9maWxlKGZpbGVuYW1lX2IpCistICAgIGV4Y2VwdCBJT0Vycm9yLCBlOgorLSAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgdSJDYW4ndCBvcGVuIGZpbGU6ICVzIiAlIHN0cihlKQorKyAgICBleGNlcHQgSU9FcnJvciBhcyBlOgorKyAgICAgICAgcHJpbnQoIkNhbid0IG9wZW4gZmlsZTogJXMiICUgc3RyKGUpLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgICAgICBzeXMuZXhpdChFWElUX0VSUk9SKQorIAorICAgICBpZiBvdXRwdXRfZm9ybWF0ID09ICJ0ZXh0IjoKK2RpZmYgLS1naXQgYS9uZGlmZi9uZGlmZnRlc3QucHkgYi9uZGlmZi9uZGlmZnRlc3QucHkKK2luZGV4IDJmYTRhZTAuLjI3ZmM1MjUgMTAwNzU1CistLS0gYS9uZGlmZi9uZGlmZnRlc3QucHkKKysrKyBiL25kaWZmL25kaWZmdGVzdC5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIAorICMgVW5pdCB0ZXN0cyBmb3IgTmRpZmYuCisgCitAQCAtMjIsNyArMjIsNyBAQCBmb3IgeCBpbiBkaXIobmRpZmYpOgorIHN5cy5kb250X3dyaXRlX2J5dGVjb2RlID0gZG9udF93cml0ZV9ieXRlY29kZQorIGRlbCBkb250X3dyaXRlX2J5dGVjb2RlCisgCistaW1wb3J0IFN0cmluZ0lPCisraW1wb3J0IGlvCisgCisgCisgY2xhc3Mgc2Nhbl90ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKK0BAIC01Miw3ICs1Miw3IEBAIGNsYXNzIHNjYW5fdGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBzY2FuLmxvYWRfZnJvbV9maWxlKCJ0ZXN0LXNjYW5zL3NpbmdsZS54bWwiKQorICAgICAgICAgaG9zdCA9IHNjYW4uaG9zdHNbMF0KKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGhvc3QucG9ydHMpLCA1KQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChob3N0LmV4dHJhcG9ydHMuaXRlbXMoKSwgWygiZmlsdGVyZWQiLCA5NSldKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGhvc3QuZXh0cmFwb3J0cy5pdGVtcygpKSwgWygiZmlsdGVyZWQiLCA5NSldKQorIAorICAgICBkZWYgdGVzdF9leHRyYXBvcnRzX211bHRpKHNlbGYpOgorICAgICAgICAgIiIiVGVzdCB0aGF0IHRoZSBjb3JyZWN0IG51bWJlciBvZiBrbm93biBwb3J0cyBpcyByZXR1cm5lZCB3aGVuIHRoZXJlCitAQCAtNjgsOSArNjgsOSBAQCBjbGFzcyBzY2FuX3Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgIiIiVGVzdCB0aGF0IG5tYXBydW4gaW5mb3JtYXRpb24gaXMgcmVjb3JkZWQuIiIiCisgICAgICAgICBzY2FuID0gU2NhbigpCisgICAgICAgICBzY2FuLmxvYWRfZnJvbV9maWxlKCJ0ZXN0LXNjYW5zL2VtcHR5LnhtbCIpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjYW4uc2Nhbm5lciwgdSJubWFwIikKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Nhbi52ZXJzaW9uLCB1IjQuOTBSQzIiKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY2FuLmFyZ3MsIHUibm1hcCAtb1ggZW1wdHkueG1sIC1wIDEtMTAwIikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Nhbi5zY2FubmVyLCAibm1hcCIpCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNjYW4udmVyc2lvbiwgIjQuOTBSQzIiKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzY2FuLmFyZ3MsICJubWFwIC1vWCBlbXB0eS54bWwgLXAgMS0xMDAiKQorIAorICAgICBkZWYgdGVzdF9hZGRyZXNzZXMoc2VsZik6CisgICAgICAgICAiIiJUZXN0IHRoYXQgYWRkcmVzc2VzIGFyZSByZWNvcmRlZC4iIiIKK0BAIC04NCw3ICs4NCw3IEBAIGNsYXNzIHNjYW5fdGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICAgICBzY2FuID0gU2NhbigpCisgICAgICAgICBzY2FuLmxvYWRfZnJvbV9maWxlKCJ0ZXN0LXNjYW5zL3NpbXBsZS54bWwiKQorICAgICAgICAgaG9zdCA9IHNjYW4uaG9zdHNbMF0KKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaG9zdC5ob3N0bmFtZXMsIFt1InNjYW5tZS5ubWFwLm9yZyJdKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChob3N0Lmhvc3RuYW1lcywgWyJzY2FubWUubm1hcC5vcmciXSkKKyAKKyAgICAgZGVmIHRlc3Rfb3Moc2VsZik6CisgICAgICAgICAiIiJUZXN0IHRoYXQgT1MgaW5mb3JtYXRpb24gaXMgcmVjb3JkZWQuIiIiCitAQCAtOTksNyArOTksNyBAQCBjbGFzcyBzY2FuX3Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgc2Nhbi5sb2FkX2Zyb21fZmlsZSgidGVzdC1zY2Fucy9jb21wbGV4LnhtbCIpCisgICAgICAgICBob3N0ID0gc2Nhbi5ob3N0c1swXQorICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihob3N0LnNjcmlwdF9yZXN1bHRzKSA+IDApCistICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKGhvc3QucG9ydHNbKDIyLCB1InRjcCIpXS5zY3JpcHRfcmVzdWx0cykgPiAwKQorKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGxlbihob3N0LnBvcnRzWygyMiwgInRjcCIpXS5zY3JpcHRfcmVzdWx0cykgPiAwKQorIAorICMgVGhpcyB0ZXN0IGlzIGNvbW1lbnRlZCBvdXQgYmVjYXVzZSBObWFwIFhNTCBkb2Vzbid0IHN0b3JlIGFueSBpbmZvcm1hdGlvbgorICMgYWJvdXQgZG93biBob3N0cywgbm90IGV2ZW4gdGhlIGZhY3QgdGhhdCB0aGV5IGFyZSBkb3duLiBSZWNvdmVyaW5nIHRoZSBsaXN0CitAQCAtMTI4LDE2ICsxMjgsMTYgQEAgY2xhc3MgaG9zdF90ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAKKyAgICAgZGVmIHRlc3RfZm9ybWF0X25hbWUoc2VsZik6CisgICAgICAgICBoID0gSG9zdCgpCistICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShoLmZvcm1hdF9uYW1lKCksIGJhc2VzdHJpbmcpKQorLSAgICAgICAgaC5hZGRfYWRkcmVzcyhJUHY0QWRkcmVzcyh1IjEyNy4wLjAuMSIpKQorLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHUiMTI3LjAuMC4xIiBpbiBoLmZvcm1hdF9uYW1lKCkpCisrICAgICAgICBzZWxmLmFzc2VydFRydWUoaXNpbnN0YW5jZShoLmZvcm1hdF9uYW1lKCksIHN0cikpCisrICAgICAgICBoLmFkZF9hZGRyZXNzKElQdjRBZGRyZXNzKCIxMjcuMC4wLjEiKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiMTI3LjAuMC4xIiBpbiBoLmZvcm1hdF9uYW1lKCkpCisgICAgICAgICBoLmFkZF9hZGRyZXNzKElQdjZBZGRyZXNzKCI6OjEiKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh1IjEyNy4wLjAuMSIgaW4gaC5mb3JtYXRfbmFtZSgpKQorLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHUiOjoxIiBpbiBoLmZvcm1hdF9uYW1lKCkpCistICAgICAgICBoLmFkZF9ob3N0bmFtZSh1ImxvY2FsaG9zdCIpCistICAgICAgICBzZWxmLmFzc2VydFRydWUodSIxMjcuMC4wLjEiIGluIGguZm9ybWF0X25hbWUoKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh1Ijo6MSIgaW4gaC5mb3JtYXRfbmFtZSgpKQorLSAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHUibG9jYWxob3N0IiBpbiBoLmZvcm1hdF9uYW1lKCkpCisrICAgICAgICBzZWxmLmFzc2VydFRydWUoIjEyNy4wLjAuMSIgaW4gaC5mb3JtYXRfbmFtZSgpKQorKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCI6OjEiIGluIGguZm9ybWF0X25hbWUoKSkKKysgICAgICAgIGguYWRkX2hvc3RuYW1lKCJsb2NhbGhvc3QiKQorKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKCIxMjcuMC4wLjEiIGluIGguZm9ybWF0X25hbWUoKSkKKysgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgiOjoxIiBpbiBoLmZvcm1hdF9uYW1lKCkpCisrICAgICAgICBzZWxmLmFzc2VydFRydWUoImxvY2FsaG9zdCIgaW4gaC5mb3JtYXRfbmFtZSgpKQorIAorICAgICBkZWYgdGVzdF9lbXB0eV9nZXRfcG9ydChzZWxmKToKKyAgICAgICAgIGggPSBIb3N0KCkKK0BAIC0xOTcsOCArMTk3LDggQEAgY2xhc3MgaG9zdF90ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIGggPSBzLmhvc3RzWzBdCisgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihoLnBvcnRzKSwgNSkKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKGguZXh0cmFwb3J0cyksIDEpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGguZXh0cmFwb3J0cy5rZXlzKClbMF0sIHUiZmlsdGVyZWQiKQorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLmV4dHJhcG9ydHMudmFsdWVzKClbMF0sIDk1KQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGguZXh0cmFwb3J0cy5rZXlzKCkpWzBdLCAiZmlsdGVyZWQiKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsaXN0KGguZXh0cmFwb3J0cy52YWx1ZXMoKSlbMF0sIDk1KQorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChoLnN0YXRlLCAidXAiKQorIAorIAorQEAgLTI0MSwxMyArMjQxLDEzIEBAIGNsYXNzIHBvcnRfdGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgICIiIlRlc3QgdGhlIFBvcnQgY2xhc3MuIiIiCisgICAgIGRlZiB0ZXN0X3NwZWNfc3RyaW5nKHNlbGYpOgorICAgICAgICAgcCA9IFBvcnQoKDEwLCAidGNwIikpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3BlY19zdHJpbmcoKSwgdSIxMC90Y3AiKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnNwZWNfc3RyaW5nKCksICIxMC90Y3AiKQorICAgICAgICAgcCA9IFBvcnQoKDEwMCwgImlwIikpCistICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHAuc3BlY19zdHJpbmcoKSwgdSIxMDAvaXAiKQorKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChwLnNwZWNfc3RyaW5nKCksICIxMDAvaXAiKQorIAorICAgICBkZWYgdGVzdF9zdGF0ZV9zdHJpbmcoc2VsZik6CisgICAgICAgICBwID0gUG9ydCgoMTAsICJ0Y3AiKSkKKy0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGF0ZV9zdHJpbmcoKSwgdSJ1bmtub3duIikKKysgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwocC5zdGF0ZV9zdHJpbmcoKSwgInVua25vd24iKQorIAorIAorIGNsYXNzIHNlcnZpY2VfdGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CitAQCAtMjU1LDQ3ICsyNTUsNDcgQEAgY2xhc3Mgc2VydmljZV90ZXN0KHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgZGVmIHRlc3RfY29tcGFyZShzZWxmKToKKyAgICAgICAgICIiIlRlc3QgdGhhdCBzZXJ2aWNlcyB3aXRoIHRoZSBzYW1lIGNvbnRlbnRzIGNvbXBhcmUgZXF1YWwuIiIiCisgICAgICAgICBhID0gU2VydmljZSgpCistICAgICAgICBhLm5hbWUgPSB1ImZ0cCIKKy0gICAgICAgIGEucHJvZHVjdCA9IHUiRm9vQmFyIEZUUCIKKy0gICAgICAgIGEudmVyc2lvbiA9IHUiMS4xLjEiCistICAgICAgICBhLnR1bm5lbCA9IHUic3NsIgorKyAgICAgICAgYS5uYW1lID0gImZ0cCIKKysgICAgICAgIGEucHJvZHVjdCA9ICJGb29CYXIgRlRQIgorKyAgICAgICAgYS52ZXJzaW9uID0gIjEuMS4xIgorKyAgICAgICAgYS50dW5uZWwgPSAic3NsIgorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChhLCBhKQorICAgICAgICAgYiA9IFNlcnZpY2UoKQorLSAgICAgICAgYi5uYW1lID0gdSJmdHAiCistICAgICAgICBiLnByb2R1Y3QgPSB1IkZvb0JhciBGVFAiCistICAgICAgICBiLnZlcnNpb24gPSB1IjEuMS4xIgorLSAgICAgICAgYi50dW5uZWwgPSB1InNzbCIKKysgICAgICAgIGIubmFtZSA9ICJmdHAiCisrICAgICAgICBiLnByb2R1Y3QgPSAiRm9vQmFyIEZUUCIKKysgICAgICAgIGIudmVyc2lvbiA9ICIxLjEuMSIKKysgICAgICAgIGIudHVubmVsID0gInNzbCIKKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoYSwgYikKKy0gICAgICAgIGIubmFtZSA9IHUiaHR0cCIKKysgICAgICAgIGIubmFtZSA9ICJodHRwIgorICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhLCBiKQorICAgICAgICAgYyA9IFNlcnZpY2UoKQorICAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbChhLCBjKQorIAorICAgICBkZWYgdGVzdF90dW5uZWwoc2VsZik6CisgICAgICAgICBzZXJ2ID0gU2VydmljZSgpCistICAgICAgICBzZXJ2Lm5hbWUgPSB1Imh0dHAiCistICAgICAgICBzZXJ2LnR1bm5lbCA9IHUic3NsIgorLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2Lm5hbWVfc3RyaW5nKCksIHUic3NsL2h0dHAiKQorKyAgICAgICAgc2Vydi5uYW1lID0gImh0dHAiCisrICAgICAgICBzZXJ2LnR1bm5lbCA9ICJzc2wiCisrICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHNlcnYubmFtZV9zdHJpbmcoKSwgInNzbC9odHRwIikKKyAKKyAgICAgZGVmIHRlc3RfdmVyc2lvbl9zdHJpbmcoc2VsZik6CisgICAgICAgICBzZXJ2ID0gU2VydmljZSgpCistICAgICAgICBzZXJ2LnByb2R1Y3QgPSB1IkZvb0JhciIKKysgICAgICAgIHNlcnYucHJvZHVjdCA9ICJGb29CYXIiCisgICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHNlcnYudmVyc2lvbl9zdHJpbmcoKSkgPiAwKQorICAgICAgICAgc2VydiA9IFNlcnZpY2UoKQorLSAgICAgICAgc2Vydi52ZXJzaW9uID0gdSIxLjIuMyIKKysgICAgICAgIHNlcnYudmVyc2lvbiA9ICIxLjIuMyIKKyAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShsZW4oc2Vydi52ZXJzaW9uX3N0cmluZygpKSA+IDApCisgICAgICAgICBzZXJ2ID0gU2VydmljZSgpCistICAgICAgICBzZXJ2LmV4dHJhaW5mbyA9IHUibWlzY29uZmlndXJlZCIKKysgICAgICAgIHNlcnYuZXh0cmFpbmZvID0gIm1pc2NvbmZpZ3VyZWQiCisgICAgICAgICBzZWxmLmFzc2VydFRydWUobGVuKHNlcnYudmVyc2lvbl9zdHJpbmcoKSkgPiAwKQorICAgICAgICAgc2VydiA9IFNlcnZpY2UoKQorLSAgICAgICAgc2Vydi5wcm9kdWN0ID0gdSJGb29CYXIiCistICAgICAgICBzZXJ2LnZlcnNpb24gPSB1IjEuMi4zIgorKyAgICAgICAgc2Vydi5wcm9kdWN0ID0gIkZvb0JhciIKKysgICAgICAgIHNlcnYudmVyc2lvbiA9ICIxLjIuMyIKKyAgICAgICAgICMgTXVzdCBtYXRjaCBObWFwIG91dHB1dC4KKyAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2Vydi52ZXJzaW9uX3N0cmluZygpLAorLSAgICAgICAgICAgICAgICB1IiVzICVzIiAlIChzZXJ2LnByb2R1Y3QsIHNlcnYudmVyc2lvbikpCistICAgICAgICBzZXJ2LmV4dHJhaW5mbyA9IHUibWlzY29uZmlndXJlZCIKKysgICAgICAgICAgICAgICAgIiVzICVzIiAlIChzZXJ2LnByb2R1Y3QsIHNlcnYudmVyc2lvbikpCisrICAgICAgICBzZXJ2LmV4dHJhaW5mbyA9ICJtaXNjb25maWd1cmVkIgorICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXJ2LnZlcnNpb25fc3RyaW5nKCksCistICAgICAgICAgICAgICAgIHUiJXMgJXMgKCVzKSIgJSAoc2Vydi5wcm9kdWN0LCBzZXJ2LnZlcnNpb24sIHNlcnYuZXh0cmFpbmZvKSkKKysgICAgICAgICAgICAgICAgIiVzICVzICglcykiICUgKHNlcnYucHJvZHVjdCwgc2Vydi52ZXJzaW9uLCBzZXJ2LmV4dHJhaW5mbykpCisgCisgCisgY2xhc3MgU2NhbkRpZmZTdWIoU2NhbkRpZmYpOgorQEAgLTcwMyw3ICs3MDMsNyBAQCBjbGFzcyBzY2FuX2RpZmZfeG1sX3Rlc3QodW5pdHRlc3QuVGVzdENhc2UpOgorICAgICAgICAgYS5sb2FkX2Zyb21fZmlsZSgidGVzdC1zY2Fucy9lbXB0eS54bWwiKQorICAgICAgICAgYiA9IFNjYW4oKQorICAgICAgICAgYi5sb2FkX2Zyb21fZmlsZSgidGVzdC1zY2Fucy9zaW1wbGUueG1sIikKKy0gICAgICAgIGYgPSBTdHJpbmdJTy5TdHJpbmdJTygpCisrICAgICAgICBmID0gaW8uU3RyaW5nSU8oKQorICAgICAgICAgc2VsZi5zY2FuX2RpZmYgPSBTY2FuRGlmZlhNTChhLCBiLCBmKQorICAgICAgICAgc2VsZi5zY2FuX2RpZmYub3V0cHV0KCkKKyAgICAgICAgIHNlbGYueG1sID0gZi5nZXR2YWx1ZSgpCitAQCAtNzEyLDggKzcxMiw4IEBAIGNsYXNzIHNjYW5fZGlmZl94bWxfdGVzdCh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgIGRlZiB0ZXN0X3dlbGxfZm9ybWVkKHNlbGYpOgorICAgICAgICAgdHJ5OgorICAgICAgICAgICAgIGRvY3VtZW50ID0geG1sLmRvbS5taW5pZG9tLnBhcnNlU3RyaW5nKHNlbGYueG1sKQorLSAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiwgZToKKy0gICAgICAgICAgICBzZWxmLmZhaWwodSJQYXJzaW5nIFhNTCBkaWZmIG91dHB1dCBjYXVzZWQgdGhlIGV4Y2VwdGlvbjogJXMiCisrICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CisrICAgICAgICAgICAgc2VsZi5mYWlsKCJQYXJzaW5nIFhNTCBkaWZmIG91dHB1dCBjYXVzZWQgdGhlIGV4Y2VwdGlvbjogJXMiCisgICAgICAgICAgICAgICAgICAgICAlIHN0cihlKSkKKyAKKyAKK0BAIC03MzksOCArNzM5LDggQEAgZGVmIGhvc3RfYXBwbHlfZGlmZihob3N0LCBkaWZmKToKKyAgICAgICAgIGhvc3Qub3MgPSBkaWZmLmhvc3RfYi5vc1s6XQorIAorICAgICBpZiBkaWZmLmV4dHJhcG9ydHNfY2hhbmdlZDoKKy0gICAgICAgIGZvciBzdGF0ZSBpbiBob3N0LmV4dHJhcG9ydHMua2V5cygpOgorLSAgICAgICAgICAgIGZvciBwb3J0IGluIGhvc3QucG9ydHMudmFsdWVzKCk6CisrICAgICAgICBmb3Igc3RhdGUgaW4gbGlzdChob3N0LmV4dHJhcG9ydHMua2V5cygpKToKKysgICAgICAgICAgICBmb3IgcG9ydCBpbiBsaXN0KGhvc3QucG9ydHMudmFsdWVzKCkpOgorICAgICAgICAgICAgICAgICBpZiBwb3J0LnN0YXRlID09IHN0YXRlOgorICAgICAgICAgICAgICAgICAgICAgZGVsIGhvc3QucG9ydHNbcG9ydC5zcGVjXQorICAgICAgICAgaG9zdC5leHRyYXBvcnRzID0gZGlmZi5ob3N0X2IuZXh0cmFwb3J0cy5jb3B5KCkKK2RpZmYgLS1naXQgYS9uZGlmZi9zY3JpcHRzL25kaWZmIGIvbmRpZmYvc2NyaXB0cy9uZGlmZgoraW5kZXggODUxN2MwNy4uNDY3MWU3MyAxMDA3NTUKKy0tLSBhL25kaWZmL3NjcmlwdHMvbmRpZmYKKysrKyBiL25kaWZmL3NjcmlwdHMvbmRpZmYKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAKKyAjIE5kaWZmCisgIworQEAgLTY3LDE1ICs2NywxNSBAQCBpZiBJTlNUQUxMX0xJQiBpcyBub3QgTm9uZSBhbmQgaXNfc2VjdXJlX2RpcihJTlNUQUxMX0xJQik6CisgCisgdHJ5OgorICAgICBpbXBvcnQgbmRpZmYKKy1leGNlcHQgSW1wb3J0RXJyb3IsIGU6CistICAgIHByaW50ID4+IHN5cy5zdGRlcnIsICIiIlwKKytleGNlcHQgSW1wb3J0RXJyb3IgYXMgZToKKysgICAgcHJpbnQoIiIiXAorIENvdWxkIG5vdCBpbXBvcnQgdGhlIG5kaWZmIG1vZHVsZTogJXMuCistSSBjaGVja2VkIGluIHRoZXNlIGRpcmVjdG9yaWVzOiIiIiAlIHJlcHIoZS5tZXNzYWdlKQorK0kgY2hlY2tlZCBpbiB0aGVzZSBkaXJlY3RvcmllczoiIiIgJSByZXByKGUpLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgIGZvciBkaXIgaW4gc3lzLnBhdGg6CistICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAiICAgICVzIiAlIGRpcgorLSAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAiIiJcCisrICAgICAgICBwcmludCgiICAgICVzIiAlIGRpciwgZmlsZT1zeXMuc3RkZXJyKQorKyAgICBwcmludCgiIiJcCisgSWYgeW91IGluc3RhbGxlZCBOZGlmZiBpbiBhbm90aGVyIGRpcmVjdG9yeSwgeW91IG1heSBoYXZlIHRvIGFkZCB0aGUKKy1tb2R1bGVzIGRpcmVjdG9yeSB0byB0aGUgUFlUSE9OUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZS4iIiIKKyttb2R1bGVzIGRpcmVjdG9yeSB0byB0aGUgUFlUSE9OUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZS4iIiIsIGZpbGU9c3lzLnN0ZGVycikKKyAgICAgc3lzLmV4aXQoMSkKKyAKKyBpbXBvcnQgbmRpZmYKK2RpZmYgLS1naXQgYS9uZGlmZi9zZXR1cC5weSBiL25kaWZmL3NldHVwLnB5CitvbGQgbW9kZSAxMDA2NDQKK25ldyBtb2RlIDEwMDc1NQoraW5kZXggYjVlMjU0Yy4uYzQ5YmNmMworLS0tIGEvbmRpZmYvc2V0dXAucHkKKysrKyBiL25kaWZmL3NldHVwLnB5CitAQCAtOTQsNyArOTQsNyBAQCBjbGFzcyBjaGVja2VkX2luc3RhbGwoZGlzdHV0aWxzLmNvbW1hbmQuaW5zdGFsbC5pbnN0YWxsKToKKyAgICAgICAgIHNlbGYuc2F2ZWRfcHJlZml4ID0gc3lzLnByZWZpeAorICAgICAgICAgdHJ5OgorICAgICAgICAgICAgIGRpc3R1dGlscy5jb21tYW5kLmluc3RhbGwuaW5zdGFsbC5maW5hbGl6ZV9vcHRpb25zKHNlbGYpCistICAgICAgICBleGNlcHQgZGlzdHV0aWxzLmVycm9ycy5EaXN0dXRpbHNQbGF0Zm9ybUVycm9yLCBlOgorKyAgICAgICAgZXhjZXB0IGRpc3R1dGlscy5lcnJvcnMuRGlzdHV0aWxzUGxhdGZvcm1FcnJvciBhcyBlOgorICAgICAgICAgICAgIHJhaXNlIGRpc3R1dGlscy5lcnJvcnMuRGlzdHV0aWxzUGxhdGZvcm1FcnJvcihzdHIoZSkgKyAiIiIKKyBJbnN0YWxsaW5nIHlvdXIgZGlzdHJpYnV0aW9uJ3MgcHl0aG9uLWRldiBwYWNrYWdlIG1heSBzb2x2ZSB0aGlzIHByb2JsZW0uIiIiKQorIAorQEAgLTE1NSwxMyArMTU1LDEzIEBAIEluc3RhbGxpbmcgeW91ciBkaXN0cmlidXRpb24ncyBweXRob24tZGV2IHBhY2thZ2UgbWF5IHNvbHZlIHRoaXMgcHJvYmxlbS4iIiIpCisgIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisgaW1wb3J0IGVycm5vLCBvcywgb3MucGF0aCwgc3lzCisgCistcHJpbnQgJ1VuaW5zdGFsbCAlKG5hbWUpcycKKytwcmludCgnVW5pbnN0YWxsICUobmFtZSlzJykKKyAKKyBhbnN3ZXIgPSByYXdfaW5wdXQoJ0FyZSB5b3Ugc3VyZSB0aGF0IHlvdSB3YW50IHRvIHVuaW5zdGFsbCAnCisgICAgICclKG5hbWUpcyAoeWVzL25vKSAnKQorIAorIGlmIGFuc3dlciAhPSAneWVzJyBhbmQgYW5zd2VyICE9ICd5JzoKKy0gICAgcHJpbnQgJ05vdCB1bmluc3RhbGxpbmcuJworKyAgICBwcmludCgnTm90IHVuaW5zdGFsbGluZy4nKQorICAgICBzeXMuZXhpdCgwKQorIAorICIiIiAlIHsnbmFtZSc6IEFQUF9OQU1FfQorQEAgLTE3Nyw4ICsxNzcsOCBAQCBpZiBhbnN3ZXIgIT0gJ3llcycgYW5kIGFuc3dlciAhPSAneSc6CisgICAgICAgICAgICAgICAgICAgICAjIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbiAoZXZlcnl0aGluZyBnZXRzIGluc3RhbGxlZAorICAgICAgICAgICAgICAgICAgICAgIyBpbnNpZGUgdGhlIHJvb3QpLCBidXQgaWYgaXQgZG9lcywgYmUgc2FmZSBhbmQgZG9uJ3QKKyAgICAgICAgICAgICAgICAgICAgICMgZGVsZXRlIGFueXRoaW5nLgorLSAgICAgICAgICAgICAgICAgICAgdW5pbnN0YWxsZXIgKz0gKCJwcmludCAnJXMgd2FzIG5vdCBpbnN0YWxsZWQgaW5zaWRlICIKKy0gICAgICAgICAgICAgICAgICAgICAgICAidGhlIHJvb3QgJXM7IHNraXBwaW5nLidcbiIgJSAob3V0cHV0LCBzZWxmLnJvb3QpKQorKyAgICAgICAgICAgICAgICAgICAgdW5pbnN0YWxsZXIgKz0gKCJwcmludCgnJXMgd2FzIG5vdCBpbnN0YWxsZWQgaW5zaWRlICIKKysgICAgICAgICAgICAgICAgICAgICAgICAidGhlIHJvb3QgJXM7IHNraXBwaW5nLicpXG4iICUgKG91dHB1dCwgc2VsZi5yb290KSkKKyAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgIG91dHB1dCA9IHBhdGhfc3RyaXBfcHJlZml4KG91dHB1dCwgc2VsZi5yb290KQorICAgICAgICAgICAgICAgICBhc3NlcnQgb3MucGF0aC5pc2FicyhvdXRwdXQpCitAQCAtMjAyLDI0ICsyMDIsMjQgQEAgZm9yIHBhdGggaW4gSU5TVEFMTEVEX0ZJTEVTOgorICAgICAgICAgZGlycy5hcHBlbmQocGF0aCkKKyAjIERlbGV0ZSB0aGUgZmlsZXMuCisgZm9yIGZpbGUgaW4gZmlsZXM6CistICAgIHByaW50ICJSZW1vdmluZyAnJXMnLiIgJSBmaWxlCisrICAgIHByaW50KCJSZW1vdmluZyAnJXMnLiIgJSBmaWxlKQorICAgICB0cnk6CisgICAgICAgICBvcy5yZW1vdmUoZmlsZSkKKy0gICAgZXhjZXB0IE9TRXJyb3IsIGU6CistICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAnICBFcnJvcjogJXMuJyAlIHN0cihlKQorKyAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorKyAgICAgICAgcHJpbnQoJyAgRXJyb3I6ICVzLicgJSBzdHIoZSksIGZpbGU9c3lzLnN0ZGVycikKKyAjIERlbGV0ZSB0aGUgZGlyZWN0b3JpZXMuIEZpcnN0IHJldmVyc2Utc29ydCB0aGUgbm9ybWFsaXplZCBwYXRocyBieQorICMgbGVuZ3RoIHNvIHRoYXQgY2hpbGQgZGlyZWN0b3JpZXMgYXJlIGRlbGV0ZWQgYmVmb3JlIHRoZWlyIHBhcmVudHMuCisgZGlycyA9IFtvcy5wYXRoLm5vcm1wYXRoKGRpcikgZm9yIGRpciBpbiBkaXJzXQorIGRpcnMuc29ydChrZXkgPSBsZW4sIHJldmVyc2UgPSBUcnVlKQorIGZvciBkaXIgaW4gZGlyczoKKyAgICAgdHJ5OgorLSAgICAgICAgcHJpbnQgIlJlbW92aW5nIHRoZSBkaXJlY3RvcnkgJyVzJy4iICUgZGlyCisrICAgICAgICBwcmludCgiUmVtb3ZpbmcgdGhlIGRpcmVjdG9yeSAnJXMnLiIgJSBkaXIpCisgICAgICAgICBvcy5ybWRpcihkaXIpCistICAgIGV4Y2VwdCBPU0Vycm9yLCBlOgorKyAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9URU1QVFk6CistICAgICAgICAgICAgcHJpbnQgIkRpcmVjdG9yeSAnJXMnIG5vdCBlbXB0eTsgbm90IHJlbW92aW5nLiIgJSBkaXIKKysgICAgICAgICAgICBwcmludCgiRGlyZWN0b3J5ICclcycgbm90IGVtcHR5OyBub3QgcmVtb3ZpbmcuIiAlIGRpcikKKyAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgcHJpbnQgPj4gc3lzLnN0ZGVyciwgc3RyKGUpCisrICAgICAgICAgICAgcHJpbnQoc3RyKGUpLCBmaWxlPXN5cy5zdGRlcnIpCisgIiIiCisgCisgICAgICAgICB1bmluc3RhbGxlcl9maWxlID0gb3Blbih1bmluc3RhbGxlcl9maWxlbmFtZSwgJ3cnKQorQEAgLTIyNyw3ICsyMjcsNyBAQCBmb3IgZGlyIGluIGRpcnM6CisgICAgICAgICB1bmluc3RhbGxlcl9maWxlLmNsb3NlKCkKKyAKKyAgICAgICAgICMgU2V0IGV4ZWMgYml0IGZvciB1bmluc3RhbGxlcgorLSAgICAgICAgbW9kZSA9ICgob3Muc3RhdCh1bmluc3RhbGxlcl9maWxlbmFtZSlbU1RfTU9ERV0pIHwgMDU1NSkgJiAwNzc3NworKyAgICAgICAgbW9kZSA9ICgob3Muc3RhdCh1bmluc3RhbGxlcl9maWxlbmFtZSlbU1RfTU9ERV0pIHwgMG81NTUpICYgMG83Nzc3CisgICAgICAgICBvcy5jaG1vZCh1bmluc3RhbGxlcl9maWxlbmFtZSwgbW9kZSkKKyAKKyAgICAgZGVmIHdyaXRlX2luc3RhbGxlZF9maWxlcyhzZWxmKToKK0BAIC0yNDIsNyArMjQyLDcgQEAgZm9yIGRpciBpbiBkaXJzOgorICAgICAgICAgdHJ5OgorICAgICAgICAgICAgIGZvciBvdXRwdXQgaW4gc2VsZi5nZXRfaW5zdGFsbGVkX2ZpbGVzKCk6CisgICAgICAgICAgICAgICAgIGFzc2VydCAiXG4iIG5vdCBpbiBvdXRwdXQKKy0gICAgICAgICAgICAgICAgcHJpbnQgPj4gZiwgb3V0cHV0CisrICAgICAgICAgICAgICAgIHByaW50KG91dHB1dCwgZmlsZT1mKQorICAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgICBmLmNsb3NlKCkKKyAKK0BAIC0yNjYsNyArMjY2LDcgQEAgY2xhc3MgbXlfdW5pbnN0YWxsKGRpc3R1dGlscy5jbWQuQ29tbWFuZCk6CisgICAgICAgICAjIFJlYWQgdGhlIGxpc3Qgb2YgaW5zdGFsbGVkIGZpbGVzLgorICAgICAgICAgdHJ5OgorICAgICAgICAgICAgIGYgPSBvcGVuKElOU1RBTExFRF9GSUxFU19OQU1FLCAiciIpCistICAgICAgICBleGNlcHQgSU9FcnJvciwgZToKKysgICAgICAgIGV4Y2VwdCBJT0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9FTlQ6CisgICAgICAgICAgICAgICAgIGxvZy5lcnJvcigiQ291bGRuJ3Qgb3BlbiB0aGUgaW5zdGFsbGF0aW9uIHJlY29yZCAnJXMnLiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgIkhhdmUgeW91IGluc3RhbGxlZCB5ZXQ/IiAlIElOU1RBTExFRF9GSUxFU19OQU1FKQorQEAgLTI4OSw3ICsyODksNyBAQCBjbGFzcyBteV91bmluc3RhbGwoZGlzdHV0aWxzLmNtZC5Db21tYW5kKToKKyAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmRyeV9ydW46CisgICAgICAgICAgICAgICAgICAgICBvcy5yZW1vdmUoZmlsZSkKKy0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciwgZToKKysgICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgorICAgICAgICAgICAgICAgICBsb2cuZXJyb3Ioc3RyKGUpKQorICAgICAgICAgIyBEZWxldGUgdGhlIGRpcmVjdG9yaWVzLiBGaXJzdCByZXZlcnNlLXNvcnQgdGhlIG5vcm1hbGl6ZWQgcGF0aHMgYnkKKyAgICAgICAgICMgbGVuZ3RoIHNvIHRoYXQgY2hpbGQgZGlyZWN0b3JpZXMgYXJlIGRlbGV0ZWQgYmVmb3JlIHRoZWlyIHBhcmVudHMuCitAQCAtMzAwLDcgKzMwMCw3IEBAIGNsYXNzIG15X3VuaW5zdGFsbChkaXN0dXRpbHMuY21kLkNvbW1hbmQpOgorICAgICAgICAgICAgICAgICBsb2cuaW5mbygiUmVtb3ZpbmcgdGhlIGRpcmVjdG9yeSAnJXMnLiIgJSBkaXIpCisgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmRyeV9ydW46CisgICAgICAgICAgICAgICAgICAgICBvcy5ybWRpcihkaXIpCistICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IsIGU6CisrICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FTk9URU1QVFk6CisgICAgICAgICAgICAgICAgICAgICBsb2cuaW5mbygiRGlyZWN0b3J5ICclcycgbm90IGVtcHR5OyBub3QgcmVtb3ZpbmcuIiAlIGRpcikKKyAgICAgICAgICAgICAgICAgZWxzZToKK2RpZmYgLS1naXQgYS9uZGlmZi90ZXN0LXNjYW5zL2Fub255bWl6ZS5weSBiL25kaWZmL3Rlc3Qtc2NhbnMvYW5vbnltaXplLnB5CitpbmRleCA5YmE2MTJhLi5mZDI1MWZlIDEwMDc1NQorLS0tIGEvbmRpZmYvdGVzdC1zY2Fucy9hbm9ueW1pemUucHkKKysrKyBiL25kaWZmL3Rlc3Qtc2NhbnMvYW5vbnltaXplLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgCisgIyBBbm9ueW1pemUgYW4gTm1hcCBYTUwgZmlsZSwgcmVwbGFjaW5nIGhvc3QgbmFtZSBhbmQgSVAgYWRkcmVzc2VzIHdpdGggcmFuZG9tCisgIyBhbm9ueW1vdXMgb25lcy4gQW5vbnltaXplZCBuYW1lcyB3aWxsIGJlIGNvbnNpc3RlbnQgYmV0d2VlbiBydW5zIG9mIHRoZQorQEAgLTIwLDIwICsyMCwyMCBAQCByID0gcmFuZG9tLlJhbmRvbSgpCisgCisgCisgZGVmIGhhc2gocyk6CistICAgIGRpZ2VzdCA9IGhhc2hsaWIuc2hhNTEyKHMpLmhleGRpZ2VzdCgpCisrICAgIGRpZ2VzdCA9IGhhc2hsaWIuc2hhNTEyKHMuZW5jb2RlKCkpLmhleGRpZ2VzdCgpCisgICAgIHJldHVybiBpbnQoZGlnZXN0LCAxNikKKyAKKyAKKyBkZWYgYW5vbnltaXplX21hY19hZGRyZXNzKGFkZHIpOgorICAgICByLnNlZWQoaGFzaChhZGRyKSkKKyAgICAgbnVtcyA9ICgwLCAwLCAwKSArIHR1cGxlKHIucmFuZHJhbmdlKDI1NikgZm9yIGkgaW4gcmFuZ2UoMykpCistICAgIHJldHVybiB1IjoiLmpvaW4odSIlMDJYIiAlIHggZm9yIHggaW4gbnVtcykKKysgICAgcmV0dXJuICI6Ii5qb2luKCIlMDJYIiAlIHggZm9yIHggaW4gbnVtcykKKyAKKyAKKyBkZWYgYW5vbnltaXplX2lwdjRfYWRkcmVzcyhhZGRyKToKKyAgICAgci5zZWVkKGhhc2goYWRkcikpCisgICAgIG51bXMgPSAoMTAsKSArIHR1cGxlKHIucmFuZHJhbmdlKDI1NikgZm9yIGkgaW4gcmFuZ2UoMykpCistICAgIHJldHVybiB1Ii4iLmpvaW4odW5pY29kZSh4KSBmb3IgeCBpbiBudW1zKQorKyAgICByZXR1cm4gIi4iLmpvaW4oc3RyKHgpIGZvciB4IGluIG51bXMpCisgCisgCisgZGVmIGFub255bWl6ZV9pcHY2X2FkZHJlc3MoYWRkcik6CitAQCAtNDEsNyArNDEsNyBAQCBkZWYgYW5vbnltaXplX2lwdjZfYWRkcmVzcyhhZGRyKToKKyAgICAgIyBSRkMgNDE5My4KKyAgICAgbnVtcyA9ICgweEZEMDAgKyByLnJhbmRyYW5nZSgyNTYpLCkKKyAgICAgbnVtcyA9IG51bXMgKyB0dXBsZShyLnJhbmRyYW5nZSg2NTUzNikgZm9yIGkgaW4gcmFuZ2UoNykpCistICAgIHJldHVybiB1IjoiLmpvaW4oIiUwNFgiICUgeCBmb3IgeCBpbiBudW1zKQorKyAgICByZXR1cm4gIjoiLmpvaW4oIiUwNFgiICUgeCBmb3IgeCBpbiBudW1zKQorIAorICMgTWFwcyB0byBtZW1vaXplIGFkZHJlc3MgYW5kIGhvc3QgbmFtZSBjb252ZXJzaW9ucy4KKyBob3N0bmFtZV9tYXAgPSB7fQorQEAgLTU0LDExICs1NCwxMSBAQCBkZWYgYW5vbnltaXplX2hvc3RuYW1lKG5hbWUpOgorICAgICBMRVRURVJTID0gImFjYmRlZmdoaWprbG1ub3BxcnN0dXZ3eHl6IgorICAgICByLnNlZWQoaGFzaChuYW1lKSkKKyAgICAgbGVuZ3RoID0gci5yYW5kcmFuZ2UoNSwgMTApCistICAgIHByZWZpeCA9IHUiIi5qb2luKHIuc2FtcGxlKExFVFRFUlMsIGxlbmd0aCkpCisrICAgIHByZWZpeCA9ICIiLmpvaW4oci5zYW1wbGUoTEVUVEVSUywgbGVuZ3RoKSkKKyAgICAgbnVtID0gci5yYW5kcmFuZ2UoMTAwMCkKKy0gICAgaG9zdG5hbWVfbWFwW25hbWVdID0gdSIlcy0lZC5leGFtcGxlLmNvbSIgJSAocHJlZml4LCBudW0pCisrICAgIGhvc3RuYW1lX21hcFtuYW1lXSA9ICIlcy0lZC5leGFtcGxlLmNvbSIgJSAocHJlZml4LCBudW0pCisgICAgIGlmIFZFUkJPU0U6CistICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAiUmVwbGFjZSAlcyB3aXRoICVzIiAlIChuYW1lLCBob3N0bmFtZV9tYXBbbmFtZV0pCisrICAgICAgICBwcmludCgiUmVwbGFjZSAlcyB3aXRoICVzIiAlIChuYW1lLCBob3N0bmFtZV9tYXBbbmFtZV0pLCBmaWxlPXN5cy5zdGRlcnIpCisgICAgIHJldHVybiBob3N0bmFtZV9tYXBbbmFtZV0KKyAKKyBtYWNfcmUgPSByZS5jb21waWxlKHInXGIoWzAtOWEtZkEtRl17Mn06KXs1fVswLTlhLWZBLUZdezJ9XGInKQorQEAgLTc4LDcgKzc4LDcgQEAgZGVmIGFub255bWl6ZV9hZGRyZXNzKGFkZHIpOgorICAgICBlbHNlOgorICAgICAgICAgYXNzZXJ0IEZhbHNlCisgICAgIGlmIFZFUkJPU0U6CistICAgICAgICBwcmludCA+PiBzeXMuc3RkZXJyLCAiUmVwbGFjZSAlcyB3aXRoICVzIiAlIChhZGRyLCBhZGRyZXNzX21hcFthZGRyXSkKKysgICAgICAgIHByaW50KCJSZXBsYWNlICVzIHdpdGggJXMiICUgKGFkZHIsIGFkZHJlc3NfbWFwW2FkZHJdKSwgZmlsZT1zeXMuc3RkZXJyKQorICAgICByZXR1cm4gYWRkcmVzc19tYXBbYWRkcl0KKyAKKyAKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zZWN1cml0eS9ubWFwL2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLW1ha2UtbmRpZmYtZGVwZW5kLW9uLXB5dGhvbjMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2VjdXJpdHkvbm1hcC9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1tYWtlLW5kaWZmLWRlcGVuZC1vbi1weXRob24zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0M2ZmOWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2VjdXJpdHkvbm1hcC9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1tYWtlLW5kaWZmLWRlcGVuZC1vbi1weXRob24zLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gNTYyODkzZTY2NWE2YzllMWI2MGM4YjMyNDJiYWI2ZmU3ODMxOGIzYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pbmdsaSBZdSA8bWluZ2xpLnl1QHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDE0IEZlYiAyMDIwIDA4OjE5OjU0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogbWFrZSBuZGlmZiBkZXBlbmQgb24gcHl0aG9uMworCitQeXRob24gMiBjZWFzZWQgYmVpbmcgbWFpbnRhaW5lZCBvbiB0aGUgMXN0IEphbnVhcnkgMjAyMC4KK1dlJ3ZlIGFscmVhZHkgcmVtb3ZlZCBhbGwgdXNlcnMgb2YgaXQgZnJvbSBvZS1jb3JlLCBzbworbGV0IG5kaWZmIGRlcGVuZCBvbiBweXRob24zLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWluZ2xpIFl1IDxtaW5nbGkueXVAd2luZHJpdmVyLmNvbT4KKy0tLQorIC4uLi9ubWFwLzcuODAtcjAvbm1hcC03LjgwL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgIHwgMTEgKysrKysrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCA5ZDJmZmY4Li41ZmZkZDU1IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0yMzcsMTYgKzIzNywyMSBAQCBpZiB0ZXN0ICRIQVZFX1BZVEhPTiAmJiB0ZXN0ICJ4JHtQWVRIT05fVkVSU0lPTiUlLip9IiA9ICJ4MiI7IHRoZW4KKyAgICAgSEFWRV9QWVRIT04yPXRydWUKKyBmaQorIAorK0hBVkVfUFlUSE9OMz1mYWxzZQorK2lmIHRlc3QgJEhBVkVfUFlUSE9OICYmIHRlc3QgIngke1BZVEhPTl9WRVJTSU9OJSUuKn0iID0gIngzIjsgdGhlbgorKyAgICBIQVZFX1BZVEhPTjM9dHJ1ZQorK2ZpCisrCisgTkRJRkZESVI9bmRpZmYKKyAKKyAjIERvIHRoZXkgd2FudCBOZGlmZj8KKyBBQ19BUkdfV0lUSChuZGlmZiwgQUNfSEVMUF9TVFJJTkcoWy0td2l0aG91dC1uZGlmZl0sIFtTa2lwIGluc3RhbGxhdGlvbiBvZiB0aGUgTmRpZmYgdXRpbGl0eV0pLCBbXSwgW3dpdGhfbmRpZmY9Y2hlY2tdKQorLWlmICRIQVZFX1BZVEhPTjIgOyB0aGVuIDogOworK2lmICRIQVZFX1BZVEhPTjMgOyB0aGVuIDogOworIGVsc2UKKyAgIGlmIHRlc3QgIiR3aXRoX25kaWZmIiA9ICJjaGVjayIgOyB0aGVuCistICAgIEFDX01TR19XQVJOKFtOb3QgYnVpbGRpbmcgTmRpZmYgYmVjYXVzZSBQeXRob24gMi54IHdpdGggeD49NCB3YXMgbm90IGZvdW5kXSkKKysgICAgQUNfTVNHX1dBUk4oW05vdCBidWlsZGluZyBOZGlmZiBiZWNhdXNlIFB5dGhvbjMgd2FzIG5vdCBmb3VuZF0pCisgICBlbGlmIHRlc3QgIiR3aXRoX25kaWZmIiA9ICJ5ZXMiOyB0aGVuCistICAgIEFDX01TR19GQUlMVVJFKFstLXdpdGgtbmRpZmYgcmVxdWlyZXMgUHl0aG9uIDIueCB3aXRoIHg+PTRdKQorKyAgICBBQ19NU0dfRkFJTFVSRShbLS13aXRoLW5kaWZmIHJlcXVpcmVzIFB5dGhvbjNdKQorICAgZmkKKyAgIHdpdGhfbmRpZmY9bm8KKyBmaQorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L25tYXAvbm1hcF83LjgwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNlY3VyaXR5L25tYXAvbm1hcF83LjgwLmJiCmluZGV4IGYyNDE5NGQuLmM3NmQyMzIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zZWN1cml0eS9ubWFwL25tYXBfNy44MC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2VjdXJpdHkvbm1hcC9ubWFwXzcuODAuYmIKQEAgLTEwLDEyICsxMCwxNCBAQAogICAgICAgICAgICBmaWxlOi8vbm1hcC1yZXBsYWNlLXNodG9vbC1ta2Rpci13aXRoLWNvcmV1dGlscy1ta2Rpci1jb21tYW5kLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS10aW1lLmgtaGVhZGVyLXRvLXBhc3MtY2xhbmctY29tcGlsYXRpb24ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1GaXgtYnVpbGRpbmctd2l0aC1saWJjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1uZGlmZi1zdXBwb3J0LXB5dGhvbjMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtbWFrZS1uZGlmZi1kZXBlbmQtb24tcHl0aG9uMy5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gImQzN2I3NWIwNmQxZDQwZjI3Yjc2ZDYwZGI0MjBhMWY1IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImZjZmE1YTBlNDIwOTllMTJlNGJmN2E2OGViZTZmZGUwNTU1MzM4M2E2ODJlODE2YTdlYzkyNTZhYjQ3NzNmYWEiCiAKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgcHl0aG9ubmF0aXZlCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcGtnY29uZmlnIHB5dGhvbjNuYXRpdmUKIAogUEFDS0FHRUNPTkZJRyA/PSAibmNhdCBucGluZyBuZGlmZiBwY2FwIgogCkBAIC0yOCw3ICszMCw3IEBACiAjZGlzYWJsZS9lbmFibGUgcGFja2FnZXMKIFBBQ0tBR0VDT05GSUdbbnBpbmddID0gIiwtLXdpdGhvdXQtbnBpbmcsIgogUEFDS0FHRUNPTkZJR1tuY2F0XSA9ICIsLS13aXRob3V0LW5jYXQsIgotUEFDS0FHRUNPTkZJR1tuZGlmZl0gPSAiLC0td2l0aG91dC1uZGlmZixweXRob24iCitQQUNLQUdFQ09ORklHW25kaWZmXSA9ICItLXdpdGgtbmRpZmY9eWVzLC0td2l0aG91dC1uZGlmZixweXRob24zIgogUEFDS0FHRUNPTkZJR1t1cGRhdGVdID0gIiwtLXdpdGhvdXQtbm1hcC11cGRhdGUsIgogCiBFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWxpYmRuZXQ9aW5jbHVkZWQgLS13aXRoLWxpYmxpbmVhcj1pbmNsdWRlZCAtLXdpdGhvdXQtc3VidmVyc2lvbiAtLXdpdGgtbGlibHVhPWluY2x1ZGVkIgpAQCAtNDcsNiArNDksMTIgQEAKICAgICBvZV9ydW5jb25mCiB9CiAKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmIFsgLWYgIiR7RH0ke2JpbmRpcn0vbmRpZmYiIF07IHRoZW4KKyAgICAgICBzZWQgLWkgJ3NAXiMhLiokQCMhL3Vzci9iaW4vZW52IHB5dGhvbjNAZycgICAke0R9JHtiaW5kaXJ9L25kaWZmCisgICAgZmkKK30KKwogRklMRVNfJHtQTn0gKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9ICR7ZGF0YWRpcn0vbmNhdCIKIAotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uIgorUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtY29yZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvbWtzaC9ta3NoXzU3LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy9ta3NoL21rc2hfNTcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlOWMxOGUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy9ta3NoL21rc2hfNTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGUgTWlyQlNEIEtvcm4gU2hlbGwgLSBhbiBlbmhhbmNlZCB2ZXJzaW9uIG9mIHRoZSBwdWJsaWMgZG9tYWluIGtzaCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubWlyYnNkLm9yZy9ta3NoLmh0bSIKLVNFQ1RJT04gPSAiYmFzZS9zaGVsbCIKLQotTElDRU5TRSA9ICIke0BiYi51dGlscy5jb250YWlucygiVENMSUJDIiwgImdsaWJjIiwgIk1pck9TICYgSVNDIiwgIk1pck9TIiwgZCl9IgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbWFpbi5jO2JlZ2lubGluZT02O2VuZGxpbmU9MjY7bWQ1PTA2NTFlNTc1ZTM5ZDFhM2U4ODQ1NjJlMjVkNDkxZmM3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3N0cmxjcHkuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE3O21kNT1kOTUzZjI4ZjBjNDNlZTI5ZTIzOGVjOWJjMTVkZjJhMCBcCi0gICAgICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubWlyYnNkLm9yZy9NaXJPUy9kaXN0L21pci9ta3NoL21rc2gtUjU3LnRneiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRkMjY4NjUzNTI1MmVhNmE1N2JkZWM1MzE0OTgyMzlhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkMTAxMTU0MTgyZDUyYWU1NGVmMjZlMTM2MGM5NWJjODljOTI5ZDI4ODU5ZDM3OGNjMWM4NGYzNDM5ZGJlNzUiCi0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59IgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJzaCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzaF0gPSAiJHtiYXNlX2JpbmRpcn0vc2giCi1BTFRFUk5BVElWRV9UQVJHRVRbc2hdID0gIiR7YmFzZV9iaW5kaXJ9LyR7QlBOfSIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotZG9fY29tcGlsZSgpIHsKLSAgICBzaCAke1N9L0J1aWxkLnNoIC1yCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9ta3NoICR7RH0ke2Jhc2VfYmluZGlyfS9ta3NoCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NrZWwKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9kb3QubWtzaHJjICR7RH0ke3N5c2NvbmZkaXJ9L3NrZWwvLm1rc2hyYwotfQotCi1SUFJPVklERVNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndXNybWVyZ2UnLCAnL2Jpbi9zaCcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL21rc2gvbWtzaF81OC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvbWtzaC9ta3NoXzU4LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5OTQwZjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL21rc2gvbWtzaF81OC5iYgpAQCAtMCwwICsxLDM2IEBACitERVNDUklQVElPTiA9ICJUaGUgTWlyQlNEIEtvcm4gU2hlbGwgLSBhbiBlbmhhbmNlZCB2ZXJzaW9uIG9mIHRoZSBwdWJsaWMgZG9tYWluIGtzaCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubWlyYnNkLm9yZy9ta3NoLmh0bSIKK1NFQ1RJT04gPSAiYmFzZS9zaGVsbCIKKworTElDRU5TRSA9ICIke0BiYi51dGlscy5jb250YWlucygiVENMSUJDIiwgImdsaWJjIiwgIk1pck9TICYgSVNDIiwgIk1pck9TIiwgZCl9IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vbWFpbi5jO2JlZ2lubGluZT02O2VuZGxpbmU9MjY7bWQ1PTA2NTFlNTc1ZTM5ZDFhM2U4ODQ1NjJlMjVkNDkxZmM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3N0cmxjcHkuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE3O21kNT1kOTUzZjI4ZjBjNDNlZTI5ZTIzOGVjOWJjMTVkZjJhMCBcCisgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubWlyYnNkLm9yZy9NaXJPUy9kaXN0L21pci9ta3NoL21rc2gtUjU4LnRneiIKKworU1JDX1VSSVttZDVzdW1dID0gIjY5MjJhM2UyMjI4ZGUyZjBlNzhmZjI1Mzk4Y2NmOGRmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYwOGJlYjdiNzE4NzBiMjMzMDliYTFkYThjYTgyOGRhMGU0NTQwZjJiOWJkOTgxZWIzOWUwNGY4YjdmYzY3OGMiCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitTID0gIiR7V09SS0RJUn0vJHtCUE59IgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJzaCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzaF0gPSAiJHtiYXNlX2JpbmRpcn0vc2giCitBTFRFUk5BVElWRV9UQVJHRVRbc2hdID0gIiR7YmFzZV9iaW5kaXJ9LyR7QlBOfSIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworZG9fY29tcGlsZSgpIHsKKyAgICBzaCAke1N9L0J1aWxkLnNoIC1yCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9ta3NoICR7RH0ke2Jhc2VfYmluZGlyfS9ta3NoCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NrZWwKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9kb3QubWtzaHJjICR7RH0ke3N5c2NvbmZkaXJ9L3NrZWwvLm1rc2hyYworfQorCitSUFJPVklERVNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAndXNybWVyZ2UnLCAnL2Jpbi9zaCcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL3Rjc2gvdGNzaF82LjIxLjAwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy90Y3NoL3Rjc2hfNi4yMS4wMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjc4YWIwNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc2hlbGxzL3Rjc2gvdGNzaF82LjIxLjAwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVEVORVggQyBTaGVsbCwgYW4gZW5oYW5jZWQgdmVyc2lvbiBvZiBCZXJrZWxleSBjc2ggXAotICAgIFRoZSBURU5FWCBDIFNoZWxsIGlzIGFuIGVuaGFuY2VkIHZlcnNpb24gb2YgdGhlIEJlcmtlbGV5IFVuaXggQyBzaGVsbC4gXAotICAgIEl0IGluY2x1ZGVzIGFsbCBmZWF0dXJlcyBvZiA0LjRCU0QgQyBzaGVsbCwgcGx1cyBhIGNvbW1hbmQtbGluZSBlZGl0b3IsIFwKLSAgICBwcm9ncmFtbWFibGUgd29yZCBjb21wbGV0aW9uLCBzcGVsbGluZyBjb3JyZWN0aW9uIGFuZCBtb3JlLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy50Y3NoLm9yZy8iCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NvcHlyaWdodDttZDU9NTc1Y2YyNzE1YzNiZjg5NGUxZjc5YWVjMWQ0ZWFhZjUiCi1TRUNUSU9OID0gImJhc2UiCi1ERVBFTkRTID0gIm5jdXJzZXMgdmlydHVhbC9jcnlwdCBnZXR0ZXh0LW5hdGl2ZSIKLVNSQ19VUkkgPSAiIFwKLSAgICBodHRwOi8vZnRwLmZ1bmV0LmZpL3B1Yi9taXJyb3JzL2Z0cC5hc3Ryb24uY29tL3B1Yi90Y3NoLyR7QlB9LnRhci5neiBcCi0gICAgZmlsZTovLzAwMDEtRW5hYmxlLXN5c3RlbS1tYWxsb2Mtb24tYWxsLWxpbnV4LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi1BZGQtZGViaWFuLWNzaC1zY3JpcHRzLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1YmQ1ZjExNTE1Y2M1Y2NhOTI3Nzc3ZmE5MmY5ZDRiOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNDM4MzI1NDQ4MzcxZjU5YjEyYTRjOTNiZmQzZjY5ODJlNmY3OWY4YzVhZWY0YmM4M2FhYzhmNjI3NjZlOTcyIgotCi1FWFRSQV9PRU1BS0UgKz0gIkNDX0ZPUl9HRVRIT1NUPScke0JVSUxEX0NDfSciCi1pbmhlcml0IGF1dG90b29scwotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgb2VfcnVubWFrZSBDQ19GT1JfR0VUSE9TVD0nJHtCVUlMRF9DQ30nIENGTEFHUz0nJHtCVUlMRF9DRkxBR1N9JyBnZXRob3N0Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwubWFuIERFU1RESVI9JHtEfQotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLSAgICBsbiAtcyAvdXNyL2Jpbi90Y3NoICR7RH0ke2Jhc2VfYmluZGlyfS90Y3NoCi0gICAgbG4gLXMgL3Vzci9iaW4vdGNzaCAke0R9JHtiYXNlX2JpbmRpcn0vY3NoCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9jc2gvbG9naW4uZAotICAgIGluc3RhbGwgLW0gMDY0NCAke1N9L2NzaC5jc2hyYyAke1N9L2NzaC5sb2dpbiAke1N9L2NzaC5sb2dvdXQgJHtTfS9jb21wbGV0ZS50Y3NoICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7U30vY3NoLW1vZGUuZWwgJHtEfSR7ZGF0YWRpcn0vZW1hY3Mvc2l0ZS1saXNwL2NzaC1tb2RlLmVsCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2VtYWNzL3NpdGUtbGlzcC9jc2gtbW9kZS5lbCIKLQotCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotIyEvYmluL3NoIC1lCi1lY2hvIC91c3IvYmluL3Rjc2ggPj4gJEQvZXRjL3NoZWxscwotZWNobyAvdXNyL2Jpbi9jc2ggPj4gJEQvZXRjL3NoZWxscwotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXNoZWxscy90Y3NoL3Rjc2hfNi4yMi4wMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvdGNzaC90Y3NoXzYuMjIuMDIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjMwYzM0MwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zaGVsbHMvdGNzaC90Y3NoXzYuMjIuMDIuYmIKQEAgLTAsMCArMSw0NCBAQAorREVTQ1JJUFRJT04gPSAiVEVORVggQyBTaGVsbCwgYW4gZW5oYW5jZWQgdmVyc2lvbiBvZiBCZXJrZWxleSBjc2ggXAorICAgIFRoZSBURU5FWCBDIFNoZWxsIGlzIGFuIGVuaGFuY2VkIHZlcnNpb24gb2YgdGhlIEJlcmtlbGV5IFVuaXggQyBzaGVsbC4gXAorICAgIEl0IGluY2x1ZGVzIGFsbCBmZWF0dXJlcyBvZiA0LjRCU0QgQyBzaGVsbCwgcGx1cyBhIGNvbW1hbmQtbGluZSBlZGl0b3IsIFwKKyAgICBwcm9ncmFtbWFibGUgd29yZCBjb21wbGV0aW9uLCBzcGVsbGluZyBjb3JyZWN0aW9uIGFuZCBtb3JlLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy50Y3NoLm9yZy8iCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NvcHlyaWdodDttZDU9NTc1Y2YyNzE1YzNiZjg5NGUxZjc5YWVjMWQ0ZWFhZjUiCitTRUNUSU9OID0gImJhc2UiCitERVBFTkRTID0gIm5jdXJzZXMgdmlydHVhbC9jcnlwdCBnZXR0ZXh0LW5hdGl2ZSIKK1NSQ19VUkkgPSAiIFwKKyAgICBodHRwczovL2FzdHJvbi5jb20vcHViLyR7QlBOfS8ke0JQfS50YXIuZ3ogXAorICAgIGZpbGU6Ly8wMDAxLUVuYWJsZS1zeXN0ZW0tbWFsbG9jLW9uLWFsbC1saW51eC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDItQWRkLWRlYmlhbi1jc2gtc2NyaXB0cy5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiZjM0OTA5ZWFiMzM3MzNhZWNjMDVkMjdhZGM4MjI3N2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWQyODcxNThjYTFiMDBiYTQ3N2U4ZWE1N2JhYzUzNjA5ODM4ZWJjZmQwNWZjYjA1Y2E5NTAyMWI3ZWJlODg1YiIKKworRVhUUkFfT0VNQUtFICs9ICJDQ19GT1JfR0VUSE9TVD0nJHtCVUlMRF9DQ30nIgoraW5oZXJpdCBhdXRvdG9vbHMKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIG9lX3J1bm1ha2UgQ0NfRk9SX0dFVEhPU1Q9JyR7QlVJTERfQ0N9JyBDRkxBR1M9JyR7QlVJTERfQ0ZMQUdTfScgZ2V0aG9zdAorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgb2VfcnVubWFrZSBpbnN0YWxsLm1hbiBERVNURElSPSR7RH0KKworICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisgICAgbG4gLXMgL3Vzci9iaW4vdGNzaCAke0R9JHtiYXNlX2JpbmRpcn0vdGNzaAorICAgIGxuIC1zIC91c3IvYmluL3Rjc2ggJHtEfSR7YmFzZV9iaW5kaXJ9L2NzaAorICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vY3NoL2xvZ2luLmQKKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9jc2guY3NocmMgJHtTfS9jc2gubG9naW4gJHtTfS9jc2gubG9nb3V0ICR7U30vY29tcGxldGUudGNzaCAke0R9JHtzeXNjb25mZGlyfQorICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1N9L2NzaC1tb2RlLmVsICR7RH0ke2RhdGFkaXJ9L2VtYWNzL3NpdGUtbGlzcC9jc2gtbW9kZS5lbAorfQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9lbWFjcy9zaXRlLWxpc3AvY3NoLW1vZGUuZWwiCisKKworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKyMhL2Jpbi9zaCAtZQorZWNobyAvdXNyL2Jpbi90Y3NoID4+ICREL2V0Yy9zaGVsbHMKK2VjaG8gL3Vzci9iaW4vY3NoID4+ICREL2V0Yy9zaGVsbHMKK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F2cm8vYXZyby1jLzAwMDEtQWxsb3ctYXZyby1DLXRvLWJlLWJ1aWx0LW9uLW11c2wtYmFzZWQtc3lzdGVtcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F2cm8vYXZyby1jLzAwMDEtQWxsb3ctYXZyby1DLXRvLWJlLWJ1aWx0LW9uLW11c2wtYmFzZWQtc3lzdGVtcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk2NGQ2Yi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdnJvL2F2cm8tYy8wMDAxLUFsbG93LWF2cm8tQy10by1iZS1idWlsdC1vbi1tdXNsLWJhc2VkLXN5c3RlbXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDliMzlhOTg1YmNkNmNkMzRmMDgyMGYzNjgwZjE0NWQ0NmMwZTU2YmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUaXRvdWFuIENocmlzdG9waGUgPHRpdG91YW4uY2hyaXN0b3BoZUByYWlsbm92YS5ldT4KLURhdGU6IFN1biwgOCBEZWMgMjAxOSAwMTo1NTo1OSArMDEwMAotU3ViamVjdDogW1BBVENIXSBBbGxvdyBhdnJvIEMgdG8gYmUgYnVpbHQgb24gbXVzbCBiYXNlZCBzeXN0ZW1zLgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1UaGUgdHlwZSBgc3NpemVfdGAgaXMgZGVmaW5lZCBpbiBzeXMvdHlwZXMuaCwgYW5kIG5vd2hlcmUgZWxzZQotaW4gdGhlIG11c2wgc3RhbmRhcmQgQyBsaWJyYXJ5LCBzbyBpdCBzaG91bGQgYmUgaW5jbHVkZWQgZm9yIHRoZQotY29tcGlsYXRpb24gdG8gc3VjY2VlZC4KLQotVGhpcyBmaXhlcyBzZXZlcmFsIGVycm9ycyBsaWtlOgotCi0gICAgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHNyYy9nZW5lcmljLmM6Mjk6MDoKLSAgICBzcmMvZ2VuZXJpYy5jOiBJbiBmdW5jdGlvbiDigJhhdnJvX2dlbmVyaWNfdmFsdWVfbmV34oCZOgotICAgIHNyYy9hdnJvX2dlbmVyaWNfaW50ZXJuYWwuaDo2MzozOToKLSAgICAgICAgZXJyb3I6IOKAmHNzaXplX3TigJkgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOwotICAgICAgICAgICAgICAgZGlkIHlvdSBtZWFuIOKAmHNpemVfdOKAmT8KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogVGl0b3VhbiBDaHJpc3RvcGhlIDx0aXRvdWFuLmNocmlzdG9waGVAcmFpbG5vdmEuZXU+Ci0tLS0KLSBsYW5nL2Mvc3JjL2F2cm9fZ2VuZXJpY19pbnRlcm5hbC5oIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xhbmcvYy9zcmMvYXZyb19nZW5lcmljX2ludGVybmFsLmggYi9sYW5nL2Mvc3JjL2F2cm9fZ2VuZXJpY19pbnRlcm5hbC5oCi1pbmRleCA3MDk0MDNjMDMuLjk4NDNlZDY1MiAxMDA2NDQKLS0tLSBhL2xhbmcvYy9zcmMvYXZyb19nZW5lcmljX2ludGVybmFsLmgKLSsrKyBiL2xhbmcvYy9zcmMvYXZyb19nZW5lcmljX2ludGVybmFsLmgKLUBAIC0yNCw2ICsyNCw4IEBAIGV4dGVybiAiQyIgewotICNkZWZpbmUgQ0xPU0VfRVhURVJOCi0gI2VuZGlmCi0gCi0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKwotICNpbmNsdWRlICJhdnJvL2dlbmVyaWMuaCIKLSAjaW5jbHVkZSAiYXZyby9zY2hlbWEuaCIKLSAjaW5jbHVkZSAiYXZyby92YWx1ZS5oIgotLS0gCi0yLjI0LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXZyby9hdnJvLWNfMS45LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdnJvL2F2cm8tY18xLjkuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk1NGM5OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9hdnJvL2F2cm8tY18xLjkuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiQXBhY2hlIEF2cm8gZGF0YSBzZXJpYWxpemF0aW9uIHN5c3RlbS4iCi1IT01FUEFHRSA9ICJodHRwOi8vYXByLmFwYWNoZS5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02ZDUwMmI0MWY3NjE3OWZjODRlNTM2MjM2ZjM1OWNhZSIKLQotREVQRU5EUyA9ICJqYW5zc29uIHpsaWIgeHoiCi0KLUJSQU5DSCA9ICJicmFuY2gtMS45IgotU1JDUkVWID0gIjg5MjE4MjYyY2RlNjJlOThmY2IzNzc4Yjg2Y2QzZjAzMDU2YzU0ZjMiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYXBhY2hlL2F2cm87YnJhbmNoPSR7QlJBTkNIfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFsbG93LWF2cm8tQy10by1iZS1idWlsdC1vbi1tdXNsLWJhc2VkLXN5c3RlbXMucGF0Y2g7cGF0Y2hkaXI9Li4vLi4vIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY21ha2UtVXNlLUdOVUluc3RhbGxEaXJzLWluc3RlYWQtb2YtaGFyZC1jb2RlZC1wYXRocy5wYXRjaDtwYXRjaGRpcj0uLi8uLi8gXAotICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2dpdC9sYW5nL2MiCi0KLWluaGVyaXQgY21ha2UKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F2cm8vYXZyby1jXzEuOS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYXZyby9hdnJvLWNfMS45LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDY0MjE3OQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2F2cm8vYXZyby1jXzEuOS4yLmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiQXBhY2hlIEF2cm8gZGF0YSBzZXJpYWxpemF0aW9uIHN5c3RlbS4iCitIT01FUEFHRSA9ICJodHRwOi8vYXByLmFwYWNoZS5vcmcvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02ZDUwMmI0MWY3NjE3OWZjODRlNTM2MjM2ZjM1OWNhZSIKKworREVQRU5EUyA9ICJqYW5zc29uIHpsaWIgeHoiCisKK0JSQU5DSCA9ICJicmFuY2gtMS45IgorU1JDUkVWID0gImJmMjAxMjhjYTYxMzhhODMwYjJlYTEzZTA0OTBmM2RmNmIwMzU2MzkiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vYXBhY2hlL2F2cm87YnJhbmNoPSR7QlJBTkNIfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNtYWtlLVVzZS1HTlVJbnN0YWxsRGlycy1pbnN0ZWFkLW9mLWhhcmQtY29kZWQtcGF0aHMucGF0Y2g7cGF0Y2hkaXI9Li4vLi4vIFwKKyAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQvbGFuZy9jIgorCitpbmhlcml0IGNtYWtlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9iZHdnYy9iZHdnY184LjAuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djXzguMC40LmJiCmluZGV4IGY0ZWExNzMuLjQwN2RlMjEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djXzguMC40LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Jkd2djL2Jkd2djXzguMC40LmJiCkBAIC0yOCw4ICsyOCw2IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKIAogRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1jcGx1c2NwbHVzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlcy8wMDAxLWZpeC1jb25maWd1cmUtZXJyb3ItbXYtbGliY2FyZXMucGMuY21ha2Vpbi10by1saWJjYXIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzLzAwMDEtZml4LWNvbmZpZ3VyZS1lcnJvci1tdi1saWJjYXJlcy5wYy5jbWFrZWluLXRvLWxpYmNhci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjE1Zjg0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlcy8wMDAxLWZpeC1jb25maWd1cmUtZXJyb3ItbXYtbGliY2FyZXMucGMuY21ha2Vpbi10by1saWJjYXIucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBmMmYxZTEzNGJmNWQ5ZDA3ODk5NDI4NDhlMDMwMDZhZjhkOTI2Y2Y4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogV2FuZyBNaW5neXUgPHdhbmdteUBjbi5mdWppdHN1LmNvbT4KK0RhdGU6IFR1ZSwgMTcgTWFyIDIwMjAgMTI6NTM6MzUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IGNvbmZpZ3VyZSBlcnJvciA6IG12IGxpYmNhcmVzLnBjLmNtYWtlaW4gdG8KKyBsaWJjYXJlcy5wYy5jbWFrZQorCitTaWduZWQtb2ZmLWJ5OiBXYW5nIE1pbmd5dSA8d2FuZ215QGNuLmZ1aml0c3UuY29tPgorLS0tCisgQ01ha2VMaXN0cy50eHQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCAzYTU4NzhkLi5jMmU1NzQwIDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtNTYzLDcgKzU2Myw3IEBAIElGIChDQVJFU19TVEFUSUMpCisgRU5ESUYoKQorIAorICMgV3JpdGUgYXJlc19jb25maWcuaCBjb25maWd1cmF0aW9uIGZpbGUuICBUaGlzIGlzIHVzZWQgb25seSBmb3IgdGhlIGJ1aWxkLgorLUNPTkZJR1VSRV9GSUxFIChsaWJjYXJlcy5wYy5jbWFrZWluICR7UFJPSkVDVF9CSU5BUllfRElSfS9saWJjYXJlcy5wYyBAT05MWSkKKytDT05GSUdVUkVfRklMRSAobGliY2FyZXMucGMuY21ha2UgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2xpYmNhcmVzLnBjIEBPTkxZKQorIAorIAorIAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlcy9jbWFrZS1pbnN0YWxsLWxpYmNhcmVzLnBjLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlcy9jbWFrZS1pbnN0YWxsLWxpYmNhcmVzLnBjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlYjdlNGIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jLWFyZXMvYy1hcmVzL2NtYWtlLWluc3RhbGwtbGliY2FyZXMucGMucGF0Y2gKQEAgLTAsMCArMSw4NCBAQAorRnJvbSAxMjQxNDMwNDI0NWNjZTZlZjBlOGI5NTQ3OTQ5YmU1MTA5ODQ1MzUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFR1ZSwgMjQgSnVsIDIwMTggMTM6MzM6MzMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY21ha2U6IEluc3RhbGwgbGliY2FyZXMucGMKKworUHJlcGFyZSBhbmQgaW5zdGFsbCBsaWJjYXJlcy5wYyBmaWxlIGR1cmluZyBjbWFrZSBidWlsZCwgc28gbGlicmFyaWVzCit1c2luZyBwa2ctY29uZmlnIHRvIGZpbmQgbGliY2FyZXMgd2lsbCBub3QgZmFpbC4KKworU2lnbmVkLW9mZi1ieTogQWxleGV5IEZpcmFnbyA8YWxleGV5X2ZpcmFnb0BtZW50b3IuY29tPgorCit1cGRhdGUgdG8gMS4xNC4wLCBmaXggcGF0Y2ggd2FybmluZworCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgQ01ha2VMaXN0cy50eHQgfCAyOCArKysrKysrKysrKysrKysrKysrKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIzIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCBmZDEyM2UxLi4zYTU4NzhkIDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtMjE0LDIyICsyMTQsMjUgQEAgQUREX0RFRklOSVRJT05TKCR7U1lTRkxBR1N9KQorIAorIAorICMgVGVsbCBDLUFyZXMgYWJvdXQgbGlicmFyaWVzIHRvIGRlcGVuZCBvbgorKyMgQWxzbyBwYXNzIHRoZXNlIGxpYnJhcmllcyB0byBwa2ctY29uZmlnIGZpbGUKKytTRVQoQ0FSRVNfUFJJVkFURV9MSUJTX0xJU1QpCisgSUYgKEhBVkVfTElCUkVTT0xWKQorLQlMSVNUIChBUFBFTkQgQ0FSRVNfREVQRU5ERU5UX0xJQlMgcmVzb2x2KQorKwlMSVNUIChBUFBFTkQgQ0FSRVNfUFJJVkFURV9MSUJTX0xJU1QgIi1scmVzb2x2IikKKyBFTkRJRiAoKQorIElGIChIQVZFX0xJQk5TTCkKKy0JTElTVCAoQVBQRU5EIENBUkVTX0RFUEVOREVOVF9MSUJTIG5zbCkKKysJTElTVCAoQVBQRU5EIENBUkVTX1BSSVZBVEVfTElCU19MSVNUICItbG5zbCIpCisgRU5ESUYgKCkKKyBJRiAoSEFWRV9MSUJTT0NLRVQpCistCUxJU1QgKEFQUEVORCBDQVJFU19ERVBFTkRFTlRfTElCUyBzb2NrZXQpCisrCUxJU1QgKEFQUEVORCBDQVJFU19QUklWQVRFX0xJQlNfTElTVCAiLWxzb2NrZXQiKQorIEVORElGICgpCisgSUYgKEhBVkVfTElCUlQpCistCUxJU1QgKEFQUEVORCBDQVJFU19ERVBFTkRFTlRfTElCUyBydCkKKysJTElTVCAoQVBQRU5EIENBUkVTX1BSSVZBVEVfTElCU19MSVNUICItbHJ0IikKKyBFTkRJRiAoKQorIElGIChXSU4zMikKKy0JTElTVCAoQVBQRU5EIENBUkVTX0RFUEVOREVOVF9MSUJTIHdzMl8zMiBBZHZhcGkzMikKKysJTElTVCAoQVBQRU5EIENBUkVTX1BSSVZBVEVfTElCU19MSVNUICItbHdzMl8zMiIpCisgRU5ESUYgKCkKKyAKKytzdHJpbmcgKFJFUExBQ0UgIjsiICIgIiBDQVJFU19QUklWQVRFX0xJQlMgIiR7Q0FSRVNfUFJJVkFURV9MSUJTX0xJU1R9IikKKyAKKyAjIFdoZW4gY2hlY2tpbmcgZm9yIHN5bWJvbHMsIHdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlIHNldCB0aGUgcHJvcGVyCisgIyBoZWFkZXJzLCBsaWJyYXJpZXMsIGFuZCBkZWZpbml0aW9ucyBmb3IgdGhlIGRldGVjdGlvbiB0byB3b3JrIHByb3Blcmx5CitAQCAtNTU0LDYgKzU1NywxNSBAQCBDT05GSUdVUkVfRklMRSAoYXJlc19idWlsZC5oLmNtYWtlICR7UFJPSkVDVF9CSU5BUllfRElSfS9hcmVzX2J1aWxkLmgpCisgIyBXcml0ZSBhcmVzX2NvbmZpZy5oIGNvbmZpZ3VyYXRpb24gZmlsZS4gIFRoaXMgaXMgdXNlZCBvbmx5IGZvciB0aGUgYnVpbGQuCisgQ09ORklHVVJFX0ZJTEUgKGFyZXNfY29uZmlnLmguY21ha2UgJHtQUk9KRUNUX0JJTkFSWV9ESVJ9L2FyZXNfY29uZmlnLmgpCisgCisrIyBQYXNzIHJlcXVpcmVkIENGTEFHUyB0byBwa2ctY29uZmlnIGluIGNhc2Ugb2Ygc3RhdGljIGxpYnJhcnkKKytJRiAoQ0FSRVNfU1RBVElDKQorKyAgICAgICBTRVQgKENQUEZMQUdfQ0FSRVNfU1RBVElDTElCICItRENBUkVTX1NUQVRJQ0xJQiIpCisrRU5ESUYoKQorKworKyMgV3JpdGUgYXJlc19jb25maWcuaCBjb25maWd1cmF0aW9uIGZpbGUuICBUaGlzIGlzIHVzZWQgb25seSBmb3IgdGhlIGJ1aWxkLgorK0NPTkZJR1VSRV9GSUxFIChsaWJjYXJlcy5wYy5jbWFrZWluICR7UFJPSkVDVF9CSU5BUllfRElSfS9saWJjYXJlcy5wYyBAT05MWSkKKysKKysKKyAKKyAjIFRSQU5TRk9STV9NQUtFRklMRV9JTkMKKyAjCitAQCAtNzI4LDYgKzc0MCwxMiBAQCBJRiAoQ0FSRVNfSU5TVEFMTCkKKyAJSU5TVEFMTCAoRklMRVMgIiR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfS9saWJjYXJlcy5wYyIgQ09NUE9ORU5UIERldmVsIERFU1RJTkFUSU9OICIke0NNQUtFX0lOU1RBTExfTElCRElSfS9wa2djb25maWciKQorIEVORElGICgpCisgCisrIyBwa2ctY29uZmlnIGZpbGUKKytJRiAoQ0FSRVNfSU5TVEFMTCkKKysgICAgICAgU0VUIChQS0dDT05GSUdfSU5TVEFMTF9ESVIgIiR7Q01BS0VfSU5TVEFMTF9MSUJESVJ9L3BrZ2NvbmZpZyIpCisrICAgICAgIElOU1RBTEwgKEZJTEVTICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vbGliY2FyZXMucGMiIERFU1RJTkFUSU9OICR7UEtHQ09ORklHX0lOU1RBTExfRElSfSkKKytFTkRJRiAoKQorKworICMgTGVnYWN5IGNoYWluLWJ1aWxkaW5nIHZhcmlhYmxlcyAocHJvdmlkZWQgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgY29kZSkuCisgIyBEb24ndCB1c2UgdGhlc2UsIGV4dGVybmFsIGNvZGUgc2hvdWxkIGJlIHVwZGF0ZWQgdG8gcmVmZXIgdG8gdGhlIGFsaWFzZXMgZGlyZWN0bHkgKGUuZy4sIENhcmVzOjpjYXJlcykuCisgU0VUIChDQVJFU19GT1VORCAxIENBQ0hFIElOVEVSTkFMICJDQVJFUyBMSUJSQVJZIEZPVU5EIikKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2MtYXJlcy9jLWFyZXNfMS4xNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvYy1hcmVzL2MtYXJlc18xLjE2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTIzNWI5YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2MtYXJlcy9jLWFyZXNfMS4xNi4wLmJiCkBAIC0wLDAgKzEsMjcgQEAKKyMgQ29weXJpZ2h0IChjKSAyMDEyLTIwMTQgTEcgRWxlY3Ryb25pY3MsIEluYy4KK1NVTU1BUlkgPSAiYy1hcmVzIGlzIGEgQyBsaWJyYXJ5IHRoYXQgcmVzb2x2ZXMgbmFtZXMgYXN5bmNocm9ub3VzbHkuIgorSE9NRVBBR0UgPSAiaHR0cDovL2RhbmllbC5oYXh4LnNlL3Byb2plY3RzL2MtYXJlcy8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UubWQ7bWQ1PWZiOTk3NDU0YzhkNjJhYTZhNDdmMDdhOGNkNDhiMDA2IgorCitQViA9ICIxLjE2LjArZ2l0ciR7U1JDUFZ9IgorCitTUkNfVVJJID0gIlwKKyAgICBnaXQ6Ly9naXRodWIuY29tL2MtYXJlcy9jLWFyZXMuZ2l0IFwKKyAgICBmaWxlOi8vY21ha2UtaW5zdGFsbC1saWJjYXJlcy5wYy5wYXRjaCBcCisgICAgZmlsZTovLzAwMDEtZml4LWNvbmZpZ3VyZS1lcnJvci1tdi1saWJjYXJlcy5wYy5jbWFrZWluLXRvLWxpYmNhci5wYXRjaCBcCisiCitTUkNSRVYgPSAiMDc3YTU4N2RjY2JlMmYwZDhhMTk4N2ZiZDM1MjUzMzM3MDVjMjI0OSIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiY2FyZXMtKD9QPHB2ZXI+XGQrXyhcZF8/KSspIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZworCitQQUNLQUdFUyA9KyAiJHtQTn0tdXRpbHMiCisKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY2Fub25pY2FsLW11bHRpdG91Y2gvZnJhbWVfMi41LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jYW5vbmljYWwtbXVsdGl0b3VjaC9mcmFtZV8yLjUuMC5iYgppbmRleCBkYTFhMmEzLi4yMmI5ZDBiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jYW5vbmljYWwtbXVsdGl0b3VjaC9mcmFtZV8yLjUuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jYW5vbmljYWwtbXVsdGl0b3VjaC9mcmFtZV8yLjUuMC5iYgpAQCAtMTIsNiArMTIsOSBAQAogCiBTUkNfVVJJID0gImh0dHBzOi8vbGF1bmNocGFkLm5ldC8ke0JQTn0vdHJ1bmsvdiR7UFZ9Lytkb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL3Blc3NpbWl6aW5nLW1vdmUucGF0Y2giCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvZnJhbWUvdHJ1bmsiCisKIFNSQ19VUklbbWQ1c3VtXSA9ICIwMmJhYTk0MTA5MWM1ZDE5OGNkMTYyM2IzYWQzNmU2OCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJjZmI5YWI1MmNkY2NkOTI2ZjE4MjJhNDU3MjY0ZDAwMTRjN2ViOWY0NjAwYTcyNjI2MDYzZGQwNzNiMjYyNTZmIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jYW5vbmljYWwtbXVsdGl0b3VjaC9nZWlzXzIuMi4xNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Nhbm9uaWNhbC1tdWx0aXRvdWNoL2dlaXNfMi4yLjE3LmJiCmluZGV4IDkzNjJhNWMuLmI5ODU4ZDIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Nhbm9uaWNhbC1tdWx0aXRvdWNoL2dlaXNfMi4yLjE3LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Nhbm9uaWNhbC1tdWx0aXRvdWNoL2dlaXNfMi4yLjE3LmJiCkBAIC0yMyw2ICsyMyw5IEBACiAgICAgICAgICAgIGZpbGU6Ly9maXgtaW5kZW50YXRpb24tZm9yLWdjYzYucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJnZWlzLUNvbXBhcmUtdGhlLWZpcnN0LWNoYXJhY3Rlci1vZi1zdHJpbmctdG8tbnVsLnBhdGNoIFwKICAgICAgICAgICAgIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9sYXVuY2hwYWQubmV0L2dlaXMvdHJ1bmsiCisKIFNSQ19VUklbbWQ1c3VtXSA9ICIyZmY5ZDc2YTNlYTU3OTQ1MTZiYjAyYzlkMTkyNGZhZiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI4YTYwZjU2ODM4NTIwOTQwMzg5MDRlNjkwZDIzY2M1YTkwYTk4MGZjNTJkYTY3ZjBmMjg4OTBiYWEyNWM3MGViIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jYW5vbmljYWwtbXVsdGl0b3VjaC9ncmFpbF8zLjEuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Nhbm9uaWNhbC1tdWx0aXRvdWNoL2dyYWlsXzMuMS4xLmJiCmluZGV4IDIyZmQwZjQuLmUxZDM3NzcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Nhbm9uaWNhbC1tdWx0aXRvdWNoL2dyYWlsXzMuMS4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2Nhbm9uaWNhbC1tdWx0aXRvdWNoL2dyYWlsXzMuMS4xLmJiCkBAIC0xMyw2ICsxMyw5IEBACiBERVBFTkRTID0gImZyYW1lIgogQ1hYRkxBR1NfYXBwZW5kX3Rvb2xjaGFpbi1jbGFuZyA9ICIgLVduby1wZXNzaW1pemluZy1tb3ZlIgogU1JDX1VSSSA9ICJodHRwczovL2xhdW5jaHBhZC5uZXQvJHtCUE59L3RydW5rLyR7UFZ9Lytkb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vbGF1bmNocGFkLm5ldC9ncmFpbC90cnVuayIKKwogU1JDX1VSSVttZDVzdW1dID0gIjBkZjFiM2VjNjE2NzkyMGYzMTBlMmVmZmU2ZTJhZDQ0IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVlZWQxZjY1MGYwNDI0ODFkYWEzYTJkZTVlN2Q0MzI2MWZlMzQzYjJhMWIxZTI0MGYzYjdmYzI2NTcyYzlkZjMiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdC9kaXNhYmxlLW91dHNpZGUtdGVzdHMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHByZXN0L2NwcHJlc3QvZGlzYWJsZS1vdXRzaWRlLXRlc3RzLnBhdGNoCmluZGV4IDUyMzJlMmEuLmUxMDhlMDIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdC9kaXNhYmxlLW91dHNpZGUtdGVzdHMucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvY3BwcmVzdC9jcHByZXN0L2Rpc2FibGUtb3V0c2lkZS10ZXN0cy5wYXRjaApAQCAtNTQsNyArNTQsNyBAQAogPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQogLS0tIGNwcHJlc3Qub3JpZy9SZWxlYXNlL3Rlc3RzL2Z1bmN0aW9uYWwvd2Vic29ja2V0cy9jbGllbnQvYXV0aGVudGljYXRpb25fdGVzdHMuY3BwCiArKysgY3BwcmVzdC9SZWxlYXNlL3Rlc3RzL2Z1bmN0aW9uYWwvd2Vic29ja2V0cy9jbGllbnQvYXV0aGVudGljYXRpb25fdGVzdHMuY3BwCi1AQCAtOTMsNiArOTMsNyBAQAorQEAgLTkzLDYgKzkzLDcgQEAgU1VJVEUoYXV0aGVudGljYXRpb25fdGVzdHMpCiAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgIH0KICAKQEAgLTYyLDQ2ICs2MiwxNSBAQAogICAgICBURVNUKHNzbF90ZXN0KQogICAgICB7CiAgICAgICAgICB3ZWJzb2NrZXRfY2xpZW50IGNsaWVudDsKLUBAIC0xMjcsNiArMTI4LDcgQEAKK0BAIC0xMjcsNiArMTI4LDcgQEAgU1VJVEUoYXV0aGVudGljYXRpb25fdGVzdHMpCiAgICAgICAgICAgICAgdGhyb3c7CiAgICAgICAgICB9CiAgICAgIH0KICsgICAgKi8KICAKLSAvLyBUaGVzZSB0ZXN0cyBhcmUgc3BlY2lmaWMgdG8gb3VyIHdlYnNvY2tldHBwIGJhc2VkIGltcGxlbWVudGF0aW9uLgotICNpZiAhZGVmaW5lZChfX2NwbHVzcGx1c193aW5ydCkKLUBAIC0xNTksMTIgKzE2MSwxNCBAQAotICAgICAgICAgfQotICAgICB9Ci0gCi0rICAgIC8qCi0gICAgIC8vIFRlc3Qgc3BlY2lmaWNhbGx5IGZvciBzZXJ2ZXIgU2lnbmFsUiB0ZWFtIGhpdCBpbnRlcmVzdGluZyBjYXNlcyB3aXRoLgotICAgICBURVNUKHNuaV93aXRoX29sZGVyX3NlcnZlcl90ZXN0KQotICAgICB7Ci0gICAgICAgICB3ZWJzb2NrZXRfY2xpZW50IGNsaWVudDsKLSAgICAgICAgIHNuaV90ZXN0X2ltcGwoY2xpZW50KTsKLSAgICAgfQotKyAgICAqLwotIAotICAgICAvLyBXaW5SVCBkb2Vzbid0IGV4cG9zZSBvcHRpb24gZm9yIGRpc2FibGluZy4KLSAgICAgLy8gTm8gc3RhYmxlIHNlcnZlciBpcyBhdmFpbGFibGUgdG8gcmVsaWFibHkgdGVzdCB0aGlzLgotQEAgLTE5NCw2ICsxOTgsNyBAQAotICAgICAgICAgfQotICAgICB9Ci0gCi0rICAgIC8qCi0gICAgIC8vIFdpbnJ0IGRvZXNuJ3QgYWxsb3cgZXhwbGljaXRseSBzZXR0aW5nIHNlcnZlciBob3N0IGZvciBTTkkuCi0gICAgIFRFU1Qoc25pX2V4cGxpY2l0X2hvc3RuYW1lKQotICAgICB7Ci1AQCAtMjA0LDYgKzIwOSw3IEBACi0gICAgICAgICB3ZWJzb2NrZXRfY2xpZW50IGNsaWVudChjb25maWcpOwotICAgICAgICAgc25pX3Rlc3RfaW1wbChjbGllbnQpOwotICAgICB9Ci0rICAgICovCi0gCiAgICAgIHZvaWQgaGFuZHNoYWtlX2Vycm9yX3Rlc3RfaW1wbChjb25zdCA6OnV0aWxpdHk6OnN0cmluZ190JiBob3N0KQogICAgICB7Ci1AQCAtMjI1LDExICsyMzEsMTEgQEAKK0BAIC0xNDgsMTEgKzE1MCwxMSBAQCBTVUlURShhdXRoZW50aWNhdGlvbl90ZXN0cykKICAgICAgICAgIH0KICAgICAgfQogIApAQCAtMTE0LDEzICs4MywxMyBAQAogLSAgICBURVNUKGNlcnRfZXhwaXJlZCkgeyBoYW5kc2hha2VfZXJyb3JfdGVzdF9pbXBsKFUoIndzczovL2V4cGlyZWQuYmFkc3NsLmNvbS8iKSk7IH0KICsgICAgLy9URVNUKGNlcnRfZXhwaXJlZCkgeyBoYW5kc2hha2VfZXJyb3JfdGVzdF9pbXBsKFUoIndzczovL2V4cGlyZWQuYmFkc3NsLmNvbS8iKSk7IH0KICAKLSAjZW5kaWYKKyB9IC8vIFNVSVRFKGF1dGhlbnRpY2F0aW9uX3Rlc3RzKQogIAogSW5kZXg6IGNwcHJlc3QvUmVsZWFzZS90ZXN0cy9mdW5jdGlvbmFsL2h0dHAvY2xpZW50L2Nvbm5lY3Rpb25zX2FuZF9lcnJvcnMuY3BwCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CiAtLS0gY3BwcmVzdC5vcmlnL1JlbGVhc2UvdGVzdHMvZnVuY3Rpb25hbC9odHRwL2NsaWVudC9jb25uZWN0aW9uc19hbmRfZXJyb3JzLmNwcAogKysrIGNwcHJlc3QvUmVsZWFzZS90ZXN0cy9mdW5jdGlvbmFsL2h0dHAvY2xpZW50L2Nvbm5lY3Rpb25zX2FuZF9lcnJvcnMuY3BwCi1AQCAtNDA2LDYgKzQwNiw3IEBACitAQCAtNDA4LDYgKzQwOCw3IEBACiAgICAgIH0KICAjZW5kaWYKICAKQEAgLTEyOCw3ICs5Nyw3IEBACiAgICAgIC8vIFRyeSB0byBjb25uZWN0IHRvIGEgc2VydmVyIG9uIGEgY2xvc2VkIHBvcnQgYW5kIGNhbmNlbCB0aGUgb3BlcmF0aW9uLgogICAgICBURVNUX0ZJWFRVUkUodXJpX2FkZHJlc3MsIGNhbmNlbF9iYWRfcG9ydCkKICAgICAgewotQEAgLTQzNyw2ICs0MzgsNyBAQAorQEAgLTQzOSw2ICs0NDAsNyBAQAogIAogICAgICAgICAgVkVSSUZZX1RIUk9XU19IVFRQX0VSUk9SX0NPREUodC5nZXQoKSwgc3RkOjplcnJjOjpvcGVyYXRpb25fY2FuY2VsZWQpOwogICAgICB9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHByZXN0L2NwcHJlc3RfMi4xMC4xNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdF8yLjEwLjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWM4ZWFiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdF8yLjEwLjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJNaWNyb3NvZnQgcHJvamVjdCBmb3IgY2xvdWQtYmFzZWQgY2xpZW50LXNlcnZlciBjb21tdW5pY2F0aW9uIGluIG5hdGl2ZSBjb2RlIHVzaW5nIGEgbW9kZXJuIGFzeW5jaHJvbm91cyBDKysgQVBJIGRlc2lnbi4iCi1TRUNUSU9OID0gImxpYnMvbmV0d29yayIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvY3BwcmVzdHNkay8iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7U30vbGljZW5zZS50eHQ7bWQ1PWEyZTE1Yjk1NDc2OTIxOGZmOTEyNDY4ZWVjZDZhMDJmIgotREVQRU5EUyA9ICJvcGVuc3NsIHdlYnNvY2tldHBwIHpsaWIgYm9vc3QgYnJvdGxpIgotCi1FWFRSQV9PRUNNQUtFID0gIi1EQ1BQUkVTVF9FWFBPUlRfRElSPWNtYWtlL2NwcHJlc3RzZGsgLURDUFBSRVNUX0VYQ0xVREVfQlJPVExJPU9GRiAtRFdFUlJPUj1PRkYiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9NaWNyb3NvZnQvY3BwcmVzdHNkay5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPW1hc3RlciBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWZsb2F0LXRlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtb3V0c2lkZS10ZXN0cy5wYXRjaCAiCi0KLSMgdGFnIDIuMTAuMTQKLVNSQ1JFVj0gIjZmNjAyYmVlNjdiMDg4YTI5OWQ3OTAxNTM0YWYzYmNlNjMzNGFiMzgiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHByZXN0L2NwcHJlc3RfMi4xMC4xNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2NwcHJlc3QvY3BwcmVzdF8yLjEwLjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlZTVhZTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9jcHByZXN0L2NwcHJlc3RfMi4xMC4xNS5iYgpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIk1pY3Jvc29mdCBwcm9qZWN0IGZvciBjbG91ZC1iYXNlZCBjbGllbnQtc2VydmVyIGNvbW11bmljYXRpb24gaW4gbmF0aXZlIGNvZGUgdXNpbmcgYSBtb2Rlcm4gYXN5bmNocm9ub3VzIEMrKyBBUEkgZGVzaWduLiIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL01pY3Jvc29mdC9jcHByZXN0c2RrLyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtTfS9saWNlbnNlLnR4dDttZDU9YTJlMTViOTU0NzY5MjE4ZmY5MTI0NjhlZWNkNmEwMmYiCitERVBFTkRTID0gIm9wZW5zc2wgd2Vic29ja2V0cHAgemxpYiBib29zdCBicm90bGkiCisKK0VYVFJBX09FQ01BS0UgPSAiLURDUFBSRVNUX0VYUE9SVF9ESVI9Y21ha2UvY3BwcmVzdHNkayAtRENQUFJFU1RfRVhDTFVERV9CUk9UTEk9T0ZGIC1EV0VSUk9SPU9GRiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL01pY3Jvc29mdC9jcHByZXN0c2RrLmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9bWFzdGVyIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtZmxvYXQtdGVzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1vdXRzaWRlLXRlc3RzLnBhdGNoICIKKworIyB0YWcgMi4xMC4xNQorU1JDUkVWPSAiYjk0YmMzMmZmODRlODE1YmE0NGM1NjdmNmZlNGFmNWY1ZjZiMzA0OCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RhZW1vbnRvb2xzL2RhZW1vbnRvb2xzLzAwMDEtZGFlbW9udG9vbHMtbmF0aXZlLUZpeC1hLXdhcm5pbmcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kYWVtb250b29scy9kYWVtb250b29scy8wMDAxLWRhZW1vbnRvb2xzLW5hdGl2ZS1GaXgtYS13YXJuaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDk1NzdkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RhZW1vbnRvb2xzL2RhZW1vbnRvb2xzLzAwMDEtZGFlbW9udG9vbHMtbmF0aXZlLUZpeC1hLXdhcm5pbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1Gcm9tIGE0M2EzMzI3Y2NkNGIwNmEzYmNmMGM4N2Q1MThhOTdjNmIzOWFjMDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBMZWkgTWFvaHVpIDxsZWltYW9odWlAY24uZnVqaXRzdS5jb20+Ci1EYXRlOiBTYXQsIDYgQXVnIDIwMTYgMDI6MDk6NTMgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gZGFlbW9udG9vbHM6IEZpeCBhIHdhcm5pbmcKLQotVG8gZml4IHRoZSB3YXJuaW5nIGFzIGZvbGxvd2luZzoKLQotV0FSTklORzogZGFlbW9udG9vbHMtbmF0aXZlLTAuNzYtcjAgZG9fcG9wdWxhdGVfc3lzcm9vdDogRmlsZSAnL2J1aWxkLXBva3kvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvYmluL2Noa3Noc2dyJyBmcm9tIGRhZW1vbnRvb2xzLW5hdGl2ZSB3YXMgYWxyZWFkeSBzdHJpcHBlZCwgdGhpcyB3aWxsIHByZXZlbnQgZnV0dXJlIGRlYnVnZ2luZyEKLQotU2lnbmVkLW9mZi1ieTogTGVpIE1hb2h1aSA8bGVpbWFvaHVpQGNuLmZ1aml0c3UuY29tPgotLS0tCi0gc3JjL2NvbmYtbGQgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY29uZi1sZCBiL3NyYy9jb25mLWxkCi1pbmRleCA1OWEwZGU3Li4xZDA1MThhIDEwMDY0NAotLS0tIGEvc3JjL2NvbmYtbGQKLSsrKyBiL3NyYy9jb25mLWxkCi1AQCAtMSwzICsxLDMgQEAKLS1nY2MgLXMKLStnY2MKLSAKLSBUaGlzIHdpbGwgYmUgdXNlZCB0byBsaW5rIC5vIGZpbGVzIGludG8gYW4gZXhlY3V0YWJsZS4KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGFlbW9udG9vbHMvZGFlbW9udG9vbHMvY3Jvc3MtY29tcGlsZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RhZW1vbnRvb2xzL2RhZW1vbnRvb2xzL2Nyb3NzLWNvbXBpbGUucGF0Y2gKaW5kZXggZjE2NGMyZC4uOWMwN2Q3NSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGFlbW9udG9vbHMvZGFlbW9udG9vbHMvY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kYWVtb250b29scy9kYWVtb250b29scy9jcm9zcy1jb21waWxlLnBhdGNoCkBAIC0zMCw3ICszMCw3IEBACiAgaGFzc2hzZ3IuaDogY2hrc2hzZ3IgY2hvb3NlIGNvbXBpbGUgaGFzc2hzZ3IuaDEgaGFzc2hzZ3IuaDIgbG9hZCBcCiAgdHJ5c2hzZ3IuYyB3YXJuLXNoc2dyCiAtCS4vY2hrc2hzZ3IgfHwgKCBjYXQgd2Fybi1zaHNncjsgZXhpdCAxICkKLSsJY2hrc2hzZ3IgfHwgKCBjYXQgd2Fybi1zaHNncjsgZXhpdCAxICkKKysJZWNobyAiV2FybmluZzogV2UgY2FuIG5vdCBydW4gdGVzdCBvbiBjcm9zcyB0YXJnZXQuIC0gaWdub3JpbmcgLi9jaGtzaHNnciB8fCAoIGNhdCB3YXJuLXNoc2dyOyBleGl0IDEgKSIKICAJLi9jaG9vc2UgY2xyIHRyeXNoc2dyIGhhc3Noc2dyLmgxIGhhc3Noc2dyLmgyID4gaGFzc2hzZ3IuaAogIAogIGhhc3dhaXRwLmg6IGNob29zZSBjb21waWxlIGhhc3dhaXRwLmgxIGhhc3dhaXRwLmgyIGxvYWQgdHJ5d2FpdHAuYwpAQCAtMzksNyArMzksNyBAQAogIHJlYWRwcm9jdGl0bGUgcnRzLnRlc3RzIHNldGxvY2sgc2V0dWlkZ2lkIHNvZnRsaW1pdCBzdXBlcnZpc2Ugc3ZjIFwKICBzdm9rIHN2c2NhbiBzdnNjYW5ib290IHN2c3RhdCB0YWk2NG4gdGFpNjRubG9jYWwKIC0JZW52IC0gL2Jpbi9zaCBydHMudGVzdHMgMj4mMSB8IGNhdCAtdiA+IHJ0cwotKwllY2hvICJXYXJuaW5nOiBXZSBjYW4gbm90IHJ1biB0ZXN0IG9uIGNyb3NzIHRhcmdldC4iCisrCWVjaG8gIldhcm5pbmc6IFdlIGNhbiBub3QgcnVuIHRlc3Qgb24gY3Jvc3MgdGFyZ2V0LiAtIGlnbm9yaW5nIGVudiAtIC9iaW4vc2ggcnRzLnRlc3RzIDI+JjEgfCBjYXQgLXYgPiBydHMiCiAgCiAgc2Nhbl91bG9uZy5vOiBjb21waWxlIHNjYW4uaCBzY2FuX3Vsb25nLmMKICAJLi9jb21waWxlIHNjYW5fdWxvbmcuYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGFlbW9udG9vbHMvZGFlbW9udG9vbHNfMC43Ni5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2RhZW1vbnRvb2xzL2RhZW1vbnRvb2xzXzAuNzYuYmIKaW5kZXggMzUyNTFjYi4uZjBjNWY3ZCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGFlbW9udG9vbHMvZGFlbW9udG9vbHNfMC43Ni5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kYWVtb250b29scy9kYWVtb250b29sc18wLjc2LmJiCkBAIC0xNiwyMSArMTYsMTYgQEAKIExJQ0VOU0UgPSAiUEQiCiAKIFNSQ19VUkkgPSAiaHR0cDovL2NyLnlwLnRvL2RhZW1vbnRvb2xzLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1lcnJvci5oLWluY2x1ZGUtZXJybm8uaC1pbnN0ZWFkLW9mLWV4dGVybi1pbnQuZGlmZiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXN1cGVydmlzZS5jLS4tc3VwZXJ2aXNlLW1heS1iZS1hLXN5bWxpbmstaWYtaXQtcy1kYS5kaWZmICIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gImZpbGU6Ly9jcm9zcy1jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMS1kYWVtb250b29scy1GaXgtUUEtSXNzdWUucGF0Y2ggIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiZmlsZTovLzAwMDEtZGFlbW9udG9vbHMtbmF0aXZlLUZpeC1hLXdhcm5pbmcucGF0Y2ggIgorICAgIGZpbGU6Ly8wMDAxLWVycm9yLmgtaW5jbHVkZS1lcnJuby5oLWluc3RlYWQtb2YtZXh0ZXJuLWludC5kaWZmIFwKKyAgICBmaWxlOi8vMDAwMi1zdXBlcnZpc2UuYy0uLXN1cGVydmlzZS1tYXktYmUtYS1zeW1saW5rLWlmLWl0LXMtZGEuZGlmZiBcCisgICAgZmlsZTovL2Nyb3NzLWNvbXBpbGUucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWRhZW1vbnRvb2xzLUZpeC1RQS1Jc3N1ZS5wYXRjaCBcCisiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIxODcxYWYyNDUzZDZlNDY0MDM0OTY4YTBmYmNiMmJmYyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJhNTU1MzUwMTJiMmJlN2E1MmRjZDllY2NhYmI5YTE5OGIxM2JlNTBkMDM4NDE0M2JkM2IzMmI4NzEwZGY0YzFmIgogCi1TID0gIiR7V09SS0RJUn0vYWRtaW4vJHtCUE59LSR7UFZ9IgotCi1ERVBFTkRTICs9ICJkYWVtb250b29scy1uYXRpdmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICIiCitTID0gIiR7V09SS0RJUn0vYWRtaW4vJHtCUH0iCiAKIGRvX2NvbXBpbGUoKSB7CiAgICAgLi9wYWNrYWdlL2NvbXBpbGUKQEAgLTQwLDEyICszNSwxMCBAQAogICAgIGluc3RhbGwgLWQgJHtEfS8ke2JpbmRpcn0KIH0KIAotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vY29tcGlsZS9jaGtzaHNnciAke0R9LyR7YmluZGlyfQotfQotCiBkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CiAgICAgaW5zdGFsbCAtbTc1NSAke1N9L2NvbW1hbmQvKiAke0R9LyR7YmluZGlyfQogfQogCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorQUxURVJOQVRJVkVfJHtQTn0gPSAic3ZjIHN2b2siCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kZWJzdW1zL2RlYnN1bXNfMi4yLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kZWJzdW1zL2RlYnN1bXNfMi4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEzZjIwZWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZGVic3Vtcy9kZWJzdW1zXzIuMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotU1VNTUFSWSA9ICJNaXNjZWxsYW5lb3VzIHV0aWxpdGllcyBzcGVjaWZpYyB0byBEZWJpYW4iCi1TVU1NQVJZXyR7UE59LWNyb24gPSAiQ3JvbiBzY3JpcHRzIHRvIGNvbnRyb2wgYXV0b21hdGljIGRlYnN1bSBjaGVja2luZyIKLURFU0NSSVBUSU9OID0gIkEgdG9vbCBmb3IgdmVyaWZpY2F0aW9uIG9mIGluc3RhbGxlZCBwYWNrYWdlIGZpbGVzIGFnYWluc3QgXAotTUQ1IGNoZWNrc3VtcyBkZWJzdW1zIGNhbiB2ZXJpZnkgdGhlIGludGVncml0eSBvZiBpbnN0YWxsZWQgcGFja2FnZSBmaWxlcyBcCi1hZ2FpbnN0IE1ENSBjaGVja3N1bXMgaW5zdGFsbGVkIGJ5IHRoZSBwYWNrYWdlLCBvciBnZW5lcmF0ZWQgZnJvbSBhIC5kZWIgXAotYXJjaGl2ZS4iCi1ERVNDUklQVElPTl8ke1BOfS1jcm9uID0gIkNyb24gc2NyaXB0cyB0byBjb250cm9sIGF1dG9tYXRpYyBzeXN0ZW0gaW50ZWdyaXR5IFwKLWNoZWNraW5nIHZpYSBkZWJzdW1zLiIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT03NzBkNzUxNTUzZTY1NTllOWVhZWZkMmUxMWNjZjdlOSIKLQotU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE3MDUzMFQyMTIxMDhaL3Bvb2wvbWFpbi9kL2RlYnN1bXMvZGVic3Vtc18yLjIuMi50YXIueHoiCi1TUkNfVVJJW21kNXN1bV0gPSAiODJiMDcxMDg1NWE3ZTUyMTJkNDM1ODE2M2EyNjllNzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWE2MTg5NmY5M2E2YmJmZTAxNjFjMjFkY2Q2NzUyOWFlOGUxZWM4YzNjY2YyNDQ1MjNjNTJjNGFkODI1M2Q5NyIKLQotIyB0aGUgcGFja2FnZSBpcyB0YWtlbiBmcm9tIHNuYXBzaG90cy5kZWJpYW4ub3JnOyB0aGF0IHNvdXJjZSBpcyBzdGF0aWMgYW5kIGdvZXMgc3RhbGUKLSMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZAotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9kLyR7QlBOfS8iCi0KLWluaGVyaXQgcGVybG5hdGl2ZSBnZXR0ZXh0Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nyb24uZGFpbHkgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nyb24ud2Vla2x5Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nyb24ubW9udGhseSAke0R9JHtzYmluZGlyfSAke0R9JHtiaW5kaXJ9Ci0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW4xICR7RH0ke21hbmRpcn0vbWFuOAotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgZGVic3VtcyAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDA3NTUgcmRlYnN1bXMgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1IGRlYnN1bXNfaW5pdCAke0R9JHtzYmluZGlyfQotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgbWFuL2RlYnN1bXMuMSAke0R9JHttYW5kaXJ9L21hbjEvCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCBtYW4vcmRlYnN1bXMuMSAke0R9JHttYW5kaXJ9L21hbjEvCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCBtYW4vZGVic3Vtc19pbml0LjggJHtEfSR7bWFuZGlyfS9tYW44LwotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgZGViaWFuL2Nyb24uZGFpbHkgXAotICAgICAgICAgICAgICAgICR7RH0vJHtzeXNjb25mZGlyfS9jcm9uLmRhaWx5L2RlYnN1bXMKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGRlYmlhbi9jcm9uLndlZWtseSBcCi0gICAgICAgICAgICAgICAgJHtEfS8ke3N5c2NvbmZkaXJ9L2Nyb24ud2Vla2x5L2RlYnN1bXMKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0IGRlYmlhbi9jcm9uLm1vbnRobHkgXAotICAgICAgICAgICAgICAgICR7RH0vJHtzeXNjb25mZGlyfS9jcm9uLm1vbnRobHkvZGVic3VtcwotICAgICAgICAjIE11c3QgZXhpc3QsIGRlZmF1bHRzIHRvIGVtcHR5LgotICAgICAgICB0b3VjaCAke0R9LyR7c3lzY29uZmRpcn0vZGVic3Vtcy1pZ25vcmUKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LWNyb24iCi0KLVJERVBFTkRTXyR7UE59ID0gImRwa2cgZHBrZy1wZXJsIGxpYmZpbGUtZm5tYXRjaC1wZXJsIHBlcmwgXAotICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtY29uc3RhbnQgcGVybC1tb2R1bGUtZGlnZXN0LW1kNSBcCi0gICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1lcnJubyBwZXJsLW1vZHVsZS1mY250bCBcCi0gICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLWJhc2VuYW1lIHBlcmwtbW9kdWxlLWZpbGUtY29weSBcCi0gICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLWZpbmQgcGVybC1tb2R1bGUtZmlsZS1nbG9iIFwKLSAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGUtcGF0aCBwZXJsLW1vZHVsZS1maWxlLXNwZWMgXAotICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS10ZW1wIHBlcmwtbW9kdWxlLWdldG9wdC1sb25nIFwKLSAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXBvc2l4IgotCi1GSUxFU18ke1BOfS1jcm9uID0gIiR7c3lzY29uZmRpcn0vY3Jvbi4qIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZHN0YXQvZHN0YXRfMC43LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kc3RhdC9kc3RhdF8wLjcuNC5iYgppbmRleCA4ZWI3MTU3Li4yZTM3ZGQ3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kc3RhdC9kc3RhdF8wLjcuNC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9kc3RhdC9kc3RhdF8wLjcuNC5iYgpAQCAtMTksNCArMTksNCBAQAogICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAogfQogCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWNvcmUgcHl0aG9uLW1pc2MgcHl0aG9uLXJlc291cmNlIHB5dGhvbi1zaGVsbCBweXRob24tdW5peGFkbWluIgorUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtY29yZSBweXRob24zLW1pc2MgcHl0aG9uMy1yZXNvdXJjZSBweXRob24zLXNoZWxsIHB5dGhvbjMtdW5peGFkbWluIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXBlZy9lcGVnX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2VwZWcvZXBlZ19naXQuYmIKaW5kZXggNmIyM2JiZi4uOGNhNTc0MCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZXBlZy9lcGVnX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9lcGVnL2VwZWdfZ2l0LmJiCkBAIC02LDcgKzYsNyBAQAogREVQRU5EUyA9ICJqcGVnIGxpYmV4aWYiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9tYXR0ZXMvZXBlZy5naXQiCi1TUkNSRVYgPSAiMzM3ZjU1MzQ2NDI1ZmJmMmQyODNlNzk0YjcwMjMxOGVmMmE3NGJjYiIKK1NSQ1JFViA9ICI5YTE3NWNkNjdlYWE2MWZlNDU0MTNkOGRhODJkYTcyOTM2NTY3MDQ3IgogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbHRrL2ZsdGsuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mbHRrL2ZsdGsuYmIKaW5kZXggMGQwMzNmMy4uMDkzNDRjZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZmx0ay9mbHRrLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZsdGsvZmx0ay5iYgpAQCAtMiw3ICsyLDcgQEAKIAogREVQRU5EUyA9ICJhbHNhLWxpYiB6bGliIGpwZWcgbGlicG5nIGxpYnhleHQgbGlieGZ0IgogCi1pbmhlcml0IGZlYXR1cmVzX2NoZWNrIGJpbmNvbmZpZyBsaWJfcGFja2FnZSBndGstaWNvbi1jYWNoZSBtaW1lCitpbmhlcml0IGZlYXR1cmVzX2NoZWNrIGJpbmNvbmZpZyBsaWJfcGFja2FnZSBndGstaWNvbi1jYWNoZSBtaW1lIG1pbWUteGRnCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCiBTUkNfVVJJICs9ICIgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZm10L2ZtdF82LjAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZtdC9mbXRfNi4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzNWM3N2IuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZm10L2ZtdF82LjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAib3Blbi1zb3VyY2UgZm9ybWF0dGluZyBsaWJyYXJ5IGZvciBDKysiCi1ERVNDUklQVElPTiA9ICJ7Zm10fSBpcyBhbiBvcGVuLXNvdXJjZSBmb3JtYXR0aW5nIGxpYnJhcnkgZm9yIEMrKy4gSXQgY2FuIGJlIHVzZWQgYXMgYSBzYWZlIGFuZCBmYXN0IGFsdGVybmF0aXZlIHRvIChzKXByaW50ZiBhbmQgaW9zdHJlYW1zLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZm10LmRldiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5yc3Q7bWQ1PWFmODhkNzU4Zjc1ZjNjNWM0OGE5Njc1MDFmMjQzODRiIgotCi1TUkNfVVJJICs9ICJnaXQ6Ly9naXRodWIuY29tL2ZtdGxpYi9mbXQiCi1TUkNSRVYgPSAiNzUxMmE1NWFhM2FlMzA5NTg3Y2E4OTY2OGVmOWVjNDA3NGE1MWExZiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBjbWFrZQotaW5oZXJpdCBwdGVzdAotCi1FWFRSQV9PRUNNQUtFICs9ICItREJVSUxEX1NIQVJFRF9MSUJTPU9OIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZm10L2ZtdF82LjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZtdC9mbXRfNi4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVkYzk0YQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZtdC9mbXRfNi4yLjAuYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJvcGVuLXNvdXJjZSBmb3JtYXR0aW5nIGxpYnJhcnkgZm9yIEMrKyIKK0RFU0NSSVBUSU9OID0gIntmbXR9IGlzIGFuIG9wZW4tc291cmNlIGZvcm1hdHRpbmcgbGlicmFyeSBmb3IgQysrLiBJdCBjYW4gYmUgdXNlZCBhcyBhIHNhZmUgYW5kIGZhc3QgYWx0ZXJuYXRpdmUgdG8gKHMpcHJpbnRmIGFuZCBpb3N0cmVhbXMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9mbXQuZGV2IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnJzdDttZDU9YWY4OGQ3NThmNzVmM2M1YzQ4YTk2NzUwMWYyNDM4NGIiCisKK1NSQ19VUkkgKz0gImdpdDovL2dpdGh1Yi5jb20vZm10bGliL2ZtdCIKK1NSQ1JFViA9ICI5YmRkMTU5NmNlZjFiNTdiOTU1NmY4YmVmMzJkYzRhMzIzMjJlZjNlIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlCitpbmhlcml0IHB0ZXN0CisKK0VYVFJBX09FQ01BS0UgKz0gIi1EQlVJTERfU0hBUkVEX0xJQlM9T04iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHBfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZnJlZXJkcC9mcmVlcmRwX2dpdC5iYgppbmRleCAzNzNjNDk3Li43Y2FmYmI3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9mcmVlcmRwL2ZyZWVyZHBfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2ZyZWVyZHAvZnJlZXJkcF9naXQuYmIKQEAgLTEwLDExICsxMCwxMiBAQAogCiBpbmhlcml0IHBrZ2NvbmZpZyBjbWFrZSBnaXRwa2d2CiAKK1BFID0gIjEiCiBQViA9ICIyLjAuMCtnaXRyJHtTUkNQVn0iCiBQS0dWID0gIiR7R0lUUEtHVlRBR30iCiAKLSMgMi4wLjAtcmM0Ci1TUkNSRVYgPSAiZTIxYjcyYzk1Zjg1NzgxN2I0YjMyYjVlZjU0MDYzNTVjMDA1YTllOCIKKyMgMi4wLjAgcmVsZWFzZQorU1JDUkVWID0gIjVhYjJiZWQ4NzQ5NzQ3YjhlNGIyZWQ0MzFmZDEwMmJjNzI2YmU2ODQiCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vRnJlZVJEUC9GcmVlUkRQLmdpdCBcCiAgICAgZmlsZTovL3dpbnByLW1ha2VjZXJ0LUJ1aWxkLXdpdGgtaW5zdGFsbC1SUEFUSC5wYXRjaCBcCiAiCkBAIC0zOSw3ICs0MCw3IEBACiAKIFgxMV9ERVBTID0gInZpcnR1YWwvbGlieDExIGxpYnhpbmVyYW1hIGxpYnhleHQgbGlieGN1cnNvciBsaWJ4diBsaWJ4aSBsaWJ4cmVuZGVyIGxpYnhmaXhlcyBsaWJ4ZGFtYWdlIGxpYnhyYW5kciBsaWJ4a2JmaWxlIgogUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EV0lUSF9YMTE9T04gLURXSVRIX1hJTkVSQU1BPU9OIC1EV0lUSF9YRVhUPU9OIC1EV0lUSF9YQ1VSU09SPU9OIC1EV0lUSF9YVj1PTiAtRFdJVEhfWEk9T04gLURXSVRIX1hSRU5ERVI9T04gLURXSVRIX1hGSVhFUz1PTiAtRFdJVEhfWERBTUFHRT1PTiAtRFdJVEhfWFJBTkRSPU9OIC1EV0lUSF9YS0JGSUxFPU9OLC1EV0lUSF9YMTE9T0ZGLCR7WDExX0RFUFN9IgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItRFdJVEhfV0FZTEFORD1PTiwtRFdJVEhfV0FZTEFORD1PRkYsd2F5bGFuZCIKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURXSVRIX1dBWUxBTkQ9T04sLURXSVRIX1dBWUxBTkQ9T0ZGLHdheWxhbmQgd2F5bGFuZC1uYXRpdmUiCiBQQUNLQUdFQ09ORklHW2RpcmVjdGZiXSA9ICItRFdJVEhfRElSRUNURkI9T04sLURXSVRIX0RJUkVDVEZCPU9GRixkaXJlY3RmYiIKIFBBQ0tBR0VDT05GSUdbcGFtXSA9ICItRFdJVEhfUEFNPU9OLC1EV0lUSF9QQU09T0ZGLGxpYnBhbSIKIFBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLURXSVRIX1BVTFNFQVVESU89T04sLURXSVRIX1BVTFNFQVVESU89T0ZGLHB1bHNlYXVkaW8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC8wMDAxLWFubm90YXRlLmMtZ2RmdC5jLVJlcGxhY2Utc3RybmNweS13aXRoLW1lbWNjcHktdG8tZmkucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC8wMDAxLWFubm90YXRlLmMtZ2RmdC5jLVJlcGxhY2Utc3RybmNweS13aXRoLW1lbWNjcHktdG8tZmkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMzNzdiMzcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvMDAwMS1hbm5vdGF0ZS5jLWdkZnQuYy1SZXBsYWNlLXN0cm5jcHktd2l0aC1tZW1jY3B5LXRvLWZpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSA4NWM3Njk0YTVjZjM0NTk3OTA5YmRkMWNhNjkzMWIwZjk5OTA0YzJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDE5IEp1biAyMDE4IDAwOjQwOjQ5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFubm90YXRlLmMvZ2RmdC5jOiBSZXBsYWNlIHN0cm5jcHkgd2l0aCBtZW1jY3B5IHRvIGZpeAotIC1Xc3RyaW5nb3AtdHJ1bmNhdGlvbi4KLQotRml4ZWQgZm9yIGdjYzg6Ci1naXQvc3JjL2dkZnQuYzoxNjk5OjI6IGVycm9yOiAnc3RybmNweScgb3V0cHV0IHRydW5jYXRlZCBiZWZvcmUgdGVybWluYXRpbmcgbnVsIGNvcHlpbmcgYXMgbWFueSBieXRlcyBmcm9tIGEgc3RyaW5nIGFzIGl0cyBsZW5ndGggWy1XZXJyb3I9c3RyaW5nb3AtdHJ1bmNhdGlvbl0KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJnZC9saWJnZC9wdWxsLzQ0Ml0KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvYW5ub3RhdGUuYyB8IDIgKy0KLSBzcmMvZ2RmdC5jICAgICB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9hbm5vdGF0ZS5jIGIvc3JjL2Fubm90YXRlLmMKLWluZGV4IDAwYWFmNDkuLjE3ZGY4MTMgMTAwNjQ0Ci0tLS0gYS9zcmMvYW5ub3RhdGUuYwotKysrIGIvc3JjL2Fubm90YXRlLmMKLUBAIC0xMDQsNyArMTA0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJCQkJCWZwcmludGYoc3RkZXJyLCAiRm9udCBtYXhpbXVtIGxlbmd0aCBpcyAxMDI0LCAlZCBnaXZlblxuIiwgZm9udF9sZW4pOwotIAkJCQkJZ290byBiYWRMaW5lOwotIAkJCQl9Ci0tCQkJCXN0cm5jcHkoZm9udCwgc3QsIGZvbnRfbGVuKTsKLSsJCQkJbWVtY3B5KGZvbnQsIHN0LCBmb250X2xlbik7Ci0gCQkJfQotIAkJfSBlbHNlIGlmKCFzdHJjbXAoc3QsICJhbGlnbiIpKSB7Ci0gCQkJY2hhciAqc3QgPSBzdHJ0b2soMCwgIiBcdFxyXG4iKTsKLWRpZmYgLS1naXQgYS9zcmMvZ2RmdC5jIGIvc3JjL2dkZnQuYwotaW5kZXggOWZhODI5NS4uODFkYmU0MSAxMDA2NDQKLS0tLSBhL3NyYy9nZGZ0LmMKLSsrKyBiL3NyYy9nZGZ0LmMKLUBAIC0xNjk2LDcgKzE2OTYsNyBAQCBzdGF0aWMgY2hhciAqIGZvbnRfcGF0aChjaGFyICoqZm9udHBhdGgsIGNoYXIgKm5hbWVfbGlzdCkKLSAJCWdkRnJlZShwYXRoKTsKLSAJCXJldHVybiAiY291bGQgbm90IGFsbG9jIGZ1bGwgbGlzdCBvZiBmb250cyI7Ci0gCX0KLS0Jc3RybmNweShmb250bGlzdCwgbmFtZV9saXN0LCBuYW1lX2xpc3RfbGVuKTsKLSsJbWVtY3B5KGZvbnRsaXN0LCBuYW1lX2xpc3QsIG5hbWVfbGlzdF9sZW4pOwotIAlmb250bGlzdFtuYW1lX2xpc3RfbGVuXSA9IDA7Ci0gCi0gCS8qCi0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC9DVkUtMjAxOC0xMDAwMjIyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvQ1ZFLTIwMTgtMTAwMDIyMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU5MjRkMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZC9DVkUtMjAxOC0xMDAwMjIyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotRnJvbSA0YjFlMThhMDBjZTdjNGI3ZTY5MTljM2IzMTA5YTAzNDM5M2I4MDVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWlrZSBGcnlzaW5nZXIgPHZhcGllckBnZW50b28ub3JnPgotRGF0ZTogU2F0LCAxNCBKdWwgMjAxOCAxMzo1NDowOCAtMDQwMAotU3ViamVjdDogW1BBVENIXSBibXA6IGNoZWNrIHJldHVybiB2YWx1ZSBpbiBnZEltYWdlQm1wUHRyCi0KLUNsb3NlcyAjNDQ3LgotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBhYzE2YmRmMmQ0MTcyNGI1YTY1MjU1ZDRjMjhmYjBlYzQ2YmM0MmY1KQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGliZ2QvbGliZ2QvY29tbWl0LzRiMWUxOGEwMGNlN2M0YjdlNjkxOWMzYjMxMDlhMDM0MzkzYjgwNWFdCi1DVkU6IENWRS0yMDE4LTEwMDAyMjIKLVNpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvZ2RfYm1wLmMgfCAxNyArKysrKysrKysrKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2dkX2JtcC5jIGIvc3JjL2dkX2JtcC5jCi1pbmRleCBjY2FmZGNkLi5kNjI1ZGExIDEwMDY0NAotLS0tIGEvc3JjL2dkX2JtcC5jCi0rKysgYi9zcmMvZ2RfYm1wLmMKLUBAIC00OCw2ICs0OCw4IEBAIHN0YXRpYyBpbnQgYm1wX3JlYWRfNGJpdChnZEltYWdlUHRyIGltLCBnZElPQ3R4UHRyIGluZmlsZSwgYm1wX2luZm9fdCAqaW5mbywgYm1wCi0gc3RhdGljIGludCBibXBfcmVhZF84Yml0KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHhQdHIgaW5maWxlLCBibXBfaW5mb190ICppbmZvLCBibXBfaGRyX3QgKmhlYWRlcik7Ci0gc3RhdGljIGludCBibXBfcmVhZF9ybGUoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBpbmZpbGUsIGJtcF9pbmZvX3QgKmluZm8pOwotIAotK3N0YXRpYyBpbnQgX2dkSW1hZ2VCbXBDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQsIGludCBjb21wcmVzc2lvbik7Ci0rCi0gI2RlZmluZSBCTVBfREVCVUcocykKLSAKLSBzdGF0aWMgaW50IGdkQk1QUHV0V29yZChnZElPQ3R4ICpvdXQsIGludCB3KQotQEAgLTg4LDggKzkwLDEwIEBAIEJHRF9ERUNMQVJFKHZvaWQgKikgZ2RJbWFnZUJtcFB0cihnZEltYWdlUHRyIGltLCBpbnQgKnNpemUsIGludCBjb21wcmVzc2lvbikKLSAJdm9pZCAqcnY7Ci0gCWdkSU9DdHggKm91dCA9IGdkTmV3RHluYW1pY0N0eCgyMDQ4LCBOVUxMKTsKLSAJaWYgKG91dCA9PSBOVUxMKSByZXR1cm4gTlVMTDsKLS0JZ2RJbWFnZUJtcEN0eChpbSwgb3V0LCBjb21wcmVzc2lvbik7Ci0tCXJ2ID0gZ2REUEV4dHJhY3REYXRhKG91dCwgc2l6ZSk7Ci0rCWlmICghX2dkSW1hZ2VCbXBDdHgoaW0sIG91dCwgY29tcHJlc3Npb24pKQotKwkJcnYgPSBnZERQRXh0cmFjdERhdGEob3V0LCBzaXplKTsKLSsJZWxzZQotKwkJcnYgPSBOVUxMOwotIAlvdXQtPmdkX2ZyZWUob3V0KTsKLSAJcmV0dXJuIHJ2OwotIH0KLUBAIC0xNDIsNiArMTQ2LDExIEBAIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VCbXAoZ2RJbWFnZVB0ciBpbSwgRklMRSAqb3V0RmlsZSwgaW50IGNvbXByZXNzaW9uKQotIAkJY29tcHJlc3Npb24gLSB3aGV0aGVyIHRvIGFwcGx5IFJMRSBvciBub3QuCi0gKi8KLSBCR0RfREVDTEFSRSh2b2lkKSBnZEltYWdlQm1wQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHhQdHIgb3V0LCBpbnQgY29tcHJlc3Npb24pCi0rewotKwlfZ2RJbWFnZUJtcEN0eChpbSwgb3V0LCBjb21wcmVzc2lvbik7Ci0rfQotKwotK3N0YXRpYyBpbnQgX2dkSW1hZ2VCbXBDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQsIGludCBjb21wcmVzc2lvbikKLSB7Ci0gCWludCBiaXRtYXBfc2l6ZSA9IDAsIGluZm9fc2l6ZSwgdG90YWxfc2l6ZSwgcGFkZGluZzsKLSAJaW50IGksIHJvdywgeHBvcywgcGl4ZWw7Ci1AQCAtMTQ5LDYgKzE1OCw3IEBAIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VCbXBDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQsIGludCBjb21wcmVzc2lvbikKLSAJdW5zaWduZWQgY2hhciAqdW5jb21wcmVzc2VkX3JvdyA9IE5VTEwsICp1bmNvbXByZXNzZWRfcm93X3N0YXJ0ID0gTlVMTDsKLSAJRklMRSAqdG1wZmlsZV9mb3JfY29tcHJlc3Npb24gPSBOVUxMOwotIAlnZElPQ3R4UHRyIG91dF9vcmlnaW5hbCA9IE5VTEw7Ci0rCWludCByZXQgPSAxOwotIAotIAkvKiBObyBjb21wcmVzc2lvbiBpZiBpdHMgdHJ1ZSBjb2xvdXIgb3Igd2UgZG9uJ3Qgc3VwcG9ydCBzZWVrICovCi0gCWlmIChpbS0+dHJ1ZUNvbG9yKSB7Ci1AQCAtMzI2LDYgKzMzNiw3IEBAIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VCbXBDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQsIGludCBjb21wcmVzc2lvbikKLSAJCW91dF9vcmlnaW5hbCA9IE5VTEw7Ci0gCX0KLSAKLSsJcmV0ID0gMDsKLSBjbGVhbnVwOgotIAlpZiAodG1wZmlsZV9mb3JfY29tcHJlc3Npb24pIHsKLSAjaWZkZWYgX1dJTjMyCi1AQCAtMzM5LDcgKzM1MCw3IEBAIGNsZWFudXA6Ci0gCWlmIChvdXRfb3JpZ2luYWwpIHsKLSAJCW91dF9vcmlnaW5hbC0+Z2RfZnJlZShvdXRfb3JpZ2luYWwpOwotIAl9Ci0tCXJldHVybjsKLSsJcmV0dXJuIHJldDsKLSB9Ci0gCi0gc3RhdGljIGludCBjb21wcmVzc19yb3codW5zaWduZWQgY2hhciAqcm93LCBpbnQgbGVuZ3RoKQotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvQ1ZFLTIwMTktNjk3OC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkL0NWRS0yMDE5LTY5NzgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliZWIyM2UuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2QvQ1ZFLTIwMTktNjk3OC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5OSArMCwwIEBACi1Gcm9tIDU1MzcwMjk4MGFlODljODNmMmQ2ZTI1NGQ2MmNmODJlMjA0OTU2ZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiQ2hyaXN0b3BoIE0uIEJlY2tlciIgPGNtYmVja2VyNjlAZ214LmRlPgotRGF0ZTogVGh1LCAxNyBKYW4gMjAxOSAxMTo1NDo1NSArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggIzQ5MjogUG90ZW50aWFsIGRvdWJsZS1mcmVlIGluIGdkSW1hZ2UqUHRyKCkKLQotV2hlbmV2ZXIgYGdkSW1hZ2UqUHRyKClgIGNhbGxzIGBnZEltYWdlKkN0eCgpYCBhbmQgdGhlIGxhdHRlciBmYWlscywgd2UKLW11c3Qgbm90IGNhbGwgYGdkRFBFeHRyYWN0RGF0YSgpYDsgb3RoZXJ3aXNlIGEgZG91YmxlLWZyZWUgd291bGQKLWhhcHBlbi4gIFNpbmNlIGBnZEltYWdlKkN0eCgpYCBhcmUgdm9pZCBmdW5jdGlvbnMsIGFuZCB3ZSBjYW4ndCBjaGFuZ2UKLXRoYXQgZm9yIEJDIHJlYXNvbnMsIHdlJ3JlIGludHJvZHVjaW5nIHN0YXRpYyBoZWxwZXJzIHdoaWNoIGFyZSB1c2VkCi1pbnRlcm5hbGx5LgotCi1XZSdyZSBhZGRpbmcgYSByZWdyZXNzaW9uIHRlc3QgZm9yIGBnZEltYWdlSnBlZ1B0cigpYCwgYnV0IG5vdCBmb3IKLWBnZEltYWdlR2lmUHRyKClgIGFuZCBgZ2RJbWFnZVdibXBQdHIoKWAgc2luY2Ugd2UgZG9uJ3Qga25vdyBob3cgdG8KLXRyaWdnZXIgZmFpbHVyZSBvZiB0aGUgcmVzcGVjdGl2ZSBgZ2RJbWFnZSpDdHgoKWAgY2FsbHMuCi0KLVRoaXMgcG90ZW50aWFsIHNlY3VyaXR5IGlzc3VlIGhhcyBiZWVuIHJlcG9ydGVkIGJ5IFNvbG1heiBTYWxpbWkgKGFrYS4KLVJvb25leSkuCi0tLS0KLSBzcmMvZ2RfZ2lmX291dC5jICAgICAgICAgICAgICAgICAgfCAxOCArKysrKysrKysrKysrKystLS0KLSBzcmMvZ2RfanBlZy5jICAgICAgICAgICAgICAgICAgICAgfCAyMCArKysrKysrKysrKysrKysrLS0tLQotIHNyYy9nZF93Ym1wLmMgICAgICAgICAgICAgICAgICAgICB8IDIxICsrKysrKysrKysrKysrKysrKy0tLQotIHRlc3RzL2pwZWcvLmdpdGlnbm9yZSAgICAgICAgICAgICB8ICAxICsKLSB0ZXN0cy9qcGVnL0NNYWtlTGlzdHMudHh0ICAgICAgICAgfCAgMSArCi0gdGVzdHMvanBlZy9NYWtlbW9kdWxlLmFtICAgICAgICAgIHwgIDMgKystCi0gdGVzdHMvanBlZy9qcGVnX3B0cl9kb3VibGVfZnJlZS5jIHwgMzEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDcgZmlsZXMgY2hhbmdlZCwgODQgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2pwZWcvanBlZ19wdHJfZG91YmxlX2ZyZWUuYwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGliZ2QvbGliZ2QvY29tbWl0LzU1MzcwMjk4MGFlODljODNmMmQ2ZTI1NGQ2MmNmODJlMjA0OTU2ZDBdCi1DVkU6IENWRS0yMDE5LTY5NzgKLQotU2lnbmVkLW9mZi1ieTogVHJldm9yIEdhbWJsaW4gPHRyZXZvci5nYW1ibGluQHdpbmRyaXZlci5jb20+Ci0KLQotZGlmZiAtLWdpdCBhL3NyYy9nZF9naWZfb3V0LmMgYi9zcmMvZ2RfZ2lmX291dC5jCi1pbmRleCAyOThhNTgxLi5kNWE5NTM0IDEwMDY0NAotLS0tIGEvc3JjL2dkX2dpZl9vdXQuYwotKysrIGIvc3JjL2dkX2dpZl9vdXQuYwotQEAgLTk5LDYgKzk5LDcgQEAgc3RhdGljIHZvaWQgY2hhcl9pbml0KEdpZkN0eCAqY3R4KTsKLSBzdGF0aWMgdm9pZCBjaGFyX291dChpbnQgYywgR2lmQ3R4ICpjdHgpOwotIHN0YXRpYyB2b2lkIGZsdXNoX2NoYXIoR2lmQ3R4ICpjdHgpOwotIAotK3N0YXRpYyBpbnQgX2dkSW1hZ2VHaWZDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQpOwotIAotIAotIAotQEAgLTEzMSw4ICsxMzIsMTEgQEAgQkdEX0RFQ0xBUkUodm9pZCAqKSBnZEltYWdlR2lmUHRyKGdkSW1hZ2VQdHIgaW0sIGludCAqc2l6ZSkKLSAJdm9pZCAqcnY7Ci0gCWdkSU9DdHggKm91dCA9IGdkTmV3RHluYW1pY0N0eCgyMDQ4LCBOVUxMKTsKLSAJaWYgKG91dCA9PSBOVUxMKSByZXR1cm4gTlVMTDsKLS0JZ2RJbWFnZUdpZkN0eChpbSwgb3V0KTsKLS0JcnYgPSBnZERQRXh0cmFjdERhdGEob3V0LCBzaXplKTsKLSsJaWYgKCFfZ2RJbWFnZUdpZkN0eChpbSwgb3V0KSkgewotKwkJcnYgPSBnZERQRXh0cmFjdERhdGEob3V0LCBzaXplKTsKLSsJfSBlbHNlIHsKLSsJCXJ2ID0gTlVMTDsKLSsJfQotIAlvdXQtPmdkX2ZyZWUob3V0KTsKLSAJcmV0dXJuIHJ2OwotIH0KLUBAIC0yMjAsNiArMjI0LDEyIEBAIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VHaWYoZ2RJbWFnZVB0ciBpbSwgRklMRSAqb3V0RmlsZSkKLSAKLSAqLwotIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VHaWZDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQpCi0rewotKwlfZ2RJbWFnZUdpZkN0eChpbSwgb3V0KTsKLSt9Ci0rCi0rLyogcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIDEgb24gZmFpbHVyZSAqLwotK3N0YXRpYyBpbnQgX2dkSW1hZ2VHaWZDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQpCi0gewotIAlnZEltYWdlUHRyIHBpbSA9IDAsIHRpbSA9IGltOwotIAlpbnQgaW50ZXJsYWNlLCBCaXRzUGVyUGl4ZWw7Ci1AQCAtMjMxLDcgKzI0MSw3IEBAIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VHaWZDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQpCi0gCQliYXNlZCB0ZW1wb3JhcnkgaW1hZ2UuICovCi0gCQlwaW0gPSBnZEltYWdlQ3JlYXRlUGFsZXR0ZUZyb21UcnVlQ29sb3IoaW0sIDEsIDI1Nik7Ci0gCQlpZighcGltKSB7Ci0tCQkJcmV0dXJuOwotKwkJCXJldHVybiAxOwotIAkJfQotIAkJdGltID0gcGltOwotIAl9Ci1AQCAtMjQ3LDYgKzI1Nyw4IEBAIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VHaWZDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eFB0ciBvdXQpCi0gCQkvKiBEZXN0cm95IHBhbGV0dGUgYmFzZWQgdGVtcG9yYXJ5IGltYWdlLiAqLwotIAkJZ2RJbWFnZURlc3Ryb3koCXBpbSk7Ci0gCX0KLSsKLSsJcmV0dXJuIDA7Ci0gfQotIAotIAotZGlmZiAtLWdpdCBhL3NyYy9nZF9qcGVnLmMgYi9zcmMvZ2RfanBlZy5jCi1pbmRleCBmYzA1ODQyLi45NmVmNDMwIDEwMDY0NAotLS0tIGEvc3JjL2dkX2pwZWcuYwotKysrIGIvc3JjL2dkX2pwZWcuYwotQEAgLTExNyw2ICsxMTcsOCBAQCBzdGF0aWMgdm9pZCBmYXRhbF9qcGVnX2Vycm9yKGpfY29tbW9uX3B0ciBjaW5mbykKLSAJZXhpdCg5OSk7Ci0gfQotIAotK3N0YXRpYyBpbnQgX2dkSW1hZ2VKcGVnQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHggKm91dGZpbGUsIGludCBxdWFsaXR5KTsKLSsKLSAvKgotICAqIFdyaXRlIElNIHRvIE9VVEZJTEUgYXMgYSBKRklGLWZvcm1hdHRlZCBKUEVHIGltYWdlLCB1c2luZyBxdWFsaXR5Ci0gICogUVVBTElUWS4gIElmIFFVQUxJVFkgaXMgaW4gdGhlIHJhbmdlIDAtMTAwLCBpbmNyZWFzaW5nIHZhbHVlcwotQEAgLTIzMSw4ICsyMzMsMTEgQEAgQkdEX0RFQ0xBUkUodm9pZCAqKSBnZEltYWdlSnBlZ1B0cihnZEltYWdlUHRyIGltLCBpbnQgKnNpemUsIGludCBxdWFsaXR5KQotIAl2b2lkICpydjsKLSAJZ2RJT0N0eCAqb3V0ID0gZ2ROZXdEeW5hbWljQ3R4KDIwNDgsIE5VTEwpOwotIAlpZiAob3V0ID09IE5VTEwpIHJldHVybiBOVUxMOwotLQlnZEltYWdlSnBlZ0N0eChpbSwgb3V0LCBxdWFsaXR5KTsKLS0JcnYgPSBnZERQRXh0cmFjdERhdGEob3V0LCBzaXplKTsKLSsJaWYgKCFfZ2RJbWFnZUpwZWdDdHgoaW0sIG91dCwgcXVhbGl0eSkpIHsKLSsJCXJ2ID0gZ2REUEV4dHJhY3REYXRhKG91dCwgc2l6ZSk7Ci0rCX0gZWxzZSB7Ci0rCQlydiA9IE5VTEw7Ci0rCX0KLSAJb3V0LT5nZF9mcmVlKG91dCk7Ci0gCXJldHVybiBydjsKLSB9Ci1AQCAtMjUzLDYgKzI1OCwxMiBAQCB2b2lkIGpwZWdfZ2RJT0N0eF9kZXN0KGpfY29tcHJlc3NfcHRyIGNpbmZvLCBnZElPQ3R4ICpvdXRmaWxlKTsKLSAKLSAqLwotIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VKcGVnQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHggKm91dGZpbGUsIGludCBxdWFsaXR5KQotK3sKLSsJX2dkSW1hZ2VKcGVnQ3R4KGltLCBvdXRmaWxlLCBxdWFsaXR5KTsKLSt9Ci0rCi0rLyogcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIDEgb24gZmFpbHVyZSAqLwotK3N0YXRpYyBpbnQgX2dkSW1hZ2VKcGVnQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHggKm91dGZpbGUsIGludCBxdWFsaXR5KQotIHsKLSAJc3RydWN0IGpwZWdfY29tcHJlc3Nfc3RydWN0IGNpbmZvOwotIAlzdHJ1Y3QganBlZ19lcnJvcl9tZ3IgamVycjsKLUBAIC0yODcsNyArMjk4LDcgQEAgQkdEX0RFQ0xBUkUodm9pZCkgZ2RJbWFnZUpwZWdDdHgoZ2RJbWFnZVB0ciBpbSwgZ2RJT0N0eCAqb3V0ZmlsZSwgaW50IHF1YWxpdHkpCi0gCQlpZihyb3cpIHsKLSAJCQlnZEZyZWUocm93KTsKLSAJCX0KLS0JCXJldHVybjsKLSsJCXJldHVybiAxOwotIAl9Ci0gCi0gCWNpbmZvLmVyci0+ZW1pdF9tZXNzYWdlID0ganBlZ19lbWl0X21lc3NhZ2U7Ci1AQCAtMzI4LDcgKzMzOSw3IEBAIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VKcGVnQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHggKm91dGZpbGUsIGludCBxdWFsaXR5KQotIAlpZihyb3cgPT0gMCkgewotIAkJZ2RfZXJyb3IoImdkLWpwZWc6IGVycm9yOiB1bmFibGUgdG8gYWxsb2NhdGUgSlBFRyByb3cgc3RydWN0dXJlOiBnZENhbGxvYyByZXR1cm5zIE5VTExcbiIpOwotIAkJanBlZ19kZXN0cm95X2NvbXByZXNzKCZjaW5mbyk7Ci0tCQlyZXR1cm47Ci0rCQlyZXR1cm4gMTsKLSAJfQotIAotIAlyb3dwdHJbMF0gPSByb3c7Ci1AQCAtNDA1LDYgKzQxNiw3IEBAIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VKcGVnQ3R4KGdkSW1hZ2VQdHIgaW0sIGdkSU9DdHggKm91dGZpbGUsIGludCBxdWFsaXR5KQotIAlqcGVnX2ZpbmlzaF9jb21wcmVzcygmY2luZm8pOwotIAlqcGVnX2Rlc3Ryb3lfY29tcHJlc3MoJmNpbmZvKTsKLSAJZ2RGcmVlKHJvdyk7Ci0rCXJldHVybiAwOwotIH0KLSAKLSAKLWRpZmYgLS1naXQgYS9zcmMvZ2Rfd2JtcC5jIGIvc3JjL2dkX3dibXAuYwotaW5kZXggZjE5YTFjOS4uYTQ5YmRiZSAxMDA2NDQKLS0tLSBhL3NyYy9nZF93Ym1wLmMKLSsrKyBiL3NyYy9nZF93Ym1wLmMKLUBAIC04OCw2ICs4OCw4IEBAIGludCBnZF9nZXRpbih2b2lkICppbikKLSAJcmV0dXJuIChnZEdldEMoKGdkSU9DdHggKilpbikpOwotIH0KLSAKLStzdGF0aWMgaW50IF9nZEltYWdlV0JNUEN0eChnZEltYWdlUHRyIGltYWdlLCBpbnQgZmcsIGdkSU9DdHggKm91dCk7Ci0rCi0gLyoKLSAJRnVuY3Rpb246IGdkSW1hZ2VXQk1QQ3R4Ci0gCi1AQCAtMTAwLDYgKzEwMiwxMiBAQCBpbnQgZ2RfZ2V0aW4odm9pZCAqaW4pCi0gCQlvdXQgICAtIHRoZSBzdHJlYW0gd2hlcmUgdG8gd3JpdGUKLSAqLwotIEJHRF9ERUNMQVJFKHZvaWQpIGdkSW1hZ2VXQk1QQ3R4KGdkSW1hZ2VQdHIgaW1hZ2UsIGludCBmZywgZ2RJT0N0eCAqb3V0KQotK3sKLSsJX2dkSW1hZ2VXQk1QQ3R4KGltYWdlLCBmZywgb3V0KTsKLSt9Ci0rCi0rLyogcmV0dXJucyAwIG9uIHN1Y2Nlc3MsIDEgb24gZmFpbHVyZSAqLwotK3N0YXRpYyBpbnQgX2dkSW1hZ2VXQk1QQ3R4KGdkSW1hZ2VQdHIgaW1hZ2UsIGludCBmZywgZ2RJT0N0eCAqb3V0KQotIHsKLSAJaW50IHgsIHksIHBvczsKLSAJV2JtcCAqd2JtcDsKLUBAIC0xMDcsNyArMTE1LDcgQEAgQkdEX0RFQ0xBUkUodm9pZCkgZ2RJbWFnZVdCTVBDdHgoZ2RJbWFnZVB0ciBpbWFnZSwgaW50IGZnLCBnZElPQ3R4ICpvdXQpCi0gCS8qIGNyZWF0ZSB0aGUgV0JNUCAqLwotIAlpZigod2JtcCA9IGNyZWF0ZXdibXAoZ2RJbWFnZVNYKGltYWdlKSwgZ2RJbWFnZVNZKGltYWdlKSwgV0JNUF9XSElURSkpID09IE5VTEwpIHsKLSAJCWdkX2Vycm9yKCJDb3VsZCBub3QgY3JlYXRlIFdCTVBcbiIpOwotLQkJcmV0dXJuOwotKwkJcmV0dXJuIDE7Ci0gCX0KLSAKLSAJLyogZmlsbCB1cCB0aGUgV0JNUCBzdHJ1Y3R1cmUgKi8KLUBAIC0xMjMsMTEgKzEzMSwxNSBAQCBCR0RfREVDTEFSRSh2b2lkKSBnZEltYWdlV0JNUEN0eChnZEltYWdlUHRyIGltYWdlLCBpbnQgZmcsIGdkSU9DdHggKm91dCkKLSAKLSAJLyogd3JpdGUgdGhlIFdCTVAgdG8gYSBnZCBmaWxlIGRlc2NyaXB0b3IgKi8KLSAJaWYod3JpdGV3Ym1wKHdibXAsICZnZF9wdXRvdXQsIG91dCkpIHsKLSsJCWZyZWV3Ym1wKHdibXApOwotIAkJZ2RfZXJyb3IoIkNvdWxkIG5vdCBzYXZlIFdCTVBcbiIpOwotKwkJcmV0dXJuIDE7Ci0gCX0KLSAKLSAJLyogZGVzIHN1Ym1pdHRlZCB0aGlzIGJ1Z2ZpeDogZ2RGcmVlIHRoZSBtZW1vcnkuICovCi0gCWZyZWV3Ym1wKHdibXApOwotKwotKwlyZXR1cm4gMDsKLSB9Ci0gCi0gLyoKLUBAIC0yNzEsOCArMjgzLDExIEBAIEJHRF9ERUNMQVJFKHZvaWQgKikgZ2RJbWFnZVdCTVBQdHIoZ2RJbWFnZVB0ciBpbSwgaW50ICpzaXplLCBpbnQgZmcpCi0gCXZvaWQgKnJ2OwotIAlnZElPQ3R4ICpvdXQgPSBnZE5ld0R5bmFtaWNDdHgoMjA0OCwgTlVMTCk7Ci0gCWlmIChvdXQgPT0gTlVMTCkgcmV0dXJuIE5VTEw7Ci0tCWdkSW1hZ2VXQk1QQ3R4KGltLCBmZywgb3V0KTsKLS0JcnYgPSBnZERQRXh0cmFjdERhdGEob3V0LCBzaXplKTsKLSsJaWYgKCFfZ2RJbWFnZVdCTVBDdHgoaW0sIGZnLCBvdXQpKSB7Ci0rCQlydiA9IGdkRFBFeHRyYWN0RGF0YShvdXQsIHNpemUpOwotKwl9IGVsc2UgewotKwkJcnYgPSBOVUxMOwotKwl9Ci0gCW91dC0+Z2RfZnJlZShvdXQpOwotIAlyZXR1cm4gcnY7Ci0gfQotZGlmZiAtLWdpdCBhL3Rlc3RzL2pwZWcvLmdpdGlnbm9yZSBiL3Rlc3RzL2pwZWcvLmdpdGlnbm9yZQotaW5kZXggYzI4YWE4Ny4uMTNiY2YwNCAxMDA2NDQKLS0tLSBhL3Rlc3RzL2pwZWcvLmdpdGlnbm9yZQotKysrIGIvdGVzdHMvanBlZy8uZ2l0aWdub3JlCi1AQCAtMyw1ICszLDYgQEAKLSAvanBlZ19lbXB0eV9maWxlCi0gL2pwZWdfaW0yaW0KLSAvanBlZ19udWxsCi0rL2pwZWdfcHRyX2RvdWJsZV9mcmVlCi0gL2pwZWdfcmVhZAotIC9qcGVnX3Jlc29sdXRpb24KLWRpZmYgLS1naXQgYS90ZXN0cy9qcGVnL0NNYWtlTGlzdHMudHh0IGIvdGVzdHMvanBlZy9DTWFrZUxpc3RzLnR4dAotaW5kZXggMTk5NjRiMC4uYThkODE2MiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2pwZWcvQ01ha2VMaXN0cy50eHQKLSsrKyBiL3Rlc3RzL2pwZWcvQ01ha2VMaXN0cy50eHQKLUBAIC0yLDYgKzIsNyBAQCBJRihKUEVHX0ZPVU5EKQotIExJU1QoQVBQRU5EIFRFU1RTX0ZJTEVTCi0gCWpwZWdfZW1wdHlfZmlsZQotIAlqcGVnX2ltMmltCi0rCWpwZWdfcHRyX2RvdWJsZV9mcmVlCi0gCWpwZWdfbnVsbAotICkKLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9qcGVnL01ha2Vtb2R1bGUuYW0gYi90ZXN0cy9qcGVnL01ha2Vtb2R1bGUuYW0KLWluZGV4IDdlNWQzMTcuLmI4OWUxNjkgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9qcGVnL01ha2Vtb2R1bGUuYW0KLSsrKyBiL3Rlc3RzL2pwZWcvTWFrZW1vZHVsZS5hbQotQEAgLTIsNyArMiw4IEBAIGlmIEhBVkVfTElCSlBFRwotIGxpYmdkX3Rlc3RfcHJvZ3JhbXMgKz0gXAotIAlqcGVnL2pwZWdfZW1wdHlfZmlsZSBcCi0gCWpwZWcvanBlZ19pbTJpbSBcCi0tCWpwZWcvanBlZ19udWxsCi0rCWpwZWcvanBlZ19udWxsIFwKLSsJanBlZy9qcGVnX3B0cl9kb3VibGVfZnJlZQotIAotIGlmIEhBVkVfTElCUE5HCi0gbGliZ2RfdGVzdF9wcm9ncmFtcyArPSBcCi1kaWZmIC0tZ2l0IGEvdGVzdHMvanBlZy9qcGVnX3B0cl9kb3VibGVfZnJlZS5jIGIvdGVzdHMvanBlZy9qcGVnX3B0cl9kb3VibGVfZnJlZS5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMC4uZGY1YTUxMAotLS0tIC9kZXYvbnVsbAotKysrIGIvdGVzdHMvanBlZy9qcGVnX3B0cl9kb3VibGVfZnJlZS5jCi1AQCAtMCwwICsxLDMxIEBACi0rLyoqCi0rICogVGVzdCB0aGF0IGZhaWx1cmUgdG8gY29udmVydCB0byBKUEVHIHJldHVybnMgTlVMTAotKyAqCi0rICogV2UgYXJlIGNyZWF0aW5nIGFuIGltYWdlLCBzZXQgaXRzIHdpZHRoIHRvIHplcm8sIGFuZCBwYXNzIHRoaXMgaW1hZ2UgdG8KLSsgKiBgZ2RJbWFnZUpwZWdQdHIoKWAgd2hpY2ggaXMgc3VwcG9zZWQgdG8gZmFpbCwgYW5kIGFzIHN1Y2ggc2hvdWxkIHJldHVybiBOVUxMLgotKyAqCi0rICogU2VlIGFsc28gPGh0dHBzOi8vZ2l0aHViLmNvbS9saWJnZC9saWJnZC9pc3N1ZXMvMzgxPgotKyAqLwotKwotKwotKyNpbmNsdWRlICJnZC5oIgotKyNpbmNsdWRlICJnZHRlc3QuaCIKLSsKLSsKLStpbnQgbWFpbigpCi0rewotKyAgICBnZEltYWdlUHRyIHNyYywgZHN0OwotKyAgICBpbnQgc2l6ZTsKLSsKLSsgICAgc3JjID0gZ2RJbWFnZUNyZWF0ZVRydWVDb2xvcigxLCAxMCk7Ci0rICAgIGdkVGVzdEFzc2VydChzcmMgIT0gTlVMTCk7Ci0rCi0rICAgIHNyYy0+c3ggPSAwOyAvKiB0aGlzIGhhY2sgZm9yY2VzIGdkSW1hZ2VKcGVnUHRyKCkgdG8gZmFpbCAqLwotKwotKyAgICBkc3QgPSBnZEltYWdlSnBlZ1B0cihzcmMsICZzaXplLCAwKTsKLSsgICAgZ2RUZXN0QXNzZXJ0KGRzdCA9PSBOVUxMKTsKLSsKLSsgICAgZ2RJbWFnZURlc3Ryb3koc3JjKTsKLSsKLSsgICAgcmV0dXJuIGdkTnVtRmFpbHVyZXMoKTsKLSt9Ci0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZF8yLjIuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkXzIuMi41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWY5YmIyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dkL2dkXzIuMi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotU1VNTUFSWSA9ICJnZCBpcyBhIGxpYnJhcnkgdXNlZCB0byBjcmVhdGUgUE5HLCBKUEVHLCBvciBXQk1QIGltYWdlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBnZCBncmFwaGljcyBsaWJyYXJ5IGFsbG93cyB5b3VyIGNvZGUgdG8gcXVpY2tseSBkcmF3IGltYWdlcyBcCi1jb21wbGV0ZSB3aXRoIGxpbmVzLCBhcmNzLCB0ZXh0LCBtdWx0aXBsZSBjb2xvcnMsIGN1dCBhbmQgcGFzdGUgZnJvbSBvdGhlciBcCi1pbWFnZXMsIGFuZCBmbG9vZCBmaWxscywgYW5kIHRvIHdyaXRlIG91dCB0aGUgcmVzdWx0IGFzIGEgUE5HIG9yIEpQRUcgZmlsZS4gXAotVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGluIFdlYiBhcHBsaWNhdGlvbnMsIHdoZXJlIFBORyBhbmQgSlBFRyBhcmUgdHdvIFwKLW9mIHRoZSBmb3JtYXRzIGFjY2VwdGVkIGZvciBpbmxpbmUgaW1hZ2VzIGJ5IG1vc3QgYnJvd3NlcnMuIE5vdGUgdGhhdCBnZCBpcyBub3QgXAotYSBwYWludCBwcm9ncmFtLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9saWJnZC5iaXRidWNrZXQub3JnLyIKLQotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJHRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA3Mzg0YjNhYTJlMGQzOWFmY2EwZDZjNDAyODZmNTQ1IgotCi1ERVBFTkRTID0gImZyZWV0eXBlIGxpYnBuZyBqcGVnIHpsaWIgdGlmZiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpYmdkL2xpYmdkLmdpdDticmFuY2g9R0QtMi4yIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYW5ub3RhdGUuYy1nZGZ0LmMtUmVwbGFjZS1zdHJuY3B5LXdpdGgtbWVtY2NweS10by1maS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOC0xMDAwMjIyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTY5NzgucGF0Y2ggXAotICAgICAgICAgICIKLQotU1JDUkVWID0gIjgyNTUyMzFiNjg4ODk1OTdkMDRkNDUxYTcyNDM4YWI5MmE0MDVhYmEiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtcnBhdGggXAotICAgICAgICAgICAgICAgICAgLS13aXRoLWpwZWc9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAotICAgICAgICAgICAgICAgICAgLS13aXRoLWZyZWV0eXBlPXllcyBcCi0gICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZm9udGNvbmZpZyBcCi0gICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtd2VicCBcCi0gICAgICAgICAgICAgICAgICAtLXdpdGhvdXQteHBtIFwKLSAgICAgICAgICAgICAgICAgIC0td2l0aG91dC14IFwKLSAgICAgICAgICAgICAgICAiCi0KLUVYVFJBX09FTUFLRSA9ICdMREZMQUdTPSIke0xERkxBR1N9IicKLQotREVCVUdfT1BUSU1JWkFUSU9OX2FwcGVuZCA9ICIgLVduby1lcnJvcj1tYXliZS11bmluaXRpYWxpemVkIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIGNsZWFudXAgYnVpbGRwYXRocyBmcm9tIGdkbGliLnBjCi0gICAgc2VkIC1pIC1lICdzIyR7U1RBR0lOR19ESVJfSE9TVH0jI2cnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2dkbGliLnBjCi19Ci0KLVBBQ0tBR0VTICs9ICIke1BOfS10b29scyIKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30iCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKLQotUFJPVklERVMgKz0gIiR7UE59LXRvb2xzIgotUlBST1ZJREVTXyR7UE59LXRvb2xzID0gIiR7UE59LXRvb2xzIgotUkRFUEVORFNfJHtQTn0tdG9vbHMgPSAicGVybCBwZXJsLW1vZHVsZS1zdHJpY3QiCi0KLUNWRV9QUk9EVUNUID0gImxpYmdkIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2RfMi4zLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZC9nZF8yLjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWM4YTA1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2QvZ2RfMi4zLjAuYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJnZCBpcyBhIGxpYnJhcnkgdXNlZCB0byBjcmVhdGUgUE5HLCBKUEVHLCBvciBXQk1QIGltYWdlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBnZCBncmFwaGljcyBsaWJyYXJ5IGFsbG93cyB5b3VyIGNvZGUgdG8gcXVpY2tseSBkcmF3IGltYWdlcyBcCitjb21wbGV0ZSB3aXRoIGxpbmVzLCBhcmNzLCB0ZXh0LCBtdWx0aXBsZSBjb2xvcnMsIGN1dCBhbmQgcGFzdGUgZnJvbSBvdGhlciBcCitpbWFnZXMsIGFuZCBmbG9vZCBmaWxscywgYW5kIHRvIHdyaXRlIG91dCB0aGUgcmVzdWx0IGFzIGEgUE5HIG9yIEpQRUcgZmlsZS4gXAorVGhpcyBpcyBwYXJ0aWN1bGFybHkgdXNlZnVsIGluIFdlYiBhcHBsaWNhdGlvbnMsIHdoZXJlIFBORyBhbmQgSlBFRyBhcmUgdHdvIFwKK29mIHRoZSBmb3JtYXRzIGFjY2VwdGVkIGZvciBpbmxpbmUgaW1hZ2VzIGJ5IG1vc3QgYnJvd3NlcnMuIE5vdGUgdGhhdCBnZCBpcyBub3QgXAorYSBwYWludCBwcm9ncmFtLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJnZC5naXRodWIuaW8vIgorCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkdEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OGU1YmM4NjI3Yjk0OTQ3NDFjOTA1ZDY1MjM4YzY2YjciCisKK0RFUEVORFMgPSAiZnJlZXR5cGUgbGlicG5nIGpwZWcgemxpYiB0aWZmIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGliZ2QvbGliZ2QuZ2l0O2JyYW5jaD1tYXN0ZXIgXAorICAgICAgICAgICIKKworU1JDUkVWID0gImIwNzlmYTA2MjIzYzNhYjg2MmM4ZjBlZWE1OGE5Njg3Mjc5NzE5ODgiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZyBnZXR0ZXh0IHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtcnBhdGggXAorICAgICAgICAgICAgICAgICAgLS13aXRoLWpwZWc9JHtTVEFHSU5HX0xJQkRJUn0vLi4gXAorICAgICAgICAgICAgICAgICAgLS13aXRoLWZyZWV0eXBlPXllcyBcCisgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZm9udGNvbmZpZyBcCisgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtd2VicCBcCisgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQteHBtIFwKKyAgICAgICAgICAgICAgICAgIC0td2l0aG91dC14IFwKKyAgICAgICAgICAgICAgICAiCisKK0VYVFJBX09FTUFLRSA9ICdMREZMQUdTPSIke0xERkxBR1N9IicKKworREVCVUdfT1BUSU1JWkFUSU9OX2FwcGVuZCA9ICIgLVduby1lcnJvcj1tYXliZS11bmluaXRpYWxpemVkIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIGNsZWFudXAgYnVpbGRwYXRocyBmcm9tIGdkbGliLnBjCisgICAgc2VkIC1pIC1lICdzIyR7U1RBR0lOR19ESVJfSE9TVH0jI2cnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2dkbGliLnBjCit9CisKK1BBQ0tBR0VTICs9ICIke1BOfS10b29scyIKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30iCitGSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKKworUFJPVklERVMgKz0gIiR7UE59LXRvb2xzIgorUlBST1ZJREVTXyR7UE59LXRvb2xzID0gIiR7UE59LXRvb2xzIgorUkRFUEVORFNfJHtQTn0tdG9vbHMgPSAicGVybCBwZXJsLW1vZHVsZS1zdHJpY3QiCisKK0NWRV9QUk9EVUNUID0gImxpYmdkIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2VuZ2V0b3B0L2dlbmdldG9wdF8yLjIzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2VuZ2V0b3B0L2dlbmdldG9wdF8yLjIzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExOGUzYzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nZW5nZXRvcHQvZ2VuZ2V0b3B0XzIuMjMuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJza2VsZXRvbiBtYWluLmMgZ2VuZXJhdG9yIgorREVTQ1JJUFRJT04gPSAiR2VuZ2V0b3B0IGlzIGEgdG9vbCB0byB3cml0ZSBjb21tYW5kIGxpbmUgb3B0aW9uIHBhcnNpbmcgY29kZSBmb3IgQyBwcm9ncmFtcy4iCitTRUNUSU9OID0gInV0aWxzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nZW5nZXRvcHQvZ2VuZ2V0b3B0Lmh0bWwiCisKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmY5NWJmZTAxOWZlYWY5MmY1MjRiNzNkZDc5ZTc2ZWIiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nZW5nZXRvcHQvJHtCUE59LSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gImVhMTY1ZDYxODY0MGRiZGVjYjQyYWU0NDkxMzM3OTY1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5NDFhZWM5MDExODY0OTc4ZGQ3ZmRlYjA1MmIxOTQzNTM1ODI0MTY5ZDJhYTJiMGU3ZWFlOWFiODA3NTg0YWMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2xvZy9nbG9nXzAuMy41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ2xvZy9nbG9nXzAuMy41LmJiCmluZGV4IDcwZWVmNzIuLjlhODMzMjggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dsb2cvZ2xvZ18wLjMuNS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nbG9nL2dsb2dfMC4zLjUuYmIKQEAgLTYsOCArNiw2IEBACiBMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRjOWRiMzYwZTBiYmQ0ZTQ2NjcyZjNmZDkxZGQ2YzRiIgogCi1ERVBFTkRTID0gImxpYnVud2luZCIKLQogU1JDX1VSSSA9ICIgXAogICAgIGdpdDovL2dpdGh1Yi5jb20vZ29vZ2xlL2dsb2cuZ2l0O25vYnJhbmNoPTEgXAogICAgIGZpbGU6Ly8wMDAxLVJld29yay1DTWFrZS1nbG9nLVZFUlNJT04tbWFuYWdlbWVudC5wYXRjaCBcCkBAIC0yMSw2ICsxOSw5IEBACiAKIGluaGVyaXQgY21ha2UKIAotUkRFUEVORFNfJHtQTn0gKz0gImxpYnVud2luZCIKK1BBQ0tBR0VDT05GSUcgPz0gInNoYXJlZCB1bndpbmQiCitQQUNLQUdFQ09ORklHX3JlbW92ZV9yaXNjdjY0ID0gInVud2luZCIKK1BBQ0tBR0VDT05GSUdfcmVtb3ZlX3Jpc2N2MzIgPSAidW53aW5kIgogCi1FWFRSQV9PRUNNQUtFICs9ICItREJVSUxEX1NIQVJFRF9MSUJTPU9OIgorUEFDS0FHRUNPTkZJR1t1bndpbmRdID0gIi1EV0lUSF9VTldJTkQ9T04sLURXSVRIX1VOV0lORD1PRkYsbGlidW53aW5kLGxpYnVud2luZCIKK1BBQ0tBR0VDT05GSUdbc2hhcmVkXSA9ICItREJVSUxEX1NIQVJFRF9MSUJTPU9OLC1EQlVJTERfU0hBUkVEX0xJQlM9T0ZGLCwiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHMvMDAwMS1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2gKaW5kZXggNDlkNWMyMS4uY2I0ZWFkMyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BlcmZ0b29scy9ncGVyZnRvb2xzLzAwMDEtZml4LWJ1aWxkLXdpdGgtbXVzbC1saWJjLnBhdGNoCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29scy8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaApAQCAtNiwyNiArNiwxMiBAQAogUGF0Y2ggZnJvbSBodHRwczovL2dpdGh1Yi5jb20vZ3BlcmZ0b29scy9ncGVyZnRvb2xzL3B1bGwvNzY1LwogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCiAtLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgIHwgMSArCi0gc3JjL21hbGxvY19ob29rX21tYXBfbGludXguaCB8IDggKysrKysrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKyBzcmMvbWFsbG9jX2hvb2tfbW1hcF9saW51eC5oIHwgNiArKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDQ5NzEwM2UuLmY5ZWZjM2UgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTE4OCw2ICsxODgsNyBAQCBBQ19IRUFERVJfU1REQwotIEFDX0NIRUNLX1RZUEVTKFtfX2ludDY0XSkgICAgICAgIyBkZWZpbmVkIGluIHNvbWUgd2luZG93cyBwbGF0Zm9ybXMKLSBBQ19DSEVDS19UWVBFUyhbc3RydWN0IG1hbGxpbmZvXSwsLCBbI2luY2x1ZGUgPG1hbGxvYy5oPl0pCi0gQUNfQ0hFQ0tfVFlQRVMoW0VsZjMyX1ZlcnN5bV0sLCwgWyNpbmNsdWRlIDxlbGYuaD5dKSAgICMgZm9yIHZkc29fc3VwcG9ydC5oCi0rQUNfQ0hFQ0tfRlVOQ1MoX19zYnJrKSAgICAgICAgICAjIGZvciBpbnRlcmNlcHRpbmcgZ2xpYmMgbWVtb3J5IGFsbG9jYXRvcgotIEFDX0NIRUNLX0ZVTkNTKHNicmspICAgICAgICAgICAgIyBmb3IgdGNtYWxsb2MgdG8gZ2V0IG1lbW9yeQotIEFDX0NIRUNLX0ZVTkNTKGdldGV1aWQpICAgICAgICAgIyBmb3IgdHVybmluZyBvZmYgc2VydmljZXMgd2hlbiBydW4gYXMgcm9vdAotIEFDX0NIRUNLX0ZVTkNTKGZvcmspICAgICAgICAgICAgIyBmb3IgdGhlIHB0aHJlYWRfYXRmb3JrIHNldHVwCiBkaWZmIC0tZ2l0IGEvc3JjL21hbGxvY19ob29rX21tYXBfbGludXguaCBiL3NyYy9tYWxsb2NfaG9va19tbWFwX2xpbnV4LmgKLWluZGV4IDJmNjExNmYuLjA2MDU4NTUgMTAwNzU1CitpbmRleCBlMmVmYjA1Li42NmIzMTEwIDEwMDY0NAogLS0tIGEvc3JjL21hbGxvY19ob29rX21tYXBfbGludXguaAogKysrIGIvc3JjL21hbGxvY19ob29rX21tYXBfbGludXguaAogQEAgLTQ2LDYgKzQ2LDEwIEBACkBAIC0zOSw3ICsyNSw3IEBACiAgLy8gVGhlIHg4Ni0zMiBjYXNlIGFuZCB0aGUgeDg2LTY0IGNhc2UgZGlmZmVyOgogIC8vIDMyYiBoYXMgYSBtbWFwMigpIHN5c2NhbGwsIDY0YiBkb2VzIG5vdC4KICAvLyA2NGIgYW5kIDMyYiBoYXZlIGRpZmZlcmVudCBjYWxsaW5nIGNvbnZlbnRpb25zIGZvciBtbWFwKCkuCi1AQCAtMTY4LDcgKzE3Miw3IEBAIGV4dGVybiAiQyIgdm9pZCogbW1hcDY0KHZvaWQgKnN0YXJ0LCBzaXplX3QgbGVuZ3RoLCBpbnQgcHJvdCwgaW50IGZsYWdzLAorQEAgLTE3NSw3ICsxNzksNyBAQCBleHRlcm4gIkMiIHZvaWQqIG1tYXA2NCh2b2lkICpzdGFydCwgc2l6ZV90IGxlbmd0aCwgaW50IHByb3QsIGludCBmbGFncywKICAgIHJldHVybiByZXN1bHQ7CiAgfQogIApAQCAtNDgsMTIgKzM0LDYgQEAKICAKICBleHRlcm4gIkMiIHZvaWQqIG1tYXAodm9pZCAqc3RhcnQsIHNpemVfdCBsZW5ndGgsIGludCBwcm90LCBpbnQgZmxhZ3MsCiAgICAgICAgICAgICAgICAgICAgICAgIGludCBmZCwgb2ZmX3Qgb2Zmc2V0KSBfX1RIUk9XIHsKLUBAIC0yMDYsNyArMjEwLDcgQEAgZXh0ZXJuICJDIiB2b2lkKiBtcmVtYXAodm9pZCogb2xkX2FkZHIsIHNpemVfdCBvbGRfc2l6ZSwgc2l6ZV90IG5ld19zaXplLAotICAgcmV0dXJuIHJlc3VsdDsKLSB9Ci0gCi0tI2lmbmRlZiBfX1VDTElCQ19fCi0rI2lmIEhBVkVfX19TQlJLCi0gLy8gbGliYydzIHZlcnNpb246Ci0gZXh0ZXJuICJDIiB2b2lkKiBfX3NicmsoaW50cHRyX3QgaW5jcmVtZW50KTsKLSAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29sc18yLjcuOTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHNfMi43LjkwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI3Yjc4MzkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHNfMi43LjkwLmJiCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAiRmFzdCwgbXVsdGktdGhyZWFkZWQgbWFsbG9jKCkgYW5kIG5pZnR5IHBlcmZvcm1hbmNlIGFuYWx5c2lzIHRvb2xzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dwZXJmdG9vbHMvZ3BlcmZ0b29scyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzYyNzMyNzQyYzczZGM2YzdmYmU4NjMyZjA2YzA1OWEiCisKK1NSQ1JFViA9ICJkYjdhYTU0N2FiYjVhYmRkNTU4NTg3YTE1NTAyNTg0Y2JjODI1NDM4IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dwZXJmdG9vbHMvZ3BlcmZ0b29scyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVN1cHBvcnQtQXRvbWljLW9wcy1vbi1jbGFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc2JhbGUtaGVhcC1jaGVja2Vycy1hbmQtZGVidWctYWxsb2NhdG9yLW9uLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV9saWJ1bndpbmRfYWFyY2g2NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zZ2lkZWYucGF0Y2ggXAorICAgICAgICAgICAiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKKyMgT24gbWlwcywgd2UgaGF2ZSB0aGUgZm9sbG93aW5nIGVycm9yLgorIyAgIGRvX3BhZ2VfZmF1bHQoKTogc2VuZGluZyBTSUdTRUdWIHRvIGxzIGZvciBpbnZhbGlkIHJlYWQgYWNjZXNzIGZyb20gMDAwMDAwMDgKKyMgICBTZWdtZW50YXRpb24gZmF1bHQgKGNvcmUgZHVtcGVkKQorQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNoID0gIm51bGwiCitDT01QQVRJQkxFX0hPU1RfcmlzY3Y2NCA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX3Jpc2N2MzIgPSAibnVsbCIKKworIyBEaXNhYmxlIHRodW1iMQorIyB7c3RhbmRhcmQgaW5wdXR9OiBBc3NlbWJsZXIgbWVzc2FnZXM6CisjIHtzdGFuZGFyZCBpbnB1dH06NDM0OiBFcnJvcjogbG8gcmVnaXN0ZXIgcmVxdWlyZWQgLS0gYGxkciBwYyxbc3BdJworIyBNYWtlZmlsZTo0NTM4OiByZWNpcGUgZm9yIHRhcmdldCAnc3JjL2Jhc2UvbGlidGNtYWxsb2NfbGEtbGludXh0aHJlYWRzLmxvJyBmYWlsZWQKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF90b29sY2hhaW4tY2xhbmdfYXJtID0gImFybSIKKworUEFDS0FHRUNPTkZJRyA/PSAibGlidW53aW5kIHN0YXRpYyIKK1BBQ0tBR0VDT05GSUdfcmVtb3ZlX2FybV9saWJjLW11c2wgPSAibGlidW53aW5kIgorUEFDS0FHRUNPTkZJR19yZW1vdmVfcmlzY3Y2NCA9ICJsaWJ1bndpbmQiCitQQUNLQUdFQ09ORklHX3JlbW92ZV9yaXNjdjMyID0gImxpYnVud2luZCIKKworUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0tZW5hYmxlLWxpYnVud2luZCwtLWRpc2FibGUtbGlidW53aW5kLGxpYnVud2luZCIKK1BBQ0tBR0VDT05GSUdbc3RhdGljXSA9ICItLWVuYWJsZS1zdGF0aWMsLS1kaXNhYmxlLXN0YXRpYywiCisKK1BBQ0tBR0VfQkVGT1JFX1BOICs9ICJsaWJ0Y21hbGxvYy1taW5pbWFsIgorRklMRVNfbGlidGNtYWxsb2MtbWluaW1hbCA9ICIke2xpYmRpcn0vbGlidGNtYWxsb2NfbWluaW1hbCoke1NPTElCU30gJHtsaWJkaXJ9L2xpYnRjbWFsbG9jX21pbmltYWxfZGVidWcqJHtTT0xJQlN9IgorCisjIHBwcm9mIHRvb2wgcmVxdWlyZXMgR2V0b3B0Ojpsb25nIGFuZCBQT1NJWCBwZXJsNSBtb2R1bGVzLgorIyBBbHNvIHJ1bnMgYG9iamR1bXBgIG9uIGVhY2ggY3B1cHJvZmlsZSBkYXRhIGZpbGUKK1JERVBFTkRTXyR7UE59ICs9ICJiaW51dGlscyBwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyBwZXJsLW1vZHVsZS1wb3NpeCIKKworUkRFUEVORFNfJHtQTn0gKz0gImxpYnRjbWFsbG9jLW1pbmltYWwgKD0gJHtFWFRFTkRQS0dWfSkiCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29sc18yLjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncGVyZnRvb2xzL2dwZXJmdG9vbHNfMi43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTM0YWNlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dwZXJmdG9vbHMvZ3BlcmZ0b29sc18yLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIkZhc3QsIG11bHRpLXRocmVhZGVkIG1hbGxvYygpIGFuZCBuaWZ0eSBwZXJmb3JtYW5jZSBhbmFseXNpcyB0b29scyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ncGVyZnRvb2xzL2dwZXJmdG9vbHMiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc2MjczMjc0MmM3M2RjNmM3ZmJlODYzMmYwNmMwNTlhIgotCi1TUkNSRVYgPSAiOTYwOGZhM2JjZjgwMjBkMzVmNTlmYmY3MGNkM2NiZTRiMDE1Yjk3MiIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ncGVyZnRvb2xzL2dwZXJmdG9vbHMgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1TdXBwb3J0LUF0b21pYy1vcHMtb24tY2xhbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1kaXNiYWxlLWhlYXAtY2hlY2tlcnMtYW5kLWRlYnVnLWFsbG9jYXRvci1vbi1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGVfbGlidW53aW5kX2FhcmNoNjQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2dpZGVmLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1pbmhlcml0IGF1dG90b29scwotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi0jIE9uIG1pcHMsIHdlIGhhdmUgdGhlIGZvbGxvd2luZyBlcnJvci4KLSMgICBkb19wYWdlX2ZhdWx0KCk6IHNlbmRpbmcgU0lHU0VHViB0byBscyBmb3IgaW52YWxpZCByZWFkIGFjY2VzcyBmcm9tIDAwMDAwMDA4Ci0jICAgU2VnbWVudGF0aW9uIGZhdWx0IChjb3JlIGR1bXBlZCkKLUNPTVBBVElCTEVfSE9TVF9taXBzYXJjaCA9ICJudWxsIgotIyBEaXNhYmxlIHRodW1iMQotIyB7c3RhbmRhcmQgaW5wdXR9OiBBc3NlbWJsZXIgbWVzc2FnZXM6Ci0jIHtzdGFuZGFyZCBpbnB1dH06NDM0OiBFcnJvcjogbG8gcmVnaXN0ZXIgcmVxdWlyZWQgLS0gYGxkciBwYyxbc3BdJwotIyBNYWtlZmlsZTo0NTM4OiByZWNpcGUgZm9yIHRhcmdldCAnc3JjL2Jhc2UvbGlidGNtYWxsb2NfbGEtbGludXh0aHJlYWRzLmxvJyBmYWlsZWQKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF90b29sY2hhaW4tY2xhbmdfYXJtID0gImFybSIKLQotUEFDS0FHRUNPTkZJRyA/PSAibGlidW53aW5kIHN0YXRpYyIKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2FybV9saWJjLW11c2wgPSAibGlidW53aW5kIgotCi1QQUNLQUdFQ09ORklHW2xpYnVud2luZF0gPSAiLS1lbmFibGUtbGlidW53aW5kLC0tZGlzYWJsZS1saWJ1bndpbmQsbGlidW53aW5kIgotUEFDS0FHRUNPTkZJR1tzdGF0aWNdID0gIi0tZW5hYmxlLXN0YXRpYywtLWRpc2FibGUtc3RhdGljLCIKLQotUEFDS0FHRV9CRUZPUkVfUE4gKz0gImxpYnRjbWFsbG9jLW1pbmltYWwiCi1GSUxFU19saWJ0Y21hbGxvYy1taW5pbWFsID0gIiR7bGliZGlyfS9saWJ0Y21hbGxvY19taW5pbWFsKiR7U09MSUJTfSAke2xpYmRpcn0vbGlidGNtYWxsb2NfbWluaW1hbF9kZWJ1Zyoke1NPTElCU30iCi0KLSMgcHByb2YgdG9vbCByZXF1aXJlcyBHZXRvcHQ6OmxvbmcgYW5kIFBPU0lYIHBlcmw1IG1vZHVsZXMuCi0jIEFsc28gcnVucyBgb2JqZHVtcGAgb24gZWFjaCBjcHVwcm9maWxlIGRhdGEgZmlsZQotUkRFUEVORFNfJHtQTn0gKz0gImJpbnV0aWxzIHBlcmwtbW9kdWxlLWdldG9wdC1sb25nIHBlcmwtbW9kdWxlLXBvc2l4IgotCi1SREVQRU5EU18ke1BOfSArPSAibGlidGNtYWxsb2MtbWluaW1hbCAoPSAke0VYVEVORFBLR1Z9KSIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3BtL2dwbV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncG0vZ3BtX2dpdC5iYgppbmRleCA3MDM0ZDMzLi4zODAwZDE0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncG0vZ3BtX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9ncG0vZ3BtX2dpdC5iYgpAQCAtMjEsNyArMjEsNyBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgc3lzdGVtZAoraW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQgdGV4aW5mbwogCiBJTklUU0NSSVBUX05BTUUgPSAiZ3BtIgogSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nc29hcC9nc29hcF8yLjguMTAwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3NvYXAvZ3NvYXBfMi44LjEwMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wYjRlYWM4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvZ3NvYXAvZ3NvYXBfMi44LjEwMC5iYgpAQCAtMCwwICsxLDQyIEBACitERVNDUklQVElPTiA9ICJUaGUgZ1NPQVAgdG9vbGtpdCBwcm92aWRlcyBhIHVuaXF1ZSBTT0FQLXRvLUMvQysrIGxhbmd1YWdlIGJpbmRpbmcgXAorZm9yIHRoZSBkZXZlbG9wbWVudCBvZiBTT0FQIFdlYiBTZXJ2aWNlcyBhbmQgY2xpZW50cy4iCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJHUEwtMi4wLXdpdGgtT3BlblNTTC1leGNlcHRpb24iCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NGY0MGE5NDEzNzkxNDMxODZmOTYwMjI0MmMzZmI3MjkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vR1BMdjJfbGljZW5zZS50eHQ7bWQ1PWEzMzY3MmRiZTQ5MWI2NTE3NzUwYTAzODkwNjM1MDhiIgorCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0yLyR7QlBOfV8ke1BWfS56aXAgXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZjBmYzUzOTQyODY3NTNlZmY2NTdjZjYyYjQ2ZDAyNGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTFiNGY5OWQyODM5MmUzZTFhZWIyOWJmZDAwNmE0ZjFmNDBlN2ZkZDdhM2YzNDQ0ZWU2OTAxNGQ0MTVmMDlmMiIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0tMi44IgorCitQQVJBTExFTF9NQUtFID0gIiIKKworRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJTT0FQPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9zb2FwY3BwMiIKKworREVQRU5EUyA9ICJvcGVuc3NsIHpsaWIgZmxleCBiaXNvbiBiaXNvbi1uYXRpdmUiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGdzb2FwLW5hdGl2ZSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9CisgICAgZm9yIGxpYiBpbiBsaWJnc29hcHNzbCBsaWJnc29hcHNzbCsrIGxpYmdzb2FwIGxpYmdzb2FwY2srKyBsaWJnc29hcCsrIGxpYmdzb2FwY2sKKyAgICBkbworICAgICAgICBvZV9saWJpbnN0YWxsIC1DIGdzb2FwICRsaWIgJHtEfSR7bGliZGlyfQorICAgIGRvbmUKK30KKworZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7CisgICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gQklORElSPSR7RH0ke2JpbmRpcn0gaW5zdGFsbAorfQorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vd3NkbDJoICR7YmluZGlyfS9zb2FwY3BwMiIKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9IgorRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfSIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9IgorUlJFQ09NTUVORFNfJHtQTn0tZGV2ID0gIiR7UE59LXN0YXRpY2RldiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dzb2FwL2dzb2FwXzIuOC45NS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2dzb2FwL2dzb2FwXzIuOC45NS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjJhMDQ5OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9nc29hcC9nc29hcF8yLjguOTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGUgZ1NPQVAgdG9vbGtpdCBwcm92aWRlcyBhIHVuaXF1ZSBTT0FQLXRvLUMvQysrIGxhbmd1YWdlIGJpbmRpbmcgXAotZm9yIHRoZSBkZXZlbG9wbWVudCBvZiBTT0FQIFdlYiBTZXJ2aWNlcyBhbmQgY2xpZW50cy4iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJHUEwtMi4wLXdpdGgtT3BlblNTTC1leGNlcHRpb24iCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NGY0MGE5NDEzNzkxNDMxODZmOTYwMjI0MmMzZmI3MjkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vR1BMdjJfbGljZW5zZS50eHQ7bWQ1PWEzMzY3MmRiZTQ5MWI2NTE3NzUwYTAzODkwNjM1MDhiIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0yLyR7QlBOfV8ke1BWfS56aXAgXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiODgwMzE2NDYwMThkNjA4NTdmMjEyNDY5NjJkMTAwMTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmUwN2FhMTUyY2Q5NDZlZjhlYmQzZjg3NjUzZjE0YzFkMzhlZmU3YzZlNmZjZThjNmY3NzNjNDgxNGY3OWJhZiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0tMi44IgotCi1QQVJBTExFTF9NQUtFID0gIiIKLQotRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJTT0FQPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9zb2FwY3BwMiIKLQotREVQRU5EUyA9ICJvcGVuc3NsIHpsaWIgZmxleCBiaXNvbiBiaXNvbi1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGdzb2FwLW5hdGl2ZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0gICAgZm9yIGxpYiBpbiBsaWJnc29hcHNzbCBsaWJnc29hcHNzbCsrIGxpYmdzb2FwIGxpYmdzb2FwY2srKyBsaWJnc29hcCsrIGxpYmdzb2FwY2sKLSAgICBkbwotICAgICAgICBvZV9saWJpbnN0YWxsIC1DIGdzb2FwICRsaWIgJHtEfSR7bGliZGlyfQotICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gQklORElSPSR7RH0ke2JpbmRpcn0gaW5zdGFsbAotfQotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vd3NkbDJoICR7YmluZGlyfS9zb2FwY3BwMiIKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9IgotRklMRVNfJHtQTn0tc3RhdGljZGV2ID0gIiR7bGliZGlyfSIKLUZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9IgotUlJFQ09NTUVORFNfJHtQTn0tZGV2ID0gIiR7UE59LXN0YXRpY2RldiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2h3ZGF0YS9od2RhdGFfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHdkYXRhL2h3ZGF0YV9naXQuYmIKaW5kZXggZTIwYmVjNS4uNWYzZTNmNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHdkYXRhL2h3ZGF0YV9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaHdkYXRhL2h3ZGF0YV9naXQuYmIKQEAgLTUsOCArNSw4IEBACiBMSUNFTlNFID0gIkdQTC0yLjArIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTU1NjU0NzcxMWU4MjQ2OTkyYjk5OWVkZDk0NDVhNTciCiAKLVBWID0gIjAuMzMwIgotU1JDUkVWID0gIjMzNWY3MmY4ZWQ0YWQwY2YzMzU1MjZkM2M2YzQ3MDFmN2U1OGY0NWIiCitQViA9ICIwLjMzMyIKK1NSQ1JFViA9ICIyZGU1MmJlMGQwMDAxNWZhNmNkZTcwYmI4NDVmYTliODZjZjZmNDIwIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3ZjcmhvbmVrLyR7QlBOfS5naXQiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pa3NlbWVsL2lrc2VtZWxfMS41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaWtzZW1lbC9pa3NlbWVsXzEuNS5iYgppbmRleCAwOTAzZTkwLi45ODY5ODRkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pa3NlbWVsL2lrc2VtZWxfMS41LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lrc2VtZWwvaWtzZW1lbF8xLjUuYmIKQEAgLTEzLDcgKzEzLDcgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGxpYl9wYWNrYWdlCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgbGliX3BhY2thZ2UgdGV4aW5mbwogCiAjIFRMUyBzdXBwb3J0IHJlcXVpcmVzIGVpdGhlciBvcGVuc3NsIG9yIGdudXRscyAoaWYgYm90aCBhcmUgZW5hYmxlZCBvcGVuc3NsIHdpbGwgYmUgdXNlZCkuCiBQQUNLQUdFQ09ORklHID89ICJnbnV0bHMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbmloL2xpYmluaWhfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaW5paC9saWJpbmloX2dpdC5iYgppbmRleCA4N2IxMTQyLi4yMjdlMmE3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbmloL2xpYmluaWhfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2luaWgvbGliaW5paF9naXQuYmIKQEAgLTEyLDYgKzEyLDggQEAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9PU1N5c3RlbXMvaW5paC5naXQgXAogICAgICAgICAgICIKIAorVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgorCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBpbmhlcml0IGdpdHBrZ3YgY21ha2UKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lub3RpZnktdG9vbHMvaW5vdGlmeS10b29scy8wMDAxLU1ha2VmaWxlLmFtLWFkZC1idWlsZC1ydWxlLWZvci1SRUFETUUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbm90aWZ5LXRvb2xzL2lub3RpZnktdG9vbHMvMDAwMS1NYWtlZmlsZS5hbS1hZGQtYnVpbGQtcnVsZS1mb3ItUkVBRE1FLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjN2NkOTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbm90aWZ5LXRvb2xzL2lub3RpZnktdG9vbHMvMDAwMS1NYWtlZmlsZS5hbS1hZGQtYnVpbGQtcnVsZS1mb3ItUkVBRE1FLnBhdGNoCkBAIC0wLDAgKzEsNDYgQEAKK0Zyb20gMjJiZmY1MDllMmEwZTU2NDA5OTRiYzkyZGVkNjJjMzgzZDk5YmMzNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFBpZXJyZS1KZWFuIFRleGllciA8cGp0ZXhpZXJAa29uY2VwdG8uaW8+CitEYXRlOiBNb24sIDI0IEZlYiAyMDIwIDIxOjQ0OjQ1ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBhZGQgYnVpbGQgcnVsZSBmb3IgUkVBRE1FCisKK0ZpeGVzOgorCit8IGNvbmZpZ3VyZS5hYzoxNzogaW5zdGFsbGluZyAnY29uZmlnL2NvbmZpZy5zdWInCit8IGNvbmZpZ3VyZS5hYzoxNjogaW5zdGFsbGluZyAnY29uZmlnL2luc3RhbGwtc2gnCit8IGNvbmZpZ3VyZS5hYzoxNjogaW5zdGFsbGluZyAnY29uZmlnL21pc3NpbmcnCit8IE1ha2VmaWxlLmFtOiBlcnJvcjogcmVxdWlyZWQgZmlsZSAnLi9SRUFETUUnIG5vdCBmb3VuZAorfCBsaWJpbm90aWZ5dG9vbHMvc3JjL01ha2VmaWxlLmFtOiBpbnN0YWxsaW5nICdjb25maWcvZGVwY29tcCcKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9pbm90aWZ5LXRvb2xzL2lub3RpZnktdG9vbHMvcHVsbC8xMTFdCisKK1NpZ25lZC1vZmYtYnk6IFBpZXJyZS1KZWFuIFRleGllciA8cGp0ZXhpZXJAa29uY2VwdG8uaW8+CistLS0KKyBNYWtlZmlsZS5hbSB8IDIgKysKKyBhdXRvZ2VuLnNoICB8IDEgLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA1NmU0NTMxLi5kMDhjOGZlIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMiw2ICsyLDggQEAgQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQKKyAKKyBTVUJESVJTID0gbGliaW5vdGlmeXRvb2xzIHNyYyBtYW4KKyAKKytSRUFETUU6IFJFQURNRS5tZAorKworIGRpc3QtaG9vazoKKyAjIEF1dG9tYWtlIG9mZmljaWFsIGRvY3VtZW50YXRpb24gc3RhdGVzIHRoYXQgZGlzdC1ob29rIHNob3VsZCBhc3N1bWUgZmlsZXMKKyAjIGFyZSBub3Qgd3JpdGFibGUuCitkaWZmIC0tZ2l0IGEvYXV0b2dlbi5zaCBiL2F1dG9nZW4uc2gKK2luZGV4IDQ4ZWIyMWQuLjMxNTcyYzIgMTAwNzU1CistLS0gYS9hdXRvZ2VuLnNoCisrKysgYi9hdXRvZ2VuLnNoCitAQCAtMSw0ICsxLDMgQEAKKyAjIS9iaW4vc2gKKyAKKy1jcCBSRUFETUUubWQgUkVBRE1FCisgYXV0b3JlY29uZiAtLWluc3RhbGwgIiRAIiB8fCBleGl0IDEKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaW5vdGlmeS10b29scy9pbm90aWZ5LXRvb2xzL2lub3RpZnktbm9zeXMtZml4LXN5c3RlbS1jYWxsLW51bWJlci5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lub3RpZnktdG9vbHMvaW5vdGlmeS10b29scy9pbm90aWZ5LW5vc3lzLWZpeC1zeXN0ZW0tY2FsbC1udW1iZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg5Yjg5MGQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaW5vdGlmeS10b29scy9pbm90aWZ5LXRvb2xzL2lub3RpZnktbm9zeXMtZml4LXN5c3RlbS1jYWxsLW51bWJlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLWlub3RpZnktdG9vbHM6IGZpeCBfX05SX2lub3RpZnlfYWRkX3dhdGNoIHN5c3RlbSBjYWxsIG51bWJlciBvbiBfTUlQU19TSU1fQUJJNjQKLQotVGhlIGNvcnJlY3QgdmFsdWUgc2hvdWxkIGJlIHRoZSBzYW1lIGFzIGRlZmluZWQgaW4KLWxpbnV4L2FyY2gvbWlwcy9pbmNsdWRlL3VhcGkvYXNtL3VuaXN0ZC5oCi0KLVVwc3RyZWFtLVN0YXR1czogU3VtbWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnZvaWNpbGFzL2lub3RpZnktdG9vbHMvcHVsbC83MV0KLQotU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogSmFja2llIEh1YW5nIDxqYWNraWUuaHVhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYmlub3RpZnl0b29scy9zcmMvaW5vdGlmeXRvb2xzL2lub3RpZnktbm9zeXMuaCB8ICAgIDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJpbm90aWZ5dG9vbHMvc3JjL2lub3RpZnl0b29scy9pbm90aWZ5LW5vc3lzLmggYi9saWJpbm90aWZ5dG9vbHMvc3JjL2lub3RpZnl0b29scy9pbm90aWZ5LW5vc3lzLmgKLWluZGV4IGRiNzZiMmMuLjVmN2IxMWIgMTAwNjQ0Ci0tLS0gYS9saWJpbm90aWZ5dG9vbHMvc3JjL2lub3RpZnl0b29scy9pbm90aWZ5LW5vc3lzLmgKLSsrKyBiL2xpYmlub3RpZnl0b29scy9zcmMvaW5vdGlmeXRvb2xzL2lub3RpZnktbm9zeXMuaAotQEAgLTEwMCw4ICsxMDAsOCBAQCBzdHJ1Y3QgaW5vdGlmeV9ldmVudCB7Ci0gIyBlbmRpZgotICMgaWYgX01JUFNfU0lNID09IF9NSVBTX1NJTV9BQkk2NAotICMgIGRlZmluZSBfX05SX2lub3RpZnlfaW5pdCAoX19OUl9MaW51eCArIDI0MykKLS0jICBkZWZpbmUgX19OUl9pbm90aWZ5X2FkZF93YXRjaCAoX19OUl9MaW51eCArIDI0MykKLS0jICBkZWZpbmUgX19OUl9pbm90aWZ5X3JtX3dhdGNoIChfX05SX0xpbnV4ICsgMjQzKQotKyMgIGRlZmluZSBfX05SX2lub3RpZnlfYWRkX3dhdGNoIChfX05SX0xpbnV4ICsgMjQ0KQotKyMgIGRlZmluZSBfX05SX2lub3RpZnlfcm1fd2F0Y2ggKF9fTlJfTGludXggKyAyNDUpCi0gIyBlbmRpZgotICMgaWYgX01JUFNfU0lNID09IF9NSVBTX1NJTV9OQUJJMzIKLSAjICBkZWZpbmUgX19OUl9pbm90aWZ5X2luaXQgKF9fTlJfTGludXggKyAyNDcpCi0tLSAKLTEuNy4xMC40Ci0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lub3RpZnktdG9vbHMvaW5vdGlmeS10b29sc19naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pbm90aWZ5LXRvb2xzL2lub3RpZnktdG9vbHNfZ2l0LmJiCmluZGV4IDA1Y2E0YjQuLmY0MmFiZWIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2lub3RpZnktdG9vbHMvaW5vdGlmeS10b29sc19naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvaW5vdGlmeS10b29scy9pbm90aWZ5LXRvb2xzX2dpdC5iYgpAQCAtNSwxMiArNSwxMiBAQAogTElDRU5TRSA9ICJHUEwtMi4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YWM2YzI2ZTUyYWVhNDI4ZWU3ZjU2ZGMyYzU2NDI0YzYiCiAKLVNSQ1JFViA9ICJlMjAzOTM0ZTQ2Nzg0YmIzNGMyMTMwNzg0MjNiYTE2NzhlMGM0OTM2IgotUFYgPSAiMy4yMC4xIgorU1JDUkVWID0gImNmYTkzYWExOWY4MWQ4NWI2M2NkNjRkYTMwYzc0OTk4OTBkNGMwN2QiCitQViA9ICIzLjIwLjIuMiIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3J2b2ljaWxhcy8ke0JQTn0gXAotICAgICAgICAgICBmaWxlOi8vaW5vdGlmeS1ub3N5cy1maXgtc3lzdGVtLWNhbGwtbnVtYmVyLnBhdGNoIFwKLSAgICAgICAgICAiCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLmFtLWFkZC1idWlsZC1ydWxlLWZvci1SRUFETUUucGF0Y2ggXAorICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbF8yLjAuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbF8yLjAuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODI5MGM1ZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pdHN0b29sL2l0c3Rvb2xfMi4wLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIklUUyBUb29sIGFsbG93cyB5b3UgdG8gdHJhbnNsYXRlIHlvdXIgWE1MIGRvY3VtZW50cyB3aXRoIFBPIGZpbGVzIgotSE9NRVBBR0UgPSAiaHR0cDovL2l0c3Rvb2wub3JnLyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OWM1N2I5NWZkN2QwZTllMjM4ZWJiYzdhZDQ3YzVhNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcHl0aG9uM25hdGl2ZQotCi1ERVBFTkRTID0gImxpYnhtbDItbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9maWxlcy5pdHN0b29sLm9yZy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly8wMDAxLU5hdGl2ZS1Eb24tdC11c2UtYnVpbGQtdGltZS1oYXJkY29kZWQtcHl0aG9uLWJpbmFyeS0ucGF0Y2giCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly8wMDAyLURvbi10LXVzZS1idWlsZC10aW1lLWhhcmRjb2RlZC1weXRob24tYmluYXJ5LXBhdGgucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MzA2ZWViYTRmNGFlZTZiMzkzZDE0ZjljM2M1N2NhMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MjMzY2MyMjcyNmE5YTVhODM2NjRiZjY3ZDFhZjc5NTQ5YTI5OGMyMzE4NWQ5MjZjMzY3N2FmYTkxN2I5MmE5IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotUkRFUEVORFNfJHtQTn0gKz0gImxpYnhtbDItcHl0aG9uIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2pvZS9qb2VfNC42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvam9lL2pvZV80LjYuYmIKaW5kZXggYjc5ZTAyOC4uNjc0NzM2YSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvam9lL2pvZV80LjYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvam9lL2pvZV80LjYuYmIKQEAgLTksNyArOSw3IEBACiBQQUNLQUdFQ09ORklHID8/PSAiY3Vyc2VzIgogUEFDS0FHRUNPTkZJR1tjdXJzZXNdID0gIi0tZW5hYmxlLWN1cnNlcywtLWRpc2FibGUtY3Vyc2VzLG5jdXJzZXMsbmN1cnNlcy10ZXJtaW5mbyIKIAotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgbWltZS14ZGcKIAogU1JDX1VSSVttZDVzdW1dID0gIjkwMTc0ODRlNjExNjgzMGQ4NDY2NzhiNjI1ZWE1YzQzIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ5NWEwYTYxZjI2NDA0MDcwZmU4YTcxOWQ4MDQwNmRjN2YzMzc2MjM3ODhlNDQ1YjkyYTlmNmRlNTEyYWI5ZGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sY292L2ZpbGVzLzAwMDEtZ2VuaW5mby1BZGQtaW50ZXJtZWRpYXRlLXRleHQtZm9ybWF0LXN1cHBvcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sY292L2ZpbGVzLzAwMDEtZ2VuaW5mby1BZGQtaW50ZXJtZWRpYXRlLXRleHQtZm9ybWF0LXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWFjMDc3MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xjb3YvZmlsZXMvMDAwMS1nZW5pbmZvLUFkZC1pbnRlcm1lZGlhdGUtdGV4dC1mb3JtYXQtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDg5OCBAQAorRnJvbSBlYzNlMWY0MTFjMzMyY2JjMmYyYmM3YWI3ZTIxNzVlYmY5MThiMzdhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGV0ZXIgT2JlcnBhcmxlaXRlciA8b2JlcnBhckBsaW51eC5pYm0uY29tPgorRGF0ZTogRnJpLCAyNCBNYXkgMjAxOSAxNjo1Njo1MiArMDIwMAorU3ViamVjdDogW1BBVENIIDEvMl0gZ2VuaW5mbzogQWRkIGludGVybWVkaWF0ZSB0ZXh0IGZvcm1hdCBzdXBwb3J0CisKK1RoaXMgY2hhbmdlIGFkZHMgc3VwcG9ydCBmb3IgcGFyc2luZyB0aGUgb3V0cHV0IG9mIGdjb3YncyBpbnRlcm1lZGlhdGUKK3RleHQgZmlsZSBmb3JtYXQgYXMgaW1wbGVtZW50ZWQgYnkgR0NDIHZlcnNpb25zIDUgdG8gOC4gIFRoZSB1c2Ugb2YgdGhlCitnY292IGludGVybWVkaWF0ZSBmb3JtYXQgc2hvdWxkIGluY3JlYXNlIHByb2Nlc3Npbmcgc3BlZWQuIEl0IGFsc28KK3Byb3ZpZGVzIGJyYW5jaCBjb3ZlcmFnZSBkYXRhIHdoZW4gdXNpbmcgdGhlIC0taW5pdGlhbCBjb21tYW5kIGxpbmUKK29wdGlvbi4KKworVXNlcnMgY2FuIGNvbnRyb2wgd2hldGhlciBnZW5pbmZvIHVzZXMgdGhlIGludGVybWVkaWF0ZSBmb3JtYXQgdmlhIHRoZQorZ2VuaW5mb19pbnRlcm1lZGlhdGUgY29uZmlndXJhdGlvbiBmaWxlIG9wdGlvbi4gVmFsaWQgdmFsdWVzIGFyZToKKworICAgICAwOiBVc2Ugbm9ybWFsIHRleHQgZm9ybWF0CisgICAgIDE6IFVzZSBpbnRlcm1lZGlhdGUgZm9ybWF0CisgIGF1dG86IFVzZSBpbnRlcm1lZGlhdGUgZm9ybWF0IGlmIGF2YWlsYWJsZS4gVGhpcyBpcyB0aGUgZGVmYXVsdC4KKworU2lnbmVkLW9mZi1ieTogUGV0ZXIgT2JlcnBhcmxlaXRlciA8b2JlcnBhckBsaW51eC5pYm0uY29tPgorLS0tCisgYmluL2dlbmluZm8gIHwgNTY3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLQorIGxjb3ZyYyAgICAgICB8ICAgMyArCisgbWFuL2xjb3ZyYy41IHwgIDI0ICsrKworIDMgZmlsZXMgY2hhbmdlZCwgNTIxIGluc2VydGlvbnMoKyksIDczIGRlbGV0aW9ucygtKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitEb3dubG9hZCBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbGNvdi9jb21taXQvZWJmZWIzZTE3OWU0NTBjNjljMzUzMmY5OGNkNWVhMWZiZjZjY2JhNworCitkaWZmIC0tZ2l0IGEvYmluL2dlbmluZm8gYi9iaW4vZ2VuaW5mbworaW5kZXggZjQxZWFlYy4uMDI3NjY2NiAxMDA3NTUKKy0tLSBhL2Jpbi9nZW5pbmZvCisrKysgYi9iaW4vZ2VuaW5mbworQEAgLTU0LDYgKzU0LDggQEAgdXNlIHdhcm5pbmdzOworIHVzZSBGaWxlOjpCYXNlbmFtZTsgCisgdXNlIEZpbGU6OlNwZWM6OkZ1bmN0aW9ucyBxdyAvYWJzMnJlbCBjYXRkaXIgZmlsZV9uYW1lX2lzX2Fic29sdXRlIHNwbGl0ZGlyCisgCQkJICAgICAgc3BsaXRwYXRoIGNhdHBhdGgvOworK3VzZSBGaWxlOjpUZW1wIHF3KHRlbXBmaWxlIHRlbXBkaXIpOworK3VzZSBGaWxlOjpDb3B5IHF3KGNvcHkpOworIHVzZSBHZXRvcHQ6Okxvbmc7CisgdXNlIERpZ2VzdDo6TUQ1IHF3KG1kNV9iYXNlNjQpOworIHVzZSBDd2QgcXcvYWJzX3BhdGgvOworQEAgLTE2MywxMyArMTY1LDEzIEBAIHN1YiBzb2x2ZV9yZWxhdGl2ZV9wYXRoKCQkKTsKKyBzdWIgcmVhZF9nY292X2hlYWRlcigkKTsKKyBzdWIgcmVhZF9nY292X2ZpbGUoJCk7Cisgc3ViIGluZm8oQCk7Cisrc3ViIHByb2Nlc3NfaW50ZXJtZWRpYXRlKCQkJCk7Cisgc3ViIG1hcF9sbHZtX3ZlcnNpb24oJCk7Cisgc3ViIHZlcnNpb25fdG9fc3RyKCQpOworIHN1YiBnZXRfZ2Nvdl92ZXJzaW9uKCk7Cisgc3ViIHN5c3RlbV9ub19vdXRwdXQoJEApOworIHN1YiByZWFkX2NvbmZpZygkKTsKKyBzdWIgYXBwbHlfY29uZmlnKCQpOworLXN1YiBnZXRfZXhjbHVzaW9uX2RhdGEoJCk7Cisgc3ViIGFwcGx5X2V4Y2x1c2lvbl9kYXRhKCQkKTsKKyBzdWIgcHJvY2Vzc19ncmFwaGZpbGUoJCQpOworIHN1YiBmaWx0ZXJfZm5fbmFtZSgkKTsKK0BAIC0yNjQsNiArMjY2LDggQEAgb3VyICRnY25vX3NwbGl0X2NyYzsKKyBvdXIgJGZ1bmNfY292ZXJhZ2UgPSAxOworIG91ciAkYnJfY292ZXJhZ2UgPSAwOworIG91ciAkcmNfYXV0b19iYXNlID0gMTsKKytvdXIgJHJjX2ludGVybWVkaWF0ZSA9ICJhdXRvIjsKKytvdXIgJGludGVybWVkaWF0ZTsKKyBvdXIgJGV4Y2xfbGluZSA9ICJMQ09WX0VYQ0xfTElORSI7Cisgb3VyICRleGNsX2JyX2xpbmUgPSAiTENPVl9FWENMX0JSX0xJTkUiOworIAorQEAgLTMzMSw2ICszMzUsNyBAQCBpZiAoJGNvbmZpZyB8fCAlb3B0X3JjKQorIAkJImdlbmluZm9fY29tcGF0IgkJPT4gXCRvcHRfY29tcGF0LAorIAkJImdlbmluZm9fYWRqdXN0X3NyY19wYXRoIgk9PiBcJHJjX2FkanVzdF9zcmNfcGF0aCwKKyAJCSJnZW5pbmZvX2F1dG9fYmFzZSIJCT0+IFwkcmNfYXV0b19iYXNlLAorKwkJImdlbmluZm9faW50ZXJtZWRpYXRlIgkJPT4gXCRyY19pbnRlcm1lZGlhdGUsCisgCQkibGNvdl9mdW5jdGlvbl9jb3ZlcmFnZSIJPT4gXCRmdW5jX2NvdmVyYWdlLAorIAkJImxjb3ZfYnJhbmNoX2NvdmVyYWdlIgkJPT4gXCRicl9jb3ZlcmFnZSwKKyAJCSJsY292X2V4Y2xfbGluZSIJCT0+IFwkZXhjbF9saW5lLAorQEAgLTQ2MCwxNSArNDY1LDM4IEBAIGlmIChzeXN0ZW1fbm9fb3V0cHV0KDMsICRnY292X3Rvb2wsICItLWhlbHAiKSA9PSAtMSkKKyB9CisgCisgKCRnY292X3ZlcnNpb24sICRnY292X3ZlcnNpb25fc3RyaW5nKSA9IGdldF9nY292X3ZlcnNpb24oKTsKKyskZ2Nvdl9jYXBzID0gZ2V0X2djb3ZfY2FwYWJpbGl0aWVzKCk7CisrCisrIyBEZXRlcm1pbmUgaW50ZXJtZWRpYXRlIG1vZGUKKytpZiAoJHJjX2ludGVybWVkaWF0ZSBlcSAiMCIpIHsKKysJJGludGVybWVkaWF0ZSA9IDA7CisrfSBlbHNpZiAoJHJjX2ludGVybWVkaWF0ZSBlcSAiMSIpIHsKKysJJGludGVybWVkaWF0ZSA9IDE7CisrfSBlbHNpZiAobGMoJHJjX2ludGVybWVkaWF0ZSkgZXEgImF1dG8iKSB7CisrCSMgVXNlIGludGVybWVkaWF0ZSBmb3JtYXQgaWYgc3VwcG9ydGVkIGJ5IGdjb3YKKysJJGludGVybWVkaWF0ZSA9ICRnY292X2NhcHMtPnsnaW50ZXJtZWRpYXRlLWZvcm1hdCd9ID8gMSA6IDA7CisrfSBlbHNlIHsKKysJZGllKCJFUlJPUjogaW52YWxpZCB2YWx1ZSBmb3IgZ2VuaW5mb19pbnRlcm1lZGlhdGU6ICIuCisrCSAgICAiJyRyY19pbnRlcm1lZGlhdGUnXG4iKTsKKyt9CisrCisraWYgKCRpbnRlcm1lZGlhdGUpIHsKKysJaW5mbygiVXNpbmcgaW50ZXJtZWRpYXRlIGdjb3YgZm9ybWF0XG4iKTsKKysJaWYgKCRvcHRfZGVyaXZlX2Z1bmNfZGF0YSkgeworKwkJd2FybigiV0FSTklORzogLS1kZXJpdmUtZnVuYy1kYXRhIGlzIG5vdCBjb21wYXRpYmxlIHdpdGggIi4KKysJCSAgICAgImludGVybWVkaWF0ZSBmb3JtYXQgLSBpZ25vcmluZ1xuIik7CisrCQkkb3B0X2Rlcml2ZV9mdW5jX2RhdGEgPSAwOworKwl9CisrfQorIAorICMgRGV0ZXJtaW5lIGdjb3Ygb3B0aW9ucworLSRnY292X2NhcHMgPSBnZXRfZ2Nvdl9jYXBhYmlsaXRpZXMoKTsKKyBwdXNoKEBnY292X29wdGlvbnMsICItYiIpIGlmICgkZ2Nvdl9jYXBzLT57J2JyYW5jaC1wcm9iYWJpbGl0aWVzJ30gJiYKKyAJCQkgICAgICAoJGJyX2NvdmVyYWdlIHx8ICRmdW5jX2NvdmVyYWdlKSk7CisgcHVzaChAZ2Nvdl9vcHRpb25zLCAiLWMiKSBpZiAoJGdjb3ZfY2Fwcy0+eydicmFuY2gtY291bnRzJ30gJiYKKyAJCQkgICAgICAkYnJfY292ZXJhZ2UpOworIHB1c2goQGdjb3Zfb3B0aW9ucywgIi1hIikgaWYgKCRnY292X2NhcHMtPnsnYWxsLWJsb2Nrcyd9ICYmCistCQkJICAgICAgJG9wdF9nY292X2FsbF9ibG9ja3MgJiYgJGJyX2NvdmVyYWdlKTsKKysJCQkgICAgICAkb3B0X2djb3ZfYWxsX2Jsb2NrcyAmJiAkYnJfY292ZXJhZ2UgJiYKKysJCQkgICAgICAhJGludGVybWVkaWF0ZSk7CisgaWYgKCRnY292X2NhcHMtPnsnaGFzaC1maWxlbmFtZXMnfSkKKyB7CisgCXB1c2goQGdjb3Zfb3B0aW9ucywgIi14Iik7CitAQCAtNTk5LDcgKzYyNyw3IEBAIGZvcmVhY2ggbXkgJGVudHJ5IChAZGF0YV9kaXJlY3RvcnkpIHsKKyAJZ2VuX2luZm8oJGVudHJ5KTsKKyB9CisgCistaWYgKCRpbml0aWFsICYmICRicl9jb3ZlcmFnZSkgeworK2lmICgkaW5pdGlhbCAmJiAkYnJfY292ZXJhZ2UgJiYgISRpbnRlcm1lZGlhdGUpIHsKKyAJd2FybigiTm90ZTogLS1pbml0aWFsIGRvZXMgbm90IGdlbmVyYXRlIGJyYW5jaCBjb3ZlcmFnZSAiLgorIAkgICAgICJkYXRhXG4iKTsKKyB9CitAQCAtNzY4LDYgKzc5Niw3IEBAIHN1YiBnZW5faW5mbygkKQorIAlteSAkcHJlZml4OworIAlteSAkdHlwZTsKKyAJbXkgJGV4dDsKKysJbXkgJHRlbXBkaXI7CisgCisgCWlmICgkaW5pdGlhbCkgeworIAkJJHR5cGUgPSAiZ3JhcGgiOworQEAgLTc5OCwxNiArODI3LDIyIEBAIHN1YiBnZW5faW5mbygkKQorIAkJJHByZWZpeCA9ICIiOworIAl9CisgCisrCSR0ZW1wZGlyID0gdGVtcGRpcihDTEVBTlVQID0+IDEpOworKworIAkjIFByb2Nlc3MgYWxsIGZpbGVzIGluIGxpc3QKKyAJZm9yZWFjaCAkZmlsZSAoQGZpbGVfbGlzdCkgeworIAkJIyBQcm9jZXNzIGZpbGUKKy0JCWlmICgkaW5pdGlhbCkgeworKwkJaWYgKCRpbnRlcm1lZGlhdGUpIHsKKysJCQlwcm9jZXNzX2ludGVybWVkaWF0ZSgkZmlsZSwgJHByZWZpeCwgJHRlbXBkaXIpOworKwkJfSBlbHNpZiAoJGluaXRpYWwpIHsKKyAJCQlwcm9jZXNzX2dyYXBoZmlsZSgkZmlsZSwgJHByZWZpeCk7CisgCQl9IGVsc2UgeworIAkJCXByb2Nlc3NfZGFmaWxlKCRmaWxlLCAkcHJlZml4KTsKKyAJCX0KKyAJfQorIAorKwl1bmxpbmsoJHRlbXBkaXIpOworKworIAkjIFJlcG9ydCB3aGV0aGVyIGZpbGVzIHdlcmUgZXhjbHVkZWQuCisgCWlmICglZXhjbHVkZWRfZmlsZXMpIHsKKyAJCWluZm8oIkV4Y2x1ZGVkIGRhdGEgZm9yICVkIGZpbGVzIGR1ZSB0byBpbmNsdWRlL2V4Y2x1ZGUgb3B0aW9uc1xuIiwKK0BAIC0xMDU4LDEwICsxMDkzLDEyIEBAIHN1YiBwcm9jZXNzX2RhZmlsZSgkJCkKKyAKKyAJIyBUcnkgdG8gZmluZCBiYXNlIGRpcmVjdG9yeSBhdXRvbWF0aWNhbGx5IGlmIHJlcXVlc3RlZCBieSB1c2VyCisgCWlmICgkcmNfYXV0b19iYXNlKSB7CistCQkkYmFzZV9kaXIgPSBmaW5kX2Jhc2VfZnJvbV9ncmFwaCgkYmFzZV9kaXIsICRpbnN0ciwgJGdyYXBoKTsKKysJCSRiYXNlX2RpciA9IGZpbmRfYmFzZV9mcm9tX3NvdXJjZSgkYmFzZV9kaXIsCisrCQkJWyBrZXlzKCV7JGluc3RyfSksIGtleXMoJXskZ3JhcGh9KSBdKTsKKyAJfQorIAorLQkoJGluc3RyLCAkZ3JhcGgpID0gYWRqdXN0X2dyYXBoX2ZpbGVuYW1lcygkYmFzZV9kaXIsICRpbnN0ciwgJGdyYXBoKTsKKysJYWRqdXN0X3NvdXJjZV9maWxlbmFtZXMoJGluc3RyLCAkYmFzZV9kaXIpOworKwlhZGp1c3Rfc291cmNlX2ZpbGVuYW1lcygkZ3JhcGgsICRiYXNlX2Rpcik7CisgCisgCSMgU2V0ICRvYmplY3RfZGlyIHRvIHJlYWwgbG9jYXRpb24gb2Ygb2JqZWN0IGZpbGVzLiBUaGlzIG1heSBkaWZmZXIKKyAJIyBmcm9tICRkYV9kaXIgaWYgdGhlIGdyYXBoIGZpbGUgaXMganVzdCBhIGxpbmsgdG8gdGhlICJyZWFsIiBvYmplY3QKK0BAIC0yMDE3LDYgKzIwNTQsMjk5IEBAIHN1YiByZWFkX2djb3ZfZmlsZSgkKQorIH0KKyAKKyAKKysjCisrIyByZWFkX2ludGVybWVkaWF0ZV90ZXh0KGdjb3ZfZmlsZW5hbWUsIGRhdGEpCisrIworKyMgUmVhZCBnY292IGludGVybWVkaWF0ZSB0ZXh0IGZvcm1hdCBpbiBHQ09WX0ZJTEVOQU1FIGFuZCBhZGQgdGhlIHJlc3VsdGluZworKyMgZGF0YSB0byBEQVRBIGluIHRoZSBmb2xsb3dpbmcgZm9ybWF0OgorKyMKKysjIGRhdGE6ICAgICAgc291cmNlX2ZpbGVuYW1lIC0+IGZpbGVfZGF0YQorKyMgZmlsZV9kYXRhOiBjb25jYXRlbmF0ZWQgbGluZXMgb2YgaW50ZXJtZWRpYXRlIHRleHQgZGF0YQorKyMKKysKKytzdWIgcmVhZF9pbnRlcm1lZGlhdGVfdGV4dCgkJCkKKyt7CisrCW15ICgkZ2Nvdl9maWxlbmFtZSwgJGRhdGEpID0gQF87CisrCW15ICRmZDsKKysJbXkgJGZpbGVuYW1lOworKworKwlvcGVuKCRmZCwgIjwiLCAkZ2Nvdl9maWxlbmFtZSkgb3IKKysJCWRpZSgiRVJST1I6IENvdWxkIG5vdCByZWFkICRnY292X2ZpbGVuYW1lOiAkIVxuIik7CisrCXdoaWxlIChteSAkbGluZSA9IDwkZmQ+KSB7CisrCQlpZiAoJGxpbmUgPX4gL15maWxlOiguKikkLykgeworKwkJCSRmaWxlbmFtZSA9ICQxOworKwkJCWNob21wKCRmaWxlbmFtZSk7CisrCQl9IGVsc2lmIChkZWZpbmVkKCRmaWxlbmFtZSkpIHsKKysJCQkkZGF0YS0+eyRmaWxlbmFtZX0gLj0gJGxpbmU7CisrCQl9CisrCX0KKysJY2xvc2UoJGZkKTsKKyt9CisrCisrCisrIworKyMgaW50ZXJtZWRpYXRlX3RleHRfdG9faW5mbyhmZCwgZGF0YSwgc3JjZGF0YSkKKysjCisrIyBXcml0ZSBEQVRBIGluIGluZm8gZm9ybWF0IHRvIGZpbGUgZGVzY3JpcHRvciBGRC4KKysjCisrIyBkYXRhOiAgICAgIGZpbGVuYW1lIC0+IGZpbGVfZGF0YToKKysjIGZpbGVfZGF0YTogY29uY2F0ZW5hdGVkIGxpbmVzIG9mIGludGVybWVkaWF0ZSB0ZXh0IGRhdGEKKysjCisrIyBzcmNkYXRhOiAgIGZpbGVuYW1lIC0+IFsgZXhjbCwgYnJleGNsLCBjaGVja3N1bXMgXQorKyMgZXhjbDogICAgICBsaW5lbm8gLT4gMSBmb3IgYWxsIGxpbmVzIGZvciB3aGljaCB0byBleGNsdWRlIGFsbCBkYXRhCisrIyBicmV4Y2w6ICAgIGxpbmVubyAtPiAxIGZvciBhbGwgbGluZXMgZm9yIHdoaWNoIHRvIGV4Y2x1ZGUgYnJhbmNoIGRhdGEKKysjIGNoZWNrc3VtczogbGluZW5vIC0+IHNvdXJjZSBjb2RlIGNoZWNrc3VtCisrIworKyMgTm90ZTogVG8gc2ltcGxpZnkgcHJvY2Vzc2luZywgZ2NvdiBkYXRhIGlzIG5vdCBjb21iaW5lZCBoZXJlLCB0aGF0IGlzIGNvdW50cworKyMgICAgICAgdGhhdCBhcHBlYXIgbXVsdGlwbGUgdGltZXMgZm9yIHRoZSBzYW1lIGxpbmVzL2JyYW5jaGVzIGFyZSBub3QgYWRkZWQuCisrIyAgICAgICBUaGlzIGlzIGRvbmUgYnkgbGNvdi9nZW5odG1sIHdoZW4gcmVhZGluZyB0aGUgZGF0YSBmaWxlcy4KKysjCisrCisrc3ViIGludGVybWVkaWF0ZV90ZXh0X3RvX2luZm8oJCQkKQorK3sKKysJbXkgKCRmZCwgJGRhdGEsICRzcmNkYXRhKSA9IEBfOworKwlteSAkYnJhbmNoX251bSA9IDA7CisrCW15ICRjOworKworKwlyZXR1cm4gaWYgKCEleyRkYXRhfSk7CisrCisrCXByaW50KCRmZCAiVE46JHRlc3RfbmFtZVxuIik7CisrCWZvciBteSAkZmlsZW5hbWUgKGtleXMoJXskZGF0YX0pKSB7CisrCQlteSAoJGV4Y2wsICRicmV4Y2wsICRjaGVja3N1bXMpOworKworKwkJaWYgKGRlZmluZWQoJHNyY2RhdGEtPnskZmlsZW5hbWV9KSkgeworKwkJCSgkZXhjbCwgJGJyZXhjbCwgJGNoZWNrc3VtcykgPSBAeyRzcmNkYXRhLT57JGZpbGVuYW1lfX07CisrCQl9CisrCisrCQlwcmludCgkZmQgIlNGOiRmaWxlbmFtZVxuIik7CisrCQlmb3IgbXkgJGxpbmUgKHNwbGl0KC9cbi8sICRkYXRhLT57JGZpbGVuYW1lfSkpIHsKKysJCQlpZiAoJGxpbmUgPX4gL15sY291bnQ6KFxkKyksKFxkKyksPy8pIHsKKysJCQkJIyBsY291bnQ6PGxpbmU+LDxjb3VudD4KKysJCQkJIyBsY291bnQ6PGxpbmU+LDxjb3VudD4sPGhhc191bmV4ZWN1dGVkX2Jsb2Nrcz4KKysJCQkJaWYgKCRjaGVja3N1bSAmJiBleGlzdHMoJGNoZWNrc3Vtcy0+eyQxfSkpIHsKKysJCQkJCSRjID0gIiwiLiRjaGVja3N1bXMtPnskMX07CisrCQkJCX0gZWxzZSB7CisrCQkJCQkkYyA9ICIiOworKwkJCQl9CisrCQkJCXByaW50KCRmZCAiREE6JDEsJDIkY1xuIikgaWYgKCEkZXhjbC0+eyQxfSk7CisrCisrCQkJCSMgSW50ZXJtZWRpYXRlIHRleHQgZm9ybWF0IGRvZXMgbm90IHByb3ZpZGUKKysJCQkJIyBicmFuY2ggbnVtYmVycywgYW5kIHRoZSBzYW1lIGJyYW5jaCBtYXkgYXBwZWFyCisrCQkJCSMgbXVsdGlwbGUgdGltZXMgb24gdGhlIHNhbWUgbGluZSAoZS5nLiBpbgorKwkJCQkjIHRlbXBsYXRlIGluc3RhbmNlcykuIFN5bnRoZXNpemUgYSBicmFuY2gKKysJCQkJIyBudW1iZXIgYmFzZWQgb24gdGhlIGFzc3VtcHRpb25zOgorKwkJCQkjIGEpIHRoZSBvcmRlciBvZiBicmFuY2hlcyBpcyBmaXhlZCBhY3Jvc3MKKysJCQkJIyAgICBpbnN0YW5jZXMKKysJCQkJIyBiKSBhbiBpbnN0YW5jZSBzdGFydHMgd2l0aCBhbiBsY291bnQgbGluZQorKwkJCQkkYnJhbmNoX251bSA9IDA7CisrCQkJfSBlbHNpZiAoJGxpbmUgPX4gL15mdW5jdGlvbjooXGQrKSwoXGQrKSwoW14sXSspJC8pIHsKKysJCQkJbmV4dCBpZiAoISRmdW5jX2NvdmVyYWdlIHx8ICRleGNsLT57JDF9KTsKKysKKysJCQkJIyBmdW5jdGlvbjo8bGluZT4sPGNvdW50Piw8bmFtZT4KKysJCQkJcHJpbnQoJGZkICJGTjokMSwkM1xuIik7CisrCQkJCXByaW50KCRmZCAiRk5EQTokMiwkM1xuIik7CisrCQkJfSBlbHNpZiAoJGxpbmUgPX4gL15mdW5jdGlvbjooXGQrKSxcZCssKFxkKyksKFteLF0rKSQvKSB7CisrCQkJCW5leHQgaWYgKCEkZnVuY19jb3ZlcmFnZSB8fCAkZXhjbC0+eyQxfSk7CisrCisrCQkJCSMgZnVuY3Rpb246PHN0YXJ0X2xpbmU+LDxlbmRfbGluZT4sPGNvdW50PiwKKysJCQkJIyAgICAgICAgICA8bmFtZT4KKysJCQkJcHJpbnQoJGZkICJGTjokMSwkM1xuIik7CisrCQkJCXByaW50KCRmZCAiRk5EQTokMiwkM1xuIik7CisrCQkJfSBlbHNpZiAoJGxpbmUgPX4gL15icmFuY2g6KFxkKyksKHRha2VufG5vdHRha2VufG5vdGV4ZWMpLykgeworKwkJCQluZXh0IGlmICghJGJyX2NvdmVyYWdlIHx8ICRleGNsLT57JDF9IHx8CisrCQkJCQkgJGJyZXhjbC0+eyQxfSk7CisrCisrCQkJCSMgYnJhbmNoOjxsaW5lPix0YWtlbnxub3R0YWtlbnxub3RleGVjCisrCQkJCWlmICgkMiBlcSAidGFrZW4iKSB7CisrCQkJCQkkYyA9IDE7CisrCQkJCX0gZWxzaWYgKCQyIGVxICJub3R0YWtlbiIpIHsKKysJCQkJCSRjID0gMDsKKysJCQkJfSBlbHNlIHsKKysJCQkJCSRjID0gIi0iOworKwkJCQl9CisrCQkJCXByaW50KCRmZCAiQlJEQTokMSwwLCRicmFuY2hfbnVtLCRjXG4iKTsKKysJCQkJJGJyYW5jaF9udW0rKzsKKysJCQl9CisrCQl9CisrCQlwcmludCgkZmQgImVuZF9vZl9yZWNvcmRcbiIpOworKwl9CisrfQorKworKworK3N1YiBnZXRfb3V0cHV0X2ZkKCQkKQorK3sKKysJbXkgKCRvdXRmaWxlLCAkZmlsZSkgPSBAXzsKKysJbXkgJGZkOworKworKwlpZiAoIWRlZmluZWQoJG91dGZpbGUpKSB7CisrCQlvcGVuKCRmZCwgIj4iLCAiJGZpbGUuaW5mbyIpIG9yCisrCQkJZGllKCJFUlJPUjogQ2Fubm90IGNyZWF0ZSBmaWxlICRmaWxlLmluZm86ICQhXG4iKTsKKysJfSBlbHNpZiAoJG91dGZpbGUgZXEgIi0iKSB7CisrCQlvcGVuKCRmZCwgIj4mU1RET1VUIikgb3IKKysJCQlkaWUoIkVSUk9SOiBDYW5ub3QgZHVwbGljYXRlIHN0ZG91dDogJCFcbiIpOworKwl9IGVsc2UgeworKwkJb3BlbigkZmQsICI+PiIsICRvdXRmaWxlKSBvcgorKwkJCWRpZSgiRVJST1I6IENhbm5vdCB3cml0ZSB0byBmaWxlICRvdXRmaWxlOiAkIVxuIik7CisrCX0KKysKKysJcmV0dXJuICRmZDsKKyt9CisrCisrCisrIworKyMgcHJpbnRfZ2Nvdl93YXJuaW5ncyhzdGRlcnJfZmlsZSwgaXNfZ3JhcGgsIG1hcCkKKysjCisrIyBQcmludCBHQ09WIHdhcm5pbmdzIGluIGZpbGUgU1RERVJSX0ZJTEUgdG8gU1RERVJSLiBJZiBJU19HUkFQSCBpcyBub24temVybywKKysjIHN1cHByZXNzIHdhcm5pbmdzIGFib3V0IG1pc3NpbmcgYXMgdGhlc2UgYXJlIGV4cGVjdGVkLiBSZXBsYWNlIGtleXMgZm91bmQKKysjIGluIE1BUCB3aXRoIHRoZWlyIHZhbHVlcy4KKysjCisrCisrc3ViIHByaW50X2djb3Zfd2FybmluZ3MoJCQkKQorK3sKKysJbXkgKCRzdGRlcnJfZmlsZSwgJGlzX2dyYXBoLCAkbWFwKSA9IEBfOworKwlteSAkZmQ7CisrCisrCWlmICghb3BlbigkZmQsICI8IiwgJHN0ZGVycl9maWxlKSkgeworKwkJd2FybigiV0FSTklORzogQ291bGQgbm90IG9wZW4gR0NPViBzdGRlcnIgZmlsZSAiLgorKwkJICAgICAiJHN0ZGVycl9maWxlOiAkIVxuIik7CisrCQlyZXR1cm47CisrCX0KKysJd2hpbGUgKG15ICRsaW5lID0gPCRmZD4pIHsKKysJCW5leHQgaWYgKCRpc19ncmFwaCAmJiAkbGluZSA9fiAvY2Fubm90IG9wZW4gZGF0YSBmaWxlLyk7CisrCisrCQlmb3IgbXkgJGtleSAoa2V5cygleyRtYXB9KSkgeworKwkJCSRsaW5lID1+IHMvXFEka2V5XEUvJG1hcC0+eyRrZXl9L2c7CisrCQl9CisrCisrCQlwcmludChTVERFUlIgJGxpbmUpOworKwl9CisrCWNsb3NlKCRmZCk7CisrfQorKworKworKyMKKysjIHByb2Nlc3NfaW50ZXJtZWRpYXRlKGZpbGUsIGRpciwgdGVtcGRpcikKKysjCisrIyBDcmVhdGUgb3V0cHV0IGZvciBhIHNpbmdsZSBmaWxlIChlaXRoZXIgYSBkYXRhIGZpbGUgb3IgYSBncmFwaCBmaWxlKSB1c2luZworKyMgZ2NvdidzIGludGVybWVkaWF0ZSBvcHRpb24uCisrIworKworK3N1YiBwcm9jZXNzX2ludGVybWVkaWF0ZSgkJCQpCisreworKwlteSAoJGZpbGUsICRkaXIsICR0ZW1wZGlyKSA9IEBfOworKwlteSAoJGZkaXIsICRmYmFzZSwgJGZleHQpOworKwlteSAkZGF0YV9maWxlOworKwlteSAkZXJybXNnOworKwlteSAlZGF0YTsKKysJbXkgJGZkOworKwlteSAkYmFzZTsKKysJbXkgJHNyY2RhdGE7CisrCW15ICRpc19ncmFwaCA9IDA7CisrCW15ICgkb3V0LCAkZXJyLCAkcmMpOworKworKwlpbmZvKCJQcm9jZXNzaW5nICVzXG4iLCBhYnMycmVsKCRmaWxlLCAkZGlyKSk7CisrCisrCSRmaWxlID0gc29sdmVfcmVsYXRpdmVfcGF0aCgkY3dkLCAkZmlsZSk7CisrCSgkZmRpciwgJGZiYXNlLCAkZmV4dCkgPSBzcGxpdF9maWxlbmFtZSgkZmlsZSk7CisrCisrCSRpc19ncmFwaCA9IDEgaWYgKCIuJGZleHQiIGVxICRncmFwaF9maWxlX2V4dGVuc2lvbik7CisrCisrCWlmICgkaXNfZ3JhcGgpIHsKKysJCSMgUHJvY2VzcyBncmFwaCBmaWxlIC0gY29weSB0byB0ZW1wIGRpcmVjdG9yeSB0byBwcmV2ZW50CisrCQkjIGFjY2lkZW50YWwgcHJvY2Vzc2luZyBvZiBhc3NvY2lhdGVkIGRhdGEgZmlsZQorKwkJJGRhdGFfZmlsZSA9ICIkdGVtcGRpci8kZmJhc2UkZ3JhcGhfZmlsZV9leHRlbnNpb24iOworKwkJaWYgKCFjb3B5KCRmaWxlLCAkZGF0YV9maWxlKSkgeworKwkJCSRlcnJtc2cgPSAiRVJST1I6IENvdWxkIG5vdCBjb3B5IGZpbGUgJGZpbGUiOworKwkJCWdvdG8gZXJyOworKwkJfQorKwl9IGVsc2UgeworKwkJIyBQcm9jZXNzIGRhdGEgZmlsZSBpbiBwbGFjZQorKwkJJGRhdGFfZmlsZSA9ICRmaWxlOworKwl9CisrCisrCSMgQ2hhbmdlIGRpcmVjdG9yeQorKwlpZiAoIWNoZGlyKCR0ZW1wZGlyKSkgeworKwkJJGVycm1zZyA9ICJDb3VsZCBub3QgY2hhbmdlIHRvIGRpcmVjdG9yeSAkdGVtcGRpcjogJCEiOworKwkJZ290byBlcnI7CisrCX0KKysKKysJIyBSdW4gZ2NvdiBvbiBkYXRhIGZpbGUKKysJKCRvdXQsICRlcnIsICRyYykgPSBzeXN0ZW1fbm9fb3V0cHV0KDEgKyAyICsgNCwgJGdjb3ZfdG9vbCwKKysJCQkJCSAgICAgJGRhdGFfZmlsZSwgQGdjb3Zfb3B0aW9ucywgIi1pIik7CisrCWRlZmluZWQoJG91dCkgJiYgdW5saW5rKCRvdXQpOworKwlpZiAoZGVmaW5lZCgkZXJyKSkgeworKwkJcHJpbnRfZ2Nvdl93YXJuaW5ncygkZXJyLCAkaXNfZ3JhcGgsIHsKKysJCQkkZGF0YV9maWxlID0+ICRmaWxlLAorKwkJfSk7CisrCQl1bmxpbmsoJGVycik7CisrCX0KKysJaWYgKCRyYykgeworKwkJJGVycm1zZyA9ICJHQ09WIGZhaWxlZCBmb3IgJGZpbGUiOworKwkJZ290byBlcnI7CisrCX0KKysKKysJaWYgKCRpc19ncmFwaCkgeworKwkJIyBSZW1vdmUgZ3JhcGggZmlsZSBjb3B5CisrCQl1bmxpbmsoJGRhdGFfZmlsZSk7CisrCX0KKysKKysJIyBQYXJzZSByZXN1bHRpbmcgZmlsZShzKQorKwlmb3IgbXkgJGdjb3ZfZmlsZW5hbWUgKGdsb2IoIiouZ2NvdiIpKSB7CisrCQlyZWFkX2ludGVybWVkaWF0ZV90ZXh0KCRnY292X2ZpbGVuYW1lLCBcJWRhdGEpOworKwkJdW5saW5rKCRnY292X2ZpbGVuYW1lKTsKKysJfQorKworKwlpZiAoISVkYXRhKSB7CisrCQl3YXJuKCJXQVJOSU5HOiBHQ09WIGRpZCBub3QgcHJvZHVjZSBhbnkgZGF0YSBmb3IgJGZpbGVcbiIpOworKwkJcmV0dXJuOworKwl9CisrCisrCSMgRGV0ZXJtaW5lIGJhc2UgZGlyZWN0b3J5CisrCWlmIChkZWZpbmVkKCRiYXNlX2RpcmVjdG9yeSkpIHsKKysJCSRiYXNlID0gJGJhc2VfZGlyZWN0b3J5OworKwl9IGVsc2UgeworKwkJJGJhc2UgPSAkZmRpcjsKKysKKysJCWlmIChpc19jb21wYXQoJENPTVBBVF9NT0RFX0xJQlRPT0wpKSB7CisrCQkJIyBBdm9pZCBmaWxlcyBmcm9tIC5saWJzIGRpcnMKKysJCQkkYmFzZSA9fiBzL1wubGlicyQvLzsKKysJCX0KKysKKysJCSMgVHJ5IHRvIGZpbmQgYmFzZSBkaXJlY3RvcnkgYXV0b21hdGljYWxseSBpZiByZXF1ZXN0ZWQgYnkgdXNlcgorKwkJaWYgKCRyY19hdXRvX2Jhc2UpIHsKKysJCQkkYmFzZSA9IGZpbmRfYmFzZV9mcm9tX3NvdXJjZSgkYmFzZSwgWyBrZXlzKCVkYXRhKSBdKTsKKysJCX0KKysJfQorKworKwkjIEFwcGx5IGJhc2UgZmlsZSBuYW1lIHRvIHJlbGF0aXZlIHNvdXJjZSBmaWxlcworKwlhZGp1c3Rfc291cmNlX2ZpbGVuYW1lcyhcJWRhdGEsICRiYXNlKTsKKysKKysJIyBSZW1vdmUgZXhjbHVkZWQgc291cmNlIGZpbGVzCisrCWZpbHRlcl9zb3VyY2VfZmlsZXMoXCVkYXRhKTsKKysKKysJIyBHZXQgZGF0YSBvbiBleGNsdXNpb24gbWFya2VycyBhbmQgY2hlY2tzdW1zIGlmIHJlcXVlc3RlZAorKwlpZiAoISRub19tYXJrZXJzIHx8ICRjaGVja3N1bSkgeworKwkJJHNyY2RhdGEgPSBnZXRfYWxsX3NvdXJjZV9kYXRhKGtleXMoJWRhdGEpKTsKKysJfQorKworKwkjIEdlbmVyYXRlIG91dHB1dAorKwkkZmQgPSBnZXRfb3V0cHV0X2ZkKCRvdXRwdXRfZmlsZW5hbWUsICRmaWxlKTsKKysJaW50ZXJtZWRpYXRlX3RleHRfdG9faW5mbygkZmQsIFwlZGF0YSwgJHNyY2RhdGEpOworKwljbG9zZSgkZmQpOworKworKwljaGRpcigkY3dkKTsKKysKKysJcmV0dXJuOworKworK2VycjoKKysJaWYgKCRpZ25vcmVbJEVSUk9SX0dDT1ZdKSB7CisrCQl3YXJuKCJXQVJOSU5HOiAkZXJybXNnIVxuIik7CisrCX0gZWxzZSB7CisrCQlkaWUoIkVSUk9SOiAkZXJybXNnIVxuIikKKysJfQorK30KKysKKysKKyAjIE1hcCBMTFZNIHZlcnNpb25zIHRvIHRoZSB2ZXJzaW9uIG9mIEdDQyBnY292IHdoaWNoIHRoZXkgZW11bGF0ZS4KKyAKKyBzdWIgbWFwX2xsdm1fdmVyc2lvbigkKQorQEAgLTIxNTEsOCArMjQ4MSwxMiBAQCBzdWIgaW50X2hhbmRsZXIoKQorICMKKyAjICAgTU9ERSAmIDE6IHN1cHByZXNzIFNURE9VVAorICMgICBNT0RFICYgMjogc3VwcHJlc3MgU1RERVJSCisrIyAgIE1PREUgJiA0OiByZWRpcmVjdCB0byB0ZW1wb3JhcnkgZmlsZXMgaW5zdGVhZCBvZiBzdXBwcmVzc2luZworICMKKy0jIFJldHVybiAwIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG90aGVyd2lzZS4KKysjIFJldHVybiAoc3Rkb3V0LCBzdGRlcnIsIHJjKToKKysjICAgIHN0ZG91dDogcGF0aCB0byB0ZW1wZmlsZSBjb250YWluaW5nIHN0ZG91dCBvciB1bmRlZgorKyMgICAgc3RkZXJyOiBwYXRoIHRvIHRlbXBmaWxlIGNvbnRhaW5pbmcgc3RkZXJyIG9yIHVuZGVmCisrIyAgICAwIG9uIHN1Y2Nlc3MsIG5vbi16ZXJvIG90aGVyd2lzZQorICMKKyAKKyBzdWIgc3lzdGVtX25vX291dHB1dCgkQCkKK0BAIC0yMTYxLDE0ICsyNDk1LDMxIEBAIHN1YiBzeXN0ZW1fbm9fb3V0cHV0KCRAKQorIAlteSAkcmVzdWx0OworIAlsb2NhbCAqT0xEX1NUREVSUjsKKyAJbG9jYWwgKk9MRF9TVERPVVQ7CisrCW15ICRzdGRvdXRfZmlsZTsKKysJbXkgJHN0ZGVycl9maWxlOworKwlteSAkZmQ7CisgCisgCSMgU2F2ZSBvbGQgc3Rkb3V0IGFuZCBzdGRlcnIgaGFuZGxlcworIAkoJG1vZGUgJiAxKSAmJiBvcGVuKE9MRF9TVERPVVQsICI+PiYiLCAiU1RET1VUIik7CisgCSgkbW9kZSAmIDIpICYmIG9wZW4oT0xEX1NUREVSUiwgIj4+JiIsICJTVERFUlIiKTsKKyAKKy0JIyBSZWRpcmVjdCB0byAvZGV2L251bGwKKy0JKCRtb2RlICYgMSkgJiYgb3BlbihTVERPVVQsICI+IiwgIi9kZXYvbnVsbCIpOworLQkoJG1vZGUgJiAyKSAmJiBvcGVuKFNUREVSUiwgIj4iLCAiL2Rldi9udWxsIik7CisrCWlmICgkbW9kZSAmIDQpIHsKKysJCSMgUmVkaXJlY3QgdG8gdGVtcG9yYXJ5IGZpbGVzCisrCQlpZiAoJG1vZGUgJiAxKSB7CisrCQkJKCRmZCwgJHN0ZG91dF9maWxlKSA9IHRlbXBmaWxlKFVOTElOSyA9PiAxKTsKKysJCQlvcGVuKFNURE9VVCwgIj4iLCAkc3Rkb3V0X2ZpbGUpIHx8IHdhcm4oIiQhXG4iKTsKKysJCQljbG9zZSgkZmQpOworKwkJfQorKwkJaWYgKCRtb2RlICYgMikgeworKwkJCSgkZmQsICRzdGRlcnJfZmlsZSkgPSB0ZW1wZmlsZShVTkxJTksgPT4gMSk7CisrCQkJb3BlbihTVERFUlIsICI+IiwgJHN0ZGVycl9maWxlKSB8fCB3YXJuKCIkIVxuIik7CisrCQkJY2xvc2UoJGZkKTsKKysJCX0KKysJfSBlbHNlIHsKKysJCSMgUmVkaXJlY3QgdG8gL2Rldi9udWxsCisrCQkoJG1vZGUgJiAxKSAmJiBvcGVuKFNURE9VVCwgIj4iLCAiL2Rldi9udWxsIik7CisrCQkoJG1vZGUgJiAyKSAmJiBvcGVuKFNUREVSUiwgIj4iLCAiL2Rldi9udWxsIik7CisrCX0KKyAgCisgCWRlYnVnKCJzeXN0ZW0oIi5qb2luKCcgJywgQF8pLiIpXG4iKTsKKyAJc3lzdGVtKEBfKTsKK0BAIC0yMTgxLDggKzI1MzIsMTggQEAgc3ViIHN5c3RlbV9ub19vdXRwdXQoJEApCisgCSMgUmVzdG9yZSBvbGQgaGFuZGxlcworIAkoJG1vZGUgJiAxKSAmJiBvcGVuKFNURE9VVCwgIj4+JiIsICJPTERfU1RET1VUIik7CisgCSgkbW9kZSAmIDIpICYmIG9wZW4oU1RERVJSLCAiPj4mIiwgIk9MRF9TVERFUlIiKTsKKysKKysJIyBSZW1vdmUgZW1wdHkgb3V0cHV0IGZpbGVzCisrCWlmIChkZWZpbmVkKCRzdGRvdXRfZmlsZSkgJiYgLXogJHN0ZG91dF9maWxlKSB7CisrCQl1bmxpbmsoJHN0ZG91dF9maWxlKTsKKysJCSRzdGRvdXRfZmlsZSA9IHVuZGVmOworKwl9CisrCWlmIChkZWZpbmVkKCRzdGRlcnJfZmlsZSkgJiYgLXogJHN0ZGVycl9maWxlKSB7CisrCQl1bmxpbmsoJHN0ZGVycl9maWxlKTsKKysJCSRzdGRlcnJfZmlsZSA9IHVuZGVmOworKwl9CisgIAorLQlyZXR1cm4gJHJlc3VsdDsKKysJcmV0dXJuICgkc3Rkb3V0X2ZpbGUsICRzdGRlcnJfZmlsZSwgJHJlc3VsdCk7CisgfQorIAorIAorQEAgLTIyNjAsMjMgKzI2MjEsMjggQEAgc3ViIGFwcGx5X2NvbmZpZygkKQorIAorIAorICMKKy0jIGdldF9leGNsdXNpb25fZGF0YShmaWxlbmFtZSkKKysjIGdldF9zb3VyY2VfZGF0YShmaWxlbmFtZSkKKyAjCistIyBTY2FuIHNwZWNpZmllZCBzb3VyY2UgY29kZSBmaWxlIGZvciBleGNsdXNpb24gbWFya2VycyBhbmQgcmV0dXJuCistIyAgIGxpbmVudW1iZXIgLT4gMQorLSMgZm9yIGFsbCBsaW5lcyB3aGljaCBzaG91bGQgYmUgZXhjbHVkZWQuCisrIyBTY2FuIHNwZWNpZmllZCBzb3VyY2UgY29kZSBmaWxlIGZvciBleGNsdXNpb24gbWFya2VycyBhbmQgY2hlY2tzdW1zLiBSZXR1cm4KKysjICAgKCBleGNsLCBicmV4Y2wsIGNoZWNrc3VtcyApIHdoZXJlCisrIyAgIGV4Y2w6ICAgICAgbGluZW5vIC0+IDEgZm9yIGFsbCBsaW5lcyBmb3Igd2hpY2ggdG8gZXhjbHVkZSBhbGwgZGF0YQorKyMgICBicmV4Y2w6ICAgIGxpbmVubyAtPiAxIGZvciBhbGwgbGluZXMgZm9yIHdoaWNoIHRvIGV4Y2x1ZGUgYnJhbmNoIGRhdGEKKysjICAgY2hlY2tzdW1zOiBsaW5lbm8gLT4gc291cmNlIGNvZGUgY2hlY2tzdW0KKyAjCisgCistc3ViIGdldF9leGNsdXNpb25fZGF0YSgkKQorK3N1YiBnZXRfc291cmNlX2RhdGEoJCkKKyB7CisgCW15ICgkZmlsZW5hbWUpID0gQF87CisgCW15ICVsaXN0OworIAlteSAkZmxhZyA9IDA7CisrCW15ICVicmRhdGE7CisrCW15ICRicmZsYWcgPSAwOworKwlteSAlY2hlY2tzdW1zOworIAlsb2NhbCAqSEFORExFOworIAorIAlpZiAoIW9wZW4oSEFORExFLCAiPCIsICRmaWxlbmFtZSkpIHsKKyAJCXdhcm4oIldBUk5JTkc6IGNvdWxkIG5vdCBvcGVuICRmaWxlbmFtZVxuIik7CistCQlyZXR1cm4gdW5kZWY7CisrCQlyZXR1cm47CisgCX0KKyAJd2hpbGUgKDxIQU5ETEU+KSB7CisgCQlpZiAoLyRFWENMX1NUT1AvKSB7CitAQCAtMjI4NywxNCArMjY1Myw2MiBAQCBzdWIgZ2V0X2V4Y2x1c2lvbl9kYXRhKCQpCisgCQlpZiAoLyRleGNsX2xpbmUvIHx8ICRmbGFnKSB7CisgCQkJJGxpc3R7JC59ID0gMTsKKyAJCX0KKysJCWlmICgvJEVYQ0xfQlJfU1RPUC8pIHsKKysJCQkkYnJmbGFnID0gMDsKKysJCX0gZWxzaWYgKC8kRVhDTF9CUl9TVEFSVC8pIHsKKysJCQkkYnJmbGFnID0gMTsKKysJCX0KKysJCWlmICgvJGV4Y2xfYnJfbGluZS8gfHwgJGJyZmxhZykgeworKwkJCSRicmRhdGF7JC59ID0gMTsKKysJCX0KKysJCWlmICgkY2hlY2tzdW0pIHsKKysJCQljaG9tcCgpOworKwkJCSRjaGVja3N1bXN7JC59ID0gbWQ1X2Jhc2U2NCgkXyk7CisrCQl9CisgCX0KKyAJY2xvc2UoSEFORExFKTsKKyAKKy0JaWYgKCRmbGFnKSB7CisrCWlmICgkZmxhZyB8fCAkYnJmbGFnKSB7CisgCQl3YXJuKCJXQVJOSU5HOiB1bnRlcm1pbmF0ZWQgZXhjbHVzaW9uIHNlY3Rpb24gaW4gJGZpbGVuYW1lXG4iKTsKKyAJfQorIAorLQlyZXR1cm4gXCVsaXN0OworKwlyZXR1cm4gKFwlbGlzdCwgXCVicmRhdGEsIFwlY2hlY2tzdW1zKTsKKyt9CisrCisrCisrIworKyMgZ2V0X2FsbF9zb3VyY2VfZGF0YShmaWxlbmFtZXMpCisrIworKyMgU2NhbiBzcGVjaWZpZWQgc291cmNlIGNvZGUgZmlsZXMgZm9yIGV4Y2x1c2lvbiBtYXJrZXJzIGFuZCByZXR1cm4KKysjICAgZmlsZW5hbWUgLT4gWyBleGNsLCBicmV4Y2wsIGNoZWNrc3VtcyBdCisrIyAgIGV4Y2w6ICAgICAgbGluZW5vIC0+IDEgZm9yIGFsbCBsaW5lcyBmb3Igd2hpY2ggdG8gZXhjbHVkZSBhbGwgZGF0YQorKyMgICBicmV4Y2w6ICAgIGxpbmVubyAtPiAxIGZvciBhbGwgbGluZXMgZm9yIHdoaWNoIHRvIGV4Y2x1ZGUgYnJhbmNoIGRhdGEKKysjICAgY2hlY2tzdW1zOiBsaW5lbm8gLT4gc291cmNlIGNvZGUgY2hlY2tzdW0KKysjCisrCisrc3ViIGdldF9hbGxfc291cmNlX2RhdGEoQCkKKyt7CisrCW15IEBmaWxlbmFtZXMgPSBAXzsKKysJbXkgJWRhdGE7CisrCW15ICRmYWlsZWQgPSAwOworKworKwlmb3IgbXkgJGZpbGVuYW1lIChAZmlsZW5hbWVzKSB7CisrCQlteSBAZDsKKysJCW5leHQgaWYgKGV4aXN0cygkZGF0YXskZmlsZW5hbWV9KSk7CisrCisrCQlAZCA9IGdldF9zb3VyY2VfZGF0YSgkZmlsZW5hbWUpOworKwkJaWYgKEBkKSB7CisrCQkJJGRhdGF7JGZpbGVuYW1lfSA9IFsgQGQgXTsKKysJCX0gZWxzZSB7CisrCQkJJGZhaWxlZCA9IDE7CisrCQl9CisrCX0KKysKKysJaWYgKCRmYWlsZWQpIHsKKysJCXdhcm4oIldBUk5JTkc6IHNvbWUgZXhjbHVzaW9uIG1hcmtlcnMgbWF5IGJlIGlnbm9yZWRcbiIpOworKwl9CisrCisrCXJldHVybiBcJWRhdGE7CisgfQorIAorIAorQEAgLTIzMTgsMzUgKzI3MzIsMTcgQEAgc3ViIGFwcGx5X2V4Y2x1c2lvbl9kYXRhKCQkKQorIHsKKyAJbXkgKCRpbnN0ciwgJGdyYXBoKSA9IEBfOworIAlteSAkZmlsZW5hbWU7CistCW15ICVleGNsX2RhdGE7CistCW15ICRleGNsX3JlYWRfZmFpbGVkID0gMDsKKysJbXkgJGV4Y2xfZGF0YTsKKyAKKy0JIyBDb2xsZWN0IGV4Y2x1c2lvbiBtYXJrZXIgZGF0YQorLQlmb3JlYWNoICRmaWxlbmFtZSAoc29ydF91bmlxX2xleChrZXlzKCV7JGdyYXBofSksIGtleXMoJXskaW5zdHJ9KSkpIHsKKy0JCW15ICRleGNsID0gZ2V0X2V4Y2x1c2lvbl9kYXRhKCRmaWxlbmFtZSk7CistCistCQkjIFNraXAgYW5kIG5vdGUgaWYgZmlsZSBjb3VsZCBub3QgYmUgcmVhZAorLQkJaWYgKCFkZWZpbmVkKCRleGNsKSkgeworLQkJCSRleGNsX3JlYWRfZmFpbGVkID0gMTsKKy0JCQluZXh0OworLQkJfQorLQorLQkJIyBBZGQgdG8gY29sbGVjdGlvbiBpZiB0aGVyZSBhcmUgbWFya2VycworLQkJJGV4Y2xfZGF0YXskZmlsZW5hbWV9ID0gJGV4Y2wgaWYgKGtleXMoJXskZXhjbH0pID4gMCk7CistCX0KKy0KKy0JIyBXYXJuIGlmIG5vdCBhbGwgc291cmNlIGZpbGVzIGNvdWxkIGJlIHJlYWQKKy0JaWYgKCRleGNsX3JlYWRfZmFpbGVkKSB7CistCQl3YXJuKCJXQVJOSU5HOiBzb21lIGV4Y2x1c2lvbiBtYXJrZXJzIG1heSBiZSBpZ25vcmVkXG4iKTsKKy0JfQorKwkoJGV4Y2xfZGF0YSkgPSBnZXRfYWxsX3NvdXJjZV9kYXRhKGtleXMoJXskZ3JhcGh9KSwga2V5cygleyRpbnN0cn0pKTsKKyAKKyAJIyBTa2lwIGlmIG5vIG1hcmtlcnMgd2VyZSBmb3VuZAorLQlyZXR1cm4gKCRpbnN0ciwgJGdyYXBoKSBpZiAoa2V5cyglZXhjbF9kYXRhKSA9PSAwKTsKKysJcmV0dXJuICgkaW5zdHIsICRncmFwaCkgaWYgKCElJGV4Y2xfZGF0YSk7CisgCisgCSMgQXBwbHkgZXhjbHVzaW9uIG1hcmtlciBkYXRhIHRvIGdyYXBoCistCWZvcmVhY2ggJGZpbGVuYW1lIChrZXlzKCVleGNsX2RhdGEpKSB7CisrCWZvcmVhY2ggJGZpbGVuYW1lIChrZXlzKCUkZXhjbF9kYXRhKSkgeworIAkJbXkgJGZ1bmN0aW9uX2RhdGEgPSAkZ3JhcGgtPnskZmlsZW5hbWV9OworLQkJbXkgJGV4Y2wgPSAkZXhjbF9kYXRheyRmaWxlbmFtZX07CisrCQlteSAkZXhjbCA9ICRleGNsX2RhdGEtPnskZmlsZW5hbWV9LT5bMF07CisgCQlteSAkZnVuY3Rpb247CisgCisgCQluZXh0IGlmICghZGVmaW5lZCgkZnVuY3Rpb25fZGF0YSkpOworQEAgLTIzODQsOSArMjc4MCw5IEBAIHN1YiBhcHBseV9leGNsdXNpb25fZGF0YSgkJCkKKyAJfQorIAorIAkjIEFwcGx5IGV4Y2x1c2lvbiBtYXJrZXIgZGF0YSB0byBpbnN0cgorLQlmb3JlYWNoICRmaWxlbmFtZSAoa2V5cyglZXhjbF9kYXRhKSkgeworKwlmb3JlYWNoICRmaWxlbmFtZSAoa2V5cyglJGV4Y2xfZGF0YSkpIHsKKyAJCW15ICRsaW5lX2RhdGEgPSAkaW5zdHItPnskZmlsZW5hbWV9OworLQkJbXkgJGV4Y2wgPSAkZXhjbF9kYXRheyRmaWxlbmFtZX07CisrCQlteSAkZXhjbCA9ICRleGNsX2RhdGEtPnskZmlsZW5hbWV9LT5bMF07CisgCQlteSAkbGluZTsKKyAJCW15IEBuZXdfZGF0YTsKKyAKK0BAIC0yNDY4LDEwICsyODY0LDEyIEBAIHN1YiBwcm9jZXNzX2dyYXBoZmlsZSgkJCkKKyAKKyAJIyBUcnkgdG8gZmluZCBiYXNlIGRpcmVjdG9yeSBhdXRvbWF0aWNhbGx5IGlmIHJlcXVlc3RlZCBieSB1c2VyCisgCWlmICgkcmNfYXV0b19iYXNlKSB7CistCQkkYmFzZV9kaXIgPSBmaW5kX2Jhc2VfZnJvbV9ncmFwaCgkYmFzZV9kaXIsICRpbnN0ciwgJGdyYXBoKTsKKysJCSRiYXNlX2RpciA9IGZpbmRfYmFzZV9mcm9tX3NvdXJjZSgkYmFzZV9kaXIsCisrCQkJWyBrZXlzKCV7JGluc3RyfSksIGtleXMoJXskZ3JhcGh9KSBdKTsKKyAJfQorIAorLQkoJGluc3RyLCAkZ3JhcGgpID0gYWRqdXN0X2dyYXBoX2ZpbGVuYW1lcygkYmFzZV9kaXIsICRpbnN0ciwgJGdyYXBoKTsKKysJYWRqdXN0X3NvdXJjZV9maWxlbmFtZXMoJGluc3RyLCAkYmFzZV9kaXIpOworKwlhZGp1c3Rfc291cmNlX2ZpbGVuYW1lcygkZ3JhcGgsICRiYXNlX2Rpcik7CisgCisgCWlmICghJG5vX21hcmtlcnMpIHsKKyAJCSMgQXBwbHkgZXhjbHVzaW9uIG1hcmtlciBkYXRhIHRvIGdyYXBoIGZpbGUgZGF0YQorQEAgLTI3NjcsMTEgKzMxNjUsMTEgQEAgc3ViIHBhcmVudF9kaXIoJCkKKyB9CisgCisgIworLSMgZmluZF9iYXNlX2Zyb21fZ3JhcGgoYmFzZV9kaXIsIGluc3RyLCBncmFwaCkKKysjIGZpbmRfYmFzZV9mcm9tX3NvdXJjZShiYXNlX2Rpciwgc291cmNlX2ZpbGVzKQorICMKKy0jIFRyeSB0byBkZXRlcm1pbmUgdGhlIGJhc2UgZGlyZWN0b3J5IG9mIHRoZSBncmFwaCBmaWxlIHNwZWNpZmllZCBieSBJTlNUUgorLSMgYW5kIEdSQVBILiBUaGUgYmFzZSBkaXJlY3RvcnkgaXMgdGhlIGJhc2UgZm9yIGFsbCByZWxhdGl2ZSBmaWxlbmFtZXMgaW4KKy0jIHRoZSBncmFwaCBmaWxlLiBJdCBpcyBkZWZpbmVkIGJ5IHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5IGF0IHRpbWUKKysjIFRyeSB0byBkZXRlcm1pbmUgdGhlIGJhc2UgZGlyZWN0b3J5IG9mIHRoZSBvYmplY3QgZmlsZSBidWlsdCBmcm9tCisrIyBTT1VSQ0VfRklMRVMuIFRoZSBiYXNlIGRpcmVjdG9yeSBpcyB0aGUgYmFzZSBmb3IgYWxsIHJlbGF0aXZlIGZpbGVuYW1lcyBpbgorKyMgdGhlIGdjb3YgZGF0YS4gSXQgaXMgZGVmaW5lZCBieSB0aGUgY3VycmVudCB3b3JraW5nIGRpcmVjdG9yeSBhdCB0aW1lCisgIyBvZiBjb21waWxpbmcgdGhlIHNvdXJjZSBmaWxlLgorICMKKyAjIFRoaXMgZnVuY3Rpb24gaW1wbGVtZW50cyBhIGhldXJpc3RpYyB3aGljaCByZWxpZXMgb24gdGhlIGZvbGxvd2luZworQEAgLTI3ODEsMTYgKzMxNzksMTYgQEAgc3ViIHBhcmVudF9kaXIoJCkKKyAjIC0gZmlsZXMgYnkgdGhlIHNhbWUgbmFtZSBhcmUgbm90IHByZXNlbnQgaW4gbXVsdGlwbGUgcGFyZW50IGRpcmVjdG9yaWVzCisgIworIAorLXN1YiBmaW5kX2Jhc2VfZnJvbV9ncmFwaCgkJCQpCisrc3ViIGZpbmRfYmFzZV9mcm9tX3NvdXJjZSgkJCkKKyB7CistCW15ICgkYmFzZV9kaXIsICRpbnN0ciwgJGdyYXBoKSA9IEBfOworKwlteSAoJGJhc2VfZGlyLCAkc291cmNlX2ZpbGVzKSA9IEBfOworIAlteSAkb2xkX2Jhc2U7CisgCW15ICRiZXN0X21pc3M7CisgCW15ICRiZXN0X2Jhc2U7CisgCW15ICVyZWxfZmlsZXM7CisgCisgCSMgRGV0ZXJtaW5lIGxpc3Qgb2YgcmVsYXRpdmUgcGF0aHMKKy0JZm9yZWFjaCBteSAkZmlsZW5hbWUgKGtleXMoJXskaW5zdHJ9KSwga2V5cygleyRncmFwaH0pKSB7CisrCWZvcmVhY2ggbXkgJGZpbGVuYW1lIChAJHNvdXJjZV9maWxlcykgeworIAkJbmV4dCBpZiAoZmlsZV9uYW1lX2lzX2Fic29sdXRlKCRmaWxlbmFtZSkpOworIAorIAkJJHJlbF9maWxlc3skZmlsZW5hbWV9ID0gMTsKK0BAIC0yODI5LDE3ICszMjI3LDE3IEBAIHN1YiBmaW5kX2Jhc2VfZnJvbV9ncmFwaCgkJCQpCisgfQorIAorICMKKy0jIGFkanVzdF9ncmFwaF9maWxlbmFtZXMoYmFzZV9kaXIsIGluc3RyLCBncmFwaCkKKysjIGFkanVzdF9zb3VyY2VfZmlsZW5hbWVzKGhhc2gsIGJhc2VfZGlyKQorICMKKy0jIE1ha2UgcmVsYXRpdmUgcGF0aHMgaW4gSU5TVFIgYW5kIEdSQVBIIGFic29sdXRlIGFuZCBhcHBseQorLSMgZ2VuaW5mb19hZGp1c3Rfc3JjX3BhdGggc2V0dGluZyB0byBncmFwaCBmaWxlIGRhdGEuCisrIyBUcmFuc2Zvcm0gYWxsIGtleXMgb2YgSEFTSCB0byBhYnNvbHV0ZSBmb3JtIGFuZCBhcHBseSByZXF1ZXN0ZWQKKysjIHRyYW5zZm9ybWF0aW9ucy4KKyAjCisgCistc3ViIGFkanVzdF9ncmFwaF9maWxlbmFtZXMoJCQkKQorK3N1YiBhZGp1c3Rfc291cmNlX2ZpbGVuYW1lcygkJCQpCisgeworLQlteSAoJGJhc2VfZGlyLCAkaW5zdHIsICRncmFwaCkgPSBAXzsKKysJbXkgKCRoYXNoLCAkYmFzZV9kaXIpID0gQF87CisgCistCWZvcmVhY2ggbXkgJGZpbGVuYW1lIChrZXlzKCV7JGluc3RyfSkpIHsKKysJZm9yZWFjaCBteSAkZmlsZW5hbWUgKGtleXMoJXskaGFzaH0pKSB7CisgCQlteSAkb2xkX2ZpbGVuYW1lID0gJGZpbGVuYW1lOworIAorIAkJIyBDb252ZXJ0IHRvIGFic29sdXRlIGNhbm9uaWNhbCBmb3JtCitAQCAtMjg1MSwyOCArMzI0OSw1MCBAQCBzdWIgYWRqdXN0X2dyYXBoX2ZpbGVuYW1lcygkJCQpCisgCQl9CisgCisgCQlpZiAoJGZpbGVuYW1lIG5lICRvbGRfZmlsZW5hbWUpIHsKKy0JCQkkaW5zdHItPnskZmlsZW5hbWV9ID0gZGVsZXRlKCRpbnN0ci0+eyRvbGRfZmlsZW5hbWV9KTsKKysJCQkkaGFzaC0+eyRmaWxlbmFtZX0gPSBkZWxldGUoJGhhc2gtPnskb2xkX2ZpbGVuYW1lfSk7CisgCQl9CisgCX0KKyt9CisgCistCWZvcmVhY2ggbXkgJGZpbGVuYW1lIChrZXlzKCV7JGdyYXBofSkpIHsKKy0JCW15ICRvbGRfZmlsZW5hbWUgPSAkZmlsZW5hbWU7CisgCistCQkjIE1ha2UgYWJzb2x1dGUKKy0JCSMgQ29udmVydCB0byBhYnNvbHV0ZSBjYW5vbmljYWwgZm9ybQorLQkJJGZpbGVuYW1lID0gc29sdmVfcmVsYXRpdmVfcGF0aCgkYmFzZV9kaXIsICRmaWxlbmFtZSk7CisrIworKyMgZmlsdGVyX3NvdXJjZV9maWxlcyhoYXNoKQorKyMKKysjIFJlbW92ZSB1bndhbnRlZCBzb3VyY2UgZmlsZSBkYXRhIGZyb20gSEFTSC4KKysjCisgCistCQkjIEFwcGx5IGFkanVzdG1lbnQKKy0JCWlmIChkZWZpbmVkKCRhZGp1c3Rfc3JjX3BhdHRlcm4pKSB7CistCQkJJGZpbGVuYW1lID1+IHMvJGFkanVzdF9zcmNfcGF0dGVybi8kYWRqdXN0X3NyY19yZXBsYWNlL2c7Cisrc3ViIGZpbHRlcl9zb3VyY2VfZmlsZXMoJCkKKyt7CisrCW15ICgkaGFzaCkgPSBAXzsKKysKKysJZm9yZWFjaCBteSAkZmlsZW5hbWUgKGtleXMoJXskaGFzaH0pKSB7CisrCQkjIFNraXAgZXh0ZXJuYWwgZmlsZXMgaWYgcmVxdWVzdGVkCisrCQlnb3RvIGRlbCBpZiAoISRvcHRfZXh0ZXJuYWwgJiYgaXNfZXh0ZXJuYWwoJGZpbGVuYW1lKSk7CisrCisrCQkjIEFwcGx5IGluY2x1ZGUgcGF0dGVybnMKKysJCWlmIChAaW5jbHVkZV9wYXR0ZXJucykgeworKwkJCW15ICRrZWVwOworKworKwkJCWZvcmVhY2ggbXkgJHBhdHRlcm4gKEBpbmNsdWRlX3BhdHRlcm5zKSB7CisrCQkJCWlmICgkZmlsZW5hbWUgPX4gKC9eJHBhdHRlcm4kLykpIHsKKysJCQkJCSRrZWVwID0gMTsKKysJCQkJCWxhc3Q7CisrCQkJCX0KKysJCQl9CisrCQkJZ290byBkZWwgaWYgKCEka2VlcCk7CisgCQl9CisgCistCQlpZiAoJGZpbGVuYW1lIG5lICRvbGRfZmlsZW5hbWUpIHsKKy0JCQkkZ3JhcGgtPnskZmlsZW5hbWV9ID0gZGVsZXRlKCRncmFwaC0+eyRvbGRfZmlsZW5hbWV9KTsKKysJCSMgQXBwbHkgZXhjbHVkZSBwYXR0ZXJucworKwkJZm9yZWFjaCBteSAkcGF0dGVybiAoQGV4Y2x1ZGVfcGF0dGVybnMpIHsKKysJCQlnb3RvIGRlbCBpZiAoJGZpbGVuYW1lID1+ICgvXiRwYXR0ZXJuJC8pKTsKKyAJCX0KKy0JfQorKwkJbmV4dDsKKyAKKy0JcmV0dXJuICgkaW5zdHIsICRncmFwaCk7CisrZGVsOgorKwkJIyBSZW1vdmUgZmlsZSBkYXRhCisrCQlkZWxldGUoJGhhc2gtPnskZmlsZW5hbWV9KTsKKysJCSRleGNsdWRlZF9maWxlc3skZmlsZW5hbWV9ID0gMTsKKysJfQorIH0KKyAKKyAjCitAQCAtMzc4NCw2ICs0MjA0LDcgQEAgc3ViIGdldF9nY292X2NhcGFiaWxpdGllcygpCisgCQknYycgPT4gJ2JyYW5jaC1jb3VudHMnLAorIAkJJ2YnID0+ICdmdW5jdGlvbi1zdW1tYXJpZXMnLAorIAkJJ2gnID0+ICdoZWxwJywKKysJCSdpJyA9PiAnaW50ZXJtZWRpYXRlLWZvcm1hdCcsCisgCQknbCcgPT4gJ2xvbmctZmlsZS1uYW1lcycsCisgCQknbicgPT4gJ25vLW91dHB1dCcsCisgCQknbycgPT4gJ29iamVjdC1kaXJlY3RvcnknLAorZGlmZiAtLWdpdCBhL2xjb3ZyYyBiL2xjb3ZyYworaW5kZXggNDBmMzY0Zi4uYmQ0YmMzYiAxMDA2NDQKKy0tLSBhL2xjb3ZyYworKysrIGIvbGNvdnJjCitAQCAtMTM0LDYgKzEzNCw5IEBAIGdlbmh0bWxfZGVzY19odG1sPTAKKyAjIHdoZW4gY29sbGVjdGluZyBjb3ZlcmFnZSBkYXRhLgorIGdlbmluZm9fYXV0b19iYXNlID0gMQorIAorKyMgVXNlIGdjb3YgaW50ZXJtZWRpYXRlIGZvcm1hdD8gVmFsaWQgdmFsdWVzIGFyZSAwLCAxLCBhdXRvCisrZ2VuaW5mb19pbnRlcm1lZGlhdGUgPSBhdXRvCisrCisgIyBEaXJlY3RvcnkgY29udGFpbmluZyBnY292IGtlcm5lbCBmaWxlcworICMgbGNvdl9nY292X2RpciA9IC9wcm9jL2djb3YKKyAKK2RpZmYgLS1naXQgYS9tYW4vbGNvdnJjLjUgYi9tYW4vbGNvdnJjLjUKK2luZGV4IGYyMGQyNzMuLmJmMGNlN2EgMTAwNjQ0CistLS0gYS9tYW4vbGNvdnJjLjUKKysrKyBiL21hbi9sY292cmMuNQorQEAgLTIyMyw2ICsyMjMsMTEgQEAgZ2VuaW5mb19jb21wYXRfbGlidG9vbCA9IDAKKyBnZW5pbmZvX2F1dG9fYmFzZSA9IDEKKyAuYnIKKyAKKysjIFVzZSBnY292IGludGVybWVkaWF0ZSBmb3JtYXQ/IFZhbGlkIHZhbHVlcyBhcmUgMCwgMSwgYXV0bworKy5icgorK2dlbmluZm9faW50ZXJtZWRpYXRlID0gYXV0bworKy5icgorKworICMgRGlyZWN0b3J5IGNvbnRhaW5pbmcgZ2NvdiBrZXJuZWwgZmlsZXMKKyAuYnIKKyBsY292X2djb3ZfZGlyID0gL3Byb2MvZ2NvdgorQEAgLTc4OSw2ICs3OTQsMjUgQEAgbG9jYXRlZCwgYW5kIGluIGFkZGl0aW9uLCBpcyBkaWZmZXJlbnQgYmV0d2VlbiBmaWxlcyBvZiB0aGUgc2FtZSBwcm9qZWN0LgorIERlZmF1bHQgaXMgMS4KKyAuUFAKKyAKKysuQlIgZ2VuaW5mb19pbnRlcm1lZGlhdGUgIiA9IgorKy5JUiAwIHwgMSB8IGF1dG8KKysuSVAKKytTcGVjaWZ5IHdoZXRoZXIgdG8gdXNlIGdjb3YgaW50ZXJtZWRpYXRlIGZvcm1hdAorKy5icgorKworK1VzZSB0aGlzIG9wdGlvbiB0byBjb250cm9sIHdoZXRoZXIgZ2VuaW5mbyBzaG91bGQgdXNlIHRoZSBnY292IGludGVybWVkaWF0ZQorK2Zvcm1hdCB3aGlsZSBjb2xsZWN0aW5nIGNvdmVyYWdlIGRhdGEuIFRoZSB1c2Ugb2YgdGhlIGdjb3YgaW50ZXJtZWRpYXRlIGZvcm1hdAorK3Nob3VsZCBpbmNyZWFzZSBwcm9jZXNzaW5nIHNwZWVkLiBJdCBhbHNvIHByb3ZpZGVzIGJyYW5jaCBjb3ZlcmFnZSBkYXRhIHdoZW4KKyt1c2luZyB0aGUgXC1cLWluaXRpYWwgY29tbWFuZCBsaW5lIG9wdGlvbi4KKysuYnIKKysKKytWYWxpZCB2YWx1ZXMgYXJlIDAgZm9yIG9mZiwgMSBmb3Igb24sIGFuZCAiYXV0byIgdG8gbGV0IGdlbmluZm8gYXV0b21hdGljYWxseQorK3VzZSBpbW1lZGlhdGUgZm9ybWF0IHdoZW4gc3VwcG9ydGVkIGJ5IGdjb3YuCisrLmJyCisrCisrRGVmYXVsdCBpcyAiYXV0byIuCisrLlBQCisrCisgLkJSIGxjb3ZfZ2Nvdl9kaXIgIiA9IgorIC5JIHBhdGhfdG9fa2VybmVsX2NvdmVyYWdlX2RhdGEKKyAuSVAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xjb3YvZmlsZXMvMDAwMi1nZW5pbmZvLUFkZC1pbnRlcm1lZGlhdGUtSlNPTi1mb3JtYXQtc3VwcG9ydC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xjb3YvZmlsZXMvMDAwMi1nZW5pbmZvLUFkZC1pbnRlcm1lZGlhdGUtSlNPTi1mb3JtYXQtc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YjE4MDYzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGNvdi9maWxlcy8wMDAyLWdlbmluZm8tQWRkLWludGVybWVkaWF0ZS1KU09OLWZvcm1hdC1zdXBwb3J0LnBhdGNoCkBAIC0wLDAgKzEsMjQ3IEBACitGcm9tIGUxM2IyYjZmODQ0M2RhNjYwY2FmYTA2NzljM2IxNjI0MDg0M2NlOWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQZXRlciBPYmVycGFybGVpdGVyIDxvYmVycGFyQGxpbnV4LmlibS5jb20+CitEYXRlOiBGcmksIDI0IE1heSAyMDE5IDE3OjE2OjU2ICswMjAwCitTdWJqZWN0OiBbUEFUQ0ggMi8yXSBnZW5pbmZvOiBBZGQgaW50ZXJtZWRpYXRlIEpTT04gZm9ybWF0IHN1cHBvcnQKKworVGhpcyBjaGFuZ2UgYWRkcyBzdXBwb3J0IGZvciBwYXJzaW5nIHRoZSBvdXRwdXQgb2YgZ2NvdidzIGludGVybWVkaWF0ZQorSlNPTiBmaWxlIGZvcm1hdCBhcyBpbXBsZW1lbnRlZCBieSBHQ0MgdmVyc2lvbiA5LgorCitOb3RlOiBUaGUgd2F5IHRoYXQgdGhlIGludGVybWVkaWF0ZSBmaWxlIGZvcm1hdCBzdXBwb3J0IGlzIGltcGxlbWVudGVkCitpbiBnZW5pbmZvIHJlbW92ZXMgdGhlIG5lZWQgdG8gcGFyc2UgLmdjbm8gZmlsZXMgZGlyZWN0bHkuIFNpbmNlIGdlbmluZm8KK2RvZXMgbm90IGluY2x1ZGUgc3VwcG9ydCBmb3IgcGFyc2luZyBHQ0MgOSAuZ2NubyBmaWxlcywgdXNpbmcgdGhlCitpbnRlcm1lZGlhdGUgZm9ybWF0IGlzIHRoZSBvbmx5IG9wdGlvbiBmb3IgZ2VuaW5mbyB0byBjb2xsZWN0IGNvdmVyYWdlCitkYXRhIGdlbmVyYXRlZCBieSBHQ0MgdmVyc2lvbiA5LgorCitTaWduZWQtb2ZmLWJ5OiBQZXRlciBPYmVycGFybGVpdGVyIDxvYmVycGFyQGxpbnV4LmlibS5jb20+CistLS0KKyBiaW4vZ2VuaW5mbyB8IDE2MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDE2MCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitEb3dubG9hZCBVUkw6IGh0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbGNvdi9jb21taXQvNzVmYmFlMWNmYzUwMjdmODE4YTBiYjg2NWJmNmY5NmZhYjMyMDJkYQorCitkaWZmIC0tZ2l0IGEvYmluL2dlbmluZm8gYi9iaW4vZ2VuaW5mbworaW5kZXggMDI3NjY2Ni4uY2NlYjc4MiAxMDA3NTUKKy0tLSBhL2Jpbi9nZW5pbmZvCisrKysgYi9iaW4vZ2VuaW5mbworQEAgLTU5LDYgKzU5LDkgQEAgdXNlIEZpbGU6OkNvcHkgcXcoY29weSk7CisgdXNlIEdldG9wdDo6TG9uZzsKKyB1c2UgRGlnZXN0OjpNRDUgcXcobWQ1X2Jhc2U2NCk7CisgdXNlIEN3ZCBxdy9hYnNfcGF0aC87CisrdXNlIFBlcmxJTzo6Z3ppcDsKKyt1c2UgSlNPTiBxdyhkZWNvZGVfanNvbik7CisrCisgaWYoICReTyBlcSAibXN5cyIgKQorIHsKKyAJcmVxdWlyZSBGaWxlOjpTcGVjOjpXaW4zMjsKK0BAIC00NzQsNyArNDc3LDggQEAgaWYgKCRyY19pbnRlcm1lZGlhdGUgZXEgIjAiKSB7CisgCSRpbnRlcm1lZGlhdGUgPSAxOworIH0gZWxzaWYgKGxjKCRyY19pbnRlcm1lZGlhdGUpIGVxICJhdXRvIikgeworIAkjIFVzZSBpbnRlcm1lZGlhdGUgZm9ybWF0IGlmIHN1cHBvcnRlZCBieSBnY292CistCSRpbnRlcm1lZGlhdGUgPSAkZ2Nvdl9jYXBzLT57J2ludGVybWVkaWF0ZS1mb3JtYXQnfSA/IDEgOiAwOworKwkkaW50ZXJtZWRpYXRlID0gKCRnY292X2NhcHMtPnsnaW50ZXJtZWRpYXRlLWZvcm1hdCd9IHx8CisrCQkJICRnY292X2NhcHMtPnsnanNvbi1mb3JtYXQnfSkgPyAxIDogMDsKKyB9IGVsc2UgeworIAlkaWUoIkVSUk9SOiBpbnZhbGlkIHZhbHVlIGZvciBnZW5pbmZvX2ludGVybWVkaWF0ZTogIi4KKyAJICAgICInJHJjX2ludGVybWVkaWF0ZSdcbiIpOworQEAgLTIwODQsNiArMjA4OCw0OCBAQCBzdWIgcmVhZF9pbnRlcm1lZGlhdGVfdGV4dCgkJCkKKyB9CisgCisgCisrIworKyMgcmVhZF9pbnRlcm1lZGlhdGVfanNvbihnY292X2ZpbGVuYW1lLCBkYXRhLCBiYXNlZGlyX3JlZikKKysjCisrIyBSZWFkIGdjb3YgaW50ZXJtZWRpYXRlIEpTT04gZm9ybWF0IGluIEdDT1ZfRklMRU5BTUUgYW5kIGFkZCB0aGUgcmVzdWx0aW5nCisrIyBkYXRhIHRvIERBVEEgaW4gdGhlIGZvbGxvd2luZyBmb3JtYXQ6CisrIworKyMgZGF0YTogICAgICBzb3VyY2VfZmlsZW5hbWUgLT4gZmlsZV9kYXRhCisrIyBmaWxlX2RhdGE6IEdDT1YgSlNPTiBkYXRhIGZvciBmaWxlCisrIworKyMgQWxzbyBzdG9yZSB0aGUgdmFsdWUgZm9yIGN1cnJlbnRfd29ya2luZ19kaXJlY3RvcnkgdG8gQkFTRURJUl9SRUYuCisrIworKworK3N1YiByZWFkX2ludGVybWVkaWF0ZV9qc29uKCQkJCkKKyt7CisrCW15ICgkZ2Nvdl9maWxlbmFtZSwgJGRhdGEsICRiYXNlZGlyX3JlZikgPSBAXzsKKysJbXkgJGZkOworKwlteSAkdGV4dDsKKysJbXkgJGpzb247CisrCisrCW9wZW4oJGZkLCAiPDpnemlwIiwgJGdjb3ZfZmlsZW5hbWUpIG9yCisrCQlkaWUoIkVSUk9SOiBDb3VsZCBub3QgcmVhZCAkZ2Nvdl9maWxlbmFtZTogJCFcbiIpOworKwlsb2NhbCAkLzsKKysJJHRleHQgPSA8JGZkPjsKKysJY2xvc2UoJGZkKTsKKysKKysJJGpzb24gPSBkZWNvZGVfanNvbigkdGV4dCk7CisrCWlmICghZGVmaW5lZCgkanNvbikgfHwgIWV4aXN0cygkanNvbi0+eyJmaWxlcyJ9KSB8fAorKwkgICAgcmVmKCRqc29uLT57ImZpbGVzIn0gbmUgIkFSUkFZIikpIHsKKysJCWRpZSgiRVJST1I6IFVucmVjb2duaXplZCBKU09OIG91dHB1dCBmb3JtYXQgaW4gIi4KKysJCSAgICAiJGdjb3ZfZmlsZW5hbWVcbiIpOworKwl9CisrCisrCSQkYmFzZWRpcl9yZWYgPSAkanNvbi0+eyJjdXJyZW50X3dvcmtpbmdfZGlyZWN0b3J5In07CisrCisrCWZvciBteSAkZmlsZSAoQHskanNvbi0+eyJmaWxlcyJ9fSkgeworKwkJbXkgJGZpbGVuYW1lID0gJGZpbGUtPnsiZmlsZSJ9OworKworKwkJJGRhdGEtPnskZmlsZW5hbWV9ID0gJGZpbGU7CisrCX0KKyt9CisrCisrCisgIworICMgaW50ZXJtZWRpYXRlX3RleHRfdG9faW5mbyhmZCwgZGF0YSwgc3JjZGF0YSkKKyAjCitAQCAtMjE3Myw2ICsyMjE5LDEwNCBAQCBzdWIgaW50ZXJtZWRpYXRlX3RleHRfdG9faW5mbygkJCQpCisgfQorIAorIAorKyMKKysjIGludGVybWVkaWF0ZV9qc29uX3RvX2luZm8oZmQsIGRhdGEsIHNyY2RhdGEpCisrIworKyMgV3JpdGUgREFUQSBpbiBpbmZvIGZvcm1hdCB0byBmaWxlIGRlc2NyaXB0b3IgRkQuCisrIworKyMgZGF0YTogICAgICBmaWxlbmFtZSAtPiBmaWxlX2RhdGE6CisrIyBmaWxlX2RhdGE6IEdDT1YgSlNPTiBkYXRhIGZvciBmaWxlCisrIworKyMgc3JjZGF0YTogICBmaWxlbmFtZSAtPiBbIGV4Y2wsIGJyZXhjbCwgY2hlY2tzdW1zIF0KKysjIGV4Y2w6ICAgICAgbGluZW5vIC0+IDEgZm9yIGFsbCBsaW5lcyBmb3Igd2hpY2ggdG8gZXhjbHVkZSBhbGwgZGF0YQorKyMgYnJleGNsOiAgICBsaW5lbm8gLT4gMSBmb3IgYWxsIGxpbmVzIGZvciB3aGljaCB0byBleGNsdWRlIGJyYW5jaCBkYXRhCisrIyBjaGVja3N1bXM6IGxpbmVubyAtPiBzb3VyY2UgY29kZSBjaGVja3N1bQorKyMKKysjIE5vdGU6IFRvIHNpbXBsaWZ5IHByb2Nlc3NpbmcsIGdjb3YgZGF0YSBpcyBub3QgY29tYmluZWQgaGVyZSwgdGhhdCBpcyBjb3VudHMKKysjICAgICAgIHRoYXQgYXBwZWFyIG11bHRpcGxlIHRpbWVzIGZvciB0aGUgc2FtZSBsaW5lcy9icmFuY2hlcyBhcmUgbm90IGFkZGVkLgorKyMgICAgICAgVGhpcyBpcyBkb25lIGJ5IGxjb3YvZ2VuaHRtbCB3aGVuIHJlYWRpbmcgdGhlIGRhdGEgZmlsZXMuCisrIworKworK3N1YiBpbnRlcm1lZGlhdGVfanNvbl90b19pbmZvKCQkJCkKKyt7CisrCW15ICgkZmQsICRkYXRhLCAkc3JjZGF0YSkgPSBAXzsKKysJbXkgJGJyYW5jaF9udW0gPSAwOworKworKwlyZXR1cm4gaWYgKCEleyRkYXRhfSk7CisrCisrCXByaW50KCRmZCAiVE46JHRlc3RfbmFtZVxuIik7CisrCWZvciBteSAkZmlsZW5hbWUgKGtleXMoJXskZGF0YX0pKSB7CisrCQlteSAoJGV4Y2wsICRicmV4Y2wsICRjaGVja3N1bXMpOworKwkJbXkgJGZpbGVfZGF0YSA9ICRkYXRhLT57JGZpbGVuYW1lfTsKKysKKysJCWlmIChkZWZpbmVkKCRzcmNkYXRhLT57JGZpbGVuYW1lfSkpIHsKKysJCQkoJGV4Y2wsICRicmV4Y2wsICRjaGVja3N1bXMpID0gQHskc3JjZGF0YS0+eyRmaWxlbmFtZX19OworKwkJfQorKworKwkJcHJpbnQoJGZkICJTRjokZmlsZW5hbWVcbiIpOworKworKwkJIyBGdW5jdGlvbiBkYXRhCisrCQlpZiAoJGZ1bmNfY292ZXJhZ2UpIHsKKysJCQlmb3IgbXkgJGQgKEB7JGZpbGVfZGF0YS0+eyJmdW5jdGlvbnMifX0pIHsKKysJCQkJbXkgJGxpbmUgPSAkZC0+eyJzdGFydF9saW5lIn07CisrCQkJCW15ICRjb3VudCA9ICRkLT57ImV4ZWN1dGlvbl9jb3VudCJ9OworKwkJCQlteSAkbmFtZSA9ICRkLT57Im5hbWUifTsKKysKKysJCQkJbmV4dCBpZiAoIWRlZmluZWQoJGxpbmUpIHx8ICFkZWZpbmVkKCRjb3VudCkgfHwKKysJCQkJCSAhZGVmaW5lZCgkbmFtZSkgfHwgJGV4Y2wtPnskbGluZX0pOworKworKwkJCQlwcmludCgkZmQgIkZOOiRsaW5lLCRuYW1lXG4iKTsKKysJCQkJcHJpbnQoJGZkICJGTkRBOiRjb3VudCwkbmFtZVxuIik7CisrCQkJfQorKwkJfQorKworKwkJIyBMaW5lIGRhdGEKKysJCWZvciBteSAkZCAoQHskZmlsZV9kYXRhLT57ImxpbmVzIn19KSB7CisrCQkJbXkgJGxpbmUgPSAkZC0+eyJsaW5lX251bWJlciJ9OworKwkJCW15ICRjb3VudCA9ICRkLT57ImNvdW50In07CisrCQkJbXkgJGM7CisrCQkJbXkgJGJyYW5jaGVzID0gJGQtPnsiYnJhbmNoZXMifTsKKysJCQlteSAkdW5leGVjID0gJGQtPnsidW5leGVjdXRlZF9ibG9jayJ9OworKworKwkJCW5leHQgaWYgKCFkZWZpbmVkKCRsaW5lKSB8fCAhZGVmaW5lZCgkY291bnQpIHx8CisrCQkJCSAkZXhjbC0+eyRsaW5lfSk7CisrCisrCQkJaWYgKGRlZmluZWQoJHVuZXhlYykgJiYgJHVuZXhlYyAmJiAkY291bnQgPT0gMCkgeworKwkJCQkkdW5leGVjID0gMTsKKysJCQl9IGVsc2UgeworKwkJCQkkdW5leGVjID0gMDsKKysJCQl9CisrCisrCQkJaWYgKCRjaGVja3N1bSAmJiBleGlzdHMoJGNoZWNrc3Vtcy0+eyRsaW5lfSkpIHsKKysJCQkJJGMgPSAiLCIuJGNoZWNrc3Vtcy0+eyRsaW5lfTsKKysJCQl9IGVsc2UgeworKwkJCQkkYyA9ICIiOworKwkJCX0KKysJCQlwcmludCgkZmQgIkRBOiRsaW5lLCRjb3VudCRjXG4iKTsKKysKKysJCQkkYnJhbmNoX251bSA9IDA7CisrCQkJIyBCcmFuY2ggZGF0YQorKwkJCWlmICgkYnJfY292ZXJhZ2UgJiYgISRicmV4Y2wtPnskbGluZX0pIHsKKysJCQkJZm9yIG15ICRiIChAJGJyYW5jaGVzKSB7CisrCQkJCQlteSAkYnJjb3VudCA9ICRiLT57ImNvdW50In07CisrCisrCQkJCQlpZiAoIWRlZmluZWQoJGJyY291bnQpIHx8ICR1bmV4ZWMpIHsKKysJCQkJCQkkYnJjb3VudCA9ICItIjsKKysJCQkJCX0KKysJCQkJCXByaW50KCRmZCAiQlJEQTokbGluZSwwLCRicmFuY2hfbnVtLCIuCisrCQkJCQkgICAgICAiJGJyY291bnRcbiIpOworKworKwkJCQkJJGJyYW5jaF9udW0rKzsKKysJCQkJfQorKwkJCX0KKysKKysJCX0KKysKKysJCXByaW50KCRmZCAiZW5kX29mX3JlY29yZFxuIik7CisrCX0KKyt9CisrCisrCisgc3ViIGdldF9vdXRwdXRfZmQoJCQpCisgeworIAlteSAoJG91dGZpbGUsICRmaWxlKSA9IEBfOworQEAgLTIyNDMsNiArMjM4Nyw4IEBAIHN1YiBwcm9jZXNzX2ludGVybWVkaWF0ZSgkJCQpCisgCW15ICRzcmNkYXRhOworIAlteSAkaXNfZ3JhcGggPSAwOworIAlteSAoJG91dCwgJGVyciwgJHJjKTsKKysJbXkgJGpzb25fYmFzZWRpcjsKKysJbXkgJGpzb25fZm9ybWF0OworIAorIAlpbmZvKCJQcm9jZXNzaW5nICVzXG4iLCBhYnMycmVsKCRmaWxlLCAkZGlyKSk7CisgCitAQCAtMjI5Niw2ICsyNDQyLDEyIEBAIHN1YiBwcm9jZXNzX2ludGVybWVkaWF0ZSgkJCQpCisgCQl1bmxpbmsoJGdjb3ZfZmlsZW5hbWUpOworIAl9CisgCisrCWZvciBteSAkZ2Nvdl9maWxlbmFtZSAoZ2xvYigiKi5nY292Lmpzb24uZ3oiKSkgeworKwkJcmVhZF9pbnRlcm1lZGlhdGVfanNvbigkZ2Nvdl9maWxlbmFtZSwgXCVkYXRhLCBcJGpzb25fYmFzZWRpcik7CisrCQl1bmxpbmsoJGdjb3ZfZmlsZW5hbWUpOworKwkJJGpzb25fZm9ybWF0ID0gMTsKKysJfQorKworIAlpZiAoISVkYXRhKSB7CisgCQl3YXJuKCJXQVJOSU5HOiBHQ09WIGRpZCBub3QgcHJvZHVjZSBhbnkgZGF0YSBmb3IgJGZpbGVcbiIpOworIAkJcmV0dXJuOworQEAgLTIzMDQsNiArMjQ1Niw4IEBAIHN1YiBwcm9jZXNzX2ludGVybWVkaWF0ZSgkJCQpCisgCSMgRGV0ZXJtaW5lIGJhc2UgZGlyZWN0b3J5CisgCWlmIChkZWZpbmVkKCRiYXNlX2RpcmVjdG9yeSkpIHsKKyAJCSRiYXNlID0gJGJhc2VfZGlyZWN0b3J5OworKwl9IGVsc2lmIChkZWZpbmVkKCRqc29uX2Jhc2VkaXIpKSB7CisrCQkkYmFzZSA9ICRqc29uX2Jhc2VkaXI7CisgCX0gZWxzZSB7CisgCQkkYmFzZSA9ICRmZGlyOworIAorQEAgLTIzMzEsNyArMjQ4NSwxMSBAQCBzdWIgcHJvY2Vzc19pbnRlcm1lZGlhdGUoJCQkKQorIAorIAkjIEdlbmVyYXRlIG91dHB1dAorIAkkZmQgPSBnZXRfb3V0cHV0X2ZkKCRvdXRwdXRfZmlsZW5hbWUsICRmaWxlKTsKKy0JaW50ZXJtZWRpYXRlX3RleHRfdG9faW5mbygkZmQsIFwlZGF0YSwgJHNyY2RhdGEpOworKwlpZiAoJGpzb25fZm9ybWF0KSB7CisrCQlpbnRlcm1lZGlhdGVfanNvbl90b19pbmZvKCRmZCwgXCVkYXRhLCAkc3JjZGF0YSk7CisrCX0gZWxzZSB7CisrCQlpbnRlcm1lZGlhdGVfdGV4dF90b19pbmZvKCRmZCwgXCVkYXRhLCAkc3JjZGF0YSk7CisrCX0KKyAJY2xvc2UoJGZkKTsKKyAKKyAJY2hkaXIoJGN3ZCk7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sY292L2xjb3ZfMS4xNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xjb3YvbGNvdl8xLjE0LmJiCmluZGV4IDI2ZTc5N2EuLjE0NzE4MTggMTAwNzU1Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xjb3YvbGNvdl8xLjE0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xjb3YvbGNvdl8xLjE0LmJiCkBAIC0xMCw2ICsxMCw5IEBACiAKIFJERVBFTkRTXyR7UE59ICs9ICIgXAogICAgIGdjb3YgXAorICAgIGdjb3Ytc3ltbGlua3MgXAorICAgIGxpYmpzb24tcGVybCBcCisgICAgbGlicGVybGlvLWd6aXAtcGVybCBcCiAgICAgcGVybCBcCiAgICAgcGVybC1tb2R1bGUtZmlsZWhhbmRsZSBcCiAgICAgcGVybC1tb2R1bGUtZ2V0b3B0LXN0ZCBcCkBAIC0xOSw2ICsyMiw3IEBACiAgICAgcGVybC1tb2R1bGUtY3dkIFwKICAgICBwZXJsLW1vZHVsZS1lcnJubyBcCiAgICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1jb3B5IFwKICAgICBwZXJsLW1vZHVsZS1maWxlLWZpbmQgXAogICAgIHBlcmwtbW9kdWxlLWZpbGUtcGF0aCBcCiAgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKQEAgLTQyLDcgKzQ2LDExIEBACiAgICAgcGVybC1tb2R1bGUtdGllLWhhc2ggXAogIgogCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L2x0cC8ke0JQfS50YXIuZ3oiCitTUkNfVVJJID0gIiBcCisgICAgICAgICAgIGh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L2x0cC8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1nZW5pbmZvLUFkZC1pbnRlcm1lZGlhdGUtdGV4dC1mb3JtYXQtc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWdlbmluZm8tQWRkLWludGVybWVkaWF0ZS1KU09OLWZvcm1hdC1zdXBwb3J0LnBhdGNoIFwKKwkgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICIwMjIwZDAxNzUzNDY5ZjgzOTIxZjhmNDFhZTUwNTRjMSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIxNDk5NTY5OTE4NzQ0MGUwYWU0ZGE1N2ZlM2E2NGFkYzBhM2M1Y2YxNGZlYWI5NzFmOGRiMzhmYjdkOGYwNzFhIgpAQCAtNTEsMyArNTksNCBAQAogICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBQUkVGSVg9JHtEfSR7cHJlZml4fSBDRkdfRElSPSR7RH0ke3N5c2NvbmZkaXJ9CiB9CiAKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmJ5dGVzaXplL2xpYmJ5dGVzaXplXzIuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmJ5dGVzaXplL2xpYmJ5dGVzaXplXzIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE1YzE4NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJieXRlc2l6ZS9saWJieXRlc2l6ZV8yLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGUgZ29hbCBvZiB0aGlzIHByb2plY3QgaXMgdG8gcHJvdmlkZSBhIHRpbnkgbGlicmFyeSB0aGF0IHdvdWxkIFwKLWZhY2lsaXRhdGUgdGhlIGNvbW1vbiBvcGVyYXRpb25zIHdpdGggc2l6ZXMgaW4gYnl0ZXMuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JoaW5zdGFsbGVyL2xpYmJ5dGVzaXplIgotTElDRU5TRSA9ICJMR1BMdjIrIgotU0VDVElPTiA9ICJkZXZlbC9saWIiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWMwN2NiNDk5ZDI1OTQ1MmYzMjRiYjkwYzMwNjdkODVjIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotQiA9ICIke1N9IgotCi1TUkNSRVYgPSAiOWVjYzEwNDIxMDk1MjgwNTE5ODMyNjFmZmQ0OTFkNDVlN2M0NzFlMSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9saWJieXRlc2l6ZTticmFuY2g9bWFzdGVyIgotCi1pbmhlcml0IGdldHRleHQgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUKLQotREVQRU5EUyArPSAiIFwKLSAgICBsaWJwY3JlMiBcCi0gICAgZ21wIFwKLSAgICBtcGZyIFwKLSAgICBnZXR0ZXh0LW5hdGl2ZSBcCi0iCi0KLUZJTEVTXyR7UE59ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9ieXRlc2l6ZSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbjMiCi1QQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi0td2l0aC1weXRob24zLCAtLXdpdGhvdXQtcHl0aG9uMywscHl0aG9uMy1jb3JlIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWd0ay1kb2MiCi1FWFRSQV9PRU1BS0UgPSAicHkzbGliZGlyPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliYnl0ZXNpemUvbGliYnl0ZXNpemVfMi4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliYnl0ZXNpemUvbGliYnl0ZXNpemVfMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5NTQ0OTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJieXRlc2l6ZS9saWJieXRlc2l6ZV8yLjIuYmIKQEAgLTAsMCArMSwzMCBAQAorREVTQ1JJUFRJT04gPSAiVGhlIGdvYWwgb2YgdGhpcyBwcm9qZWN0IGlzIHRvIHByb3ZpZGUgYSB0aW55IGxpYnJhcnkgdGhhdCB3b3VsZCBcCitmYWNpbGl0YXRlIHRoZSBjb21tb24gb3BlcmF0aW9ucyB3aXRoIHNpemVzIGluIGJ5dGVzLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9yaGluc3RhbGxlci9saWJieXRlc2l6ZSIKK0xJQ0VOU0UgPSAiTEdQTHYyKyIKK1NFQ1RJT04gPSAiZGV2ZWwvbGliIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jMDdjYjQ5OWQyNTk0NTJmMzI0YmI5MGMzMDY3ZDg1YyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKK0IgPSAiJHtTfSIKKworU1JDUkVWID0gImU2NGU3NTJhMjhhNGE0MWIwYTQzY2JhM2JlZGY5NTcxYzIyYWY4MDciCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcmhpbnN0YWxsZXIvbGliYnl0ZXNpemU7YnJhbmNoPW1hc3RlciIKKworaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scyBweXRob24zbmF0aXZlCisKK0RFUEVORFMgKz0gIiBcCisgICAgbGlicGNyZTIgXAorICAgIGdtcCBcCisgICAgbXBmciBcCisgICAgZ2V0dGV4dC1uYXRpdmUgXAorIgorCitGSUxFU18ke1BOfSArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vYnl0ZXNpemUiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJweXRob24zIgorUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItLXdpdGgtcHl0aG9uMywgLS13aXRob3V0LXB5dGhvbjMsLHB5dGhvbjMtY29yZSIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1ndGstZG9jIgorRVhUUkFfT0VNQUtFID0gInB5M2xpYmRpcj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmNhbmJlcnJhL2ZpbGVzLzAwMDEtZ3RrLURvbi10LWFzc3VtZS1hbGwtR2RrRGlzcGxheXMtYXJlLUdka1gxMURpc3BsYXlzLS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmNhbmJlcnJhL2ZpbGVzLzAwMDEtZ3RrLURvbi10LWFzc3VtZS1hbGwtR2RrRGlzcGxheXMtYXJlLUdka1gxMURpc3BsYXlzLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTZmYTJjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliY2FuYmVycmEvZmlsZXMvMDAwMS1ndGstRG9uLXQtYXNzdW1lLWFsbC1HZGtEaXNwbGF5cy1hcmUtR2RrWDExRGlzcGxheXMtLnBhdGNoCkBAIC0wLDAgKzEsNjMgQEAKK0Zyb20gYzA2MjBlNDMyNjUwZTgxMDYyYzE5NjdjYzY2OTgyOWRiZDI5YjMxMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1pY2hhZWwgTWVla3MgPG1pY2hhZWwubWVla3NAc3VzZS5jb20+CitEYXRlOiBGcmksIDkgTm92IDIwMTIgMTY6MTY6NDAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZ3RrOiBEb24ndCBhc3N1bWUgYWxsIEdka0Rpc3BsYXlzIGFyZSBHZGtYMTFEaXNwbGF5czoKKyBicm9hZHdheS93YXlsYW5kCisKKy0tLQorIHNyYy9jYW5iZXJyYS1ndGstbW9kdWxlLmMgfCAxNSArKysrKysrKysrKysrKysKKyBzcmMvY2FuYmVycmEtZ3RrLmMgICAgICAgIHwgIDUgKysrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKykKKworLS0tIGEvc3JjL2NhbmJlcnJhLWd0ay1tb2R1bGUuYworKysrIGIvc3JjL2NhbmJlcnJhLWd0ay1tb2R1bGUuYworQEAgLTMwNyw2ICszMDcsMTEgQEAgc3RhdGljIGdpbnQgd2luZG93X2dldF9kZXNrdG9wKEdka0Rpc3BsYQorICAgICAgICAgZ3VjaGFyICpkYXRhID0gTlVMTDsKKyAgICAgICAgIGdpbnQgcmV0ID0gLTE7CisgCisrI2lmZGVmIEdES19JU19YMTFfRElTUExBWQorKyAgICAgICAgaWYgKCFHREtfSVNfWDExX0RJU1BMQVkoZCkpCisrICAgICAgICAgICAgICAgIHJldHVybiAwOworKyNlbmRpZgorKworICAgICAgICAgaWYgKFhHZXRXaW5kb3dQcm9wZXJ0eShHREtfRElTUExBWV9YRElTUExBWShkKSwgR0RLX1dJTkRPV19YSUQodyksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdka194MTFfZ2V0X3hhdG9tX2J5X25hbWVfZm9yX2Rpc3BsYXkoZCwgIl9ORVRfV01fREVTS1RPUCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBHX01BWExPTkcsIEZhbHNlLCBYQV9DQVJESU5BTCwgJnR5cGVfcmV0dXJuLAorQEAgLTMzNSw2ICszNDAsMTEgQEAgc3RhdGljIGdpbnQgZGlzcGxheV9nZXRfZGVza3RvcChHZGtEaXNwbAorICAgICAgICAgZ3VjaGFyICpkYXRhID0gTlVMTDsKKyAgICAgICAgIGdpbnQgcmV0ID0gLTE7CisgCisrI2lmZGVmIEdES19JU19YMTFfRElTUExBWQorKyAgICAgICAgaWYgKCFHREtfSVNfWDExX0RJU1BMQVkoZCkpCisrICAgICAgICAgICAgICAgIHJldHVybiAwOworKyNlbmRpZgorKworICAgICAgICAgaWYgKFhHZXRXaW5kb3dQcm9wZXJ0eShHREtfRElTUExBWV9YRElTUExBWShkKSwgRGVmYXVsdFJvb3RXaW5kb3coR0RLX0RJU1BMQVlfWERJU1BMQVkoZCkpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfeDExX2dldF94YXRvbV9ieV9uYW1lX2Zvcl9kaXNwbGF5KGQsICJfTkVUX0NVUlJFTlRfREVTS1RPUCIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwLCBHX01BWExPTkcsIEZhbHNlLCBYQV9DQVJESU5BTCwgJnR5cGVfcmV0dXJuLAorQEAgLTM2NSw2ICszNzUsMTEgQEAgc3RhdGljIGdib29sZWFuIHdpbmRvd19pc194ZW1iZWQoR2RrRGlzcAorICAgICAgICAgZ2Jvb2xlYW4gcmV0ID0gRkFMU0U7CisgICAgICAgICBBdG9tIHhlbWJlZDsKKyAKKysjaWZkZWYgR0RLX0lTX1gxMV9ESVNQTEFZCisrICAgICAgICBpZiAoIUdES19JU19YMTFfRElTUExBWShkKSkKKysgICAgICAgICAgICAgICAgcmV0dXJuIEZBTFNFOworKyNlbmRpZgorKworICAgICAgICAgLyogR25vbWUgUGFuZWwgYXBwbGV0cyBhcmUgWEVNQkVEIHdpbmRvd3MuIFdlIG5lZWQgdG8gbWFrZSBzdXJlIHdlCisgICAgICAgICAgKiBpZ25vcmUgdGhlbSAqLworIAorLS0tIGEvc3JjL2NhbmJlcnJhLWd0ay5jCisrKysgYi9zcmMvY2FuYmVycmEtZ3RrLmMKK0BAIC0xODUsNiArMTg1LDExIEBAIHN0YXRpYyBnaW50IHdpbmRvd19nZXRfZGVza3RvcChHZGtEaXNwbGEKKyAgICAgICAgIGd1Y2hhciAqZGF0YSA9IE5VTEw7CisgICAgICAgICBnaW50IHJldCA9IC0xOworIAorKyNpZmRlZiBHREtfSVNfWDExX0RJU1BMQVkKKysgICAgICAgIGlmICghR0RLX0lTX1gxMV9ESVNQTEFZKGQpKQorKyAgICAgICAgICAgICAgICByZXR1cm4gMDsKKysjZW5kaWYKKysKKyAgICAgICAgIGlmIChYR2V0V2luZG93UHJvcGVydHkoR0RLX0RJU1BMQVlfWERJU1BMQVkoZCksIEdES19XSU5ET1dfWElEKHcpLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZGtfeDExX2dldF94YXRvbV9ieV9uYW1lX2Zvcl9kaXNwbGF5KGQsICJfTkVUX1dNX0RFU0tUT1AiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMCwgR19NQVhMT05HLCBGYWxzZSwgWEFfQ0FSRElOQUwsICZ0eXBlX3JldHVybiwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmNhbmJlcnJhL2xpYmNhbmJlcnJhXzAuMzAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJjYW5iZXJyYS9saWJjYW5iZXJyYV8wLjMwLmJiCmluZGV4IDcyYzkzYWIuLjE0OTUwNTEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmNhbmJlcnJhL2xpYmNhbmJlcnJhXzAuMzAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliY2FuYmVycmEvbGliY2FuYmVycmFfMC4zMC5iYgpAQCAtMTEsNiArMTEsNyBAQAogU1JDX1VSSSA9ICIgXAogICAgIGh0dHA6Ly8wcG9pbnRlci5kZS9sZW5uYXJ0L3Byb2plY3RzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKICAgICBmaWxlOi8vMDAwMS1idWlsZC1ndGstYW5kLWd0azMtdmVyc2lvbi1mb3ItY2FuYmVycmFfZ3RrX3BsYXkucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWd0ay1Eb24tdC1hc3N1bWUtYWxsLUdka0Rpc3BsYXlzLWFyZS1HZGtYMTFEaXNwbGF5cy0ucGF0Y2ggXAogIgogU1JDX1VSSVttZDVzdW1dID0gIjM0Y2I3ZTQ0MzBhZmFmNmY0NDdjNGViZGI5YjQyMDcyIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImMyYjY3MWU2N2UwYzI4OGE2OWZjMzNkYzFiNmYxYjUzNGQwNzg4MmMyYWNlZWQzNzAwNGJmNDhjNjAxYWZhNzIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJjZXJlYWwvbGliY2VyZWFsXzEuMi4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliY2VyZWFsL2xpYmNlcmVhbF8xLjIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzY1YjQwYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJjZXJlYWwvbGliY2VyZWFsXzEuMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJBIEMrKzExIGxpYnJhcnkgZm9yIHNlcmlhbGl6YXRpb24iCi1IT01FUEFHRSA9ICJodHRwczovL3VzY2lsYWIuZ2l0aHViLmlvL2NlcmVhbC8iCi0KLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNjEyNjkwYWYyZjU3NWRmZDAyZTJlOTE0NDNjZWEyMyIKLQotU1JDUkVWID0gIjUxY2JkYTVmMzBlNTZjODAxYzA3ZmUzZDNhYmE1ZDdmYjllNmNjYTQiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vVVNDaUxhYi9jZXJlYWwuZ2l0IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGNtYWtlCi0KLUVYVFJBX09FQ01BS0UgPSAiLURKVVNUX0lOU1RBTExfQ0VSRUFMPU9OIgotCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJjZXJlYWwvbGliY2VyZWFsXzEuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliY2VyZWFsL2xpYmNlcmVhbF8xLjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZmM1ODgxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliY2VyZWFsL2xpYmNlcmVhbF8xLjMuMC5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIkEgQysrMTEgbGlicmFyeSBmb3Igc2VyaWFsaXphdGlvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vdXNjaWxhYi5naXRodWIuaW8vY2VyZWFsLyIKKworU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU2MTI2OTBhZjJmNTc1ZGZkMDJlMmU5MTQ0M2NlYTIzIgorCitTUkNSRVYgPSAiMDJlYWNlMTlhOTljZTNjZDU2NGNhNGUzNzk3NTNkNjlhZjA4YzJjOCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9VU0NpTGFiL2NlcmVhbC5naXQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworRVhUUkFfT0VDTUFLRSA9ICItREpVU1RfSU5TVEFMTF9DRVJFQUw9T04iCisKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmdwaW9kL2xpYmdwaW9kXzEuNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2RfMS40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzOTFkZWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliZ3Bpb2QvbGliZ3Bpb2RfMS40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1yZXF1aXJlIGxpYmdwaW9kLmluYwotCi1ERVBFTkRTICs9ICJhdXRvY29uZi1hcmNoaXZlLW5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjU4NWI0YmI0MzFmOTljNGJhOWIzZWU1OGI5ZDQ5NGMxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIxYWU4ZmQxZjhkYWZjMmViMmJhNTBlNjUyMzkwY2Y1MzNkMjEzNTE0MTlhNzQyNjI1NTg5NWNiNTJlMjFiMWMiCi0KLSMgZW5hYmxlIGN4eCBiaW5kaW5ncwotUEFDS0FHRUNPTkZJRyA/PSAiY3h4IgotCi1QQUNLQUdFQ09ORklHW2N4eF0gPSAiLS1lbmFibGUtYmluZGluZ3MtY3h4LC0tZGlzYWJsZS1iaW5kaW5ncy1jeHgiCi1QQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItLWVuYWJsZS10ZXN0cywtLWRpc2FibGUtdGVzdHMsa21vZCB1ZGV2IgotCi1QQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi0tZW5hYmxlLWJpbmRpbmdzLXB5dGhvbiwtLWRpc2FibGUtYmluZGluZ3MtcHl0aG9uLHB5dGhvbjMiCi0KLWluaGVyaXQgcHl0aG9uM25hdGl2ZQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uIgotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotUlJFQ09NTUVORFNfUFlUSE9OID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAnJHtQTn0tcHl0aG9uJywgJycsZCl9IgotUlJFQ09NTUVORFNfJHtQTn0tcHl0aG9uICs9ICIke1JSRUNPTU1FTkRTX1BZVEhPTn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZF8xLjQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmdwaW9kL2xpYmdwaW9kXzEuNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE2MzIwZGEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJncGlvZC9saWJncGlvZF8xLjQuMy5iYgpAQCAtMCwwICsxLDIxIEBACityZXF1aXJlIGxpYmdwaW9kLmluYworCitERVBFTkRTICs9ICJhdXRvY29uZi1hcmNoaXZlLW5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gImQ0ODI2NzIwYThkZTEzMzc5NDM2ZjljMjA3MjM3YmMwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBhZDA4MGQxZWI4OWM0MjJjZjEzMDAxMjkzZmZhNzI4NjljYTEzMDI4ZTg1ZGFiNWY2YjNiYTkwZjg4ZGE0NmQiCisKKyMgZW5hYmxlIGN4eCBiaW5kaW5ncworUEFDS0FHRUNPTkZJRyA/PSAiY3h4IgorCitQQUNLQUdFQ09ORklHW2N4eF0gPSAiLS1lbmFibGUtYmluZGluZ3MtY3h4LC0tZGlzYWJsZS1iaW5kaW5ncy1jeHgiCitQQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItLWVuYWJsZS10ZXN0cywtLWRpc2FibGUtdGVzdHMsa21vZCB1ZGV2IgorCitQQUNLQUdFQ09ORklHW3B5dGhvbjNdID0gIi0tZW5hYmxlLWJpbmRpbmdzLXB5dGhvbiwtLWRpc2FibGUtYmluZGluZ3MtcHl0aG9uLHB5dGhvbjMiCisKK2luaGVyaXQgcHl0aG9uM25hdGl2ZQorCitQQUNLQUdFUyA9KyAiJHtQTn0tcHl0aG9uIgorRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgorUlJFQ09NTUVORFNfUFlUSE9OID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAnJHtQTn0tcHl0aG9uJywgJycsZCl9IgorUlJFQ09NTUVORFNfJHtQTn0tcHl0aG9uICs9ICIke1JSRUNPTU1FTkRTX1BZVEhPTn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJoYXJ1L2xpYmhhcnUvbGliaGFydS1SRUxFQVNFXzJfM18wX2NtYWtlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliaGFydS9saWJoYXJ1L2xpYmhhcnUtUkVMRUFTRV8yXzNfMF9jbWFrZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzJiZTFiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliaGFydS9saWJoYXJ1L2xpYmhhcnUtUkVMRUFTRV8yXzNfMF9jbWFrZS5wYXRjaApAQCAtMCwwICsxLDUyIEBACitCYWNrcG9ydCBmcm9tIEZlZG9yYSBQcm9qZWN0LgoraHR0cHM6Ly9zcmMuZmVkb3JhcHJvamVjdC5vcmcvcnBtcy9saWJoYXJ1CisKK0ZpeCB0aGUgaW5zdGFsbCBkZXN0aW5hdGlvbiBvZiBzb21lIGZpbGVzLgorCitVcHN0cmVhbS1TdGF0dXM6IGluYXBwcm9wcmlhdGUKKworU2lnbmVkLW9mZi1ieTogWmhlbmcgUnVvcWluIDx6aGVuZ3JxLmZuc3RAY24uZnVqaXRzdS5jb20+CisKK2RpZmYgLXVycCBsaWJoYXJ1LVJFTEVBU0VfMl8zXzAvQ01ha2VMaXN0cy50eHQgbGliaGFydS1SRUxFQVNFXzJfM18wX2NtYWtlL0NNYWtlTGlzdHMudHh0CistLS0gbGliaGFydS1SRUxFQVNFXzJfM18wL0NNYWtlTGlzdHMudHh0CTIwMTMtMTAtMzAgMjA6MTE6NTkuMDAwMDAwMDAwICswNzAwCisrKysgbGliaGFydS1SRUxFQVNFXzJfM18wX2NtYWtlL0NNYWtlTGlzdHMudHh0CTIwMTctMDYtMDEgMTU6NTY6MDYuNTMzNTUyNzk1ICswNzAwCitAQCAtMjUsNyArMjUsNyBAQCBlbmRpZihNU1ZDKQorIAorICMgaW5mb3JtYXRpb24gYWJvdXQgbGliaGFydQorIHNldChMSUJIUERGX01BSk9SIDIpCistc2V0KExJQkhQREZfTUlOT1IgMikKKytzZXQoTElCSFBERl9NSU5PUiAzKQorIHNldChMSUJIUERGX1BBVENIIDApCisgc2V0KExJQkhQREZfVkVSU0lPTiAke0xJQkhQREZfTUFKT1J9LiR7TElCSFBERl9NSU5PUn0uJHtMSUJIUERGX1BBVENIfSkKKyBzZXQoTElCSFBERl9ERVNDUklQVElPTiAibGliSGFydSBpcyBhIGZyZWUsIGNyb3NzIHBsYXRmb3JtLCBvcGVuIHNvdXJjZSBsaWJyYXJ5IGZvciBnZW5lcmF0aW5nIFBERiBmaWxlcy4iKQorQEAgLTIxMCw5ICsyMTAsOSBAQCBzZXQoCisgaW5zdGFsbChGSUxFUyAke2hhcnVfSERSU30gREVTVElOQVRJT04gaW5jbHVkZSkKKyAKKyAjIGluc3RhbGwgdmFyaW91cyBmaWxlcworLWluc3RhbGwoRklMRVMgUkVBRE1FIENIQU5HRVMgSU5TVEFMTCBERVNUSU5BVElPTiAuKQorK2luc3RhbGwoRklMRVMgUkVBRE1FIENIQU5HRVMgSU5TVEFMTCBERVNUSU5BVElPTiAke1NIQVJFX0lOU1RBTExfUFJFRklYfS9saWJoYXJ1KQorIGlmKE5PVCBERVZQQUspCistICBpbnN0YWxsKERJUkVDVE9SWSBpZiBERVNUSU5BVElPTiAuKQorKyAgaW5zdGFsbChESVJFQ1RPUlkgaWYgREVTVElOQVRJT04gJHtTSEFSRV9JTlNUQUxMX1BSRUZJWH0vbGliaGFydSkKKyBlbmRpZihOT1QgREVWUEFLKQorIGlmKERFVlBBSykKKyAgIGluc3RhbGwoRklMRVMgJHtDTUFLRV9CSU5BUllfRElSfS9saWJoYXJ1LkRldlBhY2thZ2UgREVTVElOQVRJT04gLikKK2RpZmYgLXVycCBsaWJoYXJ1LVJFTEVBU0VfMl8zXzAvc3JjL0NNYWtlTGlzdHMudHh0IGxpYmhhcnUtUkVMRUFTRV8yXzNfMF9jbWFrZS9zcmMvQ01ha2VMaXN0cy50eHQKKy0tLSBsaWJoYXJ1LVJFTEVBU0VfMl8zXzAvc3JjL0NNYWtlTGlzdHMudHh0CTIwMTMtMTAtMzAgMjA6MTE6NTkuMDAwMDAwMDAwICswNzAwCisrKysgbGliaGFydS1SRUxFQVNFXzJfM18wX2NtYWtlL3NyYy9DTWFrZUxpc3RzLnR4dAkyMDE3LTA2LTAxIDE2OjA4OjQ1LjQyNTEwNTc0NiArMDcwMAorQEAgLTkwLDExICs5MCwxMyBAQCBpZihMSUJIUERGX1NIQVJFRCkKKyAgIHRhcmdldF9saW5rX2xpYnJhcmllcygke0xJQkhQREZfTkFNRX0gJHtBRERJVElPTkFMX0xJQlJBUklFU30pCisgICBpZihXSU4zMiBBTkQgTk9UIENZR1dJTikKKyAgIAlzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtMSUJIUERGX05BTUV9IFBST1BFUlRJRVMgREVGSU5FX1NZTUJPTCBIUERGX0RMTF9NQUtFKQorKyAgZWxzZShXSU4zMiBBTkQgTk9UIENZR1dJTikKKysgIAlzZXRfdGFyZ2V0X3Byb3BlcnRpZXMoJHtMSUJIUERGX05BTUV9IFBST1BFUlRJRVMgU09WRVJTSU9OICR7TElCSFBERl9WRVJTSU9OfSkKKyAgIGVuZGlmKFdJTjMyIEFORCBOT1QgQ1lHV0lOKQorICAgaW5zdGFsbCgKKyAgICAgVEFSR0VUUyAke0xJQkhQREZfTkFNRX0KKy0gICAgQVJDSElWRSBERVNUSU5BVElPTiBsaWIKKy0gICAgTElCUkFSWSBERVNUSU5BVElPTiBsaWIKKysgICAgQVJDSElWRSBERVNUSU5BVElPTiAke0xJQl9JTlNUQUxMX0RJUn0KKysgICAgTElCUkFSWSBERVNUSU5BVElPTiAke0xJQl9JTlNUQUxMX0RJUn0KKyAgICAgUlVOVElNRSBERVNUSU5BVElPTiBiaW4KKyAgICkKKyBlbmRpZihMSUJIUERGX1NIQVJFRCkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmhhcnUvbGliaGFydV8yLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmhhcnUvbGliaGFydV8yLjMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDFhMzdjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGliaGFydS9saWJoYXJ1XzIuMy4wLmJiCkBAIC0wLDAgKzEsMjMgQEAKK1NVTU1BUlkgPSAiZnJlZSBQREYgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJoYXJ1Lm9yZyIKK0RFU0NSSVBUSU9OID0gImxpYkhhcnUgaXMgYSBsaWJyYXJ5IGZvciBnZW5lcmF0aW5nIFBERiBmaWxlcy4gXAorICAgICAgICAgICAgICAgSXQgaXMgZnJlZSwgb3BlbiBzb3VyY2UsIHdyaXR0ZW4gaW4gQU5TSSBDIGFuZCBjcm9zcyBwbGF0Zm9ybS4gIgorCitMSUNFTlNFID0gIlpsaWIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PTNlZTZiYzFmNjRkOWNjNzkwN2Y0NDg0MGM4ZTUwY2IxIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGliaGFydS9saWJoYXJ1LmdpdDticmFuY2g9Ml8zIFwKKyAgICAgICAgICAgZmlsZTovL2xpYmhhcnUtUkVMRUFTRV8yXzNfMF9jbWFrZS5wYXRjaCBcCisJICAgIgorCitTUkNSRVYgPSAiNGFlMWQ1ZjRjODQ0NTlmMTMwYmYxYjFlZjRjNWMzMzBhZjhlY2E1ZCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorREVQRU5EUyArPSAibGlicG5nIHpsaWIiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICBta2RpciAtcCAke0R9LyR7ZGF0YWRpcn0vbGliaGFydQorICAgICBtdiAke0R9L2xpYmhhcnUgJHtEfS8ke2RhdGFkaXJ9Cit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJpaW8vbGliaWlvX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmlpby9saWJpaW9fZ2l0LmJiCmluZGV4IGI1M2JhNDYuLmY4M2Q5YzkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmlpby9saWJpaW9fZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYmlpby9saWJpaW9fZ2l0LmJiCkBAIC00LDExICs0LDExIEBACiBMSUNFTlNFID0gIkxHUEx2Mi4xKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT03YzEzYjMzNzZjZWEwY2U2OGQyZDJkYTBhMWIzYTcyYyIKIAotIyB2MC4xOCArIGEgc2luZ2xlIGNvbW1pdCBmaXhpbmcgdGhlIGJ1aWxkCi1TUkNSRVYgPSAiNTA5MDYwM2QwMTc3OWJiMTcxN2ZiMGM1MDk1MzMzMGU4NzcwNTUwZiIKLVBWID0gIjAuMTgrZ2l0JHtTUkNQVn0iCitTUkNSRVYgPSAiNWY1YWYyZTQxNzEyOWFkOGY0ZTA1ZmM1YzFiNzMwZjA2OTRkY2ExMiIKK1BWID0gIjAuMTkrZ2l0JHtTUkNQVn0iCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9hbmFsb2dkZXZpY2VzaW5jL2xpYmlpby5naXQ7cHJvdG9jb2w9aHR0cHMiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrKFwuXGQrKSspIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGRfMC45LjY5LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWljcm9odHRwZC9saWJtaWNyb2h0dHBkXzAuOS42OS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRhZWFmNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGRfMC45LjY5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQSBzbWFsbCBDIGxpYnJhcnkgdGhhdCBpcyBzdXBwb3NlZCB0byBtYWtlIGl0IGVhc3kgdG8gcnVuIGFuIEhUVFAgc2VydmVyIGFzIHBhcnQgb2YgYW5vdGhlciBhcHBsaWNhdGlvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJtaWNyb2h0dHBkLyIKLUxJQ0VOU0UgPSAiTEdQTC0yLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTdkMDkyODVmZWFjOGE2NGVmYTg3OGU2OTJiMTRmMzYiCi1TRUNUSU9OID0gIm5ldCIKLQotREVQRU5EUyA9ICJmaWxlIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlibWljcm9odHRwZC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzY2UwM2RiMWYxMDAwNzUxN2NlY2YwNWUwNDAwNjlhZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmYjliNmIxNDhiNzg3NDkzZTYzN2QzMDgzNTg4NzExZTY1Y2JjYjcyNmZhMDJjZWUyY2Q1NDNjNWRlMjdlMzdlIgotCi1pbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBwa2djb25maWcgZ2V0dGV4dAotCi1DRkxBR1MgKz0gIi1wdGhyZWFkIC1EX1JFRU5UUkFOVCIKLQotRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtc3RhdGljIC0td2l0aC1nbnV0bHM9JHtTVEFHSU5HX0xJQkRJUn0vLi4vIgotCi1QQUNLQUdFQ09ORklHID89ICJjdXJsIGh0dHBzIgotUEFDS0FHRUNPTkZJR19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIlwKLSAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnbGFyZ2VmaWxlJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbbGFyZ2VmaWxlXSA9ICItLWVuYWJsZS1sYXJnZWZpbGUsLS1kaXNhYmxlLWxhcmdlZmlsZSwsIgotUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItLWVuYWJsZS1jdXJsLC0tZGlzYWJsZS1jdXJsLGN1cmwsIgotUEFDS0FHRUNPTkZJR1todHRwc10gPSAiLS1lbmFibGUtaHR0cHMsLS1kaXNhYmxlLWh0dHBzLGxpYmdjcnlwdCBnbnV0bHMsIgotCi1kb19jb21waWxlX2FwcGVuZCgpIHsKLSAgICBzZWQgLWkgczotTCR7U1RBR0lOR19MSUJESVJ9OjpnIGxpYm1pY3JvaHR0cGQucGMKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm1pY3JvaHR0cGQvbGlibWljcm9odHRwZF8wLjkuNzAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGRfMC45LjcwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk0OTc2ZDIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaWNyb2h0dHBkL2xpYm1pY3JvaHR0cGRfMC45LjcwLmJiCkBAIC0wLDAgKzEsMzAgQEAKK0RFU0NSSVBUSU9OID0gIkEgc21hbGwgQyBsaWJyYXJ5IHRoYXQgaXMgc3VwcG9zZWQgdG8gbWFrZSBpdCBlYXN5IHRvIHJ1biBhbiBIVFRQIHNlcnZlciBhcyBwYXJ0IG9mIGFub3RoZXIgYXBwbGljYXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlibWljcm9odHRwZC8iCitMSUNFTlNFID0gIkxHUEwtMi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU3ZDA5Mjg1ZmVhYzhhNjRlZmE4NzhlNjkyYjE0ZjM2IgorU0VDVElPTiA9ICJuZXQiCisKK0RFUEVORFMgPSAiZmlsZSIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2xpYm1pY3JvaHR0cGQvJHtCUE59LSR7UFZ9LnRhci5neiBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiZGNkNjA0NWVjYjRlYTE4YzEyMGFmZWRjY2JkMWRhNzQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTBkMGEzZDM5NmY5NmY5YmM0MWViMGY3ZTgxODc3OTYwNDkyODVmYWJlZjgyNjA0YWNkNDg3OTU5MDk3NzMwNyIKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgcGtnY29uZmlnIGdldHRleHQKKworQ0ZMQUdTICs9ICItcHRocmVhZCAtRF9SRUVOVFJBTlQiCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXN0YXRpYyAtLXdpdGgtZ251dGxzPSR7U1RBR0lOR19MSUJESVJ9Ly4uLyIKKworUEFDS0FHRUNPTkZJRyA/PSAiY3VybCBodHRwcyIKK1BBQ0tBR0VDT05GSUdfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCisgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2xhcmdlZmlsZScsIGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2xhcmdlZmlsZV0gPSAiLS1lbmFibGUtbGFyZ2VmaWxlLC0tZGlzYWJsZS1sYXJnZWZpbGUsLCIKK1BBQ0tBR0VDT05GSUdbY3VybF0gPSAiLS1lbmFibGUtY3VybCwtLWRpc2FibGUtY3VybCxjdXJsLCIKK1BBQ0tBR0VDT05GSUdbaHR0cHNdID0gIi0tZW5hYmxlLWh0dHBzLC0tZGlzYWJsZS1odHRwcyxsaWJnY3J5cHQgZ251dGxzLCIKKworZG9fY29tcGlsZV9hcHBlbmQoKSB7CisgICAgc2VkIC1pIHM6LUwke1NUQUdJTkdfTElCRElSfTo6ZyBsaWJtaWNyb2h0dHBkLnBjCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaW1ldGljL2xpYm1pbWV0aWMvMDAwMS1saWJtaW1ldGljLVJlbW92aW5nLXRlc3QtZGlyZWN0b3J5LWZyb20tdGhlLU1ha2VmaWxlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWltZXRpYy9saWJtaW1ldGljLzAwMDEtbGlibWltZXRpYy1SZW1vdmluZy10ZXN0LWRpcmVjdG9yeS1mcm9tLXRoZS1NYWtlZmlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MGNkNGQ0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWltZXRpYy9saWJtaW1ldGljLzAwMDEtbGlibWltZXRpYy1SZW1vdmluZy10ZXN0LWRpcmVjdG9yeS1mcm9tLXRoZS1NYWtlZmlsZS5wYXRjaApAQCAtMCwwICsxLDY3IEBACitGcm9tIDY0ZmQyNWFmNWZlYTNhM2M5YzEyMTIyYTJmZDBmYWIzY2Q0MjBmNzIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBhc21pdGswMS1pbiA8YXNtaXRrMDFAaW4uaWJtLmNvbT4KK0RhdGU6IFdlZCwgNSBGZWIgMjAyMCAwMDoxNDo0MiAtMDYwMAorU3ViamVjdDogW1BBVENIXSBsaWJtaW1ldGljOiBSZW1vdmluZyB0ZXN0IGRpcmVjdG9yeSBmcm9tIHRoZSBNYWtlZmlsZQorCitUaGUgdGVzdCBkaXJlY3RvcnkgaXMgcmVtb3ZlZCBhcyB0aGVyZSB3ZXJlIGVycm9ycyAocmVsb2NhdGlvbiBlcnJvcnMpCitzaW5jZSB0aGUgc2hhcmVkIG9iamVjdCBmaWxlcyBvZiBsaWJjKysgYW5kIGxpYmMgd2VyZSBub3QgdGFrZW4gZnJvbSB0aGUKK3N5c3Jvb3QgcGF0aCBidXQgZnJvbSB0aGUgc3lzdGVtJ3MgbGlicmFyeSBwYXRoIHdoZXJlIHRoZSByZXF1aXJlZAordmVyc2lvbiBvZiB0aGUgLnNvIGlzIG5vdCBwcmVzZW50LgorCitUaGUgZmlsZXMgJ21pbWV0aWMvY29kZWMvb3RoZXJfY29kZWNzLmgnIGFuZCAnbWltZXRpYy9jb250ZW50dHlwZS5jeHgnCitjb250YWlucyBjaGFuZ2VzIHRoYXQgcmVzb2x2ZXMgZXJyb3JzIHdoZW4gY29tcGlsaW5nIG9uIHRhcmdldCBzeXN0ZW0KK2FhcmNoNjQteW9lLWxpbnV4LW11c2wuCisKK1NpZ25lZC1vZmYtYnk6IGFzbWl0azAxLWluIDxhc21pdGswMUBpbi5pYm0uY29tPgorQ2hhbmdlLUlkOiBJMTgyMmIzNmFkNGExZmE1ZTdiMTY1ZDhjYWMzYTZlOTZhY2ExMWMzNQorLS0tCisgTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICB8IDIgKy0KKyBtaW1ldGljL2NvZGVjL290aGVyX2NvZGVjcy5oIHwgNCArKysrCisgbWltZXRpYy9jb250ZW50dHlwZS5jeHggICAgICB8IDQgKysrKworIDMgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCA2MzRiZDRjLi5jN2NiYWU3IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMSw2ICsxLDYgQEAKKyBNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9IE1ha2VmaWxlIE1ha2VmaWxlLmluIGNvbmZpZy5jYWNoZQorIEVYVFJBX0RJU1Q9TElDRU5TRSBtNAorLVNVQkRJUlMgPSBtaW1ldGljIGRvYyBleGFtcGxlcyB0ZXN0IHdpbjMyCisrU1VCRElSUyA9IG1pbWV0aWMgZG9jIGV4YW1wbGVzIHdpbjMyCisgSU5DTFVERVM9LUkkKHRvcF9zcmNkaXIpCisgQUNMT0NBTF9BTUZMQUdTPS1JIG00CisKK2RpZmYgLS1naXQgYS9taW1ldGljL2NvZGVjL290aGVyX2NvZGVjcy5oIGIvbWltZXRpYy9jb2RlYy9vdGhlcl9jb2RlY3MuaAoraW5kZXggYzRjY2YzZi4uMGZjODhmZCAxMDA2NDQKKy0tLSBhL21pbWV0aWMvY29kZWMvb3RoZXJfY29kZWNzLmgKKysrKyBiL21pbWV0aWMvY29kZWMvb3RoZXJfY29kZWNzLmgKK0BAIC04LDYgKzgsMTAgQEAKKyAjZGVmaW5lIF9NSU1FVElDX0NPREVDX09USEVSX0NPREVDU19IXworICNpbmNsdWRlIDxtaW1ldGljL2NvZGVjL2NvZGVjX2Jhc2UuaD4KKworKyNpZm5kZWYgX19HTElCQ19fCisrICAgIHR5cGVkZWYgdW5zaWduZWQgaW50IHVpbnQ7CisrI2VuZGlmCisrCisgbmFtZXNwYWNlIG1pbWV0aWMKKyB7CisKK2RpZmYgLS1naXQgYS9taW1ldGljL2NvbnRlbnR0eXBlLmN4eCBiL21pbWV0aWMvY29udGVudHR5cGUuY3h4CitpbmRleCA1MjIwODJkLi4wNTc3ZDQ0IDEwMDY0NAorLS0tIGEvbWltZXRpYy9jb250ZW50dHlwZS5jeHgKKysrKyBiL21pbWV0aWMvY29udGVudHR5cGUuY3h4CitAQCAtMTMsNiArMTMsMTAgQEAKKyAjaW5jbHVkZSA8bWltZXRpYy90b2tlbml6ZXIuaD4KKyAjaW5jbHVkZSA8bWltZXRpYy91dGlscy5oPgorCisrI2lmbmRlZiBfX0dMSUJDX18KKysgICAgdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDsKKysjZW5kaWYKKysKKyBuYW1lc3BhY2UgbWltZXRpYworIHsKKyB1c2luZyBuYW1lc3BhY2Ugc3RkOworLS0gCisyLjkuMworCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaW1ldGljL2xpYm1pbWV0aWMvMDAwMS1taW1ldGljLUNoZWNrLWZvci1NTUFQX0ZBSUxFRC1yZXR1cm4tZnJvbS1tbWFwLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWltZXRpYy9saWJtaW1ldGljLzAwMDEtbWltZXRpYy1DaGVjay1mb3ItTU1BUF9GQUlMRUQtcmV0dXJuLWZyb20tbW1hcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jN2M4ZDYyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlibWltZXRpYy9saWJtaW1ldGljLzAwMDEtbWltZXRpYy1DaGVjay1mb3ItTU1BUF9GQUlMRUQtcmV0dXJuLWZyb20tbW1hcC5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIGY4YWIyYjFhYWEzN2Y2YmE5ZDUyN2E5OWNiMzdiNmFjMjE3MWUxMjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNCBGZWIgMjAyMCAxNzowMzoxMiAtMDgwMAorU3ViamVjdDogW1BBVENIXSBtaW1ldGljOiBDaGVjayBmb3IgTU1BUF9GQUlMRUQgcmV0dXJuIGZyb20gbW1hcCgpCisKK0F2b2lkcyB1c2luZyBncmVhdGVyIHRoYW4gemVybyBjb21wYXJpc2lvbiBvbiBwb2ludGVycworCitGaXhlcworbWltZXRpYy9vcy9tbWZpbGUuY3h4OjYwOjE0OiBlcnJvcjogb3JkZXJlZCBjb21wYXJpc29uIGJldHdlZW4gcG9pbnRlciBhbmQgemVybyAoJ2NoYXIgKicgYW5kICdpbnQnKQorCitpZihtX2JlZyA+IDApCit+fn5+IF4gfgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBtaW1ldGljL29zL21tZmlsZS5jeHggfCAxNiArKysrKysrLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL21pbWV0aWMvb3MvbW1maWxlLmN4eCBiL21pbWV0aWMvb3MvbW1maWxlLmN4eAoraW5kZXggZGZjOTViNy4uZWQ0ZmY1NSAxMDA2NDQKKy0tLSBhL21pbWV0aWMvb3MvbW1maWxlLmN4eAorKysrIGIvbWltZXRpYy9vcy9tbWZpbGUuY3h4CitAQCAtNTcsMTUgKzU3LDEzIEBAIGJvb2wgTU1GaWxlOjpvcGVuKGludCBtb2RlKQorIGJvb2wgTU1GaWxlOjptYXAoKQorIHsKKyAgICAgbV9iZWcgPSAoY2hhciopIG1tYXAoMCwgbV9zdC5zdF9zaXplLCBQUk9UX1JFQUQsIE1BUF9TSEFSRUQsbV9mZCwwKTsKKy0gICAgaWYobV9iZWcgPiAwKQorLSAgICB7CistICAgICAgICBtX2VuZCA9IG1fYmVnICsgbV9zdC5zdF9zaXplOworLSAgICAgICAgI2lmIEhBVkVfTUFEVklTRQorLSAgICAgICAgbWFkdmlzZShtX2JlZywgbV9zdC5zdF9zaXplLCBNQURWX1NFUVVFTlRJQUwpOworLSAgICAgICAgI2VuZGlmCistICAgICAgICByZXR1cm4gdHJ1ZTsKKy0gICAgfQorLSAgICByZXR1cm4gZmFsc2U7CisrICAgIGlmKG1fYmVnID09IE1BUF9GQUlMRUQpCisrICAgICAgICByZXR1cm4gZmFsc2U7CisrICAgIG1fZW5kID0gbV9iZWcgKyBtX3N0LnN0X3NpemU7CisrICAgICNpZiBIQVZFX01BRFZJU0UKKysgICAgbWFkdmlzZShtX2JlZywgbV9zdC5zdF9zaXplLCBNQURWX1NFUVVFTlRJQUwpOworKyAgICAjZW5kaWYKKysgICAgcmV0dXJuIHRydWU7CisgfQorIAorIE1NRmlsZTo6fk1NRmlsZSgpCistLSAKKzIuMjUuMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaW1ldGljL2xpYm1pbWV0aWNfMC45LjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJtaW1ldGljL2xpYm1pbWV0aWNfMC45LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTkwYzRlYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYm1pbWV0aWMvbGlibWltZXRpY18wLjkuOC5iYgpAQCAtMCwwICsxLDI0IEBACisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZS4KKworU1VNTUFSWSA9ICJNaW1ldGljIExpYnJhcnkgZm9yIG11bHRpLXBhcnQgcGFyc2luZyIKK0RFU0NSSVBUSU9OID0gIkVtYWlsIGxpYnJhcnkgKE1JTUUpIHdyaXR0ZW4gaW4gQysrIGRlc2lnbmVkIHRvIGJlIGVhc3kgdG8gdXNlIGFuZCBpbnRlZ3JhdGUgYnV0IHlldCBmYXN0IGFuZCBlZmZpY2llbnQuIgorQVVUSE9SID0gIlN0ZWZhbm8gQmFyYmF0byA8c3RlZmFub0Bjb2Rlc2luay5vcmc+IgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5jb2Rlc2luay5vcmcvbWltZXRpY19taW1lX2xpYnJhcnkuaHRtbCIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0xhZGlzbGF2U29wa28vbWltZXRpYy9pc3N1ZXMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjQ5ZGE3ZGYwY2E0NzllZjAxZmY3ZjJkNzk5ZWFiZWUiCisKK1NSQ1JFViA9ICI1MDQ4NmFmOTliNGY5YjM1NTIyZDdiM2RlNDBiNmNlMTA3NTA1Mjc5IgorU1JDX1VSSSArPSAiZ2l0Oi8vZ2l0aHViLmNvbS9MYWRpc2xhdlNvcGtvL21pbWV0aWMvIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYm1pbWV0aWMtUmVtb3ZpbmctdGVzdC1kaXJlY3RvcnktZnJvbS10aGUtTWFrZWZpbGUucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtbWltZXRpYy1DaGVjay1mb3ItTU1BUF9GQUlMRUQtcmV0dXJuLWZyb20tbW1hcC5wYXRjaCBcCisgICAgICAgICAgICIKKworVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitDWFhGTEFHUyArPSAiLVduby1uYXJyb3dpbmciCisKK2luaGVyaXQgYXV0b3Rvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJwMTEvbGlicDExXzAuNC4xMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnAxMS9saWJwMTFfMC40LjEwLmJiCmluZGV4IDY1NWRiNDkuLjdmZTA2NDAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnAxMS9saWJwMTFfMC40LjEwLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnAxMS9saWJwMTFfMC40LjEwLmJiCkBAIC0xMiw2ICsxMiw4IEBACiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vT3BlblNDL2xpYnAxMS5naXQiCiBTUkNSRVYgPSAiOTczZDMxZjNmNThkNTU0OWRkZDhiMWY4MjJjZThmNzIxODZmOWQ2OCIKIAorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAibGlicDExLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKKwogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJyc3luYy9saWJyc3luY18yLjIuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnJzeW5jL2xpYnJzeW5jXzIuMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMmYyOGZlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnJzeW5jL2xpYnJzeW5jXzIuMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJSZW1vdGUgZGVsdGEtY29tcHJlc3Npb24gbGlicmFyeS4iCi1BVVRIT1IgPSAiTWFydGluIFBvb2wsIEFuZHJldyBUcmlkZ2VsbCwgRG9ub3ZhbiBCYWFyZGEsIEFkYW0gU2NodWJlcnQiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDgwNDVmM2I4ZjkyOWMxY2IyOWExZTNmZDczN2I0OTkiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saWJyc3luYy9saWJyc3luYy5naXQiCi1TUkNSRVYgPSAiNTkxNzY5MjQxODY1N2RjNzhjOWNiZGUzYThkYjRjODVmMjViOWM4ZCIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLURFUEVORFMgPSAicG9wdCIKLQotaW5oZXJpdCBjbWFrZQotCi1QQUNLQUdFUyA9KyAicmRpZmYiCi1GSUxFU19yZGlmZiA9ICIke2JpbmRpcn0vcmRpZmYiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnJzeW5jL2xpYnJzeW5jXzIuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlicnN5bmMvbGlicnN5bmNfMi4zLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTlkMzRlZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnJzeW5jL2xpYnJzeW5jXzIuMy4wLmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiUmVtb3RlIGRlbHRhLWNvbXByZXNzaW9uIGxpYnJhcnkuIgorQVVUSE9SID0gIk1hcnRpbiBQb29sLCBBbmRyZXcgVHJpZGdlbGwsIERvbm92YW4gQmFhcmRhLCBBZGFtIFNjaHViZXJ0IgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQ4MDQ1ZjNiOGY5MjljMWNiMjlhMWUzZmQ3MzdiNDk5IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGlicnN5bmMvbGlicnN5bmMuZ2l0IgorU1JDUkVWID0gIjAyOGQ5NDMyZDA1YmE0Yjc1MjM5ZTBiYTM1YmNiMzZmYmZjMTdlMzUiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitERVBFTkRTID0gInBvcHQiCisKK2luaGVyaXQgY21ha2UKKworUEFDS0FHRVMgPSsgInJkaWZmIgorRklMRVNfcmRpZmYgPSAiJHtiaW5kaXJ9L3JkaWZmIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzc2gvbGlic3NoXzAuOC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic3NoL2xpYnNzaF8wLjguNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjA0MGVjOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJzc2gvbGlic3NoXzAuOC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJNdWx0aXBsYXRmb3JtIEMgbGlicmFyeSBpbXBsZW1lbnRpbmcgdGhlIFNTSHYyIGFuZCBTU0h2MSBwcm90b2NvbCIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubGlic3NoLm9yZyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zODhhNGZiMWRlYThjZWFlMGJlNzhiYTliMDFmYzEzOSIKLQotREVQRU5EUyA9ICJ6bGliIG9wZW5zc2wgbGliZ2NyeXB0IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5saWJzc2gub3JnL3Byb2plY3RzL2xpYnNzaC5naXQ7YnJhbmNoPXN0YWJsZS0wLjgiCi1TUkNSRVYgPSAiNzg5ZGYwYjdkMGM3YWJkNmI4NWRiOWZjNTI0N2UxNDZlM2Q0ZGRiYSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBjbWFrZQotCi1QQUNLQUdFQ09ORklHID8/PSIiCi1QQUNLQUdFQ09ORklHW2dzc2FwaV0gPSAiLURXSVRIX0dTU0FQST0xLCAtRFdJVEhfR1NTQVBJPTAsIGtyYjUsICIKLQotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi0KLUVYVFJBX09FQ01BS0UgPSAiIFwKLSAgICAtRFdJVEhfR0NSWVBUPTEgXAotICAgIC1EV0lUSF9QQ0FQPTEgXAotICAgIC1EV0lUSF9TRlRQPTEgXAotICAgIC1EV0lUSF9aTElCPTEgXAotICAgIC1ETElCX1NVRkZJWD0ke0BkLmdldFZhcignYmFzZWxpYicpLnJlcGxhY2UoJ2xpYicsICcnKX0gXAotICAgICIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgICMgRGlzYWJsZSBidWlsZGluZyBvZiBleGFtcGxlcwotICAgIHNlZCAtaSAtZSAnL2FkZF9zdWJkaXJlY3RvcnkoZXhhbXBsZXMpL3MvXi8jRE9OT1RXQU5ULycgJHtTfS9DTWFrZUxpc3RzLnR4dCBcCi0gICAgICAgIHx8IGJiZmF0YWwgIkZhaWxlZCB0byBkaXNhYmxlIGV4YW1wbGVzIgotfQotCi1UT09MQ0hBSU4gPSAiZ2NjIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlic3NoL2xpYnNzaF8wLjguOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNzaC9saWJzc2hfMC44LjkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzllZDhhOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnNzaC9saWJzc2hfMC44LjkuYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJNdWx0aXBsYXRmb3JtIEMgbGlicmFyeSBpbXBsZW1lbnRpbmcgdGhlIFNTSHYyIGFuZCBTU0h2MSBwcm90b2NvbCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGlic3NoLm9yZyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kYWJiNDk1OGI4MzBlNWRmMTFkMmIwZWQ4ZWEyNTVhMCIKKworREVQRU5EUyA9ICJ6bGliIG9wZW5zc2wgbGliZ2NyeXB0IgorCitTUkNfVVJJID0gImdpdDovL2dpdC5saWJzc2gub3JnL3Byb2plY3RzL2xpYnNzaC5naXQ7YnJhbmNoPXN0YWJsZS0wLjgiCitTUkNSRVYgPSAiMDQ2ODVhNzRkZjljZTFkYjFiYzExNmE4M2EwZGE3OGI0ZjRmYTFmOCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitQQUNLQUdFQ09ORklHID8/PSIiCitQQUNLQUdFQ09ORklHW2dzc2FwaV0gPSAiLURXSVRIX0dTU0FQST0xLCAtRFdJVEhfR1NTQVBJPTAsIGtyYjUsICIKKworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCisKK0VYVFJBX09FQ01BS0UgPSAiIFwKKyAgICAtRFdJVEhfR0NSWVBUPTEgXAorICAgIC1EV0lUSF9QQ0FQPTEgXAorICAgIC1EV0lUSF9TRlRQPTEgXAorICAgIC1EV0lUSF9aTElCPTEgXAorICAgIC1ETElCX1NVRkZJWD0ke0BkLmdldFZhcignYmFzZWxpYicpLnJlcGxhY2UoJ2xpYicsICcnKX0gXAorICAgICIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgICMgRGlzYWJsZSBidWlsZGluZyBvZiBleGFtcGxlcworICAgIHNlZCAtaSAtZSAnL2FkZF9zdWJkaXJlY3RvcnkoZXhhbXBsZXMpL3MvXi8jRE9OT1RXQU5ULycgJHtTfS9DTWFrZUxpc3RzLnR4dCBcCisgICAgICAgIHx8IGJiZmF0YWwgIkZhaWxlZCB0byBkaXNhYmxlIGV4YW1wbGVzIgorfQorCitUT09MQ0hBSU4gPSAiZ2NjIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtLzAwMDEtdGVhbV9iYXNpY190ZXN0LnB5LXVzZS1weXRob24zLWludGVycHJldGVyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtLzAwMDEtdGVhbV9iYXNpY190ZXN0LnB5LXVzZS1weXRob24zLWludGVycHJldGVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyN2U0ZjMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW0vMDAwMS10ZWFtX2Jhc2ljX3Rlc3QucHktdXNlLXB5dGhvbjMtaW50ZXJwcmV0ZXIucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA1NzFjMTQxYjQzNGRmZjEzNDk0YzZhM2FmZTYyMWY2M2E4ZTYxMGU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmV5IFpoaXpoaWtpbiA8YW5kcmV5LnpAZ21haWwuY29tPgorRGF0ZTogTW9uLCAyNyBKYW4gMjAyMCAxNDoyOTozNCArMDAwMAorU3ViamVjdDogW1BBVENIXSB0ZWFtX2Jhc2ljX3Rlc3QucHk6IHVzZSBweXRob24zIGludGVycHJldGVyCisKK1VzZSBweXRob24zIHNpbmNlIHB5dGhvbjIgaXMgRU9MIGFuZCBoYXMgYmVlbiByZW1vdmVkIGZyb20gc2V2ZXJhbAorZGlzdHJpYnV0aW9ucy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJleSBaaGl6aGlraW4gPGFuZHJleS56QGdtYWlsLmNvbT4KKy0tLQorIHNjcmlwdHMvdGVhbV9iYXNpY190ZXN0LnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2NyaXB0cy90ZWFtX2Jhc2ljX3Rlc3QucHkgYi9zY3JpcHRzL3RlYW1fYmFzaWNfdGVzdC5weQoraW5kZXggYjA1YmU5ZS4uYWQ5ODBlOCAxMDA3NTUKKy0tLSBhL3NjcmlwdHMvdGVhbV9iYXNpY190ZXN0LnB5CisrKysgYi9zY3JpcHRzL3RlYW1fYmFzaWNfdGVzdC5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhIC91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgQmFzaWMgdGVzdC4KKyAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbS9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW0vcnVuLXB0ZXN0CmluZGV4IDRiYTVhY2YuLmI1YzZmNGUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbS9ydW4tcHRlc3QKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtL3J1bi1wdGVzdApAQCAtMSwzICsxLDMgQEAKICMhL2Jpbi9zaAogCi1weXRob24gJChkaXJuYW1lICQwKS90ZWFtX2Jhc2ljX3Rlc3QucHkKK3B5dGhvbjMgJChkaXJuYW1lICQwKS90ZWFtX2Jhc2ljX3Rlc3QucHkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbV8xLjI5LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtXzEuMjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgyMWNhMTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGVhbS9saWJ0ZWFtXzEuMjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIGNvbnRyb2xsaW5nIHRlYW0gbmV0d29yayBkZXZpY2UiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYnRlYW0ub3JnLyIKLVNFQ1RJT04gPSAibGlicy9uZXR3b3JrIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLURFUEVORFMgPSAibGlibmwgbGliZGFlbW9uIGphbnNzb24iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9qcGlya28vbGlidGVhbSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXNlbGVjdC5oLWZvci1mZF9zZXQtZGVmaW5pdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXRlYW1kLVJlLWFkanVzdC1pbmNsdWRlLWhlYWRlci1vcmRlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlYW1fYmFzaWNfdGVzdC5weS1kaXNhYmxlLVJlZEhhdC1zcGVjaWZpYy10ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICIKLVNSQ1JFViA9ICJlODk3ZjAyYmYyNDAzZDQ4NTlhOTllMDkwZTM0ZWE3NjhiNGMwNTQwIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHRlc3QKLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYnRlYW0ke1NPTElCU30gXAotIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tZGN0bCAke1BOfS11dGlscyIKLUZJTEVTXyR7UE59LWRjdGwgPSAiJHtsaWJkaXJ9L2xpYnRlYW1kY3RsJHtTT0xJQlN9IFwKLSIKLUZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS9ib25kMnRlYW0gXAotICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3RlYW1kIFwKLSAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS90ZWFtZGN0bCBcCi0gICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vdGVhbW5sIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tdXRpbHMgPSAiYmFzaCIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gInB5dGhvbiIKLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlpbnN0YWxsICR7U30vc2NyaXB0cy90ZWFtX2Jhc2ljX3Rlc3QucHkgJHtEfSR7UFRFU1RfUEFUSH0vCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW1fMS4zMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRlYW0vbGlidGVhbV8xLjMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljZDAyYjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0ZWFtL2xpYnRlYW1fMS4zMC5iYgpAQCAtMCwwICsxLDQwIEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIGNvbnRyb2xsaW5nIHRlYW0gbmV0d29yayBkZXZpY2UiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYnRlYW0ub3JnLyIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK0RFUEVORFMgPSAibGlibmwgbGliZGFlbW9uIGphbnNzb24iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9qcGlya28vbGlidGVhbSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtc3lzLXNlbGVjdC5oLWZvci1mZF9zZXQtZGVmaW5pdGlvbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXRlYW1kLVJlLWFkanVzdC1pbmNsdWRlLWhlYWRlci1vcmRlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlYW1fYmFzaWNfdGVzdC5weS1kaXNhYmxlLVJlZEhhdC1zcGVjaWZpYy10ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVhbV9iYXNpY190ZXN0LnB5LXVzZS1weXRob24zLWludGVycHJldGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICIKK1NSQ1JFViA9ICI0NzFmYjUwZDIwNmU1YTNmMmVlZjllNDI0NzMyOWI1MWVkYzVjNDkzIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHRlc3QKKworRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYnRlYW0ke1NPTElCU30gXAorIgorCitQQUNLQUdFUyArPSAiJHtQTn0tZGN0bCAke1BOfS11dGlscyIKK0ZJTEVTXyR7UE59LWRjdGwgPSAiJHtsaWJkaXJ9L2xpYnRlYW1kY3RsJHtTT0xJQlN9IFwKKyIKK0ZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS9ib25kMnRlYW0gXAorICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3RlYW1kIFwKKyAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS90ZWFtZGN0bCBcCisgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vdGVhbW5sIFwKKyIKKworUkRFUEVORFNfJHtQTn0tdXRpbHMgPSAiYmFzaCIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gInB5dGhvbjMtY29yZSIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsICR7U30vc2NyaXB0cy90ZWFtX2Jhc2ljX3Rlc3QucHkgJHtEfSR7UFRFU1RfUEFUSH0vCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saWJ0aW55eG1sMi9saWJ0aW55eG1sMl83LjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRpbnl4bWwyL2xpYnRpbnl4bWwyXzcuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTE5N2E5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRpbnl4bWwyL2xpYnRpbnl4bWwyXzcuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJUaW55WE1MLTIgaXMgYSBzaW1wbGUsIHNtYWxsLCBlZmZpY2llbnQsIEMrKyBYTUwgcGFyc2VyIHRoYXQgY2FuIGJlIGVhc2lseSBpbnRlZ3JhdGluZyBpbnRvIG90aGVyIHByb2dyYW1zIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ncmlubmluZ2xpemFyZC5jb20vdGlueXhtbDIvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJabGliIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTEzNTYyNGVlZjAzZTFmMTEwMWI5YmE5YWM5YjVmZmZkIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGVldGhvbWFzb24vdGlueXhtbDIuZ2l0IgotCi1TUkNSRVYgPSAiOWM3NDBlOGQyMzQxYmQ0NmRiZThlODcwNTNjZGI0ZDkzMTk3MTk2NyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBjbWFrZQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRpbnl4bWwyL2xpYnRpbnl4bWwyXzguMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbGlidGlueXhtbDIvbGlidGlueXhtbDJfOC4wLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTI0OTFjZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpYnRpbnl4bWwyL2xpYnRpbnl4bWwyXzguMC4wLmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAiVGlueVhNTC0yIGlzIGEgc2ltcGxlLCBzbWFsbCwgZWZmaWNpZW50LCBDKysgWE1MIHBhcnNlciB0aGF0IGNhbiBiZSBlYXNpbHkgaW50ZWdyYXRpbmcgaW50byBvdGhlciBwcm9ncmFtcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ3Jpbm5pbmdsaXphcmQuY29tL3Rpbnl4bWwyLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiWmxpYiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0xMzU2MjRlZWYwM2UxZjExMDFiOWJhOWFjOWI1ZmZmZCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xlZXRob21hc29uL3Rpbnl4bWwyLmdpdCIKKworU1JDUkVWID0gImJmMTUyMzNhZDg4MzkwNDYxZjZhYjBkYmNmMDQ2Y2NlNjQzYzVmY2IiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9saW8tdXRpbHMvbGlvLXV0aWxzXzQuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpby11dGlscy9saW8tdXRpbHNfNC4xLmJiCmluZGV4IGVhNTRlNzUuLjBmYjRhNmUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpby11dGlscy9saW8tdXRpbHNfNC4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xpby11dGlscy9saW8tdXRpbHNfNC4xLmJiCkBAIC0xMiw3ICsxMiw3IEBACiBTUkNSRVYgPSAiMGFjOTA5MWMxZmY3YTUyZDU0MzVhNGY0NDQ5ZTgyNjM3MTQyZTA2ZSIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLWluaGVyaXQgZGlzdHV0aWxzCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJCQkZJTEVfQ09MTEVDVElPTlMiLCAibWV0YS1weXRob24yIiwgImRpc3R1dGlscyIsICIiLCBkKX0KIAogRVhUUkFfT0VNQUtFICs9ICJERVNURElSPSR7RH0iCiAKQEAgLTY0LDMgKzY0LDEwIEBACiAjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODQ3MTIvCiAjIHB5dGhvbi1uYXRpdmUvcHl0aG9uOiBjYW4ndCBvcGVuIGZpbGUgJ3NldHVwLnB5JzogW0Vycm5vIDJdIE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKIENMRUFOQlJPS0VOID0gIjEiCisKK3B5dGhvbigpIHsKKyAgICBpZiAnbWV0YS1weXRob24yJyBub3QgaW4gZC5nZXRWYXIoJ0JCRklMRV9DT0xMRUNUSU9OUycpLnNwbGl0KCk6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoJ1JlcXVpcmVzIG1ldGEtcHl0aG9uMiB0byBiZSBwcmVzZW50LicpCit9CisKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG9nNGNwcC9sb2c0Y3BwXzEuMS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG9nNGNwcC9sb2c0Y3BwXzEuMS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxOWI5NDQ2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2xvZzRjcHAvbG9nNGNwcF8xLjEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkEgbGlicmFyeSBvZiBDKysgY2xhc3NlcyBmb3IgZmxleGlibGUgbG9nZ2luZyB0byBmaWxlcywgc3lzbG9nLCBJRFNBIGFuZCBvdGhlciBkZXN0aW5hdGlvbnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9sb2c0Y3BwLyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03ZmJjMzM4MzA5YWMzOGZlZmNkNjRiMDRiYjkwM2UzNCIKLQotUFJDID0gInJjNSIKLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy5zb3VyY2Vmb3JnZS5uZXQvJHtCUE59LyR7QlB9JHtQUkN9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtcGMucGF0Y2g7c3RyaXBsZXZlbD0yIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNThiNDU5MWEyZjNlN2VmM2Q1ZTNlN2NmYjNhODFhNjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTYxMWQ5OWEyMGFmNjY3NmM2MDIxOTc2Mjc3MWMwYmZhYzkwZjQ4NzliYmRlNzAwMzhlY2U3NTMzOGI1ODhlYyIKLQotUyA9ICIke1dPUktESVJ9LyR7QlBOfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICJcCi0gICAgLS1lbmFibGUtZG94eWdlbj1ubyBcCi0gICAgLS1lbmFibGUtZG90PW5vIFwKLSAgICAtLWVuYWJsZS1odG1sLWRvY3M9bm8gXAotICAgIC0tZW5hYmxlLWxhdGV4LWRvY3M9bm8gXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG9nNGNwcC9sb2c0Y3BwXzEuMS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbG9nNGNwcC9sb2c0Y3BwXzEuMS4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM2Zjk0MDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9sb2c0Y3BwL2xvZzRjcHBfMS4xLjMuYmIKQEAgLTAsMCArMSwyMSBAQAorREVTQ1JJUFRJT04gPSAiQSBsaWJyYXJ5IG9mIEMrKyBjbGFzc2VzIGZvciBmbGV4aWJsZSBsb2dnaW5nIHRvIGZpbGVzLCBzeXNsb2csIElEU0EgYW5kIG90aGVyIGRlc3RpbmF0aW9ucy4iCitIT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xvZzRjcHAvIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTdmYmMzMzgzMDlhYzM4ZmVmY2Q2NGIwNGJiOTAzZTM0IgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0LyR7QlBOfS8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZml4LXBjLnBhdGNoO3N0cmlwbGV2ZWw9MiBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImI5ZTJjZWU5MzJkYTk4NzIxMmYyYzc0Yjc2N2I0ZDhiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJjYmJlYTU1YTVkNjg5NWM5ZjAxMTZhOWE5Y2UzYWZiODZkZjM4M2NkMDVjOWQ2YzFhNDIzOGU1ZTVjOGY1MWQiCisKK1MgPSAiJHtXT1JLRElSfS8ke0JQTn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgPSAiXAorICAgIC0tZW5hYmxlLWRveHlnZW49bm8gXAorICAgIC0tZW5hYmxlLWRvdD1ubyBcCisgICAgLS1lbmFibGUtaHRtbC1kb2NzPW5vIFwKKyAgICAtLWVuYWJsZS1sYXRleC1kb2NzPW5vIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21jZWxvZy9tY2UtdGVzdC8wMDAxLWdjb3ZfbWVyZ2UucHktc2Nvdl9tZXJnZS5weS1zd2l0Y2gtdG8tcHl0aG9uMy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21jZWxvZy9tY2UtdGVzdC8wMDAxLWdjb3ZfbWVyZ2UucHktc2Nvdl9tZXJnZS5weS1zd2l0Y2gtdG8tcHl0aG9uMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NjliZmMxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbWNlbG9nL21jZS10ZXN0LzAwMDEtZ2Nvdl9tZXJnZS5weS1zY292X21lcmdlLnB5LXN3aXRjaC10by1weXRob24zLnBhdGNoCkBAIC0wLDAgKzEsMTEwIEBACitGcm9tIDQzMDk4MjM3NmE1NDRiYmNjYWVmNTAwNmZhYjk0YmJjMmYxZDE3MTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaW5nbGkgWXUgPG1pbmdsaS55dUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAxMyBBcHIgMjAyMCAwNzoxMjo0NCArMDAwMAorU3ViamVjdDogW1BBVENIXSBnY292X21lcmdlLnB5L3Njb3ZfbWVyZ2UucHk6IHN3aXRjaCB0byBweXRob24zCisKK01ha2UgZ2Nvdl9tZXJnZS5weSBhbmQgc2Nvdl9tZXJnZS5weSBwb3J0IHRvIHB5dGhvbjMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPG1pbmdsaS55dUB3aW5kcml2ZXIuY29tPgorLS0tCisgdG9vbHMvc2NyaXB0cy9nY292X21lcmdlLnB5IHwgMTIgKysrKysrLS0tLS0tCisgdG9vbHMvc2NyaXB0cy9zY292X21lcmdlLnB5IHwgMTIgKysrKysrLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rvb2xzL3NjcmlwdHMvZ2Nvdl9tZXJnZS5weSBiL3Rvb2xzL3NjcmlwdHMvZ2Nvdl9tZXJnZS5weQoraW5kZXggMGFjOWJlZC4uOWYxY2I4YyAxMDA2NDQKKy0tLSBhL3Rvb2xzL3NjcmlwdHMvZ2Nvdl9tZXJnZS5weQorKysrIGIvdG9vbHMvc2NyaXB0cy9nY292X21lcmdlLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIworICMgTWVyZ2UgZ2NvdiBncmFwaCBmcm9tIHNldmVyYWwgdGVzdCBjYXNlcy4gVGhpcyBjYW4gYmUgdXNlZCB0byBjaGVjaworICMgdGhlIGNvdmVyYWdlIG9mIHNldmVyYWwgdGVzdCBjYXNlcy4KK0BAIC0xMSw3ICsxMSw3IEBACisgaW1wb3J0IHN5cworIAorIGRlZiBkaWUoc3RyKToKKy0gICAgcHJpbnQgc3RyCisrICAgIHByaW50KHN0cikKKyAgICAgc3lzLmV4aXQoLTEpCisgCisgZGVmIGRpZV9vbihjb25kLCBzdHIpOgorQEAgLTU1LDExICs1NSwxMSBAQCBkZWYgbWVyZ2UoZ2NsczEsIGdjbHMyKToKKyAgICAgICAgIGdjbDEubWVyZ2UoZ2NsMikKKyAKKyBkZWYgZ2Nvdl9tZXJnZShmbnMsIG9mKToKKy0gICAgZiA9IGZpbGUoZm5zWzBdKQorKyAgICBmID0gb3BlbihmbnNbMF0pCisgICAgIGdjbHNfYmFzZSA9IHBhcnNlKGYpCisgCisgICAgIGZvciBmbiBpbiBmbnNbMTpdOgorLSAgICAgICAgZiA9IGZpbGUoZm4pCisrICAgICAgICBmID0gb3BlbihmbikKKyAgICAgICAgIGdjbHMgPSBwYXJzZShmKQorICAgICAgICAgbWVyZ2UoZ2Nsc19iYXNlLCBnY2xzKQorIAorQEAgLTY3LDEwICs2NywxMCBAQCBkZWYgZ2Nvdl9tZXJnZShmbnMsIG9mKToKKyAgICAgICAgIGdjbC53cml0ZShvZikKKyAKKyBkZWYgdXNhZ2UoKToKKy0gICAgcHJpbnQgJ1VzYWdlOiAlcyA8Z2NvdiBncmFwaCBmaWxlcz4nICUgKHN5cy5hcmd2WzBdKQorKyAgICBwcmludCgnVXNhZ2U6ICVzIDxnY292IGdyYXBoIGZpbGVzPicgJSAoc3lzLmFyZ3ZbMF0pKQorIAorIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgIGlmIGxlbihzeXMuYXJndikgPD0gMToKKyAgICAgICAgIHVzYWdlKCkKKy0gICAgICAgIGV4aXQgLTEKKysgICAgICAgIHN5cy5leGl0KC0xKQorICAgICBnY292X21lcmdlKHN5cy5hcmd2WzE6XSwgc3lzLnN0ZG91dCkKK2RpZmYgLS1naXQgYS90b29scy9zY3JpcHRzL3Njb3ZfbWVyZ2UucHkgYi90b29scy9zY3JpcHRzL3Njb3ZfbWVyZ2UucHkKK2luZGV4IGY4M2I5MjIuLmJiY2Y3NjAgMTAwNjQ0CistLS0gYS90b29scy9zY3JpcHRzL3Njb3ZfbWVyZ2UucHkKKysrKyBiL3Rvb2xzL3NjcmlwdHMvc2Nvdl9tZXJnZS5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMKKyAjIE1lcmdlIG1jZSBzZXJ2ZXJpdHkgY292ZXJhZ2UgZmlsZSBmcm9tIHNldmVyYWwgdGVzdCBjYXNlcy4gVGhpcyBjYW4KKyAjIGJlIHVzZWQgdG8gY2hlY2sgdGhlIGNvdmVyYWdlIG9mIHNldmVyYWwgdGVzdCBjYXNlcy4KK0BAIC0xMSw3ICsxMSw3IEBACisgaW1wb3J0IHN5cworIAorIGRlZiBkaWUoc3RyKToKKy0gICAgcHJpbnQgc3RyCisrICAgIHByaW50KHN0cikKKyAgICAgc3lzLmV4aXQoLTEpCisgCisgZGVmIGRpZV9vbihjb25kLCBzdHIpOgorQEAgLTQ3LDExICs0NywxMSBAQCBkZWYgbWVyZ2UoZ2NsczEsIGdjbHMyKToKKyAgICAgICAgIGdjbDEubWVyZ2UoZ2NsMikKKyAKKyBkZWYgc2Nvdl9tZXJnZShmbnMsIG9mKToKKy0gICAgZiA9IGZpbGUoZm5zWzBdKQorKyAgICBmID0gb3BlbihmbnNbMF0pCisgICAgIGdjbHNfYmFzZSA9IHBhcnNlKGYpCisgCisgICAgIGZvciBmbiBpbiBmbnNbMTpdOgorLSAgICAgICAgZiA9IGZpbGUoZm4pCisrICAgICAgICBmID0gb3BlbihmbikKKyAgICAgICAgIGdjbHMgPSBwYXJzZShmKQorICAgICAgICAgbWVyZ2UoZ2Nsc19iYXNlLCBnY2xzKQorIAorQEAgLTU5LDEwICs1OSwxMCBAQCBkZWYgc2Nvdl9tZXJnZShmbnMsIG9mKToKKyAgICAgICAgIGdjbC53cml0ZShvZikKKyAKKyBkZWYgdXNhZ2UoKToKKy0gICAgcHJpbnQgJ1VzYWdlOiAlcyA8c2V2ZXJpdGllcyBjb3ZlcmFnZSBmaWxlcz4nICUgKHN5cy5hcmd2WzBdKQorKyAgICBwcmludCgnVXNhZ2U6ICVzIDxzZXZlcml0aWVzIGNvdmVyYWdlIGZpbGVzPicgJSAoc3lzLmFyZ3ZbMF0pKQorIAorIGlmIF9fbmFtZV9fID09ICdfX21haW5fXyc6CisgICAgIGlmIGxlbihzeXMuYXJndikgPD0gMToKKyAgICAgICAgIHVzYWdlKCkKKy0gICAgICAgIGV4aXQgLTEKKysgICAgICAgIHN5cy5leGl0KC0xKQorICAgICBzY292X21lcmdlKHN5cy5hcmd2WzE6XSwgc3lzLnN0ZG91dCkKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21jZWxvZy9tY2UtdGVzdF9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tY2Vsb2cvbWNlLXRlc3RfZ2l0LmJiCmluZGV4IDAwN2IzOTQuLjM1ZmI5NDQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21jZWxvZy9tY2UtdGVzdF9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbWNlbG9nL21jZS10ZXN0X2dpdC5iYgpAQCAtMTIsNiArMTIsNyBAQAogCiBTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vdXRpbHMvY3B1L21jZS9tY2UtdGVzdC5naXQ7cHJvdG9jb2w9Z2l0IFwKICAgICAgICAgICAgZmlsZTovL21ha2VmaWxlLXJlbW92ZS1sZGZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZ2Nvdl9tZXJnZS5weS1zY292X21lcmdlLnB5LXN3aXRjaC10by1weXRob24zLnBhdGNoIFwKICAgICAgICAgICAiCiBTUkNSRVYgPSAiNzY0M2JhZjZjMzkxOWIzZDcyN2U2YmE2YzJlNTQ1ZGM2YTY1MzMwNyIKIFBWID0gIjIwMTkwOTE3K2dpdCR7U1JDUFZ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbWNlbG9nL21jZWxvZ18xNjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tY2Vsb2cvbWNlbG9nXzE2Ni5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I0ZWExZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tY2Vsb2cvbWNlbG9nXzE2Ni5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVNVTU1BUlkgPSAibWNlbG9nIGRhZW1vbiBhY2NvdW50cyBtZW1vcnkgYW5kIHNvbWUgb3RoZXIgZXJyb3JzIGluIHZhcmlvdXMgd2F5cy4iCi1ERVNDUklQVElPTiA9ICJtY2Vsb2cgaXMgcmVxdWlyZWQgYnkgYm90aCAzMmJpdCB4ODYgTGludXgga2VybmVscyAoc2luY2UgMi42LjMwKSBcCi1hbmQgNjRiaXQgTGludXgga2VybmVscyAoc2luY2UgZWFybHkgMi42IGtlcm5lbCByZWxlYXNlcykgdG8gbG9nIG1hY2hpbmUgY2hlY2tzIFwKLWFuZCBzaG91bGQgcnVuIG9uIGFsbCBMaW51eCBzeXN0ZW1zIHRoYXQgbmVlZCBlcnJvciBoYW5kbGluZy4iCi1IT01FUEFHRSA9ICJodHRwOi8vbWNlbG9nLm9yZy8iCi1TRUNUSU9OID0gIlN5c3RlbSBFbnZpcm9ubWVudC9CYXNlIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vdXRpbHMvY3B1L21jZS9tY2Vsb2cuZ2l0O3Byb3RvY29sPWh0dHA7IFwKLSAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLQotU1JDUkVWID0gImVlOTBmZjIwY2U2YTRkNWUwMTZhYTI0OWNlOGIzN2YzNTlmOWZkYTQiCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUubWQ7bWQ1PTc0YmI0N2I5YTY4ODUwY2IzOTg2NjVjZjc4YjMxZGU2IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcHRlc3QKLQotQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjQuKnxpLjg2LiopLWxpbnV4JwotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uaG91cmx5Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vbWNlbG9nLmNyb24gJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5ob3VybHkvCi0gICAgc2VkIC1pICdzL2Jhc2gvc2gvJyAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmhvdXJseS9tY2Vsb2cuY3JvbgotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0KLSAgICBjcCAtciAke1N9L3Rlc3RzICR7U30vaW5wdXQgJHtEfSR7UFRFU1RfUEFUSH0KLSAgICBzZWQgLWkgJ3MjLi4vLi4vbWNlbG9nI21jZWxvZyMnICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3QKLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgYmFzaCBtY2UtaW5qZWN0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbWNlbG9nL21jZWxvZ18xNjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tY2Vsb2cvbWNlbG9nXzE2OC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmVmNmVhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbWNlbG9nL21jZWxvZ18xNjguYmIKQEAgLTAsMCArMSwzNSBAQAorU1VNTUFSWSA9ICJtY2Vsb2cgZGFlbW9uIGFjY291bnRzIG1lbW9yeSBhbmQgc29tZSBvdGhlciBlcnJvcnMgaW4gdmFyaW91cyB3YXlzLiIKK0RFU0NSSVBUSU9OID0gIm1jZWxvZyBpcyByZXF1aXJlZCBieSBib3RoIDMyYml0IHg4NiBMaW51eCBrZXJuZWxzIChzaW5jZSAyLjYuMzApIFwKK2FuZCA2NGJpdCBMaW51eCBrZXJuZWxzIChzaW5jZSBlYXJseSAyLjYga2VybmVsIHJlbGVhc2VzKSB0byBsb2cgbWFjaGluZSBjaGVja3MgXAorYW5kIHNob3VsZCBydW4gb24gYWxsIExpbnV4IHN5c3RlbXMgdGhhdCBuZWVkIGVycm9yIGhhbmRsaW5nLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9tY2Vsb2cub3JnLyIKK1NFQ1RJT04gPSAiU3lzdGVtIEVudmlyb25tZW50L0Jhc2UiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS91dGlscy9jcHUvbWNlL21jZWxvZy5naXQ7cHJvdG9jb2w9aHR0cDsgXAorICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitTUkNSRVYgPSAiMDc4ZDU5M2I4YjBjN2Q0NGFmZGQ0MzlhYWNmYWQ2NjgyOTEzMDM4ZiIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5tZDttZDU9NzRiYjQ3YjlhNjg4NTBjYjM5ODY2NWNmNzhiMzFkZTYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdAorCitDT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NC4qfGkuODYuKiktbGludXgnCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5ob3VybHkKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtTfS9tY2Vsb2cuY3JvbiAke0R9JHtzeXNjb25mZGlyfS9jcm9uLmhvdXJseS8KKyAgICBzZWQgLWkgJ3MvYmFzaC9zaC8nICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uaG91cmx5L21jZWxvZy5jcm9uCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfQorICAgIGNwIC1yICR7U30vdGVzdHMgJHtTfS9pbnB1dCAke0R9JHtQVEVTVF9QQVRIfQorICAgIHNlZCAtaSAncyMuLi8uLi9tY2Vsb2cjbWNlbG9nIycgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdAorfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBiYXNoIG1jZS1pbmplY3QiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25pdC9tb25pdC9tb25pdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbml0L21vbml0L21vbml0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NDcwNGUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9tb25pdC9tb25pdC9tb25pdApAQCAtMCwwICsxLDQyIEBACisjISAvYmluL3NoIAorIworIyBUaGlzIGlzIGFuIGluaXQgc2NyaXB0IGZvciBvcGVuZW1iZWRkZWQKKyMgQ29weSBpdCB0byAvZXRjL2luaXQuZC9tb25pdCBhbmQgdHlwZQorIyA+IHVwZGF0ZS1yYy5kIG1vbml0IGRlZmF1bHRzIDg5CisjCittb25pdD0vdXNyL2Jpbi9tb25pdAorcGlkZmlsZT0vdmFyL3J1bi9tb25pdC5waWQKK21vbml0X2FyZ3M9Ii1jIC9ldGMvbW9uaXRyYyIKKwordGVzdCAteCAiJG1vbml0IiB8fCBleGl0IDAKKworY2FzZSAiJDEiIGluCisgIHN0YXJ0KQorICAgIGVjaG8gLW4gIlN0YXJ0aW5nIE1vbml0IgorICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1xdWlldCAtLWV4ZWMgJG1vbml0IC0tICRtb25pdF9hcmdzCisgICAgUkVUVkFMPSQ/CisgICAgZWNobyAiLiIKKyAgICA7OworICBzdG9wKQorICAgIGVjaG8gLW4gIlN0b3BwaW5nIE1vbml0IgorICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tcGlkZmlsZSAkcGlkZmlsZQorICAgIFJFVFZBTD0kPworICAgIGVjaG8gIi4iCisgICAgOzsKKyAgcmVzdGFydCkKKyAgICAkMCBzdG9wCisgICAgJDAgc3RhcnQKKyAgICBSRVRWQUw9JD8KKyAgICA7OworICBzdGF0dXMpCisgICAgJG1vbml0ICRtb25pdF9hcmdzIHN0YXR1cworICAgIFJFVFZBTD0kPworICAgIGVjaG8gIi4iCisgICAgOzsKKyAgKikKKyAgICBlY2hvICJVc2FnZTogJDAge3N0YXJ0fHN0b3B8cmVzdGFydHxzdGF0dXN9IgorICAgIGV4aXQgMQorZXNhYworCitleGl0ICRSRVRWQUwKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uaXQvbW9uaXQvbW9uaXRyYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbml0L21vbml0L21vbml0cmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhkNmE0MwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbml0L21vbml0L21vbml0cmMKQEAgLTAsMCArMSw0NCBAQAorIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMgTW9uaXQgY29udHJvbCBmaWxlCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyMgQ29tbWVudHMgYmVnaW4gd2l0aCBhICcjJyBhbmQgZXh0ZW5kIHRocm91Z2ggdGhlIGVuZCBvZiB0aGUgbGluZS4gS2V5d29yZHMKKyMjIGFyZSBjYXNlIGluc2Vuc2l0aXZlLiBBbGwgcGF0aCdzIE1VU1QgQkUgRlVMTFkgUVVBTElGSUVELCBzdGFydGluZyB3aXRoICcvJy4KKyMjCisjIyBCZWxvdyB5b3Ugd2lsbCBmaW5kIGV4YW1wbGVzIG9mIHNvbWUgZnJlcXVlbnRseSB1c2VkIHN0YXRlbWVudHMuIEZvcgorIyMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGNvbnRyb2wgZmlsZSBhbmQgYSBjb21wbGV0ZSBsaXN0IG9mIHN0YXRlbWVudHMgYW5kCisjIyBvcHRpb25zLCBwbGVhc2UgaGF2ZSBhIGxvb2sgaW4gdGhlIE1vbml0IG1hbnVhbC4KKyMjCisjIworIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworIyMgR2xvYmFsIHNlY3Rpb24KKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjCisjIyBTdGFydCBNb25pdCBpbiB0aGUgYmFja2dyb3VuZCAocnVuIGFzIGEgZGFlbW9uKToKKyMKK3NldCBkYWVtb24gIDMwICAgICAgICAgICAgICAjIGNoZWNrIHNlcnZpY2VzIGF0IDMwIHNlY29uZHMgaW50ZXJ2YWxzCisjICAgd2l0aCBzdGFydCBkZWxheSAyNDAgICAgIyBvcHRpb25hbDogZGVsYXkgdGhlIGZpcnN0IGNoZWNrIGJ5IDQtbWludXRlcyAoYnkKKyMgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGRlZmF1bHQgTW9uaXQgY2hlY2sgaW1tZWRpYXRlbHkgYWZ0ZXIgTW9uaXQgc3RhcnQpCisjCisjCisjIyBTZXQgc3lzbG9nIGxvZ2dpbmcuIElmIHlvdSB3YW50IHRvIGxvZyB0byBhIHN0YW5kYWxvbmUgbG9nIGZpbGUgaW5zdGVhZCwKKyMjIHNwZWNpZnkgdGhlIGZ1bGwgcGF0aCB0byB0aGUgbG9nIGZpbGUKKyMKK3NldCBsb2cgc3lzbG9nCisKK3NldCBodHRwZCBwb3J0IDI4MTIKKyAgICBhbGxvdyAwLjAuMC4wLzAgICAgICAgICMgYWxsb3cgbG9jYWxob3N0IHRvIGNvbm5lY3QgdG8gdGhlIHNlcnZlciBhbmQKKyAgICBhbGxvdyBhZG1pbjptb25pdCAgICAgICMgcmVxdWlyZSB1c2VyICdhZG1pbicgd2l0aCBwYXNzd29yZCAnbW9uaXQnCisgICAgI3dpdGggc3NsIHsgICAgICAgICAgICAjIGVuYWJsZSBTU0wvVExTIGFuZCBzZXQgcGF0aCB0byBzZXJ2ZXIgY2VydGlmaWNhdGUKKyAgICAjICAgIHBlbWZpbGU6IC9ldGMvc3NsL2NlcnRzL21vbml0LnBlbQorICAgICN9CisKKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyMjIEluY2x1ZGVzCisjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisjIworIyMgSXQgaXMgcG9zc2libGUgdG8gaW5jbHVkZSBhZGRpdGlvbmFsIGNvbmZpZ3VyYXRpb24gcGFydHMgZnJvbSBvdGhlciBmaWxlcyBvcgorIyMgZGlyZWN0b3JpZXMuCisjCitpbmNsdWRlIC9ldGMvbW9uaXQuZC8qCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbml0L21vbml0XzUuMjYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L21vbml0L21vbml0XzUuMjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hOTU0NjgyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbW9uaXQvbW9uaXRfNS4yNi4wLmJiCkBAIC0wLDAgKzEsNTMgQEAKK0RFU0NSSVBUSU9OID0gIk1vbml0IGlzIGEgZnJlZSBvcGVuIHNvdXJjZSB1dGlsaXR5IGZvciBtYW5hZ2luZyBhbmQgbW9uaXRvcmluZywgXAorcHJvY2Vzc2VzLCBwcm9ncmFtcywgZmlsZXMsIGRpcmVjdG9yaWVzIGFuZCBmaWxlc3lzdGVtcyBvbiBhIFVOSVggc3lzdGVtLiBcCitNb25pdCBjb25kdWN0cyBhdXRvbWF0aWMgbWFpbnRlbmFuY2UgYW5kIHJlcGFpciBhbmQgY2FuIGV4ZWN1dGUgbWVhbmluZ2Z1bCBcCitjYXVzYWwgYWN0aW9ucyBpbiBlcnJvciBzaXR1YXRpb25zLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL21tb25pdC5jb20vbW9uaXQvIgorCitMSUNFTlNFID0gIkFHUEwtMy4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWExMTZhN2RlZmFmMGU5M2IzYmI3M2IyYTM0YTNmNTEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlibW9uaXQvQ09QWUlORzttZDU9MjQwNWYxYzU5ZWQxYmYzNzE0Y2ViZGI0MDE2MmNlOTIiCisKK1NSQ19VUkkgPSAiIFwKKwlodHRwczovL21tb25pdC5jb20vbW9uaXQvZGlzdC9tb25pdC0ke1BWfS50YXIuZ3ogXAorCWZpbGU6Ly9tb25pdCBcCisJZmlsZTovL21vbml0cmMgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOWY3ZGM2NWU5MDJjMTAzZTRjNTg5MTM1NDk5NGMzZGYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODdmYzQ1NjhhM2FmOWEyYmU4OTA0MGVmYjE2OWUzYTJlNDdiMjYyZjk5ZTc4ZDVkZGRlOTlkZDg5ZjAyZjNjMiIKKworREVQRU5EUyA9ICJ6bGliIGJpc29uLW5hdGl2ZSBsaWJuc2wyIGZsZXgtbmF0aXZlIG9wZW5zc2wgdmlydHVhbC9jcnlwdCIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHN5c3RlbWQgdXBkYXRlLXJjLmQKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICItLXdpdGgtcGFtLC0td2l0aG91dC1wYW0sbGlicGFtIgorCitFWFRSQV9PRUNPTkYgPSAiXAorICAgIGxpYm1vbml0X2N2X3NldGptcF9hdmFpbGFibGU9bm8gXAorICAgIGxpYm1vbml0X2N2X3ZzbnByaW50Zl9jOTlfY29uZm9ybWFudD1ubyBcCisgICAgLS13aXRoLXNzbC1saWItZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAtLXdpdGgtc3NsLWluY2wtZGlyPSR7U1RBR0lOR19JTkNESVJ9IFwKKyIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm1vbml0LnNlcnZpY2UiCitTWVNURU1EX0FVVE9fRU5BQkxFID0gImVuYWJsZSIKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfSIKK0lOSVRTQ1JJUFRfTkFNRV8ke1BOfSA9ICJtb25pdCIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59ID0gImRlZmF1bHRzIDg5IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKworICAgICMgQ29uZmlndXJhdGlvbiBmaWxlCisgICAgaW5zdGFsbCAtRG0gMDYwMCAke1dPUktESVJ9L21vbml0cmMgJHtEfSR7c3lzY29uZmRpcn0vbW9uaXRyYworCisgICAgIyBTeXN0ZW1ECisgICAgaW5zdGFsbCAtRG0gMDY0NCAke1N9L3N5c3RlbS9zdGFydHVwL21vbml0LnNlcnZpY2UuaW4gJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbW9uaXQuc2VydmljZQorICAgIHNlZCAtaSAtZSAncyxAcHJlZml4QCwke2V4ZWNfcHJlZml4fSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tb25pdC5zZXJ2aWNlCisKKyAgICAjIFN5c1YKKyAgICBpbnN0YWxsIC1EbSAwNzU1ICR7V09SS0RJUn0vbW9uaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL21vbml0Cit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uYW5vL25hbm9fNC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmFuby9uYW5vXzQuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgxMjFiZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uYW5vL25hbm9fNC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiR05VIG5hbm8gKE5hbm8ncyBBTk90aGVyIGVkaXRvciwgb3IgXAotTm90IEFOT3RoZXIgZWRpdG9yKSBpcyBhbiBlbmhhbmNlZCBjbG9uZSBvZiB0aGUgXAotUGljbyB0ZXh0IGVkaXRvci4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5hbm8tZWRpdG9yLm9yZy8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjI3ZGVmZTFlOTZjMmUxZWNkNGUwYzliZTg5Njc5NDkiCi0KLURFUEVORFMgPSAibmN1cnNlcyBmaWxlIgotUkRFUEVORFNfJHtQTn0gPSAibmN1cnNlcy10ZXJtaW5mby1iYXNlIgotCi1QVl9NQUpPUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfSIKLQotU1JDX1VSSSA9ICJodHRwczovL25hbm8tZWRpdG9yLm9yZy9kaXN0L3Yke1BWX01BSk9SfS9uYW5vLSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5NjUwZGQzZWIwYWRiYWI2YWFhNzQ4YTZmMTM5OGNjYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyYWYyMjJlMDM1NDg0OGZmYWEzYWYzMWI1Y2QwYTc3OTE3ZTljYjc3NDJjZDA3M2Q3NjJmM2MzMmYwZjU4MmM3IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHW3RpbnldID0gIi0tZW5hYmxlLXRpbnksIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmFuby9uYW5vXzQuOS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbmFuby9uYW5vXzQuOS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiMjM2YmEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uYW5vL25hbm9fNC45LjIuYmIKQEAgLTAsMCArMSwyMiBAQAorREVTQ1JJUFRJT04gPSAiR05VIG5hbm8gKE5hbm8ncyBBTk90aGVyIGVkaXRvciwgb3IgXAorTm90IEFOT3RoZXIgZWRpdG9yKSBpcyBhbiBlbmhhbmNlZCBjbG9uZSBvZiB0aGUgXAorUGljbyB0ZXh0IGVkaXRvci4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5hbm8tZWRpdG9yLm9yZy8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjI3ZGVmZTFlOTZjMmUxZWNkNGUwYzliZTg5Njc5NDkiCisKK0RFUEVORFMgPSAibmN1cnNlcyBmaWxlIgorUkRFUEVORFNfJHtQTn0gPSAibmN1cnNlcy10ZXJtaW5mby1iYXNlIgorCitQVl9NQUpPUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfSIKKworU1JDX1VSSSA9ICJodHRwczovL25hbm8tZWRpdG9yLm9yZy9kaXN0L3Yke1BWX01BSk9SfS9uYW5vLSR7UFZ9LnRhci54eiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMGRmMDEwMGViZjRhYTdiYjQ4MDY0MjhjMTE3NTFlYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkOGEyNWVlYTk0MmVjZWUyZDU3YjhlMDM3ZWI0YjI4ZjAzMGY4MThiNzg3NzNiOGZjYjk5NGVkNTgzNWQyZWY2IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9mdHAuZ251Lm9yZy9nbnUvbmFubyIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcKKworUEFDS0FHRUNPTkZJR1t0aW55XSA9ICItLWVuYWJsZS10aW55LCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci8wMDAxLW1kLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMS1tZC1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyYjliZjYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMS1tZC1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMzUgQEAKK0Zyb20gMTQ3ZjNjMmFjYmQ5NmQ0NDAyNWNlYzExODAwZGVkMDI4MjMyNzc2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDE4IFNlcCAyMDE3IDE3OjIyOjQzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIG1kOiBGaXggYnVpbGQgd2l0aCBtdXNsCisKK1RoZSBNSVBTIHNwZWNpZmljIGhlYWRlciA8c2dpZGVmcy5oPiBpcyBub3QgcHJvdmlkZWQgYnkgbXVzbAorbGludXgga2VybmVsIGhlYWRlcnMgcHJvdmlkZSA8YXNtL3NnaWRlZnMuaD4gd2hpY2ggaGFzIHNhbWUgZGVmaW5pdGlvbnMKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBwci9pbmNsdWRlL21kL19saW51eC5jZmcgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKKy0tLSBhL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZworKysrIGIvcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnCitAQCAtNDk5LDcgKzQ5OSw3IEBACisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKKyAKKyAvKiBGb3IgX0FCSTY0ICovCistI2luY2x1ZGUgPHNnaWRlZnMuaD4KKysjaW5jbHVkZSA8YXNtL3NnaWRlZnMuaD4KKyAKKyAjaWZkZWYgX19NSVBTRUJfXworICNkZWZpbmUgSVNfQklHX0VORElBTiAxCitAQCAtNTExLDcgKzUxMSw3IEBACisgI2Vycm9yICJVbmtub3duIE1JUFMgZW5kaWFubmVzcy4iCisgI2VuZGlmCisgCistI2lmIF9NSVBTX1NJTSA9PSBfQUJJNjQKKysjaWYgX01JUFNfU0lNID09IF9NSVBTX1NJTV9BQkk2NAorIAorICNkZWZpbmUgSVNfNjQKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDItQWRkLW5pb3MyLXN1cHBvcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMi1BZGQtbmlvczItc3VwcG9ydC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMi1BZGQtbmlvczItc3VwcG9ydC5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByLzAwMDItQWRkLW5pb3MyLXN1cHBvcnQucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL01ha2VmaWxlLmluLXJlbW92ZS1fQlVJTERfU1RSSU5HLWFuZC1fQlVJTERfVElNRS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9NYWtlZmlsZS5pbi1yZW1vdmUtX0JVSUxEX1NUUklORy1hbmQtX0JVSUxEX1RJTUUucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL01ha2VmaWxlLmluLXJlbW92ZS1fQlVJTERfU1RSSU5HLWFuZC1fQlVJTERfVElNRS5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL01ha2VmaWxlLmluLXJlbW92ZS1fQlVJTERfU1RSSU5HLWFuZC1fQlVJTERfVElNRS5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvZml4LWJ1aWxkLW9uLXg4Nl82NC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9maXgtYnVpbGQtb24teDg2XzY0LnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9maXgtYnVpbGQtb24teDg2XzY0LnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvZml4LWJ1aWxkLW9uLXg4Nl82NC5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL25zcHIucGMuaW4gYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvbnNwci5wYy5pbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjE1ZDE5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByL25zcHIucGMuaW4KQEAgLTAsMCArMSwxMSBAQAorb3NfbGlicz0tbHB0aHJlYWQgLWxkbAorcHJlZml4PU9FUFJFRklYCitleGVjX3ByZWZpeD1PRUVYRUNQUkVGSVgKK2xpYmRpcj1PRUxJQkRJUgoraW5jbHVkZWRpcj1PRUlOQ0RJUgorCitOYW1lOiBOU1BSCitEZXNjcmlwdGlvbjogVGhlIE5ldHNjYXBlIFBvcnRhYmxlIFJ1bnRpbWUKK1ZlcnNpb246IE5TUFJWRVJTSU9OCitMaWJzOiAtTCR7bGliZGlyfSAtbHBsZHM0IC1scGxjNCAtbG5zcHI0IC1scHRocmVhZCAtbGRsCitDZmxhZ3M6IC1JJHtpbmNsdWRlZGlyfS9uc3ByCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvcmVtb3ZlLXJwYXRoLWZyb20tdGVzdHMucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvcmVtb3ZlLXNyY2Rpci1mcm9tLWNvbmZpZ3VyZS1pbi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtc3JjZGlyLWZyb20tY29uZmlndXJlLWluLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9yZW1vdmUtc3JjZGlyLWZyb20tY29uZmlndXJlLWluLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvcmVtb3ZlLXNyY2Rpci1mcm9tLWNvbmZpZ3VyZS1pbi5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4yNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZGUyNmUxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNwci9uc3ByXzQuMjUuYmIKQEAgLTAsMCArMSwxOTcgQEAKK1NVTU1BUlkgPSAiTmV0c2NhcGUgUG9ydGFibGUgUnVudGltZSBMaWJyYXJ5IgorSE9NRVBBR0UgPSAgImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvbnNwci8iCitMSUNFTlNFID0gIkdQTC0yLjAgfCBNUEwtMi4wIHwgTEdQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jb25maWd1cmUuaW47YmVnaW5saW5lPTM7ZW5kbGluZT02O21kNT05MGMyZmRlZTM4ZTQ1ZDYzMDJhYmNmZTQ3NWM4YjVjNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5pbjtiZWdpbmxpbmU9NDtlbmRsaW5lPTM4O21kNT1iZWRhMWRiYjk4YTUxNWY1NTdkM2U1OGVmMDZiY2E5OSIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL25zcHIvcmVsZWFzZXMvdiR7UFZ9L3NyYy9uc3ByLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtYnVpbGQtb24teDg2XzY0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS1zcmNkaXItZnJvbS1jb25maWd1cmUtaW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtbmlvczItc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1kLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUuaW4tcmVtb3ZlLV9CVUlMRF9TVFJJTkctYW5kLV9CVUlMRF9USU1FLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25zcHIucGMuaW4gXAorIgorCitDQUNIRURfQ09ORklHVVJFVkFSU19hcHBlbmRfbGliYy1tdXNsID0gIiBDRkxBR1M9JyR7Q0ZMQUdTfSAtRF9QUl9QT0xMX0FWQUlMQUJMRSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9IQVZFX09GRjY0X1QgLURfUFJfSU5FVDYgLURfUFJfSEFWRV9JTkVUX05UT1AgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSEFWRV9HRVRIT1NUQllOQU1FMiAtRF9QUl9IQVZFX0dFVEFERFJJTkZPIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0lORVQ2X1BST0JFIC1ETk9fRExPUEVOX05VTEwnIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbnNwci9yZWxlYXNlcy8iCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKKworU1JDX1VSSVttZDVzdW1dID0gIjRjYTRkNzVhNDI0ZjMwZmNkYzc2NjI5NmJiMTAzZDE3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBiYzMwOWJlMjFmOTFkYTQ0NzRjNTZkZjkwNDE1MTAxYzdmMGM3YzdjYWIyOTQzY2Q5NDNjZDc4OTY5ODUyNTYiCisKK0NWRV9QUk9EVUNUID0gIm5ldHNjYXBlX3BvcnRhYmxlX3J1bnRpbWUiCisKK1MgPSAiJHtXT1JLRElSfS9uc3ByLSR7UFZ9L25zcHIiCisKK1JERVBFTkRTXyR7UE59LWRldiArPSAicGVybCIKK1RBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgorCitURVNUUyA9ICIgXAorICAgIGFjY2VwdCBcCisgICAgYWNjZXB0cmVhZCBcCisgICAgYWNjZXB0cmVhZGVtdSBcCisgICAgYWZmaW5pdHkgXAorICAgIGFsYXJtIFwKKyAgICBhbm9uZm0gXAorICAgIGF0b21pYyBcCisgICAgYXR0YWNoIFwKKyAgICBiaWdmaWxlIFwKKyAgICBjbGVhbnVwIFwKKyAgICBjbHRzcnYgIFwKKyAgICBjb25jdXIgXAorICAgIGN2YXIgXAorICAgIGN2YXIyIFwKKyAgICBkbGx0ZXN0IFwKKyAgICBkdG9hIFwKKyAgICBlcnJjb2RlcyBcCisgICAgZXhpdCBcCisgICAgZmRjYWNoIFwKKyAgICBmaWxlaW8gXAorICAgIGZvcmVpZ24gXAorICAgIGZvcm1hdHRtIFwKKyAgICBmc3luYyBcCisgICAgZ2V0aG9zdCBcCisgICAgZ2V0cHJvdG8gXAorICAgIGkybCBcCisgICAgaW5pdGNsayBcCisgICAgaW5ydmFsIFwKKyAgICBpbnN0cnVtdCBcCisgICAgaW50cmlvIFwKKyAgICBpbnRydXB0IFwKKyAgICBpb190aW1lb3V0IFwKKyAgICBpb2NvbnRociBcCisgICAgam9pbiBcCisgICAgam9pbmtrIFwKKyAgICBqb2lua3UgXAorICAgIGpvaW51ayBcCisgICAgam9pbnV1IFwKKyAgICBsYXllciBcCisgICAgbGF6eWluaXQgXAorICAgIGxpYmZpbGVuYW1lIFwKKyAgICBsbHRlc3QgXAorICAgIGxvY2sgXAorICAgIGxvY2tmaWxlIFwKKyAgICBsb2dmaWxlIFwKKyAgICBsb2dnZXIgXAorICAgIG1hbnlfY3YgXAorICAgIG11bHRpd2FpdCBcCisgICAgbmFtZXNobTEgXAorICAgIG5ibGF5ZXIgXAorICAgIG5vbmJsb2NrIFwKKyAgICBudGlvdG8gXAorICAgIG50b2ggXAorICAgIG9wXzJsb25nIFwKKyAgICBvcF9leGNsIFwKKyAgICBvcF9maWxuZiBcCisgICAgb3BfZmlsb2sgXAorICAgIG9wX25vZmlsIFwKKyAgICBwYXJlbnQgXAorICAgIHBhcnNldG0gXAorICAgIHBlZWsgXAorICAgIHBlcmYgXAorICAgIHBpcGVwaW5nIFwKKyAgICBwaXBlcGluZzIgXAorICAgIHBpcGVzZWxmIFwKKyAgICBwb2xsX25tIFwKKyAgICBwb2xsX3RvIFwKKyAgICBwb2xsYWJsZSBcCisgICAgcHJmdGVzdCBcCisgICAgcHJpbWJsb2sgXAorICAgIHByb3ZpZGVyIFwKKyAgICBwcnBvbGxtbCBcCisgICAgcmFuZmlsZSBcCisgICAgcmFuZHNlZWQgXAorICAgIHJlaW5pdCBcCisgICAgcndsb2NrdGVzdCBcCisgICAgc2VsX3NwZCBcCisgICAgc2VsY3RfZXIgXAorICAgIHNlbGN0X25tIFwKKyAgICBzZWxjdF90byBcCisgICAgc2VsaW50ciBcCisgICAgc2VtYSBcCisgICAgc2VtYWVyciBcCisgICAgc2VtYXBpbmcgXAorICAgIHNlbmR6bGYgXAorICAgIHNlcnZlcl90ZXN0IFwKKyAgICBzZXJ2cl9rayBcCisgICAgc2VydnJfdWsgXAorICAgIHNlcnZyX2t1IFwKKyAgICBzZXJ2cl91dSBcCisgICAgc2hvcnRfdGhyZWFkIFwKKyAgICBzaWdwaXBlIFwKKyAgICBzb2NrZXQgXAorICAgIHNvY2tvcHQgXAorICAgIHNvY2twaW5nIFwKKyAgICBzcHJpbnRmIFwKKyAgICBzdGFjayBcCisgICAgc3RkaW8gXAorICAgIHN0cjJhZGRyIFwKKyAgICBzdHJvZCBcCisgICAgc3dpdGNoIFwKKyAgICBzeXN0ZW0gXAorICAgIHRlc3RiaXQgXAorICAgIHRlc3RmaWxlIFwKKyAgICB0aHJlYWRzIFwKKyAgICB0aW1lbWFjIFwKKyAgICB0aW1ldGVzdCBcCisgICAgdHBkIFwKKyAgICB1ZHBzcnYgXAorICAgIHZlcmNoZWNrIFwKKyAgICB2ZXJzaW9uIFwKKyAgICB3cml0ZXYgXAorICAgIHhub3RpZnkgXAorICAgIHplcm9sZW4iCisKK2luaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX3NjcmlwdAorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWRldjoke2JpbmRpcn0vbnNwci1jb25maWciCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKKworIyBEbyBub3QgaW5zdGFsbCBuc3ByIGluIHVzci9pbmNsdWRlLCBidXQgaW4gdXNyL2luY2x1ZGUvbnNwciwgdGhlCisjIHByZWZlcnJlZCBwYXRoIHVwc3RyZWFtLgorRVhUUkFfT0VDT05GICs9ICItLWluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfS9uc3ByIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJb2VfcnVubWFrZSBDUk9TU19DT01QSUxFPTEgQ0ZMQUdTPSItRFhQX1VOSVggJHtCVUlMRF9DRkxBR1N9IiBMREZMQUdTPSIiIENDPSIke0JVSUxEX0NDfSIgLUMgY29uZmlnIGV4cG9ydAorfQorCitkb19jb21waWxlX2FwcGVuZCgpIHsKKwlvZV9ydW5tYWtlIC1DIHByL3Rlc3RzCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLUQgJHtXT1JLRElSfS9uc3ByLnBjLmluICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcHIucGMKKyAgICBzZWQgLWkgIFwKKyAgICAtZSAnczpOU1BSVkVSU0lPTjoke1BWfTpnJyBcCisgICAgLWUgJ3M6T0VQUkVGSVg6JHtwcmVmaXh9OmcnIFwKKyAgICAtZSAnczpPRUxJQkRJUjoke2xpYmRpcn06ZycgXAorICAgIC1lICdzOk9FSU5DRElSOiR7aW5jbHVkZWRpcn06ZycgXAorICAgIC1lICdzOk9FRVhFQ1BSRUZJWDoke2V4ZWNfcHJlZml4fTpnJyBcCisgICAgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNwci5wYworCisgICAgbWtkaXIgLXAgJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vcHIvdGVzdHMvcnVudGVzdHMucGwgJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCisgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vcHIvdGVzdHMvcnVudGVzdHMuc2ggJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCisgICAgY2QgJHtCfS9wci90ZXN0cworICAgIGluc3RhbGwgLW0gMDc1NSAke1RFU1RTfSAke0R9JHtsaWJkaXJ9L25zcHIvdGVzdHMKKworICAgICMgZGVsZXRlIGNvbXBpbGUtZXQucGwgYW5kIHBlcnIucHJvcGVydGllcyBmcm9tICR7YmluZGlyfSBiZWNhdXNlIHRoZXNlIGFyZQorICAgICMgb25seSB1c2VkIHRvIGdlbmVyYXRlIHByZXJyLmMgYW5kIHByZXJyLmggZmlsZXMgZnJvbSBwcmVyci5ldCBhdCBjb21waWxlCisgICAgIyB0aW1lCisgICAgcm0gJHtEfSR7YmluZGlyfS9jb21waWxlLWV0LnBsICR7RH0ke2JpbmRpcn0vcHJlcnIucHJvcGVydGllcworfQorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zbyIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbnNwci90ZXN0cy8qICR7bGliZGlyfS9wa2djb25maWcgXAorICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vKiAke2RhdGFkaXJ9L2FjbG9jYWwvKiAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvMDAwMS1mcmVlYmwtYWRkLWEtY29uZmlndXJlLW9wdGlvbi10by1kaXNhYmxlLUFSTS1IVy1jcnlwLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy8wMDAxLWZyZWVibC1hZGQtYS1jb25maWd1cmUtb3B0aW9uLXRvLWRpc2FibGUtQVJNLUhXLWNyeXAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM4MGMxNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvMDAwMS1mcmVlYmwtYWRkLWEtY29uZmlndXJlLW9wdGlvbi10by1kaXNhYmxlLUFSTS1IVy1jcnlwLnBhdGNoCkBAIC0wLDAgKzEsNTIgQEAKK0Zyb20gNTU5NWU5NjUxYWNhMzlhZjk0NTkzMWM3M2ViNTI0YTBmOGJkMTMwZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBEZWMgMjAxOSAxMjoyOTo1MCArMDEwMAorU3ViamVjdDogW1BBVENIXSBmcmVlYmw6IGFkZCBhIGNvbmZpZ3VyZSBvcHRpb24gdG8gZGlzYWJsZSBBUk0gSFcgY3J5cHRvCisKK05vdCBhbGwgY3VycmVudCBoYXJkd2FyZSBzdXBwb3J0cyBpdCwgcGFydGljdWxhcmx5IGFueXRoaW5nCitwcmlvciB0byBhcm12OCBkb2VzIG5vdC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIG5zcy9saWIvZnJlZWJsL01ha2VmaWxlIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKKy0tLSBhL25zcy9saWIvZnJlZWJsL01ha2VmaWxlCisrKysgYi9uc3MvbGliL2ZyZWVibC9NYWtlZmlsZQorQEAgLTEyNSw2ICsxMjUsOSBAQCBlbHNlCisgICAgICAgICBERUZJTkVTICs9IC1ETlNTX1g4NgorIGVuZGlmCisgZW5kaWYKKysKKytpZmRlZiBOU1NfVVNFX0FSTV9IV19DUllQVE8KKysgICAgREVGSU5FUyArPSAtRE5TU19VU0VfQVJNX0hXX0NSWVBUTworIGlmZXEgKCQoQ1BVX0FSQ0gpLGFhcmNoNjQpCisgICAgIERFRklORVMgKz0gLURVU0VfSFdfQUVTCisgICAgIEVYVFJBX1NSQ1MgKz0gYWVzLWFybXY4LmMgZ2NtLWFhcmNoNjQuYworQEAgLTE0Niw2ICsxNDksNyBAQCBpZmVxICgkKENQVV9BUkNIKSxhcm0pCisgICAgICAgICBlbmRpZgorICAgICBlbmRpZgorIGVuZGlmCisrZW5kaWYKKyAKKyBpZmVxICgkKE9TX1RBUkdFVCksT1NGMSkKKyAgICAgREVGSU5FUyArPSAtRE1QX0FTU0VNQkxZX01VTFRJUExZIC1ETVBfTk9fTVBfV09SRAorLS0tIGEvbnNzL2xpYi9mcmVlYmwvZ2NtLmMKKysrKyBiL25zcy9saWIvZnJlZWJsL2djbS5jCitAQCAtMTcsNiArMTcsNyBAQAorIAorICNpbmNsdWRlIDxsaW1pdHMuaD4KKyAKKysjaWZkZWYgTlNTX1VTRV9BUk1fSFdfQ1JZUFRPCisgLyogb2xkIGdjYyBkb2Vzbid0IHN1cHBvcnQgc29tZSBwb2x5NjR4Ml90IGludHJpbnNpYyAqLworICNpZiBkZWZpbmVkKF9fYWFyY2g2NF9fKSAmJiBkZWZpbmVkKElTX0xJVFRMRV9FTkRJQU4pICYmIFwKKyAgICAgKGRlZmluZWQoX19jbGFuZ19fKSB8fCBkZWZpbmVkKF9fR05VQ19fKSAmJiBfX0dOVUNfXyA+IDYpCitAQCAtMjUsNiArMjYsNyBAQAorIC8qIFdlIGRvbid0IHRlc3Qgb24gYmlnIGVuZGlhbiBwbGF0Zm9ybSwgc28gZGlzYWJsZSB0aGlzIG9uIGJpZyBlbmRpYW4uICovCisgI2RlZmluZSBVU0VfQVJNX0dDTQorICNlbmRpZgorKyNlbmRpZgorIAorIC8qIEZvcndhcmQgZGVjbGFyYXRpb25zICovCisgU0VDU3RhdHVzIGdjbV9IYXNoSW5pdF9odyhnY21IYXNoQ29udGV4dCAqZ2hhc2gpOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzLzAwMDEtbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvMDAwMS1uc3MtZml4LXN1cHBvcnQtY3Jvc3MtY29tcGlsaW5nLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvMDAwMS1uc3MtZml4LXN1cHBvcnQtY3Jvc3MtY29tcGlsaW5nLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzLzAwMDEtbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2JsYW5rLWNlcnQ5LmRiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9ibGFuay1jZXJ0OS5kYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2JsYW5rLWNlcnQ5LmRiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2JsYW5rLWNlcnQ5LmRiCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9ibGFuay1rZXk0LmRiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9ibGFuay1rZXk0LmRiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvYmxhbmsta2V5NC5kYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9ibGFuay1rZXk0LmRiCkJpbmFyeSBmaWxlcyBkaWZmZXIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9kaXNhYmxlLVd2YXJhcmdzLXdpdGgtY2xhbmcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2Rpc2FibGUtV3ZhcmFyZ3Mtd2l0aC1jbGFuZy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL2Rpc2FibGUtV3ZhcmFyZ3Mtd2l0aC1jbGFuZy5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9kaXNhYmxlLVd2YXJhcmdzLXdpdGgtY2xhbmcucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MtZml4LWluY29ycmVjdC1zaGViYW5nLW9mLXBlcmwucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1maXgtaW5jb3JyZWN0LXNoZWJhbmctb2YtcGVybC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1maXgtaW5jb3JyZWN0LXNoZWJhbmctb2YtcGVybC5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MtZml4LWluY29ycmVjdC1zaGViYW5nLW9mLXBlcmwucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1maXgtbnNpbnN0YWxsLWJ1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQzYzA5ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1maXgtbnNpbnN0YWxsLWJ1aWxkLnBhdGNoCkBAIC0wLDAgKzEsMzYgQEAKK0ZpeCBuc3MgbXVsdGlsaWIgYnVpbGQgb24gb3BlblNVU0UgMTEueCAzMmJpdAorCitXaGlsZSBidWlsZGluZyBsaWI2NC1uc3Mgb24gb3BlblNVU0UgMTEueCAzMmJpdCwgdGhlIG5zaW5zdGFsbCB3aWxsCitmYWlsIHdpdGggZXJyb3I6CisKKyogbnNpbnN0YWxsLmM6MTowOiBzb3JyeSwgdW5pbXBsZW1lbnRlZDogNjQtYml0IG1vZGUgbm90IGNvbXBpbGVkCisKK0l0IGNhdXNlZCBieSB0aGUgJy1tNjQnIG9wdGlvbiB3aGljaCBwYXNzZWQgdG8gaG9zdCBnY2MuCisKK1RoZSBuc2luc3RhbGwgd2FzIGJ1aWx0IGZpcnN0IHdoaWxlIG5zcyBzdGFydGluZyB0byBidWlsZCwgaXQgb25seSBydW5zCitvbiBob3N0IHRvIGluc3RhbGwgYnVpbHQgZmlsZXMsIGl0IGRvZXNuJ3QgbmVlZCBhbnkgY3Jvc3MtY29tcGxpbmcgb3IKK211bHRpbGliIGJ1aWxkIG9wdGlvbnMuIEp1c3QgY2xlYW4gdGhlIEFSQ0hGTEFHIGFuZCBMREZMQUdTIHRvIGZpeCB0aGlzCitlcnJvci4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CitJbmRleDogbnNzLTMuMjQvbnNzL2NvcmVjb25mL25zaW5zdGFsbC9NYWtlZmlsZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG5zcy0zLjI0Lm9yaWcvbnNzL2NvcmVjb25mL25zaW5zdGFsbC9NYWtlZmlsZQorKysrIG5zcy0zLjI0L25zcy9jb3JlY29uZi9uc2luc3RhbGwvTWFrZWZpbGUKK0BAIC0xOCw2ICsxOCwxMyBAQCBJTlRFUk5BTF9UT09MUyAgPSAxCisgCisgaW5jbHVkZSAkKERFUFRIKS9jb3JlY29uZi9jb25maWcubWsKKyAKKysjIG5zaW5zdGFsbCBpcyB1bmZpdCBmb3IgY3Jvc3MtY29tcGlsaW5nL211bHRpbGliLWJ1aWxkIHNpbmNlIGl0IHdhcworKyMgYWx3YXlzIHJ1biBvbiBsb2NhbCBob3N0IHRvIGluc3RhbGwgYnVpbHQgZmlsZXMuIFRoaXMgY2hhbmdlIGludGVuZHMKKysjIHRvIGNsZWFuIHRoZSAnLW02NCcgZnJvbSBBUkNIRkxBRyBhbmQgTERGTEFHUy4KKytBUkNIRkxBRyA9CisrTERGTEFHUyA9CisrIyBDRkxBR1MgPQorKworIGlmZXEgKCwkKGZpbHRlci1vdXQgT1MyIFdJTiUsJChPU19UQVJHRVQpKSkKKyBQUk9HUkFNCQk9CisgZWxzZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1uby1ycGF0aC1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3Mtbm8tcnBhdGgtZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1uby1ycGF0aC1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1uby1ycGF0aC1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy5wYy5pbiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvbnNzLnBjLmluCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwMmI0ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy5wYy5pbgpAQCAtMCwwICsxLDExIEBACitwcmVmaXg9T0VQUkVGSVgKK2V4ZWNfcHJlZml4PU9FRVhFQ1BSRUZJWAorbGliZGlyPU9FTElCRElSCitpbmNsdWRlZGlyPU9FSU5DRElSCisKK05hbWU6IE5TUworRGVzY3JpcHRpb246IE5ldHdvcmsgU2VjdXJpdHkgU2VydmljZXMKK1ZlcnNpb246ICVOU1NfVkVSU0lPTiUKK1JlcXVpcmVzOiBuc3ByID49ICVOU1BSX1ZFUlNJT04lCitMaWJzOiAtTCR7bGliZGlyfSAtbHNzbDMgLWxzbWltZTMgLWxuc3MzIC1sc29mdG9rbjMgLWxuc3N1dGlsMworQ2ZsYWdzOiAtSU9FSU5DRElSCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvcHFnLmMtVUxMX2FkZGVuZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvcHFnLmMtVUxMX2FkZGVuZC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL3BxZy5jLVVMTF9hZGRlbmQucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvcHFnLmMtVUxMX2FkZGVuZC5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9yaXNjdi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvcmlzY3YucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVmOTFhNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvcmlzY3YucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRW5hYmxlIHVpbnQxMjggb24gcmlzY3Y2NAorCitGaXhlcworfCB2ZXJpZmllZC9rcmVtbGluL2tyZW1saWIvZGlzdC9taW5pbWFsL0xvd1N0YXJfRW5kaWFubmVzcy5oOjI5OjM3OiBlcnJvcjogJ2xvYWQxMjhfYmUnIGRlY2xhcmVkICdzdGF0aWMnIGJ1dCBuZXZlciBkZWZpbmVkIFstV2Vycm9yPXVudXNlZC1mdW5jdGlvbl0KK3wgICAgMjkgfCBpbmxpbmUgc3RhdGljIEZTdGFyX1VJbnQxMjhfdWludDEyOCBsb2FkMTI4X2JlKHVpbnQ4X3QgKngwKTsKK3wgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLSBhL25zcy9saWIvZnJlZWJsL3ZlcmlmaWVkL2tyZW1saW4vaW5jbHVkZS9rcmVtbGluL2ludGVybmFsL3R5cGVzLmgKKysrKyBiL25zcy9saWIvZnJlZWJsL3ZlcmlmaWVkL2tyZW1saW4vaW5jbHVkZS9rcmVtbGluL2ludGVybmFsL3R5cGVzLmgKK0BAIC01Niw3ICs1Niw4IEBAIHR5cGVkZWYgY29uc3QgY2hhciAqUHJpbXNfc3RyaW5nOworICNpbmNsdWRlIDxlbW1pbnRyaW4uaD4KKyB0eXBlZGVmIF9fbTEyOGkgRlN0YXJfVUludDEyOF91aW50MTI4OworICNlbGlmICFkZWZpbmVkKEtSTUxfVkVSSUZJRURfVUlOVDEyOCkgJiYgIWRlZmluZWQoX01TQ19WRVIpICYmIFwKKy0gICAgKGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykpCisrICAgIChkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFwKKysgICAgIChkZWZpbmVkKF9fcmlzY3YpICYmIF9fcmlzY3ZfeGxlbiA9PSA2NCkpCisgdHlwZWRlZiB1bnNpZ25lZCBfX2ludDEyOCBGU3Rhcl9VSW50MTI4X3VpbnQxMjg7CisgI2Vsc2UKKyB0eXBlZGVmIHN0cnVjdCBGU3Rhcl9VSW50MTI4X3VpbnQxMjhfcyB7CistLS0gYS9uc3MvbGliL2ZyZWVibC92ZXJpZmllZC9rcmVtbGluL2tyZW1saWIvZGlzdC9taW5pbWFsL2ZzdGFyX3VpbnQxMjhfZ2NjNjQuaAorKysrIGIvbnNzL2xpYi9mcmVlYmwvdmVyaWZpZWQva3JlbWxpbi9rcmVtbGliL2Rpc3QvbWluaW1hbC9mc3Rhcl91aW50MTI4X2djYzY0LmgKK0BAIC0yMyw5ICsyMywxMCBAQAorICNpbmNsdWRlICJGU3Rhcl9VSW50MTI4LmgiCisgI2luY2x1ZGUgIkZTdGFyX1VJbnRfOF8xNl8zMl82NC5oIgorICNpbmNsdWRlICJMb3dTdGFyX0VuZGlhbm5lc3MuaCIKKy0KKysjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2lmICFkZWZpbmVkKEtSTUxfVkVSSUZJRURfVUlOVDEyOCkgJiYgIWRlZmluZWQoX01TQ19WRVIpICYmIFwKKy0gICAgKGRlZmluZWQoX194ODZfNjRfXykgfHwgZGVmaW5lZChfX3g4Nl82NCkgfHwgZGVmaW5lZChfX2FhcmNoNjRfXykpCisrICAgIChkZWZpbmVkKF9feDg2XzY0X18pIHx8IGRlZmluZWQoX194ODZfNjQpIHx8IGRlZmluZWQoX19hYXJjaDY0X18pIHx8IFwKKysgICAgIChkZWZpbmVkKF9fcmlzY3YpICYmIF9fcmlzY3ZfeGxlbiA9PSA2NCkpCisgCisgLyogR0NDICsgdXNpbmcgbmF0aXZlIHVuc2lnbmVkIF9faW50MTI4IHN1cHBvcnQgKi8KKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9zaWdubGlicy5zaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3Mvc2lnbmxpYnMuc2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9zaWdubGlicy5zaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9zaWdubGlicy5zaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL3N5c3RlbS1wa2NzMTEudHh0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9zeXN0ZW0tcGtjczExLnR4dApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL3N5c3RlbS1wa2NzMTEudHh0CnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL3N5c3RlbS1wa2NzMTEudHh0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuNTEuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3NfMy41MS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwMTEyNDAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuNTEuMS5iYgpAQCAtMCwwICsxLDI3NCBAQAorU1VNTUFSWSA9ICJNb3ppbGxhJ3MgU1NMIGFuZCBUTFMgaW1wbGVtZW50YXRpb24iCitERVNDUklQVElPTiA9ICJOZXR3b3JrIFNlY3VyaXR5IFNlcnZpY2VzIChOU1MpIGlzIGEgc2V0IG9mIGxpYnJhcmllcyBcCitkZXNpZ25lZCB0byBzdXBwb3J0IGNyb3NzLXBsYXRmb3JtIGRldmVsb3BtZW50IG9mIFwKK3NlY3VyaXR5LWVuYWJsZWQgY2xpZW50IGFuZCBzZXJ2ZXIgYXBwbGljYXRpb25zLiBcCitBcHBsaWNhdGlvbnMgYnVpbHQgd2l0aCBOU1MgY2FuIHN1cHBvcnQgU1NMIHYyIGFuZCB2MywgXAorVExTLCBQS0NTIDUsIFBLQ1MgNywgUEtDUyAxMSwgUEtDUyAxMiwgUy9NSU1FLCBYLjUwOSBcCit2MyBjZXJ0aWZpY2F0ZXMsIGFuZCBvdGhlciBzZWN1cml0eSBzdGFuZGFyZHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9zZWN1cml0eS9wa2kvbnNzLyIKK1NFQ1RJT04gPSAibGlicyIKKworREVQRU5EUyA9ICJzcWxpdGUzIG5zcHIgemxpYiBuc3MtbmF0aXZlIgorREVQRU5EU19jbGFzcy1uYXRpdmUgPSAic3FsaXRlMy1uYXRpdmUgbnNwci1uYXRpdmUgemxpYi1uYXRpdmUiCisKK0xJQ0VOU0UgPSAiTVBMLTIuMCB8IChNUEwtMi4wICYgR1BMLTIuMCspIHwgKE1QTC0yLjAgJiBMR1BMLTIuMSspIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9uc3MvQ09QWUlORzttZDU9M2IxZTg4ZTFiOWMwYjVhNGIyODgxZDQ2Y2NlMDZhMTggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbnNzL2xpYi9mcmVlYmwvbXBpL2RvYy9MSUNFTlNFO21kNT00OTFmMTU4ZDA5ZDk0ODQ2NmFmY2U4NWQ2ZjFmZTE4ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0UtTVBMO21kNT01ZDQyNWM4ZjMxNTdkYmYyMTJkYjJlYzUzZDllNTEzMiIKKworVkVSU0lPTl9ESVIgPSAiJHtAZC5nZXRWYXIoJ0JQJykudXBwZXIoKS5yZXBsYWNlKCctJywgJ18nKS5yZXBsYWNlKCcuJywgJ18nKSArICdfUlRNJ30iCisKK1NSQ19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbW96aWxsYS5vcmcvc2VjdXJpdHkvbnNzL3JlbGVhc2VzLyR7VkVSU0lPTl9ESVJ9L3NyYy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vbnNzLnBjLmluIFwKKyAgICAgICAgICAgZmlsZTovL3NpZ25saWJzLnNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uc3Mtbm8tcnBhdGgtZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9uc3MtZml4LWluY29ycmVjdC1zaGViYW5nLW9mLXBlcmwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1XdmFyYXJncy13aXRoLWNsYW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3BxZy5jLVVMTF9hZGRlbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYmxhbmstY2VydDkuZGIgXAorICAgICAgICAgICBmaWxlOi8vYmxhbmsta2V5NC5kYiBcCisgICAgICAgICAgIGZpbGU6Ly9zeXN0ZW0tcGtjczExLnR4dCBcCisgICAgICAgICAgIGZpbGU6Ly9uc3MtZml4LW5zaW5zdGFsbC1idWlsZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZyZWVibC1hZGQtYS1jb25maWd1cmUtb3B0aW9uLXRvLWRpc2FibGUtQVJNLUhXLWNyeXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmlzY3YucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YWNhZjFkZGZmNjkzMDZhZTMwYTkwODg4MWM2ZjIzMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwODVjNWVhY2VlZjA0MGVkZGVhNjM5ZTJlMDY4ZTcwZjBlMzY4Zjg0MDMyN2E2NzhlZjc0YWUzZDZjMTVjYTc4IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9kZXZlbG9wZXIubW96aWxsYS5vcmcvZW4tVVMvZG9jcy9Nb3ppbGxhL1Byb2plY3RzL05TUy9OU1NfUmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJOU1NfKD9QPHB2ZXI+LispX3JlbGVhc2Vfbm90ZXMiCisKK2luaGVyaXQgc2l0ZWluZm8KKworVEQgPSAiJHtTfS90ZW50YXRpdmUtZGlzdCIKK1REUyA9ICIke1N9L3RlbnRhdGl2ZS1kaXN0LXN0YWdpbmciCisKK1RBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgorCitkb19jb25maWd1cmVfcHJlcGVuZF9saWJjLW11c2wgKCkgeworICAgIHNlZCAtaSAtZSAnLy1ESEFWRV9TWVNfQ0RFRlNfSC9kJyAke1N9L25zcy9saWIvZGJtL2NvbmZpZy9jb25maWcubWsKK30KKworZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICBleHBvcnQgTlNQUl9JTkNMVURFX0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0vbnNwcgorICAgIGV4cG9ydCBOU1BSX0xJQl9ESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9CisgICAgZXhwb3J0IE5TU19FTkFCTEVfV0VSUk9SPTAKK30KKworZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKyAgICBleHBvcnQgTERGTEFHUz0iIgorfQorCitkb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgICMgTmVlZCB0byBzZXQgUlBBVEggc28gdGhhdCBjaHJwYXRoIHdpbGwgZG8gaXRzIGpvYiBjb3JyZWN0bHkKKyAgICBSUEFUSD0iLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSIKK30KKworZG9fY29tcGlsZSgpIHsKKyAgICBleHBvcnQgTlNQUl9JTkNMVURFX0RJUj0ke1NUQUdJTkdfSU5DRElSfS9uc3ByCisKKyAgICBleHBvcnQgQ1JPU1NfQ09NUElMRT0xCisgICAgZXhwb3J0IE5BVElWRV9DQz0iJHtCVUlMRF9DQ30iCisgICAgIyBBZGRpdGlvbmFsIGRlZmluZXMgbmVlZGVkIG9uIENlbnRvcyA3CisgICAgZXhwb3J0IE5BVElWRV9GTEFHUz0iJHtCVUlMRF9DRkxBR1N9IC1ETElOVVggLURsaW51eCIKKyAgICBleHBvcnQgQlVJTERfT1BUPTEKKworICAgIGV4cG9ydCBGUkVFQkxfTk9fREVQRU5EPTEKKyAgICBleHBvcnQgRlJFRUJMX0xPV0hBU0g9MQorCisgICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KKyAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQorICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKKyAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKKyAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQorCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiY3J5cHRvIiwgImV4cG9ydCBOU1NfVVNFX0FSTV9IV19DUllQVE89MSIsICIiLCBkKX0KKworICAgIGV4cG9ydCBPU19SRUxFQVNFPTMuNAorICAgIGV4cG9ydCBPU19UQVJHRVQ9TGludXgKKyAgICBleHBvcnQgT1NfQVJDSD1MaW51eAorCisgICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1wcGMKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KKyAgICAgICAgT1NfVEVTVD1wcGM2NAorICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHMiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwc2VsIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjRlbCIgXTsgdGhlbgorICAgICAgICBPU19URVNUPW1pcHMKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJhYXJjaDY0X2JlIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9ImFhcmNoNjQiCisgICAgZWxzZQorICAgICAgICBPU19URVNUPSIke1RBUkdFVF9BUkNIfSIKKyAgICBmaQorCisgICAgaWYgWyAiJHtTSVRFSU5GT19CSVRTfSIgPSAiNjQiIF07IHRoZW4KKyAgICAgICAgZXhwb3J0IFVTRV82ND0xCisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiAtYSAiJHtTSVRFSU5GT19CSVRTfSIgPSAiMzIiIF07IHRoZW4KKyAgICAgICAgZXhwb3J0IFVTRV9YMzI9MQorICAgIGZpCisKKyAgICBleHBvcnQgTlNTX0RJU0FCTEVfR1RFU1RTPTEKKworICAgICMgV2UgY2FuIG1vZGlmeSBDQyBpbiB0aGUgZW52aXJvbm1lbnQsIGJ1dCBpZiB3ZSBzZXQgaXQgdmlhIGFuCisgICAgIyBhcmd1bWVudCB0byBtYWtlLCBuc2luc3RhbGwsIGEgaG9zdCBwcm9ncmFtLCB3aWxsIGFsc28gYnVpbGQgd2l0aCBpdCEKKyAgICAjCisgICAgIyBuc3MgcHJldHR5IG11Y2ggZG9lcyBpdHMgb3duIHRoaW5nIHdpdGggQ0ZMQUdTLCBzbyB3ZSBwdXQgdGhlbSBpbnRvIENDLgorICAgICMgT3B0aW1pemF0aW9uIHdpbGwgZ2V0IGNsb2JiZXJlZCwgYnV0IG1vc3Qgb2YgdGhlIHN0dWZmIHdpbGwgc3Vydml2ZS4KKyAgICAjIFRoZSBtb3RpdmF0aW9uIGZvciB0aGlzIGlzIHRvIHBvaW50IHRvIHRoZSBjb3JyZWN0IHBsYWNlIGZvciBkZWJ1ZworICAgICMgc291cmNlIGZpbGVzIGFuZCBDRkxBR1MgZG9lcyB0aGF0LiAgTm90aGluZyB1c2VzIENDQy4KKyAgICAjCisgICAgZXhwb3J0IENDPSIke0NDfSAke0NGTEFHU30iCisgICAgbWFrZSAtQyAuL25zcyBDQ0M9IiR7Q1hYfSAtZyIgXAorICAgICAgICBPU19URVNUPSR7T1NfVEVTVH0gXAorICAgICAgICBSUEFUSD0iJHtSUEFUSH0iCit9CisKK2RvX2NvbXBpbGVbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTSVRFSU5GT19CSVRTIgorCitkb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworICAgIGV4cG9ydCBMREZMQUdTPSIiCit9CisKK2RvX2luc3RhbGwoKSB7CisgICAgZXhwb3J0IENST1NTX0NPTVBJTEU9MQorICAgIGV4cG9ydCBOQVRJVkVfQ0M9IiR7QlVJTERfQ0N9IgorICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQorCisgICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQorCisgICAgZXhwb3J0IExJQkRJUj0ke2xpYmRpcn0KKyAgICBleHBvcnQgTU9aSUxMQV9DTElFTlQ9MQorICAgIGV4cG9ydCBOU19VU0VfR0NDPTEKKyAgICBleHBvcnQgTlNTX1VTRV9TWVNURU1fU1FMSVRFPTEKKyAgICBleHBvcnQgTlNTX0VOQUJMRV9FQ0M9MQorCisgICAgZXhwb3J0IE9TX1JFTEVBU0U9My40CisgICAgZXhwb3J0IE9TX1RBUkdFVD1MaW51eAorICAgIGV4cG9ydCBPU19BUkNIPUxpbnV4CisKKyAgICBpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYyIgXTsgdGhlbgorICAgICAgICBPU19URVNUPXBwYworICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGM2NCIgXTsgdGhlbgorICAgICAgICBPU19URVNUPXBwYzY0CisgICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAibWlwcyIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzZWwiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0IiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NGVsIiBdOyB0aGVuCisgICAgICAgIE9TX1RFU1Q9bWlwcworICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gImFhcmNoNjRfYmUiIF07IHRoZW4KKyAgICAgICAgQ1BVX0FSQ0g9YWFyY2g2NAorICAgICAgICBPU19URVNUPSJhYXJjaDY0IgorICAgIGVsc2UKKyAgICAgICAgT1NfVEVTVD0iJHtUQVJHRVRfQVJDSH0iCisgICAgZmkKKyAgICBpZiBbICIke1NJVEVJTkZPX0JJVFN9IiA9ICI2NCIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFXzY0PTEKKyAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJ4ODZfNjQiIC1hICIke1NJVEVJTkZPX0JJVFN9IiA9ICIzMiIgXTsgdGhlbgorICAgICAgICBleHBvcnQgVVNFX1gzMj0xCisgICAgZmkKKworICAgIGV4cG9ydCBOU1NfRElTQUJMRV9HVEVTVFM9MQorCisgICAgbWFrZSAtQyAuL25zcyBcCisgICAgICAgIENDQz0iJHtDWFh9IiBcCisgICAgICAgIE9TX1RFU1Q9JHtPU19URVNUfSBcCisgICAgICAgIFNPVVJDRV9MSUJfRElSPSIke1REfS8ke2xpYmRpcn0iIFwKKyAgICAgICAgU09VUkNFX0JJTl9ESVI9IiR7VER9LyR7YmluZGlyfSIgXAorICAgICAgICBpbnN0YWxsCisKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtsaWJkaXJ9LworICAgIGZvciBmaWxlIGluICR7U30vZGlzdC8qLk9CSi9saWIvKi5zbzsgZG8KKyAgICAgICAgZWNobyAiSW5zdGFsbGluZyBgYmFzZW5hbWUgJGZpbGVgLi4uIgorICAgICAgICBjcCAkZmlsZSAgJHtEfS8ke2xpYmRpcn0vCisgICAgZG9uZQorCisgICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc28uKjsgZG8KKyAgICAgICAgaWYgWyAtZiAkc2hhcmVkX2xpYiBdOyB0aGVuCisgICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQorICAgICAgICAgICAgbG4gLXNmICQoYmFzZW5hbWUgJHNoYXJlZF9saWIpICR7RH0vJHtsaWJkaXJ9LyQoYmFzZW5hbWUgJHNoYXJlZF9saWIgLjFvZSkKKyAgICAgICAgZmkKKyAgICBkb25lCisgICAgZm9yIHNoYXJlZF9saWIgaW4gJHtURH0vJHtsaWJkaXJ9Lyouc287IGRvCisgICAgICAgIGlmIFsgLWYgJHNoYXJlZF9saWIgLWEgISAtZSAke0R9LyR7bGliZGlyfS8kc2hhcmVkX2xpYiBdOyB0aGVuCisgICAgICAgICAgICBjcCAkc2hhcmVkX2xpYiAke0R9LyR7bGliZGlyfQorICAgICAgICBmaQorICAgIGRvbmUKKworICAgIGluc3RhbGwgLWQgJHtEfS8ke2luY2x1ZGVkaXJ9L25zczMKKyAgICBpbnN0YWxsIC1tIDY0NCAtdCAke0R9LyR7aW5jbHVkZWRpcn0vbnNzMyBkaXN0L3B1YmxpYy9uc3MvKgorCisgICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfQorICAgIGZvciBiaW5hcnkgaW4gJHtURH0vJHtiaW5kaXJ9Lyo7IGRvCisgICAgICAgIGluc3RhbGwgLW0gNzU1IC10ICR7RH0vJHtiaW5kaXJ9ICRiaW5hcnkKKyAgICBkb25lCit9CisKK2RvX2luc3RhbGxbdmFyZGVwc2V4Y2x1ZGVdICs9ICJTSVRFSU5GT19CSVRTIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIENyZWF0ZSBlbXB0eSAuY2hrIGZpbGVzIGZvciB0aGUgTlNTIGxpYnJhcmllcyBhdCBidWlsZCB0aW1lLiBUaGV5IGNvdWxkCisgICAgIyBiZSByZWdlbmVyYXRlZCBhdCB0YXJnZXQncyBib290IHRpbWUuCisgICAgZm9yIGZpbGUgaW4gbGlic29mdG9rbjMuY2hrIGxpYmZyZWVibDMuY2hrIGxpYm5zc2RibTMuY2hrOyBkbworICAgICAgICB0b3VjaCAke0R9LyR7bGliZGlyfS8kZmlsZQorICAgICAgICBjaG1vZCA3NTUgJHtEfS8ke2xpYmRpcn0vJGZpbGUKKyAgICBkb25lCisgICAgaW5zdGFsbCAtRCAtbSA3NTUgJHtXT1JLRElSfS9zaWdubGlicy5zaCAke0R9LyR7YmluZGlyfS9zaWdubGlicy5zaAorCisgICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy8KKyAgICBzZWQgJ3MvJU5TU19WRVJTSU9OJS8ke1BWfS8nICR7V09SS0RJUn0vbnNzLnBjLmluIHwgc2VkICdzLyVOU1BSX1ZFUlNJT04lLzQuOS4yLycgPiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRVBSRUZJWDoke3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRUVYRUNQUkVGSVg6JHtleGVjX3ByZWZpeH06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRUxJQkRJUjoke2xpYmRpcn06ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKKyAgICBzZWQgLWkgczpPRUlOQ0RJUjoke2luY2x1ZGVkaXJ9L25zczM6ZyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3MucGMKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICMgSXQgdXNlZCB0byBjYWxsIGNlcnR1dGlsIHRvIGNyZWF0ZSBhIGJsYW5rIGNlcnRpZmljYXRlIHdpdGggZW1wdHkgcGFzc3dvcmQgYXQKKyAgICAjIGJ1aWxkIHRpbWUsIGJ1dCB0aGUgY2hlY2tzdW0gb2Yga2V5NC5kYiBjaGFuZ2VzIGV2ZXJ5IHRpbWUgd2hlbiBjZXJ0dXRpbCBpcyBjYWxsZWQuCisgICAgIyBJdCBjYXVzZXMgbm9uLWRldGVybWluaXNtIGlzc3VlLCBzbyBwcm92aWRlIGRhdGFiYXNlcyB3aXRoIGEgYmxhbmsgY2VydGlmaWNhdGUKKyAgICAjIHdoaWNoIGFyZSBvcmlnaW5hbGx5IGZyb20gb3V0cHV0IG9mIG5zcyBpbiBxZW11eDg2LTY0IGJ1aWxkLiBZb3UgY2FuIGdldCB0aGVzZQorICAgICMgZGF0YWJhc2VzIGJ5OgorICAgICMgY2VydHV0aWwgLU4gLWQgc3FsOi9kYXRhYmFzZS9wYXRoLyAtLWVtcHR5LXBhc3N3b3JkCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYmxhbmstY2VydDkuZGIgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiL2NlcnQ5LmRiCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYmxhbmsta2V5NC5kYiAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIva2V5NC5kYgorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3N5c3RlbS1wa2NzMTEudHh0ICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi9wa2NzMTEudHh0Cit9CisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAibnNzLW5hdGl2ZSIKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisgICAgaWYgWyAtbiAiJEQiIF07IHRoZW4KKyAgICAgICAgZm9yIEkgaW4gJEQke2xpYmRpcn0vbGliKi5jaGs7IGRvCisgICAgICAgICAgICBETj1gZGlybmFtZSAkSWAKKyAgICAgICAgICAgIEJOPWBiYXNlbmFtZSAkSSAuY2hrYAorICAgICAgICAgICAgRk49JEROLyRCTi5zbworICAgICAgICAgICAgc2hsaWJzaWduIC1pICRGTgorICAgICAgICAgICAgaWYgWyAkPyAtbmUgMCBdOyB0aGVuCisgICAgICAgICAgICAgICAgZXhpdCAxCisgICAgICAgICAgICBmaQorICAgICAgICBkb25lCisgICAgZWxzZQorICAgICAgICBzaWdubGlicy5zaAorICAgIGZpCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1zbWltZSIKK0ZJTEVTXyR7UE59LXNtaW1lID0gIlwKKyAgICAke2JpbmRpcn0vc21pbWUgXAorIgorCitGSUxFU18ke1BOfSA9ICJcCisgICAgJHtzeXNjb25mZGlyfSBcCisgICAgJHtiaW5kaXJ9IFwKKyAgICAke2xpYmRpcn0vbGliKi5jaGsgXAorICAgICR7bGliZGlyfS9saWIqLnNvIFwKKyAgICAiCisKK0ZJTEVTXyR7UE59LWRldiA9ICJcCisgICAgJHtsaWJkaXJ9L25zcyBcCisgICAgJHtsaWJkaXJ9L3BrZ2NvbmZpZy8qIFwKKyAgICAke2luY2x1ZGVkaXJ9LyogXAorICAgICIKKworUkRFUEVORFNfJHtQTn0tc21pbWUgPSAicGVybCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb25pZy9vbmlnXzYuOS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb25pZy9vbmlnXzYuOS40LmJiCmluZGV4IGNmYTg2ZjAuLjUwZDlmNTIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29uaWcvb25pZ182LjkuNC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vbmlnL29uaWdfNi45LjQuYmIKQEAgLTI4LDUgKzI4LDYgQEAKIH0KIAogZG9faW5zdGFsbF9wdGVzdCgpIHsKLSAgICBpbnN0YWxsIC1EbTA3NTUgLXQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvICR7Qn0vdGVzdC8ubGlicy8qCisgICAgbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBpbnN0YWxsIC1tIDA3NTUgLXQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvICR7Qn0vdGVzdC8ubGlicy8qCiB9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubGRhcC9vcGVubGRhcC9raWxsLWljdS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwL2tpbGwtaWN1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWU0NjQ2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwL2tpbGwtaWN1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotRnJvbTogTWFyY2luIEp1c3praWV3aWN6IDxtYXJjaW4uanVzemtpZXdpY3pAbGluYXJvLm9yZz4KLQotc2xhcGQgZGVwZW5kcyBvbiBJQ1UgaWYgaXQgd2FzIGJ1aWx0IGZpcnN0LgotCi1VcHN0cmVhbS1TdGF0dXM6IGluYXBwcm9waWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0tLS0KLSBjb25maWd1cmUuaW4gfCAgICA4IC0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDggZGVsZXRpb25zKC0pCi0KLS0tLSBvcGVubGRhcC0yLjQuMjMub3JpZy9jb25maWd1cmUuaW4KLSsrKyBvcGVubGRhcC0yLjQuMjMvY29uZmlndXJlLmluCi1AQCAtMjA0NSwxOCArMjA0NSwxMCBAQCBpZiB0ZXN0ICRvbF9lbmFibGVfbmRiICE9IG5vIDsgdGhlbgotIAkJU0xBUERfTElCUz0iJFNMQVBEX0xJQlMgXCQoU0xBUERfTkRCX0xJQlMpIgotIAlmaQotIGZpCi0gCi0gZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLS1kbmwgSW50ZXJuYXRpb25hbCBDb21wb25lbnRzIGZvciBVbmljb2RlCi0tT0xfSUNVCi0taWYgdGVzdCAiJG9sX2ljdSIgPSBubyA7IHRoZW4KLS0JQUNfTVNHX1dBUk4oW0lDVSBub3QgYXZhaWxhYmxlXSkKLS1lbHNlCi0tCUlDVV9MSUJTPSIkb2xfaWN1IgotLWZpCi0tZG5sIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBkbmwKLSBkbmwgQ2hlY2sgZm9yIEN5cnVzIFNBU0wKLSBkbmwKLSBXSVRIX1NBU0w9bm8KLSBvbF9saW5rX3Nhc2w9bm8KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwXzIuNC40OC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L29wZW5sZGFwL29wZW5sZGFwXzIuNC40OC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNjMjE5ZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubGRhcC9vcGVubGRhcF8yLjQuNDguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNTUgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuTERBUCBEaXJlY3RvcnkgU2VydmljZSIKLURFU0NSSVBUSU9OID0gIk9wZW5MREFQIFNvZnR3YXJlIGlzIGFuIG9wZW4gc291cmNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBMaWdodHdlaWdodCBEaXJlY3RvcnkgQWNjZXNzIFByb3RvY29sLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuT3BlbkxEQVAub3JnL2xpY2Vuc2UuaHRtbCIKLSMgVGhlIE9wZW5MREFQIFB1YmxpYyBMaWNlbnNlIC0gc2VlIHRoZSBIT01FUEFHRSAtIGRlZmluZXMKLSMgdGhlIGxpY2Vuc2UuICB3d3cub3BlbmxkYXAub3JnIGNsYWltcyB0aGlzIGlzIE9wZW4gU291cmNlCi0jIChzZWUgaHR0cDovL3d3dy5vcGVubGRhcC5vcmcpLCB0aGUgbGljZW5zZSBhcHBlYXJzIHRvIGJlCi0jIGJhc2ljYWxseSBCU0QuICBvcGVuc291cmNlLm9yZyBkb2VzIG5vdCByZWNvcmQgdGhpcyBsaWNlbnNlCi0jIGF0IHByZXNlbnQgKHNvIGl0IGlzIGFwcGFyZW50bHkgbm90IE9TSSBjZXJ0aWZpZWQpLgotTElDRU5TRSA9ICJPcGVuTERBUCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9YWQ5MTRjMzVmOTdiNDY4ZjQyMWY4YWMwZjNkODIxZjQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRTttZDU9MTUzZDA3ZWYwNTJjNGEzN2E4ZmFjMjNiYzYwMzE5NzIgXAotICAgICAgICAgICAgICAgICAgICAiCi1TRUNUSU9OID0gImxpYnMiCi0KLUxEQVBfVkVSID0gIiR7QCcuJy5qb2luKGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMDoyXSl9IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cub3BlbmxkYXAub3JnL3NvZnR3YXJlL2Rvd25sb2FkL09wZW5MREFQL29wZW5sZGFwLXJlbGVhc2UvJHtCUH0udGd6IFwKLSAgICBmaWxlOi8vb3BlbmxkYXAtbTQtcHRocmVhZC5wYXRjaCBcCi0gICAgZmlsZTovL2tpbGwtaWN1LnBhdGNoIFwKLSAgICBmaWxlOi8vb3BlbmxkYXAtMi40LjI4LWdudXRscy1nY3J5cHQucGF0Y2ggXAotICAgIGZpbGU6Ly91c2UtdXJhbmRvbS5wYXRjaCBcCi0gICAgZmlsZTovL2luaXRzY3JpcHQgXAotICAgIGZpbGU6Ly9zbGFwZC5zZXJ2aWNlIFwKLSAgICBmaWxlOi8vdGhyZWFkX3N0dWIucGF0Y2ggXAotICAgIGZpbGU6Ly9vcGVubGRhcC1DVkUtMjAxNS0zMjc2LnBhdGNoIFwKLSAgICBmaWxlOi8vcmVtb3ZlLXVzZXItaG9zdC1wd2QtZnJvbS12ZXJzaW9uLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA3MjlhMDcxMWZlMDk2ODMxZGVkYzE1OWUwYmJlNzNmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5NTIzZmZjYWI1Y2QxNGI3MDlmY2YzY2I0ZDA0ZThiYzc2YmI4OTcwMTEzMjU1ZjM3MmJjNzQ5NTRjNjA3NGQiCi0KLURFUEVORFMgPSAidXRpbC1saW51eCBncm9mZi1uYXRpdmUiCi0KLSMgVGhlIG9yaWdpbmFsIHRvcC5tayB1c2VkIElOU1RBTEwsIG5vdCBJTlNUQUxMX1NUUklQX1BST0dSQU0gd2hlbgotIyBpbnN0YWxsaW5nIC5zbyBhbmQgZXhlY3V0YWJsZXMsIHRoaXMgZmFpbHMgaW4gY3Jvc3MgY29tcGlsYXRpb24KLSMgZW52aXJvbm1lbnRzCi1TUkNfVVJJICs9ICJmaWxlOi8vaW5zdGFsbC1zdHJpcC5wYXRjaCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQKLQotIyBDViBTRVRUSU5HUwotIyBSZXF1aXJlZCB0byB3b3JrIHJvdW5kIEFDX0ZVTkNfTUVNQ01QIHdoaWNoIGdldHMgdGhlIHdyb25nIGFuc3dlcgotIyB3aGVuIGNyb3NzIGNvbXBpbGluZyAoc2hvdWxkIGJlIGluIHNpdGU/KQotRVhUUkFfT0VDT05GICs9ICJhY19jdl9mdW5jX21lbWNtcF93b3JraW5nPXllcyIKLQotIyBDT05GSUcgREVGSU5JVElPTlMKLSMgVGhlIGZvbGxvd2luZyBpcyBuZWNlc3NhcnkgYmVjYXVzZSBpdCBjYW5ub3QgYmUgZGV0ZXJtaW5lZCBmb3IgYQotIyBjcm9zcyBjb21waWxlIGF1dG9tYWdpY2FsbHkuICBTZWxlY3Qgc2hvdWxkIHlpZWxkIGZpbmUgb24gYWxsIE9FCi0jIHN5c3RlbXMuLi4KLUVYVFJBX09FQ09ORiArPSAiLS13aXRoLXlpZWxkaW5nLXNlbGVjdD15ZXMiCi0jIFNoYXJlZCBsaWJyYXJpZXMgYXJlIG5pY2UuLi4KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtZHluYW1pYyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyBtb2R1bGVzIFwKLSAgICAgICAgICAgICAgICAgICBtZGIgbGRhcCBtZXRhIG1vbml0b3IgbnVsbCBwYXNzd2Qgc2hlbGwgcHJveHljYWNoZSBkbnNzcnYgXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAotIgotIy0td2l0aC10bHMgICAgICAgICAgICAgIHdpdGggVExTL1NTTCBzdXBwb3J0IGF1dG98b3BlbnNzbHxnbnV0bHMgW2F1dG9dCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLS13aXRoLXRscz1nbnV0bHMsLGdudXRscyBsaWJnY3J5cHQiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC10bHM9b3BlbnNzbCwsb3BlbnNzbCIKLQotUEFDS0FHRUNPTkZJR1tzYXNsXSA9ICItLXdpdGgtY3lydXMtc2FzbCwtLXdpdGhvdXQtY3lydXMtc2FzbCxjeXJ1cy1zYXNsIgotUEFDS0FHRUNPTkZJR1ttb2R1bGVzXSA9ICJsdF9jdl9kbG9wZW5fc2VsZj15ZXMgLS1lbmFibGUtbW9kdWxlcywtLWRpc2FibGUtbW9kdWxlcyxsaWJ0b29sIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2IgotCi0jIFNMQVBEIG9wdGlvbnMKLSMKLSMgVU5JWCBjcnlwdCgzKSBwYXNzd2Qgc3VwcG9ydDoKLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtY3J5cHQiCi0KLSMgU0xBUEQgQkFDS0VORAotIwotIyBUaGUgYmFja2VuZCBtdXN0IGJlIHNldCBieSB0aGUgY29uZmlndXJhdGlvbi4gIFRoaXMgY29udHJvbHMgdGhlCi0jIHJlcXVpcmVkIGRhdGFiYXNlLgotIwotIyBCYWNrZW5kcz0iYmRiIGRuc3NydiBoZGIgbGRhcCBtZGIgbWV0YSBtb25pdG9yIG5kYiBudWxsIHBhc3N3ZCBwZXJsIHJlbGF5IHNoZWxsIHNvY2sgc3FsIgotIwotIyBOb3RlIHRoYXQgbXVsdGlwbGUgYmFja2VuZHMgY2FuIGJlIGJ1aWx0LiAgVGhlIGxkYm0gYmFja2VuZCByZXF1aXJlcyBhCi0jIGJ1aWxkLXRpbWUgY2hvaWNlIG9mIGRhdGFiYXNlIEFQSS4gIFRoZSBiZGIgYmFja2VuZCBmb3JjZXMgdGhpcyB0byBiZQotIyBEQjQuICBUbyB1c2UgdGhlIGdkYm0gKG9yIG90aGVyKSBBUEkgdGhlIEJlcmtlbHkgZGF0YWJhc2UgbW9kdWxlIG11c3QKLSMgYmUgcmVtb3ZlZCBmcm9tIHRoZSBidWlsZC4KLW1kID0gIiR7bGliZXhlY2Rpcn0vb3BlbmxkYXAiCi0jCi0jLS1lbmFibGUtYmRiICAgICAgICAgIGVuYWJsZSBCZXJrZWxleSBEQiBiYWNrZW5kIG5vfHllc3xtb2QgeWVzCi0jIFRoZSBCZXJrZWx5IERCIGlzIHRoZSBzdGFuZGFyZCBjaG9pY2UuICBUaGlzIHZlcnNpb24gb2YgT3BlbkxEQVAgcmVxdWlyZXMKLSMgdGhlIHZlcnNpb24gNCBpbXBsZW1lbnRhdGlvbiBvciBiZXR0ZXIuCi1QQUNLQUdFQ09ORklHW2JkYl0gPSAiLS1lbmFibGUtYmRiPXllcywtLWVuYWJsZS1iZGI9bm8sZGIiCi0KLSMtLWVuYWJsZS1kbnNzcnYgICAgICAgZW5hYmxlIGRuc3NydiBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KLVBBQ0tBR0VDT05GSUdbZG5zc3J2XSA9ICItLWVuYWJsZS1kbnNzcnY9bW9kLC0tZW5hYmxlLWRuc3Nydj1ubyIKLQotIy0tZW5hYmxlLWhkYiAgICAgICAgICBlbmFibGUgSGllcmFyY2hpY2FsIERCIGJhY2tlbmQgbm98eWVzfG1vZCBubwotUEFDS0FHRUNPTkZJR1toZGJdID0gIi0tZW5hYmxlLWhkYj15ZXMsLS1lbmFibGUtaGRiPW5vLGRiIgotCi0jLS1lbmFibGUtbGRhcCAgICAgICAgIGVuYWJsZSBsZGFwIGJhY2tlbmQgbm98eWVzfG1vZCBubwotUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1sZGFwPW1vZCwtLWVuYWJsZS1sZGFwPW5vLCIKLQotIy0tZW5hYmxlLW1kYiAgICAgICAgICBlbmFibGUgbWRiIGRhdGFiYXNlIGJhY2tlbmQgbm98eWVzfG1vZCBbeWVzXQotUEFDS0FHRUNPTkZJR1ttZGJdID0gIi0tZW5hYmxlLW1kYj15ZXMsLS1lbmFibGUtbWRiPW5vLCIKLQotIy0tZW5hYmxlLW1ldGEgICAgICAgICBlbmFibGUgbWV0YWRpcmVjdG9yeSBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KLVBBQ0tBR0VDT05GSUdbbWV0YV0gPSAiLS1lbmFibGUtbWV0YT1tb2QsLS1lbmFibGUtbWV0YT1ubywiCi0KLSMtLWVuYWJsZS1tb25pdG9yICAgICAgZW5hYmxlIG1vbml0b3IgYmFja2VuZCBub3x5ZXN8bW9kIHllcwotUEFDS0FHRUNPTkZJR1ttb25pdG9yXSA9ICItLWVuYWJsZS1tb25pdG9yPW1vZCwtLWVuYWJsZS1tb25pdG9yPW5vLCIKLQotIy0tZW5hYmxlLW5kYiAgICAgICAgICBlbmFibGUgTXlTUUwgTkRCIENsdXN0ZXIgYmFja2VuZCBub3x5ZXN8bW9kIFtub10KLVBBQ0tBR0VDT05GSUdbbmRiXSA9ICItLWVuYWJsZS1uZGI9bW9kLC0tZW5hYmxlLW5kYj1ubywiCi0KLSMtLWVuYWJsZS1udWxsICAgICAgICAgZW5hYmxlIG51bGwgYmFja2VuZCBub3x5ZXN8bW9kIG5vCi1QQUNLQUdFQ09ORklHW251bGxdID0gIi0tZW5hYmxlLW51bGw9bW9kLC0tZW5hYmxlLW51bGw9bm8sIgotCi0jLS1lbmFibGUtcGFzc3dkICAgICAgIGVuYWJsZSBwYXNzd2QgYmFja2VuZCBub3x5ZXN8bW9kIG5vCi1QQUNLQUdFQ09ORklHW3Bhc3N3ZF0gPSAiLS1lbmFibGUtcGFzc3dkPW1vZCwtLWVuYWJsZS1wYXNzd2Q9bm8sIgotCi0jLS1lbmFibGUtcGVybCAgICAgICAgIGVuYWJsZSBwZXJsIGJhY2tlbmQgbm98eWVzfG1vZCBubwotIyAgVGhpcyByZXF1aXJlcyBhIGxvYWRhYmxlIHBlcmwgZHluYW1pYyBsaWJyYXJ5LCBpZiBlbmFibGVkIHdpdGhvdXQKLSMgIGRvaW5nIHNvbWV0aGluZyBhcHByb3ByaWF0ZSAoYnVpbGRpbmcgcGVybD8pIHRoZSBidWlsZCB3aWxsIHBpY2sKLSMgIHVwIHRoZSBidWlsZCBtYWNoaW5lIHBlcmwgLSBub3QgZ29vZCAoaW5oZXJpdCBwZXJsbmF0aXZlPykKLVBBQ0tBR0VDT05GSUdbcGVybF0gPSAiLS1lbmFibGUtcGVybD1tb2QsLS1lbmFibGUtcGVybD1ubyxwZXJsIgotCi0jLS1lbmFibGUtcmVsYXkgICAgICAgIGVuYWJsZSByZWxheSBiYWNrZW5kIG5vfHllc3xtb2QgW3llc10KLVBBQ0tBR0VDT05GSUdbcmVsYXldID0gIi0tZW5hYmxlLXJlbGF5PW1vZCwtLWVuYWJsZS1yZWxheT1ubywiCi0KLSMtLWVuYWJsZS1zaGVsbCAgICAgICAgZW5hYmxlIHNoZWxsIGJhY2tlbmQgbm98eWVzfG1vZCBubwotIyBjb25maWd1cmU6IFdBUk5JTkc6IFVzZSBvZiAtLXdpdGhvdXQtdGhyZWFkcyBpcyByZWNvbW1lbmRlZCB3aXRoIGJhY2stc2hlbGwKLVBBQ0tBR0VDT05GSUdbc2hlbGxdID0gIi0tZW5hYmxlLXNoZWxsPW1vZCAtLXdpdGhvdXQtdGhyZWFkcywtLWVuYWJsZS1zaGVsbD1ubywiCi0KLSMtLWVuYWJsZS1zb2NrICAgICAgICAgZW5hYmxlIHNvY2sgYmFja2VuZCBub3x5ZXN8bW9kIFtub10KLVBBQ0tBR0VDT05GSUdbc29ja10gPSAiLS1lbmFibGUtc29jaz1tb2QsLS1lbmFibGUtc29jaz1ubywiCi0KLSMtLWVuYWJsZS1zcWwgICAgICAgICAgZW5hYmxlIHNxbCBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KLSMgc3FsIHJlcXVpcmVzIHNvbWUgc3FsIGJhY2tlbmQgd2hpY2ggcHJvdmlkZXMgc3FsLmgsIHNxbGl0ZSogcHJvdmlkZXMKLSMgc3FsaXRlLmggKHdoaWNoIG1heSBiZSBjb21wYXRpYmxlIGJ1dCBoYXNuJ3QgYmVlbiB0cmllZC4pCi1QQUNLQUdFQ09ORklHW3NxbF0gPSAiLS1lbmFibGUtc3FsPW1vZCwtLWVuYWJsZS1zcWw9bm8sc3FsaXRlMyIKLQotIy0tZW5hYmxlLWR5bmdyb3VwICAgICBEeW5hbWljIEdyb3VwIG92ZXJsYXkgbm98eWVzfG1vZCBubwotIyAgVGhpcyBpcyBhIGRlbW8sIFByb3h5IENhY2hlIGRlZmluZXMgaW5pdF9tb2R1bGUgd2hpY2ggY29uZmxpY3RzIHdpdGggdGhlCi0jICBzYW1lIHN5bWJvbCBpbiBkeW5ncm91cAotUEFDS0FHRUNPTkZJR1tkeW5ncm91cF0gPSAiLS1lbmFibGUtZHluZ3JvdXA9bW9kLC0tZW5hYmxlLWR5bmdyb3VwPW5vLCIKLQotIy0tZW5hYmxlLXByb3h5Y2FjaGUgICBQcm94eSBDYWNoZSBvdmVybGF5IG5vfHllc3xtb2Qgbm8KLVBBQ0tBR0VDT05GSUdbcHJveHljYWNoZV0gPSAiLS1lbmFibGUtcHJveHljYWNoZT1tb2QsLS1lbmFibGUtcHJveHljYWNoZT1ubywiCi1GSUxFU18ke1BOfS1vdmVybGF5LXByb3h5Y2FjaGUgPSAiJHttZH0vcGNhY2hlLSouc28uKiIKLVBBQ0tBR0VTICs9ICIke1BOfS1vdmVybGF5LXByb3h5Y2FjaGUiCi0KLSMgQXBwZW5kIFVSQU5ET01fREVWSUNFPScvZGV2L3VyYW5kb20nIHRvIENQUEZMQUdTOgotIyBUaGlzIGFsbG93cyB0bHMgdG8gb2J0YWluIHJhbmRvbSBiaXRzIGZyb20gL2Rldi91cmFuZG9tLCBieSBkZWZhdWx0Ci0jIGl0IHdhcyBkaXNhYmxlZCBmb3IgY3Jvc3MtY29tcGlsaW5nLgotQ1BQRkxBR1NfYXBwZW5kID0gIiAtRF9HTlVfU09VUkNFIC1EVVJBTkRPTV9ERVZJQ0U9XCcvZGV2L3VyYW5kb21cJyAtZlBJQyIKLQotTERGTEFHU19hcHBlbmQgPSAiIC1wdGhyZWFkIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgY3AgJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9saWJ0b29sL2J1aWxkLWF1eC9sdG1haW4uc2ggJHtTfS9idWlsZAotICAgIHJtIC1mICR7U30vbGlidG9vbAotICAgIGFjbG9jYWwKLSAgICBsaWJ0b29saXplIC0tZm9yY2UgLS1jb3B5Ci0gICAgZ251LWNvbmZpZ2l6ZQotICAgIGF1dG9jb25mCi0gICAgb2VfcnVuY29uZgotfQotCi1MRUFEX1NPTkFNRSA9ICJsaWJsZGFwLSR7TERBUF9WRVJ9LnNvLioiCi0KLSMgVGhlIGV4ZWN1dGFibGVzIGdvIGluIGEgc2VwYXJhdGUgcGFja2FnZS4gIFRoaXMgYWxsb3dzIHRoZQotIyBpbnN0YWxsYXRpb24gb2YgdGhlIGxpYnJhcmllcyB3aXRoIG5vIGRhZW1vbiBzdXBwb3J0LgotIyBFYWNoIG1vZHVsZSBhbHNvIGhhcyBpdHMgb3duIHBhY2thZ2UgLSBzZWUgYWJvdmUuCi1QQUNLQUdFUyArPSAiJHtQTn0tc2xhcGQgJHtQTn0tc2x1cnBkICR7UE59LWJpbiIKLQotIyBQYWNrYWdlIGNvbnRlbnRzIC0gc2hpZnQgbW9zdCBzdGFuZGFyZCBjb250ZW50cyB0byAtYmluCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliKi5zby4qICR7c3lzY29uZmRpcn0vb3BlbmxkYXAvbGRhcC4qICR7bG9jYWxzdGF0ZWRpcn0vJHtCUE59L2RhdGEiCi1GSUxFU18ke1BOfS1zbGFwZCA9ICIke3N5c2NvbmZkaXJ9L2luaXQuZCAke2xpYmV4ZWNkaXJ9L3NsYXBkICR7c2JpbmRpcn0gJHtsb2NhbHN0YXRlZGlyfS9ydW4gJHtsb2NhbHN0YXRlZGlyfS92b2xhdGlsZS9ydW4gXAotICAgICR7c3lzY29uZmRpcn0vb3BlbmxkYXAvc2xhcGQuKiAke3N5c2NvbmZkaXJ9L29wZW5sZGFwL3NjaGVtYSBcCi0gICAgJHtzeXNjb25mZGlyfS9vcGVubGRhcC9EQl9DT05GSUcuZXhhbXBsZSAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyoiCi1GSUxFU18ke1BOfS1zbHVycGQgPSAiJHtsaWJleGVjZGlyfS9zbHVycGQgJHtsb2NhbHN0YXRlZGlyfS9vcGVubGRhcC1zbHVycCAke2xvY2Fsc3RhdGVkaXJ9L3J1biAke2xvY2Fsc3RhdGVkaXJ9L3ZvbGF0aWxlL3J1biIKLUZJTEVTXyR7UE59LWJpbiA9ICIke2JpbmRpcn0iCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtpbmNsdWRlZGlyfSAke2xpYmRpcn0vbGliKi5zbyAke2xpYmRpcn0vKi5sYSAke2xpYmRpcn0vKi5hICR7bGliZXhlY2Rpcn0vb3BlbmxkYXAvKi5hICR7bGliZXhlY2Rpcn0vb3BlbmxkYXAvKi5sYSAke2xpYmV4ZWNkaXJ9L29wZW5sZGFwLyouc28iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZXhlY2Rpcn0vb3BlbmxkYXAvLmRlYnVnIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGNhdCAke1dPUktESVJ9L2luaXRzY3JpcHQgPiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvb3BlbmxkYXAKLSAgICBjaG1vZCA3NTUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL29wZW5sZGFwCi0gICAgIyBUaGlzIGlzIGR1cGxpY2F0ZWQgaW4gL2V0Yy9vcGVubGRhcCBhbmQgaXMgZm9yIHNsYXBkCi0gICAgcm0gLWYgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vb3BlbmxkYXAtZGF0YS9EQl9DT05GSUcuZXhhbXBsZQotCi0gICAgIyBJbnN0YWxsaW5nIHNsYXBkIHVuZGVyICR7c2Jpbn0gaXMgbW9yZSBGSFMgYW5kIExTQiBjb21wbGlhbmNlCi0gICAgbXYgJHtEfSR7bGliZXhlY2Rpcn0vc2xhcGQgJHtEfS8ke3NiaW5kaXJ9L3NsYXBkCi0gICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bGliZXhlY2Rpcn0KLSAgICBTTEFQVE9PTFM9InNsYXBhZGQgc2xhcGNhdCBzbGFwZG4gc2xhcGluZGV4IHNsYXBwYXNzd2Qgc2xhcHRlc3Qgc2xhcGF1dGggc2xhcGFjbCBzbGFwc2NoZW1hIgotICAgIGNkICR7RH0vJHtzYmluZGlyfS8KLSAgICBybSAtZiAke1NMQVBUT09MU30KLSAgICBmb3IgaSBpbiAke1NMQVBUT09MU307IGRvIGxuIC1zZiBzbGFwZCAkaTsgZG9uZQotCi0gICAgcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKLSAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NsYXBkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCi0gICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyouc2VydmljZQotCi0gICAgIyBVc2VzIG1kbSBhcyB0aGUgZGF0YWJhc2UKLSAgICAjICBhbmQgbG9jYWxzdGF0ZWRpciBhcyBkYXRhIGRpcmVjdG9yeSAuLi4KLSAgICBzZWQgLWUgJ3MvIyBtb2R1bGVwYXRoL21vZHVsZXBhdGgvJyBcCi0gICAgICAgIC1lICdzLyMgbW9kdWxlbG9hZFxzKmJhY2tfYmRiLiovbW9kdWxlbG9hZCAgICBiYWNrX21kYi8nIFwKLSAgICAgICAgLWUgJ3MvZGF0YWJhc2VccypiZGIvZGF0YWJhc2UgICAgICAgIG1kYi8nIFwKLSAgICAgICAgLWUgJ3MlXmRpcmVjdG9yeVxzKi4qJWRpcmVjdG9yeSAgICR7bG9jYWxzdGF0ZWRpcn0vJHtCUE59L2RhdGEvJScgXAotICAgICAgICAtaSAke0R9JHtzeXNjb25mZGlyfS9vcGVubGRhcC9zbGFwZC5jb25mCi0KLSAgICBta2RpciAtcCAke0R9JHtsb2NhbHN0YXRlZGlyfS8ke0JQTn0vZGF0YQotCi0KLX0KLQotSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfS1zbGFwZCIKLUlOSVRTQ1JJUFRfTkFNRV8ke1BOfS1zbGFwZCA9ICJvcGVubGRhcCIKLUlOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LXNsYXBkID0gImRlZmF1bHRzIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LXNsYXBkID0gImhvc3RhcGQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0tc2xhcGQgPz0gImRpc2FibGUiCi0KLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7UE59LWJhY2tlbmRzLiogXiR7UE59LWJhY2tlbmQtLioiCi0KLSMgVGhlIG1vZHVsZXMgcmVxdWlyZSB0aGVpciAuc28gdG8gYmUgZHluYW1pY2FseSBsb2FkZWQKLUlOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtZG5zc3J2ICArPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1sZGFwICAgICs9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLW1ldGEgICAgKz0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtbWRiICAgICArPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1tb25pdG9yICs9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLW51bGwgICAgKz0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtcGFzc3dkICArPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1zaGVsbCAgICs9ICJkZXYtc28iCi0KLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGJhY2tlbmRfZGlyICAgID0gZC5leHBhbmQoJyR7bGliZXhlY2Rpcn0vb3BlbmxkYXAnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGJhY2tlbmRfZGlyLCAnYmFja18oW2Etel0qKVwuc28kJywgJ29wZW5sZGFwLWJhY2tlbmQtJXMnLCAnT3BlbkxEQVAgJXMgYmFja2VuZCcsIHByZXBlbmQ9VHJ1ZSwgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBiYWNrZW5kX2RpciwgJ2JhY2tfKFthLXpdKilcLS4qXC5zb1wuLiokJywgJ29wZW5sZGFwLWJhY2tlbmQtJXMnLCAnT3BlbkxEQVAgJXMgYmFja2VuZCcsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCi0KLSAgICBtZXRhcGtnID0gIiR7UE59LWJhY2tlbmRzIgotICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8nICsgbWV0YXBrZywgIjEiKQotICAgIGQuc2V0VmFyKCdGSUxFU18nICsgbWV0YXBrZywgIiIpCi0gICAgbWV0YXBrZ19yZGVwZW5kcyA9IFtdCi0gICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCi0gICAgZm9yIHBrZyBpbiBwYWNrYWdlc1sxOl06Ci0gICAgICAgIGlmIHBrZy5jb3VudCgib3BlbmxkYXAtYmFja2VuZC0iKSBhbmQgbm90IHBrZyBpbiBtZXRhcGtnX3JkZXBlbmRzIGFuZCBub3QgcGtnLmNvdW50KCItZGV2IikgYW5kIG5vdCBwa2cuY291bnQoIi1kYmciKSBhbmQgbm90IHBrZy5jb3VudCgic3RhdGljIikgYW5kIG5vdCBwa2cuY291bnQoImxvY2FsZSIpOgotICAgICAgICAgICAgbWV0YXBrZ19yZGVwZW5kcy5hcHBlbmQocGtnKQotICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnLmpvaW4obWV0YXBrZ19yZGVwZW5kcykpCi0gICAgZC5zZXRWYXIoJ0RFU0NSSVBUSU9OXycgKyBtZXRhcGtnLCAnT3BlbkxEQVAgYmFja2VuZHMgbWV0YSBwYWNrYWdlJykKLSAgICBwYWNrYWdlcy5hcHBlbmQobWV0YXBrZykKLSAgICBkLnNldFZhcignUEFDS0FHRVMnLCAnICcuam9pbihwYWNrYWdlcykpCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmxkYXAvb3BlbmxkYXBfMi40LjQ5LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvb3BlbmxkYXAvb3BlbmxkYXBfMi40LjQ5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MGM3MDQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9vcGVubGRhcC9vcGVubGRhcF8yLjQuNDkuYmIKQEAgLTAsMCArMSwyNTQgQEAKK1NVTU1BUlkgPSAiT3BlbkxEQVAgRGlyZWN0b3J5IFNlcnZpY2UiCitERVNDUklQVElPTiA9ICJPcGVuTERBUCBTb2Z0d2FyZSBpcyBhbiBvcGVuIHNvdXJjZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgTGlnaHR3ZWlnaHQgRGlyZWN0b3J5IEFjY2VzcyBQcm90b2NvbC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lk9wZW5MREFQLm9yZy9saWNlbnNlLmh0bWwiCisjIFRoZSBPcGVuTERBUCBQdWJsaWMgTGljZW5zZSAtIHNlZSB0aGUgSE9NRVBBR0UgLSBkZWZpbmVzCisjIHRoZSBsaWNlbnNlLiAgd3d3Lm9wZW5sZGFwLm9yZyBjbGFpbXMgdGhpcyBpcyBPcGVuIFNvdXJjZQorIyAoc2VlIGh0dHA6Ly93d3cub3BlbmxkYXAub3JnKSwgdGhlIGxpY2Vuc2UgYXBwZWFycyB0byBiZQorIyBiYXNpY2FsbHkgQlNELiAgb3BlbnNvdXJjZS5vcmcgZG9lcyBub3QgcmVjb3JkIHRoaXMgbGljZW5zZQorIyBhdCBwcmVzZW50IChzbyBpdCBpcyBhcHBhcmVudGx5IG5vdCBPU0kgY2VydGlmaWVkKS4KK0xJQ0VOU0UgPSAiT3BlbkxEQVAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PTUzOTFiNTU5ZDIzYTIyMzdiZGIyMWU3YTYyZGFlN2MzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTE1M2QwN2VmMDUyYzRhMzdhOGZhYzIzYmM2MDMxOTcyIFwKKyAgICAgICAgICAgICAgICAgICAgIgorU0VDVElPTiA9ICJsaWJzIgorCitMREFQX1ZFUiA9ICIke0AnLicuam9pbihkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzA6Ml0pfSIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm9wZW5sZGFwLm9yZy9zb2Z0d2FyZS9kb3dubG9hZC9PcGVuTERBUC9vcGVubGRhcC1yZWxlYXNlLyR7QlB9LnRneiBcCisgICAgZmlsZTovL29wZW5sZGFwLW00LXB0aHJlYWQucGF0Y2ggXAorICAgIGZpbGU6Ly9vcGVubGRhcC0yLjQuMjgtZ251dGxzLWdjcnlwdC5wYXRjaCBcCisgICAgZmlsZTovL3VzZS11cmFuZG9tLnBhdGNoIFwKKyAgICBmaWxlOi8vaW5pdHNjcmlwdCBcCisgICAgZmlsZTovL3NsYXBkLnNlcnZpY2UgXAorICAgIGZpbGU6Ly90aHJlYWRfc3R1Yi5wYXRjaCBcCisgICAgZmlsZTovL29wZW5sZGFwLUNWRS0yMDE1LTMyNzYucGF0Y2ggXAorICAgIGZpbGU6Ly9yZW1vdmUtdXNlci1ob3N0LXB3ZC1mcm9tLXZlcnNpb24ucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmE0N2E2YmI0MzE5MzU3ZWE3YjAzMmM0NTI4M2U3OWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTNiMTE3OTQ0YjQxODBmMjNiZWZlODdkMGRjZjQ3ZjI5ZGU3NzViZWZiYzQ2OWRjZjRhYzNkYWIzMzExZTU2ZSIKKworREVQRU5EUyA9ICJ1dGlsLWxpbnV4IGdyb2ZmLW5hdGl2ZSIKKworIyBUaGUgb3JpZ2luYWwgdG9wLm1rIHVzZWQgSU5TVEFMTCwgbm90IElOU1RBTExfU1RSSVBfUFJPR1JBTSB3aGVuCisjIGluc3RhbGxpbmcgLnNvIGFuZCBleGVjdXRhYmxlcywgdGhpcyBmYWlscyBpbiBjcm9zcyBjb21waWxhdGlvbgorIyBlbnZpcm9ubWVudHMKK1NSQ19VUkkgKz0gImZpbGU6Ly9pbnN0YWxsLXN0cmlwLnBhdGNoIgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLXJjLmQgc3lzdGVtZAorCisjIENWIFNFVFRJTkdTCisjIFJlcXVpcmVkIHRvIHdvcmsgcm91bmQgQUNfRlVOQ19NRU1DTVAgd2hpY2ggZ2V0cyB0aGUgd3JvbmcgYW5zd2VyCisjIHdoZW4gY3Jvc3MgY29tcGlsaW5nIChzaG91bGQgYmUgaW4gc2l0ZT8pCitFWFRSQV9PRUNPTkYgKz0gImFjX2N2X2Z1bmNfbWVtY21wX3dvcmtpbmc9eWVzIgorCisjIENPTkZJRyBERUZJTklUSU9OUworIyBUaGUgZm9sbG93aW5nIGlzIG5lY2Vzc2FyeSBiZWNhdXNlIGl0IGNhbm5vdCBiZSBkZXRlcm1pbmVkIGZvciBhCisjIGNyb3NzIGNvbXBpbGUgYXV0b21hZ2ljYWxseS4gIFNlbGVjdCBzaG91bGQgeWllbGQgZmluZSBvbiBhbGwgT0UKKyMgc3lzdGVtcy4uLgorRVhUUkFfT0VDT05GICs9ICItLXdpdGgteWllbGRpbmctc2VsZWN0PXllcyIKKyMgU2hhcmVkIGxpYnJhcmllcyBhcmUgbmljZS4uLgorRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1keW5hbWljIgorCitQQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIG1vZHVsZXMgXAorICAgICAgICAgICAgICAgICAgIG1kYiBsZGFwIG1ldGEgbW9uaXRvciBudWxsIHBhc3N3ZCBzaGVsbCBwcm94eWNhY2hlIGRuc3NydiBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCisiCisjLS13aXRoLXRscyAgICAgICAgICAgICAgd2l0aCBUTFMvU1NMIHN1cHBvcnQgYXV0b3xvcGVuc3NsfGdudXRscyBbYXV0b10KK1BBQ0tBR0VDT05GSUdbZ251dGxzXSA9ICItLXdpdGgtdGxzPWdudXRscywsZ251dGxzIGxpYmdjcnlwdCIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLXRscz1vcGVuc3NsLCxvcGVuc3NsIgorCitQQUNLQUdFQ09ORklHW3Nhc2xdID0gIi0td2l0aC1jeXJ1cy1zYXNsLC0td2l0aG91dC1jeXJ1cy1zYXNsLGN5cnVzLXNhc2wiCitQQUNLQUdFQ09ORklHW21vZHVsZXNdID0gImx0X2N2X2Rsb3Blbl9zZWxmPXllcyAtLWVuYWJsZS1tb2R1bGVzLC0tZGlzYWJsZS1tb2R1bGVzLGxpYnRvb2wiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYiCisKKyMgU0xBUEQgb3B0aW9ucworIworIyBVTklYIGNyeXB0KDMpIHBhc3N3ZCBzdXBwb3J0OgorRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1jcnlwdCIKKworIyBTTEFQRCBCQUNLRU5ECisjCisjIFRoZSBiYWNrZW5kIG11c3QgYmUgc2V0IGJ5IHRoZSBjb25maWd1cmF0aW9uLiAgVGhpcyBjb250cm9scyB0aGUKKyMgcmVxdWlyZWQgZGF0YWJhc2UuCisjCisjIEJhY2tlbmRzPSJiZGIgZG5zc3J2IGhkYiBsZGFwIG1kYiBtZXRhIG1vbml0b3IgbmRiIG51bGwgcGFzc3dkIHBlcmwgcmVsYXkgc2hlbGwgc29jayBzcWwiCisjCisjIE5vdGUgdGhhdCBtdWx0aXBsZSBiYWNrZW5kcyBjYW4gYmUgYnVpbHQuICBUaGUgbGRibSBiYWNrZW5kIHJlcXVpcmVzIGEKKyMgYnVpbGQtdGltZSBjaG9pY2Ugb2YgZGF0YWJhc2UgQVBJLiAgVGhlIGJkYiBiYWNrZW5kIGZvcmNlcyB0aGlzIHRvIGJlCisjIERCNC4gIFRvIHVzZSB0aGUgZ2RibSAob3Igb3RoZXIpIEFQSSB0aGUgQmVya2VseSBkYXRhYmFzZSBtb2R1bGUgbXVzdAorIyBiZSByZW1vdmVkIGZyb20gdGhlIGJ1aWxkLgorbWQgPSAiJHtsaWJleGVjZGlyfS9vcGVubGRhcCIKKyMKKyMtLWVuYWJsZS1iZGIgICAgICAgICAgZW5hYmxlIEJlcmtlbGV5IERCIGJhY2tlbmQgbm98eWVzfG1vZCB5ZXMKKyMgVGhlIEJlcmtlbHkgREIgaXMgdGhlIHN0YW5kYXJkIGNob2ljZS4gIFRoaXMgdmVyc2lvbiBvZiBPcGVuTERBUCByZXF1aXJlcworIyB0aGUgdmVyc2lvbiA0IGltcGxlbWVudGF0aW9uIG9yIGJldHRlci4KK1BBQ0tBR0VDT05GSUdbYmRiXSA9ICItLWVuYWJsZS1iZGI9eWVzLC0tZW5hYmxlLWJkYj1ubyxkYiIKKworIy0tZW5hYmxlLWRuc3NydiAgICAgICBlbmFibGUgZG5zc3J2IGJhY2tlbmQgbm98eWVzfG1vZCBubworUEFDS0FHRUNPTkZJR1tkbnNzcnZdID0gIi0tZW5hYmxlLWRuc3Nydj1tb2QsLS1lbmFibGUtZG5zc3J2PW5vIgorCisjLS1lbmFibGUtaGRiICAgICAgICAgIGVuYWJsZSBIaWVyYXJjaGljYWwgREIgYmFja2VuZCBub3x5ZXN8bW9kIG5vCitQQUNLQUdFQ09ORklHW2hkYl0gPSAiLS1lbmFibGUtaGRiPXllcywtLWVuYWJsZS1oZGI9bm8sZGIiCisKKyMtLWVuYWJsZS1sZGFwICAgICAgICAgZW5hYmxlIGxkYXAgYmFja2VuZCBub3x5ZXN8bW9kIG5vCitQQUNLQUdFQ09ORklHW2xkYXBdID0gIi0tZW5hYmxlLWxkYXA9bW9kLC0tZW5hYmxlLWxkYXA9bm8sIgorCisjLS1lbmFibGUtbWRiICAgICAgICAgIGVuYWJsZSBtZGIgZGF0YWJhc2UgYmFja2VuZCBub3x5ZXN8bW9kIFt5ZXNdCitQQUNLQUdFQ09ORklHW21kYl0gPSAiLS1lbmFibGUtbWRiPXllcywtLWVuYWJsZS1tZGI9bm8sIgorCisjLS1lbmFibGUtbWV0YSAgICAgICAgIGVuYWJsZSBtZXRhZGlyZWN0b3J5IGJhY2tlbmQgbm98eWVzfG1vZCBubworUEFDS0FHRUNPTkZJR1ttZXRhXSA9ICItLWVuYWJsZS1tZXRhPW1vZCwtLWVuYWJsZS1tZXRhPW5vLCIKKworIy0tZW5hYmxlLW1vbml0b3IgICAgICBlbmFibGUgbW9uaXRvciBiYWNrZW5kIG5vfHllc3xtb2QgeWVzCitQQUNLQUdFQ09ORklHW21vbml0b3JdID0gIi0tZW5hYmxlLW1vbml0b3I9bW9kLC0tZW5hYmxlLW1vbml0b3I9bm8sIgorCisjLS1lbmFibGUtbmRiICAgICAgICAgIGVuYWJsZSBNeVNRTCBOREIgQ2x1c3RlciBiYWNrZW5kIG5vfHllc3xtb2QgW25vXQorUEFDS0FHRUNPTkZJR1tuZGJdID0gIi0tZW5hYmxlLW5kYj1tb2QsLS1lbmFibGUtbmRiPW5vLCIKKworIy0tZW5hYmxlLW51bGwgICAgICAgICBlbmFibGUgbnVsbCBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KK1BBQ0tBR0VDT05GSUdbbnVsbF0gPSAiLS1lbmFibGUtbnVsbD1tb2QsLS1lbmFibGUtbnVsbD1ubywiCisKKyMtLWVuYWJsZS1wYXNzd2QgICAgICAgZW5hYmxlIHBhc3N3ZCBiYWNrZW5kIG5vfHllc3xtb2Qgbm8KK1BBQ0tBR0VDT05GSUdbcGFzc3dkXSA9ICItLWVuYWJsZS1wYXNzd2Q9bW9kLC0tZW5hYmxlLXBhc3N3ZD1ubywiCisKKyMtLWVuYWJsZS1wZXJsICAgICAgICAgZW5hYmxlIHBlcmwgYmFja2VuZCBub3x5ZXN8bW9kIG5vCisjICBUaGlzIHJlcXVpcmVzIGEgbG9hZGFibGUgcGVybCBkeW5hbWljIGxpYnJhcnksIGlmIGVuYWJsZWQgd2l0aG91dAorIyAgZG9pbmcgc29tZXRoaW5nIGFwcHJvcHJpYXRlIChidWlsZGluZyBwZXJsPykgdGhlIGJ1aWxkIHdpbGwgcGljaworIyAgdXAgdGhlIGJ1aWxkIG1hY2hpbmUgcGVybCAtIG5vdCBnb29kIChpbmhlcml0IHBlcmxuYXRpdmU/KQorUEFDS0FHRUNPTkZJR1twZXJsXSA9ICItLWVuYWJsZS1wZXJsPW1vZCwtLWVuYWJsZS1wZXJsPW5vLHBlcmwiCisKKyMtLWVuYWJsZS1yZWxheSAgICAgICAgZW5hYmxlIHJlbGF5IGJhY2tlbmQgbm98eWVzfG1vZCBbeWVzXQorUEFDS0FHRUNPTkZJR1tyZWxheV0gPSAiLS1lbmFibGUtcmVsYXk9bW9kLC0tZW5hYmxlLXJlbGF5PW5vLCIKKworIy0tZW5hYmxlLXNoZWxsICAgICAgICBlbmFibGUgc2hlbGwgYmFja2VuZCBub3x5ZXN8bW9kIG5vCisjIGNvbmZpZ3VyZTogV0FSTklORzogVXNlIG9mIC0td2l0aG91dC10aHJlYWRzIGlzIHJlY29tbWVuZGVkIHdpdGggYmFjay1zaGVsbAorUEFDS0FHRUNPTkZJR1tzaGVsbF0gPSAiLS1lbmFibGUtc2hlbGw9bW9kIC0td2l0aG91dC10aHJlYWRzLC0tZW5hYmxlLXNoZWxsPW5vLCIKKworIy0tZW5hYmxlLXNvY2sgICAgICAgICBlbmFibGUgc29jayBiYWNrZW5kIG5vfHllc3xtb2QgW25vXQorUEFDS0FHRUNPTkZJR1tzb2NrXSA9ICItLWVuYWJsZS1zb2NrPW1vZCwtLWVuYWJsZS1zb2NrPW5vLCIKKworIy0tZW5hYmxlLXNxbCAgICAgICAgICBlbmFibGUgc3FsIGJhY2tlbmQgbm98eWVzfG1vZCBubworIyBzcWwgcmVxdWlyZXMgc29tZSBzcWwgYmFja2VuZCB3aGljaCBwcm92aWRlcyBzcWwuaCwgc3FsaXRlKiBwcm92aWRlcworIyBzcWxpdGUuaCAod2hpY2ggbWF5IGJlIGNvbXBhdGlibGUgYnV0IGhhc24ndCBiZWVuIHRyaWVkLikKK1BBQ0tBR0VDT05GSUdbc3FsXSA9ICItLWVuYWJsZS1zcWw9bW9kLC0tZW5hYmxlLXNxbD1ubyxzcWxpdGUzIgorCisjLS1lbmFibGUtZHluZ3JvdXAgICAgIER5bmFtaWMgR3JvdXAgb3ZlcmxheSBub3x5ZXN8bW9kIG5vCisjICBUaGlzIGlzIGEgZGVtbywgUHJveHkgQ2FjaGUgZGVmaW5lcyBpbml0X21vZHVsZSB3aGljaCBjb25mbGljdHMgd2l0aCB0aGUKKyMgIHNhbWUgc3ltYm9sIGluIGR5bmdyb3VwCitQQUNLQUdFQ09ORklHW2R5bmdyb3VwXSA9ICItLWVuYWJsZS1keW5ncm91cD1tb2QsLS1lbmFibGUtZHluZ3JvdXA9bm8sIgorCisjLS1lbmFibGUtcHJveHljYWNoZSAgIFByb3h5IENhY2hlIG92ZXJsYXkgbm98eWVzfG1vZCBubworUEFDS0FHRUNPTkZJR1twcm94eWNhY2hlXSA9ICItLWVuYWJsZS1wcm94eWNhY2hlPW1vZCwtLWVuYWJsZS1wcm94eWNhY2hlPW5vLCIKK0ZJTEVTXyR7UE59LW92ZXJsYXktcHJveHljYWNoZSA9ICIke21kfS9wY2FjaGUtKi5zby4qIgorUEFDS0FHRVMgKz0gIiR7UE59LW92ZXJsYXktcHJveHljYWNoZSIKKworIyBBcHBlbmQgVVJBTkRPTV9ERVZJQ0U9Jy9kZXYvdXJhbmRvbScgdG8gQ1BQRkxBR1M6CisjIFRoaXMgYWxsb3dzIHRscyB0byBvYnRhaW4gcmFuZG9tIGJpdHMgZnJvbSAvZGV2L3VyYW5kb20sIGJ5IGRlZmF1bHQKKyMgaXQgd2FzIGRpc2FibGVkIGZvciBjcm9zcy1jb21waWxpbmcuCitDUFBGTEFHU19hcHBlbmQgPSAiIC1EX0dOVV9TT1VSQ0UgLURVUkFORE9NX0RFVklDRT1cJy9kZXYvdXJhbmRvbVwnIC1mUElDIgorCitMREZMQUdTX2FwcGVuZCA9ICIgLXB0aHJlYWQiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICBjcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2xpYnRvb2wvYnVpbGQtYXV4L2x0bWFpbi5zaCAke1N9L2J1aWxkCisgICAgcm0gLWYgJHtTfS9saWJ0b29sCisgICAgYWNsb2NhbAorICAgIGxpYnRvb2xpemUgLS1mb3JjZSAtLWNvcHkKKyAgICBnbnUtY29uZmlnaXplCisgICAgYXV0b2NvbmYKKyAgICBvZV9ydW5jb25mCit9CisKK0xFQURfU09OQU1FID0gImxpYmxkYXAtJHtMREFQX1ZFUn0uc28uKiIKKworIyBUaGUgZXhlY3V0YWJsZXMgZ28gaW4gYSBzZXBhcmF0ZSBwYWNrYWdlLiAgVGhpcyBhbGxvd3MgdGhlCisjIGluc3RhbGxhdGlvbiBvZiB0aGUgbGlicmFyaWVzIHdpdGggbm8gZGFlbW9uIHN1cHBvcnQuCisjIEVhY2ggbW9kdWxlIGFsc28gaGFzIGl0cyBvd24gcGFja2FnZSAtIHNlZSBhYm92ZS4KK1BBQ0tBR0VTICs9ICIke1BOfS1zbGFwZCAke1BOfS1zbHVycGQgJHtQTn0tYmluIgorCisjIFBhY2thZ2UgY29udGVudHMgLSBzaGlmdCBtb3N0IHN0YW5kYXJkIGNvbnRlbnRzIHRvIC1iaW4KK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9saWIqLnNvLiogJHtzeXNjb25mZGlyfS9vcGVubGRhcC9sZGFwLiogJHtsb2NhbHN0YXRlZGlyfS8ke0JQTn0vZGF0YSIKK0ZJTEVTXyR7UE59LXNsYXBkID0gIiR7c3lzY29uZmRpcn0vaW5pdC5kICR7bGliZXhlY2Rpcn0vc2xhcGQgJHtzYmluZGlyfSAke2xvY2Fsc3RhdGVkaXJ9L3J1biAke2xvY2Fsc3RhdGVkaXJ9L3ZvbGF0aWxlL3J1biBcCisgICAgJHtzeXNjb25mZGlyfS9vcGVubGRhcC9zbGFwZC4qICR7c3lzY29uZmRpcn0vb3BlbmxkYXAvc2NoZW1hIFwKKyAgICAke3N5c2NvbmZkaXJ9L29wZW5sZGFwL0RCX0NPTkZJRy5leGFtcGxlICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKiIKK0ZJTEVTXyR7UE59LXNsdXJwZCA9ICIke2xpYmV4ZWNkaXJ9L3NsdXJwZCAke2xvY2Fsc3RhdGVkaXJ9L29wZW5sZGFwLXNsdXJwICR7bG9jYWxzdGF0ZWRpcn0vcnVuICR7bG9jYWxzdGF0ZWRpcn0vdm9sYXRpbGUvcnVuIgorRklMRVNfJHtQTn0tYmluID0gIiR7YmluZGlyfSIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2luY2x1ZGVkaXJ9ICR7bGliZGlyfS9saWIqLnNvICR7bGliZGlyfS8qLmxhICR7bGliZGlyfS8qLmEgJHtsaWJleGVjZGlyfS9vcGVubGRhcC8qLmEgJHtsaWJleGVjZGlyfS9vcGVubGRhcC8qLmxhICR7bGliZXhlY2Rpcn0vb3BlbmxkYXAvKi5zbyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJleGVjZGlyfS9vcGVubGRhcC8uZGVidWciCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgY2F0ICR7V09SS0RJUn0vaW5pdHNjcmlwdCA+ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9vcGVubGRhcAorICAgIGNobW9kIDc1NSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvb3BlbmxkYXAKKyAgICAjIFRoaXMgaXMgZHVwbGljYXRlZCBpbiAvZXRjL29wZW5sZGFwIGFuZCBpcyBmb3Igc2xhcGQKKyAgICBybSAtZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9vcGVubGRhcC1kYXRhL0RCX0NPTkZJRy5leGFtcGxlCisKKyAgICAjIEluc3RhbGxpbmcgc2xhcGQgdW5kZXIgJHtzYmlufSBpcyBtb3JlIEZIUyBhbmQgTFNCIGNvbXBsaWFuY2UKKyAgICBtdiAke0R9JHtsaWJleGVjZGlyfS9zbGFwZCAke0R9LyR7c2JpbmRpcn0vc2xhcGQKKyAgICBybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsaWJleGVjZGlyfQorICAgIFNMQVBUT09MUz0ic2xhcGFkZCBzbGFwY2F0IHNsYXBkbiBzbGFwaW5kZXggc2xhcHBhc3N3ZCBzbGFwdGVzdCBzbGFwYXV0aCBzbGFwYWNsIHNsYXBzY2hlbWEiCisgICAgY2QgJHtEfS8ke3NiaW5kaXJ9LworICAgIHJtIC1mICR7U0xBUFRPT0xTfQorICAgIGZvciBpIGluICR7U0xBUFRPT0xTfTsgZG8gbG4gLXNmIHNsYXBkICRpOyBkb25lCisKKyAgICBybWRpciAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgorICAgIHJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICIke0R9JHtsb2NhbHN0YXRlZGlyfSIKKworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc2xhcGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KKyAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCisKKyAgICAjIFVzZXMgbWRtIGFzIHRoZSBkYXRhYmFzZQorICAgICMgIGFuZCBsb2NhbHN0YXRlZGlyIGFzIGRhdGEgZGlyZWN0b3J5IC4uLgorICAgIHNlZCAtZSAncy8jIG1vZHVsZXBhdGgvbW9kdWxlcGF0aC8nIFwKKyAgICAgICAgLWUgJ3MvIyBtb2R1bGVsb2FkXHMqYmFja19iZGIuKi9tb2R1bGVsb2FkICAgIGJhY2tfbWRiLycgXAorICAgICAgICAtZSAncy9kYXRhYmFzZVxzKmJkYi9kYXRhYmFzZSAgICAgICAgbWRiLycgXAorICAgICAgICAtZSAncyVeZGlyZWN0b3J5XHMqLiolZGlyZWN0b3J5ICAgJHtsb2NhbHN0YXRlZGlyfS8ke0JQTn0vZGF0YS8lJyBcCisgICAgICAgIC1pICR7RH0ke3N5c2NvbmZkaXJ9L29wZW5sZGFwL3NsYXBkLmNvbmYKKworICAgIG1rZGlyIC1wICR7RH0ke2xvY2Fsc3RhdGVkaXJ9LyR7QlBOfS9kYXRhCisKKworfQorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gIiR7UE59LXNsYXBkIgorSU5JVFNDUklQVF9OQU1FXyR7UE59LXNsYXBkID0gIm9wZW5sZGFwIgorSU5JVFNDUklQVF9QQVJBTVNfJHtQTn0tc2xhcGQgPSAiZGVmYXVsdHMiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tc2xhcGQgPSAiaG9zdGFwZC5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRV8ke1BOfS1zbGFwZCA/PSAiZGlzYWJsZSIKKworCitQQUNLQUdFU19EWU5BTUlDICs9ICJeJHtQTn0tYmFja2VuZHMuKiBeJHtQTn0tYmFja2VuZC0uKiIKKworIyBUaGUgbW9kdWxlcyByZXF1aXJlIHRoZWlyIC5zbyB0byBiZSBkeW5hbWljYWx5IGxvYWRlZAorSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1kbnNzcnYgICs9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLWxkYXAgICAgKz0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtbWV0YSAgICArPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1tZGIgICAgICs9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLW1vbml0b3IgKz0gImRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LWJhY2tlbmQtbnVsbCAgICArPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tYmFja2VuZC1wYXNzd2QgICs9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke1BOfS1iYWNrZW5kLXNoZWxsICAgKz0gImRldi1zbyIKKworCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgYmFja2VuZF9kaXIgICAgPSBkLmV4cGFuZCgnJHtsaWJleGVjZGlyfS9vcGVubGRhcCcpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgYmFja2VuZF9kaXIsICdiYWNrXyhbYS16XSopXC5zbyQnLCAnb3BlbmxkYXAtYmFja2VuZC0lcycsICdPcGVuTERBUCAlcyBiYWNrZW5kJywgcHJlcGVuZD1UcnVlLCBleHRyYV9kZXBlbmRzPScnLCBhbGxvd19saW5rcz1UcnVlKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGJhY2tlbmRfZGlyLCAnYmFja18oW2Etel0qKVwtLipcLnNvXC4uKiQnLCAnb3BlbmxkYXAtYmFja2VuZC0lcycsICdPcGVuTERBUCAlcyBiYWNrZW5kJywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKKworICAgIG1ldGFwa2cgPSAiJHtQTn0tYmFja2VuZHMiCisgICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXycgKyBtZXRhcGtnLCAiMSIpCisgICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBtZXRhcGtnLCAiIikKKyAgICBtZXRhcGtnX3JkZXBlbmRzID0gW10KKyAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKKyAgICBmb3IgcGtnIGluIHBhY2thZ2VzWzE6XToKKyAgICAgICAgaWYgcGtnLmNvdW50KCJvcGVubGRhcC1iYWNrZW5kLSIpIGFuZCBub3QgcGtnIGluIG1ldGFwa2dfcmRlcGVuZHMgYW5kIG5vdCBwa2cuY291bnQoIi1kZXYiKSBhbmQgbm90IHBrZy5jb3VudCgiLWRiZyIpIGFuZCBub3QgcGtnLmNvdW50KCJzdGF0aWMiKSBhbmQgbm90IHBrZy5jb3VudCgibG9jYWxlIik6CisgICAgICAgICAgICBtZXRhcGtnX3JkZXBlbmRzLmFwcGVuZChwa2cpCisgICAgZC5zZXRWYXIoJ1JERVBFTkRTXycgKyBtZXRhcGtnLCAnICcuam9pbihtZXRhcGtnX3JkZXBlbmRzKSkKKyAgICBkLnNldFZhcignREVTQ1JJUFRJT05fJyArIG1ldGFwa2csICdPcGVuTERBUCBiYWNrZW5kcyBtZXRhIHBhY2thZ2UnKQorICAgIHBhY2thZ2VzLmFwcGVuZChtZXRhcGtnKQorICAgIGQuc2V0VmFyKCdQQUNLQUdFUycsICcgJy5qb2luKHBhY2thZ2VzKSkKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wY3NjLWxpdGUvcGNzYy1saXRlLzAwMDEtcGNzYy1zcHktdXNlLXB5dGhvbjMtb25seS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bjc2MtbGl0ZS9wY3NjLWxpdGUvMDAwMS1wY3NjLXNweS11c2UtcHl0aG9uMy1vbmx5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlN2IwYWQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wY3NjLWxpdGUvcGNzYy1saXRlLzAwMDEtcGNzYy1zcHktdXNlLXB5dGhvbjMtb25seS5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDc1ZGQ5ODg3Njk1MWQ4Njg5MGNlYjMwYmU1MjFkZTU3ZmQzMWUzYzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZXkgWmhpemhpa2luIDxhbmRyZXkuekBnbWFpbC5jb20+CitEYXRlOiBNb24sIDI3IEphbiAyMDIwIDEzOjI3OjEyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHBjc2Mtc3B5OiB1c2UgcHl0aG9uMyBvbmx5CisKK1B5dGhvbjIgaGFzIGJlZW4gRU9MIGFuZCBtb3N0IGRpc3RyaWJ1dGlvbnMgd291bGQgbm90IHByb3ZpZGUgYW55CitzdXBwb3J0IGZvciBpdCBhbnltb3JlLiBTaW5jZSBQeXRob24zIGlzIGF2YWlsYWJsZSBpbiBhbGwgZGlzdHJpYnV0aW9ucworbm93LCBzd2l0Y2ggcGNzYy1zcHkgdG8gdXNlIGl0IGV4Y2x1c2l2ZWx5LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQW5kcmV5IFpoaXpoaWtpbiA8YW5kcmV5LnpAZ21haWwuY29tPgorLS0tCisgc3JjL3NweS9wY3NjLXNweSB8IDkgKystLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9zcHkvcGNzYy1zcHkgYi9zcmMvc3B5L3Bjc2Mtc3B5CitpbmRleCA4NTIyMmM2Li45NjUxMzhlIDEwMDc1NQorLS0tIGEvc3JjL3NweS9wY3NjLXNweQorKysrIGIvc3JjL3NweS9wY3NjLXNweQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIAorICIiIgorICMgICAgRGlzcGxheSBQQy9TQyBmdW5jdGlvbnMgYXJndW1lbnRzCitAQCAtMjIsMTIgKzIyLDcgQEAgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgorIGltcG9ydCBvcworIGltcG9ydCBzaWduYWwKKyBpbXBvcnQgdGltZQorLXRyeToKKy0gICAgIyBmb3IgUHl0aG9uMworLSAgICBmcm9tIHF1ZXVlIGltcG9ydCBRdWV1ZQorLWV4Y2VwdCBJbXBvcnRFcnJvcjoKKy0gICAgIyBmb3IgUHl0aG9uMgorLSAgICBmcm9tIFF1ZXVlIGltcG9ydCBRdWV1ZQorK2Zyb20gcXVldWUgaW1wb3J0IFF1ZXVlCisgZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFRocmVhZAorIGZyb20gb3BlcmF0b3IgaW1wb3J0IGF0dHJnZXR0ZXIKKyAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Bjc2MtbGl0ZS9wY3NjLWxpdGVfMS44LjI2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGNzYy1saXRlL3Bjc2MtbGl0ZV8xLjguMjYuYmIKaW5kZXggNWU2MDg0Ni4uOTFkNzdhYyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGNzYy1saXRlL3Bjc2MtbGl0ZV8xLjguMjYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcGNzYy1saXRlL3Bjc2MtbGl0ZV8xLjguMjYuYmIKQEAgLTEwLDExICsxMCwxNCBAQAogTElDRU5TRV8ke1BOfS1zcHktZGV2ID0gIkdQTHYzKyIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTYyOGMwMWJhOTg1ZWNmYTIxNjc3ZjVlZTJkNTIwMmY2IgogCi1TUkNfVVJJID0gImh0dHBzOi8vcGNzY2xpdGUuYXBkdS5mci9maWxlcy8ke0JQfS50YXIuYnoyIgorU1JDX1VSSSA9ICJcCisJaHR0cHM6Ly9wY3NjbGl0ZS5hcGR1LmZyL2ZpbGVzLyR7QlB9LnRhci5iejIgXAorCWZpbGU6Ly8wMDAxLXBjc2Mtc3B5LXVzZS1weXRob24zLW9ubHkucGF0Y2ggXAorIgogU1JDX1VSSVttZDVzdW1dID0gIjlkMzY4ODI5OTg0NDlkYWNlZWMyNjdjNjhhMjFmZjBkIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNlYjdiZTdkNmVmNjE4YzBhNDQ0MzE2Y2Y1YzFmMmY5ZDcyMjdhZWRiYTdhMTkyZjM4OWZlM2U3YzBkZmJiZDkiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHN5c3RlbWQgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scyBzeXN0ZW1kIHBrZ2NvbmZpZyBwZXJsbmF0aXZlCiAKIEVYVFJBX09FQ09ORiA9ICIgXAogICAgIC0tZGlzYWJsZS1saWJ1c2IgXApAQCAtNTAsNiArNTMsNiBAQAogUlJFUExBQ0VTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgogUkNPTkZMSUNUU18ke1BOfSArPSAiJHtQTn0tc3lzdGVtZCIKIFNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJwY3NjZC5zb2NrZXQiCi1SREVQRU5EU18ke1BOfS1zcHkgKz0icHl0aG9uIgorUkRFUEVORFNfJHtQTn0tc3B5ICs9InB5dGhvbjMiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9jby9wb2NvXzEuOS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9jby9wb2NvXzEuOS40LmJiCmluZGV4IGYxZGFiY2QwLi5mY2Q1MjE5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb2NvL3BvY29fMS45LjQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9jby9wb2NvXzEuOS40LmJiCkBAIC0xNiw2ICsxNiw4IEBACiAgICAiCiBTUkNSRVYgPSAiYjk1MzkzZGNjMzY0MDgwNzgzOGU4MzIzYjRlNjAwZTU0ZDJlODExNiIKIAorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAicG9jby0oP1A8cHZlcj5cZCsoXC5cZCspKykiCisKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIGluaGVyaXQgY21ha2UgcHRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlcl8wLjg0LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXJfMC44NC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTUzODY4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3BvcHBsZXIvcG9wcGxlcl8wLjg0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1TVU1NQVJZID0gIlBvcHBsZXIgaXMgYSBQREYgcmVuZGVyaW5nIGxpYnJhcnkgYmFzZWQgb24gdGhlIHhwZGYtMy4wIGNvZGUgYmFzZSIKLUhPTUVQQUdFID0gImh0dHBzOi8vcG9wcGxlci5mcmVlZGVza3RvcC5vcmcvIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9wb3BwbGVyLmZyZWVkZXNrdG9wLm9yZy8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3Qtb3ZlcndyaXRlLWFsbC1vdXItYnVpbGQtZmxhZ3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYmFzZW5hbWUtaW5jbHVkZS5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlMTRhOGFjYTg4MDk5MDhhZDQzNjRjMzJjMTdiY2I5MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjN2ExMzBkYTc0M2IzOGE1NDhmN2EyMWZlNTk0MDUwNmZiMTk0OWY0ZWJkZDMyMDlmMGU1YjMwMmZhMTM5NzMxIgotCi1ERVBFTkRTID0gImZvbnRjb25maWcgemxpYiBjYWlybyBsY21zIGdsaWItMi4wIgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotUEFDS0FHRUNPTkZJRyA/Pz0gImpwZWcgb3BlbmpwZWcgcG5nIHRpZmYgbnNzICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCQkZJTEVfQ09MTEVDVElPTlMnLCAncXQ1LWxheWVyJywgJ3F0NScsICcnLCBkKX0iCi1QQUNLQUdFQ09ORklHW2pwZWddID0gIi1EV0lUSF9KUEVHPU9OIC1ERU5BQkxFX0RDVERFQ09ERVI9bGlianBlZywtRFdJVEhfSlBFRz1PRkYgLURFTkFCTEVfRENUREVDT0RFUj1ub25lLGpwZWciCi1QQUNLQUdFQ09ORklHW3BuZ10gPSAiLURXSVRIX1BORz1PTiwtRFdJVEhfUE5HPU9GRixsaWJwbmciCi1QQUNLQUdFQ09ORklHW3RpZmZdID0gIi1EV0lUSF9USUZGPU9OLC1EV0lUSF9USUZGPU9GRix0aWZmIgotUEFDS0FHRUNPTkZJR1tjdXJsXSA9ICItREVOQUJMRV9MSUJDVVJMPU9OLC1ERU5BQkxFX0xJQkNVUkw9T0ZGLGN1cmwiCi1QQUNLQUdFQ09ORklHW29wZW5qcGVnXSA9ICItREVOQUJMRV9MSUJPUEVOSlBFRz1vcGVuanBlZzIsLURFTkFCTEVfTElCT1BFTkpQRUc9bm9uZSxvcGVuanBlZyIKLVBBQ0tBR0VDT05GSUdbcXQ1XSA9ICItREVOQUJMRV9RVDU9T04sLURFTkFCTEVfUVQ1PU9GRixxdGJhc2UgcXR0b29scy1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW25zc10gPSAiLURXSVRIX05TUzM9T04sLURXSVRIX05TUzM9T0ZGLG5zcyIKLQotIyBzdXJwcmlzZSAtIGRpZCBub3QgZXhwZWN0IHRoaXMgdG8gd29yayA6KQotaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdxdDUnLCAnY21ha2VfcXQ1JywgJycsIGQpfQotCi1TRUNVUklUWV9DRkxBR1MgPSAiJHtTRUNVUklUWV9OT19QSUVfQ0ZMQUdTfSIKLQotRVhUUkFfT0VDTUFLRSArPSAiIFwKLSAgICAtREVOQUJMRV9DTVM9bGNtczIgXAotICAgIC1ERU5BQkxFX1VOU1RBQkxFX0FQSV9BQklfSEVBREVSUz1PTiBcCi0gICAgLURCVUlMRF9HVEtfVEVTVFM9T0ZGIFwKLSAgICAtREVOQUJMRV9aTElCPU9OIFwKLSAgICAtRENNQUtFX0NYWF9JTVBMSUNJVF9JTkNMVURFX0RJUkVDVE9SSUVTOlBBVEg9JyR7U1RBR0lOR19JTkNESVJ9JyBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy1ERU5BQkxFX0dPQkpFQ1RfSU5UUk9TUEVDVElPTj1PTicsICctREVOQUJMRV9HT0JKRUNUX0lOVFJPU1BFQ1RJT049T0ZGJywgZCl9IFwKLSIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLSAgICAjIHBvcHBsZXIgbWFjcm8gdXNlcyBwa2ctY29uZmlnIHRvIGNoZWNrIGZvciBnLWlyIHJ1bnRpbWVzLiBTb21ldGhpbmcKLSAgICAjIG1ha2VzIHRoZW0gcG9pbnQgdG8gL3Vzci9iaW4uIEFsaWduIHRoZW0gdG8gc3lzcm9vdCAtIHRoYXQncyB3aGVyZSB0aGUKLSAgICAjIGdpci13cmFwcGVycyBhcmU6Ci0gICAgc2VkIC1pICdzOiAke2JpbmRpcn0vZy1pcjogJHtTVEFHSU5HX0JJTkRJUn0vZy1pcjonICR7Qn0vYnVpbGQubmluamEKLX0KLQotUEFDS0FHRVMgPSsgImxpYnBvcHBsZXIgbGlicG9wcGxlci1nbGliIgotRklMRVNfbGlicG9wcGxlciA9ICIke2xpYmRpcn0vbGlicG9wcGxlci5zby4qIgotRklMRVNfbGlicG9wcGxlci1nbGliID0gIiR7bGliZGlyfS9saWJwb3BwbGVyLWdsaWIuc28uKiIKLQotUkRFUEVORFNfbGlicG9wcGxlciA9ICJwb3BwbGVyLWRhdGEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9wb3BwbGVyL3BvcHBsZXJfMC44Ni4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyXzAuODYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNjA2N2U2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcG9wcGxlci9wb3BwbGVyXzAuODYuMS5iYgpAQCAtMCwwICsxLDUyIEBACitTVU1NQVJZID0gIlBvcHBsZXIgaXMgYSBQREYgcmVuZGVyaW5nIGxpYnJhcnkgYmFzZWQgb24gdGhlIHhwZGYtMy4wIGNvZGUgYmFzZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vcG9wcGxlci5mcmVlZGVza3RvcC5vcmcvIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitTUkNfVVJJID0gImh0dHA6Ly9wb3BwbGVyLmZyZWVkZXNrdG9wLm9yZy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3Qtb3ZlcndyaXRlLWFsbC1vdXItYnVpbGQtZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYmFzZW5hbWUtaW5jbHVkZS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyYTYzODczOWYyOWU4MmEwYTU3YjYzM2VhMzljODdmMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZjYzMGEyNzdjOGUxOTRjMzEzMzljNTQ0NjI0MTgzNGFlZDZlZDNkNGI0ZGM3MDgwMzExZTUxYzY2MjU3ZjZjIgorCitERVBFTkRTID0gImZvbnRjb25maWcgemxpYiBjYWlybyBsY21zIGdsaWItMi4wIgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworUEFDS0FHRUNPTkZJRyA/Pz0gImpwZWcgb3BlbmpwZWcgcG5nIHRpZmYgbnNzIHNwbGFzaCIKK1BBQ0tBR0VDT05GSUdbanBlZ10gPSAiLURXSVRIX0pQRUc9T04gLURFTkFCTEVfRENUREVDT0RFUj1saWJqcGVnLC1EV0lUSF9KUEVHPU9GRiAtREVOQUJMRV9EQ1RERUNPREVSPW5vbmUsanBlZyIKK1BBQ0tBR0VDT05GSUdbcG5nXSA9ICItRFdJVEhfUE5HPU9OLC1EV0lUSF9QTkc9T0ZGLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLURXSVRIX1RJRkY9T04sLURXSVRIX1RJRkY9T0ZGLHRpZmYiCitQQUNLQUdFQ09ORklHW2N1cmxdID0gIi1ERU5BQkxFX0xJQkNVUkw9T04sLURFTkFCTEVfTElCQ1VSTD1PRkYsY3VybCIKK1BBQ0tBR0VDT05GSUdbb3BlbmpwZWddID0gIi1ERU5BQkxFX0xJQk9QRU5KUEVHPW9wZW5qcGVnMiwtREVOQUJMRV9MSUJPUEVOSlBFRz1ub25lLG9wZW5qcGVnIgorUEFDS0FHRUNPTkZJR1txdDVdID0gIi1ERU5BQkxFX1FUNT1PTiwtREVOQUJMRV9RVDU9T0ZGLHF0YmFzZSBxdHRvb2xzLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbbnNzXSA9ICItRFdJVEhfTlNTMz1PTiwtRFdJVEhfTlNTMz1PRkYsbnNzIgorUEFDS0FHRUNPTkZJR1tzcGxhc2hdID0gIi1ERU5BQkxFX1NQTEFTSD1PTiwtREVOQUJMRV9TUExBU0g9T0ZGLGJvb3N0IgorCisjIHN1cnByaXNlIC0gZGlkIG5vdCBleHBlY3QgdGhpcyB0byB3b3JrIDopCitpbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3F0NScsICdjbWFrZV9xdDUnLCAnJywgZCl9CisKK1NFQ1VSSVRZX0NGTEFHUyA9ICIke1NFQ1VSSVRZX05PX1BJRV9DRkxBR1N9IgorCitFWFRSQV9PRUNNQUtFICs9ICIgXAorICAgIC1ERU5BQkxFX0NNUz1sY21zMiBcCisgICAgLURFTkFCTEVfVU5TVEFCTEVfQVBJX0FCSV9IRUFERVJTPU9OIFwKKyAgICAtREJVSUxEX0dUS19URVNUUz1PRkYgXAorICAgIC1ERU5BQkxFX1pMSUI9T04gXAorICAgIC1EQ01BS0VfQ1hYX0lNUExJQ0lUX0lOQ0xVREVfRElSRUNUT1JJRVM6UEFUSD0nJHtTVEFHSU5HX0lOQ0RJUn0nIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfR09CSkVDVF9JTlRST1NQRUNUSU9OPU9OJywgJy1ERU5BQkxFX0dPQkpFQ1RfSU5UUk9TUEVDVElPTj1PRkYnLCBkKX0gXAorIgorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworICAgICMgcG9wcGxlciBtYWNybyB1c2VzIHBrZy1jb25maWcgdG8gY2hlY2sgZm9yIGctaXIgcnVudGltZXMuIFNvbWV0aGluZworICAgICMgbWFrZXMgdGhlbSBwb2ludCB0byAvdXNyL2Jpbi4gQWxpZ24gdGhlbSB0byBzeXNyb290IC0gdGhhdCdzIHdoZXJlIHRoZQorICAgICMgZ2lyLXdyYXBwZXJzIGFyZToKKyAgICBzZWQgLWkgJ3M6ICR7YmluZGlyfS9nLWlyOiAke1NUQUdJTkdfQklORElSfS9nLWlyOicgJHtCfS9idWlsZC5uaW5qYQorfQorCitQQUNLQUdFUyA9KyAibGlicG9wcGxlciBsaWJwb3BwbGVyLWdsaWIiCitGSUxFU19saWJwb3BwbGVyID0gIiR7bGliZGlyfS9saWJwb3BwbGVyLnNvLioiCitGSUxFU19saWJwb3BwbGVyLWdsaWIgPSAiJHtsaWJkaXJ9L2xpYnBvcHBsZXItZ2xpYi5zby4qIgorCitSREVQRU5EU19saWJwb3BwbGVyID0gInBvcHBsZXItZGF0YSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3B2L3B2XzEuNi42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHYvcHZfMS42LjYuYmIKaW5kZXggOTY0OTU1NS4uMGVlZjgyYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHYvcHZfMS42LjYuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcHYvcHZfMS42LjYuYmIKQEAgLTcsNiArNyw5IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiZmYzNTY0ZmRkY2MyYjliZDRhOWMxZDE0M2FiYTRiNGMiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjA4ZWY5MzVmN2EzNzdlMTQzOWMxODFjNGZjMTg4ZDI0N2RhMTBkNTFhMTllZjc5YmNkZWU1MDQzYjA5NzNmMSIKIAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuaXZhcmNoLmNvbS9wcm9ncmFtcy9wdi5zaHRtbCIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInB2LSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIuYnoyIgorCiBpbmhlcml0IGF1dG90b29scwogCiBMREVNVUxBVElPTl9taXBzYXJjaG4zMiA9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdiaWdlbmRpYW4nLCAnZWxmMzJidHNtaXBuMzInLCAnZWxmMzJsdHNtaXBuMzInLCBkKX0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9yZW1taW5hL3JlbW1pbmFfMS4zLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9yZW1taW5hL3JlbW1pbmFfMS4zLjYuYmIKaW5kZXggMTRmYmM5NC4uNWI2NjM0OCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcmVtbWluYS9yZW1taW5hXzEuMy42LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3JlbW1pbmEvcmVtbWluYV8xLjMuNi5iYgpAQCAtMywxMCArMyw4IEBACiBTRUNUSU9OID0gIlN1cHBvcnQiCiBMSUNFTlNFID0gIkdQTHYyICYgb3BlbnNzbCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWRhYjcyMTU1MTIwNDRkNDkwMzcyNzJjZTFhYzRlYThmIGZpbGU6Ly9MSUNFTlNFLk9wZW5TU0w7bWQ1PWMxZWIzY2VlMGE0ZGVhMjc1MDNjNTMxMjY3YTY5NzY5IgotREVQRU5EUyArPSAib3BlbnNzbCBmcmVlcmRwIGd0ayszIGdkay1waXhidWYgYXRrIGxpYmdjcnlwdCBhdmFoaS11aSBsaWJzb2RpdW0gbGlic3NoIHZ0ZSBqc29uLWdsaWIgbGlic291cC0yLjQgbGlidm5jc2VydmVyIGxpYnNlY3JldCIKK0RFUEVORFMgKz0gIm9wZW5zc2wgZnJlZXJkcCBndGsrMyBnZGstcGl4YnVmIGF0ayBsaWJnY3J5cHQgYXZhaGktdWkgbGlic29kaXVtIGxpYnNzaCB2dGUganNvbi1nbGliIGxpYnNvdXAtMi40IGxpYnZuY3NlcnZlciBsaWJzZWNyZXQgbGlieGtiZmlsZSIKIAotREVQRU5EU19hcHBlbmRfeDg2ID0gIiBzcGljZSBzcGljZS1wcm90b2NvbCIKLURFUEVORFNfYXBwZW5kX3g4Ni02NCA9ICIgc3BpY2Ugc3BpY2UtcHJvdG9jb2wiCiAKIERFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbGliZXhlY2luZm8iCiBMREZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1sZXhlY2luZm8iCkBAIC0xOCwxNiArMTYsMTAgQEAKIAogUyA9ICIke1dPUktESVJ9L1JlbW1pbmEtdiR7UFZ9IgogCi1pbmhlcml0IGNtYWtlIGZlYXR1cmVzX2NoZWNrCitpbmhlcml0IGNtYWtlIGZlYXR1cmVzX2NoZWNrIG1pbWUteGRnCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgogCi0jIGRlcGVuZHMgb24gYXZhaGktdWkgd2l0aCB0aGlzIHJlc3RyaWN0aW9uCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKLQotRVhUUkFfT0VDTUFLRSArPSAiLURXSVRIX0FQUElORElDQVRPUj1PRkYgLURXSVRIX0dFVFRFWFQ9T0ZGIC1EV0lUSF9UUkFOU0xBVElPTlM9T0ZGIC1EV0lUSF9TUElDRT1PRkYiCi0KLUVYVFJBX09FQ01BS0VfYXBwZW5kX3g4NiA9ICIgLURXSVRIX1NQSUNFPU9OIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2LTY0ID0gIiAtRFdJVEhfU1BJQ0U9T04iCi0KK0VYVFJBX09FQ01BS0UgKz0gIi1EV0lUSF9BUFBJTkRJQ0FUT1I9T0ZGIC1EV0lUSF9HRVRURVhUPU9GRiAtRFdJVEhfVFJBTlNMQVRJT05TPU9GRiIKIAogZG9faW5zdGFsbF9hcHBlbmQoKXsKICAgICAjIFdlIGRvbnQgbmVlZCB0aGUgZXh0cmEgc3R1ZmYgZm9ybSBvdGhlciBkZXNrdG9wIGVudmlyb25tZW50cwpAQCAtMzYsNiArMjgsOCBAQAogICAgIHJtIC1yZiAke0R9LyR7ZGF0YWRpcn0vZ25vbWUtc2Vzc2lvbgogfQogCitQQUNLQUdFQ09ORklHW3NwaWNlXSA9ICItRFdJVEhfU1BJQ0U9T04sIC1EV0lUSF9TUElDRT1PRkYsIHNwaWNlIHNwaWNlLXByb3RvY29sIgorCiBSREVQRU5EU18ke1BOfSA9ICJiYXNoIgogCiBGSUxFU18ke1BOfV9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci8qIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvcnNuYXBzaG90L3JzbmFwc2hvdF9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9yc25hcHNob3QvcnNuYXBzaG90X2dpdC5iYgppbmRleCBhZWZlMzYyLi5lZmU5NWIxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9yc25hcHNob3QvcnNuYXBzaG90X2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9yc25hcHNob3QvcnNuYXBzaG90X2dpdC5iYgpAQCAtMjksNyArMjksNyBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGF1dG90b29scworaW5oZXJpdCBhdXRvdG9vbHMgcGVybG5hdGl2ZQogCiAjIEZpeCByc25hcHNob3QuY29uZi5kZWZhdWx0OgogIyBkb24ndCBpbmplY3QgdGhlIGhvc3QgcGF0aCBpbnRvIHRhcmdldCBjb25maWdzLgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2Ftc3VuZy1zb2MtdXRpbHMvZmlsZXMvMDAwMS1wcHQuYy1Eby1ub3QtaW5jbHVkZS1zeXMtaW8uaC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NhbXN1bmctc29jLXV0aWxzL2ZpbGVzLzAwMDEtcHB0LmMtRG8tbm90LWluY2x1ZGUtc3lzLWlvLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRlNmMyNTAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2Ftc3VuZy1zb2MtdXRpbHMvZmlsZXMvMDAwMS1wcHQuYy1Eby1ub3QtaW5jbHVkZS1zeXMtaW8uaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gZmQyNDRhZTY0ODc4OTU5MWYwZmI3OWU3NGQyYjhmNmM1YjE1ZDZlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDYgQXVnIDIwMTkgMDA6NDc6MTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gcHB0LmM6IERvIG5vdCBpbmNsdWRlIHN5cy9pby5oCi0KLW5ld2VyIHZlcnNpb25zIG9mIGdsaWJjIGhhcyByZW1vdmVkIGl0Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHBwdC5jIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3BwdC5jIGIvcHB0LmMKLWluZGV4IDBiYWUyZDAuLjBlZjI3OWYgMTAwNjQ0Ci0tLS0gYS9wcHQuYwotKysrIGIvcHB0LmMKLUBAIC01LDcgKzUsNiBAQAotICNlbHNlDQotICNpbmNsdWRlIDx1bmlzdGQuaD4NCi0gI2luY2x1ZGUgPHN0ZGxpYi5oPg0KLS0jaW5jbHVkZSA8c3lzL2lvLmg+DQotICNpbmNsdWRlIDxsaW51eC9wYXJwb3J0Lmg+DQotICNpbmNsdWRlIDxsaW51eC9wcGRldi5oPg0KLSAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+DQotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2Ftc3VuZy1zb2MtdXRpbHMvczNjMjR4eC1ncGlvX3N2bi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NhbXN1bmctc29jLXV0aWxzL3MzYzI0eHgtZ3Bpb19zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1NTc1NGQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2Ftc3VuZy1zb2MtdXRpbHMvczNjMjR4eC1ncGlvX3N2bi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiQSB1c2VyLXNwYWNlIHRvb2wgdG8gc2hvdyBhbmQgbW9kaWZ5IHRoZSBzdGF0ZSBvZiBHUElPcyBvbiB0aGUgUzNjMjR4eCBwbGF0Zm9ybSIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUFVVEhPUiA9ICJXZXJuZXIgQWxtZXNiZXJnZXIgPHdlcm5lckBvcGVubW9rby5vcmc+IgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9ncGlvLmM7ZW5kbGluZT0xMjttZDU9Y2ZiOTFjNjg2ODU3YjJlNjA4NTJiNDkyNWQ5MGEzZTEiCi1TUkNSRVYgPSAiNDk0OSIKLVBWID0gIjEuMCtzdm5yJHtTUkNQVn0iCi1QUiA9ICJyMiIKLQotU1JDX1VSSSA9ICJzdm46Ly9zdm4ub3Blbm1va28ub3JnL3RydW5rL3NyYy90YXJnZXQ7bW9kdWxlPWdwaW87cHJvdG9jb2w9aHR0cCIKLVMgPSAiJHtXT1JLRElSfS9ncGlvIgotCi1DTEVBTkJST0tFTiA9ICIxIgotCi1kb19jb21waWxlKCkgewotICAgICR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IC1vICR7UE59IGdwaW8uYwotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtQTn0gJHtEfSR7c2JpbmRpcn0KLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NhbXN1bmctc29jLXV0aWxzL3MzYzY0eHgtZ3Bpb19zdm4uYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYW1zdW5nLXNvYy11dGlscy9zM2M2NHh4LWdwaW9fc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzZhNGYxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NhbXN1bmctc29jLXV0aWxzL3MzYzY0eHgtZ3Bpb19zdm4uYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkEgdXNlci1zcGFjZSB0b29sIHRvIHNob3cgYW5kIG1vZGlmeSB0aGUgc3RhdGUgb2YgR1BJT3Mgb24gdGhlIFMzYzY0eHggcGxhdGZvcm0iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1BVVRIT1IgPSAiV2VybmVyIEFsbWVzYmVyZ2VyIDx3ZXJuZXJAb3Blbm1va28ub3JnPiIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZ3Bpby1zM2M2NDEwLmM7ZW5kbGluZT0xMjttZDU9MDYwY2RhMWJlOTQ1YWQ5MTk0NTkzZjExZDU2ZDU1YzciCi1TUkNSRVYgPSAiNDk0OSIKLVBWID0gIjEuMCtzdm5yJHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAic3ZuOi8vc3ZuLm9wZW5tb2tvLm9yZy90cnVuay9zcmMvdGFyZ2V0O21vZHVsZT1ncGlvO3Byb3RvY29sPWh0dHAiCi1TID0gIiR7V09SS0RJUn0vZ3BpbyIKLQotQ0xFQU5CUk9LRU4gPSAiMSIKLQotZG9fY29tcGlsZSgpIHsKLSAgICAke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSAtbyAke1BOfSBncGlvLXMzYzY0MTAuYwotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7c2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtQTn0gJHtEfSR7c2JpbmRpcn0KLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NhbXN1bmctc29jLXV0aWxzL3NqZjI0MTAtbGludXgtbmF0aXZlX3N2bi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NhbXN1bmctc29jLXV0aWxzL3NqZjI0MTAtbGludXgtbmF0aXZlX3N2bi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2E1MTcyZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYW1zdW5nLXNvYy11dGlscy9zamYyNDEwLWxpbnV4LW5hdGl2ZV9zdm4uYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1TVU1NQVJZID0gIkpUQUcgdXRpbGl0eSB0byBpbnRlcmZhY2Ugdy8gYSBTM0MyNDEwIGRldmljZSIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1BVVRIT1IgPSAiSGFyYWxkIFdlbHRlIDxsYWZvcmdlQG9wZW5tb2tvLm9yZz4iCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BhcnBvcnQuYztlbmRsaW5lPTE5O21kNT1iNTY4MTA5MWIwZmQ4YzVmNzA2ODgzNWM0NDFiZjBjOCIKLVNSQ1JFViA9ICI0MjY4IgotUFYgPSAiMC4xK3N2bnIke1NSQ1BWfSIKLVBSID0gInIxIgotCi1TUkNfVVJJID0gInN2bjovL3N2bi5vcGVubW9rby5vcmcvdHJ1bmsvc3JjL2hvc3QvO21vZHVsZT1zamYyNDEwLWxpbnV4O3Byb3RvY29sPWh0dHAgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1wcHQuYy1Eby1ub3QtaW5jbHVkZS1zeXMtaW8uaC5wYXRjaCBcCi0gICAgICAgICAgIgotUyA9ICIke1dPUktESVJ9L3NqZjI0MTAtbGludXgiCi0KLWluaGVyaXQgbmF0aXZlIGRlcGxveQotCi1DRkxBR1MgKz0gIi1ETElOVVhfUFBERVYiCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgb2VfcnVubWFrZQotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS8ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgc2pmMjQxMCAke0R9LyR7YmluZGlyfQotfQotCi1kb19kZXBsb3koKSB7Ci0gICAgaW5zdGFsbCAtbSAwNzU1IHNqZjI0MTAgJHtERVBMT1lESVJ9L3NqZjI0MTAtJHtQVn0KLX0KLQotYWRkdGFzayBkZXBsb3kgYmVmb3JlIGRvX2J1aWxkIGFmdGVyIGRvX2luc3RhbGwKLQotZG9fZGVwbG95W3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke0RFUExPWV9ESVJfVE9PTFN9IgotIyBjbGVhbmRpcnMgc2hvdWxkIHBvc3NpYmx5IGJlIGluIGRlcGxveS5iYmNsYXNzIGJ1dCB3ZSBuZWVkIGl0Ci1kb19kZXBsb3lbY2xlYW5kaXJzXSA9ICIke0RFUExPWURJUn0iCi0jIGNsZWFyIHN0YW1wLWV4dHJhLWluZm8gc2luY2UgTUFDSElORV9BUkNIIGlzIG5vcm1hbGx5IHB1dCB0aGVyZSBieQotIyBkZXBsb3kuYmJjbGFzcwotZG9fZGVwbG95W3N0YW1wLWV4dHJhLWluZm9dID0gIiIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2Fzcy9zYXNzY19naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYXNzL3Nhc3NjX2dpdC5iYgppbmRleCAwNDRjMGM3Li4zYzdhNTVjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYXNzL3Nhc3NjX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zYXNzL3Nhc3NjX2dpdC5iYgpAQCAtNyw4ICs3LDggQEAKIGluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc2Fzcy9zYXNzYy5naXQiCi1TUkNSRVYgPSAiYWE2ZDVjNjM1ZWE4ZmFmNDRkNTQyYTIzYWFmODVkMjdlNTc3N2Q0OCIKK1NSQ1JFViA9ICI0Njc0ODIxNmJhMGI2MDU0NWU4MTRjMDc4NDZjYTEwYzlmZWZjNWI2IgogUyA9ICIke1dPUktESVJ9L2dpdCIKLVBWID0gIjMuNS4wIgorUFYgPSAiMy42LjEiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2RwYXJtL2ZpbGVzL21ha2Utc3lzcm9vdC13b3JrLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2RwYXJtL2ZpbGVzL21ha2Utc3lzcm9vdC13b3JrLnBhdGNoCmluZGV4IDNmZDg1ZDkuLmY1ODA5MWEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NkcGFybS9maWxlcy9tYWtlLXN5c3Jvb3Qtd29yay5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZHBhcm0vZmlsZXMvbWFrZS1zeXNyb290LXdvcmsucGF0Y2gKQEAgLTE3LDEzICsxNywxMyBAQAogaW5kZXggNjFkZDlmOC4uNDJjOTExZiAxMDA2NDQKIC0tLSBhL3NyYy9NYWtlZmlsZS5hbQogKysrIGIvc3JjL01ha2VmaWxlLmFtCi1AQCAtNDEsNyArNDEsNyBAQCBzZ2xpYl9TT1VSQ0VTID0JCS4uL2xpYi9zZ19saWIuYyBcCitAQCAtNTMsNyArNTMsNyBAQCBzZ2xpYl9TT1VSQ0VTID0JCS4uL2xpYi9zZ19saWIuYyBcCiAgCQkJLi4vbGliL3NnX3B0X2NvbW1vbi5jCiAgCiAgaWYgSEFWRV9TR1VUSUxTCiAtSU5DTFVERVMgPSAtSS9zY3NpCiArSU5DTFVERVMgPSAtST1AaW5jbHVkZWRpckAvc2NzaQotIHNkcGFybV9MREFERCA9IEBHRVRPUFRfT19GSUxFU0AgQG9zX2xpYnNAIEBTR1VUSUxTX0xJQlNACisgc2RwYXJtX0xEQUREID0gQEdFVE9QVF9PX0ZJTEVTQCBAU0dVVElMU19MSUJTQAogIHNkcGFybV9ERVBFTkRFTkNJRVMgPSBAR0VUT1BUX09fRklMRVNACiAgZWxzZQogLS0gCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZHBhcm0vc2RwYXJtXzEuMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZHBhcm0vc2RwYXJtXzEuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMwOWI0OTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2RwYXJtL3NkcGFybV8xLjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJmZXRjaCBhbmQgY2hhbmdlIFNDU0kgbW9kZSBwYWdlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBzZHBhcm0gdXRpbGl0eSBhY2Nlc3NlcyBhbmQgb3B0aW9uYWxseSBtb2RpZmllcyBcCi1TQ1NJIGRldmljZXMnIG1vZGUgcGFnZSBhbmQgaW5xdWlyeSBkYXRhLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zZy5kYW5ueS5jei9zZy9zZHBhcm0uaHRtbCIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWNhYjZjMzZiN2JhODJjNjc1NTgxZGQwYWZkZTM2ZjcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL0JTRF9MSUNFTlNFO21kNT0xZDUyZjRhNjZmMWUwZWQ5Njc3NmJmMzU0YWI3YTJlZCIKLURFUEVORFM9InNnMy11dGlscyIKLVNSQ19VUkkgPSAiaHR0cDovL3NnLmRhbm55LmN6L3NnL3AvJHtCUE59LSR7UFZ9LnRneiBcCi0gICAgICAgICAgIGZpbGU6Ly9tYWtlLXN5c3Jvb3Qtd29yay5wYXRjaCBcCi0gICAgICAgICAgICIKLU1JUlJPUlMgKz0gImh0dHA6Ly9zZy5kYW5ueS5jei9zZy9wIGh0dHBzOi8vZm9zc2llcy5vcmcvbGludXgvbWlzYyIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAic2RwYXJtLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGd6IgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tc2NyaXB0cyIKLVJERVBFTkRTXyR7UE59LXNjcmlwdHMgKz0gImJhc2ggJHtQTn0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiZGFlNjQzNzUzNzZjZThmZTRiZjk1MjFjMWRiODU4ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZWExZWQxYmIxZWUyYWVmNjIzOTI2MThmYTQyZGE5ZWQwMjdkNWU2NTVmMTc0NTI1YzM5MjM1Nzc4MjkyYWIzIgotCi1pbmhlcml0IGF1dG90b29scwotCi0jIFB1dCB0aGUgYmFzaCBzY3JpcHRzIHRvICR7UE59LXNjcmlwdHMKLUZJTEVTXyR7UE59LXNjcmlwdHMgPSAiJHtiaW5kaXJ9L3Nhc19kaXNrX2JsaW5rICR7YmluZGlyfS9zY3NpX2NoX3N3cCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NkcGFybS9zZHBhcm1fMS4xMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NkcGFybS9zZHBhcm1fMS4xMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZmM4N2RiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2RwYXJtL3NkcGFybV8xLjExLmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiZmV0Y2ggYW5kIGNoYW5nZSBTQ1NJIG1vZGUgcGFnZXMiCitERVNDUklQVElPTiA9ICJUaGUgc2RwYXJtIHV0aWxpdHkgYWNjZXNzZXMgYW5kIG9wdGlvbmFsbHkgbW9kaWZpZXMgXAorU0NTSSBkZXZpY2VzJyBtb2RlIHBhZ2UgYW5kIGlucXVpcnkgZGF0YS4iCitIT01FUEFHRSA9ICJodHRwOi8vc2cuZGFubnkuY3ovc2cvc2RwYXJtLmh0bWwiCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVjYWI2YzM2YjdiYTgyYzY3NTU4MWRkMGFmZGUzNmY3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9CU0RfTElDRU5TRTttZDU9MTJjZGUxN2EwNGMzMGRlY2UyNzUyZjM2YjcxOTJjNjQiCitERVBFTkRTPSJzZzMtdXRpbHMiCitTUkNfVVJJID0gImh0dHA6Ly9zZy5kYW5ueS5jei9zZy9wLyR7QlBOfS0ke1BWfS50Z3ogXAorICAgICAgICAgICBmaWxlOi8vbWFrZS1zeXNyb290LXdvcmsucGF0Y2ggXAorICAgICAgICAgICAiCitNSVJST1JTICs9ICJodHRwOi8vc2cuZGFubnkuY3ovc2cvcCBodHRwczovL2Zvc3NpZXMub3JnL2xpbnV4L21pc2MiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInNkcGFybS0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRneiIKKworUEFDS0FHRVMgPSsgIiR7UE59LXNjcmlwdHMiCitSREVQRU5EU18ke1BOfS1zY3JpcHRzICs9ICJiYXNoICR7UE59IgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2Q5OThkMWMxMmE0ZWMxMTY1MmQwYWY1ODBmMDZiNGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDMyZmRiZmU5MGYwYzUxNjQwMjkxZmFmNzYwMjQ4OWIwYWU1NmRmYjk2ZDBjMDJlZDAyMzA4NzkyYWRjN2ZiMCIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworIyBQdXQgdGhlIGJhc2ggc2NyaXB0cyB0byAke1BOfS1zY3JpcHRzCitGSUxFU18ke1BOfS1zY3JpcHRzID0gIiR7YmluZGlyfS9zYXNfZGlza19ibGluayAke2JpbmRpcn0vc2NzaV9jaF9zd3AiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZzMtdXRpbHMvc2czLXV0aWxzXzEuNDQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZzMtdXRpbHMvc2czLXV0aWxzXzEuNDQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5MDkwMzUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2czLXV0aWxzL3NnMy11dGlsc18xLjQ0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotU1VNTUFSWSA9ICJVdGlsaXRpZXMgZm9yIHdvcmtpbmcgd2l0aCBnZW5lcmljIFNDU0kgZGV2aWNlcyIKLQotREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGxvdyBsZXZlbCB1dGlsaXRpZXMgZm9yIGRldmljZXMgdGhhdCB1c2UgdGhlIFNDU0kgY29tbWFuZCBzZXQiCi0KLUhPTUVQQUdFID0gImh0dHA6Ly9zZy5kYW5ueS5jei9zZy9zZzNfdXRpbHMuaHRtbCIKLVNFQ1RJT04gPSAiY29uc29sZS9hZG1pbiIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mOTBkYTdmYzUyMTcyNTk5ZGJmMDgyZDc2MjBmMThjYSIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2cuZGFubnkuY3ovc2cvcC9zZzNfdXRpbHMtJHtQVn0udGd6IFwKLSIKLU1JUlJPUlMgKz0gImh0dHA6Ly9zZy5kYW5ueS5jei9zZy9wIGh0dHBzOi8vZm9zc2llcy5vcmcvbGludXgvbWlzYyIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAic2czX3V0aWxzLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzExZDJiM2NhNGNjMmZkMDE3OTY0NzNlNTMzMGFmZWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGRhZTY4NGQyMmU3MWIxMTM1M2E0OGIxNmM5NTU5N2FmOTBmMGNiZTliYmQ1N2Y5OGQ3ZjU1NDRkYTVjYWU3YiIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCi0KLVMgPSAiJHtXT1JLRElSfS9zZzNfdXRpbHMtJHtQVn0iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJiYXNoIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2czLXV0aWxzL3NnMy11dGlsc18xLjQ1LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc2czLXV0aWxzL3NnMy11dGlsc18xLjQ1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyOTk1YjcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zZzMtdXRpbHMvc2czLXV0aWxzXzEuNDUuYmIKQEAgLTAsMCArMSwyNCBAQAorU1VNTUFSWSA9ICJVdGlsaXRpZXMgZm9yIHdvcmtpbmcgd2l0aCBnZW5lcmljIFNDU0kgZGV2aWNlcyIKKworREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGxvdyBsZXZlbCB1dGlsaXRpZXMgZm9yIGRldmljZXMgdGhhdCB1c2UgdGhlIFNDU0kgY29tbWFuZCBzZXQiCisKK0hPTUVQQUdFID0gImh0dHA6Ly9zZy5kYW5ueS5jei9zZy9zZzNfdXRpbHMuaHRtbCIKK1NFQ1RJT04gPSAiY29uc29sZS9hZG1pbiIKKworTElDRU5TRSA9ICJHUEx2MisgJiBCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mOTBkYTdmYzUyMTcyNTk5ZGJmMDgyZDc2MjBmMThjYSIKKworU1JDX1VSSSA9ICJodHRwOi8vc2cuZGFubnkuY3ovc2cvcC9zZzNfdXRpbHMtJHtQVn0udGd6IFwKKyIKK01JUlJPUlMgKz0gImh0dHA6Ly9zZy5kYW5ueS5jei9zZy9wIGh0dHBzOi8vZm9zc2llcy5vcmcvbGludXgvbWlzYyIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAic2czX3V0aWxzLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmU3MWQ3Y2Q5MjVkY2M0OGFjYjI0YWZhYWFhYzc5OTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGI4N2M5NzFhZjUyYWY3Y2ViZWJjY2UzNDNlYWM2YmQzZDczZmViYjNjNzJhZjljZTQxYTQ1NTJmMTYwNWE2MSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCisKK1MgPSAiJHtXT1JLRElSfS9zZzNfdXRpbHMtJHtQVn0iCisKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNoIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc21lbS9zbWVtXzEuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NtZW0vc21lbV8xLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwMjIxN2EuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc21lbS9zbWVtXzEuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiUmVwb3J0IGFwcGxpY2F0aW9uIG1lbW9yeSB1c2FnZSBpbiBhIG1lYW5pbmdmdWwgd2F5IgotREVTQ1JJUFRJT04gPSAic21lbSBpcyBhIHRvb2wgdGhhdCBjYW4gZ2l2ZSBudW1lcm91cyByZXBvcnRzIG9uIG1lbW9yeSB1c2FnZSBvbiBMaW51eCBcCi1zeXN0ZW1zLiBVbmxpa2UgZXhpc3RpbmcgdG9vbHMsIHNtZW0gY2FuIHJlcG9ydCBwcm9wb3J0aW9uYWwgc2V0IHNpemUgKFBTUyksIFwKLXdoaWNoIGlzIGEgbW9yZSBtZWFuaW5nZnVsIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBhbW91bnQgb2YgbWVtb3J5IHVzZWQgYnkgXAotbGlicmFyaWVzIGFuZCBhcHBsaWNhdGlvbnMgaW4gYSB2aXJ0dWFsIG1lbW9yeSBzeXN0ZW0uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5zZWxlbmljLmNvbS9zbWVtLyIKLVNFQ1RJT04gPSAiQXBwbGljYXRpb25zL1N5c3RlbSIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnNlbGVuaWMuY29tLyR7QlBOfS9kb3dubG9hZC8ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiZmU3OTQzNWMzOTMwMzg5YmZkYjU2MDI1NWM4MDIxNjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmVhOWY4NzhmNGNmM2MyNzY3NzRjM2Y3ZTJhNDE5NzdhMWYyZDY0Zjk4ZDJkY2I2YTE1ZjFmM2Q4NGRmNjFlYyIKLQotZG9fY29tcGlsZSgpIHsKLSAgICAgICAgJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30gc21lbWNhcC5jIC1vIHNtZW1jYXAKLX0KLQotZG9faW5zdGFsbCgpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7bWFuZGlyfS9tYW44Ci0gICAgICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3NtZW0gJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAtbSAwNzU1ICR7U30vc21lbWNhcCAke0R9JHtiaW5kaXJ9LwotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9zbWVtLjggJHtEfS8ke21hbmRpcn0vbWFuOC8KLX0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tdGV4dHV0aWxzIHB5dGhvbi1jb21wcmVzc2lvbiBweXRob24tc2hlbGwgcHl0aG9uLWNvZGVjcyIKLQotUEFDS0FHRVMgPSsgInNtZW1jYXAiCi0KLUZJTEVTX3NtZW1jYXAgPSAiJHtiaW5kaXJ9L3NtZW1jYXAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcGFuLWxpdGUvc3Bhbi1saXRlX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NwYW4tbGl0ZS9zcGFuLWxpdGVfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZWM4MjkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcGFuLWxpdGUvc3Bhbi1saXRlX2dpdC5iYgpAQCAtMCwwICsxLDEyIEBACitTVU1NQVJZID0gInNpbmdsZS1maWxlIGhlYWRlci1vbmx5IHZlcnNpb24gb2YgYSBDKysyMC1saWtlIHNwYW4gZm9yIEMrKzk4LCBDKysxMSBhbmQgbGF0ZXIiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbWFydGlubW9lbmUvc3Bhbi1saXRlIgorTElDRU5TRSA9ICJCU0wtMS4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWU0MjI0Y2NhZWNiMTRkOTQyYzcxZDMxYmVmMjBkNzhjIgorCitTUkNfVVJJICs9ICJnaXQ6Ly9naXRodWIuY29tL21hcnRpbm1vZW5lL3NwYW4tbGl0ZSIKK1NSQ1JFViA9ICJlMDNkMTE2NmNjYzg0ODFkOTkzZGMwMmFhZTcwMzk2NjMwMWE1ZTZlIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlCitpbmhlcml0IHB0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcGRsb2cvc3BkbG9nXzEuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3BkbG9nL3NwZGxvZ18xLjMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTFlM2Y2Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcGRsb2cvc3BkbG9nXzEuMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVmVyeSBmYXN0LCBoZWFkZXIgb25seSwgQysrIGxvZ2dpbmcgbGlicmFyeS4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZ2FiaW1lL3NwZGxvZy93aWtpIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPUkVCQVNFfS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9NSVQ7bWQ1PTA4MzVhZGU2OThlMGJjZjg1MDZlY2RhMmY3YjRmMzAyIgotCi1TUkNSRVYgPSAiYTcxNDhiNzE4ZWEyZmFiYjgzODdjYjkwYWVlOWJmNDQ4ZGE2M2U2NSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9nYWJpbWUvc3BkbG9nLmdpdDtwcm90b2NvbD1naXQ7YnJhbmNoPXYxLng7IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLSMgbm8gbmVlZCB0byBidWlsZCBleGFtcGxlJnRleHQmYmVuY2htYXJrcyBvbiBwdXJlIHlvY3RvCi1FWFRSQV9PRUNNQUtFICs9ICItRFNQRExPR19JTlNUQUxMPW9uIC1EU1BETE9HX0JVSUxEX0VYQU1QTEVTPW9mZiAtRFNQRExPR19CVUlMRF9URVNUUz1vZmYgLURTUERMT0dfQlVJTERfQkVOQ0g9b2ZmIgotCi1pbmhlcml0IGNtYWtlCi0KLSMgSGVhZGVyLW9ubHkgbGlicmFyeQotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLVJSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICIke1BOfS1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zcGRsb2cvc3BkbG9nXzEuNS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3BkbG9nL3NwZGxvZ18xLjUuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOTYyOWNjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3BkbG9nL3NwZGxvZ18xLjUuMC5iYgpAQCAtMCwwICsxLDE5IEBACitERVNDUklQVElPTiA9ICJWZXJ5IGZhc3QsIGhlYWRlciBvbmx5LCBDKysgbG9nZ2luZyBsaWJyYXJ5LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nYWJpbWUvc3BkbG9nL3dpa2kiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCisKK1NSQ1JFViA9ICJjZjZmMWRkMDFlNjYwZDU4NjVkNjhiZjVmYTc4ZjYzNzZiODk0NzBhIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2dhYmltZS9zcGRsb2cuZ2l0O3Byb3RvY29sPWdpdDticmFuY2g9djEueDsiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorIyBubyBuZWVkIHRvIGJ1aWxkIGV4YW1wbGUmdGV4dCZiZW5jaG1hcmtzIG9uIHB1cmUgeW9jdG8KK0VYVFJBX09FQ01BS0UgKz0gIi1EU1BETE9HX0lOU1RBTEw9b24gLURTUERMT0dfQlVJTERfRVhBTVBMRVM9b2ZmIC1EU1BETE9HX0JVSUxEX1RFU1RTPW9mZiAtRFNQRExPR19CVUlMRF9CRU5DSD1vZmYiCisKK2luaGVyaXQgY21ha2UKKworIyBIZWFkZXItb25seSBsaWJyYXJ5CitSREVQRU5EU18ke1BOfS1kZXYgPSAiIgorUlJFQ09NTUVORFNfJHtQTn0tZGJnID0gIiR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3NyZWNvcmQvc3JlY29yZF8xLjY0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3JlY29yZC9zcmVjb3JkXzEuNjQuYmIKaW5kZXggZDM0ODhkZi4uNGMzNGZhMSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3JlY29yZC9zcmVjb3JkXzEuNjQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3JlY29yZC9zcmVjb3JkXzEuNjQuYmIKQEAgLTExLDYgKzExLDggQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICI0ZGU0YTc0OTc0NzJkNzk3MjY0NWMyYWY5MTMxMzc2OSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI0OWE0NDE4NzMzYzUwOGMwM2FkNzlhMjllOTVhY2VjOWEyZmJjNGM3MzA2MTMxZDJhOGY1ZWYzMjAxMmU2N2UyIgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9zcmVjb3JkL2ZpbGVzL3JlbGVhc2VzIgorCiBERVBFTkRTID0gImxpYnRvb2wtbmF0aXZlIGJvb3N0IGdyb2ZmLW5hdGl2ZSIKIAogaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvc3lzbG9nLW5nLmNvbmYuc3lzdGVtZCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9zeXNsb2ctbmcuY29uZi5zeXN0ZW1kCmluZGV4IDk2NWFiZjcuLjZhODYyNzYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9zeXNsb2ctbmcuY29uZi5zeXN0ZW1kCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9zeXNsb2ctbmcuY29uZi5zeXN0ZW1kCkBAIC0xLDQgKzEsNCBAQAotQHZlcnNpb246IDMuMTkKK0B2ZXJzaW9uOiAzLjI0CiAjCiAjIFN5c2xvZy1uZyBjb25maWd1cmF0aW9uIGZpbGUsIGNvbXBhdGlibGUgd2l0aCBkZWZhdWx0IERlYmlhbiBzeXNsb2dkCiAjIGluc3RhbGxhdGlvbi4gT3JpZ2luYWxseSB3cml0dGVuIGJ5IGFub255bW91cyAoSSBjYW4ndCBmaW5kIGhpcyBuYW1lKQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL3N5c2xvZy1uZy5jb25mLnN5c3Zpbml0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzbG9nLW5nL2ZpbGVzL3N5c2xvZy1uZy5jb25mLnN5c3Zpbml0CmluZGV4IDJiMzliOGMuLjMyYjk4NjEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9maWxlcy9zeXNsb2ctbmcuY29uZi5zeXN2aW5pdAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvZmlsZXMvc3lzbG9nLW5nLmNvbmYuc3lzdmluaXQKQEAgLTEsNCArMSw0IEBACi1AdmVyc2lvbjogMy4xOQorQHZlcnNpb246IDMuMjQKICMKICMgU3lzbG9nLW5nIGNvbmZpZ3VyYXRpb24gZmlsZSwgY29tcGF0aWJsZSB3aXRoIGRlZmF1bHQgRGViaWFuIHN5c2xvZ2QKICMgaW5zdGFsbGF0aW9uLiBPcmlnaW5hbGx5IHdyaXR0ZW4gYnkgYW5vbnltb3VzIChJIGNhbid0IGZpbmQgaGlzIG5hbWUpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXNsb2ctbmcvc3lzbG9nLW5nLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9zeXNsb2ctbmcuaW5jCmluZGV4IDhlNTM2ODkuLmZmNmQ5ZDIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9zeXNsb2ctbmcuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c2xvZy1uZy9zeXNsb2ctbmcuaW5jCkBAIC03MywyNiArNzMsMjYgQEAKIH0KIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59Ci0gICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9pbml0c2NyaXB0ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvc3lzbG9nCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0KKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vaW5pdHNjcmlwdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzbG9nCiAKLSAgICBpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8KLSAgICBpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L3ZvbGF0aWxlcy4wM19zeXNsb2ctbmcgJHtEfS8ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzAzX3N5c2xvZy1uZwotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9zeXNsb2ctbmctdG1wLmNvbmYgJHtEfS8ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvc3lzbG9nLW5nLmNvbmYKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLworICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzLjAzX3N5c2xvZy1uZyAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy8wM19zeXNsb2ctbmcKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9zeXNsb2ctbmctdG1wLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9zeXNsb2ctbmcuY29uZgogCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbGliLyR7QlBOfQorICAgIGluc3RhbGwgLWQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliLyR7QlBOfQogICAgICMgUmVtb3ZlIC92YXIvcnVuIGFzIGl0IGlzIGNyZWF0ZWQgb24gc3RhcnR1cAogICAgIHJtIC1yZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ydW4KIAogICAgICMgc3VwcG9ydCBmb3Igc3lzdGVtZAogICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAke1dPUktESVJ9L3N5c2xvZy1uZy5jb25mLnN5c3RlbWQgJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59LyR7QlBOfS5jb25mCisgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vc3lzbG9nLW5nLmNvbmYuc3lzdGVtZCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vJHtCUE59LmNvbmYKIAogICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9jb250cmliL3N5c3RlbWQvJHtCUE59QC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyR7QlBOfUAuc2VydmljZQotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9jb250cmliL3N5c3RlbWQvJHtCUE59QGRlZmF1bHQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC8ke0JQTn1AZGVmYXVsdAorICAgICAgICBpbnN0YWxsIC1tIDY0NCAke1N9L2NvbnRyaWIvc3lzdGVtZC8ke0JQTn1ALnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJHtCUE59QC5zZXJ2aWNlCisgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vY29udHJpYi9zeXN0ZW1kLyR7QlBOfUBkZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvJHtCUE59QGRlZmF1bHQKIAogICAgICAgICBzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vJHtCUE59QC5zZXJ2aWNlICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvJHtCUE59QGRlZmF1bHQKICAgICAgICAgc2VkIC1pIC1lICdzLEBMT0NBTFNUQVRFRElSQCwke2xvY2Fsc3RhdGVkaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyR7QlBOfUAuc2VydmljZSAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0LyR7QlBOfUBkZWZhdWx0CkBAIC0xMDEsNyArMTAxLDcgQEAKICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9tdWx0aS11c2VyLnRhcmdldC53YW50cwogICAgICAgICBsbiAtc2YgLi4vJHtCUE59QC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzLyR7QlBOfUBkZWZhdWx0LnNlcnZpY2UKICAgICBlbHNlCi0gICAgICAgIGluc3RhbGwgJHtXT1JLRElSfS9zeXNsb2ctbmcuY29uZi5zeXN2aW5pdCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vJHtCUE59LmNvbmYKKyAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9zeXNsb2ctbmcuY29uZi5zeXN2aW5pdCAke0R9JHtzeXNjb25mZGlyfS8ke0JQTn0vJHtCUE59LmNvbmYKICAgICBmaQogCiAgICAgb2VfbXVsdGlsaWJfaGVhZGVyIHN5c2xvZy1uZy9zeXNsb2ctbmctY29uZmlnLmgKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c3RlbS1jb25maWcta2V5Ym9hcmQvc3lzdGVtLWNvbmZpZy1rZXlib2FyZF8xLjQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3N5c3RlbS1jb25maWcta2V5Ym9hcmQvc3lzdGVtLWNvbmZpZy1rZXlib2FyZF8xLjQuMC5iYgppbmRleCAyNmI0NDEyLi4xY2UzYzhlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9zeXN0ZW0tY29uZmlnLWtleWJvYXJkL3N5c3RlbS1jb25maWcta2V5Ym9hcmRfMS40LjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvc3lzdGVtLWNvbmZpZy1rZXlib2FyZC9zeXN0ZW0tY29uZmlnLWtleWJvYXJkXzEuNC4wLmJiCkBAIC02LDcgKzYsNyBAQAogU1JDX1VSSVttZDVzdW1dID0gImMyNjdkYjBlZTdhMjEzMWJhNDE4Mzk5ZGMxN2Y5ZTcyIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIxOGM4ODNlNGUyYmZjYzgyYmZlMDdlNzg1NzA3YjVjMmVjZTI4ZGY3NzJmMjE1NWZkMDQ0YjliYjE2MTQyODQiCiAKLWluaGVyaXQgcHl0aG9uLWRpciBnZXR0ZXh0Citpbmhlcml0IHB5dGhvbjMtZGlyIGdldHRleHQKIERFUEVORFMgKz0gImludGx0b29sLW5hdGl2ZSBnZXR0ZXh0LW5hdGl2ZSIKIAogRVhUUkFfT0VNQUtFID0gIiBcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90YmIvdGJiLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGJiL3RiYi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjg3MDEwNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90YmIvdGJiLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiUGFyYWxsZWxpc20gbGlicmFyeSBmb3IgQysrIC0gcnVudGltZSBmaWxlcyBcCi0gICAgVEJCIGlzIGEgbGlicmFyeSB0aGF0IGhlbHBzIHlvdSBsZXZlcmFnZSBtdWx0aS1jb3JlIHByb2Nlc3NvciBcCi0gICAgcGVyZm9ybWFuY2Ugd2l0aG91dCBoYXZpbmcgdG8gYmUgYSB0aHJlYWRpbmcgZXhwZXJ0LiBJdCByZXByZXNlbnRzIGEgXAotICAgIGhpZ2hlci1sZXZlbCwgdGFzay1iYXNlZCBwYXJhbGxlbGlzbSB0aGF0IGFic3RyYWN0cyBwbGF0Zm9ybSBkZXRhaWxzIFwKLSAgICBhbmQgdGhyZWFkaW5nIG1lY2hhbmlzbSBmb3IgcGVyZm9ybWFuY2UgYW5kIHNjYWxhYmlsaXR5LiIKLUhPTUVQQUdFID0gImh0dHA6Ly90aHJlYWRpbmdidWlsZGluZ2Jsb2Nrcy5vcmcvIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODZkM2YzYTk1YzMyNGM5NDc5YmQ4OTg2OTY4ZjQzMjciCi1QUkRBVEUgPSAiMjAxNzA0MTIiCi1CUkFOQ0ggPSAidGJiXzIwMTciCi1TUkNSRVYgPSAiYTJjZmRmZTk0NjkzM2NiZTM4YmZmZTFkODA4NmFlMzZmMDY2OTFhMyIKLVBWID0gIiR7UFJEQVRFfSske1NSQ1BWfSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS8wMW9yZy90YmI7YnJhbmNoPSR7QlJBTkNIfSBcCi0gICAgICAgICAgIGZpbGU6Ly9jcm9zcy1jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWFsbGluZm8taXMtZ2xpYmMtc3BlY2lmaWMtQVBJLW1hcmstaXQtc28ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1saW51eC1GaXgtZ2NjLXZlcnNpb24tY2hlY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdGJiLnBjIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotQ09NUElMRVIgPz0gImdjYyIKLUNPTVBJTEVSX3Rvb2xjaGFpbi1jbGFuZyA9ICJjbGFuZyIKLQotZG9fY29tcGlsZSgpIHsKLSAgICBvZV9ydW5tYWtlIGNvbXBpbGVyPSR7Q09NUElMRVJ9IGFyY2g9JHtIT1NUX0FSQ0h9IHJ1bnRpbWU9Y2M0Ci19Ci0KLWRvX2luc3RhbGwoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfSAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZwotICAgIHJtICR7U30vaW5jbHVkZS90YmIvaW5kZXguaHRtbCAtZgotICAgIGNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICR7U30vaW5jbHVkZS90YmIgJHtEfSR7aW5jbHVkZWRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtCfS9idWlsZC9saW51eF8qX3JlbGVhc2UvbGliKi5zbyogJHtEfSR7bGliZGlyfQotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3RiYi5wYyAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZwotfQotCi0jIGZhaWxzIHdpdGggdGh1bWIgZW5hYmxlZDoKLSMgfCBhcm0tb2UtbGludXgtZ251ZWFiaS1nKysgIC1tYXJjaD1hcm12Ny1hIC1tdGh1bWIgLW10aHVtYi1pbnRlcndvcmsgLW1mbG9hdC1hYmk9c29mdGZwIC1tZnB1PW5lb24gLW10dW5lPWNvcnRleC1hOSAtbWNwdT1jb3J0ZXgtYTkgLURfX0FSTV9fIC1EX19MSU5VWF9BUk1fQVJDSF9fPTcgLWZ1bndpbmQtdGFibGVzIC1tdmVjdG9yaXplLXdpdGgtbmVvbi1xdWFkIC1yZHluYW1pYyAtLXN5c3Jvb3Q9L09FL3N5c3Jvb3RzL20xNHR2IC1jIC1NTUQgLURUQkJfVVNFX0RFQlVHICAtZyAtTzAgLURVU0VfUFRIUkVBRCAtZlBJQyAtRF9fVEJCX0JVSUxEPTEgLVdhbGwgLVduby1wYXJlbnRoZXNlcyAtV25vLW5vbi12aXJ0dWFsLWR0b3IgLU8yIC1waXBlIC1nIC1mZWxpbWluYXRlLXVudXNlZC1kZWJ1Zy10eXBlcyAtZnBlcm1pc3NpdmUgLWZ2aXNpYmlsaXR5LWlubGluZXMtaGlkZGVuICAgLUkuLi8uLi9zcmMgLUkuLi8uLi9zcmMvcm1sL2luY2x1ZGUgLUkuLi8uLi9pbmNsdWRlIC4uLy4uL3NyYy90YmIvY29uY3VycmVudF9xdWV1ZS5jcHAKLSMgfCB7c3RhbmRhcmQgaW5wdXR9OiBBc3NlbWJsZXIgbWVzc2FnZXM6Ci0jIHwge3N0YW5kYXJkIGlucHV0fToyNTA6IEVycm9yOiB0aHVtYiBjb25kaXRpb25hbCBpbnN0cnVjdGlvbiBzaG91bGQgYmUgaW4gSVQgYmxvY2sgLS0gYHN0cmV4ZXEgcjIscjMsW3I0XScKLSMgLi4uCi0jIHwgbWFrZVsxXTogKioqIFtjb25jdXJyZW50X3F1ZXVlLm9dIEVycm9yIDEKLUFSTV9JTlNUUlVDVElPTl9TRVQgPSAiYXJtIgotU0VDVVJJVFlfQ0ZMQUdTX2FwcGVuZCA9ICIgLWZQSUMiCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RiYi90YmIvMDAwMi1saW51eC1GaXgtZ2NjLXZlcnNpb24tY2hlY2sucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90YmIvdGJiLzAwMDItbGludXgtRml4LWdjYy12ZXJzaW9uLWNoZWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODI0YjYxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RiYi90YmIvMDAwMi1saW51eC1GaXgtZ2NjLXZlcnNpb24tY2hlY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1Gcm9tIGFlZTA5OGYxYmYwNTExYzZiNTU0NGRlMzE3MGE5ZThiNTE2NzNiNjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQaWVycmUgTGUgTWFnb3Vyb3UgPHBsZW1hZ291cm91QHNvZnRiYW5rcm9ib3RpY3MuY29tPgotRGF0ZTogVHVlLCAyMyBKYW4gMjAxOCAxNToyNTo1MCArMDEwMAotU3ViamVjdDogW1BBVENIXSBsaW51eC5nY2M6IEZpeCBjcm9zcyBjb21waWxhdGlvbiBlcnJvci4KLQotV2hlbiBjcm9zcyBjb21waWxpbmcgb24gbGludXggd2l0aCBnY2MsIHRoZSBob3N0IGdjYyB3YXMgdXNlZCBpbnN0ZWFkIG9mCi10aGUgY3Jvc3MgZ2NjIHRvIHNldCBjb21waWxhdGlvbiBmbGFncyBhY2NvcmRpbmcgdG8gZ2NjIHZlcnNpb24uCi0KLVdoZW4gdGhlIGNyb3NzIGdjYyB3YXMgaW4gdmVyc2lvbiA1LlggYW5kIHRoZSBob3N0IGdjYyBpbiB2ZXJzaW9uIDcuWCwKLXRiYiB3YXMgY29tcGlsZWQgd2l0aCB0aGUgLWZsaWZldGltZS1kc2U9MSBmbGFnIHRoYXQgZG9lcyBub3QgZXhpc3Qgb24KLWdjYyA1LlguCi0tLS0KLSBidWlsZC9saW51eC5nY2MuaW5jIHwgMTAgKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9idWlsZC9saW51eC5nY2MuaW5jIGIvYnVpbGQvbGludXguZ2NjLmluYwotaW5kZXggNWMxODg5Yy4uYTRkNjY5OCAxMDA2NDQKLS0tLSBhL2J1aWxkL2xpbnV4LmdjYy5pbmMKLSsrKyBiL2J1aWxkL2xpbnV4LmdjYy5pbmMKLUBAIC00MSwyOSArNDEsMjkgQEAgTElOS19GTEFHUyA9IC1XbCwtcnBhdGgtbGluaz0uIC1yZHluYW1pYwotIENfRkxBR1MgPSAkKENQTFVTX0ZMQUdTKQotIAotICMgZ2NjIDQuMiBhbmQgaGlnaGVyIHN1cHBvcnQgT3Blbk1QCi0taWZuZXEgKCwkKHNoZWxsIGdjYyAtZHVtcHZlcnNpb24gfCBlZ3JlcCAgIl4oNFwuWzItOV18WzUtOV0pIikpCi0raWZuZXEgKCwkKHNoZWxsICQoQ0MpIC1kdW1wdmVyc2lvbiB8IGVncmVwICAiXig0XC5bMi05XXxbNS05XSkiKSkKLSAgICAgT1BFTk1QX0ZMQUcgPSAtZm9wZW5tcAotIGVuZGlmCi0gCi0gIyBnY2MgNC44IGFuZCBsYXRlciBzdXBwb3J0IFJUTSBpbnRyaW5zaWNzLCBidXQgcmVxdWlyZSBjb21tYW5kIGxpbmUgc3dpdGNoIHRvIGVuYWJsZSB0aGVtCi0taWZuZXEgKCwkKHNoZWxsIGdjYyAtZHVtcHZlcnNpb24gfCBlZ3JlcCAgIl4oNFwuWzgtOV18WzUtOV0pIikpCi0raWZuZXEgKCwkKHNoZWxsICQoQ0MpIC1kdW1wdmVyc2lvbiB8IGVncmVwICAiXig0XC5bOC05XXxbNS05XSkiKSkKLSAgICAgUlRNX0tFWSA9IC1tcnRtCi0gZW5kaWYKLSAKLSAjIGdjYyA0LjAgYW5kIGxhdGVyIGhhdmUgLVdleHRyYSB0aGF0IGlzIHVzZWQgYnkgc29tZSBvdXIgY3VzdG9tZXJzLgotLWlmbmVxICgsJChzaGVsbCBnY2MgLWR1bXB2ZXJzaW9uIHwgZWdyZXAgICJeKFs0LTldKSIpKQotK2lmbmVxICgsJChzaGVsbCAkKENDKSAtZHVtcHZlcnNpb24gfCBlZ3JlcCAgIl4oWzQtOV0pIikpCi0gICAgIFRFU1RfV0FSTklOR19LRVkgKz0gLVdleHRyYQotIGVuZGlmCi0gCi0gIyBnY2MgNS4wIGFuZCBsYXRlciBoYXZlIC1Xc3VnZ2VzdC1vdmVycmlkZSBvcHRpb24KLSAjIGVuYWJsZSBpdCB2aWEgYSBwcmUtaW5jbHVkZWQgaGVhZGVyIGluIG9yZGVyIHRvIGxpbWl0IHRvIEMrKzExIGFuZCBhYm92ZQotLWlmbmVxICgsJChzaGVsbCBnY2MgLWR1bXB2ZXJzaW9uIHwgZWdyZXAgICJeKFs1LTldKSIpKQotK2lmbmVxICgsJChzaGVsbCAkKENDKSAtZHVtcHZlcnNpb24gfCBlZ3JlcCAgIl4oWzUtOV0pIikpCi0gICAgIElOQ0xVREVfVEVTVF9IRUFERVJTID0gLWluY2x1ZGUgJCh0YmJfcm9vdCkvc3JjL3Rlc3QvaGFybmVzc19wcmVsb2FkLmgKLSBlbmRpZgotIAotICMgZ2NjIDYuMCBhbmQgbGF0ZXIgaGF2ZSAtZmxpZmV0aW1lLWRzZSBvcHRpb24gdGhhdCBjb250cm9scwotICMgZWxpbWluYXRpb24gb2Ygc3RvcmVzIGRvbmUgb3V0c2lkZSB0aGUgb2JqZWN0IGxpZmV0aW1lCi0taWZuZXEgKCwkKHNoZWxsIGdjYyAtZHVtcHZlcnNpb24gfCBlZ3JlcCAgIl4oWzYtOV0pIikpCi0raWZuZXEgKCwkKHNoZWxsICQoQ0MpIC1kdW1wdmVyc2lvbiB8IGVncmVwICAiXihbNi05XSkiKSkKLSAgICAgIyBrZWVwIHByZS1jb250cnVjdGlvbiBzdG9yZXMgZm9yIHplcm8gaW5pdGlhbGl6YXRpb24KLSAgICAgRFNFX0tFWSA9IC1mbGlmZXRpbWUtZHNlPTEKLSBlbmRpZgotLS0gCi0yLjE1LjEKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGJiL3RiYi9HTElCQy1QUkVSRVEtaXMtbm90LWRlZmluZWQtb24tbXVzbC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RiYi90YmIvR0xJQkMtUFJFUkVRLWlzLW5vdC1kZWZpbmVkLW9uLW11c2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYyOGY2ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RiYi90YmIvR0xJQkMtUFJFUkVRLWlzLW5vdC1kZWZpbmVkLW9uLW11c2wucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSAyNzk1NmQ0YzVmYjYxNTA5ODIzMWNlYmZiOGVlZjExMDU3NjM5ZDNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRmFicmljZSBGb250YWluZSA8Zm9udGFpbmUuZmFicmljZUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDggRGVjIDIwMTkgMTg6MTQ6MzggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gc3JjL3RiYm1hbGxvYy9wcm94eS5jcHA6IF9fR0xJQkNfUFJFUkVRIGlzIG5vdCBkZWZpbmVkIG9uCisgbXVzbAorCitEbyBub3QgY2FsbCBfX0dMSUJDX1BSRVJFUSBpZiBpdCBpcyBub3QgZGVmaW5lZCBvdGhlcndpc2UgYnVpbGQgd2lsbAorZmFpbCBvbiBtdXNsCisKK1NpZ25lZC1vZmYtYnk6IEZhYnJpY2UgRm9udGFpbmUgPGZvbnRhaW5lLmZhYnJpY2VAZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL29uZWFwaS1zcmMvb25lVEJCL3B1bGwvMjAzXQorCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorLS0tCisgc3JjL3RiYm1hbGxvYy9wcm94eS5jcHAgfCA2ICsrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvdGJibWFsbG9jL3Byb3h5LmNwcCBiL3NyYy90YmJtYWxsb2MvcHJveHkuY3BwCitpbmRleCBkOTZhZTdhMC4uNzA5YWU4MzkgMTAwNjQ0CistLS0gYS9zcmMvdGJibWFsbG9jL3Byb3h5LmNwcAorKysrIGIvc3JjL3RiYm1hbGxvYy9wcm94eS5jcHAKK0BAIC0yNCw3ICsyNCw4IEBACisgLy8gb2YgYWxpZ25lZF9hbGxvYyBhcyByZXF1aXJlZCBieSBuZXcgQysrIHN0YW5kYXJkLCB0aGlzIG1ha2VzIGl0IGhhcmQgdG8KKyAvLyByZWRlZmluZSBhbGlnbmVkX2FsbG9jIGhlcmUuIEhvd2V2ZXIsIHJ1bm5pbmcgb24gc3lzdGVtcyB3aXRoIG5ldyBsaWJjCisgLy8gdmVyc2lvbiwgaXQgc3RpbGwgbmVlZHMgaXQgdG8gYmUgcmVkZWZpbmVkLCB0aHVzIHRyaWNraW5nIHN5c3RlbSBoZWFkZXJzCistI2lmIGRlZmluZWQoX19HTElCQ19QUkVSRVEpICYmICFfX0dMSUJDX1BSRVJFUSgyLCAxNikgJiYgX0dMSUJDWFhfSEFWRV9BTElHTkVEX0FMTE9DCisrI2lmIGRlZmluZWQoX19HTElCQ19QUkVSRVEpCisrI2lmICFfX0dMSUJDX1BSRVJFUSgyLCAxNikgJiYgX0dMSUJDWFhfSEFWRV9BTElHTkVEX0FMTE9DCisgLy8gdGVsbCA8Y3N0ZGxpYj4gdGhhdCB0aGVyZSBpcyBubyBhbGlnbmVkX2FsbG9jCisgI3VuZGVmIF9HTElCQ1hYX0hBVkVfQUxJR05FRF9BTExPQworIC8vIHRyaWNrIDxzdGRsaWIuaD4gdG8gZGVmaW5lIGFub3RoZXIgc3ltYm9sIGluc3RlYWQKK0BAIC0zMiw3ICszMyw4IEBACisgLy8gRml4IHRoZSBzdGF0ZSBhbmQgdW5kZWZpbmUgdGhlIHRyaWNrCisgI2luY2x1ZGUgPGNzdGRsaWI+CisgI3VuZGVmIGFsaWduZWRfYWxsb2MKKy0jZW5kaWYgLy8gZGVmaW5lZChfX0dMSUJDX1BSRVJFUSkmJiFfX0dMSUJDX1BSRVJFUSgyLCAxNikmJl9HTElCQ1hYX0hBVkVfQUxJR05FRF9BTExPQworKyNlbmRpZiAvLyBkZWZpbmVkKF9fR0xJQkNfUFJFUkVRKQorKyNlbmRpZiAvLyAhX19HTElCQ19QUkVSRVEoMiwgMTYpJiZfR0xJQkNYWF9IQVZFX0FMSUdORURfQUxMT0MKKyAjZW5kaWYgLy8gX19saW51eF9fICYmICFfX0FORFJPSURfXworIAorICNpbmNsdWRlICJwcm94eS5oIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGJiL3RiYi9jcm9zcy1jb21waWxlLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGJiL3RiYi9jcm9zcy1jb21waWxlLnBhdGNoCmluZGV4IGQ1NGIzMDcuLjM2NTc4NTQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RiYi90YmIvY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90YmIvdGJiL2Nyb3NzLWNvbXBpbGUucGF0Y2gKQEAgLTEsMzkgKzEsMzUgQEAKIEF1dGhvcjogTWFyY2luIEp1c3praWV3aWN6IDxtYXJjaW4uanVzemtpZXdpY3pAbGluYXJvLm9yZz4KLQorICAKIFVwc3RyZWFtLVN0YXR1czogdW5zdWl0YWJsZQogLS0tCi0gYnVpbGQvbGludXguZ2NjLmluYyB8ICAgIDUgKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1JbmRleDogdGJiMjAxN18yMDE3MDExOG9zcy9idWlsZC9saW51eC5nY2MuaW5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gdGJiMjAxN18yMDE3MDExOG9zcy5vcmlnL2J1aWxkL2xpbnV4LmdjYy5pbmMKLSsrKyB0YmIyMDE3XzIwMTcwMTE4b3NzL2J1aWxkL2xpbnV4LmdjYy5pbmMKLUBAIC0zMiw4ICszMiw5IEBAIERZTElCX0tFWSA9IC1zaGFyZWQKLSBFWFBPUlRfS0VZID0gLVdsLC0tdmVyc2lvbi1zY3JpcHQsCi0gTElCREwgPSAtbGRsCitkaWZmIC0tZ2l0IGEvYnVpbGQvbGludXguY2xhbmcuaW5jIGIvYnVpbGQvbGludXguY2xhbmcuaW5jCitpbmRleCBmZTliNWM5OC4uYjBkY2Q2OGIgMTAwNjQ0CistLS0gYS9idWlsZC9saW51eC5jbGFuZy5pbmMKKysrKyBiL2J1aWxkL2xpbnV4LmNsYW5nLmluYworQEAgLTEyLDggKzEyLDggQEAKKyAjIFNlZSB0aGUgTGljZW5zZSBmb3IgdGhlIHNwZWNpZmljIGxhbmd1YWdlIGdvdmVybmluZyBwZXJtaXNzaW9ucyBhbmQKKyAjIGxpbWl0YXRpb25zIHVuZGVyIHRoZSBMaWNlbnNlLgogIAotLUNQTFVTID0gZysrCi0tQ09OTFkgPSBnY2MKLStDUExVUyA9ICQoQ1hYKQotK0NPTkxZID0gJChDQykKLStDUExVU19GTEFHUyA9ICQoQ1hYRkxBR1MpCi0gTElCX0xJTktfRkxBR1MgPSAkKERZTElCX0tFWSkgLVdsLC1zb25hbWU9JChCVUlMRElOR19MSUJSQVJZKQotIExJQlMgKz0gLWxwdGhyZWFkIC1scnQKLSBMSU5LX0ZMQUdTID0gLVdsLC1ycGF0aC1saW5rPS4gLXJkeW5hbWljCi1JbmRleDogdGJiMjAxN18yMDE3MDExOG9zcy9idWlsZC9saW51eC5jbGFuZy5pbmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0YmIyMDE3XzIwMTcwMTE4b3NzLm9yaWcvYnVpbGQvbGludXguY2xhbmcuaW5jCi0rKysgdGJiMjAxN18yMDE3MDExOG9zcy9idWlsZC9saW51eC5jbGFuZy5pbmMKLUBAIC0zMSw4ICszMSw5IEBAIERZTElCX0tFWSA9IC1zaGFyZWQKLSBFWFBPUlRfS0VZID0gLVdsLC0tdmVyc2lvbi1zY3JpcHQsCi0gTElCREwgPSAtbGRsCistQ1BMVVMgPz0gY2xhbmcrKworLUNPTkxZID89IGNsYW5nCisrQ1BMVVMgPz0gJChDWFgpCisrQ09OTFkgPz0gJChDQykKKyBDT01QSUxFX09OTFkgPSAtYyAtTU1ECisgUFJFUFJPQ19PTkxZID0gLUUgLXggYysrCisgSU5DTFVERV9LRVkgPSAtSQorZGlmZiAtLWdpdCBhL2J1aWxkL2xpbnV4LmdjYy5pbmMgYi9idWlsZC9saW51eC5nY2MuaW5jCitpbmRleCBkODIwYzE1ZC4uNjJjNzZhZmQgMTAwNjQ0CistLS0gYS9idWlsZC9saW51eC5nY2MuaW5jCisrKysgYi9idWlsZC9saW51eC5nY2MuaW5jCitAQCAtMTIsOCArMTIsOCBAQAorICMgU2VlIHRoZSBMaWNlbnNlIGZvciB0aGUgc3BlY2lmaWMgbGFuZ3VhZ2UgZ292ZXJuaW5nIHBlcm1pc3Npb25zIGFuZAorICMgbGltaXRhdGlvbnMgdW5kZXIgdGhlIExpY2Vuc2UuCiAgCi0tQ1BMVVMgPSBjbGFuZysrCi0tQ09OTFkgPSBjbGFuZwotK0NQTFVTID0gJChDWFgpCi0rQ09OTFkgPSAkKENDKQotK0NQTFVTX0ZMQUdTID0gJChDWFhGTEFHUykKLSBMSUJfTElOS19GTEFHUyA9ICQoRFlMSUJfS0VZKSAtV2wsLXNvbmFtZT0kKEJVSUxESU5HX0xJQlJBUlkpCi0gTElCUyArPSAtbHB0aHJlYWQgLWxydAotIExJTktfRkxBR1MgPSAtV2wsLXJwYXRoLWxpbms9LiAtcmR5bmFtaWMKKy1DUExVUyA/PSBnKysKKy1DT05MWSA/PSBnY2MKKytDUExVUyA/PSAkKENYWCkKKytDT05MWSA/PSAkKENDKQorIENPTVBJTEVfT05MWSA9IC1jIC1NTUQKKyBQUkVQUk9DX09OTFkgPSAtRSAteCBjKysKKyBJTkNMVURFX0tFWSA9IC1JCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90YmIvdGJiL3RiYi5wYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RiYi90YmIvdGJiLnBjCmluZGV4IDY0NGI2NGYuLjRmOWRhMTEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RiYi90YmIvdGJiLnBjCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3RiYi90YmIvdGJiLnBjCkBAIC01LDcgKzUsNyBAQAogCiBOYW1lOiBUaHJlYWRpbmcgQnVpbGRpbmcgQmxvY2tzCiBEZXNjcmlwdGlvbjogSW50ZWwncyBwYXJhbGxlbGlzbSBsaWJyYXJ5IGZvciBDKysKLVVSTDogaHR0cDovL3d3dy50aHJlYWRpbmdidWlsZGluZ2Jsb2Nrcy5vcmcvCi1WZXJzaW9uOiAzLjArcjAxOAorVVJMOiBodHRwczovL3NvZnR3YXJlLmludGVsLmNvbS9lbi11cy90YmIKK1ZlcnNpb246IDIwMjAuMgogTGliczogLUwke2xpYmRpcn0gLWx0YmIKIENmbGFnczogLUkke2luY2x1ZGVkaXJ9IApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGJiL3RiYl8yMDIwLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC90YmIvdGJiXzIwMjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZjlmZDdmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdGJiL3RiYl8yMDIwLjIuYmIKQEAgLTAsMCArMSw0NSBAQAorREVTQ1JJUFRJT04gPSAiUGFyYWxsZWxpc20gbGlicmFyeSBmb3IgQysrIC0gcnVudGltZSBmaWxlcyBcCisgICAgVEJCIGlzIGEgbGlicmFyeSB0aGF0IGhlbHBzIHlvdSBsZXZlcmFnZSBtdWx0aS1jb3JlIHByb2Nlc3NvciBcCisgICAgcGVyZm9ybWFuY2Ugd2l0aG91dCBoYXZpbmcgdG8gYmUgYSB0aHJlYWRpbmcgZXhwZXJ0LiBJdCByZXByZXNlbnRzIGEgXAorICAgIGhpZ2hlci1sZXZlbCwgdGFzay1iYXNlZCBwYXJhbGxlbGlzbSB0aGF0IGFic3RyYWN0cyBwbGF0Zm9ybSBkZXRhaWxzIFwKKyAgICBhbmQgdGhyZWFkaW5nIG1lY2hhbmlzbSBmb3IgcGVyZm9ybWFuY2UgYW5kIHNjYWxhYmlsaXR5LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vc29mdHdhcmUuaW50ZWwuY29tL2VuLXVzL3RiYiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTg2ZDNmM2E5NWMzMjRjOTQ3OWJkODk4Njk2OGY0MzI3IgorQlJBTkNIID0gInRiYl8yMDIwIgorU1JDUkVWID0gIjYwYjdkMGE3OGY4OTEwOTc2Njc4YmE2M2ExOWZkYWVlMjJjMGVmNjUiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vb25lYXBpLXNyYy9vbmVUQkIuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD0ke0JSQU5DSH0gXAorICAgICAgICAgICBmaWxlOi8vY3Jvc3MtY29tcGlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1hbGxpbmZvLWlzLWdsaWJjLXNwZWNpZmljLUFQSS1tYXJrLWl0LXNvLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0dMSUJDLVBSRVJFUS1pcy1ub3QtZGVmaW5lZC1vbi1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3RiYi5wYyBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCitQRSA9ICIxIgorCitDT01QSUxFUiA/PSAiZ2NjIgorQ09NUElMRVJfdG9vbGNoYWluLWNsYW5nID0gImNsYW5nIgorCitkb19jb21waWxlKCkgeworICAgIG9lX3J1bm1ha2UgY29tcGlsZXI9JHtDT01QSUxFUn0gYXJjaD0ke0hPU1RfQVJDSH0KK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9ICR7RH0ke2xpYmRpcn0KKyAgICBybSAke1N9L2luY2x1ZGUvdGJiL2luZGV4Lmh0bWwgLWYKKyAgICBjcCAtUiAtLW5vLWRlcmVmZXJlbmNlIC0tcHJlc2VydmU9bW9kZSxsaW5rcyAtdiAke1N9L2luY2x1ZGUvdGJiICR7RH0ke2luY2x1ZGVkaXJ9CisgICAgZm9yIGYgaW4gJHtCfS9idWlsZC9saW51eF8qX3JlbGVhc2UvbGliKi5zbyoKKyAgICBkbworICAgICAgICBpbnN0YWxsIC1EbSAwNzU1ICRmICR7RH0ke2xpYmRpcn0vCisgICAgZG9uZQorICAgIGluc3RhbGwgLURtIDA2NDQgJHtXT1JLRElSfS90YmIucGMgJHtEfSR7bGliZGlyfS9wa2djb25maWcvdGJiLnBjCit9CisKKyMgZmFpbHMgd2l0aCB0aHVtYiBlbmFibGVkOgorIyB8IGFybS1vZS1saW51eC1nbnVlYWJpLWcrKyAgLW1hcmNoPWFybXY3LWEgLW10aHVtYiAtbXRodW1iLWludGVyd29yayAtbWZsb2F0LWFiaT1zb2Z0ZnAgLW1mcHU9bmVvbiAtbXR1bmU9Y29ydGV4LWE5IC1tY3B1PWNvcnRleC1hOSAtRF9fQVJNX18gLURfX0xJTlVYX0FSTV9BUkNIX189NyAtZnVud2luZC10YWJsZXMgLW12ZWN0b3JpemUtd2l0aC1uZW9uLXF1YWQgLXJkeW5hbWljIC0tc3lzcm9vdD0vT0Uvc3lzcm9vdHMvbTE0dHYgLWMgLU1NRCAtRFRCQl9VU0VfREVCVUcgIC1nIC1PMCAtRFVTRV9QVEhSRUFEIC1mUElDIC1EX19UQkJfQlVJTEQ9MSAtV2FsbCAtV25vLXBhcmVudGhlc2VzIC1Xbm8tbm9uLXZpcnR1YWwtZHRvciAtTzIgLXBpcGUgLWcgLWZlbGltaW5hdGUtdW51c2VkLWRlYnVnLXR5cGVzIC1mcGVybWlzc2l2ZSAtZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4gICAtSS4uLy4uL3NyYyAtSS4uLy4uL3NyYy9ybWwvaW5jbHVkZSAtSS4uLy4uL2luY2x1ZGUgLi4vLi4vc3JjL3RiYi9jb25jdXJyZW50X3F1ZXVlLmNwcAorIyB8IHtzdGFuZGFyZCBpbnB1dH06IEFzc2VtYmxlciBtZXNzYWdlczoKKyMgfCB7c3RhbmRhcmQgaW5wdXR9OjI1MDogRXJyb3I6IHRodW1iIGNvbmRpdGlvbmFsIGluc3RydWN0aW9uIHNob3VsZCBiZSBpbiBJVCBibG9jayAtLSBgc3RyZXhlcSByMixyMyxbcjRdJworIyAuLi4KKyMgfCBtYWtlWzFdOiAqKiogW2NvbmN1cnJlbnRfcXVldWUub10gRXJyb3IgMQorQVJNX0lOU1RSVUNUSU9OX1NFVCA9ICJhcm0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91aW0vdWltXzEuOC44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdWltL3VpbV8xLjguOC5iYgppbmRleCBjMTEzNmNkLi4wMzY2YWQ4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91aW0vdWltXzEuOC44LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VpbS91aW1fMS44LjguYmIKQEAgLTEzLDYgKzEzLDggQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICIwMWM3YmQ1ZDBkNGYzYTlmNmY1YmVmZTZmNTdhNDcwYiIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIzNDU5OWJiY2M0ZTVhYjg3ODMyMzcwNzYzZTM4YmU1MTAwOTg0YTY0MjM3NTU1ZTkyMzRhMWVhMjI1YTBmYWRjIgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMiCisKIERFUEVORFMgPSAiYW50aHkgZm9udGNvbmZpZyBsaWJ4ZnQgbGlieHQgZ2xpYi0yLjAgbmN1cnNlcyBpbnRsdG9vbCBsaWJlZGl0IgogREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBpbnRsdG9vbC1uYXRpdmUgZ3RrKyBndGsrMyB1aW0tbmF0aXZlIHRha2FvLWZvbnRzIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91cmlwYXJzZXIvdXJpcGFyc2VyXzAuOS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXJpcGFyc2VyL3VyaXBhcnNlcl8wLjkuMy5iYgppbmRleCA4YzI4YzlkLi5kYTUyYmI1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91cmlwYXJzZXIvdXJpcGFyc2VyXzAuOS4zLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VyaXBhcnNlci91cmlwYXJzZXJfMC45LjMuYmIKQEAgLTgsNiArOCw4IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiOTg3NGI2NGY2ZjRmZjY1NmYzZjY5NTk4ZTM4ZjEyYjciCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmNlZjM5ZDZlYWYxYTQ4NTA0ZWUwMjY0Y2U4NWYwNzg3NTgwNTdkYWZiMWVkZDBhODk4MTgzYjU1ZmY3NjAxNCIKIAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzIgorCiBpbmhlcml0IGNtYWtlCiAKIEVYVFJBX09FQ01BS0UgKz0gIi1EVVJJUEFSU0VSX0JVSUxEX0RPQ1M6Qk9PTD1PRkYgLURVUklQQVJTRVJfQlVJTERfVEVTVFM6Qk9PTD1PRkYiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91c2ItbW9kZXN3aXRjaC91c2ItbW9kZXN3aXRjaC1kYXRhXzIwMTcwODA2LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXNiLW1vZGVzd2l0Y2gvdXNiLW1vZGVzd2l0Y2gtZGF0YV8yMDE3MDgwNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFiZDk0MS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91c2ItbW9kZXN3aXRjaC91c2ItbW9kZXN3aXRjaC1kYXRhXzIwMTcwODA2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJEYXRhIGZpbGVzIGZvciB1c2Jtb2Rlc3dpdGNoIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1pbmhlcml0IGFsbGFyY2gKLQotREVQRU5EUyArPSAidGNsLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmRyYWlzYmVyZ2hvZi5kZS91c2JfbW9kZXN3aXRjaC8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gImZiNTBkMTViNTJlOTA5ZDc0MmRkMTZmMGE5ODgyMzE2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNlNDEzZWYyYTUwZTY0OGU5YzgxYmMzZWE2MTEwZTczMjRhOGJmOTgxMDM0ZmM5ZWM0NDY3ZDM1NjI1NjNjMmMiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQotfQotCi1SREVQRU5EU18ke1BOfSA9ICJ1c2ItbW9kZXN3aXRjaCAoPj0gMi40LjApIgotRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC8gXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vdXNiX21vZGVzd2l0Y2giCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91c2ItbW9kZXN3aXRjaC91c2ItbW9kZXN3aXRjaC1kYXRhXzIwMTkxMTI4LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXNiLW1vZGVzd2l0Y2gvdXNiLW1vZGVzd2l0Y2gtZGF0YV8yMDE5MTEyOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MzhjMGY5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXNiLW1vZGVzd2l0Y2gvdXNiLW1vZGVzd2l0Y2gtZGF0YV8yMDE5MTEyOC5iYgpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIkRhdGEgZmlsZXMgZm9yIHVzYm1vZGVzd2l0Y2giCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCisKK2luaGVyaXQgYWxsYXJjaAorCitERVBFTkRTICs9ICJ0Y2wtbmF0aXZlIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZHJhaXNiZXJnaG9mLmRlL3VzYl9tb2Rlc3dpdGNoLyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiZThmY2U3ZWI5NDljYmUxNmM2MWZiNzFiYWRlNGNjMTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2YwMzliNjA3OTFjMjFjN2NiMTVjNzk4NmNhYzg5NjUwZjA3NmRjMjc0Nzk4ZmEyNDIyMzFiOTEwNzg1ZWFmOSIKKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Cit9CisKK1JERVBFTkRTXyR7UE59ID0gInVzYi1tb2Rlc3dpdGNoICg+PSAyLjQuMCkiCitGSUxFU18ke1BOfSArPSAiJHtiYXNlX2xpYmRpcn0vdWRldi9ydWxlcy5kLyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS91c2JfbW9kZXN3aXRjaCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VzYi1tb2Rlc3dpdGNoL3VzYi1tb2Rlc3dpdGNoXzIuNS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXNiLW1vZGVzd2l0Y2gvdXNiLW1vZGVzd2l0Y2hfMi41LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzZTQwYjMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXNiLW1vZGVzd2l0Y2gvdXNiLW1vZGVzd2l0Y2hfMi41LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gIkEgbW9kZSBzd2l0Y2hpbmcgdG9vbCBmb3IgY29udHJvbGxpbmcgJ2ZsaXAgZmxvcCcgKG11bHRpcGxlIGRldmljZSkgVVNCIGdlYXIiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLURFUEVORFMgPSAibGlidXNiMSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmRyYWlzYmVyZ2hvZi5kZS91c2JfbW9kZXN3aXRjaC8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gIjE2YjlhOGVmYTFiZjhmYmQ3ZDU2MTI3NTdlYWU0ZjI2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImFiZmZhYzA5Yzg3ZWFjZDc4ZTEwMTU0NTk2N2RjMjVhZjdlOTg5NzQ1YjQyNzY3NTZkNDVkYmY0MDA4YTJlYTYiCi0KLWluaGVyaXQgcGtnY29uZmlnIHN5c3RlbWQKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInVzYl9tb2Rlc3dpdGNoQC5zZXJ2aWNlIgotCi1FWFRSQV9PRU1BS0UgPSAiVENMPSR7YmluZGlyfS90Y2xzaCIKLQotRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9ICR7c3lzY29uZmRpcn0gJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3VzYl9tb2Rlc3dpdGNoICR7c2JpbmRpcn0gJHtsb2NhbHN0YXRlZGlyfS9saWIvdXNiX21vZGVzd2l0Y2giCi1SREVQRU5EU18ke1BOfSA9ICJ0Y2wiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJ1c2ItbW9kZXN3aXRjaC1kYXRhIgotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwKLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vdXNiX21vZGVzd2l0Y2hALnNlcnZpY2UgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgZmkKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VzYi1tb2Rlc3dpdGNoL3VzYi1tb2Rlc3dpdGNoXzIuNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXNiLW1vZGVzd2l0Y2gvdXNiLW1vZGVzd2l0Y2hfMi42LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmFhZDM0MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VzYi1tb2Rlc3dpdGNoL3VzYi1tb2Rlc3dpdGNoXzIuNi4wLmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiQSBtb2RlIHN3aXRjaGluZyB0b29sIGZvciBjb250cm9sbGluZyAnZmxpcCBmbG9wJyAobXVsdGlwbGUgZGV2aWNlKSBVU0IgZ2VhciIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wOTE1NTZiZDZkMDE1NGNkNGMyZDE3YTFiZmM3MzgwYSIKKworREVQRU5EUyA9ICJsaWJ1c2IxIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZHJhaXNiZXJnaG9mLmRlL3VzYl9tb2Rlc3dpdGNoLyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiYmU3M2RjYzg0MDI1Nzk0MDgxYTFkNGQ0ZTVhNzVlNGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzIxNTIzNmU2YmFkYTZlNjU5ZmMxOTVhMzFkNjExZWEyOThhNGJkYjRkNTdhMGQ2OGM1NTNiNTY1ODVmOGJhMyIKKworaW5oZXJpdCBwa2djb25maWcgc3lzdGVtZAorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAidXNiX21vZGVzd2l0Y2hALnNlcnZpY2UiCisKK0VYVFJBX09FTUFLRSA9ICJUQ0w9JHtiaW5kaXJ9L3RjbHNoIgorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0gJHtzeXNjb25mZGlyfSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvdXNiX21vZGVzd2l0Y2ggJHtzYmluZGlyfSAke2xvY2Fsc3RhdGVkaXJ9L2xpYi91c2JfbW9kZXN3aXRjaCIKK1JERVBFTkRTXyR7UE59ID0gInRjbCIKK1JSRUNPTU1FTkRTXyR7UE59ID0gInVzYi1tb2Rlc3dpdGNoLWRhdGEiCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbAorICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtTfS91c2JfbW9kZXN3aXRjaEAuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBmaQorfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXNicGF0aC91c2JwYXRoL2NvbmZpZ3VyZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VzYnBhdGgvdXNicGF0aC9jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3MWU2YTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXNicGF0aC91c2JwYXRoL2NvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLUluZGV4OiB1c2JwYXRoL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHVzYnBhdGgub3JpZy9jb25maWd1cmUuYWMJMjAxNC0wNy0xNyAyMDo0MDoyNi4wMDAwMDAwMDAgKzAwMDAKLSsrKyB1c2JwYXRoL2NvbmZpZ3VyZS5hYwkyMDE0LTA3LTE4IDA3OjAxOjQwLjkzMzQ3NDQyMCArMDAwMAotQEAgLTEsNSArMSw1IEBACi0gQUNfSU5JVChbdXNicGF0aF0sWzAuMV0pCi0tQU1fSU5JVF9BVVRPTUFLRShBQ19QQUNLQUdFX05BTUUsIEFDX1BBQ0tBR0VfVkVSU0lPTikKLStBTV9JTklUX0FVVE9NQUtFKFtmb3JlaWduXSkKLSAKLSBBQ19QUk9HX0NDCi0gQUNfUFJPR19SQU5MSUIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VzYnBhdGgvdXNicGF0aF9zdm4uYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91c2JwYXRoL3VzYnBhdGhfc3ZuLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzljZDA0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3VzYnBhdGgvdXNicGF0aF9zdm4uYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkNvbnZlcnQgdGhlIHBoeXNpY2FsIGxvY2F0aW9ucyBvZiBhIFVTQiBkZXZpY2UgdG8vZnJvbSBpdHMgbnVtYmVyIgotQVVUSE9SID0gIldlcm5lciBBbG1lc2JlcmdlciA8d2VybmVyQG9wZW5tb2tvLm9yZz4iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3VzYnBhdGguYztlbmRsaW5lPTIwO21kNT0wYWE4YzdkMmFmOTExMGM3OGE5OWZiZjlhNTA0ZGMzZiIKLURFUEVORFMgPSAidmlydHVhbC9saWJ1c2IwIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAidmlydHVhbC9saWJ1c2IwLW5hdGl2ZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLVNSQ1JFViA9ICIzMTcyIgotUFYgPSAiMC4wK3N2bnIke1NSQ1BWfSIKLQotU1JDX1VSSSA9ICJzdm46Ly9zdm4ub3Blbm1va28ub3JnL3RydW5rL3NyYy9ob3N0O21vZHVsZT11c2JwYXRoO3Byb3RvY29sPWh0dHAgXAotICAgICAgICAgICBmaWxlOi8vY29uZmlndXJlLnBhdGNoIgotCi1TID0gIiR7V09SS0RJUn0vdXNicGF0aCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVJERVBFTkRTXyR7UE59ICs9ICJwZXJsIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXRvdWNoL3V0b3VjaC1ldmVtdS8wMDAxLUZpeC1idWlsZC1vbi0zMmJpdC1hcmNoZXMtd2l0aC02NGJpdC10aW1lX3QucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91dG91Y2gvdXRvdWNoLWV2ZW11LzAwMDEtRml4LWJ1aWxkLW9uLTMyYml0LWFyY2hlcy13aXRoLTY0Yml0LXRpbWVfdC5wYXRjaAppbmRleCA3MWJmNTcyLi43Y2ZkNDcwIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91dG91Y2gvdXRvdWNoLWV2ZW11LzAwMDEtRml4LWJ1aWxkLW9uLTMyYml0LWFyY2hlcy13aXRoLTY0Yml0LXRpbWVfdC5wYXRjaAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC91dG91Y2gvdXRvdWNoLWV2ZW11LzAwMDEtRml4LWJ1aWxkLW9uLTMyYml0LWFyY2hlcy13aXRoLTY0Yml0LXRpbWVfdC5wYXRjaApAQCAtMTIsOCArMTIsOCBAQAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIC0tLQogIHNyYy9ldmVtdS1pbXBsLmggfCAgNSArKysrKwotIHNyYy9ldmVtdS5jICAgICAgfCAxNiArKysrKysrKystLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorIHNyYy9ldmVtdS5jICAgICAgfCAyMCArKysrKysrKysrKystLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9ldmVtdS1pbXBsLmggYi9zcmMvZXZlbXUtaW1wbC5oCiBpbmRleCBhY2YyOTc2Li5jMDhkODYxIDEwMDY0NApAQCAtMzIsNyArMzIsNyBAQAogICNkZWZpbmUgRVZQTEFZX05CWVRFUwkoKEVWUExBWV9OQklUUyArIDcpIC8gOCkKICAKIGRpZmYgLS1naXQgYS9zcmMvZXZlbXUuYyBiL3NyYy9ldmVtdS5jCi1pbmRleCAyMTE4N2FmLi4xNjBjOTE1IDEwMDY0NAoraW5kZXggMjExODdhZi4uNzQ4OTQ0OSAxMDA2NDQKIC0tLSBhL3NyYy9ldmVtdS5jCiArKysgYi9zcmMvZXZlbXUuYwogQEAgLTM2Myw3ICszNjMsNyBAQCBpbnQgZXZlbXVfcmVhZChzdHJ1Y3QgZXZlbXVfZGV2aWNlICpkZXYsIEZJTEUgKmZwKQpAQCAtNTUsMTYgKzU1LDE5IEBACiAgCWV2LT50eXBlID0gdHlwZTsKICAJZXYtPmNvZGUgPSBjb2RlOwogIAlldi0+dmFsdWUgPSB2YWx1ZTsKLUBAIC00MTEsMTIgKzQxMSwxNCBAQCBpbnQgZXZlbXVfcmVhZF9ldmVudF9yZWFsdGltZShGSUxFICpmcCwgc3RydWN0IGlucHV0X2V2ZW50ICpldiwKK0BAIC00MTAsMTMgKzQxMSwxNiBAQCBpbnQgZXZlbXVfcmVhZF9ldmVudF9yZWFsdGltZShGSUxFICpmcCwgc3RydWN0IGlucHV0X2V2ZW50ICpldiwKKyAJCXJldHVybiByZXQ7CiAgCiAgCWlmIChldnRpbWUpIHsKLSAJCWlmICghZXZ0aW1lLT50dl9zZWMpCistCQlpZiAoIWV2dGltZS0+dHZfc2VjKQogLQkJCSpldnRpbWUgPSBldi0+dGltZTsKIC0JCXVzZWMgPSAxMDAwMDAwTCAqIChldi0+dGltZS50dl9zZWMgLSBldnRpbWUtPnR2X3NlYyk7CiAtCQl1c2VjICs9IGV2LT50aW1lLnR2X3VzZWMgLSBldnRpbWUtPnR2X3VzZWM7CisrCQlpZiAoIWV2dGltZS0+dHZfc2VjKSB7CiArCQkJZXZ0aW1lLT50dl9zZWMgPSBldi0+aW5wdXRfZXZlbnRfc2VjOwogKwkJCWV2dGltZS0+dHZfdXNlYyA9IGV2LT5pbnB1dF9ldmVudF91c2VjOwotKwkJdXNlYyA9IDEwMDAwMDBMICogKGV2LT5pbnB1dF9ldmVudF9zZWMgLSBldnRpbWUtPnR2X3NlYyk7CisrCQl9CisrCQl1c2VjID0gKGV2LT5pbnB1dF9ldmVudF9zZWMgLSBldnRpbWUtPnR2X3NlYykgKiAxMDAwMDAwTDsKICsJCXVzZWMgKz0gZXYtPmlucHV0X2V2ZW50X3VzZWMgLSBldnRpbWUtPnR2X3VzZWM7CiAgCQlpZiAodXNlYyA+IDUwMCkgewogIAkJCXVzbGVlcCh1c2VjKTsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3V0b3VjaC91dG91Y2gtZXZlbXVfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXRvdWNoL3V0b3VjaC1ldmVtdV9naXQuYmIKaW5kZXggNDFkMWNiZi4uN2M1YTczNCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXRvdWNoL3V0b3VjaC1ldmVtdV9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdXRvdWNoL3V0b3VjaC1ldmVtdV9naXQuYmIKQEAgLTEyLDcgKzEyLDcgQEAKICAgICAgICAgICAgIgogU1JDUkVWID0gIjk3NTJiNTBlOTIyNTcyZTRjZDIxNGFjNDVlZDk1ZTRlZTQxMGZlMjQiCiAKLVBWID0gIjEuMC41K2dpdCR7U1JDUFZ9IgorUFYgPSAiMS4wLjYrZ2l0JHtTUkNQVn0iCiAKIFMgPSAiJHtXT1JLRElSfS9naXQvIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92Ym94Z3Vlc3Rkcml2ZXJzL3Zib3hndWVzdGRyaXZlcnNfNi4xLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC92Ym94Z3Vlc3Rkcml2ZXJzL3Zib3hndWVzdGRyaXZlcnNfNi4xLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYyYzJiNTAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmJveGd1ZXN0ZHJpdmVycy92Ym94Z3Vlc3Rkcml2ZXJzXzYuMS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotU1VNTUFSWSA9ICJWaXJ0dWFsQm94IExpbnV4IEd1ZXN0IERyaXZlcnMiCi1TRUNUSU9OID0gImNvcmUiCi1MSUNFTlNFID0gIkdQTC0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9DT1BZSU5HO21kNT1lMTk3ZDU2NDFiYjM1YjI5ZDQ2Y2E4YzRiZjdmMjY2MCIKLQotREVQRU5EUyA9ICJ2aXJ0dWFsL2tlcm5lbCIKLQotaW5oZXJpdCBtb2R1bGUga2VybmVsLW1vZHVsZS1zcGxpdAotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODZ8cWVtdXg4Ni02NCkiCi0KLVZCT1hfTkFNRSA9ICJWaXJ0dWFsQm94LSR7UFZ9IgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC52aXJ0dWFsYm94Lm9yZy92aXJ0dWFsYm94LyR7UFZ9LyR7VkJPWF9OQU1FfS50YXIuYnoyIFwKLSAgICBmaWxlOi8vTWFrZWZpbGUudXRpbHMgXAotIgotU1JDX1VSSVttZDVzdW1dID0gImY0ZjQyZmQwOTg1NzU1NmIwNGI4MDNmYjk5Y2M2OTA1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQzMjY1NzZlODQyOGVhMzYyNjE5NGZjODI2NDYzNDc1NzZlOTRjNjFmMTFkNDEyYTY2OWZjOGExMGMyYTFlNjciCi0KLVMgPSAiJHtXT1JLRElSfS92Ym94X21vZHVsZSIKLQotZXhwb3J0IEJVSUxEX1RBUkdFVF9BUkNIPSIke0FSQ0h9IgotZXhwb3J0IEJVSUxEX1RBUkdFVF9BUkNIX3g4Ni02ND0iYW1kNjQiCi0KLUVYVFJBX09FTUFLRSArPSAiS0VSTl9ESVI9JyR7V09SS0RJUn0vJHtLRVJORUxfVkVSU0lPTn0vYnVpbGQnIEtCVUlMRF9WRVJCT1NFPTEiCi0KLSMgb3RoZXJ3aXNlIDUuMi4yMiBidWlsZHMganVzdCB2Ym94Z3Vlc3QKLU1BS0VfVEFSR0VUUyA9ICJhbGwiCi0KLWFkZHRhc2sgZXhwb3J0X3NvdXJjZXMgYWZ0ZXIgZG9fcGF0Y2ggYmVmb3JlIGRvX2NvbmZpZ3VyZQotCi1kb19leHBvcnRfc291cmNlcygpIHsKLSAgICBta2RpciAtcCAiJHtTfSIKLSAgICAke1dPUktESVJ9LyR7VkJPWF9OQU1FfS9zcmMvVkJveC9BZGRpdGlvbnMvbGludXgvZXhwb3J0X21vZHVsZXMuc2ggJHtUfS92Ym94X21vZHVsZXMudGFyLmd6Ci0gICAgdGFyIC1DICIke1N9IiAteHpmICR7VH0vdmJveF9tb2R1bGVzLnRhci5negotCi0gICAgIyBhZGQgYSBtb3VudCB1dGlsaXR5IHRvIHVzZSBzaGFyZWQgZm9sZGVyIGZyb20gVkJveCBBZGRpdGlvbiBTb3VyY2UgQ29kZQotICAgIG1rZGlyIC1wICIke1N9L3V0aWxzIgotICAgIGluc3RhbGwgJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vc3JjL1ZCb3gvQWRkaXRpb25zL2xpbnV4L3NoYXJlZGZvbGRlcnMvbW91bnQudmJveHNmLmMgJHtTfS91dGlscwotICAgIGluc3RhbGwgJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vc3JjL1ZCb3gvQWRkaXRpb25zL2xpbnV4L3NoYXJlZGZvbGRlcnMvdmJzZm1vdW50LmMgJHtTfS91dGlscwotICAgIGluc3RhbGwgJHtTfS8uLi9NYWtlZmlsZS51dGlscyAke1N9L3V0aWxzL01ha2VmaWxlCi0KLX0KLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgIyB2Ym94Z3Vlc3Rkcml2ZXJzLzUuMi42LXIwL3Zib3hfbW9kdWxlL3Zib3hndWVzdC9NYWtlZmlsZS5pbmNsdWRlLmhlYWRlcjo5OTogKioqIFRoZSB2YXJpYWJsZSBLRVJOX0RJUiBtdXN0IGJlIGEga2VybmVsIGJ1aWxkIGZvbGRlciBhbmQgZW5kIHdpdGggL2J1aWxkIHdpdGhvdXQgYSB0cmFpbGluZyBzbGFzaCwgb3IgS0VSTl9WRVIgbXVzdCBiZSBzZXQuICBTdG9wLgotICAgICMgdmJveGd1ZXN0ZHJpdmVycy81LjIuNi1yMC92Ym94X21vZHVsZS92Ym94Z3Vlc3QvTWFrZWZpbGUuaW5jbHVkZS5oZWFkZXI6MTA4OiAqKiogVGhlIGtlcm5lbCBidWlsZCBmb2xkZXIgcGF0aCBtdXN0IGVuZCBpbiA8dmVyc2lvbj4vYnVpbGQsIG9yIHRoZSB2YXJpYWJsZSBLRVJOX1ZFUiBtdXN0IGJlIHNldC4gIFN0b3AuCi0gICAgbWtkaXIgLXAgJHtXT1JLRElSfS8ke0tFUk5FTF9WRVJTSU9OfQotICAgIGxuIC1zbmYgJHtTVEFHSU5HX0tFUk5FTF9ESVJ9ICR7V09SS0RJUn0vJHtLRVJORUxfVkVSU0lPTn0vYnVpbGQKLX0KLQotIyBjb21waWxlIGFuZCBpbnN0YWxsIG1vdW50IHV0aWxpdHkKLWRvX2NvbXBpbGUoKSB7Ci0gICAgb2VfcnVubWFrZSBhbGwKLSAgICBvZV9ydW5tYWtlICdMRD0ke0NDfScgJ0xERkxBR1M9JHtMREZMQUdTfScgLUMgJHtTfS91dGlscwotICAgIGlmICEgWyAtZSB2Ym94Z3Vlc3Qua28gLWEgLWUgdmJveHNmLmtvIC1hIC1lIHZib3h2aWRlby5rbyBdIDsgdGhlbgotICAgICAgICBlY2hvICJFUlJPUjogT25lIG9mIHZib3gqLmtvIG1vZHVsZXMgd2Fzbid0IGJ1aWx0IgotICAgICAgICBleGl0IDEKLSAgICBmaQotfQotCi1tb2R1bGVfZG9faW5zdGFsbCgpIHsKLSAgICBNT0RVTEVfRElSPSR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L21vZHVsZXMvJHtLRVJORUxfVkVSU0lPTn0va2VybmVsL21pc2MKLSAgICBpbnN0YWxsIC1kICRNT0RVTEVfRElSCi0gICAgaW5zdGFsbCAtbSA2NDQgdmJveGd1ZXN0LmtvICRNT0RVTEVfRElSCi0gICAgaW5zdGFsbCAtbSA2NDQgdmJveHNmLmtvICRNT0RVTEVfRElSCi0gICAgaW5zdGFsbCAtbSA2NDQgdmJveHZpZGVvLmtvICRNT0RVTEVfRElSCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9zYmluZGlyfQotICAgIGluc3RhbGwgLW0gNzU1ICR7U30vdXRpbHMvbW91bnQudmJveHNmICR7RH0ke2Jhc2Vfc2JpbmRpcn0KLX0KLQotUEFDS0FHRVMgKz0gImtlcm5lbC1tb2R1bGUtdmJveGd1ZXN0IGtlcm5lbC1tb2R1bGUtdmJveHNmIGtlcm5lbC1tb2R1bGUtdmJveHZpZGVvIgotUlJFQ09NTUVORFNfJHtQTn0gKz0gImtlcm5lbC1tb2R1bGUtdmJveGd1ZXN0IGtlcm5lbC1tb2R1bGUtdmJveHNmIGtlcm5lbC1tb2R1bGUtdmJveHZpZGVvIgotCi1GSUxFU18ke1BOfSA9ICIke2Jhc2Vfc2JpbmRpcn0iCi0KLSMgYXV0b2xvYWQgaWYgaW5zdGFsbGVkCi1LRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJ2Ym94Z3Vlc3QgdmJveHNmIHZib3h2aWRlbyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Zib3hndWVzdGRyaXZlcnMvdmJveGd1ZXN0ZHJpdmVyc182LjEuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3Zib3hndWVzdGRyaXZlcnMvdmJveGd1ZXN0ZHJpdmVyc182LjEuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWIxZWUxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvdmJveGd1ZXN0ZHJpdmVycy92Ym94Z3Vlc3Rkcml2ZXJzXzYuMS42LmJiCkBAIC0wLDAgKzEsODEgQEAKK1NVTU1BUlkgPSAiVmlydHVhbEJveCBMaW51eCBHdWVzdCBEcml2ZXJzIgorU0VDVElPTiA9ICJjb3JlIgorTElDRU5TRSA9ICJHUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vQ09QWUlORzttZDU9ZTE5N2Q1NjQxYmIzNWIyOWQ0NmNhOGM0YmY3ZjI2NjAiCisKK0RFUEVORFMgPSAidmlydHVhbC9rZXJuZWwiCisKK2luaGVyaXQgbW9kdWxlIGtlcm5lbC1tb2R1bGUtc3BsaXQKKworQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjQpIgorCitWQk9YX05BTUUgPSAiVmlydHVhbEJveC0ke1BWfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQudmlydHVhbGJveC5vcmcvdmlydHVhbGJveC8ke1BWfS8ke1ZCT1hfTkFNRX0udGFyLmJ6MiBcCisgICAgZmlsZTovL01ha2VmaWxlLnV0aWxzIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmZTYzMjhkMjJkZmIyMGVhMzcyZGFhNGI1OGIxMjM3NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMDMxYzMwZDc3MGYyOGM1Zjg4NDA3MWFkOTMzZThjMWY4M2U2NWI5M2FhYmEwM2E0MDEyMDc3YzFkOTBhNTRmIgorCitTID0gIiR7V09SS0RJUn0vdmJveF9tb2R1bGUiCisKK2V4cG9ydCBCVUlMRF9UQVJHRVRfQVJDSD0iJHtBUkNIfSIKK2V4cG9ydCBCVUlMRF9UQVJHRVRfQVJDSF94ODYtNjQ9ImFtZDY0IgorCitFWFRSQV9PRU1BS0UgKz0gIktFUk5fRElSPScke1dPUktESVJ9LyR7S0VSTkVMX1ZFUlNJT059L2J1aWxkJyBLQlVJTERfVkVSQk9TRT0xIgorCisjIG90aGVyd2lzZSA1LjIuMjIgYnVpbGRzIGp1c3QgdmJveGd1ZXN0CitNQUtFX1RBUkdFVFMgPSAiYWxsIgorCithZGR0YXNrIGV4cG9ydF9zb3VyY2VzIGFmdGVyIGRvX3BhdGNoIGJlZm9yZSBkb19jb25maWd1cmUKKworZG9fZXhwb3J0X3NvdXJjZXMoKSB7CisgICAgbWtkaXIgLXAgIiR7U30iCisgICAgJHtXT1JLRElSfS8ke1ZCT1hfTkFNRX0vc3JjL1ZCb3gvQWRkaXRpb25zL2xpbnV4L2V4cG9ydF9tb2R1bGVzLnNoICR7VH0vdmJveF9tb2R1bGVzLnRhci5negorICAgIHRhciAtQyAiJHtTfSIgLXh6ZiAke1R9L3Zib3hfbW9kdWxlcy50YXIuZ3oKKworICAgICMgYWRkIGEgbW91bnQgdXRpbGl0eSB0byB1c2Ugc2hhcmVkIGZvbGRlciBmcm9tIFZCb3ggQWRkaXRpb24gU291cmNlIENvZGUKKyAgICBta2RpciAtcCAiJHtTfS91dGlscyIKKyAgICBpbnN0YWxsICR7V09SS0RJUn0vJHtWQk9YX05BTUV9L3NyYy9WQm94L0FkZGl0aW9ucy9saW51eC9zaGFyZWRmb2xkZXJzL21vdW50LnZib3hzZi5jICR7U30vdXRpbHMKKyAgICBpbnN0YWxsICR7V09SS0RJUn0vJHtWQk9YX05BTUV9L3NyYy9WQm94L0FkZGl0aW9ucy9saW51eC9zaGFyZWRmb2xkZXJzL3Zic2Ztb3VudC5jICR7U30vdXRpbHMKKyAgICBpbnN0YWxsICR7U30vLi4vTWFrZWZpbGUudXRpbHMgJHtTfS91dGlscy9NYWtlZmlsZQorCit9CisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICMgdmJveGd1ZXN0ZHJpdmVycy81LjIuNi1yMC92Ym94X21vZHVsZS92Ym94Z3Vlc3QvTWFrZWZpbGUuaW5jbHVkZS5oZWFkZXI6OTk6ICoqKiBUaGUgdmFyaWFibGUgS0VSTl9ESVIgbXVzdCBiZSBhIGtlcm5lbCBidWlsZCBmb2xkZXIgYW5kIGVuZCB3aXRoIC9idWlsZCB3aXRob3V0IGEgdHJhaWxpbmcgc2xhc2gsIG9yIEtFUk5fVkVSIG11c3QgYmUgc2V0LiAgU3RvcC4KKyAgICAjIHZib3hndWVzdGRyaXZlcnMvNS4yLjYtcjAvdmJveF9tb2R1bGUvdmJveGd1ZXN0L01ha2VmaWxlLmluY2x1ZGUuaGVhZGVyOjEwODogKioqIFRoZSBrZXJuZWwgYnVpbGQgZm9sZGVyIHBhdGggbXVzdCBlbmQgaW4gPHZlcnNpb24+L2J1aWxkLCBvciB0aGUgdmFyaWFibGUgS0VSTl9WRVIgbXVzdCBiZSBzZXQuICBTdG9wLgorICAgIG1rZGlyIC1wICR7V09SS0RJUn0vJHtLRVJORUxfVkVSU0lPTn0KKyAgICBsbiAtc25mICR7U1RBR0lOR19LRVJORUxfRElSfSAke1dPUktESVJ9LyR7S0VSTkVMX1ZFUlNJT059L2J1aWxkCit9CisKKyMgY29tcGlsZSBhbmQgaW5zdGFsbCBtb3VudCB1dGlsaXR5Citkb19jb21waWxlKCkgeworICAgIG9lX3J1bm1ha2UgYWxsCisgICAgb2VfcnVubWFrZSAnTEQ9JHtDQ30nICdMREZMQUdTPSR7TERGTEFHU30nIC1DICR7U30vdXRpbHMKKyAgICBpZiAhIFsgLWUgdmJveGd1ZXN0LmtvIC1hIC1lIHZib3hzZi5rbyAtYSAtZSB2Ym94dmlkZW8ua28gXSA7IHRoZW4KKyAgICAgICAgZWNobyAiRVJST1I6IE9uZSBvZiB2Ym94Ki5rbyBtb2R1bGVzIHdhc24ndCBidWlsdCIKKyAgICAgICAgZXhpdCAxCisgICAgZmkKK30KKworbW9kdWxlX2RvX2luc3RhbGwoKSB7CisgICAgTU9EVUxFX0RJUj0ke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9tb2R1bGVzLyR7S0VSTkVMX1ZFUlNJT059L2tlcm5lbC9taXNjCisgICAgaW5zdGFsbCAtZCAkTU9EVUxFX0RJUgorICAgIGluc3RhbGwgLW0gNjQ0IHZib3hndWVzdC5rbyAkTU9EVUxFX0RJUgorICAgIGluc3RhbGwgLW0gNjQ0IHZib3hzZi5rbyAkTU9EVUxFX0RJUgorICAgIGluc3RhbGwgLW0gNjQ0IHZib3h2aWRlby5rbyAkTU9EVUxFX0RJUgorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2Vfc2JpbmRpcn0KKyAgICBpbnN0YWxsIC1tIDc1NSAke1N9L3V0aWxzL21vdW50LnZib3hzZiAke0R9JHtiYXNlX3NiaW5kaXJ9Cit9CisKK1BBQ0tBR0VTICs9ICJrZXJuZWwtbW9kdWxlLXZib3hndWVzdCBrZXJuZWwtbW9kdWxlLXZib3hzZiBrZXJuZWwtbW9kdWxlLXZib3h2aWRlbyIKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJrZXJuZWwtbW9kdWxlLXZib3hndWVzdCBrZXJuZWwtbW9kdWxlLXZib3hzZiBrZXJuZWwtbW9kdWxlLXZib3h2aWRlbyIKKworRklMRVNfJHtQTn0gPSAiJHtiYXNlX3NiaW5kaXJ9IgorCisjIGF1dG9sb2FkIGlmIGluc3RhbGxlZAorS0VSTkVMX01PRFVMRV9BVVRPTE9BRCArPSAidmJveGd1ZXN0IHZib3hzZiB2Ym94dmlkZW8iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMS8wMDAxLUNvcnJlY3QtY2xhbmctY29tcGlsZXItZmxhZ3MucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMS8wMDAxLUNvcnJlY3QtY2xhbmctY29tcGlsZXItZmxhZ3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYxZDAzN2YuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjEvMDAwMS1Db3JyZWN0LWNsYW5nLWNvbXBpbGVyLWZsYWdzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA1Y2NhZmYzNTEyOTdiY2EwZTI1NGJiZmQ2NmUzZjAzZmVmOWQ5Yzc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTAgSmFuIDIwMjAgMjE6NTQ6MzkgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gQ29ycmVjdCBjbGFuZyBjb21waWxlciBmbGFncwotCi1GaXggbWlzcGxhY2VkIHF1b3RlcywgdGhpcyB3YXMgbGVhZGluZyB0byBzcHVyaW91cyA7IGluIGNvbXBpbGVyIGNtZGxpbmUKLVJlbW92ZSBkZW1hbmRpbmcgbGliYysrLCBjbGFuZyBjYW4gbGluayB3aXRoIGJvdGggbGliYysrIGFuZCBsaWJzdGRjKysKLWFuZCBwbGF0Zm9ybXMgaGF2ZSB0aGVpciBvd24gZGVmYXVsdHMsIHVzZXIgY2FuIGRlbWFuZCBub24gZGVmYXVsdHMgdmlhCi1hZGRpbmcgaXQgdG8gY21ha2UgZmxhZ3MKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS96YXBob3lkL3dlYnNvY2tldHBwL3B1bGwvODU5XQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIENNYWtlTGlzdHMudHh0IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggMmQxMzExNy4uYzE3MzU0YSAxMDA2NDQKLS0tLSBhL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9DTWFrZUxpc3RzLnR4dAotQEAgLTE1MCw3ICsxNTAsNyBAQCBpZiAoQlVJTERfVEVTVFMgT1IgQlVJTERfRVhBTVBMRVMpCi0gICAgICAgICBlbmRpZigpCi0gICAgICAgICBzZXQgKFdFQlNPQ0tFVFBQX1BMQVRGT1JNX1RMU19MSUJTIHNzbCBjcnlwdG8pCi0gICAgICAgICBzZXQgKFdFQlNPQ0tFVFBQX0JPT1NUX0xJQlMgc3lzdGVtIHRocmVhZCkKLS0gICAgICAgIHNldCAoQ01BS0VfQ1hYX0ZMQUdTICR7Q01BS0VfQ1hYX0ZMQUdTfSAiLXN0ZD1jKysweCAtc3RkbGliPWxpYmMrKyIpICMgdG9kbzogaXMgbGliYysrIHJlYWxseSBuZWVkZWQgaGVyZT8KLSsgICAgICAgIHNldCAoQ01BS0VfQ1hYX0ZMQUdTICIke0NNQUtFX0NYWF9GTEFHU30gLXN0ZD1jKysweCIpCi0gICAgICAgICBpZiAoTk9UIEFQUExFKQotICAgICAgICAgICAgIGFkZF9kZWZpbml0aW9ucyAoLUROREVCVUcgLVdhbGwgLVduby1wYWRkZWQpICMgdG9kbzogc2hvdWxkIHdlIHVzZSBDTUFLRV9DX0ZMQUdTIGZvciB0aGVzZT8KLSAgICAgICAgIGVuZGlmICgpCi0tLSAKLTIuMjQuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMS8wMDAxLVJlcGxhY2UtbWFrZV9zaGFyZWQtd2l0aC1uZXctaW4tc29tZS1jYXNlcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4xLzAwMDEtUmVwbGFjZS1tYWtlX3NoYXJlZC13aXRoLW5ldy1pbi1zb21lLWNhc2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzgyODVkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4xLzAwMDEtUmVwbGFjZS1tYWtlX3NoYXJlZC13aXRoLW5ldy1pbi1zb21lLWNhc2VzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzggKzAsMCBAQAotRnJvbSAwODBmYzM3OTQ5MTE0MTg0ZDQ4MzJmN2FjZmZlMjYxMzc0NTgzM2YzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3RlZmFuIEZsb2VyZW4gPDQyNzMxOTA2K3N0ZWZhbi1mbG9lcmVuQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLURhdGU6IFR1ZSwgMTYgQXByIDIwMTkgMDg6Mzg6MDEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIFJlcGxhY2UgbWFrZV9zaGFyZWQgd2l0aCBuZXcgaW4gc29tZSBjYXNlcwotCi1SZXBsYWNlIG1ha2Vfc2hhcmVkIGZvciBhc2lvIHR5cGVzIHRoYXQgdGFrZSBhIGxpYjo6cmVmIGFzIGEgcGFyYW1ldGVyLgotVGhpcyBzaG91bGQgZml4IHRoZSBBU0lPIGNoYW5nZSAoYm9vc3RvcmcvYXNpb0A1OTA2NmQ4KSBmb3IgMS43MCwKLXdoaWxlIGtlZXBpbmcgaXQgYmFja3dhcmRzIGNvbXBhdGlibGUgdG8gb2xkZXIgYm9vc3QgdmVyc2lvbnMuCi0tLS0KLSB3ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9jb25uZWN0aW9uLmhwcCAgICB8IDcgKysrKy0tLQotIHdlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL2VuZHBvaW50LmhwcCAgICAgIHwgMyArLS0KLSB3ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9zZWN1cml0eS9ub25lLmhwcCB8IDMgKy0tCi0gd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vc2VjdXJpdHkvdGxzLmhwcCAgfCAzICstLQotIDQgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vY29ubmVjdGlvbi5ocHAgYi93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9jb25uZWN0aW9uLmhwcAotaW5kZXggNjBmODhhNy4uMWNjZGE4ZiAxMDA2NDQKLS0tLSBhL3dlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL2Nvbm5lY3Rpb24uaHBwCi0rKysgYi93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9jb25uZWN0aW9uLmhwcAotQEAgLTMxMSw5ICszMTEsMTAgQEAgcHVibGljOgotICAgICAgKiBuZWVkZWQuCi0gICAgICAqLwotICAgICB0aW1lcl9wdHIgc2V0X3RpbWVyKGxvbmcgZHVyYXRpb24sIHRpbWVyX2hhbmRsZXIgY2FsbGJhY2spIHsKLS0gICAgICAgIHRpbWVyX3B0ciBuZXdfdGltZXIgPSBsaWI6Om1ha2Vfc2hhcmVkPGxpYjo6YXNpbzo6c3RlYWR5X3RpbWVyPigKLS0gICAgICAgICAgICBsaWI6OnJlZigqbV9pb19zZXJ2aWNlKSwKLS0gICAgICAgICAgICBsaWI6OmFzaW86Om1pbGxpc2Vjb25kcyhkdXJhdGlvbikKLSsgICAgICAgIHRpbWVyX3B0ciBuZXdfdGltZXIoCi0rICAgICAgICAgICAgbmV3IGxpYjo6YXNpbzo6c3RlYWR5X3RpbWVyKAotKyAgICAgICAgICAgICAgICAqbV9pb19zZXJ2aWNlLAotKyAgICAgICAgICAgICAgICBsaWI6OmFzaW86Om1pbGxpc2Vjb25kcyhkdXJhdGlvbikpCi0gICAgICAgICApOwotIAotICAgICAgICAgaWYgKGNvbmZpZzo6ZW5hYmxlX211bHRpdGhyZWFkaW5nKSB7Ci1kaWZmIC0tZ2l0IGEvd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vZW5kcG9pbnQuaHBwIGIvd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vZW5kcG9pbnQuaHBwCi1pbmRleCBkZGFiMmM3Li40YjcxOWE5IDEwMDY0NAotLS0tIGEvd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vZW5kcG9pbnQuaHBwCi0rKysgYi93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9lbmRwb2ludC5ocHAKLUBAIC0xOTUsOCArMTk1LDcgQEAgcHVibGljOgotIAotICAgICAgICAgbV9pb19zZXJ2aWNlID0gcHRyOwotICAgICAgICAgbV9leHRlcm5hbF9pb19zZXJ2aWNlID0gdHJ1ZTsKLS0gICAgICAgIG1fYWNjZXB0b3IgPSBsaWI6Om1ha2Vfc2hhcmVkPGxpYjo6YXNpbzo6aXA6OnRjcDo6YWNjZXB0b3I+KAotLSAgICAgICAgICAgIGxpYjo6cmVmKCptX2lvX3NlcnZpY2UpKTsKLSsgICAgICAgIG1fYWNjZXB0b3IucmVzZXQobmV3IGxpYjo6YXNpbzo6aXA6OnRjcDo6YWNjZXB0b3IoKm1faW9fc2VydmljZSkpOwotIAotICAgICAgICAgbV9zdGF0ZSA9IFJFQURZOwotICAgICAgICAgZWMgPSBsaWI6OmVycm9yX2NvZGUoKTsKLWRpZmYgLS1naXQgYS93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9zZWN1cml0eS9ub25lLmhwcCBiL3dlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL3NlY3VyaXR5L25vbmUuaHBwCi1pbmRleCA1YzgyOTNkLi42YzdkMzUyIDEwMDY0NAotLS0tIGEvd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vc2VjdXJpdHkvbm9uZS5ocHAKLSsrKyBiL3dlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL3NlY3VyaXR5L25vbmUuaHBwCi1AQCAtMTY4LDggKzE2OCw3IEBAIHByb3RlY3RlZDoKLSAgICAgICAgICAgICByZXR1cm4gc29ja2V0OjptYWtlX2Vycm9yX2NvZGUoc29ja2V0OjplcnJvcjo6aW52YWxpZF9zdGF0ZSk7Ci0gICAgICAgICB9Ci0gCi0tICAgICAgICBtX3NvY2tldCA9IGxpYjo6bWFrZV9zaGFyZWQ8bGliOjphc2lvOjppcDo6dGNwOjpzb2NrZXQ+KAotLSAgICAgICAgICAgIGxpYjo6cmVmKCpzZXJ2aWNlKSk7Ci0rICAgICAgICBtX3NvY2tldC5yZXNldChuZXcgbGliOjphc2lvOjppcDo6dGNwOjpzb2NrZXQoKnNlcnZpY2UpKTsKLSAKLSAgICAgICAgIGlmIChtX3NvY2tldF9pbml0X2hhbmRsZXIpIHsKLSAgICAgICAgICAgICBtX3NvY2tldF9pbml0X2hhbmRsZXIobV9oZGwsICptX3NvY2tldCk7Ci1kaWZmIC0tZ2l0IGEvd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vc2VjdXJpdHkvdGxzLmhwcCBiL3dlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL3NlY3VyaXR5L3Rscy5ocHAKLWluZGV4IGM3NmZkOWEuLjA0YWMzNzkgMTAwNjQ0Ci0tLS0gYS93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9zZWN1cml0eS90bHMuaHBwCi0rKysgYi93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9zZWN1cml0eS90bHMuaHBwCi1AQCAtMTkzLDggKzE5Myw3IEBAIHByb3RlY3RlZDoKLSAgICAgICAgIGlmICghbV9jb250ZXh0KSB7Ci0gICAgICAgICAgICAgcmV0dXJuIHNvY2tldDo6bWFrZV9lcnJvcl9jb2RlKHNvY2tldDo6ZXJyb3I6OmludmFsaWRfdGxzX2NvbnRleHQpOwotICAgICAgICAgfQotLSAgICAgICAgbV9zb2NrZXQgPSBsaWI6Om1ha2Vfc2hhcmVkPHNvY2tldF90eXBlPigKLS0gICAgICAgICAgICBfV0VCU09DS0VUUFBfUkVGKCpzZXJ2aWNlKSxsaWI6OnJlZigqbV9jb250ZXh0KSk7Ci0rICAgICAgICBtX3NvY2tldC5yZXNldChuZXcgc29ja2V0X3R5cGUoKnNlcnZpY2UsICptX2NvbnRleHQpKTsKLSAKLSAgICAgICAgIGlmIChtX3NvY2tldF9pbml0X2hhbmRsZXIpIHsKLSAgICAgICAgICAgICBtX3NvY2tldF9pbml0X2hhbmRsZXIobV9oZGwsIGdldF9zb2NrZXQoKSk7Ci0tLSAKLTIuMjMuMAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMS8wMDAyLUZpeC1taXNzZWQtZW50cmllcy1maXgtdGVzdGluZy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4xLzAwMDItRml4LW1pc3NlZC1lbnRyaWVzLWZpeC10ZXN0aW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NjJkMDg5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4xLzAwMDItRml4LW1pc3NlZC1lbnRyaWVzLWZpeC10ZXN0aW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjYgKzAsMCBAQAotRnJvbSAxMmFiNjAzY2E5NjJlODM1OTE5ODVhNTg1NDUxZDMzNTQ0ZDc1ZDU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3RlZmFuIEZsb2VyZW4gPDQyNzMxOTA2K3N0ZWZhbi1mbG9lcmVuQHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLURhdGU6IFdlZCwgMTcgQXByIDIwMTkgMTA6MDY6MTggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIEZpeCBtaXNzZWQgZW50cmllczsgZml4IHRlc3RpbmcKLQotLS0tCi0gQ01ha2VMaXN0cy50eHQgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vY29ubmVjdGlvbi5ocHAgfCAzICstLQotIHdlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL2VuZHBvaW50LmhwcCAgIHwgNyArKy0tLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0Ci1pbmRleCAyNzg2YWJhLi45NTFkZTk3IDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtMjAyLDcgKzIwMiw3IEBAIGlmIChCVUlMRF9URVNUUyBPUiBCVUlMRF9FWEFNUExFUykKLSAJZW5kaWYgKCkKLSAKLSAgICAgaWYgKE5PVCBCb29zdF9VU0VfU1RBVElDX0xJQlMpCi0tICAgICAgICBhZGRfZGVmaW5pdGlvbnMgKC9EQk9PU1RfVEVTVF9EWU5fTElOSykKLSsgICAgICAgIGFkZF9kZWZpbml0aW9ucyAoLURCT09TVF9URVNUX0RZTl9MSU5LKQotICAgICBlbmRpZiAoKQotIAotICAgICBzZXQgKEJvb3N0X0ZJTkRfUkVRVUlSRUQgVFJVRSkKLWRpZmYgLS1naXQgYS93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9jb25uZWN0aW9uLmhwcCBiL3dlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL2Nvbm5lY3Rpb24uaHBwCi1pbmRleCAxY2NkYThmLi41N2RkYTc0IDEwMDY0NAotLS0tIGEvd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vY29ubmVjdGlvbi5ocHAKLSsrKyBiL3dlYnNvY2tldHBwL3RyYW5zcG9ydC9hc2lvL2Nvbm5lY3Rpb24uaHBwCi1AQCAtNDYyLDggKzQ2Miw3IEBAIHByb3RlY3RlZDoKLSAgICAgICAgIG1faW9fc2VydmljZSA9IGlvX3NlcnZpY2U7Ci0gCi0gICAgICAgICBpZiAoY29uZmlnOjplbmFibGVfbXVsdGl0aHJlYWRpbmcpIHsKLS0gICAgICAgICAgICBtX3N0cmFuZCA9IGxpYjo6bWFrZV9zaGFyZWQ8bGliOjphc2lvOjppb19zZXJ2aWNlOjpzdHJhbmQ+KAotLSAgICAgICAgICAgICAgICBsaWI6OnJlZigqaW9fc2VydmljZSkpOwotKyAgICAgICAgICAgIG1fc3RyYW5kLnJlc2V0KG5ldyBsaWI6OmFzaW86OmlvX3NlcnZpY2U6OnN0cmFuZCgqaW9fc2VydmljZSkpOwotICAgICAgICAgfQotIAotICAgICAgICAgbGliOjplcnJvcl9jb2RlIGVjID0gc29ja2V0X2Nvbl90eXBlOjppbml0X2FzaW8oaW9fc2VydmljZSwgbV9zdHJhbmQsCi1kaWZmIC0tZ2l0IGEvd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vZW5kcG9pbnQuaHBwIGIvd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vZW5kcG9pbnQuaHBwCi1pbmRleCA0YjcxOWE5Li45NDUwOWFkIDEwMDY0NAotLS0tIGEvd2Vic29ja2V0cHAvdHJhbnNwb3J0L2FzaW8vZW5kcG9pbnQuaHBwCi0rKysgYi93ZWJzb2NrZXRwcC90cmFuc3BvcnQvYXNpby9lbmRwb2ludC5ocHAKLUBAIC02ODcsOSArNjg3LDcgQEAgcHVibGljOgotICAgICAgKiBAc2luY2UgMC4zLjAKLSAgICAgICovCi0gICAgIHZvaWQgc3RhcnRfcGVycGV0dWFsKCkgewotLSAgICAgICAgbV93b3JrID0gbGliOjptYWtlX3NoYXJlZDxsaWI6OmFzaW86OmlvX3NlcnZpY2U6Ondvcms+KAotLSAgICAgICAgICAgIGxpYjo6cmVmKCptX2lvX3NlcnZpY2UpCi0tICAgICAgICApOwotKyAgICAgICAgbV93b3JrLnJlc2V0KG5ldyBsaWI6OmFzaW86OmlvX3NlcnZpY2U6OndvcmsoKm1faW9fc2VydmljZSkpOwotICAgICB9Ci0gCi0gICAgIC8vLyBDbGVhcnMgdGhlIGVuZHBvaW50J3MgcGVycGV0dWFsIGZsYWcsIGFsbG93aW5nIGl0IHRvIGV4aXQgd2hlbiBlbXB0eQotQEAgLTg1Myw4ICs4NTEsNyBAQCBwcm90ZWN0ZWQ6Ci0gCi0gICAgICAgICAvLyBDcmVhdGUgYSByZXNvbHZlcgotICAgICAgICAgaWYgKCFtX3Jlc29sdmVyKSB7Ci0tICAgICAgICAgICAgbV9yZXNvbHZlciA9IGxpYjo6bWFrZV9zaGFyZWQ8bGliOjphc2lvOjppcDo6dGNwOjpyZXNvbHZlcj4oCi0tICAgICAgICAgICAgICAgIGxpYjo6cmVmKCptX2lvX3NlcnZpY2UpKTsKLSsgICAgICAgICAgICBtX3Jlc29sdmVyLnJlc2V0KG5ldyBsaWI6OmFzaW86OmlwOjp0Y3A6OnJlc29sdmVyKCptX2lvX3NlcnZpY2UpKTsKLSAgICAgICAgIH0KLSAKLSAgICAgICAgIHRjb24tPnNldF91cmkodSk7Ci0tLSAKLTIuMjMuMAotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMS83NzEucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMS83NzEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNjVlZmIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjEvNzcxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotRnJvbSA0YmNjZmIwNGEyNjQ3MDRlYzliODBiYTMzMmVlMWNmMTEzY2U3ZjFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP1dvbGZnYW5nPTIwU3Q9QzM9QjZnZ2w/PSA8YzcyNTc4QHlhaG9vLmRlPgotRGF0ZTogVGh1LCAxIE5vdiAyMDE4IDIwOjU4OjEwICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVwZGF0ZSB2ZXJzaW9uIG51bWJlciBpbiBDTWFrZUxpc3RzLnR4dCB0byAwLjguMQotCi0tLS0KLSBDTWFrZUxpc3RzLnR4dCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL0NNYWtlTGlzdHMudHh0IGIvQ01ha2VMaXN0cy50eHQKLWluZGV4IDI3ODZhYmE5Li4yZDEzMTE3YiAxMDA2NDQKLS0tLSBhL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9DTWFrZUxpc3RzLnR4dAotQEAgLTI0LDcgKzI0LDcgQEAgZW5kaWYgKCkKLSAjIyMjIyMjIyMjIyMgUHJvamVjdCBuYW1lIGFuZCB2ZXJzaW9uCi0gc2V0IChXRUJTT0NLRVRQUF9NQUpPUl9WRVJTSU9OIDApCi0gc2V0IChXRUJTT0NLRVRQUF9NSU5PUl9WRVJTSU9OIDgpCi0tc2V0IChXRUJTT0NLRVRQUF9QQVRDSF9WRVJTSU9OIDApCi0rc2V0IChXRUJTT0NLRVRQUF9QQVRDSF9WRVJTSU9OIDEpCi0gc2V0IChXRUJTT0NLRVRQUF9WRVJTSU9OICR7V0VCU09DS0VUUFBfTUFKT1JfVkVSU0lPTn0uJHtXRUJTT0NLRVRQUF9NSU5PUl9WRVJTSU9OfS4ke1dFQlNPQ0tFVFBQX1BBVENIX1ZFUlNJT059KQotIAotIGlmKFBPTElDWSBDTVAwMDQ4KQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjEvODQyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjEvODQyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMzY1MWU5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4xLzg0Mi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gN2Y3ZTJiZTAxYjRmYTY1ODBjZTI3ZjY2OGU2MWFkZjM3ODUzYWQ2NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNjaHJpanZlcnMgTHVjIDxiZWdhc3VzQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggU2VwIDIwMTkgMTE6MzU6NDMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4ICJpbmNsdWRlIiBkaXJlY3RvcnkgaW5zdGFsbGF0aW9uLiB0aGUgdmFyaWFibGUKLSBJTlNUQUxMX0lOQ0xVREVfRElSIGFscmVhZHkgZXhpc3RzLCBhbmQgZGVmYXVsdHMgdG8gaW5jbHVkZSBpZiBub3QKLSBzcGVjaWZpY2llZCBvdGhlcndpc2UuIFVzaW5nIGl0IGFsbG93cyBwZW9wbGUgdG8gY3VzdG9taXplIHRoZSBpbnN0YWxsYXRpb24KLSBmcm9tIG91dHNpZGUsIGZpeGluZyBpc3N1ZXMgd2l0aCBvdGhlciBPUyBsaWtlIEhhaWt1Ci0KLVNpZ25lZC1vZmYtYnk6IEdpYW5mcmFuY28gQ29zdGFtYWduYSA8Y29zdGFtYWduYWdpYW5mcmFuY29AeWFob28uaXQ+Ci1TaWduZWQtb2ZmLWJ5OiBHaWFuZnJhbmNvIENvc3RhbWFnbmEgPGxvY3V0dXNvZmJvcmdAZGViaWFuLm9yZz4KLS0tLQotIGNtYWtlL0NNYWtlSGVscGVycy5jbWFrZSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NtYWtlL0NNYWtlSGVscGVycy5jbWFrZSBiL2NtYWtlL0NNYWtlSGVscGVycy5jbWFrZQotaW5kZXggMTQ3OGY0Yi4uZjYwMzYzMiAxMDA2NDQKLS0tLSBhL2NtYWtlL0NNYWtlSGVscGVycy5jbWFrZQotKysrIGIvY21ha2UvQ01ha2VIZWxwZXJzLmNtYWtlCi1AQCAtODAsNyArODAsNyBAQCBtYWNybyAoZmluYWxfdGFyZ2V0KQotICAgICBlbmRpZiAoKQotIAotICAgICBpbnN0YWxsIChESVJFQ1RPUlkgJHtDTUFLRV9TT1VSQ0VfRElSfS8ke1RBUkdFVF9OQU1FfQotLSAgICAgICAgICAgICBERVNUSU5BVElPTiBpbmNsdWRlLwotKyAgICAgICAgICAgICBERVNUSU5BVElPTiAke0lOU1RBTExfSU5DTFVERV9ESVJ9LwotICAgICAgICAgICAgICBGSUxFU19NQVRDSElORyBQQVRURVJOICIqLmhwcCoiKQotIGVuZG1hY3JvICgpCi0gCi0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMS84NTUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMS84NTUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExZWU2MjcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjEvODU1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotRnJvbSAzNTkwZDc3YmI5NzUzZmJiZjA3NjAyOGUyMzk1MTgyY2VkNjQ2NmJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogR2lhbmZyYW5jbyBDb3N0YW1hZ25hIDxjb3N0YW1hZ25hZ2lhbmZyYW5jb0B5YWhvby5pdD4KLURhdGU6IFdlZCwgOCBKYW4gMjAyMCAxNzo1OTo0OCArMDEwMAotU3ViamVjdDogW1BBVENIXSBGaXggY21ha2UgZmluZCBib29zdCB3aXRoIHZlcnNpb24gPj0gMS43MQotCi1Gb3Igc29tZSByZWFzb25zICJzeXN0ZW07dGhyZWFkO3JhbmRvbTt1bml0X3Rlc3RfZnJhbWV3b3JrIiB3YXMgc2VlbiBhcyBhIHNpbmdsZSBtb2R1bGUsIGJlY2F1c2Ugb2YgdGhlIHF1b3Rlcy4KLS0tLQotIENNYWtlTGlzdHMudHh0IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAotaW5kZXggMmQxMzExN2IuLjlhNDZiYzEwIDEwMDY0NAotLS0tIGEvQ01ha2VMaXN0cy50eHQKLSsrKyBiL0NNYWtlTGlzdHMudHh0Ci1AQCAtMjEzLDcgKzIxMyw3IEBAIGlmIChCVUlMRF9URVNUUyBPUiBCVUlMRF9FWEFNUExFUykKLSAgICAgc2V0IChCb29zdF9VU0VfTVVMVElUSFJFQURFRCBUUlVFKQotICAgICBzZXQgKEJvb3N0X0FERElUSU9OQUxfVkVSU0lPTlMgIjEuMzkuMCIgIjEuNDAuMCIgIjEuNDEuMCIgIjEuNDIuMCIgIjEuNDMuMCIgIjEuNDQuMCIgIjEuNDYuMSIpICMgdG9kbzogc29tZW9uZSB3aG8ga25vd3MgYmV0dGVyIHNwZXNpZnkgdGhlc2UhCi0gCi0tICAgIGZpbmRfcGFja2FnZSAoQm9vc3QgMS4zOS4wIENPTVBPTkVOVFMgIiR7V0VCU09DS0VUUFBfQk9PU1RfTElCU30iKQotKyAgICBmaW5kX3BhY2thZ2UgKEJvb3N0IDEuMzkuMCBDT01QT05FTlRTICR7V0VCU09DS0VUUFBfQk9PU1RfTElCU30pCi0gCi0gICAgIGlmIChCb29zdF9GT1VORCkKLSAgICAgICAgICMgQm9vc3QgaXMgYSBwcm9qZWN0IHdpZGUgZ2xvYmFsIGRlcGVuZGVuY3kuCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMi8wMDAxLUNvcnJlY3QtY2xhbmctY29tcGlsZXItZmxhZ3MucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMi8wMDAxLUNvcnJlY3QtY2xhbmctY29tcGlsZXItZmxhZ3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E5OWRhZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4yLzAwMDEtQ29ycmVjdC1jbGFuZy1jb21waWxlci1mbGFncy5wYXRjaApAQCAtMCwwICsxLDMyIEBACitGcm9tIDVjY2FmZjM1MTI5N2JjYTBlMjU0YmJmZDY2ZTNmMDNmZWY5ZDljNzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxMCBKYW4gMjAyMCAyMTo1NDozOSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBDb3JyZWN0IGNsYW5nIGNvbXBpbGVyIGZsYWdzCisKK0ZpeCBtaXNwbGFjZWQgcXVvdGVzLCB0aGlzIHdhcyBsZWFkaW5nIHRvIHNwdXJpb3VzIDsgaW4gY29tcGlsZXIgY21kbGluZQorUmVtb3ZlIGRlbWFuZGluZyBsaWJjKyssIGNsYW5nIGNhbiBsaW5rIHdpdGggYm90aCBsaWJjKysgYW5kIGxpYnN0ZGMrKworYW5kIHBsYXRmb3JtcyBoYXZlIHRoZWlyIG93biBkZWZhdWx0cywgdXNlciBjYW4gZGVtYW5kIG5vbiBkZWZhdWx0cyB2aWEKK2FkZGluZyBpdCB0byBjbWFrZSBmbGFncworCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3phcGhveWQvd2Vic29ja2V0cHAvcHVsbC84NTldCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgQ01ha2VMaXN0cy50eHQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9DTWFrZUxpc3RzLnR4dCBiL0NNYWtlTGlzdHMudHh0CitpbmRleCAyZDEzMTE3Li5jMTczNTRhIDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtMTU0LDcgKzE1NCw3IEBAIGlmIChCVUlMRF9URVNUUyBPUiBCVUlMRF9FWEFNUExFUykKKyAgICAgICAgIGVuZGlmKCkKKyAgICAgICAgIHNldCAoV0VCU09DS0VUUFBfUExBVEZPUk1fVExTX0xJQlMgc3NsIGNyeXB0bykKKyAgICAgICAgIHNldCAoV0VCU09DS0VUUFBfQk9PU1RfTElCUyBzeXN0ZW0gdGhyZWFkKQorLSAgICAgICAgc2V0IChDTUFLRV9DWFhfRkxBR1MgJHtDTUFLRV9DWFhfRkxBR1N9ICItc3RkPWMrKzB4IC1zdGRsaWI9bGliYysrIikgIyB0b2RvOiBpcyBsaWJjKysgcmVhbGx5IG5lZWRlZCBoZXJlPworKyAgICAgICAgc2V0IChDTUFLRV9DWFhfRkxBR1MgIiR7Q01BS0VfQ1hYX0ZMQUdTfSAtc3RkPWMrKzB4IikKKyAgICAgICAgIGlmIChOT1QgQVBQTEUpCisgICAgICAgICAgICAgYWRkX2RlZmluaXRpb25zICgtRE5ERUJVRyAtV2FsbCAtV25vLXBhZGRlZCkgIyB0b2RvOiBzaG91bGQgd2UgdXNlIENNQUtFX0NfRkxBR1MgZm9yIHRoZXNlPworICAgICAgICAgZW5kaWYgKCkKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4xLzAwMDEtY21ha2UtVXNlLUdOVUluc3RhbGxEaXJzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjIvMDAwMS1jbWFrZS1Vc2UtR05VSW5zdGFsbERpcnMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4xLzAwMDEtY21ha2UtVXNlLUdOVUluc3RhbGxEaXJzLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMi8wMDAxLWNtYWtlLVVzZS1HTlVJbnN0YWxsRGlycy5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjIvODU1LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjIvODU1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMyNDVkOTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMi84NTUucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAorRnJvbSAzNTkwZDc3YmI5NzUzZmJiZjA3NjAyOGUyMzk1MTgyY2VkNjQ2NmJhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogR2lhbmZyYW5jbyBDb3N0YW1hZ25hIDxjb3N0YW1hZ25hZ2lhbmZyYW5jb0B5YWhvby5pdD4KK0RhdGU6IFdlZCwgOCBKYW4gMjAyMCAxNzo1OTo0OCArMDEwMAorU3ViamVjdDogW1BBVENIXSBGaXggY21ha2UgZmluZCBib29zdCB3aXRoIHZlcnNpb24gPj0gMS43MQorCitGb3Igc29tZSByZWFzb25zICJzeXN0ZW07dGhyZWFkO3JhbmRvbTt1bml0X3Rlc3RfZnJhbWV3b3JrIiB3YXMgc2VlbiBhcyBhIHNpbmdsZSBtb2R1bGUsIGJlY2F1c2Ugb2YgdGhlIHF1b3Rlcy4KKy0tLQorIENNYWtlTGlzdHMudHh0IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvQ01ha2VMaXN0cy50eHQgYi9DTWFrZUxpc3RzLnR4dAoraW5kZXggMmQxMzExN2IuLjlhNDZiYzEwIDEwMDY0NAorLS0tIGEvQ01ha2VMaXN0cy50eHQKKysrKyBiL0NNYWtlTGlzdHMudHh0CitAQCAtMjE3LDcgKzIxNyw3IEBAIGlmIChCVUlMRF9URVNUUyBPUiBCVUlMRF9FWEFNUExFUykKKyAgICAgc2V0IChCb29zdF9VU0VfTVVMVElUSFJFQURFRCBUUlVFKQorICAgICBzZXQgKEJvb3N0X0FERElUSU9OQUxfVkVSU0lPTlMgIjEuMzkuMCIgIjEuNDAuMCIgIjEuNDEuMCIgIjEuNDIuMCIgIjEuNDMuMCIgIjEuNDQuMCIgIjEuNDYuMSIpICMgdG9kbzogc29tZW9uZSB3aG8ga25vd3MgYmV0dGVyIHNwZXNpZnkgdGhlc2UhCisgCistICAgIGZpbmRfcGFja2FnZSAoQm9vc3QgMS4zOS4wIENPTVBPTkVOVFMgIiR7V0VCU09DS0VUUFBfQk9PU1RfTElCU30iKQorKyAgICBmaW5kX3BhY2thZ2UgKEJvb3N0IDEuMzkuMCBDT01QT05FTlRTICR7V0VCU09DS0VUUFBfQk9PU1RfTElCU30pCisgCisgICAgIGlmIChCb29zdF9GT1VORCkKKyAgICAgICAgICMgQm9vc3QgaXMgYSBwcm9qZWN0IHdpZGUgZ2xvYmFsIGRlcGVuZGVuY3kuCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMS84NTcucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcC0wLjguMi84NTcucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwLTAuOC4xLzg1Ny5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd2Vic29ja2V0cHAvd2Vic29ja2V0cHAtMC44LjIvODU3LnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcF8wLjguMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwXzAuOC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZjZkMzBhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwXzAuOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDIgKzAsMCBAQAotU1VNTUFSWSA9ICJDKysvQm9vc3QgQXNpbyBiYXNlZCB3ZWJzb2NrZXQgY2xpZW50L3NlcnZlciBsaWJyYXJ5LiIKLVNFQ1RJT04gPSAibGlicy9uZXR3b3JrIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3phcGhveWQvd2Vic29ja2V0cHAiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7U30vQ09QWUlORzttZDU9NGQxNjhkNzYzYzExMWY0ZmZjNjIyNDk4NzBlNGUwZWEiCi0KLURFUEVORFMgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnb3BlbnNzbCBib29zdCB6bGliJywgJycsIGQpfSAiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS96YXBob3lkL3dlYnNvY2tldHBwLmdpdDtwcm90b2NvbD1odHRwcyBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlcGxhY2UtbWFrZV9zaGFyZWQtd2l0aC1uZXctaW4tc29tZS1jYXNlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeC1taXNzZWQtZW50cmllcy1maXgtdGVzdGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNtYWtlLVVzZS1HTlVJbnN0YWxsRGlycy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly84NDIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vNzcxLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzg1NS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly84NTcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Db3JyZWN0LWNsYW5nLWNvbXBpbGVyLWZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLUVYVFJBX09FQ01BS0UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICctREJVSUxEX0VYQU1QTEVTPU9OIC1EQlVJTERfVEVTVFM9T04nLCAnJywgZCl9ICIKLQotIyB0aGlzIGlzIGFuIGhlYWRlciBvbmx5IGxpYnJhcnksIGRvIG5vdCBkZXBlbmQgb24gdGhlIG1haW4gcGFja2FnZQotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLQotIyB0byBhZGQgdGhpcyBwYWNrYWdlIHRvIGFuIFNESywgc2luY2UgaXQgaXNuJ3QgYSByZXZlcnNlLWRlcGVuZGVuY3kgb2YgYW55dGhpbmcsIGp1c3QgdXNlIHNvbWV0aGluZyBsaWtlIHRoaXM6Ci0jIFRPT0xDSEFJTl9UQVJHRVRfVEFTS19hcHBlbmQgPSAiIHdlYnNvY2tldHBwLWRldiIKLQotIyB0YWcgMC44LjEKLVNSQ1JFVj0gImM2ZDdlMjk1YmY1YTBhYjliNWY4OTY3MjBjYzFhMGUwZmRjMzk3YTciCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UKLQotUEFDS0FHRVMgPSsgIiR7UE59LWV4YW1wbGVzIgotCi1GSUxFU18ke1BOfS1leGFtcGxlcyA9ICIke2RvY2Rpcn0iCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWluc3RhbGwgLWQgJHtEfSR7ZG9jZGlyfS8ke0JQTn0KLQljcCAtUiAke1N9L2V4YW1wbGVzICR7RH0ke2RvY2Rpcn0vJHtCUE59Ci19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcF8wLjguMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dlYnNvY2tldHBwL3dlYnNvY2tldHBwXzAuOC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5YTVhYzUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93ZWJzb2NrZXRwcC93ZWJzb2NrZXRwcF8wLjguMi5iYgpAQCAtMCwwICsxLDM4IEBACitTVU1NQVJZID0gIkMrKy9Cb29zdCBBc2lvIGJhc2VkIHdlYnNvY2tldCBjbGllbnQvc2VydmVyIGxpYnJhcnkuIgorU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vemFwaG95ZC93ZWJzb2NrZXRwcCIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtTfS9DT1BZSU5HO21kNT00ZDE2OGQ3NjNjMTExZjRmZmM2MjI0OTg3MGU0ZTBlYSIKKworREVQRU5EUyA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICdvcGVuc3NsIGJvb3N0IHpsaWInLCAnJywgZCl9ICIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3phcGhveWQvd2Vic29ja2V0cHAuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY21ha2UtVXNlLUdOVUluc3RhbGxEaXJzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzg1NS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly84NTcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Db3JyZWN0LWNsYW5nLWNvbXBpbGVyLWZsYWdzLnBhdGNoIFwKKyAgICAgICAgICAiCisKK0VYVFJBX09FQ01BS0UgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICctREJVSUxEX0VYQU1QTEVTPU9OIC1EQlVJTERfVEVTVFM9T04nLCAnJywgZCl9ICIKKworIyB0aGlzIGlzIGFuIGhlYWRlciBvbmx5IGxpYnJhcnksIGRvIG5vdCBkZXBlbmQgb24gdGhlIG1haW4gcGFja2FnZQorUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKKworIyB0byBhZGQgdGhpcyBwYWNrYWdlIHRvIGFuIFNESywgc2luY2UgaXQgaXNuJ3QgYSByZXZlcnNlLWRlcGVuZGVuY3kgb2YgYW55dGhpbmcsIGp1c3QgdXNlIHNvbWV0aGluZyBsaWtlIHRoaXM6CisjIFRPT0xDSEFJTl9UQVJHRVRfVEFTS19hcHBlbmQgPSAiIHdlYnNvY2tldHBwLWRldiIKKworIyB0YWcgMC44LjIKK1NSQ1JFVj0gIjU2MTIzYzg3NTk4ZjhiMWRkNDcxYmU4M2NhODQxY2VhZTA3Zjk1YmEiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworUEFDS0FHRVMgPSsgIiR7UE59LWV4YW1wbGVzIgorCitGSUxFU18ke1BOfS1leGFtcGxlcyA9ICIke2RvY2Rpcn0iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWluc3RhbGwgLWQgJHtEfSR7ZG9jZGlyfS8ke0JQTn0KKwljcCAtUiAke1N9L2V4YW1wbGVzICR7RH0ke2RvY2Rpcn0vJHtCUE59Cit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC93bWljb25maWcvd21pY29uZmlnLzAwMDEtbWFrZWZpbGUtUGFzcy1DRkxBR1MtdG8tY29tcGlsZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dtaWNvbmZpZy93bWljb25maWcvMDAwMS1tYWtlZmlsZS1QYXNzLUNGTEFHUy10by1jb21waWxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MGVmZjViLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dtaWNvbmZpZy93bWljb25maWcvMDAwMS1tYWtlZmlsZS1QYXNzLUNGTEFHUy10by1jb21waWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRnJvbSAwMzc4Y2JiMzIzYzY2MmE1NjVmN2YzZGUyZGVlM2Q4YTY0NmU3YmQxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMDk6MzI6NDIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIG1ha2VmaWxlOiBQYXNzIENGTEFHUyB0byBjb21waWxlCi0KLVNldCBDQyBpZiBub3QgYWxyZWFkeSBzZXQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGhvc3QvdG9vbHMvd21pY29uZmlnL01ha2VmaWxlIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2hvc3QvdG9vbHMvd21pY29uZmlnL01ha2VmaWxlIGIvaG9zdC90b29scy93bWljb25maWcvTWFrZWZpbGUKLWluZGV4IGM2NzM4YzUuLjMyNTNhN2UgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZQotKysrIGIvTWFrZWZpbGUKLUBAIC0xLDQgKzEsNCBAQAotLUNDIDo9JChBVEhfQ1JPU1NfQ09NUElMRV9UWVBFKWdjYwotK0NDID89ICQoQVRIX0NST1NTX0NPTVBJTEVfVFlQRSlnY2MKLSAKLSBhbGw6Ci0tCSQoQ0MpIC1XYWxsIC1EVVNFUl9LRVlTIC1nICQoTERGTEFHUykgLUkuLi8uLi9pbmNsdWRlIC1JLi4vLi4vLi4vaW5jbHVkZSAtSS4uLy4uL3dsYW4vaW5jbHVkZSAtSS4uLy4uL29zL2xpbnV4L2luY2x1ZGUgd21pY29uZmlnLmMgLW8gd21pY29uZmlnCi0rCSQoQ0MpIC1XYWxsIC1EVVNFUl9LRVlTIC1nICQoQ0ZMQUdTKSAkKExERkxBR1MpIC1JLi4vLi4vaW5jbHVkZSAtSS4uLy4uLy4uL2luY2x1ZGUgLUkuLi8uLi93bGFuL2luY2x1ZGUgLUkuLi8uLi9vcy9saW51eC9pbmNsdWRlIHdtaWNvbmZpZy5jIC1vIHdtaWNvbmZpZwotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd21pY29uZmlnL3dtaWNvbmZpZy8wMDAyLWZpeC1lcnItQVBJLXRvLWhhdmUtZm9ybWF0LXN0cmluZy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dtaWNvbmZpZy93bWljb25maWcvMDAwMi1maXgtZXJyLUFQSS10by1oYXZlLWZvcm1hdC1zdHJpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2N2Y3ODQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd21pY29uZmlnL3dtaWNvbmZpZy8wMDAyLWZpeC1lcnItQVBJLXRvLWhhdmUtZm9ybWF0LXN0cmluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY1NiArMCwwIEBACi1Gcm9tIDkwOWViZGRlNGVlMjIzM2Q2NWRlOGZhMDFmZGU4ZTlhM2JlYzEyYjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyNyBKdW4gMjAxNyAwOTozMzoyNiAtMDcwMAotU3ViamVjdDogW1BBVENIIDIvMl0gZml4IGVycigpIEFQSSB0byBoYXZlIGZvcm1hdCBzdHJpbmcKLQotRml4ZXMgZXJyb3JzIHdpdGggaGFyZGVuaW5nIGZsYWdzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBob3N0L3Rvb2xzL3dtaWNvbmZpZy93bWljb25maWcuYyB8IDE0OCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNzQgaW5zZXJ0aW9ucygrKSwgNzQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9ob3N0L3Rvb2xzL3dtaWNvbmZpZy93bWljb25maWcuYyBiL2hvc3QvdG9vbHMvd21pY29uZmlnL3dtaWNvbmZpZy5jCi1pbmRleCAyMWM5ZGNkLi5hNmVjNDgxIDEwMDY0NAotLS0tIGEvd21pY29uZmlnLmMKLSsrKyBiL3dtaWNvbmZpZy5jCi1AQCAtNDgzLDcgKzQ4Myw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgc3RyY3B5KGlmbmFtZSwgZXRoSWYpOwotICAgICBzID0gc29ja2V0KEFGX0lORVQsIFNPQ0tfREdSQU0sIDApOwotICAgICBpZiAocyA8IDApIHsKLS0gICAgICAgIGVycigxLCAic29ja2V0Iik7Ci0rICAgICAgICBlcnIoMSwgIiVzIiwgInNvY2tldCIpOwotICAgICB9Ci0gCi0gICAgIHdoaWxlICgxKSB7Ci1AQCAtMTUwNiwyOCArMTUwNiwyOCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZnIuaWZyX2RhdGEgPSAodm9pZCAqKWZpbHRlckNtZDsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfV01JX1NFVEJTU0ZJTFRFUiwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9QT1dFUl9NT0RFOgotICAgICAgICAgaWZyLmlmcl9kYXRhID0gKHZvaWQgKilwd3JDbWQ7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX1dNSV9TRVRQV1IsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfUE1fUEFSQU1TOgotICAgICAgICAgaWZyLmlmcl9kYXRhID0gKHZvaWQgKilwbVBhcmFtQ21kOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9XTUlfU0VUX1BNUEFSQU1TLCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX0lCU1NfUE1fQ0FQUzoKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9ICh2b2lkICopYWRob2NQbUNtZDsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfV01JX1NFVF9JQlNTX1BNX0NBUFMsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfRVJST1JfREVURUNUSU9OOgotQEAgLTE1MzUsNyArMTUzNSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9HRVRfSEJfQ0hBTExFTkdFX1JFU1A6Ci1AQCAtMTU0Myw3ICsxNTQzLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gI2lmZGVmIFVTRVJfS0VZUwotQEAgLTE1NTQsNyArMTU1NCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAKLSAgICAgICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApCi0gICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICAgICAgfQotIAotICAgICAgICAgICAgIGJyZWFrOwotQEAgLTE1NzUsNyArMTU3NSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9ICh2b2lkICopc1BhcmFtQ21kOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9XTUlfU0VUU0NBTiwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX0dFVF9WRVJTSU9OOgotQEAgLTE1ODYsNyArMTU4Niw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9ICh2b2lkICopcmV2aW5mbzsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfV01JX0dFVFJFViwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgcHJpbnRmKCJIb3N0IFJldiA9IDB4JXgoJXUuJXUuJXUuJXUpLCBUYXJnZXQgUmV2ID0gMHgleCgldS4ldS4ldS4ldSlcbiIsCi0gICAgICAgICAgICAgICByZXZpbmZvLT5ob3N0X3ZlciwKLUBAIC0xNjA2LDE0ICsxNjA2LDE0IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9ICh2b2lkICopbGlzdGVuQ21kOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9XTUlfU0VUTElTVEVOSU5ULCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX0JNSVNTX1RJTUU6Ci0gICAgICAgICBpZnIuaWZyX2RhdGEgPSAodm9pZCAqKWJtaXNzQ21kOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9XTUlfU0VUX0JNSVNTX1RJTUUsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfUlNTSV9USFJFU0hPTERTOgotQEAgLTE2MjEsMTQgKzE2MjEsMTQgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9TTlJfVEhSRVNIT0xEUzoKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9ICh2b2lkICopc25yVGhyZXNob2xkUGFyYW07Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX1dNSV9TRVRfU05SVEhSRVNIT0xELCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfQ0xSX1JTU0lTTlI6Ci1AQCAtMTYzNiw3ICsxNjM2LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9MUV9USFJFU0hPTERTOgotQEAgLTE2NDQsNyArMTY0NCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfQ0hBTk5FTDoKLUBAIC0xNjkzLDE4ICsxNjkzLDE4IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgCi0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX1dNSV9TRVRfQ0hBTk5FTFBBUkFNUywgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9TU0lEOgotICAgICAgICAgaWYgKGluZGV4ID4gTUFYX1BST0JFRF9TU0lEX0lOREVYKSB7Ci0gICAgICAgICAgICAgcHJpbnRmKCJudW0gb3B0aW9uIGZvciBzc2lkIGNvbW1hbmQgdG9vIGxhcmdlXG4iKTsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgICAgICBicmVhazsKLSAgICAgICAgIH0KLSAgICAgICAgIGlmIChzdHJsZW4oKGNoYXIgKilzc2lkKSA+IHNpemVvZiAoc3NpZENtZC0+c3NpZCkpIHsKLSAgICAgICAgICAgICBwcmludGYoInNzaWQgbmFtZSB0b28gbGFyZ2VcbiIpOwotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgICAgIGJyZWFrOwotICAgICAgICAgfQotICAgICAgICAgc3NpZENtZC0+ZW50cnlJbmRleCA9IGluZGV4OwotQEAgLTE3MjIsNyArMTcyMiw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9ICh2b2lkICopc3NpZENtZDsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfV01JX1NFVF9QUk9CRURTU0lELCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX0JBREFQOgotQEAgLTE3MzUsNyArMTczNSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9ICh2b2lkICopYmFkQXBDbWQ7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX1dNSV9TRVRfQkFEQVAsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9DUkVBVEVfUU9TOgotQEAgLTE3OTQsNyArMTc5NCw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9ICh2b2lkICopY3JlUFN0cmVhbUNtZDsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfV01JX0NSRUFURV9RT1MsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9HRVRfVEFSR0VUX1NUQVRTOgotQEAgLTE4MDcsNyArMTgwNyw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9ICh2b2lkICopJnRndFN0YXRzQ21kOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9XTUlfR0VUX1RBUkdFVF9TVEFUUywgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgcHJpbnRUYXJnZXRTdGF0cygmKHRndFN0YXRzQ21kLnRhcmdldFN0YXRzKSk7Ci0gICAgICAgICBicmVhazsKLUBAIC0xODE1LDcgKzE4MTUsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZnIuaWZyX2RhdGEgPSAodm9pZCAqKXBCaXRNYXNrOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9XTUlfU0VUX0VSUk9SX1JFUE9SVF9CSVRNQVNLLCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfREVMRVRFX1FPUzoKLUBAIC0xODI0LDcgKzE4MjQsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZnIuaWZyX2RhdGEgPSAodm9pZCAqKWRlbFBTdHJlYW1DbWQ7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX1dNSV9ERUxFVEVfUU9TLCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfR0VUX1FPU19RVUVVRToKLUBAIC0xODQwLDcgKzE4NDAsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZnIuaWZyX2RhdGEgPSAodm9pZCAqKWdldFFvc1F1ZXVlQ21kOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9XTUlfR0VUX1FPU19RVUVVRSwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotIAotICAgICAgICAgcHJpbnRmKCJBY3RpdmUgVFNJRHMgXG4iKTsKLUBAIC0xODU1LDcgKzE4NTUsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZnIuaWZyX2RhdGEgPSAodm9pZCAqKWllSW5mbzsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfV01JX1NFVF9BU1NPQ19JTkZPLCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX0FDX1BBUkFNUzoKLUBAIC0xODcxLDE0ICsxODcxLDE0IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9ICh2b2lkICopYWNQYXJhbXNDbWQ7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX1dNSV9TRVRfQUNDRVNTX1BBUkFNUywgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9ESVNDX1RJTUVPVVQ6Ci0gICAgICAgICBpZnIuaWZyX2RhdGEgPSAodm9pZCAqKWRpc2NDbWQ7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX1dNSV9TRVRfRElTQ19USU1FT1VULCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgIGNhc2UgV01JX1NFVF9BREhPQ19CU1NJRDoKLUBAIC0xODg3LDcgKzE4ODcsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0gICAgICAgICAgICAgcHJpbnRmKCJmYWlsIHRvIHNldCBhZGhvYyBic3NpZCBcbiIpOwotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9PUFRfTU9ERToKLUBAIC0xODk1LDcgKzE4OTUsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfT1BUX1NFTkRfRlJBTUU6Ci1AQCAtMTkwMyw3ICsxOTAzLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9CRUFDT05fSU5UOgotQEAgLTE5MTEsNyArMTkxMSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfVk9JQ0VfUEtUX1NJWkU6Ci1AQCAtMTkxOSw3ICsxOTE5LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9NQVhfU1A6Ci1AQCAtMTkyNyw3ICsxOTI3LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX0dFVF9ST0FNX1RCTDoKLUBAIC0xOTM1LDcgKzE5MzUsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX1JPQU1fQ1RSTDoKLUBAIC0xOTQzLDcgKzE5NDMsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX1BPV0VSU0FWRV9USU1FUlM6Ci1AQCAtMTk1MSw3ICsxOTUxLDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX0dFVF9QT1dFUl9NT0RFOgotQEAgLTE5NTksNyArMTk1OSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIHByaW50ZigiUG93ZXIgbW9kZSBpcyAlc1xuIiwKLSAgICAgICAgICAgICAgICAoZ2V0UG93ZXJNb2RlLT5wb3dlck1vZGUgPT0gTUFYX1BFUkZfUE9XRVIpID8gIm1heHBlcmYiIDogInJlYyIpOwotQEAgLTE5NjksNyArMTk2OSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9HRVRfUk9BTV9EQVRBOgotQEAgLTE5NzcsNyArMTk3Nyw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfQlRfU1RBVFVTOgotQEAgLTE5ODUsNyArMTk4NSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfQlRfUEFSQU1TOgotQEAgLTE5OTMsNyArMTk5Myw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkKLSAgICAgICAgIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOyAgIAotICAgICBjYXNlIFdNSV9TRVRfUkVUUllMSU1JVFM6Ci1AQCAtMjAwMSwxNCArMjAwMSwxNCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU1RBUlRfU0NBTjoKLSAgICAgICAgICgoaW50ICopYnVmKVswXSA9IEFSNjAwMF9YSU9DVExfV01JX1NUQVJUU0NBTjsKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9GSVhfUkFURVM6Ci1AQCAtMjAzMSwxNCArMjAzMSwxNCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApCi0gICAgICAgICB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfR0VUX0ZJWF9SQVRFUzoKLSAgICAgICAgICgoaW50ICopYnVmKVswXSA9IEFSNjAwMF9YSU9DVExfV01JX0dFVEZJWFJBVEVTOwotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgIGludCBpOwotICAgICAgICAgICAgIHByaW50ZigiRml4IHJhdGUgc2V0IGluZGV4OiIpOwotQEAgLTIwNTcsNyArMjA1Nyw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGluZGV4LS07Ci0gICAgICAgICBzZXRBdXRoTW9kZS0+bW9kZSA9IGF0b2koYXJndltpbmRleF0pOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX1JFQVNTT0NfTU9ERToKLUBAIC0yMDY3LDQyICsyMDY3LDQyIEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGluZGV4LS07Ci0gICAgICAgICBzZXRSZWFzc29jTW9kZS0+bW9kZSA9IGF0b2koYXJndltpbmRleF0pOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX0xQUkVBTUJMRToKLSAgICAgICAgICgoaW50ICopYnVmKVswXSA9IEFSNjAwMF9YSU9DVExfV01JX1NFVF9MUFJFQU1CTEU7Ci0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfUlRTOgotICAgICAgICAgKChpbnQgKilidWYpWzBdID0gQVI2MDAwX1hJT0NUTF9XTUlfU0VUX1JUUzsKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9XTU06Ci0gICAgICAgICAoKGludCAqKWJ1ZilbMF0gPSBBUjYwMDBfWElPQ1RMX1dNSV9TRVRfV01NOwotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX1RYT1A6Ci0gICAgICAgICAoKGludCAqKWJ1ZilbMF0gPSBBUjYwMDBfWElPQ1RMX1dNSV9TRVRfVFhPUDsKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgRElBR19SRUFEOgotICAgICAgICAgKChpbnQgKilidWYpWzBdID0gQVI2MDAwX1hJT0NUTF9ESUFHX1JFQUQ7Ci0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIHByaW50ZigiZGlhZ2RhdGE6IDB4JXhcbiIsICpkaWFnZGF0YSk7Ci0gICAgICAgICBicmVhazsKLUBAIC0yMTEwLDcgKzIxMTAsNyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gICAgICAgICAoKGludCAqKWJ1ZilbMF0gPSBBUjYwMDBfWElPQ1RMX0RJQUdfV1JJVEU7Ci0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9HRVRfUkQ6Ci1AQCAtMjExOCw3ICsyMTE4LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKQotICAgICAgICAgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgZWxzZQotICAgICAgICAgewotQEAgLTIxMzksMTQgKzIxMzksMTQgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgICAgICAgaW5kZXgtLTsKLSAgICAgICAgIHNldEtlZXBBbGl2ZS0+a2VlcGFsaXZlSW50ZXJ2YWwgPSBhdG9pKGFyZ3ZbaW5kZXhdKTsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX0dFVF9LRUVQQUxJVkU6Ci0gICAgICAgICAoKGludCAqKWJ1ZilbMF0gPSBBUjYwMDBfWElPQ1RMX1dNSV9HRVRfS0VFUEFMSVZFOwotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBwcmludGYoIktlZXBhbGl2ZSBpbnRlcnZhbCBpcyAlZCBzZWNzIGFuZCBBUCBpcyAlc1xuIiwKLSAgICAgICAgICAgICAgICBnZXRLZWVwQWxpdmUtPmtlZXBhbGl2ZUludGVydmFsLCAoZ2V0S2VlcEFsaXZlLT5jb25maWd1cmVkID8KLUBAIC0yMTU2LDYzICsyMTU2LDYzIEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgICgoaW50ICopYnVmKVswXSA9IEFSNjAwMF9YSU9DVExfV01JX1NFVF9BUFBJRTsKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9NR01UX0ZSTV9SWF9GSUxURVI6Ci0gICAgICAgICAoKGludCAqKWJ1ZilbMF0gPSBBUjYwMDBfWElPQ1RMX1dNSV9TRVRfTUdNVF9GUk1fUlhfRklMVEVSOwotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfREJHTE9HX0NGR19NT0RVTEU6Ci0gICAgICAgICAoKGludCAqKWJ1ZilbMF0gPSBBUjYwMDBfWElPQ1RMX0RCR0xPR19DRkdfTU9EVUxFOwotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfREJHTE9HX0dFVF9ERUJVR19MT0dTOgotICAgICAgICAgKChpbnQgKilidWYpWzBdID0gQVI2MDAwX1hJT0NUTF9EQkdMT0dfR0VUX0RFQlVHX0xPR1M7Ci0gICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIFdNSV9TRVRfSE9TVF9TTEVFUF9NT0RFOgotICAgICAgICAgKChpbnQgKilidWYpWzBdID0gQVI2MDAwX1hJT0NUTF9XTUlfU0VUX0hPU1RfU0xFRVBfTU9ERTsKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9XT1dfTU9ERToKLSAgICAgICAgICgoaW50ICopYnVmKVswXSA9IEFSNjAwMF9YSU9DVExfV01JX1NFVF9XT1dfTU9ERTsKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX0FERF9XT1dfUEFUVEVSTjoKLSAgICAgICAgICgoaW50ICopYnVmKVswXSA9IEFSNjAwMF9YSU9DVExfV01JX0FERF9XT1dfUEFUVEVSTjsKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX0RFTF9XT1dfUEFUVEVSTjoKLSAgICAgICAgICgoaW50ICopYnVmKVswXSA9IEFSNjAwMF9YSU9DVExfV01JX0RFTF9XT1dfUEFUVEVSTjsKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX0dFVF9XT1dfTElTVDoKLSAgICAgICAgICgoaW50ICopYnVmKVswXSA9IEFSNjAwMF9YSU9DVExfV01JX0dFVF9XT1dfTElTVDsKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgRElBR19EVU1QX0NISVBfTUVNOgotQEAgLTIyMjUsNyArMjIyNSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgICAgICAgICAgKChpbnQgKilidWYpWzBdID0gQVI2MDAwX1hJT0NUTF9ESUFHX1JFQUQ7Ci0gICAgICAgICAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICAgICAgIHByaW50ZigiMHglMDR4OjB4JTA0eFxuIiwgKmRpYWdhZGRyLCAqZGlhZ2RhdGEpOwotICAgICAgICAgICAgIH0KLUBAIC0yMjM3LDIxICsyMjM3LDIxIEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGluZGV4ID0gb3B0aW5kIC0gMTsKLSAgICAgICAgICpjb25uZWN0Q3RybEZsYWdzID0gc3RydG91bChhcmd2W2luZGV4XSwgTlVMTCwgMCk7Ci0gICAgICAgICBpZiAoaW9jdGwocywgQVI2MDAwX0lPQ1RMX0VYVEVOREVELCAmaWZyKSA8IDApIHsKLS0gICAgICAgICAgICBlcnIoMSwgaWZyLmlmcl9uYW1lKTsKLSsgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgIH0KLSAgICAgICAgIGJyZWFrOwotICAgICBjYXNlIERVTVBfSFRDX0NSRURJVFM6ICAgICAgICAKLSAgICAgICAgICgoaW50ICopYnVmKVswXSA9IEFSNjAwMF9YSU9DVExfRFVNUF9IVENfQ1JFRElUX1NUQVRFOwotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX0FLTVBfSU5GTzoKLSAgICAgICAgICgoaW50ICopYnVmKVswXSA9IEFSNjAwMF9YSU9DVExfV01JX1NFVF9BS01QX1BBUkFNUzsKLSAgICAgICAgIGlmci5pZnJfZGF0YSA9IGJ1ZjsKLSAgICAgICAgIGlmIChpb2N0bChzLCBBUjYwMDBfSU9DVExfRVhURU5ERUQsICZpZnIpIDwgMCkgewotLSAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgIGVycigxLCAiJXMiLCBpZnIuaWZyX25hbWUpOwotICAgICAgICAgfQotICAgICAgICAgYnJlYWs7Ci0gICAgIGNhc2UgV01JX1NFVF9QTUtJRF9MSVNUOgotQEAgLTIyNTksNyArMjI1OSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgICAgICAoKGludCAqKWJ1ZilbMF0gPSBBUjYwMDBfWElPQ1RMX1dNSV9TRVRfUE1LSURfTElTVDsKLSAgICAgICAgICAgICBpZnIuaWZyX2RhdGEgPSBidWY7Ci0gICAgICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgICAgIGVycigxLCBpZnIuaWZyX25hbWUpOwotKyAgICAgICAgICAgICAgICBlcnIoMSwgIiVzIiwgaWZyLmlmcl9uYW1lKTsKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9IGVsc2UgewotICAgICAgICAgICAgIHByaW50ZigiTm8gUE1LSURzIGVudGVyZWRcbiIpOwotQEAgLTIyNjksNyArMjI2OSw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgICgoaW50ICopYnVmKVswXSA9IEFSNjAwMF9YSU9DVExfV01JX0dFVF9QTUtJRF9MSVNUOwotICAgICAgICAgaWZyLmlmcl9kYXRhID0gYnVmOwotICAgICAgICAgaWYgKGlvY3RsKHMsIEFSNjAwMF9JT0NUTF9FWFRFTkRFRCwgJmlmcikgPCAwKSB7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSBXTUlfU0VUX0JTU19QTUtJRF9JTkZPOgotQEAgLTIyNzcsNyArMjI3Nyw3IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAgICAgICAgIGl3ci51LmRhdGEubGVuZ3RoID0gc2l6ZW9mKCpwaV9jbWQpOwotICAgICAgICAgaWYgKGlvY3RsKHMsIElFRUU4MDIxMV9JT0NUTF9BRERQTUtJRCwgJml3cikgPCAwKSB7Ci0gICAgICAgICAgICAgcHJpbnRmKCJBRERQTUtJRCBJT0NUTCBFcnJvclxuIik7Ci0tICAgICAgICAgICAgZXJyKDEsIGlmci5pZnJfbmFtZSk7Ci0rICAgICAgICAgICAgZXJyKDEsICIlcyIsIGlmci5pZnJfbmFtZSk7Ci0gICAgICAgICB9Ci0gICAgICAgICBicmVhazsKLSAgICAgZGVmYXVsdDoKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3dtaWNvbmZpZy93bWljb25maWdfc3ZuLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd21pY29uZmlnL3dtaWNvbmZpZ19zdm4uYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2NjU3MmIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvd21pY29uZmlnL3dtaWNvbmZpZ19zdm4uYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkF0aGVyb3MgNksgV2lmaSBjb25maWd1cmF0aW9uIHV0aWxpdHkiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vd21pY29uZmlnLmM7ZW5kbGluZT0xOTttZDU9NDM5NGE1NmJjYTFjNWIyNDQ2YzlmOGU0MDZjODI5MTEiCi1TRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKLVNSQ1JFViA9ICI1Mzk0IgotUFYgPSAiMC4wLjArc3ZuciR7U1JDUFZ9IgotUFIgPSAicjIiCi0KLVNSQ19VUkkgPSAic3ZuOi8vc3ZuLm9wZW5tb2tvLm9yZy90cnVuay9zcmMvdGFyZ2V0O21vZHVsZT1BUjZrU0RLLmJ1aWxkX3N3LjE4O3Byb3RvY29sPWh0dHAgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlZmlsZS1QYXNzLUNGTEFHUy10by1jb21waWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZml4LWVyci1BUEktdG8taGF2ZS1mb3JtYXQtc3RyaW5nLnBhdGNoIFwKLSAgICAgICAgICAgIgotUyA9ICIke1dPUktESVJ9L0FSNmtTREsuYnVpbGRfc3cuMTgvaG9zdC90b29scy93bWljb25maWciCi0KLUNMRUFOQlJPS0VOID0gIjEiCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9IgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLSAgICBpbnN0YWxsIC1tIDA3NTUgd21pY29uZmlnICR7RH0ke2JpbmRpcn0KLX0KLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveG1sc2VjMS94bWxzZWMxLzAwMDEtbnNzLW5zcHItZml4LWZvci1tdWx0aWxpYi5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3htbHNlYzEveG1sc2VjMS8wMDAxLW5zcy1uc3ByLWZpeC1mb3ItbXVsdGlsaWIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTNjMTE5NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3htbHNlYzEveG1sc2VjMS8wMDAxLW5zcy1uc3ByLWZpeC1mb3ItbXVsdGlsaWIucGF0Y2gKQEAgLTAsMCArMSw1MiBAQAorRnJvbSA5ZWQzYjRlNjI4ZjkyNTRkNWM4NjAwNmZlNjNjMzNhMWViMDJhZWU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCA0IEZlYiAyMDIwIDIzOjM5OjQ5IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIG5zcy9uc3ByOiBmaXggZm9yIG11bHRpbGliCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAxNiArKysrKysrKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYjQ2ZDk3ZC4uMzlmNDMxOCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtOTIwLDI0ICs5MjAsMjQgQEAgZmkKKyBkbmwgUHJpb3JpdHkgMTogVXNlciBzcGVjaWZpZXMgdGhlIHBhdGggdG8gaW5zdGFsbGF0aW9uCisgaWYgdGVzdCAieiROU1BSX0ZPVU5EIiA9ICJ6bm8iIC1hICJ6JHdpdGhfbnNwciIgIT0gInoiIC1hICJ6JHdpdGhfbnNwciIgIT0gInp5ZXMiIDsgdGhlbgorICAgICBBQ19NU0dfQ0hFQ0tJTkcoZm9yIG5zcHIgbGlicmFyeSBpbnN0YWxsYXRpb24gaW4gIiR3aXRoX25zcHIiIGZvbGRlcikKKy0gICAgaWYgdGVzdCAtZiAiJHdpdGhfbnNwci9pbmNsdWRlLyROU1BSX0lOQ0xVREVfTUFSS0VSIiAtYSAtZiAiJHdpdGhfbnNwci9saWIvJE5TUFJfTElCX01BUktFUiIgOyB0aGVuCistICAgICAgICBOU1BSX0lOQ0xVREVfUEFUSD0iJHdpdGhfbnNwci9pbmNsdWRlIgorLSAgICAgICAgTlNQUl9MSUJfUEFUSD0iJHdpdGhfbnNwci9saWIiCisrICAgIGlmIHRlc3QgLWYgIiR3aXRoX25zcHIvJHtpbmNsdWRlZGlyfS8kTlNQUl9JTkNMVURFX01BUktFUiIgLWEgLWYgIiR3aXRoX25zcHIvJHtsaWJkaXJ9LyROU1BSX0xJQl9NQVJLRVIiIDsgdGhlbgorKyAgICAgICAgTlNQUl9JTkNMVURFX1BBVEg9IiR3aXRoX25zcHIvJHtpbmNsdWRlZGlyfSIKKysgICAgICAgIE5TUFJfTElCX1BBVEg9IiR3aXRoX25zcHIvJHtsaWJkaXJ9IgorICAgICAgICAgTlNQUl9GT1VORD0ieWVzIgorICAgICAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKKyAgICAgZWxzZQorLSAgICAgICAgQUNfTVNHX0VSUk9SKFtub3QgZm91bmQ6ICIkd2l0aF9uc3ByL2luY2x1ZGUvJE5TUFJfSU5DTFVERV9NQVJLRVIiIGFuZC9vciAiJHdpdGhfbnNwci9saWIvJE5TUFJfTElCX01BUktFUiIgZmlsZXMgZG9uJ3QgZXhpc3QpLCB0eXBvP10pCisrICAgICAgICBBQ19NU0dfRVJST1IoW25vdCBmb3VuZDogIiR3aXRoX25zcHIvJHtpbmNsdWRlZGlyfS8kTlNQUl9JTkNMVURFX01BUktFUiIgYW5kL29yICIkd2l0aF9uc3ByLyR7bGliZGlyfS8kTlNQUl9MSUJfTUFSS0VSIiBmaWxlcyBkb24ndCBleGlzdCksIHR5cG8/XSkKKyAgICAgZmkKKyBmaQorIGlmIHRlc3QgInokTlNTX0ZPVU5EIiA9ICJ6bm8iIC1hICJ6JHdpdGhfbnNzIiAhPSAieiIgLWEgInokd2l0aF9uc3MiICE9ICJ6eWVzIiA7IHRoZW4KKyAgICAgQUNfTVNHX0NIRUNLSU5HKGZvciBuc3MgbGlicmFyeSBpbnN0YWxsYXRpb24gaW4gIiR3aXRoX25zcyIgZm9sZGVyKQorLSAgICBpZiB0ZXN0IC1mICIkd2l0aF9uc3MvaW5jbHVkZS8kTlNTX0lOQ0xVREVfTUFSS0VSIiAtYSAtZiAiJHdpdGhfbnNzL2xpYi8kTlNTX0xJQl9NQVJLRVIiIDsgdGhlbgorLSAgICAgICAgTlNTX0lOQ0xVREVfUEFUSD0iJHdpdGhfbnNzL2luY2x1ZGUiCistICAgICAgICBOU1NfTElCX1BBVEg9IiR3aXRoX25zcy9saWIiCisrICAgIGlmIHRlc3QgLWYgIiR3aXRoX25zcy8ke2luY2x1ZGVkaXJ9LyROU1NfSU5DTFVERV9NQVJLRVIiIC1hIC1mICIkd2l0aF9uc3MvJHtsaWJkaXJ9LyROU1NfTElCX01BUktFUiIgOyB0aGVuCisrICAgICAgICBOU1NfSU5DTFVERV9QQVRIPSIkd2l0aF9uc3MvJHtpbmNsdWRlZGlyfSIKKysgICAgICAgIE5TU19MSUJfUEFUSD0iJHdpdGhfbnNzLyR7bGliZGlyfSIKKyAgICAgICAgIE5TU19GT1VORD0ieWVzIgorICAgICAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKKyAgICAgZWxzZQorLSAgICAgICAgQUNfTVNHX0VSUk9SKFtub3QgZm91bmQ6ICIkd2l0aF9uc3MvaW5jbHVkZS8kTlNTX0lOQ0xVREVfTUFSS0VSIiBhbmQvb3IgIiR3aXRoX25zcy9saWIvJE5TU19MSUJfTUFSS0VSIiBmaWxlcyBkb24ndCBleGlzdCksIHR5cG8/XSkKKysgICAgICAgIEFDX01TR19FUlJPUihbbm90IGZvdW5kOiAiJHdpdGhfbnNzLyR7aW5jbHVkZWRpcn0vJE5TU19JTkNMVURFX01BUktFUiIgYW5kL29yICIkd2l0aF9uc3MvJHtsaWJkaXJ9LyROU1NfTElCX01BUktFUiIgZmlsZXMgZG9uJ3QgZXhpc3QpLCB0eXBvP10pCisgICAgIGZpCisgZmkKKyAKKy0tIAorMi4yMS4wCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3htbHNlYzEveG1sc2VjMS9jaGFuZ2UtZmluZGluZy1wYXRoLW9mLW5zcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3htbHNlYzEveG1sc2VjMS9jaGFuZ2UtZmluZGluZy1wYXRoLW9mLW5zcy5wYXRjaAppbmRleCAxY2VjNDdmLi4xNDUxZmY1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94bWxzZWMxL3htbHNlYzEvY2hhbmdlLWZpbmRpbmctcGF0aC1vZi1uc3MucGF0Y2gKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveG1sc2VjMS94bWxzZWMxL2NoYW5nZS1maW5kaW5nLXBhdGgtb2YtbnNzLnBhdGNoCkBAIC0xNiwxMiArMTYsOCBAQAogaW5kZXggOTUxYjNlYi4uMWZkZWIwZiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtODY2LDEwICs4NjYsMTAgQEAgTU9aSUxMQV9NSU5fVkVSU0lPTj0iMS40IgotIE5TU19DUllQVE9fTElCPSIkWE1MU0VDX1BBQ0tBR0UtbnNzIgotIE5TUFJfUEFDS0FHRT1tb3ppbGxhLW5zcHIKLSBOU1NfUEFDS0FHRT1tb3ppbGxhLW5zcwotLU5TUFJfSU5DTFVERV9NQVJLRVI9Im5zcHIvbnNwci5oIgotK05TUFJfSU5DTFVERV9NQVJLRVI9Im5zcHIuaCIKK0BAIC04NjYsNyArODY2LDcgQEAgTU9aSUxMQV9NSU5fVkVSU0lPTj0iMS40IgorIE5TUFJfSU5DTFVERV9NQVJLRVI9Im5zcHIvbnNwci5oIgogIE5TUFJfTElCX01BUktFUj0ibGlibnNwcjQkc2hyZXh0IgogIE5TUFJfTElCU19MSVNUPSItbG5zcHI0IC1scGxkczQgLWxwbGM0IgogLU5TU19JTkNMVURFX01BUktFUj0ibnNzL25zcy5oIgpAQCAtMjksMzkgKzI1LDMgQEAKICBOU1NfTElCX01BUktFUj0ibGlibnNzMyRzaHJleHQiCiAgTlNTX0xJQlNfTElTVD0iLWxuc3MzIC1sc21pbWUzIgogIAotQEAgLTg5OCwyNCArODk4LDI0IEBAIGZpCi0gZG5sIFByaW9yaXR5IDE6IFVzZXIgc3BlY2lmaWVzIHRoZSBwYXRoIHRvIGluc3RhbGxhdGlvbgotIGlmIHRlc3QgInokTlNQUl9GT1VORCIgPSAiem5vIiAtYSAieiR3aXRoX25zcHIiICE9ICJ6IiAtYSAieiR3aXRoX25zcHIiICE9ICJ6eWVzIiA7IHRoZW4KLSAgICAgQUNfTVNHX0NIRUNLSU5HKGZvciBuc3ByIGxpYnJhcnkgaW5zdGFsbGF0aW9uIGluICIkd2l0aF9uc3ByIiBmb2xkZXIpCi0tICAgIGlmIHRlc3QgLWYgIiR3aXRoX25zcHIvaW5jbHVkZS8kTlNQUl9JTkNMVURFX01BUktFUiIgLWEgLWYgIiR3aXRoX25zcHIvbGliLyROU1BSX0xJQl9NQVJLRVIiIDsgdGhlbgotLSAgICAgICAgTlNQUl9JTkNMVURFX1BBVEg9IiR3aXRoX25zcHIvaW5jbHVkZSIKLS0gICAgICAgIE5TUFJfTElCX1BBVEg9IiR3aXRoX25zcHIvbGliIgotKyAgICBpZiB0ZXN0IC1mICIkd2l0aF9uc3ByL3Vzci9pbmNsdWRlLyROU1BSX0lOQ0xVREVfTUFSS0VSIiAtYSAtZiAiJHdpdGhfbnNwci8ke2xpYmRpcn0vJE5TUFJfTElCX01BUktFUiIgOyB0aGVuCi0rICAgICAgICBOU1BSX0lOQ0xVREVfUEFUSD0iJHdpdGhfbnNwci91c3IvaW5jbHVkZSIKLSsgICAgICAgIE5TUFJfTElCX1BBVEg9IiR3aXRoX25zcHIvJHtsaWJkaXJ9IgotICAgICAgICAgTlNQUl9GT1VORD0ieWVzIgotICAgICAgICAgQUNfTVNHX1JFU1VMVChbeWVzXSkKLSAgICAgZWxzZQotLSAgICAgICAgQUNfTVNHX0VSUk9SKFtub3QgZm91bmQ6ICIkd2l0aF9uc3ByL2luY2x1ZGUvJE5TUFJfSU5DTFVERV9NQVJLRVIiIGFuZC9vciAiJHdpdGhfbnNwci9saWIvJE5TUFJfTElCX01BUktFUiIgZmlsZXMgZG9uJ3QgZXhpc3QpLCB0eXBvP10pCi0rICAgICAgICBBQ19NU0dfRVJST1IoW25vdCBmb3VuZDogIiR3aXRoX25zcHIvdXNyL2luY2x1ZGUvJE5TUFJfSU5DTFVERV9NQVJLRVIiIGFuZC9vciAiJHdpdGhfbnNwci8ke2xpYmRpcn0vJE5TUFJfTElCX01BUktFUiIgZmlsZXMgZG9uJ3QgZXhpc3QpLCB0eXBvP10pCi0gICAgIGZpCi0gZmkKLSBpZiB0ZXN0ICJ6JE5TU19GT1VORCIgPSAiem5vIiAtYSAieiR3aXRoX25zcyIgIT0gInoiIC1hICJ6JHdpdGhfbnNzIiAhPSAienllcyIgOyB0aGVuCi0gICAgIEFDX01TR19DSEVDS0lORyhmb3IgbnNzIGxpYnJhcnkgaW5zdGFsbGF0aW9uIGluICIkd2l0aF9uc3MiIGZvbGRlcikKLS0gICAgaWYgdGVzdCAtZiAiJHdpdGhfbnNzL2luY2x1ZGUvJE5TU19JTkNMVURFX01BUktFUiIgLWEgLWYgIiR3aXRoX25zcy9saWIvJE5TU19MSUJfTUFSS0VSIiA7IHRoZW4KLS0gICAgICAgIE5TU19JTkNMVURFX1BBVEg9IiR3aXRoX25zcy9pbmNsdWRlIgotLSAgICAgICAgTlNTX0xJQl9QQVRIPSIkd2l0aF9uc3MvbGliIgotKyAgICBpZiB0ZXN0IC1mICIkd2l0aF9uc3MvdXNyL2luY2x1ZGUvJE5TU19JTkNMVURFX01BUktFUiIgLWEgLWYgIiR3aXRoX25zcy8ke2xpYmRpcn0vJE5TU19MSUJfTUFSS0VSIiA7IHRoZW4KLSsgICAgICAgIE5TU19JTkNMVURFX1BBVEg9IiR3aXRoX25zcy91c3IvaW5jbHVkZS9uc3MzIgotKyAgICAgICAgTlNTX0xJQl9QQVRIPSIkd2l0aF9uc3MvJHtsaWJkaXJ9IgotICAgICAgICAgTlNTX0ZPVU5EPSJ5ZXMiCi0gICAgICAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQotICAgICBlbHNlCi0tICAgICAgICBBQ19NU0dfRVJST1IoW25vdCBmb3VuZDogIiR3aXRoX25zcy9pbmNsdWRlLyROU1NfSU5DTFVERV9NQVJLRVIiIGFuZC9vciAiJHdpdGhfbnNzL2xpYi8kTlNTX0xJQl9NQVJLRVIiIGZpbGVzIGRvbid0IGV4aXN0KSwgdHlwbz9dKQotKyAgICAgICAgQUNfTVNHX0VSUk9SKFtub3QgZm91bmQ6ICIkd2l0aF9uc3MvdXNyL2luY2x1ZGUvJE5TU19JTkNMVURFX01BUktFUiIgYW5kL29yICIkd2l0aF9uc3MvJHtsaWJkaXJ9LyROU1NfTElCX01BUktFUiIgZmlsZXMgZG9uJ3QgZXhpc3QpLCB0eXBvP10pCi0gICAgIGZpCi0gZmkKLSAKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveG1sc2VjMS94bWxzZWMxXzEuMi4yOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3htbHNlYzEveG1sc2VjMV8xLjIuMjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwYzU4NWUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveG1sc2VjMS94bWxzZWMxXzEuMi4yOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLVNVTU1BUlkgPSAiWE1MIFNlY3VyaXR5IExpYnJhcnkgaXMgYSBDIGxpYnJhcnkgYmFzZWQgb24gTGliWE1MMiIKLURFU0NSSVBUSU9OID0gIlwKLSAgICBYTUwgU2VjdXJpdHkgTGlicmFyeSBpcyBhIEMgbGlicmFyeSBiYXNlZCBvbiBcCi0gICAgTGliWE1MMiBhbmQgT3BlblNTTC4gVGhlIGxpYnJhcnkgd2FzIGNyZWF0ZWQgd2l0aCBhIGdvYWwgdG8gc3VwcG9ydCBtYWpvciBcCi0gICAgWE1MIHNlY3VyaXR5IHN0YW5kYXJkcyAiWE1MIERpZ2l0YWwgU2lnbmF0dXJlIiBhbmQgIlhNTCBFbmNyeXB0aW9uIi4gXAotICAgICIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjLyIKLURFUEVORFMgPSAibGlidG9vbCBsaWJ4bWwyIGxpYnhzbHQgemxpYiIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zNTI3OTFkNjIwOTJlYTgxMDRmMDg1MDQyZGU3ZjRkMCIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuYWxla3NleS5jb20veG1sc2VjL2Rvd25sb2FkLyR7QlB9LnRhci5neiBcCi0gICAgZmlsZTovL2ZpeC1sdG1haW4uc2gucGF0Y2ggXAotICAgIGZpbGU6Ly9jaGFuZ2UtZmluZGluZy1wYXRoLW9mLW5zcy5wYXRjaCBcCi0gICAgZmlsZTovL21ha2VmaWxlLXB0ZXN0LnBhdGNoIFwKLSAgICBmaWxlOi8veG1sc2VjMS1leGFtcGxlcy1hbGxvdy1idWlsZC1pbi1zZXBhcmF0ZS1kaXIucGF0Y2ggXAotICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQ3NTU2MjFmZjJhNzE1MGUyMDhkZTZiZDdkZWNjYTEwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIxZDFkZWJhOTY2MDE5OTMwZjYwOGQxZjJiOTVjNDBjYTM0NTBmMTM5M2JjZDNhM2MwMDFhOGJhMWQyODM5YWIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdCBwa2djb25maWcKLQotQ0ZMQUdTICs9ICItSSR7U1RBR0lOR19JTkNESVJ9L25zcHI0IC1JJHtTVEFHSU5HX0lOQ0RJUn0vbnNzMyIKLUNQUEZMQUdTICs9ICItSSR7U1RBR0lOR19JTkNESVJ9L25zcHI0IC1JJHtTVEFHSU5HX0lOQ0RJUn0vbnNzMyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyBsaWJnY3J5cHQgbnNzIG9wZW5zc2wgZGVzIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIiwsZ251dGxzIgotUEFDS0FHRUNPTkZJR1tsaWJnY3J5cHRdID0gIiwsbGliZ2NyeXB0IgotUEFDS0FHRUNPTkZJR1tuc3NdID0gIi0td2l0aC1uc3M9JHtTVEFHSU5HX0xJQkRJUn0vLi4vLi4gLS13aXRoLW5zcHI9JHtTVEFHSU5HX0xJQkRJUn0vLi4vLi4sLG5zcyBuc3ByIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICIsLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW2Rlc10gPSAiLC0tZGlzYWJsZS1kZXMsLCIKLQotIyB0aGVzZSBjYW4gYmUgZHluYW1pY2FsbHkgbG9hZGVkIHdpdGggeG1sU2VjQ3J5cHRvRExMb2FkTGlicmFyeSgpCi1GSUxFU19TT0xJQlNERVYgPSAiJHtsaWJkaXJ9L2xpYnhtbHNlYzEuc28iCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2xpYnhtbHNlYzEtKi5zbyIKLUlOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0veG1sc2VjMUNvbmYuc2giCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7UFRFU1RfUEFUSH0vLmRlYnVnLyoiCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfS1kZXYiCi1JTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAiZGV2LWRlcHMiCi0KLVBURVNUX0VYVFJBX0FSR1MgPSAidG9wX3NyY2Rpcj0ke1N9IHRvcF9idWlsZGRpcj0ke0J9IgotCi1kb19jb21waWxlX3B0ZXN0ICgpIHsKLSAgICBvZV9ydW5tYWtlIC1DICR7U30vZXhhbXBsZXMgJHtQVEVTVF9FWFRSQV9BUkdTfSBhbGwKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgZm9yIGkgaW4gJHtiaW5kaXJ9L3htbHNlYzEtY29uZmlnICR7bGliZGlyfS94bWxzZWMxQ29uZi5zaCBcCi0gICAgICAgICR7bGliZGlyfS9wa2djb25maWcveG1sc2VjMS1vcGVuc3NsLnBjOyBkbwotICAgICAgICBzZWQgLWkgLWUgInNAJHtSRUNJUEVfU1lTUk9PVH1AQGciICR7RH0kaQotICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0gICAgb2VfcnVubWFrZSAtQyAke1N9L2V4YW1wbGVzIERFU1RESVI9JHtEfSR7UFRFU1RfUEFUSH0gJHtQVEVTVF9FWFRSQV9BUkdTfSBpbnN0YWxsLXB0ZXN0Ci19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94bWxzZWMxL3htbHNlYzFfMS4yLjMwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveG1sc2VjMS94bWxzZWMxXzEuMi4zMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMGM3YjJkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveG1sc2VjMS94bWxzZWMxXzEuMi4zMC5iYgpAQCAtMCwwICsxLDY1IEBACitTVU1NQVJZID0gIlhNTCBTZWN1cml0eSBMaWJyYXJ5IGlzIGEgQyBsaWJyYXJ5IGJhc2VkIG9uIExpYlhNTDIiCitERVNDUklQVElPTiA9ICJcCisgICAgWE1MIFNlY3VyaXR5IExpYnJhcnkgaXMgYSBDIGxpYnJhcnkgYmFzZWQgb24gXAorICAgIExpYlhNTDIgYW5kIE9wZW5TU0wuIFRoZSBsaWJyYXJ5IHdhcyBjcmVhdGVkIHdpdGggYSBnb2FsIHRvIHN1cHBvcnQgbWFqb3IgXAorICAgIFhNTCBzZWN1cml0eSBzdGFuZGFyZHMgIlhNTCBEaWdpdGFsIFNpZ25hdHVyZSIgYW5kICJYTUwgRW5jcnlwdGlvbiIuIFwKKyAgICAiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYy8iCitERVBFTkRTID0gImxpYnRvb2wgbGlieG1sMiBsaWJ4c2x0IHpsaWIiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MzUyNzkxZDYyMDkyZWE4MTA0ZjA4NTA0MmRlN2Y0ZDAiCisKK1NFQ1RJT04gPSAibGlicyIKKworU1JDX1VSSSA9ICJodHRwOi8vd3d3LmFsZWtzZXkuY29tL3htbHNlYy9kb3dubG9hZC8ke0JQfS50YXIuZ3ogXAorICAgIGZpbGU6Ly9maXgtbHRtYWluLnNoLnBhdGNoIFwKKyAgICBmaWxlOi8vY2hhbmdlLWZpbmRpbmctcGF0aC1vZi1uc3MucGF0Y2ggXAorICAgIGZpbGU6Ly9tYWtlZmlsZS1wdGVzdC5wYXRjaCBcCisgICAgZmlsZTovL3htbHNlYzEtZXhhbXBsZXMtYWxsb3ctYnVpbGQtaW4tc2VwYXJhdGUtZGlyLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMS1uc3MtbnNwci1maXgtZm9yLW11bHRpbGliLnBhdGNoIFwKKyAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiNjZlYzIxZTBhMGFjMzMxYWZiNGIxYmM1YzllZjk2NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZDg0MzYwYjAzMDQyMTc4ZGVmMWQ5ZmY1MzhhY2FjYWVkMmIzYTI3NDExZGI3YjI4NzRmMTYxMmVkNzFhYmM4IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcHRlc3QgcGtnY29uZmlnCisKKyNDRkxBR1MgKz0gIi1JJHtTVEFHSU5HX0lOQ0RJUn0vbnNzMyIKKyNDUFBGTEFHUyArPSAiLUkke1NUQUdJTkdfSU5DRElSfS9uc3MzIgorCitQQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIGxpYmdjcnlwdCBuc3Mgb3BlbnNzbCBkZXMiCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLCxnbnV0bHMiCitQQUNLQUdFQ09ORklHW2xpYmdjcnlwdF0gPSAiLCxsaWJnY3J5cHQiCitQQUNLQUdFQ09ORklHW25zc10gPSAiLS13aXRoLW5zcz0ke1NUQUdJTkdfRElSX0hPU1R9IC0td2l0aC1uc3ByPSR7U1RBR0lOR19ESVJfSE9TVH0sLG5zcyBuc3ByIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICIsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW2Rlc10gPSAiLC0tZGlzYWJsZS1kZXMsLCIKKworIyB0aGVzZSBjYW4gYmUgZHluYW1pY2FsbHkgbG9hZGVkIHdpdGggeG1sU2VjQ3J5cHRvRExMb2FkTGlicmFyeSgpCitGSUxFU19TT0xJQlNERVYgPSAiJHtsaWJkaXJ9L2xpYnhtbHNlYzEuc28iCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2xpYnhtbHNlYzEtKi5zbyIKK0lOU0FORV9TS0lQXyR7UE59ID0gImRldi1zbyIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0veG1sc2VjMUNvbmYuc2giCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7UFRFU1RfUEFUSH0vLmRlYnVnLyoiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfS1kZXYiCitJTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAiZGV2LWRlcHMiCisKK1BURVNUX0VYVFJBX0FSR1MgPSAidG9wX3NyY2Rpcj0ke1N9IHRvcF9idWlsZGRpcj0ke0J9IgorCitkb19jb21waWxlX3B0ZXN0ICgpIHsKKyAgICBvZV9ydW5tYWtlIC1DICR7U30vZXhhbXBsZXMgJHtQVEVTVF9FWFRSQV9BUkdTfSBhbGwKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgZm9yIGkgaW4gJHtiaW5kaXJ9L3htbHNlYzEtY29uZmlnICR7bGliZGlyfS94bWxzZWMxQ29uZi5zaCBcCisgICAgICAgICR7bGliZGlyfS9wa2djb25maWcveG1sc2VjMS1vcGVuc3NsLnBjOyBkbworICAgICAgICBzZWQgLWkgLWUgInNAJHtSRUNJUEVfU1lTUk9PVH1AQGciICR7RH0kaQorICAgIGRvbmUKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICAgb2VfcnVubWFrZSAtQyAke1N9L2V4YW1wbGVzIERFU1RESVI9JHtEfSR7UFRFU1RfUEFUSH0gJHtQVEVTVF9FWFRSQV9BUkdTfSBpbnN0YWxsLXB0ZXN0Cit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC94eGhhc2gveHhoYXNoXzAuNy4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveHhoYXNoL3h4aGFzaF8wLjcuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NjVhZGM1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQveHhoYXNoL3h4aGFzaF8wLjcuMy5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIkV4dHJlbWVseSBmYXN0IG5vbi1jcnlwdG9ncmFwaGljIGhhc2ggYWxnb3JpdGhtIgorREVTQ1JJUFRJT04gPSAieHhIYXNoIGlzIGFuIGV4dHJlbWVseSBmYXN0IG5vbi1jcnlwdG9ncmFwaGljIGhhc2ggYWxnb3JpdGhtLCBcCit3b3JraW5nIGF0IHNwZWVkcyBjbG9zZSB0byBSQU0gbGltaXRzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cueHhoYXNoLmNvbS8iCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSAmIEdQTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wMWE3ZWJhNDIxMmVmMWU4ODI3NzdhMzg1ODVlN2E5YiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0N5YW40OTczL3h4SGFzaC5naXQiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitTUkNSRVYgPSAiZDQwOGU5YjA2MDZkMDdiMWRkYzU0NTJmZmMwZWM4NTEyMjExYjE3NCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworZG9fY29tcGlsZSAoKSB7CisJb2VfcnVubWFrZSBhbGwKK30KKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSBERVNURElSPSR7RH0gaW5zdGFsbAorfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvemNodW5rL3pjaHVuay8wMDAxLXpjay5oLWZpeC1idWlsZC1vbi1tdXNsLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvemNodW5rL3pjaHVuay8wMDAxLXpjay5oLWZpeC1idWlsZC1vbi1tdXNsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0ZTBlOGUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC96Y2h1bmsvemNodW5rLzAwMDEtemNrLmgtZml4LWJ1aWxkLW9uLW11c2wucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSA3ODI0N2Q0NzhjZWMyNTRiYWQyN2Y0ZWQ5N2I1MzJmNGY1NGJmMWIwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGllcnJlLUplYW4gVGV4aWVyIDxwanRleGllckBrb25jZXB0by5pbz4KK0RhdGU6IFRodSwgMjMgSmFuIDIwMjAgMTk6MTQ6NDAgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIHpjay5oOiBmaXggYnVpbGQgb24gbXVzbAorCitUaGUgc3NpemVfdCB0eXBlIHJlcXVpcmVzIHRoZSA8c3lzL3R5cGVzLmg+IGhlYWRlci4gVGhpcyBmaXhlcyBidWlsZCB3aXRoIG11c2wKK2xpYmM6CisKK2luY2x1ZGUvemNrLmg6Njg6MTogZXJyb3I6IHVua25vd24gdHlwZSBuYW1lICdzc2l6ZV90JzsgZGlkIHlvdSBtZWFuICdzaXplX3QnPworICAgNjggfCBzc2l6ZV90IHpja19yZWFkKHpja0N0eCAqemNrLCBjaGFyICpkc3QsIHNpemVfdCBkc3Rfc2l6ZSkKKyAgICAgIHwgXn5+fn5+fgorICAgICAgfCBzaXplX3QKK2luY2x1ZGUvemNrLmg6ODE6MTogZXJyb3I6IHVua25vd24gdHlwZSBuYW1lICdzc2l6ZV90JzsgZGlkIHlvdSBtZWFuICdzaXplX3QnPworICAgODEgfCBzc2l6ZV90IHpja193cml0ZSh6Y2tDdHggKnpjaywgY29uc3QgY2hhciAqc3JjLCBjb25zdCBzaXplX3Qgc3JjX3NpemUpCisgICAgICB8IF5+fn5+fn4KKyAgICAgIHwgc2l6ZV90CisgICAgICAKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vemNodW5rL3pjaHVuay9wdWxsLzIzXQorCitTaWduZWQtb2ZmLWJ5OiBQaWVycmUtSmVhbiBUZXhpZXIgPHBqdGV4aWVyQGtvbmNlcHRvLmlvPgorLS0tCisgaW5jbHVkZS96Y2suaC5pbiB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS96Y2suaC5pbiBiL2luY2x1ZGUvemNrLmguaW4KK2luZGV4IDkxZDI1NTcuLmI4NDc1NzYgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3pjay5oLmluCisrKysgYi9pbmNsdWRlL3pjay5oLmluCitAQCAtNSw2ICs1LDcgQEAKKyAKKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKysjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgCisgdHlwZWRlZiBlbnVtIHpja19oYXNoIHsKKyAgICAgWkNLX0hBU0hfU0hBMSwKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvemNodW5rL3pjaHVuay8wMDAyLXVuemNrLWZpeC1idWlsZC13aXRoLW11c2wtbGliYy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3pjaHVuay96Y2h1bmsvMDAwMi11bnpjay1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFjOTViZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3pjaHVuay96Y2h1bmsvMDAwMi11bnpjay1maXgtYnVpbGQtd2l0aC1tdXNsLWxpYmMucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRnJvbSA3MmM1NWUzZGE1OWVjY2RmZWEzNzc4ZDExZjgzODYyYjU4YWY3MjNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGllcnJlLUplYW4gVGV4aWVyIDxwanRleGllckBrb25jZXB0by5pbz4KK0RhdGU6IFRodSwgMjMgSmFuIDIwMjAgMjI6NDI6NDAgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIHVuemNrOiBmaXggYnVpbGQgd2l0aCBtdXNsIGxpYmMKKworT24gbXVzbCBsaWJjICJzdGRvdXQiIGlzIGEgcHJlcHJvY2Vzc29yIG1hY3JvIHdob3NlIGV4cGFuc2lvbiBsZWFkcyB0bworY29tcGlsYXRpb24gZXJyb3JzLgorCitGaXhlczoKKworfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gLi4vZ2l0L3NyYy91bnpjay5jOjMxOgorfCAuLi9naXQvc3JjL3VuemNrLmM6IEluIGZ1bmN0aW9uICdwYXJzZV9vcHQnOgorfCAuLi9naXQvc3JjL3VuemNrLmM6Nzg6MjQ6IGVycm9yOiBleHBlY3RlZCBpZGVudGlmaWVyIGJlZm9yZSAnKCcgdG9rZW4KK3wgICAgNzggfCAgICAgICAgICAgICBhcmd1bWVudHMtPnN0ZG91dCA9IHRydWU7Cit8ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn4KK3wgLi4vZ2l0L3NyYy91bnpjay5jOiBJbiBmdW5jdGlvbiAnbWFpbic6Cit8IC4uL2dpdC9zcmMvdW56Y2suYzoxNDE6MjA6IGVycm9yOiBleHBlY3RlZCBpZGVudGlmaWVyIGJlZm9yZSAnKCcgdG9rZW4KK3wgICAxNDEgfCAgICAgaWYoIShhcmd1bWVudHMuc3Rkb3V0KSkgeworfCAgICAgICB8ICAgICAgICAgICAgICAgICAgICBefn5+fn4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS96Y2h1bmsvemNodW5rL3B1bGwvMjNdCisKK1NpZ25lZC1vZmYtYnk6IFBpZXJyZS1KZWFuIFRleGllciA8cGp0ZXhpZXJAa29uY2VwdG8uaW8+CistLS0KKyBzcmMvdW56Y2suYyB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy91bnpjay5jIGIvc3JjL3VuemNrLmMKK2luZGV4IDhkNmM2MmEuLjAwMjQ5MmMgMTAwNjQ0CistLS0gYS9zcmMvdW56Y2suYworKysrIGIvc3JjL3VuemNrLmMKK0BAIC01OCw3ICs1OCw3IEBAIHN0cnVjdCBhcmd1bWVudHMgeworICAgY2hhciAqYXJnc1sxXTsKKyAgIHpja19sb2dfdHlwZSBsb2dfbGV2ZWw7CisgICBib29sIGRpY3Q7CistICBib29sIHN0ZG91dDsKKysgIGJvb2wgc3RkT3V0OworICAgYm9vbCBleGl0OworIH07CisgCitAQCAtNzUsNyArNzUsNyBAQCBzdGF0aWMgZXJyb3JfdCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKSB7CisgICAgICAgICAgICAgICAgIGFyZ3VtZW50cy0+bG9nX2xldmVsID0gWkNLX0xPR19EREVCVUc7CisgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICBjYXNlICdjJzoKKy0gICAgICAgICAgICBhcmd1bWVudHMtPnN0ZG91dCA9IHRydWU7CisrICAgICAgICAgICAgYXJndW1lbnRzLT5zdGRPdXQgPSB0cnVlOworICAgICAgICAgICAgIGJyZWFrOworICAgICAgICAgY2FzZSAnVic6CisgICAgICAgICAgICAgdmVyc2lvbigpOworQEAgLTEzOCw3ICsxMzgsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworICAgICAgICAgc25wcmludGYob3V0X25hbWUgKyBzdHJsZW4oYmFzZV9uYW1lKSAtIDQsIDcsICIuemRpY3QiKTsKKyAKKyAgICAgaW50IGRzdF9mZCA9IFNURE9VVF9GSUxFTk87CistICAgIGlmKCFhcmd1bWVudHMuc3Rkb3V0KSB7CisrICAgIGlmKCFhcmd1bWVudHMuc3RkT3V0KSB7CisgICAgICAgICBkc3RfZmQgPSBvcGVuKG91dF9uYW1lLCBPX1RSVU5DIHwgT19XUk9OTFkgfCBPX0NSRUFULCAwNjY2KTsKKyAgICAgICAgIGlmKGRzdF9mZCA8IDApIHsKKyAgICAgICAgICAgICBkcHJpbnRmKFNUREVSUl9GSUxFTk8sICJVbmFibGUgdG8gb3BlbiAlcyIsIG91dF9uYW1lKTsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXN1cHBvcnQvemNodW5rL3pjaHVua18xLjEuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3pjaHVuay96Y2h1bmtfMS4xLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc1NDEyZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L3pjaHVuay96Y2h1bmtfMS4xLjUuYmIKQEAgLTAsMCArMSwyNiBAQAorREVTQ1JJUFRJT04gPSAiQSBmaWxlIGZvcm1hdCBkZXNpZ25lZCBmb3IgaGlnaGx5IGVmZmljaWVudCBkZWx0YXMgd2hpbGUgbWFpbnRhaW5pbmcgZ29vZCBjb21wcmVzc2lvbiIKK0FVVEhPUiA9ICJKb25hdGhhbiBEaWV0ZXIiCisKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Y2Q2ZTU5MDI4MjAxMGNlOTBhOTRlZjI1ZGQzMTQxMGYiCisKK1NSQ19VUkkgPSAiIFwKKwlnaXQ6Ly9naXRodWIuY29tL3pjaHVuay96Y2h1bmsuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKwlmaWxlOi8vMDAwMS16Y2suaC1maXgtYnVpbGQtb24tbXVzbC5wYXRjaCBcCisJZmlsZTovLzAwMDItdW56Y2stZml4LWJ1aWxkLXdpdGgtbXVzbC1saWJjLnBhdGNoIFwKKwkiCisKK1NSQ1JFViA9ICJjMDFiZjEyZmVlZGU3OTI5ODJmMTY1ZjUyZjRhNmM1NzNlM2E4YzE3IgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EUyA9ICJcCisgICAgY3VybCBcCisgICAgenN0ZCBcCisgICAgIgorCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGFyZ3Atc3RhbmRhbG9uZSIKK0xERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWxhcmdwIgorCitpbmhlcml0IG1lc29uCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2N1bml0L2N1bml0XzIuMS0zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY3VuaXQvY3VuaXRfMi4xLTMuYmIKaW5kZXggOThmMmNhYy4uYmFiZjgwNCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY3VuaXQvY3VuaXRfMi4xLTMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY3VuaXQvY3VuaXRfMi4xLTMuYmIKQEAgLTExLDYgKzExLDggQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICJiNWYxYTlmNjA5Mzg2OWMwNzBjNmU0YTk0NTBjYzEwYyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNWIyOTEzN2Y4NDViYjA4Yjc3ZWM2MDU4NGZkYjcyOGI0ZTU4ZjEwMjNlNmYyNDlhNDY0ZWZhNDlhNDBmMjE0IgogCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9jdW5pdC9maWxlcy9yZWxlYXNlcyIKKwogaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHJlbW92ZS1saWJ0b29sCiAKIEVYVFJBX09FQ09ORiA9ICItLWVuYWJsZS1tZW10cmFjZSAtLWVuYWJsZS1hdXRvbWF0ZWQgLS1lbmFibGUtYmFzaWMgLS1lbmFibGUtY29uc29sZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2N4eHRlc3QvY3h4dGVzdF80LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtdGVzdC9jeHh0ZXN0L2N4eHRlc3RfNC40LmJiCmluZGV4IDM0MmZjY2YuLjI1MmVlYTMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy10ZXN0L2N4eHRlc3QvY3h4dGVzdF80LjQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZS9yZWNpcGVzLXRlc3QvY3h4dGVzdC9jeHh0ZXN0XzQuNC5iYgpAQCAtMTAsNyArMTAsNyBAQAogCiBTID0gIiR7V09SS0RJUn0vY3h4dGVzdC0ke1BWfS9weXRob24iCiAKLWluaGVyaXQgZGlzdHV0aWxzCitpbmhlcml0IGRpc3R1dGlsczMKIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAgICAgaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL2NvbmYvbGF5ZXIuY29uZiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9jb25mL2xheWVyLmNvbmYKaW5kZXggMmM3MzBlNC4uMTM2MWZlMCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL2NvbmYvbGF5ZXIuY29uZgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvY29uZi9sYXllci5jb25mCkBAIC0xNSw0ICsxNSw0IEBACiAKIExBWUVSREVQRU5EU19wZXJsLWxheWVyID0gImNvcmUgb3BlbmVtYmVkZGVkLWxheWVyIgogCi1MQVlFUlNFUklFU19DT01QQVRfcGVybC1sYXllciA9ICJ0aHVkIHdhcnJpb3IgemV1cyIKK0xBWUVSU0VSSUVTX0NPTVBBVF9wZXJsLWxheWVyID0gInRodWQgd2FycmlvciB6ZXVzIGR1bmZlbGwiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNnaS9saWJjZ2ktcGVybF80LjQ0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjZ2kvbGliY2dpLXBlcmxfNC40NC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2RlMTg3ZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNnaS9saWJjZ2ktcGVybF80LjQ0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQ0dJLnBtIGlzIGEgc3RhYmxlLCBjb21wbGV0ZSBhbmQgbWF0dXJlIHNvbHV0aW9uIGZvciBwcm9jZXNzaW5nIGFuZCBwcmVwYXJpbmcgXAotSFRUUCByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzLiBNYWpvciBmZWF0dXJlcyBpbmNsdWRpbmcgcHJvY2Vzc2luZyBmb3JtIFwKLXN1Ym1pc3Npb25zLCBmaWxlIHVwbG9hZHMsIHJlYWRpbmcgYW5kIHdyaXRpbmcgY29va2llcywgcXVlcnkgc3RyaW5nIGdlbmVyYXRpb24gXAotYW5kIG1hbmlwdWxhdGlvbiwgYW5kIHByb2Nlc3NpbmcgYW5kIHByZXBhcmluZyBIVFRQIGhlYWRlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+bGVlam8vQ0dJLTQuMjgvbGliL0NHSS5wb2QiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTIuMCB8IEdQTC0yLjAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTQxNWZjNDlhYmVkMjcyOGY5NDgwY2QzMmM4ZDY3YmViIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL0wvTEUvTEVFSk8vQ0dJLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjJjYmU1NjBmZGFkYmI4YjkyMzc3NDRlMzliYmZjM2ViIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEyNDM1ZmI3ZWJkMzU4NWM0N2I2ZDYwZWU0ZjVjN2Q2YTdjMTE0YTI4MjdkMmI1YWNmM2Q2MmFhOWZjZjEyMDgiCi0KLVMgPSAiJHtXT1JLRElSfS9DR0ktJHtQVn0iCi0KLWluaGVyaXQgY3BhbiBwdGVzdC1wZXJsCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgbGliaHRtbC1wYXJzZXItcGVybCBcCi0gICAgcGVybC1tb2R1bGUtYmFzZSBcCi0gICAgcGVybC1tb2R1bGUtZGVwcmVjYXRlIFwKLSAgICBwZXJsLW1vZHVsZS1pZiBcCi0iCi0KLWRvX2luc3RhbGxfcHJlcGVuZCgpIHsKLSAgICAjIHJlcXVpcmVzICItVCIgKHRhaW50KSBjb21tYW5kIGxpbmUgb3B0aW9uCi0gICAgcm0gLXJmICR7Qn0vdC9wdXNoLnQKLSAgICBybSAtcmYgJHtCfS90L3V0ZjgudAotICAgICMgdGVzdHMgYnVpbGRpbmcgb2YgZG9jcwotICAgIHJtIC1yZiAke0J9L3QvY29tcGlsZXNfcG9kLnQKLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCi0gICAgbGlidGVzdC1kZWVwLXBlcmwgXAotICAgIGxpYnRlc3Qtd2Fybi1wZXJsIFwKLSAgICBwZXJsLW1vZHVsZS1ieXRlcyBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1maW5kIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlaGFuZGxlIFwKLSAgICBwZXJsLW1vZHVsZS1maW5kYmluIFwKLSAgICBwZXJsLW1vZHVsZS1saWIgXAotICAgIHBlcmwtbW9kdWxlLXBlcmxpbyBcCi0gICAgcGVybC1tb2R1bGUtcGVybGlvLXNjYWxhciBcCi0gICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKLSAgICBwZXJsLW1vZHVsZS11dGY4IFwKLSIKLQotUlBST1ZJREVTXyR7UE59ICs9ICJwZXJsLW1vZHVsZS1jZ2kiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjZ2kvbGliY2dpLXBlcmxfNC40Ni5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY2dpL2xpYmNnaS1wZXJsXzQuNDYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNlYzczNwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliY2dpL2xpYmNnaS1wZXJsXzQuNDYuYmIKQEAgLTAsMCArMSw1MSBAQAorREVTQ1JJUFRJT04gPSAiQ0dJLnBtIGlzIGEgc3RhYmxlLCBjb21wbGV0ZSBhbmQgbWF0dXJlIHNvbHV0aW9uIGZvciBwcm9jZXNzaW5nIGFuZCBwcmVwYXJpbmcgXAorSFRUUCByZXF1ZXN0cyBhbmQgcmVzcG9uc2VzLiBNYWpvciBmZWF0dXJlcyBpbmNsdWRpbmcgcHJvY2Vzc2luZyBmb3JtIFwKK3N1Ym1pc3Npb25zLCBmaWxlIHVwbG9hZHMsIHJlYWRpbmcgYW5kIHdyaXRpbmcgY29va2llcywgcXVlcnkgc3RyaW5nIGdlbmVyYXRpb24gXAorYW5kIG1hbmlwdWxhdGlvbiwgYW5kIHByb2Nlc3NpbmcgYW5kIHByZXBhcmluZyBIVFRQIGhlYWRlcnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+bGVlam8vQ0dJLTQuMjgvbGliL0NHSS5wb2QiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkFydGlzdGljLTIuMCB8IEdQTC0yLjAiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTQxNWZjNDlhYmVkMjcyOGY5NDgwY2QzMmM4ZDY3YmViIgorCitTUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL0wvTEUvTEVFSk8vQ0dJLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gImMyYWU0NDNkZTc4YTY5ZDg1ZTM5MzFjOGMyOTU5NmQxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc4ODk5OGRkYzMzY2EzODJlNWQ3Y2U3MmM2YzBlYTFkODM2NmM5MzA2NzM3MWZlMmYxNDIzOWRkZWEyZTQyOTgiCisKK1MgPSAiJHtXT1JLRElSfS9DR0ktJHtQVn0iCisKK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgbGliaHRtbC1wYXJzZXItcGVybCBcCisgICAgcGVybC1tb2R1bGUtYmFzZSBcCisgICAgcGVybC1tb2R1bGUtZGVwcmVjYXRlIFwKKyAgICBwZXJsLW1vZHVsZS1pZiBcCisiCisKK2RvX2luc3RhbGxfcHJlcGVuZCgpIHsKKyAgICAjIHJlcXVpcmVzICItVCIgKHRhaW50KSBjb21tYW5kIGxpbmUgb3B0aW9uCisgICAgcm0gLXJmICR7Qn0vdC9wdXNoLnQKKyAgICBybSAtcmYgJHtCfS90L3V0ZjgudAorICAgICMgdGVzdHMgYnVpbGRpbmcgb2YgZG9jcworICAgIHJtIC1yZiAke0J9L3QvY29tcGlsZXNfcG9kLnQKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisgICAgbGlidGVzdC1kZWVwLXBlcmwgXAorICAgIGxpYnRlc3Qtd2Fybi1wZXJsIFwKKyAgICBwZXJsLW1vZHVsZS1ieXRlcyBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1maW5kIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlaGFuZGxlIFwKKyAgICBwZXJsLW1vZHVsZS1maW5kYmluIFwKKyAgICBwZXJsLW1vZHVsZS1saWIgXAorICAgIHBlcmwtbW9kdWxlLXBlcmxpbyBcCisgICAgcGVybC1tb2R1bGUtcGVybGlvLXNjYWxhciBcCisgICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKKyAgICBwZXJsLW1vZHVsZS11dGY4IFwKKyIKKworUlBST1ZJREVTXyR7UE59ICs9ICJwZXJsLW1vZHVsZS1jZ2kiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJjb25maWcvbGliY29uZmlnLWF1dG9jb25mLXBlcmxfMC4zMTguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNvbmZpZy9saWJjb25maWctYXV0b2NvbmYtcGVybF8wLjMxOC5iYgppbmRleCBlNGY4ZmU3Li5hZmQyNmZhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNvbmZpZy9saWJjb25maWctYXV0b2NvbmYtcGVybF8wLjMxOC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmNvbmZpZy9saWJjb25maWctYXV0b2NvbmYtcGVybF8wLjMxOC5iYgpAQCAtMzYsNiArMzYsNiBAQAogCiBTID0gIiR7V09SS0RJUn0vQ29uZmlnLUF1dG9Db25mLSR7UFZ9IgogCi1pbmhlcml0IGNwYW4gcHRlc3QtcGVybCBhbGxhcmNoCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmVuY29kZS9saWJlbmNvZGUtcGVybF8zLjAyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJlbmNvZGUvbGliZW5jb2RlLXBlcmxfMy4wMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjMyYmMwMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmVuY29kZS9saWJlbmNvZGUtcGVybF8zLjAyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTA2ICswLDAgQEAKLSMgTk9URToKLSMgICAgWW91IHNob3VsZCB1c2UgcGVybC1tb2R1bGUtZW5jb2RlIHJhdGhlciB0aGFuIHRoaXMgcGFja2FnZQotIyAgICB1bmxlc3MgeW91IHNwZWNpZmljYWxseSBuZWVkIGEgdmVyc2lvbiBuZXdlciB0aGFuIHdoYXQgaXMKLSMgICAgcHJvdmlkZWQgYnkgcGVybC4KLQotU1VNTUFSWSA9ICJFbmNvZGUgLSBjaGFyYWN0ZXIgZW5jb2RpbmdzIgotREVTQ1JJUFRJT04gPSAiVGhlIFwiRW5jb2RlXCIgbW9kdWxlIHByb3ZpZGVzIHRoZSBpbnRlcmZhY2VzIGJldHdlZW4gXAotUGVybCdzIHN0cmluZ3MgYW5kIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uICBQZXJsIHN0cmluZ3MgYXJlIHNlcXVlbmNlcyBcCi1vZiBjaGFyYWN0ZXJzLiIKLQotQVVUSE9SID0gIkRhbiBLb2dhaSA8ZGFua29nYWkrY3BhbkBnbWFpbC5jb20+IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcmVsZWFzZS9FbmNvZGUiCi1TRUNUSU9OID0gImxpYiIKLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NRVRBLmpzb247YmVnaW5saW5lPTg7ZW5kbGluZT0xMDttZDU9YjEyZTNiZTFlMTdhN2U5OWNhNGY0MjlmZjMyYzI4YjUiCi0KLVNSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9EL0RBL0RBTktPR0FJL0VuY29kZS0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiNGViMDdiYTZkYjAyZDViOTgyMzE2ZTFkZDA1ZjY4YmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTg2NWJlNDk1MTg3MGY2MmY0MzcyMjgxOGQwNzZkNzcyNDMwNmM3NWM4ZjI2ODM0NmIyODIzNTFjYmM4MjBhOCIKLQotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiRW5jb2RlXC0oP1A8cHZlcj4oXGQrXC5cZCspKSg/IV9cZCspLnRhciIKLQotUyA9ICIke1dPUktESVJ9L0VuY29kZS0ke1BWfSIKLQotaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotICAgICMgUmVxdWlyZXMgIi1UIiAodGFpbnQpIG9wdGlvbiBvbiBjb21tYW5kIGxpbmUKLSAgICBybSAtcmYgJHtCfS90L3RhaW50LnQKLSAgICAjIENpcmN1bGFyIGRlcGVuZGVuY3kgb2YgcGVybC1tb2R1bGUtb3BlbiBvbiBwZXJsLW1vZHVsZS1lbmNvZGUKLSAgICAjIGFuZCB3ZSBjYW5ub3QgbG9hZCBwZXJsLW1vZHVsZS1lbmNvZGUgYmVjYXVzZSB3ZSBhcmUgcHJvdmlkaW5nCi0gICAgIyBhbiBhbHRlcm5hdGl2ZQotICAgIHJtIC1yZiAke0J9L3QvdXNlLUVuY29kZS1BbGlhcy50Ci19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0gICAgbWtkaXIgJHtEfSR7UFRFU1RfUEFUSH0vYmluCi0gICAgY3AgLXIgJHtCfS9iaW4vcGljb252ICR7RH0ke1BURVNUX1BBVEh9L2JpbgotICAgIGNwIC1yICR7Qn0vYmxpYiAke0R9JHtQVEVTVF9QQVRIfQotICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9JHtQVEVTVF9QQVRIfQotfQotCi0jICBmaWxlIC91c3IvYmluL2VuYzJ4cyBmcm9tIGluc3RhbGwgb2YgcGVybC1taXNjLTUuMjQuMS1yMC5pNTg2IGNvbmZsaWN0cyB3aXRoIGZpbGUgZnJvbSBwYWNrYWdlIGxpYmVuY29kZS1wZXJsLTIuOTQtcjAuaTU4NgotIyAgZmlsZSAvdXNyL2Jpbi9lbmNndWVzcyBmcm9tIGluc3RhbGwgb2YgcGVybC1taXNjLTUuMjQuMS1yMC5pNTg2IGNvbmZsaWN0cyB3aXRoIGZpbGUgZnJvbSBwYWNrYWdlIGxpYmVuY29kZS1wZXJsLTIuOTQtcjAuaTU4NgotIyAgZmlsZSAvdXNyL2Jpbi9waWNvbnYgZnJvbSBpbnN0YWxsIG9mIHBlcmwtbWlzYy01LjI0LjEtcjAuaTU4NiBjb25mbGljdHMgd2l0aCBmaWxlIGZyb20gcGFja2FnZSBsaWJlbmNvZGUtcGVybC0yLjk0LXIwLmk1ODYKLVJDT05GTElDVFNfJHtQTn0gPSAicGVybC1taXNjIHBlcmwtbW9kdWxlLWVuY29kZSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgcGVybC1tb2R1bGUtYnl0ZXMgXAotICAgIHBlcmwtbW9kdWxlLWNvbnN0YW50IFwKLSAgICBwZXJsLW1vZHVsZS1wYXJlbnQgXAotICAgIHBlcmwtbW9kdWxlLXN0b3JhYmxlIFwKLSAgICBwZXJsLW1vZHVsZS14c2xvYWRlciBcCi0gICAgIgotCi1SUFJPVklERVNfJHtQTn0gKz0gIiBcCi0gICAgbGliZW5jb2RlLWFsaWFzLXBlcmwgXAotICAgIGxpYmVuY29kZS1ieXRlLXBlcmwgXAotICAgIGxpYmVuY29kZS1jamtjb25zdGFudHMtcGVybCBcCi0gICAgbGliZW5jb2RlLWNuLXBlcmwgXAotICAgIGxpYmVuY29kZS1jbi1oei1wZXJsIFwKLSAgICBsaWJlbmNvZGUtY29uZmlnLXBlcmwgXAotICAgIGxpYmVuY29kZS1lYmNkaWMtcGVybCBcCi0gICAgbGliZW5jb2RlLWVuY29kZXItcGVybCBcCi0gICAgbGliZW5jb2RlLWVuY29kaW5nLXBlcmwgXAotICAgIGxpYmVuY29kZS1nc20wMzM4LXBlcmwgXAotICAgIGxpYmVuY29kZS1ndWVzcy1wZXJsIFwKLSAgICBsaWJlbmNvZGUtanAtcGVybCBcCi0gICAgbGliZW5jb2RlLWpwLWgyei1wZXJsIFwKLSAgICBsaWJlbmNvZGUtanAtamlzNy1wZXJsIFwKLSAgICBsaWJlbmNvZGUta3ItcGVybCBcCi0gICAgbGliZW5jb2RlLWtyLTIwMjJfa3ItcGVybCBcCi0gICAgbGliZW5jb2RlLW1pbWUtaGVhZGVyLXBlcmwgXAotICAgIGxpYmVuY29kZS1taW1lLW5hbWUtcGVybCBcCi0gICAgbGliZW5jb2RlLXN5bWJvbC1wZXJsIFwKLSAgICBsaWJlbmNvZGUtdHctcGVybCBcCi0gICAgbGliZW5jb2RlLXVuaWNvZGUtcGVybCBcCi0gICAgbGliZW5jb2RlLXVuaWNvZGUtdXRmNy1wZXJsIFwKLSAgICBsaWJlbmNvZGluZy1wZXJsIFwKLSAgICBsaWJlbmNvZGUtaW50ZXJuYWwtcGVybCBcCi0gICAgbGliZW5jb2RlLW1pbWUtaGVhZGVyLWlzb18yMDIyX2pwLXBlcmwgXAotICAgIGxpYmVuY29kZS11dGY4LXBlcmwgXAotICAgIGxpYmVuY29kZS11dGZfZWJjZGljLXBlcmwgXAotICAgICIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCi0gICAgcGVybC1tb2R1bGUtYmxpYiBcCi0gICAgcGVybC1tb2R1bGUtY2hhcm5hbWVzIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLWNvbXBhcmUgXAotICAgIHBlcmwtbW9kdWxlLWZpbGUtY29weSBcCi0gICAgcGVybC1tb2R1bGUtZmlsZWhhbmRsZSBcCi0gICAgcGVybC1tb2R1bGUtZmluZGJpbiBcCi0gICAgcGVybC1tb2R1bGUtaW50ZWdlciBcCi0gICAgcGVybC1tb2R1bGUtaW8tc2VsZWN0IFwKLSAgICBwZXJsLW1vZHVsZS1pcGMtb3BlbjMgXAotICAgIHBlcmwtbW9kdWxlLW1pbWUtYmFzZTY0IFwKLSAgICBwZXJsLW1vZHVsZS1wZXJsaW8gXAotICAgIHBlcmwtbW9kdWxlLXBlcmxpby1lbmNvZGluZyBcCi0gICAgcGVybC1tb2R1bGUtcGVybGlvLXNjYWxhciBcCi0gICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKLSAgICBwZXJsLW1vZHVsZS10aWUtc2NhbGFyIFwKLSAgICBwZXJsLW1vZHVsZS11bmljb3JlIFwKLSAgICBwZXJsLW1vZHVsZS11dGY4IFwKLSAgICAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJlbmNvZGUvbGliZW5jb2RlLXBlcmxfMy4wNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZW5jb2RlL2xpYmVuY29kZS1wZXJsXzMuMDUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjI0MzBlOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZW5jb2RlL2xpYmVuY29kZS1wZXJsXzMuMDUuYmIKQEAgLTAsMCArMSwxMDYgQEAKKyMgTk9URToKKyMgICAgWW91IHNob3VsZCB1c2UgcGVybC1tb2R1bGUtZW5jb2RlIHJhdGhlciB0aGFuIHRoaXMgcGFja2FnZQorIyAgICB1bmxlc3MgeW91IHNwZWNpZmljYWxseSBuZWVkIGEgdmVyc2lvbiBuZXdlciB0aGFuIHdoYXQgaXMKKyMgICAgcHJvdmlkZWQgYnkgcGVybC4KKworU1VNTUFSWSA9ICJFbmNvZGUgLSBjaGFyYWN0ZXIgZW5jb2RpbmdzIgorREVTQ1JJUFRJT04gPSAiVGhlIFwiRW5jb2RlXCIgbW9kdWxlIHByb3ZpZGVzIHRoZSBpbnRlcmZhY2VzIGJldHdlZW4gXAorUGVybCdzIHN0cmluZ3MgYW5kIHRoZSByZXN0IG9mIHRoZSBzeXN0ZW0uICBQZXJsIHN0cmluZ3MgYXJlIHNlcXVlbmNlcyBcCitvZiBjaGFyYWN0ZXJzLiIKKworQVVUSE9SID0gIkRhbiBLb2dhaSA8ZGFua29nYWkrY3BhbkBnbWFpbC5jb20+IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9tZXRhY3Bhbi5vcmcvcmVsZWFzZS9FbmNvZGUiCitTRUNUSU9OID0gImxpYiIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NRVRBLmpzb247YmVnaW5saW5lPTg7ZW5kbGluZT0xMDttZDU9YjEyZTNiZTFlMTdhN2U5OWNhNGY0MjlmZjMyYzI4YjUiCisKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9EL0RBL0RBTktPR0FJL0VuY29kZS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMTM3YWVmMDBiZmMzZDVjYjk3MDk2YWQ5ODVkMzE1M2EiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTBmNTFlMDNjZDc4N2EzZTI2MDI2NTAzZTgwNmFmZGMwM2YzODIzYWUzNTUxYzcxMWE5YjA0YWQ5MDFhODc5NCIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiRW5jb2RlXC0oP1A8cHZlcj4oXGQrXC5cZCspKSg/IV9cZCspLnRhciIKKworUyA9ICIke1dPUktESVJ9L0VuY29kZS0ke1BWfSIKKworaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworICAgICMgUmVxdWlyZXMgIi1UIiAodGFpbnQpIG9wdGlvbiBvbiBjb21tYW5kIGxpbmUKKyAgICBybSAtcmYgJHtCfS90L3RhaW50LnQKKyAgICAjIENpcmN1bGFyIGRlcGVuZGVuY3kgb2YgcGVybC1tb2R1bGUtb3BlbiBvbiBwZXJsLW1vZHVsZS1lbmNvZGUKKyAgICAjIGFuZCB3ZSBjYW5ub3QgbG9hZCBwZXJsLW1vZHVsZS1lbmNvZGUgYmVjYXVzZSB3ZSBhcmUgcHJvdmlkaW5nCisgICAgIyBhbiBhbHRlcm5hdGl2ZQorICAgIHJtIC1yZiAke0J9L3QvdXNlLUVuY29kZS1BbGlhcy50Cit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgbWtkaXIgJHtEfSR7UFRFU1RfUEFUSH0vYmluCisgICAgY3AgLXIgJHtCfS9iaW4vcGljb252ICR7RH0ke1BURVNUX1BBVEh9L2JpbgorICAgIGNwIC1yICR7Qn0vYmxpYiAke0R9JHtQVEVTVF9QQVRIfQorICAgIGNob3duIC1SIHJvb3Q6cm9vdCAke0R9JHtQVEVTVF9QQVRIfQorfQorCisjICBmaWxlIC91c3IvYmluL2VuYzJ4cyBmcm9tIGluc3RhbGwgb2YgcGVybC1taXNjLTUuMjQuMS1yMC5pNTg2IGNvbmZsaWN0cyB3aXRoIGZpbGUgZnJvbSBwYWNrYWdlIGxpYmVuY29kZS1wZXJsLTIuOTQtcjAuaTU4NgorIyAgZmlsZSAvdXNyL2Jpbi9lbmNndWVzcyBmcm9tIGluc3RhbGwgb2YgcGVybC1taXNjLTUuMjQuMS1yMC5pNTg2IGNvbmZsaWN0cyB3aXRoIGZpbGUgZnJvbSBwYWNrYWdlIGxpYmVuY29kZS1wZXJsLTIuOTQtcjAuaTU4NgorIyAgZmlsZSAvdXNyL2Jpbi9waWNvbnYgZnJvbSBpbnN0YWxsIG9mIHBlcmwtbWlzYy01LjI0LjEtcjAuaTU4NiBjb25mbGljdHMgd2l0aCBmaWxlIGZyb20gcGFja2FnZSBsaWJlbmNvZGUtcGVybC0yLjk0LXIwLmk1ODYKK1JDT05GTElDVFNfJHtQTn0gPSAicGVybC1taXNjIHBlcmwtbW9kdWxlLWVuY29kZSIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgcGVybC1tb2R1bGUtYnl0ZXMgXAorICAgIHBlcmwtbW9kdWxlLWNvbnN0YW50IFwKKyAgICBwZXJsLW1vZHVsZS1wYXJlbnQgXAorICAgIHBlcmwtbW9kdWxlLXN0b3JhYmxlIFwKKyAgICBwZXJsLW1vZHVsZS14c2xvYWRlciBcCisgICAgIgorCitSUFJPVklERVNfJHtQTn0gKz0gIiBcCisgICAgbGliZW5jb2RlLWFsaWFzLXBlcmwgXAorICAgIGxpYmVuY29kZS1ieXRlLXBlcmwgXAorICAgIGxpYmVuY29kZS1jamtjb25zdGFudHMtcGVybCBcCisgICAgbGliZW5jb2RlLWNuLXBlcmwgXAorICAgIGxpYmVuY29kZS1jbi1oei1wZXJsIFwKKyAgICBsaWJlbmNvZGUtY29uZmlnLXBlcmwgXAorICAgIGxpYmVuY29kZS1lYmNkaWMtcGVybCBcCisgICAgbGliZW5jb2RlLWVuY29kZXItcGVybCBcCisgICAgbGliZW5jb2RlLWVuY29kaW5nLXBlcmwgXAorICAgIGxpYmVuY29kZS1nc20wMzM4LXBlcmwgXAorICAgIGxpYmVuY29kZS1ndWVzcy1wZXJsIFwKKyAgICBsaWJlbmNvZGUtanAtcGVybCBcCisgICAgbGliZW5jb2RlLWpwLWgyei1wZXJsIFwKKyAgICBsaWJlbmNvZGUtanAtamlzNy1wZXJsIFwKKyAgICBsaWJlbmNvZGUta3ItcGVybCBcCisgICAgbGliZW5jb2RlLWtyLTIwMjJfa3ItcGVybCBcCisgICAgbGliZW5jb2RlLW1pbWUtaGVhZGVyLXBlcmwgXAorICAgIGxpYmVuY29kZS1taW1lLW5hbWUtcGVybCBcCisgICAgbGliZW5jb2RlLXN5bWJvbC1wZXJsIFwKKyAgICBsaWJlbmNvZGUtdHctcGVybCBcCisgICAgbGliZW5jb2RlLXVuaWNvZGUtcGVybCBcCisgICAgbGliZW5jb2RlLXVuaWNvZGUtdXRmNy1wZXJsIFwKKyAgICBsaWJlbmNvZGluZy1wZXJsIFwKKyAgICBsaWJlbmNvZGUtaW50ZXJuYWwtcGVybCBcCisgICAgbGliZW5jb2RlLW1pbWUtaGVhZGVyLWlzb18yMDIyX2pwLXBlcmwgXAorICAgIGxpYmVuY29kZS11dGY4LXBlcmwgXAorICAgIGxpYmVuY29kZS11dGZfZWJjZGljLXBlcmwgXAorICAgICIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisgICAgcGVybC1tb2R1bGUtYmxpYiBcCisgICAgcGVybC1tb2R1bGUtY2hhcm5hbWVzIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLWNvbXBhcmUgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtY29weSBcCisgICAgcGVybC1tb2R1bGUtZmlsZWhhbmRsZSBcCisgICAgcGVybC1tb2R1bGUtZmluZGJpbiBcCisgICAgcGVybC1tb2R1bGUtaW50ZWdlciBcCisgICAgcGVybC1tb2R1bGUtaW8tc2VsZWN0IFwKKyAgICBwZXJsLW1vZHVsZS1pcGMtb3BlbjMgXAorICAgIHBlcmwtbW9kdWxlLW1pbWUtYmFzZTY0IFwKKyAgICBwZXJsLW1vZHVsZS1wZXJsaW8gXAorICAgIHBlcmwtbW9kdWxlLXBlcmxpby1lbmNvZGluZyBcCisgICAgcGVybC1tb2R1bGUtcGVybGlvLXNjYWxhciBcCisgICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKKyAgICBwZXJsLW1vZHVsZS10aWUtc2NhbGFyIFwKKyAgICBwZXJsLW1vZHVsZS11bmljb3JlIFwKKyAgICBwZXJsLW1vZHVsZS11dGY4IFwKKyAgICAiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJleHR1dGlscy9saWJleHR1dGlscy1jcHBndWVzcy1wZXJsXzAuMjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmV4dHV0aWxzL2xpYmV4dHV0aWxzLWNwcGd1ZXNzLXBlcmxfMC4yMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTk0ODk5Yi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmV4dHV0aWxzL2xpYmV4dHV0aWxzLWNwcGd1ZXNzLXBlcmxfMC4yMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLVNVTU1BUlkgPSAiRXh0VXRpbHM6OkNwcEd1ZXNzIC0gZ3Vlc3MgQysrIGNvbXBpbGVyIGFuZCBmbGFncyIKLURFU0NSSVBUSU9OID0gIkV4dFV0aWxzOjpDcHBHdWVzcyBhdHRlbXB0cyB0byBndWVzcyB0aGUgc3lzdGVtJ3MgQysrIFwKLWNvbXBpbGVyIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBDIGNvbXBpbGVyIHRoYXQgeW91ciBwZXJsIHdhcyBidWlsdCBcCi13aXRoLiBcCi1JdCBjYW4gZ2VuZXJhdGUgdGhlIG5lY2Vzc2FyeSBvcHRpb25zIHRvIHRoZSBNb2R1bGU6OkJ1aWxkIGNvbnN0cnVjdG9yIG9yIFwKLXRvIEV4dFV0aWxzOjpNYWtlTWFrZXIncyBXcml0ZU1ha2VmaWxlIGZ1bmN0aW9uLiIKLVNFQ1RJT04gPSAibGlicyIKLQotSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+c211ZWxsZXIvRXh0VXRpbHMtQ3BwR3Vlc3MvIgotCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT04MTtlbmRsaW5lPTg0O21kNT04NGMwMzkwYjkwZWE4YzY3MDJjZTY1OWI2N2JlZDY5OSIKLQotU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0UvRVQvRVRKL0V4dFV0aWxzLUNwcEd1ZXNzLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkNmRkZDU1NjhjODRmNGM3YjExYjk5NmI2NWYyZWEzYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMmJmOTE0NzA4ODg1MjY1YjVjM2IwYjhiZmIwYTkyOTRjZjEzMmQ1Y2EzMGQ1NGJkYTBlMDAzMzVmYjQzZTYxIgotCi1TID0gIiR7V09SS0RJUn0vRXh0VXRpbHMtQ3BwR3Vlc3MtJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1kb19pbnN0YWxsICgpIHsKLSAgICAgICAgY3Bhbl9kb19pbnN0YWxsCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gIiBsaWJjYXB0dXJlLXRpbnktcGVybCBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtc2NhbGFyLXV0aWwgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWlvLWZpbGUgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLW1ha2VtYWtlciBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHBvcnRlciBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtY2FycCBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS10ZW1wIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1saWIgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZXh0dXRpbHMvbGliZXh0dXRpbHMtY3BwZ3Vlc3MtcGVybF8wLjIxLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJleHR1dGlscy9saWJleHR1dGlscy1jcHBndWVzcy1wZXJsXzAuMjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTExYjRkMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZXh0dXRpbHMvbGliZXh0dXRpbHMtY3BwZ3Vlc3MtcGVybF8wLjIxLmJiCkBAIC0wLDAgKzEsMzcgQEAKK1NVTU1BUlkgPSAiRXh0VXRpbHM6OkNwcEd1ZXNzIC0gZ3Vlc3MgQysrIGNvbXBpbGVyIGFuZCBmbGFncyIKK0RFU0NSSVBUSU9OID0gIkV4dFV0aWxzOjpDcHBHdWVzcyBhdHRlbXB0cyB0byBndWVzcyB0aGUgc3lzdGVtJ3MgQysrIFwKK2NvbXBpbGVyIHRoYXQgaXMgY29tcGF0aWJsZSB3aXRoIHRoZSBDIGNvbXBpbGVyIHRoYXQgeW91ciBwZXJsIHdhcyBidWlsdCBcCit3aXRoLiBcCitJdCBjYW4gZ2VuZXJhdGUgdGhlIG5lY2Vzc2FyeSBvcHRpb25zIHRvIHRoZSBNb2R1bGU6OkJ1aWxkIGNvbnN0cnVjdG9yIG9yIFwKK3RvIEV4dFV0aWxzOjpNYWtlTWFrZXIncyBXcml0ZU1ha2VmaWxlIGZ1bmN0aW9uLiIKK1NFQ1RJT04gPSAibGlicyIKKworSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9+c211ZWxsZXIvRXh0VXRpbHMtQ3BwR3Vlc3MvIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT04MTtlbmRsaW5lPTg0O21kNT04NGMwMzkwYjkwZWE4YzY3MDJjZTY1OWI2N2JlZDY5OSIKKworU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL0UvRVQvRVRKL0V4dFV0aWxzLUNwcEd1ZXNzLSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI2MmJkZjczMWJjYmU5ODhkMDc0ODY4MzZlMTE1ODVmNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmZjYyOTE3ODMyMWExZTU5MWI4M2Y4MDk3MTI1OTNlYWU0NDA4YTQxM2FhNDQ4NjU0YmNlNTliMTU2ZjI0MTUzIgorCitTID0gIiR7V09SS0RJUn0vRXh0VXRpbHMtQ3BwR3Vlc3MtJHtQVn0iCisKK2luaGVyaXQgY3BhbgorCitkb19pbnN0YWxsICgpIHsKKyAgICAgICAgY3Bhbl9kb19pbnN0YWxsCit9CisKK1JERVBFTkRTXyR7UE59ID0gIiBsaWJjYXB0dXJlLXRpbnktcGVybCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtc2NhbGFyLXV0aWwgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWlvLWZpbGUgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLW1ha2VtYWtlciBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1leHBvcnRlciBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtY2FycCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS10ZW1wIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1saWIgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZmlsZS9saWJmaWxlLXNsdXJwZXItcGVybF8wLjAxMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGliZmlsZS9saWJmaWxlLXNsdXJwZXItcGVybF8wLjAxMi5iYgppbmRleCBiNjg0YWJkLi4zNjc4YWQ3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmZpbGUvbGliZmlsZS1zbHVycGVyLXBlcmxfMC4wMTIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJmaWxlL2xpYmZpbGUtc2x1cnBlci1wZXJsXzAuMDEyLmJiCkBAIC0zMSw2ICszMSw2IEBACiAKIFMgPSAiJHtXT1JLRElSfS9GaWxlLVNsdXJwZXItJHtQVn0iCiAKLWluaGVyaXQgY3BhbiBhbGxhcmNoIHB0ZXN0LXBlcmwKK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJpby9saWJpby1zb2NrZXQtc3NsLXBlcmxfMi4wNjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmlvL2xpYmlvLXNvY2tldC1zc2wtcGVybF8yLjA2Ni5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzYwOTg0Ni4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmlvL2xpYmlvLXNvY2tldC1zc2wtcGVybF8yLjA2Ni5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBsaWJyYXJ5IGZvciB0cmFuc3BhcmVudCBTU0wiCi1ERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSBpcyBhIHRydWUgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgSU86OlNvY2tldDo6SU5FVCB0aGF0IFwKLXVzZXMgU1NMIHRvIGVuY3J5cHQgZGF0YSBiZWZvcmUgaXQgaXMgdHJhbnNmZXJyZWQgdG8gYSByZW1vdGUgc2VydmVyIFwKLW9yIGNsaWVudC4gSU86OlNvY2tldDo6U1NMIHN1cHBvcnRzIGFsbCB0aGUgZXh0cmEgZmVhdHVyZXMgdGhhdCBvbmUgXAotbmVlZHMgdG8gd3JpdGUgYSBmdWxsLWZlYXR1cmVkIFNTTCBjbGllbnQgb3Igc2VydmVyIGFwcGxpY2F0aW9uOiBcCi1tdWx0aXBsZSBTU0wgY29udGV4dHMsIGNpcGhlciBzZWxlY3Rpb24sIGNlcnRpZmljYXRlIHZlcmlmaWNhdGlvbiwgYW5kIFwKLVNTTCB2ZXJzaW9uIHNlbGVjdGlvbi4gQXMgYW4gZXh0cmEgYm9udXMsIGl0IHdvcmtzIHBlcmZlY3RseSB3aXRoIFwKLW1vZF9wZXJsLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvZGlzdC9JTy1Tb2NrZXQtU1NMLyIKLVNFQ1RJT04gPSAibGlicyIKLQotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjB8R1BMdjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTUVUQS55bWw7YmVnaW5saW5lPTEyO2VuZGxpbmU9MTI7bWQ1PTk2M2NlMjgyMjgzNDc4NzVhY2U2ODJkZTU2ZWVmOGU4IgotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgIGxpYm5ldC1zc2xlYXktcGVybCBcCi0gICAgcGVybC1tb2R1bGUtYXV0b2xvYWRlciBcCi0gICAgcGVybC1tb2R1bGUtc2NhbGFyLXV0aWwgXAotICAgIHBlcmwtbW9kdWxlLWlvLXNvY2tldCBcCi0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9DUEFOL2F1dGhvcnMvaWQvUy9TVS9TVUxMUi9JTy1Tb2NrZXQtU1NMLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlY2Y5NmNlMmZmOWUwNGEwM2EyZDEwMWM3NmNlMTAyMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwZDQ3MDY0NzgxYTU0NTMwNGQ1ZGNlYTVkZmNlZTNhY2MyZTk1YTMyZTFiNDg4NGQ4MDUwNWNkZThlZTZlYmNkIgotCi1TID0gIiR7V09SS0RJUn0vSU8tU29ja2V0LVNTTC0ke1BWfSIKLQotaW5oZXJpdCBjcGFuIHB0ZXN0Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBta2RpciAtcCAke0R9JHtkb2NkaXJ9LyR7UE59LwotICAgIGNwICR7U30vQlVHUyAke0R9JHtkb2NkaXJ9LyR7UE59LwotICAgIGNwICR7U30vQ2hhbmdlcyAke0R9JHtkb2NkaXJ9LyR7UE59LwotICAgIGNwICR7U30vUkVBRE1FICR7RH0ke2RvY2Rpcn0vJHtQTn0vCi0gICAgY3AgLXBSUCAke1N9L2RvY3MgJHtEfSR7ZG9jZGlyfS8ke1BOfS8KLSAgICBjcCAtcFJQICR7U30vY2VydHMgJHtEfSR7ZG9jZGlyfS8ke1BOfS8KLSAgICBjcCAtcFJQICR7U30vZXhhbXBsZSAke0R9JHtkb2NkaXJ9LyR7UE59LwotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLSAgICBjcCAtciAke0J9L3QgJHtEfSR7UFRFU1RfUEFUSH0KLSAgICBjcCAtciAke0J9L2NlcnRzICR7RH0ke1BURVNUX1BBVEh9Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJpby9saWJpby1zb2NrZXQtc3NsLXBlcmxfMi4wNjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYmlvL2xpYmlvLXNvY2tldC1zc2wtcGVybF8yLjA2OC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzk3ODZiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJpby9saWJpby1zb2NrZXQtc3NsLXBlcmxfMi4wNjguYmIKQEAgLTAsMCArMSw0NyBAQAorU1VNTUFSWSA9ICJQZXJsIGxpYnJhcnkgZm9yIHRyYW5zcGFyZW50IFNTTCIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIGlzIGEgdHJ1ZSBkcm9wLWluIHJlcGxhY2VtZW50IGZvciBJTzo6U29ja2V0OjpJTkVUIHRoYXQgXAordXNlcyBTU0wgdG8gZW5jcnlwdCBkYXRhIGJlZm9yZSBpdCBpcyB0cmFuc2ZlcnJlZCB0byBhIHJlbW90ZSBzZXJ2ZXIgXAorb3IgY2xpZW50LiBJTzo6U29ja2V0OjpTU0wgc3VwcG9ydHMgYWxsIHRoZSBleHRyYSBmZWF0dXJlcyB0aGF0IG9uZSBcCituZWVkcyB0byB3cml0ZSBhIGZ1bGwtZmVhdHVyZWQgU1NMIGNsaWVudCBvciBzZXJ2ZXIgYXBwbGljYXRpb246IFwKK211bHRpcGxlIFNTTCBjb250ZXh0cywgY2lwaGVyIHNlbGVjdGlvbiwgY2VydGlmaWNhdGUgdmVyaWZpY2F0aW9uLCBhbmQgXAorU1NMIHZlcnNpb24gc2VsZWN0aW9uLiBBcyBhbiBleHRyYSBib251cywgaXQgd29ya3MgcGVyZmVjdGx5IHdpdGggXAorbW9kX3BlcmwuIgorSE9NRVBBR0UgPSAiaHR0cDovL3NlYXJjaC5jcGFuLm9yZy9kaXN0L0lPLVNvY2tldC1TU0wvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMHxHUEx2MSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9NRVRBLnltbDtiZWdpbmxpbmU9MTI7ZW5kbGluZT0xMjttZDU9OTYzY2UyODIyODM0Nzg3NWFjZTY4MmRlNTZlZWY4ZTgiCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgbGlibmV0LXNzbGVheS1wZXJsIFwKKyAgICBwZXJsLW1vZHVsZS1hdXRvbG9hZGVyIFwKKyAgICBwZXJsLW1vZHVsZS1zY2FsYXItdXRpbCBcCisgICAgcGVybC1tb2R1bGUtaW8tc29ja2V0IFwKKyIKKworU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9TL1NVL1NVTExSL0lPLVNvY2tldC1TU0wtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjQyMzBjODI5Yzg4NzU4ODk4NDgwOTNiMmI0NmE3Mjg0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ0MjBmYzAwNTZmMTgyN2I0ZGQxMjQ1ZWFjY2EwZGE1NmUyMTgyYjRlZjZmYzA3OGYxMDdkYzQzYzNmYjhmZjkiCisKK1MgPSAiJHtXT1JLRElSfS9JTy1Tb2NrZXQtU1NMLSR7UFZ9IgorCitpbmhlcml0IGNwYW4gcHRlc3QKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIG1rZGlyIC1wICR7RH0ke2RvY2Rpcn0vJHtQTn0vCisgICAgY3AgJHtTfS9CVUdTICR7RH0ke2RvY2Rpcn0vJHtQTn0vCisgICAgY3AgJHtTfS9DaGFuZ2VzICR7RH0ke2RvY2Rpcn0vJHtQTn0vCisgICAgY3AgJHtTfS9SRUFETUUgJHtEfSR7ZG9jZGlyfS8ke1BOfS8KKyAgICBjcCAtcFJQICR7U30vZG9jcyAke0R9JHtkb2NkaXJ9LyR7UE59LworICAgIGNwIC1wUlAgJHtTfS9jZXJ0cyAke0R9JHtkb2NkaXJ9LyR7UE59LworICAgIGNwIC1wUlAgJHtTfS9leGFtcGxlICR7RH0ke2RvY2Rpcn0vJHtQTn0vCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgIGNwIC1yICR7Qn0vdCAke0R9JHtQVEVTVF9QQVRIfQorICAgIGNwIC1yICR7Qn0vY2VydHMgJHtEfSR7UFRFU1RfUEFUSH0KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vby9saWJtb28tcGVybF8yLjAwMzAwNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9vL2xpYm1vby1wZXJsXzIuMDAzMDA2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYmQwZWFlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9vL2xpYm1vby1wZXJsXzIuMDAzMDA2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotU1VNTUFSWSA9ICJNb28gLSBNaW5pbWFsaXN0IE9iamVjdCBPcmllbnRhdGlvbiAod2l0aCBNb29zZSBjb21wYXRpYmlsaXR5KSIKLURFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIHVzIGFuIGV4dHJlbWVseSBsaWdodC13ZWlnaHQgc3Vic2V0IG9mIFwiTW9vc2VcIiBcCi1vcHRpbWlzZWQgZm9yIHJhcGlkIHN0YXJ0dXAgYW5kIFwicGF5IG9ubHkgZm9yIHdoYXQgeW91IHVzZVwiLiIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1IT01FUEFHRSA9ICJodHRwOi8vbWV0YXBhbi5vcmcvcmVsZWFzZS9Nb28vIgotCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT03NDI7ZW5kbGluZT03ODc7bWQ1PTJlZTZhNjI4YTA0YWYwOGQ3NWJjNzNhODZkYTg2ZDRhIgotCi1TUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvSC9IQS9IQUFSRy9Nb28tJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjUzYWY3ZTc4NDk0OTJhOGUzOTk0ZWUzNzlkMTJlMzQ4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjYjIwOTJhYjE4YTQ1MDA1YjVlMmU4NDQ2NWViZjNhNDk5OWQ4ZTgyYTQzYTA5ZjVhOTRkODU5YWU3ZjI0NzIiCi0KLVMgPSAiJHtXT1JLRElSfS9Nb28tJHtQVn0iCi0KLWluaGVyaXQgY3BhbgotCi1SREVQRU5EU18ke1BOfSA9ICIgbGliY2xhc3MtbWV0aG9kLW1vZGlmaWVycy1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICBsaWJkZXZlbC1nbG9iYWxkZXN0cnVjdGlvbi1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICBsaWJtb2R1bGUtcnVudGltZS1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICBsaWJyb2xlLXRpbnktcGVybCBcCi0gICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtY29uc3RhbnQgXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKLSAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1tcm8gXAotICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXNjYWxhci11dGlsIFwKLSIKLQotUlBST1ZJREVTXyR7UE59ID0gIiBsaWJtZXRob2QtaW5saW5lci1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlibWV0aG9kLWdlbmVyYXRlLWFjY2Vzc29yLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJtZXRob2QtZ2VuZXJhdGUtYnVpbGRhbGwtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYm1ldGhvZC1nZW5lcmF0ZS1jb25zdHJ1Y3Rvci1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlibWV0aG9kLWdlbmVyYXRlLWRlbW9saXNoYWxsLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJtb28tcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYm1vby1oYW5kbGVtb29zZS1wZXJsIFwKLSAgICAgICAgICAgICAgICAgICAgbGlibW9vLWhhbmRsZW1vb3NlLWZha2VtZXRhY2xhc3MtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYm1vby1vYmplY3QtcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYm1vby1yb2xlLXBlcmwgXAotICAgICAgICAgICAgICAgICAgICBsaWJzdWItZGVmZXItcGVybCBcCi0gICAgICAgICAgICAgICAgICAgIGxpYnN1Yi1xdW90ZS1wZXJsIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vby9saWJtb28tcGVybF8yLjAwNDAwMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibW9vL2xpYm1vby1wZXJsXzIuMDA0MDAwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiYWQ3NGQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYm1vby9saWJtb28tcGVybF8yLjAwNDAwMC5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIk1vbyAtIE1pbmltYWxpc3QgT2JqZWN0IE9yaWVudGF0aW9uICh3aXRoIE1vb3NlIGNvbXBhdGliaWxpdHkpIgorREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgdXMgYW4gZXh0cmVtZWx5IGxpZ2h0LXdlaWdodCBzdWJzZXQgb2YgXCJNb29zZVwiIFwKK29wdGltaXNlZCBmb3IgcmFwaWQgc3RhcnR1cCBhbmQgXCJwYXkgb25seSBmb3Igd2hhdCB5b3UgdXNlXCIuIgorCitTRUNUSU9OID0gImxpYnMiCisKK0hPTUVQQUdFID0gImh0dHA6Ly9tZXRhcGFuLm9yZy9yZWxlYXNlL01vby8iCisKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTc0MjtlbmRsaW5lPTc4NzttZDU9MGU3ZWU0NGY1Y2U1ZTliODQ2MTljZDE5OGNhYWQxZDYiCisKK1NSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9IL0hBL0hBQVJHL01vby0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiZTU0MjEwNDU1M2Q2MTZiMTU2MzFiNWM2NmNjZWU5MDQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzIzMjQwZDAwMDM5NGNmMzhlYzQyZTg2NWIwNWNiODkyOGY2MjVjODJjOTM5MWNkMmNkYzcyYjMzYzUxYjgzNCIKKworUyA9ICIke1dPUktESVJ9L01vby0ke1BWfSIKKworaW5oZXJpdCBjcGFuCisKK1JERVBFTkRTXyR7UE59ID0gIiBsaWJjbGFzcy1tZXRob2QtbW9kaWZpZXJzLXBlcmwgXAorICAgICAgICAgICAgICAgICAgIGxpYmRldmVsLWdsb2JhbGRlc3RydWN0aW9uLXBlcmwgXAorICAgICAgICAgICAgICAgICAgIGxpYm1vZHVsZS1ydW50aW1lLXBlcmwgXAorICAgICAgICAgICAgICAgICAgIGxpYnJvbGUtdGlueS1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jb25zdGFudCBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZXhwb3J0ZXIgXAorICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLW1ybyBcCisgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtc2NhbGFyLXV0aWwgXAorIgorCitSUFJPVklERVNfJHtQTn0gPSAiIGxpYm1ldGhvZC1pbmxpbmVyLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJtZXRob2QtZ2VuZXJhdGUtYWNjZXNzb3ItcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYm1ldGhvZC1nZW5lcmF0ZS1idWlsZGFsbC1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlibWV0aG9kLWdlbmVyYXRlLWNvbnN0cnVjdG9yLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJtZXRob2QtZ2VuZXJhdGUtZGVtb2xpc2hhbGwtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYm1vby1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlibW9vLWhhbmRsZW1vb3NlLXBlcmwgXAorICAgICAgICAgICAgICAgICAgICBsaWJtb28taGFuZGxlbW9vc2UtZmFrZW1ldGFjbGFzcy1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlibW9vLW9iamVjdC1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlibW9vLXJvbGUtcGVybCBcCisgICAgICAgICAgICAgICAgICAgIGxpYnN1Yi1kZWZlci1wZXJsIFwKKyAgICAgICAgICAgICAgICAgICAgbGlic3ViLXF1b3RlLXBlcmwgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1kbnMtcGVybF8xLjIxLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LWRucy1wZXJsXzEuMjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU4YjhlZWMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LWRucy1wZXJsXzEuMjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgY29udGFpbnMgdGhlIEROUy5wbSBtb2R1bGUgd2l0aCBmcmllbmRzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubmV0LWRucy5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJNSVQiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRTtiZWdpbmxpbmU9MjUyO2VuZGxpbmU9MjY5O21kNT0yN2RiMzdiNDJjZDFhNTE3M2E1MzkyMmQ2NzA3MmJjYiIKLQotREVQRU5EUyArPSAicGVybCIKLQotU1JDX1VSSSA9ICJodHRwOi8vc2VhcmNoLmNwYW4ub3JnL0NQQU4vYXV0aG9ycy9pZC9OL05ML05MTkVUTEFCUy9OZXQtRE5TLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjkxZTg1OTNlYjZlZWQ0MTk5NWU2ZWRjNTY3ZmI2ZmVjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRkZWZlMTNiMjgwODRmZmNjOGYxMGE5NmIzYzEzYzU5NDQ5ZGJmNmZjMzcxYzAwNmQxMjk2MzBlYTBjZTc2N2EiCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIk5ldFwtRE5TXC0oP1A8cHZlcj4oXGQrXC5cZCspKSg/IV9cZCspLnRhciIKLQotUyA9ICIke1dPUktESVJ9L05ldC1ETlMtJHtQVn0iCi0KLUVYVFJBX0NQQU5GTEFHUyA9ICJFWFBBVExJQlBBVEg9JHtTVEFHSU5HX0xJQkRJUn0gRVhQQVRJTkNQQVRIPSR7U1RBR0lOR19JTkNESVJ9IgotCi1pbmhlcml0IGNwYW4gcHRlc3QtcGVybAotCi1SREVQRU5EU18ke1BOfSA9ICIgXAotICAgIGxpYmRpZ2VzdC1obWFjLXBlcmwgXAotICAgIHBlcmwtbW9kdWxlLWJhc2UgXAotICAgIHBlcmwtbW9kdWxlLWNvbnN0YW50IFwKLSAgICBwZXJsLW1vZHVsZS1kaWdlc3QtbWQ1IFwKLSAgICBwZXJsLW1vZHVsZS1kaWdlc3Qtc2hhIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLXNwZWMgXAotICAgIHBlcmwtbW9kdWxlLWludGVnZXIgXAotICAgIHBlcmwtbW9kdWxlLWlvLWZpbGUgXAotICAgIHBlcmwtbW9kdWxlLWlvLXNlbGVjdCBcCi0gICAgcGVybC1tb2R1bGUtaW8tc29ja2V0IFwKLSAgICBwZXJsLW1vZHVsZS1pby1zb2NrZXQtaXAgXAotICAgIHBlcmwtbW9kdWxlLW1pbWUtYmFzZTY0IFwKLSAgICBwZXJsLW1vZHVsZS1zY2FsYXItdXRpbCBcCi0gICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKLSAgICBwZXJsLW1vZHVsZS10aW1lLWxvY2FsIFwKLSIKLQotUlJFQ09NTUVORFNfJHtQTn0gKz0gIiBcCi0gICAgbGlibmV0LWRucy1zZWMtcGVybCBcCi0iCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAotICAgIHBlcmwtbW9kdWxlLWVuY29kZSBcCi0gICAgcGVybC1tb2R1bGUtZW5jb2RlLWJ5dGUgXAotICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLW1tIFwKLSAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1tbS11bml4IFwKLSAgICBwZXJsLW1vZHVsZS1vdmVybG9hZCBcCi0iCi0KLXB5dGhvbiBfX2Fub255bW91cyAoKSB7Ci0gICAgIyByYXRoZXIgdGhhbiB1c2UgImZpbmQiIHRvIGRldGVybWluZSBsaWJjLSouc28sCi0gICAgIyBzdGF0aWNhbGx5IGV4cG9ydCB0aGUga25vd24gcGF0aHMgZm9yIGdsaWJjIGFuZCBtdXNsCi0gICAgaW1wb3J0IG9zCi0gICAgaWYgZC5nZXRWYXIoJ1RDTElCQycpID09ICJnbGliYyI6Ci0gICAgICAgIG9zLmVudmlyb25bIkxJQkMiXSA9ICIke1NUQUdJTkdfQkFTRUxJQkRJUn0vbGliYy5zby42IgotICAgIGVsaWYgZC5nZXRWYXIoJ1RDTElCQycpID09ICJtdXNsIjoKLSAgICAgICAgb3MuZW52aXJvblsiTElCQyJdID0gIiR7U1RBR0lOR19MSUJESVJ9L2xpYmMuc28iCi0gICAgZWxzZToKLSAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJpbmNvbXBhdGlibGUgd2l0aCAlcyBDIGxpYnJhcnkiICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZC5nZXRWYXIoJ1RDTElCQycpKQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1kbnMtcGVybF8xLjIzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJuZXQvbGlibmV0LWRucy1wZXJsXzEuMjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTEwZGFmMgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlibmV0L2xpYm5ldC1kbnMtcGVybF8xLjIzLmJiCkBAIC0wLDAgKzEsNjYgQEAKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0aGUgRE5TLnBtIG1vZHVsZSB3aXRoIGZyaWVuZHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5uZXQtZG5zLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIk1JVCIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0yNTI7ZW5kbGluZT0yNjk7bWQ1PTI3ZGIzN2I0MmNkMWE1MTczYTUzOTIyZDY3MDcyYmNiIgorCitERVBFTkRTICs9ICJwZXJsIgorCitTUkNfVVJJID0gImh0dHA6Ly9zZWFyY2guY3Bhbi5vcmcvQ1BBTi9hdXRob3JzL2lkL04vTkwvTkxORVRMQUJTL05ldC1ETlMtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTA1NTE3MTM5YjM5NjUwZjc4YzIxYjJlNDYxYWM5N2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2YzMjdmMzEwNjNiOTZjZDM0MjFiZTQzYTFkNmNiNDFlYWE2MWQwNTk1NDUwMDMyZTU3OTA1YjFiZDZiMmMzZSIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiTmV0XC1ETlNcLSg/UDxwdmVyPihcZCtcLlxkKykpKD8hX1xkKykudGFyIgorCitTID0gIiR7V09SS0RJUn0vTmV0LUROUy0ke1BWfSIKKworRVhUUkFfQ1BBTkZMQUdTID0gIkVYUEFUTElCUEFUSD0ke1NUQUdJTkdfTElCRElSfSBFWFBBVElOQ1BBVEg9JHtTVEFHSU5HX0lOQ0RJUn0iCisKK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCisKK1JERVBFTkRTXyR7UE59ID0gIiBcCisgICAgbGliZGlnZXN0LWhtYWMtcGVybCBcCisgICAgcGVybC1tb2R1bGUtYmFzZSBcCisgICAgcGVybC1tb2R1bGUtY29uc3RhbnQgXAorICAgIHBlcmwtbW9kdWxlLWRpZ2VzdC1tZDUgXAorICAgIHBlcmwtbW9kdWxlLWRpZ2VzdC1zaGEgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYyBcCisgICAgcGVybC1tb2R1bGUtaW50ZWdlciBcCisgICAgcGVybC1tb2R1bGUtaW8tZmlsZSBcCisgICAgcGVybC1tb2R1bGUtaW8tc2VsZWN0IFwKKyAgICBwZXJsLW1vZHVsZS1pby1zb2NrZXQgXAorICAgIHBlcmwtbW9kdWxlLWlvLXNvY2tldC1pcCBcCisgICAgcGVybC1tb2R1bGUtbWltZS1iYXNlNjQgXAorICAgIHBlcmwtbW9kdWxlLXNjYWxhci11dGlsIFwKKyAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAorICAgIHBlcmwtbW9kdWxlLXRpbWUtbG9jYWwgXAorIgorCitSUkVDT01NRU5EU18ke1BOfSArPSAiIFwKKyAgICBsaWJuZXQtZG5zLXNlYy1wZXJsIFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisgICAgcGVybC1tb2R1bGUtZW5jb2RlIFwKKyAgICBwZXJsLW1vZHVsZS1lbmNvZGUtYnl0ZSBcCisgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtbW0gXAorICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLW1tLXVuaXggXAorICAgIHBlcmwtbW9kdWxlLW92ZXJsb2FkIFwKKyIKKworcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKKyAgICAjIHJhdGhlciB0aGFuIHVzZSAiZmluZCIgdG8gZGV0ZXJtaW5lIGxpYmMtKi5zbywKKyAgICAjIHN0YXRpY2FsbHkgZXhwb3J0IHRoZSBrbm93biBwYXRocyBmb3IgZ2xpYmMgYW5kIG11c2wKKyAgICBpbXBvcnQgb3MKKyAgICBpZiBkLmdldFZhcignVENMSUJDJykgPT0gImdsaWJjIjoKKyAgICAgICAgb3MuZW52aXJvblsiTElCQyJdID0gIiR7U1RBR0lOR19CQVNFTElCRElSfS9saWJjLnNvLjYiCisgICAgZWxpZiBkLmdldFZhcignVENMSUJDJykgPT0gIm11c2wiOgorICAgICAgICBvcy5lbnZpcm9uWyJMSUJDIl0gPSAiJHtTVEFHSU5HX0xJQkRJUn0vbGliYy5zbyIKKyAgICBlbHNlOgorICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoImluY29tcGF0aWJsZSB3aXRoICVzIEMgbGlicmFyeSIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignVENMSUJDJykpCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ0ZXN0L2xpYnRlc3QtZGVlcC1wZXJsXzEuMTI4LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ0ZXN0L2xpYnRlc3QtZGVlcC1wZXJsXzEuMTI4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGE5MTVjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlidGVzdC9saWJ0ZXN0LWRlZXAtcGVybF8xLjEyOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLVNVTU1BUlkgPSAiVGVzdDo6RGVlcCAtIEV4dHJlbWVseSBmbGV4aWJsZSBkZWVwIGNvbXBhcmlzb24iCi1ERVNDUklQVElPTiA9ICJJZiB5b3UgZG9uJ3Qga25vdyBhbnl0aGluZyBhYm91dCBhdXRvbWF0ZWQgdGVzdGluZyBpbiBQZXJsIFwKLXRoZW4geW91IHNob3VsZCBwcm9iYWJseSByZWFkIGFib3V0IFRlc3Q6OlNpbXBsZSBhbmQgVGVzdDo6TW9yZSBiZWZvcmUgXAotcHJlY2VkaW5nLiBUZXN0OjpEZWVwIHVzZXMgdGhlIFRlc3Q6OkJ1aWxkZXIgZnJhbWV3b3JrLiBcCi1cIAotVGVzdDo6RGVlcCBnaXZlcyB5b3UgdmVyeSBmbGV4aWJsZSB3YXlzIHRvIGNoZWNrIHRoYXQgdGhlIHJlc3VsdCB5b3UgZ290IGlzIFwKLXRoZSByZXN1bHQgeW91IHdlcmUgZXhwZWN0aW5nLiBBdCBpdHMgc2ltcGxlc3QgaXQgY29tcGFyZXMgdHdvIHN0cnVjdHVyZXMgXAotYnkgZ29pbmcgdGhyb3VnaCBlYWNoIGxldmVsLCBlbnN1cmluZyB0aGF0IHRoZSB2YWx1ZXMgbWF0Y2gsIHRoYXQgYXJyYXlzIGFuZCBcCi1oYXNoZXMgaGF2ZSB0aGUgc2FtZSBlbGVtZW50cyBhbmQgdGhhdCByZWZlcmVuY2VzIGFyZSBibGVzc2VkIGludG8gdGhlIFwKLWNvcnJlY3QgY2xhc3MuIEl0IGFsc28gaGFuZGxlcyBjaXJjdWxhciBkYXRhIHN0cnVjdHVyZXMgd2l0aG91dCBnZXR0aW5nIFwKLWNhdWdodCBpbiBhbiBpbmZpbml0ZSBsb29wLiBcCi1cCi1XaGVyZSBpdCBiZWNvbWVzIG1vcmUgaW50ZXJlc3RpbmcgaXMgaW4gYWxsb3dpbmcgeW91IHRvIGRvIHNvbWV0aGluZyBiZXNpZGVzIFwKLXNpbXBsZSBleGFjdCBjb21wYXJpc29ucy4gV2l0aCBzdHJpbmdzLCB0aGUgXCdlcVwnIG9wZXJhdG9yIGNoZWNrcyB0aGF0IDIgXAotc3RyaW5ncyBhcmUgZXhhY3RseSBlcXVhbCBidXQgc29tZXRpbWVzIHRoYXQncyBub3Qgd2hhdCB5b3Ugd2FudC4gV2hlbiB5b3UgXAotZG9uJ3Qga25vdyBleGFjdGx5IHdoYXQgdGhlIHN0cmluZyBzaG91bGQgYmUgYnV0IHlvdSBkbyBrbm93IHNvbWUgdGhpbmdzIFwKLWFib3V0IGhvdyBpdCBzaG91bGQgbG9vaywgXCdlcVwnIGlzIG5vIGdvb2QgYW5kIHlvdSBtdXN0IHVzZSBwYXR0ZXJuIG1hdGNoaW5nIFwKLWluc3RlYWQuIFRlc3Q6OkRlZXAgcHJvdmlkZXMgcGF0dGVybiBtYXRjaGluZyBmb3IgY29tcGxleCBkYXRhIHN0cnVjdHVyZXMgXAotZGlzdHJpYnV0aW9uLiIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9yamJzL1Rlc3QtRGVlcC8iCi0KLUxJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9saWIvVGVzdC9EZWVwLnBtO2JlZ2lubGluZT0xODE3O2VuZGxpbmU9MTgyNjttZDU9YWViYzc5M2M4N2EzZDg3NzFmZTk4ZDVkMzY5ODk4ZTciCi0KLVNSQ19VUkkgPSAiJHtDUEFOX01JUlJPUn0vYXV0aG9ycy9pZC9SL1JKL1JKQlMvVGVzdC1EZWVwLSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI5YmM0NzE0N2VhNzIwZmMwMWJjNmIyMTRhZmI4ODRmZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NTJkN2U4MzZmYmE4MjY5YjBiNzU1MDgyMDUxYTI0YTFhMzA5ZDAxNWE4Yjc2ODM4NzkwYWY5ZTM3NjAwOTJmIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJUZXN0XC1EZWVwXC0oP1A8cHZlcj4oXGQrXC5cZCspKSg/IV9cZCspLnRhciIKLQotUyA9ICIke1dPUktESVJ9L1Rlc3QtRGVlcC0ke1BWfSIKLQotaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgcGVybC1tb2R1bGUtZHluYWxvYWRlciBcCi0gICAgcGVybC1tb2R1bGUtZXhwb3J0ZXIgXAotICAgIHBlcmwtbW9kdWxlLWZjbnRsIFwKLSAgICBwZXJsLW1vZHVsZS1saXN0LXV0aWwgXAotICAgIHBlcmwtbW9kdWxlLXNjYWxhci11dGlsIFwKLSAgICBwZXJsLW1vZHVsZS1zdHJpY3QgXAotICAgIHBlcmwtbW9kdWxlLXZhcnMgXAotICAgIHBlcmwtbW9kdWxlLXdhcm5pbmdzIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCi0gICAgcGVybC1tb2R1bGUtaWYgXAotICAgIHBlcmwtbW9kdWxlLWxpYiBcCi0gICAgcGVybC1tb2R1bGUtdGVzdC1tb3JlIFwKLSAgICBwZXJsLW1vZHVsZS10ZXN0LXRlc3RlciBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ0ZXN0L2xpYnRlc3QtZGVlcC1wZXJsXzEuMTMwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ0ZXN0L2xpYnRlc3QtZGVlcC1wZXJsXzEuMTMwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4MmExYTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnRlc3QvbGlidGVzdC1kZWVwLXBlcmxfMS4xMzAuYmIKQEAgLTAsMCArMSw1NiBAQAorU1VNTUFSWSA9ICJUZXN0OjpEZWVwIC0gRXh0cmVtZWx5IGZsZXhpYmxlIGRlZXAgY29tcGFyaXNvbiIKK0RFU0NSSVBUSU9OID0gIklmIHlvdSBkb24ndCBrbm93IGFueXRoaW5nIGFib3V0IGF1dG9tYXRlZCB0ZXN0aW5nIGluIFBlcmwgXAordGhlbiB5b3Ugc2hvdWxkIHByb2JhYmx5IHJlYWQgYWJvdXQgVGVzdDo6U2ltcGxlIGFuZCBUZXN0OjpNb3JlIGJlZm9yZSBcCitwcmVjZWRpbmcuIFRlc3Q6OkRlZXAgdXNlcyB0aGUgVGVzdDo6QnVpbGRlciBmcmFtZXdvcmsuIFwKK1wgCitUZXN0OjpEZWVwIGdpdmVzIHlvdSB2ZXJ5IGZsZXhpYmxlIHdheXMgdG8gY2hlY2sgdGhhdCB0aGUgcmVzdWx0IHlvdSBnb3QgaXMgXAordGhlIHJlc3VsdCB5b3Ugd2VyZSBleHBlY3RpbmcuIEF0IGl0cyBzaW1wbGVzdCBpdCBjb21wYXJlcyB0d28gc3RydWN0dXJlcyBcCitieSBnb2luZyB0aHJvdWdoIGVhY2ggbGV2ZWwsIGVuc3VyaW5nIHRoYXQgdGhlIHZhbHVlcyBtYXRjaCwgdGhhdCBhcnJheXMgYW5kIFwKK2hhc2hlcyBoYXZlIHRoZSBzYW1lIGVsZW1lbnRzIGFuZCB0aGF0IHJlZmVyZW5jZXMgYXJlIGJsZXNzZWQgaW50byB0aGUgXAorY29ycmVjdCBjbGFzcy4gSXQgYWxzbyBoYW5kbGVzIGNpcmN1bGFyIGRhdGEgc3RydWN0dXJlcyB3aXRob3V0IGdldHRpbmcgXAorY2F1Z2h0IGluIGFuIGluZmluaXRlIGxvb3AuIFwKK1wKK1doZXJlIGl0IGJlY29tZXMgbW9yZSBpbnRlcmVzdGluZyBpcyBpbiBhbGxvd2luZyB5b3UgdG8gZG8gc29tZXRoaW5nIGJlc2lkZXMgXAorc2ltcGxlIGV4YWN0IGNvbXBhcmlzb25zLiBXaXRoIHN0cmluZ3MsIHRoZSBcJ2VxXCcgb3BlcmF0b3IgY2hlY2tzIHRoYXQgMiBcCitzdHJpbmdzIGFyZSBleGFjdGx5IGVxdWFsIGJ1dCBzb21ldGltZXMgdGhhdCdzIG5vdCB3aGF0IHlvdSB3YW50LiBXaGVuIHlvdSBcCitkb24ndCBrbm93IGV4YWN0bHkgd2hhdCB0aGUgc3RyaW5nIHNob3VsZCBiZSBidXQgeW91IGRvIGtub3cgc29tZSB0aGluZ3MgXAorYWJvdXQgaG93IGl0IHNob3VsZCBsb29rLCBcJ2VxXCcgaXMgbm8gZ29vZCBhbmQgeW91IG11c3QgdXNlIHBhdHRlcm4gbWF0Y2hpbmcgXAoraW5zdGVhZC4gVGVzdDo6RGVlcCBwcm92aWRlcyBwYXR0ZXJuIG1hdGNoaW5nIGZvciBjb21wbGV4IGRhdGEgc3RydWN0dXJlcyBcCitkaXN0cmlidXRpb24uIgorCitTRUNUSU9OID0gImxpYnMiCisKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL3JqYnMvVGVzdC1EZWVwLyIKKworTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2xpYi9UZXN0L0RlZXAucG07YmVnaW5saW5lPTE4MTc7ZW5kbGluZT0xODI2O21kNT1hODk3YTQyYmFmYzM0MjJjYWIxN2MyZWI5NGY4N2E3YyIKKworU1JDX1VSSSA9ICIke0NQQU5fTUlSUk9SfS9hdXRob3JzL2lkL1IvUkovUkpCUy9UZXN0LURlZXAtJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImQ0NjZlNDcxMTA4ZjdmN2E1ZGYzODAyY2IxMzc2MWFjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwNjRmNDk0ZjVmNjI1ODdkMGFlNTAxY2E0MzkxMDU4MjFlZTU4NDZjNjg3ZGM2NTAzMjMzZjU1MzAwYTdjNTYiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIlRlc3RcLURlZXBcLSg/UDxwdmVyPihcZCtcLlxkKykpKD8hX1xkKykudGFyIgorCitTID0gIiR7V09SS0RJUn0vVGVzdC1EZWVwLSR7UFZ9IgorCitpbmhlcml0IGNwYW4gcHRlc3QtcGVybAorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICBwZXJsLW1vZHVsZS1keW5hbG9hZGVyIFwKKyAgICBwZXJsLW1vZHVsZS1leHBvcnRlciBcCisgICAgcGVybC1tb2R1bGUtZmNudGwgXAorICAgIHBlcmwtbW9kdWxlLWxpc3QtdXRpbCBcCisgICAgcGVybC1tb2R1bGUtc2NhbGFyLXV0aWwgXAorICAgIHBlcmwtbW9kdWxlLXN0cmljdCBcCisgICAgcGVybC1tb2R1bGUtdmFycyBcCisgICAgcGVybC1tb2R1bGUtd2FybmluZ3MgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKyAgICBwZXJsLW1vZHVsZS1pZiBcCisgICAgcGVybC1tb2R1bGUtbGliIFwKKyAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAorICAgIHBlcmwtbW9kdWxlLXRlc3QtdGVzdGVyIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnRlc3QvbGlidGVzdC13YXJuaW5ncy1wZXJsXzAuMDI4LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9saWJ0ZXN0L2xpYnRlc3Qtd2FybmluZ3MtcGVybF8wLjAyOC5iYgppbmRleCBiNDBhNTQ1Li5mMmRkYTE5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXBlcmwvcmVjaXBlcy1wZXJsL2xpYnRlc3QvbGlidGVzdC13YXJuaW5ncy1wZXJsXzAuMDI4LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvbGlidGVzdC9saWJ0ZXN0LXdhcm5pbmdzLXBlcmxfMC4wMjguYmIKQEAgLTI0LDYgKzI0LDYgQEAKIAogUyA9ICIke1dPUktESVJ9L1Rlc3QtV2FybmluZ3MtJHtQVn0iCiAKLWluaGVyaXQgY3BhbiBhbGxhcmNoIHB0ZXN0LXBlcmwKK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybC9yZWNpcGVzLXBlcmwvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS1wZXJsLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLXBlcmwuYmIKaW5kZXggOWQwZTMzYi4uOWIyNDA2YiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLXBlcmwuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1wZXJsL3JlY2lwZXMtcGVybC9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLXBlcmwuYmIKQEAgLTE2LDcgKzE2LDcgQEAKICAgICBsaWJ0ZXh0LXdyYXBpMThuLXBlcmwgbGlibG9jYWxlLWdldHRleHQtcGVybCBsaWJkYXRhLWhleGR1bXAtcGVybCBcCiAgICAgbGliZXh0dXRpbHMtaW5zdGFsbHBhdGhzLXBlcmwgbGliZXh0dXRpbHMtaGVscGVycy1wZXJsIGxpYmV4dHV0aWxzLXBhcnNleHMtcGVybCBcCiAgICAgbGliZXh0dXRpbHMtY29uZmlnLXBlcmwgbGliZXh0dXRpbHMtY3BwZ3Vlc3MtcGVybCBsaWJpbXBvcnQtaW50by1wZXJsIFwKLSAgICBsaWJjcnlwdC1vcGVuc3NsLXJzYS1wZXJsIGxpYmNyeXB0LW9wZW5zc2wtZ3Vlc3MgbGliY3J5cHQtb3BlbnNzbC1yYW5kb20tcGVybCBcCisgICAgbGliY3J5cHQtb3BlbnNzbC1yc2EtcGVybCBsaWJjcnlwdC1vcGVuc3NsLWd1ZXNzLXBlcmwgbGliY3J5cHQtb3BlbnNzbC1yYW5kb20tcGVybCBcCiAgICAgbGlieG1sLXNheC13cml0ZXItcGVybCBsaWJ4bWwtbGlieG1sLXBlcmwgbGlieG1sLWZpbHRlci1idWZmZXJ0ZXh0LXBlcmwgXAogICAgIGFkZHVzZXIgXAogICAgIGxpYmF1dGhlbi1zYXNsLXBlcmwgbGlibmV0LWxkYXAtcGVybCBsaWJuZXQtZG5zLXBlcmwgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vY29uZi9sYXllci5jb25mIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vY29uZi9sYXllci5jb25mCmluZGV4IGRiNjU5NDMuLjdjZmVhZmUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL2NvbmYvbGF5ZXIuY29uZgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9jb25mL2xheWVyLmNvbmYKQEAgLTE0LDYgKzE0LDYgQEAKIAogTEFZRVJERVBFTkRTX21ldGEtcHl0aG9uID0gImNvcmUgb3BlbmVtYmVkZGVkLWxheWVyIgogCi1MQVlFUlNFUklFU19DT01QQVRfbWV0YS1weXRob24gPSAidGh1ZCB3YXJyaW9yIHpldXMiCitMQVlFUlNFUklFU19DT01QQVRfbWV0YS1weXRob24gPSAidGh1ZCB3YXJyaW9yIHpldXMgZHVuZmVsbCIKIAogTElDRU5TRV9QQVRIICs9ICIke0xBWUVSRElSfS9saWNlbnNlcyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2dhdGVvbmUvZ2F0ZW9uZV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9nYXRlb25lL2dhdGVvbmVfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZDJjYTAwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L2dhdGVvbmUvZ2F0ZW9uZV9naXQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4NSArMCwwIEBACi1TVU1NQVJZID0gIkhUTUw1IChwbHVnaW4tZnJlZSkgd2ViLWJhc2VkIHRlcm1pbmFsIGVtdWxhdG9yIGFuZCBTU0ggY2xpZW50IgotTElDRU5TRSA9ICJBR1BMLTMuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT04MzRjYmM2OTk1ZGI4ODQzM2RiMTdjZGY4OTUzYTQyOCIKLUhPTUVQQUdFID0gImh0dHA6Ly9saWZ0b2Zmc29mdHdhcmUuY29tL1Byb2R1Y3RzL0dhdGVPbmUiCi0KLVBWID0gIjEuMitnaXQke1NSQ1BWfSIKLVNSQ1JFViA9ICJmN2E5YmU0NmNiOTBmNTc0NTllYmQzNjNkMjQ3MDJkZTBlNjUxMDM0IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xpZnRvZmYvR2F0ZU9uZS5naXQ7YnJhbmNoPW1hc3RlciBcCi0gICAgICAgICAgIGZpbGU6Ly9nYXRlb25lLWF2YWhpLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vODBvZS5jb25mLmluIFwKLSAgICAgICAgICAgZmlsZTovL2dhdGVvbmUuc2VydmljZS5pbiBcCi0gICAgICAgICAgIGZpbGU6Ly9nYXRlb25lLWluaXQuaW4gXAotIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IHNldHVwdG9vbHMgcHl0aG9uLWRpciBzeXN0ZW1kIHVwZGF0ZS1yYy5kCi0KLURJU1RVVElMU19JTlNUQUxMX0FSR1MgKz0gIiBcCi0gICAgLS1pbnN0YWxsLWRhdGE9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXAotICAgIC0taW5zdGFsbC1zY3JpcHRzPSR7YmluZGlyfSBcCi0gICAgLS1za2lwX2luaXRfc2NyaXB0cyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0KLSAgICAjIGZpeCB1cCBoYXJkY29kZWQgcGF0aHMKLSAgICBmb3IgZmlsZSBpbiBnYXRlb25lLnNlcnZpY2UgZ2F0ZW9uZS1pbml0IDgwb2UuY29uZjsgZG8KLSAgICAgICAgc2VkIC1lIHM6QGJpbmRpckA6JHtiaW5kaXJ9OmcgXAotICAgICAgICAgICAgLWUgczpAbG9jYWxzdGF0ZUA6JHtsb2NhbHN0YXRlZGlyfTpnIFwKLSAgICAgICAgICAgIDwgJHtXT1JLRElSfS8kZmlsZS5pbiBcCi0gICAgICAgICAgICA+ICR7V09SS0RJUn0vJGZpbGUKLSAgICBkb25lCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vZ2F0ZW9uZS5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotICAgIGluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2dhdGVvbmUtaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvZ2F0ZW9uZQotCi0gICAgaW5zdGFsbCAtbSAwNzU1IC1kICR7RH0ke3N5c2NvbmZkaXJ9L2F2YWhpL3NlcnZpY2VzLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2dhdGVvbmUtYXZhaGkuc2VydmljZSAke0R9JHtzeXNjb25mZGlyfS9hdmFoaS9zZXJ2aWNlcy8KLQotICAgIGluc3RhbGwgLW0gMDc1NSAtZCAke0R9JHtzeXNjb25mZGlyfS9nYXRlb25lL2NvbmYuZC8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS84MG9lLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vZ2F0ZW9uZS9jb25mLmQvODBvZS5jb25mCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9nYXRlb25lCi19Ci0KLUZJTEVTXyR7UE59ID0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliICR7YmluZGlyfSAke2Jhc2VfbGliZGlyfSAke3N5c2NvbmZkaXJ9ICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotUkRFUEVORFNfJHtQTn0gPSAibWltZS1zdXBwb3J0IFwKLSAgICAgICAgICAgICAgICAgIG9wZW5zc2gtc3NoIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1jb21wcmVzc2lvbiBcCi0gICAgICAgICAgICAgICAgICBweXRob24tY29udGV4dGxpYiBcCi0gICAgICAgICAgICAgICAgICBweXRob24tY3J5cHQgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWRhdGV0aW1lIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1lbWFpbCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tZmNudGwgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWZ1dHVyZXMgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWh0bWwgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWltYWdpbmcgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWlvIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1qc29uIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1sb2dnaW5nIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1taXNjIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1tdWx0aXByb2Nlc3NpbmcgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLW5ldGNsaWVudCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tcGtndXRpbCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tcHlvcGVuc3NsIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1yZSBcCi0gICAgICAgICAgICAgICAgICBweXRob24tc2V0dXB0b29scyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tc2hlbGwgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXNpbXBsZWpzb24gXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXN1YnByb2Nlc3MgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXN5c2xvZyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tdGVybWluYWwgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXRleHR1dGlscyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tdG9ybmFkbyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tdW5peGFkbWluIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi14bWwgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLWh0bWw1bGliIFwKLSAgICAgICAgICAgICAgICAgIGJhc2ggXAotIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiZ2F0ZW9uZS5zZXJ2aWNlIgotSU5JVFNDUklQVF9OQU1FID0gImdhdGVvbmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tZ3NvY2tldHBvb2wvcHl0aG9uLWdzb2NrZXRwb29sXzAuMS42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLWdzb2NrZXRwb29sL3B5dGhvbi1nc29ja2V0cG9vbF8wLjEuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTk2YWQxYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tZ3NvY2tldHBvb2wvcHl0aG9uLWdzb2NrZXRwb29sXzAuMS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1nc29ja2V0cG9vbC5pbmMKLWluaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLWgyL3B5dGhvbi1oMi5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24taDIvcHl0aG9uLWgyLmluYwppbmRleCA0MjYyOWMyLi5jNDU3ODM2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24taDIvcHl0aG9uLWgyLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24taDIvcHl0aG9uLWgyLmluYwpAQCAtOCwzICs4LDUgQEAKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJiOGEzMmJkMjgyNTk0NDI0YzBhYzU1ODQ1Mzc3ZWVhMTNmYTU0ZmU0YThkYjAxMmYzYTE5OGVkOTIzZGMzYWI0IgogCiBpbmhlcml0IHB5cGkKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1ocGFjayAke1BZVEhPTl9QTn0taHlwZXJmcmFtZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1oMi9weXRob24taDJfMy4xLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24taDIvcHl0aG9uLWgyXzMuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiODQxMjk3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1oMi9weXRob24taDJfMy4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWgyLmluYwotCi1pbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1ocGFjay9weXRob24taHBhY2tfMy4wLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24taHBhY2svcHl0aG9uLWhwYWNrXzMuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYWFlYjg1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1ocGFjay9weXRob24taHBhY2tfMy4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWhwYWNrLmluYwotCi1pbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1oeXBlcmZyYW1lL3B5dGhvbi1oeXBlcmZyYW1lXzUuMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLWh5cGVyZnJhbWUvcHl0aG9uLWh5cGVyZnJhbWVfNS4yLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRmMGM5OTcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLWh5cGVyZnJhbWUvcHl0aG9uLWh5cGVyZnJhbWVfNS4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWh5cGVyZnJhbWUuaW5jCi0KLWluaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLW1wcnBjL3B5dGhvbi1tcHJwY18wLjEuMTcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbXBycGMvcHl0aG9uLW1wcnBjXzAuMS4xNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmIyZWEyMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tbXBycGMvcHl0aG9uLW1wcnBjXzAuMS4xNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBweXRob24tbXBycGMuaW5jCi1pbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1wcmlvcml0eS9weXRob24tcHJpb3JpdHlfMS4zLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHJpb3JpdHkvcHl0aG9uLXByaW9yaXR5XzEuMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYmUyNjI1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1wcmlvcml0eS9weXRob24tcHJpb3JpdHlfMS4zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXByaW9yaXR5LmluYwotCi1pbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weWNvbm5tYW4vcHl0aG9uLXB5Y29ubm1hbl8wLjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weWNvbm5tYW4vcHl0aG9uLXB5Y29ubm1hbl8wLjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2MxMmRiOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHljb25ubWFuL3B5dGhvbi1weWNvbm5tYW5fMC4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXB5Y29ubm1hbi5pbmMKLQotaW5oZXJpdCBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tZGJ1cyBweXRob24tcHByaW50IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5cm80L3B5dGhvbi1weXJvNF80Ljc3LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5cm80L3B5dGhvbi1weXJvNF80Ljc3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MzhjZjg2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXJvNC9weXRob24tcHlybzRfNC43Ny5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIFJlbW90ZSBPYmplY3RzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1jZDEzZGFmZDRlZWIwODAyYmI2ZWZlYTZiNGE0YmRiYyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjIxZjAxNWFlOTNjZjllYTJiYmJjNDE4YTIyNjdlOWZiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJiZmUxMmEyMmYzOTY0NzRiMGU1N2M4OThjN2UyYzU2MWE4Zjg1MGJmMjA1NWQ4Y2YwZjcxMTlmMGM3YTUyM2YiCi0KLVBZUElfUEFDS0FHRSA9ICJQeXJvNCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAotICAgICR7UFlUSE9OX1BOfS1zZWxlY3RvcnMzNCBcCi0gICAgJHtQWVRIT05fUE59LXNlcnBlbnQgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotICAgICR7UFlUSE9OX1BOfS16bGliIFwKLSAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHlybzQvcHl0aG9uMy1weXJvNF80Ljc3LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5cm80L3B5dGhvbjMtcHlybzRfNC43Ny5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZmU1OGVlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXB5cm80L3B5dGhvbjMtcHlybzRfNC43Ny5iYgpAQCAtMCwwICsxLDE2IEBACitTVU1NQVJZID0gIlB5dGhvbiBSZW1vdGUgT2JqZWN0cyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Y2QxM2RhZmQ0ZWViMDgwMmJiNmVmZWE2YjRhNGJkYmMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMWYwMTVhZTkzY2Y5ZWEyYmJiYzQxOGEyMjY3ZTlmYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyYmZlMTJhMjJmMzk2NDc0YjBlNTdjODk4YzdlMmM1NjFhOGY4NTBiZjIwNTVkOGNmMGY3MTE5ZjBjN2E1MjNmIgorCitQWVBJX1BBQ0tBR0UgPSAiUHlybzQiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgJHtQWVRIT05fUE59LXNlcnBlbnQgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXR1bi9weXRob24tcHl0dW5fMi4zLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tcHl0dW4vcHl0aG9uLXB5dHVuXzIuMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZmM1ODdmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi1weXR1bi9weXRob24tcHl0dW5fMi4zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXB5dHVuLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tdGhyaWZ0L3B5dGhvbi10aHJpZnRfMC4xMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXRocmlmdC9weXRob24tdGhyaWZ0XzAuMTMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmQ1MTYxOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tdGhyaWZ0L3B5dGhvbi10aHJpZnRfMC4xMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIHRoZSBBcGFjaGUgVGhyaWZ0IFJQQyBzeXN0ZW0iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9ZTk1Y2QyZjE3YzcwZDMxODBhMmIzNjEzMzIzMTlmZTAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjM2JjOGQ5YTkxMGQyYzljZTI2ZjJhZDFmN2M5Njc2MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5YWYxYzg2YmY3MzQzM2FmYzYwMTBlZDM3NmE2YzZhY2EyYjU0MDk5Y2MwZDYxODk1ZjY0MDg3MGE5YWU3ZDg5IgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi0jIFVzZSBkaWZmZXJlbnQgZmlsZW5hbWUgdG8gcHJldmVudCBjb25mbGljdHMgd2l0aCB0aHJpZnQgaXRzZWxmCi1QWVBJX1NSQ19VUklfYXBwZW5kID0gIjtkb3dubG9hZGZpbGVuYW1lPSR7QlB9LiR7UFlQSV9QQUNLQUdFX0VYVH0iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXRocmlmdC9weXRob24zLXRocmlmdF8wLjEzLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tdGhyaWZ0L3B5dGhvbjMtdGhyaWZ0XzAuMTMuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MGYxYTUwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXRocmlmdC9weXRob24zLXRocmlmdF8wLjEzLjAuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIHRoZSBBcGFjaGUgVGhyaWZ0IFJQQyBzeXN0ZW0iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9ZTk1Y2QyZjE3YzcwZDMxODBhMmIzNjEzMzIzMTlmZTAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjM2JjOGQ5YTkxMGQyYzljZTI2ZjJhZDFmN2M5Njc2MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YWYxYzg2YmY3MzQzM2FmYzYwMTBlZDM3NmE2YzZhY2EyYjU0MDk5Y2MwZDYxODk1ZjY0MDg3MGE5YWU3ZDg5IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworIyBVc2UgZGlmZmVyZW50IGZpbGVuYW1lIHRvIHByZXZlbnQgY29uZmxpY3RzIHdpdGggdGhyaWZ0IGl0c2VsZgorUFlQSV9TUkNfVVJJX2FwcGVuZCA9ICI7ZG93bmxvYWRmaWxlbmFtZT0ke0JQfS4ke1BZUElfUEFDS0FHRV9FWFR9IgorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3B5dGhvbi10eHdzL3B5dGhvbi10eHdzXzAuOS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXR4d3MvcHl0aG9uLXR4d3NfMC45LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzNjMxY2QuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXR4d3MvcHl0aG9uLXR4d3NfMC45LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIlR3aXN0ZWQgV2ViIFNvY2tldHMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vTW9zdEF3ZXNvbWVEdWRlL3R4V1MiCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc2Njk5ODMwZGI3ZmE5ZTg5N2Y2YTFhZDA1Zjk4ZWM4IgotCi1ERVBFTkRTID0gInB5dGhvbi10d2lzdGVkIHB5dGhvbi1zaXggcHl0aG9uLXZjdmVyc2lvbmVyIHB5dGhvbi1zaXgtbmF0aXZlIHB5dGhvbi12Y3ZlcnNpb25lci1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9Nb3N0QXdlc29tZUR1ZGUvdHhXUy5naXQiCi1TUkNSRVY9ICI4OGNmNmQ5YjliNjg1ZmZhMTcyMDY0NGJkNTNjNzQyYWZiMTBhNDE0IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXR4d3MvcHl0aG9uMy10eHdzXzAuOS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvcHl0aG9uLXR4d3MvcHl0aG9uMy10eHdzXzAuOS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUyMzU2ODIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS9weXRob24tdHh3cy9weXRob24zLXR4d3NfMC45LjEuYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJUd2lzdGVkIFdlYiBTb2NrZXRzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL01vc3RBd2Vzb21lRHVkZS90eFdTIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NjY5OTgzMGRiN2ZhOWU4OTdmNmExYWQwNWY5OGVjOCIKKworREVQRU5EUyA9ICJweXRob24zLXR3aXN0ZWQgcHl0aG9uMy1zaXggcHl0aG9uMy12Y3ZlcnNpb25lciBweXRob24zLXNpeC1uYXRpdmUgcHl0aG9uMy12Y3ZlcnNpb25lci1uYXRpdmUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9Nb3N0QXdlc29tZUR1ZGUvdHhXUy5naXQiCitTUkNSRVY9ICI4OGNmNmQ5YjliNjg1ZmZhMTcyMDY0NGJkNTNjNzQyYWZiMTBhNDE0IgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IHNldHVwdG9vbHMzCisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uLTAuMTUuMTkvcGFyYWxsZWxfbWFrZS5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uMy0wLjE1LjE5L3BhcmFsbGVsX21ha2UucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uLTAuMTUuMTkvcGFyYWxsZWxfbWFrZS5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24zLTAuMTUuMTkvcGFyYWxsZWxfbWFrZS5wYXRjaApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24tMC4xNS4xOS9yZW1vdmVfZHVwbGljYXRlX2luc3RhbGwucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LXB5dGhvbjMtMC4xNS4xOS9yZW1vdmVfZHVwbGljYXRlX2luc3RhbGwucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uLTAuMTUuMTkvcmVtb3ZlX2R1cGxpY2F0ZV9pbnN0YWxsLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LXB5dGhvbjMtMC4xNS4xOS9yZW1vdmVfZHVwbGljYXRlX2luc3RhbGwucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uLTAuMTUuMTkvdGVsZXBhdGh5LXB5dGhvbl9maXhfZm9yX2F1dG9tYWtlXzEuMTIucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvbm5lY3Rpdml0eS90ZWxlcGF0aHkvdGVsZXBhdGh5LXB5dGhvbjMtMC4xNS4xOS90ZWxlcGF0aHktcHl0aG9uX2ZpeF9mb3JfYXV0b21ha2VfMS4xMi5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24tMC4xNS4xOS90ZWxlcGF0aHktcHl0aG9uX2ZpeF9mb3JfYXV0b21ha2VfMS4xMi5wYXRjaApyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24zLTAuMTUuMTkvdGVsZXBhdGh5LXB5dGhvbl9maXhfZm9yX2F1dG9tYWtlXzEuMTIucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uM18wLjE1LjE5LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob24zXzAuMTUuMTkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDkyZTY1NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uM18wLjE1LjE5LmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NVTU1BUlkgPSAiVGVsZXBhdGh5IElNIGZyYW1ld29yayAtIFB5dGhvbiBwYWNrYWdlIgorSE9NRVBBR0UgPSAiaHR0cDovL3RlbGVwYXRoeS5mcmVlZGVza3RvcC5vcmcvd2lraS8iCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy91dGlscy5weTtiZWdpbmxpbmU9MTtlbmRsaW5lPTE3O21kNT05YTA3ZDFhOTc5MWE3NDI5YTE0ZTdiMjVjNmM4NjgyMiIKKworREVQRU5EUyA9ICJsaWJ4c2x0LW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vdGVsZXBhdGh5LmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy90ZWxlcGF0aHktcHl0aG9uL3RlbGVwYXRoeS1weXRob24tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3BhcmFsbGVsX21ha2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlX2R1cGxpY2F0ZV9pbnN0YWxsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3RlbGVwYXRoeS1weXRob25fZml4X2Zvcl9hdXRvbWFrZV8xLjEyLnBhdGNoIgorCitQUiA9ICJyNiIKKworUyA9ICIke1dPUktESVJ9L3RlbGVwYXRoeS1weXRob24tJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUKKworU1JDX1VSSVttZDVzdW1dID0gImY3Y2EyNWFiM2M4ODg3NDAxNWI3ZTk3MjhmN2YzMDE3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI0NGMwZTFiZjRiYmQ3OGFlMjk4ZWE2NTlmZTEwYmYzYTczNzM4ZGI1NTAxNTY3NjdjYzI0NzdhZWRmNzIzNzYiCisKK0ZJTEVTXyR7UE59ICs9ICJcCisgICAgJHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy90ZWxlcGF0aHkvKi5weSBcCisgICAgJHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy90ZWxlcGF0aHkvKi8qLnB5IFwKKyIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIHJtIC1mciAke0R9JHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy90ZWxlcGF0aHkvX19weWNhY2hlX18KKyAgICBybSAtZnIgJHtEfSR7bGliZGlyfS9weXRob24qL3NpdGUtcGFja2FnZXMvdGVsZXBhdGh5L19fcHljYWNoZV9fCisgICAgcm0gLWZyICR7RH0ke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL3RlbGVwYXRoeS8qL19fcHljYWNoZV9fCisgICAgcm0gLWZyICR7RH0ke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL3RlbGVwYXRoeS8qL19fcHljYWNoZV9fCit9CitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1kYnVzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob25fMC4xNS4xOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29ubmVjdGl2aXR5L3RlbGVwYXRoeS90ZWxlcGF0aHktcHl0aG9uXzAuMTUuMTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3YWVhMjQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb25uZWN0aXZpdHkvdGVsZXBhdGh5L3RlbGVwYXRoeS1weXRob25fMC4xNS4xOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLVNVTU1BUlkgPSAiVGVsZXBhdGh5IElNIGZyYW1ld29yayAtIFB5dGhvbiBwYWNrYWdlIgotSE9NRVBBR0UgPSAiaHR0cDovL3RlbGVwYXRoeS5mcmVlZGVza3RvcC5vcmcvd2lraS8iCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy91dGlscy5weTtiZWdpbmxpbmU9MTtlbmRsaW5lPTE3O21kNT05YTA3ZDFhOTc5MWE3NDI5YTE0ZTdiMjVjNmM4NjgyMiIKLQotREVQRU5EUyA9ICJsaWJ4c2x0LW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tZGJ1cyIKLQotU1JDX1VSSSA9ICJodHRwOi8vdGVsZXBhdGh5LmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbF9tYWtlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZV9kdXBsaWNhdGVfaW5zdGFsbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90ZWxlcGF0aHktcHl0aG9uX2ZpeF9mb3JfYXV0b21ha2VfMS4xMi5wYXRjaCIKLQotUFIgPSAicjYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB5dGhvbm5hdGl2ZQotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjdjYTI1YWIzYzg4ODc0MDE1YjdlOTcyOGY3ZjMwMTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjQ0YzBlMWJmNGJiZDc4YWUyOThlYTY1OWZlMTBiZjNhNzM3MzhkYjU1MDE1Njc2N2NjMjQ3N2FlZGY3MjM3NiIKLQotRklMRVNfJHtQTn0gKz0gIlwKLSAgICAke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL3RlbGVwYXRoeS8qLnB5IFwKLSAgICAke2xpYmRpcn0vcHl0aG9uKi9zaXRlLXBhY2thZ2VzL3RlbGVwYXRoeS8qLyoucHkgXAotIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgcm0gLWYgJHtEfSR7bGliZGlyfS9weXRob24qL3NpdGUtcGFja2FnZXMvdGVsZXBhdGh5LyoucHljCi0gICAgcm0gLWYgJHtEfSR7bGliZGlyfS9weXRob24qL3NpdGUtcGFja2FnZXMvdGVsZXBhdGh5LyoucHlvCi0gICAgcm0gLWYgJHtEfSR7bGliZGlyfS9weXRob24qL3NpdGUtcGFja2FnZXMvdGVsZXBhdGh5LyovKi5weWMKLSAgICBybSAtZiAke0R9JHtsaWJkaXJ9L3B5dGhvbiovc2l0ZS1wYWNrYWdlcy90ZWxlcGF0aHkvKi8qLnB5bwotfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtcHl0aG9uLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtcHl0aG9uLmJiCmluZGV4IGJiMDVkZTEuLjEyYTA1NjIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLXB5dGhvbi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS1weXRob24uYmIKQEAgLTQsNjggKzQsMTQgQEAKIAogUFJPVklERVMgPSAiJHtQQUNLQUdFU30iCiBQQUNLQUdFUyA9ICcgXAotICAgIHBhY2thZ2Vncm91cC1tZXRhLXB5dGhvbiBcCiAgICAgcGFja2FnZWdyb3VwLW1ldGEtcHl0aG9uMyBcCiAnCiAKLVJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLXB5dGhvbiA9ICJcCi0gICAgcGFja2FnZWdyb3VwLW1ldGEtcHl0aG9uLWV4dGVuZGVkIFwKLSAgICBwYWNrYWdlZ3JvdXAtbWV0YS1weXRob24tY29ubmVjdGl2aXR5IFwKLSIKLQogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtcHl0aG9uMyA9ICJcCiAgICAgcGFja2FnZWdyb3VwLW1ldGEtcHl0aG9uMy1leHRlbmRlZCBcCiAgICAgcGFja2FnZWdyb3VwLW1ldGEtcHl0aG9uMy1jb25uZWN0aXZpdHkgXAogIgogCi1SREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1weXRob24gPSAiXAotICAgIHB5dGhvbi1wc3V0aWwgcHl0aG9uLWNlcnRpZmkgcHl0aG9uLWZsYXNrIHB5dGhvbi1weXJvdXRlMiBweXRob24tcHlvcGVuc3NsIHB5dGhvbi1weWxpbnQgXAotICAgIHB5dGhvbi1zZW12ZXIgcHl0aG9uLXdyYXB0IHB5dGhvbi1uZXR3b3JreCBweXRob24tYmVoYXZlIHB5dGhvbi1kb21pbmF0ZSBweXRob24tZmxhc2stdXNlciBcCi0gICAgcHl0aG9uLWF0dHJzIHB5dGhvbi1odW1hbml6ZSBweXRob24tc2l4IHB5dGhvbi1mbGFzay1sb2dpbiBweXRob24tem9wZWludGVyZmFjZSBweXRob24tc2lqYXggXAotICAgIHB5dGhvbi1weWlub3RpZnkgcHl0aG9uLXN0ZXZlZG9yZSBweXRob24tcHlqd3QgcHl0aG9uLXdlYmRhdiBweXRob24tdHdpc3RlZCBweXRob24tZmxhc2stc2lqYXggXAotICAgIHB5dGhvbi1mdW5jdG9vbHMzMiBweXRob24tamF2YW9iai1weTMgcHl0aG9uLXB5Z3BnbWUgcHl0aG9uLWZ1dHVyZSBweXRob24tYXR0ciBcCi0gICAgcHl0aG9uLWZsYXNrLXhzdGF0aWMgcHl0aG9uLW0yY3J5cHRvIHB5dGhvbi1oeXBlcmxpbmsgcHl0aG9uLWltYWdpbmcgcHl0aG9uLWlkbmEgcHl0aG9uLWppbmphMiBcCi0gICAgcHl0aG9uLWNhbiBweXRob24tZmxhc2stYmNyeXB0IHB5dGhvbi1yZXF1ZXN0cyBweXRob24tcGFzdGUgcHl0aG9uLWZsYXNrLXNjcmlwdCBweXRob24tc2VycGVudCBcCi0gICAgcHl0aG9uLWNyeXB0b2dyYXBoeSBweXRob24tcHlzbWkgcHl0aG9uLXhscmQgcHl0aG9uLWFwcGRpcnMgcHl0aG9uLWpzb25wYXRjaCBweXRob24tYmNyeXB0IFwKLSAgICBweXRob24tbmRnLWh0dHBzY2xpZW50IHB5dGhvbi1weXRlc3QgcHl0aG9uLWxpbmVjYWNoZTIgcHl0aG9uLXZpc2l0b3IgcHl0aG9uLWJhY2twb3J0cy1hYmMgXAotICAgIHB5dGhvbi1zZXR1cHRvb2xzLXNjbSBweXRob24tZXZkZXYgcHl0aG9uLXB5amtzIHB5dGhvbi1qc29ucG9pbnRlciBweXRob24tY2hlZXRhaCBweXRob24tZ2V2ZW50IFwKLSAgICBweXRob24tc21idXMgcHl0aG9uLXNxbGFsY2hlbXkgcHl0aG9uLXNjcnlwdCBweXRob24td2Vya3pldWcgcHl0aG9uLWFueWpzb24gcHl0aG9uLXBleHBlY3QgXAotICAgIHB5dGhvbi1yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5IHB5dGhvbi1weWFsc2FhdWRpbyBweXRob24tcHl0ZXN0LWhlbHBlcnMtbmFtZXNwYWNlIFwKLSAgICBweXRob24tYWxlbWJpYyBweXRob24tZmxhc2stcHltb25nbyBweXRob24tc2xpcC1kYnVzIHB5dGhvbi1weWRidXMgcHl0aG9uLWF1dG9tYXQgcHl0aG9uLXJmYzM5ODcgXAotICAgIHB5dGhvbi10emxvY2FsIHB5dGhvbi1iYWNrcG9ydHMtc3NsIHB5dGhvbi1zdWJwcm9jZXNzMzIgcHl0aG9uLWFzbjFjcnlwdG8gcHl0aG9uLXB5YmluZDExIFwKLSAgICBweXRob24tcHR5cHJvY2VzcyBweXRob24tYmFiZWwgcHl0aG9uLXBhc3NsaWIgcHl0aG9uLXNkbm90aWZ5IFwKLSAgICBweXRob24tbGF6eS1vYmplY3QtcHJveHkgcHl0aG9uLWNyeXB0b2dyYXBoeS12ZWN0b3JzIHB5dGhvbi1jcmNtb2QgcHl0aG9uLXB5dXNiIHB5dGhvbi12b2JqZWN0IFwKLSAgICBweXRob24td2ViY29sb3JzIHB5dGhvbi1weXBhcnNpbmcgcHl0aG9uLWJlYXV0aWZ1bHNvdXA0IHB5dGhvbi1jZmZpIHB5dGhvbi10b3JuYWRvLXJlZGlzIFwKLSAgICBweXRob24taXRzZGFuZ2Vyb3VzIHB5dGhvbi1weWFzbjEtbW9kdWxlcyBweXRob24tbmV0YWRkciBweXRob24tdmN2ZXJzaW9uZXIgXAotICAgIHB5dGhvbi1zaCBweXRob24tZ3JlZW5sZXQgcHl0aG9uLXBhaG8tbXF0dCBweXRob24tdHJhY2ViYWNrMiBweXRob24tZ2RhdGEgcHl0aG9uLWRidXNtb2NrIFwKLSAgICBweXRob24td2hvb3NoIHB5dGhvbi1sb2NrZmlsZSBweXRob24taXNvcnQgcHl0aG9uLXd0Zm9ybXMgcHl0aG9uLWZlZWRwYXJzZXIgcHl0aG9uLWZsYXNrLXJlc3RmdWwgXAotICAgIHB5dGhvbi1weXNubXAgcHl0aG9uLWZsYXNrLWJhYmVsIHB5dGhvbi1weXRlc3QtdGVtcGRpciBweXRob24tZmxhc2stbmF2IHB5dGhvbi1weXptcSBweXRob24tcHl5YW1sIFwKLSAgICBweXRob24tcHJvdG9idWYgcHl0aG9uLXBsdWdneSBweXRob24tanNvbnNjaGVtYSBweXRob24tbXNncGFjayBcCi0gICAgcHl0aG9uLXBlcmlwaGVyeSBweXRob24tcGludCBweXRob24tcHljcnlwdG9kb21lIHB5dGhvbi15YXBwaSBweXRob24tcHljcnlwdG8gcHl0aG9uLXByZXRlbmQgXAotICAgIHB5dGhvbi1weXNlcmlhbCBweXRob24tcHlpZmFjZSBweXRob24tZG9jdXRpbHMgcHl0aG9uLWdycGNpby10b29scyBweXRob24tZGphbmdvLXNvdXRoIFwKLSAgICBweXRob24tYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGUgcHl0aG9uLXB5IHB5dGhvbi1jbGljayBweXRob24tZmxhc2stbWlncmF0ZSBcCi0gICAgcHl0aG9uLXB5dWRldiBweXRob24tcHlzdGFjaGUgcHl0aG9uLWJsaW5rZXIgcHl0aG9uLXByb21wdC10b29sa2l0IHB5dGhvbi1seG1sIFwKLSAgICBweXRob24tdW5pZGlmZiBweXRob24taW5mbGVjdGlvbiBweXRob24tdHdvZmlzaCBweXRob24tcHJldHR5dGFibGUgcHl0aG9uLXdlYmVuY29kaW5ncyBcCi0gICAgcHl0aG9uLW1vY2sgcHl0aG9uLXB5ZXhwZWN0IHB5dGhvbi1kbnNweXRob24gcHl0aG9uLXB5c29ja3MgcHl0aG9uLXB5bmV0bGludXggXAotICAgIHB5dGhvbi1kYWVtb24gcHl0aG9uLWRqYW5nb3Jlc3RmcmFtZXdvcmsgcHl0aG9uLXR5cGluZyBweXRob24tbW9ub3RvbmljIHB5dGhvbi1zcGFydHMgXAotICAgIHB5dGhvbi1lbnVtMzQgcHl0aG9uLXB5cGVyY2xpcCBweXRob24tZmxhc2stdXBsb2FkcyBweXRob24tcGJyIHB5dGhvbi1wYXJzZSBweXRob24tcHlmbGFrZXMgXAotICAgIHB5dGhvbi1weWhhbWNyZXN0IHB5dGhvbi1tYWtvIHB5dGhvbi1pbmNyZW1lbnRhbCBweXRob24tdG9ybmFkbyBweXRob24teHN0YXRpYy1mb250LWF3ZXNvbWUgXAotICAgIHB5dGhvbi1jbWQyIHB5dGhvbi1zdHJpY3QtcmZjMzMzOSBweXRob24tcHljb2Rlc3R5bGUgcHl0aG9uLXhzdGF0aWMgcHl0aG9uLXNuYWtlZm9vZCBcCi0gICAgcHl0aG9uLXB5Ymx1ZXogcHl0aG9uLWZsYXNrLW5hdmlnYXRpb24gcHl0aG9uLXB5ZmlybWF0YSBweXRob24tcHltb25nbyBweXRob24tcHlzcWxpdGUgXAotICAgIHB5dGhvbi1wcm9ncmVzcyBweXRob24tZmxhc2stc3FsYWxjaGVteSBweXRob24tcHltaXNwIHB5dGhvbi1waXAgcHl0aG9uLXVqc29uIHB5dGhvbi1wbHkgXAotICAgIHB5dGhvbi1wZXA4IHB5dGhvbi1kYXRldXRpbCBweXRob24tcHljcGFyc2VyIHB5dGhvbi1kYWVtb25pemUgcHl0aG9uLWFzdHJvaWQgcHl0aG9uLXB5cmV4IFwKLSAgICBweXRob24tbWFya3Vwc2FmZSBweXRob24tcHl0ZXN0LXJ1bm5lciBweXRob24tZ3JwY2lvIHB5dGhvbi1tY2NhYmUgcHl0aG9uLXB5dHogcHl0aG9uLXNlbGVjdG9yczM0IFwKLSAgICBweXRob24tY3l0aG9uIHB5dGhvbi1jaGFyZGV0IHB5dGhvbi1lZGl0b3IgcHl0aG9uLWZsYXNrLWJvb3RzdHJhcCBweXRob24taHRtbDVsaWIgXAotICAgIHB5dGhvbi1zaW5nbGVkaXNwYXRjaCBweXRob24tcmVkaXMgcHl0aG9uLWZsYXNrLW1haWwgcHl0aG9uLWZ1bmNzaWdzIHB5dGhvbi1zbmltcHkgcHl0aG9uLXB5YXNuMSBcCi0gICAgcHl0aG9uLWRlY29yYXRvciBweXRob24tdXJsbGliMyBweXRob24tZmVlZGZvcm1hdHRlciBweXRob24taXNvODYwMSBcCi0gICAgcHl0aG9uLW51bWVyaWMgcHl0aG9uLXJvYm90ZnJhbWV3b3JrIHB5dGhvbi1kamFuZ28gcHl0aG9uLXNpbXBsZWpzb24gcHl0aG9uLXdjd2lkdGggXAotICAgIHB5dGhvbi1jb25maWdwYXJzZXIgcHl0aG9uLWVweWRvYyBweXRob24taW50ZXJ2YWxzIHB5dGhvbi1zcGVha2xhdGVyIFwKLSAgICBweXRob24tYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbiBweXRob24tY29uc3RhbnRseSBweXRob24tYml0YXJyYXkgcHl0aG9uLWZsYXNrLXd0ZiBcCi0gICAgcHl0aG9uLXBhcnNlLXR5cGUgcHl0aG9uLWlwYWRkcmVzcyBweXRob24tZGJ1cyBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwYW0iLCAicHl0aG9uLXBhbSBwYW1lbGEiLCAiIiwgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInN5c3RlbWQiLCAicHl0aG9uLXN5c3RlbWQiLCAiIiwgZCl9IFwKLSIKLQogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtcHl0aG9uMyA9ICJcCiAgICAgcHl0aG9uMy1weXNlcmlhbCBweXRob24zLWdldmVudCBweXRob24zLWFsZW1iaWMgcHl0aG9uMy1yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5IFwKICAgICBweXRob24zLXJmYzM5ODcgcHl0aG9uMy14bHJkIHB5dGhvbjMtYmFuZGl0IHB5dGhvbjMtY29uc3RhbnRseSBweXRob24zLWluZmxlY3Rpb24gXApAQCAtMTA1LDEzICs1MSw2IEBACiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJzeXN0ZW1kIiwgInB5dGhvbjMtc3lzdGVtZCIsICIiLCBkKX0gXAogIgogCi1SREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1weXRob24tZXh0ZW5kZWQgPSAiXAotICAgIHB5dGhvbi1weWVwaGVtIFwKLSAgICBweXRob24tY3NvbiBcCi0gICAgcHl0aG9uLXB5d2JlbSBcCi0gICAgcHl0aG9uLXB5cGFydGVkIFwKLSIKLQogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtcHl0aG9uMy1leHRlbmRlZCA9ICJcCiAgICAgcHl0aG9uMy1weWtpY2tzdGFydCBcCiAgICAgcHl0aG9uMy1tZWggXApAQCAtMTIxLDE2ICs2MCw2IEBACiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJ4MTEiLCAicHl0aG9uMy1ibGl2ZXRndWkiLCAiIiwgZCl9IFwKICIKIAotUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtcHl0aG9uLWNvbm5lY3Rpdml0eSA9ICJcCi0gICAgcHl0aG9uLXB5cm80IFwKLSAgICBweXRob24tcHl0dW4gXAotICAgIHB5dGhvbi1tcHJwYyBcCi0gICAgcHl0aG9uLXRocmlmdCBcCi0gICAgcHl0aG9uLXR4d3MgXAotICAgIHB5dGhvbi1weWNvbm5tYW4gXAotICAgIHB5dGhvbi1nc29ja2V0cG9vbCBcCi0iCi0KIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLXB5dGhvbjMtY29ubmVjdGl2aXR5ID0gIlwKICAgICBweXRob24zLXB5dHVuIFwKICAgICBweXRob24zLW1wcnBjIFwKQEAgLTEzOCwxMSArNjcsNiBAQAogICAgIHB5dGhvbjMtZ3NvY2tldHBvb2wgXAogIgogCi1SREVQRU5EU19wYWNrYWdlZ3JvdXAtbWV0YS1weXRob24tcHRlc3QgPSAiXAotICAgIHB5dGhvbi1weWdwZ21lIFwKLSAgICBweXRob24tY3J5cHRvZ3JhcGh5IFwKLSAgICAiCi0KIFJERVBFTkRTX3BhY2thZ2Vncm91cC1tZXRhLXB5dGhvbjMtcHRlc3QgPSAiXAogICAgIHB5dGhvbjMtY3J5cHRvZ3JhcGh5IFwKICAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL2d5cC9neXAtcHkyX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvZ3lwL2d5cC1weTJfZ2l0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNjliOTJjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvZ3lwL2d5cC1weTJfZ2l0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgZ3lwLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24tanNvbnJlZi9weXRob24tanNvbnJlZi5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1qc29ucmVmL3B5dGhvbi1qc29ucmVmLmluYwppbmRleCAwZTY5ZTQ1Li40NWRlYjA5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1qc29ucmVmL3B5dGhvbi1qc29ucmVmLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1qc29ucmVmL3B5dGhvbi1qc29ucmVmLmluYwpAQCAtNiw2ICs2LDYgQEAKIFNSQ19VUklbbWQ1c3VtXSA9ICI0MmI1MThiOWNjZDY4NTJkMWQ3MDk3NDliYzk2Y2I3MCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICJmM2M0NWIxMjFjZjYyNTdlYWZhYmRjM2E4MDA4NzYzYWVkMWNkN2RhMDZkYmFiYzU5YTllNGQyYTVlNGU2Njk3IgogCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLWpzb25yZWYvcHl0aG9uLWpzb25yZWZfMC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24tanNvbnJlZi9weXRob24zLWpzb25yZWZfMC4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1qc29ucmVmL3B5dGhvbi1qc29ucmVmXzAuMi5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24tanNvbnJlZi9weXRob24zLWpzb25yZWZfMC4yLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9wYW1lbGFfMC4zLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9wYW1lbGFfMC4zLjAuYmIKaW5kZXggMDMwYzIyZi4uYjZiZWUwYyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcGFtZWxhXzAuMy4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3BhbWVsYV8wLjMuMC5iYgpAQCAtNyw3ICs3LDcgQEAKIAogUFlQSV9QQUNLQUdFID0gInBhbWVsYSIKIAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwogCiBSREVQRU5EU18ke1BOfSA9ICJsaWJwYW0iCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5cnRtXzAuNC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHlydG1fMC40LjIuYmIKaW5kZXggOWQ4NTFhYi4uNzk4ZGFlYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHlydG1fMC40LjIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHlydG1fMC40LjIuYmIKQEAgLTgsNyArOCw3IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiN2M4N2RhOTQ2NTZiNjIwZGZlNTMyY2E2M2Q2NDJlYjgiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjJkNzAxYjI1YWQzZjlhMTU0MjA1N2YzZWI0OTJjNWMxZDdkYmUyYjhkMWU4Zjc2MzA0M2RjYzE0ZWUxZDkzMyIKIAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwogCiBQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMgJHtQTn0tc2FtcGxlcyIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFpb2ZpbGVzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1haW9maWxlcy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNlY2IyMWMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFpb2ZpbGVzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVNVTU1BUlkgPSAiRmlsZSBzdXBwb3J0IGZvciBhc3luY2lvIgotREVTQ1JJUFRJT04gPSAiQXN5bmNocm9ub3VzIGxvY2FsIGZpbGUgSU8gbGlicmFyeSBmb3IgYXN5bmNpbyBhbmQgUHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Fpby1saWJzL2Fpb2h0dHAiCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kMjc5NGMwZGY1YjkwN2ZkYWNlMjM1YTYxOWQ4MDMxNCIKLQotU1JDX1VSSVttZDVzdW1dID0gImNiMzNjZjk2YzM3MWZiZDU2ZmMyN2FiMGJkODFiZDYxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAyMWVhMGJhMzE0YTg2MDI3YzE2NmVjYzRiNGMwN2YyZDQwZmMwZjRiM2E5NTBkMTg2OGEwZjI1NzFjMmJiZWUiCi0KLVBZUElfUEFDS0FHRSA9ICJhaW9maWxlcyIKLWluaGVyaXQgcHlwaQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgICR7UFlUSE9OX1BOfS1hc3luY2lvIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1haW9odHRwLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1haW9odHRwLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxMWFkNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYWlvaHR0cC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIkFzeW5jIGh0dHAgY2xpZW50L3NlcnZlciBmcmFtZXdvcmsiCi1ERVNDUklQVElPTiA9ICJBc3luY2hyb25vdXMgSFRUUCBjbGllbnQvc2VydmVyIGZyYW1ld29yayBmb3IgYXN5bmNpbyBhbmQgUHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Fpby1saWJzL2Fpb2h0dHAiCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9Y2YwNTZlOGU3YTBhNTQ3NzQ1MWFmMThiN2I1YWE5OGMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4NWZlNWM5MDM3MjU2YzU4ZDQ2NzgxNDhiZDkxYjNmMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5YzRjODNmNGZhMTkzODM3N2RhMzJiYzJkNTkzNzkwMjVjZWVlZThlMjRiODlmNzJmY2JjY2Q4Y2EyMmRjOWJmIgotCi1QWVBJX1BBQ0tBR0UgPSAiYWlvaHR0cCIKLWluaGVyaXQgcHlwaQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgICR7UFlUSE9OX1BOfS1hc3luYy10aW1lb3V0IFwKLSAgICAke1BZVEhPTl9QTn0tY2hhcmRldCBcCi0gICAgJHtQWVRIT05fUE59LWlkbmEtc3NsIFwKLSAgICAke1BZVEhPTl9QTn0tbXVsdGlkaWN0IFwKLSAgICAke1BZVEhPTl9QTn0teWFybCBcCi0gICAgJHtQWVRIT05fUE59LXR5cGluZyBcCi0gICAgJHtQWVRIT05fUE59LW1pc2MgXAotICAgICR7UFlUSE9OX1BOfS1hdHRycyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYWxlbWJpYy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYWxlbWJpYy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5NGMxNDIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFsZW1iaWMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiQSBkYXRhYmFzZSBtaWdyYXRpb24gdG9vbCBmb3IgU1FMQWxjaGVteSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjhhYWYxNGE2NTkyZDE0ZGJmYjJmNGFiZDU5N2FhMjciCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzZDc1ODRhOGZiMDIwM2VjODJiOTBiYWE3MjZkMmJkOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYjBjYjE5NDg4MzNlMDYyZjQwNDg5OTJmYmM5N2VjZmFhYWFjMjRhYWEwZDgzYTEyMDJhOTlmYjU4YWY4YzZkIgotCi1QWVBJX1BBQ0tBR0UgPSAiYWxlbWJpYyIKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tZGF0ZXV0aWwgXAotICAgICR7UFlUSE9OX1BOfS1lZGl0b3IgXAotICAgICR7UFlUSE9OX1BOfS1tYWtvIFwKLSAgICAke1BZVEhPTl9QTn0tc3FsYWxjaGVteSBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYWxlbWJpY18xLjMuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hbGVtYmljXzEuMy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmNiMmIxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hbGVtYmljXzEuMy4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tYWxlbWJpYy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hbnlqc29uLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hbnlqc29uLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBkMjBmZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYW55anNvbi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIldyYXBzIHRoZSBiZXN0IGF2YWlsYWJsZSBKU09OIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSBpbiBhIGNvbW1vbiBpbnRlcmZhY2UiCi1ERVNDUklQVElPTiA9ICJBbnlqc29uIGxvYWRzIHdoaWNoZXZlciBpcyB0aGUgZmFzdGVzdCBKU09OIG1vZHVsZSBpbnN0YWxsZWQgYW5kICBcCi1wcm92aWRlcyBhIHVuaWZvcm0gQVBJIHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggSlNPTiBpbXBsZW1lbnRhdGlvbiBpcyB1c2VkLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vYml0YnVja2V0Lm9yZy9ydW5laC9hbnlqc29uIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05ODlhYTk3ZTczYzkxMmE4M2EzYzg3M2ZhMTFkZWIwOCIKLQotaW5oZXJpdCBweXBpCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyZWEyOGQ2ZWMzMTFhZWVlYmFmOTkzY2IzMDA4YjI3YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzNzgxMmQ4NjNjOWFkM2UzNWMwNzM0YzQyZTBiZjAzMjBjZThjM2JlZDgyY2QyMGFkNTRjYjM0ZDE1ODE1N2JhIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXNpbXBsZWpzb24iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYW55anNvbl8wLjMuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hbnlqc29uXzAuMy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMWI4NzQ5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hbnlqc29uXzAuMy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWFueWpzb24uaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXBwZGlycy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXBwZGlycy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0ODI2NzIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFwcGRpcnMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1TVU1NQVJZID0gIkEgc21hbGwgUHl0aG9uIG1vZHVsZSBmb3IgZGV0ZXJtaW5pbmcgYXBwcm9wcmlhdGUgKyBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJzLCBlLmcuIGEgdXNlciBkYXRhIGRpci4iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zMTYyNTM2M2M0NWViMGM2N2M2MzBhMmY3M2U0MzhlNCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQ0YzY3OTkwNDA4MmEyMTMzZjU1NjZjOGEwZDNhYjQyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjllNTg5NmQxMzcyODU4ZjhkZDMzNDRmYWY0ZTUwMTRkMjE4NDljNzU2YzhkNTcwMWY3OGY4YTEwM2IzNzJkOTIiCi0KLWluaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFwcGRpcnNfMS40LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXBwZGlyc18xLjQuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTlmZjliMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXBwZGlyc18xLjQuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1hcHBkaXJzLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzbjFjcnlwdG8uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzbjFjcnlwdG8uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTZlMWE1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc24xY3J5cHRvLmluYworKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkEgZmFzdCwgcHVyZSBQeXRob24gbGlicmFyeSBmb3IgcGFyc2luZyBhbmQgc2VyaWFsaXppbmcgQVNOLjEgc3RydWN0dXJlcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS93Ym9uZC9hc24xY3J5cHRvIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc0MzllMzhmNWUwNGZmNjJmYWU0MzYxODQ3ODZiN2NhIgotCi1QWVBJX1BBQ0tBR0UgPSAiYXNuMWNyeXB0byIKLQotU1JDX1VSSVttZDVzdW1dID0gImRhYWQxMTI5NDAxODE5MTdlM2ZmMTY5YjQ3YjliZDlhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVhMjE1Y2I4ZGMxMmY4OTIyNDRlM2ExMTNmZTA1Mzk3ZWUyM2M1YzRjYTdhNjljZDZlNjk4MTE3NTVlZmM0MmQiCi0KLWluaGVyaXQgcHlwaQotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWNvZGVjcyBcCi0gICAgJHtQWVRIT05fUE59LWNyeXB0IFwKLSAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKLSAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAotICAgICR7UFlUSE9OX1BOfS1pbyBcCi0gICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc24xY3J5cHRvXzEuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzbjFjcnlwdG9fMS4zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2YWFjZTIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzbjFjcnlwdG9fMS4zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tYXNuMWNyeXB0by5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotICAgICR7UFlUSE9OX1BOfS10ZXh0dXRpbHMgXCAKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3Ryb2lkLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3Ryb2lkLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTlhNjg3OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN0cm9pZC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIkFuIGFic3RyYWN0IHN5bnRheCB0cmVlIGZvciBQeXRob24gd2l0aCBpbmZlcmVuY2Ugc3VwcG9ydC4iCi1IT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL2FzdHJvaWQiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjVmM2Q3M2Q4MmQxNzUzYjU5YmI0OWE2YmM2MDQ2ZGVlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcxZWEwN2Y0NGRmOTU2OGE3NWQwZjM1NGM0OTE0M2E0NTc1ZDkwNjQ1ZTlmZWFkNmRmYjUyYzI2YTg1ZWQxM2EiCi0KLWluaGVyaXQgcHlwaQotCi1ERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tcHl0ZXN0LXJ1bm5lci1uYXRpdmUiCi0KLVBBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKLQotRklMRVNfJHtQTn0tdGVzdHMgKz0gIiBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vYXN0cm9pZC90ZXN0KiBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vYXN0cm9pZC9fX3B5Y2FjaGVfXy90ZXN0KiBcCi0iCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAotICAgICR7UFlUSE9OX1BOfS1kaXN0dXRpbHMgXAotICAgICR7UFlUSE9OX1BOfS1sYXp5LW9iamVjdC1wcm94eSBcCi0gICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotICAgICR7UFlUSE9OX1BOfS13cmFwdCBcCi0gICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgXAotIgotCi1SREVQRU5EU18ke1BOfS10ZXN0c19jbGFzcy10YXJnZXQgKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tdW5pdHRlc3QgXAotICAgICR7UFlUSE9OX1BOfS14bWwgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWFzdHJvaWRfMi4zLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN0cm9pZF8yLjMuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjg3Mzk0ZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN0cm9pZF8yLjMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tYXN0cm9pZC5pbmMKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1lbnVtMzQgXAotICAgICR7UFlUSE9OX1BOfS1iYWNrcG9ydHMtZnVuY3Rvb2xzLWxydS1jYWNoZSBcCi0gICAgJHtQWVRIT05fUE59LXJlIFwKLSAgICAke1BZVEhPTl9QTn0tc2luZ2xlZGlzcGF0Y2ggXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3luYy10aW1lb3V0LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hc3luYy10aW1lb3V0LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTcxYTAwMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXN5bmMtdGltZW91dC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1TVU1NQVJZID0gImFzeW5jaW8tY29tcGF0aWJsZSB0aW1lb3V0IGNvbnRleHQgbWFuYWdlciIKLURFU0NSSVBUSU9OID0gIlwKLVRoZSBjb250ZXh0IG1hbmFnZXIgaXMgdXNlZnVsIGluIGNhc2VzIHdoZW4geW91IHdhbnQgdG8gYXBwbHkgXAotdGltZW91dCBsb2dpYyBhcm91bmQgYmxvY2sgb2YgY29kZSBvciBpbiBjYXNlcyB3aGVuIGFzeW5jaW8ud2FpdF9mb3IoKSBcCi1pcyBub3Qgc3VpdGFibGUuIEFsc28gaXQncyBtdWNoIGZhc3RlciB0aGFuIGFzeW5jaW8ud2FpdF9mb3IoKSBiZWNhdXNlIFwKLXRpbWVvdXQgZG9lc24ndCBjcmVhdGUgYSBuZXcgdGFzay4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYWlvLWxpYnMvYXN5bmMtdGltZW91dCIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWUzZmM1MGE4OGQwYTM2NDMxM2RmNGIyMWVmMjBjMjllIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzA1YzRmYTUyOWYyNDg1YzQwM2QwZGJlMTQzOTAxNzUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGMzYzgxNmEwMjhkNDdmNjU5ZDZmZjVjNzQ1Y2IyYWNmMWY5NjZkYTFmZTVjMTljNzdhNzAyODJiMjVmNGM1ZiIKLQotUFlQSV9QQUNLQUdFID0gImFzeW5jLXRpbWVvdXQiCi1pbmhlcml0IHB5cGkKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgICR7UFlUSE9OX1BOfS1hc3luY2lvIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdG9taWN3cml0ZXMuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF0b21pY3dyaXRlcy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc3M2U5ZGQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF0b21pY3dyaXRlcy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlBvd2VyZnVsIFB5dGhvbiBsaWJyYXJ5IGZvciBhdG9taWMgZmlsZSB3cml0ZXMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdW50aXRha2VyL3B5dGhvbi1hdG9taWN3cml0ZXMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTkxY2MzNmNmYWZlZWZiNzg2MzY3M2JjZmNiMWQ0ZGE0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiY2UxMWY3ODBhNGNlMGZjZThhNTVkNjQ0OTRhODgxNzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzVhOTQ0NWJhYzAyZDhkMDU4ZDVlMWZlNjg5NjU0YmE1YTY1NTZhMWRmZDhjZTZlYzU1YTBlZDc5ODY2Y2ZhNiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdG9taWN3cml0ZXNfMS4zLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXRvbWljd3JpdGVzXzEuMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjN2I0MWQ2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdG9taWN3cml0ZXNfMS4zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1hdG9taWN3cml0ZXMuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXR0ci5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXR0ci5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkOTNkZDcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF0dHIuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJTaW1wbGUgZGVjb3JhdG9yIHRvIHNldCBhdHRyaWJ1dGVzIG9mIHRhcmdldCBmdW5jdGlvbiBvciBjbGFzcyBpbiBhIERSWSB3YXkiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZGVuaXMtcnl6aGtvdi9hdHRyIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9NTk4MDVhMDI4NWY0ZDJiNmFiZGVkYWU3M2RiNGY1YzEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2OGI5YTUwMzk5MTI0MWZiMmRmMjg0ODg2ODZiMGUxZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MDkxNTQ4MDU4ZDE3ZjEzMjU5NmU2MWZhNzUxOGU1MDRmNzZiOWE0YzYxY2E3ZDg2ZTFmOTZkYmY3ZDQ3NzVkIgotCi1pbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRyXzAuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF0dHJfMC4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk3OWQ2Y2IuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF0dHJfMC4zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tYXR0ci5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRycy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXR0cnMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNWQyOGE0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRycy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJDbGFzc2VzIFdpdGhvdXQgQm9pbGVycGxhdGUiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmF0dHJzLm9yZy8iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQ0YWIyNTk0OWE3M2ZlN2Q0ZmRlZTkzYmNiZGJmOGZmIgotCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjdiN2NlMTY1NzBmZTk5NjVhY2Q2ZDMwMTAxYTI4ZjYyZmI0YTdmOWU5MjZiM2JiYzliNjFmOGIwNDI0N2U3MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1YjJkYjUwZmNjMzFiZTM0ZDMyNzk4MTgzYzliZDA2MiIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tY3J5cHQgXAotICAgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRyc18xOS4zLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXR0cnNfMTkuMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2JlYzBmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdHRyc18xOS4zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tYXR0cnMuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF1dG9tYXQuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF1dG9tYXQuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYzM5MjIxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hdXRvbWF0LmluYworKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlNlbGYtc2VydmljZSBmaW5pdGUtc3RhdGUgbWFjaGluZXMgZm9yIHRoZSBwcm9ncmFtbWVyIG9uIHRoZSBnbyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nbHlwaC9BdXRvbWF0IgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00YWQyMTNiY2NhODE2ODhlOTQ1OTNlNWY2MGM4NzQ3NyIKLQotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vcHl0aG9uLWF1dG9tYXQ6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDdlOTgwYTQ4MjAxYTFkYWJlMzdmYTExZjAxODcwMTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjY5YTA5ZGZiMDYzYTNiMDc4OTgzZjQ5NzZkODNmMGEwZDNlNmU3YWFmOGUyN2Q4ZGYxMDk1ZTA5ZGM0YTQ4NCIKLQotUFlQSV9QQUNLQUdFID0gIkF1dG9tYXQiCi0KLWluaGVyaXQgcHlwaQotCi1TUkNfVVJJX2FwcGVuZCA9ICIgXAotICAgIGZpbGU6Ly8wMDAxLXNldHVwLnB5LXJlbW92ZS10aGUtZGVwZW5kZW5jeS1vbi1tMnIucGF0Y2ggXAotIgotCi1ERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tc2V0dXB0b29scy1zY20tbmF0aXZlIgotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgJHtQWVRIT05fUE59LWF0dHJzIFwKLSAgICR7UFlUSE9OX1BOfS1zaXggXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF1dG9tYXRfMC44LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXV0b21hdF8wLjguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFjOGM5Yy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXV0b21hdF8wLjguMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1hdXRvbWF0LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob24uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob24uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDQ5M2UxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uLmluYworKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlNESyBmb3IgY29ubmVjdGluZyB0byBBV1MgSW9UIHVzaW5nIFB5dGhvbi4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYXdzL2F3cy1pb3QtZGV2aWNlLXNkay1weXRob24iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAgJiAoRVBMLTEuMCB8IEVETC0xLjApIgotTElDRU5TRV8ke1BOfS1leGFtcGxlcyA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi0gICAgZmlsZTovL0xJQ0VOU0UudHh0O21kNT05YWM0OTkwMWI4MzNlNzY5YzdkNmYyMWU4ZGJkN2IzMCBcCi0gICAgZmlsZTovL0FXU0lvVFB5dGhvblNESy9jb3JlL3Byb3RvY29sL3BhaG8vY2xpZW50LnB5O2VuZGxpbmU9MTQ7bWQ1PTVhM2M4YTFhNGJiNzFiZDkzNGY0NTBlY2ZmOTcyYWQ5IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjJiM2RmNjI5ODI3ZDhiYzE4Y2E0ZDkyN2I0ODg1YTE3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlNjdjOGNmZWVlOGExYzhmZDI1MWJjYzQxOGRlOWQ0ZGNhNjk3NzUzNTY1YzlhOWU2MTQ1MjUxNzlkOTU1NWQiCi0KLWluaGVyaXQgcHlwaQotCi1QWVBJX1BBQ0tBR0UgPSAiQVdTSW9UUHl0aG9uU0RLIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAtbTA3NTUgJHtEfSR7ZGF0YWRpcn0vJHtCUE59L2V4YW1wbGVzCi0gICAgICAgIGNwIC0tcHJlc2VydmU9bW9kZSx0aW1lc3RhbXBzIC1SICR7U30vc2FtcGxlcy8qICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9leGFtcGxlcwotICAgICAgICAjIHRoaXMgcmVxdWlyZXMgdGhlIGZ1bGwgYmxvd24gQVdTIFB5dGhvbiBTREsKLSAgICAgICAgcm0gLXIgJHtEfSR7ZGF0YWRpcn0vJHtCUE59L2V4YW1wbGVzL2Jhc2ljUHViU3ViCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1leGFtcGxlcyIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWNyeXB0IFwKLSAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAotICAgICR7UFlUSE9OX1BOfS1pbyBcCi0gICAgJHtQWVRIT05fUE59LWpzb24gXAotICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKLSAgICAke1BZVEhPTl9QTn0tbWF0aCBcCi0gICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCi0gICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotIgotUkRFUEVORFNfJHtQTn0tZXhhbXBsZXMgKz0gIiR7UE59IgotCi1GSUxFU18ke1BOfS1leGFtcGxlcyA9ICIke2RhdGFkaXJ9LyR7QlBOfS9leGFtcGxlcyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob25fMS40LjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbl8xLjQuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDkwZTk3My4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbl8xLjQuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1hd3MtaW90LWRldmljZS1zZGstcHl0aG9uLmluYwotCi1SREVQRU5EU18ke1BOfS1leGFtcGxlcyArPSAiJHtQWVRIT05fUE59LWFyZ3BhcnNlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhYmVsLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWJlbC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM1NWI0NTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhYmVsLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkEgY29sbGVjdGlvbiBvZiB0b29scyBmb3IgaW50ZXJuYXRpb25hbGl6aW5nIFB5dGhvbiBhcHBsaWNhdGlvbnMiCi1IT01FUEFHRSA9ICJodHRwOi8vYmFiZWwuZWRnZXdhbGwub3JnLyIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTQyNDY5ZGY5MzA1YWJiMWM1OWU5NWY3NzgzMTAzODQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4M2MxNThiN2RhZTkxMzU3NTBhN2NmMjA0ZTZlMmVlYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlODYxMzVhZTEwMWUzMWUyYzhlYzIwYTRlMGM1MjIwZjRlZWQxMjQ4N2Q1Y2YzZjc4YmU3ZTk4ZDNhNTdmYzI4IgotCi1QWVBJX1BBQ0tBR0UgPSAiQmFiZWwiCi0KLWluaGVyaXQgcHlwaQotCi1DTEVBTkJST0tFTiA9ICIxIgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tY29kZWNzIFwKLSAgICAke1BZVEhPTl9QTn0tZGlmZmxpYiBcCi0gICAgJHtQWVRIT05fUE59LWRpc3R1dGlscyBcCi0gICAgJHtQWVRIT05fUE59LW5ldHNlcnZlciBcCi0gICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAotICAgICR7UFlUSE9OX1BOfS1waWNrbGUgXAotICAgICR7UFlUSE9OX1BOfS1weXR6IFwKLSAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFiZWxfMi43LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFiZWxfMi43LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3YzE2NmUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhYmVsXzIuNy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWJhYmVsLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFja3BvcnRzLWFiY18wLjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFja3BvcnRzLWFiY18wLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI1ODhhMzEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhY2twb3J0cy1hYmNfMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotU1VNTUFSWSA9ICJjb2xsZWN0aW9ucy5hYmMgZnJvbSBQeXRob24gMy41IgotREVTQ1JJUFRJT04gPSAiQSBiYWNrcG9ydCBvZiByZWNlbnQgYWRkaXRpb25zIHRvIHRoZSAnY29sbGVjdGlvbnMuYWJjJyBtb2R1bGUiCi1MSUNFTlNFID0gIlBTRiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWRkOThkMDFkNDcxZmFjOGQ4ZGJkZDk3NTIyOWRiYTAzIgotCi1QWVBJX1BBQ0tBR0UgPSAiYmFja3BvcnRzX2FiYyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdkMTkzNmVjMTgzYTM1ODYyOTBhZGY2MGY2Zjk2NzY0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzM2JlNTQ1MTRhMDNlMjU1ZGY3NWM1YWVlOGY5ZTY3MmY2NjNmOTNhYmI3MjM0NDRjYWVjOGZlNDM0MzdiZGUiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGUuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmNlNDRhMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGUuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJCYWNrcG9ydCBvZiBmdW5jdG9vbHMubHJ1X2NhY2hlIGZyb20gUHl0aG9uIDMuMyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9qYXJhY28vYmFja3BvcnRzLmZ1bmN0b29sc19scnVfY2FjaGUiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc2V0dXAucHk7YmVnaW5saW5lPTU3O2VuZGxpbmU9NTc7bWQ1PTk4ZmMzNjU4ZTU5NzBkMjZmNmIyMTA5ODA4Yzc2NmJlIgotCi1QWVBJX1BBQ0tBR0UgPSAiYmFja3BvcnRzLmZ1bmN0b29sc19scnVfY2FjaGUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyMGY1M2Y1NGNkM2YwNGIzMzQ2Y2U3NWE1NDk1OTc1NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZDk4Njk3ZjA4OGViMWIwZmE0NTEzOTFmOTFhZmI1ZTNlYmRlMTZiYmRiMjcyODE5ZmQwOTExNTFmZGE0ZjFhIgotCi1ERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tc2V0dXB0b29scy1zY20tbmF0aXZlIgotCi1pbmhlcml0IHB5cGkKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tcGlja2xlIFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGVfMS41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlXzEuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWUwZjJmMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGVfMS41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1iYWNrcG9ydHMtZnVuY3Rvb2xzLWxydS1jYWNoZS5pbmMKLWluaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhY2twb3J0cy1zc2xfMy43LjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iYWNrcG9ydHMtc3NsXzMuNy4wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwMzJhN2MuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJhY2twb3J0cy1zc2xfMy43LjAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIHNzbC5tYXRjaF9ob3N0bmFtZSgpIGZ1bmN0aW9uIGZyb20gUHl0aG9uIDMuNCIKLURFU0NSSVBUSU9OID0gIlRoZSBTZWN1cmUgU29ja2V0cyBsYXllciBpcyBvbmx5IGFjdHVhbGx5IHNlY3VyZSBpZiB5b3UgY2hlY2sgdGhlIGhvc3RuYW1lIGluIHRoZSBcCi1jZXJ0aWZpY2F0ZSByZXR1cm5lZCBieSB0aGUgc2VydmVyIHRvIHdoaWNoIHlvdSBhcmUgY29ubmVjdGluZywgYW5kIHZlcmlmeSB0aGF0IGl0IG1hdGNoZXMgdG8gaG9zdG5hbWUgXAotdGhhdCB5b3UgYXJlIHRyeWluZyB0byByZWFjaC4gQnV0IHRoZSBtYXRjaGluZyBsb2dpYywgZGVmaW5lZCBpbiBSRkMyODE4LCBjYW4gYmUgYSBiaXQgdHJpY2t5IHRvIGltcGxlbWVudCBcCi1vbiB5b3VyIG93bi4gU28gdGhlIHNzbCBwYWNrYWdlIGluIHRoZSBTdGFuZGFyZCBMaWJyYXJ5IG9mIFB5dGhvbiAzLjIgYW5kIGdyZWF0ZXIgbm93IGluY2x1ZGVzIGEgXAotbWF0Y2hfaG9zdG5hbWUoKSBmdW5jdGlvbiBmb3IgcGVyZm9ybWluZyB0aGlzIGNoZWNrIGluc3RlYWQgb2YgcmVxdWlyaW5nIGV2ZXJ5IGFwcGxpY2F0aW9uIHRvIFwKLWltcGxlbWVudCB0aGUgY2hlY2sgc2VwYXJhdGVseS4gVGhpcyBiYWNrcG9ydCBicmluZ3MgbWF0Y2hfaG9zdG5hbWUoKSB0byB1c2VycyBvZiBlYXJsaWVyIHZlcnNpb25zIG9mIFB5dGhvbiIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT1iMmFkYmU4YmZkZWI2MjVjOWEwMWFmZDlhYWE2NjYxOSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjMyZDJmNTkzYWYwMWEwNDZiZWMzZDJmNTE4MWE0MjBhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJiODJlNjBmOWZiZjRjMDgwZWFiZDk1N2MzOWYwNjQxZjBmYzI0N2Q5YTE2ZTMxZTI2ZDU5NGQ4ZjQyYjlmZDIiCi0KLVBZUElfUEFDS0FHRSA9ICJiYWNrcG9ydHMuc3NsX21hdGNoX2hvc3RuYW1lIgotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1wa2d1dGlsIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJjcnlwdC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmNyeXB0LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTI2NDAwMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmNyeXB0LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIk1vZGVybiBwYXNzd29yZCBoYXNoaW5nIGZvciB5b3VyIHNvZnR3YXJlIGFuZCB5b3VyIHNlcnZlcnMuIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OGY3YmIwOTRjNzIzMmIwNThjN2U5ZjJlNDMxZjM4OWMiCi0KLURFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1jZmZpLW5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjVkNmY5M2I1NzVjZTUyNDcwYWYzN2E4ZTdkY2U3NmZlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBiMDA2OWM3NTJlYzE0MTcyYzVmNzgyMDhmMTg2M2Q3YWQ2NzU1YTZmYWU2ZmU3NmVjMmM4MGQxM2JlNDFlNDIiCi0KLWluaGVyaXQgcHlwaQotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tY2ZmaSBcCi0gICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCi0gICAgJHtQWVRIT05fUE59LXNoZWxsIFwKLSAgICAke1BZVEhPTl9QTn0tc2l4IFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iY3J5cHRfMy4xLjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmNyeXB0XzMuMS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMTM2YWE0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iY3J5cHRfMy4xLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tYmNyeXB0LmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWF1dGlmdWxzb3VwNC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmVhdXRpZnVsc291cDQuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTk1YmI3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWF1dGlmdWxzb3VwNC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIlNjcmVlbi1zY3JhcGluZyBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiIGh0dHBzOi8vd3d3LmNydW1teS5jb20vc29mdHdhcmUvQmVhdXRpZnVsU291cC9iczQiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT1mMmQzOGQ4YTQwYmY3M2ZkNGIzZDE2Y2EyZTU4ODJkMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjVkYmRiNTZjMDA5ZTQ2MzJiYWU3YmVkMWIzODU4MDRiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA1ZmQ4MjVlYjAxYzI5MDg3NzY1N2E1NmRmNGM2ZTRjMzExYjM5NjViZGE3OTBjNjEzYTNkNmZiMDFhNTQ2MmEiCi0KLWluaGVyaXQgcHlwaQotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgJHtQWVRIT05fUE59LWh0bWw1bGliIFwKLSAgICAke1BZVEhPTl9QTn0tbHhtbCBcCi0gICAgJHtQWVRIT05fUE59LXNvdXBzaWV2ZSBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWF1dGlmdWxzb3VwNF80LjguMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWF1dGlmdWxzb3VwNF80LjguMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTA3Mjg1YS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmVhdXRpZnVsc291cDRfNC44LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tYmVhdXRpZnVsc291cDQuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmVoYXZlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWhhdmUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZWQ3NTgwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWhhdmUuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGJlaGF2aW9yLWRyaXZlbiBkZXZlbG9wbWVudCBmcmFtZXdvcmssIFB5dGhvbiBzdHlsZSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iZWhhdmUvYmVoYXZlIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kOTUwNDM5ZThlYTZlZDIzM2U0Mjg4ZjVlMWE0OWMwNiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNmMDVjODU5YTFjNDVmNWVkMzNlOTI1ODE3YWQ4ODdkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5NjYyMzI3YWE1MzI5NGMxMzUxYjBhOWMzNjkwOTNjY2VjMWQyMTAyNmYwNTBjM2JkOWIzZTVjY2NmODFhODYiCi0KLWluaGVyaXQgcHlwaQotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tcGFyc2UtdHlwZSBcCi0gICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWhhdmVfMS4yLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmVoYXZlXzEuMi42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NjIyMTY4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1iZWhhdmVfMS4yLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tYmVoYXZlLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tYXJncGFyc2UgXAotICAgICR7UFlUSE9OX1BOfS1lbnVtMzQgXAotICAgICR7UFlUSE9OX1BOfS10cmFjZWJhY2syIFwKLSAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYml0YXJyYXkuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJpdGFycmF5LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJkYTM0OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYml0YXJyYXkuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGhpZ2gtbGV2ZWwgUHl0aG9uIGVmZmljaWVudCBhcnJheXMgb2YgYm9vbGVhbnMgLS0gQyBleHRlbnNpb24iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vaWxhbnNjaG5lbGwvYml0YXJyYXkiCi1MSUNFTlNFID0gIlBTRiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT1kYzMwMWEyNWViZTIxMGRjYzUzYjBhMmQ1YTAzOGVhZSIKLQotU1JDX1VSSVttZDVzdW1dID0gImE0NmJmODY5ZjZhZGYzNGY1YjBkYzgyYjQ2OTc5M2I3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJlZDY3NWY0NjBiYjBkM2Q2NmZkODA0MmE2ZjFmMGQzNmNmMjEzZTUyZTcyYTc0NTI4M2RkYjI0NWRhN2I5Y2YiCi0KLWluaGVyaXQgcHlwaQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYml0YXJyYXlfMS4yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYml0YXJyYXlfMS4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3OGM3YWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJpdGFycmF5XzEuMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWJpdGFycmF5LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJsaW5rZXIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJsaW5rZXIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYWYzOTA4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ibGlua2VyLmluYworKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiRmFzdCwgc2ltcGxlIG9iamVjdC10by1vYmplY3QgYW5kIGJyb2FkY2FzdCBzaWduYWxpbmcuIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9OTQ2ZDdlODlhZjZmNzczM2FlYWViZWQ1NjM1ZDI2ODIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4YjM3MjIzODFmODNjMjgxM2M1MmRlMzAxNmI2OGQzMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NzFhZWUyNWYzOTkyYmQzMjVhZmEzNzcyZjEwNjNkYmRiYmNhOTQ3YTA0MWI4Yjg5NDY2ZGMwMGQ2MDZmOGI2IgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmxpbmtlcl8xLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tYmxpbmtlcl8xLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjNDE2NGUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJsaW5rZXJfMS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tYmxpbmtlci5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ib29sZWFucHkuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJvb2xlYW5weS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMzNWQ3ZDMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWJvb2xlYW5weS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIkRlZmluZSBib29sZWFuIGFsZ2VicmFzLCBjcmVhdGUgYW5kIHBhcnNlIGJvb2xlYW4gZXhwcmVzc2lvbnMgYW5kIGNyZWF0ZSBjdXN0b20gYm9vbGVhbiBEU0wiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYmFzdGlrci9ib29sZWFuLnB5IgotCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1lMzE5NzQ3YTVlYjk0Y2RkZjY0NjAzN2MwMWRkYmE0NyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjExODlkMTE1YTM4Zjg0ZjVkZjc0MzAxNDkyNmE5MTU5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJkMTliNDEyNDM1NjExZWNjNzEyNjAzZDBmZDdkMGUyODBlMjQ2OThlN2E2ZTNkNWY2MTA0NzM4NzBjNWRkMWUiCi0KLVBZUElfUEFDS0FHRSA9ICJib29sZWFuLnB5IgotCi1pbmhlcml0IHB5cGkKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhY2hldG9vbHMuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhY2hldG9vbHMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmM2QzYmM2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYWNoZXRvb2xzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVNVTU1BUlkgPSAiRXh0ZW5zaWJsZSBtZW1vaXppbmcgY29sbGVjdGlvbnMgYW5kIGRlY29yYXRvcnMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdGtlbS9jYWNoZXRvb2xzIgotREVTQ1JJUFRJT04gPSAiVGhpcyBtb2R1bGUgcHJvdmlkZXMgdmFyaW91cyBtZW1vaXppbmcgXAotY29sbGVjdGlvbnMgYW5kIGRlY29yYXRvcnMsIGluY2x1ZGluZyB2YXJpYW50cyBvZiB0aGUgXAotUHl0aG9uIDMgU3RhbmRhcmQgTGlicmFyeSBAbHJ1X2NhY2hlIGZ1bmN0aW9uIGRlY29yYXRvci4iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yN2Y3NTE4ZWI2ZjdkYzY4NmQwZjk1M2IyZjI4ZGFlNSIKLQotaW5oZXJpdCBweXBpCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2YTg4ZGYxMzQ2N2U4MGViNjFkZDJiZWRhZDE5YjgzYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5YTUyZGQ5N2E4NWYyNTdmNGU0MTI3ZjE1ODE4ZTcxYTBjNzg5OWYxMjFiMzQ1OTFmY2MxMTczZWE3OWEwMTk4IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2FjaGV0b29sc180LjAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYWNoZXRvb2xzXzQuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzEyYWQwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYWNoZXRvb2xzXzQuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWNhY2hldG9vbHMuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2FuLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYW4uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZDAxMDBkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYW4uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJDb250cm9sbGVyIEFyZWEgTmV0d29yayAoQ0FOKSBpbnRlcmZhY2UgbW9kdWxlIGZvciBQeXRob24iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjcyNDU1M2EzMzA0NzgyNzAyNjczODBiNDg4OGExOGUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWZlZmI1YzFlN2U3ZjA3ZmFlZmMwMmM2ZWFjNzlmOWI1ODM3NmYwMDcwNDhhMDRkOGU3ZjMyNWQ0OGVjNmIyZSIKLQotUFlQSV9QQUNLQUdFPSJweXRob24tY2FuIgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKLSAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCi0gICAgJHtQWVRIT05fUE59LW1pc2MgXAotICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAotICAgICR7UFlUSE9OX1BOfS1zcWxpdGUzIFwKLSAgICAke1BZVEhPTl9QTn0td3JhcHQgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbl8zLjMuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYW5fMy4zLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwZWRiNjQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNhbl8zLjMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSBweXRob24tY2FuLmluYwotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWFyZ3BhcnNlIFwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0gICAgJHtQWVRIT05fUE59LXpsaWIgXAotIiAgICAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYXNzYW5kcmEtZHJpdmVyLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jYXNzYW5kcmEtZHJpdmVyLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNlYmZlYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2Fzc2FuZHJhLWRyaXZlci5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIkRhdGFTdGF4IFB5dGhvbiBEcml2ZXIgZm9yIEFwYWNoZSBDYXNzYW5kcmEiCi1ERVNDUklQVElPTiA9ICJBIG1vZGVybiwgZmVhdHVyZS1yaWNoIGFuZCBoaWdobHktdHVuYWJsZSBQeXRob24gY2xpZW50IFwKLWxpYnJhcnkgZm9yIEFwYWNoZSBDYXNzYW5kcmEgKDEuMispIGFuZCBEYXRhU3RheCBFbnRlcnByaXNlICgzLjErKSB1c2luZyBcCi1leGNsdXNpdmVseSBDYXNzYW5kcmEncyBiaW5hcnkgcHJvdG9jb2wgYW5kIENhc3NhbmRyYSBRdWVyeSBMYW5ndWFnZSB2My4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZGF0YXN0YXgvcHl0aG9uLWRyaXZlciIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MmVlNDExMTJhNDRmZTcwMTRkY2UzM2UyNjQ2OGJhOTMiCi1TUkNOQU1FID0gImNhc3NhbmRyYS1kcml2ZXIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjNWJlZDAyNmJmNDhjODIxNDI0YzFmNjI5NjE5MzkwOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNjUyMThlMjU4MjI3N2Y1Yjc3ZDE0MzZlNDIwZGI4NjE2ZjYzZTM0MzdhOWU4MzljZGNkNzE3MmQ3NjBlODYxIgotCi1ESVNUVVRJTFNfQlVJTERfQVJHUyArPSAiIFwKLSAgICAtLW5vLWxpYmV2IFwKLSIKLURJU1RVVElMU19JTlNUQUxMX0FSR1MgKz0gIiBcCi0gICAgLS1uby1saWJldiBcCi0iCi0KLWluaGVyaXQgcHlwaQotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1jeXRob24gXAotICAgICR7UFlUSE9OX1BOfS1tdWx0aXByb2Nlc3NpbmcgXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotICAgICR7UFlUSE9OX1BOfS1qc29uIFwKLSAgICBsaWJldmVudCBcCi0iCi0KLURFUEVORFMgKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tY3l0aG9uIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZXJ0aWZpLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZXJ0aWZpLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThmYTFmMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2VydGlmaS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBwYWNrYWdlIGZvciBwcm92aWRpbmcgTW96aWxsYSdzIENBIEJ1bmRsZS4iCi1ERVNDUklQVElPTiA9ICJUaGlzIGluc3RhbGxhYmxlIFB5dGhvbiBwYWNrYWdlIGNvbnRhaW5zIGEgQ0EgQnVuZGxlIHRoYXQgeW91IGNhbiByZWZlcmVuY2UgaW4geW91ciBcCi1QeXRob24gY29kZS4gVGhpcyBpcyB1c2VmdWwgZm9yIHZlcmlmeWluZyBIVFRQIHJlcXVlc3RzLCBmb3IgZXhhbXBsZS4gIFRoaXMgaXMgdGhlIHNhbWUgQ0EgQnVuZGxlIFwKLXdoaWNoIHNoaXBzIHdpdGggdGhlIFJlcXVlc3RzIGNvZGViYXNlLCBhbmQgaXMgZGVyaXZlZCBmcm9tIE1vemlsbGEgRmlyZWZveCdzIGNhbm9uaWNhbCBzZXQuIgotSE9NRVBBR0UgPSAiIGh0dHA6Ly9jZXJ0aWZpLmlvLyIKLQotTElDRU5TRSA9ICJJU0MiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mNzdmNjFkMTRlZTZmZWFjNDIyOGQzZWJkMjZjYzFmMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRkNTIyOWM0ZDlmMGE0YTc5MTA2ZjllMmMyY2ZkMzgxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI1YjY0YzdkYTRjZDc0Nzk1OTRkMDM1YzA4YzJkODA5ZWI0YWFiM2EyNmU1YTk5MGVhOThjYzQ1MGMzMjBmMWYiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZXJ0aWZpXzIwMTkuMTEuMjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2VydGlmaV8yMDE5LjExLjI4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZGZlNjIzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZXJ0aWZpXzIwMTkuMTEuMjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1jZXJ0aWZpLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNmZmkuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNmZmkuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMmIwYzNiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZmZpLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgZm9yIFB5dGhvbiBjYWxsaW5nIEMgY29kZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9jZmZpLnJlYWR0aGVkb2NzLm9yZy8iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTU2NzdlMmZkYmY3Y2RkYTYxZDZkZDJiNTdkZjU0N2JmIgotREVQRU5EUyArPSAibGliZmZpICR7UFlUSE9OX1BOfS1weWNwYXJzZXIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2NTIyMDNjZjk5ZmFhMjU0ZWZmZjdmYWIyM2MyZjNhMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1OTlhMWU4ZmYwNTdhYzUzMGM5YWQxNzc4MjkzYzY2NWNiODFhNzkxNDIxZjQ2OTIyZDgwYTg2NDczYzEzMzQ2IgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKLSAgICAke1BZVEhPTl9QTn0taW8gXAotICAgICR7UFlUSE9OX1BOfS1weWNwYXJzZXIgXAotICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZmZpXzEuMTMuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jZmZpXzEuMTMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM2NjdiOC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2ZmaV8xLjEzLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWNmZmkuaW5jCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2hhcmRldC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2hhcmRldC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYzMDUyOTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNoYXJkZXQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJVbml2ZXJzYWwgZW5jb2RpbmcgZGV0ZWN0b3IgZm9yIFB5dGhvbiAyIGFuZCAzIgotTElDRU5TRSA9ICJMR1BMLTIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIgotCi1pbmhlcml0IHB5cGkKLQotIyBzZXR1cC5weSBvZiBjaGFyZGV0IG5lZWRzIHRoaXMuCi1ERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tcHl0ZXN0LXJ1bm5lci1uYXRpdmUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3ZGQxYmE3ZjljNzdlMzIzNTFiMGEwY2ZhY2Y0MDU1YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NGFiOTJlZDFjNGQ0ZjE2OTE2ZTA1OTA2YjZiNzVhNmMwZmI1ZGI4MjFjYzY1ZTcwY2JkNjRhM2UyYTVlYWFlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1jbGkiCi1SREVQRU5EU18ke1BOfS1jbGkgPSAiJHtQTn0gIgotRklMRVNfJHtQTn0tY2xpICs9ICIgXAotICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2NoYXJkZXQvY2xpIFwKLSIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jaGFyZGV0XzMuMC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNoYXJkZXRfMy4wLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNmZlZWUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNoYXJkZXRfMy4wLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tY2hhcmRldC5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1hcmdwYXJzZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jaGVldGFoXzIuNC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNoZWV0YWhfMi40LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwZmMyZmQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNoZWV0YWhfMi40LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiB0ZW1wbGF0ZSBlbmdpbmUgYW5kIGNvZGUgZ2VuZXJhdGlvbiB0b29sIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hZmYxMTA3NTE0YWE2YWFlOTQ4ZjlmZTcxZmRjMzkzYiIKLQotUFIgPSAicjMiCi0KLVBZUElfUEFDS0FHRSA9ICJDaGVldGFoIgotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAicHl0aG9uLXBpY2tsZSBweXRob24tcHByaW50IgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODUzOTE3MTE2ZTczMWFmYmM4YzhhNDNjMzdlNmRkYmEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmUzMDgyMjlmMGMxZTVlNWFmNGYyN2Q3ZWUwNmQ5MGJiMTllNmFmMzA1OTc5NGU1ZmQ1MzZhNmYyOWE5YjU1MCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jbGljay5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY2xpY2suaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWRmZDU2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jbGljay5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkEgc2ltcGxlIHdyYXBwZXIgYXJvdW5kIG9wdHBhcnNlIGZvciBwb3dlcmZ1bCBjb21tYW5kIGxpbmUgdXRpbGl0aWVzLiIKLURFU0NSSVBUSU9OID0gIlwKLUNsaWNrIGlzIGEgUHl0aG9uIHBhY2thZ2UgZm9yIGNyZWF0aW5nIGJlYXV0aWZ1bCBjb21tYW5kIGxpbmUgaW50ZXJmYWNlcyBcCi1pbiBhIGNvbXBvc2FibGUgd2F5IHdpdGggYXMgbGl0dGxlIGNvZGUgYXMgbmVjZXNzYXJ5LiBJdCdzIHRoZSAiQ29tbWFuZCBcCi1MaW5lIEludGVyZmFjZSBDcmVhdGlvbiBLaXQiLiBJdCdzIGhpZ2hseSBjb25maWd1cmFibGUgYnV0IGNvbWVzIHdpdGggXAotc2Vuc2libGUgZGVmYXVsdHMgb3V0IG9mIHRoZSBib3guIgotSE9NRVBBR0UgPSAiaHR0cDovL2NsaWNrLnBvY29vLm9yZy8iCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UucnN0O21kNT1jMTNlZDg5MGIyMTBhODgyYzE3NzgyMTY2OTRjOThjNyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdmNTNkNTBmN2I3MzczZWJjNzk2M2Y5ZmY2OTc0NTBhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjViOTRiNDk1MjFmNjQ1NjY3MGZkYjMwY2Q4MmE0ZWNhOTQxMjc4OGE5M2ZhNmRkNmRmNzJjOTRkNWE4ZmYyZDciCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImNsaWNrLyg/UDxwdmVyPlxkKyhcLlxkKykrKS8iCi0KLUNMRUFOQlJPS0VOID0gIjEiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWlvIFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSAgICAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUFlQSV9QQUNLQUdFID0gIkNsaWNrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNsaWNrXzcuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jbGlja183LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2M2UyN2MuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNsaWNrXzcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWNsaWNrLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWNvbnRleHRsaWIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY21kMi5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY21kMi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4MzgxYWQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNtZDIuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotU1VNTUFSWSA9ICJFeHRyYSBmZWF0dXJlcyBmb3Igc3RhbmRhcmQgbGlicmFyeSdzIGNtZCBtb2R1bGUiCi1IT01FUEFHRSA9ICJodHRwOi8vcGFja2FnZXMucHl0aG9uLm9yZy9jbWQyLyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTc5MWNkMjRjYTdkMTgwNzM4OGNjZDU1Y2QwNjZkZWYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZGI2NmEwNjIxMGQ1ZjFlZGI0NDY5M2I4ODdlZDYyYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4YWQxMmVmM2NjNDZkMDMwNzNjNTQ1YjZlODBhM2Y4NGE1OTIxZjY2NTMwNzNhNjBlN2Q5YTdmZjNiMzUyYzllIgotCi1pbmhlcml0IHB5cGkKLQotREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXNldHVwdG9vbHMtc2NtLW5hdGl2ZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNtZDJfMC45LjIzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNtZDJfMC45LjIzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2I2YWUyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jbWQyXzAuOS4yMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tY21kMi5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tZG9jdGVzdCBcCi0gICAgJHtQWVRIT05fUE59LXB5cGFyc2luZyBcCi0gICAgJHtQWVRIT05fUE59LXB5cGVyY2xpcCBcCi0gICAgJHtQWVRIT05fUE59LXNoZWxsIFwKLSAgICAke1BZVEhPTl9QTn0tc2l4IFwKLSAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0gICAgJHtQWVRIT05fUE59LXRleHR1dGlscyBcCi0gICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbG9yZWRsb2dzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb2xvcmVkbG9ncy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJkYjFkNzUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbG9yZWRsb2dzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkNvbG9yZWQgdGVybWluYWwgb3V0cHV0IGZvciBQeXRob24ncyBsb2dnaW5nIG1vZHVsZSIKLUhPTUVQQUdFID0gImh0dHBzOi8vY29sb3JlZGxvZ3MucmVhZHRoZWRvY3MuaW8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTY5MGRhMjk4YTQzODA1Nzk3YTRmYTdiYmUxODBiM2M2IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMGExODY5NjZhMTk1NWZmZjhjZjk0ODkzNzNlNjkxZDkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjg2OWEyZGRhM2ZhODgxNTRiOWRkODUwZTI3ODI4ZDg3NTViZmFiNWE4MzhhMWM5N2ZiYzg1MGM2ZTM3N2MzNiIKLQotaW5oZXJpdCBweXBpCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWllICJzL2ZpbmRfcHRoX2RpcmVjdG9yeSgpLC8nJywvZyIgJHtTfS9zZXR1cC5weQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBybSAtcmYgJHtEfSR7ZGF0YWRpcn0KLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0taHVtYW5mcmllbmRseSBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbG9yZWRsb2dzXzEwLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29sb3JlZGxvZ3NfMTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZjMWIyNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29sb3JlZGxvZ3NfMTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1jb2xvcmVkbG9ncy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb25maWdhcmdwYXJzZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29uZmlnYXJncGFyc2UuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxN2QyOTZmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb25maWdhcmdwYXJzZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIkEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3IgYXJncGFyc2UgdGhhdCBhbGxvd3Mgb3B0aW9ucyB0byBhbHNvIGJlIHNldCB2aWEgY29uZmlnIGZpbGVzIGFuZC9vciBlbnZpcm9ubWVudCB2YXJpYWJsZXMuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2J3Mi9Db25maWdBcmdQYXJzZSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZGE3NDY0NjM3MTRjYzM1OTk5ZWQ5YTQyMzM5ZjI5NDMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhYmExNWI3OTczYjdhNzBiZWE4NmZkNjkyODlmOGZlMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiYWFmMGZkMmMxYzEwOGQwMDdmNDAyZGFiNTQ4MWFjNWYxMmQ3N2QwMzQ4MjViZjVhMjdmODIyNDc1N2JkMGFjIgotCi1QWVBJX1BBQ0tBR0UgPSAiQ29uZmlnQXJnUGFyc2UiCi0KLWluaGVyaXQgcHlwaQotCi1QQUNLQUdFQ09ORklHID89ICJ5YW1sIgotUEFDS0FHRUNPTkZJR1t5YW1sXSA9ICIsLCwke1BZVEhPTl9QTn0tcHl5YW1sIgotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1jb3JlIFwKLSAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb25maWdhcmdwYXJzZV8wLjE1LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29uZmlnYXJncGFyc2VfMC4xNS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZDY0YjhkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb25maWdhcmdwYXJzZV8wLjE1LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tY29uZmlnYXJncGFyc2UuaW5jCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb25maWdwYXJzZXIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbmZpZ3BhcnNlci5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlY2ZlMjIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbmZpZ3BhcnNlci5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIlRoaXMgbW9kdWxlIHByb3ZpZGVzIHRoZSBDb25maWdQYXJzZXIgY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyBhIGJhc2ljIGNvbmZpZ3VyYXRpb24gbGFuZ3VhZ2Ugd2hpY2ggcHJvdmlkZXMgYSBzdHJ1Y3R1cmUgc2ltaWxhciB0byB3aGF0J3MgZm91bmQgaW4gTWljcm9zb2Z0IFdpbmRvd3MgSU5JIGZpbGVzLiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2NvbmZpZ3BhcnNlci5odG1sIgotTElDRU5TRSA9ICJNSVQiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT0xMDtlbmRsaW5lPTEwO21kNT0yM2Y5YWQ1Y2FkM2Q4Y2MwMzM2ZTJhNWQ4YTg3ZTFmYSIKLQotU1JDX1VSSVttZDVzdW1dID0gImJjMTU1OGVkOTQxY2IxYWNiODBmZjY1MDcyNmQ1YWY4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjMzc4NTBmMGNjNDJhMTcyNWE3OTZlZjdkOTI2OTA2NTFiZjFhZjM3ZDc0NGNjNjMxNjFkYWM2MmNhYmVlMTciCi0KLWluaGVyaXQgcHlwaQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbmZpZ3BhcnNlcl8zLjguMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb25maWdwYXJzZXJfMy44LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4ZWQxZTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbmZpZ3BhcnNlcl8zLjguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1jb25maWdwYXJzZXIuaW5jCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLXBrZ3V0aWwiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29uc3RhbnRseS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29uc3RhbnRseS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxNTM1MDQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNvbnN0YW50bHkuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiU3ltYm9saWMgY29uc3RhbnRzIGluIFB5dGhvbiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS90d2lzdGVkL2NvbnN0YW50bHkiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWUzOTNlNGRkZDIyM2UzYTc0OTgyZWZhNzg0Zjg5ZmQ3IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjA3NjJmMDgzZDgzMDM5NzU4ZTUzZjhjZjAwODZlZWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTg2MzcyZWI5MjA1OTg3M2UyOWViYTRmOWRlYzgzODE1NDFiNGQzODM0NjYwNzA3ZmFmOGJhNTkxNDZkZmMzNSIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tanNvbiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb25zdGFudGx5XzE1LjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb25zdGFudGx5XzE1LjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjliMTVlYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29uc3RhbnRseV8xNS4xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tY29uc3RhbnRseS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb250ZXh0bGliMi5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29udGV4dGxpYjIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NTA3MjFmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb250ZXh0bGliMi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJCYWNrcG9ydHMgYW5kIGVuaGFuY2VtZW50cyBmb3IgdGhlIGNvbnRleHRsaWIgbW9kdWxlIgotSE9NRVBBR0UgPSAiaHR0cDovL2NvbnRleHRsaWIyLnJlYWR0aGVkb2NzLm9yZy8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiUFNGIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTQzZDFjNzgyN2U4ZmFkNjQ1NGI1NTNjYWYwZTFkNzM0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDAzYTYzMTA3M2I0MDA3M2I1YzQxMzY0YWQ4ZjU5NzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzE5N2FhNzM2Nzc3Y2FhYzUxM2RiZDgwMDk0NGMyMDlhNDk3NjViZjE5NzliMTJiMDM3ZGNlMDI3NzA3N2VkMyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb250ZXh0bGliMl8wLjYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jb250ZXh0bGliMl8wLjYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdjZmZiOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY29udGV4dGxpYjJfMC42LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1jb250ZXh0bGliMi5pbmMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyY21vZC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3JjbW9kLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVkYTdjYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3JjbW9kLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBQeXRob24gbW9kdWxlIGZvciBnZW5lcmF0aW5nIG9iamVjdHMgdGhhdCBjb21wdXRlIHRoZSBDeWNsaWMgUmVkdW5kYW5jeSBDaGVjay4iCi1IT01FUEFHRSA9ICJodHRwczovL3B5cGkub3JnL3Byb2plY3QvY3JjbW9kIgotTElDRU5TRSA9ICJNSVQiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWY5YTE5MjkxNjI3Y2FkMmQxZGZiZmNmM2M5ZmI4NWMyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmQ1YjkyMTE3ZDk1OGRjZWFkOTRmOWUxN2Y1NGNkMzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGM3MDUxYTBkYjVmMmJkNDg2NjVhOTkwZDNlYzFjYzMwNWE0NjZhNzczNThjYTQ0OTI4MjZmNDFmMjgzNjAxZSIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tdW5pdHRlc3QiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcmNtb2RfMS43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyY21vZF8xLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1YjlhMmMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyY21vZF8xLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tY3JjbW9kLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS12ZWN0b3JzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHktdmVjdG9ycy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwYWY0OGMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS12ZWN0b3JzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiVGVzdCB2ZWN0b3JzIGZvciB0aGUgY3J5cHRvZ3JhcGh5IHBhY2thZ2UuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9jcnlwdG9ncmFwaHkuaW8vIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAgfCBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04YzM2MTdkYjRmYjZmYWUwMWYxZDI1M2FiOTE1MTFlNCIKLQotREVQRU5EUyArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tY3J5cHRvZ3JhcGh5IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImE3NDRlZDI5YmI5ZWY1NmIzYTUwMzE3ZmVhM2IyMThlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjZDMyMTc0YzU2YTNlY2E3MmY2NGFmNDNjMWRhYWNhYWU3NThjZmE1ZmY5ZDI4MGRmY2Y4MThmYTExZWYxMTYiCi0KLVBZUElfUEFDS0FHRSA9ICJjcnlwdG9ncmFwaHlfdmVjdG9ycyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LXZlY3RvcnNfMi44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS12ZWN0b3JzXzIuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDk3NTI3OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LXZlY3RvcnNfMi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tY3J5cHRvZ3JhcGh5LXZlY3RvcnMuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHkuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YWNkMDJkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHkuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotU1VNTUFSWSA9ICJQcm92aWRlcyBjcnlwdG9ncmFwaGljIHJlY2lwZXMgYW5kIHByaW1pdGl2ZXMgdG8gcHl0aG9uIGRldmVsb3BlcnMiCi1IT01FUEFHRSA9ICJodHRwczovL2NyeXB0b2dyYXBoeS5pby8iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAgfCBCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wOTdmODA1ODM3NzAwY2ZhYzU3MmFjMjc0Y2QzODEyNCIKLQotTERTSEFSRUQgKz0gIi1wdGhyZWFkIgotCi1ERVBFTkRTICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1jZmZpIFwKLSAgICAke1BZVEhPTl9QTn0tY2ZmaS1uYXRpdmUgXAotICAgICR7UFlUSE9OX1BOfS1hc24xY3J5cHRvIFwKLSAgICAke1BZVEhPTl9QTn0tc2l4IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjc3NzMwMDU4YjU1NmM2ZDk4Mzg2NzlhOTRjNjIyOWNlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNjZGExZjBlZDg3NDczMzliYmRmNzFiOWYzOGNhNzRjN2I1OTJmMjRmNjVjZGIzYWIzNzY1ZTRiMDI4NzE2NTEiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1jZmZpIFwKLSAgICAke1BZVEhPTl9QTn0taWRuYSBcCi0gICAgJHtQWVRIT05fUE59LWFzbjFjcnlwdG8gXAotICAgICR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzIFwKLSAgICAke1BZVEhPTl9QTn0tc2l4IFwKLSIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1jZmZpIFwKLSAgICAke1BZVEhPTl9QTn0taWRuYSBcCi0gICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAotICAgICR7UFlUSE9OX1BOfS1hc24xY3J5cHRvIFwKLSAgICAke1BZVEhPTl9QTn0tc2V0dXB0b29scyBcCi0gICAgJHtQWVRIT05fUE59LXNpeCBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0iCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAotICAgICR7UE59IFwKLSAgICAke1BZVEhPTl9QTn0tY3J5cHRvZ3JhcGh5LXZlY3RvcnMgXAotICAgICR7UFlUSE9OX1BOfS1pc284NjAxIFwKLSAgICAke1BZVEhPTl9QTn0tcHJldGVuZCBcCi0gICAgJHtQWVRIT05fUE59LXB5dGVzdCBcCi0gICAgJHtQWVRIT05fUE59LXB5dHogXAotIgotCi1pbmhlcml0IHB0ZXN0Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cwotICAgIGNwIC1yZiAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCi0gICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9oYXptYXQKLSAgICBjcCAtcmYgJHtTfS90ZXN0cy9oYXptYXQvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9oYXptYXQvCi19Ci0KLUZJTEVTXyR7UE59LWRiZyArPSAiIFwKLSAgICAke2xpYmRpcn0vJHtQWVRIT05fUE59Mi43L3NpdGUtcGFja2FnZXMvJHtTUkNOQU1FfS9oYXptYXQvYmluZGluZ3MvLmRlYnVnIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWNyeXB0b2dyYXBoeS9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5L3J1bi1wdGVzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGJhMjM5Yy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5L3J1bi1wdGVzdAorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotIyEvYmluL3NoCi1weS50ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3J5cHRvZ3JhcGh5XzIuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHlfMi44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzJmODg0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jcnlwdG9ncmFwaHlfMi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWNyeXB0b2dyYXBoeS5pbmMKLQotU1JDX1VSSSArPSAiIFwKLSAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLQotREVQRU5EUyArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tZW51bTM0IFwKLSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWVudW0zNCBcCi0gICAgJHtQWVRIT05fUE59LWlwYWRkcmVzcyBcCi0iCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tZW51bTM0IFwKLSAgICAke1BZVEhPTl9QTn0taXBhZGRyZXNzIFwKLSAgICAke1BZVEhPTl9QTn0tY29udGV4dGxpYiBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbl8wLjI5LjE0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWN5dGhvbl8wLjI5LjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODAzYTZlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jeXRob25fMC4yOS4xNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tY3l0aG9uLmluYwotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9DeXRob24vIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL0N5dGhvbi8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWRpc3RyaWJ1dGUgXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYWVtb25fMi4xLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGFlbW9uXzIuMS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDJkYTA0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYWVtb25fMi4xLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1ERVNDUklQVElPTiA9ICJMaWJyYXJ5IHRvIGltcGxlbWVudCBhIHdlbGwtYmVoYXZlZCBVbml4IGRhZW1vbiBwcm9jZXNzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9wYWd1cmUuaW8vcHl0aG9uLWRhZW1vbi8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLQotREVQRU5EUyArPSAicHl0aG9uLWRvY3V0aWxzLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbi1kb2N1dGlscyBcCi0gICAgICAgICAgICAgICAgICBweXRob24tbG9ja2ZpbGUgKD49IDAuMTApIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1yZXNvdXJjZSBcCi0iCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCAmIEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT0yNjk1Yzg1M2EyY2FmYzMzZTY4YTFkOTcyODg5ZWJkMiIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotU1JDX1VSSVttZDVzdW1dID0gIjljNTczNDNkODFmMmE5NmM1MWNmZmVhYjk4MmIwNGQyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI2MWM4NTliZTVjMTJhZTdkNDI4NmRjNjk1MWU4N2U5ZTFhNzBhODgyYThiNDFmZDkyNmVmYzFlYzQyMTRmNzMiCi0KLSMgRml4IGZvciBidWlsZCBlcnJvciBpbiBZb2N0bzoKLSMgICAgIGkgPSBwLnJmaW5kKCcvJykgKyAxCi0jIEF0dHJpYnV0ZUVycm9yOiAnTm9uZVR5cGUnIG9iamVjdCBoYXMgbm8gYXR0cmlidXRlICdyZmluZCcKLSNTID0gIiR7V09SS0RJUn0vcHl0aG9uLWRhZW1vbiIKLVNSQ19VUklfYXBwZW5kID0gIiBcCi0gICAgICAgICAgICAgICAgICBmaWxlOi8vMDAwMS1Xb3JrYXJvdW5kLWZvci1pc3N1ZS0yLTEucGF0Y2ggXAotIgotCi1QWVBJX1BBQ0tBR0UgPSAicHl0aG9uLWRhZW1vbiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYWVtb25pemVfMi41LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGFlbW9uaXplXzIuNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGY2NGZjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYWVtb25pemVfMi41LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgdG8gZW5hYmxlIHlvdXIgY29kZSBydW4gYXMgYSBkYWVtb24gcHJvY2VzcyBvbiBVbml4LWxpa2Ugc3lzdGVtcyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTNlOTgyYmYxYjdiMTY0YjlkNmQxNjY1ZGFjODM4NzMiCi1TUkNOQU1FID0gImRhZW1vbml6ZSIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgICAgICAgICAgICAgcHl0aG9uLWZjbnRsIFwKLSAgICAgICAgICAgICAgIHB5dGhvbi11bml4YWRtaW4gXAotICAgICAgICAgICAgICAgcHl0aG9uLWxvZ2dpbmcgXAotICAgICAgICAgICAgICAgcHl0aG9uLXJlc291cmNlIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjNkNjRlN2EwMjE5YWQyMmUzZmNhNjI0NjBmODkzYjZhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRkMDI2ZTRmZjhkMjJjYjAxNmVkMjEzMGJjNzM4YjdkNGIxZGE1OTdlZjkzYzA3NGQyYWRiOWU0ZGVhMDhiYzMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGF0ZXV0aWwuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRhdGV1dGlsLmluYwppbmRleCAzYzg5Y2Q2Li5lNzBlOTYzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGF0ZXV0aWwuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYXRldXRpbC5pbmMKQEAgLTE1LDcgKzE1LDcgQEAKIAogREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXNldHVwdG9vbHMtc2NtLW5hdGl2ZSIKIAotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIlwKK1JERVBFTkRTXyR7UE59ID0gIlwKICAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAogICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKICAgICAke1BZVEhPTl9QTn0tc2l4IFwKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYXRldXRpbF8yLjguMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kYXRldXRpbF8yLjguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJhZTRjMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGF0ZXV0aWxfMi44LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tZGF0ZXV0aWwuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGJ1c18xLjIuMTQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGJ1c18xLjIuMTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4OWQ3ZDIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRidXNfMS4yLjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIHRoZSBEQnVzIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiBzeXN0ZW0iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL1NvZnR3YXJlL2RidXMiCi1MSUNFTlNFID0gIk1JVCAmIEFGTC0yLjEgfCBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIwMzI0MDUxODk5NGRmNmQ4Yzk3NDY3NTY3NWU1Y2E0IFwKLQkJICAgIGZpbGU6Ly9kYnVzLWdtYWluL0NPUFlJTkc7bWQ1PTk5ZmVjZTY3MjhhODA3MzdjOGZkM2U3YzczNGMxN2M0ICIKLURFUEVORFMgPSAiZXhwYXQgZGJ1cyBkYnVzLWdsaWIgdmlydHVhbC9saWJpbnRsIHB5dGhvbi1weXJleC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMtcHl0aG9uL2RidXMtcHl0aG9uLSR7UFZ9LnRhci5neiBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjODczOTIzNGZjYTlmYmEyNjM2OGQxYTMzN2FiZTgzMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMTAyMDZiYTNkZDY0MWU0ZTQ2NDExYWI5MTQ3MWM4OGUwZWVjMTc0OTg2MGU0Mjg1MTkzZWU2OGRmODRhYzMxIgotUyA9ICIke1dPUktESVJ9L2RidXMtcHl0aG9uLSR7UFZ9IgotCi1pbmhlcml0IGRpc3R1dGlscy1iYXNlIGF1dG90b29scyBwa2djb25maWcKLQotIyBkb2N1bWVudGF0aW9uIG5lZWRzIHB5dGhvbi1zcGhpbngsIHdoaWNoIGlzIG5vdCBpbiBvZS1jb3JlIG9yIG1ldGEtcHl0aG9uIGZvciBub3cKLSMgY2hhbmdlIHRvIHVzZSBQQUNLQUdFQ09ORklHIHdoZW4gcHl0aG9uLXNwaGlueCBpcyBhZGRlZCB0byBvZS1jb3JlIG9yIG1ldGEtcHl0aG9uCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIgotCi1leHBvcnQgU1RBR0lOR19MSUJESVIKLWV4cG9ydCBTVEFHSU5HX0lOQ0RJUgotCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24taW8gcHl0aG9uLWxvZ2dpbmcgcHl0aG9uLXN0cmluZ29sZCBweXRob24tdGhyZWFkaW5nIHB5dGhvbi14bWwiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3BrZ2NvbmZpZyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBSZW1vdmUgZmlsZXMgdGhhdCBjbGFzaCB3aXRoIHB5dGhvbjMtZGJ1czsgdGhlaXIgY29udGVudCBpcyBzYW1lCi0gICAgcm0gJHtEfSR7aW5jbHVkZWRpcn0vZGJ1cy0xLjAvZGJ1cy9kYnVzLXB5dGhvbi5oICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2RidXMtcHl0aG9uLnBjCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGJ1c21vY2tfMC4xNi43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRidXNtb2NrXzAuMTYuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM4YzU0YS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGJ1c21vY2tfMC4xNi43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotIyBDb3B5cmlnaHQgKGMpIDIwMTQgTEcgRWxlY3Ryb25pY3MsIEluYy4KLQotU1VNTUFSWSA9ICJXaXRoIHRoaXMgcHJvZ3JhbS9QeXRob24gbGlicmFyeSB5b3UgY2FuIGVhc2lseSBjcmVhdGUgbW9jayBvYmplY3RzIG9uIEQtQnVzIgotQVVUSE9SID0gIk1hcnRpbiBQaXR0IDxtYXJ0aW4ucGl0dEB1YnVudHUuY29tPiIKLQotTElDRU5TRSA9ICJHUEwtMy4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4MGY4Y2FhODM4ZmFkOTY0ODNhODc1MWUxMWQzODRmOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyZDJlYTg5MmZhNDYzM2MzZWM2YWMxZTkxMjEyMGVjNDkzMDQ3YTVjNjUyMjg0OWI3ZDFjOTVhZDc1NWJjZTc1IgotCi1TUkNfVVJJICs9ICIgXAotICAgIGZpbGU6Ly8wMDAxLUFkZC1mdW5jdGlvbmFsaXR5LXRvLWFkZC1vd24tb2JqZWN0cy10by1pbnRlcm5hbC1vYmoucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAyLUFkZC1wb3NzaWJpbGl0eS10by1pbXBvcnQtdGVtcGxhdGVzLWZyb20tcGFja2FnZXMucGF0Y2ggXAotIgotCi1QWVBJX1BBQ0tBR0UgPSAicHl0aG9uLWRidXNtb2NrIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1kYnVzIFwKLSAgICAke1BZVEhPTl9QTn0tcHlnb2JqZWN0IFwKLSAgICAke1BZVEhPTl9QTn0teG1sIFwKLSAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGVjb3JhdG9yLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kZWNvcmF0b3IuaW5jCmluZGV4IDY1ZGIxYTkuLjNmYWVlMzkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kZWNvcmF0b3IuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kZWNvcmF0b3IuaW5jCkBAIC05LDggKzksOCBAQAogTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9YmUyZmQyMDA3OTcyYmY5NmMwOGFmMzI5M2Q3MjhiMjIiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI5MzM5ODFmMjg4YzQyMzA4MTZiNWJlZWU4ZDQwZTZlYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NGMzODA1MDAzOTIzMmUxZGI0YWQ3Mzc1Y2ZjZTY3NDhkN2I0MWMyOWU5NWEwODFjOGE2ZDJjMzAzNjRhMmNlIgorU1JDX1VSSVttZDVzdW1dID0gImQ4M2M2MjRjY2U5M2U2YmRmYWIxNDQ4MjFiNTI2ZTFkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUzYTYyZjA1MjAxNzI0NDBjYTBkY2M4MjM3NDkzMTkzODJlMzc3ZjM3ZjE0MGEwYjk5ZWY0NWZlY2I4NGJmZTciCiAKIGluaGVyaXQgcHlwaQogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGVjb3JhdG9yXzQuNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRlY29yYXRvcl80LjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmEyYjQ1NS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGVjb3JhdG9yXzQuNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWRlY29yYXRvci5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1jb250ZXh0bGliIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nby1zb3V0aF8xLjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ28tc291dGhfMS4wLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1N2I3NjYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nby1zb3V0aF8xLjAuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBweXRob24tZGphbmdvLXNvdXRoLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ28uaW5jCmluZGV4IDYzZDAyNWQuLjU0Yzc3YzggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ28uaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ28uaW5jCkBAIC02LDcgKzYsNyBAQAogUFlQSV9QQUNLQUdFID0gIkRqYW5nbyIKIGluaGVyaXQgcHlwaQogCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj4xKFwuXGQrKSspIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKIAogRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGphbmdvIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvXzEuMTEuMTQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvXzEuMTEuMTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmZTIzZGMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRqYW5nb18xLjExLjE0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotcmVxdWlyZSBweXRob24tZGphbmdvLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzOGU4MmI1OWExYzI3YmJmOThjY2YwNTY0ZWFkNzQyNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlYjkyNzFmMDg3NGY1MzEwNmEyNzE5YzBjMzVjZTY3NjMxZjZjYzI3Y2Y4MWE2MGM2ZjhjOTgxN2IzNWEzZjZlIgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tYXJncGFyc2UgXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKLSAgICAke1BZVEhPTl9QTn0temxpYiBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZGphbmdvcmVzdGZyYW1ld29ya18zLjkuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ29yZXN0ZnJhbWV3b3JrXzMuOS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NDBkMTJkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kamFuZ29yZXN0ZnJhbWV3b3JrXzMuOS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1kamFuZ29yZXN0ZnJhbWV3b3JrLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRuc3B5dGhvbl8xLjE2LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZG5zcHl0aG9uXzEuMTYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRiY2QwZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZG5zcHl0aG9uXzEuMTYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1kbnNweXRob24uaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZG9jdXRpbHNfMC4xNS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRvY3V0aWxzXzAuMTUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDI2ZTgxOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZG9jdXRpbHNfMC4xNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJUZXh0IHByb2Nlc3Npbmcgc3lzdGVtIGZvciBkb2N1bWVudGF0aW9uIgotSE9NRVBBR0UgPSAiaHR0cDovL2RvY3V0aWxzLnNvdXJjZWZvcmdlLm5ldCIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJQU0YgJiBCU0QtMi1DbGF1c2UgJiBHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT03YTQ2NDY5MDdhYjkwODNjODI2MjgwYjE5ZTEwMzEwNiIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUFlQSV9QQUNLQUdFID0gImRvY3V0aWxzIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTI2YTMwOGQ4MDAwYjBiZWQ3NDE2YTYzMzIxN2M2NzYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTJhZWVhMTI5MDg4ZGE0MDI2NjVlOTJlMGIyNWIwNGIwNzNjMDRiMmRjZTRhYjY1Y2FhYTM4YjdjZTJlMWE5OSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kb21pbmF0ZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZG9taW5hdGUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZTQ5OWE2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kb21pbmF0ZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1TVU1NQVJZID0gIkRvbWluYXRlIGlzIGEgUHl0aG9uIGxpYnJhcnkgZm9yIGNyZWF0aW5nIGFuZCBtYW5pcHVsYXRpbmcgSFRNTCBkb2N1bWVudHMgdXNpbmcgYW4gZWxlZ2FudCBET00gQVBJLiIKLUxJQ0VOU0UgPSAiTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWI1MmYyZDU3ZDEwYzRmN2VlNjdhN2ViOTYxNWQ1ZDI0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjdkM2FhN2UwZDY3OTAyYzUwNWUyNDhlNzA1ZTVlMmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTkyNDc0YjQzMTJiZDhiNGMxNzg5NzkyZjNlYzhjNTcxY2Q4YWZhOGU3NTAyYTJiMWM2NGRkNDhjZDY3ZTU5YyIKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0gICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRvbWluYXRlXzIuNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWRvbWluYXRlXzIuNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMTk0NDVlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1kb21pbmF0ZV8yLjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWRvbWluYXRlLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWVkaXRvcl8xLjAuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lZGl0b3JfMS4wLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY3YTlhOGMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWVkaXRvcl8xLjAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWVkaXRvci5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lbmdpbmVpby5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZW5naW5laW8uaW5jCmluZGV4IDljMDY3YzkuLjk2NWY0MjAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lbmdpbmVpby5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWVuZ2luZWlvLmluYwpAQCAtOSw1ICs5LDUgQEAKIAogUFlQSV9QQUNLQUdFID0gInB5dGhvbi1lbmdpbmVpbyIKIAotU1JDX1VSSVttZDVzdW1dID0gIjEzMzQ1NDUyYmUyNWMzYjYzZDA0MWY4Zjg5ZTY2MmQxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ3YWU0YTliM2I0ZjJlOGE2ODkyOWYzN2E1MTgzMzg4MzhlMTE5ZjI0YzlhOTEyMWFmOTJjNDlmOGJlYTU1YzMiCitTUkNfVVJJW21kNXN1bV0gPSAiZTZlYThiM2YyZjMyZWVlYjAyMDE0YzQ2MDkyZjJhZGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjQ4MTczMmQ5MzY0Njk5OGY3MzcyZWYwZWNmMDAzYWY3ODE3YjgyNzIwYjg4MWRiMTczYzNkNTBiNDg4NzkxNiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lbmdpbmVpb18zLjExLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZW5naW5laW9fMy4xMS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZGQ2ZWMwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1lbmdpbmVpb18zLjExLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tZW5naW5laW8uaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZW51bTM0XzEuMS42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWVudW0zNF8xLjEuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDUwYjVjNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZW51bTM0XzEuMS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotU1VNTUFSWSA9ICJiYWNrcG9ydCBvZiBQeXRob24gMy40J3MgZW51bSBwYWNrYWdlIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9iaXRidWNrZXQub3JnL3N0b25lbGVhZi9lbnVtMzQiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2VudW0vTElDRU5TRTttZDU9MGE5N2E1M2E1MTQ1NjRjMjBlZmQ3YjJlODk3NmM4N2UiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1ZjEzYTA4NDFhNjFmN2ZjMjk1YzUxNDQ5MGQxMjBkMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4YWQ4YzQ3ODNiZjYxZGVkNzQ1MjdiZmZiNDhlZDliNTQxNjY2ODVlNDIzMDM4NmE5ZWQ5YjEyNzllMmRmNWIxIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZXB5ZG9jXzMuMC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWVweWRvY18zLjAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGQ5Nzk5Zi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZXB5ZG9jXzMuMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiRXB5ZG9jIGlzIGEgdG9vbCBmb3IgZ2VuZXJhdGluZyBBUEkgZG9jdW1lbnRhdGlvbiBmb3IgUHl0aG9uIG1vZHVsZXMsIGJhc2VkIG9uIHRoZWlyIGRvY3N0cmluZ3MiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0wMTFjMGQ3OGViNjA1NGQ3MzFjODc5MTMyZDczMTNmMCIKLUhPTUVQQUdFID0gImh0dHA6Ly9lcHlkb2Muc291cmNlZm9yZ2UubmV0LyIKLQotU1JDX1VSSVttZDVzdW1dID0gImNkZDZmNmM3NmRkOGJhYjVlNjUzYTM0M2EwNTQ0Mjk0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ0ZTVjOGQ5MDkzN2QwMWIwNTE3MGY1OTJjMWZhOWIyOWU5ZWQwNDk4ZGZlN2YwZWIyYTNhZjYxNzI1YjZhZDEiCi0KLWluaGVyaXQgcHlwaSBkaXN0dXRpbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tY29kZWNzIFwKLSAgICAke1BZVEhPTl9QTn0tcGlja2xlIFwKLSAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKLSAgICAke1BZVEhPTl9QTn0tcmUgXAotICAgICR7UFlUSE9OX1BOfS14bWwgXAotICAgICIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZXZkZXYuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWV2ZGV2LmluYwppbmRleCBhNTM2ODE1Li41ZjU0MjZhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZXZkZXYuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ldmRldi5pbmMKQEAgLTUsMTAgKzUsMTAgQEAKIAogRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vcHl0aG9uLWV2ZGV2OiIKIAotU1JDX1VSSSArPSAiIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1vbi0zMmJpdC1hcmNoZXMtd2l0aC02NGJpdC10aW1lX3QucGF0Y2giCitTUkNfVVJJID0gIiR7UFlQSV9TUkNfVVJJfSIKIAotU1JDX1VSSVttZDVzdW1dID0gIjUzZTQ0MDk0M2RmYTI1MTRmOTViM2M0NDhkNmEzNmNiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIwM2Y1ZTFiZTViNGE1MzI3NDk0YTk4MWI4MzFkMjUxYTE0MmIwOWU4Nzc4ZWRhMWE4YjUzZWJhOTExMDAxNjYiCitTUkNfVVJJW21kNXN1bV0gPSAiMDVmOWU5MDBkNmUxMWUxNjc0NDc1ZDJkZDI2NjhmMGQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjFjNjQ5YjRmZWQ3MjUyNzExMDExZGEyMzU3ODJiMmMyNjBiMzJlMDA0MDU4ZDYyNDczNDcxZTVjZDMwNjM0ZCIKIAogZG9fY29tcGlsZV9wcmVwZW5kKCkgewogICAgIHJtIC1yZiAke1N9L2V2ZGV2L2Vjb2Rlcy5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZXZkZXYvMDAwMS1GaXgtYnVpbGQtb24tMzJiaXQtYXJjaGVzLXdpdGgtNjRiaXQtdGltZV90LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWV2ZGV2LzAwMDEtRml4LWJ1aWxkLW9uLTMyYml0LWFyY2hlcy13aXRoLTY0Yml0LXRpbWVfdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTU0MTcyYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZXZkZXYvMDAwMS1GaXgtYnVpbGQtb24tMzJiaXQtYXJjaGVzLXdpdGgtNjRiaXQtdGltZV90LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotRnJvbSA0MzVlNzhhYWY2NzQ1ZTRkYTBmZTNkNDQ1NTQ3MzAxMTYyNmM3N2QxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMzAgTm92IDIwMTkgMTE6MjE6MjAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIG9uIDMyYml0IGFyY2hlcyB3aXRoIDY0Yml0IHRpbWVfdAotCi10aW1lIGVsZW1lbnQgaXMgZGVwcmVjYXRlZCBvbiBuZXcgaW5wdXRfZXZlbnQgc3RydWN0dXJlIGluIGtlcm5lbCdzCi1pbnB1dC5oIFsxXQotCi1bMV0gaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQvdG9ydmFsZHMvbGludXguZ2l0L2NvbW1pdD9pZD0xNTIxOTRmZTljM2YKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ndmFsa292L3B5dGhvbi1ldmRldi9wdWxsLzExMl0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBldmRldi9pbnB1dC5jICB8IDEzICsrKysrKysrKy0tLS0KLSBldmRldi91aW5wdXQuYyB8ICA5ICsrKysrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2V2ZGV2L2lucHV0LmMgYi9ldmRldi9pbnB1dC5jCi1pbmRleCA2N2I5MzQ4Li40MzJkYjkyIDEwMDY0NAotLS0tIGEvZXZkZXYvaW5wdXQuYwotKysrIGIvZXZkZXYvaW5wdXQuYwotQEAgLTI0LDYgKzI0LDExIEBACi0gI2luY2x1ZGUgPGxpbnV4L2lucHV0Lmg+Ci0gI2VuZGlmCi0gCi0rI2lmbmRlZiBpbnB1dF9ldmVudF9zZWMKLSsjZGVmaW5lIGlucHV0X2V2ZW50X3NlYyB0aW1lLnR2X3NlYwotKyNkZWZpbmUgaW5wdXRfZXZlbnRfdXNlYyB0aW1lLnR2X3VzZWMKLSsjZW5kaWYKLSsKLSAjZGVmaW5lIE1BWF9OQU1FX1NJWkUgMjU2Ci0gCi0gZXh0ZXJuIGNoYXIqICBFVl9OQU1FW0VWX0NOVF07Ci1AQCAtNjAsOCArNjUsOCBAQCBkZXZpY2VfcmVhZChQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi0gICAgICAgICByZXR1cm4gTlVMTDsKLSAgICAgfQotIAotLSAgICBQeU9iamVjdCogc2VjICA9IFB5TG9uZ19Gcm9tTG9uZyhldmVudC50aW1lLnR2X3NlYyk7Ci0tICAgIFB5T2JqZWN0KiB1c2VjID0gUHlMb25nX0Zyb21Mb25nKGV2ZW50LnRpbWUudHZfdXNlYyk7Ci0rICAgIFB5T2JqZWN0KiBzZWMgID0gUHlMb25nX0Zyb21Mb25nKGV2ZW50LmlucHV0X2V2ZW50X3NlYyk7Ci0rICAgIFB5T2JqZWN0KiB1c2VjID0gUHlMb25nX0Zyb21Mb25nKGV2ZW50LmlucHV0X2V2ZW50X3VzZWMpOwotICAgICBQeU9iamVjdCogdmFsICA9IFB5TG9uZ19Gcm9tTG9uZyhldmVudC52YWx1ZSk7Ci0gICAgIFB5T2JqZWN0KiBweV9pbnB1dF9ldmVudCA9IE5VTEw7Ci0gCi1AQCAtMTAyLDggKzEwNyw4IEBAIGRldmljZV9yZWFkX21hbnkoUHlPYmplY3QgKnNlbGYsIFB5T2JqZWN0ICphcmdzKQotIAotICAgICAvLyBDb25zdHJ1Y3QgYSBsaXN0IG9mIGV2ZW50IHR1cGxlcywgd2hpY2ggd2UnbGwgbWFrZSBzZW5zZSBvZiBpbiBQeXRob24KLSAgICAgZm9yICh1bnNpZ25lZCBpID0gMCA7IGkgPCBucmVhZC9ldmVudF9zaXplIDsgaSsrKSB7Ci0tICAgICAgICBzZWMgID0gUHlMb25nX0Zyb21Mb25nKGV2ZW50W2ldLnRpbWUudHZfc2VjKTsKLS0gICAgICAgIHVzZWMgPSBQeUxvbmdfRnJvbUxvbmcoZXZlbnRbaV0udGltZS50dl91c2VjKTsKLSsgICAgICAgIHNlYyAgPSBQeUxvbmdfRnJvbUxvbmcoZXZlbnRbaV0uaW5wdXRfZXZlbnRfc2VjKTsKLSsgICAgICAgIHVzZWMgPSBQeUxvbmdfRnJvbUxvbmcoZXZlbnRbaV0uaW5wdXRfZXZlbnRfdXNlYyk7Ci0gICAgICAgICB2YWwgID0gUHlMb25nX0Zyb21Mb25nKGV2ZW50W2ldLnZhbHVlKTsKLSAKLSAgICAgICAgIHB5X2lucHV0X2V2ZW50ID0gUHlfQnVpbGRWYWx1ZSgiT09oaE8iLCBzZWMsIHVzZWMsIGV2ZW50W2ldLnR5cGUsIGV2ZW50W2ldLmNvZGUsIHZhbCk7Ci1kaWZmIC0tZ2l0IGEvZXZkZXYvdWlucHV0LmMgYi9ldmRldi91aW5wdXQuYwotaW5kZXggMTkyNTY4ZC4uNTZmZTg2YyAxMDA2NDQKLS0tLSBhL2V2ZGV2L3VpbnB1dC5jCi0rKysgYi9ldmRldi91aW5wdXQuYwotQEAgLTE2LDYgKzE2LDEwIEBACi0gI2luY2x1ZGUgPGxpbnV4L3VpbnB1dC5oPgotICNlbmRpZgotIAotKyNpZm5kZWYgaW5wdXRfZXZlbnRfc2VjCi0rI2RlZmluZSBpbnB1dF9ldmVudF9zZWMgdGltZS50dl9zZWMKLSsjZGVmaW5lIGlucHV0X2V2ZW50X3VzZWMgdGltZS50dl91c2VjCi0rI2VuZGlmCi0gCi0gLy8gV29ya2Fyb3VuZCBmb3IgaW5zdGFsbGluZyBvbiBrZXJuZWxzIG5ld2VyIHRoYW4gNC40LgotICNpZm5kZWYgRkZfTUFYX0VGRkVDVFMKLUBAIC0yMzIsOCArMjM2LDExIEBAIHVpbnB1dF93cml0ZShQeU9iamVjdCAqc2VsZiwgUHlPYmplY3QgKmFyZ3MpCi0gICAgIGlmICghcmV0KSByZXR1cm4gTlVMTDsKLSAKLSAgICAgc3RydWN0IGlucHV0X2V2ZW50IGV2ZW50OwotKyAgICBzdHJ1Y3QgdGltZXZhbCB0dmFsOwotICAgICBtZW1zZXQoJmV2ZW50LCAwLCBzaXplb2YoZXZlbnQpKTsKLS0gICAgZ2V0dGltZW9mZGF5KCZldmVudC50aW1lLCAwKTsKLSsgICAgZ2V0dGltZW9mZGF5KCZ0dmFsLCAwKTsKLSsgICAgZXZlbnQuaW5wdXRfZXZlbnRfdXNlYyA9IHR2YWwudHZfdXNlYzsKLSsgICAgZXZlbnQuaW5wdXRfZXZlbnRfc2VjID0gdHZhbC50dl9zZWM7Ci0gICAgIGV2ZW50LnR5cGUgPSB0eXBlOwotICAgICBldmVudC5jb2RlID0gY29kZTsKLSAgICAgZXZlbnQudmFsdWUgPSB2YWx1ZTsKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ldmRldl8xLjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ldmRldl8xLjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM1NDEzNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZXZkZXZfMS4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1ldmRldi5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mZWVkZm9ybWF0dGVyXzAuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mZWVkZm9ybWF0dGVyXzAuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc1Zjk0NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmVlZGZvcm1hdHRlcl8wLjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tZmVlZGZvcm1hdHRlci5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mZWVkcGFyc2VyXzUuMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZlZWRwYXJzZXJfNS4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4ZWU3MDAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZlZWRwYXJzZXJfNS4yLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBBdG9tIGFuZCBSU1MgZmVlZCBwYXJzZXIiCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWMyMWE3NzEzZWY2ZGMxYjk5NjQ0MDYxYzM5N2U3YzJhIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDU1MmY3YTJhNTVlOGUzM2IyYTNmZTEwODI1MDViNDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmQwMzA2NTJjMmQwODUzMmMwMzRjMjdmY2Q3Yzg1ODY4ZTdmYTNjYjJiMTdmMjMwYTQ0YTZiYmM5MjUxOWJmOSIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tY29kZWNzIFwKLSAgICAke1BZVEhPTl9QTn0tZW1haWwgXAotICAgICR7UFlUSE9OX1BOfS1odG1sIFwKLSAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKLSAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKLSAgICAiCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1iYWJlbF8wLjEyLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stYmFiZWxfMC4xMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGU3OGM3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1iYWJlbF8wLjEyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1mbGFzay1iYWJlbC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1iY3J5cHRfMC43LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stYmNyeXB0XzAuNy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDkwYjM0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1iY3J5cHRfMC43LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJCY3J5cHQgaGFzaGluZyBmb3IgRmxhc2suIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wZWUyZWU1YmVlN2ZlOTY1OTc3NzBlOTJkYjU3MTlhOCIKLQotU1JDX1VSSVttZDVzdW1dID0gImQzNDVjMzZhYzY2MzdkM2NhOWZhOTQyZTIzOGQwMGNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ3MWM4NTg1YjJlZTFjNjIwMjQzOTJlYmRiYzQ0NzQzODU2NGUyYzhjMDJiNGU1N2I1NmE0Y2FmZDhkMTNjNWYiCi0KLVBZUElfUEFDS0FHRSA9ICJGbGFzay1CY3J5cHQiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tYmNyeXB0ICR7UFlUSE9OX1BOfS1mbGFzayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1ib290c3RyYXBfMy4zLjcuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1ib290c3RyYXBfMy4zLjcuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWVhYWRlOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stYm9vdHN0cmFwXzMuMy43LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1mbGFzay1ib290c3RyYXAuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbG9naW5fMC40LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbG9naW5fMC40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUxMGNlZGYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLWxvZ2luXzAuNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tZmxhc2stbG9naW4uaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbWFpbF8wLjkuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1tYWlsXzAuOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MzI0ZGE4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1tYWlsXzAuOS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tZmxhc2stbWFpbC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1taWdyYXRlXzIuNS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLW1pZ3JhdGVfMi41LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjZTUxNmYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLW1pZ3JhdGVfMi41LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1mbGFzay1taWdyYXRlLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLW5hdl8wLjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbmF2XzAuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzBiNWIzYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stbmF2XzAuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWZsYXNrLW5hdi5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1uYXZpZ2F0aW9uXzAuMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLW5hdmlnYXRpb25fMC4yLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIyZGM5NmUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLW5hdmlnYXRpb25fMC4yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGUgbmF2aWdhdGlvbiBvZiBGbGFzayBhcHBsaWNhdGlvbi4iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT1hZjJlYzY5NWRjMWYzZWI3YmQ3NGY3OWE2OGEwZDc4OSIKLQotU1JDX1VSSVttZDVzdW1dID0gImQxMDc1ZWUwMmEzZjY5ZGEzN2U1Y2FkYWQzMzk1ZjMxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM0MmQzMGVmYTk4OWNhODc3NDQ0YTQxMGU4YTFjZDI1NjM1NDZmOWVmZmUzZDlmZTM4OGVlZGY3YTZjNjkyODUiCi0KLVBZUElfUEFDS0FHRSA9ICJGbGFzay1OYXZpZ2F0aW9uIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1ibGlua2VyIFwKLSAgICAke1BZVEhPTl9QTn0tZmxhc2sgXAotICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1weW1vbmdvXzIuMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXB5bW9uZ29fMi4zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0MWQwMjMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXB5bW9uZ29fMi4zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1mbGFzay1weW1vbmdvLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXJlc3RmdWxfMC4zLjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stcmVzdGZ1bF8wLjMuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTk2OGQxZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stcmVzdGZ1bF8wLjMuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1mbGFzay1yZXN0ZnVsLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNjcmlwdF8yLjAuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1zY3JpcHRfMi4wLjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3ZDU1YWYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNjcmlwdF8yLjAuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWZsYXNrLXNjcmlwdC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1zaWpheF8wLjQuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1zaWpheF8wLjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzQ3MzhmYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stc2lqYXhfMC40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1mbGFzay1zaWpheC5pbmMKLQotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZiMmJmMmQ0Zjc1NDA4MTg1MTAyMTk1MDU1ZDc1NTQ5ZmVlOGQ5YzllOTU0ZGNhMjQyNzE4NjkyNWNkYzQyOWYiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNvY2tldGlvXzQuMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNvY2tldGlvXzQuMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjlhZDMzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1zb2NrZXRpb180LjIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1mbGFzay1zb2NrZXRpby5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay1zcWxhbGNoZW15XzIuNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNxbGFsY2hlbXlfMi40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkYzM1NWMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXNxbGFsY2hlbXlfMi40LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1mbGFzay1zcWxhbGNoZW15LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXVwbG9hZHNfMC4yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stdXBsb2Fkc18wLjIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM5YjA3Zi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stdXBsb2Fkc18wLjIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWZsYXNrLXVwbG9hZHMuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stdXNlcl8wLjYuMTkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2stdXNlcl8wLjYuMTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1NGQzNzcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXVzZXJfMC42LjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tZmxhc2stdXNlci5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay13dGZfMC4xNC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXd0Zl8wLjE0LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRiZjA5MWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZsYXNrLXd0Zl8wLjE0LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1mbGFzay13dGYuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2steHN0YXRpY18wLjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay14c3RhdGljXzAuMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZmYxNGE4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFzay14c3RhdGljXzAuMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tZmxhc2steHN0YXRpYy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFza18xLjEuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mbGFza18xLjEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTBhMjhhYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZmxhc2tfMS4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1mbGFzay5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mdW5jc2lnc18xLjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mdW5jc2lnc18xLjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGFkMTVlZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZnVuY3NpZ3NfMS4wLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBmdW5jdGlvbiBzaWduYXR1cmVzIGZyb20gUEVQMzYyIGZvciBQeXRob24gMi42LCAyLjcgYW5kIDMuMisiCi1ERVNDUlBUSU9OID0gIiBcCi1mdW5jc2lncyBpcyBhIGJhY2twb3J0IG9mIHRoZSBgUEVQIDM2MmBfIGZ1bmN0aW9uIHNpZ25hdHVyZSBmZWF0dXJlcyBmcm9tIFwKLVB5dGhvbiAzLjMncyBgaW5zcGVjdGBfIG1vZHVsZS4gVGhlIGJhY2twb3J0IGlzIGNvbXBhdGlibGUgd2l0aCBQeXRob24gMi42LCBcCi0yLjcgYXMgd2VsbCBhcyAzLjMgYW5kIHVwLiAzLjIgd2FzIHN1cHBvcnRlZCBieSB2ZXJzaW9uIDAuNCwgYnV0IHdpdGggXAotc2V0dXB0b29scyBhbmQgcGlwIG5vIGxvbmdlciBzdXBwb3J0aW5nIDMuMiwgd2UgY2Fubm90IG1ha2UgYW55IHN0YXRlbWVudCBcCi1hYm91dCAzLjIgY29tcGF0aWJpbGl0eS4gXAotIgotCi1IT01FUEFHRSA9ICJodHRwOi8vZnVuY3NpZ3MucmVhZHRoZWRvY3Mub3JnIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kNmJjOTFkYzhlNTc5Mzg5MjE4OWZlNzQ4MWEyZDM1NCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdlNTgzMjg1YjFmYjhhNzYzMDVkNmQ2OGY0Y2NjMTRlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE3YmIwZjJjZjNhM2ZkMWFiMjczMmNiNDllYmE0MjUyYzJhZjQyNDA0NDI0MTViNGFiY2UzYjg3MDIyYThmNTAiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZnVuY3Rvb2xzMzJfMy4yLjMtMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mdW5jdG9vbHMzMl8zLjIuMy0yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjRiYmE0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1mdW5jdG9vbHMzMl8zLjIuMy0yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotU1VNTUFSWSA9ICJCYWNrcG9ydCBvZiB0aGUgZnVuY3Rvb2xzIG1vZHVsZSBmcm9tIFB5dGhvbiAzLjIuMyBmb3IgdXNlIG9uIDIuNyBhbmQgUHlQeS4iCi1MSUNFTlNFID0gIlBTRiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTI3Y2YyMzQ1OTY5ZWQxOGU2NzMwZTkwZmIwMDYzYTEwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDlmMjRmZmQ5YWY5ZjZjZDBmNjNjYjlmNGUyM2Q0YjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjYyNTNkZmJlMDUzOGFkMmUzODdiZDhmZGZkOTI5M2M5MjVkNjM1NTNmNTgxM2M0ZTU4Nzc0NTQxNjUwMWU2ZCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWZ1dHVyZV8wLjE4LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZnV0dXJlXzAuMTguMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDk1ZTFiYS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZnV0dXJlXzAuMTguMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1mdXR1cmUuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2RhdGFfMi4wLjE4LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdkYXRhXzIuMC4xOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODk3NTgxZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2RhdGFfMi4wLjE4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjEgKzAsMCBAQAotU1VNTUFSWSA9ICJHb29nbGUgRGF0YSBBUElzIFB5dGhvbiBDbGllbnQgTGlicmFyeSIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS50eHQ7bWQ1PTRjOGYwZTY4NDZlNTJhN2ZlNDk0M2FjZjQ2MmQ4MDhkIgotSE9NRVBBR0UgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL2dkYXRhLXB5dGhvbi1jbGllbnQvIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTNiNmU2ZGQ4ZjllM2U5YThlMDA1ZTA1YTgzMjk0MDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTZlN2QyMmRlODE5YzIyYjEzY2ViMGZlMTg2OTcyOWI0Mjg3Zjg5ZWJiZDRiYjU1MzgwZDdiY2Y2MWExZmRiNiIKLQotUyA9ICIke1dPUktESVJ9L2dkYXRhLnB5LSR7UFZ9IgotCi1pbmhlcml0IHB5cGkgZGlzdHV0aWxzCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9IgotCi1SREVQRU5EU18ke1BOfSA9ICIgXAotICAgICR7UFlUSE9OX1BOfS1kaXN0dXRpbHMgXAotICAgICR7UFlUSE9OX1BOfS1qc29uIFwKLSAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKLSAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKLSAgICAke1BZVEhPTl9QTn0teG1sIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1nZXZlbnRfMS40LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2V2ZW50XzEuNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTNiZmQ3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1nZXZlbnRfMS40LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWdldmVudC5pbmMKLWluaGVyaXQgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXJlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdyZWVubGV0XzAuNC4xNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncmVlbmxldF8wLjQuMTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGMxNDk3NmUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdyZWVubGV0XzAuNC4xNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBkaXN0dXRpbHMKLXJlcXVpcmUgcHl0aG9uLWdyZWVubGV0LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby10b29sc18xLjE0LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvLXRvb2xzXzEuMTQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWIxOWJlYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvLXRvb2xzXzEuMTQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1ncnBjaW8tdG9vbHMuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTc2MmIyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiR29vZ2xlIGdSUEMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdycGMuaW8vIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi0KLURFUEVORFNfYXBwZW5kID0gIiR7UFlUSE9OX1BOfS1wcm90b2J1ZiIKLQotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vcHl0aG9uLWdycGNpbzoiCi0KLVNSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgZmlsZTovLzAwMDEtc2V0dXAucHktRG8tbm90LW1peC1DLWFuZC1DLWNvbXBpbGVyLW9wdGlvbnMucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcHBjLWJvcmluZ3NzbC1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Jpc2N2NjRfc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZXR0aWQucGF0Y2ggXAotIgotCi1SREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tcHJvdG9idWYgXAotICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgXAotICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXNpeCBcCi0iCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgotCi1pbmhlcml0IHB5cGkKLQotU1JDX1VSSVttZDVzdW1dID0gIjE4ODU2NWYxNTBmMzRkMTkyN2I4N2UwMTRmMGY0YjczIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJkZGJjYTE2YzJlN2IzZjJmZmM2ZTM0YzdjZmE2ODg2ZmIwMWRlOWYxNTZhZDNmNzdiNzJhZDY1MmQ2MzIwOTciCi0KLUNMRUFOQlJPS0VOID0gIjEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8vMDAwMS1zZXR1cC5weS1Eby1ub3QtbWl4LUMtYW5kLUMtY29tcGlsZXItb3B0aW9ucy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8vMDAwMS1zZXR1cC5weS1Eby1ub3QtbWl4LUMtYW5kLUMtY29tcGlsZXItb3B0aW9ucy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE3ZjA0OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvLzAwMDEtc2V0dXAucHktRG8tbm90LW1peC1DLWFuZC1DLWNvbXBpbGVyLW9wdGlvbnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIGIwMmJlNzRhMmVmZjhhYmM2MTJlZjg0ZjMwZTBmYmNlNmE3ZjY1ZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCA0IEF1ZyAyMDE3IDA5OjA0OjA3IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNldHVwLnB5OiBEbyBub3QgbWl4IEMgYW5kIEMrKyBjb21waWxlciBvcHRpb25zCi0KLUVYVFJBX0VOVl9DT01QSUxFX0FSR1MgaXMgdXNlZCBib3RoIHdpdGggQ0MgYW5kIENYWAotc28gdXNpbmcgLXN0ZD1jKysxMSBvciAtc3RkPWdudTk5IHRvZ2V0aGVyIHdpbGwgY2F1c2UKLWJ1aWxkIHRpbWUgZXJyb3JzIGVzcGNpYWxseSB3aXRoIGNsYW5nCi0KLWVycm9yOiBpbnZhbGlkIGFyZ3VtZW50ICctc3RkPWdudTk5JyBub3QgYWxsb3dlZCB3aXRoICdDKysnCi0KLWdjYzcgKCBkZWZhdWx0cyBhcmUgLXN0ZD1nbnUxMSBhbmQgLXN0ZD1nbnUrKzE0ICkKLSBhcyB3ZWxsIGNsYW5nIGRlZmF1bHQgdG8gdGhlc2Ugc3RhbmRhcmRzIG1vZGUgb3IgbmV3ZXIKLWFueXdheQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc2V0dXAucHkgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTE0NSw3ICsxNDUsNyBAQCBFTkFCTEVfRE9DVU1FTlRBVElPTl9CVUlMRCA9IG9zLmVudmlyb24uCi0gRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyA9IG9zLmVudmlyb24uZ2V0KCdHUlBDX1BZVEhPTl9DRkxBR1MnLCBOb25lKQotIEVYVFJBX0VOVl9MSU5LX0FSR1MgPSBvcy5lbnZpcm9uLmdldCgnR1JQQ19QWVRIT05fTERGTEFHUycsIE5vbmUpCi0gaWYgRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyBpcyBOb25lOgotLSAgRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyA9ICcgLXN0ZD1jKysxMScKLSsgIEVYVFJBX0VOVl9DT01QSUxFX0FSR1MgPSAiIgotICAgaWYgJ3dpbjMyJyBpbiBzeXMucGxhdGZvcm0gYW5kIHN5cy52ZXJzaW9uX2luZm8gPCAoMywgNSk6Ci0gICAgIEVYVFJBX0VOVl9DT01QSUxFX0FSR1MgKz0gJyAtRF9oeXBvdD1oeXBvdCcKLSAgICAgIyBXZSB1c2UgZGVmaW5lIGZsYWdzIGhlcmUgYW5kIGRvbid0IGRpcmVjdGx5IGFkZCB0byBERUZJTkVfTUFDUk9TIGJlbG93IHRvCi1AQCAtMTU3LDcgKzE1Nyw3IEBAIGlmIEVYVFJBX0VOVl9DT01QSUxFX0FSR1MgaXMgTm9uZToKLSAgICAgZWxzZToKLSAgICAgICBFWFRSQV9FTlZfQ09NUElMRV9BUkdTICs9ICcgLURfZnRpbWU9X2Z0aW1lNjQgLURfdGltZWI9X190aW1lYjY0JwotICAgZWxpZiAibGludXgiIGluIHN5cy5wbGF0Zm9ybToKLS0gICAgRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyArPSAnIC1zdGQ9Z251OTkgLWZ2aXNpYmlsaXR5PWhpZGRlbiAtZm5vLXdyYXB2IC1mbm8tZXhjZXB0aW9ucycKLSsgICAgRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyArPSAnIC1mdmlzaWJpbGl0eT1oaWRkZW4gLWZuby13cmFwdiAtZm5vLWV4Y2VwdGlvbnMnCi0gICBlbGlmICJkYXJ3aW4iIGluIHN5cy5wbGF0Zm9ybToKLSAgICAgRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyArPSAnIC1mdmlzaWJpbGl0eT1oaWRkZW4gLWZuby13cmFwdiAtZm5vLWV4Y2VwdGlvbnMnCi0gRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyArPSAnIC1EUEJfRklFTERfMzJCSVQnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvL2dldHRpZC5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8vZ2V0dGlkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYjE1Y2Y3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1ncnBjaW8vZ2V0dGlkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotdXNlIGdsaWJjIHByb3ZpZGVkIGdldHRpZCBBUEkgZm9yIGdsaWJjIDIuMzArCi0KLWdsaWJjIDIuMzAgaW50cm9kdWNlZCB0aGlzIGZ1bmN0aW9uIHNlZSBbMV0KLXNvIGl0J3MgYmVzdCB0byBkZXRlY3QgaXQKLWFuZCBwcm92aWRlIGZhbGxiYWNrIG9ubHkgaWYgaXQncyBub3QgcHJlc2VudAotCi1bMV0gaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NjM5OQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0gYS9zcmMvY29yZS9saWIvZ3ByL2xvZ19saW51eC5jYwotKysrIGIvc3JjL2NvcmUvbGliL2dwci9sb2dfbGludXguY2MKLUBAIC00MCw3ICs0MCwxMyBAQAotICNpbmNsdWRlIDx0aW1lLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotIAotKyNpZiAgZGVmaW5lZChfX0dMSUJDX18pCi0rI2lmICFfX0dMSUJDX1BSRVJFUSgyLDI5KQotIHN0YXRpYyBsb25nIGdldHRpZCh2b2lkKSB7IHJldHVybiBzeXNjYWxsKF9fTlJfZ2V0dGlkKTsgfQotKyNlbmRpZgotKyNlbHNlCi0rc3RhdGljIGxvbmcgZ2V0dGlkKHZvaWQpIHsgcmV0dXJuIHN5c2NhbGwoX19OUl9nZXR0aWQpOyB9Ci0rI2VuZGlmCi0gCi0gdm9pZCBncHJfbG9nKGNvbnN0IGNoYXIqIGZpbGUsIGludCBsaW5lLCBncHJfbG9nX3NldmVyaXR5IHNldmVyaXR5LAotICAgICAgICAgICAgICBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikgewpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby9wcGMtYm9yaW5nc3NsLXN1cHBvcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvL3BwYy1ib3Jpbmdzc2wtc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQzNWFiYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvL3BwYy1ib3Jpbmdzc2wtc3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLUxldCBib3JpbmdTU0wgY29tcGlsZSBvbiBwcGMzMiBiaXQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0gYS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvaW5jbHVkZS9vcGVuc3NsL2Jhc2UuaAotKysrIGIvdGhpcmRfcGFydHkvYm9yaW5nc3NsL2luY2x1ZGUvb3BlbnNzbC9iYXNlLmgKLUBAIC05NSw2ICs5NSw5IEBAIGV4dGVybiAiQyIgewotICNlbGlmIChkZWZpbmVkKF9fUFBDNjRfXykgfHwgZGVmaW5lZChfX3Bvd2VycGM2NF9fKSkgJiYgZGVmaW5lZChfTElUVExFX0VORElBTikKLSAjZGVmaW5lIE9QRU5TU0xfNjRfQklUCi0gI2RlZmluZSBPUEVOU1NMX1BQQzY0TEUKLSsjZWxpZiAoZGVmaW5lZChfX1BQQ19fKSB8fCBkZWZpbmVkKF9fcG93ZXJwY19fKSkKLSsjZGVmaW5lIE9QRU5TU0xfMzJfQklUCi0rI2RlZmluZSBPUEVOU1NMX1BQQwotICNlbGlmIGRlZmluZWQoX19taXBzX18pICYmICFkZWZpbmVkKF9fTFA2NF9fKQotICNkZWZpbmUgT1BFTlNTTF8zMl9CSVQKLSAjZGVmaW5lIE9QRU5TU0xfTUlQUwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpby9yaXNjdjY0X3N1cHBvcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvL3Jpc2N2NjRfc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVmN2Q5ZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvL3Jpc2N2NjRfc3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLUFkZCBSSVNDLVYgNjRiaXQgc3VwcG9ydAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0gYS90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvaW5jbHVkZS9vcGVuc3NsL2Jhc2UuaAotKysrIGIvdGhpcmRfcGFydHkvYm9yaW5nc3NsL2luY2x1ZGUvb3BlbnNzbC9iYXNlLmgKLUBAIC0xMDQsNiArMTA0LDkgQEAgZXh0ZXJuICJDIiB7Ci0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykgJiYgZGVmaW5lZChfX0xQNjRfXykKLSAjZGVmaW5lIE9QRU5TU0xfNjRfQklUCi0gI2RlZmluZSBPUEVOU1NMX01JUFM2NAotKyNlbGlmIGRlZmluZWQoX19yaXNjdikgJiYgZGVmaW5lZChfX3Jpc2N2X3hsZW4pCi0rI2RlZmluZSBPUEVOU1NMXzY0X0JJVAotKyNkZWZpbmUgT1BFTlNTTF9SSVNDVjY0Ci0gI2VsaWYgZGVmaW5lZChfX3BuYWNsX18pCi0gI2RlZmluZSBPUEVOU1NMXzMyX0JJVAotICNkZWZpbmUgT1BFTlNTTF9QTkFDTApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdycGNpb18xLjE5LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvXzEuMTkuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODIwYmVhNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ3JwY2lvXzEuMTkuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1ncnBjaW8uaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgcHl0aG9uLWVudW0zNCBcCi0gICAgICAgICAgICAgICAgICAgIHB5dGhvbi1mdXR1cmVzIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1odG1sNWxpYl8xLjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1odG1sNWxpYl8xLjAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjU5NDFhMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHRtbDVsaWJfMS4wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24taHRtbDVsaWIuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHVtYW5mcmllbmRseV80LjE4LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWh1bWFuZnJpZW5kbHlfNC4xOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGUwM2E2NS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHVtYW5mcmllbmRseV80LjE4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWh1bWFuZnJpZW5kbHkuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHVtYW5pemVfMC41LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHVtYW5pemVfMC41LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU3NjkzMDkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWh1bWFuaXplXzAuNS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24taHVtYW5pemUuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taHlwZXJsaW5rXzE5LjAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1oeXBlcmxpbmtfMTkuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OWE5YTVjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1oeXBlcmxpbmtfMTkuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWh5cGVybGluay5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pZG5hXzIuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pZG5hXzIuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmRjZjcyYS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taWRuYV8yLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1pZG5hLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWltYWdpbmdfMS4xLjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW1hZ2luZ18xLjEuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjBkZDdkMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW1hZ2luZ18xLjEuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIEltYWdpbmcgTGlicmFyeSAoUElMKSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTkyO2VuZGxpbmU9MTIwO21kNT1jNDM3MWFmNDU3OWYxZTQ4OWNmODgxYzE0NDNkZDRlYyIKLURFUEVORFMgPSAiZnJlZXR5cGUganBlZyB0aWZmIgotU1JDTkFNRSA9ICJJbWFnaW5nIgotUFIgPSAicjUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2VmZmJvdC5vcmcvZG93bmxvYWRzL0ltYWdpbmctJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcHl0aG9uLWltYWdpbmctc2V0dXAucHktZm9yY2UtcGF0aHMtZm9yLXpsaWItZnJlZXR5cC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hbGxvdy50by5kaXNhYmxlLnNvbWUuZmVhdHVyZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4LWZyZWV0eXBlLWluY2x1ZGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1ob3N0LWxpYmRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9weXRob24taW1hZ2luZy1DVkUtMjAxNi0yNTMzLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImZjMTRhNTRlMWNlMDJhMDIyNWJlODg1NGJmYmE0NzhlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg5NWJjN2MyNDk4YzhlMWY5Yjk5OTM4ZjFhNDBkYzg2YjNmMTQ5NzQxZjEwNWNmN2M3YmQyZTA3MjU0MDUyMTEiCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotIyBUaGVyZSBpc24ndCBlbmFibGUvZGlzYWJsZSBvcHRpb24sIGFuZCBsY21zIGlzIGluIG1ldGEtb2UsIGF0IGxlYXN0IG1ha2UgaXQgZXhwbGljaXQgd2hlbiBlbmFibGVkCi0jIHNldHVwLnB5IGFscmVhZHkgaGFzIEZJWE1FOiBhZGQgbWVjaGFuaXNtIHRvIGV4cGxpY2l0bHkgKmRpc2FibGUqIHRoZSB1c2Ugb2YgYSBsaWJyYXJ5Ci1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tsY21zXSA9ICIsLGxjbXMiCi0KLWluaGVyaXQgZGlzdHV0aWxzCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgZXhwb3J0IFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9Ci0gICAgZXhwb3J0IFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9Ci0gICAgZXhwb3J0IExDTVNfRU5BQkxFRD0ke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdsY21zJywgJ1RydWUnLCAnRmFsc2UnLCBkKX0KLSAgICBkaXN0dXRpbHNfZG9fY29tcGlsZQotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGV4cG9ydCBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfQotICAgIGV4cG9ydCBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfQotICAgIGV4cG9ydCBMQ01TX0VOQUJMRUQ9JHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbGNtcycsICdUcnVlJywgJ0ZhbHNlJywgZCl9Ci0gICAgZGlzdHV0aWxzX2RvX2luc3RhbGwKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2RvYy8ke0JQTn0vaHRtbC8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9SRUFETUUgJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS8KLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtTfS9Eb2NzLyogJHtEfSR7ZGF0YWRpcn0vZG9jLyR7QlBOfS9odG1sLwotCi0gICAgIyBnZXQgcmlkIG9mICMhL3Vzci9sb2NhbC9iaW4vcHl0aG9uCi0gICAgc2VkIC1pIC1lICdzOi91c3IvbG9jYWwvYmluLzoke2JpbmRpcn0vZW52IDpnJyAke0R9JHtiaW5kaXJ9LyoKLX0KLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1sYW5nIHB5dGhvbi1zdHJpbmdvbGQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW1wb3J0bGliLW1ldGFkYXRhLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbXBvcnRsaWItbWV0YWRhdGEuaW5jCmluZGV4IGE1MzUzN2EuLmI2MTY1ZGMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbXBvcnRsaWItbWV0YWRhdGEuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbXBvcnRsaWItbWV0YWRhdGEuaW5jCkBAIC0zLDEwICszLDEwIEBACiBMSUNFTlNFID0gIkFwYWNoZS0yLjAiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lODhhZTEyMmYzOTI1ZDhiZGU4MzE5MDYwZjJkZGI4ZSIKIAotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnB5dGhvbmhvc3RlZC5vcmcvcGFja2FnZXMvNWQvNDQvNjM2YmNkMTU2OTc3OTE5NDNlMmRlZGRhMGRiZTA5OGQ4NTMwYTM4ZDExM2IyMDI4MTcxMzNlMGIwNmMwL2ltcG9ydGxpYl9tZXRhZGF0YS0wLjIzLnRhci5neiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL2Q3L2NkLzNiMWRmZmE0NmIxOWRhYzI2OWQ1ODZiOWQ0NTA5MDU4OGE4YmQ3YTU3NDE2MDJhMzY5ZDQ1ZTFiZGY2NS9pbXBvcnRsaWJfbWV0YWRhdGEtMS41LjIudGFyLmd6IgogUyA9ICIke1dPUktESVJ9L2ltcG9ydGxpYl9tZXRhZGF0YS0ke1BWfSIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4MGQ2NzdkNzQ0OTk1MzM2YzljMjJkMjFhODVkZGViOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhYTE4ZDczNzhiMDBiNDA4NDc3OTBlN2MyN2UxMTY3M2Q3ZmVkMjE5MzU0MTA5ZDBlN2I5ZTViMjVkYzNhZDI2IgorU1JDX1VSSVttZDVzdW1dID0gIjM1YTg1YTgxYzdkODY2MDVmNGY0OTM5N2Y0ZTdlMzljIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRmYzgzNjg4NTUzYTkxYTc4NmM2YzkxZWViNWYzYjFkMzFmMjRkNzE4NzdiYmQ5NGVjYmY1NDg0ZTU3NjkwYTIiCiAKIERFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzLXNjbS1uYXRpdmUiCiBSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXppcHAgJHtQWVRIT05fUE59LXBhdGhsaWIyIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWltcG9ydGxpYi1tZXRhZGF0YV8wLjIzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWltcG9ydGxpYi1tZXRhZGF0YV8wLjIzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwOWM1NzAwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbXBvcnRsaWItbWV0YWRhdGFfMC4yMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWltcG9ydGxpYi1tZXRhZGF0YS5pbmMKLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tY29uZmlncGFyc2VyIFwKLSAgICAgICAgICAgICAgICAgICBweXRob24tY29udGV4dGxpYjIgXAotICAgICAgICAgICAgICAgICAgIHB5dGhvbi1wYXRobGliMiBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLWNvbXByZXNzaW9uIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbmNyZW1lbnRhbF8xNy41LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW5jcmVtZW50YWxfMTcuNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMzlhYzBjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbmNyZW1lbnRhbF8xNy41LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24taW5jcmVtZW50YWwuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW5mbGVjdGlvbl8wLjMuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbmZsZWN0aW9uXzAuMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YTlkNDk3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pbmZsZWN0aW9uXzAuMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWluZmxlY3Rpb24uaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tY29kZWNzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWludGVydmFsc18xLjEwLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW50ZXJ2YWxzXzEuMTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2MyYTMzYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taW50ZXJ2YWxzXzEuMTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1pbnRlcnZhbHMuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXBhZGRyZXNzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pcGFkZHJlc3MuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjljZjIyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pcGFkZHJlc3MuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gMy4zKydzIGlwYWRkcmVzcyBmb3IgUHl0aG9uIDIuNiwgMi43LCAzLjIuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3BoaWhhZy9pcGFkZHJlc3MiCi1MSUNFTlNFID0gIlB5dGhvbi0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03ZjUzODU4NGNjMzQwN2JmNzYwNDJkZWY3MTY4NTQ4YSIKLQotU1JDX1VSSVttZDVzdW1dID0gImFhZWU2N2E4MDI2NzgyYWYxODMxMTQ4YmViMGQ5MDYwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI3ZjhlMDM2OTU4MGJiNGEyNGQ1YmExZDdjYzI5NjYwYTRhNjk4Nzc2M2ZhZjFkOGE4MDQ2ODMwZTAyMGU3ZTIiCi0KLWluaGVyaXQgcHlwaQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXBhZGRyZXNzXzEuMC4yMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pcGFkZHJlc3NfMS4wLjIzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDRlNmNiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pcGFkZHJlc3NfMS4wLjIzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWlwYWRkcmVzcy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pcHlfMS4wMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pcHlfMS4wMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTg3YTUxNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXB5XzEuMDAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24taXB5LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzbzg2MDFfMC4xLjEyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzbzg2MDFfMC4xLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNTQzY2Y5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pc284NjAxXzAuMS4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWlzbzg2MDEuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvZGF0ZV8wLjYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pc29kYXRlXzAuNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDhlMTIzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pc29kYXRlXzAuNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWlzb2RhdGUuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvcnRfNC4zLjIxLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWlzb3J0XzQuMy4yMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE0NmQ4OS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24taXNvcnRfNC4zLjIxLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWlzb3J0LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWl0c2Rhbmdlcm91c18xLjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1pdHNkYW5nZXJvdXNfMS4xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjOTljYjQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWl0c2Rhbmdlcm91c18xLjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWl0c2Rhbmdlcm91cy5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LXpsaWIgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWphdmFvYmotcHkzXzAuNC4wLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tamF2YW9iai1weTNfMC40LjAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWQzNDc0MC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tamF2YW9iai1weTNfMC40LjAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBweXRob24tamF2YW9iai1weTMuaW5jCi1pbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qaW5qYTIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWppbmphMi5pbmMKaW5kZXggNmE2YWFkOS4uOTI3MjMwNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWppbmphMi5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWppbmphMi5pbmMKQEAgLTQsOCArNCw4IEBACiAKIFBZUElfUEFDS0FHRSA9ICJKaW5qYTIiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI3ODgzNTU5YmM1Y2MzZTI3ODFkOTRiNGJlNjFjZmRjZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZmU5NWYxOTI4NmNmZWZhYTkxNzY1NjU4M2QwMjBiZTE0ZTc4NTljNmIwMjUyNTg4MzkxZTQ3ZGIzNDUyN2RlIgorU1JDX1VSSVttZDVzdW1dID0gIjVkODhjN2U3N2FhNjNmYzg1MmEwNGY2NWRiZmU1NTk0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkzMTg3ZmZiYzc4MDgwNzk2NzNlZjUyNzcxYmFhOTUwNDI2ZmQ2NjRkM2FhZDFkMGZhM2U5NTY0NDM2MGUyNTAiCiAKIFJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0taW8gJHtQWVRIT05fUE59LXBpY2tsZSAke1BZVEhPTl9QTn0tY3J5cHQgXAogICAgICR7UFlUSE9OX1BOfS1tYXRoICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXApAQCAtMTUsMyArMTUsMTkgQEAKIENMRUFOQlJPS0VOID0gIjEiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworaW5oZXJpdCBwdGVzdAorCitTUkNfVVJJICs9ICIgXAorCWZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKwkke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKwkke1BZVEhPTl9QTn0tdW5peGFkbWluIFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisJY3AgLXJmICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qaW5qYTJfMi4xMC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWppbmphMl8yLjEwLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUyMzNjZjQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWppbmphMl8yLjEwLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1qaW5qYTIuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1sYW5nIFwKLSAgICAke1BZVEhPTl9QTn0tcmUgXAotICAgICR7UFlUSE9OX1BOfS10ZXh0dXRpbHMgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wYXRjaC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBhdGNoLmluYwppbmRleCBiMjMxNDJkLi5lMjNmOTZiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBhdGNoLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBhdGNoLmluYwpAQCAtNSw4ICs1LDggQEAKIAogaW5oZXJpdCBweXBpCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJlODY1MDNmMDVmYTE5MmZhODcwZDcwMDRiOGNlOTI5YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjYmI3MmY4YmYzNTI2MDYyOGFlYTZiNTA4YTEwNzI0NWY3NTdkMWVjODM5YTE5YzM0MzQ5OTg1ZTJjMDU2NDVhIgorU1JDX1VSSVttZDVzdW1dID0gImZjYzU0Njg5MjQxNGJlZjJmN2Y4OWYwZTJhNjE4YTllIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRkYzBmNzYyOGI4YmZkZDYyZTNjYmZiYzI0Y2E2NjcxYjBiNjI2NWI1MGQxODZjMmNmMzY1OWRjMGY3OGZkNmEiCiAKIFJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tanNvbiAke1BZVEhPTl9QTn0tanNvbnBvaW50ZXIgJHtQWVRIT05fUE59LW5ldGNsaWVudCAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBhdGNoXzEuMjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBhdGNoXzEuMjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwY2QzMTguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wYXRjaF8xLjI0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWpzb25wYXRjaC5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1yZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucG9pbnRlci5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBvaW50ZXIuaW5jCmluZGV4IGI2ZTQ4MzYuLjNlNDFiNzAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucG9pbnRlci5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWpzb25wb2ludGVyLmluYwpAQCAtMyw3ICszLDcgQEAKIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTMyYjE1Yzg0M2I3YTMyOTEzMGY0ZTI2NmEyODFlYmIzIgogCi1pbmhlcml0IHB5cGkKK2luaGVyaXQgcHlwaSBwdGVzdAogCiBTUkNfVVJJW21kNXN1bV0gPSAiNzQxYjk4ZDBlNjkzYjA4YjVlNDRlMGE5ZGE1YTdiYjciCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzE5MmJhODY2NDhlMDVmZGFlNGYwOGExN2VjMjUxODBhOWFlZjUwMDhkOTczNDA3YjU4MTc5OGE4Mzk3NTM2MiIKQEAgLTEzLDMgKzEzLDE1IEBACiAiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgLWYgJHtTfS90ZXN0cy5weSAke0R9JHtQVEVTVF9QQVRIfS8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucG9pbnRlcl8yLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnBvaW50ZXJfMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTNhNzc2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29ucG9pbnRlcl8yLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tanNvbnBvaW50ZXIuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tcmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tanNvbnNjaGVtYV8zLjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29uc2NoZW1hXzMuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNjc3YzY0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1qc29uc2NoZW1hXzMuMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWpzb25zY2hlbWEuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1hcmdwYXJzZSBcCi0gICAgJHtQWVRIT05fUE59LWNvbnRleHRsaWIgXAotICAgICR7UFlUSE9OX1BOfS1mdW5jdG9vbHMzMiBcCi0gICAgJHtQWVRIT05fUE59LWxhbmcgXAotICAgICR7UFlUSE9OX1BOfS1yZSBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotICAgICR7UFlUSE9OX1BOfS10ZXh0dXRpbHMgXCAKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1rY29uZmlnbGliLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1rY29uZmlnbGliLmluYwppbmRleCBjODJiMjZiLi4zZGM0OTYxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24ta2NvbmZpZ2xpYi5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWtjb25maWdsaWIuaW5jCkBAIC0yLDcgKzIsNyBAQAogTElDRU5TRSA9ICJJU0MiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NzEyMTc3YTcyYTM5Mzc5MDk1NDNlZGEzYWQxYmZiN2MiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI3ODc5YWExM2QzMDYyNjNlOTUxNDY0MzlkMzk1OWYyMyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZGJiOTQ2ZDQxYTMzY2VjMmI2MzQzMjM5M2E0OTIwNDc5YzhjOWZhOGQ1YmJjYTQ2OGM0ZThhNjczYmU2ZTM2IgorU1JDX1VSSVttZDVzdW1dID0gIjRhZDY4NjE4ODI0ZDRiYWQxZDFkZTFkN2ViODM4YmJhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJlZDJjYzIyMTZmNTM4ZWNhNDI1NWE4M2E0NTg4ZDg4MjM1NjNjZGQ1MDExNGY4NmNmMWEyNjc0ZTYwMmM5M2MiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sYXp5LW9iamVjdC1wcm94eV8xLjQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sYXp5LW9iamVjdC1wcm94eV8xLjQuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGY0ZDYwYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGF6eS1vYmplY3QtcHJveHlfMS40LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tbGF6eS1vYmplY3QtcHJveHkuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGljZW5zZS1leHByZXNzaW9uLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1saWNlbnNlLWV4cHJlc3Npb24uaW5jCmluZGV4IDRjMzVlOGQuLmFkZDI1ODEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1saWNlbnNlLWV4cHJlc3Npb24uaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1saWNlbnNlLWV4cHJlc3Npb24uaW5jCkBAIC03LDEwICs3LDIzIEBACiBTUkNfVVJJW21kNXN1bV0gPSAiODE0NzdmNzc5MDk5ZjU1MDcxYzZhN2I4OGEyOWJiMDEiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGFhYTQ1NWM1Yjk3YzRmMjE3NDA5MDE3OGIxOTc5MmIyYTFjNjIwZTgwNTkxYWFmZDRlMGE5OWI3MTNmOWU4ZCIKIAotaW5oZXJpdCBweXBpCitpbmhlcml0IHB5cGkgcHRlc3QKIAogUkRFUEVORFNfJHtQTn0gKz0gIlwKICAgICAke1BZVEhPTl9QTn0tYm9vbGVhbnB5IFwKICAgICAiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworCWNwIC1yZiAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbGluZWNhY2hlMl8xLjAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1saW5lY2FjaGUyXzEuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODZkYTJkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1saW5lY2FjaGUyXzEuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGJhY2twb3J0IG9mIGxpbmVjYWNoZSB0byBvbGRlciBzdXBwb3J0ZWQgUHl0aG9ucyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS90ZXN0aW5nLWNhYmFsL2xpbmVjYWNoZTIiCi1MSUNFTlNFID0gIlB5dGhvbi0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9MTk7ZW5kbGluZT0xOTttZDU9MzY4ZGRjODU4ODQzMWMxODBhZTdjMzNmNGZiNTc1MTkiCi0KLURFUEVORFMgPSAiJHtQWVRIT05fUE59LXBici1uYXRpdmUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3YjI1ZDAyODllYzM2YmZmMWY5ZTYzYzQzMjljZTY1YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YjI2ZmY0ZTcxMTBkYjc2ZWViNmY1YTdiNjRhODI2MjM4MzlkNTk1YzIwMzhlZWRhNjYyZjJhMmRiNzhlOTdjIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1DTEVBTl9CUk9LRU4gPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sb2NrZmlsZV8wLjEyLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbG9ja2ZpbGVfMC4xMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGVhMDE4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1sb2NrZmlsZV8wLjEyLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJQbGF0Zm9ybS1pbmRlcGVuZGVudCBmaWxlIGxvY2tpbmcgbW9kdWxlIgotSE9NRVBBR0UgPSAiaHR0cDovL2xhdW5jaHBhZC5uZXQvcHlsb2NrZmlsZSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24tdGhyZWFkaW5nIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIzNDBkZmZiYmZlYTUzNGI1OGYxMzQ5OTg0ZWVlZjcyIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTZhMWE4Mjk1N2EyM2FmZGY0NGNmZGQwMzliNjVmZjkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmFlZDAyZGUwM2NiYTI0ZWZhYmNkNjAwYjMwNTQwMTQwNjM0ZmMwNmNmYTYwMzgyMmQ1MDhkNTM2MWU5Zjc5OSIKLQotIyBTYXRpc2Z5IHNldHVwLnB5ICdzZXR1cF9yZXF1aXJlcycKLURFUEVORFMgKz0gIiBcCi0gICAgICAgIHB5dGhvbi1wYnItbmF0aXZlIFwKLSAgICAgICAgIgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbHJwYXJzaW5nXzEuMC4xNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1scnBhcnNpbmdfMS4wLjE2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyY2ZlMzAxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1scnBhcnNpbmdfMS4wLjE2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLWxycGFyc2luZy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1seG1sLmluYwppbmRleCBkZjk1NzNiLi4wNWI1ZWFlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbHhtbC5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWwuaW5jCkBAIC0xOCw4ICsxOCw4IEBACiAKIERFUEVORFMgKz0gImxpYnhtbDIgbGlieHNsdCIKIAotU1JDX1VSSVttZDVzdW1dID0gIjIzNWMxYTIyZDk3YTE3NDE0NGU3NmI2NmNlNjJhZTQ2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImVmZjY5ZGRiZjNhZDg2Mzc1YzM0NDMzOTM3MTE2ODY0MDk1MWMzMDI0NTBjNWQzZTk5MzZlOThkNjQ1OWRiMDYiCitTUkNfVVJJW21kNXN1bV0gPSAiZjA4OGU0NTJlZDQ1YjAzMGI2Zjg0MjY5ZjFlODRkMTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODYyMGNlODBmNTBkMDIzZDQxNDE4M2JmOTBjYzI1NzZjMjgzN2I4OGUwMGJlYTNmMzNhZDI2MzAxMzNiYmI2MCIKIAogRElTVFVUSUxTX0JVSUxEX0FSR1MgKz0gIiBcCiAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgteHNsdC1jb25maWc9J3BrZy1jb25maWcgbGlieHNsdCcgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWx4bWxfNC40LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbHhtbF80LjQuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODFjY2IxMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbHhtbF80LjQuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1seG1sLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tMmNyeXB0by5pbmMKaW5kZXggNWY1NDQ0Zi4uNzZkZDU4YyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG8uaW5jCkBAIC0xNyw3ICsxNyw3IEBACiBpbmhlcml0IHB5cGkgc2l0ZWluZm8KIAogREVQRU5EUyArPSAib3BlbnNzbCBzd2lnLW5hdGl2ZSIKLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24tdHlwaW5nIgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS10eXBpbmciCiAKIERJU1RVVElMU19CVUlMRF9BUkdTICs9ICJidWlsZF9leHQgLS1vcGVuc3NsPSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSAtSSR7U1RBR0lOR19JTkNESVJ9IgogRElTVFVUSUxTX0lOU1RBTExfQVJHUyArPSAiYnVpbGRfZXh0IC0tb3BlbnNzbD0ke1NUQUdJTkdfRVhFQ1BSRUZJWERJUn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG9fMC4zMC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW0yY3J5cHRvXzAuMzAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzYxMmZjZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbTJjcnlwdG9fMC4zMC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLW0yY3J5cHRvLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1ha29fMS4xLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFrb18xLjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzM3MmVlYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFrb18xLjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1tYWtvLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hcmt1cHNhZmUuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hcmt1cHNhZmUuaW5jCmluZGV4IDMzZDYzYjMuLjQ4MDg3NjIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXJrdXBzYWZlLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWFya3Vwc2FmZS5pbmMKQEAgLTcsOCArNywyMSBAQAogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI5ODcyZTkyODM5NzY1ZTU0NjgyOGJiNzc1NGE2OGM0MThkOTI3Y2QwNjRmZDQ3MDhmYWI5ZmU5YzhiYjExNmIiCiAKIFBZUElfUEFDS0FHRSA9ICJNYXJrdXBTYWZlIgotaW5oZXJpdCBweXBpCitpbmhlcml0IHB5cGkgcHRlc3QKIAogUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1zdHJpbmdvbGQiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworCWNwIC1mICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tYXJrdXBzYWZlXzEuMS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hcmt1cHNhZmVfMS4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1YmJlOGEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hcmt1cHNhZmVfMS4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tbWFya3Vwc2FmZS5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1yZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWF0cGxvdGxpYi9maXhfc2V0dXBleHQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWF0cGxvdGxpYi9maXhfc2V0dXBleHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIxYjkwOTQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1hdHBsb3RsaWIvZml4X3NldHVwZXh0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEwICswLDAgQEAKLVRoaXMgZml4ZXMgdGhlIG51bXB5IGltcG9ydCBwcm9ibGVtIGluIHNldHVwZXh0LnB5IHVzaW5nIGEgaGFyZC1jb2RlZCBwYXRoLgotCi1JbmRleDogbWF0cGxvdGxpYi0yLjAuMi9zZXR1cGV4dC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG1hdHBsb3RsaWItMi4wLjIub3JpZy9zZXR1cGV4dC5weQotKysrIG1hdHBsb3RsaWItMi4wLjIvc2V0dXBleHQucHkKLUBAIC0xNDgsNiArMTQ4LDcgQEAgZGVmIGhhc19pbmNsdWRlX2ZpbGUoaW5jbHVkZV9kaXJzLCBmaWxlbgotICAgICBSZXR1cm5zIGBUcnVlYCBpZiBgZmlsZW5hbWVgIGNhbiBiZSBmb3VuZCBpbiBvbmUgb2YgdGhlCi0gICAgIGRpcmVjdG9yaWVzIGluIGBpbmNsdWRlX2RpcnNgLgotICAgICAiIiIKLSsgICAgcmV0dXJuIFRydWUKLSAgICAgaWYgc3lzLnBsYXRmb3JtID09ICd3aW4zMic6Ci0gICAgICAgICBpbmNsdWRlX2RpcnMgKz0gb3MuZW52aXJvbi5nZXQoJ0lOQ0xVREUnLCAnLicpLnNwbGl0KCc7JykKLSAgICAgZm9yIGRpciBpbiBpbmNsdWRlX2RpcnM6Ci1AQCAtMTcyLDcgKzE3Myw3IEBAIGRlZiBnZXRfYmFzZV9kaXJzKCk6Ci0gICAgIFJldHVybnMgYSBsaXN0IG9mIHN0YW5kYXJkIGJhc2UgZGlyZWN0b3JpZXMgb24gdGhpcyBwbGF0Zm9ybS4KLSAgICAgIiIiCi0gICAgIGlmIG9wdGlvbnNbJ2Jhc2VkaXJsaXN0J106Ci0tICAgICAgICByZXR1cm4gb3B0aW9uc1snYmFzZWRpcmxpc3QnXQotKyAgICAgICAgcmV0dXJuIFtvcy5lbnZpcm9uWydTVEFHSU5HX0xJQkRJUiddXQotIAotICAgICBiYXNlZGlyX21hcCA9IHsKLSAgICAgICAgICd3aW4zMic6IFsnd2luMzJfc3RhdGljJywgXSwKLUBAIC0yNjAsMTQgKzI2MSw2IEBAIGRlZiBtYWtlX2V4dGVuc2lvbihuYW1lLCBmaWxlcywgKmFyZ3MsICoKLSAgICAgYGRpc3R1dGlscy5jb3JlLkV4dGVuc2lvbmAgY29uc3RydWN0b3IuCi0gICAgICIiIgotICAgICBleHQgPSBEZWxheWVkRXh0ZW5zaW9uKG5hbWUsIGZpbGVzLCAqYXJncywgKiprd2FyZ3MpCi0tICAgIGZvciBkaXIgaW4gZ2V0X2Jhc2VfZGlycygpOgotLSAgICAgICAgaW5jbHVkZV9kaXIgPSBvcy5wYXRoLmpvaW4oZGlyLCAnaW5jbHVkZScpCi0tICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhpbmNsdWRlX2Rpcik6Ci0tICAgICAgICAgICAgZXh0LmluY2x1ZGVfZGlycy5hcHBlbmQoaW5jbHVkZV9kaXIpCi0tICAgICAgICBmb3IgbGliIGluICgnbGliJywgJ2xpYjY0Jyk6Ci0tICAgICAgICAgICAgbGliX2RpciA9IG9zLnBhdGguam9pbihkaXIsIGxpYikKLS0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhsaWJfZGlyKToKLS0gICAgICAgICAgICAgICAgZXh0LmxpYnJhcnlfZGlycy5hcHBlbmQobGliX2RpcikKLSAgICAgZXh0LmluY2x1ZGVfZGlycy5hcHBlbmQoJy4nKQotIAotICAgICByZXR1cm4gZXh0Ci1AQCAtMzE0LDYgKzMwNyw3IEBAIGNsYXNzIFBrZ0NvbmZpZyhvYmplY3QpOgotICAgICAgICAgICAgICAgICAgICAgIiAgICBtYXRwbG90bGliIG1heSBub3QgYmUgYWJsZSB0byBmaW5kIHNvbWUgb2YgaXRzIGRlcGVuZGVuY2llcyIpCi0gCi0gICAgIGRlZiBzZXRfcGtnY29uZmlnX3BhdGgoc2VsZik6Ci0rICAgICAgICByZXR1cm4KLSAgICAgICAgIHBrZ2NvbmZpZ19wYXRoID0gc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdMSUJESVInKQotICAgICAgICAgaWYgcGtnY29uZmlnX3BhdGggaXMgTm9uZToKLSAgICAgICAgICAgICByZXR1cm4KLUBAIC04NzUsMTQgKzg2OSwxNCBAQCBjbGFzcyBOdW1weShTZXR1cFBhY2thZ2UpOgotICAgICAgICAgICAgIHJlbG9hZChudW1weSkKLSAKLSAgICAgICAgIGV4dCA9IEV4dGVuc2lvbigndGVzdCcsIFtdKQotLSAgICAgICAgZXh0LmluY2x1ZGVfZGlycy5hcHBlbmQobnVtcHkuZ2V0X2luY2x1ZGUoKSkKLSsgICAgICAgIGV4dC5pbmNsdWRlX2RpcnMuYXBwZW5kKG9zLnBhdGguam9pbihvcy5lbnZpcm9uWydTVEFHSU5HX0xJQkRJUiddLCAncHl0aG9uMi43L3NpdGUtcGFja2FnZXMvbnVtcHkvY29yZS9pbmNsdWRlLycpKQotICAgICAgICAgaWYgbm90IGhhc19pbmNsdWRlX2ZpbGUoCi0gICAgICAgICAgICAgICAgIGV4dC5pbmNsdWRlX2RpcnMsIG9zLnBhdGguam9pbigibnVtcHkiLCAiYXJyYXlvYmplY3QuaCIpKToKLSAgICAgICAgICAgICB3YXJuaW5ncy53YXJuKAotICAgICAgICAgICAgICAgICAiVGhlIEMgaGVhZGVycyBmb3IgbnVtcHkgY291bGQgbm90IGJlIGZvdW5kLiAiCi0gICAgICAgICAgICAgICAgICJZb3UgbWF5IG5lZWQgdG8gaW5zdGFsbCB0aGUgZGV2ZWxvcG1lbnQgcGFja2FnZSIpCi0gCi0tICAgICAgICByZXR1cm4gW251bXB5LmdldF9pbmNsdWRlKCldCi0rICAgICAgICByZXR1cm4gW29zLnBhdGguam9pbihvcy5lbnZpcm9uWydTVEFHSU5HX0xJQkRJUiddLCAncHl0aG9uMi43L3NpdGUtcGFja2FnZXMvbnVtcHkvY29yZS9pbmNsdWRlLycpXQotIAotICAgICBkZWYgY2hlY2soc2VsZik6Ci0gICAgICAgICBtaW5fdmVyc2lvbiA9IGV4dHJhY3RfdmVyc2lvbnMoKVsnX192ZXJzaW9uX19udW1weV9fJ10KLUluZGV4OiBtYXRwbG90bGliLTIuMC4yL3NldHVwLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbWF0cGxvdGxpYi0yLjAuMi5vcmlnL3NldHVwLnB5Ci0rKysgbWF0cGxvdGxpYi0yLjAuMi9zZXR1cC5weQotQEAgLTY2LDI4ICs2Niw2IEBAIG1wbF9wYWNrYWdlcyA9IFsKLSAgICAgc2V0dXBleHQuUHl0aG9uKCksCi0gICAgIHNldHVwZXh0LlBsYXRmb3JtKCksCi0gICAgICdSZXF1aXJlZCBkZXBlbmRlbmNpZXMgYW5kIGV4dGVuc2lvbnMnLAotLSAgICBzZXR1cGV4dC5OdW1weSgpLAotLSAgICBzZXR1cGV4dC5TaXgoKSwKLS0gICAgc2V0dXBleHQuRGF0ZXV0aWwoKSwKLS0gICAgc2V0dXBleHQuRnVuY1Rvb2xzMzIoKSwKLS0gICAgc2V0dXBleHQuU3VicHJvY2VzczMyKCksCi0tICAgIHNldHVwZXh0LlB5dHooKSwKLS0gICAgc2V0dXBleHQuQ3ljbGVyKCksCi0tICAgIHNldHVwZXh0LlRvcm5hZG8oKSwKLS0gICAgc2V0dXBleHQuUHlwYXJzaW5nKCksCi0tICAgIHNldHVwZXh0LkxpYkFnZygpLAotLSAgICBzZXR1cGV4dC5GcmVlVHlwZSgpLAotLSAgICBzZXR1cGV4dC5GVDJGb250KCksCi0tICAgIHNldHVwZXh0LlBuZygpLAotLSAgICBzZXR1cGV4dC5RaHVsbCgpLAotLSAgICBzZXR1cGV4dC5JbWFnZSgpLAotLSAgICBzZXR1cGV4dC5UVENvbnYoKSwKLS0gICAgc2V0dXBleHQuUGF0aCgpLAotLSAgICBzZXR1cGV4dC5Db250b3VyTGVnYWN5KCksCi0tICAgIHNldHVwZXh0LkNvbnRvdXIoKSwKLS0gICAgc2V0dXBleHQuRGVsYXVuYXkoKSwKLS0gICAgc2V0dXBleHQuUWh1bGxXcmFwKCksCi0tICAgIHNldHVwZXh0LlRyaSgpLAotICAgICAnT3B0aW9uYWwgc3VicGFja2FnZXMnLAotICAgICBzZXR1cGV4dC5TYW1wbGVEYXRhKCksCi0gICAgIHNldHVwZXh0LlRvb2xraXRzKCksCi1AQCAtMTAwLDEzICs3OCw4IEBAIG1wbF9wYWNrYWdlcyA9IFsKLSAgICAgc2V0dXBleHQuQmFja2VuZE1hY09TWCgpLAotICAgICBzZXR1cGV4dC5CYWNrZW5kUXQ1KCksCi0gICAgIHNldHVwZXh0LkJhY2tlbmRRdDQoKSwKLS0gICAgc2V0dXBleHQuQmFja2VuZEd0azNBZ2coKSwKLSAgICAgc2V0dXBleHQuQmFja2VuZEd0azNDYWlybygpLAotLSAgICBzZXR1cGV4dC5CYWNrZW5kR3RrQWdnKCksCi0tICAgIHNldHVwZXh0LkJhY2tlbmRUa0FnZygpLAotLSAgICBzZXR1cGV4dC5CYWNrZW5kV3hBZ2coKSwKLSAgICAgc2V0dXBleHQuQmFja2VuZEd0aygpLAotLSAgICBzZXR1cGV4dC5CYWNrZW5kQWdnKCksCi0gICAgIHNldHVwZXh0LkJhY2tlbmRDYWlybygpLAotICAgICBzZXR1cGV4dC5XaW5kb3dpbmcoKSwKLSAgICAgJ09wdGlvbmFsIExhVGVYIGRlcGVuZGVuY2llcycsCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWNjYWJlXzAuNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1jY2FiZV8wLjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmI2M2NkNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbWNjYWJlXzAuNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJNY0NhYmUgY2hlY2tlciwgcGx1Z2luIGZvciBmbGFrZTgiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZHJlYW1ob3N0L2NsaWZmIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLnJzdDttZDU9ZjhiNTBmYmExNzExZWNhYzZiY2RiNjMyNGY4NWE2NmQiCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXB5dGhvbi1tY2NhYmUtcmVtb3ZlLXVubmVjZXNzYXJ5LXNldHVwX3JlcXVpcmVzLXB5dGUucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGM0MjVkYjA1ZjMxMGFkY2Q0YmIxNzRiOTkxZjI2ZjUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWEyYjEyZWJkODc2ZTc3YzcyZTQxZWJmNDAxY2MyZTdjNWI1NjY2NDlkNTAxMDVjYTQ5ODIyNjg4NjQyMjA3YiIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgcHl0aG9uLXByZXR0eXRhYmxlIFwKLSAgICBweXRob24tY21kMiBcCi0gICAgcHl0aG9uLXB5cGFyc2luZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1vY2tfMy4wLjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9ja18zLjAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGI3MTA2Ni4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9ja18zLjAuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiQSBQeXRob24gTW9ja2luZyBhbmQgUGF0Y2hpbmcgTGlicmFyeSBmb3IgVGVzdGluZyIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWRlOWRmYmY3ODA0NDZiMThhYWIxMWYwMGJhYWY1YjdlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDgzNGE0NmQ5YTEyOWJlM2U3NmZkY2M5OTc1MWU4MmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODM2NTdkODk0YzkwZDU2ODFkNjIxNTVjODJiZGE5YzExODc4Mjc1MjU4ODBlZGE4ZmY1ZGY0ZWM4MTM0MzdjMyIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotREVQRU5EUyArPSAiIFwKLSAgICBweXRob24tcGJyLW5hdGl2ZSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgcHl0aG9uLXByZXR0eXRhYmxlIFwKLSAgICBweXRob24tY21kMiBcCi0gICAgcHl0aG9uLXB5cGFyc2luZyBcCi0gICAgcHl0aG9uLW1jY2FiZSBcCi0gICAgcHl0aG9uLXBlcDggXAotICAgIHB5dGhvbi1weWZsYWtlcyBcCi0gICAgcHl0aG9uLXBiciBcCi0gICAgcHl0aG9uLWZ1bmNzaWdzIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tb25vdG9uaWNfMS41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1vbm90b25pY18xLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxZTdiMWMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1vbm90b25pY18xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1TVU1NQVJZID0gIkFuIGltcGxlbWVudGF0aW9uIG9mIHRpbWUubW9ub3RvbmljKCkgZm9yIFB5dGhvbiAyLjAgdGhyb3VnaCAzLjIiCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kMjc5NGMwZGY1YjkwN2ZkYWNlMjM1YTYxOWQ4MDMxNCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjlmODFjYjBlNTk2NjQ3OTc1NDQ1M2RlYTJiNjgyMmY0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzOTUzZDU1MDc2ZGYwMzg1NDFlNjQ4YTUzNjc2ZmIyNDk4MGY3YTFiZTI5MGNkZGEyMTMwMGIzYmMyMWRmYjAiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tY3R5cGVzICR7UFlUSE9OX1BOfS1pbyAke1BZVEhPTl9QTn0tcmUgJHtQWVRIT05fUE59LXRocmVhZGluZyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tb3JlLWl0ZXJ0b29scy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbW9yZS1pdGVydG9vbHMuaW5jCmluZGV4IDhkY2YwMGIuLjBiNjg0YzEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tb3JlLWl0ZXJ0b29scy5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1vcmUtaXRlcnRvb2xzLmluYwpAQCAtNCwzICs0LDE4IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zMzk2ZWEzMGY5ZDIxMzg5ZDc4NTc3MTk4MTZmODNiNSIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitpbmhlcml0IHB0ZXN0CisKK1NSQ19VUkkgKz0gIiBcCisJZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorCSR7UFlUSE9OX1BOfS1weXRlc3QgXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKwljcCAtcmYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1vcmUtaXRlcnRvb2xzXzUuMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1vcmUtaXRlcnRvb2xzXzUuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YzQ0ZGY0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tb3JlLWl0ZXJ0b29sc181LjAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLW1vcmUtaXRlcnRvb2xzLmluYwotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjJlYTU4YWEzMzZjZTZjMTNiN2IyMjViM2JiZTMwNWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzhhOTM2YzBhNmQ5OGEzOGJjYzJkMDNmZGFhZWRhYmE5ZjQxMjg3OTQ2MWRkMmNlZmY4ZDM3NTY0ZDY1MjJlNCIKLQotUEUgPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tc2dwYWNrLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1tc2dwYWNrLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWRmNWMzZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbXNncGFjay5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIk1lc3NhZ2VQYWNrIChkZSlzZXJpYWxpemVyIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2Q5NTIzMTgxZDlkNGZiZjdmZmNhNTJlYWEyYTU3NTEiCi0KLVBZUElfUEFDS0FHRSA9ICJtc2dwYWNrIgotaW5oZXJpdCBweXBpCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiYTQ2ZmRlZTk5NTU2NWY0MGUzMzJiZDdlZWE4ODJmMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlYTNjMmY4NTkzNDZmY2Q1NWZjNDZlOTY4ODUzMDFkOWMyZjdhMzZkNDUzZjVkOGYyOTY3ODQwZWZhMWUxODMwIgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKLSAgICAke1BZVEhPTl9QTn0taW8gXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW1zZ3BhY2tfMC42LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbXNncGFja18wLjYuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmMyYzhmMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbXNncGFja18wLjYuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBweXRob24tbXNncGFjay5pbmMKLWluaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5kZy1odHRwc2NsaWVudF8wLjUuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZGctaHR0cHNjbGllbnRfMC41LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljZDg4MWEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5kZy1odHRwc2NsaWVudF8wLjUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSBweXRob24tbmRnLWh0dHBzY2xpZW50LmluYwotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJuZGdfaHR0cGNsaWVudCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtuZGdfaHR0cGNsaWVudF0gPSAiJHtiaW5kaXJ9L25kZ19odHRwY2xpZW50IgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMjAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0YWRkcl8wLjcuMTkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0YWRkcl8wLjcuMTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhNWE3OWEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5ldGFkZHJfMC43LjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1uZXRhZGRyLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS10ZXh0dXRpbHMgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5ldGlmYWNlc18wLjEwLjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0aWZhY2VzXzAuMTAuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzRhYTg0OS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0aWZhY2VzXzAuMTAuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBweXRob24tbmV0aWZhY2VzLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0d29ya3guaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5ldHdvcmt4LmluYwppbmRleCBhNGMzMWIyLi40YmNhNjM2IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0d29ya3guaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uZXR3b3JreC5pbmMKQEAgLTMsOCArMyw2IEBACiAKIGluaGVyaXQgcHlwaQogCi1QWVBJX1BBQ0tBR0VfRVhUID0gInppcCIKLQogUkRFUEVORFNfJHtQTn0gKz0gIlwKICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tZGVjb3JhdG9yIFwKICAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0d29ya3hfMi4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5ldHdvcmt4XzIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjQ4ZjAzMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmV0d29ya3hfMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1uZXR3b3JreC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTMzNzZmZjdjOWM1ODA0OGM2MmQ5MTQzMWY3ZjA4Y2RlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODI2MDhhMzY4NmZiM2U2MWYyMGNmMTNiZmQzYzFiNGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDVlNTZmN2FiNmZlODE2NTJmYjRiYzlmNDRmYWRkYjBlOTAyNWY0NjlmNjAyZGYxNGUzYjI1NTFjMmVhNWM4YiIKLQotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtZXJpY18yNC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW51bWVyaWNfMjQuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkxZDc3Yy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbnVtZXJpY18yNC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHNvcGhpc3RpY2F0ZWQgTnVtZXJpYyBQcm9jZXNzaW5nIFBhY2thZ2UgZm9yIFB5dGhvbiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJQU0YgJiBMTE5MIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTGVnYWwuaHRtO21kNT1lM2NlNzVkZWRkNDA0MzkxOGQxNTk3OWFlNDNlMzEyZSIKLQotUFIgPSAibWwzIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9udW1weS9OdW1lcmljLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWl0LXRyaWVzLXRvLWRlZmluZS10aGlzLWZ1bmN0aW9uLWRpZmZlcmVudGx5LXRoYW4taXQucGF0Y2ggXAotIgotUyA9ICIke1dPUktESVJ9L051bWVyaWMtJHtQVn0iCi0KLWluaGVyaXQgZGlzdHV0aWxzCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyYWU2NzI2NTZlMDY3MTZhMTQ5YWNiMDQ4Y2NhMzA5MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZjcyZTcyOWViNmZmNTc0NDJmMmEzOGJmYzk5MzE3MzhiNTllNTA3NzkyOGUyZTcwZDIyYjQ2MTBmZjE1MjU4IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW9iZC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tb2JkLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTFlNjYzYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tb2JkLmluYworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkEgcHl0aG9uIG1vZHVsZSBmb3IgaGFuZGxpbmcgcmVhbHRpbWUgc2Vuc29yIGRhdGEgZnJvbSBPQkQtSUkgdmVoaWNsZSBwb3J0cyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9icmVuZGFuLXcvcHl0aG9uLU9CRCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUubWQ7bWQ1PTU4YmE4OTZmYTA4NmM5NmFkMjMzMTdjZWJmZWFiMjc3IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzA1ZWZjYjZjNjUwZGI3Yjk1ODM1MzIzNTVlYmViN2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGI4MWVhNTg5NjE1N2I2ZTg2MWFmMTJlMTczYzEwYjAwMWNiNmNjYTZlYmIwNGRiMmMwMWQzMjY4MTJhZDc3YiIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1weXNlcmlhbCAke1BZVEhPTl9QTn0tcGludCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYWNrYWdpbmcuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhY2thZ2luZy5pbmMKaW5kZXggN2NlZGFkZi4uNDE4NDgzZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhY2thZ2luZy5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhY2thZ2luZy5pbmMKQEAgLTMsOCArMyw4IEBACiBMSUNFTlNFID0gIkFwYWNoZS0yLjAgJiBCU0QiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mYWFkYWVkY2E5MjUxYTkwYjIwNWM5MTY3NTc4Y2U5MSIKIAotU1JDX1VSSVttZDVzdW1dID0gIjkzZDZjY2JkZmNiNWI3Njk3YjZlY2VhNTNlY2MyOTRiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZlMWQ4MzMxZGZhN2NjMGE4ODNiNDlkNzVmYzc2MzgwYjJhYjI3MzRiMjIwZmJiODdkNzc0ZTRmZDRiODUxZjgiCitTUkNfVVJJW21kNXN1bV0gPSAiMTllMGQxZjgyYTkwMDdiNDQ4NjUwY2NmZWZmZDBhMjYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2MyOTJiNDc0ZmRhMTY3MWVjNTdkNDZkNzM5ZDA3MmJmZDQ5NWE0ZjUxYWQwMWEwNTUxMjFkODFlOTUyYjdhMyIKIAogREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXNldHVwdG9vbHMtc2NtLW5hdGl2ZSIKIFJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tc2l4ICR7UFlUSE9OX1BOfS1weXBhcnNpbmciCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFja2FnaW5nXzIwLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFja2FnaW5nXzIwLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1ZDA3NDYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhY2thZ2luZ18yMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcGFja2FnaW5nLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhaG8tbXF0dC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFoby1tcXR0LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGEwZTYxMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFoby1tcXR0LmluYworKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVNVTU1BUlkgPSAiTVFUVCB2ZXJzaW9uIDMuMS8zLjEuMSBjbGllbnQgbGlicmFyeSIKLUxJQ0VOU0UgPSAiRVBMLTEuMCB8IEVETC0xLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZWI0OGM2ZWUyY2I5ZjViOGI5ZmU3NWU2ZjgxN2JkZmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXBsLXYxMDttZDU9OGQzODNjMzc5ZTkxZDIwYmExOGE1MmMzZTdkM2E5NzkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZWRsLXYxMDttZDU9YzA5ZjEyMTkzOWYwNjNhZWI1MjM1OTcyYmU4YzcyMmMgXAotIgotU1JDTkFNRSA9ICJwYWhvLW1xdHQiCi0KLWluaGVyaXQgcHlwaQotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDVlODBkOWI4MDY2YThkMGJhMWVjZmZmZTI3MWJkM2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTNkMjg2MTk4YmFhZWExOTVjOGIzYmMyMjE5NDFkMjVhM2FiMGUxNTA3ZmMxNzc5YmRiNzQ3MzgwNjM5NGJlNCIKLQotREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXB5dGVzdC1ydW5uZXItbmF0aXZlIgotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgJHtQWVRIT05fUE59LWlvIFwKLSAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCi0gICAgJHtQWVRIT05fUE59LW1hdGggXAotICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhaG8tbXF0dF8xLjUuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYWhvLW1xdHRfMS41LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExMDMxMTcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhaG8tbXF0dF8xLjUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1wYWhvLW1xdHQuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYW1fMS44LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFtXzEuOC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYWMzNDk2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYW1fMS44LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJQeXRob24gUEFNIG1vZHVsZSB1c2luZyBjdHlwZXMsIHB5My9weTIuIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9NjQzMjZkNDI0NzFiNDkzYzVjMDg4MzA1MzY0YWQ1ZGEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkYjcxYjZiOTk5MjQ2ZmIwNWQ3OGVjZmJlMTY2NjI5ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyNmVmZTRlNzliODY5YjEwZjk3Y2Q4YzRhNmJiYjA0YTRlNTRkNDExODYzNjRlOTc1YjQxMDhjOWMwNzE4MTJjIgotCi1QWVBJX1BBQ0tBR0UgPSAicHl0aG9uLXBhbSIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAibGlicGFtIgotCi1pbmhlcml0IGZlYXR1cmVzX2NoZWNrCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAicGFtIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhbmRhcy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFuZGFzLmluYwppbmRleCBkNmNhMjQzLi45MzQyY2VkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFuZGFzLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFuZGFzLmluYwpAQCAtNiw4ICs2LDggQEAKIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZWUwNDcwZjJkZTMzNmMzNzBhNzFjMmY4ZDVlODFjMTEiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICI3YjU5N2M3Zjk4OTY1MmUwYzlhZjVmMDlhMTU3ZTNhZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YjI0Y2E0N2FjZjY5MjIyZTgyNTMwZTg5MTExZGQ5ZDE0ZjliOTcwYWIyY2QzYTFjMmM3OGYwYzRmYmJhNGY0IgorU1JDX1VSSVttZDVzdW1dID0gIjYyOGZmYTFkZDU3NjhlMGJlNzAyMzY1OTZjZWU4ZDZiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNjMDc3NjUzMDhmMDkxZDgxYjY3MzVkNGYyMjQyYmI0M2MzMzJjYzM0NjFjYWU2MDU0M2RmNmIxMDk2N2ZlMjciCiAKIGluaGVyaXQgcHlwaQogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2UtdHlwZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2UtdHlwZS5pbmMKaW5kZXggNDU0OWVjOS4uMTQ3ZWE2NCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlLXR5cGUuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZS10eXBlLmluYwpAQCAtNyw2ICs3LDE5IEBACiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjU5NmJkYzc1ZDNkZDkzMDM2ZmJmZTNkMDQxMjdkYTlmNmRmMGMyNmMzNmUwMWU3NmRhODVhZGVmNDMzNmIzYyIKIAogUFlQSV9QQUNLQUdFID0gInBhcnNlX3R5cGUiCi1pbmhlcml0IHB5cGkKK2luaGVyaXQgcHlwaSBwdGVzdAogCiBSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXBhcnNlIgorCitTUkNfVVJJICs9ICIgXAorCWZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKwkke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisJY3AgLXJmICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZS10eXBlXzAuNC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlLXR5cGVfMC40LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlMTBlODAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlLXR5cGVfMC40LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcGFyc2UtdHlwZS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGFyc2UuaW5jCmluZGV4IDVjZTY3ZjEuLmVjZmQ2NzEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZS5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlLmluYwpAQCAtMSwxNCArMSwyNiBAQAogU1VNTUFSWSA9ICJQYXJzZSBzdHJpbmdzIHVzaW5nIGEgc3BlY2lmaWNhdGlvbiBiYXNlZCBvbiB0aGUgUHl0aG9uIGZvcm1hdCgpIHN5bnRheCIKIEhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9yMWNoYXJkajBuM3MvcGFyc2UiCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BhcnNlLnB5O2JlZ2lubGluZT0xMzI1O2VuZGxpbmU9MTM0NTttZDU9ZmEwM2JhZTNmNTFhMmRiMjVlMjM5ZTg2OWM2NDc0MzciCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9wYXJzZS5weTtiZWdpbmxpbmU9MTMyNTtlbmRsaW5lPTEzNDU7bWQ1PTNkOTg3YjJlNzM4ODFiYmNlNzY4YTgwZjljZGQyM2Q5IgogCi1TUkNfVVJJW21kNXN1bV0gPSAiMDdjYmI1YmExMDI1Y2JmZTkyZmMzMzc2YzM3MmRkYTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTVhNGY0NDY5ZTM3YzU3YjVlOTI0NjI5YWM5OTkyNmYyOGJlZTdkYTU5NTE1ZGM1YjgwNzhjNGMzZTc3OTI0OSIKK1NSQ19VUklbbWQ1c3VtXSA9ICJhNWFhODJiMmI4YjRkNzMzZDIyN2UzYzk5ZDdkMDFiNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNmQ0ZTJjMmYxZmJkZTY3MTdkMjgwODRhMTkxYTA1Mjk1MGY3NThjMGNiZDgzODA1MzU3ZTY1NzVjMmI5NWMwIgogCi1pbmhlcml0IHB5cGkKK2luaGVyaXQgcHlwaSBwdGVzdAogCiBSREVQRU5EU18ke1BOfSArPSAiXAogICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCiAgICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAogICAgICIKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgLWYgJHtTfS90ZXN0X3BhcnNlLnB5ICR7RH0ke1BURVNUX1BBVEh9LworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlXzEuMTQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXJzZV8xLjE0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMWNjYzcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhcnNlXzEuMTQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1wYXJzZS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXNzbGliXzEuNy4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhc3NsaWJfMS43LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExYzU5OGEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhc3NsaWJfMS43LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1wYXNzbGliLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhc3RlXzMuMi4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBhc3RlXzMuMi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2Q0ZmRkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXN0ZV8zLjIuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbHMgZm9yIHVzaW5nIGEgV2ViIFNlcnZlciBHYXRld2F5IEludGVyZmFjZSBzdGFjayIKLUhPTUVQQUdFID0gImh0dHA6Ly9weXRob25wYXN0ZS5vcmcvIgotTElDRU5TRSA9ICJNSVQiCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24tc2l4IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2NzL2xpY2Vuc2UudHh0O21kNT0xNzk4ZjI5ZDU1MDgwYzYwMzY1ZTYyODNjYjQ5Nzc5YyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdkYzZkYmQyMGUzNThkZDk1YmQ0MmVlZjVjNmNjODRjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhiZGM3ZjZiZTkwN2VlZDdjZDYzODY4Yzc5ZDg4YWYyYjg3ZDAyZDg0MGZiNWFjZmM5M2Q0YmRhNTcyYjE1NjciCi0KLVBZUElfUEFDS0FHRSA9ICJQYXN0ZSIKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLUZJTEVTXyR7UE59ICs9ICIvdXNyL2xpYi8qIgotCi1ERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tcHl0ZXN0LXJ1bm5lci1uYXRpdmUiCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXRobGliMl8yLjMuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYXRobGliMl8yLjMuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjMxN2UxYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGF0aGxpYjJfMi4zLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1wYXRobGliMi5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1zY2FuZGlyIFwKLSAgICAgICAgICAgICAgICAgICBweXRob24tbWlzYyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGJyXzUuNC40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBicl81LjQuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWQ3ZDhkNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGJyXzUuNC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi0jIFRoZSBpbmMgZmlsZSBpcyBpbiBvZS1jb3JlCi1yZXF1aXJlIHJlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYnIuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2NWNkYzMyZTFhMWZmNTZkNDgxZmMxNWFhOGNhZjk4OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMzlkMjYyNTU0N2RiZmE1ZmIwYjgxZGFlYmIzOTYwMWM0NzhjMjE5NTZkYzU3ZTJlMDdiNzQ0NTBhOGM1MDZiIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICAgaWYgWyAtZiAke0R9JHtiaW5kaXJ9L3BiciBdOyB0aGVuCi0gICAgICAgICAgICAgICAgbXYgJHtEfSR7YmluZGlyfS9wYnIgJHtEfSR7YmluZGlyfS9wYnItMgotICAgICAgICBmaQotfQotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGVwOF8xLjcuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXA4XzEuNy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1NGNlOTc4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXA4XzEuNy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gc3R5bGUgZ3VpZGUgY2hlY2tlciIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kcmVhbWhvc3QvY2xpZmYiCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUucnN0O21kNT1kOGViYmJlODMxMjU5Y2UwMTAxNzlkMmYzMTBiMGYzZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjYwMzgyMWQwNmRiOTQ1YzcxZDgxMWI1YThkNzg0MjNjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZlMjQ5YjUyZTIwNDk4ZTU5ZTBiNWM1MjU2YWE1MmVlOTlmYzI5NWIyNmVjOWVhYTg1Nzc2ZmZkYjlmZTYzNzQiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgIHB5dGhvbi1wcmV0dHl0YWJsZSBcCi0gICAgcHl0aG9uLWNtZDIgXAotICAgIHB5dGhvbi1weXBhcnNpbmciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXJpcGhlcnlfMi4wLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGVyaXBoZXJ5XzIuMC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZDAyNDBhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXJpcGhlcnlfMi4wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1wZXJpcGhlcnkuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxZDk1OGYwMjU3NWQ0YTE5NzM0ZWUyZGQ5MjMzNjE1NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZGE0ZDVmNDBmZjg5NzRjZjZjNzI0NTg3YmFhNjc0ZDdlMDU5M2YwN2I2ZjZlZTg5NjEwNGYxMWMxYmUxOGVjIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3QuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3QuaW5jCmluZGV4IDZkNzhlYjkuLmM2MjMwYjIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXhwZWN0LmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGV4cGVjdC5pbmMKQEAgLTQsOCArNCwxMCBAQAogTElDRU5TRSA9ICJJU0MiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xYzdhNzI1MjUxODgwYWY4YzZhMTQ4MTgxNjY1Mzg1YiIKIAotU1JDX1VSSVttZDVzdW1dID0gImVkMDAzMjQyY2JmMzA4YWVlMWIxZWFlY2RlZjU5ZTQzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjllMmMxZmQwZTZlZTNhNDliMjhmOTVkNGIzM2JjMzg5Yzg5YjIwYWY2YTEyNTU5MDZlOTBmZjEyNjJjZTYyZWIiCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1GU00ucHktY2hhbmdlLXNoZWJhbmctZnJvbS1weXRob24tdG8tcHl0aG9uMy5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjE1M2ViMjUxODQyNDlkNmE4NWZkZTlhY2Y0ODA0MDg1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZjNjVhNDM5NTlkMTUzZDAxMTRhZmUxMzk5N2Q0MzljMjI4MjNhMjdjZWZjZWI1ZmYzNWMyMTc4YzY3ODRjMGMiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3BleHBlY3QiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wZXhwZWN0XzQuNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3RfNC43LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjNDZiNDcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBleHBlY3RfNC43LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXBleHBlY3QuaW5jCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBpa2FfMS4xLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGlrYV8xLjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdlMDE5OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGlrYV8xLjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1waWthLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBpbnQuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBpbnQuaW5jCmluZGV4IDA5MDBkOTEuLjVjMzQ4MTAgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1waW50LmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGludC5pbmMKQEAgLTcsOSArNywyNCBAQAogCiBQWVBJX1BBQ0tBR0UgOj0gIlBpbnQiCiAKLWluaGVyaXQgcHlwaQoraW5oZXJpdCBweXBpIHB0ZXN0CiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJkMDY4MWNiN2NmYWNhOWZjNjhjZTdlZGFiMGQwOGQ4OCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMmQ4YTlhOWQ2M2Y0ZjgxMTk0YzAwMTRiM2I3NDI2NzlkY2U4MWEyNmQ0NTEyN2Q5ODEwYTY4YTU2MWZlNGUyIgorU1JDX1VSSVttZDVzdW1dID0gIjNhOGYyOWMyYTMwZWZkMzVhZjRiNWM1YTIyNGVmOTY1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwOGYxMDcwNTAwZTEwMmY4M2I2YWRmY2E2ZGI1M2RlYmZjZTJmZmM1ZDNjYmUzZjZjMzY3ZGEzNTliNWNmNGQiCiAKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorREVQRU5EUyArPSAicHl0aG9uMy1zZXR1cHRvb2xzLXNjbS1uYXRpdmUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUKKwljcCAtcmYgJHtTfS9waW50L3Rlc3RzdWl0ZS8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzdWl0ZS8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1waW50XzAuOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1waW50XzAuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDgwZjA4OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGludF8wLjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcGludC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1waXBfMTkuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBpcF8xOS4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4MjdhMTIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBpcF8xOS4zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1TVU1NQVJZID0gIlBJUCBpcyBhIHRvb2wgZm9yIGluc3RhbGxpbmcgYW5kIG1hbmFnaW5nIFB5dGhvbiBwYWNrYWdlcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vcGlwLnB5cGEuaW8vIgotTElDRU5TRSA9ICJNSVQgJiBMR1BMLTIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT04YmEwNmQ1MjljOTU1MDQ4ZTVkZGQ3YzQ1NDU5ZWIyZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFhYWFmOTBmYmFmYzUwZTdiYTFlNjZmZmNlYjAwOTYwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIxMjA3ZDc2YzEwMzFlNTE3NjY4ODk4YTZiNDZhOWZiMTUwMWM3YTQ3MTBlZjVkZmQ2YTQwYWQ5ZTY3NTdlYTciCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLSMgU2luY2UgUElQIGlzIGxpa2UgQ1BBTiBmb3IgUEVSTCB3ZSBuZWVkIHRvIGRyYWcgaW4gYWxsIHB5dGhvbiBtb2R1bGVzIHRvIGVuc3VyZSBldmVyeXRoaW5nIHdvcmtzCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAicHl0aG9uLW1vZHVsZXMgcHl0aG9uLWRpc3RyaWJ1dGUgcHl0aG9uLW1pc2MiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wbHVnZ3kuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBsdWdneS5pbmMKaW5kZXggNzU4NTk4NC4uMTE5OGQ1ZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBsdWdneS5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBsdWdneS5pbmMKQEAgLTExLDQgKzExLDE3IEBACiAgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW1vcmUtaXRlcnRvb2xzIFwKICIKIAotaW5oZXJpdCBweXBpCitpbmhlcml0IHB5cGkgcHRlc3QKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0aW5nCisJY3AgLXJmICR7U30vdGVzdGluZy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RpbmcvCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGx1Z2d5XzAuMTMuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wbHVnZ3lfMC4xMy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZGNkNGY1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wbHVnZ3lfMC4xMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXBsdWdneS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wbHlfMy4xMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wbHlfMy4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI2MTY1Yy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGx5XzMuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXBseS5pbmMKLWluaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByZXRlbmRfMS4wLjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJldGVuZF8xLjAuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzNiOGVkNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJldGVuZF8xLjAuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXByZXRlbmQuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJldHR5dGFibGUuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByZXR0eXRhYmxlLmluYwppbmRleCAwN2U4OTZkLi4wOTM4NGRhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJldHR5dGFibGUuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcmV0dHl0YWJsZS5pbmMKQEAgLTIzLDMgKzIzLDE2IEBACiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvUHJldHR5VGFibGUvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCitpbmhlcml0IHB0ZXN0CisKK1NSQ19VUkkgKz0gIiBcCisJZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorCSR7UFlUSE9OX1BOfS1weXRlc3QgXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwIC1mICR7U30vcHJldHR5dGFibGVfdGVzdC5weSAke0R9JHtQVEVTVF9QQVRIfS8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcmV0dHl0YWJsZV8wLjcuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcmV0dHl0YWJsZV8wLjcuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjlmZjI1OS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJldHR5dGFibGVfMC43LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHJldHR5dGFibGUuaW5jCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9ncmVzc18xLjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvZ3Jlc3NfMS41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDYwODYyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9ncmVzc18xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1wcm9ncmVzcy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9tcHQtdG9vbGtpdF8yLjAuMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvbXB0LXRvb2xraXRfMi4wLjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MjdjOTA1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm9tcHQtdG9vbGtpdF8yLjAuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1wcm9tcHQtdG9vbGtpdC5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb3RvYnVmLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm90b2J1Zi5pbmMKaW5kZXggNDA2MTMxMS4uNTcxNjg5NCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb3RvYnVmLmluYworKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHJvdG9idWYuaW5jCkBAIC03LDggKzcsOCBAQAogCiBpbmhlcml0IHB5cGkKIAotU1JDX1VSSVttZDVzdW1dID0gImQ2MzQ2NjZjODk4MTQ4ZTQ1NjVhYzYyZjNiYTRhMmNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg0M2Y0OThlOThhZDE0NjlhZDU0ZWNiNGE3Y2NmNDg2MDVhMWM1ZDJiZDI2YWU3OTljN2EyY2RkYWI0YTM3ZWMiCitTUkNfVVJJW21kNXN1bV0gPSAiZWVkYTdkZWE2NWZjOTRlNTYwZmM5YTgxODBlYjE4NzIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzc3Yzk3NGQxZGFkZjI0NmQ3ODlmNmRhZDFjMjQ0MjYxMzdjOTA5MWU5MzBkYmY1MGUwYTI5YzFmY2YwMGIxZiIKIAogIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTg0NzE1LwogIyBDYW4ndCBmaW5kIHJlcXVpcmVkIGZpbGU6IC4uL3NyYy9nb29nbGUvcHJvdG9idWYvZGVzY3JpcHRvci5wcm90bwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb3RvYnVmXzMuOS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXByb3RvYnVmXzMuOS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMDRmYzQ4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wcm90b2J1Zl8zLjkuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1wcm90b2J1Zi5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wc3V0aWwuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBzdXRpbC5pbmMKaW5kZXggYmY0OWQ5OC4uZGZiMzNlOCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBzdXRpbC5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBzdXRpbC5pbmMKQEAgLTIsOCArMiw4IEBACiBMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWUzNWZkOWYyNzFkMTlkNWY3NDJmMjBhOWQxZjhiYjhiIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYjJjOTRlMDM2OGZjNmU2ZjIzN2E3MjUyZjhlODVjYTIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmZhZDhlYjJhYzYxNDUxOGJiZTNjMGI4ZWI5ZGZmZGIzYThkMmUzYTdkNWRhNTFjNWI5NzRmYjcyM2E1YzVhYSIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZDdiMGYxMWVkMjE0YmNhYmJlNzZiN2NmNTJmM2FlMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2ODVlYzE2Y2ExNGQwNzk0NTU4OTJmMjViZDEyNGRmMjZmZjkxMzc2NjRhZjQ0NTU2M2MxYmQzNjYyOWI1ZTBlIgogCiBQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wc3V0aWxfNS42LjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHN1dGlsXzUuNi43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWFiZmIyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wc3V0aWxfNS42LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1wc3V0aWwuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wdHlwcm9jZXNzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wdHlwcm9jZXNzLmluYwppbmRleCA0OWNjNWE0Li4wY2M5MTE0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHR5cHJvY2Vzcy5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB0eXByb2Nlc3MuaW5jCkBAIC0xOCwzICsxOCwyMSBAQAogIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2luaGVyaXQgcHRlc3QKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisJJHtQWVRIT05fUE59LWZjbnRsIFwKKwkke1BZVEhPTl9QTn0tdGVybWluYWwgXAorCSR7UFlUSE9OX1BOfS1yZXNvdXJjZSBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworCWNwIC1yZiAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHR5cHJvY2Vzc18wLjYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wdHlwcm9jZXNzXzAuNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3Y2E0NTg3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wdHlwcm9jZXNzXzAuNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1wdHlwcm9jZXNzLmluYwotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHkuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjQ4YWJlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgd2l0aCBjcm9zcy1weXRob24gcGF0aCwgaW5pLXBhcnNpbmcsIGlvLCBjb2RlLCBsb2cgZmFjaWxpdGllcyIKLUhPTUVQQUdFID0gImh0dHA6Ly9weS5yZWFkdGhlZG9jcy5pby8iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE2YmIwMzIwYjA0YTBhNTAzZjEyZjY5ZmVhNDc5ZGU5IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDJjNjdkZTg0YjA3YWM5Y2M4NjdiOGI3MDg0M2E0NWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWUyNzA4MTQwMTI2MjE1NzQ2N2FkNmU3Zjg1MWI3YWE0MDJjNTg1MmRiY2IzZGFlMDY3Njg0MzRkZTU3NTJhYSIKLQotREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXNldHVwdG9vbHMtc2NtLW5hdGl2ZSIKLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weV8xLjguMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weV8xLjguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFkMmMxOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlfMS44LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFsc2FhdWRpb18wLjguNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFsc2FhdWRpb18wLjguNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTUxNTM0Mi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhbHNhYXVkaW9fMC44LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXB5YWxzYWF1ZGlvLmluYwotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEtbW9kdWxlcy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhc24xLW1vZHVsZXMuaW5jCmluZGV4IGZjYjE0MGEuLmNlOTc5MTkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEtbW9kdWxlcy5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMS1tb2R1bGVzLmluYwpAQCAtOSw4ICs5LDIxIEBACiBTUkNfVVJJW21kNXN1bV0gPSAiMThjNzdkNTZhYmVlZjYzMWQ5NGY5NWZmMmQ2NTI4NTkiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGMzNWE1MmUwMGI2NzJmODMyZTU4NDY4MjZmMWZiNzUwNzkwN2Y3ZDUyZmJhNmZhYTllM2M0Y2JlODc0ZmU0YiIKIAotaW5oZXJpdCBweXBpCitpbmhlcml0IHB5cGkgcHRlc3QKIAogUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LXB5YXNuMSIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitTUkNfVVJJICs9ICIgXAorCWZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKwkke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisJY3AgLXJmICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEtbW9kdWxlc18wLjIuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEtbW9kdWxlc18wLjIuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWI3ODg4NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhc24xLW1vZHVsZXNfMC4yLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXB5YXNuMS1tb2R1bGVzLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhc24xLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEuaW5jCmluZGV4IGQ3NGMyZmUuLmQ5NTU3NjQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEuaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWFzbjEuaW5jCkBAIC0xNCwzICsxNCwxOCBAQAogIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2luaGVyaXQgcHRlc3QKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworCWNwIC1yZiAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhc24xXzAuNC44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5YXNuMV8wLjQuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTEzYzc0ZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlhc24xXzAuNC44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHlhc24xLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1sYW5nIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJpbmQxMV8yLjQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJpbmQxMV8yLjQuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU2NzQzMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHliaW5kMTFfMi40LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weWJpbmQxMS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJsdWV6LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWJsdWV6LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzk5ZmU1Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlibHVlei5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJCbHVldG9vdGggUHl0aG9uIGV4dGVuc2lvbiBtb2R1bGUiCi1IT01FUEFHRSA9ICJodHRwOi8va2FydWxpcy5naXRodWIuaW8vcHlibHVlei8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLQotREVQRU5EUyA9ICJibHVlejUiCi0KLUxJQ0VOU0UgPSAiR1BMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PThhNzFkMDQ3NWQwOGVlZTc2ZDhiNmQwYzZkYmVjNTQzIgotCi1pbmhlcml0IHB5cGkKLQotU1JDX1VSSSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9wYWNrYWdlcy9jMS85OC8zMTQ5NDgxZDUwOGJlZTE3NDMzNWJlNjcyNTg4MGYwMGQyOTdhZmViZTc1YzE1ZTkxN2FmOGY2ZmUxNjkvUHlCbHVlei0wLjIyLnppcCIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0OWRhYjlkNWE4ZjBiNzk4YzgxMjVjN2Y2NDliZTNjZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0Y2UwMDY3MTZhNTRkOWQxOGU4MTg2YTNmMWM4YjEyYThlNmJlZmVjZmZlOGZkNTgyOGEyOTFmYjY5NGNlNDlkIgotCi1TID0gIiR7V09SS0RJUn0vUHlCbHVlei0ke1BWfSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICBibHVlejUgXAotICAgICR7UFlUSE9OX1BOfS1mY250bCBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlibHVlel8wLjIyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Ymx1ZXpfMC4yMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzE1OGY0Yi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlibHVlel8wLjIyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1weWJsdWV6LmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljb2Rlc3R5bGUuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y29kZXN0eWxlLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTZjZGM1ZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljb2Rlc3R5bGUuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gc3R5bGUgZ3VpZGUgY2hlY2tlciAoZm9ybWx5IGNhbGxlZCBwZXA4KSIKLUhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weWNvZGVzdHlsZSIKLUxJQ0VOU0UgPSAiTUlUIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wMTgzMWRkYmFmMzk4NDcxZGEzY2M4N2Y1MDM3ZTgyMiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQwZTdhNzZmMzY0YTE4ZjUzMWFhYmExMWE0NDc2ZTIxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU0MGE5MzZjOWE0NTBhZDgxZGYzN2Y1NDlkNjc2ZDEyN2IxYjY2MDAwYTZjNTAwY2FhMmIwODViYzBjYTk3NmMiCi0KLWluaGVyaXQgcHlwaQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljb2Rlc3R5bGVfMi41LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljb2Rlc3R5bGVfMi41LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjNmMxMmYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y29kZXN0eWxlXzIuNS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weWNvZGVzdHlsZS5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1sYW5nIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgICAgIGlmIFsgLWYgJHtEfSR7YmluZGlyfS9weWNvZGVzdHlsZSBdOyB0aGVuCi0gICAgICAgICAgICAgICAgbXYgJHtEfSR7YmluZGlyfS9weWNvZGVzdHlsZSAke0R9JHtiaW5kaXJ9L3B5Y29kZXN0eWxlLTIKLSAgICAgICAgZmkKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNwYXJzZXIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3BhcnNlci5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ3YTBlMGUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3BhcnNlci5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIlBhcnNlciBvZiB0aGUgQyBsYW5ndWFnZSwgd3JpdHRlbiBpbiBwdXJlIFB5dGhvbiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9lbGliZW4vcHljcGFyc2VyIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04NmYxY2VkYjRlNjQxMGE4OGNlOGUzMGI5MTA3OTE2OSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjc2Mzk2NzYyYWRjM2ZhNzY5YzgzZDhlMjAyZDM2YjZmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE5ODg3MThhYmZhZDgwYjZiMTU3YWNjZTdiZjEzMGEzMDg3NmQyNzYwMzczOGFjMzlmMTQwOTkzMjQ2YjI1YjMiCi0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tcGx5IFwKLSAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKLSAgICBjcHAgXAotICAgIGNwcC1zeW1saW5rcyBcCi0gICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3BhcnNlcl8yLjE5LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3BhcnNlcl8yLjE5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODc0MjczLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNwYXJzZXJfMi4xOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXB5Y3BhcnNlci5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3J5cHRvXzIuNi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3J5cHRvXzIuNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMTNkYjAxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNyeXB0b18yLjYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotaW5oZXJpdCBkaXN0dXRpbHMKLXJlcXVpcmUgcHl0aG9uLXB5Y3J5cHRvLmluYwotCi0jIFdlIGV4cGxpY2l0bHkgY2FsbCBkaXN0dXRpbHNfZG9faW5zdGFsbCwgc2luY2Ugd2Ugd2FudCBpdCB0byBydW4sIGJ1dAotIyAqZG9uJ3QqIHdhbnQgdGhlIGF1dG90b29scyBpbnN0YWxsIHRvIHJ1biwgc2luY2UgdGhpcyBwYWNrYWdlIGRvZXNuJ3QKLSMgcHJvdmlkZSBhICJtYWtlIGluc3RhbGwiIHRhcmdldC4KLWRvX2luc3RhbGwoKSB7Ci0gICAgICAgZGlzdHV0aWxzX2RvX2luc3RhbGwKLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWNyeXB0b2RvbWUuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3J5cHRvZG9tZS5pbmMKaW5kZXggMzFkMTM2OC4uNjNiNGE0YSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3J5cHRvZG9tZS5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3J5cHRvZG9tZS5pbmMKQEAgLTIxLDcgKzIxLDcgQEAKIAogUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgogCi1GSUxFU18ke1BOfS10ZXN0cyArPSAiIFwKK0ZJTEVTXyR7UE59LXRlc3RzID0gIiBcCiAgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vQ3J5cHRvL1NlbGZUZXN0LyBcCiAgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vQ3J5cHRvL1NlbGZUZXN0L19fcHljYWNoZV9fLyBcCiAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcnlwdG9kb21lXzMuOS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3J5cHRvZG9tZV8zLjkuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzc3MDFlYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljcnlwdG9kb21lXzMuOS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1weWNyeXB0b2RvbWUuaW5jCi1pbmhlcml0IHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWN1cmwuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3VybC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFjOWEzNzAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3VybC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIkEgUHl0aG9uIEludGVyZmFjZSBUbyBUaGUgY1VSTCBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiXAotUHljVVJMIGlzIGEgUHl0aG9uIGludGVyZmFjZSB0byBsaWJjdXJsLCB0aGUgbXVsdGlwcm90b2NvbCBmaWxlIFwKLXRyYW5zZmVyIGxpYnJhcnkuIFNpbWlsYXJseSB0byB0aGUgdXJsbGliIFB5dGhvbiBtb2R1bGUsIFB5Y1VSTCBjYW4gXAotYmUgdXNlZCB0byBmZXRjaCBvYmplY3RzIGlkZW50aWZpZWQgYnkgYSBVUkwgZnJvbSBhIFB5dGhvbiBwcm9ncmFtIFwKLSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3B5Y3VybC5pby8iCi0KLUxJQ0VOU0UgPSAiTEdQTHYyIHwgTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAotICAgIGZpbGU6Ly9DT1BZSU5HLUxHUEw7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICBmaWxlOi8vQ09QWUlORy1NSVQ7bWQ1PTJkZjc2N2VkMzVkOGVhODNkZTRhOTNmZWI1NWU3ODE1IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImYwZWQ0YzgwNWU4YmVjNzM0OTkwZTJlMGVlNzg1NjhlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZmMDgzMzBjNWNmNzlmYThlZjY4Yjk5MTJiOTkwMWRiN2ZmZDM0YjYzZTIyNWRjZTc0ZGI1NmJiMjFkZWRhOGUiCi0KLWluaGVyaXQgcHlwaQotCi1QWVBJX1BBQ0tBR0UgPSAicHljdXJsIgotCi1ERVBFTkRTID0gIlwKLSAgICBjdXJsIFwKLSAgICAke1BZVEhPTl9QTn1cCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljdXJsXzcuNDMuMC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Y3VybF83LjQzLjAuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2FiMjU5Mi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHljdXJsXzcuNDMuMC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXB5Y3VybC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWRidXMuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZGJ1cy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3NzNiN2YuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZGJ1cy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJQeXRob25pYyBEQnVzIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B5ZGJ1cy8iCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjNmFiZDQ0ODYyMzIyNjc5YmQ0ZTkwN2JlYmMzZTBkMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MjA3MTYyZWZmNTQyMjM4MjJjMTg1ZGEwNmMxYmE4YTM0MTM3YTk2MDJmM2RhNWE1MjhlZWRmM2Y3OGQwZjJjIgotCi1TID0gIiR7V09SS0RJUn0vcHlkYnVzLSR7UFZ9IgotCi1SREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tcHlnb2JqZWN0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZGJ1c18wLjYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWRidXNfMC42LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3MjJhODAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZGJ1c18wLjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcHlkYnVzLmluYwotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWVsZnRvb2xzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWVsZnRvb2xzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q0Zjc2My4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHllbGZ0b29scy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJweWVsZnRvb2xzIGlzIGEgcHVyZS1QeXRob24gbGlicmFyeSBmb3IgcGFyc2luZyBhbmQgYW5hbHl6aW5nIEVMRiBmaWxlcyBhbmQgRFdBUkYgZGVidWdnaW5nIGluZm9ybWF0aW9uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2VsaWJlbi9weWVsZnRvb2xzIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIlBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NWNlMmEyYjA3ZmNhMzI2YmM3YzE0NmQxMDEwNWNjZmMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjNTYyOWI5YTVkMTljODIxMDdhOTQ2Y2NlNTJlZWVjMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4OWM2ZGE2ZjU2MjgwYzM3YTVmZjMzNDY4NTkxYmE5YTEyNGUxN2Q3MWZlNDJkZTk3MTgxOGNiZmY0NmMxYjI0IgotCi1QWVBJX1BBQ0tBR0UgPSAicHllbGZ0b29scyIKLQotaW5oZXJpdCBweXBpCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZWxmdG9vbHNfMC4yNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWVsZnRvb2xzXzAuMjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNDIwMjUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZWxmdG9vbHNfMC4yNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weWVsZnRvb2xzLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZXhwZWN0LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWV4cGVjdC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1ZDk1ODguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZXhwZWN0LmluYworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGV4cGVjdGF0b24gbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIk1pbmltYWwgYnV0IHZlcnkgZmxleGlibGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGV4cGVjdCBwYXR0ZXJuIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1IT01FUEFHRSA9ICIgaHR0cHM6Ly9iaXRidWNrZXQub3JnL2R3dC9weWV4cGVjdCIKLUxJQ0VOU0UgPSAiSVNDIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLm1kO21kNT01MDBiODg0ZTlkY2Q1ZjY3N2E1M2NiYmVlOGFjZTkzOSIKLQotaW5oZXJpdCBweXBpCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkYzc0NDI4OTg1ODAwMTkyNWM3NWQyMWUyNmYxMjYwZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiZmY0NjU0YjExM2RhYzZjMjIzMWU0ODZlMTFkY2IyMzI4MWRkYzA3NDJhNTQwNDQ2NzMwM2ZlNzYzODgyOWVmIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZXhwZWN0XzEuMC4xOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWV4cGVjdF8xLjAuMTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyNmJlYjcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZXhwZWN0XzEuMC4xOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weWV4cGVjdC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWZpcm1hdGEuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZmlybWF0YS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJhNTM1NzQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZmlybWF0YS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIkEgUHl0aG9uIGludGVyZmFjZSBmb3IgdGhlIEZpcm1hdGEgcHJvdG9jb2wiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTg0ZGRjZWY0MzBiN2M0NGNhYTIyYjJmZjRiMzdhM2RmIgotUFlQSV9QQUNLQUdFID0gInB5RmlybWF0YSIKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgICR7UFlUSE9OX1BOfS1weXNlcmlhbCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxNTk2NzNjZmI1NmM3MmNlYWZjMzBmZTkxZWVkZDg0NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjYzE4MGQxYjMwYzg1YTJiYmNhNjJjMTVmZWYxYjg3MWRiMDQ4Y2RjZmE4MDk1OTk2ODM1NmQ5N2JkM2ZmMDhlIgotCi1pbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWZpcm1hdGFfMS4xLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmaXJtYXRhXzEuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNzdlMGYzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWZpcm1hdGFfMS4xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHlmaXJtYXRhLmluYwotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmbGFrZXNfMi4xLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlmbGFrZXNfMi4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjMDNmMzkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5Zmxha2VzXzIuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotU1VNTUFSWSA9ICJwYXNzaXZlIGNoZWNrZXIgb2YgUHl0aG9uIHByb2dyYW1zIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2RyZWFtaG9zdC9jbGlmZiIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5yc3Q7bWQ1PTUxMjczMTUxMTdhODU2MWExNTA0MzQzZDU5NjIwNjQ3IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTBmNzFhMTU3MjRlNTUzYzQ2ZTAzYmE1ZWQ1NjcwM2MiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDk3NjgzNTg4NmY4YzViMzFkNDc5NzBlZDY4OTk0NGEwMjYyYjVmM2FmYTAwYTVhN2I0ZGM4MWU1NDQ5ZjhhMiIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LXByZXR0eXRhYmxlIFwKLSAgICAke1BZVEhPTl9QTn0tY21kMiBcCi0gICAgJHtQWVRIT05fUE59LXB5cGFyc2luZyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZmxhbWUuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZmxhbWUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkOGQ4MzQ5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWZsYW1lLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiUHlmbGFtZTogQSBQdHJhY2luZyBQcm9maWxlciBGb3IgUHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3ViZXIvcHlmbGFtZSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtTfS9MSUNFTlNFO21kNT0yZWU0MTExMmE0NGZlNzAxNGRjZTMzZTI2NDY4YmE5MyIKLURFUEVORFMgPSAicHl0aG9uIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdWJlci9weWZsYW1lLmdpdDtwcm90b2NvbD1odHRwcztub2JyYW5jaD0xIgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzCi0KLUNPTVBBVElCTEVfSE9TVF9saWJjLW11c2xfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCi1DT01QQVRJQkxFX0hPU1RfbWlwc2FyY2hfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCi1DT01QQVRJQkxFX0hPU1RfYWFyY2g2NF9jbGFzcy10YXJnZXQgPSAibnVsbCIKLUNPTVBBVElCTEVfSE9TVF9wb3dlcnBjX2NsYXNzLXRhcmdldCA9ICJudWxsIgotQ09NUEFUSUJMRV9IT1NUX3Jpc2N2NjRfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCi1DT01QQVRJQkxFX0hPU1RfcmlzY3YzMl9jbGFzcy10YXJnZXQgPSAibnVsbCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWZsYW1lXzEuNi43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZmxhbWVfMS42LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNiMDhmMzAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5ZmxhbWVfMS42LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXB5ZmxhbWUuaW5jCi0KLSMgdjEuNi43Ci1TUkNSRVYgPSAiYzE1MWQyZjM0NzM3ZjI4YTFmNTI2NmEwMDNiMmIwNzIwYmJkOWY5NiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdwZ21lXzAuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWdwZ21lXzAuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTRlOTY3ZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlncGdtZV8wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIkEgUHl0aG9uIG1vZHVsZSBmb3Igd29ya2luZyB3aXRoIE9wZW5QR1AgbWVzc2FnZXMiCi1ERVNDUklQVElPTiA9ICJQeUdQR01FIGlzIGEgUHl0aG9uIG1vZHVsZSB0aGF0IGxldHMgeW91IHNpZ24sIHZlcmlmeSwgXAotICAgICAgICAgICAgICAgZW5jcnlwdCBhbmQgZGVjcnlwdCBtZXNzYWdlcyB1c2luZyB0aGUgT3BlblBHUCBmb3JtYXQuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9sYXVuY2hwYWQubmV0L3B5Z3BnbWUiCi0KLUxJQ0VOU0UgPSAiTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PTY1MTdiZGM4ZjI0MTZmMjdhYjcyNWQ0NzAyZjdhYWMzIgotCi1TUkNfVVJJID0gImZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1yZWZsZWN0LTIuMS1yZXBvcnRpbmctZm9yLWtleS1pbXBvcnRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItcGFzc3BocmFzZV9jYi1pcy1kZXByZWNhdGVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtaGFuZGxlLWdlbmVyaWMtZXJyb3Itd2hlbi1uby1wYXNzcGhyYXNlLWNhbGxiYWNrLXByZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkMzgzNTVhZjczZjAzNTJjZGUzZDQxMGIyNWYzNGZkMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZmQ4ODdjNDA3MDE1Mjk2YThmZDNmNGI4NjdmZTBmY2NhMzE3OWRlOTdjY2RlOTA0NDk4NTNhM2RmYjgwMmUxIgotCi1ERVBFTkRTICs9ICJncGdtZSIKLVJERVBFTkRTXyR7UE59ICs9ICJnbnVwZyIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMgcHRlc3QKLQotZG9faW5zdGFsbF9wdGVzdCgpewotICAgIGluc3RhbGwgJHtTfS90ZXN0X2FsbC5weSAke0R9JHtQVEVTVF9QQVRIfQotICAgIGNwIC1yICR7U30vdGVzdHMgJHtEfSR7UFRFU1RfUEFUSH0KLX0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWhhbWNyZXN0XzEuOS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5aGFtY3Jlc3RfMS45LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkYmI3OWEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5aGFtY3Jlc3RfMS45LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1TVU1NQVJZID0gIkhhbWNyZXN0IGZyYW1ld29yayBmb3IgbWF0Y2hlciBvYmplY3RzIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZjZkZjEzMThjNjA3MWRkMTcwN2Y1ZTNiNmMxMWYyNGYiCi0KLVBZUElfUEFDS0FHRSA9ICJQeUhhbWNyZXN0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGI4MzNhM2ZhMzAxOTc0NTVkZjc5NDI0ZjMwYzhjM2YiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGZmYWEwYTUzZGE1N2U4OWRlMTRjZWQ3MTg1YWM3NDYyMjdhODg5NGRiZDVhM2M3MThiZjA1ZGRiZDFkNTZjZCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlmYWNlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlmYWNlLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmUzOThmYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlpZmFjZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1TVU1NQVJZID0gIlB5aWZhY2UgaXMgYSBwYWNrYWdlIHRoYXQgZXhwb3NlcyB0aGUgbmV0d29yayBpbnRlcmZhY2VzIG9mIHRoZSBvcGVyYXRpbmcgc3lzdGVtIGluIGEgZWFzeSB0byB1c2UgYW5kIHRyYW5zcGFyZW50IHdheSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9weWlmYWNlLyIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NGZlODY5ZWU5ODdhMzQwMTk4ZmIwZDU0YzU1YzQ3ZjEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiMDY2YWE5ODQ2NTY3NDI3MzgxMjdjOWM3NTQzNmFiNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlMjMxZTU3MzVkMzI5YzViMmQ0ZmM4ODU0ZjA2OWZkYWE1NDM2ZDNlZjkxZWQ2NGVlNDllNDFlM2Y1ZThhM2Y1IgotCi1pbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlmYWNlXzAuMC4xMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlmYWNlXzAuMC4xMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODU0Y2IzMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlpZmFjZV8wLjAuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHlpZmFjZS5pbmMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlpbm90aWZ5LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlub3RpZnkuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMWFiZGI4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWlub3RpZnkuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiUHl0aG9uIHB5aW5vdGlmeTogTGludXggZmlsZXN5c3RlbSBldmVudHMgbW9uaXRvcmluZyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YWIxNzNjYWRlNzk2NWI0MTE1Mjg0NjQ1ODlhMDgzODIiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0gICAgJHtQWVRIT05fUE59LWlvIFwKLSAgICAke1BZVEhPTl9QTn0tbWlzYyBcCi0gICAgJHtQWVRIT05fUE59LXNoZWxsIFwKLSAgICAke1BZVEhPTl9QTn0tc210cGQgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGU1ODBmYTFmZjM5NzFmOTRhNmY4MTY3MmI3NmM0MDYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWM5OThhNWQ3NjA2Y2E4MzUwNjVjZGFiYzAxM2FlNmM2NmViOWVhNzZhMDBhMWUzYmM2ZTBjZmUyYjRmNzFmNCIKLQotaW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlpbm90aWZ5XzAuOS42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5aW5vdGlmeV8wLjkuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGM5YTJjNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlpbm90aWZ5XzAuOS42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXB5aW5vdGlmeS5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlqa3MuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5amtzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWEwNjZmNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlqa3MuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJQdXJlLVB5dGhvbiBKYXZhIEtleXN0b3JlIChKS1MpIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJQeUpLUyBlbmFibGVzIFB5dGhvbiBwcm9qZWN0cyB0byBsb2FkIGFuZCBtYW5pcHVsYXRlXAotIEphdmEgS2V5U3RvcmUgKEpLUykgZGF0YSB3aXRob3V0IGEgSlZNIGRlcGVuZGVuY3kuIFB5SktTIHN1cHBvcnRzIEpLUyxcCi0gSkNFS1MsIEJLUyBhbmQgVUJFUiAoQm91bmN5Q2FzdGxlKSBrZXlzdG9yZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20va3VydGJyb3NlL3B5amtzIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05Njk0ZDZjYzcyNGNhZjdmNzM4NmJlODhhNGE4MTk1OCIKLQotU1JDX1VSSVttZDVzdW1dID0gImI2ZThmM2I5MWJlMzU1ZDE1ZTNiYTk5ZGUyY2NjZjliIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljZTViNDAyODliY2RmZmNkNmE4ZTcxMThiMzMzYmE4YmEyZWM0YzllYmM1ZTMyNDg4NWNjOGE2OTc2NzAxMWEiCi0KLWluaGVyaXQgcHlwaQotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgJHtQWVRIT05fUE59LWphdmFvYmotcHkzIFwKLSAgICAke1BZVEhPTl9QTn0tcHlhc24xIFwKLSAgICAke1BZVEhPTl9QTn0tcHlhc24xLW1vZHVsZXMgXAotICAgICR7UFlUSE9OX1BOfS1weWNyeXB0b2RvbWUgXAotICAgICR7UFlUSE9OX1BOfS10d29maXNoXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlqa3NfMTkuMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5amtzXzE5LjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2U5OWYyOC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlqa3NfMTkuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1weWprcy5pbmMKLWluaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5and0LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWp3dC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliODkzODUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5and0LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiSlNPTiBXZWIgVG9rZW4gaW1wbGVtZW50YXRpb24gaW4gUHl0aG9uIgotU1VNTUFSWSA9ICJKU09OIFdlYiBUb2tlbiBpbXBsZW1lbnRhdGlvbiBpbiBQeXRob24iCi1ERVNDUklQVElPTiA9ICJBIFB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBKU09OIFdlYiBUb2tlbiBkcmFmdCAzMi5cCi0gT3JpZ2luYWwgaW1wbGVtZW50YXRpb24gd2FzIHdyaXR0ZW4gYnkgaHR0cHM6Ly9naXRodWIuY29tL3Byb2dyaXVtIgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vanBhZGlsbGEvcHlqd3QiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY4NjI2NzA1YTdiNTEzY2E4ZDVmNDRhM2UyMDBlZDBjIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTQ3MTJmOTgwYzAwODY5NmUxM2UwOTUwNDEyMGIyYTAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGQ1OWE5NzZmYjc3M2YzZTZhMzljODU2MzYzNTdjNGYwZTI0MjcwNzM5NGNhZGFkZDk4MTRmNWNiYWEyMGU5NiIKLQotUFlQSV9QQUNLQUdFID0gIlB5SldUIgotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1jcnlwdG9ncmFwaHkiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWp3dF8xLjcuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWp3dF8xLjcuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBhNzdiNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlqd3RfMS43LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXB5and0LmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlsaW50LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWxpbnQuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTg1Yjk4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weWxpbnQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotU1VNTUFSWT0iUHlsaW50IGlzIGEgUHl0aG9uIHNvdXJjZSBjb2RlIGFuYWx5emVyIgotSE9NRVBBR0U9ICJodHRwOi8vd3d3LnB5bGludC5vcmcvIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMmViNWYzY2I4ZmU1NjdlYWY1NDIwZGQ0MTUwMTIyMDIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzc3MzExODU5ZTBjMmQ3OTMyMDk1ZjMwZDJiMWJmZGM0YjZmZTExMWY1MzQ0NTBiYTcyN2E1MmVhZTMzMGVmMiIKLQotaW5oZXJpdCBweXBpCi0KLURFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1weXRlc3QtcnVubmVyLW5hdGl2ZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKXsKLSAgICBybSAke0R9JHtiaW5kaXJ9L3B5bGludAotICAgIGNhdCA+PiAke0R9JHtiaW5kaXJ9L3B5bGludCA8PEVPRgotIyEvdXNyL2Jpbi9lbnYgJHtQWVRIT05fUE59Ci1mcm9tIHB5bGludCBpbXBvcnQgcnVuX3B5bGludAotcnVuX3B5bGludCgpCi1FT0YKLSAgICBjaG1vZCA3NTUgJHtEfSR7YmluZGlyfS9weWxpbnQKLSAgICBzZWQgLWkgLWUgJ3M6XiMhL3Vzci9iaW4vcHl0aG9uOiMhL3Vzci9iaW4vZW52XCAke1BZVEhPTl9QTn06ZycgJHtEfS8ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9weWxpbnQvdGVzdC9kYXRhL2FzY3JpcHQKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgotRklMRVNfJHtQTn0tdGVzdHMrPSAiIFwKLSAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9weWxpbnQvdGVzdC8gXAotICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3B5bGludC90ZXN0dXRpbHMucHkgXAotIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWFzdHJvaWQgXAotICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1pc29ydCBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAotICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWpzb24gXAotICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1wa2d1dGlsIFwKLSAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tZGlmZmxpYiBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW5ldHNlcnZlciBcCi0gICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlsaW50XzEuOC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bGludF8xLjguMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2I1MWQzZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlsaW50XzEuOC4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMgcHl0aG9uLWRpcgotcmVxdWlyZSBweXRob24tcHlsaW50LmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bWlzcC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltaXNwLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmM0NzQ5Mi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltaXNwLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlB5dGhvbiBBUEkgZm9yIE1JU1AiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vTUlTUC9QeU1JU1AiCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWEzNjM5Y2Y1NzgwZjcxYjEyNWQzZTlkMWRjMTI3YzIwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTcxODQ3ODUzNDBlMjU0NjllNGE4MGZmOWRkY2UwOWUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTk0ZWEwYTllMTUwMDUyMjMyNDI1MDA5ZWFjNmRkMTA0YTgwZjQ5NGQwZTI3M2NjNDhkZDExNGQ3ZWE4NDgyYiIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWRhdGV1dGlsIFwKLSAgICAke1BZVEhPTl9QTn0tanNvbiBcCi0gICAgJHtQWVRIT05fUE59LWpzb25zY2hlbWEgXAotICAgICR7UFlUSE9OX1BOfS1yZXF1ZXN0cyBcCi0gICAgJHtQWVRIT05fUE59LXNpeCBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltaXNwXzIuNC4xMTkuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1pc3BfMi40LjExOS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjFmYmU5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1pc3BfMi40LjExOS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHltaXNwLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bW9uZ28uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bW9uZ28uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYzc4YjEwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1vbmdvLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGRyaXZlciBmb3IgTW9uZ29EQiA8aHR0cDovL3d3dy5tb25nb2RiLm9yZz4iCi1ERVNDUklQVElPTiA9ICJcCi1UaGUgUHlNb25nbyBkaXN0cmlidXRpb24gY29udGFpbnMgdG9vbHMgZm9yIGludGVyYWN0aW5nIHdpdGggTW9uZ29EQiBcCi1kYXRhYmFzZSBmcm9tIFB5dGhvbi4gVGhlIGJzb24gcGFja2FnZSBpcyBhbiBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgQlNPTiBcCi1mb3JtYXQgZm9yIFB5dGhvbi4gVGhlIHB5bW9uZ28gcGFja2FnZSBpcyBhIG5hdGl2ZSBQeXRob24gZHJpdmVyIGZvciBcCi1Nb25nb0RCLiBUaGUgZ3JpZGZzIHBhY2thZ2UgaXMgYSBncmlkZnMgaW1wbGVtZW50YXRpb24gb24gdG9wIG9mIHB5bW9uZ28uIgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vbW9uZ29kYi9tb25nby1weXRob24tZHJpdmVyIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODZkM2YzYTk1YzMyNGM5NDc5YmQ4OTg2OTY4ZjQzMjciCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmYjk4ZDg5NmYwZWIxNGQ5YjRmZTliYWFjMjRkNzcyYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNDM4NzlmZTQyN2VhNmFhNmU4NGRhZTlmYmRjNWFhMTQ0MjhhNGNmZTYxM2ZlMGZlZTJjYzAwNGJmM2YzMDdjIgotCi1QQUNLQUdFUyA9KyAiJHtQWVRIT05fUE59LWJzb24iCi0KLUZJTEVTXyR7UFlUSE9OX1BOfS1ic29uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2Jzb24vKiIKLQotUkRFUEVORFNfJHtQWVRIT05fUE59LWJzb24gKz0gIiBcCi0gICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCi0gICAgICR7UFlUSE9OX1BOfS1qc29uIFwKLSAgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCi0gICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKLSAgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0iCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1ic29uIFwKLSAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1vbmdvXzMuMTAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW1vbmdvXzMuMTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjE3NzhiMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHltb25nb18zLjEwLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weW1vbmdvLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bXlzcWwuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bXlzcWwuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YzdmNDU1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW15c3FsLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBwdXJlLVB5dGhvbiBNeVNRTCBjbGllbnQgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIiBcCi0gIFRoaXMgcGFja2FnZSBjb250YWlucyBhIHB1cmUtUHl0aG9uIE15U1FMIGNsaWVudCBsaWJyYXJ5LCBiYXNlZCBvbiBQRVAgMjQ5IFwKLSAgTW9zdCBwdWJsaWMgQVBJcyBhcmUgY29tcGF0aWJsZSB3aXRoIG15c3FsY2xpZW50IGFuZCBNeVNRTGRiLiBcCi0gICIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9weW15c3FsLnJlYWR0aGVkb2NzLmlvIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01MjgxNzVjODQxNjNiYjgwMGQyM2FkODM1YzdmYTBmYyIKLQotU1JDX1VSSVttZDVzdW1dID0gImU1ZDkxODNjYzBhNzc1YWMyOWY5ZTAzNjVjY2E2NTU2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ4YzA1OWRjZDgxZGVkYjg1YTlmMDM0ZDVlMjJkY2I0NDQyYzBiMjAxOTA4YmVkZTk5ZTMwNmQ2NWVhN2M4ZTciCi0KLWluaGVyaXQgcHlwaQotCi1QWVBJX1BBQ0tBR0UgPSAiUHlNeVNRTCIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1jcnlwdG9ncmFwaHkiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlteXNxbF8wLjkuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW15c3FsXzAuOS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyN2QwOTdlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW15c3FsXzAuOS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXB5bXlzcWwuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHluZXRsaW51eC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHluZXRsaW51eC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3NTVjMGEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bmV0bGludXguaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotU1VNTUFSWSA9ICJMaW51eCBuZXR3b3JrIGNvbmZpZ3VyYXRpb24gbGlicmFyeSBmb3IgUHl0aG9uIgotREVTQ1JJUFRJT04gPSAiVGhpcyBsaWJyYXJ5IGNvbnRhaW5zIFB5dGhvbiBiaW5kaW5ncyB0byBpb2N0bCBjYWxscyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vcmxpc2Fnb3IvcHluZXRsaW51eCIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTc0ZTE4NjE3MzZlZTk1OTgyNGZlNzU0MjMyM2MxMmU5IgotCi1pbmhlcml0IHB5cGkKLQotU1JDX1VSSVttZDVzdW1dID0gIjMzMzZlNWQ0YTQ3OGFjY2E0ZTM1YmYzMTI1YjRmODgzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRhZDA4Mjk4YzlmNWJhMTVhMTFjZGRjNjM5YmE4Nzc4Y2FiZGZjNDAyYjUxMDY2ZDllMGEzMjVlNWE1YjM5MWMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHluZXRsaW51eF8xLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHluZXRsaW51eF8xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0NWFkNmEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5bmV0bGludXhfMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXB5bmV0bGludXguaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlvcGVuc3NsLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW9wZW5zc2wuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNmE0MDA1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW9wZW5zc2wuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJTaW1wbGUgUHl0aG9uIHdyYXBwZXIgYXJvdW5kIHRoZSBPcGVuU1NMIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwczovL3B5b3BlbnNzbC5vcmcvIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCi0KLURFUEVORFMgKz0gIm9wZW5zc2wgJHtQWVRIT05fUE59LWNyeXB0b2dyYXBoeSIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ5ODA0ZmVkYmQxZWIwYzdkOTI0MzM5N2IxZmJmOTcyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlhMjQ0OTRiMjYwMmFhZjQwMmJlNWM5ZTMwYTBiODJkNGE1YzY3NTI4ZmU4ZmI0NzVlM2YzYmMwMGRkNjk1MDciCi0KLVBZUElfUEFDS0FHRSA9ICJweU9wZW5TU0wiCi0KLVBBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKLUZJTEVTXyR7UE59LXRlc3RzID0gIiR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvT3BlblNTTC90ZXN0IgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tY3J5cHRvZ3JhcGh5IFwKLSAgICAke1BZVEhPTl9QTn0tc2l4IFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSIKLVJERVBFTkRTXyR7UE59LXRlc3RzID0gIiR7UE59IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlvcGVuc3NsXzE5LjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW9wZW5zc2xfMTkuMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2Q1MTQ2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weW9wZW5zc2xfMTkuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1weW9wZW5zc2wuaW5jCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGFyc2luZy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwYXJzaW5nLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI5OTI1Zi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwYXJzaW5nLmluYworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIHBhcnNpbmcgbW9kdWxlIgotSE9NRVBBR0UgPSAiaHR0cDovL3B5cGFyc2luZy53aWtpc3BhY2VzLmNvbS8iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY1N2E1NjYyMzM4ODg1MTNlMWYwN2JhMTNlMmY0N2YxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjk3MzNlYThjYmVlMDI5MWFhZDEyMWM2OWM2ZTUxYTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGM4MzA1ODJhODRmYjAyMjQwMGI4NTQyOTc5MWJjNTUxZjFmNDg3MWMzM2YyM2U0NGYzNTMxMTllOTJmOTY5ZiIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCi0gICAgJHtQWVRIT05fUE59LWRlYnVnZ2VyIFwKLSAgICAke1BZVEhPTl9QTn0tanNvbiBcCi0gICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCi0gICAgJHtQWVRIT05fUE59LXBwcmludCBcCi0gICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBhcnNpbmdfMi40LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwYXJzaW5nXzIuNC42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDIxN2YzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBhcnNpbmdfMi40LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHlwYXJzaW5nLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGVyY2xpcC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwZXJjbGlwLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODVhNDMxMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwZXJjbGlwLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkEgY3Jvc3MtcGxhdGZvcm0gY2xpcGJvYXJkIG1vZHVsZSBmb3IgUHl0aG9uLiAob25seSBoYW5kbGVzIHBsYWluIHRleHQgZm9yIG5vdykiCi1MSUNFTlNFID0gIkJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT1hNDI4MzU2YWRhNzczN2I0MTZlYzRiNjNkYzY1ZDU4MSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjZiYmI4NTk4NTc5Y2MzZWU1MDU1NGI0YzU5ZDBjZmFlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk3OTMyNTQ2OGNjZjY4MjEwNGQ1ZGNhZjc1M2Y4Njk4NjgxMDA2MzEzMDFkM2U3MmY0N2JhYmRlYTU3MDBkMWMiCi0KLWluaGVyaXQgcHlwaQotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGVyY2xpcF8xLjcuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBlcmNsaXBfMS43LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjOWZjYmQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGVyY2xpcF8xLjcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weXBlcmNsaXAuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1jb250ZXh0bGliIFwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwZXJmLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBlcmYuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZTYzMDRiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBlcmYuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHRvb2xraXQgdG8gd3JpdGUsIHJ1biBhbmQgYW5hbHl6ZSBiZW5jaG1hcmtzIgotREVTQ1JJUFRJT04gPSAiIFwKLVRoZSBQeXRob24gcHlwZXJmIG1vZHVsZSBpcyBhIHRvb2xraXQgdG8gd3JpdGUsIHJ1biBhbmQgYW5hbHl6ZSBiZW5jaG1hcmtzLiBcCi1GZWF0dXJlczogXAotICAgICogU2ltcGxlIEFQSSB0byBydW4gcmVsaWFibGUgYmVuY2htYXJrcyBcCi0gICAgKiBBdXRvbWF0aWNhbGx5IGNhbGlicmF0ZSBhIGJlbmNobWFyayBmb3IgYSB0aW1lIGJ1ZGdldC4gXAotICAgICogU3Bhd24gbXVsdGlwbGUgd29ya2VyIHByb2Nlc3Nlcy4gXAotICAgICogQ29tcHV0ZSB0aGUgbWVhbiBhbmQgc3RhbmRhcmQgZGV2aWF0aW9uLiBcCi0gICAgKiBEZXRlY3QgaWYgYSBiZW5jaG1hcmsgcmVzdWx0IHNlZW1zIHVuc3RhYmxlLiBcCi0gICAgKiBKU09OIGZvcm1hdCB0byBzdG9yZSBiZW5jaG1hcmsgcmVzdWx0cy4gXAotICAgICogU3VwcG9ydCBtdWx0aXBsZSB1bml0czogc2Vjb25kcywgYnl0ZXMgYW5kIGludGVnZXIuIFwKLSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzhiYzJlNmU4N2M4YzYxMjcyOTM3Yjg3OWU2ZGMyZjgiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlMzBiNjdiNjJhNGUzMGU0NTA0MzUyZDA3NzhjNjIyYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwZDIxNGFhNjVlMDg1ZDNlNDEwOGEzNjE1MmNiMTJmN2NkMGY0ZTdmZGE5M2I1MTM0YjQzYTk2ODdjOTc1Nzg2IgotCi1pbmhlcml0IHB5cGkKLQotUFlQSV9QQUNLQUdFID0gInB5cGVyZiIKLQotREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXNpeC1uYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwZXJmXzEuNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cGVyZl8xLjcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTlkNWM3NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwZXJmXzEuNy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXB5cGVyZi5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1zdGF0aXN0aWNzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cmV4LW5hdGl2ZV8wLjkuOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJleC1uYXRpdmVfMC45LjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4ZWYxYWEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cmV4LW5hdGl2ZV8wLjkuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcHlyZXhfJHtQVn0uYmIKLWluaGVyaXQgbmF0aXZlIHB5dGhvbm5hdGl2ZQotREVQRU5EUyA9ICJweXRob24tbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gPSAiIgotUFIgPSAicjMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyZXhfMC45LjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyZXhfMC45LjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0ZGQyZTYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cmV4XzAuOS45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJMYW5ndWFnZSBmb3Igd3JpdGluZyBQeXRob24gZXh0ZW5zaW9uIG1vZHVsZXMiCi1ERVNDUklQVElPTiA9ICJQeXJleCBpcyBhIGxhbmd1YWdlIHNwZWNpYWxseSBkZXNpZ25lZCBmb3Igd3JpdGluZyBQeXRob24gZXh0ZW5zaW9uIG1vZHVsZXMuIFwKLUl0J3MgZGVzaWduZWQgdG8gYnJpZGdlIHRoZSBnYXAgYmV0d2VlbiB0aGUgbmljZSwgaGlnaC1sZXZlbCwgZWFzeS10by11c2Ugd29ybGQgb2YgUHl0aG9uIFwKLWFuZCB0aGUgbWVzc3ksIGxvdy1sZXZlbCB3b3JsZCBvZiBDLiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTc3MWQ0NzJmNTNmOTMzMDMzZjU3ZWVlZTc4MDhlNWJkIgotU1JDTkFNRSA9ICJQeXJleCIKLVBSID0gInI0IgotCi1TUkNfVVJJID0gIlwKLSAgaHR0cDovL3d3dy5jb3NjLmNhbnRlcmJ1cnkuYWMubnovZ3JlZy5ld2luZy9weXRob24vJHtTUkNOQU1FfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiBcCi0gIGZpbGU6Ly9weXJleC1maXgtb3B0aW1pemVkLW1vZGUucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTE1ZGVlNjdkMTVkNDM5Mzg0MWUyZDYwZTgzNDE5NDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWY4N2RmMDY4MzFkMGIzNDEyZWI0YmM5ZDNmYzJlZTdiZmFlMWI5MTNkN2RhOGMyM2FiMmJmNTY5OWZiNmI1MCIKLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi1pbmhlcml0IGRpc3R1dGlscwotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfSR7YmFzZV9saWJkaXJ9LyR7UFlUSE9OX0RJUn0vc2l0ZS1wYWNrYWdlcy9QeXJleC9Db21waWxlci9MZXhpY29uLnBpY2tsZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJvdXRlMi5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyb3V0ZTIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTE0YjllLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJvdXRlMi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIkEgcHVyZSBQeXRob24gbmV0bGluayBhbmQgTGludXggbmV0d29yayBjb25maWd1cmF0aW9uIGxpYnJhcnkiCi1MSUNFTlNFID0gIkdQTHYyICYgQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuR1BMLnYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkFwYWNoZS52MjttZDU9MzQyODFlMzEyMTY1Zjg0M2EyYjdkMWYxMTRmZTY1Y2UiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzNzE2ODNiNjIzMTQyMTFiOGJjOTgwN2FjOGVmMTE0NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5NjNmY2UwN2RhMjg0MTQ1NmQzOWUzYjkzMmIwNzFmNmRlMjhkMjNkYWRmYWUwMTQwMjJkNjdhNzUyOTE2Zjk4IgotCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tcHlyb3V0ZTI6IgotCi1pbmhlcml0IHB5cGkKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCi0gICAgJHtQWVRIT05fUE59LWRpc3R1dGlscyBcCi0gICAgJHtQWVRIT05fUE59LWlvIFwKLSAgICAke1BZVEhPTl9QTn0tanNvbiBcCi0gICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAotICAgICR7UFlUSE9OX1BOfS1tdWx0aXByb2Nlc3NpbmcgXAotICAgICR7UFlUSE9OX1BOfS1waWNrbGUgXAotICAgICR7UFlUSE9OX1BOfS1wa2d1dGlsIFwKLSAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKLSAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAotICAgICR7UFlUSE9OX1BOfS11bml4YWRtaW4gXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cm91dGUyXzAuNS43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cm91dGUyXzAuNS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMjVmMWI0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXJvdXRlMl8wLjUuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcHlyb3V0ZTIuaW5jCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tc3VicHJvY2VzcyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyc2lzdGVudC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyc2lzdGVudC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFlNGYyMWEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cnNpc3RlbnQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotU1VNTUFSWSA9ICJQZXJzaXN0ZW50L0ltbXV0YWJsZS9GdW5jdGlvbmFsIGRhdGEgc3RydWN0dXJlcyBmb3IgUHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3RvYmd1L3B5cnNpc3RlbnQiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0UubWl0O21kNT1jYTU3NGYyODkxY2Y1MjhiM2U3YTJlZTU3MDMzN2U3YyIKLQotU1JDX1VSSVttZDVzdW1dID0gImRhOTQ4NmQwMGVmNWIyMTNmNDBkNWNmM2M1YmNhODJkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNkYzdiNWUzZWQ3N2JlZDYxMjcwYTQ3ZDM1NDM0YTMwNjE3YjliZWNkZjI0NzhhZjc2YWQyYzZhZGUzMDcyODAiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyc2lzdGVudF8wLjE1LjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlyc2lzdGVudF8wLjE1LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgzMmViODAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5cnNpc3RlbnRfMC4xNS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHlyc2lzdGVudC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNlcmlhbC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzZXJpYWwuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTU4MGRlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNlcmlhbC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIlNlcmlhbCBQb3J0IFN1cHBvcnQgZm9yIFB5dGhvbiIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWQ0NzZkOTQ5MjZkYjZlMDAwOGE1YjM4NjBkMWY1YzBkIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWQ2MTgzYjE1NTE5YTBhZTk2Njc1ZTljMzMzMGM2OWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmUyZDQwMWZkZWUwZWFiOTk2Y2Y3MzRlNjc3NzNhMDE0M2I5MzI3NzJjYThiNDI0NTE0NDBjZmVkOTQyYzYyNyIKLQotaW5oZXJpdCBweXBpCi0KLVBBQ0tBR0VTID0rICIke1BOfS1qYXZhICR7UE59LW9zeCAke1BOfS13aW4zMiAke1BOfS10b29scyIKLQotRklMRVNfJHtQTn0tamF2YSA9ICIgXAotICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NlcmlhbC8qamF2YSogXAotICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NlcmlhbC9fX3B5Y2FjaGVfXy8qamF2YSogXAotIgotCi1GSUxFU18ke1BOfS1vc3ggPSAiIFwKLSAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvdG9vbHMvKm9zeCogXAotICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NlcmlhbC90b29scy9fX3B5Y2FjaGVfXy8qb3N4KiBcCi0iCi0KLUZJTEVTXyR7UE59LXdpbjMyID0gIiBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsLypzZXJpYWxjbGkqIFwKLSAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvX19weWNhY2hlX18vKnNlcmlhbGNsaSogXAotICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NlcmlhbC8qd2luMzIqIFwKLSAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvX19weWNhY2hlX18vKndpbjMyKiBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsL3Rvb2xzL21pbml0ZXJtKiBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsL3Rvb2xzL19fcHljYWNoZV9fL21pbml0ZXJtKiBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsL3Rvb2xzLyp3aW5kb3dzKiBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsL3Rvb2xzL19fcHljYWNoZV9fLyp3aW5kb3dzKiBcCi0iCi0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgICAke1BZVEhPTl9QTn0tZmNudGwgXAotICAgICR7UFlUSE9OX1BOfS1pbyBcCi0gICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAotICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAotICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKLSAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAotICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzZXJpYWxfMy40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c2VyaWFsXzMuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmQ4NTJhMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzZXJpYWxfMy40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXB5c2VyaWFsLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWFyZ3BhcnNlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c21pXzAuMy40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c21pXzAuMy40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0M2FhNGI4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNtaV8wLjMuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVNVTU1BUlkgPSAiU05NUCBTTUkvTUlCIFBhcnNlciIKLURFU0NSSVBUSU9OID0gIkEgcHVyZS1QeXRob24gaW1wbGVtZW50YXRpb24gb2YgU05NUC9TTUkgTUlCIFwKLSAgcGFyc2luZyBhbmQgY29udmVyc2lvbiBsaWJyYXJ5LiBDYW4gcHJvZHVjZSBQeVNOTVAgTUlCIG1vZHVsZXMuIFwKLSIKLUhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHlzbWkiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLQotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnJzdDttZDU9YTA4OGI1YzcyYjU5ZDUxYTUzNjhhZDNiMThlMjE5YmYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxMGE5ZGQxNDBhZDUxMmVlZDlmMzczNDRkZjgzY2U5ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiZDE1YTE1MDIwYWVlODM3NmNhYjViZTI2NGMyNjMzMDgyNGE4YjgxNjRlZDAxOTViZDQwMmRkNTllNGU4ZjdjIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24tcGx5IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c25tcF80LjQuOS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNubXBfNC40LjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4ODNkZjkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c25tcF80LjQuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBwdXJlLVB5dGhvbiBTTk1QdjEvdjJjL3YzIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJTTk1QIHYxL3YyYy92MyBlbmdpbmUgYW5kIGFwcHMgd3JpdHRlbiBpbiBwdXJlLVB5dGhvbi4gXAotICBTdXBwb3J0cyBNYW5hZ2VyL0FnZW50L1Byb3h5IHJvbGVzLCBzY3JpcHRhYmxlIE1JQnMsIGFzeW5jaHJvbm91cyBcCi0gIG9wZXJhdGlvbiAoYXN5bmNpbywgdHdpc3RlZCwgYXN5bmNvcmUpIGFuZCBtdWx0aXBsZSB0cmFuc3BvcnRzLlwKLSIKLUhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvcHlzbm1wIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UucnN0O21kNT1iMTVkMjlmNTAwZjc0OGQxYzJhMTU3MDk3NjkwOTBhOCIKLQotU1JDTkFNRSA9ICJweXNubXAiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9wLyR7U1JDTkFNRX0vJHtTUkNOQU1FfS0ke1BWfS50YXIuZ3oiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZDFiNTE0OTk3MzI2YmVkMThmMWFlMTUxMGY2YjFjOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkNWQxZTU5NzgwMTI2ZTk2M2RkOTJlMjU5OTNiNzgzMjk1NzM0ZTcxYmVmMTgxZjYwMmU1MWY3MzkzMjYwNDQxIgotCi0KLVMgPSAiJHtXT1JLRElSfS8ke1NSQ05BTUV9LSR7UFZ9IgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1weWNyeXB0byBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLXB5YXNuMSBcCi0gICAgICAgICAgICAgICAgICAgcHl0aG9uLXB5c21pIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNvY2tzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNvY2tzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTgzNmU1Mi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzb2Nrcy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJBIFB5dGhvbiBTT0NLUyBjbGllbnQgbW9kdWxlIgotSE9NRVBBR0UgPSAiaHR0cDovL3B5dGhvbi1yZXF1ZXN0cy5vcmciCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFkNDU3YmNmZmI5NjYxYjQ1Zjc5OWQ0ZWZlZTcyZjE2IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODliMWE2ODY1YzYxYmFlNjdhMzI0MTc1MTc2MTJlZTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2Y4ODA0NTcxZWJlMTU5YzM4MGFjNmRlMzc2NDNiYjQ2ODU5NzA2NTVkM2JiYTI0MzUzMGQ2NTU4Yjc5OWFhMCIKLQotUFlQSV9QQUNLQUdFID0gIlB5U29ja3MiCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAotICAgICR7UFlUSE9OX1BOfS1lbWFpbCBcCi0gICAgJHtQWVRIT05fUE59LWlvIFwKLSAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKLSAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzb2Nrc18xLjcuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNvY2tzXzEuNy4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTI0ZTRjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNvY2tzXzEuNy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHlzb2Nrcy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNxbGl0ZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzcWxpdGUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODQ1NTY1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNxbGl0ZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJEQi1BUEkgMi4wIGludGVyZmFjZSBmb3IgU1FMaXRlIDMueCIKLUhPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2doYWVyaW5nL3B5c3FsaXRlIgotTElDRU5TRSA9ICJabGliIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjhhZDRmMTE1ZTA2Yzg4YmQ3MzczNzJhNDUzMzY5ZDgiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwMzNmMTdiODY0NDU3NzcxNWFlZTU1ZTg4MzJhYzlmYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxN2QzMzM1ODYzZThjZjgzOTJlZWE3MWFkZDMzZGFiM2Y5NmQwNjA2NjZmZTY4YWI3MzgyNDY5ZDMwN2Y0NDkwIgotCi1pbmhlcml0IHB5cGkKLQotREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXBpcCIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKLSAgICBzcWxpdGUzIFwKLSIKLQotRklMRVNfJHtQTn0tZG9jICs9ICIke2RhdGFkaXJ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c3FsaXRlXzIuOC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c3FsaXRlXzIuOC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTkzOGYyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXNxbGl0ZV8yLjguMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weXNxbGl0ZS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXN0YWNoZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzdGFjaGUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZGJjOTlmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXN0YWNoZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBNdXN0YWNoZSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kZWZ1bmt0L3B5c3RhY2hlIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lYjQ0MTc4MDJjNTYzODRhYWM3MWIzNDUwNTUyOGE2MCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQ4NTg4NWU2N2EwZjY0MTFkNTI1MmU2OWIyMGEzNWNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY3YmJjMjY1ZmI5NTdiNGQ2YzdjMDQyYjMzNjU2MzE3OTQ0NGFiMzEzZmI5M2E3MTk3NTkxMTFlYWJkM2I4NWEiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzdGFjaGVfMC41LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlzdGFjaGVfMC41LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0NTUwMTIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5c3RhY2hlXzAuNS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHlzdGFjaGUuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LWFzeW5jaW8uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1hc3luY2lvLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTEzMmM3NC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LWFzeW5jaW8uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAicHl0ZXN0LWFzeW5jaW8gaXMgYW4gQXBhY2hlMiBsaWNlbnNlZCBsaWJyYXJ5LCB3cml0dGVuIGluIFB5dGhvbiwgZm9yIHRlc3RpbmcgYXN5bmNpbyBjb2RlIHdpdGggcHl0ZXN0IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LWFzeW5jaW8iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUucnN0O21kNT1hZTYyMjY4ZDIwN2M3M2I2MTVmYmVmZGRhZjkxYTg4MSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjI0N2E3ZWMzMmYyNGExODUzNDEzMjdjNDJhMGY4NWJmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmYWM1MTAwZmQ3MTZjYmVjZjZlZjg5MjMzZTg1OTBhNGFkNjFkNzI5ZDE3MzJlMGE5NmI4NDE4MmRmMWRhYWYiCi0KLWluaGVyaXQgcHlwaQotCi1ERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tcHl0ZXN0LW5hdGl2ZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LWhlbHBlcnMtbmFtZXNwYWNlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtaGVscGVycy1uYW1lc3BhY2UuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMDkxYWI5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtaGVscGVycy1uYW1lc3BhY2UuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhpcyBwbHVnaW4gZG9lcyBub3QgcHJvdmlkZSBhbnkgaGVscGVycyB0byBweXRlc3QsIGl0IGRvZXMsIGhvd2V2ZXIsIHByb3ZpZGUgYSBoZWxwZXJzIG5hbWVzcGFjZSBpbiBweXRlc3Qgd2hpY2ggZW5hYmxlcyB5b3UgdG8gcmVnaXN0ZXIgaGVscGVyIGZ1bmN0aW9ucyBpbiB5b3VyIGNvbmZ0ZXN0LnB5IHRvIGJlIHVzZWQgd2l0aGluIHlvdXIgdGVzdHMgd2l0aG91dCBoYXZpbmcgdG8gaW1wb3J0IHRoZW0uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NhbHRzdGFjay9weXRlc3QtaGVscGVycy1uYW1lc3BhY2UiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT1jYzk5NTA4YzQzZDlkMTRmZDUxYzdmYWM2MjJmZmQyMyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA0ZWMxZDg3NTBmOWIxNTRlNzgyYTQ3Y2Y4YjMwNzM2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRlZmYyM2ExOWY5MjQxMGMwMTY2ZjZkZmZiZmE4OTAxZDNlMTRhODBlOTdkNzBjZDA4NDI4YjZkNTk3NzcxY2UiCi0KLWluaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1oZWxwZXJzLW5hbWVzcGFjZV8yMDE5LjEuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtaGVscGVycy1uYW1lc3BhY2VfMjAxOS4xLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNmVlODUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1oZWxwZXJzLW5hbWVzcGFjZV8yMDE5LjEuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcHl0ZXN0LWhlbHBlcnMtbmFtZXNwYWNlLmluYwotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgcHl0aG9uLXB5dGVzdCBcCi0gICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1ydW5uZXIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC1ydW5uZXIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYjQ0M2IzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtcnVubmVyLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVNVTU1BUlkgPSAiSW52b2tlIHB5LnRlc3QgYXMgZGlzdHV0aWxzIGNvbW1hbmQgd2l0aCBkZXBlbmRlbmN5IHJlc29sdXRpb24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWEzM2YzOGJiZjQ3ZDQ4YzcwZmUwZDQwZTVmNzc0OThlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTVmNjZiOGU4ZTg3ZjYyYzU5NjMxYzM1YzkxOWQzMjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTZjN2U3M2VhZDdiOTNlMzg4YzVkNjE0NzcwZDJiYWU2NTI2ZWZkOTk3NzU3ZDM1NDNmZTE3YjU1N2EwOTQyYiIKLQotaW5oZXJpdCBweXBpCi0KLURFUEVORFMgKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMtc2NtLW5hdGl2ZSIKLQotUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LXB5ICR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzICR7UFlUSE9OX1BOfS1kZWJ1Z2dlciAke1BZVEhPTl9QTn0tanNvbiBcCi0gICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0taW8iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtcnVubmVyXzUuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtcnVubmVyXzUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTc2NWE3My4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXJ1bm5lcl81LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHl0ZXN0LXJ1bm5lci5pbmMKLQotIyBEZXBlbmRlbmN5IG9ubHkgZXhpc3RzIGZvciBweXRob24yCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uLWFyZ3BhcnNlIHB5dGhvbi1jb21waWxlciIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtdGVtcGRpci5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LXRlbXBkaXIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjM1NWEzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtdGVtcGRpci5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJBZGRzIHN1cHBvcnQgZm9yIGEgcHJlZGljdGFibGUgYW5kIHJlcGVhdGFibGUgdGVtcG9yYXJ5IGRpcmVjdG9yeS4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2FsdHN0YWNrL3B5dGVzdC10ZW1wZGlyIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9OTg3MmMzYTM3Y2M5YmFmNzlhNDY0Y2QxNjgyODJiZTUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3OWI5OTdkNDE4ZmI4NWMyNTI5YWI1MGNkNDMzMzY4OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlN2Q5MTgxM2E5YWE5OTFkYjg3ZGFjZGVmOGNmZDNmMTY1NzYzMmQ3MzFkNTZkMDYyMzhjNWZmYjYzYWIzNmQ4IgotCi1pbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXRlc3QtdGVtcGRpcl8yMDE5LjEwLjEyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC10ZW1wZGlyXzIwMTkuMTAuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhOWI4M2UuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC10ZW1wZGlyXzIwMTkuMTAuMTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXB5dGVzdC10ZW1wZGlyLmluYwotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgcHl0aG9uLXB5dGVzdCBcCi0gICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzUyZDY3ZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LmluYworKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLVNVTU1BUlkgPSAiU2ltcGxlIHBvd2VyZnVsIHRldGluZyB3aXRoIHB5dGhvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly9weXRlc3Qub3JnIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02NDAwNjFiOGNlZTY0YjMwOGE0ZDJmOWY1NTZjMTJmMiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjcxYThlYjJhYjVlZmI3NjUxMmQ5YTY5YmQ2NDc3MDM0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZiNTcxMjE1YjVhNzkwZjliNDFmMTlmMzUzMWM1M2E0NWNmNmJiOGVmMjk4OGJjMWZmOWFmYjM4MjcwYjI1ZmEiCi0KLVNSQ19VUklfYXBwZW5kID0gIiBmaWxlOi8vMDAwMS1zZXR1cC5weS1yZW1vdmUtdGhlLXNldHVwX3JlcXVpcmVzLWZvci1zZXR1cHRvb2xzLXNjbS5wYXRjaCBcCi0gICAgICAgICAgICAgICAgICAgIgotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1hdHRycyBcCi0gICAgJHtQWVRIT05fUE59LWRlYnVnZ2VyIFwKLSAgICAke1BZVEhPTl9QTn0tZG9jdGVzdCBcCi0gICAgJHtQWVRIT05fUE59LWpzb24gXAotICAgICR7UFlUSE9OX1BOfS1wbHVnZ3kgXAotICAgICR7UFlUSE9OX1BOfS1weSBcCi0gICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotICAgICR7UFlUSE9OX1BOfS1hdG9taWN3cml0ZXMgXAotICAgICR7UFlUSE9OX1BOfS1pbXBvcnRsaWItbWV0YWRhdGEgXAotICAgICR7UFlUSE9OX1BOfS1wYXRobGliMiBcCi0gICAgJHtQWVRIT05fUE59LXdjd2lkdGggXAotICAgICR7UFlUSE9OX1BOfS1tb3JlLWl0ZXJ0b29scyBcCi0gICAgJHtQWVRIT05fUE59LXBhY2thZ2luZyBcCi0iCi0KLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L3B5dGhvbi1weXRlc3Q6IgotCi1BTFRFUk5BVElWRV8ke1BOfSArPSAicHkudGVzdCBweXRlc3QiCi0KLU5BVElWRV9MSU5LX05BTUVbcHl0ZXN0XSA9ICIke2JpbmRpcn0vcHl0ZXN0IgotQUxURVJOQVRJVkVfVEFSR0VUW3B5dGVzdF0gPSAiJHtiaW5kaXJ9L3B5dGVzdCIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW3B5LnRlc3RdID0gIiR7YmluZGlyfS9weS50ZXN0IgotQUxURVJOQVRJVkVfVEFSR0VUW3B5LnRlc3RdID0gIiR7YmluZGlyfS9weS50ZXN0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0XzUuMy4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dGVzdF81LjMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzllNTBhYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0XzUuMy4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcHl0ZXN0LmluYwotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWFyZ3BhcnNlIFwKLSAgICAke1BZVEhPTl9QTn0tY29tcGlsZXIgXAotICAgICR7UFlUSE9OX1BOfS1mdW5jc2lncyBcCi0iCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXR6LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXR6LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjRlZGVhMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ei5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIldvcmxkIHRpbWV6b25lIGRlZmluaXRpb25zLCBtb2Rlcm4gYW5kIGhpc3RvcmljYWwiCi1IT01FUEFHRSA9ICJodHRwOi8vcHl0aG9uaG9zdGVkLm9yZy9weXR6IgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NDg3OGE5MTU3MDkyMjViY2VhYjczOWJkYzJhMThlOGQiCi0KLWluaGVyaXQgcHlwaQotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzNkODRhNDY1ZmM1NmE0ZWRkNTJjY2E4ODczYWMwZGYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjAyYzA2ZGI2Y2YwOWMxMmRkMjUxMzdlNTYzYjMxNzAwZDNiODBmY2M0YWQyM2FiYjdhMzE1ZjI3ODk4MTliZSIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKLSAgICAke1BZVEhPTl9QTn0tZG9jdGVzdCBcCi0gICAgJHtQWVRIT05fUE59LWlvIFwKLSAgICAke1BZVEhPTl9QTn0tcGlja2xlIFwKLSAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dHpfMjAxOS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dHpfMjAxOS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDc1NQppbmRleCBmMmZmYzU5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXR6XzIwMTkuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1weXR6LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dWRldi5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1ZGV2LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjgzYTc1Yy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1ZGV2LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBsaWJ1ZGV2IGJpbmRpbmciCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiY2Y0ZDlkYjdkNzcyNjIyMTQ0Y2ExYmU2YjVkOTM1M2IiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDk0YjdhMTAwMTUwMTE0NzQ4YWFhM2I3MDY2MzQ4NWRkMzYwNDU3YTcwOWJmYWFhZmU1YTk3NzM3MTAzM2YyYiIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pICIvaW1wb3J0IHB5dWRldi9kIiAke1N9L3NldHVwLnB5Ci0gICAgc2VkIC1pICJzL3N0cihweXVkZXYuX192ZXJzaW9uX18pLycke1BWfScvZyIgJHtTfS9zZXR1cC5weQotfQotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCi0gICAgJHtQWVRIT05fUE59LW1pc2MgXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotICAgIGxpYnVkZXYgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dWRldl8wLjIxLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1ZGV2XzAuMjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNlMTUwMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1ZGV2XzAuMjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcHl1ZGV2LmluYwotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgJHtQWVRIT05fUE59LWNvbnRleHRsaWIgXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKLSIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dXNiLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXVzYi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3ODNkZDQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dXNiLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLVNVTU1BUlkgPSAiUHlVU0IgcHJvdmlkZXMgVVNCIGFjY2VzcyBvbiB0aGUgUHl0aG9uIGxhbmd1YWdlIgotSE9NRVBBR0UgPSAiaHR0cDovL3B5dXNiLnNvdXJjZWZvcmdlLm5ldC8iCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTUxNjkxZWQxMWNjMmM3YWU5M2UzODNmNjBlZDQ5YjBmIgotREVQRU5EUyArPSAibGlidXNiMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg2MmI1NjQ1MmM2NDk0OGM3ODdhZDhlZjk0OTg1OTBiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRlOWI3MmNjNGE0MjA1Y2E2NGZiZjFmM2ZmZjM5YTMzNTUxMjE2NmMxNTFhZDEwM2U1NWM4MjIzYWMxNDczNjIiCi0KLWluaGVyaXQgcHlwaQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1c2JfMS4wLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl1c2JfMS4wLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk5YTc5NWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5dXNiXzEuMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXB5dXNiLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5eWFtbC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl5YW1sLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDhlYmY3My4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl5YW1sLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIHN1cHBvcnQgZm9yIFlBTUwiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnB5eWFtbC5vcmciCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTc2YjRjNjliZmNmODIzMTNiYmRjMDM5M2IwNDQzOGEiCi1ERVBFTkRTID0gImxpYnlhbWwgJHtQWVRIT05fUE59LWN5dGhvbi1uYXRpdmUgJHtQWVRIT05fUE59IgotCi1QWVBJX1BBQ0tBR0UgPSAiUHlZQU1MIgotaW5oZXJpdCBweXBpCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkN2U0NWU5MzJkNmU2NjQ5YWM1NzRhMWVkNzdiNDI2OSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjMGVlOGVjYTJjNTgyZDI5YzNjMmVjNmUyYzRmNzAzZDFiN2YxZmIxMGJjNzIzMTczNTVhNzQ2MDU3ZTczNDZjIgotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXlhbWxfNS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5eWFtbF81LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhNGM5MmQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5eWFtbF81LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXB5eWFtbC5pbmMKLWluaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5em1xLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXptcS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0NDdjMmYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5em1xLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl6bXEgcHJvdmlkZXMgWmVybyBtZXNzYWdlIHF1ZXVlIGFjY2VzcyBmb3IgdGhlIFB5dGhvbiBsYW5ndWFnZSIKLUhPTUVQQUdFID0gImh0dHA6Ly96ZXJvbXEub3JnL2JpbmRpbmdzOnB5dGhvbiIKLUxJQ0VOU0UgPSAiQlNEICYgTEdQTC0zLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkJTRDttZDU9MTFjNjU2ODBmNjM3YzNkZjdmNThiYmM4ZDEzM2U5NmUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PTEyYzU5MmZhMGJjZmZmM2ZiMDk3N2IwNjZlOWNiNjllIgotREVQRU5EUyA9ICJ6ZXJvbXEiCi0KLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L3B5dGhvbi1weXptcToiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9jbHViLXJwYXRoLW91dC5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhZWNkZmMzMjgxOTNmYmQ4MWY2ZGMyMzIyODMxOTk0MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMTk5Zjc1M2EyMzBlMjZhZWM1MjM4YjA1MThiMDM2NzgwNzA4YTRjODg3ZDQ5NDQ1MTk2ODFhOTIwYjlkZWU0IgotCi1pbmhlcml0IHB5cGkgcGtnY29uZmlnCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tbXVsdGlwcm9jZXNzaW5nIgotCi1GSUxFU18ke1BOfS1kYmcgPSsgIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3ptcS9iYWNrZW5kL2N5dGhvbi8uZGVidWciCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBlY2hvIFtnbG9iYWxdID4gJHtTfS9zZXR1cC5jZmcKLSAgICBlY2hvIHptcV9wcmVmaXggPSAke1NUQUdJTkdfRElSX0hPU1R9ID4+ICR7U30vc2V0dXAuY2ZnCi0gICAgZWNobyBoYXZlX3N5c191bl9oID0gVHJ1ZSA+PiAke1N9L3NldHVwLmNmZwotICAgIGVjaG8gc2tpcF9jaGVja196bXEgPSBUcnVlID4+ICR7U30vc2V0dXAuY2ZnCi0gICAgZWNobyBsaWJ6bXFfZXh0ZW5zaW9uID0gRmFsc2UgPj4gJHtTfS9zZXR1cC5jZmcKLSAgICBlY2hvIG5vX2xpYnptcV9leHRlbnNpb24gPSBUcnVlID4+ICR7U30vc2V0dXAuY2ZnCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl6bXFfMTcuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXB5em1xXzE3LjEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjY5MDEwNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl6bXFfMTcuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1weXptcS5pbmMKLWluaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJhdmVuLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yYXZlbi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFjNjVlMTEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJhdmVuLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiUmF2ZW4gaXMgdGhlIGxlZ2FjeSBQeXRob24gY2xpZW50IGZvciBTZW50cnkgKGdldHNlbnRyeS5jb20pIgotREVTQ1JJUFRJT04gPSAiXAotUmF2ZW4gaXMgdGhlIG9mZmljaWFsIGxlZ2FjeSBQeXRob24gY2xpZW50IGZvciBTZW50cnksIG9mZmljaWFsbHkgXAotc3VwcG9ydHMgUHl0aG9uIDIuNuKAkzIuNyAmIDMuM+KAkzMuNywgYW5kIHJ1bnMgb24gUHlQeSBhbmQgR29vZ2xlIEFwcCBFbmdpbmUuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9yYXZlbi1weXRob24iCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI5YTQ0MTRlMDhmMDU3MWQ1NTE4NDUzMWNlZmMxMzFiIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzY3NmYzMWRhZGZhNjE1MjY0NDRkZDAyNDVjNzhhMzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2ZhNmRlNmVmYTI0OTNhN2M4Mjc0NzJlOTg0Y2U5YjAyMDc5N2QwZGExNmYxZGI2NzE5N2JjYzIzYzhmYWU1NCIKLQotUFlQSV9QQUNLQUdFID0gInJhdmVuIgotaW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmRmbGliLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZGZsaWIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmE2ZDk4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZGZsaWIuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJSREZMaWIgaXMgYSBwdXJlIFB5dGhvbiBwYWNrYWdlIGZvciB3b3JraW5nIHdpdGggUkRGIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02OGMxYTNiYjY4N2JkNjNiOGU1NTUyZjNlYTI0OTg0MCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjUzNGZlMzViMTNjNTg1N2Q1M2ZhMWFjNWE0MWVjYTY3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhMWRmMTQ1NTI1NTVjNWM3NzE1ZDhjZTcxYzA4ZjQwNGM5ODhjNThhMWVjZDM4NTUyZDBkYTRmYzI2MTI4MGQiCi0KLWluaGVyaXQgcHlwaQotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0taXNvZGF0ZSBcCi0gICAgJHtQWVRIT05fUE59LXB5cGFyc2luZyBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZGZsaWJfNC4yLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmRmbGliXzQuMi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZWQwZjVmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZGZsaWJfNC4yLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcmRmbGliLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlZGlzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZWRpcy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhNjVkNzMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlZGlzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGNsaWVudCBmb3IgUmVkaXMga2V5LXZhbHVlIHN0b3JlIgotREVTQ1JJUFRJT04gPSAiVGhlIFB5dGhvbiBpbnRlcmZhY2UgdG8gdGhlIFJlZGlzIGtleS12YWx1ZSBzdG9yZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9hbmR5bWNjdXJkeS9yZWRpcy1weSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTFkOWFkNTYyOTlhYjYwYmE3YmU2NWE2MjEwMDRmMjciCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwNDgzNDhkOGNmZTBiNWQwYmJhMmY0ZDgzNTAwNWMzYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhMjJjYTk5M2NlYTI5NjJkYmI1ODhmOWYzMGQwMDE1YWM0YWZjYzQ1YmVlMjdkMzk3OGMwZGJlOWU5N2M2YzBmIgotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVkaXNfMi4xMC42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlZGlzXzIuMTAuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmMzY2E4NS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVkaXNfMi4xMC42LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcmVkaXMuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHMtb2F1dGhsaWIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzLW9hdXRobGliLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2M0ZDg1Zi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHMtb2F1dGhsaWIuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi1MSUNFTlNFID0gIklTQyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIyZDExN2E4NDlkZjEwZDA0N2VkOWI3OTI4MzhlODYzIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWViY2Q1NWYxYjFiOTI4MTk0MGI0YmMzMzAxMGUyYmEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjQyNjE2MDFhNzFmZDcyMWE4YmQ2ZDdhYTFjYzFkNmE4YTkzYjRhOWY1ZTk2NjI2ZjhlNGQ5MWU4YmVlYWE2YSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1yZXF1ZXN0cyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0cy1vYXV0aGxpYl8xLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0cy1vYXV0aGxpYl8xLjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDMxODkxNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHMtb2F1dGhsaWJfMS4zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXJlcXVlc3RzLW9hdXRobGliLmluYwotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZXF1ZXN0cy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVmZTVkYzIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlB5dGhvbiBIVFRQIGZvciBIdW1hbnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3B5dGhvbi1yZXF1ZXN0cy5vcmciCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hOGQ1YTFkMWMyZDUzMDI1ZTIyODJjNTExMDMzZjZmNyIKLQotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vcHl0aG9uLXJlcXVlc3RzOiIKLQotU1JDX1VSSVttZDVzdW1dID0gImVlMjhiZWUyZGU3NmU5MTk4ZmM0MWU0OGYzYTdkZDQ3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjExZTAwN2E4YTJhYTAzMjNmNWE5MjFlOWU2YTJkN2U0ZTY3ZDk4NzdlODU3NzNmYmE5YmE2NDE5MDI1Y2JlYjQiCi0KLWluaGVyaXQgcHlwaQotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tZW1haWwgXAotICAgICR7UFlUSE9OX1BOfS1qc29uIFwKLSAgICAke1BZVEhPTl9QTn0tbmRnLWh0dHBzY2xpZW50IFwKLSAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKLSAgICAke1BZVEhPTl9QTn0tcHlhc24xIFwKLSAgICAke1BZVEhPTl9QTn0tcHlvcGVuc3NsIFwKLSAgICAke1BZVEhPTl9QTn0tcHlzb2NrcyBcCi0gICAgJHtQWVRIT05fUE59LXVybGxpYjMgXAotICAgICR7UFlUSE9OX1BOfS1jaGFyZGV0IFwKLSAgICAke1BZVEhPTl9QTn0taWRuYSBcCi0iCi0KLUNWRV9QUk9EVUNUID0gInJlcXVlc3RzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHNfMi4yMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJlcXVlc3RzXzIuMjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGQ3YTI5Zi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmVxdWVzdHNfMi4yMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXJlcXVlc3RzLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXpsaWIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmZjMzMzOS12YWxpZGF0b3IuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJmYzMzMzktdmFsaWRhdG9yLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2RhMDgyOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmZjMzMzOS12YWxpZGF0b3IuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHB1cmUgcHl0aG9uIFJGQzMzMzkgdmFsaWRhdG9yIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL25haW1ldHRpL3JmYzMzMzktdmFsaWRhdG9yIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hMjFiMTNiNWE5OTZmMDhmN2UwYjA4OGFhMzhjZTljNiIKLQotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vcHl0aG9uLXJmYzMzMzktdmFsaWRhdG9yOiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjlkODg5OTA0MWQ4M2Y5ODE4MGJkZGQ4YjYyZWU3ZTk5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIwYTYwMGQwMWZiYjFmNzkzY2JiNmY0ZWM0ZWJiMjEwNGY0YzllODBkNzRkNWY3ODM1MGI2M2VjYzZjY2NkMDgiCi0KLVBZUElfUEFDS0FHRSA9ICJyZmMzMzM5X3ZhbGlkYXRvciIKLQotaW5oZXJpdCBweXBpCi0KLVNSQ19VUklfYXBwZW5kID0gIiBcCi0gICAgZmlsZTovLzAwMDEtc2V0dXAucHktbW92ZS1weXRlc3QtcnVubmVyLXRvLXRlc3RfcmVxdWlyZW1lbnRzLnBhdGNoIFwKLSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tY29yZSBcCi0gICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKLSAgICAke1BZVEhPTl9QTn0tc2l4IFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJmYzMzMzktdmFsaWRhdG9yXzAuMS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJmYzMzMzktdmFsaWRhdG9yXzAuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWI4YTZlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZmMzMzM5LXZhbGlkYXRvcl8wLjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1yZmMzMzM5LXZhbGlkYXRvci5pbmMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmZjMzk4Ni12YWxpZGF0b3IuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJmYzM5ODYtdmFsaWRhdG9yLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzFmN2E3OS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmZjMzk4Ni12YWxpZGF0b3IuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotU1VNTUFSWSA9ICJQdXJlIHB5dGhvbiByZmMzOTg2IHZhbGlkYXRvciIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9uYWltZXR0aS9yZmMzOTg2LXZhbGlkYXRvciIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTIxYjEzYjVhOTk2ZjA4ZjdlMGIwODhhYTM4Y2U5YzYiCi0KLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L3B5dGhvbi1yZmMzOTg2LXZhbGlkYXRvcjoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0N2Y3NjU3Yjc5MGFhZjYwMTFhMWFiM2Q4NmM2YmU5NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzZDQ0YmRlNzkyMWIzYjllYzNhZTRlM2FkY2EzNzA0MzhlY2NlYmM2NzY0NTY0NDliMTQ1ZDUzM2IyNDBkMDU1IgotCi1QWVBJX1BBQ0tBR0UgPSAicmZjMzk4Nl92YWxpZGF0b3IiCi0KLWluaGVyaXQgcHlwaQotCi1TUkNfVVJJX2FwcGVuZCA9ICIgXAotICAgIGZpbGU6Ly8wMDAxLXNldHVwLnB5LW1vdmUtcHl0ZXN0LXJ1bm5lci10by10ZXN0X3JlcXVpcmVtZW50cy5wYXRjaCBcCi0iCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgcHl0aG9uMy1jb3JlIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJmYzM5ODYtdmFsaWRhdG9yXzAuMS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJmYzM5ODYtdmFsaWRhdG9yXzAuMS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZGRkYmI0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZmMzOTg2LXZhbGlkYXRvcl8wLjEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1yZmMzOTg2LXZhbGlkYXRvci5pbmMKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmZjMzk4Ny5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmZjMzk4Ny5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljZmEwN2QuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJmYzM5ODcuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1TVU1NQVJZID0gIlBhcnNpbmcgYW5kIHZhbGlkYXRpb24gb2YgVVJJcyAoUkZDIDM5ODYpIGFuZCBJUklzIChSRkMgMzk4NykiCi1MSUNFTlNFID0gIkdQTHYzKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9OTttZDU9MmI3MjNlZGY2N2IyZjMwODhiYzVlMzM5YjFjZWRhMmQiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiNmM0MDI4YWNkYzc4OGE5YmE2OTdlMWMxZDZiODk2YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkM2M0ZDI1N2E1NjBkNTQ0ZTk4MjZiMzhiYzgxZGI2NzY4OTBjNzlhYjlkN2FjOTJiMzljN2EyNTNkNWNhNzMzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcmZjMzk4N18xLjMuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZmMzOTg3XzEuMy44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkY2RhNWFhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yZmMzOTg3XzEuMy44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tcmZjMzk4Ny5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmZjYjAyMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcm9ib3RmcmFtZXdvcmstc2VyaWFsbGlicmFyeS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIlJvYm90IEZyYW1ld29yayB0ZXN0IGxpYnJhcnkgZm9yIHNlcmlhbCBjb25uZWN0aW9uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dob3NheXNuaS9yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5IgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTg7ZW5kbGluZT04O21kNT03MTQ1ZjdjZGQyNjMzNTliNjJkMzQyYTAyZjAwNTUxNSIKLQotU1JDX1VSSVttZDVzdW1dID0gImI3Yzk1NjVkNTRjMzBkZjdjZDNmM2MwZTI5YWRmZmEzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI1NmFkNjBmYzBiN2RmNGJlNDRkODJjMzAyZjVlZDhmYWQ0OTM1Y2RhOTllNGI0NTk0MmUzYzg4MTc5ZDFlMTkiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL2NlL2UxLzFlMzM3ZGM4NGEyMGI5ZDkyZDdiMjQzZDE2YmI5ZjZmYzAwODQ5NjdlY2E3NDU0MjI4YmI1NDZlZmVjNy9yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5LTAuMy4xLnRhci5neiIKLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1weXNlcmlhbCBcCi0gICAgJHtQWVRIT05fUE59LXJvYm90ZnJhbWV3b3JrIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnlfMC4zLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcm9ib3RmcmFtZXdvcmstc2VyaWFsbGlicmFyeV8wLjMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQwZjY5Yy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcm9ib3RmcmFtZXdvcmstc2VyaWFsbGlicmFyeV8wLjMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXJvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnkuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcm9ib3RmcmFtZXdvcmsuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJvYm90ZnJhbWV3b3JrLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTkyMGM1MS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcm9ib3RmcmFtZXdvcmsuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJBIFB5dGhvbiBnZW5lcmljIHRlc3QgYXV0b21hdGlvbiBmcmFtZXdvcmsiCi1ERVNDUklQVElPTiA9ICJHZW5lcmljIG9wZW4gc291cmNlIHRlc3QgYXRvbWF0aW9uIGZyYW1ld29yayBmb3IgYWNjZXB0YW5jZVwKLXRlc3RpbmcgYW5kIGFjY2VwdGFuY2UgdGVzdC1kcml2ZW4gZGV2ZWxvcG1lbnQgKEFUREQpLiBJdCBoYXMgZWFzeS10by11c2VcCi10YWJ1bGFyIHRlc3QgZGF0YSBzeW50YXggYW5kIGl0IHV0aWxpemVzIHRoZSBrZXl3b3JkLWRyaXZlbiB0ZXN0aW5nIGFwcHJvYWNoLlwKLUl0cyB0ZXN0aW5nIGNhcGFiaWxpdGllcyBjYW4gYmUgZXh0ZW5kZWQgYnkgdGVzdCBsaWJyYXJpZXMgaW1wbGVtZW50ZWQgZWl0aGVyXAotd2l0aCBQeXRob24gb3IgSmF2YSwgYW5kIHVzZXJzIGNhbiBjcmVhdGUgbmV3IGhpZ2hlci1sZXZlbCBrZXl3b3JkcyBmcm9tXAotZXhpc3Rpbmcgb25lcyB1c2luZyB0aGUgc2FtZSBzeW50YXggdGhhdCBpcyB1c2VkIGZvciBjcmVhdGluZyB0ZXN0IGNhc2VzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9yb2JvdGZyYW1ld29yay5vcmciCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCi0KLWluaGVyaXQgcHlwaQotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWU3NTM0MTU2NDVmZjQ4MzFmZjBkMzY2YTA0NjdmZTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWI5NDI1N2NiZDg0OGRmY2E3MTQ4ZTA5MmQyMzNhMTI4NTNjYzdlODQwY2U4MjMxYWY5Y2JiNWU3ZjUxYWE0NyIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LXNoZWxsIFwKLSAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKLSAgICAke1BZVEhPTl9QTn0teG1sIFwKLSAgICAke1BZVEhPTl9QTn0tZGlmZmxpYiBcCi0gICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCi0gICAgJHtQWVRIT05fUE59LWh0bWwgXAotICAgICR7UFlUSE9OX1BOfS1kb2N1dGlscyBcCi0gICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcm9ib3RmcmFtZXdvcmtfMy4wLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcm9ib3RmcmFtZXdvcmtfMy4wLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmN2RlZGIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXJvYm90ZnJhbWV3b3JrXzMuMC40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXJvYm90ZnJhbWV3b3JrLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0temxpYiBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NhbmRpcl8xLjEwLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NhbmRpcl8xLjEwLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlkZTI3MjQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjYW5kaXJfMS4xMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJBIGJldHRlciBkaXJlY3RvcnkgaXRlcmF0b3IgYW5kIGZhc3RlciBvcy53YWxrKCkiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYmVuaG95dC9zY2FuZGlyIgotQVVUSE9SID0gIkJlbiBIb3l0IgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NDgyZWU2MmRhNTE4MDY0MDlkNDMyYTgwZWVkNGUzZWEiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9iZW5ob3l0L3NjYW5kaXIuZ2l0IgotU1JDUkVWID0gIjk4MmU2YmE2MGU3MTY1ZWY5NjU1NjdlYWNkNzEzODE0OWM5Y2UyOTIiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgc2V0dXB0b29scwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNjcnlwdC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NyeXB0LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZmODZhNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NyeXB0LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkJpbmRpbmdzIGZvciB0aGUgc2NyeXB0IGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uIGxpYnJhcnkiCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE2OGZmNzU0MTdmNzVhODNlNjNjODg3NTI5MmQ0NGRjIgotSE9NRVBBR0U9Imh0dHBzOi8vYml0YnVja2V0Lm9yZy9taGFsbGluL3B5LXNjcnlwdC9vdmVydmlldyIKLQotRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vcHl0aG9uLXNjcnlwdDoiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXB5LXNjcnlwdC1yZW1vdmUtdGhlLWhhcmQtY29kZWQtaW5jbHVkZS1wYXRocy5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gImFlOGUzMjYzYWEzMWIwNDBjMWY5YzdmMWUxODQzYTU2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY4MjM5YjJkNDdmYTFkNDBiYzI3ZWZkMjMxZGM3MDgzNjk1ZDEwYzFjMmFjNTFhOTkzODAzNjA3NDFlMDM2MmQiCi0KLWluaGVyaXQgcHlwaQotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY3J5cHRfMC44LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NyeXB0XzAuOC42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZmJkMDBlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY3J5cHRfMC44LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scyBweXRob24tZGlyCi1yZXF1aXJlIHB5dGhvbi1zY3J5cHQuaW5jCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZG5vdGlmeS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2Rub3RpZnkuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYTBlNTc1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZG5vdGlmeS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNiArMCwwIEBACi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYmI0MjQyL3Nkbm90aWZ5IgotU1VNTUFSWSA9ICJBIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHN5c3RlbWQncyBzZXJ2aWNlIG5vdGlmaWNhdGlvbiBwcm90b2NvbCAoc2Rfbm90aWZ5KSIKLQotREVTQ1JJUFRJT04gPSAiXAotICBzZG5vdGlmeSBpcyBhIHB1cmUgUHl0aG9uIGltcGxlbWVudGF0aW9uIG9mIHRoZSBzeXN0ZW1kIHNkX25vdGlmeSBwcm90b2NvbC4gXAotICBUaGlzIHByb3RvY29sIGNhbiBiZSB1c2VkIHRvIGluZm9ybSBzeXN0ZW1kIGFib3V0IHNlcnZpY2Ugc3RhcnQtdXAgY29tcGxldGlvbiwgXAotICB3YXRjaGRvZyBldmVudHMsIGFuZCBvdGhlciBzZXJ2aWNlIHN0YXR1cyBjaGFuZ2VzLiBcCi0gIFRodXMsIHRoaXMgcGFja2FnZSBjYW4gYmUgdXNlZCB0byB3cml0ZSBzeXN0ZW0gc2VydmljZXMgaW4gUHl0aG9uIHRoYXQgcGxheSBuaWNlbHkgd2l0aCBzeXN0ZW1kLiBcCi0gICIKLQotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1jYzU3MmNjYzRiMThhNGI3ZDEzYmU1ZDAxYmM4MjEzZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjc0OWRkY2ExYzcwYmUxNjk3ZmVjYzQ0M2ZiMWZkYjE2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjczOTc3ZmM3NDZiMzZjYzQxMTg0ZGQ0M2MzZmU4MTMyM2U3YjhiMDZjMmJiMDgyNmM0ZjU5YTIwYzU2YmI5ZjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2Rub3RpZnlfMC4zLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2Rub3RpZnlfMC4zLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5YWUzZmIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNkbm90aWZ5XzAuMy4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMgcHlwaQotcmVxdWlyZSBweXRob24tc2Rub3RpZnkuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VsZWN0b3JzMzRfMS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlbGVjdG9yczM0XzEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjk1NDVlYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VsZWN0b3JzMzRfMS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotU1VNTUFSWSA9ICJCYWNrcG9ydCBvZiB0aGUgc2VsZWN0b3JzIG1vZHVsZSBmcm9tIFB5dGhvbiAzLjQiCi1MSUNFTlNFID0gIlBTRiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT0yZmFlMDIyMmMzMWQ2YzEwNDg4ZDRhYjkzYTg2M2FmNyIKLQotU1JDX1VSSVttZDVzdW1dID0gImJjODU1YTFjODgzOWE4MTE0NzZjMDE5ZGMwN2Q5MmRkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA5ZjUwNjYzMzdmOGE3NmZiNTIzM2YyNjc4NzNmODlhMjdhMTdjMTBiZjc5NTc1OTU0ODk0YmI3MTY4NjQ1MWMiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LXNpeCBcCi0gICAgIiAgICAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZW12ZXIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlbXZlci5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjOTVjMDYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlbXZlci5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJQeXRob24gbW9kdWxlIGZvciBTZW1hbnRpYyBWZXJzaW9uaW5nIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2stYngvcHl0aG9uLXNlbXZlciIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL2stYngvcHl0aG9uLXNlbXZlci9pc3N1ZXMiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ZTkxMGIzNWIwZWY0ZTFmNjY1YjlhNzVkNmFmYjc3MDkiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkYzU3OWJhOWQwYmIyMTM3YmFkNTMyNGQ0YmRiN2U0MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1YjA5MDEwYTY2ZDlhMzgzNzIxMWJiN2FlNWEyMGQxMGJhODhmOGNiNDllOTJjYjEzOWE2OWVmOTBkNTA2MGQ4IgotCi1pbmhlcml0IHB5cGkKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlbXZlcl8yLjguMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZW12ZXJfMi44LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1NzJmZWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlbXZlcl8yLjguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1zZW12ZXIuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VudHJ5LXNkay5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VudHJ5LXNkay5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjMTIzY2UuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlbnRyeS1zZGsuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgbmV3IFB5dGhvbiBTREsgZm9yIFNlbnRyeS5pbyIKLURFU0NSSVBUSU9OID0gIlRoaXMgaXMgdGhlIG5leHQgbGluZSBvZiB0aGUgUHl0aG9uIFNESyBcCi1mb3IgU2VudHJ5LCBpbnRlbmRlZCB0byByZXBsYWNlIHRoZSByYXZlbiBwYWNrYWdlIG9uIFB5UEkuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9zZW50cnktcHl0aG9uIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wYzc5ZjhkM2M5MWZjODQ3MzUwZWZkMjhiZmUwYTM0MSIKLQotU1JDX1VSSVttZDVzdW1dID0gImZlZjAxNmQwNzUxMzdjNGZiODcyNDU1OWNhZDI4Yjg2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU4MTgyODk4Njg3NTVjZmVhNzRlNjFlNTMyYjRiMGQxMWQ1MjM5MDEwNDEzMzhkNDczMjc3ZGI5MWQ0ZDgxNzMiCi0KLVBZUElfUEFDS0FHRSA9ICJzZW50cnktc2RrIgotaW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VycGVudC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2VycGVudC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhM2FhYzAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlcnBlbnQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotU1VNTUFSWSA9ICJTZXJpYWxpemF0aW9uIGJhc2VkIG9uIGFzdC5saXRlcmFsX2V2YWwiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT01Y2Q3MDYzMmI2Y2RiOTZkZjlkZGFmNmE0Y2U2MTllNiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE1ZWY4YjY3Yzc2YTZkMTliYWM5YzE2NzMxYTFlNjJhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYzMDYzMzZjYTA5YWEzOGU1MjZmM2IwM2NhYjU4ZWI3ZTQ1YWYwOTk4MTI2NzIzMzE2N2JjZjNiZmQ2NDM2YWIiCi0KLWluaGVyaXQgcHlwaQotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAotICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKLSAgICAiICAgIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlcnBlbnRfMS4yOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXJwZW50XzEuMjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkYjNjZjkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNlcnBlbnRfMS4yOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1zZXJwZW50LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMtc2NtLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLXNjbS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE3ZTFiZjYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMtc2NtLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLVNVTU1BUlkgPSAidGhlIGJsZXNzZWQgcGFja2FnZSB0byBtYW5hZ2UgeW91ciB2ZXJzaW9ucyBieSBzY20gdGFncyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTg7ZW5kbGluZT04O21kNT04MjI3MTgwMTI2Nzk3YTAxNDhmOTRmNDgzZjNlMTQ4OSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjUwYjIxOTkwODJmZTgwOGQwMzJlYzE3MTBjOWQ3NDE1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImJkMjVlMWZiNWU0ZDYwM2RjZjQ5MGYxZmRlNDBmYjRjNTk1YjM1Nzc5NTY3NGMzZTVjYjdmNjIxN2FiMzllYTUiCi0KLVBZUElfUEFDS0FHRSA9ICJzZXR1cHRvb2xzX3NjbSIKLWluaGVyaXQgcHlwaQotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiJHtQWVRIT05fUE59LXB5ICR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzICR7UFlUSE9OX1BOfS1kZWJ1Z2dlciAke1BZVEhPTl9QTn0tanNvbiIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIke1BZVEhPTl9QTn0tc2V0dXB0b29scy1uYXRpdmUiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMtc2NtXzMuMy4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMtc2NtXzMuMy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGIzNmUzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLXNjbV8zLjMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1zZXR1cHRvb2xzLXNjbS5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1hcmdwYXJzZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2guaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMmZkNTYyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBzdWJwcm9jZXNzIHJlcGxhY2VtZW50IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Ftb2ZmYXQvc2giCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT01MzE3MDk0MjkyMjk2ZjAzNDA1ZjU5YWU1ZjY1NDRiNiIKLQotU1JDX1VSSVttZDVzdW1dID0gImE4MzUxYWVmMjVkMjVmNzA3YzE3ZTBhN2E2MjgwMjUxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI1MmJmNTgzM2VkMDFjN2I1YzVmYjczYTdmNzFiM2Q5OGQ0OGU5YjliODc2NDIzNjIzN2JkYzdlY2FlODUwZmMiCi0KLVBZUElfUEFDS0FHRSA9ICJzaCIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1jb2RlY3MgXAotICAgICR7UFlUSE9OX1BOfS1jb3JlIFwKLSAgICAke1BZVEhPTl9QTn0taW8gXAotICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKLSAgICAke1BZVEhPTl9QTn0tcmVzb3VyY2UgXAotICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCi0gICAgJHtQWVRIT05fUE59LXRlcm1pbmFsIFwKLSAgICAke1BZVEhPTl9QTn0tdGVzdHMgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotICAgICR7UFlUSE9OX1BOfS11bml4YWRtaW4gXAotIgotCi0jIFdBUk5JTkc6IFdlIHdlcmUgdW5hYmxlIHRvIG1hcCB0aGUgZm9sbG93aW5nIHB5dGhvbiBwYWNrYWdlL21vZHVsZQotIyBkZXBlbmRlbmNpZXMgdG8gdGhlIGJpdGJha2UgcGFja2FnZXMgd2hpY2ggaW5jbHVkZSB0aGVtOgotIyAgICBjb3ZlcmFnZSAtIG9ubHkgdXNlZCBpbiB0ZXN0IGFuZCB0aGVyZSBpcyBhIGNoZWNrIHRvIHNlZSBpZiBpdCBpcwotIyAgICAgICAgICAgICAgIGF2YWlsYWJsZSBiZWZvcmUgaW1wb3J0aW5nLgotIyAgICBxdWV1ZSAtIHBhcnQgb2YgdGhyZWFkaW5nCi0jICAgIHNpZ25hbCAtIHBhcnQgb2YgY29yZSBpbiBweXRob24zLiBub3Qgc3VyZSBob3cgaXQgaXMgaW1wb3J0ZWQgaW4gcHl0aG9uMi4KLSMgICAgICAgICAgICAgTm8gY29tcGxhbnRzIGluIGNvbXBpbGluZy4KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaF8xLjEyLjE0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNoXzEuMTIuMTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjYjUxNDAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNoXzEuMTIuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXNoLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICR7UFlUSE9OX1BOfS1jb250ZXh0bGliIFwKLSAgICAke1BZVEhPTl9QTn0tbGFuZyBcCi0gICAgJHtQWVRIT05fUE59LXRleHR1dGlscyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2lqYXguaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpamF4LmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWU0Njg5My4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2lqYXguaW5jCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJBbiBlYXN5IHRvIHVzZSBBSkFYIGxpYnJhcnkgZm9yIFB5dGhvbiBiYXNlZCBvbiBqUXVlcnkuYWpheCIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zcGFudGFsZWV2L3NpamF4LXB5dGhvbiIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MTZlMjEzZDc1NjQxYTM5MjQ3OGRmNTBjZjA4NDE5MDMiCi0KLVBZUElfUEFDS0FHRSA9ICJTaWpheCIKLWluaGVyaXQgcHlwaQpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaWpheF8wLjMuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaWpheF8wLjMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDIyNmM0Mi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2lqYXhfMC4zLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJBbiBlYXN5IHRvIHVzZSBBSkFYIGxpYnJhcnkgZm9yIFB5dGhvbiBiYXNlZCBvbiBqUXVlcnkuYWpheCIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zcGFudGFsZWV2L3NpamF4LXB5dGhvbiIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MTZlMjEzZDc1NjQxYTM5MjQ3OGRmNTBjZjA4NDE5MDMiCi0KLVBZUElfUEFDS0FHRSA9ICJTaWpheCIKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tc2lqYXguaW5jCi0KLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMWIwNjJmNGE4YjJhYWQ5NWM4N2U3YzA5ZTVkYWY1YTZiMGQwZjA4YWJmOWVmZTVmOTFhMDA3NWM2YmU3YzBkIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE4ZDM5MC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2ltcGxlanNvbi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIlNpbXBsZSwgZmFzdCwgZXh0ZW5zaWJsZSBKU09OIGVuY29kZXIvZGVjb2RlciBmb3IgUHl0aG9uIgotSE9NRVBBR0UgPSAiaHR0cDovL2NoZWVzZXNob3AucHl0aG9uLm9yZy9weXBpL3NpbXBsZWpzb24iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWM2MzM4ZDdhYmQzMjFjMGI1MGEyYTU0N2U0NDFjNTJlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGE1ZWQ3NWMzNjdiOTBmZWRjM2Q2ODU3NDJlMmExYzciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmI0YjJiNzM4YjNiOTk4MTlhMTdmZWFmMTE4MjY1ZDA3NTNkNTUzNjA0OWVhNTcwYjNjNDNiNTFjNDcwMWU4MSIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWlvIFwKLSAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKLSAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCi0iCi0KLVBBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKLVJERVBFTkRTXyR7UE59LXRlc3RzID0gIiR7UE59ICR7UFlUSE9OX1BOfS11bml0dGVzdCIKLUZJTEVTXyR7UE59LXRlc3RzKz0gIiBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2ltcGxlanNvbi90ZXN0cyBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2ltcGxlanNvbi90b29sLnB5KiBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uXzMuMTcuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW1wbGVqc29uXzMuMTcuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjRhZDlhOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2ltcGxlanNvbl8zLjE3LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tc2ltcGxlanNvbi5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1yZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaW5nbGVkaXNwYXRjaF8zLjQuMC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpbmdsZWRpc3BhdGNoXzMuNC4wLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0Yzk1MDUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpbmdsZWRpc3BhdGNoXzMuNC4wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1TVU1NQVJZID0gImZ1bmN0b29scy5zaW5nbGVkaXNwYXRjaCBmcm9tIFB5dGhvbiAzLjQiCi1ERVNDUklQVElPTiA9ICJQRVAgNDQzIHByb3Bvc2VkIHRvIGV4cG9zZSBhIG1lY2hhbmlzbSBpbiB0aGUgZnVuY3Rvb2xzIHN0YW5kYXJkIGxpYnJhcnkgbW9kdWxlIFwKLWluIFB5dGhvbiAzLjQgdGhhdCBwcm92aWRlcyBhIHNpbXBsZSBmb3JtIG9mIGdlbmVyaWMgcHJvZ3JhbW1pbmcga25vd24gYXMgc2luZ2xlLWRpc3BhdGNoIFwKLWdlbmVyaWMgZnVuY3Rpb25zLiAgVGhpcyBsaWJyYXJ5IGlzIGEgYmFja3BvcnQgb2YgdGhpcyBmdW5jdGlvbmFsaXR5IHRvIFB5dGhvbiAyLjYgLSAzLjMiCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5yc3Q7bWQ1PWVlM2NkNjcyNjRhZGM3ZWIwNzk4MWYzNjQ0ZGMxN2RjIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYWYyZmM2YTNkNmNjNWEwMmQwYmY1NGQ5MDk3ODVmY2IiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWIwNmFmODdkZjEzODE4ZDE0ZjA4YTAyOGU0MmY1NjY2NDBhZWY4MDgwNWMzYjUwYzUwNTZiMDg2ZTNjMmI5YyIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbGlwLWRidXMuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNsaXAtZGJ1cy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFiN2IxYmIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNsaXAtZGJ1cy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1TVU1NQVJZID0gIkNvbnZlbmllbmNlIGZ1bmN0aW9ucyBmb3IgZGJ1cyBzZXJ2aWNlcyBpbiBQeXRob24gMi54IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL25waGlsaXBwL3B5dGhvbi1zbGlwIgotREVTQ1JJUFRJT04gPSAiXAotVGhlIFNpbXBsZSBMaWJyYXJ5IGZvciBQeXRob24gMi54IHBhY2thZ2VzIGNvbnRhaW4gbWlzY2VsbGFuZW91cyBjb2RlIGZvciBcCi1jb252ZW5pZW5jZSwgZXh0ZW5zaW9uIGFuZCB3b3JrYXJvdW5kIHB1cnBvc2VzLiBcCi1cCi1UaGlzIHBhY2thZ2UgcHJvdmlkZXMgc2xpcC5kYnVzLnNlcnZpY2UuT2JqZWN0LCB3aGljaCBpcyBhIGRidXMuc2VydmljZS5PYmplY3QgXAotZGVyaXZhdGl2ZSB0aGF0IGVuZHMgaXRzZWxmIGFmdGVyIGEgY2VydGFpbiB0aW1lIHdpdGhvdXQgYmVpbmcgdXNlZCBhbmQvb3IgaWYgXAotdGhlcmUgYXJlIG5vIGNsaWVudHMgYW55bW9yZSBvbiB0aGUgbWVzc2FnZSBidXMsIGFzIHdlbGwgYXMgY29udmVuaWVuY2UgXAotZnVuY3Rpb25zIGFuZCBkZWNvcmF0b3JzIGZvciBpbnRlZ3JhdGluZyBhIGRidXMgc2VydmljZSB3aXRoIFBvbGljeUtpdC4iCi0KLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01NTc0YzY5NjVhZTVmNTgzZTU1ODgwZTM5N2ZiYjAxOCIKLVNSQ05BTUUgPSAicHl0aG9uLXNsaXAiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL25waGlsaXBwLyR7U1JDTkFNRX0vcmVsZWFzZXMvZG93bmxvYWQvJHtTUkNOQU1FfS0ke1BWfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5iejIiCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjI4YWU1ZjkzODUzNDY2YzQ0ZWM5NjcwNmJhMmExZWI0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImM3MjZjMDg2ZjBkZDkzYTBhYzdhMDE3NmYzODNhMTJhZjkxYjY2NTdiNzhhMzAxZTNmNWIyNWQ5ZjhkNGQxMGIiCi0KLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLSAgICBzZWQgLWUgJ3MvQFZFUlNJT05ALyR7UFZ9L2cnICR7U30vc2V0dXAucHkuaW4gPiAke1N9L3NldHVwLnB5Ci19Ci0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0ke1BZVEhPTl9QTn0tc2l4IFwKLSIKLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzE4NDcxMy8KLSMgcHl0aG9uLW5hdGl2ZS9weXRob246IGNhbid0IG9wZW4gZmlsZSAnc2V0dXAucHknOiBbRXJybm8gMl0gTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotQ0xFQU5CUk9LRU4gPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbGlwLWRidXNfMC42LjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2xpcC1kYnVzXzAuNi41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMzBmYTFiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbGlwLWRidXNfMC42LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tc2xpcC1kYnVzLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtYnVzLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbWJ1cy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiYTFhYjIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtYnVzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLVNVTU1BUlkgPSAiU2V0IG9mIGkyYyB0b29scyBmb3IgbGludXggLSBQeXRob24gbW9kdWxlIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NtYnVzbW9kdWxlLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xODttZDU9NDZlNDI0ZmIwNDU5MDFhYjI1ZTBmOTJjMjhjODAwNTUiCi1QUiA9ICJyMSIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL3V0aWxzL2kyYy10b29scy9pMmMtdG9vbHMtJHtQVn0udGFyLmd6ICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzNTM2MjM3YTZiNTFmYjEwY2FhY2RjM2I4YTQ5NjIzNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlZjhmNzdhZmM3MGU3ZGJmZDExNzFiZmVhZTg3YThhN2YxMDA3NDgyOTM3MGNlOGQ5Y2NkNTg1YTAxNGUwMDczIgotCi1ERVBFTkRTICs9ICJpMmMtdG9vbHMiCi0KLVMgPSAiJHtXT1JLRElSfS9pMmMtdG9vbHMtJHtQVn0vcHktc21idXMvIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtYnVzXzQuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbWJ1c180LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiOTU3NzguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNtYnVzXzQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBkaXN0dXRpbHMKLXJlcXVpcmUgcHl0aG9uLXNtYnVzLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNuYWtlZm9vZF8xLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc25ha2Vmb29kXzEuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTRhNmQ3Ni4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc25ha2Vmb29kXzEuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLVNVTU1BUlkgPSAiRGVwZW5kZW5jeSBncmFwaGluZyBmb3IgUHl0aG9uIgotREVTQ1JJUFRJT04gPSAiIEdlbmVyYXRlIGRlcGVuZGVuY3kgZ3JhcGhzIGZyb20gUHl0aG9uIGNvZGUuIFRoaXMgXAotZGVwZW5kZW5jeSB0cmFja2VyIHBhY2thZ2UgaGFzIGEgZmV3IGRpc3Rpbmd1aXNoaW5nIGNoYXJhY3RlcmlzdGljcyBcCi1cCi0gICAgKiBJdCB1c2VzIHRoZSBBU1QgdG8gcGFyc2UgdGhlIFB5dGhvbiBmaWxlcy4gVGhpcyBpcyB2ZXJ5IHJlbGlhYmxlLCBcCi0gICAgICBpdCBhbHdheXMgcnVucy5cCi0gICAgKiBObyBtb2R1bGUgaXMgbG9hZGVkLiBMb2FkaW5nIG1vZHVsZXMgdG8gZmlndXJlIG91dCBkZXBlbmRlbmNpZXMgaXMgXAotICAgICAgYWxtb3N0IGFsd2F5cyBwcm9ibGVtLCBiZWNhdXNlIGEgbG90IG9mIGNvZGViYXNlcyBydW4gaW5pdGlhbGl6YXRpb24gXAotICAgICAgY29kZSBpbiB0aGUgZ2xvYmFsIG5hbWVzcGFjZSwgd2hpY2ggb2Z0ZW4gcmVxdWlyZXMgYWRkaXRpb25hbCBzZXR1cC4gXAotICAgICAgU25ha2Vmb29kIGlzIGd1YXJhbnRlZWQgbm90IHRvIGhhdmUgdGhpcyBwcm9ibGVtIChpdCBqdXN0IHJ1bnMsIG5vIFwKLSAgICAgIG1hdHRlciB3aGF0KS5cCi0gICAgKiBJdCB3b3JrcyBvbiBhIHNldCBvZiBmaWxlcywgaS5lLiB5b3UgZG8gbm90IGhhdmUgdG8gc3BlY2lmeSBhIHNpbmdsZSBcCi0gICAgICBzY3JpcHQsIHlvdSBjYW4gc2VsZWN0IGEgZGlyZWN0b3J5IChwYWNrYWdlIG9yIGVsc2UpIG9yIGEgc2V0IG9mIGZpbGVzLlwKLSAgICAgIEl0IGZpbmRzIGFsbCB0aGUgUHl0aG9uIGZpbGVzIHJlY3Vyc2l2ZWx5IGF1dG9tYXRpY2FsbHkuXAotICAgICogQXV0b21hdGljL25vIGNvbmZpZ3VyYXRpb246IHlvdXIgUFlUSE9OUEFUSCBpcyBhdXRvbWF0aWNhbGx5IGFkanVzdGVkIFwKLSAgICAgIHRvIGluY2x1ZGUgdGhlIHJlcXVpcmVkIHBhY2thZ2Ugcm9vdHMuIEl0IGZpZ3VyZXMgb3V0IHRoZSBwYXRocyB0aGF0IFwKLSAgICAgIGFyZSByZXF1aXJlZCBmcm9tIHRoZSBmaWxlcy9kaXJlY3RvcmllcyBnaXZlbiBhcyBpbnB1dC4gWW91IHNob3VsZCBub3QgXAotICAgICAgaGF2ZSB0byBzZXR1cCBBTllUSElORy5cCi0gICAgKiBJdCBkb2VzIG5vdCBoYXZlIHRvIGF1dG9tYXRpY2FsbHkgJ2ZvbGxvdycgZGVwZW5kZW5jaWVzIGJldHdlZW4gbW9kdWxlcyxcCi0gICAgICBpLmUuIGJ5IGRlZmF1bHQgaXQgb25seSBjb25zaWRlcnMgdGhlIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB5b3Ugc3BlY2lmeSBcCi0gICAgICBvbiB0aGUgY29tbWFuZC1saW5lIGFuZCB0aGVpciBpbW1lZGlhdGUgZGVwZW5kZW5jaWVzLiBJdCBhbHNvIGhhcyBhbiBcCi0gICAgICBvcHRpb24gdG8gYXV0b21hdGljYWxseSBpbmNsdWRlIG9ubHkgdGhlIGRlcGVuZGVuY2llcyB3aXRoaW4gdGhlIFwKLSAgICAgIHBhY2thZ2VzIG9mIHRoZSBmaWxlcyB5b3Ugc3BlY2lmeS5cCi0gICAgKiBJdCBmb2xsb3dzIHRoZSBVTklYIHBoaWxvc29waHkgb2Ygc21hbGwgcHJvZ3JhbXMgdGhhdCBkbyBvbmUgdGhpbmcgd2VsbDpcCi0gICAgICBpdCBjb25zaXN0cyBvZiBhIGZldyBzaW1wbGUgcHJvZ3JhbXMgd2hvc2Ugb3V0cHV0cyB5b3UgY29tYmluZSB2aWEgXAotICAgICAgcGlwZXMuIEdyYXBoaW5nIGRlcGVuZGVuY2llcyBhbHdheXMgcmVxdWlyZXMgdGhlIHVzZXIgdG8gZmlsdGVyIGFuZCBcCi0gICAgICBjbHVzdGVyIHRoZSBmaWxlbmFtZXMsIHNvIHRoaXMgaXMgYXBwcm9wcmlhdGUuIFlvdSBjYW4gY29tYmluZSBpdCB3aXRoIFwKLSAgICAgIHlvdXIgZmF2b3VyaXRlIHRvb2xzLCBncmVwLCBzZWQsIGV0Yy5cCi1cCi1BIHByb2JsZW0gd2l0aCBkZXBlbmRlbmN5IHRyYWNrZXJzIHRoYXQgcnVuIGNvZGUgaXMgdGhhdCB0aGV5IGFyZSB1bnJlbGlhYmxlLCBcCi1kdWUgdG8gdGhlIGR5bmFtaWMgbmF0dXJlIG9mIFB5dGhvbiAodGhlIHByZXNlbmNlIG9mIGltcG9ydHMgd2l0aGluIGZ1bmN0aW9uIFwKLWNhbGxzIGFuZCBfX2ltcG9ydF9fIGhvb2tzIG1ha2VzIGl0IGFsbW9zdCBpbXBvc3NpYmxlIHRvIGFsd2F5cyBkbyB0aGUgcmlnaHQgXAotdGhpbmcpLiBUaGlzIHNjcmlwdCBhaW1zIGF0IGJlaW5nIHJpZ2h0IDk5JSBvZiB0aGUgdGltZSwgYW5kIHdlIHRoaW5rIHRoYXQgXAotZ2l2ZW4gdGhlIHRyYWRlLW9mZnMsIDk5JSBpcyBnb29kIGVub3VnaCBmb3IgOTklIG9mIHRoZSB1c2VzLlwKLSIKLUFVVEhPUiA9ICJNYXJ0aW4gQmxhaXMgPGJsYWlzQGZ1cml1cy5jYT4iCi1IT01FUEFHRSA9ICJodHRwOi8vZnVyaXVzLmNhL3NuYWtlZm9vZCIKLUxJQ0VOU0UgPSAiR1BMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTZjODg2NjdhMzNkODkwOWIwYWFiZjJhYjY5MDNiZGYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjk1Nzg0NjY4MDMyMjU0ZTczOTFjYTk5YmE3MDYwZWRkM2FlNGVjYTFhMzMwYWMxMTYyN2IxOGFiNTkyM2I3NyIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gPSAiIHB5dGhvbi1sb2dnaW5nIHB5dGhvbi1jb21waWxlciBweXRob24tc2hlbGwiCi0jIHRoZSBhYm92ZSBtb2R1bGVzIGRvIG5vdCBoYXZlIGEgLW5hdGl2ZSBjb3VudGVycGFydAotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zbmltcHlfMC44LjEzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNuaW1weV8wLjguMTMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4ODVhN2YuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNuaW1weV8wLjguMTMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIkludGVyYWN0aXZlIFNOTVAgdG9vbCIKLURFU0NSSVBUSU9OID0gIlNuaW1weSBpcyBhIFB5dGhvbi1iYXNlZCB0b29sIHByb3ZpZGluZyBhIHNpbXBsZSBpbnRlcmZhY2UgdG8gYnVpbGQgU05NUCBxdWVyeSIKLUhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvc25pbXB5IgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi0KLURFUEVORFMgKz0gImxpYnNtaSBweXRob24tY2ZmaS1uYXRpdmUgcHl0aG9uLXZjdmVyc2lvbmVyLW5hdGl2ZSIKLQotTElDRU5TRSA9ICJJU0MiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2NzL2xpY2Vuc2UucnN0O21kNT03YzUzYWIyZDEyNDA4Mjg2MjVjM2UwOTNkMDQ5ZDRmNCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdjNTdhY2FjMTAyMjZkZjViZjQzZTEwYjkyOTk0MmRmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk4YjE3OTA5NzdiNDM1MzMyYzAzYWIyNjAzZjY2MjFlZWVlZTY5YTUwNDUzYWMwMWNhNTVkYzc2OTZkMDg1MzUiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbi1jZmZpIFwKLSAgICAgICAgICAgICAgICAgIHB5dGhvbi1weWNwYXJzZXIgXAotICAgICAgICAgICAgICAgICAgcHl0aG9uLXB5c25tcCBcCi0gICAgICAgICAgICAgICAgICBweXRob24tc2V0dXB0b29scyBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc29ja2V0aW8uaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNvY2tldGlvLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2VlOTlmOC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc29ja2V0aW8uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotU1VNTUFSWSA9ICJTb2NrZXQuSU8gc2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL21pZ3VlbGdyaW5iZXJnL3B5dGhvbi1zb2NrZXRpby8iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00MmQwYTllNzI4OTc4ZjBlZWI3NTljM2JlOTE1MzZiOCIKLQotaW5oZXJpdCBweXBpCi0KLVBZUElfUEFDS0FHRSA9ICJweXRob24tc29ja2V0aW8iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4NmNkNDdkZGRlYTE3ODVjZTdhNmM3MmY1NWM5M2ZlNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1MDZiMmNmN2E1MjBiNDBlYTBiM2YyNWUxMjcyZWZmOGRlMTM0ZGNlNmY0NzFjMWY2YmMwZGU4YzkwZmU4YzU3IgotCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHW2FzeW5jaW9fY2xpZW50XSA9ICIsLCwke1BZVEhPTl9QTn0tYWlvaHR0cCAke1BZVEhPTl9QTn0td2Vic29ja2V0cyIKLVBBQ0tBR0VDT05GSUdbY2xpZW50XSA9ICIsLCwke1BZVEhPTl9QTn0tcmVxdWVzdHMgJHtQWVRIT05fUE59LXdlYnNvY2tldC1jbGllbnQiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWVuZ2luZWlvIFwKLSAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCi0gICAgJHtQWVRIT05fUE59LW1hdGggXAotICAgICR7UFlUSE9OX1BOfS1waWNrbGUgXAotICAgICR7UFlUSE9OX1BOfS1qc29uIFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSAgICAke1BZVEhPTl9QTn0tc2l4IFwKLSAgICAke1BZVEhPTl9QTn0tYXR0cnMgXAotICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zb2NrZXRpb180LjMuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zb2NrZXRpb180LjMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI1YTZiMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc29ja2V0aW9fNC4zLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tc29ja2V0aW8uaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc291cHNpZXZlLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zb3Vwc2lldmUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjY2IwNGY0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zb3Vwc2lldmUuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotU1VNTUFSWSA9ICJDU1Mgc2VsZWN0b3IgbGlicmFyeSBmb3IgcHl0aG9uLWJlYXV0aWZ1bHNvdXA0IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ZhY2VsZXNzdXNlci9zb3Vwc2lldmUiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5tZDttZDU9NWE2ZmQzYjBjMjRmYzVhMDQxYTNkMWJiYjIyYzgxYjUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0M2Q4ZWEyMGM1ODQ5NDQ0NmFhNjViYTVjYzYzMjBmZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MDVmODlhZDVmZGJmZWZlMzBjZGMyOTMzMDM2NjVlZmYyZDE4ODg2NWQ0ZGJlNGViNTEwYmJhMWVkZmJmY2UzIgotCi1pbmhlcml0IHB5cGkKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNvdXBzaWV2ZV8xLjkuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zb3Vwc2lldmVfMS45LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1YTY3M2UuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNvdXBzaWV2ZV8xLjkuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi1zb3Vwc2lldmUuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3BhcnRzXzAuNy4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNwYXJ0c18wLjcuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTEyNTMxMS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3BhcnRzXzAuNy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciByYXBpZCBzZXJ2aWNlIHByb3RvdHlwaW5nIHdpdGggbWluaW1hbCBib2lsZXJwbGF0ZSIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MGMxNTU0NjM2YTU2NGRhM2JhZjAzN2FjNjUyZmM4MzEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2YWE4ODE1NjUyYzZmNWU1ZThlNWIyYWMxODEzZGQ4NyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMjU3MDdjMzQ5MDc5YTdjODg4MTU1ZTdmZGZkODM5NGRmMmRhOWFjYTljOGVlZTRlMjA1NTI4Y2IxNmI3NjYyIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotCi1SREVQRU5EU18ke1BOfSA9ICJcCi0gICAgICAgICAgICAgICBweXRob24tc3VicHJvY2VzcyBcCi0gICAgICAgICAgICAgICBweXRob24tc2l4IFwKLSAgICAgICAgICAgICAgIHB5dGhvbi1hcmdwYXJzZSBcCi0gICAgICAgICAgICAgICBweXRob24tcmUgXAotICAgICAgICAgICAgICAgcHl0aG9uLXNoZWxsIFwKLSAgICAgICAgICAgICAgIHB5dGhvbi10aHJlYWRpbmcgXAotICAgICAgICAgICAgICAgcHl0aG9uLWxvZ2dpbmcgXAotICAgICAgICAgICAgICAgcHl0aG9uLXVuaXhhZG1pbiBcCi0gICAgICAgICAgICAgICBweXRob24tZGlzdHV0aWxzIFwKLSAgICAgICAgICAgICAgIHB5dGhvbi1kYWVtb25pemUgXAotICAgICAgICAgICAgICAgcHl0aG9uLWZ1dHVyZXMgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNwZWFrbGF0ZXIuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNwZWFrbGF0ZXIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMjUzNGU0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcGVha2xhdGVyLmluYworKysgL2Rldi9udWxsCkBAIC0xLDkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiTWVkaWEgYXNzZXQgbWFuYWdlbWVudCBmb3IgUHl0aG9uLCB3aXRoIGdsdWUgY29kZSBmb3IgdmFyaW91cyBmcmFtZXdvcmtzIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iODEwNzcwMDc1YTI5YmY0NGI5NjYwNzQ0MGU3YzgwMSIKLQotU1JDX1VSSVttZDVzdW1dID0gImU4ZDVkYmUzNmU1M2Q1YTM1Y2ZmMjI3ZTc5NWU4YmJmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5ZmVhMzM2ZDBlZWQzOGMxZjBiZjMxODFlZTEyMjJkMGVmNDVmM2E5ZGQzNGViZTY1ZTZiZmZmZGQ2YTY1YTkiCi0KLVBZUElfUEFDS0FHRSA9ICJzcGVha2xhdGVyIgotCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3BlYWtsYXRlcl8xLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3BlYWtsYXRlcl8xLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2ZmQ1NTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNwZWFrbGF0ZXJfMS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tc3BlYWtsYXRlci5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcGlkZXYuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNwaWRldi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiOTM3NjMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNwaWRldi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgTGludXggU1BJIGFjY2VzcyB0aHJvdWdoIHNwaWRldiIKLURFU0NSSVBUSU9OID0gIlRoaXMgcHJvamVjdCBjb250YWlucyBhIHB5dGhvbiBtb2R1bGUgZm9yIGludGVyZmFjaW5nIHdpdGggU1BJXAotZGV2aWNlcyBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBzcGlkZXYgbGludXgga2VybmVsIGRyaXZlci5cCi1UaGlzIGlzIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgY29kZSBvcmlnaW5hbGx5IGZvdW5kXAotW2hlcmVdKGh0dHA6Ly9lbGsuaW5mb3JtYXRpay5maC1hdWdzYnVyZy5kZS9kYS9kYS00OS90cmVlcy9weWFwN2svbGFuZy9weS1zcGkpXAotQWxsIGNvZGUgaXMgR1BMdjIgbGljZW5zZWQgdW5sZXNzIGV4cGxpY2l0bHkgc3RhdGVkIG90aGVyd2lzZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9kb2NlbWUvcHktc3BpZGV2IgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5tZDttZDU9NTRiZGI5MDIyZWJiNzVhYjY4Mzk5Y2RhYWI5N2RhNjAiCi1TUkNOQU1FID0gInNwaWRldiIKLQotU1JDX1VSSVttZDVzdW1dID0gImY2MDE2NzZmMWJiNDhiOWFhM2IzODk3Zjk1MjE2MzY1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA5ZDJiNTEyMmYwZGQ3OTkxMDcxM2ExMWY5YTAwMjBmNzE1MzcyMjRiZjgyOTkxNmRlZjRmZmZjMGVhNTk0NTYiCi0KLQotaW5oZXJpdCBweXBpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3FsYWxjaGVteS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3FsYWxjaGVteS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NjNhMzkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNxbGFsY2hlbXkuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiUHl0aG9uIFNRTCB0b29sa2l0IGFuZCBPYmplY3QgUmVsYXRpb25hbCBNYXBwZXIgdGhhdCBnaXZlcyBcCi1hcHBsaWNhdGlvbiBkZXZlbG9wZXJzIHRoZSBmdWxsIHBvd2VyIGFuZCBmbGV4aWJpbGl0eSBvZiBTUUwiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnNxbGFsY2hlbXkub3JnLyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MmY1ZWIwMzBjNDg5NzVkNTI5NGJhZjBmNWQwMWFmMWMiCi0KLVBZUElfUEFDS0FHRSA9ICJTUUxBbGNoZW15IgotaW5oZXJpdCBweXBpCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwMmE0NmJlODQxOTAzYjYwYzUyYTgzMzQyZDNjZWQ4ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiZmI4ZjQ2NGE1MDAwYjU2N2FjMWQzNTBiOTA5MGNmMDgxMTgwZWMxYWI0YWE4N2U3YmNhMTJkYWIyNTMyMGVjIgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tanNvbiBcCi0gICAgJHtQWVRIT05fUE59LXBpY2tsZSBcCi0gICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAotICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAotICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxhbGNoZW15XzEuMy4xMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxhbGNoZW15XzEuMy4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTNjOGZlYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3FsYWxjaGVteV8xLjMuMTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tc3FsYWxjaGVteS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxwYXJzZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3FscGFyc2UuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzFmODE1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxwYXJzZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1ERVNDUklQVElPTiA9ICJOb24tdmFsaWRhdGluZyBTUUwgcGFyc2VyIG1vZHVsZSIKLUhPTUVQQUdFID0gImh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9zcWxwYXJzZSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJCU0QiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yYjEzNmY1NzNmNTM4NjAwMWVhM2I3YjkwMTYyMjJmYyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjJjZTM0MTgxZDZiN2IyMzRjOWYzYzBlY2QxZmZiOTNlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdjM2RjYTI5YzAyMjc0NGU5NWI1NDdlODY3Y2VlODlmNGZjZTQzNzNmMzU0OWNjZDg3OTdkOGViNTJjZGI4NzMiCi0KLWV4cG9ydCBCVUlMRF9TWVMKLWV4cG9ydCBIT1NUX1NZUwotCi1pbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxwYXJzZV8wLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zcWxwYXJzZV8wLjMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI3NzczZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3FscGFyc2VfMC4zLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tc3FscGFyc2UuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3RhdGlzdGljc18xLjAuMy41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN0YXRpc3RpY3NfMS4wLjMuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWUzYjgyMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3RhdGlzdGljc18xLjAuMy41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHBvcnQgb2YgUHl0aG9uIDMuNCBzdGF0aXN0aWNzIG1vZHVsZSB0byBQeXRob24gMi54IgotREVTQ1JJUFRJT04gPSAiIFwKLUEgcG9ydCBvZiBQeXRob24gMy40IHN0YXRpc3RpY3MgbW9kdWxlIHRvIFB5dGhvbiAyLiosIGluaXRpYWxseSBkb25lIFwKLXRocm91Z2ggdGhlIDN0bzIgdG9vbC4gVGhpcyBtb2R1bGUgcHJvdmlkZXMgZnVuY3Rpb25zIGZvciBjYWxjdWxhdGluZyBcCi1tYXRoZW1hdGljYWwgc3RhdGlzdGljcyBvZiBudW1lcmljIChSZWFsLXZhbHVlZCkgZGF0YS4gXAotIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3RhdGlzdGljcy9fX2luaXRfXy5weTtiZWdpbmxpbmU9NjtlbmRsaW5lPTE2O21kNT1iNzY5NjBlZTc3N2ExNTI5ZjYwZGI0N2FkYTJhOGU2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ2ZDk3ZjNhMWE3YjMxOTJjZmY5OWUwZjJiNTk1NmMzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJkYzM3OWI4MGIwN2JmMmRkZDU0ODhjYWQwNmIyYjk1MzFkYTRkZDMxZWRiMDRkYzllYzBkYzIyNjQ4NmMxMzgiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVBZUElfUEFDS0FHRSA9ICJzdGF0aXN0aWNzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN0ZXZlZG9yZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3RldmVkb3JlLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFhOWZiNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3RldmVkb3JlLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIk1hbmFnZSBkeW5hbWljIHBsdWdpbnMgZm9yIFB5dGhvbiBhcHBsaWNhdGlvbnMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZHJlYW1ob3N0L3N0ZXZlZG9yZSIKLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDJmYTJiZjAyNTFjOTZiNTQzNzY1YzVjZTEzZjM3YzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTA3MzlmOTczOWE2ODFjN2ExZmRhNzZhMTAyYjY1Mjk1ZTk2YTE0NGNjZGI1NTJmMmFlMDNjNWYwYWJlOGExNCIKLQotaW5oZXJpdCBweXBpCi0KLURFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1wYnItbmF0aXZlIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXBiciAke1BZVEhPTl9QTn0tc2l4IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zdGV2ZWRvcmVfMS4zMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN0ZXZlZG9yZV8xLjMxLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwYTAwYzEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN0ZXZlZG9yZV8xLjMxLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tc3RldmVkb3JlLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN0cmljdC1yZmMzMzM5LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zdHJpY3QtcmZjMzMzOS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjYTllYTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN0cmljdC1yZmMzMzM5LmluYworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotU1VNTUFSWSA9ICJTdHJpY3QsIHNpbXBsZSwgbGlnaHR3ZWlnaHQgUkZDMzMzOSBmdW5jdGlvbi5zIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThmMGUyY2Q0MGUwNTE4OWVjODEyMzJkYTg0YmQ2ZTFhIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNGQ5YjYzNWI0ZGY4ODViYzM3YmMxMTg5ZDY2YzlhYmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWNhZDE3YmVkZmMzYWY1N2IzOTlkYjBmZWQzMjc3MWYxOGZjNTRiYmQ5MTdlODU1NDYwODg2MDdhYzVlMTI3NyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN0cmljdC1yZmMzMzM5XzAuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zdHJpY3QtcmZjMzMzOV8wLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwMWVhOTkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN0cmljdC1yZmMzMzM5XzAuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXN0cmljdC1yZmMzMzM5LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN1YnByb2Nlc3MzMl8zLjIuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zdWJwcm9jZXNzMzJfMy4yLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0MzcwNjkuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN1YnByb2Nlc3MzMl8zLjIuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBiYWNrcG9ydCBvZiB0aGUgc3VicHJvY2VzcyBtb2R1bGUgZnJvbSBQeXRob24gMy4yIGZvciB1c2Ugb24gMi54IgotREVTQ1JJUFRJT04gPSAiVGhpcyBpcyBhIGJhY2twb3J0IG9mIHRoZSBzdWJwcm9jZXNzIHN0YW5kYXJkIGxpYnJhcnkgbW9kdWxlIFwKLWZyb20gUHl0aG9uIDMuMiAtIDMuNSBmb3IgdXNlIG9uIFB5dGhvbiAyLiBJdCBpbmNsdWRlcyBidWdmaXhlcyBhbmQgc29tZSBuZXcgXAotZmVhdHVyZXMuICBPbiBQT1NJWCBzeXN0ZW1zIGl0IGlzIGd1YXJhbnRlZWQgdG8gYmUgcmVsaWFibGUgd2hlbiB1c2VkIGluIFwKLXRocmVhZGVkIGFwcGxpY2F0aW9ucy4gSXQgaW5jbHVkZXMgdGltZW91dCBzdXBwb3J0IGZyb20gUHl0aG9uIDMuMyBhbmQgdGhlIFwKLXJ1bigpIEFQSSBmcm9tIDMuNSBidXQgb3RoZXJ3aXNlIG1hdGNoZXMgMy4yJ3MgQVBJLiIKLUxJQ0VOU0UgPSAiUHl0aG9uLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQzZTYyYmFhOGZiOTZiMTFhNTlkM2YyY2QzMzVkNWMwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODI0YzgwMWU0NzlkM2U5MTY4NzlhYWUzZTljMTVlMTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWU0NTBhNGE0YzUzYmYxOTdhZDY0MDJjNTY0YjlmN2E1MzUzOTM4NTkxOGVmOGYxMmJkZjQzMGE2MTAzNjU5MCIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN1cGVydmlzb3IuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN1cGVydmlzb3IuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYWMxOGJiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zdXBlcnZpc29yLmluYworKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLVNVTU1BUlkgPSAiU3VwZXJ2aXNvcjogQSBQcm9jZXNzIENvbnRyb2wgU3lzdGVtIgotREVTQ1JJUFRJT04gPSAiXAotU3VwZXJ2aXNvciBpcyBhIGNsaWVudC9zZXJ2ZXIgc3lzdGVtIHRoYXQgYWxsb3dzIGl0cyB1c2VycyBcCi10byBtb25pdG9yYW5kIGNvbnRyb2wgYSBudW1iZXIgb2YgcHJvY2Vzc2VzIG9uIFVOSVgtbGlrZSBcCi1vcGVyYXRpbmcgc3lzdGVtcy4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vU3VwZXJ2aXNvci9zdXBlcnZpc29yIgotTElDRU5TRSA9ICJCU0QtNC1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFUy50eHQ7bWQ1PTViNGUzYTIxNzJiYmE0YzQ3Y2RlZDU4ODVlN2U1MDdlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWNlYTk0ZWVkYzcwYmE1MTI3ZmRlYjA2NjViY2NhMGQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmRjODZmZTA0NzZlOTQ1ZTYxNDgzZDYxNGNlYjJjZjRmOTNiOTUyODJlYjI0M2JkZjc5MjYyMTk5NDM2MDM4MyIKLQotUFlQSV9QQUNLQUdFID0gInN1cGVydmlzb3IiCi1pbmhlcml0IHB5cGkgc3lzdGVtZAotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgICR7UFlUSE9OX1BOfS1tZWxkMyBcCi0iCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly9zdXBlcnZpc29yZC5jb25mIFwKLQkgICAgZmlsZTovL3N1cGVydmlzb3Iuc2VydmljZSBcCi0JIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInN1cGVydmlzb3Iuc2VydmljZSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zdXBlcnZpc29yCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQotCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3VwZXJ2aXNvcmQuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zdXBlcnZpc29yCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3VwZXJ2aXNvci5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Ci19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3lzdGVtZF8yMzQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc3lzdGVtZF8yMzQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwZjI5MDAuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXN5c3RlbWRfMjM0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1zeXN0ZW1kLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdGVybS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdGVybS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhMmRmMGUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRlcm0uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1TVU1NQVJZID0gIkFuIGVuaGFuY2VkIHZlcnNpb24gb2YgdGhlIHR0eSBtb2R1bGUiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiUHl0aG9uLTIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kOTBlMmQyODBhNDgzNmM2MDc1MjAzODNkMTYzOWJlMSIKLQotUFlQSV9QQUNLQUdFX0VYVCA9ICJ6aXAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhYjBjMWJjZTM4MWIxMTA5ZmU0MzkwYzU2YWEwNjIzNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzZGNjOGMyMTJlMDQ3MDA3ODRlNWMxYzViNjAxOTE2YmEwNTQ5YWU2MDI1YjM1YjY0ZmQ2MjE0NDg5OWU3MTgwIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRpbnlyZWNvcmQuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRpbnlyZWNvcmQuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ODFkYzA3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10aW55cmVjb3JkLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAidHJhbnNhY3Rpb24gc3VwcG9ydCBmb3IgVGlueURCIgotREVTQ1JJUFRJT04gPSAiXAotVGlueXJlY29yZCBpcyBhIGxpYnJhcnkgd2hpY2ggaW1wbGVtZW50cyBhdG9taWMgdHJhbnNhY3Rpb24gXAotc3VwcG9ydCBmb3IgdGhlIFRpbnlEQiBOb1NRTCBkYXRhYmFzZS4gSXQgdXNlcyBhIHJlY29yZC1maXJzdCBcCi10aGVuIGV4ZWN1dGUgYXJjaGl0ZWN0dXJlIHdoaWNoIGFsbG93cyB1cyB0byBtaW5pbWl6ZSB0aGUgdGltZSBcCi10aGF0IHdlIGFyZSB3aXRoaW4gYSB0aHJlYWQgbG9jay4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZXVnZW5lLWVlby90aW55cmVjb3JkIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PTMxYzFkYzExYjRhZTgzNTQ2NTM4ZGU0YzE2YmNlYWJjIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTQ3ZGNmZTI5OTY4NmNkM2ZhN2ZmYWE3Y2IyZWU4YjEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmM3ZTZhOGU3ODYwMGRmMjM0ZDdhODVjMmY1ZDU4NDEzMGYyYzZmZmQ3Y2QzMTBmOWQzYTFkOTc2ZDMzNzNjOCIKLQotUFlQSV9QQUNLQUdFID0gInRpbnlyZWNvcmQiCi1pbmhlcml0IHB5cGkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10b21sLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10b21sLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTNiM2RmYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdG9tbC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBMaWJyYXJ5IGZvciBUb20ncyBPYnZpb3VzLCBNaW5pbWFsIExhbmd1YWdlIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3VpcmkvdG9tbCIKLUxJQ0VOU0UgPSAiTUlUIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02ZDYwMTJlZWE0NzcxMTdhYmY1MWMzMTI2MmExNTJmOCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjYzZmZmYmUyZDYzMjg2NWVjMjljZDY5YmZkZjM2NjgyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIyOWY4MWM1Nzc5MWE0MWQ2NWUzOTlmYzA2YmYwODQ4YmFiNTUwYTlkZmQ1ZWQ2NmRmMThjZTVmMDVlNzNkNWMiCi0KLWluaGVyaXQgcHlwaQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvbWxfMC4xMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvbWxfMC4xMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYzRhY2NlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10b21sXzAuMTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi10b21sLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvcm5hZG8tcmVkaXNfMi40LjE4LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvcm5hZG8tcmVkaXNfMi40LjE4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmEyMGE1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10b3JuYWRvLXJlZGlzXzIuNC4xOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgID0gIlRvcm5hZG8tUmVkaXMgaXMgYW4gYXN5bmNyb25vdXMgUmVkaXMgY2xpZW50IGZvciB0aGUgVG9ybmFkbyBXZWIgU2VydmVyIgotREVTQ1JJUFRJT04gPSAiVG9ybmFkby1SZWRpcyBpcyBhIFJlZGlzIGNsaWVudCB0aGF0IHVzZXMgVG9ybmFkbydzIG5hdGl2ZSAndG9ybmFkby1nZW4nIGludGVyZmFjZS4gXAotSXQgY2FuIGJlIHVzZWQgYWxvbmdzaWRlIHJlZGlzLXB5IGluIFRvcm5hZG8gYXBwbGljYXRpb25zOiBcCi10b3JuYWRvLXJlZGlzIHRvIHN1YnNjcmliZSB0byBQdWIvU3ViIG5vdGlmaWNhdGlvbnMgYW5kIGZvciBibG9ja2luZyBjb21tYW5kcyAoc3VjaCBhcyBCTFBPUCwgQlJQT1AsIEJSUE9QTFBVU0gpOyBcCi1yZWRpcy1weSBmb3Igb3RoZXIgY29tbWFuZHMuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xlcG9yby90b3JuYWRvLXJlZGlzIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PWNhMzA3ZThmMzdiNWZhN2Y4ZGJiZWMwMzNmN2RiN2RlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWM3ZWMwZjY0NWQxNTQwMDg3MTE0MWMxMTQ5ZTY5MzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGZkM2IzMjQxNTgyOTFhZDVmYjdmNWY4ZGMyZTg3NjNiMjg5NTU1NmJkMmE0NGYyZGQ3MjFiNzAzYzY2OTA0NiIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi10b3JuYWRvIgotCi1SREVQRU5EU18ke1BOfS10ZXN0ICs9ICIke1BOfSBweXRob24tdG9ybmFkbyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10b3JuYWRvXzYuMC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvcm5hZG9fNi4wLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5M2E0ZGIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRvcm5hZG9fNi4wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi10b3JuYWRvLmluYwotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWJhY2twb3J0cy1hYmMgXAotICAgICR7UFlUSE9OX1BOfS1iYWNrcG9ydHMtc3NsIFwKLSAgICAke1BZVEhPTl9QTn0tc2luZ2xlZGlzcGF0Y2ggXAotICAgICR7UFlUSE9OX1BOfS1zdWJwcm9jZXNzIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10cWRtLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10cWRtLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGEwNTM0Zi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHFkbS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIkZhc3QsIEV4dGVuc2libGUgUHJvZ3Jlc3MgTWV0ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vdHFkbS5naXRodWIuaW8vIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi0KLUxJQ0VOU0UgPSAiTUlUICYgTVBMLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTA1NGVmNzEwNWNiYTA1MDAxN2QxMzY4MjYyYTE2MjNjIgotCi1pbmhlcml0IHB5cGkKLQotU1JDX1VSSVttZDVzdW1dID0gImFhM2Q1ZmQxNzNjOWZlYTc0MDhjYWQxNGMwZTczZDVkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ3ODljY2JiNmZjMTIyYjVhNmE4NWQ1MTJlNGU0MWZjNWFjYWQ3NzIxNjUzM2E2ZjJiOGNlNTFlMGYyNjVjMjMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10cWRtXzQuNDEuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10cWRtXzQuNDEuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM4MTAwOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHFkbV80LjQxLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tdHFkbS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10cmFjZWJhY2syXzEuNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRyYWNlYmFjazJfMS40LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NmM4NzUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXRyYWNlYmFjazJfMS40LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gIkEgYmFja3BvcnQgb2YgdHJhY2ViYWNrIHRvIG9sZGVyIHN1cHBvcnRlZCBQeXRob25zIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Rlc3RpbmctY2FiYWwvdHJhY2ViYWNrMiIKLUxJQ0VOU0UgPSAiUHl0aG9uLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT0zMTtlbmRsaW5lPTMxO21kNT0zNjhkZGM4NTg4NDMxYzE4MGFlN2MzM2Y0ZmI1NzUxOSIKLQotREVQRU5EUyA9ICIke1BZVEhPTl9QTn0tcGJyLW5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjllOTcyM2Y0ZDcwYmZjNjMwOGZhOTkyZGQxOTNjNDAwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA1YWNjNjdhMDk5ODBjMmVjZmVkZDM0MjNmN2FlMDEwNDgzOWVjY2I1NWZjNjQ1NzczZTFjYWEwOTUxYzMwMzAiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLUNMRUFOQlJPS0VOID0gIjEiCi0KLVJERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1saW5lY2FjaGUyIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aW5lLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2luZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiYzc3OGQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aW5lLmluYworKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLURFU0NSSVBUSU9OID0gIlNpeCBpcyBhIFB5dGhvbiAyIGFuZCAzIGNvbXBhdGliaWxpdHkgbGlicmFyeSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4IgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUucnN0O21kNT0zOTYzYmRjZWU3NTYyYmVkYWUxZWZmYTA5ZTc1NDJiMiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjZmYjRkYTBjN2Q4MWRkZmQ0OGY2MTliOGNhYTE0OTNjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2YzI5YzkzM2VjZmM3NGU5YjFkOWZhMTNhYTFmODdjNWQ1NzcwZTExOWY1YTRjZTAzMjA5MmYwZmY1YjE0ZGMiCi0KLWluaGVyaXQgcHlwaQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2lzdGVkLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2lzdGVkLmluYwppbmRleCBkMDA1YTJhLi43NTM3YmFmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpc3RlZC5pbmMKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWQuaW5jCkBAIC02MSw3ICs2MSwxOCBAQAogICAgICR7UE59LXpzaCBcCiAiCiAKLVJERVBFTkRTXyR7UE59LWNvcmUgPSAiJHtQWVRIT05fUE59LWNvcmUgJHtQWVRIT05fUE59LXpvcGVpbnRlcmZhY2UgJHtQWVRIT05fUE59LWluY3JlbWVudGFsICR7UFlUSE9OX1BOfS1jb25zdGFudGx5ICR7UFlUSE9OX1BOfS1oeXBlcmxpbmsgJHtQWVRIT05fUE59LWF1dG9tYXQgJHtQWVRIT05fUE59LXB5c2VyaWFsIgorUkRFUEVORFNfJHtQTn0tY29yZSA9ICIke1BZVEhPTl9QTn0tYXBwZGlycyBcCisgICAgICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1hdXRvbWF0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWNvbnN0YW50bHkgXAorICAgICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tY29yZSBcIAorICAgICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tZGVidWdnZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0taHlwZXJsaW5rIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWluY3JlbWVudGFsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXB5aGFtY3Jlc3QgXAorICAgICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tcHlzZXJpYWwgXAorICAgICAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tdW5peGFkbWluIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXpvcGVpbnRlcmZhY2UgXAorIgogUkRFUEVORFNfJHtQTn0tdGVzdCA9ICIke1BOfSIKIFJERVBFTkRTXyR7UE59LWNvbmNoID0gIiR7UE59LWNvcmUgJHtQTn0tcHJvdG9jb2xzICR7UFlUSE9OX1BOfS1iY3J5cHQgJHtQWVRIT05fUE59LWNyeXB0b2dyYXBoeSAke1BZVEhPTl9QTn0tcHlhc24xICR7UFlUSE9OX1BOfS1waWNrbGUiCiBSREVQRU5EU18ke1BOfS1tYWlsID0gIiR7UE59LWNvcmUgJHtQTn0tcHJvdG9jb2xzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWRfMTkuMTAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2lzdGVkXzE5LjEwLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU5MDNkYjMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXN0ZWRfMTkuMTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXR3aXN0ZWQuaW5jCi0KLVJERVBFTkRTXyR7UE59LWNvcmUgKz0gIiR7UFlUSE9OX1BOfS1jb250ZXh0bGliIgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BOfS1uZXdzIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2l0dGVyLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d2l0dGVyLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWMzZjY1Mi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpdHRlci5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIlR3aXR0ZXIgZm9yIFB5dGhvbiIKLURFU0NSSVBUSU9OID0gIlB5dGhvbiBtb2R1bGUgdG8gc3VwcG9ydCB0d2l0dGVyIEFQSSIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9OGY3MDJiNDg5YWNiNjg2M2NlYzhiMjYxYTU1OTMxZDgiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4YWVmZjI3OGI3Y2VmY2QzODRjNjU5MjliYzkyMWUyYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4YWJkODI4YmE1MWE4NWEyYjViYjczNzM3MTVkNmQzYmIzMmQxOGFjNjI0ZTNhNGRiMDJlNGVmOGFiNDgzMTZiIgotCi1QWVBJX1BBQ0tBR0UgPSAidHdlZXB5IgotCi1SREVQRU5EU18ke1BOfSArPSAiXAotICAgICAgICAke1BZVEhPTl9QTn0tcGlwIFwKLSAgICAgICAgJHtQWVRIT05fUE59LXB5c29ja3MgXAotICAgICAgICAke1BZVEhPTl9QTn0tcmVxdWVzdHMgXAotICAgICAgICAke1BZVEhPTl9QTn0tc2l4IFwKLSAgICAgICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR3aXR0ZXJfMy44LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpdHRlcl8zLjguMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEyOGIwOC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdpdHRlcl8zLjguMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotcmVxdWlyZSBweXRob24tdHdpdHRlci5pbmMKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d29maXNoLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d29maXNoLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzlhYjI4NS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdvZmlzaC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMyArMCwwIEBACi1TVU1NQVJZID0gIkJpbmRpbmdzIGZvciB0aGUgVHdvZmlzaCBpbXBsZW1lbnRhdGlvbiBieSBOaWVscyBGZXJndXNvbiIKLURFU0NSSVBUSU9OID0gIkJpbmRpbmdzIGZvciB0aGUgVHdvZmlzaCBpbXBsZW1lbnRhdGlvbiBieSBOaWVscyBGZXJndXNvblwKLSBsaWJ0d29maXNoLWRldi4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9rZXliYXNlL3B5dGhvbi10d29maXNoIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zM2E2M2FiZjZkNzU2N2IxNjg5ZDhjZTY5ZjAwZTQzYiIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ3ZDIyZjE2ZGM0ZmZhMGUzYWUyMjAwNjU0MDMzYWJlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIwOWQ4YmI1MGQzM2IyM2ZmMzRjYWZiMWY5MjA5Zjg1OGY3NTI5MzVjNmE1YzkwMWVmYjkyYTQxYWNiODMwZmEiCi0KLWluaGVyaXQgcHlwaQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHdvZmlzaF8wLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d29maXNoXzAuMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWIwMjE1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10d29maXNoXzAuMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi10d29maXNoLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHlwaW5nLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10eXBpbmcuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYjhlZTgxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10eXBpbmcuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1TVU1NQVJZID0gIlNpbXBsZSBQeXRob24gbW9kdWxlIGRlZmluZWQgYnkgUEVQIDQ4NC4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL3R5cGluZyIKLUxJQ0VOU0UgPSAiUFNGIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NjRmYzJiMzBiNjdkMGE4NDIzYzI1MGUwMzg2ZWQ3MmYiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwYTFlYmQ0YWY2NWI0NzY5ZTMzNDU5MDA0ZWIyMDM0NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MWRmZTZmM2Y3MDZlZThjYzMyZDM4ZWRiYmYzMDRlOWI3NTgzZmIzNzEwOGZlZjM4MjI5NjE3ZjhiM2ViYTIzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHlwaW5nXzMuNy40LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdHlwaW5nXzMuNy40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0Y2UwNjMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR5cGluZ18zLjcuNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tdHlwaW5nLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR6bG9jYWwuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR6bG9jYWwuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZTQyM2QyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10emxvY2FsLmluYworKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IHRvIHJldHVybiB0emluZm8gd2l0aCB0aGUgbG9jYWwgdGltZXpvbmUgaW5mb3JtYXRpb24iCi1IT01FUEFHRSA9ICJodHRwczovL3B5cGkub3JnL3Byb2plY3QvdHpsb2NhbC8iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT01N2UwYmQ2MTY0M2Q4MWQwNTY4M2NkY2U2NWIxMWQxMCIKLQotU1JDX1VSSVttZDVzdW1dID0gImIxNDI2MmNlY2NhMTZlYzkyMjBjYThkZmYyY2E3YzVkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk0OWI5ZGQ1YmE0YmUxNzE5MGE4MGMwMjY4MTY3ZDdlNmM5MmM2MmIzMDAyNmNmOTc2NGNhZjNlMzA4ZTU1OTAiCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi10emxvY2FsXzIuMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR6bG9jYWxfMi4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3OTgwZGQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXR6bG9jYWxfMi4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi10emxvY2FsLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVqc29uLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11anNvbi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxOGRkZjQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVqc29uLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgID0gIlVsdHJhIGZhc3QgSlNPTiBlbmNvZGVyIGFuZCBkZWNvZGVyIGZvciBQeXRob24iCi1ERVNDUklQVElPTiA9ICJVbHRyYUpTT04gaXMgYW4gdWx0cmEgZmFzdCBKU09OIGVuY29kZXIgYW5kIGRlY29kZXIgd3JpdHRlbiBpbiBwdXJlIEMgd2l0aCBiaW5kaW5ncyBmb3IgUHl0aG9uIDIuNSsgYW5kIDMuIgotCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ODhkZjhlNzhiOWVkZmQ3NDQ5NTM4NjIxNzlmMmQxNGUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MmY3N2IwY2NlNjg2ZGZhNGRhMmU2ODQ4MGIxZGQyNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmNjYwNzNlNTUwNmU5MWQyMDRhYjBjNjE0YTE0OGQ1YWE5MzhiZGJmMTA0NzUxYmU2NmY4YWQ3YTIyMmY1Zjg2IgotCi1pbmhlcml0IHB5cGkKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAotICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKLSAgICAiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11anNvbl8xLjM1LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVqc29uXzEuMzUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzYzZhZTYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVqc29uXzEuMzUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tdWpzb24uaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdW5pZGlmZi5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdW5pZGlmZi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjMTIwNjIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVuaWRpZmYuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJVbmlmaWVkIGRpZmYgcGFyc2luZy9tZXRhZGF0YSBleHRyYWN0aW9uIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9tYXRpYXNiL3B5dGhvbi11bmlkaWZmIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00YzQzNGIwOGVmNDJmZWEyMzViYjAxOWI1ZTVhOTdiMyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQ3ZjY2OWQ3MjczNTQxZmVjNDVlNGNjMGZiYThkOGU5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljOWFiNWZiOTZiNjk4OGI0Y2Q1ZGVmNmIyNzU0OTI0NDJjMDRhNTcwOTAwZDMzYWE2MzczMTA1NzgwMDI1YmMiCi0KLWluaGVyaXQgcHlwaQotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tY29kZWNzIFwKLSAgICAke1BZVEhPTl9QTn0taW8gXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVuaWRpZmZfMC41LjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdW5pZGlmZl8wLjUuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmRiM2QyNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdW5pZGlmZl8wLjUuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBweXRob24tdW5pZGlmZi5pbmMKLWluaGVyaXQgc2V0dXB0b29scwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVybGxpYjMuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVybGxpYjMuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiN2VkYzAzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi11cmxsaWIzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIEhUVFAgbGlicmFyeSB3aXRoIHRocmVhZC1zYWZlIGNvbm5lY3Rpb24gcG9vbGluZywgZmlsZSBwb3N0IHN1cHBvcnQsIHNhbml0eSBmcmllbmRseSwgYW5kIG1vcmUiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2hhem93L3VybGxpYjMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT02NTcxNWMyZWI5NjEzMTNkNzFiMjk3ZGQ1YTA0Zjg1ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg1ZTFlMzkyNWY4YzEwOTUxNzJiZmYzNDNmMzMxMmVkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYzYzVmZDUxNzQ3ZDQ1MGQ0ZGNmNmY5MjNjODFmNzhmODExYWFiODIwNWZkYTY0YjBhYmEzNGE0ZTQ4YjA3NDUiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LWNlcnRpZmkgXAotICAgICR7UFlUSE9OX1BOfS1jcnlwdG9ncmFwaHkgXAotICAgICR7UFlUSE9OX1BOfS1lbWFpbCBcCi0gICAgJHtQWVRIT05fUE59LWlkbmEgXAotICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAotICAgICR7UFlUSE9OX1BOfS1weW9wZW5zc2wgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotIgotCi1DVkVfUFJPRFVDVCA9ICJ1cmxsaWIzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdXJsbGliM18xLjI1LjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdXJsbGliM18xLjI1LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjODFmMWQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXVybGxpYjNfMS4yNS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24tdXJsbGliMy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12Y3ZlcnNpb25lcl8yLjE2LjAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12Y3ZlcnNpb25lcl8yLjE2LjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZjYzRhYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdmN2ZXJzaW9uZXJfMi4xNi4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiB2Y3ZlcnNpb25lciwgYXV0b21hZ2ljYWxseSB1cGRhdGUgdGhlIHByb2plY3QncyB2ZXJzaW9uIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2hhYm5hYml0L3ZjdmVyc2lvbmVyIgotCi1MSUNFTlNFID0gIklTQyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT04MjdhN2E5MWE4ZDIwZDNjNjY2YjY2NWNkOTZkYjhlMyIKLQotU1JDX1VSSVttZDVzdW1dID0gImFhYjZlZjVlMGNmODYxNGExYjExNDBlZDViN2YxMDdkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhZTYwYzE3YTQ3OTc4MWY0NGE0MDEwNzAxODMzZjE4MjkxNDBiMWVlY2NkMjU4NzYyYTc0OTc0YWEwNmUxOWIiCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi0KLVJERVBFTkRTXyR7UE59ICs9ICJcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotICAgICIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZlcnNpb250b29scy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdmVyc2lvbnRvb2xzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjBlNjk2Zi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdmVyc2lvbnRvb2xzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLVNVTU1BUlkgPSAiU21hcnQgcmVwbGFjZW1lbnQgZm9yIHBsYWluIHR1cGxlIHVzZWQgaW4gX192ZXJzaW9uX18iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUhPTUVQQUdFID0gImh0dHBzOi8vbGF1bmNocGFkLm5ldC92ZXJzaW9udG9vbHMiCi1MSUNFTlNFID0gIkxHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NldHVwLnB5O2JlZ2lubGluZT0zO2VuZGxpbmU9MjA7bWQ1PTAyMTkzNzIxYTM4ZmQ4YTA1YTRkZGViN2RmOGUyOTRkIgotCi1pbmhlcml0IHB5cGkKLQotU1JDX1VSSVttZDVzdW1dID0gIjYwMmI3ZGI4ZWVhMzBkZDI5YTFkNDUxOTk3YWRmMjUxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImE5NjkzMzI4ODdhMThhOWM5OGIwZGYwZWE0ZDRjYTc1OTcyZjI0Y2E5NGYwNmZiODdkNTkxMzc3ZTgzNDE0ZjYiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdmVyc2lvbnRvb2xzXzEuOS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZlcnNpb250b29sc18xLjkuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmJmZTgyZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdmVyc2lvbnRvb2xzXzEuOS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXZlcnNpb250b29scy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12aXNpdG9yLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12aXNpdG9yLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGMyMjg4Yy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tdmlzaXRvci5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLVNVTU1BUlkgPSAiQSB0aW55IHB5dGhvbmljIHZpc2l0b3IgaW1wbGVtZW50YXRpb24uIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PTgyMjcxODAxMjY3OTdhMDE0OGY5NGY0ODNmM2UxNDg5IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTRhMDI0ZWQwZWMxYjAyYjQ0OTdjMTUyNjdkMzE5Y2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmM3Mzc5MDNiMmI2ODY0ZWJjNjE2N2VlZjdjZjNiOTk3MTI2ZjFhYTk0YmRmNTkwZjkwZjE0MzZkMjNlNDgwYSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12aXNpdG9yXzAuMS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZpc2l0b3JfMC4xLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlZTI1YTUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZpc2l0b3JfMC4xLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi12aXNpdG9yLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZvYmplY3RfMC45LjYuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi12b2JqZWN0XzAuOS42LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMWYyZjUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXZvYmplY3RfMC45LjYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIHBhY2thZ2UgZm9yIHBhcnNpbmcgYW5kIGdlbmVyYXRpbmcgdkNhcmQgYW5kIHZDYWxlbmRhciBmaWxlcyIKLUhPTUVQQUdFID0gImh0dHA6Ly92b2JqZWN0LnNreWhvdXNlY29uc3VsdGluZy5jb20vIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLTIuMC50eHQ7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMDYzNTdlOTZhODRkNTVkZTJhNzFiMzZkMzlmNjg1M2UiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTY1MTJhZWM3NGI5MGFiYjcxZjZiNTM4OThkZDdmZTQ3MzAwY2M5NDAxMDRjNGY3OTE0OGYwNjcxZjc5MDEwMSIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tZGF0ZXV0aWwgXAotICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKLSAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2FpdHJlc3MuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdhaXRyZXNzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMyODhkNS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2FpdHJlc3MuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotU1VNTUFSWSA9ICJBIFdTR0kgc2VydmVyIGZvciBQeXRob24iCi1ERVNDUklQVElPTiA9ICJXYWl0cmVzcyBpcyBtZWFudCB0byBiZSBhIHByb2R1Y3Rpb24tcXVhbGl0eSBwdXJlLVB5dGhvbiBXU0dJIFwKLSAgICBzZXJ2ZXIgd2l0aCB2ZXJ5IGFjY2VwdGFibGUgcGVyZm9ybWFuY2UuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL1B5bG9ucy93YWl0cmVzcyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJaUEwtMi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTc4Y2NiMzY0MGRjODQxZTFiYWVjYjNlMjdhNjk2NmIyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZmRlZWQ3ZWMzMmJiYmEwMTFlOTA4MDEyMDgzNzhjODkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjdhNjBhMzc2ZjBlYjMzNWVkODg5NjdjNDJiNzM5ODNhNThkNjZhMmE3MmViOTAwOWE0MjcyNWY3NDUzYjE0MiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13YWl0cmVzc18xLjQuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13YWl0cmVzc18xLjQuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZhNjI4ZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2FpdHJlc3NfMS40LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scyBweXBpCi1yZXF1aXJlIHB5dGhvbi13YWl0cmVzcy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13Y3dpZHRoLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13Y3dpZHRoLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmJkMGQ1MC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2N3aWR0aC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw4ICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3IgYnVpbGRpbmcgcG93ZXJmdWwgaW50ZXJhY3RpdmUgY29tbWFuZCBsaW5lcyBpbiBQeXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0xMWZiYTQ3Mjg2MjU4NzQ0YTZiYzZlNDM1MzBjMzJhMSIKLQotU1JDX1VSSVttZDVzdW1dID0gImRjNjY3N2QwOTllNmY0OWMwZjZmYmMzMTBkZTI2MWU5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImYyOGIzZThhNjQ4M2U1ZDQ5ZTdmODk0OWFjMWE3ODMxNGU3NDAzMzNhZTMwNWI0YmE1ZGVmZDNlNzRmYjM3YTgiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13Y3dpZHRoXzAuMS44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdjd2lkdGhfMC4xLjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVmMTA3YzEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdjd2lkdGhfMC4xLjguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi13Y3dpZHRoLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYmNvbG9ycy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViY29sb3JzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWYyNTRlMy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViY29sb3JzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLVNVTU1BUlkgPSAiU2ltcGxlIFB5dGhvbiBtb2R1bGUgZm9yIHdvcmtpbmcgd2l0aCBIVE1ML0NTUyBjb2xvciBkZWZpbml0aW9ucy4iCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE5N2FkZDAxNjA4N2U2ODg0YTAxMmIwZjE4NWQ0NGFkIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDA4OTBkYjM4YjJhODU2ZTUyNmE1Njg4NjQwMjVmZTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDMwNTYyZjYyNDQ2N2E5OTAxZjBiNDU1ZmVmMDU0ODZhODhjZmI1ZGFhMWUzNTZiZDRhYWNlYTA0Mzg1MGI1OSIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIlwKLSAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKLSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYmNvbG9yc18xLjguMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJjb2xvcnNfMS44LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEwYjY3MDguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYmNvbG9yc18xLjguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXdlYmNvbG9ycy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJkYXZfMC4xLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViZGF2XzAuMS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YTY0MzdkLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJkYXZfMC4xLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGlzIHByb2plY3QgYWltcyB0byBwcm92aWRlIGFuIG9iamVjdC1vcmllbnRlZCBQeXRob24gV2ViREFWIGNsaWVudC1zaWRlIGxpYnJhcnlcCi0gICAgICAgICAgICAgICBiYXNlZCBvbiBQeXRob25gcyBzdGFuZGFyZCBodHRwbGliIGFuZCBHcmVnIFN0ZWluYHMgZGF2bGliLlwKLSAgICAgICAgICAgICAgIFRoZSBjbGllbnQgc2hhbGwgZnVsbHkgc3VwcG9ydCBSRkNzIDQ5MTggKGJhc2ljIHNwZWNpZmljYXRpb24pLFwKLSAgICAgICAgICAgICAgIDM3NDQgKGFjY2VzcyBjb250cm9sKSwgYW5kIDMyNTMgKHZlcnNpb25pbmcpLiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL3dlYmRhdi9XZWJkYXZDbGllbnQucHk7ZW5kbGluZT0xNTttZDU9YTE1MjBmYWQ4NTlmZWI3YjBkN2YwNTI3N2JjNmNlNDgiCi1IT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL3B5dGhvbndlYmRhdmxpYi8iCi1TUkNOQU1FID0gIlB5dGhvbl9XZWJEQVZfTGlicmFyeSIKLURFUEVORFMgPSAicHl0aG9uIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9weXRob253ZWJkYXZsaWIvUHl0aG9uJTIwV2ViREFWJTIwTGlicmFyeSUyMC0lMjAke1BWfS8ke1NSQ05BTUV9LSR7UFZ9LnppcCIKLVNSQ19VUklbbWQ1c3VtXSA9ICI4ZTQ5ZTBlY2M1YjQzMjdjNGY3NTJhNTQ0ZWUxMGUxYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MmMwMjlhZDFlMjVkZTk1MGY1OWMyZjE4MTJkMDA5ZDJjMTY5MWI3MGU0YjViMDlmMWFmOTAwNmU4ZmQ1ZjIzIgotCi1TID0gIiR7V09SS0RJUn0vJHtTUkNOQU1FfS0ke1BWfSIKLQotaW5oZXJpdCBkaXN0dXRpbHMKLQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYmVuY29kaW5ncy5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViZW5jb2RpbmdzLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTJiODQxMC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViZW5jb2RpbmdzLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiQ2hhcmFjdGVyIGVuY29kaW5nIGFsaWFzZXMgZm9yIGxlZ2FjeSB3ZWIgY29udGVudCIKLUxJQ0VOU0UgPSAiQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTg7ZW5kbGluZT04O21kNT1lOTEwYjM1YjBlZjRlMWY2NjViOWE3NWQ2YWZiNzcwOSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjMyZjZlMjYxZDUyZTU3YmY3ZTFjNGQ0MTU0NmQxNWI4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIzNmExYzI0NWYyZDMwNDk2NWViNGUwYTgyODQ4Mzc5MjQxZGMwNGI4NjVhZmNjNGFhYjE2NzQ4NTg3ZTE5MjMiCi0KLWluaGVyaXQgcHlwaQotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tY29kZWNzIFwKLSAgICAke1BZVEhPTl9QTn0tanNvbiBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJlbmNvZGluZ3NfMC41LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2ViZW5jb2RpbmdzXzAuNS4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZGUyZWQxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJlbmNvZGluZ3NfMC41LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24td2ViZW5jb2RpbmdzLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYnNvY2tldC1jbGllbnQuaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlYnNvY2tldC1jbGllbnQuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDIxNGIyLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZWJzb2NrZXQtY2xpZW50LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAid2Vic29ja2V0IGNsaWVudCBmb3IgcHl0aG9uIgotREVTQ1JJUFRJT04gPSAiXAotd2Vic29ja2V0LWNsaWVudCBtb2R1bGUgaXMgV2ViU29ja2V0IGNsaWVudCBmb3IgcHl0aG9uLiBcCi1UaGlzIHByb3ZpZGUgdGhlIGxvdyBsZXZlbCBBUElzIGZvciBXZWJTb2NrZXQuIEFsbCBBUElzIFwKLWFyZSB0aGUgc3luY2hyb25vdXMgZnVuY3Rpb25zLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS93ZWJzb2NrZXQtY2xpZW50L3dlYnNvY2tldC1jbGllbnQiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM0YzRhOThmYmM0ODM2YjgxYzhjNjRkNmVjYjAxZmMxIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODk0ODRiZDVkYWM3MTEyM2FlNmEwOWIyZjkwZmU2MmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWZkNTUyMDg3OGI2OGI4NGI1NzQ4YmIzMGU1OTJiMTBkMGE5MTUyOWQ1MzgzZjc0ZjQ5NjRlNzJiMjk3ZmQzYSIKLQotUFlQSV9QQUNLQUdFID0gIndlYnNvY2tldF9jbGllbnQiCi1pbmhlcml0IHB5cGkKLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgICR7UFlUSE9OX1BOfS1zaXggXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlcmt6ZXVnLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZXJremV1Zy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyOTJkOTMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdlcmt6ZXVnLmluYworKysgL2Rldi9udWxsCkBAIC0xLDQ3ICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIFN3aXNzIEFybXkga25pZmUgb2YgUHl0aG9uIHdlYiBkZXZlbG9wbWVudCIKLURFU0NSSVBUSU9OID0gIlwKLVdlcmt6ZXVnIHN0YXJ0ZWQgYXMgc2ltcGxlIGNvbGxlY3Rpb24gb2YgdmFyaW91cyB1dGlsaXRpZXMgZm9yIFdTR0kgXAotYXBwbGljYXRpb25zIGFuZCBoYXMgYmVjb21lIG9uZSBvZiB0aGUgbW9zdCBhZHZhbmNlZCBXU0dJIHV0aWxpdHkgbW9kdWxlcy4gXAotSXQgaW5jbHVkZXMgYSBwb3dlcmZ1bCBkZWJ1Z2dlciwgZnVsbCBmZWF0dXJlZCByZXF1ZXN0IGFuZCByZXNwb25zZSBvYmplY3RzLCBcCi1IVFRQIHV0aWxpdGllcyB0byBoYW5kbGUgZW50aXR5IHRhZ3MsIGNhY2hlIGNvbnRyb2wgaGVhZGVycywgSFRUUCBkYXRlcywgXAotY29va2llIGhhbmRsaW5nLCBmaWxlIHVwbG9hZHMsIGEgcG93ZXJmdWwgVVJMIHJvdXRpbmcgc3lzdGVtIGFuZCBhIGJ1bmNoIFwKLW9mIGNvbW11bml0eSBjb250cmlidXRlZCBhZGRvbiBtb2R1bGVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93ZXJremV1Zy5wb2Nvby5vcmcvIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnJzdDttZDU9NWRjODgzMDA3ODZmMWMyMTRjMWU5ODI3YTUyMjk0NjIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1YjIzYjQ5NTNlZmM0ZjUyYjFkMGIzM2FmNmY3Y2QyZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3MjgwOTI0NzQ3YjU3MzNiMjQ2ZmUyMzk3MjE4NmM2YjM0OGY5YWUyOTcyNDEzNWE2ZGZjMWU1M2NlYTQzM2U3IgotCi1QWVBJX1BBQ0tBR0UgPSAiV2Vya3pldWciCi0KLUNMRUFOQlJPS0VOID0gIjEiCi0KLVBBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKLUZJTEVTXyR7UE59LXRlc3RzKz0gIiBcCi0gICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vd2Vya3pldWcvdGVzdCogXAotICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3dlcmt6ZXVnL19fcHljYWNoZV9fL3Rlc3QqIFwKLSAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS93ZXJremV1Zy9jb250cmliL3Rlc3QqIFwKLSAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS93ZXJremV1Zy9jb250cmliL19fcHljYWNoZV9fL3Rlc3QqIFwKLSIKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKLSAgICAke1BZVEhPTl9QTn0tZGlmZmxpYiBcCi0gICAgJHtQWVRIT05fUE59LWVtYWlsIFwKLSAgICAke1BZVEhPTl9QTn0taHRtbCBcCi0gICAgJHtQWVRIT05fUE59LWlvIFwKLSAgICAke1BZVEhPTl9QTn0tanNvbiBcCi0gICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCi0gICAgJHtQWVRIT05fUE59LW5ldHNlcnZlciBcCi0gICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAotICAgICR7UFlUSE9OX1BOfS1wa2d1dGlsIFwKLSAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKLSAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSAgICAke1BZVEhPTl9QTn0tdW5peGFkbWluIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tdGVzdHMgPSAiIFwKLSAgICAke1BOfSBcCi0gICAgJHtQWVRIT05fUE59LXVuaXR0ZXN0IFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZXJremV1Z18wLjE2LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td2Vya3pldWdfMC4xNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYjQxMTYxLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13ZXJremV1Z18wLjE2LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi13ZXJremV1Zy5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotICAgICR7UFlUSE9OX1BOfS16bGliIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13aG9vc2guaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdob29zaC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0MGIzMjQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdob29zaC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1TVU1NQVJZID0gIkZhc3QsIHB1cmUtUHl0aG9uIGZ1bGwgdGV4dCBpbmRleGluZywgc2VhcmNoLCBhbmQgc3BlbGwgY2hlY2tpbmcgbGlicmFyeS4iCi1ERVNDUklQVElPTiA9ICJcCi1XaG9vc2ggaXMgYSBmYXN0LCBmZWF0dXJlZnVsIGZ1bGwtdGV4dCBpbmRleGluZyBhbmQgc2VhcmNoaW5nIGxpYnJhcnkgXAotaW1wbGVtZW50ZWQgaW4gcHVyZSBQeXRob24uIFByb2dyYW1tZXJzIGNhbiB1c2UgaXQgdG8gZWFzaWx5IGFkZCBzZWFyY2ggXAotZnVuY3Rpb25hbGl0eSB0byB0aGVpciBhcHBsaWNhdGlvbnMgYW5kIHdlYnNpdGVzLiBFdmVyeSBwYXJ0IG9mIGhvdyBcCi1XaG9vc2ggd29ya3MgY2FuIGJlIGV4dGVuZGVkIG9yIHJlcGxhY2VkIHRvIG1lZXQgeW91ciBuZWVkcyBleGFjdGx5LiIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTA1MzAzMTg2ZGVmYzYxNDExNDM2Mjk5NjFjN2M4YTYwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODkzNDMzZTljMDUyNWFjMDQzZGYzM2U2ZTA0Y2FhYjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTA4NTczNzVmNjNlOTA0MWUwM2ZlZGQ1Yjc1NDFmOTdjZjc4OTE3YWMxYjZiMDZjMWZjYzliNDUzNzVkZGE2OSIKLQotUFlQSV9QQUNLQUdFID0gIldob29zaCIKLVBZUElfUEFDS0FHRV9FWFQgPSAiemlwIgotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICAke1BZVEhPTl9QTn0tZW1haWwgXAotICAgICR7UFlUSE9OX1BOfS1tdWx0aXByb2Nlc3NpbmcgXAotICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAotICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKLSAgICAke1BZVEhPTl9QTn0tcGlja2xlIFwKLSAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAotICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdob29zaF8yLjcuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13aG9vc2hfMi43LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNiNDI5MWYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdob29zaF8yLjcuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXdob29zaC5pbmMKLQotUkRFUEVORFNfJHtQTn0gKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdyYXB0LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13cmFwdC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ5NmM3M2YuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdyYXB0LmluYworKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBQeXRob24gbW9kdWxlIGZvciBkZWNvcmF0b3JzLCB3cmFwcGVycyBhbmQgbW9ua2V5IHBhdGNoaW5nLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93cmFwdC5yZWFkdGhlZG9jcy5vcmcvIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWZkZmMwMTliNTdhZmZiZTFkN2EzMmUzZDM0ZTgzZGI0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiY2MxNWMwMDFiMTI5ZjgxZWIyZjc5YjE1ZWI5OWZmZTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTY1YTAyMWZkMTk0MTk0NzZiOTM2MmIwNWVlYWEwOTQxNzhkZTY0ZjgzNjFlNDQ0NjhmOWU5ZDc4NDM5MDFlMSIKLQotaW5oZXJpdCBweXBpCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAotICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdyYXB0XzEuMTEuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13cmFwdF8xLjExLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJiNDI0NzYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXdyYXB0XzEuMTEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi13cmFwdC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13dGZvcm1zLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi13dGZvcm1zLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTNjNWJjNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3Rmb3Jtcy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJBIGZsZXhpYmxlIGZvcm1zIHZhbGlkYXRpb24gYW5kIHJlbmRlcmluZyBsaWJyYXJ5IGZvciBweXRob24gd2ViIGRldmVsb3BtZW50LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvV1RGb3JtcyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9YzQ2NjBjMTMyNzcwZDVkMGE1NzU3NTQxZjZiNzk0OTMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0MWMwMDA4ZGJlN2JkOTg4OTJjNThmNzQ1N2E0NmE0YSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwY2RiYWMzZTdmNjg3ODA4NmMzMzRhYTI1ZGM1YTMzODY5YTM5NTRlOWQxZTAxNTEzMGQ2NWE2OTMwOWIzYjYxIgotCi1QWVBJX1BBQ0tBR0UgPSAiV1RGb3JtcyIKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKLSAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCi0gICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXd0Zm9ybXNfMi4yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3Rmb3Jtc18yLjIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmRiMDE1ZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24td3Rmb3Jtc18yLjIuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXd0Zm9ybXMuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teGxyZC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teGxyZC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4N2QyYWIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhscmQuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBkZXZlbG9wZXJzIHRvIGV4dHJhY3QgZGF0YSBmcm9tIE1pY3Jvc29mdCBFeGNlbCAodG0pIHNwcmVhZHNoZWV0IGZpbGVzIgotREVTQ1JJUFRJT04gPSAiRXh0cmFjdCBkYXRhIGZyb20gRXhjZWwgc3ByZWFkc2hlZXRzICgueGxzIGFuZCAueGxzeCxcCi0gdmVyc2lvbnMgMi4wIG9ud2FyZHMpIG9uIGFueSBwbGF0Zm9ybS4gUHVyZSBQeXRob24gKDIuNiwgMi43LCAzLjIrKS4gXAotU3Ryb25nIHN1cHBvcnQgZm9yIEV4Y2VsIGRhdGVzLiBVbmljb2RlLWF3YXJlLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucHl0aG9uLWV4Y2VsLm9yZy8iCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT01ZjQyNDRkNTFmY2MxZTdjYzJkNDNlOTY4OTFiMmY4MCIKLQotU1JDX1VSSVttZDVzdW1dID0gImU1ZDViOTY5MjRkNzkxYjIyODk4YjYyMmViM2U5MThlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU0NmViMzZjZWU4ZGI0MGMzZWFhNDZjMzUxZTY3ZmZlZTZlZWI1ZmEyNjUwYjcxYmM0Yzc1OGEyOWExYjI5YjIiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tY29tcHJlc3Npb24gJHtQWVRIT05fUE59LWlvICR7UFlUSE9OX1BOfS1wcHJpbnQgJHtQWVRIT05fUE59LXNoZWxsIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teGxyZF8xLjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14bHJkXzEuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYTRkNzA5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14bHJkXzEuMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24teGxyZC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14c3RhdGljLWZvbnQtYXdlc29tZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teHN0YXRpYy1mb250LWF3ZXNvbWUuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMTNjYjgzLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14c3RhdGljLWZvbnQtYXdlc29tZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNyArMCwwIEBACi1ERVNDUklQVElPTiA9ICJGb250IEF3ZXNvbWUgaWNvbnMgcGFja2FnZWQgZm9yIHNldHVwdG9vbHMgKGVhc3lfaW5zdGFsbCkgLyBwaXAuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9YU3RhdGljLUZvbnQtQXdlc29tZSIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJBcGFjaGUtMiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT0zMTNkMDIxODk4Njk0Y2QyYjBlYTY1MDhiZGZlNTFhMiIKLQotUFlQSV9QQUNLQUdFID0gIlhTdGF0aWMtRm9udC1Bd2Vzb21lIgotCi1pbmhlcml0IHB5cGkKLQotU1JDX1VSSVttZDVzdW1dID0gIjE0MWEwZTlhN2UyMWU4MmY5MjI1NzNhMDBhZTBjMTY2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImUwMWZiNDgwY2FhYTdjNzk2M2RjYjMzMjhhNDcwMGU2MzFiZWY2MDcwZGIwZThiNjg1ODE2ZDIyMGU2ODVmNmMiCi0KLURFUEVORFMgKz0gIiBcCi0gICAgICAgICR7UFlUSE9OX1BOfS14c3RhdGljIFwKLSAgICAgICAgJHtQWVRIT05fUE59LXBpcCBcCi0gICAgICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14c3RhdGljLWZvbnQtYXdlc29tZV80LjcuMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhzdGF0aWMtZm9udC1hd2Vzb21lXzQuNy4wLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQxZTg1ZjQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXhzdGF0aWMtZm9udC1hd2Vzb21lXzQuNy4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzCi1yZXF1aXJlIHB5dGhvbi14c3RhdGljLWZvbnQtYXdlc29tZS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14c3RhdGljLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14c3RhdGljLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ0ZDY2OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teHN0YXRpYy5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1ERVNDUklQVElPTiA9ICJYU3RhdGljIGJhc2UgcGFja2FnZSB3aXRoIG1pbmltYWwgc3VwcG9ydCBjb2RlIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9YU3RhdGljIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS50eHQ7bWQ1PTE0MTg2ODQyNzJmODVmNDAwY2ViZjFiMWEyNTVjNWNkIgotCi1QWVBJX1BBQ0tBR0UgPSAiWFN0YXRpYyIKLQotU1JDX1VSSVttZDVzdW1dID0gImRlYTE3MmI3YjE0YjBkYmNkNWVkNjMwNzUyMjFhZjRiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgwYjc4ZGZlMzdiY2U2ZGVlNDM0M2Q2NGM2NTM3NWE4MGJjZjM5OWI0NmRkNDdjMGM3ZDU2MTYxNTY4YTIzYTgiCi0KLURFUEVORFMgKz0gIiBcCi0gICAgICAgICR7UFlUSE9OX1BOfS1waXAgXAotICAgICAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teHN0YXRpY18xLjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14c3RhdGljXzEuMC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MDczMDM3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14c3RhdGljXzEuMC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29scwotcmVxdWlyZSBweXRob24teHN0YXRpYy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi14eGhhc2guaW5jIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXh4aGFzaC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwZjVlOWMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXh4aGFzaC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw3ICswLDAgQEAKLVNVTU1BUlkgPSAieHhoYXNoIGlzIGEgUHl0aG9uIGJpbmRpbmcgZm9yIHRoZSB4eEhhc2ggbGlicmFyeSBieSBZYW5uIENvbGxldC4iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NWE4ZDc2MjgzNTE0YTFiN2U2YTQxNGFiYTM4NjI5YjUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjZTljYmJjYzg5NjIwZmQ0N2EyNDY4YmFkZDA4ZGNmMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4YjZiMWFmZTc3MzFkN2Q5Y2JiMDM5OGI0YTgxMWViYjVlNmJlNWMxNzRmNzJjNjhhYmY4MWY5MTlhNDM1ZGU5IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXlhcHBpLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi15YXBwaS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU0ZDQwODcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXlhcHBpLmluYworKysgL2Rldi9udWxsCkBAIC0xLDE2ICswLDAgQEAKLVNVTU1BUlkgID0gIllldCBBbm90aGVyIFB5dGhvbiBQcm9maWxlciIKLUhPTUVQQUdFID0gImh0dHA6Ly95YXBwaS5nb29nbGVjb2RlLmNvbS8iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTlhMTkzYzEzZjM0Njg4NGU1OTdhY2RjYWM3ZmU5YWM4IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYTU0NTEwMWFhOGE0MzViMDc4MGYwNmY0NzIzZjU4YzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2Y4MTQxMzE1MTVkNTFkYjYyYjFhMzQ2OGJjYjg0ZGUzMDQ5OTEyNDc1MjgwNmE1YTZlMTFjYWYwYjQzNDRiZiIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAotICAgICR7UFlUSE9OX1BOfS1waWNrbGUgXAotICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAotICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi15YXBwaV8xLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teWFwcGlfMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhM2JkZGU1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi15YXBwaV8xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXlhcHBpLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teWFybC5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24teWFybC5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk4MDY2ZDcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXlhcmwuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgbW9kdWxlIHByb3ZpZGVzIGhhbmR5IFVSTCBjbGFzcyBmb3IgdXJsIHBhcnNpbmcgYW5kIGNoYW5naW5nIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Fpby1saWJzL3lhcmwvIgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjMzNGZjOTBkNDU5ODNkYjMxOGY1NGZkNWJmNmM5MGIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwOGJhMGQ2ZTE4ZjQ2MGI0NGQ5ZTU0NTlmM2QyMTdiYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1OGNkOWM0NjllY2VkNTU4Y2Q4MWFhM2Y0ODRiMjkyNGU4ODk3MDQ5ZTA2ODg5ZThmZjI1MTA0MzViN2VmNzRiIgotCi1QWVBJX1BBQ0tBR0UgPSAieWFybCIKLWluaGVyaXQgcHlwaQotUkRFUEVORFNfJHtQTn0gPSAiXAotICAgICR7UFlUSE9OX1BOfS1tdWx0aWRpY3QgXAotICAgICR7UFlUSE9OX1BOfS1pZG5hIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi16aXBwLmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi16aXBwLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWY2Mzg1Mi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24temlwcC5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJCYWNrcG9ydCBvZiBwYXRobGliLWNvbXBhdGlibGUgb2JqZWN0IHdyYXBwZXIgZm9yIHppcCBmaWxlcyIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9qYXJhY28vemlwcCIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTMzZjM4YmJmNDdkNDhjNzBmZTBkNDBlNWY3NzQ5OGUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkNDQ1MWE3NDlkOGE3YzNjMzkyYTllZGQxODY0YTkzNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzNzE4YjFjYmNkOTYzYzdkNGM1NTExYTgyNDA4MTI5MDQxNjRiN2YzODFiNjQ3MTQzYTg5ZDNiOThmOWJjZDhlIgotCi1ERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tc2V0dXB0b29scy1zY20tbmF0aXZlIgotUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1tb3JlLWl0ZXJ0b29scyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXppcHBfMC42LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24temlwcF8wLjYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODU5NDlhMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24temlwcF8wLjYuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXppcHAuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tem9wZWludGVyZmFjZS5pbmMgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tem9wZWludGVyZmFjZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRmOGYxZmYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXpvcGVpbnRlcmZhY2UuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJJbnRlcmZhY2UgZGVmaW5pdGlvbnMgZm9yIFpvcGUgcHJvZHVjdHMiCi1MSUNFTlNFID0gIlpQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PWU1NGZkNzc2Mjc0YzFiNzQyM2VjMTI4OTc0YmQ5ZDQ2IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMWJjNjY3NTgyNzVjNWViNjZkMTY5YWNiYTNjOGU1MGUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGJiOTM3ZTk5OGJlOWQ1ZTM0NWY0ODY2OTNlNDc3YmE3OWU0MzQ0Njc0NDg0MDAxYTBiNjQ2YmUxZDUzMDQ4NyIKLQotUFlQSV9QQUNLQUdFID0gInpvcGUuaW50ZXJmYWNlIgotCi1QQUNLQUdFUyA9LiAiJHtQTn0tdGVzdCAiCi0KLVJQUk9WSURFU18ke1BOfSArPSAiem9wZS1pbnRlcmZhY2VzIgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiR7UFlUSE9OX1BOfS1kYXRldGltZSIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmVnZy8qLyovLmRlYnVnIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS96b3BlL2ludGVyZmFjZS8qLmMiCi1GSUxFU18ke1BOfS1kb2MgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3pvcGUvaW50ZXJmYWNlLyoudHh0IgotRklMRVNfJHtQTn0tdGVzdCArPSAiIFwKLSAgICAgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vem9wZS9pbnRlcmZhY2UvdGVzdHMgXAotICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS96b3BlL2ludGVyZmFjZS9jb21tb24vdGVzdHMgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXpvcGVpbnRlcmZhY2VfNC43LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tem9wZWludGVyZmFjZV80LjcuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJkZmQ0ZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tem9wZWludGVyZmFjZV80LjcuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXpvcGVpbnRlcmZhY2UuaW5jCi0KLVJERVBFTkRTXyR7UE59LXRlc3QgKz0gInB5dGhvbi11bml0dGVzdCBweXRob24tZG9jdGVzdCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYWVudW1fMi4yLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFlbnVtXzIuMi4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2ZDJhODgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFlbnVtXzIuMi4zLmJiCkBAIC0wLDAgKzEsMTEgQEAKK1NVTU1BUlkgPSAiQWR2YW5jZWQgRW51bWVyYXRpb25zIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkub3JnL3Byb2plY3QvYWVudW0vIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9hZW51bS9MSUNFTlNFO21kNT1jNmE4NTQ3NzU0M2Y4Yjg1OTFiOWMxZjgyYWJlYmJlOSIKKworU1JDX1VSSVttZDVzdW1dID0gIjAyNjc4NmRiYjM3YzE1YzJjOGRjOTFmYmY1ODI4ZTk3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImE0MzM0Y2FiZjQ3YzE2N2Q0NGFiNWE2MTk4ODM3YjgwZGVlYzVkNWJhZDFiNWNmNzBjOTY2YzNhMzMwMjYwZTgiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFpb2ZpbGVzXzAuNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1haW9maWxlc18wLjQuMC5iYgppbmRleCBiNGQxODhiLi5iMjFjYWRlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFpb2ZpbGVzXzAuNC4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYWlvZmlsZXNfMC40LjAuYmIKQEAgLTEsMiArMSwxNiBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tYWlvZmlsZXMuaW5jCitTVU1NQVJZID0gIkZpbGUgc3VwcG9ydCBmb3IgYXN5bmNpbyIKK0RFU0NSSVBUSU9OID0gIkFzeW5jaHJvbm91cyBsb2NhbCBmaWxlIElPIGxpYnJhcnkgZm9yIGFzeW5jaW8gYW5kIFB5dGhvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9haW8tbGlicy9haW9odHRwIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDI3OTRjMGRmNWI5MDdmZGFjZTIzNWE2MTlkODAzMTQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjYjMzY2Y5NmMzNzFmYmQ1NmZjMjdhYjBiZDgxYmQ2MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwMjFlYTBiYTMxNGE4NjAyN2MxNjZlY2M0YjRjMDdmMmQ0MGZjMGY0YjNhOTUwZDE4NjhhMGYyNTcxYzJiYmVlIgorCitQWVBJX1BBQ0tBR0UgPSAiYWlvZmlsZXMiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgJHtQWVRIT05fUE59LWFzeW5jaW8gXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1haW9odHRwXzMuNS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1haW9odHRwXzMuNS40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDAzMDNmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYWlvaHR0cF8zLjUuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tYWlvaHR0cC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYWlvaHR0cF8zLjYuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYWlvaHR0cF8zLjYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMjE0NDdjCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1haW9odHRwXzMuNi4yLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiQXN5bmMgaHR0cCBjbGllbnQvc2VydmVyIGZyYW1ld29yayIKK0RFU0NSSVBUSU9OID0gIkFzeW5jaHJvbm91cyBIVFRQIGNsaWVudC9zZXJ2ZXIgZnJhbWV3b3JrIGZvciBhc3luY2lvIGFuZCBQeXRob24iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYWlvLWxpYnMvYWlvaHR0cCIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1jZjA1NmU4ZTdhMGE1NDc3NDUxYWYxOGI3YjVhYTk4YyIKKworU1JDX1VSSVttZDVzdW1dID0gImNhNDAxNDRjMTk5YTA5ZmMxYTE0MTk2MGNmNjI5NWYwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI1OWFiODA5ZmYwNzI3ZDBlODM0YWM1ZThhMjgzZGM1ZTNlMGVjYzMwYzRkODBiM2NkMTdhNDEzOWNlMWYzMjYiCisKK1BZUElfUEFDS0FHRSA9ICJhaW9odHRwIgoraW5oZXJpdCBzZXR1cHRvb2xzMyBweXBpCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgJHtQWVRIT05fUE59LWFzeW5jLXRpbWVvdXQgXAorICAgICR7UFlUSE9OX1BOfS1hdHRycyBcCisgICAgJHtQWVRIT05fUE59LWNoYXJkZXQgXAorICAgICR7UFlUSE9OX1BOfS1pZG5hLXNzbCBcCisgICAgJHtQWVRIT05fUE59LW1pc2MgXAorICAgICR7UFlUSE9OX1BOfS1tdWx0aWRpY3QgXAorICAgICR7UFlUSE9OX1BOfS10eXBpbmcgXAorICAgICR7UFlUSE9OX1BOfS15YXJsIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYWxlbWJpY18xLjMuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYWxlbWJpY18xLjMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTI0OGZlNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFsZW1iaWNfMS4zLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tYWxlbWJpYy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYWxlbWJpY18xLjQuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYWxlbWJpY18xLjQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMjYzMDYwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hbGVtYmljXzEuNC4yLmJiCkBAIC0wLDAgKzEsMTcgQEAKK0RFU0NSSVBUSU9OID0gIkEgZGF0YWJhc2UgbWlncmF0aW9uIHRvb2wgZm9yIFNRTEFsY2hlbXkiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWJkNjRhYmExYjk2OGMyYmZiYzJiNTI1YTE4MWNlODVjIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gIjFkNjdiZGJkM2FiZDMzZjAzMTlhZmNkMjliYzU5Njg2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzNWFiMDA0OTcyMTc2MjhiZjVkMGJlODJkNjY0ZDg3MTNhYjEzZDM3YjYzMDA4NGRhOGUxZjk4ZmFjZjRkYmYiCisKK1BZUElfUEFDS0FHRSA9ICJhbGVtYmljIgorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1kYXRldXRpbCBcCisgICAgJHtQWVRIT05fUE59LWVkaXRvciBcCisgICAgJHtQWVRIT05fUE59LW1ha28gXAorICAgICR7UFlUSE9OX1BOfS1zcWxhbGNoZW15IFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYW5zaTJodG1sXzEuNS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hbnNpMmh0bWxfMS41LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGU1ODZlYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYW5zaTJodG1sXzEuNS4yLmJiCkBAIC0wLDAgKzEsMTMgQEAKK0RFU0NSUFRJT04gPSAiYW5zaTJodG1sIC0gQ29udmVydCB0ZXh0IHdpdGggQU5TSSBjb2xvciBjb2RlcyB0byBIVE1MIG9yIHRvIExhVGVYIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JhbHBoYmVhbi9hbnNpMmh0bWwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zMDAwMjA4ZDUzOWVjMDYxYjg5OWJjZTFkOWNlOTQwNCIKK0xJQ0VOU0UgPSAiR1BMdjMiCisKK1BZUElfUEFDS0FHRSA9ICJhbnNpMmh0bWwiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MmQ2MDg1YWQxYzU5NzAwODJlYTUzMDVhMjZhZjk4MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NmFlODVhZTdiMjZiN2RhNjc0ZDg3ZGUyODcwYmE0ZDE5NjRiY2E3MzNhZTQ2MTQ1ODcwODBiNjM1OGMzYmE5IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LXNpeCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYW55anNvbl8wLjMuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYW55anNvbl8wLjMuMy5iYgppbmRleCAxOTllMjI1Li45MWM2NjcyIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFueWpzb25fMC4zLjMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hbnlqc29uXzAuMy4zLmJiCkBAIC0xLDIgKzEsMTMgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWFueWpzb24uaW5jCitTVU1NQVJZID0gIldyYXBzIHRoZSBiZXN0IGF2YWlsYWJsZSBKU09OIGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSBpbiBhIGNvbW1vbiBpbnRlcmZhY2UiCitERVNDUklQVElPTiA9ICJBbnlqc29uIGxvYWRzIHdoaWNoZXZlciBpcyB0aGUgZmFzdGVzdCBKU09OIG1vZHVsZSBpbnN0YWxsZWQgYW5kICBcCitwcm92aWRlcyBhIHVuaWZvcm0gQVBJIHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggSlNPTiBpbXBsZW1lbnRhdGlvbiBpcyB1c2VkLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vYml0YnVja2V0Lm9yZy9ydW5laC9hbnlqc29uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05ODlhYTk3ZTczYzkxMmE4M2EzYzg3M2ZhMTFkZWIwOCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZWEyOGQ2ZWMzMTFhZWVlYmFmOTkzY2IzMDA4YjI3YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzNzgxMmQ4NjNjOWFkM2UzNWMwNzM0YzQyZTBiZjAzMjBjZThjM2JlZDgyY2QyMGFkNTRjYjM0ZDE1ODE1N2JhIgorCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXNpbXBsZWpzb24iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFwcGRpcnMvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hcHBkaXJzL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Mjg3ZjNlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hcHBkaXJzL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QgfCBzZWQgLWUgJ3MvXFsxMDAlXF0vL2cnIHwgc2VkIC1lICdzL1wuXC5GLzogRkFJTC9nJyB8IHNlZCAtZSAncy9cLlwuXC4vOiBQQVNTL2cnCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFwcGRpcnNfMS40LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFwcGRpcnNfMS40LjMuYmIKaW5kZXggZDI0ZTFkOC4uMmUxODNkOCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hcHBkaXJzXzEuNC4zLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXBwZGlyc18xLjQuMy5iYgpAQCAtMSwyICsxLDIxIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1hcHBkaXJzLmluYworU1VNTUFSWSA9ICJBIHNtYWxsIFB5dGhvbiBtb2R1bGUgZm9yIGRldGVybWluaW5nIGFwcHJvcHJpYXRlICsgcGxhdGZvcm0tc3BlY2lmaWMgZGlycywgZS5nLiBhIHVzZXIgZGF0YSBkaXIuIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MzE2MjUzNjNjNDVlYjBjNjdjNjMwYTJmNzNlNDM4ZTQiCisKK1NSQ19VUkkgKz0gIiBcCisJZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NGM2Nzk5MDQwODJhMjEzM2Y1NTY2YzhhMGQzYWI0MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZTU4OTZkMTM3Mjg1OGY4ZGQzMzQ0ZmFmNGU1MDE0ZDIxODQ5Yzc1NmM4ZDU3MDFmNzhmOGExMDNiMzcyZDkyIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMgcHRlc3QKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJY3AgLXJmICR7U30vdGVzdC8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFycGVnZ2lvXzEuOS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hcnBlZ2dpb18xLjkuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MDJhNWIyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hcnBlZ2dpb18xLjkuMi5iYgpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIkFycGVnZ2lvIGlzIGEgcmVjdXJzaXZlIGRlc2NlbnQgcGFyc2VyIHdpdGggbWVtb2l6YXRpb24gYmFzZWQgb24gUEVHIGdyYW1tYXJzIChha2EgUGFja3JhdCBwYXJzZXIpIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L0FycGVnZ2lvLyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzNiOGQxYmE0NTlhMmZhNGQ4MDFhY2ZkMWQxYjdjZWIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzOTY2N2E2MjYyMTdjNjcwYmM2MzQ0NDRiZTZlOTA0YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NDhjZTA2MTYzYTQ4YTcyYzk3ZjRmZTc5YWQzZDFjMTMzMGI2ZmVjNGYyMmVjZTE4MmZiNjBlZjYwYmQwMjJiIgorCitQWVBJX1BBQ0tBR0UgPSAiQXJwZWdnaW8iCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworIyBzZXR1cC5weSBvZiBBcnBlZ2dpbyBuZWVkcyB0aGlzLgorREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXB5dGVzdC1ydW5uZXItbmF0aXZlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFzbjFjcnlwdG9fMS4zLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFzbjFjcnlwdG9fMS4zLjAuYmIKaW5kZXggY2ZiZTU3NS4uMGQzOGRhOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hc24xY3J5cHRvXzEuMy4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXNuMWNyeXB0b18xLjMuMC5iYgpAQCAtMSw2ICsxLDI1IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1hc24xY3J5cHRvLmluYworREVTQ1JJUFRJT04gPSAiQSBmYXN0LCBwdXJlIFB5dGhvbiBsaWJyYXJ5IGZvciBwYXJzaW5nIGFuZCBzZXJpYWxpemluZyBBU04uMSBzdHJ1Y3R1cmVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dib25kL2FzbjFjcnlwdG8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzQzOWUzOGY1ZTA0ZmY2MmZhZTQzNjE4NDc4NmI3Y2EiCisKK1BZUElfUEFDS0FHRSA9ICJhc24xY3J5cHRvIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZGFhZDExMjk0MDE4MTkxN2UzZmYxNjliNDdiOWJkOWEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWEyMTVjYjhkYzEyZjg5MjI0NGUzYTExM2ZlMDUzOTdlZTIzYzVjNGNhN2E2OWNkNmU2OTgxMTc1NWVmYzQyZCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCiAKIFJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tY29kZWNzIFwKKyAgICAke1BZVEhPTl9QTn0tY3J5cHQgXAorICAgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAorICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisgICAgJHtQWVRIT05fUE59LWlvIFwKKyAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKKyAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCiAgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKICIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hc3Ryb2lkXzIuMy4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hc3Ryb2lkXzIuMy4zLmJiCmluZGV4IDZlMzJjMjguLmRjMWNlMGUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXN0cm9pZF8yLjMuMy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFzdHJvaWRfMi4zLjMuYmIKQEAgLTEsMiArMSwzMyBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tYXN0cm9pZC5pbmMKK1NVTU1BUlkgPSAiQW4gYWJzdHJhY3Qgc3ludGF4IHRyZWUgZm9yIFB5dGhvbiB3aXRoIGluZmVyZW5jZSBzdXBwb3J0LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvYXN0cm9pZCIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNWYzZDczZDgyZDE3NTNiNTliYjQ5YTZiYzYwNDZkZWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzFlYTA3ZjQ0ZGY5NTY4YTc1ZDBmMzU0YzQ5MTQzYTQ1NzVkOTA2NDVlOWZlYWQ2ZGZiNTJjMjZhODVlZDEzYSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK0RFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1weXRlc3QtcnVubmVyLW5hdGl2ZSIKKworUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgorCitGSUxFU18ke1BOfS10ZXN0cyArPSAiIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9hc3Ryb2lkL3Rlc3QqIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9hc3Ryb2lkL19fcHljYWNoZV9fL3Rlc3QqIFwKKyIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWRpc3R1dGlscyBcCisgICAgJHtQWVRIT05fUE59LWxhenktb2JqZWN0LXByb3h5IFwKKyAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgJHtQWVRIT05fUE59LXNpeCBcCisgICAgJHtQWVRIT05fUE59LXdyYXB0IFwKKyAgICAke1BZVEhPTl9QTn0tc2V0dXB0b29scyBcCisiCisKK1JERVBFTkRTXyR7UE59LXRlc3RzX2NsYXNzLXRhcmdldCArPSAiXAorICAgICR7UFlUSE9OX1BOfS11bml0dGVzdCBcCisgICAgJHtQWVRIT05fUE59LXhtbCBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFzeW5jLXRpbWVvdXRfMy4wLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWFzeW5jLXRpbWVvdXRfMy4wLjEuYmIKaW5kZXggN2UyZmZkYi4uMjJkZmZlNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hc3luYy10aW1lb3V0XzMuMC4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXN5bmMtdGltZW91dF8zLjAuMS5iYgpAQCAtMSwyICsxLDE5IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1hc3luYy10aW1lb3V0LmluYworU1VNTUFSWSA9ICJhc3luY2lvLWNvbXBhdGlibGUgdGltZW91dCBjb250ZXh0IG1hbmFnZXIiCitERVNDUklQVElPTiA9ICJcCitUaGUgY29udGV4dCBtYW5hZ2VyIGlzIHVzZWZ1bCBpbiBjYXNlcyB3aGVuIHlvdSB3YW50IHRvIGFwcGx5IFwKK3RpbWVvdXQgbG9naWMgYXJvdW5kIGJsb2NrIG9mIGNvZGUgb3IgaW4gY2FzZXMgd2hlbiBhc3luY2lvLndhaXRfZm9yKCkgXAoraXMgbm90IHN1aXRhYmxlLiBBbHNvIGl0J3MgbXVjaCBmYXN0ZXIgdGhhbiBhc3luY2lvLndhaXRfZm9yKCkgYmVjYXVzZSBcCit0aW1lb3V0IGRvZXNuJ3QgY3JlYXRlIGEgbmV3IHRhc2suIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Fpby1saWJzL2FzeW5jLXRpbWVvdXQiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lM2ZjNTBhODhkMGEzNjQzMTNkZjRiMjFlZjIwYzI5ZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjMwNWM0ZmE1MjlmMjQ4NWM0MDNkMGRiZTE0MzkwMTc1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBjM2M4MTZhMDI4ZDQ3ZjY1OWQ2ZmY1Yzc0NWNiMmFjZjFmOTY2ZGExZmU1YzE5Yzc3YTcwMjgyYjI1ZjRjNWYiCisKK1BZUElfUEFDS0FHRSA9ICJhc3luYy10aW1lb3V0IgoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgICAke1BZVEhPTl9QTn0tYXN5bmNpbyBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF0b21pY3dyaXRlc18xLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXRvbWljd3JpdGVzXzEuMy4wLmJiCmluZGV4IDlmMzA2ZTYuLjA0YmJlZDcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXRvbWljd3JpdGVzXzEuMy4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXRvbWljd3JpdGVzXzEuMy4wLmJiCkBAIC0xLDIgKzEsOSBAQAorREVTQ1JJUFRJT04gPSAiUG93ZXJmdWwgUHl0aG9uIGxpYnJhcnkgZm9yIGF0b21pYyBmaWxlIHdyaXRlcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS91bnRpdGFrZXIvcHl0aG9uLWF0b21pY3dyaXRlcyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTFjYzM2Y2ZhZmVlZmI3ODYzNjczYmNmY2IxZDRkYTQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZTExZjc4MGE0Y2UwZmNlOGE1NWQ2NDQ5NGE4ODE3OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NWE5NDQ1YmFjMDJkOGQwNThkNWUxZmU2ODk2NTRiYTVhNjU1NmExZGZkOGNlNmVjNTVhMGVkNzk4NjZjZmE2IgorCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWF0b21pY3dyaXRlcy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXR0cl8wLjMuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXR0cl8wLjMuMS5iYgppbmRleCBlODA2NDhjLi4yMmM1MjE4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF0dHJfMC4zLjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hdHRyXzAuMy4xLmJiCkBAIC0xLDIgKzEsOSBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tYXR0ci5pbmMKK0RFU0NSSVBUSU9OID0gIlNpbXBsZSBkZWNvcmF0b3IgdG8gc2V0IGF0dHJpYnV0ZXMgb2YgdGFyZ2V0IGZ1bmN0aW9uIG9yIGNsYXNzIGluIGEgRFJZIHdheSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kZW5pcy1yeXpoa292L2F0dHIiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT01OTgwNWEwMjg1ZjRkMmI2YWJkZWRhZTczZGI0ZjVjMSIKKworU1JDX1VSSVttZDVzdW1dID0gIjY4YjlhNTAzOTkxMjQxZmIyZGYyODQ4ODY4NmIwZTFlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkwOTE1NDgwNThkMTdmMTMyNTk2ZTYxZmE3NTE4ZTUwNGY3NmI5YTRjNjFjYTdkODZlMWY5NmRiZjdkNDc3NWQiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hdHRyc18xOS4zLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF0dHJzXzE5LjMuMC5iYgppbmRleCBjMzQ2OTNmLi5iMzczOWZkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF0dHJzXzE5LjMuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF0dHJzXzE5LjMuMC5iYgpAQCAtMSwyICsxLDE2IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1hdHRycy5pbmMKK0RFU0NSSVBUSU9OID0gIkNsYXNzZXMgV2l0aG91dCBCb2lsZXJwbGF0ZSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYXR0cnMub3JnLyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDRhYjI1OTQ5YTczZmU3ZDRmZGVlOTNiY2JkYmY4ZmYiCisKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmN2I3Y2UxNjU3MGZlOTk2NWFjZDZkMzAxMDFhMjhmNjJmYjRhN2Y5ZTkyNmIzYmJjOWI2MWY4YjA0MjQ3ZTcyIgorU1JDX1VSSVttZDVzdW1dID0gIjViMmRiNTBmY2MzMWJlMzRkMzI3OTgxODNjOWJkMDYyIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1jcnlwdCBcCisgICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF1dG9tYXQvMDAwMS1zZXR1cC5weS1yZW1vdmUtdGhlLWRlcGVuZGVuY3ktb24tbTJyLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hdXRvbWF0LzAwMDEtc2V0dXAucHktcmVtb3ZlLXRoZS1kZXBlbmRlbmN5LW9uLW0yci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWF1dG9tYXQvMDAwMS1zZXR1cC5weS1yZW1vdmUtdGhlLWRlcGVuZGVuY3ktb24tbTJyLnBhdGNoCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF1dG9tYXQvMDAwMS1zZXR1cC5weS1yZW1vdmUtdGhlLWRlcGVuZGVuY3ktb24tbTJyLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF1dG9tYXRfMC44LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF1dG9tYXRfMC44LjAuYmIKaW5kZXggMmM3NDc2NC4uZjg5ODFiYyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1hdXRvbWF0XzAuOC4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXV0b21hdF8wLjguMC5iYgpAQCAtMSwyICsxLDIxIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1hdXRvbWF0LmluYworREVTQ1JJUFRJT04gPSAiU2VsZi1zZXJ2aWNlIGZpbml0ZS1zdGF0ZSBtYWNoaW5lcyBmb3IgdGhlIHByb2dyYW1tZXIgb24gdGhlIGdvIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dseXBoL0F1dG9tYXQiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTRhZDIxM2JjY2E4MTY4OGU5NDU5M2U1ZjYwYzg3NDc3IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDdlOTgwYTQ4MjAxYTFkYWJlMzdmYTExZjAxODcwMTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjY5YTA5ZGZiMDYzYTNiMDc4OTgzZjQ5NzZkODNmMGEwZDNlNmU3YWFmOGUyN2Q4ZGYxMDk1ZTA5ZGM0YTQ4NCIKKworREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXNldHVwdG9vbHMtc2NtLW5hdGl2ZSIKKworU1JDX1VSSV9hcHBlbmQgPSAiIFwKKyAgICBmaWxlOi8vMDAwMS1zZXR1cC5weS1yZW1vdmUtdGhlLWRlcGVuZGVuY3ktb24tbTJyLnBhdGNoIFwKKyIKKworUFlQSV9QQUNLQUdFID0gIkF1dG9tYXQiCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICR7UFlUSE9OX1BOfS1hdHRycyBcCisgICAke1BZVEhPTl9QTn0tc2l4IFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbl8xLjQuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbl8xLjQuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQzNjQ5ZC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob25fMS40LjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob24uaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob25fMS40LjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWF3cy1pb3QtZGV2aWNlLXNkay1weXRob25fMS40LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc2MzA2NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYXdzLWlvdC1kZXZpY2Utc2RrLXB5dGhvbl8xLjQuOC5iYgpAQCAtMCwwICsxLDQxIEBACitERVNDUklQVElPTiA9ICJTREsgZm9yIGNvbm5lY3RpbmcgdG8gQVdTIElvVCB1c2luZyBQeXRob24uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2F3cy9hd3MtaW90LWRldmljZS1zZGstcHl0aG9uIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wICYgKEVQTC0xLjAgfCBFREwtMS4wKSIKK0xJQ0VOU0VfJHtQTn0tZXhhbXBsZXMgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9OWFjNDk5MDFiODMzZTc2OWM3ZDZmMjFlOGRiZDdiMzAgXAorICAgIGZpbGU6Ly9BV1NJb1RQeXRob25TREsvY29yZS9wcm90b2NvbC9wYWhvL2NsaWVudC5weTtlbmRsaW5lPTE0O21kNT01YTNjOGExYTRiYjcxYmQ5MzRmNDUwZWNmZjk3MmFkOSBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMDU1OTZmMDI3NzRlYTM5NTE3NzY1YzVkY2VkODc0YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiY2Q2OGNiN2ZkYjA0NGRiZDVlNWQzYTAyYzMxMWIyNTcxN2MwMzc2MTY4ZTdjOTkyOTgyMTMwZjE5YzUxYjAzIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUFlQSV9QQUNLQUdFID0gIkFXU0lvVFB5dGhvblNESyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgICAgIGluc3RhbGwgLWQgLW0wNzU1ICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9leGFtcGxlcworICAgICAgICBjcCAtLXByZXNlcnZlPW1vZGUsdGltZXN0YW1wcyAtUiAke1N9L3NhbXBsZXMvKiAke0R9JHtkYXRhZGlyfS8ke0JQTn0vZXhhbXBsZXMKKyAgICAgICAgIyB0aGlzIHJlcXVpcmVzIHRoZSBmdWxsIGJsb3duIEFXUyBQeXRob24gU0RLCisgICAgICAgIHJtIC1yICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9leGFtcGxlcy9iYXNpY1B1YlN1YgorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tZXhhbXBsZXMiCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1jcnlwdCBcCisgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyAgICAke1BZVEhPTl9QTn0taW8gXAorICAgICR7UFlUSE9OX1BOfS1qc29uIFwKKyAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgJHtQWVRIT05fUE59LW1hdGggXAorICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyIKK1JERVBFTkRTXyR7UE59LWV4YW1wbGVzICs9ICIke1BOfSIKKworRklMRVNfJHtQTn0tZXhhbXBsZXMgPSAiJHtkYXRhZGlyfS8ke0JQTn0vZXhhbXBsZXMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmFiZWxfMi43LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJhYmVsXzIuNy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzE1ZDU5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmFiZWxfMi43LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWJhYmVsLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iYWJlbF8yLjguMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmFiZWxfMi44LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzY5MDk4YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmFiZWxfMi44LjAuYmIKQEAgLTAsMCArMSwyNyBAQAorREVTQ1JJUFRJT04gPSAiQSBjb2xsZWN0aW9uIG9mIHRvb2xzIGZvciBpbnRlcm5hdGlvbmFsaXppbmcgUHl0aG9uIGFwcGxpY2F0aW9ucyIKK0hPTUVQQUdFID0gImh0dHA6Ly9iYWJlbC5lZGdld2FsbC5vcmcvIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05NDI0NjlkZjkzMDVhYmIxYzU5ZTk1Zjc3ODMxMDM4NCIKKworU1JDX1VSSVttZDVzdW1dID0gIjZmYWQ5NzcyZTc1NDIxOTY5ZGRiNDE5NzU0ODNhYmRmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFhYWMyYWUyZDBkOGVhMzY4ZmE5MDkwNjU2N2Y1YzA4NDYzZDk4YWRlMTU1YzBjNGJmZWRkNmEwZjcxNjBlMzgiCisKK1BZUElfUEFDS0FHRSA9ICJCYWJlbCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK0NMRUFOQlJPS0VOID0gIjEiCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1jb2RlY3MgXAorICAgICR7UFlUSE9OX1BOfS1kaWZmbGliIFwKKyAgICAke1BZVEhPTl9QTn0tZGlzdHV0aWxzIFwKKyAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKKyAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICAgJHtQWVRIT05fUE59LXBpY2tsZSBcCisgICAgJHtQWVRIT05fUE59LXB5dHogXAorICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGVfMS41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iYWNrcG9ydHMtZnVuY3Rvb2xzLWxydS1jYWNoZV8xLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkxZmNjNDEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iYWNrcG9ydHMtZnVuY3Rvb2xzLWxydS1jYWNoZV8xLjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLWJhY2twb3J0cy1mdW5jdG9vbHMtbHJ1LWNhY2hlLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iYWNrcG9ydHMtZnVuY3Rvb2xzLWxydS1jYWNoZV8xLjYuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGVfMS42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzk1YTc1OQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmFja3BvcnRzLWZ1bmN0b29scy1scnUtY2FjaGVfMS42LjEuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJCYWNrcG9ydCBvZiBmdW5jdG9vbHMubHJ1X2NhY2hlIGZyb20gUHl0aG9uIDMuMyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9qYXJhY28vYmFja3BvcnRzLmZ1bmN0b29sc19scnVfY2FjaGUiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTMzZjM4YmJmNDdkNDhjNzBmZTBkNDBlNWY3NzQ5OGUiCisKK1BZUElfUEFDS0FHRSA9ICJiYWNrcG9ydHMuZnVuY3Rvb2xzX2xydV9jYWNoZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjEwMzAwMGIyMWE4ZTY4MzY0N2UyY2U0MTkyOWYyYTlkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhmZGU1ZjE4OGRhMmQ1OTNiZDViYzBiZTk4ZDlhYmM0NmM5NWJiOGE5ZGRlOTM0Mjk1NzAxOTJlZTZjYzJkNGEiCisKK0RFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzLXNjbS1uYXRpdmUiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1waWNrbGUgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmNyeXB0XzMuMS43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iY3J5cHRfMy4xLjcuYmIKaW5kZXggZDJlYzllMy4uMGYyZDMxZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iY3J5cHRfMy4xLjcuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iY3J5cHRfMy4xLjcuYmIKQEAgLTEsMiArMSwxNyBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tYmNyeXB0LmluYworREVTQ1JJUFRJT04gPSAiTW9kZXJuIHBhc3N3b3JkIGhhc2hpbmcgZm9yIHlvdXIgc29mdHdhcmUgYW5kIHlvdXIgc2VydmVycy4iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT04ZjdiYjA5NGM3MjMyYjA1OGM3ZTlmMmU0MzFmMzg5YyIKKworREVQRU5EUyArPSAiJHtQWVRIT05fUE59LWNmZmktbmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNWQ2ZjkzYjU3NWNlNTI0NzBhZjM3YThlN2RjZTc2ZmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGIwMDY5Yzc1MmVjMTQxNzJjNWY3ODIwOGYxODYzZDdhZDY3NTVhNmZhZTZmZTc2ZWMyYzgwZDEzYmU0MWU0MiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAorICAgICR7UFlUSE9OX1BOfS1jZmZpIFwKKyAgICAke1BZVEhPTl9QTn0tY3R5cGVzIFwKKyAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iZWF1dGlmdWxzb3VwNF80LjguMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmVhdXRpZnVsc291cDRfNC44LjIuYmIKaW5kZXggZDk4ZGYxMS4uNjNmYmQwOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iZWF1dGlmdWxzb3VwNF80LjguMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJlYXV0aWZ1bHNvdXA0XzQuOC4yLmJiCkBAIC0xLDIgKzEsMTcgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWJlYXV0aWZ1bHNvdXA0LmluYworU1VNTUFSWSA9ICJTY3JlZW4tc2NyYXBpbmcgbGlicmFyeSIKK0hPTUVQQUdFID0gIiBodHRwczovL3d3dy5jcnVtbXkuY29tL3NvZnR3YXJlL0JlYXV0aWZ1bFNvdXAvYnM0IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9ZjJkMzhkOGE0MGJmNzNmZDRiM2QxNmNhMmU1ODgyZDEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ZGJkYjU2YzAwOWU0NjMyYmFlN2JlZDFiMzg1ODA0YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNWZkODI1ZWIwMWMyOTA4Nzc2NTdhNTZkZjRjNmU0YzMxMWIzOTY1YmRhNzkwYzYxM2EzZDZmYjAxYTU0NjJhIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgICR7UFlUSE9OX1BOfS1odG1sNWxpYiBcCisgICAgJHtQWVRIT05fUE59LWx4bWwgXAorICAgICR7UFlUSE9OX1BOfS1zb3Vwc2lldmUgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJlaGF2ZV8xLjIuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmVoYXZlXzEuMi42LmJiCmluZGV4IDFjNTU4NzEuLmEyOGU1MjcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmVoYXZlXzEuMi42LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmVoYXZlXzEuMi42LmJiCkBAIC0xLDIgKzEsMTUgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWJlaGF2ZS5pbmMKK1NVTU1BUlkgPSAiQSBiZWhhdmlvci1kcml2ZW4gZGV2ZWxvcG1lbnQgZnJhbWV3b3JrLCBQeXRob24gc3R5bGUiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYmVoYXZlL2JlaGF2ZSIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDk1MDQzOWU4ZWE2ZWQyMzNlNDI4OGY1ZTFhNDljMDYiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZjA1Yzg1OWExYzQ1ZjVlZDMzZTkyNTgxN2FkODg3ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiOTY2MjMyN2FhNTMyOTRjMTM1MWIwYTljMzY5MDkzY2NlYzFkMjEwMjZmMDUwYzNiZDliM2U1Y2NjZjgxYTg2IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXBhcnNlLXR5cGUgXAorICAgICR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzIFwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJpdGFycmF5XzEuMi4xLmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJpdGFycmF5XzEuMi4xLmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdlZTQ0NGQuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1iaXRhcnJheV8xLjIuMS5iCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1iaXRhcnJheS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYml0YXJyYXlfMS4yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJpdGFycmF5XzEuMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiZjI5MzcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJpdGFycmF5XzEuMi4xLmJiCkBAIC0wLDAgKzEsMTEgQEAKK1NVTU1BUlkgPSAiQSBoaWdoLWxldmVsIFB5dGhvbiBlZmZpY2llbnQgYXJyYXlzIG9mIGJvb2xlYW5zIC0tIEMgZXh0ZW5zaW9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2lsYW5zY2huZWxsL2JpdGFycmF5IgorTElDRU5TRSA9ICJQU0YiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9ZGMzMDFhMjVlYmUyMTBkY2M1M2IwYTJkNWEwMzhlYWUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhNDZiZjg2OWY2YWRmMzRmNWIwZGM4MmI0Njk3OTNiNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZWQ2NzVmNDYwYmIwZDNkNjZmZDgwNDJhNmYxZjBkMzZjZjIxM2U1MmU3MmE3NDUyODNkZGIyNDVkYTdiOWNmIgorCitpbmhlcml0IHNldHVwdG9vbHMzIHB5cGkKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ibGlua2VyXzEuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYmxpbmtlcl8xLjQuYmIKaW5kZXggOTI0YjNjZi4uZTJmNzZjMyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ibGlua2VyXzEuNC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJsaW5rZXJfMS40LmJiCkBAIC0xLDIgKzEsOCBAQAorREVTQ1JJUFRJT04gPSAiRmFzdCwgc2ltcGxlIG9iamVjdC10by1vYmplY3QgYW5kIGJyb2FkY2FzdCBzaWduYWxpbmcuIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9OTQ2ZDdlODlhZjZmNzczM2FlYWViZWQ1NjM1ZDI2ODIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4YjM3MjIzODFmODNjMjgxM2M1MmRlMzAxNmI2OGQzMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0NzFhZWUyNWYzOTkyYmQzMjVhZmEzNzcyZjEwNjNkYmRiYmNhOTQ3YTA0MWI4Yjg5NDY2ZGMwMGQ2MDZmOGI2IgorCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWJsaW5rZXIuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJvb2xlYW5weV8zLjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWJvb2xlYW5weV8zLjcuYmIKaW5kZXggNWY4NjAyZC4uZWJmN2JhNCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ib29sZWFucHlfMy43LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtYm9vbGVhbnB5XzMuNy5iYgpAQCAtMSwyICsxLDE0IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1ib29sZWFucHkuaW5jCitTVU1NQVJZID0gIkRlZmluZSBib29sZWFuIGFsZ2VicmFzLCBjcmVhdGUgYW5kIHBhcnNlIGJvb2xlYW4gZXhwcmVzc2lvbnMgYW5kIGNyZWF0ZSBjdXN0b20gYm9vbGVhbiBEU0wiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYmFzdGlrci9ib29sZWFuLnB5IgorCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT1lMzE5NzQ3YTVlYjk0Y2RkZjY0NjAzN2MwMWRkYmE0NyIKKworU1JDX1VSSVttZDVzdW1dID0gIjExODlkMTE1YTM4Zjg0ZjVkZjc0MzAxNDkyNmE5MTU5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJkMTliNDEyNDM1NjExZWNjNzEyNjAzZDBmZDdkMGUyODBlMjQ2OThlN2E2ZTNkNWY2MTA0NzM4NzBjNWRkMWUiCisKK1BZUElfUEFDS0FHRSA9ICJib29sZWFuLnB5IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYWNoZWNvbnRyb2xfMC4xMi42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYWNoZWNvbnRyb2xfMC4xMi42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdjNDVlZDMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhY2hlY29udHJvbF8wLjEyLjYuYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJodHRwbGliMiBjYWNoaW5nIGZvciByZXF1ZXN0cyIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9DYWNoZUNvbnRyb2wvIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTZkYzdlMWI0MjhlZGEwM2Q4NTAyMDlmZGJkNmM3MWYxIgorCisjIE9uIFB5UGksIHRoaXMgaXMgIkNhY2hlQ29udHJvbCIsIHJhdGhlciB0aGFuICJjYWNoZWNvbnRyb2wiLCBzbyB3ZSBuZWVkIHRvCisjIG92ZXJyaWRlIFBZUElfUEFDS0FHRSBzbyBmZXRjaCBzdWNjZWVkcy4KK1BZUElfUEFDS0FHRSA9ICJDYWNoZUNvbnRyb2wiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1ODkwYjc5N2Y5YjQ4YjJiNGNkMTQ0OGNjYTg5ZTM5NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiZTlhYTQ1NDc3YTEzNGFlZTU2YzhmYWM1MTg2MjdlMTE1NGRmMDYzZTg1ZjY3ZDRmODNjZTBjY2MyMzY4OGU4IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICBweXRob24zLWNyeXB0IFwKKyAgICBweXRob24zLWRhdGV0aW1lIFwKKyAgICBweXRob24zLWVtYWlsIFwKKyAgICBweXRob24zLWxvY2tmaWxlIFwKKyAgICBweXRob24zLWpzb24gXAorICAgIHB5dGhvbjMtbG9nZ2luZyBcCisgICAgcHl0aG9uMy1tc2dwYWNrIFwKKyAgICBweXRob24zLW5ldGNsaWVudCBcCisgICAgcHl0aG9uMy1waWNrbGUgXAorICAgIHB5dGhvbjMtcmVxdWVzdHMgXAorICAgIHB5dGhvbjMtdXJsbGliMyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2FjaGV0b29sc180LjAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2FjaGV0b29sc180LjAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZiMmY2Ny4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhY2hldG9vbHNfNC4wLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWNhY2hldG9vbHMuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhY2hldG9vbHNfNC4xLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhY2hldG9vbHNfNC4xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzQxMWE3NAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2FjaGV0b29sc180LjEuMC5iYgpAQCAtMCwwICsxLDE2IEBACitTVU1NQVJZID0gIkV4dGVuc2libGUgbWVtb2l6aW5nIGNvbGxlY3Rpb25zIGFuZCBkZWNvcmF0b3JzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3RrZW0vY2FjaGV0b29scyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgbW9kdWxlIHByb3ZpZGVzIHZhcmlvdXMgbWVtb2l6aW5nIFwKK2NvbGxlY3Rpb25zIGFuZCBkZWNvcmF0b3JzLCBpbmNsdWRpbmcgdmFyaWFudHMgb2YgdGhlIFwKK1B5dGhvbiAzIFN0YW5kYXJkIExpYnJhcnkgQGxydV9jYWNoZSBmdW5jdGlvbiBkZWNvcmF0b3IuIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MmQxZTFiZjBjY2IyNjEyNmEyMzBjNTFmOTk3Y2UzNjIiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiNDQ2OGRhNDM0NDMxMTVhMDBjMDJjMTI2Y2Y2MDFhZTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWQwNTc2NDVkYjE2Y2E3ZmUxZjNiZDk1MzU1ODg5NzYwM2Q2ZjBiOWM1MWVkOWQxMWViNGQwNzFlYzRlMmFhYiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYW5fMy4zLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhbl8zLjMuMi5iYgppbmRleCBhYWE5ZTgxLi42OThlYWY1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhbl8zLjMuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhbl8zLjMuMi5iYgpAQCAtMSw3ICsxLDI2IEBACi1yZXF1aXJlIHB5dGhvbi1jYW4uaW5jCitTVU1NQVJZID0gIkNvbnRyb2xsZXIgQXJlYSBOZXR3b3JrIChDQU4pIGludGVyZmFjZSBtb2R1bGUgZm9yIFB5dGhvbiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJMR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiNzI0NTUzYTMzMDQ3ODI3MDI2NzM4MGI0ODg4YTE4ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZmVmYjVjMWU3ZTdmMDdmYWVmYzAyYzZlYWM3OWY5YjU4Mzc2ZjAwNzA0OGEwNGQ4ZTdmMzI1ZDQ4ZWM2YjJlIgorCitQWVBJX1BBQ0tBR0U9InB5dGhvbi1jYW4iCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwogCiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tYWVudW0gXAorICAgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAogICAgICR7UFlUSE9OX1BOfS1jb2RlY3MgXAogICAgICR7UFlUSE9OX1BOfS1jb21wcmVzc2lvbiBcCisgICAgJHtQWVRIT05fUE59LWZjbnRsIFwKKyAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgJHtQWVRIT05fUE59LW1pc2MgXAorICAgICR7UFlUSE9OX1BOfS1uZXRzZXJ2ZXIgXAorICAgICR7UFlUSE9OX1BOfS1zcWxpdGUzIFwKKyAgICAke1BZVEhPTl9QTn0td3JhcHQgXAogIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhc3NhbmRyYS1kcml2ZXJfMy4xNC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jYXNzYW5kcmEtZHJpdmVyXzMuMTQuMC5iYgppbmRleCAzNGYxNDlkLi43NjhlNTU3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNhc3NhbmRyYS1kcml2ZXJfMy4xNC4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2Fzc2FuZHJhLWRyaXZlcl8zLjE0LjAuYmIKQEAgLTEsOCArMSwzNSBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tY2Fzc2FuZHJhLWRyaXZlci5pbmMKK1NVTU1BUlkgPSAiRGF0YVN0YXggUHl0aG9uIERyaXZlciBmb3IgQXBhY2hlIENhc3NhbmRyYSIKK0RFU0NSSVBUSU9OID0gIkEgbW9kZXJuLCBmZWF0dXJlLXJpY2ggYW5kIGhpZ2hseS10dW5hYmxlIFB5dGhvbiBjbGllbnQgXAorbGlicmFyeSBmb3IgQXBhY2hlIENhc3NhbmRyYSAoMS4yKykgYW5kIERhdGFTdGF4IEVudGVycHJpc2UgKDMuMSspIHVzaW5nIFwKK2V4Y2x1c2l2ZWx5IENhc3NhbmRyYSdzIGJpbmFyeSBwcm90b2NvbCBhbmQgQ2Fzc2FuZHJhIFF1ZXJ5IExhbmd1YWdlIHYzLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kYXRhc3RheC9weXRob24tZHJpdmVyIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZWU0MTExMmE0NGZlNzAxNGRjZTMzZTI2NDY4YmE5MyIKK1NSQ05BTUUgPSAiY2Fzc2FuZHJhLWRyaXZlciIKIAotIyBSZXF1aXJlcyBjb25jdXJyZW50IHdoaWNoIGlzIGN1cnJlbnRseSBpbiAtbWlzYwotUkRFUEVORFNfJHtQTn0gKz0gIiBcCitTUkNfVVJJW21kNXN1bV0gPSAiYzViZWQwMjZiZjQ4YzgyMTQyNGMxZjYyOTYxOTM5MDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjY1MjE4ZTI1ODIyNzdmNWI3N2QxNDM2ZTQyMGRiODYxNmY2M2UzNDM3YTllODM5Y2RjZDcxNzJkNzYwZTg2MSIKKworRElTVFVUSUxTX0JVSUxEX0FSR1MgKz0gIiBcCisgICAgLS1uby1saWJldiBcCisiCitESVNUVVRJTFNfSU5TVEFMTF9BUkdTICs9ICIgXAorICAgIC0tbm8tbGliZXYgXAorIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tY3l0aG9uIFwKKyAgICAke1BZVEhPTl9QTn0tanNvbiBcCiAgICAgJHtQWVRIT05fUE59LW1pc2MgXAorICAgICR7UFlUSE9OX1BOfS1tdWx0aXByb2Nlc3NpbmcgXAogICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyAgICBsaWJldmVudCBcCisiCisKK0RFUEVORFMgKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tY3l0aG9uIFwKICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2VydGlmaV8yMDE5LjExLjI4LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jZXJ0aWZpXzIwMTkuMTEuMjguYmIKaW5kZXggNzBmNjc0Yi4uYzllOTQ1ZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jZXJ0aWZpXzIwMTkuMTEuMjguYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jZXJ0aWZpXzIwMTkuMTEuMjguYmIKQEAgLTEsMiArMSwxNSBAQAorU1VNTUFSWSA9ICJQeXRob24gcGFja2FnZSBmb3IgcHJvdmlkaW5nIE1vemlsbGEncyBDQSBCdW5kbGUuIgorREVTQ1JJUFRJT04gPSAiVGhpcyBpbnN0YWxsYWJsZSBQeXRob24gcGFja2FnZSBjb250YWlucyBhIENBIEJ1bmRsZSB0aGF0IHlvdSBjYW4gcmVmZXJlbmNlIGluIHlvdXIgXAorUHl0aG9uIGNvZGUuIFRoaXMgaXMgdXNlZnVsIGZvciB2ZXJpZnlpbmcgSFRUUCByZXF1ZXN0cywgZm9yIGV4YW1wbGUuICBUaGlzIGlzIHRoZSBzYW1lIENBIEJ1bmRsZSBcCit3aGljaCBzaGlwcyB3aXRoIHRoZSBSZXF1ZXN0cyBjb2RlYmFzZSwgYW5kIGlzIGRlcml2ZWQgZnJvbSBNb3ppbGxhIEZpcmVmb3gncyBjYW5vbmljYWwgc2V0LiIKK0hPTUVQQUdFID0gIiBodHRwOi8vY2VydGlmaS5pby8iCisKK0xJQ0VOU0UgPSAiSVNDIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Zjc3ZjYxZDE0ZWU2ZmVhYzQyMjhkM2ViZDI2Y2MxZjEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZDUyMjljNGQ5ZjBhNGE3OTEwNmY5ZTJjMmNmZDM4MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNWI2NGM3ZGE0Y2Q3NDc5NTk0ZDAzNWMwOGMyZDgwOWViNGFhYjNhMjZlNWE5OTBlYTk4Y2M0NTBjMzIwZjFmIgorCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWNlcnRpZmkuaW5jCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2ZmaV8xLjEzLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNmZmlfMS4xMy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlODg4MDg0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2ZmaV8xLjEzLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tY2ZmaS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2ZmaV8xLjE0LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNmZmlfMS4xNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzYzhlZTIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNmZmlfMS4xNC4wLmJiCkBAIC0wLDAgKzEsMTkgQEAKK1NVTU1BUlkgPSAiRm9yZWlnbiBGdW5jdGlvbiBJbnRlcmZhY2UgZm9yIFB5dGhvbiBjYWxsaW5nIEMgY29kZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9jZmZpLnJlYWR0aGVkb2NzLm9yZy8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTU2NzdlMmZkYmY3Y2RkYTYxZDZkZDJiNTdkZjU0N2JmIgorREVQRU5EUyArPSAibGliZmZpICR7UFlUSE9OX1BOfS1weWNwYXJzZXIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3NDg0NWY4ZDJiN2I1ODNkZDlhMzU3NGY0MDJlZGYzOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZDM4NGY0YTEyN2ExNWJhNzAxMjA3Zjc2MzlkOTQxMDY2OTNiNmNkNjQxNzNkNmM4OTg4ZTJjMjVmM2FjMmI2IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIiBcCisgICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCisgICAgJHtQWVRIT05fUE59LWlvIFwKKyAgICAke1BZVEhPTl9QTn0tcHljcGFyc2VyIFwKKyAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNoYXJkZXRfMy4wLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNoYXJkZXRfMy4wLjQuYmIKaW5kZXggMzhkODEyMi4uODA3ODViOCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jaGFyZGV0XzMuMC40LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2hhcmRldF8zLjAuNC5iYgpAQCAtMSw3ICsxLDI0IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1jaGFyZGV0LmluYworU1VNTUFSWSA9ICJVbml2ZXJzYWwgZW5jb2RpbmcgZGV0ZWN0b3IgZm9yIFB5dGhvbiAyIGFuZCAzIgorTElDRU5TRSA9ICJMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIgogCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgIyByZW5hbWUgc2NyaXB0cyB0aGF0IHdvdWxkIGNvbmZsaWN0IHdpdGggdGhlIFB5dGhvbiAyIGJ1aWxkIG9mIGNoYXJkZXQKLSAgICBtdiAke0R9JHtiaW5kaXJ9L2NoYXJkZXRlY3QgJHtEfSR7YmluZGlyfS9jaGFyZGV0ZWN0MwotfQorU1JDX1VSSVttZDVzdW1dID0gIjdkZDFiYTdmOWM3N2UzMjM1MWIwYTBjZmFjZjQwNTVjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg0YWI5MmVkMWM0ZDRmMTY5MTZlMDU5MDZiNmI3NWE2YzBmYjVkYjgyMWNjNjVlNzBjYmQ2NGEzZTJhNWVhYWUiCisKKyMgc2V0dXAucHkgb2YgY2hhcmRldCBuZWVkcyB0aGlzLgorREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXB5dGVzdC1ydW5uZXItbmF0aXZlIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUEFDS0FHRVMgPSsgIiR7UE59LWNsaSIKK0ZJTEVTXyR7UE59LWNsaSArPSAiIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9jaGFyZGV0L2NsaSBcCisiCisKK1JERVBFTkRTXyR7UE59LWNsaSA9ICIke1BOfSAiCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY2xpY2tfNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jbGlja183LjAuYmIKaW5kZXggMTkyMDY0NC4uY2ZhM2UwZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jbGlja183LjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jbGlja183LjAuYmIKQEAgLTEsMiArMSwyNiBAQAorU1VNTUFSWSA9ICJBIHNpbXBsZSB3cmFwcGVyIGFyb3VuZCBvcHRwYXJzZSBmb3IgcG93ZXJmdWwgY29tbWFuZCBsaW5lIHV0aWxpdGllcy4iCitERVNDUklQVElPTiA9ICJcCitDbGljayBpcyBhIFB5dGhvbiBwYWNrYWdlIGZvciBjcmVhdGluZyBiZWF1dGlmdWwgY29tbWFuZCBsaW5lIGludGVyZmFjZXMgXAoraW4gYSBjb21wb3NhYmxlIHdheSB3aXRoIGFzIGxpdHRsZSBjb2RlIGFzIG5lY2Vzc2FyeS4gSXQncyB0aGUgIkNvbW1hbmQgXAorTGluZSBJbnRlcmZhY2UgQ3JlYXRpb24gS2l0Ii4gSXQncyBoaWdobHkgY29uZmlndXJhYmxlIGJ1dCBjb21lcyB3aXRoIFwKK3NlbnNpYmxlIGRlZmF1bHRzIG91dCBvZiB0aGUgYm94LiIKK0hPTUVQQUdFID0gImh0dHA6Ly9jbGljay5wb2Nvby5vcmcvIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnJzdDttZDU9YzEzZWQ4OTBiMjEwYTg4MmMxNzc4MjE2Njk0Yzk4YzciCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ZjUzZDUwZjdiNzM3M2ViYzc5NjNmOWZmNjk3NDUwYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1Yjk0YjQ5NTIxZjY0NTY2NzBmZGIzMGNkODJhNGVjYTk0MTI3ODhhOTNmYTZkZDZkZjcyYzk0ZDVhOGZmMmQ3IgorCitQWVBJX1BBQ0tBR0UgPSAiQ2xpY2siCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWNsaWNrLmluYworCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJjbGljay8oP1A8cHZlcj5cZCsoXC5cZCspKykvIgorCitDTEVBTkJST0tFTiA9ICIxIgorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1pbyBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisgICAgIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNtZDJfMC45LjIzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jbWQyXzAuOS4yMy5iYgppbmRleCBmNWM1YzdlLi5hMmJmMGM0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNtZDJfMC45LjIzLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY21kMl8wLjkuMjMuYmIKQEAgLTEsOSArMSwyMSBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tY21kMi5pbmMKK1NVTU1BUlkgPSAiRXh0cmEgZmVhdHVyZXMgZm9yIHN0YW5kYXJkIGxpYnJhcnkncyBjbWQgbW9kdWxlIgorSE9NRVBBR0UgPSAiaHR0cDovL3BhY2thZ2VzLnB5dGhvbi5vcmcvY21kMi8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTk3OTFjZDI0Y2E3ZDE4MDczODhjY2Q1NWNkMDY2ZGVmIgorCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tc2V0dXB0b29scy1zY20tbmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNmRiNjZhMDYyMTBkNWYxZWRiNDQ2OTNiODg3ZWQ2MmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGFkMTJlZjNjYzQ2ZDAzMDczYzU0NWI2ZTgwYTNmODRhNTkyMWY2NjUzMDczYTYwZTdkOWE3ZmYzYjM1MmM5ZSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCiAKIFJERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWF0dHJzIFwKKyAgICAke1BZVEhPTl9QTn0tY29sb3JhbWEgXAogICAgICR7UFlUSE9OX1BOfS1weXBlcmNsaXAgXAogICAgICR7UFlUSE9OX1BOfS1jb2xvcmFtYSBcCi0gICAgJHtQWVRIT05fUE59LWF0dHJzIFwKICAgICAke1BZVEhPTl9QTn0td2N3aWR0aCBcCi0gICAgIgorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbG9yZWRsb2dzXzEwLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbG9yZWRsb2dzXzEwLjAuYmIKaW5kZXggMzg3MjM5OS4uODhmYWM4NyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb2xvcmVkbG9nc18xMC4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29sb3JlZGxvZ3NfMTAuMC5iYgpAQCAtMSwyICsxLDI0IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1jb2xvcmVkbG9ncy5pbmMKK0RFU0NSSVBUSU9OID0gIkNvbG9yZWQgdGVybWluYWwgb3V0cHV0IGZvciBQeXRob24ncyBsb2dnaW5nIG1vZHVsZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vY29sb3JlZGxvZ3MucmVhZHRoZWRvY3MuaW8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTY5MGRhMjk4YTQzODA1Nzk3YTRmYTdiYmUxODBiM2M2IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMGExODY5NjZhMTk1NWZmZjhjZjk0ODkzNzNlNjkxZDkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjg2OWEyZGRhM2ZhODgxNTRiOWRkODUwZTI3ODI4ZDg3NTViZmFiNWE4MzhhMWM5N2ZiYzg1MGM2ZTM3N2MzNiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBzZWQgLWllICJzL2ZpbmRfcHRoX2RpcmVjdG9yeSgpLC8nJywvZyIgJHtTfS9zZXR1cC5weQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBybSAtcmYgJHtEfSR7ZGF0YWRpcn0KK30KKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0taHVtYW5mcmllbmRseSBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb2xvcmxvZ180LjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29sb3Jsb2dfNC4xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWE0YzU3NQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29sb3Jsb2dfNC4xLjAuYmIKQEAgLTAsMCArMSwxMSBAQAorREVTQ1JJUFRJT04gPSAiQSBjb2xvcmVkIGZvcm1hdHRlciBmb3IgdGhlIHB5dGhvbiBsb2dnaW5nIG1vZHVsZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ib3JudHlwaW5nL3B5dGhvbi1jb2xvcmxvZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLm1kO21kNT0wNTU5MmY3YTViODNiZmM3NTZmNjJkYmQ3MGE5YjliNSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1BZUElfUEFDS0FHRSA9ICJjb2xvcmxvZyIKKworU1JDX1VSSVttZDVzdW1dID0gIjI1Zjc5Yjc2NDIxMTMyZTJhOWUwOGRhMTVlNGUwYTczIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMwYWFlZjVhYjJhMTg3M2RlYzVkYTM4ZmQ2YmE1NjhmYTc2MWM5ZmExMGI0MDI0MTAyN2ZhM2VkZWE0N2YzZDIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbmZpZ2FyZ3BhcnNlXzAuMTUuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29uZmlnYXJncGFyc2VfMC4xNS4xLmJiCmluZGV4IDY5OGVjY2YuLjA3OTc4OTggMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29uZmlnYXJncGFyc2VfMC4xNS4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29uZmlnYXJncGFyc2VfMC4xNS4xLmJiCkBAIC0xLDMgKzEsMjIgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWNvbmZpZ2FyZ3BhcnNlLmluYworU1VNTUFSWSA9ICJBIGRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIGFyZ3BhcnNlIHRoYXQgYWxsb3dzIG9wdGlvbnMgdG8gYWxzbyBiZSBzZXQgdmlhIGNvbmZpZyBmaWxlcyBhbmQvb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9idzIvQ29uZmlnQXJnUGFyc2UiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWRhNzQ2NDYzNzE0Y2MzNTk5OWVkOWE0MjMzOWYyOTQzIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYWJhMTViNzk3M2I3YTcwYmVhODZmZDY5Mjg5ZjhmZTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmFhZjBmZDJjMWMxMDhkMDA3ZjQwMmRhYjU0ODFhYzVmMTJkNzdkMDM0ODI1YmY1YTI3ZjgyMjQ3NTdiZDBhYyIKKworUFlQSV9QQUNLQUdFID0gIkNvbmZpZ0FyZ1BhcnNlIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUEFDS0FHRUNPTkZJRyA/PSAieWFtbCIKK1BBQ0tBR0VDT05GSUdbeWFtbF0gPSAiLCwsJHtQWVRIT05fUE59LXB5eWFtbCIKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tY29yZSBcCisgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbmZpZ3BhcnNlcl8zLjguMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29uZmlncGFyc2VyXzMuOC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NzBjYmE1Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29uZmlncGFyc2VyXzMuOC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1jb25maWdwYXJzZXIuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbmZpZ3BhcnNlcl80LjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29uZmlncGFyc2VyXzQuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE5NjY2MDkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbmZpZ3BhcnNlcl80LjAuMi5iYgpAQCAtMCwwICsxLDE0IEBACitTVU1NQVJZID0gIlRoaXMgbW9kdWxlIHByb3ZpZGVzIHRoZSBDb25maWdQYXJzZXIgY2xhc3Mgd2hpY2ggaW1wbGVtZW50cyBhIGJhc2ljIGNvbmZpZ3VyYXRpb24gbGFuZ3VhZ2Ugd2hpY2ggcHJvdmlkZXMgYSBzdHJ1Y3R1cmUgc2ltaWxhciB0byB3aGF0J3MgZm91bmQgaW4gTWljcm9zb2Z0IFdpbmRvd3MgSU5JIGZpbGVzLiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9kb2NzLnB5dGhvbi5vcmcvMy9saWJyYXJ5L2NvbmZpZ3BhcnNlci5odG1sIgorTElDRU5TRSA9ICJNSVQiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT0xMDtlbmRsaW5lPTEwO21kNT0yM2Y5YWQ1Y2FkM2Q4Y2MwMzM2ZTJhNWQ4YTg3ZTFmYSIKKworU1JDX1VSSVttZDVzdW1dID0gIjM1OTI2Y2M0YjkxMzNmMWY5Y2E3MGExZmQyZmRmMjM3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM3ZDI4MjY4N2E1MzA4MzE5YmYzZDJlNzcwNmU1NzVjNjM1YjBhNDcwMzQyNjQxYzkzYmVhMGVhM2I1MzMxZGYiCisKK0RFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzLXNjbS1uYXRpdmUiCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb25maWdzaGVsbC1mYl8xLjEuMjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbmZpZ3NoZWxsLWZiXzEuMS4yOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZDllYzA3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb25maWdzaGVsbC1mYl8xLjEuMjguYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJBIFB5dGhvbiBsaWJyYXJ5IGZvciBidWlsZGluZyBjb25maWd1cmF0aW9uIHNoZWxscyIKK0RFU0NSSVBUSU9OID0gImNvbmZpZ3NoZWxsLWZiIGlzIGEgUHl0aG9uIGxpYnJhcnkgdGhhdCBwcm92aWRlcyBhIGZyYW1ld29yayBmb3IgXAorYnVpbGRpbmcgc2ltcGxlIGJ1dCBuaWNlIENMSS1iYXNlZCBhcHBsaWNhdGlvbnMuIFRoaXMgcnVucyB3aXRoIFB5dGhvbiAyIGFuZCBcCisydG8zIGlzIHJ1biBieSBzZXR1cC5weSB0byBydW4gb24gUHl0aG9uIDMuIgorCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZGVjZTc4MjFiZjNmZDcwZmUxMzA5ZWFhMzdkNTJhMiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW4taXNjc2kvY29uZmlnc2hlbGwtZmIuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD1tYXN0ZXIiCitTUkNSRVYgPSAiZGE4ZjBjZWYxMTRlNzM0M2E3YWU5NmZmMWRiN2M4YzU3NGY4MTliZSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1tb2R1bGVzIHB5dGhvbjMtZmNudGwgcHl0aG9uMy1zaXgiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbnN0YW50bHlfMTUuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb25zdGFudGx5XzE1LjEuMC5iYgppbmRleCAzZjY2NzU0Li5hZDI0ZjZkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbnN0YW50bHlfMTUuMS4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29uc3RhbnRseV8xNS4xLjAuYmIKQEAgLTEsMiArMSwxMSBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tY29uc3RhbnRseS5pbmMKK0RFU0NSSVBUSU9OID0gIlN5bWJvbGljIGNvbnN0YW50cyBpbiBQeXRob24iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vdHdpc3RlZC9jb25zdGFudGx5IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lMzkzZTRkZGQyMjNlM2E3NDk4MmVmYTc4NGY4OWZkNyIKKworU1JDX1VSSVttZDVzdW1dID0gImYwNzYyZjA4M2Q4MzAzOTc1OGU1M2Y4Y2YwMDg2ZWVmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU4NjM3MmViOTIwNTk4NzNlMjllYmE0ZjlkZWM4MzgxNTQxYjRkMzgzNDY2MDcwN2ZhZjhiYTU5MTQ2ZGZjMzUiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWpzb24iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbnRleHRsaWIyXzAuNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jb250ZXh0bGliMl8wLjYuMC5iYgppbmRleCAxYzBiNTYwLi42MDc0ZWZhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNvbnRleHRsaWIyXzAuNi4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY29udGV4dGxpYjJfMC42LjAuYmIKQEAgLTEsMyArMSwxMiBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1jb250ZXh0bGliMi5pbmMKK0RFU0NSSVBUSU9OID0gIkJhY2twb3J0cyBhbmQgZW5oYW5jZW1lbnRzIGZvciB0aGUgY29udGV4dGxpYiBtb2R1bGUiCitIT01FUEFHRSA9ICJodHRwOi8vY29udGV4dGxpYjIucmVhZHRoZWRvY3Mub3JnLyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJQU0YiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NDNkMWM3ODI3ZThmYWQ2NDU0YjU1M2NhZjBlMWQ3MzQiCiAKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMDNhNjMxMDczYjQwMDczYjVjNDEzNjRhZDhmNTk3OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3MTk3YWE3MzY3NzdjYWFjNTEzZGJkODAwOTQ0YzIwOWE0OTc2NWJmMTk3OWIxMmIwMzdkY2UwMjc3MDc3ZWQzIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcmNtb2RfMS43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcmNtb2RfMS43LmJiCmluZGV4IDY5OTZiMTMuLjE0YTM0NGYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3JjbW9kXzEuNy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNyY21vZF8xLjcuYmIKQEAgLTEsMiArMSwxNCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tY3JjbW9kLmluYworU1VNTUFSWSA9ICJBIFB5dGhvbiBtb2R1bGUgZm9yIGdlbmVyYXRpbmcgb2JqZWN0cyB0aGF0IGNvbXB1dGUgdGhlIEN5Y2xpYyBSZWR1bmRhbmN5IENoZWNrLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9jcmNtb2QiCitMSUNFTlNFID0gIk1JVCIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZjlhMTkyOTE2MjdjYWQyZDFkZmJmY2YzYzlmYjg1YzIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZDViOTIxMTdkOTU4ZGNlYWQ5NGY5ZTE3ZjU0Y2QzMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkYzcwNTFhMGRiNWYyYmQ0ODY2NWE5OTBkM2VjMWNjMzA1YTQ2NmE3NzM1OGNhNDQ5MjgyNmY0MWYyODM2MDFlIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS11bml0dGVzdCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcnlwdG9ncmFwaHktdmVjdG9yc18yLjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNyeXB0b2dyYXBoeS12ZWN0b3JzXzIuOC5iYgppbmRleCA1ODk5NGZmLi45NDhhYWI5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNyeXB0b2dyYXBoeS12ZWN0b3JzXzIuOC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNyeXB0b2dyYXBoeS12ZWN0b3JzXzIuOC5iYgpAQCAtMSwyICsxLDIwIEBACitTVU1NQVJZID0gIlRlc3QgdmVjdG9ycyBmb3IgdGhlIGNyeXB0b2dyYXBoeSBwYWNrYWdlLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vY3J5cHRvZ3JhcGh5LmlvLyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIHwgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OGMzNjE3ZGI0ZmI2ZmFlMDFmMWQyNTNhYjkxNTExZTQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhNzQ0ZWQyOWJiOWVmNTZiM2E1MDMxN2ZlYTNiMjE4ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2Y2QzMjE3NGM1NmEzZWNhNzJmNjRhZjQzYzFkYWFjYWFlNzU4Y2ZhNWZmOWQyODBkZmNmODE4ZmExMWVmMTE2IgorCitQWVBJX1BBQ0tBR0UgPSAiY3J5cHRvZ3JhcGh5X3ZlY3RvcnMiCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tY3J5cHRvZ3JhcGh5LXZlY3RvcnMuaW5jCisKK0RFUEVORFMgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWNyeXB0b2dyYXBoeSBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcnlwdG9ncmFwaHlfMi44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jcnlwdG9ncmFwaHlfMi44LmJiCmluZGV4IDE5NTkyMzMuLmM3NWRhYmIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3J5cHRvZ3JhcGh5XzIuOC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWNyeXB0b2dyYXBoeV8yLjguYmIKQEAgLTEsOCArMSw2NSBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1jcnlwdG9ncmFwaHkuaW5jCitTVU1NQVJZID0gIlByb3ZpZGVzIGNyeXB0b2dyYXBoaWMgcmVjaXBlcyBhbmQgcHJpbWl0aXZlcyB0byBweXRob24gZGV2ZWxvcGVycyIKK0hPTUVQQUdFID0gImh0dHBzOi8vY3J5cHRvZ3JhcGh5LmlvLyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIHwgQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MDk3ZjgwNTgzNzcwMGNmYWM1NzJhYzI3NGNkMzgxMjQiCiAKIExEU0hBUkVEICs9ICItcHRocmVhZCIKIAorU1JDX1VSSVttZDVzdW1dID0gIjc3NzMwMDU4YjU1NmM2ZDk4Mzg2NzlhOTRjNjIyOWNlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNjZGExZjBlZDg3NDczMzliYmRmNzFiOWYzOGNhNzRjN2I1OTJmMjRmNjVjZGIzYWIzNzY1ZTRiMDI4NzE2NTEiCisKIFNSQ19VUkkgKz0gIiBcCiAgICAgZmlsZTovL3J1bi1wdGVzdCBcCiAiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitERVBFTkRTICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1jZmZpIFwKKyAgICAke1BZVEhPTl9QTn0tY2ZmaS1uYXRpdmUgXAorICAgICR7UFlUSE9OX1BOfS1hc24xY3J5cHRvIFwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWNmZmkgXAorICAgICR7UFlUSE9OX1BOfS1pZG5hIFwKKyAgICAke1BZVEhPTl9QTn0tYXNuMWNyeXB0byBcCisgICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWNmZmkgXAorICAgICR7UFlUSE9OX1BOfS1pZG5hIFwKKyAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICAgJHtQWVRIT05fUE59LWFzbjFjcnlwdG8gXAorICAgICR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzIFwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisgICAgJHtQTn0gXAorICAgICR7UFlUSE9OX1BOfS1jcnlwdG9ncmFwaHktdmVjdG9ycyBcCisgICAgJHtQWVRIT05fUE59LWlzbzg2MDEgXAorICAgICR7UFlUSE9OX1BOfS1wcmV0ZW5kIFwKKyAgICAke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyAgICAke1BZVEhPTl9QTn0tcHl0eiBcCisiCisKK2luaGVyaXQgcHRlc3QKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgY3AgLXJmICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2hhem1hdAorICAgIGNwIC1yZiAke1N9L3Rlc3RzL2hhem1hdC8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2hhem1hdC8KK30KKworRklMRVNfJHtQTn0tZGJnICs9ICIgXAorICAgICR7bGliZGlyfS8ke1BZVEhPTl9QTn0yLjcvc2l0ZS1wYWNrYWdlcy8ke1NSQ05BTUV9L2hhem1hdC9iaW5kaW5ncy8uZGVidWcgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWN5Y2xlcl8wLjEwLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWN5Y2xlcl8wLjEwLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2QyMWJlOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtY3ljbGVyXzAuMTAuMC5iYgpAQCAtMCwwICsxLDE2IEBACitTVU1NQVJZID0gIkNvbXBvc2FibGUgc3R5bGUgY3ljbGVzIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vbWF0cGxvdGxpYi9jeWNsZXIiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc3MTNmZTQyY2Q3NjZiMTVjNzEwZTE5MzkyYmZhODExIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGNiNDI5MTdhYzUwMDdkMWNkZmY2Y2NjZmUyZDAxNmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2Q3YjJkMTAxODI1OGQ3MjQ3YTcxNDI1ZTlmMjY0NjNkZmI0NDRkNDExYzM5NTY5OTcyZjRjZTU4NmIwYzlkOCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgcHl0aG9uMy1jb3JlIFwKKyAgICBweXRob24zLXNpeCBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGVjb3JhdG9yXzQuNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kZWNvcmF0b3JfNC40LjIuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGVjb3JhdG9yXzQuNC4xLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRlY29yYXRvcl80LjQuMi5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb21pbmF0ZV8yLjQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9taW5hdGVfMi40LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUzMDRjY2MuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb21pbmF0ZV8yLjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1kb21pbmF0ZS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9taW5hdGVfMi41LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvbWluYXRlXzIuNS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRkOGM1OTYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRvbWluYXRlXzIuNS4xLmJiCkBAIC0wLDAgKzEsMTMgQEAKK1NVTU1BUlkgPSAiRG9taW5hdGUgaXMgYSBQeXRob24gbGlicmFyeSBmb3IgY3JlYXRpbmcgYW5kIG1hbmlwdWxhdGluZyBIVE1MIGRvY3VtZW50cyB1c2luZyBhbiBlbGVnYW50IERPTSBBUEkuIgorTElDRU5TRSA9ICJMR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9YjUyZjJkNTdkMTBjNGY3ZWU2N2E3ZWI5NjE1ZDVkMjQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzNWVlYjZiNTU4N2M4YzlhNTFjZDIyYzgzZTA3YWM0OSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YjA1NDgxNjA1ZWE4YzBhZmQwYTk4YzAxNTZhOWZiNzhkOWM0MDYzNjhkNjZiM2U2ZmVkZjM2OTIwZmI5ZDc4IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisgICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1lbmdpbmVpb18zLjExLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWVuZ2luZWlvXzMuMTIuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1lbmdpbmVpb18zLjExLjIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZW5naW5laW9fMy4xMi4xLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWV0LXhtbGZpbGVfMS4wLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWV0LXhtbGZpbGVfMS4wLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2ZmZjE1MAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZXQteG1sZmlsZV8xLjAuMS5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gImV0X3htbGZpbGUgaXMgYSBsb3cgbWVtb3J5IGxpYnJhcnkgZm9yIGNyZWF0aW5nIGxhcmdlIFhNTCBmaWxlcyIKK0RFU0NSSVBUSU9OID0gIkl0IGlzIGJhc2VkIHVwb24gdGhlIHhtbGZpbGUgbW9kdWxlIGZyb20gbHhtbCB3aXRoIHRoZSBhaW0gb2YgYWxsb3dpbmcgY29kZSBcCit0byBiZSBkZXZlbG9wZWQgdGhhdCB3aWxsIHdvcmsgd2l0aCBib3RoIGxpYnJhcmllcy4gSXQgd2FzIGRldmVsb3BlZCBpbml0aWFsbHkgZm9yIFwKK3RoZSBvcGVucHl4bCBwcm9qZWN0IGJ1dCBpcyBub3cgYSBzdGFuZGFsb25lIG1vZHVsZS4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vYml0YnVja2V0Lm9yZy9vcGVucHl4bC9ldF94bWxmaWxlL3NyYy9kZWZhdWx0LyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PWIzZDg5Y2FlNjZmMjZjM2EwNzk5YmU4YTk2ZjMxNzhiIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjQ3OTQwZmQ5ZDU1NjM3NTQyMGIyZTI3NjQ3NmNmYWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjE0ZDk3MjJkNTcyZjYyNDYzMDJjNDQ5MTg0NmQyYzM5M2MxOTljZmE0ZWRjOWFmNTkzNDM3NjkxNjgzMzM1YiIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1jb21wcmVzc2lvbiAke1BZVEhPTl9QTn0taW8gJHtQWVRIT05fUE59LXBwcmludCAke1BZVEhPTl9QTn0tc2hlbGwiCisKK2luaGVyaXQgc2V0dXB0b29sczMKK1BZUElfUEFDS0FHRSA/PSAiZXRfeG1sZmlsZSIKK1BZUElfU1JDX1VSSSA/PSAiaHR0cHM6Ly9maWxlcy5weXRob25ob3N0ZWQub3JnL3BhY2thZ2VzL3NvdXJjZS9lL2V0X3htbGZpbGUvZXRfeG1sZmlsZS0xLjAuMS50YXIuZ3oiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK1NSQ19VUkkgKz0gIiR7UFlQSV9TUkNfVVJJfSIKK1MgPSAiJHtXT1JLRElSfS8ke1BZUElfUEFDS0FHRX0tJHtQVn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWV2ZGV2XzEuMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ldmRldl8xLjIuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2E5MmI2ZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWV2ZGV2XzEuMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWV2ZGV2LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ldmRldl8xLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZXZkZXZfMS4zLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg3YmYyZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZXZkZXZfMS4zLjAuYmIKQEAgLTAsMCArMSwzIEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLWV2ZGV2LmluYworCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLWpzb25waWZ5XzEuNS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1qc29ucGlmeV8xLjUuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZDdlOWI1Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1qc29ucGlmeV8xLjUuMC5iYgpAQCAtMCwwICsxLDE0IEBACitERVNDUklQVElPTiA9ICJBIEZsYXNrIGV4dGVuc2lvbiBhZGRpbmcgYSBkZWNvcmF0b3IgZm9yIEpTT05QIHN1cHBvcnQiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vQ29yeURvbHBoaW4vZmxhc2stanNvbnBpZnkiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLnJzdDttZDU9YmQ1OTQ0NWEyMzRhMGM4MjUwYjM5MTc4ZDQyZTMxNDgiCisKK1BZUElfUEFDS0FHRSA9ICJGbGFzay1Kc29ucGlmeSIKKworU1JDX1VSSVttZDVzdW1dID0gIjhhMTBlMzc5NDJjNDNkOTNkMTA3NjQ0YTNmZTc3ZDk4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhhYzRjNzMyYWE1YjExZDlmNmMyZGU1ODA2NWQzYjY2OWYxMzk1MThjYThmNTI5YmNlOTQzODE3ZTJmZWRiZmIiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWZsYXNrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1qd3RfMC4zLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWZsYXNrLWp3dF8wLjMuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzlhMmUyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1mbGFzay1qd3RfMC4zLjIuYmIKQEAgLTAsMCArMSwxNCBAQAorREVTQ1JJUFRJT04gPSAiSldUIHRva2VuIGF1dGhlbnRpY2F0aW9uIGZvciBGbGFzayBhcHBzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL21hdHR1cHN0YXRlL2ZsYXNrLWp3dCIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1mZjAwZGI0MWM0N2VjODRiNDU2N2E4YjNjMjQ2YTk1OSIKKworUFlQSV9QQUNLQUdFID0gIkZsYXNrLUpXVCIKKworU1JDX1VSSVttZDVzdW1dID0gIjg3OGFkNzlhMTJhZmE3MGFkMzhhMTJkNWZmZDJkYzFlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ5YzA2NzJmYmRlMGYxY2QzMzc0YmQ4MzQ5MThkMjg5NTZlM2M1MjFjN2UwMDA4OWNkYzUzODBkMzIzYmQwYWQiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXB5and0ICR7UFlUSE9OX1BOfS1mbGFzayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2VvanNvbl8yLjUuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2VvanNvbl8yLjUuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YzNjMjNiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1nZW9qc29uXzIuNS4wLmJiCkBAIC0wLDAgKzEsMTMgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGFuZCB1dGlsaXRpZXMgZm9yIEdlb0pTT04iCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkub3JnL3Byb2plY3QvZ2VvanNvbi8iCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UucnN0O21kNT1mNDg5NzJhYmU1Y2RkZWU3OWUzMDE1NzQ3NDJlZDc0NSIKKworU1JDX1VSSVttZDVzdW1dID0gIjE0NzUzZWQyODY3ODgyOGIxZGU3M2Y2OGIwNGUyMzI0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZlNGJiN2FjZTQyMjZhNDVkOWM4YzhiMTM0OGIzZmM0MzU0MDY1ODM1OWY5M2MzZjdlMDNlZmE5ZjE1ZjY1OGEiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1zaW1wbGVqc29uIHB5dGhvbjMtbWF0aCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1nbXF0dF8wLjQuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ21xdHRfMC40LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZmODkwODcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1nbXF0dF8wLjQuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiQ2xpZW50IGZvciBNUVRUIHByb3RvY29sIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dpYWxvbi9nbXF0dCIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTAzZjE3OTI2MjFhM2IzNWVlNTQ2ZGE3NWQxMzkxNzciCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhZjNhMmM2YzJmOGUzYzkzNGIzMTE1OWZmZGNlNWZkNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiOTZiY2E4YTU0YjhhZjA1N2Q0Y2M0MmE3OWY5ZTJiNDBjZGJiNWEyYmZlYmJjNWYwNWVlMzU1NzVkM2UzMDg5IgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICBweXRob24zLWFzeW5jaW8gXAotICAgIHB5dGhvbjMtY29yZSBcCi0gICAgcHl0aG9uMy1kYXRldGltZSBcCi0gICAgcHl0aG9uMy1qc29uIFwKLSAgICBweXRob24zLWxvZ2dpbmcgXAotICAgIHB5dGhvbjMtbmV0Y2xpZW50IFwKLSAgICBweXRob24zLXR5cGluZyBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ21xdHRfMC42LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdtcXR0XzAuNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkNGFjODgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdtcXR0XzAuNi4yLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiQ2xpZW50IGZvciBNUVRUIHByb3RvY29sIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dpYWxvbi9nbXF0dCIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OTAzZjE3OTI2MjFhM2IzNWVlNTQ2ZGE3NWQxMzkxNzciCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmNzYzZjEyYzVlNmJhNmYwZmEwZWM0YTZkYzhjM2ZkOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzYjNjMTJjYjYyYmJjM2VlMGJkODFkYTNkOWZiZDc4YzU0MTQwOThhYWY1ODIzNmMzNjYzZWRmZWRhNTIzN2UwIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICBweXRob24zLWFzeW5jaW8gXAorICAgIHB5dGhvbjMtY29yZSBcCisgICAgcHl0aG9uMy1kYXRldGltZSBcCisgICAgcHl0aG9uMy1qc29uIFwKKyAgICBweXRob24zLWxvZ2dpbmcgXAorICAgIHB5dGhvbjMtbmV0Y2xpZW50IFwKKyAgICBweXRob24zLXR5cGluZyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3JwY2lvLzAwMDEtc2V0dXAucHktRG8tbm90LW1peC1DLWFuZC1DLWNvbXBpbGVyLW9wdGlvbnMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdycGNpby8wMDAxLXNldHVwLnB5LURvLW5vdC1taXgtQy1hbmQtQy1jb21waWxlci1vcHRpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmZjUwYTAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdycGNpby8wMDAxLXNldHVwLnB5LURvLW5vdC1taXgtQy1hbmQtQy1jb21waWxlci1vcHRpb25zLnBhdGNoCkBAIC0wLDAgKzEsNzQgQEAKK0Zyb20gMmVmOGE4NTkzM2YzYWMzNmIyODk5NzlmZjllZGQ0OWRkMTJkMGQxNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDQgQXVnIDIwMTcgMDk6MDQ6MDcgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gc2V0dXAucHk6IERvIG5vdCBtaXggQyBhbmQgQysrIGNvbXBpbGVyIG9wdGlvbnMKKworRVhUUkFfRU5WX0NPTVBJTEVfQVJHUyBpcyB1c2VkIGJvdGggd2l0aCBDQyBhbmQgQ1hYCitzbyB1c2luZyAtc3RkPWMrKzExIG9yIC1zdGQ9Z251OTkgdG9nZXRoZXIgd2lsbCBjYXVzZQorYnVpbGQgdGltZSBlcnJvcnMgZXNwY2lhbGx5IHdpdGggY2xhbmcKKworZXJyb3I6IGludmFsaWQgYXJndW1lbnQgJy1zdGQ9Z251OTknIG5vdCBhbGxvd2VkIHdpdGggJ0MrKycKKworZ2NjNyAoIGRlZmF1bHRzIGFyZSAtc3RkPWdudTExIGFuZCAtc3RkPWdudSsrMTQgKQorIGFzIHdlbGwgY2xhbmcgZGVmYXVsdCB0byB0aGVzZSBzdGFuZGFyZHMgbW9kZSBvciBuZXdlcgorYW55d2F5CisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKzEuIEtlZXAgJy1zdGQ9YysrMTEnIGFuZCAnLXN0ZD1nbnU5OScgdG8gZml4IG5hdGl2ZSBidWlsZCBlcnJvcgord2l0aCBvbGQgZ2NjIChzdWNoIGFzIGdjYyA1LjQuMCBvbiB1YnVudHUgMTYuMDQpLCBmb3IgY2xhbmcKK3dlIHdpbGwgcmVtb3ZlIHRoZW0gdGhyb3VnaCBHUlBDX1BZVEhPTl9DRkxBR1MgYXQgZG9fY29tcGlsZQoraW4gYmIgcmVjaXBlLgorCisyLiBXaGlsZSBleHBvcnQgQ0M9ImdjYyAiLCBjY19hcmdzIGlzIE5vbmUsIGl0IHdpbGwKK2NhdXNlIHN1YnByb2Nlc3MuUG9wZW4gYWx3YXlzIHJldHVybiAxLiBPbiBjZW50b3MgOCwgaWYgeW91IGRvbid0CitpbnN0YWxsIHBhY2thZ2UgbGliYXRvbWljLCB0aGVyZSB3aWxsIGJlIGEgbmF0aXZlIGJ1aWxkIGVycm9yCitgY2Fubm90IGZpbmQgL3Vzci9saWI2NC9saWJhdG9taWMuc28uMS4yLjAnLgorCitBZGQgbm8gaGFybSAnLWcnIHRvIGNjX2FyZ3MgaWYgY2NfYXJncyBpcyBlbXB0eS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNldHVwLnB5ICAgICAgICAgICAgICAgICAgICAgIHwgNiArKysrKy0KKyBzcmMvcHl0aG9uL2dycGNpby9jb21tYW5kcy5weSB8IDUgKysrKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKK2luZGV4IGU5NTAwNTcuLjFiNjgyMjEgMTAwNjQ0CistLS0gYS9zZXR1cC5weQorKysrIGIvc2V0dXAucHkKK0BAIC0xNDQsOSArMTQ0LDEzIEBAIEVOQUJMRV9ET0NVTUVOVEFUSU9OX0JVSUxEID0gb3MuZW52aXJvbi5nZXQoCisgCisgZGVmIGNoZWNrX2xpbmtlcl9uZWVkX2xpYmF0b21pYygpOgorICAgIiIiVGVzdCBpZiBsaW5rZXIgb24gc3lzdGVtIG5lZWRzIGxpYmF0b21pYy4iIiIKKysgIGNvbXBpbGVyLCBjY19hcmdzID0gb3MuZW52aXJvbi5nZXQoJ0NDJykuc3BsaXQoJyAnLCAxKSBvciAnZ2NjJworKyAgaWYgbm90IGNjX2FyZ3M6CisrICAgICAgY2NfYXJncyA9ICItZyIKKysKKyAgIGNvZGVfdGVzdCA9IChiJyNpbmNsdWRlIDxhdG9taWM+XG4nICsKKyAgICAgICAgICAgICAgICBiJ2ludCBtYWluKCkgeyByZXR1cm4gc3RkOjphdG9taWM8aW50NjRfdD57fTsgfScpCistICBjY190ZXN0ID0gc3VicHJvY2Vzcy5Qb3BlbihbJ2NjJywgJy14JywgJ2MrKycsICctc3RkPWMrKzExJywgJy0nXSwKKysgIGNjX3Rlc3QgPSBzdWJwcm9jZXNzLlBvcGVuKFtjb21waWxlciwgY2NfYXJncywgJy14JywgJ2MrKycsICctc3RkPWMrKzExJywgJy0nXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGluPVBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdGRvdXQ9UElQRSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZGVycj1QSVBFKQorZGlmZiAtLWdpdCBhL3NyYy9weXRob24vZ3JwY2lvL2NvbW1hbmRzLnB5IGIvc3JjL3B5dGhvbi9ncnBjaW8vY29tbWFuZHMucHkKK2luZGV4IDA2NGRkYTkuLmE3NWQ4YjkgMTAwNjQ0CistLS0gYS9zcmMvcHl0aG9uL2dycGNpby9jb21tYW5kcy5weQorKysrIGIvc3JjL3B5dGhvbi9ncnBjaW8vY29tbWFuZHMucHkKK0BAIC0yMTYsNyArMjE2LDEwIEBAIGNsYXNzIEJ1aWxkRXh0KGJ1aWxkX2V4dC5idWlsZF9leHQpOgorICAgICAgICAgICAgIHdoZW4gaW52b2tlZCBpbiBDIG1vZGUuIEdDQyBpcyBva2F5IHdpdGggdGhpcywgd2hpbGUgY2xhbmcgaXMgbm90LgorICAgICAgICAgICAgICIiIgorICAgICAgICAgICAgICMgVE9ETyhsaWRpeikgUmVtb3ZlIHRoZSBnZW5lcmF0ZWQgYS5vdXQgZm9yIHN1Y2Nlc3MgdGVzdHMuCistICAgICAgICAgICAgY2NfdGVzdCA9IHN1YnByb2Nlc3MuUG9wZW4oWydjYycsICcteCcsICdjJywgJy1zdGQ9YysrMTEnLCAnLSddLAorKyAgICAgICAgICAgIGNvbXBpbGVyLCBjY19hcmdzID0gb3MuZW52aXJvbi5nZXQoJ0NDJykuc3BsaXQoJyAnLCAxKSBvciAnZ2NjJworKyAgICAgICAgICAgIGlmIG5vdCBjY19hcmdzOgorKyAgICAgICAgICAgICAgICBjY19hcmdzID0gIi1nIgorKyAgICAgICAgICAgIGNjX3Rlc3QgPSBzdWJwcm9jZXNzLlBvcGVuKFtjb21waWxlciwgY2NfYXJncywgJy14JywgJ2MnLCAnLXN0ZD1jKysxMScsICctJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkaW49c3VicHJvY2Vzcy5QSVBFLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0ZG91dD1zdWJwcm9jZXNzLlBJUEUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RkZXJyPXN1YnByb2Nlc3MuUElQRSkKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ncnBjaW8vcHBjLWJvcmluZ3NzbC1zdXBwb3J0LnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ncnBjaW8vcHBjLWJvcmluZ3NzbC1zdXBwb3J0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhYzJhZWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdycGNpby9wcGMtYm9yaW5nc3NsLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSwxNyBAQAorTGV0IGJvcmluZ1NTTCBjb21waWxlIG9uIHBwYzMyIGJpdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKKy0tLSBhL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9pbmNsdWRlL29wZW5zc2wvYmFzZS5oCisrKysgYi90aGlyZF9wYXJ0eS9ib3Jpbmdzc2wvaW5jbHVkZS9vcGVuc3NsL2Jhc2UuaAorQEAgLTk5LDYgKzk5LDkgQEAgZXh0ZXJuICJDIiB7CisgI2VsaWYgKGRlZmluZWQoX19QUEM2NF9fKSB8fCBkZWZpbmVkKF9fcG93ZXJwYzY0X18pKSAmJiBkZWZpbmVkKF9MSVRUTEVfRU5ESUFOKQorICNkZWZpbmUgT1BFTlNTTF82NF9CSVQKKyAjZGVmaW5lIE9QRU5TU0xfUFBDNjRMRQorKyNlbGlmIChkZWZpbmVkKF9fUFBDX18pIHx8IGRlZmluZWQoX19wb3dlcnBjX18pKQorKyNkZWZpbmUgT1BFTlNTTF8zMl9CSVQKKysjZGVmaW5lIE9QRU5TU0xfUFBDCisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykgJiYgIWRlZmluZWQoX19MUDY0X18pCisgI2RlZmluZSBPUEVOU1NMXzMyX0JJVAorICNkZWZpbmUgT1BFTlNTTF9NSVBTCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdycGNpby9yaXNjdjY0X3N1cHBvcnQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdycGNpby9yaXNjdjY0X3N1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU1ZDUwYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3JwY2lvL3Jpc2N2NjRfc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDE2IEBACitBZGQgUklTQy1WIDY0Yml0IHN1cHBvcnQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tIGEvdGhpcmRfcGFydHkvYm9yaW5nc3NsL2luY2x1ZGUvb3BlbnNzbC9iYXNlLmgKKysrKyBiL3RoaXJkX3BhcnR5L2JvcmluZ3NzbC9pbmNsdWRlL29wZW5zc2wvYmFzZS5oCitAQCAtMTA4LDYgKzEwOCw5IEBAIGV4dGVybiAiQyIgeworICNlbGlmIGRlZmluZWQoX19taXBzX18pICYmIGRlZmluZWQoX19MUDY0X18pCisgI2RlZmluZSBPUEVOU1NMXzY0X0JJVAorICNkZWZpbmUgT1BFTlNTTF9NSVBTNjQKKysjZWxpZiBkZWZpbmVkKF9fcmlzY3YpICYmIGRlZmluZWQoX19yaXNjdl94bGVuKQorKyNkZWZpbmUgT1BFTlNTTF82NF9CSVQKKysjZGVmaW5lIE9QRU5TU0xfUklTQ1Y2NAorICNlbGlmIGRlZmluZWQoX19wbmFjbF9fKQorICNkZWZpbmUgT1BFTlNTTF8zMl9CSVQKKyAjZGVmaW5lIE9QRU5TU0xfUE5BQ0wKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3JwY2lvXzEuMTkuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3JwY2lvXzEuMTkuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDQ3MjBiNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdycGNpb18xLjE5LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLWdycGNpby5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3JwY2lvXzEuMjcuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3JwY2lvXzEuMjcuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44M2QzNjcxCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ncnBjaW9fMS4yNy4xLmJiCkBAIC0wLDAgKzEsMzQgQEAKK0RFU0NSSVBUSU9OID0gIkdvb2dsZSBnUlBDIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ncnBjLmlvLyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCisKK0RFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1wcm90b2J1ZiIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtc2V0dXAucHktRG8tbm90LW1peC1DLWFuZC1DLWNvbXBpbGVyLW9wdGlvbnMucGF0Y2giCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGZpbGU6Ly9wcGMtYm9yaW5nc3NsLXN1cHBvcnQucGF0Y2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcmlzY3Y2NF9zdXBwb3J0LnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjY2FmNGU3ZWI0ZjAzMWQ5MjZmYjgwMDM1ZDE5M2I5OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhODk5NzI1ZDM0NzY5YTQ5OGVjZDNiZTE1NDAyMWM0MzY4ZGQyMmJkYzY5NDczZjZlYzQ2Nzc5Njk2ZjYyNmM0IgorCitSREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tcHJvdG9idWYgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXNpeCBcCisiCisKK2luaGVyaXQgc2V0dXB0b29sczMKK2luaGVyaXQgcHlwaQorCitleHBvcnQgR1JQQ19QWVRIT05fRElTQUJMRV9MSUJDX0NPTVBBVElCSUxJVFkgPSAiMSIKKworZG9fY29tcGlsZV9wcmVwZW5kX3Rvb2xjaGFpbi1jbGFuZygpIHsKKyAgICBleHBvcnQgR1JQQ19QWVRIT05fQ0ZMQUdTPSctZnZpc2liaWxpdHk9aGlkZGVuIC1mbm8td3JhcHYgLWZuby1leGNlcHRpb25zJworfQorCitDTEVBTkJST0tFTiA9ICIxIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK0NDQUNIRV9ESVNBQkxFID0gIjEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWd1bmljb3JuXzIwLjAuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ3VuaWNvcm5fMjAuMC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjViZDhkNTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWd1bmljb3JuXzIwLjAuNC5iYgpAQCAtMCwwICsxLDExIEBACitTVU1NQVJZID0gIldTR0kgSFRUUCBTZXJ2ZXIgZm9yIFVOSVgiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9Zjc1ZjNmYjk0Y2RlYWIxZDYwN2UyYWRhYTYwNzc3NTIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1NDM2NjlmY2JiNTczOWVlMmFmNzcxODRjNWU1NzFhMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxOTA0YmIyYjhhNDM2NTg4MDcxMDhkNTljM2YzZDU2YzJiNjEyMWE3MDExNjFkZTBkZGY5YWQxNDAwNzNjNjI2IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzICR7UFlUSE9OX1BOfS1mY250bCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaGF2ZXJzaW5lXzIuMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1oYXZlcnNpbmVfMi4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmMyY2M3ZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaGF2ZXJzaW5lXzIuMi4wLmJiCkBAIC0wLDAgKzEsMTIgQEAKK1NVTU1BUlkgPSAiQ2FsY3VsYXRlIHRoZSBkaXN0YW5jZSBiZXR3ZWVuIDIgcG9pbnRzIG9uIEVhcnRoIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke0NPTU1PTl9MSUNFTlNFX0RJUn0vTUlUO21kNT0wODM1YWRlNjk4ZTBiY2Y4NTA2ZWNkYTJmN2I0ZjMwMiIKKworU1JDX1VSSVttZDVzdW1dID0gIjZiMWJhZGViNjNhYWM2MjE0Yzk3OGQwN2E0ZWNkMTcxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI3MTBhYWYzMmM0NDJhNmQwNGFhODk2NzhiZTU1ZTNmNmMxMWY5NzUyZmMwMWMyMTZlODliMTMxMjBiMzYyNjkiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1udW1weSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1odHRwbGliMl8wLjE3LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWh0dHBsaWIyXzAuMTcuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzA0N2M5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1odHRwbGliMl8wLjE3LjMuYmIKQEAgLTAsMCArMSwxMCBAQAorU1VNTUFSWSA9ICJBIGNvbXByZWhlbnNpdmUgSFRUUCBjbGllbnQgbGlicmFyeSwgaHR0cGxpYjIgc3VwcG9ydHMgbWFueSBmZWF0dXJlcyBsZWZ0IG91dCBvZiBvdGhlciBIVFRQIGxpYnJhcmllcy4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vaHR0cGxpYjIvaHR0cGxpYjIiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTRlZGIzZjA3MmE5ZDgxNTczNDUzMGY2MDgwMzlhMTY3IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTczMDQ5MGNmZTgzMzUwNDc3YjU0YjBhOGExOTBjOGEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzlkZDE1YTMzM2Y2N2JmYjcwNzk4ZmFhOWRlOGE2ZTk5YzgxOWRhNmFkODJiNzdmOWEyNTlhNWM3YjEyMjVhMiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWltYWdlaW9fMi42LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWltYWdlaW9fMi42LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGZlNGI5OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaW1hZ2Vpb18yLjYuMC5iYgpAQCAtMCwwICsxLDE0IEBACitTVU1NQVJZID0gIlB5dGhvbiBsaWJyYXJ5IHRoYXQgcHJvdmlkZXMgYW4gZWFzeSBpbnRlcmZhY2UgdG8gcmVhZCBhbmQgXAord3JpdGUgYSB3aWRlIHJhbmdlIG9mIGltYWdlIGRhdGEsIGluY2x1ZGluZyBhbmltYXRlZCBpbWFnZXMsIHZpZGVvLCBcCit2b2x1bWV0cmljIGRhdGEsIGFuZCBzY2llbnRpZmljIGZvcm1hdHMuIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQ4YjdmZGQwZGZmMGZkMThmMzVjMDUzNjVkM2Q3YmY3IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaW1hZ2Vpby9pbWFnZWlvLmdpdDtwcm90b2NvbD1odHRwcyIKK1NSQ1JFViA9ICIwYjE2MTY0OWIzZWUxMDhmODBiZDk5NDY2YWVhYjJlNjVjZjgyY2Q4IgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSA9ICJweXRob24zLW51bXB5IHB5dGhvbjMtcGlsbG93IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1pbXBvcnRsaWItbWV0YWRhdGFfMC4yMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaW1wb3J0bGliLW1ldGFkYXRhXzEuNS4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWltcG9ydGxpYi1tZXRhZGF0YV8wLjIzLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWltcG9ydGxpYi1tZXRhZGF0YV8xLjUuMi5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1pcGFkZHJlc3NfMS4wLjIzLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1pcGFkZHJlc3NfMS4wLjIzLmJiCmluZGV4IDc3ZTk3ODcuLjc5NjIxM2YgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaXBhZGRyZXNzXzEuMC4yMy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWlwYWRkcmVzc18xLjAuMjMuYmIKQEAgLTEsMiArMSwxMSBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24taXBhZGRyZXNzLmluYworU1VNTUFSWSA9ICJQeXRob24gMy4zKydzIGlwYWRkcmVzcyBmb3IgUHl0aG9uIDIuNiwgMi43LCAzLjIuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3BoaWhhZy9pcGFkZHJlc3MiCitMSUNFTlNFID0gIlB5dGhvbi0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03ZjUzODU4NGNjMzQwN2JmNzYwNDJkZWY3MTY4NTQ4YSIKKworU1JDX1VSSVttZDVzdW1dID0gImFhZWU2N2E4MDI2NzgyYWYxODMxMTQ4YmViMGQ5MDYwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImI3ZjhlMDM2OTU4MGJiNGEyNGQ1YmExZDdjYzI5NjYwYTRhNjk4Nzc2M2ZhZjFkOGE4MDQ2ODMwZTAyMGU3ZTIiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWlzbzMxNjZfMS4wLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWlzbzMxNjZfMS4wLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjNmYzRlYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtaXNvMzE2Nl8xLjAuMS5iYgpAQCAtMCwwICsxLDEzIEBACitTVU1NQVJZID0gIlNlbGYtY29udGFpbmVkIElTTyAzMTY2LTEgY291bnRyeSBkZWZpbml0aW9ucyIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9pc28zMTY2LyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTVlMmY0ZWRjN2U3NDA4YTgyZTRhMWQwNWYyMjliNjk1IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTNjMzEzYzdhZTg3MjFlNDBkZGQ1ZTdhMDFiYmNiN2UiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjFlNThkYmNmNTBmYmIyYzljNDE4ZWM3YTYwNTdmMGNkYjMwYjhmODIyYWM4NTJmNzJlNzFiYTc2OWRhZThjNSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLW51bWJlcnMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtamRjYWwvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qZGNhbC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNlYzcxMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtamRjYWwvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGVzdApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qZGNhbF8xLjQuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtamRjYWxfMS40LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDZkZWVhZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtamRjYWxfMS40LjEuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJUaGlzIG1vZHVsZSBjb250YWlucyBmdW5jdGlvbnMgZm9yIGNvbnZlcnRpbmcgYmV0d2VlbiBKdWxpYW4gZGF0ZXMgYW5kIGNhbGVuZGFyIGRhdGVzIgorREVTQ1JJUFRJT04gPSAiQSBmdW5jdGlvbiBmb3IgY29udmVydGluZyBHcmVnb3JpYW4gY2FsZW5kYXIgZGF0ZXMgdG8gSnVsaWFuIGRhdGVzLCBcCithbmQgYW5vdGhlciBmdW5jdGlvbiBmb3IgY29udmVydGluZyBKdWxpYW4gY2FsZW5kYXIgZGF0ZXMgdG8gSnVsaWFuIGRhdGVzIGFyZSBkZWZpbmVkLiBcCitUd28gZnVuY3Rpb25zIGZvciB0aGUgcmV2ZXJzZSBjYWxjdWxhdGlvbnMgYXJlIGFsc28gZGVmaW5lZC4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9waG4vamRjYWwiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT1iZDIzNmUxZjU5MDk3MzQ2N2E0MjdiYjM1NGJlMGY0NiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzIHB0ZXN0CisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlMDViZGI2MGZhODBmMjViYzYwZTczZTBjNmI3YzVkYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0NzI4NzJlMDk2ZWI4ZGYyMTljMjNmMjY4OWZjMzM2NjY4YmRiNDNkMTk0MDk0YjVjYzE3MDdlMTY0MGFjZmM4IgorCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LWNvbXByZXNzaW9uICR7UFlUSE9OX1BOfS1pbyAke1BZVEhPTl9QTn0tcHByaW50ICR7UFlUSE9OX1BOfS1zaGVsbCIKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJY3AgLWYgJHtTfS90ZXN0X2pkY2FsLnB5ICR7RH0ke1BURVNUX1BBVEh9LworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qaW5qYTIvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qaW5qYTIvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZWM3MTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWppbmphMi9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWppbmphMl8yLjEwLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWppbmphMl8yLjExLjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtamluamEyXzIuMTAuMy5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1qaW5qYTJfMi4xMS4xLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWpzbWluL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtanNtaW4vcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNiY2ZmZmQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWpzbWluL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRob24zIHRlc3QucHkKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtanNtaW5fMi4yLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWpzbWluXzIuMi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliN2E4MjQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWpzbWluXzIuMi4yLmJiCkBAIC0wLDAgKzEsMjMgQEAKK0RFU0NSSVBUSU9OID0gIkphdmFTY3JpcHQgbWluaWZpZXIuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3Rpa2l0dS9qc21pbi8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTNhMzMwMWNlMmFkNjQ3ZTE3MmY0YTEwMTZjNjczMjRkIgorCitpbmhlcml0IHNldHVwdG9vbHMzIHB5cGkgcHRlc3QKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMGU3YTMxNzlhNDU5MWFhYjJlZTcwN2IzMjE0ZTJmZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNmRmOTliMmNkMWM3NWQ5ZDM0MmU0MzM1YjUzNTc4OWI4ZGE5MTA3ZWM3NDgyMTI3MDZlZjdiYmU1YzI1NTNiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUkkgKz0gIiBcCisJZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorCSR7UFlUSE9OX1BOfS1weXRlc3QgXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwIC1mICR7U30vanNtaW4vdGVzdC5weSAke0R9JHtQVEVTVF9QQVRIfS8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtanNvbnBhdGNoXzEuMjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWpzb25wYXRjaF8xLjI1LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWpzb25wYXRjaF8xLjI0LmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWpzb25wYXRjaF8xLjI1LmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWpzb25wb2ludGVyL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtanNvbnBvaW50ZXIvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxZTYwOWYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWpzb25wb2ludGVyL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRob24zIHRlc3RzLnB5CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWtjb25maWdsaWJfMTMuNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1rY29uZmlnbGliXzE0LjEuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1rY29uZmlnbGliXzEzLjcuMC5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1rY29uZmlnbGliXzE0LjEuMC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1raXdpc29sdmVyXzEuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1raXdpc29sdmVyXzEuMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExMDgzMDIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWtpd2lzb2x2ZXJfMS4xLjAuYmIKQEAgLTAsMCArMSwxNiBAQAorU1VNTUFSWSA9ICJBIGZhc3QgaW1wbGVtZW50YXRpb24gb2YgdGhlIENhc3Nvd2FyeSBjb25zdHJhaW50IHNvbHZlciIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9udWNsZWljL2tpd2kiCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NldHVwLnB5O2VuZGxpbmU9NzttZDU9MWMxNzdkMTY5ZGIwNTAzNDFkM2I4OTBjNjlmYjgwZTMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmYzhhNjE0MzY3ZjdiYTBkMzRhMDJmZDA4YzUzNWFmYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1M2VhZWQ0MTI0NzdjODM2ZTFiOTUyMmMxOTg1OGE4NTU3ZDZlNTk1MDc3ODMwMTQ2MTgyMjI1NjEzYjExYTc1IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICBweXRob24zLWNvcmUgXAorICAgIHB5dGhvbjMtc2V0dXB0b29scyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGljZW5zZS1leHByZXNzaW9uL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbGljZW5zZS1leHByZXNzaW9uL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2VjNzExCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1saWNlbnNlLWV4cHJlc3Npb24vcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGVzdApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1sb2NrZmlsZV8wLjEyLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWxvY2tmaWxlXzAuMTIuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGIxMjk3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1sb2NrZmlsZV8wLjEyLjIuYmIKQEAgLTAsMCArMSwxNyBAQAorIyBUaGlzIHJlY2lwZSBpcyBvcmlnaW5hbGx5IGZyb20gbWV0YS1vcGVuc3RhY2s6CisjIGh0dHBzOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9tZXRhLWNsb3VkLXNlcnZpY2VzL3RyZWUvbWV0YS1vcGVuc3RhY2svcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWxvY2tmaWxlXzAuMTIuMi5iYgorCitTVU1NQVJZID0gIlBsYXRmb3JtLWluZGVwZW5kZW50IGZpbGUgbG9ja2luZyBtb2R1bGUiCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkub3JnL3Byb2plY3QvbG9ja2ZpbGUvIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMzQwZGZmYmJmZWE1MzRiNThmMTM0OTk4NGVlZWY3MiIKKworU1JDX1VSSVttZDVzdW1dID0gImE2YTFhODI5NTdhMjNhZmRmNDRjZmRkMDM5YjY1ZmY5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZhZWQwMmRlMDNjYmEyNGVmYWJjZDYwMGIzMDU0MDE0MDYzNGZjMDZjZmE2MDM4MjJkNTA4ZDUzNjFlOWY3OTkiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitERVBFTkRTICs9ICJweXRob24zLWRpc3R1dGlscy1leHRyYS1uYXRpdmUgcHl0aG9uMy1wYnItbmF0aXZlIgorUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtc3FsaXRlMyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1sdW1hLWNvcmVfMS4xMi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1sdW1hLWNvcmVfMS4xMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkYjFhYzgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWx1bWEtY29yZV8xLjEyLjAuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJBIGNvbXBvbmVudCBsaWJyYXJ5IHRvIHN1cHBvcnQgU0JDIGRpc3BsYXkgZHJpdmVycyIKK0RFU0NSSVBUSU9OID0gIkEgY29tcG9uZW50IGxpYnJhcnkgdG8gc3VwcG9ydCBTQkMgZGlzcGxheSBkcml2ZXJzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3JtLWh1bGwvbHVtYS5jb3JlIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnJzdDttZDU9ZWRhODA0MDYwYmEyMzEyZTQxZmU5NmI2ZmEzMzRmZDciCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiNDM3OGVkYjk5Y2QxMjU0MGI0ZTRhNTg4OTY5NTY3ZWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODY0YTQyN2RlNzhiY2MxNjc1OGY0ZjQ0MDJhOWU2MWYzMWNjODg1N2JmYWU5YWJhODA0MTE1OWFhZWMzYTQ5MSIKKworQ0xFQU5CUk9LRU4gPSAiMSIKKworUFlQSV9QQUNLQUdFID0gImx1bWEuY29yZSIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisJJHtQWVRIT05fUE59LXBpbGxvdyBcCisJJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisJJHtQWVRIT05fUE59LXNtYnVzMiBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWx1bWEtb2xlZF8zLjQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbHVtYS1vbGVkXzMuNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlM2IwMGUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWx1bWEtb2xlZF8zLjQuMC5iYgpAQCAtMCwwICsxLDIwIEBACitTVU1NQVJZID0gIkEgc21hbGwgbGlicmFyeSB0byBkcml2ZSBhbiBPTEVEIGRldmljZSIKK0RFU0NSSVBUSU9OID0gIlwKK0Egc21hbGwgbGlicmFyeSB0byBkcml2ZSBhbiBPTEVEIGRldmljZSB3aXRoIGVpdGhlciBTU0QxMzA2ICwgU1NEMTMwOSwgU1NEMTMyMiwgXAorU1NEMTMyNSwgU1NEMTMyNywgU1NEMTMzMSwgU1NEMTM1MSBvciBTSDExMDYgY2hpcHNldCIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ybS1odWxsL2x1bWEub2xlZCIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5yc3Q7bWQ1PWMzMjhjODYyYzMzMzVhZDQ2NGUxYzlhM2JhNTc0MjQ5IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gIjI5NDQxNTViMjI0MmI5ZDJkZGViNmUxMzljNjA4M2I4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJlYTJiNTM1ZTdlMmYwNTZhNTFhOGM1NGFkNzhhYTFmMDBkNTY5OWZjNDM5YzAxYmM3YzI5MDI4MjM4ODk1NTIiCisKK0NMRUFOQlJPS0VOID0gIjEiCisKK1BZUElfUEFDS0FHRSA9ICJsdW1hLm9sZWQiCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorCSR7UFlUSE9OX1BOfS1sdW1hLWNvcmUgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1seG1sXzQuNC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1seG1sXzQuNS4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWx4bWxfNC40LjIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbHhtbF80LjUuMC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYXJrdXBzYWZlL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFya3Vwc2FmZS9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNlYzcxMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFya3Vwc2FmZS9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1hdHBsb3RsaWJfMy4xLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1hdHBsb3RsaWJfMy4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDliODZjY2MuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYXRwbG90bGliXzMuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJtYXRwbG90bGliOiBwbG90dGluZyB3aXRoIFB5dGhvbiIKLURFU0NSSVBUSU9OID0gIlwKLU1hdHBsb3RsaWIgaXMgYSBQeXRob24gMkQgcGxvdHRpbmcgbGlicmFyeSB3aGljaCBwcm9kdWNlcyBcCi1wdWJsaWNhdGlvbi1xdWFsaXR5IGZpZ3VyZXMgaW4gYSB2YXJpZXR5IG9mIGhhcmRjb3B5IGZvcm1hdHMgXAotYW5kIGludGVyYWN0aXZlIGVudmlyb25tZW50cyBhY3Jvc3MgcGxhdGZvcm1zLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9tYXRwbG90bGliL21hdHBsb3RsaWIiCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UvTElDRU5TRTttZDU9YWZlYzYxNDk4YWE1ZjBjNDU5MzY2ODdkYTlhNTNkNzQiCi0KLURFUEVORFMgPSAicHl0aG9uMy1udW1weS1uYXRpdmUgcHl0aG9uMy1udW1weSBmcmVldHlwZSBsaWJwbmcgcHl0aG9uMy1kYXRldXRpbCBweXRob24zLXB5dHoiCi1SREVQRU5EU18ke1BOfSA9ICJweXRob24zLW51bXB5IGZyZWV0eXBlIGxpYnBuZyBweXRob24zLWRhdGV1dGlsIHB5dGhvbjMtcHl0eiIKLQotU1JDX1VSSVttZDVzdW1dID0gImY4OTRhZjU1NjRhNTg4ZTg4MDY0NDEyMzIzNzI1MWI3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFmZWJkMjJhZmUxNDg5YjEzYzY3NDllYTA1OWQzOTJjMDMyNjFiMjk1MGQxZDQ1YzE3ZTNhZWQ4MTIwODBjOTMiCi0KLVBZUElfUEFDS0FHRSA9ICJtYXRwbG90bGliIgotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1hdHBsb3RsaWJfMy4yLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1hdHBsb3RsaWJfMy4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjZkOGM1MwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWF0cGxvdGxpYl8zLjIuMS5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIm1hdHBsb3RsaWI6IHBsb3R0aW5nIHdpdGggUHl0aG9uIgorREVTQ1JJUFRJT04gPSAiXAorTWF0cGxvdGxpYiBpcyBhIFB5dGhvbiAyRCBwbG90dGluZyBsaWJyYXJ5IHdoaWNoIHByb2R1Y2VzIFwKK3B1YmxpY2F0aW9uLXF1YWxpdHkgZmlndXJlcyBpbiBhIHZhcmlldHkgb2YgaGFyZGNvcHkgZm9ybWF0cyBcCithbmQgaW50ZXJhY3RpdmUgZW52aXJvbm1lbnRzIGFjcm9zcyBwbGF0Zm9ybXMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL21hdHBsb3RsaWIvbWF0cGxvdGxpYiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJQU0YiCitMSUNfRklMRVNfQ0hLU1VNID0gIlwKKyAgICBmaWxlOi8vc2V0dXAucHk7YmVnaW5saW5lPTI1MDtlbmRsaW5lPTI1MDttZDU9MmExMTQ2MjBlNGU2ODQzYWE3NTY4ZDU5MDI1MDE3NTMgXAorICAgIGZpbGU6Ly9MSUNFTlNFL0xJQ0VOU0U7bWQ1PWFmZWM2MTQ5OGFhNWYwYzQ1OTM2Njg3ZGE5YTUzZDc0IFwKKyIKK0RFUEVORFMgPSAiXAorICAgIGZyZWV0eXBlIFwKKyAgICBsaWJwbmcgXAorICAgIHB5dGhvbjMtbnVtcHktbmF0aXZlIFwKKyAgICBweXRob24zLWRhdGV1dGlsLW5hdGl2ZSBcCisgICAgcHl0aG9uMy1weXR6LW5hdGl2ZSBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2YzAxOGE2NDRhODgxMjA4ODZjYzcyMTFmN2M4MjZmMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmZmUyZjljZGNlYTEwODZmYzQxNGU4MmY0MjI3MWVjZjE5NzY3MDBiOGVkZDE2Y2E5ZDM3NjE4OWM2ZDkzYWVlIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMgcGtnY29uZmlnCisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgICBmcmVldHlwZSBcCisgICAgbGlicG5nIFwKKyAgICBweXRob24zLW51bXB5IFwKKyAgICBweXRob24zLXB5cGFyc2luZyBcCisgICAgcHl0aG9uMy1jeWNsZXIgXAorICAgIHB5dGhvbjMtZGF0ZXV0aWwgXAorICAgIHB5dGhvbjMta2l3aXNvbHZlciBcCisgICAgcHl0aG9uMy1weXR6IFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1vcmUtaXRlcnRvb2xzL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbW9yZS1pdGVydG9vbHMvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzODVkNjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1vcmUtaXRlcnRvb2xzL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QgLW8gbG9nX2NsaT10cnVlIC1vIGxvZ19jbGlfbGV2ZWw9SU5GTyB8IHNlZCAtZSAncy9cWy4uLiVcXS8vZyd8IHNlZCAtZSAncy9QQVNTRUQvUEFTUy9nJ3wgc2VkIC1lICdzL0ZBSUxFRC9GQUlML2cnfHNlZCAtZSAncy9TS0lQRUQvU0tJUC9nJ3wgYXdrICd7aWYgKCRORj09IlBBU1MiIHx8ICRORj09IkZBSUwiIHx8ICRORj09IlNLSVAiIHx8ICRORj09IlhGQUlMIiB8fCAkTkY9PSJYUEFTUyIpe3ByaW50ZiAiJXM6ICVzXG4iLCAkTkYsICQwfWVsc2V7cHJpbnR9fSd8IGF3ayAne2lmICgkTkY9PSJQQVNTIiB8fCAkTkY9PSJGQUlMIiB8fCAkTkY9PSJTS0lQIiB8fCAkTkY9PSJYRkFJTCIgfHwgJE5GPT0iWFBBU1MiKSB7JE5GPSIiO3ByaW50ICQwfWVsc2V7cHJpbnR9fScKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbW9yZS1pdGVydG9vbHNfOC4xLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1vcmUtaXRlcnRvb2xzXzguMS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YTA5YzEwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbW9yZS1pdGVydG9vbHNfOC4xLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tbW9yZS1pdGVydG9vbHMuaW5jCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhNTUyYjA2Y2VjMWJkZjAxZDYwZjk1MmRiY2M5YTAyMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNDY4YWRlYzU3ODM4MGI2MjgxYTExNGNiOGE1ZGIzNGViMTExNjI3N2RhOTJkN2M0NmY5MDRmMGI1MmQzMjg4IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tb3JlLWl0ZXJ0b29sc184LjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbW9yZS1pdGVydG9vbHNfOC4yLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzNiMzRkMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbW9yZS1pdGVydG9vbHNfOC4yLjAuYmIKQEAgLTAsMCArMSw1IEBACitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLW1vcmUtaXRlcnRvb2xzLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiNTVlN2UwYTVlYWJjNWE1N2JjODM1M2M2NWM2Zjk5NjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjFkZGI5MzIxODZkOGE2YWM0NTFlMWQ5NTg0NGIzODJmNTVlMTI2ODZkNTFjYTBjNjhiNmY2MWYyYWI3YTUwNyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXBtYXRoXzEuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tcG1hdGhfMS4xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzg3OWE4NQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXBtYXRoXzEuMS4wLmJiCkBAIC0wLDAgKzEsMTYgQEAKKyMgVGhpcyByZWNpcGUgaXMgYWRhcHRlZCBmcm9tIG9uZSBpbiBtZXRhLWp1cHl0ZXI6CisjIGh0dHBzOi8vZ2l0aHViLmNvbS9YaWxpbngvbWV0YS1qdXB5dGVyL2Jsb2IvbWFzdGVyL3JlY2lwZXMtcHl0aG9uL3B5dGhvbjMtbXBtYXRoXzAuMTkuYmIKKworU1VNTUFSWSA9ICJQeXRob24gbGlicmFyeSBmb3IgYXJiaXRyYXJ5LXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBhcml0aG1ldGljIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L21wbWF0aC8iCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWVmZTlmZWIwMGRmMGI3NjM5NDFmMmIxYmJhYzdjNDAyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYWNiMWNkZGRmMzhlMTYwODQ2MjgwNjViMTc0ZGRiZmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmMxN2FiZTA1ZmJhYjMzODJiNjFhMTIzYzM5ODUwODE4MzQwNmZhMTMyZTAyMjM4NzQ1NzhlMjA5NDY0OTlmNiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLWltYWdlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1zZ3BhY2svcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tc2dwYWNrL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2VjNzExCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tc2dwYWNrL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXNncGFja18wLjYuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXNncGFja18wLjYuMi5iYgppbmRleCAwOTZkN2RkLi42ZDdlN2EwIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1zZ3BhY2tfMC42LjIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tc2dwYWNrXzAuNi4yLmJiCkBAIC0xLDIgKzEsMjggQEAKLXJlcXVpcmUgcHl0aG9uLW1zZ3BhY2suaW5jCi1pbmhlcml0IHNldHVwdG9vbHMzCitTVU1NQVJZID0gIk1lc3NhZ2VQYWNrIChkZSlzZXJpYWxpemVyIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2Q5NTIzMTgxZDlkNGZiZjdmZmNhNTJlYWEyYTU3NTEiCisKK1BZUElfUEFDS0FHRSA9ICJtc2dwYWNrIgoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzIHB0ZXN0CisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiYTQ2ZmRlZTk5NTU2NWY0MGUzMzJiZDdlZWE4ODJmMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlYTNjMmY4NTkzNDZmY2Q1NWZjNDZlOTY4ODUzMDFkOWMyZjdhMzZkNDUzZjVkOGYyOTY3ODQwZWZhMWUxODMwIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKKyAgICAke1BZVEhPTl9QTn0taW8gXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUkkgKz0gIiBcCisJZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorCSR7UFlUSE9OX1BOfS1weXRlc3QgXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCWNwIC1yZiAke1N9L3Rlc3QvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tdWx0aWRpY3QvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tdWx0aWRpY3QvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZWM3MTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW11bHRpZGljdC9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW11bHRpZGljdF80LjcuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXVsdGlkaWN0XzQuNy40LmJiCmluZGV4IGYxNmE3YmUuLjA2MzY5NzIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXVsdGlkaWN0XzQuNy40LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbXVsdGlkaWN0XzQuNy40LmJiCkBAIC0zLDcgKzMsMjAgQEAKIExJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU3NGM5OGFiZTBkZThmNzk4Y2E2MDkxMzdmOWNlZjRhIgogCi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMyBwdGVzdAogCiBTUkNfVVJJW21kNXN1bV0gPSAiMjJiNDZmNzU5Y2YyY2MzY2ExZDJjOWY4MmNjOWJiNzkiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDdkNDI4NDg4YzY3YjA5YjI2OTI4OTUwYTM5NWU0MWNjNzJiYjljM2Q1YWJmZTlmMDUyMTk0MGVlNGY3OTZkNCIKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworCWNwIC1yZiAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5ldHdvcmt4XzIuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmV0d29ya3hfMi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmViNmRhLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbmV0d29ya3hfMi4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1uZXR3b3JreC5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWI2ODI5MGVlMTAyNmIyMDQxNzBhMjNiYmRiMjdhNGZkIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzIwZDNmNmM3ODcyNzMyYmFhNjNjZWRhZmRkYWRlYTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODMxMWRkZWY2M2NmNWM1YzVlN2MxZDAyMTJkZDE0MWQ5YTFmZTNmNDc0OTE1MjgxYjczNTk3ZWQ1ZjFkNGUzZCIKLQotaW5oZXJpdCBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uZXR3b3JreF8yLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5ldHdvcmt4XzIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZmE4MmUyCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1uZXR3b3JreF8yLjQuYmIKQEAgLTAsMCArMSw4IEBACityZXF1aXJlIHB5dGhvbi1uZXR3b3JreC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWI2ODI5MGVlMTAyNmIyMDQxNzBhMjNiYmRiMjdhNGZkIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjNlM2ZkYzlkM2E0NmJjYWJjNzc2YWNjNWVhNWZlNDgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjhmNGZmMGI2Zjk2ZTRmOWIxNmFmNmI4NDYyMjU5N2I1MzM0YmY5Y2FlOGNmOWIyZTQyZTc5ODVkNWM5NWM2NCIKKworaW5oZXJpdCBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ubWFwXzEuNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1ubWFwXzEuNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwMzg0ODQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW5tYXBfMS40LjEuYmIKQEAgLTAsMCArMSwxNiBAQAorREVTQ1JJUFRJT04gPSAicHl0aG9uLW5tYXAgaXMgYSBweXRob24gbGlicmFyeSB3aGljaCBoZWxwcyBpbiB1c2luZyBubWFwIHBvcnQgc2Nhbm5lciIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lm5tbWFwcGVyLmNvbS8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCisKK0RFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS13aGVlbC1uYXRpdmUiCisKK1BZUElfUEFDS0FHRSA9ICJweXRob24zLW5tYXAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2NGEzODJjODcwZTE0YjUzZjJmNTJiNzQ1NTk5NjMyMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YjY0YzU5NTY3ODlmNGNhYzllOGVhMmUwZGU2NzYzZGVhMWNlY2RlMWEyMGFlNTBhNGI0ZGM1YWIwYWI2ZTQyIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIm5tYXAgJHtQWVRIT05fUE59LXJlcXVlc3RzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1vYmRfMC43LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW9iZF8wLjcuMS5iYgppbmRleCA1NzhlMzhkLi5lYjhhNWE3IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW9iZF8wLjcuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW9iZF8wLjcuMS5iYgpAQCAtMSwyICsxLDEwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1vYmQuaW5jCitERVNDUklQVElPTiA9ICJBIHB5dGhvbiBtb2R1bGUgZm9yIGhhbmRsaW5nIHJlYWx0aW1lIHNlbnNvciBkYXRhIGZyb20gT0JELUlJIHZlaGljbGUgcG9ydHMiSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2JyZW5kYW4tdy9weXRob24tT0JEIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1JFQURNRS5tZDttZDU9NThiYTg5NmZhMDg2Yzk2YWQyMzMxN2NlYmZlYWIyNzciCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMDVlZmNiNmM2NTBkYjdiOTU4MzUzMjM1NWViZWI3YyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4YjgxZWE1ODk2MTU3YjZlODYxYWYxMmUxNzNjMTBiMDAxY2I2Y2NhNmViYjA0ZGIyYzAxZDMyNjgxMmFkNzdiIgorCitpbmhlcml0IHNldHVwdG9vbHMzIHB5cGkKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1weXNlcmlhbCAke1BZVEhPTl9QTn0tcGludCAke1BZVEhPTl9QTn0tc2V0dXB0b29scyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtb3BlbnB5eGxfMi42LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW9wZW5weXhsXzIuNi4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3Y2I0NmUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW9wZW5weXhsXzIuNi4zLmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAib3BlbnB5eGwgaXMgYSBQeXRob24gbGlicmFyeSB0byByZWFkL3dyaXRlIEV4Y2VsIDIwMTAgeGxzeC94bHNtL3hsdHgveGx0bSBmaWxlcyIKK0RFU0NSSVBUSU9OID0gIkl0IHdhcyBib3JuIGZyb20gbGFjayBvZiBleGlzdGluZyBsaWJyYXJ5IHRvIHJlYWQvd3JpdGUgbmF0aXZlbHkgXAorZnJvbSBQeXRob24gdGhlIE9mZmljZSBPcGVuIFhNTCBmb3JtYXQuIEFsbCBrdWRvcyB0byB0aGUgUEhQRXhjZWwgdGVhbSBhcyBvcGVucHl4bCBcCit3YXMgaW5pdGlhbGx5IGJhc2VkIG9uIFBIUEV4Y2VsLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5weXRob24tZXhjZWwub3JnLyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTNiYWYyNmQ4YWJmMDg2MzJiZWFmOTEzZWE5NzNjYjhhIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gImIwNjc3NTBlNTFmMTdhMWE5Y2M2YmFjZmRkNjY4MjE4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcyZDFlZDI0Mzk3MmNhZDBiM2MyMzYyMzAwODNjYWMwMGQ5YzcyODA0ZTY0YTJhZTkzZDc5MDFhZWMxYThmMWMiCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tY29tcHJlc3Npb24gJHtQWVRIT05fUE59LWlvICR7UFlUSE9OX1BOfS1wcHJpbnQgJHtQWVRIT05fUE59LXNoZWxsICR7UFlUSE9OX1BOfS1qZGNhbCAke1BZVEhPTl9QTn0tZXQteG1sZmlsZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtb3JkZXJlZC1zZXQvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1vcmRlcmVkLXNldC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjdiOWQwOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtb3JkZXJlZC1zZXQvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGVzdCB0ZXN0LnB5CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW9yZGVyZWQtc2V0XzMuMS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1vcmRlcmVkLXNldF8zLjEuMS5iYgppbmRleCAwMTNhMmU3Li5iZjM2MmRhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW9yZGVyZWQtc2V0XzMuMS4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtb3JkZXJlZC1zZXRfMy4xLjEuYmIKQEAgLTYsNiArNiwxOCBAQAogU1JDX1VSSVttZDVzdW1dID0gIjZlMTIzMTJjOGRjNGM5MGZlODQwZTg2ZThhMzUyNjQ0IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImE3YmZhODU4NzQ4YzczYjA5NmU0M2RiMTRlYjIzZTJiYzcxNGE1MDNmOTkwYzg5ZmFjOGZhYjliMGVlNzk3MjQiCiAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzIHB0ZXN0CiAKIERFUEVORFMgKz0gInB5dGhvbjMtcHl0ZXN0LXJ1bm5lci1uYXRpdmUiCisKK1NSQ19VUkkgKz0gIiBcCisJZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorCSR7UFlUSE9OX1BOfS1weXRlc3QgXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwIC1mICR7U30vdGVzdC5weSAke0R9JHtQVEVTVF9QQVRIfS8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFja2FnaW5nXzIwLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhY2thZ2luZ18yMC4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhY2thZ2luZ18yMC4wLmJiCnJlbmFtZSB0byBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhY2thZ2luZ18yMC4zLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhaG8tbXF0dF8xLjUuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFoby1tcXR0XzEuNS4wLmJiCmluZGV4IDQ5ODFlNjEuLmNjNmY0ZGMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFoby1tcXR0XzEuNS4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFoby1tcXR0XzEuNS4wLmJiCkBAIC0xLDMgKzEsMjIgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXBhaG8tbXF0dC5pbmMKK1NVTU1BUlkgPSAiTVFUVCB2ZXJzaW9uIDMuMS8zLjEuMSBjbGllbnQgbGlicmFyeSIKK0xJQ0VOU0UgPSAiRVBMLTEuMCB8IEVETC0xLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZWI0OGM2ZWUyY2I5ZjViOGI5ZmU3NWU2ZjgxN2JkZmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXBsLXYxMDttZDU9OGQzODNjMzc5ZTkxZDIwYmExOGE1MmMzZTdkM2E5NzkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZWRsLXYxMDttZDU9YzA5ZjEyMTkzOWYwNjNhZWI1MjM1OTcyYmU4YzcyMmMgXAorIgorU1JDTkFNRSA9ICJwYWhvLW1xdHQiCiAKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiNDVlODBkOWI4MDY2YThkMGJhMWVjZmZmZTI3MWJkM2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTNkMjg2MTk4YmFhZWExOTVjOGIzYmMyMjE5NDFkMjVhM2FiMGUxNTA3ZmMxNzc5YmRiNzQ3MzgwNjM5NGJlNCIKKworREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXB5dGVzdC1ydW5uZXItbmF0aXZlIgorCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgJHtQWVRIT05fUE59LWlvIFwKKyAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgJHtQWVRIT05fUE59LW1hdGggXAorICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYW5kYXNfMC4yMy40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYW5kYXNfMS4wLjEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFuZGFzXzAuMjMuNC5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYW5kYXNfMS4wLjEuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFyYWxsYXhfMS4wLjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhcmFsbGF4XzEuMC41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NThiZDYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhcmFsbGF4XzEuMC41LmJiCkBAIC0wLDAgKzEsMTEgQEAKK1NVTU1BUlkgPSAiRXhlY3V0ZSBjb21tYW5kcyBhbmQgY29weSBmaWxlcyBvdmVyIFNTSCB0byBtdWx0aXBsZSBtYWNoaW5lcyBhdCBvbmNlLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9rcmlnL3BhcmFsbGF4LyIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTJjNjdmZmE2MTAyZjI4OGEwMzQ3ZjhjNTgwMmZkMTgiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJmOGQwNGU5ZTI0NjI5MTUzNmI3MDVkZjdmNjBhNTVjOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlOWU0ZGM1MDBmMTMwNmE2MzhkZjBmMTlkNGVmOTc2YTYyM2IyNjBmYzYxNGM1NWNiMWZkMGQ4NDEwYjNjNGJhIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYXJzZS10eXBlL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFyc2UtdHlwZS9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNlYzcxMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFyc2UtdHlwZS9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhcnNlL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFyc2UvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwYzI4NDcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhcnNlL3J1bi1wdGVzdApAQCAtMCwwICsxLDIgQEAKKyMhL2Jpbi9zaAorcHl0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhcnNlXzEuMTQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGFyc2VfMS4xNS4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBhcnNlXzEuMTQuMC5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYXJzZV8xLjE1LjAuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGV4cGVjdC8wMDAxLUZTTS5weS1jaGFuZ2Utc2hlYmFuZy1mcm9tLXB5dGhvbi10by1weXRob24zLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wZXhwZWN0LzAwMDEtRlNNLnB5LWNoYW5nZS1zaGViYW5nLWZyb20tcHl0aG9uLXRvLXB5dGhvbjMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmVlNzcyZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGV4cGVjdC8wMDAxLUZTTS5weS1jaGFuZ2Utc2hlYmFuZy1mcm9tLXB5dGhvbi10by1weXRob24zLnBhdGNoCkBAIC0wLDAgKzEsMjUgQEAKK0Zyb20gMzU0NjJkN2I3NzhlZWEzMmZkMGNjMGJiYzc5ZDZlNmY1M2Q5NDJiNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDIzIEFwciAyMDIwIDA4OjAxOjQyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEZTTS5weTogY2hhbmdlIHNoZWJhbmcgZnJvbSBweXRob24gdG8gcHl0aG9uMworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIHBleHBlY3QvRlNNLnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcGV4cGVjdC9GU00ucHkgYi9wZXhwZWN0L0ZTTS5weQoraW5kZXggNDZiMzkyZS4uNGU3NzY1NCAxMDA2NDQKKy0tLSBhL3BleHBlY3QvRlNNLnB5CisrKysgYi9wZXhwZWN0L0ZTTS5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIAorICcnJ1RoaXMgbW9kdWxlIGltcGxlbWVudHMgYSBGaW5pdGUgU3RhdGUgTWFjaGluZSAoRlNNKS4gSW4gYWRkaXRpb24gdG8gc3RhdGUKKyB0aGlzIEZTTSBhbHNvIG1haW50YWlucyBhIHVzZXIgZGVmaW5lZCAibWVtb3J5Ii4gU28gdGhpcyBGU00gY2FuIGJlIHVzZWQgYXMgYQorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wZXhwZWN0XzQuNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wZXhwZWN0XzQuOC4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBleHBlY3RfNC43LjAuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGV4cGVjdF80LjguMC5iYgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waW50L3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGludC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNlYzcxMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGludC9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpbnRfMC45LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waW50XzAuMTEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGludF8wLjkuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGludF8wLjExLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBsdWdneS9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBsdWdneS9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBjMjg0NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGx1Z2d5L3J1bi1wdGVzdApAQCAtMCwwICsxLDIgQEAKKyMhL2Jpbi9zaAorcHl0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBvbHlsaW5lL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcG9seWxpbmUvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVjZWM3MTEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBvbHlsaW5lL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcG9seWxpbmVfMS40LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBvbHlsaW5lXzEuNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ4MWVlNTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBvbHlsaW5lXzEuNC4wLmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiQSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgR29vZ2xlJ3MgRW5jb2RlZCBQb2x5bGluZSBBbGdvcml0aG0gRm9ybWF0IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3BvbHlsaW5lLyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MGZiZDEzNTAwY2FiZDA2ZGQ3NTFiYTZiMmJlMzA0YzYiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiOTdjNTczNzg2MDVjNGE4NTZjNDM3NTY5Zjk1YTBjYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3YzdmODlkMDlhMDljN2I2MTYxYmRiZmI0ZmQzMDRiMTg2ZmM3YTIwNjBmYTRmMzFjYjNmNjFjNjQ2YTVjMDc0IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMgcHRlc3QKKworUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtc2l4IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUkkgKz0gIiBcCisJZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorCSR7UFlUSE9OX1BOfS1weXRlc3QgXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCWNwIC1yZiAke1N9L3Rlc3QvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcmVjaXNlLXJ1bm5lci9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByZWNpc2UtcnVubmVyL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2VjNzExCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcmVjaXNlLXJ1bm5lci9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByZWNpc2UtcnVubmVyXzAuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcmVjaXNlLXJ1bm5lcl8wLjMuMS5iYgppbmRleCA5OGI2MmQ4Li42MTU1Yjc5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByZWNpc2UtcnVubmVyXzAuMy4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJlY2lzZS1ydW5uZXJfMC4zLjEuYmIKQEAgLTYsNCArNiwxNyBAQAogU1JDX1VSSVttZDVzdW1dID0gImEyNDM0YmUxMTA0NDQxOTJlODA0ZjRkYWRhMGNjZWNmIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFhNDY0MjA5ZmI0YmYwYTNmNWQ1YTQyODMxMGNiMmE3MDQ4N2EwMWE2YmMzYTk2MGQxZGRhOTBhZjg5NmI4MGQiCiAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzIHB0ZXN0CisKK1NSQ19VUkkgKz0gIiBcCisJZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorCSR7UFlUSE9OX1BOfS1weXRlc3QgXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCWNwIC1yZiAke1N9L3Rlc3QvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0LworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcmV0dHl0YWJsZS9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByZXR0eXRhYmxlL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2VjNzExCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcmV0dHl0YWJsZS9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXByb3RvYnVmXzMuOS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wcm90b2J1Zl8zLjExLjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJvdG9idWZfMy45LjIuYmIKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHJvdG9idWZfMy4xMS4zLmJiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBzdXRpbF81LjYuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHN1dGlsXzUuNy4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBzdXRpbF81LjYuNy5iYgpyZW5hbWUgdG8gbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wc3V0aWxfNS43LjAuYmIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHR5cHJvY2Vzcy9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB0eXByb2Nlc3MvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3YzllNTkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB0eXByb2Nlc3MvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoIAorCitweXRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHVsc2VjdGxfMjAuMS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wdWxzZWN0bF8yMC4xLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhYzNhYWYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wdWxzZWN0bF8yMC4xLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiAoMy54IGFuZCAyLngpIGhpZ2gtbGV2ZWwgaW50ZXJmYWNlIGFuZCBjdHlwZXMtYmFzZWQgYmluZGluZ3MgZm9yIFB1bHNlQXVkaW8gKGxpYnB1bHNlKSwgbW9zdGx5IGZvY3VzZWQgb24gbWl4ZXItbGlrZSBjb250cm9scyBhbmQgaW50cm9zcGVjdGlvbi1yZWxhdGVkIG9wZXJhdGlvbnMgKGFzIG9wcG9zZWQgdG8gZS5nLiBzdWJtaXR0aW5nIHNvdW5kIHNhbXBsZXMgdG8gcGxheSwgcGxheWVyLWxpa2UgY2xpZW50KS4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbWstZmcvcHl0aG9uLXB1bHNlLWNvbnRyb2wiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYxZDEwMDQ4NDY5ZmY5MDEyMzI2M2ViNWUyMTQwNjFkIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTBkMDIyMDRkNjVmNjg0YWYyZmQ3N2E3N2Q1MGVjMDEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGE5N2E0ZjdmY2Q4ZGJlNTYzODA5ODBlOGM5NTE5ZmY0ZTI2NTUyNjA0Nzc2Y2JjNzU1NWU2YTE0ZmYwMjAyZiIKLQotUkRFUEVORFNfJHtQTn0gKz0gInB1bHNlYXVkaW8iCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wdWxzZWN0bF8yMC4yLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB1bHNlY3RsXzIwLjIuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMGRiOTY4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wdWxzZWN0bF8yMC4yLjQuYmIKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJQeXRob24gKDMueCBhbmQgMi54KSBoaWdoLWxldmVsIGludGVyZmFjZSBhbmQgY3R5cGVzLWJhc2VkIGJpbmRpbmdzIGZvciBQdWxzZUF1ZGlvIChsaWJwdWxzZSksIG1vc3RseSBmb2N1c2VkIG9uIG1peGVyLWxpa2UgY29udHJvbHMgYW5kIGludHJvc3BlY3Rpb24tcmVsYXRlZCBvcGVyYXRpb25zIChhcyBvcHBvc2VkIHRvIGUuZy4gc3VibWl0dGluZyBzb3VuZCBzYW1wbGVzIHRvIHBsYXksIHBsYXllci1saWtlIGNsaWVudCkuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL21rLWZnL3B5dGhvbi1wdWxzZS1jb250cm9sIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMWQxMDA0ODQ2OWZmOTAxMjMyNjNlYjVlMjE0MDYxZCIKKworU1JDX1VSSVttZDVzdW1dID0gIjA3ZDdhNWZkZGM0OWY1ZGEyMjYzNDQ2NGFhMDA4MDAzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZjYTllZDUwMWJlZjJlZmQ1NTFiMzU3NzNmZDI0YmJhMzZiYmQyMWJjNDQ4ZjQwMmNmOGVlMTNjMTI0MjNjMTkiCisKK1JERVBFTkRTXyR7UE59ICs9ICJwdWxzZWF1ZGlvIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlfMS44LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5XzEuOC4xLmJiCmluZGV4IDBlZTM3M2QuLjczYWFmOWUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlfMS44LjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weV8xLjguMS5iYgpAQCAtMSwyICsxLDEzIEBACitTVU1NQVJZID0gIkxpYnJhcnkgd2l0aCBjcm9zcy1weXRob24gcGF0aCwgaW5pLXBhcnNpbmcsIGlvLCBjb2RlLCBsb2cgZmFjaWxpdGllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9weS5yZWFkdGhlZG9jcy5pby8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE2YmIwMzIwYjA0YTBhNTAzZjEyZjY5ZmVhNDc5ZGU5IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDJjNjdkZTg0YjA3YWM5Y2M4NjdiOGI3MDg0M2E0NWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWUyNzA4MTQwMTI2MjE1NzQ2N2FkNmU3Zjg1MWI3YWE0MDJjNTg1MmRiY2IzZGFlMDY3Njg0MzRkZTU3NTJhYSIKKworREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXNldHVwdG9vbHMtc2NtLW5hdGl2ZSIKKwogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1weS5pbmMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWFzbjEtbW9kdWxlcy9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YXNuMS1tb2R1bGVzL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2VjNzExCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWFzbjEtbW9kdWxlcy9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YXNuMS9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YXNuMS9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNlYzcxMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlhc24xL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlhdHNwaV8yLjMyLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5YXRzcGlfMi4zMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZjUyYWM3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlhdHNwaV8yLjMyLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgREJ1cyBBVC1TUEkyIGFjY2Vzc2liaWxpdHkiCi1ERVNDUklQVElPTiA9ICJBVC1TUEkyIGlzIGEgcHJvdG9jb2wgb3ZlciBEQnVzLCB0b29sa2l0IHdpZGdldHMgdXNlIHRvIHByb3ZpZGUgY29udGVudCB0byBzY3JlZW4gcmVhZGVycyBzdWNoIGFzIE9yY2EiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL0FjY2Vzc2liaWxpdHkvQVQtU1BJMi8iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEw7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotREVQRU5EUyA9ICJweXRob24zLWRidXMtbmF0aXZlIGdsaWItMi4wIGRidXMtZ2xpYiBsaWJ4bWwyIGF0ayBndGsrIHB5dGhvbjMtcHlnb2JqZWN0IgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vR05PTUUvcHlhdHNwaTIuZ2l0O3Byb3RvY29sPWh0dHBzO2JyYW5jaD1nbm9tZS0zLTMyIgotU1JDUkVWID0gImRjNDU2NTIwOGZjYTAwZGEwNmI5NzI5MTVhMDgwYWQzYzYzZjY0MGQiCi1TID0gIiR7V09SS0RJUn0vZ2l0IiAKLQotIyBTYW1lIHJlc3RyaWN0aW9uIGFzIGd0aysKLWluaGVyaXQgZmVhdHVyZXNfY2hlY2sKLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAiJHtHVEsyRElTVFJPRkVBVFVSRVN9IgotCi1pbmhlcml0IHBrZ2NvbmZpZyBhdXRvdG9vbHMgcHl0aG9uM25hdGl2ZQotCi1GSUxFU18ke1BOfSArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vcHlhdHNwaS8qIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWF0c3BpXzIuMzQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlhdHNwaV8yLjM0LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JkYjg2YgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlhdHNwaV8yLjM0LjAuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIERCdXMgQVQtU1BJMiBhY2Nlc3NpYmlsaXR5IgorREVTQ1JJUFRJT04gPSAiQVQtU1BJMiBpcyBhIHByb3RvY29sIG92ZXIgREJ1cywgdG9vbGtpdCB3aWRnZXRzIHVzZSB0byBwcm92aWRlIGNvbnRlbnQgdG8gc2NyZWVuIHJlYWRlcnMgc3VjaCBhcyBPcmNhIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9BY2Nlc3NpYmlsaXR5L0FULVNQSTIvIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWRiMjkyMThlNmJhMzc5NGM1NmRmN2Q0OTg3ZGM3ZTRkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKK0RFUEVORFMgPSAicHl0aG9uMy1kYnVzLW5hdGl2ZSBnbGliLTIuMCBkYnVzLWdsaWIgbGlieG1sMiBhdGsgZ3RrKyBweXRob24zLXB5Z29iamVjdCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0dOT01FL3B5YXRzcGkyLmdpdDtwcm90b2NvbD1odHRwczticmFuY2g9bWFpbmxpbmUiCitTUkNSRVYgPSAiY2M5OWQ2OGRiNjYxNzRmNDQ5OWI5YjMyNWJjNzg4MzkzYjk3MmVkZCIKK1MgPSAiJHtXT1JLRElSfS9naXQiIAorCisjIFNhbWUgcmVzdHJpY3Rpb24gYXMgZ3RrKworaW5oZXJpdCBmZWF0dXJlc19jaGVjaworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzJESVNUUk9GRUFUVVJFU30iCisKK2luaGVyaXQgcGtnY29uZmlnIGF1dG90b29scyBweXRob24zbmF0aXZlCisKK0ZJTEVTXyR7UE59ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9weWF0c3BpLyoiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Ymx1ZXpfMC4yMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlibHVlel8wLjIyLmJiCmluZGV4IDk3MTJhNzYuLjI2OTAyZTEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlibHVlel8wLjIyLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlibHVlel8wLjIyLmJiCkBAIC0xLDIgKzEsMjAgQEAKLXJlcXVpcmUgcHl0aG9uLXB5Ymx1ZXouaW5jCi1pbmhlcml0IHNldHVwdG9vbHMzCitERVNDUklQVElPTiA9ICJCbHVldG9vdGggUHl0aG9uIGV4dGVuc2lvbiBtb2R1bGUiCitIT01FUEFHRSA9ICJodHRwOi8va2FydWxpcy5naXRodWIuaW8vcHlibHVlei8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKKworREVQRU5EUyA9ICJibHVlejUiCisKK0xJQ0VOU0UgPSAiR1BMLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PThhNzFkMDQ3NWQwOGVlZTc2ZDhiNmQwYzZkYmVjNTQzIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDlkYWI5ZDVhOGYwYjc5OGM4MTI1YzdmNjQ5YmUzY2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGNlMDA2NzE2YTU0ZDlkMThlODE4NmEzZjFjOGIxMmE4ZTZiZWZlY2ZmZThmZDU4MjhhMjkxZmI2OTRjZTQ5ZCIKKworUFlQSV9QQUNLQUdFID0gIlB5Qmx1ZXoiCitQWVBJX1BBQ0tBR0VfRVhUID0gInppcCIKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgIGJsdWV6NSBcCisgICAgJHtQWVRIT05fUE59LWZjbnRsIFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljaHJvbWVjYXN0XzQuMC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNocm9tZWNhc3RfNC4wLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiOTMwMWYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNocm9tZWNhc3RfNC4wLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIFB5dGhvbiAzLjYrIHRvIGNvbW11bmljYXRlIHdpdGggdGhlIEdvb2dsZSBDaHJvbWVjYXN0LiIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iYWxsb29iL3B5Y2hyb21lY2FzdCIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YjFkYmQ0ZTg1ZjQ3YjM4OWJkYWRlZTljNjk0NjY5ZjUiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJkNmY5NmQ0NzhmZDc2ODY5NmEwZTQ0MGNiMGVhOTAzYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkOThkZjI4ZjM0MGJiMTRhMDcyMzY4NDY1MThkYWFkNzEwN2I2NjU4MTUxMmMzM2RhOTIxNjYzZGY2MWFjODE5IgotCi1QWVBJX1BBQ0tBR0UgPSAiUHlDaHJvbWVjYXN0IgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljaHJvbWVjYXN0XzQuMi4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNocm9tZWNhc3RfNC4yLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU2MTc1MwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljaHJvbWVjYXN0XzQuMi4zLmJiCkBAIC0wLDAgKzEsMTEgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgUHl0aG9uIDMuNisgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgR29vZ2xlIENocm9tZWNhc3QuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2JhbGxvb2IvcHljaHJvbWVjYXN0IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMWRiZDRlODVmNDdiMzg5YmRhZGVlOWM2OTQ2NjlmNSIKKworU1JDX1VSSVttZDVzdW1dID0gIjU2NjMyZTBkOTRmMjY0OGEyOWQ4OWFmZmRkZGRhYWVjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ3YjdiMzUyNTQyMDNhYjQ2MTczODkwNjFiZWUyNWIwZmE2N2M2NjI4YzQ4YmQ2YTc1Y2NmZWZlZjc0ZjFlZGIiCisKK1BZUElfUEFDS0FHRSA9ICJQeUNocm9tZWNhc3QiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNvZGVzdHlsZV8yLjUuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljb2Rlc3R5bGVfMi41LjAuYmIKaW5kZXggY2VkY2RiMy4uN2YwMGFiNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNvZGVzdHlsZV8yLjUuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y29kZXN0eWxlXzIuNS4wLmJiCkBAIC0xLDIgKzEsMTIgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5Y29kZXN0eWxlLmluYworU1VNTUFSWSA9ICJQeXRob24gc3R5bGUgZ3VpZGUgY2hlY2tlciAoZm9ybWx5IGNhbGxlZCBwZXA4KSIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5vcmcvcHJvamVjdC9weWNvZGVzdHlsZSIKK0xJQ0VOU0UgPSAiTUlUIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0wMTgzMWRkYmFmMzk4NDcxZGEzY2M4N2Y1MDM3ZTgyMiIKKworU1JDX1VSSVttZDVzdW1dID0gIjQwZTdhNzZmMzY0YTE4ZjUzMWFhYmExMWE0NDc2ZTIxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU0MGE5MzZjOWE0NTBhZDgxZGYzN2Y1NDlkNjc2ZDEyN2IxYjY2MDAwYTZjNTAwY2FhMmIwODViYzBjYTk3NmMiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3BhcnNlcl8yLjE5LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNwYXJzZXJfMi4xOS5iYgppbmRleCA3Y2MwMjRlLi4zNWVkOTNlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3BhcnNlcl8yLjE5LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljcGFyc2VyXzIuMTkuYmIKQEAgLTEsNiArMSwxOSBAQAorU1VNTUFSWSA9ICJQYXJzZXIgb2YgdGhlIEMgbGFuZ3VhZ2UsIHdyaXR0ZW4gaW4gcHVyZSBQeXRob24iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZWxpYmVuL3B5Y3BhcnNlciIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ODZmMWNlZGI0ZTY0MTBhODhjZThlMzBiOTEwNzkxNjkiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3NjM5Njc2MmFkYzNmYTc2OWM4M2Q4ZTIwMmQzNmI2ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhOTg4NzE4YWJmYWQ4MGI2YjE1N2FjY2U3YmYxMzBhMzA4NzZkMjc2MDM3MzhhYzM5ZjE0MDk5MzI0NmIyNWIzIgorCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5Y3BhcnNlci5pbmMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCiBSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKICAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKLSAgICAiIAorICAgICR7UFlUSE9OX1BOfS1wbHkgXAorICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAorICAgIGNwcCBcCisgICAgY3BwLXN5bWxpbmtzIFwKKyAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3J5cHRvLzAwMDEtUmVwbGFjZS10aW1lLmNsb2NrLXdpdGgtdGltZS5wcm9jZXNzX3RpbWUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3J5cHRvLzAwMDEtUmVwbGFjZS10aW1lLmNsb2NrLXdpdGgtdGltZS5wcm9jZXNzX3RpbWUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgyZmRkMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljcnlwdG8vMDAwMS1SZXBsYWNlLXRpbWUuY2xvY2std2l0aC10aW1lLnByb2Nlc3NfdGltZS5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDFkOTA3MjdmZjIzNjgwMTJkNmUyZjkxYjFhMzE5OGY2MjY0OTViN2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaW5nIExpdSA8bGl1Lm1pbmc1MEBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDI1IEphbiAyMDIwIDE0OjM2OjE2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlcGxhY2UgdGltZS5jbG9jaygpIHdpdGggdGltZS5wcm9jZXNzX3RpbWUoKQorCitUaGUgdXNlIG9mIHRpbWUuY2xvY2soKSBpcyBkZXByZWNhdGVkIGluIHB5dGhvbiAzLjgsIGNoYW5nZSB0byB1c2UKK3RpbWUucHJvY2Vzc190aW1lKCkuCisKK1JlZmVyZW5jZToKK2h0dHBzOi8vZG9jcy5weXRob24ub3JnLzMuMy9saWJyYXJ5L3RpbWUuaHRtbCN0aW1lLmNsb2NrCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNaW5nIExpdSA8bGl1Lm1pbmc1MEBnbWFpbC5jb20+CistLS0KKyBsaWIvQ3J5cHRvL1JhbmRvbS9fVXNlckZyaWVuZGx5Uk5HLnB5IHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbGliL0NyeXB0by9SYW5kb20vX1VzZXJGcmllbmRseVJORy5weSBiL2xpYi9DcnlwdG8vUmFuZG9tL19Vc2VyRnJpZW5kbHlSTkcucHkKK2luZGV4IDk1N2UwMDYuLmQyYTAyNTkgMTAwNjQ0CistLS0gYS9saWIvQ3J5cHRvL1JhbmRvbS9fVXNlckZyaWVuZGx5Uk5HLnB5CisrKysgYi9saWIvQ3J5cHRvL1JhbmRvbS9fVXNlckZyaWVuZGx5Uk5HLnB5CitAQCAtNzQsNyArNzQsNyBAQCBjbGFzcyBfRW50cm9weUNvbGxlY3RvcihvYmplY3QpOgorICAgICAgICAgc2VsZi5fdGltZV9lcy5mZWVkKHN0cnVjdC5wYWNrKCJASSIsIGludCgyKiozMCAqICh0IC0gZmxvb3IodCkpKSkpCisgCisgICAgICAgICAjIEFkZCB0aGUgZnJhY3Rpb25hbCBwYXJ0IG9mIHRpbWUuY2xvY2soKQorLSAgICAgICAgdCA9IHRpbWUuY2xvY2soKQorKyAgICAgICAgdCA9IHRpbWUucHJvY2Vzc190aW1lKCkKKyAgICAgICAgIHNlbGYuX2Nsb2NrX2VzLmZlZWQoc3RydWN0LnBhY2soIkBJIiwgaW50KDIqKjMwICogKHQgLSBmbG9vcih0KSkpKSkKKyAKKyAKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNyeXB0b18yLjYuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljcnlwdG9fMi42LjEuYmIKaW5kZXggMDJkNjM0Yy4uYTIwZWFmZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNyeXB0b18yLjYuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3J5cHRvXzIuNi4xLmJiCkBAIC0xLDYgKzEsOCBAQAogaW5oZXJpdCBkaXN0dXRpbHMzCiByZXF1aXJlIHB5dGhvbi1weWNyeXB0by5pbmMKIAorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtUmVwbGFjZS10aW1lLmNsb2NrLXdpdGgtdGltZS5wcm9jZXNzX3RpbWUucGF0Y2giCisKICMgV2UgZXhwbGljaXRseSBjYWxsIGRpc3R1dGlsc19kb19pbnN0YWxsLCBzaW5jZSB3ZSB3YW50IGl0IHRvIHJ1biwgYnV0CiAjICpkb24ndCogd2FudCB0aGUgYXV0b3Rvb2xzIGluc3RhbGwgdG8gcnVuLCBzaW5jZSB0aGlzIHBhY2thZ2UgZG9lc24ndAogIyBwcm92aWRlIGEgIm1ha2UgaW5zdGFsbCIgdGFyZ2V0LgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNyeXB0b2RvbWV4XzMuOS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNyeXB0b2RvbWV4XzMuOS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0MWMxNGIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3J5cHRvZG9tZXhfMy45LjQuYmIKQEAgLTAsMCArMSwxMCBAQAorcmVxdWlyZSBweXRob24tcHljcnlwdG9kb21lLmluYworaW5oZXJpdCBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiNDZiYTUxM2Q5NWI2ZTMyMzczNDA3NGQ5NjBhN2Q1N2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjJkOTcwY2VlNWMwOTZiOTEyMzQxNWUxODNhZTAzNzAyYjJjZDRkM2JhM2YwY2VkMjVjNGUxYWJhMzk2NzE2NyIKKworRklMRVNfJHtQTn0tdGVzdHMgPSAiIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9DcnlwdG9kb21lL1NlbGZUZXN0LyBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vQ3J5cHRvZG9tZS9TZWxmVGVzdC9fX3B5Y2FjaGVfXy8gXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWN1cmxfNy40My4wLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3VybF83LjQzLjAuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFkMzE5YS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3VybF83LjQzLjAuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcHljdXJsLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWN1cmxfNy40My4wLjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y3VybF83LjQzLjAuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTFjMTc5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWN1cmxfNy40My4wLjUuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJBIFB5dGhvbiBJbnRlcmZhY2UgVG8gVGhlIGNVUkwgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIlwKK1B5Y1VSTCBpcyBhIFB5dGhvbiBpbnRlcmZhY2UgdG8gbGliY3VybCwgdGhlIG11bHRpcHJvdG9jb2wgZmlsZSBcCit0cmFuc2ZlciBsaWJyYXJ5LiBTaW1pbGFybHkgdG8gdGhlIHVybGxpYiBQeXRob24gbW9kdWxlLCBQeWNVUkwgY2FuIFwKK2JlIHVzZWQgdG8gZmV0Y2ggb2JqZWN0cyBpZGVudGlmaWVkIGJ5IGEgVVJMIGZyb20gYSBQeXRob24gcHJvZ3JhbSBcCisiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9weWN1cmwuaW8vIgorCitMSUNFTlNFID0gIkxHUEx2MiB8IE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkctTEdQTDttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy1NSVQ7bWQ1PTYwODcyYTExMjU5NTAwNDIzM2I3NjliNmNiZmQ2NWI2IFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMGIzODdkNDYwOWVkMjBjODhiYWVkZTg1NzlhNGQ0MjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWM3ZGQyOTE1NDU4NDIyOTViN2I1NmMxMmM5MGZmYWQyOTc2Y2M3MDcwYzk4ZDdiMTUxN2I3YjZjZDU5OTRiMyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK0RFUEVORFMgPSAiXAorICAgIGN1cmwgXAorICAgICR7UFlUSE9OX1BOfVwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlkYnVzXzAuNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWRidXNfMC42LjAuYmIKaW5kZXggYWRhYTg2ZC4uOTMxYmM2ZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWRidXNfMC42LjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWRidXNfMC42LjAuYmIKQEAgLTEsNiArMSwxNyBAQAotcmVxdWlyZSBweXRob24tcHlkYnVzLmluYwotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCitERVNDUklQVElPTiA9ICJQeXRob25pYyBEQnVzIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B5ZGJ1cy8iCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCiAKIFNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLVN1cHBvcnQtYXN5bmNocm9ub3VzLWNhbGxzLTU4LnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly8wMDAyLVN1cHBvcnQtdHJhbnNmb3JtYXRpb24tYmV0d2Vlbi1ELUJ1cy1lcnJvcnMtYW5kLWV4Y2UucGF0Y2ggXAogIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYzZhYmQ0NDg2MjMyMjY3OWJkNGU5MDdiZWJjM2UwZDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDIwNzE2MmVmZjU0MjIzODIyYzE4NWRhMDZjMWJhOGEzNDEzN2E5NjAyZjNkYTVhNTI4ZWVkZjNmNzhkMGYyYyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1MgPSAiJHtXT1JLRElSfS9weWRidXMtJHtQVn0iCisKK1JERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1weWdvYmplY3QiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5ZWxmdG9vbHNfMC4yNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHllbGZ0b29sc18wLjI1LmJiCmluZGV4IDU2ZWI4YzQuLjAzZDk2ZGIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHllbGZ0b29sc18wLjI1LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHllbGZ0b29sc18wLjI1LmJiCkBAIC0xLDIgKzEsMTQgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5ZWxmdG9vbHMuaW5jCitERVNDUklQVElPTiA9ICJweWVsZnRvb2xzIGlzIGEgcHVyZS1QeXRob24gbGlicmFyeSBmb3IgcGFyc2luZyBhbmQgYW5hbHl6aW5nIEVMRiBmaWxlcyBhbmQgRFdBUkYgZGVidWdnaW5nIGluZm9ybWF0aW9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2VsaWJlbi9weWVsZnRvb2xzIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIlBEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NWNlMmEyYjA3ZmNhMzI2YmM3YzE0NmQxMDEwNWNjZmMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjNTYyOWI5YTVkMTljODIxMDdhOTQ2Y2NlNTJlZWVjMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4OWM2ZGE2ZjU2MjgwYzM3YTVmZjMzNDY4NTkxYmE5YTEyNGUxN2Q3MWZlNDJkZTk3MTgxOGNiZmY0NmMxYjI0IgorCitQWVBJX1BBQ0tBR0UgPSAicHllbGZ0b29scyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWV4cGVjdF8xLjAuMTkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5ZXhwZWN0XzEuMC4xOS5iYgppbmRleCBiZmQ1ODQwLi5lYTNjMDE4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5ZXhwZWN0XzEuMC4xOS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5ZXhwZWN0XzEuMC4xOS5iYgpAQCAtMSwyICsxLDExIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1weWV4cGVjdC5pbmMKK1NVTU1BUlkgPSAiUHl0aG9uIGV4cGVjdGF0b24gbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIk1pbmltYWwgYnV0IHZlcnkgZmxleGlibGUgaW1wbGVtZW50YXRpb24gb2YgdGhlIGV4cGVjdCBwYXR0ZXJuIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitIT01FUEFHRSA9ICIgaHR0cHM6Ly9iaXRidWNrZXQub3JnL2R3dC9weWV4cGVjdCIKK0xJQ0VOU0UgPSAiSVNDIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLm1kO21kNT01MDBiODg0ZTlkY2Q1ZjY3N2E1M2NiYmVlOGFjZTkzOSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkYzc0NDI4OTg1ODAwMTkyNWM3NWQyMWUyNmYxMjYwZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiZmY0NjU0YjExM2RhYzZjMjIzMWU0ODZlMTFkY2IyMzI4MWRkYzA3NDJhNTQwNDQ2NzMwM2ZlNzYzODgyOWVmIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWZpcm1hdGFfMS4xLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5ZmlybWF0YV8xLjEuMC5iYgppbmRleCAyNWFmMWI1Li5jNmU5NWViIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5ZmlybWF0YV8xLjEuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5ZmlybWF0YV8xLjEuMC5iYgpAQCAtMSwzICsxLDEzIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1weWZpcm1hdGEuaW5jCitTVU1NQVJZID0gIkEgUHl0aG9uIGludGVyZmFjZSBmb3IgdGhlIEZpcm1hdGEgcHJvdG9jb2wiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTg0ZGRjZWY0MzBiN2M0NGNhYTIyYjJmZjRiMzdhM2RmIgorUFlQSV9QQUNLQUdFID0gInB5RmlybWF0YSIKIAorUkRFUEVORFNfJHtQTn0gPSAiXAorICAgICR7UFlUSE9OX1BOfS1weXNlcmlhbCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxNTk2NzNjZmI1NmM3MmNlYWZjMzBmZTkxZWVkZDg0NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjYzE4MGQxYjMwYzg1YTJiYmNhNjJjMTVmZWYxYjg3MWRiMDQ4Y2RjZmE4MDk1OTk2ODM1NmQ5N2JkM2ZmMDhlIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlmbGFrZXNfMi4xLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Zmxha2VzXzIuMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMxMzg4MjIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Zmxha2VzXzIuMS4xLmJiCkBAIC0wLDAgKzEsMTYgQEAKK1NVTU1BUlkgPSAicGFzc2l2ZSBjaGVja2VyIG9mIFB5dGhvbiBwcm9ncmFtcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kcmVhbWhvc3QvY2xpZmYiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUucnN0O21kNT01MTI3MzE1MTE3YTg1NjFhMTUwNDM0M2Q1OTYyMDY0NyIKKworU1JDX1VSSVttZDVzdW1dID0gImEwZjcxYTE1NzI0ZTU1M2M0NmUwM2JhNWVkNTY3MDNjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ5NzY4MzU4ODZmOGM1YjMxZDQ3OTcwZWQ2ODk5NDRhMDI2MmI1ZjNhZmEwMGE1YTdiNGRjODFlNTQ0OWY4YTIiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tcHJldHR5dGFibGUgXAorICAgICR7UFlUSE9OX1BOfS1jbWQyIFwKKyAgICAke1BZVEhPTl9QTn0tcHlwYXJzaW5nIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5aGFtY3Jlc3RfMS45LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5aGFtY3Jlc3RfMS45LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDRhYTliNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHloYW1jcmVzdF8xLjkuMC5iYgpAQCAtMCwwICsxLDEwIEBACitTVU1NQVJZID0gIkhhbWNyZXN0IGZyYW1ld29yayBmb3IgbWF0Y2hlciBvYmplY3RzIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZjZkZjEzMThjNjA3MWRkMTcwN2Y1ZTNiNmMxMWYyNGYiCisKK1BZUElfUEFDS0FHRSA9ICJQeUhhbWNyZXN0IgorCitTUkNfVVJJW21kNXN1bV0gPSAiOGI4MzNhM2ZhMzAxOTc0NTVkZjc5NDI0ZjMwYzhjM2YiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGZmYWEwYTUzZGE1N2U4OWRlMTRjZWQ3MTg1YWM3NDYyMjdhODg5NGRiZDVhM2M3MThiZjA1ZGRiZDFkNTZjZCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5aWZhY2VfMC4wLjExLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWlmYWNlXzAuMC4xMS5iYgppbmRleCA3MjFlN2IxLi4zMDIyZDA4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5aWZhY2VfMC4wLjExLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlpZmFjZV8wLjAuMTEuYmIKQEAgLTEsMiArMSwxMSBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcHlpZmFjZS5pbmMKK1NVTU1BUlkgPSAiUHlpZmFjZSBpcyBhIHBhY2thZ2UgdGhhdCBleHBvc2VzIHRoZSBuZXR3b3JrIGludGVyZmFjZXMgb2YgdGhlIG9wZXJhdGluZyBzeXN0ZW0gaW4gYSBlYXN5IHRvIHVzZSBhbmQgdHJhbnNwYXJlbnQgd2F5IgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3B5aWZhY2UvIgorTElDRU5TRSA9ICJHUEx2MysiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT00ZmU4NjllZTk4N2EzNDAxOThmYjBkNTRjNTVjNDdmMSIKKworU1JDX1VSSVttZDVzdW1dID0gImIwNjZhYTk4NDY1Njc0MjczODEyN2M5Yzc1NDM2YWI0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUyMzFlNTczNWQzMjljNWIyZDRmYzg4NTRmMDY5ZmRhYTU0MzZkM2VmOTFlZDY0ZWU0OWU0MWUzZjVlOGEzZjUiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWlub3RpZnlfMC45LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5aW5vdGlmeV8wLjkuNi5iYgppbmRleCBiM2JhYjk4Li5hYjMzOTUzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5aW5vdGlmeV8wLjkuNi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5aW5vdGlmeV8wLjkuNi5iYgpAQCAtMSwyICsxLDE2IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1weWlub3RpZnkuaW5jCitERVNDUklQVElPTiA9ICJQeXRob24gcHlpbm90aWZ5OiBMaW51eCBmaWxlc3lzdGVtIGV2ZW50cyBtb25pdG9yaW5nIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hYjE3M2NhZGU3OTY1YjQxMTUyODQ2NDU4OWEwODM4MiIKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgICAke1BZVEhPTl9QTn0taW8gXAorICAgICR7UFlUSE9OX1BOfS1taXNjIFwKKyAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAorICAgICR7UFlUSE9OX1BOfS1zbXRwZCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4ZTU4MGZhMWZmMzk3MWY5NGE2ZjgxNjcyYjc2YzQwNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5Yzk5OGE1ZDc2MDZjYTgzNTA2NWNkYWJjMDEzYWU2YzY2ZWI5ZWE3NmEwMGExZTNiYzZlMGNmZTJiNGY3MWY0IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlqa3NfMTkuMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWprc18xOS4wLjAuYmIKaW5kZXggODk4MmZjZS4uZWUyZjMwNyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWprc18xOS4wLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWprc18xOS4wLjAuYmIKQEAgLTEsMiArMSwyMiBAQAotcmVxdWlyZSBweXRob24tcHlqa3MuaW5jCi1pbmhlcml0IHNldHVwdG9vbHMzCitTVU1NQVJZID0gIlB1cmUtUHl0aG9uIEphdmEgS2V5c3RvcmUgKEpLUykgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIlB5SktTIGVuYWJsZXMgUHl0aG9uIHByb2plY3RzIHRvIGxvYWQgYW5kIG1hbmlwdWxhdGVcCisgSmF2YSBLZXlTdG9yZSAoSktTKSBkYXRhIHdpdGhvdXQgYSBKVk0gZGVwZW5kZW5jeS4gUHlKS1Mgc3VwcG9ydHMgSktTLFwKKyBKQ0VLUywgQktTIGFuZCBVQkVSIChCb3VuY3lDYXN0bGUpIGtleXN0b3Jlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9rdXJ0YnJvc2UvcHlqa3MiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTk2OTRkNmNjNzI0Y2FmN2Y3Mzg2YmU4OGE0YTgxOTU4IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYjZlOGYzYjkxYmUzNTVkMTVlM2JhOTlkZTJjY2NmOWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWNlNWI0MDI4OWJjZGZmY2Q2YThlNzExOGIzMzNiYThiYTJlYzRjOWViYzVlMzI0ODg1Y2M4YTY5NzY3MDExYSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgICAke1BZVEhPTl9QTn0tamF2YW9iai1weTMgXAorICAgICR7UFlUSE9OX1BOfS1weWFzbjEgXAorICAgICR7UFlUSE9OX1BOfS1weWFzbjEtbW9kdWxlcyBcCisgICAgJHtQWVRIT05fUE59LXB5Y3J5cHRvZG9tZSBcCisgICAgJHtQWVRIT05fUE59LXR3b2Zpc2hcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlqd3RfMS43LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5and0XzEuNy4xLmJiCmluZGV4IGRjMTZkMjIuLmQyZjdiZTQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlqd3RfMS43LjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWp3dF8xLjcuMS5iYgpAQCAtMSwyICsxLDE2IEBACi1yZXF1aXJlIHB5dGhvbi1weWp3dC5pbmMKLWluaGVyaXQgc2V0dXB0b29sczMKK1NVTU1BUlkgPSAiSlNPTiBXZWIgVG9rZW4gaW1wbGVtZW50YXRpb24gaW4gUHl0aG9uIgorREVTQ1JJUFRJT04gPSAiQSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgSlNPTiBXZWIgVG9rZW4gZHJhZnQgMzIuXAorIE9yaWdpbmFsIGltcGxlbWVudGF0aW9uIHdhcyB3cml0dGVuIGJ5IGh0dHBzOi8vZ2l0aHViLmNvbS9wcm9ncml1bSIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2pwYWRpbGxhL3B5and0IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02ODYyNjcwNWE3YjUxM2NhOGQ1ZjQ0YTNlMjAwZWQwYyIKKworU1JDX1VSSVttZDVzdW1dID0gImE0NzEyZjk4MGMwMDg2OTZlMTNlMDk1MDQxMjBiMmEwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhkNTlhOTc2ZmI3NzNmM2U2YTM5Yzg1NjM2MzU3YzRmMGUyNDI3MDczOTRjYWRhZGQ5ODE0ZjVjYmFhMjBlOTYiCisKK1BZUElfUEFDS0FHRSA9ICJQeUpXVCIKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tY3J5cHRvZ3JhcGh5IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5a3dhbGlmeV8xLjcuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlrd2FsaWZ5XzEuNy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVkMDI5YmQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5a3dhbGlmeV8xLjcuMC5iYgpAQCAtMCwwICsxLDE5IEBACitTVU1NQVJZID0gIllBTUwvSlNPTiB2YWxpZGF0aW9uIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJweWt3YWxpZnkgaXMgYSBzY2hlbWEgdmFsaWRhdG9yIGZvciBZQU1MIGFuZCBKU09OIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3B5a3dhbGlmeS8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWE3MmVhNTE1OTM2NGEyY2Q3ZjQ1YzZkY2JlZTM3ODcyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTgzNTdmMWQwZjc3ZGU5NzZlNzNkYmQzNjYwYWY3NWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2U4YjM5YzVhM2ExMGJjMTc2NjgyYjNiZDlhNzQyMmMzOWNhMjQ3NDgyZGYxOThiNDAyZTgwMTVkZWZjY2ViMiIKKworUFlQSV9QQUNLQUdFID0gInB5a3dhbGlmeSIKK2luaGVyaXQgc2V0dXB0b29sczMgcHlwaQordW5zZXQgX1BZVEhPTl9TWVNDT05GSUdEQVRBX05BTUUKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgICR7UFlUSE9OX1BOfS1kYXRldXRpbCBcCisgICAgJHtQWVRIT05fUE59LXB5eWFtbCBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWxpbnRfMS44LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bGludF8xLjguMy5iYgppbmRleCA1NjNlODMxLi43YTg3M2ExIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bGludF8xLjguMy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bGludF8xLjguMy5iYgpAQCAtMSwyICsxLDM4IEBACi1pbmhlcml0IHNldHVwdG9vbHMzIHB5dGhvbjMtZGlyCi1yZXF1aXJlIHB5dGhvbi1weWxpbnQuaW5jCitTVU1NQVJZPSJQeWxpbnQgaXMgYSBQeXRob24gc291cmNlIGNvZGUgYW5hbHl6ZXIiCitIT01FUEFHRT0gImh0dHA6Ly93d3cucHlsaW50Lm9yZy8iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NDMyNWFmZDM5NmZlYmNiNjU5YzM2YjQ5NTMzMTM1ZDQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZWI1ZjNjYjhmZTU2N2VhZjU0MjBkZDQxNTAxMjIwMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNzczMTE4NTllMGMyZDc5MzIwOTVmMzBkMmIxYmZkYzRiNmZlMTExZjUzNDQ1MGJhNzI3YTUyZWFlMzMwZWYyIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMgcHl0aG9uMy1kaXIKKworREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXB5dGVzdC1ydW5uZXItbmF0aXZlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpeworICAgIHJtICR7RH0ke2JpbmRpcn0vcHlsaW50CisgICAgY2F0ID4+ICR7RH0ke2JpbmRpcn0vcHlsaW50IDw8RU9GCisjIS91c3IvYmluL2VudiAke1BZVEhPTl9QTn0KK2Zyb20gcHlsaW50IGltcG9ydCBydW5fcHlsaW50CitydW5fcHlsaW50KCkKK0VPRgorICAgIGNobW9kIDc1NSAke0R9JHtiaW5kaXJ9L3B5bGludAorICAgIHNlZCAtaSAtZSAnczpeIyEvdXNyL2Jpbi9weXRob246IyEvdXNyL2Jpbi9lbnZcICR7UFlUSE9OX1BOfTpnJyAke0R9LyR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3B5bGludC90ZXN0L2RhdGEvYXNjcmlwdAorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMiCitGSUxFU18ke1BOfS10ZXN0cys9ICIgXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3B5bGludC90ZXN0LyBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vcHlsaW50L3Rlc3R1dGlscy5weSBcCisiCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tYXN0cm9pZCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWlzb3J0IFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tanNvbiBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXBrZ3V0aWwgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1kaWZmbGliIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKKyAgICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHltaXNwXzIuNC4xMTkuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHltaXNwXzIuNC4xMTkuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDUyM2Q5ZS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bWlzcF8yLjQuMTE5LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcHltaXNwLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1pc3BfMi40LjEyMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHltaXNwXzIuNC4xMjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmYyZGEwMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHltaXNwXzIuNC4xMjIuYmIKQEAgLTAsMCArMSwyMSBAQAorREVTQ1JJUFRJT04gPSAiUHl0aG9uIEFQSSBmb3IgTUlTUCIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9NSVNQL1B5TUlTUCIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTM2MzljZjU3ODBmNzFiMTI1ZDNlOWQxZGMxMjdjMjAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZjQxMTg1ZDRjMjc1M2RjMmMxYTlhYjkzN2UzNjE0YSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlY2RjMzYyYjRiYjVkZDUwMGE1ZjBiOWU3OTViMzVlZDc1MDM3ZGU2NGY4ZGNmMzljMjRkMDI5ZTc2NTdhZDdmIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWRhdGV1dGlsIFwKKyAgICAke1BZVEhPTl9QTn0tanNvbiBcCisgICAgJHtQWVRIT05fUE59LWpzb25zY2hlbWEgXAorICAgICR7UFlUSE9OX1BOfS1yZXF1ZXN0cyBcCisgICAgJHtQWVRIT05fUE59LXNpeCBcCisiCisKKyMgRml4ZXM6IHB5dGhvbjMtcHltaXNwIHJlcXVpcmVzIC9iaW4vYmFzaCwgYnV0IG5vCisjIHByb3ZpZGVycyBmb3VuZCBpbiBSREVQRU5EU19weXRob24zLXB5bWlzcD8gW2ZpbGUtcmRlcAorUkRFUEVORFNfJHtQTn0gKz0gImJhc2giCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bW9uZ29fMy4xMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1vbmdvXzMuMTAuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTE2NGIxOC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bW9uZ29fMy4xMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5bW9uZ28uaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bW9uZ29fMy4xMC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1vbmdvXzMuMTAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNjljYTUzCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW1vbmdvXzMuMTAuMS5iYgpAQCAtMCwwICsxLDMxIEBACitTVU1NQVJZID0gIlB5dGhvbiBkcml2ZXIgZm9yIE1vbmdvREIgPGh0dHA6Ly93d3cubW9uZ29kYi5vcmc+IgorREVTQ1JJUFRJT04gPSAiXAorVGhlIFB5TW9uZ28gZGlzdHJpYnV0aW9uIGNvbnRhaW5zIHRvb2xzIGZvciBpbnRlcmFjdGluZyB3aXRoIE1vbmdvREIgXAorZGF0YWJhc2UgZnJvbSBQeXRob24uIFRoZSBic29uIHBhY2thZ2UgaXMgYW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIEJTT04gXAorZm9ybWF0IGZvciBQeXRob24uIFRoZSBweW1vbmdvIHBhY2thZ2UgaXMgYSBuYXRpdmUgUHl0aG9uIGRyaXZlciBmb3IgXAorTW9uZ29EQi4gVGhlIGdyaWRmcyBwYWNrYWdlIGlzIGEgZ3JpZGZzIGltcGxlbWVudGF0aW9uIG9uIHRvcCBvZiBweW1vbmdvLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL21vbmdvZGIvbW9uZ28tcHl0aG9uLWRyaXZlciIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTg2ZDNmM2E5NWMzMjRjOTQ3OWJkODk4Njk2OGY0MzI3IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTMxYjljMDE5MGM5ZWFmMWY3OTJkMDI3N2IyYThlYmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTkzMjU3ZjZjYTNjZGU1NTMzMmFmMWY2MmFmM2UwNGNhODljZTYzYzA4YjU2YTM4N2NkZDQ2MTM2YzcyZjJmYSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1BBQ0tBR0VTID0rICIke1BZVEhPTl9QTn0tYnNvbiIKKworRklMRVNfJHtQWVRIT05fUE59LWJzb24gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vYnNvbi8qIgorCitSREVQRU5EU18ke1BZVEhPTl9QTn0tYnNvbiArPSAiIFwKKyAgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyAgICAgJHtQWVRIT05fUE59LWpzb24gXAorICAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKKyAgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAorICAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWJzb24gXAorICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW15c3FsXzAuOS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW15c3FsXzAuOS4zLmJiCmluZGV4IDEzNzc0YmQuLjZhNjRjY2IgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlteXNxbF8wLjkuMy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bXlzcWxfMC45LjMuYmIKQEAgLTEsMiArMSwxNyBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcHlteXNxbC5pbmMKK1NVTU1BUlkgPSAiQSBwdXJlLVB5dGhvbiBNeVNRTCBjbGllbnQgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIiBcCisgIFRoaXMgcGFja2FnZSBjb250YWlucyBhIHB1cmUtUHl0aG9uIE15U1FMIGNsaWVudCBsaWJyYXJ5LCBiYXNlZCBvbiBQRVAgMjQ5IFwKKyAgTW9zdCBwdWJsaWMgQVBJcyBhcmUgY29tcGF0aWJsZSB3aXRoIG15c3FsY2xpZW50IGFuZCBNeVNRTGRiLiBcCisgICIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weW15c3FsLnJlYWR0aGVkb2NzLmlvIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01MjgxNzVjODQxNjNiYjgwMGQyM2FkODM1YzdmYTBmYyIKKworU1JDX1VSSVttZDVzdW1dID0gImU1ZDkxODNjYzBhNzc1YWMyOWY5ZTAzNjVjY2E2NTU2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ4YzA1OWRjZDgxZGVkYjg1YTlmMDM0ZDVlMjJkY2I0NDQyYzBiMjAxOTA4YmVkZTk5ZTMwNmQ2NWVhN2M4ZTciCisKK1BZUElfUEFDS0FHRSA9ICJQeU15U1FMIgoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tY3J5cHRvZ3JhcGh5IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW5ldGxpbnV4XzEuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHluZXRsaW51eF8xLjEuYmIKaW5kZXggZjZkOWUzYy4uYzgwYTE2NiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW5ldGxpbnV4XzEuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5bmV0bGludXhfMS4xLmJiCkBAIC0xLDIgKzEsMTEgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5bmV0bGludXguaW5jCitTVU1NQVJZID0gIkxpbnV4IG5ldHdvcmsgY29uZmlndXJhdGlvbiBsaWJyYXJ5IGZvciBQeXRob24iCitERVNDUklQVElPTiA9ICJUaGlzIGxpYnJhcnkgY29udGFpbnMgUHl0aG9uIGJpbmRpbmdzIHRvIGlvY3RsIGNhbGxzIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9ybGlzYWdvci9weW5ldGxpbnV4IgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NzRlMTg2MTczNmVlOTU5ODI0ZmU3NTQyMzIzYzEyZTkiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzMzM2ZTVkNGE0NzhhY2NhNGUzNWJmMzEyNWI0Zjg4MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0YWQwODI5OGM5ZjViYTE1YTExY2RkYzYzOWJhODc3OGNhYmRmYzQwMmI1MTA2NmQ5ZTBhMzI1ZTVhNWIzOTFjIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlvcGVuc3NsXzE5LjEuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlvcGVuc3NsXzE5LjEuMC5iYgppbmRleCAwZjBmODNlLi5kYTc4M2VhIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5b3BlbnNzbF8xOS4xLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weW9wZW5zc2xfMTkuMS4wLmJiCkBAIC0xLDIgKzEsMjQgQEAKK1NVTU1BUlkgPSAiU2ltcGxlIFB5dGhvbiB3cmFwcGVyIGFyb3VuZCB0aGUgT3BlblNTTCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weW9wZW5zc2wub3JnLyIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorCitERVBFTkRTICs9ICJvcGVuc3NsICR7UFlUSE9OX1BOfS1jcnlwdG9ncmFwaHkiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkOTgwNGZlZGJkMWViMGM3ZDkyNDMzOTdiMWZiZjk3MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YTI0NDk0YjI2MDJhYWY0MDJiZTVjOWUzMGEwYjgyZDRhNWM2NzUyOGZlOGZiNDc1ZTNmM2JjMDBkZDY5NTA3IgorCitQWVBJX1BBQ0tBR0UgPSAicHlPcGVuU1NMIgogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1weW9wZW5zc2wuaW5jCisKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKK0ZJTEVTXyR7UE59LXRlc3RzID0gIiR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvT3BlblNTTC90ZXN0IgorCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tY3J5cHRvZ3JhcGh5IFwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyIKK1JERVBFTkRTXyR7UE59LXRlc3RzID0gIiR7UE59IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cGFyc2luZ18yLjQuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlwYXJzaW5nXzIuNC42LmJiCmluZGV4IDA4MDVmZWUuLmE2ZWMxY2IgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlwYXJzaW5nXzIuNC42LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlwYXJzaW5nXzIuNC42LmJiCkBAIC0xLDIgKzEsMjEgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5cGFyc2luZy5pbmMKK1NVTU1BUlkgPSAiUHl0aG9uIHBhcnNpbmcgbW9kdWxlIgorSE9NRVBBR0UgPSAiaHR0cDovL3B5cGFyc2luZy53aWtpc3BhY2VzLmNvbS8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY1N2E1NjYyMzM4ODg1MTNlMWYwN2JhMTNlMmY0N2YxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjk3MzNlYThjYmVlMDI5MWFhZDEyMWM2OWM2ZTUxYTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGM4MzA1ODJhODRmYjAyMjQwMGI4NTQyOTc5MWJjNTUxZjFmNDg3MWMzM2YyM2U0NGYzNTMxMTllOTJmOTY5ZiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisgICAgJHtQWVRIT05fUE59LWRlYnVnZ2VyIFwKKyAgICAke1BZVEhPTl9QTn0tanNvbiBcCisgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCisgICAgJHtQWVRIT05fUE59LXBwcmludCBcCisgICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlwZXJjbGlwXzEuNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXBlcmNsaXBfMS43LjAuYmIKaW5kZXggZWU2Zjg4Yi4uNTJkMTA5YSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXBlcmNsaXBfMS43LjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXBlcmNsaXBfMS43LjAuYmIKQEAgLTEsMiArMSwxNCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcHlwZXJjbGlwLmluYworREVTQ1JJUFRJT04gPSAiQSBjcm9zcy1wbGF0Zm9ybSBjbGlwYm9hcmQgbW9kdWxlIGZvciBQeXRob24uIChvbmx5IGhhbmRsZXMgcGxhaW4gdGV4dCBmb3Igbm93KSIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PWE0MjgzNTZhZGE3NzM3YjQxNmVjNGI2M2RjNjVkNTgxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNmJiYjg1OTg1NzljYzNlZTUwNTU0YjRjNTlkMGNmYWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTc5MzI1NDY4Y2NmNjgyMTA0ZDVkY2FmNzUzZjg2OTg2ODEwMDYzMTMwMWQzZTcyZjQ3YmFiZGVhNTcwMGQxYyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cGVyZl8xLjcuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlwZXJmXzEuNy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1YmE1ZWZiLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlwZXJmXzEuNy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1weXBlcmYuaW5jCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tbWlzYyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlwZXJmXzEuNy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXBlcmZfMS43LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDgxZTkwNAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlwZXJmXzEuNy4xLmJiCkBAIC0wLDAgKzEsMjQgQEAKK1NVTU1BUlkgPSAiQSB0b29sa2l0IHRvIHdyaXRlLCBydW4gYW5kIGFuYWx5emUgYmVuY2htYXJrcyIKK0RFU0NSSVBUSU9OID0gIiBcCitUaGUgUHl0aG9uIHB5cGVyZiBtb2R1bGUgaXMgYSB0b29sa2l0IHRvIHdyaXRlLCBydW4gYW5kIGFuYWx5emUgYmVuY2htYXJrcy4gXAorRmVhdHVyZXM6IFwKKyAgICAqIFNpbXBsZSBBUEkgdG8gcnVuIHJlbGlhYmxlIGJlbmNobWFya3MgXAorICAgICogQXV0b21hdGljYWxseSBjYWxpYnJhdGUgYSBiZW5jaG1hcmsgZm9yIGEgdGltZSBidWRnZXQuIFwKKyAgICAqIFNwYXduIG11bHRpcGxlIHdvcmtlciBwcm9jZXNzZXMuIFwKKyAgICAqIENvbXB1dGUgdGhlIG1lYW4gYW5kIHN0YW5kYXJkIGRldmlhdGlvbi4gXAorICAgICogRGV0ZWN0IGlmIGEgYmVuY2htYXJrIHJlc3VsdCBzZWVtcyB1bnN0YWJsZS4gXAorICAgICogSlNPTiBmb3JtYXQgdG8gc3RvcmUgYmVuY2htYXJrIHJlc3VsdHMuIFwKKyAgICAqIFN1cHBvcnQgbXVsdGlwbGUgdW5pdHM6IHNlY29uZHMsIGJ5dGVzIGFuZCBpbnRlZ2VyLiBcCisiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc4YmMyZTZlODdjOGM2MTI3MjkzN2I4NzllNmRjMmY4IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDllODk0ZGM4NDNiYjdmMGFiZmYxMDk5MzFhMjk4OTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzM3NjkwZTgxMDExNmE4M2EyNDRkZmVlYzQ3ODg1ZTJmMDQ3NWI0YzQ1MDMxMzkwNGJlM2JjMmNkYWY2ZDUwYSIKKworREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXNpeC1uYXRpdmUiCisKK1BZUElfUEFDS0FHRSA9ICJweXBlcmYiCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1taXNjIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXJvdXRlMi9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cm91dGUyL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2VjNzExCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXJvdXRlMi9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cm91dGUyXzAuNS4xMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlyb3V0ZTJfMC41LjExLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE0YjhhYTMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cm91dGUyXzAuNS4xMS5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIkEgcHVyZSBQeXRob24gbmV0bGluayBhbmQgTGludXggbmV0d29yayBjb25maWd1cmF0aW9uIGxpYnJhcnkiCitMSUNFTlNFID0gIkdQTHYyICYgQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuR1BMLnYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkFwYWNoZS52MjttZDU9MzQyODFlMzEyMTY1Zjg0M2EyYjdkMWYxMTRmZTY1Y2UiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3MDA1ZGIwMTYwNDY2M2ZjMmVjYzA4OTkyNTk4MGUwNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNWU5NTlmMWE4OWQ3MTUxNThiOTFmZTgzYjY3OTQ2YTQ0NDFlNWUwOThjYzIyNWY0ZGY3OGEzNzY1YWM0YWYyIgorCitpbmhlcml0IHNldHVwdG9vbHMzIHB5cGkgcHRlc3QKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCisgICAgJHtQWVRIT05fUE59LWRpc3R1dGlscyBcCisgICAgJHtQWVRIT05fUE59LWlvIFwKKyAgICAke1BZVEhPTl9QTn0tanNvbiBcCisgICAgJHtQWVRIT05fUE59LWxvZ2dpbmcgXAorICAgICR7UFlUSE9OX1BOfS1tdWx0aXByb2Nlc3NpbmcgXAorICAgICR7UFlUSE9OX1BOfS1waWNrbGUgXAorICAgICR7UFlUSE9OX1BOfS1wa2d1dGlsIFwKKyAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKKyAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAorICAgICR7UFlUSE9OX1BOfS11bml4YWRtaW4gXAorIgorCitTUkNfVVJJICs9ICIgXAorCWZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKwkke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKwkke1BZVEhPTl9QTn0tZmNudGwgXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKwljcCAtcmYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXJvdXRlMl8wLjUuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlyb3V0ZTJfMC41LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyM2U3MmMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXJvdXRlMl8wLjUuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotcmVxdWlyZSBweXRob24tcHlyb3V0ZTIuaW5jCi1pbmhlcml0IHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cnNpc3RlbnRfMC4xNS43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXJzaXN0ZW50XzAuMTUuNy5iYgppbmRleCAyZTU2N2U5Li41ZWY3MTQwIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cnNpc3RlbnRfMC4xNS43LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlyc2lzdGVudF8wLjE1LjcuYmIKQEAgLTEsMiArMSwxNSBAQAorU1VNTUFSWSA9ICJQZXJzaXN0ZW50L0ltbXV0YWJsZS9GdW5jdGlvbmFsIGRhdGEgc3RydWN0dXJlcyBmb3IgUHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3RvYmd1L3B5cnNpc3RlbnQiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0UubWl0O21kNT1jYTU3NGYyODkxY2Y1MjhiM2U3YTJlZTU3MDMzN2U3YyIKKworU1JDX1VSSVttZDVzdW1dID0gImRhOTQ4NmQwMGVmNWIyMTNmNDBkNWNmM2M1YmNhODJkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNkYzdiNWUzZWQ3N2JlZDYxMjcwYTQ3ZDM1NDM0YTMwNjE3YjliZWNkZjI0NzhhZjc2YWQyYzZhZGUzMDcyODAiCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcHlyc2lzdGVudC5pbmMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXNpeCBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlzY2FmZm9sZF8zLjIuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlzY2FmZm9sZF8zLjIuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYmQyMjJmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNjYWZmb2xkXzMuMi4zLmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiUHl0aG9uIHByb2plY3QgdGVtcGxhdGUgZ2VuZXJhdG9yIHdpdGggYmF0dGVyaWVzIGluY2x1ZGVkIgorREVTQ1JJUFRJT04gPSAiUHlTY2FmZm9sZCBwYWNrYWdlIGhlbHBzIHRvIHNldHVwIGEgbmV3IFB5dGhvbiBwcm9qZWN0LiBcCitBZnRlciBpbnN0YWxsYXRpb24sIGl0IHByb3ZpZGVzIGEgbmV3IGNvbW1hbmQgW3B1dHVwXSwgd2hpY2ggY291bGQgYmUgXAordXNlZCB0byBjcmVhdGUgdGVtcGxhdGUgUHJvamVjdHMuIgorCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHlzY2FmZm9sZC9weXNjYWZmb2xkIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ODIyNzE4MDEyNjc5N2EwMTQ4Zjk0ZjQ4M2YzZTE0ODkiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitQWVBJX1BBQ0tBR0UgPSAiUHlTY2FmZm9sZCIKKworU1JDX1VSSVttZDVzdW1dID0gIjY3NjlkMmEyNmE5ZDFmMzAzODk0NGI4ZmJmZTcyOGZmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk2YzNlN2Y1NTI5ZGYwYjViMzUxZTg3OWExNDFlMWU1YzlmMjYyMTFmMzBkNDkzYzIzZDhjMDlkOWQ2MTBhNmYiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlzZXJpYWwvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNlcmlhbC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWNlYzcxMQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlzZXJpYWwvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGVzdApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNlcmlhbF8zLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c2VyaWFsXzMuNC5iYgppbmRleCAxN2VkM2Y4Li5kNjVjOWE4IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c2VyaWFsXzMuNC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c2VyaWFsXzMuNC5iYgpAQCAtMSw3ICsxLDYyIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1weXNlcmlhbC5pbmMKK1NVTU1BUlkgPSAiU2VyaWFsIFBvcnQgU3VwcG9ydCBmb3IgUHl0aG9uIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9ZDQ3NmQ5NDkyNmRiNmUwMDA4YTViMzg2MGQxZjVjMGQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZDYxODNiMTU1MTlhMGFlOTY2NzVlOWMzMzMwYzY5YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZTJkNDAxZmRlZTBlYWI5OTZjZjczNGU2Nzc3M2EwMTQzYjkzMjc3MmNhOGI0MjQ1MTQ0MGNmZWQ5NDJjNjI3IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMgcHRlc3QKIAogZG9faW5zdGFsbF9hcHBlbmQoKSB7CiAgICAgcm0gLWYgJHtEfSR7YmluZGlyfS9taW5pdGVybS5weQogICAgIHJtZGlyICR7RH0ke2JpbmRpcn0KIH0KKworUEFDS0FHRVMgPSsgIiR7UE59LWphdmEgJHtQTn0tb3N4ICR7UE59LXdpbjMyICR7UE59LXRvb2xzIgorCitGSUxFU18ke1BOfS1qYXZhID0gIiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsLypqYXZhKiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsL19fcHljYWNoZV9fLypqYXZhKiBcCisiCisKK0ZJTEVTXyR7UE59LW9zeCA9ICIgXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NlcmlhbC90b29scy8qb3N4KiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsL3Rvb2xzL19fcHljYWNoZV9fLypvc3gqIFwKKyIKKworRklMRVNfJHtQTn0td2luMzIgPSAiIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvKnNlcmlhbGNsaSogXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NlcmlhbC9fX3B5Y2FjaGVfXy8qc2VyaWFsY2xpKiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2VyaWFsLyp3aW4zMiogXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NlcmlhbC9fX3B5Y2FjaGVfXy8qd2luMzIqIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvdG9vbHMvbWluaXRlcm0qIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvdG9vbHMvX19weWNhY2hlX18vbWluaXRlcm0qIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvdG9vbHMvKndpbmRvd3MqIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS9zZXJpYWwvdG9vbHMvX19weWNhY2hlX18vKndpbmRvd3MqIFwKKyIKKworUkRFUEVORFNfJHtQTn0gPSAiXAorICAgICR7UFlUSE9OX1BOfS1mY250bCBcCisgICAgJHtQWVRIT05fUE59LWlvIFwKKyAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCisgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAorICAgICR7UFlUSE9OX1BOfS1zaGVsbCBcCisgICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJY3AgLXJmICR7U30vdGVzdC8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c29ja3NfMS43LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c29ja3NfMS43LjEuYmIKaW5kZXggYmJkYTA1YS4uZTMxMTkwNCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXNvY2tzXzEuNy4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlzb2Nrc18xLjcuMS5iYgpAQCAtMSw2ICsxLDE5IEBACitERVNDUklQVElPTiA9ICJBIFB5dGhvbiBTT0NLUyBjbGllbnQgbW9kdWxlIgorSE9NRVBBR0UgPSAiaHR0cDovL3B5dGhvbi1yZXF1ZXN0cy5vcmciCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTFkNDU3YmNmZmI5NjYxYjQ1Zjc5OWQ0ZWZlZTcyZjE2IgorCitTUkNfVVJJW21kNXN1bV0gPSAiODliMWE2ODY1YzYxYmFlNjdhMzI0MTc1MTc2MTJlZTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2Y4ODA0NTcxZWJlMTU5YzM4MGFjNmRlMzc2NDNiYjQ2ODU5NzA2NTVkM2JiYTI0MzUzMGQ2NTU4Yjc5OWFhMCIKKworUFlQSV9QQUNLQUdFID0gIlB5U29ja3MiCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5c29ja3MuaW5jCiAKIFJERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAorICAgICR7UFlUSE9OX1BOfS1lbWFpbCBcCisgICAgJHtQWVRIT05fUE59LWlvIFwKICAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKKyAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAogIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5c3RhY2hlXzAuNS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXN0YWNoZV8wLjUuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZWI0OTg2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXN0YWNoZV8wLjUuNC5iYgpAQCAtMCwwICsxLDE1IEBACitTVU1NQVJZID0gIlB5dGhvbiBpbXBsZW1lbnRhdGlvbiBvZiBNdXN0YWNoZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kZWZ1bmt0L3B5c3RhY2hlIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lYjQ0MTc4MDJjNTYzODRhYWM3MWIzNDUwNTUyOGE2MCIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ4NTg4NWU2N2EwZjY0MTFkNTI1MmU2OWIyMGEzNWNhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY3YmJjMjY1ZmI5NTdiNGQ2YzdjMDQyYjMzNjU2MzE3OTQ0NGFiMzEzZmI5M2E3MTk3NTkxMTFlYWJkM2I4NWEiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtYXN5bmNpb18wLjEwLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1hc3luY2lvXzAuMTAuMC5iYgppbmRleCAwOWYyNmY4Li5hN2U5NjNiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1hc3luY2lvXzAuMTAuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1hc3luY2lvXzAuMTAuMC5iYgpAQCAtMSwyICsxLDEzIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1weXRlc3QtYXN5bmNpby5pbmMKK0RFU0NSSVBUSU9OID0gInB5dGVzdC1hc3luY2lvIGlzIGFuIEFwYWNoZTIgbGljZW5zZWQgbGlicmFyeSwgd3JpdHRlbiBpbiBQeXRob24sIGZvciB0ZXN0aW5nIGFzeW5jaW8gY29kZSB3aXRoIHB5dGVzdCIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1hc3luY2lvIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FLnJzdDttZDU9YWU2MjI2OGQyMDdjNzNiNjE1ZmJlZmRkYWY5MWE4ODEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNDdhN2VjMzJmMjRhMTg1MzQxMzI3YzQyYTBmODViZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZmFjNTEwMGZkNzE2Y2JlY2Y2ZWY4OTIzM2U4NTkwYTRhZDYxZDcyOWQxNzMyZTBhOTZiODQxODJkZjFkYWFmIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworREVQRU5EUyArPSAiJHtQWVRIT05fUE59LXB5dGVzdC1uYXRpdmUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtaGVscGVycy1uYW1lc3BhY2VfMjAxOS4xLjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1oZWxwZXJzLW5hbWVzcGFjZV8yMDE5LjEuOC5iYgppbmRleCBmMDNmNWQ0Li5iM2FjZWQ0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1oZWxwZXJzLW5hbWVzcGFjZV8yMDE5LjEuOC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1oZWxwZXJzLW5hbWVzcGFjZV8yMDE5LjEuOC5iYgpAQCAtMSw3ICsxLDE0IEBACi1yZXF1aXJlIHB5dGhvbi1weXRlc3QtaGVscGVycy1uYW1lc3BhY2UuaW5jCitERVNDUklQVElPTiA9ICJUaGlzIHBsdWdpbiBkb2VzIG5vdCBwcm92aWRlIGFueSBoZWxwZXJzIHRvIHB5dGVzdCwgaXQgZG9lcywgaG93ZXZlciwgcHJvdmlkZSBhIGhlbHBlcnMgbmFtZXNwYWNlIGluIHB5dGVzdCB3aGljaCBlbmFibGVzIHlvdSB0byByZWdpc3RlciBoZWxwZXIgZnVuY3Rpb25zIGluIHlvdXIgY29uZnRlc3QucHkgdG8gYmUgdXNlZCB3aXRoaW4geW91ciB0ZXN0cyB3aXRob3V0IGhhdmluZyB0byBpbXBvcnQgdGhlbS4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2FsdHN0YWNrL3B5dGVzdC1oZWxwZXJzLW5hbWVzcGFjZSIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PWNjOTk1MDhjNDNkOWQxNGZkNTFjN2ZhYzYyMmZmZDIzIgogCi1pbmhlcml0IHNldHVwdG9vbHMzCitTUkNfVVJJW21kNXN1bV0gPSAiMDRlYzFkODc1MGY5YjE1NGU3ODJhNDdjZjhiMzA3MzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGVmZjIzYTE5ZjkyNDEwYzAxNjZmNmRmZmJmYTg5MDFkM2UxNGE4MGU5N2Q3MGNkMDg0MjhiNmQ1OTc3NzFjZSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCiAKIFJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgIHB5dGhvbjMtcHl0ZXN0IFwKLSAgICAiCisgICAgJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1odG1sXzEuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LWh0bWxfMS42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhY2UyOWUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1odG1sXzEuNi5iYgpAQCAtMCwwICsxLDE5IEBACitERVNDUklQVElPTiA9ICJweXRlc3QgcGx1Z2luIGZvciBnZW5lcmF0aW5nIGh0bWwgcmVwb3J0cyBmcm9tIHRlc3QgcmVzdWx0cyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9weXRlc3QtZGV2L3B5dGVzdC1odG1sIgorTElDRU5TRSA9ICJNUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vcHl0ZXN0LWh0bWwuTElDRU5TRTttZDU9NWQ0MjVjOGYzMTU3ZGJmMjEyZGIyZWM1M2Q5ZTUxMzIiCisKKyMgUGVyIFJFQURNRS5yc3QgdGhlIGxpY2Vuc2Ugc3RhdGVtZW50IGlzIGZldGNoZWQgZnJvbQorIyBodHRwczovL3Jhdy5naXRodWJ1c2VyY29udGVudC5jb20vZGF2ZWh1bnQvcHl0ZXN0LWh0bWwvbWFzdGVyL0xJQ0VOU0UKK1NSQ19VUkkgKz0gImh0dHBzOi8vcmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbS9kYXZlaHVudC9weXRlc3QtaHRtbC9tYXN0ZXIvTElDRU5TRTtuYW1lPWxpY2Vuc2U7ZG93bmxvYWRmaWxlbmFtZT1weXRlc3QtaHRtbC5MSUNFTlNFIgorCitQWVBJX1BBQ0tBR0UgPSAicHl0ZXN0LWh0bWwiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiYWM5NTY4NjRhOWIzMzkyMjAzZGFjZDI4N2FlNDUwZjAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTM1OWRlMDQyNzMyMzk1ODdiZDFhMTViMjliMjI2NmRhZWFmNTZiN2ExM2Y4MjI0YmM0ZmIzYWUwYmE3MmMzZiIKK1NSQ19VUklbbGljZW5zZS5tZDVzdW1dID0gIjVkNDI1YzhmMzE1N2RiZjIxMmRiMmVjNTNkOWU1MTMyIgorU1JDX1VSSVtsaWNlbnNlLnNoYTI1NnN1bV0gPSAiMmJmZGNhNjBhZGY4MDMxMDhkNGM3ZjAwOTAwMGJlYTc2YWQwMGU2MjFlMTYzMTk3ODgxYjBlYWFlOTFiNTMwZSIKKworUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LXB5dGVzdCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LW1ldGFkYXRhXzEuOC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtbWV0YWRhdGFfMS44LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODA3YjBjZQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LW1ldGFkYXRhXzEuOC4wLmJiCkBAIC0wLDAgKzEsMTUgQEAKK0RFU0NSSVBUSU9OID0gInB5dGVzdC1tZXRhZGF0YSBpcyBhIHBsdWdpbiB0aGF0IGFsbG93ZWQgZm9yIGFjY2Vzc2luZyBweXRlc3QgbWV0YWRhdGEiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcHl0ZXN0LWRldi9weXRlc3QtbWV0YWRhdGEiCitMSUNFTlNFID0gIk1QTC0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01ZDQyNWM4ZjMxNTdkYmYyMTJkYjJlYzUzZDllNTEzMiIKKworUFlQSV9QQUNLQUdFID0gInB5dGVzdC1tZXRhZGF0YSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5NTY3NGMyMzkwYjU4ZTAxMzhjYWJhYzUxMDFkMTkwOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMDcxYTU5Mjg1ZGU0MGQ3NTQxZmRlMWViOWYxZGRlYTFjOWRiMTY1ODgyZGY4Mjc4MTM2NzQ3MTIzOGI2NmJhIgorCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tc2V0dXB0b29scy1zY20tbmF0aXZlIgorCitSREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tcHl0ZXN0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtcnVubmVyXzUuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LXJ1bm5lcl81LjIuYmIKaW5kZXggZGY1NmJhNi4uZDAwY2Q0OCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtcnVubmVyXzUuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC1ydW5uZXJfNS4yLmJiCkBAIC0xLDIgKzEsMTYgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5dGVzdC1ydW5uZXIuaW5jCitTVU1NQVJZID0gIkludm9rZSBweS50ZXN0IGFzIGRpc3R1dGlscyBjb21tYW5kIHdpdGggZGVwZW5kZW5jeSByZXNvbHV0aW9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hMzNmMzhiYmY0N2Q0OGM3MGZlMGQ0MGU1Zjc3NDk4ZSIKKworU1JDX1VSSVttZDVzdW1dID0gImU1ZjY2YjhlOGU4N2Y2MmM1OTYzMWMzNWM5MTlkMzIxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk2YzdlNzNlYWQ3YjkzZTM4OGM1ZDYxNDc3MGQyYmFlNjUyNmVmZDk5Nzc1N2QzNTQzZmUxN2I1NTdhMDk0MmIiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitERVBFTkRTICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzLXNjbS1uYXRpdmUiCisKK1JERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1weSAke1BZVEhPTl9QTn0tc2V0dXB0b29scyAke1BZVEhPTl9QTn0tZGVidWdnZXIgJHtQWVRIT05fUE59LWpzb24gXAorICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWlvIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC10ZW1wZGlyXzIwMTkuMTAuMTIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC10ZW1wZGlyXzIwMTkuMTAuMTIuYmIKaW5kZXggMDJlODIxNS4uN2E0OGZkNSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtdGVtcGRpcl8yMDE5LjEwLjEyLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LXRlbXBkaXJfMjAxOS4xMC4xMi5iYgpAQCAtMSw3ICsxLDE0IEBACi1yZXF1aXJlIHB5dGhvbi1weXRlc3QtdGVtcGRpci5pbmMKK0RFU0NSSVBUSU9OID0gIkFkZHMgc3VwcG9ydCBmb3IgYSBwcmVkaWN0YWJsZSBhbmQgcmVwZWF0YWJsZSB0ZW1wb3JhcnkgZGlyZWN0b3J5LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9zYWx0c3RhY2svcHl0ZXN0LXRlbXBkaXIiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT05ODcyYzNhMzdjYzliYWY3OWE0NjRjZDE2ODI4MmJlNSIKIAotaW5oZXJpdCBzZXR1cHRvb2xzMworU1JDX1VSSVttZDVzdW1dID0gIjc5Yjk5N2Q0MThmYjg1YzI1MjlhYjUwY2Q0MzMzNjg5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU3ZDkxODEzYTlhYTk5MWRiODdkYWNkZWY4Y2ZkM2YxNjU3NjMyZDczMWQ1NmQwNjIzOGM1ZmZiNjNhYjM2ZDgiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwogCiBSREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICBweXRob24zLXB5dGVzdCBcCi0gICAgIgorICAgICR7UFlUSE9OX1BOfS1weXRlc3QgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3QtdGltZW91dF8xLjMuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LXRpbWVvdXRfMS4zLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTM1OTk2OQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LXRpbWVvdXRfMS4zLjQuYmIKQEAgLTAsMCArMSwxMyBAQAorU1VNTUFSWSA9ICJweS50ZXN0IHBsdWdpbiB0byBhYm9ydCBoYW5naW5nIHRlc3RzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3B5dGVzdC1kZXYvcHl0ZXN0LXRpbWVvdXQvIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kODA0OGNkMTU2ZWRhM2RmMmU3ZjExMWIwYWU5Y2VmZiIKKworUFlQSV9QQUNLQUdFID0gInB5dGVzdC10aW1lb3V0IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMTU5NDc2MmFlNzdlZDdjNmMyNzI3YWE4YjRhYThiZmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODBmYWExOWNkMjQ1YTQyYjg3YTUxNjk5ZDY0MGMwMGQ5MzdjMDJiNzQ5MDUyYmZjYTZiYWU4YmRiZTEyYzQ4ZSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ID0gIiR7UFlUSE9OX1BOfS1weXRlc3QiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LzAwMDEtc2V0dXAucHktcmVtb3ZlLXRoZS1zZXR1cF9yZXF1aXJlcy1mb3Itc2V0dXB0b29scy1zY20ucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdC8wMDAxLXNldHVwLnB5LXJlbW92ZS10aGUtc2V0dXBfcmVxdWlyZXMtZm9yLXNldHVwdG9vbHMtc2NtLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHl0ZXN0LzAwMDEtc2V0dXAucHktcmVtb3ZlLXRoZS1zZXR1cF9yZXF1aXJlcy1mb3Itc2V0dXB0b29scy1zY20ucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0LzAwMDEtc2V0dXAucHktcmVtb3ZlLXRoZS1zZXR1cF9yZXF1aXJlcy1mb3Itc2V0dXB0b29scy1zY20ucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0XzUuMy4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3RfNS4zLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYTY2MzIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRlc3RfNS4zLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0ICswLDAgQEAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcHl0ZXN0LmluYwotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdF81LjMuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0ZXN0XzUuMy41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhkYWQxM2EKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dGVzdF81LjMuNS5iYgpAQCAtMCwwICsxLDM4IEBACitTVU1NQVJZID0gIlNpbXBsZSBwb3dlcmZ1bCB0ZXN0aW5nIHdpdGggcHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cDovL3B5dGVzdC5vcmciCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTgxZWI5ZjcxZDAwNmM2YjI2OGNmNDM4OGUzYzk4ZjdiIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDVlZjQ1M2Y3MjNiZTQ2ZDkzZTA3OTVmM2JlODZjODgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGQ1ZmU5MTg5YTE0OGFjYzNjM2ViMmFjOGUxYWMwNzQyY2I3NjE4YzA4NGYzZDIyOGJhYWVjMGMyNTRiMzE4ZCIKKworU1JDX1VSSV9hcHBlbmQgPSAiIGZpbGU6Ly8wMDAxLXNldHVwLnB5LXJlbW92ZS10aGUtc2V0dXBfcmVxdWlyZXMtZm9yLXNldHVwdG9vbHMtc2NtLnBhdGNoICIKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1hdHRycyBcCisgICAgJHtQWVRIT05fUE59LWRlYnVnZ2VyIFwKKyAgICAke1BZVEhPTl9QTn0tZG9jdGVzdCBcCisgICAgJHtQWVRIT05fUE59LWpzb24gXAorICAgICR7UFlUSE9OX1BOfS1wbHVnZ3kgXAorICAgICR7UFlUSE9OX1BOfS1weSBcCisgICAgJHtQWVRIT05fUE59LXNldHVwdG9vbHMgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorICAgICR7UFlUSE9OX1BOfS1hdG9taWN3cml0ZXMgXAorICAgICR7UFlUSE9OX1BOfS1pbXBvcnRsaWItbWV0YWRhdGEgXAorICAgICR7UFlUSE9OX1BOfS1wYXRobGliMiBcCisgICAgJHtQWVRIT05fUE59LXdjd2lkdGggXAorICAgICR7UFlUSE9OX1BOfS1tb3JlLWl0ZXJ0b29scyBcCisgICAgJHtQWVRIT05fUE59LXBhY2thZ2luZyBcCisiCisKK0FMVEVSTkFUSVZFXyR7UE59ICs9ICJweS50ZXN0IHB5dGVzdCIKKworTkFUSVZFX0xJTktfTkFNRVtweXRlc3RdID0gIiR7YmluZGlyfS9weXRlc3QiCitBTFRFUk5BVElWRV9UQVJHRVRbcHl0ZXN0XSA9ICIke2JpbmRpcn0vcHl0ZXN0IgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcHkudGVzdF0gPSAiJHtiaW5kaXJ9L3B5LnRlc3QiCitBTFRFUk5BVElWRV9UQVJHRVRbcHkudGVzdF0gPSAiJHtiaW5kaXJ9L3B5LnRlc3QiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0b21sL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0b21sL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2VjNzExCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRvbWwvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGVzdApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRvbWxfMC4xLjIxLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXRvbWxfMC4xLjIxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwOTAwNWUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dG9tbF8wLjEuMjEuYmIKQEAgLTAsMCArMSwyNSBAQAorU1VNTUFSWSA9ICJBIFRPTUwtMC40LjAgcGFyc2VyL3dyaXRlciBmb3IgUHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9weXRvbWwvIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWNmZmY0MjM2OTliZGFlZjI0MzMxOTMzYWM0ZjU2MDc4IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTU5ZGQzNmE1NTlkZDJhODc2ZTRjMTQ5YzY5ZTk0N2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGVlY2Y3YzhkMGFkY2ZmM2IzNzViMDlmZTQwMzQwN2FhOWI2NDVjNDk5ZTVhYjhjYWM2NzBhYzRhMzVmNjFlNyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzIHB0ZXN0CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSSArPSAiIFwKKwlmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisJJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJY3AgLXJmICR7U30vdGVzdC8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dHovcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXR6L3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Y2VjNzExCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXR6L3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0el8yMDE5LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dHpfMjAxOS4zLmJiCm9sZCBtb2RlIDEwMDc1NQpuZXcgbW9kZSAxMDA2NDQKaW5kZXggMTlhODlkYy4uYzI4YTAxNAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dHpfMjAxOS4zLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl0el8yMDE5LjMuYmIKQEAgLTEsMiArMSwzNiBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcHl0ei5pbmMKK1NVTU1BUlkgPSAiV29ybGQgdGltZXpvbmUgZGVmaW5pdGlvbnMsIG1vZGVybiBhbmQgaGlzdG9yaWNhbCIKK0hPTUVQQUdFID0gImh0dHA6Ly9weXRob25ob3N0ZWQub3JnL3B5dHoiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT00ODc4YTkxNTcwOTIyNWJjZWFiNzM5YmRjMmExOGU4ZCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzIHB0ZXN0CisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjM2Q4NGE0NjVmYzU2YTRlZGQ1MmNjYTg4NzNhYzBkZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMDJjMDZkYjZjZjA5YzEyZGQyNTEzN2U1NjNiMzE3MDBkM2I4MGZjYzRhZDIzYWJiN2EzMTVmMjc4OTgxOWJlIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICR7UFlUSE9OX1BOfS1kb2N0ZXN0IFwKKyAgICAke1BZVEhPTl9QTn0taW8gXAorICAgICR7UFlUSE9OX1BOfS1waWNrbGUgXAorICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUkkgKz0gIiBcCisJZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorCSR7UFlUSE9OX1BOfS1weXRlc3QgXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vcHl0egorCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vcHl0ei90ZXN0cworCWNwIC1yZiAke1N9L3B5dHovdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS9weXR6L3Rlc3RzLworCWNwIC1mICR7U30vUkVBRE1FLnR4dCAke0R9JHtQVEVTVF9QQVRIfS8KKworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXVkZXZfMC4yMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXVkZXZfMC4yMS4wLmJiCmluZGV4IGE2MmQ5NDQuLmYzOTg0N2YgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl1ZGV2XzAuMjEuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dWRldl8wLjIxLjAuYmIKQEAgLTEsMiArMSwyMSBAQAotcmVxdWlyZSBweXRob24tcHl1ZGV2LmluYworU1VNTUFSWSA9ICJBIGxpYnVkZXYgYmluZGluZyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZjRkOWRiN2Q3NzI2MjIxNDRjYTFiZTZiNWQ5MzUzYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwOTRiN2ExMDAxNTAxMTQ3NDhhYWEzYjcwNjYzNDg1ZGQzNjA0NTdhNzA5YmZhYWFmZTVhOTc3MzcxMDMzZjJiIgorCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgc2VkIC1pICIvaW1wb3J0IHB5dWRldi9kIiAke1N9L3NldHVwLnB5CisgICAgc2VkIC1pICJzL3N0cihweXVkZXYuX192ZXJzaW9uX18pLycke1BWfScvZyIgJHtTfS9zZXR1cC5weQorfQorCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCisgICAgJHtQWVRIT05fUE59LW1pc2MgXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorICAgIGxpYnVkZXYgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXVzYl8xLjAuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl1c2JfMS4wLjIuYmIKaW5kZXggMWVjZWRlNy4uNDRjMjRmNCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXVzYl8xLjAuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5dXNiXzEuMC4yLmJiCkBAIC0xLDIgKzEsMTIgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5dXNiLmluYworU1VNTUFSWSA9ICJQeVVTQiBwcm92aWRlcyBVU0IgYWNjZXNzIG9uIHRoZSBQeXRob24gbGFuZ3VhZ2UiCitIT01FUEFHRSA9ICJodHRwOi8vcHl1c2Iuc291cmNlZm9yZ2UubmV0LyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTE2OTFlZDExY2MyYzdhZTkzZTM4M2Y2MGVkNDliMGYiCitERVBFTkRTICs9ICJsaWJ1c2IxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODYyYjU2NDUyYzY0OTQ4Yzc4N2FkOGVmOTQ5ODU5MGIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGU5YjcyY2M0YTQyMDVjYTY0ZmJmMWYzZmZmMzlhMzM1NTEyMTY2YzE1MWFkMTAzZTU1YzgyMjNhYzE0NzM2MiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl5YW1sXzUuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl5YW1sXzUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDcwYWNhNi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5eWFtbF81LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXB5eWFtbC5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl5YW1sXzUuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl5YW1sXzUuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTQyNWI4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXlhbWxfNS4zLmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiUHl0aG9uIHN1cHBvcnQgZm9yIFlBTUwiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnB5eWFtbC5vcmciCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTc2YjRjNjliZmNmODIzMTNiYmRjMDM5M2IwNDQzOGEiCitERVBFTkRTID0gImxpYnlhbWwgJHtQWVRIT05fUE59LWN5dGhvbi1uYXRpdmUgJHtQWVRIT05fUE59IgorCitQWVBJX1BBQ0tBR0UgPSAiUHlZQU1MIgoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhZGJiMGQzMzZiNTA5ZDY0NzJkM2IwOTVhMGYxY2YzMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlOWY0NWJkNWI5MmM3OTc0ZTU5YmNkMmRjYzg2MzFhNmI2Y2MzODBhOTA0NzI1ZmNlN2JjMDg4NzJlNjkxNjE1IgorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHl6bXFfMTcuMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXptcV8xNy4xLjAuYmIKaW5kZXggMDUwZjUzYS4uMjM2OWYwNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXptcV8xNy4xLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weXptcV8xNy4xLjAuYmIKQEAgLTEsMiArMSwyNyBAQAotcmVxdWlyZSBweXRob24tcHl6bXEuaW5jCi1pbmhlcml0IHNldHVwdG9vbHMzCitTVU1NQVJZID0gIlB5em1xIHByb3ZpZGVzIFplcm8gbWVzc2FnZSBxdWV1ZSBhY2Nlc3MgZm9yIHRoZSBQeXRob24gbGFuZ3VhZ2UiCitIT01FUEFHRSA9ICJodHRwOi8vemVyb21xLm9yZy9iaW5kaW5nczpweXRob24iCitMSUNFTlNFID0gIkJTRCAmIExHUEwtMy4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5CU0Q7bWQ1PTExYzY1NjgwZjYzN2MzZGY3ZjU4YmJjOGQxMzNlOTZlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT0xMmM1OTJmYTBiY2ZmZjNmYjA5NzdiMDY2ZTljYjY5ZSIKK0RFUEVORFMgPSAiemVyb21xIgorCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tcHl6bXE6IgorCitTUkNfVVJJICs9ICJmaWxlOi8vY2x1Yi1ycGF0aC1vdXQucGF0Y2giCitTUkNfVVJJW21kNXN1bV0gPSAiYWVjZGZjMzI4MTkzZmJkODFmNmRjMjMyMjgzMTk5NDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjE5OWY3NTNhMjMwZTI2YWVjNTIzOGIwNTE4YjAzNjc4MDcwOGE0Yzg4N2Q0OTQ0NTE5NjgxYTkyMGI5ZGVlNCIKKworaW5oZXJpdCBweXBpIHBrZ2NvbmZpZyBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LW11bHRpcHJvY2Vzc2luZyIKKworRklMRVNfJHtQTn0tZGJnID0rICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS96bXEvYmFja2VuZC9jeXRob24vLmRlYnVnIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgZWNobyBbZ2xvYmFsXSA+ICR7U30vc2V0dXAuY2ZnCisgICAgZWNobyB6bXFfcHJlZml4ID0gJHtTVEFHSU5HX0RJUl9IT1NUfSA+PiAke1N9L3NldHVwLmNmZworICAgIGVjaG8gaGF2ZV9zeXNfdW5faCA9IFRydWUgPj4gJHtTfS9zZXR1cC5jZmcKKyAgICBlY2hvIHNraXBfY2hlY2tfem1xID0gVHJ1ZSA+PiAke1N9L3NldHVwLmNmZworICAgIGVjaG8gbGliem1xX2V4dGVuc2lvbiA9IEZhbHNlID4+ICR7U30vc2V0dXAuY2ZnCisgICAgZWNobyBub19saWJ6bXFfZXh0ZW5zaW9uID0gVHJ1ZSA+PiAke1N9L3NldHVwLmNmZworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yYXZlbl82LjEwLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJhdmVuXzYuMTAuMC5iYgppbmRleCAwZjM0NmU0Li5iMGQxOWMzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJhdmVuXzYuMTAuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJhdmVuXzYuMTAuMC5iYgpAQCAtMSwyICsxLDEzIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1yYXZlbi5pbmMKK1NVTU1BUlkgPSAiUmF2ZW4gaXMgdGhlIGxlZ2FjeSBQeXRob24gY2xpZW50IGZvciBTZW50cnkgKGdldHNlbnRyeS5jb20pIgorREVTQ1JJUFRJT04gPSAiXAorUmF2ZW4gaXMgdGhlIG9mZmljaWFsIGxlZ2FjeSBQeXRob24gY2xpZW50IGZvciBTZW50cnksIG9mZmljaWFsbHkgXAorc3VwcG9ydHMgUHl0aG9uIDIuNuKAkzIuNyAmIDMuM+KAkzMuNywgYW5kIHJ1bnMgb24gUHlQeSBhbmQgR29vZ2xlIEFwcCBFbmdpbmUuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2dldHNlbnRyeS9yYXZlbi1weXRob24iCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWI5YTQ0MTRlMDhmMDU3MWQ1NTE4NDUzMWNlZmMxMzFiIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzY3NmYzMWRhZGZhNjE1MjY0NDRkZDAyNDVjNzhhMzgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2ZhNmRlNmVmYTI0OTNhN2M4Mjc0NzJlOTg0Y2U5YjAyMDc5N2QwZGExNmYxZGI2NzE5N2JjYzIzYzhmYWU1NCIKKworUFlQSV9QQUNLQUdFID0gInJhdmVuIgoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJkZmxpYl80LjIuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmRmbGliXzQuMi4yLmJiCmluZGV4IDY1MTFkZjMuLmY3ZTdmNjMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmRmbGliXzQuMi4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmRmbGliXzQuMi4yLmJiCkBAIC0xLDIgKzEsMTUgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXJkZmxpYi5pbmMKK1NVTU1BUlkgPSAiUkRGTGliIGlzIGEgcHVyZSBQeXRob24gcGFja2FnZSBmb3Igd29ya2luZyB3aXRoIFJERiIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NjhjMWEzYmI2ODdiZDYzYjhlNTU1MmYzZWEyNDk4NDAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MzRmZTM1YjEzYzU4NTdkNTNmYTFhYzVhNDFlY2E2NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkYTFkZjE0NTUyNTU1YzVjNzcxNWQ4Y2U3MWMwOGY0MDRjOTg4YzU4YTFlY2QzODU1MmQwZGE0ZmMyNjEyODBkIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWlzb2RhdGUgXAorICAgICR7UFlUSE9OX1BOfS1weXBhcnNpbmcgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlZGlzXzIuMTAuNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVkaXNfMi4xMC42LmJiCmluZGV4IGIxOTJlZDguLjNhY2MyZmQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVkaXNfMi4xMC42LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVkaXNfMi4xMC42LmJiCkBAIC0xLDIgKzEsMTQgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIGNsaWVudCBmb3IgUmVkaXMga2V5LXZhbHVlIHN0b3JlIgorREVTQ1JJUFRJT04gPSAiVGhlIFB5dGhvbiBpbnRlcmZhY2UgdG8gdGhlIFJlZGlzIGtleS12YWx1ZSBzdG9yZS4iCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9hbmR5bWNjdXJkeS9yZWRpcy1weSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NTFkOWFkNTYyOTlhYjYwYmE3YmU2NWE2MjEwMDRmMjciCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNDgzNDhkOGNmZTBiNWQwYmJhMmY0ZDgzNTAwNWMzYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhMjJjYTk5M2NlYTI5NjJkYmI1ODhmOWYzMGQwMDE1YWM0YWZjYzQ1YmVlMjdkMzk3OGMwZGJlOWU5N2M2YzBmIgorCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXJlZGlzLmluYworCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlZ2V4XzIwMTkuMDguMTkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlZ2V4XzIwMTkuMDguMTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDgwMTk0ZDYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZWdleF8yMDE5LjA4LjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotU1VNTUFSWSA9ICIiCi1IT01FUEFHRSA9ICJodHRwOi8vcHl0aG9uaG9zdGVkLm9yZy9yZWdleCIKLUxJQ0VOU0UgPSAiUFNGIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTUxY2IxMjQxMjlmYTRkMTU3YjRhZWJiNzdkZjczNjI5IgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLQotU1JDX1VSSVttZDVzdW1dID0gImQzMWVjMzkyYWI3NWI4OTQ0MDRkOGRiNzZkYWNkMTkxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU4N2I2MmQ0OGNhMzU5ZDJkNGYwMmQ0ODZmMWYwYWE5YTIwZmJhZjIzYTlkNDE5OGM0YmVkNzJhYjJmNmM4NDkiCi0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZWdleF8yMDIwLjEuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVnZXhfMjAyMC4xLjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmJkYzAzOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVnZXhfMjAyMC4xLjguYmIKQEAgLTAsMCArMSwxMiBAQAorU1VNTUFSWSA9ICIiCitIT01FUEFHRSA9ICJodHRwOi8vcHl0aG9uaG9zdGVkLm9yZy9yZWdleCIKK0xJQ0VOU0UgPSAiUFNGIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTNkOWVkYjg0YjI5M2FiNWE5ZWQ1YmNhZjFiNzY5YWI2IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gIjczYWJjM2Q3ZTkwMmU5NGI0MjgxZmQyNjUyZjVhOTRmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQwZjQyNDMyOGY5ODIyYjAzMjNiM2I2ZjJlNGI5YzkwOTYwYjI0NzQzZDIyMDc2M2M3ZjA3MDcxZTA3NzgzNTEiCisKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0cy1vYXV0aGxpYl8xLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVxdWVzdHMtb2F1dGhsaWJfMS4zLjAuYmIKaW5kZXggMTI5NDY2MS4uZmQ0OGNkMyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0cy1vYXV0aGxpYl8xLjMuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlcXVlc3RzLW9hdXRobGliXzEuMy4wLmJiCkBAIC0xLDMgKzEsOSBAQAotcmVxdWlyZSBweXRob24tcmVxdWVzdHMtb2F1dGhsaWIuaW5jCitMSUNFTlNFID0gIklTQyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIyZDExN2E4NDlkZjEwZDA0N2VkOWI3OTI4MzhlODYzIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMWViY2Q1NWYxYjFiOTI4MTk0MGI0YmMzMzAxMGUyYmEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjQyNjE2MDFhNzFmZDcyMWE4YmQ2ZDdhYTFjYzFkNmE4YTkzYjRhOWY1ZTk2NjI2ZjhlNGQ5MWU4YmVlYWE2YSIKKwogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCiAKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tcmVxdWVzdHMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJlcXVlc3RzXzIuMjIuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVxdWVzdHNfMi4yMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTI0MTBmLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVxdWVzdHNfMi4yMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1yZXF1ZXN0cy5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVxdWVzdHNfMi4yMy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZXF1ZXN0c18yLjIzLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWYzZmI3ZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmVxdWVzdHNfMi4yMy4wLmJiCkBAIC0wLDAgKzEsMjggQEAKK0RFU0NSSVBUSU9OID0gIlB5dGhvbiBIVFRQIGZvciBIdW1hbnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3B5dGhvbi1yZXF1ZXN0cy5vcmciCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xOWI2YmU2NmVkNDYzZDkzZmE4OGMyOWY3ODYwYmNkNyIKKworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vcHl0aG9uLXJlcXVlc3RzOiIKKworU1JDX1VSSVttZDVzdW1dID0gImFiZmRjMjhkYjEwNjViYmQwYmMzMjU5MmFjOWQyN2E2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImIzZjQzZDQ5NmM2ZGFiYTQ0OTNlN2M0MzE3MjJhZWI3ZGJjNjI4OGY1MmE2ZTA0ZTdiNjAyM2IwMjQ3ODE3ZTYiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tZW1haWwgXAorICAgICR7UFlUSE9OX1BOfS1qc29uIFwKKyAgICAke1BZVEhPTl9QTn0tbmRnLWh0dHBzY2xpZW50IFwKKyAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKKyAgICAke1BZVEhPTl9QTn0tcHlhc24xIFwKKyAgICAke1BZVEhPTl9QTn0tcHlvcGVuc3NsIFwKKyAgICAke1BZVEhPTl9QTn0tcHlzb2NrcyBcCisgICAgJHtQWVRIT05fUE59LXVybGxpYjMgXAorICAgICR7UFlUSE9OX1BOfS1jaGFyZGV0IFwKKyAgICAke1BZVEhPTl9QTn0taWRuYSBcCisiCisKK0NWRV9QUk9EVUNUID0gInJlcXVlc3RzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJmYzMzMzktdmFsaWRhdG9yXzAuMS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZmMzMzM5LXZhbGlkYXRvcl8wLjEuMS5iYgppbmRleCBmNGVlOGZlLi4xZjVkOTFkIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJmYzMzMzktdmFsaWRhdG9yXzAuMS4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmZjMzMzOS12YWxpZGF0b3JfMC4xLjEuYmIKQEAgLTEsMiArMSwyNSBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcmZjMzMzOS12YWxpZGF0b3IuaW5jClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorU1VNTUFSWSA9ICJBIHB1cmUgcHl0aG9uIFJGQzMzMzkgdmFsaWRhdG9yIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL25haW1ldHRpL3JmYzMzMzktdmFsaWRhdG9yIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hMjFiMTNiNWE5OTZmMDhmN2UwYjA4OGFhMzhjZTljNiIKKworRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7VEhJU0RJUn0vcHl0aG9uLXJmYzMzMzktdmFsaWRhdG9yOiIKKworU1JDX1VSSVttZDVzdW1dID0gIjlkODg5OTA0MWQ4M2Y5ODE4MGJkZGQ4YjYyZWU3ZTk5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIwYTYwMGQwMWZiYjFmNzkzY2JiNmY0ZWM0ZWJiMjEwNGY0YzllODBkNzRkNWY3ODM1MGI2M2VjYzZjY2NkMDgiCisKK1BZUElfUEFDS0FHRSA9ICJyZmMzMzM5X3ZhbGlkYXRvciIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklfYXBwZW5kID0gIiBcCisgICAgZmlsZTovLzAwMDEtc2V0dXAucHktbW92ZS1weXRlc3QtcnVubmVyLXRvLXRlc3RfcmVxdWlyZW1lbnRzLnBhdGNoIFwKKyIKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tY29yZSBcCisgICAgJHtQWVRIT05fUE59LWRhdGV0aW1lIFwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZmMzOTg2LXZhbGlkYXRvcl8wLjEuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmZjMzk4Ni12YWxpZGF0b3JfMC4xLjEuYmIKaW5kZXggNjQ5MTMwOC4uZWQ2NjhmYiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZmMzOTg2LXZhbGlkYXRvcl8wLjEuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJmYzM5ODYtdmFsaWRhdG9yXzAuMS4xLmJiCkBAIC0xLDIgKzEsMjMgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXJmYzM5ODYtdmFsaWRhdG9yLmluYwpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK1NVTU1BUlkgPSAiUHVyZSBweXRob24gcmZjMzk4NiB2YWxpZGF0b3IiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbmFpbWV0dGkvcmZjMzk4Ni12YWxpZGF0b3IiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWEyMWIxM2I1YTk5NmYwOGY3ZTBiMDg4YWEzOGNlOWM2IgorCitGSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9weXRob24tcmZjMzk4Ni12YWxpZGF0b3I6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDdmNzY1N2I3OTBhYWY2MDExYTFhYjNkODZjNmJlOTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2Q0NGJkZTc5MjFiM2I5ZWMzYWU0ZTNhZGNhMzcwNDM4ZWNjZWJjNjc2NDU2NDQ5YjE0NWQ1MzNiMjQwZDA1NSIKKworUFlQSV9QQUNLQUdFID0gInJmYzM5ODZfdmFsaWRhdG9yIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSV9hcHBlbmQgPSAiIFwKKyAgICBmaWxlOi8vMDAwMS1zZXR1cC5weS1tb3ZlLXB5dGVzdC1ydW5uZXItdG8tdGVzdF9yZXF1aXJlbWVudHMucGF0Y2ggXAorIgorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgIHB5dGhvbjMtY29yZSBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmZjMzk4N18xLjMuOC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcmZjMzk4N18xLjMuOC5iYgppbmRleCBjZDE1MzZiLi44MGUyYWE1IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJmYzM5ODdfMS4zLjguYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yZmMzOTg3XzEuMy44LmJiCkBAIC0xLDIgKzEsMTAgQEAKK1NVTU1BUlkgPSAiUGFyc2luZyBhbmQgdmFsaWRhdGlvbiBvZiBVUklzIChSRkMgMzk4NikgYW5kIElSSXMgKFJGQyAzOTg3KSIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTg7ZW5kbGluZT05O21kNT0yYjcyM2VkZjY3YjJmMzA4OGJjNWUzMzliMWNlZGEyZCIKKworU1JDX1VSSVttZDVzdW1dID0gImI2YzQwMjhhY2RjNzg4YTliYTY5N2UxYzFkNmI4OTZjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQzYzRkMjU3YTU2MGQ1NDRlOTgyNmIzOGJjODFkYjY3Njg5MGM3OWFiOWQ3YWM5MmIzOWM3YTI1M2Q1Y2E3MzMiCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tcmZjMzk4Ny5pbmMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5L2UzMWQ1ZmRmMmVhMDBhYzYzNDllNjQ1ODBhMjA4MTY3ODMwNjRkZDQucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnkvZTMxZDVmZGYyZWEwMGFjNjM0OWU2NDU4MGEyMDgxNjc4MzA2NGRkNC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMWU5N2ZkCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5L2UzMWQ1ZmRmMmVhMDBhYzYzNDllNjQ1ODBhMjA4MTY3ODMwNjRkZDQucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSBlMzFkNWZkZjJlYTAwYWM2MzQ5ZTY0NTgwYTIwODE2NzgzMDY0ZGQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSGlkZWtpIFRha2Vva2EgPGhpZGVraS50YWtlb2thQHNtYXJ0ZnJvZy5jb20+CitEYXRlOiBTdW4sIDI1IEF1ZyAyMDE5IDE5OjI1OjAwICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIFVwZGF0ZSBzZXR1cC5weSBmb3IgcHl0aG9uMy43KyBzdXBwb3J0CisKKy0tLQorIHNldHVwLnB5ICAgICAgICAgICAgICAgICAgICAgfCA5ICsrKysrLS0tLQorIHNyYy9TZXJpYWxMaWJyYXJ5L3ZlcnNpb24ucHkgfCAzICsrKworIDIgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQoraW5kZXggNGMzNDcwNS4uNzBiYjFhZiAxMDA2NDQKKy0tLSBhL3NldHVwLnB5CisrKysgYi9zZXR1cC5weQorQEAgLTEsNiArMSw1IEBACisgIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisgCistZnJvbSBpbXAgaW1wb3J0IGxvYWRfc291cmNlCisgZnJvbSBvcy5wYXRoIGltcG9ydCBhYnNwYXRoLCBkaXJuYW1lLCBqb2luCisgZnJvbSBzeXMgaW1wb3J0IHBsYXRmb3JtCisgCitAQCAtMTgsOSArMTcsMTEgQEAKKyAKKyAKKyBDVVJESVIgPSBkaXJuYW1lKGFic3BhdGgoX19maWxlX18pKQorLVZFUlNJT04gPSBsb2FkX3NvdXJjZSgKKy0gICAgJ3ZlcnNpb24nLCAndmVyc2lvbicsCistICAgIG9wZW4oam9pbihDVVJESVIsICdzcmMnLCAnU2VyaWFsTGlicmFyeScsICd2ZXJzaW9uLnB5JykpKS5WRVJTSU9OCisrCisrd2l0aCBvcGVuKGpvaW4oQ1VSRElSLCAnc3JjJywgJ1NlcmlhbExpYnJhcnknLCAndmVyc2lvbi5weScpKSBhcyBmOgorKyAgICBleGVjKGYucmVhZCgpKQorKyAgICBWRVJTSU9OID0gZ2V0X3ZlcnNpb24oKQorKworIFJFQURNRSA9IG9wZW4oam9pbihDVVJESVIsICdSRUFETUUucnN0JykpLnJlYWQoKQorIENMQVNTSUZJRVJTID0gJ1xuJy5qb2luKAorICAgICBtYXAoJyA6OiAnLmpvaW4sIFsKK2RpZmYgLS1naXQgYS9zcmMvU2VyaWFsTGlicmFyeS92ZXJzaW9uLnB5IGIvc3JjL1NlcmlhbExpYnJhcnkvdmVyc2lvbi5weQoraW5kZXggNmNlNjVjNC4uMTk4MzFiYyAxMDA2NDQKKy0tLSBhL3NyYy9TZXJpYWxMaWJyYXJ5L3ZlcnNpb24ucHkKKysrKyBiL3NyYy9TZXJpYWxMaWJyYXJ5L3ZlcnNpb24ucHkKK0BAIC0xICsxLDQgQEAKKyBWRVJTSU9OID0gKDAsIDMsIDEpCisrCisrZGVmIGdldF92ZXJzaW9uKCk6CisrICAgIHJldHVybiBWRVJTSU9OOwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5XzAuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5XzAuMy4xLmJiCmluZGV4IDQ0MGY2OWMuLmI2ZGU0MmYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcm9ib3RmcmFtZXdvcmstc2VyaWFsbGlicmFyeV8wLjMuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnlfMC4zLjEuYmIKQEAgLTEsMiArMSwyMCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLXJlcXVpcmUgcHl0aG9uLXJvYm90ZnJhbWV3b3JrLXNlcmlhbGxpYnJhcnkuaW5jCitTVU1NQVJZID0gIlJvYm90IEZyYW1ld29yayB0ZXN0IGxpYnJhcnkgZm9yIHNlcmlhbCBjb25uZWN0aW9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dob3NheXNuaS9yb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5IgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTg7ZW5kbGluZT04O21kNT03MTQ1ZjdjZGQyNjMzNTliNjJkMzQyYTAyZjAwNTUxNSIKKworU1JDX1VSSVttZDVzdW1dID0gImI3Yzk1NjVkNTRjMzBkZjdjZDNmM2MwZTI5YWRmZmEzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI1NmFkNjBmYzBiN2RmNGJlNDRkODJjMzAyZjVlZDhmYWQ0OTM1Y2RhOTllNGI0NTk0MmUzYzg4MTc5ZDFlMTkiCisKK1BZUElfUEFDS0FHRSA9ICJyb2JvdGZyYW1ld29yay1zZXJpYWxsaWJyYXJ5IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSSArPSAiZmlsZTovL2UzMWQ1ZmRmMmVhMDBhYzYzNDllNjQ1ODBhMjA4MTY3ODMwNjRkZDQucGF0Y2giCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1weXNlcmlhbCBcCisgICAgJHtQWVRIT05fUE59LXJvYm90ZnJhbWV3b3JrIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yb2JvdGZyYW1ld29ya18zLjAuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcm9ib3RmcmFtZXdvcmtfMy4wLjQuYmIKaW5kZXggOGY2MTNjMy4uMDYyOGY5MiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1yb2JvdGZyYW1ld29ya18zLjAuNC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXJvYm90ZnJhbWV3b3JrXzMuMC40LmJiCkBAIC0xLDIgKzEsMjYgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXJvYm90ZnJhbWV3b3JrLmluYworU1VNTUFSWSA9ICJBIFB5dGhvbiBnZW5lcmljIHRlc3QgYXV0b21hdGlvbiBmcmFtZXdvcmsiCitERVNDUklQVElPTiA9ICJHZW5lcmljIG9wZW4gc291cmNlIHRlc3QgYXRvbWF0aW9uIGZyYW1ld29yayBmb3IgYWNjZXB0YW5jZVwKK3Rlc3RpbmcgYW5kIGFjY2VwdGFuY2UgdGVzdC1kcml2ZW4gZGV2ZWxvcG1lbnQgKEFUREQpLiBJdCBoYXMgZWFzeS10by11c2VcCit0YWJ1bGFyIHRlc3QgZGF0YSBzeW50YXggYW5kIGl0IHV0aWxpemVzIHRoZSBrZXl3b3JkLWRyaXZlbiB0ZXN0aW5nIGFwcHJvYWNoLlwKK0l0cyB0ZXN0aW5nIGNhcGFiaWxpdGllcyBjYW4gYmUgZXh0ZW5kZWQgYnkgdGVzdCBsaWJyYXJpZXMgaW1wbGVtZW50ZWQgZWl0aGVyXAord2l0aCBQeXRob24gb3IgSmF2YSwgYW5kIHVzZXJzIGNhbiBjcmVhdGUgbmV3IGhpZ2hlci1sZXZlbCBrZXl3b3JkcyBmcm9tXAorZXhpc3Rpbmcgb25lcyB1c2luZyB0aGUgc2FtZSBzeW50YXggdGhhdCBpcyB1c2VkIGZvciBjcmVhdGluZyB0ZXN0IGNhc2VzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9yb2JvdGZyYW1ld29yay5vcmciCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiZWU3NTM0MTU2NDVmZjQ4MzFmZjBkMzY2YTA0NjdmZTciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWI5NDI1N2NiZDg0OGRmY2E3MTQ4ZTA5MmQyMzNhMTI4NTNjYzdlODQwY2U4MjMxYWY5Y2JiNWU3ZjUxYWE0NyIKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKKyAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKKyAgICAke1BZVEhPTl9QTn0teG1sIFwKKyAgICAke1BZVEhPTl9QTn0tZGlmZmxpYiBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisgICAgJHtQWVRIT05fUE59LWh0bWwgXAorICAgICR7UFlUSE9OX1BOfS1kb2N1dGlscyBcCisgICAgJHtQWVRIT05fUE59LWN0eXBlcyBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2NyeXB0LzAwMDEtcHktc2NyeXB0LXJlbW92ZS10aGUtaGFyZC1jb2RlZC1pbmNsdWRlLXBhdGhzLnBhdGNoIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY3J5cHQvMDAwMS1weS1zY3J5cHQtcmVtb3ZlLXRoZS1oYXJkLWNvZGVkLWluY2x1ZGUtcGF0aHMucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zY3J5cHQvMDAwMS1weS1zY3J5cHQtcmVtb3ZlLXRoZS1oYXJkLWNvZGVkLWluY2x1ZGUtcGF0aHMucGF0Y2gKcmVuYW1lIHRvIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NyeXB0LzAwMDEtcHktc2NyeXB0LXJlbW92ZS10aGUtaGFyZC1jb2RlZC1pbmNsdWRlLXBhdGhzLnBhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjcnlwdC9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjcnlwdC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDBjMjg0NwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NyeXB0L3J1bi1wdGVzdApAQCAtMCwwICsxLDIgQEAKKyMhL2Jpbi9zaAorcHl0ZXN0CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjcnlwdF8wLjguNi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NyeXB0XzAuOC42LmJiCmluZGV4IGY0OTY2NTMuLjc1ODhmYzUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NyeXB0XzAuOC42LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NyeXB0XzAuOC42LmJiCkBAIC0xLDMgKzEsMjQgQEAKLWluaGVyaXQgc2V0dXB0b29sczMgcHl0aG9uMy1kaXIKLXJlcXVpcmUgcHl0aG9uLXNjcnlwdC5pbmMKK0RFU0NSSVBUSU9OID0gIkJpbmRpbmdzIGZvciB0aGUgc2NyeXB0IGtleSBkZXJpdmF0aW9uIGZ1bmN0aW9uIGxpYnJhcnkiCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE2OGZmNzU0MTdmNzVhODNlNjNjODg3NTI5MmQ0NGRjIgorSE9NRVBBR0U9Imh0dHBzOi8vYml0YnVja2V0Lm9yZy9taGFsbGluL3B5LXNjcnlwdC9vdmVydmlldyIKIAorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtcHktc2NyeXB0LXJlbW92ZS10aGUtaGFyZC1jb2RlZC1pbmNsdWRlLXBhdGhzLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYWU4ZTMyNjNhYTMxYjA0MGMxZjljN2YxZTE4NDNhNTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjgyMzliMmQ0N2ZhMWQ0MGJjMjdlZmQyMzFkYzcwODM2OTVkMTBjMWMyYWM1MWE5OTM4MDM2MDc0MWUwMzYyZCIKKworaW5oZXJpdCBweXBpIHB0ZXN0IHNldHVwdG9vbHMzCisKK1NSQ19VUkkgKz0gIiBcCisgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1weXRlc3QgXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBjcCAtcmYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZG5vdGlmeV8wLjMuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2Rub3RpZnlfMC4zLjIuYmIKaW5kZXggMzc3YWYxMi4uMjIxYThjOCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZG5vdGlmeV8wLjMuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNkbm90aWZ5XzAuMy4yLmJiCkBAIC0xLDIgKzEsMTggQEAKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iYjQyNDIvc2Rub3RpZnkiCitTVU1NQVJZID0gIkEgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2Ygc3lzdGVtZCdzIHNlcnZpY2Ugbm90aWZpY2F0aW9uIHByb3RvY29sIChzZF9ub3RpZnkpIgorCitERVNDUklQVElPTiA9ICJcCisgIHNkbm90aWZ5IGlzIGEgcHVyZSBQeXRob24gaW1wbGVtZW50YXRpb24gb2YgdGhlIHN5c3RlbWQgc2Rfbm90aWZ5IHByb3RvY29sLiBcCisgIFRoaXMgcHJvdG9jb2wgY2FuIGJlIHVzZWQgdG8gaW5mb3JtIHN5c3RlbWQgYWJvdXQgc2VydmljZSBzdGFydC11cCBjb21wbGV0aW9uLCBcCisgIHdhdGNoZG9nIGV2ZW50cywgYW5kIG90aGVyIHNlcnZpY2Ugc3RhdHVzIGNoYW5nZXMuIFwKKyAgVGh1cywgdGhpcyBwYWNrYWdlIGNhbiBiZSB1c2VkIHRvIHdyaXRlIHN5c3RlbSBzZXJ2aWNlcyBpbiBQeXRob24gdGhhdCBwbGF5IG5pY2VseSB3aXRoIHN5c3RlbWQuIFwKKyAgIgorCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWNjNTcyY2NjNGIxOGE0YjdkMTNiZTVkMDFiYzgyMTNlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzQ5ZGRjYTFjNzBiZTE2OTdmZWNjNDQzZmIxZmRiMTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzM5NzdmYzc0NmIzNmNjNDExODRkZDQzYzNmZTgxMzIzZTdiOGIwNmMyYmIwODI2YzRmNTlhMjBjNTZiYjlmMSIKKwogaW5oZXJpdCBzZXR1cHRvb2xzMyBweXBpCi1yZXF1aXJlIHB5dGhvbi1zZG5vdGlmeS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2VtdmVyXzIuOC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZW12ZXJfMi44LjEuYmIKaW5kZXggNzc5MjVhZS4uYTQ2OWIyMyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZW12ZXJfMi44LjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZW12ZXJfMi44LjEuYmIKQEAgLTEsMiArMSwxMiBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tc2VtdmVyLmluYworREVTQ1JJUFRJT04gPSAiUHl0aG9uIG1vZHVsZSBmb3IgU2VtYW50aWMgVmVyc2lvbmluZyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9rLWJ4L3B5dGhvbi1zZW12ZXIiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9rLWJ4L3B5dGhvbi1zZW12ZXIvaXNzdWVzIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PWU5MTBiMzViMGVmNGUxZjY2NWI5YTc1ZDZhZmI3NzA5IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZGM1NzliYTlkMGJiMjEzN2JhZDUzMjRkNGJkYjdlNDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWIwOTAxMGE2NmQ5YTM4MzcyMTFiYjdhZTVhMjBkMTBiYTg4ZjhjYjQ5ZTkyY2IxMzlhNjllZjkwZDUwNjBkOCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2VudHJ5LXNka18wLjE0LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNlbnRyeS1zZGtfMC4xNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5NGUxZjkKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNlbnRyeS1zZGtfMC4xNC4wLmJiCkBAIC0wLDAgKzEsMTIgQEAKK1NVTU1BUlkgPSAiVGhlIG5ldyBQeXRob24gU0RLIGZvciBTZW50cnkuaW8iCitERVNDUklQVElPTiA9ICJUaGlzIGlzIHRoZSBuZXh0IGxpbmUgb2YgdGhlIFB5dGhvbiBTREsgXAorZm9yIFNlbnRyeSwgaW50ZW5kZWQgdG8gcmVwbGFjZSB0aGUgcmF2ZW4gcGFja2FnZSBvbiBQeVBJLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9nZXRzZW50cnkvc2VudHJ5LXB5dGhvbiIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MGM3OWY4ZDNjOTFmYzg0NzM1MGVmZDI4YmZlMGEzNDEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZDVjYzQzYzhhMTc4MTM0YjczOWM3NzQzOWQxZjI2YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4ZTJkMzhkYzU4ZGM5OTIyODA0ODdlNTUzZWMzZDk3YTQyNGU0ZDE3OWY0ZmFkODAyZWYzYjA4ZjY0Y2NmNGQ4IgorCitQWVBJX1BBQ0tBR0UgPSAic2VudHJ5LXNkayIKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZW50cnktc2RrXzAuNy4xNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2VudHJ5LXNka18wLjcuMTQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0MGRmOTMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZW50cnktc2RrXzAuNy4xNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tc2VudHJ5LXNkay5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2VycGVudC9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNlcnBlbnQvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQwYzI4NDcKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNlcnBlbnQvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMiBAQAorIyEvYmluL3NoCitweXRlc3QKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2VycGVudF8xLjI4LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXJwZW50XzEuMjguYmIKaW5kZXggMWUwNGRlZi4uYWYyZDRhYSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXJwZW50XzEuMjguYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXJwZW50XzEuMjguYmIKQEAgLTEsMiArMSwyNyBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tc2VycGVudC5pbmMKK1NVTU1BUlkgPSAiU2VyaWFsaXphdGlvbiBiYXNlZCBvbiBhc3QubGl0ZXJhbF9ldmFsIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9NWNkNzA2MzJiNmNkYjk2ZGY5ZGRhZjZhNGNlNjE5ZTYiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxNWVmOGI2N2M3NmE2ZDE5YmFjOWMxNjczMWExZTYyYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMzA2MzM2Y2EwOWFhMzhlNTI2ZjNiMDNjYWI1OGViN2U0NWFmMDk5ODEyNjcyMzMxNjdiY2YzYmZkNjQzNmFiIgorCitpbmhlcml0IHB5cGkgcHRlc3Qgc2V0dXB0b29sczMKKworU1JDX1VSSSArPSAiIFwKKyAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXB5dGVzdCBcCisgICAgJHtQWVRIT05fUE59LXB5dHogXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBjcCAtcmYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworfQorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1uZXRjbGllbnQgXAorICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKKyIgICAgCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHMtc2NtXzMuMy4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzLXNjbV8zLjMuMy5iYgppbmRleCA1YmY1OTgzLi5mOGQyOGIzIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHMtc2NtXzMuMy4zLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29scy1zY21fMy4zLjMuYmIKQEAgLTEsMiArMSwxNCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tc2V0dXB0b29scy1zY20uaW5jCitTVU1NQVJZID0gInRoZSBibGVzc2VkIHBhY2thZ2UgdG8gbWFuYWdlIHlvdXIgdmVyc2lvbnMgYnkgc2NtIHRhZ3MiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ODIyNzE4MDEyNjc5N2EwMTQ4Zjk0ZjQ4M2YzZTE0ODkiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MGIyMTk5MDgyZmU4MDhkMDMyZWMxNzEwYzlkNzQxNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiZDI1ZTFmYjVlNGQ2MDNkY2Y0OTBmMWZkZTQwZmI0YzU5NWIzNTc3OTU2NzRjM2U1Y2I3ZjYyMTdhYjM5ZWE1IgorCitQWVBJX1BBQ0tBR0UgPSAic2V0dXB0b29sc19zY20iCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gIiR7UFlUSE9OX1BOfS1weSAke1BZVEhPTl9QTn0tc2V0dXB0b29scyAke1BZVEhPTl9QTn0tZGVidWdnZXIgJHtQWVRIT05fUE59LWpzb24iCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiJHtQWVRIT05fUE59LXNldHVwdG9vbHMtbmF0aXZlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2hfMS4xMi4xNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2hfMS4xMi4xNC5iYgppbmRleCA4MTJiZDRiLi5iNzg1ODczIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNoXzEuMTIuMTQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaF8xLjEyLjE0LmJiCkBAIC0xLDUgKzEsMjQgQEAKLXJlcXVpcmUgcHl0aG9uLXNoLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzMworU1VNTUFSWSA9ICJQeXRob24gc3VicHJvY2VzcyByZXBsYWNlbWVudCIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbW9mZmF0L3NoIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NTMxNzA5NDI5MjI5NmYwMzQwNWY1OWFlNWY2NTQ0YjYiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJhODM1MWFlZjI1ZDI1ZjcwN2MxN2UwYTdhNjI4MDI1MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNTJiZjU4MzNlZDAxYzdiNWM1ZmI3M2E3ZjcxYjNkOThkNDhlOWI5Yjg3NjQyMzYyMzdiZGM3ZWNhZTg1MGZjIgorCitQWVBJX1BBQ0tBR0UgPSAic2giCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwogCiBSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tY29kZWNzIFwKKyAgICAke1BZVEhPTl9QTn0tY29yZSBcCisgICAgJHtQWVRIT05fUE59LWlvIFwKKyAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgJHtQWVRIT05fUE59LXJlc291cmNlIFwKKyAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAorICAgICR7UFlUSE9OX1BOfS10ZXJtaW5hbCBcCisgICAgJHtQWVRIT05fUE59LXRlc3RzIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tdW5peGFkbWluIFwKICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2lqYXhfMC4zLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpamF4XzAuMy4yLmJiCmluZGV4IDI0ZTY4MzMuLjlhMjhmYzUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2lqYXhfMC4zLjIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaWpheF8wLjMuMi5iYgpAQCAtMSw0ICsxLDEwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1zaWpheC5pbmMKK0RFU0NSSVBUSU9OID0gIkFuIGVhc3kgdG8gdXNlIEFKQVggbGlicmFyeSBmb3IgUHl0aG9uIGJhc2VkIG9uIGpRdWVyeS5hamF4IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NwYW50YWxlZXYvc2lqYXgtcHl0aG9uIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCiAKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMWIwNjJmNGE4YjJhYWQ5NWM4N2U3YzA5ZTVkYWY1YTZiMGQwZjA4YWJmOWVmZTVmOTFhMDA3NWM2YmU3YzBkIgpcIE5vIG5ld2xpbmUgYXQgZW5kIG9mIGZpbGUKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0xNmUyMTNkNzU2NDFhMzkyNDc4ZGY1MGNmMDg0MTkwMyIKKworU1JDX1VSSVtzaGEyNTZzdW1dID0gIjExYjA2MmY0YThiMmFhZDk1Yzg3ZTdjMDllNWRhZjVhNmIwZDBmMDhhYmY5ZWZlNWY5MWEwMDc1YzZiZTdjMGQiCisKK1BZUElfUEFDS0FHRSA9ICJTaWpheCIKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaW1wbGVldmFsL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2ltcGxlZXZhbC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM4NWQ2OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2ltcGxlZXZhbC9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0IC1vIGxvZ19jbGk9dHJ1ZSAtbyBsb2dfY2xpX2xldmVsPUlORk8gfCBzZWQgLWUgJ3MvXFsuLi4lXF0vL2cnfCBzZWQgLWUgJ3MvUEFTU0VEL1BBU1MvZyd8IHNlZCAtZSAncy9GQUlMRUQvRkFJTC9nJ3xzZWQgLWUgJ3MvU0tJUEVEL1NLSVAvZyd8IGF3ayAne2lmICgkTkY9PSJQQVNTIiB8fCAkTkY9PSJGQUlMIiB8fCAkTkY9PSJTS0lQIiB8fCAkTkY9PSJYRkFJTCIgfHwgJE5GPT0iWFBBU1MiKXtwcmludGYgIiVzOiAlc1xuIiwgJE5GLCAkMH1lbHNle3ByaW50fX0nfCBhd2sgJ3tpZiAoJE5GPT0iUEFTUyIgfHwgJE5GPT0iRkFJTCIgfHwgJE5GPT0iU0tJUCIgfHwgJE5GPT0iWEZBSUwiIHx8ICRORj09IlhQQVNTIikgeyRORj0iIjtwcmludCAkMH1lbHNle3ByaW50fX0nCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpbXBsZWV2YWxfMC45LjEwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaW1wbGVldmFsXzAuOS4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xY2FjZjlhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaW1wbGVldmFsXzAuOS4xMC5iYgpAQCAtMCwwICsxLDIzIEBACitTVU1NQVJZID0gIkEgc2ltcGxlLCBzYWZlIHNpbmdsZSBleHByZXNzaW9uIGV2YWx1YXRvciBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3NpbXBsZWV2YWwvIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT1kYzkyNzc0ODJlZmZlNTliNzM0YjAwNGNiY2MxZmVlNyIKKworU1JDX1VSSVttZDVzdW1dID0gImYxNzVmYzEyZDQwODQ4N2NhMjZmYTM5MDVlMGE2NjkxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY5MjA1NTQ4OGMyODY0NjM3ZjZjMmVkYjVmYTQ4MTc1OTc4YTJhMDczMTgwMDllN2NmMDNjOTc5MGNhMTdiZWEiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMyBwdGVzdAorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUkkgKz0gIiBcCisJZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorCSR7UFlUSE9OX1BOfS1weXRlc3QgXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwIC1mICR7U30vdGVzdF9zaW1wbGVldmFsLnB5ICR7RH0ke1BURVNUX1BBVEh9LworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaW1wbGVqc29uXzMuMTcuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2ltcGxlanNvbl8zLjE3LjAuYmIKaW5kZXggMzhmNDA2Yy4uYjc2YWU1MiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaW1wbGVqc29uXzMuMTcuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpbXBsZWpzb25fMy4xNy4wLmJiCkBAIC0xLDIgKzEsMjUgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXNpbXBsZWpzb24uaW5jCitTVU1NQVJZID0gIlNpbXBsZSwgZmFzdCwgZXh0ZW5zaWJsZSBKU09OIGVuY29kZXIvZGVjb2RlciBmb3IgUHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cDovL2NoZWVzZXNob3AucHl0aG9uLm9yZy9weXBpL3NpbXBsZWpzb24iCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWM2MzM4ZDdhYmQzMjFjMGI1MGEyYTU0N2U0NDFjNTJlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiOGE1ZWQ3NWMzNjdiOTBmZWRjM2Q2ODU3NDJlMmExYzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmI0YjJiNzM4YjNiOTk4MTlhMTdmZWFmMTE4MjY1ZDA3NTNkNTUzNjA0OWVhNTcwYjNjNDNiNTFjNDcwMWU4MSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWlvIFwKKyAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKKyAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisiCisKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKK1JERVBFTkRTXyR7UE59LXRlc3RzID0gIiR7UE59ICR7UFlUSE9OX1BOfS11bml0dGVzdCIKK0ZJTEVTXyR7UE59LXRlc3RzKz0gIiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2ltcGxlanNvbi90ZXN0cyBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vc2ltcGxlanNvbi90b29sLnB5KiBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2xpcC1kYnVzXzAuNi41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zbGlwLWRidXNfMC42LjUuYmIKaW5kZXggMjQwMmE3YS4uMjMwOTlmMyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zbGlwLWRidXNfMC42LjUuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zbGlwLWRidXNfMC42LjUuYmIKQEAgLTEsMiArMSwzNCBAQAorU1VNTUFSWSA9ICJDb252ZW5pZW5jZSBmdW5jdGlvbnMgZm9yIGRidXMgc2VydmljZXMgaW4gUHl0aG9uIDIueCIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ucGhpbGlwcC9weXRob24tc2xpcCIKK0RFU0NSSVBUSU9OID0gIlwKK1RoZSBTaW1wbGUgTGlicmFyeSBmb3IgUHl0aG9uIDIueCBwYWNrYWdlcyBjb250YWluIG1pc2NlbGxhbmVvdXMgY29kZSBmb3IgXAorY29udmVuaWVuY2UsIGV4dGVuc2lvbiBhbmQgd29ya2Fyb3VuZCBwdXJwb3Nlcy4gXAorXAorVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHNsaXAuZGJ1cy5zZXJ2aWNlLk9iamVjdCwgd2hpY2ggaXMgYSBkYnVzLnNlcnZpY2UuT2JqZWN0IFwKK2Rlcml2YXRpdmUgdGhhdCBlbmRzIGl0c2VsZiBhZnRlciBhIGNlcnRhaW4gdGltZSB3aXRob3V0IGJlaW5nIHVzZWQgYW5kL29yIGlmIFwKK3RoZXJlIGFyZSBubyBjbGllbnRzIGFueW1vcmUgb24gdGhlIG1lc3NhZ2UgYnVzLCBhcyB3ZWxsIGFzIGNvbnZlbmllbmNlIFwKK2Z1bmN0aW9ucyBhbmQgZGVjb3JhdG9ycyBmb3IgaW50ZWdyYXRpbmcgYSBkYnVzIHNlcnZpY2Ugd2l0aCBQb2xpY3lLaXQuIgorCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTU3NGM2OTY1YWU1ZjU4M2U1NTg4MGUzOTdmYmIwMTgiCitTUkNOQU1FID0gInB5dGhvbi1zbGlwIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ucGhpbGlwcC8ke1NSQ05BTUV9L3JlbGVhc2VzL2Rvd25sb2FkLyR7U1JDTkFNRX0tJHtQVn0vJHtTUkNOQU1FfS0ke1BWfS50YXIuYnoyIgorUyA9ICIke1dPUktESVJ9LyR7U1JDTkFNRX0tJHtQVn0iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyOGFlNWY5Mzg1MzQ2NmM0NGVjOTY3MDZiYTJhMWViNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNzI2YzA4NmYwZGQ5M2EwYWM3YTAxNzZmMzgzYTEyYWY5MWI2NjU3Yjc4YTMwMWUzZjViMjVkOWY4ZDRkMTBiIgorCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisgICAgc2VkIC1lICdzL0BWRVJTSU9OQC8ke1BWfS9nJyAke1N9L3NldHVwLnB5LmluID4gJHtTfS9zZXR1cC5weQorfQorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1zaXggXAorIgorIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTg0NzEzLworIyBweXRob24tbmF0aXZlL3B5dGhvbjogY2FuJ3Qgb3BlbiBmaWxlICdzZXR1cC5weSc6IFtFcnJubyAyXSBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CitDTEVBTkJST0tFTiA9ICIxIgorCiBpbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1zbGlwLWRidXMuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNtYnVzMl8wLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc21idXMyXzAuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlZTcwYTAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNtYnVzMl8wLjMuMC5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIkRyb3AtaW4gcmVwbGFjZW1lbnQgZm9yIHNtYnVzLWNmZmkvc21idXMtcHl0aG9uIGluIHB1cmUgUHl0aG9uIgorREVTQ1JJUFRJT04gPSAic21idXMyIGlzIGEgZHJvcC1pbiByZXBsYWNlbWVudCBmb3Igc21idXMtY2ZmaS9zbWJ1cy1weXRob24gaW4gcHVyZSBQeXRob24iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20va3BsaW5kZWdhYXJkL3NtYnVzMiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiZDVlZDVhY2M4ODliNDc3MGE4NGNjOTMyODUzZWQyMGEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjEwZTY2ZWViZTRkMGIxZmU4MzZiM2VjMjc1MTg0MTk0MmUxYzQ5MThjMGI0MjliMjBhMGUyMGEyMjIyMjhiNCIKKworQ0xFQU5CUk9LRU4gPSAiMSIKKworUFlQSV9QQUNLQUdFID0gInNtYnVzMiIKKworUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LWN0eXBlcyAke1BZVEhPTl9QTn0tZmNudGwiCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgICAgICR7UFlUSE9OX1BOfS1jdHlwZXMgXAorICAgICAgICAke1BZVEhPTl9QTn0tZmNudGwgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zbWJ1c180LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNtYnVzXzQuMS5iYgppbmRleCBiMzU3YmNkLi4xYmU3NzM5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNtYnVzXzQuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNtYnVzXzQuMS5iYgpAQCAtMSwyICsxLDEzIEBACitTVU1NQVJZID0gIlNldCBvZiBpMmMgdG9vbHMgZm9yIGxpbnV4IC0gUHl0aG9uIG1vZHVsZSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zbWJ1c21vZHVsZS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MTg7bWQ1PTQ2ZTQyNGZiMDQ1OTAxYWIyNWUwZjkyYzI4YzgwMDU1IgorUFIgPSAicjEiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS91dGlscy9pMmMtdG9vbHMvaTJjLXRvb2xzLSR7UFZ9LnRhci5neiAiCitTUkNfVVJJW21kNXN1bV0gPSAiMzUzNjIzN2E2YjUxZmIxMGNhYWNkYzNiOGE0OTYyMzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWY4Zjc3YWZjNzBlN2RiZmQxMTcxYmZlYWU4N2E4YTdmMTAwNzQ4MjkzNzBjZThkOWNjZDU4NWEwMTRlMDA3MyIKKworREVQRU5EUyArPSAiaTJjLXRvb2xzIgorCitTID0gIiR7V09SS0RJUn0vaTJjLXRvb2xzLSR7UFZ9L3B5LXNtYnVzLyIKIGluaGVyaXQgZGlzdHV0aWxzMwotcmVxdWlyZSBweXRob24tc21idXMuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNvY2tldGlvXzQuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zb2NrZXRpb180LjMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZmNTkwYi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNvY2tldGlvXzQuMy4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi0KLVBBQ0tBR0VDT05GSUcgPz0gImFzeW5jaW9fY2xpZW50IGNsaWVudCIKLXJlcXVpcmUgcHl0aG9uLXNvY2tldGlvLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zb2NrZXRpb180LjUuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc29ja2V0aW9fNC41LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTRlY2JiYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc29ja2V0aW9fNC41LjEuYmIKQEAgLTAsMCArMSwyOCBAQAorU1VNTUFSWSA9ICJTb2NrZXQuSU8gc2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL21pZ3VlbGdyaW5iZXJnL3B5dGhvbi1zb2NrZXRpby8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00MmQwYTllNzI4OTc4ZjBlZWI3NTljM2JlOTE1MzZiOCIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1BZUElfUEFDS0FHRSA9ICJweXRob24tc29ja2V0aW8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZGJkMGEyZWJjZjM0NjMyZjY3MzI3YjY2NWNiYjk1MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxNDliOThjMzNmOGMzZDA5MjczZmI0ZWJlYjgzNzgxZTRkYzk0MTFiNTZiMjdkOWYwNThiZWMxYmQxZWQ3NGI3IgorCitQQUNLQUdFQ09ORklHID89ICJhc3luY2lvX2NsaWVudCBjbGllbnQiCitQQUNLQUdFQ09ORklHW2FzeW5jaW9fY2xpZW50XSA9ICIsLCwke1BZVEhPTl9QTn0tYWlvaHR0cCAke1BZVEhPTl9QTn0td2Vic29ja2V0cyIKK1BBQ0tBR0VDT05GSUdbY2xpZW50XSA9ICIsLCwke1BZVEhPTl9QTn0tcmVxdWVzdHMgJHtQWVRIT05fUE59LXdlYnNvY2tldC1jbGllbnQiCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgJHtQWVRIT05fUE59LWVuZ2luZWlvIFwKKyAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgJHtQWVRIT05fUE59LW1hdGggXAorICAgICR7UFlUSE9OX1BOfS1waWNrbGUgXAorICAgICR7UFlUSE9OX1BOfS1qc29uIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyAgICAke1BZVEhPTl9QTn0tYXR0cnMgXAorICAgICIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc291cHNpZXZlXzEuOS40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zb3Vwc2lldmVfMS45LjQuYmIKaW5kZXggMWI5NjYzNi4uZGY2OWUwMCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zb3Vwc2lldmVfMS45LjQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zb3Vwc2lldmVfMS45LjQuYmIKQEAgLTEsMiArMSwxMiBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tc291cHNpZXZlLmluYworU1VNTUFSWSA9ICJDU1Mgc2VsZWN0b3IgbGlicmFyeSBmb3IgcHl0aG9uLWJlYXV0aWZ1bHNvdXA0IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ZhY2VsZXNzdXNlci9zb3Vwc2lldmUiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5tZDttZDU9NWE2ZmQzYjBjMjRmYzVhMDQxYTNkMWJiYjIyYzgxYjUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0M2Q4ZWEyMGM1ODQ5NDQ0NmFhNjViYTVjYzYzMjBmZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MDVmODlhZDVmZGJmZWZlMzBjZGMyOTMzMDM2NjVlZmYyZDE4ODg2NWQ0ZGJlNGViNTEwYmJhMWVkZmJmY2UzIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcGVha2xhdGVyXzEuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3BlYWtsYXRlcl8xLjMuYmIKaW5kZXggYWE0ZjY5OS4uNTk0OGRjOCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcGVha2xhdGVyXzEuMy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNwZWFrbGF0ZXJfMS4zLmJiCkBAIC0xLDIgKzEsOSBAQAorREVTQ1JJUFRJT04gPSAiTWVkaWEgYXNzZXQgbWFuYWdlbWVudCBmb3IgUHl0aG9uLCB3aXRoIGdsdWUgY29kZSBmb3IgdmFyaW91cyBmcmFtZXdvcmtzIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iODEwNzcwMDc1YTI5YmY0NGI5NjYwNzQ0MGU3YzgwMSIKKworU1JDX1VSSVttZDVzdW1dID0gImU4ZDVkYmUzNmU1M2Q1YTM1Y2ZmMjI3ZTc5NWU4YmJmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU5ZmVhMzM2ZDBlZWQzOGMxZjBiZjMxODFlZTEyMjJkMGVmNDVmM2E5ZGQzNGViZTY1ZTZiZmZmZGQ2YTY1YTkiCisKK1BZUElfUEFDS0FHRSA9ICJzcGVha2xhdGVyIgogaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1zcGVha2xhdGVyLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcGVlZHRlc3QtY2xpXzIuMS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcGVlZHRlc3QtY2xpXzIuMS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE5MDFiYmEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNwZWVkdGVzdC1jbGlfMi4xLjIuYmIKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJDb21tYW5kIGxpbmUgaW50ZXJmYWNlIGZvciB0ZXN0aW5nIGludGVybmV0IGJhbmR3aWR0aCB1c2luZyBzcGVlZHRlc3QubmV0IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NpdmVsL3NwZWVkdGVzdC1jbGkiCitMSUNFTlNFID0gIkFwYWNoZS0yLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKKworU1JDX1VSSVttZDVzdW1dID0gIjU0M2QzOGY4OTM5ZTE3MTY2NDFjYzdjMDAxNjljYTAzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNmMWQzODYyMjJmOTRjMzI0ZTMxMjViYTlhMGQxODdlNDZkNGExM2RjYTA4YzAyM2JkYjlhMjMwOTZiZTJlNTQiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0tbWlzYyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3BpZGV2XzMuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3BpZGV2XzMuMi5iYgppbmRleCA2MTA2MTFlLi42NTY3OTU5IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNwaWRldl8zLjIuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcGlkZXZfMy4yLmJiCkBAIC0xLDIgKzEsMTYgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXNwaWRldi5pbmMKK1NVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciBMaW51eCBTUEkgYWNjZXNzIHRocm91Z2ggc3BpZGV2IgorREVTQ1JJUFRJT04gPSAiVGhpcyBwcm9qZWN0IGNvbnRhaW5zIGEgcHl0aG9uIG1vZHVsZSBmb3IgaW50ZXJmYWNpbmcgd2l0aCBTUElcCitkZXZpY2VzIGZyb20gdXNlciBzcGFjZSB2aWEgdGhlIHNwaWRldiBsaW51eCBrZXJuZWwgZHJpdmVyLlwKK1RoaXMgaXMgYSBtb2RpZmllZCB2ZXJzaW9uIG9mIHRoZSBjb2RlIG9yaWdpbmFsbHkgZm91bmRcCitbaGVyZV0oaHR0cDovL2Vsay5pbmZvcm1hdGlrLmZoLWF1Z3NidXJnLmRlL2RhL2RhLTQ5L3RyZWVzL3B5YXA3ay9sYW5nL3B5LXNwaSlcCitBbGwgY29kZSBpcyBHUEx2MiBsaWNlbnNlZCB1bmxlc3MgZXhwbGljaXRseSBzdGF0ZWQgb3RoZXJ3aXNlLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXRodWIuY29tL2RvY2VtZS9weS1zcGlkZXYiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLm1kO21kNT01NGJkYjkwMjJlYmI3NWFiNjgzOTljZGFhYjk3ZGE2MCIKK1NSQ05BTUUgPSAic3BpZGV2IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjYwMTY3NmYxYmI0OGI5YWEzYjM4OTdmOTUyMTYzNjUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDlkMmI1MTIyZjBkZDc5OTEwNzEzYTExZjlhMDAyMGY3MTUzNzIyNGJmODI5OTE2ZGVmNGZmZmMwZWE1OTQ1NiIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNwaWRldl8zLjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNwaWRldl8zLjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM0ZDY1OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3BpZGV2XzMuNC5iYgpAQCAtMCwwICsxLDE2IEBACitTVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgTGludXggU1BJIGFjY2VzcyB0aHJvdWdoIHNwaWRldiIKK0RFU0NSSVBUSU9OID0gIlRoaXMgcHJvamVjdCBjb250YWlucyBhIHB5dGhvbiBtb2R1bGUgZm9yIGludGVyZmFjaW5nIHdpdGggU1BJXAorZGV2aWNlcyBmcm9tIHVzZXIgc3BhY2UgdmlhIHRoZSBzcGlkZXYgbGludXgga2VybmVsIGRyaXZlci5cCitUaGlzIGlzIGEgbW9kaWZpZWQgdmVyc2lvbiBvZiB0aGUgY29kZSBvcmlnaW5hbGx5IGZvdW5kXAorW2hlcmVdKGh0dHA6Ly9lbGsuaW5mb3JtYXRpay5maC1hdWdzYnVyZy5kZS9kYS9kYS00OS90cmVlcy9weWFwN2svbGFuZy9weS1zcGkpXAorQWxsIGNvZGUgaXMgR1BMdjIgbGljZW5zZWQgdW5sZXNzIGV4cGxpY2l0bHkgc3RhdGVkIG90aGVyd2lzZS4iCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9kb2NlbWUvcHktc3BpZGV2IgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7Q09SRUJBU0V9L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCitTUkNOQU1FID0gInNwaWRldiIKKworU1JDX1VSSVttZDVzdW1dID0gImJiYWI2MzUyNDQ5ZjFkNTcyY2M5ZWVmZWFmYzU4YmQxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQzMTRlNTJmNTczZDk1MjMzYzkwN2YzMDc1NTg4OTMzMTNhOGE2MDZlMTk3ZTc3YmI3MTE1MjZiMGUxNzllODAiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcWxhbGNoZW15XzEuMy4xMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3FsYWxjaGVteV8xLjMuMTIuYmIKaW5kZXggODZjZjllZC4uZTI5YjU3MiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcWxhbGNoZW15XzEuMy4xMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNxbGFsY2hlbXlfMS4zLjEyLmJiCkBAIC0xLDIgKzEsMjAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXNxbGFsY2hlbXkuaW5jCitERVNDUklQVElPTiA9ICJQeXRob24gU1FMIHRvb2xraXQgYW5kIE9iamVjdCBSZWxhdGlvbmFsIE1hcHBlciB0aGF0IGdpdmVzIFwKK2FwcGxpY2F0aW9uIGRldmVsb3BlcnMgdGhlIGZ1bGwgcG93ZXIgYW5kIGZsZXhpYmlsaXR5IG9mIFNRTCIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuc3FsYWxjaGVteS5vcmcvIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZjVlYjAzMGM0ODk3NWQ1Mjk0YmFmMGY1ZDAxYWYxYyIKKworU1JDX1VSSVttZDVzdW1dID0gIjAyYTQ2YmU4NDE5MDNiNjBjNTJhODMzNDJkM2NlZDhlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJmYjhmNDY0YTUwMDBiNTY3YWMxZDM1MGI5MDkwY2YwODExODBlYzFhYjRhYTg3ZTdiY2ExMmRhYjI1MzIwZWMiCisKK1BZUElfUEFDS0FHRSA9ICJTUUxBbGNoZW15IgoraW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1qc29uIFwKKyAgICAke1BZVEhPTl9QTn0tcGlja2xlIFwKKyAgICAke1BZVEhPTl9QTn0tbG9nZ2luZyBcCisgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCisgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcWxwYXJzZS8wMDAxLXNxbHBhcnNlLWNoYW5nZS1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNxbHBhcnNlLzAwMDEtc3FscGFyc2UtY2hhbmdlLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZDZjNTBmCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcWxwYXJzZS8wMDAxLXNxbHBhcnNlLWNoYW5nZS1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorRnJvbSAxMGM5ZDMzNDFkNjRkNjk3ZjY3OGE2NGFlNzA3ZjZiZGEyMTU2NWJiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgOSBNYXIgMjAyMCAxMzoxMDozNyArMDgwMAorU3ViamVjdDogW1BBVENIXSBzcWxwYXJzZTogY2hhbmdlIHNoZWJhbmcgdG8gcHl0aG9uMworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworRG9uJ3Qgc2VuZCB1cHN0cmVhbSBzaW5jZSB1cHN0cmVhbSBzdGlsbCBzdXBwb3J0IHB5dGhvbjIsCit3ZSBjYW4gb25seSBtYWtlIHRoaXMgY2hhbmdlIGFmdGVyIHB5dGhvbjIgaXMgb2ZmY2lhbGx5Citkcm9wcGVkLgorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgc2V0dXAucHkgICAgICAgICAgICAgfCAyICstCisgc3FscGFyc2UvX19tYWluX18ucHkgfCAyICstCisgc3FscGFyc2UvY2xpLnB5ICAgICAgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CitpbmRleCAzNDVkMGNlLi5jZTNhYmMzIDEwMDY0NAorLS0tIGEvc2V0dXAucHkKKysrKyBiL3NldHVwLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyAjCisgIyBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCB0aGUgc3FscGFyc2UgYXV0aG9ycyBhbmQgY29udHJpYnV0b3JzCitkaWZmIC0tZ2l0IGEvc3FscGFyc2UvX19tYWluX18ucHkgYi9zcWxwYXJzZS9fX21haW5fXy5weQoraW5kZXggODY3ZDc1ZC4uZGQwYzA3NCAxMDA2NDQKKy0tLSBhL3NxbHBhcnNlL19fbWFpbl9fLnB5CisrKysgYi9zcWxwYXJzZS9fX21haW5fXy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgLSotIGNvZGluZzogdXRmLTggLSotCisgIworICMgQ29weXJpZ2h0IChDKSAyMDA5LTIwMTggdGhlIHNxbHBhcnNlIGF1dGhvcnMgYW5kIGNvbnRyaWJ1dG9ycworZGlmZiAtLWdpdCBhL3NxbHBhcnNlL2NsaS5weSBiL3NxbHBhcnNlL2NsaS5weQoraW5kZXggMjU1NTVhNS4uOGJmMDUwYSAxMDA3NTUKKy0tLSBhL3NxbHBhcnNlL2NsaS5weQorKysrIGIvc3FscGFyc2UvY2xpLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KKyAjCisgIyBDb3B5cmlnaHQgKEMpIDIwMDktMjAxOCB0aGUgc3FscGFyc2UgYXV0aG9ycyBhbmQgY29udHJpYnV0b3JzCistLSAKKzIuNy40CisKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3FscGFyc2UvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcWxwYXJzZS9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM4NWQ2OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3FscGFyc2UvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGVzdCAtbyBsb2dfY2xpPXRydWUgLW8gbG9nX2NsaV9sZXZlbD1JTkZPIHwgc2VkIC1lICdzL1xbLi4uJVxdLy9nJ3wgc2VkIC1lICdzL1BBU1NFRC9QQVNTL2cnfCBzZWQgLWUgJ3MvRkFJTEVEL0ZBSUwvZyd8c2VkIC1lICdzL1NLSVBFRC9TS0lQL2cnfCBhd2sgJ3tpZiAoJE5GPT0iUEFTUyIgfHwgJE5GPT0iRkFJTCIgfHwgJE5GPT0iU0tJUCIgfHwgJE5GPT0iWEZBSUwiIHx8ICRORj09IlhQQVNTIil7cHJpbnRmICIlczogJXNcbiIsICRORiwgJDB9ZWxzZXtwcmludH19J3wgYXdrICd7aWYgKCRORj09IlBBU1MiIHx8ICRORj09IkZBSUwiIHx8ICRORj09IlNLSVAiIHx8ICRORj09IlhGQUlMIiB8fCAkTkY9PSJYUEFTUyIpIHskTkY9IiI7cHJpbnQgJDB9ZWxzZXtwcmludH19JwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcWxwYXJzZV8wLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3FscGFyc2VfMC4zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE2NDZhYzYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcWxwYXJzZV8wLjMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tc3FscGFyc2UuaW5jCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNxbHBhcnNlXzAuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcWxwYXJzZV8wLjMuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYWVmMjhiCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zcWxwYXJzZV8wLjMuMS5iYgpAQCAtMCwwICsxLDI5IEBACitERVNDUklQVElPTiA9ICJOb24tdmFsaWRhdGluZyBTUUwgcGFyc2VyIG1vZHVsZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9zcWxwYXJzZSIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yYjEzNmY1NzNmNTM4NjAwMWVhM2I3YjkwMTYyMjJmYyIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtc3FscGFyc2UtY2hhbmdlLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKwkgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDIzMDQ3ODg3YTM1OTBiMDRkZDE4ZjhjYWY4NDNhMmYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTE2MjIwMzczNzcxMjMwN2RmZTc4ODYwY2M1NmM4ZGE4YTg1MmFiMmVlMzM3NTBlMzNhZWFkZjM4ZDEyYzU0OCIKKworZXhwb3J0IEJVSUxEX1NZUworZXhwb3J0IEhPU1RfU1lTCisKK2luaGVyaXQgcHlwaSBwdGVzdCBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyAgICAke1BZVEhPTl9QTn0tdW5peGFkbWluIFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgY3AgLXJmICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zdGV2ZWRvcmVfMS4zMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zdGV2ZWRvcmVfMS4zMS4wLmJiCmluZGV4IDNmNTU3ZjIuLmI5ODVjYTUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3RldmVkb3JlXzEuMzEuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXN0ZXZlZG9yZV8xLjMxLjAuYmIKQEAgLTEsMiArMSwxNSBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tc3RldmVkb3JlLmluYworREVTQ1JJUFRJT04gPSAiTWFuYWdlIGR5bmFtaWMgcGx1Z2lucyBmb3IgUHl0aG9uIGFwcGxpY2F0aW9ucyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9kcmVhbWhvc3Qvc3RldmVkb3JlIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MmZhMmJmMDI1MWM5NmI1NDM3NjVjNWNlMTNmMzdjOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlMDczOWY5NzM5YTY4MWM3YTFmZGE3NmExMDJiNjUyOTVlOTZhMTQ0Y2NkYjU1MmYyYWUwM2M1ZjBhYmU4YTE0IgorCitERVBFTkRTICs9ICIke1BZVEhPTl9QTn0tcGJyLW5hdGl2ZSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tcGJyICR7UFlUSE9OX1BOfS1zaXgiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zdHJpY3QtcmZjMzMzOV8wLjcuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXN0cmljdC1yZmMzMzM5XzAuNy5iYgppbmRleCA5ZTM3MDUyLi41MmFlOWViIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXN0cmljdC1yZmMzMzM5XzAuNy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXN0cmljdC1yZmMzMzM5XzAuNy5iYgpAQCAtMSwyICsxLDEwIEBACitTVU1NQVJZID0gIlN0cmljdCwgc2ltcGxlLCBsaWdodHdlaWdodCBSRkMzMzM5IGZ1bmN0aW9uLnMiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OGYwZTJjZDQwZTA1MTg5ZWM4MTIzMmRhODRiZDZlMWEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZDliNjM1YjRkZjg4NWJjMzdiYzExODlkNjZjOWFiYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1Y2FkMTdiZWRmYzNhZjU3YjM5OWRiMGZlZDMyNzcxZjE4ZmM1NGJiZDkxN2U4NTU0NjA4ODYwN2FjNWUxMjc3IgorCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXN0cmljdC1yZmMzMzM5LmluYworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXN1cGVydmlzb3JfNC4xLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXN1cGVydmlzb3JfNC4xLjAuYmIKaW5kZXggZDI5ZTFkNi4uNTZhYjI3ZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zdXBlcnZpc29yXzQuMS4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3VwZXJ2aXNvcl80LjEuMC5iYgpAQCAtMSwyICsxLDMwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1zdXBlcnZpc29yLmluYworU1VNTUFSWSA9ICJTdXBlcnZpc29yOiBBIFByb2Nlc3MgQ29udHJvbCBTeXN0ZW0iCitERVNDUklQVElPTiA9ICJcCitTdXBlcnZpc29yIGlzIGEgY2xpZW50L3NlcnZlciBzeXN0ZW0gdGhhdCBhbGxvd3MgaXRzIHVzZXJzIFwKK3RvIG1vbml0b3JhbmQgY29udHJvbCBhIG51bWJlciBvZiBwcm9jZXNzZXMgb24gVU5JWC1saWtlIFwKK29wZXJhdGluZyBzeXN0ZW1zLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9TdXBlcnZpc29yL3N1cGVydmlzb3IiCitMSUNFTlNFID0gIkJTRC00LUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VTLnR4dDttZDU9NWI0ZTNhMjE3MmJiYTRjNDdjZGVkNTg4NWU3ZTUwN2UiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlY2VhOTRlZWRjNzBiYTUxMjdmZGViMDY2NWJjY2EwZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZGM4NmZlMDQ3NmU5NDVlNjE0ODNkNjE0Y2ViMmNmNGY5M2I5NTI4MmViMjQzYmRmNzkyNjIxOTk0MzYwMzgzIgorCitQWVBJX1BBQ0tBR0UgPSAic3VwZXJ2aXNvciIKK2luaGVyaXQgcHlwaSBzeXN0ZW1kIHNldHVwdG9vbHMzCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgJHtQWVRIT05fUE59LW1lbGQzIFwKKyIKKworU1JDX1VSSSArPSAiZmlsZTovL3N1cGVydmlzb3JkLmNvbmYgXAorCSAgICBmaWxlOi8vc3VwZXJ2aXNvci5zZXJ2aWNlIFwKKwkiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAic3VwZXJ2aXNvci5zZXJ2aWNlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3N1cGVydmlzb3IKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zdXBlcnZpc29yZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N1cGVydmlzb3IKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zdXBlcnZpc29yLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc3ltcHlfMS41LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXN5bXB5XzEuNS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMwYzM4MmEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXN5bXB5XzEuNS4xLmJiCkBAIC0wLDAgKzEsMTYgQEAKKyMgVGhpcyByZWNpcGUgaXMgYWRhcHRlZCBmcm9tIG9uZSBpbiBtZXRhLWp1cHl0ZXI6CisjIGh0dHBzOi8vZ2l0aHViLmNvbS9YaWxpbngvbWV0YS1qdXB5dGVyL2Jsb2IvbWFzdGVyL3JlY2lwZXMtcHl0aG9uL3B5dGhvbjMtc3ltcHlfMS4xLmJiCisKK1NVTU1BUlkgPSAiQ29tcHV0ZXIgYWxnZWJyYSBzeXN0ZW0gKENBUykgaW4gUHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3N5bXB5LyIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NjExYjQxNTM0ZGJmNWFhMDFkN2M4MjdiZjY2N2VmNjYiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMTFiMzEwYzNlMTY0MmJmNjZlNTEwMzhjYjNjMDAyMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkNzc5MDFkNzQ4Mjg3ZDE1MjgxZjVmZmU1YjBmZWY2MmRkMzhmMzU3YzJiODI3YzQ0ZmYwN2YzNTY5NWY0ZTdlIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtbXBtYXRoIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRlcm1fMi4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10ZXJtXzIuMy5iYgppbmRleCAzNzJjZmZlLi43MjNmMWRiIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRlcm1fMi4zLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdGVybV8yLjMuYmIKQEAgLTEsMiArMSwxMSBAQAotcmVxdWlyZSBweXRob24tdGVybS5pbmMKK1NVTU1BUlkgPSAiQW4gZW5oYW5jZWQgdmVyc2lvbiBvZiB0aGUgdHR5IG1vZHVsZSIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJQeXRob24tMiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWQ5MGUyZDI4MGE0ODM2YzYwNzUyMDM4M2QxNjM5YmUxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYWIwYzFiY2UzODFiMTEwOWZlNDM5MGM1NmFhMDYyMzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2RjYzhjMjEyZTA0NzAwNzg0ZTVjMWM1YjYwMTkxNmJhMDU0OWFlNjAyNWIzNWI2NGZkNjIxNDQ4OTllNzE4MCIKKworUFlQSV9QQUNLQUdFX0VYVCA9ICJ6aXAiCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10aW55cmVjb3JkXzAuMS41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10aW55cmVjb3JkXzAuMS41LmJiCmluZGV4IDNmMWIzMWYuLjY1ZGYyZTEgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdGlueXJlY29yZF8wLjEuNS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRpbnlyZWNvcmRfMC4xLjUuYmIKQEAgLTEsMiArMSwxNSBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tdGlueXJlY29yZC5pbmMKK1NVTU1BUlkgPSAidHJhbnNhY3Rpb24gc3VwcG9ydCBmb3IgVGlueURCIgorREVTQ1JJUFRJT04gPSAiXAorVGlueXJlY29yZCBpcyBhIGxpYnJhcnkgd2hpY2ggaW1wbGVtZW50cyBhdG9taWMgdHJhbnNhY3Rpb24gXAorc3VwcG9ydCBmb3IgdGhlIFRpbnlEQiBOb1NRTCBkYXRhYmFzZS4gSXQgdXNlcyBhIHJlY29yZC1maXJzdCBcCit0aGVuIGV4ZWN1dGUgYXJjaGl0ZWN0dXJlIHdoaWNoIGFsbG93cyB1cyB0byBtaW5pbWl6ZSB0aGUgdGltZSBcCit0aGF0IHdlIGFyZSB3aXRoaW4gYSB0aHJlYWQgbG9jay4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vZXVnZW5lLWVlby90aW55cmVjb3JkIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUU7bWQ1PTMxYzFkYzExYjRhZTgzNTQ2NTM4ZGU0YzE2YmNlYWJjIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTQ3ZGNmZTI5OTY4NmNkM2ZhN2ZmYWE3Y2IyZWU4YjEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmM3ZTZhOGU3ODYwMGRmMjM0ZDdhODVjMmY1ZDU4NDEzMGYyYzZmZmQ3Y2QzMTBmOWQzYTFkOTc2ZDMzNzNjOCIKKworUFlQSV9QQUNLQUdFID0gInRpbnlyZWNvcmQiCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdG9tbF8wLjEwLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRvbWxfMC4xMC4wLmJiCmluZGV4IGNlYmI0MWEuLjVhN2IwNGMgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdG9tbF8wLjEwLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10b21sXzAuMTAuMC5iYgpAQCAtMSw1ICsxLDEzIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi10b21sLmluYworU1VNTUFSWSA9ICJQeXRob24gTGlicmFyeSBmb3IgVG9tJ3MgT2J2aW91cywgTWluaW1hbCBMYW5ndWFnZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS91aXJpL3RvbWwiCitMSUNFTlNFID0gIk1JVCIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NmQ2MDEyZWVhNDc3MTE3YWJmNTFjMzEyNjJhMTUyZjgiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2M2ZmZmJlMmQ2MzI4NjVlYzI5Y2Q2OWJmZGYzNjY4MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMjlmODFjNTc3OTFhNDFkNjVlMzk5ZmMwNmJmMDg0OGJhYjU1MGE5ZGZkNWVkNjZkZjE4Y2U1ZjA1ZTczZDVjIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKIAogUkRFUEVORFNfJHtQTn0gKz0gIiBcCiAgICAgJHtQWVRIT05fUE59LW1pc2MgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10cWRtXzQuNDEuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHFkbV80LjQxLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0ODMzN2YuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10cWRtXzQuNDEuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIgKzAsMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tdHFkbS5pbmMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHFkbV80LjQzLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRxZG1fNC40My4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY0MjI0NmMKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRxZG1fNC40My4wLmJiCkBAIC0wLDAgKzEsMTMgQEAKK1NVTU1BUlkgPSAiRmFzdCwgRXh0ZW5zaWJsZSBQcm9ncmVzcyBNZXRlciIKK0hPTUVQQUdFID0gImh0dHA6Ly90cWRtLmdpdGh1Yi5pby8iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKKworTElDRU5TRSA9ICJNSVQgJiBNUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9N2VhNTc1ODRlM2Y4YmJkZTJhZTNlMTUzNzU1MWRlMjUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4MTQ1NGMyNjU3MmU0ZTQ3OTExNTk2ZWEwNjVlYjFiNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMzVmYjEyMWJhZmEwMzBiZDk0ZTc0ZmNmZDQ0ZjNjMjgzMDAzOWEyZGRlZjdmYzg3ZWYxYzJkMjA1MjM3YjI0IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10d2luZV8xLjEzLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3aW5lXzEuMTMuMC5iYgppbmRleCAwNDU2ZWM5Li5mNWNjNzBmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3aW5lXzEuMTMuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3aW5lXzEuMTMuMC5iYgpAQCAtMSwyICsxLDExIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi10d2luZS5pbmMKK0RFU0NSSVBUSU9OID0gIlNpeCBpcyBhIFB5dGhvbiAyIGFuZCAzIGNvbXBhdGliaWxpdHkgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9iZW5qYW1pbnAvc2l4IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUucnN0O21kNT0zOTYzYmRjZWU3NTYyYmVkYWUxZWZmYTA5ZTc1NDJiMiIKKworU1JDX1VSSVttZDVzdW1dID0gIjZmYjRkYTBjN2Q4MWRkZmQ0OGY2MTliOGNhYTE0OTNjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2YzI5YzkzM2VjZmM3NGU5YjFkOWZhMTNhYTFmODdjNWQ1NzcwZTExOWY1YTRjZTAzMjA5MmYwZmY1YjE0ZGMiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHdpdHRlcl8zLjguMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHdpdHRlcl8zLjguMC5iYgppbmRleCBjMmU0ZDJlLi43OGY2NmE0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3aXR0ZXJfMy44LjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10d2l0dGVyXzMuOC4wLmJiCkBAIC0xLDMgKzEsMTkgQEAKLXJlcXVpcmUgcHl0aG9uLXR3aXR0ZXIuaW5jCitTVU1NQVJZID0gIlR3aXR0ZXIgZm9yIFB5dGhvbiIKK0RFU0NSSVBUSU9OID0gIlB5dGhvbiBtb2R1bGUgdG8gc3VwcG9ydCB0d2l0dGVyIEFQSSIKKworTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9OGY3MDJiNDg5YWNiNjg2M2NlYzhiMjYxYTU1OTMxZDgiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4YWVmZjI3OGI3Y2VmY2QzODRjNjU5MjliYzkyMWUyYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4YWJkODI4YmE1MWE4NWEyYjViYjczNzM3MTVkNmQzYmIzMmQxOGFjNjI0ZTNhNGRiMDJlNGVmOGFiNDgzMTZiIgorCitQWVBJX1BBQ0tBR0UgPSAidHdlZXB5IgorCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKIAorUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tcGlwIFwKKyAgICAke1BZVEhPTl9QTn0tcHlzb2NrcyBcCisgICAgJHtQWVRIT05fUE59LXJlcXVlc3RzIFwKKyAgICAke1BZVEhPTl9QTn0tc2l4IFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHdvZmlzaF8wLjMuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHdvZmlzaF8wLjMuMC5iYgppbmRleCA3YjhlYjJlLi45NGZiNzEwIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR3b2Zpc2hfMC4zLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10d29maXNoXzAuMy4wLmJiCkBAIC0xLDQgKzEsMTUgQEAKLXJlcXVpcmUgcHl0aG9uLXR3b2Zpc2guaW5jCi1pbmhlcml0IHNldHVwdG9vbHMzCitTVU1NQVJZID0gIkJpbmRpbmdzIGZvciB0aGUgVHdvZmlzaCBpbXBsZW1lbnRhdGlvbiBieSBOaWVscyBGZXJndXNvbiIKK0RFU0NSSVBUSU9OID0gIkJpbmRpbmdzIGZvciB0aGUgVHdvZmlzaCBpbXBsZW1lbnRhdGlvbiBieSBOaWVscyBGZXJndXNvblwKKyBsaWJ0d29maXNoLWRldi4iCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9rZXliYXNlL3B5dGhvbi10d29maXNoIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zM2E2M2FiZjZkNzU2N2IxNjg5ZDhjZTY5ZjAwZTQzYiIKIAogU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRml4LW1pc3NpbmctcmV0dXJuLXN0YXRlbWVudHMtaW4tbW9kdWxlLXN0dWJzLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDdkMjJmMTZkYzRmZmEwZTNhZTIyMDA2NTQwMzNhYmUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjA5ZDhiYjUwZDMzYjIzZmYzNGNhZmIxZjkyMDlmODU4Zjc1MjkzNWM2YTVjOTAxZWZiOTJhNDFhY2I4MzBmYSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHlwZWd1YXJkXzIuNy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10eXBlZ3VhcmRfMi43LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYyYjYwNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHlwZWd1YXJkXzIuNy4xLmJiCkBAIC0wLDAgKzEsMTggQEAKK1NVTU1BUlkgPSAiUnVuLXRpbWUgdHlwZSBjaGVja2VyIGZvciBQeXRob24iCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkub3JnL3Byb2plY3QvdHlwZWd1YXJkLyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZjBlNDIzZWVhNWM5MWU3YWEyMWJkYjcwMTg0YjNlNTMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlZjc0MzM1OWRlNTlmOGZlMTdlN2M1ZTNhZjcwZTJjNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyZDU0NWM3MWU5NDM5YzIxYmNkN2MyOGY1ZjU1YjM2MDZlNjEwNmY3MDMxYWI1ODM3NTY1NmExYWVkNDgzZWYyIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworREVQRU5EUyArPSAiXAorICAgIHB5dGhvbjMtZGlzdHV0aWxzLWV4dHJhLW5hdGl2ZSBcCisgICAgcHl0aG9uMy1zZXR1cHRvb2xzLXNjbS1uYXRpdmUgXAorIgorCitSREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy10eXBpbmciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHlwaW5nLWV4dGVuc2lvbnNfMy43LjQuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHlwaW5nLWV4dGVuc2lvbnNfMy43LjQuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MWU5ZWRhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10eXBpbmctZXh0ZW5zaW9uc18zLjcuNC4yLmJiCkBAIC0wLDAgKzEsMTMgQEAKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vdHlwaW5nIgorTElDRU5TRSA9ICJQU0YiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT02NGZjMmIzMGI2N2QwYTg0MjNjMjUwZTAzODZlZDcyZiIKKworIyBUaGUgbmFtZSBvbiBQeVBpIGlzIHNsaWdodGx5IGRpZmZlcmVudC4KK1BZUElfUEFDS0FHRSA9ICJ0eXBpbmdfZXh0ZW5zaW9ucyIKKworU1JDX1VSSVttZDVzdW1dID0gImYyNjc0MjgyOTY2ZGMwODhkMTAxNzBjMjM0NzQzMWNjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc5ZWU1ODlhM2NhY2E2NDlhOWJmZDJhOGRlNDcwOTgzNzQwMGRmYTAwYjZjYzgxOTYyYTFlNmExODE1OTY5YWUiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR6bG9jYWxfMi4wLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXR6bG9jYWxfMi4wLjAuYmIKaW5kZXggODEzOTM0Yy4uMzU3M2IyOSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10emxvY2FsXzIuMC4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdHpsb2NhbF8yLjAuMC5iYgpAQCAtMSwyICsxLDkgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSB0byByZXR1cm4gdHppbmZvIHdpdGggdGhlIGxvY2FsIHRpbWV6b25lIGluZm9ybWF0aW9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLm9yZy9wcm9qZWN0L3R6bG9jYWwvIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9NTdlMGJkNjE2NDNkODFkMDU2ODNjZGNlNjViMTFkMTAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMTQyNjJjZWNjYTE2ZWM5MjIwY2E4ZGZmMmNhN2M1ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NDliOWRkNWJhNGJlMTcxOTBhODBjMDI2ODE2N2Q3ZTZjOTJjNjJiMzAwMjZjZjk3NjRjYWYzZTMwOGU1NTkwIgorCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXR6bG9jYWwuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVqc29uL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdWpzb24vcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiMzkxNDYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVqc29uL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRob24zIHRlc3RzL3Rlc3RzLnB5CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVqc29uXzEuMzUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVqc29uXzEuMzUuYmIKaW5kZXggYWU0Y2MwYS4uMzZhYmI3ZSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11anNvbl8xLjM1LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdWpzb25fMS4zNS5iYgpAQCAtMSwyICsxLDMwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi11anNvbi5pbmMKK1NVTU1BUlkgID0gIlVsdHJhIGZhc3QgSlNPTiBlbmNvZGVyIGFuZCBkZWNvZGVyIGZvciBQeXRob24iCitERVNDUklQVElPTiA9ICJVbHRyYUpTT04gaXMgYW4gdWx0cmEgZmFzdCBKU09OIGVuY29kZXIgYW5kIGRlY29kZXIgd3JpdHRlbiBpbiBwdXJlIEMgd2l0aCBiaW5kaW5ncyBmb3IgUHl0aG9uIDIuNSsgYW5kIDMuIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ODhkZjhlNzhiOWVkZmQ3NDQ5NTM4NjIxNzlmMmQxNGUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0MmY3N2IwY2NlNjg2ZGZhNGRhMmU2ODQ4MGIxZGQyNCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNjYwNzNlNTUwNmU5MWQyMDRhYjBjNjE0YTE0OGQ1YWE5MzhiZGJmMTA0NzUxYmU2NmY4YWQ3YTIyMmY1Zjg2IgorCitpbmhlcml0IHB5cGkgcHRlc3Qgc2V0dXB0b29sczMKKworU1JDX1VSSSArPSAiIFwKKyAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICR7UFlUSE9OX1BOfS1udW1iZXJzIFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXB5dHogXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBjcCAtcmYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVuaWRpZmZfMC41LjUuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVuaWRpZmZfMC41LjUuYmIKaW5kZXggMGRkYzdlMi4uZGVkNjZmMCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11bmlkaWZmXzAuNS41LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdW5pZGlmZl8wLjUuNS5iYgpAQCAtMSwyICsxLDE0IEBACi1yZXF1aXJlIHB5dGhvbi11bmlkaWZmLmluYwotaW5oZXJpdCBzZXR1cHRvb2xzMworU1VNTUFSWSA9ICJVbmlmaWVkIGRpZmYgcGFyc2luZy9tZXRhZGF0YSBleHRyYWN0aW9uIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9tYXRpYXNiL3B5dGhvbi11bmlkaWZmIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT00YzQzNGIwOGVmNDJmZWEyMzViYjAxOWI1ZTVhOTdiMyIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ3ZjY2OWQ3MjczNTQxZmVjNDVlNGNjMGZiYThkOGU5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljOWFiNWZiOTZiNjk4OGI0Y2Q1ZGVmNmIyNzU0OTI0NDJjMDRhNTcwOTAwZDMzYWE2MzczMTA1NzgwMDI1YmMiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tY29kZWNzIFwKKyAgICAke1BZVEhPTl9QTn0taW8gXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11cml0ZW1wbGF0ZV8zLjAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdXJpdGVtcGxhdGVfMy4wLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTUyZTk1NAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdXJpdGVtcGxhdGVfMy4wLjEuYmIKQEAgLTAsMCArMSwxNCBAQAorIyBUaGlzIHJlY2lwZSBpcyBvcmlnaW5hbGx5IGZyb20gbWV0YS1vcGVuc3RhY2s6CisjIGh0dHBzOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9tZXRhLWNsb3VkLXNlcnZpY2VzL3RyZWUvbWV0YS1vcGVuc3RhY2svcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11cml0ZW1wbGF0ZV8zLjAuMC5iYj9oPW1hc3RlcgorCitTVU1NQVJZID0gIlNpbXBsZSBweXRob24gbGlicmFyeSB0byBkZWFsIHdpdGggVVJJIFRlbXBsYXRlcy4iCitBVVRIT1IgPSAiSWFuIENvcmRhc2NvIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIHwgQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MGY2ZDc2OWJkY2ZhY2FjM2MxYTFmZmE1Njg5MzdmZTAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4NjlmYjQ0ZmJkNTY3MTM0OTBkYjcyNzJlYjM2YzhhZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1YWY4YWQxMGNlYzk0ZjIxNWUzZjQ4MTEyZGUyMDIyZTFkNWEzN2VkNDI3ZmJkODg2NTJmYTkwOGYyYWI3Y2FlIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11cmxsaWIzXzEuMjUuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdXJsbGliM18xLjI1LjcuYmIKaW5kZXggMTllYjcwMi4uMzRjMTViNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy11cmxsaWIzXzEuMjUuNy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXVybGxpYjNfMS4yNS43LmJiCkBAIC0xLDIgKzEsMjMgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIEhUVFAgbGlicmFyeSB3aXRoIHRocmVhZC1zYWZlIGNvbm5lY3Rpb24gcG9vbGluZywgZmlsZSBwb3N0IHN1cHBvcnQsIHNhbml0eSBmcmllbmRseSwgYW5kIG1vcmUiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2hhem93L3VybGxpYjMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT02NTcxNWMyZWI5NjEzMTNkNzFiMjk3ZGQ1YTA0Zjg1ZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjg1ZTFlMzkyNWY4YzEwOTUxNzJiZmYzNDNmMzMxMmVkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYzYzVmZDUxNzQ3ZDQ1MGQ0ZGNmNmY5MjNjODFmNzhmODExYWFiODIwNWZkYTY0YjBhYmEzNGE0ZTQ4YjA3NDUiCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tdXJsbGliMy5pbmMKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tY2VydGlmaSBcCisgICAgJHtQWVRIT05fUE59LWNyeXB0b2dyYXBoeSBcCisgICAgJHtQWVRIT05fUE59LWVtYWlsIFwKKyAgICAke1BZVEhPTl9QTn0taWRuYSBcCisgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCisgICAgJHtQWVRIT05fUE59LXB5b3BlbnNzbCBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisiCisKK0NWRV9QUk9EVUNUID0gInVybGxpYjMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdmVyc2lvbnRvb2xzXzEuOS4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy12ZXJzaW9udG9vbHNfMS45LjEuYmIKaW5kZXggZThkNmI3ZC4uY2YwZmEzMCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy12ZXJzaW9udG9vbHNfMS45LjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy12ZXJzaW9udG9vbHNfMS45LjEuYmIKQEAgLTEsMiArMSwxMCBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24tdmVyc2lvbnRvb2xzLmluYworU1VNTUFSWSA9ICJTbWFydCByZXBsYWNlbWVudCBmb3IgcGxhaW4gdHVwbGUgdXNlZCBpbiBfX3ZlcnNpb25fXyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9sYXVuY2hwYWQubmV0L3ZlcnNpb250b29scyIKK0xJQ0VOU0UgPSAiTEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc2V0dXAucHk7YmVnaW5saW5lPTM7ZW5kbGluZT0yMDttZDU9MDIxOTM3MjFhMzhmZDhhMDVhNGRkZWI3ZGY4ZTI5NGQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2MDJiN2RiOGVlYTMwZGQyOWExZDQ1MTk5N2FkZjI1MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhOTY5MzMyODg3YTE4YTljOThiMGRmMGVhNGQ0Y2E3NTk3MmYyNGNhOTRmMDZmYjg3ZDU5MTM3N2U4MzQxNGY2IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdmlzaXRvcl8wLjEuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdmlzaXRvcl8wLjEuMy5iYgppbmRleCBiOWJjNTFkLi5hYzNhOTBlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXZpc2l0b3JfMC4xLjMuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy12aXNpdG9yXzAuMS4zLmJiCkBAIC0xLDIgKzEsOCBAQAorU1VNTUFSWSA9ICJBIHRpbnkgcHl0aG9uaWMgdmlzaXRvciBpbXBsZW1lbnRhdGlvbi4iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO2JlZ2lubGluZT04O2VuZGxpbmU9ODttZDU9ODIyNzE4MDEyNjc5N2EwMTQ4Zjk0ZjQ4M2YzZTE0ODkiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5NGEwMjRlZDBlYzFiMDJiNDQ5N2MxNTI2N2QzMTljYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyYzczNzkwM2IyYjY4NjRlYmM2MTY3ZWVmN2NmM2I5OTcxMjZmMWFhOTRiZGY1OTBmOTBmMTQzNmQyM2U0ODBhIgorCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXZpc2l0b3IuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdhaXRyZXNzXzEuNC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13YWl0cmVzc18xLjQuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNjOGI2Ni4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdhaXRyZXNzXzEuNC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzIHB5cGkKLXJlcXVpcmUgcHl0aG9uLXdhaXRyZXNzLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13YWl0cmVzc18xLjQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2FpdHJlc3NfMS40LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGFjM2U5MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2FpdHJlc3NfMS40LjMuYmIKQEAgLTAsMCArMSwxMiBAQAorU1VNTUFSWSA9ICJBIFdTR0kgc2VydmVyIGZvciBQeXRob24iCitERVNDUklQVElPTiA9ICJXYWl0cmVzcyBpcyBtZWFudCB0byBiZSBhIHByb2R1Y3Rpb24tcXVhbGl0eSBwdXJlLVB5dGhvbiBXU0dJIFwKKyAgICBzZXJ2ZXIgd2l0aCB2ZXJ5IGFjY2VwdGFibGUgcGVyZm9ybWFuY2UuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL1B5bG9ucy93YWl0cmVzcyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJaUEwtMi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTc4Y2NiMzY0MGRjODQxZTFiYWVjYjNlMjdhNjk2NmIyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNGJmZmFkNzAwOWQzODI0YWU2MWVhNmMwNjk2ZTQ1ZjYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDQ1YjNlZmMzZDk3YzkzMzYyMTczYWIxZGZjMTU5YjUyY2ZhMjJiNDZjMzMzNGZmYzgwNWRiZGJmMGU0MzA5ZSIKKworaW5oZXJpdCBzZXR1cHRvb2xzMyBweXBpCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdjd2lkdGhfMC4xLjguYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdjd2lkdGhfMC4xLjguYmIKaW5kZXggNWY2MjU5Yi4uZjlmNjQ3NCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13Y3dpZHRoXzAuMS44LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2N3aWR0aF8wLjEuOC5iYgpAQCAtMSwyICsxLDEwIEBACitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIGJ1aWxkaW5nIHBvd2VyZnVsIGludGVyYWN0aXZlIGNvbW1hbmQgbGluZXMgaW4gUHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MTFmYmE0NzI4NjI1ODc0NGE2YmM2ZTQzNTMwYzMyYTEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkYzY2NzdkMDk5ZTZmNDljMGY2ZmJjMzEwZGUyNjFlOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmMjhiM2U4YTY0ODNlNWQ0OWU3Zjg5NDlhYzFhNzgzMTRlNzQwMzMzYWUzMDViNGJhNWRlZmQzZTc0ZmIzN2E4IgorCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXdjd2lkdGguaW5jCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2ViY29sb3JzL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2ViY29sb3JzL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMzg1ZDY4Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZWJjb2xvcnMvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGVzdCAtbyBsb2dfY2xpPXRydWUgLW8gbG9nX2NsaV9sZXZlbD1JTkZPIHwgc2VkIC1lICdzL1xbLi4uJVxdLy9nJ3wgc2VkIC1lICdzL1BBU1NFRC9QQVNTL2cnfCBzZWQgLWUgJ3MvRkFJTEVEL0ZBSUwvZyd8c2VkIC1lICdzL1NLSVBFRC9TS0lQL2cnfCBhd2sgJ3tpZiAoJE5GPT0iUEFTUyIgfHwgJE5GPT0iRkFJTCIgfHwgJE5GPT0iU0tJUCIgfHwgJE5GPT0iWEZBSUwiIHx8ICRORj09IlhQQVNTIil7cHJpbnRmICIlczogJXNcbiIsICRORiwgJDB9ZWxzZXtwcmludH19J3wgYXdrICd7aWYgKCRORj09IlBBU1MiIHx8ICRORj09IkZBSUwiIHx8ICRORj09IlNLSVAiIHx8ICRORj09IlhGQUlMIiB8fCAkTkY9PSJYUEFTUyIpIHskTkY9IiI7cHJpbnQgJDB9ZWxzZXtwcmludH19JwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZWJjb2xvcnNfMS44LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlYmNvbG9yc18xLjguMS5iYgppbmRleCBmY2Q5ZjcwLi42NWVlZDllIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlYmNvbG9yc18xLjguMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlYmNvbG9yc18xLjguMS5iYgpAQCAtMSwyICsxLDI3IEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXdlYmNvbG9ycy5pbmMKK1NVTU1BUlkgPSAiU2ltcGxlIFB5dGhvbiBtb2R1bGUgZm9yIHdvcmtpbmcgd2l0aCBIVE1ML0NTUyBjb2xvciBkZWZpbml0aW9ucy4iCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTE5N2FkZDAxNjA4N2U2ODg0YTAxMmIwZjE4NWQ0NGFkIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDA4OTBkYjM4YjJhODU2ZTUyNmE1Njg4NjQwMjVmZTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDMwNTYyZjYyNDQ2N2E5OTAxZjBiNDU1ZmVmMDU0ODZhODhjZmI1ZGFhMWUzNTZiZDRhYWNlYTA0Mzg1MGI1OSIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzIHB0ZXN0CisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCA9ICJcCisgICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCisiCisKK1NSQ19VUkkgKz0gIiBcCisgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1weXRlc3QgXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBjcCAtcmYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlYmVuY29kaW5nc18wLjUuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2ViZW5jb2RpbmdzXzAuNS4xLmJiCmluZGV4IDcxZmU3NDEuLmFhNWI4YzcgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2ViZW5jb2RpbmdzXzAuNS4xLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2ViZW5jb2RpbmdzXzAuNS4xLmJiCkBAIC0xLDIgKzEsMTUgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXdlYmVuY29kaW5ncy5pbmMKK1NVTU1BUlkgPSAiQ2hhcmFjdGVyIGVuY29kaW5nIGFsaWFzZXMgZm9yIGxlZ2FjeSB3ZWIgY29udGVudCIKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87YmVnaW5saW5lPTg7ZW5kbGluZT04O21kNT1lOTEwYjM1YjBlZjRlMWY2NjViOWE3NWQ2YWZiNzcwOSIKKworU1JDX1VSSVttZDVzdW1dID0gIjMyZjZlMjYxZDUyZTU3YmY3ZTFjNGQ0MTU0NmQxNWI4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImIzNmExYzI0NWYyZDMwNDk2NWViNGUwYTgyODQ4Mzc5MjQxZGMwNGI4NjVhZmNjNGFhYjE2NzQ4NTg3ZTE5MjMiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tY29kZWNzIFwKKyAgICAke1BZVEhPTl9QTn0tanNvbiBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vic29ja2V0LWNsaWVudF8wLjU2LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlYnNvY2tldC1jbGllbnRfMC41Ni4wLmJiCmluZGV4IDliNjY5NmUuLmEzZTFiY2YgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vic29ja2V0LWNsaWVudF8wLjU2LjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZWJzb2NrZXQtY2xpZW50XzAuNTYuMC5iYgpAQCAtMSwyICsxLDE4IEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi13ZWJzb2NrZXQtY2xpZW50LmluYworU1VNTUFSWSA9ICJ3ZWJzb2NrZXQgY2xpZW50IGZvciBweXRob24iCitERVNDUklQVElPTiA9ICJcCit3ZWJzb2NrZXQtY2xpZW50IG1vZHVsZSBpcyBXZWJTb2NrZXQgY2xpZW50IGZvciBweXRob24uIFwKK1RoaXMgcHJvdmlkZSB0aGUgbG93IGxldmVsIEFQSXMgZm9yIFdlYlNvY2tldC4gQWxsIEFQSXMgXAorYXJlIHRoZSBzeW5jaHJvbm91cyBmdW5jdGlvbnMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dlYnNvY2tldC1jbGllbnQvd2Vic29ja2V0LWNsaWVudCIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzRjNGE5OGZiYzQ4MzZiODFjOGM2NGQ2ZWNiMDFmYzEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI4OTQ4NGJkNWRhYzcxMTIzYWU2YTA5YjJmOTBmZTYyYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxZmQ1NTIwODc4YjY4Yjg0YjU3NDhiYjMwZTU5MmIxMGQwYTkxNTI5ZDUzODNmNzRmNDk2NGU3MmIyOTdmZDNhIgorCitQWVBJX1BBQ0tBR0UgPSAid2Vic29ja2V0X2NsaWVudCIKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgJHtQWVRIT05fUE59LXNpeCBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlcmt6ZXVnXzAuMTYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vya3pldWdfMC4xNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNDVhMWRlLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vya3pldWdfMC4xNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNCArMCwwIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXdlcmt6ZXVnLmluYwotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LW1pc2MiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlcmt6ZXVnXzEuMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZXJremV1Z18xLjAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTQzNzRlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13ZXJremV1Z18xLjAuMC5iYgpAQCAtMCwwICsxLDUwIEBACitTVU1NQVJZID0gIlRoZSBTd2lzcyBBcm15IGtuaWZlIG9mIFB5dGhvbiB3ZWIgZGV2ZWxvcG1lbnQiCitERVNDUklQVElPTiA9ICJcCitXZXJremV1ZyBzdGFydGVkIGFzIHNpbXBsZSBjb2xsZWN0aW9uIG9mIHZhcmlvdXMgdXRpbGl0aWVzIGZvciBXU0dJIFwKK2FwcGxpY2F0aW9ucyBhbmQgaGFzIGJlY29tZSBvbmUgb2YgdGhlIG1vc3QgYWR2YW5jZWQgV1NHSSB1dGlsaXR5IG1vZHVsZXMuIFwKK0l0IGluY2x1ZGVzIGEgcG93ZXJmdWwgZGVidWdnZXIsIGZ1bGwgZmVhdHVyZWQgcmVxdWVzdCBhbmQgcmVzcG9uc2Ugb2JqZWN0cywgXAorSFRUUCB1dGlsaXRpZXMgdG8gaGFuZGxlIGVudGl0eSB0YWdzLCBjYWNoZSBjb250cm9sIGhlYWRlcnMsIEhUVFAgZGF0ZXMsIFwKK2Nvb2tpZSBoYW5kbGluZywgZmlsZSB1cGxvYWRzLCBhIHBvd2VyZnVsIFVSTCByb3V0aW5nIHN5c3RlbSBhbmQgYSBidW5jaCBcCitvZiBjb21tdW5pdHkgY29udHJpYnV0ZWQgYWRkb24gbW9kdWxlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd2Vya3pldWcucG9jb28ub3JnLyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5yc3Q7bWQ1PTVkYzg4MzAwNzg2ZjFjMjE0YzFlOTgyN2E1MjI5NDYyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzA1Zjc1YzRhODhjOTZkY2RjNTY1NGJmMmQwMWJjMDUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTY5YmE4YTMzNzg4NDc2MjkyZDA0MTg2YWIzM2IwMWQ2YWRkNDc1MDMzZGZjMDcyMTVlNmQyMTljYzA3NzA5NiIKKworUFlQSV9QQUNLQUdFID0gIldlcmt6ZXVnIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworQ0xFQU5CUk9LRU4gPSAiMSIKKworUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgorRklMRVNfJHtQTn0tdGVzdHMrPSAiIFwKKyAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS93ZXJremV1Zy90ZXN0KiBcCisgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vd2Vya3pldWcvX19weWNhY2hlX18vdGVzdCogXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3dlcmt6ZXVnL2NvbnRyaWIvdGVzdCogXAorICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3dlcmt6ZXVnL2NvbnRyaWIvX19weWNhY2hlX18vdGVzdCogXAorIgorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICR7UFlUSE9OX1BOfS1kaWZmbGliIFwKKyAgICAke1BZVEhPTl9QTn0tZW1haWwgXAorICAgICR7UFlUSE9OX1BOfS1odG1sIFwKKyAgICAke1BZVEhPTl9QTn0taW8gXAorICAgICR7UFlUSE9OX1BOfS1qc29uIFwKKyAgICAke1BZVEhPTl9QTn0tbWlzYyBcCisgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCisgICAgJHtQWVRIT05fUE59LW5ldHNlcnZlciBcCisgICAgJHtQWVRIT05fUE59LW51bWJlcnMgXAorICAgICR7UFlUSE9OX1BOfS1wa2d1dGlsIFwKKyAgICAke1BZVEhPTl9QTn0tcHByaW50IFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tdW5peGFkbWluIFwKKyIKKworUkRFUEVORFNfJHtQTn0tdGVzdHMgPSAiIFwKKyAgICAke1BOfSBcCisgICAgJHtQWVRIT05fUE59LXVuaXR0ZXN0IFwKKyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2Vya3pldWdfMS4wLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlcmt6ZXVnXzEuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI1NDM5OWUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdlcmt6ZXVnXzEuMC4xLmJiCkBAIC0wLDAgKzEsMzggQEAKK1NVTU1BUlkgPSAiVGhlIFN3aXNzIEFybXkga25pZmUgb2YgUHl0aG9uIHdlYiBkZXZlbG9wbWVudCIKK0RFU0NSSVBUSU9OID0gIlwKK1dlcmt6ZXVnIHN0YXJ0ZWQgYXMgc2ltcGxlIGNvbGxlY3Rpb24gb2YgdmFyaW91cyB1dGlsaXRpZXMgZm9yIFdTR0kgXAorYXBwbGljYXRpb25zIGFuZCBoYXMgYmVjb21lIG9uZSBvZiB0aGUgbW9zdCBhZHZhbmNlZCBXU0dJIHV0aWxpdHkgbW9kdWxlcy4gXAorSXQgaW5jbHVkZXMgYSBwb3dlcmZ1bCBkZWJ1Z2dlciwgZnVsbCBmZWF0dXJlZCByZXF1ZXN0IGFuZCByZXNwb25zZSBvYmplY3RzLCBcCitIVFRQIHV0aWxpdGllcyB0byBoYW5kbGUgZW50aXR5IHRhZ3MsIGNhY2hlIGNvbnRyb2wgaGVhZGVycywgSFRUUCBkYXRlcywgXAorY29va2llIGhhbmRsaW5nLCBmaWxlIHVwbG9hZHMsIGEgcG93ZXJmdWwgVVJMIHJvdXRpbmcgc3lzdGVtIGFuZCBhIGJ1bmNoIFwKK29mIGNvbW11bml0eSBjb250cmlidXRlZCBhZGRvbiBtb2R1bGVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93ZXJremV1Zy5wb2Nvby5vcmcvIgorTElDRU5TRSA9ICJCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnJzdDttZDU9NWRjODgzMDA3ODZmMWMyMTRjMWU5ODI3YTUyMjk0NjIiCisKK1BZUElfUEFDS0FHRSA9ICJXZXJremV1ZyIKKworU1JDX1VSSVttZDVzdW1dID0gIjVkNDk5Y2ZkZDMwZGU1ZDljOTQ2OTk0NzgzNzcyZWZkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjODBiMWU1YWQzNjY1MjkwZWEzOTMyMGI5MWUxYmUxZTBkNWY2MDY1MmI5NjRhMzA3MDIxNmRlODNkMmU0N2MiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitDTEVBTkJST0tFTiA9ICIxIgorCitSREVQRU5EU18ke1BOfSArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICR7UFlUSE9OX1BOfS1kaWZmbGliIFwKKyAgICAke1BZVEhPTl9QTn0tZW1haWwgXAorICAgICR7UFlUSE9OX1BOfS1odG1sIFwKKyAgICAke1BZVEhPTl9QTn0taW8gXAorICAgICR7UFlUSE9OX1BOfS1qc29uIFwKKyAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKKyAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKKyAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICAgJHtQWVRIT05fUE59LXBrZ3V0aWwgXAorICAgICR7UFlUSE9OX1BOfS1wcHJpbnQgXAorICAgICR7UFlUSE9OX1BOfS1zaW1wbGVqc29uIFwKKyAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tdW5peGFkbWluIFwKKyAgICAke1BZVEhPTl9QTn0tbWlzYyBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdob29zaC9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdob29zaC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM4NWQ2OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2hvb3NoL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QgLW8gbG9nX2NsaT10cnVlIC1vIGxvZ19jbGlfbGV2ZWw9SU5GTyB8IHNlZCAtZSAncy9cWy4uLiVcXS8vZyd8IHNlZCAtZSAncy9QQVNTRUQvUEFTUy9nJ3wgc2VkIC1lICdzL0ZBSUxFRC9GQUlML2cnfHNlZCAtZSAncy9TS0lQRUQvU0tJUC9nJ3wgYXdrICd7aWYgKCRORj09IlBBU1MiIHx8ICRORj09IkZBSUwiIHx8ICRORj09IlNLSVAiIHx8ICRORj09IlhGQUlMIiB8fCAkTkY9PSJYUEFTUyIpe3ByaW50ZiAiJXM6ICVzXG4iLCAkTkYsICQwfWVsc2V7cHJpbnR9fSd8IGF3ayAne2lmICgkTkY9PSJQQVNTIiB8fCAkTkY9PSJGQUlMIiB8fCAkTkY9PSJTS0lQIiB8fCAkTkY9PSJYRkFJTCIgfHwgJE5GPT0iWFBBU1MiKSB7JE5GPSIiO3ByaW50ICQwfWVsc2V7cHJpbnR9fScKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd2hvb3NoXzIuNy40LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13aG9vc2hfMi43LjQuYmIKaW5kZXggNWQ4YWYzMC4uM2FlNGY5MSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13aG9vc2hfMi43LjQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13aG9vc2hfMi43LjQuYmIKQEAgLTEsMiArMSw0MCBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi13aG9vc2guaW5jCitTVU1NQVJZID0gIkZhc3QsIHB1cmUtUHl0aG9uIGZ1bGwgdGV4dCBpbmRleGluZywgc2VhcmNoLCBhbmQgc3BlbGwgY2hlY2tpbmcgbGlicmFyeS4iCitERVNDUklQVElPTiA9ICJcCitXaG9vc2ggaXMgYSBmYXN0LCBmZWF0dXJlZnVsIGZ1bGwtdGV4dCBpbmRleGluZyBhbmQgc2VhcmNoaW5nIGxpYnJhcnkgXAoraW1wbGVtZW50ZWQgaW4gcHVyZSBQeXRob24uIFByb2dyYW1tZXJzIGNhbiB1c2UgaXQgdG8gZWFzaWx5IGFkZCBzZWFyY2ggXAorZnVuY3Rpb25hbGl0eSB0byB0aGVpciBhcHBsaWNhdGlvbnMgYW5kIHdlYnNpdGVzLiBFdmVyeSBwYXJ0IG9mIGhvdyBcCitXaG9vc2ggd29ya3MgY2FuIGJlIGV4dGVuZGVkIG9yIHJlcGxhY2VkIHRvIG1lZXQgeW91ciBuZWVkcyBleGFjdGx5LiIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTA1MzAzMTg2ZGVmYzYxNDExNDM2Mjk5NjFjN2M4YTYwIgorCitTUkNfVVJJW21kNXN1bV0gPSAiODkzNDMzZTljMDUyNWFjMDQzZGYzM2U2ZTA0Y2FhYjIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTA4NTczNzVmNjNlOTA0MWUwM2ZlZGQ1Yjc1NDFmOTdjZjc4OTE3YWMxYjZiMDZjMWZjYzliNDUzNzVkZGE2OSIKKworUFlQSV9QQUNLQUdFID0gIldob29zaCIKK1BZUElfUEFDS0FHRV9FWFQgPSAiemlwIgorCitpbmhlcml0IHB0ZXN0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIiBcCisgICAgJHtQWVRIT05fUE59LWVtYWlsIFwKKyAgICAke1BZVEhPTl9QTn0tbXVsdGlwcm9jZXNzaW5nIFwKKyAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKKyAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICAgJHtQWVRIT05fUE59LXBpY2tsZSBcCisgICAgJHtQWVRIT05fUE59LXNoZWxsIFwKKyAgICAke1BZVEhPTl9QTn0tc3RyaW5nb2xkIFwKKyIKKworU1JDX1VSSSArPSAiIFwKKyAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXB5dGVzdCBcCisgICAgJHtQWVRIT05fUE59LWZjbnRsIFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgY3AgLXJmICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd3JhcHRfMS4xMS4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13cmFwdF8xLjExLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1ZjQ0NmUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13cmFwdF8xLjExLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXdyYXB0LmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13cmFwdF8xLjEyLjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXdyYXB0XzEuMTIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OWZkZTEwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13cmFwdF8xLjEyLjEuYmIKQEAgLTAsMCArMSwxNSBAQAorU1VNTUFSWSA9ICJBIFB5dGhvbiBtb2R1bGUgZm9yIGRlY29yYXRvcnMsIHdyYXBwZXJzIGFuZCBtb25rZXkgcGF0Y2hpbmcuIgorSE9NRVBBR0UgPSAiaHR0cDovL3dyYXB0LnJlYWR0aGVkb2NzLm9yZy8iCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZmRmYzAxOWI1N2FmZmJlMWQ3YTMyZTNkMzRlODNkYjQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZDU2ZWQwZGU0MzM2NDYyYTczMzUwMzQxNDYyZjQ1ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNjJmZmE4MWZiODVmNDMzMmE0ZjYwOWNhYjRhYzQwNzA5NDcwZGEwNTY0M2EwODJlYzFlYjg4ZTZkOWI5N2Q3IgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMgCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLXRhcmdldCArPSAiXAorICAgICR7UFlUSE9OX1BOfS1zdHJpbmdvbGQgXAorICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13dGZvcm1zXzIuMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy13dGZvcm1zXzIuMi4xLmJiCmluZGV4IGFkZDU5Y2YuLjJiN2FmNjIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtd3Rmb3Jtc18yLjIuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXd0Zm9ybXNfMi4yLjEuYmIKQEAgLTEsMiArMSwxNyBAQAorREVTQ1JJUFRJT04gPSAiQSBmbGV4aWJsZSBmb3JtcyB2YWxpZGF0aW9uIGFuZCByZW5kZXJpbmcgbGlicmFyeSBmb3IgcHl0aG9uIHdlYiBkZXZlbG9wbWVudC4iCitIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL1dURm9ybXMiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PWM0NjYwYzEzMjc3MGQ1ZDBhNTc1NzU0MWY2Yjc5NDkzIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDFjMDAwOGRiZTdiZDk4ODkyYzU4Zjc0NTdhNDZhNGEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGNkYmFjM2U3ZjY4NzgwODZjMzM0YWEyNWRjNWEzMzg2OWEzOTU0ZTlkMWUwMTUxMzBkNjVhNjkzMDliM2I2MSIKKworUFlQSV9QQUNLQUdFID0gIldURm9ybXMiCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24td3Rmb3Jtcy5pbmMKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKKyAgICAke1BZVEhPTl9QTn0tbnVtYmVycyBcCisgICAgIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14bHJkL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteGxyZC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzM4NWQ2OAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteGxyZC9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0IC1vIGxvZ19jbGk9dHJ1ZSAtbyBsb2dfY2xpX2xldmVsPUlORk8gfCBzZWQgLWUgJ3MvXFsuLi4lXF0vL2cnfCBzZWQgLWUgJ3MvUEFTU0VEL1BBU1MvZyd8IHNlZCAtZSAncy9GQUlMRUQvRkFJTC9nJ3xzZWQgLWUgJ3MvU0tJUEVEL1NLSVAvZyd8IGF3ayAne2lmICgkTkY9PSJQQVNTIiB8fCAkTkY9PSJGQUlMIiB8fCAkTkY9PSJTS0lQIiB8fCAkTkY9PSJYRkFJTCIgfHwgJE5GPT0iWFBBU1MiKXtwcmludGYgIiVzOiAlc1xuIiwgJE5GLCAkMH1lbHNle3ByaW50fX0nfCBhd2sgJ3tpZiAoJE5GPT0iUEFTUyIgfHwgJE5GPT0iRkFJTCIgfHwgJE5GPT0iU0tJUCIgfHwgJE5GPT0iWEZBSUwiIHx8ICRORj09IlhQQVNTIikgeyRORj0iIjtwcmludCAkMH1lbHNle3ByaW50fX0nCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhscmRfMS4yLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhscmRfMS4yLjAuYmIKaW5kZXggYjdiZDk2OS4uNTcxZGJhNiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14bHJkXzEuMi4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteGxyZF8xLjIuMC5iYgpAQCAtMSwyICsxLDMxIEBACi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXhscmQuaW5jCitTVU1NQVJZID0gIkxpYnJhcnkgZm9yIGRldmVsb3BlcnMgdG8gZXh0cmFjdCBkYXRhIGZyb20gTWljcm9zb2Z0IEV4Y2VsICh0bSkgc3ByZWFkc2hlZXQgZmlsZXMiCitERVNDUklQVElPTiA9ICJFeHRyYWN0IGRhdGEgZnJvbSBFeGNlbCBzcHJlYWRzaGVldHMgKC54bHMgYW5kIC54bHN4LFwKKyB2ZXJzaW9ucyAyLjAgb253YXJkcykgb24gYW55IHBsYXRmb3JtLiBQdXJlIFB5dGhvbiAoMi42LCAyLjcsIDMuMispLiBcCitTdHJvbmcgc3VwcG9ydCBmb3IgRXhjZWwgZGF0ZXMuIFVuaWNvZGUtYXdhcmUuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5weXRob24tZXhjZWwub3JnLyIKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUEtHLUlORk87bWQ1PTVmNDI0NGQ1MWZjYzFlN2NjMmQ0M2U5Njg5MWIyZjgwIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZTVkNWI5NjkyNGQ3OTFiMjI4OThiNjIyZWIzZTkxOGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTQ2ZWIzNmNlZThkYjQwYzNlYWE0NmMzNTFlNjdmZmVlNmVlYjVmYTI2NTBiNzFiYzRjNzU4YTI5YTFiMjliMiIKKworU1JDX1VSSSArPSAiIFwKKyAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworaW5oZXJpdCBwdGVzdCBweXBpIHNldHVwdG9vbHMzCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BZVEhPTl9QTn0tY29tcHJlc3Npb24gJHtQWVRIT05fUE59LWlvICR7UFlUSE9OX1BOfS1wcHJpbnQgJHtQWVRIT05fUE59LXNoZWxsIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgY3AgLXJmICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L2V4YW1wbGVzCisgICAgY3AgLXJmICR7U30vZXhhbXBsZXMvKiAke0R9JHtQVEVTVF9QQVRIfS9leGFtcGxlcy8KK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14bWx0b2RpY3QvcnVuLXB0ZXN0IGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14bWx0b2RpY3QvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzODVkNjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhtbHRvZGljdC9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworcHl0ZXN0IC1vIGxvZ19jbGk9dHJ1ZSAtbyBsb2dfY2xpX2xldmVsPUlORk8gfCBzZWQgLWUgJ3MvXFsuLi4lXF0vL2cnfCBzZWQgLWUgJ3MvUEFTU0VEL1BBU1MvZyd8IHNlZCAtZSAncy9GQUlMRUQvRkFJTC9nJ3xzZWQgLWUgJ3MvU0tJUEVEL1NLSVAvZyd8IGF3ayAne2lmICgkTkY9PSJQQVNTIiB8fCAkTkY9PSJGQUlMIiB8fCAkTkY9PSJTS0lQIiB8fCAkTkY9PSJYRkFJTCIgfHwgJE5GPT0iWFBBU1MiKXtwcmludGYgIiVzOiAlc1xuIiwgJE5GLCAkMH1lbHNle3ByaW50fX0nfCBhd2sgJ3tpZiAoJE5GPT0iUEFTUyIgfHwgJE5GPT0iRkFJTCIgfHwgJE5GPT0iU0tJUCIgfHwgJE5GPT0iWEZBSUwiIHx8ICRORj09IlhQQVNTIikgeyRORj0iIjtwcmludCAkMH1lbHNle3ByaW50fX0nCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhtbHRvZGljdF8wLjEyLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhtbHRvZGljdF8wLjEyLjAuYmIKaW5kZXggMDBhYTgxOC4uZDA3ODg4MyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14bWx0b2RpY3RfMC4xMi4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteG1sdG9kaWN0XzAuMTIuMC5iYgpAQCAtOSw0ICs5LDE3IEBACiAKIFBZUElfUEFDS0FHRSA9ICJ4bWx0b2RpY3QiCiAKLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzIHB0ZXN0CisKK1NSQ19VUkkgKz0gIiBcCisJZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorCSR7UFlUSE9OX1BOfS1weXRlc3QgXAorIgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKwljcCAtcmYgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworfQpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14c3RhdGljLWZvbnQtYXdlc29tZV80LjcuMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14c3RhdGljLWZvbnQtYXdlc29tZV80LjcuMC4wLmJiCmluZGV4IDYzOWY4MGQuLmI0NWU5NmQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteHN0YXRpYy1mb250LWF3ZXNvbWVfNC43LjAuMC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhzdGF0aWMtZm9udC1hd2Vzb21lXzQuNy4wLjAuYmIKQEAgLTEsMiArMSwxNyBAQAorREVTQ1JJUFRJT04gPSAiRm9udCBBd2Vzb21lIGljb25zIHBhY2thZ2VkIGZvciBzZXR1cHRvb2xzIChlYXN5X2luc3RhbGwpIC8gcGlwLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvWFN0YXRpYy1Gb250LUF3ZXNvbWUiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTzttZDU9MzEzZDAyMTg5ODY5NGNkMmIwZWE2NTA4YmRmZTUxYTIiCisKK1BZUElfUEFDS0FHRSA9ICJYU3RhdGljLUZvbnQtQXdlc29tZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjE0MWEwZTlhN2UyMWU4MmY5MjI1NzNhMDBhZTBjMTY2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUwMWZiNDgwY2FhYTdjNzk2M2RjYjMzMjhhNDcwMGU2MzFiZWY2MDcwZGIwZThiNjg1ODE2ZDIyMGU2ODVmNmMiCisKK0RFUEVORFMgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXhzdGF0aWMgXAorICAgICR7UFlUSE9OX1BOfS1waXAgXAorIgorCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXhzdGF0aWMtZm9udC1hd2Vzb21lLmluYwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14c3RhdGljXzEuMC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14c3RhdGljXzEuMC4yLmJiCmluZGV4IDc2Y2I3MDIuLjhkZTM5NTkgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteHN0YXRpY18xLjAuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXhzdGF0aWNfMS4wLjIuYmIKQEAgLTEsMiArMSwxNiBAQAorREVTQ1JJUFRJT04gPSAiWFN0YXRpYyBiYXNlIHBhY2thZ2Ugd2l0aCBtaW5pbWFsIHN1cHBvcnQgY29kZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vcHlwaS5weXRob24ub3JnL3B5cGkvWFN0YXRpYyIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUudHh0O21kNT0xNDE4Njg0MjcyZjg1ZjQwMGNlYmYxYjFhMjU1YzVjZCIKKworUFlQSV9QQUNLQUdFID0gIlhTdGF0aWMiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkZWExNzJiN2IxNGIwZGJjZDVlZDYzMDc1MjIxYWY0YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4MGI3OGRmZTM3YmNlNmRlZTQzNDNkNjRjNjUzNzVhODBiY2YzOTliNDZkZDQ3YzBjN2Q1NjE2MTU2OGEyM2E4IgorCitERVBFTkRTICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1waXAgXAorIgorCiBpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXhzdGF0aWMuaW5jCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXh4aGFzaC9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXh4aGFzaC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM5OGZhOAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteHhoYXNoL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QgdGVzdHMvdGVzdC5weSAtbyBsb2dfY2xpPXRydWUgLW8gbG9nX2NsaV9sZXZlbD1JTkZPIHwgc2VkIC1lICdzL1xbLi4uJVxdLy9nJ3wgc2VkIC1lICdzL1BBU1NFRC9QQVNTL2cnfCBzZWQgLWUgJ3MvRkFJTEVEL0ZBSUwvZyd8c2VkIC1lICdzL1NLSVBFRC9TS0lQL2cnfCBhd2sgJ3tpZiAoJE5GPT0iUEFTUyIgfHwgJE5GPT0iRkFJTCIgfHwgJE5GPT0iU0tJUCIgfHwgJE5GPT0iWEZBSUwiIHx8ICRORj09IlhQQVNTIil7cHJpbnRmICIlczogJXNcbiIsICRORiwgJDB9ZWxzZXtwcmludH19J3wgYXdrICd7aWYgKCRORj09IlBBU1MiIHx8ICRORj09IkZBSUwiIHx8ICRORj09IlNLSVAiIHx8ICRORj09IlhGQUlMIiB8fCAkTkY9PSJYUEFTUyIpIHskTkY9IiI7cHJpbnQgJDB9ZWxzZXtwcmludH19JwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy14eGhhc2hfMS40LjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXh4aGFzaF8xLjQuMy5iYgppbmRleCA3NmJjNDFhLi5jMTE0YTZjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXh4aGFzaF8xLjQuMy5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXh4aGFzaF8xLjQuMy5iYgpAQCAtMSwyICsxLDIyIEBACi1yZXF1aXJlIHB5dGhvbi14eGhhc2guaW5jCi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKK1NVTU1BUlkgPSAieHhoYXNoIGlzIGEgUHl0aG9uIGJpbmRpbmcgZm9yIHRoZSB4eEhhc2ggbGlicmFyeSBieSBZYW5uIENvbGxldC4iCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NWE4ZDc2MjgzNTE0YTFiN2U2YTQxNGFiYTM4NjI5YjUiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZTljYmJjYzg5NjIwZmQ0N2EyNDY4YmFkZDA4ZGNmMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4YjZiMWFmZTc3MzFkN2Q5Y2JiMDM5OGI0YTgxMWViYjVlNmJlNWMxNzRmNzJjNjhhYmY4MWY5MTlhNDM1ZGU5IgorCitTUkNfVVJJICs9ICIgXAorICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMgcHRlc3QKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisgICAgJHtQWVRIT05fUE59LXB5dGVzdCBcCisiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgIGNwIC1yZiAke1N9L3Rlc3RzLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXlhcHBpL3J1bi1wdGVzdCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteWFwcGkvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzODVkNjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXlhcHBpL3J1bi1wdGVzdApAQCAtMCwwICsxLDMgQEAKKyMhL2Jpbi9zaAorCitweXRlc3QgLW8gbG9nX2NsaT10cnVlIC1vIGxvZ19jbGlfbGV2ZWw9SU5GTyB8IHNlZCAtZSAncy9cWy4uLiVcXS8vZyd8IHNlZCAtZSAncy9QQVNTRUQvUEFTUy9nJ3wgc2VkIC1lICdzL0ZBSUxFRC9GQUlML2cnfHNlZCAtZSAncy9TS0lQRUQvU0tJUC9nJ3wgYXdrICd7aWYgKCRORj09IlBBU1MiIHx8ICRORj09IkZBSUwiIHx8ICRORj09IlNLSVAiIHx8ICRORj09IlhGQUlMIiB8fCAkTkY9PSJYUEFTUyIpe3ByaW50ZiAiJXM6ICVzXG4iLCAkTkYsICQwfWVsc2V7cHJpbnR9fSd8IGF3ayAne2lmICgkTkY9PSJQQVNTIiB8fCAkTkY9PSJGQUlMIiB8fCAkTkY9PSJTS0lQIiB8fCAkTkY9PSJYRkFJTCIgfHwgJE5GPT0iWFBBU1MiKSB7JE5GPSIiO3ByaW50ICQwfWVsc2V7cHJpbnR9fScKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteWFwcGlfMS4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy15YXBwaV8xLjAuYmIKaW5kZXggMDdkYTViNi4uNzVkZTRkZiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy15YXBwaV8xLjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy15YXBwaV8xLjAuYmIKQEAgLTEsMiArMSwzMiBAQAotcmVxdWlyZSBweXRob24teWFwcGkuaW5jCi1pbmhlcml0IHNldHVwdG9vbHMzCitTVU1NQVJZICA9ICJZZXQgQW5vdGhlciBQeXRob24gUHJvZmlsZXIiCitIT01FUEFHRSA9ICJodHRwOi8veWFwcGkuZ29vZ2xlY29kZS5jb20vIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1BLRy1JTkZPO21kNT05YTE5M2MxM2YzNDY4ODRlNTk3YWNkY2FjN2ZlOWFjOCIKKworU1JDX1VSSVttZDVzdW1dID0gImE1NDUxMDFhYThhNDM1YjA3ODBmMDZmNDcyM2Y1OGM4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdmODE0MTMxNTE1ZDUxZGI2MmIxYTM0NjhiY2I4NGRlMzA0OTkxMjQ3NTI4MDZhNWE2ZTExY2FmMGI0MzQ0YmYiCisKK1NSQ19VUkkgKz0gIiBcCisgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMyBwdGVzdAorCitSREVQRU5EU18ke1BOfSArPSAiXAorICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisgICAgJHtQWVRIT05fUE59LXBpY2tsZSBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1weXRlc3QgXAorICAgICR7UFlUSE9OX1BOfS1tdWx0aXByb2Nlc3NpbmcgXAorICAgICR7UFlUSE9OX1BOfS1wcm9maWxlIFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgY3AgLXJmICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KKyAgICBjcCAtZiAke1N9L3lhcHBpLnB5ICR7RH0vJHtQVEVTVF9QQVRIfS8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteWFybC9ydW4tcHRlc3QgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXlhcmwvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMzODVkNjgKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXlhcmwvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsMyBAQAorIyEvYmluL3NoCisKK3B5dGVzdCAtbyBsb2dfY2xpPXRydWUgLW8gbG9nX2NsaV9sZXZlbD1JTkZPIHwgc2VkIC1lICdzL1xbLi4uJVxdLy9nJ3wgc2VkIC1lICdzL1BBU1NFRC9QQVNTL2cnfCBzZWQgLWUgJ3MvRkFJTEVEL0ZBSUwvZyd8c2VkIC1lICdzL1NLSVBFRC9TS0lQL2cnfCBhd2sgJ3tpZiAoJE5GPT0iUEFTUyIgfHwgJE5GPT0iRkFJTCIgfHwgJE5GPT0iU0tJUCIgfHwgJE5GPT0iWEZBSUwiIHx8ICRORj09IlhQQVNTIil7cHJpbnRmICIlczogJXNcbiIsICRORiwgJDB9ZWxzZXtwcmludH19J3wgYXdrICd7aWYgKCRORj09IlBBU1MiIHx8ICRORj09IkZBSUwiIHx8ICRORj09IlNLSVAiIHx8ICRORj09IlhGQUlMIiB8fCAkTkY9PSJYUEFTUyIpIHskTkY9IiI7cHJpbnQgJDB9ZWxzZXtwcmludH19JwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy15YXJsXzEuNC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy15YXJsXzEuNC4yLmJiCmluZGV4IGM1ZGY0NDIuLjE1ZDkyMDYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMteWFybF8xLjQuMi5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXlhcmxfMS40LjIuYmIKQEAgLTEsMiArMSwyOSBAQAotaW5oZXJpdCBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24teWFybC5pbmMKK1NVTU1BUlkgPSAiVGhlIG1vZHVsZSBwcm92aWRlcyBoYW5keSBVUkwgY2xhc3MgZm9yIHVybCBwYXJzaW5nIGFuZCBjaGFuZ2luZyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9haW8tbGlicy95YXJsLyIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIzMzRmYzkwZDQ1OTgzZGIzMThmNTRmZDViZjZjOTBiIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDhiYTBkNmUxOGY0NjBiNDRkOWU1NDU5ZjNkMjE3YmEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNThjZDljNDY5ZWNlZDU1OGNkODFhYTNmNDg0YjI5MjRlODg5NzA0OWUwNjg4OWU4ZmYyNTEwNDM1YjdlZjc0YiIKKworU1JDX1VSSSArPSAiIFwKKyAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworUFlQSV9QQUNLQUdFID0gInlhcmwiCisKK2luaGVyaXQgcHlwaSBwdGVzdCBzZXR1cHRvb2xzMworCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgJHtQWVRIT05fUE59LW11bHRpZGljdCBcCisgICAgJHtQWVRIT05fUE59LWlkbmEgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKyAgICAke1BZVEhPTl9QTn0tcHl0ZXN0IFwKKyIKKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgY3AgLXJmICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KK30KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtemlwcF8wLjYuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtemlwcF8wLjYuMC5iYgppbmRleCBiNzg2NjNmLi4xMDE5MDgxIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXppcHBfMC42LjAuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy16aXBwXzAuNi4wLmJiCkBAIC0xLDIgKzEsMTUgQEAKK0RFU0NSSVBUSU9OID0gIkJhY2twb3J0IG9mIHBhdGhsaWItY29tcGF0aWJsZSBvYmplY3Qgd3JhcHBlciBmb3IgemlwIGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2phcmFjby96aXBwIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hMzNmMzhiYmY0N2Q0OGM3MGZlMGQ0MGU1Zjc3NDk4ZSIKKworU1JDX1VSSVttZDVzdW1dID0gImQ0NDUxYTc0OWQ4YTdjM2MzOTJhOWVkZDE4NjRhOTM3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM3MThiMWNiY2Q5NjNjN2Q0YzU1MTFhODI0MDgxMjkwNDE2NGI3ZjM4MWI2NDcxNDNhODlkM2I5OGY5YmNkOGUiCisKK0RFUEVORFMgKz0gIiR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzLXNjbS1uYXRpdmUiCisKIGluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotcmVxdWlyZSBweXRob24temlwcC5pbmMKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UFlUSE9OX1BOfS1tb3JlLWl0ZXJ0b29scyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy16b3BlaW50ZXJmYWNlXzQuNy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy16b3BlaW50ZXJmYWNlXzQuNy4xLmJiCmluZGV4IGJlMTE4NTguLjZiNjU5MjQgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtem9wZWludGVyZmFjZV80LjcuMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXpvcGVpbnRlcmZhY2VfNC43LjEuYmIKQEAgLTEsNCArMSwyNSBAQAotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi16b3BlaW50ZXJmYWNlLmluYworU1VNTUFSWSA9ICJJbnRlcmZhY2UgZGVmaW5pdGlvbnMgZm9yIFpvcGUgcHJvZHVjdHMiCitMSUNFTlNFID0gIlpQTC0yLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QS0ctSU5GTztiZWdpbmxpbmU9ODtlbmRsaW5lPTg7bWQ1PWU1NGZkNzc2Mjc0YzFiNzQyM2VjMTI4OTc0YmQ5ZDQ2IgogCitTUkNfVVJJW21kNXN1bV0gPSAiMWJjNjY3NTgyNzVjNWViNjZkMTY5YWNiYTNjOGU1MGUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGJiOTM3ZTk5OGJlOWQ1ZTM0NWY0ODY2OTNlNDc3YmE3OWU0MzQ0Njc0NDg0MDAxYTBiNjQ2YmUxZDUzMDQ4NyIKKworUFlQSV9QQUNLQUdFID0gInpvcGUuaW50ZXJmYWNlIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUEFDS0FHRVMgPS4gIiR7UE59LXRlc3QgIgorCitSUFJPVklERVNfJHtQTn0gKz0gInpvcGUtaW50ZXJmYWNlcyIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ICs9ICIke1BZVEhPTl9QTn0tZGF0ZXRpbWUiCiBSREVQRU5EU18ke1BOfS10ZXN0ICs9ICJweXRob24zLXVuaXR0ZXN0IHB5dGhvbjMtZG9jdGVzdCIKKworRklMRVNfJHtQTn0tZGJnICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmVnZy8qLyovLmRlYnVnIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS96b3BlL2ludGVyZmFjZS8qLmMiCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3pvcGUvaW50ZXJmYWNlLyoudHh0IgorRklMRVNfJHtQTn0tdGVzdCArPSAiIFwKKyAgICAgICAgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vem9wZS9pbnRlcmZhY2UvdGVzdHMgXAorICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS96b3BlL2ludGVyZmFjZS9jb21tb24vdGVzdHMgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tY3Nvbi9weXRob24tY3Nvbl9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1jc29uL3B5dGhvbi1jc29uX2dpdC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWZiMzM4Yy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1jc29uL3B5dGhvbi1jc29uX2dpdC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLSMgQ29weXJpZ2h0IChDKSAyMDE1IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0jIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCi0KLURFU0NSSVBUSU9OID0gIlB5dGhvbiBsaWJyYXJ5IGZvciBDU09OIChzY2hlbWEtY29tcHJlc3NlZCBKU09OKSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ndDMzODliL3B5dGhvbi1jc29uLyIKLUxJQ0VOU0UgPSAiTUlUIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NzA5ZDI2MzVlNjNhYjk2OTczMDU1YTIzYzJhNGNhYyIKLQotU1JDUkVWID0gImYzZjI4OThjNDRiYjE2Yjk1MWQzZTlmMmZiZjZkMWM0MTU4ZWRkYTIiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZ3QzMzg5Yi9weXRob24tY3Nvbi5naXQiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHB5dGhvbi1uYXRpdmUgIgotCi1pbmhlcml0IHNldHVwdG9vbHMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWNzb24vcHl0aG9uMy1jc29uX2dpdC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcHl0aG9uL3JlY2lwZXMtZXh0ZW5kZWQvcHl0aG9uLWNzb24vcHl0aG9uMy1jc29uX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41Yzc0YzdhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tY3Nvbi9weXRob24zLWNzb25fZ2l0LmJiCkBAIC0wLDAgKzEsMjEgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE1IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCisKK0RFU0NSSVBUSU9OID0gIlB5dGhvbiBsaWJyYXJ5IGZvciBDU09OIChzY2hlbWEtY29tcHJlc3NlZCBKU09OKSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ndDMzODliL3B5dGhvbi1jc29uLyIKK0xJQ0VOU0UgPSAiTUlUIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NzA5ZDI2MzVlNjNhYjk2OTczMDU1YTIzYzJhNGNhYyIKKworU1JDUkVWID0gImYzZjI4OThjNDRiYjE2Yjk1MWQzZTlmMmZiZjZkMWM0MTU4ZWRkYTIiCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZ3QzMzg5Yi9weXRob24tY3Nvbi5naXQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCitERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIHB5dGhvbi1uYXRpdmUgIgorCitpbmhlcml0IHNldHVwdG9vbHMzCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWVwaGVtL3B5dGhvbi1weWVwaGVtXzMuNy43LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWVwaGVtL3B5dGhvbi1weWVwaGVtXzMuNy43LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyMmYwZGIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHllcGhlbS9weXRob24tcHllcGhlbV8zLjcuNy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJQeUVwaGVtIGFzdHJvbm9taWNhbCBjYWxjdWxhdGlvbnMiCi1IT01FUEFHRSA9ICJodHRwOi8vcmhvZGVzbWlsbC5vcmcvcHllcGhlbS8iCi0KLUxJQ0VOU0UgPSAiTEdQTC0zLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMjg4MzAzNzYwZjZlNWNlYWFmZTNhYWEzMjE4NmFiMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQ2YzAzNWI0YTkwM2ZmMjZlMGQ4YWQwZjFmZTZjYzM1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYwNzE0ODQyOWY4NTQxMjkxNWUzMjI2NTc3OWMwY2Y2ZDA5ZjczYWE5N2NmMWZmMGQxMDFhYzIyYzY5YzQ0MzYiCi0KLVBZUElfUEFDS0FHRSA9ICJlcGhlbSIKLQotaW5oZXJpdCBweXBpIHNldHVwdG9vbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAotICAgICR7UFlUSE9OX1BOfS1tYXRoIFwKLSAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weWVwaGVtL3B5dGhvbjMtcHllcGhlbV8zLjcuNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHllcGhlbS9weXRob24zLXB5ZXBoZW1fMy43LjcuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOGIzYzBhCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHllcGhlbS9weXRob24zLXB5ZXBoZW1fMy43LjcuMC5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIlB5RXBoZW0gYXN0cm9ub21pY2FsIGNhbGN1bGF0aW9ucyIKK0hPTUVQQUdFID0gImh0dHA6Ly9yaG9kZXNtaWxsLm9yZy9weWVwaGVtLyIKKworTElDRU5TRSA9ICJMR1BMLTMuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYyODgzMDM3NjBmNmU1Y2VhYWZlM2FhYTMyMTg2YWIxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDZjMDM1YjRhOTAzZmYyNmUwZDhhZDBmMWZlNmNjMzUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjA3MTQ4NDI5Zjg1NDEyOTE1ZTMyMjY1Nzc5YzBjZjZkMDlmNzNhYTk3Y2YxZmYwZDEwMWFjMjJjNjljNDQzNiIKKworUFlQSV9QQUNLQUdFID0gImVwaGVtIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworUkRFUEVORFNfJHtQTn0gKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tZGF0ZXRpbWUgXAorICAgICR7UFlUSE9OX1BOfS1tYXRoIFwKKyAgICAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weXBhcnRlZC9weXRob24tcHlwYXJ0ZWRfMy4xMS4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXRob24tcHlwYXJ0ZWQvcHl0aG9uLXB5cGFydGVkXzMuMTEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJhYTM3OC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5dGhvbi1weXBhcnRlZC9weXRob24tcHlwYXJ0ZWRfMy4xMS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1weXBhcnRlZC5pbmMKLQotaW5oZXJpdCBkaXN0dXRpbHMKLQotUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbi1zdHJpbmdvbGQgcHl0aG9uLWNvZGVjcyBweXRob24tbWF0aCBweXRob24tc3VicHJvY2VzcyIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1weXRob24vcmVjaXBlcy1leHRlbmRlZC9weXdiZW0vcHl0aG9uLXB5d2JlbV8wLjE1LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5d2JlbS9weXRob24tcHl3YmVtXzAuMTUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY5OWYxYy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXB5dGhvbi9yZWNpcGVzLWV4dGVuZGVkL3B5d2JlbS9weXRob24tcHl3YmVtXzAuMTUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLXJlcXVpcmUgcHl0aG9uLXB5d2JlbS5pbmMKLWluaGVyaXQgc2V0dXB0b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLURFUEVORFMgKz0gIiBcCi0gICAgJHtQWVRIT05fUE59LW0yY3J5cHRvLW5hdGl2ZSBcCi0gICAgJHtQWVRIT05fUE59LXR5cGluZy1uYXRpdmUgXAotIgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKLSAgICAke1BZVEhPTl9QTn0tYXJncGFyc2UgXAotICAgICR7UFlUSE9OX1BOfS1tMmNyeXB0byBcCi0gICAgJHtQWVRIT05fUE59LXN1YnByb2Nlc3MgXAotIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJtb2ZfY29tcGlsZXIgcHl3YmVtY2xpIHdiZW1jbGkiCi1BTFRFUk5BVElWRV9UQVJHRVRbbW9mX2NvbXBpbGVyXSA9ICIke2JpbmRpcn0vbW9mX2NvbXBpbGVyIgotQUxURVJOQVRJVkVfVEFSR0VUW3B5d2JlbWNsaV0gPSAiJHtiaW5kaXJ9L3B5d2JlbWNsaSIKLUFMVEVSTkFUSVZFX1RBUkdFVFt3YmVtY2xpXSA9ICIke2JpbmRpcn0vd2JlbWNsaSIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMzAiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9jb25mL2xheWVyLmNvbmYgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9jb25mL2xheWVyLmNvbmYKaW5kZXggMmM2ZmFkNC4uMjQ0NjkxMSAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvY29uZi9sYXllci5jb25mCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL2NvbmYvbGF5ZXIuY29uZgpAQCAtMTcsNyArMTcsNyBAQAogCiBMQVlFUkRFUEVORFNfd2Vic2VydmVyID0gImNvcmUgb3BlbmVtYmVkZGVkLWxheWVyIgogCi1MQVlFUlNFUklFU19DT01QQVRfd2Vic2VydmVyID0gInRodWQgd2FycmlvciB6ZXVzIgorTEFZRVJTRVJJRVNfQ09NUEFUX3dlYnNlcnZlciA9ICJ0aHVkIHdhcnJpb3IgemV1cyBkdW5mZWxsIgogCiBMSUNFTlNFX1BBVEggKz0gIiR7TEFZRVJESVJ9L2xpY2Vuc2VzIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWNvcmUvcGFja2FnZXNncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtd2Vic2VydmVyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1jb3JlL3BhY2thZ2VzZ3JvdXBzL3BhY2thZ2Vncm91cC1tZXRhLXdlYnNlcnZlci5iYgppbmRleCBmYzExNzg1Li5mNWQ1ZGViIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWNvcmUvcGFja2FnZXNncm91cHMvcGFja2FnZWdyb3VwLW1ldGEtd2Vic2VydmVyLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtY29yZS9wYWNrYWdlc2dyb3Vwcy9wYWNrYWdlZ3JvdXAtbWV0YS13ZWJzZXJ2ZXIuYmIKQEAgLTE5LDggKzE5LDkgQEAKICIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtd2Vic2VydmVyLWh0dHAgPSAiXAotICAgIG5naW54IG1vbmtleSBjaGVyb2tlZSBoaWF3YXRoYSBub3N0cm9tbyBhcGFjaGUtd2Vic29ja2V0IFwKKyAgICBuZ2lueCBtb25rZXkgaGlhd2F0aGEgbm9zdHJvbW8gYXBhY2hlLXdlYnNvY2tldCBcCiAgICAgYXBhY2hlMiBzdGh0dHBkIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiQkJGSUxFX0NPTExFQ1RJT05TIiwgIm1ldGEtcHl0aG9uMiIsICJjaGVyb2tlZSIsICIiLCBkKX0gXAogICAgICIKIAogUkRFUEVORFNfcGFja2FnZWdyb3VwLW1ldGEtd2Vic2VydmVyLXBocCA9ICJcCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi8wMDAxLXN1cHBvcnQtYXB4cy5pbi1mb3JjZS1kZXN0ZGlyLXRvLWJlLWVtcHR5LXN0cmluZy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyLzAwMDEtc3VwcG9ydC1hcHhzLmluLWZvcmNlLWRlc3RkaXItdG8tYmUtZW1wdHktc3RyaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJkZWRkMTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2FwYWNoZTIvYXBhY2hlMi8wMDAxLXN1cHBvcnQtYXB4cy5pbi1mb3JjZS1kZXN0ZGlyLXRvLWJlLWVtcHR5LXN0cmluZy5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIDcwNWMwYTdlOWQ5YzFlNjRlZTA5ZmMwYjU0ZjZiNWE0ZTI3ZGUxY2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUcmV2b3IgR2FtYmxpbiA8dHJldm9yLmdhbWJsaW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMTcgQXByIDIwMjAgMDY6MzE6MzUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3VwcG9ydC9hcHhzLmluOiBmb3JjZSBkZXN0ZGlyIHRvIGJlIGVtcHR5IHN0cmluZworCitJZiBkZXN0ZGlyIGlzIGFzc2lnbmVkIHRvIGFueXRoaW5nIG90aGVyIHRoYW4gdGhlIGVtcHR5IHN0cmluZywgdGhlIAorc2VhcmNoIHBhdGggZm9yIGFwYWNoZTIgY29uZmlnIGZpbGVzIGlzIGFwcGVuZGVkIHRvIGl0c2VsZiwgYW5kIAorcmVsYXRlZCBwYWNrYWdlcyBsaWtlIGFwYWNoZS13ZWJzb2NrZXQgd2lsbCBiZSB1bmFibGUgdG8gbG9jYXRlIHRoZW06CisKK3wgY2Fubm90IG9wZW4KKy9hbGEtbHBnZ3AzMS90Z2FtYmxpbi95b2N0by9wb2t5LmdpdC9idWlsZC90bXAvd29yay9jb3JlMi02NC1wb2t5LWxpbnV4L2FwYWNoZS13ZWJzb2NrZXQvMC4xLjErZ2l0QVVUT0lOQys2OTY4MDgzMjY0LXIwL3JlY2lwZS1zeXNyb290L2FsYS1scGdncDMxL3RnYW1ibGluL3lvY3RvL3Bva3kuZ2l0L2J1aWxkL3RtcC93b3JrL2NvcmUyLTY0LXBva3ktbGludXgvYXBhY2hlLXdlYnNvY2tldC8wLjEuMStnaXRBVVRPSU5DKzY5NjgwODMyNjQtcjAvcmVjaXBlLXN5c3Jvb3QvL3Vzci9zaGFyZS9hcGFjaGUyL2J1aWxkL2NvbmZpZ192YXJzLm1rOgorTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeSBhdAorL2FsYS1scGdncDMxL3RnYW1ibGluL3lvY3RvL3Bva3kuZ2l0L2J1aWxkL3RtcC93b3JrL2NvcmUyLTY0LXBva3ktbGludXgvYXBhY2hlLXdlYnNvY2tldC8wLjEuMStnaXRBVVRPSU5DKzY5NjgwODMyNjQtcjAvcmVjaXBlLXN5c3Jvb3QvdXNyL2Jpbi9jcm9zc3NjcmlwdHMvYXB4cworbGluZSAyMTMuCisKK0Vuc3VyZSB0aGF0IGl0IGlzIGFsd2F5cyB0aGUgZW1wdHkgc3RyaW5nIHNvIHRoYXQgYXBhY2hlLXdlYnNvY2tldAoraXMgYWJsZSB0byBmaW5kIHRoZSByZXF1aXJlZCBjb25maWcgZmlsZXMuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSAoZW1iZWRkZWQtc3BlY2lmaWMpCisKK1NpZ25lZC1vZmYtYnk6IFRyZXZvciBHYW1ibGluIDx0cmV2b3IuZ2FtYmxpbkB3aW5kcml2ZXIuY29tPgorLS0tCisgc3VwcG9ydC9hcHhzLmluIHwgMTAgKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zdXBwb3J0L2FweHMuaW4gYi9zdXBwb3J0L2FweHMuaW4KK2luZGV4IDY1ZTEyODg1MjcuLjlkOTZlMzM3MjggMTAwNjQ0CistLS0gYS9zdXBwb3J0L2FweHMuaW4KKysrKyBiL3N1cHBvcnQvYXB4cy5pbgorQEAgLTI4LDEwICsyOCwxMiBAQCBwYWNrYWdlIGFweHM7CisgIyAgIGlzIHRoZSBlbXB0eSBzdHJpbmcuCisgCisgbXkgJGRlc3RkaXIgPSAiIjsKKy1teSAkZGRpID0gcmluZGV4KCQwLCAiQGV4cF9iaW5kaXJAIik7CistaWYgKCRkZGkgPj0gMCkgeworLSAgJGRlc3RkaXIgPSBzdWJzdHIoJDAsIDAsICRkZGkpOworLX0KKysjIENvbW1lbnQgb3V0IGFzc2lnbm1lbnQgb2YgZGVzdGRpciBzbyB0aGF0IGl0IGRvZXNuJ3QgYWZmZWN0IGJpdGJha2UKKysjIGNyb3NzLWNvbXBpbGF0aW9uIHNldHVwCisrI215ICRkZGkgPSByaW5kZXgoJDAsICJAZXhwX2JpbmRpckAiKTsKKysjaWYgKCRkZGkgPj0gMCkgeworKyMgICRkZXN0ZGlyID0gc3Vic3RyKCQwLCAwLCAkZGRpKTsKKysjfQorIAorIG15ICVjb25maWdfdmFycyA9ICgpOworIAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTJfMi40LjQxLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTJfMi40LjQxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMzQ3MzRjLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyXzIuNC40MS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxNSArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGUgQXBhY2hlIEhUVFAgU2VydmVyIGlzIGEgcG93ZXJmdWwsIGVmZmljaWVudCwgYW5kIFwKLWV4dGVuc2libGUgd2ViIHNlcnZlci4iCi1TVU1NQVJZID0gIkFwYWNoZSBIVFRQIFNlcnZlciIKLUhPTUVQQUdFID0gImh0dHA6Ly9odHRwZC5hcGFjaGUub3JnLyIKLVNFQ1RJT04gPSAibmV0IgotTElDRU5TRSA9ICJBcGFjaGUtMi4wIgotCi1TUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vaHR0cGQvaHR0cGQtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS11c2UtcGtnLWNvbmZpZy1mb3ItUENSRS1kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1hcGFjaGUyLWJ1bXAtdXAtdGhlLWNvcmUtc2l6ZS1saW1pdC1pZi1Db3JlRHVtcERpcmVjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtYXBhY2hlMi1kby1ub3QtZXhwb3J0LWFwci1hcHItdXRpbC1zeW1ib2xzLXdoZW4tdXNpbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWFwYWNoZTItbG9nLXRoZS1TRUxpbnV4LWNvbnRleHQtYXQtc3RhcnR1cC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LXJlcGxhY2UtbHlueC10by1jdXJsLWluLWFwYWNoZWN0bC1zY3JpcHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1hcGFjaGUyLWZpeC10aGUtcmFjZS1pc3N1ZS1vZi1wYXJhbGxlbC1pbnN0YWxsYXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1hcGFjaGUyLWFsbG93LXRvLWRpc2FibGUtc2VsaW51eC1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FwYWNoZS1jb25maWd1cmVfcGVybGJpbi5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtYXBhY2hlMi1kby1ub3QtdXNlLXJlbGF0aXZlLXBhdGgtZm9yLWdlbl90ZXN0X2NoYXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly9hcGFjaGUyLXZvbGF0aWxlLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vYXBhY2hlMi5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy4wNF9hcGFjaGUyIFwKLSAgICAgICAgICAgIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kNTJkMGZkMGJjNzg4ZjA2OGU2NDcxMTZjMDFkZGZjZCIKLVNSQ19VUklbbWQ1c3VtXSA9ICJkZmM2NzRmOGY0NTRlM2JjMmQ0Y2NkNzNhZDNiNWYxZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMzNkNDgyOThmZTUzMTVhZTkzNjZhMGVjNjYyODJmYTQwNDBlZmE1ZDU2NjE3NDQ4MTA3N2FkZTdkMThlYTQwIgotCi1TID0gIiR7V09SS0RJUn0vaHR0cGQtJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotREVQRU5EUyA9ICJvcGVuc3NsIGV4cGF0IHBjcmUgYXByIGFwci11dGlsIGFwYWNoZTItbmF0aXZlICIKLQotQ1ZFX1BST0RVQ1QgPSAiaHR0cF9zZXJ2ZXIiCi0KLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICJhcHhzIGNvbmZpZ192YXJzLm1rIGNvbmZpZy5uaWNlIgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzZWxpbnV4JywgZCl9IgotUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItLWVuYWJsZS1zZWxpbnV4LC0tZGlzYWJsZS1zZWxpbnV4LGxpYnNlbGludXgsbGlic2VsaW51eCIKLVBBQ0tBR0VDT05GSUdbb3BlbmxkYXBdID0gIi0tZW5hYmxlLWxkYXAgLS1lbmFibGUtYXV0aG56LWxkYXAsLS1kaXNhYmxlLWxkYXAgLS1kaXNhYmxlLWF1dGhuei1sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLWVuYWJsZS1kZWZsYXRlLCx6bGliLHpsaWIiCi0KLUNGTEFHU19hcHBlbmQgPSAiIC1EUEFUSF9NQVg9NDA5NiIKLQotRVhUUkFfT0VDT05GX2NsYXNzLXRhcmdldCA9ICJcCi0gICAgLS1lbmFibGUtbGF5b3V0PURlYmlhbiBcCi0gICAgLS1wcmVmaXg9JHtiYXNlX3ByZWZpeH0gXAotICAgIC0tZXhlY19wcmVmaXg9JHtleGVjX3ByZWZpeH0gXAotICAgIC0taW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LyR7QlBOfSBcCi0gICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vJHtCUE59IFwKLSAgICAtLWRhdGFkaXI9JHtkYXRhZGlyfS8ke0JQTn0gXAotICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCi0gICAgLS1saWJleGVjZGlyPSR7bGliZXhlY2Rpcn0vJHtCUE59L21vZHVsZXMgXAotICAgIC0tbG9jYWxzdGF0ZWRpcj0ke2xvY2Fsc3RhdGVkaXJ9IFwKLSAgICAtLWVuYWJsZS1zc2wgXAotICAgIC0td2l0aC1kYm09c2RibSBcCi0gICAgLS13aXRoLWdkYm09bm8gXAotICAgIC0td2l0aC1uZGJtPW5vIFwKLSAgICAtLXdpdGgtYmVya2VsZXktZGI9bm8gXAotICAgIC0tZW5hYmxlLWluZm8gXAotICAgIC0tZW5hYmxlLXJld3JpdGUgXAotICAgIC0tZW5hYmxlLW1wbXMtc2hhcmVkIFwKLSAgICBhcF9jdl92b2lkX3B0cl9sdF9sb25nPW5vIFwKLSAgICBhY19jdl9oYXZlX3RocmVhZHNhZmVfcG9sbHNldD1ubyBcCi0gICAgIgotCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIlwKLSAgICAtLXByZWZpeD0ke3ByZWZpeH0gXAotICAgIC0taW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LyR7QlBOfSBcCi0gICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vJHtCUE59IFwKLSAgICAtLWRhdGFkaXI9JHtkYXRhZGlyfS8ke0JQTn0gXAotICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCi0gICAgLS1saWJleGVjZGlyPSR7bGliZGlyfS8ke0JQTn0vbW9kdWxlcyBcCi0gICAgLS1sb2NhbHN0YXRlZGlyPSR7bG9jYWxzdGF0ZWRpcn0gXAotICAgICIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lICdzOiQnJ3twcmVmaXh9L3Vzci9saWIvY2dpLWJpbjokJyd7bGliZXhlY2Rpcn0vY2dpLWJpbjpnJyAke1N9L2NvbmZpZy5sYXlvdXQKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAotCi0gICAgY2F0ICR7V09SS0RJUn0vaW5pdCB8IFwKLSAgICAgICAgc2VkIC1lICdzLC91c3Ivc2Jpbi8sJHtzYmluZGlyfS8sZycgXAotICAgICAgICAgICAgLWUgJ3MsL3Vzci9iaW4vLCR7YmluZGlyfS8sZycgXAotICAgICAgICAgICAgLWUgJ3MsL3Vzci9saWIvLCR7bGliZGlyfS8sZycgXAotICAgICAgICAgICAgLWUgJ3MsL2V0Yy8sJHtzeXNjb25mZGlyfS8sZycgXAotICAgICAgICAgICAgLWUgJ3MsL3Vzci8sJHtwcmVmaXh9LyxnJyA+ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59Ci0KLSAgICBjaG1vZCA3NTUgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0KLQotICAgICMgUmVtb3ZlIHRoZSBnb29meSBvcmlnaW5hbCBmaWxlcy4uLgotICAgIHJtIC1yZiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L29yaWdpbmFsCi0KLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9jb25mLmQKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9tb2R1bGVzLmQKLQotICAgICMgRW5zdXJlIGNvbmZpZ3VyYXRpb24gZmlsZSBwdWxscyBpbiBjb25mLmQgYW5kIG1vZHVsZXMuZAotICAgIHByaW50ZiAiXG5JbmNsdWRlT3B0aW9uYWwgJHtzeXNjb25mZGlyfS8ke0JQTn0vY29uZi5kLyouY29uZiIgPj4gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCi0gICAgcHJpbnRmICJcbkluY2x1ZGVPcHRpb25hbCAke3N5c2NvbmZkaXJ9LyR7QlBOfS9tb2R1bGVzLmQvKi5sb2FkIiA+PiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKLSAgICBwcmludGYgIlxuSW5jbHVkZU9wdGlvbmFsICR7c3lzY29uZmRpcn0vJHtCUE59L21vZHVsZXMuZC8qLmNvbmZcblxuIiA+PiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKLQotICAgICMgTWF0Y2ggd2l0aCB0aGF0IGlzIGluIGluaXQgc2NyaXB0Ci0gICAgcHJpbnRmICJcblBpZEZpbGUgL3J1bi9odHRwZC5waWQiID4+ICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgotCi0gICAgIyBTZXQgJ1NlcnZlck5hbWUnIHRvIGZpeCBlcnJvciBtZXNzYWdlcyB3aGVuIHJlc3RhcnQgYXBhY2hlIHNlcnZpY2UKLSAgICBzZWQgLWkgJ3MvXiNTZXJ2ZXJOYW1lIHd3dy5leGFtcGxlLmNvbS9TZXJ2ZXJOYW1lIGxvY2FsaG9zdC8nICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgotCi0gICAgc2VkIC1pICdzL15TZXJ2ZXJSb290LyNTZXJ2ZXJSb290LycgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCi0KLSAgICBzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCi0gICAgICAgICAgIC1lICdzLCR7REVCVUdfUFJFRklYX01BUH0sLGcnIFwKLSAgICAgICAgICAgLWUgJ3MsLWZkZWJ1Zy1wcmVmaXgtbWFwW14gXSosLGc7IHMsLWZtYWNyby1wcmVmaXgtbWFwW14gXSosLGcnIFwKLSAgICAgICAgICAgLWUgJ3MsJHtIT1NUVE9PTFNfRElSfS8sLGcnIFwKLSAgICAgICAgICAgLWUgJ3MsQVBVX0lOQ0xVREVESVIgPSAuKixBUFVfSU5DTFVERURJUiA9ICxnJyBcCi0gICAgICAgICAgIC1lICdzLEFQVV9DT05GSUcgPSAuKixBUFVfQ09ORklHID0gLGcnICR7RH0ke2RhdGFkaXJ9L2FwYWNoZTIvYnVpbGQvY29uZmlnX3ZhcnMubWsKLQotICAgIHNlZCAtaSAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCi0gICAgICAgICAgIC1lICdzLCR7REVCVUdfUFJFRklYX01BUH0sLGcnIFwKLSAgICAgICAgICAgLWUgJ3MsJHtSRUNJUEVfU1lTUk9PVH0sLGcnIFwKLSAgICAgICAgICAgLWUgJ3MsLWZkZWJ1Zy1wcmVmaXgtbWFwW14gXSosLGc7IHMsLWZtYWNyby1wcmVmaXgtbWFwW14gXSosLGcnIFwKLSAgICAgICAgICAgLWUgJ3MsQVBVX0lOQ0xVREVESVIgPSAuKixBUFVfSU5DTFVERURJUiA9ICxnJyBcCi0gICAgICAgICAgIC1lICdzLCIuKi9jb25maWd1cmUiLCJjb25maWd1cmUiLGcnICR7RH0ke2RhdGFkaXJ9L2FwYWNoZTIvYnVpbGQvY29uZmlnLm5pY2UKLQotICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYXBhY2hlMi12b2xhdGlsZS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvCi0KLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9hcGFjaGUyLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICAgICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2FwYWNoZTIuc2VydmljZQotICAgICAgICBzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9hcGFjaGUyLnNlcnZpY2UKLSAgICBlbGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCi0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy4wNF9hcGFjaGUyICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzA0X2FwYWNoZTIKLSAgICBmaQotCi0gICAgcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9ICR7RH0ke3NiaW5kaXJ9L2VudnZhcnMqCi0gICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfSAke0R9JHtsaWJkaXJ9Ci0gICAgaW5zdGFsbCAtbSA3NTUgc2VydmVyL2dlbl90ZXN0X2NoYXIgJHtEfSR7YmluZGlyfQotfQotCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgYXBhY2hlX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLQotYXBhY2hlX3N5c3Jvb3RfcHJlcHJvY2VzcygpIHsKLSAgICBpbnN0YWxsIC1kICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KLSAgICBpbnN0YWxsIC1tIDc1NSAke0R9JHtiaW5kaXJ9L2FweHMgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfQotICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtzYmluZGlyfQotICAgIGluc3RhbGwgLW0gNzU1ICR7RH0ke3NiaW5kaXJ9L2FwYWNoZWN0bCAke1NZU1JPT1RfREVTVERJUn0ke3NiaW5kaXJ9Ci0gICAgc2VkIC1pICdzIW15ICRpbnN0YWxsYnVpbGRkaXIgPSAuKiFteSAkaW5zdGFsbGJ1aWxkZGlyID0gIiR7U1RBR0lOR19ESVJfSE9TVH0vJHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQiOyEnICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vYXB4cwotICAgIHNlZCAtaSAncyFteSAkbGlidG9vbCA9IC4qIW15ICRsaWJ0b29sID0gIiR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9LyR7SE9TVF9TWVN9LWxpYnRvb2wiOyEnICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vYXB4cwotCi0gICAgc2VkIC1pICdzIV5BUFJfQ09ORklHID0gLiohQVBSX0NPTkZJRyA9ICR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2Fwci0xLWNvbmZpZyEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCi0gICAgc2VkIC1pICdzIV5BUFVfQ09ORklHID0gLiohQVBVX0NPTkZJRyA9ICR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2FwdS0xLWNvbmZpZyEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCi0gICAgc2VkIC1pICdzIV5pbmNsdWRlZGlyID0gLiohaW5jbHVkZWRpciA9ICR7U1RBR0lOR19JTkNESVJ9L2FwYWNoZTIhJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5tawotICAgIHNlZCAtaSAncyFeQ0ZMQUdTID0gLUlbXiBdKiFDRkxBR1MgPSAtSSR7U1RBR0lOR19JTkNESVJ9L29wZW5zc2whJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5tawotICAgIHNlZCAtaSAncyFeRVhUUkFfTERGTEFHUyA9IC4qIUVYVFJBX0xERkxBR1MgPSAtTCR7U1RBR0lOR19MSUJESVJ9IScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKLSAgICBzZWQgLWkgJ3MhXkVYVFJBX0lOQ0xVREVTID0gLiohRVhUUkFfSU5DTFVERVMgPSAtSSQoaW5jbHVkZWRpcikgLUkuIC1JJHtTVEFHSU5HX0lOQ0RJUn0hJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5tawotICAgIHNlZCAtaSAncyEtLXN5c3Jvb3Q9W14gXSohLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0hJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5tawotfQotCi0jIEltcGxpY2F0aW9ucyAtIHVzZWQgYnkgdXBkYXRlLXJjLmQgc2NyaXB0cwotSU5JVFNDUklQVF9OQU1FID0gImFwYWNoZTIiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA5MSAyMCIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImFwYWNoZTIuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0gPSAiZW5hYmxlIgotCi1BTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiaHRwYXNzd2QuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtodHBhc3N3ZC4xXSA9ICIke21hbmRpcn0vbWFuMS9odHBhc3N3ZC4xIgotCi1QQUNLQUdFUyA9ICIke1BOfS1zY3JpcHRzICR7UE59LWRvYyAke1BOfS1kZXYgJHtQTn0tZGJnICR7UE59IgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZiBcCi0gICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS8ke0JQTn0vbWFnaWMgXAotICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vJHtCUE59L21pbWUudHlwZXMgXAotICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vJHtCUE59L2V4dHJhLyoiCi0KLSMgV2Ugb3ZlcnJpZGUgaGVyZSByYXRoZXIgdGhhbiBhcHBlbmQgc28gdGhhdCAuc28gbGlua3MgYXJlCi0jIGluY2x1ZGVkIGluIHRoZSBydW50aW1lIHBhY2thZ2UgcmF0aGVyIHRoYW4gaGVyZSAoLWRldikKLSMgYW5kIHRvIGdldCBidWlsZCwgaWNvbnMsIGVycm9yIGludG8gdGhlIC1kZXYgcGFja2FnZQotRklMRVNfJHtQTn0tZGV2ID0gIiR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkIFwKLSAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7QlBOfS9pY29ucyBcCi0gICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke0JQTn0vZXJyb3IgXAotICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vJHtCUE59IFwKLSAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vYXB4cyBcCi0gICAgICAgICAgICAgICAgICAiCi0KLSMgQWRkIHRoZSBtYW51YWwgdG8gLWRvYwotRklMRVNfJHtQTn0tZG9jICs9ICIgJHtkYXRhZGlyfS8ke0JQTn0vbWFudWFsIgotCi1GSUxFU18ke1BOfS1zY3JpcHRzICs9ICIke2JpbmRpcn0vZGJtbWFuYWdlIgotCi0jIE92ZXJyaWRlIHRoaXMgdG9vIC0gaGVyZSBpcyB0aGUgZGVmYXVsdCwgbGVzcyBkYXRhZGlyCi1GSUxFU18ke1BOfSA9ICAiJHtiaW5kaXJ9ICR7c2JpbmRpcn0gJHtsaWJleGVjZGlyfSAke2xpYmRpcn0gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0gJHtsaWJkaXJ9LyR7QlBOfSIKLQotIyBXZSB3YW50IGh0ZG9jcyBhbmQgY2dpLWJpbiB0byBnbyB3aXRoIHRoZSBiaW5hcnkKLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyR7QlBOfS8gJHtsaWJkaXJ9L2NnaS1iaW4iCi0KLUZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9LyR7QlBOfS9tb2R1bGVzLy5kZWJ1ZyIKLQotUkRFUEVORFNfJHtQTn0gKz0gIm9wZW5zc2wgbGliZ2NjIgotUkRFUEVORFNfJHtQTn0tc2NyaXB0cyArPSAicGVybCAke1BOfSIKLVJERVBFTkRTXyR7UE59LWRldiA9ICJwZXJsIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyXzIuNC40My5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvYXBhY2hlMi9hcGFjaGUyXzIuNC40My5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MjAwMTExCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9hcGFjaGUyL2FwYWNoZTJfMi40LjQzLmJiCkBAIC0wLDAgKzEsMjE2IEBACitERVNDUklQVElPTiA9ICJUaGUgQXBhY2hlIEhUVFAgU2VydmVyIGlzIGEgcG93ZXJmdWwsIGVmZmljaWVudCwgYW5kIFwKK2V4dGVuc2libGUgd2ViIHNlcnZlci4iCitTVU1NQVJZID0gIkFwYWNoZSBIVFRQIFNlcnZlciIKK0hPTUVQQUdFID0gImh0dHA6Ly9odHRwZC5hcGFjaGUub3JnLyIKK1NFQ1RJT04gPSAibmV0IgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorCitTUkNfVVJJID0gIiR7QVBBQ0hFX01JUlJPUn0vaHR0cGQvaHR0cGQtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS11c2UtcGtnLWNvbmZpZy1mb3ItUENSRS1kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1hcGFjaGUyLWJ1bXAtdXAtdGhlLWNvcmUtc2l6ZS1saW1pdC1pZi1Db3JlRHVtcERpcmVjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtYXBhY2hlMi1kby1ub3QtZXhwb3J0LWFwci1hcHItdXRpbC1zeW1ib2xzLXdoZW4tdXNpbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWFwYWNoZTItbG9nLXRoZS1TRUxpbnV4LWNvbnRleHQtYXQtc3RhcnR1cC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LXJlcGxhY2UtbHlueC10by1jdXJsLWluLWFwYWNoZWN0bC1zY3JpcHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1hcGFjaGUyLWZpeC10aGUtcmFjZS1pc3N1ZS1vZi1wYXJhbGxlbC1pbnN0YWxsYXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNy1hcGFjaGUyLWFsbG93LXRvLWRpc2FibGUtc2VsaW51eC1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FwYWNoZS1jb25maWd1cmVfcGVybGJpbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN1cHBvcnQtYXB4cy5pbi1mb3JjZS1kZXN0ZGlyLXRvLWJlLWVtcHR5LXN0cmluZy5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtYXBhY2hlMi1kby1ub3QtdXNlLXJlbGF0aXZlLXBhdGgtZm9yLWdlbl90ZXN0X2NoYXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly9hcGFjaGUyLXZvbGF0aWxlLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vYXBhY2hlMi5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy4wNF9hcGFjaGUyIFwKKyAgICAgICAgICAgIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iZGRlZGRmYWM4MGIyYzlhODgyMjQxZDAwOGJiNDFjMyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3OTFjOTg2YjFlNzBmZTYxZWI0NDA2MGFhY2M4OWE2NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhNDk3NjUyYWIzZmM4MTMxOGNkYzJhMjAzMDkwYTk5OTE1MGQ4NjQ2MWFjZmY5N2MxMDY1ZGM5MTBmZTEwZjQzIgorCitTID0gIiR7V09SS0RJUn0vaHR0cGQtJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHBrZ2NvbmZpZyBzeXN0ZW1kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworREVQRU5EUyA9ICJvcGVuc3NsIGV4cGF0IHBjcmUgYXByIGFwci11dGlsIGFwYWNoZTItbmF0aXZlICIKKworQ1ZFX1BST0RVQ1QgPSAiaHR0cF9zZXJ2ZXIiCisKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICJhcHhzIGNvbmZpZ192YXJzLm1rIGNvbmZpZy5uaWNlIgorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdzZWxpbnV4JywgZCl9IgorUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItLWVuYWJsZS1zZWxpbnV4LC0tZGlzYWJsZS1zZWxpbnV4LGxpYnNlbGludXgsbGlic2VsaW51eCIKK1BBQ0tBR0VDT05GSUdbb3BlbmxkYXBdID0gIi0tZW5hYmxlLWxkYXAgLS1lbmFibGUtYXV0aG56LWxkYXAsLS1kaXNhYmxlLWxkYXAgLS1kaXNhYmxlLWF1dGhuei1sZGFwLG9wZW5sZGFwIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLWVuYWJsZS1kZWZsYXRlLCx6bGliLHpsaWIiCisKK0NGTEFHU19hcHBlbmQgPSAiIC1EUEFUSF9NQVg9NDA5NiIKKworRVhUUkFfT0VDT05GX2NsYXNzLXRhcmdldCA9ICJcCisgICAgLS1lbmFibGUtbGF5b3V0PURlYmlhbiBcCisgICAgLS1wcmVmaXg9JHtiYXNlX3ByZWZpeH0gXAorICAgIC0tZXhlY19wcmVmaXg9JHtleGVjX3ByZWZpeH0gXAorICAgIC0taW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LyR7QlBOfSBcCisgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vJHtCUE59IFwKKyAgICAtLWRhdGFkaXI9JHtkYXRhZGlyfS8ke0JQTn0gXAorICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCisgICAgLS1saWJleGVjZGlyPSR7bGliZXhlY2Rpcn0vJHtCUE59L21vZHVsZXMgXAorICAgIC0tbG9jYWxzdGF0ZWRpcj0ke2xvY2Fsc3RhdGVkaXJ9IFwKKyAgICAtLWVuYWJsZS1zc2wgXAorICAgIC0td2l0aC1kYm09c2RibSBcCisgICAgLS13aXRoLWdkYm09bm8gXAorICAgIC0td2l0aC1uZGJtPW5vIFwKKyAgICAtLXdpdGgtYmVya2VsZXktZGI9bm8gXAorICAgIC0tZW5hYmxlLWluZm8gXAorICAgIC0tZW5hYmxlLXJld3JpdGUgXAorICAgIC0tZW5hYmxlLW1wbXMtc2hhcmVkIFwKKyAgICBhcF9jdl92b2lkX3B0cl9sdF9sb25nPW5vIFwKKyAgICBhY19jdl9oYXZlX3RocmVhZHNhZmVfcG9sbHNldD1ubyBcCisgICAgIgorCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIlwKKyAgICAtLXByZWZpeD0ke3ByZWZpeH0gXAorICAgIC0taW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LyR7QlBOfSBcCisgICAgLS1zeXNjb25mZGlyPSR7c3lzY29uZmRpcn0vJHtCUE59IFwKKyAgICAtLWRhdGFkaXI9JHtkYXRhZGlyfS8ke0JQTn0gXAorICAgIC0tbGliZGlyPSR7bGliZGlyfSBcCisgICAgLS1saWJleGVjZGlyPSR7bGliZGlyfS8ke0JQTn0vbW9kdWxlcyBcCisgICAgLS1sb2NhbHN0YXRlZGlyPSR7bG9jYWxzdGF0ZWRpcn0gXAorICAgICIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgc2VkIC1pIC1lICdzOiQnJ3twcmVmaXh9L3Vzci9saWIvY2dpLWJpbjokJyd7bGliZXhlY2Rpcn0vY2dpLWJpbjpnJyAke1N9L2NvbmZpZy5sYXlvdXQKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZAorCisgICAgY2F0ICR7V09SS0RJUn0vaW5pdCB8IFwKKyAgICAgICAgc2VkIC1lICdzLC91c3Ivc2Jpbi8sJHtzYmluZGlyfS8sZycgXAorICAgICAgICAgICAgLWUgJ3MsL3Vzci9iaW4vLCR7YmluZGlyfS8sZycgXAorICAgICAgICAgICAgLWUgJ3MsL3Vzci9saWIvLCR7bGliZGlyfS8sZycgXAorICAgICAgICAgICAgLWUgJ3MsL2V0Yy8sJHtzeXNjb25mZGlyfS8sZycgXAorICAgICAgICAgICAgLWUgJ3MsL3Vzci8sJHtwcmVmaXh9LyxnJyA+ICR7RH0vJHtzeXNjb25mZGlyfS9pbml0LmQvJHtCUE59CisKKyAgICBjaG1vZCA3NTUgJHtEfS8ke3N5c2NvbmZkaXJ9L2luaXQuZC8ke0JQTn0KKworICAgICMgUmVtb3ZlIHRoZSBnb29meSBvcmlnaW5hbCBmaWxlcy4uLgorICAgIHJtIC1yZiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L29yaWdpbmFsCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9jb25mLmQKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9tb2R1bGVzLmQKKworICAgICMgRW5zdXJlIGNvbmZpZ3VyYXRpb24gZmlsZSBwdWxscyBpbiBjb25mLmQgYW5kIG1vZHVsZXMuZAorICAgIHByaW50ZiAiXG5JbmNsdWRlT3B0aW9uYWwgJHtzeXNjb25mZGlyfS8ke0JQTn0vY29uZi5kLyouY29uZiIgPj4gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCisgICAgcHJpbnRmICJcbkluY2x1ZGVPcHRpb25hbCAke3N5c2NvbmZkaXJ9LyR7QlBOfS9tb2R1bGVzLmQvKi5sb2FkIiA+PiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKKyAgICBwcmludGYgIlxuSW5jbHVkZU9wdGlvbmFsICR7c3lzY29uZmRpcn0vJHtCUE59L21vZHVsZXMuZC8qLmNvbmZcblxuIiA+PiAke0R9LyR7c3lzY29uZmRpcn0vJHtCUE59L2h0dHBkLmNvbmYKKworICAgICMgTWF0Y2ggd2l0aCB0aGF0IGlzIGluIGluaXQgc2NyaXB0CisgICAgcHJpbnRmICJcblBpZEZpbGUgL3J1bi9odHRwZC5waWQiID4+ICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgorCisgICAgIyBTZXQgJ1NlcnZlck5hbWUnIHRvIGZpeCBlcnJvciBtZXNzYWdlcyB3aGVuIHJlc3RhcnQgYXBhY2hlIHNlcnZpY2UKKyAgICBzZWQgLWkgJ3MvXiNTZXJ2ZXJOYW1lIHd3dy5leGFtcGxlLmNvbS9TZXJ2ZXJOYW1lIGxvY2FsaG9zdC8nICR7RH0vJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZgorCisgICAgc2VkIC1pICdzL15TZXJ2ZXJSb290LyNTZXJ2ZXJSb290LycgJHtEfS8ke3N5c2NvbmZkaXJ9LyR7QlBOfS9odHRwZC5jb25mCisKKyAgICBzZWQgLWkgLWUgJ3MsJHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisgICAgICAgICAgIC1lICdzLCR7REVCVUdfUFJFRklYX01BUH0sLGcnIFwKKyAgICAgICAgICAgLWUgJ3MsLWZkZWJ1Zy1wcmVmaXgtbWFwW14gXSosLGc7IHMsLWZtYWNyby1wcmVmaXgtbWFwW14gXSosLGcnIFwKKyAgICAgICAgICAgLWUgJ3MsJHtIT1NUVE9PTFNfRElSfS8sLGcnIFwKKyAgICAgICAgICAgLWUgJ3MsQVBVX0lOQ0xVREVESVIgPSAuKixBUFVfSU5DTFVERURJUiA9ICxnJyBcCisgICAgICAgICAgIC1lICdzLEFQVV9DT05GSUcgPSAuKixBUFVfQ09ORklHID0gLGcnICR7RH0ke2RhdGFkaXJ9L2FwYWNoZTIvYnVpbGQvY29uZmlnX3ZhcnMubWsKKworICAgIHNlZCAtaSAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisgICAgICAgICAgIC1lICdzLCR7REVCVUdfUFJFRklYX01BUH0sLGcnIFwKKyAgICAgICAgICAgLWUgJ3MsJHtSRUNJUEVfU1lTUk9PVH0sLGcnIFwKKyAgICAgICAgICAgLWUgJ3MsLWZkZWJ1Zy1wcmVmaXgtbWFwW14gXSosLGc7IHMsLWZtYWNyby1wcmVmaXgtbWFwW14gXSosLGcnIFwKKyAgICAgICAgICAgLWUgJ3MsQVBVX0lOQ0xVREVESVIgPSAuKixBUFVfSU5DTFVERURJUiA9ICxnJyBcCisgICAgICAgICAgIC1lICdzLCIuKi9jb25maWd1cmUiLCJjb25maWd1cmUiLGcnICR7RH0ke2RhdGFkaXJ9L2FwYWNoZTIvYnVpbGQvY29uZmlnLm5pY2UKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC8KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYXBhY2hlMi12b2xhdGlsZS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvCisKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9hcGFjaGUyLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICAgICAgc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2FwYWNoZTIuc2VydmljZQorICAgICAgICBzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9hcGFjaGUyLnNlcnZpY2UKKyAgICBlbGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy4wNF9hcGFjaGUyICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzA0X2FwYWNoZTIKKyAgICBmaQorCisgICAgcm0gLXJmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9ICR7RH0ke3NiaW5kaXJ9L2VudnZhcnMqCisgICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0KK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfSAke0R9JHtsaWJkaXJ9CisgICAgaW5zdGFsbCAtbSA3NTUgc2VydmVyL2dlbl90ZXN0X2NoYXIgJHtEfSR7YmluZGlyfQorfQorCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgYXBhY2hlX3N5c3Jvb3RfcHJlcHJvY2VzcyIKKworYXBhY2hlX3N5c3Jvb3RfcHJlcHJvY2VzcygpIHsKKyAgICBpbnN0YWxsIC1kICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KKyAgICBpbnN0YWxsIC1tIDc1NSAke0R9JHtiaW5kaXJ9L2FweHMgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJfY3Jvc3NzY3JpcHRzfQorICAgIGluc3RhbGwgLWQgJHtTWVNST09UX0RFU1RESVJ9JHtzYmluZGlyfQorICAgIGluc3RhbGwgLW0gNzU1ICR7RH0ke3NiaW5kaXJ9L2FwYWNoZWN0bCAke1NZU1JPT1RfREVTVERJUn0ke3NiaW5kaXJ9CisgICAgc2VkIC1pICdzIW15ICRpbnN0YWxsYnVpbGRkaXIgPSAuKiFteSAkaW5zdGFsbGJ1aWxkZGlyID0gIiR7U1RBR0lOR19ESVJfSE9TVH0vJHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQiOyEnICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vYXB4cworICAgIHNlZCAtaSAncyFteSAkbGlidG9vbCA9IC4qIW15ICRsaWJ0b29sID0gIiR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9LyR7SE9TVF9TWVN9LWxpYnRvb2wiOyEnICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vYXB4cworCisgICAgc2VkIC1pICdzIV5BUFJfQ09ORklHID0gLiohQVBSX0NPTkZJRyA9ICR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2Fwci0xLWNvbmZpZyEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCisgICAgc2VkIC1pICdzIV5BUFVfQ09ORklHID0gLiohQVBVX0NPTkZJRyA9ICR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2FwdS0xLWNvbmZpZyEnICR7U1lTUk9PVF9ERVNURElSfSR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkL2NvbmZpZ192YXJzLm1rCisgICAgc2VkIC1pICdzIV5pbmNsdWRlZGlyID0gLiohaW5jbHVkZWRpciA9ICR7U1RBR0lOR19JTkNESVJ9L2FwYWNoZTIhJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5taworICAgIHNlZCAtaSAncyFeQ0ZMQUdTID0gLUlbXiBdKiFDRkxBR1MgPSAtSSR7U1RBR0lOR19JTkNESVJ9L29wZW5zc2whJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5taworICAgIHNlZCAtaSAncyFeRVhUUkFfTERGTEFHUyA9IC4qIUVYVFJBX0xERkxBR1MgPSAtTCR7U1RBR0lOR19MSUJESVJ9IScgJHtTWVNST09UX0RFU1RESVJ9JHtkYXRhZGlyfS8ke0JQTn0vYnVpbGQvY29uZmlnX3ZhcnMubWsKKyAgICBzZWQgLWkgJ3MhXkVYVFJBX0lOQ0xVREVTID0gLiohRVhUUkFfSU5DTFVERVMgPSAtSSQoaW5jbHVkZWRpcikgLUkuIC1JJHtTVEFHSU5HX0lOQ0RJUn0hJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5taworICAgIHNlZCAtaSAncyEtLXN5c3Jvb3Q9W14gXSohLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0hJyAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9LyR7QlBOfS9idWlsZC9jb25maWdfdmFycy5taworfQorCisjIEltcGxpY2F0aW9ucyAtIHVzZWQgYnkgdXBkYXRlLXJjLmQgc2NyaXB0cworSU5JVFNDUklQVF9OQU1FID0gImFwYWNoZTIiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA5MSAyMCIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImFwYWNoZTIuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEVfJHtQTn0gPSAiZW5hYmxlIgorCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiaHRwYXNzd2QuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtodHBhc3N3ZC4xXSA9ICIke21hbmRpcn0vbWFuMS9odHBhc3N3ZC4xIgorCitQQUNLQUdFUyA9ICIke1BOfS1zY3JpcHRzICR7UE59LWRvYyAke1BOfS1kZXYgJHtQTn0tZGJnICR7UE59IgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS8ke0JQTn0vaHR0cGQuY29uZiBcCisgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS8ke0JQTn0vbWFnaWMgXAorICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vJHtCUE59L21pbWUudHlwZXMgXAorICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vJHtCUE59L2V4dHJhLyoiCisKKyMgV2Ugb3ZlcnJpZGUgaGVyZSByYXRoZXIgdGhhbiBhcHBlbmQgc28gdGhhdCAuc28gbGlua3MgYXJlCisjIGluY2x1ZGVkIGluIHRoZSBydW50aW1lIHBhY2thZ2UgcmF0aGVyIHRoYW4gaGVyZSAoLWRldikKKyMgYW5kIHRvIGdldCBidWlsZCwgaWNvbnMsIGVycm9yIGludG8gdGhlIC1kZXYgcGFja2FnZQorRklMRVNfJHtQTn0tZGV2ID0gIiR7ZGF0YWRpcn0vJHtCUE59L2J1aWxkIFwKKyAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7QlBOfS9pY29ucyBcCisgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke0JQTn0vZXJyb3IgXAorICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vJHtCUE59IFwKKyAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vYXB4cyBcCisgICAgICAgICAgICAgICAgICAiCisKKyMgQWRkIHRoZSBtYW51YWwgdG8gLWRvYworRklMRVNfJHtQTn0tZG9jICs9ICIgJHtkYXRhZGlyfS8ke0JQTn0vbWFudWFsIgorCitGSUxFU18ke1BOfS1zY3JpcHRzICs9ICIke2JpbmRpcn0vZGJtbWFuYWdlIgorCisjIE92ZXJyaWRlIHRoaXMgdG9vIC0gaGVyZSBpcyB0aGUgZGVmYXVsdCwgbGVzcyBkYXRhZGlyCitGSUxFU18ke1BOfSA9ICAiJHtiaW5kaXJ9ICR7c2JpbmRpcn0gJHtsaWJleGVjZGlyfSAke2xpYmRpcn0gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0gJHtsaWJkaXJ9LyR7QlBOfSIKKworIyBXZSB3YW50IGh0ZG9jcyBhbmQgY2dpLWJpbiB0byBnbyB3aXRoIHRoZSBiaW5hcnkKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9LyR7QlBOfS8gJHtsaWJkaXJ9L2NnaS1iaW4iCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9LyR7QlBOfS9tb2R1bGVzLy5kZWJ1ZyIKKworUkRFUEVORFNfJHtQTn0gKz0gIm9wZW5zc2wgbGliZ2NjIgorUkRFUEVORFNfJHtQTn0tc2NyaXB0cyArPSAicGVybCAke1BOfSIKK1JERVBFTkRTXyR7UE59LWRldiA9ICJwZXJsIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvY2hlcm9rZWUvY2hlcm9rZWVfZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9jaGVyb2tlZS9jaGVyb2tlZV9naXQuYmIKaW5kZXggNDkwZmM1My4uNzQyNDQ2NyAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9jaGVyb2tlZS9jaGVyb2tlZV9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9jaGVyb2tlZS9jaGVyb2tlZV9naXQuYmIKQEAgLTIwLDcgKzIwLDcgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBiaW5jb25maWcgdXBkYXRlLXJjLmQgc3lzdGVtZCBweXRob25uYXRpdmUKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgYmluY29uZmlnIHVwZGF0ZS1yYy5kIHN5c3RlbWQgJHtAYmIudXRpbHMuY29udGFpbnMoIkJCRklMRV9DT0xMRUNUSU9OUyIsICJtZXRhLXB5dGhvbjIiLCAicHl0aG9ubmF0aXZlIiwgIiIsIGQpfQogCiBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKIFBBQ0tBR0VDT05GSUdbZmZtcGVnXSA9ICItLXdpdGgtZmZtcGVnLC0td2l0aG91dC1mZm1wZWcsbGliYXYiCkBAIC03MCwzICs3MCw4IEBACiBSUkVQTEFDRVNfJHtQTn0gKz0gIiR7UE59LXN5c3RlbWQiCiBSQ09ORkxJQ1RTXyR7UE59ICs9ICIke1BOfS1zeXN0ZW1kIgogU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImNoZXJva2VlLnNlcnZpY2UiCisKK3B5dGhvbigpIHsKKyAgICBpZiAnbWV0YS1weXRob24yJyBub3QgaW4gZC5nZXRWYXIoJ0JCRklMRV9DT0xMRUNUSU9OUycpLnNwbGl0KCk6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoJ1JlcXVpcmVzIG1ldGEtcHl0aG9uMiB0byBiZSBwcmVzZW50LicpCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2hpYXdhdGhhL2hpYXdhdGhhXzEwLjEwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9oaWF3YXRoYS9oaWF3YXRoYV8xMC4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZDNkZjE5Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9oaWF3YXRoYS9oaWF3YXRoYV8xMC4xMC5iYgpAQCAtMCwwICsxLDY0IEBACitTVU1NQVJZID0gIkxpZ2h0d2VpZ2h0IHNlY3VyZSB3ZWIgc2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5oaWF3YXRoYS13ZWJzZXJ2ZXIub3JnIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgorREVQRU5EUyA9ICJsaWJ4bWwyIGxpYnhzbHQgdmlydHVhbC9jcnlwdCIKKworU0VDVElPTiA9ICJuZXQiCisKK1NSQ19VUkkgPSAiaHR0cDovL2hpYXdhdGhhLXdlYnNlcnZlci5vcmcvZmlsZXMvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL2hpYXdhdGhhLWluaXQgXAorICAgICAgICAgICBmaWxlOi8vaGlhd2F0aGEuc2VydmljZSAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzYmYyYzEyYzcwMzdlY2MzZGZkYmVjNzJlN2EyZjA0ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiNWU0NmY1NzU3ZmE2NDdlNzdkMjFkMjRmN2VlYTkxMmQ1OWYyNmE3NTU1OGNiYTc4MGI0NWMxYzNhMzNhNGQ5IgorCitJTklUU0NSSVBUX05BTUUgPSAiaGlhd2F0aGEiCitJTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA3MCIKKworU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImhpYXdhdGhhLnNlcnZpY2UiCisKK2luaGVyaXQgY21ha2UgdXBkYXRlLXJjLmQgc3lzdGVtZAorCitFWFRSQV9PRUNNQUtFID0gIiAtREVOQUJMRV9JUFY2PU9GRiBcCisgICAgICAgICAgICAgICAgICAtREVOQUJMRV9DQUNIRT1PRkYgXAorICAgICAgICAgICAgICAgICAgLURFTkFCTEVfREVCVUc9T0ZGIFwKKyAgICAgICAgICAgICAgICAgIC1ERU5BQkxFX1RMUz1PRkYgXAorICAgICAgICAgICAgICAgICAgLURFTkFCTEVfVE9PTEtJVD1PRkYgXAorICAgICAgICAgICAgICAgICAgLURFTkFCTEVfQ0hST09UPU9GRiBcCisgICAgICAgICAgICAgICAgICAtREVOQUJMRV9YU0xUPU9OIFwKKyAgICAgICAgICAgICAgICAgIC1ERU5BQkxFX1RPTUFIQVdLPU9GRiBcCisgICAgICAgICAgICAgICAgICAtRENNQUtFX0lOU1RBTExfTUFORElSPSR7bWFuZGlyfSBcCisgICAgICAgICAgICAgICAgICAtRENNQUtFX0lOU1RBTExfQklORElSPSR7YmluZGlyfSBcCisgICAgICAgICAgICAgICAgICAtRENNQUtFX0lOU1RBTExfU0JJTkRJUj0ke3NiaW5kaXJ9IFwKKyAgICAgICAgICAgICAgICAgIC1EQ01BS0VfSU5TVEFMTF9TWVNDT05GRElSPSR7c3lzY29uZmRpcn0gXAorICAgICAgICAgICAgICAgICAgLURDTUFLRV9JTlNUQUxMX0xJQkRJUj0ke2xpYmRpcn0gXAorICAgICAgICAgICAgICAgICAgLURDTUFLRV9JTlNUQUxMX0ZVTExfTE9DQUxTVEFURURJUj0ke2xvY2Fsc3RhdGVkaXJ9IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIENvcHkgb3ZlciBpbml0IHNjcmlwdCBhbmQgc2VkIGluIHRoZSBjb3JyZWN0IHNiaW4gcGF0aAorICAgIHNlZCAtaSAncyxzZWRfc2Jpbl9wYXRoLCR7c2JpbmRpcn0sJyAke1dPUktESVJ9L2hpYXdhdGhhLWluaXQKKyAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKyAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9oaWF3YXRoYS1pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9oaWF3YXRoYQorCisgICAgIyBjb25maWd1cmUgcGhwLWZjZ2kgdG8gaGF2ZSBhIHdvcmtpbmcgY29uZmlndXJhdGlvbgorICAgICMgYnkgZGVmYXVsdCBpZiBwaHAgaXMgaW5zdGFsbGVkCisgICAgZWNobyAiU2VydmVyID0gJHtiaW5kaXJ9L3BocC1jZ2kgOyAyIDsgMTI3LjAuMC4xOjIwMDUgOyBub2JvZHk6bm9ib2R5IDsgJHtzeXNjb25mZGlyfS9waHAvaGlhd2F0aGEtcGhwNS9waHAuaW5pIiA+PiAke0R9JHtzeXNjb25mZGlyfS9oaWF3YXRoYS9waHAtZmNnaS5jb25mCisKKyAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vaGlhd2F0aGEuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKyAgICBmaQorCisgICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IiAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgorfQorCitDT05GRklMRVNfJHtQTn0gPSAiIFwKKyAgICAke3N5c2NvbmZkaXJ9L2hpYXdhdGhhL2NnaS13cmFwcGVyLmNvbmYgXAorICAgICR7c3lzY29uZmRpcn0vaGlhd2F0aGEvaGlhd2F0aGEuY29uZiBcCisgICAgJHtzeXNjb25mZGlyfS9oaWF3YXRoYS9pbmRleC54c2x0IFwKKyAgICAke3N5c2NvbmZkaXJ9L2hpYXdhdGhhL21pbWV0eXBlLmNvbmYgXAorICAgICR7c3lzY29uZmRpcn0vaGlhd2F0aGEvcGhwLWZjZ2kuY29uZiBcCisiCisKK0ZJTEVTXyR7UE59LWRldiA9ICIke2xpYmRpcn0vaGlhd2F0aGEvKiR7U09MSUJTREVWfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvaGlhd2F0aGEvaGlhd2F0aGFfMTAuNy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvaGlhd2F0aGEvaGlhd2F0aGFfMTAuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDZjNDQ5Yi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL2hpYXdhdGhhL2hpYXdhdGhhXzEwLjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1TVU1NQVJZID0gIkxpZ2h0d2VpZ2h0IHNlY3VyZSB3ZWIgc2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5oaWF3YXRoYS13ZWJzZXJ2ZXIub3JnIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotREVQRU5EUyA9ICJsaWJ4bWwyIGxpYnhzbHQgdmlydHVhbC9jcnlwdCIKLQotU0VDVElPTiA9ICJuZXQiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2hpYXdhdGhhLXdlYnNlcnZlci5vcmcvZmlsZXMvJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2hpYXdhdGhhLWluaXQgXAotICAgICAgICAgICBmaWxlOi8vaGlhd2F0aGEuc2VydmljZSAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1ODFhYTcxYzgzMTE3MmJhMDY5MTBkZWRhNzE3MzAyZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzNjNlOTlkODRhODVkYWZiYjc0YmNjMzBiM2UzMDI4NjA1M2VjMmFiYmM3YWZlMDhjZDg3MTkzNjExNzM1Zjc0IgotCi1JTklUU0NSSVBUX05BTUUgPSAiaGlhd2F0aGEiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA3MCIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImhpYXdhdGhhLnNlcnZpY2UiCi0KLWluaGVyaXQgY21ha2UgdXBkYXRlLXJjLmQgc3lzdGVtZAotCi1FWFRSQV9PRUNNQUtFID0gIiAtREVOQUJMRV9JUFY2PU9GRiBcCi0gICAgICAgICAgICAgICAgICAtREVOQUJMRV9DQUNIRT1PRkYgXAotICAgICAgICAgICAgICAgICAgLURFTkFCTEVfREVCVUc9T0ZGIFwKLSAgICAgICAgICAgICAgICAgIC1ERU5BQkxFX1RMUz1PRkYgXAotICAgICAgICAgICAgICAgICAgLURFTkFCTEVfVE9PTEtJVD1PRkYgXAotICAgICAgICAgICAgICAgICAgLURFTkFCTEVfQ0hST09UPU9GRiBcCi0gICAgICAgICAgICAgICAgICAtREVOQUJMRV9YU0xUPU9OIFwKLSAgICAgICAgICAgICAgICAgIC1ERU5BQkxFX1RPTUFIQVdLPU9GRiBcCi0gICAgICAgICAgICAgICAgICAtRENNQUtFX0lOU1RBTExfTUFORElSPSR7bWFuZGlyfSBcCi0gICAgICAgICAgICAgICAgICAtRENNQUtFX0lOU1RBTExfQklORElSPSR7YmluZGlyfSBcCi0gICAgICAgICAgICAgICAgICAtRENNQUtFX0lOU1RBTExfU0JJTkRJUj0ke3NiaW5kaXJ9IFwKLSAgICAgICAgICAgICAgICAgIC1EQ01BS0VfSU5TVEFMTF9TWVNDT05GRElSPSR7c3lzY29uZmRpcn0gXAotICAgICAgICAgICAgICAgICAgLURDTUFLRV9JTlNUQUxMX0xJQkRJUj0ke2xpYmRpcn0gXAotICAgICAgICAgICAgICAgICAgLURDTUFLRV9JTlNUQUxMX0ZVTExfTE9DQUxTVEFURURJUj0ke2xvY2Fsc3RhdGVkaXJ9IgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAjIENvcHkgb3ZlciBpbml0IHNjcmlwdCBhbmQgc2VkIGluIHRoZSBjb3JyZWN0IHNiaW4gcGF0aAotICAgIHNlZCAtaSAncyxzZWRfc2Jpbl9wYXRoLCR7c2JpbmRpcn0sJyAke1dPUktESVJ9L2hpYXdhdGhhLWluaXQKLSAgICBta2RpciAtcCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9oaWF3YXRoYS1pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9oaWF3YXRoYQotCi0gICAgIyBjb25maWd1cmUgcGhwLWZjZ2kgdG8gaGF2ZSBhIHdvcmtpbmcgY29uZmlndXJhdGlvbgotICAgICMgYnkgZGVmYXVsdCBpZiBwaHAgaXMgaW5zdGFsbGVkCi0gICAgZWNobyAiU2VydmVyID0gJHtiaW5kaXJ9L3BocC1jZ2kgOyAyIDsgMTI3LjAuMC4xOjIwMDUgOyBub2JvZHk6bm9ib2R5IDsgJHtzeXNjb25mZGlyfS9waHAvaGlhd2F0aGEtcGhwNS9waHAuaW5pIiA+PiAke0R9JHtzeXNjb25mZGlyfS9oaWF3YXRoYS9waHAtZmNnaS5jb25mCi0KLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vaGlhd2F0aGEuc2VydmljZSAke0R9LyR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLSAgICBmaQotCi0gICAgcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9IiAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuIgotfQotCi1DT05GRklMRVNfJHtQTn0gPSAiIFwKLSAgICAke3N5c2NvbmZkaXJ9L2hpYXdhdGhhL2NnaS13cmFwcGVyLmNvbmYgXAotICAgICR7c3lzY29uZmRpcn0vaGlhd2F0aGEvaGlhd2F0aGEuY29uZiBcCi0gICAgJHtzeXNjb25mZGlyfS9oaWF3YXRoYS9pbmRleC54c2x0IFwKLSAgICAke3N5c2NvbmZkaXJ9L2hpYXdhdGhhL21pbWV0eXBlLmNvbmYgXAotICAgICR7c3lzY29uZmRpcn0vaGlhd2F0aGEvcGhwLWZjZ2kuY29uZiBcCi0iCi0KLUZJTEVTXyR7UE59LWRldiA9ICIke2xpYmRpcn0vaGlhd2F0aGEvKiR7U09MSUJTREVWfSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvZmlsZXMvbmdpbngtZml4LXBpZGZpbGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L2ZpbGVzL25naW54LWZpeC1waWRmaWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMTU5YTYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L2ZpbGVzL25naW54LWZpeC1waWRmaWxlLnBhdGNoCkBAIC0wLDAgKzEsOTkgQEAKK0Rlc2NyaXB0aW9uOiBGaXggTkdJTlggcGlkZmlsZSBoYW5kbGluZyAgIAorQXV0aG9yOiBUaiA8dWJ1bnR1QGlhbS50aj4gICAgICAgICAgICAgICAgICAKK0J1Zy1VYnVudHU6IGh0dHBzOi8vYnVncy5sYXVuY2hwYWQubmV0L3VidW50dS8rc291cmNlL25naW54LytidWcvMTU4MTg2NAorTGFzdC1VcGRhdGU6IDIwMTktMDYtMDQgCistLS0KK1RoaXMgcGF0Y2ggaGVhZGVyIGZvbGxvd3MgREVQLTM6IGh0dHA6Ly9kZXAuZGViaWFuLm5ldC9kZXBzL2RlcDMvCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitUaGlzIHBhdGNoIGlzIGZyb20gdWJ1bnR1LCBodHRwczovL2dpdGh1Yi5jb20vYXJvdGgtYXJzb2Z0L3BrZy1uZ2lueC9ibG9iCisvbWFzdGVyL2RlYmlhbi9wYXRjaGVzL25naW54LWZpeC1waWRmaWxlLnBhdGNoLCBmb3IgZml4IGJlbG93CitlcnJvciBpbmZvOgorbmdpbnguc2VydmljZTogZmFpbGVkIHRvIHBhcnNlIHBpZCBmcm9tIGZpbGUgL3J1bi9uZ2lueC9uZ2lueC5waWQ6CitpbnZhbGlkIGFyZ3VtZW50CisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CisKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9uZ2lueC5jIGIvc3JjL2NvcmUvbmdpbnguYworaW5kZXggOWZjYjBlYjIuLjA4M2ViYTFkIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvbmdpbnguYworKysrIGIvc3JjL2NvcmUvbmdpbnguYworQEAgLTMzOCwxNCArMzM4LDIxIEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmNvbnN0ICphcmd2KQorICAgICAgICAgbmd4X3Byb2Nlc3MgPSBOR1hfUFJPQ0VTU19NQVNURVI7CisgICAgIH0KKyAKKysgICAgLyogdGVsbC10YWxlIHRvIGRldGVjdCBpZiB0aGlzIGlzIHBhcmVudCBvciBjaGlsZCBwcm9jZXNzICovCisrICAgIG5neF9pbnRfdCBjaGlsZF9waWQgPSBOR1hfQlVTWTsKKysKKyAjaWYgIShOR1hfV0lOMzIpCisgCisgICAgIGlmIChuZ3hfaW5pdF9zaWduYWxzKGN5Y2xlLT5sb2cpICE9IE5HWF9PSykgeworICAgICAgICAgcmV0dXJuIDE7CisgICAgIH0KKyAKKysgICAgLyogdGVsbC10YWxlIHRoYXQgdGhpcyBjb2RlIGhhcyBiZWVuIGV4ZWN1dGVkICovCisrICAgIGNoaWxkX3BpZC0tOworKworICAgICBpZiAoIW5neF9pbmhlcml0ZWQgJiYgY2NmLT5kYWVtb24pIHsKKy0gICAgICAgIGlmIChuZ3hfZGFlbW9uKGN5Y2xlLT5sb2cpICE9IE5HWF9PSykgeworKyAgICAgICAgY2hpbGRfcGlkID0gbmd4X2RhZW1vbihjeWNsZS0+bG9nKTsKKysgICAgICAgIGlmIChjaGlsZF9waWQgPT0gTkdYX0VSUk9SKSB7CisgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICB9CisgCitAQCAtMzU4LDggKzM2NSwxOSBAQCBtYWluKGludCBhcmdjLCBjaGFyICpjb25zdCAqYXJndikKKyAKKyAjZW5kaWYKKyAKKy0gICAgaWYgKG5neF9jcmVhdGVfcGlkZmlsZSgmY2NmLT5waWQsIGN5Y2xlLT5sb2cpICE9IE5HWF9PSykgeworLSAgICAgICAgcmV0dXJuIDE7CisrICAgIC8qIElmIG5neF9kYWVtb24oKSByZXR1cm5lZCB0aGUgY2hpbGQncyBQSUQgaW4gdGhlIHBhcmVudCBwcm9jZXNzCisrICAgICAqIGFmdGVyIHRoZSBmb3JrKCkgc2V0IG5neF9waWQgdG8gdGhlIGNoaWxkX3BpZCwgd2hpY2ggZ2V0cworKyAgICAgKiB3cml0dGVuIHRvIHRoZSBQSUQgZmlsZSwgdGhlbiBleGl0LgorKyAgICAgKiBGb3IgTkdYX1dJTjMyIGFsd2F5cyB3cml0ZSB0aGUgUElEIGZpbGUKKysgICAgICogRm9yIG90aGVycywgb25seSB3cml0ZSBpdCBmcm9tIHRoZSBwYXJlbnQgcHJvY2VzcyAqLworKyAgICBpZiAoY2hpbGRfcGlkIDwgTkdYX09LIHx8IGNoaWxkX3BpZCA+IE5HWF9PSykgeworKwluZ3hfcGlkID0gY2hpbGRfcGlkID4gTkdYX09LID8gY2hpbGRfcGlkIDogbmd4X3BpZDsKKysgICAgICAgIGlmIChuZ3hfY3JlYXRlX3BpZGZpbGUoJmNjZi0+cGlkLCBjeWNsZS0+bG9nKSAhPSBOR1hfT0spIHsKKysgICAgICAgICAgICByZXR1cm4gMTsKKysJfQorKyAgICB9CisrICAgIGlmIChjaGlsZF9waWQgPiBOR1hfT0spIHsKKysgICAgICAgIGV4aXQoMCk7CisgICAgIH0KKyAKKyAgICAgaWYgKG5neF9sb2dfcmVkaXJlY3Rfc3RkZXJyKGN5Y2xlKSAhPSBOR1hfT0spIHsKK2RpZmYgLS1naXQgYS9zcmMvb3MvdW5peC9uZ3hfZGFlbW9uLmMgYi9zcmMvb3MvdW5peC9uZ3hfZGFlbW9uLmMKK2luZGV4IDM4NWM0OWI2Li4zNzE5ODU0YyAxMDA2NDQKKy0tLSBhL3NyYy9vcy91bml4L25neF9kYWVtb24uYworKysrIGIvc3JjL29zL3VuaXgvbmd4X2RhZW1vbi5jCitAQCAtNywxNCArNywxNyBAQAorIAorICNpbmNsdWRlIDxuZ3hfY29uZmlnLmg+CisgI2luY2x1ZGUgPG5neF9jb3JlLmg+CisrI2luY2x1ZGUgPHVuaXN0ZC5oPgorIAorIAorIG5neF9pbnRfdAorIG5neF9kYWVtb24obmd4X2xvZ190ICpsb2cpCisgeworICAgICBpbnQgIGZkOworKyAgICAvKiByZXRhaW4gdGhlIHJldHVybiB2YWx1ZSBmb3IgcGFzc2luZyBiYWNrIHRvIGNhbGxlciAqLworKyAgICBwaWRfdCBwaWRfY2hpbGQgPSBmb3JrKCk7CisgCistICAgIHN3aXRjaCAoZm9yaygpKSB7CisrICAgIHN3aXRjaCAocGlkX2NoaWxkKSB7CisgICAgIGNhc2UgLTE6CisgICAgICAgICBuZ3hfbG9nX2Vycm9yKE5HWF9MT0dfRU1FUkcsIGxvZywgbmd4X2Vycm5vLCAiZm9yaygpIGZhaWxlZCIpOworICAgICAgICAgcmV0dXJuIE5HWF9FUlJPUjsKK0BAIC0yMyw3ICsyNiw4IEBAIG5neF9kYWVtb24obmd4X2xvZ190ICpsb2cpCisgICAgICAgICBicmVhazsKKyAKKyAgICAgZGVmYXVsdDoKKy0gICAgICAgIGV4aXQoMCk7CisrICAgICAgICAvKiBsZXQgY2FsbGVyIGRvIHRoZSBleGl0KCkgKi8KKysgICAgICAgIHJldHVybiBwaWRfY2hpbGQ7CisgICAgIH0KKyAKKyAgICAgbmd4X3BhcmVudCA9IG5neF9waWQ7CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54LmluYyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnguaW5jCmluZGV4IDBkMjI5ZmYuLjI4MjRjNjYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnguaW5jCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnguaW5jCkBAIC0yMSw2ICsyMSw3IEBACiAgICAgZmlsZTovL25naW54LmluaXQgXAogICAgIGZpbGU6Ly9uZ2lueC12b2xhdGlsZS5jb25mIFwKICAgICBmaWxlOi8vbmdpbnguc2VydmljZSBcCisgICAgZmlsZTovL25naW54LWZpeC1waWRmaWxlLnBhdGNoIFwKICIKIAogaW5oZXJpdCBzaXRlaW5mbyB1cGRhdGUtcmMuZCB1c2VyYWRkIHN5c3RlbWQKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xNi4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjE2LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNhZDBkYjYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjE2LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlIG5naW54LmluYwotCi0jIDEuMTYueCBicmFuY2ggaXMgdGhlIGN1cnJlbnQgc3RhYmxlIGJyYW5jaCwgdGhlIHJlY29tbWVuZGVkIGRlZmF1bHQKLSMgMS4xNy54IGlzIHRoZSBjdXJyZW50IG1haW5saW5lIGJyYW5jaGVzIGNvbnRhaW5pbmcgYWxsIG5ldyBmZWF0dXJlcwotREVGQVVMVF9QUkVGRVJFTkNFID0gIi0xIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01MmUzODRhYWFjODY4Yjc1NWI5M2FkNTUzNWUyZDA3NSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk3MjA3MjgzZjMwY2Q5MGNkYmE2MzhjM2VhMzAzMjNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRmZDM3NmJhZDc4Nzk3ZTdmMTgwOTRhMDBmMGYxMDg4MjU5MzI2NDM2YjUzN2ViNWFmNjliMDFiZTJjYTEzNDUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTYuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwNzY0MjUKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25naW54L25naW54XzEuMTYuMS5iYgpAQCAtMCwwICsxLDYgQEAKK3JlcXVpcmUgbmdpbnguaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTUyZTM4NGFhYWM4NjhiNzU1YjkzYWQ1NTM1ZTJkMDc1IgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDVhODBmNzUzMzZjOTgwZDI0MDk4N2JhZGMzZGNmNjAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjExYzJhNmRkMWQzNTE1NzM2ZjAzMjQ4NTc5NTdkYjJkZTk4YmU4NjI0NjFiNWE1NDJhM2FjNjE4OGRiZTMyYiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xNy4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjE3LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3NzRhODcuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjE3LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXJlcXVpcmUgbmdpbnguaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTUyZTM4NGFhYWM4NjhiNzU1YjkzYWQ1NTM1ZTJkMDc1IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNTY3NjdmZDYyMzAyNTA4Mjk1YjMxYWRjNDhiOTlhNTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTIxYjVkMDZjZDUzZTg2YWZiOTRmMGIzNjc4ZTBhYmIwYzBmMDExNDMzNDcxZmEzZDg5NWNlZmE2NWFlMGZhYiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xNy44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9uZ2lueC9uZ2lueF8xLjE3LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2QyYTVlZAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbmdpbngvbmdpbnhfMS4xNy44LmJiCkBAIC0wLDAgKzEsMTAgQEAKK3JlcXVpcmUgbmdpbnguaW5jCisKKyMgMS4xNi54IGJyYW5jaCBpcyB0aGUgY3VycmVudCBzdGFibGUgYnJhbmNoLCB0aGUgcmVjb21tZW5kZWQgZGVmYXVsdAorIyAxLjE3LnggaXMgdGhlIGN1cnJlbnQgbWFpbmxpbmUgYnJhbmNoZXMgY29udGFpbmluZyBhbGwgbmV3IGZlYXR1cmVzCitERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTUyZTM4NGFhYWM4NjhiNzU1YjkzYWQ1NTM1ZTJkMDc1IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMjljZDg2MWExM2FhZTY5YTA1OGNiYWJhYWU4NjE3N2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTdkMjNlY2Y2ZDUxNTBiMzBlMjg0YjQwZThhNmY3ZTNiYjViZTZiNjAxZTM3M2E0ZDAxMzc2OGQ1YTI1OTY1YiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbm9zdHJvbW8vbm9zdHJvbW9fMS45LjYuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25vc3Ryb21vL25vc3Ryb21vXzEuOS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmIxZmYwLi4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtaHR0cGQvbm9zdHJvbW8vbm9zdHJvbW9fMS45LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NCArMCwwIEBACi1TVU1NQVJZID0gIkEgc2ltcGxlLCBmYXN0IGFuZCBzZWN1cmUgSFRUUCBzZXJ2ZXIiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5hemd1bC5jaC9kZXZfbm9zdHJvbW8uaHRtbCIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL25odHRwZC9tYWluLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNDttZDU9MGJiMzcxMWE4NjdiOTcwNGQzYmZhYmNmNTUyOWI2NGUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5uYXpndWwuY2gvZGV2LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1HTlVtYWtlZmlsZS1hZGQtcG9zc2liaWxpdHktdG8tb3ZlcnJpZGUtdmFyaWFibGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25odHRwZC5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcyBcCi0gICAgICAgICAgIGZpbGU6Ly90bXBmaWxlcy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL25vc3Ryb21vIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjI3YWEyNDFkNzhmZjc4OTIwMzU0YzNlMDNhNTAyNmVhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU0MTQ5NGVjZmVhZmVjNThjMDg3NmNjYzkwY2MyM2IwNmUwMTQ0ZjZmNDIwMjlhZjQ0YzdjZGIxZjQxMWU4ZWIiCi0KLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi1ERVBFTkRTID0gIm9wZW5zc2wgZ3JvZmYtbmF0aXZlIGJhc2UtcGFzc3dkIHZpcnR1YWwvY3J5cHQiCi0KLWluaGVyaXQgdXBkYXRlLXJjLmQKLQotSU5JVFNDUklQVF9OQU1FID0gIm5vc3Ryb21vIgotSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgNzAiCi0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgb2VfcnVubWFrZQotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGluc3RhbGwgLWQgJHtEfS8ke3NiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1IHNyYy9uaHR0cGQvbmh0dHBkICR7RH0vJHtzYmluZGlyfS9uaHR0cGQKLSAgICBpbnN0YWxsIC1tIDA3NTUgc3JjL3Rvb2xzL2NyeXB0ICR7RH0vJHtzYmluZGlyfS9jcnlwdAotICAgIGluc3RhbGwgLWQgJHtEfS8ke21hbmRpcn0vbWFuOAotICAgIGluc3RhbGwgLW0gMDQ0NCBzcmMvbmh0dHBkL25odHRwZC44ICR7RH0vJHttYW5kaXJ9L21hbjgvbmh0dHBkLjgKLSAgICBpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L25vc3Ryb21vL2NvbmYKLSAgICBpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L25vc3Ryb21vL2h0ZG9jcy9jZ2ktYmluCi0gICAgaW5zdGFsbCAtZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ub3N0cm9tby9pY29ucwotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtbSAwNjQ0IGNvbmYvbWltZXMgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbm9zdHJvbW8vY29uZi9taW1lcwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25odHRwZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9Ci0gICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbm9zdHJvbW8gJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0gICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzL25vc3Ryb21vCi0gICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vdG1wZmlsZXMuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL25vc3Ryb21vLmNvbmYKLSAgICBmaQotICAgIGluc3RhbGwgLW0gMDY0NCBodGRvY3MvaW5kZXguaHRtbCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ub3N0cm9tby9odGRvY3MvaW5kZXguaHRtbAotICAgIGluc3RhbGwgLW0gMDY0NCBodGRvY3Mvbm9zdHJvbW8uZ2lmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L25vc3Ryb21vL2h0ZG9jcy9ub3N0cm9tby5naWYKLSAgICBpbnN0YWxsIC1tIDA2NDQgaWNvbnMvZGlyLmdpZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ub3N0cm9tby9pY29ucy9kaXIuZ2lmCi0gICAgaW5zdGFsbCAtbSAwNjQ0IGljb25zL2ZpbGUuZ2lmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L25vc3Ryb21vL2ljb25zL2ZpbGUuZ2lmCi0gICAgY2hvd24gLVIgd3d3LWRhdGE6d3d3LWRhdGEgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L25vc3Ryb21vCi19Ci0KLUNPTkZGSUxFU18ke1BOfSArPSAiL3Zhci9ub3N0cm9tby9jb25mL21pbWVzICR7c3lzY29uZmRpcn0vbmh0dHBkLmNvbmYiCi0KLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0gICAgaWYgWyAteiAiJEQiIF07IHRoZW4KLSAgICAgICAgaWYgWyAtZSAvc3lzL2ZzL2Nncm91cC9zeXN0ZW1kIF07IHRoZW4KLSAgICAgICAgICAgIHN5c3RlbWQtdG1wZmlsZXMgLS1jcmVhdGUgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL25vc3Ryb21vLmNvbmYKLSAgICAgICAgZWxpZiBbIC1lICR7c3lzY29uZmRpcn0vaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIF07IHRoZW4KLSAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIHVwZGF0ZQotICAgICAgICBmaQotICAgIGZpCi19CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLWh0dHBkL25vc3Ryb21vL25vc3Ryb21vXzEuOS43LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9ub3N0cm9tby9ub3N0cm9tb18xLjkuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTNlZjc0Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1odHRwZC9ub3N0cm9tby9ub3N0cm9tb18xLjkuNy5iYgpAQCAtMCwwICsxLDY0IEBACitTVU1NQVJZID0gIkEgc2ltcGxlLCBmYXN0IGFuZCBzZWN1cmUgSFRUUCBzZXJ2ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm5hemd1bC5jaC9kZXZfbm9zdHJvbW8uaHRtbCIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjL25odHRwZC9tYWluLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNDttZDU9MGJiMzcxMWE4NjdiOTcwNGQzYmZhYmNmNTUyOWI2NGUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5uYXpndWwuY2gvZGV2LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1HTlVtYWtlZmlsZS1hZGQtcG9zc2liaWxpdHktdG8tb3ZlcnJpZGUtdmFyaWFibGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25odHRwZC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly90bXBmaWxlcy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL25vc3Ryb21vIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjYxODk3MTQ4NDViM2FkNWQwZmM0OTBmOGNmNDhkYWNmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMzYzYzNWYzMTdmYjQ0MWUxMGQ1Mjk3YmI0MjE4YWUwZWE2MmM0OGYyZmMzMDI5YzA4ZjVkMjE2N2M2Y2RmY2EiCisKK1RBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgorCitERVBFTkRTID0gIm9wZW5zc2wgZ3JvZmYtbmF0aXZlIGJhc2UtcGFzc3dkIHZpcnR1YWwvY3J5cHQiCisKK2luaGVyaXQgdXBkYXRlLXJjLmQKKworSU5JVFNDUklQVF9OQU1FID0gIm5vc3Ryb21vIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgNzAiCisKK2RvX2NvbXBpbGUoKSB7CisgICAgb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfS8ke3NiaW5kaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1IHNyYy9uaHR0cGQvbmh0dHBkICR7RH0vJHtzYmluZGlyfS9uaHR0cGQKKyAgICBpbnN0YWxsIC1tIDA3NTUgc3JjL3Rvb2xzL2NyeXB0ICR7RH0vJHtzYmluZGlyfS9jcnlwdAorICAgIGluc3RhbGwgLWQgJHtEfS8ke21hbmRpcn0vbWFuOAorICAgIGluc3RhbGwgLW0gMDQ0NCBzcmMvbmh0dHBkL25odHRwZC44ICR7RH0vJHttYW5kaXJ9L21hbjgvbmh0dHBkLjgKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L25vc3Ryb21vL2NvbmYKKyAgICBpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L25vc3Ryb21vL2h0ZG9jcy9jZ2ktYmluCisgICAgaW5zdGFsbCAtZCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ub3N0cm9tby9pY29ucworICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtbSAwNjQ0IGNvbmYvbWltZXMgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbm9zdHJvbW8vY29uZi9taW1lcworICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25odHRwZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9CisgICAgaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbm9zdHJvbW8gJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vdm9sYXRpbGVzICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzL25vc3Ryb21vCisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vdG1wZmlsZXMuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL25vc3Ryb21vLmNvbmYKKyAgICBmaQorICAgIGluc3RhbGwgLW0gMDY0NCBodGRvY3MvaW5kZXguaHRtbCAke0R9JHtsb2NhbHN0YXRlZGlyfS9ub3N0cm9tby9odGRvY3MvaW5kZXguaHRtbAorICAgIGluc3RhbGwgLW0gMDY0NCBodGRvY3Mvbm9zdHJvbW8uZ2lmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L25vc3Ryb21vL2h0ZG9jcy9ub3N0cm9tby5naWYKKyAgICBpbnN0YWxsIC1tIDA2NDQgaWNvbnMvZGlyLmdpZiAke0R9JHtsb2NhbHN0YXRlZGlyfS9ub3N0cm9tby9pY29ucy9kaXIuZ2lmCisgICAgaW5zdGFsbCAtbSAwNjQ0IGljb25zL2ZpbGUuZ2lmICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L25vc3Ryb21vL2ljb25zL2ZpbGUuZ2lmCisgICAgY2hvd24gLVIgd3d3LWRhdGE6d3d3LWRhdGEgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L25vc3Ryb21vCit9CisKK0NPTkZGSUxFU18ke1BOfSArPSAiL3Zhci9ub3N0cm9tby9jb25mL21pbWVzICR7c3lzY29uZmRpcn0vbmh0dHBkLmNvbmYiCisKK3BrZ19wb3N0aW5zdF8ke1BOfSAoKSB7CisgICAgaWYgWyAteiAiJEQiIF07IHRoZW4KKyAgICAgICAgaWYgWyAtZSAvc3lzL2ZzL2Nncm91cC9zeXN0ZW1kIF07IHRoZW4KKyAgICAgICAgICAgIHN5c3RlbWQtdG1wZmlsZXMgLS1jcmVhdGUgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL25vc3Ryb21vLmNvbmYKKyAgICAgICAgZWxpZiBbIC1lICR7c3lzY29uZmRpcn0vaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIF07IHRoZW4KKyAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIHVwZGF0ZQorICAgICAgICBmaQorICAgIGZpCit9CmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC9waHBteWFkbWluL3BocG15YWRtaW5fNC45LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC9waHBteWFkbWluL3BocG15YWRtaW5fNC45LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0OTQzZGUuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1waHAvcGhwbXlhZG1pbi9waHBteWFkbWluXzQuOS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJXZWItYmFzZWQgTXlTUUwgYWRtaW5pc3RyYXRpb24gaW50ZXJmYWNlIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5waHBteWFkbWluLm5ldCIKLSMgTWFpbiBjb2RlIGlzIEdQTHYyLCB2ZW5kb3IvdGVjbmlja2NvbS90Y3BkZiBpcyB1bmRlciBMR1BMdjMsIGpzL2pxdWVyeSBpcyB1bmRlciBNSVQKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjMgJiBNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly92ZW5kb3IvdGVjbmlja2NvbS90Y3BkZi9MSUNFTlNFLlRYVDttZDU9ZGQ2NDcwYmJjZDM0MzZjYTMxN2Y4MmQzNGFiYWY2ODggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vanMvdmVuZG9yL2pxdWVyeS9NSVQtTElDRU5TRS50eHQ7bWQ1PWU0M2FhNDM3YTZhMWJhNDIxNjUzYmQ1MDM0MzMzYmY5IFwKLSIKLQotU1JDX1VSSSA9ICJodHRwczovL2ZpbGVzLnBocG15YWRtaW4ubmV0L3BocE15QWRtaW4vJHtQVn0vcGhwTXlBZG1pbi0ke1BWfS1hbGwtbGFuZ3VhZ2VzLnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9hcGFjaGUuY29uZiBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1YjVkMWQ4NGEwNTYyNDQzMGFjNjU5ZTM2YWYwMGY0ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzYmMzZTM3ZmVmYmRmY2FmMTJmZDU5ZDZkN2ZkYmYxMWZmY2ZmZTNlMjExMTU1YmY1YjgyMmI1NGEzYzIwNDNlIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly93d3cucGhwbXlhZG1pbi5uZXQvZG93bmxvYWRzLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInBocE15QWRtaW4tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLWFsbC1sYW5ndWFnZXMudGFyLnh6IgotCi1TID0gIiR7V09SS0RJUn0vcGhwTXlBZG1pbi0ke1BWfS1hbGwtbGFuZ3VhZ2VzIgotCi1pbmhlcml0IGFsbGFyY2gKLQotZG9faW5zdGFsbCgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9LyR7QlBOfQotICAgIGNwIC1SIC0tbm8tZGVyZWZlcmVuY2UgLS1wcmVzZXJ2ZT1tb2RlLGxpbmtzIC12ICogJHtEfSR7ZGF0YWRpcn0vJHtCUE59Ci0gICAgY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke2RhdGFkaXJ9LyR7QlBOfQotICAgICMgRG9uJ3QgaW5zdGFsbCBwYXRjaGVzIHRvIHRhcmdldAotICAgIHJtIC1yZiAke0R9JHtkYXRhZGlyfS8ke0JQTn0vcGF0Y2hlcwotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9hcGFjaGUyL2NvbmYuZAotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2FwYWNoZS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kL3BocG15YWRtaW4uY29uZgotCi0gICAgIyBSZW1vdmUgYSBmZXcgc2NyaXB0cyB0aGF0IGV4cGxpY2l0bHkgcmVxdWlyZSBiYXNoICghKQotICAgIHJtIC1mICR7RH0ke2RhdGFkaXJ9L3BocG15YWRtaW4vbGlicmFyaWVzL3RyYW5zZm9ybWF0aW9ucy8qLnNoCi19Ci0KLUZJTEVTXyR7UE59ID0gIiR7ZGF0YWRpcn0vJHtCUE59IFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vYXBhY2hlMi9jb25mLmQiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJiYXNoIHBocC1jbGkiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC9waHBteWFkbWluL3BocG15YWRtaW5fNS4wLjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC9waHBteWFkbWluL3BocG15YWRtaW5fNS4wLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWM4NzhjNQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3BocG15YWRtaW4vcGhwbXlhZG1pbl81LjAuMi5iYgpAQCAtMCwwICsxLDQxIEBACitTVU1NQVJZID0gIldlYi1iYXNlZCBNeVNRTCBhZG1pbmlzdHJhdGlvbiBpbnRlcmZhY2UiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnBocG15YWRtaW4ubmV0IgorIyBNYWluIGNvZGUgaXMgR1BMdjIsIHZlbmRvci90ZWNuaWNrY29tL3RjcGRmIGlzIHVuZGVyIExHUEx2MywganMvanF1ZXJ5IGlzIHVuZGVyIE1JVAorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MyAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3ZlbmRvci90ZWNuaWNrY29tL3RjcGRmL0xJQ0VOU0UuVFhUO21kNT1kZDY0NzBiYmNkMzQzNmNhMzE3ZjgyZDM0YWJhZjY4OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9qcy92ZW5kb3IvanF1ZXJ5L01JVC1MSUNFTlNFLnR4dDttZDU9ZTQzYWE0MzdhNmExYmE0MjE2NTNiZDUwMzQzMzNiZjkgXAorIgorCitTUkNfVVJJID0gImh0dHBzOi8vZmlsZXMucGhwbXlhZG1pbi5uZXQvcGhwTXlBZG1pbi8ke1BWfS9waHBNeUFkbWluLSR7UFZ9LWFsbC1sYW5ndWFnZXMudGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2FwYWNoZS5jb25mIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjQ0MmViODU5MTJkM2EyYWQyZmMwYjlkNmMyMWIxNTI3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNiY2M3OGQxNDk5MzA4ZDkzMjk5NTBmY2JhMmViYWE4NGM1NTlhOTM0ZmU1NGVmYzAyN2Q0NTlkOGU0MTYxYzgiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3d3dy5waHBteWFkbWluLm5ldC9kb3dubG9hZHMvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAicGhwTXlBZG1pbi0oP1A8cHZlcj5cZCsoXC5cZCspKyktYWxsLWxhbmd1YWdlcy50YXIueHoiCisKK1MgPSAiJHtXT1JLRElSfS9waHBNeUFkbWluLSR7UFZ9LWFsbC1sYW5ndWFnZXMiCisKK2luaGVyaXQgYWxsYXJjaAorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vJHtCUE59CisgICAgY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgKiAke0R9JHtkYXRhZGlyfS8ke0JQTn0KKyAgICBjaG93biAtUiByb290OnJvb3QgJHtEfSR7ZGF0YWRpcn0vJHtCUE59CisgICAgIyBEb24ndCBpbnN0YWxsIHBhdGNoZXMgdG8gdGFyZ2V0CisgICAgcm0gLXJmICR7RH0ke2RhdGFkaXJ9LyR7QlBOfS9wYXRjaGVzCisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2FwYWNoZTIvY29uZi5kCisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vYXBhY2hlLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vYXBhY2hlMi9jb25mLmQvcGhwbXlhZG1pbi5jb25mCisKKyAgICAjIFJlbW92ZSBhIGZldyBzY3JpcHRzIHRoYXQgZXhwbGljaXRseSByZXF1aXJlIGJhc2ggKCEpCisgICAgcm0gLWYgJHtEfSR7ZGF0YWRpcn0vcGhwbXlhZG1pbi9saWJyYXJpZXMvdHJhbnNmb3JtYXRpb25zLyouc2gKK30KKworRklMRVNfJHtQTn0gPSAiJHtkYXRhZGlyfS8ke0JQTn0gXAorICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9hcGFjaGUyL2NvbmYuZCIKKworUkRFUEVORFNfJHtQTn0gKz0gImJhc2ggcGhwLWNsaSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3hkZWJ1Zy94ZGVidWdfMi43LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC94ZGVidWcveGRlYnVnXzIuNy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMmQ1MmE2Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtcGhwL3hkZWJ1Zy94ZGVidWdfMi43LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1TVU1NQVJZID0gIkRlYnVnZ2luZyBhbmQgcHJvZmlsaW5nIGV4dGVuc2lvbiBmb3IgUEhQIgotTElDRU5TRSA9ICJYZGVidWciCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05MmQ5NGEzMzBkMzRlZTZlZGMyNjM4NDUwNzM2ZjExOSIKLQotREVQRU5EUyA9ICJwaHAgcmUyYy1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3hkZWJ1Zy5vcmcvZmlsZXMveGRlYnVnLSR7UFZ9LnRneiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjVkMWE4Y2EzMTAxZGY5MzkzOGQyODM5MzNmMjU2NDkzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImIwZjMyODNhYTE4NWMyM2ZjZDAxMzdjM2FhYTU4NTU0ZDMzMDk5NWVmN2EzNDIxZTk4M2U4ZDAxOGIwNWE0YTYiCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInhkZWJ1Zy0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRneiIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS14ZGVidWcgLXdpdGgtcGhwLWNvbmZpZz0ke1NUQUdJTkdfQklORElSX0NST1NTfS9waHAtY29uZmlnIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgY2QgJHtTfQotICAgICR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L3BocGl6ZQotICAgIGNkICR7Qn0KLQotICAgICMgUnVubmluZyBhdXRvcmVjb25mIGFzIGF1dG90b29sc19kb19jb25maWd1cmUgd291bGQgZG8gaGVyZQotICAgICMgYnJlYWtzIHRoZSBsaWJ0b29sIGNvbmZpZ3VyYXRpb24gcmVzdWx0aW5nIGluIGEgZmFpbHVyZSBsYXRlcgotICAgICMgaW4gZG9fY29tcGlsZS4gSXQncyBwb3NzaWJsZSB0aGlzIG1heSBiZSBmaXhhYmxlLCBob3dldmVyIHRoZQotICAgICMgZWFzaWVzdCBjb3Vyc2Ugb2YgYWN0aW9uIGZvciB0aGUgbW9tZW50IGlzIHRvIGF2b2lkIGRvaW5nIHRoYXQuCi0gICAgb2VfcnVuY29uZgotfQotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBJTlNUQUxMX1JPT1Q9JHtEfQotfQotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3BocCovZXh0ZW5zaW9ucy8qLyouc28iCi1GSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9waHAqL2V4dGVuc2lvbnMvKi8uZGVidWciCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXBocC94ZGVidWcveGRlYnVnXzIuOS41LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1waHAveGRlYnVnL3hkZWJ1Z18yLjkuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYWQ0ZGE2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy1waHAveGRlYnVnL3hkZWJ1Z18yLjkuNS5iYgpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIkRlYnVnZ2luZyBhbmQgcHJvZmlsaW5nIGV4dGVuc2lvbiBmb3IgUEhQIgorTElDRU5TRSA9ICJYZGVidWciCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT05MmQ5NGEzMzBkMzRlZTZlZGMyNjM4NDUwNzM2ZjExOSIKKworREVQRU5EUyA9ICJwaHAgcmUyYy1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3hkZWJ1Zy5vcmcvZmlsZXMveGRlYnVnLSR7UFZ9LnRneiIKKworU1JDX1VSSVttZDVzdW1dID0gImMwNGJlMWJmMjI1Yjc2OGJmNjI3ZGM5MmU1YTFmOWRmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjc3NWIxNzA1MTA5NjExYjk5NmQ2YTcxM2ZlMTQxMTdhNjc4NDZlMTU3ZWI3ZGJmMzQ5YmMwYjA1NWU4NjFhMTAiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInhkZWJ1Zy0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRneiIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS14ZGVidWcgLXdpdGgtcGhwLWNvbmZpZz0ke1NUQUdJTkdfQklORElSX0NST1NTfS9waHAtY29uZmlnIgorCitkb19jb25maWd1cmUoKSB7CisgICAgY2QgJHtTfQorICAgICR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L3BocGl6ZQorICAgIGNkICR7Qn0KKworICAgICMgUnVubmluZyBhdXRvcmVjb25mIGFzIGF1dG90b29sc19kb19jb25maWd1cmUgd291bGQgZG8gaGVyZQorICAgICMgYnJlYWtzIHRoZSBsaWJ0b29sIGNvbmZpZ3VyYXRpb24gcmVzdWx0aW5nIGluIGEgZmFpbHVyZSBsYXRlcgorICAgICMgaW4gZG9fY29tcGlsZS4gSXQncyBwb3NzaWJsZSB0aGlzIG1heSBiZSBmaXhhYmxlLCBob3dldmVyIHRoZQorICAgICMgZWFzaWVzdCBjb3Vyc2Ugb2YgYWN0aW9uIGZvciB0aGUgbW9tZW50IGlzIHRvIGF2b2lkIGRvaW5nIHRoYXQuCisgICAgb2VfcnVuY29uZgorfQorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbCBJTlNUQUxMX1JPT1Q9JHtEfQorfQorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3BocCovZXh0ZW5zaW9ucy8qLyouc28iCitGSUxFU18ke1BOfS1kYmcgKz0gIiR7bGliZGlyfS9waHAqL2V4dGVuc2lvbnMvKi8uZGVidWciCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL25ldGRhdGEvbmV0ZGF0YV9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXdlYnNlcnZlci9yZWNpcGVzLXdlYmFkbWluL25ldGRhdGEvbmV0ZGF0YV9naXQuYmIKaW5kZXggZDE3OWU4NC4uZDZhNWNlMCAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS13ZWJzZXJ2ZXIvcmVjaXBlcy13ZWJhZG1pbi9uZXRkYXRhL25ldGRhdGFfZ2l0LmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtd2Vic2VydmVyL3JlY2lwZXMtd2ViYWRtaW4vbmV0ZGF0YS9uZXRkYXRhX2dpdC5iYgpAQCAtMjYsNiArMjYsOCBAQAogaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1c2VyYWRkIHN5c3RlbWQKIAogTElCU190b29sY2hhaW4tY2xhbmdfeDg2ID0gIi1sYXRvbWljIgorTElCU19yaXNjdjY0ID0gIi1sYXRvbWljIgorTElCU19yaXNjdjMyID0gIi1sYXRvbWljIgogZXhwb3J0IExJQlMKIAogI3N5c3RlbWQKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9jb25mL2xheWVyLmNvbmYgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvY29uZi9sYXllci5jb25mCmluZGV4IDA3MGVhNmEuLjE5OWM2OWUgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9jb25mL2xheWVyLmNvbmYKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL2NvbmYvbGF5ZXIuY29uZgpAQCAtMTksNCArMTksNCBAQAogTEFZRVJERVBFTkRTX3hmY2UtbGF5ZXIgKz0gIm1ldGEtcHl0aG9uIgogTEFZRVJERVBFTkRTX3hmY2UtbGF5ZXIgKz0gIm5ldHdvcmtpbmctbGF5ZXIiCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF94ZmNlLWxheWVyID0gInRodWQgd2FycmlvciB6ZXVzIgorTEFZRVJTRVJJRVNfQ09NUEFUX3hmY2UtbGF5ZXIgPSAidGh1ZCB3YXJyaW9yIHpldXMgZHVuZmVsbCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvY2F0ZmlzaC9jYXRmaXNoXzEuNC4xMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvY2F0ZmlzaC9jYXRmaXNoXzEuNC4xMS5iYgppbmRleCA0MTUyZTE1Li4yN2I1ZDVlIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL2NhdGZpc2gvY2F0ZmlzaF8xLjQuMTEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9jYXRmaXNoL2NhdGZpc2hfMS40LjExLmJiCkBAIC0zLDcgKzMsNyBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTQzMjVhZmQzOTZmZWJjYjY1OWMzNmI0OTUzMzEzNWQ0IgogCi1pbmhlcml0IHhmY2UtYXBwIGRpc3R1dGlsczMgZ3RrLWljb24tY2FjaGUKK2luaGVyaXQgeGZjZS1hcHAgZGlzdHV0aWxzMyBndGstaWNvbi1jYWNoZSBtaW1lLXhkZwogCiBERVBFTkRTICs9ICJweXRob24zLWRpc3R1dGlscy1leHRyYS1uYXRpdmUiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvZ2lnb2xvL2dpZ29sb18wLjUuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvZ2lnb2xvL2dpZ29sb18wLjUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDQ0NjIxNC4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL2dpZ29sby9naWdvbG9fMC41LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMSArMCwwIEBACi1TVU1NQVJZID0gIkdpZ29sbyBpcyBhIGZyb250ZW5kIHRvIGVhc2lseSBtYW5hZ2UgY29ubmVjdGlvbnMgdG8gcmVtb3RlIGZpbGVzeXN0ZW1zIHVzaW5nIEdJTy9HVmZzIgotU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb24iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLURFUEVORFMgPSAiZ3RrKzMgaW50bHRvb2wtbmF0aXZlIHhmY2U0LWRldi10b29scy1uYXRpdmUiCi0KLWluaGVyaXQgeGZjZS1hcHAKLQotU1JDX1VSSVttZDVzdW1dID0gIjI3MzExMWY1ZDdjMjY4OThlNWRkZWE3Yjk3ZDVkZmUxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk3YTMwMWFmZjAxMmExNDNkMGI5OWU3ZWNiYjI3MDg0ZDM4NzJhYTIwM2E3NDc0NWU4MzU3YWFiM2ExODgwZGMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL2dpZ29sby9naWdvbG9fMC41LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL2dpZ29sby9naWdvbG9fMC41LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTIzM2ZlMAotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvZ2lnb2xvL2dpZ29sb18wLjUuMS5iYgpAQCAtMCwwICsxLDExIEBACitTVU1NQVJZID0gIkdpZ29sbyBpcyBhIGZyb250ZW5kIHRvIGVhc2lseSBtYW5hZ2UgY29ubmVjdGlvbnMgdG8gcmVtb3RlIGZpbGVzeXN0ZW1zIHVzaW5nIEdJTy9HVmZzIgorU0VDVElPTiA9ICJ4MTEvYXBwbGljYXRpb24iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK0RFUEVORFMgPSAiZ3RrKzMgaW50bHRvb2wtbmF0aXZlIHhmY2U0LWRldi10b29scy1uYXRpdmUiCisKK2luaGVyaXQgeGZjZS1hcHAKKworU1JDX1VSSVttZDVzdW1dID0gIjk0ZTg5YWQzZmFiYmE3MTY3NzYwMDA0YjY0MDYyZjRhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImNhODdiYWRiNTg3MWU0ODQ0NTc5NzA0NzA0ZWE5ZTVlZGU0NDRmNzEwYTNiMjY0YzEyYjYwYjJhMGU0OGUxNGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL21vdXNlcGFkL21vdXNlcGFkXzAuNC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9tb3VzZXBhZC9tb3VzZXBhZF8wLjQuMi5iYgppbmRleCA0YmYxMGE0Li4yOTAzOGFjIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL21vdXNlcGFkL21vdXNlcGFkXzAuNC4yLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvbW91c2VwYWQvbW91c2VwYWRfMC40LjIuYmIKQEAgLTUsNyArNSw3IEBACiAKIERFUEVORFMgPSAiZ3RrKzMgZ3Rrc291cmNldmlldzMgeGZjb25mIHhmY2U0LWRldi10b29scy1uYXRpdmUiCiAKLWluaGVyaXQgeGZjZS1hcHAgZ3NldHRpbmdzCitpbmhlcml0IHhmY2UtYXBwIGdzZXR0aW5ncyBtaW1lLXhkZwogCiBTUkNfVVJJW21kNXN1bV0gPSAiOThkOTA4ODQyZDRhOTNjMzU3NTZhNjdkNjgxYzA4ZmUiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODRjMDJhZGZjYTdmOGIzM2I5NDY2YTMwNmRlZDcyZmI5ZjM4ZjkzYzllZGI3ODY2MDM0Mzg1NGM0YTNhZGVkNyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvb3JhZ2Uvb3JhZ2VfNC4xMi4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9vcmFnZS9vcmFnZV80LjEyLjEuYmIKaW5kZXggOTY2MmI2MS4uYWU4MTgwMiAxMDA2NDQKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9vcmFnZS9vcmFnZV80LjEyLjEuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9vcmFnZS9vcmFnZV80LjEyLjEuYmIKQEAgLTQsNyArNCw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05YWMyZTdjZmYxZGRhZjQ4YjZlYWI2MDI4ZjIzZWY4OCIKIERFUEVORFMgPSAiZ3RrKyB4ZmNlNC1wYW5lbCBsaWJpY2FsIHBvcHQiCiAKLWluaGVyaXQgeGZjZS1hcHAKK2luaGVyaXQgeGZjZS1hcHAgbWltZS14ZGcKIAogU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtZHJvcC1zZXR0aW5nLWlzX3V0Yy1tZW1iZXItb2YtaWNhbHRpbWV0eXBlLnBhdGNoIgogCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3Jpc3RyZXR0by9yaXN0cmV0dG9fMC4xMC4wLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy9yaXN0cmV0dG8vcmlzdHJldHRvXzAuMTAuMC5iYgppbmRleCA5YzViYjEyLi5mYmNhOTZmIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3Jpc3RyZXR0by9yaXN0cmV0dG9fMC4xMC4wLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMvcmlzdHJldHRvL3Jpc3RyZXR0b18wLjEwLjAuYmIKQEAgLTYsNyArNiw3IEBACiAKIERFUEVORFMgPSAiZXhvIGxpYmV4aWYgbGlieGZjZTR1aSBsaWJ4ZmNlNHV0aWwgeGZjb25mIGNhaXJvIGZpbGUiCiAKLWluaGVyaXQgeGZjZS1hcHAKK2luaGVyaXQgeGZjZS1hcHAgbWltZS14ZGcKIAogUlJFQ09NTUVORFNfJHtQTn0gKz0gInR1bWJsZXIiCiAKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGFyY2hpdmVyL3hhcmNoaXZlcl9naXQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hhcmNoaXZlci94YXJjaGl2ZXJfZ2l0LmJiCmluZGV4IGQ2OTkwNDcuLjY0NTgyZjIgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGFyY2hpdmVyL3hhcmNoaXZlcl9naXQuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94YXJjaGl2ZXIveGFyY2hpdmVyX2dpdC5iYgpAQCAtMTIsNyArMTIsNyBAQAogUFYgPSAiMC41LjQuMTQiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGdldHRleHQgcGtnY29uZmlnIGF1dG90b29scyBndGstaWNvbi1jYWNoZSBmZWF0dXJlc19jaGVjaworaW5oZXJpdCBnZXR0ZXh0IHBrZ2NvbmZpZyBhdXRvdG9vbHMgZ3RrLWljb24tY2FjaGUgZmVhdHVyZXNfY2hlY2sgbWltZS14ZGcKIAogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1ub3RpZnlkL3hmY2U0LW5vdGlmeWRfMC40LjQuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LW5vdGlmeWQveGZjZTQtbm90aWZ5ZF8wLjQuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDZhYjBkZi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LW5vdGlmeWQveGZjZTQtbm90aWZ5ZF8wLjQuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLVNVTU1BUlkgPSAiRWFzaWx5IHRoZW1hYmxlIG5vdGlmaWNhdGlvbiBkYWVtb24gd2l0aCB0cmFuc3BhcmVuY3kgZWZmZWN0cyIKLUhPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL2FwcGxpY2F0aW9ucy94ZmNlNC1ub3RpZnlkIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgotREVQRU5EUyA9ICIgXAotICAgIGRidXMgXAotICAgIGRidXMtZ2xpYiBcCi0gICAgbGlibm90aWZ5IFwKLSAgICBsaWJ4ZmNlNHV0aWwgXAotICAgIGxpYnhmY2U0dWkgXAotICAgIHhmY29uZiBcCi0gICAgeGZjZTQtcGFuZWwgXAotIgotCi1pbmhlcml0IHhmY2UtYXBwCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5NjE0ZDRmN2MwNzkwZThhYjI0ZTU1ODk2YTQ0YThhYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwOTA1NzFhY2Y5NGM0MjMwMDM0MjZjYjc3OWZiMjNlODU0NWM2OGJhYjY0ODU1NjNiNTg5YzdkZWY4YTIxYjU1IgotCi0jIEF2b2lkIHRyb3VibGUgd2l0aCBvdGhlciBkZXNrdG9wcyBlLmcgS0RFIHdoaWNoIGFsc28gc2hpcHMgZGJ1cyBzZXJ2aWNlIG5hbWVkCi0jIG9yZy5mcmVlZGVza3RvcC5Ob3RpZmljYXRpb25zCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRidXMtc3RhcnQtZGFlbW9uIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgbWtkaXIgLXAgeGZjZTQtbm90aWZ5ZCB4ZmNlNC1ub3RpZnlkLWNvbmZpZwotfQotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCi0gICAgJHtkYXRhZGlyfS94ZmNlNCBcCi0gICAgJHtkYXRhZGlyfS90aGVtZXMgXAotICAgICR7ZGF0YWRpcn0vZGJ1cy0xIFwKLSAgICAke2xpYmRpcn0veGZjZTQgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1ub3RpZnlkL3hmY2U0LW5vdGlmeWRfMC42LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LW5vdGlmeWQveGZjZTQtbm90aWZ5ZF8wLjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZTBmNDRlCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1ub3RpZnlkL3hmY2U0LW5vdGlmeWRfMC42LjAuYmIKQEAgLTAsMCArMSwzNCBAQAorU1VNTUFSWSA9ICJFYXNpbHkgdGhlbWFibGUgbm90aWZpY2F0aW9uIGRhZW1vbiB3aXRoIHRyYW5zcGFyZW5jeSBlZmZlY3RzIgorSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvYXBwbGljYXRpb25zL3hmY2U0LW5vdGlmeWQiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCitERVBFTkRTID0gIiBcCisgICAgZGJ1cyBcCisgICAgZGJ1cy1nbGliIFwKKyAgICBsaWJub3RpZnkgXAorICAgIGxpYnhmY2U0dXRpbCBcCisgICAgbGlieGZjZTR1aSBcCisgICAgeGZjb25mIFwKKyAgICB4ZmNlNC1wYW5lbCBcCisiCisKK2luaGVyaXQgeGZjZS1hcHAKKworU1JDX1VSSVttZDVzdW1dID0gIjE3MjRmY2I2MzViYmFiNDRjOWY2MmM2OTczNGU0NDZkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImMxZDEyNmE4MTYwNGZmOTY3ZTQ2NTVmMDY0Mjc3NjNiZjU1OWMzMzhiYTYyOWM5NWNiOWFhN2Y1ZDZkYzhiYTYiCisKKyMgQXZvaWQgdHJvdWJsZSB3aXRoIG90aGVyIGRlc2t0b3BzIGUuZyBLREUgd2hpY2ggYWxzbyBzaGlwcyBkYnVzIHNlcnZpY2UgbmFtZWQKKyMgb3JnLmZyZWVkZXNrdG9wLk5vdGlmaWNhdGlvbnMKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGJ1cy1zdGFydC1kYWVtb24iCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBta2RpciAtcCB4ZmNlNC1ub3RpZnlkIHhmY2U0LW5vdGlmeWQtY29uZmlnCit9CisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyAgICAke2RhdGFkaXJ9L3hmY2U0IFwKKyAgICAke2RhdGFkaXJ9L3RoZW1lcyBcCisgICAgJHtkYXRhZGlyfS9kYnVzLTEgXAorICAgICR7bGliZGlyfS94ZmNlNCBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXBhbmVsLXByb2ZpbGVzL3hmY2U0LXBhbmVsLXByb2ZpbGVzL25vdC1jcmVhdGUtbGluay10by1sb2NhbGUucGF0Y2ggYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXBhbmVsLXByb2ZpbGVzL3hmY2U0LXBhbmVsLXByb2ZpbGVzL25vdC1jcmVhdGUtbGluay10by1sb2NhbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODBjZGZiOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtcGFuZWwtcHJvZmlsZXMveGZjZTQtcGFuZWwtcHJvZmlsZXMvbm90LWNyZWF0ZS1saW5rLXRvLWxvY2FsZS5wYXRjaApAQCAtMCwwICsxLDIyIEBACitJdCBpcyB1c2VsZXNzIHRvIGNyZWF0ZSBhIGxpbmsgdG8gJChQUkVGSVgpL3NoYXJlL2xvY2FsZSB0aGF0IHRoZXJlIGlzIG5vCityZWZlcmVuY2UgdG8gJChQUkVGSVgpL3NoYXJlLyQoQVBQTkFNRSkvbG9jYWxlIGluIHNvdXJjZSBjb2RlLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS54ZmNlLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTY2OTNdCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgTWFrZWZpbGUuaW4uaW4gfCAxIC0KKyAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4uaW4gYi9NYWtlZmlsZS5pbi5pbgoraW5kZXggYzBjZTg2Ni4uYzJmMjZmZSAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluLmluCisrKysgYi9NYWtlZmlsZS5pbi5pbgorQEAgLTYxLDcgKzYxLDYgQEAgaW5zdGFsbDogYWxsIHhmY2U0LXBhbmVsLXByb2ZpbGVzLjEuZ3oKKyAJaW5zdGFsbCBkYXRhL21ldGFpbmZvLyoueG1sICQoREVTVERJUikvJChQUkVGSVgpL3NoYXJlL21ldGFpbmZvCisgCisgCWNwIC1yZiBsb2NhbGUgJChERVNURElSKS8kKFBSRUZJWCkvc2hhcmUKKy0JbG4gLXNmICQoUFJFRklYKS9zaGFyZS9sb2NhbGUgJChERVNURElSKS8kKFBSRUZJWCkvc2hhcmUvJChBUFBOQU1FKS9sb2NhbGUKKyAKKyAJaW5zdGFsbCAtZCAkKERFU1RESVIpLyQoUFJFRklYKS9zaGFyZS9tYW4vbWFuMQorIAlpbnN0YWxsIHhmY2U0LXBhbmVsLXByb2ZpbGVzLjEuZ3ogJChERVNURElSKS8kKFBSRUZJWCkvc2hhcmUvbWFuL21hbjEKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtcGFuZWwtcHJvZmlsZXMveGZjZTQtcGFuZWwtcHJvZmlsZXNfMS4wLjEwLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1wYW5lbC1wcm9maWxlcy94ZmNlNC1wYW5lbC1wcm9maWxlc18xLjAuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzIyNmIxYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtcGFuZWwtcHJvZmlsZXMveGZjZTQtcGFuZWwtcHJvZmlsZXNfMS4wLjEwLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiQmFja3VwLCByZXN0b3JlLCBpbXBvcnQsIGFuZCBleHBvcnQgcGFuZWwgbGF5b3V0cyIKK1NFQ1RJT04gPSAieDExL2FwcGxpY2F0aW9uIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorCitpbmhlcml0IHB5dGhvbjNuYXRpdmUgZ2V0dGV4dCBmZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitERVBFTkRTICs9ICJpbnRsdG9vbC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL2FyY2hpdmUueGZjZS5vcmcvc3JjL2FwcHMvJHtCUE59LzEuMC8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL25vdC1jcmVhdGUtbGluay10by1sb2NhbGUucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNjE5MDY3OGJjNzAxYzE5N2JhYmNiMjM4OWJhNDYxODIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTg0ZDVlNzQ4ZDUzYmM1ZGEyNjk5NTRjYzNhZDdmNWFjMGM0ZjU4MTNhY2ZkMzg5MmVhNmY5MDY0ZjE3ZmI2OCIKKworZG9fY29uZmlndXJlKCkgeworICAgICMgc3BlY2lhbCBjb25maWd1cmUgLSBubyBhdXRvdG9vbHMuLi4KKyAgICAuL2NvbmZpZ3VyZSAtLXByZWZpeD0ke3ByZWZpeH0KK30KKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKyAgICBzZWQgLWkgJ3M6JHtQWVRIT059OnB5dGhvbjM6ZycgJHtEfSR7YmluZGlyfS94ZmNlNC1wYW5lbC1wcm9maWxlcworfQorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9tZXRhaW5mbyIKKworUkRFUEVORFNfJHtQTn0gKz0gInB5dGhvbjMtcHlnb2JqZWN0IHB5dGhvbjMtcGV4cGVjdCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtcGFuZWwtcHJvZmlsZXMveGZjZTQtcGFuZWwtcHJvZmlsZXNfMS4wLjkuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXBhbmVsLXByb2ZpbGVzL3hmY2U0LXBhbmVsLXByb2ZpbGVzXzEuMC45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YzlhZTk0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtcGFuZWwtcHJvZmlsZXMveGZjZTQtcGFuZWwtcHJvZmlsZXNfMS4wLjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIkJhY2t1cCwgcmVzdG9yZSwgaW1wb3J0LCBhbmQgZXhwb3J0IHBhbmVsIGxheW91dHMiCi1TRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbiIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotaW5oZXJpdCBweXRob24zbmF0aXZlIGdldHRleHQgZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotREVQRU5EUyArPSAiaW50bHRvb2wtbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9hcmNoaXZlLnhmY2Uub3JnL3NyYy9hcHBzLyR7QlBOfS8xLjAvJHtCUH0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJiZWUzZTI1MWU0NWFkZTBlYTM0OTM2NjQ2MWQ2ZTIwMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhOGMwMGFmODM4ZTg1ZDAwNjAwZGJmNDQyYzg3NDFhYTIxYTMzMmZiY2ViYTg0OWUwODIwNTYwNjMwYTZlMGNlIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgIyBzcGVjaWFsIGNvbmZpZ3VyZSAtIG5vIGF1dG90b29scy4uLgotICAgIC4vY29uZmlndXJlIC0tcHJlZml4PSR7cHJlZml4fQotfQotCi1kb19pbnN0YWxsKCkgewotCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotICAgIHNlZCAtaSAnczoke1BZVEhPTn06cHl0aG9uMzpnJyAke0R9JHtiaW5kaXJ9L3hmY2U0LXBhbmVsLXByb2ZpbGVzCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L21ldGFpbmZvIgotCi1SREVQRU5EU18ke1BOfSArPSAicHl0aG9uMy1weWdvYmplY3QgcHl0aG9uMy1wZXhwZWN0IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1zY3JlZW5zYXZlci94ZmNlNC1zY3JlZW5zYXZlcl8wLjEuMTAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXNjcmVlbnNhdmVyL3hmY2U0LXNjcmVlbnNhdmVyXzAuMS4xMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmYwNjQwCi0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1zY3JlZW5zYXZlci94ZmNlNC1zY3JlZW5zYXZlcl8wLjEuMTAuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJYZmNlIHNjcmVlbnNhdmVyIEFwcGxpY2F0aW9uIgorREVTQ1JJUFRJT04gPSAiWGZjZSBzY3JlZW5zYXZlciBpcyBhIHNjcmVlbiBzYXZlciBhbmQgbG9ja2VyIHRoYXQgYWltcyB0byBoYXZlIHNpbXBsZSwgc2FuZSwgc2VjdXJlIGRlZmF1bHRzIGFuZCBiZSB3ZWxsIGludGVncmF0ZWQgd2l0aCB0aGUgZGVza3RvcC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdC54ZmNlLm9yZy9hcHBzL3hmY2U0LXNjcmVlbnNhdmVyL2Fib3V0LyIKK1NFQ1RJT04gPSAieDExL2FwcGxpY2F0aW9uIgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisgIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgICIKKworREVQRU5EUyA9ICJkYnVzLWdsaWIgZ2FyY29uIGd0ayszIGxpYnhrbGF2aWVyIGxpYnhzY3Juc2F2ZXIgdmlydHVhbC9saWJ4MTEgeGZjb25mIGxpYnduY2szIgorCitpbmhlcml0IHhmY2UtYXBwCisKK1NSQ19VUklfYXBwZW5kID0gIiBcCisgICAgZmlsZTovL2ZpeC1jcm9zcy1jb21waWxlLnBhdGNoIFwKKyAgICBmaWxlOi8vZml4LXBhbS1jb25maWcucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjFmMDkzY2RlNWFmMDllOWZkOWJlMDE3Nzc0ZTAzMmVmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU4NmYxYzc4ZGQ2NzQ1YTIwZTljZTlmMTJkMDExNzE4OWQ1OTdiYTdhZDBjOGZmY2ZjZDI1YzliYjA1ZjFkNTciCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1N9L2RhdGEveGZjZTQtc2NyZWVuc2F2ZXIuY29tbW9uLWF1dGggJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQveGZjZTQtc2NyZWVuc2F2ZXIKK30KKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xICR7ZGF0YWRpcn0vZGVza3RvcC1kaXJlY3RvcmllcyIKK1JERVBFTkRTXyR7UE59ICs9ICJweXRob24zLWNvcmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXNjcmVlbnNhdmVyL3hmY2U0LXNjcmVlbnNhdmVyXzAuMS44LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC1zY3JlZW5zYXZlci94ZmNlNC1zY3JlZW5zYXZlcl8wLjEuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWM5YzMyNy4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXNjcmVlbnNhdmVyL3hmY2U0LXNjcmVlbnNhdmVyXzAuMS44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotU1VNTUFSWSA9ICJYZmNlIHNjcmVlbnNhdmVyIEFwcGxpY2F0aW9uIgotREVTQ1JJUFRJT04gPSAiWGZjZSBzY3JlZW5zYXZlciBpcyBhIHNjcmVlbiBzYXZlciBhbmQgbG9ja2VyIHRoYXQgYWltcyB0byBoYXZlIHNpbXBsZSwgc2FuZSwgc2VjdXJlIGRlZmF1bHRzIGFuZCBiZSB3ZWxsIGludGVncmF0ZWQgd2l0aCB0aGUgZGVza3RvcC4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdC54ZmNlLm9yZy9hcHBzL3hmY2U0LXNjcmVlbnNhdmVyL2Fib3V0LyIKLVNFQ1RJT04gPSAieDExL2FwcGxpY2F0aW9uIgotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisgIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotREVQRU5EUyA9ICJkYnVzLWdsaWIgZ2FyY29uIGd0ayszIGxpYnhrbGF2aWVyIGxpYnhzY3Juc2F2ZXIgdmlydHVhbC9saWJ4MTEgeGZjb25mIGxpYnduY2szIgotCi1pbmhlcml0IHhmY2UtYXBwCi0KLVNSQ19VUklfYXBwZW5kID0gIiBcCi0gICAgZmlsZTovL2ZpeC1jcm9zcy1jb21waWxlLnBhdGNoIFwKLSAgICBmaWxlOi8vZml4LXBhbS1jb25maWcucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjBmZWE3YjY3NmU2ZTUzM2EzZjMwNWM2ZjY0MmZlMGNkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwNTYwNDVlYTVmZDNlY2NmZTMyOGI4NmFlMjQ1ZWU0OTQ5YjllMzA0NGU0MmNhMjljNDkyYzBmNGFjODYwZDciCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1N9L2RhdGEveGZjZTQtc2NyZWVuc2F2ZXIuY29tbW9uLWF1dGggJHtEfSR7c3lzY29uZmRpcn0vcGFtLmQveGZjZTQtc2NyZWVuc2F2ZXIKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xICR7ZGF0YWRpcn0vZGVza3RvcC1kaXJlY3RvcmllcyIKLVJERVBFTkRTXyR7UE59ICs9ICJweXRob24zLWNvcmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRhc2ttYW5hZ2VyL3hmY2U0LXRhc2ttYW5hZ2VyXzEuMi4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC10YXNrbWFuYWdlci94ZmNlNC10YXNrbWFuYWdlcl8xLjIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjNhNTljOS4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRhc2ttYW5hZ2VyL3hmY2U0LXRhc2ttYW5hZ2VyXzEuMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAgKzAsMCBAQAotU1VNTUFSWSA9ICJFYXN5IHRvIHVzZSB0YXNrIG1hbmFnZXIiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLWluaGVyaXQgeGZjZS1hcHAKLQotREVQRU5EUyArPSAiZ3RrKzMgY2Fpcm8gbGlid25jayBsaWJ4bXUgeGZjZTQtZGV2LXRvb2xzLW5hdGl2ZSBleG8tbmF0aXZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjU3ODYyNWZmYmUwNjliMTM4NTMzZmY1ZTc3ZGY3MzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTQ5YTYxYzgxOWE0ZmQ5Mjg2YTY1YWU2MTYwNTk4NGYzMjdjOGIyNmNmOTM5Mjg5ZjY0NGU2NTZiZmEyMGUxMyIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtdGFza21hbmFnZXIveGZjZTQtdGFza21hbmFnZXJfMS4yLjMuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRhc2ttYW5hZ2VyL3hmY2U0LXRhc2ttYW5hZ2VyXzEuMi4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NjAwOTQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRhc2ttYW5hZ2VyL3hmY2U0LXRhc2ttYW5hZ2VyXzEuMi4zLmJiCkBAIC0wLDAgKzEsMTAgQEAKK1NVTU1BUlkgPSAiRWFzeSB0byB1c2UgdGFzayBtYW5hZ2VyIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorCitpbmhlcml0IHhmY2UtYXBwCisKK0RFUEVORFMgKz0gImd0ayszIGNhaXJvIGxpYnduY2sgbGlieG11IHhmY2U0LWRldi10b29scy1uYXRpdmUgZXhvLW5hdGl2ZSIKKworU1JDX1VSSVttZDVzdW1dID0gIjIwMjkyOGM4ZmYwNjc4YTlkZjk0OWQyMmE0M2YxNjE0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRjZmM0NGRhN2MxZjYxZDAzZTJjNGJkMWNkYzhmOTJjZTBkNDhiMDEzYmQwZDE0MGIzNzQ1ZDc5Yjc1ZGMzYzQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRlcm1pbmFsL3hmY2U0LXRlcm1pbmFsXzAuOC45LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcHBzL3hmY2U0LXRlcm1pbmFsL3hmY2U0LXRlcm1pbmFsXzAuOC45LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiZGQ0Y2IuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC10ZXJtaW5hbC94ZmNlNC10ZXJtaW5hbF8wLjguOS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotU1VNTUFSWSA9ICJUZXJtaW5hbCBlbXVsYXRvciBmb3IgdGhlIFhmY2UgZGVza3RvcCBlbnZpcm9ubWVudCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLURFUEVORFMgPSAiZ2xpYi0yLjAgZ3RrKzMgdnRlIGxpYnhmY2U0dWkiCi0KLWluaGVyaXQgeGZjZS1hcHAKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veGZjZTQgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ25vbWUtY29udHJvbC1jZW50ZXIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjYjk5NWU0ODkxYTNjNTQ3YmYxMzNiMzFlNDg0MGQwMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwZGViMGQwNmU1MGE4YTQxZmIwMGUyYzM3NzNmMDc5Mzg4MmNiOWYwNzNhZTE2ZWFkODg3YmI5NjgxYzUxNGNkIgotCi1SUkVDT01NRU5EU18ke1BOfSArPSAidnRlLXByb21wdCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtdGVybWluYWwveGZjZTQtdGVybWluYWxfMC44LjkuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFwcHMveGZjZTQtdGVybWluYWwveGZjZTQtdGVybWluYWxfMC44LjkuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iYTBmMTI3Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtYXBwcy94ZmNlNC10ZXJtaW5hbC94ZmNlNC10ZXJtaW5hbF8wLjguOS4yLmJiCkBAIC0wLDAgKzEsMTQgQEAKK1NVTU1BUlkgPSAiVGVybWluYWwgZW11bGF0b3IgZm9yIHRoZSBYZmNlIGRlc2t0b3AgZW52aXJvbm1lbnQiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCitERVBFTkRTID0gImdsaWItMi4wIGd0ayszIHZ0ZSBsaWJ4ZmNlNHVpIgorCitpbmhlcml0IHhmY2UtYXBwCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3hmY2U0IFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dub21lLWNvbnRyb2wtY2VudGVyIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDAzMDgzMTNkZWY1ZDdjYzUxMDcwYTZkYjFjZjI0ZGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWJhMjNiZjg2ZDM1MGVmOGE5NWQyZGZiNTBiYmQxYmJiMjE0NGQ4Mjk4NWE3NzllYzI4Y2FmNDdmYWFlZWVlYiIKKworUlJFQ09NTUVORFNfJHtQTn0gKz0gInZ0ZS1wcm9tcHQiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1hcnQvY3Vyc29yLXRoZW1lcy9vcGVuem9uZV8xLjIuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFydC9jdXJzb3ItdGhlbWVzL29wZW56b25lXzEuMi4zLmJiCmluZGV4IGRmMGVkNTAuLjVmZjQ4NTYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFydC9jdXJzb3ItdGhlbWVzL29wZW56b25lXzEuMi4zLmJiCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLWFydC9jdXJzb3ItdGhlbWVzL29wZW56b25lXzEuMi4zLmJiCkBAIC0yNyw1ICsyNyw3IEBACiAgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgaWNvbmRpciwgJ14oLiopJywgJyVzJywgJ09wZW4gWm9uZSBjdXJzb3JzICVzJywgYWxsb3dfZGlycz1UcnVlKQogfQogCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9pY29ucyIKKwogUEFDS0FHRVNfRFlOQU1JQyArPSAiXm9wZW56b25lLS4qIgogQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLW11bHRpbWVkaWEvcGFyb2xlL3Bhcm9sZV8xLjAuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLW11bHRpbWVkaWEvcGFyb2xlL3Bhcm9sZV8xLjAuNS5iYgppbmRleCBlZmVlMWFhLi5mNTViMTk0IDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1tdWx0aW1lZGlhL3Bhcm9sZS9wYXJvbGVfMS4wLjUuYmIKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtbXVsdGltZWRpYS9wYXJvbGUvcGFyb2xlXzEuMC41LmJiCkBAIC0zLDcgKzMsNyBAQAogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgogCi1pbmhlcml0IHhmY2UtYXBwIGd0ay1kb2MgbWltZQoraW5oZXJpdCB4ZmNlLWFwcCBndGstZG9jIG1pbWUgbWltZS14ZGcKIAogREVQRU5EUyArPSAiIFwKICAgICBkYnVzLWdsaWIgXApkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9jbGlwbWFuL3hmY2U0LWNsaXBtYW4tcGx1Z2luXzEuNC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9jbGlwbWFuL3hmY2U0LWNsaXBtYW4tcGx1Z2luXzEuNC4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMWFjMDU3Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvY2xpcG1hbi94ZmNlNC1jbGlwbWFuLXBsdWdpbl8xLjQuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiQ2xpcG1hbiBpcyBhIGNsaXBib2FyZCBtYW5hZ2VyIGZvciBYZmNlIgotSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvcGFuZWwtcGx1Z2lucy94ZmNlNC1jbGlwbWFuLXBsdWdpbiIKLVNFQ1RJT04gPSAieDExL2FwcGxpY2F0aW9uIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIgotCi1pbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luCi0KLURFUEVORFMgKz0gInhmY29uZiB4b3JncHJvdG8gbGlieHRzdCIKLQotU1JDX1VSSVttZDVzdW1dID0gImZhMGFjZDVmNWUzMjk4ZTU2ZWJkNDdkMjk0NGNkMDJiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI5Y2RiODVlZmI1NGJkNWM5YzA0Y2M2OTViN2M0OTE0ZDZkZmY5NzJiOWZkOTY5Y2JmYjU1MDRlOWM2MzJhZDIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3FyZW5jb2RlXSA9ICItLWVuYWJsZS1saWJxcmVuY29kZSwtLWRpc2FibGUtbGlicXJlbmNvZGUscXJlbmNvZGUiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2FwcGRhdGEiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2NsaXBtYW4veGZjZTQtY2xpcG1hbi1wbHVnaW5fMS42LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2NsaXBtYW4veGZjZTQtY2xpcG1hbi1wbHVnaW5fMS42LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjJhMTQ1ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvY2xpcG1hbi94ZmNlNC1jbGlwbWFuLXBsdWdpbl8xLjYuMS5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIkNsaXBtYW4gaXMgYSBjbGlwYm9hcmQgbWFuYWdlciBmb3IgWGZjZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL3BhbmVsLXBsdWdpbnMveGZjZTQtY2xpcG1hbi1wbHVnaW4iCitTRUNUSU9OID0gIngxMS9hcHBsaWNhdGlvbiIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbgorCitERVBFTkRTICs9ICJ4ZmNvbmYgeG9yZ3Byb3RvIGxpYnh0c3QiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjOTMwNjk0MGMwY2E3YWJkODM4YTE0YzlkMTliM2E3ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiM2U4MzE3Nzk2Mjg5MTk2ZmE3OGM0NTI2NjI2ZmUwNjFmZDM1ZDExZTg0OGNmMzAwY2ExYWNlNDdmZWJjZWI0IgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1txcmVuY29kZV0gPSAiLS1lbmFibGUtbGlicXJlbmNvZGUsLS1kaXNhYmxlLWxpYnFyZW5jb2RlLHFyZW5jb2RlIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9hcHBkYXRhIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9jbG9zZWJ1dHRvbi94ZmNlNC1jbG9zZWJ1dHRvbi1wbHVnaW5fZ2l0LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9jbG9zZWJ1dHRvbi94ZmNlNC1jbG9zZWJ1dHRvbi1wbHVnaW5fZ2l0LmJiCmluZGV4IDNjZDRlZTYuLjhkZmIyZTYgMTAwNjQ0Ci0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvY2xvc2VidXR0b24veGZjZTQtY2xvc2VidXR0b24tcGx1Z2luX2dpdC5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL2Nsb3NlYnV0dG9uL3hmY2U0LWNsb3NlYnV0dG9uLXBsdWdpbl9naXQuYmIKQEAgLTUsMTIgKzUsMTIgQEAKIAogaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbiB4ZmNlLWdpdCBndGstaWNvbi1jYWNoZSBwZXJsbmF0aXZlCiAKLURFUEVORFMgKz0gImV4by1uYXRpdmUgbGlid25jayB4ZmNvbmYiCitERVBFTkRTICs9ICJleG8tbmF0aXZlIGxpYnduY2szIHhmY29uZiIKIAogUFYgPSAiMC4xLjArZ2l0ciR7U1JDUFZ9IgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc2Nobml0emVsdG9ueS94ZmNlNC1jbG9zZWJ1dHRvbi1wbHVnaW4uZ2l0O2JyYW5jaD1tYXN0ZXIiCi1TUkNSRVYgPSAiMDJiNzRmMTNhZDZmNjM5MjM0YzhkYjE4NTQ5NjMwMzhiMjc4MGEyYyIKK1NSQ1JFViA9ICI2ZWQ1YzNlZTFiYTcxMDNjYTg1NGM1ZTgxZmIyYzEyMjBiOTEzYTQwIgogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1tYWludGFpbmVyLW1vZGUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3B1bHNlYXVkaW8veGZjZTQtcHVsc2VhdWRpby1wbHVnaW5fMC40LjIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3B1bHNlYXVkaW8veGZjZTQtcHVsc2VhdWRpby1wbHVnaW5fMC40LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZjMzgwYzEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9wdWxzZWF1ZGlvL3hmY2U0LXB1bHNlYXVkaW8tcGx1Z2luXzAuNC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJQdWxzZWF1ZGlvIG1peGVyIGZvciB0aGUgeGZjZSBwYW5lbCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mNWVhYzZiYjBkNmVjMGRjNjU1ZTQxNzc4MWQ0MDE1ZiIKLQotaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbiBmZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAicHVsc2VhdWRpbyB4MTEiCi0KLURFUEVORFMgKz0gImRidXMtZ2xpYiBwdWxzZWF1ZGlvIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWEzNGVhZGYwNmVkMjE3ZWMwNzMyYTA5NmYxNzg5ODciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGFlOGFlYmMyNDU4Njc1ZDRmODg1YmYxNmY3MzgyOWJlMzU5ZTE2MzcwYTY4NDMwMWJiZWY2YTIzNzU4YTEyMCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbbGlibm90aWZ5XSA9ICItLWVuYWJsZS1saWJub3RpZnksLS1kaXNhYmxlLWxpYm5vdGlmeSxsaWJub3RpZnkiCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gInBhdnVjb250cm9sIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9wdWxzZWF1ZGlvL3hmY2U0LXB1bHNlYXVkaW8tcGx1Z2luXzAuNC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9wdWxzZWF1ZGlvL3hmY2U0LXB1bHNlYXVkaW8tcGx1Z2luXzAuNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYzZTRkZjIKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3B1bHNlYXVkaW8veGZjZTQtcHVsc2VhdWRpby1wbHVnaW5fMC40LjMuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJQdWxzZWF1ZGlvIG1peGVyIGZvciB0aGUgeGZjZSBwYW5lbCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mNWVhYzZiYjBkNmVjMGRjNjU1ZTQxNzc4MWQ0MDE1ZiIKKworaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbiBmZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAicHVsc2VhdWRpbyB4MTEiCisKK0RFUEVORFMgKz0gImRidXMtZ2xpYiBwdWxzZWF1ZGlvIgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2Q4NjAzMmFjYjkzNjRkNDdlMGExNDQzNTBjNjNlMWEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWE1MTgyMzdlMjEzNzM0MWQ4Y2E2NTg0OTM4OTUwNTI1ZTIwYzI4YTAxNzdlMzBlY2FlYTNiYThlN2EyNjE1YiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbbGlibm90aWZ5XSA9ICItLWVuYWJsZS1saWJub3RpZnksLS1kaXNhYmxlLWxpYm5vdGlmeSxsaWJub3RpZnkiCisKK1JSRUNPTU1FTkRTXyR7UE59ID0gInBhdnVjb250cm9sIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9zZW5zb3JzL3hmY2U0LXNlbnNvcnMtcGx1Z2luLzAwMDEtRG8tbm90LWNoZWNrLWZvci1zeXMtY2xhc3MtcG93ZXJfc3VwcGx5LXdlLWFyZS1jcm9zcy5wYXRjaCBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvc2Vuc29ycy94ZmNlNC1zZW5zb3JzLXBsdWdpbi8wMDAxLURvLW5vdC1jaGVjay1mb3Itc3lzLWNsYXNzLXBvd2VyX3N1cHBseS13ZS1hcmUtY3Jvc3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWMxZDYwMwotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvc2Vuc29ycy94ZmNlNC1zZW5zb3JzLXBsdWdpbi8wMDAxLURvLW5vdC1jaGVjay1mb3Itc3lzLWNsYXNzLXBvd2VyX3N1cHBseS13ZS1hcmUtY3Jvc3MucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSA5YjdlMWJlY2E4NzJjYTRhNWZjZTg5MzhjNTgzNzkxMDM3ODdmNzlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjMgRmViIDIwMjAgMjI6MDY6MzIgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGNoZWNrIGZvciAvc3lzL2NsYXNzL3Bvd2VyX3N1cHBseSAtIHdlIGFyZSBjcm9zcworIGNvbXBpbGluZworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLXNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMTIgKy0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYzI4MWFmOS4uNjBiYTBjMCAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMjA5LDE5ICsyMDksOSBAQCBkbmwgQ2hlY2sgZm9yIGludGVyZmFjZSBmb3IgL3N5cy9jbGFzcy9wb3dlcl9zdXBwbHkgdG8gYmUgdXNlZAorIEFDX0FSR19FTkFCTEUoW3N5c2ZzYWNwaV0sIFtBQ19IRUxQX1NUUklORyhbLS1lbmFibGUtc3lzZnNhY3BpXSwgW1VzZSAvc3lzL2NsYXNzL3Bvd2VyX3N1cHBseSB0byByZWFkIHlvdXIgYmF0dGVyeSB2YWx1ZSBAPDpAZGVmYXVsdD1hdXRvQDo+QF0pXSwKKyBbXSwKKyBbCistICAgIGVuYWJsZV9zeXNmc2FjcGk9YXV0bworKyAgICBlbmFibGVfc3lzZnNhY3BpPXllcworIF0pCisgCistaWYgdGVzdCB4IiRlbmFibGVfc3lzZnNhY3BpIiA9IHgiYXV0byI7IHRoZW4KKy0gICAgQUNfQ0hFQ0tfRklMRShbL3N5cy9jbGFzcy9wb3dlcl9zdXBwbHldLAorLSAgICBbCistICAgICAgICBlbmFibGVfc3lzZnNhY3BpPXllcworLSAgICBdLAorLSAgICBbCistICAgICAgICBlbmFibGVfc3lzZnNhY3BpPW5vCistICAgIF0pCistZmkKKy0KKyBpZiB0ZXN0IHgiJGVuYWJsZV9zeXNmc2FjcGkiID0geCJ5ZXMiOyB0aGVuCisgICAgIEFDX0RFRklORShbSEFWRV9TWVNGU19BQ1BJXSwgWzFdLCBbRGVmaW5lIHRvIDEgaWYgL3N5cy9jbGFzcy9wb3dlcl9zdXBwbHkgaXMgZm91bmRdKQorICAgICBlbmFibGVfcHJvY2FjcGk9eWVzCistLSAKKzIuMjEuMAorCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3NlbnNvcnMveGZjZTQtc2Vuc29ycy1wbHVnaW5fMS4yLjk3LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9zZW5zb3JzL3hmY2U0LXNlbnNvcnMtcGx1Z2luXzEuMi45Ny5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQ3OGJiMi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3NlbnNvcnMveGZjZTQtc2Vuc29ycy1wbHVnaW5fMS4yLjk3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotU1VNTUFSWSA9ICJTZW5zb3JzIHBsdWdpbiBmb3IgdGhlIFhmY2UgUGFuZWwiCi1IT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9wYW5lbC1wbHVnaW5zL3hmY2U0LXNlbnNvcnMtcGx1Z2luIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWI5NDc4OWJlZDlhZWMwM2I5NjU2YTljYzUzOThjNzA2IgotCi1pbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwYzc0YzMxMTJjNWU2ZTA3NjQ3YzExNmNkNDNmZjVhNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NTI0ZWM0NTM0ZGU5ZWY3ZjY3NmRlMjg5NWE0MWJmNzBiNzNiOTRkYTVhMjdmZDRhMDIyYjE2ZWRhNTZkMGY0IgotCi1FWFRSQV9PRUNPTkYgPSAiIFwKLSAgICAtLWRpc2FibGUtcHJvY2FjcGkgXAotICAgIC0tZGlzYWJsZS1zeXNmc2FjcGkgXAotICAgIC0tZGlzYWJsZS14bnZjdHJsIFwKLSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pICdzOkxJQlNFTlNPUlNfQ0ZMQUdTPS4qOkxJQlNFTlNPUlNfQ0ZMQUdTPS1JJHtTVEFHSU5HX0lOQ0RJUn06ZycgJHtTfS9jb25maWd1cmUuYWMKLX0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gImxpYnNlbnNvcnMiCi1QQUNLQUdFQ09ORklHW2xpYnNlbnNvcnNdID0gIi0tZW5hYmxlLWxpYnNlbnNvcnMsLS1kaXNhYmxlLWxpYnNlbnNvcnMsIGxtc2Vuc29ycyIKLVBBQ0tBR0VDT05GSUdbaGRkdGVtcF0gICAgPSAiLS1lbmFibGUtaGRkdGVtcCwtLWRpc2FibGUtaGRkdGVtcCwgaGRkdGVtcCIKLVBBQ0tBR0VDT05GSUdbbmV0Y2F0XSAgICAgPSAiLS1lbmFibGUtbmV0Y2F0LC0tZGlzYWJsZS1uZXRjYXQsIG5ldGNhdCIKLVBBQ0tBR0VDT05GSUdbbGlibm90aWZ5XSAgPSAiLS1lbmFibGUtbm90aWZpY2F0aW9uLC0tZGlzYWJsZS1ub3RpZmljYXRpb24sIGxpYm5vdGlmeSIKLQotRklMRVNfU09MSUJTREVWID0gIiR7bGliZGlyfS94ZmNlNC9tb2R1bGVzL2xpYioke1NPTElCU0RFVn0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3NlbnNvcnMveGZjZTQtc2Vuc29ycy1wbHVnaW5fMS4zLjkyLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9zZW5zb3JzL3hmY2U0LXNlbnNvcnMtcGx1Z2luXzEuMy45Mi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZmQwZmY2Ci0tLSAvZGV2L251bGwKKysrIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy9zZW5zb3JzL3hmY2U0LXNlbnNvcnMtcGx1Z2luXzEuMy45Mi5iYgpAQCAtMCwwICsxLDI2IEBACitTVU1NQVJZID0gIlNlbnNvcnMgcGx1Z2luIGZvciB0aGUgWGZjZSBQYW5lbCIKK0hPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL3BhbmVsLXBsdWdpbnMveGZjZTQtc2Vuc29ycy1wbHVnaW4iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yjk0Nzg5YmVkOWFlYzAzYjk2NTZhOWNjNTM5OGM3MDYiCisKK2luaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4KKworU1JDX1VSSVttZDVzdW1dID0gIjczMjdjNGMzMTZlYmQ1ZDkzNjY1ZTc3YjQzMmI4ZDg5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkYzY2NDNkMmMwNjRiNzcxOGJhZGZmNDRiOTQ4ZjhkNDEwZjAwZjEzZGIxOTc4MjBiMjZhZTM4MDQ1ZjUxMTIiCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1Eby1ub3QtY2hlY2stZm9yLXN5cy1jbGFzcy1wb3dlcl9zdXBwbHktd2UtYXJlLWNyb3NzLnBhdGNoIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtcHJvY2FjcGkgXAorICAgIC0tZGlzYWJsZS14bnZjdHJsIFwKKyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgc2VkIC1pICdzOkxJQlNFTlNPUlNfQ0ZMQUdTPS4qOkxJQlNFTlNPUlNfQ0ZMQUdTPS1JJHtTVEFHSU5HX0lOQ0RJUn06ZycgJHtTfS9jb25maWd1cmUuYWMKK30KKworUEFDS0FHRUNPTkZJR1tsaWJzZW5zb3JzXSA9ICItLWVuYWJsZS1saWJzZW5zb3JzLC0tZGlzYWJsZS1saWJzZW5zb3JzLCBsbXNlbnNvcnMiCitQQUNLQUdFQ09ORklHW2hkZHRlbXBdICAgID0gIi0tZW5hYmxlLWhkZHRlbXAsLS1kaXNhYmxlLWhkZHRlbXAsIGhkZHRlbXAiCitQQUNLQUdFQ09ORklHW25ldGNhdF0gICAgID0gIi0tZW5hYmxlLW5ldGNhdCwtLWRpc2FibGUtbmV0Y2F0LCBuZXRjYXQiCitQQUNLQUdFQ09ORklHW2xpYm5vdGlmeV0gID0gIi0tZW5hYmxlLW5vdGlmaWNhdGlvbiwtLWRpc2FibGUtbm90aWZpY2F0aW9uLCBsaWJub3RpZnkiCisKK0ZJTEVTX1NPTElCU0RFViA9ICIke2xpYmRpcn0veGZjZTQvbW9kdWxlcy9saWIqJHtTT0xJQlNERVZ9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93ZWF0aGVyL3hmY2U0LXdlYXRoZXItcGx1Z2luXzAuMTAuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2VhdGhlci94ZmNlNC13ZWF0aGVyLXBsdWdpbl8wLjEwLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDk2YzIwNDguLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93ZWF0aGVyL3hmY2U0LXdlYXRoZXItcGx1Z2luXzAuMTAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVNVTU1BUlkgPSAiUGFuZWwgcGx1Z2luIHRvIGRpc3BsYXkgY3VycmVudCB0ZW1wZXJhdHVyZSBhbmQgd2VhdGhlciBjb25kaXRpb24iCi1IT01FUEFHRSA9ICJodHRwOi8vZ29vZGllcy54ZmNlLm9yZy9wcm9qZWN0cy9wYW5lbC1wbHVnaW5zL3hmY2U0LXdlYXRoZXItcGx1Z2luIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1pbmhlcml0IHhmY2UtcGFuZWwtcGx1Z2luCi0KLURFUEVORFMgKz0gImxpYnNvdXAtMi40IGRidXMtZ2xpYiB1cG93ZXIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3ZmY0YWI2MzZmOTNhZGRiYTA4MTdiZjY0MzZkMjk2NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NDIzYTBjMjc4MzBmZDFmMDhlMDYzYWFlZmJmNzBmMzFkODkyMzVkNzU1NDljYTg0MWQ2NzdhYjJlNDA5NTcyIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS94ZmNlNC93ZWF0aGVyIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93ZWF0aGVyL3hmY2U0LXdlYXRoZXItcGx1Z2luXzAuMTAuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2VhdGhlci94ZmNlNC13ZWF0aGVyLXBsdWdpbl8wLjEwLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQ5YjZlOQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2VhdGhlci94ZmNlNC13ZWF0aGVyLXBsdWdpbl8wLjEwLjEuYmIKQEAgLTAsMCArMSwxMyBAQAorU1VNTUFSWSA9ICJQYW5lbCBwbHVnaW4gdG8gZGlzcGxheSBjdXJyZW50IHRlbXBlcmF0dXJlIGFuZCB3ZWF0aGVyIGNvbmRpdGlvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL3BhbmVsLXBsdWdpbnMveGZjZTQtd2VhdGhlci1wbHVnaW4iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK2luaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4KKworREVQRU5EUyArPSAibGlic291cC0yLjQgZGJ1cy1nbGliIHVwb3dlciIKKworU1JDX1VSSVttZDVzdW1dID0gIjIwM2FkMTZlNzRkNDgyM2Y2ZmI2ZTlhMThiYjdkZjU1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFmYjJhZjVmM2VmZmMyZWE2MTgxNjM2ZWQwZTgyZTZkYWZkNTU2ZWMxYjg0NzgxMDA4MDJmODVhNWQxNjdhODkiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3hmY2U0L3dlYXRoZXIiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy1wYW5lbC1wbHVnaW5zL3doaXNrZXJtZW51L3hmY2U0LXdoaXNrZXJtZW51LXBsdWdpbl8yLjMuNC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2hpc2tlcm1lbnUveGZjZTQtd2hpc2tlcm1lbnUtcGx1Z2luXzIuMy40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1OTVlM2M4Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2hpc2tlcm1lbnUveGZjZTQtd2hpc2tlcm1lbnUtcGx1Z2luXzIuMy40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotU1VNTUFSWSA9ICJBbiBhbHRlcm5hdGUgbWVudSBmb3IgdGhlIFhmY2UgZGVza3RvcCBlbnZpcm9ubWVudCIKLUhPTUVQQUdFID0gImh0dHA6Ly9nb3R0Y29kZS5vcmcveGZjZTQtd2hpc2tlcm1lbnUtcGx1Z2luLyIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotaW5oZXJpdCB4ZmNlLXBhbmVsLXBsdWdpbiBjbWFrZQotCi1TUkNfVVJJW21kNXN1bV0gPSAiZWU5ZTM3OGZhZTc4YjIzMGEyM2IyNDFjZjcyN2M4NGIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODRkM2RlMzU2OTVhMDIzYWFiMTgxZjdhOWI3NWY1OTAyOWViM2IwN2MzZTQ3YTVlMTFlOGJkNzlkYjYyNTcwZSIKLQotUlJFQ09NTUVORFNfJHtQTn0gKz0gIm1lbnVsaWJyZSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2hpc2tlcm1lbnUveGZjZTQtd2hpc2tlcm1lbnUtcGx1Z2luXzIuNC4zLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtcGFuZWwtcGx1Z2lucy93aGlza2VybWVudS94ZmNlNC13aGlza2VybWVudS1wbHVnaW5fMi40LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RhNjMxYgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXBhbmVsLXBsdWdpbnMvd2hpc2tlcm1lbnUveGZjZTQtd2hpc2tlcm1lbnUtcGx1Z2luXzIuNC4zLmJiCkBAIC0wLDAgKzEsMTEgQEAKK1NVTU1BUlkgPSAiQW4gYWx0ZXJuYXRlIG1lbnUgZm9yIHRoZSBYZmNlIGRlc2t0b3AgZW52aXJvbm1lbnQiCitIT01FUEFHRSA9ICJodHRwOi8vZ290dGNvZGUub3JnL3hmY2U0LXdoaXNrZXJtZW51LXBsdWdpbi8iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK2luaGVyaXQgeGZjZS1wYW5lbC1wbHVnaW4gY21ha2UKKworU1JDX1VSSVttZDVzdW1dID0gIjdiNjY0Mzg5OTYxMjdiNzU5YWQ2MzRmNjU3OWUwMDNjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM5ZmFlZWU5MWNlYjNjYjcyN2Y5ZGUwOWRiZjIwYThjNzNlNTI0ODUxYTJjM2I3NmE0YjE5YTA3MzJkZTVmZjAiCisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJtZW51bGlicmUiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy10aHVuYXItcGx1Z2lucy9zaGFyZXMvdGh1bmFyLXNoYXJlcy1wbHVnaW5fMC4zLjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy10aHVuYXItcGx1Z2lucy9zaGFyZXMvdGh1bmFyLXNoYXJlcy1wbHVnaW5fMC4zLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4NTA2MzYuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtdGh1bmFyLXBsdWdpbnMvc2hhcmVzL3RodW5hci1zaGFyZXMtcGx1Z2luXzAuMy4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotU1VNTUFSWSA9ICJRdWlja2x5IHNoYXJlIGEgZm9sZGVyIHVzaW5nIFNhbWJhIGZyb20gVGh1bmFyIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgotCi1pbmhlcml0IHRodW5hci1wbHVnaW4gZmVhdHVyZXNfY2hlY2sKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwYW0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhMTc3MzE2OGMwYjNjN2MwZjI1M2EzMzlmMDJlNWFlMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkNmFkYzAxY2E0NWEzZDI1NjdhMmE5NjlhM2IxNmQxNzk5YTg5NzU0NTNhYjE4MDNhMDY1ZmE4MjQ5NmI1YjY1IgotCi1SREVQRU5EU18ke1BOfSArPSAic2FtYmEtc2VydmVyIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtdGh1bmFyLXBsdWdpbnMvc2hhcmVzL3RodW5hci1zaGFyZXMtcGx1Z2luXzAuMy4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMtdGh1bmFyLXBsdWdpbnMvc2hhcmVzL3RodW5hci1zaGFyZXMtcGx1Z2luXzAuMy4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc1YWUwM2EKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy10aHVuYXItcGx1Z2lucy9zaGFyZXMvdGh1bmFyLXNoYXJlcy1wbHVnaW5fMC4zLjEuYmIKQEAgLTAsMCArMSwxMSBAQAorU1VNTUFSWSA9ICJRdWlja2x5IHNoYXJlIGEgZm9sZGVyIHVzaW5nIFNhbWJhIGZyb20gVGh1bmFyIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgorCitpbmhlcml0IHRodW5hci1wbHVnaW4gZmVhdHVyZXNfY2hlY2sKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJwYW0iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwODg0ODU1ZDYwY2YxMDMxYjkwMTNiNmY1YjEyNTM3MiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkYzFkOGM3Y2FhNzI3ZTc2ZDAzM2Q0NjUzZGMwNzQyNjEzZjU3YTE3MTFkMDA1MDkwMDY1OWM5MGE4NDQ1MmEwIgorCitSREVQRU5EU18ke1BOfSArPSAic2FtYmEtc2VydmVyIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS9leG8vZXhvXzAuMTIuMTEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2V4by9leG9fMC4xMi4xMS5iYgppbmRleCA0YzE2Njg5Li40YTVhNzcyIDEwMDY0NAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2V4by9leG9fMC4xMi4xMS5iYgorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL2V4by9leG9fMC4xMi4xMS5iYgpAQCAtNSw3ICs1LDcgQEAKIERFUEVORFMgPSAiZ3RrKzMgbGlieGZjZTR1aSB2aXJ0dWFsL2xpYngxMSBsaWJ1cmktcGVybC1uYXRpdmUgY2Fpcm8iCiBERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJnbGliLTIuMC1uYXRpdmUgeGZjZTQtZGV2LXRvb2xzLW5hdGl2ZSBpbnRsdG9vbC1uYXRpdmUiCiAKLWluaGVyaXQgeGZjZSBwZXJsbmF0aXZlIGd0ay1kb2MgZmVhdHVyZXNfY2hlY2sKK2luaGVyaXQgeGZjZSBwZXJsbmF0aXZlIGd0ay1kb2MgZmVhdHVyZXNfY2hlY2sgbWltZS14ZGcKIAogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFU19jbGFzcy1uYXRpdmUgPSAiIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS90aHVuYXIvdGh1bmFyXzEuOC4xMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdGh1bmFyL3RodW5hcl8xLjguMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyMzc2YWEuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS90aHVuYXIvdGh1bmFyXzEuOC4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVNVTU1BUlkgPSAiRmlsZSBtYW5hZ2VyIGZvciB0aGUgWGZjZSBEZXNrdG9wIEVudmlyb25tZW50IgotU0VDVElPTiA9ICJ4MTEiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi1ERVBFTkRTID0gImV4byBnZGstcGl4YnVmIGxpYnhmY2U0dWkgbGlic20gc3RhcnR1cC1ub3RpZmljYXRpb24gbGlibm90aWZ5IHhmY2U0LXBhbmVsIHVkZXYiCi0KLWluaGVyaXQgeGZjZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg1YzczOTRkODI1NDJkNWEwMjNmMWY1YmFlZjEwOWQ4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNkNDQ4ZDgxYzBlNDllZmJhYTVhZTZiZjM0YWMzYzg4YTYxNDE3OGExMTI3YWZhZWU2YjNhMWI1ZWUxMmU3MDkiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3BjcmVdID0gIi0tZW5hYmxlLXBjcmUsLS1kaXNhYmxlLXBjcmUsbGlicGNyZSIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtsaWJkaXJ9L3RodW5hcngtMy8qIFwKLSAgICAke2xpYmRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucy8qIFwKLSAgICAke2xpYmRpcn0vVGh1bmFyL1tUdF1odW5hciogXAotICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKLSAgICAke2RhdGFkaXJ9L2RidXMtMSBcCi0gICAgJHtkYXRhZGlyfS9tZXRhaW5mbyBcCi0gICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCi0gICAgJHtkYXRhZGlyfS9UaHVuYXIgXAotICAgICR7ZGF0YWRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucy8qIFwKLSIKLQotUlJFQ09NTUVORFNfJHtQTn0gPSAiZ3ZmcyBndmZzZC10cmFzaCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UvdGh1bmFyL3RodW5hcl8xLjguMTIuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3RodW5hci90aHVuYXJfMS44LjEyLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkMmJlZmQKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3RodW5hci90aHVuYXJfMS44LjEyLmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiRmlsZSBtYW5hZ2VyIGZvciB0aGUgWGZjZSBEZXNrdG9wIEVudmlyb25tZW50IgorU0VDVElPTiA9ICJ4MTEiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCitERVBFTkRTID0gImV4byBnZGstcGl4YnVmIGxpYnhmY2U0dWkgbGlic20gc3RhcnR1cC1ub3RpZmljYXRpb24gbGlibm90aWZ5IHhmY2U0LXBhbmVsIHVkZXYiCisKK2luaGVyaXQgeGZjZSBnb2JqZWN0LWludHJvc3BlY3Rpb24gZmVhdHVyZXNfY2hlY2sgbWltZS14ZGcKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSVttZDVzdW1dID0gImJlYmQyZDgzYWQyZWQxMTFiOTA2Yzk5YjY1ZmIzMmVkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI5Mjk1YmVlMGIxZjViZmQ1MjVlMzc0MDVlNWQzMmI0OTdhZTUzOWIxNTE4M2RkMTRlNmNhNDllMjUyMjI1ZjgiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW3BjcmVdID0gIi0tZW5hYmxlLXBjcmUsLS1kaXNhYmxlLXBjcmUsbGlicGNyZSIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtsaWJkaXJ9L3RodW5hcngtMy8qIFwKKyAgICAke2xpYmRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucy8qIFwKKyAgICAke2xpYmRpcn0vVGh1bmFyL1tUdF1odW5hciogXAorICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyAgICAke2RhdGFkaXJ9L2RidXMtMSBcCisgICAgJHtkYXRhZGlyfS9tZXRhaW5mbyBcCisgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCisgICAgJHtkYXRhZGlyfS9UaHVuYXIgXAorICAgICR7ZGF0YWRpcn0veGZjZTQvcGFuZWwvcGx1Z2lucy8qIFwKKyIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAiZ3ZmcyBndmZzZC10cmFzaCIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcGFuZWwveGZjZTQtcGFuZWxfNC4xNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1wYW5lbC94ZmNlNC1wYW5lbF80LjE0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjM2YzMjMuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1wYW5lbC94ZmNlNC1wYW5lbF80LjE0LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TVU1NQVJZID0gIlhmY2U0IFBhbmVsIgotU0VDVElPTiA9ICJ4MTEiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjZhOGJkNzVkOGY4NDk4YmRiYmU2NGEyNzc5MWQ0ZWUiCi1ERVBFTkRTID0gImdhcmNvbiBleG8gZ3RrKzMgY2Fpcm8gdmlydHVhbC9saWJ4MTEgbGlieG1sMiBsaWJ3bmNrMyB2YWxhLW5hdGl2ZSIKLQotaW5oZXJpdCB4ZmNlIGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGZlYXR1cmVzX2NoZWNrIHJlbW92ZS1saWJ0b29sCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzMzIzNTg4ZjFjMThmMDQ4OTFlMDEzMjQzZGExZTM1NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5YzNjNzhiNDlkZGZhYzdkNDJhODA0ZTZhNmFkOWQyMmFkNjRlYzYwYmJlMTdkODcyNGJjNTJkM2UzZjZkMTE0IgotU1JDX1VSSSArPSAiIFwKLSAgICBmaWxlOi8vMDAwMS13aW5kb3dtZW51LWRvLW5vdC1kaXNwbGF5LWRlc2t0b3AtaWNvbi13aGVuLW5vLXdpbmRvLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMi11c2UtbHhkbS10by1yZXBsYWNlLWRtLXRvb2wucGF0Y2ggXAotIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKLSAgICBwbHVnaW5fZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLycpCi0gICAgcGx1Z2luX25hbWUgPSBkLmV4cGFuZCgnJHtQTn0tcGx1Z2luLSVzJykKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwbHVnaW5fZGlyLCAnXmxpYiguKikuc28kJywgcGx1Z2luX25hbWUsCi0gICAgICAgICAgICAgICAgICAgICAgJyR7UE59IHBsdWdpbiBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUsCi0gICAgICAgICAgICAgICAgICAgICAgYXV4X2ZpbGVzX3BhdHRlcm49Wycke2RhdGFkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvJXMuZGVza3RvcCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke3N5c2NvbmZkaXJ9L3hkZy94ZmNlL3BhbmVsLyVzLSonLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMvKi0lcy5wbmcnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtiaW5kaXJ9LyolcyonXSkKLX0KLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7UE59LXBsdWdpbi0uKiIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWd0azMiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0veGZjZTQvcGFuZWwvbWlncmF0ZSBcCi0gICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3dyYXBwZXItMS4wIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLyoubGEiCi0KLUZJTEVTXyR7UE59LWd0azMgPSAiIFwKLSAgICAke2xpYmRpcn0vbGlieGZjZTRwYW5lbC0yLjAke1NPTElCU30gXAotICAgICR7bGliZGlyfS94ZmNlNC9wYW5lbC93cmFwcGVyLTIuMCBcCi0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXBhbmVsL3hmY2U0LXBhbmVsXzQuMTQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcGFuZWwveGZjZTQtcGFuZWxfNC4xNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc2YWJlZjAKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXBhbmVsL3hmY2U0LXBhbmVsXzQuMTQuMy5iYgpAQCAtMCwwICsxLDQxIEBACitTVU1NQVJZID0gIlhmY2U0IFBhbmVsIgorU0VDVElPTiA9ICJ4MTEiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjZhOGJkNzVkOGY4NDk4YmRiYmU2NGEyNzc5MWQ0ZWUiCitERVBFTkRTID0gImdhcmNvbiBleG8gZ3RrKzMgY2Fpcm8gdmlydHVhbC9saWJ4MTEgbGlieG1sMiBsaWJ3bmNrMyB2YWxhLW5hdGl2ZSIKKworaW5oZXJpdCB4ZmNlIGd0ay1kb2MgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGZlYXR1cmVzX2NoZWNrIHJlbW92ZS1saWJ0b29sIG1pbWUteGRnCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxNzc4MThkNGE4NDYzM2MxZDQ4OWY3MDNmZmZlOTA1ZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlZjIyMzI0ZDI2ZTVhZjczNTEzNGJiMTBmODViNmUxNjUyNWFjOWY0OGJlOGQyZjZiNjM0MTQyZmJmY2FiYmM5IgorU1JDX1VSSSArPSAiIFwKKyAgICBmaWxlOi8vMDAwMS13aW5kb3dtZW51LWRvLW5vdC1kaXNwbGF5LWRlc2t0b3AtaWNvbi13aGVuLW5vLXdpbmRvLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi11c2UtbHhkbS10by1yZXBsYWNlLWRtLXRvb2wucGF0Y2ggXAorIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKKyAgICBwbHVnaW5fZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLycpCisgICAgcGx1Z2luX25hbWUgPSBkLmV4cGFuZCgnJHtQTn0tcGx1Z2luLSVzJykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBwbHVnaW5fZGlyLCAnXmxpYiguKikuc28kJywgcGx1Z2luX25hbWUsCisgICAgICAgICAgICAgICAgICAgICAgJyR7UE59IHBsdWdpbiBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgYXV4X2ZpbGVzX3BhdHRlcm49Wycke2RhdGFkaXJ9L3hmY2U0L3BhbmVsL3BsdWdpbnMvJXMuZGVza3RvcCcsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcke3N5c2NvbmZkaXJ9L3hkZy94ZmNlL3BhbmVsLyVzLSonLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMvKi0lcy5wbmcnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJHtiaW5kaXJ9LyolcyonXSkKK30KKworUEFDS0FHRVNfRFlOQU1JQyArPSAiXiR7UE59LXBsdWdpbi0uKiIKKworUEFDS0FHRVMgPSsgIiR7UE59LWd0azMiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0veGZjZTQvcGFuZWwvbWlncmF0ZSBcCisgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3hmY2U0L3BhbmVsL3dyYXBwZXItMS4wIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94ZmNlNC9wYW5lbC9wbHVnaW5zLyoubGEiCisKK0ZJTEVTXyR7UE59LWd0azMgPSAiIFwKKyAgICAke2xpYmRpcn0vbGlieGZjZTRwYW5lbC0yLjAke1NPTElCU30gXAorICAgICR7bGliZGlyfS94ZmNlNC9wYW5lbC93cmFwcGVyLTIuMCBcCisiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXBvd2VyLW1hbmFnZXIveGZjZTQtcG93ZXItbWFuYWdlcl8xLjYuNS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcG93ZXItbWFuYWdlci94ZmNlNC1wb3dlci1tYW5hZ2VyXzEuNi41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOTVlMmU0Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcG93ZXItbWFuYWdlci94ZmNlNC1wb3dlci1tYW5hZ2VyXzEuNi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDMgKzAsMCBAQAotU1VNTUFSWSA9ICJQb3dlciBtYW5hZ2VyIGZvciB0aGUgWGZjZSBkZXNrdG9wIGVudmlyb25tZW50IgotSE9NRVBBR0UgPSAiaHR0cDovL2dvb2RpZXMueGZjZS5vcmcvcHJvamVjdHMvYXBwbGljYXRpb25zL3hmY2U0LXBvd2VyLW1hbmFnZXIiCi1TRUNUSU9OID0gIngxMSIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiIKLQotaW5oZXJpdCB4ZmNlIGZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLURFUEVORFMgKz0gImxpYm5vdGlmeSBsaWJ4cmFuZHIgdmlydHVhbC9saWJ4MTEgbGlieGV4dCB4ZmNlNC1wYW5lbCB1cG93ZXIgbGlieHNjcm5zYXZlciIKLQotU1JDX1VSSVttZDVzdW1dID0gIjcwOWVmYmMyZGU5ZWQ4NGI0ODMxODQ3ZmY3MGJjZDdmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEwYWRiNjc4OTliMTgxY2E1ZmM1NzdmYzliYjdhNjk4ZmI5NGU0MjA3MzU4NWY3ZTJiZTY0MmM3ZGIxMjdhNzQiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZW5hYmxlLW5ldHdvcmstbWFuYWdlciBcCi0gICAgLS1lbmFibGUtcGFuZWwtcGx1Z2lucyBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwb2xraXQnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS1lbmFibGUtcG9sa2l0LCAtLWRpc2FibGUtcG9sa2l0LCBwb2xraXQiCi0KLVBBQ0tBR0VTICs9ICJ4ZmNlNC1wb3dlcm1hbmFnZXItcGx1Z2luIgotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2RhdGFkaXJ9L3BvbGtpdC0xIFwKLSAgICAke2RhdGFkaXJ9L21ldGFpbmZvIFwKLSIKLQotRklMRVNfeGZjZTQtcG93ZXJtYW5hZ2VyLXBsdWdpbiA9ICIgXAotICAgICR7bGliZGlyfS94ZmNlNCBcCi0gICAgJHtkYXRhZGlyfS94ZmNlNCBcCi0iCi0KLVJERVBFTkRTX3hmY2U0LXBvd2VybWFuYWdlci1wbHVnaW4gPSAiJHtQTn0iCi1SREVQRU5EU18ke1BOfSA9ICJuZXR3b3JrbWFuYWdlciAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJycsJ2NvbnNvbGVraXQnLGQpfSIKLQotIyB4ZmNlNC1icmlnaHRuZXNzLXBsdWdpbiB3YXMgcmVwbGFjZWQgYnkgeGZjZTQtcG93ZXJtYW5hZ2VyLXBsdWdpbgotUlBST1ZJREVTX3hmY2U0LXBvd2VybWFuYWdlci1wbHVnaW4gKz0gInhmY2U0LWJyaWdodG5lc3MtcGx1Z2luIgotUlJFUExBQ0VTX3hmY2U0LXBvd2VybWFuYWdlci1wbHVnaW4gKz0gInhmY2U0LWJyaWdodG5lc3MtcGx1Z2luIgotUkNPTkZMSUNUU194ZmNlNC1wb3dlcm1hbmFnZXItcGx1Z2luICs9ICJ4ZmNlNC1icmlnaHRuZXNzLXBsdWdpbiIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcG93ZXItbWFuYWdlci94ZmNlNC1wb3dlci1tYW5hZ2VyXzEuNi42LmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1wb3dlci1tYW5hZ2VyL3hmY2U0LXBvd2VyLW1hbmFnZXJfMS42LjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjA4OTkwYQotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtcG93ZXItbWFuYWdlci94ZmNlNC1wb3dlci1tYW5hZ2VyXzEuNi42LmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiUG93ZXIgbWFuYWdlciBmb3IgdGhlIFhmY2UgZGVza3RvcCBlbnZpcm9ubWVudCIKK0hPTUVQQUdFID0gImh0dHA6Ly9nb29kaWVzLnhmY2Uub3JnL3Byb2plY3RzL2FwcGxpY2F0aW9ucy94ZmNlNC1wb3dlci1tYW5hZ2VyIgorU0VDVElPTiA9ICJ4MTEiCisKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIiCisKK2luaGVyaXQgeGZjZSBmZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitERVBFTkRTICs9ICJsaWJub3RpZnkgbGlieHJhbmRyIHZpcnR1YWwvbGlieDExIGxpYnhleHQgeGZjZTQtcGFuZWwgdXBvd2VyIGxpYnhzY3Juc2F2ZXIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxOTg3M2ZjOGE2ZGU1ZTM3ZWQ1NzAzNmEwMDAyYTVjZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYjdiZjBkM2U4YWY2OWIxMGY3YjZhNTE4NDUxZTAxZmM3ODg4ZTBkOWQzNjBiYzMzZjZjODkxNzliYjYwODBiIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWVuYWJsZS1uZXR3b3JrLW1hbmFnZXIgXAorICAgIC0tZW5hYmxlLXBhbmVsLXBsdWdpbnMgXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncG9sa2l0JywgZCl9IgorUEFDS0FHRUNPTkZJR1twb2xraXRdID0gIi0tZW5hYmxlLXBvbGtpdCwgLS1kaXNhYmxlLXBvbGtpdCwgcG9sa2l0IgorCitQQUNLQUdFUyArPSAieGZjZTQtcG93ZXJtYW5hZ2VyLXBsdWdpbiIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCisgICAgJHtkYXRhZGlyfS9tZXRhaW5mbyBcCisiCisKK0ZJTEVTX3hmY2U0LXBvd2VybWFuYWdlci1wbHVnaW4gPSAiIFwKKyAgICAke2xpYmRpcn0veGZjZTQgXAorICAgICR7ZGF0YWRpcn0veGZjZTQgXAorIgorCitSREVQRU5EU194ZmNlNC1wb3dlcm1hbmFnZXItcGx1Z2luID0gIiR7UE59IgorUkRFUEVORFNfJHtQTn0gPSAibmV0d29ya21hbmFnZXIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCcnLCdjb25zb2xla2l0JyxkKX0iCisKKyMgeGZjZTQtYnJpZ2h0bmVzcy1wbHVnaW4gd2FzIHJlcGxhY2VkIGJ5IHhmY2U0LXBvd2VybWFuYWdlci1wbHVnaW4KK1JQUk9WSURFU194ZmNlNC1wb3dlcm1hbmFnZXItcGx1Z2luICs9ICJ4ZmNlNC1icmlnaHRuZXNzLXBsdWdpbiIKK1JSRVBMQUNFU194ZmNlNC1wb3dlcm1hbmFnZXItcGx1Z2luICs9ICJ4ZmNlNC1icmlnaHRuZXNzLXBsdWdpbiIKK1JDT05GTElDVFNfeGZjZTQtcG93ZXJtYW5hZ2VyLXBsdWdpbiArPSAieGZjZTQtYnJpZ2h0bmVzcy1wbHVnaW4iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNlc3Npb24veGZjZTQtc2Vzc2lvbl80LjE0LjAuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNlc3Npb24veGZjZTQtc2Vzc2lvbl80LjE0LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3NTYwYzIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1zZXNzaW9uL3hmY2U0LXNlc3Npb25fNC4xNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotU1VNTUFSWSA9ICJ4ZmNlNC1zZXNzaW9uIGlzIGEgc2Vzc2lvbiBtYW5hZ2VyIGZvciBYZmNlIDQgRGVza3RvcCBFbnZpcm9ubWVudCIKLVNFQ1RJT04gPSAieDExIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTlhYzJlN2NmZjFkZGFmNDhiNmVhYjYwMjhmMjNlZjg4IgotCi1ERVBFTkRTID0gImxpYnduY2szIGxpYnNtIGxpYnhmY2U0dWkgdmlydHVhbC9saWJ4MTEiCi0KLWluaGVyaXQgeGZjZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIGZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwb2xraXQnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS1lbmFibGUtcG9sa2l0LCAtLWRpc2FibGUtcG9sa2l0LCBwb2xraXQiCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmluLWhhcmQtY29kZS1wYXRoLXRvLWljZWF1dGgucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjYzNTM2MWY5OWEwMWIyZDI2YzQzMGE1MjBiNmQxMzE0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE0ZmI2ZGI3NGViNjllYjQwMDY3Mzg1NmJhMzA3YTBlNTdmNTc3Y2Y3N2MzNTYxYTU5MTAxNTFlM2Q1MjA0M2YiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gIngtc2Vzc2lvbi1tYW5hZ2VyIgotQUxURVJOQVRJVkVfVEFSR0VUW3gtc2Vzc2lvbi1tYW5hZ2VyXSA9ICIke2JpbmRpcn0veGZjZTQtc2Vzc2lvbiIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZXyR7UE59ID0gIjEwMCIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgJHtsaWJkaXJ9L3hmY2U0LyovKi8qLnNvIFwKLSAgICAke2xpYmRpcn0veGZjZTQvc2Vzc2lvbi8qLSotKiBcCi0gICAgJHtkYXRhZGlyfS94c2Vzc2lvbnMgXAotICAgICR7ZGF0YWRpcn0vdGhlbWVzL0RlZmF1bHQvYmFsb3UvKiBcCi0gICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCi0iCi0KLVJERVBFTkRTXyR7UE59ID0gIiBcCi0gICAgZGJ1cy14MTEgXAotICAgIGljZWF1dGggXAotICAgIG5ldGJhc2UgXAotICAgIHVwb3dlciBcCi0gICAgeGluaXQgXAotICAgIHhyZGIgXAotIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1zZXNzaW9uL3hmY2U0LXNlc3Npb25fNC4xNC4yLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1zZXNzaW9uL3hmY2U0LXNlc3Npb25fNC4xNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY0OTdiNzYKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNlc3Npb24veGZjZTQtc2Vzc2lvbl80LjE0LjIuYmIKQEAgLTAsMCArMSw0MCBAQAorU1VNTUFSWSA9ICJ4ZmNlNC1zZXNzaW9uIGlzIGEgc2Vzc2lvbiBtYW5hZ2VyIGZvciBYZmNlIDQgRGVza3RvcCBFbnZpcm9ubWVudCIKK1NFQ1RJT04gPSAieDExIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTlhYzJlN2NmZjFkZGFmNDhiNmVhYjYwMjhmMjNlZjg4IgorCitERVBFTkRTID0gImxpYnduY2szIGxpYnNtIGxpYnhmY2U0dWkgdmlydHVhbC9saWJ4MTEiCisKK2luaGVyaXQgeGZjZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIGZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwb2xraXQnLCBkKX0iCitQQUNLQUdFQ09ORklHW3BvbGtpdF0gPSAiLS1lbmFibGUtcG9sa2l0LCAtLWRpc2FibGUtcG9sa2l0LCBwb2xraXQiCisKK1NSQ19VUkkgKz0gIiBcCisgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmluLWhhcmQtY29kZS1wYXRoLXRvLWljZWF1dGgucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjVhZDIzMDYyZmQwOGVmNWY1YWQ5YjQzODljN2I1NGM2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImZiZTNhNGE2MGM5MTU4OWEyMDI0Y2UxMmIyZDI2Njc2MjVhOGZlZGNiYzkwZWYwMzE4MzFmNTYzMTlmNTk3YWYiCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gIngtc2Vzc2lvbi1tYW5hZ2VyIgorQUxURVJOQVRJVkVfVEFSR0VUW3gtc2Vzc2lvbi1tYW5hZ2VyXSA9ICIke2JpbmRpcn0veGZjZTQtc2Vzc2lvbiIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZXyR7UE59ID0gIjEwMCIKKworRklMRVNfJHtQTn0gKz0gIiBcCisgICAgJHtsaWJkaXJ9L3hmY2U0LyovKi8qLnNvIFwKKyAgICAke2xpYmRpcn0veGZjZTQvc2Vzc2lvbi8qLSotKiBcCisgICAgJHtkYXRhZGlyfS94c2Vzc2lvbnMgXAorICAgICR7ZGF0YWRpcn0vdGhlbWVzL0RlZmF1bHQvYmFsb3UvKiBcCisgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCisiCisKK1JERVBFTkRTXyR7UE59ID0gIiBcCisgICAgZGJ1cy14MTEgXAorICAgIGljZWF1dGggXAorICAgIG5ldGJhc2UgXAorICAgIHVwb3dlciBcCisgICAgeGluaXQgXAorICAgIHhyZGIgXAorIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmNlNC1zZXR0aW5ncy94ZmNlNC1zZXR0aW5nc180LjE0LjEuYmIgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNldHRpbmdzL3hmY2U0LXNldHRpbmdzXzQuMTQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDMyNmY5Mi4uMDAwMDAwMAotLS0gYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNldHRpbmdzL3hmY2U0LXNldHRpbmdzXzQuMTQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiWGZjZTQgc2V0dGluZ3MiCi1TRUNUSU9OID0gIngxMS93bSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLURFUEVORFMgPSAiZXhvIGV4by1uYXRpdmUgZ2FyY29uIGxpYnhpIHZpcnR1YWwvbGlieDExIHhyYW5kciBsaWJ4Y3Vyc29yIGxpYnhrbGF2aWVyIHVwb3dlciIKLQotaW5oZXJpdCB4ZmNlIGZlYXR1cmVzX2NoZWNrCi0KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCi0KLVNSQ19VUkkgKz0gIiBcCi0gICAgZmlsZTovLzAwMDEteHNldHRpbmdzLnhtbC1TZXQtZGVmYXVsdC10aGVtZXMucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjJmNDE3MWMyMWRiOTA1ZDliYTBjYTliZWUzZmM3YTViIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4NzNlOWY2YjhlODAxZmQ5MzA0ZWUxMDBjNGM3NmVkOTk4NzQ0NmMzODQyOWQwMjQ3N2MwODY0MzFjMGJmN2EiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbWFpbnRhaW5lci1tb2RlIC0tZGlzYWJsZS1kZWJ1ZyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ2Fsc2EnLCdzb3VuZC1zZXR0ZXInLCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywncHVsc2VhdWRpbycsJ3NvdW5kLXNldHRlcicsJycsZCksZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbbm90aWZ5XSA9ICItLWVuYWJsZS1saWJub3RpZnksLS1kaXNhYmxlLWxpYm5vdGlmeSxsaWJub3RpZnkiCi1QQUNLQUdFQ09ORklHW3NvdW5kLXNldHRlcl0gPSAiLS1lbmFibGUtc291bmQtc2V0dGluZ3MsIC0tZGlzYWJsZS1zb3VuZC1zZXR0aW5ncywgbGliY2FuYmVycmEsIGxpYmNhbmJlcnJhLWd0azIgc291bmQtdGhlbWUtZnJlZWRlc2t0b3AiCi0KLUZJTEVTXyR7UE59ICs9ICIgXAotICAgICR7bGliZGlyfS94ZmNlNCBcCi0gICAgJHtkYXRhZGlyfS94ZmNlNCBcCi0iCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJhZHdhaXRhLWljb24tdGhlbWUiCi1SUkVDT01NRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ2Fsc2EnLCdsaWJjYW5iZXJyYS1hbHNhJywnJyxkKX0iCi1SUkVDT01NRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3B1bHNlYXVkaW8nLCdsaWJjYW5iZXJyYS1wdWxzZScsJycsZCl9IgotUlJFQ09NTUVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywneGZjZTQtZGF0ZXRpbWUtc2V0dGVyJywnJyxkKX0iCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNldHRpbmdzL3hmY2U0LXNldHRpbmdzXzQuMTQuMy5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZjZTQtc2V0dGluZ3MveGZjZTQtc2V0dGluZ3NfNC4xNC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA4YzYxMmEKLS0tIC9kZXYvbnVsbAorKysgYi9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmY2U0LXNldHRpbmdzL3hmY2U0LXNldHRpbmdzXzQuMTQuMy5iYgpAQCAtMCwwICsxLDMzIEBACitTVU1NQVJZID0gIlhmY2U0IHNldHRpbmdzIgorU0VDVElPTiA9ICJ4MTEvd20iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCitERVBFTkRTID0gImV4byBleG8tbmF0aXZlIGdhcmNvbiBsaWJ4aSB2aXJ0dWFsL2xpYngxMSB4cmFuZHIgbGlieGN1cnNvciBsaWJ4a2xhdmllciB1cG93ZXIiCisKK2luaGVyaXQgeGZjZSBmZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJICs9ICIgXAorICAgIGZpbGU6Ly8wMDAxLXhzZXR0aW5ncy54bWwtU2V0LWRlZmF1bHQtdGhlbWVzLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJmZThmN2Q0MjIxYmUxNDY3Yjg1Yzg1MzkzNDRjM2YwNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjYWIxYTRkNTM1MWY5ODcxNTMzNzAwNTIzNTcwZjg2ZjkyYmJlNmU0MDU1ZjQ0ZTVkZjk1MGViNGI0ZjQ4YmIzIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLW1haW50YWluZXItbW9kZSAtLWRpc2FibGUtZGVidWciCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdhbHNhJywnc291bmQtc2V0dGVyJywgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3B1bHNlYXVkaW8nLCdzb3VuZC1zZXR0ZXInLCcnLGQpLGQpfSBcCisiCitQQUNLQUdFQ09ORklHW25vdGlmeV0gPSAiLS1lbmFibGUtbGlibm90aWZ5LC0tZGlzYWJsZS1saWJub3RpZnksbGlibm90aWZ5IgorUEFDS0FHRUNPTkZJR1tzb3VuZC1zZXR0ZXJdID0gIi0tZW5hYmxlLXNvdW5kLXNldHRpbmdzLCAtLWRpc2FibGUtc291bmQtc2V0dGluZ3MsIGxpYmNhbmJlcnJhLCBsaWJjYW5iZXJyYS1ndGsyIHNvdW5kLXRoZW1lLWZyZWVkZXNrdG9wIgorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2xpYmRpcn0veGZjZTQgXAorICAgICR7ZGF0YWRpcn0veGZjZTQgXAorIgorCitSUkVDT01NRU5EU18ke1BOfSArPSAiYWR3YWl0YS1pY29uLXRoZW1lIgorUlJFQ09NTUVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdhbHNhJywnbGliY2FuYmVycmEtYWxzYScsJycsZCl9IgorUlJFQ09NTUVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdwdWxzZWF1ZGlvJywnbGliY2FuYmVycmEtcHVsc2UnLCcnLGQpfSIKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3hmY2U0LWRhdGV0aW1lLXNldHRlcicsJycsZCl9IgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmRlc2t0b3AveGZkZXNrdG9wXzQuMTQuMS5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZkZXNrdG9wL3hmZGVza3RvcF80LjE0LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZlOWY0MGIuLjAwMDAwMDAKLS0tIGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmRlc2t0b3AveGZkZXNrdG9wXzQuMTQuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiWGZjZTQgRGVza3RvcCBNYW5hZ2VyIgotU0VDVElPTiA9ICJ4MTEvYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKLURFUEVORFMgPSAibGlieGZjZTR1aSBsaWJ3bmNrIHRodW5hciBnYXJjb24gZXhvIgotCi1pbmhlcml0IHhmY2UgZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKLQotU1JDX1VSSVttZDVzdW1dID0gImRlNGI4ZjY2ODc4NjJhZDQ2ZGJlNGUxY2VkNDUzZjRkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY3MDVhMDE2MjQ2ZWM1NGFiMGM2ODhkMWEwNTc3ZjZjMmI0NWE0NDY2OTBhYThkOWU1YTdhYzIzZWZlYmY4ODIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW25vdGlmeV0gPSAiLS1lbmFibGUtbm90aWZpY2F0aW9ucywtLWRpc2FibGUtbm90aWZpY2F0aW9ucyxsaWJub3RpZnkiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2JhY2tncm91bmRzIgpkaWZmIC0tZ2l0IGEvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZmRlc2t0b3AveGZkZXNrdG9wXzQuMTQuMi5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZkZXNrdG9wL3hmZGVza3RvcF80LjE0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUxMmE2MgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZkZXNrdG9wL3hmZGVza3RvcF80LjE0LjIuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJYZmNlNCBEZXNrdG9wIE1hbmFnZXIiCitTRUNUSU9OID0gIngxMS9iYXNlIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIgorREVQRU5EUyA9ICJsaWJ4ZmNlNHVpIGxpYnduY2sgdGh1bmFyIGdhcmNvbiBleG8iCisKK2luaGVyaXQgeGZjZSBmZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNWRiMDlkZjM5YjA4MDhmMjViZDNhMzEyOGY4YzllNzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTMwNTM0NDYxZmVhOTA3Zjk2OWY2MDhhMTFjODRiZTBiMWFhYWQ2ODdjNTkxYzMyY2Q1NmE5ZDI3NGVhM2U3NCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbbm90aWZ5XSA9ICItLWVuYWJsZS1ub3RpZmljYXRpb25zLC0tZGlzYWJsZS1ub3RpZmljYXRpb25zLGxpYm5vdGlmeSIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vYmFja2dyb3VuZHMiCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLXhmY2UvcmVjaXBlcy14ZmNlL3hmd200L3hmd200XzQuMTQuMC5iYiBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZ3bTQveGZ3bTRfNC4xNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNzdlNjE5Li4wMDAwMDAwCi0tLSBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZ3bTQveGZ3bTRfNC4xNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiWGZjZTQgV2luZG93IE1hbmFnZXIiCi1TRUNUSU9OID0gIngxMS93bSIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzkxNzI4YTA3M2JjMDA5YjRmZmFmMDBiNzU5OTg1NSIKLURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlieGZjZTR1aSBsaWJ3bmNrMyBsaWJ4aW5lcmFtYSBleG8tbmF0aXZlIgotCi1pbmhlcml0IHhmY2UgdXBkYXRlLWFsdGVybmF0aXZlcyBmZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1SZXZlcnQtY29tcG9zaXRvci1SZXZlcnQtdG8tR0xYLWFzLWRlZmF1bHQtdmJsYW5rLW1lLnBhdGNoIgotU1JDX1VSSVttZDVzdW1dID0gImMzMzg0NzgzNjk1OGQ1NDBlM2VjZDBhMjdmMTMxYzBmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI0MTgyYmY4ZGM2M2QwOTJmMTIwYTUxZmNhZTBlYjU0YjliZDRhYTRmODQ4NmY0N2U1YTY1YTEwODMyMmI2MTUiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnZXBveHknLCAnJywgZCl9IFwKLSAgICB4cHJlc2VudCBcCi0gICAgc3RhcnR1cC1ub3RpZmljYXRpb24gXAotIgotCi1QQUNLQUdFQ09ORklHW2Vwb3h5XSA9ICItLWVuYWJsZS1lcG94eSwtLWRpc2FibGUtZXBveHksbGliZXBveHkiCi1QQUNLQUdFQ09ORklHW3hwcmVzZW50XSA9ICItLWVuYWJsZS14cHJlc2VudCwtLWRpc2FibGUteHByZXNlbnQsbGlieHByZXNlbnQiCi1QQUNLQUdFQ09ORklHW3N0YXJ0dXAtbm90aWZpY2F0aW9uXSA9ICItLWVuYWJsZS1zdGFydHVwLW5vdGlmaWNhdGlvbiwtLWRpc2FibGUtc3RhcnR1cC1ub3RpZmljYXRpb24sc3RhcnR1cC1ub3RpZmljYXRpb24iCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICB0aGVtZWRpciA9IGQuZXhwYW5kKCcke2RhdGFkaXJ9L3RoZW1lcycpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgdGhlbWVkaXIsICdeKC4qKScsICd4ZndtNC10aGVtZS0lcycsICdYRldNNCB0aGVtZSAlcycsIGFsbG93X2RpcnM9VHJ1ZSkKLX0KLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXnhmd200LXRoZW1lLS4qIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJ4LXdpbmRvdy1tYW5hZ2VyIgotQUxURVJOQVRJVkVfVEFSR0VUW3gtd2luZG93LW1hbmFnZXJdID0gIiR7YmluZGlyfS94ZndtNCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3gtd2luZG93LW1hbmFnZXJdID0gIjMwIgotCi1SREVQRU5EU18ke1BOfSA9ICJ4ZndtNC10aGVtZS1kZWZhdWx0IgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS94ZmNlNC94ZndtNC9oZWxwZXItZGlhbG9nIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L3hmd200L2RlZmF1bHRzIFwKLSIKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZ3bTQveGZ3bTRfNC4xNC4xLmJiIGIvbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS14ZmNlL3JlY2lwZXMteGZjZS94ZndtNC94ZndtNF80LjE0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjE3ZTE0ZgotLS0gL2Rldi9udWxsCisrKyBiL21ldGEtb3BlbmVtYmVkZGVkL21ldGEteGZjZS9yZWNpcGVzLXhmY2UveGZ3bTQveGZ3bTRfNC4xNC4xLmJiCkBAIC0wLDAgKzEsMzkgQEAKK0RFU0NSSVBUSU9OID0gIlhmY2U0IFdpbmRvdyBNYW5hZ2VyIgorU0VDVElPTiA9ICJ4MTEvd20iCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDc5MTcyOGEwNzNiYzAwOWI0ZmZhZjAwYjc1OTk4NTUiCitERVBFTkRTID0gInZpcnR1YWwvbGlieDExIGxpYnhmY2U0dWkgbGlid25jazMgbGlieGluZXJhbWEgZXhvLW5hdGl2ZSIKKworaW5oZXJpdCB4ZmNlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtUmV2ZXJ0LWNvbXBvc2l0b3ItUmV2ZXJ0LXRvLUdMWC1hcy1kZWZhdWx0LXZibGFuay1tZS5wYXRjaCIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMjBiZDIyYmRiZTFiMTdmNzZhMTM5ZmQ3NGUwNzJhOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxMDA3ODFhMTgwNzA3NjJlOGYzNGMxZDQ1MGU3Njc1ODY1NzY3NTNkNTY3Zjc2YThjMzI4MTgyODRmNTExNDI4IgorCitQQUNLQUdFQ09ORklHID89ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ2Vwb3h5JywgJycsIGQpfSBcCisgICAgeHByZXNlbnQgXAorICAgIHN0YXJ0dXAtbm90aWZpY2F0aW9uIFwKKyIKKworUEFDS0FHRUNPTkZJR1tlcG94eV0gPSAiLS1lbmFibGUtZXBveHksLS1kaXNhYmxlLWVwb3h5LGxpYmVwb3h5IgorUEFDS0FHRUNPTkZJR1t4cHJlc2VudF0gPSAiLS1lbmFibGUteHByZXNlbnQsLS1kaXNhYmxlLXhwcmVzZW50LGxpYnhwcmVzZW50IgorUEFDS0FHRUNPTkZJR1tzdGFydHVwLW5vdGlmaWNhdGlvbl0gPSAiLS1lbmFibGUtc3RhcnR1cC1ub3RpZmljYXRpb24sLS1kaXNhYmxlLXN0YXJ0dXAtbm90aWZpY2F0aW9uLHN0YXJ0dXAtbm90aWZpY2F0aW9uIgorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgdGhlbWVkaXIgPSBkLmV4cGFuZCgnJHtkYXRhZGlyfS90aGVtZXMnKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIHRoZW1lZGlyLCAnXiguKiknLCAneGZ3bTQtdGhlbWUtJXMnLCAnWEZXTTQgdGhlbWUgJXMnLCBhbGxvd19kaXJzPVRydWUpCit9CisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl54ZndtNC10aGVtZS0uKiIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAieC13aW5kb3ctbWFuYWdlciIKK0FMVEVSTkFUSVZFX1RBUkdFVFt4LXdpbmRvdy1tYW5hZ2VyXSA9ICIke2JpbmRpcn0veGZ3bTQiCitBTFRFUk5BVElWRV9QUklPUklUWVt4LXdpbmRvdy1tYW5hZ2VyXSA9ICIzMCIKKworUkRFUEVORFNfJHtQTn0gPSAieGZ3bTQtdGhlbWUtZGVmYXVsdCIKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0veGZjZTQveGZ3bTQvaGVscGVyLWRpYWxvZyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS94ZndtNC9kZWZhdWx0cyBcCisiCmRpZmYgLS1naXQgYS9wb2t5Ly5naXRpZ25vcmUgYi9wb2t5Ly5naXRpZ25vcmUKaW5kZXggYWQxY2I4My4uNmRkZTU0MCAxMDA2NDQKLS0tIGEvcG9reS8uZ2l0aWdub3JlCisrKyBiL3Bva3kvLmdpdGlnbm9yZQpAQCAtOCw2ICs4LDcgQEAKIHNjcmlwdHMvb2UtZ2l0LXByb3h5LXNvY2tzCiBzb3VyY2VzLwogbWV0YS0qLworYnVpbGR0b29scy8KICFtZXRhLXNrZWxldG9uCiAhbWV0YS1zZWxmdGVzdAogaG9iLWltYWdlLSouYmIKZGlmZiAtLWdpdCBhL3Bva3kvTUVNT1JJQU0gYi9wb2t5L01FTU9SSUFNCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBiM2NlNDYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L01FTU9SSUFNCkBAIC0wLDAgKzEsNSBAQAorU29tZSBwcm9qZWN0IGNvbnRyaWJ1dG9ycyB3aG8gYXJlIHNhZGx5IG5vIGxvbmdlciB3aXRoIHVzOgorCitHcmVnIEdpbGJlcnQgKHRyZWtlKSAtIEFoZWFkIG9mIGhpcyB0aW1lIHdpdGggbGljZW5zaW5nCitUaG9tYXMgV29vZCAodGhvcykgLSBDcmVhdG9yIG9mIHRoZSBvcmlnaW5hbCBzYXRvCitTY290dCBSaWZlbmJhcmsgKHNjb3R0cmlmKSAtIE91ciBsb25nIHN0YW5kaW5nIHRlY2h3cml0ZXIgd2hvc2Ugd29yZHMgbGl2ZSBvbgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlIGIvcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlCmluZGV4IDY2ZDA4ZjguLjZjNzM3MTAgMTAwNzU1Ci0tLSBhL3Bva3kvYml0YmFrZS9iaW4vYml0YmFrZQorKysgYi9wb2t5L2JpdGJha2UvYmluL2JpdGJha2UKQEAgLTI2LDcgKzI2LDcgQEAKIGlmIHN5cy5nZXRmaWxlc3lzdGVtZW5jb2RpbmcoKSAhPSAidXRmLTgiOgogICAgIHN5cy5leGl0KCJQbGVhc2UgdXNlIGEgbG9jYWxlIHNldHRpbmcgd2hpY2ggc3VwcG9ydHMgVVRGLTggKHN1Y2ggYXMgTEFORz1lbl9VUy5VVEYtOCkuXG5QeXRob24gY2FuJ3QgY2hhbmdlIHRoZSBmaWxlc3lzdGVtIGxvY2FsZSBhZnRlciBsb2FkaW5nIHNvIHdlIG5lZWQgYSBVVEYtOCB3aGVuIFB5dGhvbiBzdGFydHMgb3IgdGhpbmdzIHdvbid0IHdvcmsuIikKIAotX192ZXJzaW9uX18gPSAiMS40NC4wIgorX192ZXJzaW9uX18gPSAiMS40Ni4wIgogCiBpZiBfX25hbWVfXyA9PSAiX19tYWluX18iOgogICAgIGlmIF9fdmVyc2lvbl9fICE9IGJiLl9fdmVyc2lvbl9fOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLWxheWVycyBiL3Bva3kvYml0YmFrZS9iaW4vYml0YmFrZS1sYXllcnMKaW5kZXggYTg4NGRjMS4uMTQ5ZjFiMSAxMDA3NTUKLS0tIGEvcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLWxheWVycworKysgYi9wb2t5L2JpdGJha2UvYmluL2JpdGJha2UtbGF5ZXJzCkBAIC01Miw3ICs1Miw5IEBACiAKICAgICAjIE5lZWQgdG8gcmUtcnVuIGxvZ2dlcl9jcmVhdGUgd2l0aCBjb2xvciBhcmd1bWVudAogICAgICMgKHdpbGwgYmUgdGhlIHNhbWUgbG9nZ2VyIHNpbmNlIGl0IGhhcyB0aGUgc2FtZSBuYW1lKQotICAgIGJiLm1zZy5sb2dnZXJfY3JlYXRlKCdiaXRiYWtlLWxheWVycycsIG91dHB1dD1zeXMuc3Rkb3V0LCBjb2xvcj1nbG9iYWxfYXJncy5jb2xvcikKKyAgICBiYi5tc2cubG9nZ2VyX2NyZWF0ZSgnYml0YmFrZS1sYXllcnMnLCBvdXRwdXQ9c3lzLnN0ZG91dCwKKyAgICAgICAgICAgICAgICAgICAgICAgICBjb2xvcj1nbG9iYWxfYXJncy5jb2xvciwKKyAgICAgICAgICAgICAgICAgICAgICAgICBsZXZlbD1sb2dnZXIuZ2V0RWZmZWN0aXZlTGV2ZWwoKSkKIAogICAgIHBsdWdpbnMgPSBbXQogICAgIHRpbmZvaWwgPSBiYi50aW5mb2lsLlRpbmZvaWwodHJhY2tpbmc9VHJ1ZSkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9iaW4vYml0YmFrZS13b3JrZXIgYi9wb2t5L2JpdGJha2UvYmluL2JpdGJha2Utd29ya2VyCmluZGV4IDFlNjQxZTguLjk3Y2MwZmQgMTAwNzU1Ci0tLSBhL3Bva3kvYml0YmFrZS9iaW4vYml0YmFrZS13b3JrZXIKKysrIGIvcG9reS9iaXRiYWtlL2Jpbi9iaXRiYWtlLXdvcmtlcgpAQCAtNjUsNyArNjUsNiBAQAogICAgIGZvcm1hdF9zdHIgPSAiJShsZXZlbG5hbWUpczogJShtZXNzYWdlKXMiCiAgICAgY29ubG9nZm9ybWF0ID0gYmIubXNnLkJCTG9nRm9ybWF0dGVyKGZvcm1hdF9zdHIpCiAgICAgY29uc29sZWxvZyA9IGxvZ2dpbmcuRmlsZUhhbmRsZXIobG9nZmlsZW5hbWUpCi0gICAgYmIubXNnLmFkZERlZmF1bHRsb2dGaWx0ZXIoY29uc29sZWxvZykKICAgICBjb25zb2xlbG9nLnNldEZvcm1hdHRlcihjb25sb2dmb3JtYXQpCiAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoY29uc29sZWxvZykKIApAQCAtNDE0LDcgKzQxMyw3IEBACiAKICAgICBkZWYgaGFuZGxlX3dvcmtlcmRhdGEoc2VsZiwgZGF0YSk6CiAgICAgICAgIHNlbGYud29ya2VyZGF0YSA9IHBpY2tsZS5sb2FkcyhkYXRhKQotICAgICAgICBiYi5tc2cubG9nZ2VyRGVmYXVsdERlYnVnTGV2ZWwgPSBzZWxmLndvcmtlcmRhdGFbImxvZ2RlZmF1bHRkZWJ1ZyJdCisgICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0TG9nTGV2ZWwgPSBzZWxmLndvcmtlcmRhdGFbImxvZ2RlZmF1bHRsZXZlbCJdCiAgICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0VmVyYm9zZSA9IHNlbGYud29ya2VyZGF0YVsibG9nZGVmYXVsdHZlcmJvc2UiXQogICAgICAgICBiYi5tc2cubG9nZ2VyVmVyYm9zZUxvZ3MgPSBzZWxmLndvcmtlcmRhdGFbImxvZ2RlZmF1bHR2ZXJib3NlbG9ncyJdCiAgICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0RG9tYWlucyA9IHNlbGYud29ya2VyZGF0YVsibG9nZGVmYXVsdGRvbWFpbiJdCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvYmluL3RvYXN0ZXIgYi9wb2t5L2JpdGJha2UvYmluL3RvYXN0ZXIKaW5kZXggYzM0NzJkZi4uNmI5MGVlMSAxMDA3NTUKLS0tIGEvcG9reS9iaXRiYWtlL2Jpbi90b2FzdGVyCisrKyBiL3Bva3kvYml0YmFrZS9iaW4vdG9hc3RlcgpAQCAtOCwxMiArOCwxMyBAQAogIwogCiBIRUxQPSIKLVVzYWdlOiBzb3VyY2UgdG9hc3RlciBzdGFydHxzdG9wIFt3ZWJwb3J0PTxhZGRyZXNzOnBvcnQ+XSBbbm93ZWJdIFtub2J1aWxkXSBbdG9hc3RlcmRpcl0KK1VzYWdlIDE6IHNvdXJjZSB0b2FzdGVyIHN0YXJ0fHN0b3AgW3dlYnBvcnQ9PGFkZHJlc3M6cG9ydD5dIFtub3dlYl0gW25vYnVpbGRdIFt0b2FzdGVyZGlyXQogICAgIE9wdGlvbmFsIGFyZ3VtZW50czoKICAgICAgICAgW25vYnVpbGRdIFNldHVwIHRoZSBlbnZpcm9ubWVudCBmb3IgY2FwdHVyaW5nIGJ1aWxkcyB3aXRoIHRvYXN0ZXIgYnV0IGRpc2FibGUgbWFuYWdlZCBidWlsZHMKICAgICAgICAgW25vd2ViXSBTZXR1cCB0aGUgZW52aXJvbm1lbnQgZm9yIGNhcHR1cmluZyBidWlsZHMgd2l0aCB0b2FzdGVyIGJ1dCBkb24ndCBzdGFydCB0aGUgd2ViIHNlcnZlcgogICAgICAgICBbd2VicG9ydF0gU2V0IHRoZSBkZXZlbG9wbWVudCBzZXJ2ZXIgKGRlZmF1bHQ6IGxvY2FsaG9zdDo4MDAwKQogICAgICAgICBbdG9hc3RlcmRpcl0gU2V0IGFic29sdXRlIHBhdGggdG8gYmUgdXNlZCBhcyBUT0FTVEVSX0RJUiAoZGVmYXVsdDogQlVJTERESVIvLi4vKQorVXNhZ2UgMjogc291cmNlIHRvYXN0ZXIgbWFuYWdlIFtjcmVhdGVzdXBlcnVzZXJ8bHN1cGRhdGVzfG1pZ3JhdGV8bWFrZW1pZ3JhdGlvbnN8Y2hlY2tzZXR0aW5nc3xjb2xsZWN0c3RhdGljfC4uLl0KICIKIAogY3VzdG9tX2V4dGVudGlvbigpCkBAIC0yMDgsMTMgKzIwOSwyMSBAQAogICAgIHRvYXN0ZXJkaXI9KikKICAgICAgICAgICAgIFRPQVNURVJESVI9IiR7cGFyYW0jKj19IgogICAgIDs7CisgICAgbWFuYWdlICkKKyAgICAgICAgICAgIENNRD0kcGFyYW0KKyAgICAgICAgICAgIG1hbmFnZV9jbWQ9IiIKKyAgICA7OwogICAgIC0taGVscCkKICAgICAgICAgICAgIGVjaG8gIiRIRUxQIgogICAgICAgICAgICAgcmV0dXJuIDAKICAgICA7OwogICAgICopCi0gICAgICAgICAgICBlY2hvICIkSEVMUCIKLSAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAgICBpZiBbICJtYW5hZ2UiID09ICIkQ01EIiBdIDsgdGhlbgorICAgICAgICAgICAgICAgIG1hbmFnZV9jbWQ9IiRtYW5hZ2VfY21kICRwYXJhbSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICBlY2hvICIkSEVMUCIKKyAgICAgICAgICAgICAgICBleGl0IDEKKyAgICAgICAgICAgIGZpCiAgICAgOzsKIAogICAgIGVzYWMKQEAgLTMwNiw2ICszMTUsMTAgQEAKICAgICAgICAgc3RvcF9zeXN0ZW0KICAgICAgICAgZWNobyAiU3VjY2Vzc2Z1bCAke0NNRH0uIgogICAgIDs7CisgICAgbWFuYWdlICkKKyAgICAgICAgY2QgJEJCQkFTRURJUi9saWIvdG9hc3RlcgorICAgICAgICAkTUFOQUdFICRtYW5hZ2VfY21kCisgICAgOzsKIGVzYWMKIGN1c3RvbV9leHRlbnRpb24gdG9hc3Rlcl9wb3N0cGVuZCAkQ01EICRBRERSX1BPUlQKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2NvbnRyaWIvYXV0b2J1aWxkZXJsb2cuanNvbiBiL3Bva3kvYml0YmFrZS9jb250cmliL2F1dG9idWlsZGVybG9nLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTkzYTY3NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9jb250cmliL2F1dG9idWlsZGVybG9nLmpzb24KQEAgLTAsMCArMSwxMyBAQAoreworICAgICJ2ZXJzaW9uIjogMSwKKyAgICAibG9nZ2VycyI6IHsKKyAgICAgICAgIkJpdEJha2UuU2lnR2VuLkhhc2hFcXVpdiI6IHsKKyAgICAgICAgICAgICJsZXZlbCI6ICJWRVJCT1NFIiwKKyAgICAgICAgICAgICJoYW5kbGVycyI6IFsiQml0QmFrZS52ZXJiY29uc29sZSJdCisgICAgICAgIH0sCisgICAgICAgICJCaXRCYWtlLlJ1blF1ZXVlLkhhc2hFcXVpdiI6IHsKKyAgICAgICAgICAgICJsZXZlbCI6ICJWRVJCT1NFIiwKKyAgICAgICAgICAgICJoYW5kbGVycyI6IFsiQml0QmFrZS52ZXJiY29uc29sZSJdCisgICAgICAgIH0KKyAgICB9Cit9CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1leGVjdXRpb24ueG1sIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZXhlY3V0aW9uLnhtbAppbmRleCA0NmRhZmVlLi42YzUyMzRlIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1leGVjdXRpb24ueG1sCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWV4ZWN1dGlvbi54bWwKQEAgLTExMyw3ICsxMTMsNyBAQAogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBQcmlvciB0byBwYXJzaW5nIGNvbmZpZ3VyYXRpb24gZmlsZXMsIEJpdGJha2UgbG9va3MKKyAgICAgICAgICAgIFByaW9yIHRvIHBhcnNpbmcgY29uZmlndXJhdGlvbiBmaWxlcywgQml0QmFrZSBsb29rcwogICAgICAgICAgICAgYXQgY2VydGFpbiB2YXJpYWJsZXMsIGluY2x1ZGluZzoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtMzM5LDcgKzMzOSw3IEBACiAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJfSEFTSENPTkZJR19XSElURUxJU1QnPjxmaWxlbmFtZT5CQl9IQVNIQ09ORklHX1dISVRFTElTVDwvZmlsZW5hbWU+PC9saW5rPikKICAgICAgICAgICAgIGFuZCB0aGVuIGNoZWNraW5nIGlmIHRoZSBjaGVja3N1bSBtYXRjaGVzLgogICAgICAgICAgICAgSWYgdGhhdCBjaGVja3N1bSBtYXRjaGVzIHdoYXQgaXMgaW4gdGhlIGNhY2hlIGFuZCB0aGUgcmVjaXBlCi0gICAgICAgICAgICBhbmQgY2xhc3MgZmlsZXMgaGF2ZSBub3QgY2hhbmdlZCwgQml0YmFrZSBpcyBhYmxlIHRvIHVzZQorICAgICAgICAgICAgYW5kIGNsYXNzIGZpbGVzIGhhdmUgbm90IGNoYW5nZWQsIEJpdEJha2UgaXMgYWJsZSB0byB1c2UKICAgICAgICAgICAgIHRoZSBjYWNoZS4KICAgICAgICAgICAgIEJpdEJha2UgdGhlbiByZWxvYWRzIHRoZSBjYWNoZWQgaW5mb3JtYXRpb24gYWJvdXQgdGhlIHJlY2lwZQogICAgICAgICAgICAgaW5zdGVhZCBvZiByZXBhcnNpbmcgaXQgZnJvbSBzY3JhdGNoLgpAQCAtNDI5LDcgKzQyOSw3IEBACiAgICAgICAgICAgICBUaGUgZGVmYXVsdAogICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLWJiLVBSRUZFUlJFRF9QUk9WSURFUic+PGZpbGVuYW1lPlBSRUZFUlJFRF9QUk9WSURFUjwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgaXMgdGhlIHByb3ZpZGVyIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgdGFyZ2V0LgotICAgICAgICAgICAgQml0YmFrZSBpdGVyYXRlcyB0aHJvdWdoIGVhY2ggdGFyZ2V0IGl0IG5lZWRzIHRvIGJ1aWxkIGFuZAorICAgICAgICAgICAgQml0QmFrZSBpdGVyYXRlcyB0aHJvdWdoIGVhY2ggdGFyZ2V0IGl0IG5lZWRzIHRvIGJ1aWxkIGFuZAogICAgICAgICAgICAgcmVzb2x2ZXMgdGhlbSBhbmQgdGhlaXIgZGVwZW5kZW5jaWVzIHVzaW5nIHRoaXMgcHJvY2Vzcy4KICAgICAgICAgPC9wYXJhPgogCkBAIC04MjEsNyArODIxLDcgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEl0IGlzIHdvcnRoIG5vdGluZyB0aGF0IEJpdEJha2UncyAiLVMiIG9wdGlvbiBsZXRzIHlvdQotICAgICAgICAgICAgZGVidWcgQml0YmFrZSdzIHByb2Nlc3Npbmcgb2Ygc2lnbmF0dXJlcy4KKyAgICAgICAgICAgIGRlYnVnIEJpdEJha2UncyBwcm9jZXNzaW5nIG9mIHNpZ25hdHVyZXMuCiAgICAgICAgICAgICBUaGUgb3B0aW9ucyBwYXNzZWQgdG8gLVMgYWxsb3cgZGlmZmVyZW50IGRlYnVnZ2luZyBtb2RlcwogICAgICAgICAgICAgdG8gYmUgdXNlZCwgZWl0aGVyIHVzaW5nIEJpdEJha2UncyBvd24gZGVidWcgZnVuY3Rpb25zCiAgICAgICAgICAgICBvciBwb3NzaWJseSB0aG9zZSBkZWZpbmVkIGluIHRoZSBtZXRhZGF0YS9zaWduYXR1cmUgaGFuZGxlcgpAQCAtOTI5LDQgKzkyOSwxMDEgQEAKICAgICAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0ibG9nZ2luZyI+CisgICAgICAgIDx0aXRsZT5Mb2dnaW5nPC90aXRsZT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiBhZGRpdGlvbiB0byB0aGUgc3RhbmRhcmQgY29tbWFuZCBsaW5lIG9wdGlvbiB0byBjb250cm9sIGhvdworICAgICAgICAgICAgdmVyYm9zZSBidWlsZHMgYXJlIHdoZW4gZXhlY3V0ZSwgYml0YmFrZSBhbHNvIHN1cHBvcnRzIHVzZXIgZGVmaW5lZAorICAgICAgICAgICAgY29uZmlndXJhdGlvbiBvZiB0aGUKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9sb2dnaW5nLmh0bWwnPlB5dGhvbiBsb2dnaW5nPC91bGluaz4KKyAgICAgICAgICAgIGZhY2lsaXRpZXMgdGhyb3VnaCB0aGUKKyAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9InZhci1iYi1CQl9MT0dDT05GSUciPjxmaWxlbmFtZT5CQl9MT0dDT05GSUc8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgIHZhcmlhYmxlLiBUaGlzIHZhcmlhYmxlIGRlZmluZXMgYSBqc29uIG9yIHlhbWwKKyAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5weXRob24ub3JnLzMvbGlicmFyeS9sb2dnaW5nLmNvbmZpZy5odG1sJz5sb2dnaW5nIGNvbmZpZ3VyYXRpb248L3VsaW5rPgorICAgICAgICAgICAgdGhhdCB3aWxsIGJlIGludGVsbGlnZW50bHkgbWVyZ2VkIGludG8gdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbi4KKyAgICAgICAgICAgIFRoZSBsb2dnaW5nIGNvbmZpZ3VyYXRpb24gaXMgbWVyZ2VkIHVzaW5nIHRoZSBmb2xsb3dpbmcgcnVsZXM6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHVzZXIgZGVmaW5lZCBjb25maWd1cmF0aW9uIHdpbGwgY29tcGxldGVseSByZXBsYWNlIHRoZSBkZWZhdWx0CisgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gaWYgdG9wIGxldmVsIGtleQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZV9tZXJnZTwvZmlsZW5hbWU+IGlzIHNldCB0byB0aGUgdmFsdWUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkZhbHNlPC9maWxlbmFtZT4uIEluIHRoaXMgY2FzZSwgYWxsIG90aGVyIHJ1bGVzCisgICAgICAgICAgICAgICAgICAgIGFyZSBpZ25vcmVkLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgVGhlIHVzZXIgY29uZmlndXJhdGlvbiBtdXN0IGhhdmUgYSB0b3AgbGV2ZWwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnZlcnNpb248L2ZpbGVuYW1lPiB3aGljaCBtdXN0IG1hdGNoIHRoZSB2YWx1ZSBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgZGVmYXVsdCBjb25maWd1cmF0aW9uLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQW55IGtleXMgZGVmaW5lZCBpbiB0aGUgPGZpbGVuYW1lPmhhbmRsZXJzPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5mb3JtYXR0ZXJzPC9maWxlbmFtZT4sIG9yIDxmaWxlbmFtZT5maWx0ZXJzPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgIHdpbGwgYmUgbWVyZ2VkIGludG8gdGhlIHNhbWUgc2VjdGlvbiBpbiB0aGUgZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uLCB3aXRoIHRoZSB1c2VyIHNwZWNpZmllZCBrZXlzIHRha2luZworICAgICAgICAgICAgICAgICAgICByZXBsYWNpbmcgYSBkZWZhdWx0IG9uZSBpZiB0aGVyZSBpcyBhIGNvbmZsaWN0LiBJbgorICAgICAgICAgICAgICAgICAgICBwcmFjdGljZSwgdGhpcyBtZWFucyB0aGF0IGlmIGJvdGggdGhlIGRlZmF1bHQgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgICAgICAgICBhbmQgdXNlciBjb25maWd1cmF0aW9uIHNwZWNpZnkgYSBoYW5kbGVyIG5hbWVkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5teWhhbmRsZXI8L2ZpbGVuYW1lPiwgdGhlIHVzZXIgZGVmaW5lZCBvbmUgd2lsbAorICAgICAgICAgICAgICAgICAgICByZXBsYWNlIHRoZSBkZWZhdWx0LiBUbyBwcmV2ZW50IHRoZSB1c2VyIGZyb20gaW5hZHZlcnRlbnRseQorICAgICAgICAgICAgICAgICAgICByZXBsYWNpbmcgYSBkZWZhdWx0IGhhbmRsZXIsIGZvcm1hdHRlciwgb3IgZmlsdGVyLCBhbGwgb2YKKyAgICAgICAgICAgICAgICAgICAgdGhlIGRlZmF1bHQgb25lcyBhcmUgbmFtZWQgd2l0aCBhIHByZWZpeCBvZgorICAgICAgICAgICAgICAgICAgICAiPGZpbGVuYW1lPkJpdEJha2UuPC9maWxlbmFtZT4iCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBJZiBhIGxvZ2dlciBpcyBkZWZpbmVkIGJ5IHRoZSB1c2VyIHdpdGggdGhlIGtleQorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZV9tZXJnZTwvZmlsZW5hbWU+IHNldCB0bworICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+RmFsc2U8L2ZpbGVuYW1lPiwgdGhhdCBsb2dnZXIgd2lsbCBiZSBjb21wbGV0ZWx5CisgICAgICAgICAgICAgICAgICAgIHJlcGxhY2VkIGJ5IHVzZXIgY29uZmlndXJhdGlvbi4gSW4gdGhpcyBjYXNlLCBubyBvdGhlcgorICAgICAgICAgICAgICAgICAgICBydWxlcyB3aWxsIGFwcGx5IHRvIHRoYXQgbG9nZ2VyLgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQWxsIHVzZXIgZGVmaW5lZCA8ZmlsZW5hbWU+ZmlsdGVyPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5oYW5kbGVyczwvZmlsZW5hbWU+IHByb3BlcnRpZXMgZm9yIGEgZ2l2ZW4gbG9nZ2VyCisgICAgICAgICAgICAgICAgICAgIHdpbGwgYmUgbWVyZ2VkIHdpdGggY29ycmVzcG9uZGluZyBwcm9wZXJ0aWVzIGZyb20gdGhlCisgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQgbG9nZ2VyLiBGb3IgZXhhbXBsZSwgaWYgdGhlIHVzZXIgY29uZmlndXJhdGlvbiBhZGRzCisgICAgICAgICAgICAgICAgICAgIGEgZmlsdGVyIGNhbGxlZCA8ZmlsZW5hbWU+bXlGaWx0ZXI8L2ZpbGVuYW1lPiB0byB0aGUKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPkJpdEJha2UuU2lnR2VuPC9maWxlbmFtZT4sIGFuZCB0aGUgZGVmYXVsdAorICAgICAgICAgICAgICAgICAgICBjb25maWd1cmF0aW9uIGFkZHMgYSBmaWx0ZXIgY2FsbGVkCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CaXRCYWtlLmRlZmF1bHRGaWx0ZXI8L2ZpbGVuYW1lPiwgYm90aCBmaWx0ZXJzCisgICAgICAgICAgICAgICAgICAgIHdpbGwgYmUgYXBwbGllZCB0byB0aGUgbG9nZ2VyCisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgQXMgYW4gZXhhbXBsZSwgY29uc2lkZXIgdGhlIGZvbGxvd2luZyB1c2VyIGxvZ2dpbmcgY29uZmlndXJhdGlvbgorICAgICAgICAgICAgZmlsZSB3aGljaCBsb2dzIGFsbCBIYXNoIEVxdWl2YWxlbmNlIHJlbGF0ZWQgbWVzc2FnZXMgb2YgVkVSQk9TRSBvcgorICAgICAgICAgICAgaGlnaGVyIHRvIGEgZmlsZSBjYWxsZWQgPGZpbGVuYW1lPmhhc2hlcXVpdi5sb2c8L2ZpbGVuYW1lPgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIHsKKyAgICAgICAgInZlcnNpb24iOiAxLAorICAgICAgICAiaGFuZGxlcnMiOiB7CisgICAgICAgICAgICAiYXV0b2J1aWxkZXJsb2ciOiB7CisgICAgICAgICAgICAgICAgImNsYXNzIjogImxvZ2dpbmcuRmlsZUhhbmRsZXIiLAorICAgICAgICAgICAgICAgICJmb3JtYXR0ZXIiOiAibG9nZmlsZUZvcm1hdHRlciIsCisgICAgICAgICAgICAgICAgImxldmVsIjogIkRFQlVHIiwKKyAgICAgICAgICAgICAgICAiZmlsZW5hbWUiOiAiaGFzaGVxdWl2LmxvZyIsCisgICAgICAgICAgICAgICAgIm1vZGUiOiAidyIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZvcm1hdHRlcnMiOiB7CisgICAgICAgICAgICAgICAgImxvZ2ZpbGVGb3JtYXR0ZXIiOiB7CisgICAgICAgICAgICAgICAgICAgICJmb3JtYXQiOiAiJShuYW1lKXM6ICUobGV2ZWxuYW1lKXM6ICUobWVzc2FnZSlzIgorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImxvZ2dlcnMiOiB7CisgICAgICAgICAgICAiQml0QmFrZS5TaWdHZW4uSGFzaEVxdWl2IjogeworICAgICAgICAgICAgICAgICJsZXZlbCI6ICJWRVJCT1NFIiwKKyAgICAgICAgICAgICAgICAiaGFuZGxlcnMiOiBbImF1dG9idWlsZGVybG9nIl0KKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiQml0QmFrZS5SdW5RdWV1ZS5IYXNoRXF1aXYiOiB7CisgICAgICAgICAgICAgICAgImxldmVsIjogIlZFUkJPU0UiLAorICAgICAgICAgICAgICAgICJoYW5kbGVycyI6IFsiYXV0b2J1aWxkZXJsb2ciXQorICAgICAgICAgICAgfQorICAgICAgICB9CisgICAgfQorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgogPC9jaGFwdGVyPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZmV0Y2hpbmcueG1sIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtZmV0Y2hpbmcueG1sCmluZGV4IDY4NDA0MDguLmQxYmZjMjMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWZldGNoaW5nLnhtbAorKysgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1mZXRjaGluZy54bWwKQEAgLTEzOSw3ICsxMzksNyBAQAogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBTaW5jZSBuZXR3b3JrIGFjY2Vzc2VzIGFyZSBzbG93LCBCaXRiYWtlIG1haW50YWlucyBhCisgICAgICAgICAgICBTaW5jZSBuZXR3b3JrIGFjY2Vzc2VzIGFyZSBzbG93LCBCaXRCYWtlIG1haW50YWlucyBhCiAgICAgICAgICAgICBjYWNoZSBvZiBmaWxlcyBkb3dubG9hZGVkIGZyb20gdGhlIG5ldHdvcmsuCiAgICAgICAgICAgICBBbnkgc291cmNlIGZpbGVzIHRoYXQgYXJlIG5vdCBsb2NhbCAoaS5lLgogICAgICAgICAgICAgZG93bmxvYWRlZCBmcm9tIHRoZSBJbnRlcm5ldCkgYXJlIHBsYWNlZCBpbnRvIHRoZSBkb3dubG9hZApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaGVsbG8ueG1sIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaGVsbG8ueG1sCmluZGV4IDM5MDY2ZTQuLjExZWIzNmEgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWhlbGxvLnhtbAorKysgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1oZWxsby54bWwKQEAgLTE2Niw3ICsxNjYsNyBAQAogICAgICAgICAgICAgICAgIEhhdmluZyBhIHByb2plY3QgZGlyZWN0b3J5IGlzIGEgZ29vZCB3YXkgdG8gaXNvbGF0ZSB5b3VyCiAgICAgICAgICAgICAgICAgcHJvamVjdC4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdGJha2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdEJha2U6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBBdCB0aGlzIHBvaW50LCB5b3UgaGF2ZSBub3RoaW5nIGJ1dCBhIHByb2plY3QgZGlyZWN0b3J5LgogICAgICAgICAgICAgICAgIFJ1biB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPiBjb21tYW5kIGFuZCBzZWUgd2hhdAogICAgICAgICAgICAgICAgIGl0IGRvZXM6CkBAIC0xOTcsNyArMTk3LDcgQEAKICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItYmItQkJQQVRIJz48ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT48L2xpbms+CiAgICAgICAgICAgICAgICAgdmFyaWFibGUgaXMgd2hhdCB0ZWxscyBCaXRCYWtlIHdoZXJlIHRvIGxvb2sgZm9yIHRob3NlIGZpbGVzLgogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5CQlBBVEg8L2ZpbGVuYW1lPiBpcyBub3Qgc2V0IGFuZCB5b3UgbmVlZCB0byBzZXQgaXQuCi0gICAgICAgICAgICAgICAgV2l0aG91dCA8ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT4sIEJpdGJha2UgY2Fubm90CisgICAgICAgICAgICAgICAgV2l0aG91dCA8ZmlsZW5hbWU+QkJQQVRIPC9maWxlbmFtZT4sIEJpdEJha2UgY2Fubm90CiAgICAgICAgICAgICAgICAgZmluZCBhbnkgY29uZmlndXJhdGlvbiBmaWxlcyAoPGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4pCiAgICAgICAgICAgICAgICAgb3IgcmVjaXBlIGZpbGVzICg8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4pIGF0IGFsbC4KICAgICAgICAgICAgICAgICBCaXRCYWtlIGFsc28gY2Fubm90IGZpbmQgdGhlIDxmaWxlbmFtZT5iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPgpAQCAtMjI1LDcgKzIyNSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGFzIHRoZSBzaGVsbCB3b3VsZC4KICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJ1biBCaXRiYWtlOjwvZW1waGFzaXM+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJ1biBCaXRCYWtlOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgTm93IHRoYXQgeW91IGhhdmUgPGZpbGVuYW1lPkJCUEFUSDwvZmlsZW5hbWU+IGRlZmluZWQsIHJ1bgogICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgYWdhaW46CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgpAQCAtMzEzLDcgKzMxMyw3IEBACiAgICAgICAgICAgICAgICAgZXhhbXBsZSwgY2xpY2sgb24gdGhlIGxpbmtzIHRvIHRha2UgeW91IHRvIHRoZSBkZWZpbml0aW9ucyBpbgogICAgICAgICAgICAgICAgIHRoZSBnbG9zc2FyeS4KICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdGJha2U6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdEJha2U6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBBZnRlciBtYWtpbmcgc3VyZSB0aGF0IHRoZSA8ZmlsZW5hbWU+Y29uZi9iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIGZpbGUgZXhpc3RzLCB5b3UgY2FuIHJ1biB0aGUgPGZpbGVuYW1lPmJpdGJha2U8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIGNvbW1hbmQgYWdhaW46CkBAIC0zNjQsNyArMzY0LDcgQEAKICAgICAgICAgICAgICAgICBtb3JlIGRlcGVuZGluZyBvbiB3aGljaCBidWlsZCBlbnZpcm9ubWVudHMgQml0QmFrZSBpcwogICAgICAgICAgICAgICAgIHN1cHBvcnRpbmcuCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJ1biBCaXRiYWtlOjwvZW1waGFzaXM+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJ1biBCaXRCYWtlOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgQWZ0ZXIgbWFraW5nIHN1cmUgdGhhdCB0aGUgPGZpbGVuYW1lPmNsYXNzZXMvYmFzZS5iYmNsYXNzPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBmaWxlIGV4aXN0cywgeW91IGNhbiBydW4gdGhlIDxmaWxlbmFtZT5iaXRiYWtlPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBjb21tYW5kIGFnYWluOgpAQCAtNDM0LDcgKzQzNCw3IEBACiAgICAgICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhlc2UgdmFyaWFibGVzLCBmb2xsb3cgdGhlIGxpbmtzCiAgICAgICAgICAgICAgICAgdG8gdGhlIGdsb3NzYXJ5LgogICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5SdW4gQml0YmFrZSBXaXRoIGEgVGFyZ2V0OjwvZW1waGFzaXM+CisgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJ1biBCaXRCYWtlIFdpdGggYSBUYXJnZXQ6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICBOb3cgdGhhdCBhIEJpdEJha2UgdGFyZ2V0IGV4aXN0cywgcnVuIHRoZSBjb21tYW5kIGFuZCBwcm92aWRlCiAgICAgICAgICAgICAgICAgdGhhdCB0YXJnZXQ6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgpAQCAtNDY4LDcgKzQ2OCw3IEBACiAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gcHJvdmlkZSB5b3VyIG93biBpbmZvcm1hdGlvbiBmb3IKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW91PC9maWxlbmFtZT4gaW4gdGhlIGZpbGUuCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPlJ1biBCaXRiYWtlIFdpdGggYSBUYXJnZXQ6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+UnVuIEJpdEJha2UgV2l0aCBhIFRhcmdldDo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgIE5vdyB0aGF0IHlvdSBoYXZlIHN1cHBsaWVkIHRoZSA8ZmlsZW5hbWU+YmJsYXllcnMuY29uZjwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgZmlsZSwgcnVuIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQgYW5kIHByb3ZpZGUKICAgICAgICAgICAgICAgICB0aGUgdGFyZ2V0OgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ueG1sIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtaW50cm8ueG1sCmluZGV4IDhmMmE5NjAuLmY1NTI2YzAgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLWludHJvLnhtbAorKysgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1pbnRyby54bWwKQEAgLTEyNyw3ICsxMjcsNyBAQAogICAgICAgICAgICAgICAgICAgICAoZS5nLiBDeWd3aW4sIHRoZSBCU0RzLCBhbmQgc28gZm9ydGgpLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEJlIHNlbGYgY29udGFpbmVkLCByYXRoZXIgdGhhbiB0aWdodGx5CisgICAgICAgICAgICAgICAgICAgIEJlIHNlbGYtY29udGFpbmVkLCByYXRoZXIgdGhhbiB0aWdodGx5CiAgICAgICAgICAgICAgICAgICAgIGludGVncmF0ZWQgaW50byB0aGUgYnVpbGQgbWFjaGluZSdzIHJvb3QKICAgICAgICAgICAgICAgICAgICAgZmlsZXN5c3RlbS4KICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC0yMjEsNiArMjIxLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHRoZW08L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkhvdyB0byBjb25maWd1cmUgYW5kIGNvbXBpbGUgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2UgY29kZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+SG93IHRvIGFzc2VtYmxlIHRoZSBnZW5lcmF0ZWQgYXJ0aWZhY3RzIGludG8KKyAgICAgICAgICAgICAgICAgICAgICAgIG9uZSBvciBtb3JlIGluc3RhbGxhYmxlIHBhY2thZ2VzPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5XaGVyZSBvbiB0aGUgdGFyZ2V0IG1hY2hpbmUgdG8gaW5zdGFsbCB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIHBhY2thZ2Ugb3IgcGFja2FnZXMgY3JlYXRlZDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgpAQCAtMjI5LDcgKzIzMSw3IEBACiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBXaXRoaW4gdGhlIGNvbnRleHQgb2YgQml0QmFrZSwgb3IgYW55IHByb2plY3QgdXRpbGl6aW5nIEJpdEJha2UKICAgICAgICAgICAgICAgICBhcyBpdHMgYnVpbGQgc3lzdGVtLCBmaWxlcyB3aXRoIHRoZSA8ZmlsZW5hbWU+LmJiPC9maWxlbmFtZT4KLSAgICAgICAgICAgICAgICBleHRlbnNpb24gYXJlIHJlZmVycmVkIHRvIGFzIHJlY2lwZXMuCisgICAgICAgICAgICAgICAgZXh0ZW5zaW9uIGFyZSByZWZlcnJlZCB0byBhcyA8Zmlyc3R0ZXJtPnJlY2lwZXM8L2ZpcnN0dGVybT4uCiAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgIFRoZSB0ZXJtICJwYWNrYWdlIiBpcyBhbHNvIGNvbW1vbmx5IHVzZWQgdG8gZGVzY3JpYmUgcmVjaXBlcy4KICAgICAgICAgICAgICAgICAgICAgSG93ZXZlciwgc2luY2UgdGhlIHNhbWUgd29yZCBpcyB1c2VkIHRvIGRlc2NyaWJlIHBhY2thZ2VkCkBAIC0yNTIsOSArMjU0LDkgQEAKICAgICAgICAgICAgICAgICB2YXJpb3VzIGNvbmZpZ3VyYXRpb24gdmFyaWFibGVzIHRoYXQgZ292ZXJuIHRoZSBwcm9qZWN0J3MgYnVpbGQKICAgICAgICAgICAgICAgICBwcm9jZXNzLgogICAgICAgICAgICAgICAgIFRoZXNlIGZpbGVzIGZhbGwgaW50byBzZXZlcmFsIGFyZWFzIHRoYXQgZGVmaW5lCi0gICAgICAgICAgICAgICAgbWFjaGluZSBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGRpc3RyaWJ1dGlvbiBjb25maWd1cmF0aW9uCi0gICAgICAgICAgICAgICAgb3B0aW9ucywgY29tcGlsZXIgdHVuaW5nIG9wdGlvbnMsIGdlbmVyYWwgY29tbW9uCi0gICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiBvcHRpb25zLCBhbmQgdXNlciBjb25maWd1cmF0aW9uIG9wdGlvbnMuCisgICAgICAgICAgICAgICAgbWFjaGluZSBjb25maWd1cmF0aW9uLCBkaXN0cmlidXRpb24gY29uZmlndXJhdGlvbiwKKyAgICAgICAgICAgICAgICBwb3NzaWJsZSBjb21waWxlciB0dW5pbmcsIGdlbmVyYWwgY29tbW9uCisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiwgYW5kIHVzZXIgY29uZmlndXJhdGlvbi4KICAgICAgICAgICAgICAgICBUaGUgbWFpbiBjb25maWd1cmF0aW9uIGZpbGUgaXMgdGhlIHNhbXBsZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlLmNvbmY8L2ZpbGVuYW1lPiBmaWxlLCB3aGljaCBpcwogICAgICAgICAgICAgICAgIGxvY2F0ZWQgd2l0aGluIHRoZSBCaXRCYWtlIHNvdXJjZSB0cmVlCkBAIC0yOTIsNyArMjk0LDcgQEAKICAgICAgICAgICAgICAgICBMYXllcnMgYWxsb3cgeW91IHRvIGlzb2xhdGUgZGlmZmVyZW50IHR5cGVzIG9mCiAgICAgICAgICAgICAgICAgY3VzdG9taXphdGlvbnMgZnJvbSBlYWNoIG90aGVyLgogICAgICAgICAgICAgICAgIFdoaWxlIHlvdSBtaWdodCBmaW5kIGl0IHRlbXB0aW5nIHRvIGtlZXAgZXZlcnl0aGluZyBpbiBvbmUgbGF5ZXIKLSAgICAgICAgICAgICAgICB3aGVuIHdvcmtpbmcgb24gYSBzaW5nbGUgcHJvamVjdCwgdGhlIG1vcmUgbW9kdWxhciB5b3Ugb3JnYW5pemUKKyAgICAgICAgICAgICAgICB3aGVuIHdvcmtpbmcgb24gYSBzaW5nbGUgcHJvamVjdCwgdGhlIG1vcmUgbW9kdWxhcgogICAgICAgICAgICAgICAgIHlvdXIgbWV0YWRhdGEsIHRoZSBlYXNpZXIgaXQgaXMgdG8gY29wZSB3aXRoIGZ1dHVyZSBjaGFuZ2VzLgogICAgICAgICAgICAgPC9wYXJhPgogCkBAIC0zMDAsOCArMzAyLDggQEAKICAgICAgICAgICAgICAgICBUbyBpbGx1c3RyYXRlIGhvdyB5b3UgY2FuIHVzZSBsYXllcnMgdG8ga2VlcCB0aGluZ3MgbW9kdWxhciwKICAgICAgICAgICAgICAgICBjb25zaWRlciBjdXN0b21pemF0aW9ucyB5b3UgbWlnaHQgbWFrZSB0byBzdXBwb3J0IGEgc3BlY2lmaWMgdGFyZ2V0IG1hY2hpbmUuCiAgICAgICAgICAgICAgICAgVGhlc2UgdHlwZXMgb2YgY3VzdG9taXphdGlvbnMgdHlwaWNhbGx5IHJlc2lkZSBpbiBhIHNwZWNpYWwgbGF5ZXIsCi0gICAgICAgICAgICAgICAgcmF0aGVyIHRoYW4gYSBnZW5lcmFsIGxheWVyLCBjYWxsZWQgYSBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkKLSAgICAgICAgICAgICAgICBMYXllci4KKyAgICAgICAgICAgICAgICByYXRoZXIgdGhhbiBhIGdlbmVyYWwgbGF5ZXIsIGNhbGxlZCBhIDxmaXJzdHRlcm0+Qm9hcmQgU3VwcG9ydCBQYWNrYWdlPC9maXJzdHRlcm0+IChCU1ApCisgICAgICAgICAgICAgICAgbGF5ZXIuCiAgICAgICAgICAgICAgICAgRnVydGhlcm1vcmUsIHRoZSBtYWNoaW5lIGN1c3RvbWl6YXRpb25zIHNob3VsZCBiZSBpc29sYXRlZCBmcm9tCiAgICAgICAgICAgICAgICAgcmVjaXBlcyBhbmQgbWV0YWRhdGEgdGhhdCBzdXBwb3J0IGEgbmV3IEdVSSBlbnZpcm9ubWVudCwgZm9yCiAgICAgICAgICAgICAgICAgZXhhbXBsZS4KQEAgLTQ0OCw3ICs0NTAsNyBAQAogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+VXNpbmcgdGhlIEJpdEJha2UgdGhhdCBDb21lcyBXaXRoIFlvdXIKICAgICAgICAgICAgICAgICAgICAgQnVpbGQgQ2hlY2tvdXQ6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgQSBmaW5hbCBwb3NzaWJpbGl0eSBmb3IgZ2V0dGluZyBhIGNvcHkgb2YgQml0QmFrZSBpcyB0aGF0IGl0Ci0gICAgICAgICAgICAgICAgICAgIGFscmVhZHkgY29tZXMgd2l0aCB5b3VyIGNoZWNrb3V0IG9mIGEgbGFyZ2VyIEJpdGJha2UtYmFzZWQgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgYWxyZWFkeSBjb21lcyB3aXRoIHlvdXIgY2hlY2tvdXQgb2YgYSBsYXJnZXIgQml0QmFrZS1iYXNlZCBidWlsZAogICAgICAgICAgICAgICAgICAgICBzeXN0ZW0sIHN1Y2ggYXMgUG9reS4KICAgICAgICAgICAgICAgICAgICAgUmF0aGVyIHRoYW4gbWFudWFsbHkgY2hlY2tpbmcgb3V0IGluZGl2aWR1YWwgbGF5ZXJzIGFuZAogICAgICAgICAgICAgICAgICAgICBnbHVpbmcgdGhlbSB0b2dldGhlciB5b3Vyc2VsZiwgeW91IGNhbiBjaGVjawpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEueG1sIGIvcG9reS9iaXRiYWtlL2RvYy9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwtbWV0YWRhdGEueG1sCmluZGV4IDQyMTM2NGMuLjEwYjU4ODMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLW1ldGFkYXRhLnhtbAorKysgYi9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1tZXRhZGF0YS54bWwKQEAgLTUsNyArNSw3IEBACiAgICAgPHRpdGxlPlN5bnRheCBhbmQgT3BlcmF0b3JzPC90aXRsZT4KIAogICAgIDxwYXJhPgotICAgICAgICBCaXRiYWtlIGZpbGVzIGhhdmUgdGhlaXIgb3duIHN5bnRheC4KKyAgICAgICAgQml0QmFrZSBmaWxlcyBoYXZlIHRoZWlyIG93biBzeW50YXguCiAgICAgICAgIFRoZSBzeW50YXggaGFzIHNpbWlsYXJpdGllcyB0byBzZXZlcmFsCiAgICAgICAgIG90aGVyIGxhbmd1YWdlcyBidXQgYWxzbyBoYXMgc29tZSB1bmlxdWUgZmVhdHVyZXMuCiAgICAgICAgIFRoaXMgc2VjdGlvbiBkZXNjcmliZXMgdGhlIGF2YWlsYWJsZSBzeW50YXggYW5kIG9wZXJhdG9ycwpAQCAtMjk0LDE3ICsyOTQsMjAgQEAKICAgICAgICAgICAgICAgICByYXRoZXIgdGhhbiB3aGVuIHRoZSB2YXJpYWJsZSBpcyBhY3R1YWxseSB1c2VkOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgVCA9ICIxMjMiCi0gICAgIEEgOj0gIiR7Qn0gJHtBfSB0ZXN0ICR7VH0iCisgICAgIEEgOj0gInRlc3QgJHtUfSIKICAgICAgVCA9ICI0NTYiCi0gICAgIEIgPSAiJHtUfSBidmFsIgorICAgICBCIDo9ICIke1R9ICR7Q30iCiAgICAgIEMgPSAiY3ZhbCIKICAgICAgQyA6PSAiJHtDfWFwcGVuZCIKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlLCA8ZmlsZW5hbWU+QTwvZmlsZW5hbWU+IGNvbnRhaW5zCi0gICAgICAgICAgICAgICAgInRlc3QgMTIzIiBiZWNhdXNlIDxmaWxlbmFtZT4ke0J9PC9maWxlbmFtZT4gYW5kCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7QX08L2ZpbGVuYW1lPiBhdCB0aGUgdGltZSBvZiBwYXJzaW5nIGFyZSB1bmRlZmluZWQsCi0gICAgICAgICAgICAgICAgd2hpY2ggbGVhdmVzICJ0ZXN0IDEyMyIuCi0gICAgICAgICAgICAgICAgQW5kLCB0aGUgdmFyaWFibGUgPGZpbGVuYW1lPkM8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICJ0ZXN0IDEyMyIsIGV2ZW4gdGhvdWdoIHRoZSBmaW5hbCB2YWx1ZSBvZiA8ZmlsZW5hbWU+VDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgaXMgIjQ1NiIuCisgICAgICAgICAgICAgICAgVGhlIHZhcmlhYmxlIDxmaWxlbmFtZT5CPC9maWxlbmFtZT4gd2lsbCBlbmQgdXAgY29udGFpbmluZyAiNDU2IGN2YWxhcHBlbmQiLgorICAgICAgICAgICAgICAgIFRoaXMgaXMgYmVjYXVzZSByZWZlcmVuY2VzIHRvIHVuZGVmaW5lZCB2YXJpYWJsZXMgYXJlIHByZXNlcnZlZCBhcyBpcworICAgICAgICAgICAgICAgIGR1cmluZyAoaW1tZWRpYXRlKWV4cGFuc2lvbi4gVGhpcyBpcyBpbiBjb250cmFzdCB0byBHTlUgTWFrZSwgd2hlcmUgdW5kZWZpbmVkCisgICAgICAgICAgICAgICAgdmFyaWFibGVzIGV4cGFuZCB0byBub3RoaW5nLgorICAgICAgICAgICAgICAgIFRoZSB2YXJpYWJsZSA8ZmlsZW5hbWU+QzwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgY29udGFpbnMgImN2YWxhcHBlbmQiIHNpbmNlIDxmaWxlbmFtZT4ke0N9PC9maWxlbmFtZT4gaW1tZWRpYXRlbHkKICAgICAgICAgICAgICAgICBleHBhbmRzIHRvICJjdmFsIi4KICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTE0MTQsNyArMTQxNyw3IEBACiAgICAgICAgIDwvc2VjdGlvbj4KIAogICAgICAgICA8c2VjdGlvbiBpZD0nYml0YmFrZS1zdHlsZS1weXRob24tZnVuY3Rpb25zLXZlcnN1cy1weXRob24tZnVuY3Rpb25zJz4KLSAgICAgICAgICAgIDx0aXRsZT5CaXRiYWtlLVN0eWxlIFB5dGhvbiBGdW5jdGlvbnMgVmVyc3VzIFB5dGhvbiBGdW5jdGlvbnM8L3RpdGxlPgorICAgICAgICAgICAgPHRpdGxlPkJpdEJha2UtU3R5bGUgUHl0aG9uIEZ1bmN0aW9ucyBWZXJzdXMgUHl0aG9uIEZ1bmN0aW9uczwvdGl0bGU+CiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIEZvbGxvd2luZyBhcmUgc29tZSBpbXBvcnRhbnQgZGlmZmVyZW5jZXMgYmV0d2VlbgpAQCAtMTg2NCw3ICsxODY3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGFjY2Vzc2luZyB5b3VyIDxmaWxlbmFtZT4kSE9NRS8uY2NhY2hlPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY29tbWFuZCAid2hpdGVsaXN0cyIgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCi0gICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Q0NBQ0hFX0RJUjwvZmlsZW5hbWU+IGNhdXNpbmcgQml0QmFjayB0byBhbGxvdyB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Q0NBQ0hFX0RJUjwvZmlsZW5hbWU+IGNhdXNpbmcgQml0QmFrZSB0byBhbGxvdyB0aGF0CiAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpbnRvIHRoZSBkYXRhc3RvcmU6CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIGV4cG9ydCBCQl9FTlZfRVhUUkFXSElURT0iJEJCX0VOVl9FWFRSQVdISVRFIENDQUNIRV9ESVIiCkBAIC0xODk1LDcgKzE4OTgsNyBAQAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgU29tZXRpbWVzLCBpdCBpcyB1c2VmdWwgdG8gYmUgYWJsZSB0byBvYnRhaW4gaW5mb3JtYXRpb24KICAgICAgICAgICAgICAgICBmcm9tIHRoZSBvcmlnaW5hbCBleGVjdXRpb24gZW52aXJvbm1lbnQuCi0gICAgICAgICAgICAgICAgQml0YmFrZSBzYXZlcyBhIGNvcHkgb2YgdGhlIG9yaWdpbmFsIGVudmlyb25tZW50IGludG8KKyAgICAgICAgICAgICAgICBCaXRCYWtlIHNhdmVzIGEgY29weSBvZiB0aGUgb3JpZ2luYWwgZW52aXJvbm1lbnQgaW50bwogICAgICAgICAgICAgICAgIGEgc3BlY2lhbCB2YXJpYWJsZSBuYW1lZAogICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1iYi1CQl9PUklHRU5WJz48ZmlsZW5hbWU+QkJfT1JJR0VOVjwvZmlsZW5hbWU+PC9saW5rPi4KICAgICAgICAgICAgIDwvcGFyYT4KQEAgLTI2MTYsNyArMjYxOSw3IEBACiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBJdCBpcyBvZnRlbiBuZWNlc3NhcnkgdG8gYWNjZXNzIHZhcmlhYmxlcyBpbiB0aGUKICAgICAgICAgICAgICAgICBCaXRCYWtlIGRhdGFzdG9yZSB1c2luZyBQeXRob24gZnVuY3Rpb25zLgotICAgICAgICAgICAgICAgIFRoZSBCaXRiYWtlIGRhdGFzdG9yZSBoYXMgYW4gQVBJIHRoYXQgYWxsb3dzIHlvdSB0aGlzCisgICAgICAgICAgICAgICAgVGhlIEJpdEJha2UgZGF0YXN0b3JlIGhhcyBhbiBBUEkgdGhhdCBhbGxvd3MgeW91IHRoaXMKICAgICAgICAgICAgICAgICBhY2Nlc3MuCiAgICAgICAgICAgICAgICAgSGVyZSBpcyBhIGxpc3Qgb2YgYXZhaWxhYmxlIG9wZXJhdGlvbnM6CiAgICAgICAgICAgICA8L3BhcmE+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvZG9jL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC1yZWYtdmFyaWFibGVzLnhtbCBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLXJlZi12YXJpYWJsZXMueG1sCmluZGV4IGFjYTY3NDEuLmM0YmQxZjIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLXJlZi12YXJpYWJsZXMueG1sCisrKyBiL3Bva3kvYml0YmFrZS9kb2MvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLXJlZi12YXJpYWJsZXMueG1sCkBAIC01MzksNiArNTM5LDE3IEBACiAgICAgICAgICAgICA8L2dsb3NzZGVmPgogICAgICAgICA8L2dsb3NzZW50cnk+CiAKKyAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQl9MT0dDT05GSUcnPjxnbG9zc3Rlcm0+QkJfTE9HQ09ORklHPC9nbG9zc3Rlcm0+CisgICAgICAgICAgICA8Z2xvc3NkZWY+CisgICAgICAgICAgICAgICAgPHBhcmE+CisgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgbmFtZSBvZiBhIGNvbmZpZyBmaWxlIHRoYXQgY29udGFpbnMgdGhlIHVzZXIKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2luZyBjb25maWd1cmF0aW9uLiBTZWUKKyAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ibG9nZ2luZyI+TG9nZ2luZzwvbGluaz4gZm9yIGFkZGl0aW9uYWwKKyAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24KKyAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICA8L2dsb3NzZGVmPgorICAgICAgICA8L2dsb3NzZW50cnk+CisKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1iYi1CQl9MT0dGTVQnPjxnbG9zc3Rlcm0+QkJfTE9HRk1UPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC0xNzgwLDcgKzE3OTEsNyBAQAogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICBCaXRiYWtlIG5vcm1hbGx5IGlzc3VlcyBhIHdhcm5pbmcgd2hlbiBidWlsZGluZyB0d28KKyAgICAgICAgICAgICAgICAgICAgQml0QmFrZSBub3JtYWxseSBpc3N1ZXMgYSB3YXJuaW5nIHdoZW4gYnVpbGRpbmcgdHdvCiAgICAgICAgICAgICAgICAgICAgIGRpZmZlcmVudCByZWNpcGVzIHdoZXJlIGVhY2ggcHJvdmlkZXMgdGhlIHNhbWUgb3V0cHV0LgogICAgICAgICAgICAgICAgICAgICBUaGlzIHNjZW5hcmlvIGlzIHVzdWFsbHkgc29tZXRoaW5nIHRoZSB1c2VyIGRvZXMgbm90CiAgICAgICAgICAgICAgICAgICAgIHdhbnQuCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL0NPVy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvQ09XLnB5CmluZGV4IGQyNmU5ODEuLmJjMjBjZTMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvQ09XLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvQ09XLnB5CkBAIC0xMCw3ICsxMCw2IEBACiAKIAogaW1wb3J0IGNvcHkKLWltcG9ydCB0eXBlcwogSW1tdXRhYmxlVHlwZXMgPSAoCiAgICAgYm9vbCwKICAgICBjb21wbGV4LApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9fX2luaXRfXy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvX19pbml0X18ucHkKaW5kZXggYzE0NDMxMS4uYjk2NDY2ZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9fX2luaXRfXy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL19faW5pdF9fLnB5CkBAIC05LDExICs5LDExIEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotX192ZXJzaW9uX18gPSAiMS40NC4wIgorX192ZXJzaW9uX18gPSAiMS40Ni4wIgogCiBpbXBvcnQgc3lzCi1pZiBzeXMudmVyc2lvbl9pbmZvIDwgKDMsIDQsIDApOgotICAgIHJhaXNlIFJ1bnRpbWVFcnJvcigiU29ycnksIHB5dGhvbiAzLjQuMCBvciBsYXRlciBpcyByZXF1aXJlZCBmb3IgdGhpcyB2ZXJzaW9uIG9mIGJpdGJha2UiKQoraWYgc3lzLnZlcnNpb25faW5mbyA8ICgzLCA1LCAwKToKKyAgICByYWlzZSBSdW50aW1lRXJyb3IoIlNvcnJ5LCBweXRob24gMy41LjAgb3IgbGF0ZXIgaXMgcmVxdWlyZWQgZm9yIHRoaXMgdmVyc2lvbiBvZiBiaXRiYWtlIikKIAogCiBjbGFzcyBCQkhhbmRsZWRFeGNlcHRpb24oRXhjZXB0aW9uKToKQEAgLTQzLDcgKzQzLDEzIEBACiAgICAgICAgIExvZ2dlci5fX2luaXRfXyhzZWxmLCBuYW1lKQogCiAgICAgZGVmIGJiZGVidWcoc2VsZiwgbGV2ZWwsIG1zZywgKmFyZ3MsICoqa3dhcmdzKToKLSAgICAgICAgcmV0dXJuIHNlbGYubG9nKGxvZ2dpbmcuREVCVUcgLSBsZXZlbCArIDEsIG1zZywgKmFyZ3MsICoqa3dhcmdzKQorICAgICAgICBsb2dsZXZlbCA9IGxvZ2dpbmcuREVCVUcgLSBsZXZlbCArIDEKKyAgICAgICAgaWYgbm90IGJiLmV2ZW50Lndvcmtlcl9waWQ6CisgICAgICAgICAgICBpZiBzZWxmLm5hbWUgaW4gYmIubXNnLmxvZ2dlckRlZmF1bHREb21haW5zIGFuZCBsb2dsZXZlbCA+IChiYi5tc2cubG9nZ2VyRGVmYXVsdERvbWFpbnNbc2VsZi5uYW1lXSk6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBpZiBsb2dsZXZlbCA+IGJiLm1zZy5sb2dnZXJEZWZhdWx0TG9nTGV2ZWw6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIHJldHVybiBzZWxmLmxvZyhsb2dsZXZlbCwgbXNnLCAqYXJncywgKiprd2FyZ3MpCiAKICAgICBkZWYgcGxhaW4oc2VsZiwgbXNnLCAqYXJncywgKiprd2FyZ3MpOgogICAgICAgICByZXR1cm4gc2VsZi5sb2cobG9nZ2luZy5JTkZPICsgMSwgbXNnLCAqYXJncywgKiprd2FyZ3MpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2J1aWxkLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9idWlsZC5weQppbmRleCAzMGEyYmEyLi4yM2I2ZWU0IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2J1aWxkLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvYnVpbGQucHkKQEAgLTE1LDcgKzE1LDYgQEAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwogaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBzaGxleAogaW1wb3J0IGdsb2IKIGltcG9ydCB0aW1lCiBpbXBvcnQgc3RhdApAQCAtNTcsMTQgKzU2LDE3IEBACiBjbGFzcyBUYXNrQmFzZShldmVudC5FdmVudCk6CiAgICAgIiIiQmFzZSBjbGFzcyBmb3IgdGFzayBldmVudHMiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0LCBsb2dmaWxlLCBkKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdCwgZm4sIGxvZ2ZpbGUsIGQpOgogICAgICAgICBzZWxmLl90YXNrID0gdAorICAgICAgICBzZWxmLl9mbiA9IGZuCiAgICAgICAgIHNlbGYuX3BhY2thZ2UgPSBkLmdldFZhcigiUEYiKQogICAgICAgICBzZWxmLl9tYyA9IGQuZ2V0VmFyKCJCQl9DVVJSRU5UX01DIikKICAgICAgICAgc2VsZi50YXNrZmlsZSA9IGQuZ2V0VmFyKCJGSUxFIikKICAgICAgICAgc2VsZi50YXNrbmFtZSA9IHNlbGYuX3Rhc2sKICAgICAgICAgc2VsZi5sb2dmaWxlID0gbG9nZmlsZQogICAgICAgICBzZWxmLnRpbWUgPSB0aW1lLnRpbWUoKQorICAgICAgICBzZWxmLnBuID0gZC5nZXRWYXIoIlBOIikKKyAgICAgICAgc2VsZi5wdiA9IGQuZ2V0VmFyKCJQViIpCiAgICAgICAgIGV2ZW50LkV2ZW50Ll9faW5pdF9fKHNlbGYpCiAgICAgICAgIHNlbGYuX21lc3NhZ2UgPSAicmVjaXBlICVzOiB0YXNrICVzOiAlcyIgJSAoZC5nZXRWYXIoIlBGIiksIHQsIHNlbGYuZ2V0RGlzcGxheU5hbWUoKSkKIApAQCAtODEsOCArODMsOCBAQAogCiBjbGFzcyBUYXNrU3RhcnRlZChUYXNrQmFzZSk6CiAgICAgIiIiVGFzayBleGVjdXRpb24gc3RhcnRlZCIiIgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0LCBsb2dmaWxlLCB0YXNrZmxhZ3MsIGQpOgotICAgICAgICBzdXBlcihUYXNrU3RhcnRlZCwgc2VsZikuX19pbml0X18odCwgbG9nZmlsZSwgZCkKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdCwgZm4sIGxvZ2ZpbGUsIHRhc2tmbGFncywgZCk6CisgICAgICAgIHN1cGVyKFRhc2tTdGFydGVkLCBzZWxmKS5fX2luaXRfXyh0LCBmbiwgbG9nZmlsZSwgZCkKICAgICAgICAgc2VsZi50YXNrZmxhZ3MgPSB0YXNrZmxhZ3MKIAogY2xhc3MgVGFza1N1Y2NlZWRlZChUYXNrQmFzZSk6CkBAIC05MSw5ICs5Myw5IEBACiBjbGFzcyBUYXNrRmFpbGVkKFRhc2tCYXNlKToKICAgICAiIiJUYXNrIGV4ZWN1dGlvbiBmYWlsZWQiIiIKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXNrLCBsb2dmaWxlLCBtZXRhZGF0YSwgZXJycHJpbnRlZCA9IEZhbHNlKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGFzaywgZm4sIGxvZ2ZpbGUsIG1ldGFkYXRhLCBlcnJwcmludGVkID0gRmFsc2UpOgogICAgICAgICBzZWxmLmVycnByaW50ZWQgPSBlcnJwcmludGVkCi0gICAgICAgIHN1cGVyKFRhc2tGYWlsZWQsIHNlbGYpLl9faW5pdF9fKHRhc2ssIGxvZ2ZpbGUsIG1ldGFkYXRhKQorICAgICAgICBzdXBlcihUYXNrRmFpbGVkLCBzZWxmKS5fX2luaXRfXyh0YXNrLCBmbiwgbG9nZmlsZSwgbWV0YWRhdGEpCiAKIGNsYXNzIFRhc2tGYWlsZWRTaWxlbnQoVGFza0Jhc2UpOgogICAgICIiIlRhc2sgZXhlY3V0aW9uIGZhaWxlZCAoc2lsZW50bHkpIiIiCkBAIC0xMDMsOCArMTA1LDggQEAKIAogY2xhc3MgVGFza0ludmFsaWQoVGFza0Jhc2UpOgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIHRhc2ssIG1ldGFkYXRhKToKLSAgICAgICAgc3VwZXIoVGFza0ludmFsaWQsIHNlbGYpLl9faW5pdF9fKHRhc2ssIE5vbmUsIG1ldGFkYXRhKQorICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0YXNrLCBmbiwgbWV0YWRhdGEpOgorICAgICAgICBzdXBlcihUYXNrSW52YWxpZCwgc2VsZikuX19pbml0X18odGFzaywgZm4sIE5vbmUsIG1ldGFkYXRhKQogICAgICAgICBzZWxmLl9tZXNzYWdlID0gIk5vIHN1Y2ggdGFzayAnJXMnIiAlIHRhc2sKIAogY2xhc3MgVGFza1Byb2dyZXNzKGV2ZW50LkV2ZW50KToKQEAgLTU3Miw3ICs1NzQsNyBAQAogCiAgICAgdHJ5OgogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBldmVudC5maXJlKFRhc2tTdGFydGVkKHRhc2ssIGxvZ2ZuLCBmbGFncywgbG9jYWxkYXRhKSwgbG9jYWxkYXRhKQorICAgICAgICAgICAgZXZlbnQuZmlyZShUYXNrU3RhcnRlZCh0YXNrLCBmbiwgbG9nZm4sIGZsYWdzLCBsb2NhbGRhdGEpLCBsb2NhbGRhdGEpCiAgICAgICAgIGV4Y2VwdCAoYmIuQkJIYW5kbGVkRXhjZXB0aW9uLCBTeXN0ZW1FeGl0KToKICAgICAgICAgICAgIHJldHVybiAxCiAKQEAgLTU4MywxNSArNTg1LDE1IEBACiAgICAgICAgICAgICBmb3IgZnVuYyBpbiAocG9zdGZ1bmNzIG9yICcnKS5zcGxpdCgpOgogICAgICAgICAgICAgICAgIGV4ZWNfZnVuYyhmdW5jLCBsb2NhbGRhdGEpCiAgICAgICAgIGV4Y2VwdCBiYi5CQkhhbmRsZWRFeGNlcHRpb246Ci0gICAgICAgICAgICBldmVudC5maXJlKFRhc2tGYWlsZWQodGFzaywgbG9nZm4sIGxvY2FsZGF0YSwgVHJ1ZSksIGxvY2FsZGF0YSkKKyAgICAgICAgICAgIGV2ZW50LmZpcmUoVGFza0ZhaWxlZCh0YXNrLCBmbiwgbG9nZm4sIGxvY2FsZGF0YSwgVHJ1ZSksIGxvY2FsZGF0YSkKICAgICAgICAgICAgIHJldHVybiAxCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZXhjOgogICAgICAgICAgICAgaWYgcXVpZXRlcnI6Ci0gICAgICAgICAgICAgICAgZXZlbnQuZmlyZShUYXNrRmFpbGVkU2lsZW50KHRhc2ssIGxvZ2ZuLCBsb2NhbGRhdGEpLCBsb2NhbGRhdGEpCisgICAgICAgICAgICAgICAgZXZlbnQuZmlyZShUYXNrRmFpbGVkU2lsZW50KHRhc2ssIGZuLCBsb2dmbiwgbG9jYWxkYXRhKSwgbG9jYWxkYXRhKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBlcnJwcmludGVkID0gZXJyY2hrLnRyaWdnZXJlZAogICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcihzdHIoZXhjKSkKLSAgICAgICAgICAgICAgICBldmVudC5maXJlKFRhc2tGYWlsZWQodGFzaywgbG9nZm4sIGxvY2FsZGF0YSwgZXJycHJpbnRlZCksIGxvY2FsZGF0YSkKKyAgICAgICAgICAgICAgICBldmVudC5maXJlKFRhc2tGYWlsZWQodGFzaywgZm4sIGxvZ2ZuLCBsb2NhbGRhdGEsIGVycnByaW50ZWQpLCBsb2NhbGRhdGEpCiAgICAgICAgICAgICByZXR1cm4gMQogICAgIGZpbmFsbHk6CiAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQpAQCAtNjE0LDcgKzYxNiw3IEBACiAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMiwgIlplcm8gc2l6ZSBsb2dmbiAlcywgcmVtb3ZpbmciLCBsb2dmbikKICAgICAgICAgICAgIGJiLnV0aWxzLnJlbW92ZShsb2dmbikKICAgICAgICAgICAgIGJiLnV0aWxzLnJlbW92ZShsb2dsaW5rKQotICAgIGV2ZW50LmZpcmUoVGFza1N1Y2NlZWRlZCh0YXNrLCBsb2dmbiwgbG9jYWxkYXRhKSwgbG9jYWxkYXRhKQorICAgIGV2ZW50LmZpcmUoVGFza1N1Y2NlZWRlZCh0YXNrLCBmbiwgbG9nZm4sIGxvY2FsZGF0YSksIGxvY2FsZGF0YSkKIAogICAgIGlmIG5vdCBsb2NhbGRhdGEuZ2V0VmFyRmxhZyh0YXNrLCAnbm9zdGFtcCcsIEZhbHNlKSBhbmQgbm90IGxvY2FsZGF0YS5nZXRWYXJGbGFnKHRhc2ssICdzZWxmc3RhbXAnLCBGYWxzZSk6CiAgICAgICAgIG1ha2Vfc3RhbXAodGFzaywgbG9jYWxkYXRhKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9jYWNoZS5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvY2FjaGUucHkKaW5kZXggYjZmN2RhNS4uZDFiZTgzNiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9jYWNoZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2NhY2hlLnB5CkBAIC0xNywxMSArMTcsMTEgQEAKICMKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHBpY2tsZQogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKIGltcG9ydCBiYi51dGlscworaW1wb3J0IHJlCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCJCaXRCYWtlLkNhY2hlIikKIApAQCAtMjA4LDEwICsyMDgsMTAgQEAKIAogICAgICAgICAjIENvbGxlY3QgZmlsZXMgd2UgbWF5IG5lZWQgZm9yIHBvc3NpYmxlIHdvcmxkLWRlcAogICAgICAgICAjIGNhbGN1bGF0aW9ucwotICAgICAgICBpZiBzZWxmLm5vdF93b3JsZDoKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiRVhDTFVERSBGUk9NIFdPUkxEOiAlcyIsIGZuKQotICAgICAgICBlbHNlOgorICAgICAgICBpZiBub3Qgc2VsZi5ub3Rfd29ybGQ6CiAgICAgICAgICAgICBjYWNoZWRhdGEucG9zc2libGVfd29ybGQuYXBwZW5kKGZuKQorICAgICAgICAjZWxzZToKKyAgICAgICAgIyAgICBsb2dnZXIuZGVidWcoMiwgIkVYQ0xVREUgRlJPTSBXT1JMRDogJXMiLCBmbikKIAogICAgICAgICAjIGNyZWF0ZSBhIGNvbGxlY3Rpb24gb2YgYWxsIHRhcmdldHMgZm9yIHNhbml0eSBjaGVja2luZwogICAgICAgICAjIHRhc2tzLCBzdWNoIGFzIHVwc3RyZWFtIHZlcnNpb25zLCBsaWNlbnNlLCBhbmQgdG9vbHMgZm9yCkBAIC0zNzAsNiArMzcwLDcgQEAKICAgICAgICAgc2VsZi5kYXRhX2ZuID0gTm9uZQogICAgICAgICBzZWxmLmNhY2hlY2xlYW4gPSBUcnVlCiAgICAgICAgIHNlbGYuZGF0YV9oYXNoID0gZGF0YV9oYXNoCisgICAgICAgIHNlbGYuZmlsZWxpc3RfcmVnZXggPSByZS5jb21waWxlKHInKD86KD88PTpUcnVlKXwoPzw9OkZhbHNlKSlccysnKQogCiAgICAgICAgIGlmIHNlbGYuY2FjaGVkaXIgaW4gW05vbmUsICcnXToKICAgICAgICAgICAgIHNlbGYuaGFzX2NhY2hlID0gRmFsc2UKQEAgLTYwOCwyMCArNjA5LDEyIEBACiAgICAgICAgIGlmIGhhc2F0dHIoaW5mb19hcnJheVswXSwgJ2ZpbGVfY2hlY2tzdW1zJyk6CiAgICAgICAgICAgICBmb3IgXywgZmwgaW4gaW5mb19hcnJheVswXS5maWxlX2NoZWNrc3Vtcy5pdGVtcygpOgogICAgICAgICAgICAgICAgIGZsID0gZmwuc3RyaXAoKQotICAgICAgICAgICAgICAgIHdoaWxlIGZsOgotICAgICAgICAgICAgICAgICAgICAjIEEgLnNwbGl0KCkgd291bGQgYmUgc2ltcGxlciBidXQgbWVhbnMgc3BhY2VzIG9yIGNvbG9ucyBpbiBmaWxlbmFtZXMgd291bGQgYnJlYWsKLSAgICAgICAgICAgICAgICAgICAgYSA9IGZsLmZpbmQoIjpUcnVlIikKLSAgICAgICAgICAgICAgICAgICAgYiA9IGZsLmZpbmQoIjpGYWxzZSIpCi0gICAgICAgICAgICAgICAgICAgIGlmICgoYSA8IDApIGFuZCBiKSBvciAoKGIgPiAwKSBhbmQgKGIgPCBhKSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmID0gZmxbOmIrNl0KLSAgICAgICAgICAgICAgICAgICAgICAgIGZsID0gZmxbYis3Ol0KLSAgICAgICAgICAgICAgICAgICAgZWxpZiAoKGIgPCAwKSBhbmQgYSkgb3IgKChhID4gMCkgYW5kIChhIDwgYikpOgotICAgICAgICAgICAgICAgICAgICAgICAgZiA9IGZsWzphKzVdCi0gICAgICAgICAgICAgICAgICAgICAgICBmbCA9IGZsW2ErNjpdCi0gICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBmbCA9IGZsLnN0cmlwKCkKLSAgICAgICAgICAgICAgICAgICAgaWYgIioiIGluIGY6CisgICAgICAgICAgICAgICAgaWYgbm90IGZsOgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgICMgSGF2ZSB0byBiZSBjYXJlZnVsIGFib3V0IHNwYWNlcyBhbmQgY29sb25zIGluIGZpbGVuYW1lcworICAgICAgICAgICAgICAgIGZsaXN0ID0gc2VsZi5maWxlbGlzdF9yZWdleC5zcGxpdChmbCkKKyAgICAgICAgICAgICAgICBmb3IgZiBpbiBmbGlzdDoKKyAgICAgICAgICAgICAgICAgICAgaWYgbm90IGYgb3IgIioiIGluIGY6CiAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgICAgICBmLCBleGlzdCA9IGYuc3BsaXQoIjoiKQogICAgICAgICAgICAgICAgICAgICBpZiAoZXhpc3QgPT0gIlRydWUiIGFuZCBub3Qgb3MucGF0aC5leGlzdHMoZikpIG9yIChleGlzdCA9PSAiRmFsc2UiIGFuZCBvcy5wYXRoLmV4aXN0cyhmKSk6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2NoZWNrc3VtLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9jaGVja3N1bS5weQppbmRleCA1YmM4YThmLi4xZDUwYTI2IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2NoZWNrc3VtLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvY2hlY2tzdW0ucHkKQEAgLTksNyArOSw2IEBACiBpbXBvcnQgb3BlcmF0b3IKIGltcG9ydCBvcwogaW1wb3J0IHN0YXQKLWltcG9ydCBwaWNrbGUKIGltcG9ydCBiYi51dGlscwogaW1wb3J0IGxvZ2dpbmcKIGZyb20gYmIuY2FjaGUgaW1wb3J0IE11bHRpUHJvY2Vzc0NhY2hlCkBAIC03NCw3ICs3Myw3IEBACiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGRlc3RbMF1baF0gPSBzb3VyY2VbMF1baF0KIAotICAgIGRlZiBnZXRfY2hlY2tzdW1zKHNlbGYsIGZpbGVsaXN0LCBwbik6CisgICAgZGVmIGdldF9jaGVja3N1bXMoc2VsZiwgZmlsZWxpc3QsIHBuLCBsb2NhbGRpcnNleGNsdWRlKToKICAgICAgICAgIiIiR2V0IGNoZWNrc3VtcyBmb3IgYSBsaXN0IG9mIGZpbGVzIiIiCiAKICAgICAgICAgZGVmIGNoZWNrc3VtX2ZpbGUoZik6CkBAIC05MCw3ICs4OSw4IEBACiAgICAgICAgICAgICBpZiBwdGggPT0gIi8iOgogICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJSZWZ1c2luZyB0byBjaGVja3N1bSAvIikKICAgICAgICAgICAgIGRpcmNoZWNrc3VtcyA9IFtdCi0gICAgICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhwdGgpOgorICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsocHRoLCB0b3Bkb3duPVRydWUpOgorICAgICAgICAgICAgICAgIFtkaXJzLnJlbW92ZShkKSBmb3IgZCBpbiBsaXN0KGRpcnMpIGlmIGQgaW4gbG9jYWxkaXJzZXhjbHVkZV0KICAgICAgICAgICAgICAgICBmb3IgbmFtZSBpbiBmaWxlczoKICAgICAgICAgICAgICAgICAgICAgZnVsbHB0aCA9IG9zLnBhdGguam9pbihyb290LCBuYW1lKQogICAgICAgICAgICAgICAgICAgICBjaGVja3N1bSA9IGNoZWNrc3VtX2ZpbGUoZnVsbHB0aCkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvY29kZXBhcnNlci5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvY29kZXBhcnNlci5weQppbmRleCBmZDJjNDczLi4yNWE3YWM2IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2NvZGVwYXJzZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9jb2RlcGFyc2VyLnB5CkBAIC0yNSwxMyArMjUsMTEgQEAKIGltcG9ydCBzeXMKIGltcG9ydCBjb2RlZ2VuCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IHBpY2tsZQogaW1wb3J0IGJiLnB5c2ggYXMgcHlzaAotaW1wb3J0IG9zLnBhdGgKIGltcG9ydCBiYi51dGlscywgYmIuZGF0YQogaW1wb3J0IGhhc2hsaWIKIGZyb20gaXRlcnRvb2xzIGltcG9ydCBjaGFpbgotZnJvbSBiYi5weXNoIGltcG9ydCBweXNoeWFjYywgcHlzaGxleCwgc2hlcnJvcnMKK2Zyb20gYmIucHlzaCBpbXBvcnQgcHlzaHlhY2MsIHB5c2hsZXgKIGZyb20gYmIuY2FjaGUgaW1wb3J0IE11bHRpUHJvY2Vzc0NhY2hlCiAKIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdCaXRCYWtlLkNvZGVQYXJzZXInKQpAQCAtNTgsMzAgKzU2LDEwIEBACiAKICAgICByZXR1cm4gY29kZXN0cgogCi0KLSMgQmFzaWNhbGx5IHBpY2tsZSwgaW4gcHl0aG9uIDIuNy4zIGF0IGxlYXN0LCBkb2VzIGJhZGx5IHdpdGggZGF0YSBkdXBsaWNhdGlvbiAKLSMgdXBvbiBwaWNrbGluZyBhbmQgdW5waWNrbGluZy4gQ29tYmluZSB0aGlzIHdpdGggZHVwbGljYXRlIG9iamVjdHMgYW5kIHRoaW5ncwotIyBhcmUgYSBtZXNzLgotIwotIyBXaGVuIHRoZSBzZXRzIGFyZSBvcmlnaW5hbGx5IGNyZWF0ZWQsIHB5dGhvbiBjYWxscyBpbnRlcm4oKSBvbiB0aGUgc2V0IGtleXMKLSMgd2hpY2ggc2lnbmlmaWNhbnRseSBpbXByb3ZlcyBtZW1vcnkgdXNhZ2UuIFNhZGx5IHRoZSBwaWNrbGUvdW5waWNrbGUgcHJvY2VzcwotIyBkb2Vzbid0IGNhbGwgaW50ZXJuKCkgb24gdGhlIGtleXMgYW5kIHJlc3VsdHMgaW4gdGhlIHNhbWUgc3RyaW5ncyBiZWluZyBkdXBsaWNhdGVkCi0jIGluIG1lbW9yeS4gVGhpcyBhbHNvIG1lYW5zIHBpY2tsZSB3aWxsIHNhdmUgdGhlIHNhbWUgc3RyaW5nIG11bHRpcGxlIHRpbWVzIGluCi0jIHRoZSBjYWNoZSBmaWxlLgotIwotIyBCeSBoYXZpbmcgc2hlbGwgYW5kIHB5dGhvbiBjYWNoZWxpbmUgb2JqZWN0cyB3aXRoIHNldHN0YXRlL2dldHN0YXRlLCB3ZSBmb3JjZQotIyB0aGUgb2JqZWN0IGNyZWF0aW9uIHRocm91Z2ggb3VyIG93biByb3V0aW5lIHdoZXJlIHdlIGNhbiBjYWxsIGludGVybiAodmlhIGludGVyblNldCkuCi0jCi0jIFdlIGFsc28gdXNlIGhhc2hhYmxlIGZyb3plbnNldHMgYW5kIGVuc3VyZSB3ZSB1c2UgcmVmZXJlbmNlcyB0byB0aGVzZSBzbyB0aGF0Ci0jIGR1cGxpY2F0ZXMgY2FuIGJlIHJlbW92ZWQsIGJvdGggaW4gbWVtb3J5IGFuZCBpbiB0aGUgcmVzdWx0aW5nIHBpY2tsZWQgZGF0YS4KLSMKLSMgQnkgcGxheWluZyB0aGVzZSBnYW1lcywgdGhlIHNpemUgb2YgdGhlIGNhY2hlIGZpbGUgc2hyaW5rcyBkcmFtYXRpY2FsbHkKLSMgbWVhbmluZyBmYXN0ZXIgbG9hZCB0aW1lcyBhbmQgdGhlIHJlbG9hZGVkIGNhY2hlIGZpbGVzIGFsc28gY29uc3VtZSBtdWNoIGxlc3MKLSMgbWVtb3J5LiBTbWFsbGVyIGNhY2hlIGZpbGVzLCBmYXN0ZXIgbG9hZCB0aW1lcyBhbmQgbG93ZXIgbWVtb3J5IHVzYWdlIGlzIGdvb2QuCi0jCiAjIEEgY3VzdG9tIGdldHN0YXRlL3NldHN0YXRlIHVzaW5nIHR1cGxlcyBpcyBhY3R1YWxseSB3b3J0aCAxNSUgY2FjaGVzaXplIGJ5CiAjIGF2b2lkaW5nIGR1cGxpY2F0aW9uIG9mIHRoZSBhdHRyaWJ1dGUgbmFtZXMhCiAKKwogY2xhc3MgU2V0Q2FjaGUob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZik6CiAgICAgICAgIHNlbGYuc2V0Y2FjaGUgPSB7fQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9jb21tYW5kLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9jb21tYW5kLnB5CmluZGV4IDM3OGYzODkuLjZhYmYzODYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvY29tbWFuZC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2NvbW1hbmQucHkKQEAgLTY1LDcgKzY1LDcgQEAKICAgICAgICAgICAgICMgQ2FuIHJ1biBzeW5jaHJvbm91cyBjb21tYW5kcyBzdHJhaWdodCBhd2F5CiAgICAgICAgICAgICBjb21tYW5kX21ldGhvZCA9IGdldGF0dHIoc2VsZi5jbWRzX3N5bmMsIGNvbW1hbmQpCiAgICAgICAgICAgICBpZiByb19vbmx5OgotICAgICAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKGNvbW1hbmRfbWV0aG9kLCAncmVhZG9ubHknKSBvciBGYWxzZSA9PSBnZXRhdHRyKGNvbW1hbmRfbWV0aG9kLCAncmVhZG9ubHknKToKKyAgICAgICAgICAgICAgICBpZiBub3QgaGFzYXR0cihjb21tYW5kX21ldGhvZCwgJ3JlYWRvbmx5Jykgb3Igbm90IGdldGF0dHIoY29tbWFuZF9tZXRob2QsICdyZWFkb25seScpOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gTm9uZSwgIk5vdCBhYmxlIHRvIGV4ZWN1dGUgbm90IHJlYWRvbmx5IGNvbW1hbmRzIGluIHJlYWRvbmx5IG1vZGUiCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5jb29rZXIucHJvY2Vzc19pbm90aWZ5X3VwZGF0ZXMoKQpAQCAtNDE0LDcgKzQxNCwxMSBAQAogICAgIGdldEFsbEFwcGVuZHMucmVhZG9ubHkgPSBUcnVlCiAKICAgICBkZWYgZmluZFByb3ZpZGVycyhzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgotICAgICAgICByZXR1cm4gY29tbWFuZC5jb29rZXIuZmluZFByb3ZpZGVycygpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG1jID0gcGFyYW1zWzBdCisgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgorICAgICAgICAgICAgbWMgPSAnJworICAgICAgICByZXR1cm4gY29tbWFuZC5jb29rZXIuZmluZFByb3ZpZGVycyhtYykKICAgICBmaW5kUHJvdmlkZXJzLnJlYWRvbmx5ID0gVHJ1ZQogCiAgICAgZGVmIGZpbmRCZXN0UHJvdmlkZXIoc2VsZiwgY29tbWFuZCwgcGFyYW1zKToKQEAgLTQ0Niw1NCArNDUwLDM4IEBACiAgICAgICAgIHJldHVybiBhbGxfcCwgYmVzdAogICAgIGdldFJ1bnRpbWVQcm92aWRlcnMucmVhZG9ubHkgPSBUcnVlCiAKLSAgICBkZWYgZGF0YVN0b3JlQ29ubmVjdG9yRmluZFZhcihzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgorICAgIGRlZiBkYXRhU3RvcmVDb25uZWN0b3JDbWQoc2VsZiwgY29tbWFuZCwgcGFyYW1zKToKICAgICAgICAgZHNpbmRleCA9IHBhcmFtc1swXQotICAgICAgICBuYW1lID0gcGFyYW1zWzFdCi0gICAgICAgIGRhdGFzdG9yZSA9IGNvbW1hbmQucmVtb3RlZGF0YXN0b3Jlc1tkc2luZGV4XQotICAgICAgICB2YWx1ZSwgb3ZlcnJpZGVkYXRhID0gZGF0YXN0b3JlLl9maW5kVmFyKG5hbWUpCisgICAgICAgIG1ldGhvZCA9IHBhcmFtc1sxXQorICAgICAgICBhcmdzID0gcGFyYW1zWzJdCisgICAgICAgIGt3YXJncyA9IHBhcmFtc1szXQogCi0gICAgICAgIGlmIHZhbHVlOgotICAgICAgICAgICAgY29udGVudCA9IHZhbHVlLmdldCgnX2NvbnRlbnQnLCBOb25lKQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShjb250ZW50LCBiYi5kYXRhX3NtYXJ0LkRhdGFTbWFydCk6Ci0gICAgICAgICAgICAgICAgIyBWYWx1ZSBpcyBhIGRhdGFzdG9yZSAoZS5nLiBCQl9PUklHRU5WKSAtIG5lZWQgdG8gaGFuZGxlIHRoaXMgY2FyZWZ1bGx5Ci0gICAgICAgICAgICAgICAgaWR4ID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzLmNoZWNrX3N0b3JlKGNvbnRlbnQsIFRydWUpCi0gICAgICAgICAgICAgICAgcmV0dXJuIHsnX2NvbnRlbnQnOiBEYXRhU3RvcmVDb25uZWN0aW9uSGFuZGxlKGlkeCksCi0gICAgICAgICAgICAgICAgICAgICAgICAnX2Nvbm5lY3Rvcl9vcmlndHlwZSc6ICdEYXRhU3RvcmVDb25uZWN0aW9uSGFuZGxlJywKLSAgICAgICAgICAgICAgICAgICAgICAgICdfY29ubmVjdG9yX292ZXJyaWRlcyc6IG92ZXJyaWRlZGF0YX0KLSAgICAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShjb250ZW50LCBzZXQpOgotICAgICAgICAgICAgICAgIHJldHVybiB7J19jb250ZW50JzogbGlzdChjb250ZW50KSwKLSAgICAgICAgICAgICAgICAgICAgICAgICdfY29ubmVjdG9yX29yaWd0eXBlJzogJ3NldCcsCi0gICAgICAgICAgICAgICAgICAgICAgICAnX2Nvbm5lY3Rvcl9vdmVycmlkZXMnOiBvdmVycmlkZWRhdGF9Ci0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIHZhbHVlWydfY29ubmVjdG9yX292ZXJyaWRlcyddID0gb3ZlcnJpZGVkYXRhCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICB2YWx1ZSA9IHt9Ci0gICAgICAgICAgICB2YWx1ZVsnX2Nvbm5lY3Rvcl9vdmVycmlkZXMnXSA9IG92ZXJyaWRlZGF0YQotICAgICAgICByZXR1cm4gdmFsdWUKLSAgICBkYXRhU3RvcmVDb25uZWN0b3JGaW5kVmFyLnJlYWRvbmx5ID0gVHJ1ZQorICAgICAgICBkID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdCisgICAgICAgIHJldCA9IGdldGF0dHIoZCwgbWV0aG9kKSgqYXJncywgKiprd2FyZ3MpCiAKLSAgICBkZWYgZGF0YVN0b3JlQ29ubmVjdG9yR2V0S2V5cyhzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgorICAgICAgICBpZiBpc2luc3RhbmNlKHJldCwgYmIuZGF0YV9zbWFydC5EYXRhU21hcnQpOgorICAgICAgICAgICAgaWR4ID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzLnN0b3JlKHJldCkKKyAgICAgICAgICAgIHJldHVybiBEYXRhU3RvcmVDb25uZWN0aW9uSGFuZGxlKGlkeCkKKworICAgICAgICByZXR1cm4gcmV0CisKKyAgICBkZWYgZGF0YVN0b3JlQ29ubmVjdG9yVmFySGlzdENtZChzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgogICAgICAgICBkc2luZGV4ID0gcGFyYW1zWzBdCi0gICAgICAgIGRhdGFzdG9yZSA9IGNvbW1hbmQucmVtb3RlZGF0YXN0b3Jlc1tkc2luZGV4XQotICAgICAgICByZXR1cm4gbGlzdChkYXRhc3RvcmUua2V5cygpKQotICAgIGRhdGFTdG9yZUNvbm5lY3RvckdldEtleXMucmVhZG9ubHkgPSBUcnVlCisgICAgICAgIG1ldGhvZCA9IHBhcmFtc1sxXQorICAgICAgICBhcmdzID0gcGFyYW1zWzJdCisgICAgICAgIGt3YXJncyA9IHBhcmFtc1szXQogCi0gICAgZGVmIGRhdGFTdG9yZUNvbm5lY3RvckdldFZhckhpc3Rvcnkoc2VsZiwgY29tbWFuZCwgcGFyYW1zKToKKyAgICAgICAgZCA9IGNvbW1hbmQucmVtb3RlZGF0YXN0b3Jlc1tkc2luZGV4XS52YXJoaXN0b3J5CisgICAgICAgIHJldHVybiBnZXRhdHRyKGQsIG1ldGhvZCkoKmFyZ3MsICoqa3dhcmdzKQorCisgICAgZGVmIGRhdGFTdG9yZUNvbm5lY3RvckluY0hpc3RDbWQoc2VsZiwgY29tbWFuZCwgcGFyYW1zKToKICAgICAgICAgZHNpbmRleCA9IHBhcmFtc1swXQotICAgICAgICBuYW1lID0gcGFyYW1zWzFdCi0gICAgICAgIGRhdGFzdG9yZSA9IGNvbW1hbmQucmVtb3RlZGF0YXN0b3Jlc1tkc2luZGV4XQotICAgICAgICByZXR1cm4gZGF0YXN0b3JlLnZhcmhpc3RvcnkudmFyaWFibGUobmFtZSkKLSAgICBkYXRhU3RvcmVDb25uZWN0b3JHZXRWYXJIaXN0b3J5LnJlYWRvbmx5ID0gVHJ1ZQorICAgICAgICBtZXRob2QgPSBwYXJhbXNbMV0KKyAgICAgICAgYXJncyA9IHBhcmFtc1syXQorICAgICAgICBrd2FyZ3MgPSBwYXJhbXNbM10KIAotICAgIGRlZiBkYXRhU3RvcmVDb25uZWN0b3JFeHBhbmRQeXRob25SZWYoc2VsZiwgY29tbWFuZCwgcGFyYW1zKToKLSAgICAgICAgY29uZmlnX2RhdGFfZGljdCA9IHBhcmFtc1swXQotICAgICAgICB2YXJuYW1lID0gcGFyYW1zWzFdCi0gICAgICAgIGV4cHIgPSBwYXJhbXNbMl0KLQotICAgICAgICBjb25maWdfZGF0YSA9IGNvbW1hbmQucmVtb3RlZGF0YXN0b3Jlcy5yZWNlaXZlX2RhdGFzdG9yZShjb25maWdfZGF0YV9kaWN0KQotCi0gICAgICAgIHZhcnBhcnNlID0gYmIuZGF0YV9zbWFydC5WYXJpYWJsZVBhcnNlKHZhcm5hbWUsIGNvbmZpZ19kYXRhKQotICAgICAgICByZXR1cm4gdmFycGFyc2UucHl0aG9uX3N1YihleHByKQorICAgICAgICBkID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW2RzaW5kZXhdLmluY2hpc3RvcnkKKyAgICAgICAgcmV0dXJuIGdldGF0dHIoZCwgbWV0aG9kKSgqYXJncywgKiprd2FyZ3MpCiAKICAgICBkZWYgZGF0YVN0b3JlQ29ubmVjdG9yUmVsZWFzZShzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgogICAgICAgICBkc2luZGV4ID0gcGFyYW1zWzBdCkBAIC01MDEsMzEgKzQ4OSw2IEBACiAgICAgICAgICAgICByYWlzZSBDb21tYW5kRXJyb3IoJ2RhdGFTdG9yZUNvbm5lY3RvclJlbGVhc2U6IGludmFsaWQgaW5kZXggJWQnICUgZHNpbmRleCkKICAgICAgICAgY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzLnJlbGVhc2UoZHNpbmRleCkKIAotICAgIGRlZiBkYXRhU3RvcmVDb25uZWN0b3JTZXRWYXJGbGFnKHNlbGYsIGNvbW1hbmQsIHBhcmFtcyk6Ci0gICAgICAgIGRzaW5kZXggPSBwYXJhbXNbMF0KLSAgICAgICAgbmFtZSA9IHBhcmFtc1sxXQotICAgICAgICBmbGFnID0gcGFyYW1zWzJdCi0gICAgICAgIHZhbHVlID0gcGFyYW1zWzNdCi0gICAgICAgIGRhdGFzdG9yZSA9IGNvbW1hbmQucmVtb3RlZGF0YXN0b3Jlc1tkc2luZGV4XQotICAgICAgICBkYXRhc3RvcmUuc2V0VmFyRmxhZyhuYW1lLCBmbGFnLCB2YWx1ZSkKLQotICAgIGRlZiBkYXRhU3RvcmVDb25uZWN0b3JEZWxWYXIoc2VsZiwgY29tbWFuZCwgcGFyYW1zKToKLSAgICAgICAgZHNpbmRleCA9IHBhcmFtc1swXQotICAgICAgICBuYW1lID0gcGFyYW1zWzFdCi0gICAgICAgIGRhdGFzdG9yZSA9IGNvbW1hbmQucmVtb3RlZGF0YXN0b3Jlc1tkc2luZGV4XQotICAgICAgICBpZiBsZW4ocGFyYW1zKSA+IDI6Ci0gICAgICAgICAgICBmbGFnID0gcGFyYW1zWzJdCi0gICAgICAgICAgICBkYXRhc3RvcmUuZGVsVmFyRmxhZyhuYW1lLCBmbGFnKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgZGF0YXN0b3JlLmRlbFZhcihuYW1lKQotCi0gICAgZGVmIGRhdGFTdG9yZUNvbm5lY3RvclJlbmFtZVZhcihzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgotICAgICAgICBkc2luZGV4ID0gcGFyYW1zWzBdCi0gICAgICAgIG5hbWUgPSBwYXJhbXNbMV0KLSAgICAgICAgbmV3bmFtZSA9IHBhcmFtc1syXQotICAgICAgICBkYXRhc3RvcmUgPSBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXNbZHNpbmRleF0KLSAgICAgICAgZGF0YXN0b3JlLnJlbmFtZVZhcihuYW1lLCBuZXduYW1lKQotCiAgICAgZGVmIHBhcnNlUmVjaXBlRmlsZShzZWxmLCBjb21tYW5kLCBwYXJhbXMpOgogICAgICAgICAiIiIKICAgICAgICAgUGFyc2UgdGhlIHNwZWNpZmllZCByZWNpcGUgZmlsZSAod2l0aCBvciB3aXRob3V0IGJiYXBwZW5kcykKQEAgLTUzNiw4ICs0OTksNyBAQAogICAgICAgICBhcHBlbmRzID0gcGFyYW1zWzFdCiAgICAgICAgIGFwcGVuZGxpc3QgPSBwYXJhbXNbMl0KICAgICAgICAgaWYgbGVuKHBhcmFtcykgPiAzOgotICAgICAgICAgICAgY29uZmlnX2RhdGFfZGljdCA9IHBhcmFtc1szXQotICAgICAgICAgICAgY29uZmlnX2RhdGEgPSBjb21tYW5kLnJlbW90ZWRhdGFzdG9yZXMucmVjZWl2ZV9kYXRhc3RvcmUoY29uZmlnX2RhdGFfZGljdCkKKyAgICAgICAgICAgIGNvbmZpZ19kYXRhID0gY29tbWFuZC5yZW1vdGVkYXRhc3RvcmVzW3BhcmFtc1szXV0KICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGNvbmZpZ19kYXRhID0gTm9uZQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2Nvb2tlci5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvY29va2VyLnB5CmluZGV4IGU2NDQyYmYuLmU1MjdlMjMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvY29va2VyLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvY29va2VyLnB5CkBAIC0xMCw3ICsxMCw2IEBACiAjCiAKIGltcG9ydCBzeXMsIG9zLCBnbG9iLCBvcy5wYXRoLCByZSwgdGltZQotaW1wb3J0IGF0ZXhpdAogaW1wb3J0IGl0ZXJ0b29scwogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKQEAgLTE4LDE0ICsxNywxMSBAQAogaW1wb3J0IHRocmVhZGluZwogZnJvbSBpbyBpbXBvcnQgU3RyaW5nSU8sIFVuc3VwcG9ydGVkT3BlcmF0aW9uCiBmcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNsb3NpbmcKLWZyb20gZnVuY3Rvb2xzIGltcG9ydCB3cmFwcwogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QsIG5hbWVkdHVwbGUKIGltcG9ydCBiYiwgYmIuZXhjZXB0aW9ucywgYmIuY29tbWFuZAogZnJvbSBiYiBpbXBvcnQgdXRpbHMsIGRhdGEsIHBhcnNlLCBldmVudCwgY2FjaGUsIHByb3ZpZGVycywgdGFza2RhdGEsIHJ1bnF1ZXVlLCBidWlsZAogaW1wb3J0IHF1ZXVlCiBpbXBvcnQgc2lnbmFsCi1pbXBvcnQgc3VicHJvY2VzcwotaW1wb3J0IGVycm5vCiBpbXBvcnQgcHJzZXJ2LnNlcnYKIGltcG9ydCBweWlub3RpZnkKIGltcG9ydCBqc29uCkBAIC0xNjksOCArMTY1LDggQEAKICAgICAgICAgYmIuZGVidWcoMSwgIkJCQ29va2VyIHB5aW5vdGlmeTEgJXMiICUgdGltZS50aW1lKCkpCiAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQogCi0gICAgICAgIHNlbGYuY29uZmlnd2F0Y2hlci5iYnNlZW4gPSBbXQotICAgICAgICBzZWxmLmNvbmZpZ3dhdGNoZXIuYmJ3YXRjaGVkZmlsZXMgPSBbXQorICAgICAgICBzZWxmLmNvbmZpZ3dhdGNoZXIuYmJzZWVuID0gc2V0KCkKKyAgICAgICAgc2VsZi5jb25maWd3YXRjaGVyLmJid2F0Y2hlZGZpbGVzID0gc2V0KCkKICAgICAgICAgc2VsZi5jb25maWdub3RpZmllciA9IHB5aW5vdGlmeS5Ob3RpZmllcihzZWxmLmNvbmZpZ3dhdGNoZXIsIHNlbGYuY29uZmlnX25vdGlmaWNhdGlvbnMpCiAgICAgICAgIGJiLmRlYnVnKDEsICJCQkNvb2tlciBweWlub3RpZnkyICVzIiAlIHRpbWUudGltZSgpKQogICAgICAgICBzeXMuc3Rkb3V0LmZsdXNoKCkKQEAgLTE4MCw4ICsxNzYsOCBAQAogICAgICAgICBzZWxmLndhdGNoZXIgPSBweWlub3RpZnkuV2F0Y2hNYW5hZ2VyKCkKICAgICAgICAgYmIuZGVidWcoMSwgIkJCQ29va2VyIHB5aW5vdGlmeTMgJXMiICUgdGltZS50aW1lKCkpCiAgICAgICAgIHN5cy5zdGRvdXQuZmx1c2goKQotICAgICAgICBzZWxmLndhdGNoZXIuYmJzZWVuID0gW10KLSAgICAgICAgc2VsZi53YXRjaGVyLmJid2F0Y2hlZGZpbGVzID0gW10KKyAgICAgICAgc2VsZi53YXRjaGVyLmJic2VlbiA9IHNldCgpCisgICAgICAgIHNlbGYud2F0Y2hlci5iYndhdGNoZWRmaWxlcyA9IHNldCgpCiAgICAgICAgIHNlbGYubm90aWZpZXIgPSBweWlub3RpZnkuTm90aWZpZXIoc2VsZi53YXRjaGVyLCBzZWxmLm5vdGlmaWNhdGlvbnMpCiAKICAgICAgICAgYmIuZGVidWcoMSwgIkJCQ29va2VyIHB5aW5vdGlmeSBjb21wbGV0ZSAlcyIgJSB0aW1lLnRpbWUoKSkKQEAgLTI3OCwxNCArMjc0LDE0IEBACiAgICAgICAgIGlmIG5vdCB3YXRjaGVyOgogICAgICAgICAgICAgd2F0Y2hlciA9IHNlbGYud2F0Y2hlcgogICAgICAgICBmb3IgaSBpbiBkZXBzOgotICAgICAgICAgICAgd2F0Y2hlci5iYndhdGNoZWRmaWxlcy5hcHBlbmQoaVswXSkKKyAgICAgICAgICAgIHdhdGNoZXIuYmJ3YXRjaGVkZmlsZXMuYWRkKGlbMF0pCiAgICAgICAgICAgICBpZiBkaXJzOgogICAgICAgICAgICAgICAgIGYgPSBpWzBdCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIGYgPSBvcy5wYXRoLmRpcm5hbWUoaVswXSkKICAgICAgICAgICAgIGlmIGYgaW4gd2F0Y2hlci5iYnNlZW46CiAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgIHdhdGNoZXIuYmJzZWVuLmFwcGVuZChmKQorICAgICAgICAgICAgd2F0Y2hlci5iYnNlZW4uYWRkKGYpCiAgICAgICAgICAgICB3YXRjaHRhcmdldCA9IE5vbmUKICAgICAgICAgICAgIHdoaWxlIFRydWU6CiAgICAgICAgICAgICAgICAgIyBXZSB0cnkgYW5kIGFkZCB3YXRjaGVzIGZvciBmaWxlcyB0aGF0IGRvbid0IGV4aXN0IGJ1dCBpZiB0aGV5IGRpZCwgd291bGQgaW5mbHVlbmNlCkBAIC0yOTQsNyArMjkwLDcgQEAKICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgIHdhdGNoZXIuYWRkX3dhdGNoKGYsIHNlbGYud2F0Y2htYXNrLCBxdWlldD1GYWxzZSkKICAgICAgICAgICAgICAgICAgICAgaWYgd2F0Y2h0YXJnZXQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICB3YXRjaGVyLmJid2F0Y2hlZGZpbGVzLmFwcGVuZCh3YXRjaHRhcmdldCkKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhdGNoZXIuYmJ3YXRjaGVkZmlsZXMuYWRkKHdhdGNodGFyZ2V0KQogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIGV4Y2VwdCBweWlub3RpZnkuV2F0Y2hNYW5hZ2VyRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICAgICAgaWYgJ0VOT0VOVCcgaW4gc3RyKGUpOgpAQCAtMzAyLDcgKzI5OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBmID0gb3MucGF0aC5kaXJuYW1lKGYpCiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmIGluIHdhdGNoZXIuYmJzZWVuOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0gICAgICAgICAgICAgICAgICAgICAgICB3YXRjaGVyLmJic2Vlbi5hcHBlbmQoZikKKyAgICAgICAgICAgICAgICAgICAgICAgIHdhdGNoZXIuYmJzZWVuLmFkZChmKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgaWYgJ0VOT1NQQycgaW4gc3RyKGUpOgogICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZXJsb2cuZXJyb3IoIk5vIHNwYWNlIGxlZnQgb24gZGV2aWNlIG9yIGV4Y2VlZHMgZnMuaW5vdGlmeS5tYXhfdXNlcl93YXRjaGVzPyIpCkBAIC0xMDI3LDE2ICsxMDIzLDE2IEBACiAgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LkZpbGVzTWF0Y2hpbmdGb3VuZChmaWxlcGF0dGVybiwgbWF0Y2hlcyksIHNlbGYuZGF0YSkKIAogICAgIGRlZiBmaW5kUHJvdmlkZXJzKHNlbGYsIG1jPScnKToKLSAgICAgICAgcmV0dXJuIGJiLnByb3ZpZGVycy5maW5kUHJvdmlkZXJzKHNlbGYuZGF0YSwgc2VsZi5yZWNpcGVjYWNoZXNbbWNdLCBzZWxmLnJlY2lwZWNhY2hlc1ttY10ucGtnX3BuKQorICAgICAgICByZXR1cm4gYmIucHJvdmlkZXJzLmZpbmRQcm92aWRlcnMoc2VsZi5kYXRhYnVpbGRlci5tY2RhdGFbbWNdLCBzZWxmLnJlY2lwZWNhY2hlc1ttY10sIHNlbGYucmVjaXBlY2FjaGVzW21jXS5wa2dfcG4pCiAKICAgICBkZWYgZmluZEJlc3RQcm92aWRlcihzZWxmLCBwbiwgbWM9JycpOgogICAgICAgICBpZiBwbiBpbiBzZWxmLnJlY2lwZWNhY2hlc1ttY10ucHJvdmlkZXJzOgogICAgICAgICAgICAgZmlsZW5hbWVzID0gc2VsZi5yZWNpcGVjYWNoZXNbbWNdLnByb3ZpZGVyc1twbl0KLSAgICAgICAgICAgIGVsaWdpYmxlLCBmb3VuZFVuaXF1ZSA9IGJiLnByb3ZpZGVycy5maWx0ZXJQcm92aWRlcnMoZmlsZW5hbWVzLCBwbiwgc2VsZi5kYXRhLCBzZWxmLnJlY2lwZWNhY2hlc1ttY10pCisgICAgICAgICAgICBlbGlnaWJsZSwgZm91bmRVbmlxdWUgPSBiYi5wcm92aWRlcnMuZmlsdGVyUHJvdmlkZXJzKGZpbGVuYW1lcywgcG4sIHNlbGYuZGF0YWJ1aWxkZXIubWNkYXRhW21jXSwgc2VsZi5yZWNpcGVjYWNoZXNbbWNdKQogICAgICAgICAgICAgZmlsZW5hbWUgPSBlbGlnaWJsZVswXQogICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIE5vbmUsIGZpbGVuYW1lCiAgICAgICAgIGVsaWYgcG4gaW4gc2VsZi5yZWNpcGVjYWNoZXNbbWNdLnBrZ19wbjoKLSAgICAgICAgICAgIHJldHVybiBiYi5wcm92aWRlcnMuZmluZEJlc3RQcm92aWRlcihwbiwgc2VsZi5kYXRhLCBzZWxmLnJlY2lwZWNhY2hlc1ttY10sIHNlbGYucmVjaXBlY2FjaGVzW21jXS5wa2dfcG4pCisgICAgICAgICAgICByZXR1cm4gYmIucHJvdmlkZXJzLmZpbmRCZXN0UHJvdmlkZXIocG4sIHNlbGYuZGF0YWJ1aWxkZXIubWNkYXRhW21jXSwgc2VsZi5yZWNpcGVjYWNoZXNbbWNdLCBzZWxmLnJlY2lwZWNhY2hlc1ttY10ucGtnX3BuKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIE5vbmUsIE5vbmUKIApAQCAtMTIwOCw3ICsxMjA0LDcgQEAKICAgICAgICAgICAgIGZvciBjIGluIGNvbGxlY3Rpb25fbGlzdDoKICAgICAgICAgICAgICAgICBjYWxjX2xheWVyX3ByaW9yaXR5KGMpCiAgICAgICAgICAgICAgICAgcmVnZXggPSBzZWxmLmRhdGEuZ2V0VmFyKCJCQkZJTEVfUEFUVEVSTl8lcyIgJSBjKQotICAgICAgICAgICAgICAgIGlmIHJlZ2V4ID09IE5vbmU6CisgICAgICAgICAgICAgICAgaWYgcmVnZXggaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgcGFyc2Vsb2cuZXJyb3IoIkJCRklMRV9QQVRURVJOXyVzIG5vdCBkZWZpbmVkIiAlIGMpCiAgICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKQEAgLTEzMTQsNyArMTMxMCw3IEBACiAgICAgICAgIHNlbGYucGFyc2VDb25maWd1cmF0aW9uKCkKIAogICAgICAgICAjIElmIHdlIGFyZSB0b2xkIHRvIGRvIHRoZSBOb25lIHRhc2sgdGhlbiBxdWVyeSB0aGUgZGVmYXVsdCB0YXNrCi0gICAgICAgIGlmICh0YXNrID09IE5vbmUpOgorICAgICAgICBpZiB0YXNrIGlzIE5vbmU6CiAgICAgICAgICAgICB0YXNrID0gc2VsZi5jb25maWd1cmF0aW9uLmNtZAogICAgICAgICBpZiBub3QgdGFzay5zdGFydHN3aXRoKCJkb18iKToKICAgICAgICAgICAgIHRhc2sgPSAiZG9fJXMiICUgdGFzawpAQCAtMTQ1OCw3ICsxNDU0LDcgQEAKICAgICAgICAgc2VsZi5idWlsZFNldFZhcnMoKQogCiAgICAgICAgICMgSWYgd2UgYXJlIHRvbGQgdG8gZG8gdGhlIE5vbmUgdGFzayB0aGVuIHF1ZXJ5IHRoZSBkZWZhdWx0IHRhc2sKLSAgICAgICAgaWYgKHRhc2sgPT0gTm9uZSk6CisgICAgICAgIGlmIHRhc2sgaXMgTm9uZToKICAgICAgICAgICAgIHRhc2sgPSBzZWxmLmNvbmZpZ3VyYXRpb24uY21kCiAKICAgICAgICAgaWYgbm90IHRhc2suc3RhcnRzd2l0aCgiZG9fIik6CkBAIC0xNjY5LDYgKzE2NjUsOCBAQAogICAgICAgICBzZWxmLmNvbW1hbmQucmVzZXQoKQogICAgICAgICBzZWxmLmRhdGFidWlsZGVyLnJlc2V0KCkKICAgICAgICAgc2VsZi5kYXRhID0gc2VsZi5kYXRhYnVpbGRlci5kYXRhCisgICAgICAgIHNlbGYucGFyc2VjYWNoZV92YWxpZCA9IEZhbHNlCisgICAgICAgIHNlbGYuYmFzZWNvbmZpZ192YWxpZCA9IEZhbHNlCiAKIAogY2xhc3MgQ29va2VyRXhpdChiYi5ldmVudC5FdmVudCk6CkBAIC0xNjkxLDcgKzE2ODksNyBAQAogICAgIGRlZiBjYWxjX2JiZmlsZV9wcmlvcml0eSggc2VsZiwgZmlsZW5hbWUsIG1hdGNoZWQgPSBOb25lICk6CiAgICAgICAgIGZvciBfLCBfLCByZWdleCwgcHJpIGluIHNlbGYuYmJmaWxlX2NvbmZpZ19wcmlvcml0aWVzOgogICAgICAgICAgICAgaWYgcmVnZXgubWF0Y2goZmlsZW5hbWUpOgotICAgICAgICAgICAgICAgIGlmIG1hdGNoZWQgIT0gTm9uZToKKyAgICAgICAgICAgICAgICBpZiBtYXRjaGVkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICBpZiBub3QgcmVnZXggaW4gbWF0Y2hlZDoKICAgICAgICAgICAgICAgICAgICAgICAgIG1hdGNoZWQuYWRkKHJlZ2V4KQogICAgICAgICAgICAgICAgIHJldHVybiBwcmkKQEAgLTE3ODgsNyArMTc4Niw3IEBACiAgICAgICAgICAgICAgICAgIyBXaGVuIGNvbnN0cnVjdGluZyBhbiBvbGRlciBzdHlsZSBzaW5nbGUgcmVnZXgsIGl0J3MgcG9zc2libGUgZm9yIEJCTUFTSwogICAgICAgICAgICAgICAgICMgdG8gZW5kIHVwIGJlZ2lubmluZyB3aXRoICd8Jywgd2hpY2ggbWF0Y2hlcyBhbmQgbWFza3MgX2V2ZXJ5dGhpbmdfLgogICAgICAgICAgICAgICAgIGlmIG1hc2suc3RhcnRzd2l0aCgifCIpOgotICAgICAgICAgICAgICAgICAgICBjb2xsZWN0bG9nLndhcm4oIkJCTUFTSyBjb250YWlucyByZWd1bGFyIGV4cHJlc3Npb24gYmVnaW5uaW5nIHdpdGggJ3wnLCBmaXhpbmc6ICVzIiAlIG1hc2spCisgICAgICAgICAgICAgICAgICAgIGNvbGxlY3Rsb2cud2FybmluZygiQkJNQVNLIGNvbnRhaW5zIHJlZ3VsYXIgZXhwcmVzc2lvbiBiZWdpbm5pbmcgd2l0aCAnfCcsIGZpeGluZzogJXMiICUgbWFzaykKICAgICAgICAgICAgICAgICAgICAgbWFzayA9IG1hc2tbMTpdCiAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICByZS5jb21waWxlKG1hc2spCkBAIC0xOTQ0LDcgKzE5NDIsOCBAQAogICAgICAgICAgICAgICAgIGV4Y2VwdCBJbmRleEVycm9yOgogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYucGFyc2UoKmpvYikKLQorICAgICAgICAgICAgICAgICMgQ2xlYXIgdGhlIHNpZ2dlbiBjYWNoZSBhZnRlciBwYXJzaW5nIHRvIGNvbnRyb2wgbWVtb3J5IHVzYWdlLCBpdHMgaHVnZQorICAgICAgICAgICAgICAgIGJiLnBhcnNlLnNpZ2dlbi5wb3N0cGFyc2luZ19jbGVhbl9jYWNoZSgpCiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRzLnB1dChyZXN1bHQsIHRpbWVvdXQ9MC4yNSkKICAgICAgICAgICAgIGV4Y2VwdCBxdWV1ZS5GdWxsOgpAQCAtMTk1Miw2ICsxOTUxLDcgQEAKIAogICAgIGRlZiBwYXJzZShzZWxmLCBmaWxlbmFtZSwgYXBwZW5kcyk6CiAgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9yaWdmaWx0ZXIgPSBiYi5ldmVudC5Mb2dIYW5kbGVyLmZpbHRlcgogICAgICAgICAgICAgIyBSZWNvcmQgdGhlIGZpbGVuYW1lIHdlJ3JlIHBhcnNpbmcgaW50byBhbnkgZXZlbnRzIGdlbmVyYXRlZAogICAgICAgICAgICAgZGVmIHBhcnNlX2ZpbHRlcihzZWxmLCByZWNvcmQpOgogICAgICAgICAgICAgICAgIHJlY29yZC50YXNrcGlkID0gYmIuZXZlbnQud29ya2VyX3BpZApAQCAtMTk3NCw2ICsxOTc0LDggQEAKICAgICAgICAgIyBhIFN5c3RlbUV4aXQgZXZlbnQgZm9yIGV4YW1wbGUuCiAgICAgICAgIGV4Y2VwdCBCYXNlRXhjZXB0aW9uIGFzIGV4YzoKICAgICAgICAgICAgIHJldHVybiBUcnVlLCBQYXJzaW5nRmFpbHVyZShleGMsIGZpbGVuYW1lKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgYmIuZXZlbnQuTG9nSGFuZGxlci5maWx0ZXIgPSBvcmlnZmlsdGVyCiAKIGNsYXNzIENvb2tlclBhcnNlcihvYmplY3QpOgogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBjb29rZXIsIGZpbGVsaXN0LCBtYXNrZWQpOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9kYXRhLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9kYXRhLnB5CmluZGV4IDBkNzVkMGMuLmIwNjgzYzUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZGF0YS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2RhdGEucHkKQEAgLTc5LDcgKzc5LDcgQEAKICAgICByZXR1cm4gZC5leHBhbmQocywgdmFybmFtZSkKIAogZGVmIGV4cGFuZEtleXMoYWx0ZXJkYXRhLCByZWFkZGF0YSA9IE5vbmUpOgotICAgIGlmIHJlYWRkYXRhID09IE5vbmU6CisgICAgaWYgcmVhZGRhdGEgaXMgTm9uZToKICAgICAgICAgcmVhZGRhdGEgPSBhbHRlcmRhdGEKIAogICAgIHRvZG9saXN0ID0ge30KQEAgLTM2NSw3ICszNjUsNyBAQAogICAgICNiYi5ub3RlKCJWYXJpYWJsZSAlcyByZWZlcmVuY2VzICVzIGFuZCBjYWxscyAlcyIgJSAoa2V5LCBzdHIoZGVwcyksIHN0cihleGVjcykpKQogICAgICNkLnNldFZhckZsYWcoa2V5LCAidmFyZGVwcyIsIGRlcHMpCiAKLWRlZiBnZW5lcmF0ZV9kZXBlbmRlbmNpZXMoZCk6CitkZWYgZ2VuZXJhdGVfZGVwZW5kZW5jaWVzKGQsIHdoaXRlbGlzdCk6CiAKICAgICBrZXlzID0gc2V0KGtleSBmb3Iga2V5IGluIGQgaWYgbm90IGtleS5zdGFydHN3aXRoKCJfXyIpKQogICAgIHNoZWxsZGVwcyA9IHNldChrZXkgZm9yIGtleSBpbiBkLmdldFZhcigiX19leHBvcnRsaXN0IiwgRmFsc2UpIGlmIGQuZ2V0VmFyRmxhZyhrZXksICJleHBvcnQiLCBGYWxzZSkgYW5kIG5vdCBkLmdldFZhckZsYWcoa2V5LCAidW5leHBvcnQiLCBGYWxzZSkpCkBAIC0zODAsNyArMzgwLDcgQEAKICAgICAgICAgbmV3ZGVwcyA9IGRlcHNbdGFza10KICAgICAgICAgc2VlbiA9IHNldCgpCiAgICAgICAgIHdoaWxlIG5ld2RlcHM6Ci0gICAgICAgICAgICBuZXh0ZGVwcyA9IG5ld2RlcHMKKyAgICAgICAgICAgIG5leHRkZXBzID0gbmV3ZGVwcyAtIHdoaXRlbGlzdAogICAgICAgICAgICAgc2VlbiB8PSBuZXh0ZGVwcwogICAgICAgICAgICAgbmV3ZGVwcyA9IHNldCgpCiAgICAgICAgICAgICBmb3IgZGVwIGluIG5leHRkZXBzOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9kYXRhX3NtYXJ0LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9kYXRhX3NtYXJ0LnB5CmluZGV4IGRkNWM2MTguLjdmMWI2ZGMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZGF0YV9zbWFydC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2RhdGFfc21hcnQucHkKQEAgLTEwNywxMCArMTA3LDYgQEAKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgY29kZSA9IG1hdGNoLmdyb3VwKClbMzotMV0KIAotICAgICAgICAgICAgaWYgIl9yZW1vdGVfZGF0YSIgaW4gc2VsZi5kOgotICAgICAgICAgICAgICAgIGNvbm5lY3RvciA9IHNlbGYuZFsiX3JlbW90ZV9kYXRhIl0KLSAgICAgICAgICAgICAgICByZXR1cm4gY29ubmVjdG9yLmV4cGFuZFB5dGhvblJlZihzZWxmLnZhcm5hbWUsIGNvZGUsIHNlbGYuZCkKLQogICAgICAgICAgICAgaWYgc2VsZi52YXJuYW1lOgogICAgICAgICAgICAgICAgIHZhcm5hbWUgPSAnVmFyIDwlcz4nICUgc2VsZi52YXJuYW1lCiAgICAgICAgICAgICBlbHNlOgpAQCAtMjY4LDEyICsyNjQsNyBAQAogICAgICAgICAgICAgc2VsZi52YXJpYWJsZXNbbmV3dmFyXS5hcHBlbmQoaS5jb3B5KCkpCiAKICAgICBkZWYgdmFyaWFibGUoc2VsZiwgdmFyKToKLSAgICAgICAgcmVtb3RlX2Nvbm5lY3RvciA9IHNlbGYuZGF0YXJvb3QuZ2V0VmFyKCdfcmVtb3RlX2RhdGEnLCBGYWxzZSkKLSAgICAgICAgaWYgcmVtb3RlX2Nvbm5lY3RvcjoKLSAgICAgICAgICAgIHZhcmhpc3RvcnkgPSByZW1vdGVfY29ubmVjdG9yLmdldFZhckhpc3RvcnkodmFyKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdmFyaGlzdG9yeSA9IFtdCi0KKyAgICAgICAgdmFyaGlzdG9yeSA9IFtdCiAgICAgICAgIGlmIHZhciBpbiBzZWxmLnZhcmlhYmxlczoKICAgICAgICAgICAgIHZhcmhpc3RvcnkuZXh0ZW5kKHNlbGYudmFyaWFibGVzW3Zhcl0pCiAgICAgICAgIHJldHVybiB2YXJoaXN0b3J5CkBAIC0zMzgsMTEgKzMyOSwxMiBAQAogICAgICAgICAgICAgICAgIGxpbmVzLmFwcGVuZChsaW5lKQogICAgICAgICByZXR1cm4gbGluZXMKIAotICAgIGRlZiBnZXRfdmFyaWFibGVfaXRlbXNfZmlsZXMoc2VsZiwgdmFyLCBkKToKKyAgICBkZWYgZ2V0X3ZhcmlhYmxlX2l0ZW1zX2ZpbGVzKHNlbGYsIHZhcik6CiAgICAgICAgICIiIgogICAgICAgICBVc2UgdmFyaWFibGUgaGlzdG9yeSB0byBtYXAgaXRlbXMgYWRkZWQgdG8gYSBsaXN0IHZhcmlhYmxlIGFuZAogICAgICAgICB0aGUgZmlsZXMgaW4gd2hpY2ggdGhleSB3ZXJlIGFkZGVkLgogICAgICAgICAiIiIKKyAgICAgICAgZCA9IHNlbGYuZGF0YXJvb3QKICAgICAgICAgaGlzdG9yeSA9IHNlbGYudmFyaWFibGUodmFyKQogICAgICAgICBmaW5hbGl0ZW1zID0gKGQuZ2V0VmFyKHZhcikgb3IgJycpLnNwbGl0KCkKICAgICAgICAgZmlsZW1hcCA9IHt9CkBAIC00NzAsMTAgKzQ2Miw2IEBACiAgICAgICAgICAgICBpZiB2YXIgaW4gZGVzdDoKICAgICAgICAgICAgICAgICByZXR1cm4gZGVzdFt2YXJdLCBzZWxmLm92ZXJyaWRlZGF0YS5nZXQodmFyLCBOb25lKQogCi0gICAgICAgICAgICBpZiAiX3JlbW90ZV9kYXRhIiBpbiBkZXN0OgotICAgICAgICAgICAgICAgIGNvbm5lY3RvciA9IGRlc3RbIl9yZW1vdGVfZGF0YSJdWyJfY29udGVudCJdCi0gICAgICAgICAgICAgICAgcmV0dXJuIGNvbm5lY3Rvci5nZXRWYXIodmFyKQotCiAgICAgICAgICAgICBpZiAiX2RhdGEiIG5vdCBpbiBkZXN0OgogICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICBkZXN0ID0gZGVzdFsiX2RhdGEiXQpAQCAtNDk4LDEyICs0ODYsNiBAQAogICAgICAgICBpZiAncGFyc2luZycgaW4gbG9naW5mbzoKICAgICAgICAgICAgIHBhcnNpbmc9VHJ1ZQogCi0gICAgICAgIGlmICdfcmVtb3RlX2RhdGEnIGluIHNlbGYuZGljdDoKLSAgICAgICAgICAgIGNvbm5lY3RvciA9IHNlbGYuZGljdFsiX3JlbW90ZV9kYXRhIl1bIl9jb250ZW50Il0KLSAgICAgICAgICAgIHJlcyA9IGNvbm5lY3Rvci5zZXRWYXIodmFyLCB2YWx1ZSkKLSAgICAgICAgICAgIGlmIG5vdCByZXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCi0KICAgICAgICAgaWYgJ29wJyBub3QgaW4gbG9naW5mbzoKICAgICAgICAgICAgIGxvZ2luZm9bJ29wJ10gPSAic2V0IgogCkBAIC02MDcsMTEgKzU4OSw5IEBACiAgICAgICAgICIiIgogICAgICAgICBSZW5hbWUgdGhlIHZhcmlhYmxlIGtleSB0byBuZXdrZXkKICAgICAgICAgIiIiCi0gICAgICAgIGlmICdfcmVtb3RlX2RhdGEnIGluIHNlbGYuZGljdDoKLSAgICAgICAgICAgIGNvbm5lY3RvciA9IHNlbGYuZGljdFsiX3JlbW90ZV9kYXRhIl1bIl9jb250ZW50Il0KLSAgICAgICAgICAgIHJlcyA9IGNvbm5lY3Rvci5yZW5hbWVWYXIoa2V5LCBuZXdrZXkpCi0gICAgICAgICAgICBpZiBub3QgcmVzOgotICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICBpZiBrZXkgPT0gbmV3a2V5OgorICAgICAgICAgICAgYmIud2FybigiQ2FsbGluZyByZW5hbWVWYXIgd2l0aCBlcXVpdmFsZW50IGtleXMgKCVzKSBpcyBpbnZhbGlkIiAlIGtleSkKKyAgICAgICAgICAgIHJldHVybgogCiAgICAgICAgIHZhbCA9IHNlbGYuZ2V0VmFyKGtleSwgMCwgcGFyc2luZz1UcnVlKQogICAgICAgICBpZiB2YWwgaXMgbm90IE5vbmU6CkBAIC02NTgsMTEgKzYzOCw2IEBACiAKICAgICBkZWYgZGVsVmFyKHNlbGYsIHZhciwgKipsb2dpbmZvKToKICAgICAgICAgc2VsZi5leHBhbmRfY2FjaGUgPSB7fQotICAgICAgICBpZiAnX3JlbW90ZV9kYXRhJyBpbiBzZWxmLmRpY3Q6Ci0gICAgICAgICAgICBjb25uZWN0b3IgPSBzZWxmLmRpY3RbIl9yZW1vdGVfZGF0YSJdWyJfY29udGVudCJdCi0gICAgICAgICAgICByZXMgPSBjb25uZWN0b3IuZGVsVmFyKHZhcikKLSAgICAgICAgICAgIGlmIG5vdCByZXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgbG9naW5mb1snZGV0YWlsJ10gPSAiIgogICAgICAgICBsb2dpbmZvWydvcCddID0gJ2RlbCcKQEAgLTY5MCwxMSArNjY1LDYgQEAKIAogICAgIGRlZiBzZXRWYXJGbGFnKHNlbGYsIHZhciwgZmxhZywgdmFsdWUsICoqbG9naW5mbyk6CiAgICAgICAgIHNlbGYuZXhwYW5kX2NhY2hlID0ge30KLSAgICAgICAgaWYgJ19yZW1vdGVfZGF0YScgaW4gc2VsZi5kaWN0OgotICAgICAgICAgICAgY29ubmVjdG9yID0gc2VsZi5kaWN0WyJfcmVtb3RlX2RhdGEiXVsiX2NvbnRlbnQiXQotICAgICAgICAgICAgcmVzID0gY29ubmVjdG9yLnNldFZhckZsYWcodmFyLCBmbGFnLCB2YWx1ZSkKLSAgICAgICAgICAgIGlmIG5vdCByZXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgaWYgJ29wJyBub3QgaW4gbG9naW5mbzoKICAgICAgICAgICAgIGxvZ2luZm9bJ29wJ10gPSAic2V0IgpAQCAtODQ1LDExICs4MTUsNiBAQAogCiAgICAgZGVmIGRlbFZhckZsYWcoc2VsZiwgdmFyLCBmbGFnLCAqKmxvZ2luZm8pOgogICAgICAgICBzZWxmLmV4cGFuZF9jYWNoZSA9IHt9Ci0gICAgICAgIGlmICdfcmVtb3RlX2RhdGEnIGluIHNlbGYuZGljdDoKLSAgICAgICAgICAgIGNvbm5lY3RvciA9IHNlbGYuZGljdFsiX3JlbW90ZV9kYXRhIl1bIl9jb250ZW50Il0KLSAgICAgICAgICAgIHJlcyA9IGNvbm5lY3Rvci5kZWxWYXJGbGFnKHZhciwgZmxhZykKLSAgICAgICAgICAgIGlmIG5vdCByZXM6Ci0gICAgICAgICAgICAgICAgcmV0dXJuCiAKICAgICAgICAgbG9jYWxfdmFyLCBfID0gc2VsZi5fZmluZFZhcih2YXIpCiAgICAgICAgIGlmIG5vdCBsb2NhbF92YXI6CkBAIC05NjcsNyArOTMyLDcgQEAKIAogICAgIGRlZiBsb2NhbGtleXMoc2VsZik6CiAgICAgICAgIGZvciBrZXkgaW4gc2VsZi5kaWN0OgotICAgICAgICAgICAgaWYga2V5IG5vdCBpbiBbJ19kYXRhJywgJ19yZW1vdGVfZGF0YSddOgorICAgICAgICAgICAgaWYga2V5IG5vdCBpbiBbJ19kYXRhJ106CiAgICAgICAgICAgICAgICAgeWllbGQga2V5CiAKICAgICBkZWYgX19pdGVyX18oc2VsZik6CkBAIC05NzYsNyArOTQxLDcgQEAKICAgICAgICAgZGVmIGtleWxpc3QoZCk6ICAgICAgICAKICAgICAgICAgICAgIGtsaXN0ID0gc2V0KCkKICAgICAgICAgICAgIGZvciBrZXkgaW4gZDoKLSAgICAgICAgICAgICAgICBpZiBrZXkgaW4gWyJfZGF0YSIsICJfcmVtb3RlX2RhdGEiXToKKyAgICAgICAgICAgICAgICBpZiBrZXkgaW4gWyJfZGF0YSJdOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIGlmIGtleSBpbiBkZWxldGVkOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtOTkwLDEzICs5NTUsNiBAQAogICAgICAgICAgICAgaWYgIl9kYXRhIiBpbiBkOgogICAgICAgICAgICAgICAgIGtsaXN0IHw9IGtleWxpc3QoZFsiX2RhdGEiXSkKIAotICAgICAgICAgICAgaWYgIl9yZW1vdGVfZGF0YSIgaW4gZDoKLSAgICAgICAgICAgICAgICBjb25uZWN0b3IgPSBkWyJfcmVtb3RlX2RhdGEiXVsiX2NvbnRlbnQiXQotICAgICAgICAgICAgICAgIGZvciBrZXkgaW4gY29ubmVjdG9yLmdldEtleXMoKToKLSAgICAgICAgICAgICAgICAgICAgaWYga2V5IGluIGRlbGV0ZWQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgICAgICBrbGlzdC5hZGQoa2V5KQotCiAgICAgICAgICAgICByZXR1cm4ga2xpc3QKIAogICAgICAgICBzZWxmLm5lZWRfb3ZlcnJpZGVzKCkKQEAgLTEwNDIsNyArMTAwMCwxMCBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgIHZhbHVlID0gZC5nZXRWYXIoa2V5LCBGYWxzZSkgb3IgIiIKLSAgICAgICAgICAgIGRhdGEudXBkYXRlKHtrZXk6dmFsdWV9KQorICAgICAgICAgICAgaWYgdHlwZSh2YWx1ZSkgaXMgdHlwZShzZWxmKToKKyAgICAgICAgICAgICAgICBkYXRhLnVwZGF0ZSh7a2V5OnZhbHVlLmdldF9oYXNoKCl9KQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkYXRhLnVwZGF0ZSh7a2V5OnZhbHVlfSkKIAogICAgICAgICAgICAgdmFyZmxhZ3MgPSBkLmdldFZhckZsYWdzKGtleSwgaW50ZXJuYWxmbGFncyA9IFRydWUpCiAgICAgICAgICAgICBpZiBub3QgdmFyZmxhZ3M6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2V2ZW50LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9ldmVudC5weQppbmRleCBkNDQ2MjFlLi5kMTM1OWYwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2V2ZW50LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZXZlbnQucHkKQEAgLTEwLDggKzEwLDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1pbXBvcnQgb3MsIHN5cwotaW1wb3J0IHdhcm5pbmdzCitpbXBvcnQgc3lzCiBpbXBvcnQgcGlja2xlCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IGF0ZXhpdApAQCAtMzQ3LDcgKzM0Niw3IEBACiAKIGRlZiBnZXROYW1lKGUpOgogICAgICIiIlJldHVybnMgdGhlIG5hbWUgb2YgYSBjbGFzcyBvciBjbGFzcyBpbnN0YW5jZSIiIgotICAgIGlmIGdldGF0dHIoZSwgIl9fbmFtZV9fIiwgTm9uZSkgPT0gTm9uZToKKyAgICBpZiBnZXRhdHRyKGUsICJfX25hbWVfXyIsIE5vbmUpIGlzIE5vbmU6CiAgICAgICAgIHJldHVybiBlLl9fY2xhc3NfXy5fX25hbWVfXwogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBlLl9fbmFtZV9fCkBAIC01MDksNyArNTA4LDcgQEAKICAgICAgICAgZXh0cmEgPSAnJwogICAgICAgICBpZiBub3Qgc2VsZi5fcmVhc29uczoKICAgICAgICAgICAgIGlmIHNlbGYuX2Nsb3NlX21hdGNoZXM6Ci0gICAgICAgICAgICAgICAgZXh0cmEgPSAiLiBDbG9zZSBtYXRjaGVzOlxuICAlcyIgJSAnXG4gICcuam9pbihzZWxmLl9jbG9zZV9tYXRjaGVzKQorICAgICAgICAgICAgICAgIGV4dHJhID0gIi4gQ2xvc2UgbWF0Y2hlczpcbiAgJXMiICUgJ1xuICAnLmpvaW4oc29ydGVkKHNldChzZWxmLl9jbG9zZV9tYXRjaGVzKSkpCiAKICAgICAgICAgaWYgc2VsZi5fZGVwZW5kZWVzOgogICAgICAgICAgICAgbXNnID0gIk5vdGhpbmcgJXNQUk9WSURFUyAnJXMnIChidXQgJXMgJXNERVBFTkRTIG9uIG9yIG90aGVyd2lzZSByZXF1aXJlcyBpdCklcyIgJSAociwgc2VsZi5faXRlbSwgIiwgIi5qb2luKHNlbGYuX2RlcGVuZGVlcyksIHIsIGV4dHJhKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvX19pbml0X18ucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9fX2luaXRfXy5weQppbmRleCAwN2RlNmMyLi5lYjExMmYwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9fX2luaXRfXy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9fX2luaXRfXy5weQpAQCAtMzMsNiArMzMsOSBAQAogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiQml0QmFrZS5GZXRjaGVyIikKIAorQ0hFQ0tTVU1fTElTVCA9IFsgIm1kNSIsICJzaGEyNTYiLCAic2hhMSIsICJzaGEzODQiLCAic2hhNTEyIiBdCitTSE9XTl9DSEVDS1NVTV9MSVNUID0gWyJzaGEyNTYiXQorCiBjbGFzcyBCQkZldGNoRXhjZXB0aW9uKEV4Y2VwdGlvbik6CiAgICAgIiIiQ2xhc3MgYWxsIGZldGNoIGV4Y2VwdGlvbnMgaW5oZXJpdCBmcm9tIiIiCiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1lc3NhZ2UpOgpAQCAtMTMxLDEwICsxMzQsOSBAQAogICAgICAgICBFeGNlcHRpb24uX19pbml0X18oc2VsZikKIAogY2xhc3MgTWlzc2luZ0NoZWNrc3VtRXZlbnQoYmIuZXZlbnQuRXZlbnQpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB1cmwsIG1kNXN1bSwgc2hhMjU2c3VtKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdXJsLCAqKmNoZWNrc3Vtcyk6CiAgICAgICAgIHNlbGYudXJsID0gdXJsCi0gICAgICAgIHNlbGYuY2hlY2tzdW1zID0geydtZDVzdW0nOiBtZDVzdW0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICdzaGEyNTZzdW0nOiBzaGEyNTZzdW19CisgICAgICAgIHNlbGYuY2hlY2tzdW1zID0gY2hlY2tzdW1zCiAgICAgICAgIGJiLmV2ZW50LkV2ZW50Ll9faW5pdF9fKHNlbGYpCiAKIApAQCAtNDg0LDE3ICs0ODYsMjIgQEAKICAgICBDYWxsZWQgdG8gaW5pdGlhbGl6ZSB0aGUgZmV0Y2hlcnMgb25jZSB0aGUgY29uZmlndXJhdGlvbiBkYXRhIGlzIGtub3duLgogICAgIENhbGxzIGJlZm9yZSB0aGlzIG11c3Qgbm90IGhpdCB0aGUgY2FjaGUuCiAgICAgIiIiCisKKyAgICByZXZzID0gYmIucGVyc2lzdF9kYXRhLnBlcnNpc3QoJ0JCX1VSSV9IRUFEUkVWUycsIGQpCisgICAgdHJ5OgorICAgICAgICAjIGZldGNoZXJfaW5pdCBpcyBjYWxsZWQgbXVsdGlwbGUgdGltZXMsIHNvIG1ha2Ugc3VyZSB3ZSBvbmx5IHNhdmUgdGhlCisgICAgICAgICMgcmV2cyB0aGUgZmlyc3QgdGltZSBpdCBpcyBjYWxsZWQuCisgICAgICAgIGlmIG5vdCBiYi5mZXRjaDIuc2F2ZWRfaGVhZHJldnM6CisgICAgICAgICAgICBiYi5mZXRjaDIuc2F2ZWRfaGVhZHJldnMgPSBkaWN0KHJldnMpCisgICAgZXhjZXB0OgorICAgICAgICBwYXNzCisKICAgICAjIFdoZW4gdG8gZHJvcCBTQ00gaGVhZCByZXZpc2lvbnMgY29udHJvbGxlZCBieSB1c2VyIHBvbGljeQogICAgIHNyY3Jldl9wb2xpY3kgPSBkLmdldFZhcignQkJfU1JDUkVWX1BPTElDWScpIG9yICJjbGVhciIKICAgICBpZiBzcmNyZXZfcG9saWN5ID09ICJjYWNoZSI6CiAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiS2VlcGluZyBTUkNSRVYgY2FjaGUgZHVlIHRvIGNhY2hlIHBvbGljeSBvZjogJXMiLCBzcmNyZXZfcG9saWN5KQogICAgIGVsaWYgc3JjcmV2X3BvbGljeSA9PSAiY2xlYXIiOgogICAgICAgICBsb2dnZXIuZGVidWcoMSwgIkNsZWFyaW5nIFNSQ1JFViBjYWNoZSBkdWUgdG8gY2FjaGUgcG9saWN5IG9mOiAlcyIsIHNyY3Jldl9wb2xpY3kpCi0gICAgICAgIHJldnMgPSBiYi5wZXJzaXN0X2RhdGEucGVyc2lzdCgnQkJfVVJJX0hFQURSRVZTJywgZCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgYmIuZmV0Y2gyLnNhdmVkX2hlYWRyZXZzID0gcmV2cy5pdGVtcygpCi0gICAgICAgIGV4Y2VwdDoKLSAgICAgICAgICAgIHBhc3MKICAgICAgICAgcmV2cy5jbGVhcigpCiAgICAgZWxzZToKICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcigiSW52YWxpZCBTUkNSRVYgY2FjaGUgcG9saWN5IG9mOiAlcyIgJSBzcmNyZXZfcG9saWN5KQpAQCAtNTEzLDIyICs1MjAsMTIgQEAKIAogZGVmIGZldGNoZXJfY29tcGFyZV9yZXZpc2lvbnMoZCk6CiAgICAgIiIiCi0gICAgQ29tcGFyZSB0aGUgcmV2aXNpb25zIGluIHRoZSBwZXJzaXN0YW50IGNhY2hlIHdpdGggY3VycmVudCB2YWx1ZXMgYW5kCi0gICAgcmV0dXJuIHRydWUvZmFsc2Ugb24gd2hldGhlciB0aGV5J3ZlIGNoYW5nZWQuCisgICAgQ29tcGFyZSB0aGUgcmV2aXNpb25zIGluIHRoZSBwZXJzaXN0ZW50IGNhY2hlIHdpdGggdGhlIHNhdmVkIHZhbHVlcyBmcm9tCisgICAgd2hlbiBiaXRiYWtlIHdhcyBzdGFydGVkIGFuZCByZXR1cm4gdHJ1ZSBpZiB0aGV5IGhhdmUgY2hhbmdlZC4KICAgICAiIiIKIAotICAgIGRhdGEgPSBiYi5wZXJzaXN0X2RhdGEucGVyc2lzdCgnQkJfVVJJX0hFQURSRVZTJywgZCkuaXRlbXMoKQotICAgIGRhdGEyID0gYmIuZmV0Y2gyLnNhdmVkX2hlYWRyZXZzCi0KLSAgICBjaGFuZ2VkID0gRmFsc2UKLSAgICBmb3Iga2V5IGluIGRhdGE6Ci0gICAgICAgIGlmIGtleSBub3QgaW4gZGF0YTIgb3IgZGF0YTJba2V5XSAhPSBkYXRhW2tleV06Ci0gICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIiVzIGNoYW5nZWQiLCBrZXkpCi0gICAgICAgICAgICBjaGFuZ2VkID0gVHJ1ZQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiJXMgZGlkIG5vdCBjaGFuZ2UiLCBrZXkpCi0gICAgcmV0dXJuIEZhbHNlCisgICAgaGVhZHJldnMgPSBkaWN0KGJiLnBlcnNpc3RfZGF0YS5wZXJzaXN0KCdCQl9VUklfSEVBRFJFVlMnLCBkKSkKKyAgICByZXR1cm4gaGVhZHJldnMgIT0gYmIuZmV0Y2gyLnNhdmVkX2hlYWRyZXZzCiAKIGRlZiBtaXJyb3JfZnJvbV9zdHJpbmcoZGF0YSk6CiAgICAgbWlycm9ycyA9IChkYXRhIG9yICIiKS5yZXBsYWNlKCdcXG4nLCcgJykuc3BsaXQoKQpAQCAtNTUyLDcxICs1NDksODQgQEAKICAgICBkb3dubG9hZGluZy4gU2VlIGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NTU3MS4KICAgICAiIiIKIAotICAgIF9NRDVfS0VZID0gIm1kNSIKLSAgICBfU0hBMjU2X0tFWSA9ICJzaGEyNTYiCi0KICAgICBpZiB1ZC5pZ25vcmVfY2hlY2tzdW1zIG9yIG5vdCB1ZC5tZXRob2Quc3VwcG9ydHNfY2hlY2tzdW0odWQpOgogICAgICAgICByZXR1cm4ge30KIAotICAgIGlmIF9NRDVfS0VZIGluIHByZWNvbXB1dGVkOgotICAgICAgICBtZDVkYXRhID0gcHJlY29tcHV0ZWRbX01ENV9LRVldCi0gICAgZWxzZToKLSAgICAgICAgbWQ1ZGF0YSA9IGJiLnV0aWxzLm1kNV9maWxlKHVkLmxvY2FscGF0aCkKKyAgICBkZWYgY29tcHV0ZV9jaGVja3N1bV9pbmZvKGNoZWNrc3VtX2lkKToKKyAgICAgICAgY2hlY2tzdW1fbmFtZSA9IGdldGF0dHIodWQsICIlc19uYW1lIiAlIGNoZWNrc3VtX2lkKQogCi0gICAgaWYgX1NIQTI1Nl9LRVkgaW4gcHJlY29tcHV0ZWQ6Ci0gICAgICAgIHNoYTI1NmRhdGEgPSBwcmVjb21wdXRlZFtfU0hBMjU2X0tFWV0KLSAgICBlbHNlOgotICAgICAgICBzaGEyNTZkYXRhID0gYmIudXRpbHMuc2hhMjU2X2ZpbGUodWQubG9jYWxwYXRoKQorICAgICAgICBpZiBjaGVja3N1bV9pZCBpbiBwcmVjb21wdXRlZDoKKyAgICAgICAgICAgIGNoZWNrc3VtX2RhdGEgPSBwcmVjb21wdXRlZFtjaGVja3N1bV9pZF0KKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNoZWNrc3VtX2RhdGEgPSBnZXRhdHRyKGJiLnV0aWxzLCAiJXNfZmlsZSIgJSBjaGVja3N1bV9pZCkodWQubG9jYWxwYXRoKQogCi0gICAgaWYgdWQubWV0aG9kLnJlY29tbWVuZHNfY2hlY2tzdW0odWQpIGFuZCBub3QgdWQubWQ1X2V4cGVjdGVkIGFuZCBub3QgdWQuc2hhMjU2X2V4cGVjdGVkOgotICAgICAgICAjIElmIHN0cmljdCBjaGVja2luZyBlbmFibGVkIGFuZCBuZWl0aGVyIHN1bSBkZWZpbmVkLCByYWlzZSBlcnJvcgorICAgICAgICBjaGVja3N1bV9leHBlY3RlZCA9IGdldGF0dHIodWQsICIlc19leHBlY3RlZCIgJSBjaGVja3N1bV9pZCkKKworICAgICAgICByZXR1cm4geworICAgICAgICAgICAgImlkIjogY2hlY2tzdW1faWQsCisgICAgICAgICAgICAibmFtZSI6IGNoZWNrc3VtX25hbWUsCisgICAgICAgICAgICAiZGF0YSI6IGNoZWNrc3VtX2RhdGEsCisgICAgICAgICAgICAiZXhwZWN0ZWQiOiBjaGVja3N1bV9leHBlY3RlZAorICAgICAgICB9CisKKyAgICBjaGVja3N1bV9pbmZvcyA9IFtdCisgICAgZm9yIGNoZWNrc3VtX2lkIGluIENIRUNLU1VNX0xJU1Q6CisgICAgICAgIGNoZWNrc3VtX2luZm9zLmFwcGVuZChjb21wdXRlX2NoZWNrc3VtX2luZm8oY2hlY2tzdW1faWQpKQorCisgICAgY2hlY2tzdW1fZGljdCA9IHtjaVsiaWQiXSA6IGNpWyJkYXRhIl0gZm9yIGNpIGluIGNoZWNrc3VtX2luZm9zfQorICAgIGNoZWNrc3VtX2V2ZW50ID0geyIlc3N1bSIgJSBjaVsiaWQiXSA6IGNpWyJkYXRhIl0gZm9yIGNpIGluIGNoZWNrc3VtX2luZm9zfQorCisgICAgZm9yIGNpIGluIGNoZWNrc3VtX2luZm9zOgorICAgICAgICBpZiBjaVsiaWQiXSBpbiBTSE9XTl9DSEVDS1NVTV9MSVNUOgorICAgICAgICAgICAgY2hlY2tzdW1fbGluZXMgPSBbIlNSQ19VUklbJXNdID0gXCIlc1wiIiAlIChjaVsibmFtZSJdLCBjaVsiZGF0YSJdKV0KKworICAgICMgSWYgbm8gY2hlY2tzdW0gaGFzIGJlZW4gcHJvdmlkZWQKKyAgICBpZiB1ZC5tZXRob2QucmVjb21tZW5kc19jaGVja3N1bSh1ZCkgYW5kIGFsbChjaVsiZXhwZWN0ZWQiXSBpcyBOb25lIGZvciBjaSBpbiBjaGVja3N1bV9pbmZvcyk6CisgICAgICAgIG1lc3NhZ2VzID0gW10KICAgICAgICAgc3RyaWN0ID0gZC5nZXRWYXIoIkJCX1NUUklDVF9DSEVDS1NVTSIpIG9yICIwIgotICAgICAgICBpZiBzdHJpY3QgPT0gIjEiOgotICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdObyBjaGVja3N1bSBzcGVjaWZpZWQgZm9yICVzLCBwbGVhc2UgYWRkIGF0IGxlYXN0IG9uZSB0byB0aGUgcmVjaXBlOlxuJwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSVslc10gPSAiJXMiXG5TUkNfVVJJWyVzXSA9ICIlcyInICUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVkLmxvY2FscGF0aCwgdWQubWQ1X25hbWUsIG1kNWRhdGEsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1ZC5zaGEyNTZfbmFtZSwgc2hhMjU2ZGF0YSkpCi0gICAgICAgICAgICByYWlzZSBOb0NoZWNrc3VtRXJyb3IoJ01pc3NpbmcgU1JDX1VSSSBjaGVja3N1bScsIHVkLnVybCkKIAotICAgICAgICBiYi5ldmVudC5maXJlKE1pc3NpbmdDaGVja3N1bUV2ZW50KHVkLnVybCwgbWQ1ZGF0YSwgc2hhMjU2ZGF0YSksIGQpCisgICAgICAgICMgSWYgc3RyaWN0IGNoZWNraW5nIGVuYWJsZWQgYW5kIG5laXRoZXIgc3VtIGRlZmluZWQsIHJhaXNlIGVycm9yCisgICAgICAgIGlmIHN0cmljdCA9PSAiMSI6CisgICAgICAgICAgICBtZXNzYWdlcy5hcHBlbmQoIk5vIGNoZWNrc3VtIHNwZWNpZmllZCBmb3IgJyVzJywgcGxlYXNlIGFkZCBhdCAiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAibGVhc3Qgb25lIHRvIHRoZSByZWNpcGU6IiAlIHVkLmxvY2FscGF0aCkKKyAgICAgICAgICAgIG1lc3NhZ2VzLmV4dGVuZChjaGVja3N1bV9saW5lcykKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiXG4iLmpvaW4obWVzc2FnZXMpKQorICAgICAgICAgICAgcmFpc2UgTm9DaGVja3N1bUVycm9yKCJNaXNzaW5nIFNSQ19VUkkgY2hlY2tzdW0iLCB1ZC51cmwpCisKKyAgICAgICAgYmIuZXZlbnQuZmlyZShNaXNzaW5nQ2hlY2tzdW1FdmVudCh1ZC51cmwsICoqY2hlY2tzdW1fZXZlbnQpLCBkKQogCiAgICAgICAgIGlmIHN0cmljdCA9PSAiaWdub3JlIjoKLSAgICAgICAgICAgIHJldHVybiB7Ci0gICAgICAgICAgICAgICAgX01ENV9LRVk6IG1kNWRhdGEsCi0gICAgICAgICAgICAgICAgX1NIQTI1Nl9LRVk6IHNoYTI1NmRhdGEKLSAgICAgICAgICAgIH0KKyAgICAgICAgICAgIHJldHVybiBjaGVja3N1bV9kaWN0CiAKICAgICAgICAgIyBMb2cgbWlzc2luZyBzdW1zIHNvIHVzZXIgY2FuIG1vcmUgZWFzaWx5IGFkZCB0aGVtCi0gICAgICAgIGxvZ2dlci53YXJuaW5nKCdNaXNzaW5nIG1kNSBTUkNfVVJJIGNoZWNrc3VtIGZvciAlcywgY29uc2lkZXIgYWRkaW5nIHRvIHRoZSByZWNpcGU6XG4nCi0gICAgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJWyVzXSA9ICIlcyInLAotICAgICAgICAgICAgICAgICAgICAgICB1ZC5sb2NhbHBhdGgsIHVkLm1kNV9uYW1lLCBtZDVkYXRhKQotICAgICAgICBsb2dnZXIud2FybmluZygnTWlzc2luZyBzaGEyNTYgU1JDX1VSSSBjaGVja3N1bSBmb3IgJXMsIGNvbnNpZGVyIGFkZGluZyB0byB0aGUgcmVjaXBlOlxuJwotICAgICAgICAgICAgICAgICAgICAgICAnU1JDX1VSSVslc10gPSAiJXMiJywKLSAgICAgICAgICAgICAgICAgICAgICAgdWQubG9jYWxwYXRoLCB1ZC5zaGEyNTZfbmFtZSwgc2hhMjU2ZGF0YSkKKyAgICAgICAgbWVzc2FnZXMuYXBwZW5kKCJNaXNzaW5nIGNoZWNrc3VtIGZvciAnJXMnLCBjb25zaWRlciBhZGRpbmcgYXQgIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAibGVhc3Qgb25lIHRvIHRoZSByZWNpcGU6IiAlIHVkLmxvY2FscGF0aCkKKyAgICAgICAgbWVzc2FnZXMuZXh0ZW5kKGNoZWNrc3VtX2xpbmVzKQorICAgICAgICBsb2dnZXIud2FybmluZygiXG4iLmpvaW4obWVzc2FnZXMpKQogCiAgICAgIyBXZSB3YW50IHRvIGFsZXJ0IHRoZSB1c2VyIGlmIGEgY2hlY2tzdW0gaXMgZGVmaW5lZCBpbiB0aGUgcmVjaXBlIGJ1dAogICAgICMgaXQgZG9lcyBub3QgbWF0Y2guCi0gICAgbXNnID0gIiIKLSAgICBtaXNtYXRjaCA9IEZhbHNlCi0gICAgaWYgdWQubWQ1X2V4cGVjdGVkIGFuZCB1ZC5tZDVfZXhwZWN0ZWQgIT0gbWQ1ZGF0YToKLSAgICAgICAgbXNnID0gbXNnICsgIlxuRmlsZTogJyVzJyBoYXMgJXMgY2hlY2tzdW0gJXMgd2hlbiAlcyB3YXMgZXhwZWN0ZWQiICUgKHVkLmxvY2FscGF0aCwgJ21kNScsIG1kNWRhdGEsIHVkLm1kNV9leHBlY3RlZCkKLSAgICAgICAgbWlzbWF0Y2ggPSBUcnVlOworICAgIG1lc3NhZ2VzID0gW10KKyAgICBtZXNzYWdlcy5hcHBlbmQoIkNoZWNrc3VtIG1pc21hdGNoISIpCisgICAgYmFkX2NoZWNrc3VtID0gTm9uZQogCi0gICAgaWYgdWQuc2hhMjU2X2V4cGVjdGVkIGFuZCB1ZC5zaGEyNTZfZXhwZWN0ZWQgIT0gc2hhMjU2ZGF0YToKLSAgICAgICAgbXNnID0gbXNnICsgIlxuRmlsZTogJyVzJyBoYXMgJXMgY2hlY2tzdW0gJXMgd2hlbiAlcyB3YXMgZXhwZWN0ZWQiICUgKHVkLmxvY2FscGF0aCwgJ3NoYTI1NicsIHNoYTI1NmRhdGEsIHVkLnNoYTI1Nl9leHBlY3RlZCkKLSAgICAgICAgbWlzbWF0Y2ggPSBUcnVlOworICAgIGZvciBjaSBpbiBjaGVja3N1bV9pbmZvczoKKyAgICAgICAgaWYgY2lbImV4cGVjdGVkIl0gYW5kIGNpWyJleHBlY3RlZCJdICE9IGNpWyJkYXRhIl06CisgICAgICAgICAgICBtZXNzYWdlcy5hcHBlbmQoIkZpbGU6ICclcycgaGFzICVzIGNoZWNrc3VtICVzIHdoZW4gJXMgd2FzICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJleHBlY3RlZCIgJSAodWQubG9jYWxwYXRoLCBjaVsiaWQiXSwgY2lbImRhdGEiXSwgY2lbImV4cGVjdGVkIl0pKQorICAgICAgICAgICAgYmFkX2NoZWNrc3VtID0gY2lbImRhdGEiXQogCi0gICAgaWYgbWlzbWF0Y2g6Ci0gICAgICAgIG1zZyA9IG1zZyArICdcbklmIHRoaXMgY2hhbmdlIGlzIGV4cGVjdGVkIChlLmcuIHlvdSBoYXZlIHVwZ3JhZGVkIHRvIGEgbmV3IHZlcnNpb24gd2l0aG91dCB1cGRhdGluZyB0aGUgY2hlY2tzdW1zKSB0aGVuIHlvdSBjYW4gdXNlIHRoZXNlIGxpbmVzIHdpdGhpbiB0aGUgcmVjaXBlOlxuU1JDX1VSSVslc10gPSAiJXMiXG5TUkNfVVJJWyVzXSA9ICIlcyJcbk90aGVyd2lzZSB5b3Ugc2hvdWxkIHJldHJ5IHRoZSBkb3dubG9hZCBhbmQvb3IgY2hlY2sgd2l0aCB1cHN0cmVhbSB0byBkZXRlcm1pbmUgaWYgdGhlIGZpbGUgaGFzIGJlY29tZSBjb3JydXB0ZWQgb3Igb3RoZXJ3aXNlIHVuZXhwZWN0ZWRseSBtb2RpZmllZC5cbicgJSAodWQubWQ1X25hbWUsIG1kNWRhdGEsIHVkLnNoYTI1Nl9uYW1lLCBzaGEyNTZkYXRhKQorICAgIGlmIGJhZF9jaGVja3N1bToKKyAgICAgICAgbWVzc2FnZXMuYXBwZW5kKCJJZiB0aGlzIGNoYW5nZSBpcyBleHBlY3RlZCAoZS5nLiB5b3UgaGF2ZSB1cGdyYWRlZCAiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICJ0byBhIG5ldyB2ZXJzaW9uIHdpdGhvdXQgdXBkYXRpbmcgdGhlIGNoZWNrc3VtcykgIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAidGhlbiB5b3UgY2FuIHVzZSB0aGVzZSBsaW5lcyB3aXRoaW4gdGhlIHJlY2lwZToiKQorICAgICAgICBtZXNzYWdlcy5leHRlbmQoY2hlY2tzdW1fbGluZXMpCisgICAgICAgIG1lc3NhZ2VzLmFwcGVuZCgiT3RoZXJ3aXNlIHlvdSBzaG91bGQgcmV0cnkgdGhlIGRvd25sb2FkIGFuZC9vciAiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICJjaGVjayB3aXRoIHVwc3RyZWFtIHRvIGRldGVybWluZSBpZiB0aGUgZmlsZSBoYXMgIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAiYmVjb21lIGNvcnJ1cHRlZCBvciBvdGhlcndpc2UgdW5leHBlY3RlZGx5IG1vZGlmaWVkLiIpCisgICAgICAgIHJhaXNlIENoZWNrc3VtRXJyb3IoIlxuIi5qb2luKG1lc3NhZ2VzKSwgdWQudXJsLCBiYWRfY2hlY2tzdW0pCiAKLSAgICBpZiBsZW4obXNnKToKLSAgICAgICAgcmFpc2UgQ2hlY2tzdW1FcnJvcignQ2hlY2tzdW0gbWlzbWF0Y2ghJXMnICUgbXNnLCB1ZC51cmwsIG1kNWRhdGEpCi0KLSAgICByZXR1cm4gewotICAgICAgICBfTUQ1X0tFWTogbWQ1ZGF0YSwKLSAgICAgICAgX1NIQTI1Nl9LRVk6IHNoYTI1NmRhdGEKLSAgICB9Ci0KKyAgICByZXR1cm4gY2hlY2tzdW1fZGljdAogCiBkZWYgdmVyaWZ5X2RvbmVzdGFtcCh1ZCwgZCwgb3JpZ3VkPU5vbmUpOgogICAgICIiIgpAQCAtMTA4MSw3ICsxMDkxLDcgQEAKIAogICAgIGZvciBpbmRleCwgdXJpIGluIGVudW1lcmF0ZSh1cmlzKToKICAgICAgICAgcmV0ID0gdHJ5X21pcnJvcl91cmwoZmV0Y2gsIG9yaWd1ZCwgdWRzW2luZGV4XSwgbGQsIGNoZWNrKQotICAgICAgICBpZiByZXQgIT0gRmFsc2U6CisgICAgICAgIGlmIHJldDoKICAgICAgICAgICAgIHJldHVybiByZXQKICAgICByZXR1cm4gTm9uZQogCkBAIC0xMTk3LDE0ICsxMjA3LDE0IEBACiAKICAgICByZXR1cm4gIiAiLmpvaW4oZmlsZWxpc3QpCiAKLWRlZiBnZXRfZmlsZV9jaGVja3N1bXMoZmlsZWxpc3QsIHBuKToKK2RlZiBnZXRfZmlsZV9jaGVja3N1bXMoZmlsZWxpc3QsIHBuLCBsb2NhbGRpcnNleGNsdWRlKToKICAgICAiIiJHZXQgYSBsaXN0IG9mIHRoZSBjaGVja3N1bXMgZm9yIGEgbGlzdCBvZiBsb2NhbCBmaWxlcwogCiAgICAgUmV0dXJucyB0aGUgY2hlY2tzdW1zIGZvciBhIGxpc3Qgb2YgbG9jYWwgZmlsZXMsIGNhY2hpbmcgdGhlIHJlc3VsdHMgYXMKICAgICBpdCBwcm9jZWVkcwogCiAgICAgIiIiCi0gICAgcmV0dXJuIF9jaGVja3N1bV9jYWNoZS5nZXRfY2hlY2tzdW1zKGZpbGVsaXN0LCBwbikKKyAgICByZXR1cm4gX2NoZWNrc3VtX2NhY2hlLmdldF9jaGVja3N1bXMoZmlsZWxpc3QsIHBuLCBsb2NhbGRpcnNleGNsdWRlKQogCiAKIGNsYXNzIEZldGNoRGF0YShvYmplY3QpOgpAQCAtMTIzMCwyNCArMTI0MCwyNiBAQAogICAgICAgICAgICAgc2VsZi5wc3dkID0gc2VsZi5wYXJtWyJwc3dkIl0KICAgICAgICAgc2VsZi5zZXR1cCA9IEZhbHNlCiAKLSAgICAgICAgaWYgIm5hbWUiIGluIHNlbGYucGFybToKLSAgICAgICAgICAgIHNlbGYubWQ1X25hbWUgPSAiJXMubWQ1c3VtIiAlIHNlbGYucGFybVsibmFtZSJdCi0gICAgICAgICAgICBzZWxmLnNoYTI1Nl9uYW1lID0gIiVzLnNoYTI1NnN1bSIgJSBzZWxmLnBhcm1bIm5hbWUiXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5tZDVfbmFtZSA9ICJtZDVzdW0iCi0gICAgICAgICAgICBzZWxmLnNoYTI1Nl9uYW1lID0gInNoYTI1NnN1bSIKLSAgICAgICAgaWYgc2VsZi5tZDVfbmFtZSBpbiBzZWxmLnBhcm06Ci0gICAgICAgICAgICBzZWxmLm1kNV9leHBlY3RlZCA9IHNlbGYucGFybVtzZWxmLm1kNV9uYW1lXQotICAgICAgICBlbGlmIHNlbGYudHlwZSBub3QgaW4gWyJodHRwIiwgImh0dHBzIiwgImZ0cCIsICJmdHBzIiwgInNmdHAiLCAiczMiXToKLSAgICAgICAgICAgIHNlbGYubWQ1X2V4cGVjdGVkID0gTm9uZQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgc2VsZi5tZDVfZXhwZWN0ZWQgPSBkLmdldFZhckZsYWcoIlNSQ19VUkkiLCBzZWxmLm1kNV9uYW1lKQotICAgICAgICBpZiBzZWxmLnNoYTI1Nl9uYW1lIGluIHNlbGYucGFybToKLSAgICAgICAgICAgIHNlbGYuc2hhMjU2X2V4cGVjdGVkID0gc2VsZi5wYXJtW3NlbGYuc2hhMjU2X25hbWVdCi0gICAgICAgIGVsaWYgc2VsZi50eXBlIG5vdCBpbiBbImh0dHAiLCAiaHR0cHMiLCAiZnRwIiwgImZ0cHMiLCAic2Z0cCIsICJzMyJdOgotICAgICAgICAgICAgc2VsZi5zaGEyNTZfZXhwZWN0ZWQgPSBOb25lCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLnNoYTI1Nl9leHBlY3RlZCA9IGQuZ2V0VmFyRmxhZygiU1JDX1VSSSIsIHNlbGYuc2hhMjU2X25hbWUpCisgICAgICAgIGRlZiBjb25maWd1cmVfY2hlY2tzdW0oY2hlY2tzdW1faWQpOgorICAgICAgICAgICAgaWYgIm5hbWUiIGluIHNlbGYucGFybToKKyAgICAgICAgICAgICAgICBjaGVja3N1bV9uYW1lID0gIiVzLiVzc3VtIiAlIChzZWxmLnBhcm1bIm5hbWUiXSwgY2hlY2tzdW1faWQpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNoZWNrc3VtX25hbWUgPSAiJXNzdW0iICUgY2hlY2tzdW1faWQKKworICAgICAgICAgICAgc2V0YXR0cihzZWxmLCAiJXNfbmFtZSIgJSBjaGVja3N1bV9pZCwgY2hlY2tzdW1fbmFtZSkKKworICAgICAgICAgICAgaWYgY2hlY2tzdW1fbmFtZSBpbiBzZWxmLnBhcm06CisgICAgICAgICAgICAgICAgY2hlY2tzdW1fZXhwZWN0ZWQgPSBzZWxmLnBhcm1bY2hlY2tzdW1fbmFtZV0KKyAgICAgICAgICAgIGVsaWYgc2VsZi50eXBlIG5vdCBpbiBbImh0dHAiLCAiaHR0cHMiLCAiZnRwIiwgImZ0cHMiLCAic2Z0cCIsICJzMyJdOgorICAgICAgICAgICAgICAgIGNoZWNrc3VtX2V4cGVjdGVkID0gTm9uZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBjaGVja3N1bV9leHBlY3RlZCA9IGQuZ2V0VmFyRmxhZygiU1JDX1VSSSIsIGNoZWNrc3VtX25hbWUpCisKKyAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgIiVzX2V4cGVjdGVkIiAlIGNoZWNrc3VtX2lkLCBjaGVja3N1bV9leHBlY3RlZCkKKworICAgICAgICBmb3IgY2hlY2tzdW1faWQgaW4gQ0hFQ0tTVU1fTElTVDoKKyAgICAgICAgICAgIGNvbmZpZ3VyZV9jaGVja3N1bShjaGVja3N1bV9pZCkKKwogICAgICAgICBzZWxmLmlnbm9yZV9jaGVja3N1bXMgPSBGYWxzZQogCiAgICAgICAgIHNlbGYubmFtZXMgPSBzZWxmLnBhcm0uZ2V0KCJuYW1lIiwnZGVmYXVsdCcpLnNwbGl0KCcsJykKQEAgLTEzNTEsNyArMTM2Myw3IEBACiAgICAgICAgICIiIgogCiAgICAgICAgICMgV2UgY2Fubm90IGNvbXB1dGUgY2hlY2tzdW1zIGZvciBkaXJlY3RvcmllcwotICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHVybGRhdGEubG9jYWxwYXRoKSA9PSBUcnVlOgorICAgICAgICBpZiBvcy5wYXRoLmlzZGlyKHVybGRhdGEubG9jYWxwYXRoKToKICAgICAgICAgICAgIHJldHVybiBGYWxzZQogICAgICAgICBpZiB1cmxkYXRhLmxvY2FscGF0aC5maW5kKCIqIikgIT0gLTE6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKQEAgLTEzNjUsNiArMTM3NywxOCBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKKyAgICBkZWYgdmVyaWZ5X2RvbmVzdGFtcChzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIgorICAgICAgICBWZXJpZnkgdGhlIGRvbmVzdGFtcCBmaWxlCisgICAgICAgICIiIgorICAgICAgICByZXR1cm4gdmVyaWZ5X2RvbmVzdGFtcCh1ZCwgZCkKKworICAgIGRlZiB1cGRhdGVfZG9uZXN0YW1wKHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiCisgICAgICAgIFVwZGF0ZSB0aGUgZG9uZXN0YW1wIGZpbGUKKyAgICAgICAgIiIiCisgICAgICAgIHVwZGF0ZV9zdGFtcCh1ZCwgZCkKKwogICAgIGRlZiBfc3RyaXBfbGVhZGluZ19zbGFzaGVzKHNlbGYsIHJlbHBhdGgpOgogICAgICAgICAiIiIKICAgICAgICAgUmVtb3ZlIGxlYWRpbmcgc2xhc2ggYXMgb3MucGF0aC5qb2luIGNhbid0IGNvcGUKQEAgLTE1MzksNiArMTU2MywxMiBAQAogICAgICAgICAiIiIKICAgICAgICAgcmV0dXJuIFRydWUKIAorICAgIGRlZiB0cnlfbWlycm9ycyhzZWxmLCBmZXRjaCwgdXJsZGF0YSwgZCwgbWlycm9ycywgY2hlY2s9RmFsc2UpOgorICAgICAgICAiIiIKKyAgICAgICAgVHJ5IHRvIHVzZSBhIG1pcnJvcgorICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIGJvb2wodHJ5X21pcnJvcnMoZmV0Y2gsIGQsIHVybGRhdGEsIG1pcnJvcnMsIGNoZWNrKSkKKwogICAgIGRlZiBjaGVja3N0YXR1cyhzZWxmLCBmZXRjaCwgdXJsZGF0YSwgZCk6CiAgICAgICAgICIiIgogICAgICAgICBDaGVjayB0aGUgc3RhdHVzIG9mIGEgVVJMCkBAIC0xNTY3LDggKzE1OTcsNyBAQAogICAgICAgICByZXR1cm4gVHJ1ZSwgc3RyKGxhdGVzdF9yZXYpCiAKICAgICBkZWYgZ2VuZXJhdGVfcmV2aXNpb25fa2V5KHNlbGYsIHVkLCBkLCBuYW1lKToKLSAgICAgICAga2V5ID0gc2VsZi5fcmV2aXNpb25fa2V5KHVkLCBkLCBuYW1lKQotICAgICAgICByZXR1cm4gIiVzLSVzIiAlIChrZXksIGQuZ2V0VmFyKCJQTiIpIG9yICIiKQorICAgICAgICByZXR1cm4gc2VsZi5fcmV2aXNpb25fa2V5KHVkLCBkLCBuYW1lKQogCiAgICAgZGVmIGxhdGVzdF92ZXJzaW9uc3RyaW5nKHNlbGYsIHVkLCBkKToKICAgICAgICAgIiIiCkBAIC0xNTc4LDYgKzE2MDcsMTYgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiAoJycsICcnKQogCisgICAgZGVmIGRvbmUoc2VsZiwgdWQsIGQpOgorICAgICAgICAiIiIKKyAgICAgICAgSXMgdGhlIGRvd25sb2FkIGRvbmUgPworICAgICAgICAiIiIKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKToKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGlmIHVkLmxvY2FscGF0aC5maW5kKCIqIikgIT0gLTE6CisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICByZXR1cm4gRmFsc2UKKwogY2xhc3MgRmV0Y2gob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgdXJscywgZCwgY2FjaGUgPSBUcnVlLCBsb2NhbG9ubHkgPSBGYWxzZSwgY29ubmVjdGlvbl9jYWNoZSA9IE5vbmUpOgogICAgICAgICBpZiBsb2NhbG9ubHkgYW5kIGNhY2hlOgpAQCAtMTU5Miw4ICsxNjMxLDExIEBACiAKICAgICAgICAgZm4gPSBkLmdldFZhcignRklMRScpCiAgICAgICAgIG1jID0gZC5nZXRWYXIoJ19fQkJNVUxUSUNPTkZJRycpIG9yICIiCi0gICAgICAgIGlmIGNhY2hlIGFuZCBmbiBhbmQgbWMgKyBmbiBpbiB1cmxkYXRhX2NhY2hlOgotICAgICAgICAgICAgc2VsZi51ZCA9IHVybGRhdGFfY2FjaGVbbWMgKyBmbiArIHN0cihpZChkKSldCisgICAgICAgIGtleSA9IE5vbmUKKyAgICAgICAgaWYgY2FjaGUgYW5kIGZuOgorICAgICAgICAgICAga2V5ID0gbWMgKyBmbiArIHN0cihpZChkKSkKKyAgICAgICAgaWYga2V5IGluIHVybGRhdGFfY2FjaGU6CisgICAgICAgICAgICBzZWxmLnVkID0gdXJsZGF0YV9jYWNoZVtrZXldCiAKICAgICAgICAgZm9yIHVybCBpbiB1cmxzOgogICAgICAgICAgICAgaWYgdXJsIG5vdCBpbiBzZWxmLnVkOgpAQCAtMTYwNCw4ICsxNjQ2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudWRbdXJsXSA9IE5vbmUKICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKIAotICAgICAgICBpZiBmbiBhbmQgY2FjaGU6Ci0gICAgICAgICAgICB1cmxkYXRhX2NhY2hlW21jICsgZm4gKyBzdHIoaWQoZCkpXSA9IHNlbGYudWQKKyAgICAgICAgaWYga2V5OgorICAgICAgICAgICAgdXJsZGF0YV9jYWNoZVtrZXldID0gc2VsZi51ZAogCiAgICAgZGVmIGxvY2FscGF0aChzZWxmLCB1cmwpOgogICAgICAgICBpZiB1cmwgbm90IGluIHNlbGYudXJsczoKQEAgLTE2NDEsNyArMTY4Myw3IEBACiAgICAgICAgICAgICB1ZCA9IHNlbGYudWRbdV0KICAgICAgICAgICAgIHVkLnNldHVwX2xvY2FscGF0aChzZWxmLmQpCiAgICAgICAgICAgICBtID0gdWQubWV0aG9kCi0gICAgICAgICAgICBsb2NhbHBhdGggPSAiIgorICAgICAgICAgICAgZG9uZSA9IEZhbHNlCiAKICAgICAgICAgICAgIGlmIHVkLmxvY2tmaWxlOgogICAgICAgICAgICAgICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUodWQubG9ja2ZpbGUpCkBAIC0xNjQ5LDI4ICsxNjkxLDI4IEBACiAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiQkJfTk9fTkVUV09SSyIsIG5ldHdvcmspCiAKLSAgICAgICAgICAgICAgICBpZiB2ZXJpZnlfZG9uZXN0YW1wKHVkLCBzZWxmLmQpIGFuZCBub3QgbS5uZWVkX3VwZGF0ZSh1ZCwgc2VsZi5kKToKLSAgICAgICAgICAgICAgICAgICAgbG9jYWxwYXRoID0gdWQubG9jYWxwYXRoCisgICAgICAgICAgICAgICAgaWYgbS52ZXJpZnlfZG9uZXN0YW1wKHVkLCBzZWxmLmQpIGFuZCBub3QgbS5uZWVkX3VwZGF0ZSh1ZCwgc2VsZi5kKToKKyAgICAgICAgICAgICAgICAgICAgZG9uZSA9IFRydWUKICAgICAgICAgICAgICAgICBlbGlmIG0udHJ5X3ByZW1pcnJvcih1ZCwgc2VsZi5kKToKICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJUcnlpbmcgUFJFTUlSUk9SUyIpCiAgICAgICAgICAgICAgICAgICAgIG1pcnJvcnMgPSBtaXJyb3JfZnJvbV9zdHJpbmcoc2VsZi5kLmdldFZhcignUFJFTUlSUk9SUycpKQotICAgICAgICAgICAgICAgICAgICBsb2NhbHBhdGggPSB0cnlfbWlycm9ycyhzZWxmLCBzZWxmLmQsIHVkLCBtaXJyb3JzLCBGYWxzZSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbG9jYWxwYXRoOgorICAgICAgICAgICAgICAgICAgICBkb25lID0gbS50cnlfbWlycm9ycyhzZWxmLCB1ZCwgc2VsZi5kLCBtaXJyb3JzKQorICAgICAgICAgICAgICAgICAgICBpZiBkb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgdHJ5OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgZWFybHkgY2hlY2tzdW0gdmVyaWZpY2F0aW9uIHNvIHRoYXQgaWYgdGhlIGNoZWNrc3VtIG9mIHRoZSBwcmVtaXJyb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIGNvbnRlbnRzIG1pc21hdGNoIHRoZSBmZXRjaGVyIGNhbiBzdGlsbCB0cnkgdXBzdHJlYW0gYW5kIG1pcnJvcnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfc3RhbXAodWQsIHNlbGYuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLnVwZGF0ZV9kb25lc3RhbXAodWQsIHNlbGYuZCkKICAgICAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBDaGVja3N1bUVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoIkNoZWNrc3VtIGZhaWx1cmUgZW5jb3VudGVyZWQgd2l0aCBwcmVtaXJyb3IgZG93bmxvYWQgb2YgJXMgLSB3aWxsIGF0dGVtcHQgb3RoZXIgc291cmNlcy4iICUgdSkKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgc3RyKGUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FscGF0aCA9ICIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG9uZSA9IEZhbHNlCiAKICAgICAgICAgICAgICAgICBpZiBwcmVtaXJyb3Jvbmx5OgogICAgICAgICAgICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJCQl9OT19ORVRXT1JLIiwgIjEiKQogCiAgICAgICAgICAgICAgICAgZmlyc3RlcnIgPSBOb25lCi0gICAgICAgICAgICAgICAgdmVyaWZpZWRfc3RhbXAgPSB2ZXJpZnlfZG9uZXN0YW1wKHVkLCBzZWxmLmQpCi0gICAgICAgICAgICAgICAgaWYgbm90IGxvY2FscGF0aCBhbmQgKG5vdCB2ZXJpZmllZF9zdGFtcCBvciBtLm5lZWRfdXBkYXRlKHVkLCBzZWxmLmQpKToKKyAgICAgICAgICAgICAgICB2ZXJpZmllZF9zdGFtcCA9IG0udmVyaWZ5X2RvbmVzdGFtcCh1ZCwgc2VsZi5kKQorICAgICAgICAgICAgICAgIGlmIG5vdCBkb25lIGFuZCAobm90IHZlcmlmaWVkX3N0YW1wIG9yIG0ubmVlZF91cGRhdGUodWQsIHNlbGYuZCkpOgogICAgICAgICAgICAgICAgICAgICB0cnk6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBub3QgdHJ1c3RlZF9uZXR3b3JrKHNlbGYuZCwgdWQudXJsKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByYWlzZSBVbnRydXN0ZWRVcmwodWQudXJsKQpAQCAtMTY3OCwxMCArMTcyMCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgbS5kb3dubG9hZCh1ZCwgc2VsZi5kKQogICAgICAgICAgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihtLCAiYnVpbGRfbWlycm9yX2RhdGEiKToKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtLmJ1aWxkX21pcnJvcl9kYXRhKHVkLCBzZWxmLmQpCi0gICAgICAgICAgICAgICAgICAgICAgICBsb2NhbHBhdGggPSB1ZC5sb2NhbHBhdGgKKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgICAgICAjIGVhcmx5IGNoZWNrc3VtIHZlcmlmeSwgc28gdGhhdCBpZiBjaGVja3N1bSBtaXNtYXRjaGVkLAogICAgICAgICAgICAgICAgICAgICAgICAgIyBmZXRjaGVyIHN0aWxsIGhhdmUgY2hhbmNlIHRvIGZldGNoIGZyb20gbWlycm9yCi0gICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfc3RhbXAodWQsIHNlbGYuZCkKKyAgICAgICAgICAgICAgICAgICAgICAgIG0udXBkYXRlX2RvbmVzdGFtcCh1ZCwgc2VsZi5kKQogCiAgICAgICAgICAgICAgICAgICAgIGV4Y2VwdCBiYi5mZXRjaDIuTmV0d29ya0FjY2VzczoKICAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlCkBAIC0xNzAzLDE0ICsxNzQ1LDE0IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbS5jbGVhbih1ZCwgc2VsZi5kKQogICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJUcnlpbmcgTUlSUk9SUyIpCiAgICAgICAgICAgICAgICAgICAgICAgICBtaXJyb3JzID0gbWlycm9yX2Zyb21fc3RyaW5nKHNlbGYuZC5nZXRWYXIoJ01JUlJPUlMnKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2FscGF0aCA9IHRyeV9taXJyb3JzKHNlbGYsIHNlbGYuZCwgdWQsIG1pcnJvcnMpCisgICAgICAgICAgICAgICAgICAgICAgICBkb25lID0gbS50cnlfbWlycm9ycyhzZWxmLCB1ZCwgc2VsZi5kLCBtaXJyb3JzKQogCi0gICAgICAgICAgICAgICAgaWYgbm90IGxvY2FscGF0aCBvciAoKG5vdCBvcy5wYXRoLmV4aXN0cyhsb2NhbHBhdGgpKSBhbmQgbG9jYWxwYXRoLmZpbmQoIioiKSA9PSAtMSk6CisgICAgICAgICAgICAgICAgaWYgbm90IGRvbmUgb3Igbm90IG0uZG9uZSh1ZCwgc2VsZi5kKToKICAgICAgICAgICAgICAgICAgICAgaWYgZmlyc3RlcnI6CiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3Ioc3RyKGZpcnN0ZXJyKSkKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcigiVW5hYmxlIHRvIGZldGNoIFVSTCBmcm9tIGFueSBzb3VyY2UuIiwgdSkKIAotICAgICAgICAgICAgICAgIHVwZGF0ZV9zdGFtcCh1ZCwgc2VsZi5kKQorICAgICAgICAgICAgICAgIG0udXBkYXRlX2RvbmVzdGFtcCh1ZCwgc2VsZi5kKQogCiAgICAgICAgICAgICBleGNlcHQgSU9FcnJvciBhcyBlOgogICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gaW4gW2Vycm5vLkVTVEFMRV06CkBAIC0xNzQxLDE0ICsxNzgzLDE0IEBACiAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIlRlc3RpbmcgVVJMICVzIiwgdSkKICAgICAgICAgICAgICMgRmlyc3QgdHJ5IGNoZWNraW5nIHVyaSwgdSwgZnJvbSBQUkVNSVJST1JTCiAgICAgICAgICAgICBtaXJyb3JzID0gbWlycm9yX2Zyb21fc3RyaW5nKHNlbGYuZC5nZXRWYXIoJ1BSRU1JUlJPUlMnKSkKLSAgICAgICAgICAgIHJldCA9IHRyeV9taXJyb3JzKHNlbGYsIHNlbGYuZCwgdWQsIG1pcnJvcnMsIFRydWUpCisgICAgICAgICAgICByZXQgPSBtLnRyeV9taXJyb3JzKHNlbGYsIHVkLCBzZWxmLmQsIG1pcnJvcnMsIFRydWUpCiAgICAgICAgICAgICBpZiBub3QgcmV0OgogICAgICAgICAgICAgICAgICMgTmV4dCB0cnkgY2hlY2tpbmcgZnJvbSB0aGUgb3JpZ2luYWwgdXJpLCB1CiAgICAgICAgICAgICAgICAgcmV0ID0gbS5jaGVja3N0YXR1cyhzZWxmLCB1ZCwgc2VsZi5kKQogICAgICAgICAgICAgICAgIGlmIG5vdCByZXQ6CiAgICAgICAgICAgICAgICAgICAgICMgRmluYWxseSwgdHJ5IGNoZWNraW5nIHVyaSwgdSwgZnJvbSBNSVJST1JTCiAgICAgICAgICAgICAgICAgICAgIG1pcnJvcnMgPSBtaXJyb3JfZnJvbV9zdHJpbmcoc2VsZi5kLmdldFZhcignTUlSUk9SUycpKQotICAgICAgICAgICAgICAgICAgICByZXQgPSB0cnlfbWlycm9ycyhzZWxmLCBzZWxmLmQsIHVkLCBtaXJyb3JzLCBUcnVlKQorICAgICAgICAgICAgICAgICAgICByZXQgPSBtLnRyeV9taXJyb3JzKHNlbGYsIHVkLCBzZWxmLmQsIG1pcnJvcnMsIFRydWUpCiAKICAgICAgICAgICAgIGlmIG5vdCByZXQ6CiAgICAgICAgICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcigiVVJMICVzIGRvZXNuJ3Qgd29yayIgJSB1LCB1KQpAQCAtMTg1Myw2ICsxODk1LDcgQEAKIGZyb20gLiBpbXBvcnQgcmVwbwogZnJvbSAuIGltcG9ydCBjbGVhcmNhc2UKIGZyb20gLiBpbXBvcnQgbnBtCitmcm9tIC4gaW1wb3J0IG5wbXN3CiAKIG1ldGhvZHMuYXBwZW5kKGxvY2FsLkxvY2FsKCkpCiBtZXRob2RzLmFwcGVuZCh3Z2V0LldnZXQoKSkKQEAgLTE4NzEsMyArMTkxNCw0IEBACiBtZXRob2RzLmFwcGVuZChyZXBvLlJlcG8oKSkKIG1ldGhvZHMuYXBwZW5kKGNsZWFyY2FzZS5DbGVhckNhc2UoKSkKIG1ldGhvZHMuYXBwZW5kKG5wbS5OcG0oKSkKK21ldGhvZHMuYXBwZW5kKG5wbXN3Lk5wbVNocmlua1dyYXAoKSkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2J6ci5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2J6ci5weQppbmRleCBjNTZkODc1Li41NjZhY2U5IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9ienIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvYnpyLnB5CkBAIC0xNCw4ICsxNCw2IEBACiAjCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCBiYgogZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCiBmcm9tIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hFcnJvcgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvY2xlYXJjYXNlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvY2xlYXJjYXNlLnB5CmluZGV4IGUyOTM0ZWYuLjQ5ZDdhZTEgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2NsZWFyY2FzZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9jbGVhcmNhc2UucHkKQEAgLTQ5LDcgKzQ5LDYgQEAKICMKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgYmIKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCkBAIC0yMzgsNyArMjM3LDcgQEAKIAogICAgICAgICAjIENsZWFuIGNsZWFyY2FzZSBtZXRhLWRhdGEgYmVmb3JlIHRhcgogCi0gICAgICAgIHJ1bmZldGNoY21kKCd0YXIgLWN6ZiAiJXMiIC4nICUgKHVkLmxvY2FscGF0aCksIGQsIGNsZWFudXAgPSBbdWQubG9jYWxwYXRoXSkKKyAgICAgICAgcnVuZmV0Y2hjbWQoJ3RhciAtY3pmICIlcyIgLicgJSAodWQubG9jYWxwYXRoKSwgZCwgY2xlYW51cCA9IFt1ZC5sb2NhbHBhdGhdLCB3b3JrZGlyID0gdWQudmlld2RpcikKIAogICAgICAgICAjIENsZWFuIHVwIHNvIHdlIGNhbiBjcmVhdGUgYSBuZXcgdmlldyBuZXh0IHRpbWUKICAgICAgICAgc2VsZi5jbGVhbih1ZCwgZCk7CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9jdnMucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9jdnMucHkKaW5kZXggMWIzNWJhNC4uMjkxMjNhNCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvY3ZzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2N2cy5weQpAQCAtMTQsNyArMTQsNiBAQAogIwogCiBpbXBvcnQgb3MKLWltcG9ydCBsb2dnaW5nCiBpbXBvcnQgYmIKIGZyb20gYmIuZmV0Y2gyIGltcG9ydCBGZXRjaE1ldGhvZCwgRmV0Y2hFcnJvciwgTWlzc2luZ1BhcmFtZXRlckVycm9yLCBsb2dnZXIKIGZyb20gYmIuZmV0Y2gyIGltcG9ydCBydW5mZXRjaGNtZApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0LnB5CmluZGV4IGZhNDFiMDcuLjViMzc5M2EgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9naXQucHkKQEAgLTU5NCw3ICs1OTQsOSBAQAogICAgICAgICAiIiIKICAgICAgICAgUmV0dXJuIGEgdW5pcXVlIGtleSBmb3IgdGhlIHVybAogICAgICAgICAiIiIKLSAgICAgICAgcmV0dXJuICJnaXQ6IiArIHVkLmhvc3QgKyB1ZC5wYXRoLnJlcGxhY2UoJy8nLCAnLicpICsgdWQudW5yZXNvbHZlZHJldltuYW1lXQorICAgICAgICAjIENvbGxhcHNlIGFkamFjZW50IHNsYXNoZXMKKyAgICAgICAgc2xhc2hfcmUgPSByZS5jb21waWxlKHIiLysiKQorICAgICAgICByZXR1cm4gImdpdDoiICsgdWQuaG9zdCArIHNsYXNoX3JlLnN1YigiLiIsIHVkLnBhdGgpICsgdWQudW5yZXNvbHZlZHJldltuYW1lXQogCiAgICAgZGVmIF9sc3JlbW90ZShzZWxmLCB1ZCwgZCwgc2VhcmNoKToKICAgICAgICAgIiIiCkBAIC02NzEsNyArNjczLDcgQEAKIAogICAgICAgICAgICAgIyBzZWFyY2ggZm9yIHZlcnNpb24gaW4gdGhlIGxpbmUKICAgICAgICAgICAgIHRhZyA9IHRhZ3JlZ2V4LnNlYXJjaCh0YWdfaGVhZCkKLSAgICAgICAgICAgIGlmIHRhZyA9PSBOb25lOgorICAgICAgICAgICAgaWYgdGFnIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgdGFnID0gdGFnLmdyb3VwKCdwdmVyJykKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdGFubmV4LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0YW5uZXgucHkKaW5kZXggMWQ0OTdkYy4uODBhODA4ZCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0YW5uZXgucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0YW5uZXgucHkKQEAgLTgsMTEgKzgsOSBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWltcG9ydCBvcwogaW1wb3J0IGJiCiBmcm9tICAgYmIuZmV0Y2gyLmdpdCBpbXBvcnQgR2l0CiBmcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBydW5mZXRjaGNtZAotZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgbG9nZ2VyCiAKIGNsYXNzIEdpdEFOTkVYKEdpdCk6CiAgICAgZGVmIHN1cHBvcnRzKHNlbGYsIHVkLCBkKToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL2dpdHNtLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0c20ucHkKaW5kZXggYzYyMjc3MS4uZTcwODMwMCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0c20ucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvZ2l0c20ucHkKQEAgLTIwLDExICsyMCwxMiBAQAogaW1wb3J0IG9zCiBpbXBvcnQgYmIKIGltcG9ydCBjb3B5CitpbXBvcnQgc2h1dGlsCitpbXBvcnQgdGVtcGZpbGUKIGZyb20gICBiYi5mZXRjaDIuZ2l0IGltcG9ydCBHaXQKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IHJ1bmZldGNoY21kCiBmcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBsb2dnZXIKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBCQkZldGNoRXhjZXB0aW9uCiAKIGNsYXNzIEdpdFNNKEdpdCk6CiAgICAgZGVmIHN1cHBvcnRzKHNlbGYsIHVkLCBkKToKQEAgLTEzMSw3ICsxMzIsNyBAQAogICAgICAgICAgICAgbGQuc2V0VmFyKCdTUkNQVicsIGQuZ2V0VmFyKCdTUkNQVicpKQogICAgICAgICAgICAgbGQuc2V0VmFyKCdTUkNSRVZfRk9STUFUJywgbW9kdWxlKQogCi0gICAgICAgICAgICBmdW5jdGlvbih1ZCwgdXJsLCBtb2R1bGUsIHBhdGhzW21vZHVsZV0sIGxkKQorICAgICAgICAgICAgZnVuY3Rpb24odWQsIHVybCwgbW9kdWxlLCBwYXRoc1ttb2R1bGVdLCB3b3JrZGlyLCBsZCkKIAogICAgICAgICByZXR1cm4gc3VibW9kdWxlcyAhPSBbXQogCkBAIC0xNTMsNyArMTU0LDcgQEAKICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICBkZWYgZG93bmxvYWQoc2VsZiwgdWQsIGQpOgotICAgICAgICBkZWYgZG93bmxvYWRfc3VibW9kdWxlKHVkLCB1cmwsIG1vZHVsZSwgbW9kcGF0aCwgZCk6CisgICAgICAgIGRlZiBkb3dubG9hZF9zdWJtb2R1bGUodWQsIHVybCwgbW9kdWxlLCBtb2RwYXRoLCB3b3JrZGlyLCBkKToKICAgICAgICAgICAgIHVybCArPSAiO2JhcmVjbG9uZT0xO25vYnJhbmNoPTEiCiAKICAgICAgICAgICAgICMgSXMgdGhlIGZvbGxvd2luZyBzdGlsbCBuZWVkZWQ/CkBAIC0xNjQsMTYgKzE2NSwyNSBAQAogICAgICAgICAgICAgICAgIG5ld2ZldGNoLmRvd25sb2FkKCkKICAgICAgICAgICAgICAgICAjIERyb3AgYSBudWdnZXQgdG8gYWRkIGVhY2ggb2YgdGhlIHNyY3JldnMgd2UndmUgZmV0Y2hlZCAodXNlZCBieSBuZWVkX3VwZGF0ZSkKICAgICAgICAgICAgICAgICBydW5mZXRjaGNtZCgiJXMgY29uZmlnIC0tYWRkIGJpdGJha2Uuc3JjcmV2ICVzIiAlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAodWQuYmFzZWNtZCwgdWQucmV2aXNpb25zW3VkLm5hbWVzWzBdXSksIGQsIHdvcmtkaXI9dWQuY2xvbmVkaXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHVkLmJhc2VjbWQsIHVkLnJldmlzaW9uc1t1ZC5uYW1lc1swXV0pLCBkLCB3b3JrZGlyPXdvcmtkaXIpCiAgICAgICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6CiAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdnaXRzbTogc3VibW9kdWxlIGRvd25sb2FkIGZhaWxlZDogJXMgJXMnICUgKHR5cGUoZSkuX19uYW1lX18sIHN0cihlKSkpCiAgICAgICAgICAgICAgICAgcmFpc2UKIAogICAgICAgICBHaXQuZG93bmxvYWQoc2VsZiwgdWQsIGQpCi0gICAgICAgIHNlbGYucHJvY2Vzc19zdWJtb2R1bGVzKHVkLCB1ZC5jbG9uZWRpciwgZG93bmxvYWRfc3VibW9kdWxlLCBkKQorCisgICAgICAgICMgSWYgd2UncmUgdXNpbmcgYSBzaGFsbG93IG1pcnJvciB0YXJiYWxsIGl0IG5lZWRzIHRvIGJlIHVucGFja2VkCisgICAgICAgICMgdGVtcG9yYXJpbHkgc28gdGhhdCB3ZSBjYW4gZXhhbWluZSB0aGUgLmdpdG1vZHVsZXMgZmlsZQorICAgICAgICBpZiB1ZC5zaGFsbG93IGFuZCBvcy5wYXRoLmV4aXN0cyh1ZC5mdWxsc2hhbGxvdykgYW5kIHNlbGYubmVlZF91cGRhdGUodWQsIGQpOgorICAgICAgICAgICAgdG1wZGlyID0gdGVtcGZpbGUubWtkdGVtcChkaXI9ZC5nZXRWYXIoIkRMX0RJUiIpKQorICAgICAgICAgICAgcnVuZmV0Y2hjbWQoInRhciAteHpmICVzIiAlIHVkLmZ1bGxzaGFsbG93LCBkLCB3b3JrZGlyPXRtcGRpcikKKyAgICAgICAgICAgIHNlbGYucHJvY2Vzc19zdWJtb2R1bGVzKHVkLCB0bXBkaXIsIGRvd25sb2FkX3N1Ym1vZHVsZSwgZCkKKyAgICAgICAgICAgIHNodXRpbC5ybXRyZWUodG1wZGlyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5wcm9jZXNzX3N1Ym1vZHVsZXModWQsIHVkLmNsb25lZGlyLCBkb3dubG9hZF9zdWJtb2R1bGUsIGQpCiAKICAgICBkZWYgdW5wYWNrKHNlbGYsIHVkLCBkZXN0ZGlyLCBkKToKLSAgICAgICAgZGVmIHVucGFja19zdWJtb2R1bGVzKHVkLCB1cmwsIG1vZHVsZSwgbW9kcGF0aCwgZCk6CisgICAgICAgIGRlZiB1bnBhY2tfc3VibW9kdWxlcyh1ZCwgdXJsLCBtb2R1bGUsIG1vZHBhdGgsIHdvcmtkaXIsIGQpOgogICAgICAgICAgICAgdXJsICs9ICI7YmFyZWNsb25lPTE7bm9icmFuY2g9MSIKIAogICAgICAgICAgICAgIyBGaWd1cmUgb3V0IHdoZXJlIHdlIGNsb25lIG92ZXIgdGhlIGJhcmUgc3VibW9kdWxlcy4uLgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvaGcucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9oZy5weQppbmRleCBlMjExMTVkLi44ZjUwMzcwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9oZy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9oZy5weQpAQCAtMTMsOCArMTMsNiBAQAogIwogCiBpbXBvcnQgb3MKLWltcG9ydCBzeXMKLWltcG9ydCBsb2dnaW5nCiBpbXBvcnQgYmIKIGltcG9ydCBlcnJubwogZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9ucG0ucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9ucG0ucHkKaW5kZXggOTcwMGU2MS4uNDc4OTg1MCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvbnBtLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL25wbS5weQpAQCAtMSwzMDEgKzEsMjk2IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBTYXZvaXItRmFpcmUgTGludXgKICMKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogIiIiCi1CaXRCYWtlICdGZXRjaCcgTlBNIGltcGxlbWVudGF0aW9uCitCaXRCYWtlICdGZXRjaCcgbnBtIGltcGxlbWVudGF0aW9uCiAKLVRoZSBOUE0gZmV0Y2hlciBpcyB1c2VkIHRvIHJldHJpZXZlIGZpbGVzIGZyb20gdGhlIG5wbWpzIHJlcG9zaXRvcnkKK25wbSBmZXRjaGVyIHN1cHBvcnQgdGhlIFNSQ19VUkkgd2l0aCBmb3JtYXQgb2Y6CitTUkNfVVJJID0gIm5wbTovL3NvbWUucmVnaXN0cnkudXJsO09wdGlvbkE9eHh4O09wdGlvbkI9eHh4Oy4uLiIKIAotVXNhZ2UgaW4gdGhlIHJlY2lwZToKK1N1cHBvcnRlZCBTUkNfVVJJIG9wdGlvbnMgYXJlOgogCi0gICAgU1JDX1VSSSA9ICJucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmcvO25hbWU9JHtQTn07dmVyc2lvbj0ke1BWfSIKLSAgICBTdXBvcnRlZCBTUkNfVVJJIG9wdGlvbnMgYXJlOgorLSBwYWNrYWdlCisgICBUaGUgbnBtIHBhY2thZ2UgbmFtZS4gVGhpcyBpcyBhIG1hbmRhdG9yeSBwYXJhbWV0ZXIuCiAKLSAgICAtIG5hbWUKLSAgICAtIHZlcnNpb24KKy0gdmVyc2lvbgorICAgIFRoZSBucG0gcGFja2FnZSB2ZXJzaW9uLiBUaGlzIGlzIGEgbWFuZGF0b3J5IHBhcmFtZXRlci4KIAotICAgIG5wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy8ke1BOfS8tLyR7UE59LSR7UFZ9LnRneiAgd291bGQgYmVjb21lIG5wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztuYW1lPSR7UE59O3ZlcnNpb249JHtQVn0KLSAgICBUaGUgZmV0Y2hlciBhbGwgdHJpZ2dlcnMgb2ZmIHRoZSBleGlzdGVuY2Ugb2YgdWQubG9jYWxwYXRoLiBJZiB0aGF0IGV4aXN0cyBhbmQgaGFzIHRoZSAiLmRvbmUiIHN0YW1wLCBpdHMgYXNzdW1lZCB0aGUgZmV0Y2ggaXMgZ29vZC9kb25lCistIGRvd25sb2FkZmlsZW5hbWUKKyAgICBTcGVjaWZpZXMgdGhlIGZpbGVuYW1lIHVzZWQgd2hlbiBzdG9yaW5nIHRoZSBkb3dubG9hZGVkIGZpbGUuCiAKKy0gZGVzdHN1ZmZpeAorICAgIFNwZWNpZmllcyB0aGUgZGlyZWN0b3J5IHRvIHVzZSB0byB1bnBhY2sgdGhlIHBhY2thZ2UgKGRlZmF1bHQ6IG5wbSkuCiAiIiIKIAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgdXJsbGliLnJlcXVlc3QsIHVybGxpYi5wYXJzZSwgdXJsbGliLmVycm9yCitpbXBvcnQgYmFzZTY0CiBpbXBvcnQganNvbgotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBzaWduYWwKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc2hsZXgKK2ltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IGJiCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBGZXRjaE1ldGhvZAotZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hFcnJvcgotZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgQ2hlY2tzdW1FcnJvcgotZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgcnVuZmV0Y2hjbWQKLWZyb20gICBiYi5mZXRjaDIgaW1wb3J0IGxvZ2dlcgotZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgVW5wYWNrRXJyb3IKLWZyb20gICBiYi5mZXRjaDIgaW1wb3J0IFBhcmFtZXRlckVycm9yCitmcm9tIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2gKK2Zyb20gYmIuZmV0Y2gyIGltcG9ydCBGZXRjaEVycm9yCitmcm9tIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hNZXRob2QKK2Zyb20gYmIuZmV0Y2gyIGltcG9ydCBNaXNzaW5nUGFyYW1ldGVyRXJyb3IKK2Zyb20gYmIuZmV0Y2gyIGltcG9ydCBQYXJhbWV0ZXJFcnJvcgorZnJvbSBiYi5mZXRjaDIgaW1wb3J0IFVSSQorZnJvbSBiYi5mZXRjaDIgaW1wb3J0IGNoZWNrX25ldHdvcmtfYWNjZXNzCitmcm9tIGJiLmZldGNoMiBpbXBvcnQgcnVuZmV0Y2hjbWQKK2Zyb20gYmIudXRpbHMgaW1wb3J0IGlzX3NlbXZlcgogCi1kZWYgc3VicHJvY2Vzc19zZXR1cCgpOgotICAgICMgUHl0aG9uIGluc3RhbGxzIGEgU0lHUElQRSBoYW5kbGVyIGJ5IGRlZmF1bHQuIFRoaXMgaXMgdXN1YWxseSBub3Qgd2hhdAotICAgICMgbm9uLVB5dGhvbiBzdWJwcm9jZXNzZXMgZXhwZWN0LgotICAgICMgU0lHUElQRSBlcnJvcnMgYXJlIGtub3duIGlzc3VlcyB3aXRoIGd6aXAvYmFzaAotICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1BJUEUsIHNpZ25hbC5TSUdfREZMKQorZGVmIG5wbV9wYWNrYWdlKHBhY2thZ2UpOgorICAgICIiIkNvbnZlcnQgdGhlIG5wbSBwYWNrYWdlIG5hbWUgdG8gcmVtb3ZlIHVuc3VwcG9ydGVkIGNoYXJhY3RlciIiIgorICAgICMgU2NvcGVkIHBhY2thZ2UgbmFtZXMgKHdpdGggdGhlIEApIHVzZSB0aGUgc2FtZSBuYW1pbmcgY29udmVudGlvbgorICAgICMgYXMgdGhlICducG0gcGFjaycgY29tbWFuZC4KKyAgICBpZiBwYWNrYWdlLnN0YXJ0c3dpdGgoIkAiKToKKyAgICAgICAgcmV0dXJuIHJlLnN1YigiLyIsICItIiwgcGFja2FnZVsxOl0pCisgICAgcmV0dXJuIHBhY2thZ2UKKworZGVmIG5wbV9maWxlbmFtZShwYWNrYWdlLCB2ZXJzaW9uKToKKyAgICAiIiJHZXQgdGhlIGZpbGVuYW1lIG9mIGEgbnBtIHBhY2thZ2UiIiIKKyAgICByZXR1cm4gbnBtX3BhY2thZ2UocGFja2FnZSkgKyAiLSIgKyB2ZXJzaW9uICsgIi50Z3oiCisKK2RlZiBucG1fbG9jYWxmaWxlKHBhY2thZ2UsIHZlcnNpb24pOgorICAgICIiIkdldCB0aGUgbG9jYWwgZmlsZW5hbWUgb2YgYSBucG0gcGFja2FnZSIiIgorICAgIHJldHVybiBvcy5wYXRoLmpvaW4oIm5wbTIiLCBucG1fZmlsZW5hbWUocGFja2FnZSwgdmVyc2lvbikpCisKK2RlZiBucG1faW50ZWdyaXR5KGludGVncml0eSk6CisgICAgIiIiCisgICAgR2V0IHRoZSBjaGVja3N1bSBuYW1lIGFuZCBleHBlY3RlZCB2YWx1ZSBmcm9tIHRoZSBzdWJyZXNvdXJjZSBpbnRlZ3JpdHkKKyAgICAgICAgaHR0cHM6Ly93d3cudzMub3JnL1RSL1NSSS8KKyAgICAiIiIKKyAgICBhbGdvLCB2YWx1ZSA9IGludGVncml0eS5zcGxpdCgiLSIsIG1heHNwbGl0PTEpCisgICAgcmV0dXJuICIlc3N1bSIgJSBhbGdvLCBiYXNlNjQuYjY0ZGVjb2RlKHZhbHVlKS5oZXgoKQorCitkZWYgbnBtX3VucGFjayh0YXJiYWxsLCBkZXN0ZGlyLCBkKToKKyAgICAiIiJVbnBhY2sgYSBucG0gdGFyYmFsbCIiIgorICAgIGJiLnV0aWxzLm1rZGlyaGllcihkZXN0ZGlyKQorICAgIGNtZCA9ICJ0YXIgLS1leHRyYWN0IC0tZ3ppcCAtLWZpbGU9JXMiICUgc2hsZXgucXVvdGUodGFyYmFsbCkKKyAgICBjbWQgKz0gIiAtLW5vLXNhbWUtb3duZXIiCisgICAgY21kICs9ICIgLS1zdHJpcC1jb21wb25lbnRzPTEiCisgICAgcnVuZmV0Y2hjbWQoY21kLCBkLCB3b3JrZGlyPWRlc3RkaXIpCisKK2NsYXNzIE5wbUVudmlyb25tZW50KG9iamVjdCk6CisgICAgIiIiCisgICAgVXNpbmcgYSBucG0gY29uZmlnIGZpbGUgc2VlbXMgbW9yZSByZWxpYWJsZSB0aGFuIHVzaW5nIGNsaSBhcmd1bWVudHMuCisgICAgVGhpcyBjbGFzcyBhbGxvd3MgdG8gY3JlYXRlIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudCBmb3IgbnBtIGNvbW1hbmRzLgorICAgICIiIgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkLCBjb25maWdzPU5vbmUpOgorICAgICAgICBzZWxmLmQgPSBkCisgICAgICAgIHNlbGYuY29uZmlncyA9IGNvbmZpZ3MKKworICAgIGRlZiBydW4oc2VsZiwgY21kLCBhcmdzPU5vbmUsIGNvbmZpZ3M9Tm9uZSwgd29ya2Rpcj1Ob25lKToKKyAgICAgICAgIiIiUnVuIG5wbSBjb21tYW5kIGluIGEgY29udHJvbGxlZCBlbnZpcm9ubWVudCIiIgorICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIHRtcGRpcjoKKyAgICAgICAgICAgIGQgPSBiYi5kYXRhLmNyZWF0ZUNvcHkoc2VsZi5kKQorICAgICAgICAgICAgZC5zZXRWYXIoIkhPTUUiLCB0bXBkaXIpCisKKyAgICAgICAgICAgIGNmZ2ZpbGUgPSBvcy5wYXRoLmpvaW4odG1wZGlyLCAibnBtcmMiKQorCisgICAgICAgICAgICBpZiBub3Qgd29ya2RpcjoKKyAgICAgICAgICAgICAgICB3b3JrZGlyID0gdG1wZGlyCisKKyAgICAgICAgICAgIGRlZiBfcnVuKGNtZCk6CisgICAgICAgICAgICAgICAgY21kID0gIk5QTV9DT05GSUdfVVNFUkNPTkZJRz0lcyAiICUgY2ZnZmlsZSArIGNtZAorICAgICAgICAgICAgICAgIGNtZCA9ICJOUE1fQ09ORklHX0dMT0JBTENPTkZJRz0lcyAiICUgY2ZnZmlsZSArIGNtZAorICAgICAgICAgICAgICAgIHJldHVybiBydW5mZXRjaGNtZChjbWQsIGQsIHdvcmtkaXI9d29ya2RpcikKKworICAgICAgICAgICAgaWYgc2VsZi5jb25maWdzOgorICAgICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIHNlbGYuY29uZmlnczoKKyAgICAgICAgICAgICAgICAgICAgX3J1bigibnBtIGNvbmZpZyBzZXQgJXMgJXMiICUgKGtleSwgc2hsZXgucXVvdGUodmFsdWUpKSkKKworICAgICAgICAgICAgaWYgY29uZmlnczoKKyAgICAgICAgICAgICAgICBmb3Iga2V5LCB2YWx1ZSBpbiBjb25maWdzOgorICAgICAgICAgICAgICAgICAgICBfcnVuKCJucG0gY29uZmlnIHNldCAlcyAlcyIgJSAoa2V5LCBzaGxleC5xdW90ZSh2YWx1ZSkpKQorCisgICAgICAgICAgICBpZiBhcmdzOgorICAgICAgICAgICAgICAgIGZvciBrZXksIHZhbHVlIGluIGFyZ3M6CisgICAgICAgICAgICAgICAgICAgIGNtZCArPSAiIC0tJXM9JXMiICUgKGtleSwgc2hsZXgucXVvdGUodmFsdWUpKQorCisgICAgICAgICAgICByZXR1cm4gX3J1bihjbWQpCiAKIGNsYXNzIE5wbShGZXRjaE1ldGhvZCk6Ci0KLSAgICAiIiJDbGFzcyB0byBmZXRjaCB1cmxzIHZpYSAnbnBtJyIiIgotICAgIGRlZiBpbml0KHNlbGYsIGQpOgotICAgICAgICBwYXNzCisgICAgIiIiQ2xhc3MgdG8gZmV0Y2ggYSBwYWNrYWdlIGZyb20gYSBucG0gcmVnaXN0cnkiIiIKIAogICAgIGRlZiBzdXBwb3J0cyhzZWxmLCB1ZCwgZCk6Ci0gICAgICAgICIiIgotICAgICAgICBDaGVjayB0byBzZWUgaWYgYSBnaXZlbiB1cmwgY2FuIGJlIGZldGNoZWQgd2l0aCBucG0KLSAgICAgICAgIiIiCi0gICAgICAgIHJldHVybiB1ZC50eXBlIGluIFsnbnBtJ10KLQotICAgIGRlZiBkZWJ1ZyhzZWxmLCBtc2cpOgotICAgICAgICBsb2dnZXIuZGVidWcoMSwgIk5wbUZldGNoOiAlcyIsIG1zZykKLQotICAgIGRlZiBjbGVhbihzZWxmLCB1ZCwgZCk6Ci0gICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiQ2FsbGluZyBjbGVhbnVwICVzIiAlIHVkLnBrZ25hbWUpCi0gICAgICAgIGJiLnV0aWxzLnJlbW92ZSh1ZC5sb2NhbHBhdGgsIEZhbHNlKQotICAgICAgICBiYi51dGlscy5yZW1vdmUodWQucGtnZGF0YWRpciwgVHJ1ZSkKLSAgICAgICAgYmIudXRpbHMucmVtb3ZlKHVkLmZ1bGxtaXJyb3IsIEZhbHNlKQorICAgICAgICAiIiJDaGVjayBpZiBhIGdpdmVuIHVybCBjYW4gYmUgZmV0Y2hlZCB3aXRoIG5wbSIiIgorICAgICAgICByZXR1cm4gdWQudHlwZSBpbiBbIm5wbSJdCiAKICAgICBkZWYgdXJsZGF0YV9pbml0KHNlbGYsIHVkLCBkKToKLSAgICAgICAgIiIiCi0gICAgICAgIGluaXQgTlBNIHNwZWNpZmljIHZhcmlhYmxlIHdpdGhpbiB1cmwgZGF0YQotICAgICAgICAiIiIKLSAgICAgICAgaWYgJ2Rvd25sb2FkZmlsZW5hbWUnIGluIHVkLnBhcm06Ci0gICAgICAgICAgICB1ZC5iYXNlbmFtZSA9IHVkLnBhcm1bJ2Rvd25sb2FkZmlsZW5hbWUnXQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgdWQuYmFzZW5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKHVkLnBhdGgpCisgICAgICAgICIiIkluaXQgbnBtIHNwZWNpZmljIHZhcmlhYmxlcyB3aXRoaW4gdXJsIGRhdGEiIiIKKyAgICAgICAgdWQucGFja2FnZSA9IE5vbmUKKyAgICAgICAgdWQudmVyc2lvbiA9IE5vbmUKKyAgICAgICAgdWQucmVnaXN0cnkgPSBOb25lCiAKLSAgICAgICAgIyBjYW4ndCBjYWxsIGl0IHVkLm5hbWUgb3RoZXJ3aXNlIGZldGNoZXIgYmFzZSBjbGFzcyB3aWxsIHN0YXJ0IGRvaW5nIHNoYTFzdHVmZgotICAgICAgICAjIFRPRE86IGZpbmQgYSB3YXkgdG8gZ2V0IGFuIHNoYTEvc2hhMjU2IG1hbmlmZXN0IG9mIHBrZyAmIGFsbCBkZXBzCi0gICAgICAgIHVkLnBrZ25hbWUgPSB1ZC5wYXJtLmdldCgibmFtZSIsIE5vbmUpCi0gICAgICAgIGlmIG5vdCB1ZC5wa2duYW1lOgotICAgICAgICAgICAgcmFpc2UgUGFyYW1ldGVyRXJyb3IoIk5QTSBmZXRjaGVyIHJlcXVpcmVzIGEgbmFtZSBwYXJhbWV0ZXIiLCB1ZC51cmwpCi0gICAgICAgIHVkLnZlcnNpb24gPSB1ZC5wYXJtLmdldCgidmVyc2lvbiIsIE5vbmUpCisgICAgICAgICMgR2V0IHRoZSAncGFja2FnZScgcGFyYW1ldGVyCisgICAgICAgIGlmICJwYWNrYWdlIiBpbiB1ZC5wYXJtOgorICAgICAgICAgICAgdWQucGFja2FnZSA9IHVkLnBhcm0uZ2V0KCJwYWNrYWdlIikKKworICAgICAgICBpZiBub3QgdWQucGFja2FnZToKKyAgICAgICAgICAgIHJhaXNlIE1pc3NpbmdQYXJhbWV0ZXJFcnJvcigiUGFyYW1ldGVyICdwYWNrYWdlJyByZXF1aXJlZCIsIHVkLnVybCkKKworICAgICAgICAjIEdldCB0aGUgJ3ZlcnNpb24nIHBhcmFtZXRlcgorICAgICAgICBpZiAidmVyc2lvbiIgaW4gdWQucGFybToKKyAgICAgICAgICAgIHVkLnZlcnNpb24gPSB1ZC5wYXJtLmdldCgidmVyc2lvbiIpCisKICAgICAgICAgaWYgbm90IHVkLnZlcnNpb246Ci0gICAgICAgICAgICByYWlzZSBQYXJhbWV0ZXJFcnJvcigiTlBNIGZldGNoZXIgcmVxdWlyZXMgYSB2ZXJzaW9uIHBhcmFtZXRlciIsIHVkLnVybCkKLSAgICAgICAgdWQuYmJucG1tYW5pZmVzdCA9ICIlcy0lcy5kZXBzLmpzb24iICUgKHVkLnBrZ25hbWUsIHVkLnZlcnNpb24pCi0gICAgICAgIHVkLmJibnBtbWFuaWZlc3QgPSB1ZC5iYm5wbW1hbmlmZXN0LnJlcGxhY2UoJy8nLCAnLScpCi0gICAgICAgIHVkLnJlZ2lzdHJ5ID0gImh0dHA6Ly8lcyIgJSAodWQudXJsLnJlcGxhY2UoJ25wbTovLycsICcnLCAxKS5zcGxpdCgnOycpKVswXQotICAgICAgICBwcmVmaXhkaXIgPSAibnBtLyVzIiAlIHVkLnBrZ25hbWUKLSAgICAgICAgdWQucGtnZGF0YWRpciA9IGQuZXhwYW5kKCIke0RMX0RJUn0vJXMiICUgcHJlZml4ZGlyKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModWQucGtnZGF0YWRpcik6Ci0gICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIodWQucGtnZGF0YWRpcikKLSAgICAgICAgdWQubG9jYWxwYXRoID0gZC5leHBhbmQoIiR7RExfRElSfS9ucG0vJXMiICUgdWQuYmJucG1tYW5pZmVzdCkKKyAgICAgICAgICAgIHJhaXNlIE1pc3NpbmdQYXJhbWV0ZXJFcnJvcigiUGFyYW1ldGVyICd2ZXJzaW9uJyByZXF1aXJlZCIsIHVkLnVybCkKIAotICAgICAgICBzZWxmLmJhc2VjbWQgPSBkLmdldFZhcigiRkVUQ0hDTURfd2dldCIpIG9yICIvdXNyL2Jpbi9lbnYgd2dldCAtTyAtdCAyIC1UIDMwIC1udiAtLXBhc3NpdmUtZnRwIC0tbm8tY2hlY2stY2VydGlmaWNhdGUgIgotICAgICAgICB1ZC5wcmVmaXhkaXIgPSBwcmVmaXhkaXIKKyAgICAgICAgaWYgbm90IGlzX3NlbXZlcih1ZC52ZXJzaW9uKSBhbmQgbm90IHVkLnZlcnNpb24gPT0gImxhdGVzdCI6CisgICAgICAgICAgICByYWlzZSBQYXJhbWV0ZXJFcnJvcigiSW52YWxpZCAndmVyc2lvbicgcGFyYW1ldGVyIiwgdWQudXJsKQogCi0gICAgICAgIHVkLndyaXRlX3RhcmJhbGxzID0gKChkLmdldFZhcigiQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTIikgb3IgIjAiKSAhPSAiMCIpCi0gICAgICAgIG1pcnJvcnRhcmJhbGwgPSAnbnBtXyVzLSVzLnRhci54eicgJSAodWQucGtnbmFtZSwgdWQudmVyc2lvbikKLSAgICAgICAgbWlycm9ydGFyYmFsbCA9IG1pcnJvcnRhcmJhbGwucmVwbGFjZSgnLycsICctJykKLSAgICAgICAgdWQuZnVsbG1pcnJvciA9IG9zLnBhdGguam9pbihkLmdldFZhcigiRExfRElSIiksIG1pcnJvcnRhcmJhbGwpCi0gICAgICAgIHVkLm1pcnJvcnRhcmJhbGxzID0gW21pcnJvcnRhcmJhbGxdCisgICAgICAgICMgRXh0cmFjdCB0aGUgJ3JlZ2lzdHJ5JyBwYXJ0IG9mIHRoZSB1cmwKKyAgICAgICAgdWQucmVnaXN0cnkgPSByZS5zdWIociJebnBtOi8vIiwgImh0dHA6Ly8iLCB1ZC51cmwuc3BsaXQoIjsiKVswXSkKKworICAgICAgICAjIFVzaW5nIHRoZSAnZG93bmxvYWRmaWxlbmFtZScgcGFyYW1ldGVyIGFzIGxvY2FsIGZpbGVuYW1lCisgICAgICAgICMgb3IgdGhlIG5wbSBwYWNrYWdlIG5hbWUuCisgICAgICAgIGlmICJkb3dubG9hZGZpbGVuYW1lIiBpbiB1ZC5wYXJtOgorICAgICAgICAgICAgdWQubG9jYWxmaWxlID0gZC5leHBhbmQodWQucGFybVsiZG93bmxvYWRmaWxlbmFtZSJdKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgdWQubG9jYWxmaWxlID0gbnBtX2xvY2FsZmlsZSh1ZC5wYWNrYWdlLCB1ZC52ZXJzaW9uKQorCisgICAgICAgICMgR2V0IHRoZSBiYXNlICducG0nIGNvbW1hbmQKKyAgICAgICAgdWQuYmFzZWNtZCA9IGQuZ2V0VmFyKCJGRVRDSENNRF9ucG0iKSBvciAibnBtIgorCisgICAgICAgICMgVGhpcyBmZXRjaGVyIHJlc29sdmVzIGEgVVJJIGZyb20gYSBucG0gcGFja2FnZSBuYW1lIGFuZCB2ZXJzaW9uIGFuZAorICAgICAgICAjIHRoZW4gZm9yd2FyZHMgaXQgdG8gYSBwcm94eSBmZXRjaGVyLiBBIHJlc29sdmUgZmlsZSBjb250YWluaW5nIHRoZQorICAgICAgICAjIHJlc29sdmVkIFVSSSBpcyBjcmVhdGVkIHRvIGF2b2lkIHVud2FudGVkIG5ldHdvcmsgYWNjZXNzIChpZiB0aGUgZmlsZQorICAgICAgICAjIGFscmVhZHkgZXhpc3RzKS4gVGhlIG1hbmFnZW1lbnQgb2YgdGhlIGRvbmVzdGFtcCBmaWxlLCB0aGUgbG9ja2ZpbGUKKyAgICAgICAgIyBhbmQgdGhlIGNoZWNrc3VtcyBhcmUgZm9yd2FyZGVkIHRvIHRoZSBwcm94eSBmZXRjaGVyLgorICAgICAgICB1ZC5wcm94eSA9IE5vbmUKKyAgICAgICAgdWQubmVlZGRvbmVzdGFtcCA9IEZhbHNlCisgICAgICAgIHVkLnJlc29sdmVmaWxlID0gc2VsZi5sb2NhbHBhdGgodWQsIGQpICsgIi5yZXNvbHZlZCIKKworICAgIGRlZiBfcmVzb2x2ZV9wcm94eV91cmwoc2VsZiwgdWQsIGQpOgorICAgICAgICBkZWYgX25wbV92aWV3KCk6CisgICAgICAgICAgICBjb25maWdzID0gW10KKyAgICAgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgianNvbiIsICJ0cnVlIikpCisgICAgICAgICAgICBjb25maWdzLmFwcGVuZCgoInJlZ2lzdHJ5IiwgdWQucmVnaXN0cnkpKQorICAgICAgICAgICAgcGtndmVyID0gc2hsZXgucXVvdGUodWQucGFja2FnZSArICJAIiArIHVkLnZlcnNpb24pCisgICAgICAgICAgICBjbWQgPSB1ZC5iYXNlY21kICsgIiB2aWV3ICVzIiAlIHBrZ3ZlcgorICAgICAgICAgICAgZW52ID0gTnBtRW52aXJvbm1lbnQoZCkKKyAgICAgICAgICAgIGNoZWNrX25ldHdvcmtfYWNjZXNzKGQsIGNtZCwgdWQucmVnaXN0cnkpCisgICAgICAgICAgICB2aWV3X3N0cmluZyA9IGVudi5ydW4oY21kLCBjb25maWdzPWNvbmZpZ3MpCisKKyAgICAgICAgICAgIGlmIG5vdCB2aWV3X3N0cmluZzoKKyAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCJVbmF2YWlsYWJsZSBwYWNrYWdlICVzIiAlIHBrZ3ZlciwgdWQudXJsKQorCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdmlldyA9IGpzb24ubG9hZHModmlld19zdHJpbmcpCisKKyAgICAgICAgICAgICAgICBlcnJvciA9IHZpZXcuZ2V0KCJlcnJvciIpCisgICAgICAgICAgICAgICAgaWYgZXJyb3IgaXMgbm90IE5vbmU6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIEZldGNoRXJyb3IoZXJyb3IuZ2V0KCJzdW1tYXJ5IiksIHVkLnVybCkKKworICAgICAgICAgICAgICAgIGlmIHVkLnZlcnNpb24gPT0gImxhdGVzdCI6CisgICAgICAgICAgICAgICAgICAgIGJiLndhcm4oIlRoZSBucG0gcGFja2FnZSAlcyBpcyB1c2luZyB0aGUgbGF0ZXN0ICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJ2ZXJzaW9uIGF2YWlsYWJsZS4gVGhpcyBjb3VsZCBsZWFkIHRvICIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICJub24tcmVwcm9kdWNpYmxlIGJ1aWxkcy4iICUgcGtndmVyKQorICAgICAgICAgICAgICAgIGVsaWYgdWQudmVyc2lvbiAhPSB2aWV3LmdldCgidmVyc2lvbiIpOgorICAgICAgICAgICAgICAgICAgICByYWlzZSBQYXJhbWV0ZXJFcnJvcigiSW52YWxpZCAndmVyc2lvbicgcGFyYW1ldGVyIiwgdWQudXJsKQorCisgICAgICAgICAgICAgICAgcmV0dXJuIHZpZXcKKworICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgICAgIHJhaXNlIEZldGNoRXJyb3IoIkludmFsaWQgdmlldyBmcm9tIG5wbTogJXMiICUgc3RyKGUpLCB1ZC51cmwpCisKKyAgICAgICAgZGVmIF9nZXRfdXJsKHZpZXcpOgorICAgICAgICAgICAgdGFyYmFsbF91cmwgPSB2aWV3LmdldCgiZGlzdCIsIHt9KS5nZXQoInRhcmJhbGwiKQorCisgICAgICAgICAgICBpZiB0YXJiYWxsX3VybCBpcyBOb25lOgorICAgICAgICAgICAgICAgIHJhaXNlIEZldGNoRXJyb3IoIkludmFsaWQgJ2Rpc3QudGFyYmFsbCcgaW4gdmlldyIsIHVkLnVybCkKKworICAgICAgICAgICAgdXJpID0gVVJJKHRhcmJhbGxfdXJsKQorICAgICAgICAgICAgdXJpLnBhcmFtc1siZG93bmxvYWRmaWxlbmFtZSJdID0gdWQubG9jYWxmaWxlCisKKyAgICAgICAgICAgIGludGVncml0eSA9IHZpZXcuZ2V0KCJkaXN0Iiwge30pLmdldCgiaW50ZWdyaXR5IikKKyAgICAgICAgICAgIHNoYXN1bSA9IHZpZXcuZ2V0KCJkaXN0Iiwge30pLmdldCgic2hhc3VtIikKKworICAgICAgICAgICAgaWYgaW50ZWdyaXR5IGlzIG5vdCBOb25lOgorICAgICAgICAgICAgICAgIGNoZWNrc3VtX25hbWUsIGNoZWNrc3VtX2V4cGVjdGVkID0gbnBtX2ludGVncml0eShpbnRlZ3JpdHkpCisgICAgICAgICAgICAgICAgdXJpLnBhcmFtc1tjaGVja3N1bV9uYW1lXSA9IGNoZWNrc3VtX2V4cGVjdGVkCisgICAgICAgICAgICBlbGlmIHNoYXN1bSBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICB1cmkucGFyYW1zWyJzaGExc3VtIl0gPSBzaGFzdW0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcigiSW52YWxpZCAnZGlzdC5pbnRlZ3JpdHknIGluIHZpZXciLCB1ZC51cmwpCisKKyAgICAgICAgICAgIHJldHVybiBzdHIodXJpKQorCisgICAgICAgIHVybCA9IF9nZXRfdXJsKF9ucG1fdmlldygpKQorCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUodWQucmVzb2x2ZWZpbGUpKQorICAgICAgICB3aXRoIG9wZW4odWQucmVzb2x2ZWZpbGUsICJ3IikgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUodXJsKQorCisgICAgZGVmIF9zZXR1cF9wcm94eShzZWxmLCB1ZCwgZCk6CisgICAgICAgIGlmIHVkLnByb3h5IGlzIE5vbmU6CisgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModWQucmVzb2x2ZWZpbGUpOgorICAgICAgICAgICAgICAgIHNlbGYuX3Jlc29sdmVfcHJveHlfdXJsKHVkLCBkKQorCisgICAgICAgICAgICB3aXRoIG9wZW4odWQucmVzb2x2ZWZpbGUsICJyIikgYXMgZjoKKyAgICAgICAgICAgICAgICB1cmwgPSBmLnJlYWQoKQorCisgICAgICAgICAgICAjIEF2b2lkIGNvbmZsaWN0cyBiZXR3ZWVuIHRoZSBlbnZpcm9ubWVudCBkYXRhIGFuZDoKKyAgICAgICAgICAgICMgLSB0aGUgcHJveHkgdXJsIGNoZWNrc3VtCisgICAgICAgICAgICBkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCisgICAgICAgICAgICBkYXRhLmRlbFZhckZsYWdzKCJTUkNfVVJJIikKKyAgICAgICAgICAgIHVkLnByb3h5ID0gRmV0Y2goW3VybF0sIGRhdGEpCisKKyAgICBkZWYgX2dldF9wcm94eV9tZXRob2Qoc2VsZiwgdWQsIGQpOgorICAgICAgICBzZWxmLl9zZXR1cF9wcm94eSh1ZCwgZCkKKyAgICAgICAgcHJveHlfdXJsID0gdWQucHJveHkudXJsc1swXQorICAgICAgICBwcm94eV91ZCA9IHVkLnByb3h5LnVkW3Byb3h5X3VybF0KKyAgICAgICAgcHJveHlfZCA9IHVkLnByb3h5LmQKKyAgICAgICAgcHJveHlfdWQuc2V0dXBfbG9jYWxwYXRoKHByb3h5X2QpCisgICAgICAgIHJldHVybiBwcm94eV91ZC5tZXRob2QsIHByb3h5X3VkLCBwcm94eV9kCisKKyAgICBkZWYgdmVyaWZ5X2RvbmVzdGFtcChzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIlZlcmlmeSB0aGUgZG9uZXN0YW1wIGZpbGUiIiIKKyAgICAgICAgcHJveHlfbSwgcHJveHlfdWQsIHByb3h5X2QgPSBzZWxmLl9nZXRfcHJveHlfbWV0aG9kKHVkLCBkKQorICAgICAgICByZXR1cm4gcHJveHlfbS52ZXJpZnlfZG9uZXN0YW1wKHByb3h5X3VkLCBwcm94eV9kKQorCisgICAgZGVmIHVwZGF0ZV9kb25lc3RhbXAoc2VsZiwgdWQsIGQpOgorICAgICAgICAiIiJVcGRhdGUgdGhlIGRvbmVzdGFtcCBmaWxlIiIiCisgICAgICAgIHByb3h5X20sIHByb3h5X3VkLCBwcm94eV9kID0gc2VsZi5fZ2V0X3Byb3h5X21ldGhvZCh1ZCwgZCkKKyAgICAgICAgcHJveHlfbS51cGRhdGVfZG9uZXN0YW1wKHByb3h5X3VkLCBwcm94eV9kKQogCiAgICAgZGVmIG5lZWRfdXBkYXRlKHNlbGYsIHVkLCBkKToKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKToKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQotICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAiIiJGb3JjZSBhIGZldGNoLCBldmVuIGlmIGxvY2FscGF0aCBleGlzdHMgPyIiIgorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHModWQucmVzb2x2ZWZpbGUpOgorICAgICAgICAgICAgcmV0dXJuIFRydWUKKyAgICAgICAgaWYgdWQudmVyc2lvbiA9PSAibGF0ZXN0IjoKKyAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHByb3h5X20sIHByb3h5X3VkLCBwcm94eV9kID0gc2VsZi5fZ2V0X3Byb3h5X21ldGhvZCh1ZCwgZCkKKyAgICAgICAgcmV0dXJuIHByb3h5X20ubmVlZF91cGRhdGUocHJveHlfdWQsIHByb3h5X2QpCiAKLSAgICBkZWYgX3J1bnBhY2soc2VsZiwgdWQsIGQsIHBrZ2Z1bGxuYW1lOiBzdHIsIHF1aWV0PUZhbHNlKSAtPiBzdHI6Ci0gICAgICAgICIiIgotICAgICAgICBSdW5zIG5wbSBwYWNrIG9uIGEgZnVsbCBwYWNrYWdlIG5hbWUuCi0gICAgICAgIFJldHVybnMgdGhlIGZpbGVuYW1lIG9mIHRoZSBkb3dubG9hZGVkIHBhY2thZ2UKLSAgICAgICAgIiIiCi0gICAgICAgIGJiLmZldGNoMi5jaGVja19uZXR3b3JrX2FjY2VzcyhkLCBwa2dmdWxsbmFtZSwgdWQucmVnaXN0cnkpCi0gICAgICAgIGRsZGlyID0gZC5nZXRWYXIoIkRMX0RJUiIpCi0gICAgICAgIGRsZGlyID0gb3MucGF0aC5qb2luKGRsZGlyLCB1ZC5wcmVmaXhkaXIpCi0KLSAgICAgICAgY29tbWFuZCA9ICJucG0gcGFjayB7fSAtLXJlZ2lzdHJ5IHt9Ii5mb3JtYXQocGtnZnVsbG5hbWUsIHVkLnJlZ2lzdHJ5KQotICAgICAgICBsb2dnZXIuZGVidWcoMiwgIkZldGNoaW5nIHt9IHVzaW5nIGNvbW1hbmQgJ3t9JyBpbiB7fSIuZm9ybWF0KHBrZ2Z1bGxuYW1lLCBjb21tYW5kLCBkbGRpcikpCi0gICAgICAgIGZpbGVuYW1lID0gcnVuZmV0Y2hjbWQoY29tbWFuZCwgZCwgcXVpZXQsIHdvcmtkaXI9ZGxkaXIpCi0gICAgICAgIHJldHVybiBmaWxlbmFtZS5yc3RyaXAoKQotCi0gICAgZGVmIF91bnBhY2tkZXAoc2VsZiwgdWQsIHBrZywgZGF0YSwgZGVzdGRpciwgZGxkaXIsIGQpOgotICAgICAgICBmaWxlID0gZGF0YVtwa2ddWyd0Z3onXQotICAgICAgICBsb2dnZXIuZGVidWcoMiwgImZpbGUgdG8gZXh0cmFjdCBpcyAlcyIgJSBmaWxlKQotICAgICAgICBpZiBmaWxlLmVuZHN3aXRoKCcudGd6Jykgb3IgZmlsZS5lbmRzd2l0aCgnLnRhci5neicpIG9yIGZpbGUuZW5kc3dpdGgoJy50YXIuWicpOgotICAgICAgICAgICAgY21kID0gJ3RhciB4eiAtLXN0cmlwIDEgLS1uby1zYW1lLW93bmVyIC0td2FybmluZz1uby11bmtub3duLWtleXdvcmQgLWYgJXMvJXMnICUgKGRsZGlyLCBmaWxlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgYmIuZmF0YWwoIk5QTSBwYWNrYWdlICVzIGRvd25sb2FkZWQgbm90IGEgdGFyYmFsbCEiICUgZmlsZSkKLQotICAgICAgICAjIENoYW5nZSB0byBzdWJkaXIgYmVmb3JlIGV4ZWN1dGluZyBjb21tYW5kCi0gICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkZXN0ZGlyKToKLSAgICAgICAgICAgIG9zLm1ha2VkaXJzKGRlc3RkaXIpCi0gICAgICAgIHBhdGggPSBkLmdldFZhcignUEFUSCcpCi0gICAgICAgIGlmIHBhdGg6Ci0gICAgICAgICAgICBjbWQgPSAiUEFUSD1cIiVzXCIgJXMiICUgKHBhdGgsIGNtZCkKLSAgICAgICAgYmIubm90ZSgiVW5wYWNraW5nICVzIHRvICVzLyIgJSAoZmlsZSwgZGVzdGRpcikpCi0gICAgICAgIHJldCA9IHN1YnByb2Nlc3MuY2FsbChjbWQsIHByZWV4ZWNfZm49c3VicHJvY2Vzc19zZXR1cCwgc2hlbGw9VHJ1ZSwgY3dkPWRlc3RkaXIpCi0KLSAgICAgICAgaWYgcmV0ICE9IDA6Ci0gICAgICAgICAgICByYWlzZSBVbnBhY2tFcnJvcigiVW5wYWNrIGNvbW1hbmQgJXMgZmFpbGVkIHdpdGggcmV0dXJuIHZhbHVlICVzIiAlIChjbWQsIHJldCksIHVkLnVybCkKLQotICAgICAgICBpZiAnZGVwcycgbm90IGluIGRhdGFbcGtnXToKLSAgICAgICAgICAgIHJldHVybgotICAgICAgICBmb3IgZGVwIGluIGRhdGFbcGtnXVsnZGVwcyddOgotICAgICAgICAgICAgc2VsZi5fdW5wYWNrZGVwKHVkLCBkZXAsIGRhdGFbcGtnXVsnZGVwcyddLCAiJXMvbm9kZV9tb2R1bGVzLyVzIiAlIChkZXN0ZGlyLCBkZXApLCBkbGRpciwgZCkKLQotCi0gICAgZGVmIHVucGFjayhzZWxmLCB1ZCwgZGVzdGRpciwgZCk6Ci0gICAgICAgIGRsZGlyID0gZC5nZXRWYXIoIkRMX0RJUiIpCi0gICAgICAgIHdpdGggb3BlbigiJXMvbnBtLyVzIiAlIChkbGRpciwgdWQuYmJucG1tYW5pZmVzdCkpIGFzIGRhdGFmaWxlOgotICAgICAgICAgICAgd29ya29iaiA9IGpzb24ubG9hZChkYXRhZmlsZSkKLSAgICAgICAgZGxkaXIgPSAiJXMvJXMiICUgKG9zLnBhdGguZGlybmFtZSh1ZC5sb2NhbHBhdGgpLCB1ZC5wa2duYW1lKQotCi0gICAgICAgIGlmICdzdWJkaXInIGluIHVkLnBhcm06Ci0gICAgICAgICAgICB1bnBhY2tkaXIgPSAnJXMvJXMnICUgKGRlc3RkaXIsIHVkLnBhcm0uZ2V0KCdzdWJkaXInKSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHVucGFja2RpciA9ICclcy9ucG1wa2cnICUgZGVzdGRpcgotCi0gICAgICAgIHNlbGYuX3VucGFja2RlcCh1ZCwgdWQucGtnbmFtZSwgd29ya29iaiwgdW5wYWNrZGlyLCBkbGRpciwgZCkKLQotICAgIGRlZiBfcGFyc2VfdmlldyhzZWxmLCBvdXRwdXQpOgotICAgICAgICAnJycKLSAgICAgICAgUGFyc2UgdGhlIG91dHB1dCBvZiBucG0gdmlldyAtLWpzb247IHRoZSBsYXN0IEpTT04gcmVzdWx0Ci0gICAgICAgIGlzIGFzc3VtZWQgdG8gYmUgdGhlIG9uZSB0aGF0IHdlJ3JlIGludGVyZXN0ZWQgaW4uCi0gICAgICAgICcnJwotICAgICAgICBwZGF0YSA9IGpzb24ubG9hZHMob3V0cHV0KTsKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmV0dXJuIHBkYXRhWy0xXQotICAgICAgICBleGNlcHQ6Ci0gICAgICAgICAgICByZXR1cm4gcGRhdGEKLQotICAgIGRlZiBfZ2V0ZGVwZW5kZW5jaWVzKHNlbGYsIHBrZywgZGF0YSwgdmVyc2lvbiwgZCwgdWQsIG9wdGlvbmFsPUZhbHNlLCBmZXRjaGVkbGlzdD1Ob25lKToKLSAgICAgICAgaWYgZmV0Y2hlZGxpc3QgaXMgTm9uZToKLSAgICAgICAgICAgIGZldGNoZWRsaXN0ID0gW10KLSAgICAgICAgcGtnZnVsbG5hbWUgPSBwa2cKLSAgICAgICAgaWYgdmVyc2lvbiAhPSAnKicgYW5kIG5vdCAnLycgaW4gdmVyc2lvbjoKLSAgICAgICAgICAgIHBrZ2Z1bGxuYW1lICs9ICJAJyVzJyIgJSB2ZXJzaW9uCi0gICAgICAgIGlmIHBrZ2Z1bGxuYW1lIGluIGZldGNoZWRsaXN0OgotICAgICAgICAgICAgcmV0dXJuCi0KLSAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJDYWxsaW5nIGdldGRlcHMgb24gJXMiICUgcGtnKQotICAgICAgICBmZXRjaGNtZCA9ICJucG0gdmlldyAlcyAtLWpzb24gLS1yZWdpc3RyeSAlcyIgJSAocGtnZnVsbG5hbWUsIHVkLnJlZ2lzdHJ5KQotICAgICAgICBvdXRwdXQgPSBydW5mZXRjaGNtZChmZXRjaGNtZCwgZCwgVHJ1ZSkKLSAgICAgICAgcGRhdGEgPSBzZWxmLl9wYXJzZV92aWV3KG91dHB1dCkKLSAgICAgICAgaWYgbm90IHBkYXRhOgotICAgICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcigiVGhlIGNvbW1hbmQgJyVzJyByZXR1cm5lZCBubyBvdXRwdXQiICUgZmV0Y2hjbWQpCi0gICAgICAgIGlmIG9wdGlvbmFsOgotICAgICAgICAgICAgcGtnX29zID0gcGRhdGEuZ2V0KCdvcycsIE5vbmUpCi0gICAgICAgICAgICBpZiBwa2dfb3M6Ci0gICAgICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGtnX29zLCBsaXN0KToKLSAgICAgICAgICAgICAgICAgICAgcGtnX29zID0gW3BrZ19vc10KLSAgICAgICAgICAgICAgICBibGFja2xpc3QgPSBGYWxzZQotICAgICAgICAgICAgICAgIGZvciBpdGVtIGluIHBrZ19vczoKLSAgICAgICAgICAgICAgICAgICAgaWYgaXRlbS5zdGFydHN3aXRoKCchJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBibGFja2xpc3QgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGlmIChub3QgYmxhY2tsaXN0IGFuZCAnbGludXgnIG5vdCBpbiBwa2dfb3MpIG9yICchbGludXgnIGluIHBrZ19vczoKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJTa2lwcGluZyAlcyBzaW5jZSBpdCdzIGluY29tcGF0aWJsZSB3aXRoIExpbnV4IiAlIHBrZykKLSAgICAgICAgICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIGZpbGVuYW1lID0gc2VsZi5fcnVucGFjayh1ZCwgZCwgcGtnZnVsbG5hbWUpCi0gICAgICAgIGRhdGFbcGtnXSA9IHt9Ci0gICAgICAgIGRhdGFbcGtnXVsndGd6J10gPSBmaWxlbmFtZQotICAgICAgICBmZXRjaGVkbGlzdC5hcHBlbmQocGtnZnVsbG5hbWUpCi0KLSAgICAgICAgZGVwZW5kZW5jaWVzID0gcGRhdGEuZ2V0KCdkZXBlbmRlbmNpZXMnLCB7fSkKLSAgICAgICAgb3B0aW9uYWxEZXBlbmRlbmNpZXMgPSBwZGF0YS5nZXQoJ29wdGlvbmFsRGVwZW5kZW5jaWVzJywge30pCi0gICAgICAgIGRlcGVuZGVuY2llcy51cGRhdGUob3B0aW9uYWxEZXBlbmRlbmNpZXMpCi0gICAgICAgIGRlcHNmb3VuZCA9IHt9Ci0gICAgICAgIG9wdGRlcHNmb3VuZCA9IHt9Ci0gICAgICAgIGRhdGFbcGtnXVsnZGVwcyddID0ge30KLSAgICAgICAgZm9yIGRlcCBpbiBkZXBlbmRlbmNpZXM6Ci0gICAgICAgICAgICBpZiBkZXAgaW4gb3B0aW9uYWxEZXBlbmRlbmNpZXM6Ci0gICAgICAgICAgICAgICAgb3B0ZGVwc2ZvdW5kW2RlcF0gPSBkZXBlbmRlbmNpZXNbZGVwXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkZXBzZm91bmRbZGVwXSA9IGRlcGVuZGVuY2llc1tkZXBdCi0gICAgICAgIGZvciBkZXAsIHZlcnNpb24gaW4gb3B0ZGVwc2ZvdW5kLml0ZW1zKCk6Ci0gICAgICAgICAgICBzZWxmLl9nZXRkZXBlbmRlbmNpZXMoZGVwLCBkYXRhW3BrZ11bJ2RlcHMnXSwgdmVyc2lvbiwgZCwgdWQsIG9wdGlvbmFsPVRydWUsIGZldGNoZWRsaXN0PWZldGNoZWRsaXN0KQotICAgICAgICBmb3IgZGVwLCB2ZXJzaW9uIGluIGRlcHNmb3VuZC5pdGVtcygpOgotICAgICAgICAgICAgc2VsZi5fZ2V0ZGVwZW5kZW5jaWVzKGRlcCwgZGF0YVtwa2ddWydkZXBzJ10sIHZlcnNpb24sIGQsIHVkLCBmZXRjaGVkbGlzdD1mZXRjaGVkbGlzdCkKLQotICAgIGRlZiBfZ2V0c2hyaW5rZWRkZXBlbmRlbmNpZXMoc2VsZiwgcGtnLCBkYXRhLCB2ZXJzaW9uLCBkLCB1ZCwgbG9ja2Rvd24sIG1hbmlmZXN0LCB0b3BsZXZlbD1UcnVlKToKLSAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJOUE0gc2hyaW5rd3JhcCBmaWxlIGlzICVzIiAlIGRhdGEpCi0gICAgICAgIGlmIHRvcGxldmVsOgotICAgICAgICAgICAgbmFtZSA9IGRhdGEuZ2V0KCduYW1lJywgTm9uZSkKLSAgICAgICAgICAgIGlmIG5hbWUgYW5kIG5hbWUgIT0gcGtnOgotICAgICAgICAgICAgICAgIGZvciBvYmogaW4gZGF0YS5nZXQoJ2RlcGVuZGVuY2llcycsIFtdKToKLSAgICAgICAgICAgICAgICAgICAgaWYgb2JqID09IHBrZzoKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX2dldHNocmlua2VkZGVwZW5kZW5jaWVzKG9iaiwgZGF0YVsnZGVwZW5kZW5jaWVzJ11bb2JqXSwgZGF0YVsnZGVwZW5kZW5jaWVzJ11bb2JqXVsndmVyc2lvbiddLCBkLCB1ZCwgbG9ja2Rvd24sIG1hbmlmZXN0LCBGYWxzZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybgotCi0gICAgICAgIHBrZ25hbWVXaXRoVmVyc2lvbiA9ICJ7fUB7fSIuZm9ybWF0KHBrZywgdmVyc2lvbikKLSAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJHZXQgZGVwZW5kZW5jaWVzIGZvciB7fSIuZm9ybWF0KHBrZ25hbWVXaXRoVmVyc2lvbikpCi0gICAgICAgIGZpbGVuYW1lID0gc2VsZi5fcnVucGFjayh1ZCwgZCwgcGtnbmFtZVdpdGhWZXJzaW9uKQotICAgICAgICBtYW5pZmVzdFtwa2ddID0ge30KLSAgICAgICAgbWFuaWZlc3RbcGtnXVsndGd6J10gPSBmaWxlbmFtZQotICAgICAgICBtYW5pZmVzdFtwa2ddWydkZXBzJ10gPSB7fQotCi0gICAgICAgIGlmIHBrZyBpbiBsb2NrZG93bjoKLSAgICAgICAgICAgIHNoYTFfZXhwZWN0ZWQgPSBsb2NrZG93bltwa2ddW3ZlcnNpb25dCi0gICAgICAgICAgICBzaGExX2RhdGEgPSBiYi51dGlscy5zaGExX2ZpbGUoIm5wbS8lcy8lcyIgJSAodWQucGtnbmFtZSwgbWFuaWZlc3RbcGtnXVsndGd6J10pKQotICAgICAgICAgICAgaWYgc2hhMV9leHBlY3RlZCAhPSBzaGExX2RhdGE6Ci0gICAgICAgICAgICAgICAgbXNnID0gIlxuRmlsZTogJyVzJyBoYXMgJXMgY2hlY2tzdW0gJXMgd2hlbiAlcyB3YXMgZXhwZWN0ZWQiICUgKG1hbmlmZXN0W3BrZ11bJ3RneiddLCAnc2hhMScsIHNoYTFfZGF0YSwgc2hhMV9leHBlY3RlZCkKLSAgICAgICAgICAgICAgICByYWlzZSBDaGVja3N1bUVycm9yKCdDaGVja3N1bSBtaXNtYXRjaCElcycgJSBtc2cpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBsb2dnZXIuZGVidWcoMiwgIk5vIGxvY2tkb3duIGRhdGEgZm9yICVzQCVzIiAlIChwa2csIHZlcnNpb24pKQotCi0gICAgICAgIGlmICdkZXBlbmRlbmNpZXMnIGluIGRhdGE6Ci0gICAgICAgICAgICBmb3Igb2JqIGluIGRhdGFbJ2RlcGVuZGVuY2llcyddOgotICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiRm91bmQgZGVwIGlzICVzIiAlIHN0cihvYmopKQotICAgICAgICAgICAgICAgIHNlbGYuX2dldHNocmlua2VkZGVwZW5kZW5jaWVzKG9iaiwgZGF0YVsnZGVwZW5kZW5jaWVzJ11bb2JqXSwgZGF0YVsnZGVwZW5kZW5jaWVzJ11bb2JqXVsndmVyc2lvbiddLCBkLCB1ZCwgbG9ja2Rvd24sIG1hbmlmZXN0W3BrZ11bJ2RlcHMnXSwgRmFsc2UpCisgICAgZGVmIHRyeV9taXJyb3JzKHNlbGYsIGZldGNoLCB1ZCwgZCwgbWlycm9ycyk6CisgICAgICAgICIiIlRyeSB0byB1c2UgYSBtaXJyb3IiIiIKKyAgICAgICAgcHJveHlfbSwgcHJveHlfdWQsIHByb3h5X2QgPSBzZWxmLl9nZXRfcHJveHlfbWV0aG9kKHVkLCBkKQorICAgICAgICByZXR1cm4gcHJveHlfbS50cnlfbWlycm9ycyhmZXRjaCwgcHJveHlfdWQsIHByb3h5X2QsIG1pcnJvcnMpCiAKICAgICBkZWYgZG93bmxvYWQoc2VsZiwgdWQsIGQpOgogICAgICAgICAiIiJGZXRjaCB1cmwiIiIKLSAgICAgICAganNvbmRlcG9iaiA9IHt9Ci0gICAgICAgIHNocmlua29iaiA9IHt9Ci0gICAgICAgIGxvY2tkb3duID0ge30KKyAgICAgICAgc2VsZi5fc2V0dXBfcHJveHkodWQsIGQpCisgICAgICAgIHVkLnByb3h5LmRvd25sb2FkKCkKIAotICAgICAgICBpZiBub3Qgb3MubGlzdGRpcih1ZC5wa2dkYXRhZGlyKSBhbmQgb3MucGF0aC5leGlzdHModWQuZnVsbG1pcnJvcik6Ci0gICAgICAgICAgICBkZXN0ID0gZC5nZXRWYXIoIkRMX0RJUiIpCi0gICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZGVzdCkKLSAgICAgICAgICAgIHJ1bmZldGNoY21kKCJ0YXIgLXhKZiAlcyIgJSAodWQuZnVsbG1pcnJvciksIGQsIHdvcmtkaXI9ZGVzdCkKLSAgICAgICAgICAgIHJldHVybgorICAgIGRlZiB1bnBhY2soc2VsZiwgdWQsIHJvb3RkaXIsIGQpOgorICAgICAgICAiIiJVbnBhY2sgdGhlIGRvd25sb2FkZWQgYXJjaGl2ZSIiIgorICAgICAgICBkZXN0c3VmZml4ID0gdWQucGFybS5nZXQoImRlc3RzdWZmaXgiLCAibnBtIikKKyAgICAgICAgZGVzdGRpciA9IG9zLnBhdGguam9pbihyb290ZGlyLCBkZXN0c3VmZml4KQorICAgICAgICBucG1fdW5wYWNrKHVkLmxvY2FscGF0aCwgZGVzdGRpciwgZCkKIAotICAgICAgICBpZiB1ZC5wYXJtLmdldCgibm92ZXJpZnkiLCBOb25lKSAhPSAnMSc6Ci0gICAgICAgICAgICBzaHdyZiA9IGQuZ2V0VmFyKCdOUE1fU0hSSU5LV1JBUCcpCi0gICAgICAgICAgICBsb2dnZXIuZGVidWcoMiwgIk5QTSBzaHJpbmt3cmFwIGZpbGUgaXMgJXMiICUgc2h3cmYpCi0gICAgICAgICAgICBpZiBzaHdyZjoKLSAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihzaHdyZikgYXMgZGF0YWZpbGU6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzaHJpbmtvYmogPSBqc29uLmxvYWQoZGF0YWZpbGUpCi0gICAgICAgICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgICAgICAgICByYWlzZSBGZXRjaEVycm9yKCdFcnJvciBsb2FkaW5nIE5QTV9TSFJJTktXUkFQIGZpbGUgIiVzIiBmb3IgJXM6ICVzJyAlIChzaHdyZiwgdWQucGtnbmFtZSwgc3RyKGUpKSkKLSAgICAgICAgICAgIGVsaWYgbm90IHVkLmlnbm9yZV9jaGVja3N1bXM6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ01pc3Npbmcgc2hyaW5rd3JhcCBmaWxlIGluIE5QTV9TSFJJTktXUkFQIGZvciAlcywgdGhpcyB3aWxsIGxlYWQgdG8gdW5yZWxpYWJsZSBidWlsZHMhJyAlIHVkLnBrZ25hbWUpCi0gICAgICAgICAgICBsY2tkZiA9IGQuZ2V0VmFyKCdOUE1fTE9DS0RPV04nKQotICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDIsICJOUE0gbG9ja2Rvd24gZmlsZSBpcyAlcyIgJSBsY2tkZikKLSAgICAgICAgICAgIGlmIGxja2RmOgotICAgICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGxja2RmKSBhcyBkYXRhZmlsZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvY2tkb3duID0ganNvbi5sb2FkKGRhdGFmaWxlKQotICAgICAgICAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcignRXJyb3IgbG9hZGluZyBOUE1fTE9DS0RPV04gZmlsZSAiJXMiIGZvciAlczogJXMnICUgKGxja2RmLCB1ZC5wa2duYW1lLCBzdHIoZSkpKQotICAgICAgICAgICAgZWxpZiBub3QgdWQuaWdub3JlX2NoZWNrc3VtczoKLSAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygnTWlzc2luZyBsb2NrZG93biBmaWxlIGluIE5QTV9MT0NLRE9XTiBmb3IgJXMsIHRoaXMgd2lsbCBsZWFkIHRvIHVucmVwcm9kdWNpYmxlIGJ1aWxkcyEnICUgdWQucGtnbmFtZSkKKyAgICBkZWYgY2xlYW4oc2VsZiwgdWQsIGQpOgorICAgICAgICAiIiJDbGVhbiBhbnkgZXhpc3RpbmcgZnVsbCBvciBwYXJ0aWFsIGRvd25sb2FkIiIiCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHVkLnJlc29sdmVmaWxlKToKKyAgICAgICAgICAgIHNlbGYuX3NldHVwX3Byb3h5KHVkLCBkKQorICAgICAgICAgICAgdWQucHJveHkuY2xlYW4oKQorICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKHVkLnJlc29sdmVmaWxlKQogCi0gICAgICAgIGlmICgnbmFtZScgbm90IGluIHNocmlua29iaik6Ci0gICAgICAgICAgICBzZWxmLl9nZXRkZXBlbmRlbmNpZXModWQucGtnbmFtZSwganNvbmRlcG9iaiwgdWQudmVyc2lvbiwgZCwgdWQpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICBzZWxmLl9nZXRzaHJpbmtlZGRlcGVuZGVuY2llcyh1ZC5wa2duYW1lLCBzaHJpbmtvYmosIHVkLnZlcnNpb24sIGQsIHVkLCBsb2NrZG93biwganNvbmRlcG9iaikKLQotICAgICAgICB3aXRoIG9wZW4odWQubG9jYWxwYXRoLCAndycpIGFzIG91dGZpbGU6Ci0gICAgICAgICAgICBqc29uLmR1bXAoanNvbmRlcG9iaiwgb3V0ZmlsZSkKLQotICAgIGRlZiBidWlsZF9taXJyb3JfZGF0YShzZWxmLCB1ZCwgZCk6Ci0gICAgICAgICMgR2VuZXJhdGUgYSBtaXJyb3IgdGFyYmFsbCBpZiBuZWVkZWQKLSAgICAgICAgaWYgdWQud3JpdGVfdGFyYmFsbHMgYW5kIG5vdCBvcy5wYXRoLmV4aXN0cyh1ZC5mdWxsbWlycm9yKToKLSAgICAgICAgICAgICMgaXQncyBwb3NzaWJsZSB0aGF0IHRoaXMgc3ltbGluayBwb2ludHMgdG8gcmVhZC1vbmx5IGZpbGVzeXN0ZW0gd2l0aCBQUkVNSVJST1IKLSAgICAgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKHVkLmZ1bGxtaXJyb3IpOgotICAgICAgICAgICAgICAgIG9zLnVubGluayh1ZC5mdWxsbWlycm9yKQotCi0gICAgICAgICAgICBkbGRpciA9IGQuZ2V0VmFyKCJETF9ESVIiKQotICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkNyZWF0aW5nIHRhcmJhbGwgb2YgbnBtIGRhdGEiKQotICAgICAgICAgICAgcnVuZmV0Y2hjbWQoInRhciAtY0pmICVzIG5wbS8lcyBucG0vJXMiICUgKHVkLmZ1bGxtaXJyb3IsIHVkLmJibnBtbWFuaWZlc3QsIHVkLnBrZ25hbWUpLCBkLAotICAgICAgICAgICAgICAgICAgICAgICAgd29ya2Rpcj1kbGRpcikKLSAgICAgICAgICAgIHJ1bmZldGNoY21kKCJ0b3VjaCAlcy5kb25lIiAlICh1ZC5mdWxsbWlycm9yKSwgZCwgd29ya2Rpcj1kbGRpcikKKyAgICBkZWYgZG9uZShzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIklzIHRoZSBkb3dubG9hZCBkb25lID8iIiIKKyAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHVkLnJlc29sdmVmaWxlKToKKyAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBwcm94eV9tLCBwcm94eV91ZCwgcHJveHlfZCA9IHNlbGYuX2dldF9wcm94eV9tZXRob2QodWQsIGQpCisgICAgICAgIHJldHVybiBwcm94eV9tLmRvbmUocHJveHlfdWQsIHByb3h5X2QpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9ucG1zdy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL25wbXN3LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMzUxMWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9ucG1zdy5weQpAQCAtMCwwICsxLDI1NSBAQAorIyBDb3B5cmlnaHQgKEMpIDIwMjAgU2F2b2lyLUZhaXJlIExpbnV4CisjCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKKyMKKyIiIgorQml0QmFrZSAnRmV0Y2gnIG5wbSBzaHJpbmt3cmFwIGltcGxlbWVudGF0aW9uCisKK25wbSBmZXRjaGVyIHN1cHBvcnQgdGhlIFNSQ19VUkkgd2l0aCBmb3JtYXQgb2Y6CitTUkNfVVJJID0gIm5wbXN3Oi8vc29tZS5yZWdpc3RyeS51cmw7T3B0aW9uQT14eHg7T3B0aW9uQj14eHg7Li4uIgorCitTdXBwb3J0ZWQgU1JDX1VSSSBvcHRpb25zIGFyZToKKworLSBkZXYKKyAgIFNldCB0byAxIHRvIGFsc28gaW5zdGFsbCBkZXZEZXBlbmRlbmNpZXMuCisKKy0gZGVzdHN1ZmZpeAorICAgIFNwZWNpZmllcyB0aGUgZGlyZWN0b3J5IHRvIHVzZSB0byB1bnBhY2sgdGhlIGRlcGVuZGVuY2llcyAoZGVmYXVsdDogJHtTfSkuCisiIiIKKworaW1wb3J0IGpzb24KK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgYmIKK2Zyb20gYmIuZmV0Y2gyIGltcG9ydCBGZXRjaAorZnJvbSBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCitmcm9tIGJiLmZldGNoMiBpbXBvcnQgUGFyYW1ldGVyRXJyb3IKK2Zyb20gYmIuZmV0Y2gyIGltcG9ydCBVUkkKK2Zyb20gYmIuZmV0Y2gyLm5wbSBpbXBvcnQgbnBtX2ludGVncml0eQorZnJvbSBiYi5mZXRjaDIubnBtIGltcG9ydCBucG1fbG9jYWxmaWxlCitmcm9tIGJiLmZldGNoMi5ucG0gaW1wb3J0IG5wbV91bnBhY2sKK2Zyb20gYmIudXRpbHMgaW1wb3J0IGlzX3NlbXZlcgorCitkZWYgZm9yZWFjaF9kZXBlbmRlbmNpZXMoc2hyaW5rd3JhcCwgY2FsbGJhY2s9Tm9uZSwgZGV2PUZhbHNlKToKKyAgICAiIiIKKyAgICAgICAgUnVuIGEgY2FsbGJhY2sgZm9yIGVhY2ggZGVwZW5kZW5jaWVzIG9mIGEgc2hyaW5rd3JhcCBmaWxlLgorICAgICAgICBUaGUgY2FsbGJhY2sgaXMgdXNpbmcgdGhlIGZvcm1hdDoKKyAgICAgICAgICAgIGNhbGxiYWNrKG5hbWUsIHBhcmFtcywgZGVwdHJlZSkKKyAgICAgICAgd2l0aDoKKyAgICAgICAgICAgIG5hbWUgPSB0aGUgcGFja2FnZSBuYW1lIChzdHJpbmcpCisgICAgICAgICAgICBwYXJhbXMgPSB0aGUgcGFja2FnZSBwYXJhbWV0ZXJzIChkaWN0aW9uYXJ5KQorICAgICAgICAgICAgZGVwdHJlZSA9IHRoZSBwYWNrYWdlIGRlcGVuZGVuY3kgdHJlZSAoYXJyYXkgb2Ygc3RyaW5ncykKKyAgICAiIiIKKyAgICBkZWYgX3dhbGtfZGVwcyhkZXBzLCBkZXB0cmVlKToKKyAgICAgICAgZm9yIG5hbWUgaW4gZGVwczoKKyAgICAgICAgICAgIHN1YnRyZWUgPSBbKmRlcHRyZWUsIG5hbWVdCisgICAgICAgICAgICBfd2Fsa19kZXBzKGRlcHNbbmFtZV0uZ2V0KCJkZXBlbmRlbmNpZXMiLCB7fSksIHN1YnRyZWUpCisgICAgICAgICAgICBpZiBjYWxsYmFjayBpcyBub3QgTm9uZToKKyAgICAgICAgICAgICAgICBpZiBkZXBzW25hbWVdLmdldCgiZGV2IiwgRmFsc2UpIGFuZCBub3QgZGV2OgorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGVsaWYgZGVwc1tuYW1lXS5nZXQoImJ1bmRsZWQiLCBGYWxzZSk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgY2FsbGJhY2sobmFtZSwgZGVwc1tuYW1lXSwgc3VidHJlZSkKKworICAgIF93YWxrX2RlcHMoc2hyaW5rd3JhcC5nZXQoImRlcGVuZGVuY2llcyIsIHt9KSwgW10pCisKK2NsYXNzIE5wbVNocmlua1dyYXAoRmV0Y2hNZXRob2QpOgorICAgICIiIkNsYXNzIHRvIGZldGNoIGFsbCBwYWNrYWdlIGZyb20gYSBzaHJpbmt3cmFwIGZpbGUiIiIKKworICAgIGRlZiBzdXBwb3J0cyhzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIkNoZWNrIGlmIGEgZ2l2ZW4gdXJsIGNhbiBiZSBmZXRjaGVkIHdpdGggbnBtc3ciIiIKKyAgICAgICAgcmV0dXJuIHVkLnR5cGUgaW4gWyJucG1zdyJdCisKKyAgICBkZWYgdXJsZGF0YV9pbml0KHNlbGYsIHVkLCBkKToKKyAgICAgICAgIiIiSW5pdCBucG1zdyBzcGVjaWZpYyB2YXJpYWJsZXMgd2l0aGluIHVybCBkYXRhIiIiCisKKyAgICAgICAgIyBHZXQgdGhlICdzaHJpbmt3cmFwJyBwYXJhbWV0ZXIKKyAgICAgICAgdWQuc2hyaW5rd3JhcF9maWxlID0gcmUuc3ViKHIiXm5wbXN3Oi8vIiwgIiIsIHVkLnVybC5zcGxpdCgiOyIpWzBdKQorCisgICAgICAgICMgR2V0IHRoZSAnZGV2JyBwYXJhbWV0ZXIKKyAgICAgICAgdWQuZGV2ID0gYmIudXRpbHMudG9fYm9vbGVhbih1ZC5wYXJtLmdldCgiZGV2IiksIEZhbHNlKQorCisgICAgICAgICMgUmVzb2x2ZSB0aGUgZGVwZW5kZW5jaWVzCisgICAgICAgIHVkLmRlcHMgPSBbXQorCisgICAgICAgIGRlZiBfcmVzb2x2ZV9kZXBlbmRlbmN5KG5hbWUsIHBhcmFtcywgZGVwdHJlZSk6CisgICAgICAgICAgICB1cmwgPSBOb25lCisgICAgICAgICAgICBsb2NhbHBhdGggPSBOb25lCisgICAgICAgICAgICBleHRyYXBhdGhzID0gW10KKyAgICAgICAgICAgIGRlc3RzdWJkaXJzID0gW29zLnBhdGguam9pbigibm9kZV9tb2R1bGVzIiwgZGVwKSBmb3IgZGVwIGluIGRlcHRyZWVdCisgICAgICAgICAgICBkZXN0c3VmZml4ID0gb3MucGF0aC5qb2luKCpkZXN0c3ViZGlycykKKworICAgICAgICAgICAgaW50ZWdyaXR5ID0gcGFyYW1zLmdldCgiaW50ZWdyaXR5IiwgTm9uZSkKKyAgICAgICAgICAgIHJlc29sdmVkID0gcGFyYW1zLmdldCgicmVzb2x2ZWQiLCBOb25lKQorICAgICAgICAgICAgdmVyc2lvbiA9IHBhcmFtcy5nZXQoInZlcnNpb24iLCBOb25lKQorCisgICAgICAgICAgICAjIEhhbmRsZSByZWdpc3RyeSBzb3VyY2VzCisgICAgICAgICAgICBpZiBpc19zZW12ZXIodmVyc2lvbikgYW5kIHJlc29sdmVkIGFuZCBpbnRlZ3JpdHk6CisgICAgICAgICAgICAgICAgbG9jYWxmaWxlID0gbnBtX2xvY2FsZmlsZShuYW1lLCB2ZXJzaW9uKQorCisgICAgICAgICAgICAgICAgdXJpID0gVVJJKHJlc29sdmVkKQorICAgICAgICAgICAgICAgIHVyaS5wYXJhbXNbImRvd25sb2FkZmlsZW5hbWUiXSA9IGxvY2FsZmlsZQorCisgICAgICAgICAgICAgICAgY2hlY2tzdW1fbmFtZSwgY2hlY2tzdW1fZXhwZWN0ZWQgPSBucG1faW50ZWdyaXR5KGludGVncml0eSkKKyAgICAgICAgICAgICAgICB1cmkucGFyYW1zW2NoZWNrc3VtX25hbWVdID0gY2hlY2tzdW1fZXhwZWN0ZWQKKworICAgICAgICAgICAgICAgIHVybCA9IHN0cih1cmkpCisKKyAgICAgICAgICAgICAgICBsb2NhbHBhdGggPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoIkRMX0RJUiIpLCBsb2NhbGZpbGUpCisKKyAgICAgICAgICAgICAgICAjIENyZWF0ZSBhIHJlc29sdmUgZmlsZSB0byBtaW1pYyB0aGUgbnBtIGZldGNoZXIgYW5kIGFsbG93CisgICAgICAgICAgICAgICAgIyByZS11c2FiaWxpdHkgb2YgdGhlIGRvd25sb2FkZWQgZmlsZS4KKyAgICAgICAgICAgICAgICByZXNvbHZlZmlsZSA9IGxvY2FscGF0aCArICIucmVzb2x2ZWQiCisKKyAgICAgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKHJlc29sdmVmaWxlKSkKKyAgICAgICAgICAgICAgICB3aXRoIG9wZW4ocmVzb2x2ZWZpbGUsICJ3IikgYXMgZjoKKyAgICAgICAgICAgICAgICAgICAgZi53cml0ZSh1cmwpCisKKyAgICAgICAgICAgICAgICBleHRyYXBhdGhzLmFwcGVuZChyZXNvbHZlZmlsZSkKKworICAgICAgICAgICAgIyBIYW5kbGUgaHR0cCB0YXJiYWxsIHNvdXJjZXMKKyAgICAgICAgICAgIGVsaWYgdmVyc2lvbi5zdGFydHN3aXRoKCJodHRwIikgYW5kIGludGVncml0eToKKyAgICAgICAgICAgICAgICBsb2NhbGZpbGUgPSBvcy5wYXRoLmpvaW4oIm5wbTIiLCBvcy5wYXRoLmJhc2VuYW1lKHZlcnNpb24pKQorCisgICAgICAgICAgICAgICAgdXJpID0gVVJJKHZlcnNpb24pCisgICAgICAgICAgICAgICAgdXJpLnBhcmFtc1siZG93bmxvYWRmaWxlbmFtZSJdID0gbG9jYWxmaWxlCisKKyAgICAgICAgICAgICAgICBjaGVja3N1bV9uYW1lLCBjaGVja3N1bV9leHBlY3RlZCA9IG5wbV9pbnRlZ3JpdHkoaW50ZWdyaXR5KQorICAgICAgICAgICAgICAgIHVyaS5wYXJhbXNbY2hlY2tzdW1fbmFtZV0gPSBjaGVja3N1bV9leHBlY3RlZAorCisgICAgICAgICAgICAgICAgdXJsID0gc3RyKHVyaSkKKworICAgICAgICAgICAgICAgIGxvY2FscGF0aCA9IG9zLnBhdGguam9pbihkLmdldFZhcigiRExfRElSIiksIGxvY2FsZmlsZSkKKworICAgICAgICAgICAgIyBIYW5kbGUgZ2l0IHNvdXJjZXMKKyAgICAgICAgICAgIGVsaWYgdmVyc2lvbi5zdGFydHN3aXRoKCJnaXQiKToKKyAgICAgICAgICAgICAgICByZWdleCA9IHJlLmNvbXBpbGUociIiIgorICAgICAgICAgICAgICAgICAgICBeCisgICAgICAgICAgICAgICAgICAgIGdpdFwrCisgICAgICAgICAgICAgICAgICAgICg/UDxwcm90b2NvbD5bYS16XSspCisgICAgICAgICAgICAgICAgICAgIDovLworICAgICAgICAgICAgICAgICAgICAoP1A8dXJsPlteI10rKQorICAgICAgICAgICAgICAgICAgICBcIworICAgICAgICAgICAgICAgICAgICAoP1A8cmV2PlswLTlhLWZdKykKKyAgICAgICAgICAgICAgICAgICAgJAorICAgICAgICAgICAgICAgICAgICAiIiIsIHJlLlZFUkJPU0UpCisKKyAgICAgICAgICAgICAgICBtYXRjaCA9IHJlZ2V4Lm1hdGNoKHZlcnNpb24pCisKKyAgICAgICAgICAgICAgICBpZiBub3QgbWF0Y2g6CisgICAgICAgICAgICAgICAgICAgIHJhaXNlIFBhcmFtZXRlckVycm9yKCJJbnZhbGlkIGdpdCB1cmw6ICVzIiAlIHZlcnNpb24sIHVkLnVybCkKKworICAgICAgICAgICAgICAgIGdyb3VwcyA9IG1hdGNoLmdyb3VwZGljdCgpCisKKyAgICAgICAgICAgICAgICB1cmkgPSBVUkkoImdpdDovLyIgKyBzdHIoZ3JvdXBzWyJ1cmwiXSkpCisgICAgICAgICAgICAgICAgdXJpLnBhcmFtc1sicHJvdG9jb2wiXSA9IHN0cihncm91cHNbInByb3RvY29sIl0pCisgICAgICAgICAgICAgICAgdXJpLnBhcmFtc1sicmV2Il0gPSBzdHIoZ3JvdXBzWyJyZXYiXSkKKyAgICAgICAgICAgICAgICB1cmkucGFyYW1zWyJkZXN0c3VmZml4Il0gPSBkZXN0c3VmZml4CisKKyAgICAgICAgICAgICAgICB1cmwgPSBzdHIodXJpKQorCisgICAgICAgICAgICAjIGxvY2FsIHRhcmJhbGwgc291cmNlcyBhbmQgbG9jYWwgbGluayBzb3VyY2VzIGFyZSB1bnN1cHBvcnRlZAorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBQYXJhbWV0ZXJFcnJvcigiVW5zdXBwb3J0ZWQgZGVwZW5kZW5jeTogJXMiICUgbmFtZSwgdWQudXJsKQorCisgICAgICAgICAgICB1ZC5kZXBzLmFwcGVuZCh7CisgICAgICAgICAgICAgICAgInVybCI6IHVybCwKKyAgICAgICAgICAgICAgICAibG9jYWxwYXRoIjogbG9jYWxwYXRoLAorICAgICAgICAgICAgICAgICJleHRyYXBhdGhzIjogZXh0cmFwYXRocywKKyAgICAgICAgICAgICAgICAiZGVzdHN1ZmZpeCI6IGRlc3RzdWZmaXgsCisgICAgICAgICAgICB9KQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHdpdGggb3Blbih1ZC5zaHJpbmt3cmFwX2ZpbGUsICJyIikgYXMgZjoKKyAgICAgICAgICAgICAgICBzaHJpbmt3cmFwID0ganNvbi5sb2FkKGYpCisgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKKyAgICAgICAgICAgIHJhaXNlIFBhcmFtZXRlckVycm9yKCJJbnZhbGlkIHNocmlua3dyYXAgZmlsZTogJXMiICUgc3RyKGUpLCB1ZC51cmwpCisKKyAgICAgICAgZm9yZWFjaF9kZXBlbmRlbmNpZXMoc2hyaW5rd3JhcCwgX3Jlc29sdmVfZGVwZW5kZW5jeSwgdWQuZGV2KQorCisgICAgICAgICMgQXZvaWQgY29uZmxpY3RzIGJldHdlZW4gdGhlIGVudmlyb25tZW50IGRhdGEgYW5kOgorICAgICAgICAjIC0gdGhlIHByb3h5IHVybCByZXZpc2lvbgorICAgICAgICAjIC0gdGhlIHByb3h5IHVybCBjaGVja3N1bQorICAgICAgICBkYXRhID0gYmIuZGF0YS5jcmVhdGVDb3B5KGQpCisgICAgICAgIGRhdGEuZGVsVmFyKCJTUkNSRVYiKQorICAgICAgICBkYXRhLmRlbFZhckZsYWdzKCJTUkNfVVJJIikKKworICAgICAgICAjIFRoaXMgZmV0Y2hlciByZXNvbHZlcyBtdWx0aXBsZSBVUklzIGZyb20gYSBzaHJpbmt3cmFwIGZpbGUgYW5kIHRoZW4KKyAgICAgICAgIyBmb3J3YXJkcyBpdCB0byBhIHByb3h5IGZldGNoZXIuIFRoZSBtYW5hZ2VtZW50IG9mIHRoZSBkb25lc3RhbXAgZmlsZSwKKyAgICAgICAgIyB0aGUgbG9ja2ZpbGUgYW5kIHRoZSBjaGVja3N1bXMgYXJlIGZvcndhcmRlZCB0byB0aGUgcHJveHkgZmV0Y2hlci4KKyAgICAgICAgdWQucHJveHkgPSBGZXRjaChbZGVwWyJ1cmwiXSBmb3IgZGVwIGluIHVkLmRlcHNdLCBkYXRhKQorICAgICAgICB1ZC5uZWVkZG9uZXN0YW1wID0gRmFsc2UKKworICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX2ZvcmVhY2hfcHJveHlfbWV0aG9kKHVkLCBoYW5kbGUpOgorICAgICAgICByZXR1cm5zID0gW10KKyAgICAgICAgZm9yIHByb3h5X3VybCBpbiB1ZC5wcm94eS51cmxzOgorICAgICAgICAgICAgcHJveHlfdWQgPSB1ZC5wcm94eS51ZFtwcm94eV91cmxdCisgICAgICAgICAgICBwcm94eV9kID0gdWQucHJveHkuZAorICAgICAgICAgICAgcHJveHlfdWQuc2V0dXBfbG9jYWxwYXRoKHByb3h5X2QpCisgICAgICAgICAgICByZXR1cm5zLmFwcGVuZChoYW5kbGUocHJveHlfdWQubWV0aG9kLCBwcm94eV91ZCwgcHJveHlfZCkpCisgICAgICAgIHJldHVybiByZXR1cm5zCisKKyAgICBkZWYgdmVyaWZ5X2RvbmVzdGFtcChzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIlZlcmlmeSB0aGUgZG9uZXN0YW1wIGZpbGUiIiIKKyAgICAgICAgZGVmIF9oYW5kbGUobSwgdWQsIGQpOgorICAgICAgICAgICAgcmV0dXJuIG0udmVyaWZ5X2RvbmVzdGFtcCh1ZCwgZCkKKyAgICAgICAgcmV0dXJuIGFsbChzZWxmLl9mb3JlYWNoX3Byb3h5X21ldGhvZCh1ZCwgX2hhbmRsZSkpCisKKyAgICBkZWYgdXBkYXRlX2RvbmVzdGFtcChzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIlVwZGF0ZSB0aGUgZG9uZXN0YW1wIGZpbGUiIiIKKyAgICAgICAgZGVmIF9oYW5kbGUobSwgdWQsIGQpOgorICAgICAgICAgICAgbS51cGRhdGVfZG9uZXN0YW1wKHVkLCBkKQorICAgICAgICBzZWxmLl9mb3JlYWNoX3Byb3h5X21ldGhvZCh1ZCwgX2hhbmRsZSkKKworICAgIGRlZiBuZWVkX3VwZGF0ZShzZWxmLCB1ZCwgZCk6CisgICAgICAgICIiIkZvcmNlIGEgZmV0Y2gsIGV2ZW4gaWYgbG9jYWxwYXRoIGV4aXN0cyA/IiIiCisgICAgICAgIGRlZiBfaGFuZGxlKG0sIHVkLCBkKToKKyAgICAgICAgICAgIHJldHVybiBtLm5lZWRfdXBkYXRlKHVkLCBkKQorICAgICAgICByZXR1cm4gYWxsKHNlbGYuX2ZvcmVhY2hfcHJveHlfbWV0aG9kKHVkLCBfaGFuZGxlKSkKKworICAgIGRlZiB0cnlfbWlycm9ycyhzZWxmLCBmZXRjaCwgdWQsIGQsIG1pcnJvcnMpOgorICAgICAgICAiIiJUcnkgdG8gdXNlIGEgbWlycm9yIiIiCisgICAgICAgIGRlZiBfaGFuZGxlKG0sIHVkLCBkKToKKyAgICAgICAgICAgIHJldHVybiBtLnRyeV9taXJyb3JzKGZldGNoLCB1ZCwgZCwgbWlycm9ycykKKyAgICAgICAgcmV0dXJuIGFsbChzZWxmLl9mb3JlYWNoX3Byb3h5X21ldGhvZCh1ZCwgX2hhbmRsZSkpCisKKyAgICBkZWYgZG93bmxvYWQoc2VsZiwgdWQsIGQpOgorICAgICAgICAiIiJGZXRjaCB1cmwiIiIKKyAgICAgICAgdWQucHJveHkuZG93bmxvYWQoKQorCisgICAgZGVmIHVucGFjayhzZWxmLCB1ZCwgcm9vdGRpciwgZCk6CisgICAgICAgICIiIlVucGFjayB0aGUgZG93bmxvYWRlZCBkZXBlbmRlbmNpZXMiIiIKKyAgICAgICAgZGVzdGRpciA9IGQuZ2V0VmFyKCJTIikKKyAgICAgICAgZGVzdHN1ZmZpeCA9IHVkLnBhcm0uZ2V0KCJkZXN0c3VmZml4IikKKyAgICAgICAgaWYgZGVzdHN1ZmZpeDoKKyAgICAgICAgICAgIGRlc3RkaXIgPSBvcy5wYXRoLmpvaW4ocm9vdGRpciwgZGVzdHN1ZmZpeCkKKworICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZGVzdGRpcikKKyAgICAgICAgYmIudXRpbHMuY29weWZpbGUodWQuc2hyaW5rd3JhcF9maWxlLAorICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oZGVzdGRpciwgIm5wbS1zaHJpbmt3cmFwLmpzb24iKSkKKworICAgICAgICBhdXRvID0gW2RlcFsidXJsIl0gZm9yIGRlcCBpbiB1ZC5kZXBzIGlmIG5vdCBkZXBbImxvY2FscGF0aCJdXQorICAgICAgICBtYW51YWwgPSBbZGVwIGZvciBkZXAgaW4gdWQuZGVwcyBpZiBkZXBbImxvY2FscGF0aCJdXQorCisgICAgICAgIGlmIGF1dG86CisgICAgICAgICAgICB1ZC5wcm94eS51bnBhY2soZGVzdGRpciwgYXV0bykKKworICAgICAgICBmb3IgZGVwIGluIG1hbnVhbDoKKyAgICAgICAgICAgIGRlcGRlc3RkaXIgPSBvcy5wYXRoLmpvaW4oZGVzdGRpciwgZGVwWyJkZXN0c3VmZml4Il0pCisgICAgICAgICAgICBucG1fdW5wYWNrKGRlcFsibG9jYWxwYXRoIl0sIGRlcGRlc3RkaXIsIGQpCisKKyAgICBkZWYgY2xlYW4oc2VsZiwgdWQsIGQpOgorICAgICAgICAiIiJDbGVhbiBhbnkgZXhpc3RpbmcgZnVsbCBvciBwYXJ0aWFsIGRvd25sb2FkIiIiCisgICAgICAgIHVkLnByb3h5LmNsZWFuKCkKKworICAgICAgICAjIENsZWFuIGV4dHJhIGZpbGVzCisgICAgICAgIGZvciBkZXAgaW4gdWQuZGVwczoKKyAgICAgICAgICAgIGZvciBwYXRoIGluIGRlcFsiZXh0cmFwYXRocyJdOgorICAgICAgICAgICAgICAgIGJiLnV0aWxzLnJlbW92ZShwYXRoKQorCisgICAgZGVmIGRvbmUoc2VsZiwgdWQsIGQpOgorICAgICAgICAiIiJJcyB0aGUgZG93bmxvYWQgZG9uZSA/IiIiCisgICAgICAgIGRlZiBfaGFuZGxlKG0sIHVkLCBkKToKKyAgICAgICAgICAgIHJldHVybiBtLmRvbmUodWQsIGQpCisgICAgICAgIHJldHVybiBhbGwoc2VsZi5fZm9yZWFjaF9wcm94eV9tZXRob2QodWQsIF9oYW5kbGUpKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvb3NjLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvb3NjLnB5CmluZGV4IDNlNTY3MTUuLjhmMDkxZWYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL29zYy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9vc2MucHkKQEAgLTcsOCArNyw2IEBACiAKICIiIgogCi1pbXBvcnQgIG9zCi1pbXBvcnQgIHN5cwogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCAgYmIKIGZyb20gICAgYmIuZmV0Y2gyIGltcG9ydCBGZXRjaE1ldGhvZApAQCAtNDMsNyArNDEsNyBAQAogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcHYgPSBkLmdldFZhcigiUFYiLCBGYWxzZSkKICAgICAgICAgICAgIHJldiA9IGJiLmZldGNoMi5zcmNyZXZfaW50ZXJuYWxfaGVscGVyKHVkLCBkKQotICAgICAgICAgICAgaWYgcmV2IGFuZCByZXYgIT0gVHJ1ZToKKyAgICAgICAgICAgIGlmIHJldjoKICAgICAgICAgICAgICAgICB1ZC5yZXZpc2lvbiA9IHJldgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB1ZC5yZXZpc2lvbiA9ICIiCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9wZXJmb3JjZS5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3BlcmZvcmNlLnB5CmluZGV4IDU0ZDAwMWUuLmY1N2MyYTQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3BlcmZvcmNlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3BlcmZvcmNlLnB5CkBAIC0xMSw3ICsxMSw2IEBACiAjIEJhc2VkIG9uIGZ1bmN0aW9ucyBmcm9tIHRoZSBiYXNlIGJiIG1vZHVsZSwgQ29weXJpZ2h0IDIwMDMgSG9sZ2VyIFNjaHVyaWcKIAogaW1wb3J0IG9zCi1pbXBvcnQgbG9nZ2luZwogaW1wb3J0IGJiCiBmcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBGZXRjaE1ldGhvZAogZnJvbSAgIGJiLmZldGNoMiBpbXBvcnQgRmV0Y2hFcnJvcgpAQCAtMTA1LDcgKzEwNCw3IEBACiAgICAgICAgIGlmIGNvbW1hbmQgPT0gJ2NoYW5nZXMnOgogICAgICAgICAgICAgcDRjbWQgPSAnJXMlcyBjaGFuZ2VzIC1tIDEgLy8lcycgJSAodWQuYmFzZWNtZCwgcDRvcHQsIHBhdGhucmV2KQogICAgICAgICBlbGlmIGNvbW1hbmQgPT0gJ3ByaW50JzoKLSAgICAgICAgICAgIGlmIGRlcG90X2ZpbGVuYW1lICE9IE5vbmU6CisgICAgICAgICAgICBpZiBkZXBvdF9maWxlbmFtZSBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBwNGNtZCA9ICclcyVzIHByaW50IC1vICJwNC8lcyIgIiVzIicgJSAodWQuYmFzZWNtZCwgcDRvcHQsIGZpbGVuYW1lLCBkZXBvdF9maWxlbmFtZSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgRmV0Y2hFcnJvcignTm8gZGVwb3QgZmlsZSBuYW1lIHByb3ZpZGVkIHRvIHA0ICVzJyAlIGNvbW1hbmQsIHVkLnVybCkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3NzaC5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3NzaC5weQppbmRleCBmNWJlMDYwLi41ZTk4MmVjIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9zc2gucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvc3NoLnB5CkBAIC0zMiw4ICszMiw2IEBACiAKIGltcG9ydCByZSwgb3MKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBGZXRjaEVycm9yCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBsb2dnZXIKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IHJ1bmZldGNoY21kCiAKIApAQCAtNjAsNyArNTgsNyBAQAogICAgICcnJ0NsYXNzIHRvIGZldGNoIGEgbW9kdWxlIG9yIG1vZHVsZXMgdmlhIFNlY3VyZSBTaGVsbCcnJwogCiAgICAgZGVmIHN1cHBvcnRzKHNlbGYsIHVybGRhdGEsIGQpOgotICAgICAgICByZXR1cm4gX19wYXR0ZXJuX18ubWF0Y2godXJsZGF0YS51cmwpICE9IE5vbmUKKyAgICAgICAgcmV0dXJuIF9fcGF0dGVybl9fLm1hdGNoKHVybGRhdGEudXJsKSBpcyBub3QgTm9uZQogCiAgICAgZGVmIHN1cHBvcnRzX2NoZWNrc3VtKHNlbGYsIHVybGRhdGEpOgogICAgICAgICByZXR1cm4gRmFsc2UKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3N2bi5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3N2bi5weQppbmRleCA5NmQ2NjZiLi45NzFhNWFkIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi9zdm4ucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvc3ZuLnB5CkBAIC0xMSw4ICsxMSw2IEBACiAjIEJhc2VkIG9uIGZ1bmN0aW9ucyBmcm9tIHRoZSBiYXNlIGJiIG1vZHVsZSwgQ29weXJpZ2h0IDIwMDMgSG9sZ2VyIFNjaHVyaWcKIAogaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi1pbXBvcnQgbG9nZ2luZwogaW1wb3J0IGJiCiBpbXBvcnQgcmUKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IEZldGNoTWV0aG9kCkBAIC00OSw3ICs0Nyw3IEBACiAgICAgICAgIHN2bmRpciA9IGQuZ2V0VmFyKCJTVk5ESVIiKSBvciAoZC5nZXRWYXIoIkRMX0RJUiIpICsgIi9zdm4iKQogICAgICAgICByZWxwYXRoID0gc2VsZi5fc3RyaXBfbGVhZGluZ19zbGFzaGVzKHVkLnBhdGgpCiAgICAgICAgIHVkLnBrZ2RpciA9IG9zLnBhdGguam9pbihzdm5kaXIsIHVkLmhvc3QsIHJlbHBhdGgpCi0gICAgICAgIHVkLm1vZGRpciA9IG9zLnBhdGguam9pbih1ZC5wa2dkaXIsIHVkLm1vZHVsZSkKKyAgICAgICAgdWQubW9kZGlyID0gb3MucGF0aC5qb2luKHVkLnBrZ2RpciwgdWQucGF0aF9zcGVjKQogICAgICAgICAjIFByb3RlY3RzIHRoZSByZXBvc2l0b3J5IGZyb20gY29uY3VycmVudCB1cGRhdGVzLCBlLmcuIGZyb20gdHdvCiAgICAgICAgICMgcmVjaXBlcyBmZXRjaGluZyBkaWZmZXJlbnQgcmV2aXNpb25zIGF0IHRoZSBzYW1lIHRpbWUKICAgICAgICAgdWQuc3ZubG9jayA9IG9zLnBhdGguam9pbih1ZC5wa2dkaXIsICJzdm4ubG9jayIpCkBAIC0xMjQsMzAgKzEyMiwzMCBAQAogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIGlmIG9zLmFjY2Vzcyhvcy5wYXRoLmpvaW4odWQubW9kZGlyLCAnLnN2bicpLCBvcy5SX09LKToKLSAgICAgICAgICAgICAgICBzdm51cGRhdGVjbWQgPSBzZWxmLl9idWlsZHN2bmNvbW1hbmQodWQsIGQsICJ1cGRhdGUiKQorICAgICAgICAgICAgICAgIHN2bmNtZCA9IHNlbGYuX2J1aWxkc3ZuY29tbWFuZCh1ZCwgZCwgInVwZGF0ZSIpCiAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlVwZGF0ZSAiICsgdWQudXJsKQogICAgICAgICAgICAgICAgICMgV2UgbmVlZCB0byBhdHRlbXB0IHRvIHJ1biBzdm4gdXBncmFkZSBmaXJzdCBpbiBjYXNlIGl0cyBhbiBvbGRlciB3b3JraW5nIGZvcm1hdAogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgcnVuZmV0Y2hjbWQodWQuYmFzZWNtZCArICIgdXBncmFkZSIsIGQsIHdvcmtkaXI9dWQubW9kZGlyKQogICAgICAgICAgICAgICAgIGV4Y2VwdCBGZXRjaEVycm9yOgogICAgICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKDEsICJSdW5uaW5nICVzIiwgc3ZudXBkYXRlY21kKQotICAgICAgICAgICAgICAgIGJiLmZldGNoMi5jaGVja19uZXR3b3JrX2FjY2VzcyhkLCBzdm51cGRhdGVjbWQsIHVkLnVybCkKLSAgICAgICAgICAgICAgICBydW5mZXRjaGNtZChzdm51cGRhdGVjbWQsIGQsIHdvcmtkaXI9dWQubW9kZGlyKQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiUnVubmluZyAlcyIsIHN2bmNtZCkKKyAgICAgICAgICAgICAgICBiYi5mZXRjaDIuY2hlY2tfbmV0d29ya19hY2Nlc3MoZCwgc3ZuY21kLCB1ZC51cmwpCisgICAgICAgICAgICAgICAgcnVuZmV0Y2hjbWQoc3ZuY21kLCBkLCB3b3JrZGlyPXVkLm1vZGRpcikKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgc3ZuZmV0Y2hjbWQgPSBzZWxmLl9idWlsZHN2bmNvbW1hbmQodWQsIGQsICJmZXRjaCIpCisgICAgICAgICAgICAgICAgc3ZuY21kID0gc2VsZi5fYnVpbGRzdm5jb21tYW5kKHVkLCBkLCAiZmV0Y2giKQogICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJGZXRjaCAiICsgdWQudXJsKQogICAgICAgICAgICAgICAgICMgY2hlY2sgb3V0IHNvdXJjZXMgdGhlcmUKICAgICAgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIodWQucGtnZGlyKQotICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiUnVubmluZyAlcyIsIHN2bmZldGNoY21kKQotICAgICAgICAgICAgICAgIGJiLmZldGNoMi5jaGVja19uZXR3b3JrX2FjY2VzcyhkLCBzdm5mZXRjaGNtZCwgdWQudXJsKQotICAgICAgICAgICAgICAgIHJ1bmZldGNoY21kKHN2bmZldGNoY21kLCBkLCB3b3JrZGlyPXVkLnBrZ2RpcikKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgIlJ1bm5pbmcgJXMiLCBzdm5jbWQpCisgICAgICAgICAgICAgICAgYmIuZmV0Y2gyLmNoZWNrX25ldHdvcmtfYWNjZXNzKGQsIHN2bmNtZCwgdWQudXJsKQorICAgICAgICAgICAgICAgIHJ1bmZldGNoY21kKHN2bmNtZCwgZCwgd29ya2Rpcj11ZC5wa2dkaXIpCiAKICAgICAgICAgICAgIGlmIG5vdCAoImV4dGVybmFscyIgaW4gdWQucGFybSBhbmQgdWQucGFybVsiZXh0ZXJuYWxzIl0gPT0gIm5vd2FybiIpOgogICAgICAgICAgICAgICAgICMgV2FybiB0aGUgdXNlciBpZiB0aGlzIGhhZCBleHRlcm5hbHMgKHdvbid0IGNhdGNoIHRoZW0gYWxsKQogICAgICAgICAgICAgICAgIG91dHB1dCA9IHJ1bmZldGNoY21kKCJzdm4gcHJvcGdldCBzdm46ZXh0ZXJuYWxzIHx8IHRydWUiLCBkLCB3b3JrZGlyPXVkLm1vZGRpcikKICAgICAgICAgICAgICAgICBpZiBvdXRwdXQ6Ci0gICAgICAgICAgICAgICAgICAgIGlmICItLWlnbm9yZS1leHRlcm5hbHMiIGluIHN2bmZldGNoY21kLnNwbGl0KCk6CisgICAgICAgICAgICAgICAgICAgIGlmICItLWlnbm9yZS1leHRlcm5hbHMiIGluIHN2bmNtZC5zcGxpdCgpOgogICAgICAgICAgICAgICAgICAgICAgICAgYmIud2FybigiJXMgY29udGFpbnMgc3ZuOmV4dGVybmFscy4iICUgdWQudXJsKQogICAgICAgICAgICAgICAgICAgICAgICAgYmIud2FybigiVGhlc2Ugc2hvdWxkIGJlIGFkZGVkIHRvIHRoZSByZWNpcGUgU1JDX1VSSSBhcyBuZWNlc3NhcnkuIikKICAgICAgICAgICAgICAgICAgICAgICAgIGJiLndhcm4oInN2biBmZXRjaCBoYXMgaWdub3JlZCBleHRlcm5hbHM6XG4lcyIgJSBvdXRwdXQpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi93Z2V0LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9mZXRjaDIvd2dldC5weQppbmRleCA3MjU1ODZkLi5mN2QxZGUyIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL2ZldGNoMi93Z2V0LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvZmV0Y2gyL3dnZXQucHkKQEAgLTEyLDExICsxMiwxMCBAQAogIwogIyBCYXNlZCBvbiBmdW5jdGlvbnMgZnJvbSB0aGUgYmFzZSBiYiBtb2R1bGUsIENvcHlyaWdodCAyMDAzIEhvbGdlciBTY2h1cmlnCiAKK2ltcG9ydCBzaGxleAogaW1wb3J0IHJlCiBpbXBvcnQgdGVtcGZpbGUKLWltcG9ydCBzdWJwcm9jZXNzCiBpbXBvcnQgb3MKLWltcG9ydCBsb2dnaW5nCiBpbXBvcnQgZXJybm8KIGltcG9ydCBiYgogaW1wb3J0IGJiLnByb2dyZXNzCkBAIC0yNyw3ICsyNiw2IEBACiBmcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBGZXRjaEVycm9yCiBmcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBsb2dnZXIKIGZyb20gICBiYi5mZXRjaDIgaW1wb3J0IHJ1bmZldGNoY21kCi1mcm9tICAgYmIuZmV0Y2gyIGltcG9ydCBGZXRjaENvbm5lY3Rpb25DYWNoZQogZnJvbSAgIGJiLnV0aWxzIGltcG9ydCBleHBvcnRfcHJveGllcwogZnJvbSAgIGJzNCBpbXBvcnQgQmVhdXRpZnVsU291cAogZnJvbSAgIGJzNCBpbXBvcnQgU291cFN0cmFpbmVyCkBAIC05NCw5ICs5Miw5IEBACiAgICAgICAgIGZldGNoY21kID0gc2VsZi5iYXNlY21kCiAKICAgICAgICAgaWYgJ2Rvd25sb2FkZmlsZW5hbWUnIGluIHVkLnBhcm06Ci0gICAgICAgICAgICBkbGRpciA9IGQuZ2V0VmFyKCJETF9ESVIiKQotICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShkbGRpciArIG9zLnNlcCArIHVkLmxvY2FsZmlsZSkpCi0gICAgICAgICAgICBmZXRjaGNtZCArPSAiIC1PICIgKyBkbGRpciArIG9zLnNlcCArIHVkLmxvY2FsZmlsZQorICAgICAgICAgICAgbG9jYWxwYXRoID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCJETF9ESVIiKSwgdWQubG9jYWxmaWxlKQorICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShsb2NhbHBhdGgpKQorICAgICAgICAgICAgZmV0Y2hjbWQgKz0gIiAtTyAlcyIgJSBzaGxleC5xdW90ZShsb2NhbHBhdGgpCiAKICAgICAgICAgaWYgdWQudXNlciBhbmQgdWQucHN3ZDoKICAgICAgICAgICAgIGZldGNoY21kICs9ICIgLS11c2VyPSVzIC0tcGFzc3dvcmQ9JXMgLS1hdXRoLW5vLWNoYWxsZW5nZSIgJSAodWQudXNlciwgdWQucHN3ZCkKQEAgLTMwMiw2ICszMDAsNyBAQAogICAgICAgICAgICAgIyBTb21lIHNlcnZlcnMgKEZ1c2lvbkZvcmdlLCBhcyB1c2VkIG9uIEFsaW90aCkgcmVxdWlyZSB0aGF0IHRoZQogICAgICAgICAgICAgIyBvcHRpb25hbCBBY2NlcHQgaGVhZGVyIGlzIHNldC4KICAgICAgICAgICAgIHIuYWRkX2hlYWRlcigiQWNjZXB0IiwgIiovKiIpCisgICAgICAgICAgICByLmFkZF9oZWFkZXIoIlVzZXItQWdlbnQiLCAiTW96aWxsYS81LjAgKFgxMTsgVTsgTGludXggaTY4NjsgZW4tVVM7IHJ2OjEuOS4yLjEyKSBHZWNrby8yMDEwMTAyNyBVYnVudHUvOS4xMCAoa2FybWljKSBGaXJlZm94LzMuNi4xMiIpCiAgICAgICAgICAgICBkZWYgYWRkX2Jhc2ljX2F1dGgobG9naW5fc3RyLCByZXF1ZXN0KToKICAgICAgICAgICAgICAgICAnJydBZGRzIEJhc2ljIGF1dGggdG8gaHR0cCByZXF1ZXN0LCBwYXNzIGluIGxvZ2luOnBhc3N3b3JkIGFzIHN0cmluZycnJwogICAgICAgICAgICAgICAgIGltcG9ydCBiYXNlNjQKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvbW9uaXRvcmRpc2sucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL21vbml0b3JkaXNrLnB5CmluZGV4IDFhMjViMDAuLmU3YzA3MjYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvbW9uaXRvcmRpc2sucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9tb25pdG9yZGlzay5weQpAQCAtNCw3ICs0LDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1pbXBvcnQgb3MsIGxvZ2dpbmcsIHJlLCBzeXMKK2ltcG9ydCBvcywgbG9nZ2luZywgcmUKIGltcG9ydCBiYgogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoIkJpdEJha2UuTW9uaXRvciIpCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvbXNnLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9tc2cucHkKaW5kZXggNjIxNmViMy4uYzBiMzQ0ZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9tc2cucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9tc2cucHkKQEAgLTEzLDkgKzEzLDggQEAKIGltcG9ydCBzeXMKIGltcG9ydCBjb3B5CiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IGNvbGxlY3Rpb25zCitpbXBvcnQgbG9nZ2luZy5jb25maWcKIGZyb20gaXRlcnRvb2xzIGltcG9ydCBncm91cGJ5Ci1pbXBvcnQgd2FybmluZ3MKIGltcG9ydCBiYgogaW1wb3J0IGJiLmV2ZW50CiAKQEAgLTEwMCw2ICs5OSw5IEBACiAgICAgZGVmIGVuYWJsZV9jb2xvcihzZWxmKToKICAgICAgICAgc2VsZi5jb2xvcl9lbmFibGVkID0gVHJ1ZQogCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzIGZtdD0nJXMnIGNvbG9yPSVzIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5fZm10LCAiVHJ1ZSIgaWYgc2VsZi5jb2xvcl9lbmFibGVkIGVsc2UgIkZhbHNlIikKKwogY2xhc3MgQkJMb2dGaWx0ZXIob2JqZWN0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgaGFuZGxlciwgbGV2ZWwsIGRlYnVnX2RvbWFpbnMpOgogICAgICAgICBzZWxmLnN0ZGxldmVsID0gbGV2ZWwKQEAgLTExOCw2MCArMTIwLDU5IEBACiAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICByZXR1cm4gRmFsc2UKIAotY2xhc3MgQkJMb2dGaWx0ZXJTdGRFcnIoQkJMb2dGaWx0ZXIpOgotICAgIGRlZiBmaWx0ZXIoc2VsZiwgcmVjb3JkKToKLSAgICAgICAgaWYgbm90IEJCTG9nRmlsdGVyLmZpbHRlcihzZWxmLCByZWNvcmQpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIHJlY29yZC5sZXZlbG5vID49IGxvZ2dpbmcuRVJST1I6Ci0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICByZXR1cm4gRmFsc2UKK2NsYXNzIExvZ0ZpbHRlckdFUUxldmVsKGxvZ2dpbmcuRmlsdGVyKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgbGV2ZWwpOgorICAgICAgICBzZWxmLnN0cmxldmVsID0gc3RyKGxldmVsKQorICAgICAgICBzZWxmLmxldmVsID0gc3RyaW5nVG9MZXZlbChsZXZlbCkKIAotY2xhc3MgQkJMb2dGaWx0ZXJTdGRPdXQoQkJMb2dGaWx0ZXIpOgorICAgIGRlZiBfX3JlcHJfXyhzZWxmKToKKyAgICAgICAgcmV0dXJuICIlcyBsZXZlbCA+PSAlcyAoJWQpIiAlIChzZWxmLl9fY2xhc3NfXy5fX25hbWVfXywgc2VsZi5zdHJsZXZlbCwgc2VsZi5sZXZlbCkKKwogICAgIGRlZiBmaWx0ZXIoc2VsZiwgcmVjb3JkKToKLSAgICAgICAgaWYgbm90IEJCTG9nRmlsdGVyLmZpbHRlcihzZWxmLCByZWNvcmQpOgotICAgICAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgICAgIGlmIHJlY29yZC5sZXZlbG5vIDwgbG9nZ2luZy5FUlJPUjoKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICByZXR1cm4gKHJlY29yZC5sZXZlbG5vID49IHNlbGYubGV2ZWwpCisKK2NsYXNzIExvZ0ZpbHRlckxUTGV2ZWwobG9nZ2luZy5GaWx0ZXIpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsZXZlbCk6CisgICAgICAgIHNlbGYuc3RybGV2ZWwgPSBzdHIobGV2ZWwpCisgICAgICAgIHNlbGYubGV2ZWwgPSBzdHJpbmdUb0xldmVsKGxldmVsKQorCisgICAgZGVmIF9fcmVwcl9fKHNlbGYpOgorICAgICAgICByZXR1cm4gIiVzIGxldmVsIDwgJXMgKCVkKSIgJSAoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYuc3RybGV2ZWwsIHNlbGYubGV2ZWwpCisKKyAgICBkZWYgZmlsdGVyKHNlbGYsIHJlY29yZCk6CisgICAgICAgIHJldHVybiAocmVjb3JkLmxldmVsbm8gPCBzZWxmLmxldmVsKQogCiAjIE1lc3NhZ2UgY29udHJvbCBmdW5jdGlvbnMKICMKIAotbG9nZ2VyRGVmYXVsdERlYnVnTGV2ZWwgPSAwCitsb2dnZXJEZWZhdWx0TG9nTGV2ZWwgPSBCQkxvZ0Zvcm1hdHRlci5OT1RFCiBsb2dnZXJEZWZhdWx0VmVyYm9zZSA9IEZhbHNlCiBsb2dnZXJWZXJib3NlTG9ncyA9IEZhbHNlCi1sb2dnZXJEZWZhdWx0RG9tYWlucyA9IFtdCitsb2dnZXJEZWZhdWx0RG9tYWlucyA9IHt9CiAKIGRlZiBpbml0X21zZ2NvbmZpZyh2ZXJib3NlLCBkZWJ1ZywgZGVidWdfZG9tYWlucz1Ob25lKToKICAgICAiIiIKICAgICBTZXQgZGVmYXVsdCB2ZXJib3NpdHkgYW5kIGRlYnVnIGxldmVscyBjb25maWcgdGhlIGxvZ2dlcgogICAgICIiIgotICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0RGVidWdMZXZlbCA9IGRlYnVnCiAgICAgYmIubXNnLmxvZ2dlckRlZmF1bHRWZXJib3NlID0gdmVyYm9zZQogICAgIGlmIHZlcmJvc2U6CiAgICAgICAgIGJiLm1zZy5sb2dnZXJWZXJib3NlTG9ncyA9IFRydWUKLSAgICBpZiBkZWJ1Z19kb21haW5zOgotICAgICAgICBiYi5tc2cubG9nZ2VyRGVmYXVsdERvbWFpbnMgPSBkZWJ1Z19kb21haW5zCi0gICAgZWxzZToKLSAgICAgICAgYmIubXNnLmxvZ2dlckRlZmF1bHREb21haW5zID0gW10KLQotZGVmIGNvbnN0cnVjdExvZ09wdGlvbnMoKToKLSAgICBkZWJ1ZyA9IGxvZ2dlckRlZmF1bHREZWJ1Z0xldmVsCi0gICAgdmVyYm9zZSA9IGxvZ2dlckRlZmF1bHRWZXJib3NlCi0gICAgZG9tYWlucyA9IGxvZ2dlckRlZmF1bHREb21haW5zCiAKICAgICBpZiBkZWJ1ZzoKLSAgICAgICAgbGV2ZWwgPSBCQkxvZ0Zvcm1hdHRlci5ERUJVRyAtIGRlYnVnICsgMQorICAgICAgICBiYi5tc2cubG9nZ2VyRGVmYXVsdExvZ0xldmVsID0gQkJMb2dGb3JtYXR0ZXIuREVCVUcgLSBkZWJ1ZyArIDEKICAgICBlbGlmIHZlcmJvc2U6Ci0gICAgICAgIGxldmVsID0gQkJMb2dGb3JtYXR0ZXIuVkVSQk9TRQorICAgICAgICBiYi5tc2cubG9nZ2VyRGVmYXVsdExvZ0xldmVsID0gQkJMb2dGb3JtYXR0ZXIuVkVSQk9TRQogICAgIGVsc2U6Ci0gICAgICAgIGxldmVsID0gQkJMb2dGb3JtYXR0ZXIuTk9URQorICAgICAgICBiYi5tc2cubG9nZ2VyRGVmYXVsdExvZ0xldmVsID0gQkJMb2dGb3JtYXR0ZXIuTk9URQogCi0gICAgZGVidWdfZG9tYWlucyA9IHt9Ci0gICAgZm9yIChkb21haW5hcmcsIGl0ZXJhdG9yKSBpbiBncm91cGJ5KGRvbWFpbnMpOgotICAgICAgICBkbGV2ZWwgPSBsZW4odHVwbGUoaXRlcmF0b3IpKQotICAgICAgICBkZWJ1Z19kb21haW5zWyJCaXRCYWtlLiVzIiAlIGRvbWFpbmFyZ10gPSBsb2dnaW5nLkRFQlVHIC0gZGxldmVsICsgMQotICAgIHJldHVybiBsZXZlbCwgZGVidWdfZG9tYWlucworICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0RG9tYWlucyA9IHt9CisgICAgaWYgZGVidWdfZG9tYWluczoKKyAgICAgICAgZm9yIChkb21haW5hcmcsIGl0ZXJhdG9yKSBpbiBncm91cGJ5KGRlYnVnX2RvbWFpbnMpOgorICAgICAgICAgICAgZGxldmVsID0gbGVuKHR1cGxlKGl0ZXJhdG9yKSkKKyAgICAgICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0RG9tYWluc1siQml0QmFrZS4lcyIgJSBkb21haW5hcmddID0gbG9nZ2luZy5ERUJVRyAtIGRsZXZlbCArIDEKKworZGVmIGNvbnN0cnVjdExvZ09wdGlvbnMoKToKKyAgICByZXR1cm4gbG9nZ2VyRGVmYXVsdExvZ0xldmVsLCBsb2dnZXJEZWZhdWx0RG9tYWlucwogCiBkZWYgYWRkRGVmYXVsdGxvZ0ZpbHRlcihoYW5kbGVyLCBjbHMgPSBCQkxvZ0ZpbHRlciwgZm9yY2VsZXZlbD1Ob25lKToKICAgICBsZXZlbCwgZGVidWdfZG9tYWlucyA9IGNvbnN0cnVjdExvZ09wdGlvbnMoKQpAQCAtMTgxLDYgKzE4MiwxOSBAQAogCiAgICAgY2xzKGhhbmRsZXIsIGxldmVsLCBkZWJ1Z19kb21haW5zKQogCitkZWYgc3RyaW5nVG9MZXZlbChsZXZlbCk6CisgICAgdHJ5OgorICAgICAgICByZXR1cm4gaW50KGxldmVsKQorICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICBwYXNzCisKKyAgICB0cnk6CisgICAgICAgIHJldHVybiBnZXRhdHRyKGxvZ2dpbmcsIGxldmVsKQorICAgIGV4Y2VwdCBBdHRyaWJ1dGVFcnJvcjoKKyAgICAgICAgcGFzcworCisgICAgcmV0dXJuIGdldGF0dHIoQkJMb2dGb3JtYXR0ZXIsIGxldmVsKQorCiAjCiAjIE1lc3NhZ2UgaGFuZGxpbmcgZnVuY3Rpb25zCiAjCkBAIC0yMTQsMyArMjI4LDEwNSBAQAogICAgICAgICAgICAgaWYgaGFuZGxlci5zdHJlYW0gaW4gW3N5cy5zdGRlcnIsIHN5cy5zdGRvdXRdOgogICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgcmV0dXJuIEZhbHNlCisKK2RlZiBtZXJnZUxvZ2dpbmdDb25maWcobG9nY29uZmlnLCB1c2VyY29uZmlnKToKKyAgICBsb2djb25maWcgPSBjb3B5LmRlZXBjb3B5KGxvZ2NvbmZpZykKKyAgICB1c2VyY29uZmlnID0gY29weS5kZWVwY29weSh1c2VyY29uZmlnKQorCisgICAgIyBNZXJnZSBjb25maWcgd2l0aCB0aGUgZGVmYXVsdCBjb25maWcKKyAgICBpZiB1c2VyY29uZmlnLmdldCgndmVyc2lvbicpICE9IGxvZ2NvbmZpZ1sndmVyc2lvbiddOgorICAgICAgICByYWlzZSBCYXNlRXhjZXB0aW9uKCJCYWQgdXNlciBjb25maWd1cmF0aW9uIHZlcnNpb24uIEV4cGVjdGVkICVyLCBnb3QgJXIiICUgKGxvZ2NvbmZpZ1sndmVyc2lvbiddLCB1c2VyY29uZmlnLmdldCgndmVyc2lvbicpKSkKKworICAgICMgU2V0IHNvbWUgZGVmYXVsdHMgdG8gbWFrZSBtZXJnaW5nIGVhc2llcgorICAgIHVzZXJjb25maWcuc2V0ZGVmYXVsdCgibG9nZ2VycyIsIHt9KQorCisgICAgIyBJZiBhIGhhbmRsZXIsIGZvcm1hdHRlciwgb3IgZmlsdGVyIGlzIGRlZmluZWQgaW4gdGhlIHVzZXIKKyAgICAjIGNvbmZpZywgaXQgd2lsbCByZXBsYWNlIGFuIGV4aXN0aW5nIG9uZSBpbiB0aGUgZGVmYXVsdCBjb25maWcKKyAgICBmb3IgayBpbiAoImhhbmRsZXJzIiwgImZvcm1hdHRlcnMiLCAiZmlsdGVycyIpOgorICAgICAgICBsb2djb25maWcuc2V0ZGVmYXVsdChrLCB7fSkudXBkYXRlKHVzZXJjb25maWcuZ2V0KGssIHt9KSkKKworICAgIHNlZW5fbG9nZ2VycyA9IHNldCgpCisgICAgZm9yIG5hbWUsIGwgaW4gbG9nY29uZmlnWyJsb2dnZXJzIl0uaXRlbXMoKToKKyAgICAgICAgIyBJZiB0aGUgbWVyZ2Ugb3B0aW9uIGlzIHNldCwgbWVyZ2UgdGhlIGhhbmRsZXJzIGFuZAorICAgICAgICAjIGZpbHRlcnMuIE90aGVyd2lzZSwgaWYgaXQgaXMgRmFsc2UsIHRoaXMgbG9nZ2VyIHdvbid0IGdldAorICAgICAgICAjIGFkZCB0byB0aGUgc2V0IG9mIHNlZW4gbG9nZ2VycyBhbmQgd2lsbCByZXBsYWNlIHRoZQorICAgICAgICAjIGV4aXN0aW5nIG9uZQorICAgICAgICBpZiBsLmdldCgnYml0YmFrZV9tZXJnZScsIFRydWUpOgorICAgICAgICAgICAgdWxvZ2dlciA9IHVzZXJjb25maWdbImxvZ2dlcnMiXS5zZXRkZWZhdWx0KG5hbWUsIHt9KQorICAgICAgICAgICAgdWxvZ2dlci5zZXRkZWZhdWx0KCJoYW5kbGVycyIsIFtdKQorICAgICAgICAgICAgdWxvZ2dlci5zZXRkZWZhdWx0KCJmaWx0ZXJzIiwgW10pCisKKyAgICAgICAgICAgICMgTWVyZ2UgbGlzdHMKKyAgICAgICAgICAgIGwuc2V0ZGVmYXVsdCgiaGFuZGxlcnMiLCBbXSkuZXh0ZW5kKHVsb2dnZXJbImhhbmRsZXJzIl0pCisgICAgICAgICAgICBsLnNldGRlZmF1bHQoImZpbHRlcnMiLCBbXSkuZXh0ZW5kKHVsb2dnZXJbImZpbHRlcnMiXSkKKworICAgICAgICAgICAgIyBSZXBsYWNlIG90aGVyIHByb3BlcnRpZXMgaWYgcHJlc2VudAorICAgICAgICAgICAgaWYgImxldmVsIiBpbiB1bG9nZ2VyOgorICAgICAgICAgICAgICAgIGxbImxldmVsIl0gPSB1bG9nZ2VyWyJsZXZlbCJdCisKKyAgICAgICAgICAgIGlmICJwcm9wYWdhdGUiIGluIHVsb2dnZXI6CisgICAgICAgICAgICAgICAgbFsicHJvcGFnYXRlIl0gPSB1bG9nZ2VyWyJwcm9wYWdhdGUiXQorCisgICAgICAgICAgICBzZWVuX2xvZ2dlcnMuYWRkKG5hbWUpCisKKyAgICAjIEFkZCBhbGwgbG9nZ2VycyBwcmVzZW50IGluIHRoZSB1c2VyIGNvbmZpZywgYnV0IG5vdCBhbnkgdGhhdAorICAgICMgaGF2ZSBhbHJlYWR5IGJlZW4gcHJvY2Vzc2VkCisgICAgZm9yIG5hbWUgaW4gc2V0KHVzZXJjb25maWdbImxvZ2dlcnMiXS5rZXlzKCkpIC0gc2Vlbl9sb2dnZXJzOgorICAgICAgICBsb2djb25maWdbImxvZ2dlcnMiXVtuYW1lXSA9IHVzZXJjb25maWdbImxvZ2dlcnMiXVtuYW1lXQorCisgICAgcmV0dXJuIGxvZ2NvbmZpZworCitkZWYgc2V0TG9nZ2luZ0NvbmZpZyhkZWZhdWx0Y29uZmlnLCB1c2VyY29uZmlnZmlsZT1Ob25lKToKKyAgICBsb2djb25maWcgPSBjb3B5LmRlZXBjb3B5KGRlZmF1bHRjb25maWcpCisKKyAgICBpZiB1c2VyY29uZmlnZmlsZToKKyAgICAgICAgd2l0aCBvcGVuKHVzZXJjb25maWdmaWxlLCAncicpIGFzIGY6CisgICAgICAgICAgICBpZiB1c2VyY29uZmlnZmlsZS5lbmRzd2l0aCgnLnltbCcpIG9yIHVzZXJjb25maWdmaWxlLmVuZHN3aXRoKCcueWFtbCcpOgorICAgICAgICAgICAgICAgIGltcG9ydCB5YW1sCisgICAgICAgICAgICAgICAgdXNlcmNvbmZpZyA9IHlhbWwubG9hZChmKQorICAgICAgICAgICAgZWxpZiB1c2VyY29uZmlnZmlsZS5lbmRzd2l0aCgnLmpzb24nKSBvciB1c2VyY29uZmlnZmlsZS5lbmRzd2l0aCgnLmNmZycpOgorICAgICAgICAgICAgICAgIGltcG9ydCBqc29uCisgICAgICAgICAgICAgICAgdXNlcmNvbmZpZyA9IGpzb24ubG9hZChmKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYWlzZSBCYXNlRXhjZXB0aW9uKCJVbnJlY29nbml6ZWQgZmlsZSBmb3JtYXQ6ICVzIiAlIHVzZXJjb25maWdmaWxlKQorCisgICAgICAgICAgICBpZiB1c2VyY29uZmlnLmdldCgnYml0YmFrZV9tZXJnZScsIFRydWUpOgorICAgICAgICAgICAgICAgIGxvZ2NvbmZpZyA9IG1lcmdlTG9nZ2luZ0NvbmZpZyhsb2djb25maWcsIHVzZXJjb25maWcpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICMgUmVwbGFjZSB0aGUgZW50aXJlIGRlZmF1bHQgY29uZmlnCisgICAgICAgICAgICAgICAgbG9nY29uZmlnID0gdXNlcmNvbmZpZworCisgICAgIyBDb252ZXJ0IGFsbCBsZXZlbCBwYXJhbWV0ZXJzIHRvIGludGVnZXJzIGluIGNhc2UgdXNlcnMgd2FudCB0byB1c2UgdGhlCisgICAgIyBiaXRiYWtlIGRlZmluZWQgbGV2ZWwgbmFtZXMKKyAgICBmb3IgaCBpbiBsb2djb25maWdbImhhbmRsZXJzIl0udmFsdWVzKCk6CisgICAgICAgIGlmICJsZXZlbCIgaW4gaDoKKyAgICAgICAgICAgIGhbImxldmVsIl0gPSBiYi5tc2cuc3RyaW5nVG9MZXZlbChoWyJsZXZlbCJdKQorCisgICAgZm9yIGwgaW4gbG9nY29uZmlnWyJsb2dnZXJzIl0udmFsdWVzKCk6CisgICAgICAgIGlmICJsZXZlbCIgaW4gbDoKKyAgICAgICAgICAgIGxbImxldmVsIl0gPSBiYi5tc2cuc3RyaW5nVG9MZXZlbChsWyJsZXZlbCJdKQorCisgICAgY29uZiA9IGxvZ2dpbmcuY29uZmlnLmRpY3RDb25maWdDbGFzcyhsb2djb25maWcpCisgICAgY29uZi5jb25maWd1cmUoKQorCisgICAgIyBUaGUgdXNlciBtYXkgaGF2ZSBzcGVjaWZpZWQgbG9nZ2luZyBkb21haW5zIHRoZXkgd2FudCBhdCBhIGhpZ2hlciBkZWJ1ZworICAgICMgbGV2ZWwgdGhhbiB0aGUgc3RhbmRhcmQuCisgICAgZm9yIG5hbWUsIGwgaW4gbG9nY29uZmlnWyJsb2dnZXJzIl0uaXRlbXMoKToKKyAgICAgICAgaWYgbm90IG5hbWUuc3RhcnRzd2l0aCgiQml0QmFrZS4iKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgaWYgbm90ICJsZXZlbCIgaW4gbDoKKyAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgY3VybGV2ZWwgPSBiYi5tc2cubG9nZ2VyRGVmYXVsdERvbWFpbnMuZ2V0KG5hbWUpCisgICAgICAgICMgTm90ZTogbGV2ZWwgcGFyYW1ldGVyIHNob3VsZCBhbHJlYWR5IGJlIGEgaW50IGJlY2F1c2Ugb2YgY29udmVyc2lvbgorICAgICAgICAjIGFib3ZlCisgICAgICAgIG5ld2xldmVsID0gaW50KGxbImxldmVsIl0pCisgICAgICAgIGlmIGN1cmxldmVsIGlzIE5vbmUgb3IgbmV3bGV2ZWwgPCBjdXJsZXZlbDoKKyAgICAgICAgICAgIGJiLm1zZy5sb2dnZXJEZWZhdWx0RG9tYWluc1tuYW1lXSA9IG5ld2xldmVsCisKKyAgICAgICAgIyBUT0RPOiBJIGRvbid0IHRoaW5rIHRoYXQgc2V0dGluZyB0aGUgZ2xvYmFsIGxvZyBsZXZlbCBzaG91bGQgYmUgbmVjZXNzYXJ5CisgICAgICAgICNpZiBuZXdsZXZlbCA8IGJiLm1zZy5sb2dnZXJEZWZhdWx0TG9nTGV2ZWw6CisgICAgICAgICMgICAgYmIubXNnLmxvZ2dlckRlZmF1bHRMb2dMZXZlbCA9IG5ld2xldmVsCisKKyAgICByZXR1cm4gY29uZgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9hc3QucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL2FzdC5weQppbmRleCBmMDkxMWU2Li5lYjhjZmEyIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL2FzdC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3BhcnNlL2FzdC5weQpAQCAtOSwxMSArOSw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotaW1wb3J0IHJlCi1pbXBvcnQgc3RyaW5nCi1pbXBvcnQgbG9nZ2luZwogaW1wb3J0IGJiCi1pbXBvcnQgaXRlcnRvb2xzCiBmcm9tIGJiIGltcG9ydCBtZXRob2Rwb29sCiBmcm9tIGJiLnBhcnNlIGltcG9ydCBsb2dnZXIKIApAQCAtOTMsNyArODksNyBAQAogICAgICAgICBzZWxmLmdyb3VwZCA9IGdyb3VwZAogCiAgICAgZGVmIGdldEZ1bmMoc2VsZiwga2V5LCBkYXRhKToKLSAgICAgICAgaWYgJ2ZsYWcnIGluIHNlbGYuZ3JvdXBkIGFuZCBzZWxmLmdyb3VwZFsnZmxhZyddICE9IE5vbmU6CisgICAgICAgIGlmICdmbGFnJyBpbiBzZWxmLmdyb3VwZCBhbmQgc2VsZi5ncm91cGRbJ2ZsYWcnXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldFZhckZsYWcoa2V5LCBzZWxmLmdyb3VwZFsnZmxhZyddLCBleHBhbmQ9RmFsc2UsIG5vd2Vha2RlZmF1bHQ9VHJ1ZSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJldHVybiBkYXRhLmdldFZhcihrZXksIEZhbHNlLCBub3dlYWtkZWZhdWx0PVRydWUsIHBhcnNpbmc9VHJ1ZSkKQEAgLTEwNiwzNiArMTAyLDM2IEBACiAgICAgICAgICAgICAnZmlsZSc6IHNlbGYuZmlsZW5hbWUsCiAgICAgICAgICAgICAnbGluZSc6IHNlbGYubGluZW5vLAogICAgICAgICB9Ci0gICAgICAgIGlmICJleHAiIGluIGdyb3VwZCBhbmQgZ3JvdXBkWyJleHAiXSAhPSBOb25lOgorICAgICAgICBpZiAiZXhwIiBpbiBncm91cGQgYW5kIGdyb3VwZFsiZXhwIl0gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICBkYXRhLnNldFZhckZsYWcoa2V5LCAiZXhwb3J0IiwgMSwgb3AgPSAnZXhwb3J0ZWQnLCAqKmxvZ2luZm8pCiAKICAgICAgICAgb3AgPSAic2V0IgotICAgICAgICBpZiAicXVlcyIgaW4gZ3JvdXBkIGFuZCBncm91cGRbInF1ZXMiXSAhPSBOb25lOgorICAgICAgICBpZiAicXVlcyIgaW4gZ3JvdXBkIGFuZCBncm91cGRbInF1ZXMiXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIHZhbCA9IHNlbGYuZ2V0RnVuYyhrZXksIGRhdGEpCiAgICAgICAgICAgICBvcCA9ICJzZXQ/IgotICAgICAgICAgICAgaWYgdmFsID09IE5vbmU6CisgICAgICAgICAgICBpZiB2YWwgaXMgTm9uZToKICAgICAgICAgICAgICAgICB2YWwgPSBncm91cGRbInZhbHVlIl0KLSAgICAgICAgZWxpZiAiY29sb24iIGluIGdyb3VwZCBhbmQgZ3JvdXBkWyJjb2xvbiJdICE9IE5vbmU6CisgICAgICAgIGVsaWYgImNvbG9uIiBpbiBncm91cGQgYW5kIGdyb3VwZFsiY29sb24iXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIGUgPSBkYXRhLmNyZWF0ZUNvcHkoKQogICAgICAgICAgICAgb3AgPSAiaW1tZWRpYXRlIgogICAgICAgICAgICAgdmFsID0gZS5leHBhbmQoZ3JvdXBkWyJ2YWx1ZSJdLCBrZXkgKyAiWzo9XSIpCi0gICAgICAgIGVsaWYgImFwcGVuZCIgaW4gZ3JvdXBkIGFuZCBncm91cGRbImFwcGVuZCJdICE9IE5vbmU6CisgICAgICAgIGVsaWYgImFwcGVuZCIgaW4gZ3JvdXBkIGFuZCBncm91cGRbImFwcGVuZCJdIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgb3AgPSAiYXBwZW5kIgogICAgICAgICAgICAgdmFsID0gIiVzICVzIiAlICgoc2VsZi5nZXRGdW5jKGtleSwgZGF0YSkgb3IgIiIpLCBncm91cGRbInZhbHVlIl0pCi0gICAgICAgIGVsaWYgInByZXBlbmQiIGluIGdyb3VwZCBhbmQgZ3JvdXBkWyJwcmVwZW5kIl0gIT0gTm9uZToKKyAgICAgICAgZWxpZiAicHJlcGVuZCIgaW4gZ3JvdXBkIGFuZCBncm91cGRbInByZXBlbmQiXSBpcyBub3QgTm9uZToKICAgICAgICAgICAgIG9wID0gInByZXBlbmQiCiAgICAgICAgICAgICB2YWwgPSAiJXMgJXMiICUgKGdyb3VwZFsidmFsdWUiXSwgKHNlbGYuZ2V0RnVuYyhrZXksIGRhdGEpIG9yICIiKSkKLSAgICAgICAgZWxpZiAicG9zdGRvdCIgaW4gZ3JvdXBkIGFuZCBncm91cGRbInBvc3Rkb3QiXSAhPSBOb25lOgorICAgICAgICBlbGlmICJwb3N0ZG90IiBpbiBncm91cGQgYW5kIGdyb3VwZFsicG9zdGRvdCJdIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgb3AgPSAicG9zdGRvdCIKICAgICAgICAgICAgIHZhbCA9ICIlcyVzIiAlICgoc2VsZi5nZXRGdW5jKGtleSwgZGF0YSkgb3IgIiIpLCBncm91cGRbInZhbHVlIl0pCi0gICAgICAgIGVsaWYgInByZWRvdCIgaW4gZ3JvdXBkIGFuZCBncm91cGRbInByZWRvdCJdICE9IE5vbmU6CisgICAgICAgIGVsaWYgInByZWRvdCIgaW4gZ3JvdXBkIGFuZCBncm91cGRbInByZWRvdCJdIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgb3AgPSAicHJlZG90IgogICAgICAgICAgICAgdmFsID0gIiVzJXMiICUgKGdyb3VwZFsidmFsdWUiXSwgKHNlbGYuZ2V0RnVuYyhrZXksIGRhdGEpIG9yICIiKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHZhbCA9IGdyb3VwZFsidmFsdWUiXQogCiAgICAgICAgIGZsYWcgPSBOb25lCi0gICAgICAgIGlmICdmbGFnJyBpbiBncm91cGQgYW5kIGdyb3VwZFsnZmxhZyddICE9IE5vbmU6CisgICAgICAgIGlmICdmbGFnJyBpbiBncm91cGQgYW5kIGdyb3VwZFsnZmxhZyddIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgZmxhZyA9IGdyb3VwZFsnZmxhZyddCiAgICAgICAgIGVsaWYgZ3JvdXBkWyJsYXp5cXVlcyJdOgogICAgICAgICAgICAgZmxhZyA9ICJfZGVmYXVsdHZhbCIKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvcGFyc2UvcGFyc2VfcHkvQkJIYW5kbGVyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9wYXJzZV9weS9CQkhhbmRsZXIucHkKaW5kZXggNmY3Y2Y4Mi4uNmUyMTZlZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9wYXJzZV9weS9CQkhhbmRsZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9wYXJzZS9wYXJzZV9weS9CQkhhbmRsZXIucHkKQEAgLTEzLDkgKzEzLDcgQEAKICMKIAogaW1wb3J0IHJlLCBiYiwgb3MKLWltcG9ydCBsb2dnaW5nCiBpbXBvcnQgYmIuYnVpbGQsIGJiLnV0aWxzCi1mcm9tIGJiIGltcG9ydCBkYXRhCiAKIGZyb20gLiBpbXBvcnQgQ29uZkhhbmRsZXIKIGZyb20gLi4gaW1wb3J0IHJlc29sdmVfZmlsZSwgYXN0LCBsb2dnZXIsIFBhcnNlRXJyb3IKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvcGVyc2lzdF9kYXRhLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9wZXJzaXN0X2RhdGEucHkKaW5kZXggZGU4Zjg3YS4uNzM1N2FiMiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9wZXJzaXN0X2RhdGEucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9wZXJzaXN0X2RhdGEucHkKQEAgLTE3OSw2ICsxNzksOSBAQAogICAgICAgICBlbGlmIG5vdCBpc2luc3RhbmNlKHZhbHVlLCBzdHIpOgogICAgICAgICAgICAgcmFpc2UgVHlwZUVycm9yKCdPbmx5IHN0cmluZyB2YWx1ZXMgYXJlIHN1cHBvcnRlZCcpCiAKKyAgICAgICAgIyBFbnN1cmUgdGhlIGVudGlyZSB0cmFuc2FjdGlvbiAoaW5jbHVkaW5nIFNFTEVDVCkgZXhlY3V0ZXMgdW5kZXIgd3JpdGUgbG9jaworICAgICAgICBjdXJzb3IuZXhlY3V0ZSgiQkVHSU4gRVhDTFVTSVZFIikKKwogICAgICAgICBjdXJzb3IuZXhlY3V0ZSgiU0VMRUNUICogZnJvbSAlcyB3aGVyZSBrZXk9PzsiICUgc2VsZi50YWJsZSwgW2tleV0pCiAgICAgICAgIHJvdyA9IGN1cnNvci5mZXRjaG9uZSgpCiAgICAgICAgIGlmIHJvdyBpcyBub3QgTm9uZToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvcHJvZ3Jlc3MucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Byb2dyZXNzLnB5CmluZGV4IDQwMjJjYWEuLjljNzU1YjcgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvcHJvZ3Jlc3MucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9wcm9ncmVzcy5weQpAQCAtNyw3ICs3LDYgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1pbXBvcnQgc3lzCiBpbXBvcnQgcmUKIGltcG9ydCB0aW1lCiBpbXBvcnQgaW5zcGVjdApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9wcm92aWRlcnMucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Byb3ZpZGVycy5weQppbmRleCBmODA5NjNjLi44MTQ1OWMzIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3Byb3ZpZGVycy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Byb3ZpZGVycy5weQpAQCAtOTIsMTEgKzkyLDExIEBACiAgICAgQ2hlY2sgaWYgdGhlIHZlcnNpb24gcGUscHYscHIgaXMgdGhlIHByZWZlcnJlZCBvbmUuCiAgICAgSWYgdGhlcmUgaXMgcHJlZmVycmVkIHZlcnNpb24gZGVmaW5lZCBhbmQgZW5kcyB3aXRoICclJywgdGhlbiBwdiBoYXMgdG8gc3RhcnQgd2l0aCB0aGF0IHZlcnNpb24gYWZ0ZXIgcmVtb3ZpbmcgdGhlICclJwogICAgICIiIgotICAgIGlmIChwciA9PSBwcmVmZXJyZWRfciBvciBwcmVmZXJyZWRfciA9PSBOb25lKToKLSAgICAgICAgaWYgKHBlID09IHByZWZlcnJlZF9lIG9yIHByZWZlcnJlZF9lID09IE5vbmUpOgorICAgIGlmIHByID09IHByZWZlcnJlZF9yIG9yIHByZWZlcnJlZF9yIGlzIE5vbmU6CisgICAgICAgIGlmIHBlID09IHByZWZlcnJlZF9lIG9yIHByZWZlcnJlZF9lIGlzIE5vbmU6CiAgICAgICAgICAgICBpZiBwcmVmZXJyZWRfdiA9PSBwdjoKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgICAgICAgICAgaWYgcHJlZmVycmVkX3YgIT0gTm9uZSBhbmQgcHJlZmVycmVkX3YuZW5kc3dpdGgoJyUnKSBhbmQgcHYuc3RhcnRzd2l0aChwcmVmZXJyZWRfdls6bGVuKHByZWZlcnJlZF92KS0xXSk6CisgICAgICAgICAgICBpZiBwcmVmZXJyZWRfdiBpcyBub3QgTm9uZSBhbmQgcHJlZmVycmVkX3YuZW5kc3dpdGgoJyUnKSBhbmQgcHYuc3RhcnRzd2l0aChwcmVmZXJyZWRfdls6bGVuKHByZWZlcnJlZF92KS0xXSk6CiAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKICAgICByZXR1cm4gRmFsc2UKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9yZW1vdGVkYXRhLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9yZW1vdGVkYXRhLnB5CmluZGV4IDczOTFlMWIuLjZjOTg2NGQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvcmVtb3RlZGF0YS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3JlbW90ZWRhdGEucHkKQEAgLTE3LDE2ICsxNywxNiBAQAogICAgICAgICBzZWxmLmNvb2tlciA9IGNvb2tlcgogICAgICAgICBzZWxmLmRhdGFzdG9yZXMgPSB7fQogICAgICAgICBzZWxmLmxvY2tlZCA9IFtdCisgICAgICAgIHNlbGYuZGF0YXN0b3Jlc1swXSA9IHNlbGYuY29va2VyLmRhdGEKICAgICAgICAgc2VsZi5uZXh0aW5kZXggPSAxCiAKICAgICBkZWYgX19sZW5fXyhzZWxmKToKICAgICAgICAgcmV0dXJuIGxlbihzZWxmLmRhdGFzdG9yZXMpCiAKICAgICBkZWYgX19nZXRpdGVtX18oc2VsZiwga2V5KToKLSAgICAgICAgaWYga2V5IGlzIE5vbmU6Ci0gICAgICAgICAgICByZXR1cm4gc2VsZi5jb29rZXIuZGF0YQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YXN0b3Jlc1trZXldCisgICAgICAgICMgQ29va2VyIGNvdWxkIGhhdmUgY2hhbmdlZCBpdHMgZGF0YXN0b3JlIGZyb20gdW5kZXIgdXMKKyAgICAgICAgc2VsZi5kYXRhc3RvcmVzWzBdID0gc2VsZi5jb29rZXIuZGF0YQorICAgICAgICByZXR1cm4gc2VsZi5kYXRhc3RvcmVzW2tleV0KIAogICAgIGRlZiBpdGVtcyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuZGF0YXN0b3Jlcy5pdGVtcygpCkBAIC02Myw0NCArNjMsMyBAQAogICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCdUcmllZCB0byByZWxlYXNlIGxvY2tlZCBkYXRhc3RvcmUgJWQnICUgaWR4KQogICAgICAgICBkZWwgc2VsZi5kYXRhc3RvcmVzW2lkeF0KIAotICAgIGRlZiByZWNlaXZlX2RhdGFzdG9yZShzZWxmLCByZW1vdGVfZGF0YSk6Ci0gICAgICAgICIiIlJlY2VpdmUgYSBkYXRhc3RvcmUgb2JqZWN0IHNlbnQgZnJvbSB0aGUgY2xpZW50IChhcyBwcmVwYXJlZCBieSB0cmFuc21pdF9kYXRhc3RvcmUoKSkiIiIKLSAgICAgICAgZGN0ID0gZGljdChyZW1vdGVfZGF0YSkKLSAgICAgICAgZCA9IGJiLmRhdGFfc21hcnQuRGF0YVNtYXJ0KCkKLSAgICAgICAgZC5kaWN0ID0gZGN0Ci0gICAgICAgIHdoaWxlIFRydWU6Ci0gICAgICAgICAgICBpZiAnX3JlbW90ZV9kYXRhJyBpbiBkY3Q6Ci0gICAgICAgICAgICAgICAgZHNpbmRleCA9IGRjdFsnX3JlbW90ZV9kYXRhJ11bJ19jb250ZW50J10KLSAgICAgICAgICAgICAgICBkZWwgZGN0WydfcmVtb3RlX2RhdGEnXQotICAgICAgICAgICAgICAgIGlmIGRzaW5kZXggaXMgTm9uZToKLSAgICAgICAgICAgICAgICAgICAgZGN0WydfZGF0YSddID0gc2VsZi5jb29rZXIuZGF0YS5kaWN0Ci0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgZGN0WydfZGF0YSddID0gc2VsZi5kYXRhc3RvcmVzW2RzaW5kZXhdLmRpY3QKLSAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZWxpZiAnX2RhdGEnIGluIGRjdDoKLSAgICAgICAgICAgICAgICBpZGN0ID0gZGljdChkY3RbJ19kYXRhJ10pCi0gICAgICAgICAgICAgICAgZGN0WydfZGF0YSddID0gaWRjdAotICAgICAgICAgICAgICAgIGRjdCA9IGlkY3QKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgcmV0dXJuIGQKLQotICAgIEBzdGF0aWNtZXRob2QKLSAgICBkZWYgdHJhbnNtaXRfZGF0YXN0b3JlKGQpOgotICAgICAgICAiIiJQcmVwYXJlIGEgZGF0YXN0b3JlIG9iamVjdCBmb3Igc2VuZGluZyBvdmVyIElQQyBmcm9tIHRoZSBjbGllbnQgZW5kIiIiCi0gICAgICAgICMgRklYTUUgY29udGVudCBtaWdodCBiZSBhIGRpY3QsIG5lZWQgdG8gdHVybiB0aGF0IGludG8gYSBsaXN0IGFzIHdlbGwKLSAgICAgICAgZGVmIGNvcHlfZGljdHMoZGN0KToKLSAgICAgICAgICAgIGlmICdfcmVtb3RlX2RhdGEnIGluIGRjdDoKLSAgICAgICAgICAgICAgICBkc2luZGV4ID0gZGN0WydfcmVtb3RlX2RhdGEnXVsnX2NvbnRlbnQnXS5kc2luZGV4Ci0gICAgICAgICAgICAgICAgbmV3ZGN0ID0gZGN0LmNvcHkoKQotICAgICAgICAgICAgICAgIG5ld2RjdFsnX3JlbW90ZV9kYXRhJ10gPSB7J19jb250ZW50JzogZHNpbmRleH0KLSAgICAgICAgICAgICAgICByZXR1cm4gbGlzdChuZXdkY3QuaXRlbXMoKSkKLSAgICAgICAgICAgIGVsaWYgJ19kYXRhJyBpbiBkY3Q6Ci0gICAgICAgICAgICAgICAgbmV3ZGN0ID0gZGN0LmNvcHkoKQotICAgICAgICAgICAgICAgIG5ld2RhdGEgPSBjb3B5X2RpY3RzKGRjdFsnX2RhdGEnXSkKLSAgICAgICAgICAgICAgICBpZiBuZXdkYXRhOgotICAgICAgICAgICAgICAgICAgICBuZXdkY3RbJ19kYXRhJ10gPSBuZXdkYXRhCi0gICAgICAgICAgICAgICAgcmV0dXJuIGxpc3QobmV3ZGN0Lml0ZW1zKCkpCi0gICAgICAgICAgICByZXR1cm4gTm9uZQotICAgICAgICBtYWluX2RpY3QgPSBjb3B5X2RpY3RzKGQuZGljdCkKLSAgICAgICAgcmV0dXJuIG1haW5fZGljdApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvcnVucXVldWUucHkKaW5kZXggMjY0OTJlNy4uMTZmMDc2ZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9ydW5xdWV1ZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3J1bnF1ZXVlLnB5CkBAIC0xMiwxNCArMTIsMTIgQEAKIGltcG9ydCBjb3B5CiBpbXBvcnQgb3MKIGltcG9ydCBzeXMKLWltcG9ydCBzaWduYWwKIGltcG9ydCBzdGF0Ci1pbXBvcnQgZmNudGwKIGltcG9ydCBlcnJubwogaW1wb3J0IGxvZ2dpbmcKIGltcG9ydCByZQogaW1wb3J0IGJiCi1mcm9tIGJiIGltcG9ydCBtc2csIGRhdGEsIGV2ZW50Citmcm9tIGJiIGltcG9ydCBtc2csIGV2ZW50CiBmcm9tIGJiIGltcG9ydCBtb25pdG9yZGlzawogaW1wb3J0IHN1YnByb2Nlc3MKIGltcG9ydCBwaWNrbGUKQEAgLTI5LDYgKzI3LDcgQEAKIAogYmJsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiQml0QmFrZSIpCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiQml0QmFrZS5SdW5RdWV1ZSIpCitoYXNoZXF1aXZfbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoIkJpdEJha2UuUnVuUXVldWUuSGFzaEVxdWl2IikKIAogX19maW5kX3NoYTI1Nl9fID0gcmUuY29tcGlsZSggcicoP2kpKD88IVthLXowLTldKVthLWYwLTldezY0fSg/IVthLXowLTldKScgKQogCkBAIC0xNDgsOCArMTQ3LDkgQEAKICAgICAgICAgIiIiCiAgICAgICAgIFJldHVybiB0aGUgaWQgb2YgdGhlIGZpcnN0IHRhc2sgd2UgZmluZCB0aGF0IGlzIGJ1aWxkYWJsZQogICAgICAgICAiIiIKKyAgICAgICAgIyBPbmNlIHRhc2tzIGFyZSBydW5uaW5nIHdlIGRvbid0IG5lZWQgdG8gd29ycnkgYWJvdXQgdGhlbSBhZ2FpbgorICAgICAgICBzZWxmLmJ1aWxkYWJsZS5kaWZmZXJlbmNlX3VwZGF0ZShzZWxmLnJxLnJ1bnFfcnVubmluZykKICAgICAgICAgYnVpbGRhYmxlID0gc2V0KHNlbGYuYnVpbGRhYmxlKQotICAgICAgICBidWlsZGFibGUuZGlmZmVyZW5jZV91cGRhdGUoc2VsZi5ycS5ydW5xX3J1bm5pbmcpCiAgICAgICAgIGJ1aWxkYWJsZS5kaWZmZXJlbmNlX3VwZGF0ZShzZWxmLnJxLmhvbGRvZmZfdGFza3MpCiAgICAgICAgIGJ1aWxkYWJsZS5pbnRlcnNlY3Rpb25fdXBkYXRlKHNlbGYucnEudGFza3NfY292ZXJlZCB8IHNlbGYucnEudGFza3Nfbm90Y292ZXJlZCkKICAgICAgICAgaWYgbm90IGJ1aWxkYWJsZToKQEAgLTIwNyw4ICsyMDcsNiBAQAogCiAgICAgZGVmIG5ld2J1aWxkYWJsZShzZWxmLCB0YXNrKToKICAgICAgICAgc2VsZi5idWlsZGFibGUuYWRkKHRhc2spCi0gICAgICAgICMgT25jZSB0YXNrcyBhcmUgcnVubmluZyB3ZSBkb24ndCBuZWVkIHRvIHdvcnJ5IGFib3V0IHRoZW0gYWdhaW4KLSAgICAgICAgc2VsZi5idWlsZGFibGUuZGlmZmVyZW5jZV91cGRhdGUoc2VsZi5ycS5ydW5xX3J1bm5pbmcpCiAKICAgICBkZWYgcmVtb3ZlYnVpbGRhYmxlKHNlbGYsIHRhc2spOgogICAgICAgICBzZWxmLmJ1aWxkYWJsZS5yZW1vdmUodGFzaykKQEAgLTkyMyw5ICs5MjEsMTEgQEAKICAgICAgICAgICAgIHJ1bnFfYnVpbGQgPSB7fQogCiAgICAgICAgICAgICBmb3IgdGFzayBpbiBzZWxmLmNvb2tlci5jb25maWd1cmF0aW9uLnJ1bmFsbDoKKyAgICAgICAgICAgICAgICBpZiBub3QgdGFzay5zdGFydHN3aXRoKCJkb18iKToKKyAgICAgICAgICAgICAgICAgICAgdGFzayA9ICJkb197MH0iLmZvcm1hdCh0YXNrKQogICAgICAgICAgICAgICAgIHJ1bmFsbF90aWRzID0gc2V0KCkKICAgICAgICAgICAgICAgICBmb3IgdGlkIGluIGxpc3Qoc2VsZi5ydW50YXNrZW50cmllcyk6Ci0gICAgICAgICAgICAgICAgICAgIHdhbnR0aWQgPSBmbl9mcm9tX3RpZCh0aWQpICsgIjpkb18lcyIgJSB0YXNrCisgICAgICAgICAgICAgICAgICAgIHdhbnR0aWQgPSAiezB9OnsxfSIuZm9ybWF0KGZuX2Zyb21fdGlkKHRpZCksIHRhc2spCiAgICAgICAgICAgICAgICAgICAgIGlmIHdhbnR0aWQgaW4gZGVsY291bnQ6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnJ1bnRhc2tlbnRyaWVzW3dhbnR0aWRdID0gZGVsY291bnRbd2FudHRpZF0KICAgICAgICAgICAgICAgICAgICAgaWYgd2FudHRpZCBpbiBzZWxmLnJ1bnRhc2tlbnRyaWVzOgpAQCAtOTUyLDcgKzk1Miw5IEBACiAgICAgICAgICAgICBydW5xX2J1aWxkID0ge30KIAogICAgICAgICAgICAgZm9yIHRhc2sgaW4gc2VsZi5jb29rZXIuY29uZmlndXJhdGlvbi5ydW5vbmx5OgotICAgICAgICAgICAgICAgIHJ1bm9ubHlfdGlkcyA9IHsgazogdiBmb3IgaywgdiBpbiBzZWxmLnJ1bnRhc2tlbnRyaWVzLml0ZW1zKCkgaWYgdGFza25hbWVfZnJvbV90aWQoaykgPT0gImRvXyVzIiAlIHRhc2sgfQorICAgICAgICAgICAgICAgIGlmIG5vdCB0YXNrLnN0YXJ0c3dpdGgoImRvXyIpOgorICAgICAgICAgICAgICAgICAgICB0YXNrID0gImRvX3swfSIuZm9ybWF0KHRhc2spCisgICAgICAgICAgICAgICAgcnVub25seV90aWRzID0geyBrOiB2IGZvciBrLCB2IGluIHNlbGYucnVudGFza2VudHJpZXMuaXRlbXMoKSBpZiB0YXNrbmFtZV9mcm9tX3RpZChrKSA9PSB0YXNrIH0KIAogICAgICAgICAgICAgICAgIGZvciB0aWQgaW4gbGlzdChydW5vbmx5X3RpZHMpOgogICAgICAgICAgICAgICAgICAgICBtYXJrX2FjdGl2ZSh0aWQsMSkKQEAgLTExMjUsMTQgKzExMjcsMTQgQEAKICAgICAgICAgc2VsZi5pbml0X3Byb2dyZXNzX3JlcG9ydGVyLm5leHRfc3RhZ2UoKQogCiAgICAgICAgICMgSXRlcmF0ZSBvdmVyIHRoZSB0YXNrIGxpc3QgbG9va2luZyBmb3IgdGFza3Mgd2l0aCBhICdzZXRzY2VuZScgZnVuY3Rpb24KLSAgICAgICAgc2VsZi5ydW5xX3NldHNjZW5lX3RpZHMgPSBbXQorICAgICAgICBzZWxmLnJ1bnFfc2V0c2NlbmVfdGlkcyA9IHNldCgpCiAgICAgICAgIGlmIG5vdCBzZWxmLmNvb2tlci5jb25maWd1cmF0aW9uLm5vc2V0c2NlbmU6CiAgICAgICAgICAgICBmb3IgdGlkIGluIHNlbGYucnVudGFza2VudHJpZXM6CiAgICAgICAgICAgICAgICAgKG1jLCBmbiwgdGFza25hbWUsIF8pID0gc3BsaXRfdGlkX21jZm4odGlkKQogICAgICAgICAgICAgICAgIHNldHNjZW5ldGlkID0gdGlkICsgIl9zZXRzY2VuZSIKICAgICAgICAgICAgICAgICBpZiBzZXRzY2VuZXRpZCBub3QgaW4gdGFza0RhdGFbbWNdLnRhc2tlbnRyaWVzOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIHNlbGYucnVucV9zZXRzY2VuZV90aWRzLmFwcGVuZCh0aWQpCisgICAgICAgICAgICAgICAgc2VsZi5ydW5xX3NldHNjZW5lX3RpZHMuYWRkKHRpZCkKIAogICAgICAgICBzZWxmLmluaXRfcHJvZ3Jlc3NfcmVwb3J0ZXIubmV4dF9zdGFnZSgpCiAKQEAgLTExODIsMTAgKzExODQsOCBAQAogICAgICAgICByZXR1cm4gbGVuKHNlbGYucnVudGFza2VudHJpZXMpCiAKICAgICBkZWYgcHJlcGFyZV90YXNrX2hhc2goc2VsZiwgdGlkKToKLSAgICAgICAgcHJvY2RlcCA9IFtdCi0gICAgICAgIGZvciBkZXAgaW4gc2VsZi5ydW50YXNrZW50cmllc1t0aWRdLmRlcGVuZHM6Ci0gICAgICAgICAgICBwcm9jZGVwLmFwcGVuZChkZXApCi0gICAgICAgIHNlbGYucnVudGFza2VudHJpZXNbdGlkXS5oYXNoID0gYmIucGFyc2Uuc2lnZ2VuLmdldF90YXNraGFzaCh0aWQsIHByb2NkZXAsIHNlbGYuZGF0YUNhY2hlc1ttY19mcm9tX3RpZCh0aWQpXSkKKyAgICAgICAgYmIucGFyc2Uuc2lnZ2VuLnByZXBfdGFza2hhc2godGlkLCBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcywgc2VsZi5kYXRhQ2FjaGVzW21jX2Zyb21fdGlkKHRpZCldKQorICAgICAgICBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uaGFzaCA9IGJiLnBhcnNlLnNpZ2dlbi5nZXRfdGFza2hhc2godGlkLCBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcywgc2VsZi5kYXRhQ2FjaGVzW21jX2Zyb21fdGlkKHRpZCldKQogICAgICAgICBzZWxmLnJ1bnRhc2tlbnRyaWVzW3RpZF0udW5paGFzaCA9IGJiLnBhcnNlLnNpZ2dlbi5nZXRfdW5paGFzaCh0aWQpCiAKICAgICBkZWYgZHVtcF9kYXRhKHNlbGYpOgpAQCAtMTI1NSw3ICsxMjU1LDcgQEAKICAgICAgICAgICAgICJmYWtlcm9vdGRpcnMiIDogc2VsZi5ycWRhdGEuZGF0YUNhY2hlc1ttY10uZmFrZXJvb3RkaXJzLAogICAgICAgICAgICAgImZha2Vyb290bm9lbnYiIDogc2VsZi5ycWRhdGEuZGF0YUNhY2hlc1ttY10uZmFrZXJvb3Rub2VudiwKICAgICAgICAgICAgICJzaWdkYXRhIiA6IGJiLnBhcnNlLnNpZ2dlbi5nZXRfdGFza2RhdGEoKSwKLSAgICAgICAgICAgICJsb2dkZWZhdWx0ZGVidWciIDogYmIubXNnLmxvZ2dlckRlZmF1bHREZWJ1Z0xldmVsLAorICAgICAgICAgICAgImxvZ2RlZmF1bHRsZXZlbCIgOiBiYi5tc2cubG9nZ2VyRGVmYXVsdExvZ0xldmVsLAogICAgICAgICAgICAgImxvZ2RlZmF1bHR2ZXJib3NlIiA6IGJiLm1zZy5sb2dnZXJEZWZhdWx0VmVyYm9zZSwKICAgICAgICAgICAgICJsb2dkZWZhdWx0dmVyYm9zZWxvZ3MiIDogYmIubXNnLmxvZ2dlclZlcmJvc2VMb2dzLAogICAgICAgICAgICAgImxvZ2RlZmF1bHRkb21haW4iIDogYmIubXNnLmxvZ2dlckRlZmF1bHREb21haW5zLApAQCAtMTcxMSw2ICsxNzExLDcgQEAKICAgICAgICAgc2VsZi5ydW5xX2J1aWxkYWJsZSA9IHNldCgpCiAgICAgICAgIHNlbGYucnVucV9ydW5uaW5nID0gc2V0KCkKICAgICAgICAgc2VsZi5ydW5xX2NvbXBsZXRlID0gc2V0KCkKKyAgICAgICAgc2VsZi5ydW5xX3Rhc2tzcnVuID0gc2V0KCkKIAogICAgICAgICBzZWxmLmJ1aWxkX3N0YW1wcyA9IHt9CiAgICAgICAgIHNlbGYuYnVpbGRfc3RhbXBzMiA9IFtdCkBAIC0xODk2LDYgKzE4OTcsNyBAQAogICAgICAgICBzZWxmLnN0YXRzLnRhc2tDb21wbGV0ZWQoKQogICAgICAgICBiYi5ldmVudC5maXJlKHJ1blF1ZXVlVGFza0NvbXBsZXRlZCh0YXNrLCBzZWxmLnN0YXRzLCBzZWxmLnJxKSwgc2VsZi5jZmdEYXRhKQogICAgICAgICBzZWxmLnRhc2tfY29tcGxldGVvdXRyaWdodCh0YXNrKQorICAgICAgICBzZWxmLnJ1bnFfdGFza3NydW4uYWRkKHRhc2spCiAKICAgICBkZWYgdGFza19mYWlsKHNlbGYsIHRhc2ssIGV4aXRjb2RlKToKICAgICAgICAgIiIiCkBAIC0xOTYyLDEyICsxOTY0LDE3IEBACiAgICAgICAgICIiIgogCiAgICAgICAgIHNlbGYucnEucmVhZF93b3JrZXJzKCkKLSAgICAgICAgc2VsZi5wcm9jZXNzX3Bvc3NpYmxlX21pZ3JhdGlvbnMoKQorICAgICAgICBpZiBzZWxmLnVwZGF0ZWRfdGFza2hhc2hfcXVldWUgb3Igc2VsZi5wZW5kaW5nX21pZ3JhdGlvbnM6CisgICAgICAgICAgICBzZWxmLnByb2Nlc3NfcG9zc2libGVfbWlncmF0aW9ucygpCisKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoc2VsZiwgInNvcnRlZF9zZXRzY2VuZV90aWRzIik6CisgICAgICAgICAgICAjIERvbid0IHdhbnQgdG8gc29ydCB0aGlzIHNldCBldmVyeSBleGVjdXRpb24KKyAgICAgICAgICAgIHNlbGYuc29ydGVkX3NldHNjZW5lX3RpZHMgPSBzb3J0ZWQoc2VsZi5ycWRhdGEucnVucV9zZXRzY2VuZV90aWRzKQogCiAgICAgICAgIHRhc2sgPSBOb25lCiAgICAgICAgIGlmIG5vdCBzZWxmLnNxZG9uZSBhbmQgc2VsZi5jYW5fc3RhcnRfdGFzaygpOgogICAgICAgICAgICAgIyBGaW5kIHRoZSBuZXh0IHNldHNjZW5lIHRvIHJ1bgotICAgICAgICAgICAgZm9yIG5leHR0YXNrIGluIHNvcnRlZChzZWxmLnJxZGF0YS5ydW5xX3NldHNjZW5lX3RpZHMpOgorICAgICAgICAgICAgZm9yIG5leHR0YXNrIGluIHNlbGYuc29ydGVkX3NldHNjZW5lX3RpZHM6CiAgICAgICAgICAgICAgICAgaWYgbmV4dHRhc2sgaW4gc2VsZi5zcV9idWlsZGFibGUgYW5kIG5leHR0YXNrIG5vdCBpbiBzZWxmLnNxX3J1bm5pbmcgYW5kIHNlbGYuc3FkYXRhLnN0YW1wc1tuZXh0dGFza10gbm90IGluIHNlbGYuYnVpbGRfc3RhbXBzLnZhbHVlcygpOgogICAgICAgICAgICAgICAgICAgICBpZiBuZXh0dGFzayBub3QgaW4gc2VsZi5zcWRhdGEudW5za2lwcGFibGUgYW5kIGxlbihzZWxmLnNxZGF0YS5zcV9yZXZkZXBzW25leHR0YXNrXSkgPiAwIGFuZCBzZWxmLnNxZGF0YS5zcV9yZXZkZXBzW25leHR0YXNrXS5pc3N1YnNldChzZWxmLnNjZW5lcXVldWVfY292ZXJlZCkgYW5kIHNlbGYuY2hlY2tfZGVwZW5kZW5jaWVzKG5leHR0YXNrLCBzZWxmLnNxZGF0YS5zcV9yZXZkZXBzW25leHR0YXNrXSk6CiAgICAgICAgICAgICAgICAgICAgICAgICBpZiBuZXh0dGFzayBub3QgaW4gc2VsZi5ycWRhdGEudGFyZ2V0X3RpZHM6CkBAIC0yMDUyLDcgKzIwNTksNyBAQAogICAgICAgICBzZWxmLnVwZGF0ZV9ob2xkb2ZmdGFza3MoKQogCiAgICAgICAgIGlmIG5vdCBzZWxmLnNxX2xpdmUgYW5kIG5vdCBzZWxmLnNxZG9uZSBhbmQgbm90IHNlbGYuc3FfZGVmZXJyZWQgYW5kIG5vdCBzZWxmLnVwZGF0ZWRfdGFza2hhc2hfcXVldWUgYW5kIG5vdCBzZWxmLmhvbGRvZmZfdGFza3M6Ci0gICAgICAgICAgICBsb2dnZXIuaW5mbygiU2V0c2NlbmUgdGFza3MgY29tcGxldGVkIikKKyAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIudmVyYm9zZSgiU2V0c2NlbmUgdGFza3MgY29tcGxldGVkIikKIAogICAgICAgICAgICAgZXJyID0gc2VsZi5zdW1tYXJpc2Vfc2NlbmVxdWV1ZV9lcnJvcnMoKQogICAgICAgICAgICAgaWYgZXJyOgpAQCAtMjA5MCw2ICsyMDk3LDcgQEAKICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMiwgIlN0YW1wIGN1cnJlbnQgdGFzayAlcyIsIHRhc2spCiAKICAgICAgICAgICAgICAgICBzZWxmLnRhc2tfc2tpcCh0YXNrLCAiZXhpc3RpbmciKQorICAgICAgICAgICAgICAgIHNlbGYucnVucV90YXNrc3J1bi5hZGQodGFzaykKICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogCiAgICAgICAgICAgICB0YXNrZGVwID0gc2VsZi5ycWRhdGEuZGF0YUNhY2hlc1ttY10udGFza19kZXBzW3Rhc2tmbl0KQEAgLTIyNDgsNiArMjI1Niw3IEBACiAgICAgZGVmIHByb2Nlc3NfcG9zc2libGVfbWlncmF0aW9ucyhzZWxmKToKIAogICAgICAgICBjaGFuZ2VkID0gc2V0KCkKKyAgICAgICAgdG9wcm9jZXNzID0gc2V0KCkKICAgICAgICAgZm9yIHRpZCwgdW5paGFzaCBpbiBzZWxmLnVwZGF0ZWRfdGFza2hhc2hfcXVldWUuY29weSgpOgogICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYucnVucV9ydW5uaW5nIGFuZCB0aWQgbm90IGluIHNlbGYucnVucV9jb21wbGV0ZToKICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtMjI1NSw0MiArMjI2NCw2MyBAQAogICAgICAgICAgICAgc2VsZi51cGRhdGVkX3Rhc2toYXNoX3F1ZXVlLnJlbW92ZSgodGlkLCB1bmloYXNoKSkKIAogICAgICAgICAgICAgaWYgdW5paGFzaCAhPSBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLnVuaWhhc2g6Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIlRhc2sgJXMgdW5paGFzaCBjaGFuZ2VkIHRvICVzIiAlICh0aWQsIHVuaWhhc2gpKQorICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIudmVyYm9zZSgiVGFzayAlcyB1bmloYXNoIGNoYW5nZWQgdG8gJXMiICUgKHRpZCwgdW5paGFzaCkpCiAgICAgICAgICAgICAgICAgc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS51bmloYXNoID0gdW5paGFzaAogICAgICAgICAgICAgICAgIGJiLnBhcnNlLnNpZ2dlbi5zZXRfdW5paGFzaCh0aWQsIHVuaWhhc2gpCisgICAgICAgICAgICAgICAgdG9wcm9jZXNzLmFkZCh0aWQpCiAKLSAgICAgICAgICAgICAgICAjIFdvcmsgb3V0IGFsbCB0YXNrcyB3aGljaCBkZXBlbmQgb24gdGhpcyBvbmUKLSAgICAgICAgICAgICAgICB0b3RhbCA9IHNldCgpCi0gICAgICAgICAgICAgICAgbmV4dCA9IHNldChzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLnJldmRlcHMpCi0gICAgICAgICAgICAgICAgd2hpbGUgbmV4dDoKLSAgICAgICAgICAgICAgICAgICAgY3VycmVudCA9IG5leHQuY29weSgpCi0gICAgICAgICAgICAgICAgICAgIHRvdGFsID0gdG90YWwgfG5leHQKLSAgICAgICAgICAgICAgICAgICAgbmV4dCA9IHNldCgpCi0gICAgICAgICAgICAgICAgICAgIGZvciBudGlkIGluIGN1cnJlbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBuZXh0IHw9IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW250aWRdLnJldmRlcHMKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHQuZGlmZmVyZW5jZV91cGRhdGUodG90YWwpCisgICAgICAgICMgV29yayBvdXQgYWxsIHRhc2tzIHdoaWNoIGRlcGVuZCB1cG9uIHRoZXNlCisgICAgICAgIHRvdGFsID0gc2V0KCkKKyAgICAgICAgbmV4dCA9IHNldCgpCisgICAgICAgIGZvciBwIGluIHRvcHJvY2VzczoKKyAgICAgICAgICAgIG5leHQgfD0gc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbcF0ucmV2ZGVwcworICAgICAgICB3aGlsZSBuZXh0OgorICAgICAgICAgICAgY3VycmVudCA9IG5leHQuY29weSgpCisgICAgICAgICAgICB0b3RhbCA9IHRvdGFsIHwgbmV4dAorICAgICAgICAgICAgbmV4dCA9IHNldCgpCisgICAgICAgICAgICBmb3IgbnRpZCBpbiBjdXJyZW50OgorICAgICAgICAgICAgICAgIG5leHQgfD0gc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbbnRpZF0ucmV2ZGVwcworICAgICAgICAgICAgbmV4dC5kaWZmZXJlbmNlX3VwZGF0ZSh0b3RhbCkKIAotICAgICAgICAgICAgICAgICMgTm93IGl0ZXJhdGUgdGhvc2UgdGFza3MgaW4gZGVwZW5kZW5jeSBvcmRlciB0byByZWdlbmVyYXRlIHRoZWlyIHRhc2toYXNoL3VuaWhhc2gKLSAgICAgICAgICAgICAgICBkb25lID0gc2V0KCkKLSAgICAgICAgICAgICAgICBuZXh0ID0gc2V0KHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0ucmV2ZGVwcykKLSAgICAgICAgICAgICAgICB3aGlsZSBuZXh0OgotICAgICAgICAgICAgICAgICAgICBjdXJyZW50ID0gbmV4dC5jb3B5KCkKLSAgICAgICAgICAgICAgICAgICAgbmV4dCA9IHNldCgpCi0gICAgICAgICAgICAgICAgICAgIGZvciB0aWQgaW4gY3VycmVudDoKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLmRlcGVuZHMuaXNkaXNqb2ludCh0b3RhbCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgICAgIHByb2NkZXAgPSBbXQotICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGRlcCBpbiBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLmRlcGVuZHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJvY2RlcC5hcHBlbmQoZGVwKQotICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ2hhc2ggPSBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLmhhc2gKLSAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0uaGFzaCA9IGJiLnBhcnNlLnNpZ2dlbi5nZXRfdGFza2hhc2godGlkLCBwcm9jZGVwLCBzZWxmLnJxZGF0YS5kYXRhQ2FjaGVzW21jX2Zyb21fdGlkKHRpZCldKQotICAgICAgICAgICAgICAgICAgICAgICAgb3JpZ3VuaSA9IHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0udW5paGFzaAotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS51bmloYXNoID0gYmIucGFyc2Uuc2lnZ2VuLmdldF91bmloYXNoKHRpZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygxLCAiVGFzayAlcyBoYXNoIGNoYW5nZXM6ICVzLT4lcyAlcy0+JXMiICUgKHRpZCwgb3JpZ2hhc2gsIHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0uaGFzaCwgb3JpZ3VuaSwgc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS51bmloYXNoKSkKLSAgICAgICAgICAgICAgICAgICAgICAgIG5leHQgfD0gc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS5yZXZkZXBzCi0gICAgICAgICAgICAgICAgICAgICAgICBjaGFuZ2VkLmFkZCh0aWQpCi0gICAgICAgICAgICAgICAgICAgICAgICB0b3RhbC5yZW1vdmUodGlkKQotICAgICAgICAgICAgICAgICAgICAgICAgbmV4dC5pbnRlcnNlY3Rpb25fdXBkYXRlKHRvdGFsKQorICAgICAgICAjIE5vdyBpdGVyYXRlIHRob3NlIHRhc2tzIGluIGRlcGVuZGVuY3kgb3JkZXIgdG8gcmVnZW5lcmF0ZSB0aGVpciB0YXNraGFzaC91bmloYXNoCisgICAgICAgIG5leHQgPSBzZXQoKQorICAgICAgICBmb3IgcCBpbiB0b3RhbDoKKyAgICAgICAgICAgIGlmIGxlbihzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1twXS5kZXBlbmRzKSA9PSAwOgorICAgICAgICAgICAgICAgIG5leHQuYWRkKHApCisgICAgICAgICAgICBlbGlmIHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3BdLmRlcGVuZHMuaXNkaXNqb2ludCh0b3RhbCk6CisgICAgICAgICAgICAgICAgbmV4dC5hZGQocCkKKworICAgICAgICAjIFdoZW4gYW4gaXRlbSBkb2Vzbid0IGhhdmUgZGVwZW5kZW5jaWVzIGluIHRvdGFsLCB3ZSBjYW4gcHJvY2VzcyBpdC4gRHJvcCBpdGVtcyBmcm9tIHRvdGFsIHdoZW4gaGFuZGxlZAorICAgICAgICB3aGlsZSBuZXh0OgorICAgICAgICAgICAgY3VycmVudCA9IG5leHQuY29weSgpCisgICAgICAgICAgICBuZXh0ID0gc2V0KCkKKyAgICAgICAgICAgIGZvciB0aWQgaW4gY3VycmVudDoKKyAgICAgICAgICAgICAgICBpZiBsZW4oc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbcF0uZGVwZW5kcykgYW5kIG5vdCBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLmRlcGVuZHMuaXNkaXNqb2ludCh0b3RhbCk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICAgICAgb3JpZ2hhc2ggPSBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLmhhc2gKKyAgICAgICAgICAgICAgICBuZXdoYXNoID0gYmIucGFyc2Uuc2lnZ2VuLmdldF90YXNraGFzaCh0aWQsIHNlbGYucnFkYXRhLnJ1bnRhc2tlbnRyaWVzW3RpZF0uZGVwZW5kcywgc2VsZi5ycWRhdGEuZGF0YUNhY2hlc1ttY19mcm9tX3RpZCh0aWQpXSkKKyAgICAgICAgICAgICAgICBvcmlndW5pID0gc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS51bmloYXNoCisgICAgICAgICAgICAgICAgbmV3dW5pID0gYmIucGFyc2Uuc2lnZ2VuLmdldF91bmloYXNoKHRpZCkKKyAgICAgICAgICAgICAgICAjIEZJWE1FLCBuZWVkIHRvIGNoZWNrIGl0IGNhbiBjb21lIGZyb20gc3N0YXRlIGF0IGFsbCBmb3IgZGV0ZXJtaW5pc20/CisgICAgICAgICAgICAgICAgcmVtYXBwZWQgPSBGYWxzZQorICAgICAgICAgICAgICAgIGlmIG5ld3VuaSA9PSBvcmlndW5pOgorICAgICAgICAgICAgICAgICAgICAjIE5vdGhpbmcgdG8gZG8sIHdlIG1hdGNoLCBza2lwIGNvZGUgYmVsb3cKKyAgICAgICAgICAgICAgICAgICAgcmVtYXBwZWQgPSBUcnVlCisgICAgICAgICAgICAgICAgZWxpZiB0aWQgaW4gc2VsZi5zY2VuZXF1ZXVlX2NvdmVyZWQgb3IgdGlkIGluIHNlbGYuc3FfbGl2ZToKKyAgICAgICAgICAgICAgICAgICAgIyBBbHJlYWR5IHJhbiB0aGlzIHNldHNjZW5lIHRhc2sgb3IgaXQgcnVubmluZy4gUmVwb3J0IHRoZSBuZXcgdGFza2hhc2gKKyAgICAgICAgICAgICAgICAgICAgYmIucGFyc2Uuc2lnZ2VuLnJlcG9ydF91bmloYXNoX2VxdWl2KHRpZCwgbmV3aGFzaCwgb3JpZ3VuaSwgbmV3dW5pLCBzZWxmLnJxZGF0YS5kYXRhQ2FjaGVzKQorICAgICAgICAgICAgICAgICAgICBoYXNoZXF1aXZfbG9nZ2VyLnZlcmJvc2UoIkFscmVhZHkgY292ZXJlZCBzZXRzY2VuZSBmb3IgJXMgc28gaWdub3JpbmcgcmVoYXNoIChyZW1hcCkiICUgKHRpZCkpCisgICAgICAgICAgICAgICAgICAgIHJlbWFwcGVkID0gVHJ1ZQorCisgICAgICAgICAgICAgICAgaWYgbm90IHJlbWFwcGVkOgorICAgICAgICAgICAgICAgICAgICAjbG9nZ2VyLmRlYnVnKDEsICJUYXNrICVzIGhhc2ggY2hhbmdlczogJXMtPiVzICVzLT4lcyIgJSAodGlkLCBvcmlnaGFzaCwgbmV3aGFzaCwgb3JpZ3VuaSwgbmV3dW5pKSkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5ycWRhdGEucnVudGFza2VudHJpZXNbdGlkXS5oYXNoID0gbmV3aGFzaAorICAgICAgICAgICAgICAgICAgICBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLnVuaWhhc2ggPSBuZXd1bmkKKyAgICAgICAgICAgICAgICAgICAgY2hhbmdlZC5hZGQodGlkKQorCisgICAgICAgICAgICAgICAgbmV4dCB8PSBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0aWRdLnJldmRlcHMKKyAgICAgICAgICAgICAgICB0b3RhbC5yZW1vdmUodGlkKQorICAgICAgICAgICAgICAgIG5leHQuaW50ZXJzZWN0aW9uX3VwZGF0ZSh0b3RhbCkKIAogICAgICAgICBpZiBjaGFuZ2VkOgogICAgICAgICAgICAgZm9yIG1jIGluIHNlbGYucnEud29ya2VyOgpAQCAtMjI5OCw3ICsyMzI4LDcgQEAKICAgICAgICAgICAgIGZvciBtYyBpbiBzZWxmLnJxLmZha2V3b3JrZXI6CiAgICAgICAgICAgICAgICAgc2VsZi5ycS5mYWtld29ya2VyW21jXS5wcm9jZXNzLnN0ZGluLndyaXRlKGIiPG5ld3Rhc2toYXNoZXM+IiArIHBpY2tsZS5kdW1wcyhiYi5wYXJzZS5zaWdnZW4uZ2V0X3Rhc2toYXNoZXMoKSkgKyBiIjwvbmV3dGFza2hhc2hlcz4iKQogCi0gICAgICAgICAgICBsb2dnZXIuZGVidWcoMSwgcHByaW50LnBmb3JtYXQoIlRhc2tzIGNoYW5nZWQ6XG4lcyIgJSAoY2hhbmdlZCkpKQorICAgICAgICAgICAgaGFzaGVxdWl2X2xvZ2dlci5kZWJ1ZygxLCBwcHJpbnQucGZvcm1hdCgiVGFza3MgY2hhbmdlZDpcbiVzIiAlIChjaGFuZ2VkKSkpCiAKICAgICAgICAgZm9yIHRpZCBpbiBjaGFuZ2VkOgogICAgICAgICAgICAgaWYgdGlkIG5vdCBpbiBzZWxmLnJxZGF0YS5ydW5xX3NldHNjZW5lX3RpZHM6CkBAIC0yMzA2LDI0ICsyMzM2LDE4IEBACiAgICAgICAgICAgICBpZiB0aWQgbm90IGluIHNlbGYucGVuZGluZ19taWdyYXRpb25zOgogICAgICAgICAgICAgICAgIHNlbGYucGVuZGluZ19taWdyYXRpb25zLmFkZCh0aWQpCiAKKyAgICAgICAgdXBkYXRlX3Rhc2tzID0gW10KICAgICAgICAgZm9yIHRpZCBpbiBzZWxmLnBlbmRpbmdfbWlncmF0aW9ucy5jb3B5KCk6Ci0gICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi5ydW5xX3J1bm5pbmc6CisgICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi5ydW5xX3J1bm5pbmcgb3IgdGlkIGluIHNlbGYuc3FfbGl2ZToKICAgICAgICAgICAgICAgICAjIFRvbyBsYXRlLCB0YXNrIGFscmVhZHkgcnVubmluZywgbm90IG11Y2ggd2UgY2FuIGRvIG5vdwogICAgICAgICAgICAgICAgIHNlbGYucGVuZGluZ19taWdyYXRpb25zLnJlbW92ZSh0aWQpCiAgICAgICAgICAgICAgICAgY29udGludWUKIAotICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuc2NlbmVxdWV1ZV9jb3ZlcmVkIG9yIHRpZCBpbiBzZWxmLnNxX2xpdmU6Ci0gICAgICAgICAgICAgICAgIyBBbHJlYWR5IHJhbiB0aGlzIHNldHNjZW5lIHRhc2sgb3IgaXQgcnVubmluZwotICAgICAgICAgICAgICAgICMgUG90ZW50aWFsbHkgcmlza3ksIHNob3VsZCB3ZSByZXBvcnQgdGhpcyBoYXNoIGFzIGEgbWF0Y2g/Ci0gICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oIkFscmVhZHkgY292ZXJlZCBzZXRzY2VuZSBmb3IgJXMgc28gaWdub3JpbmcgcmVoYXNoIiAlICh0aWQpKQotICAgICAgICAgICAgICAgIHNlbGYucGVuZGluZ19taWdyYXRpb25zLnJlbW92ZSh0aWQpCi0gICAgICAgICAgICAgICAgY29udGludWUKLQogICAgICAgICAgICAgdmFsaWQgPSBUcnVlCiAgICAgICAgICAgICAjIENoZWNrIG5vIHRhc2tzIHRoaXMgY292ZXJzIGFyZSBydW5uaW5nCiAgICAgICAgICAgICBmb3IgZGVwIGluIHNlbGYuc3FkYXRhLnNxX2NvdmVyZWRfdGFza3NbdGlkXToKICAgICAgICAgICAgICAgICBpZiBkZXAgaW4gc2VsZi5ydW5xX3J1bm5pbmcgYW5kIGRlcCBub3QgaW4gc2VsZi5ydW5xX2NvbXBsZXRlOgotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoMiwgIlRhc2sgJXMgaXMgcnVubmluZyB3aGljaCBibG9ja3Mgc2V0c2NlbmUgZm9yICVzIGZyb20gcnVubmluZyIgJSAoZGVwLCB0aWQpKQorICAgICAgICAgICAgICAgICAgICBoYXNoZXF1aXZfbG9nZ2VyLmRlYnVnKDIsICJUYXNrICVzIGlzIHJ1bm5pbmcgd2hpY2ggYmxvY2tzIHNldHNjZW5lIGZvciAlcyBmcm9tIHJ1bm5pbmciICUgKGRlcCwgdGlkKSkKICAgICAgICAgICAgICAgICAgICAgdmFsaWQgPSBGYWxzZQogICAgICAgICAgICAgICAgICAgICBicmVhawogICAgICAgICAgICAgaWYgbm90IHZhbGlkOgpAQCAtMjMzNSw2ICsyMzU5LDEyIEBACiAgICAgICAgICAgICBpZiB0aWQgaW4gc2VsZi50YXNrc19zY2VuZXF1ZXVlX2RvbmU6CiAgICAgICAgICAgICAgICAgc2VsZi50YXNrc19zY2VuZXF1ZXVlX2RvbmUucmVtb3ZlKHRpZCkKICAgICAgICAgICAgIGZvciBkZXAgaW4gc2VsZi5zcWRhdGEuc3FfY292ZXJlZF90YXNrc1t0aWRdOgorICAgICAgICAgICAgICAgIGlmIGRlcCBpbiBzZWxmLnJ1bnFfY29tcGxldGUgYW5kIGRlcCBub3QgaW4gc2VsZi5ydW5xX3Rhc2tzcnVuOgorICAgICAgICAgICAgICAgICAgICBiYi5lcnJvcigiVGFzayAlcyBtYXJrZWQgYXMgY29tcGxldGVkIGJ1dCBub3cgbmVlZGluZyB0byByZXJ1bj8gQWJvcnRpbmcgYnVpbGQuIiAlIGRlcCkKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsZWRfdGlkcy5hcHBlbmQodGlkKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnJxLnN0YXRlID0gcnVuUXVldWVDbGVhblVwCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgICAgICAgICAgaWYgZGVwIG5vdCBpbiBzZWxmLnJ1bnFfY29tcGxldGU6CiAgICAgICAgICAgICAgICAgICAgIGlmIGRlcCBpbiBzZWxmLnRhc2tzX3NjZW5lcXVldWVfZG9uZSBhbmQgZGVwIG5vdCBpbiBzZWxmLnNxZGF0YS51bnNraXBwYWJsZToKICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYudGFza3Nfc2NlbmVxdWV1ZV9kb25lLnJlbW92ZShkZXApCkBAIC0yMzQzLDcgKzIzNzMsMTIgQEAKICAgICAgICAgICAgICAgICBzZWxmLnNxX2J1aWxkYWJsZS5yZW1vdmUodGlkKQogICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuc3FfcnVubmluZzoKICAgICAgICAgICAgICAgICBzZWxmLnNxX3J1bm5pbmcucmVtb3ZlKHRpZCkKLSAgICAgICAgICAgIGlmIHNlbGYuc3FkYXRhLnNxX3JldmRlcHNbdGlkXS5pc3N1YnNldChzZWxmLnNjZW5lcXVldWVfY292ZXJlZCB8IHNlbGYuc2NlbmVxdWV1ZV9ub3Rjb3ZlcmVkKToKKyAgICAgICAgICAgIGhhcmRkZXBmYWlsID0gRmFsc2UKKyAgICAgICAgICAgIGZvciB0IGluIHNlbGYuc3FkYXRhLnNxX2hhcmRkZXBzOgorICAgICAgICAgICAgICAgIGlmIHRpZCBpbiBzZWxmLnNxZGF0YS5zcV9oYXJkZGVwc1t0XSBhbmQgdCBpbiBzZWxmLnNjZW5lcXVldWVfbm90Y292ZXJlZDoKKyAgICAgICAgICAgICAgICAgICAgaGFyZGRlcGZhaWwgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBpZiBub3QgaGFyZGRlcGZhaWwgYW5kIHNlbGYuc3FkYXRhLnNxX3JldmRlcHNbdGlkXS5pc3N1YnNldChzZWxmLnNjZW5lcXVldWVfY292ZXJlZCB8IHNlbGYuc2NlbmVxdWV1ZV9ub3Rjb3ZlcmVkKToKICAgICAgICAgICAgICAgICBpZiB0aWQgbm90IGluIHNlbGYuc3FfYnVpbGRhYmxlOgogICAgICAgICAgICAgICAgICAgICBzZWxmLnNxX2J1aWxkYWJsZS5hZGQodGlkKQogICAgICAgICAgICAgaWYgbGVuKHNlbGYuc3FkYXRhLnNxX3JldmRlcHNbdGlkXSkgPT0gMDoKQEAgLTIzNjcsMTMgKzI0MDIsMTcgQEAKICAgICAgICAgICAgIGlmIHRpZCBpbiBzZWxmLmJ1aWxkX3N0YW1wczoKICAgICAgICAgICAgICAgICBkZWwgc2VsZi5idWlsZF9zdGFtcHNbdGlkXQogCi0gICAgICAgICAgICBvcmlndmFsaWQgPSBGYWxzZQotICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYuc3FkYXRhLnZhbGlkOgotICAgICAgICAgICAgICAgIG9yaWd2YWxpZCA9IFRydWUKKyAgICAgICAgICAgIHVwZGF0ZV90YXNrcy5hcHBlbmQoKHRpZCwgaGFyZGRlcGZhaWwsIHRpZCBpbiBzZWxmLnNxZGF0YS52YWxpZCkpCisKKyAgICAgICAgaWYgdXBkYXRlX3Rhc2tzOgogICAgICAgICAgICAgc2VsZi5zcWRvbmUgPSBGYWxzZQotICAgICAgICAgICAgdXBkYXRlX3NjZW5lcXVldWVfZGF0YShbdGlkXSwgc2VsZi5zcWRhdGEsIHNlbGYucnFkYXRhLCBzZWxmLnJxLCBzZWxmLmNvb2tlciwgc2VsZi5zdGFtcGNhY2hlLCBzZWxmLCBzdW1tYXJ5PUZhbHNlKQorICAgICAgICAgICAgdXBkYXRlX3NjZW5lcXVldWVfZGF0YShbdFswXSBmb3IgdCBpbiB1cGRhdGVfdGFza3NdLCBzZWxmLnNxZGF0YSwgc2VsZi5ycWRhdGEsIHNlbGYucnEsIHNlbGYuY29va2VyLCBzZWxmLnN0YW1wY2FjaGUsIHNlbGYsIHN1bW1hcnk9RmFsc2UpCisKKyAgICAgICAgZm9yICh0aWQsIGhhcmRkZXBmYWlsLCBvcmlndmFsaWQpIGluIHVwZGF0ZV90YXNrczoKICAgICAgICAgICAgIGlmIHRpZCBpbiBzZWxmLnNxZGF0YS52YWxpZCBhbmQgbm90IG9yaWd2YWxpZDoKLSAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygiU2V0c2NlbmUgdGFzayAlcyBiZWNhbWUgdmFsaWQiICUgdGlkKQorICAgICAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIudmVyYm9zZSgiU2V0c2NlbmUgdGFzayAlcyBiZWNhbWUgdmFsaWQiICUgdGlkKQorICAgICAgICAgICAgaWYgaGFyZGRlcGZhaWw6CisgICAgICAgICAgICAgICAgc2VsZi5zcV90YXNrX2ZhaWxvdXRyaWdodCh0aWQpCiAKICAgICAgICAgaWYgY2hhbmdlZDoKICAgICAgICAgICAgIHNlbGYuaG9sZG9mZl9uZWVkX3VwZGF0ZSA9IFRydWUKQEAgLTI1MTAsNiArMjU0OSw4IEBACiAgICAgICAgICAgICAgICAgbXNnID0gJ1Rhc2sgJXMuJXMgYXR0ZW1wdGVkIHRvIGV4ZWN1dGUgdW5leHBlY3RlZGx5IGFuZCBzaG91bGQgaGF2ZSBiZWVuIHNldHNjZW5lZCcgJSAocG4sIHRhc2tuYW1lKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBtc2cgPSAnVGFzayAlcy4lcyBhdHRlbXB0ZWQgdG8gZXhlY3V0ZSB1bmV4cGVjdGVkbHknICUgKHBuLCB0YXNrbmFtZSkKKyAgICAgICAgICAgIGZvciB0IGluIHNlbGYuc2NlbmVxdWV1ZV9ub3Rjb3ZlcmVkOgorICAgICAgICAgICAgICAgIG1zZyA9IG1zZyArICJcblRhc2sgJXMsIHVuaWhhc2ggJXMsIHRhc2toYXNoICVzIiAlICh0LCBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0XS51bmloYXNoLCBzZWxmLnJxZGF0YS5ydW50YXNrZW50cmllc1t0XS5oYXNoKQogICAgICAgICAgICAgbG9nZ2VyLmVycm9yKG1zZyArICdcblRoaXMgaXMgdXN1YWxseSBkdWUgdG8gbWlzc2luZyBzZXRzY2VuZSB0YXNrcy4gVGhvc2UgbWlzc2luZyBpbiB0aGlzIGJ1aWxkIHdlcmU6ICVzJyAlIHBwcmludC5wZm9ybWF0KHNlbGYuc2NlbmVxdWV1ZV9ub3Rjb3ZlcmVkKSkKICAgICAgICAgICAgIHJldHVybiBUcnVlCiAgICAgICAgIHJldHVybiBGYWxzZQpAQCAtMjc2MCw3ICsyODAxLDcgQEAKICAgICAgICAgICAgICAgICBzcWRhdGEuaGFzaGVzW2hdID0gdGlkCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHNxcnEuc3FfZGVmZXJyZWRbdGlkXSA9IHNxZGF0YS5oYXNoZXNbaF0KLSAgICAgICAgICAgICAgICBiYi53YXJuKCJEZWZlcnJpbmcgJXMgYWZ0ZXIgJXMiICUgKHRpZCwgc3FkYXRhLmhhc2hlc1toXSkpCisgICAgICAgICAgICAgICAgYmIubm90ZSgiRGVmZXJyaW5nICVzIGFmdGVyICVzIiAlICh0aWQsIHNxZGF0YS5oYXNoZXNbaF0pKQogCiAKIGNsYXNzIFRhc2tGYWlsdXJlKEV4Y2VwdGlvbik6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci94bWxycGNjbGllbnQucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci94bWxycGNjbGllbnQucHkKaW5kZXggYzA1NGMzYy4uNDQyZWE3YiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIveG1scnBjY2xpZW50LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3htbHJwY2NsaWVudC5weQpAQCAtNyw5ICs3LDYgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1pbXBvcnQgb3MKLWltcG9ydCBzeXMKLQogaW1wb3J0IHNvY2tldAogaW1wb3J0IGh0dHAuY2xpZW50CiBpbXBvcnQgeG1scnBjLmNsaWVudApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIveG1scnBjc2VydmVyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9zZXJ2ZXIveG1scnBjc2VydmVyLnB5CmluZGV4IDU0ZmEzMmYuLjJmYTcxYmUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvc2VydmVyL3htbHJwY3NlcnZlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3NlcnZlci94bWxycGNzZXJ2ZXIucHkKQEAgLTcsOSArNyw2IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotaW1wb3J0IG9zCi1pbXBvcnQgc3lzCi0KIGltcG9ydCBoYXNobGliCiBpbXBvcnQgdGltZQogaW1wb3J0IGluc3BlY3QKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvc2lnZ2VuLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi9zaWdnZW4ucHkKaW5kZXggYTRiYjFmZi4uNGM4ZDgxYyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi9zaWdnZW4ucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi9zaWdnZW4ucHkKQEAgLTE2LDYgKzE2LDcgQEAKIGltcG9ydCBoYXNoc2VydgogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignQml0QmFrZS5TaWdHZW4nKQoraGFzaGVxdWl2X2xvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCdCaXRCYWtlLlNpZ0dlbi5IYXNoRXF1aXYnKQogCiBkZWYgaW5pdChkKToKICAgICBzaWdnZW5zID0gW29iaiBmb3Igb2JqIGluIGdsb2JhbHMoKS52YWx1ZXMoKQpAQCAtNDAsMTggKzQxLDI2IEBACiAgICAgZGVmIF9faW5pdF9fKHNlbGYsIGRhdGEpOgogICAgICAgICBzZWxmLmJhc2VoYXNoID0ge30KICAgICAgICAgc2VsZi50YXNraGFzaCA9IHt9CisgICAgICAgIHNlbGYudW5paGFzaCA9IHt9CiAgICAgICAgIHNlbGYucnVudGFza2RlcHMgPSB7fQogICAgICAgICBzZWxmLmZpbGVfY2hlY2tzdW1fdmFsdWVzID0ge30KICAgICAgICAgc2VsZi50YWludHMgPSB7fQogICAgICAgICBzZWxmLnVuaXRhc2toYXNoZXMgPSB7fQotICAgICAgICBzZWxmLnNldHNjZW5ldGFza3MgPSB7fQorICAgICAgICBzZWxmLnRpZHRvcG4gPSB7fQorICAgICAgICBzZWxmLnNldHNjZW5ldGFza3MgPSBzZXQoKQogCiAgICAgZGVmIGZpbmFsaXNlKHNlbGYsIGZuLCBkLCB2YXJpZW50KToKICAgICAgICAgcmV0dXJuCiAKKyAgICBkZWYgcG9zdHBhcnNpbmdfY2xlYW5fY2FjaGUoc2VsZik6CisgICAgICAgIHJldHVybgorCiAgICAgZGVmIGdldF91bmloYXNoKHNlbGYsIHRpZCk6CiAgICAgICAgIHJldHVybiBzZWxmLnRhc2toYXNoW3RpZF0KIAorICAgIGRlZiBwcmVwX3Rhc2toYXNoKHNlbGYsIHRpZCwgZGVwcywgZGF0YUNhY2hlKToKKyAgICAgICAgcmV0dXJuCisKICAgICBkZWYgZ2V0X3Rhc2toYXNoKHNlbGYsIHRpZCwgZGVwcywgZGF0YUNhY2hlKToKICAgICAgICAgc2VsZi50YXNraGFzaFt0aWRdID0gaGFzaGxpYi5zaGEyNTYodGlkLmVuY29kZSgidXRmLTgiKSkuaGV4ZGlnZXN0KCkKICAgICAgICAgcmV0dXJuIHNlbGYudGFza2hhc2hbdGlkXQpAQCAtNzYsMTkgKzg1LDE5IEBACiAgICAgICAgIHJldHVybgogCiAgICAgZGVmIGdldF90YXNrZGF0YShzZWxmKToKLSAgICAgICAgcmV0dXJuIChzZWxmLnJ1bnRhc2tkZXBzLCBzZWxmLnRhc2toYXNoLCBzZWxmLmZpbGVfY2hlY2tzdW1fdmFsdWVzLCBzZWxmLnRhaW50cywgc2VsZi5iYXNlaGFzaCwgc2VsZi51bml0YXNraGFzaGVzLCBzZWxmLnNldHNjZW5ldGFza3MpCisgICAgICAgIHJldHVybiAoc2VsZi5ydW50YXNrZGVwcywgc2VsZi50YXNraGFzaCwgc2VsZi51bmloYXNoLCBzZWxmLmZpbGVfY2hlY2tzdW1fdmFsdWVzLCBzZWxmLnRhaW50cywgc2VsZi5iYXNlaGFzaCwgc2VsZi51bml0YXNraGFzaGVzLCBzZWxmLnRpZHRvcG4sIHNlbGYuc2V0c2NlbmV0YXNrcykKIAogICAgIGRlZiBzZXRfdGFza2RhdGEoc2VsZiwgZGF0YSk6Ci0gICAgICAgIHNlbGYucnVudGFza2RlcHMsIHNlbGYudGFza2hhc2gsIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXMsIHNlbGYudGFpbnRzLCBzZWxmLmJhc2VoYXNoLCBzZWxmLnVuaXRhc2toYXNoZXMsIHNlbGYuc2V0c2NlbmV0YXNrcyA9IGRhdGEKKyAgICAgICAgc2VsZi5ydW50YXNrZGVwcywgc2VsZi50YXNraGFzaCwgc2VsZi51bmloYXNoLCBzZWxmLmZpbGVfY2hlY2tzdW1fdmFsdWVzLCBzZWxmLnRhaW50cywgc2VsZi5iYXNlaGFzaCwgc2VsZi51bml0YXNraGFzaGVzLCBzZWxmLnRpZHRvcG4sIHNlbGYuc2V0c2NlbmV0YXNrcyA9IGRhdGEKIAogICAgIGRlZiByZXNldChzZWxmLCBkYXRhKToKICAgICAgICAgc2VsZi5fX2luaXRfXyhkYXRhKQogCiAgICAgZGVmIGdldF90YXNraGFzaGVzKHNlbGYpOgotICAgICAgICByZXR1cm4gc2VsZi50YXNraGFzaCwgc2VsZi51bml0YXNraGFzaGVzCisgICAgICAgIHJldHVybiBzZWxmLnRhc2toYXNoLCBzZWxmLnVuaWhhc2gsIHNlbGYudW5pdGFza2hhc2hlcywgc2VsZi50aWR0b3BuCiAKICAgICBkZWYgc2V0X3Rhc2toYXNoZXMoc2VsZiwgaGFzaGVzKToKLSAgICAgICAgc2VsZi50YXNraGFzaCwgc2VsZi51bml0YXNraGFzaGVzID0gaGFzaGVzCisgICAgICAgIHNlbGYudGFza2hhc2gsIHNlbGYudW5paGFzaCwgc2VsZi51bml0YXNraGFzaGVzLCBzZWxmLnRpZHRvcG4gPSBoYXNoZXMKIAogICAgIGRlZiBzYXZlX3VuaXRhc2toYXNoZXMoc2VsZik6CiAgICAgICAgIHJldHVybgpAQCAtMTA0LDEzICsxMTMsMTQgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgZGF0YSk6CiAgICAgICAgIHNlbGYuYmFzZWhhc2ggPSB7fQogICAgICAgICBzZWxmLnRhc2toYXNoID0ge30KKyAgICAgICAgc2VsZi51bmloYXNoID0ge30KICAgICAgICAgc2VsZi50YXNrZGVwcyA9IHt9CiAgICAgICAgIHNlbGYucnVudGFza2RlcHMgPSB7fQogICAgICAgICBzZWxmLmZpbGVfY2hlY2tzdW1fdmFsdWVzID0ge30KICAgICAgICAgc2VsZi50YWludHMgPSB7fQogICAgICAgICBzZWxmLmdlbmRlcHMgPSB7fQogICAgICAgICBzZWxmLmxvb2t1cGNhY2hlID0ge30KLSAgICAgICAgc2VsZi5zZXRzY2VuZXRhc2tzID0ge30KKyAgICAgICAgc2VsZi5zZXRzY2VuZXRhc2tzID0gc2V0KCkKICAgICAgICAgc2VsZi5iYXNld2hpdGVsaXN0ID0gc2V0KChkYXRhLmdldFZhcigiQkJfSEFTSEJBU0VfV0hJVEVMSVNUIikgb3IgIiIpLnNwbGl0KCkpCiAgICAgICAgIHNlbGYudGFza3doaXRlbGlzdCA9IE5vbmUKICAgICAgICAgc2VsZi5pbml0X3J1bmRlcGNoZWNrKGRhdGEpCkBAIC0xMjEsOCArMTMxLDEwIEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLmNoZWNrc3VtX2NhY2hlID0gTm9uZQogCi0gICAgICAgIHNlbGYudW5paGFzaF9jYWNoZSA9IGJiLmNhY2hlLlNpbXBsZUNhY2hlKCIxIikKKyAgICAgICAgc2VsZi51bmloYXNoX2NhY2hlID0gYmIuY2FjaGUuU2ltcGxlQ2FjaGUoIjMiKQogICAgICAgICBzZWxmLnVuaXRhc2toYXNoZXMgPSBzZWxmLnVuaWhhc2hfY2FjaGUuaW5pdF9jYWNoZShkYXRhLCAiYmJfdW5paGFzaGVzLmRhdCIsIHt9KQorICAgICAgICBzZWxmLmxvY2FsZGlyc2V4Y2x1ZGUgPSAoZGF0YS5nZXRWYXIoIkJCX1NJR05BVFVSRV9MT0NBTF9ESVJTX0VYQ0xVREUiKSBvciAiQ1ZTIC5ienIgLmdpdCAuaGcgLm9zYyAucDQgLnJlcG8gLnN2biIpLnNwbGl0KCkKKyAgICAgICAgc2VsZi50aWR0b3BuID0ge30KIAogICAgIGRlZiBpbml0X3J1bmRlcGNoZWNrKHNlbGYsIGRhdGEpOgogICAgICAgICBzZWxmLnRhc2t3aGl0ZWxpc3QgPSBkYXRhLmdldFZhcigiQkJfSEFTSFRBU0tfV0hJVEVMSVNUIikgb3IgTm9uZQpAQCAtMTM0LDcgKzE0Niw3IEBACiAgICAgZGVmIF9idWlsZF9kYXRhKHNlbGYsIGZuLCBkKToKIAogICAgICAgICBpZ25vcmVfbWlzbWF0Y2ggPSAoKGQuZ2V0VmFyKCJCQl9IQVNIX0lHTk9SRV9NSVNNQVRDSCIpIG9yICcnKSA9PSAnMScpCi0gICAgICAgIHRhc2tsaXN0LCBnZW5kZXBzLCBsb29rdXBjYWNoZSA9IGJiLmRhdGEuZ2VuZXJhdGVfZGVwZW5kZW5jaWVzKGQpCisgICAgICAgIHRhc2tsaXN0LCBnZW5kZXBzLCBsb29rdXBjYWNoZSA9IGJiLmRhdGEuZ2VuZXJhdGVfZGVwZW5kZW5jaWVzKGQsIHNlbGYuYmFzZXdoaXRlbGlzdCkKIAogICAgICAgICB0YXNrZGVwcywgYmFzZWhhc2ggPSBiYi5kYXRhLmdlbmVyYXRlX2RlcGVuZGVuY3lfaGFzaCh0YXNrbGlzdCwgZ2VuZGVwcywgbG9va3VwY2FjaGUsIHNlbGYuYmFzZXdoaXRlbGlzdCwgZm4pCiAKQEAgLTE1Nyw3ICsxNjksNyBAQAogICAgICAgICByZXR1cm4gdGFza2RlcHMKIAogICAgIGRlZiBzZXRfc2V0c2NlbmVfdGFza3Moc2VsZiwgc2V0c2NlbmVfdGFza3MpOgotICAgICAgICBzZWxmLnNldHNjZW5ldGFza3MgPSBzZXRzY2VuZV90YXNrcworICAgICAgICBzZWxmLnNldHNjZW5ldGFza3MgPSBzZXQoc2V0c2NlbmVfdGFza3MpCiAKICAgICBkZWYgZmluYWxpc2Uoc2VsZiwgZm4sIGQsIHZhcmlhbnQpOgogCkBAIC0xODAsNiArMTkyLDE0IEBACiAgICAgICAgIGZvciB0YXNrIGluIHRhc2tkZXBzOgogICAgICAgICAgICAgZC5zZXRWYXIoIkJCX0JBU0VIQVNIX3Rhc2stJXMiICUgdGFzaywgc2VsZi5iYXNlaGFzaFtmbiArICI6IiArIHRhc2tdKQogCisgICAgZGVmIHBvc3RwYXJzaW5nX2NsZWFuX2NhY2hlKHNlbGYpOgorICAgICAgICAjCisgICAgICAgICMgQWZ0ZXIgcGFyc2luZyB3ZSBjYW4gcmVtb3ZlIHNvbWUgdGhpbmdzIGZyb20gbWVtb3J5IHRvIHJlZHVjZSBvdXIgbWVtb3J5IGZvb3RwcmludAorICAgICAgICAjCisgICAgICAgIHNlbGYuZ2VuZGVwcyA9IHt9CisgICAgICAgIHNlbGYubG9va3VwY2FjaGUgPSB7fQorICAgICAgICBzZWxmLnRhc2tkZXBzID0ge30KKwogICAgIGRlZiBydW5kZXBfY2hlY2soc2VsZiwgZm4sIHJlY2lwZW5hbWUsIHRhc2ssIGRlcCwgZGVwbmFtZSwgZGF0YUNhY2hlKToKICAgICAgICAgIyBSZXR1cm4gVHJ1ZSBpZiB3ZSBzaG91bGQga2VlcCB0aGUgZGVwZW5kZW5jeSwgRmFsc2UgdG8gZHJvcCBpdAogICAgICAgICAjIFdlIG9ubHkgbWFuaXB1bGF0ZSB0aGUgZGVwZW5kZW5jaWVzIGZvciBwYWNrYWdlcyBub3QgaW4gdGhlIHdoaXRlbGlzdApAQCAtMTk4LDE1ICsyMTgsMTcgQEAKICAgICAgICAgICAgIHBhc3MKICAgICAgICAgcmV0dXJuIHRhaW50CiAKLSAgICBkZWYgZ2V0X3Rhc2toYXNoKHNlbGYsIHRpZCwgZGVwcywgZGF0YUNhY2hlKToKKyAgICBkZWYgcHJlcF90YXNraGFzaChzZWxmLCB0aWQsIGRlcHMsIGRhdGFDYWNoZSk6CiAKICAgICAgICAgKG1jLCBfLCB0YXNrLCBmbikgPSBiYi5ydW5xdWV1ZS5zcGxpdF90aWRfbWNmbih0aWQpCiAKLSAgICAgICAgZGF0YSA9IGRhdGFDYWNoZS5iYXNldGFza2hhc2hbdGlkXQotICAgICAgICBzZWxmLmJhc2VoYXNoW3RpZF0gPSBkYXRhCisgICAgICAgIHNlbGYuYmFzZWhhc2hbdGlkXSA9IGRhdGFDYWNoZS5iYXNldGFza2hhc2hbdGlkXQogICAgICAgICBzZWxmLnJ1bnRhc2tkZXBzW3RpZF0gPSBbXQogICAgICAgICBzZWxmLmZpbGVfY2hlY2tzdW1fdmFsdWVzW3RpZF0gPSBbXQogICAgICAgICByZWNpcGVuYW1lID0gZGF0YUNhY2hlLnBrZ19mbltmbl0KKworICAgICAgICBzZWxmLnRpZHRvcG5bdGlkXSA9IHJlY2lwZW5hbWUKKwogICAgICAgICBmb3IgZGVwIGluIHNvcnRlZChkZXBzLCBrZXk9Y2xlYW5fYmFzZXBhdGgpOgogICAgICAgICAgICAgKGRlcG1jLCBfLCBkZXB0YXNrbmFtZSwgZGVwZm4pID0gYmIucnVucXVldWUuc3BsaXRfdGlkX21jZm4oZGVwKQogICAgICAgICAgICAgaWYgbWMgIT0gZGVwbWM6CkBAIC0yMTYsMzMgKzIzOCw1NiBAQAogICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICBpZiBkZXAgbm90IGluIHNlbGYudGFza2hhc2g6CiAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIiVzIGlzIG5vdCBpbiB0YXNraGFzaCwgY2FsbGVyIGlzbid0IGNhbGxpbmcgaW4gZGVwZW5kZW5jeSBvcmRlcj8iICUgZGVwKQotICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBzZWxmLmdldF91bmloYXNoKGRlcCkKICAgICAgICAgICAgIHNlbGYucnVudGFza2RlcHNbdGlkXS5hcHBlbmQoZGVwKQogCiAgICAgICAgIGlmIHRhc2sgaW4gZGF0YUNhY2hlLmZpbGVfY2hlY2tzdW1zW2ZuXToKICAgICAgICAgICAgIGlmIHNlbGYuY2hlY2tzdW1fY2FjaGU6Ci0gICAgICAgICAgICAgICAgY2hlY2tzdW1zID0gc2VsZi5jaGVja3N1bV9jYWNoZS5nZXRfY2hlY2tzdW1zKGRhdGFDYWNoZS5maWxlX2NoZWNrc3Vtc1tmbl1bdGFza10sIHJlY2lwZW5hbWUpCisgICAgICAgICAgICAgICAgY2hlY2tzdW1zID0gc2VsZi5jaGVja3N1bV9jYWNoZS5nZXRfY2hlY2tzdW1zKGRhdGFDYWNoZS5maWxlX2NoZWNrc3Vtc1tmbl1bdGFza10sIHJlY2lwZW5hbWUsIHNlbGYubG9jYWxkaXJzZXhjbHVkZSkKICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgY2hlY2tzdW1zID0gYmIuZmV0Y2gyLmdldF9maWxlX2NoZWNrc3VtcyhkYXRhQ2FjaGUuZmlsZV9jaGVja3N1bXNbZm5dW3Rhc2tdLCByZWNpcGVuYW1lKQorICAgICAgICAgICAgICAgIGNoZWNrc3VtcyA9IGJiLmZldGNoMi5nZXRfZmlsZV9jaGVja3N1bXMoZGF0YUNhY2hlLmZpbGVfY2hlY2tzdW1zW2ZuXVt0YXNrXSwgcmVjaXBlbmFtZSwgc2VsZi5sb2NhbGRpcnNleGNsdWRlKQogICAgICAgICAgICAgZm9yIChmLGNzKSBpbiBjaGVja3N1bXM6CiAgICAgICAgICAgICAgICAgc2VsZi5maWxlX2NoZWNrc3VtX3ZhbHVlc1t0aWRdLmFwcGVuZCgoZixjcykpCi0gICAgICAgICAgICAgICAgaWYgY3M6Ci0gICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgY3MKIAogICAgICAgICB0YXNrZGVwID0gZGF0YUNhY2hlLnRhc2tfZGVwc1tmbl0KICAgICAgICAgaWYgJ25vc3RhbXAnIGluIHRhc2tkZXAgYW5kIHRhc2sgaW4gdGFza2RlcFsnbm9zdGFtcCddOgogICAgICAgICAgICAgIyBOb3N0YW1wIHRhc2tzIG5lZWQgYW4gaW1wbGljaXQgdGFpbnQgc28gdGhhdCB0aGV5IGZvcmNlIGFueSBkZXBlbmRlbnQgdGFza3MgdG8gcnVuCi0gICAgICAgICAgICBpbXBvcnQgdXVpZAotICAgICAgICAgICAgdGFpbnQgPSBzdHIodXVpZC51dWlkNCgpKQotICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyB0YWludAotICAgICAgICAgICAgc2VsZi50YWludHNbdGlkXSA9ICJub3N0YW1wOiIgKyB0YWludAorICAgICAgICAgICAgaWYgdGlkIGluIHNlbGYudGFpbnRzIGFuZCBzZWxmLnRhaW50c1t0aWRdLnN0YXJ0c3dpdGgoIm5vc3RhbXA6Iik6CisgICAgICAgICAgICAgICAgIyBEb24ndCByZXNldCB0YWludCB2YWx1ZSB1cG9uIGV2ZXJ5IGNhbGwKKyAgICAgICAgICAgICAgICBwYXNzCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGltcG9ydCB1dWlkCisgICAgICAgICAgICAgICAgdGFpbnQgPSBzdHIodXVpZC51dWlkNCgpKQorICAgICAgICAgICAgICAgIHNlbGYudGFpbnRzW3RpZF0gPSAibm9zdGFtcDoiICsgdGFpbnQKIAogICAgICAgICB0YWludCA9IHNlbGYucmVhZF90YWludChmbiwgdGFzaywgZGF0YUNhY2hlLnN0YW1wW2ZuXSkKICAgICAgICAgaWYgdGFpbnQ6Ci0gICAgICAgICAgICBkYXRhID0gZGF0YSArIHRhaW50CiAgICAgICAgICAgICBzZWxmLnRhaW50c1t0aWRdID0gdGFpbnQKICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCIlcyBpcyB0YWludGVkIGZyb20gYSBmb3JjZWQgcnVuIiAlIHRpZCkKIAorICAgICAgICByZXR1cm4KKworICAgIGRlZiBnZXRfdGFza2hhc2goc2VsZiwgdGlkLCBkZXBzLCBkYXRhQ2FjaGUpOgorCisgICAgICAgIGRhdGEgPSBzZWxmLmJhc2VoYXNoW3RpZF0KKyAgICAgICAgZm9yIGRlcCBpbiBzZWxmLnJ1bnRhc2tkZXBzW3RpZF06CisgICAgICAgICAgICBpZiBkZXAgaW4gc2VsZi51bmloYXNoOgorICAgICAgICAgICAgICAgIGlmIHNlbGYudW5paGFzaFtkZXBdIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgc2VsZi50YXNraGFzaFtkZXBdCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBzZWxmLnVuaWhhc2hbZGVwXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSArIHNlbGYuZ2V0X3VuaWhhc2goZGVwKQorCisgICAgICAgIGZvciAoZiwgY3MpIGluIHNlbGYuZmlsZV9jaGVja3N1bV92YWx1ZXNbdGlkXToKKyAgICAgICAgICAgIGlmIGNzOgorICAgICAgICAgICAgICAgIGRhdGEgPSBkYXRhICsgY3MKKworICAgICAgICBpZiB0aWQgaW4gc2VsZi50YWludHM6CisgICAgICAgICAgICBpZiBzZWxmLnRhaW50c1t0aWRdLnN0YXJ0c3dpdGgoIm5vc3RhbXA6Iik6CisgICAgICAgICAgICAgICAgZGF0YSA9IGRhdGEgKyBzZWxmLnRhaW50c1t0aWRdWzg6XQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSArIHNlbGYudGFpbnRzW3RpZF0KKwogICAgICAgICBoID0gaGFzaGxpYi5zaGEyNTYoZGF0YS5lbmNvZGUoInV0Zi04IikpLmhleGRpZ2VzdCgpCiAgICAgICAgIHNlbGYudGFza2hhc2hbdGlkXSA9IGgKICAgICAgICAgI2Quc2V0VmFyKCJCQl9UQVNLSEFTSF90YXNrLSVzIiAlIHRhc2ssIHRhc2toYXNoW3Rhc2tdKQpAQCAtMzcxLDUwICs0MTYsNjYgQEAKICAgICAgICAgYmIuYnVpbGQud3JpdGVfdGFpbnQodGFzaywgZCwgZm4pCiAKIGNsYXNzIFNpZ25hdHVyZUdlbmVyYXRvclVuaUhhc2hNaXhJbihvYmplY3QpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCBkYXRhKToKKyAgICAgICAgc2VsZi5leHRyYW1ldGhvZCA9IHt9CisgICAgICAgIHN1cGVyKCkuX19pbml0X18oZGF0YSkKKwogICAgIGRlZiBnZXRfdGFza2RhdGEoc2VsZik6Ci0gICAgICAgIHJldHVybiAoc2VsZi5zZXJ2ZXIsIHNlbGYubWV0aG9kKSArIHN1cGVyKCkuZ2V0X3Rhc2tkYXRhKCkKKyAgICAgICAgcmV0dXJuIChzZWxmLnNlcnZlciwgc2VsZi5tZXRob2QsIHNlbGYuZXh0cmFtZXRob2QpICsgc3VwZXIoKS5nZXRfdGFza2RhdGEoKQogCiAgICAgZGVmIHNldF90YXNrZGF0YShzZWxmLCBkYXRhKToKLSAgICAgICAgc2VsZi5zZXJ2ZXIsIHNlbGYubWV0aG9kID0gZGF0YVs6Ml0KLSAgICAgICAgc3VwZXIoKS5zZXRfdGFza2RhdGEoZGF0YVsyOl0pCisgICAgICAgIHNlbGYuc2VydmVyLCBzZWxmLm1ldGhvZCwgc2VsZi5leHRyYW1ldGhvZCA9IGRhdGFbOjNdCisgICAgICAgIHN1cGVyKCkuc2V0X3Rhc2tkYXRhKGRhdGFbMzpdKQogCiAgICAgZGVmIGNsaWVudChzZWxmKToKICAgICAgICAgaWYgZ2V0YXR0cihzZWxmLCAnX2NsaWVudCcsIE5vbmUpIGlzIE5vbmU6CiAgICAgICAgICAgICBzZWxmLl9jbGllbnQgPSBoYXNoc2Vydi5jcmVhdGVfY2xpZW50KHNlbGYuc2VydmVyKQogICAgICAgICByZXR1cm4gc2VsZi5fY2xpZW50CiAKLSAgICBkZWYgX19nZXRfdGFza191bmloYXNoX2tleShzZWxmLCB0aWQpOgotICAgICAgICAjIFRPRE86IFRoZSBrZXkgb25seSAqbmVlZHMqIHRvIGJlIHRoZSB0YXNraGFzaCwgdGhlIHRpZCBpcyBqdXN0Ci0gICAgICAgICMgY29udmVuaWVudAotICAgICAgICByZXR1cm4gJyVzOiVzJyAlICh0aWQucnNwbGl0KCIvIiwgMSlbMV0sIHNlbGYudGFza2hhc2hbdGlkXSkKLQogICAgIGRlZiBnZXRfc3RhbXBmaWxlX2hhc2goc2VsZiwgdGlkKToKICAgICAgICAgaWYgdGlkIGluIHNlbGYudGFza2hhc2g6CiAgICAgICAgICAgICAjIElmIGEgdW5pcXVlIGhhc2ggaXMgcmVwb3J0ZWQsIHVzZSBpdCBhcyB0aGUgc3RhbXBmaWxlIGhhc2guIFRoaXMKICAgICAgICAgICAgICMgZW5zdXJlcyB0aGF0IGlmIGEgdGFzayB3b24ndCBiZSByZS1ydW4gaWYgdGhlIHRhc2toYXNoIGNoYW5nZXMsCiAgICAgICAgICAgICAjIGJ1dCBpdCB3b3VsZCByZXN1bHQgaW4gdGhlIHNhbWUgb3V0cHV0IGhhc2gKLSAgICAgICAgICAgIHVuaWhhc2ggPSBzZWxmLnVuaXRhc2toYXNoZXMuZ2V0KHNlbGYuX19nZXRfdGFza191bmloYXNoX2tleSh0aWQpLCBOb25lKQorICAgICAgICAgICAgdW5paGFzaCA9IHNlbGYuX2dldF91bmloYXNoKHRpZCkKICAgICAgICAgICAgIGlmIHVuaWhhc2ggaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHVuaWhhc2gKIAogICAgICAgICByZXR1cm4gc3VwZXIoKS5nZXRfc3RhbXBmaWxlX2hhc2godGlkKQogCiAgICAgZGVmIHNldF91bmloYXNoKHNlbGYsIHRpZCwgdW5paGFzaCk6Ci0gICAgICAgIHNlbGYudW5pdGFza2hhc2hlc1tzZWxmLl9fZ2V0X3Rhc2tfdW5paGFzaF9rZXkodGlkKV0gPSB1bmloYXNoCisgICAgICAgIChtYywgZm4sIHRhc2tuYW1lLCB0YXNrZm4pID0gYmIucnVucXVldWUuc3BsaXRfdGlkX21jZm4odGlkKQorICAgICAgICBrZXkgPSBtYyArICI6IiArIHNlbGYudGlkdG9wblt0aWRdICsgIjoiICsgdGFza25hbWUKKyAgICAgICAgc2VsZi51bml0YXNraGFzaGVzW2tleV0gPSAoc2VsZi50YXNraGFzaFt0aWRdLCB1bmloYXNoKQorICAgICAgICBzZWxmLnVuaWhhc2hbdGlkXSA9IHVuaWhhc2gKKworICAgIGRlZiBfZ2V0X3VuaWhhc2goc2VsZiwgdGlkLCBjaGVja2tleT1Ob25lKToKKyAgICAgICAgaWYgdGlkIG5vdCBpbiBzZWxmLnRpZHRvcG46CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAobWMsIGZuLCB0YXNrbmFtZSwgdGFza2ZuKSA9IGJiLnJ1bnF1ZXVlLnNwbGl0X3RpZF9tY2ZuKHRpZCkKKyAgICAgICAga2V5ID0gbWMgKyAiOiIgKyBzZWxmLnRpZHRvcG5bdGlkXSArICI6IiArIHRhc2tuYW1lCisgICAgICAgIGlmIGtleSBub3QgaW4gc2VsZi51bml0YXNraGFzaGVzOgorICAgICAgICAgICAgcmV0dXJuIE5vbmUKKyAgICAgICAgaWYgbm90IGNoZWNra2V5OgorICAgICAgICAgICAgY2hlY2trZXkgPSBzZWxmLnRhc2toYXNoW3RpZF0KKyAgICAgICAgKGtleSwgdW5paGFzaCkgPSBzZWxmLnVuaXRhc2toYXNoZXNba2V5XQorICAgICAgICBpZiBrZXkgIT0gY2hlY2trZXk6CisgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICByZXR1cm4gdW5paGFzaAogCiAgICAgZGVmIGdldF91bmloYXNoKHNlbGYsIHRpZCk6CiAgICAgICAgIHRhc2toYXNoID0gc2VsZi50YXNraGFzaFt0aWRdCiAKICAgICAgICAgIyBJZiBpdHMgbm90IGEgc2V0c2NlbmUgdGFzayB3ZSBjYW4gcmV0dXJuCiAgICAgICAgIGlmIHNlbGYuc2V0c2NlbmV0YXNrcyBhbmQgdGlkIG5vdCBpbiBzZWxmLnNldHNjZW5ldGFza3M6CisgICAgICAgICAgICBzZWxmLnVuaWhhc2hbdGlkXSA9IE5vbmUKICAgICAgICAgICAgIHJldHVybiB0YXNraGFzaAogCi0gICAgICAgIGtleSA9IHNlbGYuX19nZXRfdGFza191bmloYXNoX2tleSh0aWQpCi0KICAgICAgICAgIyBUT0RPOiBUaGlzIGNhY2hlIGNhbiBncm93IHVuYm91bmRlZC4gSXQgcHJvYmFibHkgb25seSBuZWVkcyB0byBrZWVwCiAgICAgICAgICMgZm9yIGVhY2ggdGFzawotICAgICAgICB1bmloYXNoID0gc2VsZi51bml0YXNraGFzaGVzLmdldChrZXksIE5vbmUpCisgICAgICAgIHVuaWhhc2ggPSAgc2VsZi5fZ2V0X3VuaWhhc2godGlkKQogICAgICAgICBpZiB1bmloYXNoIGlzIG5vdCBOb25lOgorICAgICAgICAgICAgc2VsZi51bmloYXNoW3RpZF0gPSB1bmloYXNoCiAgICAgICAgICAgICByZXR1cm4gdW5paGFzaAogCiAgICAgICAgICMgSW4gdGhlIGFic2VuY2Ugb2YgYmVpbmcgYWJsZSB0byBkaXNjb3ZlciBhIHVuaXF1ZSBoYXNoIGZyb20gdGhlCkBAIC00MzMsMTkgKzQ5NCwyMyBAQAogICAgICAgICB1bmloYXNoID0gdGFza2hhc2gKIAogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBkYXRhID0gc2VsZi5jbGllbnQoKS5nZXRfdW5paGFzaChzZWxmLm1ldGhvZCwgc2VsZi50YXNraGFzaFt0aWRdKQorICAgICAgICAgICAgbWV0aG9kID0gc2VsZi5tZXRob2QKKyAgICAgICAgICAgIGlmIHRpZCBpbiBzZWxmLmV4dHJhbWV0aG9kOgorICAgICAgICAgICAgICAgIG1ldGhvZCA9IG1ldGhvZCArIHNlbGYuZXh0cmFtZXRob2RbdGlkXQorICAgICAgICAgICAgZGF0YSA9IHNlbGYuY2xpZW50KCkuZ2V0X3VuaWhhc2gobWV0aG9kLCBzZWxmLnRhc2toYXNoW3RpZF0pCiAgICAgICAgICAgICBpZiBkYXRhOgogICAgICAgICAgICAgICAgIHVuaWhhc2ggPSBkYXRhCiAgICAgICAgICAgICAgICAgIyBBIHVuaXF1ZSBoYXNoIGVxdWFsIHRvIHRoZSB0YXNraGFzaCBpcyBub3QgdmVyeSBpbnRlcmVzdGluZywKICAgICAgICAgICAgICAgICAjIHNvIGl0IGlzIHJlcG9ydGVkIGl0IGF0IGRlYnVnIGxldmVsIDIuIElmIHRoZXkgZGlmZmVyLCB0aGF0CiAgICAgICAgICAgICAgICAgIyBpcyBtdWNoIG1vcmUgaW50ZXJlc3RpbmcsIHNvIGl0IGlzIHJlcG9ydGVkIGF0IGRlYnVnIGxldmVsIDEKLSAgICAgICAgICAgICAgICBiYi5kZWJ1ZygoMSwgMilbdW5paGFzaCA9PSB0YXNraGFzaF0sICdGb3VuZCB1bmloYXNoICVzIGluIHBsYWNlIG9mICVzIGZvciAlcyBmcm9tICVzJyAlICh1bmloYXNoLCB0YXNraGFzaCwgdGlkLCBzZWxmLnNlcnZlcikpCisgICAgICAgICAgICAgICAgaGFzaGVxdWl2X2xvZ2dlci5kZWJ1ZygoMSwgMilbdW5paGFzaCA9PSB0YXNraGFzaF0sICdGb3VuZCB1bmloYXNoICVzIGluIHBsYWNlIG9mICVzIGZvciAlcyBmcm9tICVzJyAlICh1bmloYXNoLCB0YXNraGFzaCwgdGlkLCBzZWxmLnNlcnZlcikpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGJiLmRlYnVnKDIsICdObyByZXBvcnRlZCB1bmloYXNoIGZvciAlczolcyBmcm9tICVzJyAlICh0aWQsIHRhc2toYXNoLCBzZWxmLnNlcnZlcikpCisgICAgICAgICAgICAgICAgaGFzaGVxdWl2X2xvZ2dlci5kZWJ1ZygyLCAnTm8gcmVwb3J0ZWQgdW5paGFzaCBmb3IgJXM6JXMgZnJvbSAlcycgJSAodGlkLCB0YXNraGFzaCwgc2VsZi5zZXJ2ZXIpKQogICAgICAgICBleGNlcHQgaGFzaHNlcnYuY2xpZW50Lkhhc2hDb25uZWN0aW9uRXJyb3IgYXMgZToKICAgICAgICAgICAgIGJiLndhcm4oJ0Vycm9yIGNvbnRhY3RpbmcgSGFzaCBFcXVpdmFsZW5jZSBTZXJ2ZXIgJXM6ICVzJyAlIChzZWxmLnNlcnZlciwgc3RyKGUpKSkKIAotICAgICAgICBzZWxmLnVuaXRhc2toYXNoZXNba2V5XSA9IHVuaWhhc2gKKyAgICAgICAgc2VsZi5zZXRfdW5paGFzaCh0aWQsIHVuaWhhc2gpCisgICAgICAgIHNlbGYudW5paGFzaFt0aWRdID0gdW5paGFzaAogICAgICAgICByZXR1cm4gdW5paGFzaAogCiAgICAgZGVmIHJlcG9ydF91bmloYXNoKHNlbGYsIHBhdGgsIHRhc2ssIGQpOgpAQCAtNDU3LDEzICs1MjIsMTcgQEAKICAgICAgICAgdGVtcGRpciA9IGQuZ2V0VmFyKCdUJykKICAgICAgICAgZm4gPSBkLmdldFZhcignQkJfRklMRU5BTUUnKQogICAgICAgICB0aWQgPSBmbiArICc6ZG9fJyArIHRhc2sKLSAgICAgICAga2V5ID0gdGlkLnJzcGxpdCgiLyIsIDEpWzFdICsgJzonICsgdGFza2hhc2gKKyAgICAgICAga2V5ID0gdGlkICsgJzonICsgdGFza2hhc2gKIAogICAgICAgICBpZiBzZWxmLnNldHNjZW5ldGFza3MgYW5kIHRpZCBub3QgaW4gc2VsZi5zZXRzY2VuZXRhc2tzOgogICAgICAgICAgICAgcmV0dXJuCiAKKyAgICAgICAgIyBUaGlzIGNhbiBoYXBwZW4gaWYgbG9ja2VkIHNpZ3MgYXJlIGluIGFjdGlvbi4gRGV0ZWN0IGFuZCBqdXN0IGFib3J0CisgICAgICAgIGlmIHRhc2toYXNoICE9IHNlbGYudGFza2hhc2hbdGlkXToKKyAgICAgICAgICAgIHJldHVybgorCiAgICAgICAgICMgU2FuaXR5IGNoZWNrcwotICAgICAgICBjYWNoZV91bmloYXNoID0gc2VsZi51bml0YXNraGFzaGVzLmdldChrZXksIE5vbmUpCisgICAgICAgIGNhY2hlX3VuaWhhc2ggPSBzZWxmLl9nZXRfdW5paGFzaCh0aWQsIGNoZWNra2V5PXRhc2toYXNoKQogICAgICAgICBpZiBjYWNoZV91bmloYXNoIGlzIE5vbmU6CiAgICAgICAgICAgICBiYi5mYXRhbCgnJXMgbm90IGluIHVuaWhhc2ggY2FjaGUuIFBsZWFzZSByZXBvcnQgdGhpcyBlcnJvcicgJSBrZXkpCiAKQEAgLTUwMiwxNCArNTcxLDIwIEBACiAgICAgICAgICAgICAgICAgICAgIGV4dHJhX2RhdGFbJ3Rhc2snXSA9IHRhc2sKICAgICAgICAgICAgICAgICAgICAgZXh0cmFfZGF0YVsnb3V0aGFzaF9zaWdpbmZvJ10gPSBzaWdmaWxlLnJlYWQoKS5kZWNvZGUoJ3V0Zi04JykKIAotICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLmNsaWVudCgpLnJlcG9ydF91bmloYXNoKHRhc2toYXNoLCBzZWxmLm1ldGhvZCwgb3V0aGFzaCwgdW5paGFzaCwgZXh0cmFfZGF0YSkKKyAgICAgICAgICAgICAgICBtZXRob2QgPSBzZWxmLm1ldGhvZAorICAgICAgICAgICAgICAgIGlmIHRpZCBpbiBzZWxmLmV4dHJhbWV0aG9kOgorICAgICAgICAgICAgICAgICAgICBtZXRob2QgPSBtZXRob2QgKyBzZWxmLmV4dHJhbWV0aG9kW3RpZF0KKworICAgICAgICAgICAgICAgIGRhdGEgPSBzZWxmLmNsaWVudCgpLnJlcG9ydF91bmloYXNoKHRhc2toYXNoLCBtZXRob2QsIG91dGhhc2gsIHVuaWhhc2gsIGV4dHJhX2RhdGEpCiAgICAgICAgICAgICAgICAgbmV3X3VuaWhhc2ggPSBkYXRhWyd1bmloYXNoJ10KIAogICAgICAgICAgICAgICAgIGlmIG5ld191bmloYXNoICE9IHVuaWhhc2g6Ci0gICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICdUYXNrICVzIHVuaWhhc2ggY2hhbmdlZCAlcyAtPiAlcyBieSBzZXJ2ZXIgJXMnICUgKHRhc2toYXNoLCB1bmloYXNoLCBuZXdfdW5paGFzaCwgc2VsZi5zZXJ2ZXIpKQorICAgICAgICAgICAgICAgICAgICBoYXNoZXF1aXZfbG9nZ2VyLmRlYnVnKDEsICdUYXNrICVzIHVuaWhhc2ggY2hhbmdlZCAlcyAtPiAlcyBieSBzZXJ2ZXIgJXMnICUgKHRhc2toYXNoLCB1bmloYXNoLCBuZXdfdW5paGFzaCwgc2VsZi5zZXJ2ZXIpKQogICAgICAgICAgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLnJ1bnF1ZXVlLnRhc2tVbmlIYXNoVXBkYXRlKGZuICsgJzpkb18nICsgdGFzaywgbmV3X3VuaWhhc2gpLCBkKQorICAgICAgICAgICAgICAgICAgICBzZWxmLnNldF91bmloYXNoKHRpZCwgbmV3X3VuaWhhc2gpCisgICAgICAgICAgICAgICAgICAgIGQuc2V0VmFyKCdCQl9VTklIQVNIJywgbmV3X3VuaWhhc2gpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgJ1JlcG9ydGVkIHRhc2sgJXMgYXMgdW5paGFzaCAlcyB0byAlcycgJSAodGFza2hhc2gsIHVuaWhhc2gsIHNlbGYuc2VydmVyKSkKKyAgICAgICAgICAgICAgICAgICAgaGFzaGVxdWl2X2xvZ2dlci5kZWJ1ZygxLCAnUmVwb3J0ZWQgdGFzayAlcyBhcyB1bmloYXNoICVzIHRvICVzJyAlICh0YXNraGFzaCwgdW5paGFzaCwgc2VsZi5zZXJ2ZXIpKQogICAgICAgICAgICAgZXhjZXB0IGhhc2hzZXJ2LmNsaWVudC5IYXNoQ29ubmVjdGlvbkVycm9yIGFzIGU6CiAgICAgICAgICAgICAgICAgYmIud2FybignRXJyb3IgY29udGFjdGluZyBIYXNoIEVxdWl2YWxlbmNlIFNlcnZlciAlczogJXMnICUgKHNlbGYuc2VydmVyLCBzdHIoZSkpKQogICAgICAgICBmaW5hbGx5OgpAQCAtNTI0LDYgKzU5OSwzNiBAQAogICAgICAgICAgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICAgICAgICAgICAgICBwYXNzCiAKKyAgICBkZWYgcmVwb3J0X3VuaWhhc2hfZXF1aXYoc2VsZiwgdGlkLCB0YXNraGFzaCwgd2FudGVkX3VuaWhhc2gsIGN1cnJlbnRfdW5paGFzaCwgZGF0YWNhY2hlcyk6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGV4dHJhX2RhdGEgPSB7fQorICAgICAgICAgICAgbWV0aG9kID0gc2VsZi5tZXRob2QKKyAgICAgICAgICAgIGlmIHRpZCBpbiBzZWxmLmV4dHJhbWV0aG9kOgorICAgICAgICAgICAgICAgIG1ldGhvZCA9IG1ldGhvZCArIHNlbGYuZXh0cmFtZXRob2RbdGlkXQorCisgICAgICAgICAgICBkYXRhID0gc2VsZi5jbGllbnQoKS5yZXBvcnRfdW5paGFzaF9lcXVpdih0YXNraGFzaCwgbWV0aG9kLCB3YW50ZWRfdW5paGFzaCwgZXh0cmFfZGF0YSkKKyAgICAgICAgICAgIGhhc2hlcXVpdl9sb2dnZXIudmVyYm9zZSgnUmVwb3J0ZWQgdGFzayAlcyBhcyB1bmloYXNoICVzIHRvICVzICglcyknICUgKHRpZCwgd2FudGVkX3VuaWhhc2gsIHNlbGYuc2VydmVyLCBzdHIoZGF0YSkpKQorCisgICAgICAgICAgICBpZiBkYXRhIGlzIE5vbmU6CisgICAgICAgICAgICAgICAgYmIud2FybigiU2VydmVyIHVuYWJsZSB0byBoYW5kbGUgdW5paGFzaCByZXBvcnQiKQorICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgICAgICAgICBmaW5hbHVuaWhhc2ggPSBkYXRhWyd1bmloYXNoJ10KKworICAgICAgICAgICAgaWYgZmluYWx1bmloYXNoID09IGN1cnJlbnRfdW5paGFzaDoKKyAgICAgICAgICAgICAgICBoYXNoZXF1aXZfbG9nZ2VyLnZlcmJvc2UoJ1Rhc2sgJXMgdW5paGFzaCAlcyB1bmNoYW5nZWQgYnkgc2VydmVyJyAlICh0aWQsIGZpbmFsdW5paGFzaCkpCisgICAgICAgICAgICBlbGlmIGZpbmFsdW5paGFzaCA9PSB3YW50ZWRfdW5paGFzaDoKKyAgICAgICAgICAgICAgICBoYXNoZXF1aXZfbG9nZ2VyLnZlcmJvc2UoJ1Rhc2sgJXMgdW5paGFzaCBjaGFuZ2VkICVzIC0+ICVzIGFzIHdhbnRlZCcgJSAodGlkLCBjdXJyZW50X3VuaWhhc2gsIGZpbmFsdW5paGFzaCkpCisgICAgICAgICAgICAgICAgc2VsZi5zZXRfdW5paGFzaCh0aWQsIGZpbmFsdW5paGFzaCkKKyAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAjIFRPRE86IFdoYXQgdG8gZG8gaGVyZT8KKyAgICAgICAgICAgICAgICBoYXNoZXF1aXZfbG9nZ2VyLnZlcmJvc2UoJ1Rhc2sgJXMgdW5paGFzaCByZXBvcnRlZCBhcyB1bndhbnRlZCBoYXNoICVzJyAlICh0aWQsIGZpbmFsdW5paGFzaCkpCisKKyAgICAgICAgZXhjZXB0IGhhc2hzZXJ2LmNsaWVudC5IYXNoQ29ubmVjdGlvbkVycm9yIGFzIGU6CisgICAgICAgICAgICBiYi53YXJuKCdFcnJvciBjb250YWN0aW5nIEhhc2ggRXF1aXZhbGVuY2UgU2VydmVyICVzOiAlcycgJSAoc2VsZi5zZXJ2ZXIsIHN0cihlKSkpCisKKyAgICAgICAgcmV0dXJuIEZhbHNlCiAKICMKICMgRHVtbXkgY2xhc3MgdXNlZCBmb3IgYml0YmFrZS1zZWxmdGVzdApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90YXNrZGF0YS5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGFza2RhdGEucHkKaW5kZXggOGMyNWUwOS4uZDEzYTEyNCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi90YXNrZGF0YS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rhc2tkYXRhLnB5CkBAIC0zNjIsNyArMzYyLDcgQEAKICAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuTm9Qcm92aWRlcihpdGVtLCBkZXBlbmRlZXM9c2VsZi5nZXRfZGVwZW5kZWVzKGl0ZW0pLCByZWFzb25zPVsiTm8gZWxpZ2libGUgUFJPVklERVJzIGV4aXN0IGZvciAnJXMnIiAlIGl0ZW1dKSwgY2ZnRGF0YSkKICAgICAgICAgICAgIHJhaXNlIGJiLnByb3ZpZGVycy5Ob1Byb3ZpZGVyKGl0ZW0pCiAKLSAgICAgICAgaWYgbGVuKGVsaWdpYmxlKSA+IDEgYW5kIGZvdW5kVW5pcXVlID09IEZhbHNlOgorICAgICAgICBpZiBsZW4oZWxpZ2libGUpID4gMSBhbmQgbm90IGZvdW5kVW5pcXVlOgogICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gc2VsZi5jb25zaWRlcl9tc2dzX2NhY2hlOgogICAgICAgICAgICAgICAgIHByb3ZpZGVyc19saXN0ID0gW10KICAgICAgICAgICAgICAgICBmb3IgZm4gaW4gZWxpZ2libGU6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2Nvb2tlci5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvY29va2VyLnB5CmluZGV4IDA5MDkxNmUuLjc0YzkwM2YgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvY29va2VyLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvY29va2VyLnB5CkBAIC01LDcgKzUsNiBAQAogIwogCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IG9zCiBpbXBvcnQgYmIsIGJiLmNvb2tlcgogaW1wb3J0IHJlCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2Nvdy5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvY293LnB5CmluZGV4IGI0YWY0YmIuLmJmNmU3OWYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvY293LnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvY293LnB5CkBAIC03LDcgKzcsNyBAQAogIwogCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBvcworCiAKIGNsYXNzIENPV1Rlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAiIiIKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZGF0YS5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZGF0YS5weQppbmRleCAzZTQ5OTg0Li41ZjE5NTA0IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2RhdGEucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9kYXRhLnB5CkBAIC00NzYsNyArNDc2LDcgQEAKIGNsYXNzIFRhc2tIYXNoKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICBkZWYgdGVzdF90YXNraGFzaGVzKHNlbGYpOgogICAgICAgICBkZWYgZ2V0dGFza19iYXNoaGFzaCh0YXNrbmFtZSwgZCk6Ci0gICAgICAgICAgICB0YXNrbGlzdCwgZ2VuZGVwcywgbG9va3VwY2FjaGUgPSBiYi5kYXRhLmdlbmVyYXRlX2RlcGVuZGVuY2llcyhkKQorICAgICAgICAgICAgdGFza2xpc3QsIGdlbmRlcHMsIGxvb2t1cGNhY2hlID0gYmIuZGF0YS5nZW5lcmF0ZV9kZXBlbmRlbmNpZXMoZCwgc2V0KCkpCiAgICAgICAgICAgICB0YXNrZGVwcywgYmFzZWhhc2ggPSBiYi5kYXRhLmdlbmVyYXRlX2RlcGVuZGVuY3lfaGFzaCh0YXNrbGlzdCwgZ2VuZGVwcywgbG9va3VwY2FjaGUsIHNldCgpLCAic29tZWZpbGUiKQogICAgICAgICAgICAgYmIud2FybihzdHIobG9va3VwY2FjaGUpKQogICAgICAgICAgICAgcmV0dXJuIGJhc2VoYXNoWyJzb21lZmlsZToiICsgdGFza25hbWVdCkBAIC01NDQsMTQyICs1NDQsMyBAQAogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKG5ld2QuZ2V0VmFyRmxhZygnSEVMTE8nLCAnb3RoZXInKSwgJ3BsYW5ldCcpCiAKIAotIyBSZW1vdGUgZGF0YXN0b3JlIHRlc3RzCi0jIFRoZXNlIHJlYWxseSBvbmx5IHRlc3QgdGhlIGludGVyZmFjZSwgc2luY2UgaW4gYWN0dWFsIHVzYWdlIHdlIGhhdmUgYQotIyB0aW5mb2lsIGNvbm5lY3RvciB0aGF0IGRvZXMgZXZlcnl0aGluZyBvdmVyIFJQQywgYW5kIHRoaXMgZG9lc24ndCB0ZXN0Ci0jIHRoYXQuCi0KLWNsYXNzIFRlc3RDb25uZWN0b3I6Ci0gICAgZCA9IE5vbmUKLSAgICBkZWYgX19pbml0X18oc2VsZiwgZCk6Ci0gICAgICAgIHNlbGYuZCA9IGQKLSAgICBkZWYgZ2V0VmFyKHNlbGYsIG5hbWUpOgotICAgICAgICByZXR1cm4gc2VsZi5kLl9maW5kVmFyKG5hbWUpCi0gICAgZGVmIGdldEtleXMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZXQoc2VsZi5kLmtleXMoKSkKLSAgICBkZWYgZ2V0VmFySGlzdG9yeShzZWxmLCBuYW1lKToKLSAgICAgICAgcmV0dXJuIHNlbGYuZC52YXJoaXN0b3J5LnZhcmlhYmxlKG5hbWUpCi0gICAgZGVmIGV4cGFuZFB5dGhvblJlZihzZWxmLCB2YXJuYW1lLCBleHByLCBkKToKLSAgICAgICAgbG9jYWxkYXRhID0gc2VsZi5kLmNyZWF0ZUNvcHkoKQotICAgICAgICBmb3Iga2V5IGluIGQubG9jYWxrZXlzKCk6Ci0gICAgICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKGQuZ2V0VmFyKGtleSkpCi0gICAgICAgIHZhcnBhcnNlID0gYmIuZGF0YV9zbWFydC5WYXJpYWJsZVBhcnNlKHZhcm5hbWUsIGxvY2FsZGF0YSkKLSAgICAgICAgcmV0dXJuIHZhcnBhcnNlLnB5dGhvbl9zdWIoZXhwcikKLSAgICBkZWYgc2V0VmFyKHNlbGYsIG5hbWUsIHZhbHVlKToKLSAgICAgICAgc2VsZi5kLnNldFZhcihuYW1lLCB2YWx1ZSkKLSAgICBkZWYgc2V0VmFyRmxhZyhzZWxmLCBuYW1lLCBmbGFnLCB2YWx1ZSk6Ci0gICAgICAgIHNlbGYuZC5zZXRWYXJGbGFnKG5hbWUsIGZsYWcsIHZhbHVlKQotICAgIGRlZiBkZWxWYXIoc2VsZiwgbmFtZSk6Ci0gICAgICAgIHNlbGYuZC5kZWxWYXIobmFtZSkKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0gICAgZGVmIGRlbFZhckZsYWcoc2VsZiwgbmFtZSwgZmxhZyk6Ci0gICAgICAgIHNlbGYuZC5kZWxWYXJGbGFnKG5hbWUsIGZsYWcpCi0gICAgICAgIHJldHVybiBGYWxzZQotICAgIGRlZiByZW5hbWVWYXIoc2VsZiwgbmFtZSwgbmV3bmFtZSk6Ci0gICAgICAgIHNlbGYuZC5yZW5hbWVWYXIobmFtZSwgbmV3bmFtZSkKLSAgICAgICAgcmV0dXJuIEZhbHNlCi0KLWNsYXNzIFJlbW90ZSh1bml0dGVzdC5UZXN0Q2FzZSk6Ci0gICAgZGVmIHRlc3RfcmVtb3RlKHNlbGYpOgotCi0gICAgICAgIGQxID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgZDEuZW5hYmxlVHJhY2tpbmcoKQotICAgICAgICBkMiA9IGJiLmRhdGEuaW5pdCgpCi0gICAgICAgIGQyLmVuYWJsZVRyYWNraW5nKCkKLSAgICAgICAgY29ubmVjdG9yID0gVGVzdENvbm5lY3RvcihkMSkKLQotICAgICAgICBkMi5zZXRWYXIoJ19yZW1vdGVfZGF0YScsIGNvbm5lY3RvcikKLQotICAgICAgICBkMS5zZXRWYXIoJ0hFTExPJywgJ3dvcmxkJykKLSAgICAgICAgZDEuc2V0VmFyRmxhZygnT1RIRVInLCAnZmxhZ25hbWUnLCAnZmxhZ3ZhbHVlJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMi5nZXRWYXIoJ0hFTExPJyksICd3b3JsZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDIuZXhwYW5kKCcke0hFTExPfScpLCAnd29ybGQnKQotICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGQyLmV4cGFuZCgnJHtAZC5nZXRWYXIoIkhFTExPIil9JyksICd3b3JsZCcpCi0gICAgICAgIHNlbGYuYXNzZXJ0SW4oJ2ZsYWduYW1lJywgZDIuZ2V0VmFyRmxhZ3MoJ09USEVSJykpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDIuZ2V0VmFyRmxhZygnT1RIRVInLCAnZmxhZ25hbWUnKSwgJ2ZsYWd2YWx1ZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDEudmFyaGlzdG9yeS52YXJpYWJsZSgnSEVMTE8nKSwgZDIudmFyaGlzdG9yeS52YXJpYWJsZSgnSEVMTE8nKSkKLSAgICAgICAgIyBUZXN0IHNldFZhciBvbiBjbGllbnQgc2lkZSBhZmZlY3RzIHNlcnZlcgotICAgICAgICBkMi5zZXRWYXIoJ0hFTExPJywgJ290aGVyLXdvcmxkJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMS5nZXRWYXIoJ0hFTExPJyksICdvdGhlci13b3JsZCcpCi0gICAgICAgICMgVGVzdCBzZXRWYXJGbGFnIG9uIGNsaWVudCBzaWRlIGFmZmVjdHMgc2VydmVyCi0gICAgICAgIGQyLnNldFZhckZsYWcoJ0hFTExPJywgJ2ZsYWduYW1lJywgJ2ZsYWd2YWx1ZScpCi0gICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZDEuZ2V0VmFyRmxhZygnSEVMTE8nLCAnZmxhZ25hbWUnKSwgJ2ZsYWd2YWx1ZScpCi0gICAgICAgICMgVGVzdCBjbGllbnQgc2lkZSBkYXRhIGlzIGluY29ycG9yYXRlZCBpbiBweXRob24gZXhwYW5zaW9uICh3aGljaCBpcyBkb25lIG9uIHNlcnZlcikKLSAgICAgICAgZDIuc2V0VmFyKCdGT08nLCAnYmFyJykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMi5leHBhbmQoJyR7QGQuZ2V0VmFyKCJGT08iKX0nKSwgJ2JhcicpCi0gICAgICAgICMgVGVzdCBvdmVycmlkZXMgd29yawotICAgICAgICBkMS5zZXRWYXIoJ0ZPT190ZXN0JywgJ2JheicpCi0gICAgICAgIGQxLmFwcGVuZFZhcignT1ZFUlJJREVTJywgJzp0ZXN0JykKLSAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkMi5nZXRWYXIoJ0ZPTycpLCAnYmF6JykKLQotCi0jIFJlbW90ZSBlcXVpdmFsZW50cyBvZiBsb2NhbCB0ZXN0IGNsYXNzZXMKLSMgTm90ZSB0aGF0IHRoZXNlIGFyZW4ndCBwZXJmZWN0IHNpbmNlIHdlIG9ubHkgdGVzdCBpbiBvbmUgZGlyZWN0aW9uCi0KLWNsYXNzIFJlbW90ZURhdGFFeHBhbnNpb25zKERhdGFFeHBhbnNpb25zKToKLSAgICBkZWYgc2V0VXAoc2VsZik6Ci0gICAgICAgIHNlbGYuZDEgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICBzZWxmLmQxWyJmb28iXSA9ICJ2YWx1ZV9vZl9mb28iCi0gICAgICAgIHNlbGYuZDFbImJhciJdID0gInZhbHVlX29mX2JhciIKLSAgICAgICAgc2VsZi5kMVsidmFsdWVfb2ZfZm9vIl0gPSAidmFsdWVfb2ZfJ3ZhbHVlX29mX2ZvbyciCi0gICAgICAgIGNvbm5lY3RvciA9IFRlc3RDb25uZWN0b3Ioc2VsZi5kMSkKLSAgICAgICAgc2VsZi5kLnNldFZhcignX3JlbW90ZV9kYXRhJywgY29ubmVjdG9yKQotCi1jbGFzcyBUZXN0UmVtb3RlTmVzdGVkRXhwYW5zaW9ucyhUZXN0TmVzdGVkRXhwYW5zaW9ucyk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmQxID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kMVsiZm9vIl0gPSAiZm9vIgotICAgICAgICBzZWxmLmQxWyJiYXIiXSA9ICJiYXIiCi0gICAgICAgIHNlbGYuZDFbInZhbHVlX29mX2Zvb2JhciJdID0gIjE4NyIKLSAgICAgICAgY29ubmVjdG9yID0gVGVzdENvbm5lY3RvcihzZWxmLmQxKQotICAgICAgICBzZWxmLmQuc2V0VmFyKCdfcmVtb3RlX2RhdGEnLCBjb25uZWN0b3IpCi0KLWNsYXNzIFRlc3RSZW1vdGVDb25jYXQoVGVzdENvbmNhdCk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmQxID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kMS5zZXRWYXIoIkZPTyIsICJmb28iKQotICAgICAgICBzZWxmLmQxLnNldFZhcigiVkFMIiwgInZhbCIpCi0gICAgICAgIHNlbGYuZDEuc2V0VmFyKCJCQVIiLCAiYmFyIikKLSAgICAgICAgY29ubmVjdG9yID0gVGVzdENvbm5lY3RvcihzZWxmLmQxKQotICAgICAgICBzZWxmLmQuc2V0VmFyKCdfcmVtb3RlX2RhdGEnLCBjb25uZWN0b3IpCi0KLWNsYXNzIFRlc3RSZW1vdGVDb25jYXRPdmVycmlkZShUZXN0Q29uY2F0T3ZlcnJpZGUpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5kMSA9IGJiLmRhdGEuaW5pdCgpCi0gICAgICAgIHNlbGYuZCA9IGJiLmRhdGEuaW5pdCgpCi0gICAgICAgIHNlbGYuZDEuc2V0VmFyKCJGT08iLCAiZm9vIikKLSAgICAgICAgc2VsZi5kMS5zZXRWYXIoIlZBTCIsICJ2YWwiKQotICAgICAgICBzZWxmLmQxLnNldFZhcigiQkFSIiwgImJhciIpCi0gICAgICAgIGNvbm5lY3RvciA9IFRlc3RDb25uZWN0b3Ioc2VsZi5kMSkKLSAgICAgICAgc2VsZi5kLnNldFZhcignX3JlbW90ZV9kYXRhJywgY29ubmVjdG9yKQotCi1jbGFzcyBUZXN0UmVtb3RlT3ZlcnJpZGVzKFRlc3RPdmVycmlkZXMpOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5kMSA9IGJiLmRhdGEuaW5pdCgpCi0gICAgICAgIHNlbGYuZCA9IGJiLmRhdGEuaW5pdCgpCi0gICAgICAgIHNlbGYuZDEuc2V0VmFyKCJPVkVSUklERVMiLCAiZm9vOmJhcjpsb2NhbCIpCi0gICAgICAgIHNlbGYuZDEuc2V0VmFyKCJURVNUIiwgInRlc3R2YWx1ZSIpCi0gICAgICAgIGNvbm5lY3RvciA9IFRlc3RDb25uZWN0b3Ioc2VsZi5kMSkKLSAgICAgICAgc2VsZi5kLnNldFZhcignX3JlbW90ZV9kYXRhJywgY29ubmVjdG9yKQotCi1jbGFzcyBUZXN0UmVtb3RlS2V5RXhwYW5zaW9uKFRlc3RLZXlFeHBhbnNpb24pOgotICAgIGRlZiBzZXRVcChzZWxmKToKLSAgICAgICAgc2VsZi5kMSA9IGJiLmRhdGEuaW5pdCgpCi0gICAgICAgIHNlbGYuZCA9IGJiLmRhdGEuaW5pdCgpCi0gICAgICAgIHNlbGYuZDEuc2V0VmFyKCJGT08iLCAiZm9vIikKLSAgICAgICAgc2VsZi5kMS5zZXRWYXIoIkJBUiIsICJmb28iKQotICAgICAgICBjb25uZWN0b3IgPSBUZXN0Q29ubmVjdG9yKHNlbGYuZDEpCi0gICAgICAgIHNlbGYuZC5zZXRWYXIoJ19yZW1vdGVfZGF0YScsIGNvbm5lY3RvcikKLQotY2xhc3MgVGVzdFJlbW90ZUZsYWdzKFRlc3RGbGFncyk6Ci0gICAgZGVmIHNldFVwKHNlbGYpOgotICAgICAgICBzZWxmLmQxID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kID0gYmIuZGF0YS5pbml0KCkKLSAgICAgICAgc2VsZi5kMS5zZXRWYXIoImZvbyIsICJ2YWx1ZSBvZiBmb28iKQotICAgICAgICBzZWxmLmQxLnNldFZhckZsYWcoImZvbyIsICJmbGFnMSIsICJ2YWx1ZSBvZiBmbGFnMSIpCi0gICAgICAgIHNlbGYuZDEuc2V0VmFyRmxhZygiZm9vIiwgImZsYWcyIiwgInZhbHVlIG9mIGZsYWcyIikKLSAgICAgICAgY29ubmVjdG9yID0gVGVzdENvbm5lY3RvcihzZWxmLmQxKQotICAgICAgICBzZWxmLmQuc2V0VmFyKCdfcmVtb3RlX2RhdGEnLCBjb25uZWN0b3IpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2FwcGxlL2N1cHMvcmVsZWFzZXMgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2FwcGxlL2N1cHMvcmVsZWFzZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjg5MzRmNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvYXBwbGUvY3Vwcy9yZWxlYXNlcwpAQCAtMCwwICsxLDI0MDAgQEAKKworCisKKworCisKKzwhRE9DVFlQRSBodG1sPgorPGh0bWwgbGFuZz0iZW4iPgorICA8aGVhZD4KKyAgICA8bWV0YSBjaGFyc2V0PSJ1dGYtOCI+CisgIDxsaW5rIHJlbD0iZG5zLXByZWZldGNoIiBocmVmPSJodHRwczovL2dpdGh1Yi5naXRodWJhc3NldHMuY29tIj4KKyAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczAuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KKyAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczEuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KKyAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczIuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KKyAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vYXZhdGFyczMuZ2l0aHVidXNlcmNvbnRlbnQuY29tIj4KKyAgPGxpbmsgcmVsPSJkbnMtcHJlZmV0Y2giIGhyZWY9Imh0dHBzOi8vZ2l0aHViLWNsb3VkLnMzLmFtYXpvbmF3cy5jb20iPgorICA8bGluayByZWw9ImRucy1wcmVmZXRjaCIgaHJlZj0iaHR0cHM6Ly91c2VyLWltYWdlcy5naXRodWJ1c2VyY29udGVudC5jb20vIj4KKworCisKKyAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItN210dW5IcXAvQncwTkQ5YWtqSk1FOFhDaDBXUG0zSEFYT1NlWDdza0wwcUdBaHBkZnprUXZZY3VqWWN3TlBUcFdLZUtNRlVHWkd0dm5Fa2NjekZnd1E9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2dpdGh1Yi5naXRodWJhc3NldHMuY29tL2Fzc2V0cy9mcmFtZXdvcmtzLTliNTMxNDIxM2UzNzA1NmVkODdiMDQxODA1NmM0ZjJjLmNzcyIgLz4KKyAgPGxpbmsgY3Jvc3NvcmlnaW49ImFub255bW91cyIgbWVkaWE9ImFsbCIgaW50ZWdyaXR5PSJzaGE1MTItQ21vZWdpeldDVVIxakM5NFkyZXVrVlFJRnhKOUd4WWVyejlxN2RCd0ltTGx4OE9Ed1lrWEFNSWhDZlRuQTQ1RXA2KytyY08vWnRLVkx2RkJNOGRhcEE9PSIgcmVsPSJzdHlsZXNoZWV0IiBocmVmPSJodHRwczovL2dpdGh1Yi5naXRodWJhc3NldHMuY29tL2Fzc2V0cy9zaXRlLTRlOWYyN2ZhMzMzNDE3NDNmNzMwYWU3YjBlMzNlZmY1LmNzcyIgLz4KKyAgICA8bGluayBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiBtZWRpYT0iYWxsIiBpbnRlZ3JpdHk9InNoYTUxMi1Cdm5JQ0tGakl2VDY5bzYxZHlZbGxYdGFPbkdWYjdJZmo1YzNsazN3ajd0a2phdDJJQ3VOK1hSd3lrOHRxUDNkajdJRmhFUXp4RGR4U0hhSjN4ajNNdz09IiByZWw9InN0eWxlc2hlZXQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vYXNzZXRzL2dpdGh1Yi1mZjk4Njg3NGNmN2UyOGNiY2Q1ZDQ0OGNkY2E3MjQ1ZC5jc3MiIC8+CisgICAgCisgICAgCisgICAgCisgICAgCisKKworICA8bWV0YSBuYW1lPSJ2aWV3cG9ydCIgY29udGVudD0id2lkdGg9ZGV2aWNlLXdpZHRoIj4KKyAgCisgIDx0aXRsZT5SZWxlYXNlcyDCtyBhcHBsZS9jdXBzIMK3IEdpdEh1YjwvdGl0bGU+CisgICAgPG1ldGEgbmFtZT0iZGVzY3JpcHRpb24iIGNvbnRlbnQ9Ik9mZmljaWFsIENVUFMgU291cmNlcy4gQ29udHJpYnV0ZSB0byBhcHBsZS9jdXBzIGRldmVsb3BtZW50IGJ5IGNyZWF0aW5nIGFuIGFjY291bnQgb24gR2l0SHViLiI+CisgICAgPGxpbmsgcmVsPSJzZWFyY2giIHR5cGU9ImFwcGxpY2F0aW9uL29wZW5zZWFyY2hkZXNjcmlwdGlvbit4bWwiIGhyZWY9Ii9vcGVuc2VhcmNoLnhtbCIgdGl0bGU9IkdpdEh1YiI+CisgIDxsaW5rIHJlbD0iZmx1aWQtaWNvbiIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2ZsdWlkaWNvbi5wbmciIHRpdGxlPSJHaXRIdWIiPgorICA8bWV0YSBwcm9wZXJ0eT0iZmI6YXBwX2lkIiBjb250ZW50PSIxNDAxNDg4NjkzNDM2NTI4Ij4KKworICAgIDxtZXRhIG5hbWU9InR3aXR0ZXI6aW1hZ2U6c3JjIiBjb250ZW50PSJodHRwczovL2F2YXRhcnMyLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzEwNjM5MTQ1P3M9NDAwJmFtcDt2PTQiIC8+PG1ldGEgbmFtZT0idHdpdHRlcjpzaXRlIiBjb250ZW50PSJAZ2l0aHViIiAvPjxtZXRhIG5hbWU9InR3aXR0ZXI6Y2FyZCIgY29udGVudD0ic3VtbWFyeSIgLz48bWV0YSBuYW1lPSJ0d2l0dGVyOnRpdGxlIiBjb250ZW50PSJhcHBsZS9jdXBzIiAvPjxtZXRhIG5hbWU9InR3aXR0ZXI6ZGVzY3JpcHRpb24iIGNvbnRlbnQ9Ik9mZmljaWFsIENVUFMgU291cmNlcy4gQ29udHJpYnV0ZSB0byBhcHBsZS9jdXBzIGRldmVsb3BtZW50IGJ5IGNyZWF0aW5nIGFuIGFjY291bnQgb24gR2l0SHViLiIgLz4KKyAgICA8bWV0YSBwcm9wZXJ0eT0ib2c6aW1hZ2UiIGNvbnRlbnQ9Imh0dHBzOi8vYXZhdGFyczIuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvMTA2MzkxNDU/cz00MDAmYW1wO3Y9NCIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6c2l0ZV9uYW1lIiBjb250ZW50PSJHaXRIdWIiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnR5cGUiIGNvbnRlbnQ9Im9iamVjdCIgLz48bWV0YSBwcm9wZXJ0eT0ib2c6dGl0bGUiIGNvbnRlbnQ9ImFwcGxlL2N1cHMiIC8+PG1ldGEgcHJvcGVydHk9Im9nOnVybCIgY29udGVudD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMiIC8+PG1ldGEgcHJvcGVydHk9Im9nOmRlc2NyaXB0aW9uIiBjb250ZW50PSJPZmZpY2lhbCBDVVBTIFNvdXJjZXMuIENvbnRyaWJ1dGUgdG8gYXBwbGUvY3VwcyBkZXZlbG9wbWVudCBieSBjcmVhdGluZyBhbiBhY2NvdW50IG9uIEdpdEh1Yi4iIC8+CisKKyAgPGxpbmsgcmVsPSJhc3NldHMiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vIj4KKyAgCisgIAorCisgICAgPG1ldGEgbmFtZT0icmVxdWVzdC1pZCIgY29udGVudD0iRTBDQjoyMjM0ODo1MDhEOUI6NzREN0IwOjVERkE0M0M0IiBkYXRhLXBqYXgtdHJhbnNpZW50PgorCisKKworICAKKworICA8bWV0YSBuYW1lPSJzZWxlY3RlZC1saW5rIiB2YWx1ZT0icmVwb19yZWxlYXNlcyIgZGF0YS1wamF4LXRyYW5zaWVudD4KKworICAgICAgPG1ldGEgbmFtZT0iZ29vZ2xlLXNpdGUtdmVyaWZpY2F0aW9uIiBjb250ZW50PSJLVDVnczhoMHd2YWFnTEtBVldxOGJiZU53blpaSzFyMVhReXNYM3h1ckxVIj4KKyAgICA8bWV0YSBuYW1lPSJnb29nbGUtc2l0ZS12ZXJpZmljYXRpb24iIGNvbnRlbnQ9Ilp6aFZ5RUZ3Yjd3M2UwLXVPVGx0bThKc2NrMkY1U3RWaWhEMGV4dzJmc0EiPgorICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1zaXRlLXZlcmlmaWNhdGlvbiIgY29udGVudD0iR1hzNUtvVVVrTkNvYUFabjd3UE4tdDAxUHl3cDlNM3NFam50XzNfWldQYyI+CisKKyAgICA8bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWhvc3QiIGNvbnRlbnQ9ImNvbGxlY3Rvci5naXRodWJhcHAuY29tIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtYXBwLWlkIiBjb250ZW50PSJnaXRodWIiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1ldmVudC11cmwiIGNvbnRlbnQ9Imh0dHBzOi8vY29sbGVjdG9yLmdpdGh1YmFwcC5jb20vZ2l0aHViLWV4dGVybmFsL2Jyb3dzZXJfZXZlbnQiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVxdWVzdF9pZCIgY29udGVudD0iRTBDQjoyMjM0ODo1MDhEOUI6NzREN0IwOjVERkE0M0M0IiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlZ2lvbl9lZGdlIiBjb250ZW50PSJhbXMiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVnaW9uX3JlbmRlciIgY29udGVudD0iaWFkIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLWdhX2lkIiBjb250ZW50PSIiIGNsYXNzPSJqcy1vY3RvLWdhLWlkIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXZpc2l0b3JfaWQiIGNvbnRlbnQ9IjM4Njg0NDAxMDgzNjUxMzY4MzciIC8+CisKKzxtZXRhIG5hbWU9ImFuYWx5dGljcy1sb2NhdGlvbiIgY29udGVudD0iLyZsdDt1c2VyLW5hbWUmZ3Q7LyZsdDtyZXBvLW5hbWUmZ3Q7L3JlbGVhc2VzL2luZGV4IiBkYXRhLXBqYXgtdHJhbnNpZW50PSJ0cnVlIiAvPgorCisKKworICAgIDxtZXRhIG5hbWU9Imdvb2dsZS1hbmFseXRpY3MiIGNvbnRlbnQ9IlVBLTM3Njk2OTEtMiI+CisKKworPG1ldGEgY2xhc3M9ImpzLWdhLXNldCIgbmFtZT0iZGltZW5zaW9uMSIgY29udGVudD0iTG9nZ2VkIE91dCI+CisKKworCisgIAorCisgICAgICA8bWV0YSBuYW1lPSJob3N0bmFtZSIgY29udGVudD0iZ2l0aHViLmNvbSI+CisgICAgPG1ldGEgbmFtZT0idXNlci1sb2dpbiIgY29udGVudD0iIj4KKworICAgICAgPG1ldGEgbmFtZT0iZXhwZWN0ZWQtaG9zdG5hbWUiIGNvbnRlbnQ9ImdpdGh1Yi5jb20iPgorCisgICAgICA8bWV0YSBuYW1lPSJqcy1wcm94eS1zaXRlLWRldGVjdGlvbi1wYXlsb2FkIiBjb250ZW50PSJObVEzTTJGalltWmlOREptWlRnNFlqZ3pabVJrT1dKbE5qUXpZalUyTUdGbU5EUTVPVE00WkdWbU1qY3lNVE5tTUdaak9HVmxPRGcxTldNME5HSm1PSHg3SW5KbGJXOTBaVjloWkdSeVpYTnpJam9pT0RjdU9ERXVNalEwTGpFMk1TSXNJbkpsY1hWbGMzUmZhV1FpT2lKRk1FTkNPakl5TXpRNE9qVXdPRVE1UWpvM05FUTNRakE2TlVSR1FUUXpRelFpTENKMGFXMWxjM1JoYlhBaU9qRTFOelkyT0RJME16Y3NJbWh2YzNRaU9pSm5hWFJvZFdJdVkyOXRJbjA9Ij4KKworICAgIDxtZXRhIG5hbWU9ImVuYWJsZWQtZmVhdHVyZXMiIGNvbnRlbnQ9Ik1BUktFVFBMQUNFX0ZFQVRVUkVEX0JMT0dfUE9TVFMsTUFSS0VUUExBQ0VfSU5WT0lDRURfQklMTElORyxNQVJLRVRQTEFDRV9TT0NJQUxfUFJPT0ZfQ1VTVE9NRVJTLE1BUktFVFBMQUNFX1RSRU5ESU5HX1NPQ0lBTF9QUk9PRixNQVJLRVRQTEFDRV9SRUNPTU1FTkRBVElPTlMsTUFSS0VUUExBQ0VfUEVORElOR19JTlNUQUxMQVRJT05TIj4KKworICAgIDxtZXRhIG5hbWU9Imh0bWwtc2FmZS1ub25jZSIgY29udGVudD0iOTk3OTkwNTA0MjUwMTFmZTZiYzcxNzkxZTg2MGJkNTBiNDZjYzZhNyI+CisKKyAgPG1ldGEgaHR0cC1lcXVpdj0ieC1wamF4LXZlcnNpb24iIGNvbnRlbnQ9IjJkMjllYjAxMWM0ZTU2YjU2ODIzOTNkNmY0NWM4NmI5Ij4KKyAgCisKKyAgICAgIDxsaW5rIHJlbD0iYWx0ZXJuYXRlIiB0eXBlPSJhcHBsaWNhdGlvbi9hdG9tK3htbCIgdGl0bGU9ImN1cHMgUmVsZWFzZSBOb3RlcyIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcmVsZWFzZXMuYXRvbSIgLz4KKyAgPGxpbmsgcmVsPSJhbHRlcm5hdGUiIHR5cGU9ImFwcGxpY2F0aW9uL2F0b20reG1sIiB0aXRsZT0iY3VwcyBUYWdzIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy90YWdzLmF0b20iIC8+CisgIDxsaW5rIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2NvbW1pdHMvbWFzdGVyLmF0b20iIHJlbD0iYWx0ZXJuYXRlIiB0aXRsZT0iUmVjZW50IENvbW1pdHMgdG8gY3VwczptYXN0ZXIiIHR5cGU9ImFwcGxpY2F0aW9uL2F0b20reG1sIj4KKworICA8bWV0YSBuYW1lPSJnby1pbXBvcnQiIGNvbnRlbnQ9ImdpdGh1Yi5jb20vYXBwbGUvY3VwcyBnaXQgaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMuZ2l0Ij4KKworICA8bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi11c2VyX2lkIiBjb250ZW50PSIxMDYzOTE0NSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi11c2VyX2xvZ2luIiBjb250ZW50PSJhcHBsZSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2lkIiBjb250ZW50PSI0NDEzNzg1MiIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X253byIgY29udGVudD0iYXBwbGUvY3VwcyIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X3B1YmxpYyIgY29udGVudD0idHJ1ZSIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X2lzX2ZvcmsiIGNvbnRlbnQ9ImZhbHNlIiAvPjxtZXRhIG5hbWU9Im9jdG9seXRpY3MtZGltZW5zaW9uLXJlcG9zaXRvcnlfbmV0d29ya19yb290X2lkIiBjb250ZW50PSI0NDEzNzg1MiIgLz48bWV0YSBuYW1lPSJvY3RvbHl0aWNzLWRpbWVuc2lvbi1yZXBvc2l0b3J5X25ldHdvcmtfcm9vdF9ud28iIGNvbnRlbnQ9ImFwcGxlL2N1cHMiIC8+PG1ldGEgbmFtZT0ib2N0b2x5dGljcy1kaW1lbnNpb24tcmVwb3NpdG9yeV9leHBsb3JlX2dpdGh1Yl9tYXJrZXRwbGFjZV9jaV9jdGFfc2hvd24iIGNvbnRlbnQ9ImZhbHNlIiAvPgorCisKKworCisgIDxtZXRhIG5hbWU9ImJyb3dzZXItc3RhdHMtdXJsIiBjb250ZW50PSJodHRwczovL2FwaS5naXRodWIuY29tL19wcml2YXRlL2Jyb3dzZXIvc3RhdHMiPgorCisgIDxtZXRhIG5hbWU9ImJyb3dzZXItZXJyb3JzLXVybCIgY29udGVudD0iaHR0cHM6Ly9hcGkuZ2l0aHViLmNvbS9fcHJpdmF0ZS9icm93c2VyL2Vycm9ycyI+CisKKyAgPGxpbmsgcmVsPSJtYXNrLWljb24iIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vcGlubmVkLW9jdG9jYXQuc3ZnIiBjb2xvcj0iIzAwMDAwMCI+CisgIDxsaW5rIHJlbD0iaWNvbiIgdHlwZT0iaW1hZ2UveC1pY29uIiBjbGFzcz0ianMtc2l0ZS1mYXZpY29uIiBocmVmPSJodHRwczovL2dpdGh1Yi5naXRodWJhc3NldHMuY29tL2Zhdmljb24uaWNvIj4KKworPG1ldGEgbmFtZT0idGhlbWUtY29sb3IiIGNvbnRlbnQ9IiMxZTIzMjciPgorCisKKworCisKKyAgPGxpbmsgcmVsPSJtYW5pZmVzdCIgaHJlZj0iL21hbmlmZXN0Lmpzb24iIGNyb3NzT3JpZ2luPSJ1c2UtY3JlZGVudGlhbHMiPgorCisgIDwvaGVhZD4KKworICA8Ym9keSBjbGFzcz0ibG9nZ2VkLW91dCBlbnYtcHJvZHVjdGlvbiBwYWdlLXJlc3BvbnNpdmUiPgorICAgIAorCisgIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIGpzLWhlYWRlci13cmFwcGVyICI+CisgICAgPGEgaHJlZj0iI3N0YXJ0LW9mLWNvbnRlbnQiIHRhYmluZGV4PSIxIiBjbGFzcz0icHgtMiBweS00IGJnLWJsdWUgdGV4dC13aGl0ZSBzaG93LW9uLWZvY3VzIGpzLXNraXAtdG8tY29udGVudCI+U2tpcCB0byBjb250ZW50PC9hPgorICAgIDxzcGFuIGNsYXNzPSJQcm9ncmVzcyBwcm9ncmVzcy1wamF4LWxvYWRlciBwb3NpdGlvbi1maXhlZCB3aWR0aC1mdWxsIGpzLXBqYXgtbG9hZGVyLWJhciI+CisgICAgICA8c3BhbiBjbGFzcz0icHJvZ3Jlc3MtcGpheC1sb2FkZXItYmFyIHRvcC0wIGxlZnQtMCIgc3R5bGU9IndpZHRoOiAwJTsiPjwvc3Bhbj4KKyAgICA8L3NwYW4+CisKKyAgICAKKyAgICAKKyAgICAKKworCisgICAgICAgIDxoZWFkZXIgY2xhc3M9IkhlYWRlci1vbGQgaGVhZGVyLWxvZ2dlZC1vdXQganMtZGV0YWlscy1jb250YWluZXIgRGV0YWlscyBwb3NpdGlvbi1yZWxhdGl2ZSBmNCBweS0yIiByb2xlPSJiYW5uZXIiPgorICA8ZGl2IGNsYXNzPSJjb250YWluZXItbGcgZC1sZy1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIHAtcmVzcG9uc2l2ZSI+CisgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgPGEgY2xhc3M9Im1yLTQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS8iIGFyaWEtbGFiZWw9IkhvbWVwYWdlIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBob21lcGFnZSwgaWNvbjpsb2dvLXdvcmRtYXJrIj4KKyAgICAgICAgICA8c3ZnIGhlaWdodD0iMzIiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tbWFyay1naXRodWIgdGV4dC13aGl0ZSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIzMiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTggMEMzLjU4IDAgMCAzLjU4IDAgOGMwIDMuNTQgMi4yOSA2LjUzIDUuNDcgNy41OS40LjA3LjU1LS4xNy41NS0uMzggMC0uMTktLjAxLS44Mi0uMDEtMS40OS0yLjAxLjM3LTIuNTMtLjQ5LTIuNjktLjk0LS4wOS0uMjMtLjQ4LS45NC0uODItMS4xMy0uMjgtLjE1LS42OC0uNTItLjAxLS41My42My0uMDEgMS4wOC41OCAxLjIzLjgyLjcyIDEuMjEgMS44Ny44NyAyLjMzLjY2LjA3LS41Mi4yOC0uODcuNTEtMS4wNy0xLjc4LS4yLTMuNjQtLjg5LTMuNjQtMy45NSAwLS44Ny4zMS0xLjU5LjgyLTIuMTUtLjA4LS4yLS4zNi0xLjAyLjA4LTIuMTIgMCAwIC42Ny0uMjEgMi4yLjgyLjY0LS4xOCAxLjMyLS4yNyAyLS4yNy42OCAwIDEuMzYuMDkgMiAuMjcgMS41My0xLjA0IDIuMi0uODIgMi4yLS44Mi40NCAxLjEuMTYgMS45Mi4wOCAyLjEyLjUxLjU2LjgyIDEuMjcuODIgMi4xNSAwIDMuMDctMS44NyAzLjc1LTMuNjUgMy45NS4yOS4yNS41NC43My41NCAxLjQ4IDAgMS4wNy0uMDEgMS45My0uMDEgMi4yIDAgLjIxLjE1LjQ2LjU1LjM4QTguMDEzIDguMDEzIDAgMDAxNiA4YzAtNC40Mi0zLjU4LTgtOC04eiIvPjwvc3ZnPgorICAgICAgICA8L2E+CisKKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWxnLW5vbmUgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQgd2lkdGgtZml0IHAtMiI+CisgICAgICAgICAgICAKKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CisgICAgPGEgY2xhc3M9IkhlYWRlci1saW5rIiBocmVmPSIvYXBwbGUiPmFwcGxlPC9hPgorICAgIC8KKyAgICA8YSBjbGFzcz0iSGVhZGVyLWxpbmsiIGhyZWY9Ii9hcHBsZS9jdXBzIj5jdXBzPC9hPgorCisKKyAgICAgICAgICA8L2Rpdj4KKworICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2pvaW4/c291cmNlPWhlYWRlci1yZXBvIgorICAgICAgICAgICAgICBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgZC1sZy1ub25lIGY1IHRleHQtd2hpdGUgbm8tdW5kZXJsaW5lIGJvcmRlciBib3JkZXItZ3JheS1kYXJrIHJvdW5kZWQtMiBweC0yIHB5LTEgbXItMyBtci1zbS01IgorICAgICAgICAgICAgICBkYXRhLWh5ZHJvLWNsaWNrPSJ7JnF1b3Q7ZXZlbnRfdHlwZSZxdW90OzomcXVvdDthdXRoZW50aWNhdGlvbi5jbGljayZxdW90OywmcXVvdDtwYXlsb2FkJnF1b3Q7OnsmcXVvdDtsb2NhdGlvbl9pbl9wYWdlJnF1b3Q7OiZxdW90O3NpdGUgaGVhZGVyJnF1b3Q7LCZxdW90O3JlcG9zaXRvcnlfaWQmcXVvdDs6bnVsbCwmcXVvdDthdXRoX3R5cGUmcXVvdDs6JnF1b3Q7U0lHTl9VUCZxdW90OywmcXVvdDtjbGllbnRfaWQmcXVvdDs6bnVsbCwmcXVvdDtvcmlnaW5hdGluZ19yZXF1ZXN0X2lkJnF1b3Q7OiZxdW90O0UwQ0I6MjIzNDg6NTA4RDlCOjc0RDdCMDo1REZBNDNDNCZxdW90OywmcXVvdDtvcmlnaW5hdGluZ191cmwmcXVvdDs6JnF1b3Q7aHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcmVsZWFzZXMmcXVvdDssJnF1b3Q7cmVmZXJyZXImcXVvdDs6bnVsbCwmcXVvdDt1c2VyX2lkJnF1b3Q7Om51bGx9fSIgZGF0YS1oeWRyby1jbGljay1obWFjPSIyNDYzNDQ1YzA0NWM2YmU4NmE3YjQ4ZTZjMGFmOTZkMGJhNzc3ODkyZDZkMjM2ZjI3ODI2MzIzYjM1Y2VmNWQ3IgorICAgICAgICAgICAgICBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBjbGlja2VkIFNpZ24gdXAsIHRleHQ6c2lnbi11cCI+CisgICAgICAgICAgICAgIFNpZ24mbmJzcDt1cAorICAgICAgICAgICAgPC9hPgorCisgICAgICAgICAgPGJ1dHRvbiBjbGFzcz0iYnRuLWxpbmsgZC1sZy1ub25lIG10LTEganMtZGV0YWlscy10YXJnZXQiIHR5cGU9ImJ1dHRvbiIgYXJpYS1sYWJlbD0iVG9nZ2xlIG5hdmlnYXRpb24iIGFyaWEtZXhwYW5kZWQ9ImZhbHNlIj4KKyAgICAgICAgICAgIDxzdmcgaGVpZ2h0PSIyNCIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10aHJlZS1iYXJzIHRleHQtd2hpdGUiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTgiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMS40MSA5SC41OUMwIDkgMCA4LjU5IDAgOGMwLS41OSAwLTEgLjU5LTFIMTEuNGMuNTkgMCAuNTkuNDEuNTkgMSAwIC41OSAwIDEtLjU5IDFoLjAxem0wLTRILjU5QzAgNSAwIDQuNTkgMCA0YzAtLjU5IDAtMSAuNTktMUgxMS40Yy41OSAwIC41OS40MS41OSAxIDAgLjU5IDAgMS0uNTkgMWguMDF6TS41OSAxMUgxMS40Yy41OSAwIC41OS40MS41OSAxIDAgLjU5IDAgMS0uNTkgMUguNTlDMCAxMyAwIDEyLjU5IDAgMTJjMC0uNTkgMC0xIC41OS0xeiIvPjwvc3ZnPgorICAgICAgICAgIDwvYnV0dG9uPgorICAgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKworICAgIDxkaXYgY2xhc3M9IkhlYWRlck1lbnUgSGVhZGVyTWVudS0tbG9nZ2VkLW91dCBwb3NpdGlvbi1maXhlZCB0b3AtMCByaWdodC0wIGJvdHRvbS0wIGhlaWdodC1maXQgcG9zaXRpb24tbGctcmVsYXRpdmUgZC1sZy1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIGZsZXgtYXV0byI+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZC1sZy1ub25lIGZsZXgtanVzdGlmeS1lbmQgYm9yZGVyLWJvdHRvbSBiZy1ncmF5LWxpZ2h0IHAtMyI+CisgICAgICAgIDxidXR0b24gY2xhc3M9ImJ0bi1saW5rIGpzLWRldGFpbHMtdGFyZ2V0IiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IlRvZ2dsZSBuYXZpZ2F0aW9uIiBhcmlhLWV4cGFuZGVkPSJmYWxzZSI+CisgICAgICAgICAgPHN2ZyBoZWlnaHQ9IjI0IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXggdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE4IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgorICAgICAgICA8L2J1dHRvbj4KKyAgICAgIDwvZGl2PgorCisgICAgICAgIDxuYXYgY2xhc3M9Im10LTAgcHgtMyBweC1sZy0wIG1iLTUgbWItbGctMCIgYXJpYS1sYWJlbD0iR2xvYmFsIj4KKyAgICAgICAgICA8dWwgY2xhc3M9ImQtbGctZmxleCBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgZC1sZy1mbGV4IGZsZXgtbGctbm93cmFwIGZsZXgtbGctaXRlbXMtY2VudGVyIGJvcmRlci1ib3R0b20gYm9yZGVyLWxnLWJvdHRvbS0wIG1yLTAgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgorICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayI+CisgICAgICAgICAgICAgICAgICAgIFdoeSBHaXRIdWI/CisgICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLWFic29sdXRlIHBvc2l0aW9uLWxnLXJlbGF0aXZlIj4KKyAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KKyAgICAgICAgICAgICAgICAgICAgPC9zdmc+CisgICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CisgICAgICAgICAgICAgICAgICA8ZGl2IGNsYXNzPSJkcm9wZG93bi1tZW51IGZsZXgtYXV0byByb3VuZGVkLTEgYmctd2hpdGUgcHgtMCBtdC0wIHBiLTQgcC1sZy00IHBvc2l0aW9uLXJlbGF0aXZlIHBvc2l0aW9uLWxnLWFic29sdXRlIGxlZnQtMCBsZWZ0LWxnLW40Ij4KKyAgICAgICAgICAgICAgICAgICAgPGEgaHJlZj0iL2ZlYXR1cmVzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gRmVhdHVyZXMiPkZlYXR1cmVzIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT4KKyAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgZjUgcGItMyI+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvY29kZS1yZXZpZXcvIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2RlIHJldmlldyI+Q29kZSByZXZpZXc8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9wcm9qZWN0LW1hbmFnZW1lbnQvIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBQcm9qZWN0IG1hbmFnZW1lbnQiPlByb2plY3QgbWFuYWdlbWVudDwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL2ludGVncmF0aW9ucyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gSW50ZWdyYXRpb25zIj5JbnRlZ3JhdGlvbnM8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcy9hY3Rpb25zIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBBY3Rpb25zIj5BY3Rpb25zPC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzL3BhY2thZ2VzIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBHaXRIdWIgUGFja2FnZXMiPlBhY2thZ2VzPC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZmVhdHVyZXMvc2VjdXJpdHkiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFNlY3VyaXR5Ij5TZWN1cml0eTwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2ZlYXR1cmVzI3RlYW0tbWFuYWdlbWVudCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVGVhbSBtYW5hZ2VtZW50Ij5UZWFtIG1hbmFnZW1lbnQ8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii9mZWF0dXJlcyNob3N0aW5nIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2RlIGhvc3RpbmciPkhvc3Rpbmc8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgPC91bD4KKworICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wIGJvcmRlci1sZy10b3AgcHQtbGctMyI+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvY3VzdG9tZXItc3RvcmllcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDdXN0b21lciBzdG9yaWVzIj5DdXN0b21lciBzdG9yaWVzIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3NlY3VyaXR5IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBuby11bmRlcmxpbmUgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIFNlY3VyaXR5Ij5TZWN1cml0eSA8c3BhbiBjbGFzcz0iQnVtcC1saW5rLXN5bWJvbCBmbG9hdC1yaWdodCB0ZXh0LW5vcm1hbCB0ZXh0LWdyYXktbGlnaHQiPiZyYXJyOzwvc3Bhbj48L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KKyAgICAgICAgICAgICAgPC9saT4KKyAgICAgICAgICAgICAgPGxpIGNsYXNzPSJib3JkZXItYm90dG9tIGJvcmRlci1sZy1ib3R0b20tMCBtci0wIG1yLWxnLTMiPgorICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9lbnRlcnByaXNlIiBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBweS0zIGQtYmxvY2sgZC1sZy1pbmxpbmUtYmxvY2siIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEVudGVycHJpc2UiPkVudGVycHJpc2U8L2E+CisgICAgICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIGQtbGctZmxleCBmbGV4LWxnLW5vd3JhcCBmbGV4LWxnLWl0ZW1zLWNlbnRlciBib3JkZXItYm90dG9tIGJvcmRlci1sZy1ib3R0b20tMCBtci0wIG1yLWxnLTMgZWRnZS1pdGVtLWZpeCBwb3NpdGlvbi1yZWxhdGl2ZSBmbGV4LXdyYXAgZmxleC1qdXN0aWZ5LWJldHdlZW4gZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyICI+CisgICAgICAgICAgICAgICAgPGRldGFpbHMgY2xhc3M9IkhlYWRlck1lbnUtZGV0YWlscyBkZXRhaWxzLW92ZXJsYXkgZGV0YWlscy1yZXNldCB3aWR0aC1mdWxsIj4KKyAgICAgICAgICAgICAgICAgIDxzdW1tYXJ5IGNsYXNzPSJIZWFkZXJNZW51LXN1bW1hcnkgSGVhZGVyTWVudS1saW5rIHB4LTAgcHktMyBib3JkZXItMCBuby13cmFwIGQtYmxvY2sgZC1sZy1pbmxpbmUtYmxvY2siPgorICAgICAgICAgICAgICAgICAgICBFeHBsb3JlCisgICAgICAgICAgICAgICAgICAgIDxzdmcgeD0iMHB4IiB5PSIwcHgiIHZpZXdCb3g9IjAgMCAxNCA4IiB4bWw6c3BhY2U9InByZXNlcnZlIiBmaWxsPSJub25lIiBjbGFzcz0iaWNvbi1jaGV2b24tZG93bi1ta3RnIHBvc2l0aW9uLWFic29sdXRlIHBvc2l0aW9uLWxnLXJlbGF0aXZlIj4KKyAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KKyAgICAgICAgICAgICAgICAgICAgPC9zdmc+CisgICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CisKKyAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIHB0LTIgcGItMCBtdC0wIHBiLTQgcC1sZy00IHBvc2l0aW9uLXJlbGF0aXZlIHBvc2l0aW9uLWxnLWFic29sdXRlIGxlZnQtMCBsZWZ0LWxnLW40Ij4KKyAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMyI+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSIvZXhwbG9yZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5LWRhcmsgbm8tdW5kZXJsaW5lIGg1IEJ1bXAtbGluay0taG92ZXIiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEV4cGxvcmUiPkV4cGxvcmUgR2l0SHViIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICA8L3VsPgorCisgICAgICAgICAgICAgICAgICAgIDxoNCBjbGFzcz0idGV4dC1ncmF5LWxpZ2h0IHRleHQtbm9ybWFsIHRleHQtbW9ubyBmNSBtYi0yIGJvcmRlci1sZy10b3AgcHQtbGctMyI+TGVhcm4gJmFtcDsgY29udHJpYnV0ZTwvaDQ+CisgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3RvcGljcyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVG9waWNzIj5Ub3BpY3M8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL2NvbGxlY3Rpb25zIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb2xsZWN0aW9ucyI+Q29sbGVjdGlvbnM8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Ii90cmVuZGluZyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gVHJlbmRpbmciPlRyZW5kaW5nPC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2xhYi5naXRodWIuY29tLyIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gTGVhcm5pbmcgbGFiIj5MZWFybmluZyBMYWI8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vb3BlbnNvdXJjZS5ndWlkZSIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbGluay1ncmF5IG5vLXVuZGVybGluZSBmNSIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gT3BlbiBzb3VyY2UgZ3VpZGVzIj5PcGVuIHNvdXJjZSBndWlkZXM8L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgPC91bD4KKworICAgICAgICAgICAgICAgICAgICA8aDQgY2xhc3M9InRleHQtZ3JheS1saWdodCB0ZXh0LW5vcm1hbCB0ZXh0LW1vbm8gZjUgbWItMiBib3JkZXItbGctdG9wIHB0LWxnLTMiPkNvbm5lY3Qgd2l0aCBvdGhlcnM8L2g0PgorICAgICAgICAgICAgICAgICAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBtYi0wIj4KKyAgICAgICAgICAgICAgICAgICAgICA8bGkgY2xhc3M9ImVkZ2UtaXRlbS1maXgiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9ldmVudHMiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEV2ZW50cyI+RXZlbnRzPC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb21tdW5pdHkiIGNsYXNzPSJweS0yIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIENvbW11bml0eSBmb3J1bSI+Q29tbXVuaXR5IGZvcnVtPC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2VkdWNhdGlvbi5naXRodWIuY29tIiBjbGFzcz0icHktMiBwYi0wIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIGxpbmstZ3JheSBuby11bmRlcmxpbmUgZjUiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEdpdEh1YiBFZHVjYXRpb24iPkdpdEh1YiBFZHVjYXRpb248L2E+PC9saT4KKyAgICAgICAgICAgICAgICAgICAgPC91bD4KKyAgICAgICAgICAgICAgICAgIDwvZGl2PgorICAgICAgICAgICAgICAgIDwvZGV0YWlscz4KKyAgICAgICAgICAgICAgPC9saT4KKworICAgICAgICAgICAgICA8bGkgY2xhc3M9ImJvcmRlci1ib3R0b20gYm9yZGVyLWxnLWJvdHRvbS0wIG1yLTAgbXItbGctMyI+CisgICAgICAgICAgICAgICAgPGEgaHJlZj0iL21hcmtldHBsYWNlIiBjbGFzcz0iSGVhZGVyTWVudS1saW5rIG5vLXVuZGVybGluZSBweS0zIGQtYmxvY2sgZC1sZy1pbmxpbmUtYmxvY2siIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIE1hcmtldHBsYWNlIj5NYXJrZXRwbGFjZTwvYT4KKyAgICAgICAgICAgICAgPC9saT4KKworICAgICAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgZC1sZy1mbGV4IGZsZXgtbGctbm93cmFwIGZsZXgtbGctaXRlbXMtY2VudGVyIGJvcmRlci1ib3R0b20gYm9yZGVyLWxnLWJvdHRvbS0wIG1yLTAgbXItbGctMyBlZGdlLWl0ZW0tZml4IHBvc2l0aW9uLXJlbGF0aXZlIGZsZXgtd3JhcCBmbGV4LWp1c3RpZnktYmV0d2VlbiBkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgIj4KKyAgICAgICAgICAgICAgICA8ZGV0YWlscyBjbGFzcz0iSGVhZGVyTWVudS1kZXRhaWxzIGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLXJlc2V0IHdpZHRoLWZ1bGwiPgorICAgICAgICAgICAgICAgICAgPHN1bW1hcnkgY2xhc3M9IkhlYWRlck1lbnUtc3VtbWFyeSBIZWFkZXJNZW51LWxpbmsgcHgtMCBweS0zIGJvcmRlci0wIG5vLXdyYXAgZC1ibG9jayBkLWxnLWlubGluZS1ibG9jayI+CisgICAgICAgICAgICAgICAgICAgIFByaWNpbmcKKyAgICAgICAgICAgICAgICAgICAgPHN2ZyB4PSIwcHgiIHk9IjBweCIgdmlld0JveD0iMCAwIDE0IDgiIHhtbDpzcGFjZT0icHJlc2VydmUiIGZpbGw9Im5vbmUiIGNsYXNzPSJpY29uLWNoZXZvbi1kb3duLW1rdGcgcG9zaXRpb24tYWJzb2x1dGUgcG9zaXRpb24tbGctcmVsYXRpdmUiPgorICAgICAgICAgICAgICAgICAgICAgICA8cGF0aCBkPSJNMSwxbDYuMiw2TDEzLDEiPjwvcGF0aD4KKyAgICAgICAgICAgICAgICAgICAgPC9zdmc+CisgICAgICAgICAgICAgICAgICA8L3N1bW1hcnk+CisKKyAgICAgICAgICAgICAgICAgIDxkaXYgY2xhc3M9ImRyb3Bkb3duLW1lbnUgZmxleC1hdXRvIHJvdW5kZWQtMSBiZy13aGl0ZSBweC0wIHB0LTIgcGItNCBtdC0wIHAtbGctNCBwb3NpdGlvbi1yZWxhdGl2ZSBwb3NpdGlvbi1sZy1hYnNvbHV0ZSBsZWZ0LTAgbGVmdC1sZy1uNCI+CisgICAgICAgICAgICAgICAgICAgIDxhIGhyZWY9Ii9wcmljaW5nIiBjbGFzcz0icGItMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgZ28gdG8gUHJpY2luZyI+UGxhbnMgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPgorCisgICAgICAgICAgICAgICAgICAgIDx1bCBjbGFzcz0ibGlzdC1zdHlsZS1ub25lIG1iLTMiPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL3ByaWNpbmcjZmVhdHVyZS1jb21wYXJpc29uIiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb21wYXJlIHBsYW5zIj5Db21wYXJlIHBsYW5zPC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2VudGVycHJpc2UuZ2l0aHViLmNvbS9jb250YWN0IiBjbGFzcz0icHktMiBsaC1jb25kZW5zZWQtdWx0cmEgZC1ibG9jayBsaW5rLWdyYXkgbm8tdW5kZXJsaW5lIGY1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBDb250YWN0IFNhbGVzIj5Db250YWN0IFNhbGVzPC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgIDwvdWw+CisKKyAgICAgICAgICAgICAgICAgICAgPHVsIGNsYXNzPSJsaXN0LXN0eWxlLW5vbmUgbWItMCBib3JkZXItbGctdG9wIHB0LWxnLTMiPgorICAgICAgICAgICAgICAgICAgICAgIDxsaSBjbGFzcz0iZWRnZS1pdGVtLWZpeCI+PGEgaHJlZj0iL25vbnByb2ZpdCIgY2xhc3M9InB5LTIgbGgtY29uZGVuc2VkLXVsdHJhIGQtYmxvY2sgbm8tdW5kZXJsaW5lIGxpbmstZ3JheS1kYXJrIG5vLXVuZGVybGluZSBoNSBCdW1wLWxpbmstLWhvdmVyIiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgSGVhZGVyLCBnbyB0byBOb25wcm9maXRzIj5Ob25wcm9maXQgPHNwYW4gY2xhc3M9IkJ1bXAtbGluay1zeW1ib2wgZmxvYXQtcmlnaHQgdGV4dC1ub3JtYWwgdGV4dC1ncmF5LWxpZ2h0Ij4mcmFycjs8L3NwYW4+PC9hPjwvbGk+CisgICAgICAgICAgICAgICAgICAgICAgPGxpIGNsYXNzPSJlZGdlLWl0ZW0tZml4Ij48YSBocmVmPSJodHRwczovL2VkdWNhdGlvbi5naXRodWIuY29tIiBjbGFzcz0icHktMiBwYi0wIGxoLWNvbmRlbnNlZC11bHRyYSBkLWJsb2NrIG5vLXVuZGVybGluZSBsaW5rLWdyYXktZGFyayBuby11bmRlcmxpbmUgaDUgQnVtcC1saW5rLS1ob3ZlciIgIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBIZWFkZXIsIGdvIHRvIEVkdWNhdGlvbiI+RWR1Y2F0aW9uIDxzcGFuIGNsYXNzPSJCdW1wLWxpbmstc3ltYm9sIGZsb2F0LXJpZ2h0IHRleHQtbm9ybWFsIHRleHQtZ3JheS1saWdodCI+JnJhcnI7PC9zcGFuPjwvYT48L2xpPgorICAgICAgICAgICAgICAgICAgICA8L3VsPgorICAgICAgICAgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgICAgICAgPC9kZXRhaWxzPgorICAgICAgICAgICAgICA8L2xpPgorICAgICAgICAgIDwvdWw+CisgICAgICAgIDwvbmF2PgorCisgICAgICA8ZGl2IGNsYXNzPSJkLWxnLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgcHgtMyBweC1sZy0wIHRleHQtY2VudGVyIHRleHQtbGctbGVmdCI+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1sZy1mbGV4IG1iLTMgbWItbGctMCI+CisgICAgICAgICAgICA8ZGl2IGNsYXNzPSJoZWFkZXItc2VhcmNoIGZsZXgtc2VsZi1zdHJldGNoIGZsZXgtbGctc2VsZi1hdXRvIG1yLTAgbXItbGctMyBtYi0zIG1iLWxnLTAgc2NvcGVkLXNlYXJjaCBzaXRlLXNjb3BlZC1zZWFyY2gganMtc2l0ZS1zZWFyY2ggcG9zaXRpb24tcmVsYXRpdmUganMtanVtcC10byIKKyAgcm9sZT0iY29tYm9ib3giCisgIGFyaWEtb3ducz0ianVtcC10by1yZXN1bHRzIgorICBhcmlhLWxhYmVsPSJTZWFyY2ggb3IganVtcCB0byIKKyAgYXJpYS1oYXNwb3B1cD0ibGlzdGJveCIKKyAgYXJpYS1leHBhbmRlZD0iZmFsc2UiCis+CisgIDxkaXYgY2xhc3M9InBvc2l0aW9uLXJlbGF0aXZlIj4KKyAgICA8IS0tICciYCAtLT48IS0tIDwvdGV4dGFyZWE+PC94bXA+IC0tPjwvb3B0aW9uPjwvZm9ybT48Zm9ybSBjbGFzcz0ianMtc2l0ZS1zZWFyY2gtZm9ybSIgcm9sZT0ic2VhcmNoIiBhcmlhLWxhYmVsPSJTaXRlIiBkYXRhLXNjb3BlLXR5cGU9IlJlcG9zaXRvcnkiIGRhdGEtc2NvcGUtaWQ9IjQ0MTM3ODUyIiBkYXRhLXNjb3BlZC1zZWFyY2gtdXJsPSIvYXBwbGUvY3Vwcy9zZWFyY2giIGRhdGEtdW5zY29wZWQtc2VhcmNoLXVybD0iL3NlYXJjaCIgYWN0aW9uPSIvYXBwbGUvY3Vwcy9zZWFyY2giIGFjY2VwdC1jaGFyc2V0PSJVVEYtOCIgbWV0aG9kPSJnZXQiPjxpbnB1dCBuYW1lPSJ1dGY4IiB0eXBlPSJoaWRkZW4iIHZhbHVlPSImI3gyNzEzOyIgLz4KKyAgICAgIDxsYWJlbCBjbGFzcz0iZm9ybS1jb250cm9sIGlucHV0LXNtIGhlYWRlci1zZWFyY2gtd3JhcHBlciBwLTAgaGVhZGVyLXNlYXJjaC13cmFwcGVyLWp1bXAtdG8gcG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIGpzLWNocm9tZWxlc3MtaW5wdXQtY29udGFpbmVyIj4KKyAgICAgICAgPGlucHV0IHR5cGU9InRleHQiCisgICAgICAgICAgY2xhc3M9ImZvcm0tY29udHJvbCBpbnB1dC1zbSBoZWFkZXItc2VhcmNoLWlucHV0IGp1bXAtdG8tZmllbGQganMtanVtcC10by1maWVsZCBqcy1zaXRlLXNlYXJjaC1mb2N1cyBqcy1zaXRlLXNlYXJjaC1maWVsZCBpcy1jbGVhcmFibGUiCisgICAgICAgICAgZGF0YS1ob3RrZXk9InMsLyIKKyAgICAgICAgICBuYW1lPSJxIgorICAgICAgICAgIHZhbHVlPSIiCisgICAgICAgICAgcGxhY2Vob2xkZXI9IlNlYXJjaCIKKyAgICAgICAgICBkYXRhLXVuc2NvcGVkLXBsYWNlaG9sZGVyPSJTZWFyY2ggR2l0SHViIgorICAgICAgICAgIGRhdGEtc2NvcGVkLXBsYWNlaG9sZGVyPSJTZWFyY2giCisgICAgICAgICAgYXV0b2NhcGl0YWxpemU9Im9mZiIKKyAgICAgICAgICBhcmlhLWF1dG9jb21wbGV0ZT0ibGlzdCIKKyAgICAgICAgICBhcmlhLWNvbnRyb2xzPSJqdW1wLXRvLXJlc3VsdHMiCisgICAgICAgICAgYXJpYS1sYWJlbD0iU2VhcmNoIgorICAgICAgICAgIGRhdGEtanVtcC10by1zdWdnZXN0aW9ucy1wYXRoPSIvX2dyYXBocWwvR2V0U3VnZ2VzdGVkTmF2aWdhdGlvbkRlc3RpbmF0aW9ucyNjc3JmLXRva2VuPTBRbU1TdVpIbTg0Y1BOVkdRN1JZQVhnUFJpVWZPY2pOT0MxdlhPaFZueXptMkIzSlNIejFmY0lKQlp4TUFLV1VpQlhqbFZ3TGtjSExKUFp5Mmd5K21nPT0iCisgICAgICAgICAgc3BlbGxjaGVjaz0iZmFsc2UiCisgICAgICAgICAgYXV0b2NvbXBsZXRlPSJvZmYiCisgICAgICAgICAgPgorICAgICAgICAgIDxpbnB1dCB0eXBlPSJoaWRkZW4iIGNsYXNzPSJqcy1zaXRlLXNlYXJjaC10eXBlLWZpZWxkIiBuYW1lPSJ0eXBlIiA+CisgICAgICAgICAgICA8aW1nIHNyYz0iaHR0cHM6Ly9naXRodWIuZ2l0aHViYXNzZXRzLmNvbS9pbWFnZXMvc2VhcmNoLWtleS1zbGFzaC5zdmciIGFsdD0iIiBjbGFzcz0ibXItMiBoZWFkZXItc2VhcmNoLWtleS1zbGFzaCI+CisKKyAgICAgICAgICAgIDxkaXYgY2xhc3M9IkJveCBwb3NpdGlvbi1hYnNvbHV0ZSBvdmVyZmxvdy1oaWRkZW4gZC1ub25lIGp1bXAtdG8tc3VnZ2VzdGlvbnMganMtanVtcC10by1zdWdnZXN0aW9ucy1jb250YWluZXIiPgorICAgICAgICAgICAgICAKKzx1bCBjbGFzcz0iZC1ub25lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtdGVtcGxhdGUtY29udGFpbmVyIj4KKyAgCisKKzxsaSBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1zdGFydCBmbGV4LWl0ZW1zLWNlbnRlciBwLTAgZjUgbmF2aWdhdGlvbi1pdGVtIGpzLW5hdmlnYXRpb24taXRlbSBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24iIHJvbGU9Im9wdGlvbiI+CisgIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgorICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CisgICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgorICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAwLTEgMXYxNGExIDEgMCAwMDEgMWgxM2ExIDEgMCAwMDEtMVYxYTEgMSAwIDAwLTEtMXoiLz48L3N2Zz4KKyAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAwMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAwMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KKyAgICA8L2Rpdj4KKworICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KKworICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgorICAgIDwvZGl2PgorCisgICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgorICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CisgICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQorICAgICAgPC9zcGFuPgorICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CisgICAgICAgIEFsbCBHaXRIdWIKKyAgICAgIDwvc3Bhbj4KKyAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgorICAgIDwvZGl2PgorCisgICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CisgICAgICBKdW1wIHRvCisgICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgorICAgIDwvZGl2PgorICA8L2E+Cis8L2xpPgorCis8L3VsPgorCis8dWwgY2xhc3M9ImQtbm9uZSBqcy1qdW1wLXRvLW5vLXJlc3VsdHMtdGVtcGxhdGUtY29udGFpbmVyIj4KKyAgPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWNlbnRlciBmbGV4LWl0ZW1zLWNlbnRlciBmNSBkLW5vbmUganMtanVtcC10by1zdWdnZXN0aW9uIHAtMiI+CisgICAgPHNwYW4gY2xhc3M9InRleHQtZ3JheSI+Tm8gc3VnZ2VzdGVkIGp1bXAgdG8gcmVzdWx0czwvc3Bhbj4KKyAgPC9saT4KKzwvdWw+CisKKzx1bCBpZD0ianVtcC10by1yZXN1bHRzIiByb2xlPSJsaXN0Ym94IiBjbGFzcz0icC0wIG0tMCBqcy1uYXZpZ2F0aW9uLWNvbnRhaW5lciBqdW1wLXRvLXN1Z2dlc3Rpb25zLXJlc3VsdHMtY29udGFpbmVyIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbnMtcmVzdWx0cy1jb250YWluZXIiPgorICAKKworPGxpIGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LXN0YXJ0IGZsZXgtaXRlbXMtY2VudGVyIHAtMCBmNSBuYXZpZ2F0aW9uLWl0ZW0ganMtbmF2aWdhdGlvbi1pdGVtIGpzLWp1bXAtdG8tc2NvcGVkLXNlYXJjaCBkLW5vbmUiIHJvbGU9Im9wdGlvbiI+CisgIDxhIHRhYmluZGV4PSItMSIgY2xhc3M9Im5vLXVuZGVybGluZSBkLWZsZXggZmxleC1hdXRvIGZsZXgtaXRlbXMtY2VudGVyIGp1bXAtdG8tc3VnZ2VzdGlvbnMtcGF0aCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tcGF0aCBqcy1uYXZpZ2F0aW9uLW9wZW4gcC0yIiBocmVmPSIiPgorICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tb2N0aWNvbiBqcy1qdW1wLXRvLW9jdGljb24gZmxleC1zaHJpbmstMCBtci0yIHRleHQtY2VudGVyIGQtbm9uZSI+CisgICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1yZXBvIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXJlcG8gZC1ub25lIiB0aXRsZT0iUmVwb3NpdG9yeSIgYXJpYS1sYWJlbD0iUmVwb3NpdG9yeSIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNCA5SDNWOGgxdjF6bTAtM0gzdjFoMVY2em0wLTJIM3YxaDFWNHptMC0ySDN2MWgxVjJ6bTgtMXYxMmMwIC41NS0uNDUgMS0xIDFINnYybC0xLjUtMS41TDMgMTZ2LTJIMWMtLjU1IDAtMS0uNDUtMS0xVjFjMC0uNTUuNDUtMSAxLTFoMTBjLjU1IDAgMSAuNDUgMSAxem0tMSAxMEgxdjJoMnYtMWgzdjFoNXYtMnptMC0xMEgydjloOVYxeiIvPjwvc3ZnPgorICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1wcm9qZWN0IGQtbm9uZSIgdGl0bGU9IlByb2plY3QiIGFyaWEtbGFiZWw9IlByb2plY3QiIHZpZXdCb3g9IjAgMCAxNSAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAwLTEgMXYxNGExIDEgMCAwMDEgMWgxM2ExIDEgMCAwMDEtMVYxYTEgMSAwIDAwLTEtMXoiLz48L3N2Zz4KKyAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXNlYXJjaCBmbGV4LXNocmluay0wIGpzLWp1bXAtdG8tb2N0aWNvbi1zZWFyY2ggZC1ub25lIiB0aXRsZT0iU2VhcmNoIiBhcmlhLWxhYmVsPSJTZWFyY2giIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiByb2xlPSJpbWciPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTE1LjcgMTMuM2wtMy44MS0zLjgzQTUuOTMgNS45MyAwIDAwMTMgNmMwLTMuMzEtMi42OS02LTYtNlMxIDIuNjkgMSA2czIuNjkgNiA2IDZjMS4zIDAgMi40OC0uNDEgMy40Ny0xLjExbDMuODMgMy44MWMuMTkuMi40NS4zLjcuMy4yNSAwIC41Mi0uMDkuNy0uM2EuOTk2Ljk5NiAwIDAwMC0xLjQxdi4wMXpNNyAxMC43Yy0yLjU5IDAtNC43LTIuMTEtNC43LTQuNyAwLTIuNTkgMi4xMS00LjcgNC43LTQuNyAyLjU5IDAgNC43IDIuMTEgNC43IDQuNyAwIDIuNTktMi4xMSA0LjctNC43IDQuN3oiLz48L3N2Zz4KKyAgICA8L2Rpdj4KKworICAgIDxpbWcgY2xhc3M9ImF2YXRhciBtci0yIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1zdWdnZXN0aW9uLWF2YXRhciBkLW5vbmUiIGFsdD0iIiBhcmlhLWxhYmVsPSJUZWFtIiBzcmM9IiIgd2lkdGg9IjI4IiBoZWlnaHQ9IjI4Ij4KKworICAgIDxkaXYgY2xhc3M9Imp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1uYW1lIGZsZXgtYXV0byBvdmVyZmxvdy1oaWRkZW4gdGV4dC1sZWZ0IG5vLXdyYXAgY3NzLXRydW5jYXRlIGNzcy10cnVuY2F0ZS10YXJnZXQiPgorICAgIDwvZGl2PgorCisgICAgPGRpdiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUganMtanVtcC10by1iYWRnZS1zZWFyY2giPgorICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZGVmYXVsdCBkLW5vbmUiIGFyaWEtbGFiZWw9ImluIHRoaXMgcmVwb3NpdG9yeSI+CisgICAgICAgIEluIHRoaXMgcmVwb3NpdG9yeQorICAgICAgPC9zcGFuPgorICAgICAgPHNwYW4gY2xhc3M9ImpzLWp1bXAtdG8tYmFkZ2Utc2VhcmNoLXRleHQtZ2xvYmFsIGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gYWxsIG9mIEdpdEh1YiI+CisgICAgICAgIEFsbCBHaXRIdWIKKyAgICAgIDwvc3Bhbj4KKyAgICAgIDxzcGFuIGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgorICAgIDwvZGl2PgorCisgICAgPGRpdiBhcmlhLWhpZGRlbj0idHJ1ZSIgY2xhc3M9ImJvcmRlciByb3VuZGVkLTEgZmxleC1zaHJpbmstMCBiZy1ncmF5IHB4LTEgdGV4dC1ncmF5LWxpZ2h0IG1sLTEgZjYgZC1ub25lIGQtb24tbmF2LWZvY3VzIGpzLWp1bXAtdG8tYmFkZ2UtanVtcCI+CisgICAgICBKdW1wIHRvCisgICAgICA8c3BhbiBjbGFzcz0iZC1pbmxpbmUtYmxvY2sgbWwtMSB2LWFsaWduLW1pZGRsZSI+4oa1PC9zcGFuPgorICAgIDwvZGl2PgorICA8L2E+Cis8L2xpPgorCisgIAorCis8bGkgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktc3RhcnQgZmxleC1pdGVtcy1jZW50ZXIgcC0wIGY1IG5hdmlnYXRpb24taXRlbSBqcy1uYXZpZ2F0aW9uLWl0ZW0ganMtanVtcC10by1nbG9iYWwtc2VhcmNoIGQtbm9uZSIgcm9sZT0ib3B0aW9uIj4KKyAgPGEgdGFiaW5kZXg9Ii0xIiBjbGFzcz0ibm8tdW5kZXJsaW5lIGQtZmxleCBmbGV4LWF1dG8gZmxleC1pdGVtcy1jZW50ZXIganVtcC10by1zdWdnZXN0aW9ucy1wYXRoIGpzLWp1bXAtdG8tc3VnZ2VzdGlvbi1wYXRoIGpzLW5hdmlnYXRpb24tb3BlbiBwLTIiIGhyZWY9IiI+CisgICAgPGRpdiBjbGFzcz0ianVtcC10by1vY3RpY29uIGpzLWp1bXAtdG8tb2N0aWNvbiBmbGV4LXNocmluay0wIG1yLTIgdGV4dC1jZW50ZXIgZC1ub25lIj4KKyAgICAgIDxzdmcgaGVpZ2h0PSIxNiIgd2lkdGg9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8gZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLW9jdGljb24tcmVwbyBkLW5vbmUiIHRpdGxlPSJSZXBvc2l0b3J5IiBhcmlhLWxhYmVsPSJSZXBvc2l0b3J5IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik00IDlIM1Y4aDF2MXptMC0zSDN2MWgxVjZ6bTAtMkgzdjFoMVY0em0wLTJIM3YxaDFWMnptOC0xdjEyYzAgLjU1LS40NSAxLTEgMUg2djJsLTEuNS0xLjVMMyAxNnYtMkgxYy0uNTUgMC0xLS40NS0xLTFWMWMwLS41NS40NS0xIDEtMWgxMGMuNTUgMCAxIC40NSAxIDF6bS0xIDEwSDF2Mmgydi0xaDN2MWg1di0yem0wLTEwSDJ2OWg5VjF6Ii8+PC9zdmc+CisgICAgICA8c3ZnIGhlaWdodD0iMTYiIHdpZHRoPSIxNiIgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wcm9qZWN0IGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXByb2plY3QgZC1ub25lIiB0aXRsZT0iUHJvamVjdCIgYXJpYS1sYWJlbD0iUHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAgMTJoM1YyaC0zdjEwem0tNC0yaDNWMkg2djh6bS00IDRoM1YySDJ2MTJ6bS0xIDFoMTNWMUgxdjE0ek0xNCAwSDFhMSAxIDAgMDAtMSAxdjE0YTEgMSAwIDAwMSAxaDEzYTEgMSAwIDAwMS0xVjFhMSAxIDAgMDAtMS0xeiIvPjwvc3ZnPgorICAgICAgPHN2ZyBoZWlnaHQ9IjE2IiB3aWR0aD0iMTYiIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2VhcmNoIGZsZXgtc2hyaW5rLTAganMtanVtcC10by1vY3RpY29uLXNlYXJjaCBkLW5vbmUiIHRpdGxlPSJTZWFyY2giIGFyaWEtbGFiZWw9IlNlYXJjaCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHJvbGU9ImltZyI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTUuNyAxMy4zbC0zLjgxLTMuODNBNS45MyA1LjkzIDAgMDAxMyA2YzAtMy4zMS0yLjY5LTYtNi02UzEgMi42OSAxIDZzMi42OSA2IDYgNmMxLjMgMCAyLjQ4LS40MSAzLjQ3LTEuMTFsMy44MyAzLjgxYy4xOS4yLjQ1LjMuNy4zLjI1IDAgLjUyLS4wOS43LS4zYS45OTYuOTk2IDAgMDAwLTEuNDF2LjAxek03IDEwLjdjLTIuNTkgMC00LjctMi4xMS00LjctNC43IDAtMi41OSAyLjExLTQuNyA0LjctNC43IDIuNTkgMCA0LjcgMi4xMSA0LjcgNC43IDAgMi41OS0yLjExIDQuNy00LjcgNC43eiIvPjwvc3ZnPgorICAgIDwvZGl2PgorCisgICAgPGltZyBjbGFzcz0iYXZhdGFyIG1yLTIgZmxleC1zaHJpbmstMCBqcy1qdW1wLXRvLXN1Z2dlc3Rpb24tYXZhdGFyIGQtbm9uZSIgYWx0PSIiIGFyaWEtbGFiZWw9IlRlYW0iIHNyYz0iIiB3aWR0aD0iMjgiIGhlaWdodD0iMjgiPgorCisgICAgPGRpdiBjbGFzcz0ianVtcC10by1zdWdnZXN0aW9uLW5hbWUganMtanVtcC10by1zdWdnZXN0aW9uLW5hbWUgZmxleC1hdXRvIG92ZXJmbG93LWhpZGRlbiB0ZXh0LWxlZnQgbm8td3JhcCBjc3MtdHJ1bmNhdGUgY3NzLXRydW5jYXRlLXRhcmdldCI+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGNsYXNzPSJib3JkZXIgcm91bmRlZC0xIGZsZXgtc2hyaW5rLTAgYmctZ3JheSBweC0xIHRleHQtZ3JheS1saWdodCBtbC0xIGY2IGQtbm9uZSBqcy1qdW1wLXRvLWJhZGdlLXNlYXJjaCI+CisgICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1kZWZhdWx0IGQtbm9uZSIgYXJpYS1sYWJlbD0iaW4gdGhpcyByZXBvc2l0b3J5Ij4KKyAgICAgICAgSW4gdGhpcyByZXBvc2l0b3J5CisgICAgICA8L3NwYW4+CisgICAgICA8c3BhbiBjbGFzcz0ianMtanVtcC10by1iYWRnZS1zZWFyY2gtdGV4dC1nbG9iYWwgZC1ub25lIiBhcmlhLWxhYmVsPSJpbiBhbGwgb2YgR2l0SHViIj4KKyAgICAgICAgQWxsIEdpdEh1YgorICAgICAgPC9zcGFuPgorICAgICAgPHNwYW4gYXJpYS1oaWRkZW49InRydWUiIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CisgICAgPC9kaXY+CisKKyAgICA8ZGl2IGFyaWEtaGlkZGVuPSJ0cnVlIiBjbGFzcz0iYm9yZGVyIHJvdW5kZWQtMSBmbGV4LXNocmluay0wIGJnLWdyYXkgcHgtMSB0ZXh0LWdyYXktbGlnaHQgbWwtMSBmNiBkLW5vbmUgZC1vbi1uYXYtZm9jdXMganMtanVtcC10by1iYWRnZS1qdW1wIj4KKyAgICAgIEp1bXAgdG8KKyAgICAgIDxzcGFuIGNsYXNzPSJkLWlubGluZS1ibG9jayBtbC0xIHYtYWxpZ24tbWlkZGxlIj7ihrU8L3NwYW4+CisgICAgPC9kaXY+CisgIDwvYT4KKzwvbGk+CisKKworPC91bD4KKworICAgICAgICAgICAgPC9kaXY+CisgICAgICA8L2xhYmVsPgorPC9mb3JtPiAgPC9kaXY+Cis8L2Rpdj4KKworICAgICAgICAgIDwvZGl2PgorCisgICAgICAgIDxhIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGYXBwbGUlMkZjdXBzJTJGcmVsZWFzZXMiCisgICAgICAgICAgY2xhc3M9IkhlYWRlck1lbnUtbGluayBuby11bmRlcmxpbmUgbXItMyIKKyAgICAgICAgICBkYXRhLWh5ZHJvLWNsaWNrPSJ7JnF1b3Q7ZXZlbnRfdHlwZSZxdW90OzomcXVvdDthdXRoZW50aWNhdGlvbi5jbGljayZxdW90OywmcXVvdDtwYXlsb2FkJnF1b3Q7OnsmcXVvdDtsb2NhdGlvbl9pbl9wYWdlJnF1b3Q7OiZxdW90O3NpdGUgaGVhZGVyIG1lbnUmcXVvdDssJnF1b3Q7cmVwb3NpdG9yeV9pZCZxdW90OzpudWxsLCZxdW90O2F1dGhfdHlwZSZxdW90OzomcXVvdDtTSUdOX1VQJnF1b3Q7LCZxdW90O2NsaWVudF9pZCZxdW90OzpudWxsLCZxdW90O29yaWdpbmF0aW5nX3JlcXVlc3RfaWQmcXVvdDs6JnF1b3Q7RTBDQjoyMjM0ODo1MDhEOUI6NzREN0IwOjVERkE0M0M0JnF1b3Q7LCZxdW90O29yaWdpbmF0aW5nX3VybCZxdW90OzomcXVvdDtodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcyZxdW90OywmcXVvdDtyZWZlcnJlciZxdW90OzpudWxsLCZxdW90O3VzZXJfaWQmcXVvdDs6bnVsbH19IiBkYXRhLWh5ZHJvLWNsaWNrLWhtYWM9ImU0ZTM0MjU1Yzg0ODVkNjkxNWQxNDQ4YTg2ZWE5NzIzYzNiMmU5MmU5NTc2ZTcxODQ1YWY3MzU4NzBkYThkNzAiCisgICAgICAgICAgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIGluLCB0ZXh0OnNpZ24taW4iPgorICAgICAgICAgIFNpZ24mbmJzcDtpbgorICAgICAgICA8L2E+CisgICAgICAgICAgPGEgaHJlZj0iL2pvaW4/c291cmNlPWhlYWRlci1yZXBvJmFtcDtzb3VyY2VfcmVwbz1hcHBsZSUyRmN1cHMiCisgICAgICAgICAgICBjbGFzcz0iSGVhZGVyTWVudS1saW5rIGQtaW5saW5lLWJsb2NrIG5vLXVuZGVybGluZSBib3JkZXIgYm9yZGVyLWdyYXktZGFyayByb3VuZGVkLTEgcHgtMiBweS0xIgorICAgICAgICAgICAgZGF0YS1oeWRyby1jbGljaz0ieyZxdW90O2V2ZW50X3R5cGUmcXVvdDs6JnF1b3Q7YXV0aGVudGljYXRpb24uY2xpY2smcXVvdDssJnF1b3Q7cGF5bG9hZCZxdW90Ozp7JnF1b3Q7bG9jYXRpb25faW5fcGFnZSZxdW90OzomcXVvdDtzaXRlIGhlYWRlciBtZW51JnF1b3Q7LCZxdW90O3JlcG9zaXRvcnlfaWQmcXVvdDs6bnVsbCwmcXVvdDthdXRoX3R5cGUmcXVvdDs6JnF1b3Q7U0lHTl9VUCZxdW90OywmcXVvdDtjbGllbnRfaWQmcXVvdDs6bnVsbCwmcXVvdDtvcmlnaW5hdGluZ19yZXF1ZXN0X2lkJnF1b3Q7OiZxdW90O0UwQ0I6MjIzNDg6NTA4RDlCOjc0RDdCMDo1REZBNDNDNCZxdW90OywmcXVvdDtvcmlnaW5hdGluZ191cmwmcXVvdDs6JnF1b3Q7aHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcmVsZWFzZXMmcXVvdDssJnF1b3Q7cmVmZXJyZXImcXVvdDs6bnVsbCwmcXVvdDt1c2VyX2lkJnF1b3Q7Om51bGx9fSIgZGF0YS1oeWRyby1jbGljay1obWFjPSJlNGUzNDI1NWM4NDg1ZDY5MTVkMTQ0OGE4NmVhOTcyM2MzYjJlOTJlOTU3NmU3MTg0NWFmNzM1ODcwZGE4ZDcwIgorICAgICAgICAgICAgZGF0YS1nYS1jbGljaz0iKExvZ2dlZCBvdXQpIEhlYWRlciwgY2xpY2tlZCBTaWduIHVwLCB0ZXh0OnNpZ24tdXAiPgorICAgICAgICAgICAgU2lnbiZuYnNwO3VwCisgICAgICAgICAgPC9hPgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGl2PgorPC9oZWFkZXI+CisKKyAgPC9kaXY+CisKKyAgPGRpdiBpZD0ic3RhcnQtb2YtY29udGVudCIgY2xhc3M9InNob3ctb24tZm9jdXMiPjwvZGl2PgorCisKKyAgICA8ZGl2IGlkPSJqcy1mbGFzaC1jb250YWluZXIiPgorCis8L2Rpdj4KKworCisKKyAgPGRpdiBjbGFzcz0iYXBwbGljYXRpb24tbWFpbiAiIGRhdGEtY29tbWl0LWhvdmVyY2FyZHMtZW5hYmxlZD4KKyAgICAgICAgPGRpdiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL1NvZnR3YXJlU291cmNlQ29kZSIgY2xhc3M9IiI+CisgICAgPG1haW4gID4KKyAgICAgIAorCisKKyAgCisKKworCisgIAorCisKKworCisKKworCisKKworICA8ZGl2IGNsYXNzPSIgcGFnZWhlYWQgcmVwb2hlYWQgcmVhZGFiaWxpdHktbWVudSBleHBlcmltZW50LXJlcG8tbmF2IHB0LTAgcHQtbGctNCAiPgorICAgIDxkaXYgY2xhc3M9InJlcG9oZWFkLWRldGFpbHMtY29udGFpbmVyIGNsZWFyZml4IGNvbnRhaW5lci1sZyBwLXJlc3BvbnNpdmUgZC1ub25lIGQtbGctYmxvY2siPgorCisgICAgICA8dWwgY2xhc3M9InBhZ2VoZWFkLWFjdGlvbnMiPgorCisKKworCisgIDxsaT4KKyAgICAKKyAgPGEgY2xhc3M9InRvb2x0aXBwZWQgdG9vbHRpcHBlZC1zIGJ0biBidG4tc20gYnRuLXdpdGgtY291bnQiIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byB3YXRjaCBhIHJlcG9zaXRvcnkiIHJlbD0ibm9mb2xsb3ciIGRhdGEtaHlkcm8tY2xpY2s9InsmcXVvdDtldmVudF90eXBlJnF1b3Q7OiZxdW90O2F1dGhlbnRpY2F0aW9uLmNsaWNrJnF1b3Q7LCZxdW90O3BheWxvYWQmcXVvdDs6eyZxdW90O2xvY2F0aW9uX2luX3BhZ2UmcXVvdDs6JnF1b3Q7bm90aWZpY2F0aW9uIHN1YnNjcmlwdGlvbiBtZW51IHdhdGNoJnF1b3Q7LCZxdW90O3JlcG9zaXRvcnlfaWQmcXVvdDs6bnVsbCwmcXVvdDthdXRoX3R5cGUmcXVvdDs6JnF1b3Q7TE9HX0lOJnF1b3Q7LCZxdW90O2NsaWVudF9pZCZxdW90OzpudWxsLCZxdW90O29yaWdpbmF0aW5nX3JlcXVlc3RfaWQmcXVvdDs6JnF1b3Q7RTBDQjoyMjM0ODo1MDhEOUI6NzREN0IwOjVERkE0M0M0JnF1b3Q7LCZxdW90O29yaWdpbmF0aW5nX3VybCZxdW90OzomcXVvdDtodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcyZxdW90OywmcXVvdDtyZWZlcnJlciZxdW90OzpudWxsLCZxdW90O3VzZXJfaWQmcXVvdDs6bnVsbH19IiBkYXRhLWh5ZHJvLWNsaWNrLWhtYWM9IjU1ZTYxY2U4MDc1MjA5NDI3MjRkMzdkNDhkM2QxOWMzZGE0YmFlZWNiMmVjODliY2U0ZjZkYTBjZWI5MWE2MmQiIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGYXBwbGUlMkZjdXBzIj4KKyAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZXllIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjA2IDJDMyAyIDAgOCAwIDhzMyA2IDguMDYgNkMxMyAxNCAxNiA4IDE2IDhzLTMtNi03Ljk0LTZ6TTggMTJjLTIuMiAwLTQtMS43OC00LTQgMC0yLjIgMS44LTQgNC00IDIuMjIgMCA0IDEuOCA0IDQgMCAyLjIyLTEuNzggNC00IDR6bTItNGMwIDEuMTEtLjg5IDItMiAyLTEuMTEgMC0yLS44OS0yLTIgMC0xLjExLjg5LTIgMi0yIDEuMTEgMCAyIC44OSAyIDJ6Ii8+PC9zdmc+CisgICAgV2F0Y2gKKzwvYT4gICAgPGEgY2xhc3M9InNvY2lhbC1jb3VudCIgaHJlZj0iL2FwcGxlL2N1cHMvd2F0Y2hlcnMiCisgICAgICAgYXJpYS1sYWJlbD0iODggdXNlcnMgYXJlIHdhdGNoaW5nIHRoaXMgcmVwb3NpdG9yeSI+CisgICAgICA4OAorICAgIDwvYT4KKworICA8L2xpPgorCisgIDxsaT4KKyAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byBzdGFyIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyIgZGF0YS1oeWRyby1jbGljaz0ieyZxdW90O2V2ZW50X3R5cGUmcXVvdDs6JnF1b3Q7YXV0aGVudGljYXRpb24uY2xpY2smcXVvdDssJnF1b3Q7cGF5bG9hZCZxdW90Ozp7JnF1b3Q7bG9jYXRpb25faW5fcGFnZSZxdW90OzomcXVvdDtzdGFyIGJ1dHRvbiZxdW90OywmcXVvdDtyZXBvc2l0b3J5X2lkJnF1b3Q7OjQ0MTM3ODUyLCZxdW90O2F1dGhfdHlwZSZxdW90OzomcXVvdDtMT0dfSU4mcXVvdDssJnF1b3Q7Y2xpZW50X2lkJnF1b3Q7Om51bGwsJnF1b3Q7b3JpZ2luYXRpbmdfcmVxdWVzdF9pZCZxdW90OzomcXVvdDtFMENCOjIyMzQ4OjUwOEQ5Qjo3NEQ3QjA6NURGQTQzQzQmcXVvdDssJnF1b3Q7b3JpZ2luYXRpbmdfdXJsJnF1b3Q7OiZxdW90O2h0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzJnF1b3Q7LCZxdW90O3JlZmVycmVyJnF1b3Q7Om51bGwsJnF1b3Q7dXNlcl9pZCZxdW90OzpudWxsfX0iIGRhdGEtaHlkcm8tY2xpY2staG1hYz0iZjk3MDRhNzE1YmU0NmE1Njc0Nzk5NzM1NzM0NzdhNTgzNTAxYTE5NzZmOTlkZWIwY2NkZDBiMWVkM2I3NGU1YiIgaHJlZj0iL2xvZ2luP3JldHVybl90bz0lMkZhcHBsZSUyRmN1cHMiPgorICAgICAgPHN2ZyBhcmlhLWxhYmVsPSJzdGFyIiBoZWlnaHQ9IjE2IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXN0YXIgdi1hbGlnbi10ZXh0LWJvdHRvbSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgcm9sZT0iaW1nIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNCA2bC00LjktLjY0TDcgMSA0LjkgNS4zNiAwIDZsMy42IDMuMjZMMi42NyAxNCA3IDExLjY3IDExLjMzIDE0bC0uOTMtNC43NEwxNCA2eiIvPjwvc3ZnPgorCisgICAgICBTdGFyCis8L2E+CisgICAgPGEgY2xhc3M9InNvY2lhbC1jb3VudCBqcy1zb2NpYWwtY291bnQiIGhyZWY9Ii9hcHBsZS9jdXBzL3N0YXJnYXplcnMiCisgICAgICBhcmlhLWxhYmVsPSI4ODMgdXNlcnMgc3RhcnJlZCB0aGlzIHJlcG9zaXRvcnkiPgorICAgICAgODgzCisgICAgPC9hPgorCisgIDwvbGk+CisKKyAgPGxpPgorICAgICAgPGEgY2xhc3M9ImJ0biBidG4tc20gYnRuLXdpdGgtY291bnQgdG9vbHRpcHBlZCB0b29sdGlwcGVkLXMiIGFyaWEtbGFiZWw9IllvdSBtdXN0IGJlIHNpZ25lZCBpbiB0byBmb3JrIGEgcmVwb3NpdG9yeSIgcmVsPSJub2ZvbGxvdyIgZGF0YS1oeWRyby1jbGljaz0ieyZxdW90O2V2ZW50X3R5cGUmcXVvdDs6JnF1b3Q7YXV0aGVudGljYXRpb24uY2xpY2smcXVvdDssJnF1b3Q7cGF5bG9hZCZxdW90Ozp7JnF1b3Q7bG9jYXRpb25faW5fcGFnZSZxdW90OzomcXVvdDtyZXBvIGRldGFpbHMgZm9yayBidXR0b24mcXVvdDssJnF1b3Q7cmVwb3NpdG9yeV9pZCZxdW90Ozo0NDEzNzg1MiwmcXVvdDthdXRoX3R5cGUmcXVvdDs6JnF1b3Q7TE9HX0lOJnF1b3Q7LCZxdW90O2NsaWVudF9pZCZxdW90OzpudWxsLCZxdW90O29yaWdpbmF0aW5nX3JlcXVlc3RfaWQmcXVvdDs6JnF1b3Q7RTBDQjoyMjM0ODo1MDhEOUI6NzREN0IwOjVERkE0M0M0JnF1b3Q7LCZxdW90O29yaWdpbmF0aW5nX3VybCZxdW90OzomcXVvdDtodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcyZxdW90OywmcXVvdDtyZWZlcnJlciZxdW90OzpudWxsLCZxdW90O3VzZXJfaWQmcXVvdDs6bnVsbH19IiBkYXRhLWh5ZHJvLWNsaWNrLWhtYWM9ImI1MjdiMmZlYTBjZDhlOTQ4NzAwNDc5NzJhY2Q4NzM1OGNmNmE3MzVkYTI1NGIwMGViMDVjMTVkNjc2Zjc1MDMiIGhyZWY9Ii9sb2dpbj9yZXR1cm5fdG89JTJGYXBwbGUlMkZjdXBzIj4KKyAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXJlcG8tZm9ya2VkIHYtYWxpZ24tdGV4dC1ib3R0b20iIHZpZXdCb3g9IjAgMCAxMCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTAiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04IDFhMS45OTMgMS45OTMgMCAwMC0xIDMuNzJWNkw1IDggMyA2VjQuNzJBMS45OTMgMS45OTMgMCAwMDIgMWExLjk5MyAxLjk5MyAwIDAwLTEgMy43MlY2LjVsMyAzdjEuNzhBMS45OTMgMS45OTMgMCAwMDUgMTVhMS45OTMgMS45OTMgMCAwMDEtMy43MlY5LjVsMy0zVjQuNzJBMS45OTMgMS45OTMgMCAwMDggMXpNMiA0LjJDMS4zNCA0LjIuOCAzLjY1LjggM2MwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnptMyAxMGMtLjY2IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjIgMCAuNjUtLjU1IDEuMi0xLjIgMS4yem0zLTEwYy0uNjYgMC0xLjItLjU1LTEuMi0xLjIgMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+CisgICAgICAgIEZvcmsKKzwvYT4KKyAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9uZXR3b3JrL21lbWJlcnMiIGNsYXNzPSJzb2NpYWwtY291bnQiCisgICAgICAgYXJpYS1sYWJlbD0iMjYwIHVzZXJzIGZvcmtlZCB0aGlzIHJlcG9zaXRvcnkiPgorICAgICAgMjYwCisgICAgPC9hPgorICA8L2xpPgorPC91bD4KKworICAgICAgPGgxIGNsYXNzPSJwdWJsaWMgIj4KKyAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcmVwbyIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTQgOUgzVjhoMXYxem0wLTNIM3YxaDFWNnptMC0ySDN2MWgxVjR6bTAtMkgzdjFoMVYyem04LTF2MTJjMCAuNTUtLjQ1IDEtMSAxSDZ2MmwtMS41LTEuNUwzIDE2di0ySDFjLS41NSAwLTEtLjQ1LTEtMVYxYzAtLjU1LjQ1LTEgMS0xaDEwYy41NSAwIDEgLjQ1IDEgMXptLTEgMTBIMXYyaDJ2LTFoM3YxaDV2LTJ6bTAtMTBIMnY5aDlWMXoiLz48L3N2Zz4KKyAgPHNwYW4gY2xhc3M9ImF1dGhvciIgaXRlbXByb3A9ImF1dGhvciI+PGEgY2xhc3M9InVybCBmbiIgcmVsPSJhdXRob3IiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Im9yZ2FuaXphdGlvbiIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvb3Jncy9hcHBsZS9ob3ZlcmNhcmQiIGhyZWY9Ii9hcHBsZSI+YXBwbGU8L2E+PC9zcGFuPjwhLS0KKy0tPjxzcGFuIGNsYXNzPSJwYXRoLWRpdmlkZXIiPi88L3NwYW4+PCEtLQorLS0+PHN0cm9uZyBpdGVtcHJvcD0ibmFtZSI+PGEgZGF0YS1wamF4PSIjanMtcmVwby1wamF4LWNvbnRhaW5lciIgaHJlZj0iL2FwcGxlL2N1cHMiPmN1cHM8L2E+PC9zdHJvbmc+CisgIAorCis8L2gxPgorCisgICAgPC9kaXY+CisgICAgCis8bmF2IGNsYXNzPSJoeF9yZXBvbmF2IHJlcG9uYXYganMtcmVwby1uYXYganMtc2lkZW5hdi1jb250YWluZXItcGpheCBjb250YWluZXItbGcgcC1yZXNwb25zaXZlIGQtbm9uZSBkLWxnLWJsb2NrIgorICAgICBpdGVtc2NvcGUKKyAgICAgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0JyZWFkY3J1bWJMaXN0IgorICAgIGFyaWEtbGFiZWw9IlJlcG9zaXRvcnkiCisgICAgIGRhdGEtcGpheD0iI2pzLXJlcG8tcGpheC1jb250YWluZXIiPgorCisgIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgorICAgIDxhIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gc2VsZWN0ZWQgcmVwb25hdi1pdGVtIiBpdGVtcHJvcD0idXJsIiBkYXRhLWhvdGtleT0iZyBjIiBhcmlhLWN1cnJlbnQ9InBhZ2UiIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fc291cmNlIHJlcG9fZG93bmxvYWRzIHJlcG9fY29tbWl0cyByZXBvX3JlbGVhc2VzIHJlcG9fdGFncyByZXBvX2JyYW5jaGVzIHJlcG9fcGFja2FnZXMgL2FwcGxlL2N1cHMiIGhyZWY9Ii9hcHBsZS9jdXBzIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtaW5saW5lIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tY29kZSIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTkuNSAzTDggNC41IDExLjUgOCA4IDExLjUgOS41IDEzIDE0IDggOS41IDN6bS01IDBMMCA4bDQuNSA1TDYgMTEuNSAyLjUgOCA2IDQuNSA0LjUgM3oiLz48L3N2Zz48L2Rpdj4KKyAgICAgIDxzcGFuIGl0ZW1wcm9wPSJuYW1lIj5Db2RlPC9zcGFuPgorICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIxIj4KKzwvYT4gIDwvc3Bhbj4KKworICAgIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgorICAgICAgPGEgaXRlbXByb3A9InVybCIgZGF0YS1ob3RrZXk9ImcgaSIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9faXNzdWVzIHJlcG9fbGFiZWxzIHJlcG9fbWlsZXN0b25lcyAvYXBwbGUvY3Vwcy9pc3N1ZXMiIGhyZWY9Ii9hcHBsZS9jdXBzL2lzc3VlcyI+CisgICAgICAgIDxkaXYgY2xhc3M9ImQtaW5saW5lIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24taXNzdWUtb3BlbmVkIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNyAyLjNjMy4xNCAwIDUuNyAyLjU2IDUuNyA1LjdzLTIuNTYgNS43LTUuNyA1LjdBNS43MSA1LjcxIDAgMDExLjMgOGMwLTMuMTQgMi41Ni01LjcgNS43LTUuN3pNNyAxQzMuMTQgMSAwIDQuMTQgMCA4czMuMTQgNyA3IDcgNy0zLjE0IDctNy0zLjE0LTctNy03em0xIDNINnY1aDJWNHptMCA2SDZ2Mmgydi0yeiIvPjwvc3ZnPjwvZGl2PgorICAgICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+SXNzdWVzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTA8L3NwYW4+CisgICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMiI+Cis8L2E+ICAgIDwvc3Bhbj4KKworICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KKyAgICA8YSBkYXRhLWhvdGtleT0iZyBwIiBkYXRhLXNraXAtcGpheD0idHJ1ZSIgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHVsbHMgY2hlY2tzIC9hcHBsZS9jdXBzL3B1bGxzIiBocmVmPSIvYXBwbGUvY3Vwcy9wdWxscyI+CisgICAgICA8ZGl2IGNsYXNzPSJkLWlubGluZSI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1wdWxsLXJlcXVlc3QiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMSAxMS4yOFY1Yy0uMDMtLjc4LS4zNC0xLjQ3LS45NC0yLjA2QzkuNDYgMi4zNSA4Ljc4IDIuMDMgOCAySDdWMEw0IDNsMyAzVjRoMWMuMjcuMDIuNDguMTEuNjkuMzEuMjEuMi4zLjQyLjMxLjY5djYuMjhBMS45OTMgMS45OTMgMCAwMDEwIDE1YTEuOTkzIDEuOTkzIDAgMDAxLTMuNzJ6bS0xIDIuOTJjLS42NiAwLTEuMi0uNTUtMS4yLTEuMiAwLS42NS41NS0xLjIgMS4yLTEuMi42NSAwIDEuMi41NSAxLjIgMS4yIDAgLjY1LS41NSAxLjItMS4yIDEuMnpNNCAzYzAtMS4xMS0uODktMi0yLTJhMS45OTMgMS45OTMgMCAwMC0xIDMuNzJ2Ni41NkExLjk5MyAxLjk5MyAwIDAwMiAxNWExLjk5MyAxLjk5MyAwIDAwMS0zLjcyVjQuNzJjLjU5LS4zNCAxLS45OCAxLTEuNzJ6bS0uOCAxMGMwIC42Ni0uNTUgMS4yLTEuMiAxLjItLjY1IDAtMS4yLS41NS0xLjItMS4yIDAtLjY1LjU1LTEuMiAxLjItMS4yLjY1IDAgMS4yLjU1IDEuMiAxLjJ6TTIgNC4yQzEuMzQgNC4yLjggMy42NS44IDNjMC0uNjUuNTUtMS4yIDEuMi0xLjIuNjUgMCAxLjIuNTUgMS4yIDEuMiAwIC42NS0uNTUgMS4yLTEuMiAxLjJ6Ii8+PC9zdmc+PC9kaXY+CisgICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+UHVsbCByZXF1ZXN0czwvc3Bhbj4KKyAgICAgIDxzcGFuIGNsYXNzPSJDb3VudGVyIj42PC9zcGFuPgorICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIzIj4KKzwvYT4gIDwvc3Bhbj4KKworCisgICAgPGEgZGF0YS1ob3RrZXk9ImcgYiIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fcHJvamVjdHMgbmV3X3JlcG9fcHJvamVjdCByZXBvX3Byb2plY3QgL2FwcGxlL2N1cHMvcHJvamVjdHMiIGhyZWY9Ii9hcHBsZS9jdXBzL3Byb2plY3RzIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtaW5saW5lIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcHJvamVjdCIgdmlld0JveD0iMCAwIDE1IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNSIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwIDEyaDNWMmgtM3YxMHptLTQtMmgzVjJINnY4em0tNCA0aDNWMkgydjEyem0tMSAxaDEzVjFIMXYxNHpNMTQgMEgxYTEgMSAwIDAwLTEgMXYxNGExIDEgMCAwMDEgMWgxM2ExIDEgMCAwMDEtMVYxYTEgMSAwIDAwLTEtMXoiLz48L3N2Zz48L2Rpdj4KKyAgICAgIFByb2plY3RzCisgICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciIgPjA8L3NwYW4+Cis8L2E+CisKKyAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1ob3RrZXk9ImcgdyIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb193aWtpIC9hcHBsZS9jdXBzL3dpa2kiIGhyZWY9Ii9hcHBsZS9jdXBzL3dpa2kiPgorICAgICAgPGRpdiBjbGFzcz0iZC1pbmxpbmUiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1ib29rIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMyA1aDR2MUgzVjV6bTAgM2g0VjdIM3Yxem0wIDJoNFY5SDN2MXptMTEtNWgtNHYxaDRWNXptMCAyaC00djFoNFY3em0wIDJoLTR2MWg0Vjl6bTItNnY5YzAgLjU1LS40NSAxLTEgMUg5LjVsLTEgMS0xLTFIMmMtLjU1IDAtMS0uNDUtMS0xVjNjMC0uNTUuNDUtMSAxLTFoNS41bDEgMSAxLTFIMTVjLjU1IDAgMSAuNDUgMSAxem0tOCAuNUw3LjUgM0gydjloNlYzLjV6bTctLjVIOS41bC0uNS41VjEyaDZWM3oiLz48L3N2Zz48L2Rpdj4KKyAgICAgIFdpa2kKKzwvYT4KKyAgICA8YSBkYXRhLXNraXAtcGpheD0idHJ1ZSIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InNlY3VyaXR5IGFsZXJ0cyBwb2xpY3kgY29kZV9zY2FubmluZyAvYXBwbGUvY3Vwcy9zZWN1cml0eS9hZHZpc29yaWVzIiBocmVmPSIvYXBwbGUvY3Vwcy9zZWN1cml0eS9hZHZpc29yaWVzIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtaW5saW5lIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tc2hpZWxkIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCAybDctMiA3IDJ2Ni4wMkMxNCAxMi42OSA4LjY5IDE2IDcgMTZjLTEuNjkgMC03LTMuMzEtNy03Ljk4VjJ6bTEgLjc1TDcgMWw2IDEuNzV2NS4yNjhDMTMgMTIuMTA0IDguNDQ5IDE1IDcgMTVjLTEuNDQ5IDAtNi0yLjg5Ni02LTYuOTgyVjIuNzV6bTEgLjc1TDcgMnYxMmMtMS4yMDcgMC01LTIuNDgyLTUtNS45ODVWMy41eiIvPjwvc3ZnPjwvZGl2PgorICAgICAgU2VjdXJpdHkKKzwvYT4KKyAgICA8YSBjbGFzcz0ianMtc2VsZWN0ZWQtbmF2aWdhdGlvbi1pdGVtIHJlcG9uYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19ncmFwaHMgcmVwb19jb250cmlidXRvcnMgZGVwZW5kZW5jeV9ncmFwaCBwdWxzZSBwZW9wbGUgL2FwcGxlL2N1cHMvcHVsc2UiIGhyZWY9Ii9hcHBsZS9jdXBzL3B1bHNlIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtaW5saW5lIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ3JhcGgiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xNiAxNHYxSDBWMGgxdjE0aDE1ek01IDEzSDNWOGgydjV6bTQgMEg3VjNoMnYxMHptNCAwaC0yVjZoMnY3eiIvPjwvc3ZnPjwvZGl2PgorICAgICAgSW5zaWdodHMKKzwvYT4KKworPC9uYXY+CisKKyAgPGRpdiBjbGFzcz0icmVwb25hdi13cmFwcGVyIHJlcG9uYXYtc21hbGwgZC1sZy1ub25lIj4KKyAgPG5hdiBjbGFzcz0icmVwb25hdiBqcy1yZXBvbmF2IHRleHQtY2VudGVyIG5vLXdyYXAiCisgICAgICAgaXRlbXNjb3BlCisgICAgICAgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0JyZWFkY3J1bWJMaXN0Ij4KKworICAgIDxzcGFuIGl0ZW1zY29wZSBpdGVtdHlwZT0iaHR0cDovL3NjaGVtYS5vcmcvTGlzdEl0ZW0iIGl0ZW1wcm9wPSJpdGVtTGlzdEVsZW1lbnQiPgorICAgICAgPGEgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSBzZWxlY3RlZCByZXBvbmF2LWl0ZW0iIGl0ZW1wcm9wPSJ1cmwiIGFyaWEtY3VycmVudD0icGFnZSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb19zb3VyY2UgcmVwb19kb3dubG9hZHMgcmVwb19jb21taXRzIHJlcG9fcmVsZWFzZXMgcmVwb190YWdzIHJlcG9fYnJhbmNoZXMgcmVwb19wYWNrYWdlcyAvYXBwbGUvY3VwcyIgaHJlZj0iL2FwcGxlL2N1cHMiPgorICAgICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+Q29kZTwvc3Bhbj4KKyAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIxIj4KKzwvYT4gICAgPC9zcGFuPgorCisgICAgICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KKyAgICAgICAgPGEgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9faXNzdWVzIHJlcG9fbGFiZWxzIHJlcG9fbWlsZXN0b25lcyAvYXBwbGUvY3Vwcy9pc3N1ZXMiIGhyZWY9Ii9hcHBsZS9jdXBzL2lzc3VlcyI+CisgICAgICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPklzc3Vlczwvc3Bhbj4KKyAgICAgICAgICA8c3BhbiBjbGFzcz0iQ291bnRlciI+MTA8L3NwYW4+CisgICAgICAgICAgPG1ldGEgaXRlbXByb3A9InBvc2l0aW9uIiBjb250ZW50PSIyIj4KKzwvYT4gICAgICA8L3NwYW4+CisKKyAgICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KKyAgICAgIDxhIGl0ZW1wcm9wPSJ1cmwiIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3B1bGxzIGNoZWNrcyAvYXBwbGUvY3Vwcy9wdWxscyIgaHJlZj0iL2FwcGxlL2N1cHMvcHVsbHMiPgorICAgICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+UHVsbCByZXF1ZXN0czwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9IkNvdW50ZXIiPjY8L3NwYW4+CisgICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iMyI+Cis8L2E+ICAgIDwvc3Bhbj4KKworICAgICAgPHNwYW4gaXRlbXNjb3BlIGl0ZW10eXBlPSJodHRwOi8vc2NoZW1hLm9yZy9MaXN0SXRlbSIgaXRlbXByb3A9Iml0ZW1MaXN0RWxlbWVudCI+CisgICAgICAgIDxhIGl0ZW1wcm9wPSJ1cmwiIGNsYXNzPSJqcy1zZWxlY3RlZC1uYXZpZ2F0aW9uLWl0ZW0gcmVwb25hdi1pdGVtIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3Byb2plY3RzIG5ld19yZXBvX3Byb2plY3QgcmVwb19wcm9qZWN0IC9hcHBsZS9jdXBzL3Byb2plY3RzIiBocmVmPSIvYXBwbGUvY3Vwcy9wcm9qZWN0cyI+CisgICAgICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPlByb2plY3RzPC9zcGFuPgorICAgICAgICAgIDxzcGFuIGNsYXNzPSJDb3VudGVyIj4wPC9zcGFuPgorICAgICAgICAgIDxtZXRhIGl0ZW1wcm9wPSJwb3NpdGlvbiIgY29udGVudD0iNCI+Cis8L2E+ICAgICAgPC9zcGFuPgorCisgICAgICA8c3BhbiBpdGVtc2NvcGUgaXRlbXR5cGU9Imh0dHA6Ly9zY2hlbWEub3JnL0xpc3RJdGVtIiBpdGVtcHJvcD0iaXRlbUxpc3RFbGVtZW50Ij4KKyAgICAgICAgPGEgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InJlcG9fd2lraSAvYXBwbGUvY3Vwcy93aWtpIiBocmVmPSIvYXBwbGUvY3Vwcy93aWtpIj4KKyAgICAgICAgICA8c3BhbiBpdGVtcHJvcD0ibmFtZSI+V2lraTwvc3Bhbj4KKyAgICAgICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjUiPgorPC9hPiAgICAgIDwvc3Bhbj4KKworICAgICAgPGEgaXRlbXByb3A9InVybCIgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InNlY3VyaXR5IGFsZXJ0cyBwb2xpY3kgY29kZV9zY2FubmluZyAvYXBwbGUvY3Vwcy9zZWN1cml0eS9hZHZpc29yaWVzIiBocmVmPSIvYXBwbGUvY3Vwcy9zZWN1cml0eS9hZHZpc29yaWVzIj4KKyAgICAgICAgPHNwYW4gaXRlbXByb3A9Im5hbWUiPlNlY3VyaXR5PC9zcGFuPgorICAgICAgICA8bWV0YSBpdGVtcHJvcD0icG9zaXRpb24iIGNvbnRlbnQ9IjYiPgorPC9hPgorICAgICAgPGEgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSByZXBvbmF2LWl0ZW0iIGRhdGEtc2VsZWN0ZWQtbGlua3M9InB1bHNlIC9hcHBsZS9jdXBzL3B1bHNlIiBocmVmPSIvYXBwbGUvY3Vwcy9wdWxzZSI+CisgICAgICAgIFB1bHNlCis8L2E+CisKKyAgPC9uYXY+Cis8L2Rpdj4KKworCisgIDwvZGl2PgorPGRpdiBjbGFzcz0iY29udGFpbmVyLWxnIGNsZWFyZml4IG5ldy1kaXNjdXNzaW9uLXRpbWVsaW5lIGV4cGVyaW1lbnQtcmVwby1uYXYgIHAtcmVzcG9uc2l2ZSI+CisgIDxkaXYgY2xhc3M9InJlcG9zaXRvcnktY29udGVudCAiPgorCisgICAgCisgICAgCisgICAgICAgIDxkaXYgY2xhc3M9InNpZ251cC1wcm9tcHQtYmcgcm91bmRlZC0xIGhpZGUtc20iPgorICAgICAgPGRpdiBjbGFzcz0ic2lnbnVwLXByb21wdCBwLTQgdGV4dC1jZW50ZXIgbWItNCByb3VuZGVkLTEiPgorICAgICAgICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSI+CisgICAgICAgICAgPCEtLSAnImAgLS0+PCEtLSA8L3RleHRhcmVhPjwveG1wPiAtLT48L29wdGlvbj48L2Zvcm0+PGZvcm0gYWN0aW9uPSIvcHJvbXB0X2Rpc21pc3NhbHMvc2lnbnVwIiBhY2NlcHQtY2hhcnNldD0iVVRGLTgiIG1ldGhvZD0icG9zdCI+PGlucHV0IG5hbWU9InV0ZjgiIHR5cGU9ImhpZGRlbiIgdmFsdWU9IiYjeDI3MTM7IiAvPjxpbnB1dCB0eXBlPSJoaWRkZW4iIG5hbWU9Il9tZXRob2QiIHZhbHVlPSJwdXQiIC8+PGlucHV0IHR5cGU9ImhpZGRlbiIgbmFtZT0iYXV0aGVudGljaXR5X3Rva2VuIiB2YWx1ZT0ia0RhWC9zRjNBb1NnLzNtR1RnN053NEVnR294QkN2b3E4YWRsMHJkVzhRZnBVUW5tcE9lcTNFeFNZa1FZUWw2VWZpUkdHUWxheTlIem9WVm5WOXBqYVE9PSIgLz4KKyAgICAgICAgICAgIDxidXR0b24gdHlwZT0ic3VibWl0IiBjbGFzcz0icG9zaXRpb24tYWJzb2x1dGUgdG9wLTAgcmlnaHQtMCBidG4tbGluayBsaW5rLWdyYXkiIGRhdGEtZ2EtY2xpY2s9IihMb2dnZWQgb3V0KSBTaWduIHVwIHByb21wdCwgY2xpY2tlZCBEaXNtaXNzLCB0ZXh0OmRpc21pc3MiPgorICAgICAgICAgICAgICBEaXNtaXNzCisgICAgICAgICAgICA8L2J1dHRvbj4KKzwvZm9ybT4gICAgICAgICAgPGgzIGNsYXNzPSJwdC0yIj5CZSBub3RpZmllZCBvZiBuZXcgcmVsZWFzZXM8L2gzPgorICAgICAgICAgIDxwIGNsYXNzPSJjb2wtOCBteC1hdXRvIj5DcmVhdGUgeW91ciBmcmVlIEdpdEh1YiBhY2NvdW50IHRvZGF5IHRvIHN1YnNjcmliZSB0byB0aGlzIHJlcG9zaXRvcnkgZm9yIG5ldyByZWxlYXNlcyBhbmQgYnVpbGQgc29mdHdhcmUgYWxvbmdzaWRlIDQwIG1pbGxpb24gZGV2ZWxvcGVycy48L3A+CisgICAgICAgICAgPGEgY2xhc3M9ImJ0biBidG4tcHJpbWFyeSIgZGF0YS1oeWRyby1jbGljaz0ieyZxdW90O2V2ZW50X3R5cGUmcXVvdDs6JnF1b3Q7YXV0aGVudGljYXRpb24uY2xpY2smcXVvdDssJnF1b3Q7cGF5bG9hZCZxdW90Ozp7JnF1b3Q7bG9jYXRpb25faW5fcGFnZSZxdW90OzomcXVvdDtyZWxlYXNlcyBzaWdudXAgcHJvbXB0JnF1b3Q7LCZxdW90O3JlcG9zaXRvcnlfaWQmcXVvdDs6bnVsbCwmcXVvdDthdXRoX3R5cGUmcXVvdDs6JnF1b3Q7U0lHTl9VUCZxdW90OywmcXVvdDtjbGllbnRfaWQmcXVvdDs6bnVsbCwmcXVvdDtvcmlnaW5hdGluZ19yZXF1ZXN0X2lkJnF1b3Q7OiZxdW90O0UwQ0I6MjIzNDg6NTA4RDlCOjc0RDdCMDo1REZBNDNDNCZxdW90OywmcXVvdDtvcmlnaW5hdGluZ191cmwmcXVvdDs6JnF1b3Q7aHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcmVsZWFzZXMmcXVvdDssJnF1b3Q7cmVmZXJyZXImcXVvdDs6bnVsbCwmcXVvdDt1c2VyX2lkJnF1b3Q7Om51bGx9fSIgZGF0YS1oeWRyby1jbGljay1obWFjPSJjMmE5Zjg3MGRkZjk5NjhjYzY5NzgyNDY0YzY4MzkxZjllNmFlNzY0NjUwMWQxM2JjZmNjZTY4NDU4YmY4MmU1IiBkYXRhLWdhLWNsaWNrPSIoTG9nZ2VkIG91dCkgU2lnbiB1cCBwcm9tcHQsIGNsaWNrZWQgU2lnbiB1cCwgdGV4dDpzaWduLXVwIiBocmVmPSIvam9pbj9zb3VyY2U9cHJvbXB0LXJlbGVhc2VzIj5TaWduIHVwPC9hPgorICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorCisKKyAgPGRpdiBjbGFzcz0ic3VibmF2Ij4KKyAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1tZC1yb3cgZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1tZC1pdGVtcy1jZW50ZXIiPgorICA8ZGl2IGNsYXNzPSJzdWJuYXYtbGlua3MgZmxvYXQtbGVmdCIgcm9sZT0ibmF2aWdhdGlvbiI+CisgICAgPGEgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSBzZWxlY3RlZCBzdWJuYXYtaXRlbSIgYXJpYS1jdXJyZW50PSJwYWdlIiBkYXRhLXNlbGVjdGVkLWxpbmtzPSJyZXBvX3JlbGVhc2VzIC9hcHBsZS9jdXBzL3JlbGVhc2VzIiBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcyI+UmVsZWFzZXM8L2E+CisgICAgPGEgY2xhc3M9ImpzLXNlbGVjdGVkLW5hdmlnYXRpb24taXRlbSBzdWJuYXYtaXRlbSIgZGF0YS1zZWxlY3RlZC1saW5rcz0icmVwb190YWdzIC9hcHBsZS9jdXBzL3RhZ3MiIGhyZWY9Ii9hcHBsZS9jdXBzL3RhZ3MiPlRhZ3M8L2E+CisgIDwvZGl2PgorPC9kaXY+CisKKworICA8L2Rpdj4KKworICA8ZGl2IGNsYXNzPSJwb3NpdGlvbi1yZWxhdGl2ZSBib3JkZXItdG9wIGNsZWFyZml4Ij4KKworCisKKyAgICAgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1lbnRyeSI+CisgICAgICAgICAgICAKKzxkaXYgY2xhc3M9InJlbGVhc2UgcHQtMiBwdC1tZC0wIHBiLTMgcGItbWQtMCBjbGVhcmZpeCBsYWJlbC1sYXRlc3QiPgorICA8ZGl2IGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBmbGV4LXdyYXAgZmxleC1pdGVtcy1jZW50ZXIgY29sLTEyIGNvbC1tZC0zIGNvbC1sZy0yIHB4LW1kLTMgcGItMSBwYi1tZC00IHB0LW1kLTQgZmxvYXQtbGVmdCB0ZXh0LW1kLXJpZ2h0IHYtYWxpZ24tdG9wIj4KKyAgICA8ZGl2IGNsYXNzPSJmbGV4LWF1dG8gZmxleC1zZWxmLXN0YXJ0Ij4KKyAgICAgICAgPHNwYW4gY2xhc3M9ImZsZXgtc2hyaW5rLTAgTGFiZWwgTGFiZWwtLW91dGxpbmUgbWItbWQtMiBtci0yIG1yLW1kLTAgTGFiZWwtLW91dGxpbmUtZ3JlZW4iPgorICAgICAgICAgICAgPGEgY2xhc3M9ImJvcmRlci0wIExhYmVsLS1vdXRsaW5lLWdyZWVuIiBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9sYXRlc3QiPkxhdGVzdCByZWxlYXNlPC9hPgorICAgICAgICA8L3NwYW4+CisKKworICAgIDwvZGl2PgorCisgICAgICA8dWwgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIG10LTIgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuMy4xIiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4zLjEiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuMy4xPC9zcGFuPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0L2VkMTgxYzI0ZTRiMTMwZDI5ODE3ODVkNDQ0ODhiZWY4Y2ZkYTVmNmQiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICA8Y29kZT5lZDE4MWMyPC9jb2RlPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKyAgICAgICAgCisgICAgICA8L3VsPgorICAgICAgCisKKyAgPC9kaXY+PCEtLSAvLm1ldGEgLS0+CisKKyAgPGRpdiBjbGFzcz0iY29sLTEyIGNvbC1tZC05IGNvbC1sZy0xMCBweC1tZC0zIHB5LW1kLTQgcmVsZWFzZS1tYWluLXNlY3Rpb24gY29tbWl0IG9wZW4gZmxvYXQtbGVmdCI+CisgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1oZWFkZXIiPgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtc3RhcnQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJmMSBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ub3JtYWwiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL3RhZy92Mi4zLjEiPnYyLjMuMTwvYT4KKyAgICAgICAgPC9kaXY+CisKKyAgICAgICAgICA8c3BhbiBjbGFzcz0iZC1tZC1ub25lIGZsZXgtc2hyaW5rLTAgbWwtMiBtdC0yIG10LW1kLTAgTGFiZWwgTGFiZWwtLW91dGxpbmUgTGFiZWwtLW91dGxpbmUtZ3JlZW4iPgorICAgICAgICAgICAgICA8YSBjbGFzcz0iYm9yZGVyLTAgTGFiZWwtLW91dGxpbmUtZ3JlZW4iIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2xhdGVzdCI+TGF0ZXN0IHJlbGVhc2U8L2E+CisgICAgICAgICAgPC9zcGFuPgorCisgICAgICA8L2Rpdj4KKyAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggZC1tZC1ub25lIGZsZXgtaXRlbXMtY2VudGVyIG1iLTEgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjMuMSIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuMy4xIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zLjE8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIGZsZXgtYXV0byI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvZWQxODFjMjRlNGIxMzBkMjk4MTc4NWQ0NDQ4OGJlZjhjZmRhNWY2ZCIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8Y29kZT5lZDE4MWMyPC9jb2RlPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisgICAgICAgICAgCisKKyAgICAgICAgICAKKworICAgICAgICA8L3VsPgorICAgICAgCis8cCBjbGFzcz0iZjUgdGV4dC1ncmF5IG10LTIgbXQtbWQtMSBtYi0yIG1iLW1kLTQiPgorICAgIDxhIGNsYXNzPSJkLWlubGluZS1ibG9jayIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPjxpbWcgY2xhc3M9ImF2YXRhciIgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4ODEwMz9zPTQwJmFtcDt2PTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYWx0PSJAbWljaGFlbHJzd2VldCIgLz48L2E+CisgICAgPGEgY2xhc3M9InRleHQtYm9sZCB0ZXh0LWdyYXkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij5taWNoYWVscnN3ZWV0PC9hPgorICAgIHJlbGVhc2VkIHRoaXMKKyAgICA8cmVsYXRpdmUtdGltZSBkYXRldGltZT0iMjAxOS0xMi0xM1QxNDo1MToxMVoiIGNsYXNzPSJuby13cmFwIj5EZWMgMTMsIDIwMTk8L3JlbGF0aXZlLXRpbWU+Cis8L3A+CisgICAgPC9kaXY+CisKKyAgICAKKworICA8ZGl2IGNsYXNzPSJtYXJrZG93bi1ib2R5Ij4KKyAgICA8cD5DVVBTIDIuMy4xIGlzIGEgZ2VuZXJhbCBidWcgZml4IHJlbGVhc2UsIGluY2x1ZGluZyBhIGZpeCBmb3IgQ1ZFLTIwMTktMjIyOC4gIENoYW5nZXMgaW5jbHVkZTo8L3A+Cis8dWw+Cis8bGk+RG9jdW1lbnRhdGlvbiB1cGRhdGVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MDQ2ODM0NTciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjYxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjEiPiM1NjYxPC9hPiwgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTE0OTczODUzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njc0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY3NC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njc0Ij4jNTY3NDwvYT4sIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjUyMDQ3MDE4OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY4MiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODIvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY4MiI+IzU2ODI8L2E+KTwvbGk+Cis8bGk+Q1ZFLTIwMTktMjIyODogVGhlIDxjb2RlPmlwcFNldFZhbHVldGFnPC9jb2RlPiBmdW5jdGlvbiBkaWQgbm90IHZhbGlkYXRlIHRoZSBkZWZhdWx0PGJyPgorbGFuZ3VhZ2UgdmFsdWUuPC9saT4KKzxsaT5GaXhlZCBhIGNyYXNoIGJ1ZyBpbiB0aGUgd2ViIGludGVyZmFjZSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDczOTI1NjEzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjIxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjIxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjIxIj4jNTYyMTwvYT4pPC9saT4KKzxsaT5UaGUgUFBEIGNhY2hlIGNvZGUgbm93IGxvb2tzIHVwIHBhZ2Ugc2l6ZXMgdXNpbmcgdGhlaXIgZGltZW5zaW9uczxicj4KKyhJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0Nzk4Nzc2ODAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MzMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjMzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MzMiPiM1NjMzPC9hPik8L2xpPgorPGxpPlBQRCBmaWxlcyBjb250YWluaW5nICJjdXN0b20iIG9wdGlvbiBrZXl3b3JkcyBkaWQgbm90IHdvcmsgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ4NjAyNDU5MSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzOSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2MzkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzOSI+IzU2Mzk8L2E+KTwvbGk+Cis8bGk+QWRkZWQgYSB3b3JrYXJvdW5kIGZvciB0aGUgc2NoZWR1bGVyJ3Mgc3lzdGVtZCBzdXBwb3J0IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0ODYwMzQ0MDUiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NDAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjQwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NDAiPiM1NjQwPC9hPik8L2xpPgorPGxpPk9uIFdpbmRvd3MsIFRMUyBjZXJ0aWZpY2F0ZXMgZ2VuZXJhdGVkIG9uIEZlYnJ1YXJ5IDI5IHdvdWxkIGxpa2VseSBmYWlsPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ4NzIxNTk3MiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY0MyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTY0My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTY0MyI+IzU2NDM8L2E+KTwvbGk+Cis8bGk+QWRkZWQgYSBEaWdlc3RPcHRpb25zIGRpcmVjdGl2ZSBmb3IgdGhlIDxjb2RlPmNsaWVudC5jb25mPC9jb2RlPiBmaWxlIHRvIGNvbnRyb2wgd2hldGhlcjxicj4KK01ENS1iYXNlZCBEaWdlc3QgYXV0aGVudGljYXRpb24gaXMgYWxsb3dlZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDg5NzI1ODg3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjQ3IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY0Ny9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjQ3Ij4jNTY0NzwvYT4pPC9saT4KKzxsaT5GaXhlZCBhIGJ1ZyBpbiB0aGUgaGFuZGxpbmcgb2YgcHJpbnRlciByZXNvdXJjZSBmaWxlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDk1MjY5MzQ3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjUyIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY1Mi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjUyIj4jNTY1MjwvYT4pPC9saT4KKzxsaT5UaGUgbGlidXNiLWJhc2VkIFVTQiBiYWNrZW5kIG5vdyByZXBvcnRzIGFuIGVycm9yIHdoZW4gdGhlIGRpc3RyaWJ1dGlvbjxicj4KK3Blcm1pc3Npb25zIGFyZSB3cm9uZyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTAwNTk0NTE3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjU4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY1OC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjU4Ij4jNTY1ODwvYT4pPC9saT4KKzxsaT5BZGRlZCBwYWludCBjYW4gbGFiZWxzIHRvIER5bW8gZHJpdmVyIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MDQ3NTQyNDgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjIiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjYyL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NjIiPiM1NjYyPC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT5pcHBldmVwcmludGVyPC9jb2RlPiBwcm9ncmFtIG5vdyBzdXBwb3J0cyBhdXRoZW50aWNhdGlvbiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTA1ODI5MDk1IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjY1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY2NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjY1Ij4jNTY2NTwvYT4pPC9saT4KKzxsaT5UaGUgPGNvZGU+aXBwZXZlcHJpbnRlcjwvY29kZT4gcHJvZ3JhbSBub3cgYWR2ZXJ0aXNlcyBETlMtU0Qgc2VydmljZXMgb24gdGhlIGNvcnJlY3Q8YnI+CitpbnRlcmZhY2VzLCBhbmQgcHJvdmlkZXMgYSB3YXkgdG8gdHVybiB0aGVtIG9mZiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTA1ODMwMDQ3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjY2IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY2Ni9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjY2Ij4jNTY2NjwvYT4pPC9saT4KKzxsaT5UaGUgPGNvZGU+LS13aXRoLWRidXNkaXI8L2NvZGU+IG9wdGlvbiB3YXMgaWdub3JlZCBieSB0aGUgY29uZmlndXJlIHNjcmlwdCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTA5NjExODM4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjcxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY3MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjcxIj4jNTY3MTwvYT4pPC9saT4KKzxsaT5TYW5kYm94ZWQgYXBwbGljYXRpb25zIHdlcmUgbm90IGFibGUgdG8gZ2V0IHRoZSBkZWZhdWx0IHByaW50ZXIgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjUxOTE3OTYwMCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY3NiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2NzYvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY3NiI+IzU2NzY8L2E+KTwvbGk+Cis8bGk+TG9nIGZpbGUgYWNjZXNzIGNvbnRyb2xzIHdlcmUgbm90IHByZXNlcnZlZCBieSA8Y29kZT5jdXBzY3RsPC9jb2RlPiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTE5MjMwMTQ3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njc3IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81Njc3L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81Njc3Ij4jNTY3NzwvYT4pPC9saT4KKzxsaT5EZWZhdWx0IHByaW50ZXJzIHNldCB3aXRoIDxjb2RlPmxwb3B0aW9uczwvY29kZT4gZGlkIG5vdCB3b3JrIGluIGFsbCBjYXNlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTIwNDE1OTY2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjgxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY4MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjgxIj4jNTY4MTwvYT4sPGJyPgorSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTIyMDY1Mzc2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjgzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY4My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjgzIj4jNTY4MzwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjUyMzIwMDE0MiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY4NCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY4NCI+IzU2ODQ8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYW4gZXJyb3IgaW4gdGhlIGpvYnMgd2ViIGludGVyZmFjZSB0ZW1wbGF0ZSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTI5OTg5Mjg4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njk0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81Njk0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81Njk0Ij4jNTY5NDwvYT4pPC9saT4KKzxsaT5GaXhlZCBhbiBvZmYtYnktb25lIGVycm9yIGluIDxjb2RlPmlwcEVudW1TdHJpbmc8L2NvZGU+IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MzI4NjIzNDEiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2OTUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2OTUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2OTUiPiM1Njk1PC9hPik8L2xpPgorPGxpPkZpeGVkIHNvbWUgbmV3IGNvbXBpbGVyIHdhcm5pbmdzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI1MzQ1NDU0MTkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU3MDAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU3MDAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU3MDAiPiM1NzAwPC9hPik8L2xpPgorPGxpPkZpeGVkIGEgZmV3IGlzc3VlcyB3aXRoIHRoZSBBcHBsZSBSYXN0ZXIgc3VwcG9ydCAocmRhcjovLzU1MzAxMTE0KTwvbGk+Cis8bGk+VGhlIElQUCBiYWNrZW5kIGRpZCBub3QgZGV0ZWN0IGFsbCBjYXNlcyB3aGVyZSBhIGpvYiBzaG91bGQgYmUgcmV0cmllZCB1c2luZzxicj4KK2EgcmFzdGVyIGZvcm1hdCAocmRhcjovLzU2MDIxMDkxKTwvbGk+Cis8bGk+Rml4ZWQgc3BlbGxpbmcgb2YgImZvbGQtYWNjb3JkaW9uIi48L2xpPgorPGxpPkZpeGVkIHRoZSBkZWZhdWx0IGNvbW1vbiBuYW1lIGZvciBUTFMgY2VydGlmaWNhdGVzIHVzZWQgYnkgPGNvZGU+aXBwZXZlcHJpbnRlcjwvY29kZT4uPC9saT4KKzxsaT5GaXhlZCB0aGUgb3B0aW9uIG5hbWVzIHVzZWQgZm9yIElQUCBFdmVyeXdoZXJlIGZpbmlzaGluZyBvcHRpb25zLjwvbGk+Cis8bGk+QWRkZWQgc3VwcG9ydCBmb3IgdGhlIHNlY29uZCByb2xsIG9mIHRoZSBEWU1PIFR3aW4vRFVPIGxhYmVsIHByaW50ZXJzLjwvbGk+Cis8L3VsPgorPHA+RW5qb3khPC9wPgorICA8L2Rpdj4KKworCisgIDxkZXRhaWxzCisgICAgY2xhc3M9ImRldGFpbHMtcmVzZXQgRGV0YWlscy1lbGVtZW50IGJvcmRlci10b3AgcHQtMyBtdC00IG1iLTIgbWItbWQtNCIKKyAgICBvcGVuCisgICAgCisgICAgPgorICAgIDxzdW1tYXJ5PgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1jbG9zZWQiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1yaWdodCIgdmlld0JveD0iMCAwIDYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDE0bDYtNi02LTZ2MTJ6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLW9wZW4iPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1kb3duIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA1bDYgNiA2LTZIMHoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LWJvbGQiPkFzc2V0czwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1sLTEgQ291bnRlciI+NDwvc3Bhbj4KKyAgICAgIDwvZGl2PgorICAgIDwvc3VtbWFyeT4KKyAgICA8ZGl2IGNsYXNzPSJCb3ggQm94LS1jb25kZW5zZWQgbXQtMyI+CisgICAgICA8ZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4zLjEvY3Vwcy0yLjMuMS1zb3VyY2UudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4zLjEtc291cmNlLnRhci5nejwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+Ny43NiBNQjwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjMuMS9jdXBzLTIuMy4xLXNvdXJjZS50YXIuZ3ouc2lnIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4zLjEtc291cmNlLnRhci5nei5zaWc8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjU4NSBCeXRlczwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisKKworICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4zLjEuemlwIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHppcCkKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuMy4xLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh0YXIuZ3opCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kZXRhaWxzPgorCisKKyAgPC9kaXY+PCEtLSAvLnJlbGVhc2UtYm9keSAtLT4KKzwvZGl2PjwhLS0gLy5yZWxlYXNlIC0tPgorCisgICAgICAgIDwvZGl2PgorCisKKworICAgICAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWVudHJ5Ij4KKyAgICAgICAgICAgIAorPGRpdiBjbGFzcz0icmVsZWFzZSBwdC0yIHB0LW1kLTAgcGItMyBwYi1tZC0wIGNsZWFyZml4IGxhYmVsLSI+CisgIDxkaXYgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIGZsZXgtd3JhcCBmbGV4LWl0ZW1zLWNlbnRlciBjb2wtMTIgY29sLW1kLTMgY29sLWxnLTIgcHgtbWQtMyBwYi0xIHBiLW1kLTQgcHQtbWQtNCBmbG9hdC1sZWZ0IHRleHQtbWQtcmlnaHQgdi1hbGlnbi10b3AiPgorICAgIDxkaXYgY2xhc3M9ImZsZXgtYXV0byBmbGV4LXNlbGYtc3RhcnQiPgorCisKKyAgICA8L2Rpdj4KKworICAgICAgPHVsIGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBtdC0yIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjIuMTMiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjIuMTMiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuMi4xMzwvc3Bhbj4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC8wYWQ2YWM1NWRhMjY4NmM2ZmEyNGIwNWJkZTVlOTAzNmZkNGRiNWQxIiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgPGNvZGU+MGFkNmFjNTwvY29kZT4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisgICAgICAgIAorICAgICAgPC91bD4KKyAgICAgIAorCisgIDwvZGl2PjwhLS0gLy5tZXRhIC0tPgorCisgIDxkaXYgY2xhc3M9ImNvbC0xMiBjb2wtbWQtOSBjb2wtbGctMTAgcHgtbWQtMyBweS1tZC00IHJlbGVhc2UtbWFpbi1zZWN0aW9uIGNvbW1pdCBvcGVuIGZsb2F0LWxlZnQiPgorICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtaGVhZGVyIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLXN0YXJ0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iZjEgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtbm9ybWFsIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy90YWcvdjIuMi4xMyI+djIuMi4xMzwvYT4KKyAgICAgICAgPC9kaXY+CisKKworICAgICAgPC9kaXY+CisgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGQtbWQtbm9uZSBmbGV4LWl0ZW1zLWNlbnRlciBtYi0xIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4yLjEzIiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4yLjEzIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4yLjEzPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiBmbGV4LWF1dG8iPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0LzBhZDZhYzU1ZGEyNjg2YzZmYTI0YjA1YmRlNWU5MDM2ZmQ0ZGI1ZDEiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPGNvZGU+MGFkNmFjNTwvY29kZT4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorICAgICAgICAgIAorCisgICAgICAgICAgCisKKyAgICAgICAgPC91bD4KKyAgICAgIAorPHAgY2xhc3M9ImY1IHRleHQtZ3JheSBtdC0yIG10LW1kLTEgbWItMiBtYi1tZC00Ij4KKyAgICA8YSBjbGFzcz0iZC1pbmxpbmUtYmxvY2siIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij48aW1nIGNsYXNzPSJhdmF0YXIiIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODgxMDM/cz00MCZhbXA7dj00IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGFsdD0iQG1pY2hhZWxyc3dlZXQiIC8+PC9hPgorICAgIDxhIGNsYXNzPSJ0ZXh0LWJvbGQgdGV4dC1ncmF5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+bWljaGFlbHJzd2VldDwvYT4KKyAgICByZWxlYXNlZCB0aGlzCisgICAgPHJlbGF0aXZlLXRpbWUgZGF0ZXRpbWU9IjIwMTktMTItMTNUMTQ6NDk6NTVaIiBjbGFzcz0ibm8td3JhcCI+RGVjIDEzLCAyMDE5PC9yZWxhdGl2ZS10aW1lPgorICAgICZtaWRkb3Q7CisgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tcGFyZS92Mi4yLjEzLi4ubWFzdGVyIj4KKyAgICA3OTMgY29tbWl0czwvYT4KKyAgICB0byBtYXN0ZXIKKyAgICBzaW5jZSB0aGlzIHJlbGVhc2UKKzwvcD4KKyAgICA8L2Rpdj4KKworICAgIAorCisgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJvZHkiPgorICAgIDxwPkNVUFMgMi4yLjEzIGlzIHRoZSBsYXN0IGdlbmVyYWwgYnVnIGZpeCByZWxlYXNlIGluIHRoZSAyLjIueCBzZXJpZXMgYW5kIGluY2x1ZGVzPGJyPgorYSBmaXggZm9yIENWRS0yMDE5LTIyMjguICBDaGFuZ2VzIGluY2x1ZGU6PC9wPgorPHVsPgorPGxpPkNWRS0yMDE5LTIyMjg6IFRoZSA8Y29kZT5pcHBTZXRWYWx1ZXRhZzwvY29kZT4gZnVuY3Rpb24gZGlkIG5vdCB2YWxpZGF0ZSB0aGUgZGVmYXVsdDxicj4KK2xhbmd1YWdlIHZhbHVlLjwvbGk+Cis8bGk+QWRkZWQgYSB3b3JrYXJvdW5kIGZvciB0aGUgc2NoZWR1bGVyJ3Mgc3lzdGVtZCBzdXBwb3J0IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0ODYwMzQ0MDUiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NDAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjQwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2NDAiPiM1NjQwPC9hPik8L2xpPgorPGxpPkZpeGVkIHNwZWxsaW5nIG9mICJmb2xkLWFjY29yZGlvbiIuPC9saT4KKzxsaT5GaXhlZCB0aGUgZGVmYXVsdCBjb21tb24gbmFtZSBmb3IgVExTIGNlcnRpZmljYXRlcyB1c2VkIGJ5IDxjb2RlPmlwcHNlcnZlcjwvY29kZT4uPC9saT4KKzxsaT5UaGUgbGlidXNiLWJhc2VkIFVTQiBiYWNrZW5kIG5vdyByZXBvcnRzIGFuIGVycm9yIHdoZW4gdGhlIGRpc3RyaWJ1dGlvbjxicj4KK3Blcm1pc3Npb25zIGFyZSB3cm9uZyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTAwNTk0NTE3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjU4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY1OC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjU4Ij4jNTY1ODwvYT4pPC9saT4KKzxsaT5EZWZhdWx0IHByaW50ZXJzIHNldCB3aXRoIDxjb2RlPmxwb3B0aW9uczwvY29kZT4gZGlkIG5vdCB3b3JrIGluIGFsbCBjYXNlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTIwNDE1OTY2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjgxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY4MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjgxIj4jNTY4MTwvYT4sPGJyPgorSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTIyMDY1Mzc2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjgzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTY4My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjgzIj4jNTY4MzwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjUyMzIwMDE0MiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY4NCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2ODQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTY4NCI+IzU2ODQ8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYW4gb2ZmLWJ5LW9uZSBlcnJvciBpbiA8Y29kZT5pcHBFbnVtU3RyaW5nPC9jb2RlPiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTMyODYyMzQxIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Njk1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81Njk1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81Njk1Ij4jNTY5NTwvYT4pPC9saT4KKzxsaT5GaXhlZCBzb21lIG5ldyBjb21waWxlciB3YXJuaW5ncyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNTM0NTQ1NDE5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NzAwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NzAwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NzAwIj4jNTcwMDwvYT4pPC9saT4KKzxsaT5GaXhlZCBhIGZldyBpc3N1ZXMgd2l0aCB0aGUgQXBwbGUgUmFzdGVyIHN1cHBvcnQgKHJkYXI6Ly81NTMwMTExNCk8L2xpPgorPGxpPlRoZSBJUFAgYmFja2VuZCBkaWQgbm90IGRldGVjdCBhbGwgY2FzZXMgd2hlcmUgYSBqb2Igc2hvdWxkIGJlIHJldHJpZWQgdXNpbmc8YnI+CithIHJhc3RlciBmb3JtYXQgKHJkYXI6Ly81NjAyMTA5MSk8L2xpPgorPC91bD4KKzxwPkVuam95ITwvcD4KKyAgPC9kaXY+CisKKworICA8ZGV0YWlscworICAgIGNsYXNzPSJkZXRhaWxzLXJlc2V0IERldGFpbHMtZWxlbWVudCBib3JkZXItdG9wIHB0LTMgbXQtNCBtYi0yIG1iLW1kLTQiCisgICAgCisgICAgCisgICAgPgorICAgIDxzdW1tYXJ5PgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1jbG9zZWQiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1yaWdodCIgdmlld0JveD0iMCAwIDYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDE0bDYtNi02LTZ2MTJ6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLW9wZW4iPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1kb3duIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA1bDYgNiA2LTZIMHoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LWJvbGQiPkFzc2V0czwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1sLTEgQ291bnRlciI+NDwvc3Bhbj4KKyAgICAgIDwvZGl2PgorICAgIDwvc3VtbWFyeT4KKyAgICA8ZGl2IGNsYXNzPSJCb3ggQm94LS1jb25kZW5zZWQgbXQtMyI+CisgICAgICA8ZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4yLjEzL2N1cHMtMi4yLjEzLXNvdXJjZS50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjIuMTMtc291cmNlLnRhci5nejwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+OS45MyBNQjwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjIuMTMvY3Vwcy0yLjIuMTMtc291cmNlLnRhci5nei5zaWciIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjIuMTMtc291cmNlLnRhci5nei5zaWc8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjU4NSBCeXRlczwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisKKworICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4yLjEzLnppcCIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh6aXApCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjIuMTMudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHRhci5neikKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2RldGFpbHM+CisKKworICA8L2Rpdj48IS0tIC8ucmVsZWFzZS1ib2R5IC0tPgorPC9kaXY+PCEtLSAvLnJlbGVhc2UgLS0+CisKKyAgICAgICAgPC9kaXY+CisKKworCisgICAgICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtZW50cnkiPgorICAgICAgICAgICAgCis8ZGl2IGNsYXNzPSJyZWxlYXNlIHB0LTIgcHQtbWQtMCBwYi0zIHBiLW1kLTAgY2xlYXJmaXggbGFiZWwtIj4KKyAgPGRpdiBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgZmxleC13cmFwIGZsZXgtaXRlbXMtY2VudGVyIGNvbC0xMiBjb2wtbWQtMyBjb2wtbGctMiBweC1tZC0zIHBiLTEgcGItbWQtNCBwdC1tZC00IGZsb2F0LWxlZnQgdGV4dC1tZC1yaWdodCB2LWFsaWduLXRvcCI+CisgICAgPGRpdiBjbGFzcz0iZmxleC1hdXRvIGZsZXgtc2VsZi1zdGFydCI+CisKKworICAgIDwvZGl2PgorCisgICAgICA8dWwgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIG10LTIgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuMy4wIiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4zLjAiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuMy4wPC9zcGFuPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0L2VlNmJlOWNkN2U4NjNhYmYzNmI5YjEzMWZjMzc5ZDk2NzQxNGFhMmUiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICA8Y29kZT5lZTZiZTljPC9jb2RlPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKyAgICAgICAgCisgICAgICA8L3VsPgorICAgICAgCisKKyAgPC9kaXY+PCEtLSAvLm1ldGEgLS0+CisKKyAgPGRpdiBjbGFzcz0iY29sLTEyIGNvbC1tZC05IGNvbC1sZy0xMCBweC1tZC0zIHB5LW1kLTQgcmVsZWFzZS1tYWluLXNlY3Rpb24gY29tbWl0IG9wZW4gZmxvYXQtbGVmdCI+CisgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1oZWFkZXIiPgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtc3RhcnQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJmMSBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ub3JtYWwiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL3RhZy92Mi4zLjAiPnYyLjMuMDwvYT4KKyAgICAgICAgPC9kaXY+CisKKworICAgICAgPC9kaXY+CisgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGQtbWQtbm9uZSBmbGV4LWl0ZW1zLWNlbnRlciBtYi0xIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4zLjAiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjMuMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10YWciIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjczIDEuNzNDNy4yNiAxLjI2IDYuNjIgMSA1Ljk2IDFIMy41QzIuMTMgMSAxIDIuMTMgMSAzLjV2Mi40N2MwIC42Ni4yNyAxLjMuNzMgMS43N2w2LjA2IDYuMDZjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDQuNTktNC41OWEuOTk2Ljk5NiAwIDAwMC0xLjQxTDcuNzMgMS43M3pNMi4zOCA3LjA5Yy0uMzEtLjMtLjQ3LS43LS40Ny0xLjEzVjMuNWMwLS44OC43Mi0xLjU5IDEuNTktMS41OWgyLjQ3Yy40MiAwIC44My4xNiAxLjEzLjQ3bDYuMTQgNi4xMy00LjczIDQuNzMtNi4xMy02LjE1ek0zLjAxIDNoMnYySDNWM2guMDF6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuMy4wPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiBmbGV4LWF1dG8iPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0L2VlNmJlOWNkN2U4NjNhYmYzNmI5YjEzMWZjMzc5ZDk2NzQxNGFhMmUiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPGNvZGU+ZWU2YmU5YzwvY29kZT4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorICAgICAgICAgIAorCisgICAgICAgICAgCisKKyAgICAgICAgPC91bD4KKyAgICAgIAorPHAgY2xhc3M9ImY1IHRleHQtZ3JheSBtdC0yIG10LW1kLTEgbWItMiBtYi1tZC00Ij4KKyAgICA8YSBjbGFzcz0iZC1pbmxpbmUtYmxvY2siIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij48aW1nIGNsYXNzPSJhdmF0YXIiIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODgxMDM/cz00MCZhbXA7dj00IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGFsdD0iQG1pY2hhZWxyc3dlZXQiIC8+PC9hPgorICAgIDxhIGNsYXNzPSJ0ZXh0LWJvbGQgdGV4dC1ncmF5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+bWljaGFlbHJzd2VldDwvYT4KKyAgICByZWxlYXNlZCB0aGlzCisgICAgPHJlbGF0aXZlLXRpbWUgZGF0ZXRpbWU9IjIwMTktMDgtMjNUMTg6MTc6MjFaIiBjbGFzcz0ibm8td3JhcCI+QXVnIDIzLCAyMDE5PC9yZWxhdGl2ZS10aW1lPgorICAgICZtaWRkb3Q7CisgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tcGFyZS92Mi4zLjAuLi5tYXN0ZXIiPgorICAgIDY1IGNvbW1pdHM8L2E+CisgICAgdG8gbWFzdGVyCisgICAgc2luY2UgdGhpcyByZWxlYXNlCis8L3A+CisgICAgPC9kaXY+CisKKyAgICAKKworICA8ZGl2IGNsYXNzPSJtYXJrZG93bi1ib2R5Ij4KKyAgICA8cD5DVVBTIDIuMy4wIGlzIG5vdyBhdmFpbGFibGUgZm9yIGRvd25sb2FkLCB3aGljaCBhZG9wdHMgdGhlIG5ldyBDVVBTIGxpY2Vuc2UsIGFkZHMgc3VwcG9ydCBmb3IgSVBQIHByZXNldHMgYW5kIGZpbmlzaGluZyB0ZW1wbGF0ZXMsIGZpeGVzIGEgbnVtYmVyIG9mIGJ1Z3MgYW5kICJwb2xpc2giIGlzc3VlcywgYW5kIGluY2x1ZGVzIHRoZSBuZXcgaXBwZXZlcHJpbnRlciB1dGlsaXR5LiBDaGFuZ2VzIGluY2x1ZGU6PC9wPgorPHVsPgorPGxpPkNWRS0yMDE5LTg2OTYgYW5kIENWRS0yMDE5LTg2NzU6IEZpeGVkIFNOTVAgYnVmZmVyIG92ZXJmbG93cyAocmRhcjovLzUxNjg1MjUxKTwvbGk+Cis8bGk+QWRkZWQgYSBHUEwyL0xHUEwyIGV4Y2VwdGlvbiB0byB0aGUgbmV3IENVUFMgbGljZW5zZSB0ZXJtcy48L2xpPgorPGxpPkRvY3VtZW50YXRpb24gdXBkYXRlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDU5NTk0NjQ0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjA0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTYwNC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjA0Ij4jNTYwNDwvYT4pPC9saT4KKzxsaT5Mb2NhbGl6YXRpb24gdXBkYXRlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDgzNjQxODk4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjM3IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjM3L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjM3Ij4jNTYzNzwvYT4pPC9saT4KKzxsaT5GaXhlZCBhIGJ1ZyBpbiB0aGUgc2NoZWR1bGVyIGpvYiBjbGVhbnVwIGNvZGUgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ1MDI3OTIxNiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU4OCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTU4OC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTU4OCI+IzU1ODg8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYnVpbGRzIHdoZW4gdGhlcmUgaXMgbm8gVExTIGxpYnJhcnkgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ1MTU3ODE4NiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTU5MC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTU5MCI+IzU1OTA8L2E+KTwvbGk+Cis8bGk+RWxpbWluYXRlZCBzb21lIG5ldyBHQ0MgY29tcGlsZXIgd2FybmluZ3MgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ1MzMyODc0NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5MSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTU5MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTU5MSI+IzU1OTE8L2E+KTwvbGk+Cis8bGk+UmVtb3ZlZCBkZWFkIGNvZGUgZnJvbSB0aGUgc2NoZWR1bGVyIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NTMzMjk4NzEiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1OTMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU1OTMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU1OTMiPiM1NTkzPC9hPik8L2xpPgorPGxpPiJtYWtlIiBmYWlsZWQgd2l0aCBHWklQIG9wdGlvbnMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ1NTAxNzkzNCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5NSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1OTUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5NSI+IzU1OTU8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgcG90ZW50aWFsIGV4Y2VzcyBsb2dnaW5nIGZyb20gdGhlIHNjaGVkdWxlciB3aGVuIHJlbW92aW5nIGpvYiBmaWxlczxicj4KKyhJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NTYyODQ0MDYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1OTciIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTk3L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1OTciPiM1NTk3PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgTlVMTCBwb2ludGVyIGRlcmVmZXJlbmNlIGJ1ZyBpbiA8Y29kZT5odHRwR2V0U3ViRmllbGQyPC9jb2RlPiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDU2NTM0MTM3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTk4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5OC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTk4Ij4jNTU5ODwvYT4pPC9saT4KKzxsaT5BZGRlZCBGSVBTLTE0MCB3b3JrYXJvdW5kcyBmb3IgR05VIFRMUyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDU4MDE1OTI5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjAxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTYwMS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjAxIj4jNTYwMTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3NDExNzIzMSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYyMiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTYyMi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTYyMiI+IzU2MjI8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBubyBsb25nZXIgcHJvdmlkZXMgYSBkZWZhdWx0IHZhbHVlIGZvciB0aGUgZGVzY3JpcHRpb248YnI+CisoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDU5MDc0NzMzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjAzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTYwMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjAzIj4jNTYwMzwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIG5vdyBsb2dzIGpvYnMgaGVsZCBmb3IgYXV0aGVudGljYXRpb24gdXNpbmcgdGhlIGVycm9yIGxldmVsIHNvPGJyPgoraXQgaXMgY2xlYXIgd2hhdCBoYXBwZW5lZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDU5NTk0NjQ0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjA0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTYwNC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjA0Ij4jNTYwNDwvYT4pPC9saT4KKzxsaT5UaGUgPGNvZGU+bHBhZG1pbjwvY29kZT4gY29tbWFuZCBkaWQgbm90IGFsd2F5cyB1cGRhdGUgdGhlIFBQRCBmaWxlIGZvciBjaGFuZ2VzIHRvIHRoZTxicj4KKzxjb2RlPmN1cHNJUFBTdXBwbGllczwvY29kZT4gYW5kIDxjb2RlPmN1cHNTTk1QU3VwcGxpZXM8L2NvZGU+IGtleXdvcmRzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NjU3MjcxOTUiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MTAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MTAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MTAiPiM1NjEwPC9hPik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgbm93IHVzZXMgYm90aCB0aGUgZ3JvdXAncyBtZW1iZXJzaGlwIGxpc3QgYXMgd2VsbCBhcyB0aGU8YnI+Cit2YXJpb3VzIE9TLXNwZWNpZmljIG1lbWJlcnNoaXAgZnVuY3Rpb25zIHRvIGRldGVybWluZSB3aGV0aGVyIGEgdXNlciBiZWxvbmdzPGJyPgordG8gYSBuYW1lZCBncm91cCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDY4NDYzNjc4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjEzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjEzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjEzIj4jNTYxMzwvYT4pPC9saT4KKzxsaT5BZGRlZCBVU0IgcXVpcmtzIHJ1bGUgZm9yIEhQIExhc2VySmV0IDEwMTUgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3MDY1OTMxMyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYxNyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2MTcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYxNyI+IzU2MTc8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgc29tZSBQUEQgcGFyc2VyIGlzc3VlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDc0MzE0MDc0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjIzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjIzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjIzIj4jNTYyMzwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3NDMxNzA5MiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYyNCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTYyNC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTYyNCI+IzU2MjQ8L2E+KTwvbGk+Cis8bGk+VGhlIElQUCBwYXJzZXIgbm8gbG9uZ2VyIGFsbG93cyBpbnZhbGlkIG1lbWJlciBhdHRyaWJ1dGVzIGluIGNvbGxlY3Rpb25zPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3Nzk3OTg4NiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzMCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2MzAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYzMCI+IzU2MzA8L2E+KTwvbGk+Cis8bGk+VGhlIGNvbmZpZ3VyZSBzY3JpcHQgbm93IHRyZWF0cyB0aGUgIndoZWVsIiBncm91cCBhcyBhIHBvdGVudGlhbCBzeXN0ZW08YnI+Citncm91cCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDg0NTM1MTMwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjM4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjM4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjM4Ij4jNTYzODwvYT4pPC9saT4KKzxsaT5GaXhlZCBhIFVTQiBwcmludGluZyBpc3N1ZSBvbiBtYWNPUyAocmRhcjovLzMxNDMzOTMxKTwvbGk+Cis8bGk+Rml4ZWQgSVBQIGJ1ZmZlciBvdmVyZmxvdyAocmRhcjovLzUwMDM1NDExKTwvbGk+Cis8bGk+Rml4ZWQgbWVtb3J5IGRpc2Nsb3N1cmUgaXNzdWUgaW4gdGhlIHNjaGVkdWxlciAocmRhcjovLzUxMzczODUzKTwvbGk+Cis8bGk+Rml4ZWQgRG9TIGlzc3VlcyBpbiB0aGUgc2NoZWR1bGVyIChyZGFyOi8vNTEzNzM5MjkpPC9saT4KKzxsaT5GaXhlZCBhbiBpc3N1ZSB3aXRoIHVuc3VwcG9ydGVkICJzaWRlcyIgdmFsdWVzIGluIHRoZSBJUFAgYmFja2VuZDxicj4KKyhyZGFyOi8vNTE3NzUzMjIpPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIHdvdWxkIHJlc3RhcnQgY29udGludW91c2x5IHdoZW4gaWRsZSBhbmQgcHJpbnRlcnMgd2VyZSBub3Q8YnI+CitzaGFyZWQgKHJkYXI6Ly81MjU2MTE5OSk8L2xpPgorPGxpPkZpeGVkIGFuIGlzc3VlIHdpdGggPGNvZGU+RVhQRUNUICFuYW1lIFdJVEgtVkFMVUUgLi4uPC9jb2RlPiB0ZXN0cy48L2xpPgorPGxpPkZpeGVkIGEgY29tbWFuZCBvcmRlcmluZyBpc3N1ZSBpbiB0aGUgWmVicmEgWlBMIGRyaXZlci48L2xpPgorPGxpPkZpeGVkIGEgbWVtb3J5IGxlYWsgaW4gPGNvZGU+cHBkT3BlbjwvY29kZT4uPC9saT4KKzwvdWw+Cis8cD5FbmpveSE8L3A+CisgIDwvZGl2PgorCisKKyAgPGRldGFpbHMKKyAgICBjbGFzcz0iZGV0YWlscy1yZXNldCBEZXRhaWxzLWVsZW1lbnQgYm9yZGVyLXRvcCBwdC0zIG10LTQgbWItMiBtYi1tZC00IgorICAgIAorICAgIAorICAgID4KKyAgICA8c3VtbWFyeT4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tY2xvc2VkIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtcmlnaHQiIHZpZXdCb3g9IjAgMCA2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCAxNGw2LTYtNi02djEyeiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1vcGVuIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtZG93biIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNWw2IDYgNi02SDB6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1ib2xkIj5Bc3NldHM8L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtbC0xIENvdW50ZXIiPjQ8L3NwYW4+CisgICAgICA8L2Rpdj4KKyAgICA8L3N1bW1hcnk+CisgICAgPGRpdiBjbGFzcz0iQm94IEJveC0tY29uZGVuc2VkIG10LTMiPgorICAgICAgPGRpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuMy4wL2N1cHMtMi4zLjAtc291cmNlLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuMy4wLXNvdXJjZS50YXIuZ3o8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjcuNzUgTUI8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4zLjAvY3Vwcy0yLjMuMC1zb3VyY2UudGFyLmd6LnNpZyIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuMy4wLXNvdXJjZS50YXIuZ3ouc2lnPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj41ODUgQnl0ZXM8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorCisKKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuMy4wLnppcCIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh6aXApCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjMuMC50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAodGFyLmd6KQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGV0YWlscz4KKworCisgIDwvZGl2PjwhLS0gLy5yZWxlYXNlLWJvZHkgLS0+Cis8L2Rpdj48IS0tIC8ucmVsZWFzZSAtLT4KKworICAgICAgICA8L2Rpdj4KKworCisKKyAgICAgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1lbnRyeSI+CisgICAgICAgICAgICAKKzxkaXYgY2xhc3M9InJlbGVhc2UgcHQtMiBwdC1tZC0wIHBiLTMgcGItbWQtMCBjbGVhcmZpeCBsYWJlbC0iPgorICA8ZGl2IGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBmbGV4LXdyYXAgZmxleC1pdGVtcy1jZW50ZXIgY29sLTEyIGNvbC1tZC0zIGNvbC1sZy0yIHB4LW1kLTMgcGItMSBwYi1tZC00IHB0LW1kLTQgZmxvYXQtbGVmdCB0ZXh0LW1kLXJpZ2h0IHYtYWxpZ24tdG9wIj4KKyAgICA8ZGl2IGNsYXNzPSJmbGV4LWF1dG8gZmxleC1zZWxmLXN0YXJ0Ij4KKworCisgICAgPC9kaXY+CisKKyAgICAgIDx1bCBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgbXQtMiBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4yLjEyIiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4yLjEyIj4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10YWciIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjczIDEuNzNDNy4yNiAxLjI2IDYuNjIgMSA1Ljk2IDFIMy41QzIuMTMgMSAxIDIuMTMgMSAzLjV2Mi40N2MwIC42Ni4yNyAxLjMuNzMgMS43N2w2LjA2IDYuMDZjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDQuNTktNC41OWEuOTk2Ljk5NiAwIDAwMC0xLjQxTDcuNzMgMS43M3pNMi4zOCA3LjA5Yy0uMzEtLjMtLjQ3LS43LS40Ny0xLjEzVjMuNWMwLS44OC43Mi0xLjU5IDEuNTktMS41OWgyLjQ3Yy40MiAwIC44My4xNiAxLjEzLjQ3bDYuMTQgNi4xMy00LjczIDQuNzMtNi4xMy02LjE1ek0zLjAxIDNoMnYySDNWM2guMDF6Ii8+PC9zdmc+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjIuMTI8L3NwYW4+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvYzhjYjY0MDBlMzE3NjMzZjY2Y2RjODc4ODQ5MTVkNTQ3MTBiNTNhMCIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxjb2RlPmM4Y2I2NDA8L2NvZGU+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorICAgICAgICAKKyAgICAgIDwvdWw+CisgICAgICAKKworICA8L2Rpdj48IS0tIC8ubWV0YSAtLT4KKworICA8ZGl2IGNsYXNzPSJjb2wtMTIgY29sLW1kLTkgY29sLWxnLTEwIHB4LW1kLTMgcHktbWQtNCByZWxlYXNlLW1haW4tc2VjdGlvbiBjb21taXQgb3BlbiBmbG9hdC1sZWZ0Ij4KKyAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWhlYWRlciI+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1zdGFydCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImYxIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LW5vcm1hbCI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvdGFnL3YyLjIuMTIiPnYyLjIuMTI8L2E+CisgICAgICAgIDwvZGl2PgorCisKKyAgICAgIDwvZGl2PgorICAgICAgICA8dWwgY2xhc3M9ImQtZmxleCBkLW1kLW5vbmUgZmxleC1pdGVtcy1jZW50ZXIgbWItMSBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuMi4xMiIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuMi4xMiI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10YWciIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjczIDEuNzNDNy4yNiAxLjI2IDYuNjIgMSA1Ljk2IDFIMy41QzIuMTMgMSAxIDIuMTMgMSAzLjV2Mi40N2MwIC42Ni4yNyAxLjMuNzMgMS43N2w2LjA2IDYuMDZjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDQuNTktNC41OWEuOTk2Ljk5NiAwIDAwMC0xLjQxTDcuNzMgMS43M3pNMi4zOCA3LjA5Yy0uMzEtLjMtLjQ3LS43LS40Ny0xLjEzVjMuNWMwLS44OC43Mi0xLjU5IDEuNTktMS41OWgyLjQ3Yy40MiAwIC44My4xNiAxLjEzLjQ3bDYuMTQgNi4xMy00LjczIDQuNzMtNi4xMy02LjE1ek0zLjAxIDNoMnYySDNWM2guMDF6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuMi4xMjwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIgZmxleC1hdXRvIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC9jOGNiNjQwMGUzMTc2MzNmNjZjZGM4Nzg4NDkxNWQ1NDcxMGI1M2EwIiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxjb2RlPmM4Y2I2NDA8L2NvZGU+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKyAgICAgICAgICAKKworICAgICAgICAgIAorCisgICAgICAgIDwvdWw+CisgICAgICAKKzxwIGNsYXNzPSJmNSB0ZXh0LWdyYXkgbXQtMiBtdC1tZC0xIG1iLTIgbWItbWQtNCI+CisgICAgPGEgY2xhc3M9ImQtaW5saW5lLWJsb2NrIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+PGltZyBjbGFzcz0iYXZhdGFyIiBzcmM9Imh0dHBzOi8vYXZhdGFyczMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDg4MTAzP3M9NDAmYW1wO3Y9NCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBhbHQ9IkBtaWNoYWVscnN3ZWV0IiAvPjwvYT4KKyAgICA8YSBjbGFzcz0idGV4dC1ib2xkIHRleHQtZ3JheSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPm1pY2hhZWxyc3dlZXQ8L2E+CisgICAgcmVsZWFzZWQgdGhpcworICAgIDxyZWxhdGl2ZS10aW1lIGRhdGV0aW1lPSIyMDE5LTA4LTE1VDIyOjUyOjQ0WiIgY2xhc3M9Im5vLXdyYXAiPkF1ZyAxNSwgMjAxOTwvcmVsYXRpdmUtdGltZT4KKyAgICAmbWlkZG90OworICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbXBhcmUvdjIuMi4xMi4uLm1hc3RlciI+CisgICAgNzkzIGNvbW1pdHM8L2E+CisgICAgdG8gbWFzdGVyCisgICAgc2luY2UgdGhpcyByZWxlYXNlCis8L3A+CisgICAgPC9kaXY+CisKKyAgICAKKworICA8ZGl2IGNsYXNzPSJtYXJrZG93bi1ib2R5Ij4KKyAgICA8cD5DVVBTIDIuMi4xMiBpcyBub3cgYXZhaWxhYmxlIGFuZCBpbmNsdWRlcyBzZWN1cml0eSwgY29tcGF0aWJpbGl0eSwgYW5kIGdlbmVyYWwgYnVnIGZpeGVzLiBDaGFuZ2VzIGluY2x1ZGU6PC9wPgorPHVsPgorPGxpPkNWRS0yMDE5LTg2OTYgYW5kIENWRS0yMDE5LTg2NzU6IEZpeGVkIFNOTVAgYnVmZmVyIG92ZXJmbG93cyAocmRhcjovLzUxNjg1MjUxKTwvbGk+Cis8bGk+VGhlIDxjb2RlPmN1cHNjdGw8L2NvZGU+IGNvbW1hbmQgbm93IHByZXZlbnRzIHNldHRpbmcgImN1cHMtZmlsZXMuY29uZiIgZGlyZWN0aXZlczxicj4KKyhJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTM4MjkyNTQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTMwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzAiPiM1NTMwPC9hPik8L2xpPgorPGxpPlVwZGF0ZWQgdGhlIHN5c3RlbWQgc2VydmljZSBmaWxlIGZvciBjdXBzZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDI2NDc5MDQxIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTUxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTUxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTUxIj4jNTU1MTwvYT4pPC9saT4KKzxsaT5UaGUgPGNvZGU+Y3Vwc0NoZWNrRGVzdFN1cHBvcnRlZDwvY29kZT4gZnVuY3Rpb24gZGlkIG5vdCBjaGVjayBvY3RldFN0cmluZyB2YWx1ZXM8YnI+Citjb3JyZWN0bHkgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQyOTgyMDg2MiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU1NyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTU1Ny9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTU1NyI+IzU1NTc8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBkaWQgbm90IGVuY29kZSBvY3RldFN0cmluZyB2YWx1ZXMgbGlrZSAiam9iLXBhc3N3b3JkIiBjb3JyZWN0bHk8YnI+Citmb3IgdGhlIHByaW50IGZpbHRlcnMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQyOTgyNzEyNyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU1OCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTU1OC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTU1OCI+IzU1NTg8L2E+KTwvbGk+Cis8bGk+UmVzdG9yZWQgbWluaW1hbCBzdXBwb3J0IGZvciB0aGUgPGNvZGU+RW11bGF0b3JzPC9jb2RlPiBrZXl3b3JkIGluIFBQRCBmaWxlcyB0byBhbGxvdzxicj4KK29sZCBTYW1zdW5nIHByaW50ZXIgZHJpdmVycyB0byBjb250aW51ZSB0byB3b3JrIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MzIyMTQ1NjkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NjIiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTYyL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NjIiPiM1NTYyPC9hPik8L2xpPgorPGxpPlRpbWVkIG91dCBqb2Igc3VibWlzc2lvbiBub3cgeWllbGRzIGFuIGVycm9yIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MzczOTA1NjQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NzAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTcwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NzAiPiM1NTcwPC9hPik8L2xpPgorPGxpPlRoZSBmb290ZXIgaW4gdGhlIHdlYiBpbnRlcmZhY2UgY292ZXJlZCBzb21lIGNvbnRlbnQgb24gc21hbGwgZGlzcGxheXM8YnI+CisoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDQwMzY1ODAxIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTc0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU3NC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTc0Ij4jNTU3NDwvYT4pPC9saT4KKzxsaT5UaGUgbGlidXNiLWJhc2VkIFVTQiBiYWNrZW5kIG5vdyBlbmZvcmNlcyByZWFkIGxpbWl0cywgaW1wcm92aW5nIHByaW50IHNwZWVkPGJyPgoraW4gbWFueSBjYXNlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDQ1MzE1MDU1IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTgzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU4My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTgzIj4jNTU4MzwvYT4pPC9saT4KKzxsaT5GaXhlZCBzb21lIGNvbXBhdGliaWxpdHkgaXNzdWVzIHdpdGggb2xkIHJlbGVhc2VzIG9mIENVUFMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ0OTM2MTA2OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU4NyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1ODcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU4NyI+IzU1ODc8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYSBidWcgaW4gdGhlIHNjaGVkdWxlciBqb2IgY2xlYW51cCBjb2RlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NTAyNzkyMTYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1ODgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU1ODgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU1ODgiPiM1NTg4PC9hPik8L2xpPgorPGxpPiJtYWtlIiBmYWlsZWQgd2l0aCBHWklQIG9wdGlvbnMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ1NTAxNzkzNCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5NSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1OTUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU5NSI+IzU1OTU8L2E+KTwvbGk+Cis8bGk+QWRkZWQgRklQUy0xNDAgd29ya2Fyb3VuZHMgZm9yIEdOVSBUTFMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ1ODAxNTkyOSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYwMSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYwMSI+IzU2MDE8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NzQxMTcyMzEiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MjIiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MjIvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MjIiPiM1NjIyPC9hPik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgbm8gbG9uZ2VyIHByb3ZpZGVzIGEgZGVmYXVsdCB2YWx1ZSBmb3IgdGhlIGRlc2NyaXB0aW9uPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ1OTA3NDczMyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYwMyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU2MDMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYwMyI+IzU2MDM8L2E+KTwvbGk+Cis8bGk+VGhlIDxjb2RlPmxwYWRtaW48L2NvZGU+IGNvbW1hbmQgZGlkIG5vdCBhbHdheXMgdXBkYXRlIHRoZSBQUEQgZmlsZSBmb3IgY2hhbmdlcyB0byB0aGU8YnI+Cis8Y29kZT5jdXBzSVBQU3VwcGxpZXM8L2NvZGU+IGFuZCA8Y29kZT5jdXBzU05NUFN1cHBsaWVzPC9jb2RlPiBrZXl3b3JkcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDY1NzI3MTk1IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NjEwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NjEwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NjEwIj4jNTYxMDwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIG5vdyB1c2VzIGJvdGggdGhlIGdyb3VwJ3MgbWVtYmVyc2hpcCBsaXN0IGFzIHdlbGwgYXMgdGhlPGJyPgordmFyaW91cyBPUy1zcGVjaWZpYyBtZW1iZXJzaGlwIGZ1bmN0aW9ucyB0byBkZXRlcm1pbmUgd2hldGhlciBhIHVzZXIgYmVsb25nczxicj4KK3RvIGEgbmFtZWQgZ3JvdXAgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ2ODQ2MzY3OCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYxMyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTYxMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTYxMyI+IzU2MTM8L2E+KTwvbGk+Cis8bGk+QWRkZWQgVVNCIHF1aXJrcyBydWxlIGZvciBIUCBMYXNlckpldCAxMDE1IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NzA2NTkzMTMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MTciIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjE3L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MTciPiM1NjE3PC9hPik8L2xpPgorPGxpPkZpeGVkIHNvbWUgUFBEIHBhcnNlciBpc3N1ZXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ3NDMxNDA3NCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTYyMyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTYyMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTYyMyI+IzU2MjM8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0NzQzMTcwOTIiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MjQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU2MjQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU2MjQiPiM1NjI0PC9hPik8L2xpPgorPGxpPlRoZSBJUFAgcGFyc2VyIG5vIGxvbmdlciBhbGxvd3MgaW52YWxpZCBtZW1iZXIgYXR0cmlidXRlcyBpbiBjb2xsZWN0aW9uczxicj4KKyhJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0Nzc5Nzk4ODYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MzAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NjMwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU2MzAiPiM1NjMwPC9hPik8L2xpPgorPGxpPkZpeGVkIElQUCBidWZmZXIgb3ZlcmZsb3cgKHJkYXI6Ly81MDAzNTQxMSk8L2xpPgorPGxpPkZpeGVkIG1lbW9yeSBkaXNjbG9zdXJlIGlzc3VlIGluIHRoZSBzY2hlZHVsZXIgKHJkYXI6Ly81MTM3Mzg1Myk8L2xpPgorPGxpPkZpeGVkIERvUyBpc3N1ZXMgaW4gdGhlIHNjaGVkdWxlciAocmRhcjovLzUxMzczOTI5KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciB3b3VsZCByZXN0YXJ0IGNvbnRpbnVvdXNseSB3aGVuIGlkbGUgYW5kIHByaW50ZXJzIHdlcmUgbm90PGJyPgorc2hhcmVkIChyZGFyOi8vNTI1NjExOTkpPC9saT4KKzxsaT5GaXhlZCBhIGNvbW1hbmQgb3JkZXJpbmcgaXNzdWUgaW4gdGhlIFplYnJhIFpQTCBkcml2ZXIuPC9saT4KKzxsaT5GaXhlZCBhIG1lbW9yeSBsZWFrIGluIDxjb2RlPnBwZE9wZW48L2NvZGU+LjwvbGk+Cis8L3VsPgorPHA+RW5qb3khPC9wPgorICA8L2Rpdj4KKworCisgIDxkZXRhaWxzCisgICAgY2xhc3M9ImRldGFpbHMtcmVzZXQgRGV0YWlscy1lbGVtZW50IGJvcmRlci10b3AgcHQtMyBtdC00IG1iLTIgbWItbWQtNCIKKyAgICAKKyAgICAKKyAgICA+CisgICAgPHN1bW1hcnk+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLWNsb3NlZCI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IiB2aWV3Qm94PSIwIDAgNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTRsNi02LTYtNnYxMnoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tb3BlbiI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLWRvd24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDVsNiA2IDYtNkgweiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtYm9sZCI+QXNzZXRzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibWwtMSBDb3VudGVyIj40PC9zcGFuPgorICAgICAgPC9kaXY+CisgICAgPC9zdW1tYXJ5PgorICAgIDxkaXYgY2xhc3M9IkJveCBCb3gtLWNvbmRlbnNlZCBtdC0zIj4KKyAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjIuMTIvY3Vwcy0yLjIuMTItc291cmNlLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuMi4xMi1zb3VyY2UudGFyLmd6PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj45LjkzIE1CPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuMi4xMi9jdXBzLTIuMi4xMi1zb3VyY2UudGFyLmd6LnNpZyIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuMi4xMi1zb3VyY2UudGFyLmd6LnNpZzwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+NTg1IEJ5dGVzPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKworCisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjIuMTIuemlwIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHppcCkKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuMi4xMi50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAodGFyLmd6KQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGV0YWlscz4KKworCisgIDwvZGl2PjwhLS0gLy5yZWxlYXNlLWJvZHkgLS0+Cis8L2Rpdj48IS0tIC8ucmVsZWFzZSAtLT4KKworICAgICAgICA8L2Rpdj4KKworCisKKyAgICAgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1lbnRyeSI+CisgICAgICAgICAgICAKKzxkaXYgY2xhc3M9InJlbGVhc2UgcHQtMiBwdC1tZC0wIHBiLTMgcGItbWQtMCBjbGVhcmZpeCBsYWJlbC1wcmVyZWxlYXNlIj4KKyAgPGRpdiBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgZmxleC13cmFwIGZsZXgtaXRlbXMtY2VudGVyIGNvbC0xMiBjb2wtbWQtMyBjb2wtbGctMiBweC1tZC0zIHBiLTEgcGItbWQtNCBwdC1tZC00IGZsb2F0LWxlZnQgdGV4dC1tZC1yaWdodCB2LWFsaWduLXRvcCI+CisgICAgPGRpdiBjbGFzcz0iZmxleC1hdXRvIGZsZXgtc2VsZi1zdGFydCI+CisgICAgICAgIDxzcGFuIGNsYXNzPSJmbGV4LXNocmluay0wIExhYmVsIExhYmVsLS1vdXRsaW5lIG1iLW1kLTIgbXItMiBtci1tZC0wIExhYmVsLS1wcmVyZWxlYXNlIj4KKyAgICAgICAgICAgIFByZS1yZWxlYXNlCisgICAgICAgIDwvc3Bhbj4KKworCisgICAgPC9kaXY+CisKKyAgICAgIDx1bCBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgbXQtMiBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4zcmMxIiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4zcmMxIj4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10YWciIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjczIDEuNzNDNy4yNiAxLjI2IDYuNjIgMSA1Ljk2IDFIMy41QzIuMTMgMSAxIDIuMTMgMSAzLjV2Mi40N2MwIC42Ni4yNyAxLjMuNzMgMS43N2w2LjA2IDYuMDZjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDQuNTktNC41OWEuOTk2Ljk5NiAwIDAwMC0xLjQxTDcuNzMgMS43M3pNMi4zOCA3LjA5Yy0uMzEtLjMtLjQ3LS43LS40Ny0xLjEzVjMuNWMwLS44OC43Mi0xLjU5IDEuNTktMS41OWgyLjQ3Yy40MiAwIC44My4xNiAxLjEzLjQ3bDYuMTQgNi4xMy00LjczIDQuNzMtNi4xMy02LjE1ek0zLjAxIDNoMnYySDNWM2guMDF6Ii8+PC9zdmc+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjNyYzE8L3NwYW4+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvNGQwM2M0Y2E5MGQ4YzFjMGQ1MzAzNDI3ODU4ZTUzN2ZkM2M0MTVlNCIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxjb2RlPjRkMDNjNGM8L2NvZGU+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorICAgICAgICAKKyAgICAgIDwvdWw+CisgICAgICAKKworICA8L2Rpdj48IS0tIC8ubWV0YSAtLT4KKworICA8ZGl2IGNsYXNzPSJjb2wtMTIgY29sLW1kLTkgY29sLWxnLTEwIHB4LW1kLTMgcHktbWQtNCByZWxlYXNlLW1haW4tc2VjdGlvbiBjb21taXQgb3BlbiBmbG9hdC1sZWZ0Ij4KKyAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWhlYWRlciI+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1zdGFydCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImYxIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LW5vcm1hbCI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvdGFnL3YyLjNyYzEiPnYyLjNyYzE8L2E+CisgICAgICAgIDwvZGl2PgorCisgICAgICAgICAgPHNwYW4gY2xhc3M9ImQtbWQtbm9uZSBmbGV4LXNocmluay0wIG1sLTIgbXQtMiBtdC1tZC0wIExhYmVsIExhYmVsLS1vdXRsaW5lIExhYmVsLS1wcmVyZWxlYXNlIj4KKyAgICAgICAgICAgICAgUHJlLXJlbGVhc2UKKyAgICAgICAgICA8L3NwYW4+CisKKyAgICAgIDwvZGl2PgorICAgICAgICA8dWwgY2xhc3M9ImQtZmxleCBkLW1kLW5vbmUgZmxleC1pdGVtcy1jZW50ZXIgbWItMSBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuM3JjMSIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuM3JjMSI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10YWciIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjczIDEuNzNDNy4yNiAxLjI2IDYuNjIgMSA1Ljk2IDFIMy41QzIuMTMgMSAxIDIuMTMgMSAzLjV2Mi40N2MwIC42Ni4yNyAxLjMuNzMgMS43N2w2LjA2IDYuMDZjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDQuNTktNC41OWEuOTk2Ljk5NiAwIDAwMC0xLjQxTDcuNzMgMS43M3pNMi4zOCA3LjA5Yy0uMzEtLjMtLjQ3LS43LS40Ny0xLjEzVjMuNWMwLS44OC43Mi0xLjU5IDEuNTktMS41OWgyLjQ3Yy40MiAwIC44My4xNiAxLjEzLjQ3bDYuMTQgNi4xMy00LjczIDQuNzMtNi4xMy02LjE1ek0zLjAxIDNoMnYySDNWM2guMDF6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuM3JjMTwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIgZmxleC1hdXRvIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC80ZDAzYzRjYTkwZDhjMWMwZDUzMDM0Mjc4NThlNTM3ZmQzYzQxNWU0IiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxjb2RlPjRkMDNjNGM8L2NvZGU+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKyAgICAgICAgICAKKworICAgICAgICAgIAorCisgICAgICAgIDwvdWw+CisgICAgICAKKzxwIGNsYXNzPSJmNSB0ZXh0LWdyYXkgbXQtMiBtdC1tZC0xIG1iLTIgbWItbWQtNCI+CisgICAgPGEgY2xhc3M9ImQtaW5saW5lLWJsb2NrIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+PGltZyBjbGFzcz0iYXZhdGFyIiBzcmM9Imh0dHBzOi8vYXZhdGFyczMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDg4MTAzP3M9NDAmYW1wO3Y9NCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBhbHQ9IkBtaWNoYWVscnN3ZWV0IiAvPjwvYT4KKyAgICA8YSBjbGFzcz0idGV4dC1ib2xkIHRleHQtZ3JheSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPm1pY2hhZWxyc3dlZXQ8L2E+CisgICAgcmVsZWFzZWQgdGhpcworICAgIDxyZWxhdGl2ZS10aW1lIGRhdGV0aW1lPSIyMDE5LTA1LTIxVDE3OjA3OjUwWiIgY2xhc3M9Im5vLXdyYXAiPk1heSAyMSwgMjAxOTwvcmVsYXRpdmUtdGltZT4KKyAgICAmbWlkZG90OworICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbXBhcmUvdjIuM3JjMS4uLm1hc3RlciI+CisgICAgMTIyIGNvbW1pdHM8L2E+CisgICAgdG8gbWFzdGVyCisgICAgc2luY2UgdGhpcyByZWxlYXNlCis8L3A+CisgICAgPC9kaXY+CisKKyAgICAKKworICA8ZGl2IGNsYXNzPSJtYXJrZG93bi1ib2R5Ij4KKyAgICA8cD5DVVBTIDIuM3JjMSBpcyBub3cgYXZhaWxhYmxlIGZvciBkb3dubG9hZC4gIFRoaXMgaXMgdGhlIGZpcnN0IHJlbGVhc2UgY2FuZGlkYXRlIGZvciBDVVBTIDIuMy4wIHdoaWNoIGFkb3B0cyB0aGUgbmV3IENVUFMgbGljZW5zZSwgYWRkcyBzdXBwb3J0IGZvciBJUFAgcHJlc2V0cyBhbmQgZmluaXNoaW5nIHRlbXBsYXRlcywgYW5kIGZpeGVzIGEgbnVtYmVyIG9mIGJ1Z3MgYW5kICJwb2xpc2giIGlzc3Vlcy4gIFRoaXMgYmV0YSBhbHNvIGluY2x1ZGVzIHRoZSBuZXcgaXBwZXZlcHJpbnRlciB1dGlsaXR5LiBDaGFuZ2VzIGluY2x1ZGU6PC9wPgorPHVsPgorPGxpPlRoZSA8Y29kZT5jdXBzLWNvbmZpZzwvY29kZT4gc2NyaXB0IG5vIGxvbmdlciBhZGRzIGV4dHJhIGxpYnJhcmllcyB3aGVuIGxpbmtpbmcgYWdhaW5zdDxicj4KK3NoYXJlZCBsaWJyYXJpZXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjMwMzY1NjE1OCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTI2MSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTI2MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTI2MSI+IzUyNjE8L2E+KTwvbGk+Cis8bGk+VGhlIHN1cHBsaWVkIGV4YW1wbGUgcHJpbnQgZG9jdW1lbnRzIGhhdmUgYmVlbiBvcHRpbWl6ZWQgZm9yIHNpemU8YnI+CisoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDEzODEwNDA0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTI5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTI5L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTI5Ij4jNTUyOTwvYT4pPC9saT4KKzxsaT5UaGUgPGNvZGU+Y3Vwc2N0bDwvY29kZT4gY29tbWFuZCBub3cgcHJldmVudHMgc2V0dGluZyAiY3Vwcy1maWxlcy5jb25mIiBkaXJlY3RpdmVzPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxMzgyOTI1NCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMCI+IzU1MzA8L2E+KTwvbGk+Cis8bGk+VGhlICJmb3JiaWRkZW4iIG1lc3NhZ2UgaW4gdGhlIHdlYiBpbnRlcmZhY2UgaXMgbm93IGV4cGxhaW5lZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDI0NTM0MzQ4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTQ3IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU0Ny9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTQ3Ij4jNTU0NzwvYT4pPC9saT4KKzxsaT5UaGUgZm9vdGVyIGluIHRoZSB3ZWIgaW50ZXJmYWNlIGNvdmVyZWQgc29tZSBjb250ZW50IG9uIHNtYWxsIGRpc3BsYXlzPGJyPgorKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ0MDM2NTgwMSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU3NCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1NzQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU3NCI+IzU1NzQ8L2E+KTwvbGk+Cis8bGk+VGhlIGxpYnVzYi1iYXNlZCBVU0IgYmFja2VuZCBub3cgZW5mb3JjZXMgcmVhZCBsaW1pdHMsIGltcHJvdmluZyBwcmludCBzcGVlZDxicj4KK2luIG1hbnkgY2FzZXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQ0NTMxNTA1NSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU4MyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1ODMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU4MyI+IzU1ODM8L2E+KTwvbGk+Cis8bGk+VGhlIDxjb2RlPmlwcGV2ZXByaW50ZXI8L2NvZGU+IGNvbW1hbmQgbm93IGxvb2tzIGZvciBwcmludCBjb21tYW5kcyBpbiB0aGUgImNvbW1hbmQiPGJyPgorc3ViZGlyZWN0b3J5LjwvbGk+Cis8bGk+VGhlIDxjb2RlPmlwcHRvb2w8L2NvZGU+IGNvbW1hbmQgbm93IHN1cHBvcnRzIDxjb2RlPiRkYXRlLWN1cnJlbnQ8L2NvZGU+IGFuZCA8Y29kZT4kZGF0ZS1zdGFydDwvY29kZT4gdmFyaWFibGVzPGJyPgordG8gaW5zZXJ0IHRoZSBjdXJyZW50IGFuZCBzdGFydGluZyBkYXRlIGFuZCB0aW1lIHZhbHVlcywgYXMgd2VsbCBhcyBJU08tODYwMTxicj4KK3JlbGF0aXZlIHRpbWUgdmFsdWVzIHN1Y2ggYXMgIlBUMzBTIiBmb3IgMzAgc2Vjb25kcyBpbiB0aGUgZnV0dXJlLjwvbGk+Cis8L3VsPgorPHA+RW5qb3khPC9wPgorICA8L2Rpdj4KKworCisgIDxkZXRhaWxzCisgICAgY2xhc3M9ImRldGFpbHMtcmVzZXQgRGV0YWlscy1lbGVtZW50IGJvcmRlci10b3AgcHQtMyBtdC00IG1iLTIgbWItbWQtNCIKKyAgICAKKyAgICAKKyAgICA+CisgICAgPHN1bW1hcnk+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLWNsb3NlZCI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IiB2aWV3Qm94PSIwIDAgNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTRsNi02LTYtNnYxMnoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tb3BlbiI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLWRvd24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDVsNiA2IDYtNkgweiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtYm9sZCI+QXNzZXRzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibWwtMSBDb3VudGVyIj40PC9zcGFuPgorICAgICAgPC9kaXY+CisgICAgPC9zdW1tYXJ5PgorICAgIDxkaXYgY2xhc3M9IkJveCBCb3gtLWNvbmRlbnNlZCBtdC0zIj4KKyAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjNyYzEvY3Vwcy0yLjNyYzEtc291cmNlLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuM3JjMS1zb3VyY2UudGFyLmd6PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj43LjU2IE1CPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuM3JjMS9jdXBzLTIuM3JjMS1zb3VyY2UudGFyLmd6LnNpZyIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciBtaW4td2lkdGgtMCI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1wYWNrYWdlIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMSA0LjI3djcuNDdjMCAuNDUuMy44NC43NS45N2w2LjUgMS43M2MuMTYuMDUuMzQuMDUuNSAwbDYuNS0xLjczYy40NS0uMTMuNzUtLjUyLjc1LS45N1Y0LjI3YzAtLjQ1LS4zLS44NC0uNzUtLjk3bC02LjUtMS43NGExLjQgMS40IDAgMDAtLjUgMEwxLjc1IDMuM2MtLjQ1LjEzLS43NS41Mi0uNzUuOTd6bTcgOS4wOWwtNi0xLjU5VjVsNiAxLjYxdjYuNzV6TTIgNGwyLjUtLjY3TDExIDUuMDZsLTIuNS42N0wyIDR6bTEzIDcuNzdsLTYgMS41OVY2LjYxbDItLjU1VjguNWwyLS41M1Y1LjUzTDE1IDV2Ni43N3ptLTItNy4yNEw2LjUgMi44bDItLjUzTDE1IDRsLTIgLjUzeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icGwtMiBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ib2xkIj5jdXBzLTIuM3JjMS1zb3VyY2UudGFyLmd6LnNpZzwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+NTg1IEJ5dGVzPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKworCisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjNyYzEuemlwIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHppcCkKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuM3JjMS50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAodGFyLmd6KQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgPC9kaXY+CisgICAgPC9kaXY+CisgIDwvZGV0YWlscz4KKworCisgIDwvZGl2PjwhLS0gLy5yZWxlYXNlLWJvZHkgLS0+Cis8L2Rpdj48IS0tIC8ucmVsZWFzZSAtLT4KKworICAgICAgICA8L2Rpdj4KKworCisKKyAgICAgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1lbnRyeSI+CisgICAgICAgICAgICAKKzxkaXYgY2xhc3M9InJlbGVhc2UgcHQtMiBwdC1tZC0wIHBiLTMgcGItbWQtMCBjbGVhcmZpeCBsYWJlbC1wcmVyZWxlYXNlIj4KKyAgPGRpdiBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgZmxleC13cmFwIGZsZXgtaXRlbXMtY2VudGVyIGNvbC0xMiBjb2wtbWQtMyBjb2wtbGctMiBweC1tZC0zIHBiLTEgcGItbWQtNCBwdC1tZC00IGZsb2F0LWxlZnQgdGV4dC1tZC1yaWdodCB2LWFsaWduLXRvcCI+CisgICAgPGRpdiBjbGFzcz0iZmxleC1hdXRvIGZsZXgtc2VsZi1zdGFydCI+CisgICAgICAgIDxzcGFuIGNsYXNzPSJmbGV4LXNocmluay0wIExhYmVsIExhYmVsLS1vdXRsaW5lIG1iLW1kLTIgbXItMiBtci1tZC0wIExhYmVsLS1wcmVyZWxlYXNlIj4KKyAgICAgICAgICAgIFByZS1yZWxlYXNlCisgICAgICAgIDwvc3Bhbj4KKworCisgICAgPC9kaXY+CisKKyAgICAgIDx1bCBjbGFzcz0iZC1ub25lIGQtbWQtYmxvY2sgbXQtMiBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4zYjgiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjNiOCI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zYjg8L3NwYW4+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorCisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvMDQ1MGRkZDRmMDAzZGU4YWE4ZDhlN2E1NGQxODFhOTkyNjA3ZDAzMSIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxjb2RlPjA0NTBkZGQ8L2NvZGU+CisgICAgICAgICAgPC9hPgorICAgICAgICA8L2xpPgorICAgICAgICAKKyAgICAgIDwvdWw+CisgICAgICAKKworICA8L2Rpdj48IS0tIC8ubWV0YSAtLT4KKworICA8ZGl2IGNsYXNzPSJjb2wtMTIgY29sLW1kLTkgY29sLWxnLTEwIHB4LW1kLTMgcHktbWQtNCByZWxlYXNlLW1haW4tc2VjdGlvbiBjb21taXQgb3BlbiBmbG9hdC1sZWZ0Ij4KKyAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWhlYWRlciI+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1zdGFydCI+CisgICAgICAgIDxkaXYgY2xhc3M9ImYxIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LW5vcm1hbCI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvdGFnL3YyLjNiOCI+djIuM2I4PC9hPgorICAgICAgICA8L2Rpdj4KKworICAgICAgICAgIDxzcGFuIGNsYXNzPSJkLW1kLW5vbmUgZmxleC1zaHJpbmstMCBtbC0yIG10LTIgbXQtbWQtMCBMYWJlbCBMYWJlbC0tb3V0bGluZSBMYWJlbC0tcHJlcmVsZWFzZSI+CisgICAgICAgICAgICAgIFByZS1yZWxlYXNlCisgICAgICAgICAgPC9zcGFuPgorCisgICAgICA8L2Rpdj4KKyAgICAgICAgPHVsIGNsYXNzPSJkLWZsZXggZC1tZC1ub25lIGZsZXgtaXRlbXMtY2VudGVyIG1iLTEgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjNiOCIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuM2I4Ij4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4zYjg8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKworICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIGZsZXgtYXV0byI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21taXQvMDQ1MGRkZDRmMDAzZGU4YWE4ZDhlN2E1NGQxODFhOTkyNjA3ZDAzMSIgY2xhc3M9Im11dGVkLWxpbmsiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8Y29kZT4wNDUwZGRkPC9jb2RlPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisgICAgICAgICAgCisKKyAgICAgICAgICAKKworICAgICAgICA8L3VsPgorICAgICAgCis8cCBjbGFzcz0iZjUgdGV4dC1ncmF5IG10LTIgbXQtbWQtMSBtYi0yIG1iLW1kLTQiPgorICAgIDxhIGNsYXNzPSJkLWlubGluZS1ibG9jayIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPjxpbWcgY2xhc3M9ImF2YXRhciIgc3JjPSJodHRwczovL2F2YXRhcnMzLmdpdGh1YnVzZXJjb250ZW50LmNvbS91LzQ4ODEwMz9zPTQwJmFtcDt2PTQiIHdpZHRoPSIyMCIgaGVpZ2h0PSIyMCIgYWx0PSJAbWljaGFlbHJzd2VldCIgLz48L2E+CisgICAgPGEgY2xhc3M9InRleHQtYm9sZCB0ZXh0LWdyYXkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij5taWNoYWVscnN3ZWV0PC9hPgorICAgIHJlbGVhc2VkIHRoaXMKKyAgICA8cmVsYXRpdmUtdGltZSBkYXRldGltZT0iMjAxOS0wNS0wMlQxNzoxMDoxNloiIGNsYXNzPSJuby13cmFwIj5NYXkgMiwgMjAxOTwvcmVsYXRpdmUtdGltZT4KKyAgICAmbWlkZG90OworICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbXBhcmUvdjIuM2I4Li4ubWFzdGVyIj4KKyAgICAxNjUgY29tbWl0czwvYT4KKyAgICB0byBtYXN0ZXIKKyAgICBzaW5jZSB0aGlzIHJlbGVhc2UKKzwvcD4KKyAgICA8L2Rpdj4KKworICAgIAorCisgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJvZHkiPgorICAgIDxwPkNVUFMgMi4zYjggaXMgbm93IGF2YWlsYWJsZSBmb3IgZG93bmxvYWQuICBUaGlzIGlzIHRoZSBlaWdodGggYmV0YSBvZiB0aGUgQ1VQUyAyLjMgc2VyaWVzIHdoaWNoIGFkb3B0cyB0aGUgbmV3IENVUFMgbGljZW5zZSwgYWRkcyBzdXBwb3J0IGZvciBJUFAgcHJlc2V0cyBhbmQgZmluaXNoaW5nIHRlbXBsYXRlcywgYW5kIGZpeGVzIGEgbnVtYmVyIG9mIGJ1Z3MgYW5kICJwb2xpc2giIGlzc3Vlcy4gIFRoaXMgYmV0YSBhbHNvIGluY2x1ZGVzIHRoZSBuZXcgaXBwZXZlcHJpbnRlciB1dGlsaXR5LiAgQ2hhbmdlcyBpbmNsdWRlOjwvcD4KKzx1bD4KKzxsaT5NZWRpYSBzaXplIG1hdGNoaW5nIG5vdyB1c2VzIGEgdG9sZXJhbmNlIG9mIDAuNW1tIChyZGFyOi8vMzM4MjIwMjQpPC9saT4KKzxsaT5UaGUgbHBhZG1pbiBjb21tYW5kIHdvdWxkIGhhbmcgd2l0aCBhIGJhZCBQUEQgZmlsZSAocmRhcjovLzQxNDk1MDE2KTwvbGk+Cis8bGk+Rml4ZWQgYSBwb3RlbnRpYWwgY3Jhc2ggYnVnIGluIGN1cHMtZHJpdmVyZCAocmRhcjovLzQ2NjI1NTc5KTwvbGk+Cis8bGk+Rml4ZWQgYSBwZXJmb3JtYW5jZSByZWdyZXNzaW9uIHdpdGggbGFyZ2UgUFBEcyAocmRhcjovLzQ3MDQwNzU5KTwvbGk+Cis8bGk+Rml4ZWQgYSBtZW1vcnkgcmVhbGxvY2F0aW9uIGJ1ZyBpbiBIVFRQIGhlYWRlciB2YWx1ZSBleHBhbnNpb248YnI+CisocmRhcjovL3Byb2JsZW0vNTAwMDA3NDkpPC9saT4KKzxsaT5UaW1lZCBvdXQgam9iIHN1Ym1pc3Npb24gbm93IHlpZWxkcyBhbiBlcnJvciAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDM3MzkwNTY0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTcwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTU3MC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTcwIj4jNTU3MDwvYT4pPC9saT4KKzxsaT5SZXN0b3JlZCBtaW5pbWFsIHN1cHBvcnQgZm9yIHRoZSA8Y29kZT5FbXVsYXRvcnM8L2NvZGU+IGtleXdvcmQgaW4gUFBEIGZpbGVzIHRvIGFsbG93PGJyPgorb2xkIFNhbXN1bmcgcHJpbnRlciBkcml2ZXJzIHRvIGNvbnRpbnVlIHRvIHdvcmsgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQzMjIxNDU2OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU2MiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1NjIvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU2MiI+IzU1NjI8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBkaWQgbm90IGVuY29kZSBvY3RldFN0cmluZyB2YWx1ZXMgbGlrZSAiam9iLXBhc3N3b3JkIiBjb3JyZWN0bHk8YnI+Citmb3IgdGhlIHByaW50IGZpbHRlcnMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQyOTgyNzEyNyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU1OCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTU1OC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTU1OCI+IzU1NTg8L2E+KTwvbGk+Cis8bGk+VGhlIDxjb2RlPmN1cHNDaGVja0Rlc3RTdXBwb3J0ZWQ8L2NvZGU+IGZ1bmN0aW9uIGRpZCBub3QgY2hlY2sgb2N0ZXRTdHJpbmcgdmFsdWVzPGJyPgorY29ycmVjdGx5IChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0Mjk4MjA4NjIiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NTciIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU1NTcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU1NTciPiM1NTU3PC9hPik8L2xpPgorPGxpPkFkZGVkIHN1cHBvcnQgZm9yIDxjb2RlPlVzZXJBZ2VudFRva2VuczwvY29kZT4gZGlyZWN0aXZlIGluICJjbGllbnQuY29uZiIgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQyOTA2MjM5OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU1NSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1NTUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTU1NSI+IzU1NTU8L2E+KTwvbGk+Cis8bGk+VXBkYXRlZCB0aGUgc3lzdGVtZCBzZXJ2aWNlIGZpbGUgZm9yIGN1cHNkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MjY0NzkwNDEiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NTEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU1NTEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU1NTEiPiM1NTUxPC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT5pcHBWYWxpZGF0ZUF0dHJpYnV0ZTwvY29kZT4gZnVuY3Rpb24gZGlkIG5vdCBjYXRjaCBhbGwgaW5zdGFuY2VzIG9mIGludmFsaWQ8YnI+CitVVEYtOCBzdHJpbmdzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDY4NTE5NzkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTA5L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDkiPiM1NTA5PC9hPik8L2xpPgorPGxpPkZpeGVkIGFuIGlzc3VlIHdpdGggdGhlIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlcyBnZW5lcmF0ZWQgYnkgR05VIFRMUzxicj4KKyhJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDU4ODEzNDYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDYiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTA2L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDYiPiM1NTA2PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIHdoZW4gcmVhZGluZyBhdCB0aGUgZW5kIG9mIGEgZmlsZSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzk3MTI4OTI5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDczIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDczL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDczIj4jNTQ3MzwvYT4pPC9saT4KKzxsaT5GaXhlZCBwb3RlbnRpYWwgdW5hbGlnbmVkIGFjY2Vzc2VzIGluIHRoZSBzdHJpbmcgcG9vbCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzk3MTI5MzM1IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDc0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDc0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDc0Ij4jNTQ3NDwvYT4pPC9saT4KKzxsaT5GaXhlZCBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayB3aGVuIGxvYWRpbmcgYSBQUEQgZmlsZSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzk3MTI5NTQ0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDc1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDc1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDc1Ij4jNTQ3NTwvYT4pPC9saT4KKzxsaT5BZGRlZCBhIFVTQiBxdWlya3MgcnVsZSBmb3IgdGhlIExleG1hcmsgRTEyMG4gKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM5ODAwMjExMCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ3OCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ3OCI+IzU0Nzg8L2E+KTwvbGk+Cis8bGk+VXBkYXRlZCB0aGUgVVNCIHF1aXJrcyBydWxlIGZvciBaZWJyYSBsYWJlbCBwcmludGVycyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzU3NzMzMjg2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM5NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1Ij4jNTM5NTwvYT4pPC9saT4KKzxsaT5GaXhlZCBhIGNvbXBpbGUgZXJyb3Igb24gTGludXggKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMDI5NzM5MiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4MyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0ODMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4MyI+IzU0ODM8L2E+KTwvbGk+Cis8bGk+VGhlIGxwYWRtaW4gY29tbWFuZCwgd2ViIGludGVyZmFjZSwgYW5kIHNjaGVkdWxlciBhbGwgcXVlcmllZCBhbiBJUFA8YnI+CitFdmVyeXdoZXJlIHByaW50ZXIgZGlmZmVyZW50bHksIHJlc3VsdGluZyBpbiBkaWZmZXJlbnQgUFBEcyBmb3IgdGhlIHNhbWU8YnI+CitwcmludGVyIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDA0NzU0NzEiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0ODQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDg0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0ODQiPiM1NDg0PC9hPik8L2xpPgorPGxpPlRoZSB3ZWIgaW50ZXJmYWNlIG5vIGxvbmdlciBwcm92aWRlcyBhY2Nlc3MgdG8gdGhlIGxvZyBmaWxlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDA4OTIzNjQ2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTEzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTEzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTEzIj4jNTUxMzwvYT4pPC9saT4KKzxsaT5Ob24tS2VyYmVyaXplZCBwcmludGluZyB0byBXaW5kb3dzIHZpYSBJUFAgd2FzIGJyb2tlbiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDA5Nzc5NDE0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTE1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTE1Ij4jNTUxNTwvYT4pPC9saT4KKzxsaT5FbGltaW5hdGVkIHVzZSBvZiBwcml2YXRlIGhlYWRlcnMgYW5kIHNvbWUgZGVwcmVjYXRlZCBtYWNPUyBBUElzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTAyNjAxMDciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTYiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTE2L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTYiPiM1NTE2PC9hPik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgbm8gbG9uZ2VyIHN0b3BzIGEgcHJpbnRlciBpZiBhbiBlcnJvciBvY2N1cnMgd2hlbiBhIGpvYiBpczxicj4KK2NhbmNlbGVkIG9yIGFib3J0ZWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxMDM1NTI3MCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNyI+IzU1MTc8L2E+KTwvbGk+Cis8bGk+QWRkZWQgYSBVU0IgcXVpcmtzIHJ1bGUgZm9yIHRoZSBEWU1PIDQ1MCBUdXJibyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDExNzExMTk3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTIxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUyMS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTIxIj4jNTUyMTwvYT4pPC9saT4KKzxsaT5BZGRlZCBhIFVTQiBxdWlya3MgcnVsZSBmb3IgWGVyb3ggcHJpbnRlcnMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxMTc1MzI1OCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUyMyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTUyMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTUyMyI+IzU1MjM8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlcidzIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIGRpZCBub3QgaW5jbHVkZSBhbGwgb2YgdGhlIGFsdGVybmF0ZTxicj4KK25hbWVzIGZvciB0aGUgc2VydmVyIHdoZW4gdXNpbmcgR05VIFRMUyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDEyMDE2NDQ5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTI1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUyNS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTI1Ij4jNTUyNTwvYT4pPC9saT4KKzxsaT5GaXhlZCBjb21waWxlciB3YXJuaW5ncyB3aXRoIG5ld2VyIHZlcnNpb25zIG9mIEdDQyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDE0MDQyOTM0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMyIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMyIj4jNTUzMjwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxNDA2NjcwNCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMyI+IzU1MzM8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgc29tZSBQUEQgY2FjaGluZyBhbmQgSVBQIEV2ZXJ5d2hlcmUgUFBEIGFjY291bnRpbmcvcGFzc3dvcmQgYnVnczxicj4KKyhJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTUyNzE0NzkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU1MzUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU1MzUiPiM1NTM1PC9hPik8L2xpPgorPGxpPkZpeGVkIDxjb2RlPlByZXNlcnZlSm9iSGlzdG9yeTwvY29kZT4gYnVnIHdpdGggdGltZSB2YWx1ZXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxNzIzNDMyMCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzOCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzOCI+IzU1Mzg8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBubyBsb25nZXIgYWR2ZXJ0aXNlcyB0aGUgSFRUUCBtZXRob2RzIGl0IHN1cHBvcnRzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTgwMTY5MTEiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NDAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTQwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1NDAiPiM1NTQwPC9hPik8L2xpPgorPGxpPkxvY2FsaXphdGlvbiB1cGRhdGVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzODk5MTAxMTciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NjEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0NjEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0NjEiPiM1NDYxPC9hPiwgSXNzdWVzIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM5NjEwOTQ3NSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ3MSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQ3MS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQ3MSI+IzU0NzE8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzOTk1MTUwNzkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0ODEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0ODEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0ODEiPiM1NDgxPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAxNDc3NTUzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDg2IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDg2L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDg2Ij4jNTQ4NjwvYT4sPGJyPgorSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAxNTYwMjY2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDg5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDg5L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDg5Ij4jNTQ4OTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMTU4MDc1NiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5MSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0OTEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5MSI+IzU0OTE8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDE1ODMxNjciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0OTIiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0OTIvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0OTIiPiM1NDkyPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAxNTg3MTIwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDkzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDkzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDkzIj4jNTQ5MzwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMTU5MTg5MCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ5NCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQ5NC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQ5NCI+IzU0OTQ8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDE5NzYxNjciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0OTUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDk1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0OTUiPiM1NDk1PC9hPiw8YnI+CitJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDI1MTYzMDciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0OTciIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDk3L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0OTciPiM1NDk3PC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAyNTUyMjA2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDk5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDk5L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDk5Ij4jNTQ5OTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMjU1MjY2MSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUwMCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTUwMC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTUwMCI+IzU1MDA8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDI1NTM3NjciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDEiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU1MDEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU1MDEiPiM1NTAxPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDAzMzk2MDAzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTA0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NTA0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NTA0Ij4jNTUwNDwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIGRpZCBub3QgYWx3YXlzIGlkbGUgZXhpdCBhcyBxdWlja2x5IGFzIGl0IGNvdWxkLjwvbGk+Cis8bGk+QWRkZWQgYSBuZXcgPGNvZGU+aXBwZXZlcHJpbnRlcjwvY29kZT4gY29tbWFuZCBiYXNlZCBvbiB0aGUgb2xkIGlwcHNlcnZlciBzYW1wbGUgY29kZS48L2xpPgorPC91bD4KKzxwPkVuam95ITwvcD4KKyAgPC9kaXY+CisKKworICA8ZGV0YWlscworICAgIGNsYXNzPSJkZXRhaWxzLXJlc2V0IERldGFpbHMtZWxlbWVudCBib3JkZXItdG9wIHB0LTMgbXQtNCBtYi0yIG1iLW1kLTQiCisgICAgCisgICAgCisgICAgPgorICAgIDxzdW1tYXJ5PgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1jbG9zZWQiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1yaWdodCIgdmlld0JveD0iMCAwIDYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDE0bDYtNi02LTZ2MTJ6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLW9wZW4iPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1kb3duIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA1bDYgNiA2LTZIMHoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LWJvbGQiPkFzc2V0czwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1sLTEgQ291bnRlciI+NDwvc3Bhbj4KKyAgICAgIDwvZGl2PgorICAgIDwvc3VtbWFyeT4KKyAgICA8ZGl2IGNsYXNzPSJCb3ggQm94LS1jb25kZW5zZWQgbXQtMyI+CisgICAgICA8ZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4zYjgvY3Vwcy0yLjNiOC1zb3VyY2UudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4zYjgtc291cmNlLnRhci5nejwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+OS44OSBNQjwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjNiOC9jdXBzLTIuM2I4LXNvdXJjZS50YXIuZ3ouc2lnIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4zYjgtc291cmNlLnRhci5nei5zaWc8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjU4NSBCeXRlczwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisKKworICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4zYjguemlwIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHppcCkKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuM2I4LnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh0YXIuZ3opCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kZXRhaWxzPgorCisKKyAgPC9kaXY+PCEtLSAvLnJlbGVhc2UtYm9keSAtLT4KKzwvZGl2PjwhLS0gLy5yZWxlYXNlIC0tPgorCisgICAgICAgIDwvZGl2PgorCisKKworICAgICAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWVudHJ5Ij4KKyAgICAgICAgICAgIAorPGRpdiBjbGFzcz0icmVsZWFzZSBwdC0yIHB0LW1kLTAgcGItMyBwYi1tZC0wIGNsZWFyZml4IGxhYmVsLSI+CisgIDxkaXYgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIGZsZXgtd3JhcCBmbGV4LWl0ZW1zLWNlbnRlciBjb2wtMTIgY29sLW1kLTMgY29sLWxnLTIgcHgtbWQtMyBwYi0xIHBiLW1kLTQgcHQtbWQtNCBmbG9hdC1sZWZ0IHRleHQtbWQtcmlnaHQgdi1hbGlnbi10b3AiPgorICAgIDxkaXYgY2xhc3M9ImZsZXgtYXV0byBmbGV4LXNlbGYtc3RhcnQiPgorCisKKyAgICA8L2Rpdj4KKworICAgICAgPHVsIGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBtdC0yIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjIuMTEiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjIuMTEiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuMi4xMTwvc3Bhbj4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC9lNGEwYWE4NmM5NmI1ZGRkYTM3NzBjNDY3MDlmNGRlZTlhNTkwNzFmIiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgPGNvZGU+ZTRhMGFhODwvY29kZT4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisgICAgICAgIAorICAgICAgPC91bD4KKyAgICAgIAorCisgIDwvZGl2PjwhLS0gLy5tZXRhIC0tPgorCisgIDxkaXYgY2xhc3M9ImNvbC0xMiBjb2wtbWQtOSBjb2wtbGctMTAgcHgtbWQtMyBweS1tZC00IHJlbGVhc2UtbWFpbi1zZWN0aW9uIGNvbW1pdCBvcGVuIGZsb2F0LWxlZnQiPgorICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtaGVhZGVyIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLXN0YXJ0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iZjEgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtbm9ybWFsIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy90YWcvdjIuMi4xMSI+djIuMi4xMTwvYT4KKyAgICAgICAgPC9kaXY+CisKKworICAgICAgPC9kaXY+CisgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGQtbWQtbm9uZSBmbGV4LWl0ZW1zLWNlbnRlciBtYi0xIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4yLjExIiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4yLjExIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4yLjExPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiBmbGV4LWF1dG8iPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0L2U0YTBhYTg2Yzk2YjVkZGRhMzc3MGM0NjcwOWY0ZGVlOWE1OTA3MWYiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPGNvZGU+ZTRhMGFhODwvY29kZT4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorICAgICAgICAgIAorCisgICAgICAgICAgCisKKyAgICAgICAgPC91bD4KKyAgICAgIAorPHAgY2xhc3M9ImY1IHRleHQtZ3JheSBtdC0yIG10LW1kLTEgbWItMiBtYi1tZC00Ij4KKyAgICA8YSBjbGFzcz0iZC1pbmxpbmUtYmxvY2siIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij48aW1nIGNsYXNzPSJhdmF0YXIiIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODgxMDM/cz00MCZhbXA7dj00IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGFsdD0iQG1pY2hhZWxyc3dlZXQiIC8+PC9hPgorICAgIDxhIGNsYXNzPSJ0ZXh0LWJvbGQgdGV4dC1ncmF5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+bWljaGFlbHJzd2VldDwvYT4KKyAgICByZWxlYXNlZCB0aGlzCisgICAgPHJlbGF0aXZlLXRpbWUgZGF0ZXRpbWU9IjIwMTktMDMtMjJUMjA6MDc6MDJaIiBjbGFzcz0ibm8td3JhcCI+TWFyIDIyLCAyMDE5PC9yZWxhdGl2ZS10aW1lPgorICAgICZtaWRkb3Q7CisgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tcGFyZS92Mi4yLjExLi4ubWFzdGVyIj4KKyAgICA3OTMgY29tbWl0czwvYT4KKyAgICB0byBtYXN0ZXIKKyAgICBzaW5jZSB0aGlzIHJlbGVhc2UKKzwvcD4KKyAgICA8L2Rpdj4KKworICAgIAorCisgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJvZHkiPgorICAgIDxwPkNVUFMgMi4yLjExIGlzIGEgYnVnIGZpeCByZWxlYXNlIHRoYXQgYWRkcmVzc2VzIGlzc3VlcyBpbiB0aGUgc2NoZWR1bGVyLDxicj4KK0lQUCBFdmVyeXdoZXJlIHN1cHBvcnQsIENVUFMgbGlicmFyeSwgYW5kIFVTQiBwcmludGVyIHN1cHBvcnQuICBDaGFuZ2VzIGluY2x1ZGU6PC9wPgorPHVsPgorPGxpPlJ1bm5pbmcgcHBkbWVyZ2Ugd2l0aCB0aGUgc2FtZSBpbnB1dCBhbmQgb3V0cHV0IGZpbGVuYW1lcyBkaWQgbm90IHdvcmsgYXM8YnI+CithZHZlcnRpc2VkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzODkyODM4MDYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NTUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDU1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NTUiPiM1NDU1PC9hPik8L2xpPgorPGxpPkZpeGVkIGEgcG90ZW50aWFsIG1lbW9yeSBsZWFrIHdoZW4gcmVhZGluZyBhdCB0aGUgZW5kIG9mIGEgZmlsZSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzk3MTI4OTI5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDczIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDczL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDczIj4jNTQ3MzwvYT4pPC9saT4KKzxsaT5GaXhlZCBwb3RlbnRpYWwgdW5hbGlnbmVkIGFjY2Vzc2VzIGluIHRoZSBzdHJpbmcgcG9vbCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzk3MTI5MzM1IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDc0IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDc0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDc0Ij4jNTQ3NDwvYT4pPC9saT4KKzxsaT5GaXhlZCBhIHBvdGVudGlhbCBtZW1vcnkgbGVhayB3aGVuIGxvYWRpbmcgYSBQUEQgZmlsZSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzk3MTI5NTQ0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDc1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDc1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDc1Ij4jNTQ3NTwvYT4pPC9saT4KKzxsaT5BZGRlZCBhIFVTQiBxdWlya3MgcnVsZSBmb3IgdGhlIExleG1hcmsgRTEyMG4gKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM5ODAwMjExMCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ3OCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0NzgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ3OCI+IzU0Nzg8L2E+KTwvbGk+Cis8bGk+VXBkYXRlZCB0aGUgVVNCIHF1aXJrcyBydWxlIGZvciBaZWJyYSBsYWJlbCBwcmludGVycyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzU3NzMzMjg2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM5NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1Ij4jNTM5NTwvYT4pPC9saT4KKzxsaT5GaXhlZCBhIGNvbXBpbGUgZXJyb3Igb24gTGludXggKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQwMDI5NzM5MiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4MyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0ODMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ4MyI+IzU0ODM8L2E+KTwvbGk+Cis8bGk+VGhlIGxwYWRtaW4gY29tbWFuZCwgd2ViIGludGVyZmFjZSwgYW5kIHNjaGVkdWxlciBhbGwgcXVlcmllZCBhbiBJUFA8YnI+CitFdmVyeXdoZXJlIHByaW50ZXIgZGlmZmVyZW50bHksIHJlc3VsdGluZyBpbiBkaWZmZXJlbnQgUFBEcyBmb3IgdGhlIHNhbWU8YnI+CitwcmludGVyIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDA0NzU0NzEiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0ODQiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDg0L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0ODQiPiM1NDg0PC9hPik8L2xpPgorPGxpPkZpeGVkIGFuIGlzc3VlIHdpdGggdGhlIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlcyBnZW5lcmF0ZWQgYnkgR05VIFRMUzxicj4KKyhJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDU4ODEzNDYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDYiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTA2L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDYiPiM1NTA2PC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT5pcHBWYWxpZGF0ZUF0dHJpYnV0ZTwvY29kZT4gZnVuY3Rpb24gZGlkIG5vdCBjYXRjaCBhbGwgaW5zdGFuY2VzIG9mIGludmFsaWQ8YnI+CitVVEYtOCBzdHJpbmdzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDY4NTE5NzkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTA5L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MDkiPiM1NTA5PC9hPik8L2xpPgorPGxpPk5vbi1LZXJiZXJpemVkIHByaW50aW5nIHRvIFdpbmRvd3MgdmlhIElQUCB3YXMgYnJva2VuIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MDk3Nzk0MTQiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NTE1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTUiPiM1NTE1PC9hPik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgbm8gbG9uZ2VyIHN0b3BzIGEgcHJpbnRlciBpZiBhbiBlcnJvciBvY2N1cnMgd2hlbiBhIGpvYiBpczxicj4KK2NhbmNlbGVkIG9yIGFib3J0ZWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxMDM1NTI3MCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MTcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUxNyI+IzU1MTc8L2E+KTwvbGk+Cis8bGk+QWRkZWQgYSBVU0IgcXVpcmtzIHJ1bGUgZm9yIHRoZSBEWU1PIDQ1MCBUdXJibyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDExNzExMTk3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTIxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUyMS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTIxIj4jNTUyMTwvYT4pPC9saT4KKzxsaT5BZGRlZCBhIFVTQiBxdWlya3MgcnVsZSBmb3IgWGVyb3ggcHJpbnRlcnMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxMTc1MzI1OCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUyMyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTUyMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTUyMyI+IzU1MjM8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlcidzIHNlbGYtc2lnbmVkIGNlcnRpZmljYXRlIGRpZCBub3QgaW5jbHVkZSBhbGwgb2YgdGhlIGFsdGVybmF0ZTxicj4KK25hbWVzIGZvciB0aGUgc2VydmVyIHdoZW4gdXNpbmcgR05VIFRMUyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDEyMDE2NDQ5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTI1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUyNS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTI1Ij4jNTUyNTwvYT4pPC9saT4KKzxsaT5GaXhlZCBjb21waWxlciB3YXJuaW5ncyB3aXRoIG5ld2VyIHZlcnNpb25zIG9mIEdDQyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iNDE0MDQyOTM0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMyIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NTMyIj4jNTUzMjwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxNDA2NjcwNCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzMyI+IzU1MzM8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgc29tZSBQUEQgY2FjaGluZyBhbmQgSVBQIEV2ZXJ5d2hlcmUgUFBEIGFjY291bnRpbmcvcGFzc3dvcmQgYnVnczxicj4KKyhJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSI0MTUyNzE0NzkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU1MzUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU1MzUiPiM1NTM1PC9hPik8L2xpPgorPGxpPkZpeGVkIDxjb2RlPlByZXNlcnZlSm9iSGlzdG9yeTwvY29kZT4gYnVnIHdpdGggdGltZSB2YWx1ZXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjQxNzIzNDMyMCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzOCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU1MzgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTUzOCI+IzU1Mzg8L2E+KTwvbGk+Cis8bGk+TWVkaWEgc2l6ZSBtYXRjaGluZyBub3cgdXNlcyBhIHRvbGVyYW5jZSBvZiAwLjVtbSAocmRhcjovLzMzODIyMDI0KTwvbGk+Cis8bGk+VGhlIGxwYWRtaW4gY29tbWFuZCB3b3VsZCBoYW5nIHdpdGggYSBiYWQgUFBEIGZpbGUgKHJkYXI6Ly80MTQ5NTAxNik8L2xpPgorPGxpPkZpeGVkIGEgcG90ZW50aWFsIGNyYXNoIGJ1ZyBpbiBjdXBzLWRyaXZlcmQgKHJkYXI6Ly80NjYyNTU3OSk8L2xpPgorPGxpPkZpeGVkIGEgcGVyZm9ybWFuY2UgcmVncmVzc2lvbiB3aXRoIGxhcmdlIFBQRHMgKHJkYXI6Ly80NzA0MDc1OSk8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgZGlkIG5vdCBhbHdheXMgaWRsZSBleGl0IGFzIHF1aWNrbHkgYXMgaXQgY291bGQuPC9saT4KKzwvdWw+Cis8cD5FbmpveSE8L3A+CisgIDwvZGl2PgorCisKKyAgPGRldGFpbHMKKyAgICBjbGFzcz0iZGV0YWlscy1yZXNldCBEZXRhaWxzLWVsZW1lbnQgYm9yZGVyLXRvcCBwdC0zIG10LTQgbWItMiBtYi1tZC00IgorICAgIAorICAgIAorICAgID4KKyAgICA8c3VtbWFyeT4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tY2xvc2VkIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtcmlnaHQiIHZpZXdCb3g9IjAgMCA2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSI2IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCAxNGw2LTYtNi02djEyeiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1vcGVuIj48c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdHJpYW5nbGUtZG93biIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxMiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgNWw2IDYgNi02SDB6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0idGV4dC1ib2xkIj5Bc3NldHM8L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtbC0xIENvdW50ZXIiPjQ8L3NwYW4+CisgICAgICA8L2Rpdj4KKyAgICA8L3N1bW1hcnk+CisgICAgPGRpdiBjbGFzcz0iQm94IEJveC0tY29uZGVuc2VkIG10LTMiPgorICAgICAgPGRpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuMi4xMS9jdXBzLTIuMi4xMS1zb3VyY2UudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4yLjExLXNvdXJjZS50YXIuZ3o8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjkuOTIgTUI8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4yLjExL2N1cHMtMi4yLjExLXNvdXJjZS50YXIuZ3ouc2lnIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4yLjExLXNvdXJjZS50YXIuZ3ouc2lnPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj41ODUgQnl0ZXM8L3NtYWxsPgorICAgICAgICAgIDwvZGl2PgorCisKKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuMi4xMS56aXAiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAoemlwKQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4yLjExLnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh0YXIuZ3opCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kZXRhaWxzPgorCisKKyAgPC9kaXY+PCEtLSAvLnJlbGVhc2UtYm9keSAtLT4KKzwvZGl2PjwhLS0gLy5yZWxlYXNlIC0tPgorCisgICAgICAgIDwvZGl2PgorCisKKworICAgICAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWVudHJ5Ij4KKyAgICAgICAgICAgIAorPGRpdiBjbGFzcz0icmVsZWFzZSBwdC0yIHB0LW1kLTAgcGItMyBwYi1tZC0wIGNsZWFyZml4IGxhYmVsLXByZXJlbGVhc2UiPgorICA8ZGl2IGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBmbGV4LXdyYXAgZmxleC1pdGVtcy1jZW50ZXIgY29sLTEyIGNvbC1tZC0zIGNvbC1sZy0yIHB4LW1kLTMgcGItMSBwYi1tZC00IHB0LW1kLTQgZmxvYXQtbGVmdCB0ZXh0LW1kLXJpZ2h0IHYtYWxpZ24tdG9wIj4KKyAgICA8ZGl2IGNsYXNzPSJmbGV4LWF1dG8gZmxleC1zZWxmLXN0YXJ0Ij4KKyAgICAgICAgPHNwYW4gY2xhc3M9ImZsZXgtc2hyaW5rLTAgTGFiZWwgTGFiZWwtLW91dGxpbmUgbWItbWQtMiBtci0yIG1yLW1kLTAgTGFiZWwtLXByZXJlbGVhc2UiPgorICAgICAgICAgICAgUHJlLXJlbGVhc2UKKyAgICAgICAgPC9zcGFuPgorCisKKyAgICA8L2Rpdj4KKworICAgICAgPHVsIGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBtdC0yIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjNiNyIgY2xhc3M9Im11dGVkLWxpbmsgY3NzLXRydW5jYXRlIiB0aXRsZT0idjIuM2I3Ij4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10YWciIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjczIDEuNzNDNy4yNiAxLjI2IDYuNjIgMSA1Ljk2IDFIMy41QzIuMTMgMSAxIDIuMTMgMSAzLjV2Mi40N2MwIC42Ni4yNyAxLjMuNzMgMS43N2w2LjA2IDYuMDZjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDQuNTktNC41OWEuOTk2Ljk5NiAwIDAwMC0xLjQxTDcuNzMgMS43M3pNMi4zOCA3LjA5Yy0uMzEtLjMtLjQ3LS43LS40Ny0xLjEzVjMuNWMwLS44OC43Mi0xLjU5IDEuNTktMS41OWgyLjQ3Yy40MiAwIC44My4xNiAxLjEzLjQ3bDYuMTQgNi4xMy00LjczIDQuNzMtNi4xMy02LjE1ek0zLjAxIDNoMnYySDNWM2guMDF6Ii8+PC9zdmc+CisgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjNiNzwvc3Bhbj4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC9iMWU3YWZkNTk2NGNiZTFhZWFiNmYwYTJkNWIzMzg4NDY5M2ExNDNhIiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgPGNvZGU+YjFlN2FmZDwvY29kZT4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisgICAgICAgIAorICAgICAgPC91bD4KKyAgICAgIAorCisgIDwvZGl2PjwhLS0gLy5tZXRhIC0tPgorCisgIDxkaXYgY2xhc3M9ImNvbC0xMiBjb2wtbWQtOSBjb2wtbGctMTAgcHgtbWQtMyBweS1tZC00IHJlbGVhc2UtbWFpbi1zZWN0aW9uIGNvbW1pdCBvcGVuIGZsb2F0LWxlZnQiPgorICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtaGVhZGVyIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLXN0YXJ0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iZjEgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtbm9ybWFsIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy90YWcvdjIuM2I3Ij52Mi4zYjc8L2E+CisgICAgICAgIDwvZGl2PgorCisgICAgICAgICAgPHNwYW4gY2xhc3M9ImQtbWQtbm9uZSBmbGV4LXNocmluay0wIG1sLTIgbXQtMiBtdC1tZC0wIExhYmVsIExhYmVsLS1vdXRsaW5lIExhYmVsLS1wcmVyZWxlYXNlIj4KKyAgICAgICAgICAgICAgUHJlLXJlbGVhc2UKKyAgICAgICAgICA8L3NwYW4+CisKKyAgICAgIDwvZGl2PgorICAgICAgICA8dWwgY2xhc3M9ImQtZmxleCBkLW1kLW5vbmUgZmxleC1pdGVtcy1jZW50ZXIgbWItMSBsaXN0LXN0eWxlLW5vbmUiPgorICAgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtci0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuM2I3IiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4zYjciPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tdGFnIiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy43MyAxLjczQzcuMjYgMS4yNiA2LjYyIDEgNS45NiAxSDMuNUMyLjEzIDEgMSAyLjEzIDEgMy41djIuNDdjMCAuNjYuMjcgMS4zLjczIDEuNzdsNi4wNiA2LjA2Yy4zOS4zOSAxLjAyLjM5IDEuNDEgMGw0LjU5LTQuNTlhLjk5Ni45OTYgMCAwMDAtMS40MUw3LjczIDEuNzN6TTIuMzggNy4wOWMtLjMxLS4zLS40Ny0uNy0uNDctMS4xM1YzLjVjMC0uODguNzItMS41OSAxLjU5LTEuNTloMi40N2MuNDIgMCAuODMuMTYgMS4xMy40N2w2LjE0IDYuMTMtNC43MyA0LjczLTYuMTMtNi4xNXpNMy4wMSAzaDJ2MkgzVjNoLjAxeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0iY3NzLXRydW5jYXRlLXRhcmdldCIgc3R5bGU9Im1heC13aWR0aDogMTI1cHgiPnYyLjNiNzwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorCisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIgZmxleC1hdXRvIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC9iMWU3YWZkNTk2NGNiZTFhZWFiNmYwYTJkNWIzMzg4NDY5M2ExNDNhIiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxjb2RlPmIxZTdhZmQ8L2NvZGU+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9saT4KKyAgICAgICAgICAKKworICAgICAgICAgIAorCisgICAgICAgIDwvdWw+CisgICAgICAKKzxwIGNsYXNzPSJmNSB0ZXh0LWdyYXkgbXQtMiBtdC1tZC0xIG1iLTIgbWItbWQtNCI+CisgICAgPGEgY2xhc3M9ImQtaW5saW5lLWJsb2NrIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+PGltZyBjbGFzcz0iYXZhdGFyIiBzcmM9Imh0dHBzOi8vYXZhdGFyczMuZ2l0aHVidXNlcmNvbnRlbnQuY29tL3UvNDg4MTAzP3M9NDAmYW1wO3Y9NCIgd2lkdGg9IjIwIiBoZWlnaHQ9IjIwIiBhbHQ9IkBtaWNoYWVscnN3ZWV0IiAvPjwvYT4KKyAgICA8YSBjbGFzcz0idGV4dC1ib2xkIHRleHQtZ3JheSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0idXNlciIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvdXNlcnMvbWljaGFlbHJzd2VldC9ob3ZlcmNhcmQiIGRhdGEtb2N0by1jbGljaz0iaG92ZXJjYXJkLWxpbmstY2xpY2siIGRhdGEtb2N0by1kaW1lbnNpb25zPSJsaW5rX3R5cGU6c2VsZiIgaHJlZj0iL21pY2hhZWxyc3dlZXQiPm1pY2hhZWxyc3dlZXQ8L2E+CisgICAgcmVsZWFzZWQgdGhpcworICAgIDxyZWxhdGl2ZS10aW1lIGRhdGV0aW1lPSIyMDE4LTEyLTE0VDE1OjI1OjQwWiIgY2xhc3M9Im5vLXdyYXAiPkRlYyAxNCwgMjAxODwvcmVsYXRpdmUtdGltZT4KKyAgICAmbWlkZG90OworICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbXBhcmUvdjIuM2I3Li4ubWFzdGVyIj4KKyAgICAzNTAgY29tbWl0czwvYT4KKyAgICB0byBtYXN0ZXIKKyAgICBzaW5jZSB0aGlzIHJlbGVhc2UKKzwvcD4KKyAgICA8L2Rpdj4KKworICAgIAorCisgIDxkaXYgY2xhc3M9Im1hcmtkb3duLWJvZHkiPgorICAgIDxwPkNVUFMgMi4zYjcgaXMgbm93IGF2YWlsYWJsZSBmb3IgZG93bmxvYWQuICBUaGlzIGlzIHRoZSBzaXh0aCBiZXRhIG9mIHRoZSBDVVBTIDIuMyBzZXJpZXMgd2hpY2ggYWRvcHRzIHRoZSBuZXcgQ1VQUyBsaWNlbnNlLCBhZGRzIHN1cHBvcnQgZm9yIElQUCBwcmVzZXRzIGFuZCBmaW5pc2hpbmcgdGVtcGxhdGVzLCBhbmQgZml4ZXMgYSBudW1iZXIgb2YgYnVncyBhbmQgInBvbGlzaCIgaXNzdWVzLjwvcD4KKzxwPkNoYW5nZXMgaW5jbHVkZTo8L3A+Cis8dWw+Cis8bGk+Rml4ZWQgc29tZSBidWlsZCBmYWlsdXJlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzg4OTE3MDI3IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDUxIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDUxL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDUxIj4jNTQ1MTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM5MTE0MzU4NCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ2MyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTQ2My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTQ2MyI+IzU0NjM8L2E+KTwvbGk+Cis8bGk+UnVubmluZyBwcGRtZXJnZSB3aXRoIHRoZSBzYW1lIGlucHV0IGFuZCBvdXRwdXQgZmlsZW5hbWVzIGRpZCBub3Qgd29yayBhczxicj4KK2FkdmVydGlzZWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4OTI4MzgwNiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ1NSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0NTUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ1NSI+IzU0NTU8L2E+KTwvbGk+Cis8L3VsPgorPHA+RW5qb3khPC9wPgorICA8L2Rpdj4KKworCisgIDxkZXRhaWxzCisgICAgY2xhc3M9ImRldGFpbHMtcmVzZXQgRGV0YWlscy1lbGVtZW50IGJvcmRlci10b3AgcHQtMyBtdC00IG1iLTIgbWItbWQtNCIKKyAgICAKKyAgICAKKyAgICA+CisgICAgPHN1bW1hcnk+CisgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLWNsb3NlZCI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLXJpZ2h0IiB2aWV3Qm94PSIwIDAgNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTAgMTRsNi02LTYtNnYxMnoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJtci0yIERldGFpbHMtY29udGVudC0tb3BlbiI+PHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRyaWFuZ2xlLWRvd24iIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTIiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDVsNiA2IDYtNkgweiIvPjwvc3ZnPjwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9InRleHQtYm9sZCI+QXNzZXRzPC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibWwtMSBDb3VudGVyIj40PC9zcGFuPgorICAgICAgPC9kaXY+CisgICAgPC9zdW1tYXJ5PgorICAgIDxkaXYgY2xhc3M9IkJveCBCb3gtLWNvbmRlbnNlZCBtdC0zIj4KKyAgICAgIDxkaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjNiNy9jdXBzLTIuM2I3LXNvdXJjZS50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjNiNy1zb3VyY2UudGFyLmd6PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgICAgPHNtYWxsIGNsYXNzPSJwbC0yIHRleHQtZ3JheSBmbGV4LXNocmluay0wIj45Ljc3IE1CPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWZsZXggZmxleC1qdXN0aWZ5LWJldHdlZW4gZmxleC1pdGVtcy1jZW50ZXIgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvcmVsZWFzZXMvZG93bmxvYWQvdjIuM2I3L2N1cHMtMi4zYjctc291cmNlLnRhci5nei5zaWciIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjNiNy1zb3VyY2UudGFyLmd6LnNpZzwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+NTg1IEJ5dGVzPC9zbWFsbD4KKyAgICAgICAgICA8L2Rpdj4KKworCisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjNiNy56aXAiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZmlsZS16aXAgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgdmlld0JveD0iMCAwIDEyIDE2IiB2ZXJzaW9uPSIxLjEiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik04LjUgMUgxYTEgMSAwIDAwLTEgMXYxMmExIDEgMCAwMDEgMWgxMGExIDEgMCAwMDEtMVY0LjVMOC41IDF6TTExIDE0SDFWMmgzdjFoMVYyaDNsMyAzdjl6TTUgNFYzaDF2MUg1ek00IDRoMXYxSDRWNHptMSAyVjVoMXYxSDV6TTQgNmgxdjFINFY2em0xIDJWN2gxdjFINXpNNCA5LjI4QTIgMiAwIDAwMyAxMXYxaDR2LTFhMiAyIDAgMDAtMi0yVjhINHYxLjI4ek02IDEwdjFINHYtMWgyeiIvPjwvc3ZnPgorICAgICAgICAgICAgICA8c3BhbiBjbGFzcz0icHgtMSB0ZXh0LWJvbGQiPlNvdXJjZSBjb2RlPC9zcGFuPiAoemlwKQorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4zYjcudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHRhci5neikKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2RldGFpbHM+CisKKworICA8L2Rpdj48IS0tIC8ucmVsZWFzZS1ib2R5IC0tPgorPC9kaXY+PCEtLSAvLnJlbGVhc2UgLS0+CisKKyAgICAgICAgPC9kaXY+CisKKworCisgICAgICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtZW50cnkiPgorICAgICAgICAgICAgCis8ZGl2IGNsYXNzPSJyZWxlYXNlIHB0LTIgcHQtbWQtMCBwYi0zIHBiLW1kLTAgY2xlYXJmaXggbGFiZWwtcHJlcmVsZWFzZSI+CisgIDxkaXYgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIGZsZXgtd3JhcCBmbGV4LWl0ZW1zLWNlbnRlciBjb2wtMTIgY29sLW1kLTMgY29sLWxnLTIgcHgtbWQtMyBwYi0xIHBiLW1kLTQgcHQtbWQtNCBmbG9hdC1sZWZ0IHRleHQtbWQtcmlnaHQgdi1hbGlnbi10b3AiPgorICAgIDxkaXYgY2xhc3M9ImZsZXgtYXV0byBmbGV4LXNlbGYtc3RhcnQiPgorICAgICAgICA8c3BhbiBjbGFzcz0iZmxleC1zaHJpbmstMCBMYWJlbCBMYWJlbC0tb3V0bGluZSBtYi1tZC0yIG1yLTIgbXItbWQtMCBMYWJlbC0tcHJlcmVsZWFzZSI+CisgICAgICAgICAgICBQcmUtcmVsZWFzZQorICAgICAgICA8L3NwYW4+CisKKworICAgIDwvZGl2PgorCisgICAgICA8dWwgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIG10LTIgbGlzdC1zdHlsZS1ub25lIj4KKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3RyZWUvdjIuM2I2IiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4zYjYiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuM2I2PC9zcGFuPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKworICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbWItMSI+CisgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0L2MxM2UyZjQ0ZWIxNWJjZGJmZjkxMjZkZjg2ZDFlZDlhNTEwOGU0N2MiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1naXQtY29tbWl0IiB2aWV3Qm94PSIwIDAgMTQgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjE0IiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMTAuODYgN2MtLjQ1LTEuNzItMi0zLTMuODYtMy0xLjg2IDAtMy40MSAxLjI4LTMuODYgM0gwdjJoMy4xNGMuNDUgMS43MiAyIDMgMy44NiAzIDEuODYgMCAzLjQxLTEuMjggMy44Ni0zSDE0VjdoLTMuMTR6TTcgMTAuMmMtMS4yMiAwLTIuMi0uOTgtMi4yLTIuMiAwLTEuMjIuOTgtMi4yIDIuMi0yLjIgMS4yMiAwIDIuMi45OCAyLjIgMi4yIDAgMS4yMi0uOTggMi4yLTIuMiAyLjJ6Ii8+PC9zdmc+CisgICAgICAgICAgICA8Y29kZT5jMTNlMmY0PC9jb2RlPgorICAgICAgICAgIDwvYT4KKyAgICAgICAgPC9saT4KKyAgICAgICAgCisgICAgICA8L3VsPgorICAgICAgCisKKyAgPC9kaXY+PCEtLSAvLm1ldGEgLS0+CisKKyAgPGRpdiBjbGFzcz0iY29sLTEyIGNvbC1tZC05IGNvbC1sZy0xMCBweC1tZC0zIHB5LW1kLTQgcmVsZWFzZS1tYWluLXNlY3Rpb24gY29tbWl0IG9wZW4gZmxvYXQtbGVmdCI+CisgICAgPGRpdiBjbGFzcz0icmVsZWFzZS1oZWFkZXIiPgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtc3RhcnQiPgorICAgICAgICA8ZGl2IGNsYXNzPSJmMSBmbGV4LWF1dG8gbWluLXdpZHRoLTAgdGV4dC1ub3JtYWwiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL3RhZy92Mi4zYjYiPnYyLjNiNjwvYT4KKyAgICAgICAgPC9kaXY+CisKKyAgICAgICAgICA8c3BhbiBjbGFzcz0iZC1tZC1ub25lIGZsZXgtc2hyaW5rLTAgbWwtMiBtdC0yIG10LW1kLTAgTGFiZWwgTGFiZWwtLW91dGxpbmUgTGFiZWwtLXByZXJlbGVhc2UiPgorICAgICAgICAgICAgICBQcmUtcmVsZWFzZQorICAgICAgICAgIDwvc3Bhbj4KKworICAgICAgPC9kaXY+CisgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGQtbWQtbm9uZSBmbGV4LWl0ZW1zLWNlbnRlciBtYi0xIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4zYjYiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjNiNiI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10YWciIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik03LjczIDEuNzNDNy4yNiAxLjI2IDYuNjIgMSA1Ljk2IDFIMy41QzIuMTMgMSAxIDIuMTMgMSAzLjV2Mi40N2MwIC42Ni4yNyAxLjMuNzMgMS43N2w2LjA2IDYuMDZjLjM5LjM5IDEuMDIuMzkgMS40MSAwbDQuNTktNC41OWEuOTk2Ljk5NiAwIDAwMC0xLjQxTDcuNzMgMS43M3pNMi4zOCA3LjA5Yy0uMzEtLjMtLjQ3LS43LS40Ny0xLjEzVjMuNWMwLS44OC43Mi0xLjU5IDEuNTktMS41OWgyLjQ3Yy40MiAwIC44My4xNiAxLjEzLjQ3bDYuMTQgNi4xMy00LjczIDQuNzMtNi4xMy02LjE1ek0zLjAxIDNoMnYySDNWM2guMDF6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuM2I2PC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiBmbGV4LWF1dG8iPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0L2MxM2UyZjQ0ZWIxNWJjZGJmZjkxMjZkZjg2ZDFlZDlhNTEwOGU0N2MiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPGNvZGU+YzEzZTJmNDwvY29kZT4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorICAgICAgICAgIAorCisgICAgICAgICAgCisKKyAgICAgICAgPC91bD4KKyAgICAgIAorPHAgY2xhc3M9ImY1IHRleHQtZ3JheSBtdC0yIG10LW1kLTEgbWItMiBtYi1tZC00Ij4KKyAgICA8YSBjbGFzcz0iZC1pbmxpbmUtYmxvY2siIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij48aW1nIGNsYXNzPSJhdmF0YXIiIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODgxMDM/cz00MCZhbXA7dj00IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGFsdD0iQG1pY2hhZWxyc3dlZXQiIC8+PC9hPgorICAgIDxhIGNsYXNzPSJ0ZXh0LWJvbGQgdGV4dC1ncmF5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+bWljaGFlbHJzd2VldDwvYT4KKyAgICByZWxlYXNlZCB0aGlzCisgICAgPHJlbGF0aXZlLXRpbWUgZGF0ZXRpbWU9IjIwMTgtMTItMDdUMTk6NTU6MTVaIiBjbGFzcz0ibm8td3JhcCI+RGVjIDcsIDIwMTg8L3JlbGF0aXZlLXRpbWU+CisgICAgJm1pZGRvdDsKKyAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21wYXJlL3YyLjNiNi4uLm1hc3RlciI+CisgICAgMzU4IGNvbW1pdHM8L2E+CisgICAgdG8gbWFzdGVyCisgICAgc2luY2UgdGhpcyByZWxlYXNlCis8L3A+CisgICAgPC9kaXY+CisKKyAgICAKKworICA8ZGl2IGNsYXNzPSJtYXJrZG93bi1ib2R5Ij4KKyAgICA8cD5DVVBTIDIuM2I2IGlzIG5vdyBhdmFpbGFibGUgZm9yIGRvd25sb2FkLiBUaGlzIGlzIHRoZSBzaXh0aCBiZXRhIG9mIHRoZSBDVVBTIDIuMyBzZXJpZXMgd2hpY2ggYWRvcHRzIHRoZSBuZXcgQ1VQUyBsaWNlbnNlLCBhZGRzIHN1cHBvcnQgZm9yIElQUCBwcmVzZXRzIGFuZCBmaW5pc2hpbmcgdGVtcGxhdGVzLCBhbmQgZml4ZXMgYSBudW1iZXIgb2YgYnVncyBhbmQg4oCccG9saXNo4oCdIGlzc3Vlcy4gQ2hhbmdlcyBpbmNsdWRlOjwvcD4KKzx1bD4KKzxsaT5Mb2NhbGl6YXRpb24gdXBkYXRlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzMzE0ODc0NDgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzMzkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzUzMzkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzUzMzkiPiM1MzM5PC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzM4MzcxMDcwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzQ4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81MzQ4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81MzQ4Ij4jNTM0ODwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM0NjAzMTAzOCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM2MiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUzNjIvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM2MiI+IzUzNjI8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNjY3ODcyMTEiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MDgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0MDgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0MDgiPiM1NDA4PC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzY4MDQ1MDc0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDEwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDEwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDEwIj4jNTQxMDwvYT4pPC9saT4KKzxsaT5Eb2N1bWVudGF0aW9uIHVwZGF0ZXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM0ODM1MzI4MiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM2OSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTM2OS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTM2OSI+IzUzNjk8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNjM0MDQ0ODciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MDIiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDAyL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MDIiPiM1NDAyPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzYzNDA1NzY0IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDAzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQwMy9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDAzIj4jNTQwMzwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM2NDU1Mjc3MiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQwNCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0MDQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQwNCI+IzU0MDQ8L2E+KTwvbGk+Cis8bGk+Q1ZFLTIwMTgtNDcwMDogTGludXggc2Vzc2lvbiBjb29raWVzIHVzZWQgYSBwcmVkaWN0YWJsZSByYW5kb20gbnVtYmVyIHNlZWQuPC9saT4KKzxsaT5BbGwgdXNlciBjb21tYW5kcyBub3cgc3VwcG9ydCB0aGUgPGNvZGU+LS1oZWxwPC9jb2RlPiBvcHRpb24gKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjMzMDU0MDk2NSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMyNiIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTMyNi9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTMyNiI+IzUzMjY8L2E+KTwvbGk+Cis8bGk+VGhlIDxjb2RlPmxwb3B0aW9uczwvY29kZT4gY29tbWFuZCBub3cgd29ya3Mgd2l0aCBJUFAgRXZlcnl3aGVyZSBwcmludGVycyB0aGF0IGhhdmUgbm90IHlldCBiZWVuIGFkZGVkIGFzIGxvY2FsIHF1ZXVlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMjQwNDc2MzYwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MDQ1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTA0NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MDQ1Ij4jNTA0NTwvYT4pPC9saT4KKzxsaT5UaGUgbHBhZG1pbiBjb21tYW5kIHdvdWxkIGNyZWF0ZSBhIG5vbi13b3JraW5nIHByaW50ZXIgaW4gc29tZSBlcnJvciBjYXNlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzE4OTQ2NTkwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzA1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTMwNS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzA1Ij4jNTMwNTwvYT4pPC9saT4KKzxsaT5UaGUgc2NoZWR1bGVyIHdvdWxkIGNyYXNoIGlmIGFuIGVtcHR5IDxjb2RlPkFjY2Vzc0xvZzwvY29kZT4gZGlyZWN0aXZlIHdhcyBzcGVjaWZpZWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjMyMDIwNTgyMCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMwOSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUzMDkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMwOSI+IzUzMDk8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBkaWQgbm90IGlkbGUtZXhpdCBvbiBzb21lIExpbnV4IGRpc3RyaWJ1dGlvbnMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjMyNjY4MTQ4MSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMxOSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUzMTkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMxOSI+IzUzMTk8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYSByZWdyZXNzaW9uIGluIHRoZSBjaGFuZ2VzIHRvIGlwcFZhbGlkYXRlQXR0cmlidXRlIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzMjk4NDkyMjgiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzMjIiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81MzIyL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzMjIiPiM1MzIyPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzMwNzk1OTEwIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzMwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81MzMwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81MzMwIj4jNTMzMDwvYT4pPC9saT4KKzxsaT5GaXhlZCBhIGNyYXNoIGJ1ZyBpbiB0aGUgRXBzb24gZG90IG1hdHJpeCBkcml2ZXIgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjMyOTkzMzcwMCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMyMyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUzMjMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMyMyI+IzUzMjM8L2E+KTwvbGk+Cis8bGk+QXV0b21hdGljIGRlYnVnIGxvZ2dpbmcgb2Ygam9iIGVycm9ycyBkaWQgbm90IHdvcmsgd2l0aCBzeXN0ZW1kIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzMzEyNTA1MDUiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzMzciIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzUzMzcvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzUzMzciPiM1MzM3PC9hPik8L2xpPgorPGxpPlRoZSB3ZWIgaW50ZXJmYWNlIGRpZCBub3QgbGlzdCB0aGUgSVBQIEV2ZXJ5d2hlcmUgImRyaXZlciIgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjMzMTMxMjcxMiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMzOCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUzMzgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTMzOCI+IzUzMzg8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBkaWQgbm90IHJlcG9ydCBhbGwgb2YgdGhlIHN1cHBvcnRlZCBqb2Igb3B0aW9ucyBhbmQgdmFsdWVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzMzMyNzY3ODMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzNDAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81MzQwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUzNDAiPiM1MzQwPC9hPik8L2xpPgorPGxpPlRoZSBJUFAgRXZlcnl3aGVyZSAiZHJpdmVyIiBub3cgcHJvcGVybHkgc3VwcG9ydHMgZmFjZS11cCBwcmludGVycyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzM3MDgzNDQ5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81MzQ1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81MzQ1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81MzQ1Ij4jNTM0NTwvYT4pPC9saT4KKzxsaT5GaXhlZCBzb21lIHR5cG9zIGluIHRoZSBsYWJlbCBwcmludGVyIGRyaXZlcnMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjMzOTE4NTU2NSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM1MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0icHVsbF9yZXF1ZXN0IiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL3B1bGwvNTM1MC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3B1bGwvNTM1MCI+IzUzNTA8L2E+KTwvbGk+Cis8bGk+U2V0dGluZyB0aGUgPGNvZGU+Q29tbXVuaXR5PC9jb2RlPiBuYW1lIHRvIHRoZSBlbXB0eSBzdHJpbmcgaW4gPGNvZGU+c25tcC5jb25mPC9jb2RlPiBub3cgZGlzYWJsZXMgU05NUCBzdXBwbHkgbGV2ZWwgbW9uaXRvcmluZyBieSBhbGwgdGhlIHN0YW5kYXJkIG5ldHdvcmsgYmFja2VuZHMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM0MDYyNDA5MCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM1NCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUzNTQvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM1NCI+IzUzNTQ8L2E+KTwvbGk+Cis8bGk+TXVsdGktZmlsZSBqb2JzIGNvdWxkIGdldCBzdHVjayBpZiB0aGUgYmFja2VuZCBmYWlsZWQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM0NTA2OTc4NyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM1OSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUzNTkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM1OSI+IzUzNTk8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNzEwOTI5NTciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MTMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0MTMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0MTMiPiM1NDEzPC9hPik8L2xpPgorPGxpPlRoZSBJUFAgRXZlcnl3aGVyZSAiZHJpdmVyIiBubyBsb25nZXIgZG9lcyBsb2NhbCBmaWx0ZXJpbmcgd2hlbiBwcmludGluZyB0byBhIHNoYXJlZCBDVVBTIHByaW50ZXIgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM0NTM3MTA2NCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM2MSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUzNjEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM2MSI+IzUzNjE8L2E+KTwvbGk+Cis8bGk+VGhlIGxwYWRtaW4gY29tbWFuZCBub3cgY29ycmVjdGx5IHJlcG9ydHMgSVBQIGVycm9ycyB3aGVuIGNvbmZpZ3VyaW5nIGFuIElQUCBFdmVyeXdoZXJlIHByaW50ZXIgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM0ODQ1NDY2OSIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM3MCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUzNzAvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM3MCI+IzUzNzA8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgc29tZSBtZW1vcnkgbGVha3MgZGlzY292ZXJlZCBieSBDb3Zlcml0eSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzUwODE3MDU2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzc1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81Mzc1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81Mzc1Ij4jNTM3NTwvYT4pPC9saT4KKzxsaT5UaGUgUFBEIGNvbXBpbGVyIGluY29ycmVjdGx5IHRlcm1pbmF0ZWQgSkNMIG9wdGlvbnMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM1MzkyMzQ1MyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM3OSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUzNzkvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM3OSI+IzUzNzk8L2E+KTwvbGk+Cis8bGk+VGhlIGN1cHN0ZXN0cHBkIHV0aWxpdHkgZGlkIG5vdCBnZW5lcmF0ZSBlcnJvcnMgZm9yIG1pc3NpbmcvbWlzbWF0Y2hlZCBDbG9zZVVJL0pDTENsb3NlVUkga2V5d29yZHMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM1NDM2NjAxOCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM4MSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUzODEvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM4MSI+IzUzODE8L2E+KTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBub3cgcmVwb3J0cyB0aGUgYWN0dWFsIGxvY2F0aW9uIG9mIHRoZSBsb2cgZmlsZSAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzYwODMwMzYyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk4IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81Mzk4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81Mzk4Ij4jNTM5ODwvYT4pPC9saT4KKzxsaT5BZGRlZCBVU0IgcXVpcmsgcnVsZXMgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM1NzczMzI4NiIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM5NSIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzUzOTUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTM5NSI+IzUzOTU8L2E+LCBJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNzQ3ODkzMTIiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MjAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDIwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MjAiPiM1NDIwPC9hPiwgSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzgzMzUzMTQzIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDQzIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ0My9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDQzIj4jNTQ0MzwvYT4pPC9saT4KKzxsaT5UaGUgZ2VuZXJhdGVkIFBQRCBmaWxlcyBmb3IgSVBQIEV2ZXJ5d2hlcmUgcHJpbnRlcnMgZGlkIG5vdCBjb250YWluIHRoZSBjdXBzTWFudWFsQ29waWVzIGtleXdvcmQgKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM3OTE2ODcwMCIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzMyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzMyI+IzU0MzM8L2E+KTwvbGk+Cis8bGk+S2VyYmVyb3MgY3JlZGVudGlhbHMgbWlnaHQgYmUgdHJ1bmNhdGVkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNzk5OTI1NzIiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9InB1bGxfcmVxdWVzdCIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9wdWxsLzU0MzUvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9wdWxsLzU0MzUiPiM1NDM1PC9hPik8L2xpPgorPGxpPlRoZSBoYW5kbGluZyBvZiA8Y29kZT5NYXhKb2JUaW1lIDA8L2NvZGU+IGRpZCBub3QgbWF0Y2ggdGhlIGRvY3VtZW50YXRpb24gKElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4MTI0Nzg2MyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzOCIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzgvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzOCI+IzU0Mzg8L2E+KTwvbGk+Cis8bGk+Rml4ZWQgYSBidWcgYWRkaW5nIGEgcXVldWUgd2l0aCB0aGUgPGNvZGU+LUU8L2NvZGU+IG9wdGlvbiAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzgxOTQyMDY5IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDQwIiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ0MC9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDQwIj4jNTQ0MDwvYT4pPC9saT4KKzxsaT5UaGUgPGNvZGU+Y3Vwc2FkZHNtYjwvY29kZT4gcHJvZ3JhbSBoYXMgYmVlbiByZW1vdmVkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzODgzMDIxNDciIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDkiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDQ5L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDkiPiM1NDQ5PC9hPik8L2xpPgorPGxpPlRoZSA8Y29kZT5jdXBzdGVzdGRzYzwvY29kZT4gcHJvZ3JhbSBoYXMgYmVlbiByZW1vdmVkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzODgzMDc1MTYiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NTAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDUwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NTAiPiM1NDUwPC9hPik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgd2FzIGJlaW5nIGJhY2tncm91bmRlZCBvbiBtYWNPUywgY2F1c2luZyBhcHBsaWNhdGlvbnMgdG8gc3BpbiAocmRhcjovLzQwNDM2MDgwKTwvbGk+Cis8bGk+VGhlIHNjaGVkdWxlciBkaWQgbm90IHZhbGlkYXRlIHRoYXQgcmVxdWlyZWQgaW5pdGlhbCByZXF1ZXN0IGF0dHJpYnV0ZXMgd2VyZSBpbiB0aGUgb3BlcmF0aW9uIGdyb3VwIChyZGFyOi8vNDEwOTgxNzgpPC9saT4KKzxsaT5BdXRoZW50aWNhdGlvbiBpbiB0aGUgd2ViIGludGVyZmFjZSBkaWQgbm90IHdvcmsgb24gbWFjT1MgKHJkYXI6Ly80MTQ0NDQ3Myk8L2xpPgorPGxpPkZpeGVkIGFuIGlzc3VlIHdpdGggSFRUUCBEaWdlc3QgYXV0aGVudGljYXRpb24gKHJkYXI6Ly80MTcwOTA4Nik8L2xpPgorPGxpPlRoZSBzY2hlZHVsZXIgY291bGQgY3Jhc2ggd2hlbiBqb2IgaGlzdG9yeSB3YXMgcHVyZ2VkIChyZGFyOi8vNDIxOTgwNTcpPC9saT4KKzxsaT5GaXhlZCBhIGNyYXNoIGJ1ZyB3aGVuIG1hcHBpbmcgUFBEIGR1cGxleCBvcHRpb25zIHRvIElQUCBhdHRyaWJ1dGVzIChyZGFyOi8vNDYxODM5NzYpPC9saT4KKzxsaT5GaXhlZCBhIG1lbW9yeSBsZWFrIGZvciBzb21lIElQUCAoZXh0ZW5zaW9uKSBzeW50YXhlcy48L2xpPgorPGxpPlRoZSA8Y29kZT5jdXBzY2dpPC9jb2RlPiwgPGNvZGU+Y3Vwc21pbWU8L2NvZGU+LCBhbmQgPGNvZGU+Y3Vwc3BwZGM8L2NvZGU+IHN1cHBvcnQgbGlicmFyaWVzIGFyZSBubyBsb25nZXIgaW5zdGFsbGVkIGFzIHNoYXJlZCBsaWJyYXJpZXMuPC9saT4KKzxsaT5UaGUgPGNvZGU+c25tcDwvY29kZT4gYmFja2VuZCBpcyBub3cgZGVwcmVjYXRlZC48L2xpPgorPC91bD4KKzxwPkVuam95ITwvcD4KKyAgPC9kaXY+CisKKworICA8ZGV0YWlscworICAgIGNsYXNzPSJkZXRhaWxzLXJlc2V0IERldGFpbHMtZWxlbWVudCBib3JkZXItdG9wIHB0LTMgbXQtNCBtYi0yIG1iLW1kLTQiCisgICAgCisgICAgCisgICAgPgorICAgIDxzdW1tYXJ5PgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1jbG9zZWQiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1yaWdodCIgdmlld0JveD0iMCAwIDYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDE0bDYtNi02LTZ2MTJ6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLW9wZW4iPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1kb3duIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA1bDYgNiA2LTZIMHoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LWJvbGQiPkFzc2V0czwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1sLTEgQ291bnRlciI+NDwvc3Bhbj4KKyAgICAgIDwvZGl2PgorICAgIDwvc3VtbWFyeT4KKyAgICA8ZGl2IGNsYXNzPSJCb3ggQm94LS1jb25kZW5zZWQgbXQtMyI+CisgICAgICA8ZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4zYjYvY3Vwcy0yLjNiNi1zb3VyY2UudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4zYjYtc291cmNlLnRhci5nejwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+OS43NyBNQjwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjNiNi9jdXBzLTIuM2I2LXNvdXJjZS50YXIuZ3ouc2lnIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIG1pbi13aWR0aC0wIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXBhY2thZ2UgZmxleC1zaHJpbmstMCB0ZXh0LWdyYXkiIHZpZXdCb3g9IjAgMCAxNiAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xIDQuMjd2Ny40N2MwIC40NS4zLjg0Ljc1Ljk3bDYuNSAxLjczYy4xNi4wNS4zNC4wNS41IDBsNi41LTEuNzNjLjQ1LS4xMy43NS0uNTIuNzUtLjk3VjQuMjdjMC0uNDUtLjMtLjg0LS43NS0uOTdsLTYuNS0xLjc0YTEuNCAxLjQgMCAwMC0uNSAwTDEuNzUgMy4zYy0uNDUuMTMtLjc1LjUyLS43NS45N3ptNyA5LjA5bC02LTEuNTlWNWw2IDEuNjF2Ni43NXpNMiA0bDIuNS0uNjdMMTEgNS4wNmwtMi41LjY3TDIgNHptMTMgNy43N2wtNiAxLjU5VjYuNjFsMi0uNTVWOC41bDItLjUzVjUuNTNMMTUgNXY2Ljc3em0tMi03LjI0TDYuNSAyLjhsMi0uNTNMMTUgNGwtMiAuNTN6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJwbC0yIGZsZXgtYXV0byBtaW4td2lkdGgtMCB0ZXh0LWJvbGQiPmN1cHMtMi4zYjYtc291cmNlLnRhci5nei5zaWc8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjU4NSBCeXRlczwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisKKworICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4zYjYuemlwIiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHppcCkKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgICAgICA8ZGl2IGNsYXNzPSJkLWJsb2NrIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2FyY2hpdmUvdjIuM2I2LnRhci5neiIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh0YXIuZ3opCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICA8L2Rpdj4KKyAgICA8L2Rpdj4KKyAgPC9kZXRhaWxzPgorCisKKyAgPC9kaXY+PCEtLSAvLnJlbGVhc2UtYm9keSAtLT4KKzwvZGl2PjwhLS0gLy5yZWxlYXNlIC0tPgorCisgICAgICAgIDwvZGl2PgorCisKKworICAgICAgICA8ZGl2IGNsYXNzPSJyZWxlYXNlLWVudHJ5Ij4KKyAgICAgICAgICAgIAorPGRpdiBjbGFzcz0icmVsZWFzZSBwdC0yIHB0LW1kLTAgcGItMyBwYi1tZC0wIGNsZWFyZml4IGxhYmVsLSI+CisgIDxkaXYgY2xhc3M9ImQtbm9uZSBkLW1kLWJsb2NrIGZsZXgtd3JhcCBmbGV4LWl0ZW1zLWNlbnRlciBjb2wtMTIgY29sLW1kLTMgY29sLWxnLTIgcHgtbWQtMyBwYi0xIHBiLW1kLTQgcHQtbWQtNCBmbG9hdC1sZWZ0IHRleHQtbWQtcmlnaHQgdi1hbGlnbi10b3AiPgorICAgIDxkaXYgY2xhc3M9ImZsZXgtYXV0byBmbGV4LXNlbGYtc3RhcnQiPgorCisKKyAgICA8L2Rpdj4KKworICAgICAgPHVsIGNsYXNzPSJkLW5vbmUgZC1tZC1ibG9jayBtdC0yIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgIDxsaSBjbGFzcz0iZC1ibG9jayBtYi0xIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy90cmVlL3YyLjIuMTAiIGNsYXNzPSJtdXRlZC1saW5rIGNzcy10cnVuY2F0ZSIgdGl0bGU9InYyLjIuMTAiPgorICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJjc3MtdHJ1bmNhdGUtdGFyZ2V0IiBzdHlsZT0ibWF4LXdpZHRoOiAxMjVweCI+djIuMi4xMDwvc3Bhbj4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisKKyAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1iLTEiPgorICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL2NvbW1pdC8yNWIyMzM4MzQ2ZWYzYWJiYjkzZWE4ODQ3Njg4N2NiYTdiMmI4NmY4IiBjbGFzcz0ibXV0ZWQtbGluayI+CisgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tZ2l0LWNvbW1pdCIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEwLjg2IDdjLS40NS0xLjcyLTItMy0zLjg2LTMtMS44NiAwLTMuNDEgMS4yOC0zLjg2IDNIMHYyaDMuMTRjLjQ1IDEuNzIgMiAzIDMuODYgMyAxLjg2IDAgMy40MS0xLjI4IDMuODYtM0gxNFY3aC0zLjE0ek03IDEwLjJjLTEuMjIgMC0yLjItLjk4LTIuMi0yLjIgMC0xLjIyLjk4LTIuMiAyLjItMi4yIDEuMjIgMCAyLjIuOTggMi4yIDIuMiAwIDEuMjItLjk4IDIuMi0yLjIgMi4yeiIvPjwvc3ZnPgorICAgICAgICAgICAgPGNvZGU+MjViMjMzODwvY29kZT4KKyAgICAgICAgICA8L2E+CisgICAgICAgIDwvbGk+CisgICAgICAgIAorICAgICAgPC91bD4KKyAgICAgIAorCisgIDwvZGl2PjwhLS0gLy5tZXRhIC0tPgorCisgIDxkaXYgY2xhc3M9ImNvbC0xMiBjb2wtbWQtOSBjb2wtbGctMTAgcHgtbWQtMyBweS1tZC00IHJlbGVhc2UtbWFpbi1zZWN0aW9uIGNvbW1pdCBvcGVuIGZsb2F0LWxlZnQiPgorICAgIDxkaXYgY2xhc3M9InJlbGVhc2UtaGVhZGVyIj4KKyAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLXN0YXJ0Ij4KKyAgICAgICAgPGRpdiBjbGFzcz0iZjEgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtbm9ybWFsIj4KKyAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy90YWcvdjIuMi4xMCI+djIuMi4xMDwvYT4KKyAgICAgICAgPC9kaXY+CisKKworICAgICAgPC9kaXY+CisgICAgICAgIDx1bCBjbGFzcz0iZC1mbGV4IGQtbWQtbm9uZSBmbGV4LWl0ZW1zLWNlbnRlciBtYi0xIGxpc3Qtc3R5bGUtbm9uZSI+CisgICAgICAgICAgPGxpIGNsYXNzPSJkLWJsb2NrIG1yLTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvdHJlZS92Mi4yLjEwIiBjbGFzcz0ibXV0ZWQtbGluayBjc3MtdHJ1bmNhdGUiIHRpdGxlPSJ2Mi4yLjEwIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLXRhZyIgdmlld0JveD0iMCAwIDE0IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNCIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTcuNzMgMS43M0M3LjI2IDEuMjYgNi42MiAxIDUuOTYgMUgzLjVDMi4xMyAxIDEgMi4xMyAxIDMuNXYyLjQ3YzAgLjY2LjI3IDEuMy43MyAxLjc3bDYuMDYgNi4wNmMuMzkuMzkgMS4wMi4zOSAxLjQxIDBsNC41OS00LjU5YS45OTYuOTk2IDAgMDAwLTEuNDFMNy43MyAxLjczek0yLjM4IDcuMDljLS4zMS0uMy0uNDctLjctLjQ3LTEuMTNWMy41YzAtLjg4LjcyLTEuNTkgMS41OS0xLjU5aDIuNDdjLjQyIDAgLjgzLjE2IDEuMTMuNDdsNi4xNCA2LjEzLTQuNzMgNC43My02LjEzLTYuMTV6TTMuMDEgM2gydjJIM1YzaC4wMXoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9ImNzcy10cnVuY2F0ZS10YXJnZXQiIHN0eWxlPSJtYXgtd2lkdGg6IDEyNXB4Ij52Mi4yLjEwPC9zcGFuPgorICAgICAgICAgICAgPC9hPgorICAgICAgICAgIDwvbGk+CisKKyAgICAgICAgICA8bGkgY2xhc3M9ImQtYmxvY2sgbXItMiBmbGV4LWF1dG8iPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvY29tbWl0LzI1YjIzMzgzNDZlZjNhYmJiOTNlYTg4NDc2ODg3Y2JhN2IyYjg2ZjgiIGNsYXNzPSJtdXRlZC1saW5rIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWdpdC1jb21taXQiIHZpZXdCb3g9IjAgMCAxNCAxNiIgdmVyc2lvbj0iMS4xIiB3aWR0aD0iMTQiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0xMC44NiA3Yy0uNDUtMS43Mi0yLTMtMy44Ni0zLTEuODYgMC0zLjQxIDEuMjgtMy44NiAzSDB2MmgzLjE0Yy40NSAxLjcyIDIgMyAzLjg2IDMgMS44NiAwIDMuNDEtMS4yOCAzLjg2LTNIMTRWN2gtMy4xNHpNNyAxMC4yYy0xLjIyIDAtMi4yLS45OC0yLjItMi4yIDAtMS4yMi45OC0yLjIgMi4yLTIuMiAxLjIyIDAgMi4yLjk4IDIuMiAyLjIgMCAxLjIyLS45OCAyLjItMi4yIDIuMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPGNvZGU+MjViMjMzODwvY29kZT4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2xpPgorICAgICAgICAgIAorCisgICAgICAgICAgCisKKyAgICAgICAgPC91bD4KKyAgICAgIAorPHAgY2xhc3M9ImY1IHRleHQtZ3JheSBtdC0yIG10LW1kLTEgbWItMiBtYi1tZC00Ij4KKyAgICA8YSBjbGFzcz0iZC1pbmxpbmUtYmxvY2siIGRhdGEtaG92ZXJjYXJkLXR5cGU9InVzZXIiIGRhdGEtaG92ZXJjYXJkLXVybD0iL3VzZXJzL21pY2hhZWxyc3dlZXQvaG92ZXJjYXJkIiBkYXRhLW9jdG8tY2xpY2s9ImhvdmVyY2FyZC1saW5rLWNsaWNrIiBkYXRhLW9jdG8tZGltZW5zaW9ucz0ibGlua190eXBlOnNlbGYiIGhyZWY9Ii9taWNoYWVscnN3ZWV0Ij48aW1nIGNsYXNzPSJhdmF0YXIiIHNyYz0iaHR0cHM6Ly9hdmF0YXJzMy5naXRodWJ1c2VyY29udGVudC5jb20vdS80ODgxMDM/cz00MCZhbXA7dj00IiB3aWR0aD0iMjAiIGhlaWdodD0iMjAiIGFsdD0iQG1pY2hhZWxyc3dlZXQiIC8+PC9hPgorICAgIDxhIGNsYXNzPSJ0ZXh0LWJvbGQgdGV4dC1ncmF5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJ1c2VyIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii91c2Vycy9taWNoYWVscnN3ZWV0L2hvdmVyY2FyZCIgZGF0YS1vY3RvLWNsaWNrPSJob3ZlcmNhcmQtbGluay1jbGljayIgZGF0YS1vY3RvLWRpbWVuc2lvbnM9ImxpbmtfdHlwZTpzZWxmIiBocmVmPSIvbWljaGFlbHJzd2VldCI+bWljaGFlbHJzd2VldDwvYT4KKyAgICByZWxlYXNlZCB0aGlzCisgICAgPHJlbGF0aXZlLXRpbWUgZGF0ZXRpbWU9IjIwMTgtMTItMDdUMTk6NTc6NTVaIiBjbGFzcz0ibm8td3JhcCI+RGVjIDcsIDIwMTg8L3JlbGF0aXZlLXRpbWU+CisgICAgJm1pZGRvdDsKKyAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9jb21wYXJlL3YyLjIuMTAuLi5tYXN0ZXIiPgorICAgIDc5MyBjb21taXRzPC9hPgorICAgIHRvIG1hc3RlcgorICAgIHNpbmNlIHRoaXMgcmVsZWFzZQorPC9wPgorICAgIDwvZGl2PgorCisgICAgCisKKyAgPGRpdiBjbGFzcz0ibWFya2Rvd24tYm9keSI+CisgICAgPHA+Q1VQUyAyLjIuMTAgaXMgYSBidWcgZml4IHJlbGVhc2UgdGhhdCBhZGRyZXNzZXMgaXNzdWVzIGluIHRoZSBzY2hlZHVsZXIsIElQUCBFdmVyeXdoZXJlIHN1cHBvcnQsIENVUFMgbGlicmFyeSwgYW5kIFVTQiBwcmludGVyIHN1cHBvcnQuIENoYW5nZXMgaW5jbHVkZTo8L3A+Cis8dWw+Cis8bGk+Q1ZFLTIwMTgtNDMwMDogTGludXggc2Vzc2lvbiBjb29raWVzIHVzZWQgYSBwcmVkaWN0YWJsZSByYW5kb20gbnVtYmVyIHNlZWQuPC9saT4KKzxsaT5UaGUgPGNvZGU+bHBvcHRpb25zPC9jb2RlPiBjb21tYW5kIG5vdyB3b3JrcyB3aXRoIElQUCBFdmVyeXdoZXJlIHByaW50ZXJzIHRoYXQgaGF2ZSBub3QgeWV0IGJlZW4gYWRkZWQgYXMgbG9jYWwgcXVldWVzIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIyNDA0NzYzNjAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUwNDUiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81MDQ1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzUwNDUiPiM1MDQ1PC9hPik8L2xpPgorPGxpPkFkZGVkIFVTQiBxdWlyayBydWxlcyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzU3NzMzMjg2IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTM5NS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81Mzk1Ij4jNTM5NTwvYT4sIElzc3VlIDxhIGNsYXNzPSJpc3N1ZS1saW5rIGpzLWlzc3VlLWxpbmsiIGRhdGEtZXJyb3ItdGV4dD0iRmFpbGVkIHRvIGxvYWQgaXNzdWUgdGl0bGUiIGRhdGEtaWQ9IjM4MzM1MzE0MyIgZGF0YS1wZXJtaXNzaW9uLXRleHQ9Iklzc3VlIHRpdGxlIGlzIHByaXZhdGUiIGRhdGEtdXJsPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ0MyIgZGF0YS1ob3ZlcmNhcmQtdHlwZT0iaXNzdWUiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDMvaG92ZXJjYXJkIiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9pc3N1ZXMvNTQ0MyI+IzU0NDM8L2E+KTwvbGk+Cis8bGk+VGhlIGdlbmVyYXRlZCBQUEQgZmlsZXMgZm9yIElQUCBFdmVyeXdoZXJlIHByaW50ZXJzIGRpZCBub3QgY29udGFpbiB0aGUgY3Vwc01hbnVhbENvcGllcyBrZXl3b3JkIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzNzkxNjg3MDAiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzMiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDMzL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzMiPiM1NDMzPC9hPik8L2xpPgorPGxpPktlcmJlcm9zIGNyZWRlbnRpYWxzIG1pZ2h0IGJlIHRydW5jYXRlZCAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzc5OTkyNTcyIiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDM1IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJwdWxsX3JlcXVlc3QiIGRhdGEtaG92ZXJjYXJkLXVybD0iL2FwcGxlL2N1cHMvcHVsbC81NDM1L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvcHVsbC81NDM1Ij4jNTQzNTwvYT4pPC9saT4KKzxsaT5UaGUgaGFuZGxpbmcgb2YgPGNvZGU+TWF4Sm9iVGltZSAwPC9jb2RlPiBkaWQgbm90IG1hdGNoIHRoZSBkb2N1bWVudGF0aW9uIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzODEyNDc4NjMiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzgiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDM4L2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0MzgiPiM1NDM4PC9hPik8L2xpPgorPGxpPkluY29ycG9yYXRlZCB0aGUgcGFnZSBhY2NvdW50aW5nIGNoYW5nZXMgZnJvbSBDVVBTIDIuMyAoSXNzdWUgPGEgY2xhc3M9Imlzc3VlLWxpbmsganMtaXNzdWUtbGluayIgZGF0YS1lcnJvci10ZXh0PSJGYWlsZWQgdG8gbG9hZCBpc3N1ZSB0aXRsZSIgZGF0YS1pZD0iMzgxNTMxNTc4IiBkYXRhLXBlcm1pc3Npb24tdGV4dD0iSXNzdWUgdGl0bGUgaXMgcHJpdmF0ZSIgZGF0YS11cmw9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDM5IiBkYXRhLWhvdmVyY2FyZC10eXBlPSJpc3N1ZSIgZGF0YS1ob3ZlcmNhcmQtdXJsPSIvYXBwbGUvY3Vwcy9pc3N1ZXMvNTQzOS9ob3ZlcmNhcmQiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL2lzc3Vlcy81NDM5Ij4jNTQzOTwvYT4pPC9saT4KKzxsaT5GaXhlZCBhIGJ1ZyBhZGRpbmcgYSBxdWV1ZSB3aXRoIHRoZSA8Y29kZT4tRTwvY29kZT4gb3B0aW9uIChJc3N1ZSA8YSBjbGFzcz0iaXNzdWUtbGluayBqcy1pc3N1ZS1saW5rIiBkYXRhLWVycm9yLXRleHQ9IkZhaWxlZCB0byBsb2FkIGlzc3VlIHRpdGxlIiBkYXRhLWlkPSIzODE5NDIwNjkiIGRhdGEtcGVybWlzc2lvbi10ZXh0PSJJc3N1ZSB0aXRsZSBpcyBwcml2YXRlIiBkYXRhLXVybD0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDAiIGRhdGEtaG92ZXJjYXJkLXR5cGU9Imlzc3VlIiBkYXRhLWhvdmVyY2FyZC11cmw9Ii9hcHBsZS9jdXBzL2lzc3Vlcy81NDQwL2hvdmVyY2FyZCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2FwcGxlL2N1cHMvaXNzdWVzLzU0NDAiPiM1NDQwPC9hPik8L2xpPgorPGxpPkZpeGVkIGEgY3Jhc2ggYnVnIHdoZW4gbWFwcGluZyBQUEQgZHVwbGV4IG9wdGlvbnMgdG8gSVBQIGF0dHJpYnV0ZXMgKHJkYXI6Ly80NjE4Mzk3Nik8L2xpPgorPC91bD4KKzxwPkVuam95ITwvcD4KKyAgPC9kaXY+CisKKworICA8ZGV0YWlscworICAgIGNsYXNzPSJkZXRhaWxzLXJlc2V0IERldGFpbHMtZWxlbWVudCBib3JkZXItdG9wIHB0LTMgbXQtNCBtYi0yIG1iLW1kLTQiCisgICAgCisgICAgCisgICAgPgorICAgIDxzdW1tYXJ5PgorICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1yLTIgRGV0YWlscy1jb250ZW50LS1jbG9zZWQiPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1yaWdodCIgdmlld0JveD0iMCAwIDYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjYiIGhlaWdodD0iMTYiIGFyaWEtaGlkZGVuPSJ0cnVlIj48cGF0aCBmaWxsLXJ1bGU9ImV2ZW5vZGQiIGQ9Ik0wIDE0bDYtNi02LTZ2MTJ6Ii8+PC9zdmc+PC9zcGFuPgorICAgICAgICA8c3BhbiBjbGFzcz0ibXItMiBEZXRhaWxzLWNvbnRlbnQtLW9wZW4iPjxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi10cmlhbmdsZS1kb3duIiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNMCA1bDYgNiA2LTZIMHoiLz48L3N2Zz48L3NwYW4+CisgICAgICAgIDxzcGFuIGNsYXNzPSJ0ZXh0LWJvbGQiPkFzc2V0czwvc3Bhbj4KKyAgICAgICAgPHNwYW4gY2xhc3M9Im1sLTEgQ291bnRlciI+NDwvc3Bhbj4KKyAgICAgIDwvZGl2PgorICAgIDwvc3VtbWFyeT4KKyAgICA8ZGl2IGNsYXNzPSJCb3ggQm94LS1jb25kZW5zZWQgbXQtMyI+CisgICAgICA8ZGl2PgorICAgICAgICAgIDxkaXYgY2xhc3M9ImQtZmxleCBmbGV4LWp1c3RpZnktYmV0d2VlbiBmbGV4LWl0ZW1zLWNlbnRlciBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9yZWxlYXNlcy9kb3dubG9hZC92Mi4yLjEwL2N1cHMtMi4yLjEwLXNvdXJjZS50YXIuZ3oiIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjIuMTAtc291cmNlLnRhci5nejwvc3Bhbj4KKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICAgIDxzbWFsbCBjbGFzcz0icGwtMiB0ZXh0LWdyYXkgZmxleC1zaHJpbmstMCI+OS45MiBNQjwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1iZXR3ZWVuIGZsZXgtaXRlbXMtY2VudGVyIHB5LTEgcHktbWQtMiBCb3gtYm9keSBweC0yIj4KKyAgICAgICAgICAgIDxhIGhyZWY9Ii9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3YyLjIuMTAvY3Vwcy0yLjIuMTAtc291cmNlLnRhci5nei5zaWciIHJlbD0ibm9mb2xsb3ciIGNsYXNzPSJkLWZsZXggZmxleC1pdGVtcy1jZW50ZXIgbWluLXdpZHRoLTAiPgorICAgICAgICAgICAgICA8c3ZnIGNsYXNzPSJvY3RpY29uIG9jdGljb24tcGFja2FnZSBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTEgNC4yN3Y3LjQ3YzAgLjQ1LjMuODQuNzUuOTdsNi41IDEuNzNjLjE2LjA1LjM0LjA1LjUgMGw2LjUtMS43M2MuNDUtLjEzLjc1LS41Mi43NS0uOTdWNC4yN2MwLS40NS0uMy0uODQtLjc1LS45N2wtNi41LTEuNzRhMS40IDEuNCAwIDAwLS41IDBMMS43NSAzLjNjLS40NS4xMy0uNzUuNTItLjc1Ljk3em03IDkuMDlsLTYtMS41OVY1bDYgMS42MXY2Ljc1ek0yIDRsMi41LS42N0wxMSA1LjA2bC0yLjUuNjdMMiA0em0xMyA3Ljc3bC02IDEuNTlWNi42MWwyLS41NVY4LjVsMi0uNTNWNS41M0wxNSA1djYuNzd6bS0yLTcuMjRMNi41IDIuOGwyLS41M0wxNSA0bC0yIC41M3oiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InBsLTIgZmxleC1hdXRvIG1pbi13aWR0aC0wIHRleHQtYm9sZCI+Y3Vwcy0yLjIuMTAtc291cmNlLnRhci5nei5zaWc8L3NwYW4+CisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgICA8c21hbGwgY2xhc3M9InBsLTIgdGV4dC1ncmF5IGZsZXgtc2hyaW5rLTAiPjU4NSBCeXRlczwvc21hbGw+CisgICAgICAgICAgPC9kaXY+CisKKworICAgICAgICAgIDxkaXYgY2xhc3M9ImQtYmxvY2sgcHktMSBweS1tZC0yIEJveC1ib2R5IHB4LTIiPgorICAgICAgICAgICAgPGEgaHJlZj0iL2FwcGxlL2N1cHMvYXJjaGl2ZS92Mi4yLjEwLnppcCIgcmVsPSJub2ZvbGxvdyIgY2xhc3M9ImQtZmxleCBmbGV4LWl0ZW1zLWNlbnRlciI+CisgICAgICAgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1maWxlLXppcCBmbGV4LXNocmluay0wIHRleHQtZ3JheSIgd2lkdGg9IjE2IiBoZWlnaHQ9IjE2IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguNSAxSDFhMSAxIDAgMDAtMSAxdjEyYTEgMSAwIDAwMSAxaDEwYTEgMSAwIDAwMS0xVjQuNUw4LjUgMXpNMTEgMTRIMVYyaDN2MWgxVjJoM2wzIDN2OXpNNSA0VjNoMXYxSDV6TTQgNGgxdjFINFY0em0xIDJWNWgxdjFINXpNNCA2aDF2MUg0VjZ6bTEgMlY3aDF2MUg1ek00IDkuMjhBMiAyIDAgMDAzIDExdjFoNHYtMWEyIDIgMCAwMC0yLTJWOEg0djEuMjh6TTYgMTB2MUg0di0xaDJ6Ii8+PC9zdmc+CisgICAgICAgICAgICAgIDxzcGFuIGNsYXNzPSJweC0xIHRleHQtYm9sZCI+U291cmNlIGNvZGU8L3NwYW4+ICh6aXApCisgICAgICAgICAgICA8L2E+CisgICAgICAgICAgPC9kaXY+CisgICAgICAgICAgPGRpdiBjbGFzcz0iZC1ibG9jayBweS0xIHB5LW1kLTIgQm94LWJvZHkgcHgtMiI+CisgICAgICAgICAgICA8YSBocmVmPSIvYXBwbGUvY3Vwcy9hcmNoaXZlL3YyLjIuMTAudGFyLmd6IiByZWw9Im5vZm9sbG93IiBjbGFzcz0iZC1mbGV4IGZsZXgtaXRlbXMtY2VudGVyIj4KKyAgICAgICAgICAgICAgPHN2ZyBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLWZpbGUtemlwIGZsZXgtc2hyaW5rLTAgdGV4dC1ncmF5IiB3aWR0aD0iMTYiIGhlaWdodD0iMTYiIHZpZXdCb3g9IjAgMCAxMiAxNiIgdmVyc2lvbj0iMS4xIiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOC41IDFIMWExIDEgMCAwMC0xIDF2MTJhMSAxIDAgMDAxIDFoMTBhMSAxIDAgMDAxLTFWNC41TDguNSAxek0xMSAxNEgxVjJoM3YxaDFWMmgzbDMgM3Y5ek01IDRWM2gxdjFINXpNNCA0aDF2MUg0VjR6bTEgMlY1aDF2MUg1ek00IDZoMXYxSDRWNnptMSAyVjdoMXYxSDV6TTQgOS4yOEEyIDIgMCAwMDMgMTF2MWg0di0xYTIgMiAwIDAwLTItMlY4SDR2MS4yOHpNNiAxMHYxSDR2LTFoMnoiLz48L3N2Zz4KKyAgICAgICAgICAgICAgPHNwYW4gY2xhc3M9InB4LTEgdGV4dC1ib2xkIj5Tb3VyY2UgY29kZTwvc3Bhbj4gKHRhci5neikKKyAgICAgICAgICAgIDwvYT4KKyAgICAgICAgICA8L2Rpdj4KKyAgICAgIDwvZGl2PgorICAgIDwvZGl2PgorICA8L2RldGFpbHM+CisKKworICA8L2Rpdj48IS0tIC8ucmVsZWFzZS1ib2R5IC0tPgorPC9kaXY+PCEtLSAvLnJlbGVhc2UgLS0+CisKKyAgICAgICAgPC9kaXY+CisKKyAgPC9kaXY+CisKKyAgPGRpdiBkYXRhLXBqYXggY2xhc3M9InBhZ2luYXRlLWNvbnRhaW5lciI+CisgICAgPGRpdiBjbGFzcz0icGFnaW5hdGlvbiI+PHNwYW4gY2xhc3M9ImRpc2FibGVkIj5QcmV2aW91czwvc3Bhbj48YSByZWw9Im5vZm9sbG93IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcz9hZnRlcj12Mi4yLjEwIj5OZXh0PC9hPjwvZGl2PgorICA8L2Rpdj4KKworCisgIDwvZGl2PgorPC9kaXY+CisKKyAgICA8L21haW4+CisgIDwvZGl2PgorICAKKworICA8L2Rpdj4KKworICAgICAgICAKKzxkaXYgY2xhc3M9ImZvb3RlciBjb250YWluZXItbGcgd2lkdGgtZnVsbCBwLXJlc3BvbnNpdmUiIHJvbGU9ImNvbnRlbnRpbmZvIj4KKyAgPGRpdiBjbGFzcz0icG9zaXRpb24tcmVsYXRpdmUgZC1mbGV4IGZsZXgtcm93LXJldmVyc2UgZmxleC1sZy1yb3cgZmxleC13cmFwIGZsZXgtbGctbm93cmFwIGZsZXgtanVzdGlmeS1jZW50ZXIgZmxleC1sZy1qdXN0aWZ5LWJldHdlZW4gcHQtNiBwYi0yIG10LTYgZjYgdGV4dC1ncmF5IGJvcmRlci10b3AgYm9yZGVyLWdyYXktbGlnaHQgIj4KKyAgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwIGNvbC0xMiBjb2wtbGctNSBmbGV4LWp1c3RpZnktY2VudGVyIGZsZXgtbGctanVzdGlmeS1iZXR3ZWVuIG1iLTIgbWItbGctMCI+CisgICAgICA8bGkgY2xhc3M9Im1yLTMgbXItbGctMCI+JmNvcHk7IDIwMTkgR2l0SHViLCBJbmMuPC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJtci0zIG1yLWxnLTAiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gdGVybXMsIHRleHQ6dGVybXMiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3Rlcm1zIj5UZXJtczwvYT48L2xpPgorICAgICAgICA8bGkgY2xhc3M9Im1yLTMgbXItbGctMCI+PGEgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBwcml2YWN5LCB0ZXh0OnByaXZhY3kiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zaXRlL3ByaXZhY3kiPlByaXZhY3k8L2E+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJtci0zIG1yLWxnLTAiPjxhIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gc2VjdXJpdHksIHRleHQ6c2VjdXJpdHkiIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmNvbS9zZWN1cml0eSI+U2VjdXJpdHk8L2E+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJtci0zIG1yLWxnLTAiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHVic3RhdHVzLmNvbS8iIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gc3RhdHVzLCB0ZXh0OnN0YXR1cyI+U3RhdHVzPC9hPjwvbGk+CisgICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGhlbHAsIHRleHQ6aGVscCIgaHJlZj0iaHR0cHM6Ly9oZWxwLmdpdGh1Yi5jb20iPkhlbHA8L2E+PC9saT4KKyAgICA8L3VsPgorCisgICAgPGEgYXJpYS1sYWJlbD0iSG9tZXBhZ2UiIHRpdGxlPSJHaXRIdWIiIGNsYXNzPSJmb290ZXItb2N0aWNvbiBkLW5vbmUgZC1sZy1ibG9jayBteC1sZy00IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20iPgorICAgICAgPHN2ZyBoZWlnaHQ9IjI0IiBjbGFzcz0ib2N0aWNvbiBvY3RpY29uLW1hcmstZ2l0aHViIiB2aWV3Qm94PSIwIDAgMTYgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjI0IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNOCAwQzMuNTggMCAwIDMuNTggMCA4YzAgMy41NCAyLjI5IDYuNTMgNS40NyA3LjU5LjQuMDcuNTUtLjE3LjU1LS4zOCAwLS4xOS0uMDEtLjgyLS4wMS0xLjQ5LTIuMDEuMzctMi41My0uNDktMi42OS0uOTQtLjA5LS4yMy0uNDgtLjk0LS44Mi0xLjEzLS4yOC0uMTUtLjY4LS41Mi0uMDEtLjUzLjYzLS4wMSAxLjA4LjU4IDEuMjMuODIuNzIgMS4yMSAxLjg3Ljg3IDIuMzMuNjYuMDctLjUyLjI4LS44Ny41MS0xLjA3LTEuNzgtLjItMy42NC0uODktMy42NC0zLjk1IDAtLjg3LjMxLTEuNTkuODItMi4xNS0uMDgtLjItLjM2LTEuMDIuMDgtMi4xMiAwIDAgLjY3LS4yMSAyLjIuODIuNjQtLjE4IDEuMzItLjI3IDItLjI3LjY4IDAgMS4zNi4wOSAyIC4yNyAxLjUzLTEuMDQgMi4yLS44MiAyLjItLjgyLjQ0IDEuMS4xNiAxLjkyLjA4IDIuMTIuNTEuNTYuODIgMS4yNy44MiAyLjE1IDAgMy4wNy0xLjg3IDMuNzUtMy42NSAzLjk1LjI5LjI1LjU0LjczLjU0IDEuNDggMCAxLjA3LS4wMSAxLjkzLS4wMSAyLjIgMCAuMjEuMTUuNDYuNTUuMzhBOC4wMTMgOC4wMTMgMCAwMDE2IDhjMC00LjQyLTMuNTgtOC04LTh6Ii8+PC9zdmc+Cis8L2E+CisgICA8dWwgY2xhc3M9Imxpc3Qtc3R5bGUtbm9uZSBkLWZsZXggZmxleC13cmFwIGNvbC0xMiBjb2wtbGctNSBmbGV4LWp1c3RpZnktY2VudGVyIGZsZXgtbGctanVzdGlmeS1iZXR3ZWVuIG1iLTIgbWItbGctMCI+CisgICAgICAgIDxsaSBjbGFzcz0ibXItMyBtci1sZy0wIj48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGNvbnRhY3QsIHRleHQ6Y29udGFjdCIgaHJlZj0iaHR0cHM6Ly9naXRodWIuY29tL2NvbnRhY3QiPkNvbnRhY3QgR2l0SHViPC9hPjwvbGk+CisgICAgICAgIDxsaSBjbGFzcz0ibXItMyBtci1sZy0wIj48YSBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vcHJpY2luZyIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byBQcmljaW5nLCB0ZXh0OlByaWNpbmciPlByaWNpbmc8L2E+PC9saT4KKyAgICAgIDxsaSBjbGFzcz0ibXItMyBtci1sZy0wIj48YSBocmVmPSJodHRwczovL2RldmVsb3Blci5naXRodWIuY29tIiBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGFwaSwgdGV4dDphcGkiPkFQSTwvYT48L2xpPgorICAgICAgPGxpIGNsYXNzPSJtci0zIG1yLWxnLTAiPjxhIGhyZWY9Imh0dHBzOi8vdHJhaW5pbmcuZ2l0aHViLmNvbSIgZGF0YS1nYS1jbGljaz0iRm9vdGVyLCBnbyB0byB0cmFpbmluZywgdGV4dDp0cmFpbmluZyI+VHJhaW5pbmc8L2E+PC9saT4KKyAgICAgICAgPGxpIGNsYXNzPSJtci0zIG1yLWxnLTAiPjxhIGhyZWY9Imh0dHBzOi8vZ2l0aHViLmJsb2ciIGRhdGEtZ2EtY2xpY2s9IkZvb3RlciwgZ28gdG8gYmxvZywgdGV4dDpibG9nIj5CbG9nPC9hPjwvbGk+CisgICAgICAgIDxsaT48YSBkYXRhLWdhLWNsaWNrPSJGb290ZXIsIGdvIHRvIGFib3V0LCB0ZXh0OmFib3V0IiBocmVmPSJodHRwczovL2dpdGh1Yi5jb20vYWJvdXQiPkFib3V0PC9hPjwvbGk+CisKKyAgICA8L3VsPgorICA8L2Rpdj4KKyAgPGRpdiBjbGFzcz0iZC1mbGV4IGZsZXgtanVzdGlmeS1jZW50ZXIgcGItNiI+CisgICAgPHNwYW4gY2xhc3M9ImY2IHRleHQtZ3JheS1saWdodCI+PC9zcGFuPgorICA8L2Rpdj4KKzwvZGl2PgorCisKKworICA8ZGl2IGlkPSJhamF4LWVycm9yLW1lc3NhZ2UiIGNsYXNzPSJhamF4LWVycm9yLW1lc3NhZ2UgZmxhc2ggZmxhc2gtZXJyb3IiPgorICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1hbGVydCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguODkzIDEuNWMtLjE4My0uMzEtLjUyLS41LS44ODctLjVzLS43MDMuMTktLjg4Ni41TC4xMzggMTMuNDk5YS45OC45OCAwIDAwMCAxLjAwMWMuMTkzLjMxLjUzLjUwMS44ODYuNTAxaDEzLjk2NGMuMzY3IDAgLjcwNC0uMTkuODc3LS41YTEuMDMgMS4wMyAwIDAwLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgorICAgIDxidXR0b24gdHlwZT0iYnV0dG9uIiBjbGFzcz0iZmxhc2gtY2xvc2UganMtYWpheC1lcnJvci1kaXNtaXNzIiBhcmlhLWxhYmVsPSJEaXNtaXNzIGVycm9yIj4KKyAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi14IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgorICAgIDwvYnV0dG9uPgorICAgIFlvdSBjYW7igJl0IHBlcmZvcm0gdGhhdCBhY3Rpb24gYXQgdGhpcyB0aW1lLgorICA8L2Rpdj4KKworCisgICAgPHNjcmlwdCBjcm9zc29yaWdpbj0iYW5vbnltb3VzIiBpbnRlZ3JpdHk9InNoYTUxMi1tZHJCYXNZRytRamdTMzkxUFN5VmtQcjA2aW8zZ1dwbENWYlBzY2d1ZXRORUh4SUV0K21ad0NlQ3hQUjllTU5mZGE2cU51aWJORnFCbzVhazIrTy9oZz09IiB0eXBlPSJhcHBsaWNhdGlvbi9qYXZhc2NyaXB0IiBzcmM9Imh0dHBzOi8vZ2l0aHViLmdpdGh1YmFzc2V0cy5jb20vYXNzZXRzL2NvbXBhdC1ib290c3RyYXAtOTlkYWMxNmEuanMiPjwvc2NyaXB0PgorICAgIDxzY3JpcHQgY3Jvc3NvcmlnaW49ImFub255bW91cyIgaW50ZWdyaXR5PSJzaGE1MTItUXhjSVo1cGE0ajhQNWVMNkZMUWFVL0ZBSWZvZFdrelYycmYrN09seWlpaUlNOVphRzNNT0R2Z1FtZStMVkRVUE1CZG1qWVlaK3N2U2xGdTV5akZoUnc9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2dpdGh1Yi5naXRodWJhc3NldHMuY29tL2Fzc2V0cy9mcmFtZXdvcmtzLTQzMTcwODY3LmpzIj48L3NjcmlwdD4KKyAgICAKKyAgICA8c2NyaXB0IGNyb3Nzb3JpZ2luPSJhbm9ueW1vdXMiIGFzeW5jPSJhc3luYyIgaW50ZWdyaXR5PSJzaGE1MTItcFdiK1hFUlo4Qjc0cHJXOHlQTmVPTWZGRWZNZm84RHZiTzRrREEvRHpQazEwdUdpVllQQ0I1MXNSUndpc2dLclB5Zlh0QytJZ2M1azlCZlVwZXBtdFE9PSIgdHlwZT0iYXBwbGljYXRpb24vamF2YXNjcmlwdCIgc3JjPSJodHRwczovL2dpdGh1Yi5naXRodWJhc3NldHMuY29tL2Fzc2V0cy9naXRodWItYm9vdHN0cmFwLWE1NjZmZTVjLmpzIj48L3NjcmlwdD4KKyAgICAKKyAgICAKKyAgICAKKyAgPGRpdiBjbGFzcz0ianMtc3RhbGUtc2Vzc2lvbi1mbGFzaCBmbGFzaCBmbGFzaC13YXJuIGZsYXNoLWJhbm5lciIgaGlkZGVuCisgICAgPgorICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi1hbGVydCIgdmlld0JveD0iMCAwIDE2IDE2IiB2ZXJzaW9uPSIxLjEiIHdpZHRoPSIxNiIgaGVpZ2h0PSIxNiIgYXJpYS1oaWRkZW49InRydWUiPjxwYXRoIGZpbGwtcnVsZT0iZXZlbm9kZCIgZD0iTTguODkzIDEuNWMtLjE4My0uMzEtLjUyLS41LS44ODctLjVzLS43MDMuMTktLjg4Ni41TC4xMzggMTMuNDk5YS45OC45OCAwIDAwMCAxLjAwMWMuMTkzLjMxLjUzLjUwMS44ODYuNTAxaDEzLjk2NGMuMzY3IDAgLjcwNC0uMTkuODc3LS41YTEuMDMgMS4wMyAwIDAwLjAxLTEuMDAyTDguODkzIDEuNXptLjEzMyAxMS40OTdINi45ODd2LTIuMDAzaDIuMDM5djIuMDAzem0wLTMuMDA0SDYuOTg3VjUuOTg3aDIuMDM5djQuMDA2eiIvPjwvc3ZnPgorICAgIDxzcGFuIGNsYXNzPSJqcy1zdGFsZS1zZXNzaW9uLWZsYXNoLXNpZ25lZC1pbiIgaGlkZGVuPllvdSBzaWduZWQgaW4gd2l0aCBhbm90aGVyIHRhYiBvciB3aW5kb3cuIDxhIGhyZWY9IiI+UmVsb2FkPC9hPiB0byByZWZyZXNoIHlvdXIgc2Vzc2lvbi48L3NwYW4+CisgICAgPHNwYW4gY2xhc3M9ImpzLXN0YWxlLXNlc3Npb24tZmxhc2gtc2lnbmVkLW91dCIgaGlkZGVuPllvdSBzaWduZWQgb3V0IGluIGFub3RoZXIgdGFiIG9yIHdpbmRvdy4gPGEgaHJlZj0iIj5SZWxvYWQ8L2E+IHRvIHJlZnJlc2ggeW91ciBzZXNzaW9uLjwvc3Bhbj4KKyAgPC9kaXY+CisgIDx0ZW1wbGF0ZSBpZD0ic2l0ZS1kZXRhaWxzLWRpYWxvZyI+CisgIDxkZXRhaWxzIGNsYXNzPSJkZXRhaWxzLXJlc2V0IGRldGFpbHMtb3ZlcmxheSBkZXRhaWxzLW92ZXJsYXktZGFyayBsaC1kZWZhdWx0IHRleHQtZ3JheS1kYXJrIGh4X3JzbSIgb3Blbj4KKyAgICA8c3VtbWFyeSByb2xlPSJidXR0b24iIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyI+PC9zdW1tYXJ5PgorICAgIDxkZXRhaWxzLWRpYWxvZyBjbGFzcz0iQm94IEJveC0tb3ZlcmxheSBkLWZsZXggZmxleC1jb2x1bW4gYW5pbS1mYWRlLWluIGZhc3QgaHhfcnNtLWRpYWxvZyBoeF9yc20tbW9kYWwiPgorICAgICAgPGJ1dHRvbiBjbGFzcz0iQm94LWJ0bi1vY3RpY29uIG0tMCBidG4tb2N0aWNvbiBwb3NpdGlvbi1hYnNvbHV0ZSByaWdodC0wIHRvcC0wIiB0eXBlPSJidXR0b24iIGFyaWEtbGFiZWw9IkNsb3NlIGRpYWxvZyIgZGF0YS1jbG9zZS1kaWFsb2c+CisgICAgICAgIDxzdmcgY2xhc3M9Im9jdGljb24gb2N0aWNvbi14IiB2aWV3Qm94PSIwIDAgMTIgMTYiIHZlcnNpb249IjEuMSIgd2lkdGg9IjEyIiBoZWlnaHQ9IjE2IiBhcmlhLWhpZGRlbj0idHJ1ZSI+PHBhdGggZmlsbC1ydWxlPSJldmVub2RkIiBkPSJNNy40OCA4bDMuNzUgMy43NS0xLjQ4IDEuNDhMNiA5LjQ4bC0zLjc1IDMuNzUtMS40OC0xLjQ4TDQuNTIgOCAuNzcgNC4yNWwxLjQ4LTEuNDhMNiA2LjUybDMuNzUtMy43NSAxLjQ4IDEuNDhMNy40OCA4eiIvPjwvc3ZnPgorICAgICAgPC9idXR0b24+CisgICAgICA8ZGl2IGNsYXNzPSJvY3RvY2F0LXNwaW5uZXIgbXktNiBqcy1kZXRhaWxzLWRpYWxvZy1zcGlubmVyIj48L2Rpdj4KKyAgICA8L2RldGFpbHMtZGlhbG9nPgorICA8L2RldGFpbHM+Cis8L3RlbXBsYXRlPgorCisgIDxkaXYgY2xhc3M9IlBvcG92ZXIganMtaG92ZXJjYXJkLWNvbnRlbnQgcG9zaXRpb24tYWJzb2x1dGUiIHN0eWxlPSJkaXNwbGF5OiBub25lOyBvdXRsaW5lOiBub25lOyIgdGFiaW5kZXg9IjAiPgorICA8ZGl2IGNsYXNzPSJQb3BvdmVyLW1lc3NhZ2UgUG9wb3Zlci1tZXNzYWdlLS1ib3R0b20tbGVmdCBQb3BvdmVyLW1lc3NhZ2UtLWxhcmdlIEJveCBib3gtc2hhZG93LWxhcmdlIiBzdHlsZT0id2lkdGg6MzYwcHg7Ij4KKyAgPC9kaXY+Cis8L2Rpdj4KKworICA8ZGl2IGFyaWEtbGl2ZT0icG9saXRlIiBjbGFzcz0ianMtZ2xvYmFsLXNjcmVlbi1yZWFkZXItbm90aWNlIHNyLW9ubHkiPjwvZGl2PgorCisgIDwvYm9keT4KKzwvaHRtbD4KKwpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9kZWJpYW4vcG9vbC9tYWluL2QvZGI1LjMvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZGViaWFuL3Bvb2wvbWFpbi9kL2RiNS4zL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTVhNmY0OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZGViaWFuL3Bvb2wvbWFpbi9kL2RiNS4zL2luZGV4Lmh0bWwKQEAgLTAsMCArMSw1MDkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2RlYmlhbi9wb29sL21haW4vZC9kYjUuMzwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9kZWJpYW4vcG9vbC9tYWluL2QvZGI1LjM8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI0Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2RlYmlhbi9wb29sL21haW4vZC8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtZG9jXzUuMy4yOCtkZnNnMS0wLjVfYWxsLmRlYiI+ZGI1LjMtZG9jXzUuMy4yOCtkZnNnMS0wLjVfYWxsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLWRvY181LjMuMjgrZGZzZzEtMC42X2FsbC5kZWIiPmRiNS4zLWRvY181LjMuMjgrZGZzZzEtMC42X2FsbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1kb2NfNS4zLjI4LTkrZGViOHUxX2FsbC5kZWIiPmRiNS4zLWRvY181LjMuMjgtOStkZWI4dTFfYWxsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTggMjA6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLWRvY181LjMuMjgtMTIrZGViOXUxX2FsbC5kZWIiPmRiNS4zLWRvY181LjMuMjgtMTIrZGViOXUxX2FsbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYiI+ZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTAyIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy1zcWwtdXRpbF81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5kYjUuMy1zcWwtdXRpbF81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtc3FsLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWIiPmRiNS4zLXNxbC11dGlsXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDc6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDA0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViIj5kYjUuMy11dGlsXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5kYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5kYjUuMy11dGlsXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zLXV0aWxfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+ZGI1LjMtdXRpbF81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zXzUuMy4yOCtkZnNnMS0wLjUuZGViaWFuLnRhci54eiI+ZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNS5kZWJpYW4udGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwODo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNS5kc2MiPmRiNS4zXzUuMy4yOCtkZnNnMS0wLjUuZHNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwODo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNi5kZWJpYW4udGFyLnh6Ij5kYjUuM181LjMuMjgrZGZzZzEtMC42LmRlYmlhbi50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA0OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuM181LjMuMjgrZGZzZzEtMC42LmRzYyI+ZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNi5kc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA0OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjMuMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuM181LjMuMjgrZGZzZzEub3JpZy50YXIueHoiPmRiNS4zXzUuMy4yOCtkZnNnMS5vcmlnLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDgtMDkgMDE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zXzUuMy4yOC05K2RlYjh1MS5kZWJpYW4udGFyLnh6Ij5kYjUuM181LjMuMjgtOStkZWI4dTEuZGViaWFuLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTggMjA6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zXzUuMy4yOC05K2RlYjh1MS5kc2MiPmRiNS4zXzUuMy4yOC05K2RlYjh1MS5kc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTE4IDIwOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjMuMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJkYjUuM181LjMuMjgtMTIrZGViOXUxLmRlYmlhbi50YXIueHoiPmRiNS4zXzUuMy4yOC0xMitkZWI5dTEuZGViaWFuLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjQgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zXzUuMy4yOC0xMitkZWI5dTEuZHNjIj5kYjUuM181LjMuMjgtMTIrZGViOXUxLmRzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjQgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+My4ySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImRiNS4zXzUuMy4yOC5vcmlnLnRhci54eiI+ZGI1LjNfNS4zLjI4Lm9yaWcudGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0yNyAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MjJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NjhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42OTJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODQySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc3M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgwMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxNks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY5M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc1OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcyMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY2OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY5Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NDJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42OTNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWIiPmxpYmRiNS4zKystZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDA0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY0M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0wMiAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NzJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc1N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY3Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY5MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzY4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzk1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrKy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYiI+bGliZGI1LjMrKy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzAxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKystZGV2XzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViIj5saWJkYjUuMysrLWRldl81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzE0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY5MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MjhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTc2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWIiPmxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzU1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OTVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjE5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY5MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViIj5saWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MjlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWIiPmxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWIiPmxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzU1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwNEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYiI+bGliZGI1LjMrK181LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwNEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzI0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjkxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYiI+bGliZGI1LjMrK181LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41ODBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMysrXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTAyIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwNks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYiI+bGliZGI1LjMrK181LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc0OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViIj5saWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42ODdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU3NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViIj5saWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc1MUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWIiPmxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTkzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMrK181LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMysrXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjE4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWIiPmxpYmRiNS4zKytfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYzN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQzTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQzTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDRNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0M008L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQzTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ0TTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM0TTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5saWJkYjUuMy1kYmdfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRiZ181LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMtZGJnXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc0M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzA3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY3N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgyMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc1M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzgwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc5N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njc5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NDNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcwN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjU0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NzdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MjJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NjlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43OTdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY3OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcyNUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDA0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYzMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTAyIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY1OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NjZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc0Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjQ4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViIj5saWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY3Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc0OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtZGV2XzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY4Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1kZXZfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWIiPmxpYmRiNS4zLWRldl81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njk5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzU3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzIwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjYySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njg4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg0MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NjhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43OTVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42ODhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NTZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MjFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42ODhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODQwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzk2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njg4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjczN0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMy1qYXZhLWRldl81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MzdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjY2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NTZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NTdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NzBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42ODZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODM2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzgwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtZGV2XzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY5MUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWRldl81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMtamF2YS1kZXZfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcxMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWdjal81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5saWJkYjUuMy1qYXZhLWdjal81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYiI+bGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDU1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTAyIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQ1MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWdjal81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTAzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViIj5saWJkYjUuMy1qYXZhLWdjal81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjAySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViIj5saWJkYjUuMy1qYXZhLWdjal81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTk1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5saWJkYjUuMy1qYXZhLWdjal81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDUzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViIj5saWJkYjUuMy1qYXZhLWdjal81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDQ3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUxOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWdjal81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5saWJkYjUuMy1qYXZhLWdjal81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40NjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40NzRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViIj5saWJkYjUuMy1qYXZhLWdjal81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQ3MUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWdjal81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5saWJkYjUuMy1qYXZhLWdjal81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MTFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1nY2pfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWIiPmxpYmRiNS4zLWphdmEtZ2NqXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NzhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42OTZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MzVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41ODBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzYzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU5Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwM0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjczMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyNEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY5Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYzNks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4MUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwNks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NjJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwNUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MzNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MjVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Njk2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDA0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0wMiAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MTJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc1NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY5NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU3NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYwNks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NThLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTkzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjAwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtamF2YS1qbmlfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjE4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmEtam5pXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViIj5saWJkYjUuMy1qYXZhLWpuaV81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjQxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmFfNS4zLjI4K2Rmc2cxLTAuNV9hbGwuZGViIj5saWJkYjUuMy1qYXZhXzUuMy4yOCtkZnNnMS0wLjVfYWxsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTc1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmFfNS4zLjI4K2Rmc2cxLTAuNl9hbGwuZGViIj5saWJkYjUuMy1qYXZhXzUuMy4yOCtkZnNnMS0wLjZfYWxsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTc1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLWphdmFfNS4zLjI4LTkrZGViOHUxX2FsbC5kZWIiPmxpYmRiNS4zLWphdmFfNS4zLjI4LTkrZGViOHUxX2FsbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTE4IDIwOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1qYXZhXzUuMy4yOC0xMitkZWI5dTFfYWxsLmRlYiI+bGliZGI1LjMtamF2YV81LjMuMjgtMTIrZGViOXUxX2FsbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTY4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkwMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MjlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4xTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkzOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTY4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkwMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MjlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjFNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MzhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODY5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0wMiAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MDZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wTTwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg5MUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MTBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTI5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYiI+bGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjFNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWIiPmxpYmRiNS4zLXNxbC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsLWRldl81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkzOUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViIj5saWJkYjUuMy1zcWwtZGV2XzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NjVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg4NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODA4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MzdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk2M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc3N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkyOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzk0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44ODNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgwOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzM5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NjZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43ODhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MjdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc5NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg4Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDA0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc0Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTAyIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc3NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg3OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzMzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MzdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViIj5saWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc2Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk1OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc3Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzg2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtc3FsXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc4Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zcWxfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWIiPmxpYmRiNS4zLXNxbF81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg0Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzUxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc3NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTI3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44NTZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODg1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MDBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzczSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg0Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzUxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc3NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTI3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg4Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg3NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTAwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc3NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODI2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MjdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTAyIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc1N0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg2OEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQ1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc1OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43NzNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkyMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODUySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg4MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3RsLWRldl81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg3MEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGwtZGV2XzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzgzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWIiPmxpYmRiNS4zLXN0bC1kZXZfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc5NUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzExSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NTBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU5Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjE4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X2kzODYuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjE0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjIzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzQ2SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MzlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcxMks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjQ5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OTJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYxOEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc3OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjIzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYyNEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc0Nks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjM5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgtOStkZWI4dTFfYW1kNjQuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzE0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMDQ6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTk5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgtOStkZWI4dTFfYXJtaGYuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjI3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtOStkZWI4dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjc3NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzA3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU5MUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjE3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX2kzODYuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Nzc0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX21pcHMuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjkgMTY6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjEySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MjBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjIySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX3BwYzY0ZWwuZGViIj5saWJkYjUuMy1zdGxfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjM5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXN0bF81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjMtc3RsXzUuMy4yOC0xMitkZWI5dTFfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NTdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk1NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9hcm02NC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODk0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgyNks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9pMzg2LmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9taXBzLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkyMUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTI6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTUySzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk0MUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjVfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC41X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODU0SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X2FtZDY0LmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NTRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg5NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODAzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X2FybWhmLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MjVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfaTM4Ni5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA2OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk1Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NDJLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfcHBjNjRlbC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgrZGZzZzEtMC42X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4K2Rmc2cxLTAuNl9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTEyIDA1OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg1M0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4LTkrZGViOHUxX2FtZDY0LmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4LTkrZGViOHUxX2FybWVsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOC05K2RlYjh1MV9hcm1lbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDA0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk3MUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOC05K2RlYjh1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTAyIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNNPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk0OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODA5SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX2FybWVsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MDhLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViIj5saWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgyM0s8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9taXBzLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkxNUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTQzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkzNks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9wcGM2NGVsLmRlYiI+bGliZGI1LjMtdGNsXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjg3MUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuMy10Y2xfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWIiPmxpYmRiNS4zLXRjbF81LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODg1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfYW1kNjQuZGViIj5saWJkYjUuM181LjMuMjgrZGZzZzEtMC41X2FtZDY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjY3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfYXJtNjQuZGViIj5saWJkYjUuM181LjMuMjgrZGZzZzEtMC41X2FybTY0LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMDk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NjA3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfYXJtZWwuZGViIj5saWJkYjUuM181LjMuMjgrZGZzZzEtMC41X2FybWVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTU4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfYXJtaGYuZGViIj5saWJkYjUuM181LjMuMjgrZGZzZzEtMC41X2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMjYgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTgzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfaTM4Ni5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDA5OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjczMEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC41X21pcHMuZGViIj5saWJkYjUuM181LjMuMjgrZGZzZzEtMC41X21pcHMuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NzVLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9taXBzNjRlbC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfbWlwczY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxMjo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41ODNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9taXBzZWwuZGViIj5saWJkYjUuM181LjMuMjgrZGZzZzEtMC41X21pcHNlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDEyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU4NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViIj5saWJkYjUuM181LjMuMjgrZGZzZzEtMC41X3BwYzY0ZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MDFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNV9zMzkweC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjVfczM5MHguZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAwOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41OTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9hbWQ2NC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjZfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NjdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9hcm02NC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjZfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42MDdLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9hcm1lbC5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjZfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NTlLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9hcm1oZi5kZWIiPmxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjZfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41ODNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzMwSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjZfbWlwczY0ZWwuZGViIj5saWJkYjUuM181LjMuMjgrZGZzZzEtMC42X21pcHM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTgzSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjZfbWlwc2VsLmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9taXBzZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xMiAwNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41ODRLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYiI+bGliZGI1LjNfNS4zLjI4K2Rmc2cxLTAuNl9wcGM2NGVsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzAxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOCtkZnNnMS0wLjZfczM5MHguZGViIj5saWJkYjUuM181LjMuMjgrZGZzZzEtMC42X3MzOTB4LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTIgMDU6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTk4SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zXzUuMy4yOC05K2RlYjh1MV9hbWQ2NC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDAzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjY2NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViIj5saWJkYjUuM181LjMuMjgtOStkZWI4dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NjFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYiI+bGliZGI1LjNfNS4zLjI4LTkrZGViOHUxX2FybWhmLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMDIgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTg3SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOC05K2RlYjh1MV9pMzg2LmRlYiI+bGliZGI1LjNfNS4zLjI4LTkrZGViOHUxX2kzODYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAwMzoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43MjFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9hbWQ2NC5kZWIiPmxpYmRiNS4zXzUuMy4yOC0xMitkZWI5dTFfYW1kNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42NjNLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9hcm02NC5kZWIiPmxpYmRiNS4zXzUuMy4yOC0xMitkZWI5dTFfYXJtNjQuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NTBLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9hcm1lbC5kZWIiPmxpYmRiNS4zXzUuMy4yOC0xMitkZWI5dTFfYXJtZWwuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NTZLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9hcm1oZi5kZWIiPmxpYmRiNS4zXzUuMy4yOC0xMitkZWI5dTFfYXJtaGYuZGViPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yOCAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41ODFLPC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ibGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9pMzg2LmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMDk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NzI1SzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWIiPmxpYmRiNS4zXzUuMy4yOC0xMitkZWI5dTFfbWlwcy5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU3Mks8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtMTIrZGViOXUxX21pcHM2NGVsLmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9taXBzNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDExOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU3OUs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtMTIrZGViOXUxX21pcHNlbC5kZWIiPmxpYmRiNS4zXzUuMy4yOC0xMitkZWI5dTFfbWlwc2VsLmRlYjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjggMTE6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTgxSzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImxpYmRiNS4zXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWIiPmxpYmRiNS4zXzUuMy4yOC0xMitkZWI5dTFfcHBjNjRlbC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU5NEs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJsaWJkYjUuM181LjMuMjgtMTIrZGViOXUxX3MzOTB4LmRlYiI+bGliZGI1LjNfNS4zLjI4LTEyK2RlYjl1MV9zMzkweC5kZWI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTI4IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYxNUs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjQiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPGFkZHJlc3M+QXBhY2hlIFNlcnZlciBhdCBmdHAuZGViaWFuLm9yZyBQb3J0IDgwPC9hZGRyZXNzPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZG93bmxvYWRzL2VuY2hhbnQvMS42LjAvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZG93bmxvYWRzL2VuY2hhbnQvMS42LjAvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2JmYjFlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9kb3dubG9hZHMvZW5jaGFudC8xLjYuMC9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTUgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2Rvd25sb2Fkcy9lbmNoYW50LzEuNi4wPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2Rvd25sb2Fkcy9lbmNoYW50LzEuNi4wPC9oMT4KKzx0YWJsZT48dHI+PHRoPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPjx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW0RJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9kb3dubG9hZHMvZW5jaGFudC8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iTUQ1U1VNIj5NRDVTVU08L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4wMS1BcHItMjAxMCAyMzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iZW5jaGFudC0xLjYuMC50YXIuZ3oiPmVuY2hhbnQtMS42LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MDEtQXByLTIwMTAgMjM6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTkzSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8YWRkcmVzcz5BcGFjaGUvMi4yLjE1IChGZWRvcmEpIFNlcnZlciBhdCB3d3cuYWJpc291cmNlLmNvbSBQb3J0IDQ0MzwvYWRkcmVzcz4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YyLjgvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjIuOC9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllYTA3N2QKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YyLjgvaW5kZXguaHRtbApAQCAtMCwwICsxLDc3NCBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjIuODwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92Mi44PC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii0qIj4tKjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDYtMDcgMTI6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAwIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9IkNNYWtlQ2hhbmdlTG9nLTIuOC4wIj5DTWFrZUNoYW5nZUxvZy0yLjguMDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9IkNNYWtlQ2hhbmdlTG9nLTIuOC4xIj5DTWFrZUNoYW5nZUxvZy0yLjguMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDMtMTcgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9IkNNYWtlQ2hhbmdlTG9nLTIuOC4yIj5DTWFrZUNoYW5nZUxvZy0yLjguMjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9IkNNYWtlQ2hhbmdlTG9nLTIuOC4zIj5DTWFrZUNoYW5nZUxvZy0yLjguMzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9IkNNYWtlQ2hhbmdlTG9nLTIuOC40Ij5DTWFrZUNoYW5nZUxvZy0yLjguNDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTYgMDk6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYxSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9IkNNYWtlQ2hhbmdlTG9nLTIuOC41Ij5DTWFrZUNoYW5nZUxvZy0yLjguNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDgxSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9IkNNYWtlQ2hhbmdlTG9nLTIuOC42Ij5DTWFrZUNoYW5nZUxvZy0yLjguNjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTU6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MTAwSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9IkNNYWtlQ2hhbmdlTG9nLTIuOC43Ij5DTWFrZUNoYW5nZUxvZy0yLjguNzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTU6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MTE1SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9IkNNYWtlQ2hhbmdlTG9nLTIuOC44Ij5DTWFrZUNoYW5nZUxvZy0yLjguODwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTc6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MTQ0SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9IkNNYWtlQ2hhbmdlTG9nLTIuOC45Ij5DTWFrZUNoYW5nZUxvZy0yLjguOTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTY6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MTYzSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9IkNNYWtlQ2hhbmdlTG9nLTIuOC4xMCI+Q01ha2VDaGFuZ2VMb2ctMi44LjEwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxNTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xODVLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjEwLjEiPkNNYWtlQ2hhbmdlTG9nLTIuOC4xMC4xPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xODZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjEwLjIiPkNNYWtlQ2hhbmdlTG9nLTIuOC4xMC4yPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNToxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xODZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iQ01ha2VDaGFuZ2VMb2ctMi44LjExIj5DTWFrZUNoYW5nZUxvZy0yLjguMTE8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE2IDA5OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIxOEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJDTWFrZUNoYW5nZUxvZy0yLjguMTIiPkNNYWtlQ2hhbmdlTG9nLTIuOC4xMjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMTEgMDg6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjQ3SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9IkNNYWtlQ2hhbmdlTG9nLTIuOC4xMi4xIj5DTWFrZUNoYW5nZUxvZy0yLjguMTIuMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDggMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjQ4SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9IkNNYWtlVlMxMEZpbmRNYWtlLmNtYWtlIj5DTWFrZVZTMTBGaW5kTWFrZS5jbWFrZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDUtMjcgMDk6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMC1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDItMDggMTA6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMC1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDItMDggMTA6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjAtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0wOCAxMDo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4wLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjAtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLUhQLVVYLTkwMDBfNzg1LnNoIj5jbWFrZS0yLjguMC1IUC1VWC05MDAwXzc4NS5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLUhQLVVYLTkwMDBfNzg1LnRhci5aIj5jbWFrZS0yLjguMC1IUC1VWC05MDAwXzc4NS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLUhQLVVYLTkwMDBfNzg1LnRhci5neiI+Y21ha2UtMi44LjAtSFAtVVgtOTAwMF83ODUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMC1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4wLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4wLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMC1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjAtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMC1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4wLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMC1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4wLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtU3VuT1Mtc3BhcmMuc2giPmNtYWtlLTIuOC4wLVN1bk9TLXNwYXJjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtU3VuT1Mtc3BhcmMudGFyLloiPmNtYWtlLTIuOC4wLVN1bk9TLXNwYXJjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAtU3VuT1Mtc3BhcmMudGFyLmd6Ij5jbWFrZS0yLjguMC1TdW5PUy1zcGFyYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4wLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4wLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAudGFyLloiPmNtYWtlLTIuOC4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0xMyAxNTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjAudGFyLmd6Ij5jbWFrZS0yLjguMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTEzIDE1OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjMuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMC56aXAiPmNtYWtlLTIuOC4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMTMgMTU6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMS1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMS1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLUhQLVVYLTkwMDBfNzg1LnNoIj5jbWFrZS0yLjguMS1IUC1VWC05MDAwXzc4NS5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLUhQLVVYLTkwMDBfNzg1LnRhci5aIj5jbWFrZS0yLjguMS1IUC1VWC05MDAwXzc4NS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLUhQLVVYLTkwMDBfNzg1LnRhci5neiI+Y21ha2UtMi44LjEtSFAtVVgtOTAwMF83ODUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMS1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMS1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjEtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMS1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtU3VuT1Mtc3BhcmMuc2giPmNtYWtlLTIuOC4xLVN1bk9TLXNwYXJjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtU3VuT1Mtc3BhcmMudGFyLloiPmNtYWtlLTIuOC4xLVN1bk9TLXNwYXJjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEtU3VuT1Mtc3BhcmMudGFyLmd6Ij5jbWFrZS0yLjguMS1TdW5PUy1zcGFyYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEudGFyLloiPmNtYWtlLTIuOC4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wNiAxNDozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEudGFyLmd6Ij5jbWFrZS0yLjguMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTA2IDE0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjMuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMS56aXAiPmNtYWtlLTIuOC4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMDYgMTQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMi1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMi1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjItQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4yLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjItRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLUhQLVVYLTkwMDBfNzg1LnNoIj5jbWFrZS0yLjguMi1IUC1VWC05MDAwXzc4NS5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLUhQLVVYLTkwMDBfNzg1LnRhci5aIj5jbWFrZS0yLjguMi1IUC1VWC05MDAwXzc4NS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLUhQLVVYLTkwMDBfNzg1LnRhci5neiI+Y21ha2UtMi44LjItSFAtVVgtOTAwMF83ODUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMi1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4yLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4yLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMi1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjItSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMi1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4yLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4yLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItU3VuT1Mtc3BhcmMuc2giPmNtYWtlLTIuOC4yLVN1bk9TLXNwYXJjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItU3VuT1Mtc3BhcmMudGFyLloiPmNtYWtlLTIuOC4yLVN1bk9TLXNwYXJjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjItU3VuT1Mtc3BhcmMudGFyLmd6Ij5jbWFrZS0yLjguMi1TdW5PUy1zcGFyYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4yLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4yLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjIudGFyLloiPmNtYWtlLTIuOC4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yOCAxNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjIudGFyLmd6Ij5jbWFrZS0yLjguMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMi56aXAiPmNtYWtlLTIuOC4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjggMTQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMy1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMy1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjMtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4zLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjMtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjMtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMy1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMy1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjMtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4zLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjMtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjMtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMy1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLVN1bk9TLXNwYXJjLnNoIj5jbWFrZS0yLjguMy1TdW5PUy1zcGFyYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLVN1bk9TLXNwYXJjLnRhci5aIj5jbWFrZS0yLjguMy1TdW5PUy1zcGFyYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLVN1bk9TLXNwYXJjLnRhci5neiI+Y21ha2UtMi44LjMtU3VuT1Mtc3BhcmMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMy13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMy13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMtd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLnRhci5aIj5jbWFrZS0yLjguMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMDMgMTc6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4zLnRhci5neiI+Y21ha2UtMi44LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0wMyAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjMuemlwIj5jbWFrZS0yLjguMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTAzIDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjQtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjQtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC40LUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguNC1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC40LURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjQtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC40LUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjQtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjQtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC40LUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguNC1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC40LUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjQtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC40LUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjQtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC1TdW5PUy1zcGFyYy5zaCI+Y21ha2UtMi44LjQtU3VuT1Mtc3BhcmMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC1TdW5PUy1zcGFyYy50YXIuWiI+Y21ha2UtMi44LjQtU3VuT1Mtc3BhcmMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC1TdW5PUy1zcGFyYy50YXIuZ3oiPmNtYWtlLTIuOC40LVN1bk9TLXNwYXJjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjQtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjQtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC40LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC50YXIuWiI+Y21ha2UtMi44LjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNC50YXIuZ3oiPmNtYWtlLTIuOC40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC40LnppcCI+Y21ha2UtMi44LjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xNSAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMi44LjUtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LTEudGFyLmJ6MiI+Y21ha2UtMi44LjUtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC41LUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC41LUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguNS1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjUtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguNS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC41LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguNS1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC41LUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC41LUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguNS1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjUtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguNS1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC41LUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguNS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC41LUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtU3VuT1Mtc3BhcmMuc2giPmNtYWtlLTIuOC41LVN1bk9TLXNwYXJjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtU3VuT1Mtc3BhcmMudGFyLloiPmNtYWtlLTIuOC41LVN1bk9TLXNwYXJjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUtU3VuT1Mtc3BhcmMudGFyLmd6Ij5jbWFrZS0yLjguNS1TdW5PUy1zcGFyYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC41LXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC41LXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguNS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUudGFyLloiPmNtYWtlLTIuOC41LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAxMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjUudGFyLmd6Ij5jbWFrZS0yLjguNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA3LTA4IDEwOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNS56aXAiPmNtYWtlLTIuOC41LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMTA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LTEtc3JjLnRhci5iejIiPmNtYWtlLTIuOC42LTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi0xLnRhci5iejIiPmNtYWtlLTIuOC42LTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguNi1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguNi1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjYtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC42LURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjYtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguNi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC42LURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC42LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC42LURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC42LUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjYtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjYtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC42LUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguNi1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC42LUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjYtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC42LUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjYtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC42LXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC42LXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguNi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYudGFyLloiPmNtYWtlLTIuOC42LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0wNCAxMzo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjYudGFyLmd6Ij5jbWFrZS0yLjguNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTA0IDEzOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNi56aXAiPmNtYWtlLTIuOC42LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTAtMDQgMTM6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LTEtc3JjLnRhci5iejIiPmNtYWtlLTIuOC43LTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy0xLnRhci5iejIiPmNtYWtlLTIuOC43LTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguNy1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDEtMDMgMTY6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguNy1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDEtMDMgMTY6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjctQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0wMyAxNjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC43LURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjctRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguNy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC43LURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC43LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC43LURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC43LUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjctSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjctSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC43LUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguNy1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC43LUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjctTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjctTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC43LUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjctTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC43LXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC43LXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguNy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjcudGFyLloiPmNtYWtlLTIuOC43LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0zMCAxNDoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjcudGFyLmd6Ij5jbWFrZS0yLjguNy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTMwIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguNy56aXAiPmNtYWtlLTIuOC43LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMzAgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguOC1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguOC1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjgtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC44LURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjgtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguOC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC44LURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC44LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC44LURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC44LUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjgtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjgtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC44LUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguOC1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC44LUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjgtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjgtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC44LUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjgtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjgtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC44LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44Ljgtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44Ljgtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC44LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC50YXIuWiI+Y21ha2UtMi44LjgudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTE4IDE1OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOC50YXIuZ3oiPmNtYWtlLTIuOC44LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTggMTU6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC44LnppcCI+Y21ha2UtMi44LjguemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNC0xOCAxNToyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC45LUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC45LUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguOS1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjktRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguOS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC45LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjktRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjktRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjktRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjktSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguOS1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguOS1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjktSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC45LUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjktSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguOS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjktTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjktTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguOS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguOS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4xSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjktU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguOS13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguOS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44Ljktd2luMzIteDg2LnppcCI+Y21ha2UtMi44Ljktd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LnRhci5aIj5jbWFrZS0yLjguOS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDkgMTU6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC45LnRhci5neiI+Y21ha2UtMi44LjkudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wOSAxNTozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjkuemlwIj5jbWFrZS0yLjguOS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA5IDE1OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMC1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjEwLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEwLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEwLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTAtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEwLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTAtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjEwLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMC1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEwLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjEwLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjEwLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMC1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTAtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTAtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEwLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjEwLXJjMS1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMC1yYzEtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMS1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTAtcmMxLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEwLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMTAtcmMxLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTAtcmMxLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEwLXJjMS1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMTAtcmMxLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMC1yYzEtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMC1yYzEtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMC1yYzEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjEwLXJjMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEwLXJjMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMDIgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjEwLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEwLXJjMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTAyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMxLnRhci5aIj5jbWFrZS0yLjguMTAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS50YXIuZ3oiPmNtYWtlLTIuOC4xMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMS56aXAiPmNtYWtlLTIuOC4xMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0wMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjEwLXJjMi1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMC1yYzItQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMi1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTAtcmMyLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTAtcmMyLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEwLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMTAtcmMyLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTAtcmMyLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEwLXJjMi1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMTAtcmMyLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMC1yYzItSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMC1yYzItSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMC1yYzItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjEwLXJjMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEwLXJjMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMTkgMDk6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMC1yYzItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjEwLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzItd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEwLXJjMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTE5IDA5OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMyLnRhci5aIj5jbWFrZS0yLjguMTAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi50YXIuZ3oiPmNtYWtlLTIuOC4xMC1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMi56aXAiPmNtYWtlLTIuOC4xMC1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0xOSAwOToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjEwLXJjMy1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMC1yYzMtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEwLXJjMy1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTAtcmMzLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTAtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTAtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEwLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMTAtcmMzLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTAtcmMzLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEwLXJjMy1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMTAtcmMzLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMC1yYzMtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMC1yYzMtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMC1yYzMtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjEwLXJjMy1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEwLXJjMy1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMjQgMTU6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMC1yYzMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjEwLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC1yYzMtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEwLXJjMy13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTI0IDE1OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtcmMzLnRhci5aIj5jbWFrZS0yLjguMTAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy50YXIuZ3oiPmNtYWtlLTIuOC4xMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLXJjMy56aXAiPmNtYWtlLTIuOC4xMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0yNCAxNTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEwLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAtd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjEwLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjEwLjEtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjEwLjEtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMC4xLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTAuMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMC4xLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEwLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTAuMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTAuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTAuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMTAuMS1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMC4xLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMC4xLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMTAuMS1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjEwLjEtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTAuMS1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMC4xLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTAuMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMC4xLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMC4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTAuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4xLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMC4xLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTAuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEudGFyLloiPmNtYWtlLTIuOC4xMC4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wNyAxMTo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjEudGFyLmd6Ij5jbWFrZS0yLjguMTAuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTA3IDExOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMS56aXAiPmNtYWtlLTIuOC4xMC4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMDcgMTE6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTAuMi1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTAuMi1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEwLjItQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC4yLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEwLjItRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTAuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMC4yLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMC4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDUzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMC4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMC4yLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjEwLjItSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEwLjItSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMC4yLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTAuMi1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMC4yLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEwLjItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMC4yLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEwLjItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEwLjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMC4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLjItd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEwLjItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMC4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi50YXIuWiI+Y21ha2UtMi44LjEwLjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTI3IDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAuMi50YXIuZ3oiPmNtYWtlLTIuOC4xMC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTEtMjcgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMC4yLnppcCI+Y21ha2UtMi44LjEwLjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yNyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLnRhci5aIj5jbWFrZS0yLjguMTAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEwLTMxIDEzOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTAudGFyLmd6Ij5jbWFrZS0yLjguMTAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMC0zMSAxMzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEwLnppcCI+Y21ha2UtMi44LjEwLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTAtMzEgMTM6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjExLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTEtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTEtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTEtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMTEtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjExLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTEtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMTEtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTEtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjExLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTEtcmMxLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjExLXJjMS1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMxLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMS1yYzEtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMS1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTEtcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMS1yYzEtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMS1yYzEtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMxLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMS1yYzEtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjExLXJjMS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjExLXJjMS1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjExLXJjMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTEtcmMxLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMxLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0xNCAxNzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjExLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTEtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMS13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTEtcmMxLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMS1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMTQgMTc6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzEudGFyLloiPmNtYWtlLTIuOC4xMS1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLnRhci5neiI+Y21ha2UtMi44LjExLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMxLnppcCI+Y21ha2UtMi44LjExLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTE0IDE3OjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTEtcmMyLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjExLXJjMi1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMyLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMS1yYzItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMS1yYzItRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTEtcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMS1yYzItSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMS1yYzItSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMyLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMS1yYzItSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjExLXJjMi1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjExLXJjMi1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjExLXJjMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTEtcmMyLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMyLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0wNSAxODowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjExLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTEtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMi13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTEtcmMyLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMS1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMDUgMTg6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzIudGFyLloiPmNtYWtlLTIuOC4xMS1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLnRhci5neiI+Y21ha2UtMi44LjExLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMyLnppcCI+Y21ha2UtMi44LjExLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTA1IDE4OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTEtcmMzLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjExLXJjMy1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMzLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMS1yYzMtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMS1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTEtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMS1yYzMtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMS1yYzMtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMzLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMS1yYzMtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjExLXJjMy1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjExLXJjMy1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjExLXJjMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTEtcmMzLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmMzLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xOCAxNzozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjExLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTEtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjMy13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTEtcmMzLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMS1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDQtMTggMTc6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzMudGFyLloiPmNtYWtlLTIuOC4xMS1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLnRhci5neiI+Y21ha2UtMi44LjExLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmMzLnppcCI+Y21ha2UtMi44LjExLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE4IDE3OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTEtcmM0LUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjExLXJjNC1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmM0LUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMS1yYzQtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMS1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMS1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTEtcmM0LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMS1yYzQtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMS1yYzQtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmM0LUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMS1yYzQtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjExLXJjNC1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjExLXJjNC1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjExLXJjNC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTEtcmM0LUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTEtcmM0LUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0wOCAwOTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjExLXJjNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTEtcmM0LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLXJjNC13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTEtcmM0LXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMS1yYzQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMDggMDk6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS1yYzQudGFyLloiPmNtYWtlLTIuOC4xMS1yYzQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LnRhci5neiI+Y21ha2UtMi44LjExLXJjNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEtcmM0LnppcCI+Y21ha2UtMi44LjExLXJjNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTA4IDA5OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTEuMS1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTEuMS1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjExLjEtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMS4xLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTEuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMS4xLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMS4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMS4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMS4xLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjExLjEtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjExLjEtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMS4xLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTEuMS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMS4xLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjExLjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMS4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjExLjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjExLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMS4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjExLjEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMS4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS50YXIuWiI+Y21ha2UtMi44LjExLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTA3IDE0OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMS50YXIuZ3oiPmNtYWtlLTIuOC4xMS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMDcgMTQ6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4xLnppcCI+Y21ha2UtMi44LjExLjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wNyAxNDo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMS4yLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMS4yLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0yLjguMTEuMi1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLjItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTEuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMS4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjExLjItRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjExLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjExLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjExLjItSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTEuMi1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0yLjguMTEuMi1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjExLjItSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMS4yLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMi44LjExLjItSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTEuMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjExLjItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0yLjguMTEuMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTEuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjExLjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuMi13aW4zMi14ODYuZXhlIj5jbWFrZS0yLjguMTEuMi13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjItd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjExLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLnRhci5aIj5jbWFrZS0yLjguMTEuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMDMgMTE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS4yLnRhci5neiI+Y21ha2UtMi44LjExLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0wMyAxMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjExLjIuemlwIj5jbWFrZS0yLjguMTEuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTAzIDExOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEudGFyLloiPmNtYWtlLTIuOC4xMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDUtMTUgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMS50YXIuZ3oiPmNtYWtlLTIuOC4xMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTE1IDE1OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTEuemlwIj5jbWFrZS0yLjguMTEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0xNSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTItQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMi1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMi1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTItRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEyLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMi1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTItSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMi1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMi1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTItSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEyLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjEyLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjFLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjEyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMi1yYzEtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTItcmMxLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzEtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEyLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEyLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEyLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMi1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTItcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLUlSSVg2NC02NC5zaCI+Y21ha2UtMi44LjEyLXJjMS1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjEyLXJjMS1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjEyLXJjMS1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTItcmMxLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTItcmMxLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTItcmMxLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMi1yYzEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTE5IDA4OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTItcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMi1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMxLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMi1yYzEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjEyLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0xOSAwODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMS50YXIuWiI+Y21ha2UtMi44LjEyLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEudGFyLmd6Ij5jbWFrZS0yLjguMTItcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzEuemlwIj5jbWFrZS0yLjguMTItcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMTkgMDg6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMi1yYzItQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTItcmMyLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzItQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEyLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEyLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEyLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMi1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTItcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjEyLXJjMi1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzItSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItSVJJWDY0LW4zMi5zaCI+Y21ha2UtMi44LjEyLXJjMi1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTItcmMyLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTItcmMyLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0yLjguMTItcmMyLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMi1yYzItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA4LTMwIDE1OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLVNIQS0yNTYudHh0Ij5jbWFrZS0yLjguMTItcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjFLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMi1yYzItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMyLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMi1yYzItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjEyLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0zMCAxNTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMi50YXIuWiI+Y21ha2UtMi44LjEyLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzIudGFyLmd6Ij5jbWFrZS0yLjguMTItcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzIuemlwIj5jbWFrZS0yLjguMTItcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDgtMzAgMTU6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzMtQUlYLXBvd2VycGMuc2giPmNtYWtlLTIuOC4xMi1yYzMtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTItcmMzLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzMtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEyLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDktMTAgMTU6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEyLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDktMTAgMTU6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMi44LjEyLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMi1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTItcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMi1yYzMtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDktMTAgMTU6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzMtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjEyLXJjMy1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEyLXJjMy1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDktMTAgMTU6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMi1yYzMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuN0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjEyLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzMtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEyLXJjMy13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTItcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEwIDE1OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmMzLnRhci5aIj5jbWFrZS0yLjguMTItcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjMy56aXAiPmNtYWtlLTIuOC4xMi1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMCAxNTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjEyLXJjNC1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTIuOC4xMi1yYzQtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEyLXJjNC1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmM0LURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTItcmM0LURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTItcmM0LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTItcmM0LURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMTItcmM0LUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0yLjguMTItcmM0LUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEyLXJjNC1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMTItcmM0LUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTIuOC4xMi1yYzQtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzQtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMi1yYzQtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMi44LjEyLXJjNC1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEyLXJjNC1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDEgMTY6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMi1yYzQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMi44LjEyLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi1yYzQtd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEyLXJjNC13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTItcmM0LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTAxIDE2OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItcmM0LnRhci5aIj5jbWFrZS0yLjguMTItcmM0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC50YXIuZ3oiPmNtYWtlLTIuOC4xMi1yYzQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLXJjNC56aXAiPmNtYWtlLTIuOC4xMi1yYzQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wMSAxNjoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEyLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTItd2luMzIteDg2LnppcCI+Y21ha2UtMi44LjEyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMi44LjEyLjEtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMi44LjEyLjEtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTIuOC4xMi4xLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTIuMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMi4xLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMi44LjEyLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0yLjguMTIuMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0yLjguMTIuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTIuMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtSVJJWDY0LTY0LnNoIj5jbWFrZS0yLjguMTIuMS1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1JUklYNjQtNjQudGFyLloiPmNtYWtlLTIuOC4xMi4xLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTIuOC4xMi4xLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1JUklYNjQtbjMyLnNoIj5jbWFrZS0yLjguMTIuMS1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMi44LjEyLjEtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0yLjguMTIuMS1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLUxpbnV4LWkzODYuc2giPmNtYWtlLTIuOC4xMi4xLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0yLjguMTIuMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTIuOC4xMi4xLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtU0hBLTI1Ni50eHQiPmNtYWtlLTIuOC4xMi4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0yLjguMTIuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4xLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTIuOC4xMi4xLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS13aW4zMi14ODYuemlwIj5jbWFrZS0yLjguMTIuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEudGFyLloiPmNtYWtlLTIuOC4xMi4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wNiAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjEudGFyLmd6Ij5jbWFrZS0yLjguMTIuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTA2IDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMS56aXAiPmNtYWtlLTIuOC4xMi4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTEtMDYgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0yLjguMTIuMi1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0yLjguMTIuMi1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMi44LjEyLjItQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMi4yLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMi44LjEyLjItRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0yLjguMTIuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTIuOC4xMi4yLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTIuOC4xMi4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTIuOC4xMi4yLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1JUklYNjQtNjQuc2giPmNtYWtlLTIuOC4xMi4yLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMi44LjEyLjItSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMi44LjEyLjItSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLUlSSVg2NC1uMzIuc2giPmNtYWtlLTIuOC4xMi4yLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0yLjguMTIuMi1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi4yLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItTGludXgtaTM4Ni5zaCI+Y21ha2UtMi44LjEyLjItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTIuOC4xMi4yLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMi44LjEyLjItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMi44LjEyLjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTIuOC4xMi4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLjItd2luMzIteDg2LmV4ZSI+Y21ha2UtMi44LjEyLjItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTIuOC4xMi4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi50YXIuWiI+Y21ha2UtMi44LjEyLjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTE2IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIuMi50YXIuZ3oiPmNtYWtlLTIuOC4xMi4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDEtMTYgMTQ6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTIuOC4xMi4yLnppcCI+Y21ha2UtMi44LjEyLjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0xNiAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLnRhci5aIj5jbWFrZS0yLjguMTIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTA3IDE0OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0yLjguMTIudGFyLmd6Ij5jbWFrZS0yLjguMTIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNyAxNDozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMi44LjEyLnppcCI+Y21ha2UtMi44LjEyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDcgMTQ6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4wL2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjAvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNTgzZGNkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4wL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwyMDkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjA8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZmlsZXMvdjMuMDwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjAuMC0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtMS50YXIuYnoyIj5jbWFrZS0zLjAuMC0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4wLjAtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMC4wLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4wLjAtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMTAgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjAtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMTAgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMC4wLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjAuMC1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMC4wLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMC4wLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjAuMC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4wLjAtcmMxLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtMS50YXIuYnoyIj5jbWFrZS0zLjAuMC1yYzEtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLUFJWC1wb3dlcnBjLnNoIj5jbWFrZS0zLjAuMC1yYzEtQUlYLXBvd2VycGMuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtQUlYLXBvd2VycGMudGFyLloiPmNtYWtlLTMuMC4wLXJjMS1BSVgtcG93ZXJwYy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1BSVgtcG93ZXJwYy50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMS1BSVgtcG93ZXJwYy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1JUklYNjQtNjQuc2giPmNtYWtlLTMuMC4wLXJjMS1JUklYNjQtNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtSVJJWDY0LTY0LnRhci5aIj5jbWFrZS0zLjAuMC1yYzEtSVJJWDY0LTY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLUlSSVg2NC02NC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMS1JUklYNjQtNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLUlSSVg2NC1uMzIuc2giPmNtYWtlLTMuMC4wLXJjMS1JUklYNjQtbjMyLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLUlSSVg2NC1uMzIudGFyLloiPmNtYWtlLTMuMC4wLXJjMS1JUklYNjQtbjMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLUlSSVg2NC1uMzIudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzEtSVJJWDY0LW4zMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4wLjAtcmMxLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4wLjAtcmMxLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4wLjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjJLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4wLjAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMC4wLXJjMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMC4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLnRhci5aIj5jbWFrZS0zLjAuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTI4IDEzOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yOCAxMzo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMxLnppcCI+Y21ha2UtMy4wLjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjggMTM6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjAuMC1yYzItMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi0xLnRhci5iejIiPmNtYWtlLTMuMC4wLXJjMi0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItQUlYLXBvd2VycGMuc2giPmNtYWtlLTMuMC4wLXJjMi1BSVgtcG93ZXJwYy5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1BSVgtcG93ZXJwYy50YXIuWiI+Y21ha2UtMy4wLjAtcmMyLUFJWC1wb3dlcnBjLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLUFJWC1wb3dlcnBjLnRhci5neiI+Y21ha2UtMy4wLjAtcmMyLUFJWC1wb3dlcnBjLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4wLjAtcmMyLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4wLjAtcmMyLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLUlSSVg2NC02NC5zaCI+Y21ha2UtMy4wLjAtcmMyLUlSSVg2NC02NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1JUklYNjQtNjQudGFyLloiPmNtYWtlLTMuMC4wLXJjMi1JUklYNjQtNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItSVJJWDY0LTY0LnRhci5neiI+Y21ha2UtMy4wLjAtcmMyLUlSSVg2NC02NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItSVJJWDY0LW4zMi5zaCI+Y21ha2UtMy4wLjAtcmMyLUlSSVg2NC1uMzIuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItSVJJWDY0LW4zMi50YXIuWiI+Y21ha2UtMy4wLjAtcmMyLUlSSVg2NC1uMzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItSVJJWDY0LW4zMi50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMi1JUklYNjQtbjMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjAuMC1yYzItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjAuMC1yYzItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4wLjAtcmMyLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMyLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjAuMC1yYzItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjAuMC1yYzItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4wLjAtcmMyLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMy4wLjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzIudGFyLloiPmNtYWtlLTMuMC4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMTkgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMi50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTE5IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzIuemlwIj5jbWFrZS0zLjAuMC1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0xOSAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMC4wLXJjMy0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMzowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLTEudGFyLmJ6MiI+Y21ha2UtMy4wLjAtcmMzLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTM6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMy4wLjAtcmMzLUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMzowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0zLjAuMC1yYzMtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEzOjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzMtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMzowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEzOjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjAtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEzOjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTM6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4wLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtSVJJWDY0LTY0LnNoIj5jbWFrZS0zLjAuMC1yYzMtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMy4wLjAtcmMzLUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzMtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1JUklYNjQtbjMyLnNoIj5jbWFrZS0zLjAuMC1yYzMtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0zLjAuMC1yYzMtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMy4wLjAtcmMzLUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjAuMC1yYzMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuOUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjAuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4wLjAtcmMzLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMy4wLjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMudGFyLloiPmNtYWtlLTMuMC4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjYgMTI6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTI2IDEyOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzMuemlwIj5jbWFrZS0zLjAuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0yNiAxMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMC4wLXJjNC0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LTEudGFyLmJ6MiI+Y21ha2UtMy4wLjAtcmM0LTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1BSVgtcG93ZXJwYy5zaCI+Y21ha2UtMy4wLjAtcmM0LUFJWC1wb3dlcnBjLnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUFJWC1wb3dlcnBjLnRhci5aIj5jbWFrZS0zLjAuMC1yYzQtQUlYLXBvd2VycGMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtQUlYLXBvd2VycGMudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzQtQUlYLXBvd2VycGMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMC1yYzQtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjAtcmM0LURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMC1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4wLXJjNC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtcmM0LURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtSVJJWDY0LTY0LnNoIj5jbWFrZS0zLjAuMC1yYzQtSVJJWDY0LTY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUlSSVg2NC02NC50YXIuWiI+Y21ha2UtMy4wLjAtcmM0LUlSSVg2NC02NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1JUklYNjQtNjQudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzQtSVJJWDY0LTY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1JUklYNjQtbjMyLnNoIj5jbWFrZS0zLjAuMC1yYzQtSVJJWDY0LW4zMi5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1JUklYNjQtbjMyLnRhci5aIj5jbWFrZS0zLjAuMC1yYzQtSVJJWDY0LW4zMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1JUklYNjQtbjMyLnRhci5neiI+Y21ha2UtMy4wLjAtcmM0LUlSSVg2NC1uMzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMC4wLXJjNC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMC4wLXJjNC1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzQtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMC4wLXJjNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mi4ySzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMC4wLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjAuMC1yYzQtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjAuMC1yYzQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC50YXIuWiI+Y21ha2UtMy4wLjAtcmM0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xOCAwOTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM0LnRhci5neiI+Y21ha2UtMy4wLjAtcmM0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTggMDk6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNC56aXAiPmNtYWtlLTMuMC4wLXJjNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE4IDA5OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4wLjAtcmM1LTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtMS50YXIuYnoyIj5jbWFrZS0zLjAuMC1yYzUtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0xMyAxNDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM1LURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMC1yYzUtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjAtcmM1LURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjNS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMC1yYzUtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4wLXJjNS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtcmM1LURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4wLjAtcmM1LUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4wLjAtcmM1LUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjNS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4wLjAtcmM1LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjRLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM1LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4wLjAtcmM1LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM1LXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMC4wLXJjNS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0xMyAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM1LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMC4wLXJjNS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0xMyAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM1LnRhci5aIj5jbWFrZS0zLjAuMC1yYzUudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTEzIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzUudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0xMyAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM1LnppcCI+Y21ha2UtMy4wLjAtcmM1LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMTMgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjAuMC1yYzYtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi0xLnRhci5iejIiPmNtYWtlLTMuMC4wLXJjNi0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTIyIDE0OjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzYtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjNi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMC1yYzYtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjAtcmM2LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMC4wLXJjNi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjAtcmM2LURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMC1yYzYtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjAuMC1yYzYtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjAuMC1yYzYtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4wLjAtcmM2LUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtcmM2LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjAuMC1yYzYtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzYtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjAuMC1yYzYtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzYtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4wLjAtcmM2LXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTIyIDE0OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzYtd2luMzIteDg2LnppcCI+Y21ha2UtMy4wLjAtcmM2LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTIyIDE0OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzYudGFyLloiPmNtYWtlLTMuMC4wLXJjNi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDUtMjIgMTQ6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLXJjNi50YXIuZ3oiPmNtYWtlLTMuMC4wLXJjNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA1LTIyIDE0OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC1yYzYuemlwIj5jbWFrZS0zLjAuMC1yYzYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNS0yMiAxNDo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMC13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjAuMC13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAtd2luMzIteDg2LnppcCI+Y21ha2UtMy4wLjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMTAgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLnRhci5aIj5jbWFrZS0zLjAuMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMTAgMTM6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4wLnRhci5neiI+Y21ha2UtMy4wLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0xMCAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjAuemlwIj5jbWFrZS0zLjAuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTEwIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjAuMS0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAwOToxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjEtMS50YXIuYnoyIj5jbWFrZS0zLjAuMS0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4wLjEtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAwOToxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMC4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAwOToxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4wLjEtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMDk6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4wLjEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAwOToxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMDk6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMC4xLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjAuMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAwOToxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMC4xLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAwOToxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMC4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjAuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4xLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMC4xLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjAuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAwOToxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjEudGFyLloiPmNtYWtlLTMuMC4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAwOToxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjEudGFyLmd6Ij5jbWFrZS0zLjAuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDA5OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMS56aXAiPmNtYWtlLTMuMC4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMDk6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMC4yLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMi0xLnRhci5iejIiPmNtYWtlLTMuMC4yLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMC4yLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4wLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjAuMi1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjAuMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjAuMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAxMjoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjItTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4wLjItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMC4yLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDEyOjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4wLjItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDEyOjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4wLjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMC4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4wLjItd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4wLjItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMC4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDEyOjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMi50YXIuWiI+Y21ha2UtMy4wLjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTExIDEyOjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjAuMi50YXIuZ3oiPmNtYWtlLTMuMC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTEgMTI6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMC4yLnppcCI+Y21ha2UtMy4wLjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xMSAxMjoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjEvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMS9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYzNWQzNGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjEvaW5kZXguaHRtbApAQCAtMCwwICsxLDE1NiBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjMuMTwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My4xPC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMS4wLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC0xLnRhci5iejIiPmNtYWtlLTMuMS4wLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjEuMC1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMS4wLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4xLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjEuMC1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjEuMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjEuMC1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtRGFyd2luNjQuZG1nIj5jbWFrZS0zLjEuMC1EYXJ3aW42NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE5IDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1EYXJ3aW42NC50YXIuWiI+Y21ha2UtMy4xLjAtRGFyd2luNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE5IDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1EYXJ3aW42NC50YXIuZ3oiPmNtYWtlLTMuMS4wLURhcndpbjY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTkgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMS4wLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjEuMC1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMS4wLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEuMC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMS4wLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMS4wLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xLjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuOUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMS4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjEuMC1yYzEtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS0xLnRhci5iejIiPmNtYWtlLTMuMS4wLXJjMS0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEwLTI4IDE0OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMS4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjEuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDYzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4xLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMS4wLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4xLjAtcmMxLURhcndpbjY0LXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjEuMC1yYzEtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjEuMC1yYzEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjEuMC1yYzEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4xLjAtcmMxLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4xLjAtcmMxLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEwLTI4IDE0OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xLjAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEwLTI4IDE0OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzEudGFyLloiPmNtYWtlLTMuMS4wLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjggMTQ6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuMS4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEwLTI4IDE0OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzEuemlwIj5jbWFrZS0zLjEuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMC0yOCAxNDowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMS4wLXJjMi0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLTEudGFyLmJ6MiI+Y21ha2UtMy4xLjAtcmMyLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMTMgMTE6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4xLjAtcmMyLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMS4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjEuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4xLjAtcmMyLURhcndpbjY0LXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjEuMC1yYzItRGFyd2luNjQtdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMS4wLXJjMi1EYXJ3aW42NC11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMS4wLXJjMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMS4wLXJjMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjEuMC1yYzItTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMS4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS40SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMS4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjEuMC1yYzItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMTMgMTE6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMTMgMTE6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMi50YXIuWiI+Y21ha2UtMy4xLjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMyAxMTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMyLnRhci5neiI+Y21ha2UtMy4xLjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMTMgMTE6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMi56aXAiPmNtYWtlLTMuMS4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTEzIDExOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4xLjAtcmMzLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtMS50YXIuYnoyIj5jbWFrZS0zLjEuMC1yYzMtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAxNjo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMzLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjEuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4xLjAtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2M008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMS4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjEuMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMS4wLXJjMy1EYXJ3aW42NC11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0ME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtRGFyd2luNjQtdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4xLjAtcmMzLURhcndpbjY0LXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4xLjAtcmMzLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4xLjAtcmMzLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMS4wLXJjMy1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMS4wLXJjMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjEuMC1yYzMtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAxNjo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMS4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAxNjo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEuMC1yYzMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4xLjAtcmMzLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xLjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMudGFyLloiPmNtYWtlLTMuMS4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMTY6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMS4wLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDE2OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC1yYzMuemlwIj5jbWFrZS0zLjEuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0wOSAxNjo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMC13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjEuMC13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xLjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLnRhci5aIj5jbWFrZS0zLjEuMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMTcgMTM6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4wLnRhci5neiI+Y21ha2UtMy4xLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xNyAxMzoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjAuemlwIj5jbWFrZS0zLjEuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE3IDEzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjEuMS0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEtMS50YXIuYnoyIj5jbWFrZS0zLjEuMS0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4xLjEtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjEuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMS4xLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMS4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4xLjEtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEuMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMS4xLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjEuMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMS4xLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEuMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMS4xLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMS4xLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xLjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMS4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjEtd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4xLjEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMS4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS50YXIuWiI+Y21ha2UtMy4xLjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIyIDE2OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMS50YXIuZ3oiPmNtYWtlLTMuMS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDEtMjIgMTY6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4xLnppcCI+Y21ha2UtMy4xLjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMiAxNjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMS4yLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4xLjItRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjEuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEuMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuMS4yLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0MU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xLjItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjEuMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4xLjItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjEuMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xLjItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjEuMi1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEuMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMS4yLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEuMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4yLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMS4yLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjIudGFyLloiPmNtYWtlLTMuMS4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNSAxMDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjIudGFyLmd6Ij5jbWFrZS0zLjEuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA1IDEwOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMi56aXAiPmNtYWtlLTMuMS4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMDUgMTA6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMS4zLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy0xLnRhci5iejIiPmNtYWtlLTMuMS4zLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjEuMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMS4zLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4xLjMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0NE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xLjMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjEuMy1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMS4zLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4xLjMtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMS4zLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4xLjMtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMS4zLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4xLjMtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xLjMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEuMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xLjMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEuMy13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjEuMy13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xLjMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLnRhci5aIj5jbWFrZS0zLjEuMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTIgMTc6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMS4zLnRhci5neiI+Y21ha2UtMy4xLjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxNzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xLjMuemlwIj5jbWFrZS0zLjEuMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE3OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTAvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTAvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZjY1NGEzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMC9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTMxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My4xMDwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My4xMDwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTAuMC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4wLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMC4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMC4wLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMC4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTAuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNSAxNTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTAuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNSAxNTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEwLjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNSAxNTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTAuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNSAxNTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEwLjAtcmMxLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTAuMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDUgMTU6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMC4wLXJjMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNSAxNTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjEwLjAtcmMxLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA1IDE1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMxLnRhci5aIj5jbWFrZS0zLjEwLjAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNSAxNTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNSAxNTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMS56aXAiPmNtYWtlLTMuMTAuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNSAxNTo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMC4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTEyIDEyOjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMC4wLXJjMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTEyIDEyOjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTAuMC1yYzItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTEyIDEyOjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMC4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTEyIDEyOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMyLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTAuMC1yYzItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMC4wLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxMjowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjAtcmMyLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTEyIDEyOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMyLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTAuMC1yYzItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTI6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzIudGFyLloiPmNtYWtlLTMuMTAuMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTEyIDEyOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMyLnRhci5neiI+Y21ha2UtMy4xMC4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTEyIDEyOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMyLnppcCI+Y21ha2UtMy4xMC4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTEyIDEyOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMzLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEwLjAtcmMzLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTkgMTM6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEwLjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTkgMTM6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMC4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTkgMTM6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEwLjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTkgMTM6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMC4wLXJjMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEwLjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTE5IDEzOjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmMzLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTAuMC1yYzMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTkgMTM6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzMtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMC4wLXJjMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xOSAxMzoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjMy50YXIuWiI+Y21ha2UtMy4xMC4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTkgMTM6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzMudGFyLmd6Ij5jbWFrZS0zLjEwLjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTkgMTM6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzMuemlwIj5jbWFrZS0zLjEwLjAtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTkgMTM6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTAuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMSAxNTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTAuMC1yYzQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMSAxNTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEwLjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEwLjAtcmM0LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMSAxNTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTAuMC1yYzQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMSAxNTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEwLjAtcmM0LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTAuMC1yYzQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDEgMTU6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMC4wLXJjNC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMSAxNTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNC13aW42NC14NjQuemlwIj5jbWFrZS0zLjEwLjAtcmM0LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAxIDE1OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM0LnRhci5aIj5jbWFrZS0zLjEwLjAtcmM0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMSAxNTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMSAxNTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNC56aXAiPmNtYWtlLTMuMTAuMC1yYzQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMSAxNTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMC4wLXJjNS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzUtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM1LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMC4wLXJjNS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM1LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMC1yYzUtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTAuMC1yYzUtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM1LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMC4wLXJjNS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM1LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTAuMC1yYzUtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMC4wLXJjNS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4wLXJjNS13aW42NC14NjQubXNpIj5jbWFrZS0zLjEwLjAtcmM1LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM1LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTAuMC1yYzUtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC1yYzUudGFyLloiPmNtYWtlLTMuMTAuMC1yYzUudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM1LnRhci5neiI+Y21ha2UtMy4xMC4wLXJjNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtcmM1LnppcCI+Y21ha2UtMy4xMC4wLXJjNS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDE0OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMC4wLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMC4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMC4wLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMC4wLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAudGFyLloiPmNtYWtlLTMuMTAuMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMjAgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMC50YXIuZ3oiPmNtYWtlLTMuMTAuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTIwIDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjAuemlwIj5jbWFrZS0zLjEwLjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0yMCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4xLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEwLjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTE0IDA5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTAuMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTE0IDA5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4xLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTE0IDA5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTAuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTAuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTE0IDA5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMC4xLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTE0IDA5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMC4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTE0IDA5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMC4xLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTE0IDA5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjEtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMC4xLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTE0IDA5OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjEudGFyLloiPmNtYWtlLTMuMTAuMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMTQgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMS50YXIuZ3oiPmNtYWtlLTMuMTAuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEyLTE0IDA5OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjEuemlwIj5jbWFrZS0zLjEwLjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0xNCAwOTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4yLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEwLjItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAxLTE4IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTAuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAxLTE4IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAxLTE4IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTAuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTAuMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAxLTE4IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMC4yLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAxLTE4IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjItd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMC4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAxLTE4IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMC4yLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAxLTE4IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjItd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMC4yLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAxLTE4IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjIudGFyLloiPmNtYWtlLTMuMTAuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDEtMTggMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMi50YXIuZ3oiPmNtYWtlLTMuMTAuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAxLTE4IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjIuemlwIj5jbWFrZS0zLjEwLjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMS0xOCAxMjowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMC4zLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEwLjMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE2IDA5OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTAuMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTAuMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE2IDA5OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMC4zLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE2IDA5OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTAuMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTAuMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE2IDA5OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMC4zLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE2IDA5OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjMtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMC4zLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE2IDA5OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMC4zLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE2IDA5OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjMtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMC4zLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE2IDA5OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjMudGFyLloiPmNtYWtlLTMuMTAuMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTYgMDk6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTAuMy50YXIuZ3oiPmNtYWtlLTMuMTAuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE2IDA5OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEwLjMuemlwIj5jbWFrZS0zLjEwLjMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xNiAwOTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjExL2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjExL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODY5ZDc0MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTEvaW5kZXguaHRtbApAQCAtMCwwICsxLDEzMSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjMuMTE8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZmlsZXMvdjMuMTE8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9maWxlcy8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjExLjAtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTI4IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuMC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTEuMC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTI4IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMS4wLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTI4IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTEuMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTEuMC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTI4IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMxLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjExLjAtcmMxLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMS4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMTUgMTE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjExLjAtcmMxLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMTUgMTE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMS4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMS4wLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMTUgMTE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjExLjAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMTUgMTE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMS4wLXJjMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjExLjAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTE1IDExOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMxLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuMC1yYzEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMTUgMTE6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzEtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMS4wLXJjMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0xNSAxMTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMS50YXIuWiI+Y21ha2UtMy4xMS4wLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMTUgMTE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjExLjAtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMTUgMTE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzEuemlwIj5jbWFrZS0zLjExLjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMTUgMTE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTEuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0yNyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTEuMC1yYzItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0yNyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjExLjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0yNyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTEuMC1yYzItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0yNyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjExLjAtcmMyLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTEuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjcgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMS4wLXJjMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0yNyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjExLjAtcmMyLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI3IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMyLnRhci5aIj5jbWFrZS0zLjExLjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0yNyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMi50YXIuZ3oiPmNtYWtlLTMuMTEuMC1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0yNyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMi56aXAiPmNtYWtlLTMuMTEuMC1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMi0yNyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMS4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTA5IDEzOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMzLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMS4wLXJjMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTA5IDEzOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTEuMC1yYzMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTEuMC1yYzMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTA5IDEzOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMzLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMS4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTA5IDEzOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMzLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTEuMC1yYzMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMS4wLXJjMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0wOSAxMzo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjExLjAtcmMzLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTA5IDEzOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMzLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTEuMC1yYzMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMDkgMTM6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzMudGFyLloiPmNtYWtlLTMuMTEuMC1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTA5IDEzOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMzLnRhci5neiI+Y21ha2UtMy4xMS4wLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTA5IDEzOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmMzLnppcCI+Y21ha2UtMy4xMS4wLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTA5IDEzOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmM0LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjExLjAtcmM0LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMS4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTkgMTE6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzQtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjExLjAtcmM0LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTkgMTE6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzQtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMS4wLXJjNC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMS4wLXJjNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTkgMTE6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjExLjAtcmM0LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTkgMTE6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzQtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMS4wLXJjNC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjExLjAtcmM0LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTE5IDExOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjAtcmM0LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTEuMC1yYzQtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTkgMTE6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzQtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMS4wLXJjNC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0xOSAxMTowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLXJjNC50YXIuWiI+Y21ha2UtMy4xMS4wLXJjNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTkgMTE6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzQudGFyLmd6Ij5jbWFrZS0zLjExLjAtcmM0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTkgMTE6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC1yYzQuemlwIj5jbWFrZS0zLjExLjAtcmM0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMTkgMTE6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjExLjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjExLjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC13aW42NC14NjQubXNpIj5jbWFrZS0zLjExLjAtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC13aW42NC14NjQuemlwIj5jbWFrZS0zLjExLjAtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC50YXIuWiI+Y21ha2UtMy4xMS4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4wLnRhci5neiI+Y21ha2UtMy4xMS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDMtMjggMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMC56aXAiPmNtYWtlLTMuMTEuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTI4IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTEuMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTcgMTE6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMS4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMS4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTcgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTcgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMS4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMS4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTcgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjExLjEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTcgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjExLjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTcgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjExLjEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTcgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjExLjEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTcgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMS50YXIuWiI+Y21ha2UtMy4xMS4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0xNyAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4xLnRhci5neiI+Y21ha2UtMy4xMS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTcgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMS56aXAiPmNtYWtlLTMuMTEuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTE3IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTEuMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTcgMTI6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMS4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMS4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTcgMTI6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTcgMTI6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMS4yLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMS4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTcgMTI6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjExLjItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTcgMTI6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjExLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTcgMTI6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjExLjItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTcgMTI6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjExLjItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTcgMTI6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMi50YXIuWiI+Y21ha2UtMy4xMS4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xNyAxMjo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4yLnRhci5neiI+Y21ha2UtMy4xMS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTcgMTI6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMi56aXAiPmNtYWtlLTMuMTEuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTE3IDEyOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTEuMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMzEgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMS4zLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMS4zLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMzEgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMzEgMTU6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMS4zLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMS4zLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMzEgMTU6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjExLjMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMzEgMTU6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjExLjMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMzEgMTU6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjExLjMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMzEgMTU6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjExLjMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMzEgMTU6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMy50YXIuWiI+Y21ha2UtMy4xMS4zLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0zMSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS4zLnRhci5neiI+Y21ha2UtMy4xMS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMzEgMTU6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuMy56aXAiPmNtYWtlLTMuMTEuMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTMxIDE1OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjExLjQtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTEuNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTM6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuNC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMS40LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMS40LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTM6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuNC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjExLjQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTM6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMS40LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMS40LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTM6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuNC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjExLjQtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTM6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuNC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjExLjQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTM6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuNC13aW42NC14NjQubXNpIj5jbWFrZS0zLjExLjQtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTM6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuNC13aW42NC14NjQuemlwIj5jbWFrZS0zLjExLjQtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTM6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuNC50YXIuWiI+Y21ha2UtMy4xMS40LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMS40LnRhci5neiI+Y21ha2UtMy4xMS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTM6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTEuNC56aXAiPmNtYWtlLTMuMTEuNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDEzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTIvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTIvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xOTc3ZTdlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMi9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTE4IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My4xMjwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My4xMjwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTIuMC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTcgMDk6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMi4wLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMi4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTcgMDk6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTcgMDk6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMi4wLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMi4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTcgMDk6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTIuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxNTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTIuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxNTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEyLjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxNTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTIuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxNTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEyLjAtcmMxLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTIuMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMTQgMTU6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMi4wLXJjMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxNTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjEyLjAtcmMxLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTE0IDE1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMxLnRhci5aIj5jbWFrZS0zLjEyLjAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxNTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuMTIuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxNTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMS56aXAiPmNtYWtlLTMuMTIuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0xNCAxNTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMi4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTI5IDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMi4wLXJjMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTI5IDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTIuMC1yYzItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTIuMC1yYzItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTI5IDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMi4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTI5IDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMyLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTIuMC1yYzItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMi4wLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNi0yOSAxMzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjEyLjAtcmMyLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTI5IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMyLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTIuMC1yYzItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjkgMTM6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzIudGFyLloiPmNtYWtlLTMuMTIuMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTI5IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMyLnRhci5neiI+Y21ha2UtMy4xMi4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTI5IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMyLnppcCI+Y21ha2UtMy4xMi4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTI5IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMzLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEyLjAtcmMzLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMi4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMDkgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEyLjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMDkgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMi4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMi4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMDkgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEyLjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMDkgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMi4wLXJjMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEyLjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTA5IDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjAtcmMzLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTIuMC1yYzMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMDkgMTE6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzMtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMi4wLXJjMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0wOSAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLXJjMy50YXIuWiI+Y21ha2UtMy4xMi4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMDkgMTE6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzMudGFyLmd6Ij5jbWFrZS0zLjEyLjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMDkgMTE6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC1yYzMuemlwIj5jbWFrZS0zLjEyLjAtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMDkgMTE6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEyLjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTcgMDk6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEyLjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTcgMDk6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC13aW42NC14NjQubXNpIj5jbWFrZS0zLjEyLjAtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTcgMDk6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC13aW42NC14NjQuemlwIj5jbWFrZS0zLjEyLjAtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTcgMDk6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC50YXIuWiI+Y21ha2UtMy4xMi4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNyAwOTo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4wLnRhci5neiI+Y21ha2UtMy4xMi4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTcgMDk6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMC56aXAiPmNtYWtlLTMuMTIuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE3IDA5OjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTIuMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDgtMDkgMTE6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMi4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMi4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDgtMDkgMTE6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDgtMDkgMTE6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMi4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMi4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDgtMDkgMTE6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEyLjEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDgtMDkgMTE6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEyLjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDgtMDkgMTE6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjEyLjEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDgtMDkgMTE6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjEyLjEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDgtMDkgMTE6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMS50YXIuWiI+Y21ha2UtMy4xMi4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wOSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4xLnRhci5neiI+Y21ha2UtMy4xMi4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDgtMDkgMTE6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMS56aXAiPmNtYWtlLTMuMTIuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA5IDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTIuMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDktMDcgMTI6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMi4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMi4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDktMDcgMTI6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDktMDcgMTI6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMi4yLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMi4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDktMDcgMTI6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEyLjItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDktMDcgMTI6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEyLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDktMDcgMTI6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjEyLjItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDktMDcgMTI6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjEyLjItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDktMDcgMTI6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMi50YXIuWiI+Y21ha2UtMy4xMi4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOS0wNyAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4yLnRhci5neiI+Y21ha2UtMy4xMi4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDktMDcgMTI6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMi56aXAiPmNtYWtlLTMuMTIuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA5LTA3IDEyOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTIuMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDMgMTA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMi4zLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMi4zLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDMgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDMgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMi4zLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMi4zLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDMgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEyLjMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDMgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEyLjMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDMgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjEyLjMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDMgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjEyLjMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDMgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMy50YXIuWiI+Y21ha2UtMy4xMi4zLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wMyAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi4zLnRhci5neiI+Y21ha2UtMy4xMi4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDMgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuMy56aXAiPmNtYWtlLTMuMTIuMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTAzIDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEyLjQtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTIuNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDIgMTM6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuNC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMi40LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMi40LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDIgMTM6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuNC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEyLjQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDIgMTM6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMi40LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMi40LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDIgMTM6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuNC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEyLjQtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDIgMTM6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuNC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEyLjQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDIgMTM6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuNC13aW42NC14NjQubXNpIj5jbWFrZS0zLjEyLjQtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDIgMTM6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuNC13aW42NC14NjQuemlwIj5jbWFrZS0zLjEyLjQtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDIgMTM6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuNC50YXIuWiI+Y21ha2UtMy4xMi40LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wMiAxMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMi40LnRhci5neiI+Y21ha2UtMy4xMi40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDIgMTM6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTIuNC56aXAiPmNtYWtlLTMuMTIuNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTAyIDEzOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTMvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTMvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNTBhNzkxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xMy9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTMxIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My4xMzwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My4xMzwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTMuMC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjAgMTQ6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMy4wLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMy4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjAgMTQ6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjAgMTQ6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMy4wLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMy4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjAgMTQ6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTMuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wOSAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTMuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wOSAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjEzLjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wOSAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTMuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wOSAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEzLjAtcmMxLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTMuMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMDkgMTE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xMy4wLXJjMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wOSAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjEzLjAtcmMxLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTA5IDExOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMxLnRhci5aIj5jbWFrZS0zLjEzLjAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wOSAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuMTMuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wOSAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMS56aXAiPmNtYWtlLTMuMTMuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0wOSAxMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xMy4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDEwOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMy4wLXJjMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTMuMC1yYzItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTMuMC1yYzItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMy4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMyLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTMuMC1yYzItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMy4xMy4wLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0yNSAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjEzLjAtcmMyLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMyLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTMuMC1yYzItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTAtMjUgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzIudGFyLloiPmNtYWtlLTMuMTMuMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMyLnRhci5neiI+Y21ha2UtMy4xMy4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMyLnppcCI+Y21ha2UtMy4xMy4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMzLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjEzLjAtcmMzLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMy4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDcgMTI6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjEzLjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDcgMTI6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMy4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMy4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDcgMTI6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjEzLjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDcgMTI6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xMy4wLXJjMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEzLjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTA3IDEyOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjAtcmMzLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTMuMC1yYzMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDcgMTI6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzMtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xMy4wLXJjMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0wNyAxMjoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLXJjMy50YXIuWiI+Y21ha2UtMy4xMy4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDcgMTI6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzMudGFyLmd6Ij5jbWFrZS0zLjEzLjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDcgMTI6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC1yYzMuemlwIj5jbWFrZS0zLjEzLjAtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMDcgMTI6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEzLjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjAgMTQ6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEzLjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjAgMTQ6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC13aW42NC14NjQubXNpIj5jbWFrZS0zLjEzLjAtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjAgMTQ6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC13aW42NC14NjQuemlwIj5jbWFrZS0zLjEzLjAtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjAgMTQ6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC50YXIuWiI+Y21ha2UtMy4xMy4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yMCAxNDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4wLnRhci5neiI+Y21ha2UtMy4xMy4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjAgMTQ6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMC56aXAiPmNtYWtlLTMuMTMuMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTIwIDE0OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTMuMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjggMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMy4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMy4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjggMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjggMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMy4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMy4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjggMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEzLjEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjggMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEzLjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjggMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjEzLjEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjggMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjEzLjEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjggMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMS50YXIuWiI+Y21ha2UtMy4xMy4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMS0yOCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4xLnRhci5neiI+Y21ha2UtMy4xMy4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTEtMjggMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMS56aXAiPmNtYWtlLTMuMTMuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTExLTI4IDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTMuMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTItMTMgMDg6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMy4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMy4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTItMTMgMDg6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTItMTMgMDg6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMy4yLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMy4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTItMTMgMDg6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEzLjItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTItMTMgMDg6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEzLjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTItMTMgMDg6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjEzLjItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTItMTMgMDg6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjEzLjItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTItMTMgMDg6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMi50YXIuWiI+Y21ha2UtMy4xMy4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMi0xMyAwODo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4yLnRhci5neiI+Y21ha2UtMy4xMy4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMTItMTMgMDg6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMi56aXAiPmNtYWtlLTMuMTMuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEyLTEzIDA4OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTMuMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDEtMTQgMDk6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMy4zLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMy4zLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDEtMTQgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDEtMTQgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMy4zLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMy4zLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDEtMTQgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEzLjMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDEtMTQgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEzLjMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDEtMTQgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjEzLjMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDEtMTQgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjEzLjMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDEtMTQgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMy50YXIuWiI+Y21ha2UtMy4xMy4zLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMS0xNCAwOToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy4zLnRhci5neiI+Y21ha2UtMy4xMy4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDEtMTQgMDk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuMy56aXAiPmNtYWtlLTMuMTMuMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAxLTE0IDA5OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjQtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTMuNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDEgMTM6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMy40LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMy40LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDEgMTM6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDEgMTM6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMy40LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMy40LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDEgMTM6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEzLjQtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDEgMTM6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEzLjQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDEgMTM6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNC13aW42NC14NjQubXNpIj5jbWFrZS0zLjEzLjQtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDEgMTM6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNC13aW42NC14NjQuemlwIj5jbWFrZS0zLjEzLjQtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDEgMTM6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNC50YXIuWiI+Y21ha2UtMy4xMy40LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wMSAxMzoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy40LnRhci5neiI+Y21ha2UtMy4xMy40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDEgMTM6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNC56aXAiPmNtYWtlLTMuMTMuNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTAxIDEzOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjEzLjUtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTMuNS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTI6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xMy41LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xMy41LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTI6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjEzLjUtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTI6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNS1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xMy41LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xMy41LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTI6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjEzLjUtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTI6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjEzLjUtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTI6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNS13aW42NC14NjQubXNpIj5jbWFrZS0zLjEzLjUtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTI6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNS13aW42NC14NjQuemlwIj5jbWFrZS0zLjEzLjUtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTI6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNS50YXIuWiI+Y21ha2UtMy4xMy41LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMjo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xMy41LnRhci5neiI+Y21ha2UtMy4xMy41LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTI6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTMuNS56aXAiPmNtYWtlLTMuMTMuNS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEyOjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTQvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTQvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZWM5YzE0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xNC9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTcwIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My4xNDwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My4xNDwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTQuMC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTQgMTE6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC4wLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xNCAxMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNC4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTQgMTE6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTQgMTE6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNC4wLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0yMiAxMTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNC4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMjIgMTE6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTQuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wNyAxMDozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wNyAxMDozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE0LjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wNyAxMDozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wNyAxMDozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE0LjAtcmMxLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTQuMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMDcgMTA6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC4wLXJjMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wNyAxMDozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjE0LjAtcmMxLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTA3IDEwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMxLnRhci5aIj5jbWFrZS0zLjE0LjAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wNyAxMDozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuMTQuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wNyAxMDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMS56aXAiPmNtYWtlLTMuMTQuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0wNyAxMDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNC4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTE1IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNC4wLXJjMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTE1IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMC1yYzItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTQuMC1yYzItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTE1IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNC4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTE1IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMyLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTQuMC1yYzItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNC4wLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0xNSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjE0LjAtcmMyLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTE1IDEwOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMyLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTQuMC1yYzItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDItMTUgMTA6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzIudGFyLloiPmNtYWtlLTMuMTQuMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTE1IDEwOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMyLnRhci5neiI+Y21ha2UtMy4xNC4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTE1IDEwOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMyLnppcCI+Y21ha2UtMy4xNC4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTE1IDEwOjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMzLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE0LjAtcmMzLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDEgMTE6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE0LjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDEgMTE6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNC4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNC4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDEgMTE6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE0LjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDEgMTE6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNC4wLXJjMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE0LjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTAxIDExOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmMzLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTQuMC1yYzMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDEgMTE6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzMtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNC4wLXJjMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMSAxMToyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjMy50YXIuWiI+Y21ha2UtMy4xNC4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDEgMTE6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzMudGFyLmd6Ij5jbWFrZS0zLjE0LjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDEgMTE6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzMuemlwIj5jbWFrZS0zLjE0LjAtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDEgMTE6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTQuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wOCAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjNC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTQuMC1yYzQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wOCAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjNC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE0LjAtcmM0LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wOCAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTQuMC1yYzQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wOCAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjNC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE0LjAtcmM0LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTQuMC1yYzQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDggMTE6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMC1yYzQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNC4wLXJjNC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wOCAxMTowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjNC13aW42NC14NjQuemlwIj5jbWFrZS0zLjE0LjAtcmM0LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTA4IDExOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAtcmM0LnRhci5aIj5jbWFrZS0zLjE0LjAtcmM0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wOCAxMTowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjNC50YXIuZ3oiPmNtYWtlLTMuMTQuMC1yYzQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wOCAxMTowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXJjNC56aXAiPmNtYWtlLTMuMTQuMC1yYzQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wOCAxMTowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTQuMC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xNCAxMTozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTQuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xNCAxMTozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTQuMC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0yMiAxMTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTQuMC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0yMiAxMTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLnRhci5aIj5jbWFrZS0zLjE0LjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTE0IDExOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjAudGFyLmd6Ij5jbWFrZS0zLjE0LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0xNCAxMTozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4wLnppcCI+Y21ha2UtMy4xNC4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMTQgMTE6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNC4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0yOSAxMjoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE0LjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0yOSAxMjoyMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0yOSAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE0LjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE0LjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0yOSAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4xLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTQuMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0yOSAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTQuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0yOSAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4xLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTQuMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0yOSAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4xLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTQuMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0yOSAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4xLnRhci5aIj5jbWFrZS0zLjE0LjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAzLTI5IDEyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjEudGFyLmd6Ij5jbWFrZS0zLjE0LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0yOSAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4xLnppcCI+Y21ha2UtMy4xNC4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMjkgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNC4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0xMiAxMDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE0LjItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0xMiAxMDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0xMiAxMDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE0LjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE0LjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0xMiAxMDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4yLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTQuMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0xMiAxMDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTQuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0xMiAxMDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4yLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTQuMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0xMiAxMDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4yLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTQuMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0xMiAxMDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4yLnRhci5aIj5jbWFrZS0zLjE0LjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTEyIDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjIudGFyLmd6Ij5jbWFrZS0zLjE0LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0xMiAxMDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4yLnppcCI+Y21ha2UtMy4xNC4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMTIgMTA6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNC4zLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0yMiAxMDo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE0LjMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0yMiAxMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4zLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0yMiAxMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4zLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE0LjMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE0LjMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0yMiAxMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4zLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTQuMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0yMiAxMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4zLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTQuMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0yMiAxMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4zLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTQuMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0yMiAxMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4zLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTQuMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0yMiAxMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4zLnRhci5aIj5jbWFrZS0zLjE0LjMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA0LTIyIDEwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjMudGFyLmd6Ij5jbWFrZS0zLjE0LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNC0yMiAxMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC4zLnppcCI+Y21ha2UtMy4xNC4zLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDQtMjIgMTA6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNC40LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxNDowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC40LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDE0OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE0LjQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxNDowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC40LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuNC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC40LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE0LjQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE0LjQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC40LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTQuNC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC40LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTQuNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC40LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTQuNC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC40LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTQuNC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC40LnRhci5aIj5jbWFrZS0zLjE0LjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTE0IDEzOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjQudGFyLmd6Ij5jbWFrZS0zLjE0LjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0xNCAxMzo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC40LnppcCI+Y21ha2UtMy4xNC40LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMTQgMTM6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNC41LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0zMSAxMjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC41LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjUtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE0LjUtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0zMSAxMjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC41LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuNS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0zMSAxMjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC41LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE0LjUtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE0LjUtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0zMSAxMjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC41LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTQuNS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0zMSAxMjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC41LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTQuNS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0zMSAxMjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC41LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTQuNS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0zMSAxMjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC41LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTQuNS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0zMSAxMjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC41LnRhci5aIj5jbWFrZS0zLjE0LjUudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMxIDEyOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjUudGFyLmd6Ij5jbWFrZS0zLjE0LjUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0zMSAxMjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC41LnppcCI+Y21ha2UtMy4xNC41LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDUtMzEgMTI6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNC42LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNiAwOTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC42LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjYtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE0LjYtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNiAwOTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC42LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuNi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNiAwOTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC42LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE0LjYtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE0LjYtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNiAwOTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC42LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTQuNi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNiAwOTozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC42LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTQuNi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNiAwOTozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC42LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTQuNi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNiAwOTozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC42LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTQuNi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNiAwOTozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC42LnRhci5aIj5jbWFrZS0zLjE0LjYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE2IDA5OjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjYudGFyLmd6Ij5jbWFrZS0zLjE0LjYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNiAwOTozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC42LnppcCI+Y21ha2UtMy4xNC42LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTYgMDk6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTQuNy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNC43LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC43LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE0LjctRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjctTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE0LjctTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC43LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTQuNy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC43LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE0LjctU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjctU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE0LjctU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC43LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTQuNy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC43LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTQuNy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC43LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTQuNy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC43LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTQuNy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC43LnRhci5aIj5jbWFrZS0zLjE0LjcudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE0LjcudGFyLmd6Ij5jbWFrZS0zLjE0LjcudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNC43LnppcCI+Y21ha2UtMy4xNC43LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xNS9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4xNS9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyNzI2NzYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjE1L2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxNTcgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjE1PC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjE1PC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNS4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNyAxMDozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE1LjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNyAxMDozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNyAxMDozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE1LjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE1LjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNyAxMDozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNS4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTA0IDE0OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTA0IDE0OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTUuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTA0IDE0OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTA0IDE0OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTUuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNS4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0wNCAxNDoyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTA0IDE0OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTUuMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMDQgMTQ6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzEudGFyLloiPmNtYWtlLTMuMTUuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTA0IDE0OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMxLnRhci5neiI+Y21ha2UtMy4xNS4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTA0IDE0OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMxLnppcCI+Y21ha2UtMy4xNS4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTA0IDE0OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE1LjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMTkgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE1LjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMTkgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNS4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMTkgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE1LjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMTkgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNS4wLXJjMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE1LjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTE5IDEwOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMyLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTUuMC1yYzItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMTkgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNS4wLXJjMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0xOSAxMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMi50YXIuWiI+Y21ha2UtMy4xNS4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMTkgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjE1LjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMTkgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzIuemlwIj5jbWFrZS0zLjE1LjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMTkgMTA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTUuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0yNyAxMTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTUuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0yNyAxMTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE1LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE1LjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0yNyAxMTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTUuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0yNyAxMTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE1LjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTUuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDYtMjcgMTE6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNS4wLXJjMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0yNyAxMTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjE1LjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA2LTI3IDExOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmMzLnRhci5aIj5jbWFrZS0zLjE1LjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0yNyAxMTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuMTUuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0yNyAxMTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjMy56aXAiPmNtYWtlLTMuMTUuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNi0yNyAxMTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNS4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTEwIDE1OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmM0LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNS4wLXJjNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTEwIDE1OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuMC1yYzQtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTUuMC1yYzQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTEwIDE1OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmM0LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNS4wLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTEwIDE1OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmM0LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTUuMC1yYzQtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNS4wLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xMCAxNTowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4wLXJjNC13aW42NC14NjQubXNpIj5jbWFrZS0zLjE1LjAtcmM0LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTEwIDE1OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmM0LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTUuMC1yYzQtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTAgMTU6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC1yYzQudGFyLloiPmNtYWtlLTMuMTUuMC1yYzQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTEwIDE1OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmM0LnRhci5neiI+Y21ha2UtMy4xNS4wLXJjNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTEwIDE1OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtcmM0LnppcCI+Y21ha2UtMy4xNS4wLXJjNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTEwIDE1OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNS4wLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNS4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNS4wLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNS4wLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAudGFyLloiPmNtYWtlLTMuMTUuMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMTcgMTA6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMC50YXIuZ3oiPmNtYWtlLTMuMTUuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTE3IDEwOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjAuemlwIj5jbWFrZS0zLjE1LjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0xNyAxMDozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4xLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE1LjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTI2IDEwOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTUuMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTI2IDEwOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4xLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTI2IDEwOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTUuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTUuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTI2IDEwOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNS4xLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTI2IDEwOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNS4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTI2IDEwOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNS4xLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTI2IDEwOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjEtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNS4xLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTI2IDEwOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjEudGFyLloiPmNtYWtlLTMuMTUuMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMjYgMTA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMS50YXIuZ3oiPmNtYWtlLTMuMTUuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTI2IDEwOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjEuemlwIj5jbWFrZS0zLjE1LjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNy0yNiAxMDoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4yLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE1LjItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA4LTA3IDE1OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTUuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA4LTA3IDE1OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA4LTA3IDE1OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTUuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTUuMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA4LTA3IDE1OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNS4yLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA4LTA3IDE1OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjItd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNS4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA4LTA3IDE1OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNS4yLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA4LTA3IDE1OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjItd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNS4yLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA4LTA3IDE1OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjIudGFyLloiPmNtYWtlLTMuMTUuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDcgMTU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMi50YXIuZ3oiPmNtYWtlLTMuMTUuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA4LTA3IDE1OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjIuemlwIj5jbWFrZS0zLjE1LjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOC0wNyAxNTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS4zLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE1LjMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTA0IDExOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTUuMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTA0IDExOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS4zLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTA0IDExOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTUuMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTUuMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTA0IDExOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNS4zLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTA0IDExOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjMtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNS4zLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTA0IDExOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNS4zLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTA0IDExOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjMtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNS4zLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTA0IDExOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjMudGFyLloiPmNtYWtlLTMuMTUuMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMDQgMTE6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuMy50YXIuZ3oiPmNtYWtlLTMuMTUuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTA0IDExOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjMuemlwIj5jbWFrZS0zLjE1LjMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOS0wNCAxMToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS40LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE1LjQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuNC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTUuNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjQtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS40LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTUuNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTUuNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjQtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNS40LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjQtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNS40LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNS40LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjQtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNS40LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjQudGFyLloiPmNtYWtlLTMuMTUuNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMDIgMTA6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNC50YXIuZ3oiPmNtYWtlLTMuMTUuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTAyIDEwOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjQuemlwIj5jbWFrZS0zLjE1LjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0wMiAxMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS41LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE1LjUtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMwIDEwOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjUtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuNS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTUuNS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMwIDEwOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjUtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS41LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMwIDEwOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjUtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTUuNS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTUuNS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMwIDEwOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjUtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNS41LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMwIDEwOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjUtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNS41LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMwIDEwOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjUtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNS41LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMwIDEwOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjUtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNS41LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMwIDEwOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjUudGFyLloiPmNtYWtlLTMuMTUuNS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzAgMTA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNS50YXIuZ3oiPmNtYWtlLTMuMTUuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMwIDEwOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjUuemlwIj5jbWFrZS0zLjE1LjUuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMCAxMDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNS42LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE1LjYtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTE2IDExOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjYtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTUuNi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTUuNi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTE2IDExOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjYtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNS42LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTE2IDExOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjYtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTUuNi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTUuNi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTE2IDExOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjYtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNS42LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTE2IDExOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjYtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNS42LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTE2IDExOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjYtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNS42LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTE2IDExOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjYtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNS42LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTE2IDExOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjYudGFyLloiPmNtYWtlLTMuMTUuNi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTYgMTE6MzAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTUuNi50YXIuZ3oiPmNtYWtlLTMuMTUuNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTE2IDExOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE1LjYuemlwIj5jbWFrZS0zLjE1LjYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xNiAxMTozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjE2L2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjE2L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzRmOWI0MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMTYvaW5kZXguaHRtbApAQCAtMCwwICsxLDg2IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My4xNjwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My4xNjwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTYuMC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjYgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNi4wLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yNiAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNi4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjYgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE2LjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjYgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNi4wLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yNiAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45MzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNi4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjYgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTYuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE2LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xMCAxNDoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTYuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xMCAxNDoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE2LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE2LjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xMCAxNDoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTYuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xMCAxNDoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE2LjAtcmMxLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTYuMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTAgMTQ6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNi4wLXJjMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xMCAxNDoxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjE2LjAtcmMxLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLnRhci5neiI+Y21ha2UtMy4xNi4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMxLnppcCI+Y21ha2UtMy4xNi4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTEwIDE0OjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjE2LjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNi4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTggMTA6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE2LjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTggMTA6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4xNi4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4xNi4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTggMTA6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OTcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE2LjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTggMTA6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNi4wLXJjMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjE2LjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTE4IDEwOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMyLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTYuMC1yYzItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMTggMTA6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNi4wLXJjMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi50YXIuZ3oiPmNtYWtlLTMuMTYuMC1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMi56aXAiPmNtYWtlLTMuMTYuMC1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0xOCAxMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNi4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMxIDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMzLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4xNi4wLXJjMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMxIDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMC1yYzMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMTYuMC1yYzMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMxIDEyOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjk3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMzLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4xNi4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMxIDEyOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMzLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTYuMC1yYzMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNi4wLXJjMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMC0zMSAxMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjE2LjAtcmMzLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEwLTMxIDEyOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmMzLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTYuMC1yYzMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMudGFyLmd6Ij5jbWFrZS0zLjE2LjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzMuemlwIj5jbWFrZS0zLjE2LjAtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTAtMzEgMTI6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMTYuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE2LjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0xOCAxNzowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjNC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMTYuMC1yYzQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0xOCAxNzowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjNC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE2LjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE2LjAtcmM0LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0xOCAxNzowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45NzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMTYuMC1yYzQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0xOCAxNzowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjNC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjE2LjAtcmM0LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTYuMC1yYzQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMTggMTc6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMC1yYzQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNi4wLXJjNC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0xOCAxNzowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLXJjNC13aW42NC14NjQuemlwIj5jbWFrZS0zLjE2LjAtcmM0LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LnRhci5neiI+Y21ha2UtMy4xNi4wLXJjNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtcmM0LnppcCI+Y21ha2UtMy4xNi4wLXJjNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTE4IDE3OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy4xNi4wLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTI2IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtd2luMzIteDg2LnppcCI+Y21ha2UtMy4xNi4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTI2IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy4xNi4wLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTI2IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAtd2luNjQteDY0LnppcCI+Y21ha2UtMy4xNi4wLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTI2IDEwOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjAudGFyLmd6Ij5jbWFrZS0zLjE2LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yNiAxMDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4wLnppcCI+Y21ha2UtMy4xNi4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTEtMjYgMTA6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4xNi4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xMCAxMDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjE2LjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjE2LjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xMCAxMDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMTYuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xMCAxMDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjE2LjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkzMiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjE2LjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjE2LjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xMCAxMDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4xLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuMTYuMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xMCAxMDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMTYuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xMCAxMDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4xLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuMTYuMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xMCAxMDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4xLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuMTYuMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMi0xMCAxMDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4xNi4xLnRhci5neiI+Y21ha2UtMy4xNi4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMTItMTAgMTA6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMTYuMS56aXAiPmNtYWtlLTMuMTYuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTEyLTEwIDEwOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMi9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4yL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYThjNmM3ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuMi9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTMyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My4yPC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjI8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9maWxlcy8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4yLjAtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLTEudGFyLmJ6MiI+Y21ha2UtMy4yLjAtMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMi4wLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4yLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjIuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjIuMC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuMi4wLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4yLjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjIuMC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4yLjAtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjIuMC1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4yLjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjIuMC1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjIuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMi4wLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjIuMC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMi4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjIuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4yLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjIuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEzIDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4yLjAtcmMxLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEzIDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Mk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMi4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjIuMC1yYzEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjIuMC1yYzEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4yLjAtcmMxLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4yLjAtcmMxLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMi4wLXJjMS1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEzIDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4yLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEzIDE1OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMi4wLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMi4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjIuMC1yYzEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjIuMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS50YXIuWiI+Y21ha2UtMy4yLjAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMyAxNTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMxLnRhci5neiI+Y21ha2UtMy4yLjAtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTMgMTU6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMS56aXAiPmNtYWtlLTMuMi4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEzIDE1OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzItRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMi4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjIuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4yLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjIuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTI0IDA4OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4yLjAtcmMyLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTI0IDA4OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMi4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjIuMC1yYzItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjIuMC1yYzItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4yLjAtcmMyLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4yLjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMi4wLXJjMi1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTI0IDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4yLjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTI0IDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuMi4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMi4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjIuMC1yYzItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjIuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi50YXIuWiI+Y21ha2UtMy4yLjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0yNCAwODo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAtcmMyLnRhci5neiI+Y21ha2UtMy4yLjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMjQgMDg6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXJjMi56aXAiPmNtYWtlLTMuMi4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTI0IDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4wLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMi4wLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjIuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAudGFyLloiPmNtYWtlLTMuMi4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMCAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjAudGFyLmd6Ij5jbWFrZS0zLjIuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTEwIDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMC56aXAiPmNtYWtlLTMuMi4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTAgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMi4xLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS0xLnRhci5iejIiPmNtYWtlLTMuMi4xLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjIuMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMi4xLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2Nk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4yLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0Nk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4yLjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjIuMS1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMi4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4yLjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMi4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4yLjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMi4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4yLjEtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4yLjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjIuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4yLjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMS13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjIuMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4yLjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLnRhci5aIj5jbWFrZS0zLjIuMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDMtMTEgMDk6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4xLnRhci5neiI+Y21ha2UtMy4yLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMy0xMSAwOTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjEuemlwIj5jbWFrZS0zLjIuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAzLTExIDA5OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4yLjItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjIuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMi4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMi4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4yLjItRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjIuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMi4yLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjIuMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMi4yLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjIuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMi4yLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMi4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4yLjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMi4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjItd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4yLjItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMi4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi50YXIuWiI+Y21ha2UtMy4yLjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA0LTE0IDEzOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMi50YXIuZ3oiPmNtYWtlLTMuMi4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDQtMTQgMTM6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4yLnppcCI+Y21ha2UtMy4yLjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNC0xNCAxMzo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMi4zLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4yLjMtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjIuMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjIuMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuMi4zLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4yLjMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjIuMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4yLjMtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjIuMy1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4yLjMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjIuMy1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjIuMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMi4zLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjIuMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMi4zLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMi4zLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjIuMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMudGFyLloiPmNtYWtlLTMuMi4zLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wMSAxNzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4yLjMudGFyLmd6Ij5jbWFrZS0zLjIuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTAxIDE3OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjIuMy56aXAiPmNtYWtlLTMuMi4zLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDEgMTc6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4zL2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjMvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDUzNzM2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My4zL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxNjMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjM8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZmlsZXMvdjMuMzwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjMuMC0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtMS50YXIuYnoyIj5jbWFrZS0zLjMuMC0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4zLjAtRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjMuMC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMy4wLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMy4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjAtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjMuMC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMy4wLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjMuMC1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMy4wLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjMuMC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMy4wLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMy4wLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy4zLjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMy4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjMuMC1yYzEtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS0xLnBhdGNoIj5jbWFrZS0zLjMuMC1yYzEtMS5wYXRjaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAwIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS0xLnNoIj5jbWFrZS0zLjMuMC1yYzEtMS5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS41SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS0xLnRhci5iejIiPmNtYWtlLTMuMy4wLXJjMS0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTA1IDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMy4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjMuMC1yYzEtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4zLjAtcmMxLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjMuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTA1IDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjAtcmMxLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTA1IDA5OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjMuMC1yYzEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjMuMC1yYzEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4zLjAtcmMxLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4zLjAtcmMxLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMy4wLXJjMS1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTA1IDA5OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTA1IDA5OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMy4wLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMy4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjMuMC1yYzEtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjMuMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS50YXIuWiI+Y21ha2UtMy4zLjAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0wNSAwOTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMxLnRhci5neiI+Y21ha2UtMy4zLjAtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMDUgMDk6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMS56aXAiPmNtYWtlLTMuMy4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTA1IDA5OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItMS1zcmMudGFyLmJ6MiI+Y21ha2UtMy4zLjAtcmMyLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItMS50YXIuYnoyIj5jbWFrZS0zLjMuMC1yYzItMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0xMCAxNToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij45LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMyLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjMuMC1yYzItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuWiI+Y21ha2UtMy4zLjAtcmMyLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4zLjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0xMCAxNToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMyLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuMy4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0xMCAxNToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4zLjAtcmMyLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy4zLjAtcmMyLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMy4wLXJjMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMC1yYzItTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0xMCAxNToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0xMCAxNToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMyLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjMuMC1yYzItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjMuMC1yYzItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4zLjAtcmMyLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMy4zLjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzIudGFyLloiPmNtYWtlLTMuMy4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMTAgMTU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMi50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTEwIDE1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzIuemlwIj5jbWFrZS0zLjMuMC1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0xMCAxNToyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMy4wLXJjMy0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLTEudGFyLmJ6MiI+Y21ha2UtMy4zLjAtcmMzLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMjYgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4zLjAtcmMzLURhcndpbi11bml2ZXJzYWwuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMy4wLXJjMy1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLURhcndpbi11bml2ZXJzYWwudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzMtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMy4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMjYgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMjYgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMy4wLXJjMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMy4wLXJjMy1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzMtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjMuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMjYgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMjYgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy4zLjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xMyAxMjo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4zLjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMy4wLXJjMy13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMy4wLXJjMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLnRhci5aIj5jbWFrZS0zLjMuMC1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTI2IDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzMudGFyLmd6Ij5jbWFrZS0zLjMuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0yNiAxMzozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmMzLnppcCI+Y21ha2UtMy4zLjAtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDYtMjYgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjMuMC1yYzQtMS1zcmMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC0xLnRhci5iejIiPmNtYWtlLTMuMy4wLXJjNC0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTEzIDE1OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzQtRGFyd2luLXVuaXZlcnNhbC5kbWciPmNtYWtlLTMuMy4wLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjMuMC1yYzQtRGFyd2luLXVuaXZlcnNhbC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4zLjAtcmM0LURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjMuMC1yYzQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjAtcmM0LURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMy4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjMuMC1yYzQtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjMuMC1yYzQtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4zLjAtcmM0LUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy4zLjAtcmM0LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMy4wLXJjNC1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzQtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuMy4wLXJjNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTMgMTI6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS42SzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMy4wLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTEzIDEyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjMuMC1yYzQtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjMuMC1yYzQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC50YXIuWiI+Y21ha2UtMy4zLjAtcmM0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAtcmM0LnRhci5neiI+Y21ha2UtMy4zLjAtcmM0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXJjNC56aXAiPmNtYWtlLTMuMy4wLXJjNC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4wLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuMy4wLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjMuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAudGFyLloiPmNtYWtlLTMuMy4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNy0yMyAxNjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjAudGFyLmd6Ij5jbWFrZS0zLjMuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA3LTIzIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMC56aXAiPmNtYWtlLTMuMy4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDctMjMgMTY6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLTEtc3JjLnRhci5iejIiPmNtYWtlLTMuMy4xLTEtc3JjLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS0xLnRhci5iejIiPmNtYWtlLTMuMy4xLTEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLURhcndpbi11bml2ZXJzYWwuZG1nIj5jbWFrZS0zLjMuMS1EYXJ3aW4tdW5pdmVyc2FsLmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDQ4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLURhcndpbi11bml2ZXJzYWwudGFyLloiPmNtYWtlLTMuMy4xLURhcndpbi11bml2ZXJzYWwudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS1EYXJ3aW4tdW5pdmVyc2FsLnRhci5neiI+Y21ha2UtMy4zLjEtRGFyd2luLXVuaXZlcnNhbC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0N008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy4zLjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjMuMS1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMy4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy4zLjEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuMy4xLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy4zLjEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuMy4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjEtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy4zLjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjMuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy4zLjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMS13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjMuMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEtd2luMzIteDg2LnppcCI+Y21ha2UtMy4zLjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLnRhci5aIj5jbWFrZS0zLjMuMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDgtMTMgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4xLnRhci5neiI+Y21ha2UtMy4zLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0xMyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjEuemlwIj5jbWFrZS0zLjMuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTEzIDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi0xLXNyYy50YXIuYnoyIj5jbWFrZS0zLjMuMi0xLXNyYy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjItMS50YXIuYnoyIj5jbWFrZS0zLjMuMi0xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1EYXJ3aW4tdW5pdmVyc2FsLmRtZyI+Y21ha2UtMy4zLjItRGFyd2luLXVuaXZlcnNhbC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA0OE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aIj5jbWFrZS0zLjMuMi1EYXJ3aW4tdW5pdmVyc2FsLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjItRGFyd2luLXVuaXZlcnNhbC50YXIuZ3oiPmNtYWtlLTMuMy4yLURhcndpbi11bml2ZXJzYWwudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNDdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuMy4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy4zLjItRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjMuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuMy4yLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjMuMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuMy4yLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjMuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuMy4yLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuMy4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy4zLjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuMy4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy4zLjItd2luMzIteDg2LmV4ZSI+Y21ha2UtMy4zLjItd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuMy4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi50YXIuWiI+Y21ha2UtMy4zLjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTE3IDE0OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjMuMi50YXIuZ3oiPmNtYWtlLTMuMy4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMTcgMTQ6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuMy4yLnppcCI+Y21ha2UtMy4zLjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xNyAxNDozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjQvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuNC9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3YjU2ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjQvaW5kZXguaHRtbApAQCAtMCwwICsxLDEyNyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjMuNDwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My40PC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjQuMC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4wLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy40LjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjQuMC1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0xMiAxMzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy40LjAtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjQuMC1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy40LjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0xMiAxMzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjQuMC1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0xMiAxMzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNC4wLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0xMiAxMzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjQuMC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNC4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMDYgMTE6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjQuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMDYgMTE6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy40LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNC4wLXJjMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNC4wLXJjMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjQuMC1yYzEtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjQuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMDYgMTE6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMDYgMTE6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy40LjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy40LjAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMDYgMTE6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmluYXJ5LmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuNC4wLXJjMS13aW4zMi14ODYuZXhlPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNC4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLnRhci5aIj5jbWFrZS0zLjQuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTA2IDExOjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjQuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0wNiAxMTowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMxLnppcCI+Y21ha2UtMy40LjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMDYgMTE6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy40LjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yMSAxNjoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMyLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yMSAxNjoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzItTGludXgtaTM4Ni5zaCI+Y21ha2UtMy40LjAtcmMyLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy40LjAtcmMyLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNC4wLXJjMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNC4wLXJjMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzItTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjQuMC1yYzItTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yMSAxNjoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yMSAxNjoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMyLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjQuMC1yYzItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjQuMC1yYzItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yMSAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iaW5hcnkuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzItd2luMzIteDg2LmV4ZSI+Y21ha2UtMy40LjAtcmMyLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMy40LjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzIudGFyLloiPmNtYWtlLTMuNC4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjEgMTY6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMi50YXIuZ3oiPmNtYWtlLTMuNC4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTIxIDE2OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzIuemlwIj5jbWFrZS0zLjQuMC1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yMSAxNjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjQuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTAzIDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy40LjAtcmMzLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTAzIDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNC4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjQuMC1yYzMtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjQuMC1yYzMtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy40LjAtcmMzLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy40LjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4wLXJjMy1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTAzIDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy40LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTAzIDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNC4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNC4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTAzIDExOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy13aW4zMi14ODYuZXhlIj5jbWFrZS0zLjQuMC1yYzMtd2luMzIteDg2LmV4ZTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEzTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjQuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy50YXIuWiI+Y21ha2UtMy40LjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0wMyAxMTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAtcmMzLnRhci5neiI+Y21ha2UtMy40LjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDMgMTE6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXJjMy56aXAiPmNtYWtlLTMuNC4wLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTAzIDExOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4wLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuNC4wLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjQuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0xMiAxMzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAudGFyLloiPmNtYWtlLTMuNC4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMS0xMiAxMzo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjAudGFyLmd6Ij5jbWFrZS0zLjQuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTEyIDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMC56aXAiPmNtYWtlLTMuNC4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMTIgMTM6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjQuMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4xLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy40LjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjQuMS1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0wMiAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy40LjEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjQuMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy40LjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0wMiAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjQuMS1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0wMiAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNC4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0wMiAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjQuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4xLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuNC4xLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjQuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0wMiAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEudGFyLloiPmNtYWtlLTMuNC4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0wMiAxNDo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjEudGFyLmd6Ij5jbWFrZS0zLjQuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEyLTAyIDE0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMS56aXAiPmNtYWtlLTMuNC4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMDIgMTQ6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjQuMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4yLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy40LjItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjQuMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xOSAxNDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy40LjItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjQuMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy40LjItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xOSAxNDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjItTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjQuMi1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xOSAxNDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjItU0hBLTI1Ni50eHQiPmNtYWtlLTMuNC4yLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xOSAxNDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjQuMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4yLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuNC4yLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjQuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xOSAxNDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjIudGFyLloiPmNtYWtlLTMuNC4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xOSAxNDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjIudGFyLmd6Ij5jbWFrZS0zLjQuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTE5IDE0OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMi56aXAiPmNtYWtlLTMuNC4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTkgMTQ6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjQuMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuNC4zLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy40LjMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjQuMy1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy40LjMtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjQuMy1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy40LjMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjQuMy1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjQuMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNC4zLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjQuMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JpbmFyeS5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNC4zLXdpbjMyLXg4Ni5leGUiPmNtYWtlLTMuNC4zLXdpbjMyLXg4Ni5leGU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjQuMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMudGFyLloiPmNtYWtlLTMuNC4zLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yNSAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy40LjMudGFyLmd6Ij5jbWFrZS0zLjQuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAxLTI1IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjQuMy56aXAiPmNtYWtlLTMuNC4zLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvZm9sZGVyLmdpZiIgYWx0PSJbRElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iY3lnd2luLyI+Y3lnd2luLzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjUgMTQ6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My41L2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjUvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2Q0ZjdjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My41L2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxMTEgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjU8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZmlsZXMvdjMuNTwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy41LjAtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1EYXJ3aW4teDg2XzY0LnRhci5aIj5jbWFrZS0zLjUuMC1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNS4wLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy41LjAtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLUxpbnV4LWkzODYudGFyLloiPmNtYWtlLTMuNS4wLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy41LjAtTGludXgtaTM4Ni50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNS4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLUxpbnV4LXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjAtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjUuMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy41LjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjUuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTAyIDE1OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjAtcmMxLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTAyIDE1OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNS4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjUuMC1yYzEtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjUuMC1yYzEtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy41LjAtcmMxLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMiAxNTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy41LjAtcmMxLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNS4wLXJjMS1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTAyIDE1OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTAyIDE1OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNS4wLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDMgMTM6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNS4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTAzIDEzOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy41LjAtcmMxLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTAzIDEzOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy41LjAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTAzIDEzOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzEudGFyLloiPmNtYWtlLTMuNS4wLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDIgMTU6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuNS4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTAyIDE1OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzEuemlwIj5jbWFrZS0zLjUuMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0wMiAxNTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjUuMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTEwIDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjAtcmMyLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTEwIDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNS4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjUuMC1yYzItTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjUuMC1yYzItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy41LjAtcmMyLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy41LjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNS4wLXJjMi1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTEwIDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTEwIDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuNS4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNS4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTEwIDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy41LjAtcmMyLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTEwIDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMy41LjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTEwIDE1OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzIudGFyLloiPmNtYWtlLTMuNS4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTAgMTU6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMi50YXIuZ3oiPmNtYWtlLTMuNS4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTEwIDE1OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzIuemlwIj5jbWFrZS0zLjUuMC1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xMCAxNTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjUuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTE4IDE1OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjAtcmMzLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTE4IDE1OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNS4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjUuMC1yYzMtTGludXgtaTM4Ni5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjUuMC1yYzMtTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy1MaW51eC1pMzg2LnRhci5neiI+Y21ha2UtMy41LjAtcmMzLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtcmMzLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy41LjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNS4wLXJjMy1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTE4IDE1OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTE4IDE1OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNS4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4zSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNS4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTE4IDE1OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy41LjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTE4IDE1OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMy41LjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTE4IDE1OjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzMudGFyLloiPmNtYWtlLTMuNS4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMTggMTU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuNS4wLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTE4IDE1OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC1yYzMuemlwIj5jbWFrZS0zLjUuMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMi0xOCAxNTo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjAtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy41LjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNS4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC50YXIuWiI+Y21ha2UtMy41LjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTA4IDExOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMC50YXIuZ3oiPmNtYWtlLTMuNS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMDggMTE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4wLnppcCI+Y21ha2UtMy41LjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0wOCAxMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNS4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjEtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy41LjEtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjUuMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNS4xLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjUuMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNS4xLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjUuMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNS4xLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNS4xLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy41LjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNS4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4xLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNS4xLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjUuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjEudGFyLloiPmNtYWtlLTMuNS4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMy0yNCAxNjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjEudGFyLmd6Ij5jbWFrZS0zLjUuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTI0IDE2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMS56aXAiPmNtYWtlLTMuNS4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMjQgMTY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4yLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjUuMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4yLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuNS4yLURhcndpbi14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy41LjItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi1MaW51eC1pMzg2LnNoIj5jbWFrZS0zLjUuMi1MaW51eC1pMzg2LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy41LjItTGludXgtaTM4Ni50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4yLUxpbnV4LWkzODYudGFyLmd6Ij5jbWFrZS0zLjUuMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4yLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy41LjItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjItTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjUuMi1MaW51eC14ODZfNjQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjUuMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjItU0hBLTI1Ni50eHQiPmNtYWtlLTMuNS4yLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjNLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjUuMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgxOSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjUuMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjUuMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjItd2luMzIteDg2LnppcCI+Y21ha2UtMy41LjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIwTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4yLnRhci5aIj5jbWFrZS0zLjUuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMTUgMTM6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNS4yLnRhci5neiI+Y21ha2UtMy41LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNC0xNSAxMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy41LjIuemlwIj5jbWFrZS0zLjUuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2ZvbGRlci5naWYiIGFsdD0iW0RJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9ImN5Z3dpbi8iPmN5Z3dpbi88L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTE1IDEzOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuNi9pbmRleC5odG1sIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My42L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGZjYTNhNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuNi9pbmRleC5odG1sCkBAIC0wLDAgKzEsMTU5IEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My42PC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjY8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9maWxlcy8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNi4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjAtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjYuMC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNi4wLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjYuMC1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNi4wLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjYuMC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4wLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy42LjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNi4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy42LjAtcmMxLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0wMyAxNDo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMxLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0wMyAxNDo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjYuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy42LjAtcmMxLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy42LjAtcmMxLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMS1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNi4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjYuMC1yYzEtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0wMyAxNDo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0wMyAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjYuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjYuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0wMyAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNi4wLXJjMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0wMyAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNi4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0wMyAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMxLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuNi4wLXJjMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0wMyAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNi4wLXJjMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0wMyAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMxLnRhci5aIj5jbWFrZS0zLjYuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTAzIDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjYuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0wMyAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMxLnppcCI+Y21ha2UtMy42LjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMDMgMTQ6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy42LjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0xMyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMyLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0xMyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjYuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItTGludXgtaTM4Ni5zaCI+Y21ha2UtMy42LjAtcmMyLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy42LjAtcmMyLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMi1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNi4wLXJjMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjYuMC1yYzItTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0xMyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0xMyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMyLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjYuMC1yYzItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjYuMC1yYzItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0xMyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMyLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNi4wLXJjMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0xMyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNi4wLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0xMyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMyLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuNi4wLXJjMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0xMyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMyLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNi4wLXJjMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0xMyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMyLnRhci5aIj5jbWFrZS0zLjYuMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTEzIDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjYuMC1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0xMyAxNDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMyLnppcCI+Y21ha2UtMy42LjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMTMgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy42LjAtcmMzLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAxMzo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMzLURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAxMzo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjYuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy42LjAtcmMzLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy42LjAtcmMzLUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMy1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNi4wLXJjMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjYuMC1yYzMtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjYuMC1yYzMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjYuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMzLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNi4wLXJjMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNi4wLXJjMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMzLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuNi4wLXJjMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMzLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNi4wLXJjMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMzLnRhci5aIj5jbWFrZS0zLjYuMC1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTIyIDEzOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzMudGFyLmd6Ij5jbWFrZS0zLjYuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAxMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmMzLnppcCI+Y21ha2UtMy42LjAtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMTM6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy42LjAtcmM0LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yOSAxNDo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmM0LURhcndpbi14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yOSAxNDo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjYuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtTGludXgtaTM4Ni5zaCI+Y21ha2UtMy42LjAtcmM0LUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtTGludXgtaTM4Ni50YXIuWiI+Y21ha2UtMy42LjAtcmM0LUxpbnV4LWkzODYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjNC1MaW51eC1pMzg2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXJjNC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNi4wLXJjNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtTGludXgteDg2XzY0LnRhci5aIj5jbWFrZS0zLjYuMC1yYzQtTGludXgteDg2XzY0LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yOSAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4wLXJjNC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yOSAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmM0LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjYuMC1yYzQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNUs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjYuMC1yYzQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yOSAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmM0LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNi4wLXJjNC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yOSAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmM0LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNi4wLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yOSAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmM0LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuNi4wLXJjNC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yOSAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmM0LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNi4wLXJjNC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yOSAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmM0LnRhci5aIj5jbWFrZS0zLjYuMC1yYzQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA2LTI5IDE0OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC1yYzQudGFyLmd6Ij5jbWFrZS0zLjYuMC1yYzQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yOSAxNDo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtcmM0LnppcCI+Y21ha2UtMy42LjAtcmM0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjkgMTQ6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNi4wLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjYuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjAtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy42LjAtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNi4wLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC50YXIuWiI+Y21ha2UtMy42LjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTA3IDEzOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMC50YXIuZ3oiPmNtYWtlLTMuNi4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMDcgMTM6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4wLnppcCI+Y21ha2UtMy42LjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0wNyAxMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNi4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjEtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjYuMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNi4xLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjYuMS1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNi4xLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjYuMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4xLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4xLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy42LjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNi4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNi4xLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjYuMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy42LjEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNi4xLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS50YXIuWiI+Y21ha2UtMy42LjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTIyIDEwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMS50YXIuZ3oiPmNtYWtlLTMuNi4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMjIgMTA6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4xLnppcCI+Y21ha2UtMy42LjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNy0yMiAxMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNi4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjItRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjYuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNi4yLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjYuMi1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNi4yLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjYuMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4yLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy42LjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNi4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODE5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNi4yLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjYuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy42LjItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNi4yLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi50YXIuWiI+Y21ha2UtMy42LjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTA3IDE0OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMi50YXIuZ3oiPmNtYWtlLTMuNi4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMDcgMTQ6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4yLnppcCI+Y21ha2UtMy42LjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNi4zLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtRGFyd2luLXg4Nl82NC50YXIuWiI+Y21ha2UtMy42LjMtRGFyd2luLXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjYuMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLUxpbnV4LWkzODYuc2giPmNtYWtlLTMuNi4zLUxpbnV4LWkzODYuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy1MaW51eC1pMzg2LnRhci5aIj5jbWFrZS0zLjYuMy1MaW51eC1pMzg2LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtTGludXgtaTM4Ni50YXIuZ3oiPmNtYWtlLTMuNi4zLUxpbnV4LWkzODYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjYuMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy1MaW51eC14ODZfNjQudGFyLloiPmNtYWtlLTMuNi4zLUxpbnV4LXg4Nl82NC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDM4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNi4zLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy42LjMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNi4zLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODAxIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNi4zLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjYuMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy42LjMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy42LjMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNi4zLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy50YXIuWiI+Y21ha2UtMy42LjMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTAzIDEyOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjYuMy50YXIuZ3oiPmNtYWtlLTMuNi4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDMgMTI6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNi4zLnppcCI+Y21ha2UtMy42LjMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wMyAxMjoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9mb2xkZXIuZ2lmIiBhbHQ9IltESVJdIj48L3RkPjx0ZD48YSBocmVmPSJjeWd3aW4vIj5jeWd3aW4vPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0wNyAxNDo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjcvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuNy9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ4MTJmOTMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjcvaW5kZXguaHRtbApAQCAtMCwwICsxLDkyIEBACis8IURPQ1RZUEUgSFRNTCBQVUJMSUMgIi0vL1czQy8vRFREIEhUTUwgMy4yIEZpbmFsLy9FTiI+Cis8aHRtbD4KKyA8aGVhZD4KKyAgPHRpdGxlPkluZGV4IG9mIC9maWxlcy92My43PC90aXRsZT4KKyA8L2hlYWQ+CisgPGJvZHk+Cis8aDE+SW5kZXggb2YgL2ZpbGVzL3YzLjc8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9maWxlcy8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNy4wLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xMSAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNy4wLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xMSAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjcuMC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xMSAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtU0hBLTI1Ni50eHQiPmNtYWtlLTMuNy4wLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xMSAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjcuMC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgwMSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNy4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMDQgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy43LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy43LjAtcmMxLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMDQgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMDQgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy43LjAtcmMxLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy43LjAtcmMxLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMDQgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODAxIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjcuMC1yYzEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMDQgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjcuMC1yYzEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMDQgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjcuMC1yYzEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMDQgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjcuMC1yYzEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMDQgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMS50YXIuWiI+Y21ha2UtMy43LjAtcmMxLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0wNCAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMxLnRhci5neiI+Y21ha2UtMy43LjAtcmMxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMDQgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMS56aXAiPmNtYWtlLTMuNy4wLXJjMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTA0IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNy4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMTkgMTU6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy43LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy43LjAtcmMyLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMTkgMTU6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMTkgMTU6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy43LjAtcmMyLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy43LjAtcmMyLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMTkgMTU6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODAxIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjcuMC1yYzItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMTkgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjcuMC1yYzItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMTkgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjcuMC1yYzItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMTkgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjcuMC1yYzItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMTkgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMi50YXIuWiI+Y21ha2UtMy43LjAtcmMyLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0xOSAxNToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMyLnRhci5neiI+Y21ha2UtMy43LjAtcmMyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMTkgMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMi56aXAiPmNtYWtlLTMuNy4wLXJjMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTEwLTE5IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC1yYzMtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuNy4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDQgMTU6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy43LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy43LjAtcmMzLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDQgMTU6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMC1yYzMtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDQgMTU6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy43LjAtcmMzLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy43LjAtcmMzLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDQgMTU6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODAxIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMy13aW4zMi14ODYubXNpIj5jbWFrZS0zLjcuMC1yYzMtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDQgMTU6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjcuMC1yYzMtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDQgMTU6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMy13aW42NC14NjQubXNpIj5jbWFrZS0zLjcuMC1yYzMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDQgMTU6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMy13aW42NC14NjQuemlwIj5jbWFrZS0zLjcuMC1yYzMtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDQgMTU6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMy50YXIuWiI+Y21ha2UtMy43LjAtcmMzLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0wNCAxNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtcmMzLnRhci5neiI+Y21ha2UtMy43LjAtcmMzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMDQgMTU6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXJjMy56aXAiPmNtYWtlLTMuNy4wLXJjMy56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTA0IDE1OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjcuMC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xMSAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAtd2luMzIteDg2LnppcCI+Y21ha2UtMy43LjAtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMTEgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4wLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuNy4wLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC13aW42NC14NjQuemlwIj5jbWFrZS0zLjcuMC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xMSAxNDowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAudGFyLloiPmNtYWtlLTMuNy4wLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xMSAxNDowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjAudGFyLmd6Ij5jbWFrZS0zLjcuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTExIDE0OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMC56aXAiPmNtYWtlLTMuNy4wLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMTEgMTQ6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4xLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjcuMS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMzAgMTQ6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4xLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjcuMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMzAgMTQ6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4xLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy43LjEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy43LjEtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMzAgMTQ6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4xLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjcuMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMzAgMTQ6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4xLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy43LjEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy43LjEtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMzAgMTQ6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4xLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuNy4xLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTMwIDE0OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMS13aW42NC14NjQubXNpIj5jbWFrZS0zLjcuMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEtd2luNjQteDY0LnppcCI+Y21ha2UtMy43LjEtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMzAgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4xLnRhci5aIj5jbWFrZS0zLjcuMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMzAgMTQ6MjQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDExTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4xLnRhci5neiI+Y21ha2UtMy43LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0zMCAxNDoyNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjEuemlwIj5jbWFrZS0zLjcuMS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTExLTMwIDE0OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy43LjItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTEzIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy43LjItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTEzIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuNy4yLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI5TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuNy4yLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTEzIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMi1TSEEtMjU2LnR4dCI+Y21ha2UtMy43LjItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTEzIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuNy4yLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuNy4yLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTEzIDE0OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjcuMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMyAxNDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy43LjItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy43LjItd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE3TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuNy4yLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTEzIDE0OjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMi50YXIuWiI+Y21ha2UtMy43LjIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTEzIDE0OjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjcuMi50YXIuZ3oiPmNtYWtlLTMuNy4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTMgMTQ6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuNy4yLnppcCI+Y21ha2UtMy43LjIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMyAxNDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjgvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvZmlsZXMvdjMuOC9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVmYzhjYWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjgvaW5kZXguaHRtbApAQCAtMCwwICsxLDEwNSBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvZmlsZXMvdjMuODwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9maWxlcy92My44PC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvZmlsZXMvIj5QYXJlbnQgRGlyZWN0b3J5PC9hPjwvdGQ+PHRkPiZuYnNwOzwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ICAtIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjguMC1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDQtMTAgMTM6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDQtMTAgMTM6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy44LjAtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjAtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDQtMTAgMTM6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjguMC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDQtMTAgMTM6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy44LjAtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMxLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjguMC1yYzEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAyLTA3IDEyOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOC4wLXJjMS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOC4wLXJjMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAyLTA3IDEyOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzEtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAyLTA3IDEyOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOC4wLXJjMS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOC4wLXJjMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAyLTA3IDEyOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzEtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy44LjAtcmMxLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAyLTA3IDEyOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzEtd2luMzIteDg2LnppcCI+Y21ha2UtMy44LjAtcmMxLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAyLTA3IDEyOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy44LjAtcmMxLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAyLTA3IDEyOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzEtd2luNjQteDY0LnppcCI+Y21ha2UtMy44LjAtcmMxLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAyLTA3IDEyOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzEudGFyLloiPmNtYWtlLTMuOC4wLXJjMS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDItMDcgMTI6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMS50YXIuZ3oiPmNtYWtlLTMuOC4wLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAyLTA3IDEyOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzEuemlwIj5jbWFrZS0zLjguMC1yYzEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMi0wNyAxMjo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMyLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjguMC1yYzItRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTAzIDEwOjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOC4wLXJjMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMTA6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOC4wLXJjMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTAzIDEwOjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTAzIDA5OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzItU0hBLTI1Ni50eHQiPmNtYWtlLTMuOC4wLXJjMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOC4wLXJjMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTAzIDA5OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy44LjAtcmMyLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTAzIDA5OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzItd2luMzIteDg2LnppcCI+Y21ha2UtMy44LjAtcmMyLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTAzIDA5OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzItd2luNjQteDY0Lm1zaSI+Y21ha2UtMy44LjAtcmMyLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTAzIDA5OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzItd2luNjQteDY0LnppcCI+Y21ha2UtMy44LjAtcmMyLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTAzIDA5OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzIudGFyLloiPmNtYWtlLTMuOC4wLXJjMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDMgMDk6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMi50YXIuZ3oiPmNtYWtlLTMuOC4wLXJjMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTAzIDA5OjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzIuemlwIj5jbWFrZS0zLjguMC1yYzIuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMyAwOTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmMzLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjguMC1yYzMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTI0IDEzOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOC4wLXJjMy1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOC4wLXJjMy1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTI0IDEzOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzMtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTI0IDEzOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzMtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOC4wLXJjMy1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOC4wLXJjMy1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTI0IDEzOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzMtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy44LjAtcmMzLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTI0IDEzOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzMtd2luMzIteDg2LnppcCI+Y21ha2UtMy44LjAtcmMzLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTI0IDEzOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy44LjAtcmMzLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTI0IDEzOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzMtd2luNjQteDY0LnppcCI+Y21ha2UtMy44LjAtcmMzLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTI0IDEzOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzMudGFyLloiPmNtYWtlLTMuOC4wLXJjMy50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMjQgMTM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjMy50YXIuZ3oiPmNtYWtlLTMuOC4wLXJjMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTI0IDEzOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzMuemlwIj5jbWFrZS0zLjguMC1yYzMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0yNCAxMzo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtcmM0LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjguMC1yYzQtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTMwIDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOC4wLXJjNC1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOC4wLXJjNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTMwIDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzQtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTMwIDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOC4wLXJjNC1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOC4wLXJjNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTMwIDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzQtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy44LjAtcmM0LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTMwIDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzQtd2luMzIteDg2LnppcCI+Y21ha2UtMy44LjAtcmM0LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTMwIDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzQtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy44LjAtcmM0LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTMwIDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzQtd2luNjQteDY0LnppcCI+Y21ha2UtMy44LjAtcmM0LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTMwIDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzQudGFyLloiPmNtYWtlLTMuOC4wLXJjNC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMzAgMTE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXJjNC50YXIuZ3oiPmNtYWtlLTMuOC4wLXJjNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAzLTMwIDExOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC1yYzQuemlwIj5jbWFrZS0zLjguMC1yYzQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0zMCAxMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy44LjAtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDQtMTAgMTM6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOC4wLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA0LTEwIDEzOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMC13aW42NC14NjQubXNpIj5jbWFrZS0zLjguMC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAtd2luNjQteDY0LnppcCI+Y21ha2UtMy44LjAtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDQtMTAgMTM6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI0TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLnRhci5aIj5jbWFrZS0zLjguMC50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDQtMTAgMTM6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4wLnRhci5neiI+Y21ha2UtMy44LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNC0xMCAxMzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjAuemlwIj5jbWFrZS0zLjguMC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA0LTEwIDEzOjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy44LjEtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTAyIDExOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMS1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy44LjEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTAyIDExOjA2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMS1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOC4xLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOC4xLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTAyIDExOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMS1TSEEtMjU2LnR4dCI+Y21ha2UtMy44LjEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTAyIDExOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMS1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOC4xLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuOC4xLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTAyIDExOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMS13aW4zMi14ODYuemlwIj5jbWFrZS0zLjguMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0wMiAxMTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjEtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy44LjEtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuOC4xLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTAyIDExOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMS50YXIuWiI+Y21ha2UtMy44LjEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTAyIDExOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMS50YXIuZ3oiPmNtYWtlLTMuOC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMDIgMTE6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4xLnppcCI+Y21ha2UtMy44LjEuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0wMiAxMTowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjItRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOC4yLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0zMSAxMjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjItRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOC4yLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0zMSAxMjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjguMi1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjguMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0zMSAxMjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjItU0hBLTI1Ni50eHQiPmNtYWtlLTMuOC4yLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0zMSAxMjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjguMi1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi13aW4zMi14ODYubXNpIj5jbWFrZS0zLjguMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0zMSAxMjoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjItd2luMzIteDg2LnppcCI+Y21ha2UtMy44LjItd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMzEgMTI6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOC4yLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuOC4yLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi13aW42NC14NjQuemlwIj5jbWFrZS0zLjguMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0zMSAxMjoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjIudGFyLloiPmNtYWtlLTMuOC4yLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNS0zMSAxMjoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy44LjIudGFyLmd6Ij5jbWFrZS0zLjguMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA1LTMxIDEyOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjguMi56aXAiPmNtYWtlLTMuOC4yLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDUtMzEgMTI6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzwvdGFibGU+Cis8L2JvZHk+PC9odG1sPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My45L2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL2ZpbGVzL3YzLjkvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NDE4MmFmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9maWxlcy92My45L2luZGV4Lmh0bWwKQEAgLTAsMCArMSwxODMgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL2ZpbGVzL3YzLjk8L3RpdGxlPgorIDwvaGVhZD4KKyA8Ym9keT4KKzxoMT5JbmRleCBvZiAvZmlsZXMvdjMuOTwvaDE+CisgIDx0YWJsZT4KKyAgIDx0cj48dGggdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmxhbmsuZ2lmIiBhbHQ9IltJQ09dIj48L3RoPjx0aD48YSBocmVmPSI/Qz1OO089RCI+TmFtZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1NO089QSI+TGFzdCBtb2RpZmllZDwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1TO089QSI+U2l6ZTwvYT48L3RoPjx0aD48YSBocmVmPSI/Qz1EO089QSI+RGVzY3JpcHRpb248L2E+PC90aD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9iYWNrLmdpZiIgYWx0PSJbUEFSRU5URElSXSI+PC90ZD48dGQ+PGEgaHJlZj0iL2ZpbGVzLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy45LjAtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTE4IDEzOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjAtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTE4IDEzOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4wLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTE4IDEzOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1TSEEtMjU2LnR4dCI+Y21ha2UtMy45LjAtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTE4IDEzOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4wLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy45LjAtcmMxLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNSAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMxLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuMC1yYzEtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjkuMC1yYzEtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNSAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMxLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNSAxNDo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMxLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjkuMC1yYzEtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjkuMC1yYzEtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNSAxNDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMxLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuOS4wLXJjMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNSAxNDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMxLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOS4wLXJjMS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNSAxNDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMxLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuOS4wLXJjMS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNSAxNDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMxLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuOS4wLXJjMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNSAxNDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMxLnRhci5aIj5jbWFrZS0zLjkuMC1yYzEudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA1IDE0OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzEudGFyLmd6Ij5jbWFrZS0zLjkuMC1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNSAxNDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMxLnppcCI+Y21ha2UtMy45LjAtcmMxLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDUgMTQ6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy45LjAtcmMyLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNyAxNDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMyLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuMC1yYzItRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjkuMC1yYzItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNyAxNDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMyLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNyAxNDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMyLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjkuMC1yYzItU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzItU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjkuMC1yYzItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNyAxNDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMyLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuOS4wLXJjMi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNyAxNDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMyLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOS4wLXJjMi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNyAxNDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMyLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuOS4wLXJjMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNyAxNDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMyLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuOS4wLXJjMi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNyAxNDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMyLnRhci5aIj5jbWFrZS0zLjkuMC1yYzIudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTA3IDE0OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzIudGFyLmd6Ij5jbWFrZS0zLjkuMC1yYzIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0wNyAxNDo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMyLnppcCI+Y21ha2UtMy45LjAtcmMyLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMDcgMTQ6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy45LjAtcmMzLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0xMyAxNDowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMzLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuMC1yYzMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjkuMC1yYzMtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0xMyAxNDowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMzLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjMy1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0xMyAxNDowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMzLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjkuMC1yYzMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjkuMC1yYzMtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0xMyAxNDowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMzLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuOS4wLXJjMy13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0xMyAxNDowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMzLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOS4wLXJjMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0xMyAxNDowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMzLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuOS4wLXJjMy13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0xMyAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMzLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuOS4wLXJjMy13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0xMyAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMzLnRhci5aIj5jbWFrZS0zLjkuMC1yYzMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTEzIDE0OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzMudGFyLmd6Ij5jbWFrZS0zLjkuMC1yYzMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0xMyAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmMzLnppcCI+Y21ha2UtMy45LjAtcmMzLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMTMgMTQ6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNC1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy45LjAtcmM0LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM0LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuMC1yYzQtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjkuMC1yYzQtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM0LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yMiAxMzoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM0LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjkuMC1yYzQtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjkuMC1yYzQtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yMiAxMzoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM0LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuOS4wLXJjNC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yMiAxMzoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM0LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOS4wLXJjNC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yMiAxMzoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM0LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuOS4wLXJjNC13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yMiAxMzoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM0LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuOS4wLXJjNC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yMiAxMzoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM0LnRhci5aIj5jbWFrZS0zLjkuMC1yYzQudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTIyIDEzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzQudGFyLmd6Ij5jbWFrZS0zLjkuMC1yYzQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yMiAxMzoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM0LnppcCI+Y21ha2UtMy45LjAtcmM0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjIgMTM6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNS1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy45LjAtcmM1LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yNyAxMzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM1LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuMC1yYzUtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjkuMC1yYzUtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yNyAxMzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM1LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yNyAxMzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM1LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjkuMC1yYzUtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjkuMC1yYzUtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yNyAxMzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM1LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuOS4wLXJjNS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yNyAxMzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM1LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOS4wLXJjNS13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yNyAxMzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM1LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuOS4wLXJjNS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yNyAxMzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM1LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuOS4wLXJjNS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yNyAxMzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM1LnRhci5aIj5jbWFrZS0zLjkuMC1yYzUudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA2LTI3IDEzOjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzUudGFyLmd6Ij5jbWFrZS0zLjkuMC1yYzUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNi0yNyAxMzo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM1LnppcCI+Y21ha2UtMy45LjAtcmM1LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDYtMjcgMTM6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXJjNi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy45LjAtcmM2LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xMiAxMTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM2LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuMC1yYzYtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjkuMC1yYzYtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xMiAxMTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM2LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4wLXJjNi1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xMiAxMTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM2LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjkuMC1yYzYtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjkuMC1yYzYtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xMiAxMTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM2LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuOS4wLXJjNi13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xMiAxMTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM2LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOS4wLXJjNi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xMiAxMTo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM2LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuOS4wLXJjNi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xMiAxMTo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM2LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuOS4wLXJjNi13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xMiAxMTo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM2LnRhci5aIj5jbWFrZS0zLjkuMC1yYzYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTEyIDExOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC1yYzYudGFyLmd6Ij5jbWFrZS0zLjkuMC1yYzYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xMiAxMTo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtcmM2LnppcCI+Y21ha2UtMy45LjAtcmM2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTIgMTE6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuOS4wLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTE4IDEzOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC13aW4zMi14ODYuemlwIj5jbWFrZS0zLjkuMC13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xOCAxMzozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjAtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjAtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuOS4wLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTE4IDEzOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC50YXIuWiI+Y21ha2UtMy45LjAudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTE4IDEzOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMC50YXIuZ3oiPmNtYWtlLTMuOS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMTggMTM6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4wLnppcCI+Y21ha2UtMy45LjAuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wNy0xOCAxMzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjEtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOS4xLURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOC0xMCAxMTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjEtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4xLURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOC0xMCAxMTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjEtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjkuMS1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuMS1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOC0xMCAxMTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjEtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS4xLVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOC0xMCAxMTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjEtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjkuMS1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS13aW4zMi14ODYubXNpIj5jbWFrZS0zLjkuMS13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOC0xMCAxMTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjEtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjEtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDgtMTAgMTE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4xLXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuOS4xLXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS13aW42NC14NjQuemlwIj5jbWFrZS0zLjkuMS13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOC0xMCAxMTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjEudGFyLloiPmNtYWtlLTMuOS4xLnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOC0xMCAxMTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjEudGFyLmd6Ij5jbWFrZS0zLjkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA4LTEwIDExOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMS56aXAiPmNtYWtlLTMuOS4xLnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDgtMTAgMTE6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4yLURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuMi1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDcgMTU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4yLURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuMi1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDcgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4yLUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy45LjItTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjItTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDcgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4yLVNIQS0yNTYudHh0Ij5jbWFrZS0zLjkuMi1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDcgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4yLVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy45LjItU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjItd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDcgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4yLXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOS4yLXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTA3IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMi13aW42NC14NjQubXNpIj5jbWFrZS0zLjkuMi13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjItd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjItd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDcgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4yLnRhci5aIj5jbWFrZS0zLjkuMi50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDcgMTU6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4yLnRhci5neiI+Y21ha2UtMy45LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0wNyAxNTo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjIuemlwIj5jbWFrZS0zLjkuMi56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTA3IDE1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMy1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy45LjMtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTIwIDExOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMy1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjMtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTIwIDExOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMy1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS4zLUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS4zLUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTIwIDExOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMy1TSEEtMjU2LnR4dCI+Y21ha2UtMy45LjMtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTIwIDExOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMy1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS4zLVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuOS4zLXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTIwIDExOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMy13aW4zMi14ODYuemlwIj5jbWFrZS0zLjkuMy13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yMCAxMTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjMtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjMtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuOS4zLXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTIwIDExOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMy50YXIuWiI+Y21ha2UtMy45LjMudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTIwIDExOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuMy50YXIuZ3oiPmNtYWtlLTMuOS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMjAgMTE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS4zLnppcCI+Y21ha2UtMy45LjMuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wOS0yMCAxMTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjQtRGFyd2luLXg4Nl82NC5kbWciPmNtYWtlLTMuOS40LURhcndpbi14ODZfNjQuZG1nPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAwOTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjQtRGFyd2luLXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS40LURhcndpbi14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAwOTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjQtTGludXgteDg2XzY0LnNoIj5jbWFrZS0zLjkuNC1MaW51eC14ODZfNjQuc2g8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC1MaW51eC14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuNC1MaW51eC14ODZfNjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAwOTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjQtU0hBLTI1Ni50eHQiPmNtYWtlLTMuOS40LVNIQS0yNTYudHh0PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAwOTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy90ZXh0LmdpZiIgYWx0PSJbVFhUXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjQtU0hBLTI1Ni50eHQuYXNjIj5jbWFrZS0zLjkuNC1TSEEtMjU2LnR4dC5hc2M8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjgzMyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC13aW4zMi14ODYubXNpIj5jbWFrZS0zLjkuNC13aW4zMi14ODYubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjQtd2luMzIteDg2LnppcCI+Y21ha2UtMy45LjQtd2luMzIteDg2LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDQgMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDIyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS40LXdpbjY0LXg2NC5tc2kiPmNtYWtlLTMuOS40LXdpbjY0LXg2NC5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC13aW42NC14NjQuemlwIj5jbWFrZS0zLjkuNC13aW42NC14NjQuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjQudGFyLloiPmNtYWtlLTMuOS40LnRhci5aPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAwOTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjQudGFyLmd6Ij5jbWFrZS0zLjkuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTEwLTA0IDA5OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNC56aXAiPmNtYWtlLTMuOS40LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDQgMDk6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS41LURhcndpbi14ODZfNjQuZG1nIj5jbWFrZS0zLjkuNS1EYXJ3aW4teDg2XzY0LmRtZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDMgMTA6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS41LURhcndpbi14ODZfNjQudGFyLmd6Ij5jbWFrZS0zLjkuNS1EYXJ3aW4teDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDMgMTA6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS41LUxpbnV4LXg4Nl82NC5zaCI+Y21ha2UtMy45LjUtTGludXgteDg2XzY0LnNoPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMzFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtTGludXgteDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjUtTGludXgteDg2XzY0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDMgMTA6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS41LVNIQS0yNTYudHh0Ij5jbWFrZS0zLjkuNS1TSEEtMjU2LnR4dDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDMgMTA6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS4wSzwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdGV4dC5naWYiIGFsdD0iW1RYVF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS41LVNIQS0yNTYudHh0LmFzYyI+Y21ha2UtMy45LjUtU0hBLTI1Ni50eHQuYXNjPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44MzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtd2luMzIteDg2Lm1zaSI+Y21ha2UtMy45LjUtd2luMzIteDg2Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDMgMTA6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE2TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS41LXdpbjMyLXg4Ni56aXAiPmNtYWtlLTMuOS41LXdpbjMyLXg4Ni56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAzIDEwOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNS13aW42NC14NjQubXNpIj5jbWFrZS0zLjkuNS13aW42NC14NjQubXNpPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMThNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUtd2luNjQteDY0LnppcCI+Y21ha2UtMy45LjUtd2luNjQteDY0LnppcDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDMgMTA6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDI1TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS41LnRhci5aIj5jbWFrZS0zLjkuNS50YXIuWjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMDMgMTA6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDEyTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS41LnRhci5neiI+Y21ha2UtMy45LjUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0wMyAxMDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjUuemlwIj5jbWFrZS0zLjkuNS56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTAzIDEwOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNi1EYXJ3aW4teDg2XzY0LmRtZyI+Y21ha2UtMy45LjYtRGFyd2luLXg4Nl82NC5kbWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDA5OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNi1EYXJ3aW4teDg2XzY0LnRhci5neiI+Y21ha2UtMy45LjYtRGFyd2luLXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDA5OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNi1MaW51eC14ODZfNjQuc2giPmNtYWtlLTMuOS42LUxpbnV4LXg4Nl82NC5zaDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDMxTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LUxpbnV4LXg4Nl82NC50YXIuZ3oiPmNtYWtlLTMuOS42LUxpbnV4LXg4Nl82NC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDA5OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAzMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNi1TSEEtMjU2LnR4dCI+Y21ha2UtMy45LjYtU0hBLTI1Ni50eHQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDA5OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3RleHQuZ2lmIiBhbHQ9IltUWFRdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNi1TSEEtMjU2LnR4dC5hc2MiPmNtYWtlLTMuOS42LVNIQS0yNTYudHh0LmFzYzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+ODMzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LXdpbjMyLXg4Ni5tc2kiPmNtYWtlLTMuOS42LXdpbjMyLXg4Ni5tc2k8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDA5OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNi13aW4zMi14ODYuemlwIj5jbWFrZS0zLjkuNi13aW4zMi14ODYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAwOToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0iY21ha2UtMy45LjYtd2luNjQteDY0Lm1zaSI+Y21ha2UtMy45LjYtd2luNjQteDY0Lm1zaTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDE4TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LXdpbjY0LXg2NC56aXAiPmNtYWtlLTMuOS42LXdpbjY0LXg2NC56aXA8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDA5OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAyNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNi50YXIuWiI+Y21ha2UtMy45LjYudGFyLlo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTExLTEwIDA5OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAxMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJjbWFrZS0zLjkuNi50YXIuZ3oiPmNtYWtlLTMuOS42LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTEtMTAgMDk6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9ImNtYWtlLTMuOS42LnppcCI+Y21ha2UtMy45LjYuemlwPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMS0xMCAwOToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gMTJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjIzL2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjIzL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNkOTI0NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjMvaW5kZXguaHRtbApAQCAtMCwwICsxLDQ1IEBACis8aHRtbD4NCis8aGVhZD48dGl0bGU+SW5kZXggb2YgL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjIzLzwvdGl0bGU+PC9oZWFkPg0KKzxib2R5Pg0KKzxoMT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjMvPC9oMT48aHI+PHByZT48YSBocmVmPSIuLi8iPi4uLzwvYT4NCis8YSBocmVmPSJsaWJibGtpZC1kb2NzLyI+bGliYmxraWQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDEzIDEyOjM1ICAgICAgIC0NCis8YSBocmVmPSJsaWJtb3VudC1kb2NzLyI+bGlibW91bnQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDEzIDEyOjM5ICAgICAgIC0NCis8YSBocmVmPSJzaGEyNTZzdW1zLmFzYyI+c2hhMjU2c3Vtcy5hc2M8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEwOjUzICAgIDI5NDINCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMtcmMxLnRhci5iejIiPnV0aWwtbGludXgtMi4yMy1yYzEudGFyLmJ6MjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAyMi1NYXItMjAxMyAxMjo0OCAgICAgIDVNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLXJjMS50YXIuZ3oiPnV0aWwtbGludXgtMi4yMy1yYzEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyMi1NYXItMjAxMyAxMjo0OCAgICAgIDdNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLXJjMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjIzLXJjMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgIDIyLU1hci0yMDEzIDEyOjQ4ICAgICA4MzYNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMtcmMxLnRhci54eiI+dXRpbC1saW51eC0yLjIzLXJjMS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDIyLU1hci0yMDEzIDEyOjQ4ICAgICAgM00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMtcmMyLnRhci5iejIiPnV0aWwtbGludXgtMi4yMy1yYzIudGFyLmJ6MjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAxMC1BcHItMjAxMyAyMjoxNCAgICAgIDVNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLXJjMi50YXIuZ3oiPnV0aWwtbGludXgtMi4yMy1yYzIudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAxMC1BcHItMjAxMyAyMjoxNCAgICAgIDdNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLXJjMi50YXIuc2lnbiI+dXRpbC1saW51eC0yLjIzLXJjMi50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgIDEwLUFwci0yMDEzIDIyOjE0ICAgICA4MzYNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMtcmMyLnRhci54eiI+dXRpbC1saW51eC0yLjIzLXJjMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDEwLUFwci0yMDEzIDIyOjE0ICAgICAgM00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMuMS50YXIuYnoyIj51dGlsLWxpbnV4LTIuMjMuMS50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMjgtTWF5LTIwMTMgMDk6NTcgICAgICA1TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy4xLnRhci5neiI+dXRpbC1saW51eC0yLjIzLjEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4LU1heS0yMDEzIDA5OjU3ICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMuMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjIzLjEudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDI4LU1heS0yMDEzIDA5OjU3ICAgICA4MzYNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMuMS50YXIueHoiPnV0aWwtbGludXgtMi4yMy4xLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyOC1NYXktMjAxMyAwOTo1NyAgICAgIDNNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLjIudGFyLmJ6MiI+dXRpbC1saW51eC0yLjIzLjIudGFyLmJ6MjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDEzIDEyOjQwICAgICAgNU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjMuMi50YXIuZ3oiPnV0aWwtbGludXgtMi4yMy4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAzMS1KdWwtMjAxMyAxMjo0MCAgICAgIDdNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yMy4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAzMS1KdWwtMjAxMyAxMjo0MCAgICAgODM2DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjMuMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTMgMTI6NDAgICAgICAzTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy50YXIuYnoyIj51dGlsLWxpbnV4LTIuMjMudGFyLmJ6MjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUtQXByLTIwMTMgMTA6NDggICAgICA1TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy50YXIuZ3oiPnV0aWwtbGludXgtMi4yMy50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNS1BcHItMjAxMyAxMDo0OCAgICAgIDdNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjIzLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjMudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUtQXByLTIwMTMgMTA6NDggICAgIDgzNg0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yMy50YXIueHoiPnV0aWwtbGludXgtMi4yMy50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNS1BcHItMjAxMyAxMDo0OCAgICAgIDNNDQorPGEgaHJlZj0idjIuMjMtQ2hhbmdlTG9nIj52Mi4yMy1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUtQXByLTIwMTMgMTA6NDggICAgIDE5Sw0KKzxhIGhyZWY9InYyLjIzLUNoYW5nZUxvZy5zaWduIj52Mi4yMy1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjUtQXByLTIwMTMgMTA6NDggICAgIDgzNg0KKzxhIGhyZWY9InYyLjIzLVJlbGVhc2VOb3RlcyI+djIuMjMtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LUFwci0yMDEzIDEwOjQ4ICAgICA1M0sNCis8YSBocmVmPSJ2Mi4yMy1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjMtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LUFwci0yMDEzIDEwOjQ4ICAgICA4MzYNCis8YSBocmVmPSJ2Mi4yMy1yYzEtQ2hhbmdlTG9nIj52Mi4yMy1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItTWFyLTIwMTMgMTI6NDggICAgMzYxSw0KKzxhIGhyZWY9InYyLjIzLXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjMtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLU1hci0yMDEzIDEyOjQ4ICAgICA4MzYNCis8YSBocmVmPSJ2Mi4yMy1yYzItQ2hhbmdlTG9nIj52Mi4yMy1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTAtQXByLTIwMTMgMjI6MTQgICAgIDgwSw0KKzxhIGhyZWY9InYyLjIzLXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjMtcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDEwLUFwci0yMDEzIDIyOjE0ICAgICA4MzYNCis8YSBocmVmPSJ2Mi4yMy4xLUNoYW5nZUxvZyI+djIuMjMuMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI4LU1heS0yMDEzIDA5OjU3ICAgICAxM0sNCis8YSBocmVmPSJ2Mi4yMy4xLUNoYW5nZUxvZy5zaWduIj52Mi4yMy4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjgtTWF5LTIwMTMgMDk6NTcgICAgIDgzNg0KKzxhIGhyZWY9InYyLjIzLjEtUmVsZWFzZU5vdGVzIj52Mi4yMy4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjgtTWF5LTIwMTMgMDk6NTggICAgMTQ0OA0KKzxhIGhyZWY9InYyLjIzLjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjIzLjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAyOC1NYXktMjAxMyAwOTo1OCAgICAgODM2DQorPGEgaHJlZj0idjIuMjMuMi1DaGFuZ2VMb2ciPnYyLjIzLjItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMS1KdWwtMjAxMyAxMjo0MCAgICAgMjNLDQorPGEgaHJlZj0idjIuMjMuMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjMuMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDEzIDEyOjQwICAgICA4MzYNCis8YSBocmVmPSJ2Mi4yMy4yLVJlbGVhc2VOb3RlcyI+djIuMjMuMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDEzIDEyOjQwICAgIDI1ODINCis8YSBocmVmPSJ2Mi4yMy4yLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yMy4yLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTMgMTI6NDAgICAgIDgzNg0KKzwvcHJlPjxocj48L2JvZHk+DQorPC9odG1sPg0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjQvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjQvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YWZiNDYyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNC9pbmRleC5odG1sCkBAIC0wLDAgKzEsNDMgQEAKKzxodG1sPg0KKzxoZWFkPjx0aXRsZT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjQvPC90aXRsZT48L2hlYWQ+DQorPGJvZHk+DQorPGgxPkluZGV4IG9mIC9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yNC88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9ImxpYmJsa2lkLWRvY3MvIj5saWJibGtpZC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtQXByLTIwMTQgMTA6MTUgICAgICAgLQ0KKzxhIGhyZWY9ImxpYm1vdW50LWRvY3MvIj5saWJtb3VudC1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtQXByLTIwMTQgMTA6MTcgICAgICAgLQ0KKzxhIGhyZWY9InNoYTI1NnN1bXMuYXNjIj5zaGEyNTZzdW1zLmFzYzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTItTWF5LTIwMTcgMTA6NTMgICAgMjc1OA0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC1yYzEudGFyLmJ6MiI+dXRpbC1saW51eC0yLjI0LXJjMS50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAgIDI3LVNlcC0yMDEzIDEyOjU0ICAgICAgNU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjQtcmMxLnRhci5neiI+dXRpbC1saW51eC0yLjI0LXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDI3LVNlcC0yMDEzIDEyOjU0ICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjQtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjQtcmMxLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMjctU2VwLTIwMTMgMTI6NTQgICAgIDgzNg0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC1yYzEudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjQtcmMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjctU2VwLTIwMTMgMTI6NTQgICAgICAzTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC1yYzIudGFyLmJ6MiI+dXRpbC1saW51eC0yLjI0LXJjMi50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAgIDExLU9jdC0yMDEzIDExOjM3ICAgICAgNU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjQtcmMyLnRhci5neiI+dXRpbC1saW51eC0yLjI0LXJjMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDExLU9jdC0yMDEzIDExOjM3ICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjQtcmMyLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjQtcmMyLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTEtT2N0LTIwMTMgMTE6MzcgICAgIDgzNg0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC1yYzIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjQtcmMyLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTEtT2N0LTIwMTMgMTE6MzcgICAgICAzTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC4xLnRhci5neiI+dXRpbC1saW51eC0yLjI0LjEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE0IDEzOjMzICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjQuMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI0LjEudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE0IDEzOjMzICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjQuMS50YXIueHoiPnV0aWwtbGludXgtMi4yNC4xLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyMC1KYW4tMjAxNCAxMzozMyAgICAgIDNNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI0LjIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjQuMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtQXByLTIwMTQgMTA6MTcgICAgICA3TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC4yLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjQuMi50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjQtQXByLTIwMTQgMTA6MTcgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC4yLnRhci54eiI+dXRpbC1saW51eC0yLjI0LjIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LUFwci0yMDE0IDEwOjE3ICAgICAgM00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjQudGFyLmJ6MiI+dXRpbC1saW51eC0yLjI0LnRhci5iejI8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU9jdC0yMDEzIDEzOjQ5ICAgICAgNU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjQudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjQudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtT2N0LTIwMTMgMTM6NDkgICAgICA3TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNC50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI0LnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU9jdC0yMDEzIDEzOjQ5ICAgICA4MzYNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjQudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjQudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtT2N0LTIwMTMgMTM6NDkgICAgICAzTQ0KKzxhIGhyZWY9InYyLjI0LUNoYW5nZUxvZyI+djIuMjQtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU9jdC0yMDEzIDEzOjQ5ICAgICAyMksNCis8YSBocmVmPSJ2Mi4yNC1DaGFuZ2VMb2cuc2lnbiI+djIuMjQtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU9jdC0yMDEzIDEzOjQ5ICAgICA4MzYNCis8YSBocmVmPSJ2Mi4yNC1SZWxlYXNlTm90ZXMiPnYyLjI0LVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1PY3QtMjAxMyAxMzo0OSAgICAgNDRLDQorPGEgaHJlZj0idjIuMjQtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI0LVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1PY3QtMjAxMyAxMzo0OSAgICAgODM2DQorPGEgaHJlZj0idjIuMjQtcmMxLUNoYW5nZUxvZyI+djIuMjQtcmMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI3LVNlcC0yMDEzIDEyOjU0ICAgIDI5MksNCis8YSBocmVmPSJ2Mi4yNC1yYzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjI0LXJjMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyNy1TZXAtMjAxMyAxMjo1NCAgICAgODM2DQorPGEgaHJlZj0idjIuMjQtcmMyLUNoYW5nZUxvZyI+djIuMjQtcmMyLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLU9jdC0yMDEzIDExOjM3ICAgICA0MksNCis8YSBocmVmPSJ2Mi4yNC1yYzItQ2hhbmdlTG9nLnNpZ24iPnYyLjI0LXJjMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAxMS1PY3QtMjAxMyAxMTozNyAgICAgODM2DQorPGEgaHJlZj0idjIuMjQuMS1DaGFuZ2VMb2ciPnYyLjI0LjEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMC1KYW4tMjAxNCAxMzozMyAgICAgMzhLDQorPGEgaHJlZj0idjIuMjQuMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjQuMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE0IDEzOjMzICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNC4xLVJlbGVhc2VOb3RlcyI+djIuMjQuMS1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE0IDEzOjMzICAgIDQ0NDkNCis8YSBocmVmPSJ2Mi4yNC4xLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yNC4xLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTQgMTM6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI0LjItQ2hhbmdlTG9nIj52Mi4yNC4yLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtQXByLTIwMTQgMTA6MTcgICAgIDQ3Sw0KKzxhIGhyZWY9InYyLjI0LjItQ2hhbmdlTG9nLnNpZ24iPnYyLjI0LjItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BcHItMjAxNCAxMDoxNyAgICAgODE5DQorPGEgaHJlZj0idjIuMjQuMi1SZWxlYXNlTm90ZXMiPnYyLjI0LjItUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BcHItMjAxNCAxMDoxOCAgICA1NzQ4DQorPGEgaHJlZj0idjIuMjQuMi1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjQuMi1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgIDI0LUFwci0yMDE0IDEwOjE4ICAgICA4MTkNCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI1L2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI1L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTUxNmMzYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjUvaW5kZXguaHRtbApAQCAtMCwwICsxLDQ2IEBACis8aHRtbD4NCis8aGVhZD48dGl0bGU+SW5kZXggb2YgL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI1LzwvdGl0bGU+PC9oZWFkPg0KKzxib2R5Pg0KKzxoMT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjUvPC9oMT48aHI+PHByZT48YSBocmVmPSIuLi8iPi4uLzwvYT4NCis8YSBocmVmPSJsaWJibGtpZC1kb2NzLyI+bGliYmxraWQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LU9jdC0yMDE0IDEzOjA1ICAgICAgIC0NCis8YSBocmVmPSJsaWJtb3VudC1kb2NzLyI+bGlibW91bnQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI0LU9jdC0yMDE0IDEzOjA2ICAgICAgIC0NCis8YSBocmVmPSJsaWJzbWFydGNvbHMtZG9jcy8iPmxpYnNtYXJ0Y29scy1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1PY3QtMjAxNCAxMzowOCAgICAgICAtDQorPGEgaHJlZj0ic2hhMjU2c3Vtcy5hc2MiPnNoYTI1NnN1bXMuYXNjPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi1NYXktMjAxNyAxMDo1MyAgICAyNzU4DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LXJjMS50YXIuZ3oiPnV0aWwtbGludXgtMi4yNS1yYzEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAxOC1KdW4tMjAxNCAxMzozMyAgICAgIDdNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LXJjMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI1LXJjMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgIDE4LUp1bi0yMDE0IDEzOjMzICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUtcmMxLnRhci54eiI+dXRpbC1saW51eC0yLjI1LXJjMS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDE4LUp1bi0yMDE0IDEzOjMzICAgICAgM00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUtcmMyLnRhci5neiI+dXRpbC1saW51eC0yLjI1LXJjMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDAyLUp1bC0yMDE0IDEwOjAyICAgICAgN00NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUtcmMyLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjUtcmMyLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMDItSnVsLTIwMTQgMTA6MDIgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNS1yYzIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjUtcmMyLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDItSnVsLTIwMTQgMTA6MDIgICAgICAzTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNS4xLXJjMS50YXIuZ3oiPnV0aWwtbGludXgtMi4yNS4xLXJjMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAyNy1BdWctMjAxNCAxMzoxOCAgICAgIDhNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LjEtcmMxLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjUuMS1yYzEudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgMjctQXVnLTIwMTQgMTM6MTggICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNS4xLXJjMS50YXIueHoiPnV0aWwtbGludXgtMi4yNS4xLXJjMS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAyNy1BdWctMjAxNCAxMzoxOCAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LjEudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjUuMS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDMtU2VwLTIwMTQgMTA6NDEgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNS4xLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjUuMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDMtU2VwLTIwMTQgMTA6NDEgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNS4xLnRhci54eiI+dXRpbC1saW51eC0yLjI1LjEudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDAzLVNlcC0yMDE0IDEwOjQxICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjUuMi50YXIuZ3oiPnV0aWwtbGludXgtMi4yNS4yLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1PY3QtMjAxNCAxMzowOCAgICAgIDhNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LjIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNS4yLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyNC1PY3QtMjAxNCAxMzowOCAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LjIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjUuMi50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtT2N0LTIwMTQgMTM6MDggICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNS50YXIuZ3oiPnV0aWwtbGludXgtMi4yNS50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1KdWwtMjAxNCAwOTo1MCAgICAgIDhNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI1LnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjUudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItSnVsLTIwMTQgMDk6NTAgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNS50YXIueHoiPnV0aWwtbGludXgtMi4yNS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1KdWwtMjAxNCAwOTo1MCAgICAgIDRNDQorPGEgaHJlZj0idjIuMjUtQ2hhbmdlTG9nIj52Mi4yNS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItSnVsLTIwMTQgMDk6NTAgICAgIDQxSw0KKzxhIGhyZWY9InYyLjI1LUNoYW5nZUxvZy5zaWduIj52Mi4yNS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItSnVsLTIwMTQgMDk6NTAgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI1LVJlbGVhc2VOb3RlcyI+djIuMjUtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUp1bC0yMDE0IDA5OjUwICAgICA2MUsNCis8YSBocmVmPSJ2Mi4yNS1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjUtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUp1bC0yMDE0IDA5OjUwICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNS1yYzEtQ2hhbmdlTG9nIj52Mi4yNS1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTgtSnVuLTIwMTQgMTM6MzMgICAgNDg5Sw0KKzxhIGhyZWY9InYyLjI1LXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjUtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE4LUp1bi0yMDE0IDEzOjMzICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNS1yYzItQ2hhbmdlTG9nIj52Mi4yNS1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItSnVsLTIwMTQgMTA6MDIgICAgIDI3Sw0KKzxhIGhyZWY9InYyLjI1LXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMjUtcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLUp1bC0yMDE0IDEwOjAyICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNS4xLUNoYW5nZUxvZyI+djIuMjUuMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAzLVNlcC0yMDE0IDEwOjQxICAgIDU4MTYNCis8YSBocmVmPSJ2Mi4yNS4xLUNoYW5nZUxvZy5zaWduIj52Mi4yNS4xLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDMtU2VwLTIwMTQgMTA6NDEgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI1LjEtUmVsZWFzZU5vdGVzIj52Mi4yNS4xLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDMtU2VwLTIwMTQgMTA6NTIgICAgMzIyMA0KKzxhIGhyZWY9InYyLjI1LjEtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI1LjEtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAwMy1TZXAtMjAxNCAxMDo1MiAgICAgODE5DQorPGEgaHJlZj0idjIuMjUuMS1yYzEtQ2hhbmdlTG9nIj52Mi4yNS4xLXJjMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjctQXVnLTIwMTQgMTM6MTggICAgIDIySw0KKzxhIGhyZWY9InYyLjI1LjEtcmMxLUNoYW5nZUxvZy5zaWduIj52Mi4yNS4xLXJjMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjctQXVnLTIwMTQgMTM6MTggICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI1LjItQ2hhbmdlTG9nIj52Mi4yNS4yLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtT2N0LTIwMTQgMTM6MDggICAgIDI2Sw0KKzxhIGhyZWY9InYyLjI1LjItQ2hhbmdlTG9nLnNpZ24iPnYyLjI1LjItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1PY3QtMjAxNCAxMzowOCAgICAgODE5DQorPGEgaHJlZj0idjIuMjUuMi1SZWxlYXNlTm90ZXMiPnYyLjI1LjItUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1PY3QtMjAxNCAxMzowOCAgICAzMDE2DQorPGEgaHJlZj0idjIuMjUuMi1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjUuMi1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgIDI0LU9jdC0yMDE0IDEzOjA4ICAgICA4MTkNCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI2L2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI2L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk5MTQ4OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjYvaW5kZXguaHRtbApAQCAtMCwwICsxLDQyIEBACis8aHRtbD4NCis8aGVhZD48dGl0bGU+SW5kZXggb2YgL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI2LzwvdGl0bGU+PC9oZWFkPg0KKzxib2R5Pg0KKzxoMT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjYvPC9oMT48aHI+PHByZT48YSBocmVmPSIuLi8iPi4uLzwvYT4NCis8YSBocmVmPSJsaWJibGtpZC1kb2NzLyI+bGliYmxraWQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE1IDEwOjM4ICAgICAgIC0NCis8YSBocmVmPSJsaWJmZGlzay1kb2NzLyI+bGliZmRpc2stZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE1IDEwOjQwICAgICAgIC0NCis8YSBocmVmPSJsaWJtb3VudC1kb2NzLyI+bGlibW91bnQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE1IDEwOjQyICAgICAgIC0NCis8YSBocmVmPSJsaWJzbWFydGNvbHMtZG9jcy8iPmxpYnNtYXJ0Y29scy1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMC1BcHItMjAxNSAxMDo0MyAgICAgICAtDQorPGEgaHJlZj0ic2hhMjU2c3Vtcy5hc2MiPnNoYTI1NnN1bXMuYXNjPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi1NYXktMjAxNyAxMDo1NCAgICAyNDgwDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI2LXJjMS50YXIuZ3oiPnV0aWwtbGludXgtMi4yNi1yYzEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAxNC1KYW4tMjAxNSAxMzoxNCAgICAgIDhNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI2LXJjMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI2LXJjMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgIDE0LUphbi0yMDE1IDEzOjE0ICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjYtcmMxLnRhci54eiI+dXRpbC1saW51eC0yLjI2LXJjMS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUphbi0yMDE1IDEzOjE0ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjYtcmMyLnRhci5neiI+dXRpbC1saW51eC0yLjI2LXJjMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDA0LUZlYi0yMDE1IDExOjQ5ICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjYtcmMyLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjYtcmMyLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMDQtRmViLTIwMTUgMTE6NDkgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi1yYzIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjYtcmMyLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDQtRmViLTIwMTUgMTE6NDkgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi4xLnRhci5neiI+dXRpbC1saW51eC0yLjI2LjEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLU1hci0yMDE1IDE0OjIzICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjYuMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI2LjEudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDEzLU1hci0yMDE1IDE0OjIzICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjYuMS50YXIueHoiPnV0aWwtbGludXgtMi4yNi4xLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAxMy1NYXItMjAxNSAxNDoyMyAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI2LjIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjYuMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTUgMTA6NDQgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi4yLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjYuMi50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTUgMTA6NDQgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi4yLnRhci54eiI+dXRpbC1saW51eC0yLjI2LjIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE1IDEwOjQ0ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjYudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjYudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRmViLTIwMTUgMTI6NDcgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNi50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI2LnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LUZlYi0yMDE1IDEyOjQ3ICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjYudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjYudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRmViLTIwMTUgMTI6NDcgICAgICA0TQ0KKzxhIGhyZWY9InYyLjI2LUNoYW5nZUxvZyI+djIuMjYtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LUZlYi0yMDE1IDEyOjQ3ICAgICAzMEsNCis8YSBocmVmPSJ2Mi4yNi1DaGFuZ2VMb2cuc2lnbiI+djIuMjYtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LUZlYi0yMDE1IDEyOjQ3ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNi1SZWxlYXNlTm90ZXMiPnYyLjI2LVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1GZWItMjAxNSAxMjo0NyAgICAgNTFLDQorPGEgaHJlZj0idjIuMjYtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI2LVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1GZWItMjAxNSAxMjo0NyAgICAgODE5DQorPGEgaHJlZj0idjIuMjYtcmMxLUNoYW5nZUxvZyI+djIuMjYtcmMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUphbi0yMDE1IDEzOjE0ICAgIDM2MEsNCis8YSBocmVmPSJ2Mi4yNi1yYzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjI2LXJjMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAxNC1KYW4tMjAxNSAxMzoxNCAgICAgODE5DQorPGEgaHJlZj0idjIuMjYtcmMyLUNoYW5nZUxvZyI+djIuMjYtcmMyLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA0LUZlYi0yMDE1IDExOjUwICAgICA1MUsNCis8YSBocmVmPSJ2Mi4yNi1yYzItQ2hhbmdlTG9nLnNpZ24iPnYyLjI2LXJjMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAwNC1GZWItMjAxNSAxMTo1MCAgICAgODE5DQorPGEgaHJlZj0idjIuMjYuMS1DaGFuZ2VMb2ciPnYyLjI2LjEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy1NYXItMjAxNSAxNDoyMyAgICAgMzJLDQorPGEgaHJlZj0idjIuMjYuMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjYuMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLU1hci0yMDE1IDE0OjIzICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yNi4xLVJlbGVhc2VOb3RlcyI+djIuMjYuMS1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEzLU1hci0yMDE1IDE0OjIzICAgIDI5NDQNCis8YSBocmVmPSJ2Mi4yNi4xLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yNi4xLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMTMtTWFyLTIwMTUgMTQ6MjMgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI2LjItQ2hhbmdlTG9nIj52Mi4yNi4yLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTUgMTA6NDQgICAgIDU4Sw0KKzxhIGhyZWY9InYyLjI2LjItQ2hhbmdlTG9nLnNpZ24iPnYyLjI2LjItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMC1BcHItMjAxNSAxMDo0NCAgICAgODE5DQorPGEgaHJlZj0idjIuMjYuMi1SZWxlYXNlTm90ZXMiPnYyLjI2LjItUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMC1BcHItMjAxNSAxMDo0NCAgICA1ODM0DQorPGEgaHJlZj0idjIuMjYuMi1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjYuMi1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE1IDEwOjQ0ICAgICA4MTkNCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI3L2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI3L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTRlYjM2OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjcvaW5kZXguaHRtbApAQCAtMCwwICsxLDM1IEBACis8aHRtbD4NCis8aGVhZD48dGl0bGU+SW5kZXggb2YgL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI3LzwvdGl0bGU+PC9oZWFkPg0KKzxib2R5Pg0KKzxoMT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjcvPC9oMT48aHI+PHByZT48YSBocmVmPSIuLi8iPi4uLzwvYT4NCis8YSBocmVmPSJsaWJibGtpZC1kb2NzLyI+bGliYmxraWQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLU5vdi0yMDE1IDExOjAxICAgICAgIC0NCis8YSBocmVmPSJsaWJmZGlzay1kb2NzLyI+bGliZmRpc2stZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLU5vdi0yMDE1IDExOjAzICAgICAgIC0NCis8YSBocmVmPSJsaWJtb3VudC1kb2NzLyI+bGlibW91bnQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLU5vdi0yMDE1IDExOjA0ICAgICAgIC0NCis8YSBocmVmPSJsaWJzbWFydGNvbHMtZG9jcy8iPmxpYnNtYXJ0Y29scy1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMi1Ob3YtMjAxNSAxMTowNiAgICAgICAtDQorPGEgaHJlZj0ic2hhMjU2c3Vtcy5hc2MiPnNoYTI1NnN1bXMuYXNjPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi1NYXktMjAxNyAxMDo1NCAgICAyMTI3DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI3LXJjMS50YXIuZ3oiPnV0aWwtbGludXgtMi4yNy1yYzEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAzMS1KdWwtMjAxNSAxMTowMSAgICAgIDhNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI3LXJjMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI3LXJjMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDE1IDExOjAxICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjctcmMxLnRhci54eiI+dXRpbC1saW51eC0yLjI3LXJjMS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDMxLUp1bC0yMDE1IDExOjAxICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjctcmMyLnRhci5neiI+dXRpbC1saW51eC0yLjI3LXJjMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDI0LUF1Zy0yMDE1IDExOjA0ICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjctcmMyLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjctcmMyLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMjQtQXVnLTIwMTUgMTE6MDQgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy1yYzIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjctcmMyLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjQtQXVnLTIwMTUgMTE6MDQgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yNy4xLnRhci5neiI+dXRpbC1saW51eC0yLjI3LjEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLU5vdi0yMDE1IDExOjA2ICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjcuMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI3LjEudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDAyLU5vdi0yMDE1IDExOjA2ICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjcuMS50YXIueHoiPnV0aWwtbGludXgtMi4yNy4xLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAwMi1Ob3YtMjAxNSAxMTowNiAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI3LnRhci5neiI+dXRpbC1saW51eC0yLjI3LnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE1IDA4OjE3ICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjcudGFyLnNpZ24iPnV0aWwtbGludXgtMi4yNy50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNSAwODoxNyAgICAgODE5DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI3LnRhci54eiI+dXRpbC1saW51eC0yLjI3LnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE1IDA4OjE3ICAgICAgNE0NCis8YSBocmVmPSJ2Mi4yNy1DaGFuZ2VMb2ciPnYyLjI3LUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNSAwODoxNyAgICAgMjFLDQorPGEgaHJlZj0idjIuMjctQ2hhbmdlTG9nLnNpZ24iPnYyLjI3LUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNSAwODoxNyAgICAgODE5DQorPGEgaHJlZj0idjIuMjctUmVsZWFzZU5vdGVzIj52Mi4yNy1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTUgMDg6MTcgICAgIDM1Sw0KKzxhIGhyZWY9InYyLjI3LVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yNy1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTUgMDg6MTcgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI3LXJjMS1DaGFuZ2VMb2ciPnYyLjI3LXJjMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAzMS1KdWwtMjAxNSAxMTowMSAgICAyNjNLDQorPGEgaHJlZj0idjIuMjctcmMxLUNoYW5nZUxvZy5zaWduIj52Mi4yNy1yYzEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEtSnVsLTIwMTUgMTE6MDEgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI3LXJjMi1DaGFuZ2VMb2ciPnYyLjI3LXJjMi1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyNC1BdWctMjAxNSAxMTowNCAgICAgMzhLDQorPGEgaHJlZj0idjIuMjctcmMyLUNoYW5nZUxvZy5zaWduIj52Mi4yNy1yYzItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjQtQXVnLTIwMTUgMTE6MDQgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI3LjEtQ2hhbmdlTG9nIj52Mi4yNy4xLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItTm92LTIwMTUgMTE6MDYgICAgIDE4Sw0KKzxhIGhyZWY9InYyLjI3LjEtQ2hhbmdlTG9nLnNpZ24iPnYyLjI3LjEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMi1Ob3YtMjAxNSAxMTowNiAgICAgODE5DQorPGEgaHJlZj0idjIuMjcuMS1SZWxlYXNlTm90ZXMiPnYyLjI3LjEtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMi1Ob3YtMjAxNSAxMTowNiAgICAyMTA3DQorPGEgaHJlZj0idjIuMjcuMS1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjcuMS1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgIDAyLU5vdi0yMDE1IDExOjA2ICAgICA4MTkNCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI4L2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI4L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGJiYTZiNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjgvaW5kZXguaHRtbApAQCAtMCwwICsxLDQyIEBACis8aHRtbD4NCis8aGVhZD48dGl0bGU+SW5kZXggb2YgL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI4LzwvdGl0bGU+PC9oZWFkPg0KKzxib2R5Pg0KKzxoMT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjgvPC9oMT48aHI+PHByZT48YSBocmVmPSIuLi8iPi4uLzwvYT4NCis8YSBocmVmPSJsaWJibGtpZC1kb2NzLyI+bGliYmxraWQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE2IDEyOjAwICAgICAgIC0NCis8YSBocmVmPSJsaWJmZGlzay1kb2NzLyI+bGliZmRpc2stZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE2IDEyOjAyICAgICAgIC0NCis8YSBocmVmPSJsaWJtb3VudC1kb2NzLyI+bGlibW91bnQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE2IDEyOjA0ICAgICAgIC0NCis8YSBocmVmPSJsaWJzbWFydGNvbHMtZG9jcy8iPmxpYnNtYXJ0Y29scy1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNiAxMjowNiAgICAgICAtDQorPGEgaHJlZj0ic2hhMjU2c3Vtcy5hc2MiPnNoYTI1NnN1bXMuYXNjPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi1NYXktMjAxNyAxMDo1NSAgICAyNDgwDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI4LXJjMS50YXIuZ3oiPnV0aWwtbGludXgtMi4yOC1yYzEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAxMS1NYXItMjAxNiAxMTo0NSAgICAgIDhNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI4LXJjMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI4LXJjMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgIDExLU1hci0yMDE2IDExOjQ1ICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjgtcmMxLnRhci54eiI+dXRpbC1saW51eC0yLjI4LXJjMS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDExLU1hci0yMDE2IDExOjQ1ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjgtcmMyLnRhci5neiI+dXRpbC1saW51eC0yLjI4LXJjMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDI5LU1hci0yMDE2IDA5OjA0ICAgICAgOE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjgtcmMyLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjgtcmMyLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMjktTWFyLTIwMTYgMDk6MDQgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC1yYzIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjgtcmMyLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjktTWFyLTIwMTYgMDk6MDQgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC4xLnRhci5neiI+dXRpbC1saW51eC0yLjI4LjEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLUF1Zy0yMDE2IDEwOjA5ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjguMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI4LjEudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDExLUF1Zy0yMDE2IDEwOjA5ICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjguMS50YXIueHoiPnV0aWwtbGludXgtMi4yOC4xLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAxMS1BdWctMjAxNiAxMDowOSAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI4LjIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjguMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTYgMTI6MDYgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC4yLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjguMi50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTYgMTI6MDYgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC4yLnRhci54eiI+dXRpbC1saW51eC0yLjI4LjIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE2IDEyOjA2ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjgudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjgudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTItQXByLTIwMTYgMTE6MjYgICAgICA4TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOC50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI4LnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLUFwci0yMDE2IDExOjI2ICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjgudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjgudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTItQXByLTIwMTYgMTE6MjYgICAgICA0TQ0KKzxhIGhyZWY9InYyLjI4LUNoYW5nZUxvZyI+djIuMjgtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLUFwci0yMDE2IDExOjI2ICAgICAxM0sNCis8YSBocmVmPSJ2Mi4yOC1DaGFuZ2VMb2cuc2lnbiI+djIuMjgtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDEyLUFwci0yMDE2IDExOjI2ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOC1SZWxlYXNlTm90ZXMiPnYyLjI4LVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi1BcHItMjAxNiAxMToyNiAgICAgMzNLDQorPGEgaHJlZj0idjIuMjgtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI4LVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi1BcHItMjAxNiAxMToyNiAgICAgODE5DQorPGEgaHJlZj0idjIuMjgtcmMxLUNoYW5nZUxvZyI+djIuMjgtcmMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLU1hci0yMDE2IDExOjQ1ICAgIDI2OUsNCis8YSBocmVmPSJ2Mi4yOC1yYzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjI4LXJjMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAxMS1NYXItMjAxNiAxMTo0NSAgICAgODE5DQorPGEgaHJlZj0idjIuMjgtcmMyLUNoYW5nZUxvZyI+djIuMjgtcmMyLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI5LU1hci0yMDE2IDA5OjA0ICAgICA1MksNCis8YSBocmVmPSJ2Mi4yOC1yYzItQ2hhbmdlTG9nLnNpZ24iPnYyLjI4LXJjMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyOS1NYXItMjAxNiAwOTowNCAgICAgODE5DQorPGEgaHJlZj0idjIuMjguMS1DaGFuZ2VMb2ciPnYyLjI4LjEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS1BdWctMjAxNiAxMDowOSAgICAgMzdLDQorPGEgaHJlZj0idjIuMjguMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjguMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLUF1Zy0yMDE2IDEwOjA5ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOC4xLVJlbGVhc2VOb3RlcyI+djIuMjguMS1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLUF1Zy0yMDE2IDEwOjA5ICAgIDM3NDgNCis8YSBocmVmPSJ2Mi4yOC4xLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yOC4xLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMTEtQXVnLTIwMTYgMTA6MDkgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI4LjItQ2hhbmdlTG9nIj52Mi4yOC4yLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDctU2VwLTIwMTYgMTI6MDYgICAgODkwMA0KKzxhIGhyZWY9InYyLjI4LjItQ2hhbmdlTG9nLnNpZ24iPnYyLjI4LjItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNiAxMjowNiAgICAgODE5DQorPGEgaHJlZj0idjIuMjguMi1SZWxlYXNlTm90ZXMiPnYyLjI4LjItUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNy1TZXAtMjAxNiAxMjowNiAgICAxMTYxDQorPGEgaHJlZj0idjIuMjguMi1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjguMi1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgIDA3LVNlcC0yMDE2IDEyOjA2ICAgICA4MTkNCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI5L2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI5L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE2YTI1NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjkvaW5kZXguaHRtbApAQCAtMCwwICsxLDQyIEBACis8aHRtbD4NCis8aGVhZD48dGl0bGU+SW5kZXggb2YgL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjI5LzwvdGl0bGU+PC9oZWFkPg0KKzxib2R5Pg0KKzxoMT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjkvPC9oMT48aHI+PHByZT48YSBocmVmPSIuLi8iPi4uLzwvYT4NCis8YSBocmVmPSJsaWJibGtpZC1kb2NzLyI+bGliYmxraWQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUZlYi0yMDE3IDE1OjIwICAgICAgIC0NCis8YSBocmVmPSJsaWJmZGlzay1kb2NzLyI+bGliZmRpc2stZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUZlYi0yMDE3IDE1OjIyICAgICAgIC0NCis8YSBocmVmPSJsaWJtb3VudC1kb2NzLyI+bGlibW91bnQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUZlYi0yMDE3IDE1OjI0ICAgICAgIC0NCis8YSBocmVmPSJsaWJzbWFydGNvbHMtZG9jcy8iPmxpYnNtYXJ0Y29scy1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1GZWItMjAxNyAxNToyNiAgICAgICAtDQorPGEgaHJlZj0ic2hhMjU2c3Vtcy5hc2MiPnNoYTI1NnN1bXMuYXNjPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMi1NYXktMjAxNyAxMDo1NSAgICAyNDgwDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI5LXJjMS50YXIuZ3oiPnV0aWwtbGludXgtMi4yOS1yYzEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAzMC1TZXAtMjAxNiAwOTo1NSAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI5LXJjMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI5LXJjMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgIDMwLVNlcC0yMDE2IDA5OjU1ICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjktcmMxLnRhci54eiI+dXRpbC1saW51eC0yLjI5LXJjMS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDMwLVNlcC0yMDE2IDA5OjU1ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjktcmMyLnRhci5neiI+dXRpbC1saW51eC0yLjI5LXJjMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE2IDEzOjEzICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjktcmMyLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjktcmMyLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTYgMTM6MTMgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS1yYzIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjktcmMyLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTYgMTM6MTMgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS4xLnRhci5neiI+dXRpbC1saW51eC0yLjI5LjEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE3IDE0OjAyICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjkuMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI5LjEudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE3IDE0OjAyICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjkuMS50YXIueHoiPnV0aWwtbGludXgtMi4yOS4xLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyMC1KYW4tMjAxNyAxNDowMiAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjI5LjIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjkuMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItRmViLTIwMTcgMTU6MjYgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS4yLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMjkuMi50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjItRmViLTIwMTcgMTU6MjYgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS4yLnRhci54eiI+dXRpbC1saW51eC0yLjI5LjIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUZlYi0yMDE3IDE1OjI2ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjkudGFyLmd6Ij51dGlsLWxpbnV4LTIuMjkudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDgtTm92LTIwMTYgMTE6MjMgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4yOS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjI5LnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDA4LU5vdi0yMDE2IDExOjIzICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMjkudGFyLnh6Ij51dGlsLWxpbnV4LTIuMjkudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDgtTm92LTIwMTYgMTE6MjMgICAgICA0TQ0KKzxhIGhyZWY9InYyLjI5LUNoYW5nZUxvZyI+djIuMjktQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA4LU5vdi0yMDE2IDExOjIzICAgICAyOEsNCis8YSBocmVmPSJ2Mi4yOS1DaGFuZ2VMb2cuc2lnbiI+djIuMjktQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA4LU5vdi0yMDE2IDExOjIzICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOS1SZWxlYXNlTm90ZXMiPnYyLjI5LVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOC1Ob3YtMjAxNiAxMToyNCAgICAgMjZLDQorPGEgaHJlZj0idjIuMjktUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjI5LVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOC1Ob3YtMjAxNiAxMToyNCAgICAgODE5DQorPGEgaHJlZj0idjIuMjktcmMxLUNoYW5nZUxvZyI+djIuMjktcmMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLVNlcC0yMDE2IDA5OjU1ICAgIDIxOUsNCis8YSBocmVmPSJ2Mi4yOS1yYzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjI5LXJjMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAzMC1TZXAtMjAxNiAwOTo1NSAgICAgODE5DQorPGEgaHJlZj0idjIuMjktcmMyLUNoYW5nZUxvZyI+djIuMjktcmMyLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE2IDEzOjEzICAgICAxOUsNCis8YSBocmVmPSJ2Mi4yOS1yYzItQ2hhbmdlTG9nLnNpZ24iPnYyLjI5LXJjMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxNiAxMzoxMyAgICAgODE5DQorPGEgaHJlZj0idjIuMjkuMS1DaGFuZ2VMb2ciPnYyLjI5LjEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMC1KYW4tMjAxNyAxNDowMiAgICAgNDdLDQorPGEgaHJlZj0idjIuMjkuMS1DaGFuZ2VMb2cuc2lnbiI+djIuMjkuMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE3IDE0OjAyICAgICA4MTkNCis8YSBocmVmPSJ2Mi4yOS4xLVJlbGVhc2VOb3RlcyI+djIuMjkuMS1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUphbi0yMDE3IDE0OjAyICAgIDUwNjcNCis8YSBocmVmPSJ2Mi4yOS4xLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4yOS4xLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSmFuLTIwMTcgMTQ6MDIgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjI5LjItQ2hhbmdlTG9nIj52Mi4yOS4yLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItRmViLTIwMTcgMTU6MjYgICAgIDE0Sw0KKzxhIGhyZWY9InYyLjI5LjItQ2hhbmdlTG9nLnNpZ24iPnYyLjI5LjItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1GZWItMjAxNyAxNToyNiAgICAgODE5DQorPGEgaHJlZj0idjIuMjkuMi1SZWxlYXNlTm90ZXMiPnYyLjI5LjItUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1GZWItMjAxNyAxNToyNiAgICAyMDEyDQorPGEgaHJlZj0idjIuMjkuMi1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMjkuMi1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgIDIyLUZlYi0yMDE3IDE1OjI2ICAgICA4MTkNCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjMwL2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjMwL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDQ0MWJjMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzAvaW5kZXguaHRtbApAQCAtMCwwICsxLDQyIEBACis8aHRtbD4NCis8aGVhZD48dGl0bGU+SW5kZXggb2YgL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjMwLzwvdGl0bGU+PC9oZWFkPg0KKzxib2R5Pg0KKzxoMT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzAvPC9oMT48aHI+PHByZT48YSBocmVmPSIuLi8iPi4uLzwvYT4NCis8YSBocmVmPSJsaWJibGtpZC1kb2NzLyI+bGliYmxraWQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLVNlcC0yMDE3IDA5OjQ5ICAgICAgIC0NCis8YSBocmVmPSJsaWJmZGlzay1kb2NzLyI+bGliZmRpc2stZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLVNlcC0yMDE3IDA5OjUwICAgICAgIC0NCis8YSBocmVmPSJsaWJtb3VudC1kb2NzLyI+bGlibW91bnQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLVNlcC0yMDE3IDA5OjUwICAgICAgIC0NCis8YSBocmVmPSJsaWJzbWFydGNvbHMtZG9jcy8iPmxpYnNtYXJ0Y29scy1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1TZXAtMjAxNyAwOTo1MSAgICAgICAtDQorPGEgaHJlZj0ic2hhMjU2c3Vtcy5hc2MiPnNoYTI1NnN1bXMuYXNjPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1TZXAtMjAxNyAwOTo1MiAgICAyNDgwDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMwLXJjMS50YXIuZ3oiPnV0aWwtbGludXgtMi4zMC1yYzEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAxMi1NYXktMjAxNyAxMjowMiAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMwLXJjMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjMwLXJjMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEyOjAyICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzAtcmMxLnRhci54eiI+dXRpbC1saW51eC0yLjMwLXJjMS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDEyLU1heS0yMDE3IDEyOjAyICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzAtcmMyLnRhci5neiI+dXRpbC1saW51eC0yLjMwLXJjMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDIzLU1heS0yMDE3IDEwOjQyICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzAtcmMyLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzAtcmMyLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMjMtTWF5LTIwMTcgMTA6NDIgICAgIDgxOQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC1yYzIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzAtcmMyLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjMtTWF5LTIwMTcgMTA6NDIgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC4xLnRhci5neiI+dXRpbC1saW51eC0yLjMwLjEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUp1bC0yMDE3IDA5OjMzICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzAuMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjMwLjEudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUp1bC0yMDE3IDA5OjMzICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzAuMS50YXIueHoiPnV0aWwtbGludXgtMi4zMC4xLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyMC1KdWwtMjAxNyAwOTozMyAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMwLjIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzAuMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtU2VwLTIwMTcgMDk6NTEgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC4yLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzAuMi50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMjEtU2VwLTIwMTcgMDk6NTEgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC4yLnRhci54eiI+dXRpbC1saW51eC0yLjMwLjIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLVNlcC0yMDE3IDA5OjUxICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzAudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzAudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItSnVuLTIwMTcgMTA6NDQgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMC50YXIuc2lnbiI+dXRpbC1saW51eC0yLjMwLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLUp1bi0yMDE3IDEwOjQ0ICAgICA4MTkNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzAudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzAudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDItSnVuLTIwMTcgMTA6NDQgICAgICA0TQ0KKzxhIGhyZWY9InYyLjMwLUNoYW5nZUxvZyI+djIuMzAtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLUp1bi0yMDE3IDEwOjQ0ICAgICAyOEsNCis8YSBocmVmPSJ2Mi4zMC1DaGFuZ2VMb2cuc2lnbiI+djIuMzAtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAyLUp1bi0yMDE3IDEwOjQ0ICAgICA4MTkNCis8YSBocmVmPSJ2Mi4zMC1SZWxlYXNlTm90ZXMiPnYyLjMwLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMi1KdW4tMjAxNyAxMDo0NCAgICAgMzRLDQorPGEgaHJlZj0idjIuMzAtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjMwLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMi1KdW4tMjAxNyAxMDo0NCAgICAgODE5DQorPGEgaHJlZj0idjIuMzAtcmMxLUNoYW5nZUxvZyI+djIuMzAtcmMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLU1heS0yMDE3IDEwOjQyICAgIDMxOEsNCis8YSBocmVmPSJ2Mi4zMC1yYzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjMwLXJjMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyMy1NYXktMjAxNyAxMDo0MiAgICAgODE5DQorPGEgaHJlZj0idjIuMzAtcmMyLUNoYW5nZUxvZyI+djIuMzAtcmMyLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIzLU1heS0yMDE3IDEwOjQyICAgICAxOUsNCis8YSBocmVmPSJ2Mi4zMC1yYzItQ2hhbmdlTG9nLnNpZ24iPnYyLjMwLXJjMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyMy1NYXktMjAxNyAxMDo0MiAgICAgODE5DQorPGEgaHJlZj0idjIuMzAuMS1DaGFuZ2VMb2ciPnYyLjMwLjEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMC1KdWwtMjAxNyAwOTozMyAgICAgMjBLDQorPGEgaHJlZj0idjIuMzAuMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzAuMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUp1bC0yMDE3IDA5OjMzICAgICA4MTkNCis8YSBocmVmPSJ2Mi4zMC4xLVJlbGVhc2VOb3RlcyI+djIuMzAuMS1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIwLUp1bC0yMDE3IDA5OjMzICAgIDE5MDENCis8YSBocmVmPSJ2Mi4zMC4xLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4zMC4xLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMjAtSnVsLTIwMTcgMDk6MzMgICAgIDgxOQ0KKzxhIGhyZWY9InYyLjMwLjItQ2hhbmdlTG9nIj52Mi4zMC4yLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtU2VwLTIwMTcgMDk6NTEgICAgIDEzSw0KKzxhIGhyZWY9InYyLjMwLjItQ2hhbmdlTG9nLnNpZ24iPnYyLjMwLjItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1TZXAtMjAxNyAwOTo1MSAgICAgODMzDQorPGEgaHJlZj0idjIuMzAuMi1SZWxlYXNlTm90ZXMiPnYyLjMwLjItUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1TZXAtMjAxNyAwOTo1MSAgICAxNjA0DQorPGEgaHJlZj0idjIuMzAuMi1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMzAuMi1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgIDIxLVNlcC0yMDE3IDA5OjUxICAgICA4MzMNCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjMxL2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjMxL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk3ZTRlMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzEvaW5kZXguaHRtbApAQCAtMCwwICsxLDM1IEBACis8aHRtbD4NCis8aGVhZD48dGl0bGU+SW5kZXggb2YgL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjMxLzwvdGl0bGU+PC9oZWFkPg0KKzxib2R5Pg0KKzxoMT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzEvPC9oMT48aHI+PHByZT48YSBocmVmPSIuLi8iPi4uLzwvYT4NCis8YSBocmVmPSJsaWJibGtpZC1kb2NzLyI+bGliYmxraWQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjE2ICAgICAgIC0NCis8YSBocmVmPSJsaWJmZGlzay1kb2NzLyI+bGliZmRpc2stZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjE3ICAgICAgIC0NCis8YSBocmVmPSJsaWJtb3VudC1kb2NzLyI+bGlibW91bnQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjE3ICAgICAgIC0NCis8YSBocmVmPSJsaWJzbWFydGNvbHMtZG9jcy8iPmxpYnNtYXJ0Y29scy1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1EZWMtMjAxNyAxNToxNyAgICAgICAtDQorPGEgaHJlZj0ic2hhMjU2c3Vtcy5hc2MiPnNoYTI1NnN1bXMuYXNjPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1EZWMtMjAxNyAxNToyMCAgICAyMTI3DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMxLXJjMS50YXIuZ3oiPnV0aWwtbGludXgtMi4zMS1yYzEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyMi1TZXAtMjAxNyAxMDozOSAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMxLXJjMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjMxLXJjMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgIDIyLVNlcC0yMDE3IDEwOjM5ICAgICA4MzMNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzEtcmMxLnRhci54eiI+dXRpbC1saW51eC0yLjMxLXJjMS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDIyLVNlcC0yMDE3IDEwOjM5ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzEtcmMyLnRhci5neiI+dXRpbC1saW51eC0yLjMxLXJjMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDAzLU9jdC0yMDE3IDE2OjAzICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzEtcmMyLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzEtcmMyLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMDMtT2N0LTIwMTcgMTY6MDMgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS1yYzIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzEtcmMyLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDMtT2N0LTIwMTcgMTY6MDMgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMS4xLnRhci5neiI+dXRpbC1saW51eC0yLjMxLjEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjE4ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzEuMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjMxLjEudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjE4ICAgICA4MzMNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzEuMS50YXIueHoiPnV0aWwtbGludXgtMi4zMS4xLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1EZWMtMjAxNyAxNToxOCAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMxLnRhci5neiI+dXRpbC1saW51eC0yLjMxLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE3IDExOjI3ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzEudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxNyAxMToyNyAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMxLnRhci54eiI+dXRpbC1saW51eC0yLjMxLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE3IDExOjI3ICAgICAgNE0NCis8YSBocmVmPSJ2Mi4zMS1DaGFuZ2VMb2ciPnYyLjMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxNyAxMToyNyAgICAgMTVLDQorPGEgaHJlZj0idjIuMzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxNyAxMToyNyAgICAgODMzDQorPGEgaHJlZj0idjIuMzEtUmVsZWFzZU5vdGVzIj52Mi4zMS1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTcgMTE6MjcgICAgIDMxSw0KKzxhIGhyZWY9InYyLjMxLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4zMS1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTcgMTE6MjcgICAgIDgzMw0KKzxhIGhyZWY9InYyLjMxLXJjMS1DaGFuZ2VMb2ciPnYyLjMxLXJjMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMi1TZXAtMjAxNyAxMDozOSAgICAyOTBLDQorPGEgaHJlZj0idjIuMzEtcmMxLUNoYW5nZUxvZy5zaWduIj52Mi4zMS1yYzEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMjItU2VwLTIwMTcgMTA6MzkgICAgIDgzMw0KKzxhIGhyZWY9InYyLjMxLXJjMi1DaGFuZ2VMb2ciPnYyLjMxLXJjMi1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMy1PY3QtMjAxNyAxNjowMyAgICAgMTJLDQorPGEgaHJlZj0idjIuMzEtcmMyLUNoYW5nZUxvZy5zaWduIj52Mi4zMS1yYzItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDMtT2N0LTIwMTcgMTY6MDMgICAgIDgzMw0KKzxhIGhyZWY9InYyLjMxLjEtQ2hhbmdlTG9nIj52Mi4zMS4xLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTktRGVjLTIwMTcgMTU6MTggICAgIDI3Sw0KKzxhIGhyZWY9InYyLjMxLjEtQ2hhbmdlTG9nLnNpZ24iPnYyLjMxLjEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1EZWMtMjAxNyAxNToxOCAgICAgODMzDQorPGEgaHJlZj0idjIuMzEuMS1SZWxlYXNlTm90ZXMiPnYyLjMxLjEtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1EZWMtMjAxNyAxNToxOCAgICAzMTc1DQorPGEgaHJlZj0idjIuMzEuMS1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMzEuMS1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgIDE5LURlYy0yMDE3IDE1OjE4ICAgICA4MzMNCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjMyL2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjMyL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM3M2U5OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzIvaW5kZXguaHRtbApAQCAtMCwwICsxLDM1IEBACis8aHRtbD4NCis8aGVhZD48dGl0bGU+SW5kZXggb2YgL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjMyLzwvdGl0bGU+PC9oZWFkPg0KKzxib2R5Pg0KKzxoMT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzIvPC9oMT48aHI+PHByZT48YSBocmVmPSIuLi8iPi4uLzwvYT4NCis8YSBocmVmPSJsaWJibGtpZC1kb2NzLyI+bGliYmxraWQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjI3ICAgICAgIC0NCis8YSBocmVmPSJsaWJmZGlzay1kb2NzLyI+bGliZmRpc2stZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjI4ICAgICAgIC0NCis8YSBocmVmPSJsaWJtb3VudC1kb2NzLyI+bGlibW91bnQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjI4ICAgICAgIC0NCis8YSBocmVmPSJsaWJzbWFydGNvbHMtZG9jcy8iPmxpYnNtYXJ0Y29scy1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi1KdWwtMjAxOCAxMToyOCAgICAgICAtDQorPGEgaHJlZj0ic2hhMjU2c3Vtcy5hc2MiPnNoYTI1NnN1bXMuYXNjPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi1KdWwtMjAxOCAxMTozMCAgICAyMTI3DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMyLXJjMS50YXIuZ3oiPnV0aWwtbGludXgtMi4zMi1yYzEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAxMy1GZWItMjAxOCAxMjoyNSAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMyLXJjMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjMyLXJjMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgIDEzLUZlYi0yMDE4IDEyOjI1ICAgICA4MzMNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzItcmMxLnRhci54eiI+dXRpbC1saW51eC0yLjMyLXJjMS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDEzLUZlYi0yMDE4IDEyOjI1ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzItcmMyLnRhci5neiI+dXRpbC1saW51eC0yLjMyLXJjMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDAxLU1hci0yMDE4IDEzOjM4ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzItcmMyLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzItcmMyLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMDEtTWFyLTIwMTggMTM6MzggICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi1yYzIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzItcmMyLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDEtTWFyLTIwMTggMTM6MzggICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMi4xLnRhci5neiI+dXRpbC1saW51eC0yLjMyLjEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjI5ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzIuMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjMyLjEudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjI5ICAgICA4MzMNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzIuMS50YXIueHoiPnV0aWwtbGludXgtMi4zMi4xLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAxNi1KdWwtMjAxOCAxMToyOSAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMyLnRhci5neiI+dXRpbC1saW51eC0yLjMyLnRhci5nejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU1hci0yMDE4IDE0OjQ5ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzIudGFyLnNpZ24iPnV0aWwtbGludXgtMi4zMi50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1NYXItMjAxOCAxNDo0OSAgICAgODMzDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMyLnRhci54eiI+dXRpbC1saW51eC0yLjMyLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDIxLU1hci0yMDE4IDE0OjQ5ICAgICAgNE0NCis8YSBocmVmPSJ2Mi4zMi1DaGFuZ2VMb2ciPnYyLjMyLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1NYXItMjAxOCAxNDo0OSAgICAgMzZLDQorPGEgaHJlZj0idjIuMzItQ2hhbmdlTG9nLnNpZ24iPnYyLjMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAyMS1NYXItMjAxOCAxNDo0OSAgICAgODMzDQorPGEgaHJlZj0idjIuMzItUmVsZWFzZU5vdGVzIj52Mi4zMi1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtTWFyLTIwMTggMTQ6NDkgICAgIDIxSw0KKzxhIGhyZWY9InYyLjMyLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4zMi1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgMjEtTWFyLTIwMTggMTQ6NDkgICAgIDgzMw0KKzxhIGhyZWY9InYyLjMyLXJjMS1DaGFuZ2VMb2ciPnYyLjMyLXJjMS1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMy1GZWItMjAxOCAxMjoyNSAgICAxNzRLDQorPGEgaHJlZj0idjIuMzItcmMxLUNoYW5nZUxvZy5zaWduIj52Mi4zMi1yYzEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTMtRmViLTIwMTggMTI6MjUgICAgIDgzMw0KKzxhIGhyZWY9InYyLjMyLXJjMi1DaGFuZ2VMb2ciPnYyLjMyLXJjMi1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwMS1NYXItMjAxOCAxMzozOCAgICAgMjFLDQorPGEgaHJlZj0idjIuMzItcmMyLUNoYW5nZUxvZy5zaWduIj52Mi4zMi1yYzItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDEtTWFyLTIwMTggMTM6MzggICAgIDgzMw0KKzxhIGhyZWY9InYyLjMyLjEtQ2hhbmdlTG9nIj52Mi4zMi4xLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTYtSnVsLTIwMTggMTE6MjkgICAgIDMxSw0KKzxhIGhyZWY9InYyLjMyLjEtQ2hhbmdlTG9nLnNpZ24iPnYyLjMyLjEtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi1KdWwtMjAxOCAxMToyOSAgICAgODMzDQorPGEgaHJlZj0idjIuMzIuMS1SZWxlYXNlTm90ZXMiPnYyLjMyLjEtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNi1KdWwtMjAxOCAxMToyOSAgICAzNDI1DQorPGEgaHJlZj0idjIuMzIuMS1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMzIuMS1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgIDE2LUp1bC0yMDE4IDExOjI5ICAgICA4MzMNCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjMzL2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjMzL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTQ5NTMwNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzMvaW5kZXguaHRtbApAQCAtMCwwICsxLDQyIEBACis8aHRtbD4NCis8aGVhZD48dGl0bGU+SW5kZXggb2YgL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjMzLzwvdGl0bGU+PC9oZWFkPg0KKzxib2R5Pg0KKzxoMT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzMvPC9oMT48aHI+PHByZT48YSBocmVmPSIuLi8iPi4uLzwvYT4NCis8YSBocmVmPSJsaWJibGtpZC1kb2NzLyI+bGliYmxraWQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUFwci0yMDE5IDEzOjU1ICAgICAgIC0NCis8YSBocmVmPSJsaWJmZGlzay1kb2NzLyI+bGliZmRpc2stZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUFwci0yMDE5IDEzOjU2ICAgICAgIC0NCis8YSBocmVmPSJsaWJtb3VudC1kb2NzLyI+bGlibW91bnQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUFwci0yMDE5IDEzOjU2ICAgICAgIC0NCis8YSBocmVmPSJsaWJzbWFydGNvbHMtZG9jcy8iPmxpYnNtYXJ0Y29scy1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOS1BcHItMjAxOSAxMzo1NiAgICAgICAtDQorPGEgaHJlZj0ic2hhMjU2c3Vtcy5hc2MiPnNoYTI1NnN1bXMuYXNjPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOS1BcHItMjAxOSAxNDowMSAgICAyNDgwDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMzLXJjMS50YXIuZ3oiPnV0aWwtbGludXgtMi4zMy1yYzEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAyNS1TZXAtMjAxOCAxMDozNCAgICAgIDlNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMzLXJjMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjMzLXJjMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgIDI1LVNlcC0yMDE4IDEwOjM0ICAgICA4MzMNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzMtcmMxLnRhci54eiI+dXRpbC1saW51eC0yLjMzLXJjMS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDI1LVNlcC0yMDE4IDEwOjM0ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzMtcmMyLnRhci5neiI+dXRpbC1saW51eC0yLjMzLXJjMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE4IDExOjQ0ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzMtcmMyLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzMtcmMyLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTggMTE6NDQgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy1yYzIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzMtcmMyLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMTktT2N0LTIwMTggMTE6NDQgICAgICA0TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy4xLnRhci5neiI+dXRpbC1saW51eC0yLjMzLjEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUphbi0yMDE5IDEwOjI4ICAgICAgOU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzMuMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjMzLjEudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUphbi0yMDE5IDEwOjI4ICAgICA4MzMNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzMuMS50YXIueHoiPnV0aWwtbGludXgtMi4zMy4xLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAwOS1KYW4tMjAxOSAxMDoyOCAgICAgIDRNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjMzLjIudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzMuMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktQXByLTIwMTkgMTM6NTcgICAgIDEwTQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy4yLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzMuMi50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMDktQXByLTIwMTkgMTM6NTcgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy4yLnRhci54eiI+dXRpbC1saW51eC0yLjMzLjIudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUFwci0yMDE5IDEzOjU3ICAgICAgNE0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzMudGFyLmd6Ij51dGlsLWxpbnV4LTIuMzMudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDYtTm92LTIwMTggMTE6MjUgICAgICA5TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zMy50YXIuc2lnbiI+dXRpbC1saW51eC0yLjMzLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDA2LU5vdi0yMDE4IDExOjI1ICAgICA4MzMNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzMudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzMudGFyLnh6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDYtTm92LTIwMTggMTE6MjUgICAgICA0TQ0KKzxhIGhyZWY9InYyLjMzLUNoYW5nZUxvZyI+djIuMzMtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA2LU5vdi0yMDE4IDExOjI1ICAgIDc5NzcNCis8YSBocmVmPSJ2Mi4zMy1DaGFuZ2VMb2cuc2lnbiI+djIuMzMtQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA2LU5vdi0yMDE4IDExOjI1ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMy1SZWxlYXNlTm90ZXMiPnYyLjMzLVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNi1Ob3YtMjAxOCAxMToyNSAgICAgMjdLDQorPGEgaHJlZj0idjIuMzMtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjMzLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAwNi1Ob3YtMjAxOCAxMToyNSAgICAgODMzDQorPGEgaHJlZj0idjIuMzMtcmMxLUNoYW5nZUxvZyI+djIuMzMtcmMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDI1LVNlcC0yMDE4IDEwOjM0ICAgIDIxMEsNCis8YSBocmVmPSJ2Mi4zMy1yYzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjMzLXJjMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAyNS1TZXAtMjAxOCAxMDozNCAgICAgODMzDQorPGEgaHJlZj0idjIuMzMtcmMyLUNoYW5nZUxvZyI+djIuMzMtcmMyLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE5LU9jdC0yMDE4IDExOjQ0ICAgICAxOEsNCis8YSBocmVmPSJ2Mi4zMy1yYzItQ2hhbmdlTG9nLnNpZ24iPnYyLjMzLXJjMi1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAxOS1PY3QtMjAxOCAxMTo0NCAgICAgODMzDQorPGEgaHJlZj0idjIuMzMuMS1DaGFuZ2VMb2ciPnYyLjMzLjEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOS1KYW4tMjAxOSAxMDoyOCAgICAgMTdLDQorPGEgaHJlZj0idjIuMzMuMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzMuMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUphbi0yMDE5IDEwOjI4ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zMy4xLVJlbGVhc2VOb3RlcyI+djIuMzMuMS1SZWxlYXNlTm90ZXM8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUphbi0yMDE5IDEwOjI4ICAgIDE4OTkNCis8YSBocmVmPSJ2Mi4zMy4xLVJlbGVhc2VOb3Rlcy5zaWduIj52Mi4zMy4xLVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgMDktSmFuLTIwMTkgMTA6MjggICAgIDgzMw0KKzxhIGhyZWY9InYyLjMzLjItQ2hhbmdlTG9nIj52Mi4zMy4yLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMDktQXByLTIwMTkgMTM6NTcgICAgIDIxSw0KKzxhIGhyZWY9InYyLjMzLjItQ2hhbmdlTG9nLnNpZ24iPnYyLjMzLjItQ2hhbmdlTG9nLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOS1BcHItMjAxOSAxMzo1NyAgICAgODMzDQorPGEgaHJlZj0idjIuMzMuMi1SZWxlYXNlTm90ZXMiPnYyLjMzLjItUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAwOS1BcHItMjAxOSAxMzo1NyAgICAyNTY2DQorPGEgaHJlZj0idjIuMzMuMi1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMzMuMi1SZWxlYXNlTm90ZXMuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgIDA5LUFwci0yMDE5IDEzOjU3ICAgICA4MzMNCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjM0L2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjM0L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmQ5ZDljOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzQvaW5kZXguaHRtbApAQCAtMCwwICsxLDI4IEBACis8aHRtbD4NCis8aGVhZD48dGl0bGU+SW5kZXggb2YgL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjM0LzwvdGl0bGU+PC9oZWFkPg0KKzxib2R5Pg0KKzxoMT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzQvPC9oMT48aHI+PHByZT48YSBocmVmPSIuLi8iPi4uLzwvYT4NCis8YSBocmVmPSJsaWJibGtpZC1kb2NzLyI+bGliYmxraWQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUp1bi0yMDE5IDEwOjQ1ICAgICAgIC0NCis8YSBocmVmPSJsaWJmZGlzay1kb2NzLyI+bGliZmRpc2stZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUp1bi0yMDE5IDEwOjQ1ICAgICAgIC0NCis8YSBocmVmPSJsaWJtb3VudC1kb2NzLyI+bGlibW91bnQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUp1bi0yMDE5IDEwOjQ1ICAgICAgIC0NCis8YSBocmVmPSJsaWJzbWFydGNvbHMtZG9jcy8iPmxpYnNtYXJ0Y29scy1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNC1KdW4tMjAxOSAxMDo0NiAgICAgICAtDQorPGEgaHJlZj0ic2hhMjU2c3Vtcy5hc2MiPnNoYTI1NnN1bXMuYXNjPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNC1KdW4tMjAxOSAxMDo1MSAgICAxNzc0DQorPGEgaHJlZj0idXRpbC1saW51eC0yLjM0LXJjMS50YXIuZ3oiPnV0aWwtbGludXgtMi4zNC1yYzEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAzMC1BcHItMjAxOSAxMDoyNCAgICAgMTBNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjM0LXJjMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjM0LXJjMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE5IDEwOjI0ICAgICA4MzMNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzQtcmMxLnRhci54eiI+dXRpbC1saW51eC0yLjM0LXJjMS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE5IDEwOjI0ICAgICAgNU0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzQtcmMyLnRhci5neiI+dXRpbC1saW51eC0yLjM0LXJjMi50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDMwLU1heS0yMDE5IDEwOjI0ICAgICAxME0NCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzQtcmMyLnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzQtcmMyLnRhci5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgMzAtTWF5LTIwMTkgMTA6MjQgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zNC1yYzIudGFyLnh6Ij51dGlsLWxpbnV4LTIuMzQtcmMyLnRhci54ejwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgMzAtTWF5LTIwMTkgMTA6MjQgICAgICA1TQ0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zNC50YXIuZ3oiPnV0aWwtbGludXgtMi4zNC50YXIuZ3o8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNC1KdW4tMjAxOSAxMDo0NiAgICAgMTBNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjM0LnRhci5zaWduIj51dGlsLWxpbnV4LTIuMzQudGFyLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSnVuLTIwMTkgMTA6NDYgICAgIDgzMw0KKzxhIGhyZWY9InV0aWwtbGludXgtMi4zNC50YXIueHoiPnV0aWwtbGludXgtMi4zNC50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxNC1KdW4tMjAxOSAxMDo0NiAgICAgIDVNDQorPGEgaHJlZj0idjIuMzQtQ2hhbmdlTG9nIj52Mi4zNC1DaGFuZ2VMb2c8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSnVuLTIwMTkgMTA6NDYgICAgIDE0Sw0KKzxhIGhyZWY9InYyLjM0LUNoYW5nZUxvZy5zaWduIj52Mi4zNC1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTQtSnVuLTIwMTkgMTA6NDYgICAgIDgzMw0KKzxhIGhyZWY9InYyLjM0LVJlbGVhc2VOb3RlcyI+djIuMzQtUmVsZWFzZU5vdGVzPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUp1bi0yMDE5IDEwOjQ2ICAgICAyN0sNCis8YSBocmVmPSJ2Mi4zNC1SZWxlYXNlTm90ZXMuc2lnbiI+djIuMzQtUmVsZWFzZU5vdGVzLnNpZ248L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE0LUp1bi0yMDE5IDEwOjQ2ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zNC1yYzEtQ2hhbmdlTG9nIj52Mi4zNC1yYzEtQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtQXByLTIwMTkgMTA6MjQgICAgMTY3Sw0KKzxhIGhyZWY9InYyLjM0LXJjMS1DaGFuZ2VMb2cuc2lnbiI+djIuMzQtcmMxLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLUFwci0yMDE5IDEwOjI0ICAgICA4MzMNCis8YSBocmVmPSJ2Mi4zNC1yYzItQ2hhbmdlTG9nIj52Mi4zNC1yYzItQ2hhbmdlTG9nPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzAtTWF5LTIwMTkgMTA6MjQgICAgIDU3Sw0KKzxhIGhyZWY9InYyLjM0LXJjMi1DaGFuZ2VMb2cuc2lnbiI+djIuMzQtcmMyLUNoYW5nZUxvZy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgIDMwLU1heS0yMDE5IDEwOjI0ICAgICA4MzMNCis8L3ByZT48aHI+PC9ib2R5Pg0KKzwvaHRtbD4NCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjM1L2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjM1L2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE3MTRkMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzUvaW5kZXguaHRtbApAQCAtMCwwICsxLDE4IEBACis8aHRtbD4NCis8aGVhZD48dGl0bGU+SW5kZXggb2YgL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjM1LzwvdGl0bGU+PC9oZWFkPg0KKzxib2R5Pg0KKzxoMT5JbmRleCBvZiAvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMzUvPC9oMT48aHI+PHByZT48YSBocmVmPSIuLi8iPi4uLzwvYT4NCis8YSBocmVmPSJsaWJibGtpZC1kb2NzLyI+bGliYmxraWQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA0ICAgICAgIC0NCis8YSBocmVmPSJsaWJmZGlzay1kb2NzLyI+bGliZmRpc2stZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA1ICAgICAgIC0NCis8YSBocmVmPSJsaWJtb3VudC1kb2NzLyI+bGlibW91bnQtZG9jcy88L2E+ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA1ICAgICAgIC0NCis8YSBocmVmPSJsaWJzbWFydGNvbHMtZG9jcy8iPmxpYnNtYXJ0Y29scy1kb2NzLzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS1EZWMtMjAxOSAxMDowNSAgICAgICAtDQorPGEgaHJlZj0ic2hhMjU2c3Vtcy5hc2MiPnNoYTI1NnN1bXMuYXNjPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS1EZWMtMjAxOSAxMDoxMSAgICAxMjQyDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjM1LXJjMS50YXIuZ3oiPnV0aWwtbGludXgtMi4zNS1yYzEudGFyLmd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAxMS1EZWMtMjAxOSAxMDowNiAgICAgMTBNDQorPGEgaHJlZj0idXRpbC1saW51eC0yLjM1LXJjMS50YXIuc2lnbiI+dXRpbC1saW51eC0yLjM1LXJjMS50YXIuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA2ICAgICA4MzMNCis8YSBocmVmPSJ1dGlsLWxpbnV4LTIuMzUtcmMxLnRhci54eiI+dXRpbC1saW51eC0yLjM1LXJjMS50YXIueHo8L2E+ICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA2ICAgICAgNU0NCis8YSBocmVmPSJ2Mi4zNS1SZWxlYXNlTm90ZXMiPnYyLjM1LVJlbGVhc2VOb3RlczwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS1EZWMtMjAxOSAxMDowNiAgICAgMjFLDQorPGEgaHJlZj0idjIuMzUtUmVsZWFzZU5vdGVzLnNpZ24iPnYyLjM1LVJlbGVhc2VOb3Rlcy5zaWduPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAxMS1EZWMtMjAxOSAxMDowNiAgICAgODMzDQorPGEgaHJlZj0idjIuMzUtcmMxLUNoYW5nZUxvZyI+djIuMzUtcmMxLUNoYW5nZUxvZzwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDExLURlYy0yMDE5IDEwOjA2ICAgIDIyOEsNCis8YSBocmVmPSJ2Mi4zNS1yYzEtQ2hhbmdlTG9nLnNpZ24iPnYyLjM1LXJjMS1DaGFuZ2VMb2cuc2lnbjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAgICAxMS1EZWMtMjAxOSAxMDowNiAgICAgODMzDQorPC9wcmU+PGhyPjwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9yZWxlYXNlcy9lZ2xpYmMvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcmVsZWFzZXMvZWdsaWJjL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjI2Nzk0MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcmVsZWFzZXMvZWdsaWJjL2luZGV4Lmh0bWwKQEAgLTAsMCArMSwyMSBAQAorPGh0bWw+DQorPGhlYWQ+PHRpdGxlPkluZGV4IG9mIC9yZWxlYXNlcy9lZ2xpYmMvPC90aXRsZT48L2hlYWQ+DQorPGJvZHkgYmdjb2xvcj0id2hpdGUiPg0KKzxoMT5JbmRleCBvZiAvcmVsZWFzZXMvZWdsaWJjLzwvaDE+PGhyPjxwcmU+PGEgaHJlZj0iLi4vIj4uLi88L2E+DQorPGEgaHJlZj0iZWdsaWJjLTIuMTYtc3ZucjIxMjI0LnRhci5iejIiPmVnbGliYy0yLjE2LXN2bnIyMTIyNC50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAxNy1PY3QtMjAxMiAxODowMSAgICAgICAgICAgIDE3MzEwNjU2DQorPGEgaHJlZj0iZWdsaWJjLTIuMTYtc3ZucjIxMjI0LnRhci5iejIubWQ1Ij5lZ2xpYmMtMi4xNi1zdm5yMjEyMjQudGFyLmJ6Mi5tZDU8L2E+ICAgICAgICAgICAgICAgICAgMTctT2N0LTIwMTIgMjE6NTMgICAgICAgICAgICAgICAgICA2NA0KKzxhIGhyZWY9ImVnbGliYy0yLjE2LXN2bnIyMTIyNC50YXIuYnoyLnNoYTEiPmVnbGliYy0yLjE2LXN2bnIyMTIyNC50YXIuYnoyLnNoYTE8L2E+ICAgICAgICAgICAgICAgICAxNy1PY3QtMjAxMiAyMTo1MyAgICAgICAgICAgICAgICAgIDcyDQorPGEgaHJlZj0iZWdsaWJjLTIuMTctc3ZucjIyMDY0LnRhci5iejIiPmVnbGliYy0yLjE3LXN2bnIyMjA2NC50YXIuYnoyPC9hPiAgICAgICAgICAgICAgICAgICAgICAwNC1KYW4tMjAxMyAwNTo0NCAgICAgICAgICAgIDE3NTY1NTE5DQorPGEgaHJlZj0iZWdsaWJjLTIuMTctc3ZucjIyMDY0LnRhci5iejIuYXNjIj5lZ2xpYmMtMi4xNy1zdm5yMjIwNjQudGFyLmJ6Mi5hc2M8L2E+ICAgICAgICAgICAgICAgICAgMDQtSmFuLTIwMTMgMDU6NDUgICAgICAgICAgICAgICAgIDMwMg0KKzxhIGhyZWY9ImVnbGliYy0yLjE3LXN2bnIyMjA2NC50YXIuYnoyLm1kNSI+ZWdsaWJjLTIuMTctc3ZucjIyMDY0LnRhci5iejIubWQ1PC9hPiAgICAgICAgICAgICAgICAgIDA0LUphbi0yMDEzIDA1OjQ0ICAgICAgICAgICAgICAgICAgNjQNCis8YSBocmVmPSJlZ2xpYmMtMi4xNy1zdm5yMjIwNjQudGFyLmJ6Mi5zaGExIj5lZ2xpYmMtMi4xNy1zdm5yMjIwNjQudGFyLmJ6Mi5zaGExPC9hPiAgICAgICAgICAgICAgICAgMDQtSmFuLTIwMTMgMDU6NDQgICAgICAgICAgICAgICAgICA3Mg0KKzxhIGhyZWY9ImVnbGliYy0yLjE4LXN2bnIyMzc4Ny50YXIuYnoyIj5lZ2xpYmMtMi4xOC1zdm5yMjM3ODcudGFyLmJ6MjwvYT4gICAgICAgICAgICAgICAgICAgICAgMjEtQXVnLTIwMTMgMDU6MzYgICAgICAgICAgICAxNzg2Mjc3Mw0KKzxhIGhyZWY9ImVnbGliYy0yLjE4LXN2bnIyMzc4Ny50YXIuYnoyLmFzYyI+ZWdsaWJjLTIuMTgtc3ZucjIzNzg3LnRhci5iejIuYXNjPC9hPiAgICAgICAgICAgICAgICAgIDIxLUF1Zy0yMDEzIDA1OjM2ICAgICAgICAgICAgICAgICAzMDINCis8YSBocmVmPSJlZ2xpYmMtMi4xOC1zdm5yMjM3ODcudGFyLmJ6Mi5tZDUiPmVnbGliYy0yLjE4LXN2bnIyMzc4Ny50YXIuYnoyLm1kNTwvYT4gICAgICAgICAgICAgICAgICAyMS1BdWctMjAxMyAwNTozNiAgICAgICAgICAgICAgICAgIDY0DQorPGEgaHJlZj0iZWdsaWJjLTIuMTgtc3ZucjIzNzg3LnRhci5iejIuc2hhMSI+ZWdsaWJjLTIuMTgtc3ZucjIzNzg3LnRhci5iejIuc2hhMTwvYT4gICAgICAgICAgICAgICAgIDIxLUF1Zy0yMDEzIDA1OjM2ICAgICAgICAgICAgICAgICAgNzINCis8YSBocmVmPSJlZ2xpYmMtMi4xOS1zdm5yMjUyNDMudGFyLmJ6MiI+ZWdsaWJjLTIuMTktc3ZucjI1MjQzLnRhci5iejI8L2E+ICAgICAgICAgICAgICAgICAgICAgIDA4LUZlYi0yMDE0IDEwOjA2ICAgICAgICAgICAgMTg4NzM2MjANCis8YSBocmVmPSJlZ2xpYmMtMi4xOS1zdm5yMjUyNDMudGFyLmJ6Mi5hc2MiPmVnbGliYy0yLjE5LXN2bnIyNTI0My50YXIuYnoyLmFzYzwvYT4gICAgICAgICAgICAgICAgICAwOC1GZWItMjAxNCAxMDowNiAgICAgICAgICAgICAgICAgMjg1DQorPGEgaHJlZj0iZWdsaWJjLTIuMTktc3ZucjI1MjQzLnRhci5iejIubWQ1Ij5lZ2xpYmMtMi4xOS1zdm5yMjUyNDMudGFyLmJ6Mi5tZDU8L2E+ICAgICAgICAgICAgICAgICAgMDgtRmViLTIwMTQgMTA6MDYgICAgICAgICAgICAgICAgICA2NA0KKzxhIGhyZWY9ImVnbGliYy0yLjE5LXN2bnIyNTI0My50YXIuYnoyLnNoYTEiPmVnbGliYy0yLjE5LXN2bnIyNTI0My50YXIuYnoyLnNoYTE8L2E+ICAgICAgICAgICAgICAgICAwOC1GZWItMjAxNCAxMDowNiAgICAgICAgICAgICAgICAgIDcyDQorPC9wcmU+PGhyPjwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9yZWxlYXNlcy9nbnUtY29uZmlnL2luZGV4Lmh0bWwgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3JlbGVhc2VzL2dudS1jb25maWcvaW5kZXguaHRtbApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTFhYTQ4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9yZWxlYXNlcy9nbnUtY29uZmlnL2luZGV4Lmh0bWwKQEAgLTAsMCArMSw5IEBACis8aHRtbD4NCis8aGVhZD48dGl0bGU+SW5kZXggb2YgL3JlbGVhc2VzL2dudS1jb25maWcvPC90aXRsZT48L2hlYWQ+DQorPGJvZHkgYmdjb2xvcj0id2hpdGUiPg0KKzxoMT5JbmRleCBvZiAvcmVsZWFzZXMvZ251LWNvbmZpZy88L2gxPjxocj48cHJlPjxhIGhyZWY9Ii4uLyI+Li4vPC9hPg0KKzxhIGhyZWY9IlNIQTI1NlNVTSI+U0hBMjU2U1VNPC9hPiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDAzLU9jdC0yMDEyIDE3OjIzICAgICAgICAgICAgICAgICAxOTANCis8YSBocmVmPSJnbnUtY29uZmlnLTIwMTIwODE0LnRhci5iejIiPmdudS1jb25maWctMjAxMjA4MTQudGFyLmJ6MjwvYT4gICAgICAgICAgICAgICAgICAgICAgICAxOC1TZXAtMjAxMiAwOToyOCAgICAgICAgICAgICAgIDQzMDI2DQorPGEgaHJlZj0iZ251LWNvbmZpZy15b2N0by0yMDExMTExMS50Z3oiPmdudS1jb25maWcteW9jdG8tMjAxMTExMTEudGd6PC9hPiAgICAgICAgICAgICAgICAgICAgICAwOC1NYXktMjAxMiAyMToxMSAgICAgICAgICAgICAgIDQ4NzYyDQorPC9wcmU+PGhyPjwvYm9keT4NCis8L2h0bWw+DQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC10ZXN0ZGF0YS9yZWxlYXNlcy9pbmRpdmlkdWFsL3hzZXJ2ZXIvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcmVsZWFzZXMvaW5kaXZpZHVhbC94c2VydmVyL2luZGV4Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzJlMGQ2NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvcmVsZWFzZXMvaW5kaXZpZHVhbC94c2VydmVyL2luZGV4Lmh0bWwKQEAgLTAsMCArMSw2MDkgQEAKKzwhRE9DVFlQRSBIVE1MIFBVQkxJQyAiLS8vVzNDLy9EVEQgSFRNTCAzLjIgRmluYWwvL0VOIj4KKzxodG1sPgorIDxoZWFkPgorICA8dGl0bGU+SW5kZXggb2YgL3JlbGVhc2VzL2luZGl2aWR1YWwveHNlcnZlcjwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9yZWxlYXNlcy9pbmRpdmlkdWFsL3hzZXJ2ZXI8L2gxPgorICA8dGFibGU+CisgICA8dHI+PHRoIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JsYW5rLmdpZiIgYWx0PSJbSUNPXSI+PC90aD48dGg+PGEgaHJlZj0iP0M9TjtPPUQiPk5hbWU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9TTtPPUEiPkxhc3QgbW9kaWZpZWQ8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9UztPPUEiPlNpemU8L2E+PC90aD48dGg+PGEgaHJlZj0iP0M9RDtPPUEiPkRlc2NyaXB0aW9uPC9hPjwvdGg+PC90cj4KKyAgIDx0cj48dGggY29sc3Bhbj0iNSI+PGhyPjwvdGg+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvYmFjay5naWYiIGFsdD0iW1BBUkVOVERJUl0iPjwvdGQ+PHRkPjxhIGhyZWY9Ii9yZWxlYXNlcy9pbmRpdmlkdWFsLyI+UGFyZW50IERpcmVjdG9yeTwvYT48L3RkPjx0ZD4mbmJzcDs8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiAgLSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjAuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0wMS0xOCAyMzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4wLjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjAuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTAxLTE4IDIzOjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjAuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0wMy0yMCAxNDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4wLjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjAuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTAzLTIwIDE0OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuOTkuMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjAuOTkuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0wNC0wMiAwMDo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4wLjk5LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjAuOTkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA0LTAyIDAwOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuOTkuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMC45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDQtMDcgMjI6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMC45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjAuOTkuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMDQtMDcgMjI6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMC45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4wLjk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0wNC0yOCAyMzoxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4wLjk5LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMC45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0wNC0yOCAyMzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4wLjk5LjkwMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjAuOTkuOTAzLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA1LTEyIDIwOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjAuOTkuOTAzLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4wLjk5LjkwMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA1LTEyIDIwOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEuMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEuMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0wNS0yMiAyMzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xLjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA1LTIyIDIzOjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0wNy0wOCAwMDo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xLjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTA3LTA4IDAwOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEuOTkuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMS45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMTAtMTMgMjM6MDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMS45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEuOTkuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDYtMTAtMTMgMjM6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMS45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xLjk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0xMS0xMyAyMjowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xLjk5LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMS45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0xMS0xMyAyMjowNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xLjk5LjkwMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEuOTkuOTAzLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTEyLTAyIDAwOjE0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEuOTkuOTAzLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xLjk5LjkwMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTEyLTAyIDAwOjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjIuMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wMS0yMyAwNjoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yLjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjIuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTAxLTIzIDA2OjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuOTkuMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjIuOTkuMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNi0xMS0wMiAwMzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yLjk5LjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjIuOTkuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA2LTExLTAyIDAzOjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuOTkuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMi45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDMtMDUgMDU6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMi45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjIuOTkuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDMtMDUgMDU6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMi45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yLjk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wMy0xNCAxOTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yLjk5LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMi45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wMy0xNCAxOTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yLjk5LjkwMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjIuOTkuOTAzLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTAzLTI3IDA1OjAxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuOTkuOTAzLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4yLjk5LjkwMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTAzLTI3IDA1OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIuOTkuOTA0LnRhci5iejIiPnhvcmctc2VydmVyLTEuMi45OS45MDQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDQtMDYgMDY6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMi45OS45MDQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjIuOTkuOTA0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDQtMDYgMDY6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMi45OS45MDUudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4yLjk5LjkwNS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wNC0wNiAwNzowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yLjk5LjkwNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMi45OS45MDUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wNC0wNiAwNjo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4zLjAuMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjMuMC4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTA0LTIwIDAyOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjMuMC4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4zLjAuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTA0LTIwIDAyOjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjMuOTkuMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjMuOTkuMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wOC0wMSAwNTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4zLjk5LjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjMuOTkuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTA4LTAxIDA1OjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjMuOTkuMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjMuOTkuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wOS0wMSAwMzoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4zLjk5LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjMuOTkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTA5LTAxIDAzOjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuMC45MC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjQuMC45MC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0xMi0xMiAyMDo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40LjAuOTAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjQuMC45MC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA3LTEyLTEyIDIwOjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjQuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wNi0xMCAxNTo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40LjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjQuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA2LTEwIDE1OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjQuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wNi0xMSAxNTowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjQuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA2LTExIDE1OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuOTkuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuNC45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMDYgMDU6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjQuOTkuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDMtMDYgMDU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS40Ljk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wNS0yMiAxOToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40Ljk5LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNC45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wNS0yMiAxOToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40Ljk5LjkwNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjQuOTkuOTA0LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA2LTMwIDE1OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuOTkuOTA0LnRhci5neiI+eG9yZy1zZXJ2ZXItMS40Ljk5LjkwNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA2LTMwIDE1OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjQuOTkuOTA1LnRhci5iejIiPnhvcmctc2VydmVyLTEuNC45OS45MDUudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDYtMzAgMjA6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC45OS45MDUudGFyLmd6Ij54b3JnLXNlcnZlci0xLjQuOTkuOTA1LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDYtMzAgMjA6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNC45OS45MDYudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS40Ljk5LjkwNi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wNy0yMyAxODo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40Ljk5LjkwNi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNC45OS45MDYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wNy0yMyAxODo1NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40LnRhci5iejIiPnhvcmctc2VydmVyLTEuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwNy0wOS0wNiAwOToyMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS40LnRhci5neiI+eG9yZy1zZXJ2ZXItMS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDctMDktMDYgMDk6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuNS4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA5LTAzIDIzOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjUuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuNS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDktMDMgMjM6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuNS4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA5LTIzIDE5OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjUuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMDktMjMgMTk6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuNS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTEwLTEwIDE5OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjUuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTAtMTAgMTk6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuNS4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTExLTA1IDIwOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjUuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuNS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTEtMDUgMjA6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuNS45OS4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTExLTI2IDA3OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjUuOTkuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNS45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTEtMjYgMDc6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuNS45OS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTEyLTAzIDA4OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjUuOTkuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNS45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTItMDMgMDg6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuNS45OS4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTEyLTEwIDA2OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjUuOTkuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuNS45OS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDgtMTItMTAgMDY6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wMS0xMiAyMToxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNS45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wMS0xMiAyMToxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS41Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjUuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTAxLTMxIDA1OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjUuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS41Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTAxLTMxIDA1OjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjUuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuNS45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDItMTggMDY6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNS45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjUuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDItMTggMDY6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuNi4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTAyLTI1IDIwOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuNi4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDItMjUgMjA6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4xLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuMS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDUtMDkgMDU6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4xLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNi4xLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA1LTA5IDA1OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuMS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS42LjEuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA2LTI5IDIzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuMS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuMS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wNi0yOSAyMzowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS42LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDQtMTQgMjA6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS42LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wNC0xNCAyMDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjIuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuNi4yLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wNy0yNiAyMTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjIuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS42LjIuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDctMjYgMjE6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuNi4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA3LTA3IDIzOjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNi4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDctMDcgMjM6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4zLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuMy45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDgtMjYgMDU6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi4zLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNi4zLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA4LTI2IDA1OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wOC0wMSAwNjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA4LTAxIDA2OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuNC45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS42LjQuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTAzIDA3OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuNC45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuNC45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMC0wMyAwNzo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS42LjQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMjggMDI6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi40LnRhci5neiI+eG9yZy1zZXJ2ZXItMS42LjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wOS0yOCAwMjo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42LjUudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS42LjUudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTAtMTIgMDU6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi41LnRhci5neiI+eG9yZy1zZXJ2ZXItMS42LjUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMC0xMiAwNToyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42Ljk5LjkwMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuOTkuOTAwLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA5LTA0IDA3OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuOTkuOTAwLnRhci5neiI+eG9yZy1zZXJ2ZXItMS42Ljk5LjkwMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA5LTA0IDA3OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuOTkuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuNi45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMTQgMTA6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjYuOTkuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMDktMTQgMTA6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNi45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS42Ljk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wOS0yMiAwNDo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42Ljk5LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNi45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0wOS0yMiAwNDo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS42Ljk5LjkwMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjYuOTkuOTAzLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA5LTI4IDExOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjYuOTkuOTAzLnRhci5neiI+eG9yZy1zZXJ2ZXItMS42Ljk5LjkwMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA5LTI4IDExOjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMC45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjAuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTEyIDA0OjQwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMC45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuMC45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMC0xMiAwNDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjAuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy4wLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMC0xOSAwMjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjAuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjAuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTAtMTkgMDI6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTAyIDA2OjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTAtMDIgMDY6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4xLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuMS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMDYgMDU6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4xLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy4xLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTA2IDA1OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjEuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTIwIDA1OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuMS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0yMCAwNTo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTAtMjMgMDU6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMC0yMyAwNTozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTEtMjcgMDU6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMS0yNyAwNTo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjMuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy4zLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMi0xMSAwNjo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjMuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjMuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTItMTEgMDY6NDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4zLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuMy45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMDktMTItMjYgMDE6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy4zLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy4zLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEyLTI2IDAxOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMi0wMyAwMzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEyLTAzIDAzOjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNC45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjQuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAxLTIzIDAwOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNC45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuNC45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMS0yMyAwMDoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjQuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy40LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0wNSAwODozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjQuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjQuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDItMDUgMDg6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy40LnRhci5iejIiPnhvcmctc2VydmVyLTEuNy40LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAxLTA4IDAxOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDEtMDggMDE6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy41LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuNS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDMtMDUgMDA6MjYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy41LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy41LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAzLTA1IDAwOjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjUuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAzLTEyIDA3OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuNS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMy0xMiAwNzowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjUudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43LjUudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDItMTYgMDM6NTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy41LnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMi0xNiAwMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjYuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy42LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0xMiAwMjoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjYuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS43LjYuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMTIgMDI6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy42LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuNi45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMjEgMDA6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy42LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy42LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTIxIDAwOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuNi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMy0xNyAwMTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjYudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTAzLTE3IDAxOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuNy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuNy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNS0wNCAwNzo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43LjcudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuNy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA1LTA0IDA3OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuOTkuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuOTkuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMC0yMSAxNjoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43Ljk5LjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEwLTIxIDE2OjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuOTkuMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjcuOTkuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOS0xMi0yMCAwMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43Ljk5LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuOTkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTEyLTIwIDAzOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjcuOTkuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuNy45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDItMTIgMjI6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjcuOTkuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDItMTIgMjE6NTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuNy45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS43Ljk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMy0yMiAwNTo0MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS43Ljk5LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuNy45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wMy0yMiAwNTo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44LjAuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuOC4wLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0yNyAwNTowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44LjAuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS44LjAuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDQtMjcgMDU6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC4wLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjguMC45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDUtMDQgMDA6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC4wLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuOC4wLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA1LTA0IDAwOjM2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjguMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNC0wMiAwNzozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44LjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjguMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA0LTAyIDA3OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44LjEuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTAyIDAwOjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjguMS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0wMiAwMDowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44LjEuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuOC4xLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0yMSAwMjowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44LjEuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS44LjEuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjEgMDI6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuOC4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA1LTExIDIxOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuOC4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDUtMTEgMjE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuOC4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA3LTAxIDA1OjI5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuOC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDctMDEgMDU6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0xNSAyMToxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuOC45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNi0xNSAyMToxOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjguOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTIyIDE5OjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS44Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA2LTIyIDE5OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuOC45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjIgMTk6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjguOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDYtMjIgMTk6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC45OS45MDQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS44Ljk5LjkwNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNy0wMSAxMzo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44Ljk5LjkwNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuOC45OS45MDQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wNy0wMSAxMzozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS44Ljk5LjkwNS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjguOTkuOTA1LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA3LTE0IDE5OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguOTkuOTA1LnRhci5neiI+eG9yZy1zZXJ2ZXItMS44Ljk5LjkwNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTA3LTE0IDE5OjU4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjguOTkuOTA2LnRhci5iejIiPnhvcmctc2VydmVyLTEuOC45OS45MDYudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDgtMTMgMDY6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOC45OS45MDYudGFyLmd6Ij54b3JnLXNlcnZlci0xLjguOTkuOTA2LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDgtMTMgMDY6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4wLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuMC45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTAtMDEgMjE6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4wLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS4wLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTEwLTAxIDIxOjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMC45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS45LjAuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTEwLTE1IDE4OjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMC45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuMC45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMC0xNSAxODozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS45LjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMDgtMjEgMDA6NDYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0wOC0yMSAwMDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS45LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTAtMjQgMDM6MjIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMC0yNCAwMzoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjIuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuOS4yLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMS0xNCAwMDoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjIuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45LjIuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTEtMTQgMDA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4yLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuMi45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTItMDQgMTk6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4yLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS4yLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTEyLTA0IDE5OjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMC0xMC0zMSAyMzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTEwLTMxIDIzOjE1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMy45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS45LjMuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAxLTA4IDIxOjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMy45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuMy45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMS0wOCAyMTozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjMuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuOS4zLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMS0zMSAwMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjMuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45LjMuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDEtMzEgMDE6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuOS4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTEyLTEzIDIwOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTItMTMgMjA6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS40LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuNC45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDMtMDQgMjM6MjEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS40LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS40LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAzLTA0IDIzOjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0wNCAyMDowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTA0IDIwOjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuNS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuNS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMy0xNyAyMTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45LjUudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAzLTE3IDIxOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuOTkuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuOS45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTItMDcgMDQ6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjkuOTkuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTAtMTItMDcgMDQ6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuOS45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS45Ljk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xOCAyMjo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45Ljk5LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuOS45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0xOCAyMjo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS45Ljk5LjkwMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjkuOTkuOTAzLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTI1IDA2OjQ2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjkuOTkuOTAzLnRhci5neiI+eG9yZy1zZXJ2ZXItMS45Ljk5LjkwMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTAyLTI1IDA2OjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjAuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTAuMC45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDMtMjkgMDc6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMC45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjAuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDMtMjkgMDc6MzYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMC45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC4wLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNC0wOCAyMzo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4wLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuMC45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNC0wOCAyMzo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTAuMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wMi0yNiAwNTo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDItMjYgMDU6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC4xLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0wNiAyMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4xLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuMS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0wNiAyMjo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4xLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjEuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTIxIDA2OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjEuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC4xLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTIxIDA2OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA0LTE2IDAxOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNC0xNiAwMToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4yLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjIuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA2LTE3IDE3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjIuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC4yLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA2LTE3IDE3OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjIuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTAuMi45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDIgMDM6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMi45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjIuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDIgMDM6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDUtMjkgMDA6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDAwOjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjMuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTAuMy45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMjkgMTg6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMy45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjMuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMjkgMTg6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuMy45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC4zLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOC0xMiAyMjozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4zLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuMy45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOC0xMiAyMjozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTAuMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNy0wOCAyMDowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDctMDggMjA6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEwLjQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDgtMTkgMDc6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTAuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTE5IDA3OjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjYudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC42LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAyLTExIDAxOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEwLjYudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEwLjYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMi0xMSAwMToxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDYtMDEgMTg6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNi0wMSAxODozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMC45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMC45OS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDgtMDQgMDQ6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTAuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMC45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOC0wNCAwNDowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOC0yNyAwMTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMDgtMjcgMDE6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS4xLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0xNCAyMzo0MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4xLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTEuMS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0xNCAyMzo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4xLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjExLjEuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTI5IDAxOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjEuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS4xLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTI5IDAxOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTI0IDA3OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjExLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOS0yNCAwNzoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4yLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjExLjIuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTExLTI4IDA4OjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjIuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS4yLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTExLTI4IDA4OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjIuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuMi45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMDkgMjE6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMi45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjExLjIuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMDkgMjE6MTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjExLjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTEtMDQgMTc6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTEuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTExLTA0IDE3OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjMuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuMy45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDEtMDcgMDc6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMy45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjExLjMuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDEtMDcgMDc6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuMy45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS4zLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0yMSAwODoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4zLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTEuMy45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMS0yMSAwODoyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0xNyAwMjowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMTcgMDI6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjExLjQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDEtMjggMDU6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NC43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTEuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAxLTI4IDA1OjIwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjYuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjk5LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMS45OS4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTExLTIwIDIzOjA1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjk5LjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjExLjk5LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMS0yMCAyMzowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS45OS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuOTkuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMi0xOCAwMTozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMS45OS4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMS45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMTggMDE6MjkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuOTkuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuOTkuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEyLTI3IDIyOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTEuOTkuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTEtMTItMjcgMjI6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuOTkuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAxLTI4IDA2OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjk5LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTEuOTkuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDEtMjggMDY6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ni42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTEuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTEuOTkuOTAzLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAyLTExIDAzOjE4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjExLjk5LjkwMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTEuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDItMTEgMDM6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMC45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi4wLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMy0zMSAwMzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4wLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuMC45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMy0zMSAwMzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4wLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEyLjAuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTEwIDAyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjAuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi4wLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTEwIDAyOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTA1IDA1OjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEyLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMy0wNSAwNToxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4xLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEyLjEuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA1LTA3IDA3OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi4xLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA1LTA3IDA3OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjEuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuMS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDUtMjAgMDU6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEyLjEuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDUtMjAgMDU6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEyLjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDQtMTMgMjI6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA0LTEzIDIyOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjIuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuMi45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDYtMTUgMDM6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEyLjIuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDYtMTUgMDM6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMi45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi4yLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNy0wMiAwMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4yLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuMi45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNy0wMiAwMDozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNS0yOSAyMDoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDUtMjkgMjA6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuMy45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi4zLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wMyAxNzoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4zLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuMy45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0wMyAxNzoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi4zLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEyLjMuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTE5IDE2OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjMuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi4zLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTE5IDE2OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMi4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTA5IDAxOjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEyLjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNy0wOSAwMToyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi40LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOC0yNyAwNToxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMi40LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMi40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMjcgMDU6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuOTkuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTEwIDA4OjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuOTkuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMTAgMDg6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTE3IDIyOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjk5LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuOTkuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMTcgMjI6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTAzLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuOTkuOTAzLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTI2IDA1OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjk5LjkwMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuOTkuOTAzLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDctMjYgMDU6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTA0LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuOTkuOTA0LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTA4IDAwOjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjk5LjkwNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuOTkuOTA0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMDggMDA6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTIuOTkuOTA1LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTIuOTkuOTA1LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA4LTIxIDIxOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEyLjk5LjkwNS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTIuOTkuOTA1LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMDgtMjEgMjE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMC45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMy4wLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yMyAwNToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4wLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTMuMC45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0yMyAwNTowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4wLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjAuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTA3IDA2OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjAuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMy4wLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTA3IDA2OjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMy4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA5LTA1IDIxOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEzLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wOS0wNSAyMTo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4xLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjEuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAxLTA0IDA2OjUxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjEuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMy4xLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAxLTA0IDA2OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMy4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE0IDIxOjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjEudGFyLmJ6Mi5vbGQiPnhvcmctc2VydmVyLTEuMTMuMS50YXIuYnoyLm9sZDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMTQgMDQ6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTMuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE0IDIxOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjEudGFyLmd6Lm9sZCI+eG9yZy1zZXJ2ZXItMS4xMy4xLnRhci5nei5vbGQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE0IDA0OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjIuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTMuMi45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDItMTYgMDc6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMi45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEzLjIuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDItMTYgMDc6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMi45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMy4yLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0wMSAwNzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4yLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTMuMi45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0wMSAwNzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTMuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMS0yNSAwNjowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMy4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDEtMjUgMDY6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjEzLjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMDggMDY6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTMuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTAzLTA4IDA2OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMy40LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE3IDA2OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjEzLjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjEzLjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xNyAwNTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMy45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTItMTItMTkgMjA6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMy45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMi0xOSAyMDo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xMy45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xMy45OS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDItMTQgMDU6NDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTMuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xMy45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMi0xNCAwNTo0MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wMy0wNiAwNjozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDMtMDYgMDY6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC4xLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0zMSAwNjowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4xLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuMS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0zMSAwNjowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4xLjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjEuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTEzIDIyOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjEuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC4xLjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTEzIDIyOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE3IDA3OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xNyAwNzozNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4yLXJjMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjItcmMxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTMxIDA0OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjItcmMxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC4yLXJjMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTMxIDA0OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjIuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuMi45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMjYgMDU6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMi45MDEudGFyLmJ6Mi5vbGQiPnhvcmctc2VydmVyLTEuMTQuMi45MDEudGFyLmJ6Mi5vbGQ8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTI2IDA0OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjIuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC4yLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA3LTI2IDA1OjQ3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjIuOTAxLnRhci5nei5vbGQiPnhvcmctc2VydmVyLTEuMTQuMi45MDEudGFyLmd6Lm9sZDwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDctMjYgMDQ6MjcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMi45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC4yLjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0yMiAyMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4yLjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuMi45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOC0yMiAyMzo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0yNSAxNTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMDYtMjUgMTU6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuMy1yYzEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC4zLXJjMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0yNiAwNDoyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4zLXJjMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuMy1yYzEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNy0yNiAwNDoyMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC4zLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjMuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTI2IDE5OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjMuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC4zLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTI2IDE5OjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA5LTEzIDAzOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wOS0xMyAwMzoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC40LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjQuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTIyIDA1OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjQuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC40LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTIyIDA1OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC40LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTAxIDA1OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wMSAwNTozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC41LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjUuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTIyIDA1OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjUuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC41LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTIyIDA1OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjUudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC41LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEyLTEzIDAzOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0LjUudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0LjUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMi0xMyAwMzo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC42LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuNi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xNCAwMjo0OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC42LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC42LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMTQgMDI6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0LjcudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMDYgMDQ6MjAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuNy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuNy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTA2IDA0OjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNC45OS4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTI0IDE3OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0Ljk5LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0yNCAxNzoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC45OS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTQuOTkuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMC0wNSAwMDowMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC45OS4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNC45OS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMDUgMDA6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0Ljk5LjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTAtMTkgMDA6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTQuOTkuMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTQuOTkuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEwLTE5IDAwOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0wMSAwODo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0Ljk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTAxIDA4OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0Ljk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0xNCAwMTozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTE0IDAxOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0Ljk5LjkwMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMS0yNCAwNjozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC45OS45MDMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0Ljk5LjkwMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTExLTI0IDA2OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0Ljk5LjkwNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMi0xMSAxNTo1NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC45OS45MDQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0Ljk5LjkwNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEyLTExIDE1OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE0Ljk5LjkwNS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE0Ljk5LjkwNS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0xMi0xOSAyMjozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNC45OS45MDUudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE0Ljk5LjkwNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEyLTE5IDIyOjM1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1LjAuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTUuMC45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjIgMDY6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4yTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuMC45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE1LjAuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDMtMjIgMDY6MDQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE1LjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTMtMTItMjcgMTg6MDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS4zTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTUuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTEyLTI3IDE4OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNS4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA0LTE0IDAzOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1LjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE1LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0xNCAwMzoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTUuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0yNyAwMTozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS4yLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE1LjIudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA2LTI3IDAxOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE1LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE1LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0yNyAwMToyOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS4yLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTUuMi50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0yNyAwMTozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNS45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDItMjQgMjE6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS40TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNS45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0yNCAyMTo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNS45OS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDQtMDggMjE6MzIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNS45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNC0wOCAyMTozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNS45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDYtMDUgMDU6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuOTkuOTAzLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNS45OS45MDMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNi0wNSAwNTo0MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNS45OS45MDQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDctMDcgMjM6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuOTkuOTA0LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE1Ljk5LjkwNC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDctMDcgMjM6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTM2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTUuOTkuOTA0LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNS45OS45MDQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNy0wNyAyMzozNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNS45OS45MDQudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNS45OS45MDQudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDctMDcgMjM6MzUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTM2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMC45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNi4wLjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xNSAyMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4wLjkwMS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi4wLjkwMS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTUgMjE6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMC45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE2LjAuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMTUgMjE6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMC45MDEudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi4wLjkwMS50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wOS0xNSAyMTozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTYuMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNy0xNyAwNzowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4wLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE2LjAudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA3LTE3IDA3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE2LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNy0xNyAwNzowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4wLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTYuMC50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wNy0xNyAwNzowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MzYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4xLjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE2LjEuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTAyIDEwOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjEuOTAxLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE2LjEuOTAxLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0wMiAxMDo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4xLjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTYuMS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0wMiAxMDo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4xLjkwMS50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE2LjEuOTAxLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTAyIDEwOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNi4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTIxIDA5OjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjEudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTYuMS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMDktMjEgMDk6MTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTYuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTIxIDA5OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjEudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi4xLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTA5LTIxIDA5OjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjIuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTYuMi45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMjA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMi45MDEudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTYuMi45MDEudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDIwOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjIuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNi4yLjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTA5IDIwOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2LjIuOTAxLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTYuMi45MDEudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMDkgMjA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE2LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMTAgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMi50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi4yLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0xMCAxNTo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNi4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMTAgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMi50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE2LjIudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTEtMTAgMTU6NTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE2LjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMjAgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMy50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi4zLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0yMCAxMjoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNi4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMjAgMTI6MTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuMy50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE2LjMudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTItMjAgMTI6MTkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE2LjQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTEgMDA6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS41TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuNC50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi40LnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMSAwMDoxNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi40LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNi40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTEgMDA6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuNC50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE2LjQudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDItMTEgMDA6MTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuOTkuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTYuOTkuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEwLTI5IDA0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2Ljk5LjkwMS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xNi45OS45MDEudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEwLTI5IDA0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTYuOTkuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTQtMTAtMjkgMDQ6MzcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTYuOTkuOTAxLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTYuOTkuOTAxLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEwLTI5IDA0OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE2Ljk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMyAxOTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi45OS45MDIudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTYuOTkuOTAyLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMyAxOTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MzYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNi45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE2Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIzIDE5OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE2Ljk5LjkwMi50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE2Ljk5LjkwMi50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMyAxOTowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MzYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTcuMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNCAxNzozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy4wLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE3LjAudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTA0IDE3OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE3LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNCAxNzozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy4wLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTcuMC50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0wNCAxNzozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MzYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTcuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMCAyMjo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy4xLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE3LjEudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEwIDIyOjUzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUzNiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE3LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMCAyMjo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy4xLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTcuMS50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMCAyMjo1MyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MzYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTcuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0xNiAxNjozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy4yLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE3LjIudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA2LTE2IDE2OjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE3LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0xNiAxNjozMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy4yLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTcuMi50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wNi0xNiAxNjozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTcuMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yNiAxNzowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy4zLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE3LjMudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI2IDE3OjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE3LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yNiAxNzowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy4zLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTcuMy50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yNiAxNzowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy40LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTcuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yOCAxNjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy40LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE3LjQudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI4IDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3LjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE3LjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yOCAxNjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy40LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTcuNC50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0yOCAxNjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy45OS45MDEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xNy45OS45MDEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMDIgMDI6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuOTkuOTAxLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE3Ljk5LjkwMS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMDIgMDI6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTM2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuOTkuOTAxLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xNy45OS45MDEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0wMiAwMjozNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij43LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xNy45OS45MDEudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy45OS45MDEudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMDIgMDI6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTM2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuOTkuOTAyLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTcuOTkuOTAyLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI2IDE4OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3Ljk5LjkwMi50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xNy45OS45MDIudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI2IDE4OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE3Ljk5LjkwMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTcuOTkuOTAyLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMjYgMTg6MTMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTcuOTkuOTAyLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTcuOTkuOTAyLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTEwLTI2IDE4OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4LjAudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xOC4wLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTA5IDIxOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4LjAudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTguMC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTEtMDkgMjE6MTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTguMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTA5IDIxOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4LjAudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC4wLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTExLTA5IDIxOjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4LjEudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xOC4xLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTA4IDIzOjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4LjEudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTguMS50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDItMDggMjM6NDEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTguMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTA4IDIzOjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4LjEudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC4xLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAyLTA4IDIzOjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xOC4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTExIDIxOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4LjIudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTguMi50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDMtMTEgMjE6NDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTguMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTExIDIxOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4LjIudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC4yLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTAzLTExIDIxOjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4LjMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xOC4zLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTA0IDE5OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4LjMudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTguMy50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDQtMDQgMTk6NDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguMy50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTguMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTA0IDE5OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjcuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4LjMudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC4zLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA0LTA0IDE5OjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4LjQudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xOC40LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTE5IDE3OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4LjQudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTguNC50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDctMTkgMTc6NDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTguNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTE5IDE3OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4LjQudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC40LnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA3LTE5IDE3OjQyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA3MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4Ljk5LjIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xOC45OS4yLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTE2IDIwOjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4Ljk5LjIudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTguOTkuMi50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDktMTYgMjA6NTUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguOTkuMi50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTguOTkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTE2IDIwOjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4Ljk5LjIudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC45OS4yLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTE2IDIwOjU1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjU0MyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4Ljk5LjkwMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE4Ljk5LjkwMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0xOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC45OS45MDEudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTguOTkuOTAxLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0xOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC45OS45MDEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE4Ljk5LjkwMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE2LTA5LTE5IDE2OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE4Ljk5LjkwMS50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE4Ljk5LjkwMS50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wOS0xOSAxNjoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC45OS45MDIudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xOC45OS45MDIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMjggMTY6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguOTkuOTAyLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE4Ljk5LjkwMi50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMjggMTY6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTguOTkuOTAyLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOC45OS45MDIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMC0yOCAxNjo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOC45OS45MDIudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xOC45OS45MDIudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTAtMjggMTY6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuMC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE5LjAudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMTUgMTc6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuMC50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS4wLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0xMS0xNSAxNzowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41NDMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4wLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOS4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMTUgMTc6MDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuMC50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE5LjAudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMTEtMTUgMTc6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NTQzIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuMS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE5LjEudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTEgMjE6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuMS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS4xLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0xMSAyMToyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4xLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTEgMjE6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuMS50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE5LjEudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTEgMjE6MjUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE5LjIudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDIgMjM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuMi50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS4yLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0wMiAyMzowNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4yLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOS4yLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDIgMjM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Ny45TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuMi50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE5LjIudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMDIgMjM6MDUgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuMy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE5LjMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMTUgMTg6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuMy50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS4zLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMy0xNSAxODoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS4zLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOS4zLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMTUgMTg6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuMy50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE5LjMudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDMtMTUgMTg6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDcyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuNC50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE5LjQudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDQgMjI6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuNC50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS40LnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0wNCAyMjowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS40LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOS40LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDQgMjI6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuNC50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE5LjQudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMDQgMjI6MDAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuNS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE5LjUudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTc6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuNS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS41LnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMC0xMiAxNzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS41LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOS41LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTc6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuNS50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE5LjUudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTAtMTIgMTc6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuNi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE5LjYudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMjAgMjA6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS43TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuNi50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS42LnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0xMi0yMCAyMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS42LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOS42LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMjAgMjA6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4wTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuNi50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE5LjYudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMTItMjAgMjA6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuNy50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE5LjcudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDIgMjM6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuNy50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS43LnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMy0wMiAyMzowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yODcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS43LnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOS43LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDIgMjM6MDIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuNy50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE5LjcudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDMtMDIgMjM6MDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+Mjg3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTAxLnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuOTkuOTAxLnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI4IDE4OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwMS50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDEudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI4IDE4OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA5NSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwMS50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTkuOTkuOTAxLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDItMjggMTg6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTAxLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuOTkuOTAxLnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAyLTI4IDE4OjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA5NSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwMi50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE5Ljk5LjkwMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAyMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDIudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTkuOTkuOTAyLnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAyMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5Ljk5LjkwMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTAzLTI4IDIwOjM5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwMi50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE5Ljk5LjkwMi50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wMy0yOCAyMDozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDMudGFyLmJ6MiI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDMudGFyLmJ6MjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMDIgMTk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTAzLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjE5Ljk5LjkwMy50YXIuYnoyLnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMDIgMTk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTAzLnRhci5neiI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0wMiAxOTo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDMudGFyLmd6LnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDMudGFyLmd6LnNpZzwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMDIgMTk6NTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+NDM4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTA0LnRhci5iejIiPnhvcmctc2VydmVyLTEuMTkuOTkuOTA0LnRhci5iejI8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTEwIDE5OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwNC50YXIuYnoyLnNpZyI+eG9yZy1zZXJ2ZXItMS4xOS45OS45MDQudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTEwIDE5OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwNC50YXIuZ3oiPnhvcmctc2VydmVyLTEuMTkuOTkuOTA0LnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDQtMTAgMTk6NTAgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+OC4xTTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9Inhvcmctc2VydmVyLTEuMTkuOTkuOTA0LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMTkuOTkuOTA0LnRhci5nei5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTEwIDE5OjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwNS50YXIuYnoyIj54b3JnLXNlcnZlci0xLjE5Ljk5LjkwNS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0yNCAyMToxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDUudGFyLmJ6Mi5zaWciPnhvcmctc2VydmVyLTEuMTkuOTkuOTA1LnRhci5iejIuc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0yNCAyMToxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4xOS45OS45MDUudGFyLmd6Ij54b3JnLXNlcnZlci0xLjE5Ljk5LjkwNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA0LTI0IDIxOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjguMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjE5Ljk5LjkwNS50YXIuZ3ouc2lnIj54b3JnLXNlcnZlci0xLjE5Ljk5LjkwNS50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNC0yNCAyMToxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC4wLnRhci5iejIiPnhvcmctc2VydmVyLTEuMjAuMC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xMCAxNjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC4wLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjIwLjAudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTEwIDE2OjM4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjAudGFyLmd6Ij54b3JnLXNlcnZlci0xLjIwLjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xMCAxNjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC4wLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMjAuMC50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNS0xMCAxNjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC4xLnRhci5iejIiPnhvcmctc2VydmVyLTEuMjAuMS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wNyAxNjozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC4xLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjIwLjEudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA4LTA3IDE2OjM3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjEudGFyLmd6Ij54b3JnLXNlcnZlci0xLjIwLjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wNyAxNjozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC4xLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMjAuMS50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wOC0wNyAxNjozNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC4yLnRhci5iejIiPnhvcmctc2VydmVyLTEuMjAuMi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0xNSAxNjowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC4yLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjIwLjIudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTE1IDE2OjAzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjIudGFyLmd6Ij54b3JnLXNlcnZlci0xLjIwLjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0xNSAxNjowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC4yLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMjAuMi50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0xNSAxNjowMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC4zLnRhci5iejIiPnhvcmctc2VydmVyLTEuMjAuMy50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0yNSAxNDoxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC4zLnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjIwLjMudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTEwLTI1IDE0OjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjMudGFyLmd6Ij54b3JnLXNlcnZlci0xLjIwLjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0yNSAxNDoxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC4zLnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMjAuMy50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0xMC0yNSAxNDoxNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC40LnRhci5iejIiPnhvcmctc2VydmVyLTEuMjAuNC50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxOTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC40LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjIwLjQudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTAyLTI2IDE5OjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjQudGFyLmd6Ij54b3JnLXNlcnZlci0xLjIwLjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxOTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC40LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMjAuNC50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wMi0yNiAxOTozMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC41LnRhci5iejIiPnhvcmctc2VydmVyLTEuMjAuNS50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0zMCAxODozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41LjhNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC41LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjIwLjUudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA1LTMwIDE4OjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQzOCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjUudGFyLmd6Ij54b3JnLXNlcnZlci0xLjIwLjUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0zMCAxODozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjJNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC41LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMjAuNS50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wNS0zMCAxODozMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij40MzggPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC42LnRhci5iejIiPnhvcmctc2VydmVyLTEuMjAuNi50YXIuYnoyPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yMiAyMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij42LjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC42LnRhci5iejIuc2lnIj54b3JnLXNlcnZlci0xLjIwLjYudGFyLmJ6Mi5zaWc8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTExLTIyIDIzOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIxNSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJ4b3JnLXNlcnZlci0xLjIwLjYudGFyLmd6Ij54b3JnLXNlcnZlci0xLjIwLjYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yMiAyMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij44LjNNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0ieG9yZy1zZXJ2ZXItMS4yMC42LnRhci5nei5zaWciPnhvcmctc2VydmVyLTEuMjAuNi50YXIuZ3ouc2lnPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0xMS0yMiAyMzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMTUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorICAgPHRyPjx0aCBjb2xzcGFuPSI1Ij48aHI+PC90aD48L3RyPgorPC90YWJsZT4KKzxhZGRyZXNzPkFwYWNoZS8yLjQuMzggKERlYmlhbikgU2VydmVyIGF0IHd3dy54Lm9yZyBQb3J0IDQ0MzwvYWRkcmVzcz4KKzwvYm9keT48L2h0bWw+CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3NvZnR3YXJlL3B1bHNlYXVkaW8vcmVsZWFzZXMvaW5kZXguaHRtbCBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gtdGVzdGRhdGEvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy9pbmRleC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmMmQyM2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLXRlc3RkYXRhL3NvZnR3YXJlL3B1bHNlYXVkaW8vcmVsZWFzZXMvaW5kZXguaHRtbApAQCAtMCwwICsxLDM4MyBAQAorPCFET0NUWVBFIEhUTUwgUFVCTElDICItLy9XM0MvL0RURCBIVE1MIDMuMiBGaW5hbC8vRU4iPgorPGh0bWw+CisgPGhlYWQ+CisgIDx0aXRsZT5JbmRleCBvZiAvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlczwvdGl0bGU+CisgPC9oZWFkPgorIDxib2R5PgorPGgxPkluZGV4IG9mIC9zb2Z0d2FyZS9wdWxzZWF1ZGlvL3JlbGVhc2VzPC9oMT4KKyAgPHRhYmxlPgorICAgPHRyPjx0aCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9ibGFuay5naWYiIGFsdD0iW0lDT10iPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU47Tz1EIj5OYW1lPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPU07Tz1BIj5MYXN0IG1vZGlmaWVkPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPVM7Tz1BIj5TaXplPC9hPjwvdGg+PHRoPjxhIGhyZWY9Ij9DPUQ7Tz1BIj5EZXNjcmlwdGlvbjwvYT48L3RoPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2JhY2suZ2lmIiBhbHQ9IltQQVJFTlRESVJdIj48L3RkPjx0ZD48YSBocmVmPSIvc29mdHdhcmUvcHVsc2VhdWRpby8iPlBhcmVudCBEaXJlY3Rvcnk8L2E+PC90ZD48dGQ+Jm5ic3A7PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9mb2xkZXIuZ2lmIiBhbHQ9IltESVJdIj48L3RkPjx0ZD48YSBocmVmPSJiYWQvIj5iYWQvPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0yNiAxNzo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gIC0gPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjEudGFyLmd6Ij5wb2x5cGF1ZGlvLTAuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjM4N0s8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMS50YXIuZ3oubWQ1Ij5wb2x5cGF1ZGlvLTAuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjEudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjIudGFyLmd6Ij5wb2x5cGF1ZGlvLTAuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQ2MEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMi50YXIuZ3oubWQ1Ij5wb2x5cGF1ZGlvLTAuMi50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjIudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC4yLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjMudGFyLmd6Ij5wb2x5cGF1ZGlvLTAuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQ3MEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuMy50YXIuZ3oubWQ1Ij5wb2x5cGF1ZGlvLTAuMy50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjMudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC4zLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjQudGFyLmd6Ij5wb2x5cGF1ZGlvLTAuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQ4Nks8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNC50YXIuZ3oubWQ1Ij5wb2x5cGF1ZGlvLTAuNC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjQudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC40LnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjUuMS50YXIuZ3oiPnBvbHlwYXVkaW8tMC41LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wMy0yOCAyMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij41MjRLPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjUuMS50YXIuZ3oubWQ1Ij5wb2x5cGF1ZGlvLTAuNS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNS4xLnRhci5nei5zaGExIj5wb2x5cGF1ZGlvLTAuNS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjUudGFyLmd6Ij5wb2x5cGF1ZGlvLTAuNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjUxOEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNS50YXIuZ3oubWQ1Ij5wb2x5cGF1ZGlvLTAuNS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjUudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC41LnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjYudGFyLmd6Ij5wb2x5cGF1ZGlvLTAuNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjQ0OEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNi50YXIuZ3oubWQ1Ij5wb2x5cGF1ZGlvLTAuNi50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjYudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC42LnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjcudGFyLmd6Ij5wb2x5cGF1ZGlvLTAuNy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjkyNEs8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuNy50YXIuZ3oubWQ1Ij5wb2x5cGF1ZGlvLTAuNy50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjcudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC43LnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjguMS50YXIuZ3oiPnBvbHlwYXVkaW8tMC44LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wMy0yOCAyMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjguMS50YXIuZ3oubWQ1Ij5wb2x5cGF1ZGlvLTAuOC4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOC4xLnRhci5nei5zaGExIj5wb2x5cGF1ZGlvLTAuOC4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjgudGFyLmd6Ij5wb2x5cGF1ZGlvLTAuOC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTI4IDIxOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOC50YXIuZ3oubWQ1Ij5wb2x5cGF1ZGlvLTAuOC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjgudGFyLmd6LnNoYTEiPnBvbHlwYXVkaW8tMC44LnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjkuMC50YXIuZ3oiPnBvbHlwYXVkaW8tMC45LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wMy0yOCAyMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjkuMC50YXIuZ3oubWQ1Ij5wb2x5cGF1ZGlvLTAuOS4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOS4wLnRhci5nei5zaGExIj5wb2x5cGF1ZGlvLTAuOS4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjkuMS50YXIuZ3oiPnBvbHlwYXVkaW8tMC45LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wMy0yOCAyMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icG9seXBhdWRpby0wLjkuMS50YXIuZ3oubWQ1Ij5wb2x5cGF1ZGlvLTAuOS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwb2x5cGF1ZGlvLTAuOS4xLnRhci5nei5zaGExIj5wb2x5cGF1ZGlvLTAuOS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMi50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wMy0yOCAyMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMi50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS4yLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yLnRhci5nei5zaGExIj5wdWxzZWF1ZGlvLTAuOS4yLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMy50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjMudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wMy0yOCAyMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMy50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS4zLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4zLnRhci5nei5zaGExIj5wdWxzZWF1ZGlvLTAuOS4zLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuNC50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjQudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wMy0yOCAyMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuNC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS40LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS40LnRhci5nei5zaGExIj5wdWxzZWF1ZGlvLTAuOS40LnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuNS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjUudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wMy0yOCAyMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuNS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS41LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS41LnRhci5nei5zaGExIj5wdWxzZWF1ZGlvLTAuOS41LnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuNi50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjYudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wMy0yOCAyMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjFNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuNi50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS42LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS42LnRhci5nei5zaGExIj5wdWxzZWF1ZGlvLTAuOS42LnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuNy50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjcudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wMy0yOCAyMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuNy50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS43LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS43LnRhci5nei5zaGExIj5wdWxzZWF1ZGlvLTAuOS43LnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuOC50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjgudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wMy0yOCAyMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuOC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS44LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS44LnRhci5nei5zaGExIj5wdWxzZWF1ZGlvLTAuOS44LnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuOS50YXIuZ3oiPnB1bHNlYXVkaW8tMC45LjkudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAwOC0wMy0yOCAyMToxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjBNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuOS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS45LnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA1LTI5IDExOjI4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1OCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS45LnRhci5nei5zaGExIj5wdWxzZWF1ZGlvLTAuOS45LnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTAudGFyLmd6Ij5wdWxzZWF1ZGlvLTAuOS4xMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTAzLTMwIDE2OjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS4xMC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTAudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjEwLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTEudGFyLmd6Ij5wdWxzZWF1ZGlvLTAuOS4xMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA3LTI0IDEyOjQxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS4xMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjExLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTIudGFyLmd6Ij5wdWxzZWF1ZGlvLTAuOS4xMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTA5LTA5IDAwOjE3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMi50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS4xMi50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTIudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjEyLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTMudGFyLmd6Ij5wdWxzZWF1ZGlvLTAuOS4xMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA4LTEwLTA2IDAxOjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xMy50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS4xMy50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTMudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjEzLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTQudGFyLmd6Ij5wdWxzZWF1ZGlvLTAuOS4xNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTAxLTEyIDIzOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS4xNC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTQudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjE0LnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTUudGFyLmd6Ij5wdWxzZWF1ZGlvLTAuOS4xNS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA0LTEzIDIzOjI0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS4xNS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTUudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjE1LnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTYtdGVzdDEudGFyLmd6Ij5wdWxzZWF1ZGlvLTAuOS4xNi10ZXN0MS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA2LTIzIDE3OjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNi10ZXN0MS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS4xNi10ZXN0MS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjUgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTYtdGVzdDEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjE2LXRlc3QxLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNzMgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTYudGFyLmd6Ij5wdWxzZWF1ZGlvLTAuOS4xNi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA5LTEwIDAwOjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNi50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS4xNi50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTYudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjE2LnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTcudGFyLmd6Ij5wdWxzZWF1ZGlvLTAuOS4xNy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA5LTExIDAxOjMyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xNy50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS4xNy50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTcudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjE3LnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTgudGFyLmd6Ij5wdWxzZWF1ZGlvLTAuOS4xOC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA5LTE5IDAwOjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xOC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS4xOC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTgudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjE4LnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTkudGFyLmd6Ij5wdWxzZWF1ZGlvLTAuOS4xOS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTA5LTMwIDAxOjMwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuOU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4xOS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS4xOS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMTkudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjE5LnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMjAudGFyLmd6Ij5wdWxzZWF1ZGlvLTAuOS4yMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTExIDA1OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS4yMC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMjAudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjIwLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTAuOS4yMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDA5LTExLTIzIDA0OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS4yMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjIxLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMjIudGFyLmd6Ij5wdWxzZWF1ZGlvLTAuOS4yMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEwLTExLTI2IDAxOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMi50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS4yMi50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMjIudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjIyLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNS0yOSAxMToyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMjMudGFyLmd6Ij5wdWxzZWF1ZGlvLTAuOS4yMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA2LTIzIDIxOjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuME08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOS4yMy50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOS4yMy50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNi0yMyAyMToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjkuMjMudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45LjIzLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wNi0yMyAyMToxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjk5LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTAuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTAyIDIxOjU5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOTkuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOC0wMiAyMTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjk5LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOC0wMiAyMTo1OSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjk5LjIudGFyLmd6Ij5wdWxzZWF1ZGlvLTAuOTkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTE2IDEwOjE5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMi50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOTkuMi50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOC0xNiAxMDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjk5LjIudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45OS4yLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOC0xNiAxMDoxOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjk5LjMudGFyLmd6Ij5wdWxzZWF1ZGlvLTAuOTkuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA4LTI5IDE3OjExICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuMy50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOTkuMy50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOC0yOSAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjk5LjMudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45OS4zLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOC0yOSAxNzoxMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjk5LjQudGFyLmd6Ij5wdWxzZWF1ZGlvLTAuOTkuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTE1IDExOjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTAuOTkuNC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTAuOTkuNC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOS0xNSAxMTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0wLjk5LjQudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMC45OS40LnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOS0xNSAxMTowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xLjAudGFyLmd6Ij5wdWxzZWF1ZGlvLTEuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTI3IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTEuMC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOS0yNyAwODo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xLjAudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMS4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOS0yNyAwODo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xLjAudGFyLnh6Ij5wdWxzZWF1ZGlvLTEuMC50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTA5LTI3IDA4OjU0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTEuMC50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOS0yNyAwODo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xLjAudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tMS4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0wOS0yNyAwODo1NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xLjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTEuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTIwIDEzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTEuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0yMCAxMzoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xLjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0yMCAxMzoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xLjEudGFyLnh6Ij5wdWxzZWF1ZGlvLTEuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDExLTEwLTIwIDEzOjI1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTEuMS50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0yMCAxMzoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xLjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tMS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMS0xMC0yMCAxMzoyNSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xLjk5LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTEuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTE1IDEyOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTEuOTkuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMy0xNSAxMjo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xLjk5LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMS45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMy0xNSAxMjo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xLjk5LjEudGFyLnh6Ij5wdWxzZWF1ZGlvLTEuOTkuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTAzLTE1IDEyOjUwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEuOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTEuOTkuMS50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMy0xNSAxMjo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xLjk5LjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tMS45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wMy0xNSAxMjo1MCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjAudGFyLmd6Ij5wdWxzZWF1ZGlvLTIuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA1LTExIDEzOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTIuMC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNS0xMSAxMzo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjAudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMi4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNS0xMSAxMzo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjAudGFyLnh6Ij5wdWxzZWF1ZGlvLTIuMC50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA1LTExIDEzOjQ4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTIuMC50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNS0xMSAxMzo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjAudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tMi4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNS0xMSAxMzo0OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTIuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTE5IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuMk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTIuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNy0xOSAxMjowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMi4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNy0xOSAxMjowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjEudGFyLnh6Ij5wdWxzZWF1ZGlvLTIuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTA3LTE5IDEyOjA5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTIuMS50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNy0xOSAxMjowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tMi4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0wNy0xOSAxMjowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjk5LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTIuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTAzIDExOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTIuOTkuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wMyAxMTo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjk5LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMi45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wMyAxMTo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjk5LjEudGFyLnh6Ij5wdWxzZWF1ZGlvLTIuOTkuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTAzIDExOjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTIuOTkuMS50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wMyAxMTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjk5LjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tMi45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0wMyAxMTo0NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjk5LjIudGFyLmd6Ij5wdWxzZWF1ZGlvLTIuOTkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTE3IDA4OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMi50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTIuOTkuMi50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0xNyAwODoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjk5LjIudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMi45OS4yLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0xNyAwODoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjk5LjIudGFyLnh6Ij5wdWxzZWF1ZGlvLTIuOTkuMi50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTExLTE3IDA4OjIxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMi50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTIuOTkuMi50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0xNyAwODoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjk5LjIudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tMi45OS4yLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMS0xNyAwODoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjk5LjMudGFyLmd6Ij5wdWxzZWF1ZGlvLTIuOTkuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTA3IDA0OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMy50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTIuOTkuMy50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMi0wNyAwNDowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjk5LjMudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMi45OS4zLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMi0wNyAwNDowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjk5LjMudGFyLnh6Ij5wdWxzZWF1ZGlvLTIuOTkuMy50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTA3IDA0OjA3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTIuOTkuMy50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTIuOTkuMy50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMi0wNyAwNDowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0yLjk5LjMudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tMi45OS4zLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMi0wNyAwNDowNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0zLjAudGFyLmd6Ij5wdWxzZWF1ZGlvLTMuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE4IDA3OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTMuMC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMi0xOCAwNzoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0zLjAudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMy4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMi0xOCAwNzoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0zLjAudGFyLnh6Ij5wdWxzZWF1ZGlvLTMuMC50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEyLTEyLTE4IDA3OjIyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTMuMC50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMi0xOCAwNzoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0zLjAudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tMy4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMi0xMi0xOCAwNzoyMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0zLjk5LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTMuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE2IDA0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTMuOTkuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xNiAwNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0zLjk5LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMy45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xNiAwNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0zLjk5LjEudGFyLnh6Ij5wdWxzZWF1ZGlvLTMuOTkuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA0LTE2IDA0OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTMuOTkuMS50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xNiAwNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0zLjk5LjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tMy45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNC0xNiAwNDoxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0zLjk5LjIudGFyLmd6Ij5wdWxzZWF1ZGlvLTMuOTkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTIzIDAzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMi50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTMuOTkuMi50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0yMyAwMzoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0zLjk5LjIudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMy45OS4yLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0yMyAwMzoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0zLjk5LjIudGFyLnh6Ij5wdWxzZWF1ZGlvLTMuOTkuMi50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA1LTIzIDAzOjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTMuOTkuMi50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTMuOTkuMi50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0yMyAwMzoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0zLjk5LjIudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tMy45OS4yLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNS0yMyAwMzoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby00LjAudGFyLmd6Ij5wdWxzZWF1ZGlvLTQuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTAzIDE4OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTQuMC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wMyAxODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby00LjAudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNC4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wMyAxODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby00LjAudGFyLnh6Ij5wdWxzZWF1ZGlvLTQuMC50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDEzLTA2LTAzIDE4OjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuM008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTQuMC50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wMyAxODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby00LjAudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNC4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxMy0wNi0wMyAxODo1MiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby00Ljk5LjIudGFyLmd6Ij5wdWxzZWF1ZGlvLTQuOTkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTIzIDE5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMi50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTQuOTkuMi50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0yMyAxOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby00Ljk5LjIudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNC45OS4yLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0yMyAxOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby00Ljk5LjIudGFyLnh6Ij5wdWxzZWF1ZGlvLTQuOTkuMi50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTIzIDE5OjEwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMi50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTQuOTkuMi50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0yMyAxOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby00Ljk5LjIudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNC45OS4yLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0yMyAxOToxMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby00Ljk5LjMudGFyLmd6Ij5wdWxzZWF1ZGlvLTQuOTkuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTI5IDIwOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMy50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTQuOTkuMy50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0yOSAyMDoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby00Ljk5LjMudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNC45OS4zLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0yOSAyMDoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby00Ljk5LjMudGFyLnh6Ij5wdWxzZWF1ZGlvLTQuOTkuMy50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAxLTI5IDIwOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuMy50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTQuOTkuMy50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0yOSAyMDoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby00Ljk5LjMudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNC45OS4zLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMS0yOSAyMDoxNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby00Ljk5LjQudGFyLmd6Ij5wdWxzZWF1ZGlvLTQuOTkuNC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTE1IDA2OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuNC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTQuOTkuNC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0xNSAwNjowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby00Ljk5LjQudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNC45OS40LnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0xNSAwNjowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby00Ljk5LjQudGFyLnh6Ij5wdWxzZWF1ZGlvLTQuOTkuNC50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAyLTE1IDA2OjA0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTQuOTkuNC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTQuOTkuNC50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0xNSAwNjowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby00Ljk5LjQudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNC45OS40LnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMi0xNSAwNjowNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby01LjAudGFyLmd6Ij5wdWxzZWF1ZGlvLTUuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTAzIDE1OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTUuMC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0wMyAxNTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby01LjAudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNS4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0wMyAxNTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby01LjAudGFyLnh6Ij5wdWxzZWF1ZGlvLTUuMC50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTAzLTAzIDE1OjAwICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTUuMC50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0wMyAxNTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby01LjAudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNS4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0wMy0wMyAxNTowMCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby01Ljk5LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTUuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTIxIDE0OjI2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTUuOTkuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0yMSAxNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby01Ljk5LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNS45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0yMSAxNDoyNiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby01Ljk5LjEudGFyLnh6Ij5wdWxzZWF1ZGlvLTUuOTkuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTExLTIxIDE0OjI3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTUuOTkuMS50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0yMSAxNDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby01Ljk5LjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNS45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMS0yMSAxNDoyNyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby01Ljk5LjIudGFyLmd6Ij5wdWxzZWF1ZGlvLTUuOTkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE5IDEzOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMi50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTUuOTkuMi50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xOSAxMzowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby01Ljk5LjIudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNS45OS4yLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xOSAxMzowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby01Ljk5LjIudGFyLnh6Ij5wdWxzZWF1ZGlvLTUuOTkuMi50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE0LTEyLTE5IDEzOjA4ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMi50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTUuOTkuMi50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xOSAxMzowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby01Ljk5LjIudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNS45OS4yLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNC0xMi0xOSAxMzowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby01Ljk5LjMudGFyLmd6Ij5wdWxzZWF1ZGlvLTUuOTkuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIxIDE0OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMy50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTUuOTkuMy50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMSAxNDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby01Ljk5LjMudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNS45OS4zLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMSAxNDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby01Ljk5LjMudGFyLnh6Ij5wdWxzZWF1ZGlvLTUuOTkuMy50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAxLTIxIDE0OjQ1ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTUuOTkuMy50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTUuOTkuMy50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMSAxNDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby01Ljk5LjMudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNS45OS4zLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMS0yMSAxNDo0NSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby02LjAudGFyLmd6Ij5wdWxzZWF1ZGlvLTYuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuMC50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTYuMC50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxOTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby02LjAudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNi4wLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxOTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby02LjAudGFyLnh6Ij5wdWxzZWF1ZGlvLTYuMC50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTAyLTEyIDE5OjAyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTYuMC50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxOTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby02LjAudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNi4wLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wMi0xMiAxOTowMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby02Ljk5LjEudGFyLmd6Ij5wdWxzZWF1ZGlvLTYuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTI3IDE3OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMS50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTYuOTkuMS50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0yNyAxNzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby02Ljk5LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNi45OS4xLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0yNyAxNzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby02Ljk5LjEudGFyLnh6Ij5wdWxzZWF1ZGlvLTYuOTkuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA4LTI3IDE3OjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMS50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTYuOTkuMS50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0yNyAxNzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby02Ljk5LjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNi45OS4xLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOC0yNyAxNzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby02Ljk5LjIudGFyLmd6Ij5wdWxzZWF1ZGlvLTYuOTkuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTEyIDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMi50YXIuZ3oubWQ1Ij5wdWxzZWF1ZGlvLTYuOTkuMi50YXIuZ3oubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xMiAxMzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby02Ljk5LjIudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tNi45OS4yLnRhci5nei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xMiAxMzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby02Ljk5LjIudGFyLnh6Ij5wdWxzZWF1ZGlvLTYuOTkuMi50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTEyIDEzOjU2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTYuOTkuMi50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTYuOTkuMi50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xMiAxMzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby02Ljk5LjIudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tNi45OS4yLnRhci54ei5zaGExPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0xMiAxMzo1NiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjcgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjAudGFyLmd6Ij5wdWxzZWF1ZGlvLTcuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTI0IDAzOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMC50YXIuZ3oubWQ1c3VtIj5wdWxzZWF1ZGlvLTcuMC50YXIuZ3oubWQ1c3VtPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0yNCAwMzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjAudGFyLmd6LnNoYTFzdW0iPnB1bHNlYXVkaW8tNy4wLnRhci5nei5zaGExc3VtPC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0yNCAwMzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNjQgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjAudGFyLnh6Ij5wdWxzZWF1ZGlvLTcuMC50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE1LTA5LTI0IDAzOjMxICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTcuMC50YXIueHoubWQ1Ij5wdWxzZWF1ZGlvLTcuMC50YXIueHoubWQ1PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0wOS0yNCAwMzozMSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gNTYgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjAudGFyLnh6Lm1kNXN1bSI+cHVsc2VhdWRpby03LjAudGFyLnh6Lm1kNXN1bTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMjQgMDM6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy4wLnRhci54ei5zaGExIj5wdWxzZWF1ZGlvLTcuMC50YXIueHouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMjQgMDM6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY0IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy4wLnRhci54ei5zaGExc3VtIj5wdWxzZWF1ZGlvLTcuMC50YXIueHouc2hhMXN1bTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMDktMjQgMDM6MzEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY0IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy4xLnRhci5neiI+cHVsc2VhdWRpby03LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0zMCAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjEudGFyLmd6Lm1kNSI+cHVsc2VhdWRpby03LjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMzAgMTI6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy4xLnRhci5nei5zaGExIj5wdWxzZWF1ZGlvLTcuMS50YXIuZ3ouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMzAgMTI6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY0IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy4xLnRhci54eiI+cHVsc2VhdWRpby03LjEudGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMC0zMCAxMjo1MSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03LjEudGFyLnh6Lm1kNSI+cHVsc2VhdWRpby03LjEudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMzAgMTI6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy4xLnRhci54ei5zaGExIj5wdWxzZWF1ZGlvLTcuMS50YXIueHouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTAtMzAgMTI6NTEgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY0IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy45OS4xLnRhci5neiI+cHVsc2VhdWRpby03Ljk5LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0yOCAxMjozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjEudGFyLmd6Lm1kNSI+cHVsc2VhdWRpby03Ljk5LjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMjggMTI6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy45OS4xLnRhci5nei5zaGExIj5wdWxzZWF1ZGlvLTcuOTkuMS50YXIuZ3ouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMjggMTI6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy45OS4xLnRhci54eiI+cHVsc2VhdWRpby03Ljk5LjEudGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNS0xMi0yOCAxMjozOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjEudGFyLnh6Lm1kNSI+cHVsc2VhdWRpby03Ljk5LjEudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMjggMTI6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy45OS4xLnRhci54ei5zaGExIj5wdWxzZWF1ZGlvLTcuOTkuMS50YXIueHouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTUtMTItMjggMTI6MzkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy45OS4yLnRhci5neiI+cHVsc2VhdWRpby03Ljk5LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xMiAwMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjIudGFyLmd6Lm1kNSI+cHVsc2VhdWRpby03Ljk5LjIudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTIgMDM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy45OS4yLnRhci5nei5zaGExIj5wdWxzZWF1ZGlvLTcuOTkuMi50YXIuZ3ouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTIgMDM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy45OS4yLnRhci54eiI+cHVsc2VhdWRpby03Ljk5LjIudGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0xMiAwMzoyOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby03Ljk5LjIudGFyLnh6Lm1kNSI+cHVsc2VhdWRpby03Ljk5LjIudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTIgMDM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tNy45OS4yLnRhci54ei5zaGExIj5wdWxzZWF1ZGlvLTcuOTkuMi50YXIueHouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMTIgMDM6MjggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOC4wLnRhci5neiI+cHVsc2VhdWRpby04LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yMiAwNzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04LjAudGFyLmd6Lm1kNSI+cHVsc2VhdWRpby04LjAudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjIgMDc6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOC4wLnRhci5nei5zaGExIj5wdWxzZWF1ZGlvLTguMC50YXIuZ3ouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjIgMDc6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY0IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOC4wLnRhci54eiI+cHVsc2VhdWRpby04LjAudGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wMS0yMiAwNzozOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjRNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04LjAudGFyLnh6Lm1kNSI+cHVsc2VhdWRpby04LjAudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjIgMDc6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOC4wLnRhci54ei5zaGExIj5wdWxzZWF1ZGlvLTguMC50YXIueHouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDEtMjIgMDc6MzggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY0IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOC45OS4xLnRhci5neiI+cHVsc2VhdWRpby04Ljk5LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0xMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjEudGFyLmd6Lm1kNSI+cHVsc2VhdWRpby04Ljk5LjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDUtMTIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOC45OS4xLnRhci5nei5zaGExIj5wdWxzZWF1ZGlvLTguOTkuMS50YXIuZ3ouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDUtMTIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOC45OS4xLnRhci54eiI+cHVsc2VhdWRpby04Ljk5LjEudGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0xMiAxMDo1OCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjEudGFyLnh6Lm1kNSI+cHVsc2VhdWRpby04Ljk5LjEudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDUtMTIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOC45OS4xLnRhci54ei5zaGExIj5wdWxzZWF1ZGlvLTguOTkuMS50YXIueHouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDUtMTIgMTA6NTggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOC45OS4yLnRhci5neiI+cHVsc2VhdWRpby04Ljk5LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0yOSAwNjowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjIudGFyLmd6Lm1kNSI+cHVsc2VhdWRpby04Ljk5LjIudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDUtMjkgMDY6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOC45OS4yLnRhci5nei5zaGExIj5wdWxzZWF1ZGlvLTguOTkuMi50YXIuZ3ouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDUtMjkgMDY6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOC45OS4yLnRhci54eiI+cHVsc2VhdWRpby04Ljk5LjIudGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNS0yOSAwNjowOCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby04Ljk5LjIudGFyLnh6Lm1kNSI+cHVsc2VhdWRpby04Ljk5LjIudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDUtMjkgMDY6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOC45OS4yLnRhci54ei5zaGExIj5wdWxzZWF1ZGlvLTguOTkuMi50YXIueHouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDUtMjkgMDY6MDggIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOS4wLnRhci5neiI+cHVsc2VhdWRpby05LjAudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAwNzowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05LjAudGFyLmd6Lm1kNSI+cHVsc2VhdWRpby05LjAudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMDc6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOS4wLnRhci5nei5zaGExIj5wdWxzZWF1ZGlvLTkuMC50YXIuZ3ouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMDc6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY0IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOS4wLnRhci54eiI+cHVsc2VhdWRpby05LjAudGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNi0wNi0yMiAwNzowOSAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05LjAudGFyLnh6Lm1kNSI+cHVsc2VhdWRpby05LjAudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMDc6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU2IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOS4wLnRhci54ei5zaGExIj5wdWxzZWF1ZGlvLTkuMC50YXIueHouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTYtMDYtMjIgMDc6MDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY0IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOS45OS4xLnRhci5neiI+cHVsc2VhdWRpby05Ljk5LjEudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0wMyAxNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yLjdNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05Ljk5LjEudGFyLmd6Lm1kNSI+cHVsc2VhdWRpby05Ljk5LjEudGFyLmd6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMDMgMTY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOS45OS4xLnRhci5nei5zaGExIj5wdWxzZWF1ZGlvLTkuOTkuMS50YXIuZ3ouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMDMgMTY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOS45OS4xLnRhci54eiI+cHVsc2VhdWRpby05Ljk5LjEudGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxNy0wMS0wMyAxNjoxNCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjVNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby05Ljk5LjEudGFyLnh6Lm1kNSI+cHVsc2VhdWRpby05Ljk5LjEudGFyLnh6Lm1kNTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMDMgMTY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDU5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tOS45OS4xLnRhci54ei5zaGExIj5wdWxzZWF1ZGlvLTkuOTkuMS50YXIueHouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMDMgMTY6MTQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY3IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuMC50YXIuZ3oiPnB1bHNlYXVkaW8tMTAuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTE5IDAwOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuN008L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEwLjAudGFyLmd6Lm1kNSI+cHVsc2VhdWRpby0xMC4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTE5IDAwOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEwLjAudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMTAuMC50YXIuZ3ouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTkgMDA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuMC50YXIueHoiPnB1bHNlYXVkaW8tMTAuMC50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTE5IDAwOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNU08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEwLjAudGFyLnh6Lm1kNSI+cHVsc2VhdWRpby0xMC4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTAxLTE5IDAwOjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEwLjAudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tMTAuMC50YXIueHouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDEtMTkgMDA6MTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMTAuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTI0IDIzOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEwLjk5LjEudGFyLmd6Lm1kNSI+cHVsc2VhdWRpby0xMC45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTI0IDIzOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEwLjk5LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMTAuOTkuMS50YXIuZ3ouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMjQgMjM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTAuOTkuMS50YXIueHoiPnB1bHNlYXVkaW8tMTAuOTkuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTI0IDIzOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEwLjk5LjEudGFyLnh6Lm1kNSI+cHVsc2VhdWRpby0xMC45OS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA3LTI0IDIzOjUyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEwLjk5LjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tMTAuOTkuMS50YXIueHouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDctMjQgMjM6NTIgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMC50YXIuZ3oiPnB1bHNlYXVkaW8tMTEuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTA1IDA5OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTExLjAudGFyLmd6Lm1kNSI+cHVsc2VhdWRpby0xMS4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTA1IDA5OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTExLjAudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMTEuMC50YXIuZ3ouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDUgMDk6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMC50YXIueHoiPnB1bHNlYXVkaW8tMTEuMC50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTA1IDA5OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTExLjAudGFyLnh6Lm1kNSI+cHVsc2VhdWRpby0xMS4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTA1IDA5OjQ5ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTExLjAudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tMTEuMC50YXIueHouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMDUgMDk6NDkgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMTEuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTE4IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTExLjEudGFyLmd6Lm1kNSI+cHVsc2VhdWRpby0xMS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTE4IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTExLjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMTEuMS50YXIuZ3ouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMTggMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuMS50YXIueHoiPnB1bHNlYXVkaW8tMTEuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTE4IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTExLjEudGFyLnh6Lm1kNSI+cHVsc2VhdWRpby0xMS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE3LTA5LTE4IDE1OjIzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTExLjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tMTEuMS50YXIueHouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTctMDktMTggMTU6MjMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuOTkuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMTEuOTkuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTEzIDA2OjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTExLjk5LjEudGFyLmd6Lm1kNSI+cHVsc2VhdWRpby0xMS45OS4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTEzIDA2OjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTExLjk5LjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMTEuOTkuMS50YXIuZ3ouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTMgMDY6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTEuOTkuMS50YXIueHoiPnB1bHNlYXVkaW8tMTEuOTkuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTEzIDA2OjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTExLjk5LjEudGFyLnh6Lm1kNSI+cHVsc2VhdWRpby0xMS45OS4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA1LTEzIDA2OjU3ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA2MCA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTExLjk5LjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tMTEuOTkuMS50YXIueHouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDUtMTMgMDY6NTcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY4IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMC50YXIuZ3oiPnB1bHNlYXVkaW8tMTIuMC50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTIwIDIwOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjAudGFyLmd6Lm1kNSI+cHVsc2VhdWRpby0xMi4wLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTIwIDIwOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjAudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMTIuMC50YXIuZ3ouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjAgMjA6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMC50YXIueHoiPnB1bHNlYXVkaW8tMTIuMC50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTIwIDIwOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjAudGFyLnh6Lm1kNSI+cHVsc2VhdWRpby0xMi4wLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA2LTIwIDIwOjMzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjAudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tMTIuMC50YXIueHouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDYtMjAgMjA6MzMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMS50YXIuZ3oiPnB1bHNlYXVkaW8tMTIuMS50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE0IDE2OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjEudGFyLmd6Lm1kNSI+cHVsc2VhdWRpby0xMi4xLnRhci5nei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE0IDE2OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjEudGFyLmd6LnNoYTEiPnB1bHNlYXVkaW8tMTIuMS50YXIuZ3ouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTQgMTY6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMS50YXIueHoiPnB1bHNlYXVkaW8tMTIuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE0IDE2OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjEudGFyLnh6Lm1kNSI+cHVsc2VhdWRpby0xMi4xLnRhci54ei5tZDU8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE0IDE2OjQzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA1NyA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjEudGFyLnh6LnNoYTEiPnB1bHNlYXVkaW8tMTIuMS50YXIueHouc2hhMTwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTgtMDctMTQgMTY6NDMgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDY1IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuMi50YXIuZ3oiPnB1bHNlYXVkaW8tMTIuMi50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE2IDE2OjEyICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjIudGFyLmd6LnNoYTI1NiI+cHVsc2VhdWRpby0xMi4yLnRhci5nei5zaGEyNTY8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE4LTA3LTE2IDE2OjEzICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA4OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjIudGFyLnh6Ij5wdWxzZWF1ZGlvLTEyLjIudGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNiAxNjoxMiAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi4yLnRhci54ei5zaGEyNTYiPnB1bHNlYXVkaW8tMTIuMi50YXIueHouc2hhMjU2PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOC0wNy0xNiAxNjoxMyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gODkgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi45OS4xLnRhci5neiI+cHVsc2VhdWRpby0xMi45OS4xLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMDkgMDM6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+My42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuOTkuMS50YXIuZ3ouc2hhMjU2Ij5wdWxzZWF1ZGlvLTEyLjk5LjEudGFyLmd6LnNoYTI1NjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDctMDkgMDM6MTYgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDkyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuOTkuMS50YXIueHoiPnB1bHNlYXVkaW8tMTIuOTkuMS50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTA5IDAzOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjk5LjEudGFyLnh6LnNoYTI1NiI+cHVsc2VhdWRpby0xMi45OS4xLnRhci54ei5zaGEyNTY8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA3LTA5IDAzOjE2ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA5MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL2NvbXByZXNzZWQuZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjk5LjIudGFyLmd6Ij5wdWxzZWF1ZGlvLTEyLjk5LjIudGFyLmd6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOC0wNiAxNzo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4zLjZNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi45OS4yLnRhci5nei5zaGEyNTYiPnB1bHNlYXVkaW8tMTIuOTkuMi50YXIuZ3ouc2hhMjU2PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOC0wNiAxNzo0NyAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gOTIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi45OS4yLnRhci54eiI+cHVsc2VhdWRpby0xMi45OS4yLnRhci54ejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDYgMTc6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MS44TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuOTkuMi50YXIueHouc2hhMjU2Ij5wdWxzZWF1ZGlvLTEyLjk5LjIudGFyLnh6LnNoYTI1NjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDgtMDYgMTc6NDcgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDkyIDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvY29tcHJlc3NlZC5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTIuOTkuMy50YXIuZ3oiPnB1bHNlYXVkaW8tMTIuOTkuMy50YXIuZ3o8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTAxIDA3OjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjMuNk08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjk5LjMudGFyLmd6LnNoYTI1NiI+cHVsc2VhdWRpby0xMi45OS4zLnRhci5nei5zaGEyNTY8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTAxIDA3OjQ0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA5MiA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEyLjk5LjMudGFyLnh6Ij5wdWxzZWF1ZGlvLTEyLjk5LjMudGFyLnh6PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOS0wMSAwNzo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4xLjlNPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy91bmtub3duLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMi45OS4zLnRhci54ei5zaGEyNTYiPnB1bHNlYXVkaW8tMTIuOTkuMy50YXIueHouc2hhMjU2PC9hPjwvdGQ+PHRkIGFsaWduPSJyaWdodCI+MjAxOS0wOS0wMSAwNzo0NCAgPC90ZD48dGQgYWxpZ249InJpZ2h0Ij4gOTIgPC90ZD48dGQ+Jm5ic3A7PC90ZD48L3RyPgorPHRyPjx0ZCB2YWxpZ249InRvcCI+PGltZyBzcmM9Ii9pY29ucy9jb21wcmVzc2VkLmdpZiIgYWx0PSJbICAgXSI+PC90ZD48dGQ+PGEgaHJlZj0icHVsc2VhdWRpby0xMy4wLnRhci5neiI+cHVsc2VhdWRpby0xMy4wLnRhci5nejwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMTMgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+My42TTwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTMuMC50YXIuZ3ouc2hhMjU2Ij5wdWxzZWF1ZGlvLTEzLjAudGFyLmd6LnNoYTI1NjwvYT48L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjIwMTktMDktMTMgMTM6MzQgIDwvdGQ+PHRkIGFsaWduPSJyaWdodCI+IDg5IDwvdGQ+PHRkPiZuYnNwOzwvdGQ+PC90cj4KKzx0cj48dGQgdmFsaWduPSJ0b3AiPjxpbWcgc3JjPSIvaWNvbnMvdW5rbm93bi5naWYiIGFsdD0iWyAgIF0iPjwvdGQ+PHRkPjxhIGhyZWY9InB1bHNlYXVkaW8tMTMuMC50YXIueHoiPnB1bHNlYXVkaW8tMTMuMC50YXIueHo8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTEzIDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPjEuOE08L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+Cis8dHI+PHRkIHZhbGlnbj0idG9wIj48aW1nIHNyYz0iL2ljb25zL3Vua25vd24uZ2lmIiBhbHQ9IlsgICBdIj48L3RkPjx0ZD48YSBocmVmPSJwdWxzZWF1ZGlvLTEzLjAudGFyLnh6LnNoYTI1NiI+cHVsc2VhdWRpby0xMy4wLnRhci54ei5zaGEyNTY8L2E+PC90ZD48dGQgYWxpZ249InJpZ2h0Ij4yMDE5LTA5LTEzIDEzOjM0ICA8L3RkPjx0ZCBhbGlnbj0icmlnaHQiPiA4OSA8L3RkPjx0ZD4mbmJzcDs8L3RkPjwvdHI+CisgICA8dHI+PHRoIGNvbHNwYW49IjUiPjxocj48L3RoPjwvdHI+Cis8L3RhYmxlPgorPGFkZHJlc3M+QXBhY2hlLzIuNC4zOCAoRGViaWFuKSBTZXJ2ZXIgYXQgZnJlZWRlc2t0b3Aub3JnIFBvcnQgNDQzPC9hZGRyZXNzPgorPC9ib2R5PjwvaHRtbD4KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL2ZldGNoLnB5CmluZGV4IDgzZmFkM2YuLmQwYzE2MWEgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvZmV0Y2gucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9mZXRjaC5weQpAQCAtOSwxMiArOSwxMiBAQAogaW1wb3J0IHVuaXR0ZXN0CiBpbXBvcnQgaGFzaGxpYgogaW1wb3J0IHRlbXBmaWxlCi1pbXBvcnQgc3VicHJvY2VzcwogaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgb3MKIGZyb20gYmIuZmV0Y2gyIGltcG9ydCBVUkkKIGZyb20gYmIuZmV0Y2gyIGltcG9ydCBGZXRjaE1ldGhvZAogaW1wb3J0IGJiCitmcm9tIGJiLnRlc3RzLnN1cHBvcnQuaHR0cHNlcnZlciBpbXBvcnQgSFRUUFNlcnZpY2UKIAogZGVmIHNraXBJZk5vTmV0d29yaygpOgogICAgIGlmIG9zLmVudmlyb24uZ2V0KCJCQl9TS0lQX05FVFRFU1RTIikgPT0gInllcyI6CkBAIC0xMTgwLDI3ICsxMTgwLDQ2IEBACiAgICAgfQogCiAgICAgdGVzdF93Z2V0X3VyaXMgPSB7CisgICAgICAgICMKICAgICAgICAgIyBwYWNrYWdlcyB3aXRoIHZlcnNpb25zIGluc2lkZSBkaXJlY3RvcnkgbmFtZQotICAgICAgICAoInV0aWwtbGludXgiLCAiaHR0cDovL2tlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL3V0aWwtbGludXgvdjIuMjMvdXRpbC1saW51eC0yLjI0LjIudGFyLmJ6MiIsICIiLCAiIikKKyAgICAgICAgIworICAgICAgICAjIGh0dHA6Ly9rZXJuZWwub3JnL3B1Yi9saW51eC91dGlscy91dGlsLWxpbnV4L3YyLjIzL3V0aWwtbGludXgtMi4yNC4yLnRhci5iejIKKyAgICAgICAgKCJ1dGlsLWxpbnV4IiwgIi9wdWIvbGludXgvdXRpbHMvdXRpbC1saW51eC92Mi4yMy91dGlsLWxpbnV4LTIuMjQuMi50YXIuYnoyIiwgIiIsICIiKQogICAgICAgICAgICAgOiAiMi4yNC4yIiwKLSAgICAgICAgKCJlbmNoYW50IiwgImh0dHA6Ly93d3cuYWJpc291cmNlLmNvbS9kb3dubG9hZHMvZW5jaGFudC8xLjYuMC9lbmNoYW50LTEuNi4wLnRhci5neiIsICIiLCAiIikKKyAgICAgICAgIyBodHRwOi8vd3d3LmFiaXNvdXJjZS5jb20vZG93bmxvYWRzL2VuY2hhbnQvMS42LjAvZW5jaGFudC0xLjYuMC50YXIuZ3oKKyAgICAgICAgKCJlbmNoYW50IiwgIi9kb3dubG9hZHMvZW5jaGFudC8xLjYuMC9lbmNoYW50LTEuNi4wLnRhci5neiIsICIiLCAiIikKICAgICAgICAgICAgIDogIjEuNi4wIiwKLSAgICAgICAgKCJjbWFrZSIsICJodHRwOi8vd3d3LmNtYWtlLm9yZy9maWxlcy92Mi44L2NtYWtlLTIuOC4xMi4xLnRhci5neiIsICIiLCAiIikKKyAgICAgICAgIyBodHRwOi8vd3d3LmNtYWtlLm9yZy9maWxlcy92Mi44L2NtYWtlLTIuOC4xMi4xLnRhci5negorICAgICAgICAoImNtYWtlIiwgIi9maWxlcy92Mi44L2NtYWtlLTIuOC4xMi4xLnRhci5neiIsICIiLCAiIikKICAgICAgICAgICAgIDogIjIuOC4xMi4xIiwKKyAgICAgICAgIwogICAgICAgICAjIHBhY2thZ2VzIHdpdGggdmVyc2lvbnMgb25seSBpbiBjdXJyZW50IGRpcmVjdG9yeQotICAgICAgICAoImVnbGljIiwgImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9lZ2xpYmMvZWdsaWJjLTIuMTgtc3ZucjIzNzg3LnRhci5iejIiLCAiIiwgIiIpCisgICAgICAgICMKKyAgICAgICAgIyBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMvZWdsaWJjL2VnbGliYy0yLjE4LXN2bnIyMzc4Ny50YXIuYnoyCisgICAgICAgICgiZWdsaWMiLCAiL3JlbGVhc2VzL2VnbGliYy9lZ2xpYmMtMi4xOC1zdm5yMjM3ODcudGFyLmJ6MiIsICIiLCAiIikKICAgICAgICAgICAgIDogIjIuMTkiLAotICAgICAgICAoImdudS1jb25maWciLCAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL2dudS1jb25maWcvZ251LWNvbmZpZy0yMDEyMDgxNC50YXIuYnoyIiwgIiIsICIiKQorICAgICAgICAjIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy9nbnUtY29uZmlnL2dudS1jb25maWctMjAxMjA4MTQudGFyLmJ6MgorICAgICAgICAoImdudS1jb25maWciLCAiL3JlbGVhc2VzL2dudS1jb25maWcvZ251LWNvbmZpZy0yMDEyMDgxNC50YXIuYnoyIiwgIiIsICIiKQogICAgICAgICAgICAgOiAiMjAxMjA4MTQiLAorICAgICAgICAjCiAgICAgICAgICMgcGFja2FnZXMgd2l0aCAiOTkiIGluIHRoZSBuYW1lIG9mIHBvc3NpYmxlIHZlcnNpb24KLSAgICAgICAgKCJwdWxzZWF1ZGlvIiwgImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy9wdWxzZWF1ZGlvLTQuMC50YXIueHoiLCAiIiwgIiIpCisgICAgICAgICMKKyAgICAgICAgIyBodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL3B1bHNlYXVkaW8vcmVsZWFzZXMvcHVsc2VhdWRpby00LjAudGFyLnh6CisgICAgICAgICgicHVsc2VhdWRpbyIsICIvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy9wdWxzZWF1ZGlvLTQuMC50YXIueHoiLCAiIiwgIiIpCiAgICAgICAgICAgICA6ICI1LjAiLAotICAgICAgICAoInhzZXJ2ZXIteG9yZyIsICJodHRwOi8veG9yZy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvaW5kaXZpZHVhbC94c2VydmVyL3hvcmctc2VydmVyLTEuMTUuMS50YXIuYnoyIiwgIiIsICIiKQorICAgICAgICAjIGh0dHA6Ly94b3JnLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9pbmRpdmlkdWFsL3hzZXJ2ZXIveG9yZy1zZXJ2ZXItMS4xNS4xLnRhci5iejIKKyAgICAgICAgKCJ4c2VydmVyLXhvcmciLCAiL3JlbGVhc2VzL2luZGl2aWR1YWwveHNlcnZlci94b3JnLXNlcnZlci0xLjE1LjEudGFyLmJ6MiIsICIiLCAiIikKICAgICAgICAgICAgIDogIjEuMTUuMSIsCisgICAgICAgICMKICAgICAgICAgIyBwYWNrYWdlcyB3aXRoIHZhbGlkIFVQU1RSRUFNX0NIRUNLX1VSSSBhbmQgVVBTVFJFQU1fQ0hFQ0tfUkVHRVgKLSAgICAgICAgKCJjdXBzIiwgImh0dHA6Ly93d3cuY3Vwcy5vcmcvc29mdHdhcmUvMS43LjIvY3Vwcy0xLjcuMi1zb3VyY2UudGFyLmJ6MiIsICJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcyIsICIoP1A8bmFtZT5jdXBzXC0pKD9QPHB2ZXI+KChcZCtbXC5cLV9dKikrKSlcLXNvdXJjZVwudGFyXC5neiIpCisgICAgICAgICMKKyAgICAgICAgIyBodHRwOi8vd3d3LmN1cHMub3JnL3NvZnR3YXJlLzEuNy4yL2N1cHMtMS43LjItc291cmNlLnRhci5iejIKKyAgICAgICAgIyBodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcworICAgICAgICAoImN1cHMiLCAiL3NvZnR3YXJlLzEuNy4yL2N1cHMtMS43LjItc291cmNlLnRhci5iejIiLCAiL2FwcGxlL2N1cHMvcmVsZWFzZXMiLCAiKD9QPG5hbWU+Y3Vwc1wtKSg/UDxwdmVyPigoXGQrW1wuXC1fXSopKykpXC1zb3VyY2VcLnRhclwuZ3oiKQogICAgICAgICAgICAgOiAiMi4wLjAiLAotICAgICAgICAoImRiIiwgImh0dHA6Ly9kb3dubG9hZC5vcmFjbGUuY29tL2JlcmtlbGV5LWRiL2RiLTUuMy4yMS50YXIuZ3oiLCAiaHR0cDovL2Z0cC5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vZC9kYjUuMy8iLCAiKD9QPG5hbWU+ZGI1XC4zXykoP1A8cHZlcj5cZCsoXC5cZCspKykuK1wub3JpZ1wudGFyXC54eiIpCisgICAgICAgICMgaHR0cDovL2Rvd25sb2FkLm9yYWNsZS5jb20vYmVya2VsZXktZGIvZGItNS4zLjIxLnRhci5negorICAgICAgICAjIGh0dHA6Ly9mdHAuZGViaWFuLm9yZy9kZWJpYW4vcG9vbC9tYWluL2QvZGI1LjMvCisgICAgICAgICgiZGIiLCAiL2JlcmtlbGV5LWRiL2RiLTUuMy4yMS50YXIuZ3oiLCAiL2RlYmlhbi9wb29sL21haW4vZC9kYjUuMy8iLCAiKD9QPG5hbWU+ZGI1XC4zXykoP1A8cHZlcj5cZCsoXC5cZCspKykuK1wub3JpZ1wudGFyXC54eiIpCiAgICAgICAgICAgICA6ICI1LjMuMTAiLAogICAgIH0KIApAQCAtMTIxNywxOCArMTIzNiwyOCBAQAogICAgICAgICAgICAgciA9IGJiLnV0aWxzLnZlcmNtcF9zdHJpbmcodiwgdmVyc3RyaW5nKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIgPT0gLTEgb3IgciA9PSAwLCBtc2c9IlBhY2thZ2UgJXMsIHZlcnNpb246ICVzIDw9ICVzIiAlIChrWzBdLCB2LCB2ZXJzdHJpbmcpKQogCi0gICAgQHNraXBJZk5vTmV0d29yaygpCiAgICAgZGVmIHRlc3Rfd2dldF9sYXRlc3RfdmVyc2lvbnN0cmluZyhzZWxmKToKLSAgICAgICAgZm9yIGssIHYgaW4gc2VsZi50ZXN0X3dnZXRfdXJpcy5pdGVtcygpOgotICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiUE4iLCBrWzBdKQotICAgICAgICAgICAgc2VsZi5kLnNldFZhcigiVVBTVFJFQU1fQ0hFQ0tfVVJJIiwga1syXSkKLSAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlVQU1RSRUFNX0NIRUNLX1JFR0VYIiwga1szXSkKLSAgICAgICAgICAgIHVkID0gYmIuZmV0Y2gyLkZldGNoRGF0YShrWzFdLCBzZWxmLmQpCi0gICAgICAgICAgICBwdXB2ZXIgPSB1ZC5tZXRob2QubGF0ZXN0X3ZlcnNpb25zdHJpbmcodWQsIHNlbGYuZCkKLSAgICAgICAgICAgIHZlcnN0cmluZyA9IHB1cHZlclswXQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHZlcnN0cmluZywgbXNnPSJDb3VsZCBub3QgZmluZCB1cHN0cmVhbSB2ZXJzaW9uIGZvciAlcyIgJSBrWzBdKQotICAgICAgICAgICAgciA9IGJiLnV0aWxzLnZlcmNtcF9zdHJpbmcodiwgdmVyc3RyaW5nKQotICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIgPT0gLTEgb3IgciA9PSAwLCBtc2c9IlBhY2thZ2UgJXMsIHZlcnNpb246ICVzIDw9ICVzIiAlIChrWzBdLCB2LCB2ZXJzdHJpbmcpKQorICAgICAgICB0ZXN0ZGF0YSA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmFic3BhdGgoX19maWxlX18pKSArICIvZmV0Y2gtdGVzdGRhdGEiCisgICAgICAgIHNlcnZlciA9IEhUVFBTZXJ2aWNlKHRlc3RkYXRhKQorICAgICAgICBzZXJ2ZXIuc3RhcnQoKQorICAgICAgICBwb3J0ID0gc2VydmVyLnBvcnQKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgZm9yIGssIHYgaW4gc2VsZi50ZXN0X3dnZXRfdXJpcy5pdGVtcygpOgorICAgICAgICAgICAgICAgIHNlbGYuZC5zZXRWYXIoIlBOIiwga1swXSkKKyAgICAgICAgICAgICAgICBjaGVja3VyaSA9ICIiCisgICAgICAgICAgICAgICAgaWYga1syXToKKyAgICAgICAgICAgICAgICAgICAgY2hlY2t1cmkgPSAiaHR0cDovL2xvY2FsaG9zdDolcy8iICUgcG9ydCArIGtbMl0KKyAgICAgICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJVUFNUUkVBTV9DSEVDS19VUkkiLCBjaGVja3VyaSkKKyAgICAgICAgICAgICAgICBzZWxmLmQuc2V0VmFyKCJVUFNUUkVBTV9DSEVDS19SRUdFWCIsIGtbM10pCisgICAgICAgICAgICAgICAgdXJsID0gImh0dHA6Ly9sb2NhbGhvc3Q6JXMvIiAlIHBvcnQgKyBrWzFdCisgICAgICAgICAgICAgICAgdWQgPSBiYi5mZXRjaDIuRmV0Y2hEYXRhKHVybCwgc2VsZi5kKQorICAgICAgICAgICAgICAgIHB1cHZlciA9IHVkLm1ldGhvZC5sYXRlc3RfdmVyc2lvbnN0cmluZyh1ZCwgc2VsZi5kKQorICAgICAgICAgICAgICAgIHZlcnN0cmluZyA9IHB1cHZlclswXQorICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh2ZXJzdHJpbmcsIG1zZz0iQ291bGQgbm90IGZpbmQgdXBzdHJlYW0gdmVyc2lvbiBmb3IgJXMiICUga1swXSkKKyAgICAgICAgICAgICAgICByID0gYmIudXRpbHMudmVyY21wX3N0cmluZyh2LCB2ZXJzdHJpbmcpCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHIgPT0gLTEgb3IgciA9PSAwLCBtc2c9IlBhY2thZ2UgJXMsIHZlcnNpb246ICVzIDw9ICVzIiAlIChrWzBdLCB2LCB2ZXJzdHJpbmcpKQorICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgc2VydmVyLnN0b3AoKQogCiAKIGNsYXNzIEZldGNoQ2hlY2tTdGF0dXNUZXN0KEZldGNoZXJUZXN0KToKQEAgLTE2NjIsNiArMTY5MSw0NyBAQAogICAgICAgICAjIFZlcmlmeSB0aGUgc3VibW9kdWxlIGlzIGFsc28gc2hhbGxvdwogICAgICAgICBzZWxmLmFzc2VydFJldkNvdW50KDEsIGN3ZD1vcy5wYXRoLmpvaW4oc2VsZi5naXRkaXIsICdnaXRzdWJtb2R1bGUnKSkKIAorICAgIGRlZiB0ZXN0X3NoYWxsb3dfc3VibW9kdWxlX21pcnJvcnMoc2VsZik6CisgICAgICAgIHNlbGYuYWRkX2VtcHR5X2ZpbGUoJ2EnKQorICAgICAgICBzZWxmLmFkZF9lbXB0eV9maWxlKCdiJykKKworICAgICAgICBzbWRpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdnaXRzdWJtb2R1bGUnKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc21kaXIpCisgICAgICAgIHNlbGYuZ2l0KCdpbml0JywgY3dkPXNtZGlyKQorICAgICAgICAjIE1ha2UgdGhpcyBsb29rIGxpa2UgaXQgd2FzIGNsb25lZCBmcm9tIGEgcmVtb3RlLi4uCisgICAgICAgIHNlbGYuZ2l0KCdjb25maWcgLS1hZGQgcmVtb3RlLm9yaWdpbi51cmwgIiVzIicgJSBzbWRpciwgY3dkPXNtZGlyKQorICAgICAgICBzZWxmLmdpdCgnY29uZmlnIC0tYWRkIHJlbW90ZS5vcmlnaW4uZmV0Y2ggIityZWZzL2hlYWRzLyo6cmVmcy9yZW1vdGVzL29yaWdpbi8qIicsIGN3ZD1zbWRpcikKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYXN1YicsIGN3ZD1zbWRpcikKKyAgICAgICAgc2VsZi5hZGRfZW1wdHlfZmlsZSgnYnN1YicsIGN3ZD1zbWRpcikKKworICAgICAgICBzZWxmLmdpdCgnc3VibW9kdWxlIGluaXQnLCBjd2Q9c2VsZi5zcmNkaXIpCisgICAgICAgIHNlbGYuZ2l0KCdzdWJtb2R1bGUgYWRkIGZpbGU6Ly8lcycgJSBzbWRpciwgY3dkPXNlbGYuc3JjZGlyKQorICAgICAgICBzZWxmLmdpdCgnc3VibW9kdWxlIHVwZGF0ZScsIGN3ZD1zZWxmLnNyY2RpcikKKyAgICAgICAgc2VsZi5naXQoJ2NvbW1pdCAtbSBzdWJtb2R1bGUgLWEnLCBjd2Q9c2VsZi5zcmNkaXIpCisKKyAgICAgICAgdXJpID0gJ2dpdHNtOi8vJXM7cHJvdG9jb2w9ZmlsZTtzdWJkaXI9JHtTfScgJSBzZWxmLnNyY2RpcgorCisgICAgICAgICMgRmV0Y2ggb25jZSB0byBnZW5lcmF0ZSB0aGUgc2hhbGxvdyB0YXJiYWxsCisgICAgICAgIGZldGNoZXIsIHVkID0gc2VsZi5mZXRjaCh1cmkpCisKKyAgICAgICAgIyBTZXQgdXAgdGhlIG1pcnJvcgorICAgICAgICBtaXJyb3JkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnbWlycm9yJykKKyAgICAgICAgb3MucmVuYW1lKHNlbGYuZGxkaXIsIG1pcnJvcmRpcikKKyAgICAgICAgc2VsZi5kLnNldFZhcignUFJFTUlSUk9SUycsICdnaXRzbTovLy4qLy4qIGZpbGU6Ly8lcy9cbicgJSBtaXJyb3JkaXIpCisKKyAgICAgICAgIyBGZXRjaCBmcm9tIHRoZSBtaXJyb3IKKyAgICAgICAgYmIudXRpbHMucmVtb3ZlKHNlbGYuZGxkaXIsIHJlY3Vyc2U9VHJ1ZSkKKyAgICAgICAgYmIudXRpbHMucmVtb3ZlKHNlbGYuZ2l0ZGlyLCByZWN1cnNlPVRydWUpCisgICAgICAgIHNlbGYuZmV0Y2hfYW5kX3VucGFjayh1cmkpCisKKyAgICAgICAgIyBWZXJpZnkgdGhlIG1haW4gcmVwb3NpdG9yeSBpcyBzaGFsbG93CisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMSkKKworICAgICAgICAjIFZlcmlmeSB0aGUgZ2l0c3VibW9kdWxlIGRpcmVjdG9yeSBpcyBwcmVzZW50CisgICAgICAgIGFzc2VydCBvcy5saXN0ZGlyKG9zLnBhdGguam9pbihzZWxmLmdpdGRpciwgJ2dpdHN1Ym1vZHVsZScpKQorCisgICAgICAgICMgVmVyaWZ5IHRoZSBzdWJtb2R1bGUgaXMgYWxzbyBzaGFsbG93CisgICAgICAgIHNlbGYuYXNzZXJ0UmV2Q291bnQoMSwgY3dkPW9zLnBhdGguam9pbihzZWxmLmdpdGRpciwgJ2dpdHN1Ym1vZHVsZScpKQogCiAgICAgaWYgYW55KG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihwLCAnZ2l0LWFubmV4JykpIGZvciBwIGluIG9zLmVudmlyb24uZ2V0KCdQQVRIJykuc3BsaXQoJzonKSk6CiAgICAgICAgIGRlZiB0ZXN0X3NoYWxsb3dfYW5uZXgoc2VsZik6CkBAIC0yMDA4LDMgKzIwNzgsNDM3IEBACiAgICAgICAgIHVkLm1ldGhvZC5fZmluZF9naXRfbGZzID0gbGFtYmRhIGQ6IEZhbHNlCiAgICAgICAgIHNodXRpbC5ybXRyZWUoc2VsZi5naXRkaXIsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKICAgICAgICAgZmV0Y2hlci51bnBhY2soc2VsZi5kLmdldFZhcignV09SS0RJUicpKQorCitjbGFzcyBOUE1UZXN0KEZldGNoZXJUZXN0KToKKyAgICBkZWYgc2tpcElmTm9OcG0oKToKKyAgICAgICAgaW1wb3J0IHNodXRpbAorICAgICAgICBpZiBub3Qgc2h1dGlsLndoaWNoKCducG0nKToKKyAgICAgICAgICAgIHJldHVybiB1bml0dGVzdC5za2lwKCducG0gbm90IGluc3RhbGxlZCwgdGVzdHMgYmVpbmcgc2tpcHBlZCcpCisgICAgICAgIHJldHVybiBsYW1iZGEgZjogZgorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG0oc2VsZik6CisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlO3ZlcnNpb249MS4wLjAnCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorICAgICAgICB1ZCA9IGZldGNoZXIudWRbZmV0Y2hlci51cmxzWzBdXQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGggKyAnLmRvbmUnKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLnJlc29sdmVmaWxlKSkKKyAgICAgICAgZmV0Y2hlci51bnBhY2soc2VsZi51bnBhY2tkaXIpCisgICAgICAgIHVucGFja2RpciA9IG9zLnBhdGguam9pbihzZWxmLnVucGFja2RpciwgJ25wbScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odW5wYWNrZGlyLCAncGFja2FnZS5qc29uJykpKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fYmFkX2NoZWNrc3VtKHNlbGYpOgorICAgICAgICB1cmwgPSAnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9QHNhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZTt2ZXJzaW9uPTEuMC4wJworICAgICAgICAjIEZldGNoIG9uY2UgdG8gZ2V0IGEgdGFyYmFsbAorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goW3VybF0sIHNlbGYuZCkKKyAgICAgICAgdWQgPSBmZXRjaGVyLnVkW2ZldGNoZXIudXJsc1swXV0KKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpKQorICAgICAgICAjIE1vZGlmeSB0aGUgdGFyYmFsbAorICAgICAgICBiYWQgPSBiJ2JhZCBjaGVja3N1bScKKyAgICAgICAgd2l0aCBvcGVuKHVkLmxvY2FscGF0aCwgJ3diJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoYmFkKQorICAgICAgICAjIFZlcmlmeSB0aGF0IHRoZSB0YXJiYWxsIGlzIGZldGNoZWQgYWdhaW4KKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIGJhZHN1bSA9IGhhc2hsaWIuc2hhNTEyKGJhZCkuaGV4ZGlnZXN0KCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCArICdfYmFkLWNoZWNrc3VtXycgKyBiYWRzdW0pKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtX3ByZW1pcnJvcnMoc2VsZik6CisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlO3ZlcnNpb249MS4wLjAnCisgICAgICAgICMgRmV0Y2ggb25jZSB0byBnZXQgYSB0YXJiYWxsCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorICAgICAgICB1ZCA9IGZldGNoZXIudWRbZmV0Y2hlci51cmxzWzBdXQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCisgICAgICAgICMgU2V0dXAgdGhlIG1pcnJvcgorICAgICAgICBtaXJyb3JkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnbWlycm9yJykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG1pcnJvcmRpcikKKyAgICAgICAgb3MucmVwbGFjZSh1ZC5sb2NhbHBhdGgsIG9zLnBhdGguam9pbihtaXJyb3JkaXIsIG9zLnBhdGguYmFzZW5hbWUodWQubG9jYWxwYXRoKSkpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ1BSRU1JUlJPUlMnLCAnaHR0cHM/JDovLy4qLy4qIGZpbGU6Ly8lcy9cbicgJSBtaXJyb3JkaXIpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX0ZFVENIX1BSRU1JUlJPUk9OTFknLCAnMScpCisgICAgICAgICMgRmV0Y2ggYWdhaW4KKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV9taXJyb3JzKHNlbGYpOgorICAgICAgICAjIEZldGNoIG9uY2UgdG8gZ2V0IGEgdGFyYmFsbAorICAgICAgICB1cmwgPSAnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9QHNhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZTt2ZXJzaW9uPTEuMC4wJworICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goW3VybF0sIHNlbGYuZCkKKyAgICAgICAgdWQgPSBmZXRjaGVyLnVkW2ZldGNoZXIudXJsc1swXV0KKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpKQorICAgICAgICAjIFNldHVwIHRoZSBtaXJyb3IKKyAgICAgICAgbWlycm9yZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ21pcnJvcicpCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihtaXJyb3JkaXIpCisgICAgICAgIG9zLnJlcGxhY2UodWQubG9jYWxwYXRoLCBvcy5wYXRoLmpvaW4obWlycm9yZGlyLCBvcy5wYXRoLmJhc2VuYW1lKHVkLmxvY2FscGF0aCkpKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdNSVJST1JTJywgJ2h0dHBzPyQ6Ly8uKi8uKiBmaWxlOi8vJXMvXG4nICUgbWlycm9yZGlyKQorICAgICAgICAjIFVwZGF0ZSB0aGUgcmVzb2x2ZWQgdXJsIHRvIGFuIGludmFsaWQgdXJsCisgICAgICAgIHdpdGggb3Blbih1ZC5yZXNvbHZlZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgdXJsID0gZi5yZWFkKCkKKyAgICAgICAgdXJpID0gVVJJKHVybCkKKyAgICAgICAgdXJpLnBhdGggPSAnL2ludmFsaWQnCisgICAgICAgIHdpdGggb3Blbih1ZC5yZXNvbHZlZmlsZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZShzdHIodXJpKSkKKyAgICAgICAgIyBGZXRjaCBhZ2FpbgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtX2Rlc3RzdWZmaXhfZG93bmxvYWRmaWxlbmFtZShzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMDtkZXN0c3VmZml4PWZvby9iYXI7ZG93bmxvYWRmaWxlbmFtZT1mb28tYmFyLnRneicKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuZGxkaXIsICdmb28tYmFyLnRneicpKSkKKyAgICAgICAgZmV0Y2hlci51bnBhY2soc2VsZi51bnBhY2tkaXIpCisgICAgICAgIHVucGFja2RpciA9IG9zLnBhdGguam9pbihzZWxmLnVucGFja2RpciwgJ2ZvbycsICdiYXInKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHVucGFja2RpciwgJ3BhY2thZ2UuanNvbicpKSkKKworICAgIGRlZiB0ZXN0X25wbV9ub19uZXR3b3JrX25vX3RhcmJhbGwoc2VsZik6CisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlO3ZlcnNpb249MS4wLjAnCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX05PX05FVFdPUksnLCAnMScpCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGJiLmZldGNoMi5OZXR3b3JrQWNjZXNzKToKKyAgICAgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fbm9fbmV0d29ya193aXRoX3RhcmJhbGwoc2VsZik6CisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlO3ZlcnNpb249MS4wLjAnCisgICAgICAgICMgRmV0Y2ggb25jZSB0byBnZXQgYSB0YXJiYWxsCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgIyBEaXNhYmxlIG5ldHdvcmsgYWNjZXNzCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX05PX05FVFdPUksnLCAnMScpCisgICAgICAgICMgRmV0Y2ggYWdhaW4KKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYudW5wYWNrZGlyKQorICAgICAgICB1bnBhY2tkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi51bnBhY2tkaXIsICducG0nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHVucGFja2RpciwgJ3BhY2thZ2UuanNvbicpKSkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtX3JlZ2lzdHJ5X2FsdGVybmF0ZShzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5LmZyZWFqcy5vcmc7cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlO3ZlcnNpb249MS4wLjAnCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgZmV0Y2hlci51bnBhY2soc2VsZi51bnBhY2tkaXIpCisgICAgICAgIHVucGFja2RpciA9IG9zLnBhdGguam9pbihzZWxmLnVucGFja2RpciwgJ25wbScpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4odW5wYWNrZGlyLCAncGFja2FnZS5qc29uJykpKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fdmVyc2lvbl9sYXRlc3Qoc2VsZik6CisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlO3ZlcnNpb249bGF0ZXN0JworICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goW3VybF0sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIGZldGNoZXIudW5wYWNrKHNlbGYudW5wYWNrZGlyKQorICAgICAgICB1bnBhY2tkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi51bnBhY2tkaXIsICducG0nKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHVucGFja2RpciwgJ3BhY2thZ2UuanNvbicpKSkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtX3JlZ2lzdHJ5X2ludmFsaWQoc2VsZik6CisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5pbnZhbGlkLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFt1cmxdLCBzZWxmLmQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLkZldGNoRXJyb3IpOgorICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbV9wYWNrYWdlX2ludmFsaWQoc2VsZik6CisgICAgICAgIHVybCA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9pbnZhbGlkO3ZlcnNpb249MS4wLjAnCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGJiLmZldGNoMi5GZXRjaEVycm9yKToKKyAgICAgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fdmVyc2lvbl9pbnZhbGlkKHNlbGYpOgorICAgICAgICB1cmwgPSAnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9QHNhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZTt2ZXJzaW9uPWludmFsaWQnCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLlBhcmFtZXRlckVycm9yKToKKyAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fcmVnaXN0cnlfbm9uZShzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovLztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGU7dmVyc2lvbj0xLjAuMCcKKyAgICAgICAgd2l0aCBzZWxmLmFzc2VydFJhaXNlcyhiYi5mZXRjaDIuTWFsZm9ybWVkVXJsKToKKyAgICAgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbdXJsXSwgc2VsZi5kKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1fcGFja2FnZV9ub25lKHNlbGYpOgorICAgICAgICB1cmwgPSAnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3ZlcnNpb249MS4wLjAnCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLk1pc3NpbmdQYXJhbWV0ZXJFcnJvcik6CisgICAgICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goW3VybF0sIHNlbGYuZCkKKworICAgIEBza2lwSWZOb05wbSgpCisgICAgQHNraXBJZk5vTmV0d29yaygpCisgICAgZGVmIHRlc3RfbnBtX3ZlcnNpb25fbm9uZShzZWxmKToKKyAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPUBzYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGUnCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLk1pc3NpbmdQYXJhbWV0ZXJFcnJvcik6CisgICAgICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goW3VybF0sIHNlbGYuZCkKKworICAgIGRlZiBjcmVhdGVfc2hyaW5rd3JhcF9maWxlKHNlbGYsIGRhdGEpOgorICAgICAgICBpbXBvcnQganNvbgorICAgICAgICBkYXRhZGlyID0gb3MucGF0aC5qb2luKHNlbGYudGVtcGRpciwgJ2RhdGEnKQorICAgICAgICBzd2ZpbGUgPSBvcy5wYXRoLmpvaW4oZGF0YWRpciwgJ25wbS1zaHJpbmt3cmFwLmpzb24nKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoZGF0YWRpcikKKyAgICAgICAgd2l0aCBvcGVuKHN3ZmlsZSwgJ3cnKSBhcyBmOgorICAgICAgICAgICAganNvbi5kdW1wKGRhdGEsIGYpCisgICAgICAgICMgQWxzbyBjb25maWd1cmUgdGhlIFMgZGlyZWN0b3J5CisgICAgICAgIHNlbGYuc2RpciA9IG9zLnBhdGguam9pbihzZWxmLnVucGFja2RpciwgJ1MnKQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdTJywgc2VsZi5zZGlyKQorICAgICAgICByZXR1cm4gc3dmaWxlCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbXN3KHNlbGYpOgorICAgICAgICBzd2ZpbGUgPSBzZWxmLmNyZWF0ZV9zaHJpbmt3cmFwX2ZpbGUoeworICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IHsKKyAgICAgICAgICAgICAgICAnYXJyYXktZmxhdHRlbic6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnMS4xLjEnLAorICAgICAgICAgICAgICAgICAgICAncmVzb2x2ZWQnOiAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXJyYXktZmxhdHRlbi8tL2FycmF5LWZsYXR0ZW4tMS4xLjEudGd6JywKKyAgICAgICAgICAgICAgICAgICAgJ2ludGVncml0eSc6ICdzaGExLW1sOXBrRkd4NXdjektQS2dDSmFMWk9vcFZkST0nLAorICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogeworICAgICAgICAgICAgICAgICAgICAgICAgJ2NvbnRlbnQtdHlwZSc6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6ICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9jb250ZW50LXR5cGUvLS9jb250ZW50LXR5cGUtMS4wLjQudGd6JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW50ZWdyaXR5JzogJ3NoYTUxMi1oSVAzRUVQczh0QjlBVDFMK05VcXR3T0FwczRtazJab2I4OU1XWE1IakhXZzltaWxGL2o0b3NublFMWEJDQkZCay90dklHL3RVYzltT1VKaVBCaFBYQT09JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnY29va2llJzogeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnZ2l0K2h0dHBzOi8vZ2l0aHViLmNvbS9qc2h0dHAvY29va2llLmdpdCNhZWMxMTc3YzdkYTY3ZTNiMzI3M2RmOTZjZjQ3NjgyNGRiYzlhZTA5JywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcm9tJzogJ2dpdCtodHRwczovL2dpdGh1Yi5jb20vanNodHRwL2Nvb2tpZS5naXQnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbXN3Oi8vJyArIHN3ZmlsZV0sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgJ25wbTInLCAnYXJyYXktZmxhdHRlbi0xLjEuMS50Z3onKSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgJ25wbTInLCAnY29udGVudC10eXBlLTEuMC40LnRneicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAnZ2l0MicsICdnaXRodWIuY29tLmpzaHR0cC5jb29raWUuZ2l0JykpKQorICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLnVucGFja2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLnNkaXIsICducG0tc2hyaW5rd3JhcC5qc29uJykpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHMob3MucGF0aC5qb2luKHNlbGYuc2RpciwgJ25vZGVfbW9kdWxlcycsICdhcnJheS1mbGF0dGVuJywgJ3BhY2thZ2UuanNvbicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLnNkaXIsICdub2RlX21vZHVsZXMnLCAnYXJyYXktZmxhdHRlbicsICdub2RlX21vZHVsZXMnLCAnY29udGVudC10eXBlJywgJ3BhY2thZ2UuanNvbicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLnNkaXIsICdub2RlX21vZHVsZXMnLCAnYXJyYXktZmxhdHRlbicsICdub2RlX21vZHVsZXMnLCAnY29udGVudC10eXBlJywgJ25vZGVfbW9kdWxlcycsICdjb29raWUnLCAncGFja2FnZS5qc29uJykpKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1zd19kZXYoc2VsZik6CisgICAgICAgIHN3ZmlsZSA9IHNlbGYuY3JlYXRlX3Nocmlua3dyYXBfZmlsZSh7CisgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogeworICAgICAgICAgICAgICAgICdhcnJheS1mbGF0dGVuJzogeworICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6ICcxLjEuMScsCisgICAgICAgICAgICAgICAgICAgICdyZXNvbHZlZCc6ICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS1mbGF0dGVuLy0vYXJyYXktZmxhdHRlbi0xLjEuMS50Z3onLAorICAgICAgICAgICAgICAgICAgICAnaW50ZWdyaXR5JzogJ3NoYTEtbWw5cGtGR3g1d2N6S1BLZ0NKYUxaT29wVmRJPScKKyAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICdjb250ZW50LXR5cGUnOiB7CisgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzEuMC40JywKKyAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmVkJzogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2NvbnRlbnQtdHlwZS8tL2NvbnRlbnQtdHlwZS0xLjAuNC50Z3onLAorICAgICAgICAgICAgICAgICAgICAnaW50ZWdyaXR5JzogJ3NoYTUxMi1oSVAzRUVQczh0QjlBVDFMK05VcXR3T0FwczRtazJab2I4OU1XWE1IakhXZzltaWxGL2o0b3NublFMWEJDQkZCay90dklHL3RVYzltT1VKaVBCaFBYQT09JywKKyAgICAgICAgICAgICAgICAgICAgJ2Rldic6IFRydWUKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pCisgICAgICAgICMgRmV0Y2ggd2l0aCBkZXYgZGlzYWJsZWQKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAnbnBtMicsICdhcnJheS1mbGF0dGVuLTEuMS4xLnRneicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5kbGRpciwgJ25wbTInLCAnY29udGVudC10eXBlLTEuMC40LnRneicpKSkKKyAgICAgICAgIyBGZXRjaCB3aXRoIGRldiBlbmFibGVkCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbXN3Oi8vJyArIHN3ZmlsZSArICc7ZGV2PTEnXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAnbnBtMicsICdhcnJheS1mbGF0dGVuLTEuMS4xLnRneicpKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAnbnBtMicsICdjb250ZW50LXR5cGUtMS4wLjQudGd6JykpKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1zd19kZXN0c3VmZml4KHNlbGYpOgorICAgICAgICBzd2ZpbGUgPSBzZWxmLmNyZWF0ZV9zaHJpbmt3cmFwX2ZpbGUoeworICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IHsKKyAgICAgICAgICAgICAgICAnYXJyYXktZmxhdHRlbic6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnMS4xLjEnLAorICAgICAgICAgICAgICAgICAgICAncmVzb2x2ZWQnOiAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXJyYXktZmxhdHRlbi8tL2FycmF5LWZsYXR0ZW4tMS4xLjEudGd6JywKKyAgICAgICAgICAgICAgICAgICAgJ2ludGVncml0eSc6ICdzaGExLW1sOXBrRkd4NXdjektQS2dDSmFMWk9vcFZkST0nCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KQorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyducG1zdzovLycgKyBzd2ZpbGUgKyAnO2Rlc3RzdWZmaXg9Zm9vL2JhciddLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLnVucGFja2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLnVucGFja2RpciwgJ2ZvbycsICdiYXInLCAnbm9kZV9tb2R1bGVzJywgJ2FycmF5LWZsYXR0ZW4nLCAncGFja2FnZS5qc29uJykpKQorCisgICAgZGVmIHRlc3RfbnBtc3dfbm9fbmV0d29ya19ub190YXJiYWxsKHNlbGYpOgorICAgICAgICBzd2ZpbGUgPSBzZWxmLmNyZWF0ZV9zaHJpbmt3cmFwX2ZpbGUoeworICAgICAgICAgICAgJ2RlcGVuZGVuY2llcyc6IHsKKyAgICAgICAgICAgICAgICAnYXJyYXktZmxhdHRlbic6IHsKKyAgICAgICAgICAgICAgICAgICAgJ3ZlcnNpb24nOiAnMS4xLjEnLAorICAgICAgICAgICAgICAgICAgICAncmVzb2x2ZWQnOiAnaHR0cHM6Ly9yZWdpc3RyeS5ucG1qcy5vcmcvYXJyYXktZmxhdHRlbi8tL2FycmF5LWZsYXR0ZW4tMS4xLjEudGd6JywKKyAgICAgICAgICAgICAgICAgICAgJ2ludGVncml0eSc6ICdzaGExLW1sOXBrRkd4NXdjektQS2dDSmFMWk9vcFZkST0nCisgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgfQorICAgICAgICB9KQorICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9OT19ORVRXT1JLJywgJzEnKQorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyducG1zdzovLycgKyBzd2ZpbGVdLCBzZWxmLmQpCisgICAgICAgIHdpdGggc2VsZi5hc3NlcnRSYWlzZXMoYmIuZmV0Y2gyLk5ldHdvcmtBY2Nlc3MpOgorICAgICAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbXN3X25vX25ldHdvcmtfd2l0aF90YXJiYWxsKHNlbGYpOgorICAgICAgICAjIEZldGNoIG9uY2UgdG8gZ2V0IGEgdGFyYmFsbAorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1hcnJheS1mbGF0dGVuO3ZlcnNpb249MS4xLjEnXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgIyBEaXNhYmxlIG5ldHdvcmsgYWNjZXNzCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ0JCX05PX05FVFdPUksnLCAnMScpCisgICAgICAgICMgRmV0Y2ggYWdhaW4KKyAgICAgICAgc3dmaWxlID0gc2VsZi5jcmVhdGVfc2hyaW5rd3JhcF9maWxlKHsKKyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgJ2FycmF5LWZsYXR0ZW4nOiB7CisgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzEuMS4xJywKKyAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmVkJzogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5LWZsYXR0ZW4vLS9hcnJheS1mbGF0dGVuLTEuMS4xLnRneicsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhMS1tbDlwa0ZHeDV3Y3pLUEtnQ0phTFpPb3BWZEk9JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlXSwgc2VsZi5kKQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgZmV0Y2hlci51bnBhY2soc2VsZi51bnBhY2tkaXIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi5zZGlyLCAnbm9kZV9tb2R1bGVzJywgJ2FycmF5LWZsYXR0ZW4nLCAncGFja2FnZS5qc29uJykpKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1zd19ucG1fcmV1c2FiaWxpdHkoc2VsZik6CisgICAgICAgICMgRmV0Y2ggb25jZSB3aXRoIG5wbXN3CisgICAgICAgIHN3ZmlsZSA9IHNlbGYuY3JlYXRlX3Nocmlua3dyYXBfZmlsZSh7CisgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogeworICAgICAgICAgICAgICAgICdhcnJheS1mbGF0dGVuJzogeworICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6ICcxLjEuMScsCisgICAgICAgICAgICAgICAgICAgICdyZXNvbHZlZCc6ICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS1mbGF0dGVuLy0vYXJyYXktZmxhdHRlbi0xLjEuMS50Z3onLAorICAgICAgICAgICAgICAgICAgICAnaW50ZWdyaXR5JzogJ3NoYTEtbWw5cGtGR3g1d2N6S1BLZ0NKYUxaT29wVmRJPScKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbXN3Oi8vJyArIHN3ZmlsZV0sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgICMgRGlzYWJsZSBuZXR3b3JrIGFjY2VzcworICAgICAgICBzZWxmLmQuc2V0VmFyKCdCQl9OT19ORVRXT1JLJywgJzEnKQorICAgICAgICAjIEZldGNoIGFnYWluIHdpdGggbnBtCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPWFycmF5LWZsYXR0ZW47dmVyc2lvbj0xLjEuMSddLCBzZWxmLmQpCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBmZXRjaGVyLnVucGFjayhzZWxmLnVucGFja2RpcikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKG9zLnBhdGguam9pbihzZWxmLnVucGFja2RpciwgJ25wbScsICdwYWNrYWdlLmpzb24nKSkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbXN3X2JhZF9jaGVja3N1bShzZWxmKToKKyAgICAgICAgIyBUcnkgdG8gZmV0Y2ggd2l0aCBiYWQgY2hlY2tzdW0KKyAgICAgICAgc3dmaWxlID0gc2VsZi5jcmVhdGVfc2hyaW5rd3JhcF9maWxlKHsKKyAgICAgICAgICAgICdkZXBlbmRlbmNpZXMnOiB7CisgICAgICAgICAgICAgICAgJ2FycmF5LWZsYXR0ZW4nOiB7CisgICAgICAgICAgICAgICAgICAgICd2ZXJzaW9uJzogJzEuMS4xJywKKyAgICAgICAgICAgICAgICAgICAgJ3Jlc29sdmVkJzogJ2h0dHBzOi8vcmVnaXN0cnkubnBtanMub3JnL2FycmF5LWZsYXR0ZW4vLS9hcnJheS1mbGF0dGVuLTEuMS4xLnRneicsCisgICAgICAgICAgICAgICAgICAgICdpbnRlZ3JpdHknOiAnc2hhMS1nZk5FcDJocWdMVEZLVDZQM0FzQllNZ3NCcWc9JworICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0KKyAgICAgICAgfSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoLkZldGNoKFsnbnBtc3c6Ly8nICsgc3dmaWxlXSwgc2VsZi5kKQorICAgICAgICB3aXRoIHNlbGYuYXNzZXJ0UmFpc2VzKGJiLmZldGNoMi5GZXRjaEVycm9yKToKKyAgICAgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICAjIEZldGNoIGNvcnJlY3RseSB0byBnZXQgYSB0YXJiYWxsCisgICAgICAgIHN3ZmlsZSA9IHNlbGYuY3JlYXRlX3Nocmlua3dyYXBfZmlsZSh7CisgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogeworICAgICAgICAgICAgICAgICdhcnJheS1mbGF0dGVuJzogeworICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6ICcxLjEuMScsCisgICAgICAgICAgICAgICAgICAgICdyZXNvbHZlZCc6ICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS1mbGF0dGVuLy0vYXJyYXktZmxhdHRlbi0xLjEuMS50Z3onLAorICAgICAgICAgICAgICAgICAgICAnaW50ZWdyaXR5JzogJ3NoYTEtbWw5cGtGR3g1d2N6S1BLZ0NKYUxaT29wVmRJPScKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbXN3Oi8vJyArIHN3ZmlsZV0sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIGxvY2FscGF0aCA9IG9zLnBhdGguam9pbihzZWxmLmRsZGlyLCAnbnBtMicsICdhcnJheS1mbGF0dGVuLTEuMS4xLnRneicpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhsb2NhbHBhdGgpKQorICAgICAgICAjIE1vZGlmeSB0aGUgdGFyYmFsbAorICAgICAgICBiYWQgPSBiJ2JhZCBjaGVja3N1bScKKyAgICAgICAgd2l0aCBvcGVuKGxvY2FscGF0aCwgJ3diJykgYXMgZjoKKyAgICAgICAgICAgIGYud3JpdGUoYmFkKQorICAgICAgICAjIFZlcmlmeSB0aGF0IHRoZSB0YXJiYWxsIGlzIGZldGNoZWQgYWdhaW4KKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIGJhZHN1bSA9IGhhc2hsaWIuc2hhMShiYWQpLmhleGRpZ2VzdCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhsb2NhbHBhdGggKyAnX2JhZC1jaGVja3N1bV8nICsgYmFkc3VtKSkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKGxvY2FscGF0aCkpCisKKyAgICBAc2tpcElmTm9OcG0oKQorICAgIEBza2lwSWZOb05ldHdvcmsoKQorICAgIGRlZiB0ZXN0X25wbXN3X3ByZW1pcnJvcnMoc2VsZik6CisgICAgICAgICMgRmV0Y2ggb25jZSB0byBnZXQgYSB0YXJiYWxsCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztwYWNrYWdlPWFycmF5LWZsYXR0ZW47dmVyc2lvbj0xLjEuMSddLCBzZWxmLmQpCisgICAgICAgIHVkID0gZmV0Y2hlci51ZFtmZXRjaGVyLnVybHNbMF1dCisgICAgICAgIGZldGNoZXIuZG93bmxvYWQoKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5leGlzdHModWQubG9jYWxwYXRoKSkKKyAgICAgICAgIyBTZXR1cCB0aGUgbWlycm9yCisgICAgICAgIG1pcnJvcmRpciA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdtaXJyb3InKQorICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIobWlycm9yZGlyKQorICAgICAgICBvcy5yZXBsYWNlKHVkLmxvY2FscGF0aCwgb3MucGF0aC5qb2luKG1pcnJvcmRpciwgb3MucGF0aC5iYXNlbmFtZSh1ZC5sb2NhbHBhdGgpKSkKKyAgICAgICAgc2VsZi5kLnNldFZhcignUFJFTUlSUk9SUycsICdodHRwcz8kOi8vLiovLiogZmlsZTovLyVzL1xuJyAlIG1pcnJvcmRpcikKKyAgICAgICAgc2VsZi5kLnNldFZhcignQkJfRkVUQ0hfUFJFTUlSUk9ST05MWScsICcxJykKKyAgICAgICAgIyBGZXRjaCBhZ2FpbgorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCisgICAgICAgIHN3ZmlsZSA9IHNlbGYuY3JlYXRlX3Nocmlua3dyYXBfZmlsZSh7CisgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogeworICAgICAgICAgICAgICAgICdhcnJheS1mbGF0dGVuJzogeworICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6ICcxLjEuMScsCisgICAgICAgICAgICAgICAgICAgICdyZXNvbHZlZCc6ICdodHRwczovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy9hcnJheS1mbGF0dGVuLy0vYXJyYXktZmxhdHRlbi0xLjEuMS50Z3onLAorICAgICAgICAgICAgICAgICAgICAnaW50ZWdyaXR5JzogJ3NoYTEtbWw5cGtGR3g1d2N6S1BLZ0NKYUxaT29wVmRJPScKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbXN3Oi8vJyArIHN3ZmlsZV0sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpKQorCisgICAgQHNraXBJZk5vTnBtKCkKKyAgICBAc2tpcElmTm9OZXR3b3JrKCkKKyAgICBkZWYgdGVzdF9ucG1zd19taXJyb3JzKHNlbGYpOgorICAgICAgICAjIEZldGNoIG9uY2UgdG8gZ2V0IGEgdGFyYmFsbAorICAgICAgICBmZXRjaGVyID0gYmIuZmV0Y2guRmV0Y2goWyducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1hcnJheS1mbGF0dGVuO3ZlcnNpb249MS4xLjEnXSwgc2VsZi5kKQorICAgICAgICB1ZCA9IGZldGNoZXIudWRbZmV0Y2hlci51cmxzWzBdXQorICAgICAgICBmZXRjaGVyLmRvd25sb2FkKCkKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCisgICAgICAgICMgU2V0dXAgdGhlIG1pcnJvcgorICAgICAgICBtaXJyb3JkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZW1wZGlyLCAnbWlycm9yJykKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG1pcnJvcmRpcikKKyAgICAgICAgb3MucmVwbGFjZSh1ZC5sb2NhbHBhdGgsIG9zLnBhdGguam9pbihtaXJyb3JkaXIsIG9zLnBhdGguYmFzZW5hbWUodWQubG9jYWxwYXRoKSkpCisgICAgICAgIHNlbGYuZC5zZXRWYXIoJ01JUlJPUlMnLCAnaHR0cHM/JDovLy4qLy4qIGZpbGU6Ly8lcy9cbicgJSBtaXJyb3JkaXIpCisgICAgICAgICMgRmV0Y2ggYWdhaW4gd2l0aCBpbnZhbGlkIHVybAorICAgICAgICBzZWxmLmFzc2VydEZhbHNlKG9zLnBhdGguZXhpc3RzKHVkLmxvY2FscGF0aCkpCisgICAgICAgIHN3ZmlsZSA9IHNlbGYuY3JlYXRlX3Nocmlua3dyYXBfZmlsZSh7CisgICAgICAgICAgICAnZGVwZW5kZW5jaWVzJzogeworICAgICAgICAgICAgICAgICdhcnJheS1mbGF0dGVuJzogeworICAgICAgICAgICAgICAgICAgICAndmVyc2lvbic6ICcxLjEuMScsCisgICAgICAgICAgICAgICAgICAgICdyZXNvbHZlZCc6ICdodHRwczovL2ludmFsaWQnLAorICAgICAgICAgICAgICAgICAgICAnaW50ZWdyaXR5JzogJ3NoYTEtbWw5cGtGR3g1d2N6S1BLZ0NKYUxaT29wVmRJPScKKyAgICAgICAgICAgICAgICB9CisgICAgICAgICAgICB9CisgICAgICAgIH0pCisgICAgICAgIGZldGNoZXIgPSBiYi5mZXRjaC5GZXRjaChbJ25wbXN3Oi8vJyArIHN3ZmlsZV0sIHNlbGYuZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyh1ZC5sb2NhbHBhdGgpKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9ydW5xdWV1ZS5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvcnVucXVldWUucHkKaW5kZXggNWU2NDM5MS4uNGJhMTJhMCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy9ydW5xdWV1ZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL3J1bnF1ZXVlLnB5CkBAIC03LDcgKzcsNiBAQAogIwogCiBpbXBvcnQgdW5pdHRlc3QKLWltcG9ydCBiYgogaW1wb3J0IG9zCiBpbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBzdWJwcm9jZXNzCkBAIC0yNTUsNyArMjU0LDcgQEAKICAgICAgICAgICAgIGNtZCA9IFsiYml0YmFrZSIsICJhMSIsICJiMSJdCiAgICAgICAgICAgICB0YXNrcyA9IHNlbGYucnVuX2JpdGJha2VjbWQoY21kLCB0ZW1wZGlyLCBzc3RhdGV2YWxpZCwgZXh0cmFlbnY9ZXh0cmFlbnYsIGNsZWFudXA9VHJ1ZSkKICAgICAgICAgICAgIGV4cGVjdGVkID0gWydhMTpwb3B1bGF0ZV9zeXNyb290JywgJ2ExOnBhY2thZ2UnLCAnYTE6cGFja2FnZV93cml0ZV9ycG1fc2V0c2NlbmUnLCAnYTE6cGFja2FnZWRhdGFfc2V0c2NlbmUnLAotICAgICAgICAgICAgICAgICAgICAgICAgJ2ExOnBhY2thZ2Vfd3JpdGVfaXBrX3NldHNjZW5lJywgJ2ExOnBhY2thZ2VfcWFfc2V0c2NlbmUnXQorICAgICAgICAgICAgICAgICAgICAgICAgJ2ExOnBhY2thZ2Vfd3JpdGVfaXBrX3NldHNjZW5lJywgJ2ExOnBhY2thZ2VfcWFfc2V0c2NlbmUnLCAnYTE6YnVpbGQnXQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzZXQodGFza3MpLCBzZXQoZXhwZWN0ZWQpKQogCiAgICAgICAgICAgICBzZWxmLnNodXRkb3duKHRlbXBkaXIpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL3N1cHBvcnQvaHR0cHNlcnZlci5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvc3VwcG9ydC9odHRwc2VydmVyLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc4Zjc2NjAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL3N1cHBvcnQvaHR0cHNlcnZlci5weQpAQCAtMCwwICsxLDY1IEBACisjCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKyMKKworaW1wb3J0IGh0dHAuc2VydmVyCitpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCitpbXBvcnQgb3MKK2ltcG9ydCB0cmFjZWJhY2sKK2ltcG9ydCBzaWduYWwKK2ltcG9ydCBsb2dnaW5nCitmcm9tIHNvY2tldHNlcnZlciBpbXBvcnQgVGhyZWFkaW5nTWl4SW4KKworY2xhc3MgSFRUUFNlcnZlcihUaHJlYWRpbmdNaXhJbiwgaHR0cC5zZXJ2ZXIuSFRUUFNlcnZlcik6CisKKyAgICBkZWYgc2VydmVyX3N0YXJ0KHNlbGYsIHJvb3RfZGlyLCBsb2dnZXIpOgorICAgICAgICBvcy5jaGRpcihyb290X2RpcikKKyAgICAgICAgc2VsZi5zZXJ2ZV9mb3JldmVyKCkKKworY2xhc3MgSFRUUFJlcXVlc3RIYW5kbGVyKGh0dHAuc2VydmVyLlNpbXBsZUhUVFBSZXF1ZXN0SGFuZGxlcik6CisKKyAgICBkZWYgbG9nX21lc3NhZ2Uoc2VsZiwgZm9ybWF0X3N0ciwgKmFyZ3MpOgorICAgICAgICBwYXNzCisKK2NsYXNzIEhUVFBTZXJ2aWNlKG9iamVjdCk6CisKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcm9vdF9kaXIsIGhvc3Q9JycsIHBvcnQ9MCwgbG9nZ2VyPU5vbmUpOgorICAgICAgICBzZWxmLnJvb3RfZGlyID0gcm9vdF9kaXIKKyAgICAgICAgc2VsZi5ob3N0ID0gaG9zdAorICAgICAgICBzZWxmLnBvcnQgPSBwb3J0CisgICAgICAgIGlmIG5vdCBsb2dnZXI6CisgICAgICAgICAgICBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigpCisgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCisKKyAgICBkZWYgc3RhcnQoc2VsZik6CisgICAgICAgIHByaW50KHNlbGYucm9vdF9kaXIpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhzZWxmLnJvb3RfZGlyKToKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIk5vdCBzdGFydGluZyBIVFRQU2VydmljZSBmb3IgZGlyZWN0b3J5ICVzIHdoaWNoIGRvZXNuJ3QgZXhpc3QiICUgKHNlbGYucm9vdF9kaXIpKQorICAgICAgICAgICAgcmV0dXJuCisKKyAgICAgICAgc2VsZi5zZXJ2ZXIgPSBIVFRQU2VydmVyKChzZWxmLmhvc3QsIHNlbGYucG9ydCksIEhUVFBSZXF1ZXN0SGFuZGxlcikKKyAgICAgICAgaWYgc2VsZi5wb3J0ID09IDA6CisgICAgICAgICAgICBzZWxmLnBvcnQgPSBzZWxmLnNlcnZlci5zZXJ2ZXJfcG9ydAorICAgICAgICBzZWxmLnByb2Nlc3MgPSBtdWx0aXByb2Nlc3NpbmcuUHJvY2Vzcyh0YXJnZXQ9c2VsZi5zZXJ2ZXIuc2VydmVyX3N0YXJ0LCBhcmdzPVtzZWxmLnJvb3RfZGlyLCBzZWxmLmxvZ2dlcl0pCisKKyAgICAgICAgIyBUaGUgc2lnbmFsIGhhbmRsZXIgZnJvbSB0ZXN0aW1hZ2UuYmJjbGFzcyBjYW4gY2F1c2UgZGVhZGxvY2tzIGhlcmUKKyAgICAgICAgIyBpZiB0aGUgSFRUUFNlcnZlciBpcyB0ZXJtaW5hdGVkIGJlZm9yZSBpdCBjYW4gcmVzdG9yZSB0aGUgc3RhbmRhcmQgCisgICAgICAgICNzaWduYWwgYmVoYXZpb3VyCisgICAgICAgIG9yaWcgPSBzaWduYWwuZ2V0c2lnbmFsKHNpZ25hbC5TSUdURVJNKQorICAgICAgICBzaWduYWwuc2lnbmFsKHNpZ25hbC5TSUdURVJNLCBzaWduYWwuU0lHX0RGTCkKKyAgICAgICAgc2VsZi5wcm9jZXNzLnN0YXJ0KCkKKyAgICAgICAgc2lnbmFsLnNpZ25hbChzaWduYWwuU0lHVEVSTSwgb3JpZykKKworICAgICAgICBpZiBzZWxmLmxvZ2dlcjoKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIlN0YXJ0ZWQgSFRUUFNlcnZpY2Ugb24gJXM6JXMiICUgKHNlbGYuaG9zdCwgc2VsZi5wb3J0KSkKKworCisgICAgZGVmIHN0b3Aoc2VsZik6CisgICAgICAgIGlmIGhhc2F0dHIoc2VsZiwgInNlcnZlciIpOgorICAgICAgICAgICAgc2VsZi5zZXJ2ZXIuc2VydmVyX2Nsb3NlKCkKKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAicHJvY2VzcyIpOgorICAgICAgICAgICAgc2VsZi5wcm9jZXNzLnRlcm1pbmF0ZSgpCisgICAgICAgICAgICBzZWxmLnByb2Nlc3Muam9pbigpCisgICAgICAgIGlmIHNlbGYubG9nZ2VyOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygiU3RvcHBlZCBIVFRQU2VydmljZSBvbiAlczolcyIgJSAoc2VsZi5ob3N0LCBzZWxmLnBvcnQpKQorCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL3V0aWxzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90ZXN0cy91dGlscy5weQppbmRleCA1YzkxMGI0Li5hN2ZmMzNkIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3Rlc3RzL3V0aWxzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdGVzdHMvdXRpbHMucHkKQEAgLTYyMiwzICs2MjIsNDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFsnL2hvbWUvdXNlci9vdGhlcnBhdGgvbGF5ZXI2JywgJy9ob21lL3VzZXIvcGF0aC9sYXllcjMnXSwgWycvaG9tZS91c2VyL3BhdGgvbGF5ZXIxJywgJy9ob21lL3VzZXIvcGF0aC9sYXllcjQnLCAnL2hvbWUvdXNlci9wYXRoL2xheWVyNyddLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycvaG9tZS91c2VyL3BhdGgvbGF5ZXIzJ10sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJy9ob21lL3VzZXIvcGF0aC9sYXllcjcnXSkKKworCitjbGFzcyBHZXRSZWZlcmVuY2VkVmFycyh1bml0dGVzdC5UZXN0Q2FzZSk6CisgICAgZGVmIHNldFVwKHNlbGYpOgorICAgICAgICBzZWxmLmQgPSBiYi5kYXRhLmluaXQoKQorCisgICAgZGVmIGNoZWNrX3JlZmVyZW5jZWQoc2VsZiwgZXhwcmVzc2lvbiwgZXhwZWN0ZWRfbGF5ZXJzKToKKyAgICAgICAgdmFycyA9IGJiLnV0aWxzLmdldF9yZWZlcmVuY2VkX3ZhcnMoZXhwcmVzc2lvbiwgc2VsZi5kKQorCisgICAgICAgICMgRG8gdGhlIGVhc3kgY2hlY2sgZmlyc3QgLSBpcyBldmVyeSB2YXJpYWJsZSBhY2NvdW50ZWQgZm9yPworICAgICAgICBleHBlY3RlZF92YXJzID0gc2V0LnVuaW9uKHNldCgpLCAqZXhwZWN0ZWRfbGF5ZXJzKQorICAgICAgICBnb3RfdmFycyA9IHNldCh2YXJzKQorICAgICAgICBzZWxmLmFzc2VydFNldEVxdWFsKGdvdF92YXJzLCBleHBlY3RlZF92YXJzKQorCisgICAgICAgICMgTm93IHRlc3QgdGhlIG9yZGVyIG9mIHRoZSBsYXllcnMKKyAgICAgICAgc3RhcnQgPSAwCisgICAgICAgIGZvciBpLCBleHBlY3RlZF9sYXllciBpbiBlbnVtZXJhdGUoZXhwZWN0ZWRfbGF5ZXJzKToKKyAgICAgICAgICAgIGdvdF9sYXllciA9IHNldCh2YXJzW3N0YXJ0OmxlbihleHBlY3RlZF9sYXllcikrc3RhcnRdKQorICAgICAgICAgICAgc3RhcnQgKz0gbGVuKGV4cGVjdGVkX2xheWVyKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRTZXRFcXVhbChnb3RfbGF5ZXIsIGV4cGVjdGVkX2xheWVyKQorCisgICAgZGVmIHRlc3Rfbm9fdmFycyhzZWxmKToKKyAgICAgICAgc2VsZi5jaGVja19yZWZlcmVuY2VkKCIiLCBbXSkKKyAgICAgICAgc2VsZi5jaGVja19yZWZlcmVuY2VkKCIgIiwgW10pCisgICAgICAgIHNlbGYuY2hlY2tfcmVmZXJlbmNlZCgiIG5vIHZhcnMgaGVyZSEgIiwgW10pCisKKyAgICBkZWYgdGVzdF9zaW5nbGVfbGF5ZXIoc2VsZik6CisgICAgICAgIHNlbGYuY2hlY2tfcmVmZXJlbmNlZCgiJHtWQVJ9IiwgW3siVkFSIn1dKQorICAgICAgICBzZWxmLmNoZWNrX3JlZmVyZW5jZWQoIiR7VkFSfSAke1ZBUn0iLCBbeyJWQVIifV0pCisKKyAgICBkZWYgdGVzdF90d29fbGF5ZXIoc2VsZik6CisgICAgICAgIHNlbGYuZC5zZXRWYXIoIlZBUiIsICIke0J9IikKKyAgICAgICAgc2VsZi5jaGVja19yZWZlcmVuY2VkKCIke1ZBUn0iLCBbeyJWQVIifSwgeyJCIn1dKQorICAgICAgICBzZWxmLmNoZWNrX3JlZmVyZW5jZWQoIiR7QGQuZ2V0VmFyKCdWQVInKX0iLCBbeyJWQVIifSwgeyJCIn1dKQorCisgICAgZGVmIHRlc3RfbW9yZV9jb21wbGljYXRlZChzZWxmKToKKyAgICAgICAgc2VsZi5kWyJTUkNfVVJJIl0gPSAiJHtRVF9HSVR9LyR7UVRfTU9EVUxFfS5naXQ7bmFtZT0ke1FUX01PRFVMRX07JHtRVF9NT0RVTEVfQlJBTkNIX1BBUkFNfTtwcm90b2NvbD0ke1FUX0dJVF9QUk9UT0NPTH0iCisgICAgICAgIHNlbGYuZFsiUVRfR0lUIl0gPSAiZ2l0Oi8vY29kZS5xdC5pby8ke1FUX0dJVF9QUk9KRUNUfSIKKyAgICAgICAgc2VsZi5kWyJRVF9NT0RVTEVfQlJBTkNIX1BBUkFNIl0gPSAiYnJhbmNoPSR7UVRfTU9EVUxFX0JSQU5DSH0iCisgICAgICAgIHNlbGYuZFsiUVRfTU9EVUxFIl0gPSAiJHtCUE59IgorICAgICAgICBzZWxmLmRbIkJQTiJdID0gInNvbWV0aGluZyB0byBkbyB3aXRoICR7UE59IGFuZCAke1NQRUNJQUxfUEtHU1VGRklYfSIKKworICAgICAgICBsYXllcnMgPSBbeyJTUkNfVVJJIn0sIHsiUVRfR0lUIiwgIlFUX01PRFVMRSIsICJRVF9NT0RVTEVfQlJBTkNIX1BBUkFNIiwgIlFUX0dJVF9QUk9UT0NPTCJ9LCB7IlFUX0dJVF9QUk9KRUNUIiwgIlFUX01PRFVMRV9CUkFOQ0giLCAiQlBOIn0sIHsiUE4iLCAiU1BFQ0lBTF9QS0dTVUZGSVgifV0KKyAgICAgICAgc2VsZi5jaGVja19yZWZlcmVuY2VkKCIke1NSQ19VUkl9IiwgbGF5ZXJzKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi90aW5mb2lsLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi90aW5mb2lsLnB5CmluZGV4IDBhMWI5MTMuLjhjOWI2YjggMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdGluZm9pbC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3RpbmZvaWwucHkKQEAgLTEzLDYgKzEzLDcgQEAKIGltcG9ydCBhdGV4aXQKIGltcG9ydCByZQogZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgT3JkZXJlZERpY3QsIGRlZmF1bHRkaWN0Citmcm9tIGZ1bmN0b29scyBpbXBvcnQgcGFydGlhbAogCiBpbXBvcnQgYmIuY2FjaGUKIGltcG9ydCBiYi5jb29rZXIKQEAgLTIxLDggKzIyLDggQEAKIGltcG9ydCBiYi51dGlscwogaW1wb3J0IGJiLmNvbW1hbmQKIGltcG9ydCBiYi5yZW1vdGVkYXRhCi1mcm9tIGJiLmNvb2tlcmRhdGEgaW1wb3J0IENvb2tlckNvbmZpZ3VyYXRpb24sIENvbmZpZ1BhcmFtZXRlcnMKLWZyb20gYmIubWFpbiBpbXBvcnQgc2V0dXBfYml0YmFrZSwgQml0QmFrZUNvbmZpZ1BhcmFtZXRlcnMsIEJCTWFpbkV4Y2VwdGlvbgorZnJvbSBiYi5jb29rZXJkYXRhIGltcG9ydCBDb29rZXJDb25maWd1cmF0aW9uCitmcm9tIGJiLm1haW4gaW1wb3J0IHNldHVwX2JpdGJha2UsIEJpdEJha2VDb25maWdQYXJhbWV0ZXJzCiBpbXBvcnQgYmIuZmV0Y2gyCiAKIApAQCAtNDQsNjYgKzQ1LDY5IEBACiBjbGFzcyBUaW5mb2lsQ29tbWFuZEZhaWxlZChFeGNlcHRpb24pOgogICAgICIiIkV4Y2VwdGlvbiByYWlzZWQgd2hlbiBydW5fY29tbWFuZCBmYWlscyIiIgogCitjbGFzcyBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9yVmFySGlzdG9yeToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGluZm9pbCwgZHNpbmRleCk6CisgICAgICAgIHNlbGYudGluZm9pbCA9IHRpbmZvaWwKKyAgICAgICAgc2VsZi5kc2luZGV4ID0gZHNpbmRleAorCisgICAgZGVmIHJlbW90ZUNvbW1hbmQoc2VsZiwgY21kLCAqYXJncywgKiprd2FyZ3MpOgorICAgICAgICByZXR1cm4gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdkYXRhU3RvcmVDb25uZWN0b3JWYXJIaXN0Q21kJywgc2VsZi5kc2luZGV4LCBjbWQsIGFyZ3MsIGt3YXJncykKKworICAgIGRlZiBfX2dldGF0dHJfXyhzZWxmLCBuYW1lKToKKyAgICAgICAgaWYgbm90IGhhc2F0dHIoYmIuZGF0YV9zbWFydC5WYXJpYWJsZUhpc3RvcnksIG5hbWUpOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIlZhcmlhYmxlSGlzdG9yeSBoYXMgbm8gc3VjaCBtZXRob2QgJXMiICUgbmFtZSkKKworICAgICAgICBuZXdmdW5jID0gcGFydGlhbChzZWxmLnJlbW90ZUNvbW1hbmQsIG5hbWUpCisgICAgICAgIHNldGF0dHIoc2VsZiwgbmFtZSwgbmV3ZnVuYykKKyAgICAgICAgcmV0dXJuIG5ld2Z1bmMKKworY2xhc3MgVGluZm9pbERhdGFTdG9yZUNvbm5lY3RvckluY0hpc3Rvcnk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHRpbmZvaWwsIGRzaW5kZXgpOgorICAgICAgICBzZWxmLnRpbmZvaWwgPSB0aW5mb2lsCisgICAgICAgIHNlbGYuZHNpbmRleCA9IGRzaW5kZXgKKworICAgIGRlZiByZW1vdGVDb21tYW5kKHNlbGYsIGNtZCwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0dXJuIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZGF0YVN0b3JlQ29ubmVjdG9ySW5jSGlzdENtZCcsIHNlbGYuZHNpbmRleCwgY21kLCBhcmdzLCBrd2FyZ3MpCisKKyAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgIGlmIG5vdCBoYXNhdHRyKGJiLmRhdGFfc21hcnQuSW5jbHVkZUhpc3RvcnksIG5hbWUpOgorICAgICAgICAgICAgcmFpc2UgQXR0cmlidXRlRXJyb3IoIkluY2x1ZGVIaXN0b3J5IGhhcyBubyBzdWNoIG1ldGhvZCAlcyIgJSBuYW1lKQorCisgICAgICAgIG5ld2Z1bmMgPSBwYXJ0aWFsKHNlbGYucmVtb3RlQ29tbWFuZCwgbmFtZSkKKyAgICAgICAgc2V0YXR0cihzZWxmLCBuYW1lLCBuZXdmdW5jKQorICAgICAgICByZXR1cm4gbmV3ZnVuYworCiBjbGFzcyBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9yOgotICAgICIiIkNvbm5lY3RvciBvYmplY3QgdXNlZCB0byBlbmFibGUgYWNjZXNzIHRvIGRhdGFzdG9yZSBvYmplY3RzIHZpYSB0aW5mb2lsIiIiCisgICAgIiIiCisgICAgQ29ubmVjdG9yIG9iamVjdCB1c2VkIHRvIGVuYWJsZSBhY2Nlc3MgdG8gZGF0YXN0b3JlIG9iamVjdHMgdmlhIHRpbmZvaWwKKyAgICBNZXRob2QgY2FsbHMgYXJlIHRyYW5zbWl0dGVkIHRvIHRoZSByZW1vdGUgZGF0YXN0b3JlIGZvciBwcm9jZXNzaW5nLCBpZiBhIGRhdGFzdG9yZSBpcworICAgIHJldHVybmVkIHdlIHJldHVybiBhIGNvbm5lY3RvciBvYmplY3QgZm9yIHRoZSBuZXcgc3RvcmUKKyAgICAiIiIKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0aW5mb2lsLCBkc2luZGV4KToKICAgICAgICAgc2VsZi50aW5mb2lsID0gdGluZm9pbAogICAgICAgICBzZWxmLmRzaW5kZXggPSBkc2luZGV4Ci0gICAgZGVmIGdldFZhcihzZWxmLCBuYW1lKToKLSAgICAgICAgdmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2RhdGFTdG9yZUNvbm5lY3RvckZpbmRWYXInLCBzZWxmLmRzaW5kZXgsIG5hbWUpCi0gICAgICAgIG92ZXJyaWRlcyA9IE5vbmUKLSAgICAgICAgaWYgaXNpbnN0YW5jZSh2YWx1ZSwgZGljdCk6Ci0gICAgICAgICAgICBpZiAnX2Nvbm5lY3Rvcl9vcmlndHlwZScgaW4gdmFsdWU6Ci0gICAgICAgICAgICAgICAgdmFsdWVbJ19jb250ZW50J10gPSBzZWxmLnRpbmZvaWwuX3JlY29udmVydF90eXBlKHZhbHVlWydfY29udGVudCddLCB2YWx1ZVsnX2Nvbm5lY3Rvcl9vcmlndHlwZSddKQotICAgICAgICAgICAgICAgIGRlbCB2YWx1ZVsnX2Nvbm5lY3Rvcl9vcmlndHlwZSddCi0gICAgICAgICAgICBpZiAnX2Nvbm5lY3Rvcl9vdmVycmlkZXMnIGluIHZhbHVlOgotICAgICAgICAgICAgICAgIG92ZXJyaWRlcyA9IHZhbHVlWydfY29ubmVjdG9yX292ZXJyaWRlcyddCi0gICAgICAgICAgICAgICAgZGVsIHZhbHVlWydfY29ubmVjdG9yX292ZXJyaWRlcyddCi0gICAgICAgIHJldHVybiB2YWx1ZSwgb3ZlcnJpZGVzCi0gICAgZGVmIGdldEtleXMoc2VsZik6Ci0gICAgICAgIHJldHVybiBzZXQoc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdkYXRhU3RvcmVDb25uZWN0b3JHZXRLZXlzJywgc2VsZi5kc2luZGV4KSkKLSAgICBkZWYgZ2V0VmFySGlzdG9yeShzZWxmLCBuYW1lKToKLSAgICAgICAgcmV0dXJuIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZGF0YVN0b3JlQ29ubmVjdG9yR2V0VmFySGlzdG9yeScsIHNlbGYuZHNpbmRleCwgbmFtZSkKLSAgICBkZWYgZXhwYW5kUHl0aG9uUmVmKHNlbGYsIHZhcm5hbWUsIGV4cHIsIGQpOgotICAgICAgICBkcyA9IGJiLnJlbW90ZWRhdGEuUmVtb3RlRGF0YXN0b3Jlcy50cmFuc21pdF9kYXRhc3RvcmUoZCkKLSAgICAgICAgcmV0ID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdkYXRhU3RvcmVDb25uZWN0b3JFeHBhbmRQeXRob25SZWYnLCBkcywgdmFybmFtZSwgZXhwcikKKyAgICAgICAgc2VsZi52YXJoaXN0b3J5ID0gVGluZm9pbERhdGFTdG9yZUNvbm5lY3RvclZhckhpc3RvcnkodGluZm9pbCwgZHNpbmRleCkKKyAgICAgICAgc2VsZi5pbmNoaXN0b3J5ID0gVGluZm9pbERhdGFTdG9yZUNvbm5lY3RvckluY0hpc3RvcnkodGluZm9pbCwgZHNpbmRleCkKKworICAgIGRlZiByZW1vdGVDb21tYW5kKHNlbGYsIGNtZCwgKmFyZ3MsICoqa3dhcmdzKToKKyAgICAgICAgcmV0ID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdkYXRhU3RvcmVDb25uZWN0b3JDbWQnLCBzZWxmLmRzaW5kZXgsIGNtZCwgYXJncywga3dhcmdzKQorICAgICAgICBpZiBpc2luc3RhbmNlKHJldCwgYmIuY29tbWFuZC5EYXRhU3RvcmVDb25uZWN0aW9uSGFuZGxlKToKKyAgICAgICAgICAgIHJldHVybiBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9yKHNlbGYudGluZm9pbCwgcmV0LmRzaW5kZXgpCiAgICAgICAgIHJldHVybiByZXQKLSAgICBkZWYgc2V0VmFyKHNlbGYsIHZhcm5hbWUsIHZhbHVlKToKLSAgICAgICAgaWYgc2VsZi5kc2luZGV4IGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ3NldFZhcmlhYmxlJywgdmFybmFtZSwgdmFsdWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWQgLSBpbmRpY2F0ZSB0aGF0IHNldHRpbmcgc2hvdWxkCi0gICAgICAgICAgICAjIGJlIHJlZGlyZWN0ZWQgdG8gbG9jYWwgc2lkZQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICBkZWYgc2V0VmFyRmxhZyhzZWxmLCB2YXJuYW1lLCBmbGFnbmFtZSwgdmFsdWUpOgotICAgICAgICBpZiBzZWxmLmRzaW5kZXggaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZGF0YVN0b3JlQ29ubmVjdG9yU2V0VmFyRmxhZycsIHNlbGYuZHNpbmRleCwgdmFybmFtZSwgZmxhZ25hbWUsIHZhbHVlKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBOb3QgY3VycmVudGx5IGltcGxlbWVudGVkIC0gaW5kaWNhdGUgdGhhdCBzZXR0aW5nIHNob3VsZAotICAgICAgICAgICAgIyBiZSByZWRpcmVjdGVkIHRvIGxvY2FsIHNpZGUKLSAgICAgICAgICAgIHJldHVybiBUcnVlCi0gICAgZGVmIGRlbFZhcihzZWxmLCB2YXJuYW1lKToKLSAgICAgICAgaWYgc2VsZi5kc2luZGV4IGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2RhdGFTdG9yZUNvbm5lY3RvckRlbFZhcicsIHNlbGYuZHNpbmRleCwgdmFybmFtZSkKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgTm90IGN1cnJlbnRseSBpbXBsZW1lbnRlZCAtIGluZGljYXRlIHRoYXQgc2V0dGluZyBzaG91bGQKLSAgICAgICAgICAgICMgYmUgcmVkaXJlY3RlZCB0byBsb2NhbCBzaWRlCi0gICAgICAgICAgICByZXR1cm4gVHJ1ZQotICAgIGRlZiBkZWxWYXJGbGFnKHNlbGYsIHZhcm5hbWUsIGZsYWduYW1lKToKLSAgICAgICAgaWYgc2VsZi5kc2luZGV4IGlzIE5vbmU6Ci0gICAgICAgICAgICBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2RhdGFTdG9yZUNvbm5lY3RvckRlbFZhcicsIHNlbGYuZHNpbmRleCwgdmFybmFtZSwgZmxhZ25hbWUpCi0gICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAjIE5vdCBjdXJyZW50bHkgaW1wbGVtZW50ZWQgLSBpbmRpY2F0ZSB0aGF0IHNldHRpbmcgc2hvdWxkCi0gICAgICAgICAgICAjIGJlIHJlZGlyZWN0ZWQgdG8gbG9jYWwgc2lkZQotICAgICAgICAgICAgcmV0dXJuIFRydWUKLSAgICBkZWYgcmVuYW1lVmFyKHNlbGYsIG5hbWUsIG5ld25hbWUpOgotICAgICAgICBpZiBzZWxmLmRzaW5kZXggaXMgTm9uZToKLSAgICAgICAgICAgIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZGF0YVN0b3JlQ29ubmVjdG9yUmVuYW1lVmFyJywgc2VsZi5kc2luZGV4LCBuYW1lLCBuZXduYW1lKQotICAgICAgICBlbHNlOgotICAgICAgICAgICAgIyBOb3QgY3VycmVudGx5IGltcGxlbWVudGVkIC0gaW5kaWNhdGUgdGhhdCBzZXR0aW5nIHNob3VsZAotICAgICAgICAgICAgIyBiZSByZWRpcmVjdGVkIHRvIGxvY2FsIHNpZGUKLSAgICAgICAgICAgIHJldHVybiBUcnVlCisKKyAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CisgICAgICAgIGlmIG5vdCBoYXNhdHRyKGJiLmRhdGEuX2RpY3RfdHlwZSwgbmFtZSk6CisgICAgICAgICAgICByYWlzZSBBdHRyaWJ1dGVFcnJvcigiRGF0YSBzdG9yZSBoYXMgbm8gc3VjaCBtZXRob2QgJXMiICUgbmFtZSkKKworICAgICAgICBuZXdmdW5jID0gcGFydGlhbChzZWxmLnJlbW90ZUNvbW1hbmQsIG5hbWUpCisgICAgICAgIHNldGF0dHIoc2VsZiwgbmFtZSwgbmV3ZnVuYykKKyAgICAgICAgcmV0dXJuIG5ld2Z1bmMKKworICAgIGRlZiBfX2l0ZXJfXyhzZWxmKToKKyAgICAgICAga2V5cyA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZGF0YVN0b3JlQ29ubmVjdG9yQ21kJywgc2VsZi5kc2luZGV4LCAia2V5cyIsIFtdLCB7fSkKKyAgICAgICAgZm9yIGsgaW4ga2V5czoKKyAgICAgICAgICAgIHlpZWxkIGsKIAogY2xhc3MgVGluZm9pbENvb2tlckFkYXB0ZXI6CiAgICAgIiIiCkBAIC0xMjcsMTIgKzEzMSwxMyBAQAogCiAgICAgY2xhc3MgVGluZm9pbFJlY2lwZUNhY2hlQWRhcHRlcjoKICAgICAgICAgIiIiIGNvb2tlci5yZWNpcGVjYWNoZSBhZGFwdGVyICIiIgotICAgICAgICBkZWYgX19pbml0X18oc2VsZiwgdGluZm9pbCk6CisgICAgICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0aW5mb2lsLCBtYz0nJyk6CiAgICAgICAgICAgICBzZWxmLnRpbmZvaWwgPSB0aW5mb2lsCisgICAgICAgICAgICBzZWxmLm1jID0gbWMKICAgICAgICAgICAgIHNlbGYuX2NhY2hlID0ge30KIAogICAgICAgICBkZWYgZ2V0X3BrZ19wbl9mbihzZWxmKToKLSAgICAgICAgICAgIHBrZ19wbiA9IGRlZmF1bHRkaWN0KGxpc3QsIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UmVjaXBlcycpIG9yIFtdKQorICAgICAgICAgICAgcGtnX3BuID0gZGVmYXVsdGRpY3QobGlzdCwgc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVzJywgc2VsZi5tYykgb3IgW10pCiAgICAgICAgICAgICBwa2dfZm4gPSB7fQogICAgICAgICAgICAgZm9yIHBuLCBmbmxpc3QgaW4gcGtnX3BuLml0ZW1zKCk6CiAgICAgICAgICAgICAgICAgZm9yIGZuIGluIGZubGlzdDoKQEAgLTE1MSwyNyArMTU2LDI3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5nZXRfcGtnX3BuX2ZuKCkKICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5fY2FjaGVbbmFtZV0KICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAnZGVwcyc6Ci0gICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gZGVmYXVsdGRpY3QobGlzdCwgc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVEZXBlbmRzJykgb3IgW10pCisgICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gZGVmYXVsdGRpY3QobGlzdCwgc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVEZXBlbmRzJywgc2VsZi5tYykgb3IgW10pCiAgICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ3J1bmRlcHMnOgotICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IGRlZmF1bHRkaWN0KGxhbWJkYTogZGVmYXVsdGRpY3QobGlzdCksIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UnVudGltZURlcGVuZHMnKSBvciBbXSkKKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBkZWZhdWx0ZGljdChsYW1iZGE6IGRlZmF1bHRkaWN0KGxpc3QpLCBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJ1bnRpbWVEZXBlbmRzJywgc2VsZi5tYykgb3IgW10pCiAgICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ3J1bnJlY3MnOgotICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IGRlZmF1bHRkaWN0KGxhbWJkYTogZGVmYXVsdGRpY3QobGlzdCksIHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UnVudGltZVJlY29tbWVuZHMnKSBvciBbXSkKKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBkZWZhdWx0ZGljdChsYW1iZGE6IGRlZmF1bHRkaWN0KGxpc3QpLCBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJ1bnRpbWVSZWNvbW1lbmRzJywgc2VsZi5tYykgb3IgW10pCiAgICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ3BrZ19wZXB2cHInOgotICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UmVjaXBlVmVyc2lvbnMnKSBvciB7fQorICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UmVjaXBlVmVyc2lvbnMnLCBzZWxmLm1jKSBvciB7fQogICAgICAgICAgICAgZWxpZiBuYW1lID09ICdpbmhlcml0cyc6Ci0gICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVJbmhlcml0cycpIG9yIHt9CisgICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVJbmhlcml0cycsIHNlbGYubWMpIG9yIHt9CiAgICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ2JiZmlsZV9wcmlvcml0eSc6Ci0gICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRCYkZpbGVQcmlvcml0eScpIG9yIHt9CisgICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRCYkZpbGVQcmlvcml0eScsIHNlbGYubWMpIG9yIHt9CiAgICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ3BrZ19kcCc6Ci0gICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXREZWZhdWx0UHJlZmVyZW5jZScpIG9yIHt9CisgICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXREZWZhdWx0UHJlZmVyZW5jZScsIHNlbGYubWMpIG9yIHt9CiAgICAgICAgICAgICBlbGlmIG5hbWUgPT0gJ2ZuX3Byb3ZpZGVzJzoKLSAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZVByb3ZpZGVzJykgb3Ige30KKyAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZVByb3ZpZGVzJywgc2VsZi5tYykgb3Ige30KICAgICAgICAgICAgIGVsaWYgbmFtZSA9PSAncGFja2FnZXMnOgotICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UmVjaXBlUGFja2FnZXMnKSBvciB7fQorICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UmVjaXBlUGFja2FnZXMnLCBzZWxmLm1jKSBvciB7fQogICAgICAgICAgICAgZWxpZiBuYW1lID09ICdwYWNrYWdlc19keW5hbWljJzoKLSAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJlY2lwZVBhY2thZ2VzRHluYW1pYycpIG9yIHt9CisgICAgICAgICAgICAgICAgYXR0cnZhbHVlID0gc2VsZi50aW5mb2lsLnJ1bl9jb21tYW5kKCdnZXRSZWNpcGVQYWNrYWdlc0R5bmFtaWMnLCBzZWxmLm1jKSBvciB7fQogICAgICAgICAgICAgZWxpZiBuYW1lID09ICdycHJvdmlkZXJzJzoKLSAgICAgICAgICAgICAgICBhdHRydmFsdWUgPSBzZWxmLnRpbmZvaWwucnVuX2NvbW1hbmQoJ2dldFJQcm92aWRlcnMnKSBvciB7fQorICAgICAgICAgICAgICAgIGF0dHJ2YWx1ZSA9IHNlbGYudGluZm9pbC5ydW5fY29tbWFuZCgnZ2V0UlByb3ZpZGVycycsIHNlbGYubWMpIG9yIHt9CiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHJhaXNlIEF0dHJpYnV0ZUVycm9yKCIlcyBpbnN0YW5jZSBoYXMgbm8gYXR0cmlidXRlICclcyciICUgKHNlbGYuX19jbGFzc19fLl9fbmFtZV9fLCBuYW1lKSkKIApAQCAtMTgyLDggKzE4Nyw5IEBACiAgICAgICAgIHNlbGYudGluZm9pbCA9IHRpbmZvaWwKICAgICAgICAgc2VsZi5jb2xsZWN0aW9uID0gc2VsZi5UaW5mb2lsQ29va2VyQ29sbGVjdGlvbkFkYXB0ZXIodGluZm9pbCkKICAgICAgICAgc2VsZi5yZWNpcGVjYWNoZXMgPSB7fQotICAgICAgICAjIEZJWE1FIGFsbCBtYWNoaW5lcwogICAgICAgICBzZWxmLnJlY2lwZWNhY2hlc1snJ10gPSBzZWxmLlRpbmZvaWxSZWNpcGVDYWNoZUFkYXB0ZXIodGluZm9pbCkKKyAgICAgICAgZm9yIG1jIGluICh0aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignQkJNVUxUSUNPTkZJRycpIG9yICcnKS5zcGxpdCgpOgorICAgICAgICAgICAgc2VsZi5yZWNpcGVjYWNoZXNbbWNdID0gc2VsZi5UaW5mb2lsUmVjaXBlQ2FjaGVBZGFwdGVyKHRpbmZvaWwsIG1jKQogICAgICAgICBzZWxmLl9jYWNoZSA9IHt9CiAgICAgZGVmIF9fZ2V0YXR0cl9fKHNlbGYsIG5hbWUpOgogICAgICAgICAjIEdyYWIgdGhlc2Ugb25seSB3aGVuIHRoZXkgYXJlIHJlcXVlc3RlZCBzaW5jZSB0aGV5IGFyZW4ndCBhbHdheXMgdXNlZApAQCAtNDEwLDkgKzQxNiw3IEBACiAgICAgICAgICAgICAgICAgc2VsZi5ydW5fYWN0aW9ucyhjb25maWdfcGFyYW1zKQogICAgICAgICAgICAgICAgIHNlbGYucmVjaXBlc19wYXJzZWQgPSBUcnVlCiAKLSAgICAgICAgICAgIHNlbGYuY29uZmlnX2RhdGEgPSBiYi5kYXRhLmluaXQoKQotICAgICAgICAgICAgY29ubmVjdG9yID0gVGluZm9pbERhdGFTdG9yZUNvbm5lY3RvcihzZWxmLCBOb25lKQotICAgICAgICAgICAgc2VsZi5jb25maWdfZGF0YS5zZXRWYXIoJ19yZW1vdGVfZGF0YScsIGNvbm5lY3RvcikKKyAgICAgICAgICAgIHNlbGYuY29uZmlnX2RhdGEgPSBUaW5mb2lsRGF0YVN0b3JlQ29ubmVjdG9yKHNlbGYsIDApCiAgICAgICAgICAgICBzZWxmLmNvb2tlciA9IFRpbmZvaWxDb29rZXJBZGFwdGVyKHNlbGYpCiAgICAgICAgICAgICBzZWxmLmNvb2tlcl9kYXRhID0gc2VsZi5jb29rZXIucmVjaXBlY2FjaGVzWycnXQogICAgICAgICBlbHNlOgpAQCAtNTAxLDExICs1MDUsMTEgQEAKICAgICAgICAgIiIiCiAgICAgICAgIHJldHVybiBPcmRlcmVkRGljdChzZWxmLnJ1bl9jb21tYW5kKCdnZXRTa2lwcGVkUmVjaXBlcycpKQogCi0gICAgZGVmIGdldF9hbGxfcHJvdmlkZXJzKHNlbGYpOgotICAgICAgICByZXR1cm4gZGVmYXVsdGRpY3QobGlzdCwgc2VsZi5ydW5fY29tbWFuZCgnYWxsUHJvdmlkZXJzJykpCisgICAgZGVmIGdldF9hbGxfcHJvdmlkZXJzKHNlbGYsIG1jPScnKToKKyAgICAgICAgcmV0dXJuIGRlZmF1bHRkaWN0KGxpc3QsIHNlbGYucnVuX2NvbW1hbmQoJ2FsbFByb3ZpZGVycycsIG1jKSkKIAotICAgIGRlZiBmaW5kX3Byb3ZpZGVycyhzZWxmKToKLSAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoJ2ZpbmRQcm92aWRlcnMnKQorICAgIGRlZiBmaW5kX3Byb3ZpZGVycyhzZWxmLCBtYz0nJyk6CisgICAgICAgIHJldHVybiBzZWxmLnJ1bl9jb21tYW5kKCdmaW5kUHJvdmlkZXJzJywgbWMpCiAKICAgICBkZWYgZmluZF9iZXN0X3Byb3ZpZGVyKHNlbGYsIHBuKToKICAgICAgICAgcmV0dXJuIHNlbGYucnVuX2NvbW1hbmQoJ2ZpbmRCZXN0UHJvdmlkZXInLCBwbikKQEAgLTYyNCw5ICs2MjgsNiBAQAogICAgICAgICAgICAgYXBwZW5kczogVHJ1ZSB0byBhcHBseSBiYmFwcGVuZHMsIEZhbHNlIG90aGVyd2lzZQogICAgICAgICAgICAgYXBwZW5kbGlzdDogb3B0aW9uYWwgbGlzdCBvZiBiYmFwcGVuZCBmaWxlcyB0byBhcHBseSwgaWYgeW91CiAgICAgICAgICAgICAgICAgICAgICAgICB3YW50IHRvIGZpbHRlciB0aGVtCi0gICAgICAgICAgICBjb25maWdfZGF0YTogY3VzdG9tIGNvbmZpZyBkYXRhc3RvcmUgdG8gdXNlLiBOT1RFOiBpZiB5b3UKLSAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IGNvbmZpZ19kYXRhIHRoZW4geW91IGNhbm5vdCB1c2UgYSB2aXJ0dWFsCi0gICAgICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWNhdGlvbiBmb3IgZm4uCiAgICAgICAgICIiIgogICAgICAgICBpZiBzZWxmLnRyYWNraW5nOgogICAgICAgICAgICAgIyBFbmFibGUgaGlzdG9yeSB0cmFja2luZyBqdXN0IGZvciB0aGUgcGFyc2Ugb3BlcmF0aW9uCkBAIC02MzUsOCArNjM2LDggQEAKICAgICAgICAgICAgIGlmIGFwcGVuZHMgYW5kIGFwcGVuZGxpc3QgPT0gW106CiAgICAgICAgICAgICAgICAgYXBwZW5kcyA9IEZhbHNlCiAgICAgICAgICAgICBpZiBjb25maWdfZGF0YToKLSAgICAgICAgICAgICAgICBkY3RyID0gYmIucmVtb3RlZGF0YS5SZW1vdGVEYXRhc3RvcmVzLnRyYW5zbWl0X2RhdGFzdG9yZShjb25maWdfZGF0YSkKLSAgICAgICAgICAgICAgICBkc2NvbiA9IHNlbGYucnVuX2NvbW1hbmQoJ3BhcnNlUmVjaXBlRmlsZScsIGZuLCBhcHBlbmRzLCBhcHBlbmRsaXN0LCBkY3RyKQorICAgICAgICAgICAgICAgICBjb25maWdfZGF0YSA9IGJiLmRhdGEuY3JlYXRlQ29weShjb25maWdfZGF0YSkKKyAgICAgICAgICAgICAgICAgZHNjb24gPSBzZWxmLnJ1bl9jb21tYW5kKCdwYXJzZVJlY2lwZUZpbGUnLCBmbiwgYXBwZW5kcywgYXBwZW5kbGlzdCwgY29uZmlnX2RhdGEuZHNpbmRleCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgZHNjb24gPSBzZWxmLnJ1bl9jb21tYW5kKCdwYXJzZVJlY2lwZUZpbGUnLCBmbiwgYXBwZW5kcywgYXBwZW5kbGlzdCkKICAgICAgICAgICAgIGlmIGRzY29uOgpAQCAtNzIzLDIxICs3MjQsOSBAQAogICAgICAgICAgICAgIyBCb3Jyb3dlZCBmcm9tIGtub3R0eSwgaW5zdGVhZCBzb21ld2hhdCBoYWNraWx5IHdlIHVzZSB0aGUgaGVscGVyCiAgICAgICAgICAgICAjIGFzIHRoZSBvYmplY3QgdG8gc3RvcmUgInNodXRkb3duIiBvbgogICAgICAgICAgICAgaGVscGVyID0gYmIudWkudWloZWxwZXIuQkJVSUhlbHBlcigpCi0gICAgICAgICAgICAjIFdlIHNldCB1cCBsb2dnaW5nIG9wdGlvbmFsbHkgaW4gdGhlIGNvbnN0cnVjdG9yIHNvIG5vdyB3ZSBuZWVkIHRvCi0gICAgICAgICAgICAjIGdyYWIgdGhlIGhhbmRsZXJzIHRvIHBhc3MgdG8gVGVybWluYWxGaWx0ZXIKLSAgICAgICAgICAgIGNvbnNvbGUgPSBOb25lCi0gICAgICAgICAgICBlcnJjb25zb2xlID0gTm9uZQotICAgICAgICAgICAgZm9yIGhhbmRsZXIgaW4gc2VsZi5sb2dnZXIuaGFuZGxlcnM6Ci0gICAgICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShoYW5kbGVyLCBsb2dnaW5nLlN0cmVhbUhhbmRsZXIpOgotICAgICAgICAgICAgICAgICAgICBpZiBoYW5kbGVyLnN0cmVhbSA9PSBzeXMuc3Rkb3V0OgotICAgICAgICAgICAgICAgICAgICAgICAgY29uc29sZSA9IGhhbmRsZXIKLSAgICAgICAgICAgICAgICAgICAgZWxpZiBoYW5kbGVyLnN0cmVhbSA9PSBzeXMuc3RkZXJyOgotICAgICAgICAgICAgICAgICAgICAgICAgZXJyY29uc29sZSA9IGhhbmRsZXIKLSAgICAgICAgICAgIGZvcm1hdF9zdHIgPSAiJShsZXZlbG5hbWUpczogJShtZXNzYWdlKXMiCi0gICAgICAgICAgICBmb3JtYXQgPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIoZm9ybWF0X3N0cikKICAgICAgICAgICAgIGhlbHBlci5zaHV0ZG93biA9IDAKICAgICAgICAgICAgIHBhcnNlcHJvZ3Jlc3MgPSBOb25lCi0gICAgICAgICAgICB0ZXJtZmlsdGVyID0gYmIudWkua25vdHR5LlRlcm1pbmFsRmlsdGVyKGhlbHBlciwgaGVscGVyLCBjb25zb2xlLCBlcnJjb25zb2xlLCBmb3JtYXQsIHF1aWV0PXNlbGYucXVpZXQpCisgICAgICAgICAgICB0ZXJtZmlsdGVyID0gYmIudWkua25vdHR5LlRlcm1pbmFsRmlsdGVyKGhlbHBlciwgaGVscGVyLCBzZWxmLmxvZ2dlci5oYW5kbGVycywgcXVpZXQ9c2VsZi5xdWlldCkKICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICB3aGlsZSBUcnVlOgogICAgICAgICAgICAgICAgICAgICB0cnk6CkBAIC04NTksOSArODQ4LDcgQEAKICAgICAgICAgICAgIG5ld29iaiA9IG9yaWd0eXBlKG9iaikKIAogICAgICAgICBpZiBpc2luc3RhbmNlKG5ld29iaiwgYmIuY29tbWFuZC5EYXRhU3RvcmVDb25uZWN0aW9uSGFuZGxlKToKLSAgICAgICAgICAgIGNvbm5lY3RvciA9IFRpbmZvaWxEYXRhU3RvcmVDb25uZWN0b3Ioc2VsZiwgbmV3b2JqLmRzaW5kZXgpCi0gICAgICAgICAgICBuZXdvYmogPSBiYi5kYXRhLmluaXQoKQotICAgICAgICAgICAgbmV3b2JqLnNldFZhcignX3JlbW90ZV9kYXRhJywgY29ubmVjdG9yKQorICAgICAgICAgICAgbmV3b2JqID0gVGluZm9pbERhdGFTdG9yZUNvbm5lY3RvcihzZWxmLCBuZXdvYmouZHNpbmRleCkKIAogICAgICAgICByZXR1cm4gbmV3b2JqCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvYnVpbGRpbmZvaGVscGVyLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS9idWlsZGluZm9oZWxwZXIucHkKaW5kZXggNWNiY2E5Ny4uODJjNjJlMyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS9idWlsZGluZm9oZWxwZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS9idWlsZGluZm9oZWxwZXIucHkKQEAgLTkzNSw3ICs5MzUsNyBAQAogCiAgICAgICAgICAgICAjIG9ubHkgcmVzZXQgdGhlIGJ1aWxkIG5hbWUgaWYgdGhlIG9uZSBvbiB0aGUgc2VydmVyIGlzIGFjdHVhbGx5CiAgICAgICAgICAgICAjIGEgdmFsaWQgdmFsdWUgZm9yIHRoZSBidWlsZF9uYW1lIGZpZWxkCi0gICAgICAgICAgICBpZiBidWlsZF9uYW1lICE9IE5vbmU6CisgICAgICAgICAgICBpZiBidWlsZF9uYW1lIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIGJ1aWxkX2luZm9bJ2J1aWxkX25hbWUnXSA9IGJ1aWxkX25hbWUKICAgICAgICAgICAgICAgICBjaGFuZ2VkID0gVHJ1ZQogCkBAIC0xMTk0LDcgKzExOTQsNyBAQAogICAgICAgICBldmRhdGEgPSBCdWlsZEluZm9IZWxwZXIuX2dldF9kYXRhX2Zyb21fZXZlbnQoZXZlbnQpCiAKICAgICAgICAgZm9yIHQgaW4gc2VsZi5pbnRlcm5hbF9zdGF0ZVsndGFyZ2V0cyddOgotICAgICAgICAgICAgaWYgdC5pc19pbWFnZSA9PSBUcnVlOgorICAgICAgICAgICAgaWYgdC5pc19pbWFnZToKICAgICAgICAgICAgICAgICBvdXRwdXRfZmlsZXMgPSBsaXN0KGV2ZGF0YS5rZXlzKCkpCiAgICAgICAgICAgICAgICAgZm9yIG91dHB1dCBpbiBvdXRwdXRfZmlsZXM6CiAgICAgICAgICAgICAgICAgICAgIGlmIHQudGFyZ2V0IGluIG91dHB1dCBhbmQgJ3Jvb3RmcycgaW4gb3V0cHV0IGFuZCBub3Qgb3V0cHV0LmVuZHN3aXRoKCIubWFuaWZlc3QiKToKQEAgLTEyMzYsNyArMTIzNiw3IEBACiAgICAgICAgICAgICAgICAgdGFza19pbmZvcm1hdGlvblsnb3V0Y29tZSddID0gVGFzay5PVVRDT01FX1BSRUJVSUxUCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB0YXNrX2luZm9ybWF0aW9uWyd0YXNrX2V4ZWN1dGVkJ10gPSBUcnVlCi0gICAgICAgICAgICBpZiAnbm9leGVjJyBpbiB2YXJzKGV2ZW50KSBhbmQgZXZlbnQubm9leGVjID09IFRydWU6CisgICAgICAgICAgICBpZiAnbm9leGVjJyBpbiB2YXJzKGV2ZW50KSBhbmQgZXZlbnQubm9leGVjOgogICAgICAgICAgICAgICAgIHRhc2tfaW5mb3JtYXRpb25bJ3Rhc2tfZXhlY3V0ZWQnXSA9IEZhbHNlCiAgICAgICAgICAgICAgICAgdGFza19pbmZvcm1hdGlvblsnb3V0Y29tZSddID0gVGFzay5PVVRDT01FX0VNUFRZCiAgICAgICAgICAgICAgICAgdGFza19pbmZvcm1hdGlvblsnc2NyaXB0X3R5cGUnXSA9IFRhc2suQ09ESU5HX05BCkBAIC0xNzc2LDcgKzE3NzYsNyBAQAogICAgICAgICBpbWFnZV9maWxlX2V4dGVuc2lvbnNfdW5pcXVlID0ge30KICAgICAgICAgaW1hZ2VfZnN0eXBlcyA9IHNlbGYuc2VydmVyLnJ1bkNvbW1hbmQoCiAgICAgICAgICAgICBbJ2dldFZhcmlhYmxlJywgJ0lNQUdFX0ZTVFlQRVMnXSlbMF0KLSAgICAgICAgaWYgaW1hZ2VfZnN0eXBlcyAhPSBOb25lOgorICAgICAgICBpZiBpbWFnZV9mc3R5cGVzIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgaW1hZ2VfdHlwZXNfc3RyID0gaW1hZ2VfZnN0eXBlcy5zdHJpcCgpCiAgICAgICAgICAgICBpbWFnZV9maWxlX2V4dGVuc2lvbnMgPSByZS5zdWIocicgezIsfScsICcgJywgaW1hZ2VfdHlwZXNfc3RyKQogICAgICAgICAgICAgaW1hZ2VfZmlsZV9leHRlbnNpb25zX3VuaXF1ZSA9IHNldChpbWFnZV9maWxlX2V4dGVuc2lvbnMuc3BsaXQoJyAnKSkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdWkva25vdHR5LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS9rbm90dHkucHkKaW5kZXggMzU3MzZhZC4uODdlODczZCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS9rbm90dHkucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS9rbm90dHkucHkKQEAgLTEyLDcgKzEyLDYgQEAKIAogaW1wb3J0IG9zCiBpbXBvcnQgc3lzCi1pbXBvcnQgeG1scnBjLmNsaWVudCBhcyB4bWxycGNsaWIKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgcHJvZ3Jlc3NiYXIKIGltcG9ydCBzaWduYWwKQEAgLTM1LDE1ICszNCwxNSBAQAogICAgICAgICBzZWxmLm1zZyA9IG1zZwogICAgICAgICBzZWxmLmV4dHJhcG9zID0gZXh0cmFwb3MKICAgICAgICAgaWYgbm90IHdpZGdldHM6Ci0gICAgICAgICAgICB3aWRnZXRzID0gW3Byb2dyZXNzYmFyLlBlcmNlbnRhZ2UoKSwgJyAnLCBwcm9ncmVzc2Jhci5CYXIoKSwgJyAnLAotICAgICAgICAgICAgcHJvZ3Jlc3NiYXIuRVRBKCldCi0gICAgICAgICAgICBzZWxmLmV4dHJhcG9zID0gNAorICAgICAgICAgICAgd2lkZ2V0cyA9IFsnOiAnLCBwcm9ncmVzc2Jhci5QZXJjZW50YWdlKCksICcgJywgcHJvZ3Jlc3NiYXIuQmFyKCksCisgICAgICAgICAgICAgICAgICAgICAgICcgJywgcHJvZ3Jlc3NiYXIuRVRBKCldCisgICAgICAgICAgICBzZWxmLmV4dHJhcG9zID0gNQogCiAgICAgICAgIGlmIHJlc2l6ZV9oYW5kbGVyOgogICAgICAgICAgICAgc2VsZi5fcmVzaXplX2RlZmF1bHQgPSByZXNpemVfaGFuZGxlcgogICAgICAgICBlbHNlOgogICAgICAgICAgICAgc2VsZi5fcmVzaXplX2RlZmF1bHQgPSBzaWduYWwuZ2V0c2lnbmFsKHNpZ25hbC5TSUdXSU5DSCkKLSAgICAgICAgcHJvZ3Jlc3NiYXIuUHJvZ3Jlc3NCYXIuX19pbml0X18oc2VsZiwgbWF4dmFsLCBbc2VsZi5tc2cgKyAiOiAiXSArIHdpZGdldHMsIGZkPXN5cy5zdGRvdXQpCisgICAgICAgIHByb2dyZXNzYmFyLlByb2dyZXNzQmFyLl9faW5pdF9fKHNlbGYsIG1heHZhbCwgW3NlbGYubXNnXSArIHdpZGdldHMsIGZkPXN5cy5zdGRvdXQpCiAKICAgICBkZWYgX2hhbmRsZV9yZXNpemUoc2VsZiwgc2lnbnVtPU5vbmUsIGZyYW1lPU5vbmUpOgogICAgICAgICBwcm9ncmVzc2Jhci5Qcm9ncmVzc0Jhci5faGFuZGxlX3Jlc2l6ZShzZWxmLCBzaWdudW0sIGZyYW1lKQpAQCAtMTEwLDEyICsxMDksMTEgQEAKIAogCiBjbGFzcyBJbnRlcmFjdENvbnNvbGVMb2dGaWx0ZXIobG9nZ2luZy5GaWx0ZXIpOgotICAgIGRlZiBfX2luaXRfXyhzZWxmLCB0ZiwgZm9ybWF0KToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgdGYpOgogICAgICAgICBzZWxmLnRmID0gdGYKLSAgICAgICAgc2VsZi5mb3JtYXQgPSBmb3JtYXQKIAogICAgIGRlZiBmaWx0ZXIoc2VsZiwgcmVjb3JkKToKLSAgICAgICAgaWYgcmVjb3JkLmxldmVsbm8gPT0gc2VsZi5mb3JtYXQuTk9URSBhbmQgKHJlY29yZC5tc2cuc3RhcnRzd2l0aCgiUnVubmluZyIpIG9yIHJlY29yZC5tc2cuc3RhcnRzd2l0aCgicmVjaXBlICIpKToKKyAgICAgICAgaWYgcmVjb3JkLmxldmVsbm8gPT0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLk5PVEUgYW5kIChyZWNvcmQubXNnLnN0YXJ0c3dpdGgoIlJ1bm5pbmciKSBvciByZWNvcmQubXNnLnN0YXJ0c3dpdGgoInJlY2lwZSAiKSk6CiAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgc2VsZi50Zi5jbGVhckZvb3RlcigpCiAgICAgICAgIHJldHVybiBUcnVlCkBAIC0xNTEsNyArMTQ5LDcgQEAKICAgICAgICAgICAgICAgICBjciA9ICgyNSwgODApCiAgICAgICAgIHJldHVybiBjcgogCi0gICAgZGVmIF9faW5pdF9fKHNlbGYsIG1haW4sIGhlbHBlciwgY29uc29sZSwgZXJyY29uc29sZSwgZm9ybWF0LCBxdWlldCk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIG1haW4sIGhlbHBlciwgaGFuZGxlcnMsIHF1aWV0KToKICAgICAgICAgc2VsZi5tYWluID0gbWFpbgogICAgICAgICBzZWxmLmhlbHBlciA9IGhlbHBlcgogICAgICAgICBzZWxmLmN1dSA9IE5vbmUKQEAgLTE4MSw3ICsxNzksMTEgQEAKICAgICAgICAgICAgIHRlcm1pb3MudGNzZXRhdHRyKGZkLCB0ZXJtaW9zLlRDU0FEUkFJTiwgbmV3KQogICAgICAgICAgICAgY3Vyc2VzLnNldHVwdGVybSgpCiAgICAgICAgICAgICBpZiBjdXJzZXMudGlnZXRudW0oImNvbG9ycyIpID4gMjoKLSAgICAgICAgICAgICAgICBmb3JtYXQuZW5hYmxlX2NvbG9yKCkKKyAgICAgICAgICAgICAgICBmb3IgaCBpbiBoYW5kbGVyczoKKyAgICAgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICAgICAgaC5mb3JtYXR0ZXIuZW5hYmxlX2NvbG9yKCkKKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yOgorICAgICAgICAgICAgICAgICAgICAgICAgcGFzcwogICAgICAgICAgICAgc2VsZi5lZCA9IGN1cnNlcy50aWdldHN0cigiZWQiKQogICAgICAgICAgICAgaWYgc2VsZi5lZDoKICAgICAgICAgICAgICAgICBzZWxmLmN1dSA9IGN1cnNlcy50aWdldHN0cigiY3V1IikKQEAgLTE5NywxMCArMTk5LDkgQEAKICAgICAgICAgICAgIHNlbGYuaW50ZXJhY3RpdmUgPSBGYWxzZQogICAgICAgICAgICAgYmIubm90ZSgiVW5hYmxlIHRvIHVzZSBpbnRlcmFjdGl2ZSBtb2RlIGZvciB0aGlzIHRlcm1pbmFsLCB1c2luZyBmYWxsYmFjayIpCiAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgaWYgY29uc29sZToKLSAgICAgICAgICAgIGNvbnNvbGUuYWRkRmlsdGVyKEludGVyYWN0Q29uc29sZUxvZ0ZpbHRlcihzZWxmLCBmb3JtYXQpKQotICAgICAgICBpZiBlcnJjb25zb2xlOgotICAgICAgICAgICAgZXJyY29uc29sZS5hZGRGaWx0ZXIoSW50ZXJhY3RDb25zb2xlTG9nRmlsdGVyKHNlbGYsIGZvcm1hdCkpCisKKyAgICAgICAgZm9yIGggaW4gaGFuZGxlcnM6CisgICAgICAgICAgICBoLmFkZEZpbHRlcihJbnRlcmFjdENvbnNvbGVMb2dGaWx0ZXIoc2VsZikpCiAKICAgICAgICAgc2VsZi5tYWluX3Byb2dyZXNzID0gTm9uZQogCkBAIC0yNTUsMTkgKzI1NiwxOSBAQAogICAgICAgICAgICAgICAgIHN0YXJ0X3RpbWUgPSBhY3RpdmV0YXNrc1t0XS5nZXQoInN0YXJ0dGltZSIsIE5vbmUpCiAgICAgICAgICAgICAgICAgaWYgbm90IHBiYXIgb3IgcGJhci5ib3VuY2luZyAhPSAocHJvZ3Jlc3MgPCAwKToKICAgICAgICAgICAgICAgICAgICAgaWYgcHJvZ3Jlc3MgPCAwOgotICAgICAgICAgICAgICAgICAgICAgICAgcGJhciA9IEJCUHJvZ3Jlc3MoIjA6ICVzIChwaWQgJXMpICIgJSAoYWN0aXZldGFza3NbdF1bInRpdGxlIl0sIHQpLCAxMDAsIHdpZGdldHM9W3Byb2dyZXNzYmFyLkJvdW5jaW5nU2xpZGVyKCksICcnXSwgZXh0cmFwb3M9MiwgcmVzaXplX2hhbmRsZXI9c2VsZi5zaWd3aW5jaF9oYW5kbGUpCisgICAgICAgICAgICAgICAgICAgICAgICBwYmFyID0gQkJQcm9ncmVzcygiMDogJXMgKHBpZCAlcykiICUgKGFjdGl2ZXRhc2tzW3RdWyJ0aXRsZSJdLCBhY3RpdmV0YXNrc1t0XVsicGlkIl0pLCAxMDAsIHdpZGdldHM9WycgJywgcHJvZ3Jlc3NiYXIuQm91bmNpbmdTbGlkZXIoKSwgJyddLCBleHRyYXBvcz0zLCByZXNpemVfaGFuZGxlcj1zZWxmLnNpZ3dpbmNoX2hhbmRsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHBiYXIuYm91bmNpbmcgPSBUcnVlCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICBwYmFyID0gQkJQcm9ncmVzcygiMDogJXMgKHBpZCAlcykgIiAlIChhY3RpdmV0YXNrc1t0XVsidGl0bGUiXSwgdCksIDEwMCwgd2lkZ2V0cz1bcHJvZ3Jlc3NiYXIuUGVyY2VudGFnZSgpLCAnICcsIHByb2dyZXNzYmFyLkJhcigpLCAnJ10sIGV4dHJhcG9zPTQsIHJlc2l6ZV9oYW5kbGVyPXNlbGYuc2lnd2luY2hfaGFuZGxlKQorICAgICAgICAgICAgICAgICAgICAgICAgcGJhciA9IEJCUHJvZ3Jlc3MoIjA6ICVzIChwaWQgJXMpIiAlIChhY3RpdmV0YXNrc1t0XVsidGl0bGUiXSwgYWN0aXZldGFza3NbdF1bInBpZCJdKSwgMTAwLCB3aWRnZXRzPVsnICcsIHByb2dyZXNzYmFyLlBlcmNlbnRhZ2UoKSwgJyAnLCBwcm9ncmVzc2Jhci5CYXIoKSwgJyddLCBleHRyYXBvcz01LCByZXNpemVfaGFuZGxlcj1zZWxmLnNpZ3dpbmNoX2hhbmRsZSkKICAgICAgICAgICAgICAgICAgICAgICAgIHBiYXIuYm91bmNpbmcgPSBGYWxzZQogICAgICAgICAgICAgICAgICAgICBhY3RpdmV0YXNrc1t0XVsicHJvZ3Jlc3NiYXIiXSA9IHBiYXIKICAgICAgICAgICAgICAgICB0YXNrcy5hcHBlbmQoKHBiYXIsIHByb2dyZXNzLCByYXRlLCBzdGFydF90aW1lKSkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgc3RhcnRfdGltZSA9IGFjdGl2ZXRhc2tzW3RdLmdldCgic3RhcnR0aW1lIiwgTm9uZSkKICAgICAgICAgICAgICAgICBpZiBzdGFydF90aW1lOgotICAgICAgICAgICAgICAgICAgICB0YXNrcy5hcHBlbmQoIiVzIC0gJXMgKHBpZCAlcykiICUgKGFjdGl2ZXRhc2tzW3RdWyJ0aXRsZSJdLCBzZWxmLmVsYXBzZWQoY3VycmVudHRpbWUgLSBzdGFydF90aW1lKSwgdCkpCisgICAgICAgICAgICAgICAgICAgIHRhc2tzLmFwcGVuZCgiJXMgLSAlcyAocGlkICVzKSIgJSAoYWN0aXZldGFza3NbdF1bInRpdGxlIl0sIHNlbGYuZWxhcHNlZChjdXJyZW50dGltZSAtIHN0YXJ0X3RpbWUpLCBhY3RpdmV0YXNrc1t0XVsicGlkIl0pKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgIHRhc2tzLmFwcGVuZCgiJXMgKHBpZCAlcykiICUgKGFjdGl2ZXRhc2tzW3RdWyJ0aXRsZSJdLCB0KSkKKyAgICAgICAgICAgICAgICAgICAgdGFza3MuYXBwZW5kKCIlcyAocGlkICVzKSIgJSAoYWN0aXZldGFza3NbdF1bInRpdGxlIl0sIGFjdGl2ZXRhc2tzW3RdWyJwaWQiXSkpCiAKICAgICAgICAgaWYgc2VsZi5tYWluLnNodXRkb3duOgogICAgICAgICAgICAgY29udGVudCA9ICJXYWl0aW5nIGZvciAlcyBydW5uaW5nIHRhc2tzIHRvIGZpbmlzaDoiICUgbGVuKGFjdGl2ZXRhc2tzKQpAQCAtMzYzLDcgKzM2NCwxMSBAQAogICAgIGlmIGVycm9yOgogICAgICAgICBsb2dnZXIuZXJyb3IoIlVuYWJsZSB0byBnZXQgdGhlIHZhbHVlIG9mIEJCX0NPTlNPTEVMT0cgdmFyaWFibGU6ICVzIiAlIGVycm9yKQogICAgICAgICByYWlzZSBCYXNlRXhjZXB0aW9uKGVycm9yKQotICAgIHJldHVybiBpbmNsdWRlbG9ncywgbG9nbGluZXMsIGNvbnNvbGVsb2dmaWxlCisgICAgbG9nY29uZmlnZmlsZSwgZXJyb3IgPSBzZXJ2ZXIucnVuQ29tbWFuZChbY21kLCAiQkJfTE9HQ09ORklHIl0pCisgICAgaWYgZXJyb3I6CisgICAgICAgIGxvZ2dlci5lcnJvcigiVW5hYmxlIHRvIGdldCB0aGUgdmFsdWUgb2YgQkJfTE9HQ09ORklHIHZhcmlhYmxlOiAlcyIgJSBlcnJvcikKKyAgICAgICAgcmFpc2UgQmFzZUV4Y2VwdGlvbihlcnJvcikKKyAgICByZXR1cm4gaW5jbHVkZWxvZ3MsIGxvZ2xpbmVzLCBjb25zb2xlbG9nZmlsZSwgbG9nY29uZmlnZmlsZQogCiBfZXZ0X2xpc3QgPSBbICJiYi5ydW5xdWV1ZS5ydW5RdWV1ZUV4aXRXYWl0IiwgImJiLmV2ZW50LkxvZ0V4ZWNUVFkiLCAibG9nZ2luZy5Mb2dSZWNvcmQiLAogICAgICAgICAgICAgICAiYmIuYnVpbGQuVGFza0ZhaWxlZCIsICJiYi5idWlsZC5UYXNrQmFzZSIsICJiYi5ldmVudC5QYXJzZVN0YXJ0ZWQiLApAQCAtMzgwLDcgKzM4NSwxNDggQEAKICAgICBpZiBub3QgcGFyYW1zLm9ic2VydmVfb25seToKICAgICAgICAgcGFyYW1zLnVwZGF0ZVRvU2VydmVyKHNlcnZlciwgb3MuZW52aXJvbi5jb3B5KCkpCiAKLSAgICBpbmNsdWRlbG9ncywgbG9nbGluZXMsIGNvbnNvbGVsb2dmaWxlID0gX2xvZ19zZXR0aW5nc19mcm9tX3NlcnZlcihzZXJ2ZXIsIHBhcmFtcy5vYnNlcnZlX29ubHkpCisgICAgaW5jbHVkZWxvZ3MsIGxvZ2xpbmVzLCBjb25zb2xlbG9nZmlsZSwgbG9nY29uZmlnZmlsZSA9IF9sb2dfc2V0dGluZ3NfZnJvbV9zZXJ2ZXIoc2VydmVyLCBwYXJhbXMub2JzZXJ2ZV9vbmx5KQorCisgICAgbG9nbGV2ZWwsIF8gPSBiYi5tc2cuY29uc3RydWN0TG9nT3B0aW9ucygpCisKKyAgICBpZiBwYXJhbXMub3B0aW9ucy5xdWlldCA9PSAwOgorICAgICAgICBjb25zb2xlX2xvZ2xldmVsID0gbG9nbGV2ZWwKKyAgICBlbGlmIHBhcmFtcy5vcHRpb25zLnF1aWV0ID4gMjoKKyAgICAgICAgY29uc29sZV9sb2dsZXZlbCA9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5FUlJPUgorICAgIGVsc2U6CisgICAgICAgIGNvbnNvbGVfbG9nbGV2ZWwgPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuV0FSTklORworCisgICAgbG9nY29uZmlnID0geworICAgICAgICAidmVyc2lvbiI6IDEsCisgICAgICAgICJoYW5kbGVycyI6IHsKKyAgICAgICAgICAgICJCaXRCYWtlLmNvbnNvbGUiOiB7CisgICAgICAgICAgICAgICAgImNsYXNzIjogImxvZ2dpbmcuU3RyZWFtSGFuZGxlciIsCisgICAgICAgICAgICAgICAgImZvcm1hdHRlciI6ICJCaXRCYWtlLmNvbnNvbGVGb3JtYXR0ZXIiLAorICAgICAgICAgICAgICAgICJsZXZlbCI6IGNvbnNvbGVfbG9nbGV2ZWwsCisgICAgICAgICAgICAgICAgInN0cmVhbSI6ICJleHQ6Ly9zeXMuc3Rkb3V0IiwKKyAgICAgICAgICAgICAgICAiZmlsdGVycyI6IFsiQml0QmFrZS5zdGRvdXRGaWx0ZXIiXSwKKyAgICAgICAgICAgICAgICAiLiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImlzX2NvbnNvbGUiOiBUcnVlLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgIkJpdEJha2UuZXJyY29uc29sZSI6IHsKKyAgICAgICAgICAgICAgICAiY2xhc3MiOiAibG9nZ2luZy5TdHJlYW1IYW5kbGVyIiwKKyAgICAgICAgICAgICAgICAiZm9ybWF0dGVyIjogIkJpdEJha2UuY29uc29sZUZvcm1hdHRlciIsCisgICAgICAgICAgICAgICAgImxldmVsIjogbG9nbGV2ZWwsCisgICAgICAgICAgICAgICAgInN0cmVhbSI6ICJleHQ6Ly9zeXMuc3RkZXJyIiwKKyAgICAgICAgICAgICAgICAiZmlsdGVycyI6IFsiQml0QmFrZS5zdGRlcnJGaWx0ZXIiXSwKKyAgICAgICAgICAgICAgICAiLiI6IHsKKyAgICAgICAgICAgICAgICAgICAgImlzX2NvbnNvbGUiOiBUcnVlLAorICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgIyBUaGlzIGhhbmRsZXIgY2FuIGJlIHVzZWQgaWYgc3BlY2lmaWMgbG9nZ2VycyBzaG91bGQgcHJpbnQgb24KKyAgICAgICAgICAgICMgdGhlIGNvbnNvbGUgYXQgYSBsb3dlciBzZXZlcml0eSB0aGFuIHRoZSBkZWZhdWx0LiBJdCB3aWxsCisgICAgICAgICAgICAjIGRpc3BsYXkgYW55IG1lc3NhZ2VzIHNlbnQgdG8gaXQgdGhhdCBhcmUgbG93ZXIgdGhhbiB0aGVuCisgICAgICAgICAgICAjIEJpdEJha2UuY29uc29sZSBsb2dnaW5nIGxldmVsIChzbyBhcyB0byBwcmV2ZW50IGR1cGxpY2F0aW9uIG9mCisgICAgICAgICAgICAjIG1lc3NhZ2VzKS4gTm90aGluZyBpcyBhdHRhY2hlZCB0byB0aGlzIGhhbmRsZXIgYnkgZGVmYXVsdAorICAgICAgICAgICAgIkJpdEJha2UudmVyYmNvbnNvbGUiOiB7CisgICAgICAgICAgICAgICAgImNsYXNzIjogImxvZ2dpbmcuU3RyZWFtSGFuZGxlciIsCisgICAgICAgICAgICAgICAgImZvcm1hdHRlciI6ICJCaXRCYWtlLmNvbnNvbGVGb3JtYXR0ZXIiLAorICAgICAgICAgICAgICAgICJsZXZlbCI6IDEsCisgICAgICAgICAgICAgICAgInN0cmVhbSI6ICJleHQ6Ly9zeXMuc3Rkb3V0IiwKKyAgICAgICAgICAgICAgICAiZmlsdGVycyI6IFsiQml0QmFrZS52ZXJiY29uc29sZUZpbHRlciJdLAorICAgICAgICAgICAgICAgICIuIjogeworICAgICAgICAgICAgICAgICAgICAiaXNfY29uc29sZSI6IFRydWUsCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0sCisgICAgICAgICJmb3JtYXR0ZXJzIjogeworICAgICAgICAgICAgIyBUaGlzIGZvcm1hdCBpbnN0YW5jZSB3aWxsIGdldCBjb2xvciBvdXRwdXQgZW5hYmxlZCBieSB0aGUKKyAgICAgICAgICAgICMgdGVybWluYWwKKyAgICAgICAgICAgICJCaXRCYWtlLmNvbnNvbGVGb3JtYXR0ZXIiIDogeworICAgICAgICAgICAgICAgICIoKSI6ICJiYi5tc2cuQkJMb2dGb3JtYXR0ZXIiLAorICAgICAgICAgICAgICAgICJmb3JtYXQiOiAiJShsZXZlbG5hbWUpczogJShtZXNzYWdlKXMiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgIyBUaGUgZmlsZSBsb2cgcmVxdWlyZXMgYSBzZXBhcmF0ZSBpbnN0YW5jZSBzbyB0aGF0IGl0IGRvZXNuJ3QgZ2V0CisgICAgICAgICAgICAjIGNvbG9yIGVuYWJsZWQKKyAgICAgICAgICAgICJCaXRCYWtlLmxvZ2ZpbGVGb3JtYXR0ZXIiOiB7CisgICAgICAgICAgICAgICAgIigpIjogImJiLm1zZy5CQkxvZ0Zvcm1hdHRlciIsCisgICAgICAgICAgICAgICAgImZvcm1hdCI6ICIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIKKyAgICAgICAgICAgIH0KKyAgICAgICAgfSwKKyAgICAgICAgImZpbHRlcnMiOiB7CisgICAgICAgICAgICAiQml0QmFrZS5zdGRvdXRGaWx0ZXIiOiB7CisgICAgICAgICAgICAgICAgIigpIjogImJiLm1zZy5Mb2dGaWx0ZXJMVExldmVsIiwKKyAgICAgICAgICAgICAgICAibGV2ZWwiOiAiRVJST1IiCisgICAgICAgICAgICB9LAorICAgICAgICAgICAgIkJpdEJha2Uuc3RkZXJyRmlsdGVyIjogeworICAgICAgICAgICAgICAgICIoKSI6ICJiYi5tc2cuTG9nRmlsdGVyR0VRTGV2ZWwiLAorICAgICAgICAgICAgICAgICJsZXZlbCI6ICJFUlJPUiIKKyAgICAgICAgICAgIH0sCisgICAgICAgICAgICAiQml0QmFrZS52ZXJiY29uc29sZUZpbHRlciI6IHsKKyAgICAgICAgICAgICAgICAiKCkiOiAiYmIubXNnLkxvZ0ZpbHRlckxUTGV2ZWwiLAorICAgICAgICAgICAgICAgICJsZXZlbCI6IGNvbnNvbGVfbG9nbGV2ZWwKKyAgICAgICAgICAgIH0sCisgICAgICAgIH0sCisgICAgICAgICJsb2dnZXJzIjogeworICAgICAgICAgICAgIkJpdEJha2UiOiB7CisgICAgICAgICAgICAgICAgImxldmVsIjogbG9nbGV2ZWwsCisgICAgICAgICAgICAgICAgImhhbmRsZXJzIjogWyJCaXRCYWtlLmNvbnNvbGUiLCAiQml0QmFrZS5lcnJjb25zb2xlIl0sCisgICAgICAgICAgICB9CisgICAgICAgIH0sCisgICAgICAgICJkaXNhYmxlX2V4aXN0aW5nX2xvZ2dlcnMiOiBGYWxzZQorICAgIH0KKworICAgICMgRW5hYmxlIHRoZSBjb25zb2xlIGxvZyBmaWxlIGlmIGVuYWJsZWQKKyAgICBpZiBjb25zb2xlbG9nZmlsZSBhbmQgbm90IHBhcmFtcy5vcHRpb25zLnNob3dfZW52aXJvbm1lbnQgYW5kIG5vdCBwYXJhbXMub3B0aW9ucy5zaG93X3ZlcnNpb25zOgorICAgICAgICBsb2djb25maWcgPSBiYi5tc2cubWVyZ2VMb2dnaW5nQ29uZmlnKGxvZ2NvbmZpZywgeworICAgICAgICAgICAgICAgICJ2ZXJzaW9uIjogMSwKKyAgICAgICAgICAgICAgICAiaGFuZGxlcnMiIDogeworICAgICAgICAgICAgICAgICAgICAiQml0QmFrZS5jb25zb2xlbG9nIjogeworICAgICAgICAgICAgICAgICAgICAgICAgImNsYXNzIjogImxvZ2dpbmcuRmlsZUhhbmRsZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgImZvcm1hdHRlciI6ICJCaXRCYWtlLmxvZ2ZpbGVGb3JtYXR0ZXIiLAorICAgICAgICAgICAgICAgICAgICAgICAgImxldmVsIjogbG9nbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZW5hbWUiOiBjb25zb2xlbG9nZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAgICAgIyBKdXN0IGxpa2UgdmVyYmNvbnNvbGUsIGFueXRoaW5nIHNlbnQgaGVyZSB3aWxsIGdvIHRvIHRoZQorICAgICAgICAgICAgICAgICAgICAjIGxvZyBmaWxlLCB1bmxlc3MgaXQgd291bGQgZ28gdG8gQml0QmFrZS5jb25zb2xlbG9nCisgICAgICAgICAgICAgICAgICAgICJCaXRCYWtlLnZlcmJjb25zb2xlbG9nIiA6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJjbGFzcyI6ICJsb2dnaW5nLkZpbGVIYW5kbGVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmb3JtYXR0ZXIiOiAiQml0QmFrZS5sb2dmaWxlRm9ybWF0dGVyIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJsZXZlbCI6IDEsCisgICAgICAgICAgICAgICAgICAgICAgICAiZmlsZW5hbWUiOiBjb25zb2xlbG9nZmlsZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJmaWx0ZXJzIjogWyJCaXRCYWtlLnZlcmJjb25zb2xlbG9nRmlsdGVyIl0sCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAiZmlsdGVycyI6IHsKKyAgICAgICAgICAgICAgICAgICAgIkJpdEJha2UudmVyYmNvbnNvbGVsb2dGaWx0ZXIiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAiKCkiOiAiYmIubXNnLkxvZ0ZpbHRlckxUTGV2ZWwiLAorICAgICAgICAgICAgICAgICAgICAgICAgImxldmVsIjogbG9nbGV2ZWwsCisgICAgICAgICAgICAgICAgICAgIH0sCisgICAgICAgICAgICAgICAgfSwKKyAgICAgICAgICAgICAgICAibG9nZ2VycyI6IHsKKyAgICAgICAgICAgICAgICAgICAgIkJpdEJha2UiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAiaGFuZGxlcnMiOiBbIkJpdEJha2UuY29uc29sZWxvZyJdLAorICAgICAgICAgICAgICAgICAgICB9LAorCisgICAgICAgICAgICAgICAgICAgICMgT3RoZXIgaW50ZXJlc3RpbmcgdGhpbmdzIHRoYXQgd2Ugd2FudCB0byBrZWVwIGFuIGV5ZSBvbgorICAgICAgICAgICAgICAgICAgICAjIGluIHRoZSBsb2cgZmlsZXMgaW4gY2FzZSBzb21lb25lIGhhcyBhbiBpc3N1ZSwgYnV0IG5vdAorICAgICAgICAgICAgICAgICAgICAjIG5lY2Vzc2FyaWx5IHNob3cgdG8gdGhlIHVzZXIgb24gdGhlIGNvbnNvbGUKKyAgICAgICAgICAgICAgICAgICAgIkJpdEJha2UuU2lnR2VuLkhhc2hFcXVpdiI6IHsKKyAgICAgICAgICAgICAgICAgICAgICAgICJsZXZlbCI6ICJWRVJCT1NFIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJoYW5kbGVycyI6IFsiQml0QmFrZS52ZXJiY29uc29sZWxvZyJdLAorICAgICAgICAgICAgICAgICAgICB9LAorICAgICAgICAgICAgICAgICAgICAiQml0QmFrZS5SdW5RdWV1ZS5IYXNoRXF1aXYiOiB7CisgICAgICAgICAgICAgICAgICAgICAgICAibGV2ZWwiOiAiVkVSQk9TRSIsCisgICAgICAgICAgICAgICAgICAgICAgICAiaGFuZGxlcnMiOiBbIkJpdEJha2UudmVyYmNvbnNvbGVsb2ciXSwKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgIH0pCisKKyAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShjb25zb2xlbG9nZmlsZSkpCisgICAgICAgIGxvZ2xpbmsgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGNvbnNvbGVsb2dmaWxlKSwgJ2NvbnNvbGUtbGF0ZXN0LmxvZycpCisgICAgICAgIGJiLnV0aWxzLnJlbW92ZShsb2dsaW5rKQorICAgICAgICB0cnk6CisgICAgICAgICAgIG9zLnN5bWxpbmsob3MucGF0aC5iYXNlbmFtZShjb25zb2xlbG9nZmlsZSksIGxvZ2xpbmspCisgICAgICAgIGV4Y2VwdCBPU0Vycm9yOgorICAgICAgICAgICBwYXNzCisKKyAgICBjb25mID0gYmIubXNnLnNldExvZ2dpbmdDb25maWcobG9nY29uZmlnLCBsb2djb25maWdmaWxlKQogCiAgICAgaWYgc3lzLnN0ZGluLmlzYXR0eSgpIGFuZCBzeXMuc3Rkb3V0LmlzYXR0eSgpOgogICAgICAgICBsb2dfZXhlY190dHkgPSBUcnVlCkBAIC0zODksMjMgKzUzNSw5IEBACiAKICAgICBoZWxwZXIgPSB1aWhlbHBlci5CQlVJSGVscGVyKCkKIAotICAgIGNvbnNvbGUgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0ZG91dCkKLSAgICBlcnJjb25zb2xlID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN5cy5zdGRlcnIpCi0gICAgZm9ybWF0X3N0ciA9ICIlKGxldmVsbmFtZSlzOiAlKG1lc3NhZ2UpcyIKLSAgICBmb3JtYXQgPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIoZm9ybWF0X3N0cikKLSAgICBpZiBwYXJhbXMub3B0aW9ucy5xdWlldCA9PSAwOgotICAgICAgICBmb3JjZWxldmVsID0gTm9uZQotICAgIGVsaWYgcGFyYW1zLm9wdGlvbnMucXVpZXQgPiAyOgotICAgICAgICBmb3JjZWxldmVsID0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLkVSUk9SCi0gICAgZWxzZToKLSAgICAgICAgZm9yY2VsZXZlbCA9IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5XQVJOSU5HCi0gICAgYmIubXNnLmFkZERlZmF1bHRsb2dGaWx0ZXIoY29uc29sZSwgYmIubXNnLkJCTG9nRmlsdGVyU3RkT3V0LCBmb3JjZWxldmVsKQotICAgIGJiLm1zZy5hZGREZWZhdWx0bG9nRmlsdGVyKGVycmNvbnNvbGUsIGJiLm1zZy5CQkxvZ0ZpbHRlclN0ZEVycikKLSAgICBjb25zb2xlLnNldEZvcm1hdHRlcihmb3JtYXQpCi0gICAgZXJyY29uc29sZS5zZXRGb3JtYXR0ZXIoZm9ybWF0KQotICAgIGlmIG5vdCBiYi5tc2cuaGFzX2NvbnNvbGVfaGFuZGxlcihsb2dnZXIpOgotICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihjb25zb2xlKQotICAgICAgICBsb2dnZXIuYWRkSGFuZGxlcihlcnJjb25zb2xlKQorICAgICMgTG9vayBmb3IgdGhlIHNwZWNpYWxseSBkZXNpZ25hdGVkIGhhbmRsZXJzIHdoaWNoIG5lZWQgdG8gYmUgcGFzc2VkIHRvIHRoZQorICAgICMgdGVybWluYWwgaGFuZGxlcgorICAgIGNvbnNvbGVfaGFuZGxlcnMgPSBbaCBmb3IgaCBpbiBjb25mLmNvbmZpZ1snaGFuZGxlcnMnXS52YWx1ZXMoKSBpZiBnZXRhdHRyKGgsICdpc19jb25zb2xlJywgRmFsc2UpXQogCiAgICAgYmIudXRpbHMuc2V0X3Byb2Nlc3NfbmFtZSgiS25vdHR5VUkiKQogCkBAIC00MTMsMjQgKzU0NSwxNCBAQAogICAgICAgICBzZXJ2ZXIudGVybWluYXRlU2VydmVyKCkKICAgICAgICAgcmV0dXJuCiAKLSAgICBjb25zb2xlbG9nID0gTm9uZQotICAgIGlmIGNvbnNvbGVsb2dmaWxlIGFuZCBub3QgcGFyYW1zLm9wdGlvbnMuc2hvd19lbnZpcm9ubWVudCBhbmQgbm90IHBhcmFtcy5vcHRpb25zLnNob3dfdmVyc2lvbnM6Ci0gICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoY29uc29sZWxvZ2ZpbGUpKQotICAgICAgICBjb25sb2dmb3JtYXQgPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIoZm9ybWF0X3N0cikKLSAgICAgICAgY29uc29sZWxvZyA9IGxvZ2dpbmcuRmlsZUhhbmRsZXIoY29uc29sZWxvZ2ZpbGUpCi0gICAgICAgIGJiLm1zZy5hZGREZWZhdWx0bG9nRmlsdGVyKGNvbnNvbGVsb2cpCi0gICAgICAgIGNvbnNvbGVsb2cuc2V0Rm9ybWF0dGVyKGNvbmxvZ2Zvcm1hdCkKLSAgICAgICAgbG9nZ2VyLmFkZEhhbmRsZXIoY29uc29sZWxvZykKLSAgICAgICAgbG9nbGluayA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoY29uc29sZWxvZ2ZpbGUpLCAnY29uc29sZS1sYXRlc3QubG9nJykKLSAgICAgICAgYmIudXRpbHMucmVtb3ZlKGxvZ2xpbmspCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgb3Muc3ltbGluayhvcy5wYXRoLmJhc2VuYW1lKGNvbnNvbGVsb2dmaWxlKSwgbG9nbGluaykKLSAgICAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICAgIHBhc3MKLQogICAgIGxsZXZlbCwgZGVidWdfZG9tYWlucyA9IGJiLm1zZy5jb25zdHJ1Y3RMb2dPcHRpb25zKCkKICAgICBzZXJ2ZXIucnVuQ29tbWFuZChbInNldEV2ZW50TWFzayIsIHNlcnZlci5nZXRFdmVudEhhbmRsZSgpLCBsbGV2ZWwsIGRlYnVnX2RvbWFpbnMsIF9ldnRfbGlzdF0pCiAKKyAgICAjIFRoZSBsb2dnaW5nX3RyZWUgbW9kdWxlIGlzICpleHRyZW1lbHkqIGhlbHBmdWwgaW4gZGVidWdnaW5nIGxvZ2dpbmcKKyAgICAjIGRvbWFpbnMuIFVuY29tbWVudCBoZXJlIHRvIGR1bXAgdGhlIGxvZ2dpbmcgdHJlZSB3aGVuIGJpdGJha2Ugc3RhcnRzCisgICAgI2ltcG9ydCBsb2dnaW5nX3RyZWUKKyAgICAjbG9nZ2luZ190cmVlLnByaW50b3V0KCkKKwogICAgIHVuaXZlcnNlID0gRmFsc2UKICAgICBpZiBub3QgcGFyYW1zLm9ic2VydmVfb25seToKICAgICAgICAgcGFyYW1zLnVwZGF0ZUZyb21TZXJ2ZXIoc2VydmVyKQpAQCAtNDQ4LDcgKzU3MCw3IEBACiAgICAgICAgIGlmIGVycm9yOgogICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJDb21tYW5kICclcycgZmFpbGVkOiAlcyIgJSAoY21kbGluZSwgZXJyb3IpKQogICAgICAgICAgICAgcmV0dXJuIDEKLSAgICAgICAgZWxpZiByZXQgIT0gVHJ1ZToKKyAgICAgICAgZWxpZiBub3QgcmV0OgogICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJDb21tYW5kICclcycgZmFpbGVkOiByZXR1cm5lZCAlcyIgJSAoY21kbGluZSwgcmV0KSkKICAgICAgICAgICAgIHJldHVybiAxCiAKQEAgLTQ2NSw3ICs1ODcsNyBAQAogICAgIHByaW50aW50ZXJ2YWwgPSA1MDAwCiAgICAgbGFzdHByaW50ID0gdGltZS50aW1lKCkKIAotICAgIHRlcm1maWx0ZXIgPSB0ZihtYWluLCBoZWxwZXIsIGNvbnNvbGUsIGVycmNvbnNvbGUsIGZvcm1hdCwgcGFyYW1zLm9wdGlvbnMucXVpZXQpCisgICAgdGVybWZpbHRlciA9IHRmKG1haW4sIGhlbHBlciwgY29uc29sZV9oYW5kbGVycywgcGFyYW1zLm9wdGlvbnMucXVpZXQpCiAgICAgYXRleGl0LnJlZ2lzdGVyKHRlcm1maWx0ZXIuZmluaXNoKQogCiAgICAgd2hpbGUgVHJ1ZToKQEAgLTQ3Nyw3ICs1OTksOCBAQAogICAgICAgICAgICAgaWYgZXZlbnQgaXMgTm9uZToKICAgICAgICAgICAgICAgICBpZiBtYWluLnNodXRkb3duID4gMToKICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSAgICAgICAgICAgICAgICB0ZXJtZmlsdGVyLnVwZGF0ZUZvb3RlcigpCisgICAgICAgICAgICAgICAgaWYgbm90IHBhcnNlcHJvZ3Jlc3M6CisgICAgICAgICAgICAgICAgICAgIHRlcm1maWx0ZXIudXBkYXRlRm9vdGVyKCkKICAgICAgICAgICAgICAgICBldmVudCA9IGV2ZW50SGFuZGxlci53YWl0RXZlbnQoMC4yNSkKICAgICAgICAgICAgICAgICBpZiBldmVudCBpcyBOb25lOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQpAQCAtNTAzLDI2ICs2MjYsMjYgQEAKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGxvZ2dpbmcuTG9nUmVjb3JkKToKICAgICAgICAgICAgICAgICBsYXN0cHJpbnQgPSB0aW1lLnRpbWUoKQogICAgICAgICAgICAgICAgIHByaW50aW50ZXJ2YWwgPSA1MDAwCi0gICAgICAgICAgICAgICAgaWYgZXZlbnQubGV2ZWxubyA+PSBmb3JtYXQuRVJST1I6CisgICAgICAgICAgICAgICAgaWYgZXZlbnQubGV2ZWxubyA+PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuRVJST1I6CiAgICAgICAgICAgICAgICAgICAgIGVycm9ycyA9IGVycm9ycyArIDEKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuX3ZhbHVlID0gMQotICAgICAgICAgICAgICAgIGVsaWYgZXZlbnQubGV2ZWxubyA9PSBmb3JtYXQuV0FSTklORzoKKyAgICAgICAgICAgICAgICBlbGlmIGV2ZW50LmxldmVsbm8gPT0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLldBUk5JTkc6CiAgICAgICAgICAgICAgICAgICAgIHdhcm5pbmdzID0gd2FybmluZ3MgKyAxCiAKICAgICAgICAgICAgICAgICBpZiBldmVudC50YXNrcGlkICE9IDA6CiAgICAgICAgICAgICAgICAgICAgICMgRm9yICJub3JtYWwiIGxvZ2dpbmcgY29uZGl0aW9ucywgZG9uJ3Qgc2hvdyBub3RlIGxvZ3MgZnJvbSB0YXNrcwogICAgICAgICAgICAgICAgICAgICAjIGJ1dCBkbyBzaG93IHRoZW0gaWYgdGhlIHVzZXIgaGFzIGNoYW5nZWQgdGhlIGRlZmF1bHQgbG9nIGxldmVsIHRvCiAgICAgICAgICAgICAgICAgICAgICMgaW5jbHVkZSB2ZXJib3NlL2RlYnVnIG1lc3NhZ2VzCi0gICAgICAgICAgICAgICAgICAgIGlmIGV2ZW50LmxldmVsbm8gPD0gZm9ybWF0Lk5PVEUgYW5kIChldmVudC5sZXZlbG5vIDwgbGxldmVsIG9yIChldmVudC5sZXZlbG5vID09IGZvcm1hdC5OT1RFIGFuZCBsbGV2ZWwgIT0gZm9ybWF0LlZFUkJPU0UpKToKKyAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQubGV2ZWxubyA8PSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuTk9URSBhbmQgKGV2ZW50LmxldmVsbm8gPCBsbGV2ZWwgb3IgKGV2ZW50LmxldmVsbm8gPT0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLk5PVEUgYW5kIGxsZXZlbCAhPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuVkVSQk9TRSkpOgogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgICAgICAgICAjIFByZWZpeCB0YXNrIG1lc3NhZ2VzIHdpdGggcmVjaXBlL3Rhc2sKLSAgICAgICAgICAgICAgICAgICAgaWYgZXZlbnQudGFza3BpZCBpbiBoZWxwZXIucnVubmluZ190YXNrcyBhbmQgZXZlbnQubGV2ZWxubyAhPSBmb3JtYXQuUExBSU46Ci0gICAgICAgICAgICAgICAgICAgICAgICB0YXNraW5mbyA9IGhlbHBlci5ydW5uaW5nX3Rhc2tzW2V2ZW50LnRhc2twaWRdCisgICAgICAgICAgICAgICAgICAgIGlmIGV2ZW50LnRhc2twaWQgaW4gaGVscGVyLnBpZG1hcCBhbmQgZXZlbnQubGV2ZWxubyAhPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuUExBSU46CisgICAgICAgICAgICAgICAgICAgICAgICB0YXNraW5mbyA9IGhlbHBlci5ydW5uaW5nX3Rhc2tzW2hlbHBlci5waWRtYXBbZXZlbnQudGFza3BpZF1dCiAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5tc2cgPSB0YXNraW5mb1sndGl0bGUnXSArICc6ICcgKyBldmVudC5tc2cKICAgICAgICAgICAgICAgICBpZiBoYXNhdHRyKGV2ZW50LCAnZm4nKToKICAgICAgICAgICAgICAgICAgICAgZXZlbnQubXNnID0gZXZlbnQuZm4gKyAnOiAnICsgZXZlbnQubXNnCi0gICAgICAgICAgICAgICAgbG9nZ2VyLmhhbmRsZShldmVudCkKKyAgICAgICAgICAgICAgICBsb2dnaW5nLmdldExvZ2dlcihldmVudC5uYW1lKS5oYW5kbGUoZXZlbnQpCiAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuYnVpbGQuVGFza0ZhaWxlZFNpbGVudCk6CkBAIC01MzksNiArNjYyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBpZiBldmVudC50b3RhbCA9PSAwOgogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIHRlcm1maWx0ZXIuY2xlYXJGb290ZXIoKQogICAgICAgICAgICAgICAgIHBhcnNlcHJvZ3Jlc3MgPSBuZXdfcHJvZ3Jlc3MoIlBhcnNpbmcgcmVjaXBlcyIsIGV2ZW50LnRvdGFsKS5zdGFydCgpCiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LlBhcnNlUHJvZ3Jlc3MpOgpAQCAtNTg5LDYgKzcxMyw3IEBACiAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb21tYW5kLkNvbW1hbmRFeGl0KToKICAgICAgICAgICAgICAgICBpZiBub3QgcmV0dXJuX3ZhbHVlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm5fdmFsdWUgPSBldmVudC5leGl0Y29kZQorICAgICAgICAgICAgICAgIG1haW4uc2h1dGRvd24gPSAyCiAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIChiYi5jb21tYW5kLkNvbW1hbmRDb21wbGV0ZWQsIGJiLmNvb2tlci5Db29rZXJFeGl0KSk6CiAgICAgICAgICAgICAgICAgbWFpbi5zaHV0ZG93biA9IDIKQEAgLTYzOCw2ICs3NjMsNyBAQAogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuUHJvY2Vzc1N0YXJ0ZWQpOgogICAgICAgICAgICAgICAgIGlmIHBhcmFtcy5vcHRpb25zLnF1aWV0ID4gMToKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICB0ZXJtZmlsdGVyLmNsZWFyRm9vdGVyKCkKICAgICAgICAgICAgICAgICBwYXJzZXByb2dyZXNzID0gbmV3X3Byb2dyZXNzKGV2ZW50LnByb2Nlc3NuYW1lLCBldmVudC50b3RhbCkKICAgICAgICAgICAgICAgICBwYXJzZXByb2dyZXNzLnN0YXJ0KEZhbHNlKQogICAgICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC03NDUsOCArODcxLDYgQEAKICAgICAgICAgaWYgZS5lcnJubyA9PSBlcnJuby5FUElQRToKICAgICAgICAgICAgIHBhc3MKIAotICAgIGlmIGNvbnNvbGVsb2c6Ci0gICAgICAgIGxvZ2dlci5yZW1vdmVIYW5kbGVyKGNvbnNvbGVsb2cpCi0gICAgICAgIGNvbnNvbGVsb2cuY2xvc2UoKQorICAgIGxvZ2dpbmcuc2h1dGRvd24oKQogCiAgICAgcmV0dXJuIHJldHVybl92YWx1ZQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS9uY3Vyc2VzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS9uY3Vyc2VzLnB5CmluZGV4IGM0MjI3MzIuLmRhNGZiZWEgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvbmN1cnNlcy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL25jdXJzZXMucHkKQEAgLTM3LDcgKzM3LDcgQEAKIAogCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IG9zLCBzeXMsIGl0ZXJ0b29scywgdGltZSwgc3VicHJvY2VzcworaW1wb3J0IG9zLCBzeXMsIGl0ZXJ0b29scywgdGltZQogCiB0cnk6CiAgICAgaW1wb3J0IGN1cnNlcwpAQCAtNDYsNyArNDYsNiBAQAogCiBpbXBvcnQgYmIKIGltcG9ydCB4bWxycGMuY2xpZW50Ci1mcm9tIGJiIGltcG9ydCB1aQogZnJvbSBiYi51aSBpbXBvcnQgdWloZWxwZXIKIAogcGFyc2VzcGluID0gaXRlcnRvb2xzLmN5Y2xlKCByJ3wvLVxcJyApCkBAIC0yMzksNyArMjM4LDcgQEAKICAgICAgICAgICAgIGlmIGVycm9yOgogICAgICAgICAgICAgICAgIHByaW50KCJFcnJvciBydW5uaW5nIGNvbW1hbmQgJyVzJzogJXMiICUgKGNtZGxpbmUsIGVycm9yKSkKICAgICAgICAgICAgICAgICByZXR1cm4KLSAgICAgICAgICAgIGVsaWYgcmV0ICE9IFRydWU6CisgICAgICAgICAgICBlbGlmIG5vdCByZXQ6CiAgICAgICAgICAgICAgICAgcHJpbnQoIkNvdWxkbid0IGdldCBkZWZhdWx0IGNvbW1hbmRsaW5kISAlcyIgJSByZXQpCiAgICAgICAgICAgICAgICAgcmV0dXJuCiAgICAgICAgIGV4Y2VwdCB4bWxycGMuY2xpZW50LkZhdWx0IGFzIHg6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3Rhc2tleHAucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3Rhc2tleHAucHkKaW5kZXggNTBhOTQzYy4uOGZmZjI0NCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS90YXNrZXhwLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdGFza2V4cC5weQpAQCAtMTEsMTAgKzExLDggQEAKIGltcG9ydCBnaQogZ2kucmVxdWlyZV92ZXJzaW9uKCdHdGsnLCAnMy4wJykKIGZyb20gZ2kucmVwb3NpdG9yeSBpbXBvcnQgR3RrLCBHZGssIEdPYmplY3QKLWZyb20gbXVsdGlwcm9jZXNzaW5nIGltcG9ydCBRdWV1ZQogaW1wb3J0IHRocmVhZGluZwogZnJvbSB4bWxycGMgaW1wb3J0IGNsaWVudAotaW1wb3J0IHRpbWUKIGltcG9ydCBiYgogaW1wb3J0IGJiLmV2ZW50CiAKQEAgLTIwMiw3ICsyMDAsNyBAQAogICAgICAgICBpZiBlcnJvcjoKICAgICAgICAgICAgIHByaW50KCJFcnJvciBydW5uaW5nIGNvbW1hbmQgJyVzJzogJXMiICUgKGNtZGxpbmUsIGVycm9yKSkKICAgICAgICAgICAgIHJldHVybiAxCi0gICAgICAgIGVsaWYgcmV0ICE9IFRydWU6CisgICAgICAgIGVsaWYgbm90IHJldDoKICAgICAgICAgICAgIHByaW50KCJFcnJvciBydW5uaW5nIGNvbW1hbmQgJyVzJzogcmV0dXJuZWQgJXMiICUgKGNtZGxpbmUsIHJldCkpCiAgICAgICAgICAgICByZXR1cm4gMQogICAgIGV4Y2VwdCBjbGllbnQuRmF1bHQgYXMgeDoKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdGVhbWNpdHkucHkgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3RlYW1jaXR5LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE4NTQyOTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3RlYW1jaXR5LnB5CkBAIC0wLDAgKzEsMzk4IEBACisjCisjIFRlYW1DaXR5IFVJIEltcGxlbWVudGF0aW9uCisjCisjIEltcGxlbWVudHMgYSBUZWFtQ2l0eSBmcm9udGVuZCBmb3IgdGhlIEJpdEJha2UgdXRpbGl0eSwgdmlhIHNlcnZpY2UgbWVzc2FnZXMuCisjIFNlZSBodHRwczovL3d3dy5qZXRicmFpbnMuY29tL2hlbHAvdGVhbWNpdHkvYnVpbGQtc2NyaXB0LWludGVyYWN0aW9uLXdpdGgtdGVhbWNpdHkuaHRtbAorIworIyBCYXNlZCBvbiBuY3Vyc2VzLnB5IGFuZCBrbm90dHkucHksIHZhcmlvdXNseSBieSBNaWNoYWVsIExhdWVyIGFuZCBSaWNoYXJkIFB1cmRpZQorIworIyBDb3B5cmlnaHQgKEMpIDIwMDYgTWljaGFlbCAnTWlja2V5JyBMYXVlcgorIyBDb3B5cmlnaHQgKEMpIDIwMDYtMjAxMiBSaWNoYXJkIFB1cmRpZQorIyBDb3B5cmlnaHQgKEMpIDIwMTgtMjAyMCBBZ2lsZW50IFRlY2hub2xvZ2llcywgSW5jLgorIworIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CisjCisjIEF1dGhvcjogQ2hyaXMgTGFwbGFudGUgPGNocmlzLmxhcGxhbnRlQGFnaWxlbnQuY29tPgorCitmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uCisKK2ltcG9ydCBkYXRldGltZQoraW1wb3J0IGxvZ2dpbmcKK2ltcG9ydCBtYXRoCitpbXBvcnQgb3MKK2ltcG9ydCByZQoraW1wb3J0IHN5cworaW1wb3J0IHhtbHJwYy5jbGllbnQKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlcXVlCisKK2ltcG9ydCBiYgoraW1wb3J0IGJiLmJ1aWxkCitpbXBvcnQgYmIuY29tbWFuZAoraW1wb3J0IGJiLmNvb2tlcgoraW1wb3J0IGJiLmV2ZW50CitpbXBvcnQgYmIuZXhjZXB0aW9ucworaW1wb3J0IGJiLnJ1bnF1ZXVlCitmcm9tIGJiLnVpIGltcG9ydCB1aWhlbHBlcgorCitsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigiQml0QmFrZSIpCisKKworY2xhc3MgVGVhbUNpdHlVSToKKyAgICBkZWYgX19pbml0X18oc2VsZik6CisgICAgICAgIHNlbGYuX2Jsb2NrX3N0YWNrID0gW10KKyAgICAgICAgc2VsZi5fbGFzdF9wcm9ncmVzc19zdGF0ZSA9IE5vbmUKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBlc2NhcGVfc2VydmljZV92YWx1ZShjbHMsIHZhbHVlKToKKyAgICAgICAgIiIiCisgICAgICAgIEVzY2FwZSBhIHZhbHVlIGZvciBpbmNsdXNpb24gaW4gYSBzZXJ2aWNlIG1lc3NhZ2UuIFRlYW1DaXR5IHVzZXMgdGhlIHZlcnRpY2FsIHBpcGUgY2hhcmFjdGVyIGZvciBlc2NhcGluZy4KKyAgICAgICAgU2VlOiBodHRwczovL2NvbmZsdWVuY2UuamV0YnJhaW5zLmNvbS9kaXNwbGF5L1RDRDEwL0J1aWxkK1NjcmlwdCtJbnRlcmFjdGlvbit3aXRoK1RlYW1DaXR5I0J1aWxkU2NyaXB0SW50ZXJhY3Rpb253aXRoVGVhbUNpdHktRXNjYXBlZHZhbHVlcworICAgICAgICAiIiIKKyAgICAgICAgcmV0dXJuIHJlLnN1YihyIihbJ3xcW1xdXSkiLCByInxcMSIsIHZhbHVlKS5yZXBsYWNlKCJcbiIsICJ8biIpLnJlcGxhY2UoIlxyIiwgInxyIikKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBlbWl0X3NlcnZpY2VfbWVzc2FnZShjbHMsIG1lc3NhZ2VfdHlwZSwgKiprd2FyZ3MpOgorICAgICAgICBwcmludChjbHMuZm9ybWF0X3NlcnZpY2VfbWVzc2FnZShtZXNzYWdlX3R5cGUsICoqa3dhcmdzKSwgZmx1c2g9VHJ1ZSkKKworICAgIEBjbGFzc21ldGhvZAorICAgIGRlZiBmb3JtYXRfc2VydmljZV9tZXNzYWdlKGNscywgbWVzc2FnZV90eXBlLCAqKmt3YXJncyk6CisgICAgICAgIHBheWxvYWQgPSAiICIuam9pbihbInswfT0nezF9JyIuZm9ybWF0KGssIGNscy5lc2NhcGVfc2VydmljZV92YWx1ZSh2KSkgZm9yIGssIHYgaW4ga3dhcmdzLml0ZW1zKCldKQorICAgICAgICByZXR1cm4gIiMjdGVhbWNpdHlbezB9IHsxfV0iLmZvcm1hdChtZXNzYWdlX3R5cGUsIHBheWxvYWQpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZW1pdF9zaW1wbGVfc2VydmljZV9tZXNzYWdlKGNscywgbWVzc2FnZV90eXBlLCBtZXNzYWdlKToKKyAgICAgICAgcHJpbnQoY2xzLmZvcm1hdF9zaW1wbGVfc2VydmljZV9tZXNzYWdlKG1lc3NhZ2VfdHlwZSwgbWVzc2FnZSksIGZsdXNoPVRydWUpCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgZm9ybWF0X3NpbXBsZV9zZXJ2aWNlX21lc3NhZ2UoY2xzLCBtZXNzYWdlX3R5cGUsIG1lc3NhZ2UpOgorICAgICAgICByZXR1cm4gIiMjdGVhbWNpdHlbezB9ICd7MX0nXSIuZm9ybWF0KG1lc3NhZ2VfdHlwZSwgY2xzLmVzY2FwZV9zZXJ2aWNlX3ZhbHVlKG1lc3NhZ2UpKQorCisgICAgQGNsYXNzbWV0aG9kCisgICAgZGVmIGZvcm1hdF9idWlsZF9tZXNzYWdlKGNscywgdGV4dCwgc3RhdHVzKToKKyAgICAgICAgcmV0dXJuIGNscy5mb3JtYXRfc2VydmljZV9tZXNzYWdlKCJtZXNzYWdlIiwgdGV4dD10ZXh0LCBzdGF0dXM9c3RhdHVzKQorCisgICAgZGVmIGJsb2NrX3N0YXJ0KHNlbGYsIG5hbWUpOgorICAgICAgICBzZWxmLl9ibG9ja19zdGFjay5hcHBlbmQobmFtZSkKKyAgICAgICAgc2VsZi5lbWl0X3NlcnZpY2VfbWVzc2FnZSgiYmxvY2tPcGVuZWQiLCBuYW1lPW5hbWUpCisKKyAgICBkZWYgYmxvY2tfZW5kKHNlbGYpOgorICAgICAgICBpZiBzZWxmLl9ibG9ja19zdGFjazoKKyAgICAgICAgICAgIG5hbWUgPSBzZWxmLl9ibG9ja19zdGFjay5wb3AoKQorICAgICAgICAgICAgc2VsZi5lbWl0X3NlcnZpY2VfbWVzc2FnZSgiYmxvY2tDbG9zZWQiLCBuYW1lPW5hbWUpCisKKyAgICBkZWYgcHJvZ3Jlc3Moc2VsZiwgbWVzc2FnZSwgcGVyY2VudCwgZXh0cmE9Tm9uZSk6CisgICAgICAgIG5vdyA9IGRhdGV0aW1lLmRhdGV0aW1lLm5vdygpCisgICAgICAgIHBlcmNlbnQgPSAiezA6ID4zLjBmfSIuZm9ybWF0KHBlcmNlbnQpCisKKyAgICAgICAgcmVwb3J0ID0gRmFsc2UKKyAgICAgICAgaWYgbm90IHNlbGYuX2xhc3RfcHJvZ3Jlc3Nfc3RhdGUgXAorICAgICAgICAgICAgICAgIG9yIChzZWxmLl9sYXN0X3Byb2dyZXNzX3N0YXRlWzBdID09IG1lc3NhZ2UKKyAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGYuX2xhc3RfcHJvZ3Jlc3Nfc3RhdGVbMV0gIT0gcGVyY2VudAorICAgICAgICAgICAgICAgICAgICBhbmQgKG5vdyAtIHNlbGYuX2xhc3RfcHJvZ3Jlc3Nfc3RhdGVbMl0pLm1pY3Jvc2Vjb25kcyA+PSA1MDAwKSBcCisgICAgICAgICAgICAgICAgb3Igc2VsZi5fbGFzdF9wcm9ncmVzc19zdGF0ZVswXSAhPSBtZXNzYWdlOgorICAgICAgICAgICAgcmVwb3J0ID0gVHJ1ZQorICAgICAgICAgICAgc2VsZi5fbGFzdF9wcm9ncmVzc19zdGF0ZSA9IChtZXNzYWdlLCBwZXJjZW50LCBub3cpCisKKyAgICAgICAgaWYgcmVwb3J0IG9yIHBlcmNlbnQgaW4gWzAsIDEwMF06CisgICAgICAgICAgICBzZWxmLmVtaXRfc2ltcGxlX3NlcnZpY2VfbWVzc2FnZSgicHJvZ3Jlc3NNZXNzYWdlIiwgInswfTogezF9JXsyfSIuZm9ybWF0KG1lc3NhZ2UsIHBlcmNlbnQsIGV4dHJhIG9yICIiKSkKKworCitjbGFzcyBUZWFtY2l0eUxvZ0Zvcm1hdHRlcihsb2dnaW5nLkZvcm1hdHRlcik6CisgICAgZGVmIGZvcm1hdChzZWxmLCByZWNvcmQpOgorICAgICAgICBkZXRhaWxzID0gIiIKKyAgICAgICAgaWYgaGFzYXR0cihyZWNvcmQsICdiYl9leGNfZm9ybWF0dGVkJyk6CisgICAgICAgICAgICBkZXRhaWxzID0gJycuam9pbihyZWNvcmQuYmJfZXhjX2Zvcm1hdHRlZCkKKyAgICAgICAgZWxpZiBoYXNhdHRyKHJlY29yZCwgJ2JiX2V4Y19pbmZvJyk6CisgICAgICAgICAgICBldHlwZSwgdmFsdWUsIHRiID0gcmVjb3JkLmJiX2V4Y19pbmZvCisgICAgICAgICAgICBmb3JtYXR0ZWQgPSBiYi5leGNlcHRpb25zLmZvcm1hdF9leGNlcHRpb24oZXR5cGUsIHZhbHVlLCB0YiwgbGltaXQ9NSkKKyAgICAgICAgICAgIGRldGFpbHMgPSAnJy5qb2luKGZvcm1hdHRlZCkKKworICAgICAgICBpZiByZWNvcmQubGV2ZWxubyBpbiBbYmIubXNnLkJCTG9nRm9ybWF0dGVyLkVSUk9SLCBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuQ1JJVElDQUxdOgorICAgICAgICAgICAgIyBFUlJPUiBnZXRzIGEgc2VwYXJhdGUgZXJyb3JEZXRhaWxzIGZpZWxkCisgICAgICAgICAgICBtc2cgPSBUZWFtQ2l0eVVJLmZvcm1hdF9zZXJ2aWNlX21lc3NhZ2UoIm1lc3NhZ2UiLCB0ZXh0PXJlY29yZC5nZXRNZXNzYWdlKCksIHN0YXR1cz0iRVJST1IiLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVycm9yRGV0YWlscz1kZXRhaWxzKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcGF5bG9hZCA9IHJlY29yZC5nZXRNZXNzYWdlKCkKKyAgICAgICAgICAgIGlmIGRldGFpbHM6CisgICAgICAgICAgICAgICAgcGF5bG9hZCArPSAiXG4iICsgZGV0YWlscworICAgICAgICAgICAgaWYgcmVjb3JkLmxldmVsbm8gPT0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLlBMQUlOOgorICAgICAgICAgICAgICAgIG1zZyA9IHBheWxvYWQKKyAgICAgICAgICAgIGVsaWYgcmVjb3JkLmxldmVsbm8gPT0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLldBUk5JTkc6CisgICAgICAgICAgICAgICAgbXNnID0gVGVhbUNpdHlVSS5mb3JtYXRfc2VydmljZV9tZXNzYWdlKCJtZXNzYWdlIiwgdGV4dD1wYXlsb2FkLCBzdGF0dXM9IldBUk5JTkciKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBtc2cgPSBUZWFtQ2l0eVVJLmZvcm1hdF9zZXJ2aWNlX21lc3NhZ2UoIm1lc3NhZ2UiLCB0ZXh0PXBheWxvYWQsIHN0YXR1cz0iTk9STUFMIikKKworICAgICAgICByZXR1cm4gbXNnCisKKworX2V2dF9saXN0ID0gWyJiYi5ydW5xdWV1ZS5ydW5RdWV1ZUV4aXRXYWl0IiwgImJiLmV2ZW50LkxvZ0V4ZWNUVFkiLCAibG9nZ2luZy5Mb2dSZWNvcmQiLAorICAgICAgICAgICAgICJiYi5idWlsZC5UYXNrRmFpbGVkIiwgImJiLmJ1aWxkLlRhc2tCYXNlIiwgImJiLmV2ZW50LlBhcnNlU3RhcnRlZCIsCisgICAgICAgICAgICAgImJiLmV2ZW50LlBhcnNlUHJvZ3Jlc3MiLCAiYmIuZXZlbnQuUGFyc2VDb21wbGV0ZWQiLCAiYmIuZXZlbnQuQ2FjaGVMb2FkU3RhcnRlZCIsCisgICAgICAgICAgICAgImJiLmV2ZW50LkNhY2hlTG9hZFByb2dyZXNzIiwgImJiLmV2ZW50LkNhY2hlTG9hZENvbXBsZXRlZCIsICJiYi5jb21tYW5kLkNvbW1hbmRGYWlsZWQiLAorICAgICAgICAgICAgICJiYi5jb21tYW5kLkNvbW1hbmRFeGl0IiwgImJiLmNvbW1hbmQuQ29tbWFuZENvbXBsZXRlZCIsICJiYi5jb29rZXIuQ29va2VyRXhpdCIsCisgICAgICAgICAgICAgImJiLmV2ZW50Lk11bHRpcGxlUHJvdmlkZXJzIiwgImJiLmV2ZW50Lk5vUHJvdmlkZXIiLCAiYmIucnVucXVldWUuc2NlbmVRdWV1ZVRhc2tTdGFydGVkIiwKKyAgICAgICAgICAgICAiYmIucnVucXVldWUucnVuUXVldWVUYXNrU3RhcnRlZCIsICJiYi5ydW5xdWV1ZS5ydW5RdWV1ZVRhc2tGYWlsZWQiLCAiYmIucnVucXVldWUuc2NlbmVRdWV1ZVRhc2tGYWlsZWQiLAorICAgICAgICAgICAgICJiYi5ldmVudC5CdWlsZEJhc2UiLCAiYmIuYnVpbGQuVGFza1N0YXJ0ZWQiLCAiYmIuYnVpbGQuVGFza1N1Y2NlZWRlZCIsICJiYi5idWlsZC5UYXNrRmFpbGVkU2lsZW50IiwKKyAgICAgICAgICAgICAiYmIuYnVpbGQuVGFza1Byb2dyZXNzIiwgImJiLmV2ZW50LlByb2Nlc3NTdGFydGVkIiwgImJiLmV2ZW50LlByb2Nlc3NQcm9ncmVzcyIsICJiYi5ldmVudC5Qcm9jZXNzRmluaXNoZWQiXQorCisKK2RlZiBfbG9nX3NldHRpbmdzX2Zyb21fc2VydmVyKHNlcnZlcik6CisgICAgIyBHZXQgdmFsdWVzIG9mIHZhcmlhYmxlcyB3aGljaCBjb250cm9sIG91ciBvdXRwdXQKKyAgICBpbmNsdWRlbG9ncywgZXJyb3IgPSBzZXJ2ZXIucnVuQ29tbWFuZChbImdldFZhcmlhYmxlIiwgIkJCSU5DTFVERUxPR1MiXSkKKyAgICBpZiBlcnJvcjoKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJVbmFibGUgdG8gZ2V0IHRoZSB2YWx1ZSBvZiBCQklOQ0xVREVMT0dTIHZhcmlhYmxlOiAlcyIgJSBlcnJvcikKKyAgICAgICAgcmFpc2UgQmFzZUV4Y2VwdGlvbihlcnJvcikKKyAgICBsb2dsaW5lcywgZXJyb3IgPSBzZXJ2ZXIucnVuQ29tbWFuZChbImdldFZhcmlhYmxlIiwgIkJCSU5DTFVERUxPR1NfTElORVMiXSkKKyAgICBpZiBlcnJvcjoKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJVbmFibGUgdG8gZ2V0IHRoZSB2YWx1ZSBvZiBCQklOQ0xVREVMT0dTX0xJTkVTIHZhcmlhYmxlOiAlcyIgJSBlcnJvcikKKyAgICAgICAgcmFpc2UgQmFzZUV4Y2VwdGlvbihlcnJvcikKKyAgICByZXR1cm4gaW5jbHVkZWxvZ3MsIGxvZ2xpbmVzCisKKworZGVmIG1haW4oc2VydmVyLCBldmVudEhhbmRsZXIsIHBhcmFtcyk6CisgICAgcGFyYW1zLnVwZGF0ZVRvU2VydmVyKHNlcnZlciwgb3MuZW52aXJvbi5jb3B5KCkpCisKKyAgICBpbmNsdWRlbG9ncywgbG9nbGluZXMgPSBfbG9nX3NldHRpbmdzX2Zyb21fc2VydmVyKHNlcnZlcikKKworICAgIHVpID0gVGVhbUNpdHlVSSgpCisKKyAgICBoZWxwZXIgPSB1aWhlbHBlci5CQlVJSGVscGVyKCkKKworICAgIGNvbnNvbGUgPSBsb2dnaW5nLlN0cmVhbUhhbmRsZXIoc3lzLnN0ZG91dCkKKyAgICBlcnJjb25zb2xlID0gbG9nZ2luZy5TdHJlYW1IYW5kbGVyKHN5cy5zdGRlcnIpCisgICAgZm9ybWF0ID0gVGVhbWNpdHlMb2dGb3JtYXR0ZXIoKQorICAgIGlmIHBhcmFtcy5vcHRpb25zLnF1aWV0ID09IDA6CisgICAgICAgIGZvcmNlbGV2ZWwgPSBOb25lCisgICAgZWxpZiBwYXJhbXMub3B0aW9ucy5xdWlldCA+IDI6CisgICAgICAgIGZvcmNlbGV2ZWwgPSBiYi5tc2cuQkJMb2dGb3JtYXR0ZXIuRVJST1IKKyAgICBlbHNlOgorICAgICAgICBmb3JjZWxldmVsID0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLldBUk5JTkcKKyAgICBiYi5tc2cuYWRkRGVmYXVsdGxvZ0ZpbHRlcihjb25zb2xlLCBiYi5tc2cuQkJMb2dGaWx0ZXJTdGRPdXQsIGZvcmNlbGV2ZWwpCisgICAgYmIubXNnLmFkZERlZmF1bHRsb2dGaWx0ZXIoZXJyY29uc29sZSwgYmIubXNnLkJCTG9nRmlsdGVyU3RkRXJyKQorICAgIGNvbnNvbGUuc2V0Rm9ybWF0dGVyKGZvcm1hdCkKKyAgICBlcnJjb25zb2xlLnNldEZvcm1hdHRlcihmb3JtYXQpCisgICAgaWYgbm90IGJiLm1zZy5oYXNfY29uc29sZV9oYW5kbGVyKGxvZ2dlcik6CisgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGNvbnNvbGUpCisgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKGVycmNvbnNvbGUpCisKKyAgICBpZiBwYXJhbXMub3B0aW9ucy5yZW1vdGVfc2VydmVyIGFuZCBwYXJhbXMub3B0aW9ucy5raWxsX3NlcnZlcjoKKyAgICAgICAgc2VydmVyLnRlcm1pbmF0ZVNlcnZlcigpCisgICAgICAgIHJldHVybgorCisgICAgaWYgcGFyYW1zLm9ic2VydmVfb25seToKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJPYnNlcnZlLW9ubHkgbW9kZSBub3Qgc3VwcG9ydGVkIGluIHRoaXMgVUkiKQorICAgICAgICByZXR1cm4gMQorCisgICAgbGxldmVsLCBkZWJ1Z19kb21haW5zID0gYmIubXNnLmNvbnN0cnVjdExvZ09wdGlvbnMoKQorICAgIHNlcnZlci5ydW5Db21tYW5kKFsic2V0RXZlbnRNYXNrIiwgc2VydmVyLmdldEV2ZW50SGFuZGxlKCksIGxsZXZlbCwgZGVidWdfZG9tYWlucywgX2V2dF9saXN0XSkKKworICAgIHRyeToKKyAgICAgICAgcGFyYW1zLnVwZGF0ZUZyb21TZXJ2ZXIoc2VydmVyKQorICAgICAgICBjbWRsaW5lID0gcGFyYW1zLnBhcnNlQWN0aW9ucygpCisgICAgICAgIGlmIG5vdCBjbWRsaW5lOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJObyB0YXNrIGdpdmVuIikKKyAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgIGlmICdtc2cnIGluIGNtZGxpbmUgYW5kIGNtZGxpbmVbJ21zZyddOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKGNtZGxpbmVbJ21zZyddKQorICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgY21kbGluZSA9IGNtZGxpbmVbJ2FjdGlvbiddCisgICAgICAgIHJldCwgZXJyb3IgPSBzZXJ2ZXIucnVuQ29tbWFuZChjbWRsaW5lKQorICAgICAgICBpZiBlcnJvcjoKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiezB9OiB7MX0iLmZvcm1hdChjbWRsaW5lLCBlcnJvcikpCisgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICBlbGlmIG5vdCByZXQ6CisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNvdWxkbid0IGdldCBkZWZhdWx0IGNvbW1hbmRsaW5lOiB7MH0iLmZvcm1hdChyZSkpCisgICAgICAgICAgICByZXR1cm4gMQorICAgIGV4Y2VwdCB4bWxycGMuY2xpZW50LkZhdWx0IGFzIHg6CisgICAgICAgIGxvZ2dlci5lcnJvcigiWE1MUlBDIEZhdWx0IGdldHRpbmcgY29tbWFuZGxpbmU6IHswfSIuZm9ybWF0KHgpKQorICAgICAgICByZXR1cm4gMQorCisgICAgYWN0aXZlX3Byb2Nlc3NfdG90YWwgPSBOb25lCisgICAgaXNfdGFza3NfcnVubmluZyA9IEZhbHNlCisKKyAgICB3aGlsZSBUcnVlOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBldmVudCA9IGV2ZW50SGFuZGxlci53YWl0RXZlbnQoMC4yNSkKKyAgICAgICAgICAgIGlmIG5vdCBldmVudDoKKyAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICBoZWxwZXIuZXZlbnRIYW5kbGVyKGV2ZW50KQorCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrQmFzZSk6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oZXZlbnQuX21lc3NhZ2UpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBsb2dnaW5nLkxvZ1JlY29yZCk6CisgICAgICAgICAgICAgICAgIyBEb24ndCByZXBvcnQgc3N0YXRlIGZhaWx1cmVzIGFzIGVycm9ycywgc2luY2UgWW9jdG8gd2lsbCBqdXN0IHJ1biB0aGUgdGFza3MgZm9yIHJlYWwKKyAgICAgICAgICAgICAgICBpZiBldmVudC5tc2cgPT0gIk5vIHN1aXRhYmxlIHN0YWdpbmcgcGFja2FnZSBmb3VuZCIgb3IgKGV2ZW50Lm1zZy5zdGFydHN3aXRoKAorICAgICAgICAgICAgICAgICAgICAgICAgIkZldGNoZXIgZmFpbHVyZTogVW5hYmxlIHRvIGZpbmQgZmlsZSIpIGFuZCAiZG93bmxvYWRmaWxlbmFtZSIgaW4gZXZlbnQubXNnIGFuZCAic3N0YXRlIiBpbiBldmVudC5tc2cpOgorICAgICAgICAgICAgICAgICAgICBldmVudC5sZXZlbG5vID0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLldBUk5JTkcKKyAgICAgICAgICAgICAgICBpZiBldmVudC50YXNrcGlkICE9IDA6CisgICAgICAgICAgICAgICAgICAgICMgRm9yICJub3JtYWwiIGxvZ2dpbmcgY29uZGl0aW9ucywgZG9uJ3Qgc2hvdyBub3RlIGxvZ3MgZnJvbSB0YXNrcworICAgICAgICAgICAgICAgICAgICAjIGJ1dCBkbyBzaG93IHRoZW0gaWYgdGhlIHVzZXIgaGFzIGNoYW5nZWQgdGhlIGRlZmF1bHQgbG9nIGxldmVsIHRvCisgICAgICAgICAgICAgICAgICAgICMgaW5jbHVkZSB2ZXJib3NlL2RlYnVnIG1lc3NhZ2VzCisgICAgICAgICAgICAgICAgICAgIGlmIGV2ZW50LmxldmVsbm8gPD0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLk5PVEUgYW5kIChldmVudC5sZXZlbG5vIDwgbGxldmVsIG9yICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBldmVudC5sZXZlbG5vID09IGJiLm1zZy5CQkxvZ0Zvcm1hdHRlci5OT1RFIGFuZCBsbGV2ZWwgIT0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLlZFUkJPU0UpKToKKyAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCisKKyAgICAgICAgICAgICAgICAgICAgIyBQcmVmaXggdGFzayBtZXNzYWdlcyB3aXRoIHJlY2lwZS90YXNrCisgICAgICAgICAgICAgICAgICAgIGlmIGV2ZW50LnRhc2twaWQgaW4gaGVscGVyLnJ1bm5pbmdfdGFza3MgYW5kIGV2ZW50LmxldmVsbm8gIT0gYmIubXNnLkJCTG9nRm9ybWF0dGVyLlBMQUlOOgorICAgICAgICAgICAgICAgICAgICAgICAgdGFza2luZm8gPSBoZWxwZXIucnVubmluZ190YXNrc1tldmVudC50YXNrcGlkXQorICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQubXNnID0gdGFza2luZm9bJ3RpdGxlJ10gKyAnOiAnICsgZXZlbnQubXNnCisgICAgICAgICAgICAgICAgaWYgaGFzYXR0cihldmVudCwgJ2ZuJyk6CisgICAgICAgICAgICAgICAgICAgIGV2ZW50Lm1zZyA9IGV2ZW50LmZuICsgJzogJyArIGV2ZW50Lm1zZworICAgICAgICAgICAgICAgIGxvZ2dlci5oYW5kbGUoZXZlbnQpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrRmFpbGVkU2lsZW50KToKKyAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZygiTG9nZmlsZSBmb3IgZmFpbGVkIHNldHNjZW5lIHRhc2sgaXMgJXMiICUgZXZlbnQubG9nZmlsZSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuYnVpbGQuVGFza0ZhaWxlZCk6CisgICAgICAgICAgICAgICAgcnQgPSAiezB9LXsxfTp7Mn0iLmZvcm1hdChldmVudC5wbiwgZXZlbnQucHYucmVwbGFjZSgiQVVUT0lOQyIsICIwIiksIGV2ZW50LnRhc2spCisKKyAgICAgICAgICAgICAgICBsb2dmaWxlID0gZXZlbnQubG9nZmlsZQorICAgICAgICAgICAgICAgIGlmIG5vdCBsb2dmaWxlIG9yIG5vdCBvcy5wYXRoLmV4aXN0cyhsb2dmaWxlKToKKyAgICAgICAgICAgICAgICAgICAgVGVhbUNpdHlVSS5lbWl0X3NlcnZpY2VfbWVzc2FnZSgiYnVpbGRQcm9ibGVtIiwgZGVzY3JpcHRpb249InswfVxuVW5rbm93biBmYWlsdXJlIChubyBsb2cgZmlsZSBhdmFpbGFibGUpIi5mb3JtYXQocnQpKQorICAgICAgICAgICAgICAgICAgICBpZiBub3QgZXZlbnQudGFzay5lbmRzd2l0aCgiX3NldHNjZW5lIik6CisgICAgICAgICAgICAgICAgICAgICAgICBzZXJ2ZXIucnVuQ29tbWFuZChbInN0YXRlRm9yY2VTaHV0ZG93biJdKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgICAgICAgICAgZGV0YWlscyA9IGRlcXVlKG1heGxlbj1sb2dsaW5lcykKKyAgICAgICAgICAgICAgICBlcnJvcl9saW5lcyA9IFtdCisgICAgICAgICAgICAgICAgaWYgaW5jbHVkZWxvZ3MgYW5kIG5vdCBldmVudC5lcnJwcmludGVkOgorICAgICAgICAgICAgICAgICAgICB3aXRoIG9wZW4obG9nZmlsZSwgInIiKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgVHJ1ZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaW5lID0gZi5yZWFkbGluZSgpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGxpbmU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmUucnN0cmlwKCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXRhaWxzLmFwcGVuZCgnIHwgJXMnICUgbGluZSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIFRPRE86IGEgbGVzcyBzdHVwaWQgY2hlY2sgZm9yIGVycm9ycworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChldmVudC50YXNrID09ICJkb19jb21waWxlIikgYW5kICgiZXJyb3I6IiBpbiBsaW5lKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXJyb3JfbGluZXMuYXBwZW5kKGxpbmUpCisKKyAgICAgICAgICAgICAgICBpZiBlcnJvcl9saW5lczoKKyAgICAgICAgICAgICAgICAgICAgVGVhbUNpdHlVSS5lbWl0X3NlcnZpY2VfbWVzc2FnZSgiY29tcGlsYXRpb25TdGFydGVkIiwgY29tcGlsZXI9cnQpCisgICAgICAgICAgICAgICAgICAgIGZvciBsaW5lIGluIGVycm9yX2xpbmVzOgorICAgICAgICAgICAgICAgICAgICAgICAgVGVhbUNpdHlVSS5lbWl0X3NlcnZpY2VfbWVzc2FnZSgibWVzc2FnZSIsIHRleHQ9bGluZSwgc3RhdHVzPSJFUlJPUiIpCisgICAgICAgICAgICAgICAgICAgIFRlYW1DaXR5VUkuZW1pdF9zZXJ2aWNlX21lc3NhZ2UoImNvbXBpbGF0aW9uRmluaXNoZWQiLCBjb21waWxlcj1ydCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBUZWFtQ2l0eVVJLmVtaXRfc2VydmljZV9tZXNzYWdlKCJidWlsZFByb2JsZW0iLCBkZXNjcmlwdGlvbj1ydCkKKworICAgICAgICAgICAgICAgIGVyciA9ICJMb2dmaWxlIG9mIGZhaWx1cmUgc3RvcmVkIGluOiAlcyIgJSBsb2dmaWxlCisgICAgICAgICAgICAgICAgaWYgZGV0YWlsczoKKyAgICAgICAgICAgICAgICAgICAgdWkuYmxvY2tfc3RhcnQoInswfSB0YXNrIGxvZyIuZm9ybWF0KHJ0KSkKKyAgICAgICAgICAgICAgICAgICAgIyBUZWFtQ2l0eSBzZWVtcyB0byBjaG9rZSBvbiBzZXJ2aWNlIG1lc3NhZ2VzIGxvbmdlciB0aGFuIGFib3V0IDYzODAwIGNoYXJhY3RlcnMsIHNvIGlmIGVycm9yCisgICAgICAgICAgICAgICAgICAgICMgZGV0YWlscyBpcyBsb25nZXIgdGhhbiwgc2F5LCA2MDAwMCwgYmF0Y2ggaXQgdXAgaW50byBzZXZlcmFsIG1lc3NhZ2VzLgorICAgICAgICAgICAgICAgICAgICBmaXJzdF9tZXNzYWdlID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICB3aGlsZSBkZXRhaWxzOgorICAgICAgICAgICAgICAgICAgICAgICAgZGV0YWlsX2xlbiA9IDAKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhdGNoID0gZGVxdWUoKQorICAgICAgICAgICAgICAgICAgICAgICAgd2hpbGUgZGV0YWlscyBhbmQgZGV0YWlsX2xlbiA8IDYwMDAwOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgVE9ETzogVGhpcyBjb2RlIGRvZXNuJ3QgYm90aGVyIHRvIGhhbmRsZSBsaW5lcyB0aGF0IHRoZW1zZWx2ZXMgYXJlIGV4dHJlbWVseSBsb25nLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpbmUgPSBkZXRhaWxzLnBvcGxlZnQoKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJhdGNoLmFwcGVuZChsaW5lKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRldGFpbF9sZW4gKz0gbGVuKGxpbmUpCisKKyAgICAgICAgICAgICAgICAgICAgICAgIGlmIGZpcnN0X21lc3NhZ2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmF0Y2guYXBwZW5kbGVmdCgiTG9nIGRhdGEgZm9sbG93czoiKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZpcnN0X21lc3NhZ2UgPSBGYWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlYW1DaXR5VUkuZW1pdF9zZXJ2aWNlX21lc3NhZ2UoIm1lc3NhZ2UiLCB0ZXh0PWVyciwgc3RhdHVzPSJFUlJPUiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvckRldGFpbHM9IlxuIi5qb2luKGJhdGNoKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVhbUNpdHlVSS5lbWl0X3NlcnZpY2VfbWVzc2FnZSgibWVzc2FnZSIsIHRleHQ9Iltjb250aW51ZWRdIiwgc3RhdHVzPSJFUlJPUiIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJvckRldGFpbHM9IlxuIi5qb2luKGJhdGNoKSkKKyAgICAgICAgICAgICAgICAgICAgdWkuYmxvY2tfZW5kKCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBUZWFtQ2l0eVVJLmVtaXRfc2VydmljZV9tZXNzYWdlKCJtZXNzYWdlIiwgdGV4dD1lcnIsIHN0YXR1cz0iRVJST1IiLCBlcnJvckRldGFpbHM9IiIpCisKKyAgICAgICAgICAgICAgICBpZiBub3QgZXZlbnQudGFzay5lbmRzd2l0aCgiX3NldHNjZW5lIik6CisgICAgICAgICAgICAgICAgICAgIHNlcnZlci5ydW5Db21tYW5kKFsic3RhdGVGb3JjZVNodXRkb3duIl0pCisKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LlByb2Nlc3NTdGFydGVkKToKKyAgICAgICAgICAgICAgICBpZiBldmVudC5wcm9jZXNzbmFtZSBpbiBbIkluaXRpYWxpc2luZyB0YXNrcyIsICJDaGVja2luZyBzc3RhdGUgbWlycm9yIG9iamVjdCBhdmFpbGFiaWxpdHkiXToKKyAgICAgICAgICAgICAgICAgICAgYWN0aXZlX3Byb2Nlc3NfdG90YWwgPSBldmVudC50b3RhbAorICAgICAgICAgICAgICAgICAgICB1aS5ibG9ja19zdGFydChldmVudC5wcm9jZXNzbmFtZSkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LlByb2Nlc3NGaW5pc2hlZCk6CisgICAgICAgICAgICAgICAgaWYgZXZlbnQucHJvY2Vzc25hbWUgaW4gWyJJbml0aWFsaXNpbmcgdGFza3MiLCAiQ2hlY2tpbmcgc3N0YXRlIG1pcnJvciBvYmplY3QgYXZhaWxhYmlsaXR5Il06CisgICAgICAgICAgICAgICAgICAgIHVpLnByb2dyZXNzKGV2ZW50LnByb2Nlc3NuYW1lLCAxMDApCisgICAgICAgICAgICAgICAgICAgIHVpLmJsb2NrX2VuZCgpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5Qcm9jZXNzUHJvZ3Jlc3MpOgorICAgICAgICAgICAgICAgIGlmIGV2ZW50LnByb2Nlc3NuYW1lIGluIFsiSW5pdGlhbGlzaW5nIHRhc2tzIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkNoZWNraW5nIHNzdGF0ZSBtaXJyb3Igb2JqZWN0IGF2YWlsYWJpbGl0eSJdIGFuZCBhY3RpdmVfcHJvY2Vzc190b3RhbCAhPSAwOgorICAgICAgICAgICAgICAgICAgICB1aS5wcm9ncmVzcyhldmVudC5wcm9jZXNzbmFtZSwgZXZlbnQucHJvZ3Jlc3MgKiAxMDAgLyBhY3RpdmVfcHJvY2Vzc190b3RhbCkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LkNhY2hlTG9hZFN0YXJ0ZWQpOgorICAgICAgICAgICAgICAgIHVpLmJsb2NrX3N0YXJ0KCJMb2FkaW5nIGNhY2hlIikKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LkNhY2hlTG9hZFByb2dyZXNzKToKKyAgICAgICAgICAgICAgICBpZiBldmVudC50b3RhbCAhPSAwOgorICAgICAgICAgICAgICAgICAgICB1aS5wcm9ncmVzcygiTG9hZGluZyBjYWNoZSIsIG1hdGguZmxvb3IoZXZlbnQuY3VycmVudCAqIDEwMCAvIGV2ZW50LnRvdGFsKSkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LkNhY2hlTG9hZENvbXBsZXRlZCk6CisgICAgICAgICAgICAgICAgdWkucHJvZ3Jlc3MoIkxvYWRpbmcgY2FjaGUiLCAxMDApCisgICAgICAgICAgICAgICAgdWkuYmxvY2tfZW5kKCkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LlBhcnNlU3RhcnRlZCk6CisgICAgICAgICAgICAgICAgdWkuYmxvY2tfc3RhcnQoIlBhcnNpbmcgcmVjaXBlcyBhbmQgY2hlY2tpbmcgdXBzdHJlYW0gcmV2aXNpb25zIikKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50LlBhcnNlUHJvZ3Jlc3MpOgorICAgICAgICAgICAgICAgIGlmIGV2ZW50LnRvdGFsICE9IDA6CisgICAgICAgICAgICAgICAgICAgIHVpLnByb2dyZXNzKCJQYXJzaW5nIHJlY2lwZXMiLCBtYXRoLmZsb29yKGV2ZW50LmN1cnJlbnQgKiAxMDAgLyBldmVudC50b3RhbCkpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5QYXJzZUNvbXBsZXRlZCk6CisgICAgICAgICAgICAgICAgdWkucHJvZ3Jlc3MoIlBhcnNpbmcgcmVjaXBlcyIsIDEwMCkKKyAgICAgICAgICAgICAgICB1aS5ibG9ja19lbmQoKQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuY29tbWFuZC5Db21tYW5kQ29tcGxldGVkKToKKyAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmNvbW1hbmQuQ29tbWFuZEZhaWxlZCk6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKHN0cihldmVudCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmV2ZW50Lk11bHRpcGxlUHJvdmlkZXJzKToKKyAgICAgICAgICAgICAgICBsb2dnZXIud2FybmluZyhzdHIoZXZlbnQpKQorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ldmVudC5Ob1Byb3ZpZGVyKToKKyAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3Ioc3RyKGV2ZW50KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuY29tbWFuZC5Db21tYW5kRXhpdCk6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5jb29rZXIuQ29va2VyRXhpdCk6CisgICAgICAgICAgICAgICAgcmV0dXJuCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ydW5xdWV1ZS5zY2VuZVF1ZXVlVGFza1N0YXJ0ZWQpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBpc190YXNrc19ydW5uaW5nOgorICAgICAgICAgICAgICAgICAgICBpc190YXNrc19ydW5uaW5nID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICB1aS5ibG9ja19zdGFydCgiUnVubmluZyB0YXNrcyIpCisgICAgICAgICAgICAgICAgaWYgZXZlbnQuc3RhdHMudG90YWwgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgdWkucHJvZ3Jlc3MoIlJ1bm5pbmcgc2V0c2NlbmUgdGFza3MiLCAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXZlbnQuc3RhdHMuY29tcGxldGVkICsgZXZlbnQuc3RhdHMuYWN0aXZlICsgZXZlbnQuc3RhdHMuZmFpbGVkICsgMSkgKiAxMDAgLyBldmVudC5zdGF0cy50b3RhbCkKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLnJ1bnF1ZXVlLnJ1blF1ZXVlVGFza1N0YXJ0ZWQpOgorICAgICAgICAgICAgICAgIGlmIG5vdCBpc190YXNrc19ydW5uaW5nOgorICAgICAgICAgICAgICAgICAgICBpc190YXNrc19ydW5uaW5nID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICB1aS5ibG9ja19zdGFydCgiUnVubmluZyB0YXNrcyIpCisgICAgICAgICAgICAgICAgaWYgZXZlbnQuc3RhdHMudG90YWwgIT0gMDoKKyAgICAgICAgICAgICAgICAgICAgcHNldWRvX3RvdGFsID0gZXZlbnQuc3RhdHMudG90YWwgLSBldmVudC5zdGF0cy5za2lwcGVkCisgICAgICAgICAgICAgICAgICAgIHBzZXVkb19jb21wbGV0ZSA9IGV2ZW50LnN0YXRzLmNvbXBsZXRlZCArIGV2ZW50LnN0YXRzLmFjdGl2ZSAtIGV2ZW50LnN0YXRzLnNraXBwZWQgKyBldmVudC5zdGF0cy5mYWlsZWQgKyAxCisgICAgICAgICAgICAgICAgICAgICMgVE9ETzogc29tZXRpbWVzIHRoaXMgZ2l2ZXMgb3ZlciAxMDAlCisgICAgICAgICAgICAgICAgICAgIHVpLnByb2dyZXNzKCJSdW5uaW5nIHJ1bnF1ZXVlIHRhc2tzIiwgKHBzZXVkb19jb21wbGV0ZSkgKiAxMDAgLyBwc2V1ZG9fdG90YWwsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiAoezB9L3sxfSkiLmZvcm1hdChwc2V1ZG9fY29tcGxldGUsIHBzZXVkb190b3RhbCkpCisgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5ydW5xdWV1ZS5zY2VuZVF1ZXVlVGFza0ZhaWxlZCk6CisgICAgICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoc3RyKGV2ZW50KSkKKyAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIucnVucXVldWUucnVuUXVldWVUYXNrRmFpbGVkKToKKyAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3Ioc3RyKGV2ZW50KSkKKyAgICAgICAgICAgICAgICByZXR1cm4gMQorICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuZXZlbnQuTG9nRXhlY1RUWSk6CisgICAgICAgICAgICAgICAgcGFzcworICAgICAgICBleGNlcHQgRW52aXJvbm1lbnRFcnJvciBhcyBpb2Vycm9yOgorICAgICAgICAgICAgIyBpZ25vcmUgaW50ZXJydXB0ZWQgaW8KKyAgICAgICAgICAgIGlmIGlvZXJyb3IuYXJnc1swXSA9PSA0OgorICAgICAgICAgICAgICAgIHBhc3MKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBleDoKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcihzdHIoZXgpKQorCisgICAgICAgICMgZXhjZXB0IEtleWJvYXJkSW50ZXJydXB0OgorICAgICAgICAjICAgICBpZiBzaHV0ZG93biA9PSAyOgorICAgICAgICAjICAgICAgICAgbXcuYXBwZW5kVGV4dCgiVGhpcmQgS2V5Ym9hcmQgSW50ZXJydXB0LCBleGl0LlxuIikKKyAgICAgICAgIyAgICAgICAgIGV4aXRmbGFnID0gVHJ1ZQorICAgICAgICAjICAgICBpZiBzaHV0ZG93biA9PSAxOgorICAgICAgICAjICAgICAgICAgbXcuYXBwZW5kVGV4dCgiU2Vjb25kIEtleWJvYXJkIEludGVycnVwdCwgc3RvcHBpbmcuLi5cbiIpCisgICAgICAgICMgICAgICAgICBfLCBlcnJvciA9IHNlcnZlci5ydW5Db21tYW5kKFsic3RhdGVGb3JjZVNodXRkb3duIl0pCisgICAgICAgICMgICAgICAgICBpZiBlcnJvcjoKKyAgICAgICAgIyAgICAgICAgICAgICBwcmludCgiVW5hYmxlIHRvIGNsZWFubHkgc3RvcDogJXMiICUgZXJyb3IpCisgICAgICAgICMgICAgIGlmIHNodXRkb3duID09IDA6CisgICAgICAgICMgICAgICAgICBtdy5hcHBlbmRUZXh0KCJLZXlib2FyZCBJbnRlcnJ1cHQsIGNsb3NpbmcgZG93bi4uLlxuIikKKyAgICAgICAgIyAgICAgICAgIF8sIGVycm9yID0gc2VydmVyLnJ1bkNvbW1hbmQoWyJzdGF0ZVNodXRkb3duIl0pCisgICAgICAgICMgICAgICAgICBpZiBlcnJvcjoKKyAgICAgICAgIyAgICAgICAgICAgICBwcmludCgiVW5hYmxlIHRvIGNsZWFubHkgc2h1dGRvd246ICVzIiAlIGVycm9yKQorICAgICAgICAjICAgICBzaHV0ZG93biA9IHNodXRkb3duICsgMQorICAgICAgICAjICAgICBwYXNzCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3RvYXN0ZXJ1aS5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdG9hc3RlcnVpLnB5CmluZGV4IDUxODkyYzkuLjkyNjBmNWQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdG9hc3RlcnVpLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdG9hc3RlcnVpLnB5CkBAIC0xNzYsNyArMTc2LDcgQEAKICAgICAgICAgaWYgZXJyb3I6CiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNvbW1hbmQgJyVzJyBmYWlsZWQ6ICVzIiAlIChjbWRsaW5lLCBlcnJvcikpCiAgICAgICAgICAgICByZXR1cm4gMQotICAgICAgICBlbGlmIHJldCAhPSBUcnVlOgorICAgICAgICBlbGlmIG5vdCByZXQ6CiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNvbW1hbmQgJyVzJyBmYWlsZWQ6IHJldHVybmVkICVzIiAlIChjbWRsaW5lLCByZXQpKQogICAgICAgICAgICAgcmV0dXJuIDEKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS91aWV2ZW50LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi91aS91aWV2ZW50LnB5CmluZGV4IGZlZGIwNTAuLjEzZDBkNGEgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdWlldmVudC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3VpZXZlbnQucHkKQEAgLTQ2LDcgKzQ2LDcgQEAKICAgICAgICAgICAgICAgICBzZWxmLkV2ZW50SGFuZGxlID0gcmV0CiAgICAgICAgICAgICAgICAgZXJyb3IgPSAiIgogCi0gICAgICAgICAgICBpZiBzZWxmLkV2ZW50SGFuZGxlICE9IE5vbmU6CisgICAgICAgICAgICBpZiBzZWxmLkV2ZW50SGFuZGxlIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIGJyZWFrCiAKICAgICAgICAgICAgIGVycm1zZyA9ICJDb3VsZCBub3QgcmVnaXN0ZXIgVUkgZXZlbnQgaGFuZGxlci4gRXJyb3I6ICVzLCBob3N0ICVzLCAiXApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS91aWhlbHBlci5weSBiL3Bva3kvYml0YmFrZS9saWIvYmIvdWkvdWloZWxwZXIucHkKaW5kZXggYzhkZDdkZi4uNDhkODA4YSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYi91aS91aWhlbHBlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JiL3VpL3VpaGVscGVyLnB5CkBAIC0xNSwzOSArMTUsNDggQEAKICAgICAgICAgIyBSdW5uaW5nIFBJRHMgcHJlc2VydmVzIHRoZSBvcmRlciB0YXNrcyB3ZXJlIGV4ZWN1dGVkIGluCiAgICAgICAgIHNlbGYucnVubmluZ19waWRzID0gW10KICAgICAgICAgc2VsZi5mYWlsZWRfdGFza3MgPSBbXQorICAgICAgICBzZWxmLnBpZG1hcCA9IHt9CiAgICAgICAgIHNlbGYudGFza251bWJlcl9jdXJyZW50ID0gMAogICAgICAgICBzZWxmLnRhc2tudW1iZXJfdG90YWwgPSAwCiAKICAgICBkZWYgZXZlbnRIYW5kbGVyKHNlbGYsIGV2ZW50KToKKyAgICAgICAgIyBQSURzIGFyZSBhIGJhZCBpZGVhIGFzIHRoZXkgY2FuIGJlIHJldXNlZCBiZWZvcmUgd2UgcHJvY2VzcyBhbGwgVUkgZXZlbnRzLgorICAgICAgICAjIFdlIG1haW50YWluIGEgJ2Z1enp5JyBtYXRjaCBmb3IgVGFza1Byb2dyZXNzIHNpbmNlIHRoZXJlIGlzIG5vIG90aGVyIHdheSB0byBtYXRjaAorICAgICAgICBkZWYgcmVtb3ZldGlkKHBpZCwgdGlkKToKKyAgICAgICAgICAgIHNlbGYucnVubmluZ19waWRzLnJlbW92ZSh0aWQpCisgICAgICAgICAgICBkZWwgc2VsZi5ydW5uaW5nX3Rhc2tzW3RpZF0KKyAgICAgICAgICAgIGlmIHNlbGYucGlkbWFwW3BpZF0gPT0gdGlkOgorICAgICAgICAgICAgICAgIGRlbCBzZWxmLnBpZG1hcFtwaWRdCisgICAgICAgICAgICBzZWxmLm5lZWRVcGRhdGUgPSBUcnVlCisKICAgICAgICAgaWYgaXNpbnN0YW5jZShldmVudCwgYmIuYnVpbGQuVGFza1N0YXJ0ZWQpOgorICAgICAgICAgICAgdGlkID0gZXZlbnQuX2ZuICsgIjoiICsgZXZlbnQuX3Rhc2sKICAgICAgICAgICAgIGlmIGV2ZW50Ll9tYyAhPSAiZGVmYXVsdCI6Ci0gICAgICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3Rhc2tzW2V2ZW50LnBpZF0gPSB7ICd0aXRsZScgOiAibWM6JXM6JXMgJXMiICUgKGV2ZW50Ll9tYywgZXZlbnQuX3BhY2thZ2UsIGV2ZW50Ll90YXNrKSwgJ3N0YXJ0dGltZScgOiB0aW1lLnRpbWUoKSB9CisgICAgICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3Rhc2tzW3RpZF0gPSB7ICd0aXRsZScgOiAibWM6JXM6JXMgJXMiICUgKGV2ZW50Ll9tYywgZXZlbnQuX3BhY2thZ2UsIGV2ZW50Ll90YXNrKSwgJ3N0YXJ0dGltZScgOiB0aW1lLnRpbWUoKSwgJ3BpZCcgOiBldmVudC5waWQgfQogICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBzZWxmLnJ1bm5pbmdfdGFza3NbZXZlbnQucGlkXSA9IHsgJ3RpdGxlJyA6ICIlcyAlcyIgJSAoZXZlbnQuX3BhY2thZ2UsIGV2ZW50Ll90YXNrKSwgJ3N0YXJ0dGltZScgOiB0aW1lLnRpbWUoKSB9Ci0gICAgICAgICAgICBzZWxmLnJ1bm5pbmdfcGlkcy5hcHBlbmQoZXZlbnQucGlkKQorICAgICAgICAgICAgICAgIHNlbGYucnVubmluZ190YXNrc1t0aWRdID0geyAndGl0bGUnIDogIiVzICVzIiAlIChldmVudC5fcGFja2FnZSwgZXZlbnQuX3Rhc2spLCAnc3RhcnR0aW1lJyA6IHRpbWUudGltZSgpLCAncGlkJyA6IGV2ZW50LnBpZCB9CisgICAgICAgICAgICBzZWxmLnJ1bm5pbmdfcGlkcy5hcHBlbmQodGlkKQorICAgICAgICAgICAgc2VsZi5waWRtYXBbZXZlbnQucGlkXSA9IHRpZAogICAgICAgICAgICAgc2VsZi5uZWVkVXBkYXRlID0gVHJ1ZQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmJ1aWxkLlRhc2tTdWNjZWVkZWQpOgotICAgICAgICAgICAgZGVsIHNlbGYucnVubmluZ190YXNrc1tldmVudC5waWRdCi0gICAgICAgICAgICBzZWxmLnJ1bm5pbmdfcGlkcy5yZW1vdmUoZXZlbnQucGlkKQotICAgICAgICAgICAgc2VsZi5uZWVkVXBkYXRlID0gVHJ1ZQorICAgICAgICAgICAgdGlkID0gZXZlbnQuX2ZuICsgIjoiICsgZXZlbnQuX3Rhc2sKKyAgICAgICAgICAgIHJlbW92ZXRpZChldmVudC5waWQsIHRpZCkKICAgICAgICAgZWxpZiBpc2luc3RhbmNlKGV2ZW50LCBiYi5idWlsZC5UYXNrRmFpbGVkU2lsZW50KToKLSAgICAgICAgICAgIGRlbCBzZWxmLnJ1bm5pbmdfdGFza3NbZXZlbnQucGlkXQotICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3BpZHMucmVtb3ZlKGV2ZW50LnBpZCkKKyAgICAgICAgICAgIHRpZCA9IGV2ZW50Ll9mbiArICI6IiArIGV2ZW50Ll90YXNrCisgICAgICAgICAgICByZW1vdmV0aWQoZXZlbnQucGlkLCB0aWQpCiAgICAgICAgICAgICAjIERvbid0IGFkZCB0byB0aGUgZmFpbGVkIHRhc2tzIGxpc3Qgc2luY2UgdGhpcyBpcyBlLmcuIGEgc2V0c2NlbmUgdGFzayBmYWlsdXJlCi0gICAgICAgICAgICBzZWxmLm5lZWRVcGRhdGUgPSBUcnVlCiAgICAgICAgIGVsaWYgaXNpbnN0YW5jZShldmVudCwgYmIuYnVpbGQuVGFza0ZhaWxlZCk6Ci0gICAgICAgICAgICBkZWwgc2VsZi5ydW5uaW5nX3Rhc2tzW2V2ZW50LnBpZF0KLSAgICAgICAgICAgIHNlbGYucnVubmluZ19waWRzLnJlbW92ZShldmVudC5waWQpCisgICAgICAgICAgICB0aWQgPSBldmVudC5fZm4gKyAiOiIgKyBldmVudC5fdGFzaworICAgICAgICAgICAgcmVtb3ZldGlkKGV2ZW50LnBpZCwgdGlkKQogICAgICAgICAgICAgc2VsZi5mYWlsZWRfdGFza3MuYXBwZW5kKCB7ICd0aXRsZScgOiAiJXMgJXMiICUgKGV2ZW50Ll9wYWNrYWdlLCBldmVudC5fdGFzayl9KQotICAgICAgICAgICAgc2VsZi5uZWVkVXBkYXRlID0gVHJ1ZQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLnJ1bnF1ZXVlLnJ1blF1ZXVlVGFza1N0YXJ0ZWQpOgogICAgICAgICAgICAgc2VsZi50YXNrbnVtYmVyX2N1cnJlbnQgPSBldmVudC5zdGF0cy5jb21wbGV0ZWQgKyBldmVudC5zdGF0cy5hY3RpdmUgKyBldmVudC5zdGF0cy5mYWlsZWQgKyAxCiAgICAgICAgICAgICBzZWxmLnRhc2tudW1iZXJfdG90YWwgPSBldmVudC5zdGF0cy50b3RhbAogICAgICAgICAgICAgc2VsZi5uZWVkVXBkYXRlID0gVHJ1ZQogICAgICAgICBlbGlmIGlzaW5zdGFuY2UoZXZlbnQsIGJiLmJ1aWxkLlRhc2tQcm9ncmVzcyk6Ci0gICAgICAgICAgICBpZiBldmVudC5waWQgPiAwOgotICAgICAgICAgICAgICAgIHNlbGYucnVubmluZ190YXNrc1tldmVudC5waWRdWydwcm9ncmVzcyddID0gZXZlbnQucHJvZ3Jlc3MKLSAgICAgICAgICAgICAgICBzZWxmLnJ1bm5pbmdfdGFza3NbZXZlbnQucGlkXVsncmF0ZSddID0gZXZlbnQucmF0ZQorICAgICAgICAgICAgaWYgZXZlbnQucGlkID4gMCBhbmQgZXZlbnQucGlkIGluIHNlbGYucGlkbWFwOgorICAgICAgICAgICAgICAgIHNlbGYucnVubmluZ190YXNrc1tzZWxmLnBpZG1hcFtldmVudC5waWRdXVsncHJvZ3Jlc3MnXSA9IGV2ZW50LnByb2dyZXNzCisgICAgICAgICAgICAgICAgc2VsZi5ydW5uaW5nX3Rhc2tzW3NlbGYucGlkbWFwW2V2ZW50LnBpZF1dWydyYXRlJ10gPSBldmVudC5yYXRlCiAgICAgICAgICAgICAgICAgc2VsZi5uZWVkVXBkYXRlID0gVHJ1ZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JiL3V0aWxzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9iYi91dGlscy5weQppbmRleCA4ZDQwYmNkLi41ZjU3NjdjIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JiL3V0aWxzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmIvdXRpbHMucHkKQEAgLTI0LDcgKzI0LDYgQEAKIGltcG9ydCB0cmFjZWJhY2sKIGltcG9ydCBlcnJubwogaW1wb3J0IHNpZ25hbAotaW1wb3J0IGFzdAogaW1wb3J0IGNvbGxlY3Rpb25zCiBpbXBvcnQgY29weQogZnJvbSBzdWJwcm9jZXNzIGltcG9ydCBnZXRzdGF0dXNvdXRwdXQKQEAgLTQyOCwxMCArNDI3LDExIEBACiAgICAgICAgIGZvciBsb2NrZmlsZSBpbiBmaWxlczoKICAgICAgICAgICAgIGxvY2tzLmFwcGVuZChiYi51dGlscy5sb2NrZmlsZShsb2NrZmlsZSkpCiAKLSAgICB5aWVsZAotCi0gICAgZm9yIGxvY2sgaW4gbG9ja3M6Ci0gICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobG9jaykKKyAgICB0cnk6CisgICAgICAgIHlpZWxkCisgICAgZmluYWxseToKKyAgICAgICAgZm9yIGxvY2sgaW4gbG9ja3M6CisgICAgICAgICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxvY2spCiAKIEBjb250ZXh0bWFuYWdlcgogZGVmIHRpbWVvdXQoc2Vjb25kcyk6CkBAIC01NTYsNiArNTU2LDIwIEBACiAgICAgaW1wb3J0IGhhc2hsaWIKICAgICByZXR1cm4gX2hhc2hlcihoYXNobGliLnNoYTEoKSwgZmlsZW5hbWUpCiAKK2RlZiBzaGEzODRfZmlsZShmaWxlbmFtZSk6CisgICAgIiIiCisgICAgUmV0dXJuIHRoZSBoZXggc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBTSEEzODQgY2hlY2tzdW0gb2YgdGhlIGZpbGVuYW1lCisgICAgIiIiCisgICAgaW1wb3J0IGhhc2hsaWIKKyAgICByZXR1cm4gX2hhc2hlcihoYXNobGliLnNoYTM4NCgpLCBmaWxlbmFtZSkKKworZGVmIHNoYTUxMl9maWxlKGZpbGVuYW1lKToKKyAgICAiIiIKKyAgICBSZXR1cm4gdGhlIGhleCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIFNIQTUxMiBjaGVja3N1bSBvZiB0aGUgZmlsZW5hbWUKKyAgICAiIiIKKyAgICBpbXBvcnQgaGFzaGxpYgorICAgIHJldHVybiBfaGFzaGVyKGhhc2hsaWIuc2hhNTEyKCksIGZpbGVuYW1lKQorCiBkZWYgcHJlc2VydmVkX2VudnZhcnNfZXhwb3J0ZWQoKToKICAgICAiIiJWYXJpYWJsZXMgd2hpY2ggYXJlIHRha2VuIGZyb20gdGhlIGVudmlyb25tZW50IGFuZCBwbGFjZWQgaW4gYW5kIGV4cG9ydGVkCiAgICAgZnJvbSB0aGUgbWV0YWRhdGEiIiIKQEAgLTg1MCw3ICs4NjQsNyBAQAogICAgICAgICAgICAgaWYgZGVzdGV4aXN0cyBhbmQgbm90IHN0YXQuU19JU0RJUihkc3RhdFtzdGF0LlNUX01PREVdKToKICAgICAgICAgICAgICAgICBvcy51bmxpbmsoZGVzdCkKICAgICAgICAgICAgIG9zLnN5bWxpbmsodGFyZ2V0LCBkZXN0KQotICAgICAgICAgICAgI29zLmxjaG93bihkZXN0LHNzdGF0W3N0YXQuU1RfVUlEXSxzc3RhdFtzdGF0LlNUX0dJRF0pCisgICAgICAgICAgICBvcy5sY2hvd24oZGVzdCxzc3RhdFtzdGF0LlNUX1VJRF0sc3N0YXRbc3RhdC5TVF9HSURdKQogICAgICAgICAgICAgcmV0dXJuIG9zLmxzdGF0KGRlc3QpCiAgICAgICAgIGV4Y2VwdCBFeGNlcHRpb24gYXMgZToKICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJjb3B5ZmlsZTogZmFpbGVkIHRvIGNyZWF0ZSBzeW1saW5rICVzIHRvICVzICglcykiICUgKGRlc3QsIHRhcmdldCwgZSkpCkBAIC0xMDI1LDYgKzEwMzksNDMgQEAKICAgICAgICAgY2hlY2t2YWx1ZXMgPSBzZXQoY2hlY2t2YWx1ZXMpCiAgICAgcmV0dXJuICcgJy5qb2luKHNvcnRlZChjaGVja3ZhbHVlcyAmIHZhbCkpCiAKKworZGVmIGdldF9yZWZlcmVuY2VkX3ZhcnMoc3RhcnRfZXhwciwgZCk6CisgICAgIiIiCisgICAgOnJldHVybjogbmFtZXMgb2YgdmFycyByZWZlcmVuY2VkIGluIHN0YXJ0X2V4cHIgKHJlY3Vyc2l2ZWx5KSwgaW4gcXVhc2ktQkZTIG9yZGVyICh2YXJpYWJsZXMgd2l0aGluIHRoZSBzYW1lIGxldmVsCisgICAgYXJlIG9yZGVyZWQgYXJiaXRyYXJpbHkpCisgICAgIiIiCisKKyAgICBzZWVuID0gc2V0KCkKKyAgICByZXQgPSBbXQorCisgICAgIyBUaGUgZmlyc3QgZW50cnkgaW4gdGhlIHF1ZXVlIGlzIHRoZSB1bmV4cGFuZGVkIHN0YXJ0IGV4cHJlc3Npb24KKyAgICBxdWV1ZSA9IGNvbGxlY3Rpb25zLmRlcXVlKFtzdGFydF9leHByXSkKKyAgICAjIFN1YnNlcXVlbnQgZW50cmllcyB3aWxsIGJlIHZhcmlhYmxlIG5hbWVzLCBzbyB3ZSBuZWVkIHRvIHRyYWNrIHdoZXRoZXIgb3Igbm90IGVudHJ5IHJlcXVpcmVzIGdldFZhcgorICAgIGlzX2ZpcnN0ID0gVHJ1ZQorCisgICAgZW1wdHlfZGF0YSA9IGJiLmRhdGEuaW5pdCgpCisgICAgd2hpbGUgcXVldWU6CisgICAgICAgIGVudHJ5ID0gcXVldWUucG9wbGVmdCgpCisgICAgICAgIGlmIGlzX2ZpcnN0OgorICAgICAgICAgICAgIyBFbnRyeSBpcyB0aGUgc3RhcnQgZXhwcmVzc2lvbiAtIG5vIGV4cGFuc2lvbiBuZWVkZWQKKyAgICAgICAgICAgIGlzX2ZpcnN0ID0gRmFsc2UKKyAgICAgICAgICAgIGV4cHJlc3Npb24gPSBlbnRyeQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgIyBUaGlzIGlzIGEgdmFyaWFibGUgbmFtZSAtIG5lZWQgdG8gZ2V0IHRoZSB2YWx1ZQorICAgICAgICAgICAgZXhwcmVzc2lvbiA9IGQuZ2V0VmFyKGVudHJ5LCBGYWxzZSkKKyAgICAgICAgICAgIHJldC5hcHBlbmQoZW50cnkpCisKKyAgICAgICAgIyBleHBhbmRXaXRoUmVmcyBpcyBob3cgd2UgYWN0dWFsbHkgZ2V0IHRoZSByZWZlcmVuY2VkIHZhcmlhYmxlcyBpbiB0aGUgZXhwcmVzc2lvbi4gV2UgY2FsbCBpdCB1c2luZyBhbiBlbXB0eQorICAgICAgICAjIGRhdGEgc3RvcmUgYmVjYXVzZSB3ZSBvbmx5IHdhbnQgdGhlIHZhcmlhYmxlcyBkaXJlY3RseSB1c2VkIGluIHRoZSBleHByZXNzaW9uLiBJdCByZXR1cm5zIGEgc2V0LCB3aGljaCBpcyB3aGF0CisgICAgICAgICMgZG9vbXMgdXMgdG8gb25seSBldmVyIGJlICJxdWFzaS1CRlMiIHJhdGhlciB0aGFuIGZ1bGwgQkZTLgorICAgICAgICBuZXdfdmFycyA9IGVtcHR5X2RhdGEuZXhwYW5kV2l0aFJlZnMoZXhwcmVzc2lvbiwgTm9uZSkucmVmZXJlbmNlcyAtIHNldChzZWVuKQorCisgICAgICAgIHF1ZXVlLmV4dGVuZChuZXdfdmFycykKKyAgICAgICAgc2Vlbi51cGRhdGUobmV3X3ZhcnMpCisgICAgcmV0dXJuIHJldAorCisKIGRlZiBjcHVfY291bnQoKToKICAgICByZXR1cm4gbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCgpCiAKQEAgLTE1NjAsMyArMTYxMSwyOSBAQAogICAgICAgICBzZWxmLm1lc3NhZ2VzLmFwcGVuZChiYi5idWlsZC5sb2dmb3JtYXR0ZXIuZm9ybWF0KHJlY29yZCkpCiAgICAgZGVmIGNvbnRhaW5zKHNlbGYsIG1lc3NhZ2UpOgogICAgICAgICByZXR1cm4gKG1lc3NhZ2UgaW4gc2VsZi5tZXNzYWdlcykKKworZGVmIGlzX3NlbXZlcih2ZXJzaW9uKToKKyAgICAiIiIKKyAgICAgICAgSXMgdGhlIHZlcnNpb24gc3RyaW5nIGZvbGxvd2luZyB0aGUgc2VtdmVyIHNlbWFudGljPworCisgICAgICAgIGh0dHBzOi8vc2VtdmVyLm9yZy9zcGVjL3YyLjAuMC5odG1sCisgICAgIiIiCisgICAgcmVnZXggPSByZS5jb21waWxlKAorICAgIHIiIiIKKyAgICBeCisgICAgKDB8WzEtOV1cZCopXC4oMHxbMS05XVxkKilcLigwfFsxLTldXGQqKQorICAgICg/Oi0oCisgICAgICAgICg/OjB8WzEtOV1cZCp8XGQqW2EtekEtWi1dWzAtOWEtekEtWi1dKikKKyAgICAgICAgKD86XC4oPzowfFsxLTldXGQqfFxkKlthLXpBLVotXVswLTlhLXpBLVotXSopKSoKKyAgICApKT8KKyAgICAoPzpcKygKKyAgICAgICAgWzAtOWEtekEtWi1dKworICAgICAgICAoPzpcLlswLTlhLXpBLVotXSspKgorICAgICkpPworICAgICQKKyAgICAiIiIsIHJlLlZFUkJPU0UpCisKKyAgICBpZiByZWdleC5tYXRjaCh2ZXJzaW9uKSBpcyBOb25lOgorICAgICAgICByZXR1cm4gRmFsc2UKKworICAgIHJldHVybiBUcnVlCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL2NvbW1vbi5weSBiL3Bva3kvYml0YmFrZS9saWIvYmJsYXllcnMvY29tbW9uLnB5CmluZGV4IGM1NjU3ZDMuLjZjNzZlZjMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYmJsYXllcnMvY29tbW9uLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYmJsYXllcnMvY29tbW9uLnB5CkBAIC0xNyw3ICsxNyw3IEBACiAgICAgZGVmIHRpbmZvaWxfaW5pdChzZWxmLCB0aW5mb2lsKToKICAgICAgICAgc2VsZi50aW5mb2lsID0gdGluZm9pbAogICAgICAgICBzZWxmLmJibGF5ZXJzID0gKHNlbGYudGluZm9pbC5jb25maWdfZGF0YS5nZXRWYXIoJ0JCTEFZRVJTJykgb3IgIiIpLnNwbGl0KCkKLSAgICAgICAgbGF5ZXJjb25mcyA9IHNlbGYudGluZm9pbC5jb25maWdfZGF0YS52YXJoaXN0b3J5LmdldF92YXJpYWJsZV9pdGVtc19maWxlcygnQkJGSUxFX0NPTExFQ1RJT05TJywgc2VsZi50aW5mb2lsLmNvbmZpZ19kYXRhKQorICAgICAgICBsYXllcmNvbmZzID0gc2VsZi50aW5mb2lsLmNvbmZpZ19kYXRhLnZhcmhpc3RvcnkuZ2V0X3ZhcmlhYmxlX2l0ZW1zX2ZpbGVzKCdCQkZJTEVfQ09MTEVDVElPTlMnKQogICAgICAgICBzZWxmLmJiZmlsZV9jb2xsZWN0aW9ucyA9IHtsYXllcjogb3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShwYXRoKSkgZm9yIGxheWVyLCBwYXRoIGluIGxheWVyY29uZnMuaXRlbXMoKX0KIAogICAgIEBzdGF0aWNtZXRob2QKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYmJsYXllcnMvbGF5ZXJpbmRleC5weSBiL3Bva3kvYml0YmFrZS9saWIvYmJsYXllcnMvbGF5ZXJpbmRleC5weQppbmRleCA1N2NkOTAyLi45NWI2N2E2IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL2xheWVyaW5kZXgucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9sYXllcmluZGV4LnB5CkBAIC0yNCw3ICsyNCw3IEBACiAgICAgVGhpcyBjbGFzcyBpbmhlcml0cyBBY3Rpb25QbHVnaW4gdG8gZ2V0IGRvX2FkZF9sYXllci4KICAgICAiIiIKIAotICAgIGRlZiBnZXRfZmV0Y2hfbGF5ZXIoc2VsZiwgZmV0Y2hkaXIsIHVybCwgc3ViZGlyLCBmZXRjaF9sYXllcik6CisgICAgZGVmIGdldF9mZXRjaF9sYXllcihzZWxmLCBmZXRjaGRpciwgdXJsLCBzdWJkaXIsIGZldGNoX2xheWVyLCBicmFuY2gsIHNoYWxsb3c9RmFsc2UpOgogICAgICAgICBsYXllcm5hbWUgPSBzZWxmLmdldF9sYXllcl9uYW1lKHVybCkKICAgICAgICAgaWYgb3MucGF0aC5zcGxpdGV4dChsYXllcm5hbWUpWzFdID09ICcuZ2l0JzoKICAgICAgICAgICAgIGxheWVybmFtZSA9IG9zLnBhdGguc3BsaXRleHQobGF5ZXJuYW1lKVswXQpAQCAtMzIsOSArMzIsMTUgQEAKICAgICAgICAgbGF5ZXJkaXIgPSBvcy5wYXRoLmpvaW4ocmVwb2Rpciwgc3ViZGlyKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocmVwb2Rpcik6CiAgICAgICAgICAgICBpZiBmZXRjaF9sYXllcjoKLSAgICAgICAgICAgICAgICByZXN1bHQgPSBzdWJwcm9jZXNzLmNhbGwoWydnaXQnLCAnY2xvbmUnLCB1cmwsIHJlcG9kaXJdKQorICAgICAgICAgICAgICAgIGNtZCA9IFsnZ2l0JywgJ2Nsb25lJ10KKyAgICAgICAgICAgICAgICBpZiBzaGFsbG93OgorICAgICAgICAgICAgICAgICAgICBjbWQuZXh0ZW5kKFsnLS1kZXB0aCcsICcxJ10pCisgICAgICAgICAgICAgICAgaWYgYnJhbmNoOgorICAgICAgICAgICAgICAgICAgICBjbWQuZXh0ZW5kKFsnLWInICwgYnJhbmNoXSkKKyAgICAgICAgICAgICAgICBjbWQuZXh0ZW5kKFt1cmwsIHJlcG9kaXJdKQorICAgICAgICAgICAgICAgIHJlc3VsdCA9IHN1YnByb2Nlc3MuY2FsbChjbWQpCiAgICAgICAgICAgICAgICAgaWYgcmVzdWx0OgotICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkZhaWxlZCB0byBkb3dubG9hZCAlcyIgJSB1cmwpCisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRmFpbGVkIHRvIGRvd25sb2FkICVzICglcykiICUgKHVybCwgYnJhbmNoKSkKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIE5vbmUsIE5vbmUsIE5vbmUKICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gc3ViZGlyLCBsYXllcm5hbWUsIGxheWVyZGlyCkBAIC0xNzEsNyArMTc3LDkgQEAKICAgICAgICAgICAgICAgICBzdWJkaXIsIG5hbWUsIGxheWVyZGlyID0gc2VsZi5nZXRfZmV0Y2hfbGF5ZXIoZmV0Y2hkaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYXllckJyYW5jaC5sYXllci52Y3NfdXJsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGF5ZXJCcmFuY2gudmNzX3N1YmRpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBhcmdzLnNob3dfb25seSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBhcmdzLnNob3dfb25seSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxheWVyQnJhbmNoLmFjdHVhbF9icmFuY2gsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnNoYWxsb3cpCiAgICAgICAgICAgICAgICAgaWYgbm90IG5hbWU6CiAgICAgICAgICAgICAgICAgICAgICMgRXJyb3IgYWxyZWFkeSBzaG93bgogICAgICAgICAgICAgICAgICAgICByZXR1cm4gMQpAQCAtMjA0LDYgKzIxMiw3IEBACiAgICAgICAgIHBhcnNlcl9sYXllcmluZGV4X2ZldGNoID0gc2VsZi5hZGRfY29tbWFuZChzcCwgJ2xheWVyaW5kZXgtZmV0Y2gnLCBzZWxmLmRvX2xheWVyaW5kZXhfZmV0Y2gsIHBhcnNlcmVjaXBlcz1GYWxzZSkKICAgICAgICAgcGFyc2VyX2xheWVyaW5kZXhfZmV0Y2guYWRkX2FyZ3VtZW50KCctbicsICctLXNob3ctb25seScsIGhlbHA9J3Nob3cgZGVwZW5kZW5jaWVzIGFuZCBkbyBub3RoaW5nIGVsc2UnLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgICAgICBwYXJzZXJfbGF5ZXJpbmRleF9mZXRjaC5hZGRfYXJndW1lbnQoJy1iJywgJy0tYnJhbmNoJywgaGVscD0nYnJhbmNoIG5hbWUgdG8gZmV0Y2gnKQorICAgICAgICBwYXJzZXJfbGF5ZXJpbmRleF9mZXRjaC5hZGRfYXJndW1lbnQoJy1zJywgJy0tc2hhbGxvdycsIGhlbHA9J2RvIG9ubHkgc2hhbGxvdyBjbG9uZXMgKC0tZGVwdGg9MSknLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgICAgICBwYXJzZXJfbGF5ZXJpbmRleF9mZXRjaC5hZGRfYXJndW1lbnQoJy1pJywgJy0taWdub3JlJywgaGVscD0nYXNzdW1lIHRoZSBzcGVjaWZpZWQgbGF5ZXJzIGRvIG5vdCBuZWVkIHRvIGJlIGZldGNoZWQvYWRkZWQgKHNlcGFyYXRlIG11bHRpcGxlIGxheWVycyB3aXRoIGNvbW1hcywgbm8gc3BhY2VzKScsIG1ldGF2YXI9J0xBWUVSJykKICAgICAgICAgcGFyc2VyX2xheWVyaW5kZXhfZmV0Y2guYWRkX2FyZ3VtZW50KCdsYXllcm5hbWUnLCBuYXJncz0nKycsIGhlbHA9J2xheWVyIHRvIGZldGNoJykKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9xdWVyeS5weSBiL3Bva3kvYml0YmFrZS9saWIvYmJsYXllcnMvcXVlcnkucHkKaW5kZXggN2RiNDljOC4uZTJjYzMxMCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iYmxheWVycy9xdWVyeS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JibGF5ZXJzL3F1ZXJ5LnB5CkBAIC00Niw3ICs0Niw3IEBACiBhcmUgb3ZlcmxheWVkIHdpbGwgYWxzbyBiZSBsaXN0ZWQsIHdpdGggYSAiIChza2lwcGVkKSIgc3VmZml4LgogIiIiCiAKLSAgICAgICAgaXRlbXNfbGlzdGVkID0gc2VsZi5saXN0X3JlY2lwZXMoJ092ZXJsYXllZCByZWNpcGVzJywgTm9uZSwgVHJ1ZSwgYXJncy5zYW1lX3ZlcnNpb24sIGFyZ3MuZmlsZW5hbWVzLCBGYWxzZSwgVHJ1ZSwgTm9uZSwgRmFsc2UsIE5vbmUpCisgICAgICAgIGl0ZW1zX2xpc3RlZCA9IHNlbGYubGlzdF9yZWNpcGVzKCdPdmVybGF5ZWQgcmVjaXBlcycsIE5vbmUsIFRydWUsIGFyZ3Muc2FtZV92ZXJzaW9uLCBhcmdzLmZpbGVuYW1lcywgRmFsc2UsIFRydWUsIE5vbmUsIEZhbHNlLCBOb25lLCBhcmdzLm1jKQogCiAgICAgICAgICMgQ2hlY2sgZm9yIG92ZXJsYXllZCAuYmJjbGFzcyBmaWxlcwogICAgICAgICBjbGFzc2VzID0gY29sbGVjdGlvbnMuZGVmYXVsdGRpY3QobGlzdCkKQEAgLTExMiw5ICsxMTIsOSBAQAogICAgICAgICAgICAgdGl0bGUgPSAnTWF0Y2hpbmcgcmVjaXBlczonCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICB0aXRsZSA9ICdBdmFpbGFibGUgcmVjaXBlczonCi0gICAgICAgIHNlbGYubGlzdF9yZWNpcGVzKHRpdGxlLCBhcmdzLnBuc3BlYywgRmFsc2UsIEZhbHNlLCBhcmdzLmZpbGVuYW1lcywgYXJncy5yZWNpcGVzX29ubHksIGFyZ3MubXVsdGlwbGUsIGFyZ3MubGF5ZXIsIGFyZ3MuYmFyZSwgaW5oZXJpdGxpc3QpCisgICAgICAgIHNlbGYubGlzdF9yZWNpcGVzKHRpdGxlLCBhcmdzLnBuc3BlYywgRmFsc2UsIEZhbHNlLCBhcmdzLmZpbGVuYW1lcywgYXJncy5yZWNpcGVzX29ubHksIGFyZ3MubXVsdGlwbGUsIGFyZ3MubGF5ZXIsIGFyZ3MuYmFyZSwgaW5oZXJpdGxpc3QsIGFyZ3MubWMpCiAKLSAgICBkZWYgbGlzdF9yZWNpcGVzKHNlbGYsIHRpdGxlLCBwbnNwZWMsIHNob3dfb3ZlcmxheWVkX29ubHksIHNob3dfc2FtZV92ZXJfb25seSwgc2hvd19maWxlbmFtZXMsIHNob3dfcmVjaXBlc19vbmx5LCBzaG93X211bHRpX3Byb3ZpZGVyX29ubHksIHNlbGVjdGVkX2xheWVyLCBiYXJlLCBpbmhlcml0cyk6CisgICAgZGVmIGxpc3RfcmVjaXBlcyhzZWxmLCB0aXRsZSwgcG5zcGVjLCBzaG93X292ZXJsYXllZF9vbmx5LCBzaG93X3NhbWVfdmVyX29ubHksIHNob3dfZmlsZW5hbWVzLCBzaG93X3JlY2lwZXNfb25seSwgc2hvd19tdWx0aV9wcm92aWRlcl9vbmx5LCBzZWxlY3RlZF9sYXllciwgYmFyZSwgaW5oZXJpdHMsIG1jKToKICAgICAgICAgaWYgaW5oZXJpdHM6CiAgICAgICAgICAgICBiYnBhdGggPSBzdHIoc2VsZi50aW5mb2lsLmNvbmZpZ19kYXRhLmdldFZhcignQkJQQVRIJykpCiAgICAgICAgICAgICBmb3IgY2xhc3NuYW1lIGluIGluaGVyaXRzOgpAQCAtMTIzLDE0ICsxMjMsMTggQEAKICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdObyBjbGFzcyBuYW1lZCAlcyBmb3VuZCBpbiBCQlBBVEgnLCBjbGFzc2ZpbGUpCiAgICAgICAgICAgICAgICAgICAgIHN5cy5leGl0KDEpCiAKLSAgICAgICAgcGtnX3BuID0gc2VsZi50aW5mb2lsLmNvb2tlci5yZWNpcGVjYWNoZXNbJyddLnBrZ19wbgotICAgICAgICAobGF0ZXN0X3ZlcnNpb25zLCBwcmVmZXJyZWRfdmVyc2lvbnMpID0gc2VsZi50aW5mb2lsLmZpbmRfcHJvdmlkZXJzKCkKLSAgICAgICAgYWxscHJvdmlkZXJzID0gc2VsZi50aW5mb2lsLmdldF9hbGxfcHJvdmlkZXJzKCkKKyAgICAgICAgcGtnX3BuID0gc2VsZi50aW5mb2lsLmNvb2tlci5yZWNpcGVjYWNoZXNbbWNdLnBrZ19wbgorICAgICAgICAobGF0ZXN0X3ZlcnNpb25zLCBwcmVmZXJyZWRfdmVyc2lvbnMpID0gc2VsZi50aW5mb2lsLmZpbmRfcHJvdmlkZXJzKG1jKQorICAgICAgICBhbGxwcm92aWRlcnMgPSBzZWxmLnRpbmZvaWwuZ2V0X2FsbF9wcm92aWRlcnMobWMpCiAKICAgICAgICAgIyBFbnN1cmUgd2UgbGlzdCBza2lwcGVkIHJlY2lwZXMKICAgICAgICAgIyBXZSBhcmUgbGFyZ2VseSBndWVzc2luZyBhYm91dCBQTiwgUFYgYW5kIHRoZSBwcmVmZXJyZWQgdmVyc2lvbiBoZXJlLAogICAgICAgICAjIGJ1dCB3ZSBoYXZlIG5vIGNob2ljZSBzaW5jZSBza2lwcGVkIHJlY2lwZXMgYXJlIG5vdCBmdWxseSBwYXJzZWQKICAgICAgICAgc2tpcGxpc3QgPSBsaXN0KHNlbGYudGluZm9pbC5jb29rZXIuc2tpcGxpc3Qua2V5cygpKQorICAgICAgICBtY3NwZWMgPSAnbWM6JXM6JyAlIG1jCisgICAgICAgIGlmIG1jOgorICAgICAgICAgICAgc2tpcGxpc3QgPSBbc1tsZW4obWNzcGVjKTpdIGZvciBzIGluIHNraXBsaXN0IGlmIHMuc3RhcnRzd2l0aChtY3NwZWMpXQorCiAgICAgICAgIGZvciBmbiBpbiBza2lwbGlzdDoKICAgICAgICAgICAgIHJlY2lwZV9wYXJ0cyA9IG9zLnBhdGguc3BsaXRleHQob3MucGF0aC5iYXNlbmFtZShmbikpWzBdLnNwbGl0KCdfJykKICAgICAgICAgICAgIHAgPSByZWNpcGVfcGFydHNbMF0KQEAgLTE4Nyw3ICsxOTEsNyBAQAogICAgICAgICAgICAgICAgICMgV2Ugb25seSBkaXNwbGF5IG9uY2UgcGVyIHJlY2lwZSwgd2Ugc2hvdWxkIHByZWZlciBub24gZXh0ZW5kZWQgdmVyc2lvbnMgb2YgdGhlCiAgICAgICAgICAgICAgICAgIyByZWNpcGUgaWYgcHJlc2VudCAoc28gZS5nLiBpbiBPcGVuRW1iZWRkZWQsIG9wZW5zc2wgcmF0aGVyIHRoYW4gbmF0aXZlc2RrLW9wZW5zc2wKICAgICAgICAgICAgICAgICAjIHdoaWNoIHdvdWxkIG90aGVyd2lzZSBzb3J0IGZpcnN0KS4KLSAgICAgICAgICAgICAgICBpZiByZWFsZm5bMV0gYW5kIHJlYWxmblswXSBpbiBzZWxmLnRpbmZvaWwuY29va2VyLnJlY2lwZWNhY2hlc1snJ10ucGtnX2ZuOgorICAgICAgICAgICAgICAgIGlmIHJlYWxmblsxXSBhbmQgcmVhbGZuWzBdIGluIHNlbGYudGluZm9pbC5jb29rZXIucmVjaXBlY2FjaGVzW21jXS5wa2dfZm46CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgICAgICBpZiBpbmhlcml0czoKQEAgLTQ5Niw2ICs1MDAsNyBAQAogICAgICAgICBwYXJzZXJfc2hvd19vdmVybGF5ZWQgPSBzZWxmLmFkZF9jb21tYW5kKHNwLCAnc2hvdy1vdmVybGF5ZWQnLCBzZWxmLmRvX3Nob3dfb3ZlcmxheWVkKQogICAgICAgICBwYXJzZXJfc2hvd19vdmVybGF5ZWQuYWRkX2FyZ3VtZW50KCctZicsICctLWZpbGVuYW1lcycsIGhlbHA9J2luc3RlYWQgb2YgdGhlIGRlZmF1bHQgZm9ybWF0dGluZywgbGlzdCBmaWxlbmFtZXMgb2YgaGlnaGVyIHByaW9yaXR5IHJlY2lwZXMgd2l0aCB0aGUgb25lcyB0aGV5IG92ZXJsYXkgaW5kZW50ZWQgdW5kZXJuZWF0aCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCiAgICAgICAgIHBhcnNlcl9zaG93X292ZXJsYXllZC5hZGRfYXJndW1lbnQoJy1zJywgJy0tc2FtZS12ZXJzaW9uJywgaGVscD0nb25seSBsaXN0IG92ZXJsYXllZCByZWNpcGVzIHdoZXJlIHRoZSB2ZXJzaW9uIGlzIHRoZSBzYW1lJywgYWN0aW9uPSdzdG9yZV90cnVlJykKKyAgICAgICAgcGFyc2VyX3Nob3dfb3ZlcmxheWVkLmFkZF9hcmd1bWVudCgnLS1tYycsIGhlbHA9J3VzZSBzcGVjaWZpZWQgbXVsdGljb25maWcnLCBkZWZhdWx0PScnKQogCiAgICAgICAgIHBhcnNlcl9zaG93X3JlY2lwZXMgPSBzZWxmLmFkZF9jb21tYW5kKHNwLCAnc2hvdy1yZWNpcGVzJywgc2VsZi5kb19zaG93X3JlY2lwZXMpCiAgICAgICAgIHBhcnNlcl9zaG93X3JlY2lwZXMuYWRkX2FyZ3VtZW50KCctZicsICctLWZpbGVuYW1lcycsIGhlbHA9J2luc3RlYWQgb2YgdGhlIGRlZmF1bHQgZm9ybWF0dGluZywgbGlzdCBmaWxlbmFtZXMgb2YgaGlnaGVyIHByaW9yaXR5IHJlY2lwZXMgd2l0aCB0aGUgb25lcyB0aGV5IG92ZXJsYXkgaW5kZW50ZWQgdW5kZXJuZWF0aCcsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCkBAIC01MDQsNiArNTA5LDcgQEAKICAgICAgICAgcGFyc2VyX3Nob3dfcmVjaXBlcy5hZGRfYXJndW1lbnQoJy1pJywgJy0taW5oZXJpdHMnLCBoZWxwPSdvbmx5IGxpc3QgcmVjaXBlcyB0aGF0IGluaGVyaXQgdGhlIG5hbWVkIGNsYXNzKGVzKSAtIHNlcGFyYXRlIG11bHRpcGxlIGNsYXNzZXMgdXNpbmcgLCAod2l0aG91dCBzcGFjZXMpJywgbWV0YXZhcj0nQ0xBU1MnLCBkZWZhdWx0PScnKQogICAgICAgICBwYXJzZXJfc2hvd19yZWNpcGVzLmFkZF9hcmd1bWVudCgnLWwnLCAnLS1sYXllcicsIGhlbHA9J29ubHkgbGlzdCByZWNpcGVzIGZyb20gdGhlIHNlbGVjdGVkIGxheWVyJywgZGVmYXVsdD0nJykKICAgICAgICAgcGFyc2VyX3Nob3dfcmVjaXBlcy5hZGRfYXJndW1lbnQoJy1iJywgJy0tYmFyZScsIGhlbHA9J291dHB1dCBqdXN0IG5hbWVzIHdpdGhvdXQgdGhlICIoc2tpcHBlZCkiIG1hcmtlcicsIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisgICAgICAgIHBhcnNlcl9zaG93X3JlY2lwZXMuYWRkX2FyZ3VtZW50KCctLW1jJywgaGVscD0ndXNlIHNwZWNpZmllZCBtdWx0aWNvbmZpZycsIGRlZmF1bHQ9JycpCiAgICAgICAgIHBhcnNlcl9zaG93X3JlY2lwZXMuYWRkX2FyZ3VtZW50KCdwbnNwZWMnLCBuYXJncz0nKicsIGhlbHA9J29wdGlvbmFsIHJlY2lwZSBuYW1lIHNwZWNpZmljYXRpb24gKHdpbGRjYXJkcyBhbGxvd2VkLCBlbmNsb3NlIGluIHF1b3RlcyB0byBhdm9pZCBzaGVsbCBleHBhbnNpb24pJykKIAogICAgICAgICBwYXJzZXJfc2hvd19hcHBlbmRzID0gc2VsZi5hZGRfY29tbWFuZChzcCwgJ3Nob3ctYXBwZW5kcycsIHNlbGYuZG9fc2hvd19hcHBlbmRzKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iczQvX19pbml0X18ucHkgYi9wb2t5L2JpdGJha2UvbGliL2JzNC9fX2luaXRfXy5weQppbmRleCBmNmZkZmQ1Li5lMzU3MjViIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JzNC9fX2luaXRfXy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JzNC9fX2luaXRfXy5weQpAQCAtNDI3LDcgKzQyNyw3IEBACiAgICAgICAgIGlmIHNlbGYuaXNfeG1sOgogICAgICAgICAgICAgIyBQcmludCB0aGUgWE1MIGRlY2xhcmF0aW9uCiAgICAgICAgICAgICBlbmNvZGluZ19wYXJ0ID0gJycKLSAgICAgICAgICAgIGlmIGV2ZW50dWFsX2VuY29kaW5nICE9IE5vbmU6CisgICAgICAgICAgICBpZiBldmVudHVhbF9lbmNvZGluZyBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICBlbmNvZGluZ19wYXJ0ID0gJyBlbmNvZGluZz0iJXMiJyAlIGV2ZW50dWFsX2VuY29kaW5nCiAgICAgICAgICAgICBwcmVmaXggPSAnPD94bWwgdmVyc2lvbj0iMS4wIiVzPz5cbicgJSBlbmNvZGluZ19wYXJ0CiAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JzNC9idWlsZGVyL19odG1sNWxpYi5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L2J1aWxkZXIvX2h0bWw1bGliLnB5CmluZGV4IDJiN2E3MGEuLjllOTIxNmUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYnM0L2J1aWxkZXIvX2h0bWw1bGliLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYnM0L2J1aWxkZXIvX2h0bWw1bGliLnB5CkBAIC0yLDcgKzIsNiBAQAogICAgICdIVE1MNVRyZWVCdWlsZGVyJywKICAgICBdCiAKLWZyb20gcGRiIGltcG9ydCBzZXRfdHJhY2UKIGltcG9ydCB3YXJuaW5ncwogZnJvbSBiczQuYnVpbGRlciBpbXBvcnQgKAogICAgIFBFUk1JU1NJVkUsCkBAIC0zMjIsNyArMzIxLDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYuZWxlbWVudC5jb250ZW50cwogCiAgICAgZGVmIGdldE5hbWVUdXBsZShzZWxmKToKLSAgICAgICAgaWYgc2VsZi5uYW1lc3BhY2UgPT0gTm9uZToKKyAgICAgICAgaWYgc2VsZi5uYW1lc3BhY2UgaXMgTm9uZToKICAgICAgICAgICAgIHJldHVybiBuYW1lc3BhY2VzWyJodG1sIl0sIHNlbGYubmFtZQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgcmV0dXJuIHNlbGYubmFtZXNwYWNlLCBzZWxmLm5hbWUKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYnM0L2RhbW1pdC5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L2RhbW1pdC5weQppbmRleCA4MDVhYTkwLi43YWQ5ZTBkIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JzNC9kYW1taXQucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iczQvZGFtbWl0LnB5CkBAIC04LDEyICs4LDEwIEBACiAiIiIKIF9fbGljZW5zZV9fID0gIk1JVCIKIAotZnJvbSBwZGIgaW1wb3J0IHNldF90cmFjZQogaW1wb3J0IGNvZGVjcwogZnJvbSBodG1sLmVudGl0aWVzIGltcG9ydCBjb2RlcG9pbnQybmFtZQogaW1wb3J0IHJlCiBpbXBvcnQgbG9nZ2luZwotaW1wb3J0IHN0cmluZwogCiAjIEltcG9ydCBhIGxpYnJhcnkgdG8gYXV0b2RldGVjdCBjaGFyYWN0ZXIgZW5jb2RpbmdzLgogY2hhcmRldF90eXBlID0gTm9uZQpAQCAtMzgsMTIgKzM2LDYgQEAKICAgICAgICAgZGVmIGNoYXJkZXRfZGFtbWl0KHMpOgogICAgICAgICAgICAgcmV0dXJuIE5vbmUKIAotIyBBdmFpbGFibGUgZnJvbSBodHRwOi8vY2prcHl0aG9uLmkxOG4ub3JnLy4KLXRyeToKLSAgICBpbXBvcnQgaWNvbnZfY29kZWMKLWV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICBwYXNzCi0KIHhtbF9lbmNvZGluZ19yZSA9IHJlLmNvbXBpbGUoCiAgICAgcidePFw/LiplbmNvZGluZz1bXCciXSguKj8pW1wnIl0uKlw/PicuZW5jb2RlKCksIHJlLkkpCiBodG1sX21ldGFfcmUgPSByZS5jb21waWxlKApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9iczQvZWxlbWVudC5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L2VsZW1lbnQucHkKaW5kZXggMzc3NWE2MC4uNjhiZTQyZCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iczQvZWxlbWVudC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2JzNC9lbGVtZW50LnB5CkBAIC0xLDYgKzEsNSBAQAogX19saWNlbnNlX18gPSAiTUlUIgogCi1mcm9tIHBkYiBpbXBvcnQgc2V0X3RyYWNlCiBpbXBvcnQgY29sbGVjdGlvbnMuYWJjCiBpbXBvcnQgcmUKIGltcG9ydCBzeXMKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RpbmcucHkgYi9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0aW5nLnB5CmluZGV4IDNhMmYyNjAuLjk1M2JjYTggMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RpbmcucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdGluZy5weQpAQCAtNCw3ICs0LDYgQEAKIAogaW1wb3J0IHBpY2tsZQogaW1wb3J0IGNvcHkKLWltcG9ydCBmdW5jdG9vbHMKIGltcG9ydCB1bml0dGVzdAogZnJvbSB1bml0dGVzdCBpbXBvcnQgVGVzdENhc2UKIGZyb20gYnM0IGltcG9ydCBCZWF1dGlmdWxTb3VwCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X2RvY3MucHkgYi9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X2RvY3MucHkKaW5kZXggNWI5ZjY3Ny4uZDFkNzZhMyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF9kb2NzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfZG9jcy5weQpAQCAtNywxOSArNywxNSBAQAogICAgICdhZGRpdGlvbmFsX3Rlc3RzJywKICAgICBdCiAKLWltcG9ydCBhdGV4aXQKIGltcG9ydCBkb2N0ZXN0Ci1pbXBvcnQgb3MKICNmcm9tIHBrZ19yZXNvdXJjZXMgaW1wb3J0ICgKICMgICAgcmVzb3VyY2VfZmlsZW5hbWUsIHJlc291cmNlX2V4aXN0cywgcmVzb3VyY2VfbGlzdGRpciwgY2xlYW51cF9yZXNvdXJjZXMpCi1pbXBvcnQgdW5pdHRlc3QKIAogRE9DVEVTVF9GTEFHUyA9ICgKICAgICBkb2N0ZXN0LkVMTElQU0lTIHwKICAgICBkb2N0ZXN0Lk5PUk1BTElaRV9XSElURVNQQUNFIHwKICAgICBkb2N0ZXN0LlJFUE9SVF9ORElGRikKIAotCiAjIGRlZiBhZGRpdGlvbmFsX3Rlc3RzKCk6CiAjICAgICAiUnVuIHRoZSBkb2MgdGVzdHMgKFJFQURNRS50eHQgYW5kIGRvY3MvKiwgaWYgYW55IGV4aXN0KSIKICMgICAgIGRvY3Rlc3RfZmlsZXMgPSBbCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X2h0bWxwYXJzZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X2h0bWxwYXJzZXIucHkKaW5kZXggYjQ1ZTM1Zi4uMzBhMjVlNiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF9odG1scGFyc2VyLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfaHRtbHBhcnNlci5weQpAQCAtMSw3ICsxLDYgQEAKICIiIlRlc3RzIHRvIGVuc3VyZSB0aGF0IHRoZSBodG1sLnBhcnNlciB0cmVlIGJ1aWxkZXIgZ2VuZXJhdGVzIGdvb2QKIHRyZWVzLiIiIgogCi1mcm9tIHBkYiBpbXBvcnQgc2V0X3RyYWNlCiBpbXBvcnQgcGlja2xlCiBmcm9tIGJzNC50ZXN0aW5nIGltcG9ydCBTb3VwVGVzdCwgSFRNTFRyZWVCdWlsZGVyU21va2VUZXN0CiBmcm9tIGJzNC5idWlsZGVyIGltcG9ydCBIVE1MUGFyc2VyVHJlZUJ1aWxkZXIKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfbHhtbC5weSBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfbHhtbC5weQppbmRleCA2YzJhMWQ3Li42YjZjZGQwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X2x4bWwucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF9seG1sLnB5CkBAIC0xLDYgKzEsNSBAQAogIiIiVGVzdHMgdG8gZW5zdXJlIHRoYXQgdGhlIGx4bWwgdHJlZSBidWlsZGVyIGdlbmVyYXRlcyBnb29kIHRyZWVzLiIiIgogCi1pbXBvcnQgcmUKIGltcG9ydCB3YXJuaW5ncwogCiB0cnk6CkBAIC0xNCwxMyArMTMsOCBAQAogaWYgTFhNTF9QUkVTRU5UOgogICAgIGZyb20gYnM0LmJ1aWxkZXIgaW1wb3J0IExYTUxUcmVlQnVpbGRlciwgTFhNTFRyZWVCdWlsZGVyRm9yWE1MCiAKLWZyb20gYnM0IGltcG9ydCAoCi0gICAgQmVhdXRpZnVsU291cCwKLSAgICBCZWF1dGlmdWxTdG9uZVNvdXAsCi0gICAgKQotZnJvbSBiczQuZWxlbWVudCBpbXBvcnQgQ29tbWVudCwgRG9jdHlwZSwgU291cFN0cmFpbmVyCitmcm9tIGJzNCBpbXBvcnQgQmVhdXRpZnVsU3RvbmVTb3VwCiBmcm9tIGJzNC50ZXN0aW5nIGltcG9ydCBza2lwSWYKLWZyb20gYnM0LnRlc3RzIGltcG9ydCB0ZXN0X2h0bWxwYXJzZXIKIGZyb20gYnM0LnRlc3RpbmcgaW1wb3J0ICgKICAgICBIVE1MVHJlZUJ1aWxkZXJTbW9rZVRlc3QsCiAgICAgWE1MVHJlZUJ1aWxkZXJTbW9rZVRlc3QsCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X3NvdXAucHkgYi9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X3NvdXAucHkKaW5kZXggZjg3OTQ5ZS4uNmFkM2NiMyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF9zb3VwLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3Rfc291cC5weQpAQCAtMSwxNiArMSwxMiBAQAogIyAtKi0gY29kaW5nOiB1dGYtOCAtKi0KICIiIlRlc3RzIG9mIEJlYXV0aWZ1bCBTb3VwIGFzIGEgd2hvbGUuIiIiCiAKLWZyb20gcGRiIGltcG9ydCBzZXRfdHJhY2UKIGltcG9ydCBsb2dnaW5nCiBpbXBvcnQgdW5pdHRlc3QKIGltcG9ydCBzeXMKIGltcG9ydCB0ZW1wZmlsZQogCi1mcm9tIGJzNCBpbXBvcnQgKAotICAgIEJlYXV0aWZ1bFNvdXAsCi0gICAgQmVhdXRpZnVsU3RvbmVTb3VwLAotKQorZnJvbSBiczQgaW1wb3J0IEJlYXV0aWZ1bFNvdXAKIGZyb20gYnM0LmVsZW1lbnQgaW1wb3J0ICgKICAgICBDaGFyc2V0TWV0YUF0dHJpYnV0ZVZhbHVlLAogICAgIENvbnRlbnRNZXRhQXR0cmlidXRlVmFsdWUsCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X3RyZWUucHkgYi9wb2t5L2JpdGJha2UvbGliL2JzNC90ZXN0cy90ZXN0X3RyZWUucHkKaW5kZXggNmQzZTY3Zi4uOGU1YzY2NCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9iczQvdGVzdHMvdGVzdF90cmVlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvYnM0L3Rlc3RzL3Rlc3RfdHJlZS5weQpAQCAtOSwxNiArOSwxMiBAQAogbWV0aG9kcyB0ZXN0ZWQgaGVyZS4KICIiIgogCi1mcm9tIHBkYiBpbXBvcnQgc2V0X3RyYWNlCiBpbXBvcnQgY29weQogaW1wb3J0IHBpY2tsZQogaW1wb3J0IHJlCiBpbXBvcnQgd2FybmluZ3MKIGZyb20gYnM0IGltcG9ydCBCZWF1dGlmdWxTb3VwCi1mcm9tIGJzNC5idWlsZGVyIGltcG9ydCAoCi0gICAgYnVpbGRlcl9yZWdpc3RyeSwKLSAgICBIVE1MUGFyc2VyVHJlZUJ1aWxkZXIsCi0pCitmcm9tIGJzNC5idWlsZGVyIGltcG9ydCBidWlsZGVyX3JlZ2lzdHJ5CiBmcm9tIGJzNC5lbGVtZW50IGltcG9ydCAoCiAgICAgUFkzSywKICAgICBDRGF0YSwKQEAgLTI5LDEwICsyNSw3IEBACiAgICAgU291cFN0cmFpbmVyLAogICAgIFRhZywKICkKLWZyb20gYnM0LnRlc3RpbmcgaW1wb3J0ICgKLSAgICBTb3VwVGVzdCwKLSAgICBza2lwSWYsCi0pCitmcm9tIGJzNC50ZXN0aW5nIGltcG9ydCBTb3VwVGVzdAogCiBYTUxfQlVJTERFUl9QUkVTRU5UID0gKGJ1aWxkZXJfcmVnaXN0cnkubG9va3VwKCJ4bWwiKSBpcyBub3QgTm9uZSkKIExYTUxfUFJFU0VOVCA9IChidWlsZGVyX3JlZ2lzdHJ5Lmxvb2t1cCgibHhtbCIpIGlzIG5vdCBOb25lKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9oYXNoc2Vydi9jbGllbnQucHkgYi9wb2t5L2JpdGJha2UvbGliL2hhc2hzZXJ2L2NsaWVudC5weQppbmRleCBmNjU5NTY2Li40NjA4NWQ2IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2hhc2hzZXJ2L2NsaWVudC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2hhc2hzZXJ2L2NsaWVudC5weQpAQCAtMyw3ICszLDYgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGNvbnRleHRsaWIgaW1wb3J0IGNsb3NpbmcKIGltcG9ydCBqc29uCiBpbXBvcnQgbG9nZ2luZwogaW1wb3J0IHNvY2tldApAQCAtMTQ4LDYgKzE0NywxNCBAQAogICAgICAgICBtWyd1bmloYXNoJ10gPSB1bmloYXNoCiAgICAgICAgIHJldHVybiBzZWxmLnNlbmRfbWVzc2FnZSh7J3JlcG9ydCc6IG19KQogCisgICAgZGVmIHJlcG9ydF91bmloYXNoX2VxdWl2KHNlbGYsIHRhc2toYXNoLCBtZXRob2QsIHVuaWhhc2gsIGV4dHJhPXt9KToKKyAgICAgICAgc2VsZi5fc2V0X21vZGUoc2VsZi5NT0RFX05PUk1BTCkKKyAgICAgICAgbSA9IGV4dHJhLmNvcHkoKQorICAgICAgICBtWyd0YXNraGFzaCddID0gdGFza2hhc2gKKyAgICAgICAgbVsnbWV0aG9kJ10gPSBtZXRob2QKKyAgICAgICAgbVsndW5paGFzaCddID0gdW5paGFzaAorICAgICAgICByZXR1cm4gc2VsZi5zZW5kX21lc3NhZ2UoeydyZXBvcnQtZXF1aXYnOiBtfSkKKwogICAgIGRlZiBnZXRfc3RhdHMoc2VsZik6CiAgICAgICAgIHNlbGYuX3NldF9tb2RlKHNlbGYuTU9ERV9OT1JNQUwpCiAgICAgICAgIHJldHVybiBzZWxmLnNlbmRfbWVzc2FnZSh7J2dldC1zdGF0cyc6IE5vbmV9KQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9oYXNoc2Vydi9zZXJ2ZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2hhc2hzZXJ2L3NlcnZlci5weQppbmRleCAwYWZmNzc2Li5jYzdlNDgyIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2hhc2hzZXJ2L3NlcnZlci5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2hhc2hzZXJ2L3NlcnZlci5weQpAQCAtMTQzLDYgKzE0Myw3IEBACiAgICAgICAgICAgICBoYW5kbGVycyA9IHsKICAgICAgICAgICAgICAgICAnZ2V0Jzogc2VsZi5oYW5kbGVfZ2V0LAogICAgICAgICAgICAgICAgICdyZXBvcnQnOiBzZWxmLmhhbmRsZV9yZXBvcnQsCisgICAgICAgICAgICAgICAgJ3JlcG9ydC1lcXVpdic6IHNlbGYuaGFuZGxlX2VxdWl2cmVwb3J0LAogICAgICAgICAgICAgICAgICdnZXQtc3RyZWFtJzogc2VsZi5oYW5kbGVfZ2V0X3N0cmVhbSwKICAgICAgICAgICAgICAgICAnZ2V0LXN0YXRzJzogc2VsZi5oYW5kbGVfZ2V0X3N0YXRzLAogICAgICAgICAgICAgICAgICdyZXNldC1zdGF0cyc6IHNlbGYuaGFuZGxlX3Jlc2V0X3N0YXRzLApAQCAtMzAzLDYgKzMwNCw0MSBAQAogCiAgICAgICAgIHNlbGYud3JpdGVfbWVzc2FnZShkKQogCisgICAgYXN5bmMgZGVmIGhhbmRsZV9lcXVpdnJlcG9ydChzZWxmLCBkYXRhKToKKyAgICAgICAgd2l0aCBjbG9zaW5nKHNlbGYuZGIuY3Vyc29yKCkpIGFzIGN1cnNvcjoKKyAgICAgICAgICAgIGluc2VydF9kYXRhID0geworICAgICAgICAgICAgICAgICdtZXRob2QnOiBkYXRhWydtZXRob2QnXSwKKyAgICAgICAgICAgICAgICAnb3V0aGFzaCc6ICIiLAorICAgICAgICAgICAgICAgICd0YXNraGFzaCc6IGRhdGFbJ3Rhc2toYXNoJ10sCisgICAgICAgICAgICAgICAgJ3VuaWhhc2gnOiBkYXRhWyd1bmloYXNoJ10sCisgICAgICAgICAgICAgICAgJ2NyZWF0ZWQnOiBkYXRldGltZS5ub3coKQorICAgICAgICAgICAgfQorCisgICAgICAgICAgICBmb3IgayBpbiAoJ293bmVyJywgJ1BOJywgJ1BWJywgJ1BSJywgJ3Rhc2snLCAnb3V0aGFzaF9zaWdpbmZvJyk6CisgICAgICAgICAgICAgICAgaWYgayBpbiBkYXRhOgorICAgICAgICAgICAgICAgICAgICBpbnNlcnRfZGF0YVtrXSA9IGRhdGFba10KKworICAgICAgICAgICAgY3Vyc29yLmV4ZWN1dGUoJycnSU5TRVJUIE9SIElHTk9SRSBJTlRPIHRhc2tzX3YyICglcykgVkFMVUVTICglcyknJycgJSAoCisgICAgICAgICAgICAgICAgJywgJy5qb2luKHNvcnRlZChpbnNlcnRfZGF0YS5rZXlzKCkpKSwKKyAgICAgICAgICAgICAgICAnLCAnLmpvaW4oJzonICsgayBmb3IgayBpbiBzb3J0ZWQoaW5zZXJ0X2RhdGEua2V5cygpKSkpLAorICAgICAgICAgICAgICAgIGluc2VydF9kYXRhKQorCisgICAgICAgICAgICBzZWxmLmRiLmNvbW1pdCgpCisKKyAgICAgICAgICAgICMgRmV0Y2ggdGhlIHVuaWhhc2ggdGhhdCB3aWxsIGJlIHJlcG9ydGVkIGZvciB0aGUgdGFza2hhc2guIElmIHRoZQorICAgICAgICAgICAgIyB1bmloYXNoIG1hdGNoZXMsIGl0IG1lYW5zIHRoaXMgcm93IHdhcyBpbnNlcnRlZCAob3IgdGhlIG1hcHBpbmcKKyAgICAgICAgICAgICMgd2FzIGFscmVhZHkgdmFsaWQpCisgICAgICAgICAgICByb3cgPSBzZWxmLnF1ZXJ5X2VxdWl2YWxlbnQoZGF0YVsnbWV0aG9kJ10sIGRhdGFbJ3Rhc2toYXNoJ10pCisKKyAgICAgICAgICAgIGlmIHJvd1sndW5paGFzaCddID09IGRhdGFbJ3VuaWhhc2gnXToKKyAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnQWRkaW5nIHRhc2toYXNoIGVxdWl2YWxlbmNlIGZvciAlcyB3aXRoIHVuaWhhc2ggJXMnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhWyd0YXNraGFzaCddLCByb3dbJ3VuaWhhc2gnXSkKKworICAgICAgICAgICAgZCA9IHtrOiByb3dba10gZm9yIGsgaW4gKCd0YXNraGFzaCcsICdtZXRob2QnLCAndW5paGFzaCcpfQorCisgICAgICAgIHNlbGYud3JpdGVfbWVzc2FnZShkKQorCisKICAgICBhc3luYyBkZWYgaGFuZGxlX2dldF9zdGF0cyhzZWxmLCByZXF1ZXN0KToKICAgICAgICAgZCA9IHsKICAgICAgICAgICAgICdyZXF1ZXN0cyc6IHNlbGYucmVxdWVzdF9zdGF0cy50b2RpY3QoKSwKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi9jb29rZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvY29va2VyLnB5CmluZGV4IDYwNGE5NjEuLjY1YjIzZDAgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi9jb29rZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL2Nvb2tlci5weQpAQCAtNCw5ICs0LDggQEAKICMKIAogaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBqc29uCiAKLWZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0LCBkZWZhdWx0ZGljdAorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKIAogZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVucXVvdGUsIHVybHBhcnNlCiAKQEAgLTk0LDcgKzkzLDcgQEAKICAgICAgICAgICAgIHJldHVybiBpbmRleAogCiAgICAgICAgIGNvbGxlY3Rpb25zID0gZC5nZXRWYXIoJ0JCRklMRV9DT0xMRUNUSU9OUycpCi0gICAgICAgIGxheWVyY29uZnMgPSBkLnZhcmhpc3RvcnkuZ2V0X3ZhcmlhYmxlX2l0ZW1zX2ZpbGVzKCdCQkZJTEVfQ09MTEVDVElPTlMnLCBkKQorICAgICAgICBsYXllcmNvbmZzID0gZC52YXJoaXN0b3J5LmdldF92YXJpYWJsZV9pdGVtc19maWxlcygnQkJGSUxFX0NPTExFQ1RJT05TJykKICAgICAgICAgYmJmaWxlX2NvbGxlY3Rpb25zID0ge2xheWVyOiBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5kaXJuYW1lKHBhdGgpKSBmb3IgbGF5ZXIsIHBhdGggaW4gbGF5ZXJjb25mcy5pdGVtcygpfQogCiAgICAgICAgIChfLCBiYl9icmFuY2gsIF8sIF8pID0gc2VsZi5fZ2V0X2JpdGJha2VfaW5mbygpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvcGx1Z2luLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3BsdWdpbi5weQppbmRleCA3MDE1YTFhLi5jYWRkYTM2IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvcGx1Z2luLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi9wbHVnaW4ucHkKQEAgLTcsMTAgKzcsNyBAQAogIyAgIFBsdWdpbiBiYXNlIGNsYXNzCiAjICAgVXRpbGl0eSBGdW5jdGlvbnMgZm9yIHdvcmtpbmcgb24gbGF5ZXJpbmRleCBkYXRhCiAKLWltcG9ydCBhcmdwYXJzZQogaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBvcwotaW1wb3J0IGJiLm1zZwogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignQml0QmFrZS5sYXllcmluZGV4bGliLnBsdWdpbicpCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9jb29rZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvY29va2VyLnB5CmluZGV4IDFmYTEwMmUuLjFkMDY4NWUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9jb29rZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL2Nvb2tlci5weQpAQCAtMywxNSArMywxMiBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWltcG9ydCB1bml0dGVzdAotaW1wb3J0IHRlbXBmaWxlCiBpbXBvcnQgb3MKIGltcG9ydCBiYgogCiBpbXBvcnQgbGF5ZXJpbmRleGxpYgogZnJvbSBsYXllcmluZGV4bGliLnRlc3RzLmNvbW1vbiBpbXBvcnQgTGF5ZXJzVGVzdAogCi1pbXBvcnQgbG9nZ2luZwogCiBjbGFzcyBMYXllckluZGV4Q29va2VyVGVzdChMYXllcnNUZXN0KToKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL2xheWVyaW5kZXhvYmoucHkgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvbGF5ZXJpbmRleG9iai5weQppbmRleCAwYzVlYzg4Li5kZTFlNDc0IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvbGF5ZXJpbmRleG9iai5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL2xheWVyaW5kZXhsaWIvdGVzdHMvbGF5ZXJpbmRleG9iai5weQpAQCAtMywxNCArMyw4IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdGVtcGZpbGUKLWltcG9ydCBvcwotaW1wb3J0IGJiCi0KIGZyb20gbGF5ZXJpbmRleGxpYi50ZXN0cy5jb21tb24gaW1wb3J0IExheWVyc1Rlc3QKIAotaW1wb3J0IGxvZ2dpbmcKIAogY2xhc3MgTGF5ZXJJbmRleE9iamVjdHNUZXN0KExheWVyc1Rlc3QpOgogICAgIGRlZiBzZXRVcChzZWxmKToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvbGF5ZXJpbmRleGxpYi90ZXN0cy9yZXN0YXBpLnB5IGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL3Jlc3RhcGkucHkKaW5kZXggNmQ4ZGMwMC4uZTVjY2FmZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL3Jlc3RhcGkucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9sYXllcmluZGV4bGliL3Rlc3RzL3Jlc3RhcGkucHkKQEAgLTQsMTQgKzQsMTEgQEAKICMKIAogaW1wb3J0IHVuaXR0ZXN0Ci1pbXBvcnQgdGVtcGZpbGUKIGltcG9ydCBvcwotaW1wb3J0IGJiCiAKIGltcG9ydCBsYXllcmluZGV4bGliCiBmcm9tIGxheWVyaW5kZXhsaWIudGVzdHMuY29tbW9uIGltcG9ydCBMYXllcnNUZXN0CiAKLWltcG9ydCBsb2dnaW5nCiAKIGRlZiBza2lwSWZOb05ldHdvcmsoKToKICAgICBpZiBvcy5lbnZpcm9uLmdldCgiQkJfU0tJUF9ORVRURVNUUyIpID09ICJ5ZXMiOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9wbHkveWFjYy5weSBiL3Bva3kvYml0YmFrZS9saWIvcGx5L3lhY2MucHkKaW5kZXggZDUwODg2ZS4uNTYxNzg0ZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9wbHkveWFjYy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3BseS95YWNjLnB5CkBAIC00ODgsNyArNDg4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIyAtLSEgREVCVUcKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHJlc3VsdAogCi0gICAgICAgICAgICBpZiB0ID09IE5vbmU6CisgICAgICAgICAgICBpZiB0IGlzIE5vbmU6CiAKICAgICAgICAgICAgICAgICAjIC0tISBERUJVRwogICAgICAgICAgICAgICAgIGRlYnVnLmVycm9yKCdFcnJvciAgOiAlcycsCkBAIC03NjYsNyArNzY2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgbiA9IHN5bXN0YWNrWy0xXQogICAgICAgICAgICAgICAgICAgICByZXR1cm4gZ2V0YXR0cihuLCJ2YWx1ZSIsTm9uZSkKIAotICAgICAgICAgICAgaWYgdCA9PSBOb25lOgorICAgICAgICAgICAgaWYgdCBpcyBOb25lOgogCiAgICAgICAgICAgICAgICAgIyBXZSBoYXZlIHNvbWUga2luZCBvZiBwYXJzaW5nIGVycm9yIGhlcmUuICBUbyBoYW5kbGUKICAgICAgICAgICAgICAgICAjIHRoaXMsIHdlIGFyZSBnb2luZyB0byBwdXNoIHRoZSBjdXJyZW50IHRva2VuIG9udG8KQEAgLTEwMjEsNyArMTAyMSw3IEBACiAgICAgICAgICAgICAgICAgICAgIG4gPSBzeW1zdGFja1stMV0KICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGdldGF0dHIobiwidmFsdWUiLE5vbmUpCiAKLSAgICAgICAgICAgIGlmIHQgPT0gTm9uZToKKyAgICAgICAgICAgIGlmIHQgaXMgTm9uZToKIAogICAgICAgICAgICAgICAgICMgV2UgaGF2ZSBzb21lIGtpbmQgb2YgcGFyc2luZyBlcnJvciBoZXJlLiAgVG8gaGFuZGxlCiAgICAgICAgICAgICAgICAgIyB0aGlzLCB3ZSBhcmUgZ29pbmcgdG8gcHVzaCB0aGUgY3VycmVudCB0b2tlbiBvbnRvCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3Byc2Vydi9kYi5weSBiL3Bva3kvYml0YmFrZS9saWIvcHJzZXJ2L2RiLnB5CmluZGV4IDExN2Q4YzAuLmNiMmEyNDYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvcHJzZXJ2L2RiLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvcHJzZXJ2L2RiLnB5CkBAIC03MSw3ICs3MSw3IEBACiAgICAgICAgIGRhdGE9c2VsZi5fZXhlY3V0ZSgiU0VMRUNUIHZhbHVlIEZST00gJXMgV0hFUkUgdmVyc2lvbj0/IEFORCBwa2dhcmNoPT8gQU5EIGNoZWNrc3VtPT87IiAlIHNlbGYudGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbiwgcGtnYXJjaCwgY2hlY2tzdW0pKQogICAgICAgICByb3c9ZGF0YS5mZXRjaG9uZSgpCi0gICAgICAgIGlmIHJvdyAhPSBOb25lOgorICAgICAgICBpZiByb3cgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gcm93WzBdCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjbm8gdmFsdWUgZm91bmQsIHRyeSB0byBpbnNlcnQKQEAgLTg3LDcgKzg3LDcgQEAKICAgICAgICAgICAgIGRhdGE9c2VsZi5fZXhlY3V0ZSgiU0VMRUNUIHZhbHVlIEZST00gJXMgV0hFUkUgdmVyc2lvbj0/IEFORCBwa2dhcmNoPT8gQU5EIGNoZWNrc3VtPT87IiAlIHNlbGYudGFibGUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHZlcnNpb24sIHBrZ2FyY2gsIGNoZWNrc3VtKSkKICAgICAgICAgICAgIHJvdz1kYXRhLmZldGNob25lKCkKLSAgICAgICAgICAgIGlmIHJvdyAhPSBOb25lOgorICAgICAgICAgICAgaWYgcm93IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHJldHVybiByb3dbMF0KICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgcmFpc2UgcHJzZXJ2Lk5vdEZvdW5kRXJyb3IKQEAgLTk5LDcgKzk5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzZWxmLnRhYmxlLCBzZWxmLnRhYmxlKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbiwgcGtnYXJjaCwgY2hlY2tzdW0sIHZlcnNpb24sIHBrZ2FyY2gpKQogICAgICAgICByb3c9ZGF0YS5mZXRjaG9uZSgpCi0gICAgICAgIGlmIHJvdyAhPSBOb25lOgorICAgICAgICBpZiByb3cgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gcm93WzBdCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAjbm8gdmFsdWUgZm91bmQsIHRyeSB0byBpbnNlcnQKQEAgLTExNiw3ICsxMTYsNyBAQAogICAgICAgICAgICAgZGF0YT1zZWxmLl9leGVjdXRlKCJTRUxFQ1QgdmFsdWUgRlJPTSAlcyBXSEVSRSB2ZXJzaW9uPT8gQU5EIHBrZ2FyY2g9PyBBTkQgY2hlY2tzdW09PzsiICUgc2VsZi50YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodmVyc2lvbiwgcGtnYXJjaCwgY2hlY2tzdW0pKQogICAgICAgICAgICAgcm93PWRhdGEuZmV0Y2hvbmUoKQotICAgICAgICAgICAgaWYgcm93ICE9IE5vbmU6CisgICAgICAgICAgICBpZiByb3cgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgcmV0dXJuIHJvd1swXQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICByYWlzZSBwcnNlcnYuTm90Rm91bmRFcnJvcgpAQCAtMTMyLDcgKzEzMiw3IEBACiAgICAgICAgIGRhdGEgPSBzZWxmLl9leGVjdXRlKCJTRUxFQ1QgdmFsdWUgRlJPTSAlcyBXSEVSRSB2ZXJzaW9uPT8gQU5EIHBrZ2FyY2g9PyBBTkQgY2hlY2tzdW09PzsiICUgc2VsZi50YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLCBwa2dhcmNoLCBjaGVja3N1bSkpCiAgICAgICAgIHJvdyA9IGRhdGEuZmV0Y2hvbmUoKQotICAgICAgICBpZiByb3cgIT0gTm9uZToKKyAgICAgICAgaWYgcm93IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgdmFsPXJvd1swXQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgI25vIHZhbHVlIGZvdW5kLCB0cnkgdG8gaW5zZXJ0CkBAIC0xNDcsNyArMTQ3LDcgQEAKICAgICAgICAgICAgIGRhdGEgPSBzZWxmLl9leGVjdXRlKCJTRUxFQ1QgdmFsdWUgRlJPTSAlcyBXSEVSRSB2ZXJzaW9uPT8gQU5EIHBrZ2FyY2g9PyBBTkQgY2hlY2tzdW09PzsiICUgc2VsZi50YWJsZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLCBwa2dhcmNoLCBjaGVja3N1bSkpCiAgICAgICAgICAgICByb3cgPSBkYXRhLmZldGNob25lKCkKLSAgICAgICAgICAgIGlmIHJvdyAhPSBOb25lOgorICAgICAgICAgICAgaWYgcm93IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgIHZhbCA9IHJvd1swXQogICAgICAgICByZXR1cm4gdmFsCiAKQEAgLTE3MCw3ICsxNzAsNyBAQAogICAgICAgICBkYXRhID0gc2VsZi5fZXhlY3V0ZSgiU0VMRUNUIHZhbHVlIEZST00gJXMgV0hFUkUgdmVyc2lvbj0/IEFORCBwa2dhcmNoPT8gQU5EIGNoZWNrc3VtPT8gQU5EIHZhbHVlPj0/OyIgJSBzZWxmLnRhYmxlLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICh2ZXJzaW9uLHBrZ2FyY2gsY2hlY2tzdW0sdmFsdWUpKQogICAgICAgICByb3c9ZGF0YS5mZXRjaG9uZSgpCi0gICAgICAgIGlmIHJvdyAhPSBOb25lOgorICAgICAgICBpZiByb3cgaXMgbm90IE5vbmU6CiAgICAgICAgICAgICByZXR1cm4gcm93WzBdCiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICByZXR1cm4gTm9uZQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi9wcnNlcnYvc2Vydi5weSBiL3Bva3kvYml0YmFrZS9saWIvcHJzZXJ2L3NlcnYucHkKaW5kZXggYjg1NGJhMS4uMjVkY2Y4YSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9wcnNlcnYvc2Vydi5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3Byc2Vydi9zZXJ2LnB5CkBAIC0yOTIsMTAgKzI5Miw5IEBACiAgICAgICAgIGxvZ2dlci5hZGRIYW5kbGVyKHN0cmVhbWhhbmRsZXIpCiAKICAgICAgICAgIyB3cml0ZSBwaWRmaWxlCi0gICAgICAgIHBpZCA9IHN0cihvcy5nZXRwaWQoKSkgCi0gICAgICAgIHBmID0gb3BlbihzZWxmLnBpZGZpbGUsICd3JykKLSAgICAgICAgcGYud3JpdGUoIiVzXG4iICUgcGlkKQotICAgICAgICBwZi5jbG9zZSgpCisgICAgICAgIHBpZCA9IHN0cihvcy5nZXRwaWQoKSkKKyAgICAgICAgd2l0aCBvcGVuKHNlbGYucGlkZmlsZSwgJ3cnKSBhcyBwZjoKKyAgICAgICAgICAgIHBmLndyaXRlKCIlc1xuIiAlIHBpZCkKIAogICAgICAgICBzZWxmLndvcmtfZm9yZXZlcigpCiAgICAgICAgIHNlbGYuZGVscGlkKCkKQEAgLTM1Myw5ICszNTIsOCBAQAogICAgIGlwID0gc29ja2V0LmdldGhvc3RieW5hbWUoaG9zdCkKICAgICBwaWRmaWxlID0gUElEUFJFRklYICUgKGlwLCBwb3J0KQogICAgIHRyeToKLSAgICAgICAgcGYgPSBvcGVuKHBpZGZpbGUsJ3InKQotICAgICAgICBwaWQgPSBpbnQocGYucmVhZGxpbmUoKS5zdHJpcCgpKQotICAgICAgICBwZi5jbG9zZSgpCisgICAgICAgIHdpdGggb3BlbihwaWRmaWxlKSBhcyBwZjoKKyAgICAgICAgICAgIHBpZCA9IGludChwZi5yZWFkbGluZSgpLnN0cmlwKCkpCiAgICAgZXhjZXB0IElPRXJyb3I6CiAgICAgICAgIHBpZCA9IE5vbmUKIApAQCAtNDQ5LDI5ICs0NDcsMzUgQEAKIGRlZiBhdXRvX3N0YXJ0KGQpOgogICAgIGdsb2JhbCBzaW5nbGV0b24KIAotICAgICMgU2h1dGRvd24gYW55IGV4aXN0aW5nIFBSIFNlcnZlcgotICAgIGF1dG9fc2h1dGRvd24oKQotCiAgICAgaG9zdF9wYXJhbXMgPSBsaXN0KGZpbHRlcihOb25lLCAoZC5nZXRWYXIoJ1BSU0VSVl9IT1NUJykgb3IgJycpLnNwbGl0KCc6JykpKQogICAgIGlmIG5vdCBob3N0X3BhcmFtczoKKyAgICAgICAgIyBTaHV0ZG93biBhbnkgZXhpc3RpbmcgUFIgU2VydmVyCisgICAgICAgIGF1dG9fc2h1dGRvd24oKQogICAgICAgICByZXR1cm4gTm9uZQogCiAgICAgaWYgbGVuKGhvc3RfcGFyYW1zKSAhPSAyOgorICAgICAgICAjIFNodXRkb3duIGFueSBleGlzdGluZyBQUiBTZXJ2ZXIKKyAgICAgICAgYXV0b19zaHV0ZG93bigpCiAgICAgICAgIGxvZ2dlci5jcml0aWNhbCgnXG4nLmpvaW4oWydQUlNFUlZfSE9TVDogaW5jb3JyZWN0IGZvcm1hdCcsCiAgICAgICAgICAgICAgICAgJ1VzYWdlOiBQUlNFUlZfSE9TVCA9ICI8aG9zdG5hbWU+Ojxwb3J0PiInXSkpCiAgICAgICAgIHJhaXNlIFBSU2VydmljZUNvbmZpZ0Vycm9yCiAKLSAgICBpZiBpc19sb2NhbF9zcGVjaWFsKGhvc3RfcGFyYW1zWzBdLCBpbnQoaG9zdF9wYXJhbXNbMV0pKSBhbmQgbm90IHNpbmdsZXRvbjoKKyAgICBpZiBpc19sb2NhbF9zcGVjaWFsKGhvc3RfcGFyYW1zWzBdLCBpbnQoaG9zdF9wYXJhbXNbMV0pKToKICAgICAgICAgaW1wb3J0IGJiLnV0aWxzCiAgICAgICAgIGNhY2hlZGlyID0gKGQuZ2V0VmFyKCJQRVJTSVNURU5UX0RJUiIpIG9yIGQuZ2V0VmFyKCJDQUNIRSIpKQogICAgICAgICBpZiBub3QgY2FjaGVkaXI6CiAgICAgICAgICAgICBsb2dnZXIuY3JpdGljYWwoIlBsZWFzZSBzZXQgdGhlICdQRVJTSVNURU5UX0RJUicgb3IgJ0NBQ0hFJyB2YXJpYWJsZSIpCiAgICAgICAgICAgICByYWlzZSBQUlNlcnZpY2VDb25maWdFcnJvcgotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoY2FjaGVkaXIpCiAgICAgICAgIGRiZmlsZSA9IG9zLnBhdGguam9pbihjYWNoZWRpciwgInByc2Vydi5zcWxpdGUzIikKICAgICAgICAgbG9nZmlsZSA9IG9zLnBhdGguam9pbihjYWNoZWRpciwgInByc2Vydi5sb2ciKQotICAgICAgICBzaW5nbGV0b24gPSBQUlNlcnZTaW5nbGV0b24ob3MucGF0aC5hYnNwYXRoKGRiZmlsZSksIG9zLnBhdGguYWJzcGF0aChsb2dmaWxlKSwgKCJsb2NhbGhvc3QiLDApKQotICAgICAgICBzaW5nbGV0b24uc3RhcnQoKQorICAgICAgICBpZiBzaW5nbGV0b246CisgICAgICAgICAgICBpZiBzaW5nbGV0b24uZGJmaWxlICE9IGRiZmlsZToKKyAgICAgICAgICAgICAgICMgU2h1dGRvd24gYW55IGV4aXN0aW5nIFBSIFNlcnZlciBhcyBkb2Vzbid0IG1hdGNoIGNvbmZpZworICAgICAgICAgICAgICAgYXV0b19zaHV0ZG93bigpCisgICAgICAgIGlmIG5vdCBzaW5nbGV0b246CisgICAgICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoY2FjaGVkaXIpCisgICAgICAgICAgICBzaW5nbGV0b24gPSBQUlNlcnZTaW5nbGV0b24ob3MucGF0aC5hYnNwYXRoKGRiZmlsZSksIG9zLnBhdGguYWJzcGF0aChsb2dmaWxlKSwgKCJsb2NhbGhvc3QiLDApKQorICAgICAgICAgICAgc2luZ2xldG9uLnN0YXJ0KCkKICAgICBpZiBzaW5nbGV0b246CiAgICAgICAgIGhvc3QsIHBvcnQgPSBzaW5nbGV0b24uZ2V0aW5mbygpCiAgICAgZWxzZToKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvcHlpbm90aWZ5LnB5IGIvcG9reS9iaXRiYWtlL2xpYi9weWlub3RpZnkucHkKaW5kZXggMTUyOGEyMi4uNmFlNDBhMiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi9weWlub3RpZnkucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi9weWlub3RpZnkucHkKQEAgLTEyNzQsNyArMTI3NCw3IEBACiAgICAgICAgICAgICBiYXNlbmFtZSA9IG9zLnBhdGguYmFzZW5hbWUoc3lzLmFyZ3ZbMF0pIG9yICdweWlub3RpZnknCiAgICAgICAgICAgICBwaWRfZmlsZSA9IG9zLnBhdGguam9pbihkaXJuYW1lLCBiYXNlbmFtZSArICcucGlkJykKIAotICAgICAgICBpZiBwaWRfZmlsZSAhPSBGYWxzZSBhbmQgb3MucGF0aC5sZXhpc3RzKHBpZF9maWxlKToKKyAgICAgICAgaWYgcGlkX2ZpbGUgYW5kIG9zLnBhdGgubGV4aXN0cyhwaWRfZmlsZSk6CiAgICAgICAgICAgICBlcnIgPSAnQ2Fubm90IGRhZW1vbml6ZTogcGlkIGZpbGUgJXMgYWxyZWFkeSBleGlzdHMuJyAlIHBpZF9maWxlCiAgICAgICAgICAgICByYWlzZSBOb3RpZmllckVycm9yKGVycikKIApAQCAtMTMwOCw3ICsxMzA4LDcgQEAKICAgICAgICAgZm9ya19kYWVtb24oKQogCiAgICAgICAgICMgV3JpdGUgcGlkCi0gICAgICAgIGlmIHBpZF9maWxlICE9IEZhbHNlOgorICAgICAgICBpZiBwaWRfZmlsZToKICAgICAgICAgICAgIGZsYWdzID0gb3MuT19XUk9OTFl8b3MuT19DUkVBVHxvcy5PX05PRk9MTE9XfG9zLk9fRVhDTAogICAgICAgICAgICAgZmRfcGlkID0gb3Mub3BlbihwaWRfZmlsZSwgZmxhZ3MsIDBvMDYwMCkKICAgICAgICAgICAgIG9zLndyaXRlKGZkX3BpZCwgIGJ5dGVzKHN0cihvcy5nZXRwaWQoKSkgKyAnXG4nLApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbGxlY3Rvci91cmxzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbGxlY3Rvci91cmxzLnB5CmluZGV4IDhlYjFlMzQuLmVmZDY3YTggMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb2xsZWN0b3IvdXJscy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29sbGVjdG9yL3VybHMucHkKQEAgLTYsNyArNiw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotZnJvbSBkamFuZ28uY29uZi51cmxzIGltcG9ydCBpbmNsdWRlLCB1cmwKK2Zyb20gZGphbmdvLmNvbmYudXJscyBpbXBvcnQgdXJsCiAKIGltcG9ydCBibGRjb2xsZWN0b3Iudmlld3MKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbGxlY3Rvci92aWV3cy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb2xsZWN0b3Ivdmlld3MucHkKaW5kZXggYzcwOGI0MS4uMDRjZDhiMyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbGxlY3Rvci92aWV3cy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29sbGVjdG9yL3ZpZXdzLnB5CkBAIC02LDE2ICs2LDggQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby52aWV3cy5kZWNvcmF0b3JzLmNhY2hlIGltcG9ydCBjYWNoZV9jb250cm9sCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQotZnJvbSBkamFuZ28uY29yZS5wYWdpbmF0b3IgaW1wb3J0IFBhZ2luYXRvciwgRW1wdHlQYWdlLCBQYWdlTm90QW5JbnRlZ2VyCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby5odHRwIGltcG9ydCBIdHRwUmVzcG9uc2VCYWRSZXF1ZXN0LCBIdHRwUmVzcG9uc2UKLWZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQotZnJvbSBkamFuZ28udXRpbHMuaHRtbCBpbXBvcnQgZXNjYXBlCi1mcm9tIGRhdGV0aW1lIGltcG9ydCB0aW1lZGVsdGEKLWZyb20gZGphbmdvLnV0aWxzIGltcG9ydCBmb3JtYXRzCi1mcm9tIHRvYXN0ZXJndWkudGVtcGxhdGV0YWdzLnByb2plY3R0YWdzIGltcG9ydCBqc29uIGFzIGpzb25maWx0ZXIKLWltcG9ydCBqc29uCiBpbXBvcnQgb3MKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHN1YnByb2Nlc3MKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL2FkbWluLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvYWRtaW4ucHkKaW5kZXggZTg1YzMwZS4uMTc1NGJjMSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvYWRtaW4ucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvYWRtaW4ucHkKQEAgLTMsNyArMyw2IEBACiAjCiAKIGZyb20gZGphbmdvLmNvbnRyaWIgaW1wb3J0IGFkbWluCi1mcm9tIGRqYW5nby5jb250cmliLmFkbWluLmZpbHRlcnMgaW1wb3J0IFJlbGF0ZWRGaWVsZExpc3RGaWx0ZXIKIGZyb20gLm1vZGVscyBpbXBvcnQgQnVpbGRFbnZpcm9ubWVudAogCiBjbGFzcyBCdWlsZEVudmlyb25tZW50QWRtaW4oYWRtaW4uTW9kZWxBZG1pbik6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9iYmNvbnRyb2xsZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9iYmNvbnRyb2xsZXIucHkKaW5kZXggMzAxZGYxOC4uNzFjMjg4ZCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvYmJjb250cm9sbGVyLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL2JiY29udHJvbGxlci5weQpAQCAtOCwxMCArOCw4IEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHN5cwotaW1wb3J0IHJlCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgdHJhbnNhY3Rpb24KIGZyb20gZGphbmdvLmRiLm1vZGVscyBpbXBvcnQgUQotZnJvbSBibGRjb250cm9sLm1vZGVscyBpbXBvcnQgQnVpbGRFbnZpcm9ubWVudCwgQlJMYXllciwgQlJWYXJpYWJsZSwgQlJUYXJnZXQsIEJSQml0YmFrZQorZnJvbSBibGRjb250cm9sLm1vZGVscyBpbXBvcnQgQnVpbGRFbnZpcm9ubWVudCwgQlJMYXllciwgQlJCaXRiYWtlCiAKICMgbG9hZCBCaXRiYWtlIGNvbXBvbmVudHMKIHBhdGggPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKG9zLnBhdGguZGlybmFtZShvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5hYnNwYXRoKF9fZmlsZV9fKSkpKSkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL2xvY2FsaG9zdGJlY29udHJvbGxlci5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL2xvY2FsaG9zdGJlY29udHJvbGxlci5weQppbmRleCAzOWVhNzM2Li43NTY3NGNjIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9sb2NhbGhvc3RiZWNvbnRyb2xsZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbG9jYWxob3N0YmVjb250cm9sbGVyLnB5CkBAIC03LDI3ICs3LDI0IEBACiAjCiAKIGltcG9ydCBvcwotaW1wb3J0IHN5cwogaW1wb3J0IHJlCiBpbXBvcnQgc2h1dGlsCiBpbXBvcnQgdGltZQotZnJvbSBkamFuZ28uZGIgaW1wb3J0IHRyYW5zYWN0aW9uCi1mcm9tIGRqYW5nby5kYi5tb2RlbHMgaW1wb3J0IFEKLWZyb20gYmxkY29udHJvbC5tb2RlbHMgaW1wb3J0IEJ1aWxkRW52aXJvbm1lbnQsIEJ1aWxkUmVxdWVzdCwgQlJMYXllciwgQlJWYXJpYWJsZSwgQlJUYXJnZXQsIEJSQml0YmFrZSwgQnVpbGQKLWZyb20gb3JtLm1vZGVscyBpbXBvcnQgQ3VzdG9tSW1hZ2VSZWNpcGUsIExheWVyLCBMYXllcl9WZXJzaW9uLCBQcm9qZWN0LCBQcm9qZWN0TGF5ZXIsIFRvYXN0ZXJTZXR0aW5nCitmcm9tIGJsZGNvbnRyb2wubW9kZWxzIGltcG9ydCBCdWlsZEVudmlyb25tZW50LCBCdWlsZFJlcXVlc3QsIEJ1aWxkCitmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IEN1c3RvbUltYWdlUmVjaXBlLCBMYXllciwgTGF5ZXJfVmVyc2lvbiwgUHJvamVjdCwgVG9hc3RlclNldHRpbmcKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgc2lnbmFsX3J1bmJ1aWxkcwogaW1wb3J0IHN1YnByb2Nlc3MKIAogZnJvbSB0b2FzdGVybWFpbiBpbXBvcnQgc2V0dGluZ3MKIAotZnJvbSBibGRjb250cm9sLmJiY29udHJvbGxlciBpbXBvcnQgQnVpbGRFbnZpcm9ubWVudENvbnRyb2xsZXIsIFNoZWxsQ21kRXhjZXB0aW9uLCBCdWlsZFNldHVwRXhjZXB0aW9uLCBCaXRiYWtlQ29udHJvbGxlcgorZnJvbSBibGRjb250cm9sLmJiY29udHJvbGxlciBpbXBvcnQgQnVpbGRFbnZpcm9ubWVudENvbnRyb2xsZXIsIFNoZWxsQ21kRXhjZXB0aW9uLCBCdWlsZFNldHVwRXhjZXB0aW9uCiAKIGltcG9ydCBsb2dnaW5nCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcigidG9hc3RlciIpCiAKIGluc3RhbGxfZGlyID0gb3MuZW52aXJvbi5nZXQoJ1RPQVNURVJfRElSJykKIAotZnJvbSBwcHJpbnQgaW1wb3J0IHBwcmludCwgcGZvcm1hdAorZnJvbSBwcHJpbnQgaW1wb3J0IHBmb3JtYXQKIAogY2xhc3MgTG9jYWxob3N0QkVDb250cm9sbGVyKEJ1aWxkRW52aXJvbm1lbnRDb250cm9sbGVyKToKICAgICAiIiIgSW1wbGVtZW50YXRpb24gb2YgdGhlIEJ1aWxkRW52aXJvbm1lbnRDb250cm9sbGVyIGZvciB0aGUgbG9jYWxob3N0OwpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9jaGVja3NldHRpbmdzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbWFuYWdlbWVudC9jb21tYW5kcy9jaGVja3NldHRpbmdzLnB5CmluZGV4IGZlMmM0ZGMuLjIwZjlkY2UgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvY2hlY2tzZXR0aW5ncy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9tYW5hZ2VtZW50L2NvbW1hbmRzL2NoZWNrc2V0dGluZ3MucHkKQEAgLTIsMTEgKzIsOSBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLmNvcmUubWFuYWdlbWVudC5iYXNlIGltcG9ydCBCYXNlQ29tbWFuZCwgQ29tbWFuZEVycm9yCi1mcm9tIGRqYW5nby5kYiBpbXBvcnQgdHJhbnNhY3Rpb24KK2Zyb20gZGphbmdvLmNvcmUubWFuYWdlbWVudC5iYXNlIGltcG9ydCBCYXNlQ29tbWFuZAogCiBmcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQgaW1wb3J0IGNhbGxfY29tbWFuZAotZnJvbSBibGRjb250cm9sLmJiY29udHJvbGxlciBpbXBvcnQgZ2V0QnVpbGRFbnZpcm9ubWVudENvbnRyb2xsZXIsIFNoZWxsQ21kRXhjZXB0aW9uCiBmcm9tIGJsZGNvbnRyb2wubW9kZWxzIGltcG9ydCBCdWlsZFJlcXVlc3QsIEJ1aWxkRW52aXJvbm1lbnQsIEJSRXJyb3IKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgVG9hc3RlclNldHRpbmcsIEJ1aWxkLCBMYXllcgogCkBAIC04MCw3ICs3OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICB0ZW1wbGF0ZV9jb25mID0gb3MuZW52aXJvbi5nZXQoIlRFTVBMQVRFQ09ORiIsICIiKQogICAgICAgICAgICAgICAgICAgICAgICAgY3VzdG9tX3htbF9vbmx5ID0gb3MuZW52aXJvbi5nZXQoIkNVU1RPTV9YTUxfT05MWSIpCiAKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIFRvYXN0ZXJTZXR0aW5nLm9iamVjdHMuZmlsdGVyKG5hbWU9J0NVU1RPTV9YTUxfT05MWScpLmNvdW50KCkgPiAwIG9yIChub3QgY3VzdG9tX3htbF9vbmx5ID09IE5vbmUpOgorICAgICAgICAgICAgICAgICAgICAgICAgaWYgVG9hc3RlclNldHRpbmcub2JqZWN0cy5maWx0ZXIobmFtZT0nQ1VTVE9NX1hNTF9PTkxZJykuY291bnQoKSA+IDAgb3IgY3VzdG9tX3htbF9vbmx5IGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgb25seSB1c2UgdGhlIGN1c3RvbSBzZXR0aW5ncwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhc3MKICAgICAgICAgICAgICAgICAgICAgICAgIGVsaWYgInBva3kiIGluIHRlbXBsYXRlX2NvbmY6CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9tYW5hZ2VtZW50L2NvbW1hbmRzL3J1bmJ1aWxkcy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvcnVuYnVpbGRzLnB5CmluZGV4IDUwZWM0MDkuLjE5ZjY1OWUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvcnVuYnVpbGRzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21hbmFnZW1lbnQvY29tbWFuZHMvcnVuYnVpbGRzLnB5CkBAIC0xNjgsMTcgKzE2OCwxNyBAQAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBzZWxmLmNsZWFudXAoKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBsb2dnZXIud2FybigicnVuYnVpbGRzOiBjbGVhbnVwIGV4Y2VwdGlvbiAlcyIgJSBzdHIoZSkpCisgICAgICAgICAgICBsb2dnZXIud2FybmluZygicnVuYnVpbGRzOiBjbGVhbnVwIGV4Y2VwdGlvbiAlcyIgJSBzdHIoZSkpCiAKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc2VsZi5hcmNoaXZlKCkKICAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgotICAgICAgICAgICAgbG9nZ2VyLndhcm4oInJ1bmJ1aWxkczogYXJjaGl2ZSBleGNlcHRpb24gJXMiICUgc3RyKGUpKQorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoInJ1bmJ1aWxkczogYXJjaGl2ZSBleGNlcHRpb24gJXMiICUgc3RyKGUpKQogCiAgICAgICAgIHRyeToKICAgICAgICAgICAgIHNlbGYuc2NoZWR1bGUoKQogICAgICAgICBleGNlcHQgRXhjZXB0aW9uIGFzIGU6Ci0gICAgICAgICAgICBsb2dnZXIud2FybigicnVuYnVpbGRzOiBzY2hlZHVsZSBleGNlcHRpb24gJXMiICUgc3RyKGUpKQorICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoInJ1bmJ1aWxkczogc2NoZWR1bGUgZXhjZXB0aW9uICVzIiAlIHN0cihlKSkKIAogICAgIGRlZiBoYW5kbGUoc2VsZiwgKipvcHRpb25zKToKICAgICAgICAgcGlkZmlsZV9wYXRoID0gb3MucGF0aC5qb2luKG9zLmVudmlyb24uZ2V0KCJCVUlMRERJUiIsICIuIiksCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9taWdyYXRpb25zLzAwMDFfaW5pdGlhbC5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21pZ3JhdGlvbnMvMDAwMV9pbml0aWFsLnB5CmluZGV4IDY3ZGIzNzguLjdlZTE5ZjQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21pZ3JhdGlvbnMvMDAwMV9pbml0aWFsLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21pZ3JhdGlvbnMvMDAwMV9pbml0aWFsLnB5CkBAIC0zNyw3ICszNyw3IEBACiAgICAgICAgICAgICAgICAgKCdnaXR1cmwnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU0KSksCiAgICAgICAgICAgICAgICAgKCdjb21taXQnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU0KSksCiAgICAgICAgICAgICAgICAgKCdkaXJwYXRoJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NCkpLAotICAgICAgICAgICAgICAgICgnbGF5ZXJfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicsIG51bGw9VHJ1ZSkpLAorICAgICAgICAgICAgICAgICgnbGF5ZXJfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtODAsMzQgKzgwLDM0IEBACiAgICAgICAgICAgICAgICAgKCdzdGF0ZScsIG1vZGVscy5JbnRlZ2VyRmllbGQoZGVmYXVsdD0wLCBjaG9pY2VzPVsoMCwgYidjcmVhdGVkJyksICgxLCBiJ3F1ZXVlZCcpLCAoMiwgYidpbiBwcm9ncmVzcycpLCAoMywgYidjb21wbGV0ZWQnKSwgKDQsIGInZmFpbGVkJyksICg1LCBiJ2RlbGV0ZWQnKSwgKDYsIGInYXJjaGl2ZScpXSkpLAogICAgICAgICAgICAgICAgICgnY3JlYXRlZCcsIG1vZGVscy5EYXRlVGltZUZpZWxkKGF1dG9fbm93X2FkZD1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCd1cGRhdGVkJywgbW9kZWxzLkRhdGVUaW1lRmllbGQoYXV0b19ub3c9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuT25lVG9PbmVGaWVsZChudWxsPVRydWUsIHRvPSdvcm0uQnVpbGQnKSksCi0gICAgICAgICAgICAgICAgKCdlbnZpcm9ubWVudCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdibGRjb250cm9sLkJ1aWxkRW52aXJvbm1lbnQnLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ3Byb2plY3QnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlByb2plY3QnKSksCisgICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5PbmVUb09uZUZpZWxkKG51bGw9VHJ1ZSwgdG89J29ybS5CdWlsZCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgnZW52aXJvbm1lbnQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nYmxkY29udHJvbC5CdWlsZEVudmlyb25tZW50JywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ3Byb2plY3QnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlByb2plY3QnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdicnZhcmlhYmxlJywKICAgICAgICAgICAgIG5hbWU9J3JlcScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nYmxkY29udHJvbC5CdWlsZFJlcXVlc3QnKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdibGRjb250cm9sLkJ1aWxkUmVxdWVzdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdicnRhcmdldCcsCiAgICAgICAgICAgICBuYW1lPSdyZXEnLAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J2JsZGNvbnRyb2wuQnVpbGRSZXF1ZXN0JyksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nYmxkY29udHJvbC5CdWlsZFJlcXVlc3QnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nYnJsYXllcicsCiAgICAgICAgICAgICBuYW1lPSdyZXEnLAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J2JsZGNvbnRyb2wuQnVpbGRSZXF1ZXN0JyksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nYmxkY29udHJvbC5CdWlsZFJlcXVlc3QnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nYnJlcnJvcicsCiAgICAgICAgICAgICBuYW1lPSdyZXEnLAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J2JsZGNvbnRyb2wuQnVpbGRSZXF1ZXN0JyksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nYmxkY29udHJvbC5CdWlsZFJlcXVlc3QnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nYnJiaXRiYWtlJywKICAgICAgICAgICAgIG5hbWU9J3JlcScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuT25lVG9PbmVGaWVsZCh0bz0nYmxkY29udHJvbC5CdWlsZFJlcXVlc3QnKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5PbmVUb09uZUZpZWxkKHRvPSdibGRjb250cm9sLkJ1aWxkUmVxdWVzdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgXQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbW9kZWxzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL2JsZGNvbnRyb2wvbW9kZWxzLnB5CmluZGV4IGJjZmZjZjUuLmMyZjMwMmQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9ibGRjb250cm9sL21vZGVscy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvYmxkY29udHJvbC9tb2RlbHMucHkKQEAgLTQsOSArNCw4IEBACiAKIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgdW5pY29kZV9saXRlcmFscwogZnJvbSBkamFuZ28uZGIgaW1wb3J0IG1vZGVscwotZnJvbSBkamFuZ28uY29yZS52YWxpZGF0b3JzIGltcG9ydCBNYXhWYWx1ZVZhbGlkYXRvciwgTWluVmFsdWVWYWxpZGF0b3IKIGZyb20gZGphbmdvLnV0aWxzLmVuY29kaW5nIGltcG9ydCBmb3JjZV90ZXh0Ci1mcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIFByb2plY3RMYXllciwgUHJvamVjdFZhcmlhYmxlLCBQcm9qZWN0VGFyZ2V0LCBCdWlsZCwgTGF5ZXJfVmVyc2lvbgorZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBQcm9qZWN0LCBCdWlsZCwgTGF5ZXJfVmVyc2lvbgogCiBpbXBvcnQgbG9nZ2luZwogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoInRvYXN0ZXIiKQpAQCAtODYsOSArODUsOSBAQAogCiAgICAgc2VhcmNoX2FsbG93ZWRfZmllbGRzID0gKCJicnRhcmdldF9fdGFyZ2V0IiwgImJ1aWxkX19wcm9qZWN0X19uYW1lIikKIAotICAgIHByb2plY3QgICAgID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvamVjdCkKLSAgICBidWlsZCAgICAgICA9IG1vZGVscy5PbmVUb09uZUZpZWxkKEJ1aWxkLCBudWxsID0gVHJ1ZSkgICAgICMgVE9ETzogdG9hc3RlcnVpIHNob3VsZCBzZXQgdGhpcyB3aGVuIEJ1aWxkIGlzIGNyZWF0ZWQKLSAgICBlbnZpcm9ubWVudCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkRW52aXJvbm1lbnQsIG51bGwgPSBUcnVlKQorICAgIHByb2plY3QgICAgID0gbW9kZWxzLkZvcmVpZ25LZXkoUHJvamVjdCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQorICAgIGJ1aWxkICAgICAgID0gbW9kZWxzLk9uZVRvT25lRmllbGQoQnVpbGQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbCA9IFRydWUpICAgICAjIFRPRE86IHRvYXN0ZXJ1aSBzaG91bGQgc2V0IHRoaXMgd2hlbiBCdWlsZCBpcyBjcmVhdGVkCisgICAgZW52aXJvbm1lbnQgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZEVudmlyb25tZW50LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIG51bGwgPSBUcnVlKQogICAgIHN0YXRlICAgICAgID0gbW9kZWxzLkludGVnZXJGaWVsZChjaG9pY2VzID0gUkVRVUVTVF9TVEFURSwgZGVmYXVsdCA9IFJFUV9DUkVBVEVEKQogICAgIGNyZWF0ZWQgICAgID0gbW9kZWxzLkRhdGVUaW1lRmllbGQoYXV0b19ub3dfYWRkID0gVHJ1ZSkKICAgICB1cGRhdGVkICAgICA9IG1vZGVscy5EYXRlVGltZUZpZWxkKGF1dG9fbm93ID0gVHJ1ZSkKQEAgLTEzMiwzMiArMTMxLDMyIEBACiAKIAogY2xhc3MgQlJMYXllcihtb2RlbHMuTW9kZWwpOgotICAgIHJlcSA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkUmVxdWVzdCkKKyAgICByZXEgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZFJlcXVlc3QsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBuYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKICAgICBnaXR1cmwgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU0LCBudWxsPVRydWUpCiAgICAgbG9jYWxfc291cmNlX2RpciA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTQsIG51bGw9VHJ1ZSkKICAgICBjb21taXQgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU0LCBudWxsPVRydWUpCiAgICAgZGlycGF0aCA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTQsIG51bGw9VHJ1ZSkKLSAgICBsYXllcl92ZXJzaW9uID0gbW9kZWxzLkZvcmVpZ25LZXkoTGF5ZXJfVmVyc2lvbiwgbnVsbD1UcnVlKQorICAgIGxheWVyX3ZlcnNpb24gPSBtb2RlbHMuRm9yZWlnbktleShMYXllcl9WZXJzaW9uLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIG51bGw9VHJ1ZSkKIAogY2xhc3MgQlJCaXRiYWtlKG1vZGVscy5Nb2RlbCk6Ci0gICAgcmVxICAgICAgICAgPSBtb2RlbHMuT25lVG9PbmVGaWVsZChCdWlsZFJlcXVlc3QpICAgICMgb25seSBvbmUgYml0YmFrZSBmb3IgYSByZXF1ZXN0CisgICAgcmVxICAgICAgICAgPSBtb2RlbHMuT25lVG9PbmVGaWVsZChCdWlsZFJlcXVlc3QsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkgICAgIyBvbmx5IG9uZSBiaXRiYWtlIGZvciBhIHJlcXVlc3QKICAgICBnaXR1cmwgICAgICA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aCA9MjU0KQogICAgIGNvbW1pdCAgICAgID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoID0gMjU0KQogICAgIGRpcnBhdGggICAgID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoID0gMjU0KQogCiBjbGFzcyBCUlZhcmlhYmxlKG1vZGVscy5Nb2RlbCk6Ci0gICAgcmVxICAgICAgICAgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZFJlcXVlc3QpCisgICAgcmVxICAgICAgICAgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZFJlcXVlc3QsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBuYW1lICAgICAgICA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDApCiAgICAgdmFsdWUgICAgICAgPSBtb2RlbHMuVGV4dEZpZWxkKGJsYW5rID0gVHJ1ZSkKIAogY2xhc3MgQlJUYXJnZXQobW9kZWxzLk1vZGVsKToKLSAgICByZXEgICAgICAgICA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkUmVxdWVzdCkKKyAgICByZXEgICAgICAgICA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkUmVxdWVzdCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQogICAgIHRhcmdldCAgICAgID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKICAgICB0YXNrICAgICAgICA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDAsIG51bGw9VHJ1ZSkKIAogY2xhc3MgQlJFcnJvcihtb2RlbHMuTW9kZWwpOgotICAgIHJlcSAgICAgICAgID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGRSZXF1ZXN0KQorICAgIHJlcSAgICAgICAgID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGRSZXF1ZXN0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgZXJydHlwZSAgICAgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIGVycm1zZyAgICAgID0gbW9kZWxzLlRleHRGaWVsZCgpCiAgICAgdHJhY2ViYWNrICAgPSBtb2RlbHMuVGV4dEZpZWxkKCkKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvb2UtY29yZS54bWwgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL29lLWNvcmUueG1sCmluZGV4IGE3MjNmNWEuLmZkOTNmNGQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvb2UtY29yZS54bWwKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9vZS1jb3JlLnhtbApAQCAtOCw5ICs4LDkgQEAKIAogICA8IS0tIEJpdGJha2UgdmVyc2lvbnMgd2hpY2ggY29ycmVzcG9uZCB0byB0aGUgbWV0YWRhdGEgcmVsZWFzZSAtLT4KICAgPG9iamVjdCBtb2RlbD0ib3JtLmJpdGJha2V2ZXJzaW9uIiBwaz0iMSI+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+d2FycmlvcjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+ZHVuZmVsbDwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZ2l0dXJsIj5naXQ6Ly9naXQub3BlbmVtYmVkZGVkLm9yZy9iaXRiYWtlPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPjEuNDI8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+MS40NjwvZmllbGQ+CiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0uYml0YmFrZXZlcnNpb24iIHBrPSIyIj4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5IRUFEPC9maWVsZD4KQEAgLTMwLDExICszMCwxMSBAQAogCiAgIDwhLS0gUmVsZWFzZXMgYXZhaWxhYmxlIC0tPgogICA8b2JqZWN0IG1vZGVsPSJvcm0ucmVsZWFzZSIgcGs9IjEiPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9Im5hbWUiPndhcnJpb3I8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRlc2NyaXB0aW9uIj5PcGVuZW1iZWRkZWQgV2FycmlvcjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+ZHVuZmVsbDwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGVzY3JpcHRpb24iPk9wZW5lbWJlZGRlZCBEdW5mZWxsPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0uYml0YmFrZXZlcnNpb24iIG5hbWU9ImJpdGJha2VfdmVyc2lvbiI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoX25hbWUiPndhcnJpb3I8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJUZXh0RmllbGQiIG5hbWU9ImhlbHB0ZXh0Ij5Ub2FzdGVyIHdpbGwgcnVuIHlvdXIgYnVpbGRzIHVzaW5nIHRoZSB0aXAgb2YgdGhlICZsdDthIGhyZWY9XCJodHRwOi8vY2dpdC5vcGVuZW1iZWRkZWQub3JnL29wZW5lbWJlZGRlZC1jb3JlL2xvZy8/aD13YXJyaW9yXCImZ3Q7T3BlbkVtYmVkZGVkIFdhcnJpb3ImbHQ7L2EmZ3Q7IGJyYW5jaC48L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaF9uYW1lIj5kdW5mZWxsPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPVwiaHR0cDovL2NnaXQub3BlbmVtYmVkZGVkLm9yZy9vcGVuZW1iZWRkZWQtY29yZS9sb2cvP2g9ZHVuZmVsbFwiJmd0O09wZW5FbWJlZGRlZCBEdW5mZWxsJmx0Oy9hJmd0OyBicmFuY2guPC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5yZWxlYXNlIiBwaz0iMiI+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+bG9jYWw8L2ZpZWxkPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9wb2t5LnhtbCBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vZml4dHVyZXMvcG9reS54bWwKaW5kZXggNzk5MjM4My4uOTAyYmM4OCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9maXh0dXJlcy9wb2t5LnhtbAorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL2ZpeHR1cmVzL3Bva3kueG1sCkBAIC04LDkgKzgsOSBAQAogCiAgIDwhLS0gQml0YmFrZSB2ZXJzaW9ucyB3aGljaCBjb3JyZXNwb25kIHRvIHRoZSBtZXRhZGF0YSByZWxlYXNlIC0tPgogICA8b2JqZWN0IG1vZGVsPSJvcm0uYml0YmFrZXZlcnNpb24iIHBrPSIxIj4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj53YXJyaW9yPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5kdW5mZWxsPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJnaXR1cmwiPmdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3k8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+d2FycmlvcjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj5kdW5mZWxsPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJkaXJwYXRoIj5iaXRiYWtlPC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5iaXRiYWtldmVyc2lvbiIgcGs9IjIiPgpAQCAtMzUsMTEgKzM1LDExIEBACiAKICAgPCEtLSBSZWxlYXNlcyBhdmFpbGFibGUgLS0+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5yZWxlYXNlIiBwaz0iMSI+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+d2FycmlvcjwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGVzY3JpcHRpb24iPllvY3RvIFByb2plY3QgMi43ICJXYXJyaW9yIjwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0ibmFtZSI+ZHVuZmVsbDwvZmllbGQ+CisgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGVzY3JpcHRpb24iPllvY3RvIFByb2plY3QgMy4xICJEdW5mZWxsIjwvZmllbGQ+CiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmJpdGJha2V2ZXJzaW9uIiBuYW1lPSJiaXRiYWtlX3ZlcnNpb24iPjE8L2ZpZWxkPgotICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaF9uYW1lIj53YXJyaW9yPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPSJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L2xvZy8/aD13YXJyaW9yIiZndDtZb2N0byBQcm9qZWN0IFdhcnJpb3IgYnJhbmNoJmx0Oy9hJmd0Oy48L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaF9uYW1lIj5kdW5mZWxsPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iVGV4dEZpZWxkIiBuYW1lPSJoZWxwdGV4dCI+VG9hc3RlciB3aWxsIHJ1biB5b3VyIGJ1aWxkcyB1c2luZyB0aGUgdGlwIG9mIHRoZSAmbHQ7YSBocmVmPSJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9wb2t5L2xvZy8/aD1kdW5mZWxsIiZndDtZb2N0byBQcm9qZWN0IER1bmZlbGwgYnJhbmNoJmx0Oy9hJmd0Oy48L2ZpZWxkPgogICA8L29iamVjdD4KICAgPG9iamVjdCBtb2RlbD0ib3JtLnJlbGVhc2UiIHBrPSIyIj4KICAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJuYW1lIj5sb2NhbDwvZmllbGQ+CkBAIC0xMzAsNyArMTMwLDcgQEAKICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ubGF5ZXIiIG5hbWU9ImxheWVyIj4xPC9maWVsZD4KICAgICA8ZmllbGQgdHlwZT0iSW50ZWdlckZpZWxkIiBuYW1lPSJsYXllcl9zb3VyY2UiPjA8L2ZpZWxkPgogICAgIDxmaWVsZCByZWw9Ik1hbnlUb09uZVJlbCIgdG89Im9ybS5yZWxlYXNlIiBuYW1lPSJyZWxlYXNlIj4xPC9maWVsZD4KLSAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPndhcnJpb3I8L2ZpZWxkPgorICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImJyYW5jaCI+ZHVuZmVsbDwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iZGlycGF0aCI+bWV0YTwvZmllbGQ+CiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0ubGF5ZXJfdmVyc2lvbiIgcGs9IjIiPgpAQCAtMTY4LDcgKzE2OCw3IEBACiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmxheWVyIiBuYW1lPSJsYXllciI+MjwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkludGVnZXJGaWVsZCIgbmFtZT0ibGF5ZXJfc291cmNlIj4wPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj53YXJyaW9yPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPmR1bmZlbGw8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRpcnBhdGgiPm1ldGEtcG9reTwvZmllbGQ+CiAgIDwvb2JqZWN0PgogICA8b2JqZWN0IG1vZGVsPSJvcm0ubGF5ZXJfdmVyc2lvbiIgcGs9IjYiPgpAQCAtMjA2LDcgKzIwNiw3IEBACiAgICAgPGZpZWxkIHJlbD0iTWFueVRvT25lUmVsIiB0bz0ib3JtLmxheWVyIiBuYW1lPSJsYXllciI+MzwvZmllbGQ+CiAgICAgPGZpZWxkIHR5cGU9IkludGVnZXJGaWVsZCIgbmFtZT0ibGF5ZXJfc291cmNlIj4wPC9maWVsZD4KICAgICA8ZmllbGQgcmVsPSJNYW55VG9PbmVSZWwiIHRvPSJvcm0ucmVsZWFzZSIgbmFtZT0icmVsZWFzZSI+MTwvZmllbGQ+Ci0gICAgPGZpZWxkIHR5cGU9IkNoYXJGaWVsZCIgbmFtZT0iYnJhbmNoIj53YXJyaW9yPC9maWVsZD4KKyAgICA8ZmllbGQgdHlwZT0iQ2hhckZpZWxkIiBuYW1lPSJicmFuY2giPmR1bmZlbGw8L2ZpZWxkPgogICAgIDxmaWVsZCB0eXBlPSJDaGFyRmllbGQiIG5hbWU9ImRpcnBhdGgiPm1ldGEteW9jdG8tYnNwPC9maWVsZD4KICAgPC9vYmplY3Q+CiAgIDxvYmplY3QgbW9kZWw9Im9ybS5sYXllcl92ZXJzaW9uIiBwaz0iMTAiPgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tYW5hZ2VtZW50L2NvbW1hbmRzL2xzdXBkYXRlcy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWFuYWdlbWVudC9jb21tYW5kcy9sc3VwZGF0ZXMucHkKaW5kZXggNWI1YWJiYi4uYTRkYmNhYSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tYW5hZ2VtZW50L2NvbW1hbmRzL2xzdXBkYXRlcy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21hbmFnZW1lbnQvY29tbWFuZHMvbHN1cGRhdGVzLnB5CkBAIC04LDcgKzgsNyBAQAogCiBmcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQuYmFzZSBpbXBvcnQgQmFzZUNvbW1hbmQKIAotZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBMYXllclNvdXJjZSwgTGF5ZXIsIFJlbGVhc2UsIExheWVyX1ZlcnNpb24KK2Zyb20gb3JtLm1vZGVscyBpbXBvcnQgTGF5ZXIsIFJlbGVhc2UsIExheWVyX1ZlcnNpb24KIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgTGF5ZXJWZXJzaW9uRGVwZW5kZW5jeSwgTWFjaGluZSwgUmVjaXBlCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IERpc3RybwogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBUb2FzdGVyU2V0dGluZwpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDFfaW5pdGlhbC5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDAxX2luaXRpYWwucHkKaW5kZXggNzYwNDYyZi4uYThhYzIzYiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDFfaW5pdGlhbC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwMV9pbml0aWFsLnB5CkBAIC01NCw3ICs1NCw3IEBACiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ2ZpbGVfbmFtZScsIG1vZGVscy5GaWxlUGF0aEZpZWxkKCkpLAogICAgICAgICAgICAgICAgICgnZmlsZV9zaXplJywgbW9kZWxzLkludGVnZXJGaWVsZCgpKSwKLSAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5CdWlsZCcpKSwKKyAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5CdWlsZCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTY0LDcgKzY0LDcgQEAKICAgICAgICAgICAgICAgICAoJ2FyZWEnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGNob2ljZXM9WygwLCBiJ3ZhcmlhYmxlJyldKSksCiAgICAgICAgICAgICAgICAgKCdrZXknLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKSksCiAgICAgICAgICAgICAgICAgKCd0ZXh0JywgbW9kZWxzLlRleHRGaWVsZCgpKSwKLSAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdoZWxwdGV4dF9idWlsZCcsIHRvPSdvcm0uQnVpbGQnKSksCisgICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0naGVscHRleHRfYnVpbGQnLCB0bz0nb3JtLkJ1aWxkJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtOTQsOCArOTQsOCBAQAogICAgICAgICAgICAgICAgICgnZGlycGF0aCcsIG1vZGVscy5DaGFyRmllbGQoZGVmYXVsdD1Ob25lLCBtYXhfbGVuZ3RoPTI1NSwgbnVsbD1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCdwcmlvcml0eScsIG1vZGVscy5JbnRlZ2VyRmllbGQoZGVmYXVsdD0wKSksCiAgICAgICAgICAgICAgICAgKCdsb2NhbF9wYXRoJywgbW9kZWxzLkZpbGVQYXRoRmllbGQoZGVmYXVsdD1iJy8nLCBtYXhfbGVuZ3RoPTEwMjQpKSwKLSAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdsYXllcl92ZXJzaW9uX2J1aWxkJywgZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkJ1aWxkJywgbnVsbD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdsYXllcicsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nbGF5ZXJfdmVyc2lvbl9sYXllcicsIHRvPSdvcm0uTGF5ZXInKSksCisgICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nbGF5ZXJfdmVyc2lvbl9idWlsZCcsIGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5CdWlsZCcsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCdsYXllcicsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nbGF5ZXJfdmVyc2lvbl9sYXllcicsIHRvPSdvcm0uTGF5ZXInLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0xMTIsOSArMTEyLDkgQEAKICAgICAgICAgICAgIGZpZWxkcz1bCiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ3VwX2lkJywgbW9kZWxzLkludGVnZXJGaWVsZChkZWZhdWx0PU5vbmUsIG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnZGVwZW5kc19vbicsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nZGVwZW5kZWVzJywgdG89J29ybS5MYXllcl9WZXJzaW9uJykpLAotICAgICAgICAgICAgICAgICgnbGF5ZXJfc291cmNlJywgbW9kZWxzLkZvcmVpZ25LZXkoZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkxheWVyU291cmNlJywgbnVsbD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdsYXllcl92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdkZXBlbmRlbmNpZXMnLCB0bz0nb3JtLkxheWVyX1ZlcnNpb24nKSksCisgICAgICAgICAgICAgICAgKCdkZXBlbmRzX29uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdkZXBlbmRlZXMnLCB0bz0nb3JtLkxheWVyX1ZlcnNpb24nLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ2xheWVyX3NvdXJjZScsIG1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5MYXllclNvdXJjZScsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCdsYXllcl92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdkZXBlbmRlbmNpZXMnLCB0bz0nb3JtLkxheWVyX1ZlcnNpb24nLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0xMjUsNyArMTI1LDcgQEAKICAgICAgICAgICAgICAgICAoJ21lc3NhZ2UnLCBtb2RlbHMuVGV4dEZpZWxkKG51bGw9VHJ1ZSwgYmxhbms9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgncGF0aG5hbWUnLCBtb2RlbHMuRmlsZVBhdGhGaWVsZChtYXhfbGVuZ3RoPTI1NSwgYmxhbms9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnbGluZW5vJywgbW9kZWxzLkludGVnZXJGaWVsZChudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5CdWlsZCcpKSwKKyAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5CdWlsZCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTEzNiw4ICsxMzYsOCBAQAogICAgICAgICAgICAgICAgICgndXBfZGF0ZScsIG1vZGVscy5EYXRlVGltZUZpZWxkKGRlZmF1bHQ9Tm9uZSwgbnVsbD1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCduYW1lJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NSkpLAogICAgICAgICAgICAgICAgICgnZGVzY3JpcHRpb24nLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU1KSksCi0gICAgICAgICAgICAgICAgKCdsYXllcl9zb3VyY2UnLCBtb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uTGF5ZXJTb3VyY2UnLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ2xheWVyX3ZlcnNpb24nLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkxheWVyX1ZlcnNpb24nKSksCisgICAgICAgICAgICAgICAgKCdsYXllcl9zb3VyY2UnLCBtb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uTGF5ZXJTb3VyY2UnLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgnbGF5ZXJfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTE1NCw3ICsxNTQsNyBAQAogICAgICAgICAgICAgICAgICgnaW5zdGFsbGVkX3NpemUnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGRlZmF1bHQ9MCkpLAogICAgICAgICAgICAgICAgICgnc2VjdGlvbicsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD04MCwgYmxhbms9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnbGljZW5zZScsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD04MCwgYmxhbms9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkJ1aWxkJywgbnVsbD1UcnVlKSksCisgICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uQnVpbGQnLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTE2Miw4ICsxNjIsOCBAQAogICAgICAgICAgICAgZmllbGRzPVsKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZCh2ZXJib3NlX25hbWU9J0lEJywgc2VyaWFsaXplPUZhbHNlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnZGVwX3R5cGUnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGNob2ljZXM9WygwLCBiJ2RlcGVuZHMnKSwgKDEsIGInZGVwZW5kcycpLCAoMywgYidyZWNvbW1lbmRzJyksICgyLCBiJ3JlY29tbWVuZHMnKSwgKDQsIGInc3VnZ2VzdHMnKSwgKDUsIGIncHJvdmlkZXMnKSwgKDYsIGIncmVwbGFjZXMnKSwgKDcsIGInY29uZmxpY3RzJyldKSksCi0gICAgICAgICAgICAgICAgKCdkZXBlbmRzX29uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdwYWNrYWdlX2RlcGVuZGVuY2llc190YXJnZXQnLCB0bz0nb3JtLlBhY2thZ2UnKSksCi0gICAgICAgICAgICAgICAgKCdwYWNrYWdlJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdwYWNrYWdlX2RlcGVuZGVuY2llc19zb3VyY2UnLCB0bz0nb3JtLlBhY2thZ2UnKSksCisgICAgICAgICAgICAgICAgKCdkZXBlbmRzX29uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdwYWNrYWdlX2RlcGVuZGVuY2llc190YXJnZXQnLCB0bz0nb3JtLlBhY2thZ2UnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ3BhY2thZ2UnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3BhY2thZ2VfZGVwZW5kZW5jaWVzX3NvdXJjZScsIHRvPSdvcm0uUGFja2FnZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTE3Miw3ICsxNzIsNyBAQAogICAgICAgICAgICAgICAgICgnaWQnLCBtb2RlbHMuQXV0b0ZpZWxkKHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCdwYXRoJywgbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD0yNTUsIGJsYW5rPVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ3NpemUnLCBtb2RlbHMuSW50ZWdlckZpZWxkKCkpLAotICAgICAgICAgICAgICAgICgncGFja2FnZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nYnVpbGRmaWxlbGlzdF9wYWNrYWdlJywgdG89J29ybS5QYWNrYWdlJykpLAorICAgICAgICAgICAgICAgICgncGFja2FnZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nYnVpbGRmaWxlbGlzdF9wYWNrYWdlJywgdG89J29ybS5QYWNrYWdlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMTg1LDcgKzE4NSw3IEBACiAgICAgICAgICAgICAgICAgKCd1cGRhdGVkJywgbW9kZWxzLkRhdGVUaW1lRmllbGQoYXV0b19ub3c9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgndXNlcl9pZCcsIG1vZGVscy5JbnRlZ2VyRmllbGQobnVsbD1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCdpc19kZWZhdWx0JywgbW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0PUZhbHNlKSksCi0gICAgICAgICAgICAgICAgKCdiaXRiYWtlX3ZlcnNpb24nLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkJpdGJha2VWZXJzaW9uJywgbnVsbD1UcnVlKSksCisgICAgICAgICAgICAgICAgKCdiaXRiYWtlX3ZlcnNpb24nLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkJpdGJha2VWZXJzaW9uJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0xOTMsOCArMTkzLDggQEAKICAgICAgICAgICAgIGZpZWxkcz1bCiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ29wdGlvbmFsJywgbW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0PVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ2xheWVyY29tbWl0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5MYXllcl9WZXJzaW9uJywgbnVsbD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdwcm9qZWN0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5Qcm9qZWN0JykpLAorICAgICAgICAgICAgICAgICgnbGF5ZXJjb21taXQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkxheWVyX1ZlcnNpb24nLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgncHJvamVjdCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUHJvamVjdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTIwMyw3ICsyMDMsNyBAQAogICAgICAgICAgICAgICAgICgnaWQnLCBtb2RlbHMuQXV0b0ZpZWxkKHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCd0YXJnZXQnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKSksCiAgICAgICAgICAgICAgICAgKCd0YXNrJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCwgbnVsbD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdwcm9qZWN0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5Qcm9qZWN0JykpLAorICAgICAgICAgICAgICAgICgncHJvamVjdCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUHJvamVjdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTIxMiw3ICsyMTIsNyBAQAogICAgICAgICAgICAgICAgICgnaWQnLCBtb2RlbHMuQXV0b0ZpZWxkKHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCduYW1lJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkpLAogICAgICAgICAgICAgICAgICgndmFsdWUnLCBtb2RlbHMuVGV4dEZpZWxkKGJsYW5rPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ3Byb2plY3QnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlByb2plY3QnKSksCisgICAgICAgICAgICAgICAgKCdwcm9qZWN0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5Qcm9qZWN0Jywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMjMyLDggKzIzMiw4IEBACiAgICAgICAgICAgICAgICAgKCdmaWxlX3BhdGgnLCBtb2RlbHMuRmlsZVBhdGhGaWVsZChtYXhfbGVuZ3RoPTI1NSkpLAogICAgICAgICAgICAgICAgICgncGF0aGZsYWdzJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTIwMCwgYmxhbms9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnaXNfaW1hZ2UnLCBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQ9RmFsc2UpKSwKLSAgICAgICAgICAgICAgICAoJ2xheWVyX3NvdXJjZScsIG1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5MYXllclNvdXJjZScsIG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnbGF5ZXJfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ncmVjaXBlX2xheWVyX3ZlcnNpb24nLCB0bz0nb3JtLkxheWVyX1ZlcnNpb24nKSksCisgICAgICAgICAgICAgICAgKCdsYXllcl9zb3VyY2UnLCBtb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uTGF5ZXJTb3VyY2UnLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgnbGF5ZXJfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ncmVjaXBlX2xheWVyX3ZlcnNpb24nLCB0bz0nb3JtLkxheWVyX1ZlcnNpb24nLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0yNDEsOCArMjQxLDggQEAKICAgICAgICAgICAgIGZpZWxkcz1bCiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ2RlcF90eXBlJywgbW9kZWxzLkludGVnZXJGaWVsZChjaG9pY2VzPVsoMCwgYidkZXBlbmRzJyksICgxLCBiJ3JkZXBlbmRzJyldKSksCi0gICAgICAgICAgICAgICAgKCdkZXBlbmRzX29uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdyX2RlcGVuZGVuY2llc19kZXBlbmRzJywgdG89J29ybS5SZWNpcGUnKSksCi0gICAgICAgICAgICAgICAgKCdyZWNpcGUnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3JfZGVwZW5kZW5jaWVzX3JlY2lwZScsIHRvPSdvcm0uUmVjaXBlJykpLAorICAgICAgICAgICAgICAgICgnZGVwZW5kc19vbicsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ncl9kZXBlbmRlbmNpZXNfZGVwZW5kcycsIHRvPSdvcm0uUmVjaXBlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCdyZWNpcGUnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3JfZGVwZW5kZW5jaWVzX3JlY2lwZScsIHRvPSdvcm0uUmVjaXBlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICBdLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKApAQCAtMjUzLDcgKzI1Myw3IEBACiAgICAgICAgICAgICAgICAgKCdkZXNjcmlwdGlvbicsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTUpKSwKICAgICAgICAgICAgICAgICAoJ2JyYW5jaF9uYW1lJywgbW9kZWxzLkNoYXJGaWVsZChkZWZhdWx0PWInJywgbWF4X2xlbmd0aD01MCkpLAogICAgICAgICAgICAgICAgICgnaGVscHRleHQnLCBtb2RlbHMuVGV4dEZpZWxkKG51bGw9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnYml0YmFrZV92ZXJzaW9uJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5CaXRiYWtlVmVyc2lvbicpKSwKKyAgICAgICAgICAgICAgICAoJ2JpdGJha2VfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uQml0YmFrZVZlcnNpb24nLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0yNjEsNyArMjYxLDcgQEAKICAgICAgICAgICAgIGZpZWxkcz1bCiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ2xheWVyX25hbWUnLCBtb2RlbHMuQ2hhckZpZWxkKGRlZmF1bHQ9YicnLCBtYXhfbGVuZ3RoPTEwMCkpLAotICAgICAgICAgICAgICAgICgncmVsZWFzZScsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUmVsZWFzZScpKSwKKyAgICAgICAgICAgICAgICAoJ3JlbGVhc2UnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlJlbGVhc2UnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0yNjksOCArMjY5LDggQEAKICAgICAgICAgICAgIGZpZWxkcz1bCiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQodmVyYm9zZV9uYW1lPSdJRCcsIHNlcmlhbGl6ZT1GYWxzZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ3ByaW9yaXR5JywgbW9kZWxzLkludGVnZXJGaWVsZChkZWZhdWx0PTApKSwKLSAgICAgICAgICAgICAgICAoJ2xheWVyX3NvdXJjZScsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uTGF5ZXJTb3VyY2UnKSksCi0gICAgICAgICAgICAgICAgKCdyZWxlYXNlJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5SZWxlYXNlJykpLAorICAgICAgICAgICAgICAgICgnbGF5ZXJfc291cmNlJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5MYXllclNvdXJjZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgncmVsZWFzZScsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUmVsZWFzZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTI4Miw3ICsyODIsNyBAQAogICAgICAgICAgICAgICAgICgnaXNfaW1hZ2UnLCBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQ9RmFsc2UpKSwKICAgICAgICAgICAgICAgICAoJ2ltYWdlX3NpemUnLCBtb2RlbHMuSW50ZWdlckZpZWxkKGRlZmF1bHQ9MCkpLAogICAgICAgICAgICAgICAgICgnbGljZW5zZV9tYW5pZmVzdF9wYXRoJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTUwMCwgbnVsbD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uQnVpbGQnKSksCisgICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uQnVpbGQnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0yOTUsOSArMjk1LDkgQEAKICAgICAgICAgICAgICAgICAoJ3Blcm1pc3Npb24nLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTYpKSwKICAgICAgICAgICAgICAgICAoJ293bmVyJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEyOCkpLAogICAgICAgICAgICAgICAgICgnZ3JvdXAnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTI4KSksCi0gICAgICAgICAgICAgICAgKCdkaXJlY3RvcnknLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J2RpcmVjdG9yeV9zZXQnLCB0bz0nb3JtLlRhcmdldF9GaWxlJywgbnVsbD1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdzeW1fdGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdzeW1saW5rX3NldCcsIHRvPSdvcm0uVGFyZ2V0X0ZpbGUnLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ3RhcmdldCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uVGFyZ2V0JykpLAorICAgICAgICAgICAgICAgICgnZGlyZWN0b3J5JywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdkaXJlY3Rvcnlfc2V0JywgdG89J29ybS5UYXJnZXRfRmlsZScsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCdzeW1fdGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdzeW1saW5rX3NldCcsIHRvPSdvcm0uVGFyZ2V0X0ZpbGUnLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAorICAgICAgICAgICAgICAgICgndGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0zMDYsMTUgKzMwNiwxNSBAQAogICAgICAgICAgICAgICAgICgnaWQnLCBtb2RlbHMuQXV0b0ZpZWxkKHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCdmaWxlX25hbWUnLCBtb2RlbHMuRmlsZVBhdGhGaWVsZChtYXhfbGVuZ3RoPTI1NCkpLAogICAgICAgICAgICAgICAgICgnZmlsZV9zaXplJywgbW9kZWxzLkludGVnZXJGaWVsZCgpKSwKLSAgICAgICAgICAgICAgICAoJ3RhcmdldCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uVGFyZ2V0JykpLAorICAgICAgICAgICAgICAgICgndGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCiAgICAgICAgICAgICBuYW1lPSdUYXJnZXRfSW5zdGFsbGVkX1BhY2thZ2UnLAogICAgICAgICAgICAgZmllbGRzPVsKICAgICAgICAgICAgICAgICAoJ2lkJywgbW9kZWxzLkF1dG9GaWVsZCh2ZXJib3NlX25hbWU9J0lEJywgc2VyaWFsaXplPUZhbHNlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgncGFja2FnZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nYnVpbGR0YXJnZXRsaXN0X3BhY2thZ2UnLCB0bz0nb3JtLlBhY2thZ2UnKSksCi0gICAgICAgICAgICAgICAgKCd0YXJnZXQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlRhcmdldCcpKSwKKyAgICAgICAgICAgICAgICAoJ3BhY2thZ2UnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J2J1aWxkdGFyZ2V0bGlzdF9wYWNrYWdlJywgdG89J29ybS5QYWNrYWdlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCisgICAgICAgICAgICAgICAgKCd0YXJnZXQnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlRhcmdldCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5DcmVhdGVNb2RlbCgKQEAgLTMzNyw4ICszMzcsOCBAQAogICAgICAgICAgICAgICAgICgnc3N0YXRlX3Jlc3VsdCcsIG1vZGVscy5JbnRlZ2VyRmllbGQoZGVmYXVsdD0wLCBjaG9pY2VzPVsoMCwgYidOb3QgQXBwbGljYWJsZScpLCAoMSwgYidGaWxlIG5vdCBpbiBjYWNoZScpLCAoMiwgYidGYWlsZWQnKSwgKDMsIGInU3VjY2VlZGVkJyldKSksCiAgICAgICAgICAgICAgICAgKCdtZXNzYWdlJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI0MCkpLAogICAgICAgICAgICAgICAgICgnbG9nZmlsZScsIG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU1LCBibGFuaz1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ndGFza19idWlsZCcsIHRvPSdvcm0uQnVpbGQnKSksCi0gICAgICAgICAgICAgICAgKCdyZWNpcGUnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3Rhc2tzJywgdG89J29ybS5SZWNpcGUnKSksCisgICAgICAgICAgICAgICAgKCdidWlsZCcsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ndGFza19idWlsZCcsIHRvPSdvcm0uQnVpbGQnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ3JlY2lwZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ndGFza3MnLCB0bz0nb3JtLlJlY2lwZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgIG9wdGlvbnM9ewogICAgICAgICAgICAgICAgICdvcmRlcmluZyc6ICgnb3JkZXInLCAncmVjaXBlJyksCkBAIC0zNDgsOCArMzQ4LDggQEAKICAgICAgICAgICAgIG5hbWU9J1Rhc2tfRGVwZW5kZW5jeScsCiAgICAgICAgICAgICBmaWVsZHM9WwogICAgICAgICAgICAgICAgICgnaWQnLCBtb2RlbHMuQXV0b0ZpZWxkKHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlKSksCi0gICAgICAgICAgICAgICAgKCdkZXBlbmRzX29uJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSd0YXNrX2RlcGVuZGVuY2llc19kZXBlbmRzJywgdG89J29ybS5UYXNrJykpLAotICAgICAgICAgICAgICAgICgndGFzaycsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0ndGFza19kZXBlbmRlbmNpZXNfdGFzaycsIHRvPSdvcm0uVGFzaycpKSwKKyAgICAgICAgICAgICAgICAoJ2RlcGVuZHNfb24nLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3Rhc2tfZGVwZW5kZW5jaWVzX2RlcGVuZHMnLCB0bz0nb3JtLlRhc2snLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ3Rhc2snLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3Rhc2tfZGVwZW5kZW5jaWVzX3Rhc2snLCB0bz0nb3JtLlRhc2snLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0zNzAsNyArMzcwLDcgQEAKICAgICAgICAgICAgICAgICAoJ2NoYW5nZWQnLCBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQ9RmFsc2UpKSwKICAgICAgICAgICAgICAgICAoJ2h1bWFuX3JlYWRhYmxlX25hbWUnLCBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjAwKSksCiAgICAgICAgICAgICAgICAgKCdkZXNjcmlwdGlvbicsIG1vZGVscy5UZXh0RmllbGQoYmxhbms9VHJ1ZSkpLAotICAgICAgICAgICAgICAgICgnYnVpbGQnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3ZhcmlhYmxlX2J1aWxkJywgdG89J29ybS5CdWlsZCcpKSwKKyAgICAgICAgICAgICAgICAoJ2J1aWxkJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSd2YXJpYWJsZV9idWlsZCcsIHRvPSdvcm0uQnVpbGQnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0zODEsMjggKzM4MSwyOCBAQAogICAgICAgICAgICAgICAgICgnZmlsZV9uYW1lJywgbW9kZWxzLkZpbGVQYXRoRmllbGQobWF4X2xlbmd0aD0yNTUpKSwKICAgICAgICAgICAgICAgICAoJ2xpbmVfbnVtYmVyJywgbW9kZWxzLkludGVnZXJGaWVsZChudWxsPVRydWUpKSwKICAgICAgICAgICAgICAgICAoJ29wZXJhdGlvbicsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD02NCkpLAotICAgICAgICAgICAgICAgICgndmFyaWFibGUnLCBtb2RlbHMuRm9yZWlnbktleShyZWxhdGVkX25hbWU9J3ZoaXN0b3J5JywgdG89J29ybS5WYXJpYWJsZScpKSwKKyAgICAgICAgICAgICAgICAoJ3ZhcmlhYmxlJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSd2aGlzdG9yeScsIHRvPSdvcm0uVmFyaWFibGUnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdwcm9qZWN0JywKICAgICAgICAgICAgIG5hbWU9J3JlbGVhc2UnLAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5SZWxlYXNlJywgbnVsbD1UcnVlKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUmVsZWFzZScsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J3BhY2thZ2VfZGVwZW5kZW5jeScsCiAgICAgICAgICAgICBuYW1lPSd0YXJnZXQnLAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnLCBudWxsPVRydWUpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdwYWNrYWdlJywKICAgICAgICAgICAgIG5hbWU9J3JlY2lwZScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlJlY2lwZScsIG51bGw9VHJ1ZSksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlJlY2lwZScsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J2xvZ21lc3NhZ2UnLAogICAgICAgICAgICAgbmFtZT0ndGFzaycsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShibGFuaz1UcnVlLCB0bz0nb3JtLlRhc2snLCBudWxsPVRydWUpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkoYmxhbms9VHJ1ZSwgdG89J29ybS5UYXNrJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFsdGVyVW5pcXVlVG9nZXRoZXIoCiAgICAgICAgICAgICBuYW1lPSdsYXllcnNvdXJjZScsCkBAIC00MTEsMzIgKzQxMSwzMiBAQAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nbGF5ZXJfdmVyc2lvbicsCiAgICAgICAgICAgICBuYW1lPSdsYXllcl9zb3VyY2UnLAotICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkoZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkxheWVyU291cmNlJywgbnVsbD1UcnVlKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5MYXllclNvdXJjZScsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J2xheWVyX3ZlcnNpb24nLAogICAgICAgICAgICAgbmFtZT0ncHJvamVjdCcsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uUHJvamVjdCcsIG51bGw9VHJ1ZSksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uUHJvamVjdCcsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J2xheWVyX3ZlcnNpb24nLAogICAgICAgICAgICAgbmFtZT0ndXBfYnJhbmNoJywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5CcmFuY2gnLCBudWxsPVRydWUpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkoZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkJyYW5jaCcsIG51bGw9VHJ1ZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J2xheWVyJywKICAgICAgICAgICAgIG5hbWU9J2xheWVyX3NvdXJjZScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PU5vbmUsIHRvPSdvcm0uTGF5ZXJTb3VyY2UnLCBudWxsPVRydWUpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkoZGVmYXVsdD1Ob25lLCB0bz0nb3JtLkxheWVyU291cmNlJywgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nYnVpbGQnLAogICAgICAgICAgICAgbmFtZT0ncHJvamVjdCcsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlByb2plY3QnKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUHJvamVjdCcsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQWRkRmllbGQoCiAgICAgICAgICAgICBtb2RlbF9uYW1lPSdicmFuY2gnLAogICAgICAgICAgICAgbmFtZT0nbGF5ZXJfc291cmNlJywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KGRlZmF1bHQ9VHJ1ZSwgdG89J29ybS5MYXllclNvdXJjZScsIG51bGw9VHJ1ZSksCisgICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShkZWZhdWx0PVRydWUsIHRvPSdvcm0uTGF5ZXJTb3VyY2UnLCBudWxsPVRydWUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSksCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCiAgICAgICAgICAgICBuYW1lPSdJbXBvcnRlZExheWVyU291cmNlJywKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDAyX2N1c3RvbWltYWdlcmVjaXBlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDJfY3VzdG9taW1hZ2VyZWNpcGUucHkKaW5kZXggOWNlYzgyZS4uMDljMmJmZiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDJfY3VzdG9taW1hZ2VyZWNpcGUucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDJfY3VzdG9taW1hZ2VyZWNpcGUucHkKQEAgLTE0LDEwICsxNCwxMCBAQAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKAogICAgICAgICAgICAgbmFtZT0nQ3VzdG9tSW1hZ2VSZWNpcGUnLAogICAgICAgICAgICAgZmllbGRzPVsKLSAgICAgICAgICAgICAgICAoJ3JlY2lwZV9wdHInLCBtb2RlbHMuT25lVG9PbmVGaWVsZChwYXJlbnRfbGluaz1UcnVlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSwgc2VyaWFsaXplPUZhbHNlLCB0bz0nb3JtLlJlY2lwZScpKSwKKyAgICAgICAgICAgICAgICAoJ3JlY2lwZV9wdHInLCBtb2RlbHMuT25lVG9PbmVGaWVsZChwYXJlbnRfbGluaz1UcnVlLCBhdXRvX2NyZWF0ZWQ9VHJ1ZSwgcHJpbWFyeV9rZXk9VHJ1ZSwgc2VyaWFsaXplPUZhbHNlLCB0bz0nb3JtLlJlY2lwZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgICAgICgnbGFzdF91cGRhdGVkJywgbW9kZWxzLkRhdGVUaW1lRmllbGQoZGVmYXVsdD1Ob25lLCBudWxsPVRydWUpKSwKLSAgICAgICAgICAgICAgICAoJ2Jhc2VfcmVjaXBlJywgbW9kZWxzLkZvcmVpZ25LZXkocmVsYXRlZF9uYW1lPSdiYXNlZF9vbl9yZWNpcGUnLCB0bz0nb3JtLlJlY2lwZScpKSwKLSAgICAgICAgICAgICAgICAoJ3Byb2plY3QnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlByb2plY3QnKSksCisgICAgICAgICAgICAgICAgKCdiYXNlX3JlY2lwZScsIG1vZGVscy5Gb3JlaWduS2V5KHJlbGF0ZWRfbmFtZT0nYmFzZWRfb25fcmVjaXBlJywgdG89J29ybS5SZWNpcGUnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKKyAgICAgICAgICAgICAgICAoJ3Byb2plY3QnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlByb2plY3QnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICAgICBiYXNlcz0oJ29ybS5yZWNpcGUnLCksCiAgICAgICAgICksCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwM19jdXN0b21pbWFnZXBhY2thZ2UucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwM19jdXN0b21pbWFnZXBhY2thZ2UucHkKaW5kZXggYjAyN2Y2Ni4uOGNiODFkNyAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDNfY3VzdG9taW1hZ2VwYWNrYWdlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDAzX2N1c3RvbWltYWdlcGFja2FnZS5weQpAQCAtMTQsNyArMTQsNyBAQAogICAgICAgICBtaWdyYXRpb25zLkNyZWF0ZU1vZGVsKAogICAgICAgICAgICAgbmFtZT0nQ3VzdG9tSW1hZ2VQYWNrYWdlJywKICAgICAgICAgICAgIGZpZWxkcz1bCi0gICAgICAgICAgICAgICAgKCdwYWNrYWdlX3B0cicsIG1vZGVscy5PbmVUb09uZUZpZWxkKHBhcmVudF9saW5rPVRydWUsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlLCBzZXJpYWxpemU9RmFsc2UsIHRvPSdvcm0uUGFja2FnZScpKSwKKyAgICAgICAgICAgICAgICAoJ3BhY2thZ2VfcHRyJywgbW9kZWxzLk9uZVRvT25lRmllbGQocGFyZW50X2xpbms9VHJ1ZSwgYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUsIHNlcmlhbGl6ZT1GYWxzZSwgdG89J29ybS5QYWNrYWdlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKSksCiAgICAgICAgICAgICAgICAgKCdyZWNpcGVfYXBwZW5kcycsIG1vZGVscy5NYW55VG9NYW55RmllbGQocmVsYXRlZF9uYW1lPSdhcHBlbmRzX3NldCcsIHRvPSdvcm0uQ3VzdG9tSW1hZ2VSZWNpcGUnKSksCiAgICAgICAgICAgICAgICAgKCdyZWNpcGVfZXhjbHVkZXMnLCBtb2RlbHMuTWFueVRvTWFueUZpZWxkKHJlbGF0ZWRfbmFtZT0nZXhjbHVkZXNfc2V0JywgdG89J29ybS5DdXN0b21JbWFnZVJlY2lwZScpKSwKICAgICAgICAgICAgICAgICAoJ3JlY2lwZV9pbmNsdWRlcycsIG1vZGVscy5NYW55VG9NYW55RmllbGQocmVsYXRlZF9uYW1lPSdpbmNsdWRlc19zZXQnLCB0bz0nb3JtLkN1c3RvbUltYWdlUmVjaXBlJykpLApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDRfcHJvdmlkZXMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwNF9wcm92aWRlcy5weQppbmRleCBkZmRlMmQxLi44NDQ5NjA0IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwNF9wcm92aWRlcy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwNF9wcm92aWRlcy5weQpAQCAtMTYsMTIgKzE2LDEyIEBACiAgICAgICAgICAgICBmaWVsZHM9WwogICAgICAgICAgICAgICAgICgnaWQnLCBtb2RlbHMuQXV0b0ZpZWxkKHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UsIGF1dG9fY3JlYXRlZD1UcnVlLCBwcmltYXJ5X2tleT1UcnVlKSksCiAgICAgICAgICAgICAgICAgKCduYW1lJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkpLAotICAgICAgICAgICAgICAgICgncmVjaXBlJywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5SZWNpcGUnKSksCisgICAgICAgICAgICAgICAgKCdyZWNpcGUnLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLlJlY2lwZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkpLAogICAgICAgICAgICAgXSwKICAgICAgICAgKSwKICAgICAgICAgbWlncmF0aW9ucy5BZGRGaWVsZCgKICAgICAgICAgICAgIG1vZGVsX25hbWU9J3JlY2lwZV9kZXBlbmRlbmN5JywKICAgICAgICAgICAgIG5hbWU9J3ZpYScsCi0gICAgICAgICAgICBmaWVsZD1tb2RlbHMuRm9yZWlnbktleShudWxsPVRydWUsIGRlZmF1bHQ9Tm9uZSwgdG89J29ybS5Qcm92aWRlcycpLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkZvcmVpZ25LZXkobnVsbD1UcnVlLCBkZWZhdWx0PU5vbmUsIHRvPSdvcm0uUHJvdmlkZXMnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgIF0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDA4X3JlZmFjdG9yX2FydGlmYWN0X21vZGVscy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDA4X3JlZmFjdG9yX2FydGlmYWN0X21vZGVscy5weQppbmRleCAzMzY3NTgyLi40MWE1NDdhIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAwOF9yZWZhY3Rvcl9hcnRpZmFjdF9tb2RlbHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMDhfcmVmYWN0b3JfYXJ0aWZhY3RfbW9kZWxzLnB5CkBAIC0xNyw3ICsxNyw3IEBACiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQoYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUsIHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UpKSwKICAgICAgICAgICAgICAgICAoJ2ZpbGVfbmFtZScsIG1vZGVscy5GaWxlUGF0aEZpZWxkKCkpLAogICAgICAgICAgICAgICAgICgnZmlsZV9zaXplJywgbW9kZWxzLkludGVnZXJGaWVsZCgpKSwKLSAgICAgICAgICAgICAgICAoJ3RhcmdldCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uVGFyZ2V0JykpLAorICAgICAgICAgICAgICAgICgndGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuQ3JlYXRlTW9kZWwoCkBAIC0yNiw3ICsyNiw3IEBACiAgICAgICAgICAgICAgICAgKCdpZCcsIG1vZGVscy5BdXRvRmllbGQoYXV0b19jcmVhdGVkPVRydWUsIHByaW1hcnlfa2V5PVRydWUsIHZlcmJvc2VfbmFtZT0nSUQnLCBzZXJpYWxpemU9RmFsc2UpKSwKICAgICAgICAgICAgICAgICAoJ2ZpbGVfbmFtZScsIG1vZGVscy5GaWxlUGF0aEZpZWxkKCkpLAogICAgICAgICAgICAgICAgICgnZmlsZV9zaXplJywgbW9kZWxzLkludGVnZXJGaWVsZCgpKSwKLSAgICAgICAgICAgICAgICAoJ3RhcmdldCcsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uVGFyZ2V0JykpLAorICAgICAgICAgICAgICAgICgndGFyZ2V0JywgbW9kZWxzLkZvcmVpZ25LZXkodG89J29ybS5UYXJnZXQnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgICAgIG1pZ3JhdGlvbnMuUmVtb3ZlRmllbGQoCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxMV9kZWxldGVfbGF5ZXJzb3VyY2UucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxMV9kZWxldGVfbGF5ZXJzb3VyY2UucHkKaW5kZXggNzU1MDY5Ni4uM2YzYTJlMSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTFfZGVsZXRlX2xheWVyc291cmNlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDExX2RlbGV0ZV9sYXllcnNvdXJjZS5weQpAQCAtMSw3ICsxLDcgQEAKICMgLSotIGNvZGluZzogdXRmLTggLSotCiBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHVuaWNvZGVfbGl0ZXJhbHMKIAotZnJvbSBkamFuZ28uZGIgaW1wb3J0IG1pZ3JhdGlvbnMsIG1vZGVscworZnJvbSBkamFuZ28uZGIgaW1wb3J0IG1pZ3JhdGlvbnMKIAogCiBjbGFzcyBNaWdyYXRpb24obWlncmF0aW9ucy5NaWdyYXRpb24pOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTJfdXNlX3JlbGVhc2VfaW5zdGVhZF9vZl91cF9icmFuY2gucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxMl91c2VfcmVsZWFzZV9pbnN0ZWFkX29mX3VwX2JyYW5jaC5weQppbmRleCAwZTZiYjgzLi40Yjk2YmYwIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxMl91c2VfcmVsZWFzZV9pbnN0ZWFkX29mX3VwX2JyYW5jaC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxMl91c2VfcmVsZWFzZV9pbnN0ZWFkX29mX3VwX2JyYW5jaC5weQpAQCAtNDYsNyArNDYsNyBAQAogICAgICAgICBtaWdyYXRpb25zLkFkZEZpZWxkKAogICAgICAgICAgICAgbW9kZWxfbmFtZT0nbGF5ZXJfdmVyc2lvbicsCiAgICAgICAgICAgICBuYW1lPSdyZWxlYXNlJywKLSAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUmVsZWFzZScsIGRlZmF1bHQ9Tm9uZSwgbnVsbD1UcnVlKSwKKyAgICAgICAgICAgIGZpZWxkPW1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uUmVsZWFzZScsIGRlZmF1bHQ9Tm9uZSwgbnVsbD1UcnVlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpLAogICAgICAgICApLAogICAgICAgICBtaWdyYXRpb25zLlJ1blB5dGhvbihicmFuY2hfdG9fcmVsZWFzZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV2ZXJzZV9jb2RlPW1pZ3JhdGlvbnMuUnVuUHl0aG9uLm5vb3ApLApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTdfZGlzdHJvX2Nsb25lLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTdfZGlzdHJvX2Nsb25lLnB5CmluZGV4IGQzYzU5MDEuLjczMWMwZGUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDE3X2Rpc3Ryb19jbG9uZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvb3JtL21pZ3JhdGlvbnMvMDAxN19kaXN0cm9fY2xvbmUucHkKQEAgLTE4LDcgKzE4LDcgQEAKICAgICAgICAgICAgICAgICAoJ3VwX2RhdGUnLCBtb2RlbHMuRGF0ZVRpbWVGaWVsZChkZWZhdWx0PU5vbmUsIG51bGw9VHJ1ZSkpLAogICAgICAgICAgICAgICAgICgnbmFtZScsIG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTUpKSwKICAgICAgICAgICAgICAgICAoJ2Rlc2NyaXB0aW9uJywgbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NSkpLAotICAgICAgICAgICAgICAgICgnbGF5ZXJfdmVyc2lvbicsIG1vZGVscy5Gb3JlaWduS2V5KHRvPSdvcm0uTGF5ZXJfVmVyc2lvbicpKSwKKyAgICAgICAgICAgICAgICAoJ2xheWVyX3ZlcnNpb24nLCBtb2RlbHMuRm9yZWlnbktleSh0bz0nb3JtLkxheWVyX1ZlcnNpb24nLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpKSwKICAgICAgICAgICAgIF0sCiAgICAgICAgICksCiAgICAgXQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9taWdyYXRpb25zLzAwMTlfZGphbmdvXzJfMi5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDE5X2RqYW5nb18yXzIucHkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjY2YWVmMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbWlncmF0aW9ucy8wMDE5X2RqYW5nb18yXzIucHkKQEAgLTAsMCArMSwyMyBAQAorIyBHZW5lcmF0ZWQgYnkgRGphbmdvIDIuMi43IG9uIDIwMTktMTEtMTkgMDM6MzgKKworZnJvbSBkamFuZ28uZGIgaW1wb3J0IG1pZ3JhdGlvbnMsIG1vZGVscworaW1wb3J0IGRqYW5nby5kYi5tb2RlbHMuZGVsZXRpb24KKworCitjbGFzcyBNaWdyYXRpb24obWlncmF0aW9ucy5NaWdyYXRpb24pOgorCisgICAgZGVwZW5kZW5jaWVzID0gWworICAgICAgICAoJ29ybScsICcwMDE4X3Byb2plY3Rfc3BlY2lmaWMnKSwKKyAgICBdCisKKyAgICBvcGVyYXRpb25zID0gWworICAgICAgICBtaWdyYXRpb25zLlJlbW92ZUZpZWxkKAorICAgICAgICAgICAgbW9kZWxfbmFtZT0nZGlzdHJvJywKKyAgICAgICAgICAgIG5hbWU9J3VwX2lkJywKKyAgICAgICAgKSwKKyAgICAgICAgbWlncmF0aW9ucy5BbHRlckZpZWxkKAorICAgICAgICAgICAgbW9kZWxfbmFtZT0nYnVpbGQnLAorICAgICAgICAgICAgbmFtZT0ncmVjaXBlc19wYXJzZWQnLAorICAgICAgICAgICAgZmllbGQ9bW9kZWxzLkludGVnZXJGaWVsZChkZWZhdWx0PTEpLAorICAgICAgICApLAorICAgIF0KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci9vcm0vbW9kZWxzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tb2RlbHMucHkKaW5kZXggYmI2YjVkZS4uN2Y3ZTkyMiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tb2RlbHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL29ybS9tb2RlbHMucHkKQEAgLTEzLDcgKzEzLDcgQEAKIGZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQogZnJvbSBkamFuZ28udXRpbHMuZW5jb2RpbmcgaW1wb3J0IGZvcmNlX2J5dGVzCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiAKIGZyb20gZGphbmdvLmNvcmUgaW1wb3J0IHZhbGlkYXRvcnMKIGZyb20gZGphbmdvLmNvbmYgaW1wb3J0IHNldHRpbmdzCkBAIC0xNzgsOCArMTc4LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3JlbGVhc2VfX2JyYW5jaF9uYW1lJ10KICAgICBuYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKICAgICBzaG9ydF9kZXNjcmlwdGlvbiA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD01MCwgYmxhbms9VHJ1ZSkKLSAgICBiaXRiYWtlX3ZlcnNpb24gPSBtb2RlbHMuRm9yZWlnbktleSgnQml0YmFrZVZlcnNpb24nLCBudWxsPVRydWUpCi0gICAgcmVsZWFzZSA9IG1vZGVscy5Gb3JlaWduS2V5KCJSZWxlYXNlIiwgbnVsbD1UcnVlKQorICAgIGJpdGJha2VfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KCdCaXRiYWtlVmVyc2lvbicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbD1UcnVlKQorICAgIHJlbGVhc2UgPSBtb2RlbHMuRm9yZWlnbktleSgiUmVsZWFzZSIsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbD1UcnVlKQogICAgIGNyZWF0ZWQgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChhdXRvX25vd19hZGQ9VHJ1ZSkKICAgICB1cGRhdGVkID0gbW9kZWxzLkRhdGVUaW1lRmllbGQoYXV0b19ub3c9VHJ1ZSkKICAgICAjIFRoaXMgaXMgYSBob3JyaWJsZSBoYWNrOyBzaW5jZSBUb2FzdGVyIGhhcyBubyAiVXNlciIgbW9kZWwgYXZhaWxhYmxlIHdoZW4KQEAgLTQ2OSw3ICs0NjksNyBAQAogCiAgICAgc2VhcmNoX2FsbG93ZWRfZmllbGRzID0gWydtYWNoaW5lJywgJ2Nvb2tlcl9sb2dfcGF0aCcsICJ0YXJnZXRfX3RhcmdldCIsICJ0YXJnZXRfX3RhcmdldF9pbWFnZV9maWxlX19maWxlX25hbWUiXQogCi0gICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QpICAgICAgICAgICAgIyBtdXN0IGhhdmUgYSBwcm9qZWN0CisgICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkgICAgICAgICAgICAjIG11c3QgaGF2ZSBhIHByb2plY3QKICAgICBtYWNoaW5lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKICAgICBkaXN0cm8gPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIGRpc3Ryb192ZXJzaW9uID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKQEAgLTc3NywxMyArNzc3LDEzIEBACiAgICAgICAgIHJldHVybiAiJWQgJXMgJXMiICUgKHNlbGYuaWQsIHNlbGYucHJvamVjdCwgIiwiLmpvaW4oW3QudGFyZ2V0IGZvciB0IGluIHNlbGYudGFyZ2V0X3NldC5hbGwoKV0pKQogCiBjbGFzcyBQcm9qZWN0VGFyZ2V0KG1vZGVscy5Nb2RlbCk6Ci0gICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QpCisgICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICB0YXJnZXQgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIHRhc2sgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwLCBudWxsPVRydWUpCiAKIGNsYXNzIFRhcmdldChtb2RlbHMuTW9kZWwpOgogICAgIHNlYXJjaF9hbGxvd2VkX2ZpZWxkcyA9IFsndGFyZ2V0JywgJ2ZpbGVfbmFtZSddCi0gICAgYnVpbGQgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZCkKKyAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgdGFyZ2V0ID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKICAgICB0YXNrID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCwgbnVsbD1UcnVlKQogICAgIGlzX2ltYWdlID0gbW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0ID0gRmFsc2UpCkBAIC05NDQsNyArOTQ0LDcgQEAKIAogIyBrZXJuZWwgYXJ0aWZhY3RzIGZvciBhIHRhcmdldDogYnpJbWFnZSBhbmQgbW9kdWxlcyoKIGNsYXNzIFRhcmdldEtlcm5lbEZpbGUobW9kZWxzLk1vZGVsKToKLSAgICB0YXJnZXQgPSBtb2RlbHMuRm9yZWlnbktleShUYXJnZXQpCisgICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgZmlsZV9uYW1lID0gbW9kZWxzLkZpbGVQYXRoRmllbGQoKQogICAgIGZpbGVfc2l6ZSA9IG1vZGVscy5JbnRlZ2VyRmllbGQoKQogCkBAIC05NTQsNyArOTU0LDcgQEAKIAogIyBTREsgYXJ0aWZhY3RzIGZvciBhIHRhcmdldDogc2ggYW5kIG1hbmlmZXN0IGZpbGVzCiBjbGFzcyBUYXJnZXRTREtGaWxlKG1vZGVscy5Nb2RlbCk6Ci0gICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0KQorICAgIHRhcmdldCA9IG1vZGVscy5Gb3JlaWduS2V5KFRhcmdldCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQogICAgIGZpbGVfbmFtZSA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKCkKICAgICBmaWxlX3NpemUgPSBtb2RlbHMuSW50ZWdlckZpZWxkKCkKIApAQCAtOTczLDcgKzk3Myw3IEBACiAgICAgICAgICd1YmlmcycsICd3aWMnLCAnd2ljLmJ6MicsICd3aWMuZ3onLCAnd2ljLmx6bWEnCiAgICAgfQogCi0gICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0KQorICAgIHRhcmdldCA9IG1vZGVscy5Gb3JlaWduS2V5KFRhcmdldCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQogICAgIGZpbGVfbmFtZSA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU0KQogICAgIGZpbGVfc2l6ZSA9IG1vZGVscy5JbnRlZ2VyRmllbGQoKQogCkBAIC0xMDA3LDE1ICsxMDA3LDE1IEBACiAgICAgICAgICggSVRZUEVfQkxPQ0sgLCdibG9jaycpLAogICAgICAgICApCiAKLSAgICB0YXJnZXQgPSBtb2RlbHMuRm9yZWlnbktleShUYXJnZXQpCisgICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgcGF0aCA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKCkKICAgICBzaXplID0gbW9kZWxzLkludGVnZXJGaWVsZCgpCiAgICAgaW5vZGV0eXBlID0gbW9kZWxzLkludGVnZXJGaWVsZChjaG9pY2VzID0gSVRZUEVTKQogICAgIHBlcm1pc3Npb24gPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTYpCiAgICAgb3duZXIgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTI4KQogICAgIGdyb3VwID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEyOCkKLSAgICBkaXJlY3RvcnkgPSBtb2RlbHMuRm9yZWlnbktleSgnVGFyZ2V0X0ZpbGUnLCByZWxhdGVkX25hbWU9ImRpcmVjdG9yeV9zZXQiLCBudWxsPVRydWUpCi0gICAgc3ltX3RhcmdldCA9IG1vZGVscy5Gb3JlaWduS2V5KCdUYXJnZXRfRmlsZScsIHJlbGF0ZWRfbmFtZT0ic3ltbGlua19zZXQiLCBudWxsPVRydWUpCisgICAgZGlyZWN0b3J5ID0gbW9kZWxzLkZvcmVpZ25LZXkoJ1RhcmdldF9GaWxlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9ImRpcmVjdG9yeV9zZXQiLCBudWxsPVRydWUpCisgICAgc3ltX3RhcmdldCA9IG1vZGVscy5Gb3JlaWduS2V5KCdUYXJnZXRfRmlsZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSJzeW1saW5rX3NldCIsIG51bGw9VHJ1ZSkKIAogCiBjbGFzcyBUYXNrKG1vZGVscy5Nb2RlbCk6CkBAIC0xMTAyLDEzICsxMTAyLDEzIEBACiAgICAgZGVmIGdldF9kZXNjcmlwdGlvbihzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYuX2hlbHB0ZXh0CiAKLSAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkLCByZWxhdGVkX25hbWU9J3Rhc2tfYnVpbGQnKQorICAgIGJ1aWxkID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGQsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSd0YXNrX2J1aWxkJykKICAgICBvcmRlciA9IG1vZGVscy5JbnRlZ2VyRmllbGQobnVsbD1UcnVlKQogICAgIHRhc2tfZXhlY3V0ZWQgPSBtb2RlbHMuQm9vbGVhbkZpZWxkKGRlZmF1bHQ9RmFsc2UpICMgVHJ1ZSBtZWFucyBFeGVjdXRlZCwgRmFsc2UgbWVhbnMgTm90L0V4ZWN1dGVkCiAgICAgb3V0Y29tZSA9IG1vZGVscy5JbnRlZ2VyRmllbGQoY2hvaWNlcz1UQVNLX09VVENPTUUsIGRlZmF1bHQ9T1VUQ09NRV9OQSkKICAgICBzc3RhdGVfY2hlY2tzdW0gPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwLCBibGFuaz1UcnVlKQogICAgIHBhdGhfdG9fc3N0YXRlX29iaiA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9NTAwLCBibGFuaz1UcnVlKQotICAgIHJlY2lwZSA9IG1vZGVscy5Gb3JlaWduS2V5KCdSZWNpcGUnLCByZWxhdGVkX25hbWU9J3Rhc2tzJykKKyAgICByZWNpcGUgPSBtb2RlbHMuRm9yZWlnbktleSgnUmVjaXBlJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J3Rhc2tzJykKICAgICB0YXNrX25hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIHNvdXJjZV91cmwgPSBtb2RlbHMuRmlsZVBhdGhGaWVsZChtYXhfbGVuZ3RoPTI1NSwgYmxhbms9VHJ1ZSkKICAgICB3b3JrX2RpcmVjdG9yeSA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU1LCBibGFuaz1UcnVlKQpAQCAtMTE0NywxMyArMTE0NywxMyBAQAogCiAKIGNsYXNzIFRhc2tfRGVwZW5kZW5jeShtb2RlbHMuTW9kZWwpOgotICAgIHRhc2sgPSBtb2RlbHMuRm9yZWlnbktleShUYXNrLCByZWxhdGVkX25hbWU9J3Rhc2tfZGVwZW5kZW5jaWVzX3Rhc2snKQotICAgIGRlcGVuZHNfb24gPSBtb2RlbHMuRm9yZWlnbktleShUYXNrLCByZWxhdGVkX25hbWU9J3Rhc2tfZGVwZW5kZW5jaWVzX2RlcGVuZHMnKQorICAgIHRhc2sgPSBtb2RlbHMuRm9yZWlnbktleShUYXNrLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0ndGFza19kZXBlbmRlbmNpZXNfdGFzaycpCisgICAgZGVwZW5kc19vbiA9IG1vZGVscy5Gb3JlaWduS2V5KFRhc2ssIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSd0YXNrX2RlcGVuZGVuY2llc19kZXBlbmRzJykKIAogY2xhc3MgUGFja2FnZShtb2RlbHMuTW9kZWwpOgogICAgIHNlYXJjaF9hbGxvd2VkX2ZpZWxkcyA9IFsnbmFtZScsICd2ZXJzaW9uJywgJ3JldmlzaW9uJywgJ3JlY2lwZV9fbmFtZScsICdyZWNpcGVfX3ZlcnNpb24nLCAncmVjaXBlX19saWNlbnNlJywgJ3JlY2lwZV9fbGF5ZXJfdmVyc2lvbl9fbGF5ZXJfX25hbWUnLCAncmVjaXBlX19sYXllcl92ZXJzaW9uX19icmFuY2gnLCAncmVjaXBlX19sYXllcl92ZXJzaW9uX19jb21taXQnLCAncmVjaXBlX19sYXllcl92ZXJzaW9uX19sb2NhbF9wYXRoJywgJ2luc3RhbGxlZF9uYW1lJ10KLSAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KCdCdWlsZCcsIG51bGw9VHJ1ZSkKLSAgICByZWNpcGUgPSBtb2RlbHMuRm9yZWlnbktleSgnUmVjaXBlJywgbnVsbD1UcnVlKQorICAgIGJ1aWxkID0gbW9kZWxzLkZvcmVpZ25LZXkoJ0J1aWxkJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCBudWxsPVRydWUpCisgICAgcmVjaXBlID0gbW9kZWxzLkZvcmVpZ25LZXkoJ1JlY2lwZScsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbD1UcnVlKQogICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwKQogICAgIGluc3RhbGxlZF9uYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCwgZGVmYXVsdD0nJykKICAgICB2ZXJzaW9uID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCwgYmxhbms9VHJ1ZSkKQEAgLTEyODksMTkgKzEyODksMTkgQEAKICAgICAgICAgVFlQRV9SQ09ORkxJQ1RTIDogICAoImNvbmZsaWN0cyIsICIlcyBjb25mbGljdHMgd2l0aCAlcywgd2hpY2ggd2lsbCBub3QgYmUgaW5zdGFsbGVkIGlmIHRoaXMgcGFja2FnZSBpcyBub3QgZmlyc3QgcmVtb3ZlZCIpLAogICAgIH0KIAotICAgIHBhY2thZ2UgPSBtb2RlbHMuRm9yZWlnbktleShQYWNrYWdlLCByZWxhdGVkX25hbWU9J3BhY2thZ2VfZGVwZW5kZW5jaWVzX3NvdXJjZScpCi0gICAgZGVwZW5kc19vbiA9IG1vZGVscy5Gb3JlaWduS2V5KFBhY2thZ2UsIHJlbGF0ZWRfbmFtZT0ncGFja2FnZV9kZXBlbmRlbmNpZXNfdGFyZ2V0JykgICAjIHNvZnQgZGVwZW5kZW5jeQorICAgIHBhY2thZ2UgPSBtb2RlbHMuRm9yZWlnbktleShQYWNrYWdlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0ncGFja2FnZV9kZXBlbmRlbmNpZXNfc291cmNlJykKKyAgICBkZXBlbmRzX29uID0gbW9kZWxzLkZvcmVpZ25LZXkoUGFja2FnZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J3BhY2thZ2VfZGVwZW5kZW5jaWVzX3RhcmdldCcpICAgIyBzb2Z0IGRlcGVuZGVuY3kKICAgICBkZXBfdHlwZSA9IG1vZGVscy5JbnRlZ2VyRmllbGQoY2hvaWNlcz1ERVBFTkRTX1RZUEUpCi0gICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0LCBudWxsPVRydWUpCisgICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIG51bGw9VHJ1ZSkKICAgICBvYmplY3RzID0gUGFja2FnZV9EZXBlbmRlbmN5TWFuYWdlcigpCiAKIGNsYXNzIFRhcmdldF9JbnN0YWxsZWRfUGFja2FnZShtb2RlbHMuTW9kZWwpOgotICAgIHRhcmdldCA9IG1vZGVscy5Gb3JlaWduS2V5KFRhcmdldCkKLSAgICBwYWNrYWdlID0gbW9kZWxzLkZvcmVpZ25LZXkoUGFja2FnZSwgcmVsYXRlZF9uYW1lPSdidWlsZHRhcmdldGxpc3RfcGFja2FnZScpCisgICAgdGFyZ2V0ID0gbW9kZWxzLkZvcmVpZ25LZXkoVGFyZ2V0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCisgICAgcGFja2FnZSA9IG1vZGVscy5Gb3JlaWduS2V5KFBhY2thZ2UsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSdidWlsZHRhcmdldGxpc3RfcGFja2FnZScpCiAKIAogY2xhc3MgUGFja2FnZV9GaWxlKG1vZGVscy5Nb2RlbCk6Ci0gICAgcGFja2FnZSA9IG1vZGVscy5Gb3JlaWduS2V5KFBhY2thZ2UsIHJlbGF0ZWRfbmFtZT0nYnVpbGRmaWxlbGlzdF9wYWNrYWdlJykKKyAgICBwYWNrYWdlID0gbW9kZWxzLkZvcmVpZ25LZXkoUGFja2FnZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J2J1aWxkZmlsZWxpc3RfcGFja2FnZScpCiAgICAgcGF0aCA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU1LCBibGFuaz1UcnVlKQogICAgIHNpemUgPSBtb2RlbHMuSW50ZWdlckZpZWxkKCkKIApAQCAtMTMxOCw3ICsxMzE4LDcgQEAKIAogICAgIG5hbWUgPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwLCBibGFuaz1UcnVlKQogICAgIHZlcnNpb24gPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MTAwLCBibGFuaz1UcnVlKQotICAgIGxheWVyX3ZlcnNpb24gPSBtb2RlbHMuRm9yZWlnbktleSgnTGF5ZXJfVmVyc2lvbicsCisgICAgbGF5ZXJfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KCdMYXllcl9WZXJzaW9uJywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxhdGVkX25hbWU9J3JlY2lwZV9sYXllcl92ZXJzaW9uJykKICAgICBzdW1tYXJ5ID0gbW9kZWxzLlRleHRGaWVsZChibGFuaz1UcnVlKQogICAgIGRlc2NyaXB0aW9uID0gbW9kZWxzLlRleHRGaWVsZChibGFuaz1UcnVlKQpAQCAtMTM1Niw3ICsxMzU2LDcgQEAKIAogY2xhc3MgUHJvdmlkZXMobW9kZWxzLk1vZGVsKToKICAgICBuYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKLSAgICByZWNpcGUgPSBtb2RlbHMuRm9yZWlnbktleShSZWNpcGUpCisgICAgcmVjaXBlID0gbW9kZWxzLkZvcmVpZ25LZXkoUmVjaXBlLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAKIGNsYXNzIFJlY2lwZV9EZXBlbmRlbmN5KG1vZGVscy5Nb2RlbCk6CiAgICAgVFlQRV9ERVBFTkRTID0gMApAQCAtMTM2Niw5ICsxMzY2LDkgQEAKICAgICAgICAgKFRZUEVfREVQRU5EUywgImRlcGVuZHMiKSwKICAgICAgICAgKFRZUEVfUkRFUEVORFMsICJyZGVwZW5kcyIpLAogICAgICkKLSAgICByZWNpcGUgPSBtb2RlbHMuRm9yZWlnbktleShSZWNpcGUsIHJlbGF0ZWRfbmFtZT0ncl9kZXBlbmRlbmNpZXNfcmVjaXBlJykKLSAgICBkZXBlbmRzX29uID0gbW9kZWxzLkZvcmVpZ25LZXkoUmVjaXBlLCByZWxhdGVkX25hbWU9J3JfZGVwZW5kZW5jaWVzX2RlcGVuZHMnKQotICAgIHZpYSA9IG1vZGVscy5Gb3JlaWduS2V5KFByb3ZpZGVzLCBudWxsPVRydWUsIGRlZmF1bHQ9Tm9uZSkKKyAgICByZWNpcGUgPSBtb2RlbHMuRm9yZWlnbktleShSZWNpcGUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSdyX2RlcGVuZGVuY2llc19yZWNpcGUnKQorICAgIGRlcGVuZHNfb24gPSBtb2RlbHMuRm9yZWlnbktleShSZWNpcGUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSdyX2RlcGVuZGVuY2llc19kZXBlbmRzJykKKyAgICB2aWEgPSBtb2RlbHMuRm9yZWlnbktleShQcm92aWRlcywgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCBudWxsPVRydWUsIGRlZmF1bHQ9Tm9uZSkKICAgICBkZXBfdHlwZSA9IG1vZGVscy5JbnRlZ2VyRmllbGQoY2hvaWNlcz1ERVBFTkRTX1RZUEUpCiAgICAgb2JqZWN0cyA9IFJlY2lwZV9EZXBlbmRlbmN5TWFuYWdlcigpCiAKQEAgLTEzNzcsNyArMTM3Nyw3IEBACiAgICAgc2VhcmNoX2FsbG93ZWRfZmllbGRzID0gWyJuYW1lIiwgImRlc2NyaXB0aW9uIiwgImxheWVyX3ZlcnNpb25fX2xheWVyX19uYW1lIl0KICAgICB1cF9kYXRlID0gbW9kZWxzLkRhdGVUaW1lRmllbGQobnVsbCA9IFRydWUsIGRlZmF1bHQgPSBOb25lKQogCi0gICAgbGF5ZXJfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KCdMYXllcl9WZXJzaW9uJykKKyAgICBsYXllcl92ZXJzaW9uID0gbW9kZWxzLkZvcmVpZ25LZXkoJ0xheWVyX1ZlcnNpb24nLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgbmFtZSA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTUpCiAgICAgZGVzY3JpcHRpb24gPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9MjU1KQogCkBAIC0xNDA4LDcgKzE0MDgsNyBAQAogICAgICIiIiBBIHJlbGVhc2UgaXMgYSBwcm9qZWN0IHRlbXBsYXRlLCB1c2VkIHRvIHByZS1wb3B1bGF0ZSBQcm9qZWN0IHNldHRpbmdzIHdpdGggYSBjb25maWd1cmF0aW9uIHNldCAiIiIKICAgICBuYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTMyLCB1bmlxdWUgPSBUcnVlKQogICAgIGRlc2NyaXB0aW9uID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NSkKLSAgICBiaXRiYWtlX3ZlcnNpb24gPSBtb2RlbHMuRm9yZWlnbktleShCaXRiYWtlVmVyc2lvbikKKyAgICBiaXRiYWtlX3ZlcnNpb24gPSBtb2RlbHMuRm9yZWlnbktleShCaXRiYWtlVmVyc2lvbiwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFKQogICAgIGJyYW5jaF9uYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTUwLCBkZWZhdWx0ID0gIiIpCiAgICAgaGVscHRleHQgPSBtb2RlbHMuVGV4dEZpZWxkKG51bGw9VHJ1ZSkKIApAQCAtMTQxOSw3ICsxNDE5LDcgQEAKICAgICAgICAgcmV0dXJuIHNlbGYubmFtZQogCiBjbGFzcyBSZWxlYXNlRGVmYXVsdExheWVyKG1vZGVscy5Nb2RlbCk6Ci0gICAgcmVsZWFzZSA9IG1vZGVscy5Gb3JlaWduS2V5KFJlbGVhc2UpCisgICAgcmVsZWFzZSA9IG1vZGVscy5Gb3JlaWduS2V5KFJlbGVhc2UsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBsYXllcl9uYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCwgZGVmYXVsdD0iIikKIAogCkBAIC0xNDc0LDEwICsxNDc0LDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsYXllcl9fZGVzY3JpcHRpb24iLCAibGF5ZXJfX3Zjc191cmwiLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiZGlycGF0aCIsICJyZWxlYXNlX19uYW1lIiwgImNvbW1pdCIsICJicmFuY2giXQogCi0gICAgYnVpbGQgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZCwgcmVsYXRlZF9uYW1lPSdsYXllcl92ZXJzaW9uX2J1aWxkJywKKyAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIHJlbGF0ZWRfbmFtZT0nbGF5ZXJfdmVyc2lvbl9idWlsZCcsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PU5vbmUsIG51bGw9VHJ1ZSkKIAotICAgIGxheWVyID0gbW9kZWxzLkZvcmVpZ25LZXkoTGF5ZXIsIHJlbGF0ZWRfbmFtZT0nbGF5ZXJfdmVyc2lvbl9sYXllcicpCisgICAgbGF5ZXIgPSBtb2RlbHMuRm9yZWlnbktleShMYXllciwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J2xheWVyX3ZlcnNpb25fbGF5ZXInKQogCiAgICAgbGF5ZXJfc291cmNlID0gbW9kZWxzLkludGVnZXJGaWVsZChjaG9pY2VzPUxheWVyU291cmNlLlNPVVJDRV9UWVBFLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD0wKQpAQCAtMTQ4NSw3ICsxNDg1LDcgQEAKICAgICB1cF9kYXRlID0gbW9kZWxzLkRhdGVUaW1lRmllbGQobnVsbD1UcnVlLCBkZWZhdWx0PXRpbWV6b25lLm5vdykKIAogICAgICMgVG8gd2hpY2ggbWV0YWRhdGEgcmVsZWFzZSBkb2VzIHRoaXMgbGF5ZXIgdmVyc2lvbiBiZWxvbmcgdG8KLSAgICByZWxlYXNlID0gbW9kZWxzLkZvcmVpZ25LZXkoUmVsZWFzZSwgbnVsbD1UcnVlLCBkZWZhdWx0PU5vbmUpCisgICAgcmVsZWFzZSA9IG1vZGVscy5Gb3JlaWduS2V5KFJlbGVhc2UsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbD1UcnVlLCBkZWZhdWx0PU5vbmUpCiAKICAgICBicmFuY2ggPSBtb2RlbHMuQ2hhckZpZWxkKG1heF9sZW5ndGg9ODApCiAgICAgY29tbWl0ID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKQEAgLTE0OTksNyArMTQ5OSw3IEBACiAgICAgbG9jYWxfcGF0aCA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MTAyNCwgZGVmYXVsdD0iLyIpCiAKICAgICAjIFNldCBpZiB0aGlzIGxheWVyIGlzIHJlc3RyaWN0ZWQgdG8gYSBwYXJ0aWN1bGFyIHByb2plY3QKLSAgICBwcm9qZWN0ID0gbW9kZWxzLkZvcmVpZ25LZXkoJ1Byb2plY3QnLCBudWxsPVRydWUsIGRlZmF1bHQ9Tm9uZSkKKyAgICBwcm9qZWN0ID0gbW9kZWxzLkZvcmVpZ25LZXkoJ1Byb2plY3QnLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIG51bGw9VHJ1ZSwgZGVmYXVsdD1Ob25lKQogCiAgICAgIyBjb2RlIGxpZnRlZCwgd2l0aCBhZGFwdGF0aW9ucywgZnJvbSB0aGUgbGF5ZXJpbmRleC13ZWIgYXBwbGljYXRpb24KICAgICAjIGh0dHBzOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9sYXllcmluZGV4LXdlYi8KQEAgLTE2MDgsMTQgKzE2MDgsMTQgQEAKIAogY2xhc3MgTGF5ZXJWZXJzaW9uRGVwZW5kZW5jeShtb2RlbHMuTW9kZWwpOgogCi0gICAgbGF5ZXJfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KExheWVyX1ZlcnNpb24sCisgICAgbGF5ZXJfdmVyc2lvbiA9IG1vZGVscy5Gb3JlaWduS2V5KExheWVyX1ZlcnNpb24sIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVsYXRlZF9uYW1lPSJkZXBlbmRlbmNpZXMiKQotICAgIGRlcGVuZHNfb24gPSBtb2RlbHMuRm9yZWlnbktleShMYXllcl9WZXJzaW9uLAorICAgIGRlcGVuZHNfb24gPSBtb2RlbHMuRm9yZWlnbktleShMYXllcl9WZXJzaW9uLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGF0ZWRfbmFtZT0iZGVwZW5kZWVzIikKIAogY2xhc3MgUHJvamVjdExheWVyKG1vZGVscy5Nb2RlbCk6Ci0gICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QpCi0gICAgbGF5ZXJjb21taXQgPSBtb2RlbHMuRm9yZWlnbktleShMYXllcl9WZXJzaW9uLCBudWxsPVRydWUpCisgICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKKyAgICBsYXllcmNvbW1pdCA9IG1vZGVscy5Gb3JlaWduS2V5KExheWVyX1ZlcnNpb24sIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgbnVsbD1UcnVlKQogICAgIG9wdGlvbmFsID0gbW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0ID0gVHJ1ZSkKIAogICAgIGRlZiBfX3VuaWNvZGVfXyhzZWxmKToKQEAgLTE2MzAsOCArMTYzMCw4IEBACiAgICAgTEFZRVJfTkFNRSA9ICJ0b2FzdGVyLWN1c3RvbS1pbWFnZXMiCiAKICAgICBzZWFyY2hfYWxsb3dlZF9maWVsZHMgPSBbJ25hbWUnXQotICAgIGJhc2VfcmVjaXBlID0gbW9kZWxzLkZvcmVpZ25LZXkoUmVjaXBlLCByZWxhdGVkX25hbWU9J2Jhc2VkX29uX3JlY2lwZScpCi0gICAgcHJvamVjdCA9IG1vZGVscy5Gb3JlaWduS2V5KFByb2plY3QpCisgICAgYmFzZV9yZWNpcGUgPSBtb2RlbHMuRm9yZWlnbktleShSZWNpcGUsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSwgcmVsYXRlZF9uYW1lPSdiYXNlZF9vbl9yZWNpcGUnKQorICAgIHByb2plY3QgPSBtb2RlbHMuRm9yZWlnbktleShQcm9qZWN0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgbGFzdF91cGRhdGVkID0gbW9kZWxzLkRhdGVUaW1lRmllbGQobnVsbD1UcnVlLCBkZWZhdWx0PU5vbmUpCiAKICAgICBkZWYgZ2V0X2xhc3Rfc3VjY2Vzc2Z1bF9idWlsdF90YXJnZXQoc2VsZik6CkBAIC0xNjQ3LDE0ICsxNjQ3LDE0IEBACiAgICAgICAgICIiIgogICAgICAgICAjIENoZWNrIGlmIHdlJ3JlIGFsZHJlYWR5IHVwLXRvLWRhdGUgb3Igbm90CiAgICAgICAgIHRhcmdldCA9IHNlbGYuZ2V0X2xhc3Rfc3VjY2Vzc2Z1bF9idWlsdF90YXJnZXQoKQotICAgICAgICBpZiB0YXJnZXQgPT0gTm9uZToKKyAgICAgICAgaWYgdGFyZ2V0IGlzIE5vbmU6CiAgICAgICAgICAgICAjIFNvIHdlJ3ZlIG5ldmVyIGFjdHVhbGx5IGJ1aWx0IHRoaXMgQ3VzdG9tIHJlY2lwZSBidXQgd2hhdCBhYm91dAogICAgICAgICAgICAgIyB0aGUgcmVjaXBlIGl0J3MgYmFzZWQgb24/CiAgICAgICAgICAgICB0YXJnZXQgPSBcCiAgICAgICAgICAgICAgICAgVGFyZ2V0Lm9iamVjdHMuZmlsdGVyKFEoYnVpbGRfX291dGNvbWU9QnVpbGQuU1VDQ0VFREVEKSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEoYnVpbGRfX3Byb2plY3Q9c2VsZi5wcm9qZWN0KSAmCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFEodGFyZ2V0PXNlbGYuYmFzZV9yZWNpcGUubmFtZSkpLmxhc3QoKQotICAgICAgICAgICAgaWYgdGFyZ2V0ID09IE5vbmU6CisgICAgICAgICAgICBpZiB0YXJnZXQgaXMgTm9uZToKICAgICAgICAgICAgICAgICByZXR1cm4KIAogICAgICAgICBpZiB0YXJnZXQuYnVpbGQuY29tcGxldGVkX29uID09IHNlbGYubGFzdF91cGRhdGVkOgpAQCAtMTc4NCwxNCArMTc4NCwxNCBAQAogICAgICAgICByZXR1cm4gcmVjaXBlX2NvbnRlbnRzCiAKIGNsYXNzIFByb2plY3RWYXJpYWJsZShtb2RlbHMuTW9kZWwpOgotICAgIHByb2plY3QgPSBtb2RlbHMuRm9yZWlnbktleShQcm9qZWN0KQorICAgIHByb2plY3QgPSBtb2RlbHMuRm9yZWlnbktleShQcm9qZWN0LCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCiAgICAgbmFtZSA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0xMDApCiAgICAgdmFsdWUgPSBtb2RlbHMuVGV4dEZpZWxkKGJsYW5rID0gVHJ1ZSkKIAogY2xhc3MgVmFyaWFibGUobW9kZWxzLk1vZGVsKToKICAgICBzZWFyY2hfYWxsb3dlZF9maWVsZHMgPSBbJ3ZhcmlhYmxlX25hbWUnLCAndmFyaWFibGVfdmFsdWUnLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndmhpc3RvcnlfX2ZpbGVfbmFtZScsICJkZXNjcmlwdGlvbiJdCi0gICAgYnVpbGQgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZCwgcmVsYXRlZF9uYW1lPSd2YXJpYWJsZV9idWlsZCcpCisgICAgYnVpbGQgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J3ZhcmlhYmxlX2J1aWxkJykKICAgICB2YXJpYWJsZV9uYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKICAgICB2YXJpYWJsZV92YWx1ZSA9IG1vZGVscy5UZXh0RmllbGQoYmxhbms9VHJ1ZSkKICAgICBjaGFuZ2VkID0gbW9kZWxzLkJvb2xlYW5GaWVsZChkZWZhdWx0PUZhbHNlKQpAQCAtMTc5OSw3ICsxNzk5LDcgQEAKICAgICBkZXNjcmlwdGlvbiA9IG1vZGVscy5UZXh0RmllbGQoYmxhbms9VHJ1ZSkKIAogY2xhc3MgVmFyaWFibGVIaXN0b3J5KG1vZGVscy5Nb2RlbCk6Ci0gICAgdmFyaWFibGUgPSBtb2RlbHMuRm9yZWlnbktleShWYXJpYWJsZSwgcmVsYXRlZF9uYW1lPSd2aGlzdG9yeScpCisgICAgdmFyaWFibGUgPSBtb2RlbHMuRm9yZWlnbktleShWYXJpYWJsZSwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J3ZoaXN0b3J5JykKICAgICB2YWx1ZSAgID0gbW9kZWxzLlRleHRGaWVsZChibGFuaz1UcnVlKQogICAgIGZpbGVfbmFtZSA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU1KQogICAgIGxpbmVfbnVtYmVyID0gbW9kZWxzLkludGVnZXJGaWVsZChudWxsPVRydWUpCkBAIC0xODA5LDcgKzE4MDksNyBAQAogICAgIFZBUklBQkxFID0gMAogICAgIEhFTFBURVhUX0FSRUEgPSAoKFZBUklBQkxFLCAndmFyaWFibGUnKSwgKQogCi0gICAgYnVpbGQgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZCwgcmVsYXRlZF9uYW1lPSdoZWxwdGV4dF9idWlsZCcpCisgICAgYnVpbGQgPSBtb2RlbHMuRm9yZWlnbktleShCdWlsZCwgb25fZGVsZXRlPW1vZGVscy5DQVNDQURFLCByZWxhdGVkX25hbWU9J2hlbHB0ZXh0X2J1aWxkJykKICAgICBhcmVhID0gbW9kZWxzLkludGVnZXJGaWVsZChjaG9pY2VzPUhFTFBURVhUX0FSRUEpCiAgICAga2V5ID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTEwMCkKICAgICB0ZXh0ID0gbW9kZWxzLlRleHRGaWVsZCgpCkBAIC0xODI5LDggKzE4MjksOCBAQAogICAgICAgICAoRVhDRVBUSU9OLCAidG9hc3RlciBleGNlcHRpb24iKQogICAgICkKIAotICAgIGJ1aWxkID0gbW9kZWxzLkZvcmVpZ25LZXkoQnVpbGQpCi0gICAgdGFzayAgPSBtb2RlbHMuRm9yZWlnbktleShUYXNrLCBibGFuayA9IFRydWUsIG51bGw9VHJ1ZSkKKyAgICBidWlsZCA9IG1vZGVscy5Gb3JlaWduS2V5KEJ1aWxkLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUpCisgICAgdGFzayAgPSBtb2RlbHMuRm9yZWlnbktleShUYXNrLCBvbl9kZWxldGU9bW9kZWxzLkNBU0NBREUsIGJsYW5rID0gVHJ1ZSwgbnVsbD1UcnVlKQogICAgIGxldmVsID0gbW9kZWxzLkludGVnZXJGaWVsZChjaG9pY2VzPUxPR19MRVZFTCwgZGVmYXVsdD1JTkZPKQogICAgIG1lc3NhZ2UgPSBtb2RlbHMuVGV4dEZpZWxkKGJsYW5rPVRydWUsIG51bGw9VHJ1ZSkKICAgICBwYXRobmFtZSA9IG1vZGVscy5GaWxlUGF0aEZpZWxkKG1heF9sZW5ndGg9MjU1LCBibGFuaz1UcnVlKQpAQCAtMTg1OSw3ICsxODU5LDcgQEAKICAgICBzZWFyY2hfYWxsb3dlZF9maWVsZHMgPSBbIm5hbWUiLCAiZGVzY3JpcHRpb24iLCAibGF5ZXJfdmVyc2lvbl9fbGF5ZXJfX25hbWUiXQogICAgIHVwX2RhdGUgPSBtb2RlbHMuRGF0ZVRpbWVGaWVsZChudWxsID0gVHJ1ZSwgZGVmYXVsdCA9IE5vbmUpCiAKLSAgICBsYXllcl92ZXJzaW9uID0gbW9kZWxzLkZvcmVpZ25LZXkoJ0xheWVyX1ZlcnNpb24nKQorICAgIGxheWVyX3ZlcnNpb24gPSBtb2RlbHMuRm9yZWlnbktleSgnTGF5ZXJfVmVyc2lvbicsIG9uX2RlbGV0ZT1tb2RlbHMuQ0FTQ0FERSkKICAgICBuYW1lID0gbW9kZWxzLkNoYXJGaWVsZChtYXhfbGVuZ3RoPTI1NSkKICAgICBkZXNjcmlwdGlvbiA9IG1vZGVscy5DaGFyRmllbGQobWF4X2xlbmd0aD0yNTUpCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3NlbGVuaXVtX2hlbHBlcnNfYmFzZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3NlbGVuaXVtX2hlbHBlcnNfYmFzZS5weQppbmRleCA2Yzk0Njg0Li42NDRkNDVmIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci9zZWxlbml1bV9oZWxwZXJzX2Jhc2UucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvc2VsZW5pdW1faGVscGVyc19iYXNlLnB5CkBAIC0xOSw3ICsxOSw2IEBACiBpbXBvcnQgdGltZQogaW1wb3J0IHVuaXR0ZXN0CiAKLWZyb20gZGphbmdvLmNvbnRyaWIuc3RhdGljZmlsZXMudGVzdGluZyBpbXBvcnQgU3RhdGljTGl2ZVNlcnZlclRlc3RDYXNlCiBmcm9tIHNlbGVuaXVtIGltcG9ydCB3ZWJkcml2ZXIKIGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLnN1cHBvcnQudWkgaW1wb3J0IFdlYkRyaXZlcldhaXQKIGZyb20gc2VsZW5pdW0ud2ViZHJpdmVyLmNvbW1vbi5kZXNpcmVkX2NhcGFiaWxpdGllcyBpbXBvcnQgRGVzaXJlZENhcGFiaWxpdGllcwpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9hbGxfYnVpbGRzX3BhZ2UucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2FsbF9idWlsZHNfcGFnZS5weQppbmRleCBmYmE2MjdiLi44NDIzZDNkIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2FsbF9idWlsZHNfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2FsbF9idWlsZHNfcGFnZS5weQpAQCAtOSw3ICs5LDcgQEAKIAogaW1wb3J0IHJlCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYWxsX3Byb2plY3RzX3BhZ2UucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2FsbF9wcm9qZWN0c19wYWdlLnB5CmluZGV4IGFmZDJkMzUuLjE1YjAzNDAgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYWxsX3Byb2plY3RzX3BhZ2UucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9hbGxfcHJvamVjdHNfcGFnZS5weQpAQCAtOSw3ICs5LDcgQEAKIAogaW1wb3J0IHJlCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZS5weQppbmRleCBkOTcyYWZmLi5lZmNkODliIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2J1aWxkZGFzaGJvYXJkX3BhZ2UucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlLnB5CkBAIC03LDcgKzcsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIAogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV9hcnRpZmFjdHMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2J1aWxkZGFzaGJvYXJkX3BhZ2VfYXJ0aWZhY3RzLnB5CmluZGV4IGUyNjIzZTguLmM2MjI2ZDYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV9hcnRpZmFjdHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlX2FydGlmYWN0cy5weQpAQCAtNyw3ICs3LDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCiAKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2J1aWxkZGFzaGJvYXJkX3BhZ2VfcmVjaXBlcy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV9yZWNpcGVzLnB5CmluZGV4IGM1NDJkNDUuLjlkODViYTkgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV9yZWNpcGVzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV9yZWNpcGVzLnB5CkBAIC03LDcgKzcsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIEJ1aWxkLCBSZWNpcGUsIFRhc2ssIExheWVyLCBMYXllcl9WZXJzaW9uCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2J1aWxkZGFzaGJvYXJkX3BhZ2VfdGFza3MucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2J1aWxkZGFzaGJvYXJkX3BhZ2VfdGFza3MucHkKaW5kZXggMjJhY2I0Ny4uN2ZkZjc1ZCAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9idWlsZGRhc2hib2FyZF9wYWdlX3Rhc2tzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfYnVpbGRkYXNoYm9hcmRfcGFnZV90YXNrcy5weQpAQCAtNyw3ICs3LDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBQcm9qZWN0LCBCdWlsZCwgUmVjaXBlLCBUYXNrLCBMYXllciwgTGF5ZXJfVmVyc2lvbgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9qc191bml0X3Rlc3RzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9qc191bml0X3Rlc3RzLnB5CmluZGV4IGU4YjQyOTUuLmU2MTYzYmIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfanNfdW5pdF90ZXN0cy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2pzX3VuaXRfdGVzdHMucHkKQEAgLTExLDcgKzExLDcgQEAKIFJ1biB0aGUganMgdW5pdCB0ZXN0cwogIiIiCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogaW1wb3J0IGxvZ2dpbmcKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9sYW5kaW5nX3BhZ2UucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2xhbmRpbmdfcGFnZS5weQppbmRleCAwNzkwMTk4Li44YmI2NGI5IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2xhbmRpbmdfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2xhbmRpbmdfcGFnZS5weQpAQCAtNyw3ICs3LDcgQEAKICMgQ29weXJpZ2h0IChDKSAyMDEzLTIwMTYgSW50ZWwgQ29ycG9yYXRpb24KICMKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9sYXllcmRldGFpbHNfcGFnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbGF5ZXJkZXRhaWxzX3BhZ2UucHkKaW5kZXggZjgxZTY5Ni4uNzFiZGQyYSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9sYXllcmRldGFpbHNfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X2xheWVyZGV0YWlsc19wYWdlLnB5CkBAIC03LDcgKzcsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgogIwogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKIAogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBMYXllciwgTGF5ZXJfVmVyc2lvbiwgUHJvamVjdCwgTGF5ZXJTb3VyY2UsIFJlbGVhc2UKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbW9zdF9yZWNlbnRfYnVpbGRzX3N0YXRlcy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbW9zdF9yZWNlbnRfYnVpbGRzX3N0YXRlcy5weQppbmRleCAxNWQyNWRjLi43ODQ0YWFhIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X21vc3RfcmVjZW50X2J1aWxkc19zdGF0ZXMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9tb3N0X3JlY2VudF9idWlsZHNfc3RhdGVzLnB5CkBAIC03LDcgKzcsNyBAQAogIyBDb3B5cmlnaHQgKEMpIDIwMTMtMjAxNiBJbnRlbCBDb3Jwb3JhdGlvbgogIwogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnNfYmFzZSBpbXBvcnQgV2FpdApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9uZXdfY3VzdG9tX2ltYWdlX3BhZ2UucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X25ld19jdXN0b21faW1hZ2VfcGFnZS5weQppbmRleCAwYWEzYjdhLi45OTA2YWU0IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X25ld19jdXN0b21faW1hZ2VfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X25ld19jdXN0b21faW1hZ2VfcGFnZS5weQpAQCAtNyw3ICs3LDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKIAogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBCaXRiYWtlVmVyc2lvbiwgUmVsZWFzZSwgUHJvamVjdCwgUHJvamVjdExheWVyLCBMYXllcgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9uZXdfcHJvamVjdF9wYWdlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9uZXdfcHJvamVjdF9wYWdlLnB5CmluZGV4IDhlNTZiYjAuLmUyMGExZjYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfbmV3X3Byb2plY3RfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X25ld19wcm9qZWN0X3BhZ2UucHkKQEAgLTcsNyArNyw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiBmcm9tIHNlbGVuaXVtLndlYmRyaXZlci5zdXBwb3J0LnVpIGltcG9ydCBTZWxlY3QKIGZyb20gc2VsZW5pdW0uY29tbW9uLmV4Y2VwdGlvbnMgaW1wb3J0IEludmFsaWRFbGVtZW50U3RhdGVFeGNlcHRpb24KZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfcHJvamVjdF9idWlsZHNfcGFnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfcHJvamVjdF9idWlsZHNfcGFnZS5weQppbmRleCA0N2ZiMTBiLi41MTcxN2U3IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Byb2plY3RfYnVpbGRzX3BhZ2UucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9wcm9qZWN0X2J1aWxkc19wYWdlLnB5CkBAIC05LDcgKzksNyBAQAogCiBpbXBvcnQgcmUKIAotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQogZnJvbSB0ZXN0cy5icm93c2VyLnNlbGVuaXVtX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtVGVzdENhc2UKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9wcm9qZWN0X2NvbmZpZ19wYWdlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9wcm9qZWN0X2NvbmZpZ19wYWdlLnB5CmluZGV4IDI4MTZlYjkuLjk0NGJjYjIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfcHJvamVjdF9jb25maWdfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Byb2plY3RfY29uZmlnX3BhZ2UucHkKQEAgLTcsMTAgKzcsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWltcG9ydCByZQotCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQotZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IEJpdGJha2VWZXJzaW9uLCBSZWxlYXNlLCBQcm9qZWN0LCBQcm9qZWN0VmFyaWFibGUKQEAgLTIxNiw0ICsyMTMsNSBAQAogCiAgICAgICAgIGhpZGRlbl9lbGVtZW50ID0gc2VsZi5kcml2ZXIuZmluZF9lbGVtZW50X2J5X2lkKCdoaW50RXJyb3Itc3N0YXRlX2RpcicpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoaGlkZGVuX2VsZW1lbnQuaXNfZGlzcGxheWVkKCksIEZhbHNlLAotICAgICAgICAgICAgJ3NzdGF0ZSBkaXJlY3RvcnkgcGF0aCB2YWxpZCBidXQgdHJlYXRlZCBhcyBpbnZhbGlkJykKXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisgICAgICAgICAgICAnc3N0YXRlIGRpcmVjdG9yeSBwYXRoIHZhbGlkIGJ1dCB0cmVhdGVkIGFzIGludmFsaWQnKQorCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Byb2plY3RfcGFnZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfcHJvamVjdF9wYWdlLnB5CmluZGV4IDhiNWUxYjYuLjU0NjI5M2YgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfcHJvamVjdF9wYWdlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfcHJvamVjdF9wYWdlLnB5CkBAIC03LDcgKzcsNyBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby51dGlscyBpbXBvcnQgdGltZXpvbmUKIGZyb20gdGVzdHMuYnJvd3Nlci5zZWxlbml1bV9oZWxwZXJzIGltcG9ydCBTZWxlbml1bVRlc3RDYXNlCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3Rfc2FtcGxlLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9zYW1wbGUucHkKaW5kZXggZjRhZDY3MC4uYjAwNjdjMiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9zYW1wbGUucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF9zYW1wbGUucHkKQEAgLTE2LDcgKzE2LDcgQEAKIGFuZCBzaG91bGQgYmUgaW4gdGhlIHNhbWUgZGlyZWN0b3J5IGFzIHRoaXMgc2FtcGxlLgogIiIiCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogCiBjbGFzcyBUZXN0U2FtcGxlKFNlbGVuaXVtVGVzdENhc2UpOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Jyb3dzZXIvdGVzdF90YXNrX3BhZ2UucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Rhc2tfcGFnZS5weQppbmRleCAyNmYzZGNhLi4wMTFiNTg1IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Rhc2tfcGFnZS5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3Rhc2tfcGFnZS5weQpAQCAtNyw3ICs3LDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBQcm9qZWN0LCBCdWlsZCwgTGF5ZXIsIExheWVyX1ZlcnNpb24sIFJlY2lwZSwgVGFyZ2V0CmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvYnJvd3Nlci90ZXN0X3RvYXN0ZXJ0YWJsZV91aS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfdG9hc3RlcnRhYmxlX3VpLnB5CmluZGV4IGVmNzhjYmIuLmU4MmQ1ZWMgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfdG9hc3RlcnRhYmxlX3VpLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9icm93c2VyL3Rlc3RfdG9hc3RlcnRhYmxlX3VpLnB5CkBAIC05LDcgKzksNyBAQAogCiBmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZQogCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCiBmcm9tIHRlc3RzLmJyb3dzZXIuc2VsZW5pdW1faGVscGVycyBpbXBvcnQgU2VsZW5pdW1UZXN0Q2FzZQogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBCaXRiYWtlVmVyc2lvbiwgUmVsZWFzZSwgUHJvamVjdCwgQnVpbGQKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfZnVuY3Rpb25hbF9iYXNpYy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy9mdW5jdGlvbmFsL3Rlc3RfZnVuY3Rpb25hbF9iYXNpYy5weQppbmRleCA1NmM4NGZiLi41NjgzZTM4IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdGVzdHMvZnVuY3Rpb25hbC90ZXN0X2Z1bmN0aW9uYWxfYmFzaWMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL2Z1bmN0aW9uYWwvdGVzdF9mdW5jdGlvbmFsX2Jhc2ljLnB5CkBAIC03LDcgKzcsNiBAQAogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMC1vbmx5CiAjCiAKLWltcG9ydCB0aW1lCiBpbXBvcnQgcmUKIGZyb20gdGVzdHMuZnVuY3Rpb25hbC5mdW5jdGlvbmFsX2hlbHBlcnMgaW1wb3J0IFNlbGVuaXVtRnVuY3Rpb25hbFRlc3RDYXNlCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90ZXN0cy92aWV3cy90ZXN0X3ZpZXdzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL3ZpZXdzL3Rlc3Rfdmlld3MucHkKaW5kZXggNjhkOWU5ZC4uNzM1ZDU5NiAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL3ZpZXdzL3Rlc3Rfdmlld3MucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3Rlc3RzL3ZpZXdzL3Rlc3Rfdmlld3MucHkKQEAgLTExLDcgKzExLDcgQEAKIAogZnJvbSBkamFuZ28udGVzdCBpbXBvcnQgVGVzdENhc2UKIGZyb20gZGphbmdvLnRlc3QuY2xpZW50IGltcG9ydCBSZXF1ZXN0RmFjdG9yeQotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLmRiLm1vZGVscyBpbXBvcnQgUQogCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIFBhY2thZ2UKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL2FwaS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL2FwaS5weQppbmRleCA4YjQ5YjNlLi5iNGNkYzMzIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS9hcGkucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvYXBpLnB5CkBAIC0xMyw3ICsxMyw2IEBACiBpbXBvcnQganNvbgogaW1wb3J0IHN1YnByb2Nlc3MKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IENvdW50ZXIKLWZyb20gc2h1dGlsIGltcG9ydCBjb3B5ZmlsZQogCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIFByb2plY3RUYXJnZXQsIEJ1aWxkLCBMYXllcl9WZXJzaW9uCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IExheWVyVmVyc2lvbkRlcGVuZGVuY3ksIExheWVyU291cmNlLCBQcm9qZWN0TGF5ZXIKQEAgLTI1LDEyICsyNCwxMCBAQAogCiBmcm9tIGRqYW5nby5odHRwIGltcG9ydCBIdHRwUmVzcG9uc2UsIEpzb25SZXNwb25zZQogZnJvbSBkamFuZ28udmlld3MuZ2VuZXJpYyBpbXBvcnQgVmlldwotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIGZyb20gZGphbmdvLmRiLm1vZGVscyBpbXBvcnQgUSwgRgogZnJvbSBkamFuZ28uZGIgaW1wb3J0IEVycm9yCiBmcm9tIHRvYXN0ZXJndWkudGVtcGxhdGV0YWdzLnByb2plY3R0YWdzIGltcG9ydCBmaWx0ZXJlZF9maWxlc2l6ZWZvcm1hdAotZnJvbSBkamFuZ28udXRpbHMgaW1wb3J0IHRpbWV6b25lCi1pbXBvcnQgcHl0egogCiAjIGRldmVsb3BtZW50L2RlYnVnZ2luZyBzdXBwb3J0CiB2ZXJib3NlID0gMgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGFibGVzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGFibGVzLnB5CmluZGV4IGIzZWEyMjIuLjUyOGRkMzIgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RhYmxlcy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90YWJsZXMucHkKQEAgLTcsMTUgKzcsMTAgQEAKICMKIAogZnJvbSB0b2FzdGVyZ3VpLndpZGdldHMgaW1wb3J0IFRvYXN0ZXJUYWJsZQotZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBSZWNpcGUsIFByb2plY3RMYXllciwgTGF5ZXJfVmVyc2lvbiwgTWFjaGluZSwgUHJvamVjdAorZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBSZWNpcGUsIFByb2plY3RMYXllciwgTGF5ZXJfVmVyc2lvbiwgUHJvamVjdAogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBDdXN0b21JbWFnZVJlY2lwZSwgUGFja2FnZSwgVGFyZ2V0LCBCdWlsZCwgTG9nTWVzc2FnZSwgVGFzawogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBDdXN0b21JbWFnZVBhY2thZ2UsIFBhY2thZ2VfRGVwZW5kZW5jeU1hbmFnZXIKLWZyb20gb3JtLm1vZGVscyBpbXBvcnQgRGlzdHJvCi1mcm9tIGRqYW5nby5kYi5tb2RlbHMgaW1wb3J0IFEsIE1heCwgU3VtLCBDb3VudCwgV2hlbiwgQ2FzZSwgVmFsdWUsIEludGVnZXJGaWVsZAotZnJvbSBkamFuZ28uY29uZi51cmxzIGltcG9ydCB1cmwKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlLCByZXNvbHZlCi1mcm9tIGRqYW5nby5odHRwIGltcG9ydCBIdHRwUmVzcG9uc2UKLWZyb20gZGphbmdvLnZpZXdzLmdlbmVyaWMgaW1wb3J0IFRlbXBsYXRlVmlldworZnJvbSBkamFuZ28uZGIubW9kZWxzIGltcG9ydCBRLCBTdW0sIENvdW50LCBXaGVuLCBDYXNlLCBWYWx1ZSwgSW50ZWdlckZpZWxkCiAKIGZyb20gdG9hc3Rlcmd1aS50YWJsZWZpbHRlciBpbXBvcnQgVGFibGVGaWx0ZXIKIGZyb20gdG9hc3Rlcmd1aS50YWJsZWZpbHRlciBpbXBvcnQgVGFibGVGaWx0ZXJBY3Rpb25Ub2dnbGUKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRldGFncy9vYmplY3RzX3RvX2RpY3Rpb25hcmllc19maWx0ZXIucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXRhZ3Mvb2JqZWN0c190b19kaWN0aW9uYXJpZXNfZmlsdGVyLnB5CmluZGV4IDA0OGQ1MzMuLmUyNDIyMzQgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRldGFncy9vYmplY3RzX3RvX2RpY3Rpb25hcmllc19maWx0ZXIucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGV0YWdzL29iamVjdHNfdG9fZGljdGlvbmFyaWVzX2ZpbHRlci5weQpAQCAtMyw3ICszLDYgQEAKICMKIAogZnJvbSBkamFuZ28gaW1wb3J0IHRlbXBsYXRlCi1pbXBvcnQganNvbgogCiByZWdpc3RlciA9IHRlbXBsYXRlLkxpYnJhcnkoKQogCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXRhZ3MvcHJvamVjdF91cmxfdGFnLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGV0YWdzL3Byb2plY3RfdXJsX3RhZy5weQppbmRleCA3MWUwOTI1Li43YjZmMTViIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXRhZ3MvcHJvamVjdF91cmxfdGFnLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRldGFncy9wcm9qZWN0X3VybF90YWcucHkKQEAgLTMsNyArMyw3IEBACiAjCiAKIGZyb20gZGphbmdvIGltcG9ydCB0ZW1wbGF0ZQotZnJvbSBkamFuZ28uY29yZS51cmxyZXNvbHZlcnMgaW1wb3J0IHJldmVyc2UKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UKIAogcmVnaXN0ZXIgPSB0ZW1wbGF0ZS5MaWJyYXJ5KCkKIApkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGV0YWdzL3Byb2plY3R0YWdzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdGVtcGxhdGV0YWdzL3Byb2plY3R0YWdzLnB5CmluZGV4IDFkYmFiM2IuLmM0MzJmNTkgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3RlbXBsYXRldGFncy9wcm9qZWN0dGFncy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90ZW1wbGF0ZXRhZ3MvcHJvamVjdHRhZ3MucHkKQEAgLTYsNyArNiw3IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWVkZWx0YQorZnJvbSBkYXRldGltZSBpbXBvcnQgdGltZWRlbHRhCiBmcm9tIG9zLnBhdGggaW1wb3J0IHJlbHBhdGgKIGltcG9ydCByZQogZnJvbSBkamFuZ28gaW1wb3J0IHRlbXBsYXRlCkBAIC00NCw3ICs0NCw3IEBACiAgICAgIyBpdCBtYW51YWxseSBoZXJlCiAgICAgcmV0dXJuIG1hcmtfc2FmZShKc29uTGliLmR1bXBzKHZhbHVlLCBpbmRlbnQ9MiwgZGVmYXVsdCA9IGRlZmF1bHQsIGVuc3VyZV9hc2NpaT1GYWxzZSkucmVwbGFjZSgnPC8nLCAnPFxcLycpKQogCi1AcmVnaXN0ZXIuYXNzaWdubWVudF90YWcKK0ByZWdpc3Rlci5zaW1wbGVfdGFnCiBkZWYgcXVlcnkocXMsICoqa3dhcmdzKToKICAgICAiIiIgdGVtcGxhdGUgdGFnIHdoaWNoIGFsbG93cyBxdWVyeXNldCBmaWx0ZXJpbmcuIFVzYWdlOgogICAgICAgICAgIHslIHF1ZXJ5IGJvb2tzIGF1dGhvcj1hdXRob3IgYXMgbXlib29rcyAlfQpAQCAtODMsNyArODMsNyBAQAogZGVmIG11bHRpcGx5KHZhbHVlLCBhcmcpOgogICAgIHJldHVybiBpbnQodmFsdWUpICogaW50KGFyZykKIAotQHJlZ2lzdGVyLmFzc2lnbm1lbnRfdGFnCitAcmVnaXN0ZXIuc2ltcGxlX3RhZwogZGVmIGRhdGVjb21wdXRlKGRlbHRhLCBzdGFydCA9IHRpbWV6b25lLm5vdygpKToKICAgICByZXR1cm4gc3RhcnQgKyB0aW1lZGVsdGEoZGVsdGEpCiAKQEAgLTIxMiw3ICsyMTIsNyBAQAogICAgICIiIklmIHBhY2thZ2UuaW5zdGFsbGVkX3NpemUgbm90IG51bGwgYW5kIG5vdCBlbXB0eSByZXR1cm4gaXQsCiAgICAgICAgZWxzZSByZXR1cm4gcGFja2FnZS5zaXplCiAgICAgIiIiCi0gICAgcmV0dXJuIHNpemUgaWYgKGluc3RhbGxlZF9zaXplID09IDApIG9yIChpbnN0YWxsZWRfc2l6ZSA9PSAiIikgb3IgKGluc3RhbGxlZF9zaXplID09IE5vbmUpIGVsc2UgaW5zdGFsbGVkX3NpemUKKyAgICByZXR1cm4gc2l6ZSBpZiAoaW5zdGFsbGVkX3NpemUgPT0gMCkgb3IgKGluc3RhbGxlZF9zaXplID09ICIiKSBvciAoaW5zdGFsbGVkX3NpemUgaXMgTm9uZSkgZWxzZSBpbnN0YWxsZWRfc2l6ZQogCiBAcmVnaXN0ZXIuZmlsdGVyCiBkZWYgZmlsdGVyZWRfcGFja2FnZXZlcnNpb24odmVyc2lvbiwgcmV2aXNpb24pOgpAQCAtMjI4LDcgKzIyOCw3IEBACiAgICAgICAgIGZvcm1hdHRlZCBuaWNlbHkuCiAgICAgIiIiCiAgICAgc2l6ZSA9IHBhY2thZ2Vfb2JqZWN0Lmluc3RhbGxlZF9zaXplCi0gICAgaWYgc2l6ZSA9PSBOb25lIG9yIHNpemUgPT0gJyc6CisgICAgaWYgc2l6ZSBpcyBOb25lIG9yIHNpemUgPT0gJyc6CiAgICAgICAgIHNpemUgPSBwYWNrYWdlX29iamVjdC5zaXplCiAKICAgICByZXR1cm4gJ3s6LjElfScuZm9ybWF0KGZsb2F0KHNpemUpL2Zsb2F0KHRvdGFsX3NpemUpKQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdHlwZWFoZWFkcy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3R5cGVhaGVhZHMucHkKaW5kZXggZmQ3NTBmZi4uYTFlNmZlOSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdHlwZWFoZWFkcy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS90eXBlYWhlYWRzLnB5CkBAIC0xMCw3ICsxMCw3IEBACiAKIGZyb20gdG9hc3Rlcmd1aS53aWRnZXRzIGltcG9ydCBUb2FzdGVyVHlwZUFoZWFkCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlCitmcm9tIGRqYW5nby51cmxzIGltcG9ydCByZXZlcnNlCiBmcm9tIGRqYW5nby5jb3JlLmNhY2hlIGltcG9ydCBjYWNoZQogCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3VybHMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS91cmxzLnB5CmluZGV4IDY3M2Q5YWUuLmQyZGY0ZTYgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3VybHMucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdXJscy5weQpAQCAtNiwxMCArNiw5IEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotZnJvbSBkamFuZ28uY29uZi51cmxzIGltcG9ydCBpbmNsdWRlLCB1cmwKLWZyb20gZGphbmdvLnZpZXdzLmdlbmVyaWMgaW1wb3J0IFJlZGlyZWN0VmlldywgVGVtcGxhdGVWaWV3Citmcm9tIGRqYW5nby5jb25mLnVybHMgaW1wb3J0IHVybAorZnJvbSBkamFuZ28udmlld3MuZ2VuZXJpYyBpbXBvcnQgUmVkaXJlY3RWaWV3CiAKLWZyb20gZGphbmdvLmh0dHAgaW1wb3J0IEh0dHBSZXNwb25zZUJhZFJlcXVlc3QKIGZyb20gdG9hc3Rlcmd1aSBpbXBvcnQgdGFibGVzCiBmcm9tIHRvYXN0ZXJndWkgaW1wb3J0IGJ1aWxkdGFibGVzCiBmcm9tIHRvYXN0ZXJndWkgaW1wb3J0IHR5cGVhaGVhZHMKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3ZpZXdzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdmlld3MucHkKaW5kZXggZDdhY2FmZi4uOWE1ZTQ4ZSAxMDA2NDQKLS0tIGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdmlld3MucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvdmlld3MucHkKQEAgLTE5LDggKzE5LDggQEAKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgVGFyZ2V0S2VybmVsRmlsZSwgVGFyZ2V0U0RLRmlsZSwgVGFyZ2V0X0ltYWdlX0ZpbGUKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgQml0YmFrZVZlcnNpb24sIEN1c3RvbUltYWdlUmVjaXBlCiAKLWZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXZlcnNlLCByZXNvbHZlCi1mcm9tIGRqYW5nby5jb3JlLmV4Y2VwdGlvbnMgaW1wb3J0IE11bHRpcGxlT2JqZWN0c1JldHVybmVkLCBPYmplY3REb2VzTm90RXhpc3QKK2Zyb20gZGphbmdvLnVybHMgaW1wb3J0IHJldmVyc2UsIHJlc29sdmUKK2Zyb20gZGphbmdvLmNvcmUuZXhjZXB0aW9ucyBpbXBvcnQgT2JqZWN0RG9lc05vdEV4aXN0CiBmcm9tIGRqYW5nby5jb3JlLnBhZ2luYXRvciBpbXBvcnQgUGFnaW5hdG9yLCBFbXB0eVBhZ2UsIFBhZ2VOb3RBbkludGVnZXIKIGZyb20gZGphbmdvLmh0dHAgaW1wb3J0IEh0dHBSZXNwb25zZU5vdEZvdW5kLCBKc29uUmVzcG9uc2UKIGZyb20gZGphbmdvLnV0aWxzIGltcG9ydCB0aW1lem9uZQpAQCAtNTEsNyArNTEsNyBAQAogICAgIGRlZiBnZXRfbWltZXR5cGUoc2VsZiwgcGF0aCk6CiAgICAgICAgIGd1ZXNzID0gbWltZXR5cGVzLmd1ZXNzX3R5cGUocGF0aCwgc2VsZi5fc3RyaWN0KQogICAgICAgICBndWVzc2VkX3R5cGUgPSBndWVzc1swXQotICAgICAgICBpZiBndWVzc2VkX3R5cGUgPT0gTm9uZToKKyAgICAgICAgaWYgZ3Vlc3NlZF90eXBlIGlzIE5vbmU6CiAgICAgICAgICAgICBndWVzc2VkX3R5cGUgPSAnYXBwbGljYXRpb24vb2N0ZXQtc3RyZWFtJwogICAgICAgICByZXR1cm4gZ3Vlc3NlZF90eXBlCiAKQEAgLTEyNiw3ICsxMjYsNyBAQAogICAgIHJldHVybiB7ImlkIjogeC5waywKICAgICAgICAgICAgICJuYW1lIjogeC5sYXllci5uYW1lLAogICAgICAgICAgICAgInRvb2x0aXAiOiAiJXMgfCAlcyIgJSAoeC5sYXllci52Y3NfdXJsLHguZ2V0X3Zjc19yZWZlcmVuY2UoKSksCi0gICAgICAgICAgICAiZGV0YWlsIjogIiglcyIgJSB4LmxheWVyLnZjc191cmwgKyAoIikiIGlmIHgucmVsZWFzZSA9PSBOb25lIGVsc2UgIiB8ICIreC5nZXRfdmNzX3JlZmVyZW5jZSgpKyIpIiksCisgICAgICAgICAgICAiZGV0YWlsIjogIiglcyIgJSB4LmxheWVyLnZjc191cmwgKyAoIikiIGlmIHgucmVsZWFzZSBpcyBOb25lIGVsc2UgIiB8ICIreC5nZXRfdmNzX3JlZmVyZW5jZSgpKyIpIiksCiAgICAgICAgICAgICAiZ2l0dXJsIjogeC5sYXllci52Y3NfdXJsLAogICAgICAgICAgICAgImxheWVyZGV0YWlsdXJsIiA6IHJldmVyc2UoJ2xheWVyZGV0YWlscycsIGFyZ3M9KHByai5pZCx4LnBrKSksCiAgICAgICAgICAgICAicmV2aXNpb24iIDogeC5nZXRfdmNzX3JlZmVyZW5jZSgpLApAQCAtMzUyLDcgKzM1Miw3IEBACiAjIHNldCBjb29raWVzIGZvciBwYXJhbWV0ZXJzLiB0aGlzIGlzIHVzZWZ1bGwgaW4gY2FzZSBwYXJhbWV0ZXJzIGFyZSBzZXQKICMgbWFudWFsbHkgZnJvbSB0aGUgR0VUIHZhbHVlcyBvZiB0aGUgbGluawogZGVmIF9zZXRfcGFyYW1ldGVyc192YWx1ZXMocGFnZXNpemUsIG9yZGVyYnksIHJlcXVlc3QpOgotICAgIGZyb20gZGphbmdvLmNvcmUudXJscmVzb2x2ZXJzIGltcG9ydCByZXNvbHZlCisgICAgZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmVzb2x2ZQogICAgIGN1cnJlbnRfdXJsID0gcmVzb2x2ZShyZXF1ZXN0LnBhdGhfaW5mbykudXJsX25hbWUKICAgICByZXF1ZXN0LnNlc3Npb25bJyVzX2NvdW50JyAlIGN1cnJlbnRfdXJsXSA9IHBhZ2VzaXplCiAgICAgcmVxdWVzdC5zZXNzaW9uWyclc19vcmRlcmJ5JyAlIGN1cnJlbnRfdXJsXSA9b3JkZXJieQpAQCAtNjY0LDcgKzY2NCw2IEBACiAgICAgX3NldF9wYXJhbWV0ZXJzX3ZhbHVlcyhwYWdlc2l6ZSwgb3JkZXJieSwgcmVxdWVzdCkKICAgICByZXR1cm4gcmVzcG9uc2UKIAotZnJvbSBkamFuZ28uY29yZS5zZXJpYWxpemVycy5qc29uIGltcG9ydCBEamFuZ29KU09ORW5jb2RlcgogZnJvbSBkamFuZ28uaHR0cCBpbXBvcnQgSHR0cFJlc3BvbnNlCiBkZWYgeGhyX2RpcmluZm8ocmVxdWVzdCwgYnVpbGRfaWQsIHRhcmdldF9pZCk6CiAgICAgdG9wID0gcmVxdWVzdC5HRVQuZ2V0KCdzdGFydCcsICcvJykKQEAgLTcxOSw3ICs3MTgsNyBAQAogICAgICAgICAgICAgICAgIHJlc29sdmVkX2lkID0gby5zeW1fdGFyZ2V0X2lkCiAgICAgICAgICAgICAgICAgcmVzb2x2ZWRfcGF0aCA9IG8ucGF0aAogICAgICAgICAgICAgICAgIGlmIHRhcmdldF9wYWNrYWdlcy5jb3VudCgpOgotICAgICAgICAgICAgICAgICAgICB3aGlsZSByZXNvbHZlZF9pZCAhPSAiIiBhbmQgcmVzb2x2ZWRfaWQgIT0gTm9uZToKKyAgICAgICAgICAgICAgICAgICAgd2hpbGUgcmVzb2x2ZWRfaWQgIT0gIiIgYW5kIHJlc29sdmVkX2lkIGlzIG5vdCBOb25lOgogICAgICAgICAgICAgICAgICAgICAgICAgdGYgPSBUYXJnZXRfRmlsZS5vYmplY3RzLmdldChwaz1yZXNvbHZlZF9pZCkKICAgICAgICAgICAgICAgICAgICAgICAgIHJlc29sdmVkX3BhdGggPSB0Zi5wYXRoCiAgICAgICAgICAgICAgICAgICAgICAgICByZXNvbHZlZF9pZCA9IHRmLnN5bV90YXJnZXRfaWQKQEAgLTczMSwxMCArNzMwLDEwIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeVsncGFja2FnZV9pZCddID0gc3RyKHAuaWQpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbnRyeVsncGFja2FnZSddID0gcC5uYW1lCiAgICAgICAgICAgICAgICAgIyBkb24ndCB1c2UgcmVzb2x2ZWQgcGF0aCBmcm9tIGFib3ZlLCBzaG93IGltbWVkaWF0ZSBsaW5rLXRvCi0gICAgICAgICAgICAgICAgaWYgby5zeW1fdGFyZ2V0X2lkICE9ICIiIGFuZCBvLnN5bV90YXJnZXRfaWQgIT0gTm9uZToKKyAgICAgICAgICAgICAgICBpZiBvLnN5bV90YXJnZXRfaWQgIT0gIiIgYW5kIG8uc3ltX3RhcmdldF9pZCBpcyBub3QgTm9uZToKICAgICAgICAgICAgICAgICAgICAgZW50cnlbJ2xpbmtfdG8nXSA9IFRhcmdldF9GaWxlLm9iamVjdHMuZ2V0KHBrPW8uc3ltX3RhcmdldF9pZCkucGF0aAogICAgICAgICAgICAgZW50cnlbJ3NpemUnXSA9IGZpbHRlcmVkX2ZpbGVzaXplZm9ybWF0KG8uc2l6ZSkKLSAgICAgICAgICAgIGlmIGVudHJ5WydsaW5rX3RvJ10gIT0gTm9uZToKKyAgICAgICAgICAgIGlmIGVudHJ5WydsaW5rX3RvJ10gaXMgbm90IE5vbmU6CiAgICAgICAgICAgICAgICAgZW50cnlbJ3Blcm1pc3Npb24nXSA9IG5vZGVfc3RyW28uaW5vZGV0eXBlXSArIG8ucGVybWlzc2lvbgogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBlbnRyeVsncGVybWlzc2lvbiddID0gbm9kZV9zdHJbby5pbm9kZXR5cGVdICsgby5wZXJtaXNzaW9uCkBAIC03NTYsNyArNzU1LDcgQEAKICAgICBvYmplY3RzID0gX2dldF9kaXJfZW50cmllcyhidWlsZF9pZCwgdGFyZ2V0X2lkLCAnLycpCiAgICAgcGFja2FnZXNfc3VtID0gUGFja2FnZS5vYmplY3RzLmZpbHRlcihpZF9faW49VGFyZ2V0X0luc3RhbGxlZF9QYWNrYWdlLm9iamVjdHMuZmlsdGVyKHRhcmdldF9pZD10YXJnZXRfaWQpLnZhbHVlcygncGFja2FnZV9pZCcpKS5hZ2dyZWdhdGUoU3VtKCdpbnN0YWxsZWRfc2l6ZScpKQogICAgIGRpcl9saXN0ID0gTm9uZQotICAgIGlmIGZpbGVfcGF0aCAhPSBOb25lOgorICAgIGlmIGZpbGVfcGF0aCBpcyBub3QgTm9uZToKICAgICAgICAgIiIiCiAgICAgICAgIExpbmsgZnJvbSB0aGUgaW5jbHVkZWQgcGFja2FnZSBkZXRhaWwgZmlsZSBsaXN0IHBhZ2UgYW5kIGlzCiAgICAgICAgIHJlcXVlc3Rpbmcgb3BlbmluZyB0aGUgZGlyIGluZm8gdG8gYSBzcGVjaWZpYyBmaWxlIHBhdGguCkBAIC0xMDMwLDE1ICsxMDI5LDE1IEBACiAKIGRlZiBfZ2V0X3BhY2thZ2VfYWxpYXMocGFja2FnZSk6CiAgICAgYWxpYXMgPSBwYWNrYWdlLmluc3RhbGxlZF9uYW1lCi0gICAgaWYgYWxpYXMgIT0gTm9uZSBhbmQgYWxpYXMgIT0gJycgYW5kIGFsaWFzICE9IHBhY2thZ2UubmFtZToKKyAgICBpZiBhbGlhcyBpcyBub3QgTm9uZSBhbmQgYWxpYXMgIT0gJycgYW5kIGFsaWFzICE9IHBhY2thZ2UubmFtZToKICAgICAgICAgcmV0dXJuIGFsaWFzCiAgICAgZWxzZToKICAgICAgICAgcmV0dXJuICcnCiAKIGRlZiBfZ2V0X2Z1bGxwYWNrYWdlc3BlYyhwYWNrYWdlKToKICAgICByID0gcGFja2FnZS5uYW1lCi0gICAgdmVyc2lvbl9nb29kID0gcGFja2FnZS52ZXJzaW9uICE9IE5vbmUgYW5kICBwYWNrYWdlLnZlcnNpb24gIT0gJycKLSAgICByZXZpc2lvbl9nb29kID0gcGFja2FnZS5yZXZpc2lvbiAhPSBOb25lIGFuZCBwYWNrYWdlLnJldmlzaW9uICE9ICcnCisgICAgdmVyc2lvbl9nb29kID0gcGFja2FnZS52ZXJzaW9uIGlzIG5vdCBOb25lIGFuZCAgcGFja2FnZS52ZXJzaW9uICE9ICcnCisgICAgcmV2aXNpb25fZ29vZCA9IHBhY2thZ2UucmV2aXNpb24gaXMgbm90IE5vbmUgYW5kIHBhY2thZ2UucmV2aXNpb24gIT0gJycKICAgICBpZiB2ZXJzaW9uX2dvb2Qgb3IgcmV2aXNpb25fZ29vZDoKICAgICAgICAgciArPSAnXycKICAgICAgICAgaWYgdmVyc2lvbl9nb29kOgpAQCAtMTE5Miw3ICsxMTkxLDcgQEAKICAgICAgICAgcmV0dXJuIF9yZWRpcmVjdF9wYXJhbWV0ZXJzKCAncGFja2FnZV9pbmNsdWRlZF9yZXZlcnNlX2RlcGVuZGVuY2llcycsIHJlcXVlc3QuR0VULCBtYW5kYXRvcnlfcGFyYW1ldGVycywgYnVpbGRfaWQgPSBidWlsZF9pZCwgdGFyZ2V0X2lkID0gdGFyZ2V0X2lkLCBwYWNrYWdlX2lkID0gcGFja2FnZV9pZCkKICAgICAoZmlsdGVyX3N0cmluZywgc2VhcmNoX3Rlcm0sIG9yZGVyaW5nX3N0cmluZykgPSBfc2VhcmNoX3R1cGxlKHJlcXVlc3QsIFBhY2thZ2VfRmlsZSkKIAotICAgIHF1ZXJ5c2V0ID0gUGFja2FnZV9EZXBlbmRlbmN5Lm9iamVjdHMuc2VsZWN0X3JlbGF0ZWQoJ2RlcGVuZHNfb25fX25hbWUnLCAnZGVwZW5kc19vbl9fc2l6ZScpLmZpbHRlcihkZXBlbmRzX29uPXBhY2thZ2VfaWQsIHRhcmdldF9pZD10YXJnZXRfaWQsIGRlcF90eXBlPVBhY2thZ2VfRGVwZW5kZW5jeS5UWVBFX1RSREVQRU5EUykKKyAgICBxdWVyeXNldCA9IFBhY2thZ2VfRGVwZW5kZW5jeS5vYmplY3RzLnNlbGVjdF9yZWxhdGVkKCdkZXBlbmRzX29uJykuZmlsdGVyKGRlcGVuZHNfb249cGFja2FnZV9pZCwgdGFyZ2V0X2lkPXRhcmdldF9pZCwgZGVwX3R5cGU9UGFja2FnZV9EZXBlbmRlbmN5LlRZUEVfVFJERVBFTkRTKQogICAgIG9iamVjdHMgPSBfZ2V0X3F1ZXJ5c2V0KFBhY2thZ2VfRGVwZW5kZW5jeSwgcXVlcnlzZXQsIGZpbHRlcl9zdHJpbmcsIHNlYXJjaF90ZXJtLCBvcmRlcmluZ19zdHJpbmcsICdwYWNrYWdlX19uYW1lJykKIAogICAgIHBhY2thZ2UgPSBQYWNrYWdlLm9iamVjdHMuZ2V0KHBrPXBhY2thZ2VfaWQpCkBAIC0xMzQwLDcgKzEzMzksNyBAQAogCiBpbXBvcnQgdG9hc3Rlcm1haW4uc2V0dGluZ3MKIAotZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBQcm9qZWN0LCBQcm9qZWN0TGF5ZXIsIFByb2plY3RUYXJnZXQsIFByb2plY3RWYXJpYWJsZQorZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBQcm9qZWN0LCBQcm9qZWN0TGF5ZXIsIFByb2plY3RWYXJpYWJsZQogZnJvbSBibGRjb250cm9sLm1vZGVscyBpbXBvcnQgIEJ1aWxkRW52aXJvbm1lbnQKIAogIyB3ZSBoYXZlIGEgc2V0IG9mIGZ1bmN0aW9ucyBpZiB3ZSdyZSBpbiBtYW5hZ2VkIG1vZGUsIG9yCkBAIC0xMzQ5LDEwICsxMzQ4LDggQEAKIGlmIFRydWU6CiAgICAgZnJvbSBkamFuZ28uY29udHJpYi5hdXRoLm1vZGVscyBpbXBvcnQgVXNlcgogICAgIGZyb20gZGphbmdvLmNvbnRyaWIuYXV0aCBpbXBvcnQgYXV0aGVudGljYXRlLCBsb2dpbgotICAgIGZyb20gZGphbmdvLmNvbnRyaWIuYXV0aC5kZWNvcmF0b3JzIGltcG9ydCBsb2dpbl9yZXF1aXJlZAogCi0gICAgZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBMYXllclNvdXJjZSwgVG9hc3RlclNldHRpbmcsIFJlbGVhc2UsIE1hY2hpbmUsIExheWVyVmVyc2lvbkRlcGVuZGVuY3kKLSAgICBmcm9tIGJsZGNvbnRyb2wubW9kZWxzIGltcG9ydCBCdWlsZFJlcXVlc3QKKyAgICBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IExheWVyU291cmNlLCBUb2FzdGVyU2V0dGluZywgUmVsZWFzZQogCiAgICAgaW1wb3J0IHRyYWNlYmFjawogCkBAIC0xMzY3LDggKzEzNjQsOCBAQAogCiAgICAgICAgIHRlbXBsYXRlID0gIm5ld3Byb2plY3QuaHRtbCIKICAgICAgICAgY29udGV4dCA9IHsKLSAgICAgICAgICAgICdlbWFpbCc6IHJlcXVlc3QudXNlci5lbWFpbCBpZiByZXF1ZXN0LnVzZXIuaXNfYXV0aGVudGljYXRlZCgpIGVsc2UgJycsCi0gICAgICAgICAgICAndXNlcm5hbWUnOiByZXF1ZXN0LnVzZXIudXNlcm5hbWUgaWYgcmVxdWVzdC51c2VyLmlzX2F1dGhlbnRpY2F0ZWQoKSBlbHNlICcnLAorICAgICAgICAgICAgJ2VtYWlsJzogcmVxdWVzdC51c2VyLmVtYWlsIGlmIHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkIGVsc2UgJycsCisgICAgICAgICAgICAndXNlcm5hbWUnOiByZXF1ZXN0LnVzZXIudXNlcm5hbWUgaWYgcmVxdWVzdC51c2VyLmlzX2F1dGhlbnRpY2F0ZWQgZWxzZSAnJywKICAgICAgICAgICAgICdyZWxlYXNlcyc6IFJlbGVhc2Uub2JqZWN0cy5vcmRlcl9ieSgiZGVzY3JpcHRpb24iKSwKICAgICAgICAgfQogCkBAIC0xMzk0LDcgKzEzOTEsNyBAQAogICAgICAgICAgICAgICAgICAgICAjIHNldCBhbGVydCBmb3IgbWlzc2luZyBmaWVsZHMKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgQmFkUGFyYW1ldGVyRXhjZXB0aW9uKCJGaWVsZHMgbWlzc2luZzogJXMiICUgIiwgIi5qb2luKG1pc3NpbmcpKQogCi0gICAgICAgICAgICAgICAgaWYgbm90IHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkKCk6CisgICAgICAgICAgICAgICAgaWYgbm90IHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkOgogICAgICAgICAgICAgICAgICAgICB1c2VyID0gYXV0aGVudGljYXRlKHVzZXJuYW1lID0gcmVxdWVzdC5QT1NULmdldCgndXNlcm5hbWUnLCAnX2Fub251c2VyJyksIHBhc3N3b3JkID0gJ25vcGFzcycpCiAgICAgICAgICAgICAgICAgICAgIGlmIHVzZXIgaXMgTm9uZToKICAgICAgICAgICAgICAgICAgICAgICAgIHVzZXIgPSBVc2VyLm9iamVjdHMuY3JlYXRlX3VzZXIodXNlcm5hbWUgPSByZXF1ZXN0LlBPU1QuZ2V0KCd1c2VybmFtZScsICdfYW5vbnVzZXInKSwgZW1haWwgPSByZXF1ZXN0LlBPU1QuZ2V0KCdlbWFpbCcsICcnKSwgcGFzc3dvcmQgPSAibm9wYXNzIikKQEAgLTE0NDEsOCArMTQzOCw4IEBACiAgICAgICAgIHByb2plY3QgPSBQcm9qZWN0Lm9iamVjdHMuZ2V0KHBrPXBpZCkKICAgICAgICAgdGVtcGxhdGUgPSAibmV3cHJvamVjdF9zcGVjaWZpYy5odG1sIgogICAgICAgICBjb250ZXh0ID0gewotICAgICAgICAgICAgJ2VtYWlsJzogcmVxdWVzdC51c2VyLmVtYWlsIGlmIHJlcXVlc3QudXNlci5pc19hdXRoZW50aWNhdGVkKCkgZWxzZSAnJywKLSAgICAgICAgICAgICd1c2VybmFtZSc6IHJlcXVlc3QudXNlci51c2VybmFtZSBpZiByZXF1ZXN0LnVzZXIuaXNfYXV0aGVudGljYXRlZCgpIGVsc2UgJycsCisgICAgICAgICAgICAnZW1haWwnOiByZXF1ZXN0LnVzZXIuZW1haWwgaWYgcmVxdWVzdC51c2VyLmlzX2F1dGhlbnRpY2F0ZWQgZWxzZSAnJywKKyAgICAgICAgICAgICd1c2VybmFtZSc6IHJlcXVlc3QudXNlci51c2VybmFtZSBpZiByZXF1ZXN0LnVzZXIuaXNfYXV0aGVudGljYXRlZCBlbHNlICcnLAogICAgICAgICAgICAgJ3JlbGVhc2VzJzogUmVsZWFzZS5vYmplY3RzLm9yZGVyX2J5KCJkZXNjcmlwdGlvbiIpLAogICAgICAgICAgICAgJ3Byb2plY3RuYW1lJzogcHJvamVjdC5uYW1lLAogICAgICAgICAgICAgJ3Byb2plY3RfcGsnOiBwcm9qZWN0LnBrLApAQCAtMTQ3Miw3ICsxNDY5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgIyBzZXQgYWxlcnQgZm9yIG1pc3NpbmcgZmllbGRzCiAgICAgICAgICAgICAgICAgICAgIHJhaXNlIEJhZFBhcmFtZXRlckV4Y2VwdGlvbigiRmllbGRzIG1pc3Npbmc6ICVzIiAlICIsICIuam9pbihtaXNzaW5nKSkKIAotICAgICAgICAgICAgICAgIGlmIG5vdCByZXF1ZXN0LnVzZXIuaXNfYXV0aGVudGljYXRlZCgpOgorICAgICAgICAgICAgICAgIGlmIG5vdCByZXF1ZXN0LnVzZXIuaXNfYXV0aGVudGljYXRlZDoKICAgICAgICAgICAgICAgICAgICAgdXNlciA9IGF1dGhlbnRpY2F0ZSh1c2VybmFtZSA9IHJlcXVlc3QuUE9TVC5nZXQoJ3VzZXJuYW1lJywgJ19hbm9udXNlcicpLCBwYXNzd29yZCA9ICdub3Bhc3MnKQogICAgICAgICAgICAgICAgICAgICBpZiB1c2VyIGlzIE5vbmU6CiAgICAgICAgICAgICAgICAgICAgICAgICB1c2VyID0gVXNlci5vYmplY3RzLmNyZWF0ZV91c2VyKHVzZXJuYW1lID0gcmVxdWVzdC5QT1NULmdldCgndXNlcm5hbWUnLCAnX2Fub251c2VyJyksIGVtYWlsID0gcmVxdWVzdC5QT1NULmdldCgnZW1haWwnLCAnJyksIHBhc3N3b3JkID0gIm5vcGFzcyIpCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS93aWRnZXRzLnB5IGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJndWkvd2lkZ2V0cy5weQppbmRleCA2NDVmNDU4Li5jZWZmNTI5IDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcmd1aS93aWRnZXRzLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVyZ3VpL3dpZGdldHMucHkKQEAgLTIyLDcgKzIyLDcgQEAKIGZyb20gdG9hc3Rlcmd1aS50ZW1wbGF0ZXRhZ3MucHJvamVjdHRhZ3MgaW1wb3J0IHNlY3RvaG1zLCBnZXRfdGFza3MKIGZyb20gdG9hc3Rlcmd1aS50ZW1wbGF0ZXRhZ3MucHJvamVjdHRhZ3MgaW1wb3J0IGpzb24gYXMgdGVtcGxhdGVfanNvbgogZnJvbSBkamFuZ28uaHR0cCBpbXBvcnQgSnNvblJlc3BvbnNlCi1mcm9tIGRqYW5nby5jb3JlLnVybHJlc29sdmVycyBpbXBvcnQgcmV2ZXJzZQorZnJvbSBkamFuZ28udXJscyBpbXBvcnQgcmV2ZXJzZQogCiBpbXBvcnQgdHlwZXMKIGltcG9ydCBqc29uCmRpZmYgLS1naXQgYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vbWFuYWdlbWVudC9jb21tYW5kcy9idWlsZGRlbGV0ZS5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkZGVsZXRlLnB5CmluZGV4IGMyZDc3M2EuLjkzOTE5ZGUgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkZGVsZXRlLnB5CisrKyBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkZGVsZXRlLnB5CkBAIC0yLDEyICsyLDEwIEBACiAjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wLW9ubHkKICMKIAotZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50LmJhc2UgaW1wb3J0IEJhc2VDb21tYW5kLCBDb21tYW5kRXJyb3IKK2Zyb20gZGphbmdvLmNvcmUubWFuYWdlbWVudC5iYXNlIGltcG9ydCBCYXNlQ29tbWFuZAogZnJvbSBkamFuZ28uY29yZS5leGNlcHRpb25zIGltcG9ydCBPYmplY3REb2VzTm90RXhpc3QKIGZyb20gb3JtLm1vZGVscyBpbXBvcnQgQnVpbGQKIGZyb20gZGphbmdvLmRiIGltcG9ydCBPcGVyYXRpb25hbEVycm9yCi1pbXBvcnQgb3MKLQogCiAKIGNsYXNzIENvbW1hbmQoQmFzZUNvbW1hbmQpOgpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL21hbmFnZW1lbnQvY29tbWFuZHMvYnVpbGRpbXBvcnQucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vbWFuYWdlbWVudC9jb21tYW5kcy9idWlsZGltcG9ydC5weQppbmRleCA0MDhhZDQ0Li41OWRhNmZmIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vbWFuYWdlbWVudC9jb21tYW5kcy9idWlsZGltcG9ydC5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vbWFuYWdlbWVudC9jb21tYW5kcy9idWlsZGltcG9ydC5weQpAQCAtMzEsMTIgKzMxLDEwIEBACiAKICMgLi4vYml0YmFrZS9saWIvdG9hc3Rlci9tYW5hZ2UucHkgYnVpbGRpbXBvcnQgLS1uYW1lPXRlc3QgLS1wYXRoPWBwd2RgIC0tY2FsbGJhY2s9IiIgLS1jb21tYW5kPWltcG9ydAogCi1mcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQuYmFzZSBpbXBvcnQgQmFzZUNvbW1hbmQsIENvbW1hbmRFcnJvcgotZnJvbSBkamFuZ28uY29yZS5leGNlcHRpb25zIGltcG9ydCBPYmplY3REb2VzTm90RXhpc3QKLWZyb20gb3JtLm1vZGVscyBpbXBvcnQgUHJvamVjdE1hbmFnZXIsIFByb2plY3QsIFJlbGVhc2UsIFByb2plY3RWYXJpYWJsZQorZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50LmJhc2UgaW1wb3J0IEJhc2VDb21tYW5kCitmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IFByb2plY3QsIFJlbGVhc2UsIFByb2plY3RWYXJpYWJsZQogZnJvbSBvcm0ubW9kZWxzIGltcG9ydCBMYXllciwgTGF5ZXJfVmVyc2lvbiwgTGF5ZXJTb3VyY2UsIFByb2plY3RMYXllcgogZnJvbSB0b2FzdGVyZ3VpLmFwaSBpbXBvcnQgc2Nhbl9sYXllcl9jb250ZW50Ci1mcm9tIGRqYW5nby5kYiBpbXBvcnQgT3BlcmF0aW9uYWxFcnJvcgogCiBpbXBvcnQgb3MKIGltcG9ydCByZQpAQCAtMTE2LDYgKzExNCwxNSBAQAogICAgICAgICAgICAgaGVscD0nY29tbWFuZCAoY29uZmlndXJlLHJlY29uZmlndXJlLGltcG9ydCknLAogICAgICAgICAgICAgKQogCisgICAgZGVmIGdldF92YXIoc2VsZiwgdmFybmFtZSk6CisgICAgICAgIHZhbHVlID0gc2VsZi52YXJzLmdldCh2YXJuYW1lLCAnJykKKyAgICAgICAgaWYgdmFsdWU6CisgICAgICAgICAgICB2YXJyZWZzID0gcmUuZmluZGFsbCgnXCR7KFtefV0qKX0nLCB2YWx1ZSkKKyAgICAgICAgICAgIGZvciByZWYgaW4gdmFycmVmczoKKyAgICAgICAgICAgICAgICBpZiByZWYgaW4gc2VsZi52YXJzOgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoJyR7JXN9JyAlIHJlZiwgc2VsZi52YXJzW3JlZl0pCisgICAgICAgIHJldHVybiB2YWx1ZQorCiAgICAgIyBFeHRyYWN0IHRoZSBiYiB2YXJpYWJsZXMgZnJvbSBhIGNvbmYgZmlsZQogICAgIGRlZiBzY2FuX2NvbmYoc2VsZixmbik6CiAgICAgICAgIHZhcnMgPSBzZWxmLnZhcnMKQEAgLTI0Myw3ICsyNTAsNyBAQAogICAgICMgQXBwbHkgdGFibGUgb2YgYWxsIGxheWVyIHZlcnNpb25zCiAgICAgZGVmIGV4dHJhY3RfYmJsYXllcnMoc2VsZik6CiAgICAgICAgICMgc2V0IHVwIHRoZSBjb25zdGFudHMKLSAgICAgICAgYmJsYXllcl9zdHIgPSBzZWxmLnZhcnNbJ0JCTEFZRVJTJ10KKyAgICAgICAgYmJsYXllcl9zdHIgPSBzZWxmLmdldF92YXIoJ0JCTEFZRVJTJykKICAgICAgICAgVE9BU1RFUl9ESVIgPSBvcy5lbnZpcm9uLmdldCgnVE9BU1RFUl9ESVInKQogICAgICAgICBJTlNUQUxMX0NMT05FX1BSRUZJWCA9IG9zLnBhdGguZGlybmFtZShUT0FTVEVSX0RJUikgKyAiLyIKICAgICAgICAgVE9BU1RFUl9DTE9ORV9QUkVGSVggPSBUT0FTVEVSX0RJUiArICIvX3RvYXN0ZXJfY2xvbmVzLyIKQEAgLTQyMyw2ICs0MzAsNyBAQAogCiAgICAgIyBTY2FuIHRoZSBwcm9qZWN0J3MgY29uZiBmaWxlcyAoaWYgYW55KQogICAgIGRlZiBzY2FuX2NvbmZfdmFyaWFibGVzKHNlbGYscHJvamVjdF9wYXRoKToKKyAgICAgICAgc2VsZi52YXJzWydUT1BESVInXSA9IHByb2plY3RfcGF0aAogICAgICAgICAjIHNjYW4gdGhlIHByb2plY3QncyBzZXR0aW5ncywgYWRkIGFueSBuZXcgbGF5ZXJzIG9yIHZhcmlhYmxlcwogICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZSgiJXMvY29uZi9sb2NhbC5jb25mIiAlIHByb2plY3RfcGF0aCk6CiAgICAgICAgICAgICBzZWxmLnNjYW5fY29uZigiJXMvY29uZi9sb2NhbC5jb25mIiAlIHByb2plY3RfcGF0aCkKQEAgLTQ2OCw3ICs0NzYsNiBAQAogICAgICAgICAgICAgICAgICAgICByZWxlYXNlX25hbWUgPSAnTm9uZScgaWYgbm90IHBsLmxheWVyY29tbWl0LnJlbGVhc2UgZWxzZSBwbC5sYXllcmNvbW1pdC5yZWxlYXNlLm5hbWUKICAgICAgICAgICAgICAgICAgICAgcHJpbnQoIiBBRlRFUiA6UHJvamVjdExheWVyPSVzLCVzLCVzLCVzIiAlIChwbC5sYXllcmNvbW1pdC5sYXllci5uYW1lLHJlbGVhc2VfbmFtZSxwbC5sYXllcmNvbW1pdC5icmFuY2gscGwubGF5ZXJjb21taXQuY29tbWl0KSkKIAotCiAgICAgZGVmIGhhbmRsZShzZWxmLCAqYXJncywgKipvcHRpb25zKToKICAgICAgICAgcHJvamVjdF9uYW1lID0gb3B0aW9uc1snbmFtZSddCiAgICAgICAgIHByb2plY3RfcGF0aCA9IG9wdGlvbnNbJ3BhdGgnXQpAQCAtNTA3LDcgKzUxNCw3IEBACiAgICAgICAgIGRlZmF1bHRfcmVsZWFzZSA9IFJlbGVhc2Uub2JqZWN0cy5nZXQoaWQ9MSkKIAogICAgICAgICAjIFNBTklUWTogaWYgJ3JlY29uZmlnJyBidXQgcHJvamVjdCBkb2VzIG5vdCBleGlzdCAoZGVsZXRlZCBleHRlcm5hbGx5KSwgc3dpdGNoIHRvICdpbXBvcnQnCi0gICAgICAgIGlmICgicmVjb25maWd1cmUiID09IG9wdGlvbnNbJ2NvbW1hbmQnXSkgYW5kIChOb25lID09IHByb2plY3QpOgorICAgICAgICBpZiAoInJlY29uZmlndXJlIiA9PSBvcHRpb25zWydjb21tYW5kJ10pIGFuZCBwcm9qZWN0IGlzIE5vbmU6CiAgICAgICAgICAgICBvcHRpb25zWydjb21tYW5kJ10gPSAnaW1wb3J0JwogCiAgICAgICAgICMgJ0NvbmZpZ3VyZSc6CkBAIC01NTMsNiArNTYwLDcgQEAKICAgICAgICAgICAgICMgcHJlc2V0IHRoZSBtb2RlIGFuZCBkZWZhdWx0IGltYWdlIHJlY2lwZQogICAgICAgICAgICAgcHJvamVjdC5zZXRfdmFyaWFibGUoUHJvamVjdC5QUk9KRUNUX1NQRUNJRklDX0lTTkVXLFByb2plY3QuUFJPSkVDVF9TUEVDSUZJQ19ORVcpCiAgICAgICAgICAgICBwcm9qZWN0LnNldF92YXJpYWJsZShQcm9qZWN0LlBST0pFQ1RfU1BFQ0lGSUNfREVGQVVMVElNQUdFLCJjb3JlLWltYWdlLW1pbmltYWwiKQorCiAgICAgICAgICAgICAjIEFzc2VydCBhbnkgZXh0ZW5kZWQvY3VzdG9tIGFjdGlvbnMgb3IgdmFyaWFibGVzIGZvciBuZXcgbm9uLVRvYXN0ZXIgcHJvamVjdHMKICAgICAgICAgICAgIGlmIG5vdCBsZW4oc2VsZi50b2FzdGVyX3ZhcnMpOgogICAgICAgICAgICAgICAgIHBhc3MKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkc2xpc3QucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vbWFuYWdlbWVudC9jb21tYW5kcy9idWlsZHNsaXN0LnB5CmluZGV4IDFlZDIwMjIuLjNhZDUyODkgMTAwNjQ0Ci0tLSBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9tYW5hZ2VtZW50L2NvbW1hbmRzL2J1aWxkc2xpc3QucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL21hbmFnZW1lbnQvY29tbWFuZHMvYnVpbGRzbGlzdC5weQpAQCAtMiw5ICsyLDggQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIwogCi1mcm9tIGRqYW5nby5jb3JlLm1hbmFnZW1lbnQuYmFzZSBpbXBvcnQgQmFzZUNvbW1hbmQsIENvbW1hbmRFcnJvcgorZnJvbSBkamFuZ28uY29yZS5tYW5hZ2VtZW50LmJhc2UgaW1wb3J0IEJhc2VDb21tYW5kCiBmcm9tIG9ybS5tb2RlbHMgaW1wb3J0IEJ1aWxkCi1pbXBvcnQgb3MKIAogCiAKZGlmZiAtLWdpdCBhL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9zZXR0aW5ncy5weSBiL3Bva3kvYml0YmFrZS9saWIvdG9hc3Rlci90b2FzdGVybWFpbi9zZXR0aW5ncy5weQppbmRleCA3NDUwMWZhLi5hNGIzNzBjIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vc2V0dGluZ3MucHkKKysrIGIvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL3NldHRpbmdzLnB5CkBAIC0xODksMTUgKzE4OSwxNiBAQAogICAgIH0sCiBdCiAKLU1JRERMRVdBUkVfQ0xBU1NFUyA9ICgKK01JRERMRVdBUkUgPSBbCiAgICAgJ2RqYW5nby5taWRkbGV3YXJlLmNvbW1vbi5Db21tb25NaWRkbGV3YXJlJywKICAgICAnZGphbmdvLmNvbnRyaWIuc2Vzc2lvbnMubWlkZGxld2FyZS5TZXNzaW9uTWlkZGxld2FyZScsCiAgICAgJ2RqYW5nby5taWRkbGV3YXJlLmNzcmYuQ3NyZlZpZXdNaWRkbGV3YXJlJywKICAgICAnZGphbmdvLmNvbnRyaWIuYXV0aC5taWRkbGV3YXJlLkF1dGhlbnRpY2F0aW9uTWlkZGxld2FyZScsCiAgICAgJ2RqYW5nby5jb250cmliLm1lc3NhZ2VzLm1pZGRsZXdhcmUuTWVzc2FnZU1pZGRsZXdhcmUnLAotICAgICMgVW5jb21tZW50IHRoZSBuZXh0IGxpbmUgZm9yIHNpbXBsZSBjbGlja2phY2tpbmcgcHJvdGVjdGlvbjoKLSAgICAjICdkamFuZ28ubWlkZGxld2FyZS5jbGlja2phY2tpbmcuWEZyYW1lT3B0aW9uc01pZGRsZXdhcmUnLAotKQorICAgICdkamFuZ28uY29udHJpYi5hdXRoLm1pZGRsZXdhcmUuQXV0aGVudGljYXRpb25NaWRkbGV3YXJlJywKKyAgICAnZGphbmdvLmNvbnRyaWIubWVzc2FnZXMubWlkZGxld2FyZS5NZXNzYWdlTWlkZGxld2FyZScsCisgICAgJ2RqYW5nby5jb250cmliLnNlc3Npb25zLm1pZGRsZXdhcmUuU2Vzc2lvbk1pZGRsZXdhcmUnLAorXQogCiBDQUNIRVMgPSB7CiAgICAgIyAgICAgICAgJ2RlZmF1bHQnOiB7CkBAIC0yNDgsNyArMjQ5LDcgQEAKIGlmIG9zLmVudmlyb24uZ2V0KCdUT0FTVEVSX0RFVkVMJywgTm9uZSkgaXMgbm90IE5vbmU6CiAgICAgdHJ5OgogICAgICAgICBpbXBvcnQgZnJlc2gKLSAgICAgICAgTUlERExFV0FSRV9DTEFTU0VTID0gKCJmcmVzaC5taWRkbGV3YXJlLkZyZXNoTWlkZGxld2FyZSIsKSArIE1JRERMRVdBUkVfQ0xBU1NFUworICAgICAgICBNSURETEVXQVJFID0gWyJmcmVzaC5taWRkbGV3YXJlLkZyZXNoTWlkZGxld2FyZSIsXSArIE1JRERMRVdBUkUKICAgICAgICAgSU5TVEFMTEVEX0FQUFMgPSBJTlNUQUxMRURfQVBQUyArICgnZnJlc2gnLCkKICAgICAgICAgRlJFU0hfRU5BQkxFRCA9IFRydWUKICAgICBleGNlcHQ6CkBAIC0yNTgsOCArMjU5LDggQEAKIGlmIG9zLmVudmlyb24uZ2V0KCdUT0FTVEVSX0RFVkVMJywgTm9uZSkgaXMgbm90IE5vbmU6CiAgICAgdHJ5OgogICAgICAgICBpbXBvcnQgZGVidWdfdG9vbGJhciwgZGVidWdfcGFuZWwKLSAgICAgICAgTUlERExFV0FSRV9DTEFTU0VTID0gKCdkZWJ1Z19wYW5lbC5taWRkbGV3YXJlLkRlYnVnUGFuZWxNaWRkbGV3YXJlJywpICsgTUlERExFV0FSRV9DTEFTU0VTCi0gICAgICAgICNNSURETEVXQVJFX0NMQVNTRVMgPSBNSURETEVXQVJFX0NMQVNTRVMgKyAoJ2RlYnVnX3Rvb2xiYXIubWlkZGxld2FyZS5EZWJ1Z1Rvb2xiYXJNaWRkbGV3YXJlJywpCisgICAgICAgIE1JRERMRVdBUkUgPSBbJ2RlYnVnX3BhbmVsLm1pZGRsZXdhcmUuRGVidWdQYW5lbE1pZGRsZXdhcmUnLF0gKyBNSURETEVXQVJFCisgICAgICAgICNNSURETEVXQVJFID0gTUlERExFV0FSRSArIFsnZGVidWdfdG9vbGJhci5taWRkbGV3YXJlLkRlYnVnVG9vbGJhck1pZGRsZXdhcmUnLF0KICAgICAgICAgSU5TVEFMTEVEX0FQUFMgPSBJTlNUQUxMRURfQVBQUyArICgnZGVidWdfdG9vbGJhcicsJ2RlYnVnX3BhbmVsJywpCiAgICAgICAgIERFQlVHX1BBTkVMX0VOQUJMRUQgPSBUcnVlCiAKQEAgLTM1Miw1ICszNTMsMyBAQAogY29ubmVjdGlvbl9jcmVhdGVkLmNvbm5lY3QoYWN0aXZhdGVfc3luY2hyb25vdXNfb2ZmKQogIwogCi0KLQpkaWZmIC0tZ2l0IGEvcG9reS9iaXRiYWtlL2xpYi90b2FzdGVyL3RvYXN0ZXJtYWluL3VybHMucHkgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vdXJscy5weQppbmRleCBhYzc3YmMzLi41ZmI1MjBiIDEwMDY0NAotLS0gYS9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vdXJscy5weQorKysgYi9wb2t5L2JpdGJha2UvbGliL3RvYXN0ZXIvdG9hc3Rlcm1haW4vdXJscy5weQpAQCAtNTEsNyArNTEsNyBAQAogCiB1cmxwYXR0ZXJucyA9IFsKICAgICAjIFVuY29tbWVudCB0aGUgbmV4dCBsaW5lIHRvIGVuYWJsZSB0aGUgYWRtaW46Ci0gICAgdXJsKHInXmFkbWluLycsIGluY2x1ZGUoYWRtaW4uc2l0ZS51cmxzKSksCisgICAgdXJsKHInXmFkbWluLycsIGFkbWluLnNpdGUudXJscyksCiBdICsgdXJscGF0dGVybnMKIAogIyBBdXRvbWF0aWNhbGx5IGRpc2NvdmVyIHVybHMucHkgaW4gdmFyaW91cyBhcHBzLCBiZXNpZGUgb3VyIG93bgpAQCAtNjksNyArNjksNyBAQAogICAgICAgICAjIG1ha2Ugc3VyZSB3ZSBkb24ndCBoYXZlIHRoaXMgbW9kdWxlIG5hbWUgaW4KICAgICAgICAgY29uZmxpY3QgPSBGYWxzZQogICAgICAgICBmb3IgcCBpbiB1cmxwYXR0ZXJuczoKLSAgICAgICAgICAgIGlmIHAucmVnZXgucGF0dGVybiA9PSAnXicgKyBtb2R1bGVuYW1lICsgJy8nOgorICAgICAgICAgICAgaWYgcC5wYXR0ZXJuLnJlZ2V4LnBhdHRlcm4gPT0gJ14nICsgbW9kdWxlbmFtZSArICcvJzoKICAgICAgICAgICAgICAgICBjb25mbGljdCA9IFRydWUKICAgICAgICAgaWYgbm90IGNvbmZsaWN0OgogICAgICAgICAgICAgdXJscGF0dGVybnMuaW5zZXJ0KDAsIHVybChyJ14nICsgbW9kdWxlbmFtZSArICcvJywgaW5jbHVkZSAoIG1vZHVsZW5hbWUgKyAnLnVybHMnKSkpCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vTWFrZWZpbGUgYi9wb2t5L2RvY3VtZW50YXRpb24vTWFrZWZpbGUKaW5kZXggNTI1YTczMC4uMTU2NDRiZiAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL01ha2VmaWxlCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9NYWtlZmlsZQpAQCAtNzYsNiArNzYsMTEgQEAKICMgZXhhbXBsZSBwdWJsaXNoZXMgdGhlIDEuMiB2ZXJzaW9uIG9mIHRoZSBQREYgYW5kIEhUTUwgWVAgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsCiAjIGZvciB0aGUgJ2RlbnppbCcgYnJhbmNoLgogIworIyBJTiBNRU1PUklBTTogVGhpcyBjb21tZW50IGlzIHRvIHJlbWVtYmVyIFNjb3R0IFJpZmVuYmFyayAoc2NvdHRyaWYpLCB3aG9tIHdlIGxvc3QKKyMgaW4gSmFudWFyeSwgMjAyMC4gU2NvdHQgd2FzIHRoZSBwcmltYXJ5IHRlY2huaWNhbCB3cml0ZXIgZm9yIHRoZSBZb2N0byBQcm9qZWN0IGZvcgorIyBvdmVyIDkgeWVhcnMuIEluIHRoYXQgdGltZSwgaGUgY29udHJpYnV0ZWQgbWFueSB0aG91c2FuZHMgb2YgcGF0Y2hlcywgYnVpbHQgdGhpcworIyBkb2N1bWVudGF0aW9uIHRyZWUsIGFuZCBlbmFibGVkIHRlbnMgb2YgdGhvdXNhbmRzIG9mIGRldmVsb3BlcnMgdG8gc3VjY2VlZCB3aXRoCisjIGVtYmVkZGVkIExpbnV4LiBIZSByYW4gdGhpcyBNYWtlZmlsZSBtYW55IHRob3VzYW5kcyBvZiB0aW1lcy4gR29kc3BlZWQsIER1ZGUuCiAKIGlmZXEgKCQoRE9DKSxicmllZi15b2N0b3Byb2plY3RxcykKIFhTTFRPUFRTID0gLS1zdHJpbmdwYXJhbSBodG1sLnN0eWxlc2hlZXQgYnJpZWYteW9jdG9wcm9qZWN0cXMtc3R5bGUuY3NzIFwKQEAgLTQxNCw4ICs0MTksOCBAQAogICAgICAgICAgICAgZWNobyAiICI7IFwKICAgICAgICAgICAgIGVjaG8gIioqKioqKioqIFB1Ymxpc2hpbmcgIiQoRE9DKSIuaHRtbCI7IFwKICAgICAgICAgICAgIGVjaG8gIiAiOyBcCi0gICAgICAgICAgICBzY3AgLXIgJChNQU5VQUxTKSAkKFNUWUxFU0hFRVQpIGRvY3MueXA6L3Zhci93d3cvd3d3LnlvY3RvcHJvamVjdC5vcmctZG9jcy8kKFZFUikvJChET0MpOyBcCi0gICAgICAgICAgICBjZCAkKERPQyk7IHNjcCAtciAkKEZJR1VSRVMpIGRvY3MueXA6L3Zhci93d3cvd3d3LnlvY3RvcHJvamVjdC5vcmctZG9jcy8kKFZFUikvJChET0MpOyBcCisgICAgICAgICAgICBzY3AgLXIgJChNQU5VQUxTKSAkKFNUWUxFU0hFRVQpIHd3dy55b2N0b3Byb2plY3Qub3JnOi92YXIvd3d3L3d3dy55b2N0b3Byb2plY3Qub3JnLWRvY3MvJChWRVIpLyQoRE9DKTsgXAorICAgICAgICAgICAgY2QgJChET0MpOyBzY3AgLXIgJChGSUdVUkVTKSB3d3cueW9jdG9wcm9qZWN0Lm9yZzovdmFyL3d3dy93d3cueW9jdG9wcm9qZWN0Lm9yZy1kb2NzLyQoVkVSKS8kKERPQyk7IFwKIAllbHNlIFwKICAgICAgICAgICBlY2hvICIgIjsgXAogICAgICAgICAgIGVjaG8gJChET0MpIi5odG1sIG1pc3NpbmcuICBHZW5lcmF0ZSB0aGUgZmlsZSBmaXJzdCB0aGVuIHRyeSBhZ2Fpbi4iOyBcCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLnhtbAppbmRleCAxZGFlYjI1Li4zYzgzYWZkIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy54bWwKQEAgLTU1LDEwICs1NSwxOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgWW91IGNhbm5vdCB1c2UgYSBidWlsZCBob3N0IHRoYXQgaXMgdXNpbmcgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9XaW5kb3dzX1N1YnN5c3RlbV9mb3JfTGludXgnPldpbmRvd3MgU3Vic3lzdGVtIGZvciBMaW51eDwvdWxpbms+Ci0gICAgICAgICAgICAgICAgICAgICAgICAoV1NMKS4KLSAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggV1NMLgorICAgICAgICAgICAgICAgICAgICAgICAgWW91IG1heSB1c2UgV2luZG93cyBTdWJzeXN0ZW0gRm9yIExpbnV4IHYyIHRvIHNldCB1cCBhIGJ1aWxkCisgICAgICAgICAgICAgICAgICAgICAgICBob3N0IHVzaW5nIFdpbmRvd3MgMTAuCisgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIFlvY3RvIFByb2plY3QgaXMgbm90IGNvbXBhdGlibGUgd2l0aCBXU0x2MSwgaXQgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSBidXQgbm90IG9mZmljaWFsbHkgc3VwcG9ydGVkIG5vciB2YWxpZGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBXU0x2MiwgaWYgeW91IHN0aWxsIGRlY2lkZSB0byB1c2UgV1NMIHBsZWFzZSB1cGdyYWRlCisgICAgICAgICAgICAgICAgICAgICAgICAgIHRvIFdTTHYyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjc2V0dGluZy11cC10by11c2Utd3NsJz5TZXR0aW5nIFVwIHRvIFVzZSBXaW5kb3dzIFN1YnN5c3RlbSBGb3IgTGludXg8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsIGZvciBtb3JlCisgICAgICAgICAgICAgICAgICAgICAgICBpbmZvcm1hdGlvbi4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgPC9ub3RlPgpAQCAtOTksMTcgKzEwNywyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEdpdCAxLjguMy4xIG9yIGdyZWF0ZXIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXIgMS4yNyBvciBncmVhdGVyCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdGFyIDEuMjggb3IgZ3JlYXRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiAzLjQuMCBvciBncmVhdGVyLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiAzLjUuMCBvciBncmVhdGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2NjIDUuMCBvciBncmVhdGVyLgorICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGJ1aWxkIGhvc3QgZG9lcyBub3QgbWVldCBhbnkgb2YgdGhlc2UgdGhyZWUgbGlzdGVkCiAgICAgICAgICAgICAgICAgICAgIHZlcnNpb24gcmVxdWlyZW1lbnRzLCB5b3UgY2FuIHRha2Ugc3RlcHMgdG8gcHJlcGFyZSB0aGUKICAgICAgICAgICAgICAgICAgICAgc3lzdGVtIHNvIHRoYXQgeW91IGNhbiBzdGlsbCB1c2UgdGhlIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlcXVpcmVkLWdpdC10YXItYW5kLXB5dGhvbi12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIGFuZCBQeXRob24gVmVyc2lvbnM8L3VsaW5rPiIKKyAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3JlcXVpcmVkLWdpdC10YXItcHl0aG9uLWFuZC1nY2MtdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBQeXRob24gYW5kIGdjYyBWZXJzaW9uczwvdWxpbms+IgogICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWwgZm9yIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgpAQCAtMjY2LDcgKzI3Nyw3IEBACiAgICAgICAgICBtZXRhLXRvb2xjaGFpbgogICAgICAgICAgbWV0YS1pZGUtc3VwcG9ydAogCi0gICAgIFlvdSBjYW4gYWxzbyBydW4gZ2VuZXJhdGVkIHFlbXUgaW1hZ2VzIHdpdGggYSBjb21tYW5kIGxpa2UgJ3J1bnFlbXUgcWVtdXg4NicKKyAgICAgWW91IGNhbiBhbHNvIHJ1biBnZW5lcmF0ZWQgcWVtdSBpbWFnZXMgd2l0aCBhIGNvbW1hbmQgbGlrZSAncnVucWVtdSBxZW11eDg2LTY0JwogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIEFtb25nIG90aGVyIHRoaW5ncywgdGhlIHNjcmlwdCBjcmVhdGVzIHRoZQogICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LApAQCAtMzMyLDcgKzM0Myw3IEBACiAgICAgICAgICAgICAgICAgICAgIFFFTVUsIHdoaWNoIGlzIGEgUXVpY2sgRU1VbGF0b3IgdGhhdCBzaGlwcyB3aXRoCiAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0OgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgcnVucWVtdSBxZW11eDg2CisgICAgICQgcnVucWVtdSBxZW11eDg2LTY0CiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gbGVhcm4gbW9yZSBhYm91dCBydW5uaW5nIFFFTVUsIHNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9IiZZT0NUT19ET0NTX0RFVl9VUkw7I2Rldi1tYW51YWwtcWVtdSI+VXNpbmcgdGhlIFF1aWNrIEVNVWxhdG9yIChRRU1VKTwvdWxpbms+IgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AtZ3VpZGUueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AtZ3VpZGUueG1sCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggZGQwYzc2YS4uYTE4OTYwNgotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC1ndWlkZS54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AtZ3VpZGUueG1sCkBAIC0yMiwzMyArMjIsMjcgQEAKIAogICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICAgICA8YXV0aG9yPgotICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2NvdHQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgogICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT4mT1JHTkFNRTs8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICA8ZW1haWw+c3JpZmVuYmFya0BnbWFpbC5jb208L2VtYWlsPgorICAgICAgICAgICAgICAgIDxlbWFpbD4mT1JHRU1BSUw7PC9lbWFpbD4KICAgICAgICAgICAgIDwvYXV0aG9yPgogICAgICAgICA8L2F1dGhvcmdyb3VwPgogCiAgICAgICAgIDxyZXZoaXN0b3J5PgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MC45PC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+MjQgTm92ZW1iZXIgMjAxMDwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IGRyYWZ0IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMC45IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPGRhdGU+Tm92ZW1iZXIgMjAxMDwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMC45IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS4wPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+NiBBcHJpbCAyMDExPC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTE8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuMCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KLSAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuMC4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+MjMgTWF5IDIwMTE8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuMC4xIFJlbGVhc2UuPC9yZXZyZW1hcms+Ci0gICAgICAgICAgICA8L3JldmlzaW9uPgotICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS4xPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+NiBPY3RvYmVyIDIwMTE8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDExPC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CkBAIC03MiwxMSArNjYsNiBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjUuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxNDwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS41LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjY8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE0PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KQEAgLTEzMyw5ICsxMjIsMTQgQEAKICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjA8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxOTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKICAgICA8Y29weXJpZ2h0PgpAQCAtMTU3LDcgKzE1MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCkBAIC0xNzQsMTggKzE2OCwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgogICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBzZXQgYnkgdXNpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICJBQ1RJVkUgUkVMRUFTRVMgRE9DVU1FTlRBVElPTiIgb3IgIkRPQ1VNRU5UUyBBUkNISVZFIgogICAgICAgICAgICAgICAgICAgICAgICBwdWxsLWRvd24gbWVudXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCi0gICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAob3IgYW55IG90aGVyIFlvY3RvIFByb2plY3QpIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1haWxpbmcgbGlzdCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9jc0BsaXN0cy55b2N0b3Byb2plY3Qub3JnPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgbG9nIGludG8gdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICA8L25vdGU+CiAgICAgPC9sZWdhbG5vdGljZT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9ic3AtZ3VpZGUvYnNwLnhtbAppbmRleCA1OGY1NzMzLi45NmMwNDU1IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vYnNwLWd1aWRlL2JzcC54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL2JzcC1ndWlkZS9ic3AueG1sCkBAIC0xOSw3ICsxOSw3IEBACiA8L3BhcmE+CiAKIDxwYXJhPgotICAgIFRoaXMgZ3VpZGUgcHJlc2VudHMgaW5mb3JtYXRpb24gYWJvdXQgQlNQIExheWVycywgZGVmaW5lcyBhIHN0cnVjdHVyZSBmb3IgY29tcG9uZW50cworICAgIFRoaXMgZ3VpZGUgcHJlc2VudHMgaW5mb3JtYXRpb24gYWJvdXQgQlNQIGxheWVycywgZGVmaW5lcyBhIHN0cnVjdHVyZSBmb3IgY29tcG9uZW50cwogICAgIHNvIHRoYXQgQlNQcyBmb2xsb3cgYSBjb21tb25seSB1bmRlcnN0b29kIGxheW91dCwgZGlzY3Vzc2VzIGhvdyB0byBjdXN0b21pemUKICAgICBhIHJlY2lwZSBmb3IgYSBCU1AsIGFkZHJlc3NlcyBCU1AgbGljZW5zaW5nLCBhbmQgcHJvdmlkZXMgaW5mb3JtYXRpb24gdGhhdAogICAgIHNob3dzIHlvdSBob3cgdG8gY3JlYXRlIGEKQEAgLTM0LDcgKzM0LDcgQEAKICAgICA8cGFyYT4KICAgICAgICAgQSBCU1AgY29uc2lzdHMgb2YgYSBmaWxlIHN0cnVjdHVyZSBpbnNpZGUgYSBiYXNlIGRpcmVjdG9yeS4KICAgICAgICAgQ29sbGVjdGl2ZWx5LCB5b3UgY2FuIHRoaW5rIG9mIHRoZSBiYXNlIGRpcmVjdG9yeSwgaXRzIGZpbGUgc3RydWN0dXJlLAotICAgICAgICBhbmQgdGhlIGNvbnRlbnRzIGFzIGEgQlNQIExheWVyLgorICAgICAgICBhbmQgdGhlIGNvbnRlbnRzIGFzIGEgPGZpcnN0dGVybT5CU1AgbGF5ZXI8L2ZpcnN0dGVybT4uCiAgICAgICAgIEFsdGhvdWdoIG5vdCBhIHN0cmljdCByZXF1aXJlbWVudCwgQlNQIGxheWVycyBpbiB0aGUgWW9jdG8gUHJvamVjdAogICAgICAgICB1c2UgdGhlIGZvbGxvd2luZyB3ZWxsLWVzdGFibGlzaGVkIG5hbWluZyBjb252ZW50aW9uOgogICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC02OSw5ICs2OSw5IEBACiAgICAgICAgIEVhY2ggcmVwb3NpdG9yeSBpcyBhIEJTUCBsYXllciBzdXBwb3J0ZWQgYnkgdGhlIFlvY3RvIFByb2plY3QKICAgICAgICAgKGUuZy4gPGZpbGVuYW1lPm1ldGEtcmFzcGJlcnJ5cGk8L2ZpbGVuYW1lPiBhbmQKICAgICAgICAgPGZpbGVuYW1lPm1ldGEtaW50ZWw8L2ZpbGVuYW1lPikuCi0gICAgICAgIEVhY2ggb2YgdGhlc2UgbGF5ZXJzIGlzIGEgcmVwb3NpdG9yeSB1bnRvIGl0c2VsZiBhbmQgY2xpY2tpbmcgb24gYQotICAgICAgICBsYXllciByZXZlYWxzIGluZm9ybWF0aW9uIHRoYXQgaW5jbHVkZXMgdHdvIGxpbmtzIGZyb20gd2hpY2ggeW91IGNhbiBjaG9vc2UKLSAgICAgICAgdG8gc2V0IHVwIGEgY2xvbmUgb2YgdGhlIGxheWVyJ3MgcmVwb3NpdG9yeSBvbiB5b3VyIGxvY2FsIGhvc3Qgc3lzdGVtLgorICAgICAgICBFYWNoIG9mIHRoZXNlIGxheWVycyBpcyBhIHJlcG9zaXRvcnkgdW50byBpdHNlbGYgYW5kIGNsaWNraW5nIG9uCisgICAgICAgIHRoZSBsYXllciBuYW1lIGRpc3BsYXlzIHR3byBVUkxzIGZyb20gd2hpY2ggeW91IGNhbgorICAgICAgICBjbG9uZSB0aGUgbGF5ZXIncyByZXBvc2l0b3J5IHRvIHlvdXIgbG9jYWwgc3lzdGVtLgogICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBjbG9uZXMgdGhlIFJhc3BiZXJyeSBQaSBCU1AgbGF5ZXI6CiAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBnaXQgY2xvbmUgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbWV0YS1yYXNwYmVycnlwaQpAQCAtODMsMTIgKzgzLDEzIEBACiAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXlvY3RvLWJzcDwvZmlsZW5hbWU+IGxheWVyIGlzIHBhcnQgb2YgdGhlCiAgICAgICAgIHNoaXBwZWQgPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPiByZXBvc2l0b3J5LgogICAgICAgICBUaGUgPGZpbGVuYW1lPm1ldGEteW9jdG8tYnNwPC9maWxlbmFtZT4gbGF5ZXIgbWFpbnRhaW5zIHNldmVyYWwKLSAgICAgICAgQlNQcyBzdWNoIGFzIHRoZSBCZWFnbGVib25lLCBFZGdlUm91dGVyLCBhbmQgZ2VuZXJpYyB2ZXJzaW9ucyBvZgorICAgICAgICAicmVmZXJlbmNlIiBCU1BzIGluY2x1ZGluZyB0aGUgQVJNLWJhc2VkIEJlYWdsZWJvbmUsIE1JUFMtYmFzZWQKKyAgICAgICAgRWRnZVJvdXRlciwgYW5kIGdlbmVyaWMgdmVyc2lvbnMgb2YKICAgICAgICAgYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBJQSBtYWNoaW5lcy4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBCU1AgZGV2ZWxvcG1lbnQgd29ya2Zsb3csIHNlZSB0aGUKKyAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHR5cGljYWwgQlNQIGRldmVsb3BtZW50IHdvcmtmbG93LCBzZWUgdGhlCiAgICAgICAgICI8bGluayBsaW5rZW5kPSdkZXZlbG9waW5nLWEtYm9hcmQtc3VwcG9ydC1wYWNrYWdlLWJzcCc+RGV2ZWxvcGluZyBhIEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKTwvbGluaz4iCiAgICAgICAgIHNlY3Rpb24uCiAgICAgICAgIEZvciBtb3JlIGluZm9ybWF0aW9uIG9uIGhvdyB0byBzZXQgdXAgYSBsb2NhbCBjb3B5IG9mIHNvdXJjZSBmaWxlcwpAQCAtOTgsMTIgKzk5LDEyIEBACiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFRoZSBsYXllcidzIGJhc2UgZGlyZWN0b3J5CisgICAgICAgIFRoZSBCU1AgbGF5ZXIncyBiYXNlIGRpcmVjdG9yeQogICAgICAgICAoPGZpbGVuYW1lPm1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPjwvZmlsZW5hbWU+KQotICAgICAgICBpcyB0aGUgcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIEJTUCBMYXllci4KKyAgICAgICAgaXMgdGhlIHJvb3QgZGlyZWN0b3J5IG9mIHRoYXQgTGF5ZXIuCiAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGlzIHdoYXQgeW91IGFkZCB0byB0aGUKICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUJCTEFZRVJTJz48ZmlsZW5hbWU+QkJMQVlFUlM8L2ZpbGVuYW1lPjwvdWxpbms+Ci0gICAgICAgIHZhcmlhYmxlIGluIHRoZSA8ZmlsZW5hbWU+Y29uZi9iYmxheWVycy5jb25mPC9maWxlbmFtZT4gZmlsZSBmb3VuZCBpbiB0aGUKKyAgICAgICAgdmFyaWFibGUgaW4gdGhlIDxmaWxlbmFtZT5jb25mL2JibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIGZvdW5kIGluIHlvdXIKICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPiwKICAgICAgICAgd2hpY2ggaXMgZXN0YWJsaXNoZWQgYWZ0ZXIgeW91IHJ1biB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIGVudmlyb25tZW50CiAgICAgICAgIHNldHVwIHNjcmlwdCAoaS5lLgpAQCAtMTUzLDYgKzE1NCwyMCBAQAogICAgICAgICBsYXllci4KICAgICAgICAgVGhlIDxmaWxlbmFtZT5tZXRhLW9wZW5lbWJlZGRlZDwvZmlsZW5hbWU+IGxheWVyIGNvbnRhaW5zCiAgICAgICAgIG1hbnkgPGZpbGVuYW1lPm1ldGEtKjwvZmlsZW5hbWU+IGxheWVycy4KKyAgICAgICAgSW4gY2FzZXMgbGlrZSB0aGlzLCB5b3UgbmVlZCB0byBpbmNsdWRlIHRoZSBuYW1lcyBvZiB0aGUgYWN0dWFsCisgICAgICAgIGxheWVycyB5b3Ugd2FudCB0byB3b3JrIHdpdGgsIHN1Y2ggYXM6CisgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgQkJMQVlFUlMgPz0gIiBcCisgICAgICAgL3Vzci9sb2NhbC9zcmMveW9jdG8vbWV0YSBcCisgICAgICAgL3Vzci9sb2NhbC9zcmMveW9jdG8vbWV0YS1wb2t5IFwKKyAgICAgICAvdXNyL2xvY2FsL3NyYy95b2N0by9tZXRhLXlvY3RvLWJzcCBcCisgICAgICAgL3Vzci9sb2NhbC9zcmMveW9jdG8vbWV0YS1teWxheWVyIFwKKyAgICAgICAuLi4vbWV0YS1vcGVuZW1iZWRkZWQvbWV0YS1vZSBcCisgICAgICAgLi4uL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtcGVybCBcCisgICAgICAgLi4uL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtbmV0d29ya2luZyBcCisgICAgICAgIgorICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgYW5kIHNvIG9uLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgpAQCAtMzUxLDI1ICszNjYsMjQgQEAKICAgICAgICAgbGF5ZXIgY29tYmluZWQgd2l0aCBhIGJ1aWxkIHN5c3RlbSBhbmQgb3RoZXIgdG9vbHMuCiAgICAgICAgIFJlYWxpemUgdGhhdCBpdCBpcyBpbXBvcnRhbnQgdG8gbWFpbnRhaW4gdGhlIGRpc3RpbmN0aW9uCiAgICAgICAgIHRoYXQgdGhlIEJTUCBsYXllciwgYSBidWlsZCBzeXN0ZW0sIGFuZCB0b29scyBhcmUKLSAgICAgICAgc2VwYXJhdGUgY29tcG9uZW50cyB0aGF0IGNvdWxkIHRvIGJlIGNvbWJpbmVkIGluCisgICAgICAgIHNlcGFyYXRlIGNvbXBvbmVudHMgdGhhdCBjb3VsZCBiZSBjb21iaW5lZCBpbgogICAgICAgICBjZXJ0YWluIGVuZCBwcm9kdWN0cy4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KLSAgICAgICAgQmVmb3JlIGxvb2tpbmcgYXQgdGhlIGNvbW1vbiBmb3JtIGZvciB0aGUgZmlsZSBzdHJ1Y3R1cmUKLSAgICAgICAgaW5zaWRlIGEgQlNQIExheWVyLCB5b3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQgc29tZQorICAgICAgICBCZWZvcmUgbG9va2luZyBhdCB0aGUgcmVjb21tZW5kZWQgZm9ybSBmb3IgdGhlIGRpcmVjdG9yeSBzdHJ1Y3R1cmUKKyAgICAgICAgaW5zaWRlIGEgQlNQIGxheWVyLCB5b3Ugc2hvdWxkIGJlIGF3YXJlIHRoYXQgc29tZQogICAgICAgICByZXF1aXJlbWVudHMgZG8gZXhpc3QgaW4gb3JkZXIgZm9yIGEgQlNQIGxheWVyIHRvCi0gICAgICAgIGJlIGNvbnNpZGVyZWQgY29tcGxpYW50IHdpdGggdGhlIFlvY3RvIFByb2plY3QuCisgICAgICAgIGJlIGNvbnNpZGVyZWQgPGZpcnN0dGVybT5jb21wbGlhbnQ8L2ZpcnN0dGVybT4gd2l0aCB0aGUgWW9jdG8gUHJvamVjdC4KICAgICAgICAgRm9yIHRoYXQgbGlzdCBvZiByZXF1aXJlbWVudHMsIHNlZSB0aGUKICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlbGVhc2VkLWJzcC1yZXF1aXJlbWVudHMnPlJlbGVhc2VkIEJTUCBSZXF1aXJlbWVudHM8L2xpbms+IgogICAgICAgICBzZWN0aW9uLgogICAgIDwvcGFyYT4KIAogICAgIDxwYXJhPgotICAgICAgICBCZWxvdyBpcyB0aGUgY29tbW9uIGZvcm0gZm9yIHRoZSBmaWxlIHN0cnVjdHVyZQotICAgICAgICBpbnNpZGUgYSBCU1AgTGF5ZXIuCisgICAgICAgIEJlbG93IGlzIHRoZSB0eXBpY2FsIGRpcmVjdG9yeSBzdHJ1Y3R1cmUgZm9yIGEgQlNQIGxheWVyLgogICAgICAgICBXaGlsZSB0aGlzIGJhc2ljIGZvcm0gcmVwcmVzZW50cyB0aGUgc3RhbmRhcmQsCi0gICAgICAgIHJlYWxpemUgdGhhdCB0aGUgYWN0dWFsIGZpbGUgc3RydWN0dXJlcyBmb3Igc3BlY2lmaWMKKyAgICAgICAgcmVhbGl6ZSB0aGF0IHRoZSBhY3R1YWwgbGF5b3V0IGZvciBpbmRpdmlkdWFsCiAgICAgICAgIEJTUHMgY291bGQgZGlmZmVyLgogICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIG1ldGEtPHJlcGxhY2VhYmxlPmJzcF9yb290X25hbWU8L3JlcGxhY2VhYmxlPi8KQEAgLTU2Nyw3ICs1ODEsNyBAQAogICAgICAgICAgICAgZm9yIHRoZSBCU1AuCiAgICAgICAgICAgICBUaGUgdHlwZSBvciB0eXBlcyBvZiBmaWxlcyBoZXJlIGNhbiB2YXJ5IGRlcGVuZGluZwogICAgICAgICAgICAgb24gdGhlIGxpY2Vuc2luZyByZXF1aXJlbWVudHMuCi0gICAgICAgICAgICBGb3IgZXhhbXBsZSwgaW4gdGhlIFJhc3BiZXJyeSBQaSBCU1AgYWxsIGxpY2Vuc2luZworICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIHRoZSBSYXNwYmVycnkgUGkgQlNQLCBhbGwgbGljZW5zaW5nCiAgICAgICAgICAgICByZXF1aXJlbWVudHMgYXJlIGhhbmRsZWQgd2l0aCB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5DT1BZSU5HLk1JVDwvZmlsZW5hbWU+IGZpbGUuCiAgICAgICAgIDwvcGFyYT4KQEAgLTgwMiw3ICs4MTYsNyBAQAogICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjc291cmNlLWRpcmVjdG9yeSc+U291cmNlIERpcmVjdG9yeTwvdWxpbms+LgogICAgICAgICAgICAgRm9yIGV4YW1wbGUsIG1hbnkgPGZpbGVuYW1lPnR1bmUtKjwvZmlsZW5hbWU+IGZpbGVzCiAgICAgICAgICAgICAoZS5nLiA8ZmlsZW5hbWU+dHVuZS1hcm0xMTM2amYtcy5pbmM8L2ZpbGVuYW1lPiwKLSAgICAgICAgICAgIDxmaWxlbmFtZT50dW4tMTU4Ni1ubHAuaW5jPC9maWxlbmFtZT4sIGFuZCBzbyBmb3J0aCkKKyAgICAgICAgICAgIDxmaWxlbmFtZT50dW5lLTE1ODYtbmxwLmluYzwvZmlsZW5hbWU+LCBhbmQgc28gZm9ydGgpCiAgICAgICAgICAgICByZXNpZGUgaW4gdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlPC9maWxlbmFtZT4KICAgICAgICAgICAgIGRpcmVjdG9yeS4KQEAgLTgzNCw3ICs4NDgsNyBAQAogICAgICAgICAgICAgVGhpcyBvcHRpb25hbCBkaXJlY3RvcnkgY29udGFpbnMgbWlzY2VsbGFuZW91cyByZWNpcGUKICAgICAgICAgICAgIGZpbGVzIGZvciB0aGUgQlNQLgogICAgICAgICAgICAgTW9zdCBub3RhYmx5IHdvdWxkIGJlIHRoZSBmb3JtZmFjdG9yIGZpbGVzLgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIHRoZSBSYXNwYmVycnkgUGkgQlNQIHRoZXJlIGlzIHRoZQorICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGluIHRoZSBSYXNwYmVycnkgUGkgQlNQLCB0aGVyZSBpcyB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5mb3JtZmFjdG9yXzAuMC5iYmFwcGVuZDwvZmlsZW5hbWU+IGZpbGUsCiAgICAgICAgICAgICB3aGljaCBpcyBhbiBhcHBlbmQgZmlsZSB1c2VkIHRvIGF1Z21lbnQgdGhlIHJlY2lwZQogICAgICAgICAgICAgdGhhdCBzdGFydHMgdGhlIGJ1aWxkLgpAQCAtOTAxLDcgKzkxNSw3IEBACiAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPiouYmI8L2ZpbGVuYW1lPiBmaWxlcyB3b3VsZCBiZSBhCiAgICAgICAgICAgICBkZXZlbG9wZXItc3VwcGxpZWQga2VybmVsIHJlY2lwZS4KICAgICAgICAgICAgIFRoaXMgYXJlYSBvZiB0aGUgQlNQIGhpZXJhcmNoeSBjYW4gY29udGFpbiBib3RoIHRoZXNlCi0gICAgICAgICAgICB0eXBlcyBvZiBmaWxlcywgYWx0aG91Z2ggaW4gcHJhY3RpY2UsIGl0IGlzIGxpa2VseSB0aGF0CisgICAgICAgICAgICB0eXBlcyBvZiBmaWxlcyBhbHRob3VnaCwgaW4gcHJhY3RpY2UsIGl0IGlzIGxpa2VseSB0aGF0CiAgICAgICAgICAgICB5b3Ugd291bGQgaGF2ZSBvbmUgb3IgdGhlIG90aGVyLgogICAgICAgICA8L3BhcmE+CiAKQEAgLTk3Niw3ICs5OTAsNyBAQAogICAgIDx0aXRsZT5EZXZlbG9waW5nIGEgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApPC90aXRsZT4KIAogICAgIDxwYXJhPgotICAgICAgICBUaGlzIHNlY3Rpb24gY29udGFpbnMgdGhlIGhpZ2gtbGV2ZWwgcHJvY2VkdXJlIHlvdSBjYW4KKyAgICAgICAgVGhpcyBzZWN0aW9uIGRlc2NyaWJlcyB0aGUgaGlnaC1sZXZlbCBwcm9jZWR1cmUgeW91IGNhbgogICAgICAgICBmb2xsb3cgdG8gY3JlYXRlIGEgQlNQLgogICAgICAgICBBbHRob3VnaCBub3QgcmVxdWlyZWQgZm9yIEJTUCBjcmVhdGlvbiwgdGhlCiAgICAgICAgIDxmaWxlbmFtZT5tZXRhLWludGVsPC9maWxlbmFtZT4gcmVwb3NpdG9yeSwgd2hpY2gKQEAgLTEwNzUsMTAgKzEwODksNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5iZWFnbGVib25lLXlvY3RvPC9maWxlbmFtZT4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgRnJlZXNjYWxlIE1QQzgzMTVFLVJEQgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5tcGM4MzE1ZS1yZGI8L2ZpbGVuYW1lPikKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVYmlxdWl0aSBOZXR3b3JrcyBFZGdlUm91dGVyIExpdGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5lZGdlcm91dGVyPC9maWxlbmFtZT4pCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpAQCAtMTMwMiw3ICsxMzEyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgKDxmaWxlbmFtZT5vcGVuZW1iZWRkZWQtY29yZTwvZmlsZW5hbWU+KQogICAgICAgICAgICAgICAgICAgICBvciB0aGUgU291cmNlIERpcmVjdG9yeSAoPGZpbGVuYW1lPnBva3k8L2ZpbGVuYW1lPikuCiAgICAgICAgICAgICAgICAgICAgIEluIG90aGVyIHdvcmRzLCBtYWtlIHN1cmUgeW91IHBsYWNlIHJlbGF0ZWQKLSAgICAgICAgICAgICAgICAgICAgZmlsZXMgaW4gYXBwcm9wcmlhdGVseSByZWxhdGVkCisgICAgICAgICAgICAgICAgICAgIGZpbGVzIGluIGFwcHJvcHJpYXRlbHktcmVsYXRlZAogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBlcy0qPC9maWxlbmFtZT4gc3ViZGlyZWN0b3JpZXMKICAgICAgICAgICAgICAgICAgICAgc3BlY2lmaWMgdG8gdGhlIHJlY2lwZSdzIGZ1bmN0aW9uLCBvciB3aXRoaW4KICAgICAgICAgICAgICAgICAgICAgYSBzdWJkaXJlY3RvcnkgY29udGFpbmluZyBhIHNldCBvZiBjbG9zZWx5LXJlbGF0ZWQKQEAgLTEzMTksNyArMTMyOSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeS4KICAgICAgICAgICAgICAgICAgICAgVGhpcyBsaWNlbnNlIGNvdmVycyB0aGUgQlNQIE1ldGFkYXRhIGFzIGEgd2hvbGUuCiAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IHNwZWNpZnkgd2hpY2ggbGljZW5zZSB0byB1c2Ugc2luY2Ugbm8KLSAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBsaWNlbnNlIGV4aXN0cyB3aGVuIG9uZSBub3Qgc3BlY2lmaWVkLgorICAgICAgICAgICAgICAgICAgICBkZWZhdWx0IGxpY2Vuc2UgZXhpc3RzIHdoZW4gb25lIGlzIG5vdCBzcGVjaWZpZWQuCiAgICAgICAgICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0dJVF9VUkw7L2NnaXQuY2dpL21ldGEtcmFzcGJlcnJ5cGkvdHJlZS9DT1BZSU5HLk1JVCc+PGZpbGVuYW1lPkNPUFlJTkcuTUlUPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICBmaWxlIGZvciB0aGUgUmFzcGJlcnJ5IFBpIEJTUCBpbiB0aGUKQEAgLTEzNDIsMTIgKzEzNTIsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgZmlsZSBzaG91bGQgY29udGFpbiB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgYnJpZWYgZGVzY3JpcHRpb24gYWJvdXQgdGhlIGhhcmR3YXJlIHRoZSBCU1AKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJnZXRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgYnJpZWYgZGVzY3JpcHRpb24gb2YgdGhlIHRhcmdldCBoYXJkd2FyZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBBIGxpc3Qgb2YgYWxsIHRoZSBkZXBlbmRlbmNpZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB3aGljaCBhIEJTUCBsYXllciBkZXBlbmRzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgbGlzdCBvZiBhbGwgdGhlIGRlcGVuZGVuY2llcyBvZiB0aGUgQlNQLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZXNlIGRlcGVuZGVuY2llcyBhcmUgdHlwaWNhbGx5IGEgbGlzdAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHJlcXVpcmVkIGxheWVycyBuZWVkZWQgdG8gYnVpbGQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQlNQLgpAQCAtMTYxMCw3ICsxNjE4LDcgQEAKICAgICA8dGl0bGU+QlNQIExpY2Vuc2luZyBDb25zaWRlcmF0aW9uczwvdGl0bGU+CiAKICAgICA8cGFyYT4KLSAgICAgICAgSW4gc29tZSBjYXNlcywgYSBCU1AgY29udGFpbnMgc2VwYXJhdGVseSBsaWNlbnNlZAorICAgICAgICBJbiBzb21lIGNhc2VzLCBhIEJTUCBjb250YWlucyBzZXBhcmF0ZWx5LWxpY2Vuc2VkCiAgICAgICAgIEludGVsbGVjdHVhbCBQcm9wZXJ0eSAoSVApIGZvciBhIGNvbXBvbmVudCBvciBjb21wb25lbnRzLgogICAgICAgICBGb3IgdGhlc2UgY2FzZXMsIHlvdSBhcmUgcmVxdWlyZWQgdG8gYWNjZXB0IHRoZSB0ZXJtcwogICAgICAgICBvZiBhIGNvbW1lcmNpYWwgb3Igb3RoZXIgdHlwZSBvZiBsaWNlbnNlIHRoYXQgcmVxdWlyZXMKQEAgLTE2MjMsNyArMTYzMSw3IEBACiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFlvdSBjb3VsZCBmaW5kIHRoYXQgc29tZSBzZXBhcmF0ZWx5IGxpY2Vuc2VkIGNvbXBvbmVudHMKKyAgICAgICAgWW91IGNvdWxkIGZpbmQgdGhhdCBzb21lIHNlcGFyYXRlbHktbGljZW5zZWQgY29tcG9uZW50cwogICAgICAgICB0aGF0IGFyZSBlc3NlbnRpYWwgZm9yIG5vcm1hbCBvcGVyYXRpb24gb2YgdGhlIHN5c3RlbSBtaWdodAogICAgICAgICBub3QgaGF2ZSBhbiB1bmVuY3VtYmVyZWQgKG9yIGZyZWUpIHN1YnN0aXR1dGUuCiAgICAgICAgIFdpdGhvdXQgdGhlc2UgZXNzZW50aWFsIGNvbXBvbmVudHMsIHRoZSBzeXN0ZW0gd291bGQgYmUKQEAgLTE2MzEsNyArMTYzOSw3IEBACiAgICAgICAgIFRoZW4gYWdhaW4sIHlvdSBtaWdodCBmaW5kIHRoYXQgb3RoZXIgbGljZW5zZWQgY29tcG9uZW50cwogICAgICAgICB0aGF0IGFyZSBzaW1wbHkgJ2dvb2QtdG8taGF2ZScgb3IgcHVyZWx5IGVsZWN0aXZlIGRvIGhhdmUKICAgICAgICAgYW4gdW5lbmN1bWJlcmVkLCBmcmVlIHJlcGxhY2VtZW50IGNvbXBvbmVudCB0aGF0IHlvdSBjYW4KLSAgICAgICAgdXNlIHJhdGhlciB0aGFuIGFncmVlaW5nIHRvIHRoZSBzZXBhcmF0ZWx5IGxpY2Vuc2VkCisgICAgICAgIHVzZSByYXRoZXIgdGhhbiBhZ3JlZWluZyB0byB0aGUgc2VwYXJhdGVseS1saWNlbnNlZAogICAgICAgICBjb21wb25lbnQuCiAgICAgICAgIEV2ZW4gZm9yIGNvbXBvbmVudHMgZXNzZW50aWFsIHRvIHRoZSBzeXN0ZW0sIHlvdSBtaWdodAogICAgICAgICBmaW5kIGFuIHVuZW5jdW1iZXJlZCBjb21wb25lbnQgdGhhdCBpcyBub3QgaWRlbnRpY2FsIGJ1dApAQCAtMTc0NCw3ICsxNzUyLDcgQEAKICAgICA8cGFyYT4KICAgICAgICAgVGhlIDxmaWxlbmFtZT5iaXRiYWtlLWxheWVycyBjcmVhdGUtbGF5ZXI8L2ZpbGVuYW1lPiBzY3JpcHQKICAgICAgICAgYXV0b21hdGVzIGNyZWF0aW5nIGEgQlNQIGxheWVyLgotICAgICAgICBXaGF0IG1ha2VzIGEgbGF5ZXIgYSAiQlNQIGxheWVyIiwgaXMgdGhlIHByZXNlbmNlIG9mIGEgbWFjaGluZQorICAgICAgICBXaGF0IG1ha2VzIGEgbGF5ZXIgYSAiQlNQIGxheWVyIiBpcyB0aGUgcHJlc2VuY2Ugb2YgYXQgbGVhc3Qgb25lIG1hY2hpbmUKICAgICAgICAgY29uZmlndXJhdGlvbiBmaWxlLgogICAgICAgICBBZGRpdGlvbmFsbHksIGEgQlNQIGxheWVyIHVzdWFsbHkgaGFzIGEga2VybmVsIHJlY2lwZQogICAgICAgICBvciBhbiBhcHBlbmQgZmlsZSB0aGF0IGxldmVyYWdlcyBvZmYgYW4gZXhpc3Rpbmcga2VybmVsIHJlY2lwZS4KQEAgLTE4NjgsMTEgKzE4NzYsMTQgQEAKICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgTWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGVzIGV4aXN0IGluIHRoZQorICAgICAgICAgICAgT25lIG9yIG1vcmUgbWFjaGluZSBjb25maWd1cmF0aW9uIGZpbGVzIGV4aXN0IGluIHRoZQogICAgICAgICAgICAgPHJlcGxhY2VhYmxlPmJzcF9sYXllcjwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9jb25mL21hY2hpbmUvPC9maWxlbmFtZT4KICAgICAgICAgICAgIGRpcmVjdG9yeSBvZiB0aGUgbGF5ZXI6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIDxyZXBsYWNlYWJsZT5ic3BfbGF5ZXI8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4vY29uZi9tYWNoaW5lLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1hY2hpbmU8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+CisgICAgIDxyZXBsYWNlYWJsZT5ic3BfbGF5ZXI8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4vY29uZi9tYWNoaW5lLzwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPm1hY2hpbmUxPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+LmNvbmY8L2ZpbGVuYW1lPgorICAgICA8cmVwbGFjZWFibGU+YnNwX2xheWVyPC9yZXBsYWNlYWJsZT48ZmlsZW5hbWU+L2NvbmYvbWFjaGluZS88L2ZpbGVuYW1lPjxyZXBsYWNlYWJsZT5tYWNoaW5lMjwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi5jb25mPC9maWxlbmFtZT4KKyAgICAgPHJlcGxhY2VhYmxlPmJzcF9sYXllcjwvcmVwbGFjZWFibGU+PGZpbGVuYW1lPi9jb25mL21hY2hpbmUvPC9maWxlbmFtZT48cmVwbGFjZWFibGU+bWFjaGluZTM8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uY29uZjwvZmlsZW5hbWU+CisgICAgIC4uLiBtb3JlIC4uLgogICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRoZSBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlCiAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwOi8vYmVhZ2xlYm9hcmQub3JnL2JvbmUnPkJlYWdsZUJvbmUgYW5kIEJlYWdsZUJvbmUgQmxhY2sgZGV2ZWxvcG1lbnQgYm9hcmRzPC91bGluaz4KQEAgLTE5MjMsOCArMTkzNCw4IEBACiAgICAgIElNQUdFX0JPT1RfRklMRVMgPz0gInUtYm9vdC4ke1VCT09UX1NVRkZJWH0gTUxPIHpJbWFnZSBhbTMzNXgtYm9uZS5kdGIgYW0zMzV4LWJvbmVibGFjay5kdGIgYW0zMzV4LWJvbmVncmVlbi5kdGIiCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICBUaGUgdmFyaWFibGVzIHVzZWQgdG8gY29uZmlndXJlIHRoZSBtYWNoaW5lIGRlZmluZQotICAgICAgICAgICAgbWFjaGluZS1zcGVjaWZpYyBwcm9wZXJ0aWVzLgotICAgICAgICAgICAgRm9yIGV4YW1wbGUsIG1hY2hpbmUtZGVwZW5kZW50IHBhY2thZ2VzLCBtYWNoaW5lCisgICAgICAgICAgICBtYWNoaW5lLXNwZWNpZmljIHByb3BlcnRpZXM7CisgICAgICAgICAgICBmb3IgZXhhbXBsZSwgbWFjaGluZS1kZXBlbmRlbnQgcGFja2FnZXMsIG1hY2hpbmUKICAgICAgICAgICAgIHR1bmluZ3MsIHRoZSB0eXBlIG9mIGtlcm5lbCB0byBidWlsZCwgYW5kCiAgICAgICAgICAgICBVLUJvb3QgY29uZmlndXJhdGlvbnMuCiAgICAgICAgIDwvcGFyYT4KQEAgLTE5MzUsNyArMTk0Niw3IEBACiAgICAgICAgICAgICBtYWNoaW5lIGNvbmZpZ3VyYXRpb24gZmlsZSBmb3IgdGhlIEJlYWdsZUJvbmUKICAgICAgICAgICAgIGRldmVsb3BtZW50IGJvYXJkcy4KICAgICAgICAgICAgIFJlYWxpemUgdGhhdCBtdWNoIG1vcmUgY2FuIGJlIGRlZmluZWQgYXMgcGFydCBvZgotICAgICAgICAgICAgYSBtYWNoaW5lcyBjb25maWd1cmF0aW9uIGZpbGUuCisgICAgICAgICAgICBhIG1hY2hpbmUncyBjb25maWd1cmF0aW9uIGZpbGUuCiAgICAgICAgICAgICBJbiBnZW5lcmFsLCB5b3UgY2FuIGxlYXJuIGFib3V0IHJlbGF0ZWQgdmFyaWFibGVzCiAgICAgICAgICAgICB0aGF0IHRoaXMgZXhhbXBsZSBkb2VzIG5vdCBoYXZlIGJ5IGxvY2F0aW5nIHRoZQogICAgICAgICAgICAgdmFyaWFibGVzIGluIHRoZQpAQCAtMjE4Miw3ICsyMTkzLDYgQEAKICAgICAgS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJ2NS4wL3N0YW5kYXJkL2Jhc2UiCiAgICAgIEtCUkFOQ0hfZWRnZXJvdXRlciA9ICJ2NS4wL3N0YW5kYXJkL2VkZ2Vyb3V0ZXIiCiAgICAgIEtCUkFOQ0hfYmVhZ2xlYm9uZS15b2N0byA9ICJ2NS4wL3N0YW5kYXJkL2JlYWdsZWJvbmUiCi0gICAgIEtCUkFOQ0hfbXBjODMxNWUtcmRiID0gInY1LjAvc3RhbmRhcmQvZnNsLW1wYzgzMTVlLXJkYiIKIAogICAgICBLTUFDSElORV9nZW5lcmljeDg2ID89ICJjb21tb24tcGMiCiAgICAgIEtNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKQEAgLTIxOTIsMTkgKzIyMDIsMTYgQEAKICAgICAgU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4Ni02NCA/PSAiM2RmNGFhZTYwNzRlOTRlNzk0ZTI3ZmU3ZjE3NDUxZDkzNTNjZGYzZCIKICAgICAgU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiM2RmNGFhZTYwNzRlOTRlNzk0ZTI3ZmU3ZjE3NDUxZDkzNTNjZGYzZCIKICAgICAgU1JDUkVWX21hY2hpbmVfYmVhZ2xlYm9uZS15b2N0byA/PSAiM2RmNGFhZTYwNzRlOTRlNzk0ZTI3ZmU3ZjE3NDUxZDkzNTNjZGYzZCIKLSAgICAgU1JDUkVWX21hY2hpbmVfbXBjODMxNWUtcmRiID89ICI4YjYyYWY3ZjI1MmFmMTA1ODgyNzY4MDJjNGM2ZDdjNTAyZTg3NWJlIgogCiAgICAgIENPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCiAgICAgIENPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCiAgICAgIENPTVBBVElCTEVfTUFDSElORV9lZGdlcm91dGVyID0gImVkZ2Vyb3V0ZXIiCiAgICAgIENPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCi0gICAgIENPTVBBVElCTEVfTUFDSElORV9tcGM4MzE1ZS1yZGIgPSAibXBjODMxNWUtcmRiIgogCiAgICAgIExJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4NiA9ICI1LjAuMyIKICAgICAgTElOVVhfVkVSU0lPTl9nZW5lcmljeDg2LTY0ID0gIjUuMC4zIgogICAgICBMSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNS4wLjMiCiAgICAgIExJTlVYX1ZFUlNJT05fYmVhZ2xlYm9uZS15b2N0byA9ICI1LjAuMyIKLSAgICAgTElOVVhfVkVSU0lPTl9tcGM4MzE1ZS1yZGIgPSAiNS4wLjMiCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICBUaGlzIHBhcnRpY3VsYXIgYXBwZW5kIGZpbGUgd29ya3MgZm9yIGFsbCB0aGUKICAgICAgICAgICAgIG1hY2hpbmVzIHRoYXQgYXJlIHBhcnQgb2YgdGhlCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrcy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLWNvbW1vbi10YXNrcy54bWwKaW5kZXggMDA3NDFlZS4uZTljZTE4MiAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1jb21tb24tdGFza3MueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtY29tbW9uLXRhc2tzLnhtbApAQCAtMTg0LDYgKzE4NCwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTEFZRVJERVBFTkRTJz48ZmlsZW5hbWU+TEFZRVJERVBFTkRTPC9maWxlbmFtZT48L3VsaW5rPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTGlzdHMgYWxsIGxheWVycyBvbiB3aGljaCB0aGlzIGxheWVyIGRlcGVuZHMgKGlmIGFueSkuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLUxBWUVSU0VSSUVTX0NPTVBBVCc+PGZpbGVuYW1lPkxBWUVSU0VSSUVTX0NPTVBBVDwvZmlsZW5hbWU+PC91bGluaz46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIExpc3RzIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fV0lLSV9VUkw7L3dpa2kvUmVsZWFzZXMnPllvY3RvIFByb2plY3Q8L3VsaW5rPgpAQCAtMzE1LDEyICszMTksMjYgQEAKICAgICAgREVQRU5EU19hcHBlbmRfb25lID0gIiBmb28iCiAgICAgIERFUEVORFNfcHJlcGVuZF9vbmUgPSAiZm9vICIKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBcyBhbiBhY3R1YWwgZXhhbXBsZSwgaGVyZSdzIGEgbGluZSBmcm9tIHRoZSByZWNpcGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGdudXRscywgd2hpY2ggYWRkcyBkZXBlbmRlbmNpZXMgb24KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImFyZ3Atc3RhbmRhbG9uZSIgd2hlbiBidWlsZGluZyB3aXRoIHRoZSBtdXNsIEMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXMgYW4gYWN0dWFsIGV4YW1wbGUsIGhlcmUncyBhIHNuaXBwZXQgZnJvbSB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJpYyBrZXJuZWwgaW5jbHVkZSBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saW51eC15b2N0by5pbmM8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlcmVpbiB0aGUga2VybmVsIGNvbXBpbGUgYW5kIGxpbmsgb3B0aW9ucyBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYWRqdXN0ZWQgaW4gdGhlIGNhc2Ugb2YgYSBzdWJzZXQgb2YgdGhlIHN1cHBvcnRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmNoaXRlY3R1cmVzOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIERFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIgorICAgICBERVBFTkRTX2FwcGVuZF9hYXJjaDY0ID0gIiBsaWJnY2MiCisgICAgIEtFUk5FTF9DQ19hcHBlbmRfYWFyY2g2NCA9ICIgJHtUT09MQ0hBSU5fT1BUSU9OU30iCisgICAgIEtFUk5FTF9MRF9hcHBlbmRfYWFyY2g2NCA9ICIgJHtUT09MQ0hBSU5fT1BUSU9OU30iCisKKyAgICAgREVQRU5EU19hcHBlbmRfbmlvczIgPSAiIGxpYmdjYyIKKyAgICAgS0VSTkVMX0NDX2FwcGVuZF9uaW9zMiA9ICIgJHtUT09MQ0hBSU5fT1BUSU9OU30iCisgICAgIEtFUk5FTF9MRF9hcHBlbmRfbmlvczIgPSAiICR7VE9PTENIQUlOX09QVElPTlN9IgorCisgICAgIERFUEVORFNfYXBwZW5kX2FyYyA9ICIgbGliZ2NjIgorICAgICBLRVJORUxfQ0NfYXBwZW5kX2FyYyA9ICIgJHtUT09MQ0hBSU5fT1BUSU9OU30iCisgICAgIEtFUk5FTF9MRF9hcHBlbmRfYXJjID0gIiAke1RPT0xDSEFJTl9PUFRJT05TfSIKKworICAgICBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBmZWF0dXJlcy9kZWJ1Zy9wcmludGsuc2NjIgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQXZvaWRpbmcgIis9IiBhbmQgIj0rIiBhbmQgdXNpbmcKQEAgLTU4MCwxMSArNTk4LDE5IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UgLWU8L2ZpbGVuYW1lPikuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvbW1vbi50ZXN0X3dvcmxkPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyaWZpZXMgdGhhdCA8ZmlsZW5hbWU+Yml0YmFrZSB3b3JsZDwvZmlsZW5hbWU+IHdvcmtzLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb21tb24udGVzdF9zaWduYXR1cmVzPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdHMgdG8gYmUgc3VyZSB0aGF0IEJTUCBhbmQgRElTVFJPIGxheWVycyBkbyBub3QKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21lIHdpdGggcmVjaXBlcyB0aGF0IGNoYW5nZSBzaWduYXR1cmVzLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb21tb24udGVzdF9sYXllcnNlcmllc19jb21wYXQ8L2ZpbGVuYW1lPjoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBWZXJpZmllcyBsYXllciBjb21wYXRpYmlsaXR5IGlzIHNldCBwcm9wZXJseS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnNwLnRlc3RfYnNwX2RlZmluZXNfbWFjaGluZXM8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUZXN0cyBpZiBhIEJTUCBsYXllciBoYXMgbWFjaGluZSBjb25maWd1cmF0aW9ucy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTU5NCwxMSArNjIwLDIyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZSB3aGVuIHRoZSBsYXllciBpcyBhZGRlZC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnNwLnRlc3RfbWFjaGluZV93b3JsZDwvZmlsZW5hbWU+OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFZlcmlmaWVzIHRoYXQgPGZpbGVuYW1lPmJpdGJha2Ugd29ybGQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdvcmtzIHJlZ2FyZGxlc3Mgb2Ygd2hpY2ggbWFjaGluZSBpcyBzZWxlY3RlZC4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnNwLnRlc3RfbWFjaGluZV9zaWduYXR1cmVzPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgVmVyaWZpZXMgdGhhdCBidWlsZGluZyBmb3IgYSBwYXJ0aWN1bGFyIG1hY2hpbmUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZmZlY3RzIG9ubHkgdGhlIHNpZ25hdHVyZSBvZiB0YXNrcyBzcGVjaWZpYyB0byB0aGF0CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWFjaGluZS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGlzdHJvLnRlc3RfZGlzdHJvX2RlZmluZXNfZGlzdHJvczwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RzIGlmIGEgRElTVFJPIGxheWVyIGhhcyBkaXN0cm8gY29uZmlndXJhdGlvbnMuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpc3Ryby50ZXN0X2Rpc3Ryb19ub19zZXRfZGlzdHJvPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRpc3Ryby50ZXN0X2Rpc3Ryb19ub19zZXRfZGlzdHJvczwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRlc3RzIHRvIGVuc3VyZSBhIERJU1RSTyBsYXllciBkb2VzIG5vdCBzZXQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGlzdHJpYnV0aW9uIHdoZW4gdGhlIGxheWVyIGlzIGFkZGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpAQCAtMTM5Nyw3ICsxNDM0LDcgQEAKICAgICAgICAgICAgICAgICBwYWNrYWdlIHNwZWNpZmllZCBpbiB0aGUgPGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICBzdGF0ZW1lbnQuCiAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+aW5oZXJpdCBwYWNrYWdlczwvZmlsZW5hbWU+IHNob3VsZCBiZQorICAgICAgICAgICAgICAgICAgICBUaGUgPGZpbGVuYW1lPmluaGVyaXQgcGFja2FnZWdyb3VwPC9maWxlbmFtZT4gbGluZSBzaG91bGQgYmUKICAgICAgICAgICAgICAgICAgICAgbG9jYXRlZCBuZWFyIHRoZSB0b3Agb2YgdGhlIHJlY2lwZSwgY2VydGFpbmx5IGJlZm9yZQogICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPlBBQ0tBR0VTPC9maWxlbmFtZT4gc3RhdGVtZW50LgogICAgICAgICAgICAgICAgIDwvbm90ZT4KQEAgLTE0MTcsMjggKzE0NTQsMzIgQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgSGVyZSBpcyBhIHNob3J0LCBmYWJyaWNhdGVkIGV4YW1wbGUgc2hvd2luZyB0aGUgc2FtZSBiYXNpYwotICAgICAgICAgICAgICAgIHBpZWNlczoKKyAgICAgICAgICAgICAgICBwaWVjZXMgZm9yIGEgaHlwb3RoZXRpY2FsIHBhY2thZ2Vncm91cCBkZWZpbmVkIGluCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBhY2thZ2Vncm91cC1jdXN0b20uYmI8L2ZpbGVuYW1lPiwgd2hlcmUgdGhlCisgICAgICAgICAgICAgICAgdmFyaWFibGUgPGZpbGVuYW1lPlBOPC9maWxlbmFtZT4gaXMgdGhlIHN0YW5kYXJkIHdheSB0bworICAgICAgICAgICAgICAgIGFiYnJldmlhdGUgdGhlIHJlZmVyZW5jZSB0byB0aGUgZnVsbCBwYWNrYWdlZ3JvdXAgbmFtZQorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAtY3VzdG9tPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICBERVNDUklQVElPTiA9ICJNeSBDdXN0b20gUGFja2FnZSBHcm91cHMiCiAKICAgICAgaW5oZXJpdCBwYWNrYWdlZ3JvdXAKIAogICAgICBQQUNLQUdFUyA9ICJcCi0gICAgICAgICBwYWNrYWdlZ3JvdXAtY3VzdG9tLWFwcHMgXAotICAgICAgICAgcGFja2FnZWdyb3VwLWN1c3RvbS10b29scyBcCisgICAgICAgICAke1BOfS1hcHBzIFwKKyAgICAgICAgICR7UE59LXRvb2xzIFwKICAgICAgICAgICIKIAotICAgICBSREVQRU5EU19wYWNrYWdlZ3JvdXAtY3VzdG9tLWFwcHMgPSAiXAorICAgICBSREVQRU5EU18ke1BOfS1hcHBzID0gIlwKICAgICAgICAgIGRyb3BiZWFyIFwKICAgICAgICAgIHBvcnRtYXAgXAogICAgICAgICAgcHNwbGFzaCIKIAotICAgICBSREVQRU5EU19wYWNrYWdlZ3JvdXAtY3VzdG9tLXRvb2xzID0gIlwKKyAgICAgUkRFUEVORFNfJHtQTn0tdG9vbHMgPSAiXAogICAgICAgICAgb3Byb2ZpbGUgXAogICAgICAgICAgb3Byb2ZpbGV1aS1zZXJ2ZXIgXAogICAgICAgICAgbHR0bmctdG9vbHMiCiAKLSAgICAgUlJFQ09NTUVORFNfcGFja2FnZWdyb3VwLWN1c3RvbS10b29scyA9ICJcCisgICAgIFJSRUNPTU1FTkRTXyR7UE59LXRvb2xzID0gIlwKICAgICAgICAgIGtlcm5lbC1tb2R1bGUtb3Byb2ZpbGUiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgPC9wYXJhPgpAQCAtMTkwMCw5ICsxOTQxLDkgQEAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IHZhcmlhYmxlIGluIHlvdXIgcmVjaXBlIG11c3QKICAgICAgICAgICAgICAgICBkZWZpbmUgZWFjaCB1bmlxdWUgbG9jYXRpb24gZm9yIHlvdXIgc291cmNlIGZpbGVzLgotICAgICAgICAgICAgICAgIEl0IGlzIGdvb2QgcHJhY3RpY2UgdG8gbm90IGhhcmQtY29kZSBwYXRobmFtZXMgaW4gYW4gVVJMIHVzZWQKKyAgICAgICAgICAgICAgICBJdCBpcyBnb29kIHByYWN0aWNlIHRvIG5vdCBoYXJkLWNvZGUgdmVyc2lvbiBudW1iZXJzIGluIGEgVVJMIHVzZWQKICAgICAgICAgICAgICAgICBpbiA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+LgotICAgICAgICAgICAgICAgIFJhdGhlciB0aGFuIGhhcmQtY29kZSB0aGVzZSBwYXRocywgdXNlCisgICAgICAgICAgICAgICAgUmF0aGVyIHRoYW4gaGFyZC1jb2RlIHRoZXNlIHZhbHVlcywgdXNlCiAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPiR7PC9maWxlbmFtZT48dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItUFYnPjxmaWxlbmFtZT5QVjwvZmlsZW5hbWU+PC91bGluaz48ZmlsZW5hbWU+fTwvZmlsZW5hbWU+LAogICAgICAgICAgICAgICAgIHdoaWNoIGNhdXNlcyB0aGUgZmV0Y2ggcHJvY2VzcyB0byB1c2UgdGhlIHZlcnNpb24gc3BlY2lmaWVkIGluCiAgICAgICAgICAgICAgICAgdGhlIHJlY2lwZSBmaWxlbmFtZS4KQEAgLTE5MTMsMTMgKzE5NTQsMTMgQEAKIAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgSGVyZSBpcyBhIHNpbXBsZSBleGFtcGxlIGZyb20gdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1kZXZ0b29scy9jZHJ0b29scy9jZHJ0b29scy1uYXRpdmVfMy4wMWEyMC5iYjwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzUuNS5iYjwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgcmVjaXBlIHdoZXJlIHRoZSBzb3VyY2UgY29tZXMgZnJvbSBhIHNpbmdsZSB0YXJiYWxsLgogICAgICAgICAgICAgICAgIE5vdGljZSB0aGUgdXNlIG9mIHRoZQogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1JFRl9VUkw7I3Zhci1QVic+PGZpbGVuYW1lPlBWPC9maWxlbmFtZT48L3VsaW5rPgogICAgICAgICAgICAgICAgIHZhcmlhYmxlOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgU1JDX1VSSSA9ICJmdHA6Ly9mdHAuYmVybGlvcy5kZS9wdWIvY2RyZWNvcmQvYWxwaGEvY2RydG9vbHMtJHtQVn0udGFyLmJ6MiIKKyAgICAgU1JDX1VSSSA9ICJodHRwczovL3N0cmFjZS5pby9maWxlcy8ke1BWfS9zdHJhY2UtJHtQVn0udGFyLnh6IFwKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTE5NzgsMTYgKzIwMTksMTcgQEAKICAgICAgICAgICAgICAgICBGb3IgdGhlc2UgY2FzZXMsIHlvdSBwcm92aWRlIGEgbmFtZSBmb3IgZWFjaCBVUkwgYXMgcGFydCBvZgogICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+U1JDX1VSSTwvZmlsZW5hbWU+IGFuZCB0aGVuIHJlZmVyZW5jZSB0aGF0IG5hbWUKICAgICAgICAgICAgICAgICBpbiB0aGUgc3Vic2VxdWVudCBjaGVja3N1bSBzdGF0ZW1lbnRzLgotICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZToKKyAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgY29tYmluaW5nIGxpbmVzIGZyb20gdGhlIGZpbGVzCisgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmdpdC5pbmM8L2ZpbGVuYW1lPiBhbmQKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2l0XzIuMjQuMS5iYjwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgU1JDX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vYS9hcG1kL2FwbWRfMy4yLjIub3JpZy50YXIuZ3o7bmFtZT10YXJiYWxsIFwKLSAgICAgICAgICAgICAgICAke0RFQklBTl9NSVJST1J9L21haW4vYS9hcG1kL2FwbWRfJHtQVn0uZGlmZi5nejtuYW1lPXBhdGNoIgorICAgICBTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvc2NtL2dpdC9naXQtJHtQVn0udGFyLmd6O25hbWU9dGFyYmFsbCBcCisgICAgICAgICAgICAgICAgJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS9zY20vZ2l0L2dpdC1tYW5wYWdlcy0ke1BWfS50YXIuZ3o7bmFtZT1tYW5wYWdlcyIKIAotICAgICBTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICJiMWU2MzA5ZTgzMzFlMGY0ZTZlZmQzMTFjMmQ5N2ZhOCIKLSAgICAgU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiN2Y3ZDlmNjBiNzc2NmI4NTI4ODFkNDBiOGZmOTFkOGUzOWZjY2IwZDFkOTEzMTAyYTVjNzVhMmRiYjUyMzMyZCIKLQotICAgICBTUkNfVVJJW3BhdGNoLm1kNXN1bV0gPSAiNTdlMWI2ODkyNjRlYTgwZjc4MzUzNTE5ZWVjZTBjOTIiCi0gICAgIFNSQ19VUklbcGF0Y2guc2hhMjU2c3VtXSA9ICI3OTA1ZmY5NmJlOTNkNzI1NTQ0ZDAwNDBlNDI1YzQyZjljMDU1ODBkYjNjMjcyZjExY2ZmNzViOWFhODlkNDMwIgorICAgICBTUkNfVVJJW3RhcmJhbGwubWQ1c3VtXSA9ICIxNjZiZGU5NmFkYmJjMTFjODg0M2Q0ZjhmNGY5ODExYiIKKyAgICAgU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiYWQ1MzM0OTU2MzAxYzg2ODQxZWIxZTViMWJiMjA4ODRhNmJhZDg5YTEwYTY3NjJjOTU4MjIwYzdjZjY0ZGEwMiIKKyAgICAgU1JDX1VSSVttYW5wYWdlcy5tZDVzdW1dID0gIjMxYzIyNzJhODk3OTAyMjQ5N2JhM2Q0MjAyZGYxNDVkIgorICAgICBTUkNfVVJJW21hbnBhZ2VzLnNoYTI1NnN1bV0gPSAiOWE3YWUzYTA5M2JlYTM5NzcwZWI5NmNhM2U1YjQwYmZmN2FmMGI5ZjYxMjNmMDg5ZDc4MjFkMGU1YjhlMTIzMCIKICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTMyNDIsOCArMzI4NCw2IEBACiAgICAgICAgICAgICAgICAgVGhlIHNjcmlwdCBkZWZpbmVkIGluIHRoZSBwb3N0LWluc3RhbGxhdGlvbiBmdW5jdGlvbiBpcwogICAgICAgICAgICAgICAgIGNhbGxlZCB3aGVuIHRoZSByb290IGZpbGVzeXN0ZW0gaXMgY3JlYXRlZC4KICAgICAgICAgICAgICAgICBJZiB0aGUgc2NyaXB0IHN1Y2NlZWRzLCB0aGUgcGFja2FnZSBpcyBtYXJrZWQgYXMgaW5zdGFsbGVkLgotICAgICAgICAgICAgICAgIElmIHRoZSBzY3JpcHQgZmFpbHMsIHRoZSBwYWNrYWdlIGlzIG1hcmtlZCBhcyB1bnBhY2tlZCBhbmQKLSAgICAgICAgICAgICAgICB0aGUgc2NyaXB0IGlzIGV4ZWN1dGVkIHdoZW4gdGhlIGltYWdlIGJvb3RzIGFnYWluLgogICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICBBbnkgUlBNIHBvc3QtaW5zdGFsbGF0aW9uIHNjcmlwdCB0aGF0IHJ1bnMgb24gdGhlIHRhcmdldAogICAgICAgICAgICAgICAgICAgICBzaG91bGQgcmV0dXJuIGEgMCBleGl0IGNvZGUuCkBAIC0zMjYyLDcgKzMzMDIsNyBAQAogICAgICAgICAgICAgICAgIG1hcmsgcG9zdCBpbnN0YWxscyB0byBkZWZlciB0byB0aGUgdGFyZ2V0LgogICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlIDxmaWxlbmFtZT5wa2dfcG9zdGluc3Rfb250YXJnZXQoKTwvZmlsZW5hbWU+IG9yCiAgICAgICAgICAgICAgICAgY2FsbAotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb3N0aW5zdC1pbnRlcmNlcHRzIGRlZmVyX3RvX2ZpcnN0X2Jvb3Q8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wb3N0aW5zdF9pbnRlcmNlcHQgZGVsYXlfdG9fZmlyc3RfYm9vdDwvZmlsZW5hbWU+CiAgICAgICAgICAgICAgICAgZnJvbSA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0KCk8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICBBbnkgZmFpbHVyZSBvZiBhIDxmaWxlbmFtZT5wa2dfcG9zdGluc3QoKTwvZmlsZW5hbWU+IHNjcmlwdAogICAgICAgICAgICAgICAgIChpbmNsdWRpbmcgZXhpdCAxKSB0cmlnZ2VycyBhbiBlcnJvciBkdXJpbmcgdGhlCkBAIC03NjA5LDcgKzc2NDksNiBAQAogICAgICAgICAgICAgICAgIGF2YWlsYWJsZSBXaWMgaW1hZ2VzIGFzIGZvbGxvd3M6CiAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHdpYyBsaXN0IGltYWdlcwotICAgICAgIG1wYzgzMTVlLXJkYiAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIFNEIGNhcmQgaW1hZ2UgZm9yIE1QQzgzMTVFLVJEQgogICAgICAgIGdlbmVyaWN4ODYgICAgICAgICAgICAgICAgICAgIAkJQ3JlYXRlIGFuIEVGSSBkaXNrIGltYWdlIGZvciBnZW5lcmljeDg2KgogICAgICAgIGJlYWdsZWJvbmUteW9jdG8gICAgICAgICAgICAgIAkJQ3JlYXRlIFNEIGNhcmQgaW1hZ2UgZm9yIEJlYWdsZWJvbmUKICAgICAgICBlZGdlcm91dGVyICAgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBTRCBjYXJkIGltYWdlIGZvciBFZGdlcm91dGVyCkBAIC03Nzk3LDcgKzc4MzYsNiBAQAogICAgICAgICAgICAgICAgIGZpbGVzOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCB3aWMgbGlzdCBpbWFnZXMKLSAgICAgICBtcGM4MzE1ZS1yZGIgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBTRCBjYXJkIGltYWdlIGZvciBNUEM4MzE1RS1SREIKICAgICAgICBnZW5lcmljeDg2ICAgICAgICAgICAgICAgICAgICAJCUNyZWF0ZSBhbiBFRkkgZGlzayBpbWFnZSBmb3IgZ2VuZXJpY3g4NioKICAgICAgICBiZWFnbGVib25lLXlvY3RvICAgICAgICAgICAgICAJCUNyZWF0ZSBTRCBjYXJkIGltYWdlIGZvciBCZWFnbGVib25lCiAgICAgICAgZWRnZXJvdXRlciAgICAgICAgICAgICAgICAgICAgCQlDcmVhdGUgU0QgY2FyZCBpbWFnZSBmb3IgRWRnZXJvdXRlcgpAQCAtMTA1NTAsNyArMTA1ODgsNyBAQAogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGV2dG9vbDwvZmlsZW5hbWU+IGFuZCB0aGUgTlBNIGZldGNoZXIgdG8KICAgICAgICAgICAgICAgICAgICAgY3JlYXRlIHRoZSByZWNpcGU6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBkZXZ0b29sIGFkZCAibnBtOi8vcmVnaXN0cnkubnBtanMub3JnO25hbWU9Y3V0ZS1maWxlczt2ZXJzaW9uPTEuMC4yIgorICAgICAkIGRldnRvb2wgYWRkICJucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1jdXRlLWZpbGVzO3ZlcnNpb249MS4wLjIiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kZXZ0b29sIGFkZDwvZmlsZW5hbWU+IGNvbW1hbmQgcnVucwogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBldG9vbCBjcmVhdGU8L2ZpbGVuYW1lPiBhbmQgdXNlcyB0aGUKQEAgLTEwNTc1LDI1ICsxMDYxMywxMyBAQAogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cmVjaXBldG9vbDwvZmlsZW5hbWU+IGNyZWF0ZXMgInNocmlua3dyYXAiIGFuZAotICAgICAgICAgICAgICAgICAgICAibG9ja2Rvd24iIGZpbGVzIGZvciB5b3VyIHJlY2lwZS4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJlY2lwZXRvb2w8L2ZpbGVuYW1lPiBjcmVhdGVzIGEgInNocmlua3dyYXAiIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgZm9yIHlvdXIgcmVjaXBlLgogICAgICAgICAgICAgICAgICAgICBTaHJpbmt3cmFwIGZpbGVzIGNhcHR1cmUgdGhlIHZlcnNpb24gb2YgYWxsIGRlcGVuZGVudAogICAgICAgICAgICAgICAgICAgICBtb2R1bGVzLgogICAgICAgICAgICAgICAgICAgICBNYW55IHBhY2thZ2VzIGRvIG5vdCBwcm92aWRlIHNocmlua3dyYXAgZmlsZXMuCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5yZWNpcGV0b29sPC9maWxlbmFtZT4gY3JlYXRlIGEgc2hyaW5rd3JhcAogICAgICAgICAgICAgICAgICAgICBmaWxlIGFzIGl0IHJ1bnMuCi0gICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcmVwbGFjZSB0aGUgc2hyaW5rd3JhcCBmaWxlIHdpdGggeW91ciBvd24gZmlsZQotICAgICAgICAgICAgICAgICAgICBieSBzZXR0aW5nIHRoZSA8ZmlsZW5hbWU+TlBNX1NIUklOS1dSQVA8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZS4KLSAgICAgICAgICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgTG9ja2Rvd24gZmlsZXMgY29udGFpbiB0aGUgY2hlY2tzdW0gZm9yIGVhY2ggbW9kdWxlCi0gICAgICAgICAgICAgICAgICAgIHRvIGRldGVybWluZSBpZiB5b3VyIHVzZXJzIGRvd25sb2FkIHRoZSBzYW1lIGZpbGVzIHdoZW4KLSAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgd2l0aCBhIHJlY2lwZS4KLSAgICAgICAgICAgICAgICAgICAgTG9ja2Rvd24gZmlsZXMgZW5zdXJlIHRoYXQgZGVwZW5kZW5jaWVzIGhhdmUgbm90IGJlZW4KLSAgICAgICAgICAgICAgICAgICAgY2hhbmdlZCBhbmQgdGhhdCB5b3VyIE5QTSByZWdpc3RyeSBpcyBzdGlsbCBwcm92aWRpbmcKLSAgICAgICAgICAgICAgICAgICAgdGhlIHNhbWUgZmlsZS4KICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBBIHBhY2thZ2UgaXMgY3JlYXRlZCBmb3IgZWFjaCBzdWItbW9kdWxlLgogICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBwb2xpY3kgaXMgdGhlIG9ubHkgcHJhY3RpY2FsIHdheSB0byBoYXZlIHRoZQpAQCAtMTA2MDgsMjMgKzEwNjM0LDI2IEBACiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBkZXZ0b29sIGVkaXQtcmVjaXBlIGN1dGUtZmlsZXMKICAgICAgU1VNTUFSWSA9ICJUdXJuIGFueSBmb2xkZXIgb24geW91ciBjb21wdXRlciBpbnRvIGEgY3V0ZSBmaWxlIGJyb3dzZXIsIGF2YWlsYWJsZSBvbiB0aGUgbG9jYWwgbmV0d29yay4iCi0gICAgIExJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlICZhbXA7IFVua25vd24gJmFtcDsgTUlUICZhbXA7IElTQyIKKyAgICAgTElDRU5TRSA9ICJNSVQgJmFtcDsgSVNDICZhbXA7IFVua25vd24iCiAgICAgIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTcxZDk4YzBhMWRiNDI5NTY3ODdiMTkwOWM3NGE4NmNhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbm9kZV9tb2R1bGVzL2NvbnRlbnQtZGlzcG9zaXRpb24vTElDRU5TRTttZDU9YzZlMGNlMWU2ODhjNWZmMTZkYjA2YjcyNTllOWNkMjAgXAotICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ub2RlX21vZHVsZXMvZXhwcmVzcy9MSUNFTlNFO21kNT01NTEzYzAwYTVjMzZjZDM2MWRhODYzZGQ5YWE4ODc1ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL25vZGVfbW9kdWxlcy90b2lkZW50aWZpZXIvTElDRU5TRTttZDU9MWEyNjEwNzFhMDQ0ZDAyZWI2ZjJiYjQ3ZjUxYTM1MDIgXAorICAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ub2RlX21vZHVsZXMvZGVidWcvTElDRU5TRTttZDU9ZGRkODE1YTQ3NWU3MzM4YjBiZTdhMTRkOGVlMzVhOTkgXAogICAgICAgICAgICAgICAgICAgICAgICAgIC4uLgogCi0gICAgIFNSQ19VUkkgPSAibnBtOi8vcmVnaXN0cnkubnBtanMub3JnO25hbWU9Y3V0ZS1maWxlczt2ZXJzaW9uPSR7UFZ9IgotICAgICBOUE1fU0hSSU5LV1JBUCA6PSAiJHtUSElTRElSfS8ke1BOfS9ucG0tc2hyaW5rd3JhcC5qc29uIgotICAgICBOUE1fTE9DS0RPV04gOj0gIiR7VEhJU0RJUn0vJHtQTn0vbG9ja2Rvd24uanNvbiIKLSAgICAgaW5oZXJpdCBucG0KLSAgICAgIyBNdXN0IGJlIHNldCBhZnRlciBpbmhlcml0IG5wbSBzaW5jZSB0aGF0IGl0c2VsZiBzZXRzIFMKLSAgICAgUyA9ICIke1dPUktESVJ9L25wbXBrZyIKKyAgICAgU1JDX1VSSSA9ICIgXAorICAgICAgICAgbnBtOi8vcmVnaXN0cnkubnBtanMub3JnLztwYWNrYWdlPWN1dGUtZmlsZXM7dmVyc2lvbj0ke1BWfSBcCisgICAgICAgICBucG1zdzovLyR7VEhJU0RJUn0vJHtCUE59L25wbS1zaHJpbmt3cmFwLmpzb24gXAorICAgICAiCiAKLSAgICAgTElDRU5TRV8ke1BOfS1jb250ZW50LWRpc3Bvc2l0aW9uID0gIk1JVCIKLSAgICAgLi4uCi0gICAgIExJQ0VOU0VfJHtQTn0tZXhwcmVzcyA9ICJNSVQiCisgICAgIFMgPSAiJHtXT1JLRElSfS9ucG0iCisKKyAgICAgaW5oZXJpdCBucG0KKwogICAgICBMSUNFTlNFXyR7UE59ID0gIk1JVCIKKyAgICAgTElDRU5TRV8ke1BOfS1hY2NlcHRzID0gIk1JVCIKKyAgICAgTElDRU5TRV8ke1BOfS1hcnJheS1mbGF0dGVuID0gIk1JVCIKKyAgICAgLi4uCisgICAgIExJQ0VOU0VfJHtQTn0tdmFyeSA9ICJNSVQiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgVGhyZWUga2V5IHBvaW50cyBleGlzdCBpbiB0aGUgcHJldmlvdXMgZXhhbXBsZToKICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KQEAgLTEwNzE3LDExICsxMDc0NiwxMCBAQAogICAgICAgICAgICAgICAgICAgICBIb3dldmVyLCB0aGUgPGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPiBsb29rcyBsaWtlIHRoZQogICAgICAgICAgICAgICAgICAgICBmb2xsb3dpbmc6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL21hcnRpbmFnbHYvY3V0ZS1maWxlcy5naXQ7cHJvdG9jb2w9aHR0cHMgXAotICAgICAgICAgICAgICAgbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO25hbWU9Y29tbWFuZGVyO3ZlcnNpb249Mi45LjA7c3ViZGlyPW5vZGVfbW9kdWxlcy9jb21tYW5kZXIgXAotICAgICAgICAgICAgICAgbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO25hbWU9ZXhwcmVzczt2ZXJzaW9uPTQuMTQuMDtzdWJkaXI9bm9kZV9tb2R1bGVzL2V4cHJlc3MgXAotICAgICAgICAgICAgICAgbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO25hbWU9Y29udGVudC1kaXNwb3NpdGlvbjt2ZXJzaW9uPTAuMy4wO3N1YmRpcj1ub2RlX21vZHVsZXMvY29udGVudC1kaXNwb3NpdGlvbiBcCi0gICAgICAgICAgICAgICAiCisgICAgIFNSQ19VUkkgPSAiIFwKKyAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vbWFydGluYWdsdi9jdXRlLWZpbGVzLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICBucG1zdzovLyR7VEhJU0RJUn0vJHtCUE59L25wbS1zaHJpbmt3cmFwLmpzb24gXAorICAgICAgICAgIgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIEluIHRoaXMgZXhhbXBsZSwgdGhlIG1haW4gbW9kdWxlIGlzIHRha2VuIGZyb20gdGhlIEdpdAogICAgICAgICAgICAgICAgICAgICByZXBvc2l0b3J5IGFuZCBkZXBlbmRlbnRzIGFyZSB0YWtlbiBmcm9tIHRoZSBOUE0gcmVnaXN0cnkuCkBAIC0xMDgyMiw3ICsxMDg1MCw3IEBACiAgICAgICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgQml0QmFrZSBjb21tYW5kIGZvcm0gdG8gZmV0Y2ggYWxsIHRoZQogICAgICAgICAgICAgICAgIG5lY2Vzc2FyeSBzb3VyY2VzIHdpdGhvdXQgc3RhcnRpbmcgdGhlIGJ1aWxkOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBiaXRiYWtlIC1jIDxyZXBsYWNlYWJsZT50YXJnZXQ8L3JlcGxhY2VhYmxlPiBydW5hbGw9ImZldGNoIgorICAgICAkIGJpdGJha2UgPHJlcGxhY2VhYmxlPnRhcmdldDwvcmVwbGFjZWFibGU+IC0tcnVuYWxsPWZldGNoCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIFRoaXMgdmFyaWF0aW9uIG9mIHRoZSBCaXRCYWtlIGNvbW1hbmQgZ3VhcmFudGVlcyB0aGF0IHlvdQogICAgICAgICAgICAgICAgIGhhdmUgYWxsIHRoZSBzb3VyY2VzIGZvciB0aGF0IEJpdEJha2UgdGFyZ2V0IHNob3VsZCB5b3UKQEAgLTEwODQ1LDE1ICsxMDg3Myw2IEBACiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZSBZb2N0byBQcm9qZWN0IHVzZXMgU3lzVmluaXQgYXMgdGhlIGluaXRpYWxpemF0aW9uCi0gICAgICAgICAgICBtYW5hZ2VyLgotICAgICAgICAgICAgSG93ZXZlciwgc3VwcG9ydCBhbHNvIGV4aXN0cyBmb3Igc3lzdGVtZCwKLSAgICAgICAgICAgIHdoaWNoIGlzIGEgZnVsbCByZXBsYWNlbWVudCBmb3IgaW5pdCB3aXRoCi0gICAgICAgICAgICBwYXJhbGxlbCBzdGFydGluZyBvZiBzZXJ2aWNlcywgcmVkdWNlZCBzaGVsbCBvdmVyaGVhZCBhbmQgb3RoZXIKLSAgICAgICAgICAgIGZlYXR1cmVzIHRoYXQgYXJlIHVzZWQgYnkgbWFueSBkaXN0cmlidXRpb25zLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBXaXRoaW4gdGhlIHN5c3RlbSwgU3lzVmluaXQgdHJlYXRzIHN5c3RlbSBjb21wb25lbnRzIGFzIHNlcnZpY2VzLgogICAgICAgICAgICAgVGhlc2Ugc2VydmljZXMgYXJlIG1haW50YWluZWQgYXMgc2hlbGwgc2NyaXB0cyBzdG9yZWQgaW4gdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+L2V0Yy9pbml0LmQvPC9maWxlbmFtZT4gZGlyZWN0b3J5LgpAQCAtMTExNjQsMTggKzExMTgzLDE4IEBACiAKICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgIFRvIGNyZWF0ZSB0aGUgcmVhZC1vbmx5IHJvb3QgZmlsZXN5c3RlbSwgc2ltcGx5IGFkZCB0aGUKLSAgICAgICAgICAgICAgICAicmVhZC1vbmx5LXJvb3RmcyIgZmVhdHVyZSB0byB5b3VyIGltYWdlLgotICAgICAgICAgICAgICAgIFVzaW5nIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nIHN0YXRlbWVudHMgaW4geW91cgotICAgICAgICAgICAgICAgIGltYWdlIHJlY2lwZSBvciBmcm9tIHdpdGhpbiB0aGUKLSAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm91bmQgaW4gdGhlCi0gICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjYnVpbGQtZGlyZWN0b3J5Jz5CdWlsZCBEaXJlY3Rvcnk8L3VsaW5rPgotICAgICAgICAgICAgICAgIGNhdXNlcyB0aGUgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZSBhIHJlYWQtb25seSByb290IGZpbGVzeXN0ZW06CisgICAgICAgICAgICAgICAgInJlYWQtb25seS1yb290ZnMiIGZlYXR1cmUgdG8geW91ciBpbWFnZSwgbm9ybWFsbHkgaW4gb25lIG9mIHR3byB3YXlzLgorICAgICAgICAgICAgICAgIFRoZSBmaXJzdCB3YXkgaXMgdG8gYWRkIHRoZSAicmVhZC1vbmx5LXJvb3RmcyIgaW1hZ2UgZmVhdHVyZQorICAgICAgICAgICAgICAgIGluIHRoZSBpbWFnZSdzIHJlY2lwZSBmaWxlIHZpYSB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+SU1BR0VfRkVBVFVSRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZToKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIElNQUdFX0ZFQVRVUkVTID0gInJlYWQtb25seS1yb290ZnMiCisgICAgIElNQUdFX0ZFQVRVUkVTICs9ICJyZWFkLW9ubHktcm9vdGZzIgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBvcgorICAgICAgICAgICAgICAgIEFzIGFuIGFsdGVybmF0aXZlLCB5b3UgY2FuIGFkZCB0aGUgc2FtZSBmZWF0dXJlIGZyb20gd2l0aGluIHlvdXIKKyAgICAgICAgICAgICAgICBidWlsZCBkaXJlY3RvcnkncyA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgd2l0aCB0aGUKKyAgICAgICAgICAgICAgICBhc3NvY2lhdGVkIDxmaWxlbmFtZT5FWFRSQV9JTUFHRV9GRUFUVVJFUzwvZmlsZW5hbWU+IHZhcmlhYmxlLCBhcyBpbjoKICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIEVYVFJBX0lNQUdFX0ZFQVRVUkVTICs9ICJyZWFkLW9ubHktcm9vdGZzIgorICAgICBFWFRSQV9JTUFHRV9GRUFUVVJFUyA9ICJyZWFkLW9ubHktcm9vdGZzIgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTIwMzgsMTUgKzEyMDU3LDE1IEBACiAgICAgICAgICAgICAgICAgICAgIEluIG9yZGVyIHRvIHJ1biB0ZXN0cyBvbiBoYXJkd2FyZSwgeW91IG5lZWQgdG8gc2V0CiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5URVNUX1RBUkdFVDwvZmlsZW5hbWU+IHRvIGFuIGFwcHJvcHJpYXRlIHZhbHVlLgogICAgICAgICAgICAgICAgICAgICBGb3IgUUVNVSwgeW91IGRvIG5vdCBoYXZlIHRvIGNoYW5nZSBhbnl0aGluZywgdGhlIGRlZmF1bHQKLSAgICAgICAgICAgICAgICAgICAgdmFsdWUgaXMgIlFlbXVUYXJnZXQiLgorICAgICAgICAgICAgICAgICAgICB2YWx1ZSBpcyAicWVtdSIuCiAgICAgICAgICAgICAgICAgICAgIEZvciBydW5uaW5nIHRlc3RzIG9uIGhhcmR3YXJlLCB0aGUgZm9sbG93aW5nIG9wdGlvbnMgZXhpc3Q6CiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJTaW1wbGVSZW1vdGVUYXJnZXQiOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hvb3NlICJTaW1wbGVSZW1vdGVUYXJnZXQiIGlmIHlvdSBhcmUgZ29pbmcgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+InNpbXBsZXJlbW90ZSI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBDaG9vc2UgInNpbXBsZXJlbW90ZSIgaWYgeW91IGFyZSBnb2luZyB0bwogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1biB0ZXN0cyBvbiBhIHRhcmdldCBzeXN0ZW0gdGhhdCBpcyBhbHJlYWR5CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVubmluZyB0aGUgaW1hZ2UgdG8gYmUgdGVzdGVkIGFuZCBpcyBhdmFpbGFibGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiB0aGUgbmV0d29yay4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIHVzZSAiU2ltcGxlUmVtb3RlVGFyZ2V0IiBpbiBjb25qdW5jdGlvbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gdXNlICJzaW1wbGVyZW1vdGUiIGluIGNvbmp1bmN0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBlaXRoZXIgcmVhbCBoYXJkd2FyZSBvciBhbiBpbWFnZSBydW5uaW5nCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aGluIGEgc2VwYXJhdGVseSBzdGFydGVkIFFFTVUgb3IgYW55CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3RoZXIgdmlydHVhbCBtYWNoaW5lIG1hbmFnZXIuCkBAIC0xMjIyMSw3ICsxMjI0MCw3IEBACiAgICAgICAgICAgICAgICAgPHRpdGxlPlBvd2VyIENvbnRyb2w8L3RpdGxlPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgIEZvciBtb3N0IGhhcmR3YXJlIHRhcmdldHMgb3RoZXIgdGhhbiBTaW1wbGVSZW1vdGVUYXJnZXQsCisgICAgICAgICAgICAgICAgICAgIEZvciBtb3N0IGhhcmR3YXJlIHRhcmdldHMgb3RoZXIgdGhhbiAic2ltcGxlcmVtb3RlIiwKICAgICAgICAgICAgICAgICAgICAgeW91IGNhbiBjb250cm9sIHBvd2VyOgogICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtMTI2MTgsNyArMTI2MzcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPjxmaWxlbmFtZT50YXJnZXQ8L2ZpbGVuYW1lPjo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHRhcmdldCBjb250cm9sbGVyIG9iamVjdCB1c2VkIHRvIGRlcGxveQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHN0YXJ0IGFuIGltYWdlIG9uIGEgcGFydGljdWxhciB0YXJnZXQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChlLmcuIFFlbXVUYXJnZXQsIFNpbXBsZVJlbW90ZSwgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoZS5nLiBRZW11LCBTaW1wbGVSZW1vdGUsIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgU3lzdGVtZGJvb3RUYXJnZXQpLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGVzdHMgdXN1YWxseSB1c2UgdGhlIGZvbGxvd2luZzoKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXFlbXUueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2Rldi1tYW51YWwvZGV2LW1hbnVhbC1xZW11LnhtbAppbmRleCBmNWEwZDY0Li41Y2NjMGRmIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXFlbXUueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtcWVtdS54bWwKQEAgLTE1MSwxMyArMTUxLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhpcyBleGFtcGxlIHN0YXJ0cyBRRU1VIHdpdGgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+IHNldCB0byAicWVtdXg4NiIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPk1BQ0hJTkU8L3JlcGxhY2VhYmxlPiBzZXQgdG8gInFlbXV4ODYtNjQiLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFzc3VtaW5nIGEgc3RhbmRhcmQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvdWxpbms+LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ydW5xZW11PC9maWxlbmFtZT4gYXV0b21hdGljYWxseSBmaW5kcyB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnpJbWFnZS1xZW11eDg2LmJpbjwvZmlsZW5hbWU+IGltYWdlIGZpbGUgYW5kCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmJ6SW1hZ2UtcWVtdXg4Ni02NC5iaW48L2ZpbGVuYW1lPiBpbWFnZSBmaWxlIGFuZAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni0yMDE0MDcwNzA3NDYxMS5yb290ZnMuZXh0MzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LTY0LTIwMjAwMjE4MDAyODUwLnJvb3Rmcy5leHQ0PC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYXNzdW1pbmcgdGhlIGN1cnJlbnQgYnVpbGQgY3JlYXRlZCBhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmNvcmUtaW1hZ2UtbWluaW1hbDwvZmlsZW5hbWU+IGltYWdlKS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bm90ZT4KQEAgLTE2Niw3ICsxNjYsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRpbWVzdGFtcC4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHJ1bnFlbXUgcWVtdXg4NgorICAgICAkIHJ1bnFlbXUgcWVtdXg4Ni02NAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTE3NSw3ICsxNzUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoaXMgY29tbWFuZCwgaG93ZXZlciwgc3BlY2lmaWNhbGx5IHByb3ZpZGVzIHRoZSBpbWFnZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCByb290IGZpbGVzeXN0ZW0gdHlwZS4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgICQgcnVucWVtdSBxZW11eDg2IGNvcmUtaW1hZ2UtbWluaW1hbCBleHQzCisgICAgICQgcnVucWVtdSBxZW11eDg2LTY0IGNvcmUtaW1hZ2UtbWluaW1hbCBleHQ0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgpAQCAtMTg4LDcgKzE4OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmUgaW5zdGFsbGVkIChzZWUgdGhlIHByZXZpb3VzIGRlc2NyaXB0aW9uIGZvciB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YXVkaW88L2ZpbGVuYW1lPiBvcHRpb24gZm9yIG1vcmUgaW5mb3JtYXRpb24pLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBydW5xZW11IHFlbXV4ODYgcmFtZnMgYXVkaW8KKyAgICAgJCBydW5xZW11IHFlbXV4ODYtNjQgcmFtZnMgYXVkaW8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CkBAIC0yMDAsNyArMjAwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cmVwbGFjZWFibGU+S0VSTkVMPC9yZXBsYWNlYWJsZT4sIG9yCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHJlcGxhY2VhYmxlPlZNPC9yZXBsYWNlYWJsZT4gb3B0aW9uLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBydW5xZW11IGV4dDMKKyAgICAgJCBydW5xZW11IGV4dDQKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CkBAIC0yMDksOSArMjA5LDkgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGcm9tIHRoZSA8ZmlsZW5hbWU+LndpYy52bWRrPC9maWxlbmFtZT4sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJ1bnFlbXU8L2ZpbGVuYW1lPiBkZXRlcm1pbmVzIHRoZSBRRU1VCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJjaGl0ZWN0dXJlICg8cmVwbGFjZWFibGU+TUFDSElORTwvcmVwbGFjZWFibGU+KSB0byBiZQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICJxZW11eDg2IiBhbmQgdGhlIHJvb3QgZmlsZXN5c3RlbSB0eXBlIHRvIGJlICJ2bWRrIi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAicWVtdXg4Ni02NCIgYW5kIHRoZSByb290IGZpbGVzeXN0ZW0gdHlwZSB0byBiZSAidm1kayIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHJ1bnFlbXUgL2hvbWUvc2NvdHQtbGVub3ZvL3ZtL2NvcmUtaW1hZ2UtbWluaW1hbC1xZW11eDg2LndpYy52bWRrCisgICAgICQgcnVucWVtdSAvaG9tZS9zY290dC1sZW5vdm8vdm0vY29yZS1pbWFnZS1taW5pbWFsLXFlbXV4ODYtNjQud2ljLnZtZGsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgpAQCAtMjk2LDcgKzI5Niw3IEBACiAgICAgICAgICAgICAgICAgICAgIGV4dHJhY3RzIGl0IHRvIGEgZGlyZWN0b3J5IG5hbWVkCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT50ZXN0LW5mczwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIHJ1bnFlbXUtZXh0cmFjdC1zZGsgLi90bXAvZGVwbG95L2ltYWdlcy9xZW11eDg2L2NvcmUtaW1hZ2Utc2F0by1xZW11eDg2LnRhci5iejIgdGVzdC1uZnMKKyAgICAgcnVucWVtdS1leHRyYWN0LXNkayAuL3RtcC9kZXBsb3kvaW1hZ2VzL3FlbXV4ODYtNjQvY29yZS1pbWFnZS1zYXRvLXFlbXV4ODYtNjQudGFyLmJ6MiB0ZXN0LW5mcwogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTMxMCw3ICszMTAsNyBAQAogICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdXNpbmcgdGhlIDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgaW1hZ2U6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgcnVucWVtdSBxZW11eDg2IC4vdGVzdC1uZnMKKyAgICAgcnVucWVtdSBxZW11eDg2LTY0IC4vdGVzdC1uZnMKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLXN0YXJ0LnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sCmluZGV4IDU5ZmZhNDkuLjhjYjU2MzEgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwtc3RhcnQueG1sCkBAIC03LDcgKzcsNyBAQAogPHRpdGxlPlNldHRpbmcgVXAgdG8gVXNlIHRoZSBZb2N0byBQcm9qZWN0PC90aXRsZT4KIAogPHBhcmE+Ci0gICAgVGhpcyBjaGFwdGVyIHByb3ZpZGVzIHByb2NlZHVyZXMgcmVsYXRlZCB0byBnZXR0aW5nIHNldCB1cCB0byB1c2UgdGhlCisgICAgVGhpcyBjaGFwdGVyIHByb3ZpZGVzIGd1aWRhbmNlIG9uIGhvdyB0byBwcmVwYXJlIHRvIHVzZSB0aGUKICAgICBZb2N0byBQcm9qZWN0LgogICAgIFlvdSBjYW4gbGVhcm4gYWJvdXQgY3JlYXRpbmcgYSB0ZWFtIGVudmlyb25tZW50IHRoYXQgZGV2ZWxvcHMgdXNpbmcgdGhlCiAgICAgWW9jdG8gUHJvamVjdCwgaG93IHRvIHNldCB1cCBhCkBAIC0yNCw5ICsyNCw5IEBACiAgICAgICAgIFByb2plY3QgaW4gYSB0ZWFtIGRldmVsb3BtZW50IGVudmlyb25tZW50LCBvciBob3cgdG8gc2NhbGUgaXQgZm9yIGEKICAgICAgICAgbGFyZ2UgdGVhbSBvZiBkZXZlbG9wZXJzLgogICAgICAgICBZb3UgY2FuIGFkYXB0IHRoZSBZb2N0byBQcm9qZWN0IHRvIG1hbnkgZGlmZmVyZW50IHVzZSBjYXNlcyBhbmQKLSAgICAgICAgc2NlbmFyaW9zLgotICAgICAgICBIb3dldmVyLCB0aGlzIGZsZXhpYmlsaXR5IGNvdWxkIGNhdXNlIGRpZmZpY3VsdGllcyBpZiB5b3UgYXJlIHRyeWluZwotICAgICAgICB0byBjcmVhdGUgYSB3b3JraW5nIHNldHVwIHRoYXQgc2NhbGVzIGFjcm9zcyBhIGxhcmdlIHRlYW0uCisgICAgICAgIHNjZW5hcmlvczsKKyAgICAgICAgaG93ZXZlciwgdGhpcyBmbGV4aWJpbGl0eSBjb3VsZCBjYXVzZSBkaWZmaWN1bHRpZXMgaWYgeW91IGFyZSB0cnlpbmcKKyAgICAgICAgdG8gY3JlYXRlIGEgd29ya2luZyBzZXR1cCB0aGF0IHNjYWxlcyBlZmZlY3RpdmVseS4KICAgICA8L3BhcmE+CiAKICAgICA8cGFyYT4KQEAgLTM1LDE3ICszNSwxNyBAQAogICAgICAgICB0aGF0IGNhbiBoZWxwIHlvdSBnZXQgdGhlIHJlc3VsdHMgeW91IHdhbnQuCiAgICAgICAgIFRoZSBwcm9jZWR1cmUgaXMgaGlnaC1sZXZlbCBhbmQgcHJlc2VudHMgc29tZSBvZiB0aGUgcHJvamVjdCdzIG1vc3QKICAgICAgICAgc3VjY2Vzc2Z1bCBleHBlcmllbmNlcywgcHJhY3RpY2VzLCBzb2x1dGlvbnMsIGFuZCBhdmFpbGFibGUKLSAgICAgICAgdGVjaG5vbG9naWVzIHRoYXQgaGF2ZSBwcm92ZWQgdG8gd29yayB3ZWxsIGluIHRoZSBwYXN0LgotICAgICAgICBLZWVwIGluIG1pbmQsIHRoZSBwcm9jZWR1cmUgaGVyZSBpcyBhIHN0YXJ0aW5nIHBvaW50LgorICAgICAgICB0ZWNobm9sb2dpZXMgdGhhdCBoYXZlIHByb3ZlZCB0byB3b3JrIHdlbGwgaW4gdGhlIHBhc3Q7CisgICAgICAgIGhvd2V2ZXIsIGtlZXAgaW4gbWluZCwgdGhlIHByb2NlZHVyZSBoZXJlIGlzIHNpbXBseSBhIHN0YXJ0aW5nIHBvaW50LgogICAgICAgICBZb3UgY2FuIGJ1aWxkIG9mZiB0aGVzZSBzdGVwcyBhbmQgY3VzdG9taXplIHRoZSBwcm9jZWR1cmUgdG8gZml0IGFueQogICAgICAgICBwYXJ0aWN1bGFyIHdvcmtpbmcgZW52aXJvbm1lbnQgYW5kIHNldCBvZiBwcmFjdGljZXMuCiAgICAgICAgIDxvcmRlcmVkbGlzdD4KICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+RGV0ZXJtaW5lIFdobyBpcyBHb2luZyB0byBiZSBEZXZlbG9waW5nOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gdW5kZXJzdGFuZCB3aG8gaXMgZ29pbmcgdG8gYmUgZG9pbmcgYW55dGhpbmcKKyAgICAgICAgICAgICAgICBZb3UgZmlyc3QgbmVlZCB0byB1bmRlcnN0YW5kIHdobyBpcyBnb2luZyB0byBiZSBkb2luZyBhbnl0aGluZwogICAgICAgICAgICAgICAgIHJlbGF0ZWQgdG8gdGhlIFlvY3RvIFByb2plY3QgYW5kIGRldGVybWluZSB0aGVpciByb2xlcy4KICAgICAgICAgICAgICAgICBNYWtpbmcgdGhpcyBkZXRlcm1pbmF0aW9uIGlzIGVzc2VudGlhbCB0byBjb21wbGV0aW5nCi0gICAgICAgICAgICAgICAgc3RlcHMgdHdvIGFuZCB0aHJlZSwgd2hpY2ggYXJlIHRvIGdldCB5b3VyIGVxdWlwbWVudCB0b2dldGhlcgorICAgICAgICAgICAgICAgIHN1YnNlcXVlbnQgc3RlcHMsIHdoaWNoIGFyZSB0byBnZXQgeW91ciBlcXVpcG1lbnQgdG9nZXRoZXIKICAgICAgICAgICAgICAgICBhbmQgc2V0IHVwIHlvdXIgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQncyBoYXJkd2FyZSB0b3BvbG9neS4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTY0LDggKzY0LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+QnVpbGQgRW5naW5lZXI6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIHR5cGUgb2YgZGV2ZWxvcGVyIG1hbmFnZXMgQXV0b2J1aWxkZXJzIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlbGVhc2VzLgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vdCBhbGwgZW52aXJvbm1lbnRzIG5lZWQgYSBCdWlsZCBFbmdpbmVlci4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWxlYXNlcy4gRGVwZW5kaW5nIG9uIHRoZSBzcGVjaWZpY3Mgb2YgdGhlIGVudmlyb25tZW50LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vdCBhbGwgc2l0dWF0aW9ucyBtaWdodCBuZWVkIGEgQnVpbGQgRW5naW5lZXIuCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlRlc3QgRW5naW5lZXI6PC9lbXBoYXNpcz4KQEAgLTg4LDYgKzg4LDExIEBACiAgICAgICAgICAgICAgICAgWW91IGNhbiBoZWxwIGVuc3VyZSBlZmZpY2llbmN5IGJ5IGhhdmluZyBhbnkgbWFjaGluZXMgdXNlZAogICAgICAgICAgICAgICAgIGZvciB0ZXN0aW5nIG9yIHRoYXQgcnVuIEF1dG9idWlsZGVycyBiZSBhcyBoaWdoIHBlcmZvcm1hbmNlCiAgICAgICAgICAgICAgICAgYXMgcG9zc2libGUuCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIEdpdmVuIHN1ZmZpY2llbnQgcHJvY2Vzc2luZyBwb3dlciwgeW91IG1pZ2h0IGFsc28gY29uc2lkZXIKKyAgICAgICAgICAgICAgICAgICAgYnVpbGRpbmcgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBjb250YWluZXJzIHRvIGJlIHJ1bgorICAgICAgICAgICAgICAgICAgICB1bmRlciBEb2NrZXIsIHdoaWNoIGlzIGRlc2NyaWJlZCBsYXRlci4KKyAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlVuZGVyc3RhbmQgdGhlIEhhcmR3YXJlIFRvcG9sb2d5IG9mIHRoZSBFbnZpcm9ubWVudDo8L2VtcGhhc2lzPgpAQCAtMTE0LDEwICsxMTksMTAgQEAKICAgICAgICAgICAgICAgICBhbmQgYW55IHNvZnR3YXJlIHlvdSBhcmUgZGV2ZWxvcGluZyB1bmRlciB0aGUgY29udHJvbCBvZiBhbiBTQ00KICAgICAgICAgICAgICAgICBzeXN0ZW0gdGhhdCBpcyBjb21wYXRpYmxlICAgd2l0aCB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbQogICAgICAgICAgICAgICAgIGlzIGFkdmlzYWJsZS4KLSAgICAgICAgICAgICAgICBPZiB0aGUgU0NNcyBCaXRCYWtlIHN1cHBvcnRzLCB0aGUgWW9jdG8gUHJvamVjdCB0ZWFtIHN0cm9uZ2x5CisgICAgICAgICAgICAgICAgT2YgYWxsIG9mIHRoZSBTQ01zIHN1cHBvcnRlZCBieSBCaXRCYWtlLCB0aGUgWW9jdG8gUHJvamVjdCB0ZWFtIHN0cm9uZ2x5CiAgICAgICAgICAgICAgICAgcmVjb21tZW5kcyB1c2luZwogICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX09NX1VSTDsjZ2l0Jz5HaXQ8L3VsaW5rPi4KLSAgICAgICAgICAgICAgICBHaXQgaXMgYSBkaXN0cmlidXRlZCBzeXN0ZW0gdGhhdCBpcyBlYXN5IHRvIGJhY2t1cCwKKyAgICAgICAgICAgICAgICBHaXQgaXMgYSBkaXN0cmlidXRlZCBzeXN0ZW0gdGhhdCBpcyBlYXN5IHRvIGJhY2sgdXAsCiAgICAgICAgICAgICAgICAgYWxsb3dzIHlvdSB0byB3b3JrIHJlbW90ZWx5LCBhbmQgdGhlbiBjb25uZWN0cyBiYWNrIHRvIHRoZQogICAgICAgICAgICAgICAgIGluZnJhc3RydWN0dXJlLgogICAgICAgICAgICAgICAgIDxub3RlPgpAQCAtMzAyLDcgKzMwNyw3IEBACiAgICAgICAgICAgICAgICAgPHBhcmE+QXMgd2l0aCBhbnkgZGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQsIGl0IGlzIGltcG9ydGFudAogICAgICAgICAgICAgICAgIHRvIGRvY3VtZW50IHRoZSBwb2xpY3kgdXNlZCBhcyB3ZWxsIGFzIGFueSBtYWluIHByb2plY3QKICAgICAgICAgICAgICAgICBndWlkZWxpbmVzIHNvIHRoZXkgYXJlIHVuZGVyc3Rvb2QgYnkgZXZlcnlvbmUuCi0gICAgICAgICAgICAgICAgSXQgaXMgYWxzbyBhIGdvb2QgaWRlYSB0byBoYXZlIHdlbGwgc3RydWN0dXJlZAorICAgICAgICAgICAgICAgIEl0IGlzIGFsc28gYSBnb29kIGlkZWEgdG8gaGF2ZSB3ZWxsLXN0cnVjdHVyZWQKICAgICAgICAgICAgICAgICBjb21taXQgbWVzc2FnZXMsIHdoaWNoIGFyZSB1c3VhbGx5IGEgcGFydCBvZiBhIHByb2plY3QncwogICAgICAgICAgICAgICAgIGd1aWRlbGluZXMuCiAgICAgICAgICAgICAgICAgR29vZCBjb21taXQgbWVzc2FnZXMgYXJlIGVzc2VudGlhbCB3aGVuIGxvb2tpbmcgYmFjayBpbiB0aW1lIGFuZApAQCAtMzk0LDE2ICszOTksMTggQEAKICAgICAgICAgVGhpcyBzZWN0aW9uIHByb3ZpZGVzIHByb2NlZHVyZXMgdG8gc2V0IHVwIGEgc3lzdGVtIHRvIGJlIHVzZWQgYXMgeW91cgogICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyNoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdDwvdWxpbms+CiAgICAgICAgIGZvciBkZXZlbG9wbWVudCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KLSAgICAgICAgWW91ciBidWlsZCBob3N0IGNhbiBiZSBhIG5hdGl2ZSBMaW51eCBtYWNoaW5lIChyZWNvbW1lbmRlZCkgb3IgaXQgY2FuCisgICAgICAgIFlvdXIgYnVpbGQgaG9zdCBjYW4gYmUgYSBuYXRpdmUgTGludXggbWFjaGluZSAocmVjb21tZW5kZWQpLCBpdCBjYW4KICAgICAgICAgYmUgYSBtYWNoaW5lIChMaW51eCwgTWFjLCBvciBXaW5kb3dzKSB0aGF0IHVzZXMKLSAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL2Nyb3BzL2Fib3V0Lyc+Q1JPUFM8L3VsaW5rPiwKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXRodWIuY29tL2Nyb3BzL3Bva3ktY29udGFpbmVyJz5DUk9QUzwvdWxpbms+LAogICAgICAgICB3aGljaCBsZXZlcmFnZXMKLSAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4uCisgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LmRvY2tlci5jb20vJz5Eb2NrZXIgQ29udGFpbmVyczwvdWxpbms+IG9yIGl0IGNhbgorICAgICAgICBiZSBhIFdpbmRvd3MgbWFjaGluZSBjYXBhYmxlIG9mIHJ1bm5pbmcgV2luZG93cyBTdWJzeXN0ZW0gRm9yIExpbnV4IHYyIChXU0wpLgogICAgICAgICA8bm90ZT4KLSAgICAgICAgICAgIFlvdSBjYW5ub3QgdXNlIGEgYnVpbGQgaG9zdCB0aGF0IGlzIHVzaW5nIHRoZQotICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2luZG93c19TdWJzeXN0ZW1fZm9yX0xpbnV4Jz5XaW5kb3dzIFN1YnN5c3RlbSBmb3IgTGludXg8L3VsaW5rPgotICAgICAgICAgICAgKFdTTCkuCi0gICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIFdTTC4KKyAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoCisgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2luZG93c19TdWJzeXN0ZW1fZm9yX0xpbnV4Jz5XaW5kb3dzIFN1YnN5c3RlbSBmb3IgTGludXggdjE8L3VsaW5rPi4KKyAgICAgICAgICBJdCBpcyBjb21wYXRpYmxlIGJ1dCBub3Qgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgbm9yIHZhbGlkYXRlZCB3aXRoIFdTTHYyLgorICAgICAgICAgIElmIHlvdSBzdGlsbCBkZWNpZGUgdG8gdXNlIFdTTCBwbGVhc2UgdXBncmFkZSB0bworICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3Mvd3NsL3dzbDItaW5zdGFsbCc+V1NMdjI8L3VsaW5rPi4KICAgICAgICAgPC9ub3RlPgogICAgIDwvcGFyYT4KIApAQCAtNDQyLDcgKzQ0OSw3IEBACiAgICAgICAgICAgICAgICAgICAgIFlvdSBzaG91bGQgaGF2ZSBhIHJlYXNvbmFibHkgY3VycmVudCBMaW51eC1iYXNlZCBob3N0CiAgICAgICAgICAgICAgICAgICAgIHN5c3RlbS4KICAgICAgICAgICAgICAgICAgICAgWW91IHdpbGwgaGF2ZSB0aGUgYmVzdCByZXN1bHRzIHdpdGggYSByZWNlbnQgcmVsZWFzZSBvZgotICAgICAgICAgICAgICAgICAgICBGZWRvcmEsIG9wZW5TVVNFLCBEZWJpYW4sIFVidW50dSwgb3IgQ2VudE9TIGFzIHRoZXNlCisgICAgICAgICAgICAgICAgICAgIEZlZG9yYSwgb3BlblNVU0UsIERlYmlhbiwgVWJ1bnR1LCBSSEVMIG9yIENlbnRPUyBhcyB0aGVzZQogICAgICAgICAgICAgICAgICAgICByZWxlYXNlcyBhcmUgZnJlcXVlbnRseSB0ZXN0ZWQgYWdhaW5zdCB0aGUgWW9jdG8gUHJvamVjdAogICAgICAgICAgICAgICAgICAgICBhbmQgb2ZmaWNpYWxseSBzdXBwb3J0ZWQuCiAgICAgICAgICAgICAgICAgICAgIEZvciBhIGxpc3Qgb2YgdGhlIGRpc3RyaWJ1dGlvbnMgdW5kZXIgdmFsaWRhdGlvbiBhbmQgdGhlaXIKQEAgLTQ2MCwyMyArNDY3LDI2IEBACiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5NZWV0IE1pbmltYWwgVmVyc2lvbiBSZXF1aXJlbWVudHM6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gc2hvdWxkIGJlIGFibGUgdG8gcnVuIG9uIGFueQogICAgICAgICAgICAgICAgICAgICBtb2Rlcm4gZGlzdHJpYnV0aW9uIHRoYXQgaGFzIHRoZSBmb2xsb3dpbmcgdmVyc2lvbnMgZm9yCi0gICAgICAgICAgICAgICAgICAgIEdpdCwgdGFyLCBhbmQgUHl0aG9uLgorICAgICAgICAgICAgICAgICAgICBHaXQsIHRhciwgUHl0aG9uIGFuZCBnY2MuCiAgICAgICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgR2l0IDEuOC4zLjEgb3IgZ3JlYXRlcgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhciAxLjI3IG9yIGdyZWF0ZXIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXIgMS4yOCBvciBncmVhdGVyCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIDMuNC4wIG9yIGdyZWF0ZXIuCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgUHl0aG9uIDMuNS4wIG9yIGdyZWF0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBnY2MgNS4wIG9yIGdyZWF0ZXIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIElmIHlvdXIgYnVpbGQgaG9zdCBkb2VzIG5vdCBtZWV0IGFueSBvZiB0aGVzZSB0aHJlZSBsaXN0ZWQKICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiByZXF1aXJlbWVudHMsIHlvdSBjYW4gdGFrZSBzdGVwcyB0byBwcmVwYXJlIHRoZQogICAgICAgICAgICAgICAgICAgICBzeXN0ZW0gc28gdGhhdCB5b3UgY2FuIHN0aWxsIHVzZSB0aGUgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtZ2l0LXRhci1hbmQtcHl0aG9uLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiBWZXJzaW9uczwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjcmVxdWlyZWQtZ2l0LXRhci1weXRob24tYW5kLWdjYy12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIFB5dGhvbiBhbmQgZ2NjIFZlcnNpb25zPC91bGluaz4iCiAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCBmb3IKICAgICAgICAgICAgICAgICAgICAgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgpAQCAtNTE3LDcgKzUyNyw3IEBACiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBXaXRoCi0gICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvY3JvcHMvYmxvYi9tYXN0ZXIvUkVBRE1FLm1kJz5DUk9QUzwvdWxpbms+LAorICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXRodWIuY29tL2Nyb3BzL3Bva3ktY29udGFpbmVyJz5DUk9QUzwvdWxpbms+LAogICAgICAgICAgICAgd2hpY2ggbGV2ZXJhZ2VzCiAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL3d3dy5kb2NrZXIuY29tLyc+RG9ja2VyIENvbnRhaW5lcnM8L3VsaW5rPiwKICAgICAgICAgICAgIHlvdSBjYW4gY3JlYXRlIGEgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudCBlbnZpcm9ubWVudCB0aGF0CkBAIC02NTQsMTUgKzY2NCwxNDcgQEAKICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFRvYXN0ZXIgVXNlciBNYW51YWwuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nc2V0dGluZy11cC10by11c2Utd3NsJz4KKyAgICAgICAgPHRpdGxlPlNldHRpbmcgVXAgdG8gVXNlIFdpbmRvd3MgU3Vic3lzdGVtIEZvciBMaW51eCAoV1NMdjIpPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFdpdGggPHVsaW5rIHVybD0naHR0cHM6Ly9kb2NzLm1pY3Jvc29mdC5jb20vZW4tdXMvd2luZG93cy93c2wvd3NsMi1hYm91dCc+CisgICAgICAgICAgICBXaW5kb3dzIFN1YnN5c3RlbSBmb3IgTGludXggKFdTTHYyKTwvdWxpbms+LCB5b3UgY2FuIGNyZWF0ZSBhCisgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50IGVudmlyb25tZW50IHRoYXQgYWxsb3dzIHlvdSB0byBidWlsZAorICAgICAgICAgICAgb24gV2luZG93cy4gWW91IGNhbiBzZXQgdXAgYSBMaW51eCBkaXN0cmlidXRpb24gaW5zaWRlIFdpbmRvd3MKKyAgICAgICAgICAgIGluIHdoaWNoIHlvdSBjYW4gZGV2ZWxvcCB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgRm9sbG93IHRoZXNlIGdlbmVyYWwgc3RlcHMgdG8gcHJlcGFyZSBhIFdpbmRvd3MgbWFjaGluZSB1c2luZyBXU0x2MgorICAgICAgICAgICAgYXMgeW91ciBZb2N0byBQcm9qZWN0IGJ1aWxkIGhvc3Q6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+TWFrZSBzdXJlIHlvdXIgV2luZG93cyAxMCBtYWNoaW5lIGlzIGNhcGFibGUgb2YgcnVubmluZyBXU0x2Mjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgCisgICAgICAgICAgICAgICAgICAgIFdTTHYyIGlzIG9ubHkgYXZhaWxhYmxlIGZvciBXaW5kb3dzIDEwIGJ1aWxkcyA+IDE4OTE3LiBUbworICAgICAgICAgICAgICAgICAgICBjaGVjayB3aGljaCBidWlsZCB2ZXJzaW9uIHlvdSBhcmUgcnVubmluZywgeW91IG1heSBvcGVuIGEKKyAgICAgICAgICAgICAgICAgICAgY29tbWFuZCBwcm9tcHQgb24gV2luZG93cyBhbmQgZXhlY3V0ZSB0aGUgY29tbWFuZCAidmVyIi4KKyAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIEM6XFVzZXJzXG15dXNlcj4gdmVyCisKKyAgICBNaWNyb3NvZnQgV2luZG93cyBbVmVyc2lvbiAxMC4wLjE5MDQxLjE1M10KKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGJ1aWxkIGlzIGNhcGFibGUgb2YgcnVubmluZyBXU0x2MiB5b3UgbWF5IGNvbnRpbnVlLAorICAgICAgICAgICAgICAgICAgICBmb3IgbW9yZSBpbmZvcm1hdGlvbiBvbiB0aGlzIHN1YmplY3Qgb3IgaW5zdHJ1Y3Rpb25zIG9uIGhvdworICAgICAgICAgICAgICAgICAgICB0byB1cGdyYWRlIHRvIFdTTHYyIHZpc2l0IDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3Mvd3NsL3dzbDItaW5zdGFsbCc+V2luZG93cyAxMCBXU0x2MjwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkluc3RhbGwgdGhlIExpbnV4IGRpc3RyaWJ1dGlvbiBvZiB5b3VyIGNob2ljZSBpbnNpZGUgV2luZG93cyAxMDo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBPbmNlIHlvdSBrbm93IHlvdXIgdmVyc2lvbiBvZiBXaW5kb3dzIDEwIHN1cHBvcnRzIFdTTHYyLAorICAgICAgICAgICAgICAgICAgICB5b3UgY2FuIGluc3RhbGwgdGhlIGRpc3RyaWJ1dGlvbiBvZiB5b3VyIGNob2ljZSBmcm9tIHRoZQorICAgICAgICAgICAgICAgICAgICBNaWNyb3NvZnQgU3RvcmUuCisgICAgICAgICAgICAgICAgICAgIE9wZW4gdGhlIE1pY3Jvc29mdCBTdG9yZSBhbmQgc2VhcmNoIGZvciBMaW51eC4gV2hpbGUgdGhlcmUKKyAgICAgICAgICAgICAgICAgICAgYXJlIHNldmVyYWwgTGludXggZGlzdHJpYnV0aW9ucyBhdmFpbGFibGUsIHRoZSBhc3N1bXB0aW9uCisgICAgICAgICAgICAgICAgICAgIGlzIHRoYXQgeW91ciBwaWNrIHdpbGwgYmUgb25lIG9mIHRoZSBkaXN0cmlidXRpb25zIHN1cHBvcnRlZAorICAgICAgICAgICAgICAgICAgICBieSB0aGUgWW9jdG8gUHJvamVjdCBhcyBzdGF0ZWQgb24gdGhlIGluc3RydWN0aW9ucyBmb3IKKyAgICAgICAgICAgICAgICAgICAgdXNpbmcgYSBuYXRpdmUgTGludXggaG9zdC4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgbWFraW5nIHlvdXIgc2VsZWN0aW9uLCBzaW1wbHkgY2xpY2sgIkdldCIgdG8gZG93bmxvYWQKKyAgICAgICAgICAgICAgICAgICAgYW5kIGluc3RhbGwgdGhlIGRpc3RyaWJ1dGlvbi4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hlY2sgeW91ciBMaW51eCBkaXN0cmlidXRpb24gaXMgdXNpbmcgV1NMdjI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgT3BlbiBhIFdpbmRvd3MgUG93ZXJTaGVsbCBhbmQgcnVuOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgQzpcV0lORE9XU1xzeXN0ZW0zMj4gd3NsIC1sIC12CisgICAgTkFNRSAgICAgIFNUQVRFICAgICAgICAgICBWRVJTSU9OCisgICAgKlVidW50dSAgICBSdW5uaW5nICAgICAgICAgMgorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIE5vdGUgdGhlIHZlcnNpb24gY29sdW1uIHdoaWNoIHNheXMgdGhlIFdTTCB2ZXJzaW9uIGJlaW5nIHVzZWQgYnkKKyAgICAgICAgICAgICAgICAgICAgeW91ciBkaXN0cmlidXRpb24sIG9uIGNvbXBhdGlibGUgc3lzdGVtcywgdGhpcyBjYW4gYmUgY2hhbmdlZCBiYWNrCisgICAgICAgICAgICAgICAgICAgIGF0IGFueSBwb2ludCBpbiB0aW1lLgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5PcHRpb25hbGx5IE9yaWVudCBZb3Vyc2VsZiBvbiBXU0w6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgSWYgeW91IGFyZSB1bmZhbWlsaWFyIHdpdGggV1NMLCB5b3UgY2FuIGxlYXJuIG1vcmUgaGVyZSAtCisgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3Mvd3NsL3dzbDItYWJvdXQnPjwvdWxpbms+LgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5MYXVuY2ggeW91ciBXU0wgRGlzdGlidXRpb246PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgRnJvbSB0aGUgV2luZG93cyBzdGFydCBtZW51IHNpbXBseSBsYXVuY2ggeW91ciBXU0wgZGlzdHJpYnV0aW9uCisgICAgICAgICAgICAgICAgICAgIGp1c3QgbGlrZSBhbnkgb3RoZXIgYXBwbGljYXRpb24uCisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPk9wdGltaXplIHlvdXIgV1NMdjIgc3RvcmFnZSBvZnRlbjo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICBEdWUgdG8gdGhlIHdheSBzdG9yYWdlIGlzIGhhbmRsZWQgb24gV1NMdjIsIHRoZSBzdG9yYWdlCisgICAgICAgICAgICAgICAgICAgIHNwYWNlIHVzZWQgYnkgdGhlIHVuZGVseWluZyBMaW51eCBkaXN0cmlidXRpb24gaXMgbm90CisgICAgICAgICAgICAgICAgICAgIHJlZmxlY3RlZCBpbW1lZGF0ZWx5LCBhbmQgc2luY2UgYml0YmFrZSBoZWF2aWx5IHVzZXMKKyAgICAgICAgICAgICAgICAgICAgc3RvcmFnZSwgYWZ0ZXIgc2V2ZXJhbCBidWlsZHMsIHlvdSBtYXkgYmUgdW5hd2FyZSB5b3UKKyAgICAgICAgICAgICAgICAgICAgYXJlIHJ1bm5pbmcgb3V0IG9mIHNwYWNlLiBXU0x2MiB1c2VzIGEgVkhEWCBmaWxlIGZvcgorICAgICAgICAgICAgICAgICAgICBzdG9yYWdlLCB0aGlzIGlzc3VlIGNhbiBiZSBlYXNpbHkgYXZvaWRlZCBieSBtYW51YWxseQorICAgICAgICAgICAgICAgICAgICBvcHRpbWl6aW5nIHRoaXMgZmlsZSBvZnRlbiwgdGhpcyBjYW4gYmUgZG9uZSBpbiB0aGUKKyAgICAgICAgICAgICAgICAgICAgZm9sbG93aW5nIHdheToKKyAgICAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5GaW5kIHRoZSBsb2NhdGlvbiBvZiB5b3VyIFZIRFggZmlsZTo8L2VtcGhhc2lzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZpcnN0IHlvdSBuZWVkIHRvIGZpbmQgdGhlIGRpc3RybyBhcHAgcGFja2FnZSBkaXJlY3RvcnksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gYWNoaWV2ZSB0aGlzIG9wZW4gYSBXaW5kb3dzIFBvd2Vyc2hlbGwgYXMgQWRtaW5pc3RyYXRvcgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBydW46CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI+IEdldC1BcHB4UGFja2FnZSAtTmFtZSAiKlVidW50dSoiIHwgU2VsZWN0IFBhY2thZ2VGYW1pbHlOYW1lCisgICAgUGFja2FnZUZhbWlseU5hbWUKKyAgICAtLS0tLS0tLS0tLS0tLS0tLQorICAgIENhbm9uaWNhbEdyb3VwTGltaXRlZC5VYnVudHVvbldpbmRvd3NfNzlhYmNkZWZnaAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3Ugc2hvdWxkIG5vdyByZXBsYWNlIHRoZSA8cmVwbGFjZWFibGU+UGFja2FnZUZhbWlseU5hbWU8L3JlcGxhY2VhYmxlPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFuZCB5b3VyIDxyZXBsYWNlYWJsZT51c2VyPC9yZXBsYWNlYWJsZT4gb24gdGhlIGZvbGxvd2luZworICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGggdG8gZmluZCB5b3VyIFZIRFggZmlsZTogPGZpbGVuYW1lPkM6XFVzZXJzXHVzZXJcQXBwRGF0YVxMb2NhbFxQYWNrYWdlc1xQYWNrYWdlRmFtaWx5TmFtZVxMb2NhbFN0YXRlXDwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIGxzIEM6XFVzZXJzXG15dXNlclxBcHBEYXRhXExvY2FsXFBhY2thZ2VzXENhbm9uaWNhbEdyb3VwTGltaXRlZC5VYnVudHVvbldpbmRvd3NfNzlhYmNkZWZnaFxMb2NhbFN0YXRlXAorICAgIE1vZGUgICAgICAgICAgICAgICAgIExhc3RXcml0ZVRpbWUgICAgICAgICBMZW5ndGggTmFtZQorICAgIC1hLS0tLSAgICAgICAgIDMvMTQvMjAyMCAgIDk6NTIgUE0gICAgNTc0MTg5NzMxODQgZXh0NC52aGR4ICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBZb3VyIFZIRFggZmlsZSBwYXRoIGlzOiA8ZmlsZW5hbWU+QzpcVXNlcnNcbXl1c2VyXEFwcERhdGFcTG9jYWxcUGFja2FnZXNcQ2Fub25pY2FsR3JvdXBMaW1pdGVkLlVidW50dW9uV2luZG93c183OWFiY2RlZmdoXExvY2FsU3RhdGVcZXh0NC52aGR4PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+T3B0aW1pemUgeW91ciBWSERYIGZpbGU6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBPcGVuIGEgV2luZG93cyBQb3dlcnNoZWxsIGFzIEFkbWluaXN0cmF0b3IgdG8gb3B0aW1pemUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB5b3VyIFZIRFggZmlsZSwgc2h1dHRpbmcgZG93biBXU0wgZmlyc3Q6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgIEM6XFdJTkRPV1Ncc3lzdGVtMzI+IHdzbCAtLXNodXRkb3duCisgICAgQzpcV0lORE9XU1xzeXN0ZW0zMj4gb3B0aW1pemUtdmhkIC1QYXRoIEM6XFVzZXJzXG15dXNlclxBcHBEYXRhXExvY2FsXFBhY2thZ2VzXENhbm9uaWNhbEdyb3VwTGltaXRlZC5VYnVudHVvbldpbmRvd3NfNzlhYmNkZWZnaFxMb2NhbFN0YXRlXGV4dDQudmhkeCAtTW9kZSBmdWxsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIEEgcHJvZ3Jlc3MgYmFyIHNob3VsZCBiZSBzaG93biB3aGlsZSBvcHRpbWl6aW5nIHRoZSBWSERYIGZpbGUsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHN0b3JhZ2Ugc2hvdWxkIG5vdyBiZSByZWZsZWN0ZWQgY29ycmVjdGx5IG9uIHRoZSBXaW5kb3dzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgRXhwbG9yZXIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgorICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgIFRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9mIFdTTHYyIGRvZXMgbm90IGhhdmUgb3V0LW9mLXRoZS1ib3gKKyAgICAgICAgICAgICAgYWNjZXNzIHRvIGV4dGVybmFsIGRldmljZXMgc3VjaCBhcyB0aG9zZSBjb25uZWN0ZWQgdGhyb3VnaCBhCisgICAgICAgICAgICAgIFVTQiBwb3J0LCBidXQgaXQgYXV0b21hdGljYWxseSBtb3VudHMgeW91ciA8ZmlsZW5hbWU+Qzo8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICBkcml2ZSBvbiA8ZmlsZW5hbWU+L21udC9jLzwvZmlsZW5hbWU+IChhbmQgb3RoZXJzKSwgd2hpY2gKKyAgICAgICAgICAgICAgeW91IGNhbiB1c2UgdG8gc2hhcmUgZGVwbG95IGFydGlmYWN0cyB0byBiZSBsYXRlciBmbGFzaGVkIG9uCisgICAgICAgICAgICAgIGhhcmR3YXJlIHRocm91Z2ggV2luZG93cywgYnV0IHlvdXIgYnVpbGQgZGlyZWN0b3J5IHNob3VsZCBub3QKKyAgICAgICAgICAgICAgcmVzaWRlIGluc2lkZSB0aGlzIG1vdW50cG9pbnQuCisgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICBPbmNlIHlvdSBoYXZlIFdTTHYyIHNldCB1cCwgZXZlcnl0aGluZyBpcyBpbiBwbGFjZSB0bworICAgICAgICAgICAgZGV2ZWxvcCBqdXN0IGFzIGlmIHlvdSB3ZXJlIHJ1bm5pbmcgb24gYSBuYXRpdmUgTGludXggbWFjaGluZS4KKyAgICAgICAgICAgIElmIHlvdSBhcmUgZ29pbmcgdG8gdXNlIHRoZSBFeHRlbnNpYmxlIFNESyBjb250YWluZXIsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstZXh0ZW5zaWJsZSc+VXNpbmcgdGhlIEV4dGVuc2libGUgU0RLPC91bGluaz4iCisgICAgICAgICAgICBDaGFwdGVyIGluIHRoZSBZb2N0byBQcm9qZWN0IEFwcGxpY2F0aW9uIERldmVsb3BtZW50IGFuZCB0aGUKKyAgICAgICAgICAgIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKSBtYW51YWwuCisgICAgICAgICAgICBJZiB5b3UgYXJlIGdvaW5nIHRvIHVzZSB0aGUgVG9hc3RlciBjb250YWluZXIsIHNlZSB0aGUKKyAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19UT0FTVF9VUkw7I3RvYXN0ZXItbWFudWFsLXNldHVwLWFuZC11c2UnPlNldHRpbmcgVXAgYW5kIFVzaW5nIFRvYXN0ZXI8L3VsaW5rPiIKKyAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFRvYXN0ZXIgVXNlciBNYW51YWwuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CiA8L3NlY3Rpb24+CiAKIDxzZWN0aW9uIGlkPSdsb2NhdGluZy15b2N0by1wcm9qZWN0LXNvdXJjZS1maWxlcyc+CiAgICAgPHRpdGxlPkxvY2F0aW5nIFlvY3RvIFByb2plY3QgU291cmNlIEZpbGVzPC90aXRsZT4KIAogICAgIDxwYXJhPgotICAgICAgICBUaGlzIHNlY3Rpb24gc2hvd3MgeW91IGhvdyB0byBsb2NhdGUgYW5kIGFjY2VzcyB0aGUKLSAgICAgICAgc291cmNlIGZpbGVzIHRoYXQgc2hpcCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICBZb3UgZXN0YWJsaXNoIGFuZCB1c2UgdGhlc2UgbG9jYWwgZmlsZXMgdG8gd29yayBvbiBwcm9qZWN0cy4KKyAgICAgICAgVGhpcyBzZWN0aW9uIHNob3dzIHlvdSBob3cgdG8gbG9jYXRlLCBmZXRjaCBhbmQgY29uZmlndXJlIHRoZSBzb3VyY2UKKyAgICAgICAgZmlsZXMgeW91J2xsIG5lZWQgdG8gd29yayB3aXRoIHRoZSBZb2N0byBQcm9qZWN0LgogICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgogICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CkBAIC0xMDE5LDIwICsxMTYxLDE4IEBACiAgICAgICAgICAgIC4KICAgICAgICAgICAgLgogICAgICAgICAgICAuCi0gICAgICAgcmVtb3Rlcy9vcmlnaW4vcHlybwotICAgICAgIHJlbW90ZXMvb3JpZ2luL3B5cm8tbmV4dAotICAgICAgIHJlbW90ZXMvb3JpZ2luL3JvY2tvCi0gICAgICAgcmVtb3Rlcy9vcmlnaW4vcm9ja28tbmV4dAotICAgICAgIHJlbW90ZXMvb3JpZ2luL3N1bW8KLSAgICAgICByZW1vdGVzL29yaWdpbi9zdW1vLW5leHQKICAgICAgICByZW1vdGVzL29yaWdpbi90aHVkCiAgICAgICAgcmVtb3Rlcy9vcmlnaW4vdGh1ZC1uZXh0CiAgICAgICAgcmVtb3Rlcy9vcmlnaW4vd2FycmlvcgorICAgICAgIHJlbW90ZXMvb3JpZ2luL3dhcnJpb3ItbmV4dAorICAgICAgIHJlbW90ZXMvb3JpZ2luL3pldXMKKyAgICAgICByZW1vdGVzL29yaWdpbi96ZXVzLW5leHQKKyAgICAgICAuLi4gYW5kIHNvIG9uIC4uLgogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoZWNrb3V0IHRoZSBCcmFuY2g6PC9lbXBoYXNpcz4KLSAgICAgICAgICAgICAgICAgICAgQ2hlY2tvdXQgdGhlIGRldmVsb3BtZW50IGJyYW5jaCBpbiB3aGljaCB5b3Ugd2FudCB0byB3b3JrLgorICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+Q2hlY2sgb3V0IHRoZSBCcmFuY2g6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgQ2hlY2sgb3V0IHRoZSBkZXZlbG9wbWVudCBicmFuY2ggaW4gd2hpY2ggeW91IHdhbnQgdG8gd29yay4KICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIHRvIGFjY2VzcyB0aGUgZmlsZXMgZm9yIHRoZSBZb2N0byBQcm9qZWN0CiAgICAgICAgICAgICAgICAgICAgICZESVNUUk87IFJlbGVhc2UgKCZESVNUUk9fTkFNRTspLCB1c2UgdGhlIGZvbGxvd2luZyBjb21tYW5kOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC0xMTE4LDcgKzEyNTgsNyBAQAogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KLSAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoZWNrb3V0IHRoZSBCcmFuY2g6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNoZWNrIG91dCB0aGUgQnJhbmNoOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBnaXQgY2hlY2tvdXQgdGFncy8mRElTVFJPX1JFTF9UQUc7IC1iIG15X3lvY3RvXyZESVNUUk87CiAgICAgIFN3aXRjaGVkIHRvIGEgbmV3IGJyYW5jaCAnbXlfeW9jdG9fJkRJU1RSTzsnCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9kZXYtbWFudWFsL2Rldi1tYW51YWwueG1sCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggMDRmYTFlNC4uNmY4NjQ1NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vZGV2LW1hbnVhbC9kZXYtbWFudWFsLnhtbApAQCAtMjIsMTggKzIyLDE3IEBACiAKICAgICAgICAgPGF1dGhvcmdyb3VwPgogICAgICAgICAgICAgPGF1dGhvcj4KLSAgICAgICAgICAgICAgICA8Zmlyc3RuYW1lPlNjb3R0PC9maXJzdG5hbWU+IDxzdXJuYW1lPlJpZmVuYmFyazwvc3VybmFtZT4KICAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPlNjb3R0eSdzIERvY3VtZW50YXRpb24gU2VydmljZXMsIElOQzwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+Jk9SR05BTUU7PC9vcmduYW1lPgogICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgPGVtYWlsPnNyaWZlbmJhcmtAZ21haWwuY29tPC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8ZW1haWw+Jk9SR0VNQUlMOzwvZW1haWw+CiAgICAgICAgICAgICA8L2F1dGhvcj4KICAgICAgICAgPC9hdXRob3Jncm91cD4KIAogICAgICAgICA8cmV2aGlzdG9yeT4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPjYgT2N0b2JlciAyMDExPC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxMTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgpAQCAtNTcsMTEgKzU2LDYgQEAKICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS41IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS41LjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5KYW51YXJ5IDIwMTQ8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNS4xIFJlbGVhc2UuPC9yZXZyZW1hcms+Ci0gICAgICAgICAgICA8L3JldmlzaW9uPgotICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS42PC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxNDwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS42IFJlbGVhc2UuPC9yZXZyZW1hcms+CkBAIC0xMTgsOSArMTEyLDE0IEBACiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4wPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTk8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgPC9yZXZoaXN0b3J5PgogCiAgICAgPGNvcHlyaWdodD4KQEAgLTE0NCw3ICsxNDMsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCiAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscwogICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgpAQCAtMTYxLDE4ICsxNjAsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKICAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGFueSBvdGhlciBZb2N0byBQcm9qZWN0KSBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgIGxvZyBpbnRvIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogICAgIDwvbGVnYWxub3RpY2U+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbW1vbi54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbW1vbi54bWwKaW5kZXggMmVhNWQzZi4uYzFjMmQ2ZCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb21tb24ueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29tbW9uLnhtbApAQCAtODksOCArODksOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPlByZXBhcmUgWW91ciA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IEZpbGU6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaXMgc2V0IHRvICJxZW11eDg2Iiwgd2hpY2ggaXMgZmluZSBpZiB5b3UgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBmb3IgdGhlIFFFTVUgZW11bGF0b3IgaW4gMzItYml0IG1vZGUuCisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyBzZXQgdG8gInFlbXV4ODYtNjQiLCB3aGljaCBpcyBmaW5lIGlmIHlvdSBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIGZvciB0aGUgUUVNVSBlbXVsYXRvciBpbiA2NC1iaXQgbW9kZS4KICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBhcmUgbm90LCB5b3UgbmVlZCB0byBzZXQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IHZhcmlhYmxlIGFwcHJvcHJpYXRlbHkgaW4KICAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm91bmQgaW4KQEAgLTEwNCwxMCArMTA0LDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGluY2x1ZGUga2VybmVsIG1vZHVsZXMuPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGlzIGV4YW1wbGUgdXNlcyB0aGUgZGVmYXVsdCAicWVtdXg4NiIgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPiB2YXJpYWJsZSBidXQgbmVlZHMgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZCB0aGUgImtlcm5lbC1tb2R1bGVzIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkluIHRoaXMgZXhhbXBsZSB3ZSB3aXNoIHRvIGJ1aWxkIGZvciBxZW11eDg2IHNvCisgICAgICAgICAgICAgICAgICAgICAgICB3ZSBtdXN0IHNldCB0aGUgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgdG8gInFlbXV4ODYiIGFuZCBhbHNvIGFkZCB0aGUgImtlcm5lbC1tb2R1bGVzIi4gQXMgZGVzY3JpYmVkCisgICAgICAgICAgICAgICAgICAgICAgICB3ZSBkbyB0aGlzIGJ5IGFwcGVuZGluZyB0byA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIE1BQ0hJTkUgPSAicWVtdXg4NiIKICAgICAgTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFMgKz0gImtlcm5lbC1tb2R1bGVzIgogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC0zMTQsOCArMzE2LDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIEZpbGU6PC9lbXBoYXNpcz4KICAgICAgICAgICAgICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfUkVGX1VSTDsjdmFyLU1BQ0hJTkUnPjxmaWxlbmFtZT5NQUNISU5FPC9maWxlbmFtZT48L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaXMgc2V0IHRvICJxZW11eDg2Iiwgd2hpY2ggaXMgZmluZSBpZiB5b3UgYXJlCi0gICAgICAgICAgICAgICAgICAgICAgICBidWlsZGluZyBmb3IgdGhlIFFFTVUgZW11bGF0b3IgaW4gMzItYml0IG1vZGUuCisgICAgICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZSBpcyBzZXQgdG8gInFlbXV4ODYtNjQiLCB3aGljaCBpcyBmaW5lIGlmIHlvdSBhcmUKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ1aWxkaW5nIGZvciB0aGUgUUVNVSBlbXVsYXRvciBpbiA2NC1iaXQgbW9kZS4KICAgICAgICAgICAgICAgICAgICAgICAgIEhvd2V2ZXIsIGlmIHlvdSBhcmUgbm90LCB5b3UgbmVlZCB0byBzZXQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+TUFDSElORTwvZmlsZW5hbWU+IHZhcmlhYmxlIGFwcHJvcHJpYXRlbHkgaW4KICAgICAgICAgICAgICAgICAgICAgICAgIHlvdXIgPGZpbGVuYW1lPmNvbmYvbG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUgZm91bmQKQEAgLTMyOSwxMCArMzMxLDEyIEBACiAgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19SRUZfVVJMOyN2YXItTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5NQUNISU5FX0VTU0VOVElBTF9FWFRSQV9SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgIHZhcmlhYmxlIHRvIGluY2x1ZGUga2VybmVsIG1vZHVsZXMuPC9wYXJhPgogCi0gICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT5UaGlzIGV4YW1wbGUgdXNlcyB0aGUgZGVmYXVsdCAicWVtdXg4NiIgZm9yIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPiB2YXJpYWJsZSBidXQgbmVlZHMgdG8KLSAgICAgICAgICAgICAgICAgICAgICAgIGFkZCB0aGUgImtlcm5lbC1tb2R1bGVzIjoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPkluIHRoaXMgZXhhbXBsZSB3ZSB3aXNoIHRvIGJ1aWxkIGZvciBxZW11eDg2IHNvCisgICAgICAgICAgICAgICAgICAgICAgICB3ZSBtdXN0IHNldCB0aGUgPGZpbGVuYW1lPk1BQ0hJTkU8L2ZpbGVuYW1lPiB2YXJpYWJsZQorICAgICAgICAgICAgICAgICAgICAgICAgdG8gInFlbXV4ODYiIGFuZCBhbHNvIGFkZCB0aGUgImtlcm5lbC1tb2R1bGVzIi4gQXMgZGVzY3JpYmVkCisgICAgICAgICAgICAgICAgICAgICAgICB3ZSBkbyB0aGlzIGJ5IGFwcGVuZGluZyB0byA8ZmlsZW5hbWU+Y29uZi9sb2NhbC5jb25mPC9maWxlbmFtZT46CiAgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIE1BQ0hJTkUgPSAicWVtdXg4NiIKICAgICAgTUFDSElORV9FU1NFTlRJQUxfRVhUUkFfUlJFQ09NTUVORFMgKz0gImtlcm5lbC1tb2R1bGVzIgogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CkBAIC02NTUsMjYgKzY1OSwyMiBAQAogICAgICBLTUFDSElORV9nZW5lcmljeDg2LTY0ID89ICJjb21tb24tcGMtNjQiCiAgICAgIEtCUkFOQ0hfZWRnZXJvdXRlciA9ICJzdGFuZGFyZC9lZGdlcm91dGVyIgogICAgICBLQlJBTkNIX2JlYWdsZWJvbmUgPSAic3RhbmRhcmQvYmVhZ2xlYm9uZSIKLSAgICAgS0JSQU5DSF9tcGM4MzE1ZS1yZGIgPSAic3RhbmRhcmQvZnNsLW1wYzgzMTVlLXJkYiIKIAogICAgICBTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ICAgID89ICJkMDlmMmNlNTg0ZDYwZWNiNzg5MDU1MGMyMmE4MGM0OGI4M2MyZTE5IgogICAgICBTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICJkMDlmMmNlNTg0ZDYwZWNiNzg5MDU1MGMyMmE4MGM0OGI4M2MyZTE5IgogICAgICBTUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICJiNWM4Y2ZkYTJkZmUyOTY0MTBkNTFlMTMxMjg5ZmIwOWM2OWUxZTdkIgogICAgICBTUkNSRVZfbWFjaGluZV9iZWFnbGVib25lID89ICJiNWM4Y2ZkYTJkZmUyOTY0MTBkNTFlMTMxMjg5ZmIwOWM2OWUxZTdkIgotICAgICBTUkNSRVZfbWFjaGluZV9tcGM4MzE1ZS1yZGIgPz0gIjJkMWQwMTAyNDA4NDZkN2JmZjE1ZDFmY2MwY2I2ZWI4YTIyZmM3OGEiCiAKIAogICAgICBDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4NiA9ICJnZW5lcmljeDg2IgogICAgICBDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgogICAgICBDT01QQVRJQkxFX01BQ0hJTkVfZWRnZXJvdXRlciA9ICJlZGdlcm91dGVyIgogICAgICBDT01QQVRJQkxFX01BQ0hJTkVfYmVhZ2xlYm9uZSA9ICJiZWFnbGVib25lIgotICAgICBDT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKIAogICAgICBMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNC4xMi43IgogICAgICBMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNC4xMi43IgogICAgICBMSU5VWF9WRVJTSU9OX2VkZ2Vyb3V0ZXIgPSAiNC4xMi4xMCIKICAgICAgTElOVVhfVkVSU0lPTl9iZWFnbGVib25lID0gIjQuMTIuMTAiCi0gICAgIExJTlVYX1ZFUlNJT05fbXBjODMxNWUtcmRiID0gIjQuMTIuMTAiCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIFRoaXMgYXBwZW5kIGZpbGUgY29udGFpbnMgc3RhdGVtZW50cyB1c2VkIHRvIHN1cHBvcnQKICAgICAgICAgICAgICAgICBzZXZlcmFsIEJTUHMgdGhhdCBzaGlwIHdpdGggdGhlIFlvY3RvIFByb2plY3QuCkBAIC05NDgsMTIgKzk0OCwxNCBAQAogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgS0JVSUxEX0RFRkNPTkZJR188cmVwbGFjZWFibGU+S01BQ0hJTkU8L3JlcGxhY2VhYmxlPiA/PSA8cmVwbGFjZWFibGU+ZGVmY29uZmlnX2ZpbGU8L3JlcGxhY2VhYmxlPgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgdGhhdCBhcHBlbmRzIHRoZQotICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5LQlVJTERfREVGQ09ORklHPC9maWxlbmFtZT4gdmFyaWFibGUgd2l0aAotICAgICAgICAgICAgICAgICJjb21tb24tcGMiIGFuZCBwcm92aWRlcyB0aGUgcGF0aCB0byB0aGUgImluLXRyZWUiCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRlZmNvbmZpZzwvZmlsZW5hbWU+IGZpbGU6CisgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIHRoYXQgYXNzaWducyB0aGUKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+S0JVSUxEX0RFRkNPTkZJRzwvZmlsZW5hbWU+IHZhcmlhYmxlIGJhc2VkIG9uCisgICAgICAgICAgICAgICAgInJhc3BiZXJyeXBpMiIgYW5kIHByb3ZpZGVzIHRoZSBwYXRoIHRvIHRoZSAiaW4tdHJlZSIKKyAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZGVmY29uZmlnPC9maWxlbmFtZT4gZmlsZQorICAgICAgICAgICAgICAgIHRvIGJlIHVzZWQgZm9yIGEgUmFzcGJlcnJ5IFBpIDIsCisgICAgICAgICAgICAgICAgd2hpY2ggaXMgYmFzZWQgb24gdGhlIEJyb2FkY29tIDI3MDgvMjcwOSBjaGlwc2V0OgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgS0JVSUxEX0RFRkNPTkZJR19jb21tb24tcGMgPz0gIi9ob21lL3Njb3R0cmlmL2NvbmZpZ2ZpbGVzL215X2RlZmNvbmZpZ19maWxlIgorICAgICBLQlVJTERfREVGQ09ORklHX3Jhc3BiZXJyeXBpMiA/PSAiYmNtMjcwOV9kZWZjb25maWciCiAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgPC9wYXJhPgogCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbmNlcHRzLWFwcHgueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL2tlcm5lbC1kZXYva2VybmVsLWRldi1jb25jZXB0cy1hcHB4LnhtbAppbmRleCA2ZDY3NWE2Li42MmM2ODUyIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LWNvbmNlcHRzLWFwcHgueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYtY29uY2VwdHMtYXBweC54bWwKQEAgLTU0Myw3ICs1NDMsNiBAQAogICAgICB5b2N0by1rZXJuZWwtY2FjaGUvZmVhdHVyZXMva2dkYi9oYXJkd2FyZS5jZmcKICAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2t0eXBlcy9iYXNlL2hhcmR3YXJlLmNmZwogICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL210aS1tYWx0YTMyL2hhcmR3YXJlLmNmZwotICAgICB5b2N0by1rZXJuZWwtY2FjaGUvYnNwL2ZzbC1tcGM4MzE1ZS1yZGIvaGFyZHdhcmUuY2ZnCiAgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9ic3AvcWVtdS1wcGMzMi9oYXJkd2FyZS5jZmcKICAgICAgeW9jdG8ta2VybmVsLWNhY2hlL2JzcC9xZW11YXJtYTkvaGFyZHdhcmUuY2ZnCiAgICAgIHlvY3RvLWtlcm5lbC1jYWNoZS9ic3AvbXRpLW1hbHRhNjQvaGFyZHdhcmUuY2ZnCmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9rZXJuZWwtZGV2L2tlcm5lbC1kZXYueG1sCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggNGM1ODgxYi4uOTk4ZmU0MQotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24va2VybmVsLWRldi9rZXJuZWwtZGV2LnhtbApAQCAtMjIsMTEgKzIyLDEwIEBACiAKICAgICAgICAgPGF1dGhvcmdyb3VwPgogICAgICAgICAgICAgPGF1dGhvcj4KLSAgICAgICAgICAgICAgICA8Zmlyc3RuYW1lPlNjb3R0PC9maXJzdG5hbWU+IDxzdXJuYW1lPlJpZmVuYmFyazwvc3VybmFtZT4KICAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPlNjb3R0eSdzIERvY3VtZW50YXRpb24gU2VydmljZXMsIElOQzwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+Jk9SR05BTUU7PC9vcmduYW1lPgogICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgPGVtYWlsPnNyaWZlbmJhcmtAZ21haWwuY29tPC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8ZW1haWw+Jk9SR0VNQUlMOzwvZW1haWw+CiAgICAgICAgICAgICA8L2F1dGhvcj4KICAgICAgICAgPC9hdXRob3Jncm91cD4KIApAQCAtMzQsNyArMzMsNyBAQAogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS40PC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxMzwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS40IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5UaGUgaW5pdGlhbCBkb2N1bWVudCByZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuNTwvcmV2bnVtYmVyPgpAQCAtNDIsMTEgKzQxLDYgQEAKICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS41IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS41LjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5KYW51YXJ5IDIwMTQ8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNS4xIFJlbGVhc2UuPC9yZXZyZW1hcms+Ci0gICAgICAgICAgICA8L3JldmlzaW9uPgotICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS42PC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxNDwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS42IFJlbGVhc2UuPC9yZXZyZW1hcms+CkBAIC0xMDMsOSArOTcsMTQgQEAKICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjA8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxOTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKICAgICA8Y29weXJpZ2h0PgpAQCAtMTI3LDcgKzEyNiw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCkBAIC0xNDQsMTggKzE0MywyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgogICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBzZXQgYnkgdXNpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICJBQ1RJVkUgUkVMRUFTRVMgRE9DVU1FTlRBVElPTiIgb3IgIkRPQ1VNRU5UUyBBUkNISVZFIgogICAgICAgICAgICAgICAgICAgICAgICBwdWxsLWRvd24gbWVudXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCi0gICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAob3IgYW55IG90aGVyIFlvY3RvIFByb2plY3QpIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1haWxpbmcgbGlzdCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9jc0BsaXN0cy55b2N0b3Byb2plY3Qub3JnPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgbG9nIGludG8gdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICA8L25vdGU+CiAgICAgPC9sZWdhbG5vdGljZT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvbWVnYS1tYW51YWwueG1sCm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggY2Q5YTNkYS4uZTczMGY3MgotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vbWVnYS1tYW51YWwvbWVnYS1tYW51YWwueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC54bWwKQEAgLTMzLDExICszMywxMCBAQAogCiAgICAgICAgIDxhdXRob3Jncm91cD4KICAgICAgICAgICAgIDxhdXRob3I+Ci0gICAgICAgICAgICAgICAgPGZpcnN0bmFtZT5TY290dDwvZmlyc3RuYW1lPiA8c3VybmFtZT5SaWZlbmJhcms8L3N1cm5hbWU+CiAgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5TY290dHkncyBEb2N1bWVudGF0aW9uIFNlcnZpY2VzLCBJTkM8L29yZ25hbWU+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPiZPUkdOQU1FOzwvb3JnbmFtZT4KICAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgIDxlbWFpbD5zcmlmZW5iYXJrQGdtYWlsLmNvbTwvZW1haWw+CisgICAgICAgICAgICAgICAgPGVtYWlsPiZPUkdFTUFJTDs8L2VtYWlsPgogICAgICAgICAgICAgPC9hdXRob3I+CiAgICAgICAgIDwvYXV0aG9yZ3JvdXA+CiAKQEAgLTQ1LDcgKzQ0LDcgQEAKICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuODwvcmV2bnVtYmVyPgogICAgICAgICAgICAgICAgIDxkYXRlPkFwcmlsIDIwMTU8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuOCBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjggUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjA8L3Jldm51bWJlcj4KQEAgLTg5LDkgKzg4LDE0IEBACiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4wPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTk8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKICAgICA8Y29weXJpZ2h0PgpAQCAtMTEzLDcgKzExNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QuCiAgICAgICAgICAgICAgICAgICAgICAgIFRvIGJlIHN1cmUgeW91IGhhdmUgdGhlIGxhdGVzdCB2ZXJzaW9uIG9mIHRoZSBtYW51YWwKICAgICAgICAgICAgICAgICAgICAgICAgZm9yIHRoaXMgcmVsZWFzZSwgZ28gdG8gdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBmcm9tIHRoYXQgc2l0ZS4KICAgICAgICAgICAgICAgICAgICAgICAgTWFudWFscyBmcm9tIHRoZSBzaXRlIGFyZSBtb3JlIHVwLXRvLWRhdGUgdGhhbiBtYW51YWxzCiAgICAgICAgICAgICAgICAgICAgICAgIGRlcml2ZWQgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCByZWxlYXNlZCBUQVIgZmlsZXMuCkBAIC0xMzAsMTggKzEzNCwyMCBAQAogICAgICAgICAgICAgICAgICAgICAgICBwYWdlLgogICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgbmVlZCBhIHZlcnNpb24gb2YgdGhpcyBtYW51YWwgZm9yIGEgZGlmZmVyZW50CiAgICAgICAgICAgICAgICAgICAgICAgIFlvY3RvIFByb2plY3QgcmVsZWFzZSwgdmlzaXQgdGhlCi0gICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jdW1lbnRhdGlvbic+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgorICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19VUkw7Jz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgIGFuZCBzZWxlY3QgdGhlIG1hbnVhbCBzZXQgYnkgdXNpbmcgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICJBQ1RJVkUgUkVMRUFTRVMgRE9DVU1FTlRBVElPTiIgb3IgIkRPQ1VNRU5UUyBBUkNISVZFIgogICAgICAgICAgICAgICAgICAgICAgICBwdWxsLWRvd24gbWVudXMuCiAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICBUbyByZXBvcnQgYW55IGluYWNjdXJhY2llcyBvciBwcm9ibGVtcyB3aXRoIHRoaXMKLSAgICAgICAgICAgICAgICAgICAgICAgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvIHRoZSBZb2N0byBQcm9qZWN0Ci0gICAgICAgICAgICAgICAgICAgICAgIGRpc2N1c3Npb24gZ3JvdXAgYXQKLSAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnlvY3RvQHlvY3RvcHJvamVjdC5jb208L2ZpbGVuYW1lPiBvciBsb2cgaW50bwotICAgICAgICAgICAgICAgICAgICAgICB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCi0gICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAob3IgYW55IG90aGVyIFlvY3RvIFByb2plY3QpIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0bworICAgICAgICAgICAgICAgICAgICAgICB0aGUgWW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIG1haWxpbmcgbGlzdCBhdAorICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZG9jc0BsaXN0cy55b2N0b3Byb2plY3Qub3JnPC9maWxlbmFtZT4gb3IKKyAgICAgICAgICAgICAgICAgICAgICAgbG9nIGludG8gdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgorICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgPC9saXN0aXRlbT4KICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICA8L25vdGU+CiAKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWRldmVsb3BtZW50LWVudmlyb25tZW50LnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLWRldmVsb3BtZW50LWVudmlyb25tZW50LnhtbAppbmRleCAyZjFiZDE2Li4zNmViZjhhIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC1kZXZlbG9wbWVudC1lbnZpcm9ubWVudC54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwtZGV2ZWxvcG1lbnQtZW52aXJvbm1lbnQueG1sCkBAIC04Nyw3ICs4Nyw3IEBACiAgICAgICAgIGFzIGl0cyBvcGVyYXRpbmcgc3lzdGVtIGFzIHlvdXIgZGV2ZWxvcG1lbnQgaG9zdC4KICAgICAgICAgV2hlbiB5b3UgaGF2ZSBhIE1hYyBvciBXaW5kb3dzLWJhc2VkIHN5c3RlbSwgeW91IGNhbiBzZXQgaXQgdXAKICAgICAgICAgYXMgdGhlIGRldmVsb3BtZW50IGhvc3QgYnkgdXNpbmcKLSAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL2Nyb3BzL2Fib3V0Lyc+Q1JPUFM8L3VsaW5rPiwKKyAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXRodWIuY29tL2Nyb3BzL3Bva3ktY29udGFpbmVyJz5DUk9QUzwvdWxpbms+LAogICAgICAgICB3aGljaCBsZXZlcmFnZXMKICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4uCiAgICAgICAgIE9uY2UgeW91IHRha2UgdGhlIHN0ZXBzIHRvIHNldCB1cCBhIENST1BTIG1hY2hpbmUsIHlvdSBlZmZlY3RpdmVseQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwteXAtaW50cm8ueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwteXAtaW50cm8ueG1sCmluZGV4IGRiZjYyY2MuLjFiNjBhMzAgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLXlwLWludHJvLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC15cC1pbnRyby54bWwKQEAgLTIyNSw5ICsyMjUsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIHRoYXQgaGVscHMgeW91IHRyYW5zaXRpb24gZnJvbQogICAgICAgICAgICAgICAgICAgICAgICAgdHJ5aW5nIG91dCB0aGUgWW9jdG8gUHJvamVjdCB0byB1c2luZyBpdCBmb3IgeW91cgogICAgICAgICAgICAgICAgICAgICAgICAgcHJvamVjdCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jcy93aGF0LWktd2lzaC1pZC1rbm93bi8nPldoYXQgSSB3aXNoIEknZCBLbm93bjwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsvd2hhdC1pLXdpc2gtaWQta25vd24vJz5XaGF0IEkgd2lzaCBJJ2QgS25vd248L3VsaW5rPiIKICAgICAgICAgICAgICAgICAgICAgICAgIGFuZAotICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19IT01FX1VSTDsvZG9jcy90cmFuc2l0aW9uaW5nLXRvLWEtY3VzdG9tLWVudmlyb25tZW50Lyc+VHJhbnNpdGlvbmluZyB0byBhIEN1c3RvbSBFbnZpcm9ubWVudCBmb3IgU3lzdGVtcyBEZXZlbG9wbWVudDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsvdHJhbnNpdGlvbmluZy10by1hLWN1c3RvbS1lbnZpcm9ubWVudC8nPlRyYW5zaXRpb25pbmcgdG8gYSBDdXN0b20gRW52aXJvbm1lbnQgZm9yIFN5c3RlbXMgRGV2ZWxvcG1lbnQ8L3VsaW5rPiIKICAgICAgICAgICAgICAgICAgICAgICAgIGRvY3VtZW50cyBvbiB0aGUgWW9jdG8gUHJvamVjdCB3ZWJzaXRlLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTQzNyw3ICs0MzcsNyBAQAogICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYSBpZD0nZ3MtY3JvcHMtb3ZlcnZpZXcnPgogICAgICAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNST1BTOjwvZW1waGFzaXM+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kvY3JvcHMvYWJvdXQvJz5DUk9QUzwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPSdodHRwczovL2dpdGh1Yi5jb20vY3JvcHMvcG9reS1jb250YWluZXIvJz5DUk9QUzwvdWxpbms+CiAgICAgICAgICAgICAgICAgICAgICAgICBpcyBhbiBvcGVuIHNvdXJjZSwgY3Jvc3MtcGxhdGZvcm0gZGV2ZWxvcG1lbnQgZnJhbWV3b3JrCiAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IGxldmVyYWdlcwogICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly93d3cuZG9ja2VyLmNvbS8nPkRvY2tlciBDb250YWluZXJzPC91bGluaz4uCkBAIC04ODMsNyArODgzLDcgQEAKICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgIDxlbXBoYXNpcz5DUk9zcyBQbGF0Zm9ybVMgKENST1BTKTo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBUeXBpY2FsbHksIHlvdSB1c2UKLSAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL2Nyb3BzL2Fib3V0Lyc+Q1JPUFM8L3VsaW5rPiwKKyAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9naXRodWIuY29tL2Nyb3BzL3Bva3ktY29udGFpbmVyLyc+Q1JPUFM8L3VsaW5rPiwKICAgICAgICAgICAgICAgICAgICAgd2hpY2ggbGV2ZXJhZ2VzCiAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9J2h0dHBzOi8vd3d3LmRvY2tlci5jb20vJz5Eb2NrZXIgQ29udGFpbmVyczwvdWxpbms+LAogICAgICAgICAgICAgICAgICAgICB0byBzZXQgdXAgYSBCdWlsZCBIb3N0IHRoYXQgaXMgbm90IHJ1bm5pbmcgTGludXggKGUuZy4KQEAgLTkwOCw2ICs5MDgsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgc2VjdGlvbiBpbiB0aGUgWW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWwuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPldpbmRvd3MgU3Vic3lzdGVtIEZvciBMaW51eCAoV1NMdjIpOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgIFlvdSBtYXkgdXNlIFdpbmRvd3MgU3Vic3lzdGVtIEZvciBMaW51eCB2MiB0byBzZXQgdXAgYSBidWlsZAorICAgICAgICAgICAgICAgICAgICBob3N0IHVzaW5nIFdpbmRvd3MgMTAuCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgIFRoZSBZb2N0byBQcm9qZWN0IGlzIG5vdCBjb21wYXRpYmxlIHdpdGggV1NMdjEsIGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgY29tcGF0aWJsZSBidXQgbm90IG9mZmljaWFsbHkgc3VwcG9ydGVkIG5vciB2YWxpZGF0ZWQKKyAgICAgICAgICAgICAgICAgICAgICB3aXRoIFdTTHYyLCBpZiB5b3Ugc3RpbGwgZGVjaWRlIHRvIHVzZSBXU0wgcGxlYXNlIHVwZ3JhZGUKKyAgICAgICAgICAgICAgICAgICAgICB0byBXU0x2Mi4KKyAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICBUaGUgV2luZG93cyBTdWJzeXN0ZW0gRm9yIExpbnV4IGFsbG93cyBXaW5kb3dzIDEwIHRvIHJ1biBhIHJlYWwKKyAgICAgICAgICAgICAgICAgICAgTGludXgga2VybmVsIGluc2lkZSBvZiBhIGxpZ2h0d2VpZ2h0IHV0aWxpdHkgdmlydHVhbAorICAgICAgICAgICAgICAgICAgICBtYWNoaW5lIChWTSkgdXNpbmcgdmlydHVhbGl6YXRpb24gdGVjaG5vbG9neS48L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPkZvciBpbmZvcm1hdGlvbiBvbiBob3cgdG8gc2V0IHVwIGEgQnVpbGQgSG9zdCB3aXRoCisgICAgICAgICAgICAgICAgICAgIFdTTHYyLCBzZWUgdGhlCisgICAgICAgICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNzZXR0aW5nLXVwLXRvLXVzZS13c2wnPlNldHRpbmcgVXAgdG8gVXNlIFdpbmRvd3MgU3Vic3lzdGVtIEZvciBMaW51eDwvdWxpbms+IgorICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICA8ZW1waGFzaXM+VG9hc3Rlcjo8L2VtcGhhc2lzPgogICAgICAgICAgICAgICAgICAgICBSZWdhcmRsZXNzIG9mIHdoYXQgeW91ciBCdWlsZCBIb3N0IGlzIHJ1bm5pbmcsIHlvdSBjYW4KICAgICAgICAgICAgICAgICAgICAgdXNlIFRvYXN0ZXIgdG8gZGV2ZWxvcCBzb2Z0d2FyZSB1c2luZyB0aGUgWW9jdG8gUHJvamVjdC4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLnhtbApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGM3NzE2ZTQuLjIxMGQ2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLnhtbApAQCAtMjIsMTEgKzIyLDEwIEBACiAKICAgICAgICAgPGF1dGhvcmdyb3VwPgogICAgICAgICAgICAgPGF1dGhvcj4KLSAgICAgICAgICAgICAgICA8Zmlyc3RuYW1lPlNjb3R0PC9maXJzdG5hbWU+IDxzdXJuYW1lPlJpZmVuYmFyazwvc3VybmFtZT4KICAgICAgICAgICAgICAgICA8YWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPlNjb3R0eSdzIERvY3VtZW50YXRpb24gU2VydmljZXMsIElOQzwvb3JnbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+Jk9SR05BTUU7PC9vcmduYW1lPgogICAgICAgICAgICAgICAgIDwvYWZmaWxpYXRpb24+Ci0gICAgICAgICAgICAgICAgPGVtYWlsPnNyaWZlbmJhcmtAZ21haWwuY29tPC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8ZW1haWw+Jk9SR0VNQUlMOzwvZW1haWw+CiAgICAgICAgICAgICA8L2F1dGhvcj4KICAgICAgICAgPC9hdXRob3Jncm91cD4KIApAQCAtMzksNyArMzgsNyBAQAogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi42PC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+Tm92ZW1iZXIgMjAxODwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi43IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDIuNiBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuNzwvcmV2bnVtYmVyPgpAQCAtNDgsOSArNDcsMTQgQEAKICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjA8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxOTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICA8L3Jldmhpc3Rvcnk+CiAKICAgICA8Y29weXJpZ2h0PgpAQCAtNzQsNyArNzgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCiAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscwogICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgpAQCAtOTEsMTggKzk1LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCiAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCiAgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcwotICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIChvciBhbnkgb3RoZXIgWW9jdG8gUHJvamVjdCkgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFpbGluZyBsaXN0IGF0CisgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb2NzQGxpc3RzLnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICBsb2cgaW50byB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Bva3kuZW50IGIvcG9reS9kb2N1bWVudGF0aW9uL3Bva3kuZW50Cm9sZCBtb2RlIDEwMDY0NApuZXcgbW9kZSAxMDA3NTUKaW5kZXggN2FmNDdkZi4uYTU0NzkzOQotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcG9reS5lbnQKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Bva3kuZW50CkBAIC0xLDE5ICsxLDIxIEBACi08IUVOVElUWSBESVNUUk8gIjMuMCI+Ci08IUVOVElUWSBESVNUUk9fQ09NUFJFU1NFRCAiMzAiPgotPCFFTlRJVFkgRElTVFJPX05BTUVfTk9fQ0FQICJ6ZXVzIj4KLTwhRU5USVRZIERJU1RST19OQU1FICJaZXVzIj4KLTwhRU5USVRZIERJU1RST19OQU1FX05PX0NBUF9NSU5VU19PTkUgIndhcnJpb3IiPgotPCFFTlRJVFkgRElTVFJPX05BTUVfTUlOVVNfT05FICJXYXJyaW9yIj4KLTwhRU5USVRZIFlPQ1RPX0RPQ19WRVJTSU9OICIzLjAiPgotPCFFTlRJVFkgWU9DVE9fRE9DX1ZFUlNJT05fTUlOVVNfT05FICIyLjciPgotPCFFTlRJVFkgRElTVFJPX1JFTF9UQUcgInlvY3RvLTMuMCI+Ci08IUVOVElUWSBNRVRBSU5URUxWRVJTSU9OICI5LjAiPgotPCFFTlRJVFkgUkVMX01PTlRIX1lFQVIgIk9jdG9iZXIgMjAxOSI+Cis8IUVOVElUWSBESVNUUk8gIjMuMSI+Cis8IUVOVElUWSBESVNUUk9fQ09NUFJFU1NFRCAiMzEiPgorPCFFTlRJVFkgRElTVFJPX05BTUVfTk9fQ0FQICJkdW5mZWxsIj4KKzwhRU5USVRZIERJU1RST19OQU1FICJEdW5mZWxsIj4KKzwhRU5USVRZIERJU1RST19OQU1FX05PX0NBUF9NSU5VU19PTkUgInpldXMiPgorPCFFTlRJVFkgRElTVFJPX05BTUVfTUlOVVNfT05FICJaZXVzIj4KKzwhRU5USVRZIFlPQ1RPX0RPQ19WRVJTSU9OICIzLjEiPgorPCFFTlRJVFkgWU9DVE9fRE9DX1ZFUlNJT05fTUlOVVNfT05FICIzLjAuMiI+Cis8IUVOVElUWSBESVNUUk9fUkVMX1RBRyAieW9jdG8tMy4xIj4KKzwhRU5USVRZIE1FVEFJTlRFTFZFUlNJT04gIjEyLjAiPgorPCFFTlRJVFkgUkVMX01PTlRIX1lFQVIgIkFwcmlsIDIwMjAiPgogPCFFTlRJVFkgTUVUQV9JTlRFTF9SRUxfVEFHICImTUVUQUlOVEVMVkVSU0lPTjstJkRJU1RST19OQU1FX05PX0NBUDstJllPQ1RPX0RPQ19WRVJTSU9OOyI+Ci08IUVOVElUWSBQT0tZVkVSU0lPTiAiMjIuMC4wIj4KLTwhRU5USVRZIFBPS1lWRVJTSU9OX0NPTVBSRVNTRUQgIjIyMDAiPgorPCFFTlRJVFkgUE9LWVZFUlNJT04gIjIzLjAuMCI+Cis8IUVOVElUWSBQT0tZVkVSU0lPTl9DT01QUkVTU0VEICIyMzAwIj4KIDwhRU5USVRZIFlPQ1RPX1BPS1kgInBva3ktJkRJU1RST19OQU1FX05PX0NBUDstJlBPS1lWRVJTSU9OOyI+Ci08IUVOVElUWSBDT1BZUklHSFRfWUVBUiAiMjAxMC0yMDE5Ij4KKzwhRU5USVRZIENPUFlSSUdIVF9ZRUFSICIyMDEwLTIwMjAiPgorPCFFTlRJVFkgT1JHTkFNRSAiVGhlIFlvY3RvIFByb2plY3QiPgorPCFFTlRJVFkgT1JHRU1BSUwgImRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZyI+CiA8IUVOVElUWSBZT0NUT19ETF9VUkwgImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZyI+CiA8IUVOVElUWSBZT0NUT19IT01FX1VSTCAiaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnIj4KIDwhRU5USVRZIFlPQ1RPX0xJU1RTX1VSTCAiaHR0cDovL2xpc3RzLnlvY3RvcHJvamVjdC5vcmciPgpAQCAtNTgsMjIgKzYwLDMwIEBACiA8IUVOVElUWSBPRV9JTklUX1BBVEggIiZZT0NUT19QT0tZOy9vZS1pbml0LWJ1aWxkLWVudiI+CiA8IUVOVElUWSBPRV9JTklUX0ZJTEUgIm9lLWluaXQtYnVpbGQtZW52Ij4KIDwhRU5USVRZIFVCVU5UVV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTCAiZ2F3ayB3Z2V0IGdpdC1jb3JlIGRpZmZzdGF0IHVuemlwIHRleGluZm8gZ2NjLW11bHRpbGliIFwKLSAgICAgYnVpbGQtZXNzZW50aWFsIGNocnBhdGggc29jYXQgY3BpbyBweXRob24gcHl0aG9uMyBweXRob24zLXBpcCBweXRob24zLXBleHBlY3QgXAorICAgICBidWlsZC1lc3NlbnRpYWwgY2hycGF0aCBzb2NhdCBjcGlvIHB5dGhvbjMgcHl0aG9uMy1waXAgcHl0aG9uMy1wZXhwZWN0IFwKICAgICAgeHotdXRpbHMgZGViaWFudXRpbHMgaXB1dGlscy1waW5nIHB5dGhvbjMtZ2l0IHB5dGhvbjMtamluamEyIGxpYmVnbDEtbWVzYSBsaWJzZGwxLjItZGV2IFwKICAgICAgcHlsaW50MyB4dGVybSI+CiA8IUVOVElUWSBGRURPUkFfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUwgImdhd2sgbWFrZSB3Z2V0IHRhciBiemlwMiBnemlwIHB5dGhvbjMgdW56aXAgcGVybCBwYXRjaCBcCiAgICAgIGRpZmZ1dGlscyBkaWZmc3RhdCBnaXQgY3BwIGdjYyBnY2MtYysrIGdsaWJjLWRldmVsIHRleGluZm8gY2hycGF0aCBcCiAgICAgIGNjYWNoZSBwZXJsLURhdGEtRHVtcGVyIHBlcmwtVGV4dC1QYXJzZVdvcmRzIHBlcmwtVGhyZWFkLVF1ZXVlIHBlcmwtYmlnbnVtIHNvY2F0IFwKICAgICAgcHl0aG9uMy1wZXhwZWN0IGZpbmR1dGlscyB3aGljaCBmaWxlIGNwaW8gcHl0aG9uIHB5dGhvbjMtcGlwIHh6IHB5dGhvbjMtR2l0UHl0aG9uIFwKLSAgICAgcHl0aG9uMy1qaW5qYTIgU0RMLWRldmVsIHh0ZXJtIj4KKyAgICAgcHl0aG9uMy1qaW5qYTIgU0RMLWRldmVsIHh0ZXJtIHJwY2dlbiI+CiA8IUVOVElUWSBPUEVOU1VTRV9IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTCAicHl0aG9uIGdjYyBnY2MtYysrIGdpdCBjaHJwYXRoIG1ha2Ugd2dldCBweXRob24teG1sIFwKICAgICAgZGlmZnN0YXQgbWFrZWluZm8gcHl0aG9uLWN1cnNlcyBwYXRjaCBzb2NhdCBweXRob24zIHB5dGhvbjMtY3Vyc2VzIHRhciBweXRob24zLXBpcCBcCi0gICAgIHB5dGhvbjMtcGV4cGVjdCB4eiB3aGljaCBweXRob24zLUppbmphMiBNZXNhLWxpYkVHTDEKLSAgICAgJCBzdWRvIHBpcDMgaW5zdGFsbCBHaXRQeXRob24gbGliU0RMLWRldmVsIHh0ZXJtIj4KLTwhRU5USVRZIENFTlRPU19IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTCAiLXkgZXBlbC1yZWxlYXNlCisgICAgIHB5dGhvbjMtcGV4cGVjdCB4eiB3aGljaCBweXRob24zLUppbmphMiBNZXNhLWxpYkVHTDEgbGliU0RMLWRldmVsIHh0ZXJtIHJwY2dlbgorICAgICAkIHN1ZG8gcGlwMyBpbnN0YWxsIEdpdFB5dGhvbiI+Cis8IUVOVElUWSBDRU5UT1M3X0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMICIteSBlcGVsLXJlbGVhc2UKICAgICAgJCBzdWRvIHl1bSBtYWtlY2FjaGUKLSAgICAgJCBzdWRvIHl1bSBpbnN0YWxsIGdhd2sgbWFrZSB3Z2V0IHRhciBiemlwMiBnemlwIHB5dGhvbiB1bnppcCBwZXJsIHBhdGNoIFwKKyAgICAgJCBzdWRvIHl1bSBpbnN0YWxsIGdhd2sgbWFrZSB3Z2V0IHRhciBiemlwMiBnemlwIHB5dGhvbjMgdW56aXAgcGVybCBwYXRjaCBcCiAgICAgIGRpZmZ1dGlscyBkaWZmc3RhdCBnaXQgY3BwIGdjYyBnY2MtYysrIGdsaWJjLWRldmVsIHRleGluZm8gY2hycGF0aCBzb2NhdCBcCi0gICAgIHBlcmwtRGF0YS1EdW1wZXIgcGVybC1UZXh0LVBhcnNlV29yZHMgcGVybC1UaHJlYWQtUXVldWUgcHl0aG9uMzQtcGlwIHh6IFwKKyAgICAgcGVybC1EYXRhLUR1bXBlciBwZXJsLVRleHQtUGFyc2VXb3JkcyBwZXJsLVRocmVhZC1RdWV1ZSBweXRob24zNi1waXAgeHogXAogICAgICB3aGljaCBTREwtZGV2ZWwgeHRlcm0KICAgICAgJCBzdWRvIHBpcDMgaW5zdGFsbCBHaXRQeXRob24gamluamEyIj4KKzwhRU5USVRZIENFTlRPUzhfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUwgIi15IGVwZWwtcmVsZWFzZQorICAgICAkIHN1ZG8gZG5mIGNvbmZpZy1tYW5hZ2VyIC0tc2V0LWVuYWJsZWQgUG93ZXJUb29scworICAgICAkIHN1ZG8gZG5mIG1ha2VjYWNoZQorICAgICAkIHN1ZG8gZG5mIGluc3RhbGwgZ2F3ayBtYWtlIHdnZXQgdGFyIGJ6aXAyIGd6aXAgcHl0aG9uMyB1bnppcCBwZXJsIHBhdGNoIFwKKyAgICAgZGlmZnV0aWxzIGRpZmZzdGF0IGdpdCBjcHAgZ2NjIGdjYy1jKysgZ2xpYmMtZGV2ZWwgdGV4aW5mbyBjaHJwYXRoIGNjYWNoZSBcCisgICAgIHNvY2F0IHBlcmwtRGF0YS1EdW1wZXIgcGVybC1UZXh0LVBhcnNlV29yZHMgcGVybC1UaHJlYWQtUXVldWUgcHl0aG9uMy1waXAgXAorICAgICBweXRob24zLUdpdFB5dGhvbiBweXRob24zLWppbmphMiBweXRob24zLXBleHBlY3QgeHogd2hpY2ggU0RMLWRldmVsIHh0ZXJtIFwKKyAgICAgcnBjZ2VuIj4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC11c2FnZS54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwtdXNhZ2UueG1sCmluZGV4IDU5OTliMjkuLjlhNDI3M2EgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC11c2FnZS54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLXVzYWdlLnhtbApAQCAtMjE4Miw3ICsyMTgyLDcgQEAKICAgICAgICAgICAgICAgbWV0YS10b29sY2hhaW4KICAgICAgICAgICAgICAgbWV0YS1pZGUtc3VwcG9ydAogCi0gICAgIFlvdSBjYW4gYWxzbyBydW4gZ2VuZXJhdGVkIHFlbXUgaW1hZ2VzIHdpdGggYSBjb21tYW5kIGxpa2UgJ3J1bnFlbXUgcWVtdXg4NicKKyAgICAgWW91IGNhbiBhbHNvIHJ1biBnZW5lcmF0ZWQgcWVtdSBpbWFnZXMgd2l0aCBhIGNvbW1hbmQgbGlrZSAncnVucWVtdSBxZW11eDg2LTY0JwogCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICBPbmNlIHlvdSd2ZSBkb25lIHRoYXQsIHlvdSBjYW4gY2QgdG8gd2hhdGV2ZXIgZGlyZWN0b3J5CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLnhtbApvbGQgbW9kZSAxMDA2NDQKbmV3IG1vZGUgMTAwNzU1CmluZGV4IGMxZjQ2MWYuLmZhMWZhOGEKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3Byb2ZpbGUtbWFudWFsL3Byb2ZpbGUtbWFudWFsLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwueG1sCkBAIC0yMiwxMSArMjIsMTAgQEAKIAogICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICAgICA8YXV0aG9yPgotICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2NvdHQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgogICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT4mT1JHTkFNRTs8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICA8ZW1haWw+c3JpZmVuYmFya0BnbWFpbC5jb208L2VtYWlsPgorICAgICAgICAgICAgICAgIDxlbWFpbD4mT1JHRU1BSUw7PC9lbWFpbD4KICAgICAgICAgICAgIDwvYXV0aG9yPgogICAgICAgICA8L2F1dGhvcmdyb3VwPgogCkBAIC0zNCw3ICszMyw3IEBACiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjQ8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDEzPC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjQgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS40IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS41PC9yZXZudW1iZXI+CkBAIC00MiwxMSArNDEsNiBAQAogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjUgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjUuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPkphbnVhcnkgMjAxNDwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS41LjEgUmVsZWFzZS48L3JldnJlbWFyaz4KLSAgICAgICAgICAgIDwvcmV2aXNpb24+Ci0gICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjY8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE0PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjYgUmVsZWFzZS48L3JldnJlbWFyaz4KQEAgLTEwMyw5ICs5NywxNCBAQAogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMDwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE5PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgIDwvcmV2aGlzdG9yeT4KIAogICAgIDxjb3B5cmlnaHQ+CkBAIC0xMjksNyArMTI4LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAogICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgogICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKICAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KQEAgLTE0NiwxOCArMTQ1LDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCiAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCiAgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcwotICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIChvciBhbnkgb3RoZXIgWW9jdG8gUHJvamVjdCkgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFpbGluZyBsaXN0IGF0CisgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb2NzQGxpc3RzLnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICBsb2cgaW50byB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmFxLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL2ZhcS54bWwKaW5kZXggNDlmZjg2Mi4uZDk0Y2IzMiAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvZmFxLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9mYXEueG1sCkBAIC0zMyw3ICszMyw3IEBACiAgICAgICAgICAgICA8cGFyYSBpZD0nZmFxLW5vdC1tZWV0aW5nLXJlcXVpcmVtZW50cyc+CiAgICAgICAgICAgICAgICAgTXkgZGV2ZWxvcG1lbnQgc3lzdGVtIGRvZXMgbm90IG1lZXQgdGhlCiAgICAgICAgICAgICAgICAgcmVxdWlyZWQgR2l0LCB0YXIsIGFuZCBQeXRob24gdmVyc2lvbnMuCi0gICAgICAgICAgICAgICAgSW4gcGFydGljdWxhciwgSSBkbyBub3QgaGF2ZSBQeXRob24gMy40LjAgb3IgZ3JlYXRlci4KKyAgICAgICAgICAgICAgICBJbiBwYXJ0aWN1bGFyLCBJIGRvIG5vdCBoYXZlIFB5dGhvbiAzLjUuMCBvciBncmVhdGVyLgogICAgICAgICAgICAgICAgIENhbiBJIHN0aWxsIHVzZSB0aGUgWW9jdG8gUHJvamVjdD8KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9xdWVzdGlvbj4KQEAgLTQzLDcgKzQzLDcgQEAKICAgICAgICAgICAgICAgICBzeXN0ZW0gYSBjb3VwbGUgZGlmZmVyZW50IHdheXMgKGkuZS4gYnVpbGRpbmcgYSB0YXJiYWxsIG9yCiAgICAgICAgICAgICAgICAgZG93bmxvYWRpbmcgYSB0YXJiYWxsKS4KICAgICAgICAgICAgICAgICBTZWUgdGhlCi0gICAgICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcXVpcmVkLWdpdC10YXItYW5kLXB5dGhvbi12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIGFuZCBQeXRob24gVmVyc2lvbnM8L2xpbms+IgorICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZXF1aXJlZC1naXQtdGFyLXB5dGhvbi1hbmQtZ2NjLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgUHl0aG9uIGFuZCBnY2MgVmVyc2lvbnM8L2xpbms+IgogICAgICAgICAgICAgICAgIHNlY3Rpb24gZm9yIHN0ZXBzIG9uIGhvdyB0byB1cGRhdGUgeW91ciBidWlsZCB0b29scy4KICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9hbnN3ZXI+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9taWdyYXRpb24ueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvbWlncmF0aW9uLnhtbAppbmRleCA4ZDUwYWI5Li45NDIyYjVhIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9taWdyYXRpb24ueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL21pZ3JhdGlvbi54bWwKQEAgLTY4MCw3ICs2ODAsNyBAQAogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgRm9yIG1vcmUgaW5mb3JtYXRpb24gb24gdGhpcyByZXF1aXJlbWVudCwgc2VlIHRoZQotICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcXVpcmVkLWdpdC10YXItYW5kLXB5dGhvbi12ZXJzaW9ucyc+UmVxdWlyZWQgR2l0LCB0YXIsIGFuZCBQeXRob24gVmVyc2lvbnM8L2xpbms+IgorICAgICAgICAgICAgIjxsaW5rIGxpbmtlbmQ9J3JlcXVpcmVkLWdpdC10YXItcHl0aG9uLWFuZC1nY2MtdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBQeXRob24gYW5kIGdjYyBWZXJzaW9uczwvbGluaz4iCiAgICAgICAgICAgICBzZWN0aW9uLgogICAgICAgICA8L3BhcmE+CiAgICAgPC9zZWN0aW9uPgpAQCAtMTc1NCw3ICsxNzU0LDcgQEAKICAgICAgICAgICAgIEdpdCB0aGF0IG1lZXRzIHRoaXMgcmVxdWlyZW1lbnQsIHlvdSBjYW4gdXNlIHRoZQogICAgICAgICAgICAgPGZpbGVuYW1lPmJ1aWxkdG9vbHMtdGFyYmFsbDwvZmlsZW5hbWU+IHRoYXQgZG9lcy4KICAgICAgICAgICAgIFNlZSB0aGUKLSAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZXF1aXJlZC1naXQtdGFyLWFuZC1weXRob24tdmVyc2lvbnMnPlJlcXVpcmVkIEdpdCwgdGFyLCBhbmQgUHl0aG9uIFZlcnNpb25zPC9saW5rPiIKKyAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZXF1aXJlZC1naXQtdGFyLXB5dGhvbi1hbmQtZ2NjLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgUHl0aG9uIGFuZCBnY2MgVmVyc2lvbnM8L2xpbms+IgogICAgICAgICAgICAgc2VjdGlvbiBmb3IgbW9yZSBpbmZvcm1hdGlvbi4KICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KQEAgLTIxMTAsNyArMjExMCw3IEBACiAgICAgICAgICAgICBzdWNoIGFzIHRoZSBmb2xsb3dpbmc6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIGluaGVyaXQgYmx1ZXRvb3RoCi0gICAgIFBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICcke0JMVUVafScsICcnLCBkKX0KKyAgICAgUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJyR7QkxVRVp9JywgJycsIGQpfSIKICAgICAgUEFDS0FHRUNPTkZJR1tibHVlejRdID0gIi0tZW5hYmxlLWJsdWV0b290aCwtLWRpc2FibGUtYmx1ZXRvb3RoLGJsdWV6NCIKICAgICAgUEFDS0FHRUNPTkZJR1tibHVlejVdID0gIi0tZW5hYmxlLWJsdWV6NSwtLWRpc2FibGUtYmx1ZXo1LGJsdWV6NSIKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KQEAgLTMyMTUsNyArMzIxNSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHJlY2VudCB2ZXJzaW9uLCB5b3UgY2FuIGluc3RhbGwgdGhlIGJ1aWxkdG9vbHMsIHdoaWNoCiAgICAgICAgICAgICAgICAgICAgIHdpbGwgcHJvdmlkZSBpdC4KICAgICAgICAgICAgICAgICAgICAgU2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVxdWlyZWQtZ2l0LXRhci1hbmQtcHl0aG9uLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiBWZXJzaW9uczwvbGluaz4iCisgICAgICAgICAgICAgICAgICAgICI8bGluayBsaW5rZW5kPSdyZXF1aXJlZC1naXQtdGFyLXB5dGhvbi1hbmQtZ2NjLXZlcnNpb25zJz5SZXF1aXJlZCBHaXQsIHRhciwgUHl0aG9uIGFuZCBnY2MgVmVyc2lvbnM8L2xpbms+IgogICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGZvciBtb3JlIGluZm9ybWF0aW9uIG9uIHRoZSBidWlsZHRvb2xzIHRhcmJhbGwuCiAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KQEAgLTM2MjQsNyArMzYyNCw3IEBACiAgICAgICAgICAgICBpbWFnZSB0eXBlcywgdGhpcyBwYXJ0IG9mIHRoZSBrZXJuZWwgaW1hZ2UgYmFzZSBuYW1lIGFzIGJlZW4KICAgICAgICAgICAgIHJlbW92ZWQgbGVhdmluZyBvbmx5IHRoZSBmb2xsb3dpbmc6CiAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+Ci0gICAgIEtFUk5FTF9JTUFHRV9CQVNFX05BTUUgPz0gIiR7UEtHRX0tJHtQS0dWfS0ke1BLR1J9LSR7TUFDSElORX0tJHtEQVRFVElNRX0KKyAgICAgS0VSTkVMX0lNQUdFX0JBU0VfTkFNRSA/PSAiJHtQS0dFfS0ke1BLR1Z9LSR7UEtHUn0tJHtNQUNISU5FfS0ke0RBVEVUSU1FfSIKICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgIElmIHlvdSBoYXZlIHJlY2lwZXMgb3IgY2xhc3NlcyB0aGF0IHVzZQogICAgICAgICAgICAgPGZpbGVuYW1lPktFUk5FTF9JTUFHRV9CQVNFX05BTUU8L2ZpbGVuYW1lPiBkaXJlY3RseSwgeW91IG1pZ2h0CkBAIC01NjAxLDcgKzU2MDEsNyBAQAogICAgICAgICAgICAgICAgICAgICBjcmVhdGlvbiB0aW1lLCB1c2UKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdF9vbnRhcmdldCgpPC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgb3IgY2FsbAotICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cG9zdGluc3QtaW50ZXJjZXB0cyBkZWZlcl90b19maXJzdF9ib290PC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnBvc3RpbnN0X2ludGVyY2VwdCBkZWxheV90b19maXJzdF9ib290PC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgZnJvbSA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0KCk8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgQW55IGZhaWx1cmUgb2YgYSA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0KCk8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgICAgICBzY3JpcHQgKGluY2x1ZGluZyA8ZmlsZW5hbWU+ZXhpdCAxPC9maWxlbmFtZT4pCkBAIC02MTkyLDcgKzYxOTIsNyBAQAogICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gZXhwbGljaXRseSBkZWZlciBhIHBvc3RpbnN0YWxsIHRvIGZpcnN0IGJvb3Qgb24KICAgICAgICAgICAgIHRoZSB0YXJnZXQgcmF0aGVyIHRoYW4gYXQgcm9vdGZzIGNyZWF0aW9uIHRpbWUsIHVzZQogICAgICAgICAgICAgPGZpbGVuYW1lPnBrZ19wb3N0aW5zdF9vbnRhcmdldCgpPC9maWxlbmFtZT4gb3IgY2FsbAotICAgICAgICAgICAgPGZpbGVuYW1lPnBvc3RpbnN0LWludGVyY2VwdHMgZGVmZXJfdG9fZmlyc3RfYm9vdDwvZmlsZW5hbWU+IGZyb20KKyAgICAgICAgICAgIDxmaWxlbmFtZT5wb3N0aW5zdF9pbnRlcmNlcHQgZGVsYXlfdG9fZmlyc3RfYm9vdDwvZmlsZW5hbWU+IGZyb20KICAgICAgICAgICAgIDxmaWxlbmFtZT5wa2dfcG9zdGluc3QoKTwvZmlsZW5hbWU+LgogICAgICAgICAgICAgQW55IGZhaWx1cmUgb2YgYSA8ZmlsZW5hbWU+cGtnX3Bvc3RpbnN0KCk8L2ZpbGVuYW1lPiBzY3JpcHQKICAgICAgICAgICAgIChpbmNsdWRpbmcgZXhpdCAxKSB0cmlnZ2VycyBhbiBlcnJvciBkdXJpbmcgdGhlCkBAIC03MDk1LDYgKzcwOTUsMjA3IEBACiAgICAgPC9zZWN0aW9uPgogPC9zZWN0aW9uPgogCisKKzxzZWN0aW9uIGlkPSdtb3ZpbmctdG8tdGhlLXlvY3RvLXByb2plY3QtMy4xLXJlbGVhc2UnPgorICAgIDx0aXRsZT5Nb3ZpbmcgdG8gdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2U8L3RpdGxlPgorCisgICAgPHBhcmE+CisgICAgICAgIFRoaXMgc2VjdGlvbiBwcm92aWRlcyBtaWdyYXRpb24gaW5mb3JtYXRpb24gZm9yIG1vdmluZyB0byB0aGUKKyAgICAgICAgWW9jdG8gUHJvamVjdCAzLjEgUmVsZWFzZSBmcm9tIHRoZSBwcmlvciByZWxlYXNlLgorICAgIDwvcGFyYT4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLW1pbmltdW0tc3lzdGVtLXJlcXVpcmVtZW50cyc+CisgICAgICAgIDx0aXRsZT5NaW5pbXVtIHN5c3RlbSByZXF1aXJlbWVudHM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyB2ZXJzaW9ucyAvIHJlcXVpcmVtZW50cyBvZiBidWlsZCBob3N0IGNvbXBvbmVudHMgaGF2ZSBiZWVuIHVwZGF0ZWQ6CisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5nY2MgNS4wPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPnB5dGhvbiAzLjU8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+dGFyIDEuMjg8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnJwY2dlbjwvZmlsZW5hbWU+IGlzIG5vdyByZXF1aXJlZCBvbiB0aGUgaG9zdCAocGFydCBvZiB0aGUgPGZpbGVuYW1lPmxpYmMtZGV2LWJpbjwvZmlsZW5hbWU+IHBhY2thZ2Ugb24gVWJ1bnR1LCBEZWJpYW4gYW5kIHJlbGF0ZWQgZGlzdHJpYnV0aW9ucywgYW5kIHRoZSA8ZmlsZW5hbWU+Z2xpYmM8L2ZpbGVuYW1lPiBwYWNrYWdlIG9uIFJQTS1iYXNlZCBkaXN0cmlidXRpb25zKS48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgCisgICAgICAgICAgICBBZGRpdGlvbmFsbHksIHRoZSA8ZmlsZW5hbWU+bWFrZWluZm88L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPnBvZDJtYW48L2ZpbGVuYW1lPgorICAgICAgICAgICAgdG9vbHMgYXJlIDxlbXBoYXNpcz5ubyBsb25nZXI8L2VtcGhhc2lzPiByZXF1aXJlZCBvbiB0aGUgaG9zdC4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLW1wYzgzMTVlLXJkYi1yZW1vdmVkJz4KKyAgICAgICAgPHRpdGxlPm1wYzgzMTVlLXJkYiBtYWNoaW5lIHJlbW92ZWQ8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIE1QQzgzMTVFLVJEQiBtYWNoaW5lIGlzIG9sZC9vYnNvbGV0ZSBhbmQgdW5vYnRhaW5hYmxlLCB0aHVzIGdpdmVuIHRoZSBtYWludGVuYW5jZSBidXJkZW4KKyAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+bXBjODMxNWUtcmRiPC9maWxlbmFtZT4gbWFjaGluZSBjb25maWd1cmF0aW9uIHRoYXQgc3VwcG9ydGVkIGl0IGhhcyBiZWVuIHJlbW92ZWQKKyAgICAgICAgICAgIGluIHRoaXMgcmVsZWFzZS4gVGhlIHJlbW92YWwgZG9lcyBsZWF2ZSBhIGdhcCBpbiBvZmZpY2lhbCBQb3dlclBDIHJlZmVyZW5jZSBoYXJkd2FyZQorICAgICAgICAgICAgc3VwcG9ydDsgdGhpcyBtYXkgY2hhbmdlIGluIGZ1dHVyZSBpZiBhIHN1aXRhYmxlIG1hY2hpbmUgd2l0aCBhY2NvbXBhbnlpbmcgc3VwcG9ydCByZXNvdXJjZXMKKyAgICAgICAgICAgIGlzIGZvdW5kLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorICAgIAorICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLXB5dGhvbi0yLXJlbW92ZWQnPgorICAgICAgICA8dGl0bGU+UHl0aG9uIDIgcmVtb3ZlZDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBEdWUgdG8gdGhlIGV4cGlyYXRpb24gb2YgdXBzdHJlYW0gc3VwcG9ydCBpbiBKYW51YXJ5IDIwMjAsIHN1cHBvcnQgZm9yIFB5dGhvbiAyIGhhcyBub3cgYmVlbiByZW1vdmVkOyBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgUHl0aG9uIDMgaW5zdGVhZC4gSWYgYWJzb2x1dGVseSBuZWVkZWQgdGhlcmUgaXMgYSBtZXRhLXB5dGhvbjIgY29tbXVuaXR5IGxheWVyIGNvbnRhaW5pbmcgUHl0aG9uIDIsIHJlbGF0ZWQgY2xhc3NlcyBhbmQgdmFyaW91cyBQeXRob24gMi1iYXNlZCBtb2R1bGVzLCBob3dldmVyIGl0IHNob3VsZCBub3QgYmUgY29uc2lkZXJlZCBhcyBzdXBwb3J0ZWQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1yZXByb2R1Y2libGUtYnVpbGRzJz4KKyAgICAgICAgPHRpdGxlPlJlcHJvZHVjaWJsZSBidWlsZHMgbm93IGVuYWJsZWQgYnkgZGVmYXVsdDwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiBvcmRlciB0byBhdm9pZCB1bm5lY2Vzc2FyeSBkaWZmZXJlbmNlcyBpbiBvdXRwdXQgZmlsZXMgKGFpZGluZyBiaW5hcnkgcmVwcm9kdWNpYmlsaXR5KSwgdGhlIFBva3kgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gKDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItRElTVFJPJz5ESVNUUk88L2xpbms+ID0gInBva3kiPC9maWxlbmFtZT4pIG5vdyBpbmhlcml0cyB0aGUgPGZpbGVuYW1lPnJlcHJvZHVjaWJsZV9idWlsZDwvZmlsZW5hbWU+IGNsYXNzIGJ5IGRlZmF1bHQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisgICAgCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtcHRlc3QtZmVhdHVyZS1pbXBhY3QnPgorICAgICAgICA8dGl0bGU+SW1wYWN0IG9mIHB0ZXN0IGZlYXR1cmUgaXMgbm93IG1vcmUgc2lnbmlmaWNhbnQ8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIFBva3kgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24gKDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItRElTVFJPJz5ESVNUUk88L2xpbms+ID0gInBva3kiPC9maWxlbmFtZT4pIGVuYWJsZXMgcHRlc3RzIGJ5IGRlZmF1bHQgdG8gZW5hYmxlIHJ1bnRpbWUgdGVzdGluZyBvZiB2YXJpb3VzIGNvbXBvbmVudHMuIEluIHRoaXMgcmVsZWFzZSwgYSBkZXBlbmRlbmN5IG5lZWRlZCB0byBiZSBhZGRlZCB0aGF0IGhhcyByZXN1bHRlZCBpbiBhIHNpZ25pZmljYW50IGluY3JlYXNlIGluIHRoZSBudW1iZXIgb2YgY29tcG9uZW50cyB0aGF0IHdpbGwgYmUgYnVpbHQganVzdCB3aGVuIGJ1aWxkaW5nIGEgc2ltcGxlIGltYWdlIHN1Y2ggYXMgY29yZS1pbWFnZS1taW5pbWFsLiBJZiB5b3UgZG8gbm90IG5lZWQgcnVudGltZSB0ZXN0cyBlbmFibGVkIGZvciBjb3JlIGNvbXBvbmVudHMsIHRoZW4gaXQgaXMgcmVjb21tZW5kZWQgdGhhdCB5b3UgcmVtb3ZlICJwdGVzdCIgZnJvbSA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+IHRvIHNhdmUgYSBzaWduaWZpY2FudCBhbW91bnQgb2YgYnVpbGQgdGltZSBlLmcuIGJ5IGFkZGluZyB0aGUgZm9sbG93aW5nIGluIHlvdXIgY29uZmlndXJhdGlvbjoKKworICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAgRElTVFJPX0ZFQVRVUkVTX3JlbW92ZSA9ICJwdGVzdCIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLXJlbW92ZWQtcmVjaXBlcyc+CisgICAgICAgIDx0aXRsZT5SZW1vdmVkIHJlY2lwZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIGZvbGxvd2luZyByZWNpcGVzIGhhdmUgYmVlbiByZW1vdmVkOgorCisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+Y2hrY29uZmlnPC9maWxlbmFtZT46IG9ic29sZXRlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5jb25zb2xlLXRvb2xzPC9maWxlbmFtZT46IG9ic29sZXRlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5lbmNoYW50PC9maWxlbmFtZT46IHJlcGxhY2VkIGJ5IDxmaWxlbmFtZT5lbmNoYW50MjwvZmlsZW5hbWU+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5mb29tYXRpYy1maWx0ZXJzPC9maWxlbmFtZT46IG9ic29sZXRlPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5saWJpZG48L2ZpbGVuYW1lPjogbm8gbG9uZ2VyIG5lZWRlZCwgbW92ZWQgdG8gbWV0YS1vZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bGlibW9kdWxlbWQ8L2ZpbGVuYW1lPjogcmVwbGFjZWQgYnkgPGZpbGVuYW1lPmxpYm1vZHVsZW1kLXYxPC9maWxlbmFtZT48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmxpbnV4LXlvY3RvPC9maWxlbmFtZT46IGRyb3AgNC4xOSwgNS4yIHZlcnNpb24gcmVjaXBlcyAoNS40IG5vdyBwcm92aWRlZCk8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPm5zcHI8L2ZpbGVuYW1lPjogbm8gbG9uZ2VyIG5lZWRlZCwgbW92ZWQgdG8gbWV0YS1vZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bnNzPC9maWxlbmFtZT46IG5vIGxvbmdlciBuZWVkZWQsIG1vdmVkIHRvIG1ldGEtb2U8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnB5dGhvbjwvZmlsZW5hbWU+OiBQeXRob24gMiByZW1vdmVkIChQeXRob24gMyBwcmVmZXJyZWQpPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5weXRob24tc2V0dXB0b29sczwvZmlsZW5hbWU+OiBQeXRob24gMiB2ZXJzaW9uIHJlbW92ZWQgKHB5dGhvbjMtc2V0dXB0b29scyBwcmVmZXJyZWQpPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5zeXNwcm9mPC9maWxlbmFtZT46IG5vIGxvbmdlciBuZWVkZWQsIG1vdmVkIHRvIG1ldGEtb2U8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnRleGkyaHRtbDwvZmlsZW5hbWU+OiBvYnNvbGV0ZTwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+dS1ib290LWZ3LXV0aWxzPC9maWxlbmFtZT46IGZ1bmN0aW9uYWxseSByZXBsYWNlZCBieSA8ZmlsZW5hbWU+bGlidWJvb3RlbnY8L2ZpbGVuYW1lPjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1mZWF0dXJlcy1jaGVjayc+CisgICAgICAgIDx0aXRsZT5mZWF0dXJlc19jaGVjayBjbGFzcyByZXBsYWNlcyBkaXN0cm9fZmVhdHVyZXNfY2hlY2s8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5kaXN0cm9fZmVhdHVyZXNfY2hlY2s8L2ZpbGVuYW1lPiBjbGFzcyBoYXMgaGFkIGl0cyBmdW5jdGlvbmFsaXR5IGV4cGFuZGVkLCBub3cgc3VwcG9ydGluZyA8ZmlsZW5hbWU+QU5ZX09GX01BQ0hJTkVfRkVBVFVSRVM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPlJFUVVJUkVEX01BQ0hJTkVfRkVBVFVSRVM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPkNPTkZMSUNUX01BQ0hJTkVfRkVBVFVSRVM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPkFOWV9PRl9DT01CSU5FRF9GRUFUVVJFUzwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+UkVRVUlSRURfQ09NQklORURfRkVBVFVSRVM8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPkNPTkZMSUNUX0NPTUJJTkVEX0ZFQVRVUkVTPC9maWxlbmFtZT4uIEFzIGEgcmVzdWx0IHRoZSBjbGFzcyBoYXMgbm93IGJlZW4gcmVuYW1lZCB0byA8ZmlsZW5hbWU+ZmVhdHVyZXNfY2hlY2s8L2ZpbGVuYW1lPjsgdGhlIDxmaWxlbmFtZT5kaXN0cm9fZmVhdHVyZXNfY2hlY2s8L2ZpbGVuYW1lPiBjbGFzcyBzdGlsbCBleGlzdHMgYnV0IGdlbmVyYXRlcyBhIHdhcm5pbmcgYW5kIHJlZGlyZWN0cyB0byB0aGUgbmV3IGNsYXNzLiBJbiBwcmVwYXJhdGlvbiBmb3IgYSBmdXR1cmUgcmVtb3ZhbCBvZiB0aGUgb2xkIGNsYXNzIGl0IGlzIHJlY29tbWVuZGVkIHRoYXQgeW91IHVwZGF0ZSByZWNpcGVzIGN1cnJlbnRseSBpbmhlcml0aW5nIDxmaWxlbmFtZT5kaXN0cm9fZmVhdHVyZXNfY2hlY2s8L2ZpbGVuYW1lPiB0byBpbmhlcml0IDxmaWxlbmFtZT5mZWF0dXJlc19jaGVjazwvZmlsZW5hbWU+IGluc3RlYWQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1yZW1vdmVkLWNsYXNzZXMnPgorICAgICAgICA8dGl0bGU+UmVtb3ZlZCBjbGFzc2VzPC90aXRsZT4KKworICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgY2xhc3NlcyBoYXZlIGJlZW4gcmVtb3ZlZDoKKworICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmRpc3R1dGlscy1iYXNlPC9maWxlbmFtZT46IG1vdmVkIHRvIG1ldGEtcHl0aG9uMjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+ZGlzdHV0aWxzPC9maWxlbmFtZT46IG1vdmVkIHRvIG1ldGEtcHl0aG9uMjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bGliYy1jb21tb248L2ZpbGVuYW1lPjogbWVyZ2VkIGludG8gdGhlIGdsaWJjIHJlY2lwZSBhcyBub3RoaW5nIGVsc2UgdXNlZCBpdC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPnB5dGhvbi1kaXI8L2ZpbGVuYW1lPjogbW92ZWQgdG8gbWV0YS1weXRob24yPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5weXRob25uYXRpdmU8L2ZpbGVuYW1lPjogbW92ZWQgdG8gbWV0YS1weXRob24yPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxmaWxlbmFtZT5zZXR1cHRvb2xzPC9maWxlbmFtZT46IG1vdmVkIHRvIG1ldGEtcHl0aG9uMjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+dGluZGVyY2xpZW50PC9maWxlbmFtZT46IGRyb3BwZWQgYXMgaXQgd2FzIG9ic29sZXRlLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1zcmMtdXJpLWNoZWNrc3Vtcyc+CisgICAgICAgIDx0aXRsZT5TUkNfVVJJIGNoZWNrc3VtIGJlaGF2aW91cjwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBQcmV2aW91c2x5LCByZWNpcGVzIGJ5IHRyYWRpdGlvbiBpbmNsdWRlZCBib3RoIFNIQTI1NiBhbmQgTUQ1IGNoZWNrc3VtcyBmb3IgcmVtb3RlbHkgZmV0Y2hlZCBmaWxlcyBpbiA8bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4sIGV2ZW4gdGhvdWdoIG9ubHkgb25lIGlzIGFjdHVhbGx5IG1hbmRhdGVkLiBIb3dldmVyLCB0aGUgTUQ1IGNoZWNrc3VtIGRvZXMgbm90IGFkZCBtdWNoIGdpdmVuIGl0cyBpbmhlcmVudCB3ZWFrbmVzczsgdGh1cyB3aGVuIGEgY2hlY2tzdW0gZmFpbHMgb25seSB0aGUgU0hBMjU2IHN1bSB3aWxsIG5vdyBiZSBwcmludGVkLiBUaGUgbWQ1c3VtIHdpbGwgc3RpbGwgYmUgdmVyaWZpZWQgaWYgaXQgaXMgc3BlY2lmaWVkLgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorCisKKyAgICA8c2VjdGlvbiBpZD0nbWlncmF0aW9uLTMuMS1ucG0nPgorICAgICAgICA8dGl0bGU+bnBtIGZldGNoZXIgY2hhbmdlczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBUaGUgbnBtIGZldGNoZXIgaGFzIGJlZW4gY29tcGxldGVseSByZXdvcmtlZCBpbiB0aGlzIHJlbGVhc2UuIFRoZSBucG0gZmV0Y2hlciBub3cgb25seSBmZXRjaGVzIHRoZSBwYWNrYWdlIHNvdXJjZSBpdHNlbGYgYW5kIG5vIGxvbmdlciB0aGUgZGVwZW5kZW5jaWVzOyB0aGVyZSBpcyBub3cgYWxzbyBhbiBucG1zdyBmZXRjaGVyIHdoaWNoIGV4cGxpY2l0bHkgZmV0Y2hlcyB0aGUgc2hyaW5rd3JhcCBmaWxlIGFuZCB0aGUgZGVwZW5kZW5jaWVzLiBUaGlzIHJlbW92ZXMgdGhlIHNsaWdodGx5IGF3a3dhcmQgPGZpbGVuYW1lPk5QTV9MT0NLRE9XTjwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+TlBNX1NIUklOS1dSQVA8L2ZpbGVuYW1lPiB2YXJpYWJsZXMgd2hpY2ggcG9pbnRlZCB0byBsb2NhbCBmaWxlczsgdGhlIGxvY2tkb3duIGZpbGUgaXMgbm8gbG9uZ2VyIG5lZWRlZCBhdCBhbGwuIEFkZGl0aW9uYWxseSwgdGhlIHBhY2thZ2UgbmFtZSBpbiA8ZmlsZW5hbWU+bnBtOi8vPC9maWxlbmFtZT4gZW50cmllcyBpbiA8bGluayBsaW5rZW5kPSd2YXItU1JDX1VSSSc+PGZpbGVuYW1lPlNSQ19VUkk8L2ZpbGVuYW1lPjwvbGluaz4gaXMgbm93IHNwZWNpZmllZCB1c2luZyBhIDxmaWxlbmFtZT5wYWNrYWdlPC9maWxlbmFtZT4gcGFyYW1ldGVyIGluc3RlYWQgb2YgdGhlIGVhcmxpZXIgPGZpbGVuYW1lPm5hbWU8L2ZpbGVuYW1lPiB3aGljaCBvdmVybGFwcGVkIHdpdGggdGhlIGdlbmVyaWMgPGZpbGVuYW1lPm5hbWU8L2ZpbGVuYW1lPiBwYXJhbWV0ZXIuIEFsbCByZWNpcGVzIHVzaW5nIHRoZSBucG0gZmV0Y2hlciB3aWxsIG5lZWQgdG8gYmUgY2hhbmdlZCBhcyBhIHJlc3VsdC4gCisgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBBbiBleGFtcGxlIG9mIHRoZSBuZXcgc2NoZW1lOgorICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorU1JDX1VSSSA9ICJucG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1hcnJheS1mbGF0dGVuO3ZlcnNpb249MS4xLjEgXAorICAgICAgICAgICBucG1zdzovLyR7VEhJU0RJUn0vbnBtLXNocmlua3dyYXAuanNvbiIKKyAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgIEFub3RoZXIgZXhhbXBsZSB3aGVyZSB0aGUgc291cmNlcyBhcmUgZmV0Y2hlZCBmcm9tIGdpdCByYXRoZXIgdGhhbiBhbiBucG0gcmVwb3NpdG9yeToKKyAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9mb28vYmFyLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIG5wbXN3Oi8vJHtUSElTRElSfS9ucG0tc2hyaW5rd3JhcC5qc29uIgorICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgZGV2dG9vbCBhbmQgcmVjaXBldG9vbCBoYXZlIGFsc28gYmVlbiB1cGRhdGVkIHRvIG1hdGNoIHdpdGggdGhlIG5wbSBmZXRjaGVyIGNoYW5nZXMuIE90aGVyIHRoYW4gcHJvZHVjaW5nIHdvcmtpbmcgYW5kIG1vcmUgY29tcGxldGUgcmVjaXBlcyBmb3IgbnBtIHNvdXJjZXMsIHRoZXJlIGlzIGFsc28gYSBtaW5vciBjaGFuZ2UgdG8gdGhlIGNvbW1hbmQgbGluZSBmb3IgZGV2dG9vbDogdGhlIDxmaWxlbmFtZT4tLWZldGNoLWRldjwvZmlsZW5hbWU+IG9wdGlvbiBoYXMgYmVlbiByZW5hbWVkIHRvIDxmaWxlbmFtZT4tLW5wbS1kZXY8L2ZpbGVuYW1lPiBhcyBpdCBpcyBucG0tc3BlY2lmaWMuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisgICAgCisgICAgCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtcGFja2FnaW5nLWNoYW5nZXMnPgorICAgICAgICA8dGl0bGU+UGFja2FnaW5nIGNoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPmludGx0b29sPC9maWxlbmFtZT4gaGFzIGJlZW4gcmVtb3ZlZCBmcm9tIDxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAtY29yZS1zZGs8L2ZpbGVuYW1lPiBhcyBpdCBpcyByYXJlbHkgbmVlZGVkIHRvIGJ1aWxkIG1vZGVybiBzb2Z0d2FyZSAtIGdldHRleHQgY2FuIGRvIG1vc3Qgb2YgdGhlIHRoaW5ncyBpdCB1c2VkIHRvIGJlIG5lZWRlZCBmb3IuIDxmaWxlbmFtZT5pbnRsdG9vbDwvZmlsZW5hbWU+IGhhcyBhbHNvIGJlZW4gcmVtb3ZlZCBmcm9tIDxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAtY29yZS1zZWxmLWhvc3RlZDwvZmlsZW5hbWU+IGFzIGl0IGlzIG5vdCBuZWVkZWQgdG8gZm9yIHN0YW5kYXJkIGJ1aWxkcy48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Z2l0OiA8ZmlsZW5hbWU+Z2l0LWFtPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5naXQtZGlmZnRvb2w8L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPmdpdC1zdWJtb2R1bGU8L2ZpbGVuYW1lPiwgYW5kIDxmaWxlbmFtZT5naXQtcmVxdWVzdC1wdWxsPC9maWxlbmFtZT4gYXJlIG5vIGxvbmdlciBwZXJsLWJhc2VkLCBzbyBhcmUgbm93IGluc3RhbGxlZCB3aXRoIHRoZSBtYWluIDxmaWxlbmFtZT5naXQ8L2ZpbGVuYW1lPiBwYWNrYWdlIGluc3RlYWQgb2Ygd2l0aGluIDxmaWxlbmFtZT5naXQtcGVybHRvb2xzPC9maWxlbmFtZT4uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSA8ZmlsZW5hbWU+bGRjb25maWc8L2ZpbGVuYW1lPiBiaW5hcnkgYnVpbHQgYXMgcGFydCBvZiBnbGliYyBoYXMgbm93IGJlZW4gbW92ZWQgdG8gaXRzIG93biA8ZmlsZW5hbWU+bGRjb25maWc8L2ZpbGVuYW1lPiBwYWNrYWdlIChub3RlIG5vIDxmaWxlbmFtZT5nbGliYy08L2ZpbGVuYW1lPiBwcmVmaXgpLiBUaGlzIHBhY2thZ2UgaXMgaW4gdGhlIDxsaW5rIGxpbmtlbmQ9J3Zhci1SUkVDT01NRU5EUyc+PGZpbGVuYW1lPlJSRUNPTU1FTkRTPC9maWxlbmFtZT48L2xpbms+IG9mIHRoZSBtYWluIDxmaWxlbmFtZT5nbGliYzwvZmlsZW5hbWU+IHBhY2thZ2UgaWYgPGZpbGVuYW1lPmxkY29uZmlnPC9maWxlbmFtZT4gaXMgcHJlc2VudCBpbiA8bGluayBsaW5rZW5kPSd2YXItRElTVFJPX0ZFQVRVUkVTJz48ZmlsZW5hbWU+RElTVFJPX0ZFQVRVUkVTPC9maWxlbmFtZT48L2xpbms+LjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+bGliZXZlbnQ8L2ZpbGVuYW1lPiBub3cgc3BsaXRzIGVhY2ggc2hhcmVkIGxpYnJhcnkgaW50byBpdHMgb3duIHBhY2thZ2UgKGFzIERlYmlhbiBkb2VzKS4gU2luY2UgdGhlc2UgYXJlIHNoYXJlZCBsaWJyYXJpZXMgYW5kIHdpbGwgYmUgcHVsbGVkIGluIHRocm91Z2ggdGhlIG5vcm1hbCBzaGFyZWQgbGlicmFyeSBkZXBlbmRlbmN5IGhhbmRsaW5nLCB0aGVyZSBzaG91bGQgYmUgbm8gaW1wYWN0IHRvIGV4aXN0aW5nIGNvbmZpZ3VyYXRpb25zIG90aGVyIHRoYW4gbGVzcyB1bm5lY2Vzc2FyeSBsaWJyYXJpZXMgYmVpbmcgaW5zdGFsbGVkIGluIHNvbWUgY2FzZXMuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPmxpbnV4LWZpcm13YXJlIG5vdyBoYXMgYSBuZXcgcGFja2FnZSBmb3IgPGZpbGVuYW1lPmJjbTQzNjZjPC9maWxlbmFtZT4gYW5kIGluY2x1ZGVzIGF2YWlsYWJsZSBOVlJBTSBjb25maWcgZmlsZXMgaW50byB0aGUgPGZpbGVuYW1lPmJjbTQzMzQwPC9maWxlbmFtZT4sIDxmaWxlbmFtZT5iY200MzM2MjwvZmlsZW5hbWU+LCA8ZmlsZW5hbWU+YmNtNDM0MzA8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmJjbTQzNTYtcGNpZTwvZmlsZW5hbWU+IHBhY2thZ2VzLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZmlsZW5hbWU+aGFyZmJ1eno8L2ZpbGVuYW1lPiBub3cgc3BsaXRzIHRoZSBuZXcgPGZpbGVuYW1lPmxpYmhhcmZidXp6LXN1YnNldC5zbzwvZmlsZW5hbWU+IGxpYnJhcnkgaW50byBpdHMgb3duIHBhY2thZ2UgdG8gcmVkdWNlIHRoZSBtYWluIHBhY2thZ2Ugc2l6ZSBpbiBjYXNlcyB3aGVyZSA8ZmlsZW5hbWU+bGliaGFyZmJ1enotc3Vic2V0LnNvPC9maWxlbmFtZT4gaXMgbm90IG5lZWRlZC48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICA8L3BhcmE+CisgICAgPC9zZWN0aW9uPgorICAgIAorICAgIDxzZWN0aW9uIGlkPSdtaWdyYXRpb24tMy4xLXBhY2thZ2UtcWEtd2FybmluZ3MnPgorICAgICAgICA8dGl0bGU+QWRkaXRpb25hbCB3YXJuaW5nczwvdGl0bGU+CisKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBXYXJuaW5ncyB3aWxsIG5vdyBiZSBzaG93biBhdCA8ZmlsZW5hbWU+ZG9fcGFja2FnZV9xYTwvZmlsZW5hbWU+IHRpbWUgaW4gdGhlIGZvbGxvd2luZyBjaXJjdW1zdGFuY2VzOgorICAgICAgICAgICAgCisgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIHJlY2lwZSBpbnN0YWxscyA8ZmlsZW5hbWU+LmRlc2t0b3A8L2ZpbGVuYW1lPiBmaWxlcyBjb250YWluaW5nIDxmaWxlbmFtZT5NaW1lVHlwZTwvZmlsZW5hbWU+IGtleXMgYnV0IGRvZXMgbm90IGluaGVyaXQgdGhlIG5ldyA8ZmlsZW5hbWU+bWltZS14ZGc8L2ZpbGVuYW1lPiBjbGFzczwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5BIHJlY2lwZSBpbnN0YWxscyA8ZmlsZW5hbWU+LnhtbDwvZmlsZW5hbWU+IGZpbGVzIGludG8gPGZpbGVuYW1lPiR7ZGF0YWRpcn0vbWltZS9wYWNrYWdlczwvZmlsZW5hbWU+IGJ1dCBkb2VzIG5vdCBpbmhlcml0IHRoZSA8ZmlsZW5hbWU+bWltZTwvZmlsZW5hbWU+IGNsYXNzPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKyAgICAgICAgCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEteDg2LWxpdmUtd2ljJz4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT53aWM8L2ZpbGVuYW1lPiBpbWFnZSB0eXBlIG5vdyB1c2VkIGluc3RlYWQgb2YgPGZpbGVuYW1lPmxpdmU8L2ZpbGVuYW1lPiBieSBkZWZhdWx0IGZvciB4ODY8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYzwvZmlsZW5hbWU+IChpbmhlcml0ZWQgYnkgbW9zdCB4ODYgbWFjaGluZSBjb25maWd1cmF0aW9ucykgbm93IHNwZWNpZmllcyA8ZmlsZW5hbWU+d2ljPC9maWxlbmFtZT4gaW5zdGVhZCBvZiA8ZmlsZW5hbWU+bGl2ZTwvZmlsZW5hbWU+IGJ5IGRlZmF1bHQgaW4gPGxpbmsgbGlua2VuZD0ndmFyLUlNQUdFX0ZTVFlQRVMnPjxmaWxlbmFtZT5JTUFHRV9GU1RZUEVTPC9maWxlbmFtZT48L2xpbms+LiBUaGUgPGZpbGVuYW1lPmxpdmU8L2ZpbGVuYW1lPiBpbWFnZSB0eXBlIHdpbGwgbGlrZWx5IGJlIHJlbW92ZWQgaW4gYSBmdXR1cmUgcmVsZWFzZSBzbyBpdCBpcyByZWNvbW1lbmRlZCB0aGF0IHlvdSB1c2UgPGZpbGVuYW1lPndpYzwvZmlsZW5hbWU+IGluc3RlYWQuCisgICAgICAgIDwvcGFyYT4KKyAgICA8L3NlY3Rpb24+CisgICAgICAgICAgICAgICAgCisgICAgPHNlY3Rpb24gaWQ9J21pZ3JhdGlvbi0zLjEtbWlzYyc+CisgICAgICAgIDx0aXRsZT5NaXNjZWxsYW5lb3VzIGNoYW5nZXM8L3RpdGxlPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+VGhlIHVuZG9jdW1lbnRlZCA8ZmlsZW5hbWU+U1JDX0RJU1RSSUJVVEVfTElDRU5TRVM8L2ZpbGVuYW1lPiB2YXJpYWJsZSBoYXMgbm93IGJlZW4gcmVtb3ZlZCBpbiBmYXZvdXIgb2YgYSBuZXcgPGZpbGVuYW1lPkFWQUlMQUJMRV9MSUNFTlNFUzwvZmlsZW5hbWU+IHZhcmlhYmxlIHdoaWNoIGlzIGR5bmFtaWNhbGx5IHNldCBiYXNlZCB1cG9uIGxpY2Vuc2UgZmlsZXMgZm91bmQgaW4gPGZpbGVuYW1lPiR7Q09NTU9OX0xJQ0VOU0VfRElSfTwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+JHtMSUNFTlNFX1BBVEh9PC9maWxlbmFtZT4uPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlRoZSB0dW5lIGRlZmluaXRpb24gZm9yIGJpZy1lbmRpYW4gbWljcm9ibGF6ZSBtYWNoaW5lcyBpcyBub3cgPGZpbGVuYW1lPm1pY3JvYmxhemU8L2ZpbGVuYW1lPiBpbnN0ZWFkIG9mIDxmaWxlbmFtZT5taWNyb2JsYXplZWI8L2ZpbGVuYW1lPi48L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGZpbGVuYW1lPm5ld2xpYjwvZmlsZW5hbWU+IG5vIGxvbmdlciBoYXMgYnVpbHQtaW4gc3lzY2FsbHMuIDxmaWxlbmFtZT5saWJnbG9zczwvZmlsZW5hbWU+IHNob3VsZCB0aGVuIHByb3ZpZGUgdGhlIHN5c2NhbGxzLCA8ZmlsZW5hbWU+Y3J0MC5vPC9maWxlbmFtZT4gYW5kIG90aGVyIGZ1bmN0aW9ucyB0aGF0IGFyZSBubyBsb25nZXIgcGFydCBvZiA8ZmlsZW5hbWU+bmV3bGliPC9maWxlbmFtZT4gaXRzZWxmLiBJZiB5b3UgYXJlIHVzaW5nIDxmaWxlbmFtZT5UQ0xJQkMgPSAibmV3bGliIjwvZmlsZW5hbWU+IHRoaXMgbm93IG1lYW5zIHRoYXQgeW91IG11c3QgbGluayBhcHBsaWNhdGlvbnMgd2l0aCBib3RoIDxmaWxlbmFtZT5uZXdsaWI8L2ZpbGVuYW1lPiBhbmQgPGZpbGVuYW1lPmxpYmdsb3NzPC9maWxlbmFtZT4sIHdoZXJlYXMgYmVmb3JlIDxmaWxlbmFtZT5uZXdsaWI8L2ZpbGVuYW1lPiB3b3VsZCBydW4gaW4gbWFueSBjb25maWd1cmF0aW9ucyBieSBpdHNlbGYuPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorICAgIDwvc2VjdGlvbj4KKworPC9zZWN0aW9uPgorCisKIDwvY2hhcHRlcj4KIDwhLS0KIHZpbTogZXhwYW5kdGFiIHR3PTgwIHRzPTQKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1mZWF0dXJlcy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtZmVhdHVyZXMueG1sCmluZGV4IDQ0YmE2N2MuLjI5NGIyOTcgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1mZWF0dXJlcy54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLWZlYXR1cmVzLnhtbApAQCAtMjEwLDYgKzIxMCwxMiBAQAogICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+dXNiaG9zdDo8L2VtcGhhc2lzPiBJbmNsdWRlIFVTQiBIb3N0CiAgICAgICAgICAgICAgICAgICAgIHN1cHBvcnQgKGFsbG93cyB0byBjb25uZWN0IGV4dGVybmFsIGtleWJvYXJkLCBtb3VzZSwKICAgICAgICAgICAgICAgICAgICAgc3RvcmFnZSwgbmV0d29yayBldGMpLjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+dXNybWVyZ2U6PC9lbXBoYXNpcz4gTWVyZ2VzIHRoZSAKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi9iaW48L2ZpbGVuYW1lPiwgPGZpbGVuYW1lPi9zYmluPC9maWxlbmFtZT4sIAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L2xpYjwvZmlsZW5hbWU+LCBhbmQgPGZpbGVuYW1lPi9saWI2NDwvZmlsZW5hbWU+ICAgICAgIAorICAgICAgICAgICAgICAgICAgICBkaXJlY3RvcmllcyBpbnRvIHRoZWlyIHJlc3BlY3RpdmUgY291bnRlcnBhcnRzIGluIHRoZSAKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi91c3I8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgdG8gcHJvdmlkZSBiZXR0ZXIgcGFja2FnZSAKKyAgICAgICAgICAgICAgICAgICBhbmQgYXBwbGljYXRpb24gY29tcGF0aWJpbGl0eS48L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPndheWxhbmQ6PC9lbXBoYXNpcz4gSW5jbHVkZSB0aGUKICAgICAgICAgICAgICAgICAgICAgV2F5bGFuZCBkaXNwbGF5IHNlcnZlciBwcm90b2NvbCBhbmQgdGhlIGxpYnJhcnkgdGhhdAogICAgICAgICAgICAgICAgICAgICBzdXBwb3J0cyBpdC48L3BhcmE+PC9saXN0aXRlbT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1tYW51YWwueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLW1hbnVhbC54bWwKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBiNDQyZjcwLi45YTkxNGYxCi0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1tYW51YWwueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1tYW51YWwueG1sCkBAIC0yMiwxMSArMjIsMTAgQEAKIAogICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICAgICA8YXV0aG9yPgotICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2NvdHQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgogICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT4mT1JHTkFNRTs8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICA8ZW1haWw+c3JpZmVuYmFya0BnbWFpbC5jb208L2VtYWlsPgorICAgICAgICAgICAgICAgIDxlbWFpbD4mT1JHRU1BSUw7PC9lbWFpbD4KICAgICAgICAgICAgIDwvYXV0aG9yPgogCiAgICAgICAgIDwvYXV0aG9yZ3JvdXA+CkBAIC0zNCwyMiArMzMsMTcgQEAKICAgICAgICAgPHJldmhpc3Rvcnk+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj40LjArZ2l0PC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+MjQgTm92ZW1iZXIgMjAxMDwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMC45IFJlbGVhc2U8L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5Ob3ZlbWJlciAyMDEwPC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+VGhlIGluaXRpYWwgZG9jdW1lbnQgcmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAwLjkgUmVsZWFzZTwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuMDwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPjYgQXByaWwgMjAxMTwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDExPC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+Ci0gICAgICAgICAgICAgICAgPHJldm51bWJlcj4xLjAuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPjIzIE1heSAyMDExPC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAxLjAuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgotICAgICAgICAgICAgPC9yZXZpc2lvbj4KLSAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjEuMTwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPjYgT2N0b2JlciAyMDExPC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxMTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgpAQCAtNzMsMTEgKzY3LDYgQEAKICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS41IFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgotICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS41LjE8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT5KYW51YXJ5IDIwMTQ8L2RhdGU+Ci0gICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuNS4xIFJlbGVhc2UuPC9yZXZyZW1hcms+Ci0gICAgICAgICAgICA8L3JldmlzaW9uPgotICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS42PC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxNDwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS42IFJlbGVhc2UuPC9yZXZyZW1hcms+CkBAIC0xMzQsOSArMTIzLDE0IEBACiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4wPC9yZXZudW1iZXI+Ci0gICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8ZGF0ZT5PY3RvYmVyIDIwMTk8L2RhdGU+CiAgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KKyAgICAgICAgICAgIDxyZXZpc2lvbj4KKyAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMTwvcmV2bnVtYmVyPgorICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5SZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDMuMSBSZWxlYXNlLjwvcmV2cmVtYXJrPgorICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgPC9yZXZoaXN0b3J5PgogCiAgICAgPGNvcHlyaWdodD4KQEAgLTE1OCw3ICsxNTIsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0LgogICAgICAgICAgICAgICAgICAgICAgICBUbyBiZSBzdXJlIHlvdSBoYXZlIHRoZSBsYXRlc3QgdmVyc2lvbiBvZiB0aGUgbWFudWFsCiAgICAgICAgICAgICAgICAgICAgICAgIGZvciB0aGlzIHJlbGVhc2UsIGdvIHRvIHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgZnJvbSB0aGF0IHNpdGUuCiAgICAgICAgICAgICAgICAgICAgICAgIE1hbnVhbHMgZnJvbSB0aGUgc2l0ZSBhcmUgbW9yZSB1cC10by1kYXRlIHRoYW4gbWFudWFscwogICAgICAgICAgICAgICAgICAgICAgICBkZXJpdmVkIGZyb20gdGhlIFlvY3RvIFByb2plY3QgcmVsZWFzZWQgVEFSIGZpbGVzLgpAQCAtMTc1LDE4ICsxNjksMjAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgcGFnZS4KICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IG5lZWQgYSB2ZXJzaW9uIG9mIHRoaXMgbWFudWFsIGZvciBhIGRpZmZlcmVudAogICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IHJlbGVhc2UsIHZpc2l0IHRoZQotICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fSE9NRV9VUkw7L2RvY3VtZW50YXRpb24nPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KKyAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfVVJMOyc+WW9jdG8gUHJvamVjdCBkb2N1bWVudGF0aW9uIHBhZ2U8L3VsaW5rPgogICAgICAgICAgICAgICAgICAgICAgICBhbmQgc2VsZWN0IHRoZSBtYW51YWwgc2V0IGJ5IHVzaW5nIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAiQUNUSVZFIFJFTEVBU0VTIERPQ1VNRU5UQVRJT04iIG9yICJET0NVTUVOVFMgQVJDSElWRSIKICAgICAgICAgICAgICAgICAgICAgICAgcHVsbC1kb3duIG1lbnVzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gcmVwb3J0IGFueSBpbmFjY3VyYWNpZXMgb3IgcHJvYmxlbXMgd2l0aCB0aGlzCi0gICAgICAgICAgICAgICAgICAgICAgIG1hbnVhbCwgc2VuZCBhbiBlbWFpbCB0byB0aGUgWW9jdG8gUHJvamVjdAotICAgICAgICAgICAgICAgICAgICAgICBkaXNjdXNzaW9uIGdyb3VwIGF0Ci0gICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT55b2N0b0B5b2N0b3Byb2plY3QuY29tPC9maWxlbmFtZT4gb3IgbG9nIGludG8KLSAgICAgICAgICAgICAgICAgICAgICAgdGhlIGZyZWVub2RlIDxmaWxlbmFtZT4jeW9jdG88L2ZpbGVuYW1lPiBjaGFubmVsLgotICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgKG9yIGFueSBvdGhlciBZb2N0byBQcm9qZWN0KSBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBtYWlsaW5nIGxpc3QgYXQKKyAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZzwvZmlsZW5hbWU+IG9yCisgICAgICAgICAgICAgICAgICAgICAgIGxvZyBpbnRvIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KKyAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgIDwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgPC9ub3RlPgogICAgIDwvbGVnYWxub3RpY2U+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3RydWN0dXJlLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zdHJ1Y3R1cmUueG1sCmluZGV4IDhlMGM5ZjUuLjI3ZjE3ZGQgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zdHJ1Y3R1cmUueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zdHJ1Y3R1cmUueG1sCkBAIC04LDExICs4LDExIEBACiAKIDxwYXJhPgogICAgIFRoZSA8bGluayBsaW5rZW5kPSdzb3VyY2UtZGlyZWN0b3J5Jz5Tb3VyY2UgRGlyZWN0b3J5PC9saW5rPgotICAgIGNvbnNpc3RzIG9mIHNldmVyYWwgY29tcG9uZW50cy4KLSAgICBVbmRlcnN0YW5kaW5nIHRoZW0gYW5kIGtub3dpbmcgd2hlcmUgdGhleSBhcmUgbG9jYXRlZCBpcyBrZXkgdG8gdXNpbmcgdGhlCi0gICAgWW9jdG8gUHJvamVjdCB3ZWxsLgorICAgIGNvbnNpc3RzIG9mIG51bWVyb3VzIGZpbGVzLCBkaXJlY3RvcmllcyBhbmQgc3ViZGlyZWN0b3JpZXM7CisgICAgdW5kZXJzdGFuZGluZyB0aGVpciBsb2NhdGlvbnMgYW5kIGNvbnRlbnRzIGlzIGtleSB0byB1c2luZyB0aGUKKyAgICBZb2N0byBQcm9qZWN0IGVmZmVjdGl2ZWx5LgogICAgIFRoaXMgY2hhcHRlciBkZXNjcmliZXMgdGhlIFNvdXJjZSBEaXJlY3RvcnkgYW5kIGdpdmVzIGluZm9ybWF0aW9uIGFib3V0Ci0gICAgdGhlIHZhcmlvdXMgZmlsZXMgYW5kIGRpcmVjdG9yaWVzLgorICAgIHRob3NlIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy4KIDwvcGFyYT4KIAogPHBhcmE+CkBAIC0yMiwxMiArMjIsMTIgQEAKICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KIDwvcGFyYT4KIAotPG5vdGU+Ci0gICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydCBmaWxlIG9yIGRpcmVjdG9yeSBuYW1lcyB0aGF0Ci0gICAgY29udGFpbiBzcGFjZXMuCi0gICAgQmUgc3VyZSB0aGF0IHRoZSBTb3VyY2UgRGlyZWN0b3J5IHlvdSB1c2UgZG9lcyBub3QgY29udGFpbiB0aGVzZSB0eXBlcwotICAgIG9mIG5hbWVzLgotPC9ub3RlPgorICAgIDxub3RlPgorICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBkb2VzIG5vdCBzdXBwb3J0IGZpbGUgb3IgZGlyZWN0b3J5IG5hbWVzIHRoYXQKKyAgICAgICAgY29udGFpbiBzcGFjZXMuCisgICAgICAgIEJlIHN1cmUgdGhhdCB0aGUgU291cmNlIERpcmVjdG9yeSB5b3UgdXNlIGRvZXMgbm90IGNvbnRhaW4gdGhlc2UgdHlwZXMKKyAgICAgICAgb2YgbmFtZXMuCisgICAgPC9ub3RlPgogCiA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLWNvcmUnPgogICAgIDx0aXRsZT5Ub3AtTGV2ZWwgQ29yZSBDb21wb25lbnRzPC90aXRsZT4KQEAgLTQ4LDE4ICs0OCwxOCBAQAogICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nbWV0YWRhdGEnPk1ldGFkYXRhPC9saW5rPgogICAgICAgICAgICAgaW50ZXJwcmV0ZXIsIHJlYWRzIHRoZSBZb2N0byBQcm9qZWN0IE1ldGFkYXRhIGFuZCBydW5zIHRoZSB0YXNrcwogICAgICAgICAgICAgZGVmaW5lZCBieSB0aGF0IGRhdGEuCi0gICAgICAgICAgICBGYWlsdXJlcyBhcmUgdXN1YWxseSBmcm9tIHRoZSBNZXRhZGF0YSBhbmQgbm90IGZyb20gQml0QmFrZSBpdHNlbGYuCi0gICAgICAgICAgICBDb25zZXF1ZW50bHksIG1vc3QgdXNlcnMgZG8gbm90IG5lZWQgdG8gd29ycnkgYWJvdXQgQml0QmFrZS4KKyAgICAgICAgICAgIEZhaWx1cmVzIGFyZSB1c3VhbGx5IGNhdXNlZCBieSBlcnJvcnMgaW4geW91ciBNZXRhZGF0YSBhbmQgbm90IGZyb20gQml0QmFrZSBpdHNlbGY7CisgICAgICAgICAgICBjb25zZXF1ZW50bHksIG1vc3QgdXNlcnMgZG8gbm90IG5lZWQgdG8gd29ycnkgYWJvdXQgQml0QmFrZS4KICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgV2hlbiB5b3UgcnVuIHRoZSA8ZmlsZW5hbWU+Yml0YmFrZTwvZmlsZW5hbWU+IGNvbW1hbmQsIHRoZQotICAgICAgICAgICAgbWFpbiBCaXRCYWtlIGV4ZWN1dGFibGUsIHdoaWNoIHJlc2lkZXMgaW4gdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS9iaW4vPC9maWxlbmFtZT4gZGlyZWN0b3J5LCBzdGFydHMuCisgICAgICAgICAgICBtYWluIEJpdEJha2UgZXhlY3V0YWJsZSAod2hpY2ggcmVzaWRlcyBpbiB0aGUKKyAgICAgICAgICAgIDxmaWxlbmFtZT5iaXRiYWtlL2Jpbi88L2ZpbGVuYW1lPiBkaXJlY3RvcnkpIHN0YXJ0cy4KICAgICAgICAgICAgIFNvdXJjaW5nIHRoZSBlbnZpcm9ubWVudCBzZXR1cCBzY3JpcHQgKGkuZS4KICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9InN0cnVjdHVyZS1jb3JlLXNjcmlwdCI+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+KQotICAgICAgICAgICAgcGxhY2VzIHRoZSA8ZmlsZW5hbWU+c2NyaXB0czwvZmlsZW5hbWU+IGFuZAotICAgICAgICAgICAgPGZpbGVuYW1lPmJpdGJha2UvYmluPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMgKGluIHRoYXQgb3JkZXIpIGludG8KKyAgICAgICAgICAgIHBsYWNlcyB0aGUgPGZpbGVuYW1lPnNjcmlwdHMvPC9maWxlbmFtZT4gYW5kCisgICAgICAgICAgICA8ZmlsZW5hbWU+Yml0YmFrZS9iaW4vPC9maWxlbmFtZT4gZGlyZWN0b3JpZXMgKGluIHRoYXQgb3JkZXIpIGludG8KICAgICAgICAgICAgIHRoZSBzaGVsbCdzIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4gZW52aXJvbm1lbnQgdmFyaWFibGUuCiAgICAgICAgIDwvcGFyYT4KIApAQCAtOTEsNyArOTEsNyBAQAogICAgICAgICAgICAgYnkgcHJvdmlkaW5nIGEgZGlyZWN0b3J5IG5hbWUgd2hlbiB5b3UgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+CiAgICAgICAgICAgICB0aGUgc2V0dXAgc2NyaXB0LgogICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHNlcGFyYXRpbmcgb3V0cHV0IGZyb20geW91ciBsb2NhbAotICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSBmaWxlcywgc2VlIHRoZQorICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeSBmaWxlcyAoY29tbW9ubHkgZGVzY3JpYmVkIGFzIGFuICJvdXQgb2YgdHJlZSIgYnVpbGQpLCBzZWUgdGhlCiAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4iCiAgICAgICAgICAgICBzZWN0aW9uLgogICAgICAgICA8L3BhcmE+CkBAIC0xMDQsOCArMTA0LDggQEAKICAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGhvbGRzIHRoZSBzb3VyY2UgZm9yIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24KICAgICAgICAgICAgIGFzIHdlbGwgYXMgdGVtcGxhdGVzIGFuZCB0b29scyB0aGF0IGFsbG93IHlvdSB0byBnZW5lcmF0ZSBQREYgYW5kIEhUTUwKICAgICAgICAgICAgIHZlcnNpb25zIG9mIHRoZSBtYW51YWxzLgotICAgICAgICAgICAgRWFjaCBtYW51YWwgaXMgY29udGFpbmVkIGluIGEgc3ViLWZvbGRlci4KLSAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZmlsZXMgZm9yIHRoaXMgbWFudWFsIHJlc2lkZSBpbgorICAgICAgICAgICAgRWFjaCBtYW51YWwgaXMgY29udGFpbmVkIGluIGl0cyBvd24gc3ViLWZvbGRlcjsKKyAgICAgICAgICAgIGZvciBleGFtcGxlLCB0aGUgZmlsZXMgZm9yIHRoaXMgcmVmZXJlbmNlIG1hbnVhbCByZXNpZGUgaW4KICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+cmVmLW1hbnVhbC88L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CkBAIC0xMTQsOSArMTE0LDkgQEAKICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5tZXRhLzwvZmlsZW5hbWU+PC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBPcGVuRW1iZWRkZWQtQ29yZSBtZXRhZGF0YS4KKyAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHRoZSBtaW5pbWFsLCB1bmRlcmx5aW5nIE9wZW5FbWJlZGRlZC1Db3JlIG1ldGFkYXRhLgogICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSBob2xkcyByZWNpcGVzLCBjb21tb24gY2xhc3NlcywgYW5kIG1hY2hpbmUKLSAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gZm9yIGVtdWxhdGVkIHRhcmdldHMgKDxmaWxlbmFtZT5xZW11eDg2PC9maWxlbmFtZT4sCisgICAgICAgICAgICBjb25maWd1cmF0aW9uIGZvciBzdHJpY3RseSBlbXVsYXRlZCB0YXJnZXRzICg8ZmlsZW5hbWU+cWVtdXg4NjwvZmlsZW5hbWU+LAogICAgICAgICAgICAgPGZpbGVuYW1lPnFlbXVhcm08L2ZpbGVuYW1lPiwgYW5kIHNvIGZvcnRoLikKICAgICAgICAgPC9wYXJhPgogICAgIDwvc2VjdGlvbj4KQEAgLTEyNSw4ICsxMjUsOCBAQAogICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPm1ldGEtcG9reS88L2ZpbGVuYW1lPjwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+Ci0gICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyB0aGUgY29uZmlndXJhdGlvbiBmb3IgdGhlIFBva3kKLSAgICAgICAgICAgIHJlZmVyZW5jZSBkaXN0cmlidXRpb24uCisgICAgICAgICAgICBEZXNpZ25lZCBhYm92ZSB0aGUgPGZpbGVuYW1lPm1ldGEvPC9maWxlbmFtZT4gY29udGVudCwgdGhpcyBkaXJlY3RvcnkKKyAgICAgICAgICAgIGFkZHMganVzdCBlbm91Z2ggbWV0YWRhdGEgdG8gZGVmaW5lIHRoZSBQb2t5IHJlZmVyZW5jZSBkaXN0cmlidXRpb24uCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKQEAgLTE0OCw5ICsxNDgsNiBAQAogICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgYWRkcyBhZGRpdGlvbmFsIHJlY2lwZXMgYW5kIGFwcGVuZCBmaWxlcwogICAgICAgICAgICAgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIHNlbGZ0ZXN0cyB0byB2ZXJpZnkgdGhlIGJlaGF2aW9yCiAgICAgICAgICAgICBvZiB0aGUgYnVpbGQgc3lzdGVtLgotICAgICAgICA8L3BhcmE+Ci0KLSAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBZb3UgZG8gbm90IGhhdmUgdG8gYWRkIHRoaXMgbGF5ZXIgdG8geW91cgogICAgICAgICAgICAgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmY8L2ZpbGVuYW1lPiBmaWxlIHVubGVzcyB5b3Ugd2FudCB0byBydW4gdGhlCiAgICAgICAgICAgICBzZWxmdGVzdHMuCkBAIC0xNzIsNyArMTY5LDcgQEAKICAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIHZhcmlvdXMgaW50ZWdyYXRpb24gc2NyaXB0cyB0aGF0IGltcGxlbWVudAogICAgICAgICAgICAgZXh0cmEgZnVuY3Rpb25hbGl0eSBpbiB0aGUgWW9jdG8gUHJvamVjdCBlbnZpcm9ubWVudCAoZS5nLiBRRU1VIHNjcmlwdHMpLgogICAgICAgICAgICAgVGhlIDxsaW5rIGxpbmtlbmQ9InN0cnVjdHVyZS1jb3JlLXNjcmlwdCI+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+Ci0gICAgICAgICAgICBzY3JpcHQgYXBwZW5kcyB0aGlzIGRpcmVjdG9yeSB0byB0aGUgc2hlbGwncworICAgICAgICAgICAgc2NyaXB0IHByZXBlbmRzIHRoaXMgZGlyZWN0b3J5IHRvIHRoZSBzaGVsbCdzCiAgICAgICAgICAgICA8ZmlsZW5hbWU+UEFUSDwvZmlsZW5hbWU+IGVudmlyb25tZW50IHZhcmlhYmxlLgogICAgICAgICA8L3BhcmE+CiAKQEAgLTIwMiw3ICsxOTksOCBAQAogICAgICAgICAgICAgdXAsIGEKICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgogICAgICAgICAgICAgaXMgY3JlYXRlZCwgeW91ciB3b3JraW5nIGRpcmVjdG9yeSBiZWNvbWVzIHRoZSBCdWlsZCBEaXJlY3RvcnksCi0gICAgICAgICAgICBhbmQgeW91IGFyZSBwcmVzZW50ZWQgd2l0aCBhIGxpc3Qgb2YgY29tbW9uIEJpdEJha2UgdGFyZ2V0cy4KKyAgICAgICAgICAgIGFuZCB5b3UgYXJlIHByZXNlbnRlZCB3aXRoIHNvbWUgc2ltcGxlIHN1Z2dlc3Rpb25zIGFzIHRvIHdoYXQgdG8gZG8KKyAgICAgICAgICAgIG5leHQsIGluY2x1ZGluZyBhIGxpc3Qgb2Ygc29tZSBwb3NzaWJsZSB0YXJnZXRzIHRvIGJ1aWxkLgogICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHNvdXJjZSBvZS1pbml0LWJ1aWxkLWVudgpAQCAtMjE3LDE0ICsyMTUsMTQgQEAKICAgICAgICAgIG1ldGEtdG9vbGNoYWluCiAgICAgICAgICBtZXRhLWlkZS1zdXBwb3J0CiAKLSAgICAgWW91IGNhbiBhbHNvIHJ1biBnZW5lcmF0ZWQgcWVtdSBpbWFnZXMgd2l0aCBhIGNvbW1hbmQgbGlrZSAncnVucWVtdSBxZW11eDg2JworICAgICBZb3UgY2FuIGFsc28gcnVuIGdlbmVyYXRlZCBxZW11IGltYWdlcyB3aXRoIGEgY29tbWFuZCBsaWtlICdydW5xZW11IHFlbXV4ODYtNjQnCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+Ci0gICAgICAgICAgICBUaGUgc2NyaXB0IGdldHMgaXRzIGRlZmF1bHQgbGlzdCBvZiBjb21tb24gdGFyZ2V0cyBmcm9tIHRoZQotICAgICAgICAgICAgPGZpbGVuYW1lPmNvbmYtbm90ZXMudHh0PC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaXMgZm91bmQgaW4gdGhlCisgICAgICAgICAgICBUaGUgZGVmYXVsdCBvdXRwdXQgb2YgdGhlIDxmaWxlbmFtZT5vZS1pbml0LWJ1aWxkLWVudjwvZmlsZW5hbWU+IHNjcmlwdAorICAgICAgICAgICAgaXMgZnJvbSB0aGUgPGZpbGVuYW1lPmNvbmYtbm90ZXMudHh0PC9maWxlbmFtZT4gZmlsZSwgd2hpY2ggaXMgZm91bmQgaW4gdGhlCiAgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5PC9maWxlbmFtZT4gZGlyZWN0b3J5IHdpdGhpbiB0aGUKICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgotICAgICAgICAgICAgU2hvdWxkIHlvdSBoYXZlIGN1c3RvbSBkaXN0cmlidXRpb25zLCBpdCBpcyB2ZXJ5IGVhc3kgdG8gbW9kaWZ5Ci0gICAgICAgICAgICB0aGlzIGNvbmZpZ3VyYXRpb24gZmlsZSB0byBpbmNsdWRlIHlvdXIgdGFyZ2V0cyBmb3IgeW91cgorICAgICAgICAgICAgSWYgeW91IGRlc2lnbiBhIGN1c3RvbSBkaXN0cmlidXRpb24sIHlvdSBjYW4gaW5jbHVkZSB5b3VyIG93biB2ZXJzaW9uCisgICAgICAgICAgICBvZiB0aGlzIGNvbmZpZ3VyYXRpb24gZmlsZSB0byBtZW50aW9uIHRoZSB0YXJnZXRzIGRlZmluZWQgYnkgeW91cgogICAgICAgICAgICAgZGlzdHJpYnV0aW9uLgogICAgICAgICAgICAgU2VlIHRoZQogICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I2NyZWF0aW5nLWEtY3VzdG9tLXRlbXBsYXRlLWNvbmZpZ3VyYXRpb24tZGlyZWN0b3J5Jz5DcmVhdGluZyBhIEN1c3RvbSBUZW1wbGF0ZSBDb25maWd1cmF0aW9uIERpcmVjdG9yeTwvdWxpbms+IgpAQCAtMjM0LDIwICsyMzIsMjAgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEJ5IGRlZmF1bHQsIHJ1bm5pbmcgdGhpcyBzY3JpcHQgd2l0aG91dCBhIEJ1aWxkIERpcmVjdG9yeQotICAgICAgICAgICAgYXJndW1lbnQgY3JlYXRlcyB0aGUgPGZpbGVuYW1lPmJ1aWxkPC9maWxlbmFtZT4gZGlyZWN0b3J5CisgICAgICAgICAgICBhcmd1bWVudCBjcmVhdGVzIHRoZSA8ZmlsZW5hbWU+YnVpbGQvPC9maWxlbmFtZT4gZGlyZWN0b3J5CiAgICAgICAgICAgICBpbiB5b3VyIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuCiAgICAgICAgICAgICBJZiB5b3UgcHJvdmlkZSBhIEJ1aWxkIERpcmVjdG9yeSBhcmd1bWVudCB3aGVuIHlvdQogICAgICAgICAgICAgPGZpbGVuYW1lPnNvdXJjZTwvZmlsZW5hbWU+IHRoZSBzY3JpcHQsIHlvdSBkaXJlY3QgdGhlIE9wZW5FbWJlZGRlZAogICAgICAgICAgICAgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZSBhIEJ1aWxkIERpcmVjdG9yeSBvZiB5b3VyIGNob2ljZS4KICAgICAgICAgICAgIEZvciBleGFtcGxlLCB0aGUgZm9sbG93aW5nIGNvbW1hbmQgY3JlYXRlcyBhIEJ1aWxkIERpcmVjdG9yeSBuYW1lZAotICAgICAgICAgICAgPGZpbGVuYW1lPm15YnVpbGRzPC9maWxlbmFtZT4gdGhhdCBpcyBvdXRzaWRlIG9mIHRoZQorICAgICAgICAgICAgPGZpbGVuYW1lPm15YnVpbGRzLzwvZmlsZW5hbWU+IHRoYXQgaXMgb3V0c2lkZSBvZiB0aGUKICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+OgogICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHNvdXJjZSAmT0VfSU5JVF9GSUxFOyB+L215YnVpbGRzCiAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICBUaGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB1c2VzIHRoZSB0ZW1wbGF0ZSBjb25maWd1cmF0aW9uCiAgICAgICAgICAgICBmaWxlcywgd2hpY2ggYXJlIGZvdW5kIGJ5IGRlZmF1bHQgaW4gdGhlCi0gICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmY8L2ZpbGVuYW1lPiBkaXJlY3RvcnkgaW4gdGhlCisgICAgICAgICAgICA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmYvPC9maWxlbmFtZT4gZGlyZWN0b3J5IGluIHRoZQogICAgICAgICAgICAgU291cmNlIERpcmVjdG9yeS4KICAgICAgICAgICAgIFNlZSB0aGUKICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNjcmVhdGluZy1hLWN1c3RvbS10ZW1wbGF0ZS1jb25maWd1cmF0aW9uLWRpcmVjdG9yeSc+Q3JlYXRpbmcgYSBDdXN0b20gVGVtcGxhdGUgQ29uZmlndXJhdGlvbiBEaXJlY3Rvcnk8L3VsaW5rPiIKQEAgLTI4MCwyOCArMjc4LDI2IEBACiAgICAgPHBhcmE+CiAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNyZWF0ZXMgdGhlCiAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J2J1aWxkLWRpcmVjdG9yeSc+QnVpbGQgRGlyZWN0b3J5PC9saW5rPgotICAgICAgICB3aGVuIHlvdSBydW4gdGhlIGJ1aWxkIGVudmlyb25tZW50IHNldHVwIHNjcmlwdHMgKGkuZS4KLSAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4pLgotICAgIDwvcGFyYT4KLQotICAgIDxwYXJhPgorICAgICAgICB3aGVuIHlvdSBydW4gdGhlIGJ1aWxkIGVudmlyb25tZW50IHNldHVwIHNjcmlwdAorICAgICAgICA8bGluaworbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4uCiAgICAgICAgIElmIHlvdSBkbyBub3QgZ2l2ZSB0aGUgQnVpbGQgRGlyZWN0b3J5IGEgc3BlY2lmaWMgbmFtZSB3aGVuIHlvdSBydW4KLSAgICAgICAgYSBzZXR1cCBzY3JpcHQsIHRoZSBuYW1lIGRlZmF1bHRzIHRvIDxmaWxlbmFtZT5idWlsZDwvZmlsZW5hbWU+LgorICAgICAgICB0aGUgc2V0dXAgc2NyaXB0LCB0aGUgbmFtZSBkZWZhdWx0cyB0byA8ZmlsZW5hbWU+YnVpbGQvPC9maWxlbmFtZT4uCiAgICAgPC9wYXJhPgogCiAgICAgPHBhcmE+Ci0gICAgICAgIFRoZQotICAgICAgICA8bGluayBsaW5rZW5kPSd2YXItVE9QRElSJz48ZmlsZW5hbWU+VE9QRElSPC9maWxlbmFtZT48L2xpbms+IHZhcmlhYmxlCi0gICAgICAgIHBvaW50cyB0byB0aGUgQnVpbGQgRGlyZWN0b3J5LgorICAgICAgICBGb3Igc3Vic2VxdWVudCBwYXJzaW5nIGFuZCBwcm9jZXNzaW5nLCB0aGUgbmFtZSBvZiB0aGUgQnVpbGQKKyAgICAgICAgZGlyZWN0b3J5IGlzIGF2YWlsYWJsZSB2aWEgdGhlCisgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1UT1BESVInPjxmaWxlbmFtZT5UT1BESVI8L2ZpbGVuYW1lPjwvbGluaz4gdmFyaWFibGUuCiAgICAgPC9wYXJhPgogCiAgICAgPHNlY3Rpb24gaWQ9J3N0cnVjdHVyZS1idWlsZC1idWlsZGhpc3RvcnknPgotICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmJ1aWxkL2J1aWxkaGlzdG9yeTwvZmlsZW5hbWU+PC90aXRsZT4KKyAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5idWlsZC9idWlsZGhpc3RvcnkvPC9maWxlbmFtZT48L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgVGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gY3JlYXRlcyB0aGlzIGRpcmVjdG9yeSB3aGVuIHlvdQotICAgICAgICAgICAgZW5hYmxlIHRoZSBidWlsZCBoaXN0b3J5IGZlYXR1cmUuCi0gICAgICAgICAgICBUaGUgZGlyZWN0b3J5IHRyYWNrcyBidWlsZCBpbmZvcm1hdGlvbiBpbnRvIGltYWdlLCBwYWNrYWdlcywgYW5kCisgICAgICAgICAgICBlbmFibGUgYnVpbGQgaGlzdG9yeSB2aWEgdGhlIDxmaWxlbmFtZT5idWlsZGhpc3Rvcnk8L2ZpbGVuYW1lPiBjbGFzcyBmaWxlLgorICAgICAgICAgICAgVGhlIGRpcmVjdG9yeSBvcmdhbml6ZXMgYnVpbGQgaW5mb3JtYXRpb24gaW50byBpbWFnZSwgcGFja2FnZXMsIGFuZAogICAgICAgICAgICAgU0RLIHN1YmRpcmVjdG9yaWVzLgogICAgICAgICAgICAgRm9yIGluZm9ybWF0aW9uIG9uIHRoZSBidWlsZCBoaXN0b3J5IGZlYXR1cmUsIHNlZSB0aGUKICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19ERVZfVVJMOyNtYWludGFpbmluZy1idWlsZC1vdXRwdXQtcXVhbGl0eSc+TWFpbnRhaW5pbmcgQnVpbGQgT3V0cHV0IFF1YWxpdHk8L3VsaW5rPiIKQEAgLTMyMCwxNCArMzE2LDE0IEBACiAgICAgICAgICAgICBBbnkgdmFyaWFibGUgc2V0IGhlcmUgb3ZlcnJpZGVzIGFueSB2YXJpYWJsZSBzZXQgZWxzZXdoZXJlIHdpdGhpbgogICAgICAgICAgICAgdGhlIGVudmlyb25tZW50IHVubGVzcyB0aGF0IHZhcmlhYmxlIGlzIGhhcmQtY29kZWQgd2l0aGluIGEgZmlsZQogICAgICAgICAgICAgKGUuZy4gYnkgdXNpbmcgJz0nIGluc3RlYWQgb2YgJz89JykuCi0gICAgICAgICAgICBTb21lIHZhcmlhYmxlcyBhcmUgaGFyZC1jb2RlZCBmb3IgdmFyaW91cyByZWFzb25zIGJ1dCB0aGVzZQorICAgICAgICAgICAgU29tZSB2YXJpYWJsZXMgYXJlIGhhcmQtY29kZWQgZm9yIHZhcmlvdXMgcmVhc29ucyBidXQgc3VjaAogICAgICAgICAgICAgdmFyaWFibGVzIGFyZSByZWxhdGl2ZWx5IHJhcmUuCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIEVkaXQgdGhpcyBmaWxlIHRvIHNldCB0aGUKLSAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+TUFDSElORTwvbGluaz48L2ZpbGVuYW1lPgotICAgICAgICAgICAgZm9yIHdoaWNoIHlvdSB3YW50IHRvIGJ1aWxkLCB3aGljaCBwYWNrYWdlIHR5cGVzIHlvdSB3aXNoIHRvIHVzZQorICAgICAgICAgICAgQXQgYSBtaW5pbXVtLCB5b3Ugd291bGQgbm9ybWFsbHkgZWRpdCB0aGlzIGZpbGUgdG8gc2VsZWN0IHRoZSB0YXJnZXQKKyAgICAgICAgICAgIDxmaWxlbmFtZT48bGluayBsaW5rZW5kPSd2YXItTUFDSElORSc+TUFDSElORTwvbGluaz48L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgIHdoaWNoIHBhY2thZ2UgdHlwZXMgeW91IHdpc2ggdG8gdXNlCiAgICAgICAgICAgICAoPGxpbmsgbGlua2VuZD0ndmFyLVBBQ0tBR0VfQ0xBU1NFUyc+PGZpbGVuYW1lPlBBQ0tBR0VfQ0xBU1NFUzwvZmlsZW5hbWU+PC9saW5rPiksCiAgICAgICAgICAgICBhbmQgdGhlIGxvY2F0aW9uIGZyb20gd2hpY2ggeW91IHdhbnQgdG8gYWNjZXNzIGRvd25sb2FkZWQgZmlsZXMKICAgICAgICAgICAgICg8ZmlsZW5hbWU+PGxpbmsgbGlua2VuZD0ndmFyLURMX0RJUic+RExfRElSPC9saW5rPjwvZmlsZW5hbWU+KS4KQEAgLTMzOCwxNiArMzM0LDE2IEBACiAgICAgICAgICAgICBzdGFydCB0aGUgYnVpbGQsIHRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNyZWF0ZXMgaXQgZnJvbQogICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gd2hlbgogICAgICAgICAgICAgeW91IDxmaWxlbmFtZT5zb3VyY2U8L2ZpbGVuYW1lPiB0aGUgdG9wLWxldmVsIGJ1aWxkIGVudmlyb25tZW50Ci0gICAgICAgICAgICBzZXR1cCBzY3JpcHQgKGkuZS4KLSAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3N0cnVjdHVyZS1jb3JlLXNjcmlwdCc+PGZpbGVuYW1lPiZPRV9JTklUX0ZJTEU7PC9maWxlbmFtZT48L2xpbms+KS4KKyAgICAgICAgICAgIHNldHVwIHNjcmlwdAorICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0nc3RydWN0dXJlLWNvcmUtc2NyaXB0Jz48ZmlsZW5hbWU+Jk9FX0lOSVRfRklMRTs8L2ZpbGVuYW1lPjwvbGluaz4uCiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZSBzb3VyY2UgPGZpbGVuYW1lPmxvY2FsLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gZmlsZSB1c2VkCiAgICAgICAgICAgICBkZXBlbmRzIG9uIHRoZSA8ZmlsZW5hbWU+JFRFTVBMQVRFQ09ORjwvZmlsZW5hbWU+IHNjcmlwdCB2YXJpYWJsZSwKLSAgICAgICAgICAgIHdoaWNoIGRlZmF1bHRzIHRvIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZjwvZmlsZW5hbWU+CisgICAgICAgICAgICB3aGljaCBkZWZhdWx0cyB0byA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmYvPC9maWxlbmFtZT4KICAgICAgICAgICAgIHdoZW4geW91IGFyZSBidWlsZGluZyBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IGRldmVsb3BtZW50Ci0gICAgICAgICAgICBlbnZpcm9ubWVudCBhbmQgZGVmYXVsdHMgdG8gPGZpbGVuYW1lPm1ldGEvY29uZjwvZmlsZW5hbWU+IHdoZW4KKyAgICAgICAgICAgIGVudmlyb25tZW50LCBhbmQgdG8gPGZpbGVuYW1lPm1ldGEvY29uZi88L2ZpbGVuYW1lPiB3aGVuCiAgICAgICAgICAgICB5b3UgYXJlIGJ1aWxkaW5nIGZyb20gdGhlIE9wZW5FbWJlZGRlZC1Db3JlIGVudmlyb25tZW50LgogICAgICAgICAgICAgQmVjYXVzZSB0aGUgc2NyaXB0IHZhcmlhYmxlIHBvaW50cyB0byB0aGUgc291cmNlIG9mIHRoZQogICAgICAgICAgICAgPGZpbGVuYW1lPmxvY2FsLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gZmlsZSwgdGhpcyBpbXBsaWVzIHRoYXQKQEAgLTM5NSwxMSArMzkxLDEyIEBACiAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoZSBzb3VyY2UgPGZpbGVuYW1lPmJibGF5ZXJzLmNvbmYuc2FtcGxlPC9maWxlbmFtZT4gZmlsZSB1c2VkCisgICAgICAgICAgICBBcyB3aXRoIHRoZSA8ZmlsZW5hbWU+bG9jYWwuY29uZjwvZmlsZW5hbWU+IGZpbGUsCisgICAgICAgICAgICB0aGUgc291cmNlIDxmaWxlbmFtZT5iYmxheWVycy5jb25mLnNhbXBsZTwvZmlsZW5hbWU+IGZpbGUgdXNlZAogICAgICAgICAgICAgZGVwZW5kcyBvbiB0aGUgPGZpbGVuYW1lPiRURU1QTEFURUNPTkY8L2ZpbGVuYW1lPiBzY3JpcHQgdmFyaWFibGUsCi0gICAgICAgICAgICB3aGljaCBkZWZhdWx0cyB0byA8ZmlsZW5hbWU+bWV0YS1wb2t5L2NvbmY8L2ZpbGVuYW1lPgorICAgICAgICAgICAgd2hpY2ggZGVmYXVsdHMgdG8gPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mLzwvZmlsZW5hbWU+CiAgICAgICAgICAgICB3aGVuIHlvdSBhcmUgYnVpbGRpbmcgZnJvbSB0aGUgWW9jdG8gUHJvamVjdCBkZXZlbG9wbWVudAotICAgICAgICAgICAgZW52aXJvbm1lbnQgYW5kIGRlZmF1bHRzIHRvIDxmaWxlbmFtZT5tZXRhL2NvbmY8L2ZpbGVuYW1lPiB3aGVuCisgICAgICAgICAgICBlbnZpcm9ubWVudCwgYW5kIHRvIDxmaWxlbmFtZT5tZXRhL2NvbmYvPC9maWxlbmFtZT4gd2hlbgogICAgICAgICAgICAgeW91IGFyZSBidWlsZGluZyBmcm9tIHRoZSBPcGVuRW1iZWRkZWQtQ29yZSBlbnZpcm9ubWVudC4KICAgICAgICAgICAgIEJlY2F1c2UgdGhlIHNjcmlwdCB2YXJpYWJsZSBwb2ludHMgdG8gdGhlIHNvdXJjZSBvZiB0aGUKICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mLnNhbXBsZTwvZmlsZW5hbWU+IGZpbGUsIHRoaXMgaW1wbGllcyB0aGF0CkBAIC00MTgsMTMgKzQxNSwxMyBAQAogICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3NvdXJjZS1kaXJlY3RvcnknPlNvdXJjZSBEaXJlY3Rvcnk8L2xpbms+LgogICAgICAgICAgICAgICAgIFlvdSBjYW4gZmluZCB0aGUgWW9jdG8gUHJvamVjdCB2ZXJzaW9uIG9mIHRoZQogICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5iYmxheWVycy5jb25mLnNhbXBsZTwvZmlsZW5hbWU+IGZpbGUgaW4gdGhlCi0gICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEtcG9reS9jb25mPC9maWxlbmFtZT4gZGlyZWN0b3J5LgorICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5tZXRhLXBva3kvY29uZi88L2ZpbGVuYW1lPiBkaXJlY3RvcnkuCiAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKICAgICA8c2VjdGlvbiBpZD0nc3RydWN0dXJlLWJ1aWxkLWNvbmYtc2FuaXR5X2luZm8nPgotICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmJ1aWxkL2NvbmYvc2FuaXR5X2luZm88L2ZpbGVuYW1lPjwvdGl0bGU+CisgICAgICAgIDx0aXRsZT48ZmlsZW5hbWU+YnVpbGQvY2FjaGUvc2FuaXR5X2luZm88L2ZpbGVuYW1lPjwvdGl0bGU+CiAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGlzIGZpbGUgaW5kaWNhdGVzIHRoZSBzdGF0ZSBvZiB0aGUgc2FuaXR5IGNoZWNrcyBhbmQgaXMgY3JlYXRlZApAQCAtNTcyLDggKzU2OSwxMSBAQAogICAgICAgICA8dGl0bGU+PGZpbGVuYW1lPmJ1aWxkL3RtcC9kZXBsb3kvaW1hZ2VzLzwvZmlsZW5hbWU+PC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KLSAgICAgICAgICAgIFRoaXMgZGlyZWN0b3J5IHJlY2VpdmVzIGNvbXBsZXRlIGZpbGVzeXN0ZW0gaW1hZ2VzLgotICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gZmxhc2ggdGhlIHJlc3VsdGluZyBpbWFnZSBmcm9tIGEgYnVpbGQgb250byBhIGRldmljZSwgbG9vayBoZXJlIGZvciB0aGUgaW1hZ2UuCisgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBpcyBwb3B1bGF0ZWQgd2l0aCB0aGUgYmFzaWMgb3V0cHV0IG9iamVjdHMgb2YgdGhlCisgICAgICAgICAgICBidWlsZCAodGhpbmsgb2YgdGhlbSBhcyB0aGUgImdlbmVyYXRlZCBhcnRpZmFjdHMiIG9mIHRoZSBidWlsZCBwcm9jZXNzKSwKKyAgICAgICAgICAgIGluY2x1ZGluZyB0aGluZ3MgbGlrZSB0aGUgYm9vdCBsb2FkZXIgaW1hZ2UsIGtlcm5lbCwgcm9vdCBmaWxlc3lzdGVtIGFuZCBtb3JlLgorICAgICAgICAgICAgSWYgeW91IHdhbnQgdG8gZmxhc2ggdGhlIHJlc3VsdGluZyBpbWFnZSBmcm9tIGEgYnVpbGQgb250byBhIGRldmljZSwKKyAgICAgICAgICAgIGxvb2sgaGVyZSBmb3IgdGhlIG5lY2Vzc2FyeSBjb21wb25lbnRzLgogICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgPHBhcmE+CkBAIC02MDQsNyArNjA0LDcgQEAKIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIFRoZSBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIGNyZWF0ZXMgdGhpcyBkaXJlY3RvcnkgdG8gaG9sZAotICAgICAgICAgICAgdG9vbGNoYWluIGluc3RhbGxlciBzY3JpcHRzLCB3aGljaCB3aGVuIGV4ZWN1dGVkLCBpbnN0YWxsIHRoZQorICAgICAgICAgICAgdG9vbGNoYWluIGluc3RhbGxlciBzY3JpcHRzIHdoaWNoLCB3aGVuIGV4ZWN1dGVkLCBpbnN0YWxsIHRoZQogICAgICAgICAgICAgc3lzcm9vdCB0aGF0IG1hdGNoZXMgeW91ciB0YXJnZXQgaGFyZHdhcmUuCiAgICAgICAgICAgICBZb3UgY2FuIGZpbmQgb3V0IG1vcmUgYWJvdXQgdGhlc2UgaW5zdGFsbGVycyBpbiB0aGUKICAgICAgICAgICAgICI8dWxpbmsgdXJsPScmWU9DVE9fRE9DU19TREtfVVJMOyNzZGstYnVpbGRpbmctYW4tc2RrLWluc3RhbGxlcic+QnVpbGRpbmcgYW4gU0RLIEluc3RhbGxlcjwvdWxpbms+IgpAQCAtMTAzOCw3ICsxMDM4LDcgQEAKICAgICAgICAgPHRpdGxlPjxmaWxlbmFtZT5tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvPC9maWxlbmFtZT48L3RpdGxlPgogCiAgICAgICAgIDxwYXJhPgotICAgICAgICAgICAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgWCBhbmQgb3RoZXIgZ3JhcGhpY2FsbHkgcmVsYXRlZCBzeXN0ZW0gbGlicmFyaWVzCisgICAgICAgICAgICBUaGlzIGRpcmVjdG9yeSBjb250YWlucyBYIGFuZCBvdGhlciBncmFwaGljYWxseSByZWxhdGVkIHN5c3RlbSBsaWJyYXJpZXMuCiAgICAgICAgIDwvcGFyYT4KICAgICA8L3NlY3Rpb24+CiAKZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zeXN0ZW0tcmVxdWlyZW1lbnRzLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi1zeXN0ZW0tcmVxdWlyZW1lbnRzLnhtbAppbmRleCA5YzIxOThhLi43ZDNjNzE5IDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtc3lzdGVtLXJlcXVpcmVtZW50cy54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXN5c3RlbS1yZXF1aXJlbWVudHMueG1sCkBAIC04LDEyICs4LDEyIEBACiAgICAgPHBhcmE+CiAgICAgICAgIFdlbGNvbWUgdG8gdGhlIFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbCEKICAgICAgICAgVGhpcyBtYW51YWwgcHJvdmlkZXMgcmVmZXJlbmNlIGluZm9ybWF0aW9uIGZvciB0aGUgY3VycmVudCByZWxlYXNlCi0gICAgICAgIG9mIHRoZSBZb2N0byBQcm9qZWN0LgotICAgICAgICBUaGUgbWFudWFsIGlzIGJlc3QgdXNlZCBhZnRlciB5b3UgaGF2ZSBhbiB1bmRlcnN0YW5kaW5nCisgICAgICAgIG9mIHRoZSBZb2N0byBQcm9qZWN0LCBhbmQKKyAgICAgICAgaXMgbW9zdCBlZmZlY3RpdmVseSB1c2VkIGFmdGVyIHlvdSBoYXZlIGFuIHVuZGVyc3RhbmRpbmcKICAgICAgICAgb2YgdGhlIGJhc2ljcyBvZiB0aGUgWW9jdG8gUHJvamVjdC4KICAgICAgICAgVGhlIG1hbnVhbCBpcyBuZWl0aGVyIG1lYW50IHRvIGJlIHJlYWQgYXMgYSBzdGFydGluZyBwb2ludCB0byB0aGUKLSAgICAgICAgWW9jdG8gUHJvamVjdCBub3IgcmVhZCBmcm9tIHN0YXJ0IHRvIGZpbmlzaC4KLSAgICAgICAgVXNlIHRoaXMgbWFudWFsIHRvIGZpbmQgdmFyaWFibGUgZGVmaW5pdGlvbnMsIGNsYXNzCisgICAgICAgIFlvY3RvIFByb2plY3QsIG5vciByZWFkIGZyb20gc3RhcnQgdG8gZmluaXNoLgorICAgICAgICBSYXRoZXIsIHVzZSB0aGlzIG1hbnVhbCB0byBmaW5kIHZhcmlhYmxlIGRlZmluaXRpb25zLCBjbGFzcwogICAgICAgICBkZXNjcmlwdGlvbnMsIGFuZCBzbyBmb3J0aCBhcyBuZWVkZWQgZHVyaW5nIHRoZSBjb3Vyc2Ugb2YgdXNpbmcKICAgICAgICAgdGhlIFlvY3RvIFByb2plY3QuCiAgICAgPC9wYXJhPgpAQCAtNjYsMTIgKzY2LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBiZWxvdy4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Ci0gICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIHRoZQotICAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0naHR0cHM6Ly9lbi53aWtpcGVkaWEub3JnL3dpa2kvV2luZG93c19TdWJzeXN0ZW1fZm9yX0xpbnV4Jz5XaW5kb3dzIFN1YnN5c3RlbSBmb3IgTGludXg8L3VsaW5rPgotICAgICAgICAgICAgICAgICAgICAgICAgKFdTTCkuCi0gICAgICAgICAgICAgICAgICAgICAgICBZb3UgY2Fubm90IHVzZSBhCi0gICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdoYXJkd2FyZS1idWlsZC1zeXN0ZW0tdGVybSc+YnVpbGQgaG9zdDwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgaXMgcnVubmluZyBXU0wuCisgICAgICAgICAgICAgICAgICAgICAgICBZb3UgbWF5IHVzZSBXaW5kb3dzIFN1YnN5c3RlbSBGb3IgTGludXggdjIgdG8gc2V0IHVwIGEgYnVpbGQKKyAgICAgICAgICAgICAgICAgICAgICAgIGhvc3QgdXNpbmcgV2luZG93cyAxMCwgYnV0IHZhbGlkYXRpb24gaXMgbm90IHBlcmZvcm1lZAorICAgICAgICAgICAgICAgICAgICAgICAgYWdhaW5zdCBidWlsZCBob3N0cyB1c2luZyBXU0x2Mi4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgWW9jdG8gUHJvamVjdCBpcyBub3QgY29tcGF0aWJsZSB3aXRoIFdTTHYxLCBpdCBpcworICAgICAgICAgICAgICAgICAgICAgICAgICBjb21wYXRpYmxlIGJ1dCBub3Qgb2ZmaWNpYWxseSBzdXBwb3J0ZWQgbm9yIHZhbGlkYXRlZAorICAgICAgICAgICAgICAgICAgICAgICAgICB3aXRoIFdTTHYyLCBpZiB5b3Ugc3RpbGwgZGVjaWRlIHRvIHVzZSBXU0wgcGxlYXNlIHVwZ3JhZGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgdG8gV1NMdjIuCisgICAgICAgICAgICAgICAgICAgICAgICA8L25vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91IGVuY291bnRlciBwcm9ibGVtcywgcGxlYXNlIGdvIHRvCkBAIC0xMTcsNyArMTIwLDcgQEAKICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICBUaGUgbGlzdCBvZiBwYWNrYWdlcyB5b3UgbmVlZCBvbiB0aGUgaG9zdCBkZXZlbG9wbWVudCBzeXN0ZW0gY2FuCiAgICAgICAgICAgICBiZSBsYXJnZSB3aGVuIGNvdmVyaW5nIGFsbCBidWlsZCBzY2VuYXJpb3MgdXNpbmcgdGhlIFlvY3RvIFByb2plY3QuCi0gICAgICAgICAgICBUaGlzIHNlY3Rpb24gcHJvdmlkZXMgcmVxdWlyZWQgcGFja2FnZXMgYWNjb3JkaW5nIHRvCisgICAgICAgICAgICBUaGlzIHNlY3Rpb24gZGVzY3JpYmVzIHJlcXVpcmVkIHBhY2thZ2VzIGFjY29yZGluZyB0bwogICAgICAgICAgICAgTGludXggZGlzdHJpYnV0aW9uIGFuZCBmdW5jdGlvbi4KICAgICAgICAgPC9wYXJhPgogCkBAIC0xMjcsMTkgKzEzMCwyOSBAQAogICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgVGhlIGZvbGxvd2luZyBsaXN0IHNob3dzIHRoZSByZXF1aXJlZCBwYWNrYWdlcyBieSBmdW5jdGlvbgogICAgICAgICAgICAgICAgIGdpdmVuIGEgc3VwcG9ydGVkIFVidW50dSBvciBEZWJpYW4gTGludXggZGlzdHJpYnV0aW9uOgotICAgICAgICAgICAgICAgIDxub3RlPgotICAgICAgICAgICAgICAgICAgICBJZiB5b3VyIGJ1aWxkIHN5c3RlbSBoYXMgdGhlCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5vc3M0LWRldjwvZmlsZW5hbWU+IHBhY2thZ2UgaW5zdGFsbGVkLCB5b3UKLSAgICAgICAgICAgICAgICAgICAgbWlnaHQgZXhwZXJpZW5jZSBRRU1VIGJ1aWxkIGZhaWx1cmVzIGR1ZSB0byB0aGUgcGFja2FnZQotICAgICAgICAgICAgICAgICAgICBpbnN0YWxsaW5nIGl0cyBvd24gY3VzdG9tCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT4vdXNyL2luY2x1ZGUvbGludXgvc291bmRjYXJkLmg8L2ZpbGVuYW1lPiBvbgotICAgICAgICAgICAgICAgICAgICB0aGUgRGViaWFuIHN5c3RlbS4KLSAgICAgICAgICAgICAgICAgICAgSWYgeW91IHJ1biBpbnRvIHRoaXMgc2l0dWF0aW9uLCBlaXRoZXIgb2YgdGhlIGZvbGxvd2luZwotICAgICAgICAgICAgICAgICAgICBzb2x1dGlvbnMgZXhpc3Q6Ci0gICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+Tm90ZXM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdXIgYnVpbGQgc3lzdGVtIGhhcyB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+b3NzNC1kZXY8L2ZpbGVuYW1lPiBwYWNrYWdlIGluc3RhbGxlZCwgeW91CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbWlnaHQgZXhwZXJpZW5jZSBRRU1VIGJ1aWxkIGZhaWx1cmVzIGR1ZSB0byB0aGUgcGFja2FnZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGxpbmcgaXRzIG93biBjdXN0b20KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+L3Vzci9pbmNsdWRlL2xpbnV4L3NvdW5kY2FyZC5oPC9maWxlbmFtZT4gb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGUgRGViaWFuIHN5c3RlbS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBJZiB5b3UgcnVuIGludG8gdGhpcyBzaXR1YXRpb24sIGVpdGhlciBvZiB0aGUgZm9sbG93aW5nCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc29sdXRpb25zIGV4aXN0OgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBzdWRvIGFwdC1nZXQgYnVpbGQtZGVwIHFlbXUKICAgICAgJCBzdWRvIGFwdC1nZXQgcmVtb3ZlIG9zczQtZGV2Ci0gICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgRGViaWFuLTgsIDxmaWxlbmFtZT5weXRob24zLWdpdDwvZmlsZW5hbWU+IGFuZCA8ZmlsZW5hbWU+cHlsaW50MzwvZmlsZW5hbWU+IGFyZSBubyBsb25nZXIgYXZhaWxhYmxlIHZpYSA8ZmlsZW5hbWU+YXB0LWdldDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIHBpcDMgaW5zdGFsbCBHaXRQeXRob24gcHlsaW50PT0xLjkuNQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgPC9ub3RlPgogICAgICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+RXNzZW50aWFsczo8L2VtcGhhc2lzPgpAQCAtMjA1LDE4ICsyMTgsMTggQEAKICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgPC9zZWN0aW9uPgogCi0gICAgICAgIDxzZWN0aW9uIGlkPSdjZW50b3MtcGFja2FnZXMnPgotICAgICAgICAgICAgPHRpdGxlPkNlbnRPUyBQYWNrYWdlczwvdGl0bGU+CisgICAgICAgIDxzZWN0aW9uIGlkPSdjZW50b3MtNy1wYWNrYWdlcyc+CisgICAgICAgICAgICA8dGl0bGU+Q2VudE9TLTcgUGFja2FnZXM8L3RpdGxlPgogCiAgICAgICAgICAgICA8cGFyYT4KICAgICAgICAgICAgICAgICBUaGUgZm9sbG93aW5nIGxpc3Qgc2hvd3MgdGhlIHJlcXVpcmVkIHBhY2thZ2VzIGJ5IGZ1bmN0aW9uCi0gICAgICAgICAgICAgICAgZ2l2ZW4gYSBzdXBwb3J0ZWQgQ2VudE9TIExpbnV4IGRpc3RyaWJ1dGlvbjoKKyAgICAgICAgICAgICAgICBnaXZlbiBhIHN1cHBvcnRlZCBDZW50T1MtNyBMaW51eCBkaXN0cmlidXRpb246CiAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Fc3NlbnRpYWxzOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgdG8gYnVpbGQgYW4gaW1hZ2UgZm9yIGEgaGVhZGxlc3MKICAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbToKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJCBzdWRvIHl1bSBpbnN0YWxsICZDRU5UT1NfSE9TVF9QQUNLQUdFU19FU1NFTlRJQUw7CisgICAgICQgc3VkbyB5dW0gaW5zdGFsbCAmQ0VOVE9TN19IT1NUX1BBQ0tBR0VTX0VTU0VOVElBTDsKICAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPjx0aXRsZT5Ob3RlczwvdGl0bGU+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KQEAgLTIyOSwyOSArMjQyLDgxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW51eCBieSBkZWZhdWx0LgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gaW5zdGFsbCB0aGVzZSBwYWNrYWdlcwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGVseS4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5tYWtlY2FjaGU8L2ZpbGVuYW1lPiBjb21tYW5kCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdW1lcyBhZGRpdGlvbmFsIE1ldGFkYXRhIGZyb20KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5lcGVsLXJlbGVhc2U8L2ZpbGVuYW1lPi4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KLSAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Eb2N1bWVudGF0aW9uOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgaWYgeW91IGFyZSBnb2luZyB0byBidWlsZCBvdXQgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFudWFsczoKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBzdWRvIHl1bSBpbnN0YWxsIGRvY2Jvb2stc3R5bGUtZHNzc2wgZG9jYm9vay1zdHlsZS14c2wgXAogICAgICBkb2Nib29rLWR0ZHMgZG9jYm9vay11dGlscyBmb3AgbGlieHNsdCBkYmxhdGV4IHhtbHRvCi0gICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+PC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICA8L3NlY3Rpb24+CisKKyAgICAgICAgPHNlY3Rpb24gaWQ9J2NlbnRvcy04LXBhY2thZ2VzJz4KKyAgICAgICAgICAgIDx0aXRsZT5DZW50T1MtOCBQYWNrYWdlczwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSBmb2xsb3dpbmcgbGlzdCBzaG93cyB0aGUgcmVxdWlyZWQgcGFja2FnZXMgYnkgZnVuY3Rpb24KKyAgICAgICAgICAgICAgICBnaXZlbiBhIHN1cHBvcnRlZCBDZW50T1MtOCBMaW51eCBkaXN0cmlidXRpb246CisgICAgICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Fc3NlbnRpYWxzOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgdG8gYnVpbGQgYW4gaW1hZ2UgZm9yIGEgaGVhZGxlc3MKKyAgICAgICAgICAgICAgICAgICAgICAgIHN5c3RlbToKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIGRuZiBpbnN0YWxsICZDRU5UT1M4X0hPU1RfUEFDS0FHRVNfRVNTRU5USUFMOworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPk5vdGVzPC90aXRsZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFeHRyYSBQYWNrYWdlcyBmb3IgRW50ZXJwcmlzZSBMaW51eAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGkuZS4gPGZpbGVuYW1lPmVwZWwtcmVsZWFzZTwvZmlsZW5hbWU+KQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaXMgYSBjb2xsZWN0aW9uIG9mIHBhY2thZ2VzIGZyb20gRmVkb3JhCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsdCBvbiBSSEVML0NlbnRPUyBmb3IgZWFzeSBpbnN0YWxsYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHBhY2thZ2VzIG5vdCBpbmNsdWRlZCBpbiBlbnRlcnByaXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBMaW51eCBieSBkZWZhdWx0LgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWW91IG5lZWQgdG8gaW5zdGFsbCB0aGVzZSBwYWNrYWdlcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGVseS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+UG93ZXJUb29sczwvZmlsZW5hbWU+IHJlcG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByb3ZpZGVzIGFkZGl0aW9uYWwgcGFja2FnZXMgc3VjaCBhcworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnJwY2dlbjwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPnRleGluZm88L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+bWFrZWNhY2hlPC9maWxlbmFtZT4gY29tbWFuZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3VtZXMgYWRkaXRpb25hbCBNZXRhZGF0YSBmcm9tCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+ZXBlbC1yZWxlYXNlPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9ub3RlPgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz5Eb2N1bWVudGF0aW9uOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICBQYWNrYWdlcyBuZWVkZWQgaWYgeW91IGFyZSBnb2luZyB0byBidWlsZCBvdXQgdGhlCisgICAgICAgICAgICAgICAgICAgICAgICBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFudWFsczoKKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBzdWRvIGRuZiBpbnN0YWxsIGRvY2Jvb2stc3R5bGUtZHNzc2wgZG9jYm9vay1zdHlsZS14c2wgXAorICAgICBkb2Nib29rLWR0ZHMgZG9jYm9vay11dGlscyBmb3AgbGlieHNsdCBkYmxhdGV4IHhtbHRvCisgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDwvaXRlbWl6ZWRsaXN0PgogICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICA8L3NlY3Rpb24+CiAgICAgPC9zZWN0aW9uPgogCi0gICAgPHNlY3Rpb24gaWQ9J3JlcXVpcmVkLWdpdC10YXItYW5kLXB5dGhvbi12ZXJzaW9ucyc+Ci0gICAgICAgIDx0aXRsZT5SZXF1aXJlZCBHaXQsIHRhciwgYW5kIFB5dGhvbiBWZXJzaW9uczwvdGl0bGU+CisgICAgPHNlY3Rpb24gaWQ9J3JlcXVpcmVkLWdpdC10YXItcHl0aG9uLWFuZC1nY2MtdmVyc2lvbnMnPgorICAgICAgICA8dGl0bGU+UmVxdWlyZWQgR2l0LCB0YXIsIFB5dGhvbiBhbmQgZ2NjIFZlcnNpb25zPC90aXRsZT4KIAogICAgICAgICA8cGFyYT4KICAgICAgICAgICAgIEluIG9yZGVyIHRvIHVzZSB0aGUgYnVpbGQgc3lzdGVtLCB5b3VyIGhvc3QgZGV2ZWxvcG1lbnQgc3lzdGVtCkBAIC0yNTksOCArMzI0LDggQEAKICAgICAgICAgICAgIFB5dGhvbjoKICAgICAgICAgICAgIDxpdGVtaXplZGxpc3Q+CiAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkdpdCAxLjguMy4xIG9yIGdyZWF0ZXI8L3BhcmE+PC9saXN0aXRlbT4KLSAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+dGFyIDEuMjcgb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgotICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT5QeXRob24gMy40LjAgb3IgZ3JlYXRlcjwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT50YXIgMS4yOCBvciBncmVhdGVyPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPlB5dGhvbiAzLjUuMCBvciBncmVhdGVyPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KICAgICAgICAgPC9wYXJhPgogCkBAIC0yNzIsNiArMzM3LDg5IEBACiAgICAgICAgICAgICB0YXJiYWxsIG9yIHVzZSBCaXRCYWtlIHRvIGJ1aWxkIHRoZSB0YXJiYWxsLgogICAgICAgICA8L3BhcmE+CiAKKyAgICAgICAgPHBhcmE+CisgICAgICAgICAgICBJbiBhZGRpdGlvbiwgeW91ciBob3N0IGRldmVsb3BtZW50IHN5c3RlbSBtdXN0IG1lZXQgdGhlIGZvbGxvd2luZworICAgICAgICAgICAgdmVyc2lvbiByZXF1aXJlbWVudCBmb3IgZ2NjOgorICAgICAgICAgICAgPGl0ZW1pemVkbGlzdD4KKyAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+Z2NjIDUuMCBvciBncmVhdGVyPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICA8L2l0ZW1pemVkbGlzdD4KKyAgICAgICAgPC9wYXJhPgorCisgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgSWYgeW91ciBob3N0IGRldmVsb3BtZW50IHN5c3RlbSBkb2VzIG5vdCBtZWV0IHRoaXMgcmVxdWlyZW1lbnQsCisgICAgICAgICAgICB5b3UgY2FuIHJlc29sdmUgdGhpcyBieSBpbnN0YWxsaW5nIGEgPGZpbGVuYW1lPmJ1aWxkdG9vbHMtZXh0ZW5kZWQ8L2ZpbGVuYW1lPgorICAgICAgICAgICAgdGFyYmFsbCB0aGF0IGNvbnRhaW5zIGFkZGl0aW9uYWwgdG9vbHMsIHRoZSBlcXVpdmFsZW50IG9mIDxmaWxlbmFtZT5idWlsZHRvb2xzLWVzc2VudGlhbDwvZmlsZW5hbWU+LgorICAgICAgICA8L3BhcmE+CisgICAgICAgIDxzZWN0aW9uIGlkPSdpbnN0YWxsaW5nLWEtcHJlLWJ1aWx0LWJ1aWxkdG9vbHMtdGFyYmFsbC13aXRoLWluc3RhbGwtYnVpbGR0b29scy1zY3JpcHQnPgorICAgICAgICAgICAgPHRpdGxlPkluc3RhbGxpbmcgYSBQcmUtQnVpbHQgPGZpbGVuYW1lPmJ1aWxkdG9vbHM8L2ZpbGVuYW1lPiBUYXJiYWxsIHdpdGggPGZpbGVuYW1lPmluc3RhbGwtYnVpbGR0b29sczwvZmlsZW5hbWU+IHNjcmlwdDwvdGl0bGU+CisKKyAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+aW5zdGFsbC1idWlsZHRvb2xzPC9maWxlbmFtZT4gc2NyaXB0IGlzIHRoZSBlYXNpZXN0CisgICAgICAgICAgICAgICAgb2YgdGhlIHRocmVlIG1ldGhvZHMgYnkgd2hpY2ggeW91IGNhbiBnZXQgdGhlc2UgdG9vbHMuIEl0IGRvd25sb2FkcworICAgICAgICAgICAgICAgIGEgcHJlLWJ1aWx0IGJ1aWxkdG9vbHMgaW5zdGFsbGVyIGFuZCBhdXRvbWF0aWNhbGx5IGluc3RhbGxzIHRoZSB0b29scworICAgICAgICAgICAgICAgIGZvciB5b3U6CisgICAgICAgICAgICA8b3JkZXJlZGxpc3Q+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBFeGVjdXRlIHRoZSA8ZmlsZW5hbWU+aW5zdGFsbC1idWlsZHRvb2xzPC9maWxlbmFtZT4gc2NyaXB0LgorICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgJCBjZCBwb2t5CisgICAgICQgc2NyaXB0cy9pbnN0YWxsLWJ1aWxkdG9vbHMgLS13aXRob3V0LWV4dGVuZGVkLWJ1aWxkdG9vbHMgXAorICAgICAgIC0tYmFzZS11cmwgJllPQ1RPX0RMX1VSTDsvcmVsZWFzZXMveW9jdG8gXAorICAgICAgIC0tcmVsZWFzZSB5b2N0by0mRElTVFJPOyBcCisgICAgICAgLS1pbnN0YWxsZXItdmVyc2lvbiAmRElTVFJPOworICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgRHVyaW5nIGV4ZWN1dGlvbiwgdGhlIGJ1aWxkdG9vbHMgdGFyYmFsbCB3aWxsIGJlIGRvd25sb2FkZWQsCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgY2hlY2tzdW0gb2YgdGhlIGRvd25sb2FkIHdpbGwgYmUgdmVyaWZpZWQsIHRoZSBpbnN0YWxsZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHdpbGwgYmUgcnVuIGZvciB5b3UsIGFuZCBzb21lIGJhc2ljIGNoZWNrcyB3aWxsIGJlIHJ1biB0bworICAgICAgICAgICAgICAgICAgICAgICAgdG8gbWFrZSBzdXJlIHRoZSBpbnN0YWxsYXRpb24gaXMgZnVuY3Rpb25hbC4KKyAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgICAgIFRvIGF2b2lkIHRoZSBuZWVkIG9mIDxmaWxlbmFtZT5zdWRvPC9maWxlbmFtZT4gcHJpdmlsZWdlcywKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoZSA8ZmlsZW5hbWU+aW5zdGFsbC1idWlsZHRvb2xzPC9maWxlbmFtZT4gc2NyaXB0IHdpbGwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJ5IGRlZmF1bHQgdGVsbCB0aGUgaW5zdGFsbGVyIHRvIGluc3RhbGwgaW46CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIDxyZXBsYWNlYWJsZT4vcGF0aC90by88L3JlcGxhY2VhYmxlPnBva3kvYnVpbGR0b29scworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgICAgIDxwYXJhPgorICAgICAgICAgICAgICAgICAgICAgICAgSWYgeW91ciBob3N0IGRldmVsb3BtZW50IHN5c3RlbSBuZWVkcyB0aGUgYWRkaXRpb25hbCB0b29scworICAgICAgICAgICAgICAgICAgICAgICAgcHJvdmlkZWQgaW4gdGhlIDxmaWxlbmFtZT5idWlsZHRvb2xzLWV4dGVuZGVkPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgIHRhcmJhbGwsIHlvdSBjYW4gaW5zdGVhZCBleGVjdXRlIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmluc3RhbGwtYnVpbGR0b29sczwvZmlsZW5hbWU+IHNjcmlwdCB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdCBwYXJhbWV0ZXJzOgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgorICAgICAkIGNkIHBva3kKKyAgICAgJCBzY3JpcHRzL2luc3RhbGwtYnVpbGR0b29scworICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICA8L3BhcmE+CisgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgICBTb3VyY2UgdGhlIHRvb2xzIGVudmlyb25tZW50IHNldHVwIHNjcmlwdCBieSB1c2luZyBhCisgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgbGlrZSB0aGUgZm9sbG93aW5nOgorICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc291cmNlIDxyZXBsYWNlYWJsZT4vcGF0aC90by88L3JlcGxhY2VhYmxlPnBva3kvYnVpbGR0b29scy9lbnZpcm9ubWVudC1zZXR1cC14ODZfNjQtcG9reXNkay1saW51eAorICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgIE9mIGNvdXJzZSwgeW91IG5lZWQgdG8gc3VwcGx5IHlvdXIgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBhbmQgYmUKKyAgICAgICAgICAgICAgICAgICAgc3VyZSB0byB1c2UgdGhlIHJpZ2h0IGZpbGUgKGkuZS4gaTU4NiBvciB4ODZfNjQpLgorICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICA8cGFyYT4KKyAgICAgICAgICAgICAgICAgICAgQWZ0ZXIgeW91IGhhdmUgc291cmNlZCB0aGUgc2V0dXAgc2NyaXB0LAorICAgICAgICAgICAgICAgICAgICB0aGUgdG9vbHMgYXJlIGFkZGVkIHRvIDxmaWxlbmFtZT5QQVRIPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgYW5kIGFueSBvdGhlciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgcmVxdWlyZWQgdG8gcnVuIHRoZQorICAgICAgICAgICAgICAgICAgICB0b29scyBhcmUgaW5pdGlhbGl6ZWQuCisgICAgICAgICAgICAgICAgICAgIFRoZSByZXN1bHRzIGFyZSB3b3JraW5nIHZlcnNpb25zIHZlcnNpb25zIG9mIEdpdCwgdGFyLAorICAgICAgICAgICAgICAgICAgICBQeXRob24gYW5kIDxmaWxlbmFtZT5jaHJwYXRoPC9maWxlbmFtZT4uIEFuZCBpbiB0aGUgY2FzZSBvZgorICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmJ1aWxkdG9vbHMtZXh0ZW5kZWQ8L2ZpbGVuYW1lPiB0YXJiYWxsLCBhZGRpdGlvbmFsCisgICAgICAgICAgICAgICAgICAgIHdvcmtpbmcgdmVyc2lvbnMgb2YgdG9vbHMgaW5jbHVkaW5nIDxmaWxlbmFtZT5nY2M8L2ZpbGVuYW1lPiwKKyAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiBhbmQgdGhlIG90aGVyIHRvb2xzIGluY2x1ZGVkIGluCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAtY29yZS1idWlsZGVzc2VudGlhbDwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KKyAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgPC9zZWN0aW9uPgorCiAgICAgICAgIDxzZWN0aW9uIGlkPSdkb3dubG9hZGluZy1hLXByZS1idWlsdC1idWlsZHRvb2xzLXRhcmJhbGwnPgogICAgICAgICAgICAgPHRpdGxlPkRvd25sb2FkaW5nIGEgUHJlLUJ1aWx0IDxmaWxlbmFtZT5idWlsZHRvb2xzPC9maWxlbmFtZT4gVGFyYmFsbDwvdGl0bGU+CiAKQEAgLTI4MSwxNCArNDI5LDE4IEBACiAgICAgICAgICAgICAgICAgPG9yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICBMb2NhdGUgYW5kIGRvd25sb2FkIHRoZSA8ZmlsZW5hbWU+Ki5zaDwvZmlsZW5hbWU+IGF0Ci0gICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fRExfVVJMOy9yZWxlYXNlcy95b2N0by95b2N0by0mRElTVFJPOy9idWlsZHRvb2xzLyc+PC91bGluaz4uCisgICAgICAgICAgICAgICAgICAgICAgICA8dWxpbmsgdXJsPScmWU9DVE9fUkVMRUFTRV9ETF9VUkw7L2J1aWxkdG9vbHMvJz48L3VsaW5rPi4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICBFeGVjdXRlIHRoZSBpbnN0YWxsYXRpb24gc2NyaXB0LgotICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlOgorICAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIGZvciB0aGUgdHJhZGl0aW9uYWwgaW5zdGFsbGVyOgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHNoIH4vRG93bmxvYWRzL3g4Nl82NC1idWlsZHRvb2xzLW5hdGl2ZXNkay1zdGFuZGFsb25lLSZESVNUUk87LnNoCiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CisgICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGUgZm9yIHRoZSBleHRlbmRlZCBpbnN0YWxsZXI6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICQgc2ggfi9Eb3dubG9hZHMveDg2XzY0LWJ1aWxkdG9vbHMtZXh0ZW5kZWQtbmF0aXZlc2RrLXN0YW5kYWxvbmUtJkRJU1RSTzsuc2gKKyAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIER1cmluZyBleGVjdXRpb24sIGEgcHJvbXB0IGFwcGVhcnMgdGhhdCBhbGxvd3MgeW91IHRvCiAgICAgICAgICAgICAgICAgICAgICAgICBjaG9vc2UgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCiAgICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIGNob29zZSB0aGUgZm9sbG93aW5nOgpAQCAtMzExLDcgKzQ2MywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgYW5kIGFueSBvdGhlciBlbnZpcm9ubWVudCB2YXJpYWJsZXMgcmVxdWlyZWQgdG8gcnVuIHRoZQogICAgICAgICAgICAgICAgICAgICAgICAgdG9vbHMgYXJlIGluaXRpYWxpemVkLgogICAgICAgICAgICAgICAgICAgICAgICAgVGhlIHJlc3VsdHMgYXJlIHdvcmtpbmcgdmVyc2lvbnMgdmVyc2lvbnMgb2YgR2l0LCB0YXIsCi0gICAgICAgICAgICAgICAgICAgICAgICBQeXRob24gYW5kIDxmaWxlbmFtZT5jaHJwYXRoPC9maWxlbmFtZT4uCisgICAgICAgICAgICAgICAgICAgICAgICBQeXRob24gYW5kIDxmaWxlbmFtZT5jaHJwYXRoPC9maWxlbmFtZT4uIEFuZCBpbiB0aGUgY2FzZSBvZgorICAgICAgICAgICAgICAgICAgICAgICAgdGhlIDxmaWxlbmFtZT5idWlsZHRvb2xzLWV4dGVuZGVkPC9maWxlbmFtZT4gdGFyYmFsbCwgYWRkaXRpb25hbAorICAgICAgICAgICAgICAgICAgICAgICAgd29ya2luZyB2ZXJzaW9ucyBvZiB0b29scyBpbmNsdWRpbmcgPGZpbGVuYW1lPmdjYzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ha2U8L2ZpbGVuYW1lPiBhbmQgdGhlIG90aGVyIHRvb2xzIGluY2x1ZGVkIGluCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+cGFja2FnZWdyb3VwLWNvcmUtYnVpbGRlc3NlbnRpYWw8L2ZpbGVuYW1lPi4KICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgIDwvb3JkZXJlZGxpc3Q+CiAgICAgICAgICAgICA8L3BhcmE+CkBAIC0zMjcsNyArNDgzLDcgQEAKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+LnNoPC9maWxlbmFtZT4gZmlsZSBhbmQgdGhlbgogICAgICAgICAgICAgICAgIHRha2Ugc3RlcHMgdG8gdHJhbnNmZXIgYW5kIHJ1biBpdCBvbiBhCiAgICAgICAgICAgICAgICAgbWFjaGluZSB0aGF0IGRvZXMgbm90IG1lZXQgdGhlIG1pbmltYWwgR2l0LCB0YXIsIGFuZCBQeXRob24KLSAgICAgICAgICAgICAgICByZXF1aXJlbWVudHMuCisgICAgICAgICAgICAgICAgKG9yIGdjYykgcmVxdWlyZW1lbnRzLgogICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICA8cGFyYT4KQEAgLTM0NSw2ICs1MDEsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgJCBiaXRiYWtlIGJ1aWxkdG9vbHMtdGFyYmFsbAogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgb3IgcnVuIHRoZSBCaXRCYWtlIGNvbW1hbmQgdG8gYnVpbGQgdGhlIGV4dGVuZGVkIHRhcmJhbGw6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJCBiaXRiYWtlIGJ1aWxkdG9vbHMtZXh0ZW5kZWQtdGFyYmFsbAorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgPG5vdGU+CiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaW5rIGxpbmtlbmQ9J3Zhci1TREtNQUNISU5FJz48ZmlsZW5hbWU+U0RLTUFDSElORTwvZmlsZW5hbWU+PC9saW5rPgpAQCAtMzU4LDIxICs1MTgsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgICAgc3ViZGlyZWN0b3J5IG9mIHRoZQogICAgICAgICAgICAgICAgICAgICAgICA8bGluayBsaW5rZW5kPSdidWlsZC1kaXJlY3RvcnknPkJ1aWxkIERpcmVjdG9yeTwvbGluaz4uCiAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBpbnN0YWxsZXIgZmlsZSBoYXMgdGhlIHN0cmluZyAiYnVpbGR0b29scyIKLSAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIG5hbWUuCisgICAgICAgICAgICAgICAgICAgICAgIChvciAiYnVpbGR0b29scy1leHRlbmRlZCIpIGluIHRoZSBuYW1lLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgIFRyYW5zZmVyIHRoZSA8ZmlsZW5hbWU+LnNoPC9maWxlbmFtZT4gZmlsZSBmcm9tIHRoZQogICAgICAgICAgICAgICAgICAgICAgICBidWlsZCBob3N0IHRvIHRoZSBtYWNoaW5lIHRoYXQgZG9lcyBub3QgbWVldCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgR2l0LCB0YXIsIG9yIFB5dGhvbiByZXF1aXJlbWVudHMuCisgICAgICAgICAgICAgICAgICAgICAgIEdpdCwgdGFyLCBvciBQeXRob24gKG9yIGdjYykgcmVxdWlyZW1lbnRzLgogICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgIE9uIHRoZSBtYWNoaW5lIHRoYXQgZG9lcyBub3QgbWVldCB0aGUgcmVxdWlyZW1lbnRzLAogICAgICAgICAgICAgICAgICAgICAgICBydW4gdGhlIDxmaWxlbmFtZT4uc2g8L2ZpbGVuYW1lPiBmaWxlCiAgICAgICAgICAgICAgICAgICAgICAgIHRvIGluc3RhbGwgdGhlIHRvb2xzLgotICAgICAgICAgICAgICAgICAgICAgICBIZXJlIGlzIGFuIGV4YW1wbGU6CisgICAgICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgYW4gZXhhbXBsZSBmb3IgdGhlIHRyYWRpdGlvbmFsIGluc3RhbGxlcjoKICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgogICAgICAkIHNoIH4vRG93bmxvYWRzL3g4Nl82NC1idWlsZHRvb2xzLW5hdGl2ZXNkay1zdGFuZGFsb25lLSZESVNUUk87LnNoCiAgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KKyAgICAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyBhbiBleGFtcGxlIGZvciB0aGUgZXh0ZW5kZWQgaW5zdGFsbGVyOgorICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAkIHNoIH4vRG93bmxvYWRzL3g4Nl82NC1idWlsZHRvb2xzLWV4dGVuZGVkLW5hdGl2ZXNkay1zdGFuZGFsb25lLSZESVNUUk87LnNoCisgICAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgRHVyaW5nIGV4ZWN1dGlvbiwgYSBwcm9tcHQgYXBwZWFycyB0aGF0IGFsbG93cyB5b3UgdG8KICAgICAgICAgICAgICAgICAgICAgICAgY2hvb3NlIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5LgogICAgICAgICAgICAgICAgICAgICAgICBGb3IgZXhhbXBsZSwgeW91IGNvdWxkIGNob29zZSB0aGUgZm9sbG93aW5nOgpAQCAtMzg0LDEwICs1NDgsMTAgQEAKICAgICAgICAgICAgICAgICAgICAgICAgIFNvdXJjZSB0aGUgdG9vbHMgZW52aXJvbm1lbnQgc2V0dXAgc2NyaXB0IGJ5IHVzaW5nIGEKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgbGlrZSB0aGUgZm9sbG93aW5nOgogICAgICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICAkIHNvdXJjZSAvaG9tZS88cmVwbGFjZWFibGU+eW91cl91c2VybmFtZTwvcmVwbGFjZWFibGU+L2J1aWxkdG9vbHMvZW52aXJvbm1lbnQtc2V0dXAtaTU4Ni1wb2t5LWxpbnV4CisgICAgICQgc291cmNlIC9ob21lLzxyZXBsYWNlYWJsZT55b3VyX3VzZXJuYW1lPC9yZXBsYWNlYWJsZT4vYnVpbGR0b29scy9lbnZpcm9ubWVudC1zZXR1cC14ODZfNjQtcG9reS1saW51eAogICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgICAgICAgICAgT2YgY291cnNlLCB5b3UgbmVlZCB0byBzdXBwbHkgeW91ciBpbnN0YWxsYXRpb24gZGlyZWN0b3J5IGFuZCBiZQotICAgICAgICAgICAgICAgICAgICAgICAgc3VyZSB0byB1c2UgdGhlIHJpZ2h0IGZpbGUgKGkuZS4gaTU4NSBvciB4ODYtNjQpLgorICAgICAgICAgICAgICAgICAgICAgICAgc3VyZSB0byB1c2UgdGhlIHJpZ2h0IGZpbGUgKGkuZS4gaTU4NiBvciB4ODZfNjQpLgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPgogICAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgICBBZnRlciB5b3UgaGF2ZSBzb3VyY2VkIHRoZSBzZXR1cCBzY3JpcHQsCkBAIC0zOTUsNyArNTU5LDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBhbmQgYW55IG90aGVyIGVudmlyb25tZW50IHZhcmlhYmxlcyByZXF1aXJlZCB0byBydW4gdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICB0b29scyBhcmUgaW5pdGlhbGl6ZWQuCiAgICAgICAgICAgICAgICAgICAgICAgICBUaGUgcmVzdWx0cyBhcmUgd29ya2luZyB2ZXJzaW9ucyB2ZXJzaW9ucyBvZiBHaXQsIHRhciwKLSAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBhbmQgPGZpbGVuYW1lPmNocnBhdGg8L2ZpbGVuYW1lPi4KKyAgICAgICAgICAgICAgICAgICAgICAgIFB5dGhvbiBhbmQgPGZpbGVuYW1lPmNocnBhdGg8L2ZpbGVuYW1lPi4gQW5kIGluIHRoZSBjYXNlIG9mCisgICAgICAgICAgICAgICAgICAgICAgICB0aGUgPGZpbGVuYW1lPmJ1aWxkdG9vbHMtZXh0ZW5kZWQ8L2ZpbGVuYW1lPiB0YXJiYWxsLCBhZGRpdGlvbmFsCisgICAgICAgICAgICAgICAgICAgICAgICB3b3JraW5nIHZlcnNpb25zIG9mIHRvb2xzIGluY2x1ZGluZyA8ZmlsZW5hbWU+Z2NjPC9maWxlbmFtZT4sCisgICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bWFrZTwvZmlsZW5hbWU+IGFuZCB0aGUgb3RoZXIgdG9vbHMgaW5jbHVkZWQgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5wYWNrYWdlZ3JvdXAtY29yZS1idWlsZGVzc2VudGlhbDwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICAgICAgPC9vcmRlcmVkbGlzdD4KICAgICAgICAgICAgIDwvcGFyYT4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi10ZXJtcy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdGVybXMueG1sCmluZGV4IGY5ODU0NjguLjcyMmZhN2UgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9yZWYtbWFudWFsL3JlZi10ZXJtcy54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXRlcm1zLnhtbApAQCAtNDEsMTEgKzQxLDEzIEBACiAgICAgICAgICAgICAgICAgVGhhdCBhcHBlbmQgZmlsZSB3b3VsZCBtYXRjaCBhbnkKICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+YnVzeWJveF8xLjIxLjwvZmlsZW5hbWU+PHJlcGxhY2VhYmxlPng8L3JlcGxhY2VhYmxlPjxmaWxlbmFtZT4uYmI8L2ZpbGVuYW1lPgogICAgICAgICAgICAgICAgIHZlcnNpb24gb2YgdGhlIHJlY2lwZS4KLSAgICAgICAgICAgICAgICBTbywgdGhlIGFwcGVuZCBmaWxlIHdvdWxkIG1hdGNoIHRoZSBmb2xsb3dpbmcgcmVjaXBlIG5hbWVzOgorICAgICAgICAgICAgICAgIFNvLCB0aGUgYXBwZW5kIGZpbGUgd291bGQgbWF0Y2ggYW55IG9mIHRoZSBmb2xsb3dpbmcgcmVjaXBlIG5hbWVzOgogICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KICAgICAgYnVzeWJveF8xLjIxLjEuYmIKICAgICAgYnVzeWJveF8xLjIxLjIuYmIKICAgICAgYnVzeWJveF8xLjIxLjMuYmIKKyAgICAgYnVzeWJveF8xLjIxLjEwLmJiCisgICAgIGJ1c3lib3hfMS4yMS4yNS5iYgogICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICA8bm90ZT48dGl0bGU+SW1wb3J0YW50PC90aXRsZT4KICAgICAgICAgICAgICAgICAgICAgVGhlIHVzZSBvZiB0aGUgIjxmaWxlbmFtZT4lPC9maWxlbmFtZT4iIGNoYXJhY3RlcgpAQCAtMTE1LDcgKzExNyw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBpbiB5b3VyIGhvbWUgZGlyZWN0b3J5IHdpdGhpbiB0aGUgZXhpc3RpbmcKICAgICAgICAgICAgICAgICAgICAgICAgIGRpcmVjdG9yeSA8ZmlsZW5hbWU+bXlidWlsZHM8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgJGNkICRIT01FCisgICAgICQgY2QgJEhPTUUKICAgICAgJCBzb3VyY2UgJEhPTUUvcG9reS8mT0VfSU5JVF9GSUxFOyAkSE9NRS9teWJ1aWxkcy9ZUC0mUE9LWVZFUlNJT047CiAgICAgICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgICAgICAgICA8L3BhcmE+PC9saXN0aXRlbT4KQEAgLTE0MSw3ICsxNDMsNyBAQAogICAgICAgICAgICAgICAgIFRoZSBzeXN0ZW0gdXNlZCB0byBidWlsZCBpbWFnZXMgaW4gYSBZb2N0byBQcm9qZWN0CiAgICAgICAgICAgICAgICAgRGV2ZWxvcG1lbnQgZW52aXJvbm1lbnQuCiAgICAgICAgICAgICAgICAgVGhlIGJ1aWxkIHN5c3RlbSBpcyBzb21ldGltZXMgcmVmZXJyZWQgdG8gYXMgdGhlCi0gICAgICAgICAgICAgICAgZGV2ZWxvcG1lbnQgaG9zdC4KKyAgICAgICAgICAgICAgICA8Zmlyc3R0ZXJtPmRldmVsb3BtZW50IGhvc3Q8L2ZpcnN0dGVybT4uCiAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CiAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+CiAgICAgICAgICAgICAgICAgPGVtcGhhc2lzPkNsYXNzZXM6PC9lbXBoYXNpcz4KQEAgLTM5Myw3ICszOTUsNyBAQAogICAgICAgICAgICAgICAgIFBva3kgaXMgbm90IGEgcHJvZHVjdCBsZXZlbCBkaXN0cm8uCiAgICAgICAgICAgICAgICAgUmF0aGVyLCBpdCBpcyBhIGdvb2Qgc3RhcnRpbmcgcG9pbnQgZm9yIGN1c3RvbWl6YXRpb24uCiAgICAgICAgICAgICAgICAgPG5vdGU+Ci0gICAgICAgICAgICAgICAgICAgIFBva3kgYmVnYW4gYW4gb3Blbi1zb3VyY2UKKyAgICAgICAgICAgICAgICAgICAgUG9reSBiZWdhbiBhcyBhbiBvcGVuLXNvdXJjZQogICAgICAgICAgICAgICAgICAgICBwcm9qZWN0IGluaXRpYWxseSBkZXZlbG9wZWQgYnkgT3BlbmVkSGFuZC4KICAgICAgICAgICAgICAgICAgICAgT3BlbmVkSGFuZCBkZXZlbG9wZWQgUG9reSBmcm9tIHRoZSBleGlzdGluZwogICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIGNyZWF0ZSBhIGNvbW1lcmNpYWxseQpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3JlZi1tYW51YWwvcmVmLXZhcmlhYmxlcy54bWwgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdmFyaWFibGVzLnhtbAppbmRleCAwMmFiYzU5Li5iNDRmZGNiIDEwMDY0NAotLS0gYS9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdmFyaWFibGVzLnhtbAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vcmVmLW1hbnVhbC9yZWYtdmFyaWFibGVzLnhtbApAQCAtMzY3LDcgKzM2Nyw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1BU1NVTUVfU0hMSUJTJz48Z2xvc3N0ZXJtPkFTU1VNRV9TSExJQlM8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgIEFTU1VNRV9TSExJQlNbZG9jXSA9IFByb3ZpZGVzIGFkZGl0aW9uYWwgc2hsaWJzIHByb3ZpZGVyIG1hcHBpbmcgaW5mb3JtYXRpb24sIHdoaWNoIGFkZHMgdG8gb3Igb3ZlcndyaXRlcyB0aGUgaW5mb3JtYXRpb24gcHJvdmlkZWQgYXV0b21hdGljYWxseSBieSB0aGUgc3lzdGVtLiIKKyAgICAgICAgICAgICAgICBBU1NVTUVfU0hMSUJTW2RvY10gPSAiUHJvdmlkZXMgYWRkaXRpb25hbCBzaGxpYnMgcHJvdmlkZXIgbWFwcGluZyBpbmZvcm1hdGlvbiwgd2hpY2ggYWRkcyB0byBvciBvdmVyd3JpdGVzIHRoZSBpbmZvcm1hdGlvbiBwcm92aWRlZCBhdXRvbWF0aWNhbGx5IGJ5IHRoZSBzeXN0ZW0uIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgpAQCAtNDk1LDYgKzQ5NSwzMCBAQAogICAgICAgICAgICAgPC9nbG9zc2RlZj4KICAgICAgICAgPC9nbG9zc2VudHJ5PgogCisgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQVZBSUxBQkxFX0xJQ0VOU0VTJz48Z2xvc3N0ZXJtPkFWQUlMQUJMRV9MSUNFTlNFUzwvZ2xvc3N0ZXJtPgorICAgICAgICAgICAgPGluZm8+CisgICAgICAgICAgICAgICAgQVZBSUxBQkxFX0xJQ0VOU0VTW2RvY10gPSAiTGlzdCBvZiBsaWNlbnNlcyBmb3VuZCBpbiB0aGUgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGJ5IENPTU1PTl9MSUNFTlNFX0RJUiBhbmQgTElDRU5TRV9QQVRILiIKKyAgICAgICAgICAgIDwvaW5mbz4KKyAgICAgICAgICAgIDxnbG9zc2RlZj4KKyAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KKzwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CisKKyAgICAgICAgICAgICAgICAgICAgTGlzdCBvZiBsaWNlbnNlcyBmb3VuZCBpbiB0aGUgZGlyZWN0b3JpZXMgc3BlY2lmaWVkCisgICAgICAgICAgICAgICAgICAgIGJ5IDxsaW5rIGxpbmtlbmQ9J3Zhci1DT01NT05fTElDRU5TRV9ESVInPjxmaWxlbmFtZT5DT01NT05fTElDRU5TRV9ESVI8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgYW5kIDxsaW5rIGxpbmtlbmQ9J3Zhci1MSUNFTlNFX1BBVEgnPjxmaWxlbmFtZT5MSUNFTlNFX1BBVEg8L2ZpbGVuYW1lPjwvbGluaz4uCisKKyAgICAgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgICAgICBJdCBpcyBhc3N1bWVkIHRoYXQgYWxsIGNoYW5nZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT5DT01NT05fTElDRU5TRV9ESVI8L2ZpbGVuYW1lPgorICAgICAgICAgICAgICAgICAgICAgICAgYW5kIDxmaWxlbmFtZT5MSUNFTlNFX1BBVEg8L2ZpbGVuYW1lPiBoYXZlIGJlZW4gZG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgYmVmb3JlIDxmaWxlbmFtZT5BVkFJTEFCTEVfTElDRU5TRVM8L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lZAorICAgICAgICAgICAgICAgICAgICAgICAgKGluIDxsaW5rIGxpbmtlbmQ9J3JlZi1jbGFzc2VzLWxpY2Vuc2UnPmxpY2Vuc2UuYmJjbGFzczwvbGluaz4pLgorICAgICAgICAgICAgICAgICAgICA8L25vdGU+CisgICAgICAgICAgICAgICAgPC9wYXJhPgorICAgICAgICAgICAgPC9nbG9zc2RlZj4KKyAgICAgICAgPC9nbG9zc2VudHJ5PgorCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItQVZBSUxUVU5FUyc+PGdsb3NzdGVybT5BVkFJTFRVTkVTPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KICAgICAgICAgICAgICAgICBBVkFJTFRVTkVTW2RvY10gPSAiVGhlIGxpc3Qgb2YgZGVmaW5lZCBDUFUgYW5kIEFwcGxpY2F0aW9uIEJpbmFyeSBJbnRlcmZhY2UgKEFCSSkgdHVuaW5ncyAoaS5lLiAgInR1bmVzIikgYXZhaWxhYmxlIGZvciB1c2UgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0uIgpAQCAtMTQyMyw3ICsxNDQ3LDcgQEAKICAgICAgICAgICAgICAgICAgICAgVXNlIHRoZSBmb2xsb3dpbmcgZm9ybWF0IHRvIGV4cG9ydCB0aGUgdmFyaWFibGUgdG8gdGhlCiAgICAgICAgICAgICAgICAgICAgIEJpdEJha2UgZW52aXJvbm1lbnQ6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgZXhwb3J0IEJCU0VSVkVSPWxvY2FsaG9zdDokcG9ydCIKKyAgICAgZXhwb3J0IEJCU0VSVkVSPWxvY2FsaG9zdDokcG9ydAogICAgICAgICAgICAgICAgICAgICA8L2xpdGVyYWxsYXlvdXQ+CiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCkBAIC0zNzg2LDcgKzM4MTAsNyBAQAogICAgICAgICAgICAgICAgICAgICBJdCBpcyBub3QgaW50ZW5kZWQgdG8gYmUgdXNlci1jb25maWd1cmFibGUuCiAgICAgICAgICAgICAgICAgICAgIEl0IGlzIGJlc3QgdG8ganVzdCByZWZlcmVuY2UgdGhlIHZhcmlhYmxlIHRvIHNlZSB3aGljaCBkaXN0cm8gZmVhdHVyZXMgYXJlCiAgICAgICAgICAgICAgICAgICAgIGJlaW5nIGJhY2tmaWxsZWQgZm9yIGFsbCBkaXN0cm8gY29uZmlndXJhdGlvbnMuCi0gICAgICAgICAgICAgICAgICAgIFNlZSB0aGUgPGxpbmsgbGlua2VuZD0ncmVmLWZlYXR1cmVzLWJhY2tmaWxsJz5GZWF0dXJlIEJhY2tmaWxsaW5nPC9saW5rPiBzZWN0aW9uIGZvcgorICAgICAgICAgICAgICAgICAgICBTZWUgdGhlICI8bGluayBsaW5rZW5kPSdyZWYtZmVhdHVyZXMtYmFja2ZpbGwnPkZlYXR1cmUgQmFja2ZpbGxpbmc8L2xpbms+IiBzZWN0aW9uIGZvcgogICAgICAgICAgICAgICAgICAgICBtb3JlIGluZm9ybWF0aW9uLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CkBAIC02NzUwLDYgKzY3NzQsMjUgQEAKICAgICAgICAgICAgICAgICAgICAgY29tcG9uZW50cyB0aGF0IGFyZSByZXF1aXJlZCB0byBwcm9kdWNlIGEgZnVuY3Rpb25hbCBzeXN0ZW0KICAgICAgICAgICAgICAgICAgICAgaW1hZ2UuCiAgICAgICAgICAgICAgICAgPC9ub3RlPgorCisgICAgICAgICAgICAgICAgPG5vdGU+PHRpdGxlPlRpcHM8L3RpdGxlPgorICAgICAgICAgICAgICAgICAgICBJdCBpcyBwb3NzaWJsZSB0byBkZWZpbmUgYSBsaXN0IG9mIGxpY2Vuc2VzIHRoYXQgYXJlIGFsbG93ZWQKKyAgICAgICAgICAgICAgICAgICAgdG8gYmUgdXNlZCBpbnN0ZWFkIG9mIHRoZSBsaWNlbnNlcyB0aGF0IGFyZSBleGNsdWRlZC4gVG8gZG8KKyAgICAgICAgICAgICAgICAgICAgdGhpcywgZGVmaW5lIGEKKyAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgPGZpbGVuYW1lPkNPTVBBVElCTEVfTElDRU5TRVM8L2ZpbGVuYW1lPiB3aXRoIHRoZQorICAgICAgICAgICAgICAgICAgICBuYW1lcyBvZiB0aGUgbGljZW5jZXMgdGhhdCBhcmUgYWxsb3dlZC4gVGhlbgorICAgICAgICAgICAgICAgICAgICBkZWZpbmUgPGZpbGVuYW1lPklOQ09NUEFUSUJMRV9MSUNFTlNFPC9maWxlbmFtZT4gYXM6CisgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KKyAgICAgSU5DT01QQVRJQkxFX0xJQ0VOU0UgPSAiJHtAJyAnLmpvaW4oc29ydGVkKHNldChkLmdldFZhcignQVZBSUxBQkxFX0xJQ0VOU0VTJykuc3BsaXQoKSkgLSBzZXQoZC5nZXRWYXIoJ0NPTVBBVElCTEVfTElDRU5TRVMnKS5zcGxpdCgpKSkpfSIKKyAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICBUaGlzIHdpbGwgcmVzdWx0CisgICAgICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT5JTkNPTVBBVElCTEVfTElDRU5TRTwvZmlsZW5hbWU+IGNvbnRhaW5pbmcgdGhlCisgICAgICAgICAgICAgICAgICAgIG5hbWVzIG9mIGFsbCBsaWNlbmNlcworICAgICAgICAgICAgICAgICAgICBmcm9tIDxsaW5rIGxpbmtlbmQ9J3Zhci1BVkFJTEFCTEVfTElDRU5TRVMnPjxmaWxlbmFtZT5BVkFJTEFCTEVfTElDRU5TRVM8L2ZpbGVuYW1lPjwvbGluaz4KKyAgICAgICAgICAgICAgICAgICAgZXhjZXB0IHRoZSBvbmVzIHNwZWNpZmllZAorICAgICAgICAgICAgICAgICAgICBpbiA8ZmlsZW5hbWU+Q09NUEFUSUJMRV9MSUNFTlNFUzwvZmlsZW5hbWU+LCB0aHVzIG9ubHkKKyAgICAgICAgICAgICAgICAgICAgYWxsb3dpbmcgdGhlIGxhdHRlciBsaWNlbmNlcyB0byBiZSB1c2VkLgorICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIApAQCAtNzQyOCw3ICs3NDcxLDYgQEAKICAgICAgS0JSQU5DSF9nZW5lcmljeDg2LTY0ICA9ICJzdGFuZGFyZC9iYXNlIgogICAgICBLQlJBTkNIX2VkZ2Vyb3V0ZXIgPSAic3RhbmRhcmQvZWRnZXJvdXRlciIKICAgICAgS0JSQU5DSF9iZWFnbGVib25lID0gInN0YW5kYXJkL2JlYWdsZWJvbmUiCi0gICAgIEtCUkFOQ0hfbXBjODMxNWUtcmRiID0gInN0YW5kYXJkL2ZzbC1tcGM4MzE1ZS1yZGIiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSA8ZmlsZW5hbWU+S0JSQU5DSDwvZmlsZW5hbWU+IHN0YXRlbWVudHMgaWRlbnRpZnkKICAgICAgICAgICAgICAgICAgICAgICAgIHRoZSBrZXJuZWwgYnJhbmNoIHRvIHVzZSB3aGVuIGJ1aWxkaW5nIGZvciBlYWNoCkBAIC04NzQ2LDcgKzg3ODgsNiBAQAogICAgICBNQUNISU5FID89ICJnZW5lcmljeDg2IgogICAgICBNQUNISU5FID89ICJnZW5lcmljeDg2LTY0IgogICAgICBNQUNISU5FID89ICJiZWFnbGVib25lIgotICAgICBNQUNISU5FID89ICJtcGM4MzE1ZS1yZGIiCiAgICAgIE1BQ0hJTkUgPz0gImVkZ2Vyb3V0ZXIiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgVGhlIGxhc3QgZml2ZSBhcmUgWW9jdG8gUHJvamVjdCByZWZlcmVuY2UgaGFyZHdhcmUgYm9hcmRzLCB3aGljaApAQCAtMTAzNzYsMTIgKzEwNDE3LDIwIEBACiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QQUNLQUdFQ09ORklHPC9maWxlbmFtZT4gYmxvY2tzIGFyZSBkZWZpbmVkCiAgICAgICAgICAgICAgICAgICAgIGluIHJlY2lwZXMgd2hlbiB5b3Ugc3BlY2lmeSBmZWF0dXJlcyBhbmQgdGhlbiBhcmd1bWVudHMKICAgICAgICAgICAgICAgICAgICAgdGhhdCBkZWZpbmUgZmVhdHVyZSBiZWhhdmlvcnMuCi0gICAgICAgICAgICAgICAgICAgIEhlcmUgaXMgdGhlIGJhc2ljIGJsb2NrIHN0cnVjdHVyZToKKyAgICAgICAgICAgICAgICAgICAgSGVyZSBpcyB0aGUgYmFzaWMgYmxvY2sgc3RydWN0dXJlIChicm9rZW4gb3ZlciBtdWx0aXBsZQorICAgICAgICAgICAgICAgICAgICBsaW5lcyBmb3IgcmVhZGFiaWxpdHkpOgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CiAgICAgIFBBQ0tBR0VDT05GSUcgPz89ICJmMSBmMiBmMyAuLi4iCi0gICAgIFBBQ0tBR0VDT05GSUdbZjFdID0gIi0td2l0aC1mMSwtLXdpdGhvdXQtZjEsYnVpbGQtZGVwcy1mMSxydC1kZXBzLWYxLHJ0LXJlY3MtZjEiCi0gICAgIFBBQ0tBR0VDT05GSUdbZjJdID0gIi0td2l0aC1mMiwtLXdpdGhvdXQtZjIsYnVpbGQtZGVwcy1mMixydC1kZXBzLWYyLHJ0LXJlY3MtZjIiCi0gICAgIFBBQ0tBR0VDT05GSUdbZjNdID0gIi0td2l0aC1mMywtLXdpdGhvdXQtZjMsYnVpbGQtZGVwcy1mMyxydC1kZXBzLWYzLHJ0LXJlY3MtZjMiCisgICAgIFBBQ0tBR0VDT05GSUdbZjFdID0gIlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLWYxLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1mMSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBidWlsZC1kZXBzLWZvci1mMSwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBydW50aW1lLWRlcHMtZm9yLWYxLCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWUtcmVjb21tZW5kcy1mb3ItZjEsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgcGFja2FnZWNvbmZpZy1jb25mbGljdHMtZm9yLWYxIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIgorICAgICBQQUNLQUdFQ09ORklHW2YyXSA9ICJcCisgICAgICAgICAgICAgICAgICAgICAgICAgLi4uIGFuZCBzbyBvbiBhbmQgc28gb24gLi4uCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKQEAgLTEwMzkwLDcgKzEwNDM5LDcgQEAKICAgICAgICAgICAgICAgICAgICAgdmFyaWFibGUgaXRzZWxmIHNwZWNpZmllcyBhIHNwYWNlLXNlcGFyYXRlZCBsaXN0IG9mIHRoZQogICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyB0byBlbmFibGUuCiAgICAgICAgICAgICAgICAgICAgIEZvbGxvd2luZyB0aGUgZmVhdHVyZXMsIHlvdSBjYW4gZGV0ZXJtaW5lIHRoZSBiZWhhdmlvciBvZgotICAgICAgICAgICAgICAgICAgICBlYWNoIGZlYXR1cmUgYnkgcHJvdmlkaW5nIHVwIHRvIGZpdmUgb3JkZXItZGVwZW5kZW50CisgICAgICAgICAgICAgICAgICAgIGVhY2ggZmVhdHVyZSBieSBwcm92aWRpbmcgdXAgdG8gc2l4IG9yZGVyLWRlcGVuZGVudAogICAgICAgICAgICAgICAgICAgICBhcmd1bWVudHMsIHdoaWNoIGFyZSBzZXBhcmF0ZWQgYnkgY29tbWFzLgogICAgICAgICAgICAgICAgICAgICBZb3UgY2FuIG9taXQgYW55IGFyZ3VtZW50IHlvdSBsaWtlIGJ1dCBtdXN0IHJldGFpbiB0aGUKICAgICAgICAgICAgICAgICAgICAgc2VwYXJhdGluZyBjb21tYXMuCkBAIC0xMDQyMCw2ICsxMDQ2OSwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICg8bGluayBsaW5rZW5kPSd2YXItUlJFQ09NTUVORFMnPjxmaWxlbmFtZT5SUkVDT01NRU5EUzwvZmlsZW5hbWU+PC9saW5rPikKICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0aGF0IHNob3VsZCBiZSBhZGRlZCBpZiB0aGUgZmVhdHVyZSBpcyBlbmFibGVkLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgorICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPkFueSBjb25mbGljdGluZyAodGhhdCBpcywgbXV0dWFsbHkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBleGNsdXNpdmUpIDxmaWxlbmFtZT5QQUNLQUdFQ09ORklHPC9maWxlbmFtZT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXR0aW5ncyBmb3IgdGhpcyBmZWF0dXJlLgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT48L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgICAgICA8L29yZGVyZWRsaXN0PgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTA0MjcsMjUgKzEwNDgwLDIzIEBACiAgICAgICAgICAgICAgICAgICAgIENvbnNpZGVyIHRoZSBmb2xsb3dpbmcKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBBQ0tBR0VDT05GSUc8L2ZpbGVuYW1lPiBibG9jayB0YWtlbiBmcm9tIHRoZQogICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+bGlicnN2ZzwvZmlsZW5hbWU+IHJlY2lwZS4KLSAgICAgICAgICAgICAgICAgICAgSW4gdGhpcyBleGFtcGxlIHRoZSBmZWF0dXJlIGlzIDxmaWxlbmFtZT5jcm9jbzwvZmlsZW5hbWU+LAorICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGV4YW1wbGUgdGhlIGZlYXR1cmUgaXMgPGZpbGVuYW1lPmd0azwvZmlsZW5hbWU+LAogICAgICAgICAgICAgICAgICAgICB3aGljaCBoYXMgdGhyZWUgYXJndW1lbnRzIHRoYXQgZGV0ZXJtaW5lIHRoZSBmZWF0dXJlJ3MKICAgICAgICAgICAgICAgICAgICAgYmVoYXZpb3IuCiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgUEFDS0FHRUNPTkZJRyA/Pz0gImNyb2NvIgotICAgICBQQUNLQUdFQ09ORklHW2Nyb2NvXSA9ICItLXdpdGgtY3JvY28sLS13aXRob3V0LWNyb2NvLGxpYmNyb2NvIgorICAgICBQQUNLQUdFQ09ORklHW2d0a10gPSAiLS13aXRoLWd0azMsLS13aXRob3V0LWd0azMsZ3RrKzMiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KLSAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT4tLXdpdGgtY3JvY288L2ZpbGVuYW1lPiBhbmQKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPmxpYmNyb2NvPC9maWxlbmFtZT4gYXJndW1lbnRzIGFwcGx5IG9ubHkgaWYKKyAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT4tLXdpdGgtZ3RrMzwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z3RrKzM8L2ZpbGVuYW1lPiBhcmd1bWVudHMgYXBwbHkgb25seSBpZgogICAgICAgICAgICAgICAgICAgICB0aGUgZmVhdHVyZSBpcyBlbmFibGVkLgotICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIDxmaWxlbmFtZT4tLXdpdGgtY3JvY288L2ZpbGVuYW1lPiBpcworICAgICAgICAgICAgICAgICAgICBJbiB0aGlzIGNhc2UsIDxmaWxlbmFtZT4tLXdpdGgtZ3RrMzwvZmlsZW5hbWU+IGlzCiAgICAgICAgICAgICAgICAgICAgIGFkZGVkIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0IGFyZ3VtZW50IGxpc3QgYW5kCi0gICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5saWJjcm9jbzwvZmlsZW5hbWU+IGlzIGFkZGVkIHRvCisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ndGsrMzwvZmlsZW5hbWU+IGlzIGFkZGVkIHRvCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5ERVBFTkRTPC9maWxlbmFtZT4uCiAgICAgICAgICAgICAgICAgICAgIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgZmVhdHVyZSBpcyBkaXNhYmxlZCBzYXkgdGhyb3VnaAogICAgICAgICAgICAgICAgICAgICBhIDxmaWxlbmFtZT4uYmJhcHBlbmQ8L2ZpbGVuYW1lPiBmaWxlIGluIGFub3RoZXIgbGF5ZXIsIHRoZW4KLSAgICAgICAgICAgICAgICAgICAgdGhlIHNlY29uZCBhcmd1bWVudCA8ZmlsZW5hbWU+LS13aXRob3V0LWNyb2NvPC9maWxlbmFtZT4gaXMKLSAgICAgICAgICAgICAgICAgICAgYWRkZWQgdG8gdGhlIGNvbmZpZ3VyZSBzY3JpcHQgcmF0aGVyIHRoYW4KLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPi0td2l0aC1jcm9jbzwvZmlsZW5hbWU+LgorICAgICAgICAgICAgICAgICAgICB0aGUgc2Vjb25kIGFyZ3VtZW50IDxmaWxlbmFtZT4tLXdpdGhvdXQtZ3RrMzwvZmlsZW5hbWU+IGlzCisgICAgICAgICAgICAgICAgICAgIGFkZGVkIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0IGluc3RlYWQuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgogCiAgICAgICAgICAgICAgICAgPHBhcmE+CkBAIC0xMTA1NCw3ICsxMTEwNSw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1QTic+PGdsb3NzdGVybT5QTjwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgUE5bZG9jXSA9ICJQTiByZWZlcnMgdG8gYSByZWNpcGUgbmFtZSBpbiB0aGUgY29udGV4dCBvZiBhIGZpbGUgdXNlZCBieSB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSBhcyBpbnB1dCB0byBjcmVhdGUgYSBwYWNrYWdlLgorICAgICAgICAgICAgICAgIFBOW2RvY10gPSAiUE4gcmVmZXJzIHRvIGEgcmVjaXBlIG5hbWUgaW4gdGhlIGNvbnRleHQgb2YgYSBmaWxlIHVzZWQgYnkgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gYXMgaW5wdXQgdG8gY3JlYXRlIGEgcGFja2FnZS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC0xMTUwMSwyMyArMTE1NTIsMzUgQEAKICAgICAgICAgICAgICAgICAgICAgQnkgZGVmYXVsdCwgYSByZWNpcGUncyBvd24KICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1QTic+UE48L2xpbms+PC9maWxlbmFtZT4KICAgICAgICAgICAgICAgICAgICAgaXMgaW1wbGljaXRseSBhbHJlYWR5IGluIGl0cyA8ZmlsZW5hbWU+UFJPVklERVM8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBsaXN0LgorICAgICAgICAgICAgICAgICAgICBsaXN0IGFuZCB0aGVyZWZvcmUgZG9lcyBub3QgbmVlZCB0byBtZW50aW9uIHRoYXQgaXQgcHJvdmlkZXMgaXRzZWxmLgogICAgICAgICAgICAgICAgICAgICBJZiBhIHJlY2lwZSB1c2VzIDxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+LCB0aGUKICAgICAgICAgICAgICAgICAgICAgYWRkaXRpb25hbCBhbGlhc2VzIGFyZSBzeW5vbnltcyBmb3IgdGhlIHJlY2lwZSBhbmQgY2FuCi0gICAgICAgICAgICAgICAgICAgIGJlIHVzZWZ1bCBzYXRpc2Z5aW5nIGRlcGVuZGVuY2llcyBvZiBvdGhlciByZWNpcGVzIGR1cmluZworICAgICAgICAgICAgICAgICAgICBiZSB1c2VmdWwgZm9yIHNhdGlzZnlpbmcgZGVwZW5kZW5jaWVzIG9mIG90aGVyIHJlY2lwZXMgZHVyaW5nCiAgICAgICAgICAgICAgICAgICAgIHRoZSBidWlsZCBhcyBzcGVjaWZpZWQgYnkKICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPjxsaW5rIGxpbmtlbmQ9J3Zhci1ERVBFTkRTJz5ERVBFTkRTPC9saW5rPjwvZmlsZW5hbWU+LgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgogICAgICAgICAgICAgICAgICAgICBDb25zaWRlciB0aGUgZm9sbG93aW5nIGV4YW1wbGUKLSAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT4gc3RhdGVtZW50IGZyb20gYSByZWNpcGUKLSAgICAgICAgICAgICAgICAgICAgZmlsZSA8ZmlsZW5hbWU+bGliYXZfMC44LjExLmJiPC9maWxlbmFtZT46CisgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+IHN0YXRlbWVudCBmcm9tIHRoZSByZWNpcGUKKyAgICAgICAgICAgICAgICAgICAgZmlsZSA8ZmlsZW5hbWU+ZXVkZXZfMy4yLjkuYmI8L2ZpbGVuYW1lPjoKICAgICAgICAgICAgICAgICAgICAgPGxpdGVyYWxsYXlvdXQgY2xhc3M9J21vbm9zcGFjZWQnPgotICAgICBQUk9WSURFUyArPSAibGlicG9zdHByb2MiCisgICAgIFBST1ZJREVTID0gInVkZXYiCiAgICAgICAgICAgICAgICAgICAgIDwvbGl0ZXJhbGxheW91dD4KICAgICAgICAgICAgICAgICAgICAgVGhlIDxmaWxlbmFtZT5QUk9WSURFUzwvZmlsZW5hbWU+IHN0YXRlbWVudCByZXN1bHRzIGluCi0gICAgICAgICAgICAgICAgICAgIHRoZSAibGliYXYiIHJlY2lwZSBhbHNvIGJlaW5nIGtub3duIGFzICJsaWJwb3N0cHJvYyIuCisgICAgICAgICAgICAgICAgICAgIHRoZSAiZXVkZXYiIHJlY2lwZSBhbHNvIGJlaW5nIGF2YWlsYWJsZSBhcyBzaW1wbHkgInVkZXYiLgorCisgICAgICAgICAgICAgICAgICAgIDxub3RlPgorICAgICAgICAgICAgICAgICAgICAgICAgR2l2ZW4gdGhhdCBhIHJlY2lwZSdzIG93biByZWNpcGUgbmFtZSBpcyBhbHJlYWR5CisgICAgICAgICAgICAgICAgICAgICAgICBpbXBsaWNpdGx5IGluIGl0cyBvd24gPGZpbGVuYW1lPlBST1ZJREVTPC9maWxlbmFtZT4gbGlzdCwKKyAgICAgICAgICAgICAgICAgICAgICAgIGl0IGlzIHVubmVjZXNzYXJ5IHRvIGFkZCBhbGlhc2VzIHdpdGggdGhlICIrPSIgb3BlcmF0b3I7CisgICAgICAgICAgICAgICAgICAgICAgICB1c2luZyBhIHNpbXBsZSBhc3NpZ25tZW50IHdpbGwgYmUgc3VmZmljaWVudC4gSW4gb3RoZXIKKyAgICAgICAgICAgICAgICAgICAgICAgIHdvcmRzLCB3aGlsZSB5b3UgY291bGQgd3JpdGU6CisgICAgICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CisgICAgIFBST1ZJREVTICs9ICJ1ZGV2IgorICAgICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgorICAgICAgICAgICAgICAgICAgICAgICAgaW4gdGhlIGFib3ZlLCB0aGUgIis9IiBpcyBvdmVya2lsbCBhbmQgdW5uZWNlc3NhcnkuCisgICAgICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAKICAgICAgICAgICAgICAgICA8cGFyYT4KQEAgLTEzMzgzLDggKzEzNDQ2LDcgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVNLSVBfRklMRURFUFMnPjxnbG9zc3Rlcm0+U0tJUF9GSUxFREVQUzwvZ2xvc3N0ZXJtPgogICAgICAgICAgICAgPGluZm8+Ci0gICAgICAgICAgICAgICAgU0tJUF9GSUxFREVQU1tkb2NdID0gIkVuYWJsZXMgeW91IHRvIHJlbW92ZSBhbGwgZmlsZXMgZnJvbQotICAgICAgICAgICAgICAgIHRoZSAiUHJvdmlkZXMiIHNlY3Rpb24gb2YgYW4gUlBNIHBhY2thZ2UuIgorICAgICAgICAgICAgICAgIFNLSVBfRklMRURFUFNbZG9jXSA9ICJFbmFibGVzIHlvdSB0byByZW1vdmUgYWxsIGZpbGVzIGZyb20gdGhlICdQcm92aWRlcycgc2VjdGlvbiBvZiBhbiBSUE0gcGFja2FnZS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CkBAIC0xNTMzMSw3ICsxNTM5Myw3IEBACiAKICAgICAgICAgPGdsb3NzZW50cnkgaWQ9J3Zhci1UQ0xJQkMnPjxnbG9zc3Rlcm0+VENMSUJDPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgICBUQ0xJQkNbZG9jXSA9ICJTcGVjaWZpZXMgR05VIHN0YW5kYXJkIEMgbGlicmFyeSAobGliYykgdmFyaWFudCB0byB1c2UgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiBZb3UgY2FuIHNlbGVjdCAnZ2xpYmMnLCAnbXVzbCcgb3IgIm5ld2xpYi4iCisgICAgICAgICAgICAgICAgVENMSUJDW2RvY10gPSAiU3BlY2lmaWVzIEdOVSBzdGFuZGFyZCBDIGxpYnJhcnkgKGxpYmMpIHZhcmlhbnQgdG8gdXNlIGR1cmluZyB0aGUgYnVpbGQgcHJvY2Vzcy4gWW91IGNhbiBzZWxlY3QgJ2dsaWJjJywgJ211c2wnIG9yICduZXdsaWInLiIKICAgICAgICAgICAgIDwvaW5mbz4KICAgICAgICAgICAgIDxnbG9zc2RlZj4KICAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij4KQEAgLTE1NjQ2LDkgKzE1NzA4LDkgQEAKIDwhLS0gICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+PGltYWdlZGF0YSBmaWxlcmVmPSJmaWd1cmVzL2RlZmluZS1nZW5lcmljLnBuZyIgLz4gLS0+CiAgICAgICAgICAgICAgICAgICAgIFNwZWNpZmllcyB0aGUgdGFyZ2V0IGNvbnRyb2xsZXIgdG8gdXNlIHdoZW4gcnVubmluZyB0ZXN0cwogICAgICAgICAgICAgICAgICAgICBhZ2FpbnN0IGEgdGVzdCBpbWFnZS4KLSAgICAgICAgICAgICAgICAgICAgVGhlIGRlZmF1bHQgY29udHJvbGxlciB0byB1c2UgaXMgIlFlbXVUYXJnZXQiOgorICAgICAgICAgICAgICAgICAgICBUaGUgZGVmYXVsdCBjb250cm9sbGVyIHRvIHVzZSBpcyAicWVtdSI6CiAgICAgICAgICAgICAgICAgICAgIDxsaXRlcmFsbGF5b3V0IGNsYXNzPSdtb25vc3BhY2VkJz4KLSAgICAgVEVTVF9UQVJHRVQgPSAiUWVtdVRhcmdldCIKKyAgICAgVEVTVF9UQVJHRVQgPSAicWVtdSIKICAgICAgICAgICAgICAgICAgICAgPC9saXRlcmFsbGF5b3V0PgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIApAQCAtMTU2NjcsMjEgKzE1NzI5LDIxIEBACiAgICAgICAgICAgICAgICAgICAgIFlvdSBjYW4gcHJvdmlkZSB0aGUgZm9sbG93aW5nIGFyZ3VtZW50cyB3aXRoCiAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5URVNUX1RBUkdFVDwvZmlsZW5hbWU+OgogICAgICAgICAgICAgICAgICAgICA8aXRlbWl6ZWRsaXN0PgotICAgICAgICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPjxlbXBoYXNpcz4iUWVtdVRhcmdldCI6PC9lbXBoYXNpcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT48cGFyYT48ZW1waGFzaXM+InFlbXUiOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQm9vdHMgYSBRRU1VIGltYWdlIGFuZCBydW5zIHRoZSB0ZXN0cy4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICBTZWUgdGhlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIjx1bGluayB1cmw9JyZZT0NUT19ET0NTX0RFVl9VUkw7I3FlbXUtaW1hZ2UtZW5hYmxpbmctdGVzdHMnPkVuYWJsaW5nIFJ1bnRpbWUgVGVzdHMgb24gUUVNVTwvdWxpbms+IgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3Rpb24gaW4gdGhlIFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNYW51YWwgZm9yIG1vcmUgaW5mb3JtYXRpb24uCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJTaW1wbGVSZW1vdGVUYXJnZXQiOjwvZW1waGFzaXM+CisgICAgICAgICAgICAgICAgICAgICAgICA8bGlzdGl0ZW0+PHBhcmE+PGVtcGhhc2lzPiJzaW1wbGVyZW1vdGUiOjwvZW1waGFzaXM+CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUnVucyB0aGUgdGVzdHMgb24gdGFyZ2V0IGhhcmR3YXJlIHRoYXQgaXMgYWxyZWFkeQogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVwIGFuZCBydW5uaW5nLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFRoZSBoYXJkd2FyZSBjYW4gYmUgb24gdGhlIG5ldHdvcmsgb3IgaXQgY2FuIGJlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYSBkZXZpY2UgcnVubmluZyBhbiBpbWFnZSBvbiBRRU1VLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIFlvdSBtdXN0IGFsc28gc2V0CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVRFU1RfVEFSR0VUX0lQJz48ZmlsZW5hbWU+VEVTVF9UQVJHRVRfSVA8L2ZpbGVuYW1lPjwvbGluaz4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aGVuIHlvdSB1c2UgIlNpbXBsZVJlbW90ZVRhcmdldCIuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2hlbiB5b3UgdXNlICJzaW1wbGVyZW1vdGUiLgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxub3RlPgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBUaGlzIGFyZ3VtZW50IGlzIGRlZmluZWQgaW4KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGZpbGVuYW1lPm1ldGEvbGliL29lcWEvY29udHJvbGxlcnMvc2ltcGxlcmVtb3RlLnB5PC9maWxlbmFtZT4uCkBAIC0xNjQ3Myw3ICsxNjUzNSw3IEBACiAgICAgICAgICAgICAgICAgICAgIEFwcGVuZHMgYSBzdHJpbmcgdG8gdGhlIG5hbWUgb2YgdGhlIGxvY2FsIHZlcnNpb24gb2YgdGhlCiAgICAgICAgICAgICAgICAgICAgIFUtQm9vdCBpbWFnZS4KICAgICAgICAgICAgICAgICAgICAgRm9yIGV4YW1wbGUsIGFzc3VtaW5nIHRoZSB2ZXJzaW9uIG9mIHRoZSBVLUJvb3QgaW1hZ2UKLSAgICAgICAgICAgICAgICAgICAgYnVpbHQgd2FzICIyMDEzLjEwLCB0aGUgZnVsbCB2ZXJzaW9uIHN0cmluZyByZXBvcnRlZCBieQorICAgICAgICAgICAgICAgICAgICBidWlsdCB3YXMgIjIwMTMuMTAiLCB0aGUgZnVsbCB2ZXJzaW9uIHN0cmluZyByZXBvcnRlZCBieQogICAgICAgICAgICAgICAgICAgICBVLUJvb3Qgd291bGQgYmUgIjIwMTMuMTAteW9jdG8iIGdpdmVuIHRoZSBmb2xsb3dpbmcKICAgICAgICAgICAgICAgICAgICAgc3RhdGVtZW50OgogICAgICAgICAgICAgICAgICAgICA8bGl0ZXJhbGxheW91dCBjbGFzcz0nbW9ub3NwYWNlZCc+CkBAIC0xNjc3MSwxOCArMTY4MzMsMjEgQEAKIAogICAgICAgICA8Z2xvc3NlbnRyeSBpZD0ndmFyLVVTRVJBRERfRVJST1JfRFlOQU1JQyc+PGdsb3NzdGVybT5VU0VSQUREX0VSUk9SX0RZTkFNSUM8L2dsb3NzdGVybT4KICAgICAgICAgICAgIDxpbmZvPgotICAgICAgICAgICAgICAgVVNFUkFERF9FUlJPUl9EWU5BTUlDW2RvY10gPSAiSWYgc2V0IHRvICdlcnJvcicsIGZvcmNlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0byBwcm9kdWNlIGFuIGVycm9yIGlmIHRoZSB1c2VyIGlkZW50aWZpY2F0aW9uICh1aWQpIGFuZCBncm91cCBpZGVudGlmaWNhdGlvbiAoZ2lkKSB2YWx1ZXMgYXJlIG5vdCBkZWZpbmVkIGluIGZpbGVzL3Bhc3N3ZCBhbmQgZmlsZXMvZ3JvdXAgZmlsZXMuIElmIHNldCB0byAnd2FybicsIGEgd2FybmluZyB3aWxsIGJlIGlzc3VlZCBpbnN0ZWFkLiIKKyAgICAgICAgICAgICAgIFVTRVJBRERfRVJST1JfRFlOQU1JQ1tkb2NdID0gIklmIHNldCB0byAnZXJyb3InLCBmb3JjZXMgdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gdG8gcHJvZHVjZSBhbiBlcnJvciBpZiB0aGUgdXNlciBpZGVudGlmaWNhdGlvbiAodWlkKSBhbmQgZ3JvdXAgaWRlbnRpZmljYXRpb24gKGdpZCkgdmFsdWVzIGFyZSBub3QgZGVmaW5lZCBpbiBhbnkgb2YgdGhlIGZpbGVzIGxpc3RlZCBpbiBVU0VSQUREX1VJRF9UQUJMRVMgYW5kIFVTRVJBRERfR0lEX1RBQkxFUy4gSWYgc2V0IHRvICd3YXJuJywgYSB3YXJuaW5nIHdpbGwgYmUgaXNzdWVkIGluc3RlYWQuIgogICAgICAgICAgICAgPC9pbmZvPgogICAgICAgICAgICAgPGdsb3NzZGVmPgogICAgICAgICAgICAgICAgIDxwYXJhIHJvbGU9Imdsb3NzZGVmZmlyc3QiPgogPCEtLSAgICAgICAgICAgICAgICA8cGFyYSByb2xlPSJnbG9zc2RlZmZpcnN0Ij48aW1hZ2VkYXRhIGZpbGVyZWY9ImZpZ3VyZXMvZGVmaW5lLWdlbmVyaWMucG5nIiAvPiAtLT4KLSAgICAgICAgICAgICAgICAgICAgSWYgc2V0IHRvICJlcnJvciIsIGZvcmNlcyB0aGUgT3BlbkVtYmVkZGVkIGJ1aWxkIHN5c3RlbSB0bwotICAgICAgICAgICAgICAgICAgICBwcm9kdWNlIGFuIGVycm9yIGlmIHRoZSB1c2VyIGlkZW50aWZpY2F0aW9uCi0gICAgICAgICAgICAgICAgICAgICg8ZmlsZW5hbWU+dWlkPC9maWxlbmFtZT4pIGFuZCBncm91cCBpZGVudGlmaWNhdGlvbgotICAgICAgICAgICAgICAgICAgICAoPGZpbGVuYW1lPmdpZDwvZmlsZW5hbWU+KSB2YWx1ZXMgYXJlIG5vdCBkZWZpbmVkCi0gICAgICAgICAgICAgICAgICAgIGluIDxmaWxlbmFtZT5maWxlcy9wYXNzd2Q8L2ZpbGVuYW1lPgotICAgICAgICAgICAgICAgICAgICBhbmQgPGZpbGVuYW1lPmZpbGVzL2dyb3VwPC9maWxlbmFtZT4gZmlsZXMuCi0gICAgICAgICAgICAgICAgICAgIElmIHNldCB0byAid2FybiIsIGEgd2FybmluZyB3aWxsIGJlIGlzc3VlZCBpbnN0ZWFkLgorCisgICAgICAgICAgICAgICAgICAgIElmIHNldCB0byA8ZmlsZW5hbWU+ZXJyb3I8L2ZpbGVuYW1lPiwgZm9yY2VzIHRoZQorICAgICAgICAgICAgICAgICAgICBPcGVuRW1iZWRkZWQgYnVpbGQgc3lzdGVtIHRvIHByb2R1Y2UgYW4gZXJyb3IgaWYgdGhlIHVzZXIKKyAgICAgICAgICAgICAgICAgICAgaWRlbnRpZmljYXRpb24gKDxmaWxlbmFtZT51aWQ8L2ZpbGVuYW1lPikgYW5kIGdyb3VwCisgICAgICAgICAgICAgICAgICAgIGlkZW50aWZpY2F0aW9uICg8ZmlsZW5hbWU+Z2lkPC9maWxlbmFtZT4pIHZhbHVlcyBhcmUgbm90CisgICAgICAgICAgICAgICAgICAgIGRlZmluZWQgaW4gYW55IG9mIHRoZSBmaWxlcyBsaXN0ZWQKKyAgICAgICAgICAgICAgICAgICAgaW4gPGxpbmsgbGlua2VuZD0ndmFyLVVTRVJBRERfVUlEX1RBQkxFUyc+PGZpbGVuYW1lPlVTRVJBRERfVUlEX1RBQkxFUzwvZmlsZW5hbWU+PC9saW5rPgorICAgICAgICAgICAgICAgICAgICBhbmQgPGxpbmsgbGlua2VuZD0ndmFyLVVTRVJBRERfR0lEX1RBQkxFUyc+PGZpbGVuYW1lPlVTRVJBRERfR0lEX1RBQkxFUzwvZmlsZW5hbWU+PC9saW5rPi4gSWYKKyAgICAgICAgICAgICAgICAgICAgc2V0IHRvIDxmaWxlbmFtZT53YXJuPC9maWxlbmFtZT4sIGEgd2FybmluZyB3aWxsIGJlIGlzc3VlZAorICAgICAgICAgICAgICAgICAgICBpbnN0ZWFkLgogICAgICAgICAgICAgICAgIDwvcGFyYT4KIAogICAgICAgICAgICAgICAgIDxwYXJhPgpAQCAtMTY4MDksNiArMTY4NzQsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgPGxpbmsgbGlua2VuZD0ndmFyLVVTRVJBRERfR0lEX1RBQkxFUyc+PGZpbGVuYW1lPlVTRVJBRERfR0lEX1RBQkxFUzwvZmlsZW5hbWU+PC9saW5rPgogICAgICAgICAgICAgICAgICAgICB2YXJpYWJsZXMuCiAgICAgICAgICAgICAgICAgPC9wYXJhPgorCisgICAgICAgICAgICAgICAgPG5vdGU+CisgICAgICAgICAgICAgICAgICAgIFRoZXJlIGlzIGEgZGlmZmVyZW5jZSBpbiBiZWhhdmlvciBiZXR3ZWVuCisgICAgICAgICAgICAgICAgICAgIHNldHRpbmcgPGZpbGVuYW1lPlVTRVJBRERfRVJST1JfRFlOQU1JQzwvZmlsZW5hbWU+CisgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT5lcnJvcjwvZmlsZW5hbWU+IGFuZCBzZXR0aW5nIGl0CisgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT53YXJuPC9maWxlbmFtZT4uIFdoZW4gaXQgaXMgc2V0CisgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT53YXJuPC9maWxlbmFtZT4sIHRoZSBidWlsZCBzeXN0ZW0gd2lsbCByZXBvcnQgYQorICAgICAgICAgICAgICAgICAgICB3YXJuaW5nIGZvciBldmVyeSB1bmRlZmluZWQgPGZpbGVuYW1lPnVpZDwvZmlsZW5hbWU+IGFuZAorICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+Z2lkPC9maWxlbmFtZT4gaW4gYW55IHJlY2lwZS4gQnV0IHdoZW4gaXQgaXMgc2V0CisgICAgICAgICAgICAgICAgICAgIHRvIDxmaWxlbmFtZT5lcnJvcjwvZmlsZW5hbWU+LCBpdCB3aWxsIG9ubHkgcmVwb3J0IGVycm9ycworICAgICAgICAgICAgICAgICAgICBmb3IgcmVjaXBlcyB0aGF0IGFyZSBhY3R1YWxseSBidWlsdC4gVGhpcyBzYXZlcyB5b3UgZnJvbQorICAgICAgICAgICAgICAgICAgICBoYXZpbmcgdG8gYWRkIHN0YXRpYyBJRHMgZm9yIHJlY2lwZXMgdGhhdCB5b3Uga25vdyB3aWxsCisgICAgICAgICAgICAgICAgICAgIG5ldmVyIGJlIGJ1aWx0LgorICAgICAgICAgICAgICAgIDwvbm90ZT4KICAgICAgICAgICAgIDwvZ2xvc3NkZWY+CiAgICAgICAgIDwvZ2xvc3NlbnRyeT4KIApAQCAtMTcxMDgsNyArMTcxODcsNyBAQAogICAgICAgICAgICAgICAgICAgICAiPHVsaW5rIHVybD0nJllPQ1RPX0RPQ1NfREVWX1VSTDsjY3JlYXRpbmctcGFydGl0aW9uZWQtaW1hZ2VzLXVzaW5nLXdpYyc+Q3JlYXRpbmcgUGFydGl0aW9uZWQgSW1hZ2VzIFVzaW5nIFdpYzwvdWxpbms+IgogICAgICAgICAgICAgICAgICAgICBzZWN0aW9uIGluIHRoZSBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbC4KICAgICAgICAgICAgICAgICAgICAgRm9yIGRldGFpbHMgb24gdGhlIGtpY2tzdGFydCBmaWxlIGZvcm1hdCwgc2VlIHRoZQotICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWtpY2tzdGFydCc+T3BlbkVtYmVkZGVkIEtpY2tzdGFydCAoPGZpbGVuYW1lPi53a3M8L2ZpbGVuYW1lPikgUmVmZXJlbmNlPC9saW5rPgorICAgICAgICAgICAgICAgICAgICAiPGxpbmsgbGlua2VuZD0ncmVmLWtpY2tzdGFydCc+T3BlbkVtYmVkZGVkIEtpY2tzdGFydCAoPGZpbGVuYW1lPi53a3M8L2ZpbGVuYW1lPikgUmVmZXJlbmNlPC9saW5rPiIKICAgICAgICAgICAgICAgICAgICAgQ2hhcHRlci4KICAgICAgICAgICAgICAgICA8L3BhcmE+CiAgICAgICAgICAgICA8L2dsb3NzZGVmPgpAQCAtMTcxNzgsOCArMTcyNTcsNyBAQAogCiAgICAgICAgIDxnbG9zc2VudHJ5IGlkPSd2YXItWFNFUlZFUic+PGdsb3NzdGVybT5YU0VSVkVSPC9nbG9zc3Rlcm0+CiAgICAgICAgICAgICA8aW5mbz4KLSAgICAgICAgICAgICAgIFhTRVJWRVJbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHBhY2thZ2VzIHRoYXQgc2hvdWxkIGJlIGluc3RhbGxlZAotICAgICAgICAgICAgICAgdG8gcHJvdmlkZSBhbiBYIHNlcnZlciBhbmQgZHJpdmVycyBmb3IgdGhlIGN1cnJlbnQgbWFjaGluZS4iCisgICAgICAgICAgICAgICBYU0VSVkVSW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBwYWNrYWdlcyB0aGF0IHNob3VsZCBiZSBpbnN0YWxsZWQgdG8gcHJvdmlkZSBhbiBYIHNlcnZlciBhbmQgZHJpdmVycyBmb3IgdGhlIGN1cnJlbnQgbWFjaGluZS4iCiAgICAgICAgICAgICA8L2luZm8+CiAgICAgICAgICAgICA8Z2xvc3NkZWY+CiAgICAgICAgICAgICAgICAgPHBhcmEgcm9sZT0iZ2xvc3NkZWZmaXJzdCI+CmRpZmYgLS1naXQgYS9wb2t5L2RvY3VtZW50YXRpb24vc2RrLW1hbnVhbC9zZGstYXBwZW5kaXgtb2J0YWluLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1vYnRhaW4ueG1sCmluZGV4IDc2NWMwZjIuLjg2YjZkN2QgMTAwNjQ0Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1vYnRhaW4ueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1hcHBlbmRpeC1vYnRhaW4ueG1sCkBAIC0yOTcsOCArMjk3LDcgQEAKIAogICAgICAgICAgPHJlcGxhY2VhYmxlPmFyY2g8L3JlcGxhY2VhYmxlPiBpcyBhIHN0cmluZyByZXByZXNlbnRpbmcgdGhlIHRhcmdldCBhcmNoaXRlY3R1cmU6CiAgICAgICAgICAgICAgICAgICAgYmVhZ2xlYm9uZS15b2N0bywgYmVhZ2xlYm9uZS15b2N0by1sc2IsIGVkZ2Vyb3V0ZXIsIGVkZ2Vyb3V0ZXItbHNiLAotICAgICAgICAgICAgICAgICAgIGdlbmVyaWN4ODYsIGdlbmVyaWN4ODYtNjQsIGdlbmVyaWN4ODYtNjQtbHNiLCBnZW5lcmljeDg2LWxzYiwKLSAgICAgICAgICAgICAgICAgICBtcGM4MzE1ZS1yZGIsIG1wYzgzMTVlLXJkYi1sc2IsIGFuZCBxZW11Ki4KKyAgICAgICAgICAgICAgICAgICBnZW5lcmljeDg2LCBnZW5lcmljeDg2LTY0LCBnZW5lcmljeDg2LTY0LWxzYiwgZ2VuZXJpY3g4Ni1sc2IgYW5kIHFlbXUqLgogCiA8IS0tPgogICAgICAgICAgPHJlcGxhY2VhYmxlPmRhdGVfdGltZTwvcmVwbGFjZWFibGU+IGlzIGEgZGF0ZSBhbmQgdGltZSBzdGFtcC4KZGlmZiAtLWdpdCBhL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1tYW51YWwueG1sIGIvcG9reS9kb2N1bWVudGF0aW9uL3Nkay1tYW51YWwvc2RrLW1hbnVhbC54bWwKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCA4ZDVmNmVjLi41Mzc2NjNkCi0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1tYW51YWwueG1sCisrKyBiL3Bva3kvZG9jdW1lbnRhdGlvbi9zZGstbWFudWFsL3Nkay1tYW51YWwueG1sCkBAIC0yMiwxMSArMjIsMTAgQEAKIAogICAgICAgICA8YXV0aG9yZ3JvdXA+CiAgICAgICAgICAgICA8YXV0aG9yPgotICAgICAgICAgICAgICAgIDxmaXJzdG5hbWU+U2NvdHQ8L2ZpcnN0bmFtZT4gPHN1cm5hbWU+UmlmZW5iYXJrPC9zdXJuYW1lPgogICAgICAgICAgICAgICAgIDxhZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICAgICAgPG9yZ25hbWU+U2NvdHR5J3MgRG9jdW1lbnRhdGlvbiBTZXJ2aWNlcywgSU5DPC9vcmduYW1lPgorICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT4mT1JHTkFNRTs8L29yZ25hbWU+CiAgICAgICAgICAgICAgICAgPC9hZmZpbGlhdGlvbj4KLSAgICAgICAgICAgICAgICA8ZW1haWw+c3JpZmVuYmFya0BnbWFpbC5jb208L2VtYWlsPgorICAgICAgICAgICAgICAgIDxlbWFpbD4mT1JHRU1BSUw7PC9lbWFpbD4KICAgICAgICAgICAgIDwvYXV0aG9yPgogICAgICAgICA8L2F1dGhvcmdyb3VwPgogCkBAIC0zNCw3ICszMyw3IEBACiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4yLjE8L3Jldm51bWJlcj4KICAgICAgICAgICAgICAgICA8ZGF0ZT5BcHJpbCAyMDE2PC9kYXRlPgotICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAyLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlRoZSBpbml0aWFsIGRvY3VtZW50IHJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMi4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+Mi4yPC9yZXZudW1iZXI+CkBAIC02OCw5ICs2NywxNCBAQAogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjMuMDwvcmV2bnVtYmVyPgotICAgICAgICAgICAgICAgIDxkYXRlPiZSRUxfTU9OVEhfWUVBUjs8L2RhdGU+CisgICAgICAgICAgICAgICAgPGRhdGU+T2N0b2JlciAyMDE5PC9kYXRlPgogICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjAgUmVsZWFzZS48L3JldnJlbWFyaz4KICAgICAgICAgICAgIDwvcmV2aXNpb24+CisgICAgICAgICAgICA8cmV2aXNpb24+CisgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjE8L3Jldm51bWJlcj4KKyAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxyZXZyZW1hcms+UmVsZWFzZWQgd2l0aCB0aGUgWW9jdG8gUHJvamVjdCAzLjEgUmVsZWFzZS48L3JldnJlbWFyaz4KKyAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgPC9yZXZoaXN0b3J5PgogCiAgICAgPGNvcHlyaWdodD4KQEAgLTkyLDcgKzk2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAogICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgogICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKICAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KQEAgLTEwOSwxOCArMTEzLDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCiAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCiAgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcwotICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIChvciBhbnkgb3RoZXIgWW9jdG8gUHJvamVjdCkgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFpbGluZyBsaXN0IGF0CisgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb2NzQGxpc3RzLnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICBsb2cgaW50byB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KICAgICA8L2xlZ2Fsbm90aWNlPgpkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLnhtbCBiL3Bva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC54bWwKb2xkIG1vZGUgMTAwNjQ0Cm5ldyBtb2RlIDEwMDc1NQppbmRleCBkN2I0YmNlLi5lNmQ0MjQ1Ci0tLSBhL3Bva3kvZG9jdW1lbnRhdGlvbi90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC54bWwKKysrIGIvcG9reS9kb2N1bWVudGF0aW9uL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLnhtbApAQCAtMjIsMTEgKzIyLDEwIEBACiAKICAgICAgICAgPGF1dGhvcmdyb3VwPgogICAgICAgICAgICAgPGF1dGhvcj4KLSAgICAgICAgICAgICAgICA8Zmlyc3RuYW1lPktyaXN0aTwvZmlyc3RuYW1lPiA8c3VybmFtZT5SaWZlbmJhcms8L3N1cm5hbWU+CiAgICAgICAgICAgICAgICAgPGFmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgICAgICA8b3JnbmFtZT5TY290dHkncyBEb2N1bWVudGF0aW9uIFNlcnZpY2VzLCBJTkM8L29yZ25hbWU+CisgICAgICAgICAgICAgICAgICAgIDxvcmduYW1lPiZPUkdOQU1FOzwvb3JnbmFtZT4KICAgICAgICAgICAgICAgICA8L2FmZmlsaWF0aW9uPgotICAgICAgICAgICAgICAgIDxlbWFpbD5rcmlzdGlAYnV6emNvbGxlY3RpdmVtYXJrZXRpbmcuY29tPC9lbWFpbD4KKyAgICAgICAgICAgICAgICA8ZW1haWw+Jk9SR0VNQUlMOzwvZW1haWw+CiAgICAgICAgICAgICA8L2F1dGhvcj4KICAgICAgICAgPC9hdXRob3Jncm91cD4KIApAQCAtMzQsNyArMzMsNyBAQAogICAgICAgICAgICAgPHJldmlzaW9uPgogICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+MS44PC9yZXZudW1iZXI+CiAgICAgICAgICAgICAgICAgPGRhdGU+QXByaWwgMjAxNTwvZGF0ZT4KLSAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMS44IFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICAgICAgPHJldnJlbWFyaz5UaGUgaW5pdGlhbCBkb2N1bWVudCByZWxlYXNlZCB3aXRoIHRoZSBZb2N0byBQcm9qZWN0IDEuOCBSZWxlYXNlLjwvcmV2cmVtYXJrPgogICAgICAgICAgICAgPC9yZXZpc2lvbj4KICAgICAgICAgICAgIDxyZXZpc2lvbj4KICAgICAgICAgICAgICAgICA8cmV2bnVtYmVyPjIuMDwvcmV2bnVtYmVyPgpAQCAtNzgsOSArNzcsMTQgQEAKICAgICAgICAgICAgIDwvcmV2aXNpb24+CiAgICAgICAgICAgICA8cmV2aXNpb24+CiAgICAgICAgICAgICAgICAgPHJldm51bWJlcj4zLjA8L3Jldm51bWJlcj4KLSAgICAgICAgICAgICAgICA8ZGF0ZT4mUkVMX01PTlRIX1lFQVI7PC9kYXRlPgorICAgICAgICAgICAgICAgIDxkYXRlPk9jdG9iZXIgMjAxOTwvZGF0ZT4KICAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4wIFJlbGVhc2UuPC9yZXZyZW1hcms+CiAgICAgICAgICAgICA8L3JldmlzaW9uPgorICAgICAgICAgICAgPHJldmlzaW9uPgorICAgICAgICAgICAgICAgIDxyZXZudW1iZXI+My4xPC9yZXZudW1iZXI+CisgICAgICAgICAgICAgICAgPGRhdGU+JlJFTF9NT05USF9ZRUFSOzwvZGF0ZT4KKyAgICAgICAgICAgICAgICA8cmV2cmVtYXJrPlJlbGVhc2VkIHdpdGggdGhlIFlvY3RvIFByb2plY3QgMy4xIFJlbGVhc2UuPC9yZXZyZW1hcms+CisgICAgICAgICAgICA8L3JldmlzaW9uPgogICAgICAgIDwvcmV2aGlzdG9yeT4KIAogICAgIDxjb3B5cmlnaHQ+CkBAIC0xMDIsNyArMTA2LDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdC4KICAgICAgICAgICAgICAgICAgICAgICAgVG8gYmUgc3VyZSB5b3UgaGF2ZSB0aGUgbGF0ZXN0IHZlcnNpb24gb2YgdGhlIG1hbnVhbAogICAgICAgICAgICAgICAgICAgICAgICBmb3IgdGhpcyByZWxlYXNlLCBnbyB0byB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIGZyb20gdGhhdCBzaXRlLgogICAgICAgICAgICAgICAgICAgICAgICBNYW51YWxzIGZyb20gdGhlIHNpdGUgYXJlIG1vcmUgdXAtdG8tZGF0ZSB0aGFuIG1hbnVhbHMKICAgICAgICAgICAgICAgICAgICAgICAgZGVyaXZlZCBmcm9tIHRoZSBZb2N0byBQcm9qZWN0IHJlbGVhc2VkIFRBUiBmaWxlcy4KQEAgLTExOSwxOCArMTIzLDIwIEBACiAgICAgICAgICAgICAgICAgICAgICAgIHBhZ2UuCiAgICAgICAgICAgICAgICAgICAgICAgIElmIHlvdSBuZWVkIGEgdmVyc2lvbiBvZiB0aGlzIG1hbnVhbCBmb3IgYSBkaWZmZXJlbnQKICAgICAgICAgICAgICAgICAgICAgICAgWW9jdG8gUHJvamVjdCByZWxlYXNlLCB2aXNpdCB0aGUKLSAgICAgICAgICAgICAgICAgICAgICAgPHVsaW5rIHVybD0nJllPQ1RPX0hPTUVfVVJMOy9kb2N1bWVudGF0aW9uJz5Zb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gcGFnZTwvdWxpbms+CisgICAgICAgICAgICAgICAgICAgICAgIDx1bGluayB1cmw9JyZZT0NUT19ET0NTX1VSTDsnPllvY3RvIFByb2plY3QgZG9jdW1lbnRhdGlvbiBwYWdlPC91bGluaz4KICAgICAgICAgICAgICAgICAgICAgICAgYW5kIHNlbGVjdCB0aGUgbWFudWFsIHNldCBieSB1c2luZyB0aGUKICAgICAgICAgICAgICAgICAgICAgICAgIkFDVElWRSBSRUxFQVNFUyBET0NVTUVOVEFUSU9OIiBvciAiRE9DVU1FTlRTIEFSQ0hJVkUiCiAgICAgICAgICAgICAgICAgICAgICAgIHB1bGwtZG93biBtZW51cy4KICAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+Ci0gICAgICAgICAgICAgICAgICAgPGxpc3RpdGVtPjxwYXJhPgorICAgICAgICAgICAgICAgICAgIDxsaXN0aXRlbT4KKyAgICAgICAgICAgICAgICAgICAgICAgPHBhcmE+CiAgICAgICAgICAgICAgICAgICAgICAgIFRvIHJlcG9ydCBhbnkgaW5hY2N1cmFjaWVzIG9yIHByb2JsZW1zIHdpdGggdGhpcwotICAgICAgICAgICAgICAgICAgICAgICBtYW51YWwsIHNlbmQgYW4gZW1haWwgdG8gdGhlIFlvY3RvIFByb2plY3QKLSAgICAgICAgICAgICAgICAgICAgICAgZGlzY3Vzc2lvbiBncm91cCBhdAotICAgICAgICAgICAgICAgICAgICAgICA8ZmlsZW5hbWU+eW9jdG9AeW9jdG9wcm9qZWN0LmNvbTwvZmlsZW5hbWU+IG9yIGxvZyBpbnRvCi0gICAgICAgICAgICAgICAgICAgICAgIHRoZSBmcmVlbm9kZSA8ZmlsZW5hbWU+I3lvY3RvPC9maWxlbmFtZT4gY2hhbm5lbC4KLSAgICAgICAgICAgICAgICAgICAgICAgPC9wYXJhPjwvbGlzdGl0ZW0+CisgICAgICAgICAgICAgICAgICAgICAgIChvciBhbnkgb3RoZXIgWW9jdG8gUHJvamVjdCkgbWFudWFsLCBzZW5kIGFuIGVtYWlsIHRvCisgICAgICAgICAgICAgICAgICAgICAgIHRoZSBZb2N0byBQcm9qZWN0IGRvY3VtZW50YXRpb24gbWFpbGluZyBsaXN0IGF0CisgICAgICAgICAgICAgICAgICAgICAgIDxmaWxlbmFtZT5kb2NzQGxpc3RzLnlvY3RvcHJvamVjdC5vcmc8L2ZpbGVuYW1lPiBvcgorICAgICAgICAgICAgICAgICAgICAgICBsb2cgaW50byB0aGUgZnJlZW5vZGUgPGZpbGVuYW1lPiN5b2N0bzwvZmlsZW5hbWU+IGNoYW5uZWwuCisgICAgICAgICAgICAgICAgICAgICAgIDwvcGFyYT4KKyAgICAgICAgICAgICAgICAgICA8L2xpc3RpdGVtPgogICAgICAgICAgICAgICAgPC9pdGVtaXplZGxpc3Q+CiAgICAgICAgICAgIDwvbm90ZT4KIApkaWZmIC0tZ2l0IGEvcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL21lZ2EtbWFudWFsLnNlZCBiL3Bva3kvZG9jdW1lbnRhdGlvbi90b29scy9tZWdhLW1hbnVhbC5zZWQKaW5kZXggMzc0ZDhlNy4uYjFlYTllZCAxMDA2NDQKLS0tIGEvcG9reS9kb2N1bWVudGF0aW9uL3Rvb2xzL21lZ2EtbWFudWFsLnNlZAorKysgYi9wb2t5L2RvY3VtZW50YXRpb24vdG9vbHMvbWVnYS1tYW51YWwuc2VkCkBAIC0xLDM2ICsxLDM2IEBACiAjIFByb2Nlc3NlcyBiaXRiYWtlLXVzZXItbWFudWFsICg8d29yZD4tPHdvcmQ+LTx3b3JkPiBzdHlsZSkuCiAjIFRoaXMgc3R5bGUgaXMgZm9yIG1hbnVhbCB0aHJlZS13b3JkIGZvbGRlcnMsIHdoaWNoIGN1cnJlbnRseSBpcyBvbmx5IHRoZSBCaXRCYWtlIFVzZXIgTWFudWFsLgogIyBXZSB1c2VkIHRvIGhhdmUgdGhlICJ5b2N0by1wcm9qZWN0LXFzIiBhbmQgInBva3ktcmVmLW1hbnVhbCIgZm9sZGVycyBidXQgbm8gbG9uZ2VyIGRvLgotIyBzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL1thLXpdKi1bYS16XSotW2Etel0qL1thLXpdKi1bYS16XSotW2Etel0qLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKLXNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKKyMgc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9bYS16XSotW2Etel0qLVthLXpdKi9bYS16XSotW2Etel0qLVthLXpdKi5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL2JpdGJha2UtdXNlci1tYW51YWwvYml0YmFrZS11c2VyLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCiAKICMgUHJvY2Vzc2VzIGFsbCBvdGhlciBtYW51YWxzICg8d29yZD4tPHdvcmQ+IHN0eWxlKS4KICMgVGhpcyBzdHlsZSBpcyBmb3IgbWFudWFsIGZvbGRlcnMgdGhhdCB1c2UgdHdvIHdvcmQsIHdoaWNoIGlzIHRoZSBzdGFuZGFyZCBub3cgKGUuZy4gInJlZi1tYW51YWwiKS4KICMgSGVyZSBpcyB0aGUgb25lLWxpbmVyOgotIyBzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL1thLXpdKi1bYS16XSovW2Etel0qLVthLXpdKi5odG1sI0AibGluayIgaHJlZj0iI0BnCisjIHNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvW2Etel0qLVthLXpdKi9bYS16XSotW2Etel0qLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKIAotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9zZGstbWFudWFsL3Nkay1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9ic3AtZ3VpZGUvYnNwLWd1aWRlLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKLXNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvZGV2LW1hbnVhbC9kZXYtbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKLXNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCi1zQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL2JyaWVmLXlvY3RvcHJvamVjdHFzL2JyaWVmLXlvY3RvcHJvamVjdHFzLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKLXNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAva2VybmVsLWRldi9rZXJuZWwtZGV2Lmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKLXNAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9yZWYtbWFudWFsL3JlZi1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZwotc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL3Nkay1tYW51YWwvc2RrLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL2JzcC1ndWlkZS9ic3AtZ3VpZGUuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9kZXYtbWFudWFsL2Rldi1tYW51YWwuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9vdmVydmlldy1tYW51YWwvb3ZlcnZpZXctbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKK3NAInVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9rZXJuZWwtZGV2L2tlcm5lbC1kZXYuaHRtbCNAImxpbmsiIGhyZWY9IiNAZworc0AidWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL3JlZi1tYW51YWwvcmVmLW1hbnVhbC5odG1sI0AibGluayIgaHJlZj0iI0BnCitzQCJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLmh0bWwjQCJsaW5rIiBocmVmPSIjQGcKIAogIyBQcm9jZXNzIGNhc2VzIHdoZXJlIGp1c3QgYW4gZXh0ZXJuYWwgbWFudWFsIGlzIHJlZmVyZW5jZWQgd2l0aG91dCBhbiBpZCBhbmNob3IKLXNAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvYnJpZWYteW9jdG9wcm9qZWN0cXMvYnJpZWYteW9jdG9wcm9qZWN0cXMuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IFF1aWNrIEJ1aWxkPC9hPkBZb2N0byBQcm9qZWN0IFF1aWNrIEJ1aWxkQGcKLXNAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvYml0YmFrZS11c2VyLW1hbnVhbC9iaXRiYWtlLXVzZXItbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+Qml0QmFrZSBVc2VyIE1hbnVhbDwvYT5AQml0QmFrZSBVc2VyIE1hbnVhbEBnCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL2Rldi1tYW51YWwvZGV2LW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IERldmVsb3BtZW50IFRhc2tzIE1hbnVhbEBnCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL292ZXJ2aWV3LW1hbnVhbC9vdmVydmlldy1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IE92ZXJ2aWV3IGFuZCBDb25jZXB0cyBNYW51YWw8L2E+QFlvY3RvIHByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbEBnCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL3Nkay1tYW51YWwvc2RrLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESyk8L2E+QFlvY3RvIFByb2plY3QgQXBwbGljYXRpb24gRGV2ZWxvcG1lbnQgYW5kIHRoZSBFeHRlbnNpYmxlIFNvZnR3YXJlIERldmVsb3BtZW50IEtpdCAoZVNESylAZwotc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9ic3AtZ3VpZGUvYnNwLWd1aWRlLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGU8L2E+QFlvY3RvIFByb2plY3QgQm9hcmQgU3VwcG9ydCBQYWNrYWdlIChCU1ApIERldmVsb3BlcidzIEd1aWRlQGcKLXNAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvcHJvZmlsZS1tYW51YWwvcHJvZmlsZS1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IFByb2ZpbGluZyBhbmQgVHJhY2luZyBNYW51YWw8L2E+QFlvY3RvIFByb2plY3QgUHJvZmlsaW5nIGFuZCBUcmFjaW5nIE1hbnVhbEBnCi1zQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4wL2tlcm5lbC1kZXYva2VybmVsLWRldi5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgTGludXggS2VybmVsIERldmVsb3BtZW50IE1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsQGcKLXNAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjAvcmVmLW1hbnVhbC9yZWYtbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBSZWZlcmVuY2UgTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWxAZwotc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC90b2FzdGVyLW1hbnVhbC90b2FzdGVyLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPlRvYXN0ZXIgVXNlciBNYW51YWw8L2E+QFRvYXN0ZXIgVXNlciBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9icmllZi15b2N0b3Byb2plY3Rxcy9icmllZi15b2N0b3Byb2plY3Rxcy5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgUXVpY2sgQnVpbGQ8L2E+QFlvY3RvIFByb2plY3QgUXVpY2sgQnVpbGRAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9iaXRiYWtlLXVzZXItbWFudWFsL2JpdGJha2UtdXNlci1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5CaXRCYWtlIFVzZXIgTWFudWFsPC9hPkBCaXRCYWtlIFVzZXIgTWFudWFsQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvZGV2LW1hbnVhbC9kZXYtbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBEZXZlbG9wbWVudCBUYXNrcyBNYW51YWw8L2E+QFlvY3RvIFByb2plY3QgRGV2ZWxvcG1lbnQgVGFza3MgTWFudWFsQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvb3ZlcnZpZXctbWFudWFsL292ZXJ2aWV3LW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgT3ZlcnZpZXcgYW5kIENvbmNlcHRzIE1hbnVhbDwvYT5AWW9jdG8gcHJvamVjdCBPdmVydmlldyBhbmQgQ29uY2VwdHMgTWFudWFsQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEvc2RrLW1hbnVhbC9zZGstbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKTwvYT5AWW9jdG8gUHJvamVjdCBBcHBsaWNhdGlvbiBEZXZlbG9wbWVudCBhbmQgdGhlIEV4dGVuc2libGUgU29mdHdhcmUgRGV2ZWxvcG1lbnQgS2l0IChlU0RLKUBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL2JzcC1ndWlkZS9ic3AtZ3VpZGUuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IEJvYXJkIFN1cHBvcnQgUGFja2FnZSAoQlNQKSBEZXZlbG9wZXIncyBHdWlkZTwvYT5AWW9jdG8gUHJvamVjdCBCb2FyZCBTdXBwb3J0IFBhY2thZ2UgKEJTUCkgRGV2ZWxvcGVyJ3MgR3VpZGVAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9wcm9maWxlLW1hbnVhbC9wcm9maWxlLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgUHJvZmlsaW5nIGFuZCBUcmFjaW5nIE1hbnVhbDwvYT5AWW9jdG8gUHJvamVjdCBQcm9maWxpbmcgYW5kIFRyYWNpbmcgTWFudWFsQGcKK3NAPGEgY2xhc3M9InVsaW5rIiBocmVmPSJodHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8zLjEva2VybmVsLWRldi9rZXJuZWwtZGV2Lmh0bWwiIHRhcmdldD0iX3RvcCI+WW9jdG8gUHJvamVjdCBMaW51eCBLZXJuZWwgRGV2ZWxvcG1lbnQgTWFudWFsPC9hPkBZb2N0byBQcm9qZWN0IExpbnV4IEtlcm5lbCBEZXZlbG9wbWVudCBNYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9yZWYtbWFudWFsL3JlZi1tYW51YWwuaHRtbCIgdGFyZ2V0PSJfdG9wIj5Zb2N0byBQcm9qZWN0IFJlZmVyZW5jZSBNYW51YWw8L2E+QFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIE1hbnVhbEBnCitzQDxhIGNsYXNzPSJ1bGluayIgaHJlZj0iaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMy4xL3RvYXN0ZXItbWFudWFsL3RvYXN0ZXItbWFudWFsLmh0bWwiIHRhcmdldD0iX3RvcCI+VG9hc3RlciBVc2VyIE1hbnVhbDwvYT5AVG9hc3RlciBVc2VyIE1hbnVhbEBnCiAKICMgUHJvY2VzcyBhIHNpbmdsZSwgcm91Z2Ugb2NjdXJyZW5jZSBvZiBhIGxpbmtlZCByZWZlcmVuY2UgdG8gdGhlIE1lZ2EtTWFudWFsLgotc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMC9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgTWVnYS1NYW51YWw8L2E+QFlvY3RvIFByb2plY3QgTWVnYS1NYW51YWxAZworc0A8YSBjbGFzcz0idWxpbmsiIGhyZWY9Imh0dHA6Ly93d3cueW9jdG9wcm9qZWN0Lm9yZy9kb2NzLzMuMS9tZWdhLW1hbnVhbC9tZWdhLW1hbnVhbC5odG1sIiB0YXJnZXQ9Il90b3AiPllvY3RvIFByb2plY3QgTWVnYS1NYW51YWw8L2E+QFlvY3RvIFByb2plY3QgTWVnYS1NYW51YWxAZwogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtcG9reS9SRUFETUUucG9reSBiL3Bva3kvbWV0YS1wb2t5L1JFQURNRS5wb2t5CmluZGV4IDIyMDQ4MDEuLjJiYTNiNWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS1wb2t5L1JFQURNRS5wb2t5CisrKyBiL3Bva3kvbWV0YS1wb2t5L1JFQURNRS5wb2t5CkBAIC01MywxMSArNTMsMTEgQEAKIAogZG9jdW1lbnRhdGlvbjoKICAgICBHaXQgcmVwb3NpdG9yeTogaHR0cDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2NnaXQvY2dpdC5jZ2kveW9jdG8tZG9jcy8KLSAgICBNYWlsaW5nIGxpc3Q6IHlvY3RvQHlvY3RvcHJvamVjdC5vcmcKKyAgICBNYWlsaW5nIGxpc3Q6IGRvY3NAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZwogCiBtZXRhLXBva3ksIG1ldGEteW9jdG8tYnNwOgogICAgIEdpdCByZXBvc2l0b3J5OiBodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9tZXRhLXlvY3RvKC1ic3ApCi0gICAgTWFpbGluZyBsaXN0OiBwb2t5QHlvY3RvcHJvamVjdC5vcmcKKyAgICBNYWlsaW5nIGxpc3Q6IHBva3lAbGlzdHMueW9jdG9wcm9qZWN0Lm9yZwogCiBFdmVyeXRoaW5nIGVsc2Ugc2hvdWxkIGJlIHNlbnQgdG8gdGhlIE9wZW5FbWJlZGRlZCBDb3JlIG1haWxpbmcgbGlzdC4gIElmIGluCiBkb3VidCwgY2hlY2sgdGhlIG9lLWNvcmUgZ2l0IHJlcG9zaXRvcnkgZm9yIHRoZSBjb250ZW50IHlvdSBpbnRlbmQgdG8gbW9kaWZ5LgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vaW5jbHVkZS9wb2t5LWRpc3Ryby1hbHQtdGVzdC1jb25maWcuaW5jIGIvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vaW5jbHVkZS9wb2t5LWRpc3Ryby1hbHQtdGVzdC1jb25maWcuaW5jCmluZGV4IDk5MjZjMWIuLjBiMDQxMmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL2luY2x1ZGUvcG9reS1kaXN0cm8tYWx0LXRlc3QtY29uZmlnLmluYworKysgYi9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9pbmNsdWRlL3Bva3ktZGlzdHJvLWFsdC10ZXN0LWNvbmZpZy5pbmMKQEAgLTIsNyArMiw3IEBACiBESVNUUk9fRkVBVFVSRVNfYXBwZW5kID0gIiBwYW0iCiAKICMgVXNlIHRoZSBMVFNJIEtlcm5lbAotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjQuMTklIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjUuNCUiCiAKICMgRW5zdXJlIHRoZSBrZXJuZWwgbmZzIHNlcnZlciBpcyBlbmFibGVkCiBLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3BuLWxpbnV4LXlvY3RvID0gIiBmZWF0dXJlcy9uZnNkL25mc2QtZW5hYmxlLnNjYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZiBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvZGlzdHJvL3Bva3kuY29uZgppbmRleCA2MTk0MTQyLi45MTc3OWU0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEtcG9reS9jb25mL2Rpc3Ryby9wb2t5LmNvbmYKKysrIGIvcG9reS9tZXRhLXBva3kvY29uZi9kaXN0cm8vcG9reS5jb25mCkBAIC0xLDExICsxLDExIEBACiBESVNUUk8gPSAicG9reSIKIERJU1RST19OQU1FID0gIlBva3kgKFlvY3RvIFByb2plY3QgUmVmZXJlbmNlIERpc3RybykiCi1ESVNUUk9fVkVSU0lPTiA9ICIzLjAiCi1ESVNUUk9fQ09ERU5BTUUgPSAiemV1cyIKK0RJU1RST19WRVJTSU9OID0gIjMuMSIKK0RJU1RST19DT0RFTkFNRSA9ICJkdW5mZWxsIgogU0RLX1ZFTkRPUiA9ICItcG9reXNkayIKIFNES19WRVJTSU9OID0gIiR7QGQuZ2V0VmFyKCdESVNUUk9fVkVSU0lPTicpLnJlcGxhY2UoJ3NuYXBzaG90LSR7REFURX0nLCAnc25hcHNob3QnKX0iCiAKLU1BSU5UQUlORVIgPSAiUG9reSA8cG9reUB5b2N0b3Byb2plY3Qub3JnPiIKK01BSU5UQUlORVIgPSAiUG9reSA8cG9reUBsaXN0cy55b2N0b3Byb2plY3Qub3JnPiIKIAogVEFSR0VUX1ZFTkRPUiA9ICItcG9reSIKIApAQCAtMjEsNyArMjEsNyBAQAogCiBESVNUUk9fRkVBVFVSRVMgPz0gIiR7RElTVFJPX0ZFQVRVUkVTX0RFRkFVTFR9ICR7UE9LWV9ERUZBVUxUX0RJU1RST19GRUFUVVJFU30iCiAKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI1LjIlIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjUuNCUiCiAKIFNES19OQU1FID0gIiR7RElTVFJPfS0ke1RDTElCQ30tJHtTREtNQUNISU5FfS0ke0lNQUdFX0JBU0VOQU1FfS0ke1RVTkVfUEtHQVJDSH0tJHtNQUNISU5FfSIKIFNES1BBVEggPSAiL29wdC8ke0RJU1RST30vJHtTREtfVkVSU0lPTn0iCkBAIC01MiwxMyArNTIsMTQgQEAKIFNBTklUWV9URVNURURfRElTVFJPUyA/PSAiIFwKICAgICAgICAgICAgIHBva3ktMi43IFxuIFwKICAgICAgICAgICAgIHBva3ktMy4wIFxuIFwKKyAgICAgICAgICAgIHBva3ktMy4xIFxuIFwKICAgICAgICAgICAgIHVidW50dS0xNi4wNCBcbiBcCiAgICAgICAgICAgICB1YnVudHUtMTguMDQgXG4gXAogICAgICAgICAgICAgdWJ1bnR1LTE5LjA0IFxuIFwKLSAgICAgICAgICAgIGZlZG9yYS0yOCBcbiBcCi0gICAgICAgICAgICBmZWRvcmEtMjkgXG4gXAogICAgICAgICAgICAgZmVkb3JhLTMwIFxuIFwKKyAgICAgICAgICAgIGZlZG9yYS0zMSBcbiBcCiAgICAgICAgICAgICBjZW50b3MtNyBcbiBcCisgICAgICAgICAgICBjZW50b3MtOCBcbiBcCiAgICAgICAgICAgICBkZWJpYW4tOCBcbiBcCiAgICAgICAgICAgICBkZWJpYW4tOSBcbiBcCiAgICAgICAgICAgICBkZWJpYW4tMTAgXG4gXApAQCAtODcsMyArODgsOCBAQAogcmVxdWlyZSBjb25mL2Rpc3Ryby9pbmNsdWRlL3lvY3RvLXVuaW5hdGl2ZS5pbmMKIHJlcXVpcmUgY29uZi9kaXN0cm8vaW5jbHVkZS9zZWN1cml0eV9mbGFncy5pbmMKIElOSEVSSVQgKz0gInVuaW5hdGl2ZSIKKworSU5IRVJJVCArPSAicmVwcm9kdWNpYmxlX2J1aWxkIgorCitCQl9TSUdOQVRVUkVfSEFORExFUiA/PSAiT0VFcXVpdkhhc2giCitCQl9IQVNIU0VSVkUgPz89ICJhdXRvIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXBva3kvY29uZi9sYXllci5jb25mIGIvcG9reS9tZXRhLXBva3kvY29uZi9sYXllci5jb25mCmluZGV4IGE0YjNkMWUuLjIzNGJlMTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS1wb2t5L2NvbmYvbGF5ZXIuY29uZgorKysgYi9wb2t5L21ldGEtcG9reS9jb25mL2xheWVyLmNvbmYKQEAgLTksNyArOSw3IEBACiBCQkZJTEVfUEFUVEVSTl95b2N0byA9ICJeJHtMQVlFUkRJUn0vIgogQkJGSUxFX1BSSU9SSVRZX3lvY3RvID0gIjUiCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF95b2N0byA9ICJ6ZXVzIgorTEFZRVJTRVJJRVNfQ09NUEFUX3lvY3RvID0gImR1bmZlbGwiCiAKICMgVGhpcyBzaG91bGQgb25seSBiZSBpbmNyZW1lbnRlZCBvbiBzaWduaWZpY2FudCBjaGFuZ2VzIHRoYXQgd2lsbAogIyBjYXVzZSBjb21wYXRpYmlsaXR5IGlzc3VlcyB3aXRoIG90aGVyIGxheWVycwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZSBiL3Bva3kvbWV0YS1wb2t5L2NvbmYvbG9jYWwuY29uZi5zYW1wbGUKaW5kZXggMmUwYmI0MS4uYjU1NWYxZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXBva3kvY29uZi9sb2NhbC5jb25mLnNhbXBsZQorKysgYi9wb2t5L21ldGEtcG9reS9jb25mL2xvY2FsLmNvbmYuc2FtcGxlCkBAIC0zMSw3ICszMSw2IEBACiAjTUFDSElORSA/PSAiYmVhZ2xlYm9uZS15b2N0byIKICNNQUNISU5FID89ICJnZW5lcmljeDg2IgogI01BQ0hJTkUgPz0gImdlbmVyaWN4ODYtNjQiCi0jTUFDSElORSA/PSAibXBjODMxNWUtcmRiIgogI01BQ0hJTkUgPz0gImVkZ2Vyb3V0ZXIiCiAjCiAjIFRoaXMgc2V0cyB0aGUgZGVmYXVsdCBtYWNoaW5lIHRvIGJlIHFlbXV4ODYtNjQgaWYgbm8gb3RoZXIgbWFjaGluZSBpcyBzZWxlY3RlZDoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1zZWxmdGVzdC9jb25mL2xheWVyLmNvbmYgYi9wb2t5L21ldGEtc2VsZnRlc3QvY29uZi9sYXllci5jb25mCmluZGV4IDA4MTgxYTguLmE0YmQ0NjEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS1zZWxmdGVzdC9jb25mL2xheWVyLmNvbmYKKysrIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L2NvbmYvbGF5ZXIuY29uZgpAQCAtOSw0ICs5LDQgQEAKIEJCRklMRV9QQVRURVJOX3NlbGZ0ZXN0ID0gIl4ke0xBWUVSRElSfS8iCiBCQkZJTEVfUFJJT1JJVFlfc2VsZnRlc3QgPSAiNSIKIAotTEFZRVJTRVJJRVNfQ09NUEFUX3NlbGZ0ZXN0ID0gInpldXMiCitMQVlFUlNFUklFU19DT01QQVRfc2VsZnRlc3QgPSAiZHVuZmVsbCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3QvbGljZW5zZS9pbmNvbXBhdGlibGUtbGljZW5zZXMuYmIgYi9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2xpY2Vuc2UvaW5jb21wYXRpYmxlLWxpY2Vuc2VzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljMTU0NWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L2xpY2Vuc2UvaW5jb21wYXRpYmxlLWxpY2Vuc2VzLmJiCkBAIC0wLDAgKzEsMyBAQAorU1VNTUFSWSA9ICJSZWNpcGUgd2l0aCBtdWx0aXBsZSBTUERYIGxpY2Vuc2VzIgorREVTQ1JJUFRJT04gPSAiSXMgbGljZW5zZWQgd2l0aCBtdWx0aXBsZSBTUERYIGxpY2Vuc2VzIHRvIGJlIHVzZWQgZm9yIHRlc3RpbmciCitMSUNFTlNFID0gIkdQTC0yLjAgJiBHUEwtMy4wICYgTEdQTC0zLjAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtc2VsZnRlc3QvcmVjaXBlcy10ZXN0L3NlbGZ0ZXN0LWNob3duL3NlbGZ0ZXN0LWNob3duLmJiIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zZWxmdGVzdC1jaG93bi9zZWxmdGVzdC1jaG93bi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44N2JmOTQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zZWxmdGVzdC1jaG93bi9zZWxmdGVzdC1jaG93bi5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gInNlbGZ0ZXN0IGNob3duIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtDT01NT05fTElDRU5TRV9ESVJ9L01JVDttZDU9MDgzNWFkZTY5OGUwYmNmODUwNmVjZGEyZjdiNGYzMDIiCisKK0xJQ0VOU0UgPSAiTUlUIgorCitTID0gIiR7V09SS0RJUn0iCisKK2luaGVyaXQgdXNlcmFkZCBhbGxhcmNoCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi11IDEyMzQgLU0gdGVzdCIKK1RFU1RESVIgPSAiJHtEfSR7c3lzY29uZmRpcn0vc2VsZnRlc3QtY2hvd24iCisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAgICR7VEVTVERJUn0KKwlpbnN0YWxsIC1kICAgJHtURVNURElSfS9kaXIKKwl0b3VjaCAgICAgICAgJHtURVNURElSfS9maWxlCisJbG4gLXMgLi9maWxlICR7VEVTVERJUn0vc3ltbGluaworCisJY2hvd24gICAgdGVzdDp0ZXN0ICR7VEVTVERJUn0vZmlsZQorCWNob3duIC1SIHRlc3Q6dGVzdCAke1RFU1RESVJ9L2RpcgorCWNob3duIC1oIHRlc3Q6dGVzdCAke1RFU1RESVJ9L3N5bWxpbmsKK30KKworRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9zZWxmdGVzdC1jaG93bi8qIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zeXNyb290LXRlc3Qvc3lzcm9vdC10ZXN0LWFyY2gxXzEuMC5iYiBiL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc3lzcm9vdC10ZXN0L3N5c3Jvb3QtdGVzdC1hcmNoMV8xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzZhNjgyYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc3lzcm9vdC10ZXN0L3N5c3Jvb3QtdGVzdC1hcmNoMV8xLjAuYmIKQEAgLTAsMCArMSwxNCBAQAorTElDRU5TRSA9ICJDTE9TRUQiCisKK1BST1ZJREVTID0gInZpcnR1YWwvc3lzcm9vdC10ZXN0IgorSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKK1BBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCisKK1RFU1RTVFJJTkcgPz0gIjEiCisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfQorCWVjaG8gIiMgdGVzdCAke1RFU1RTVFJJTkd9IiA+ICR7RH0ke2luY2x1ZGVkaXJ9L3N5c3Jvb3QtdGVzdC5oCit9CisKK0VYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zeXNyb290LXRlc3Qvc3lzcm9vdC10ZXN0LWFyY2gyXzEuMC5iYiBiL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc3lzcm9vdC10ZXN0L3N5c3Jvb3QtdGVzdC1hcmNoMl8xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjcxNzJmMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc3lzcm9vdC10ZXN0L3N5c3Jvb3QtdGVzdC1hcmNoMl8xLjAuYmIKQEAgLTAsMCArMSwxNCBAQAorTElDRU5TRSA9ICJDTE9TRUQiCisKK1BST1ZJREVTID0gInZpcnR1YWwvc3lzcm9vdC10ZXN0IgorSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKK1BBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCisKK1RFU1RTVFJJTkcgPz0gIjIiCisKK2RvX2luc3RhbGwoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtpbmNsdWRlZGlyfQorCWVjaG8gIiMgdGVzdCAke1RFU1RTVFJJTkd9IiA+ICR7RH0ke2luY2x1ZGVkaXJ9L3N5c3Jvb3QtdGVzdC5oCit9CisKK0VYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXNlbGZ0ZXN0L3JlY2lwZXMtdGVzdC9zeXNyb290LXRlc3Qvc3lzcm9vdC10ZXN0XzEuMC5iYiBiL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc3lzcm9vdC10ZXN0L3N5c3Jvb3QtdGVzdF8xLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTYwNDg3YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS1zZWxmdGVzdC9yZWNpcGVzLXRlc3Qvc3lzcm9vdC10ZXN0L3N5c3Jvb3QtdGVzdF8xLjAuYmIKQEAgLTAsMCArMSw2IEBACitTVU1NQVJZID0gIlZpcnR1YWwgcHJvdmlkZXIgc3lzcm9vdCB0ZXN0IgorTElDRU5TRSA9ICJDTE9TRUQiCitJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgorREVQRU5EUyA9ICJ2aXJ0dWFsL3N5c3Jvb3QtdGVzdCIKKworRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtc2tlbGV0b24vY29uZi9sYXllci5jb25mIGIvcG9reS9tZXRhLXNrZWxldG9uL2NvbmYvbGF5ZXIuY29uZgppbmRleCA3ZDczODFhLi41ZTQ0OWE0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEtc2tlbGV0b24vY29uZi9sYXllci5jb25mCisrKyBiL3Bva3kvbWV0YS1za2VsZXRvbi9jb25mL2xheWVyLmNvbmYKQEAgLTE0LDQgKzE0LDQgQEAKIAogTEFZRVJERVBFTkRTX3NrZWxldG9uID0gImNvcmUiCiAKLUxBWUVSU0VSSUVTX0NPTVBBVF9za2VsZXRvbiA9ICJ6ZXVzIgorTEFZRVJTRVJJRVNfQ09NUEFUX3NrZWxldG9uID0gImR1bmZlbGwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEtc2tlbGV0b24vcmVjaXBlcy1iYXJlbWV0YWwvYmFyZW1ldGFsLWV4YW1wbGVzL2JhcmVtZXRhbC1oZWxsb3dvcmxkX2dpdC5iYiBiL3Bva3kvbWV0YS1za2VsZXRvbi9yZWNpcGVzLWJhcmVtZXRhbC9iYXJlbWV0YWwtZXhhbXBsZXMvYmFyZW1ldGFsLWhlbGxvd29ybGRfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4NGE5MGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEtc2tlbGV0b24vcmVjaXBlcy1iYXJlbWV0YWwvYmFyZW1ldGFsLWV4YW1wbGVzL2JhcmVtZXRhbC1oZWxsb3dvcmxkX2dpdC5iYgpAQCAtMCwwICsxLDEwNiBAQAorU1VNTUFSWSA9ICJCYXJlbWV0YWwgZXhhbXBsZXMgdG8gd29yayB3aXRoIHRoZSBzZXZlcmFsIFFFTVUgYXJjaGl0ZWN0dXJlcyBzdXBwb3J0ZWQgb24gT3BlbkVtYmVkZGVkIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FlaHMyOS9iYXJlbWV0YWwtaGVsbG9xZW11IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zOTM0NjY0MGEyM2M3MDFlNGY0NTllMDVmNTZmNDQ0OSIKKworU1JDUkVWID0gIjk5ZjRmYTRhM2IyNjZiNDJiNTJhZjMwMjYxMGIwZjRmNDI5YmE1ZTMiCitQViA9ICIwLjErZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9hZWhzMjkvYmFyZW1ldGFsLWhlbGxvcWVtdS5naXQ7cHJvdG9jb2w9aHR0cHM7YnJhbmNoPW1hc3RlciIKKworUyA9ICIke1dPUktESVJ9L2dpdC8iCisKKyMgVGhlc2UgZXhhbXBsZXMgYXJlIG5vdCBtZWFudCB0byBiZSBidWlsdCB3aGVuIHVzaW5nIGVpdGhlciBtdXNsIG9yIGdsaWJjCitDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsX2NsYXNzLXRhcmdldCA9ICJudWxsIgorQ09NUEFUSUJMRV9IT1NUX2xpYmMtZ2xpYmNfY2xhc3MtdGFyZ2V0ID0gIm51bGwiCisKKyMgVGhpcyB3aWxsIGJlIHRyYW5zbGF0ZWQgYXV0b21hdGljYWxseSB0byB0aGUgYXJjaGl0ZWN0dXJlIGFuZAorIyBtYWNoaW5lIHRoYXQgUUVNVSB1c2VzIG9uIE9FLCBlLmcuIC1tYWNoaW5lIHZpcnQgLWNwdSBjb3J0ZXgtYTU3CisjIGJ1dCB0aGUgZXhhbXBsZXMgY2FuIGFsc28gYmUgcnVuIG9uIG90aGVyIGFyY2hpdGVjdHVyZXMvbWFjaGluZXMKKyMgc3VjaCBhcyB2ZXhwcmVzcy1hMTUgYnkgb3ZlcnJpZGluZyB0aGUgc2V0dGluZyBvbiB0aGUgbWFjaGluZS5jb25mCitDT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdWFybXY1fHFlbXVhcm18cWVtdWFybTY0IgorCitCQVJFTUVUQUxfUUVNVUFSQ0ggPz0gIiIKK0JBUkVNRVRBTF9RRU1VQVJDSF9xZW11YXJtdjUgPSAidmVyc2F0aWxlIgorQkFSRU1FVEFMX1FFTVVBUkNIX3FlbXVhcm0gPSAiYXJtIgorQkFSRU1FVEFMX1FFTVVBUkNIX3FlbXVhcm02NCA9ICJhYXJjaDY0IgorCisKK0VYVFJBX09FTUFLRV9hcHBlbmQgPSAiIFFFTVVBUkNIPSR7QkFSRU1FVEFMX1FFTVVBUkNIfSBWPTEiCisKK2RvX2luc3RhbGwoKXsKKyAgICBpbnN0YWxsIC1kICR7RH0vJHtkYXRhZGlyfQorICAgIGluc3RhbGwgLW0gNzU1ICR7Qn1idWlsZC9oZWxsb19iYXJlbWV0YWxfJHtCQVJFTUVUQUxfUUVNVUFSQ0h9LmJpbiAke0R9LyR7ZGF0YWRpcn0vaGVsbG9fYmFyZW1ldGFsXyR7TUFDSElORX0uYmluCisgICAgaW5zdGFsbCAtbSA3NTUgJHtCfWJ1aWxkL2hlbGxvX2JhcmVtZXRhbF8ke0JBUkVNRVRBTF9RRU1VQVJDSH0uZWxmICR7RH0vJHtkYXRhZGlyfS9oZWxsb19iYXJlbWV0YWxfJHtNQUNISU5FfS5lbGYKK30KKworIyBCb3Jyb3dlZCBmcm9tIG1ldGEtZnJlZXJ0b3MKK2luaGVyaXQgcm9vdGZzLXBvc3Rjb21tYW5kcworaW5oZXJpdCBkZXBsb3kKK0lNR0RFUExPWURJUiA/PSAiJHtXT1JLRElSfS9kZXBsb3ktJHtQTn0taW1hZ2UtY29tcGxldGUiCitkb19kZXBsb3lbZGlyc10gPSAiJHtERVBMT1lESVJ9ICR7REVQTE9ZX0RJUl9JTUFHRX0iCitkb19yb290ZnNbZGlyc10gPSAiJHtERVBMT1lESVJ9ICR7REVQTE9ZX0RJUl9JTUFHRX0iCitERVBMT1lESVIgPSAiJHtJTUdERVBMT1lESVJ9IgorSU1BR0VfTElOS19OQU1FID89ICJiYXJlbWV0YWwtaGVsbG93b3JsZC1pbWFnZS0ke01BQ0hJTkV9IgorSU1BR0VfTkFNRV9TVUZGSVggPz0gIiIKKworZG9fZGVwbG95KCl7CisgICAgaW5zdGFsbCAke0R9LyR7ZGF0YWRpcn0vaGVsbG9fYmFyZW1ldGFsXyR7TUFDSElORX0uYmluICR7REVQTE9ZRElSfS8ke0lNQUdFX0xJTktfTkFNRX0uYmluCisgICAgaW5zdGFsbCAke0R9LyR7ZGF0YWRpcn0vaGVsbG9fYmFyZW1ldGFsXyR7TUFDSElORX0uZWxmICR7REVQTE9ZRElSfS8ke0lNQUdFX0xJTktfTkFNRX0uZWxmCit9CisKK2RvX2ltYWdlKCl7CisgICAgOgorfQorCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2RhdGFkaXJ9L2hlbGxvX2JhcmVtZXRhbF8ke01BQ0hJTkV9LmJpbiBcCisgICAgJHtkYXRhZGlyfS9oZWxsb19iYXJlbWV0YWxfJHtNQUNISU5FfS5lbGYgXAorIgorCitweXRob24gZG9fcm9vdGZzKCl7CisgICAgZnJvbSBvZS51dGlscyBpbXBvcnQgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzCisgICAgZnJvbSBwYXRobGliIGltcG9ydCBQYXRoCisKKyAgICAjIFdyaXRlIGVtcHR5IG1hbmlmZXN0IHRlc3RkYXRlIGZpbGUKKyAgICBkZXBsb3lfZGlyID0gZC5nZXRWYXIoJ0RFUExPWURJUicpCisgICAgbGlua19uYW1lID0gZC5nZXRWYXIoJ0lNQUdFX0xJTktfTkFNRScpCisgICAgbWFuaWZlc3RfbmFtZSA9IGQuZ2V0VmFyKCdJTUFHRV9NQU5JRkVTVCcpCisKKyAgICBQYXRoKG1hbmlmZXN0X25hbWUpLnRvdWNoKCkKKyAgICBpZiBvcy5wYXRoLmV4aXN0cyhtYW5pZmVzdF9uYW1lKSBhbmQgbGlua19uYW1lOgorICAgICAgICBtYW5pZmVzdF9saW5rID0gZGVwbG95X2RpciArICIvIiArIGxpbmtfbmFtZSArICIubWFuaWZlc3QiCisgICAgICAgIGlmIG9zLnBhdGgubGV4aXN0cyhtYW5pZmVzdF9saW5rKToKKyAgICAgICAgICAgIG9zLnJlbW92ZShtYW5pZmVzdF9saW5rKQorICAgICAgICBvcy5zeW1saW5rKG9zLnBhdGguYmFzZW5hbWUobWFuaWZlc3RfbmFtZSksIG1hbmlmZXN0X2xpbmspCisgICAgZXhlY3V0ZV9wcmVfcG9zdF9wcm9jZXNzKGQsIGQuZ2V0VmFyKCdST09URlNfUE9TVFBST0NFU1NfQ09NTUFORCcpKQorfQorCisjIFFFTVUgZ2VuZXJpYyBGcmVlUlRPUyBwYXJhbWV0ZXJzCitRQl9ERUZBVUxUX0tFUk5FTCA9ICIke0lNQUdFX0xJTktfTkFNRX0uYmluIgorUUJfTUVNID0gIi1tIDI1NiIKK1FCX09QVF9BUFBFTkQgPSAiLW5vZ3JhcGhpYyIKK1FCX0RFRkFVTFRfRlNUWVBFID0gImJpbiIKK1FCX0RUQiA9ICIiCisKKyMgVGhpcyBuZXh0IHBhcnQgaXMgbmVjZXNzYXJ5IHRvIHRyaWNrIHRoZSBidWlsZCBzeXN0ZW0gaW50byB0aGlua2luZworIyBpdHMgYnVpbGRpbmcgYW4gaW1hZ2UgcmVjaXBlIHNvIGl0IGdlbmVyYXRlcyB0aGUgcWVtdWJvb3QuY29uZgorYWRkdGFzayBkb19kZXBsb3kgYWZ0ZXIgZG9fd3JpdGVfcWVtdWJvb3RfY29uZiBiZWZvcmUgZG9fYnVpbGQKK2FkZHRhc2sgZG9fcm9vdGZzIGJlZm9yZSBkb19kZXBsb3kgYWZ0ZXIgZG9faW5zdGFsbAorYWRkdGFzayBkb19pbWFnZSBhZnRlciBkb19yb290ZnMgYmVmb3JlIGRvX2J1aWxkCitpbmhlcml0IHFlbXVib290CisKKyMgQmFzZWQgb24gaW1hZ2UuYmJjbGFzcyB0byBtYWtlIHN1cmUgd2UgYnVpbGQgcWVtdQorcHl0aG9uKCl7CisgICAgIyBkb19hZGR0b19yZWNpcGVfc3lzcm9vdCBkb2VzbnQgZXhpc3QgZm9yIGFsbCByZWNpcGVzLCBidXQgd2UgbmVlZCBpdCB0byBoYXZlCisgICAgIyAvdXNyL2JpbiBvbiByZWNpcGUtc3lzcm9vdCAocWVtdSkgcG9wdWxhdGVkCisgICAgZGVmIGV4dHJhaW1hZ2VfZ2V0ZGVwZW5kcyh0YXNrKToKKyAgICAgICAgZGVwcyA9ICIiCisgICAgICAgIGZvciBkZXAgaW4gKGQuZ2V0VmFyKCdFWFRSQV9JTUFHRURFUEVORFMnKSBvciAiIikuc3BsaXQoKToKKyAgICAgICAgIyBNYWtlIHN1cmUgd2Ugb25seSBhZGQgaXQgZm9yIHFlbXUKKyAgICAgICAgICAgIGlmICdxZW11JyBpbiBkZXA6CisgICAgICAgICAgICAgICAgZGVwcyArPSAiICVzOiVzIiAlIChkZXAsIHRhc2spCisgICAgICAgIHJldHVybiBkZXBzCisgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19pbWFnZScsICdkZXBlbmRzJywgZXh0cmFpbWFnZV9nZXRkZXBlbmRzKCdkb19hZGR0b19yZWNpcGVfc3lzcm9vdCcpKQorICAgIGQuYXBwZW5kVmFyRmxhZygnZG9faW1hZ2UnLCAnZGVwZW5kcycsIGV4dHJhaW1hZ2VfZ2V0ZGVwZW5kcygnZG9fcG9wdWxhdGVfc3lzcm9vdCcpKQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9SRUFETUUuaGFyZHdhcmUgYi9wb2t5L21ldGEteW9jdG8tYnNwL1JFQURNRS5oYXJkd2FyZQppbmRleCBkOGQyYTBjLi41OTk2YmU3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL1JFQURNRS5oYXJkd2FyZQorKysgYi9wb2t5L21ldGEteW9jdG8tYnNwL1JFQURNRS5oYXJkd2FyZQpAQCAtMjgsNyArMjgsNiBAQAogVGhlIGZvbGxvd2luZyBib2FyZHMgYXJlIHN1cHBvcnRlZCBieSB0aGUgbWV0YS15b2N0by1ic3AgbGF5ZXI6CiAKICAgKiBUZXhhcyBJbnN0cnVtZW50cyBCZWFnbGVib25lIChiZWFnbGVib25lLXlvY3RvKQotICAqIEZyZWVzY2FsZSBNUEM4MzE1RS1SREIgKG1wYzgzMTVlLXJkYikKICAgKiBVYmlxdWl0aSBOZXR3b3JrcyBFZGdlUm91dGVyIExpdGUgKGVkZ2Vyb3V0ZXIpCiAgICogR2VuZXJhbCBJQSBwbGF0Zm9ybXMgKGdlbmVyaWN4ODYgYW5kIGdlbmVyaWN4ODYtNjQpCiAKQEAgLTE1NSwxNDcgKzE1NCw2IEBACiAKICAgMy4gSW5zZXJ0IHRoZSBTRCBjYXJkIGludG8gdGhlIEJlYWdsZWJvbmUgYW5kIGJvb3QgdGhlIGJvYXJkLgogCi1GcmVlc2NhbGUgTVBDODMxNUUtUkRCIChtcGM4MzE1ZS1yZGIpCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0KLVRoZSBNUEM4MzE1IFBvd2VyUEMgcmVmZXJlbmNlIHBsYXRmb3JtIChNUEM4MzE1RS1SREIpIGlzIGFpbWVkIGF0IGhhcmR3YXJlIGFuZAotc29mdHdhcmUgZGV2ZWxvcG1lbnQgb2YgbmV0d29yayBhdHRhY2hlZCBzdG9yYWdlIChOQVMpIGFuZCBkaWdpdGFsIG1lZGlhIHNlcnZlcgotYXBwbGljYXRpb25zLiBUaGUgTVBDODMxNUUtUkRCIGZlYXR1cmVzIHRoZSBQb3dlclFVSUNDIElJIFBybyBwcm9jZXNzb3IsIHdoaWNoCi1pbmNsdWRlcyBhIGJ1aWx0LWluIHNlY3VyaXR5IGFjY2VsZXJhdG9yLgotCi0oTm90ZTogeW91IG1heSBmaW5kIGl0IGVhc2llciB0byBvcmRlciBNUEM4MzE1RS1SREJBOyB0aGlzIGFwcGVhcnMgdG8gYmUgdGhlCi1zYW1lIGJvYXJkIGluIGFuIGVuY2xvc3VyZSB3aXRoIGFjY2Vzc29yaWVzLiBJbiBhbnkgY2FzZSBpdCBpcyBmdWxseQotY29tcGF0aWJsZSB3aXRoIHRoZSBpbnN0cnVjdGlvbnMgZ2l2ZW4gaGVyZS4pCi0KLVNldHVwIGluc3RydWN0aW9ucwotLS0tLS0tLS0tLS0tLS0tLS0tCi0KLVlvdSB3aWxsIG5lZWQgdGhlIGZvbGxvd2luZzoKLSogTkZTIHJvb3Qgc2V0dXAgb24geW91ciB3b3Jrc3RhdGlvbgotKiBURlRQIHNlcnZlciBpbnN0YWxsZWQgb24geW91ciB3b3Jrc3RhdGlvbgotKiBTdHJhaWdodC10aHJ1IDktY29uZHVjdG9yIHNlcmlhbCBjYWJsZSAoREI5LCBNL0YpIGNvbm5lY3RlZCBmcm9tIHlvdXIgCi0gIFBDIHRvIFVBUlQxCi0qIEV0aGVybmV0IGNvbm5lY3RlZCB0byB0aGUgZmlyc3QgZXRoZXJuZXQgcG9ydCBvbiB0aGUgYm9hcmQKLQotLS0tIFByZXBhcmF0aW9uIC0tLQotCi1Ob3RlOiBpZiB5b3UgaGF2ZSBhbHRlcmVkIHlvdXIgYm9hcmQncyBldGhlcm5ldCBNQUMgYWRkcmVzcyhlcykgZnJvbSB0aGUKLWRlZmF1bHRzLCBvciB5b3UgbmVlZCB0byBkbyBzbyBiZWNhdXNlIHlvdSB3YW50IG11bHRpcGxlIGJvYXJkcyBvbiB0aGUgc2FtZQotbmV0d29yaywgdGhlbiB5b3Ugd2lsbCBuZWVkIHRvIGNoYW5nZSB0aGUgdmFsdWVzIGluIHRoZSBkdHMgZmlsZSAocGF0Y2gKLWxpbnV4L2FyY2gvcG93ZXJwYy9ib290L2R0cy9tcGM4MzE1ZXJkYi5kdHMgd2l0aGluIHRoZSBrZXJuZWwgc291cmNlKS4gSWYKLXlvdSBoYXZlIGxlZnQgdGhlbSBhdCB0aGUgZmFjdG9yeSBkZWZhdWx0IHRoZW4geW91IHNob3VsZG4ndCBuZWVkIHRvIGRvCi1hbnl0aGluZyBoZXJlLgotCi1Ob3RlOiBUbyBib290IGZyb20gVVNCIGRpc2sgeW91IG5lZWQgdS1ib290IHRoYXQgc3VwcG9ydHMgJ2V4dDJsb2FkIHVzYicKLWNvbW1hbmQuIFlvdSBuZWVkIHRvIHNldHVwIFRGVFAgc2VydmVyLCBsb2FkIHUtYm9vdCBmcm9tIHRoZXJlIGFuZAotZmxhc2ggaXQgdG8gTk9SIGZsYXNoLgotCi1CZXdhcmUhIEZsYXNoaW5nIGJvb3Rsb2FkZXIgaXMgcG90ZW50aWFsbHkgZGFuZ2Vyb3VzIG9wZXJhdGlvbiB0aGF0IGNhbgotYnJpY2sgeW91ciBkZXZpY2UgaWYgZG9uZSBpbmNvcnJlY3RseS4gUGxlYXNlLCBtYWtlIHN1cmUgeW91IHVuZGVyc3RhbmQKLXdoYXQgYmVsb3cgY29tbWFuZHMgbWVhbiBiZWZvcmUgZXhlY3V0aW5nIHRoZW0uCi0KLUxvYWQgdGhlIG5ldyB1LWJvb3QuYmluIGZyb20gVEZUUCBzZXJ2ZXIgdG8gbWVtb3J5IGFkZHJlc3MgMjAwMDAwCi09PiB0ZnRwIDIwMDAwMCB1LWJvb3QuYmluCi0KLURpc2FibGUgZmxhc2ggcHJvdGVjdGlvbgotPT4gcHJvdGVjdCBvZmYgYWxsCi0KLUVyYXNlIHRoZSBvbGQgdS1ib290IGZyb20gZmUwMDAwMDAgdG8gZmUwNmZmZmYgaW4gTk9SIGZsYXNoLgotVGhlIHNpemUgaXMgMHg3MDAwMCAoNDU4NzUyIGJ5dGVzKQotPT4gZXJhc2UgZmUwMDAwMDAgZmUwNmZmZmYKLQotQ29weSB0aGUgbmV3IHUtYm9vdCBmcm9tIGFkZHJlc3MgMjAwMDAwIHRvIGZlMDAwMDAwCi10aGUgc2l6ZSBpcyAweDcwMDAwLiBJdCBoYXMgdG8gYmUgZ3JlYXRlciBvciBlcXVhbCB0byB1LWJvb3QuYmluIHNpemUKLT0+IGNwLmIgMjAwMDAwIGZlMDAwMDAwIDcwMDAwCi0KLUVuYWJsZSBmbGFzaCBwcm90ZWN0aW9uIGFnYWluCi09PiBwcm90ZWN0IG9uIGFsbAotCi1SZXNldCB0aGUgYm9hcmQKLT0+IHJlc2V0Ci0KLS0tLSBCb290aW5nIGZyb20gVVNCIGRpc2sgLS0tCi0KLSAxLiBGbGFzaCBwYXJ0aXRpb25lZCBpbWFnZSB0byB0aGUgVVNCIGRpc2sKLQotICAgICMgZGQgaWY9Y29yZS1pbWFnZS1taW5pbWFsLW1wYzgzMTVlLXJkYi53aWMgb2Y9L2Rldi9zZGIKLQotIDIuIFBsdWcgVVNCIGRpc2sgaW50byB0aGUgTVBDODMxNSBib2FyZAotCi0gMy4gQ29ubmVjdCB0aGUgYm9hcmQncyBmaXJzdCBzZXJpYWwgcG9ydCB0byB5b3VyIHdvcmtzdGF0aW9uIGFuZCB0aGVuIHN0YXJ0IHVwCi0gICAgeW91ciBmYXZvdXJpdGUgc2VyaWFsIHRlcm1pbmFsIHNvIHRoYXQgeW91IHdpbGwgYmUgYWJsZSB0byBpbnRlcmFjdCB3aXRoCi0gICAgdGhlIHNlcmlhbCBjb25zb2xlLiBJZiB5b3UgZG9uJ3QgaGF2ZSBhIGZhdm91cml0ZSwgcGljb2NvbSBpcyBzdWdnZXN0ZWQ6Ci0KLSAgJCBwaWNvY29tIC9kZXYvdHR5VVNCMCAtYiAxMTUyMDAKLQotIDQuIFBvd2VyIHVwIG9yIHJlc2V0IHRoZSBib2FyZCBhbmQgcHJlc3MgYSBrZXkgb24gdGhlIHRlcm1pbmFsIHdoZW4gcHJvbXB0ZWQKLSAgICB0byBnZXQgdG8gdGhlIFUtQm9vdCBjb21tYW5kIGxpbmUKLQotIDUuIE9wdGlvbmFsLiBMb2FkIHRoZSB1LWJvb3QuYmluIGZyb20gdGhlIFVTQiBkaXNrOgotCi0gPT4gdXNiIHN0YXJ0Ci0gPT4gZXh0MmxvYWQgdXNiIDA6MSAyMDAwMDAgdS1ib290LmJpbgotCi0gICAgYW5kIGZsYXNoIGl0IHRvIE5PUiBmbGFzaCBhcyBkZXNjcmliZWQgYWJvdmUuCi0KLSA2LiBMb2FkIHRoZSBrZXJuZWwgYW5kIGR0YiBmcm9tIHRoZSBmaXJzdCBwYXJ0aXRpb24gb2YgdGhlIFVTQiBkaXNrOgotCi0gPT4gdXNiIHN0YXJ0Ci0gPT4gZXh0MmxvYWQgdXNiIDA6MSAxMDAwMDAwIHVJbWFnZQotID0+IGV4dDJsb2FkIHVzYiAwOjEgMjAwMDAwMCBkdGIKLQotIDcuIFNldCBib290YXJncyBhbmQgYm9vdCB1cCB0aGUgZGV2aWNlCi0KLSA9PiBzZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L3NkYjIgcncgcm9vdHdhaXQgY29uc29sZT10dHlTMCwxMTUyMDAKLSA9PiBib290bSAxMDAwMDAwIC0gMjAwMDAwMAotCi0KLS0tLSBCb290aW5nIGZyb20gTkZTIHJvb3QgLS0tCi0KLUxvYWQgdGhlIGtlcm5lbCBhbmQgZHRiIChkZXZpY2UgdHJlZSBibG9iKSwgYW5kIGJvb3QgdGhlIHN5c3RlbSBhcyBmb2xsb3dzOgotCi0gMS4gR2V0IHRoZSBrZXJuZWwgKHVJbWFnZS1tcGM4MzE1ZS1yZGIuYmluKSBhbmQgZHRiICh1SW1hZ2UtbXBjODMxNWUtcmRiLmR0YikKLSAgICBmaWxlcyBmcm9tIHRoZSB0bXAvZGVwbG95IGRpcmVjdG9yeSwgYW5kIG1ha2UgdGhlbSBhdmFpbGFibGUgb24geW91ciBURlRQCi0gICAgc2VydmVyLgotCi0gMi4gQ29ubmVjdCB0aGUgYm9hcmQncyBmaXJzdCBzZXJpYWwgcG9ydCB0byB5b3VyIHdvcmtzdGF0aW9uIGFuZCB0aGVuIHN0YXJ0IHVwCi0gICAgeW91ciBmYXZvdXJpdGUgc2VyaWFsIHRlcm1pbmFsIHNvIHRoYXQgeW91IHdpbGwgYmUgYWJsZSB0byBpbnRlcmFjdCB3aXRoCi0gICAgdGhlIHNlcmlhbCBjb25zb2xlLiBJZiB5b3UgZG9uJ3QgaGF2ZSBhIGZhdm91cml0ZSwgcGljb2NvbSBpcyBzdWdnZXN0ZWQ6Ci0KLSAgJCBwaWNvY29tIC9kZXYvdHR5VVNCMCAtYiAxMTUyMDAKLQotIDMuIFBvd2VyIHVwIG9yIHJlc2V0IHRoZSBib2FyZCBhbmQgcHJlc3MgYSBrZXkgb24gdGhlIHRlcm1pbmFsIHdoZW4gcHJvbXB0ZWQKLSAgICB0byBnZXQgdG8gdGhlIFUtQm9vdCBjb21tYW5kIGxpbmUKLQotIDQuIFNldCB1cCB0aGUgZW52aXJvbm1lbnQgaW4gVS1Cb290OgotCi0gPT4gc2V0ZW52IGlwYWRkciA8Ym9hcmQgaXA+Ci0gPT4gc2V0ZW52IHNlcnZlcmlwIDx0ZnRwIHNlcnZlciBpcD4KLSA9PiBzZXRlbnYgYm9vdGFyZ3Mgcm9vdD0vZGV2L25mcyBydyBuZnNyb290PTxuZnNyb290IGlwPjo8cm9vdGZzIHBhdGg+IGlwPTxib2FyZCBpcD46PHNlcnZlciBpcD46PGdhdGV3YXkgaXA+OjI1NS4yNTUuMjU1LjA6bXBjODMxNWU6ZXRoMDpvZmYgY29uc29sZT10dHlTMCwxMTUyMDAKLQotIDUuIERvd25sb2FkIHRoZSBrZXJuZWwgYW5kIGR0YiwgYW5kIGJvb3Q6Ci0KLSA9PiB0ZnRwIDEwMDAwMDAgdUltYWdlLW1wYzgzMTVlLXJkYi5iaW4KLSA9PiB0ZnRwIDIwMDAwMDAgdUltYWdlLW1wYzgzMTVlLXJkYi5kdGIKLSA9PiBib290bSAxMDAwMDAwIC0gMjAwMDAwMAotCi0tLS0gQm9vdGluZyBmcm9tIEpGRlMyIHJvb3QgLS0tCi0KLSAxLiBGaXJzdCBib290IHRoZSBib2FyZCB3aXRoIE5GUyByb290LgotCi0gMi4gRXJhc2UgdGhlIE1URCBwYXJ0aXRpb24gd2hpY2ggd2lsbCBiZSB1c2VkIGFzIHJvb3Q6Ci0KLSAgICAkIGZsYXNoX2VyYXNlYWxsICAvZGV2L210ZDMKLQotIDMuIENvcHkgdGhlIEpGRlMyIGltYWdlIHRvIHRoZSBNVEQgcGFydGl0aW9uOgotCi0gICAgJCBmbGFzaGNwIGNvcmUtaW1hZ2UtbWluaW1hbC1tcGM4MzE1ZS1yZGIuamZmczIgL2Rldi9tdGQzCi0KLSA0LiBUaGVuIHJlYm9vdCB0aGUgYm9hcmQgYW5kIHNldCB1cCB0aGUgZW52aXJvbm1lbnQgaW4gVS1Cb290OgotCi0gICAgPT4gc2V0ZW52IGJvb3RhcmdzIHJvb3Q9L2Rldi9tdGRibG9jazMgcm9vdGZzdHlwZT1qZmZzMiBjb25zb2xlPXR0eVMwLDExNTIwMAotCi0KIFViaXF1aXRpIE5ldHdvcmtzIEVkZ2VSb3V0ZXIgTGl0ZSAoZWRnZXJvdXRlcikKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL2xheWVyLmNvbmYgYi9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbGF5ZXIuY29uZgppbmRleCBjOTRiYjAwLi42NGIxMjQ4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbGF5ZXIuY29uZgorKysgYi9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbGF5ZXIuY29uZgpAQCAtOSw0ICs5LDQgQEAKIEJCRklMRV9QQVRURVJOX3lvY3RvYnNwID0gIl4ke0xBWUVSRElSfS8iCiBCQkZJTEVfUFJJT1JJVFlfeW9jdG9ic3AgPSAiNSIKIExBWUVSVkVSU0lPTl95b2N0b2JzcCA9ICI0IgotTEFZRVJTRVJJRVNfQ09NUEFUX3lvY3RvYnNwID0gInpldXMiCitMQVlFUlNFUklFU19DT01QQVRfeW9jdG9ic3AgPSAiZHVuZmVsbCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2JlYWdsZWJvbmUteW9jdG8uY29uZiBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2JlYWdsZWJvbmUteW9jdG8uY29uZgppbmRleCAwOGRkM2E1Li41YjQ4MTQzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9iZWFnbGVib25lLXlvY3RvLmNvbmYKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvYmVhZ2xlYm9uZS15b2N0by5jb25mCkBAIC0yNCw3ICsyNCw3IEBACiBTRVJJQUxfQ09OU09MRVNfQ0hFQ0sgPSAiJHtTRVJJQUxfQ09OU09MRVN9IgogCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz0gImxpbnV4LXlvY3RvIgotUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjUuMiUiCitQUkVGRVJSRURfVkVSU0lPTl9saW51eC15b2N0byA/PSAiNS40JSIKIAogS0VSTkVMX0lNQUdFVFlQRSA9ICJ6SW1hZ2UiCiBLRVJORUxfREVWSUNFVFJFRSA9ICJhbTMzNXgtYm9uZS5kdGIgYW0zMzV4LWJvbmVibGFjay5kdGIgYW0zMzV4LWJvbmVncmVlbi5kdGIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9lZGdlcm91dGVyLmNvbmYgYi9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9lZGdlcm91dGVyLmNvbmYKaW5kZXggNjMzMTM2OC4uZDZmZDkzNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9jb25mL21hY2hpbmUvZWRnZXJvdXRlci5jb25mCisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2VkZ2Vyb3V0ZXIuY29uZgpAQCAtMTEsNyArMTEsNyBAQAogS0VSTkVMX0lNQUdFX1NUUklQX0VYVFJBX1NFQ1RJT05TICA9ICIuY29tbWVudCIKIAogUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJsaW51eC15b2N0byIKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI1LjIlIgorUFJFRkVSUkVEX1ZFUlNJT05fbGludXgteW9jdG8gPz0gIjUuNCUiCiAKIFNFUklBTF9DT05TT0xFUyA9ICIxMTUyMDA7dHR5UzAiCiBVU0VfVlQgPz0gIjAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9pbmNsdWRlL2dlbmVyaWN4ODYtY29tbW9uLmluYyBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2luY2x1ZGUvZ2VuZXJpY3g4Ni1jb21tb24uaW5jCmluZGV4IGY4M2NlNWMuLmE2YzM5NmMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2luY2x1ZGUvZ2VuZXJpY3g4Ni1jb21tb24uaW5jCisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL2luY2x1ZGUvZ2VuZXJpY3g4Ni1jb21tb24uaW5jCkBAIC0yMCw2ICsyMCw3IEBACiBFWFRSQV9PRUNPTkZfYXBwZW5kX3BuLW1hdGNoYm94LXBhbmVsLTIgPSAiIC0td2l0aC1iYXR0ZXJ5PWFjcGkiCiAKIElNQUdFX0ZTVFlQRVMgKz0gIndpYyB3aWMuYm1hcCIKLVdLU19GSUxFID89ICJnZW5lcmljeDg2LndrcyIKK1dLU19GSUxFID89ICJnZW5lcmljeDg2Lndrcy5pbiIKK0VGSV9QUk9WSURFUiA/Pz0gImdydWItZWZpIgogZG9faW1hZ2Vfd2ljW2RlcGVuZHNdICs9ICJncHRmZGlzay1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIGRvX2ltYWdlX3dpY1tyZWNyZGVwdGFza10gKz0gImRvX2Jvb3RpbWciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL2NvbmYvbWFjaGluZS9tcGM4MzE1ZS1yZGIuY29uZiBiL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL21wYzgzMTVlLXJkYi5jb25mCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MzgyNzk2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvY29uZi9tYWNoaW5lL21wYzgzMTVlLXJkYi5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotI0BUWVBFOiBNYWNoaW5lCi0jQE5BTUU6IEZyZWVzY2FsZSBNUEM4MzE1RS1SREIKLSNAREVTQ1JJUFRJT046IE1hY2hpbmUgY29uZmlndXJhdGlvbiBmb3IgRnJlZXNjYWxlIE1QQzgzMTVFLVJEQgotCi1UQVJHRVRfRlBVID0gIiIKLQotcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBwY2UzMDBjMy5pbmMKLQotS0VSTkVMX0lNQUdFVFlQRSA9ICJ1SW1hZ2UiCi0KLUVYVFJBX0lNQUdFREVQRU5EUyArPSAidS1ib290IgotVUJPT1RfTUFDSElORSA9ICJNUEM4MzE1RVJEQl9jb25maWciCi0KLVNFUklBTF9DT05TT0xFUyA9ICIxMTUyMDA7dHR5UzAiCi0KLU1BQ0hJTkVfRkVBVFVSRVMgPSAia2V5Ym9hcmQgcGNpIGV4dDIgZXh0MyBzZXJpYWwiCi0KLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID89ICI1LjIlIgotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsID89ICJsaW51eC15b2N0byIKLQotUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwveHNlcnZlciA/PSAieHNlcnZlci14b3JnIgotWFNFUlZFUiA/PSAieHNlcnZlci14b3JnIFwKLSAgICAgICAgICAgIHhmODYtdmlkZW8tZmJkZXYiCi0KLVVCT09UX0VOVFJZUE9JTlQgPSAiMHgwMDAwMDAwMCIKLQotS0VSTkVMX0RFVklDRVRSRUUgPSAibXBjODMxNWVyZGIuZHRiIgotCi1NQUNISU5FX0VYVFJBX1JSRUNPTU1FTkRTID0gImtlcm5lbC1tb2R1bGVzIgotCi1JTUFHRV9GU1RZUEVTID89ICJqZmZzMiB0YXIuYnoyIgotSkZGUzJfRVJBU0VCTE9DSyA9ICIweDQwMDAiCi0KLUlNQUdFX0ZTVFlQRVMgKz0gIndpYyB3aWMuYm1hcCIKLVdLU19GSUxFID89ICdtcGM4MzE1ZS1yZGIud2tzJwotSU1BR0VfQk9PVF9GSUxFUyA/PSAidS1ib290LmJpbiB1SW1hZ2UgbXBjODMxNWVyZGIuZHRiO2R0YiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3lzdGVtZF9ib290LnB5IGIvcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zeXN0ZW1kX2Jvb3QucHkKaW5kZXggMGEzYTJjZC4uNTc1OTllMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zeXN0ZW1kX2Jvb3QucHkKKysrIGIvcG9reS9tZXRhLXlvY3RvLWJzcC9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zeXN0ZW1kX2Jvb3QucHkKQEAgLTMwLDcgKzMwLDcgQEAKICAgICAgICAgcnVuQ21kKCdybSAtZiAlcycgJSBzeXN0ZW1kYm9vdGZpbGUpCiAKICAgICAgICAgIyBCdWlsZCBhIGdlbmVyaWN4ODYtNjQvZWZpIHN5c3RlbWRib290IGltYWdlCi0gICAgICAgIGJpdGJha2UoJ210b29scy1uYXRpdmUgY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgYml0YmFrZSgnbXRvb2xzLW5hdGl2ZSBjb3JlLWltYWdlLW1pbmltYWwgd2ljLXRvb2xzJykKIAogICAgICAgICBmb3VuZCA9IG9zLnBhdGguaXNmaWxlKHN5c3RlbWRib290ZmlsZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCAnU3lzdGVtZC1Cb290IGZpbGUgJXMgbm90IGZvdW5kJyAlIHN5c3RlbWRib290ZmlsZSkKQEAgLTM4LDkgKzM4LDkgQEAKICAgICAgICAgIiIiCiAgICAgICAgIFN1bW1hcnk6ICAgICAgQ2hlY2sgaWYgRUZJIGJvb3Rsb2FkZXIgZm9yIHN5c3RlbWQgaXMgY29ycmVjdGx5IGJ1aWxkCiAgICAgICAgIERlcGVuZGVuY2llczogSW1hZ2Ugd2FzIGJ1aWx0IGNvcnJlY3RseSBvbiB0ZXN0Y2FzZSAxNDQ1Ci0gICAgICAgIFN0ZXBzOiAgICAgICAgMS4gQ29weSBib290eDY0LmVmaSBmaWxlIGZvcm0gdGhlIGhkZGltZyBjcmVhdGVkCisgICAgICAgIFN0ZXBzOiAgICAgICAgMS4gQ29weSBib290eDY0LmVmaSBmaWxlIGZyb20gdGhlIHdpYyBjcmVhdGVkCiAgICAgICAgICAgICAgICAgICAgICAgdW5kZXIgYnVpbGQvdG1wL2RlcGxveS9pbWFnZXMvZ2VuZXJpY3g4Ni02NAotICAgICAgICAgICAgICAgICAgICAgIDIuIENoZWNrIGJvb3R4NjQuZWZpIHdhcyBjb3BpZWQgZm9ybSBoZGRpbWcKKyAgICAgICAgICAgICAgICAgICAgICAyLiBDaGVjayBib290eDY0LmVmaSB3YXMgY29waWVkIGZyb20gd2ljCiAgICAgICAgICAgICAgICAgICAgICAgMy4gVmVyaWZ5IHRoZSBjaGVja3N1bXMgZnJvbSB0aGUgY29waWVkIGFuZCBwcmV2aW91c2x5CiAgICAgICAgICAgICAgICAgICAgICAgY3JlYXRlZCBmaWxlIGFyZSBlcXVhbC4KICAgICAgICAgRXhwZWN0ZWQgOiAgICBTeXN0ZW1kLWJvb3R4NjQuZWZpIGFuZCBib290eDY0LmVmaSBzaG91bGQgYmUgdGhlIHNhbWUKQEAgLTUwLDE2ICs1MCwxNyBAQAogICAgICAgICBBdXRvbWF0ZWRCeTogIEpvc2UgUGVyZXogQ2FycmFuemEgPGpvc2UucGVyZXouY2FycmFuemEgYXQgbGludXgtaW50ZWwuY29tPgogICAgICAgICAiIiIKIAotICAgICAgICBzeXN0ZW1kYm9vdGltYWdlID0gb3MucGF0aC5qb2luKGRlcGxveWRpciwgJ2NvcmUtaW1hZ2UtbWluaW1hbC1nZW5lcmljeDg2LTY0LmhkZGltZycpCisgICAgICAgIHN5c3RlbWRib290aW1hZ2UgPSBvcy5wYXRoLmpvaW4oZGVwbG95ZGlyLCAnY29yZS1pbWFnZS1taW5pbWFsLWdlbmVyaWN4ODYtNjQud2ljJykKICAgICAgICAgaW1hZ2Vib290ZmlsZSA9IG9zLnBhdGguam9pbihkZXBsb3lkaXIsICdib290eDY0LmVmaScpCi0gICAgICAgIG1jb3B5bmF0aXZlID0gb3MucGF0aC5qb2luKGdldF9iYl92YXIoJ1NUQUdJTkdfQklORElSX05BVElWRScsICJjb3JlLWltYWdlLW1pbmltYWwiKSwgJ21jb3B5JykKIAogICAgICAgICAjIENsZWFuIGVudmlyb25tZW50IGJlZm9yZSBzdGFydCB0aGUgdGVzdAogICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShpbWFnZWJvb3RmaWxlKToKICAgICAgICAgICAgIHJ1bkNtZCgncm0gLWYgJXMnICUgaW1hZ2Vib290ZmlsZSkKIAotICAgICAgICBydW5DbWQoJyVzIC1pICVzIDo6RUZJL0JPT1QvYm9vdHg2NC5lZmkgJXMnICUgKG1jb3B5bmF0aXZlICxzeXN0ZW1kYm9vdGltYWdlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbWFnZWJvb3RmaWxlKSkKKyAgICAgICAgc3lzcm9vdCA9IGdldF9iYl92YXIoJ1JFQ0lQRV9TWVNST09UX05BVElWRScsICd3aWMtdG9vbHMnKQorCisgICAgICAgIHJ1bkNtZCgnd2ljIGNwICVzOjEvRUZJL0JPT1QvYm9vdHg2NC5lZmkgJXMgLW4gJXMnICUgKHN5c3RlbWRib290aW1hZ2UsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGltYWdlYm9vdGZpbGUsIHN5c3Jvb3QpKQogCiAgICAgICAgIGZvdW5kID0gb3MucGF0aC5pc2ZpbGUoaW1hZ2Vib290ZmlsZSkKICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGZvdW5kLCAnYm9vdHg2NC5lZmkgZmlsZSAlcyB3YXMgbm90IGNvcGllZCBmcm9tIGltYWdlJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmJhcHBlbmQgYi9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZAppbmRleCBmMDQ0ZGFmLi42ZTVhMTI5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZAorKysgYi9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYmFwcGVuZApAQCAtMiw3ICsyLDYgQEAKIEtCUkFOQ0hfZ2VuZXJpY3g4Ni02NCAgPSAic3RhbmRhcmQvYmFzZSIKIEtCUkFOQ0hfZWRnZXJvdXRlciA9ICJzdGFuZGFyZC9lZGdlcm91dGVyIgogS0JSQU5DSF9iZWFnbGVib25lLXlvY3RvID0gInN0YW5kYXJkL2JlYWdsZWJvbmUiCi1LQlJBTkNIX21wYzgzMTVlLXJkYiA9ICJzdGFuZGFyZC9mc2wtbXBjODMxNWUtcmRiIgogCiBLTUFDSElORV9nZW5lcmljeDg2ID89ICJjb21tb24tcGMiCiBLTUFDSElORV9nZW5lcmljeDg2LTY0ID89ICJjb21tb24tcGMtNjQiCkBAIC0xMiw0ICsxMSwzIEBACiBDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgogQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKIENPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCi1DT01QQVRJQkxFX01BQ0hJTkVfbXBjODMxNWUtcmRiID0gIm1wYzgzMTVlLXJkYiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xOS5iYmFwcGVuZCBiL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNC4xOS5iYmFwcGVuZApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWMyNjlkOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTkuYmJhcHBlbmQKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1LQlJBTkNIX2dlbmVyaWN4ODYgID0gInY0LjE5L3N0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX2dlbmVyaWN4ODYtNjQgID0gInY0LjE5L3N0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX2VkZ2Vyb3V0ZXIgPSAidjQuMTkvc3RhbmRhcmQvZWRnZXJvdXRlciIKLUtCUkFOQ0hfYmVhZ2xlYm9uZS15b2N0byA9ICJ2NC4xOS9zdGFuZGFyZC9iZWFnbGVib25lIgotS0JSQU5DSF9tcGM4MzE1ZS1yZGIgPSAidjQuMTkvc3RhbmRhcmQvZnNsLW1wYzgzMTVlLXJkYiIKLQotS01BQ0hJTkVfZ2VuZXJpY3g4NiA/PSAiY29tbW9uLXBjIgotS01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA/PSAiY29tbW9uLXBjLTY0IgotS01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA/PSAiYmVhZ2xlYm9uZSIKLQotU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4NiAgICA/PSAiNTY2NGRjMTQzOTllZGNhYWQyMTBiYmViNjM0M2Q4NDU2MWZiM2VhOCIKLVNSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYtNjQgPz0gIjU2NjRkYzE0Mzk5ZWRjYWFkMjEwYmJlYjYzNDNkODQ1NjFmYjNlYTgiCi1TUkNSRVZfbWFjaGluZV9lZGdlcm91dGVyID89ICI1NjY0ZGMxNDM5OWVkY2FhZDIxMGJiZWI2MzQzZDg0NTYxZmIzZWE4IgotU1JDUkVWX21hY2hpbmVfYmVhZ2xlYm9uZS15b2N0byA/PSAiNTY2NGRjMTQzOTllZGNhYWQyMTBiYmViNjM0M2Q4NDU2MWZiM2VhOCIKLVNSQ1JFVl9tYWNoaW5lX21wYzgzMTVlLXJkYiA/PSAiZDQxOWY0Y2E2YmE0YjA5N2I4YWQ3MTBhOTNiODk1MTBmNWIyOTk4YyIKLQotQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYgPSAiZ2VuZXJpY3g4NiIKLUNPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2LTY0ID0gImdlbmVyaWN4ODYtNjQiCi1DT01QQVRJQkxFX01BQ0hJTkVfZWRnZXJvdXRlciA9ICJlZGdlcm91dGVyIgotQ09NUEFUSUJMRV9NQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPSAiYmVhZ2xlYm9uZS15b2N0byIKLUNPTVBBVElCTEVfTUFDSElORV9tcGM4MzE1ZS1yZGIgPSAibXBjODMxNWUtcmRiIgotCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYgPSAiNC4xOS4zNCIKLUxJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4Ni02NCA9ICI0LjE5LjM0IgotTElOVVhfVkVSU0lPTl9lZGdlcm91dGVyID0gIjQuMTkuMzQiCi1MSU5VWF9WRVJTSU9OX2JlYWdsZWJvbmUteW9jdG8gPSAiNC4xOS4zNCIKLUxJTlVYX1ZFUlNJT05fbXBjODMxNWUtcmRiID0gIjQuMTkuMzQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuMi5iYmFwcGVuZCBiL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4yLmJiYXBwZW5kCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTViY2NiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4yLmJiYXBwZW5kCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotS0JSQU5DSF9nZW5lcmljeDg2ICA9ICJ2NS4yL3N0YW5kYXJkL2Jhc2UiCi1LQlJBTkNIX2dlbmVyaWN4ODYtNjQgID0gInY1LjIvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfZWRnZXJvdXRlciA9ICJ2NS4yL3N0YW5kYXJkL2VkZ2Vyb3V0ZXIiCi1LQlJBTkNIX2JlYWdsZWJvbmUteW9jdG8gPSAidjUuMi9zdGFuZGFyZC9iZWFnbGVib25lIgotS0JSQU5DSF9tcGM4MzE1ZS1yZGIgPSAidjUuMi9zdGFuZGFyZC9mc2wtbXBjODMxNWUtcmRiIgotCi1LTUFDSElORV9nZW5lcmljeDg2ID89ICJjb21tb24tcGMiCi1LTUFDSElORV9nZW5lcmljeDg2LTY0ID89ICJjb21tb24tcGMtNjQiCi1LTUFDSElORV9iZWFnbGVib25lLXlvY3RvID89ICJiZWFnbGVib25lIgotCi1TUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2ICAgID89ICIyNWIxNGNkZjk2NTljNjhhYjMyZDY2NjE2ZGZkYmJlMmVjZTNmZDk0IgotU1JDUkVWX21hY2hpbmVfZ2VuZXJpY3g4Ni02NCA/PSAiMjViMTRjZGY5NjU5YzY4YWIzMmQ2NjYxNmRmZGJiZTJlY2UzZmQ5NCIKLVNSQ1JFVl9tYWNoaW5lX2VkZ2Vyb3V0ZXIgPz0gIjI1YjE0Y2RmOTY1OWM2OGFiMzJkNjY2MTZkZmRiYmUyZWNlM2ZkOTQiCi1TUkNSRVZfbWFjaGluZV9iZWFnbGVib25lLXlvY3RvID89ICIyNWIxNGNkZjk2NTljNjhhYjMyZDY2NjE2ZGZkYmJlMmVjZTNmZDk0IgotU1JDUkVWX21hY2hpbmVfbXBjODMxNWUtcmRiID89ICI3N2YwMzFiMTgyODg1YzE3N2IzYTk2MDk4YWU2MTI3MTkxMWE3OTU0IgotCi1DT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4NiA9ICJnZW5lcmljeDg2IgotQ09NUEFUSUJMRV9NQUNISU5FX2dlbmVyaWN4ODYtNjQgPSAiZ2VuZXJpY3g4Ni02NCIKLUNPTVBBVElCTEVfTUFDSElORV9lZGdlcm91dGVyID0gImVkZ2Vyb3V0ZXIiCi1DT01QQVRJQkxFX01BQ0hJTkVfYmVhZ2xlYm9uZS15b2N0byA9ICJiZWFnbGVib25lLXlvY3RvIgotQ09NUEFUSUJMRV9NQUNISU5FX21wYzgzMTVlLXJkYiA9ICJtcGM4MzE1ZS1yZGIiCi0KLUxJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4NiA9ICI1LjIuMTciCi1MSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNS4yLjE3IgotTElOVVhfVkVSU0lPTl9lZGdlcm91dGVyID0gIjUuMi4xNyIKLUxJTlVYX1ZFUlNJT05fYmVhZ2xlYm9uZS15b2N0byA9ICI1LjIuMTciCi1MSU5VWF9WRVJTSU9OX21wYzgzMTVlLXJkYiA9ICI1LjIuMTciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuNC5iYmFwcGVuZCBiL3Bva3kvbWV0YS15b2N0by1ic3AvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS40LmJiYXBwZW5kCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk3MzRjZDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEteW9jdG8tYnNwL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuNC5iYmFwcGVuZApAQCAtMCwwICsxLDIzIEBACitLQlJBTkNIX2dlbmVyaWN4ODYgID0gInY1LjQvc3RhbmRhcmQvYmFzZSIKK0tCUkFOQ0hfZ2VuZXJpY3g4Ni02NCAgPSAidjUuNC9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9lZGdlcm91dGVyID0gInY1LjQvc3RhbmRhcmQvZWRnZXJvdXRlciIKK0tCUkFOQ0hfYmVhZ2xlYm9uZS15b2N0byA9ICJ2NS40L3N0YW5kYXJkL2JlYWdsZWJvbmUiCisKK0tNQUNISU5FX2dlbmVyaWN4ODYgPz0gImNvbW1vbi1wYyIKK0tNQUNISU5FX2dlbmVyaWN4ODYtNjQgPz0gImNvbW1vbi1wYy02NCIKK0tNQUNISU5FX2JlYWdsZWJvbmUteW9jdG8gPz0gImJlYWdsZWJvbmUiCisKK1NSQ1JFVl9tYWNoaW5lX2dlbmVyaWN4ODYgPz0gImY0ZDdkYmFmYjEwM2U0Zjc4MjMyMzAxN2MyMzljNTQ4ODcxYzE1NjciCitTUkNSRVZfbWFjaGluZV9nZW5lcmljeDg2LTY0ID89ICJmNGQ3ZGJhZmIxMDNlNGY3ODIzMjMwMTdjMjM5YzU0ODg3MWMxNTY3IgorU1JDUkVWX21hY2hpbmVfZWRnZXJvdXRlciA/PSAiZjRkN2RiYWZiMTAzZTRmNzgyMzIzMDE3YzIzOWM1NDg4NzFjMTU2NyIKK1NSQ1JFVl9tYWNoaW5lX2JlYWdsZWJvbmUteW9jdG8gPz0gImY0ZDdkYmFmYjEwM2U0Zjc4MjMyMzAxN2MyMzljNTQ4ODcxYzE1NjciCisKK0NPTVBBVElCTEVfTUFDSElORV9nZW5lcmljeDg2ID0gImdlbmVyaWN4ODYiCitDT01QQVRJQkxFX01BQ0hJTkVfZ2VuZXJpY3g4Ni02NCA9ICJnZW5lcmljeDg2LTY0IgorQ09NUEFUSUJMRV9NQUNISU5FX2VkZ2Vyb3V0ZXIgPSAiZWRnZXJvdXRlciIKK0NPTVBBVElCTEVfTUFDSElORV9iZWFnbGVib25lLXlvY3RvID0gImJlYWdsZWJvbmUteW9jdG8iCisKK0xJTlVYX1ZFUlNJT05fZ2VuZXJpY3g4NiA9ICI1LjQuMjAiCitMSU5VWF9WRVJTSU9OX2dlbmVyaWN4ODYtNjQgPSAiNS40LjIwIgorTElOVVhfVkVSU0lPTl9lZGdlcm91dGVyID0gIjUuNC4yMCIKK0xJTlVYX1ZFUlNJT05fYmVhZ2xlYm9uZS15b2N0byA9ICI1LjQuMjAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEteW9jdG8tYnNwL3dpYy9nZW5lcmljeDg2LndrcyBiL3Bva3kvbWV0YS15b2N0by1ic3Avd2ljL2dlbmVyaWN4ODYud2tzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYWI3MTljLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS15b2N0by1ic3Avd2ljL2dlbmVyaWN4ODYud2tzCisrKyAvZGV2L251bGwKQEAgLTEsNyArMCwwIEBACi0jIHNob3J0LWRlc2NyaXB0aW9uOiBDcmVhdGUgYW4gRUZJIGRpc2sgaW1hZ2UgZm9yIGdlbmVyaWN4ODYqCi0jIGxvbmctZGVzY3JpcHRpb246IENyZWF0ZXMgYSBwYXJ0aXRpb25lZCBFRkkgZGlzayBpbWFnZSBmb3IgZ2VuZXJpY3g4NiogbWFjaGluZXMKLXBhcnQgL2Jvb3QgLS1zb3VyY2UgYm9vdGltZy1lZmkgLS1zb3VyY2VwYXJhbXM9ImxvYWRlcj1ncnViLWVmaSIgLS1vbmRpc2sgc2RhIC0tbGFiZWwgbXNkb3MgLS1hY3RpdmUgLS1hbGlnbiAxMDI0Ci1wYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIHNkYSAtLWZzdHlwZT1leHQ0IC0tbGFiZWwgcGxhdGZvcm0gLS1hbGlnbiAxMDI0IC0tdXNlLXV1aWQKLXBhcnQgc3dhcCAtLW9uZGlzayBzZGEgLS1zaXplIDQ0IC0tbGFiZWwgc3dhcDEgLS1mc3R5cGU9c3dhcAotCi1ib290bG9hZGVyIC0tcHRhYmxlIGdwdCAtLXRpbWVvdXQ9NSAtLWFwcGVuZD0icm9vdGZzdHlwZT1leHQ0IGNvbnNvbGU9dHR5UzAsMTE1MjAwIGNvbnNvbGU9dHR5MCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS15b2N0by1ic3Avd2ljL2dlbmVyaWN4ODYud2tzLmluIGIvcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvZ2VuZXJpY3g4Ni53a3MuaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MwOWFkMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS15b2N0by1ic3Avd2ljL2dlbmVyaWN4ODYud2tzLmluCkBAIC0wLDAgKzEsNyBAQAorIyBzaG9ydC1kZXNjcmlwdGlvbjogQ3JlYXRlIGFuIEVGSSBkaXNrIGltYWdlIGZvciBnZW5lcmljeDg2KgorIyBsb25nLWRlc2NyaXB0aW9uOiBDcmVhdGVzIGEgcGFydGl0aW9uZWQgRUZJIGRpc2sgaW1hZ2UgZm9yIGdlbmVyaWN4ODYqIG1hY2hpbmVzCitwYXJ0IC9ib290IC0tc291cmNlIGJvb3RpbWctZWZpIC0tc291cmNlcGFyYW1zPSJsb2FkZXI9JHtFRklfUFJPVklERVJ9IiAtLW9uZGlzayBzZGEgLS1sYWJlbCBtc2RvcyAtLWFjdGl2ZSAtLWFsaWduIDEwMjQKK3BhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgc2RhIC0tZnN0eXBlPWV4dDQgLS1sYWJlbCBwbGF0Zm9ybSAtLWFsaWduIDEwMjQgLS11c2UtdXVpZAorcGFydCBzd2FwIC0tb25kaXNrIHNkYSAtLXNpemUgNDQgLS1sYWJlbCBzd2FwMSAtLWZzdHlwZT1zd2FwCisKK2Jvb3Rsb2FkZXIgLS1wdGFibGUgZ3B0IC0tdGltZW91dD01IC0tYXBwZW5kPSJyb290ZnN0eXBlPWV4dDQgY29uc29sZT10dHlTMCwxMTUyMDAgY29uc29sZT10dHkwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvbXBjODMxNWUtcmRiLndrcyBiL3Bva3kvbWV0YS15b2N0by1ic3Avd2ljL21wYzgzMTVlLXJkYi53a3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQwY2I2MDcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhLXlvY3RvLWJzcC93aWMvbXBjODMxNWUtcmRiLndrcworKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotIyBzaG9ydC1kZXNjcmlwdGlvbjogQ3JlYXRlIFNEIGNhcmQgaW1hZ2UgZm9yIE1QQzgzMTVFLVJEQgotIyBsb25nLWRlc2NyaXB0aW9uOiBDcmVhdGUgYSBwYXJ0aXRpb25lZCBTRCBjYXJkIGltYWdlIGZvciBGcmVlc2NhbGUgTVBDODMxNUUtUkRCIHJlZmVyZW5jZSBoYXJkd2FyZS4KLXBhcnQgL2Jvb3QgLS1zb3VyY2UgYm9vdGltZy1wYXJ0aXRpb24gLS1vbmRpc2sgc2RiIC0tZnN0eXBlPWV4dDMgLS1sYWJlbCBib290Ci1wYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIHNkYiAtLWZzdHlwZT1leHQzIC0tbGFiZWwgcm9vdApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2FyY2hpdmVyLmJiY2xhc3MKaW5kZXggN2M0NmNmZi4uNDhiNDkxMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvYXJjaGl2ZXIuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9hcmNoaXZlci5iYmNsYXNzCkBAIC0yLDI1ICsyLDQyIEBACiAjIC0qLSB0YWItd2lkdGg6IDQ7IGMtYmFzaWMtb2Zmc2V0OiA0OyBpbmRlbnQtdGFicy1tb2RlOiBuaWwgLSotCiAjCiAjIFRoaXMgYmJjbGFzcyBpcyB1c2VkIGZvciBjcmVhdGluZyBhcmNoaXZlIGZvcjoKLSMgMSkgb3JpZ2luYWwgKG9yIHVucGFja2VkKSBzb3VyY2U6IEFSQ0hJVkVSX01PREVbc3JjXSA9ICJvcmlnaW5hbCIKLSMgMikgcGF0Y2hlZCBzb3VyY2U6IEFSQ0hJVkVSX01PREVbc3JjXSA9ICJwYXRjaGVkIiAoZGVmYXVsdCkKLSMgMykgY29uZmlndXJlZCBzb3VyY2U6IEFSQ0hJVkVSX01PREVbc3JjXSA9ICJjb25maWd1cmVkIgotIyA0KSBUaGUgcGF0Y2hlcyBiZXR3ZWVuIGRvX3VucGFjayBhbmQgZG9fcGF0Y2g6Ci0jICAgIEFSQ0hJVkVSX01PREVbZGlmZl0gPSAiMSIKLSMgICAgQW5kIHlvdSBjYW4gc2V0IHRoZSBvbmUgdGhhdCB5b3UnZCBsaWtlIHRvIGV4Y2x1ZGUgZnJvbSB0aGUgZGlmZjoKLSMgICAgQVJDSElWRVJfTU9ERVtkaWZmLWV4Y2x1ZGVdID89ICIucGMgYXV0b200dGUuY2FjaGUgcGF0Y2hlcyIKLSMgNSkgVGhlIGVudmlyb25tZW50IGRhdGEsIHNpbWlsYXIgdG8gJ2JpdGJha2UgLWUgcmVjaXBlJzoKLSMgICAgQVJDSElWRVJfTU9ERVtkdW1wZGF0YV0gPSAiMSIKLSMgNikgVGhlIHJlY2lwZSAoLmJiIGFuZCAuaW5jKTogQVJDSElWRVJfTU9ERVtyZWNpcGVdID0gIjEiCi0jIDcpIFdoZXRoZXIgb3V0cHV0IHRoZSAuc3JjLnJwbSBwYWNrYWdlOgotIyAgICBBUkNISVZFUl9NT0RFW3NycG1dID0gIjEiCi0jIDgpIEZpbHRlciB0aGUgbGljZW5zZSwgdGhlIHJlY2lwZSB3aG9zZSBsaWNlbnNlIGluCi0jICAgIENPUFlMRUZUX0xJQ0VOU0VfSU5DTFVERSB3aWxsIGJlIGluY2x1ZGVkLCBhbmQgaW4KLSMgICAgQ09QWUxFRlRfTElDRU5TRV9FWENMVURFIHdpbGwgYmUgZXhjbHVkZWQuCi0jICAgIENPUFlMRUZUX0xJQ0VOU0VfSU5DTFVERSA9ICdHUEwqIExHUEwqJwotIyAgICBDT1BZTEVGVF9MSUNFTlNFX0VYQ0xVREUgPSAnQ0xPU0VEIFByb3ByaWV0YXJ5JwotIyA5KSBUaGUgcmVjaXBlIHR5cGUgdGhhdCB3aWxsIGJlIGFyY2hpdmVkOgotIyAgICBDT1BZTEVGVF9SRUNJUEVfVFlQRVMgPSAndGFyZ2V0JworIyAgMSkgb3JpZ2luYWwgKG9yIHVucGFja2VkKSBzb3VyY2U6IEFSQ0hJVkVSX01PREVbc3JjXSA9ICJvcmlnaW5hbCIKKyMgIDIpIHBhdGNoZWQgc291cmNlOiBBUkNISVZFUl9NT0RFW3NyY10gPSAicGF0Y2hlZCIgKGRlZmF1bHQpCisjICAzKSBjb25maWd1cmVkIHNvdXJjZTogQVJDSElWRVJfTU9ERVtzcmNdID0gImNvbmZpZ3VyZWQiCisjICA0KSBzb3VyY2UgbWlycm9yOiBBUkNISVZFX01PREVbc3JjXSA9ICJtaXJyb3IiCisjICA1KSBUaGUgcGF0Y2hlcyBiZXR3ZWVuIGRvX3VucGFjayBhbmQgZG9fcGF0Y2g6CisjICAgICBBUkNISVZFUl9NT0RFW2RpZmZdID0gIjEiCisjICAgICBBbmQgeW91IGNhbiBzZXQgdGhlIG9uZSB0aGF0IHlvdSdkIGxpa2UgdG8gZXhjbHVkZSBmcm9tIHRoZSBkaWZmOgorIyAgICAgQVJDSElWRVJfTU9ERVtkaWZmLWV4Y2x1ZGVdID89ICIucGMgYXV0b200dGUuY2FjaGUgcGF0Y2hlcyIKKyMgIDYpIFRoZSBlbnZpcm9ubWVudCBkYXRhLCBzaW1pbGFyIHRvICdiaXRiYWtlIC1lIHJlY2lwZSc6CisjICAgICBBUkNISVZFUl9NT0RFW2R1bXBkYXRhXSA9ICIxIgorIyAgNykgVGhlIHJlY2lwZSAoLmJiIGFuZCAuaW5jKTogQVJDSElWRVJfTU9ERVtyZWNpcGVdID0gIjEiCisjICA4KSBXaGV0aGVyIG91dHB1dCB0aGUgLnNyYy5ycG0gcGFja2FnZToKKyMgICAgIEFSQ0hJVkVSX01PREVbc3JwbV0gPSAiMSIKKyMgIDkpIEZpbHRlciB0aGUgbGljZW5zZSwgdGhlIHJlY2lwZSB3aG9zZSBsaWNlbnNlIGluCisjICAgICBDT1BZTEVGVF9MSUNFTlNFX0lOQ0xVREUgd2lsbCBiZSBpbmNsdWRlZCwgYW5kIGluCisjICAgICBDT1BZTEVGVF9MSUNFTlNFX0VYQ0xVREUgd2lsbCBiZSBleGNsdWRlZC4KKyMgICAgIENPUFlMRUZUX0xJQ0VOU0VfSU5DTFVERSA9ICdHUEwqIExHUEwqJworIyAgICAgQ09QWUxFRlRfTElDRU5TRV9FWENMVURFID0gJ0NMT1NFRCBQcm9wcmlldGFyeScKKyMgMTApIFRoZSByZWNpcGUgdHlwZSB0aGF0IHdpbGwgYmUgYXJjaGl2ZWQ6CisjICAgICBDT1BZTEVGVF9SRUNJUEVfVFlQRVMgPSAndGFyZ2V0JworIyAxMSkgVGhlIHNvdXJjZSBtaXJyb3IgbW9kZToKKyMgICAgIEFSQ0hJVkVSX01PREVbbWlycm9yXSA9ICJzcGxpdCIgKGRlZmF1bHQpOiBTb3VyY2VzIGFyZSBzcGxpdCBpbnRvCisjICAgICBwZXItcmVjaXBlIGRpcmVjdG9yaWVzIGluIGEgc2ltaWxhciB3YXkgdG8gb3RoZXIgYXJjaGl2ZXIgbW9kZXMuCisjICAgICBQb3N0LXByb2Nlc3NpbmcgbWF5IGJlIHJlcXVpcmVkIHRvIHByb2R1Y2UgYSBzaW5nbGUgbWlycm9yIGRpcmVjdG9yeS4KKyMgICAgIFRoaXMgZG9lcyBob3dldmVyIGFsbG93IGluc3BlY3Rpb24gb2YgZHVwbGljYXRlIHNvdXJjZXMgYW5kIG1vcmUKKyMgICAgIGludGVsbGlnZW50IGhhbmRsaW5nLgorIyAgICAgQVJDSElWRVJfTU9ERVttaXJyb3JdID0gImNvbWJpbmVkIjogQWxsIHNvdXJjZXMgYXJlIHBsYWNlZCBpbnRvIGEgc2luZ2xlCisjICAgICBkaXJlY3Rvcnkgc3VpdGFibGUgZm9yIGRpcmVjdCB1c2UgYXMgYSBtaXJyb3IuIER1cGxpY2F0ZSBzb3VyY2VzIGFyZQorIyAgICAgaWdub3JlZC4KKyMgMTIpIFNvdXJjZSBtaXJyb3IgZXhjbHVzaW9uczoKKyMgICAgIEFSQ0hJVkVSX01JUlJPUl9FWENMVURFIGlzIGEgbGlzdCBvZiBwcmVmaXhlcyB0byBleGNsdWRlIGZyb20gdGhlIG1pcnJvci4KKyMgICAgIFRoaXMgbWF5IGJlIHVzZWQgZm9yIHNvdXJjZXMgd2hpY2ggeW91IGFyZSBhbHJlYWR5IHB1Ymxpc2hpbmcgeW91cnNlbGYKKyMgICAgIChlLmcuIGlmIHRoZSBVUkkgc3RhcnRzIHdpdGggJ2h0dHBzOi8vbXlzaXRlLmNvbS8nIGFuZCB5b3VyIG1pcnJvciBpcworIyAgICAgZ29pbmcgdG8gYmUgcHVibGlzaGVkIHRvIHRoZSBzYW1lIHNpdGUpLiBJdCBtYXkgYWxzbyBiZSB1c2VkIHRvIGV4Y2x1ZGUKKyMgICAgIGxvY2FsIGZpbGVzICh3aXRoIHRoZSBwcmVmaXggJ2ZpbGU6Ly8nKSBpZiB0aGVzZSB3aWxsIGJlIHByb3ZpZGVkIGFzIHBhcnQKKyMgICAgIG9mIGFuIGFyY2hpdmUgb2YgdGhlIGxheWVycyB0aGVtc2VsdmVzLgogIwogCiAjIENyZWF0ZSBhcmNoaXZlIGZvciBhbGwgdGhlIHJlY2lwZSB0eXBlcwpAQCAtMzMsNiArNTAsNyBAQAogQVJDSElWRVJfTU9ERVtkaWZmLWV4Y2x1ZGVdID89ICIucGMgYXV0b200dGUuY2FjaGUgcGF0Y2hlcyIKIEFSQ0hJVkVSX01PREVbZHVtcGRhdGFdID89ICIwIgogQVJDSElWRVJfTU9ERVtyZWNpcGVdID89ICIwIgorQVJDSElWRVJfTU9ERVttaXJyb3JdID89ICJzcGxpdCIKIAogREVQTE9ZX0RJUl9TUkMgPz0gIiR7REVQTE9ZX0RJUn0vc291cmNlcyIKIEFSQ0hJVkVSX1RPUERJUiA/PSAiJHtXT1JLRElSfS9kZXBsb3ktc291cmNlcyIKQEAgLTQxLDYgKzU5LDEwIEBACiBBUkNISVZFUl9SUE1PVVRESVIgPSAiJHtBUkNISVZFUl9SUE1UT1BESVJ9LyR7VEFSR0VUX1NZU30vJHtQRn0vIgogQVJDSElWRVJfV09SS0RJUiA9ICIke1dPUktESVJ9L2FyY2hpdmVyLXdvcmsvIgogCisjIFdoZW4gcHJvZHVjaW5nIGEgY29tYmluZWQgbWlycm9yIGRpcmVjdG9yeSwgYWxsb3cgZHVwbGljYXRlcyBmb3IgdGhlIGNhc2UKKyMgd2hlcmUgbXVsdGlwbGUgcmVjaXBlcyB1c2UgdGhlIHNhbWUgU1JDX1VSSS4KK0FSQ0hJVkVSX0NPTUJJTkVEX01JUlJPUkRJUiA9ICIke0FSQ0hJVkVSX1RPUERJUn0vbWlycm9yIgorU1NUQVRFX0RVUFdISVRFTElTVCArPSAiJHtERVBMT1lfRElSX1NSQ30vbWlycm9yIgogCiBkb19kdW1wZGF0YVtkaXJzXSA9ICIke0FSQ0hJVkVSX09VVERJUn0iCiBkb19hcl9yZWNpcGVbZGlyc10gPSAiJHtBUkNISVZFUl9PVVRESVJ9IgpAQCAtMTA2LDYgKzEyOCw4IEBACiAgICAgICAgIGVsaWYgaGFzVGFzaygiZG9fY29uZmlndXJlIik6CiAgICAgICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2FyX2NvbmZpZ3VyZWQnLCAnZGVwZW5kcycsICcgJXM6ZG9fY29uZmlndXJlJyAlIHBuKQogICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2RlcGxveV9hcmNoaXZlcycsICdkZXBlbmRzJywgJyAlczpkb19hcl9jb25maWd1cmVkJyAlIHBuKQorICAgIGVsaWYgYXJfc3JjID09ICJtaXJyb3IiOgorICAgICAgICBkLmFwcGVuZFZhckZsYWcoJ2RvX2RlcGxveV9hcmNoaXZlcycsICdkZXBlbmRzJywgJyVzOmRvX2FyX21pcnJvcicgJSBwbikKIAogICAgIGVsaWYgYXJfc3JjOgogICAgICAgICBiYi5mYXRhbCgiSW52YWxpZCBBUkNISVZFUl9NT0RFW3NyY106ICVzIiAlIGFyX3NyYykKQEAgLTI4MSw2ICszMDUsNzkgQEAKICAgICAgICAgY3JlYXRlX3RhcmJhbGwoZCwgc3JjZGlyLCAnY29uZmlndXJlZCcsIGFyX291dGRpcikKIH0KIAorcHl0aG9uIGRvX2FyX21pcnJvcigpIHsKKyAgICBpbXBvcnQgc3VicHJvY2VzcworCisgICAgc3JjX3VyaSA9IChkLmdldFZhcignU1JDX1VSSScpIG9yICcnKS5zcGxpdCgpCisgICAgaWYgbGVuKHNyY191cmkpID09IDA6CisgICAgICAgIHJldHVybgorCisgICAgZGxfZGlyID0gZC5nZXRWYXIoJ0RMX0RJUicpCisgICAgbWlycm9yX2V4Y2x1c2lvbnMgPSAoZC5nZXRWYXIoJ0FSQ0hJVkVSX01JUlJPUl9FWENMVURFJykgb3IgJycpLnNwbGl0KCkKKyAgICBtaXJyb3JfbW9kZSA9IGQuZ2V0VmFyRmxhZygnQVJDSElWRVJfTU9ERScsICdtaXJyb3InKQorICAgIGhhdmVfbWlycm9yX3RhcmJhbGxzID0gZC5nZXRWYXIoJ0JCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUycpCisKKyAgICBpZiBtaXJyb3JfbW9kZSA9PSAnY29tYmluZWQnOgorICAgICAgICBkZXN0ZGlyID0gZC5nZXRWYXIoJ0FSQ0hJVkVSX0NPTUJJTkVEX01JUlJPUkRJUicpCisgICAgZWxpZiBtaXJyb3JfbW9kZSA9PSAnc3BsaXQnOgorICAgICAgICBkZXN0ZGlyID0gZC5nZXRWYXIoJ0FSQ0hJVkVSX09VVERJUicpCisgICAgZWxzZToKKyAgICAgICAgYmIuZmF0YWwoJ0ludmFsaWQgQVJDSElWRVJfTU9ERVttaXJyb3JdOiAlcycgJSAobWlycm9yX21vZGUpKQorCisgICAgaWYgbm90IGhhdmVfbWlycm9yX3RhcmJhbGxzOgorICAgICAgICBiYi5mYXRhbCgnVXNpbmcgYEFSQ0hJVkVSX01PREVbc3JjXSA9ICJtaXJyb3IiYCBkZXBlbmRzIG9uIHNldHRpbmcgYEJCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUyA9ICIxImAnKQorCisgICAgZGVmIGlzX2V4Y2x1ZGVkKHVybCk6CisgICAgICAgIGZvciBwcmVmaXggaW4gbWlycm9yX2V4Y2x1c2lvbnM6CisgICAgICAgICAgICBpZiB1cmwuc3RhcnRzd2l0aChwcmVmaXgpOgorICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIHJldHVybiBGYWxzZQorCisgICAgYmIubm90ZSgnQXJjaGl2aW5nIHRoZSBzb3VyY2UgYXMgYSBtaXJyb3IuLi4nKQorCisgICAgYmIudXRpbHMubWtkaXJoaWVyKGRlc3RkaXIpCisKKyAgICBmZXRjaGVyID0gYmIuZmV0Y2gyLkZldGNoKHNyY191cmksIGQpCisKKyAgICBmb3IgdXJsIGluIGZldGNoZXIudXJsczoKKyAgICAgICAgaWYgaXNfZXhjbHVkZWQodXJsKToKKyAgICAgICAgICAgIGJiLm5vdGUoJ1NraXBwaW5nIGV4Y2x1ZGVkIHVybDogJXMnICUgKHVybCkpCisgICAgICAgICAgICBjb250aW51ZQorCisgICAgICAgIGJiLm5vdGUoJ0FyY2hpdmluZyB1cmw6ICVzJyAlICh1cmwpKQorICAgICAgICB1ZCA9IGZldGNoZXIudWRbdXJsXQorICAgICAgICB1ZC5zZXR1cF9sb2NhbHBhdGgoZCkKKyAgICAgICAgbG9jYWxwYXRoID0gTm9uZQorCisgICAgICAgICMgQ2hlY2sgZm9yIG1pcnJvciB0YXJiYWxscyBmaXJzdC4gV2Ugd2lsbCBhcmNoaXZlIHRoZSBmaXJzdCBtaXJyb3IKKyAgICAgICAgIyB0YXJiYWxsIHRoYXQgd2UgZmluZCBhcyBpdCdzIGFzc3VtZWQgdGhhdCB3ZSBqdXN0IG5lZWQgb25lLgorICAgICAgICBmb3IgbWlycm9yX2ZuYW1lIGluIHVkLm1pcnJvcnRhcmJhbGxzOgorICAgICAgICAgICAgbWlycm9yX3BhdGggPSBvcy5wYXRoLmpvaW4oZGxfZGlyLCBtaXJyb3JfZm5hbWUpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhtaXJyb3JfcGF0aCk6CisgICAgICAgICAgICAgICAgYmIubm90ZSgnRm91bmQgbWlycm9yIHRhcmJhbGw6ICVzJyAlIChtaXJyb3JfcGF0aCkpCisgICAgICAgICAgICAgICAgbG9jYWxwYXRoID0gbWlycm9yX3BhdGgKKyAgICAgICAgICAgICAgICBicmVhaworCisgICAgICAgIGlmIGxlbih1ZC5taXJyb3J0YXJiYWxscykgYW5kIG5vdCBsb2NhbHBhdGg6CisgICAgICAgICAgICBiYi53YXJuKCdNaXJyb3IgdGFyYmFsbHMgYXJlIGxpc3RlZCBmb3IgYSBzb3VyY2UgYnV0IG5vbmUgYXJlIHByZXNlbnQuICcgXAorICAgICAgICAgICAgICAgICAgICAnRmFsbGluZyBiYWNrIHRvIG9yaWdpbmFsIGRvd25sb2FkLlxuJyBcCisgICAgICAgICAgICAgICAgICAgICdTUkNfVVJJID0gJXMnICUgKHVybCkpCisKKyAgICAgICAgIyBDaGVjayBvcmlnaW5hbCBkb3dubG9hZAorICAgICAgICBpZiBub3QgbG9jYWxwYXRoOgorICAgICAgICAgICAgYmIubm90ZSgnVXNpbmcgb3JpZ2luYWwgZG93bmxvYWQ6ICVzJyAlICh1ZC5sb2NhbHBhdGgpKQorICAgICAgICAgICAgbG9jYWxwYXRoID0gdWQubG9jYWxwYXRoCisKKyAgICAgICAgaWYgbm90IGxvY2FscGF0aCBvciBub3Qgb3MucGF0aC5leGlzdHMobG9jYWxwYXRoKToKKyAgICAgICAgICAgIGJiLmZhdGFsKCdPcmlnaW5hbCBkb3dubG9hZCBpcyBtaXNzaW5nIGZvciBhIHNvdXJjZS5cbicgXAorICAgICAgICAgICAgICAgICAgICAgICAgJ1NSQ19VUkkgPSAlcycgJSAodXJsKSkKKworICAgICAgICAjIFdlIG5vdyBoYXZlIGFuIGFwcHJvcHJpYXRlIGxvY2FscGF0aAorICAgICAgICBiYi5ub3RlKCdDb3B5aW5nIHNvdXJjZSBtaXJyb3InKQorICAgICAgICBjbWQgPSAnY3AgLWZwUFJIICVzICVzJyAlIChsb2NhbHBhdGgsIGRlc3RkaXIpCisgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChjbWQsIHNoZWxsPVRydWUpCit9CisKIGRlZiBleGNsdWRlX3VzZWxlc3NfcGF0aHModGFyaW5mbyk6CiAgICAgaWYgdGFyaW5mby5pc2RpcigpOgogICAgICAgICBpZiB0YXJpbmZvLm5hbWUuZW5kc3dpdGgoJy90ZW1wJykgb3IgdGFyaW5mby5uYW1lLmVuZHN3aXRoKCcvcGF0Y2hlcycpIG9yIHRhcmluZm8ubmFtZS5lbmRzd2l0aCgnLy5wYycpOgpAQCAtNDgzLDYgKzU4MCw3IEBACiBhZGR0YXNrIGRvX3VucGFja19hbmRfcGF0Y2ggYWZ0ZXIgZG9fcGF0Y2gKIGFkZHRhc2sgZG9fYXJfcGF0Y2hlZCBhZnRlciBkb191bnBhY2tfYW5kX3BhdGNoCiBhZGR0YXNrIGRvX2FyX2NvbmZpZ3VyZWQgYWZ0ZXIgZG9fdW5wYWNrX2FuZF9wYXRjaAorYWRkdGFzayBkb19hcl9taXJyb3IgYWZ0ZXIgZG9fZmV0Y2gKIGFkZHRhc2sgZG9fZHVtcGRhdGEKIGFkZHRhc2sgZG9fYXJfcmVjaXBlCiBhZGR0YXNrIGRvX2RlcGxveV9hcmNoaXZlcyBiZWZvcmUgZG9fYnVpbGQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2F1dG90b29scy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3MKaW5kZXggM2QyMmFkMC4uNmMyYTMzYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvYXV0b3Rvb2xzLmJiY2xhc3MKQEAgLTkwLDcgKzkwLDcgQEAKIAljZmdzY3JpcHQ9YHB5dGhvbjMgLWMgImltcG9ydCBvczsgcHJpbnQob3MucGF0aC5yZWxwYXRoKG9zLnBhdGguZGlybmFtZSgnJHtDT05GSUdVUkVfU0NSSVBUfScpLCAnLicpKSJgLyRjZmdzY3JpcHRfbmFtZQogCWlmIFsgLXggIiRjZmdzY3JpcHQiIF0gOyB0aGVuCiAJCWJibm90ZSAiUnVubmluZyAkY2Znc2NyaXB0ICR7Q09ORklHVVJFT1BUU30gJHtFWFRSQV9PRUNPTkZ9ICRAIgotCQlpZiAhICR7Q0FDSEVEX0NPTkZJR1VSRVZBUlN9ICRjZmdzY3JpcHQgJHtDT05GSUdVUkVPUFRTfSAke0VYVFJBX09FQ09ORn0gIiRAIjsgdGhlbgorCQlpZiAhICR7Q0FDSEVEX0NPTkZJR1VSRVZBUlN9IENPTkZJR19TSEVMTD0vYmluL2Jhc2ggJGNmZ3NjcmlwdCAke0NPTkZJR1VSRU9QVFN9ICR7RVhUUkFfT0VDT05GfSAiJEAiOyB0aGVuCiAJCQliYm5vdGUgIlRoZSBmb2xsb3dpbmcgY29uZmlnLmxvZyBmaWxlcyBtYXkgcHJvdmlkZSBmdXJ0aGVyIGluZm9ybWF0aW9uLiIKIAkJCWJibm90ZSBgZmluZCAke0J9IC1pZ25vcmVfcmVhZGRpcl9yYWNlIC10eXBlIGYgLW5hbWUgY29uZmlnLmxvZ2AKIAkJCWJiZmF0YWxfbG9nICJjb25maWd1cmUgZmFpbGVkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvYmFzZS5iYmNsYXNzCmluZGV4IDFjZWEzYTIuLjQ1Zjk0MzUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2Jhc2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9iYXNlLmJiY2xhc3MKQEAgLTEyNyw2ICsxMjcsOSBAQAogICAgIGZvciB0b29sIGluIHRvb2xzOgogICAgICAgICBkZXN0dG9vbCA9IG9zLnBhdGguam9pbihkZXN0LCB0b29sKQogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGVzdHRvb2wpOgorICAgICAgICAgICAgIyBjbGVhbiB1cCBkZWFkIHN5bWxpbmsKKyAgICAgICAgICAgIGlmIG9zLnBhdGguaXNsaW5rKGRlc3R0b29sKToKKyAgICAgICAgICAgICAgICBvcy51bmxpbmsoZGVzdHRvb2wpCiAgICAgICAgICAgICBzcmN0b29sID0gYmIudXRpbHMud2hpY2gocGF0aCwgdG9vbCwgZXhlY3V0YWJsZT1UcnVlKQogICAgICAgICAgICAgIyBnY2MvZysrIG1heSBsaW5rIHRvIGNjYWNoZSBvbiBzb21lIGhvc3RzLCBlLmcuLAogICAgICAgICAgICAgIyAvdXNyL2xvY2FsL2Jpbi9jY2FjaGUvZ2NjIC0+IC91c3IvYmluL2NjYWNoZSwgdGhlbiB3aGljaChnY2MpCkBAIC0xMzgsMTEgKzE0MSw2IEBACiAgICAgICAgICAgICAgICAgb3Muc3ltbGluayhzcmN0b29sLCBkZXN0dG9vbCkKICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgbm90Zm91bmQuYXBwZW5kKHRvb2wpCi0gICAgIyBGb3JjZSAicHl0aG9uIiAtPiAicHl0aG9uMiIKLSAgICBkZXN0dG9vbCA9IG9zLnBhdGguam9pbihkZXN0LCAicHl0aG9uIikKLSAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoZGVzdHRvb2wpOgotICAgICAgICBzcmN0b29sID0gInB5dGhvbjIiCi0gICAgICAgIG9zLnN5bWxpbmsoc3JjdG9vbCwgZGVzdHRvb2wpCiAKICAgICBpZiBub3Rmb3VuZCBhbmQgZmF0YWw6CiAgICAgICAgIGJiLmZhdGFsKCJUaGUgZm9sbG93aW5nIHJlcXVpcmVkIHRvb2xzIChhcyBzcGVjaWZpZWQgYnkgSE9TVFRPT0xTKSBhcHBlYXIgdG8gYmUgdW5hdmFpbGFibGUgaW4gUEFUSCwgcGxlYXNlIGluc3RhbGwgdGhlbSBpbiBvcmRlciB0byBwcm9jZWVkOlxuICAlcyIgJSAiICIuam9pbihub3Rmb3VuZCkpCkBAIC0zOTUsNyArMzkzLDcgQEAKICAgICAjIFRoZXNlIHRha2UgdGhlIGZvcm06CiAgICAgIwogICAgICMgUEFDS0FHRUNPTkZJRyA/Pz0gIjxkZWZhdWx0IG9wdGlvbnM+IgotICAgICMgUEFDS0FHRUNPTkZJR1tmb29dID0gIi0tZW5hYmxlLWZvbywtLWRpc2FibGUtZm9vLGZvb19kZXBlbmRzLGZvb19ydW50aW1lX2RlcGVuZHMsZm9vX3J1bnRpbWVfcmVjb21tZW5kcyIKKyAgICAjIFBBQ0tBR0VDT05GSUdbZm9vXSA9ICItLWVuYWJsZS1mb28sLS1kaXNhYmxlLWZvbyxmb29fZGVwZW5kcyxmb29fcnVudGltZV9kZXBlbmRzLGZvb19ydW50aW1lX3JlY29tbWVuZHMsZm9vX2NvbmZsaWN0X3BhY2thZ2Vjb25maWciCiAgICAgcGtnY29uZmlnZmxhZ3MgPSBkLmdldFZhckZsYWdzKCJQQUNLQUdFQ09ORklHIikgb3Ige30KICAgICBpZiBwa2djb25maWdmbGFnczoKICAgICAgICAgcGtnY29uZmlnID0gKGQuZ2V0VmFyKCdQQUNLQUdFQ09ORklHJykgb3IgIiIpLnNwbGl0KCkKQEAgLTQ0Miw4ICs0NDAsOCBAQAogICAgICAgICBmb3IgZmxhZywgZmxhZ3ZhbCBpbiBzb3J0ZWQocGtnY29uZmlnZmxhZ3MuaXRlbXMoKSk6CiAgICAgICAgICAgICBpdGVtcyA9IGZsYWd2YWwuc3BsaXQoIiwiKQogICAgICAgICAgICAgbnVtID0gbGVuKGl0ZW1zKQotICAgICAgICAgICAgaWYgbnVtID4gNToKLSAgICAgICAgICAgICAgICBiYi5lcnJvcigiJXM6IFBBQ0tBR0VDT05GSUdbJXNdIE9ubHkgZW5hYmxlLGRpc2FibGUsZGVwZW5kLHJkZXBlbmQscnJlY29tbWVuZCBjYW4gYmUgc3BlY2lmaWVkISIKKyAgICAgICAgICAgIGlmIG51bSA+IDY6CisgICAgICAgICAgICAgICAgYmIuZXJyb3IoIiVzOiBQQUNLQUdFQ09ORklHWyVzXSBPbmx5IGVuYWJsZSxkaXNhYmxlLGRlcGVuZCxyZGVwZW5kLHJyZWNvbW1lbmQsY29uZmxpY3RfcGFja2FnZWNvbmZpZyBjYW4gYmUgc3BlY2lmaWVkISIKICAgICAgICAgICAgICAgICAgICAgJSAoZC5nZXRWYXIoJ1BOJyksIGZsYWcpKQogCiAgICAgICAgICAgICBpZiBmbGFnIGluIHBrZ2NvbmZpZzoKQEAgLTQ1Nyw2ICs0NTUsMjAgQEAKICAgICAgICAgICAgICAgICAgICAgZXh0cmFjb25mLmFwcGVuZChpdGVtc1swXSkKICAgICAgICAgICAgIGVsaWYgbnVtID49IDIgYW5kIGl0ZW1zWzFdOgogICAgICAgICAgICAgICAgICAgICBleHRyYWNvbmYuYXBwZW5kKGl0ZW1zWzFdKQorCisgICAgICAgICAgICBpZiBudW0gPj0gNiBhbmQgaXRlbXNbNV06CisgICAgICAgICAgICAgICAgY29uZmxpY3RzID0gc2V0KGl0ZW1zWzVdLnNwbGl0KCkpCisgICAgICAgICAgICAgICAgaW52YWxpZCA9IGNvbmZsaWN0cy5kaWZmZXJlbmNlKHNldChwa2djb25maWdmbGFncy5rZXlzKCkpKQorICAgICAgICAgICAgICAgIGlmIGludmFsaWQ6CisgICAgICAgICAgICAgICAgICAgIGJiLmVycm9yKCIlczogUEFDS0FHRUNPTkZJR1slc10gSW52YWxpZCBjb25mbGljdCBwYWNrYWdlIGNvbmZpZyVzICclcycgc3BlY2lmaWVkLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICUgKGQuZ2V0VmFyKCdQTicpLCBmbGFnLCAncycgaWYgbGVuKGludmFsaWQpID4gMSBlbHNlICcnLCAnICcuam9pbihpbnZhbGlkKSkpCisKKyAgICAgICAgICAgICAgICBpZiBmbGFnIGluIHBrZ2NvbmZpZzoKKyAgICAgICAgICAgICAgICAgICAgaW50ZXJzZWMgPSBjb25mbGljdHMuaW50ZXJzZWN0aW9uKHNldChwa2djb25maWcpKQorICAgICAgICAgICAgICAgICAgICBpZiBpbnRlcnNlYzoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLmZhdGFsKCIlczogUEFDS0FHRUNPTkZJR1slc10gQ29uZmxpY3QgcGFja2FnZSBjb25maWclcyAnJXMnIHNldCBpbiBQQUNLQUdFQ09ORklHLiIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChkLmdldFZhcignUE4nKSwgZmxhZywgJ3MnIGlmIGxlbihpbnRlcnNlYykgPiAxIGVsc2UgJycsICcgJy5qb2luKGludGVyc2VjKSkpCisKICAgICAgICAgYXBwZW5kVmFyKCdERVBFTkRTJywgZXh0cmFkZXBzKQogICAgICAgICBhcHBlbmRWYXIoJ1JERVBFTkRTXyR7UE59JywgZXh0cmFyZGVwcykKICAgICAgICAgYXBwZW5kVmFyKCdSUkVDT01NRU5EU18ke1BOfScsIGV4dHJhcnJlY3MpCkBAIC00OTgsNyArNTEwLDcgQEAKICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19kZXZzaGVsbCcsICdkZXBlbmRzJywgJyB2aXJ0dWFsL2Zha2Vyb290LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290JykKIAogICAgIG5lZWRfbWFjaGluZSA9IGQuZ2V0VmFyKCdDT01QQVRJQkxFX01BQ0hJTkUnKQotICAgIGlmIG5lZWRfbWFjaGluZToKKyAgICBpZiBuZWVkX21hY2hpbmUgYW5kIG5vdCBkLmdldFZhcignUEFSU0VfQUxMX1JFQ0lQRVMnLCBGYWxzZSk6CiAgICAgICAgIGltcG9ydCByZQogICAgICAgICBjb21wYXRfbWFjaGluZXMgPSAoZC5nZXRWYXIoJ01BQ0hJTkVPVkVSUklERVMnKSBvciAiIikuc3BsaXQoIjoiKQogICAgICAgICBmb3IgbSBpbiBjb21wYXRfbWFjaGluZXM6CkBAIC01MDcsNyArNTE5LDcgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoImluY29tcGF0aWJsZSB3aXRoIG1hY2hpbmUgJXMgKG5vdCBpbiBDT01QQVRJQkxFX01BQ0hJTkUpIiAlIGQuZ2V0VmFyKCdNQUNISU5FJykpCiAKLSAgICBzb3VyY2VfbWlycm9yX2ZldGNoID0gZC5nZXRWYXIoJ1NPVVJDRV9NSVJST1JfRkVUQ0gnLCBGYWxzZSkKKyAgICBzb3VyY2VfbWlycm9yX2ZldGNoID0gZC5nZXRWYXIoJ1NPVVJDRV9NSVJST1JfRkVUQ0gnLCBGYWxzZSkgb3IgZC5nZXRWYXIoJ1BBUlNFX0FMTF9SRUNJUEVTJywgRmFsc2UpCiAgICAgaWYgbm90IHNvdXJjZV9taXJyb3JfZmV0Y2g6CiAgICAgICAgIG5lZWRfaG9zdCA9IGQuZ2V0VmFyKCdDT01QQVRJQkxFX0hPU1QnKQogICAgICAgICBpZiBuZWVkX2hvc3Q6CkBAIC01MzEsNDUgKzU0Myw0NiBAQAogICAgICAgICAgICAgYmFkX2xpY2Vuc2VzID0gZXhwYW5kX3dpbGRjYXJkX2xpY2Vuc2VzKGQsIGJhZF9saWNlbnNlcykKIAogICAgICAgICAgICAgd2hpdGVsaXN0ID0gW10KLSAgICAgICAgICAgIGluY29tcGF0d2wgPSBbXQogICAgICAgICAgICAgZm9yIGxpYyBpbiBiYWRfbGljZW5zZXM6CiAgICAgICAgICAgICAgICAgc3BkeF9saWNlbnNlID0gcmV0dXJuX3NwZHgoZCwgbGljKQogICAgICAgICAgICAgICAgIHdoaXRlbGlzdC5leHRlbmQoKGQuZ2V0VmFyKCJXSElURUxJU1RfIiArIGxpYykgb3IgIiIpLnNwbGl0KCkpCiAgICAgICAgICAgICAgICAgaWYgc3BkeF9saWNlbnNlOgogICAgICAgICAgICAgICAgICAgICB3aGl0ZWxpc3QuZXh0ZW5kKChkLmdldFZhcigiV0hJVEVMSVNUXyIgKyBzcGR4X2xpY2Vuc2UpIG9yICIiKS5zcGxpdCgpKQorCisgICAgICAgICAgICBpZiBwbiBpbiB3aGl0ZWxpc3Q6CiAgICAgICAgICAgICAgICAgJycnCiAgICAgICAgICAgICAgICAgV2UgbmVlZCB0byB0cmFjayB3aGF0IHdlIGFyZSB3aGl0ZWxpc3RpbmcgYW5kIHdoeS4gSWYgcG4gaXMKICAgICAgICAgICAgICAgICBpbmNvbXBhdGlibGUgd2UgbmVlZCB0byBiZSBhYmxlIHRvIG5vdGUgdGhhdCB0aGUgaW1hZ2UgdGhhdAogICAgICAgICAgICAgICAgIGlzIGNyZWF0ZWQgbWF5IGluZmFjdCBjb250YWluIGluY29tcGF0aWJsZSBsaWNlbnNlcyBkZXNwaXRlCiAgICAgICAgICAgICAgICAgSU5DT01QQVRJQkxFX0xJQ0VOU0UgYmVpbmcgc2V0LgogICAgICAgICAgICAgICAgICcnJwotICAgICAgICAgICAgICAgIGluY29tcGF0d2wuZXh0ZW5kKChkLmdldFZhcigiV0hJVEVMSVNUXyIgKyBsaWMpIG9yICIiKS5zcGxpdCgpKQotICAgICAgICAgICAgICAgIGlmIHNwZHhfbGljZW5zZToKLSAgICAgICAgICAgICAgICAgICAgaW5jb21wYXR3bC5leHRlbmQoKGQuZ2V0VmFyKCJXSElURUxJU1RfIiArIHNwZHhfbGljZW5zZSkgb3IgIiIpLnNwbGl0KCkpCi0KLSAgICAgICAgICAgIGlmIG5vdCBwbiBpbiB3aGl0ZWxpc3Q6CisgICAgICAgICAgICAgICAgYmIubm90ZSgiSW5jbHVkaW5nICVzIGFzIGJ1aWxkYWJsZSBkZXNwaXRlIGl0IGhhdmluZyBhbiBpbmNvbXBhdGlibGUgbGljZW5zZSBiZWNhdXNlIGl0IGhhcyBiZWVuIHdoaXRlbGlzdGVkIiAlIHBuKQorICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICBwa2dzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQotICAgICAgICAgICAgICAgIHNraXBwZWRfcGtncyA9IFtdCisgICAgICAgICAgICAgICAgc2tpcHBlZF9wa2dzID0ge30KICAgICAgICAgICAgICAgICB1bnNraXBwZWRfcGtncyA9IFtdCiAgICAgICAgICAgICAgICAgZm9yIHBrZyBpbiBwa2dzOgotICAgICAgICAgICAgICAgICAgICBpZiBpbmNvbXBhdGlibGVfbGljZW5zZShkLCBiYWRfbGljZW5zZXMsIHBrZyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBza2lwcGVkX3BrZ3MuYXBwZW5kKHBrZykKKyAgICAgICAgICAgICAgICAgICAgaW5jb21wYXRpYmxlX2xpYyA9IGluY29tcGF0aWJsZV9saWNlbnNlKGQsIGJhZF9saWNlbnNlcywgcGtnKQorICAgICAgICAgICAgICAgICAgICBpZiBpbmNvbXBhdGlibGVfbGljOgorICAgICAgICAgICAgICAgICAgICAgICAgc2tpcHBlZF9wa2dzW3BrZ10gPSBpbmNvbXBhdGlibGVfbGljCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICB1bnNraXBwZWRfcGtncy5hcHBlbmQocGtnKQotICAgICAgICAgICAgICAgIGFsbF9za2lwcGVkID0gc2tpcHBlZF9wa2dzIGFuZCBub3QgdW5za2lwcGVkX3BrZ3MKICAgICAgICAgICAgICAgICBpZiB1bnNraXBwZWRfcGtnczoKICAgICAgICAgICAgICAgICAgICAgZm9yIHBrZyBpbiBza2lwcGVkX3BrZ3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiU0tJUFBJTkcgdGhlIHBhY2thZ2UgIiArIHBrZyArICIgYXQgZG9fcm9vdGZzIGJlY2F1c2UgaXQncyAiICsgbGljZW5zZSkKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJTa2lwcGluZyB0aGUgcGFja2FnZSAlcyBhdCBkb19yb290ZnMgYmVjYXVzZSBvZiBpbmNvbXBhdGlibGUgbGljZW5zZShzKTogJXMiICUgKHBrZywgJyAnLmpvaW4oc2tpcHBlZF9wa2dzW3BrZ10pKSkKICAgICAgICAgICAgICAgICAgICAgICAgIG1scHJlZml4ID0gZC5nZXRWYXIoJ01MUFJFRklYJykKLSAgICAgICAgICAgICAgICAgICAgICAgIGQuc2V0VmFyKCdMSUNFTlNFX0VYQ0xVU0lPTi0nICsgbWxwcmVmaXggKyBwa2csIDEpCisgICAgICAgICAgICAgICAgICAgICAgICBkLnNldFZhcignTElDRU5TRV9FWENMVVNJT04tJyArIG1scHJlZml4ICsgcGtnLCAnICcuam9pbihza2lwcGVkX3BrZ3NbcGtnXSkpCiAgICAgICAgICAgICAgICAgICAgIGZvciBwa2cgaW4gdW5za2lwcGVkX3BrZ3M6Ci0gICAgICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiSU5DTFVESU5HIHRoZSBwYWNrYWdlICIgKyBwa2cpCi0gICAgICAgICAgICAgICAgZWxpZiBhbGxfc2tpcHBlZCBvciBpbmNvbXBhdGlibGVfbGljZW5zZShkLCBiYWRfbGljZW5zZXMpOgotICAgICAgICAgICAgICAgICAgICBiYi5kZWJ1ZygxLCAiU0tJUFBJTkcgcmVjaXBlICVzIGJlY2F1c2UgaXQncyAlcyIgJSAocG4sIGxpY2Vuc2UpKQotICAgICAgICAgICAgICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJpdCBoYXMgYW4gaW5jb21wYXRpYmxlIGxpY2Vuc2U6ICVzIiAlIGxpY2Vuc2UpCi0gICAgICAgICAgICBlbGlmIHBuIGluIHdoaXRlbGlzdDoKLSAgICAgICAgICAgICAgICBpZiBwbiBpbiBpbmNvbXBhdHdsOgotICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCJJTkNMVURJTkcgIiArIHBuICsgIiBhcyBidWlsZGFibGUgZGVzcGl0ZSBJTkNPTVBBVElCTEVfTElDRU5TRSBiZWNhdXNlIGl0IGhhcyBiZWVuIHdoaXRlbGlzdGVkIikKKyAgICAgICAgICAgICAgICAgICAgICAgIGJiLmRlYnVnKDEsICJJbmNsdWRpbmcgdGhlIHBhY2thZ2UgJXMiICUgcGtnKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGluY29tcGF0aWJsZV9saWMgPSBpbmNvbXBhdGlibGVfbGljZW5zZShkLCBiYWRfbGljZW5zZXMpCisgICAgICAgICAgICAgICAgICAgIGZvciBwa2cgaW4gc2tpcHBlZF9wa2dzOgorICAgICAgICAgICAgICAgICAgICAgICAgaW5jb21wYXRpYmxlX2xpYyArPSBza2lwcGVkX3BrZ3NbcGtnXQorICAgICAgICAgICAgICAgICAgICBpbmNvbXBhdGlibGVfbGljID0gc29ydGVkKGxpc3Qoc2V0KGluY29tcGF0aWJsZV9saWMpKSkKKworICAgICAgICAgICAgICAgICAgICBpZiBpbmNvbXBhdGlibGVfbGljOgorICAgICAgICAgICAgICAgICAgICAgICAgYmIuZGVidWcoMSwgIlNraXBwaW5nIHJlY2lwZSAlcyBiZWNhdXNlIG9mIGluY29tcGF0aWJsZSBsaWNlbnNlKHMpOiAlcyIgJSAocG4sICcgJy5qb2luKGluY29tcGF0aWJsZV9saWMpKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIml0IGhhcyBpbmNvbXBhdGlibGUgbGljZW5zZShzKTogJXMiICUgJyAnLmpvaW4oaW5jb21wYXRpYmxlX2xpYykpCiAKICAgICAgICAgIyBUcnkgdG8gdmVyaWZ5IHBlci1wYWNrYWdlIChMSUNFTlNFXzxwa2c+KSB2YWx1ZXMuIExJQ0VOU0Ugc2hvdWxkIGJlIGEKICAgICAgICAgIyBzdXBlcnNldCBvZiBhbGwgcGVyLXBhY2thZ2UgbGljZW5zZXMuIFdlIGRvIG5vdCBkbyBhZHZhbmNlZCAocGF0dGVybikKQEAgLTYwNiw2ICs2MTksNyBAQAogICAgICAgICAjIE1lcmN1cmlhbCBwYWNrYWdlcyBzaG91bGQgREVQRU5EIG9uIG1lcmN1cmlhbC1uYXRpdmUKICAgICAgICAgZWxpZiBzY2hlbWUgPT0gImhnIjoKICAgICAgICAgICAgIG5lZWRzcmNyZXYgPSBUcnVlCisgICAgICAgICAgICBkLmFwcGVuZFZhcigiRVhUUkFOQVRJVkVQQVRIIiwgJyBweXRob24zLW5hdGl2ZSAnKQogICAgICAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCdkb19mZXRjaCcsICdkZXBlbmRzJywgJyBtZXJjdXJpYWwtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnKQogCiAgICAgICAgICMgUGVyZm9yY2UgcGFja2FnZXMgc3VwcG9ydCBTUkNSRVYgPSAiJHtBVVRPUkVWfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxkaGlzdG9yeS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRoaXN0b3J5LmJiY2xhc3MKaW5kZXggYWZmZGYyNy4uZWI3Mjk1NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRoaXN0b3J5LmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRoaXN0b3J5LmJiY2xhc3MKQEAgLTQwLDYgKzQwLDcgQEAKIEJVSUxESElTVE9SWV9DT01NSVQgPz0gIjEiCiBCVUlMREhJU1RPUllfQ09NTUlUX0FVVEhPUiA/PSAiYnVpbGRoaXN0b3J5IDxidWlsZGhpc3RvcnlAJHtESVNUUk99PiIKIEJVSUxESElTVE9SWV9QVVNIX1JFUE8gPz0gIiIKK0JVSUxESElTVE9SWV9UQUcgPz0gImJ1aWxkIgogCiBTU1RBVEVQT1NUSU5TVEZVTkNTX2FwcGVuZCA9ICIgYnVpbGRoaXN0b3J5X2VtaXRfcGtnaGlzdG9yeSIKICMgV2Ugd2FudCB0byBhdm9pZCBpbmZsdWVuY2luZyB0aGUgc2lnbmF0dXJlcyBvZiBzc3RhdGUgdGFza3MgLSBmaXJzdCB0aGUgZnVuY3Rpb24gaXRzZWxmOgpAQCAtODI0LDkgKzgyNSw5IEBACiAJCWlmIFsgISAtZSAuZ2l0IF0gOyB0aGVuCiAJCQlnaXQgaW5pdCAtcQogCQllbHNlCi0JCQlnaXQgdGFnIC1mIGJ1aWxkLW1pbnVzLTMgYnVpbGQtbWludXMtMiA+IC9kZXYvbnVsbCAyPiYxIHx8IHRydWUKLQkJCWdpdCB0YWcgLWYgYnVpbGQtbWludXMtMiBidWlsZC1taW51cy0xID4gL2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQotCQkJZ2l0IHRhZyAtZiBidWlsZC1taW51cy0xID4gL2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQorCQkJZ2l0IHRhZyAtZiAke0JVSUxESElTVE9SWV9UQUd9LW1pbnVzLTMgJHtCVUlMREhJU1RPUllfVEFHfS1taW51cy0yID4gL2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQorCQkJZ2l0IHRhZyAtZiAke0JVSUxESElTVE9SWV9UQUd9LW1pbnVzLTIgJHtCVUlMREhJU1RPUllfVEFHfS1taW51cy0xID4gL2Rldi9udWxsIDI+JjEgfHwgdHJ1ZQorCQkJZ2l0IHRhZyAtZiAke0JVSUxESElTVE9SWV9UQUd9LW1pbnVzLTEgPiAvZGV2L251bGwgMj4mMSB8fCB0cnVlCiAJCWZpCiAKIAkJY2hlY2tfZ2l0X2NvbmZpZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvYnVpbGRzdGF0cy5iYmNsYXNzCmluZGV4IDk2MDY1M2MuLjI1OTBjNjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2J1aWxkc3RhdHMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9idWlsZHN0YXRzLmJiY2xhc3MKQEAgLTEwMCw3ICsxMDAsNyBAQAogICAgICAgICAgICAgICAgIGYud3JpdGUoInJ1c2FnZSAlczogJXNcbiIgJSAoaSwgZ2V0YXR0cihyZXNvdXJjZXMsIGkpKSkKICAgICAgICAgICAgIGZvciBpIGluIHJ1c2FnZXM6CiAgICAgICAgICAgICAgICAgZi53cml0ZSgiQ2hpbGQgcnVzYWdlICVzOiAlc1xuIiAlIChpLCBnZXRhdHRyKGNoaWxkcmVzLCBpKSkpCi0gICAgICAgIGlmIHN0YXR1cyBpcyAicGFzc2VkIjoKKyAgICAgICAgaWYgc3RhdHVzID09ICJwYXNzZWQiOgogICAgICAgICAgICAgZi53cml0ZSgiU3RhdHVzOiBQQVNTRUQgXG4iKQogICAgICAgICBlbHNlOgogICAgICAgICAgICAgZi53cml0ZSgiU3RhdHVzOiBGQUlMRUQgXG4iKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvY2hycGF0aC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvY2hycGF0aC5iYmNsYXNzCmluZGV4IDI4NzBjMTAuLjI2Yjk4NGMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2NocnBhdGguYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9jaHJwYXRoLmJiY2xhc3MKQEAgLTIsMTYgKzIsMTkgQEAKIFBSRVBST0NFU1NfUkVMT0NBVEVfRElSUyA/PSAiIgogCiBkZWYgcHJvY2Vzc19maWxlX2xpbnV4KGNtZCwgZnBhdGgsIHJvb3RkaXIsIGJhc2VwcmVmaXgsIHRtcGRpciwgZCwgYnJlYWtfaGFyZGxpbmtzID0gRmFsc2UpOgotICAgIGltcG9ydCBzdWJwcm9jZXNzIGFzIHN1YgorICAgIGltcG9ydCBzdWJwcm9jZXNzLCBvZS5xYQogCi0gICAgcCA9IHN1Yi5Qb3BlbihbY21kLCAnLWwnLCBmcGF0aF0sc3Rkb3V0PXN1Yi5QSVBFLHN0ZGVycj1zdWIuUElQRSkKLSAgICBvdXQsIGVyciA9IHAuY29tbXVuaWNhdGUoKQotICAgICMgSWYgcmV0dXJuZWQgc3VjY2Vzc2Z1bGx5LCBwcm9jZXNzIHN0ZG91dCBmb3IgcmVzdWx0cwotICAgIGlmIHAucmV0dXJuY29kZSAhPSAwOgorICAgIHdpdGggb2UucWEuRUxGRmlsZShmcGF0aCkgYXMgZWxmOgorICAgICAgICB0cnk6CisgICAgICAgICAgICBlbGYub3BlbigpCisgICAgICAgIGV4Y2VwdCBvZS5xYS5Ob3RFTEZGaWxlRXJyb3I6CisgICAgICAgICAgICByZXR1cm4KKworICAgIHRyeToKKyAgICAgICAgb3V0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW2NtZCwgIi1sIiwgZnBhdGhdLCB1bml2ZXJzYWxfbmV3bGluZXM9VHJ1ZSkKKyAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3I6CiAgICAgICAgIHJldHVybgogCi0gICAgb3V0ID0gb3V0LmRlY29kZSgndXRmLTgnKQotCiAgICAgIyBIYW5kbGUgUlVOUEFUSCBhcyB3ZWxsIGFzIFJQQVRICiAgICAgb3V0ID0gb3V0LnJlcGxhY2UoIlJVTlBBVEg9IiwiUlBBVEg9IikKICAgICAjIFRocm93IGF3YXkgZXZlcnl0aGluZyBvdGhlciB0aGFuIHRoZSBycGF0aCBsaXN0CkBAIC00NCwxMCArNDcsMTEgQEAKIAogICAgICAgICBhcmdzID0gIjoiLmpvaW4obmV3X3JwYXRocykKICAgICAgICAgI2JiLm5vdGUoIlNldHRpbmcgcnBhdGggZm9yICVzIHRvICVzIiAlKGZwYXRoLCBhcmdzKSkKLSAgICAgICAgcCA9IHN1Yi5Qb3BlbihbY21kLCAnLXInLCBhcmdzLCBmcGF0aF0sc3Rkb3V0PXN1Yi5QSVBFLHN0ZGVycj1zdWIuUElQRSkKLSAgICAgICAgb3V0LCBlcnIgPSBwLmNvbW11bmljYXRlKCkKLSAgICAgICAgaWYgcC5yZXR1cm5jb2RlICE9IDA6Ci0gICAgICAgICAgICBiYi5mYXRhbCgiJXM6IGNocnBhdGggY29tbWFuZCBmYWlsZWQgd2l0aCBleGl0IGNvZGUgJWQ6XG4lcyVzIiAlIChkLmdldFZhcignUE4nKSwgcC5yZXR1cm5jb2RlLCBvdXQsIGVycikpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtjbWQsICItciIsIGFyZ3MsIGZwYXRoXSwKKyAgICAgICAgICAgIHN0ZGVycj1zdWJwcm9jZXNzLlBJUEUsIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQorICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKKyAgICAgICAgICAgIGJiLmZhdGFsKCJjaHJwYXRoIGNvbW1hbmQgZmFpbGVkIHdpdGggZXhpdCBjb2RlICVkOlxuJXNcbiVzIiAlIChlLnJldHVybmNvZGUsIGUuc3Rkb3V0LCBlLnN0ZGVycikpCiAKIGRlZiBwcm9jZXNzX2ZpbGVfZGFyd2luKGNtZCwgZnBhdGgsIHJvb3RkaXIsIGJhc2VwcmVmaXgsIHRtcGRpciwgZCwgYnJlYWtfaGFyZGxpbmtzID0gRmFsc2UpOgogICAgIGltcG9ydCBzdWJwcm9jZXNzIGFzIHN1YgpAQCAtNzIsNiArNzYsMTAgQEAKICAgICAgICAgb3V0LCBlcnIgPSBwLmNvbW11bmljYXRlKCkKIAogZGVmIHByb2Nlc3NfZGlyKHJvb3RkaXIsIGRpcmVjdG9yeSwgZCwgYnJlYWtfaGFyZGxpbmtzID0gRmFsc2UpOgorICAgIGJiLmRlYnVnKDIsICJDaGVja2luZyAlcyBmb3IgYmluYXJpZXMgdG8gcHJvY2VzcyIgJSBkaXJlY3RvcnkpCisgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKGRpcmVjdG9yeSk6CisgICAgICAgIHJldHVybgorCiAgICAgaW1wb3J0IHN0YXQKIAogICAgIHJvb3RkaXIgPSBvcy5wYXRoLm5vcm1wYXRoKHJvb3RkaXIpCkBAIC04MCwxMCArODgsNiBAQAogICAgIGJhc2VwcmVmaXggPSBvcy5wYXRoLm5vcm1wYXRoKGQuZXhwYW5kKCcke2Jhc2VfcHJlZml4fScpKQogICAgIGhvc3RvcyA9IGQuZ2V0VmFyKCJIT1NUX09TIikKIAotICAgICNiYi5kZWJ1ZygiQ2hlY2tpbmcgJXMgZm9yIGJpbmFyaWVzIHRvIHByb2Nlc3MiICUgZGlyZWN0b3J5KQotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkaXJlY3RvcnkpOgotICAgICAgICByZXR1cm4KLQogICAgIGlmICJsaW51eCIgaW4gaG9zdG9zOgogICAgICAgICBwcm9jZXNzX2ZpbGUgPSBwcm9jZXNzX2ZpbGVfbGludXgKICAgICBlbGlmICJkYXJ3aW4iIGluIGhvc3RvczoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2NtYWtlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9jbWFrZS5iYmNsYXNzCmluZGV4IDI5MWYxZTguLjk0ZWQ4MDYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2NtYWtlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvY21ha2UuYmJjbGFzcwpAQCAtNjMsOCArNjMsOSBAQAogCiBFWFRSQV9PRUNNQUtFX2FwcGVuZCA9ICIgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSIKIAotRVhUUkFfT0VDTUFLRV9CVUlMRF9wcmVwZW5kX3Rhc2stY29tcGlsZSA9ICIke1BBUkFMTEVMX01BS0V9ICIKLUVYVFJBX09FQ01BS0VfQlVJTERfcHJlcGVuZF90YXNrLWluc3RhbGwgPSAiJHtQQVJBTExFTF9NQUtFSU5TVH0gIgorZXhwb3J0IENNQUtFX0JVSUxEX1BBUkFMTEVMX0xFVkVMCitDTUFLRV9CVUlMRF9QQVJBTExFTF9MRVZFTF90YXNrLWNvbXBpbGUgPSAiJHtAb2UudXRpbHMucGFyYWxsZWxfbWFrZShkLCBGYWxzZSl9IgorQ01BS0VfQlVJTERfUEFSQUxMRUxfTEVWRUxfdGFzay1pbnN0YWxsID0gIiR7QG9lLnV0aWxzLnBhcmFsbGVsX21ha2UoZCwgVHJ1ZSl9IgogCiBPRUNNQUtFX1RBUkdFVF9DT01QSUxFID89ICJhbGwiCiBPRUNNQUtFX1RBUkdFVF9JTlNUQUxMID89ICJpbnN0YWxsIgpAQCAtMTIwLDYgKzEyMSw5IEBACiAjIGRpcmVjdG9yeSBhcyBycGF0aCBieSBkZWZhdWx0CiBzZXQoIENNQUtFX0lOU1RBTExfUlBBVEggJHtPRUNNQUtFX1JQQVRIfSApCiAKKyMgVXNlIFJQQVRIcyByZWxhdGl2ZSB0byBidWlsZCBkaXJlY3RvcnkgZm9yIHJlcHJvZHVjaWJpbGl0eQorc2V0KCBDTUFLRV9CVUlMRF9SUEFUSF9VU0VfT1JJR0lOIE9OICkKKwogIyBVc2Ugb3VyIGNtYWtlIG1vZHVsZXMKIGxpc3QoQVBQRU5EIENNQUtFX01PRFVMRV9QQVRIICIke1NUQUdJTkdfREFUQURJUn0vY21ha2UvTW9kdWxlcy8iKQogCkBAIC0xNzEsNiArMTc1LDEwIEBACiAJICAtRENNQUtFX0lOU1RBTExfTElCRElSOlBBVEg9JHtAb3MucGF0aC5yZWxwYXRoKGQuZ2V0VmFyKCdsaWJkaXInKSwgZC5nZXRWYXIoJ3ByZWZpeCcpICsgJy8nKX0gXAogCSAgLURDTUFLRV9JTlNUQUxMX0lOQ0xVREVESVI6UEFUSD0ke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ2luY2x1ZGVkaXInKSwgZC5nZXRWYXIoJ3ByZWZpeCcpICsgJy8nKX0gXAogCSAgLURDTUFLRV9JTlNUQUxMX0RBVEFST09URElSOlBBVEg9JHtAb3MucGF0aC5yZWxwYXRoKGQuZ2V0VmFyKCdkYXRhZGlyJyksIGQuZ2V0VmFyKCdwcmVmaXgnKSArICcvJyl9IFwKKwkgIC1EUFlUSE9OX0VYRUNVVEFCTEU6UEFUSD0ke1BZVEhPTn0gXAorCSAgLURQeXRob25fRVhFQ1VUQUJMRTpQQVRIPSR7UFlUSE9OfSBcCisJICAtRFB5dGhvbjNfRVhFQ1VUQUJMRTpQQVRIPSR7UFlUSE9OfSBcCisJICAtRExJQl9TVUZGSVg9JHtAZC5nZXRWYXIoJ2Jhc2VsaWInKS5yZXBsYWNlKCdsaWInLCAnJyl9IFwKIAkgIC1EQ01BS0VfSU5TVEFMTF9TT19OT19FWEU9MCBcCiAJICAtRENNQUtFX1RPT0xDSEFJTl9GSUxFPSR7V09SS0RJUn0vdG9vbGNoYWluLmNtYWtlIFwKIAkgIC1EQ01BS0VfTk9fU1lTVEVNX0ZST01fSU1QT1JURUQ9MSBcCkBAIC0xNzgsOSArMTg2LDE4IEBACiAJICAtV25vLWRldgogfQogCisjIFRvIGRpc2FibGUgdmVyYm9zZSBjbWFrZSBsb2dzIGZvciBhIGdpdmVuIHJlY2lwZSBvciBnbG9iYWxseSBjb25maWcgbWV0YWRhdGEgZS5nLiBsb2NhbC5jb25mCisjIGFkZCBmb2xsb3dpbmcKKyMKKyMgQ01BS0VfVkVSQk9TRSA9ICIiCisjCisKK0NNQUtFX1ZFUkJPU0UgPz89ICJWRVJCT1NFPTEiCisKKyMgVGhlbiBydW4gZG9fY29tcGlsZSBhZ2FpbgogY21ha2VfcnVuY21ha2VfYnVpbGQoKSB7Ci0JYmJub3RlICR7REVTVERJUjorREVTVERJUj0ke0RFU1RESVJ9IH1WRVJCT1NFPTEgY21ha2UgLS1idWlsZCAnJHtCfScgIiRAIiAtLSAke0VYVFJBX09FQ01BS0VfQlVJTER9Ci0JZXZhbCAke0RFU1RESVI6K0RFU1RESVI9JHtERVNURElSfSB9VkVSQk9TRT0xIGNtYWtlIC0tYnVpbGQgJyR7Qn0nICIkQCIgLS0gJHtFWFRSQV9PRUNNQUtFX0JVSUxEfQorCWJibm90ZSAke0RFU1RESVI6K0RFU1RESVI9JHtERVNURElSfSB9JHtDTUFLRV9WRVJCT1NFfSBjbWFrZSAtLWJ1aWxkICcke0J9JyAiJEAiIC0tICR7RVhUUkFfT0VDTUFLRV9CVUlMRH0KKwlldmFsICR7REVTVERJUjorREVTVERJUj0ke0RFU1RESVJ9IH0ke0NNQUtFX1ZFUkJPU0V9IGNtYWtlIC0tYnVpbGQgJyR7Qn0nICIkQCIgLS0gJHtFWFRSQV9PRUNNQUtFX0JVSUxEfQogfQogCiBjbWFrZV9kb19jb21waWxlKCkgIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2NvcmUtaW1hZ2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2NvcmUtaW1hZ2UuYmJjbGFzcwppbmRleCA5NGYxMTJjLi44OGNhMjcyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9jb3JlLWltYWdlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvY29yZS1pbWFnZS5iYmNsYXNzCkBAIC0yNiw2ICsyNiw3IEBACiAjIC0gZGVidWctdHdlYWtzICAgICAgICAtIG1ha2VzIGFuIGltYWdlIHN1aXRhYmxlIGZvciBkZXZlbG9wbWVudCwgZS5nLiBhbGxvd2luZyBwYXNzd29yZGxlc3Mgcm9vdCBsb2dpbnMKICMgICAtIGVtcHR5LXJvb3QtcGFzc3dvcmQKICMgICAtIGFsbG93LWVtcHR5LXBhc3N3b3JkCisjICAgLSBhbGxvdy1yb290LWxvZ2luCiAjICAgLSBwb3N0LWluc3RhbGwtbG9nZ2luZwogIyAtIGRldi1wa2dzICAgICAgICAgICAgLSBkZXZlbG9wbWVudCBwYWNrYWdlcyAoaGVhZGVycywgZXRjLikgZm9yIGFsbCBpbnN0YWxsZWQgcGFja2FnZXMgaW4gdGhlIHJvb3RmcwogIyAtIGRiZy1wa2dzICAgICAgICAgICAgLSBkZWJ1ZyBzeW1ib2wgcGFja2FnZXMgZm9yIGFsbCBpbnN0YWxsZWQgcGFja2FnZXMgaW4gdGhlIHJvb3RmcwpAQCAtMzMsNiArMzQsNyBAQAogIyAtIGJhc2gtY29tcGxldGlvbi1wa2dzIC0gYmFzaC1jb21wbGV0aW9uIHBhY2thZ2VzIGZvciByZWNpcGVzIHVzaW5nIGJhc2gtY29tcGxldGlvbiBiYmNsYXNzCiAjIC0gcHRlc3QtcGtncyAgICAgICAgICAtIHB0ZXN0IHBhY2thZ2VzIGZvciBhbGwgcHRlc3QtZW5hYmxlZCByZWNpcGVzCiAjIC0gcmVhZC1vbmx5LXJvb3RmcyAgICAtIHR3ZWFrcyBhbiBpbWFnZSB0byBzdXBwb3J0IHJlYWQtb25seSByb290ZnMKKyMgLSBzdGF0ZWxlc3Mtcm9vdGZzICAgIC0gc3lzdGVtY3RsLW5hdGl2ZSBub3QgcnVuLCBpbWFnZSBwb3B1bGF0ZWQgYnkgc3lzdGVtZCBhdCBydW50aW1lCiAjIC0gc3BsYXNoICAgICAgICAgICAgICAtIGJvb3R1cCBzcGxhc2ggc2NyZWVuCiAjCiBGRUFUVVJFX1BBQ0tBR0VTX3gxMSA9ICJwYWNrYWdlZ3JvdXAtY29yZS14MTEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3MuYmJjbGFzcwppbmRleCBmODMyNTYxLi5iZmVjOTFkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9jcm9zcy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Nyb3NzLmJiY2xhc3MKQEAgLTcwLDcgKzcwLDYgQEAKIGxpYmV4ZWNkaXIgPSAiJHtleGVjX3ByZWZpeH0vbGliZXhlYy8ke0NST1NTX1RBUkdFVF9TWVNfRElSfSIKIAogZG9fcG9wdWxhdGVfc3lzcm9vdFtzc3RhdGUtaW5wdXRkaXJzXSA9ICIke1NZU1JPT1RfREVTVERJUn0vJHtTVEFHSU5HX0RJUl9OQVRJVkV9LyIKLWRvX3BvcHVsYXRlX3N5c3Jvb3Rbc3RhbXAtZXh0cmEtaW5mb10gPSAiIgogZG9fcGFja2FnZWRhdGFbc3RhbXAtZXh0cmEtaW5mb10gPSAiIgogCiBkb19pbnN0YWxsICgpIHsKQEAgLTk3LDMgKzk2LDQgQEAKICAgICBiYi5idWlsZC5leGVjX2Z1bmMoImV4dGVuZF9yZWNpcGVfc3lzcm9vdCIsIGQpCiB9CiBhZGR0YXNrIGFkZHRvX3JlY2lwZV9zeXNyb290IGFmdGVyIGRvX3BvcHVsYXRlX3N5c3Jvb3QKK2RvX2FkZHRvX3JlY2lwZV9zeXNyb290W2RlcHRhc2tdID0gImRvX3BvcHVsYXRlX3N5c3Jvb3QiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9jcm9zc3Nkay5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvY3Jvc3NzZGsuYmJjbGFzcwppbmRleCBjMGMwYmZlLi4wNGFlY2I2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9jcm9zc3Nkay5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Nyb3Nzc2RrLmJiY2xhc3MKQEAgLTUsOSArNSwxNSBAQAogTElCQ09WRVJSSURFID0gIjoke05BVElWRVNES0xJQkN9IgogTUFDSElORU9WRVJSSURFUyA9ICIiCiBQQUNLQUdFX0FSQ0ggPSAiJHtTREtfQVJDSH0iCisKIHB5dGhvbiAoKSB7CiAgICAgIyBzZXQgVFVORV9QS0dBUkNIIHRvIFNES19BUkNICiAgICAgZC5zZXRWYXIoJ1RVTkVfUEtHQVJDSCcsIGQuZ2V0VmFyKCdTREtfQVJDSCcpKQorICAgICMgU2V0IGZlYXR1cmVzIGhlcmUgdG8gcHJldmVudCBhcHBlbmRzIGFuZCBkaXN0cm8gZmVhdHVyZXMgYmFja2ZpbGwKKyAgICAjIGZyb20gbW9kaWZ5aW5nIG5hdGl2ZXNkayBkaXN0cm8gZmVhdHVyZXMKKyAgICBmZWF0dXJlcyA9IHNldChkLmdldFZhcigiRElTVFJPX0ZFQVRVUkVTX05BVElWRVNESyIpLnNwbGl0KCkpCisgICAgZmlsdGVyZWQgPSBzZXQoYmIudXRpbHMuZmlsdGVyKCJESVNUUk9fRkVBVFVSRVMiLCBkLmdldFZhcigiRElTVFJPX0ZFQVRVUkVTX0ZJTFRFUl9OQVRJVkVTREsiKSwgZCkuc3BsaXQoKSkKKyAgICBkLnNldFZhcigiRElTVFJPX0ZFQVRVUkVTIiwgIiAiLmpvaW4oc29ydGVkKGZlYXR1cmVzIHwgZmlsdGVyZWQpKSkKIH0KIAogU1RBR0lOR19CSU5ESVJfVE9PTENIQUlOID0gIiR7U1RBR0lOR19ESVJfTkFUSVZFfSR7YmluZGlyX25hdGl2ZX0vJHtUQVJHRVRfQVJDSH0ke1RBUkdFVF9WRU5ET1J9LSR7VEFSR0VUX09TfSIKQEAgLTM3LDcgKzQzLDYgQEAKIHRhcmdldF9leGVjX3ByZWZpeCA9ICIke1NES1BBVEhOQVRJVkV9JHtwcmVmaXhfbmF0aXZlc2RrfSIKIGJhc2VsaWIgPSAibGliIgogCi1kb19wb3B1bGF0ZV9zeXNyb290W3N0YW1wLWV4dHJhLWluZm9dID0gIiIKIGRvX3BhY2thZ2VkYXRhW3N0YW1wLWV4dHJhLWluZm9dID0gIiIKIAogIyBOZWVkIHRvIGZvcmNlIHRoaXMgdG8gZW5zdXJlIGNvbnNpdGVuY3kgYWNyb3NzIGFyY2hpdGVjdHVyZXMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2N2ZS1jaGVjay5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvY3ZlLWNoZWNrLmJiY2xhc3MKaW5kZXggMTllZDU1NC4uMmE1MzBhMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvY3ZlLWNoZWNrLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvY3ZlLWNoZWNrLmJiY2xhc3MKQEAgLTI2LDcgKzI2LDcgQEAKIENWRV9WRVJTSU9OID8/PSAiJHtQVn0iCiAKIENWRV9DSEVDS19EQl9ESVIgPz0gIiR7RExfRElSfS9DVkVfQ0hFQ0siCi1DVkVfQ0hFQ0tfREJfRklMRSA/PSAiJHtDVkVfQ0hFQ0tfREJfRElSfS9udmRjdmVfMS4wLmRiIgorQ1ZFX0NIRUNLX0RCX0ZJTEUgPz0gIiR7Q1ZFX0NIRUNLX0RCX0RJUn0vbnZkY3ZlXzEuMS5kYiIKIAogQ1ZFX0NIRUNLX0xPRyA/PSAiJHtUfS9jdmUubG9nIgogQ1ZFX0NIRUNLX1RNUF9GSUxFID89ICIke1RNUERJUn0vY3ZlX2NoZWNrIgpAQCAtNTIsMTEgKzUyLDE0IEBACiAgICAgIiIiCiAKICAgICBpZiBvcy5wYXRoLmV4aXN0cyhkLmdldFZhcigiQ1ZFX0NIRUNLX0RCX0ZJTEUiKSk6Ci0gICAgICAgIHBhdGNoZWRfY3ZlcyA9IGdldF9wYXRjaGVzX2N2ZXMoZCkKLSAgICAgICAgcGF0Y2hlZCwgdW5wYXRjaGVkID0gY2hlY2tfY3ZlcyhkLCBwYXRjaGVkX2N2ZXMpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHBhdGNoZWRfY3ZlcyA9IGdldF9wYXRjaGVzX2N2ZXMoZCkKKyAgICAgICAgZXhjZXB0IEZpbGVOb3RGb3VuZEVycm9yOgorICAgICAgICAgICAgYmIuZmF0YWwoIkZhaWx1cmUgaW4gc2VhcmNoaW5nIHBhdGNoZXMiKQorICAgICAgICB3aGl0ZWxpc3RlZCwgcGF0Y2hlZCwgdW5wYXRjaGVkID0gY2hlY2tfY3ZlcyhkLCBwYXRjaGVkX2N2ZXMpCiAgICAgICAgIGlmIHBhdGNoZWQgb3IgdW5wYXRjaGVkOgogICAgICAgICAgICAgY3ZlX2RhdGEgPSBnZXRfY3ZlX2luZm8oZCwgcGF0Y2hlZCArIHVucGF0Y2hlZCkKLSAgICAgICAgICAgIGN2ZV93cml0ZV9kYXRhKGQsIHBhdGNoZWQsIHVucGF0Y2hlZCwgY3ZlX2RhdGEpCisgICAgICAgICAgICBjdmVfd3JpdGVfZGF0YShkLCBwYXRjaGVkLCB1bnBhdGNoZWQsIHdoaXRlbGlzdGVkLCBjdmVfZGF0YSkKICAgICBlbHNlOgogICAgICAgICBiYi5ub3RlKCJObyBDVkUgZGF0YWJhc2UgZm91bmQsIHNraXBwaW5nIENWRSBjaGVjayIpCiAKQEAgLTEyOSw2ICsxMzIsMTAgQEAKICAgICBmb3IgdXJsIGluIHNyY19wYXRjaGVzKGQpOgogICAgICAgICBwYXRjaF9maWxlID0gYmIuZmV0Y2guZGVjb2RldXJsKHVybClbMl0KIAorICAgICAgICBpZiBub3Qgb3MucGF0aC5pc2ZpbGUocGF0Y2hfZmlsZSk6CisgICAgICAgICAgICBiYi5lcnJvcigiRmlsZSBOb3QgZm91bmQ6ICVzIiAlIHBhdGNoX2ZpbGUpCisgICAgICAgICAgICByYWlzZSBGaWxlTm90Rm91bmRFcnJvcgorCiAgICAgICAgICMgQ2hlY2sgcGF0Y2ggZmlsZSBuYW1lIGZvciBDVkUgSUQKICAgICAgICAgZm5hbWVfbWF0Y2ggPSBjdmVfZmlsZV9uYW1lX21hdGNoLnNlYXJjaChwYXRjaF9maWxlKQogICAgICAgICBpZiBmbmFtZV9tYXRjaDoKQEAgLTE3MiwxMyArMTc5LDEzIEBACiAgICAgcHJvZHVjdHMgPSBkLmdldFZhcigiQ1ZFX1BST0RVQ1QiKS5zcGxpdCgpCiAgICAgIyBJZiB0aGlzIGhhcyBiZWVuIHVuc2V0IHRoZW4gd2UncmUgbm90IHNjYW5uaW5nIGZvciBDVkVzIGhlcmUgKGZvciBleGFtcGxlLCBpbWFnZSByZWNpcGVzKQogICAgIGlmIG5vdCBwcm9kdWN0czoKLSAgICAgICAgcmV0dXJuIChbXSwgW10pCisgICAgICAgIHJldHVybiAoW10sIFtdLCBbXSkKICAgICBwdiA9IGQuZ2V0VmFyKCJDVkVfVkVSU0lPTiIpLnNwbGl0KCIrZ2l0IilbMF0KIAogICAgICMgSWYgdGhlIHJlY2lwZSBoYXMgYmVlbiB3aGl0bGlzdGVkIHdlIHJldHVybiBlbXB0eSBsaXN0cwogICAgIGlmIGQuZ2V0VmFyKCJQTiIpIGluIGQuZ2V0VmFyKCJDVkVfQ0hFQ0tfUE5fV0hJVEVMSVNUIikuc3BsaXQoKToKICAgICAgICAgYmIubm90ZSgiUmVjaXBlIGhhcyBiZWVuIHdoaXRlbGlzdGVkLCBza2lwcGluZyBjaGVjayIpCi0gICAgICAgIHJldHVybiAoW10sIFtdKQorICAgICAgICByZXR1cm4gKFtdLCBbXSwgW10pCiAKICAgICBvbGRfY3ZlX3doaXRlbGlzdCA9ICBkLmdldFZhcigiQ1ZFX0NIRUNLX0NWRV9XSElURUxJU1QiKQogICAgIGlmIG9sZF9jdmVfd2hpdGVsaXN0OgpAQCAtMjE0LDcgKzIyMSw3IEBACiAgICAgICAgICAgICAgICAgKF8sIF8sIF8sIHZlcnNpb25fc3RhcnQsIG9wZXJhdG9yX3N0YXJ0LCB2ZXJzaW9uX2VuZCwgb3BlcmF0b3JfZW5kKSA9IHJvdwogICAgICAgICAgICAgICAgICNiYi5kZWJ1ZygyLCAiRXZhbHVhdGluZyByb3cgIiArIHN0cihyb3cpKQogCi0gICAgICAgICAgICAgICAgaWYgKG9wZXJhdG9yX3N0YXJ0ID09ICc9JyBhbmQgcHYgPT0gdmVyc2lvbl9zdGFydCk6CisgICAgICAgICAgICAgICAgaWYgKG9wZXJhdG9yX3N0YXJ0ID09ICc9JyBhbmQgcHYgPT0gdmVyc2lvbl9zdGFydCkgb3IgdmVyc2lvbl9zdGFydCA9PSAnLSc6CiAgICAgICAgICAgICAgICAgICAgIHZ1bG5lcmFibGUgPSBUcnVlCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgaWYgb3BlcmF0b3Jfc3RhcnQ6CkBAIC0yNTYsNyArMjYzLDcgQEAKIAogICAgIGNvbm4uY2xvc2UoKQogCi0gICAgcmV0dXJuIChsaXN0KHBhdGNoZWRfY3ZlcyksIGN2ZXNfdW5wYXRjaGVkKQorICAgIHJldHVybiAobGlzdChjdmVfd2hpdGVsaXN0KSwgbGlzdChwYXRjaGVkX2N2ZXMpLCBjdmVzX3VucGF0Y2hlZCkKIAogZGVmIGdldF9jdmVfaW5mbyhkLCBjdmVzKToKICAgICAiIiIKQEAgLTI4MCw3ICsyODcsNyBAQAogICAgIGNvbm4uY2xvc2UoKQogICAgIHJldHVybiBjdmVfZGF0YQogCi1kZWYgY3ZlX3dyaXRlX2RhdGEoZCwgcGF0Y2hlZCwgdW5wYXRjaGVkLCBjdmVfZGF0YSk6CitkZWYgY3ZlX3dyaXRlX2RhdGEoZCwgcGF0Y2hlZCwgdW5wYXRjaGVkLCB3aGl0ZWxpc3RlZCwgY3ZlX2RhdGEpOgogICAgICIiIgogICAgIFdyaXRlIENWRSBpbmZvcm1hdGlvbiBpbiBXT1JLRElSOyBhbmQgdG8gQ1ZFX0NIRUNLX0RJUiwgYW5kCiAgICAgQ1ZFIG1hbmlmZXN0IGlmIGVuYWJsZWQuCkBAIC0yOTYsNyArMzAzLDkgQEAKICAgICAgICAgd3JpdGVfc3RyaW5nICs9ICJQQUNLQUdFIE5BTUU6ICVzXG4iICUgZC5nZXRWYXIoIlBOIikKICAgICAgICAgd3JpdGVfc3RyaW5nICs9ICJQQUNLQUdFIFZFUlNJT046ICVzXG4iICUgZC5nZXRWYXIoIlBWIikKICAgICAgICAgd3JpdGVfc3RyaW5nICs9ICJDVkU6ICVzXG4iICUgY3ZlCi0gICAgICAgIGlmIGN2ZSBpbiBwYXRjaGVkOgorICAgICAgICBpZiBjdmUgaW4gd2hpdGVsaXN0ZWQ6CisgICAgICAgICAgICB3cml0ZV9zdHJpbmcgKz0gIkNWRSBTVEFUVVM6IFdoaXRlbGlzdGVkXG4iCisgICAgICAgIGVsaWYgY3ZlIGluIHBhdGNoZWQ6CiAgICAgICAgICAgICB3cml0ZV9zdHJpbmcgKz0gIkNWRSBTVEFUVVM6IFBhdGNoZWRcbiIKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHVucGF0Y2hlZF9jdmVzLmFwcGVuZChjdmUpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9kZXZpY2V0cmVlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9kZXZpY2V0cmVlLmJiY2xhc3MKaW5kZXggZDg3NzljNy4uYzc3MmFiMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZGV2aWNldHJlZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2RldmljZXRyZWUuYmJjbGFzcwpAQCAtNTksNyArNTksNyBAQAogCiBEVENfRkxBR1MgPz0gIi1SICR7RFRfUkVTRVJWRURfTUFQfSAtYiAke0RUX0JPT1RfQ1BVfSIKIERUQ19QUEZMQUdTID89ICItbm9zdGRpbmMgLXVuZGVmIC1EX19EVFNfXyAteCBhc3NlbWJsZXItd2l0aC1jcHAiCi1EVENfQkZMQUdTID89ICItcCAke0RUX1BBRERJTkdfU0laRX0iCitEVENfQkZMQUdTID89ICItcCAke0RUX1BBRERJTkdfU0laRX0gLUAiCiBEVENfT0ZMQUdTID89ICItcCAwIC1AIC1IIGVwYXByIgogCiBweXRob24gKCkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzLWJhc2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlscy1iYXNlLmJiY2xhc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmMzk4ZDcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzLWJhc2UuYmJjbGFzcworKysgL2Rldi9udWxsCkBAIC0xLDQgKzAsMCBAQAotREVQRU5EUyAgKz0gIiR7QFsiJHtQWVRIT05fUE59LW5hdGl2ZSAke1BZVEhPTl9QTn0iLCAiIl1bKGQuZ2V0VmFyKCdQQUNLQUdFUycpID09ICcnKV19IgotUkRFUEVORFNfJHtQTn0gKz0gIiR7QFsnJywgJyR7UFlUSE9OX1BOfS1jb3JlJ11bJyR7Q0xBU1NPVkVSUklERX0nID09ICdjbGFzcy10YXJnZXQnXX0iCi0KLWluaGVyaXQgZGlzdHV0aWxzLWNvbW1vbi1iYXNlIHB5dGhvbm5hdGl2ZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMuYmJjbGFzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzc1OWI1OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMuYmJjbGFzcworKysgL2Rldi9udWxsCkBAIC0xLDg3ICswLDAgQEAKLWluaGVyaXQgZGlzdHV0aWxzLWJhc2UKLQotRElTVFVUSUxTX0JVSUxEX0FSR1MgPz0gIiIKLURJU1RVVElMU19TVEFHRV9IRUFERVJTX0FSR1MgPz0gIi0taW5zdGFsbC1kaXI9JHtTVEFHSU5HX0lOQ0RJUn0vJHtQWVRIT05fRElSfSIKLURJU1RVVElMU19TVEFHRV9BTExfQVJHUyA/PSAiLS1wcmVmaXg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCi0gICAgLS1pbnN0YWxsLWRhdGE9JHtTVEFHSU5HX0RBVEFESVJ9IgotRElTVFVUSUxTX0lOU1RBTExfQVJHUyA/PSAiLS1yb290PSR7RH0gXAotICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCi0gICAgLS1pbnN0YWxsLWxpYj0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCi0gICAgLS1pbnN0YWxsLWRhdGE9JHtkYXRhZGlyfSIKLQotRElTVFVUSUxTX1BZVEhPTiA9ICJweXRob24iCi1ESVNUVVRJTFNfUFlUSE9OX2NsYXNzLW5hdGl2ZSA9ICJuYXRpdmVweXRob24iCi0KLWRpc3R1dGlsc19kb19jb25maWd1cmUoKSB7Ci0gICAgICAgIGlmIFsgIiR7Q0xFQU5CUk9LRU59IiAhPSAiMSIgXSA7IHRoZW4KLSAgICAgICAgICAgICAgICBOT19GRVRDSF9CVUlMRD0xIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgY2xlYW4gJHtESVNUVVRJTFNfQlVJTERfQVJHU30KLSAgICAgICAgZmkKLX0KLQotZGlzdHV0aWxzX2RvX2NvbXBpbGUoKSB7Ci0gICAgICAgICBOT19GRVRDSF9CVUlMRD0xIFwKLSAgICAgICAgIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBidWlsZCAke0RJU1RVVElMU19CVUlMRF9BUkdTfSB8fCBcCi0gICAgICAgICBiYmZhdGFsX2xvZyAiJyR7UFlUSE9OX1BOfSBzZXR1cC5weSBidWlsZCAke0RJU1RVVElMU19CVUlMRF9BUkdTfScgZXhlY3V0aW9uIGZhaWxlZC4iCi19Ci0KLWRpc3R1dGlsc19zdGFnZV9oZWFkZXJzKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7U1RBR0lOR19ESVJfSE9TVH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQotICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbF9oZWFkZXJzICR7RElTVFVUSUxTX1NUQUdFX0hFQURFUlNfQVJHU30gfHwgXAotICAgICAgICBiYmZhdGFsX2xvZyAiJyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsX2hlYWRlcnMgJHtESVNUVVRJTFNfU1RBR0VfSEVBREVSU19BUkdTfScgZXhlY3V0aW9uIGZvciBzdGFnZV9oZWFkZXJzIGZhaWxlZC4iCi19Ci0KLWRpc3R1dGlsc19zdGFnZV9hbGwoKSB7Ci0gICAgICAgIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICBpbnN0YWxsIC1kICR7U1RBR0lOR19ESVJfSE9TVH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQotICAgICAgICBQWVRIT05QQVRIPSR7U1RBR0lOR19ESVJfSE9TVH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSBcCi0gICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX1NUQUdFX0FMTF9BUkdTfSB8fCBcCi0gICAgICAgIGJiZmF0YWxfbG9nICInJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgJHtESVNUVVRJTFNfU1RBR0VfQUxMX0FSR1N9JyBleGVjdXRpb24gZm9yIHN0YWdlX2FsbCBmYWlsZWQuIgotfQotCi1kaXN0dXRpbHNfZG9faW5zdGFsbCgpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0KLSAgICAgICAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAotICAgICAgICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgIFBZVEhPTlBBVEg9JHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKLSAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgJHtESVNUVVRJTFNfSU5TVEFMTF9BUkdTfSB8fCBcCi0gICAgICAgIGJiZmF0YWxfbG9nICInJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgJHtESVNUVVRJTFNfSU5TVEFMTF9BUkdTfScgZXhlY3V0aW9uIGZhaWxlZC4iCi0KLSAgICAgICAgIyBzdXBwb3J0IGZpbGVuYW1lcyB3aXRoICpzcGFjZXMqCi0gICAgICAgICMgb25seSBtb2RpZnkgZmlsZSBpZiBpdCBjb250YWlucyBwYXRoICBhbmQgcmVjb21waWxlIGl0Ci0gICAgICAgIGZpbmQgJHtEfSAtbmFtZSAiKi5weSIgLWV4ZWMgZ3JlcCAtcSAke0R9IHt9IFw7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtZXhlYyBzZWQgLWkgLWUgczoke0R9OjpnIHt9IFw7IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtZXhlYyAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gLW1jb21waWxlYWxsIHt9IFw7Ci0KLSAgICAgICAgZm9yIGkgaW4gJHtEfSR7YmluZGlyfS8qICR7RH0ke3NiaW5kaXJ9Lyo7IGRvCi0gICAgICAgICAgICBpZiBbIC1mICIkaSIgXTsgdGhlbgotICAgICAgICAgICAgICAgIHNlZCAtaSAtZSBzOiR7UFlUSE9OfToke1VTUkJJTlBBVEh9L2VudlwgJHtESVNUVVRJTFNfUFlUSE9OfTpnICRpCi0gICAgICAgICAgICAgICAgc2VkIC1pIC1lIHM6JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9OiR7YmluZGlyfTpnICRpCi0gICAgICAgICAgICBmaQotICAgICAgICBkb25lCi0KLSAgICAgICAgcm0gLWYgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2Vhc3ktaW5zdGFsbC5wdGgKLSAgICAgICAgcm0gLWYgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L3NpdGUucHkqCi0KLSAgICAgICAgIwotICAgICAgICAjIEZJWE1FOiBCYW5kYWlkIGFnYWluc3Qgd3JvbmcgZGF0YWRpciBjb21wdXRhdGlvbgotICAgICAgICAjCi0gICAgICAgIGlmIFsgLWUgJHtEfSR7ZGF0YWRpcn0vc2hhcmUgXTsgdGhlbgotICAgICAgICAgICAgbXYgLWYgJHtEfSR7ZGF0YWRpcn0vc2hhcmUvKiAke0R9JHtkYXRhZGlyfS8KLSAgICAgICAgICAgIHJtZGlyICR7RH0ke2RhdGFkaXJ9L3NoYXJlCi0gICAgICAgIGZpCi0KLQkjIEZpeCBiYWNrcG9ydCBtb2R1bGVzCi0JaWYgWyAtZSAke1NUQUdJTkdfTElCRElSfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMvYmFja3BvcnRzL19faW5pdF9fLnB5IF0gJiYgCi0gICAgICAgICAgIFsgLWUgJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2JhY2twb3J0cy9fX2luaXRfXy5weSBdOyB0aGVuCi0JICAgcm0gJHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9L2JhY2twb3J0cy9fX2luaXRfXy5weTsKLQkgICBybSAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vYmFja3BvcnRzL19faW5pdF9fLnB5YzsKLQlmaQotfQotCi1FWFBPUlRfRlVOQ1RJT05TIGRvX2NvbmZpZ3VyZSBkb19jb21waWxlIGRvX2luc3RhbGwKLQotZXhwb3J0IExEU0hBUkVEPSIke0NDTER9IC1zaGFyZWQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9kaXN0dXRpbHMzLmJiY2xhc3MKaW5kZXggMDVhMjRiZi4uNzM1NmI1MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvZGlzdHV0aWxzMy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2Rpc3R1dGlsczMuYmJjbGFzcwpAQCAtMSwxMCArMSw5IEBACiBpbmhlcml0IGRpc3R1dGlsczMtYmFzZQogCitCID0gIiR7V09SS0RJUn0vYnVpbGQiCitkaXN0dXRpbHNfZG9fY29uZmlndXJlW2NsZWFuZGlyc10gPSAiJHtCfSIKKwogRElTVFVUSUxTX0JVSUxEX0FSR1MgPz0gIiIKLURJU1RVVElMU19CVUlMRF9FWFRfQVJHUyA/PSAiIgotRElTVFVUSUxTX1NUQUdFX0hFQURFUlNfQVJHUyA/PSAiLS1pbnN0YWxsLWRpcj0ke1NUQUdJTkdfSU5DRElSfS8ke1BZVEhPTl9ESVJ9IgotRElTVFVUSUxTX1NUQUdFX0FMTF9BUkdTID89ICItLXByZWZpeD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IFwKLSAgICAtLWluc3RhbGwtZGF0YT0ke1NUQUdJTkdfREFUQURJUn0iCiBESVNUVVRJTFNfSU5TVEFMTF9BUkdTID89ICItLXJvb3Q9JHtEfSBcCiAgICAgLS1wcmVmaXg9JHtwcmVmaXh9IFwKICAgICAtLWluc3RhbGwtbGliPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKQEAgLTE0LDQ1ICsxMywyOCBAQAogRElTVFVUSUxTX1BZVEhPTl9jbGFzcy1uYXRpdmUgPSAibmF0aXZlcHl0aG9uMyIKIAogZGlzdHV0aWxzM19kb19jb25maWd1cmUoKSB7Ci0JaWYgWyAiJHtDTEVBTkJST0tFTn0iICE9ICIxIiBdIDsgdGhlbgotCQlOT19GRVRDSF9CVUlMRD0xIFwKLQkJJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGNsZWFuICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9Ci0JZmkKKyAgICA6CiB9CiAKIGRpc3R1dGlsczNfZG9fY29tcGlsZSgpIHsKKyAgICAgICAgY2QgJHtTfQogICAgICAgICBOT19GRVRDSF9CVUlMRD0xIFwKICAgICAgICAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAogICAgICAgICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0gICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSBzZXR1cC5weSBcCi0gICAgICAgIGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9IHx8IFwKKyAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59ICR7U30vc2V0dXAucHkgXAorICAgICAgICBidWlsZCAtLWJ1aWxkLWJhc2U9JHtCfSAke0RJU1RVVElMU19CVUlMRF9BUkdTfSB8fCBcCiAgICAgICAgIGJiZmF0YWxfbG9nICInJHtQWVRIT05fUE59IHNldHVwLnB5IGJ1aWxkICR7RElTVFVUSUxTX0JVSUxEX0FSR1N9JyBleGVjdXRpb24gZmFpbGVkLiIKIH0KIGRpc3R1dGlsczNfZG9fY29tcGlsZVt2YXJkZXBzZXhjbHVkZV0gPSAiTUFDSElORSIKIAotZGlzdHV0aWxzM19zdGFnZV9oZWFkZXJzKCkgewotICAgICAgICBpbnN0YWxsIC1kICR7U1RBR0lOR19ESVJfSE9TVH0ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfQotICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbF9oZWFkZXJzICR7RElTVFVUSUxTX1NUQUdFX0hFQURFUlNfQVJHU30gfHwgXAotICAgICAgICBiYmZhdGFsX2xvZyAiJyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsX2hlYWRlcnMgJHtESVNUVVRJTFNfU1RBR0VfSEVBREVSU19BUkdTfScgZXhlY3V0aW9uIGZvciBzdGFnZV9oZWFkZXJzIGZhaWxlZC4iCi19Ci1kaXN0dXRpbHMzX3N0YWdlX2hlYWRlcnNbdmFyZGVwc2V4Y2x1ZGVdID0gIk1BQ0hJTkUiCi0KLWRpc3R1dGlsczNfc3RhZ2VfYWxsKCkgewotICAgICAgICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0gICAgICAgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgaW5zdGFsbCAtZCAke1NUQUdJTkdfRElSX0hPU1R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0KLSAgICAgICAgUFlUSE9OUEFUSD0ke1NUQUdJTkdfRElSX0hPU1R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXAotICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vJHtQWVRIT05fUE59LW5hdGl2ZS8ke1BZVEhPTl9QTn0gc2V0dXAucHkgaW5zdGFsbCAke0RJU1RVVElMU19TVEFHRV9BTExfQVJHU30gfHwgXAotICAgICAgICBiYmZhdGFsX2xvZyAiJyR7UFlUSE9OX1BOfSBzZXR1cC5weSBpbnN0YWxsICR7RElTVFVUSUxTX1NUQUdFX0FMTF9BUkdTfScgZXhlY3V0aW9uIGZvciBzdGFnZV9hbGwgZmFpbGVkLiIKLX0KLWRpc3R1dGlsczNfc3RhZ2VfYWxsW3ZhcmRlcHNleGNsdWRlXSA9ICJNQUNISU5FIgotCiBkaXN0dXRpbHMzX2RvX2luc3RhbGwoKSB7CisgICAgICAgIGNkICR7U30KICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0KICAgICAgICAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAogICAgICAgICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCiAgICAgICAgIFBZVEhPTlBBVEg9JHtEfSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKLSAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9LyR7UFlUSE9OX1BOfS1uYXRpdmUvJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgJHtESVNUVVRJTFNfSU5TVEFMTF9BUkdTfSB8fCBcCisgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS8ke1BZVEhPTl9QTn0tbmF0aXZlLyR7UFlUSE9OX1BOfSAke1N9L3NldHVwLnB5IFwKKyAgICAgICAgYnVpbGQgLS1idWlsZC1iYXNlPSR7Qn0gaW5zdGFsbCAtLXNraXAtYnVpbGQgJHtESVNUVVRJTFNfSU5TVEFMTF9BUkdTfSB8fCBcCiAgICAgICAgIGJiZmF0YWxfbG9nICInJHtQWVRIT05fUE59IHNldHVwLnB5IGluc3RhbGwgJHtESVNUVVRJTFNfSU5TVEFMTF9BUkdTfScgZXhlY3V0aW9uIGZhaWxlZC4iCiAKICAgICAgICAgIyBzdXBwb3J0IGZpbGVuYW1lcyB3aXRoICpzcGFjZXMqCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9leHRlcm5hbHNyYy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZXh0ZXJuYWxzcmMuYmJjbGFzcwppbmRleCBlYTU5ZDAyLi5kMjAwMTI5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9leHRlcm5hbHNyYy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2V4dGVybmFsc3JjLmJiY2xhc3MKQEAgLTczLDkgKzczLDggQEAKIAogICAgICAgICBkLnNldFZhcignU1JDX1VSSScsICcgJy5qb2luKGxvY2FsX3NyY3VyaSkpCiAKLSAgICAgICAgaWYgJ3tTUkNQVn0nIGluIGQuZ2V0VmFyKCdQVicsIEZhbHNlKToKLSAgICAgICAgICAgICMgRHVtbXkgdmFsdWUgYmVjYXVzZSB0aGUgZGVmYXVsdCBmdW5jdGlvbiBjYW4ndCBiZSBjYWxsZWQgd2l0aCBibGFuayBTUkNfVVJJCi0gICAgICAgICAgICBkLnNldFZhcignU1JDUFYnLCAnOTk5JykKKyAgICAgICAgIyBEdW1teSB2YWx1ZSBiZWNhdXNlIHRoZSBkZWZhdWx0IGZ1bmN0aW9uIGNhbid0IGJlIGNhbGxlZCB3aXRoIGJsYW5rIFNSQ19VUkkKKyAgICAgICAgZC5zZXRWYXIoJ1NSQ1BWJywgJzk5OScpCiAKICAgICAgICAgaWYgZC5nZXRWYXIoJ0NPTkZJR1VSRU9QVF9ERVBUUkFDSycpID09ICctLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZyc6CiAgICAgICAgICAgICBkLnNldFZhcignQ09ORklHVVJFT1BUX0RFUFRSQUNLJywgJycpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9mZWF0dXJlc19jaGVjay5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZmVhdHVyZXNfY2hlY2suYmJjbGFzcwppbmRleCAzOTFmYmUxLi44NzZkMzJlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9mZWF0dXJlc19jaGVjay5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ZlYXR1cmVzX2NoZWNrLmJiY2xhc3MKQEAgLTIzLDYgKzIzLDkgQEAKICMgQ29weXJpZ2h0IDIwMTMgKEMpIE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgogCiBweXRob24gKCkgeworICAgIGlmIGQuZ2V0VmFyKCdQQVJTRV9BTExfUkVDSVBFUycsIEZhbHNlKToKKyAgICAgICAgcmV0dXJuCisKICAgICAjIEFzc3VtZSBhdCBsZWFzdCBvbmUgdmFyIGlzIHNldC4KICAgICBkaXN0cm9fZmVhdHVyZXMgPSBzZXQoKGQuZ2V0VmFyKCdESVNUUk9fRkVBVFVSRVMnKSBvciAnJykuc3BsaXQoKSkKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZm9udGNhY2hlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9mb250Y2FjaGUuYmJjbGFzcwppbmRleCAxM2Y5ZGYxLi45N2U3ZjE3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9mb250Y2FjaGUuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9mb250Y2FjaGUuYmJjbGFzcwpAQCAtMjAsNyArMjAsNyBAQAogCSRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCB1cGRhdGVfZm9udF9jYWNoZSAke1BLR30gbWxwcmVmaXg9JHtNTFBSRUZJWH0gYmlucHJlZml4PSR7TUxQUkVGSVh9IFwKIAkJJ2JpbmRpcj0iJHtiaW5kaXJ9IicgXAogCQknbGliZGlyPSIke2xpYmRpcn0iJyBcCi0gICAgICAgICAgICAgICAgJ2xpYmV4ZWNkaXI9IiR7bGliZXhlY2Rpcn0iJyBcCisJCSdsaWJleGVjZGlyPSIke2xpYmV4ZWNkaXJ9IicgXAogCQknYmFzZV9saWJkaXI9IiR7YmFzZV9saWJkaXJ9IicgXAogCQknZm9udGNvbmZpZ2NhY2hlZGlyPSIke0ZPTlRDT05GSUdfQ0FDSEVfRElSfSInIFwKIAkJJ2ZvbnRjb25maWdjYWNoZXBhcmFtcz0iJHtGT05UQ09ORklHX0NBQ0hFX1BBUkFNU30iJyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9nby5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvZ28uYmJjbGFzcwppbmRleCBlNDBlNTU2Li5jOTk2ODlhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9nby5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2dvLmJiY2xhc3MKQEAgLTUzLDYgKzUzLDcgQEAKIGV4cG9ydCBHT1RPT0xESVIKIAogZXhwb3J0IENHT19FTkFCTEVEID89ICIxIgorZXhwb3J0IENHT19FTkFCTEVEX3Jpc2N2NjQgPSAiMCIKIGV4cG9ydCBDR09fQ0ZMQUdTID89ICIke0NGTEFHU30iCiBleHBvcnQgQ0dPX0NQUEZMQUdTID89ICIke0NQUEZMQUdTfSIKIGV4cG9ydCBDR09fQ1hYRkxBR1MgPz0gIiR7Q1hYRkxBR1N9IgpAQCAtMTQ3LDcgKzE0OCw3IEBACiAjIGRvZXNuJ3Qgc3VwcG9ydCAtYnVpbGRtb2RlPXBpZSwgc28gc2tpcCB0aGUgUUEgY2hlY2tpbmcgZm9yIG1pcHMgYW5kIGl0cwogIyB2YXJpYW50cy4KIHB5dGhvbigpIHsKLSAgICBpZiAnbWlwcycgaW4gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyk6CisgICAgaWYgJ21pcHMnIGluIGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpIG9yICdyaXNjdicgaW4gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyk6CiAgICAgICAgIGQuYXBwZW5kVmFyKCdJTlNBTkVfU0tJUF8lcycgJSBkLmdldFZhcignUE4nKSwgIiB0ZXh0cmVsIikKICAgICBlbHNlOgogICAgICAgICBkLmFwcGVuZFZhcignR09CVUlMREZMQUdTJywgJyAtYnVpbGRtb2RlPXBpZScpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9nb2FyY2guYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2dvYXJjaC5iYmNsYXNzCmluZGV4IDE2NmRlYTkuLjEwOTliOTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2dvYXJjaC5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2dvYXJjaC5iYmNsYXNzCkBAIC02LDEyICs2LDE4IEBACiBIT1NUX0dPQVJNID0gIiR7QGdvX21hcF9hcm0oZC5nZXRWYXIoJ0hPU1RfQVJDSCcpLCBkKX0iCiBIT1NUX0dPMzg2ID0gIiR7QGdvX21hcF8zODYoZC5nZXRWYXIoJ0hPU1RfQVJDSCcpLCBkLmdldFZhcignVFVORV9GRUFUVVJFUycpLCBkKX0iCiBIT1NUX0dPTUlQUyA9ICIke0Bnb19tYXBfbWlwcyhkLmdldFZhcignSE9TVF9BUkNIJyksIGQuZ2V0VmFyKCdUVU5FX0ZFQVRVUkVTJyksIGQpfSIKK0hPU1RfR09BUk1fY2xhc3MtbmF0aXZlID0gIjciCitIT1NUX0dPMzg2X2NsYXNzLW5hdGl2ZSA9ICJzc2UyIgorSE9TVF9HT01JUFNfY2xhc3MtbmF0aXZlID0gImhhcmRmbG9hdCIKIEhPU1RfR09UVVBMRSA9ICIke0hPU1RfR09PU31fJHtIT1NUX0dPQVJDSH0iCiBUQVJHRVRfR09PUyA9ICIke0Bnb19tYXBfb3MoZC5nZXRWYXIoJ1RBUkdFVF9PUycpLCBkKX0iCiBUQVJHRVRfR09BUkNIID0gIiR7QGdvX21hcF9hcmNoKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpLCBkKX0iCiBUQVJHRVRfR09BUk0gPSAiJHtAZ29fbWFwX2FybShkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZCl9IgogVEFSR0VUX0dPMzg2ID0gIiR7QGdvX21hcF8zODYoZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyksIGQuZ2V0VmFyKCdUVU5FX0ZFQVRVUkVTJyksIGQpfSIKIFRBUkdFVF9HT01JUFMgPSAiJHtAZ29fbWFwX21pcHMoZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJyksIGQuZ2V0VmFyKCdUVU5FX0ZFQVRVUkVTJyksIGQpfSIKK1RBUkdFVF9HT0FSTV9jbGFzcy1uYXRpdmUgPSAiNyIKK1RBUkdFVF9HTzM4Nl9jbGFzcy1uYXRpdmUgPSAic3NlMiIKK1RBUkdFVF9HT01JUFNfY2xhc3MtbmF0aXZlID0gImhhcmRmbG9hdCIKIFRBUkdFVF9HT1RVUExFID0gIiR7VEFSR0VUX0dPT1N9XyR7VEFSR0VUX0dPQVJDSH0iCiBHT19CVUlMRF9CSU5ESVIgPSAiJHtAWydiaW4vJHtIT1NUX0dPVFVQTEV9JywnYmluJ11bZC5nZXRWYXIoJ0JVSUxEX0dPVFVQTEUnKSA9PSBkLmdldFZhcignSE9TVF9HT1RVUExFJyldfSIKIApAQCAtMzEsNiArMzcsNyBAQAogR09fRFlOTElOS194ODYgPSAiMSIKIEdPX0RZTkxJTktfeDg2LTY0ID0gIjEiCiBHT19EWU5MSU5LX3Bvd2VycGM2NCA9ICIxIgorR09fRFlOTElOS19wb3dlcnBjNjRsZSA9ICIxIgogR09fRFlOTElOS19jbGFzcy1uYXRpdmUgPSAiIgogR09fRFlOTElOS19jbGFzcy1uYXRpdmVzZGsgPSAiIgogCkBAIC00MCw2ICs0Nyw3IEBACiBDT01QQVRJQkxFX0hPU1RfbGludXgtbXVzbHgzMiA9ICJudWxsIgogQ09NUEFUSUJMRV9IT1NUX3Bvd2VycGMgPSAibnVsbCIKIENPTVBBVElCTEVfSE9TVF9wb3dlcnBjNjQgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9wb3dlcnBjNjRsZSA9ICJudWxsIgogQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjMyID0gIm51bGwiCiAKIEFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgpAQCAtNDcsNyArNTUsNiBAQAogQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCiAKIFRVTkVfQ0NBUkdTX3JlbW92ZSA9ICItbWFyY2g9bWlwczMycjIiCi1TRUNVUklUWV9DRkxBR1NfbWlwc2FyY2ggPSAiJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgogU0VDVVJJVFlfTk9QSUVfQ0ZMQUdTID8/PSAiIgogCiAjIGdvIGNhbid0IGJlIGJ1aWx0IHdpdGggY2NhY2hlOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvZ3J1Yi1lZmktY2ZnLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9ncnViLWVmaS1jZmcuYmJjbGFzcwppbmRleCA4YjVmZjIwLi4zYTJjZGQ2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9ncnViLWVmaS1jZmcuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9ncnViLWVmaS1jZmcuYmJjbGFzcwpAQCAtODgsNiArODgsMTIgQEAKICAgICBmb3IgbGFiZWwgaW4gbGFiZWxzLnNwbGl0KCk6CiAgICAgICAgIGxvY2FsZGF0YSA9IGQuY3JlYXRlQ29weSgpCiAKKyAgICAgICAgb3ZlcnJpZGVzID0gbG9jYWxkYXRhLmdldFZhcignT1ZFUlJJREVTJykKKyAgICAgICAgaWYgbm90IG92ZXJyaWRlczoKKyAgICAgICAgICAgIGJiLmZhdGFsKCdPVkVSUklERVMgbm90IGRlZmluZWQnKQorCisgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ09WRVJSSURFUycsICdncnViXycgKyBsYWJlbCArICc6JyArIG92ZXJyaWRlcykKKwogICAgICAgICBmb3IgYnR5cGUgaW4gYnR5cGVzOgogICAgICAgICAgICAgY2ZnZmlsZS53cml0ZSgnXG5tZW51ZW50cnkgXCclcyVzXCd7XG4nICUgKGxhYmVsLCBidHlwZVswXSkpCiAgICAgICAgICAgICBsYiA9IGxhYmVsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9pY2VjYy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvaWNlY2MuYmJjbGFzcwppbmRleCBiYzNkNmY0Li5kMDk1MzA1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9pY2VjYy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ljZWNjLmJiY2xhc3MKQEAgLTEwNSw3ICsxMDUsNyBAQAogICAgICAgICByZXR1cm4gImljZWNjLWNyZWF0ZS1lbnYtbmF0aXZlIgogICAgIHJldHVybiAiIgogCi1ERVBFTkRTX3ByZXBlbmQgKz0gIiR7QGljZWNjX2RlcF9wcmVwZW5kKGQpfSAiCitERVBFTkRTX3ByZXBlbmQgPSAiJHtAaWNlY2NfZGVwX3ByZXBlbmQoZCl9ICIKIAogZ2V0X2Nyb3NzX2tlcm5lbF9jY1t2YXJkZXBzZXhjbHVkZV0gKz0gIktFUk5FTF9DQyIKIGRlZiBnZXRfY3Jvc3Nfa2VybmVsX2NjKGJiLGQpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtcHJlbGluay5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UtcHJlbGluay5iYmNsYXNzCmluZGV4IDA0ZGQ1N2MuLmViZjZlNmQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLXByZWxpbmsuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS1wcmVsaW5rLmJiY2xhc3MKQEAgLTE3LDYgKzE3LDE2IEBACiAJcHJlX3ByZWxpbmtfc2l6ZT1gZHUgLWtzICR7SU1BR0VfUk9PVEZTfSB8IGF3ayAne3NpemUgPSAkMSA7IHByaW50IHNpemUgfSdgCiAJZWNobyAiU2l6ZSBiZWZvcmUgcHJlbGlua2luZyAkcHJlX3ByZWxpbmtfc2l6ZS4iCiAKKwkjIFRoZSBmaWxlc3lzdGVtIG1heSBub3QgY29udGFpbiBzeXNjb25mZGlyIHNvIGVzdGFibGlzaCB3aGF0IGlzIHByZXNlbnQKKwkjIHRvIGVuYWJsZSBjbGVhbnVwIGFmdGVyIHRlbXBvcmFyeSBjcmVhdGlvbiBvZiBzeXNjb25mZGlyIGlmIG5lZWRlZAorCXByZXNlbnRkaXI9IiR7SU1BR0VfUk9PVEZTfSR7c3lzY29uZmRpcn0iCisJd2hpbGUgWyAiJHtJTUFHRV9ST09URlN9IiAhPSAiJHtwcmVzZW50ZGlyfSIgXSA7IGRvCisJCVsgISAtZCAiJHtwcmVzZW50ZGlyfSIgXSB8fCBicmVhaworCQlwcmVzZW50ZGlyPWBkaXJuYW1lICIke3ByZXNlbnRkaXJ9ImAKKwlkb25lCisKKwlta2RpciAtcCAiJHtJTUFHRV9ST09URlN9JHtzeXNjb25mZGlyfSIKKwogCSMgV2UgbmVlZCBhIHByZWxpbmsgY29uZiBvbiB0aGUgZmlsZXN5c3RlbSwgYWRkIG9uZSBpZiBpdCdzIG1pc3NpbmcKIAlpZiBbICEgLWUgJHtJTUFHRV9ST09URlN9JHtzeXNjb25mZGlyfS9wcmVsaW5rLmNvbmYgXTsgdGhlbgogCQljcCAke1NUQUdJTkdfRVRDRElSX05BVElWRX0vcHJlbGluay5jb25mIFwKQEAgLTU5LDYgKzY5LDEzIEBACiAJCXJtICRsZHNvY29uZgogCWZpCiAKKwkjIFJlbW92ZSBhbnkgZGlyZWN0b3JpZXMgdGVtcG9yYXJpbHkgY3JlYXRlZCBmb3Igc3lzY29uZmRpcgorCWNsZWFudXBkaXI9IiR7SU1BR0VfUk9PVEZTfSR7c3lzY29uZmRpcn0iCisJd2hpbGUgWyAiJHtwcmVzZW50ZGlyfSIgIT0gIiR7Y2xlYW51cGRpcn0iIF0gOyBkbworCQlybWRpciAiJHtjbGVhbnVwZGlyfSIKKwkJY2xlYW51cGRpcj1gZGlybmFtZSAke2NsZWFudXBkaXJ9YAorCWRvbmUKKwogCXByZV9wcmVsaW5rX3NpemU9YGR1IC1rcyAke0lNQUdFX1JPT1RGU30gfCBhd2sgJ3tzaXplID0gJDEgOyBwcmludCBzaXplIH0nYAogCWVjaG8gIlNpemUgYWZ0ZXIgcHJlbGlua2luZyAkcHJlX3ByZWxpbmtfc2l6ZS4iCiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2UuYmJjbGFzcwppbmRleCBjMjgyNDM5Li42OTRiNThmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlLmJiY2xhc3MKQEAgLTYyLDEwICs2Miw3IEBACiAgICAgdmFsaWRfZmVhdHVyZXMgPSAoZC5nZXRWYXJGbGFnKCdJTUFHRV9GRUFUVVJFUycsICd2YWxpZGl0ZW1zJykgb3IgIiIpLnNwbGl0KCkKICAgICB2YWxpZF9mZWF0dXJlcyArPSBkLmdldFZhckZsYWdzKCdDT01QTEVNRU5UQVJZX0dMT0InKS5rZXlzKCkKICAgICBmb3IgdmFyIGluIGQ6Ci0gICAgICAgaWYgdmFyLnN0YXJ0c3dpdGgoIlBBQ0tBR0VfR1JPVVBfIik6Ci0gICAgICAgICAgIGJiLndhcm4oIlBBQ0tBR0VfR1JPVVAgaXMgZGVwcmVjYXRlZCwgcGxlYXNlIHVzZSBGRUFUVVJFX1BBQ0tBR0VTIGluc3RlYWQiKQotICAgICAgICAgICB2YWxpZF9mZWF0dXJlcy5hcHBlbmQodmFyWzE0Ol0pCi0gICAgICAgZWxpZiB2YXIuc3RhcnRzd2l0aCgiRkVBVFVSRV9QQUNLQUdFU18iKToKKyAgICAgICBpZiB2YXIuc3RhcnRzd2l0aCgiRkVBVFVSRV9QQUNLQUdFU18iKToKICAgICAgICAgICAgdmFsaWRfZmVhdHVyZXMuYXBwZW5kKHZhclsxNzpdKQogICAgIHZhbGlkX2ZlYXR1cmVzLnNvcnQoKQogCkBAIC02MDksNiArNjA2LDcgQEAKIGRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCiBkb19jb21waWxlW25vZXhlY10gPSAiMSIKIGRvX2luc3RhbGxbbm9leGVjXSA9ICIxIgorZGVsdGFzayBkb19wb3B1bGF0ZV9saWMKIGRlbHRhc2sgZG9fcG9wdWxhdGVfc3lzcm9vdAogZG9fcGFja2FnZVtub2V4ZWNdID0gIjEiCiBkZWx0YXNrIGRvX3BhY2thZ2VfcWEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlcy5iYmNsYXNzCmluZGV4IDJlZWZmYmIuLmY4MmYxZDggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2ltYWdlX3R5cGVzLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXMuYmJjbGFzcwpAQCAtNTksNiArNTksOCBAQAogCiBaSVBfQ09NUFJFU1NJT05fTEVWRUwgPz0gIi05IgogCitaU1REX0NPTVBSRVNTSU9OX0xFVkVMID89ICItMyIKKwogSkZGUzJfU1VNX0VYVFJBX0FSR1MgPz0gIiIKIElNQUdFX0NNRF9qZmZzMiA9ICJta2ZzLmpmZnMyIC0tcm9vdD0ke0lNQUdFX1JPT1RGU30gLS1mYWtldGltZSAtLW91dHB1dD0ke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmpmZnMyICR7RVhUUkFfSU1BR0VDTUR9IgogCkBAIC0xMjgsNyArMTMwLDcgQEAKIAogZG9faW1hZ2VfY3Bpb1tjbGVhbmRpcnNdICs9ICIke1dPUktESVJ9L2NwaW9fYXBwZW5kIgogSU1BR0VfQ01EX2NwaW8gKCkgewotCShjZCAke0lNQUdFX1JPT1RGU30gJiYgZmluZCAuIHwgY3BpbyAtbyAtSCBuZXdjID4ke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmNwaW8pCisJKGNkICR7SU1BR0VfUk9PVEZTfSAmJiBmaW5kIC4gfCBzb3J0IHwgY3BpbyAtLXJlcHJvZHVjaWJsZSAtbyAtSCBuZXdjID4ke0lNR0RFUExPWURJUn0vJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LmNwaW8pCiAJIyBXZSBvbmx5IG5lZWQgdGhlIC9pbml0IHN5bWxpbmsgaWYgd2UncmUgYnVpbGRpbmcgdGhlIHJlYWwKIAkjIGltYWdlLiBUaGUgLWRiZyBpbWFnZSBkb2Vzbid0IG5lZWQgaXQhIEJ5IGJlaW5nIGNsZXZlcgogCSMgYWJvdXQgdGhpcyB3ZSBhbHNvIGF2b2lkICd0b3VjaCcgYmVsb3cgZmFpbGluZywgYXMgaXQKQEAgLTI2OSw3ICsyNzEsNyBAQAogICAgIGhkZGltZyBcCiAgICAgc3F1YXNoZnMgc3F1YXNoZnMteHogc3F1YXNoZnMtbHpvIHNxdWFzaGZzLWx6NCBcCiAgICAgdWJpIHViaWZzIG11bHRpdWJpIFwKLSAgICB0YXIgdGFyLmd6IHRhci5iejIgdGFyLnh6IHRhci5sejQgXAorICAgIHRhciB0YXIuZ3ogdGFyLmJ6MiB0YXIueHogdGFyLmx6NCB0YXIuenN0IFwKICAgICBjcGlvIGNwaW8uZ3ogY3Bpby54eiBjcGlvLmx6bWEgY3Bpby5sejQgXAogICAgIHdpYyB3aWMuZ3ogd2ljLmJ6MiB3aWMubHptYSBcCiAgICAgY29udGFpbmVyIFwKQEAgLTI4Miw3ICsyODQsNyBAQAogIyBDT05WRVJTSU9OX0NNRC9ERVBFTkRTLgogQ09NUFJFU1NJT05UWVBFUyA/PSAiIgogCi1DT05WRVJTSU9OVFlQRVMgPSAiZ3ogYnoyIGx6bWEgeHogbHo0IGx6byB6aXAgc3VtIG1kNXN1bSBzaGExc3VtIHNoYTIyNHN1bSBzaGEyNTZzdW0gc2hhMzg0c3VtIHNoYTUxMnN1bSBibWFwIHUtYm9vdCB2bWRrIHZkaSBxY293MiBiYXNlNjQgJHtDT01QUkVTU0lPTlRZUEVTfSIKK0NPTlZFUlNJT05UWVBFUyA9ICJneiBiejIgbHptYSB4eiBsejQgbHpvIHppcCB6c3Qgc3VtIG1kNXN1bSBzaGExc3VtIHNoYTIyNHN1bSBzaGEyNTZzdW0gc2hhMzg0c3VtIHNoYTUxMnN1bSBibWFwIHUtYm9vdCB2bWRrIHZkaSBxY293MiBiYXNlNjQgJHtDT01QUkVTU0lPTlRZUEVTfSIKIENPTlZFUlNJT05fQ01EX2x6bWEgPSAibHptYSAtayAtZiAtNyAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSIKIENPTlZFUlNJT05fQ01EX2d6ID0gImd6aXAgLWYgLTkgLW4gLWMgLS1yc3luY2FibGUgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gPiAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS5neiIKIENPTlZFUlNJT05fQ01EX2J6MiA9ICJwYnppcDIgLWYgLWsgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0iCkBAIC0yOTAsNiArMjkyLDcgQEAKIENPTlZFUlNJT05fQ01EX2x6NCA9ICJsejQgLTkgLXogLWwgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0ubHo0IgogQ09OVkVSU0lPTl9DTURfbHpvID0gImx6b3AgLTkgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0iCiBDT05WRVJTSU9OX0NNRF96aXAgPSAiemlwICR7WklQX0NPTVBSRVNTSU9OX0xFVkVMfSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS56aXAgJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0iCitDT05WRVJTSU9OX0NNRF96c3QgPSAienN0ZCAtZiAtayAtVDAgLWMgJHtaU1REX0NPTVBSRVNTSU9OX0xFVkVMfSAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfSA+ICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnpzdCIKIENPTlZFUlNJT05fQ01EX3N1bSA9ICJzdW10b29sIC1pICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9IC1vICR7SU1BR0VfTkFNRX0ke0lNQUdFX05BTUVfU1VGRklYfS4ke3R5cGV9LnN1bSAke0pGRlMyX1NVTV9FWFRSQV9BUkdTfSIKIENPTlZFUlNJT05fQ01EX21kNXN1bSA9ICJtZDVzdW0gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gPiAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS5tZDVzdW0iCiBDT05WRVJTSU9OX0NNRF9zaGExc3VtID0gInNoYTFzdW0gJHtJTUFHRV9OQU1FfSR7SU1BR0VfTkFNRV9TVUZGSVh9LiR7dHlwZX0gPiAke0lNQUdFX05BTUV9JHtJTUFHRV9OQU1FX1NVRkZJWH0uJHt0eXBlfS5zaGExc3VtIgpAQCAtMzEwLDYgKzMxMyw3IEBACiBDT05WRVJTSU9OX0RFUEVORFNfbHo0ID0gImx6NC1uYXRpdmUiCiBDT05WRVJTSU9OX0RFUEVORFNfbHpvID0gImx6b3AtbmF0aXZlIgogQ09OVkVSU0lPTl9ERVBFTkRTX3ppcCA9ICJ6aXAtbmF0aXZlIgorQ09OVkVSU0lPTl9ERVBFTkRTX3pzdCA9ICJ6c3RkLW5hdGl2ZSIKIENPTlZFUlNJT05fREVQRU5EU19zdW0gPSAibXRkLXV0aWxzLW5hdGl2ZSIKIENPTlZFUlNJT05fREVQRU5EU19ibWFwID0gImJtYXAtdG9vbHMtbmF0aXZlIgogQ09OVkVSU0lPTl9ERVBFTkRTX3UtYm9vdCA9ICJ1LWJvb3QtdG9vbHMtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvaW1hZ2VfdHlwZXNfd2ljLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlc193aWMuYmJjbGFzcwppbmRleCBmMzUwZGMyLi45NmVkMDQ3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlc193aWMuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9pbWFnZV90eXBlc193aWMuYmJjbGFzcwpAQCAtNCw3ICs0LDcgQEAKICAgICAgICAgICAgQkJMQVlFUlMgSU1HREVQTE9ZRElSIERFUExPWV9ESVJfSU1BR0UgRkFLRVJPT1RDTUQgSU1BR0VfQkFTRU5BTUUgSU1BR0VfQk9PVF9GSUxFUyBcCiAgICAgICAgICAgIElNQUdFX0xJTktfTkFNRSBJTUFHRV9ST09URlMgSU5JVFJBTUZTX0ZTVFlQRVMgSU5JVFJEIElOSVRSRF9MSVZFIElTT0RJUiBSRUNJUEVfU1lTUk9PVF9OQVRJVkUgXAogICAgICAgICAgICBST09URlNfU0laRSBTVEFHSU5HX0RBVEFESVIgU1RBR0lOR19ESVIgU1RBR0lOR19MSUJESVIgVEFSR0VUX1NZUyBcCi0gICAgICAgICAgIEtFUk5FTF9JTUFHRVRZUEUgTUFDSElORSBJTklUUkFNRlNfSU1BR0UgSU5JVFJBTUZTX0lNQUdFX0JVTkRMRSBJTklUUkFNRlNfTElOS19OQU1FIgorICAgICAgICAgICBLRVJORUxfSU1BR0VUWVBFIE1BQ0hJTkUgSU5JVFJBTUZTX0lNQUdFIElOSVRSQU1GU19JTUFHRV9CVU5ETEUgSU5JVFJBTUZTX0xJTktfTkFNRSBBUFBFTkQiCiAKIGluaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ0lOSVRSQU1GU19JTUFHRV9CVU5ETEUnLCAnMScsICdrZXJuZWwtYXJ0aWZhY3QtbmFtZXMnLCAnJywgZCl9CiAKQEAgLTI3LDE2ICsyNywxNiBAQAogCiBJTUFHRV9DTURfd2ljICgpIHsKIAlvdXQ9IiR7SU1HREVQTE9ZRElSfS8ke0lNQUdFX05BTUV9IgorCWJ1aWxkX3dpYz0iJHtXT1JLRElSfS9idWlsZC13aWMiCiAJd2tzPSIke1dLU19GVUxMX1BBVEh9IgogCWlmIFsgLXogIiR3a3MiIF07IHRoZW4KIAkJYmJmYXRhbCAiTm8ga2lja3N0YXJ0IGZpbGVzIGZyb20gV0tTX0ZJTEVTIHdlcmUgZm91bmQ6ICR7V0tTX0ZJTEVTfS4gUGxlYXNlIHNldCBXS1NfRklMRSBvciBXS1NfRklMRVMgYXBwcm9wcmlhdGVseS4iCiAJZmkKLQotCUJVSUxERElSPSIke1RPUERJUn0iIHdpYyBjcmVhdGUgIiR3a3MiIC0tdmFycyAiJHtTVEFHSU5HX0RJUn0vJHtNQUNISU5FfS9pbWdkYXRhLyIgLWUgIiR7SU1BR0VfQkFTRU5BTUV9IiAtbyAiJG91dC8iICR7V0lDX0NSRUFURV9FWFRSQV9BUkdTfQotCW12ICIkb3V0LyQoYmFzZW5hbWUgIiR7d2tzJS53a3N9IikiKi5kaXJlY3QgIiRvdXQke0lNQUdFX05BTUVfU1VGRklYfS53aWMiCi0Jcm0gLXJmICIkb3V0LyIKKwlCVUlMRERJUj0iJHtUT1BESVJ9IiBQU0VVRE9fVU5MT0FEPTEgd2ljIGNyZWF0ZSAiJHdrcyIgLS12YXJzICIke1NUQUdJTkdfRElSfS8ke01BQ0hJTkV9L2ltZ2RhdGEvIiAtZSAiJHtJTUFHRV9CQVNFTkFNRX0iIC1vICIkYnVpbGRfd2ljLyIgJHtXSUNfQ1JFQVRFX0VYVFJBX0FSR1N9CisJbXYgIiRidWlsZF93aWMvJChiYXNlbmFtZSAiJHt3a3MlLndrc30iKSIqLmRpcmVjdCAiJG91dCR7SU1BR0VfTkFNRV9TVUZGSVh9LndpYyIKIH0KIElNQUdFX0NNRF93aWNbdmFyZGVwc2V4Y2x1ZGVdID0gIldLU19GVUxMX1BBVEggV0tTX0ZJTEVTIFRPUERJUiIKK2RvX2ltYWdlX3dpY1tjbGVhbmRpcnNdID0gIiR7V09SS0RJUn0vYnVpbGQtd2ljIgogCiAjIFJlYnVpbGQgd2hlbiB0aGUgd2tzIGZpbGUgb3IgdmFycyBpbiBXSUNWQVJTIGNoYW5nZQogVVNJTkdfV0lDID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnSU1BR0VfRlNUWVBFUycsICd3aWMgJyArICcgJy5qb2luKCd3aWMuJXMnICUgYyBmb3IgYyBpbiAnJHtDT05WRVJTSU9OVFlQRVN9Jy5zcGxpdCgpKSwgJzEnLCAnJywgZCl9IgpAQCAtNDYsNiArNDYsNyBAQAogCiAjIFdlIGVuc3VyZSBhbGwgYXJ0ZmFjdHMgYXJlIGRlcGxveWVkIChlLmcgdmlydHVhbC9ib290bG9hZGVyKQogZG9faW1hZ2Vfd2ljW3JlY3JkZXB0YXNrXSArPSAiZG9fZGVwbG95IgorZG9faW1hZ2Vfd2ljW2RlcHRhc2tdICs9ICJkb19pbWFnZV9jb21wbGV0ZSIKIAogV0tTX0ZJTEVfREVQRU5EU19ERUZBVUxUID0gJyR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgiQlVJTERfQVJDSCIsIFsgJ3g4Nl82NCcsICdpNjg2JyBdLCAic3lzbGludXgtbmF0aXZlIiwgIiIsZCl9JwogV0tTX0ZJTEVfREVQRU5EU19ERUZBVUxUICs9ICJibWFwLXRvb2xzLW5hdGl2ZSBjZHJ0b29scy1uYXRpdmUgYnRyZnMtdG9vbHMtbmF0aXZlIHNxdWFzaGZzLXRvb2xzLW5hdGl2ZSBlMmZzcHJvZ3MtbmF0aXZlIgpAQCAtODQsNiArODUsMTAgQEAKICAgICBiYi51dGlscy5jb3B5ZmlsZSh3a3NfZmlsZSwgIiVzLyVzIiAlIChkZXBkaXIsIGJhc2VuYW1lICsgJy0nICsgb3MucGF0aC5iYXNlbmFtZSh3a3NfZmlsZSkpKQogfQogCitkb19mbHVzaF9wc2V1ZG9kYigpIHsKKwkke0ZBS0VST09URU5WfSAke0ZBS0VST09UQ01EfSAtUworfQorCiBweXRob24gKCkgewogICAgIGlmIGQuZ2V0VmFyKCdVU0lOR19XSUMnKToKICAgICAgICAgd2tzX2ZpbGVfdSA9IGQuZ2V0VmFyKCdXS1NfRlVMTF9QQVRIJywgRmFsc2UpCkBAIC0xMzcsNiArMTQyLDcgQEAKICAgICBkZXBkaXIgPSBkLmdldFZhcignSU1HREVQTE9ZRElSJykKICAgICBiYi51dGlscy5jb3B5ZmlsZShvcy5wYXRoLmpvaW4ob3V0ZGlyLCBiYXNlbmFtZSkgKyAnLmVudicsIG9zLnBhdGguam9pbihkZXBkaXIsIGJhc2VuYW1lKSArICcuZW52JykKIH0KK2FkZHRhc2sgZG9fZmx1c2hfcHNldWRvZGIgYWZ0ZXIgZG9faW1hZ2UgYmVmb3JlIGRvX2ltYWdlX3dpYwogYWRkdGFzayBkb19yb290ZnNfd2ljZW52IGFmdGVyIGRvX2ltYWdlIGJlZm9yZSBkb19pbWFnZV93aWMKIGRvX3Jvb3Rmc193aWNlbnZbdmFyZGVwc10gKz0gIiR7V0lDVkFSU30iCiBkb19yb290ZnNfd2ljZW52W3ByZWZ1bmNzXSA9ICdzZXRfaW1hZ2Vfc2l6ZScKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2luc2FuZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MKaW5kZXggZjg1NmNmNi4uN2ZjOGYzMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvaW5zYW5lLmJiY2xhc3MKQEAgLTI4LDEzICsyOCwxNCBAQAogICAgICAgICAgICAgcG4tb3ZlcnJpZGVzIGluZm9kaXIgYnVpbGQtZGVwcyBzcmMtdXJpLWJhZCBcCiAgICAgICAgICAgICB1bmtub3duLWNvbmZpZ3VyZS1vcHRpb24gc3ltbGluay10by1zeXNyb290IG11bHRpbGliIFwKICAgICAgICAgICAgIGludmFsaWQtcGFja2FnZWNvbmZpZyBob3N0LXVzZXItY29udGFtaW5hdGVkIHVwcGVyY2FzZS1wbiBwYXRjaC1mdXp6IFwKKyAgICAgICAgICAgIG1pbWUgbWltZS14ZGcgXAogICAgICAgICAgICAgIgogRVJST1JfUUEgPz0gImRldi1zbyBkZWJ1Zy1kZXBzIGRldi1kZXBzIGRlYnVnLWZpbGVzIGFyY2ggcGtnY29uZmlnIGxhIFwKICAgICAgICAgICAgIHBlcm1zIGRlcC1jbXAgcGtndmFyY2hlY2sgcGVybS1jb25maWcgcGVybS1saW5lIHBlcm0tbGluayBcCiAgICAgICAgICAgICBzcGxpdC1zdHJpcCBwYWNrYWdlcy1saXN0IHBrZ3YtdW5kZWZpbmVkIHZhci11bmRlZmluZWQgXAogICAgICAgICAgICAgdmVyc2lvbi1nb2luZy1iYWNrd2FyZHMgZXhwYW5kZWQtZCBpbnZhbGlkLWNoYXJzIFwKICAgICAgICAgICAgIGxpY2Vuc2UtY2hlY2tzdW0gZGV2LWVsZiBmaWxlLXJkZXBzIGNvbmZpZ3VyZS11bnNhZmUgXAotICAgICAgICAgICAgY29uZmlndXJlLWdldHRleHQgcGVybGxvY2FscG9kIFwKKyAgICAgICAgICAgIGNvbmZpZ3VyZS1nZXR0ZXh0IHBlcmxsb2NhbHBvZCBzaGViYW5nLXNpemUgXAogICAgICAgICAgICAgIgogIyBBZGQgdXNybWVyZ2UgUUEgY2hlY2sgYmFzZWQgb24gZGlzdHJvIGZlYXR1cmUKIEVSUk9SX1FBX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3Vzcm1lcmdlJywgJyB1c3JtZXJnZScsICcnLCBkKX0iCkBAIC04Miw2ICs4MywyOSBAQAogICAgIGVsc2U6CiAgICAgICAgIG1lc3NhZ2VzW3NlY3Rpb25dID0gbWVzc2FnZXNbc2VjdGlvbl0gKyAiXG4iICsgbmV3X21zZwogCitRQVBBVEhURVNUW3NoZWJhbmctc2l6ZV0gPSAicGFja2FnZV9xYV9jaGVja19zaGViYW5nX3NpemUiCitkZWYgcGFja2FnZV9xYV9jaGVja19zaGViYW5nX3NpemUocGF0aCwgbmFtZSwgZCwgZWxmLCBtZXNzYWdlcyk6CisgICAgaWYgb3MucGF0aC5pc2xpbmsocGF0aCkgb3IgZWxmOgorICAgICAgICByZXR1cm4KKworICAgIHRyeToKKyAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyYicpIGFzIGY6CisgICAgICAgICAgICBzdGFuemEgPSBmLnJlYWRsaW5lKDEzMCkKKyAgICBleGNlcHQgSU9FcnJvcjoKKyAgICAgICAgcmV0dXJuCisKKyAgICBpZiBzdGFuemEuc3RhcnRzd2l0aChiJyMhJyk6CisgICAgICAgICNTaGViYW5nIG5vdCBmb3VuZAorICAgICAgICB0cnk6CisgICAgICAgICAgICBzdGFuemEgPSBzdGFuemEuZGVjb2RlKCJ1dGYtOCIpCisgICAgICAgIGV4Y2VwdCBVbmljb2RlRGVjb2RlRXJyb3I6CisgICAgICAgICAgICAjSWYgaXQgaXMgbm90IGEgdGV4dCBmaWxlLCBpdCBpcyBub3QgYSBzY3JpcHQKKyAgICAgICAgICAgIHJldHVybgorCisgICAgICAgIGlmIGxlbihzdGFuemEpID4gMTI5OgorICAgICAgICAgICAgcGFja2FnZV9xYV9hZGRfbWVzc2FnZShtZXNzYWdlcywgInNoZWJhbmctc2l6ZSIsICIlczogJXMgbWF4aW11bSBzaGViYW5nIHNpemUgZXhjZWVkZWQsIHRoZSBtYXhpbXVtIHNpemUgaXMgMTI4LiIgJSAobmFtZSwgcGFja2FnZV9xYV9jbGVhbl9wYXRoKHBhdGgsIGQpKSkKKyAgICAgICAgICAgIHJldHVybgorCiBRQVBBVEhURVNUW2xpYmV4ZWNdID0gInBhY2thZ2VfcWFfY2hlY2tfbGliZXhlYyIKIGRlZiBwYWNrYWdlX3FhX2NoZWNrX2xpYmV4ZWMocGF0aCxuYW1lLCBkLCBlbGYsIG1lc3NhZ2VzKToKIApAQCAtMTgxLDEwICsyMDUsNTAgQEAKICAgICBsaWJnY2MuYSwgbGliZ2Nvdi5hIHdpbGwgYmUgc2tpcHBlZCBpbiB0aGVpciBwYWNrYWdlcwogICAgICIiIgogCi0gICAgaWYgbm90IG5hbWUuZW5kc3dpdGgoIi1waWMiKSBhbmQgbm90IG5hbWUuZW5kc3dpdGgoIi1zdGF0aWNkZXYiKSBhbmQgbm90IG5hbWUuZW5kc3dpdGgoIi1wdGVzdCIpIGFuZCBwYXRoLmVuZHN3aXRoKCIuYSIpIGFuZCBub3QgcGF0aC5lbmRzd2l0aCgiX25vbnNoYXJlZC5hIik6CisgICAgaWYgbm90IG5hbWUuZW5kc3dpdGgoIi1waWMiKSBhbmQgbm90IG5hbWUuZW5kc3dpdGgoIi1zdGF0aWNkZXYiKSBhbmQgbm90IG5hbWUuZW5kc3dpdGgoIi1wdGVzdCIpIGFuZCBwYXRoLmVuZHN3aXRoKCIuYSIpIGFuZCBub3QgcGF0aC5lbmRzd2l0aCgiX25vbnNoYXJlZC5hIikgYW5kIG5vdCAnL3Vzci9saWIvZGVidWctc3RhdGljLycgaW4gcGF0aCBhbmQgbm90ICcvLmRlYnVnLXN0YXRpYy8nIGluIHBhdGg6CiAgICAgICAgIHBhY2thZ2VfcWFfYWRkX21lc3NhZ2UobWVzc2FnZXMsICJzdGF0aWNkZXYiLCAibm9uIC1zdGF0aWNkZXYgcGFja2FnZSBjb250YWlucyBzdGF0aWMgLmEgbGlicmFyeTogJXMgcGF0aCAnJXMnIiAlIFwKICAgICAgICAgICAgICAgICAgKG5hbWUsIHBhY2thZ2VfcWFfY2xlYW5fcGF0aChwYXRoLGQpKSkKIAorUUFQQVRIVEVTVFttaW1lXSA9ICJwYWNrYWdlX3FhX2NoZWNrX21pbWUiCitkZWYgcGFja2FnZV9xYV9jaGVja19taW1lKHBhdGgsIG5hbWUsIGQsIGVsZiwgbWVzc2FnZXMpOgorICAgICIiIgorICAgIENoZWNrIGlmIHBhY2thZ2UgaW5zdGFsbHMgbWltZSB0eXBlcyB0byAvdXNyL3NoYXJlL21pbWUvcGFja2FnZXMKKyAgICB3aGlsZSBubyBpbmhlcml0aW5nIG1pbWUuYmJjbGFzcworICAgICIiIgorCisgICAgaWYgZC5nZXRWYXIoImRhdGFkaXIiKSArICIvbWltZS9wYWNrYWdlcyIgaW4gcGF0aCBhbmQgcGF0aC5lbmRzd2l0aCgnLnhtbCcpIGFuZCBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcygibWltZSIsIGQpOgorICAgICAgICBwYWNrYWdlX3FhX2FkZF9tZXNzYWdlKG1lc3NhZ2VzLCAibWltZSIsICJwYWNrYWdlIGNvbnRhaW5zIG1pbWUgdHlwZXMgYnV0IGRvZXMgbm90IGluaGVyaXQgbWltZTogJXMgcGF0aCAnJXMnIiAlIFwKKyAgICAgICAgICAgICAgICAgKG5hbWUsIHBhY2thZ2VfcWFfY2xlYW5fcGF0aChwYXRoLGQpKSkKKworUUFQQVRIVEVTVFttaW1lLXhkZ10gPSAicGFja2FnZV9xYV9jaGVja19taW1lX3hkZyIKK2RlZiBwYWNrYWdlX3FhX2NoZWNrX21pbWVfeGRnKHBhdGgsIG5hbWUsIGQsIGVsZiwgbWVzc2FnZXMpOgorICAgICIiIgorICAgIENoZWNrIGlmIHBhY2thZ2UgaW5zdGFsbHMgZGVza3RvcCBmaWxlIGNvbnRhaW5pbmcgTWltZVR5cGUgYW5kIHJlcXVpcmVzCisgICAgbWltZS10eXBlcy5iYmNsYXNzIHRvIGNyZWF0ZSAvdXNyL3NoYXJlL2FwcGxpY2F0aW9ucy9taW1laW5mby5jYWNoZQorICAgICIiIgorCisgICAgaWYgZC5nZXRWYXIoImRhdGFkaXIiKSArICIvYXBwbGljYXRpb25zIiBpbiBwYXRoIGFuZCBwYXRoLmVuZHN3aXRoKCcuZGVza3RvcCcpIGFuZCBub3QgYmIuZGF0YS5pbmhlcml0c19jbGFzcygibWltZS14ZGciLCBkKToKKyAgICAgICAgbWltZV90eXBlX2ZvdW5kID0gRmFsc2UKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBvcGVuKHBhdGgsICdyJykgYXMgZjoKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmLnJlYWQoKS5zcGxpdCgnXG4nKToKKyAgICAgICAgICAgICAgICAgICAgaWYgJ01pbWVUeXBlJyBpbiBsaW5lOgorICAgICAgICAgICAgICAgICAgICAgICAgbWltZV90eXBlX2ZvdW5kID0gVHJ1ZQorICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgIGV4Y2VwdDoKKyAgICAgICAgICAgICMgQXQgbGVhc3QgbGlicmVvZmZpY2UgaW5zdGFsbHMgc3ltbGlua3Mgd2l0aCBhYnNvbHV0ZSBwYXRocyB0aGF0IGFyZSBkYW5nbGluZyBoZXJlLgorICAgICAgICAgICAgIyBXZSBjb3VsZCBpbXBsZW1lbnQgc29tZSBtYWdpYyBidXQgZm9yIGZldyAob25lKSByZWNpcGVzIGl0IGlzIG5vdCB3b3J0aCB0aGUgZWZmb3J0IHNvIGp1c3Qgd2FybjoKKyAgICAgICAgICAgIHdzdHIgPSAiJXMgY2Fubm90IG9wZW4gJXMgLSBpcyBpdCBhIHN5bWxpbmsgd2l0aCBhYnNvbHV0ZSBwYXRoP1xuIiAlIChuYW1lLCBwYWNrYWdlX3FhX2NsZWFuX3BhdGgocGF0aCxkKSkKKyAgICAgICAgICAgIHdzdHIgKz0gIlBsZWFzZSBjaGVjayBpZiAobGlua2VkKSBmaWxlIGNvbnRhaW5zIGtleSAnTWltZVR5cGUnLlxuIgorICAgICAgICAgICAgcGtnbmFtZSA9IG5hbWUKKyAgICAgICAgICAgIGlmIG5hbWUgPT0gZC5nZXRWYXIoJ1BOJyk6CisgICAgICAgICAgICAgICAgcGtnbmFtZSA9ICcke1BOfScKKyAgICAgICAgICAgIHdzdHIgKz0gIklmIHllczogYWRkIFwnaW5oZXJ0IG1pbWUteGRnXCcgYW5kIFwnTUlNRV9YREdfUEFDS0FHRVMgKz0gXCIlc1wiXCcgLyBpZiBubyBhZGQgXCdJTlNBTkVfU0tJUF8lcyArPSBcIm1pbWUteGRnXCJcJyB0byByZWNpcGUuIiAlIChwa2duYW1lLCBwa2duYW1lKQorICAgICAgICAgICAgcGFja2FnZV9xYV9hZGRfbWVzc2FnZShtZXNzYWdlcywgIm1pbWUteGRnIiwgd3N0cikKKyAgICAgICAgaWYgbWltZV90eXBlX2ZvdW5kOgorICAgICAgICAgICAgcGFja2FnZV9xYV9hZGRfbWVzc2FnZShtZXNzYWdlcywgIm1pbWUteGRnIiwgInBhY2thZ2UgY29udGFpbnMgZGVza3RvcCBmaWxlIHdpdGgga2V5ICdNaW1lVHlwZScgYnV0IGRvZXMgbm90IGluaGVydCBtaW1lLXhkZzogJXMgcGF0aCAnJXMnIiAlIFwKKyAgICAgICAgICAgICAgICAgICAgKG5hbWUsIHBhY2thZ2VfcWFfY2xlYW5fcGF0aChwYXRoLGQpKSkKKwogZGVmIHBhY2thZ2VfcWFfY2hlY2tfbGliZGlyKGQpOgogICAgICIiIgogICAgIENoZWNrIGZvciB3cm9uZyBsaWJyYXJ5IGluc3RhbGxhdGlvbiBwYXRocy4gRm9yIGluc3RhbmNlLCBjYXRjaApAQCAtMzczLDExICs0MzcsMTAgQEAKICAgICBmb3IgbGluZSBpbiBwaGRycy5zcGxpdCgiXG4iKToKICAgICAgICAgaWYgIlNZTVRBQiIgaW4gbGluZToKICAgICAgICAgICAgIGhhc19zeW1zID0gVHJ1ZQotICAgICAgICBpZiAiR05VX0hBU0giIGluIGxpbmU6CisgICAgICAgIGlmICJHTlVfSEFTSCIgb3IgIkRUX01JUFNfWEhBU0giIGluIGxpbmU6CiAgICAgICAgICAgICBzYW5lID0gVHJ1ZQotICAgICAgICBpZiAiW21pcHMzMl0iIGluIGxpbmUgb3IgIlttaXBzNjRdIiBpbiBsaW5lOgorICAgICAgICBpZiAoIlttaXBzMzJdIiBpbiBsaW5lIG9yICJbbWlwczY0XSIgaW4gbGluZSkgYW5kIGQuZ2V0VmFyKCdUQ0xJQkMnKSA9PSAibXVzbCI6CiAgICAgICAgICAgICBzYW5lID0gVHJ1ZQotCiAgICAgaWYgaGFzX3N5bXMgYW5kIG5vdCBzYW5lOgogICAgICAgICBwYWNrYWdlX3FhX2FkZF9tZXNzYWdlKG1lc3NhZ2VzLCAibGRmbGFncyIsICJObyBHTlVfSEFTSCBpbiB0aGUgRUxGIGJpbmFyeSAlcywgZGlkbid0IHBhc3MgTERGTEFHUz8iICUgcGF0aCkKIApAQCAtODkzLDkgKzk1Niw5IEBACiAgICAgaWYgIiR7UE59IiBpbiBkLmdldFZhcigiU1JDX1VSSSIsIEZhbHNlKToKICAgICAgICAgcGFja2FnZV9xYV9oYW5kbGVfZXJyb3IoInNyYy11cmktYmFkIiwgIiVzOiBTUkNfVVJJIHVzZXMgUE4gbm90IEJQTiIgJSBwbiwgZCkKIAotICAgIHBuID0gZC5nZXRWYXIoIlNSQ19VUkkiKQotICAgIGlmIHJlLnNlYXJjaChyImdpdGh1YlwuY29tLy4rLy4rL2FyY2hpdmUvLisiLCBwbik6Ci0gICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJzcmMtdXJpLWJhZCIsICIlczogU1JDX1VSSSB1c2VzIHVuc3RhYmxlIEdpdEh1YiBhcmNoaXZlcyIgJSBwbiwgZCkKKyAgICBmb3IgdXJsIGluIGQuZ2V0VmFyKCJTUkNfVVJJIikuc3BsaXQoKToKKyAgICAgICAgaWYgcmUuc2VhcmNoKHIiZ2l0aHViXC5jb20vLisvLisvYXJjaGl2ZS8uKyIsIHVybCk6CisgICAgICAgICAgICBwYWNrYWdlX3FhX2hhbmRsZV9lcnJvcigic3JjLXVyaS1iYWQiLCAiJXM6IFNSQ19VUkkgdXNlcyB1bnN0YWJsZSBHaXRIdWIgYXJjaGl2ZXMiICUgcG4sIGQpCiAKIAogIyBUaGUgUEFDS0FHRSBGVU5DIHRvIHNjYW4gZWFjaCBwYWNrYWdlCkBAIC05MzcsMTQgKzEwMDAsMTMgQEAKICAgICBwa2dkZXN0ID0gZC5nZXRWYXIoJ1BLR0RFU1QnKQogICAgIHBhY2thZ2VzID0gc2V0KChkLmdldFZhcignUEFDS0FHRVMnKSBvciAnJykuc3BsaXQoKSkKIAotICAgIGNwYXRoID0gb2UuY2FjaGVkcGF0aC5DYWNoZWRQYXRoKCkKICAgICBnbG9iYWwgcGtnZmlsZXMKICAgICBwa2dmaWxlcyA9IHt9CiAgICAgZm9yIHBrZyBpbiBwYWNrYWdlczoKICAgICAgICAgcGtnZmlsZXNbcGtnXSA9IFtdCi0gICAgICAgIGZvciB3YWxrcm9vdCwgZGlycywgZmlsZXMgaW4gY3BhdGgud2Fsayhwa2dkZXN0ICsgIi8iICsgcGtnKToKKyAgICAgICAgZm9yIHdhbGtyb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKG9zLnBhdGguam9pbihwa2dkZXN0LCBwa2cpKToKICAgICAgICAgICAgIGZvciBmaWxlIGluIGZpbGVzOgotICAgICAgICAgICAgICAgIHBrZ2ZpbGVzW3BrZ10uYXBwZW5kKHdhbGtyb290ICsgb3Muc2VwICsgZmlsZSkKKyAgICAgICAgICAgICAgICBwa2dmaWxlc1twa2ddLmFwcGVuZChvcy5wYXRoLmpvaW4od2Fsa3Jvb3QsIGZpbGUpKQogCiAgICAgIyBubyBwYWNrYWdlcyBzaG91bGQgYmUgc2Nhbm5lZAogICAgIGlmIG5vdCBwYWNrYWdlczoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC1maXRpbWFnZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MKaW5kZXggZWMxOGEzZC4uNzJiMDVmZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLWZpdGltYWdlLmJiY2xhc3MKQEAgLTM5MSwxMSArMzkxLDEwIEBACiAKIAlpZiBbIC1uICIke0VYVEVSTkFMX0tFUk5FTF9ERVZJQ0VUUkVFfSIgXTsgdGhlbgogCQlkdGJjb3VudD0xCi0JCWZvciBEVEJGSUxFIGluICR7RVhURVJOQUxfS0VSTkVMX0RFVklDRVRSRUV9LyouZHRiOyBkbwotCQkJRFRCPWBiYXNlbmFtZSAke0RUQkZJTEV9YAorCQlmb3IgRFRCIGluICQoZmluZCAiJHtFWFRFUk5BTF9LRVJORUxfREVWSUNFVFJFRX0iIFwoIC1uYW1lICcqLmR0YicgLW8gLW5hbWUgJyouZHRibycgXCkgLXByaW50ZiAnJVBcbicgfCBzb3J0KTsgZG8KIAkJCURUQj0kKGVjaG8gIiR7RFRCfSIgfCB0ciAnLycgJ18nKQogCQkJRFRCUz0iJHtEVEJTfSAke0RUQn0iCi0JCQlmaXRpbWFnZV9lbWl0X3NlY3Rpb25fZHRiICR7MX0gJHtEVEJ9ICR7RFRCRklMRX0KKwkJCWZpdGltYWdlX2VtaXRfc2VjdGlvbl9kdGIgJHsxfSAke0RUQn0gIiR7RVhURVJOQUxfS0VSTkVMX0RFVklDRVRSRUV9LyR7RFRCfSIKIAkJZG9uZQogCWZpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbC15b2N0by5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXlvY3RvLmJiY2xhc3MKaW5kZXggZWQ5YmNmYS4uNWJjNjI3MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXlvY3RvLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLXlvY3RvLmJiY2xhc3MKQEAgLTEsOCArMSwyNCBAQAogIyByZW1vdmUgdGFza3MgdGhhdCBtb2RpZnkgdGhlIHNvdXJjZSB0cmVlIGluIGNhc2UgZXh0ZXJuYWxzcmMgaXMgaW5oZXJpdGVkCi1TUkNUUkVFQ09WRVJFRFRBU0tTICs9ICJkb19rZXJuZWxfY29uZmlnbWUgZG9fdmFsaWRhdGVfYnJhbmNoZXMgZG9fa2VybmVsX2NvbmZpZ2NoZWNrIGRvX2tlcm5lbF9jaGVja291dCBkb19mZXRjaCBkb191bnBhY2sgZG9fcGF0Y2giCitTUkNUUkVFQ09WRVJFRFRBU0tTICs9ICJkb192YWxpZGF0ZV9icmFuY2hlcyBkb19rZXJuZWxfY29uZmlnY2hlY2sgZG9fa2VybmVsX2NoZWNrb3V0IGRvX2ZldGNoIGRvX3VucGFjayBkb19wYXRjaCIKIFBBVENIX0dJVF9VU0VSX0VNQUlMID89ICJrZXJuZWwteW9jdG9Ab2UiCiBQQVRDSF9HSVRfVVNFUl9OQU1FID89ICJPcGVuRW1iZWRkZWQiCiAKKyMgVGhlIGRpc3RybyBvciBsb2NhbC5jb25mIHNob3VsZCBzZXQgdGhpcywgYnV0IGlmIG5vYm9keSBjYXJlcy4uLgorTElOVVhfS0VSTkVMX1RZUEUgPz89ICJzdGFuZGFyZCIKKworIyBLTUVUQSA/PSAiIgorS0JSQU5DSCA/PSAibWFzdGVyIgorS01BQ0hJTkUgPz0gIiR7TUFDSElORX0iCitTUkNSRVZfRk9STUFUID89ICJtZXRhX21hY2hpbmUiCisKKyMgTEVWRUxTOgorIyAgIDA6IG5vIHJlcG9ydGluZworIyAgIDE6IHJlcG9ydCBvcHRpb25zIHRoYXQgYXJlIHNwZWNpZmllZCwgYnV0IG5vdCBpbiB0aGUgZmluYWwgY29uZmlnCisjICAgMjogcmVwb3J0IG9wdGlvbnMgdGhhdCBhcmUgbm90IGhhcmR3YXJlIHJlbGF0ZWQsIGJ1dCBzZXQgYnkgYSBCU1AKK0tDT05GX0FVRElUX0xFVkVMID89ICIxIgorS0NPTkZfQlNQX0FVRElUX0xFVkVMID89ICIwIgorS01FVEFfQVVESVQgPz0gInllcyIKKwogIyByZXR1cm5zIGxvY2FsIChhYnNvbHV0ZSkgcGF0aCBuYW1lcyBmb3IgYWxsIHZhbGlkIHBhdGNoZXMgaW4gdGhlCiAjIHNyY191cmkKIGRlZiBmaW5kX3BhdGNoZXMoZCxzdWJkaXIpOgpAQCAtMzEsNyArNDcsNyBAQAogICAgICAgICBiYXNlLCBleHQgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUocykpCiAgICAgICAgIGlmIGV4dCBhbmQgZXh0IGluIFsiLnNjYyIsICIuY2ZnIl06CiAgICAgICAgICAgICBzb3VyY2VzX2xpc3QuYXBwZW5kKHMpCi0gICAgICAgIGVsaWYgYmFzZSBhbmQgYmFzZSBpbiAnZGVmY29uZmlnJzoKKyAgICAgICAgZWxpZiBiYXNlIGFuZCAnZGVmY29uZmlnJyBpbiBiYXNlOgogICAgICAgICAgICAgc291cmNlc19saXN0LmFwcGVuZChzKQogCiAgICAgcmV0dXJuIHNvdXJjZXNfbGlzdApAQCAtODMsMTMgKzk5LDYgQEAKIAkJZmkKIAlmaQogCi0JbWFjaGluZV9icmFuY2g9IiR7QCBnZXRfbWFjaGluZV9icmFuY2goZCwgIiR7S0JSQU5DSH0iICl9IgotCW1hY2hpbmVfc3JjcmV2PSIke1NSQ1JFVl9tYWNoaW5lfSIKLQlpZiBbIC16ICIke21hY2hpbmVfc3JjcmV2fSIgXTsgdGhlbgotCQkjIGZhbGxiYWNrIHRvIFNSQ1JFViBpZiBhIG5vbiBtYWNoaW5lX21ldGEgdHJlZSBpcyBiZWluZyBidWlsdAotCQltYWNoaW5lX3NyY3Jldj0iJHtTUkNSRVZ9IgotCWZpCi0KIAkjIEluIGEgc2ltaWxhciBtYW5uZXIgdG8gdGhlIGtlcm5lbCBpdHNlbGY6CiAJIwogCSMgICBkZWZjb25maWc6ICQob2JqKS9jb25mCkBAIC0xODIsNiArMTkxLDE0IEBACiAJCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgogCQkJYmJmYXRhbF9sb2cgIkNvdWxkIG5vdCBsb2NhdGUgQlNQIGRlZmluaXRpb24gZm9yICR7S01BQ0hJTkV9LyR7TElOVVhfS0VSTkVMX1RZUEV9IGFuZCBubyBkZWZjb25maWcgd2FzIHByb3ZpZGVkIgogCQlmaQorCisJCSMgaWYgdGhlIGJzcCBkZWZpbml0aW9uIGhhcyAiZGVmaW5lIEtNRVRBX0VYVEVSTkFMX0JTUCB0IiwKKwkJIyB0aGVuIHdlIG5lZWQgdG8gc2V0IGEgZmxhZyB0aGF0IHdpbGwgaW5zdHJ1Y3QgdGhlIG5leHQKKwkJIyBzdGVwcyB0byB1c2UgdGhlIEJTUCBhcyBib3RoIGNvbmZpZ3VyYXRpb24gYW5kIHBhdGNoZXMuCisJCWdyZXAgLXEgS01FVEFfRVhURVJOQUxfQlNQICRic3BfZGVmaW5pdGlvbgorCQlpZiBbICQ/IC1lcSAwIF07IHRoZW4KKwkJICAgIEtNRVRBX0VYVEVSTkFMX0JTUFM9InQiCisJCWZpCiAJZmkKIAltZXRhX2Rpcj0kKGtnaXQgLS1tZXRhKQogCkBAIC0xOTUsNiArMjEyLDEzIEBACiAJCWZpCiAJZmkKIAorCSMgaWYgS01FVEFfRVhURVJOQUxfQlNQUyBoYXMgYmVlbiBzZXQsIG9yIGl0IGhhcyBiZWVuIGRldGVjdGVkIGZyb20KKwkjIHRoZSBic3AgZGVmaW5pdGlvbiwgdGhlbiB3ZSBpbmplY3QgdGhlIGJzcF9kZWZpbml0aW9uIGludG8gdGhlCisJIyBwYXRjaCBwaGFzZSBiZWxvdy4gIHdlJ2xsIHBpZ2d5IGJhY2sgb24gdGhlIHNjY3MgdmFyaWFibGUuCisJaWYgWyAtbiAiJHtLTUVUQV9FWFRFUk5BTF9CU1BTfSIgXTsgdGhlbgorCQlzY2NzPSIke2JzcF9kZWZpbml0aW9ufSAke3NjY3N9IgorCWZpCisKIAkjIHJ1bjI6IG9ubHkgZ2VuZXJhdGUgcGF0Y2hlcyBmb3IgZWxlbWVudHMgdGhhdCBoYXZlIGJlZW4gcGFzc2VkIG9uIHRoZSBTUkNfVVJJCiAJZWxlbWVudHM9ImBlY2hvIC1uICR7c2Njc30gJHtwYXRjaGVzfSAke0tFUk5FTF9GRUFUVVJFU31gIgogCWlmIFsgLW4gIiR7ZWxlbWVudHN9IiBdOyB0aGVuCkBAIC0yOTMsNyArMzE3LDcgQEAKIH0KIGRvX2tlcm5lbF9jaGVja291dFtkaXJzXSA9ICIke1N9IgogCi1hZGR0YXNrIGtlcm5lbF9jaGVja291dCBiZWZvcmUgZG9fa2VybmVsX21ldGFkYXRhIGFmdGVyIGRvX3VucGFjaworYWRkdGFzayBrZXJuZWxfY2hlY2tvdXQgYmVmb3JlIGRvX2tlcm5lbF9tZXRhZGF0YSBhZnRlciBkb19zeW1saW5rX2tlcm5zcmMKIGFkZHRhc2sga2VybmVsX21ldGFkYXRhIGFmdGVyIGRvX3ZhbGlkYXRlX2JyYW5jaGVzIGRvX3VucGFjayBiZWZvcmUgZG9fcGF0Y2gKIGRvX2tlcm5lbF9tZXRhZGF0YVtkZXBlbmRzXSA9ICJrZXJuLXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogZG9fdmFsaWRhdGVfYnJhbmNoZXNbZGVwZW5kc10gPSAia2Vybi10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKQEAgLTMwMSwxMCArMzI1LDkgQEAKIGRvX2tlcm5lbF9jb25maWdtZVtkZXBlbmRzXSArPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9YmludXRpbHM6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIGRvX2tlcm5lbF9jb25maWdtZVtkZXBlbmRzXSArPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiBkb19rZXJuZWxfY29uZmlnbWVbZGVwZW5kc10gKz0gImJjLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IGJpc29uLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgorZG9fa2VybmVsX2NvbmZpZ21lW2RlcGVuZHNdICs9ICJrZXJuLXRvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogZG9fa2VybmVsX2NvbmZpZ21lW2RpcnNdICs9ICIke1N9ICR7Qn0iCiBkb19rZXJuZWxfY29uZmlnbWUoKSB7Ci0Jc2V0ICtlCi0KIAkjIHRyYW5zbGF0ZSB0aGUga2NvbmZpZ19tb2RlIGludG8gc29tZXRoaW5nIHRoYXQgbWVyZ2VfY29uZmlnLnNoCiAJIyB1bmRlcnN0YW5kcwogCWNhc2UgJHtLQ09ORklHX01PREV9IGluCkBAIC0zMzAsMTMgKzM1MywyMCBAQAogCQliYmZhdGFsX2xvZyAiQ291bGQgbm90IGZpbmQgY29uZmlndXJhdGlvbiBxdWV1ZSAoJHttZXRhX2Rpcn0vY29uZmlnLnF1ZXVlKSIKIAlmaQogCi0JQ0ZMQUdTPSIke0NGTEFHU30gJHtUT09MQ0hBSU5fT1BUSU9OU30iCUhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIEhPU1RDUFA9IiR7QlVJTERfQ1BQfSIgQ0M9IiR7S0VSTkVMX0NDfSIgQVJDSD0ke0FSQ0h9IG1lcmdlX2NvbmZpZy5zaCAtTyAke0J9ICR7Y29uZmlnX2ZsYWdzfSAke2NvbmZpZ3N9ID4gJHttZXRhX2Rpcn0vY2ZnL21lcmdlX2NvbmZpZ19idWlsZC5sb2cgMj4mMQotCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgotCQliYmZhdGFsX2xvZyAiQ291bGQgbm90IGNvbmZpZ3VyZSAke0tNQUNISU5FfS0ke0xJTlVYX0tFUk5FTF9UWVBFfSIKKwlDRkxBR1M9IiR7Q0ZMQUdTfSAke1RPT0xDSEFJTl9PUFRJT05TfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgSE9TVENQUD0iJHtCVUlMRF9DUFB9IiBDQz0iJHtLRVJORUxfQ0N9IiBMRD0iJHtLRVJORUxfTER9IiBBUkNIPSR7QVJDSH0gbWVyZ2VfY29uZmlnLnNoIC1PICR7Qn0gJHtjb25maWdfZmxhZ3N9ICR7Y29uZmlnc30gPiAke21ldGFfZGlyfS9jZmcvbWVyZ2VfY29uZmlnX2J1aWxkLmxvZyAyPiYxCisJaWYgWyAkPyAtbmUgMCAtbyAhIC1mICR7Qn0vLmNvbmZpZyBdOyB0aGVuCisJCWJiZXJyb3IgIkNvdWxkIG5vdCBnZW5lcmF0ZSBhIC5jb25maWcgZm9yICR7S01BQ0hJTkV9LSR7TElOVVhfS0VSTkVMX1RZUEV9IgorCQlpZiBbICR7S0NPTkZfQVVESVRfTEVWRUx9IC1ndCAxIF07IHRoZW4KKwkJCWJiZmF0YWxfbG9nICJgY2F0ICR7bWV0YV9kaXJ9L2NmZy9tZXJnZV9jb25maWdfYnVpbGQubG9nYCIKKwkJZWxzZQorCQkJYmJmYXRhbF9sb2cgIkRldGFpbHMgY2FuIGJlIGZvdW5kIGF0OiAke1N9LyR7bWV0YV9kaXJ9L2NmZy9tZXJnZV9jb25maWdfYnVpbGQubG9nIgorCQlmaQogCWZpCiAKLQllY2hvICIjIEdsb2JhbCBzZXR0aW5ncyBmcm9tIGxpbnV4IHJlY2lwZSIgPj4gJHtCfS8uY29uZmlnCi0JZWNobyAiQ09ORklHX0xPQ0FMVkVSU0lPTj0iXCIke0xJTlVYX1ZFUlNJT05fRVhURU5TSU9OfVwiID4+ICR7Qn0vLmNvbmZpZworCWlmIFsgISAteiAiJHtMSU5VWF9WRVJTSU9OX0VYVEVOU0lPTn0iIF07IHRoZW4KKwkJZWNobyAiIyBHbG9iYWwgc2V0dGluZ3MgZnJvbSBsaW51eCByZWNpcGUiID4+ICR7Qn0vLmNvbmZpZworCQllY2hvICJDT05GSUdfTE9DQUxWRVJTSU9OPSJcIiR7TElOVVhfVkVSU0lPTl9FWFRFTlNJT059XCIgPj4gJHtCfS8uY29uZmlnCisJZmkKIH0KIAogYWRkdGFzayBrZXJuZWxfY29uZmlnbWUgYmVmb3JlIGRvX2NvbmZpZ3VyZSBhZnRlciBkb19wYXRjaApAQCAtMzU1LDYgKzM4NSw3IEBACiAKICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQogICAgIGVudlsnUEFUSCddID0gIiVzOiVzJXMiICUgKGQuZ2V0VmFyKCdQQVRIJyksIHMsICIvc2NyaXB0cy91dGlsLyIpCisgICAgZW52WydMRCddID0gIiR7S0VSTkVMX0xEfSIKIAogICAgIHRyeToKICAgICAgICAgY29uZmlncyA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFsnc2NjJywgJy0tY29uZmlncycsICctbycsIHMgKyAnLy5rZXJuZWwtbWV0YSddLCBlbnY9ZW52KS5kZWNvZGUoJ3V0Zi04JykKQEAgLTQ1OCw0ICs0ODksMTUgQEAKICAgICAjIElmIGRpZmZjb25maWcgaXMgYXZhaWxhYmxlLCBlbnN1cmUgaXQgcnVucyBhZnRlciBrZXJuZWxfY29uZmlnbWUKICAgICBpZiAnZG9fZGlmZmNvbmZpZycgaW4gZDoKICAgICAgICAgYmIuYnVpbGQuYWRkdGFzaygnZG9fZGlmZmNvbmZpZycsIE5vbmUsICdkb19rZXJuZWxfY29uZmlnbWUnLCBkKQorCisgICAgZXh0ZXJuYWxzcmMgPSBkLmdldFZhcignRVhURVJOQUxTUkMnKQorICAgIGlmIGV4dGVybmFsc3JjOgorICAgICAgICAjIElmIHdlIGRlbHRhc2sgZG9fcGF0Y2gsIGRvX2tlcm5lbF9jb25maWdtZSBpcyBsZWZ0IHdpdGhvdXQKKyAgICAgICAgIyBkZXBlbmRlbmNpZXMgYW5kIHJ1bnMgdG9vIGVhcmx5CisgICAgICAgIGQuc2V0VmFyRmxhZygnZG9fa2VybmVsX2NvbmZpZ21lJywgJ2RlcHMnLCAoZC5nZXRWYXJGbGFnKCdkb19rZXJuZWxfY29uZmlnbWUnLCAnZGVwcycsIEZhbHNlKSBvciBbXSkgKyBbJ2RvX3VucGFjayddKQogfQorCisjIGV4dHJhIHRhc2tzCithZGR0YXNrIGtlcm5lbF92ZXJzaW9uX3Nhbml0eV9jaGVjayBhZnRlciBkb19rZXJuZWxfbWV0YWRhdGEgZG9fa2VybmVsX2NoZWNrb3V0IGJlZm9yZSBkb19jb21waWxlCithZGR0YXNrIHZhbGlkYXRlX2JyYW5jaGVzIGJlZm9yZSBkb19wYXRjaCBhZnRlciBkb19rZXJuZWxfY2hlY2tvdXQKK2FkZHRhc2sga2VybmVsX2NvbmZpZ2NoZWNrIGFmdGVyIGRvX2NvbmZpZ3VyZSBiZWZvcmUgZG9fY29tcGlsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMva2VybmVsLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwuYmJjbGFzcwppbmRleCBlYmNiNzlhLi5hNzI0NjQ1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWwuYmJjbGFzcwpAQCAtMjk0LDE0ICsyOTQsMTAgQEAKIAkJIyBrZXJuZWwgc291cmNlcyBkbyBub3QgdXNlIGRvX3VucGFjaywgc28gU09VUkNFX0RBVEVfRVBPQ0ggbWF5IG5vdAogCQkjIGJlIHNldC4uLi4KIAkJaWYgWyAiJHtTT1VSQ0VfREFURV9FUE9DSH0iID0gIiIgLW8gIiR7U09VUkNFX0RBVEVfRVBPQ0h9IiA9ICIwIiBdOyB0aGVuCi0JCQlvbGRkaXI9YHB3ZGAKLQkJCWNkICR7U30KLQkJCVNPVVJDRV9EQVRFX0VQT0NIPWBnaXQgbG9nICAtMSAtLXByZXR0eT0lY3RgCi0JCQkjIGdpdCByZXBvIG5vdCBndWFyYW50ZWVkLCBzbyBmYWxsIGJhY2sgdG8gUkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlMKLQkJCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgotCQkJCVNPVVJDRV9EQVRFX0VQT0NIPSR7UkVQUk9EVUNJQkxFX1RJTUVTVEFNUF9ST09URlN9Ci0JCQlmaQotCQkJY2QgJG9sZGRpcgorCQkJIyBUaGUgc291cmNlIGRpcmVjdG9yeSBpcyBub3QgbmVjZXNzYXJpbHkgYSBnaXQgcmVwb3NpdG9yeSwgc28gd2UKKwkJCSMgc3BlY2lmeSB0aGUgZ2l0LWRpciB0byBlbnN1cmUgdGhhdCBnaXQgZG9lcyBub3QgcXVlcnkgYQorCQkJIyByZXBvc2l0b3J5IGluIGFueSBwYXJlbnQgZGlyZWN0b3J5LgorCQkJU09VUkNFX0RBVEVfRVBPQ0g9YGdpdCAtLWdpdC1kaXI9IiR7U30vLmdpdCIgbG9nIC0xIC0tcHJldHR5PSVjdCAyPi9kZXYvbnVsbCB8fCBlY2hvICIke1JFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTfSJgCiAJCWZpCiAKIAkJdHM9YExDX0FMTD1DIGRhdGUgLWQgQCRTT1VSQ0VfREFURV9FUE9DSGAKQEAgLTUwOCw3ICs1MDQsNyBAQAogCToKIH0KIAotS0VSTkVMX0NPTkZJR19DT01NQU5EID89ICJvZV9ydW5tYWtlX2NhbGwgLUMgJHtTfSBDQz0iJHtLRVJORUxfQ0N9IiBPPSR7Qn0gb2xkZGVmY29uZmlnIHx8IG9lX3J1bm1ha2UgLUMgJHtTfSBPPSR7Qn0gQ0M9IiR7S0VSTkVMX0NDfSIgb2xkbm9jb25maWciCitLRVJORUxfQ09ORklHX0NPTU1BTkQgPz0gIm9lX3J1bm1ha2VfY2FsbCAtQyAke1N9IENDPSIke0tFUk5FTF9DQ30iIExEPSIke0tFUk5FTF9MRH0iIE89JHtCfSBvbGRkZWZjb25maWcgfHwgb2VfcnVubWFrZSAtQyAke1N9IE89JHtCfSBDQz0iJHtLRVJORUxfQ0N9IiBMRD0iJHtLRVJORUxfTER9IiBvbGRub2NvbmZpZyIKIAogcHl0aG9uIGNoZWNrX29sZGVzdF9rZXJuZWwoKSB7CiAgICAgb2xkZXN0X2tlcm5lbCA9IGQuZ2V0VmFyKCdPTERFU1RfS0VSTkVMJykKQEAgLTU3MCw5ICs1NjYsOSBAQAogIyBBbGxvdyBtYWNoaW5lcyB0byBvdmVycmlkZSB0aGlzIGRlcGVuZGVuY3kgaWYga2VybmVsIGltYWdlIGZpbGVzIGFyZQogIyBub3Qgd2FudGVkIGluIGltYWdlcyBhcyBzdGFuZGFyZAogUkRFUEVORFNfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlID89ICIke0tFUk5FTF9QQUNLQUdFX05BTUV9LWltYWdlIgotUEtHXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0taW1hZ2UgPSAiJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1pbWFnZS0ke0BsZWdpdGltaXplX3BhY2thZ2VfbmFtZSgnJHtLRVJORUxfVkVSU0lPTn0nKX0iCitQS0dfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1pbWFnZSA9ICIke0tFUk5FTF9QQUNLQUdFX05BTUV9LWltYWdlLSR7QGxlZ2l0aW1pemVfcGFja2FnZV9uYW1lKGQuZ2V0VmFyKCdLRVJORUxfVkVSU0lPTicpKX0iCiBSREVQRU5EU18ke0tFUk5FTF9QQUNLQUdFX05BTUV9LWltYWdlICs9ICIke0BvZS51dGlscy5jb25kaXRpb25hbCgnS0VSTkVMX0lNQUdFVFlQRScsICd2bWxpbnV4JywgJyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tdm1saW51eCcsICcnLCBkKX0iCi1QS0dfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlID0gIiR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tJHtAbGVnaXRpbWl6ZV9wYWNrYWdlX25hbWUoJyR7S0VSTkVMX1ZFUlNJT059Jyl9IgorUEtHXyR7S0VSTkVMX1BBQ0tBR0VfTkFNRX0tYmFzZSA9ICIke0tFUk5FTF9QQUNLQUdFX05BTUV9LSR7QGxlZ2l0aW1pemVfcGFja2FnZV9uYW1lKGQuZ2V0VmFyKCdLRVJORUxfVkVSU0lPTicpKX0iCiBSUFJPVklERVNfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlICs9ICIke0tFUk5FTF9QQUNLQUdFX05BTUV9LSR7S0VSTkVMX1ZFUlNJT059IgogQUxMT1dfRU1QVFlfJHtLRVJORUxfUEFDS0FHRV9OQU1FfSA9ICIxIgogQUxMT1dfRU1QVFlfJHtLRVJORUxfUEFDS0FHRV9OQU1FfS1iYXNlID0gIjEiCkBAIC02MTMsNiArNjA5LDkgQEAKIAlpZiBbIC1mIC4uLy4uLy4uL3ZtbGludXouYmluIF07IHRoZW4KIAkJbG4gLXNmIC4uLy4uLy4uL3ZtbGludXouYmluCiAJZmkKKwlpZiBbIC1mIC4uLy4uLy4uL3ZtbGludXguNjQgXTsgdGhlbgorCQlsbiAtc2YgLi4vLi4vLi4vdm1saW51eC42NAorCWZpCiB9CiBhZGR0YXNrIGtlcm5lbF9saW5rX2ltYWdlcyBhZnRlciBkb19jb21waWxlIGJlZm9yZSBkb19zdHJpcAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9rZXJuZWxzcmMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbHNyYy5iYmNsYXNzCmluZGV4IDY3NWQ0MGUuLmE5NTFiYTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbHNyYy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2tlcm5lbHNyYy5iYmNsYXNzCkBAIC0xLDcgKzEsNyBAQAogUyA9ICIke1NUQUdJTkdfS0VSTkVMX0RJUn0iCiBkZWx0YXNrIGRvX2ZldGNoCiBkZWx0YXNrIGRvX3VucGFjawotZG9fcGF0Y2hbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX3BhdGNoIgorZG9fcGF0Y2hbZGVwZW5kc10gKz0gInZpcnR1YWwva2VybmVsOmRvX3NoYXJlZF93b3JrZGlyIgogZG9fcGF0Y2hbbm9leGVjXSA9ICIxIgogZG9fcGFja2FnZVtkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIEtFUk5FTF9WRVJTSU9OID0gIiR7QGdldF9rZXJuZWx2ZXJzaW9uX2ZpbGUoIiR7U1RBR0lOR19LRVJORUxfQlVJTERESVJ9Iil9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvbGliYy1jb21tb24uYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2xpYmMtY29tbW9uLmJiY2xhc3MKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBlMzUxYjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbGliYy1jb21tb24uYmJjbGFzcworKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsX3Jvb3Q9JHtEfSBpbnN0YWxsCi0JaW5zdGFsbCAtRG0gMDY0NCAke1dPUktESVJ9L2V0Yy9sZC5zby5jb25mICR7RH0vJHtzeXNjb25mZGlyfS9sZC5zby5jb25mCi0JaW5zdGFsbCAtZCAke0R9JHtsb2NhbGVkaXJ9Ci0JbWFrZSAtZiAke1dPUktESVJ9L2dlbmVyYXRlLXN1cHBvcnRlZC5tayBJTj0iJHtTfS9sb2NhbGVkYXRhL1NVUFBPUlRFRCIgT1VUPSIke1dPUktESVJ9L1NVUFBPUlRFRCIKLQkjIGdldCByaWQgb2Ygc29tZSBicm9rZW4gZmlsZXMuLi4KLQlmb3IgaSBpbiAke0dMSUJDX0JST0tFTl9MT0NBTEVTfTsgZG8KLQkJc2VkIC1pICIvJGkvZCIgJHtXT1JLRElSfS9TVVBQT1JURUQKLQlkb25lCi0Jcm0gLWYgJHtEfSR7c3lzY29uZmRpcn0vcnBjCi0Jcm0gLXJmICR7RH0ke2RhdGFkaXJ9L3pvbmVpbmZvCi0Jcm0gLXJmICR7RH0ke2xpYmV4ZWNkaXJ9L2dldGNvbmYKLX0KLQotZGVmIGdldF9saWJjX2ZwdV9zZXR0aW5nKGJiLCBkKToKLSAgICBpZiBkLmdldFZhcignVEFSR0VUX0ZQVScpIGluIFsgJ3NvZnQnLCAncHBjLWVmZCcgXToKLSAgICAgICAgcmV0dXJuICItLXdpdGhvdXQtZnAiCi0gICAgcmV0dXJuICIiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBpZiBkLmdldFZhcignREVCSUFOX05BTUVTJyk6Ci0gICAgICAgIHBrZ3MgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCi0gICAgICAgIGJwbiA9IGQuZ2V0VmFyKCdCUE4nKQotICAgICAgICBwcmVmaXggPSBkLmdldFZhcignTUxQUkVGSVgnKSBvciAiIgotICAgICAgICAjIFNldCB0aGUgYmFzZSBwYWNrYWdlLi4uCi0gICAgICAgIGQuc2V0VmFyKCdQS0dfJyArIHByZWZpeCArIGJwbiwgcHJlZml4ICsgJ2xpYmM2JykKLSAgICAgICAgbGliY3ByZWZpeCA9IHByZWZpeCArIGJwbiArICctJwotICAgICAgICBmb3IgcCBpbiBwa2dzOgotICAgICAgICAgICAgIyBBbmQgYWxsIHRoZSBzdWJwYWNrYWdlcy4KLSAgICAgICAgICAgIGlmIHAuc3RhcnRzd2l0aChsaWJjcHJlZml4KToKLSAgICAgICAgICAgICAgICByZW5hbWVkID0gcC5yZXBsYWNlKGJwbiwgJ2xpYmM2JywgMSkKLSAgICAgICAgICAgICAgICBkLnNldFZhcignUEtHXycgKyBwLCByZW5hbWVkKQotICAgICAgICAjIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggb2xkIC1kYmcgcGFja2FnZQotICAgICAgICBkLmFwcGVuZFZhcignUlBST1ZJREVTXycgKyBsaWJjcHJlZml4ICsgJ2RiZycsICcgJyArIHByZWZpeCArICdsaWJjLWRiZycpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSQ09ORkxJQ1RTXycgKyBsaWJjcHJlZml4ICsgJ2RiZycsICcgJyArIHByZWZpeCArICdsaWJjLWRiZycpCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSUkVQTEFDRVNfJyArIGxpYmNwcmVmaXggKyAnZGJnJywgJyAnICsgcHJlZml4ICsgJ2xpYmMtZGJnJykKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2xpYmMtcGFja2FnZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbGliYy1wYWNrYWdlLmJiY2xhc3MKaW5kZXggZGU4MTZiYy4uZGUzYjQyNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbGliYy1wYWNrYWdlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbGliYy1wYWNrYWdlLmJiY2xhc3MKQEAgLTI0OCw2ICsyNDgsNyBAQAogICAgICAgICAgICAgICAgICJzaDQiOiAgICAgIiAtLXVpbnQzMi1hbGlnbj00IC0tYmlnLWVuZGlhbiAiLCAgICBcCiAgICAgICAgICAgICAgICAgInBvd2VycGMiOiAiIC0tdWludDMyLWFsaWduPTQgLS1iaWctZW5kaWFuICIsICAgIFwKICAgICAgICAgICAgICAgICAicG93ZXJwYzY0IjogIiAtLXVpbnQzMi1hbGlnbj00IC0tYmlnLWVuZGlhbiAiLCAgXAorICAgICAgICAgICAgICAgICJwb3dlcnBjNjRsZSI6ICIgLS11aW50MzItYWxpZ249NCAtLWxpdHRsZS1lbmRpYW4gIiwgIFwKICAgICAgICAgICAgICAgICAibWlwcyI6ICAgICIgLS11aW50MzItYWxpZ249NCAtLWJpZy1lbmRpYW4gIiwgICAgXAogICAgICAgICAgICAgICAgICJtaXBzaXNhMzJyNiI6ICAgICIgLS11aW50MzItYWxpZ249NCAtLWJpZy1lbmRpYW4gIiwgICAgXAogICAgICAgICAgICAgICAgICJtaXBzNjQiOiAgIiAtLXVpbnQzMi1hbGlnbj00IC0tYmlnLWVuZGlhbiAiLCAgICBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlLmJiY2xhc3MKaW5kZXggNjQ4YTRkNy4uZjkwMTc2ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2UuYmJjbGFzcwpAQCAtMjUyLDcgKzI1Miw3IEBACiAgICAgIiIiCiAgICAgUmV0dXJuIHRoZSBjYW5vbmljYWwgKFNQRFgpIGZvcm0gb2YgdGhlIGxpY2Vuc2UgaWYgYXZhaWxhYmxlIChzbyBHUEx2MwogICAgIGJlY29tZXMgR1BMLTMuMCksIGZvciB0aGUgbGljZW5zZSBuYW1lZCAnWCsnLCByZXR1cm4gY2Fub25pY2FsIGZvcm0gb2YKLSAgICAnWCcgaWYgYXZhaWxhYmVsIGFuZCB0aGUgdGFpbGluZyAnKycgKHNvIEdQTHYzKyBiZWNvbWVzIEdQTC0zLjArKSwgCisgICAgJ1gnIGlmIGF2YWlsYWJsZSBhbmQgdGhlIHRhaWxpbmcgJysnIChzbyBHUEx2MysgYmVjb21lcyBHUEwtMy4wKyksCiAgICAgb3IgdGhlIHBhc3NlZCBsaWNlbnNlIGlmIHRoZXJlIGlzIG5vIGNhbm9uaWNhbCBmb3JtLgogICAgICIiIgogICAgIGxpYyA9IGQuZ2V0VmFyRmxhZygnU1BEWExJQ0VOU0VNQVAnLCBsaWNlbnNlKSBvciAiIgpAQCAtMjYyLDEwICsyNjIsMjkgQEAKICAgICAgICAgICAgIGxpYyArPSAnKycKICAgICByZXR1cm4gbGljIG9yIGxpY2Vuc2UKIAorZGVmIGF2YWlsYWJsZV9saWNlbnNlcyhkKToKKyAgICAiIiIKKyAgICBSZXR1cm4gdGhlIGF2YWlsYWJsZSBsaWNlbnNlcyBieSBzZWFyY2hpbmcgdGhlIGRpcmVjdG9yaWVzIHNwZWNpZmllZCBieQorICAgIENPTU1PTl9MSUNFTlNFX0RJUiBhbmQgTElDRU5TRV9QQVRILgorICAgICIiIgorICAgIGxpY19kaXJzID0gKChkLmdldFZhcignQ09NTU9OX0xJQ0VOU0VfRElSJykgb3IgJycpICsgJyAnICsKKyAgICAgICAgICAgICAgICAoZC5nZXRWYXIoJ0xJQ0VOU0VfUEFUSCcpIG9yICcnKSkuc3BsaXQoKQorCisgICAgbGljZW5zZXMgPSBbXQorICAgIGZvciBsaWNfZGlyIGluIGxpY19kaXJzOgorICAgICAgICBsaWNlbnNlcyArPSBvcy5saXN0ZGlyKGxpY19kaXIpCisKKyAgICBsaWNlbnNlcyA9IHNvcnRlZChsaWNlbnNlcykKKyAgICByZXR1cm4gbGljZW5zZXMKKworIyBPbmx5IGRldGVybWluZSB0aGUgbGlzdCBvZiBhbGwgYXZhaWxhYmxlIGxpY2Vuc2VzIG9uY2UuIFRoaXMgYXNzdW1lcyB0aGF0IGFueQorIyBhZGRpdGlvbnMgdG8gTElDRU5TRV9QQVRIIGhhdmUgYmVlbiBkb25lIGJlZm9yZSB0aGlzIGZpbGUgaXMgcGFyc2VkLgorQVZBSUxBQkxFX0xJQ0VOU0VTIDo9ICIke0AnICcuam9pbihhdmFpbGFibGVfbGljZW5zZXMoZCkpfSIKKwogZGVmIGV4cGFuZF93aWxkY2FyZF9saWNlbnNlcyhkLCB3aWxkY2FyZF9saWNlbnNlcyk6CiAgICAgIiIiCi0gICAgUmV0dXJuIGFjdHVhbCBzcGR4IGZvcm1hdCBsaWNlbnNlIG5hbWVzIGlmIHdpbGRjYXJkIHVzZWQuIFdlIGV4cGFuZAotICAgIHdpbGRjYXJkcyBmcm9tIFNQRFhMSUNFTlNFTUFQIGZsYWdzIGFuZCBTUkNfRElTVFJJQlVURV9MSUNFTlNFUyB2YWx1ZXMuCisgICAgUmV0dXJuIGFjdHVhbCBzcGR4IGZvcm1hdCBsaWNlbnNlIG5hbWVzIGlmIHdpbGRjYXJkcyBhcmUgdXNlZC4gV2UgZXhwYW5kCisgICAgd2lsZGNhcmRzIGZyb20gU1BEWExJQ0VOU0VNQVAgZmxhZ3MgYW5kIEFWQUlMQUJMRV9MSUNFTlNFUy4KICAgICAiIiIKICAgICBpbXBvcnQgZm5tYXRjaAogICAgIGxpY2Vuc2VzID0gd2lsZGNhcmRfbGljZW5zZXNbOl0KQEAgLTI3NCw3ICsyOTMsNyBAQAogICAgICAgICBzcGR4ZmxhZ3MgPSBmbm1hdGNoLmZpbHRlcihzcGR4bWFwa2V5cywgd2xkX2xpYykKICAgICAgICAgbGljZW5zZXMgKz0gW2QuZ2V0VmFyRmxhZygnU1BEWExJQ0VOU0VNQVAnLCBmbGFnKSBmb3IgZmxhZyBpbiBzcGR4ZmxhZ3NdCiAKLSAgICBzcGR4X2xpY3MgPSAoZC5nZXRWYXIoJ1NSQ19ESVNUUklCVVRFX0xJQ0VOU0VTJywgRmFsc2UpIG9yICcnKS5zcGxpdCgpCisgICAgc3BkeF9saWNzID0gZC5nZXRWYXIoJ0FWQUlMQUJMRV9MSUNFTlNFUycpLnNwbGl0KCkKICAgICBmb3Igd2xkX2xpYyBpbiB3aWxkY2FyZF9saWNlbnNlczoKICAgICAgICAgbGljZW5zZXMgKz0gZm5tYXRjaC5maWx0ZXIoc3BkeF9saWNzLCB3bGRfbGljKQogCkBAIC0yOTEsMTUgKzMxMCwyMSBAQAogICAgICMgSGFuZGxlcyBhbiAib3IiIG9yIHR3byBsaWNlbnNlIHNldHMgcHJvdmlkZWQgYnkKICAgICAjIGZsYXR0ZW5lZF9saWNlbnNlcygpLCBwaWNrIG9uZSB0aGF0IHdvcmtzIGlmIHBvc3NpYmxlLgogICAgIGRlZiBjaG9vc2VfbGljX3NldChhLCBiKToKLSAgICAgICAgcmV0dXJuIGEgaWYgYWxsKG9lLmxpY2Vuc2UubGljZW5zZV9vayhjYW5vbmljYWxfbGljZW5zZShkLCBsaWMpLCAKKyAgICAgICAgcmV0dXJuIGEgaWYgYWxsKG9lLmxpY2Vuc2UubGljZW5zZV9vayhjYW5vbmljYWxfbGljZW5zZShkLCBsaWMpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRvbnRfd2FudF9saWNlbnNlcykgZm9yIGxpYyBpbiBhKSBlbHNlIGIKIAogICAgIHRyeToKICAgICAgICAgbGljZW5zZXMgPSBvZS5saWNlbnNlLmZsYXR0ZW5lZF9saWNlbnNlcyhsaWNlbnNlLCBjaG9vc2VfbGljX3NldCkKICAgICBleGNlcHQgb2UubGljZW5zZS5MaWNlbnNlRXJyb3IgYXMgZXhjOgogICAgICAgICBiYi5mYXRhbCgnJXM6ICVzJyAlIChkLmdldFZhcignUCcpLCBleGMpKQotICAgIHJldHVybiBhbnkobm90IG9lLmxpY2Vuc2UubGljZW5zZV9vayhjYW5vbmljYWxfbGljZW5zZShkLCBsKSwgXAotICAgICAgICAgICAgICAgZG9udF93YW50X2xpY2Vuc2VzKSBmb3IgbCBpbiBsaWNlbnNlcykKKworICAgIGluY29tcGF0aWJsZV9saWMgPSBbXQorICAgIGZvciBsIGluIGxpY2Vuc2VzOgorICAgICAgICBsaWNlbnNlID0gY2Fub25pY2FsX2xpY2Vuc2UoZCwgbCkKKyAgICAgICAgaWYgbm90IG9lLmxpY2Vuc2UubGljZW5zZV9vayhsaWNlbnNlLCBkb250X3dhbnRfbGljZW5zZXMpOgorICAgICAgICAgICAgaW5jb21wYXRpYmxlX2xpYy5hcHBlbmQobGljZW5zZSkKKworICAgIHJldHVybiBzb3J0ZWQoaW5jb21wYXRpYmxlX2xpYykKIAogZGVmIGluY29tcGF0aWJsZV9saWNlbnNlKGQsIGRvbnRfd2FudF9saWNlbnNlcywgcGFja2FnZT1Ob25lKToKICAgICAiIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2VfaW1hZ2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL2xpY2Vuc2VfaW1hZ2UuYmJjbGFzcwppbmRleCBiNTM5OWI2Li5hOGM3MmRhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9saWNlbnNlX2ltYWdlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbGljZW5zZV9pbWFnZS5iYmNsYXNzCkBAIC01MSw4ICs1MSw5IEBACiAgICAgICAgIGZvciBwa2cgaW4gc29ydGVkKHBrZ19kaWMpOgogICAgICAgICAgICAgaWYgYmFkX2xpY2Vuc2VzIGFuZCBwa2cgbm90IGluIHdoaXRlbGlzdDoKICAgICAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGluY29tcGF0aWJsZV9wa2dfbGljZW5zZShkLCBiYWRfbGljZW5zZXMsIHBrZ19kaWNbcGtnXVsiTElDRU5TRSJdKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGJiLmZhdGFsKCJQYWNrYWdlICVzIGhhcyBhbiBpbmNvbXBhdGlibGUgbGljZW5zZSAlcyBhbmQgY2Fubm90IGJlIGluc3RhbGxlZCBpbnRvIHRoZSBpbWFnZS4iICUocGtnLCBwa2dfZGljW3BrZ11bIkxJQ0VOU0UiXSkpCisgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2VzID0gaW5jb21wYXRpYmxlX3BrZ19saWNlbnNlKGQsIGJhZF9saWNlbnNlcywgcGtnX2RpY1twa2ddWyJMSUNFTlNFIl0pCisgICAgICAgICAgICAgICAgICAgIGlmIGxpY2Vuc2VzOgorICAgICAgICAgICAgICAgICAgICAgICAgYmIuZmF0YWwoIlBhY2thZ2UgJXMgY2Fubm90IGJlIGluc3RhbGxlZCBpbnRvIHRoZSBpbWFnZSBiZWNhdXNlIGl0IGhhcyBpbmNvbXBhdGlibGUgbGljZW5zZShzKTogJXMiICUocGtnLCAnICcuam9pbihsaWNlbnNlcykpKQogICAgICAgICAgICAgICAgICAgICAocGtnX2RpY1twa2ddWyJMSUNFTlNFIl0sIHBrZ19kaWNbcGtnXVsiTElDRU5TRVMiXSkgPSBcCiAgICAgICAgICAgICAgICAgICAgICAgICBvZS5saWNlbnNlLm1hbmlmZXN0X2xpY2Vuc2VzKHBrZ19kaWNbcGtnXVsiTElDRU5TRSJdLAogICAgICAgICAgICAgICAgICAgICAgICAgYmFkX2xpY2Vuc2VzLCBjYW5vbmljYWxfbGljZW5zZSwgZCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL2xpbnV4bG9hZGVyLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9saW51eGxvYWRlci5iYmNsYXNzCmluZGV4IGMwZmJmMjYuLmVjMGUwNTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL2xpbnV4bG9hZGVyLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbGludXhsb2FkZXIuYmJjbGFzcwpAQCAtMSwyNyArMSwzMSBAQAotZGVmIGdldF9tdXNsX2xvYWRlcihkKToKK2RlZiBnZXRfbXVzbF9sb2FkZXJfYXJjaChkKToKICAgICBpbXBvcnQgcmUKLSAgICBkeW5hbWljX2xvYWRlciA9IE5vbmUKKyAgICBsZHNvX2FyY2ggPSBOb25lCiAKICAgICB0YXJnZXRhcmNoID0gZC5nZXRWYXIoIlRBUkdFVF9BUkNIIikKICAgICBpZiB0YXJnZXRhcmNoLnN0YXJ0c3dpdGgoIm1pY3JvYmxhemUiKToKLSAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1taWNyb2JsYXplJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYmlnZW5kaWFuJywgJycsICdlbCcgLGQpfS5zby4xIgorICAgICAgICBsZHNvX2FyY2ggPSAibWljcm9ibGF6ZSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2JpZ2VuZGlhbicsICcnLCAnZWwnICxkKX0iCiAgICAgZWxpZiB0YXJnZXRhcmNoLnN0YXJ0c3dpdGgoIm1pcHMiKToKLSAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1taXBzJHtBQklFWFRFTlNJT059JHtNSVBTUEtHU0ZYX0JZVEV9JHtNSVBTUEtHU0ZYX1I2fSR7TUlQU1BLR1NGWF9FTkRJQU59JHtAWycnLCAnLXNmJ11bZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnc29mdCddfS5zby4xIgorICAgICAgICBsZHNvX2FyY2ggPSAibWlwcyR7QUJJRVhURU5TSU9OfSR7TUlQU1BLR1NGWF9CWVRFfSR7TUlQU1BLR1NGWF9SNn0ke01JUFNQS0dTRlhfRU5ESUFOfSR7QFsnJywgJy1zZiddW2QuZ2V0VmFyKCdUQVJHRVRfRlBVJykgPT0gJ3NvZnQnXX0iCiAgICAgZWxpZiB0YXJnZXRhcmNoID09ICJwb3dlcnBjIjoKLSAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC1wb3dlcnBjJHtAWycnLCAnLXNmJ11bZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSA9PSAnc29mdCddfS5zby4xIgorICAgICAgICBsZHNvX2FyY2ggPSAicG93ZXJwYyR7QFsnJywgJy1zZiddW2QuZ2V0VmFyKCdUQVJHRVRfRlBVJykgPT0gJ3NvZnQnXX0iCiAgICAgZWxpZiB0YXJnZXRhcmNoID09ICJwb3dlcnBjNjQiOgotICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLXBvd2VycGM2NC5zby4xIgorICAgICAgICBsZHNvX2FyY2ggPSAicG93ZXJwYzY0IgogICAgIGVsaWYgdGFyZ2V0YXJjaCA9PSAieDg2XzY0IjoKLSAgICAgICAgZHluYW1pY19sb2FkZXIgPSAiJHtiYXNlX2xpYmRpcn0vbGQtbXVzbC14ODZfNjQuc28uMSIKKyAgICAgICAgbGRzb19hcmNoID0gIng4Nl82NCIKICAgICBlbGlmIHJlLnNlYXJjaCgiaS44NiIsIHRhcmdldGFyY2gpOgotICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLWkzODYuc28uMSIKKyAgICAgICAgbGRzb19hcmNoID0gImkzODYiCiAgICAgZWxpZiB0YXJnZXRhcmNoLnN0YXJ0c3dpdGgoImFybSIpOgotICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1tdXNsLWFybSR7QVJNUEtHU0ZYX0VORElBTn0ke0FSTVBLR1NGWF9FQUJJfS5zby4xIgorICAgICAgICBsZHNvX2FyY2ggPSAiYXJtJHtBUk1QS0dTRlhfRU5ESUFOfSR7QVJNUEtHU0ZYX0VBQkl9IgogICAgIGVsaWYgdGFyZ2V0YXJjaC5zdGFydHN3aXRoKCJhYXJjaDY0Iik6Ci0gICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtYWFyY2g2NCR7QVJNUEtHU0ZYX0VORElBTl82NH0uc28uMSIKKyAgICAgICAgbGRzb19hcmNoID0gImFhcmNoNjQke0FSTVBLR1NGWF9FTkRJQU5fNjR9IgogICAgIGVsaWYgdGFyZ2V0YXJjaC5zdGFydHN3aXRoKCJyaXNjdjY0Iik6Ci0gICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLW11c2wtcmlzY3Y2NCR7QFsnJywgJy1zZiddW2QuZ2V0VmFyKCdUQVJHRVRfRlBVJykgPT0gJ3NvZnQnXX0uc28uMSIKLSAgICByZXR1cm4gZHluYW1pY19sb2FkZXIKKyAgICAgICAgbGRzb19hcmNoID0gInJpc2N2NjQke0BbJycsICctc2YnXVtkLmdldFZhcignVEFSR0VUX0ZQVScpID09ICdzb2Z0J119IgorICAgIHJldHVybiBsZHNvX2FyY2gKKworZGVmIGdldF9tdXNsX2xvYWRlcihkKToKKyAgICBpbXBvcnQgcmUKKyAgICByZXR1cm4gIi9saWIvbGQtbXVzbC0iICsgZ2V0X211c2xfbG9hZGVyX2FyY2goZCkgKyAiLnNvLjEiCiAKIGRlZiBnZXRfZ2xpYmNfbG9hZGVyKGQpOgogICAgIGltcG9ydCByZQpAQCAtNDEsNyArNDUsNyBAQAogICAgIGVsaWYgcmUuc2VhcmNoKCJpLjg2IiwgdGFyZ2V0YXJjaCk6CiAgICAgICAgIGR5bmFtaWNfbG9hZGVyID0gIiR7YmFzZV9saWJkaXJ9L2xkLWxpbnV4LnNvLjIiCiAgICAgZWxpZiB0YXJnZXRhcmNoID09ICJhcm0iOgotICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1saW51eC5zby4zIgorICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1saW51eCR7QFsnLWFybWhmJywgJyddW2QuZ2V0VmFyKCdUQVJHRVRfRlBVJykgPT0gJ3NvZnQnXX0uc28uMyIKICAgICBlbGlmIHRhcmdldGFyY2guc3RhcnRzd2l0aCgiYWFyY2g2NCIpOgogICAgICAgICBkeW5hbWljX2xvYWRlciA9ICIke2Jhc2VfbGliZGlyfS9sZC1saW51eC1hYXJjaDY0JHtBUk1QS0dTRlhfRU5ESUFOXzY0fS5zby4xIgogICAgIGVsaWYgdGFyZ2V0YXJjaC5zdGFydHN3aXRoKCJyaXNjdjY0Iik6CkBAIC02Miw0ICs2Niw1IEBACiAKIGdldF9saW51eGxvYWRlclt2YXJkZXB2YWx1ZV0gPSAiJHtAZ2V0X2xpbnV4bG9hZGVyKGQpfSIKIGdldF9tdXNsX2xvYWRlclt2YXJkZXB2YWx1ZV0gPSAiJHtAZ2V0X211c2xfbG9hZGVyKGQpfSIKK2dldF9tdXNsX2xvYWRlcl9hcmNoW3ZhcmRlcHZhbHVlXSA9ICIke0BnZXRfbXVzbF9sb2FkZXJfYXJjaChkKX0iCiBnZXRfZ2xpYmNfbG9hZGVyW3ZhcmRlcHZhbHVlXSA9ICIke0BnZXRfZ2xpYmNfbG9hZGVyKGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL21hbnBhZ2VzLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9tYW5wYWdlcy5iYmNsYXNzCmluZGV4IDUwYzI1NDcuLjFlNjY3ODAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL21hbnBhZ2VzLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbWFucGFnZXMuYmJjbGFzcwpAQCAtMTgsOCArMTgsMTUgQEAKIAkJaWYgdGVzdCAtbiAiJEQiOyB0aGVuCiAJCQlpZiAke0BiYi51dGlscy5jb250YWlucygnTUFDSElORV9GRUFUVVJFUycsICdxZW11LXVzZXJtb2RlJywgJ3RydWUnLCdmYWxzZScsIGQpfTsgdGhlbgogCQkJCXNlZCAiczpcKFxzXCkvOlwxJEQvOmciICREJHtzeXNjb25mZGlyfS9tYW5fZGIuY29uZiB8ICR7QHFlbXVfcnVuX2JpbmFyeShkLCAnJEQnLCAnJHtiaW5kaXJ9L21hbmRiJyl9IC1DIC0gLXUgLXEgJEQke21hbmRpcn0KKwkJCQljaG93biAtUiByb290OnJvb3QgJEQke21hbmRpcn0KIAkJCQlta2RpciAtcCAkRCR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvbWFuCi0JCQkJbXYgJEQke21hbmRpcn0vaW5kZXguZGIgJEQke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL21hbgorCQkJCWNkICREJHttYW5kaXJ9CisJCQkJZmluZCAuIC1uYW1lIGluZGV4LmRiIHwgd2hpbGUgcmVhZCBpbmRleDsgZG8KKwkJCQkJbWtkaXIgLXAgJEQke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL21hbi8kKGRpcm5hbWUgJHtpbmRleH0pCisJCQkJCW12ICR7aW5kZXh9ICREJHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9tYW4vJHtpbmRleH0KKwkJCQkJY2hvd24gbWFuOm1hbiAkRCR7bG9jYWxzdGF0ZWRpcn0vY2FjaGUvbWFuLyR7aW5kZXh9CisJCQkJZG9uZQorCQkJCWNkIC0KIAkJCWVsc2UKIAkJCQkkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgZGVsYXlfdG9fZmlyc3RfYm9vdCAke1BLR30gbWxwcmVmaXg9JHtNTFBSRUZJWH0KIAkJCWZpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9tZXNvbi5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbWVzb24uYmJjbGFzcwppbmRleCBlZmE2MjM0Li4wNjAzNGU4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9tZXNvbi5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL21lc29uLmJiY2xhc3MKQEAgLTEyLDggKzEyLDkgQEAKIGRlZiBub3ByZWZpeCh2YXIsIGQpOgogICAgIHJldHVybiBkLmdldFZhcih2YXIpLnJlcGxhY2UoZC5nZXRWYXIoJ3ByZWZpeCcpICsgJy8nLCAnJywgMSkKIAorTUVTT05fQlVJTERUWVBFID89ICJwbGFpbiIKIE1FU09OT1BUUyA9ICIgLS1wcmVmaXggJHtwcmVmaXh9IFwKLSAgICAgICAgICAgICAgLS1idWlsZHR5cGUgcGxhaW4gXAorICAgICAgICAgICAgICAtLWJ1aWxkdHlwZSAke01FU09OX0JVSUxEVFlQRX0gXAogICAgICAgICAgICAgICAtLWJpbmRpciAke0Bub3ByZWZpeCgnYmluZGlyJywgZCl9IFwKICAgICAgICAgICAgICAgLS1zYmluZGlyICR7QG5vcHJlZml4KCdzYmluZGlyJywgZCl9IFwKICAgICAgICAgICAgICAgLS1kYXRhZGlyICR7QG5vcHJlZml4KCdkYXRhZGlyJywgZCl9IFwKQEAgLTI0LDcgKzI1LDggQEAKICAgICAgICAgICAgICAgLS1pbmZvZGlyICR7QG5vcHJlZml4KCdpbmZvZGlyJywgZCl9IFwKICAgICAgICAgICAgICAgLS1zeXNjb25mZGlyICR7c3lzY29uZmRpcn0gXAogICAgICAgICAgICAgICAtLWxvY2Fsc3RhdGVkaXIgJHtsb2NhbHN0YXRlZGlyfSBcCi0gICAgICAgICAgICAgIC0tc2hhcmVkc3RhdGVkaXIgJHtzaGFyZWRzdGF0ZWRpcn0gIgorICAgICAgICAgICAgICAtLXNoYXJlZHN0YXRlZGlyICR7c2hhcmVkc3RhdGVkaXJ9IFwKKyAgICAgICAgICAgICAgLS13cmFwLW1vZGUgbm9kb3dubG9hZCIKIAogRVhUUkFfT0VNRVNPTl9hcHBlbmQgPSAiICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30iCiAKQEAgLTQzLDcgKzQ1LDcgQEAKICAgICBhcmNoID0gZC5nZXRWYXIodmFyKQogICAgIGlmIGFyY2ggPT0gJ3Bvd2VycGMnOgogICAgICAgICByZXR1cm4gJ3BwYycKLSAgICBlbGlmIGFyY2ggPT0gJ3Bvd2VycGM2NCc6CisgICAgZWxpZiBhcmNoID09ICdwb3dlcnBjNjQnIG9yIGFyY2ggPT0gJ3Bvd2VycGM2NGxlJzoKICAgICAgICAgcmV0dXJuICdwcGM2NCcKICAgICBlbGlmIGFyY2ggPT0gJ2FybWViJzoKICAgICAgICAgcmV0dXJuICdhcm0nCkBAIC01NSwxMSArNTcsMjAgQEAKICAgICAgICAgcmV0dXJuICdtaXBzNjQnCiAgICAgZWxpZiByZS5tYXRjaChyImlbMy02XTg2IiwgYXJjaCk6CiAgICAgICAgIHJldHVybiAieDg2IgotICAgIGVsaWYgYXJjaCA9PSAibWljcm9ibGF6ZWVsIiBvciBhcmNoID09ICJtaWNyb2JsYXplZWIiOgorICAgIGVsaWYgYXJjaCA9PSAibWljcm9ibGF6ZWVsIjoKICAgICAgICAgcmV0dXJuICJtaWNyb2JsYXplIgogICAgIGVsc2U6CiAgICAgICAgIHJldHVybiBhcmNoCiAKKyMgTWFwIG91ciBPUyB2YWx1ZXMgdG8gd2hhdCBNZXNvbiBleHBlY3RzOgorIyBodHRwczovL21lc29uYnVpbGQuY29tL1JlZmVyZW5jZS10YWJsZXMuaHRtbCNvcGVyYXRpbmctc3lzdGVtLW5hbWVzCitkZWYgbWVzb25fb3BlcmF0aW5nX3N5c3RlbSh2YXIsIGQpOgorICAgIG9zID0gZC5nZXRWYXIodmFyKQorICAgIGlmICJtaW5ndyIgaW4gb3M6CisgICAgICAgIHJldHVybiAid2luZG93cyIKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gb3MKKwogZGVmIG1lc29uX2VuZGlhbihwcmVmaXgsIGQpOgogICAgIGFyY2gsIG9zID0gZC5nZXRWYXIocHJlZml4ICsgIl9BUkNIIiksIGQuZ2V0VmFyKHByZWZpeCArICJfT1MiKQogICAgIHNpdGVkYXRhID0gc2l0ZWluZm9fZGF0YV9mb3JfbWFjaGluZShhcmNoLCBvcywgZCkKQEAgLTgwLDcgKzkxLDYgQEAKIGNwcCA9ICR7QG1lc29uX2FycmF5KCdDWFgnLCBkKX0KIGFyID0gJHtAbWVzb25fYXJyYXkoJ0FSJywgZCl9CiBubSA9ICR7QG1lc29uX2FycmF5KCdOTScsIGQpfQotbGQgPSAke0BtZXNvbl9hcnJheSgnTEQnLCBkKX0KIHN0cmlwID0gJHtAbWVzb25fYXJyYXkoJ1NUUklQJywgZCl9CiByZWFkZWxmID0gJHtAbWVzb25fYXJyYXkoJ1JFQURFTEYnLCBkKX0KIHBrZ2NvbmZpZyA9ICdwa2ctY29uZmlnJwpAQCAtOTUsMTMgKzEwNSwxMyBAQAogZ3RrZG9jX2V4ZV93cmFwcGVyID0gJyR7Qn0vZ3RrZG9jLXFlbXV3cmFwcGVyJwogCiBbaG9zdF9tYWNoaW5lXQotc3lzdGVtID0gJyR7SE9TVF9PU30nCitzeXN0ZW0gPSAnJHtAbWVzb25fb3BlcmF0aW5nX3N5c3RlbSgnSE9TVF9PUycsIGQpfScKIGNwdV9mYW1pbHkgPSAnJHtAbWVzb25fY3B1X2ZhbWlseSgnSE9TVF9BUkNIJywgZCl9JwogY3B1ID0gJyR7SE9TVF9BUkNIfScKIGVuZGlhbiA9ICcke0BtZXNvbl9lbmRpYW4oJ0hPU1QnLCBkKX0nCiAKIFt0YXJnZXRfbWFjaGluZV0KLXN5c3RlbSA9ICcke1RBUkdFVF9PU30nCitzeXN0ZW0gPSAnJHtAbWVzb25fb3BlcmF0aW5nX3N5c3RlbSgnVEFSR0VUX09TJywgZCl9JwogY3B1X2ZhbWlseSA9ICcke0BtZXNvbl9jcHVfZmFtaWx5KCdUQVJHRVRfQVJDSCcsIGQpfScKIGNwdSA9ICcke1RBUkdFVF9BUkNIfScKIGVuZGlhbiA9ICcke0BtZXNvbl9lbmRpYW4oJ1RBUkdFVCcsIGQpfScKQEAgLTExMSw2ICsxMjEsMTAgQEAKIENPTkZJR1VSRV9GSUxFUyA9ICJtZXNvbi5idWlsZCIKIAogbWVzb25fZG9fY29uZmlndXJlKCkgeworICAgICMgTWVzb24gcmVxdWlyZXMgdGhpcyB0byBiZSAnYmZkLCAnbGxkJyBvciAnZ29sZCcgZnJvbSAwLjUzIG9ud2FyZHMKKyAgICAjIGh0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL2NvbW1pdC9lZjlhZWIxODhlYTJiYzczNTNlNTk5MTZjMTg5MDFjZGU5MGZhMmIzCisgICAgdW5zZXQgTEQKKwogICAgICMgV29yayBhcm91bmQgIk1lc29uIGZhaWxzIGlmIC90bXAgaXMgbW91bnRlZCB3aXRoIG5vZXhlYyAjMjk3MiIKICAgICBta2RpciAtcCAiJHtCfS9tZXNvbi1wcml2YXRlL3RtcCIKICAgICBleHBvcnQgVE1QRElSPSIke0J9L21lc29uLXByaXZhdGUvdG1wIgpAQCAtMTQ3LDYgKzE2MSwxNSBAQAogICAgIGV4cG9ydCBQS0dfQ09ORklHPSJwa2ctY29uZmlnLW5hdGl2ZSIKIH0KIAorcHl0aG9uIG1lc29uX2RvX3FhX2NvbmZpZ3VyZSgpIHsKKyAgICBpbXBvcnQgcmUKKyAgICB3YXJuX3JlID0gcmUuY29tcGlsZShyIl5XQVJOSU5HOiBDcm9zcyBwcm9wZXJ0eSAoLispIGlzIHVzaW5nIGRlZmF1bHQgdmFsdWUgKC4rKSQiLCByZS5NVUxUSUxJTkUpCisgICAgbG9nID0gb3BlbihkLmV4cGFuZCgiJHtCfS9tZXNvbi1sb2dzL21lc29uLWxvZy50eHQiKSkucmVhZCgpCisgICAgZm9yIChwcm9wLCB2YWx1ZSkgaW4gd2Fybl9yZS5maW5kYWxsKGxvZyk6CisgICAgICAgIGJiLndhcm4oIk1lc29uIGNyb3NzIHByb3BlcnR5ICVzIHVzZWQgd2l0aG91dCBleHBsaWNpdCBhc3NpZ25tZW50LCBkZWZhdWx0aW5nIHRvICVzIiAlIChwcm9wLCB2YWx1ZSkpCit9Citkb19jb25maWd1cmVbcG9zdGZ1bmNzXSArPSAibWVzb25fZG9fcWFfY29uZmlndXJlIgorCiBkb19jb21waWxlW3Byb2dyZXNzXSA9ICJvdXRvZjpeXFsoXGQrKS8oXGQrKVxdXHMrIgogbWVzb25fZG9fY29tcGlsZSgpIHsKICAgICBuaW5qYSAtdiAke1BBUkFMTEVMX01BS0V9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9taW1lLXhkZy5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbWltZS14ZGcuYmJjbGFzcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDJhNWI3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbWltZS14ZGcuYmJjbGFzcwpAQCAtMCwwICsxLDc0IEBACisjCisjIFRoaXMgY2xhc3MgY3JlYXRlcyBtaW1lIDwtPiBhcHBsaWNhdGlvbiBhc3NvY2lhdGlvbnMgYmFzZWQgb24gZW50cnkgCisjICdNaW1lVHlwZScgaW4gKi5kZXNrdG9wIGZpbGVzCisjCisKK0RFUEVORFMgKz0gImRlc2t0b3AtZmlsZS11dGlscyIKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAiZGVza3RvcC1maWxlLXV0aWxzLW5hdGl2ZSIKK0RFU0tUT1BESVIgPSAiJHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMiCisKKyMgVGhlcmUgYXJlIHJlY2lwZXMgb3V0IHRoZXJlIGluc3RhbGxpbmcgdGhlaXIgLmRlc2t0b3AgZmlsZXMgYXMgYWJzb2x1dGUKKyMgc3ltbGlua3MuIEZvciB1cyB0aGVzZSBhcmUgZGFuZ2xpbmcgYW5kIGNhbm5vdCBiZSBpbnRyb3NwZWN0ZWQgZm9yICJNaW1lVHlwZSIKKyMgZWFzaWx5LiBCeSBhZGRkaW5nIHBhY2thZ2UtbmFtZXMgdG8gTUlNRV9YREdfUEFDS0FHRVMsIHBhY2thZ2VyIGNhbiBmb3JjZQorIyBwcm9wZXIgdXBkYXRlLWRlc2t0b3AtZGF0YWJhc2UgaGFuZGxpbmcuIE5vdGUgdGhhdCBhbGwgaW50cm9zcGVjdGlvbiBpcworIyBza2lwcGVkIGZvciBNSU1FX1hER19QQUNLQUdFUyBub3QgZW1wdHkKK01JTUVfWERHX1BBQ0tBR0VTID89ICIiCisKK21pbWVfeGRnX3Bvc3RpbnN0KCkgeworaWYgWyAieCREIiAhPSAieCIgXTsgdGhlbgorCSRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCB1cGRhdGVfZGVza3RvcF9kYXRhYmFzZSAke1BLR30gXAorCQltbHByZWZpeD0ke01MUFJFRklYfSBcCisJCWRlc2t0b3BfZGlyPSR7REVTS1RPUERJUn0KK2Vsc2UKKwl1cGRhdGUtZGVza3RvcC1kYXRhYmFzZSAkRCR7REVTS1RPUERJUn0KK2ZpCit9CisKK21pbWVfeGRnX3Bvc3RybSgpIHsKK2lmIFsgIngkRCIgIT0gIngiIF07IHRoZW4KKwkkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgdXBkYXRlX2Rlc2t0b3BfZGF0YWJhc2UgJHtQS0d9IFwKKwkJbWxwcmVmaXg9JHtNTFBSRUZJWH0gXAorCQlkZXNrdG9wX2Rpcj0ke0RFU0tUT1BESVJ9CitlbHNlCisJdXBkYXRlLWRlc2t0b3AtZGF0YWJhc2UgJEQke0RFU0tUT1BESVJ9CitmaQorfQorCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfYXBwZW5kICgpIHsKKyAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKKyAgICBwa2dkZXN0ID0gIGQuZ2V0VmFyKCdQS0dERVNUJykKKyAgICBkZXNrdG9wX2Jhc2UgPSBkLmdldFZhcignREVTS1RPUERJUicpCisgICAgZm9yY2VkX21pbWVfeGRnX3BrZ3MgPSAoZC5nZXRWYXIoJ01JTUVfWERHX1BBQ0tBR0VTJykgb3IgJycpLnNwbGl0KCkKKworICAgIGZvciBwa2cgaW4gcGFja2FnZXM6CisgICAgICAgIGRlc2t0b3BzX3dpdGhfbWltZV9mb3VuZCA9IHBrZyBpbiBmb3JjZWRfbWltZV94ZGdfcGtncworICAgICAgICBpZiBkLmdldFZhcignTUlNRV9YREdfUEFDS0FHRVMnKSA9PSAnJzoKKyAgICAgICAgICAgIGRlc2t0b3BfZGlyID0gJyVzLyVzJXMnICUgKHBrZ2Rlc3QsIHBrZywgZGVza3RvcF9iYXNlKQorICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZGVza3RvcF9kaXIpOgorICAgICAgICAgICAgICAgIGZvciBkZiBpbiBvcy5saXN0ZGlyKGRlc2t0b3BfZGlyKToKKyAgICAgICAgICAgICAgICAgICAgaWYgZGYuZW5kc3dpdGgoJy5kZXNrdG9wJyk6CisgICAgICAgICAgICAgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKGRlc2t0b3BfZGlyICsgJy8nKyBkZiwgJ3InKSBhcyBmOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBmLnJlYWQoKS5zcGxpdCgnXG4nKToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmICdNaW1lVHlwZScgaW4gbGluZToKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXNrdG9wc193aXRoX21pbWVfZm91bmQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWs7CisgICAgICAgICAgICAgICAgICAgICAgICBleGNlcHQ6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYmIud2FybignQ291bGQgbm90IG9wZW4gJXMuIFNldCBNSU1FX1hER19QQUNLQUdFUyBpbiByZWNpcGUgb3IgYWRkIG1pbWUteGRnIHRvIElOU0FORV9TS0lQLicgJSBkZXNrdG9wX2RpciArICcvJysgZGYpCisgICAgICAgICAgICAgICAgICAgIGlmIGRlc2t0b3BzX3dpdGhfbWltZV9mb3VuZDoKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIGRlc2t0b3BzX3dpdGhfbWltZV9mb3VuZDoKKyAgICAgICAgICAgIGJiLm5vdGUoImFkZGluZyBtaW1lLXhkZyBwb3N0aW5zdCBhbmQgcG9zdHJtIHNjcmlwdHMgdG8gJXMiICUgcGtnKQorICAgICAgICAgICAgcG9zdGluc3QgPSBkLmdldFZhcigncGtnX3Bvc3RpbnN0XyVzJyAlIHBrZykKKyAgICAgICAgICAgIGlmIG5vdCBwb3N0aW5zdDoKKyAgICAgICAgICAgICAgICBwb3N0aW5zdCA9ICcjIS9iaW4vc2hcbicKKyAgICAgICAgICAgIHBvc3RpbnN0ICs9IGQuZ2V0VmFyKCdtaW1lX3hkZ19wb3N0aW5zdCcpCisgICAgICAgICAgICBkLnNldFZhcigncGtnX3Bvc3RpbnN0XyVzJyAlIHBrZywgcG9zdGluc3QpCisgICAgICAgICAgICBwb3N0cm0gPSBkLmdldFZhcigncGtnX3Bvc3RybV8lcycgJSBwa2cpCisgICAgICAgICAgICBpZiBub3QgcG9zdHJtOgorICAgICAgICAgICAgICAgIHBvc3RybSA9ICcjIS9iaW4vc2hcbicKKyAgICAgICAgICAgIHBvc3RybSArPSBkLmdldFZhcignbWltZV94ZGdfcG9zdHJtJykKKyAgICAgICAgICAgIGQuc2V0VmFyKCdwa2dfcG9zdHJtXyVzJyAlIHBrZywgcG9zdHJtKQorICAgICAgICAgICAgYmIubm90ZSgiYWRkaW5nIGRlc2t0b3AtZmlsZS11dGlscyBkZXBlbmRlbmN5IHRvICVzIiAlIHBrZykKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcGtnLCAiICIgKyBkLmdldFZhcignTUxQUkVGSVgnKSsiZGVza3RvcC1maWxlLXV0aWxzIikKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL21pbWUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL21pbWUuYmJjbGFzcwppbmRleCA2YzdiODY4Li5jOTA3MmFkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9taW1lLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbWltZS5iYmNsYXNzCkBAIC0xLDQ2ICsxLDQ3IEBACi1ERVBFTkRTICs9ICJzaGFyZWQtbWltZS1pbmZvIgorIworIyBUaGlzIGNsYXNzIGlzIHVzZWQgYnkgcmVjaXBlcyBpbnN0YWxsaW5nIG1pbWUgdHlwZXMKKyMKKworREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0JQTicsICdzaGFyZWQtbWltZS1pbmZvJywgJycsICdzaGFyZWQtbWltZS1pbmZvJywgZCl9IgogUEFDS0FHRV9XUklURV9ERVBTICs9ICJzaGFyZWQtbWltZS1pbmZvLW5hdGl2ZSIKK01JTUVESVIgPSAiJHtkYXRhZGlyfS9taW1lIgogCiBtaW1lX3Bvc3RpbnN0KCkgewotaWYgWyAiJDEiID0gY29uZmlndXJlIF07IHRoZW4KLQlVUERBVEVNSU1FREI9YHdoaWNoIHVwZGF0ZS1taW1lLWRhdGFiYXNlYAotCWlmIFsgLXggIiRVUERBVEVNSU1FREIiIF0gOyB0aGVuCi0JCWVjaG8gIlVwZGF0aW5nIE1JTUUgZGF0YWJhc2UuLi4gdGhpcyBtYXkgdGFrZSBhIHdoaWxlLiIKLQkJJFVQREFURU1JTUVEQiAkRCR7ZGF0YWRpcn0vbWltZQotCWVsc2UKLQkJZWNobyAiTWlzc2luZyB1cGRhdGUtbWltZS1kYXRhYmFzZSwgdXBkYXRlIG9mIG1pbWUgZGF0YWJhc2UgZmFpbGVkISIKLQkJZXhpdCAxCi0JZmkKK2lmIFsgIngkRCIgIT0gIngiIF07IHRoZW4KKwkkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgdXBkYXRlX21pbWVfZGF0YWJhc2UgJHtQS0d9IFwKKwkJbWxwcmVmaXg9JHtNTFBSRUZJWH0gXAorCQltaW1lZGlyPSR7TUlNRURJUn0KK2Vsc2UKKwllY2hvICJVcGRhdGluZyBNSU1FIGRhdGFiYXNlLi4uIHRoaXMgbWF5IHRha2UgYSB3aGlsZS4iCisJdXBkYXRlLW1pbWUtZGF0YWJhc2UgJEQke01JTUVESVJ9CiBmaQogfQogCiBtaW1lX3Bvc3RybSgpIHsKLWlmIFsgIiQxIiA9IHJlbW92ZSBdIHx8IFsgIiQxIiA9IHVwZ3JhZGUgXTsgdGhlbgotCVVQREFURU1JTUVEQj1gd2hpY2ggdXBkYXRlLW1pbWUtZGF0YWJhc2VgCi0JaWYgWyAteCAiJFVQREFURU1JTUVEQiIgXSA7IHRoZW4KLQkJZWNobyAiVXBkYXRpbmcgTUlNRSBkYXRhYmFzZS4uLiB0aGlzIG1heSB0YWtlIGEgd2hpbGUuIgotCQkkVVBEQVRFTUlNRURCICREJHtkYXRhZGlyfS9taW1lCi0JZWxzZQotCQllY2hvICJNaXNzaW5nIHVwZGF0ZS1taW1lLWRhdGFiYXNlLCB1cGRhdGUgb2YgbWltZSBkYXRhYmFzZSBmYWlsZWQhIgotCQlleGl0IDEKLQlmaQoraWYgWyAieCREIiAhPSAieCIgXTsgdGhlbgorCSRJTlRFUkNFUFRfRElSL3Bvc3RpbnN0X2ludGVyY2VwdCB1cGRhdGVfbWltZV9kYXRhYmFzZSAke1BLR30gXAorCQltbHByZWZpeD0ke01MUFJFRklYfSBcCisJCW1pbWVkaXI9JHtNSU1FRElSfQorZWxzZQorCWVjaG8gIlVwZGF0aW5nIE1JTUUgZGF0YWJhc2UuLi4gdGhpcyBtYXkgdGFrZSBhIHdoaWxlLiIKKwl1cGRhdGUtbWltZS1kYXRhYmFzZSAkRCR7TUlNRURJUn0KIGZpCiB9CiAKIHB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19hcHBlbmQgKCkgewotICAgIGltcG9ydCByZQogICAgIHBhY2thZ2VzID0gZC5nZXRWYXIoJ1BBQ0tBR0VTJykuc3BsaXQoKQogICAgIHBrZ2Rlc3QgPSAgZC5nZXRWYXIoJ1BLR0RFU1QnKQorICAgIG1pbWVkaXIgPSBkLmdldFZhcignTUlNRURJUicpCiAKICAgICBmb3IgcGtnIGluIHBhY2thZ2VzOgotICAgICAgICBtaW1lX2RpciA9ICclcy8lcy91c3Ivc2hhcmUvbWltZS9wYWNrYWdlcycgJSAocGtnZGVzdCwgcGtnKQotICAgICAgICBtaW1lcyA9IFtdCi0gICAgICAgIG1pbWVfcmUgPSByZS5jb21waWxlKCIuKlwueG1sJCIpCi0gICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG1pbWVfZGlyKToKLSAgICAgICAgICAgIGZvciBmIGluIG9zLmxpc3RkaXIobWltZV9kaXIpOgotICAgICAgICAgICAgICAgIGlmIG1pbWVfcmUubWF0Y2goZik6Ci0gICAgICAgICAgICAgICAgICAgIG1pbWVzLmFwcGVuZChmKQotICAgICAgICBpZiBtaW1lczoKKyAgICAgICAgbWltZV9wYWNrYWdlc19kaXIgPSAnJXMvJXMlcy9wYWNrYWdlcycgJSAocGtnZGVzdCwgcGtnLCBtaW1lZGlyKQorICAgICAgICBtaW1lc190eXBlc19mb3VuZCA9IEZhbHNlCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKG1pbWVfcGFja2FnZXNfZGlyKToKKyAgICAgICAgICAgIGZvciBmIGluIG9zLmxpc3RkaXIobWltZV9wYWNrYWdlc19kaXIpOgorICAgICAgICAgICAgICAgIGlmIGYuZW5kc3dpdGgoJy54bWwnKToKKyAgICAgICAgICAgICAgICAgICAgbWltZXNfdHlwZXNfZm91bmQgPSBUcnVlCisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGlmIG1pbWVzX3R5cGVzX2ZvdW5kOgogICAgICAgICAgICAgYmIubm90ZSgiYWRkaW5nIG1pbWUgcG9zdGluc3QgYW5kIHBvc3RybSBzY3JpcHRzIHRvICVzIiAlIHBrZykKICAgICAgICAgICAgIHBvc3RpbnN0ID0gZC5nZXRWYXIoJ3BrZ19wb3N0aW5zdF8lcycgJSBwa2cpCiAgICAgICAgICAgICBpZiBub3QgcG9zdGluc3Q6CkBAIC01Miw2ICs1Myw3IEBACiAgICAgICAgICAgICAgICAgcG9zdHJtID0gJyMhL2Jpbi9zaFxuJwogICAgICAgICAgICAgcG9zdHJtICs9IGQuZ2V0VmFyKCdtaW1lX3Bvc3RybScpCiAgICAgICAgICAgICBkLnNldFZhcigncGtnX3Bvc3RybV8lcycgJSBwa2csIHBvc3RybSkKLSAgICAgICAgICAgIGJiLm5vdGUoImFkZGluZyBzaGFyZWQtbWltZS1pbmZvLWRhdGEgZGVwZW5kZW5jeSB0byAlcyIgJSBwa2cpCi0gICAgICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIHBrZywgIiAiICsgZC5nZXRWYXIoJ01MUFJFRklYJykrInNoYXJlZC1taW1lLWluZm8tZGF0YSIpCisgICAgICAgICAgICBpZiBwa2cgIT0gJ3NoYXJlZC1taW1lLWluZm8tZGF0YSc6CisgICAgICAgICAgICAgICAgYmIubm90ZSgiYWRkaW5nIHNoYXJlZC1taW1lLWluZm8tZGF0YSBkZXBlbmRlbmN5IHRvICVzIiAlIHBrZykKKyAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIHBrZywgIiAiICsgZC5nZXRWYXIoJ01MUFJFRklYJykrInNoYXJlZC1taW1lLWluZm8tZGF0YSIpCiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYi5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbXVsdGlsaWIuYmJjbGFzcwppbmRleCAxYTkyOTVkLi5lZTY3N2RhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9tdWx0aWxpYi5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL211bHRpbGliLmJiY2xhc3MKQEAgLTE4NCwxMSArMTg0LDEyIEBACiAgICAgICAgIGZvciBpIGluIHZhbHVlczoKICAgICAgICAgICAgIGlmIGkuc3RhcnRzd2l0aCgndmlydHVhbC8nKToKICAgICAgICAgICAgICAgICBpID0gaVtsZW4oJ3ZpcnR1YWwvJyk6XQotICAgICAgICAgICAgaWYgKG5vdCBpLnN0YXJ0c3dpdGgoJ2tlcm5lbC1tb2R1bGUnKSkgYW5kIChub3QgaS5zdGFydHN3aXRoKG1scHJlZml4KSkgYW5kIFwKLSAgICAgICAgICAgICAgICAobm90ICdjcm9zcy1jYW5hZGlhbicgaW4gaSkgYW5kIChub3QgaS5zdGFydHN3aXRoKCJuYXRpdmVzZGstIikpIGFuZCBcCi0gICAgICAgICAgICAgICAgKG5vdCBpLnN0YXJ0c3dpdGgoInJ0bGQiKSkgYW5kIChub3QgaS5zdGFydHN3aXRoKCdrZXJuZWwtdm1saW51eCcpKSBcCi0gICAgICAgICAgICAgICAgYW5kIChub3QgaS5zdGFydHN3aXRoKCJrZXJuZWwtaW1hZ2UiKSkgYW5kIChub3QgaS5zdGFydHN3aXRoKCIvIikpOgorCisgICAgICAgICAgICBpZiAobm90IChpLnN0YXJ0c3dpdGgobWxwcmVmaXgpIG9yIGkuc3RhcnRzd2l0aCgia2VybmVsLSIpIFwKKyAgICAgICAgICAgICAgICAgICAgb3IgKCdjcm9zcy1jYW5hZGlhbicgaW4gaSkgb3IgaS5zdGFydHN3aXRoKCJuYXRpdmVzZGstIikgXAorICAgICAgICAgICAgICAgICAgICBvciBpLnN0YXJ0c3dpdGgoInJ0bGQiKSBvciBpLnN0YXJ0c3dpdGgoIi8iKSkpOgogICAgICAgICAgICAgICAgIGNhbmRpZGF0ZXMuYXBwZW5kKGkpCisKICAgICAgICAgaWYgbGVuKGNhbmRpZGF0ZXMpID4gMDoKICAgICAgICAgICAgIG1zZyA9ICIlcyBwYWNrYWdlICVzIC0gc3VzcGljaW91cyB2YWx1ZXMgJyVzJyBpbiAlcyIgXAogICAgICAgICAgICAgICAgICAgICUgKGQuZ2V0VmFyKCdQTicpLCBwa2csICcgJy5qb2luKGNhbmRpZGF0ZXMpLCB2YXIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL25hdGl2ZS5iYmNsYXNzCmluZGV4IGQ1YjZmNmEuLjA4MTA2ZTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL25hdGl2ZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL25hdGl2ZS5iYmNsYXNzCkBAIC0xODYsMTEgKzE4NiwxMSBAQAogICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygiZXh0ZW5kX3JlY2lwZV9zeXNyb290IiwgZCkKIH0KIGFkZHRhc2sgYWRkdG9fcmVjaXBlX3N5c3Jvb3QgYWZ0ZXIgZG9fcG9wdWxhdGVfc3lzcm9vdAorZG9fYWRkdG9fcmVjaXBlX3N5c3Jvb3RbZGVwdGFza10gPSAiZG9fcG9wdWxhdGVfc3lzcm9vdCIKIAogaW5oZXJpdCBub3BhY2thZ2VzCiAKIGRvX3BhY2thZ2VkYXRhW3N0YW1wLWV4dHJhLWluZm9dID0gIiIKLWRvX3BvcHVsYXRlX3N5c3Jvb3Rbc3RhbXAtZXh0cmEtaW5mb10gPSAiIgogCiBVU0VfTkxTID0gIm5vIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9uYXRpdmVzZGsuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL25hdGl2ZXNkay5iYmNsYXNzCmluZGV4IDAzMTM1YWMuLjdiNzU3MTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL25hdGl2ZXNkay5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL25hdGl2ZXNkay5iYmNsYXNzCkBAIC0xMDcsNyArMTA3LDYgQEAKIGFkZGhhbmRsZXIgbmF0aXZlc2RrX3ZpcnRjbGFzc19oYW5kbGVyCiBuYXRpdmVzZGtfdmlydGNsYXNzX2hhbmRsZXJbZXZlbnRtYXNrXSA9ICJiYi5ldmVudC5SZWNpcGVQcmVGaW5hbGlzZSIKIAotZG9fcG9wdWxhdGVfc3lzcm9vdFtzdGFtcC1leHRyYS1pbmZvXSA9ICIiCiBkb19wYWNrYWdlZGF0YVtzdGFtcC1leHRyYS1pbmZvXSA9ICIiCiAKIFVTRV9OTFMgPSAiJHtTREtVU0VfTkxTfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL25wbS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvbnBtLmJiY2xhc3MKaW5kZXggNGIxZjBhMy4uMDY4MDMyYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvbnBtLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvbnBtLmJiY2xhc3MKQEAgLTEsOTQgKzEsMzA3IEBACisjIENvcHlyaWdodCAoQykgMjAyMCBTYXZvaXItRmFpcmUgTGludXgKKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQorIworIyBUaGlzIGJiY2xhc3MgYnVpbGRzIGFuZCBpbnN0YWxscyBhbiBucG0gcGFja2FnZSB0byB0aGUgdGFyZ2V0LiBUaGUgcGFja2FnZQorIyBzb3VyY2VzIGZpbGVzIHNob3VsZCBiZSBmZXRjaGVkIGluIHRoZSBjYWxsaW5nIHJlY2lwZSBieSB1c2luZyB0aGUgU1JDX1VSSQorIyB2YXJpYWJsZS4gVGhlICR7U30gdmFyaWFibGUgc2hvdWxkIGJlIHVwZGF0ZWQgZGVwZW5kaW5nIG9mIHlvdXIgZmV0Y2hlci4KKyMKKyMgVXNhZ2U6CisjICBTUkNfVVJJID0gIi4uLiIKKyMgIGluaGVyaXQgbnBtCisjCisjIE9wdGlvbmFsIHZhcmlhYmxlczoKKyMgIE5QTV9BUkNIOgorIyAgICAgICBPdmVycmlkZSB0aGUgYXV0byBnZW5lcmF0ZWQgbnBtIGFyY2hpdGVjdHVyZS4KKyMKKyMgIE5QTV9JTlNUQUxMX0RFVjoKKyMgICAgICAgU2V0IHRvIDEgdG8gYWxzbyBpbnN0YWxsIGRldkRlcGVuZGVuY2llcy4KKwogREVQRU5EU19wcmVwZW5kID0gIm5vZGVqcy1uYXRpdmUgIgogUkRFUEVORFNfJHtQTn1fcHJlcGVuZCA9ICJub2RlanMgIgotUyA9ICIke1dPUktESVJ9L25wbXBrZyIKIAotZGVmIG5vZGVfcGtnbmFtZShkKToKLSAgICBicG4gPSBkLmdldFZhcignQlBOJykKLSAgICBpZiBicG4uc3RhcnRzd2l0aCgibm9kZS0iKToKLSAgICAgICAgcmV0dXJuIGJwbls1Ol0KLSAgICByZXR1cm4gYnBuCi0KLU5QTVBOID89ICIke0Bub2RlX3BrZ25hbWUoZCl9IgotCi1OUE1fSU5TVEFMTERJUiA9ICIke2xpYmRpcn0vbm9kZV9tb2R1bGVzLyR7TlBNUE59IgotCi0jIGZ1bmN0aW9uIG1hcHMgYXJjaCBuYW1lcyB0byBucG0gYXJjaCBuYW1lcwotZGVmIG5wbV9vZV9hcmNoX21hcCh0YXJnZXRfYXJjaCwgZCk6Ci0gICAgaW1wb3J0IHJlCi0gICAgaWYgICByZS5tYXRjaCgncChwY3xvd2VycGMpKHw2NCknLCB0YXJnZXRfYXJjaCk6IHJldHVybiAncHBjJwotICAgIGVsaWYgcmUubWF0Y2goJ2kuODYkJywgdGFyZ2V0X2FyY2gpOiByZXR1cm4gJ2lhMzInCi0gICAgZWxpZiByZS5tYXRjaCgneDg2XzY0JCcsIHRhcmdldF9hcmNoKTogcmV0dXJuICd4NjQnCi0gICAgZWxpZiByZS5tYXRjaCgnYXJtNjQkJywgdGFyZ2V0X2FyY2gpOiByZXR1cm4gJ2FybScKLSAgICByZXR1cm4gdGFyZ2V0X2FyY2gKLQotTlBNX0FSQ0ggPz0gIiR7QG5wbV9vZV9hcmNoX21hcChkLmdldFZhcignVEFSR0VUX0FSQ0gnKSwgZCl9IgogTlBNX0lOU1RBTExfREVWID89ICIwIgogCi1ucG1fZG9fY29tcGlsZSgpIHsKLQkjIENvcHkgaW4gYW55IGFkZGl0aW9uYWxseSBmZXRjaGVkIG1vZHVsZXMKLQlpZiBbIC1kICR7V09SS0RJUn0vbm9kZV9tb2R1bGVzIF0gOyB0aGVuCi0JCWNwIC1hICR7V09SS0RJUn0vbm9kZV9tb2R1bGVzICR7U30vCi0JZmkKLQkjIGNoYW5naW5nIHRoZSBob21lIGRpcmVjdG9yeSB0byB0aGUgd29ya2luZyBkaXJlY3RvcnksIHRoZSAubnBtcmMgd2lsbAotCSMgYmUgY3JlYXRlZCBpbiB0aGlzIGRpcmVjdG9yeQotCWV4cG9ydCBIT01FPSR7V09SS0RJUn0KLQlpZiBbICAiJHtOUE1fSU5TVEFMTF9ERVZ9IiA9ICIxIiBdOyB0aGVuCi0JCW5wbSBjb25maWcgc2V0IGRldiB0cnVlCi0JZWxzZQotCQlucG0gY29uZmlnIHNldCBkZXYgZmFsc2UKLQlmaQotCW5wbSBzZXQgY2FjaGUgJHtXT1JLRElSfS9ucG1fY2FjaGUKLQkjIGNsZWFyIGNhY2hlIGJlZm9yZSBldmVyeSBidWlsZAotCW5wbSBjYWNoZSBjbGVhciAtLWZvcmNlCi0JIyBJbnN0YWxsIHBrZyBpbnRvICR7U30gd2l0aG91dCBnb2luZyB0byB0aGUgcmVnaXN0cnkKLQlpZiBbICAiJHtOUE1fSU5TVEFMTF9ERVZ9IiA9ICIxIiBdOyB0aGVuCi0JCW5wbSAtLWFyY2g9JHtOUE1fQVJDSH0gLS10YXJnZXRfYXJjaD0ke05QTV9BUkNIfSAtLW5vLXJlZ2lzdHJ5IGluc3RhbGwKLQllbHNlCi0JCW5wbSAtLWFyY2g9JHtOUE1fQVJDSH0gLS10YXJnZXRfYXJjaD0ke05QTV9BUkNIfSAtLXByb2R1Y3Rpb24gLS1uby1yZWdpc3RyeSBpbnN0YWxsCi0JZmkKK2RlZiBucG1fdGFyZ2V0X2FyY2hfbWFwKHRhcmdldF9hcmNoKToKKyAgICAiIiJNYXBzIGFyY2ggbmFtZXMgdG8gbnBtIGFyY2ggbmFtZXMiIiIKKyAgICBpbXBvcnQgcmUKKyAgICBpZiByZS5tYXRjaCgicChwY3xvd2VycGMpKHw2NCkiLCB0YXJnZXRfYXJjaCk6CisgICAgICAgIHJldHVybiAicHBjIgorICAgIGVsaWYgcmUubWF0Y2goImkuODYkIiwgdGFyZ2V0X2FyY2gpOgorICAgICAgICByZXR1cm4gImlhMzIiCisgICAgZWxpZiByZS5tYXRjaCgieDg2XzY0JCIsIHRhcmdldF9hcmNoKToKKyAgICAgICAgcmV0dXJuICJ4NjQiCisgICAgZWxpZiByZS5tYXRjaCgiYXJtNjQkIiwgdGFyZ2V0X2FyY2gpOgorICAgICAgICByZXR1cm4gImFybSIKKyAgICByZXR1cm4gdGFyZ2V0X2FyY2gKKworTlBNX0FSQ0ggPz0gIiR7QG5wbV90YXJnZXRfYXJjaF9tYXAoZC5nZXRWYXIoIlRBUkdFVF9BUkNIIikpfSIKKworTlBNX1BBQ0tBR0UgPSAiJHtXT1JLRElSfS9ucG0tcGFja2FnZSIKK05QTV9DQUNIRSA9ICIke1dPUktESVJ9L25wbS1jYWNoZSIKK05QTV9CVUlMRCA9ICIke1dPUktESVJ9L25wbS1idWlsZCIKKworZGVmIG5wbV9nbG9iYWxfY29uZmlncyhkKToKKyAgICAiIiJHZXQgdGhlIG5wbSBnbG9iYWwgY29uZmlndXJhdGlvbiIiIgorICAgIGNvbmZpZ3MgPSBbXQorICAgICMgRW5zdXJlIG5vIG5ldHdvcmsgYWNjZXNzIGlzIGRvbmUKKyAgICBjb25maWdzLmFwcGVuZCgoIm9mZmxpbmUiLCAidHJ1ZSIpKQorICAgIGNvbmZpZ3MuYXBwZW5kKCgicHJveHkiLCAiaHR0cDovL2ludmFsaWQiKSkKKyAgICAjIENvbmZpZ3VyZSB0aGUgY2FjaGUgZGlyZWN0b3J5CisgICAgY29uZmlncy5hcHBlbmQoKCJjYWNoZSIsIGQuZ2V0VmFyKCJOUE1fQ0FDSEUiKSkpCisgICAgcmV0dXJuIGNvbmZpZ3MKKworZGVmIG5wbV9wYWNrKGVudiwgc3JjZGlyLCB3b3JrZGlyKToKKyAgICAiIiJSdW4gJ25wbSBwYWNrJyBvbiBhIHNwZWNpZmllZCBkaXJlY3RvcnkiIiIKKyAgICBpbXBvcnQgc2hsZXgKKyAgICBjbWQgPSAibnBtIHBhY2sgJXMiICUgc2hsZXgucXVvdGUoc3JjZGlyKQorICAgIGNvbmZpZ3MgPSBbKCJpZ25vcmUtc2NyaXB0cyIsICJ0cnVlIildCisgICAgdGFyYmFsbCA9IGVudi5ydW4oY21kLCBjb25maWdzPWNvbmZpZ3MsIHdvcmtkaXI9d29ya2Rpcikuc3RyaXAoIlxuIikKKyAgICByZXR1cm4gb3MucGF0aC5qb2luKHdvcmtkaXIsIHRhcmJhbGwpCisKK3B5dGhvbiBucG1fZG9fY29uZmlndXJlKCkgeworICAgICIiIgorICAgIFN0ZXAgb25lOiBjb25maWd1cmUgdGhlIG5wbSBjYWNoZSBhbmQgdGhlIG1haW4gbnBtIHBhY2thZ2UKKworICAgIEV2ZXJ5IGRlcGVuZGVuY2llcyBoYXZlIGJlZW4gZmV0Y2hlZCBhbmQgcGF0Y2hlZCBpbiB0aGUgc291cmNlIGRpcmVjdG9yeS4KKyAgICBUaGV5IGhhdmUgdG8gYmUgcGFja2VkICh0aGlzIHJlbW92ZSB1bm5lZWRlZCBmaWxlcykgYW5kIGFkZGVkIHRvIHRoZSBucG0KKyAgICBjYWNoZSB0byBiZSBhdmFpbGFibGUgZm9yIHRoZSBuZXh0IHN0ZXAuCisKKyAgICBUaGUgbWFpbiBwYWNrYWdlIGFuZCBpdHMgYXNzb2NpYXRlZCBtYW5pZmVzdCBmaWxlIGFuZCBzaHJpbmt3cmFwIGZpbGUgaGF2ZQorICAgIHRvIGJlIGNvbmZpZ3VyZWQgdG8gdGFrZSBpbnRvIGFjY291bnQgdGhlc2UgY2FjaGVkIGRlcGVuZGVuY2llcy4KKyAgICAiIiIKKyAgICBpbXBvcnQgYmFzZTY0CisgICAgaW1wb3J0IGNvcHkKKyAgICBpbXBvcnQganNvbgorICAgIGltcG9ydCByZQorICAgIGltcG9ydCBzaGxleAorICAgIGltcG9ydCB0ZW1wZmlsZQorICAgIGZyb20gYmIuZmV0Y2gyLm5wbSBpbXBvcnQgTnBtRW52aXJvbm1lbnQKKyAgICBmcm9tIGJiLmZldGNoMi5ucG0gaW1wb3J0IG5wbV91bnBhY2sKKyAgICBmcm9tIGJiLmZldGNoMi5ucG1zdyBpbXBvcnQgZm9yZWFjaF9kZXBlbmRlbmNpZXMKKyAgICBmcm9tIGJiLnByb2dyZXNzIGltcG9ydCBPdXRPZlByb2dyZXNzSGFuZGxlcgorCisgICAgYmIudXRpbHMucmVtb3ZlKGQuZ2V0VmFyKCJOUE1fQ0FDSEUiKSwgcmVjdXJzZT1UcnVlKQorICAgIGJiLnV0aWxzLnJlbW92ZShkLmdldFZhcigiTlBNX1BBQ0tBR0UiKSwgcmVjdXJzZT1UcnVlKQorCisgICAgZW52ID0gTnBtRW52aXJvbm1lbnQoZCwgY29uZmlncz1ucG1fZ2xvYmFsX2NvbmZpZ3MoZCkpCisKKyAgICBkZWYgX25wbV9jYWNoZV9hZGQodGFyYmFsbCk6CisgICAgICAgICIiIlJ1biAnbnBtIGNhY2hlIGFkZCcgZm9yIGEgc3BlY2lmaWVkIHRhcmJhbGwiIiIKKyAgICAgICAgY21kID0gIm5wbSBjYWNoZSBhZGQgJXMiICUgc2hsZXgucXVvdGUodGFyYmFsbCkKKyAgICAgICAgZW52LnJ1bihjbWQpCisKKyAgICBkZWYgX25wbV9pbnRlZ3JpdHkodGFyYmFsbCk6CisgICAgICAgICIiIlJldHVybiB0aGUgbnBtIGludGVncml0eSBvZiBhIHNwZWNpZmllZCB0YXJiYWxsIiIiCisgICAgICAgIHNoYTUxMiA9IGJiLnV0aWxzLnNoYTUxMl9maWxlKHRhcmJhbGwpCisgICAgICAgIHJldHVybiAic2hhNTEyLSIgKyBiYXNlNjQuYjY0ZW5jb2RlKGJ5dGVzLmZyb21oZXgoc2hhNTEyKSkuZGVjb2RlKCkKKworICAgIGRlZiBfbnBtX3ZlcnNpb24odGFyYmFsbCk6CisgICAgICAgICIiIlJldHVybiB0aGUgdmVyc2lvbiBvZiBhIHNwZWNpZmllZCB0YXJiYWxsIiIiCisgICAgICAgIHJlZ2V4ID0gciItKFxkK1wuXGQrXC5cZCsoLS4qKT8oXCsuKik/KVwudGd6IgorICAgICAgICByZXR1cm4gcmUuc2VhcmNoKHJlZ2V4LCB0YXJiYWxsKS5ncm91cCgxKQorCisgICAgZGVmIF9ucG1zd19kZXBlbmRlbmN5X2RpY3Qob3JpZywgZGVwdHJlZSk6CisgICAgICAgICIiIgorICAgICAgICBSZXR1cm4gdGhlIHN1YiBkaWN0aW9uYXJ5IGluIHRoZSAnb3JpZycgZGljdGlvbmFyeSBjb3JyZXNwb25kaW5nIHRvIHRoZQorICAgICAgICAnZGVwdHJlZScgZGVwZW5kZW5jeSB0cmVlLiBUaGlzIGZ1bmN0aW9uIGZvbGxvd3MgdGhlIHNocmlua3dyYXAgZmlsZQorICAgICAgICBmb3JtYXQuCisgICAgICAgICIiIgorICAgICAgICBwdHIgPSBvcmlnCisgICAgICAgIGZvciBkZXAgaW4gZGVwdHJlZToKKyAgICAgICAgICAgIGlmICJkZXBlbmRlbmNpZXMiIG5vdCBpbiBwdHI6CisgICAgICAgICAgICAgICAgcHRyWyJkZXBlbmRlbmNpZXMiXSA9IHt9CisgICAgICAgICAgICBwdHIgPSBwdHJbImRlcGVuZGVuY2llcyJdCisgICAgICAgICAgICBpZiBkZXAgbm90IGluIHB0cjoKKyAgICAgICAgICAgICAgICBwdHJbZGVwXSA9IHt9CisgICAgICAgICAgICBwdHIgPSBwdHJbZGVwXQorICAgICAgICByZXR1cm4gcHRyCisKKyAgICAjIE1hbmFnZSB0aGUgbWFuaWZlc3QgZmlsZSBhbmQgc2hyaW5rd3JhcCBmaWxlcworICAgIG9yaWdfbWFuaWZlc3RfZmlsZSA9IGQuZXhwYW5kKCIke1N9L3BhY2thZ2UuanNvbiIpCisgICAgb3JpZ19zaHJpbmt3cmFwX2ZpbGUgPSBkLmV4cGFuZCgiJHtTfS9ucG0tc2hyaW5rd3JhcC5qc29uIikKKyAgICBjYWNoZWRfbWFuaWZlc3RfZmlsZSA9IGQuZXhwYW5kKCIke05QTV9QQUNLQUdFfS9wYWNrYWdlLmpzb24iKQorICAgIGNhY2hlZF9zaHJpbmt3cmFwX2ZpbGUgPSBkLmV4cGFuZCgiJHtOUE1fUEFDS0FHRX0vbnBtLXNocmlua3dyYXAuanNvbiIpCisKKyAgICB3aXRoIG9wZW4ob3JpZ19tYW5pZmVzdF9maWxlLCAiciIpIGFzIGY6CisgICAgICAgIG9yaWdfbWFuaWZlc3QgPSBqc29uLmxvYWQoZikKKworICAgIGNhY2hlZF9tYW5pZmVzdCA9IGNvcHkuZGVlcGNvcHkob3JpZ19tYW5pZmVzdCkKKyAgICBjYWNoZWRfbWFuaWZlc3QucG9wKCJkZXBlbmRlbmNpZXMiLCBOb25lKQorICAgIGNhY2hlZF9tYW5pZmVzdC5wb3AoImRldkRlcGVuZGVuY2llcyIsIE5vbmUpCisKKyAgICB3aXRoIG9wZW4ob3JpZ19zaHJpbmt3cmFwX2ZpbGUsICJyIikgYXMgZjoKKyAgICAgICAgb3JpZ19zaHJpbmt3cmFwID0ganNvbi5sb2FkKGYpCisKKyAgICBjYWNoZWRfc2hyaW5rd3JhcCA9IGNvcHkuZGVlcGNvcHkob3JpZ19zaHJpbmt3cmFwKQorICAgIGNhY2hlZF9zaHJpbmt3cmFwLnBvcCgiZGVwZW5kZW5jaWVzIiwgTm9uZSkKKworICAgICMgTWFuYWdlIHRoZSBkZXBlbmRlbmNpZXMKKyAgICBwcm9ncmVzcyA9IE91dE9mUHJvZ3Jlc3NIYW5kbGVyKGQsIHIiXihcZCspLyhcZCspJCIpCisgICAgcHJvZ3Jlc3NfdG90YWwgPSAxICMgYWxzbyBjb3VudCB0aGUgbWFpbiBwYWNrYWdlCisgICAgcHJvZ3Jlc3NfZG9uZSA9IDAKKworICAgIGRlZiBfY291bnRfZGVwZW5kZW5jeShuYW1lLCBwYXJhbXMsIGRlcHRyZWUpOgorICAgICAgICBub25sb2NhbCBwcm9ncmVzc190b3RhbAorICAgICAgICBwcm9ncmVzc190b3RhbCArPSAxCisKKyAgICBkZWYgX2NhY2hlX2RlcGVuZGVuY3kobmFtZSwgcGFyYW1zLCBkZXB0cmVlKToKKyAgICAgICAgZGVzdHN1YmRpcnMgPSBbb3MucGF0aC5qb2luKCJub2RlX21vZHVsZXMiLCBkZXApIGZvciBkZXAgaW4gZGVwdHJlZV0KKyAgICAgICAgZGVzdHN1ZmZpeCA9IG9zLnBhdGguam9pbigqZGVzdHN1YmRpcnMpCisgICAgICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdG1wZGlyOgorICAgICAgICAgICAgIyBBZGQgdGhlIGRlcGVuZGVuY3kgdG8gdGhlIG5wbSBjYWNoZQorICAgICAgICAgICAgZGVzdGRpciA9IG9zLnBhdGguam9pbihkLmdldFZhcigiUyIpLCBkZXN0c3VmZml4KQorICAgICAgICAgICAgdGFyYmFsbCA9IG5wbV9wYWNrKGVudiwgZGVzdGRpciwgdG1wZGlyKQorICAgICAgICAgICAgX25wbV9jYWNoZV9hZGQodGFyYmFsbCkKKyAgICAgICAgICAgICMgQWRkIGl0cyBzaWduYXR1cmUgdG8gdGhlIGNhY2hlZCBzaHJpbmt3cmFwCisgICAgICAgICAgICBkZXAgPSBfbnBtc3dfZGVwZW5kZW5jeV9kaWN0KGNhY2hlZF9zaHJpbmt3cmFwLCBkZXB0cmVlKQorICAgICAgICAgICAgZGVwWyJ2ZXJzaW9uIl0gPSBfbnBtX3ZlcnNpb24odGFyYmFsbCkKKyAgICAgICAgICAgIGRlcFsiaW50ZWdyaXR5Il0gPSBfbnBtX2ludGVncml0eSh0YXJiYWxsKQorICAgICAgICAgICAgaWYgcGFyYW1zLmdldCgiZGV2IiwgRmFsc2UpOgorICAgICAgICAgICAgICAgIGRlcFsiZGV2Il0gPSBUcnVlCisgICAgICAgICAgICAjIERpc3BsYXkgcHJvZ3Jlc3MKKyAgICAgICAgICAgIG5vbmxvY2FsIHByb2dyZXNzX2RvbmUKKyAgICAgICAgICAgIHByb2dyZXNzX2RvbmUgKz0gMQorICAgICAgICAgICAgcHJvZ3Jlc3Mud3JpdGUoIiVkLyVkIiAlIChwcm9ncmVzc19kb25lLCBwcm9ncmVzc190b3RhbCkpCisKKyAgICBkZXYgPSBiYi51dGlscy50b19ib29sZWFuKGQuZ2V0VmFyKCJOUE1fSU5TVEFMTF9ERVYiKSwgRmFsc2UpCisgICAgZm9yZWFjaF9kZXBlbmRlbmNpZXMob3JpZ19zaHJpbmt3cmFwLCBfY291bnRfZGVwZW5kZW5jeSwgZGV2KQorICAgIGZvcmVhY2hfZGVwZW5kZW5jaWVzKG9yaWdfc2hyaW5rd3JhcCwgX2NhY2hlX2RlcGVuZGVuY3ksIGRldikKKworICAgICMgQ29uZmlndXJlIHRoZSBtYWluIHBhY2thZ2UKKyAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeSgpIGFzIHRtcGRpcjoKKyAgICAgICAgdGFyYmFsbCA9IG5wbV9wYWNrKGVudiwgZC5nZXRWYXIoIlMiKSwgdG1wZGlyKQorICAgICAgICBucG1fdW5wYWNrKHRhcmJhbGwsIGQuZ2V0VmFyKCJOUE1fUEFDS0FHRSIpLCBkKQorCisgICAgIyBDb25maWd1cmUgdGhlIGNhY2hlZCBtYW5pZmVzdCBmaWxlIGFuZCBjYWNoZWQgc2hyaW5rd3JhcCBmaWxlCisgICAgZGVmIF91cGRhdGVfbWFuaWZlc3QoZGVwa2V5KToKKyAgICAgICAgZm9yIG5hbWUgaW4gb3JpZ19tYW5pZmVzdC5nZXQoZGVwa2V5LCB7fSk6CisgICAgICAgICAgICB2ZXJzaW9uID0gY2FjaGVkX3Nocmlua3dyYXBbImRlcGVuZGVuY2llcyJdW25hbWVdWyJ2ZXJzaW9uIl0KKyAgICAgICAgICAgIGlmIGRlcGtleSBub3QgaW4gY2FjaGVkX21hbmlmZXN0OgorICAgICAgICAgICAgICAgIGNhY2hlZF9tYW5pZmVzdFtkZXBrZXldID0ge30KKyAgICAgICAgICAgIGNhY2hlZF9tYW5pZmVzdFtkZXBrZXldW25hbWVdID0gdmVyc2lvbgorCisgICAgX3VwZGF0ZV9tYW5pZmVzdCgiZGVwZW5kZW5jaWVzIikKKworICAgIGlmIGRldjoKKyAgICAgICAgX3VwZGF0ZV9tYW5pZmVzdCgiZGV2RGVwZW5kZW5jaWVzIikKKworICAgIHdpdGggb3BlbihjYWNoZWRfbWFuaWZlc3RfZmlsZSwgInciKSBhcyBmOgorICAgICAgICBqc29uLmR1bXAoY2FjaGVkX21hbmlmZXN0LCBmLCBpbmRlbnQ9MikKKworICAgIHdpdGggb3BlbihjYWNoZWRfc2hyaW5rd3JhcF9maWxlLCAidyIpIGFzIGY6CisgICAgICAgIGpzb24uZHVtcChjYWNoZWRfc2hyaW5rd3JhcCwgZiwgaW5kZW50PTIpCit9CisKK3B5dGhvbiBucG1fZG9fY29tcGlsZSgpIHsKKyAgICAiIiIKKyAgICBTdGVwIHR3bzogaW5zdGFsbCB0aGUgbnBtIHBhY2thZ2UKKworICAgIFVzZSB0aGUgY29uZmlndXJlZCBtYWluIHBhY2thZ2UgYW5kIHRoZSBjYWNoZWQgZGVwZW5kZW5jaWVzIHRvIHJ1biB0aGUKKyAgICBpbnN0YWxsYXRpb24gcHJvY2Vzcy4gVGhlIGluc3RhbGxhdGlvbiBpcyBkb25lIGluIGEgZGlyZWN0b3J5IHdoaWNoIGlzCisgICAgbm90IHRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkgeWV0LgorCisgICAgQSBjb21iaW5hdGlvbiBvZiAnbnBtIHBhY2snIGFuZCAnbnBtIGluc3RhbGwnIGlzIHVzZWQgdG8gZW5zdXJlIHRoYXQgdGhlCisgICAgaW5zdGFsbGVkIGZpbGVzIGFyZSBhY3R1YWwgY29waWVzIGluc3RlYWQgb2Ygc3ltYm9saWMgbGlua3MgKHdoaWNoIGlzIHRoZQorICAgIGRlZmF1bHQgbnBtIGJlaGF2aW9yKS4KKyAgICAiIiIKKyAgICBpbXBvcnQgc2hsZXgKKyAgICBpbXBvcnQgdGVtcGZpbGUKKyAgICBmcm9tIGJiLmZldGNoMi5ucG0gaW1wb3J0IE5wbUVudmlyb25tZW50CisKKyAgICBiYi51dGlscy5yZW1vdmUoZC5nZXRWYXIoIk5QTV9CVUlMRCIpLCByZWN1cnNlPVRydWUpCisKKyAgICBlbnYgPSBOcG1FbnZpcm9ubWVudChkLCBjb25maWdzPW5wbV9nbG9iYWxfY29uZmlncyhkKSkKKworICAgIGRldiA9IGJiLnV0aWxzLnRvX2Jvb2xlYW4oZC5nZXRWYXIoIk5QTV9JTlNUQUxMX0RFViIpLCBGYWxzZSkKKworICAgIHdpdGggdGVtcGZpbGUuVGVtcG9yYXJ5RGlyZWN0b3J5KCkgYXMgdG1wZGlyOgorICAgICAgICBhcmdzID0gW10KKyAgICAgICAgY29uZmlncyA9IFtdCisKKyAgICAgICAgaWYgZGV2OgorICAgICAgICAgICAgY29uZmlncy5hcHBlbmQoKCJhbHNvIiwgImRldmVsb3BtZW50IikpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBjb25maWdzLmFwcGVuZCgoIm9ubHkiLCAicHJvZHVjdGlvbiIpKQorCisgICAgICAgICMgUmVwb3J0IGFzIG1hbnkgbG9ncyBhcyBwb3NzaWJsZSBmb3IgZGVidWdnaW5nIHB1cnBvc2UKKyAgICAgICAgY29uZmlncy5hcHBlbmQoKCJsb2dsZXZlbCIsICJzaWxseSIpKQorCisgICAgICAgICMgQ29uZmlndXJlIHRoZSBpbnN0YWxsYXRpb24gdG8gYmUgZG9uZSBnbG9iYWxseSBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5CisgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgiZ2xvYmFsIiwgInRydWUiKSkKKyAgICAgICAgY29uZmlncy5hcHBlbmQoKCJwcmVmaXgiLCBkLmdldFZhcigiTlBNX0JVSUxEIikpKQorCisgICAgICAgICMgQWRkIG5vZGUtZ3lwIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgY29uZmlncy5hcHBlbmQoKCJhcmNoIiwgZC5nZXRWYXIoIk5QTV9BUkNIIikpKQorICAgICAgICBjb25maWdzLmFwcGVuZCgoInJlbGVhc2UiLCAidHJ1ZSIpKQorICAgICAgICBzeXNyb290ID0gZC5nZXRWYXIoIlJFQ0lQRV9TWVNST09UX05BVElWRSIpCisgICAgICAgIG5vZGVkaXIgPSBvcy5wYXRoLmpvaW4oc3lzcm9vdCwgZC5nZXRWYXIoInByZWZpeF9uYXRpdmUiKS5zdHJpcCgiLyIpKQorICAgICAgICBjb25maWdzLmFwcGVuZCgoIm5vZGVkaXIiLCBub2RlZGlyKSkKKyAgICAgICAgYmluZGlyID0gb3MucGF0aC5qb2luKHN5c3Jvb3QsIGQuZ2V0VmFyKCJiaW5kaXJfbmF0aXZlIikuc3RyaXAoIi8iKSkKKyAgICAgICAgcHl0aG9uZGlyID0gb3MucGF0aC5qb2luKGJpbmRpciwgInB5dGhvbi1uYXRpdmUiLCAicHl0aG9uIikKKyAgICAgICAgY29uZmlncy5hcHBlbmQoKCJweXRob24iLCBweXRob25kaXIpKQorCisgICAgICAgICMgQWRkIG5vZGUtcHJlLWd5cCBjb25maWd1cmF0aW9uCisgICAgICAgIGFyZ3MuYXBwZW5kKCgidGFyZ2V0X2FyY2giLCBkLmdldFZhcigiTlBNX0FSQ0giKSkpCisgICAgICAgIGFyZ3MuYXBwZW5kKCgiYnVpbGQtZnJvbS1zb3VyY2UiLCAidHJ1ZSIpKQorCisgICAgICAgICMgUGFjayBhbmQgaW5zdGFsbCB0aGUgbWFpbiBwYWNrYWdlCisgICAgICAgIHRhcmJhbGwgPSBucG1fcGFjayhlbnYsIGQuZ2V0VmFyKCJOUE1fUEFDS0FHRSIpLCB0bXBkaXIpCisgICAgICAgIGVudi5ydW4oIm5wbSBpbnN0YWxsICVzIiAlIHNobGV4LnF1b3RlKHRhcmJhbGwpLCBhcmdzPWFyZ3MsIGNvbmZpZ3M9Y29uZmlncykKIH0KIAogbnBtX2RvX2luc3RhbGwoKSB7Ci0JIyBjaGFuZ2luZyB0aGUgaG9tZSBkaXJlY3RvcnkgdG8gdGhlIHdvcmtpbmcgZGlyZWN0b3J5LCB0aGUgLm5wbXJjIHdpbGwKLQkjIGJlIGNyZWF0ZWQgaW4gdGhpcyBkaXJlY3RvcnkKLQlleHBvcnQgSE9NRT0ke1dPUktESVJ9Ci0JbWtkaXIgLXAgJHtEfSR7bGliZGlyfS9ub2RlX21vZHVsZXMKLQlsb2NhbCBOUE1fUEFDS0ZJTEU9JChucG0gcGFjayAuKQotCW5wbSBpbnN0YWxsIC0tcHJlZml4ICR7RH0ke3ByZWZpeH0gLWcgLS1hcmNoPSR7TlBNX0FSQ0h9IC0tdGFyZ2V0X2FyY2g9JHtOUE1fQVJDSH0gLS1wcm9kdWN0aW9uIC0tbm8tcmVnaXN0cnkgJHtOUE1fUEFDS0ZJTEV9Ci0JbG4gLWZzIG5vZGVfbW9kdWxlcyAke0R9JHtsaWJkaXJ9L25vZGUKLQlmaW5kICR7RH0ke05QTV9JTlNUQUxMRElSfSAtdHlwZSBmIFwoIC1uYW1lICIqLmEiIC1vIC1uYW1lICIqLmQiIC1vIC1uYW1lICIqLm8iIFwpIC1kZWxldGUKLQlpZiBbIC1kICR7RH0ke3ByZWZpeH0vZXRjIF0gOyB0aGVuCi0JCSMgVGhpcyB3aWxsIGJlIGVtcHR5Ci0JCXJtZGlyICR7RH0ke3ByZWZpeH0vZXRjCi0JZmkKLX0KKyAgICAjIFN0ZXAgdGhyZWU6IGZpbmFsIGluc3RhbGwKKyAgICAjCisgICAgIyBUaGUgcHJldmlvdXMgaW5zdGFsbGF0aW9uIGhhdmUgdG8gYmUgZmlsdGVyZWQgdG8gcmVtb3ZlIHNvbWUgZXh0cmEgZmlsZXMuCiAKLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBpbnN0ZGlyID0gZC5leHBhbmQoJyR7RH0ke05QTV9JTlNUQUxMRElSfScpCi0gICAgZXh0cmFwYWNrYWdlcyA9IG9lLnBhY2thZ2UubnBtX3NwbGl0X3BhY2thZ2VfZGlycyhpbnN0ZGlyKQotICAgIHBrZ25hbWVzID0gZXh0cmFwYWNrYWdlcy5rZXlzKCkKLSAgICBkLnByZXBlbmRWYXIoJ1BBQ0tBR0VTJywgJyVzICcgJSAnICcuam9pbihwa2duYW1lcykpCi0gICAgZm9yIHBrZ25hbWUgaW4gcGtnbmFtZXM6Ci0gICAgICAgIHBrZ3JlbHBhdGgsIHBkYXRhID0gZXh0cmFwYWNrYWdlc1twa2duYW1lXQotICAgICAgICBwa2dwYXRoID0gJyR7TlBNX0lOU1RBTExESVJ9LycgKyBwa2dyZWxwYXRoCi0gICAgICAgICMgcGFja2FnZSBuYW1lcyBjYW4ndCBoYXZlIHVuZGVyc2NvcmVzIGJ1dCBucG0gcGFja2FnZXMgc29tZXRpbWVzIHVzZSB0aGVtCi0gICAgICAgIG9lX3BrZ19uYW1lID0gcGtnbmFtZS5yZXBsYWNlKCdfJywgJy0nKQotICAgICAgICBleHBhbmRlZF9wa2duYW1lID0gZC5leHBhbmQob2VfcGtnX25hbWUpCi0gICAgICAgIGQuc2V0VmFyKCdGSUxFU18lcycgJSBleHBhbmRlZF9wa2duYW1lLCBwa2dwYXRoKQotICAgICAgICBpZiBwZGF0YToKLSAgICAgICAgICAgIHZlcnNpb24gPSBwZGF0YS5nZXQoJ3ZlcnNpb24nLCBOb25lKQotICAgICAgICAgICAgaWYgdmVyc2lvbjoKLSAgICAgICAgICAgICAgICBkLnNldFZhcignUEtHVl8lcycgJSBleHBhbmRlZF9wa2duYW1lLCB2ZXJzaW9uKQotICAgICAgICAgICAgZGVzY3JpcHRpb24gPSBwZGF0YS5nZXQoJ2Rlc2NyaXB0aW9uJywgTm9uZSkKLSAgICAgICAgICAgIGlmIGRlc2NyaXB0aW9uOgotICAgICAgICAgICAgICAgIGQuc2V0VmFyKCdTVU1NQVJZXyVzJyAlIGV4cGFuZGVkX3BrZ25hbWUsIGRlc2NyaXB0aW9uLnJlcGxhY2UodSJcdTIwMTgiLCAiJyIpLnJlcGxhY2UodSJcdTIwMTkiLCAiJyIpKQotICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18lcycgJSBkLmdldFZhcignUE4nKSwgJyAlcycgJSAnICcuam9pbihwa2duYW1lcykucmVwbGFjZSgnXycsICctJykpCisgICAgcm0gLXJmICR7RH0KKworICAgICMgQ29weSB0aGUgZW50aXJlIGxpYiBhbmQgYmluIGRpcmVjdG9yaWVzCisgICAgaW5zdGFsbCAtZCAke0R9LyR7bm9uYXJjaF9saWJkaXJ9CisgICAgY3AgLS1uby1wcmVzZXJ2ZT1vd25lcnNoaXAgLS1yZWN1cnNpdmUgJHtOUE1fQlVJTER9L2xpYi8uICR7RH0vJHtub25hcmNoX2xpYmRpcn0KKworICAgIGlmIFsgLWQgIiR7TlBNX0JVSUxEfS9iaW4iIF0KKyAgICB0aGVuCisgICAgICAgIGluc3RhbGwgLWQgJHtEfS8ke2JpbmRpcn0KKyAgICAgICAgY3AgLS1uby1wcmVzZXJ2ZT1vd25lcnNoaXAgLS1yZWN1cnNpdmUgJHtOUE1fQlVJTER9L2Jpbi8uICR7RH0vJHtiaW5kaXJ9CisgICAgZmkKKworICAgICMgSWYgdGhlIHBhY2thZ2UgKG9yIGl0cyBkZXBlbmRlbmNpZXMpIHVzZXMgbm9kZS1neXAgdG8gYnVpbGQgbmF0aXZlIGFkZG9ucywKKyAgICAjIG9iamVjdCBmaWxlcywgc3RhdGljIGxpYnJhcmllcyBvciBvdGhlciB0ZW1wb3JhcnkgZmlsZXMgY2FuIGJlIGhpZGRlbiBpbgorICAgICMgdGhlIGxpYiBkaXJlY3RvcnkuIFRvIHJlZHVjZSB0aGUgcGFja2FnZSBzaXplIGFuZCB0byBhdm9pZCBRQSBpc3N1ZXMKKyAgICAjIChzdGF0aWNkZXYgd2l0aCBzdGF0aWMgbGlicmFyeSBmaWxlcykgdGhlc2UgZmlsZXMgbXVzdCBiZSByZW1vdmVkLgorICAgIGxvY2FsIEdZUF9SRUdFWD0iLiovYnVpbGQvUmVsZWFzZS9bXi9dKi5ub2RlIgorCisgICAgIyBSZW1vdmUgYW55IG5vZGUtZ3lwIGRpcmVjdG9yeSBpbiAke0R9IHRvIHJlbW92ZSB0ZW1wb3JhcnkgYnVpbGQgZmlsZXMKKyAgICBmb3IgR1lQX0RfRklMRSBpbiAkKGZpbmQgJHtEfSAtcmVnZXggIiR7R1lQX1JFR0VYfSIpCisgICAgZG8KKyAgICAgICAgbG9jYWwgR1lQX0RfRElSPSR7R1lQX0RfRklMRSUvUmVsZWFzZS8qfQorCisgICAgICAgIHJtIC0tcmVjdXJzaXZlIC0tZm9yY2UgJHtHWVBfRF9ESVJ9CisgICAgZG9uZQorCisgICAgIyBDb3B5IG9ubHkgdGhlIG5vZGUtZ3lwIHJlbGVhc2UgZmlsZXMKKyAgICBmb3IgR1lQX0JfRklMRSBpbiAkKGZpbmQgJHtOUE1fQlVJTER9IC1yZWdleCAiJHtHWVBfUkVHRVh9IikKKyAgICBkbworICAgICAgICBsb2NhbCBHWVBfRF9GSUxFPSR7RH0vJHtwcmVmaXh9LyR7R1lQX0JfRklMRSMke05QTV9CVUlMRH19CisKKyAgICAgICAgaW5zdGFsbCAtZCAke0dZUF9EX0ZJTEUlLyp9CisgICAgICAgIGluc3RhbGwgLW0gNzU1ICR7R1lQX0JfRklMRX0gJHtHWVBfRF9GSUxFfQorICAgIGRvbmUKKworICAgICMgUmVtb3ZlIHRoZSBzaHJpbmt3cmFwIGZpbGUgd2hpY2ggZG9lcyBub3QgbmVlZCB0byBiZSBwYWNrZWQKKyAgICBybSAtZiAke0R9LyR7bm9uYXJjaF9saWJkaXJ9L25vZGVfbW9kdWxlcy8qL25wbS1zaHJpbmt3cmFwLmpzb24KKyAgICBybSAtZiAke0R9LyR7bm9uYXJjaF9saWJkaXJ9L25vZGVfbW9kdWxlcy9AKi8qL25wbS1zaHJpbmt3cmFwLmpzb24KKworICAgICMgbm9kZSgxKSBpcyB1c2luZyAvdXNyL2xpYi9ub2RlIGFzIGRlZmF1bHQgaW5jbHVkZSBkaXJlY3RvcnkgYW5kIG5wbSgxKSBpcworICAgICMgdXNpbmcgL3Vzci9saWIvbm9kZV9tb2R1bGVzIGFzIGluc3RhbGwgZGlyZWN0b3J5LiBMZXQncyBtYWtlIGJvdGggaGFwcHkuCisgICAgbG4gLWZzIG5vZGVfbW9kdWxlcyAke0R9LyR7bm9uYXJjaF9saWJkaXJ9L25vZGUKIH0KIAogRklMRVNfJHtQTn0gKz0gIiBcCiAgICAgJHtiaW5kaXJ9IFwKLSAgICAke2xpYmRpcn0vbm9kZSBcCi0gICAgJHtOUE1fSU5TVEFMTERJUn0gXAorICAgICR7bm9uYXJjaF9saWJkaXJ9IFwKICIKIAotRVhQT1JUX0ZVTkNUSU9OUyBkb19jb21waWxlIGRvX2luc3RhbGwKK0VYUE9SVF9GVU5DVElPTlMgZG9fY29uZmlndXJlIGRvX2NvbXBpbGUgZG9faW5zdGFsbApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZS5iYmNsYXNzCmluZGV4IGUwZDZmZjYuLjBiNWNmNDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlLmJiY2xhc3MKQEAgLTI0NSw2ICsyNDUsOCBAQAogICAgICAgICBkZXBzID0gIiIKICAgICAgICAgZm9yIGRlcCBpbiAoZC5nZXRWYXIoJ1BBQ0tBR0VfREVQRU5EUycpIG9yICIiKS5zcGxpdCgpOgogICAgICAgICAgICAgZGVwcyArPSAiICVzOmRvX3BvcHVsYXRlX3N5c3Jvb3QiICUgZGVwCisgICAgICAgIGlmIGQuZ2V0VmFyKCdQQUNLQUdFX01JTklERUJVR0lORk8nKSA9PSAnMSc6CisgICAgICAgICAgICBkZXBzICs9ICcgeHotbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnCiAgICAgICAgIGQuYXBwZW5kVmFyRmxhZygnZG9fcGFja2FnZScsICdkZXBlbmRzJywgZGVwcykKIAogICAgICAgICAjIHNobGlicyByZXF1aXJlcyBhbnkgREVQRU5EUyB0byBoYXZlIGFscmVhZHkgcGFja2FnZWQgZm9yIHRoZSAqLmxpc3QgZmlsZXMKQEAgLTQxNiw2ICs0MTgsMTI2IEBACiAKICAgICByZXR1cm4gKGZpbGUsIHNvdXJjZXMpCiAKK2RlZiBzcGxpdHN0YXRpY2RlYnVnaW5mbyhmaWxlLCBkdmFyLCBkZWJ1Z3N0YXRpY2RpciwgZGVidWdzdGF0aWNsaWJkaXIsIGRlYnVnc3RhdGljYXBwZW5kLCBkZWJ1Z3NyY2RpciwgZCk6CisgICAgIyBVbmxpa2UgdGhlIGZ1bmN0aW9uIGFib3ZlLCB0aGVyZSBpcyBubyB3YXkgdG8gc3BsaXQgYSBzdGF0aWMgbGlicmFyeQorICAgICMgdHdvIGNvbXBvbmVudHMuICBTbyB0byBnZXQgc2ltaWxhciByZXN1bHRzIHdlIHdpbGwgY29weSB0aGUgdW5tb2RpZmllZAorICAgICMgc3RhdGljIGxpYnJhcnkgKGNvbnRhaW5pbmcgdGhlIGRlYnVnIHN5bWJvbHMpIGludG8gYSBuZXcgZGlyZWN0b3J5LgorICAgICMgV2Ugd2lsbCB0aGVuIHN0cmlwIChwcmVzZXJ2aW5nIHN5bWJvbHMpIHRoZSBzdGF0aWMgbGlicmFyeSBpbiB0aGUKKyAgICAjIHR5cGljYWwgbG9jYXRpb24uCisgICAgIworICAgICMgcmV0dXJuIGEgbWFwcGluZyBvZiBmaWxlczpkZWJ1Z3NvdXJjZXMKKworICAgIGltcG9ydCBzdGF0CisgICAgaW1wb3J0IHNodXRpbAorCisgICAgc3JjID0gZmlsZVtsZW4oZHZhcik6XQorICAgIGRlc3QgPSBkZWJ1Z3N0YXRpY2xpYmRpciArIG9zLnBhdGguZGlybmFtZShzcmMpICsgZGVidWdzdGF0aWNkaXIgKyAiLyIgKyBvcy5wYXRoLmJhc2VuYW1lKHNyYykgKyBkZWJ1Z3N0YXRpY2FwcGVuZAorICAgIGRlYnVnZmlsZSA9IGR2YXIgKyBkZXN0CisgICAgc291cmNlcyA9IFtdCisKKyAgICAjIENvcHkgdGhlIGZpbGUuLi4KKyAgICBiYi51dGlscy5ta2RpcmhpZXIob3MucGF0aC5kaXJuYW1lKGRlYnVnZmlsZSkpCisgICAgI2JiLm5vdGUoIkNvcHkgJXMgLT4gJXMiICUgKGZpbGUsIGRlYnVnZmlsZSkpCisKKyAgICBkdmFyID0gZC5nZXRWYXIoJ1BLR0QnKQorCisgICAgbmV3bW9kZSA9IE5vbmUKKyAgICBpZiBub3Qgb3MuYWNjZXNzKGZpbGUsIG9zLldfT0spIG9yIG9zLmFjY2VzcyhmaWxlLCBvcy5SX09LKToKKyAgICAgICAgb3JpZ21vZGUgPSBvcy5zdGF0KGZpbGUpW3N0YXQuU1RfTU9ERV0KKyAgICAgICAgbmV3bW9kZSA9IG9yaWdtb2RlIHwgc3RhdC5TX0lXUklURSB8IHN0YXQuU19JUkVBRAorICAgICAgICBvcy5jaG1vZChmaWxlLCBuZXdtb2RlKQorCisgICAgIyBXZSBuZWVkIHRvIGV4dHJhY3QgdGhlIGRlYnVnIHNyYyBpbmZvcm1hdGlvbiBoZXJlLi4uCisgICAgaWYgZGVidWdzcmNkaXI6CisgICAgICAgIHNvdXJjZXMgPSBzb3VyY2VfaW5mbyhmaWxlLCBkKQorCisgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShkZWJ1Z2ZpbGUpKQorCisgICAgIyBDb3B5IHRoZSB1bm1vZGlmaWVkIGl0ZW0gdG8gdGhlIGRlYnVnIGRpcmVjdG9yeQorICAgIHNodXRpbC5jb3B5MihmaWxlLCBkZWJ1Z2ZpbGUpCisKKyAgICBpZiBuZXdtb2RlOgorICAgICAgICBvcy5jaG1vZChmaWxlLCBvcmlnbW9kZSkKKworICAgIHJldHVybiAoZmlsZSwgc291cmNlcykKKworZGVmIGluamVjdF9taW5pZGVidWdpbmZvKGZpbGUsIGR2YXIsIGRlYnVnZGlyLCBkZWJ1Z2xpYmRpciwgZGVidWdhcHBlbmQsIGRlYnVnc3JjZGlyLCBkKToKKyAgICAjIEV4dHJhY3QganVzdCB0aGUgc3ltYm9scyBmcm9tIGRlYnVnaW5mbyBpbnRvIG1pbmlkZWJ1Z2luZm8sCisgICAgIyBjb21wcmVzcyBpdCB3aXRoIHh6IGFuZCBpbmplY3QgaXQgYmFjayBpbnRvIHRoZSBiaW5hcnkgaW4gYSAuZ251X2RlYnVnZGF0YSBzZWN0aW9uLgorICAgICMgaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9nZGIvb25saW5lZG9jcy9nZGIvTWluaURlYnVnSW5mby5odG1sCisKKyAgICBpbXBvcnQgc3VicHJvY2VzcworCisgICAgcmVhZGVsZiA9IGQuZ2V0VmFyKCdSRUFERUxGJykKKyAgICBubSA9IGQuZ2V0VmFyKCdOTScpCisgICAgb2JqY29weSA9IGQuZ2V0VmFyKCdPQkpDT1BZJykKKworICAgIG1pbmlkZWJ1Z2luZm9kaXIgPSBkLmV4cGFuZCgnJHtXT1JLRElSfS9taW5pZGVidWdpbmZvJykKKworICAgIHNyYyA9IGZpbGVbbGVuKGR2YXIpOl0KKyAgICBkZXN0ID0gZGVidWdsaWJkaXIgKyBvcy5wYXRoLmRpcm5hbWUoc3JjKSArIGRlYnVnZGlyICsgIi8iICsgb3MucGF0aC5iYXNlbmFtZShzcmMpICsgZGVidWdhcHBlbmQKKyAgICBkZWJ1Z2ZpbGUgPSBkdmFyICsgZGVzdAorICAgIG1pbmlkZWJ1Z2ZpbGUgPSBtaW5pZGVidWdpbmZvZGlyICsgc3JjICsgJy5taW5pZGVidWcnCisgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShtaW5pZGVidWdmaWxlKSkKKworICAgICMgSWYgd2UgZGlkbid0IHByb2R1Y2UgZGVidWdpbmZvIGZvciBhbnkgcmVhc29uLCB3ZSBjYW4ndCBwcm9kdWNlIG1pbmlkZWJ1Z2luZm8gZWl0aGVyCisgICAgIyBzbyBza2lwIGl0LgorICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhkZWJ1Z2ZpbGUpOgorICAgICAgICBiYi5kZWJ1ZygxLCAnRUxGIGZpbGUge30gaGFzIG5vIGRlYnVnaW5mbywgc2tpcHBpbmcgbWluaWRlYnVnaW5mbyBpbmplY3Rpb24nLmZvcm1hdChmaWxlKSkKKyAgICAgICAgcmV0dXJuCisKKyAgICAjIEZpbmQgbm9uLWFsbG9jYXRlZCBQUk9HQklUUywgTk9URSwgYW5kIE5PQklUUyBzZWN0aW9ucyBpbiB0aGUgZGVidWdpbmZvLgorICAgICMgV2Ugd2lsbCBleGNsdWRlIGFsbCBvZiB0aGVzZSBmcm9tIG1pbmlkZWJ1Z2luZm8gdG8gc2F2ZSBzcGFjZS4KKyAgICByZW1vdmVfc2VjdGlvbl9uYW1lcyA9IFtdCisgICAgZm9yIGxpbmUgaW4gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoW3JlYWRlbGYsICctVycsICctUycsIGRlYnVnZmlsZV0sIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKS5zcGxpdGxpbmVzKCk6CisgICAgICAgIGZpZWxkcyA9IGxpbmUuc3BsaXQoKQorICAgICAgICBpZiBsZW4oZmllbGRzKSA8IDg6CisgICAgICAgICAgICBjb250aW51ZQorICAgICAgICBuYW1lID0gZmllbGRzWzBdCisgICAgICAgIHR5cGUgPSBmaWVsZHNbMV0KKyAgICAgICAgZmxhZ3MgPSBmaWVsZHNbN10KKyAgICAgICAgIyAuZGVidWdfIHNlY3Rpb25zIHdpbGwgYmUgcmVtb3ZlZCBieSBvYmpjb3B5IC1TIHNvIG5vIG5lZWQgdG8gZXhwbGljaXRseSByZW1vdmUgdGhlbQorICAgICAgICBpZiBuYW1lLnN0YXJ0c3dpdGgoJy5kZWJ1Z18nKToKKyAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgIGlmICdBJyBub3QgaW4gZmxhZ3MgYW5kIHR5cGUgaW4gWydQUk9HQklUUycsICdOT1RFJywgJ05PQklUUyddOgorICAgICAgICAgICAgcmVtb3ZlX3NlY3Rpb25fbmFtZXMuYXBwZW5kKG5hbWUpCisKKyAgICAjIExpc3QgZHluYW1pYyBzeW1ib2xzIGluIHRoZSBiaW5hcnkuIFdlIGNhbiBleGNsdWRlIHRoZXNlIGZyb20gbWluaWRlYnVnaW5mbworICAgICMgYmVjYXVzZSB0aGV5IGFyZSBhbHdheXMgcHJlc2VudCBpbiB0aGUgYmluYXJ5LgorICAgIGR5bnN5bXMgPSBzZXQoKQorICAgIGZvciBsaW5lIGluIHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtubSwgJy1EJywgZmlsZSwgJy0tZm9ybWF0PXBvc2l4JywgJy0tZGVmaW5lZC1vbmx5J10sIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKS5zcGxpdGxpbmVzKCk6CisgICAgICAgIGR5bnN5bXMuYWRkKGxpbmUuc3BsaXQoKVswXSkKKworICAgICMgRmluZCBhbGwgZnVuY3Rpb24gc3ltYm9scyBmcm9tIGRlYnVnaW5mbyB3aGljaCBhcmVuJ3QgaW4gdGhlIGR5bmFtaWMgc3ltYm9scyB0YWJsZS4KKyAgICAjIFRoZXNlIGFyZSB0aGUgb25lcyB3ZSB3YW50IHRvIGtlZXAgaW4gbWluaWRlYnVnaW5mby4KKyAgICBrZWVwX3N5bWJvbHNfZmlsZSA9IG1pbmlkZWJ1Z2ZpbGUgKyAnLnN5bWxpc3QnCisgICAgZm91bmRfYW55X3N5bWJvbHMgPSBGYWxzZQorICAgIHdpdGggb3BlbihrZWVwX3N5bWJvbHNfZmlsZSwgJ3cnKSBhcyBmOgorICAgICAgICBmb3IgbGluZSBpbiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbbm0sIGRlYnVnZmlsZSwgJy0tZm9ybWF0PXN5c3YnLCAnLS1kZWZpbmVkLW9ubHknXSwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpLnNwbGl0bGluZXMoKToKKyAgICAgICAgICAgIGZpZWxkcyA9IGxpbmUuc3BsaXQoJ3wnKQorICAgICAgICAgICAgaWYgbGVuKGZpZWxkcykgPCA3OgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBuYW1lID0gZmllbGRzWzBdLnN0cmlwKCkKKyAgICAgICAgICAgIHR5cGUgPSBmaWVsZHNbM10uc3RyaXAoKQorICAgICAgICAgICAgaWYgdHlwZSA9PSAnRlVOQycgYW5kIG5hbWUgbm90IGluIGR5bnN5bXM6CisgICAgICAgICAgICAgICAgZi53cml0ZSgne31cbicuZm9ybWF0KG5hbWUpKQorICAgICAgICAgICAgICAgIGZvdW5kX2FueV9zeW1ib2xzID0gVHJ1ZQorCisgICAgaWYgbm90IGZvdW5kX2FueV9zeW1ib2xzOgorICAgICAgICBiYi5kZWJ1ZygxLCAnRUxGIGZpbGUge30gY29udGFpbnMgbm8gc3ltYm9scywgc2tpcHBpbmcgbWluaWRlYnVnaW5mbyBpbmplY3Rpb24nLmZvcm1hdChmaWxlKSkKKyAgICAgICAgcmV0dXJuCisKKyAgICBiYi51dGlscy5yZW1vdmUobWluaWRlYnVnZmlsZSkKKyAgICBiYi51dGlscy5yZW1vdmUobWluaWRlYnVnZmlsZSArICcueHonKQorCisgICAgc3VicHJvY2Vzcy5jaGVja19jYWxsKFtvYmpjb3B5LCAnLVMnXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsnLS1yZW1vdmUtc2VjdGlvbj17fScuZm9ybWF0KHMpIGZvciBzIGluIHJlbW92ZV9zZWN0aW9uX25hbWVzXSArCisgICAgICAgICAgICAgICAgICAgICAgICAgIFsnLS1rZWVwLXN5bWJvbHM9e30nLmZvcm1hdChrZWVwX3N5bWJvbHNfZmlsZSksIGRlYnVnZmlsZSwgbWluaWRlYnVnZmlsZV0pCisKKyAgICBzdWJwcm9jZXNzLmNoZWNrX2NhbGwoWyd4eicsICctLWtlZXAnLCBtaW5pZGVidWdmaWxlXSkKKworICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbb2JqY29weSwgJy0tYWRkLXNlY3Rpb24nLCAnLmdudV9kZWJ1Z2RhdGE9e30ueHonLmZvcm1hdChtaW5pZGVidWdmaWxlKSwgZmlsZV0pCisKIGRlZiBjb3B5ZGVidWdzb3VyY2VzKGRlYnVnc3JjZGlyLCBzb3VyY2VzLCBkKToKICAgICAjIFRoZSBkZWJ1ZyBzcmMgaW5mb3JtYXRpb24gd3JpdHRlbiBvdXQgdG8gc291cmNlZmlsZSBpcyBmdXJ0aGVyIHByb2Nlc3NlZAogICAgICMgYW5kIGNvcGllZCB0byB0aGUgZGVzdGluYXRpb24gaGVyZS4KQEAgLTQ5Miw3ICs2MTQsNyBAQAogIyBQYWNrYWdlIGRhdGEgaGFuZGxpbmcgcm91dGluZXMKICMKIAotZGVmIGdldF9wYWNrYWdlX21hcHBpbmcgKHBrZywgYmFzZXBrZywgZCk6CitkZWYgZ2V0X3BhY2thZ2VfbWFwcGluZyAocGtnLCBiYXNlcGtnLCBkLCBkZXB2ZXJzaW9ucz1Ob25lKToKICAgICBpbXBvcnQgb2UucGFja2FnZWRhdGEKIAogICAgIGRhdGEgPSBvZS5wYWNrYWdlZGF0YS5yZWFkX3N1YnBrZ2RhdGEocGtnLCBkKQpAQCAtNTAzLDYgKzYyNSwxNCBAQAogICAgICAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdhbGxhcmNoJywgZCkgYW5kIG5vdCBkLmdldFZhcignTVVMVElMSUJfVkFSSUFOVFMnKSBcCiAgICAgICAgICAgICBhbmQgZGF0YVtrZXldID09IGJhc2Vwa2c6CiAgICAgICAgICAgICByZXR1cm4gcGtnCisgICAgICAgIGlmIGRlcHZlcnNpb25zID09IFtdOgorICAgICAgICAgICAgIyBBdm9pZCByZXR1cm5pbmcgYSBtYXBwaW5nIGlmIHRoZSByZW5hbWVkIHBhY2thZ2UgcnByb3ZpZGVzIGl0cyBvcmlnaW5hbCBuYW1lCisgICAgICAgICAgICBycHJvdmtleSA9ICJSUFJPVklERVNfJXMiICUgcGtnCisgICAgICAgICAgICBpZiBycHJvdmtleSBpbiBkYXRhOgorICAgICAgICAgICAgICAgIGlmIHBrZyBpbiBiYi51dGlscy5leHBsb2RlX2RlcF92ZXJzaW9uczIoZGF0YVtycHJvdmtleV0pOgorICAgICAgICAgICAgICAgICAgICBiYi5ub3RlKCIlcyBycHJvdmlkZXMgJXMsIG5vdCByZXBsYWNpbmcgdGhlIGxhdHRlciIgJSAoZGF0YVtrZXldLCBwa2cpKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcGtnCisgICAgICAgICMgRG8gbWFwIHRvIHJld3JpdHRlbiBwYWNrYWdlIG5hbWUKICAgICAgICAgcmV0dXJuIGRhdGFba2V5XQogCiAgICAgcmV0dXJuIHBrZwpAQCAtNTIzLDggKzY1MywxMCBAQAogCiAgICAgbmV3X2RlcGVuZHMgPSB7fQogICAgIGRlcHMgPSBiYi51dGlscy5leHBsb2RlX2RlcF92ZXJzaW9uczIoZC5nZXRWYXIodmFybmFtZSkgb3IgIiIpCi0gICAgZm9yIGRlcGVuZCBpbiBkZXBzOgotICAgICAgICBuZXdfZGVwZW5kID0gZ2V0X3BhY2thZ2VfbWFwcGluZyhkZXBlbmQsIHBrZywgZCkKKyAgICBmb3IgZGVwZW5kLCBkZXB2ZXJzaW9ucyBpbiBkZXBzLml0ZW1zKCk6CisgICAgICAgIG5ld19kZXBlbmQgPSBnZXRfcGFja2FnZV9tYXBwaW5nKGRlcGVuZCwgcGtnLCBkLCBkZXB2ZXJzaW9ucykKKyAgICAgICAgaWYgZGVwZW5kICE9IG5ld19kZXBlbmQ6CisgICAgICAgICAgICBiYi5ub3RlKCJwYWNrYWdlIG5hbWUgbWFwcGluZyBkb25lOiAlcyAtPiAlcyIgJSAoZGVwZW5kLCBuZXdfZGVwZW5kKSkKICAgICAgICAgbmV3X2RlcGVuZHNbbmV3X2RlcGVuZF0gPSBkZXBzW2RlcGVuZF0KIAogICAgIGQuc2V0VmFyKHZhcm5hbWUsIGJiLnV0aWxzLmpvaW5fZGVwcyhuZXdfZGVwZW5kcywgY29tbWFzZXA9RmFsc2UpKQpAQCAtOTE2LDI1ICsxMDQ4LDM3IEBACiAgICAgaWYgZC5nZXRWYXIoJ1BBQ0tBR0VfREVCVUdfU1BMSVRfU1RZTEUnKSA9PSAnZGVidWctZmlsZS1kaXJlY3RvcnknOgogICAgICAgICAjIFNpbmdsZSBkZWJ1Zy1maWxlLWRpcmVjdG9yeSBzdHlsZSBkZWJ1ZyBpbmZvCiAgICAgICAgIGRlYnVnYXBwZW5kID0gIi5kZWJ1ZyIKKyAgICAgICAgZGVidWdzdGF0aWNhcHBlbmQgPSAiIgogICAgICAgICBkZWJ1Z2RpciA9ICIiCisgICAgICAgIGRlYnVnc3RhdGljZGlyID0gIiIKICAgICAgICAgZGVidWdsaWJkaXIgPSAiL3Vzci9saWIvZGVidWciCisgICAgICAgIGRlYnVnc3RhdGljbGliZGlyID0gIi91c3IvbGliL2RlYnVnLXN0YXRpYyIKICAgICAgICAgZGVidWdzcmNkaXIgPSAiL3Vzci9zcmMvZGVidWciCiAgICAgZWxpZiBkLmdldFZhcignUEFDS0FHRV9ERUJVR19TUExJVF9TVFlMRScpID09ICdkZWJ1Zy13aXRob3V0LXNyYyc6CiAgICAgICAgICMgT3JpZ2luYWwgT0UtY29yZSwgYS5rLmEuICIuZGVidWciLCBzdHlsZSBkZWJ1ZyBpbmZvLCBidXQgd2l0aG91dCBzb3VyY2VzIGluIC91c3Ivc3JjL2RlYnVnCiAgICAgICAgIGRlYnVnYXBwZW5kID0gIiIKKyAgICAgICAgZGVidWdzdGF0aWNhcHBlbmQgPSAiIgogICAgICAgICBkZWJ1Z2RpciA9ICIvLmRlYnVnIgorICAgICAgICBkZWJ1Z3N0YXRpY2RpciA9ICIvLmRlYnVnLXN0YXRpYyIKICAgICAgICAgZGVidWdsaWJkaXIgPSAiIgorICAgICAgICBkZWJ1Z3N0YXRpY2xpYmRpciA9ICIiCiAgICAgICAgIGRlYnVnc3JjZGlyID0gIiIKICAgICBlbGlmIGQuZ2V0VmFyKCdQQUNLQUdFX0RFQlVHX1NQTElUX1NUWUxFJykgPT0gJ2RlYnVnLXdpdGgtc3JjcGtnJzoKICAgICAgICAgZGVidWdhcHBlbmQgPSAiIgorICAgICAgICBkZWJ1Z3N0YXRpY2FwcGVuZCA9ICIiCiAgICAgICAgIGRlYnVnZGlyID0gIi8uZGVidWciCisgICAgICAgIGRlYnVnc3RhdGljZGlyID0gIi8uZGVidWctc3RhdGljIgogICAgICAgICBkZWJ1Z2xpYmRpciA9ICIiCisgICAgICAgIGRlYnVnc3RhdGljbGliZGlyID0gIiIKICAgICAgICAgZGVidWdzcmNkaXIgPSAiL3Vzci9zcmMvZGVidWciCiAgICAgZWxzZToKICAgICAgICAgIyBPcmlnaW5hbCBPRS1jb3JlLCBhLmsuYS4gIi5kZWJ1ZyIsIHN0eWxlIGRlYnVnIGluZm8KICAgICAgICAgZGVidWdhcHBlbmQgPSAiIgorICAgICAgICBkZWJ1Z3N0YXRpY2FwcGVuZCA9ICIiCiAgICAgICAgIGRlYnVnZGlyID0gIi8uZGVidWciCisgICAgICAgIGRlYnVnc3RhdGljZGlyID0gIi8uZGVidWctc3RhdGljIgogICAgICAgICBkZWJ1Z2xpYmRpciA9ICIiCisgICAgICAgIGRlYnVnc3RhdGljbGliZGlyID0gIiIKICAgICAgICAgZGVidWdzcmNkaXIgPSAiL3Vzci9zcmMvZGVidWciCiAKICAgICAjCkBAIC05NTUsMTIgKzEwOTksNiBAQAogICAgICAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gY3BhdGgud2FsayhkdmFyKToKICAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgogICAgICAgICAgICAgICAgIGZpbGUgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZikKLSAgICAgICAgICAgICAgICBpZiBmaWxlLmVuZHN3aXRoKCIua28iKSBhbmQgZmlsZS5maW5kKCIvbGliL21vZHVsZXMvIikgIT0gLTE6Ci0gICAgICAgICAgICAgICAgICAgIGtlcm5tb2RzLmFwcGVuZChmaWxlKQotICAgICAgICAgICAgICAgICAgICBjb250aW51ZQotICAgICAgICAgICAgICAgIGlmIG9lLnBhY2thZ2UuaXNfc3RhdGljX2xpYihmaWxlKToKLSAgICAgICAgICAgICAgICAgICAgc3RhdGljbGlicy5hcHBlbmQoZmlsZSkKLSAgICAgICAgICAgICAgICAgICAgY29udGludWUKIAogICAgICAgICAgICAgICAgICMgU2tpcCBkZWJ1ZyBmaWxlcwogICAgICAgICAgICAgICAgIGlmIGRlYnVnYXBwZW5kIGFuZCBmaWxlLmVuZHN3aXRoKGRlYnVnYXBwZW5kKToKQEAgLTk3MSw2ICsxMTA5LDEzIEBACiAgICAgICAgICAgICAgICAgaWYgZmlsZSBpbiBza2lwZmlsZXM6CiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKKyAgICAgICAgICAgICAgICBpZiBmaWxlLmVuZHN3aXRoKCIua28iKSBhbmQgZmlsZS5maW5kKCIvbGliL21vZHVsZXMvIikgIT0gLTE6CisgICAgICAgICAgICAgICAgICAgIGtlcm5tb2RzLmFwcGVuZChmaWxlKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorICAgICAgICAgICAgICAgIGlmIG9lLnBhY2thZ2UuaXNfc3RhdGljX2xpYihmaWxlKToKKyAgICAgICAgICAgICAgICAgICAgc3RhdGljbGlicy5hcHBlbmQoZmlsZSkKKyAgICAgICAgICAgICAgICAgICAgY29udGludWUKKwogICAgICAgICAgICAgICAgIHRyeToKICAgICAgICAgICAgICAgICAgICAgbHRhcmdldCA9IGNwYXRoLnJlYWxwYXRoKGZpbGUsIGR2YXIsIEZhbHNlKQogICAgICAgICAgICAgICAgICAgICBzID0gY3BhdGgubHN0YXQobHRhcmdldCkKQEAgLTEwNTAsOCArMTE5NSwxMSBAQAogICAgICAgICByZXN1bHRzID0gb2UudXRpbHMubXVsdGlwcm9jZXNzX2xhdW5jaChzcGxpdGRlYnVnaW5mbywgbGlzdChlbGZmaWxlcyksIGQsIGV4dHJhYXJncz0oZHZhciwgZGVidWdkaXIsIGRlYnVnbGliZGlyLCBkZWJ1Z2FwcGVuZCwgZGVidWdzcmNkaXIsIGQpKQogCiAgICAgICAgIGlmIGRlYnVnc3JjZGlyIGFuZCBub3QgdGFyZ2V0b3Muc3RhcnRzd2l0aCgibWluZ3ciKToKLSAgICAgICAgICAgIGZvciBmaWxlIGluIHN0YXRpY2xpYnM6Ci0gICAgICAgICAgICAgICAgcmVzdWx0cy5leHRlbmQoc291cmNlX2luZm8oZmlsZSwgZCwgZmF0YWw9RmFsc2UpKQorICAgICAgICAgICAgaWYgKGQuZ2V0VmFyKCdQQUNLQUdFX0RFQlVHX1NUQVRJQ19TUExJVCcpID09ICcxJyk6CisgICAgICAgICAgICAgICAgcmVzdWx0cyA9IG9lLnV0aWxzLm11bHRpcHJvY2Vzc19sYXVuY2goc3BsaXRzdGF0aWNkZWJ1Z2luZm8sIHN0YXRpY2xpYnMsIGQsIGV4dHJhYXJncz0oZHZhciwgZGVidWdzdGF0aWNkaXIsIGRlYnVnc3RhdGljbGliZGlyLCBkZWJ1Z3N0YXRpY2FwcGVuZCwgZGVidWdzcmNkaXIsIGQpKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBmb3IgZmlsZSBpbiBzdGF0aWNsaWJzOgorICAgICAgICAgICAgICAgICAgICByZXN1bHRzLmFwcGVuZCggKGZpbGUsc291cmNlX2luZm8oZmlsZSwgZCkpICkKIAogICAgICAgICBzb3VyY2VzID0gc2V0KCkKICAgICAgICAgZm9yIHIgaW4gcmVzdWx0czoKQEAgLTExMjAsOSArMTI2OCwxNyBAQAogICAgICAgICAgICAgc2ZpbGVzLmFwcGVuZCgoZmlsZSwgZWxmX2ZpbGUsIHN0cmlwKSkKICAgICAgICAgZm9yIGYgaW4ga2Vybm1vZHM6CiAgICAgICAgICAgICBzZmlsZXMuYXBwZW5kKChmLCAxNiwgc3RyaXApKQorICAgICAgICBpZiAoZC5nZXRWYXIoJ1BBQ0tBR0VfU1RSSVBfU1RBVElDJykgPT0gJzEnIG9yIGQuZ2V0VmFyKCdQQUNLQUdFX0RFQlVHX1NUQVRJQ19TUExJVCcpID09ICcxJyk6CisgICAgICAgICAgICBmb3IgZiBpbiBzdGF0aWNsaWJzOgorICAgICAgICAgICAgICAgIHNmaWxlcy5hcHBlbmQoKGYsIDE2LCBzdHJpcCkpCiAKICAgICAgICAgb2UudXRpbHMubXVsdGlwcm9jZXNzX2xhdW5jaChvZS5wYWNrYWdlLnJ1bnN0cmlwLCBzZmlsZXMsIGQpCiAKKyAgICAjIEJ1aWxkICJtaW5pZGVidWdpbmZvIiBhbmQgcmVpbmplY3QgaXQgYmFjayBpbnRvIHRoZSBzdHJpcHBlZCBiaW5hcmllcworICAgIGlmIGQuZ2V0VmFyKCdQQUNLQUdFX01JTklERUJVR0lORk8nKSA9PSAnMSc6CisgICAgICAgIG9lLnV0aWxzLm11bHRpcHJvY2Vzc19sYXVuY2goaW5qZWN0X21pbmlkZWJ1Z2luZm8sIGxpc3QoZWxmZmlsZXMpLCBkLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGV4dHJhYXJncz0oZHZhciwgZGVidWdkaXIsIGRlYnVnbGliZGlyLCBkZWJ1Z2FwcGVuZCwgZGVidWdzcmNkaXIsIGQpKQorCiAgICAgIwogICAgICMgRW5kIG9mIHN0cmlwCiAgICAgIwpAQCAtMTE4Nyw3ICsxMzQzLDcgQEAKICAgICAgICAgICAgIGRpciA9IG9zLnNlcAogICAgICAgICBmb3IgZiBpbiAoZmlsZXMgKyBkaXJzKToKICAgICAgICAgICAgIHBhdGggPSAiLiIgKyBvcy5wYXRoLmpvaW4oZGlyLCBmKQotICAgICAgICAgICAgaWYgIi8uZGVidWcvIiBpbiBwYXRoIG9yIHBhdGguZW5kc3dpdGgoIi8uZGVidWciKToKKyAgICAgICAgICAgIGlmICIvLmRlYnVnLyIgaW4gcGF0aCBvciAiLy5kZWJ1Zy1zdGF0aWMvIiBpbiBwYXRoIG9yIHBhdGguZW5kc3dpdGgoIi8uZGVidWciKToKICAgICAgICAgICAgICAgICBkZWJ1Zy5hcHBlbmQocGF0aCkKIAogICAgIGZvciBwa2cgaW4gcGFja2FnZXM6CkBAIC0xMjYzLDggKzE0MTksOSBAQAogICAgICMgSGFuZGxlIExJQ0VOU0VfRVhDTFVTSU9OCiAgICAgcGFja2FnZV9saXN0ID0gW10KICAgICBmb3IgcGtnIGluIHBhY2thZ2VzOgotICAgICAgICBpZiBkLmdldFZhcignTElDRU5TRV9FWENMVVNJT04tJyArIHBrZyk6Ci0gICAgICAgICAgICBtc2cgPSAiJXMgaGFzIGFuIGluY29tcGF0aWJsZSBsaWNlbnNlLiBFeGNsdWRpbmcgZnJvbSBwYWNrYWdpbmcuIiAlIHBrZworICAgICAgICBsaWNlbnNlcyA9IGQuZ2V0VmFyKCdMSUNFTlNFX0VYQ0xVU0lPTi0nICsgcGtnKQorICAgICAgICBpZiBsaWNlbnNlczoKKyAgICAgICAgICAgIG1zZyA9ICJFeGNsdWRpbmcgJXMgZnJvbSBwYWNrYWdpbmcgYXMgaXQgaGFzIGluY29tcGF0aWJsZSBsaWNlbnNlKHMpOiAlcyIgJSAocGtnLCBsaWNlbnNlcykKICAgICAgICAgICAgIHBhY2thZ2VfcWFfaGFuZGxlX2Vycm9yKCJpbmNvbXBhdGlibGUtbGljZW5zZSIsIG1zZywgZCkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHBhY2thZ2VfbGlzdC5hcHBlbmQocGtnKQpAQCAtMjEwOCwxMCArMjI2NSwxMiBAQAogIyBpdGVyYXRpb24sIHdlIG5lZWQgdG8gbGlzdCB0aGVtIGhlcmU6CiBQQUNLQUdFVkFSUyA9ICJGSUxFUyBSREVQRU5EUyBSUkVDT01NRU5EUyBTVU1NQVJZIERFU0NSSVBUSU9OIFJTVUdHRVNUUyBSUFJPVklERVMgUkNPTkZMSUNUUyBQS0cgQUxMT1dfRU1QVFkgcGtnX3Bvc3RpbnN0IHBrZ19wb3N0cm0gcGtnX3Bvc3RpbnN0X29udGFyZ2V0IElOSVRTQ1JJUFRfTkFNRSBJTklUU0NSSVBUX1BBUkFNUyBERUJJQU5fTk9BVVRPTkFNRSBBTFRFUk5BVElWRSBQS0dFIFBLR1YgUEtHUiBVU0VSQUREX1BBUkFNIEdST1VQQUREX1BBUkFNIENPTkZGSUxFUyBTWVNURU1EX1NFUlZJQ0UgTElDRU5TRSBTRUNUSU9OIHBrZ19wcmVpbnN0IHBrZ19wcmVybSBSUkVQTEFDRVMgR1JPVVBNRU1TX1BBUkFNIFNZU1RFTURfQVVUT19FTkFCTEUgU0tJUF9GSUxFREVQUyBQUklWQVRFX0xJQlMiCiAKLWRlZiBnZW5fcGFja2FnZXZhcihkKToKK2RlZiBnZW5fcGFja2FnZXZhcihkLCBwa2d2YXJzPSJQQUNLQUdFVkFSUyIpOgogICAgIHJldCA9IFtdCiAgICAgcGtncyA9IChkLmdldFZhcigiUEFDS0FHRVMiKSBvciAiIikuc3BsaXQoKQotICAgIHZhcnMgPSAoZC5nZXRWYXIoIlBBQ0tBR0VWQVJTIikgb3IgIiIpLnNwbGl0KCkKKyAgICB2YXJzID0gKGQuZ2V0VmFyKHBrZ3ZhcnMpIG9yICIiKS5zcGxpdCgpCisgICAgZm9yIHYgaW4gdmFyczoKKyAgICAgICAgcmV0LmFwcGVuZCh2KQogICAgIGZvciBwIGluIHBrZ3M6CiAgICAgICAgIGZvciB2IGluIHZhcnM6CiAgICAgICAgICAgICByZXQuYXBwZW5kKHYgKyAiXyIgKyBwKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9pcGsuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BhY2thZ2VfaXBrLmJiY2xhc3MKaW5kZXggNGYyMzk3Ny4uYzAwODU1OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcGFja2FnZV9pcGsuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9wYWNrYWdlX2lway5iYmNsYXNzCkBAIC00NSw2ICs0NSw3IEBACiAgICAgaW1wb3J0IHN1YnByb2Nlc3MKICAgICBpbXBvcnQgdGV4dHdyYXAKICAgICBpbXBvcnQgY29sbGVjdGlvbnMKKyAgICBpbXBvcnQgZ2xvYgogCiAgICAgZGVmIGNsZWFudXBjb250cm9sKHJvb3QpOgogICAgICAgICBmb3IgcCBpbiBbJ0NPTlRST0wnLCAnREVCSUFOJ106CkBAIC0xMDEsOCArMTAyLDcgQEAKICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHBrZ291dGRpcikKICAgICAgICAgb3MuY2hkaXIocm9vdCkKICAgICAgICAgY2xlYW51cGNvbnRyb2wocm9vdCkKLSAgICAgICAgZnJvbSBnbG9iIGltcG9ydCBnbG9iCi0gICAgICAgIGcgPSBnbG9iKCcqJykKKyAgICAgICAgZyA9IGdsb2IuZ2xvYignKicpCiAgICAgICAgIGlmIG5vdCBnIGFuZCBsb2NhbGRhdGEuZ2V0VmFyKCdBTExPV19FTVBUWScsIEZhbHNlKSAhPSAiMSI6CiAgICAgICAgICAgICBiYi5ub3RlKCJOb3QgY3JlYXRpbmcgZW1wdHkgYXJjaGl2ZSBmb3IgJXMtJXMtJXMiICUgKHBrZywgbG9jYWxkYXRhLmdldFZhcignUEtHVicpLCBsb2NhbGRhdGEuZ2V0VmFyKCdQS0dSJykpKQogICAgICAgICAgICAgcmV0dXJuCkBAIC0yMzcsNiArMjM3LDEwIEBACiAgICAgICAgIGNsZWFudXBjb250cm9sKHJvb3QpCiAgICAgICAgIGJiLnV0aWxzLnVubG9ja2ZpbGUobGYpCiAKKyMgSGF2ZSB0byBsaXN0IGFueSB2YXJpYWJsZXMgcmVmZXJlbmNlZCBhcyBYXzxwa2c+IHRoYXQgYXJlbid0IGluIHBrZ2RhdGEgaGVyZQorSVBLRVhUUkFWQVJTID0gIlBSSU9SSVRZIE1BSU5UQUlORVIgUEFDS0FHRV9BUkNIIEhPTUVQQUdFIgoraXBrX3dyaXRlX3BrZ1t2YXJkZXBzXSArPSAiJHtAZ2VuX3BhY2thZ2V2YXIoZCwgJ0lQS0VYVFJBVkFSUycpfSIKKwogIyBPdGhlcndpc2UgYWxsYXJjaCBwYWNrYWdlcyBtYXkgY2hhbmdlIGRlcGVuZGluZyBvbiBvdmVycmlkZSBjb25maWd1cmF0aW9uCiBpcGtfd3JpdGVfcGtnW3ZhcmRlcHNleGNsdWRlXSA9ICJPVkVSUklERVMiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3BhdGNoLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9wYXRjaC5iYmNsYXNzCmluZGV4IGNkMjQxZjEuLjI1ZWMwODkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3BhdGNoLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcGF0Y2guYmJjbGFzcwpAQCAtNSw2ICs1LDEzIEBACiAKIFBBVENIREVQRU5ERU5DWSA9ICIke1BBVENIVE9PTH0tbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCiAKKyMgVGhlcmUgaXMgYSBidWcgaW4gcGF0Y2ggMi43LjMgYW5kIGVhcmxpZXIgd2hlcmUgaW5kZXggbGluZXMKKyMgaW4gcGF0Y2hlcyBjYW4gY2hhbmdlIGZpbGUgbW9kZXMgd2hlbiB0aGV5IHNob3VsZG4ndDoKKyMgaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvcGF0Y2guZ2l0L3BhdGNoLz9pZD04MmI4MDBjOTU1MmEwODhhMjQxNDU3OTQ4MjE5ZDI1Y2UwYTQwN2E0CisjIFRoaXMgbGVha3MgaW50byBkZWJ1ZyBzb3VyY2VzIGluIHBhcnRpY3VsYXIuIEFkZCB0aGUgZGVwZW5kZW5jeQorIyB0byB0YXJnZXQgcmVjaXBlcyB0byBhdm9pZCB0aGlzIHByb2JsZW0gdW50aWwgd2UgY2FuIHJlbHkgb24gMi43LjQgb3IgbGF0ZXIuCitQQVRDSERFUEVOREVOQ1lfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgcGF0Y2gtcmVwbGFjZW1lbnQtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QiCisKIFBBVENIX0dJVF9VU0VSX05BTUUgPz0gIk9wZW5FbWJlZGRlZCIKIFBBVENIX0dJVF9VU0VSX0VNQUlMID89ICJvZS5wYXRjaEBvZSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2Jhc2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19iYXNlLmJiY2xhc3MKaW5kZXggZDAzNDY1Yi4uZjg1YzNiOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2Jhc2UuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfYmFzZS5iYmNsYXNzCkBAIC0yMSw2ICsyMSw3IEBACiAKIFNES0lNQUdFX0ZFQVRVUkVTID8/PSAiZGV2LXBrZ3MgZGJnLXBrZ3Mgc3JjLXBrZ3MgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdhcGktZG9jdW1lbnRhdGlvbicsICdkb2MtcGtncycsICcnLCBkKX0iCiBTREtJTUFHRV9JTlNUQUxMX0NPTVBMRU1FTlRBUlkgPSAnJHtAY29tcGxlbWVudGFyeV9nbG9icygiU0RLSU1BR0VfRkVBVFVSRVMiLCBkKX0nCitTREtJTUFHRV9JTlNUQUxMX0NPTVBMRU1FTlRBUllbdmFyZGVwc10gKz0gIlNES0lNQUdFX0ZFQVRVUkVTIgogCiBQQUNLQUdFX0FSQ0hTX2FwcGVuZF90YXNrLXBvcHVsYXRlLXNkayA9ICIgc2RrLXByb3ZpZGVzLWR1bW15LXRhcmdldCIKIFNES19QQUNLQUdFX0FSQ0hTICs9ICJzZGstcHJvdmlkZXMtZHVtbXktJHtTREtQS0dTVUZGSVh9IgpAQCAtNDgsNiArNDksOCBAQAogCiAjIERlZmF1bHQgYXJjaGl2ZWQgU0RLJ3Mgc3VmZml4CiBTREtfQVJDSElWRV9UWVBFID89ICJ0YXIueHoiCitTREtfWFpfQ09NUFJFU1NJT05fTEVWRUwgPz0gIi05IgorU0RLX1haX09QVElPTlMgPz0gIiR7WFpfREVGQVVMVFN9ICR7U0RLX1haX0NPTVBSRVNTSU9OX0xFVkVMfSIKIAogIyBUbyBzdXBwb3J0IGRpZmZlcmVudCBzZGsgdHlwZSBhY2NvcmRpbmcgdG8gU0RLX0FSQ0hJVkVfVFlQRSwgbm93IHN1cHBvcnQgemlwIGFuZCB0YXIueHoKIHB5dGhvbiAoKSB7CkBAIC01OCw3ICs2MSw3IEBACiAgICAgICAgZC5zZXRWYXIoJ1NES19BUkNISVZFX0NNRCcsICdjZCAke1NES19PVVRQVVR9LyR7U0RLUEFUSH07IHppcCAtciAke1NES0RFUExPWURJUn0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0uJHtTREtfQVJDSElWRV9UWVBFfSAuJykKICAgICBlbHNlOgogICAgICAgIGQuc2V0VmFyKCdTREtfQVJDSElWRV9ERVBFTkRTJywgJ3h6LW5hdGl2ZScpCi0gICAgICAgZC5zZXRWYXIoJ1NES19BUkNISVZFX0NNRCcsICdjZCAke1NES19PVVRQVVR9LyR7U0RLUEFUSH07IHRhciAke1NES1RBUk9QVFN9IC1jZiAtIC4gfCB4eiAtVCAwIC05ID4gJHtTREtERVBMT1lESVJ9LyR7VE9PTENIQUlOX09VVFBVVE5BTUV9LiR7U0RLX0FSQ0hJVkVfVFlQRX0nKQorICAgICAgIGQuc2V0VmFyKCdTREtfQVJDSElWRV9DTUQnLCAnY2QgJHtTREtfT1VUUFVUfS8ke1NES1BBVEh9OyB0YXIgJHtTREtUQVJPUFRTfSAtY2YgLSAuIHwgeHogJHtTREtfWFpfT1BUSU9OU30gPiAke1NES0RFUExPWURJUn0vJHtUT09MQ0hBSU5fT1VUUFVUTkFNRX0uJHtTREtfQVJDSElWRV9UWVBFfScpCiB9CiAKIFNES19SREVQRU5EUyA9ICIke1RPT0xDSEFJTl9UQVJHRVRfVEFTS30gJHtUT09MQ0hBSU5fSE9TVF9UQVNLfSIKQEAgLTE4Miw2ICsxODUsMTEgQEAKIAkjIEVzY2FwZSBzcGVjaWFsIGNoYXJhY3RlcnMgbGlrZSAnKycgYW5kICcuJyBpbiB0aGUgU0RLUEFUSAogCWVzY2FwZWRfc2RrcGF0aD0kKGVjaG8gJHtTREtQQVRIfSB8c2VkIC1lICJzOltcK1wuXTpcXFxcXFxcXFwwOmciKQogCXNlZCAtaSAtZSAiczojI0RFRkFVTFRfSU5TVEFMTF9ESVIjIzokZXNjYXBlZF9zZGtwYXRoOiIgJHtTREtfT1VUUFVUfS8ke1NES1BBVEh9L3JlbG9jYXRlX3Nkay5weQorCisgICAgICAgbWtkaXIgLXAgJHtTREtfT1VUUFVUfS8ke1NES1BBVEhOQVRJVkV9JHtzeXNjb25mZGlyfS8KKyAgICAgICBlY2hvICcke1NES1BBVEhOQVRJVkV9JHtsaWJkaXJfbmF0aXZlc2RrfQorJHtTREtQQVRITkFUSVZFfSR7YmFzZV9saWJkaXJfbmF0aXZlc2RrfQoraW5jbHVkZSAvZXRjL2xkLnNvLmNvbmYnID4gJHtTREtfT1VUUFVUfS8ke1NES1BBVEhOQVRJVkV9JHtzeXNjb25mZGlyfS9sZC5zby5jb25mCiB9CiAKIHB5dGhvbiBjaGVja19zZGtfc3lzcm9vdHMoKSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfZXh0LmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9wb3B1bGF0ZV9zZGtfZXh0LmJiY2xhc3MKaW5kZXggMDVjZmMxYy4uOWYyNmNmYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcG9wdWxhdGVfc2RrX2V4dC5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3BvcHVsYXRlX3Nka19leHQuYmJjbGFzcwpAQCAtMTI0LDcgKzEyNCw3IEBACiBkZWYgY2xlYW5fZXNka19idWlsZGRpcihkLCBzZGtiYXNlcGF0aCk6CiAgICAgIiIiQ2xlYW4gdXAgdHJhY2VzIG9mIHRoZSBmYWtlIGJ1aWxkIGZvciBjcmVhdGVfZmlsdGVyZWRfdGFza2xpc3QoKSIiIgogICAgIGltcG9ydCBzaHV0aWwKLSAgICBjbGVhbnBhdGhzID0gJ2NhY2hlIGNvbmYvc2FuaXR5X2luZm8gdG1wJy5zcGxpdCgpCisgICAgY2xlYW5wYXRocyA9IFsnY2FjaGUnLCAndG1wJ10KICAgICBmb3IgcHRoIGluIGNsZWFucGF0aHM6CiAgICAgICAgIGZ1bGxwdGggPSBvcy5wYXRoLmpvaW4oc2RrYmFzZXBhdGgsIHB0aCkKICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihmdWxscHRoKToKQEAgLTE3OSw3ICsxNzksOSBAQAogICAgICAgICAjIHdpbGwgZWZmZWN0aXZlbHkgZG8KICAgICAgICAgY2xlYW5fZXNka19idWlsZGRpcihkLCBzZGtiYXNlcGF0aCkKICAgICBmaW5hbGx5OgotICAgICAgICBvcy5yZXBsYWNlKHNka2Jhc2VwYXRoICsgJy9jb25mL2xvY2FsLmNvbmYuYmFrJywgc2RrYmFzZXBhdGggKyAnL2NvbmYvbG9jYWwuY29uZicpCisgICAgICAgIGxvY2FsY29uZiA9IHNka2Jhc2VwYXRoICsgJy9jb25mL2xvY2FsLmNvbmYnCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxvY2FsY29uZiArICcuYmFrJyk6CisgICAgICAgICAgICBvcy5yZXBsYWNlKGxvY2FsY29uZiArICcuYmFrJywgbG9jYWxjb25mKQogCiBweXRob24gY29weV9idWlsZHN5c3RlbSAoKSB7CiAgICAgaW1wb3J0IHJlCkBAIC0zODYsOSArMzg4LDEzIEBACiAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmpvaW4oYmFzZW91dHBhdGgsICdjYWNoZScpKQogICAgICAgICBzaHV0aWwuY29weWZpbGUoYnVpbGRkaXIgKyAnL2NhY2hlL2JiX3VuaWhhc2hlcy5kYXQnLCBiYXNlb3V0cGF0aCArICcvY2FjaGUvYmJfdW5paGFzaGVzLmRhdCcpCiAKLSAgICAjIFdyaXRlIGEgdGVtcGxhdGVjb25mLmNmZwotICAgIHdpdGggb3BlbihiYXNlb3V0cGF0aCArICcvY29uZi90ZW1wbGF0ZWNvbmYuY2ZnJywgJ3cnKSBhcyBmOgotICAgICAgICBmLndyaXRlKCdtZXRhL2NvbmZcbicpCisgICAgIyBVc2UgdGVtcGxhdGVjb25mLmNmZyBmaWxlIGZyb20gYnVpbGRkaXIgaWYgZXhpc3RzCisgICAgaWYgb3MucGF0aC5leGlzdHMoYnVpbGRkaXIgKyAnL2NvbmYvdGVtcGxhdGVjb25mLmNmZycpOgorICAgICAgICBzaHV0aWwuY29weWZpbGUoYnVpbGRkaXIgKyAnL2NvbmYvdGVtcGxhdGVjb25mLmNmZycsIGJhc2VvdXRwYXRoICsgJy9jb25mL3RlbXBsYXRlY29uZi5jZmcnKQorICAgIGVsc2U6CisgICAgICAgICMgV3JpdGUgYSB0ZW1wbGF0ZWNvbmYuY2ZnCisgICAgICAgIHdpdGggb3BlbihiYXNlb3V0cGF0aCArICcvY29uZi90ZW1wbGF0ZWNvbmYuY2ZnJywgJ3cnKSBhcyBmOgorICAgICAgICAgICAgZi53cml0ZSgnbWV0YS9jb25mXG4nKQogCiAgICAgIyBFbnN1cmUgYW55IHZhcmlhYmxlcyBzZXQgZnJvbSB0aGUgZXh0ZXJuYWwgZW52aXJvbm1lbnQgKGJ5IHdheSBvZgogICAgICMgQkJfRU5WX0VYVFJBV0hJVEUpIGFyZSBzZXQgaW4gdGhlIFNESydzIGNvbmZpZ3VyYXRpb24KQEAgLTYxMSw4ICs2MTcsOCBAQAogCQlleGl0IDEKIAlmaQogCSMgVGhlIHJlbG9jYXRpb24gc2NyaXB0IHVzZWQgYnkgYnVpbGR0b29scyBpbnN0YWxsZXIgcmVxdWlyZXMgcHl0aG9uCi0JaWYgISBjb21tYW5kIC12IHB5dGhvbiA+IC9kZXYvbnVsbDsgdGhlbgotCQllY2hvICJFUlJPUjogVGhlIGluc3RhbGxlciByZXF1aXJlcyBweXRob24sIHBsZWFzZSBpbnN0YWxsIGl0IGZpcnN0IgorCWlmICEgY29tbWFuZCAtdiBweXRob24zID4gL2Rldi9udWxsOyB0aGVuCisJCWVjaG8gIkVSUk9SOiBUaGUgaW5zdGFsbGVyIHJlcXVpcmVzIHB5dGhvbjMsIHBsZWFzZSBpbnN0YWxsIGl0IGZpcnN0IgogCQlleGl0IDEKIAlmaQogCW1pc3NpbmdfdXRpbHM9IiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbi1kaXIuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbi1kaXIuYmJjbGFzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTExZGMzNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9weXRob24tZGlyLmJiY2xhc3MKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLVBZVEhPTl9CQVNFVkVSU0lPTiA9ICIyLjciCi1QWVRIT05fQUJJID0gIiIKLVBZVEhPTl9ESVIgPSAicHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059IgotUFlUSE9OX1BOID0gInB5dGhvbiIKLVBZVEhPTl9TSVRFUEFDS0FHRVNfRElSID0gIiR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9weXRob24zLWRpci5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcHl0aG9uMy1kaXIuYmJjbGFzcwppbmRleCA3ZGQxMzBiLi4wMzZkNzE0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9weXRob24zLWRpci5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbjMtZGlyLmJiY2xhc3MKQEAgLTEsNSArMSw1IEBACi1QWVRIT05fQkFTRVZFUlNJT04gPSAiMy43IgotUFlUSE9OX0FCSSA9ICJtIgorUFlUSE9OX0JBU0VWRVJTSU9OID0gIjMuOCIKK1BZVEhPTl9BQkkgPSAiIgogUFlUSE9OX0RJUiA9ICJweXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0iCiBQWVRIT05fUE4gPSAicHl0aG9uMyIKIFBZVEhPTl9TSVRFUEFDS0FHRVNfRElSID0gIiR7bGliZGlyfS8ke1BZVEhPTl9ESVJ9L3NpdGUtcGFja2FnZXMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9weXRob25uYXRpdmUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbm5hdGl2ZS5iYmNsYXNzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTkwMTlkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3B5dGhvbm5hdGl2ZS5iYmNsYXNzCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotCi1pbmhlcml0IHB5dGhvbi1kaXIKLQotUFlUSE9OPSIke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24iCi0jIFBZVEhPTl9FWEVDVVRBQkxFIGlzIHVzZWQgYnkgY21ha2UKLVBZVEhPTl9FWEVDVVRBQkxFPSIke1BZVEhPTn0iCi1FWFRSQU5BVElWRVBBVEggKz0gInB5dGhvbi1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZCA9ICIgcHl0aG9uLW5hdGl2ZSAiCi0KLSMgcHl0aG9uLWNvbmZpZyBhbmQgb3RoZXIgc2NyaXB0cyBhcmUgdXNpbmcgZGlzdHV0aWxzIG1vZHVsZXMKLSMgd2hpY2ggd2UgcGF0Y2ggdG8gYWNjZXNzIHRoZXNlIHZhcmlhYmxlcwotZXhwb3J0IFNUQUdJTkdfSU5DRElSCi1leHBvcnQgU1RBR0lOR19MSUJESVIKLQotIyBQYWNrYWdlcyBjYW4gdXNlCi0jIGZpbmRfcGFja2FnZShQeXRob25JbnRlcnAgUkVRVUlSRUQpCi0jIGZpbmRfcGFja2FnZShQeXRob25MaWJzIFJFUVVJUkVEKQotIyB3aGljaCBlbmRzIHVwIHVzaW5nIGxpYnMvaW5jbHVkZXMgZnJvbSBidWlsZCBob3N0Ci0jIFRoZXJlZm9yZSBwcmUtZW1wdCB0aGF0IGVmZm9ydAotZXhwb3J0IFBZVEhPTl9MSUJSQVJZPSIke1NUQUdJTkdfTElCRElSfS9saWIke1BZVEhPTl9ESVJ9JHtQWVRIT05fQUJJfS5zbyIKLWV4cG9ydCBQWVRIT05fSU5DTFVERV9ESVI9IiR7U1RBR0lOR19JTkNESVJ9LyR7UFlUSE9OX0RJUn0ke1BZVEhPTl9BQkl9IgotCi0jIHN1cHByZXNzIGhvc3QgdXNlcidzIHNpdGUtcGFja2FnZXMgZGlycy4KLWV4cG9ydCBQWVRIT05OT1VTRVJTSVRFID0gIjEiCi0KLSMgYXV0b2NvbmYgbWFjcm9zIHdpbGwgdXNlIHRoZWlyIGludGVybmFsIGRlZmF1bHQgcHJlZmVyZW5jZSBvdGhlcndpc2UKLWV4cG9ydCBQWVRIT04KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3FlbXUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3FlbXUuYmJjbGFzcwppbmRleCBmNWM1NzgwLi41NWJkZmY4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9xZW11LmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcWVtdS5iYmNsYXNzCkBAIC0xNiw2ICsxNiw4IEBACiAgICAgICAgIHRhcmdldF9hcmNoID0gInBwYyIKICAgICBlbGlmIHRhcmdldF9hcmNoID09ICJwb3dlcnBjNjQiOgogICAgICAgICB0YXJnZXRfYXJjaCA9ICJwcGM2NCIKKyAgICBlbGlmIHRhcmdldF9hcmNoID09ICJwb3dlcnBjNjRsZSI6CisgICAgICAgIHRhcmdldF9hcmNoID0gInBwYzY0bGUiCiAKICAgICByZXR1cm4gInFlbXUtIiArIHRhcmdldF9hcmNoCiAKQEAgLTYyLDMgKzY0LDQgQEAKIFFFTVVfRVhUUkFPUFRJT05TX3BwY2U2NTAwID0gIiAtY3B1IGU1MDBtYyIKIFFFTVVfRVhUUkFPUFRJT05TX3BwYzY0ZTY1MDAgPSAiIC1jcHUgZTUwMG1jIgogUUVNVV9FWFRSQU9QVElPTlNfcHBjNzQwMCA9ICIgLWNwdSA3NDAwIgorUUVNVV9FWFRSQU9QVElPTlNfcG93ZXJwYzY0bGUgPSAiIC1jcHUgUE9XRVI4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvcWVtdWJvb3QuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3FlbXVib290LmJiY2xhc3MKaW5kZXggMTVhOWU2My4uMzE2MmU3YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcWVtdWJvb3QuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9xZW11Ym9vdC5iYmNsYXNzCkBAIC0zNiw2ICszNiw5IEBACiAjICAgICAgICAgICAgICAgICAgICBOb3RlLCBydW5xZW11IHdpbGwgcmVwbGFjZSBATUFDQCB3aXRoIGEgcHJlZGVmaW5lZCBtYWMsIHlvdSBjYW4gc2V0CiAjICAgICAgICAgICAgICAgICAgICBhIGN1c3RvbSBvbmUsIGJ1dCB0aGF0IG1heSBjYXVzZSBjb25mbGljdHMgd2hlbiBtdWx0aXBsZSBxZW11cyBhcmUKICMgICAgICAgICAgICAgICAgICAgIHJ1bm5pbmcgb24gdGhlIHNhbWUgaG9zdC4KKyMgICAgICAgICAgICAgICAgICAgIE5vdGU6IElmIG1vcmUgdGhhbiBvbmUgaW50ZXJmYWNlIG9mIHR5cGUgLWRldmljZSB2aXJ0aW8tbmV0LWRldmljZSBnZXRzIGFkZGVkLAorIyAgICAgICAgICAgICAgICAgICAgICAgICAgUUJfTkVUV09SS19ERVZJQ0VfcHJlcGVuZCBtaWdodCBiZSB1c2VkLCBzaW5jZSBRZW11IGVudW1lcmF0ZXMgdGhlIGV0aCoKKyMgICAgICAgICAgICAgICAgICAgICAgICAgIGRldmljZXMgaW4gcmV2ZXJzZSBvcmRlciB0byAtZGV2aWNlIGFyZ3VtZW50cy4KICMKICMgUUJfVEFQX09QVDogbmV0b3dyayBvcHRpb24gZm9yICd0YXAnIG1vZGUsIGUuZy4sCiAjICAgICAgICAgICAgICItbmV0ZGV2IHRhcCxpZD1uZXQwLGlmbmFtZT1AVEFQQCxzY3JpcHQ9bm8sZG93bnNjcmlwdD1ubyIKQEAgLTQzLDYgKzQ2LDE1IEBACiAjCiAjIFFCX1NMSVJQX09QVDogbmV0d29yayBvcHRpb24gZm9yIFNMSVJQIG1vZGUsIGUuZy4sIC1uZXRkZXYgdXNlcixpZD1uZXQwIgogIworIyBRQl9DTURMSU5FX0lQX1NMSVJQOiBJZiBRQl9ORVRXT1JLX0RFVklDRSBhZGRzIG1vcmUgdGhhbiBvbmUgbmV0d29yayBpbnRlcmZhY2UgdG8gcWVtdSwgdXN1YWxseSB0aGUKKyMgICAgICAgICAgICAgICAgICAgICAgaXA9IGtlcm5lbCBjb21hbmQgbGluZSBhcmd1bWVudCBuZWVkcyB0byBiZSBjaGFuZ2VkIGFjY29yZGluZ2x5LiBEZXRhaWxzIGFyZSBkb2N1bWVudGVkCisjICAgICAgICAgICAgICAgICAgICAgIGluIHRoZSBrZXJuZWwgZG9jdWVtbnRhdGlvbiBodHRwczovL3d3dy5rZXJuZWwub3JnL2RvYy9Eb2N1bWVudGF0aW9uL2ZpbGVzeXN0ZW1zL25mcy9uZnNyb290LnR4dAorIyAgICAgICAgICAgICAgICAgICAgICBFeGFtcGxlIHRvIGNvbmZpZ3VyZSBvbmx5IHRoZSBmaXJzdCBpbnRlcmZhY2U6ICJpcD1ldGgwOmRoY3AiCisjIFFCX0NNRExJTkVfSVBfVEFQOiBUaGlzIHBhcmFtZXRlciBpcyBzaW1pbGFyIHRvIHRoZSBRQl9DTURMSU5FX0lQX1NMSVJQIHBhcmFtZXRlci4gU2luY2UgdGhlIHRhcCBpbnRlcmZhY2UgcmVxdWlyZXMKKyMgICAgICAgICAgICAgICAgICAgIHN0YXRpYyBJUCBjb25maWd1cmF0aW9uIEBDTElFTlRAIGFuZCBAR0FURVdBWUAgcGxhY2UgaG9sZGVycyBhcmUgcmVwbGFjZWQgYnkgdGhlIElQIGFuZCB0aGUgZ2F0ZXdheQorIyAgICAgICAgICAgICAgICAgICAgYWRkcmVzcyBvZiB0aGUgcWVtdSBndWVzdCBieSBydW5xZW11LgorIyAgICAgICAgICAgICAgICAgICAgRXhhbXBsZTogImlwPTE5Mi4xNjguNy5AQ0xJRU5UQDo6MTkyLjE2OC43LkBHQVRFV0FZQDoyNTUuMjU1LjI1NS4wOjpldGgwIgorIwogIyBRQl9ST09URlNfT1BUOiB1c2VkIGFzIHJvb3RmcywgZS5nLiwKICMgICAgICAgICAgICAgICAiLWRyaXZlIGlkPWRpc2swLGZpbGU9QFJPT1RGU0AsaWY9bm9uZSxmb3JtYXQ9cmF3IC1kZXZpY2UgdmlydGlvLWJsay1kZXZpY2UsZHJpdmU9ZGlzazAiCiAjICAgICAgICAgICAgICBOb3RlLCBydW5xZW11IHdpbGwgcmVwbGFjZSAiQFJPT1RGU0AiIHdpdGggdGhlIG9uZSB3aGljaCBpcyB1c2VkLCBzdWNoIGFzIGNvcmUtaW1hZ2UtbWluaW1hbC1xZW11YXJtNjQuZXh0NC4KQEAgLTUzLDYgKzY1LDEwIEBACiAjICAgICAgICAgICAgICAgICAgICIgLWRldmljZSB2aXJ0aW8tc2VyaWFsLWRldmljZSAtY2hhcmRldiBzb2NrZXQsaWQ9dmlydGNvbixwb3J0PUBQT1JUQCxob3N0PTEyNy4wLjAuMSAtZGV2aWNlIHZpcnRjb25zb2xlLGNoYXJkZXY9dmlydGNvbiIKICMgICAgICAgICAgICAgICAgICAgTm90ZSwgcnVucWVtdSB3aWxsIHJlcGxhY2UgIkBQT1JUQCIgd2l0aCB0aGUgcG9ydCBudW1iZXIgd2hpY2ggaXMgdXNlZC4KICMKKyMgUUJfUk9PVEZTX0VYVFJBX09QVDogZXh0cmEgb3B0aW9ucyB0byBiZSBhcHBlbmRlZCB0byB0aGUgcm9vdGZzIGRldmljZSBpbiBjYXNlIHRoZXJlIGlzIG5vbmUgc3BlY2lmaWVkIGJ5IFFCX1JPT1RGU19PUFQuCisjICAgICAgICAgICAgICAgICAgICAgIENhbiBiZSB1c2VkIHRvIGF1dG9tYXRpY2FsbHkgZGV0ZXJtaW5lIHRoZSBpbWFnZSBmcm9tIHRoZSBvdGhlciB2YXJpYWJsZXMKKyMgICAgICAgICAgICAgICAgICAgICAgYnV0IGRlZmluZSB0aGluZ3MgbGluayAnYm9vdGluZGV4JyB3aGVuIGJvb3RpbmcgZnJvbSBFRkkgb3IgJ3JlYWRvbmx5JyB3aGVuIHVzaW5nIHNxdWFzaGZzCisjICAgICAgICAgICAgICAgICAgICAgIHdpdGhvdXQgdGhlIG5lZWQgdG8gc3BlY2lmeSBhIGRlZGljYXRlZCBxZW11IGNvbmZpZ3VyYXRpb24KICMgVXNhZ2U6CiAjIElNQUdFX0NMQVNTRVMgKz0gInFlbXVib290IgogIyBTZWUgInJ1bnFlbXUgaGVscCIgZm9yIG1vcmUgaW5mbwpAQCAtNjMsMTMgKzc5LDE1IEBACiBRQl9ERUZBVUxUX0ZTVFlQRSA/PSAiZXh0NCIKIFFCX09QVF9BUFBFTkQgPz0gIi1zaG93LWN1cnNvciIKIFFCX05FVFdPUktfREVWSUNFID89ICItZGV2aWNlIHZpcnRpby1uZXQtcGNpLG5ldGRldj1uZXQwLG1hYz1ATUFDQCIKK1FCX0NNRExJTkVfSVBfU0xJUlAgPz0gImlwPWRoY3AiCitRQl9DTURMSU5FX0lQX1RBUCA/PSAiaXA9MTkyLjE2OC43LkBDTElFTlRAOjoxOTIuMTY4LjcuQEdBVEVXQVlAOjI1NS4yNTUuMjU1LjAiCitRQl9ST09URlNfRVhUUkFfT1BUID89ICIiCiAKICMgVGhpcyBzaG91bGQgYmUga2VwdCBhbGlnbiB3aXRoIFJPT1RfVk0KIFFCX0RSSVZFX1RZUEUgPz0gIi9kZXYvc2QiCiAKICMgQ3JlYXRlIHFlbXVib290LmNvbmYKIGFkZHRhc2sgZG9fd3JpdGVfcWVtdWJvb3RfY29uZiBhZnRlciBkb19yb290ZnMgYmVmb3JlIGRvX2ltYWdlCi1JTUdERVBMT1lESVIgPz0gIiR7V09SS0RJUn0vZGVwbG95LSR7UE59LWltYWdlLWNvbXBsZXRlIgogCiBkZWYgcWVtdWJvb3RfdmFycyhkKToKICAgICBidWlsZF92YXJzID0gWydNQUNISU5FJywgJ1RVTkVfQVJDSCcsICdERVBMT1lfRElSX0lNQUdFJywKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3JlcHJvZHVjaWJsZV9idWlsZC5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvcmVwcm9kdWNpYmxlX2J1aWxkLmJiY2xhc3MKaW5kZXggMzliNmU0MC4uOGRhNDBmNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcmVwcm9kdWNpYmxlX2J1aWxkLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvcmVwcm9kdWNpYmxlX2J1aWxkLmJiY2xhc3MKQEAgLTQ0LDEwICs0NCwxMiBAQAogU1NUQVRFVEFTS1MgKz0gImRvX2RlcGxveV9zb3VyY2VfZGF0ZV9lcG9jaCIKIAogZG9fZGVwbG95X3NvdXJjZV9kYXRlX2Vwb2NoICgpIHsKLSAgICBlY2hvICJEZXBsb3lpbmcgU0RFIHRvICR7U0RFX0RJUn0uIgogICAgIG1rZGlyIC1wICR7U0RFX0RFUExPWURJUn0KICAgICBpZiBbIC1lICR7U0RFX0ZJTEV9IF07IHRoZW4KKyAgICAgICAgZWNobyAiRGVwbG95aW5nIFNERSBmcm9tICR7U0RFX0ZJTEV9IC0+ICR7U0RFX0RFUExPWURJUn0uIgogICAgICAgICBjcCAtcCAke1NERV9GSUxFfSAke1NERV9ERVBMT1lESVJ9L19fc291cmNlX2RhdGVfZXBvY2gudHh0CisgICAgZWxzZQorICAgICAgICBlY2hvICIke1NERV9GSUxFfSBub3QgZm91bmQhIgogICAgIGZpCiB9CiAKQEAgLTU2LDcgKzU4LDExIEBACiAgICAgYmIudXRpbHMubWtkaXJoaWVyKGQuZ2V0VmFyKCdTREVfRElSJykpCiAgICAgc2RlX2ZpbGUgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ1NERV9ERVBMT1lESVInKSwgJ19fc291cmNlX2RhdGVfZXBvY2gudHh0JykKICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzZGVfZmlsZSk6Ci0gICAgICAgIG9zLnJlbmFtZShzZGVfZmlsZSwgZC5nZXRWYXIoJ1NERV9GSUxFJykpCisgICAgICAgIHRhcmdldCA9IGQuZ2V0VmFyKCdTREVfRklMRScpCisgICAgICAgIGJiLmRlYnVnKDEsICJNb3Zpbmcgc2V0c2NlbmUgU0RFIGZpbGUgJXMgLT4gJXMiICUgKHNkZV9maWxlLCB0YXJnZXQpKQorICAgICAgICBvcy5yZW5hbWUoc2RlX2ZpbGUsIHRhcmdldCkKKyAgICBlbHNlOgorICAgICAgICBiYi5kZWJ1ZygxLCAiJXMgbm90IGZvdW5kISIgJSBzZGVfZmlsZSkKIH0KIAogZG9fZGVwbG95X3NvdXJjZV9kYXRlX2Vwb2NoW2RpcnNdID0gIiR7U0RFX0RFUExPWURJUn0iCkBAIC0xNDQsMTEgKzE1MCwxMiBAQAogICAgIGJiLmRlYnVnKDEsICJObyB0YXJiYWxsIG9yIGdpdCByZXBvIGZvdW5kIHRvIGRldGVybWluZSBTT1VSQ0VfREFURV9FUE9DSCIpCiAgICAgcmV0dXJuIDAKIAotcHl0aG9uIGRvX2NyZWF0ZV9zb3VyY2VfZGF0ZV9lcG9jaF9zdGFtcCgpIHsKK3B5dGhvbiBjcmVhdGVfc291cmNlX2RhdGVfZXBvY2hfc3RhbXAoKSB7CiAgICAgZXBvY2hmaWxlID0gZC5nZXRWYXIoJ1NERV9GSUxFJykKKyAgICAjIElmIGl0IGV4aXN0cyB3ZSBuZWVkIHRvIHJlZ2VuZXJhdGUgYXMgdGhlIHNvdXJjZXMgbWF5IGhhdmUgY2hhbmdlZAogICAgIGlmIG9zLnBhdGguaXNmaWxlKGVwb2NoZmlsZSk6Ci0gICAgICAgIGJiLmRlYnVnKDEsICJSZXVzaW5nIFNPVVJDRV9EQVRFX0VQT0NIIGZyb206ICVzIiAlIGVwb2NoZmlsZSkKLSAgICAgICAgcmV0dXJuCisgICAgICAgIGJiLmRlYnVnKDEsICJEZWxldGluZyBleGlzdGluZyBTT1VSQ0VfREFURV9FUE9DSCBmcm9tOiAlcyIgJSBlcG9jaGZpbGUpCisgICAgICAgIG9zLnJlbW92ZShlcG9jaGZpbGUpCiAKICAgICBzb3VyY2VkaXIgPSBkLmdldFZhcignUycpCiAgICAgc291cmNlX2RhdGVfZXBvY2ggPSAoCkBAIC0xNjQsMTYgKzE3MSwzMiBAQAogICAgICAgICBmLndyaXRlKHN0cihzb3VyY2VfZGF0ZV9lcG9jaCkpCiB9CiAKK2RlZiBnZXRfc291cmNlX2RhdGVfZXBvY2hfdmFsdWUoZCk6CisgICAgY2FjaGVkID0gZC5nZXRWYXIoJ19fQ0FDSEVEX1NPVVJDRV9EQVRFX0VQT0NIJykKKyAgICBpZiBjYWNoZWQ6CisgICAgICAgIHJldHVybiBjYWNoZWQKKworICAgIGVwb2NoZmlsZSA9IGQuZ2V0VmFyKCdTREVfRklMRScpCisgICAgc291cmNlX2RhdGVfZXBvY2ggPSAwCisgICAgaWYgb3MucGF0aC5pc2ZpbGUoZXBvY2hmaWxlKToKKyAgICAgICAgd2l0aCBvcGVuKGVwb2NoZmlsZSwgJ3InKSBhcyBmOgorICAgICAgICAgICAgcyA9IGYucmVhZCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgc291cmNlX2RhdGVfZXBvY2ggPSBpbnQocykKKyAgICAgICAgICAgIGV4Y2VwdCBWYWx1ZUVycm9yOgorICAgICAgICAgICAgICAgIGJiLndhcm4oIlNPVVJDRV9EQVRFX0VQT0NIIHZhbHVlICclcycgaXMgaW52YWxpZC4gUmV2ZXJ0aW5nIHRvIDAiICUgcykKKyAgICAgICAgICAgICAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9IDAKKyAgICAgICAgYmIuZGVidWcoMSwgIlNPVVJDRV9EQVRFX0VQT0NIOiAlZCIgJSBzb3VyY2VfZGF0ZV9lcG9jaCkKKyAgICBlbHNlOgorICAgICAgICBiYi5kZWJ1ZygxLCAiQ2Fubm90IGZpbmQgJXMuIFNPVVJDRV9EQVRFX0VQT0NIIHdpbGwgZGVmYXVsdCB0byAlZCIgJSAoZXBvY2hmaWxlLCBzb3VyY2VfZGF0ZV9lcG9jaCkpCisKKyAgICBkLnNldFZhcignX19DQUNIRURfU09VUkNFX0RBVEVfRVBPQ0gnLCBzdHIoc291cmNlX2RhdGVfZXBvY2gpKQorICAgIHJldHVybiBzdHIoc291cmNlX2RhdGVfZXBvY2gpCisKK2V4cG9ydCBTT1VSQ0VfREFURV9FUE9DSCA/PSAiJHtAZ2V0X3NvdXJjZV9kYXRlX2Vwb2NoX3ZhbHVlKGQpfSIKIEJCX0hBU0hCQVNFX1dISVRFTElTVCArPSAiU09VUkNFX0RBVEVfRVBPQ0giCiAKIHB5dGhvbiAoKSB7CiAgICAgaWYgZC5nZXRWYXIoJ0JVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUycpID09ICcxJzoKLSAgICAgICAgZC5hcHBlbmRWYXJGbGFnKCJkb191bnBhY2siLCAicG9zdGZ1bmNzIiwgIiBkb19jcmVhdGVfc291cmNlX2RhdGVfZXBvY2hfc3RhbXAiKQotICAgICAgICBlcG9jaGZpbGUgPSBkLmdldFZhcignU0RFX0ZJTEUnKQotICAgICAgICBzb3VyY2VfZGF0ZV9lcG9jaCA9ICIwIgotICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShlcG9jaGZpbGUpOgotICAgICAgICAgICAgd2l0aCBvcGVuKGVwb2NoZmlsZSwgJ3InKSBhcyBmOgotICAgICAgICAgICAgICAgIHNvdXJjZV9kYXRlX2Vwb2NoID0gZi5yZWFkKCkKLSAgICAgICAgICAgIGJiLmRlYnVnKDEsICJTT1VSQ0VfREFURV9FUE9DSDogJXMiICUgc291cmNlX2RhdGVfZXBvY2gpCi0gICAgICAgIGQuc2V0VmFyKCdTT1VSQ0VfREFURV9FUE9DSCcsIHNvdXJjZV9kYXRlX2Vwb2NoKQorICAgICAgICBkLmFwcGVuZFZhckZsYWcoImRvX3VucGFjayIsICJwb3N0ZnVuY3MiLCAiIGNyZWF0ZV9zb3VyY2VfZGF0ZV9lcG9jaF9zdGFtcCIpCiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGRfc2ltcGxlLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9yZXByb2R1Y2libGVfYnVpbGRfc2ltcGxlLmJiY2xhc3MKaW5kZXggOGE2MGRlZS4uMzkzMzcyOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvcmVwcm9kdWNpYmxlX2J1aWxkX3NpbXBsZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3JlcHJvZHVjaWJsZV9idWlsZF9zaW1wbGUuYmJjbGFzcwpAQCAtNyw0ICs3LDMgQEAKIGV4cG9ydCBTT1VSQ0VfREFURV9FUE9DSCA/Pz0gIjE1MjA1OTg4OTYiCiAKIFJFUFJPRFVDSUJMRV9USU1FU1RBTVBfUk9PVEZTID8/PSAiMTUyMDU5ODg5NiIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvc2FuaXR5LmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9zYW5pdHkuYmJjbGFzcwppbmRleCA2M2FiNmNmLi45ZTg3MTAxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9zYW5pdHkuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy9zYW5pdHkuYmJjbGFzcwpAQCAtMiw3ICsyLDcgQEAKICMgU2FuaXR5IGNoZWNrIHRoZSB1c2VycyBzZXR1cCBmb3IgY29tbW9uIG1pc2NvbmZpZ3VyYXRpb25zCiAjCiAKLVNBTklUWV9SRVFVSVJFRF9VVElMSVRJRVMgPz0gInBhdGNoIGRpZmZzdGF0IG1ha2VpbmZvIGdpdCBiemlwMiB0YXIgXAorU0FOSVRZX1JFUVVJUkVEX1VUSUxJVElFUyA/PSAicGF0Y2ggZGlmZnN0YXQgZ2l0IGJ6aXAyIHRhciBcCiAgICAgZ3ppcCBnYXdrIGNocnBhdGggd2dldCBjcGlvIHBlcmwgZmlsZSB3aGljaCIKIAogZGVmIGJibGF5ZXJzX2NvbmZfZmlsZShkKToKQEAgLTUxMSwxNCArNTExLDM4IEBACiAgICAgcmV0dXJuIE5vbmUKIAogCi0jIENoZWNrIGlmIHdlJ3JlIHJ1bm5pbmcgb24gV1NMIChXaW5kb3dzIFN1YnN5c3RlbSBmb3IgTGludXgpLiBJdHMga25vd24gbm90IHRvCi0jIHdvcmsgYnV0IHdlIHNob3VsZCB0ZWxsIHRoZSB1c2VyIHRoYXQgdXBmcm9udC4KKyMgQ2hlY2sgaWYgd2UncmUgcnVubmluZyBvbiBXU0wgKFdpbmRvd3MgU3Vic3lzdGVtIGZvciBMaW51eCkuCisjIFdTTHYxIGlzIGtub3duIG5vdCB0byB3b3JrIGJ1dCBXU0x2MiBzaG91bGQgd29yayBwcm9wZXJseSBhcworIyBsb25nIGFzIHRoZSBWSERYIGZpbGUgaXMgb3B0aW1pemVkIG9mdGVuLCBsZXQgdGhlIHVzZXIga25vdworIyB1cGZyb250LgorIyBNb3JlIGluZm9ybWF0aW9uIG9uIGluc3RhbGxpbmcgV1NMdjIgYXQ6CisjIGh0dHBzOi8vZG9jcy5taWNyb3NvZnQuY29tL2VuLXVzL3dpbmRvd3Mvd3NsL3dzbDItaW5zdGFsbAogZGVmIGNoZWNrX3dzbChkKToKICAgICB3aXRoIG9wZW4oIi9wcm9jL3ZlcnNpb24iLCAiciIpIGFzIGY6CiAgICAgICAgIHZlcmRhdGEgPSBmLnJlYWRsaW5lcygpCiAgICAgZm9yIGwgaW4gdmVyZGF0YToKICAgICAgICAgaWYgIk1pY3Jvc29mdCIgaW4gbDoKLSAgICAgICAgICAgIHJldHVybiAiT3BlbkVtYmVkZGVkIGRvZXNuJ3Qgd29yayB1bmRlciBXU0wgYXQgdGhpcyB0aW1lLCBzb3JyeSIKKyAgICAgICAgICAgIHJldHVybiAiT3BlbkVtYmVkZGVkIGRvZXNuJ3Qgd29yayB1bmRlciBXU0x2MSwgcGxlYXNlIHVwZ3JhZGUgdG8gV1NMdjIgaWYgeW91IHdhbnQgdG8gcnVuIGJ1aWxkcyBvbiBXaW5kb3dzIgorICAgICAgICBlbGlmICJtaWNyb3NvZnQiIGluIGw6CisgICAgICAgICAgICBiYi53YXJuKCJZb3UgYXJlIHJ1bm5pbmcgYml0YmFrZSB1bmRlciBXU0x2MiwgdGhpcyB3b3JrcyBwcm9wZXJseSBidXQgeW91IHNob3VsZCBvcHRpbWl6ZSB5b3VyIFZIRFggZmlsZSBldmVudHVhbGx5IHRvIGF2b2lkIHJ1bm5pbmcgb3V0IG9mIHN0b3JhZ2Ugc3BhY2UiKQorICAgIHJldHVybiBOb25lCisKKyMgUmVxdWlyZSBhdCBsZWFzdCBnY2MgdmVyc2lvbiA1LjAuCisjCisjIFRoaXMgY2FuIGJlIGZpeGVkIG9uIENlbnRPUy03IHdpdGggZGV2dG9vbHNldC02KworIyBodHRwczovL3d3dy5zb2Z0d2FyZWNvbGxlY3Rpb25zLm9yZy9lbi9zY2xzL3Joc2NsL2RldnRvb2xzZXQtNi8KKyMKKyMgQSBsZXNzIGludmFzaXZlIGZpeCBpcyB3aXRoIHNjcmlwdHMvaW5zdGFsbC1idWlsZHRvb2xzIChvciB3aXRoIHVzZXIKKyMgYnVpbHQgYnVpbGR0b29scy1leHRlbmRlZC10YXJiYWxsKQorIworZGVmIGNoZWNrX2djY192ZXJzaW9uKHNhbml0eV9kYXRhKToKKyAgICBmcm9tIGRpc3R1dGlscy52ZXJzaW9uIGltcG9ydCBMb29zZVZlcnNpb24KKyAgICBpbXBvcnQgc3VicHJvY2VzcworICAgIAorICAgIGJ1aWxkX2NjLCB2ZXJzaW9uID0gb2UudXRpbHMuZ2V0X2hvc3RfY29tcGlsZXJfdmVyc2lvbihzYW5pdHlfZGF0YSkKKyAgICBpZiBidWlsZF9jYy5zdHJpcCgpID09ICJnY2MiOgorICAgICAgICBpZiBMb29zZVZlcnNpb24odmVyc2lvbikgPCBMb29zZVZlcnNpb24oIjUuMCIpOgorICAgICAgICAgICAgcmV0dXJuICJZb3VyIHZlcnNpb24gb2YgZ2NjIGlzIG9sZGVyIHRoYW4gNS4wIGFuZCB3aWxsIGJyZWFrIGJ1aWxkcy4gUGxlYXNlIGluc3RhbGwgYSBuZXdlciB2ZXJzaW9uIG9mIGdjYyAoeW91IGNvdWxkIHVzZSB0aGUgcHJvamVjdCdzIGJ1aWxkdG9vbHMtZXh0ZW5kZWQtdGFyYmFsbCBvciB1c2Ugc2NyaXB0cy9pbnN0YWxsLWJ1aWxkdG9vbHMpLlxuIgogICAgIHJldHVybiBOb25lCiAKICMgVGFyIHZlcnNpb24gMS4yNCBhbmQgb253YXJkcyBoYW5kbGUgb3ZlcndyaXRpbmcgc3ltbGlua3MgY29ycmVjdGx5CkBAIC01MzIsMTAgKzU1Niw4IEBACiAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgIHJldHVybiAiVW5hYmxlIHRvIGV4ZWN1dGUgdGFyIC0tdmVyc2lvbiwgZXhpdCBjb2RlICVkXG4lc1xuIiAlIChlLnJldHVybmNvZGUsIGUub3V0cHV0KQogICAgIHZlcnNpb24gPSByZXN1bHQuc3BsaXQoKVszXQotICAgIGlmIExvb3NlVmVyc2lvbih2ZXJzaW9uKSA8IExvb3NlVmVyc2lvbigiMS4yNCIpOgotICAgICAgICByZXR1cm4gIllvdXIgdmVyc2lvbiBvZiB0YXIgaXMgb2xkZXIgdGhhbiAxLjI0IGFuZCBoYXMgYnVncyB3aGljaCB3aWxsIGJyZWFrIGJ1aWxkcy4gUGxlYXNlIGluc3RhbGwgYSBuZXdlciB2ZXJzaW9uIG9mIHRhciAoMS4yOCspLlxuIgogICAgIGlmIExvb3NlVmVyc2lvbih2ZXJzaW9uKSA8IExvb3NlVmVyc2lvbigiMS4yOCIpOgotICAgICAgICByZXR1cm4gIllvdXIgdmVyc2lvbiBvZiB0YXIgaXMgb2xkZXIgdGhhbiAxLjI4IGFuZCBkb2VzIG5vdCBoYXZlIHRoZSBzdXBwb3J0IG5lZWRlZCB0byBlbmFibGUgcmVwcm9kdWNpYmxlIGJ1aWxkcy4gUGxlYXNlIGluc3RhbGwgYSBuZXdlciB2ZXJzaW9uIG9mIHRhciAoeW91IGNvdWxkIHVzZSB0aGUgcHJvamVjdHMgYnVpbGR0b29scy10YXJiYWxsIGZyb20gb3VyIGxhc3QgcmVsZWFzZSkuXG4iCisgICAgICAgIHJldHVybiAiWW91ciB2ZXJzaW9uIG9mIHRhciBpcyBvbGRlciB0aGFuIDEuMjggYW5kIGRvZXMgbm90IGhhdmUgdGhlIHN1cHBvcnQgbmVlZGVkIHRvIGVuYWJsZSByZXByb2R1Y2libGUgYnVpbGRzLiBQbGVhc2UgaW5zdGFsbCBhIG5ld2VyIHZlcnNpb24gb2YgdGFyICh5b3UgY291bGQgdXNlIHRoZSBwcm9qZWN0J3MgYnVpbGR0b29scy10YXJiYWxsIGZyb20gb3VyIGxhc3QgcmVsZWFzZSBvciB1c2Ugc2NyaXB0cy9pbnN0YWxsLWJ1aWxkdG9vbHMpLlxuIgogICAgIHJldHVybiBOb25lCiAKICMgV2UgdXNlIGdpdCBwYXJhbWV0ZXJzIGFuZCBmdW5jdGlvbmFsaXR5IG9ubHkgZm91bmQgaW4gMS43Ljggb3IgbGF0ZXIKQEAgLTYzNCw2ICs2NTYsNyBAQAogICAgIGV4Y2VwdCBJbXBvcnRFcnJvciBhcyBlOgogICAgICAgICBzdGF0dXMuYWRkcmVzdWx0KCdZb3VyIFB5dGhvbiAzIGlzIG5vdCBhIGZ1bGwgaW5zdGFsbC4gUGxlYXNlIGluc3RhbGwgdGhlIG1vZHVsZSAlcyAoc2VlIHRoZSBHZXR0aW5nIFN0YXJ0ZWQgZ3VpZGUgZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24pLlxuJyAlIGUubmFtZSkKIAorICAgIHN0YXR1cy5hZGRyZXN1bHQoY2hlY2tfZ2NjX3ZlcnNpb24oZCkpCiAgICAgc3RhdHVzLmFkZHJlc3VsdChjaGVja19tYWtlX3ZlcnNpb24oZCkpCiAgICAgc3RhdHVzLmFkZHJlc3VsdChjaGVja19wYXRjaF92ZXJzaW9uKGQpKQogICAgIHN0YXR1cy5hZGRyZXN1bHQoY2hlY2tfdGFyX3ZlcnNpb24oZCkpCkBAIC04MDYsNyArODI5LDcgQEAKICAgICAjIElmIFNES19WRU5ET1IgbG9va3MgbGlrZSAiLW15LXNkayIgdGhlbiB0aGUgdHJpcGxlcyBhcmUgYmFkbHkgZm9ybWVkIHNvIGZhaWwgZWFybHkKICAgICBzZGt2ZW5kb3IgPSBkLmdldFZhcigiU0RLX1ZFTkRPUiIpCiAgICAgaWYgbm90IChzZGt2ZW5kb3Iuc3RhcnRzd2l0aCgiLSIpIGFuZCBzZGt2ZW5kb3IuY291bnQoIi0iKSA9PSAxKToKLSAgICAgICAgc3RhdHVzLmFkZHJlc3VsdCgiU0RLX1ZFTkRPUiBzaG91bGQgYmUgb2YgdGhlIGZvcm0gJy1mb29zZGsnIHdpdGggYSBzaW5nbGUgZGFzaFxuIikKKyAgICAgICAgc3RhdHVzLmFkZHJlc3VsdCgiU0RLX1ZFTkRPUiBzaG91bGQgYmUgb2YgdGhlIGZvcm0gJy1mb29zZGsnIHdpdGggYSBzaW5nbGUgZGFzaDsgZm91bmQgJyVzJ1xuIiAlIHNka3ZlbmRvcikKIAogICAgIGNoZWNrX3N1cHBvcnRlZF9kaXN0cm8oZCkKIApAQCAtOTI5LDcgKzk1Miw3IEBACiAgICAgbGFzdF90bXBkaXIgPSAiIgogICAgIGxhc3Rfc3N0YXRlX2RpciA9ICIiCiAgICAgbGFzdF9uYXRpdmVsc2JzdHIgPSAiIgotICAgIHNhbml0eXZlcmZpbGUgPSBzYW5pdHlfZGF0YS5leHBhbmQoIiR7VE9QRElSfS9jb25mL3Nhbml0eV9pbmZvIikKKyAgICBzYW5pdHl2ZXJmaWxlID0gc2FuaXR5X2RhdGEuZXhwYW5kKCIke1RPUERJUn0vY2FjaGUvc2FuaXR5X2luZm8iKQogICAgIGlmIG9zLnBhdGguZXhpc3RzKHNhbml0eXZlcmZpbGUpOgogICAgICAgICB3aXRoIG9wZW4oc2FuaXR5dmVyZmlsZSwgJ3InKSBhcyBmOgogICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3NldHVwdG9vbHMuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3NldHVwdG9vbHMuYmJjbGFzcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTkyM2VhMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy9zZXR1cHRvb2xzLmJiY2xhc3MKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLWluaGVyaXQgZGlzdHV0aWxzCi0KLURFUEVORFMgKz0gInB5dGhvbi1zZXR1cHRvb2xzLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3NpdGVpbmZvLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9zaXRlaW5mby5iYmNsYXNzCmluZGV4IDQxMWU3MDQuLjFhMDQ4YzAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3NpdGVpbmZvLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvc2l0ZWluZm8uYmJjbGFzcwpAQCAtMzUsNyArMzUsNiBAQAogICAgICAgICAibG0zMiI6ICJlbmRpYW4tYmlnIGJpdC0zMiIsCiAgICAgICAgICJtNjhrIjogImVuZGlhbi1iaWcgYml0LTMyIiwKICAgICAgICAgIm1pY3JvYmxhemUiOiAiZW5kaWFuLWJpZyBiaXQtMzIgbWljcm9ibGF6ZS1jb21tb24iLAotICAgICAgICAibWljcm9ibGF6ZWViIjogImVuZGlhbi1iaWcgYml0LTMyIG1pY3JvYmxhemUtY29tbW9uIiwKICAgICAgICAgIm1pY3JvYmxhemVlbCI6ICJlbmRpYW4tbGl0dGxlIGJpdC0zMiBtaWNyb2JsYXplLWNvbW1vbiIsCiAgICAgICAgICJtaXBzIjogImVuZGlhbi1iaWcgYml0LTMyIG1pcHMtY29tbW9uIiwKICAgICAgICAgIm1pcHM2NCI6ICJlbmRpYW4tYmlnIGJpdC02NCBtaXBzLWNvbW1vbiIsCkBAIC00OCw2ICs0Nyw3IEBACiAgICAgICAgICJwb3dlcnBjIjogImVuZGlhbi1iaWcgYml0LTMyIHBvd2VycGMtY29tbW9uIiwKICAgICAgICAgIm5pb3MyIjogImVuZGlhbi1saXR0bGUgYml0LTMyIG5pb3MyLWNvbW1vbiIsCiAgICAgICAgICJwb3dlcnBjNjQiOiAiZW5kaWFuLWJpZyBiaXQtNjQgcG93ZXJwYy1jb21tb24iLAorICAgICAgICAicG93ZXJwYzY0bGUiOiAiZW5kaWFuLWxpdHRsZSBiaXQtNjQgcG93ZXJwYy1jb21tb24iLAogICAgICAgICAicHBjIjogImVuZGlhbi1iaWcgYml0LTMyIHBvd2VycGMtY29tbW9uIiwKICAgICAgICAgInBwYzY0IjogImVuZGlhbi1iaWcgYml0LTY0IHBvd2VycGMtY29tbW9uIiwKICAgICAgICAgInBwYzY0bGUiIDogImVuZGlhbi1saXR0bGUgYml0LTY0IHBvd2VycGMtY29tbW9uIiwKQEAgLTg4LDggKzg4LDYgQEAKICAgICAgICAgImFybS1saW51eC1tdXNsZWFiaSI6ICJhcm0tbGludXgiLAogICAgICAgICAiYXJtZWItbGludXgtZ251ZWFiaSI6ICJhcm1lYi1saW51eCIsCiAgICAgICAgICJhcm1lYi1saW51eC1tdXNsZWFiaSI6ICJhcm1lYi1saW51eCIsCi0gICAgICAgICJtaWNyb2JsYXplZWItbGludXgiIDogIm1pY3JvYmxhemUtbGludXgiLAotICAgICAgICAibWljcm9ibGF6ZWViLWxpbnV4LW11c2wiIDogIm1pY3JvYmxhemUtbGludXgiLAogICAgICAgICAibWljcm9ibGF6ZWVsLWxpbnV4IiA6ICJtaWNyb2JsYXplLWxpbnV4IiwKICAgICAgICAgIm1pY3JvYmxhemVlbC1saW51eC1tdXNsIiA6ICJtaWNyb2JsYXplLWxpbnV4IiwKICAgICAgICAgIm1pcHMtbGludXgtbXVzbCI6ICJtaXBzLWxpbnV4IiwKQEAgLTEwNiw4ICsxMDQsMTAgQEAKICAgICAgICAgInBvd2VycGMtbGludXgtbXVzbHNwZSI6ICJwb3dlcnBjLWxpbnV4IHBvd2VycGMzMi1saW51eCIsCiAgICAgICAgICJwb3dlcnBjNjQtbGludXgtZ251c3BlIjogInBvd2VycGMtbGludXggcG93ZXJwYzY0LWxpbnV4IiwKICAgICAgICAgInBvd2VycGM2NC1saW51eC1tdXNsc3BlIjogInBvd2VycGMtbGludXggcG93ZXJwYzY0LWxpbnV4IiwKLSAgICAgICAgInBvd2VycGM2NC1saW51eCI6ICJwb3dlcnBjLWxpbnV4IiwKLSAgICAgICAgInBvd2VycGM2NC1saW51eC1tdXNsIjogInBvd2VycGMtbGludXgiLAorICAgICAgICAicG93ZXJwYzY0LWxpbnV4IjogInBvd2VycGMtbGludXggcG93ZXJwYzY0LWxpbnV4IiwKKyAgICAgICAgInBvd2VycGM2NC1saW51eC1tdXNsIjogInBvd2VycGMtbGludXggcG93ZXJwYzY0LWxpbnV4IiwKKyAgICAgICAgInBvd2VycGM2NGxlLWxpbnV4IjogInBvd2VycGMtbGludXggcG93ZXJwYzY0LWxpbnV4IiwKKyAgICAgICAgInBvd2VycGM2NGxlLWxpbnV4LW11c2wiOiAicG93ZXJwYy1saW51eCBwb3dlcnBjNjQtbGludXgiLAogICAgICAgICAicmlzY3YzMi1saW51eCI6ICJyaXNjdjMyLWxpbnV4IiwKICAgICAgICAgInJpc2N2MzItbGludXgtbXVzbCI6ICJyaXNjdjMyLWxpbnV4IiwKICAgICAgICAgInJpc2N2NjQtbGludXgiOiAicmlzY3Y2NC1saW51eCIsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9zc3RhdGUuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3NzdGF0ZS5iYmNsYXNzCmluZGV4IDY0ODA4ZjguLmM3M2MzYjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3NzdGF0ZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3NzdGF0ZS5iYmNsYXNzCkBAIC0zLDE5ICszLDQxIEBACiBTU1RBVEVfTUFOSUZFU1RTID89ICIke1RNUERJUn0vc3N0YXRlLWNvbnRyb2wiCiBTU1RBVEVfTUFORklMRVBSRUZJWCA9ICIke1NTVEFURV9NQU5JRkVTVFN9L21hbmlmZXN0LSR7U1NUQVRFX01BTk1BQ0h9LSR7UE59IgogCi1kZWYgZ2VuZXJhdGVfc3N0YXRlZm4oc3BlYywgaGFzaCwgZCk6CitkZWYgZ2VuZXJhdGVfc3N0YXRlZm4oc3BlYywgaGFzaCwgdGFza25hbWUsIHNpZ2luZm8sIGQpOgorICAgIGlmIHRhc2tuYW1lIGlzIE5vbmU6CisgICAgICAgcmV0dXJuICIiCisgICAgZXh0ZW5zaW9uID0gIi50Z3oiCisgICAgIyA4IGNoYXJzIHJlc2VydmVkIGZvciBzaWdpbmZvCisgICAgbGltaXQgPSAyNTQgLSA4CisgICAgaWYgc2lnaW5mbzoKKyAgICAgICAgbGltaXQgPSAyNTQKKyAgICAgICAgZXh0ZW5zaW9uID0gIi50Z3ouc2lnaW5mbyIKICAgICBpZiBub3QgaGFzaDoKICAgICAgICAgaGFzaCA9ICJJTlZBTElEIgotICAgIHJldHVybiBoYXNoWzoyXSArICIvIiArIHNwZWMgKyBoYXNoCisgICAgZm4gPSBzcGVjICsgaGFzaCArICJfIiArIHRhc2tuYW1lICsgZXh0ZW5zaW9uCisgICAgIyBJZiB0aGUgZmlsZW5hbWUgaXMgdG9vIGxvbmcsIGF0dGVtcHQgdG8gcmVkdWNlIGl0CisgICAgaWYgbGVuKGZuKSA+IGxpbWl0OgorICAgICAgICBjb21wb25lbnRzID0gc3BlYy5zcGxpdCgiOiIpCisgICAgICAgICMgRmllbGRzIDAsNSw2IGFyZSBtYW5kYXRvcnksIDEgaXMgbW9zdCB1c2VmdWwsIDIsMyw0IGFyZSBqdXN0IGZvciBpbmZvcm1hdGlvbgorICAgICAgICAjIDcgaXMgZm9yIHRoZSBzZXBhcmF0b3JzCisgICAgICAgIGF2YWlsID0gKDI1NCAtIGxlbihoYXNoICsgIl8iICsgdGFza25hbWUgKyBleHRlbnNpb24pIC0gbGVuKGNvbXBvbmVudHNbMF0pIC0gbGVuKGNvbXBvbmVudHNbMV0pIC0gbGVuKGNvbXBvbmVudHNbNV0pIC0gbGVuKGNvbXBvbmVudHNbNl0pIC0gNykgLy8gMworICAgICAgICBjb21wb25lbnRzWzJdID0gY29tcG9uZW50c1syXVs6YXZhaWxdCisgICAgICAgIGNvbXBvbmVudHNbM10gPSBjb21wb25lbnRzWzNdWzphdmFpbF0KKyAgICAgICAgY29tcG9uZW50c1s0XSA9IGNvbXBvbmVudHNbNF1bOmF2YWlsXQorICAgICAgICBzcGVjID0gIjoiLmpvaW4oY29tcG9uZW50cykKKyAgICAgICAgZm4gPSBzcGVjICsgaGFzaCArICJfIiArIHRhc2tuYW1lICsgZXh0ZW5zaW9uCisgICAgICAgIGlmIGxlbihmbikgPiBsaW1pdDoKKyAgICAgICAgICAgIGJiLmZhdGFsKCJVbmFibGUgdG8gcmVkdWNlIHNzdGF0ZSBuYW1lIHRvIGxlc3MgdGhhbiAyNTUgY2hhcmFyYWN0ZXJzIikKKyAgICByZXR1cm4gaGFzaFs6Ml0gKyAiLyIgKyBoYXNoWzI6NF0gKyAiLyIgKyBmbgogCiBTU1RBVEVfUEtHQVJDSCAgICA9ICIke1BBQ0tBR0VfQVJDSH0iCiBTU1RBVEVfUEtHU1BFQyAgICA9ICJzc3RhdGU6JHtQTn06JHtQQUNLQUdFX0FSQ0h9JHtUQVJHRVRfVkVORE9SfS0ke1RBUkdFVF9PU306JHtQVn06JHtQUn06JHtTU1RBVEVfUEtHQVJDSH06JHtTU1RBVEVfVkVSU0lPTn06IgogU1NUQVRFX1NXU1BFQyAgICAgPSAic3N0YXRlOiR7UE59Ojoke1BWfToke1BSfTo6JHtTU1RBVEVfVkVSU0lPTn06IgotU1NUQVRFX1BLR05BTUUgICAgPSAiJHtTU1RBVEVfRVhUUkFQQVRIfSR7QGdlbmVyYXRlX3NzdGF0ZWZuKGQuZ2V0VmFyKCdTU1RBVEVfUEtHU1BFQycpLCBkLmdldFZhcignQkJfVU5JSEFTSCcpLCBkKX0iCitTU1RBVEVfUEtHTkFNRSAgICA9ICIke1NTVEFURV9FWFRSQVBBVEh9JHtAZ2VuZXJhdGVfc3N0YXRlZm4oZC5nZXRWYXIoJ1NTVEFURV9QS0dTUEVDJyksIGQuZ2V0VmFyKCdCQl9VTklIQVNIJyksIGQuZ2V0VmFyKCdTU1RBVEVfQ1VSUlRBU0snKSwgRmFsc2UsIGQpfSIKIFNTVEFURV9QS0cgICAgICAgID0gIiR7U1NUQVRFX0RJUn0vJHtTU1RBVEVfUEtHTkFNRX0iCiBTU1RBVEVfRVhUUkFQQVRIICAgPSAiIgogU1NUQVRFX0VYVFJBUEFUSFdJTERDQVJEID0gIiIKLVNTVEFURV9QQVRIU1BFQyAgID0gIiR7U1NUQVRFX0RJUn0vJHtTU1RBVEVfRVhUUkFQQVRIV0lMRENBUkR9Ki8ke1NTVEFURV9QS0dTUEVDfSIKK1NTVEFURV9QQVRIU1BFQyAgID0gIiR7U1NUQVRFX0RJUn0vJHtTU1RBVEVfRVhUUkFQQVRIV0lMRENBUkR9Ki8qLyR7U1NUQVRFX1BLR1NQRUN9Kl8ke1NTVEFURV9QQVRIX0NVUlJUQVNLfS50Z3oqIgogCiAjIGV4cGxpY2l0bHkgbWFrZSBQViB0byBkZXBlbmQgb24gZXZhbHVhdGVkIHZhbHVlIG9mIFBWIHZhcmlhYmxlCiBQVlt2YXJkZXB2YWx1ZV0gPSAiJHtQVn0iCkBAIC0zMTcsOCArMzM5LDkgQEAKICAgICBmcm9tIG9lLmdwZ19zaWduIGltcG9ydCBnZXRfc2lnbmVyCiAKICAgICBzc3RhdGVpbnN0ID0gZC5leHBhbmQoIiR7V09SS0RJUn0vc3N0YXRlLWluc3RhbGwtJXMvIiAlIHNzWyd0YXNrJ10pCi0gICAgc3N0YXRlZmV0Y2ggPSBkLmdldFZhcignU1NUQVRFX1BLR05BTUUnKSArICdfJyArIHNzWyd0YXNrJ10gKyAiLnRneiIKLSAgICBzc3RhdGVwa2cgPSBkLmdldFZhcignU1NUQVRFX1BLRycpICsgJ18nICsgc3NbJ3Rhc2snXSArICIudGd6IgorICAgIGQuc2V0VmFyKCJTU1RBVEVfQ1VSUlRBU0siLCBzc1sndGFzayddKQorICAgIHNzdGF0ZWZldGNoID0gZC5nZXRWYXIoJ1NTVEFURV9QS0dOQU1FJykKKyAgICBzc3RhdGVwa2cgPSBkLmdldFZhcignU1NUQVRFX1BLRycpCiAKICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc3N0YXRlcGtnKToKICAgICAgICAgcHN0YWdpbmdfZmV0Y2goc3N0YXRlZmV0Y2gsIGQpCkBAIC0zMzAsNyArMzUzLDYgQEAKICAgICBzc3RhdGVfY2xlYW4oc3MsIGQpCiAKICAgICBkLnNldFZhcignU1NUQVRFX0lOU1RESVInLCBzc3RhdGVpbnN0KQotICAgIGQuc2V0VmFyKCdTU1RBVEVfUEtHJywgc3N0YXRlcGtnKQogCiAgICAgaWYgYmIudXRpbHMudG9fYm9vbGVhbihkLmdldFZhcigiU1NUQVRFX1ZFUklGWV9TSUciKSwgRmFsc2UpOgogICAgICAgICBzaWduZXIgPSBnZXRfc2lnbmVyKGQsICdsb2NhbCcpCkBAIC00NDAsOCArNDYyLDkgQEAKIGRlZiBzc3RhdGVfY2xlYW5fY2FjaGVmaWxlKHNzLCBkKToKICAgICBpbXBvcnQgb2UucGF0aAogCi0gICAgc3N0YXRlcGtnZmlsZSA9IGQuZ2V0VmFyKCdTU1RBVEVfUEFUSFNQRUMnKSArICIqXyIgKyBzc1sndGFzayddICsgIi50Z3oqIgogICAgIGlmIGQuZ2V0VmFyRmxhZygnZG9fJXMnICUgc3NbJ3Rhc2snXSwgJ3Rhc2snKToKKyAgICAgICAgZC5zZXRWYXIoIlNTVEFURV9QQVRIX0NVUlJUQVNLIiwgc3NbJ3Rhc2snXSkKKyAgICAgICAgc3N0YXRlcGtnZmlsZSA9IGQuZ2V0VmFyKCdTU1RBVEVfUEFUSFNQRUMnKQogICAgICAgICBiYi5ub3RlKCJSZW1vdmluZyAlcyIgJSBzc3RhdGVwa2dmaWxlKQogICAgICAgICBvZS5wYXRoLnJlbW92ZShzc3RhdGVwa2dmaWxlKQogCkBAIC02MTIsMTAgKzYzNSw5IEBACiAgICAgdG1wZGlyID0gZC5nZXRWYXIoJ1RNUERJUicpCiAKICAgICBzc3RhdGVidWlsZCA9IGQuZXhwYW5kKCIke1dPUktESVJ9L3NzdGF0ZS1idWlsZC0lcy8iICUgc3NbJ3Rhc2snXSkKLSAgICBzc3RhdGVwa2cgPSBkLmdldFZhcignU1NUQVRFX1BLRycpICsgJ18nKyBzc1sndGFzayddICsgIi50Z3oiCisgICAgZC5zZXRWYXIoIlNTVEFURV9DVVJSVEFTSyIsIHNzWyd0YXNrJ10pCiAgICAgYmIudXRpbHMucmVtb3ZlKHNzdGF0ZWJ1aWxkLCByZWN1cnNlPVRydWUpCiAgICAgYmIudXRpbHMubWtkaXJoaWVyKHNzdGF0ZWJ1aWxkKQotICAgIGJiLnV0aWxzLm1rZGlyaGllcihvcy5wYXRoLmRpcm5hbWUoc3N0YXRlcGtnKSkKICAgICBmb3Igc3RhdGUgaW4gc3NbJ2RpcnMnXToKICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKHN0YXRlWzFdKToKICAgICAgICAgICAgIGNvbnRpbnVlCkBAIC02NDgsNyArNjcwLDYgQEAKICAgICAgICAgb3MucmVuYW1lKHBsYWluLCBwZGlyKQogCiAgICAgZC5zZXRWYXIoJ1NTVEFURV9CVUlMRERJUicsIHNzdGF0ZWJ1aWxkKQotICAgIGQuc2V0VmFyKCdTU1RBVEVfUEtHJywgc3N0YXRlcGtnKQogICAgIGQuc2V0VmFyKCdTU1RBVEVfSU5TVERJUicsIHNzdGF0ZWJ1aWxkKQogCiAgICAgaWYgZC5nZXRWYXIoJ1NTVEFURV9TS0lQX0NSRUFUSU9OJykgPT0gJzEnOgpAQCAtNjY0LDcgKzY4NSwxMiBAQAogICAgICAgICAjIEFsbCBob29rcyBzaG91bGQgcnVuIGluIFNTVEFURV9CVUlMRERJUi4KICAgICAgICAgYmIuYnVpbGQuZXhlY19mdW5jKGYsIGQsIChzc3RhdGVidWlsZCwpKQogCi0gICAgYmIuc2lnZ2VuLmR1bXBfdGhpc190YXNrKHNzdGF0ZXBrZyArICIuc2lnaW5mbyIsIGQpCisgICAgIyBTU1RBVEVfUEtHIG1heSBoYXZlIGJlZW4gY2hhbmdlZCBieSBzc3RhdGVfcmVwb3J0X3VuaWhhc2gKKyAgICBzaWdpbmZvID0gZC5nZXRWYXIoJ1NTVEFURV9QS0cnKSArICIuc2lnaW5mbyIKKyAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2lnaW5mbyk6CisgICAgICAgIGJiLnNpZ2dlbi5kdW1wX3RoaXNfdGFzayhzaWdpbmZvLCBkKQorICAgIGVsc2U6CisgICAgICAgIG9zLnV0aW1lKHNpZ2luZm8sIE5vbmUpCiAKICAgICByZXR1cm4KIApAQCAtNzQ4LDE4ICs3NzQsMjAgQEAKICMgc2V0IGFzIFNTVEFURV9CVUlMRERJUi4gV2lsbCBiZSBydW4gZnJvbSB3aXRoaW4gU1NUQVRFX0JVSUxERElSLgogIwogc3N0YXRlX2NyZWF0ZV9wYWNrYWdlICgpIHsKLQlURklMRT1gbWt0ZW1wICR7U1NUQVRFX1BLR30uWFhYWFhYWFhgCi0KLQkjIEV4aXQgZWFybHUgaWYgaXQgYWxyZWFkeSBleGlzdHMKKwkjIEV4aXQgZWFybHkgaWYgaXQgYWxyZWFkeSBleGlzdHMKIAlpZiBbIC1lICR7U1NUQVRFX1BLR30gXTsgdGhlbgorCQl0b3VjaCAke1NTVEFURV9QS0d9CiAJCXJldHVybgogCWZpCiAKLSAgICAgICAgIyBVc2UgcGlneiBpZiBhdmFpbGFibGUKLSAgICAgICAgT1BUPSItY3pTIgotICAgICAgICBpZiBbIC14ICIkKGNvbW1hbmQgLXYgcGlneikiIF07IHRoZW4KLSAgICAgICAgICAgIE9QVD0iLUkgcGlneiAtY1MiCi0gICAgICAgIGZpCisJbWtkaXIgLXAgYGRpcm5hbWUgJHtTU1RBVEVfUEtHfWAKKwlURklMRT1gbWt0ZW1wICR7U1NUQVRFX1BLR30uWFhYWFhYWFhgCisKKwkjIFVzZSBwaWd6IGlmIGF2YWlsYWJsZQorCU9QVD0iLWN6UyIKKwlpZiBbIC14ICIkKGNvbW1hbmQgLXYgcGlneikiIF07IHRoZW4KKwkJT1BUPSItSSBwaWd6IC1jUyIKKwlmaQogCiAJIyBOZWVkIHRvIGhhbmRsZSBlbXB0eSBkaXJlY3RvcmllcwogCWlmIFsgIiQobHMgLUEpIiBdOyB0aGVuCkBAIC03NzYsMTAgKzgwNCwxMyBAQAogCWNobW9kIDA2NjQgJFRGSUxFCiAJIyBTa2lwIGlmIGl0IHdhcyBhbHJlYWR5IGNyZWF0ZWQgYnkgc29tZSBvdGhlciBwcm9jZXNzCiAJaWYgWyAhIC1lICR7U1NUQVRFX1BLR30gXTsgdGhlbgotCQltdiAtZiAkVEZJTEUgJHtTU1RBVEVfUEtHfQorCQkjIE1vdmUgaW50byBwbGFjZSB1c2luZyBsbiB0byBhdHRlbXB0IGFuIGF0b21pYyBvcC4KKwkJIyBBYm9ydCBpZiBpdCBhbHJlYWR5IGV4aXN0cworCQlsbiAkVEZJTEUgJHtTU1RBVEVfUEtHfSAmJiBybSAkVEZJTEUKIAllbHNlCiAJCXJtICRURklMRQogCWZpCisJdG91Y2ggJHtTU1RBVEVfUEtHfQogfQogCiBweXRob24gc3N0YXRlX3NpZ25fcGFja2FnZSAoKSB7CkBAIC04MjEsOSArODUyLDYgQEAKIGRlZiBzc3RhdGVfY2hlY2toYXNoZXMoc3FfZGF0YSwgZCwgc2lnaW5mbz1GYWxzZSwgY3VycmVudGNvdW50PTAsIHN1bW1hcnk9VHJ1ZSwgKiprd2FyZ3MpOgogICAgIGZvdW5kID0gc2V0KCkKICAgICBtaXNzZWQgPSBzZXQoKQotICAgIGV4dGVuc2lvbiA9ICIudGd6IgotICAgIGlmIHNpZ2luZm86Ci0gICAgICAgIGV4dGVuc2lvbiA9IGV4dGVuc2lvbiArICIuc2lnaW5mbyIKIAogICAgIGRlZiBnZXRoYXNoKHRhc2spOgogICAgICAgICByZXR1cm4gc3FfZGF0YVsndW5paGFzaCddW3Rhc2tdCkBAIC04NTAsNyArODc4LDcgQEAKIAogICAgICAgICBzcGVjLCBleHRyYXBhdGgsIHRuYW1lID0gZ2V0cGF0aGNvbXBvbmVudHModGlkLCBkKQogCi0gICAgICAgIHNzdGF0ZWZpbGUgPSBkLmV4cGFuZCgiJHtTU1RBVEVfRElSfS8iICsgZXh0cmFwYXRoICsgZ2VuZXJhdGVfc3N0YXRlZm4oc3BlYywgZ2V0aGFzaCh0aWQpLCBkKSArICJfIiArIHRuYW1lICsgZXh0ZW5zaW9uKQorICAgICAgICBzc3RhdGVmaWxlID0gZC5leHBhbmQoIiR7U1NUQVRFX0RJUn0vIiArIGV4dHJhcGF0aCArIGdlbmVyYXRlX3NzdGF0ZWZuKHNwZWMsIGdldGhhc2godGlkKSwgdG5hbWUsIHNpZ2luZm8sIGQpKQogCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNzdGF0ZWZpbGUpOgogICAgICAgICAgICAgYmIuZGVidWcoMiwgIlNTdGF0ZTogRm91bmQgdmFsaWQgc3N0YXRlIGZpbGUgJXMiICUgc3N0YXRlZmlsZSkKQEAgLTkwNiwxOSArOTM0LDIyIEBACiAgICAgICAgICAgICAgICAgbWlzc2VkLmFkZCh0aWQpCiAgICAgICAgICAgICAgICAgYmIuZGVidWcoMiwgIlNTdGF0ZTogVW5zdWNjZXNzZnVsIGZldGNoIHRlc3QgZm9yICVzIiAlIHNyY3VyaSkKICAgICAgICAgICAgICAgICBwYXNzCi0gICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LlByb2Nlc3NQcm9ncmVzcyhtc2csIGxlbih0YXNrbGlzdCkgLSB0aHJlYWRfd29ya2VyLnRhc2tzLnFzaXplKCkpLCBkKQorICAgICAgICAgICAgaWYgbGVuKHRhc2tsaXN0KSA+PSBtaW5fdGFza3M6CisgICAgICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Qcm9jZXNzUHJvZ3Jlc3MobXNnLCBsZW4odGFza2xpc3QpIC0gdGhyZWFkX3dvcmtlci50YXNrcy5xc2l6ZSgpKSwgZCkKIAogICAgICAgICB0YXNrbGlzdCA9IFtdCisgICAgICAgIG1pbl90YXNrcyA9IDEwMAogICAgICAgICBmb3IgdGlkIGluIHNxX2RhdGFbJ2hhc2gnXToKICAgICAgICAgICAgIGlmIHRpZCBpbiBmb3VuZDoKICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgc3BlYywgZXh0cmFwYXRoLCB0bmFtZSA9IGdldHBhdGhjb21wb25lbnRzKHRpZCwgZCkKLSAgICAgICAgICAgIHNzdGF0ZWZpbGUgPSBkLmV4cGFuZChleHRyYXBhdGggKyBnZW5lcmF0ZV9zc3RhdGVmbihzcGVjLCBnZXRoYXNoKHRpZCksIGQpICsgIl8iICsgdG5hbWUgKyBleHRlbnNpb24pCisgICAgICAgICAgICBzc3RhdGVmaWxlID0gZC5leHBhbmQoZXh0cmFwYXRoICsgZ2VuZXJhdGVfc3N0YXRlZm4oc3BlYywgZ2V0aGFzaCh0aWQpLCB0bmFtZSwgc2lnaW5mbywgZCkpCiAgICAgICAgICAgICB0YXNrbGlzdC5hcHBlbmQoKHRpZCwgc3N0YXRlZmlsZSkpCiAKICAgICAgICAgaWYgdGFza2xpc3Q6Ci0gICAgICAgICAgICBtc2cgPSAiQ2hlY2tpbmcgc3N0YXRlIG1pcnJvciBvYmplY3QgYXZhaWxhYmlsaXR5IgotICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5Qcm9jZXNzU3RhcnRlZChtc2csIGxlbih0YXNrbGlzdCkpLCBkKQorICAgICAgICAgICAgaWYgbGVuKHRhc2tsaXN0KSA+PSBtaW5fdGFza3M6CisgICAgICAgICAgICAgICAgbXNnID0gIkNoZWNraW5nIHNzdGF0ZSBtaXJyb3Igb2JqZWN0IGF2YWlsYWJpbGl0eSIKKyAgICAgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LlByb2Nlc3NTdGFydGVkKG1zZywgbGVuKHRhc2tsaXN0KSksIGQpCiAKICAgICAgICAgICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKICAgICAgICAgICAgIG5wcm9jID0gbWluKG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnQoKSwgbGVuKHRhc2tsaXN0KSkKQEAgLTkzMiwyMiArOTYzLDE5IEBACiAgICAgICAgICAgICBwb29sLndhaXRfY29tcGxldGlvbigpCiAgICAgICAgICAgICBiYi5ldmVudC5kaXNhYmxlX3RocmVhZGxvY2soKQogCi0gICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LlByb2Nlc3NGaW5pc2hlZChtc2cpLCBkKQotCi0gICAgIyBMaWtlbHkgY2hlY2tpbmcgYW4gaW5kaXZpZHVhbCB0YXNrIGhhc2ggYWdhaW4gZm9yIG11bHRpY29uZmlnIHNoYXJpbmcgb2Ygc3N0YXRlIHRhc2tzIHNvIHNraXAgcmVwb3J0aW5nCi0gICAgaWYgbGVuKHNxX2RhdGFbJ2hhc2gnXSkgPT0gMToKLSAgICAgICAgcmV0dXJuIGZvdW5kCisgICAgICAgICAgICBpZiBsZW4odGFza2xpc3QpID49IG1pbl90YXNrczoKKyAgICAgICAgICAgICAgICBiYi5ldmVudC5maXJlKGJiLmV2ZW50LlByb2Nlc3NGaW5pc2hlZChtc2cpLCBkKQogCiAgICAgaW5oZXJpdGxpc3QgPSBkLmdldFZhcigiSU5IRVJJVCIpCiAgICAgaWYgInRvYXN0ZXIiIGluIGluaGVyaXRsaXN0OgogICAgICAgICBldmRhdGEgPSB7J21pc3NlZCc6IFtdLCAnZm91bmQnOiBbXX07CiAgICAgICAgIGZvciB0aWQgaW4gbWlzc2VkOgogICAgICAgICAgICAgc3BlYywgZXh0cmFwYXRoLCB0bmFtZSA9IGdldHBhdGhjb21wb25lbnRzKHRpZCwgZCkKLSAgICAgICAgICAgIHNzdGF0ZWZpbGUgPSBkLmV4cGFuZChleHRyYXBhdGggKyBnZW5lcmF0ZV9zc3RhdGVmbihzcGVjLCBnZXRoYXNoKHRpZCksIGQpICsgIl8iICsgdG5hbWUgKyAiLnRneiIpCisgICAgICAgICAgICBzc3RhdGVmaWxlID0gZC5leHBhbmQoZXh0cmFwYXRoICsgZ2VuZXJhdGVfc3N0YXRlZm4oc3BlYywgZ2V0aGFzaCh0aWQpLCB0bmFtZSwgRmFsc2UsIGQpKQogICAgICAgICAgICAgZXZkYXRhWydtaXNzZWQnXS5hcHBlbmQoKGJiLnJ1bnF1ZXVlLmZuX2Zyb21fdGlkKHRpZCksIGJiLnJ1bnF1ZXVlLnRhc2tuYW1lX2Zyb21fdGlkKHRpZCksIGdldGhhc2godGlkKSwgc3N0YXRlZmlsZSApICkKICAgICAgICAgZm9yIHRpZCBpbiBmb3VuZDoKICAgICAgICAgICAgIHNwZWMsIGV4dHJhcGF0aCwgdG5hbWUgPSBnZXRwYXRoY29tcG9uZW50cyh0aWQsIGQpCi0gICAgICAgICAgICBzc3RhdGVmaWxlID0gZC5leHBhbmQoZXh0cmFwYXRoICsgZ2VuZXJhdGVfc3N0YXRlZm4oc3BlYywgZ2V0aGFzaCh0aWQpLCBkKSArICJfIiArIHRuYW1lICsgIi50Z3oiKQorICAgICAgICAgICAgc3N0YXRlZmlsZSA9IGQuZXhwYW5kKGV4dHJhcGF0aCArIGdlbmVyYXRlX3NzdGF0ZWZuKHNwZWMsIGdldGhhc2godGlkKSwgdG5hbWUsIEZhbHNlLCBkKSkKICAgICAgICAgICAgIGV2ZGF0YVsnZm91bmQnXS5hcHBlbmQoKGJiLnJ1bnF1ZXVlLmZuX2Zyb21fdGlkKHRpZCksIGJiLnJ1bnF1ZXVlLnRhc2tuYW1lX2Zyb21fdGlkKHRpZCksIGdldGhhc2godGlkKSwgc3N0YXRlZmlsZSApICkKICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5NZXRhZGF0YUV2ZW50KCJNaXNzZWRTc3RhdGUiLCBldmRhdGEpLCBkKQogCkBAIC0xMDgxLDE3ICsxMTA5LDIwIEBACiBzc3RhdGVfZXZlbnRoYW5kbGVyW2V2ZW50bWFza10gPSAiYmIuYnVpbGQuVGFza1N1Y2NlZWRlZCIKIHB5dGhvbiBzc3RhdGVfZXZlbnRoYW5kbGVyKCkgewogICAgIGQgPSBlLmRhdGEKLSAgICAjIFdoZW4gd2Ugd3JpdGUgYW4gc3N0YXRlIHBhY2thZ2Ugd2UgcmV3cml0ZSB0aGUgU1NUQVRFX1BLRwotICAgIHNwa2cgPSBkLmdldFZhcignU1NUQVRFX1BLRycpCi0gICAgaWYgbm90IHNwa2cuZW5kc3dpdGgoIi50Z3oiKToKKyAgICB3cml0dGVuc3N0YXRlID0gZC5nZXRWYXIoJ1NTVEFURV9DVVJSVEFTSycpCisgICAgaWYgbm90IHdyaXR0ZW5zc3RhdGU6CiAgICAgICAgIHRhc2tuYW1lID0gZC5nZXRWYXIoIkJCX1JVTlRBU0siKVszOl0KICAgICAgICAgc3BlYyA9IGQuZ2V0VmFyKCdTU1RBVEVfUEtHU1BFQycpCiAgICAgICAgIHN3c3BlYyA9IGQuZ2V0VmFyKCdTU1RBVEVfU1dTUEVDJykKICAgICAgICAgaWYgdGFza25hbWUgaW4gWyJmZXRjaCIsICJ1bnBhY2siLCAicGF0Y2giLCAicG9wdWxhdGVfbGljIiwgInByZWNvbmZpZ3VyZSJdIGFuZCBzd3NwZWM6CiAgICAgICAgICAgICBkLnNldFZhcigiU1NUQVRFX1BLR1NQRUMiLCAiJHtTU1RBVEVfU1dTUEVDfSIpCiAgICAgICAgICAgICBkLnNldFZhcigiU1NUQVRFX0VYVFJBUEFUSCIsICIiKQotICAgICAgICBzc3RhdGVwa2cgPSBkLmdldFZhcignU1NUQVRFX1BLRycpCi0gICAgICAgIGJiLnNpZ2dlbi5kdW1wX3RoaXNfdGFzayhzc3RhdGVwa2cgKyAnXycgKyB0YXNrbmFtZSArICIudGd6IiAiLnNpZ2luZm8iLCBkKQorICAgICAgICBkLnNldFZhcigiU1NUQVRFX0NVUlJUQVNLIiwgdGFza25hbWUpCisgICAgICAgIHNpZ2luZm8gPSBkLmdldFZhcignU1NUQVRFX1BLRycpICsgIi5zaWdpbmZvIgorICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMoc2lnaW5mbyk6CisgICAgICAgICAgICBiYi5zaWdnZW4uZHVtcF90aGlzX3Rhc2soc2lnaW5mbywgZCkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIG9zLnV0aW1lKHNpZ2luZm8sIE5vbmUpCiB9CiAKIFNTVEFURV9QUlVORV9PQlNPTEVURVdPUktESVIgPz0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy9zdGFnaW5nLmJiY2xhc3MKaW5kZXggY2NhMGI3ZS4uNWIwNGY4OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvc3RhZ2luZy5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3N0YWdpbmcuYmJjbGFzcwpAQCAtMzIsNyArMzIsNyBAQAogICAgICR7ZGF0YWRpcn0vZ3RrLWRvYy9odG1sIFwKICAgICAke2RhdGFkaXJ9L2xvY2FsZSBcCiAgICAgJHtkYXRhZGlyfS9waXhtYXBzIFwKLSAgICAke2xpYmRpcn0vJHtQTn0vcHRlc3QgXAorICAgICR7bGliZGlyfS8ke0JQTn0vcHRlc3QgXAogIgogCiBzeXNyb290X3N0YWdlX2RpcigpIHsKQEAgLTc1LDggKzc1LDggQEAKIAogICAgIGRzdGRpciA9IGQuZ2V0VmFyKCdTWVNST09UX0RFU1RESVInKQogICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKLSAgICBsaWJkaXIgPSBvcy5wYXRoLmFic3BhdGgoZHN0ZGlyICsgb3Muc2VwICsgZC5nZXRWYXIoImxpYmRpciIpKQotICAgIGJhc2VfbGliZGlyID0gb3MucGF0aC5hYnNwYXRoKGRzdGRpciArIG9zLnNlcCArIGQuZ2V0VmFyKCJiYXNlX2xpYmRpciIpKQorICAgIGxpYmRpciA9IGQuZ2V0VmFyKCJsaWJkaXIiKQorICAgIGJhc2VfbGliZGlyID0gZC5nZXRWYXIoImJhc2VfbGliZGlyIikKICAgICBxYV9hbHJlYWR5X3N0cmlwcGVkID0gJ2FscmVhZHktc3RyaXBwZWQnIGluIChkLmdldFZhcignSU5TQU5FX1NLSVBfJyArIHBuKSBvciAiIikuc3BsaXQoKQogICAgIHN0cmlwX2NtZCA9IGQuZ2V0VmFyKCJTVFJJUCIpCiAKQEAgLTI3NywxMSArMjc3LDEzIEBACiAKICAgICBzdGFydCA9IE5vbmUKICAgICBjb25maWd1cmVkZXBzID0gW10KKyAgICBvd250YXNrZGVwcyA9IFtdCiAgICAgZm9yIGRlcCBpbiB0YXNrZGVwZGF0YToKICAgICAgICAgZGF0YSA9IHRhc2tkZXBkYXRhW2RlcF0KICAgICAgICAgaWYgZGF0YVsxXSA9PSBteXRhc2tuYW1lIGFuZCBkYXRhWzBdID09IHBuOgogICAgICAgICAgICAgc3RhcnQgPSBkZXAKLSAgICAgICAgICAgIGJyZWFrCisgICAgICAgIGVsaWYgZGF0YVswXSA9PSBwbjoKKyAgICAgICAgICAgIG93bnRhc2tkZXBzLmFwcGVuZChkYXRhWzFdKQogICAgIGlmIHN0YXJ0IGlzIE5vbmU6CiAgICAgICAgIGJiLmZhdGFsKCJDb3VsZG4ndCBmaW5kIG91cnNlbGYgaW4gQkJfVEFTS0RFUERBVEE/IikKIApAQCAtNDI3LDcgKzQyOSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAjIFdhcyBsaWtlbHkgYWxyZWFkeSB1bmluc3RhbGxlZAogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICAgICAgcG90ZW50aWFsLmFwcGVuZChsKQotICAgICAgICAjIFdlIG5lZWQgdG8gZW5zdXJlIG5vdCBvdGhlciB0YXNrIG5lZWRzIHRoaXMgZGVwZW5kZW5jeS4gV2UgaG9sZCB0aGUgc3lzcm9vdAorICAgICAgICAjIFdlIG5lZWQgdG8gZW5zdXJlIG5vIG90aGVyIHRhc2sgbmVlZHMgdGhpcyBkZXBlbmRlbmN5LiBXZSBob2xkIHRoZSBzeXNyb290CiAgICAgICAgICMgbG9jayBzbyB3ZSBjYSBzZWFyY2ggdGhlIGluZGV4ZXMgdG8gY2hlY2sKICAgICAgICAgaWYgcG90ZW50aWFsOgogICAgICAgICAgICAgZm9yIGkgaW4gZ2xvYi5nbG9iKGRlcGRpciArICIvaW5kZXguKiIpOgpAQCAtNDM1LDYgKzQzNywxMSBAQAogICAgICAgICAgICAgICAgICAgICBjb250aW51ZQogICAgICAgICAgICAgICAgIHdpdGggb3BlbihpLCAiciIpIGFzIGY6CiAgICAgICAgICAgICAgICAgICAgIGZvciBsIGluIGY6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBsLnN0YXJ0c3dpdGgoIlRhc2tEZXBzOiIpOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByZXZ0YXNrcyA9IGwuc3BsaXQoKVsxOl0KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBteXRhc2tuYW1lIGluIHByZXZ0YXNrczoKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBXZSdyZSBhIGRlcGVuZGVuY3kgb2YgdGhpcyB0YXNrIHNvIHdlIGNhbiBjbGVhciBpdGVtcyBvdXQgdGhlIHN5c3Jvb3QKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKICAgICAgICAgICAgICAgICAgICAgICAgIGwgPSBsLnN0cmlwKCkKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIGwgaW4gcG90ZW50aWFsOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBvdGVudGlhbC5yZW1vdmUobCkKQEAgLTQ3MCw2ICs0NzcsNyBAQAogICAgICAgICBlbGlmIG9zLnBhdGgubGV4aXN0cyhkZXBkaXIgKyAiLyIgKyBjKToKICAgICAgICAgICAgIG9zLnVubGluayhkZXBkaXIgKyAiLyIgKyBjKQogCisgICAgYmluZmlsZXMgPSB7fQogICAgICMgTm93IGhhbmRsZSBpbnN0YWxscwogICAgIGZvciBkZXAgaW4gY29uZmlndXJlZGVwczoKICAgICAgICAgYyA9IHNldHNjZW5lZGVwc1tkZXBdWzBdCkBAIC01NjIsNyArNTcwLDE2IEBACiAgICAgICAgICAgICAgICAgICAgIGlmIGwuZW5kc3dpdGgoIi8iKToKICAgICAgICAgICAgICAgICAgICAgICAgIHN0YWdpbmdfY29weWRpcihsLCB0YXJnZXRkaXIsIGRlc3QsIHNlZW5kaXJzKQogICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgc3RhZ2luZ19jb3B5ZmlsZShsLCB0YXJnZXRkaXIsIGRlc3QsIHBvc3RpbnN0cywgc2VlbmRpcnMpCisgICAgICAgICAgICAgICAgICAgIGlmICIvYmluLyIgaW4gbCBvciAiL3NiaW4vIiBpbiBsOgorICAgICAgICAgICAgICAgICAgICAgICAgIyBkZWZlciAvKmJpbi8qIGZpbGVzIHVudGlsIGxhc3QgaW4gY2FzZSB0aGV5IG5lZWQgbGlicworICAgICAgICAgICAgICAgICAgICAgICAgYmluZmlsZXNbbF0gPSAodGFyZ2V0ZGlyLCBkZXN0KQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgc3RhZ2luZ19jb3B5ZmlsZShsLCB0YXJnZXRkaXIsIGRlc3QsIHBvc3RpbnN0cywgc2VlbmRpcnMpCisKKyAgICAjIEhhbmRsZSBkZWZlcnJlZCBiaW5maWxlcworICAgIGZvciBsIGluIGJpbmZpbGVzOgorICAgICAgICAodGFyZ2V0ZGlyLCBkZXN0KSA9IGJpbmZpbGVzW2xdCisgICAgICAgIHN0YWdpbmdfY29weWZpbGUobCwgdGFyZ2V0ZGlyLCBkZXN0LCBwb3N0aW5zdHMsIHNlZW5kaXJzKQogCiAgICAgYmIubm90ZSgiSW5zdGFsbGVkIGludG8gc3lzcm9vdDogJXMiICUgc3RyKG1zZ19hZGRpbmcpKQogICAgIGJiLm5vdGUoIlNraXBwaW5nIGFzIGFscmVhZHkgZXhpc3RzIGluIHN5c3Jvb3Q6ICVzIiAlIHN0cihtc2dfZXhpc3RzKSkKQEAgLTU3OCw2ICs1OTUsNyBAQAogICAgICAgICBvcy5zeW1saW5rKG1hbmlmZXN0c1tkZXBdLCBkZXBkaXIgKyAiLyIgKyBjICsgIi5jb21wbGV0ZSIpCiAKICAgICB3aXRoIG9wZW4odGFza2luZGV4LCAidyIpIGFzIGY6CisgICAgICAgIGYud3JpdGUoIlRhc2tEZXBzOiAiICsgIiAiLmpvaW4ob3dudGFza2RlcHMpICsgIlxuIikKICAgICAgICAgZm9yIGwgaW4gc29ydGVkKGluc3RhbGxlZCk6CiAgICAgICAgICAgICBmLndyaXRlKGwgKyAiXG4iKQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy90ZXN0aW1hZ2UuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Rlc3RpbWFnZS5iYmNsYXNzCmluZGV4IDg0NGVkODcuLjAwZjBjMjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3Rlc3RpbWFnZS5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3Rlc3RpbWFnZS5iYmNsYXNzCkBAIC0zMSw5ICszMSwyMSBAQAogIyBURVNUX0xPR19ESVIgY29udGFpbnMgYSBjb21tYW5kIHNzaCBsb2cgYW5kIG1heSBjb250YWluIGluZnJvbWF0aW9uIGFib3V0IHdoYXQgY29tbWFuZCBpcyBydW5uaW5nLCBvdXRwdXQgYW5kIHJldHVybiBjb2RlcyBhbmQgZm9yIHFlbXUgYSBib290IGxvZyB0aWxsIGxvZ2luLgogIyBCb290aW5nIGlzIGhhbmRsZWQgYnkgdGhpcyBjbGFzcywgYW5kIGl0J3Mgbm90IGEgdGVzdCBpbiBpdHNlbGYuCiAjIFRFU1RfUUVNVUJPT1RfVElNRU9VVCBjYW4gYmUgdXNlZCB0byBzZXQgdGhlIG1heGltdW0gdGltZSBpbiBzZWNvbmRzIHRoZSBsYXVuY2ggY29kZSB3aWxsIHdhaXQgZm9yIHRoZSBsb2dpbiBwcm9tcHQuCisjIFRFU1RfT1ZFUkFMTF9USU1FT1VUIGNhbiBiZSB1c2VkIHRvIHNldCB0aGUgbWF4aW11bSB0aW1lIGluIHNlY29uZHMgdGhlIHRlc3RzIHdpbGwgYmUgYWxsb3dlZCB0byBydW4gKGRlZmF1bHRzIHRvIG5vIGxpbWl0KS4KICMgVEVTVF9RRU1VUEFSQU1TIGNhbiBiZSB1c2VkIHRvIHBhc3MgZXh0cmEgcGFyYW1ldGVycyB0byBxZW11LCBlLmcuICItbSAxMDI0IiBmb3Igc2V0dGluZyB0aGUgYW1vdW50IG9mIHJhbSB0byAxIEdCLgogIyBURVNUX1JVTlFFTVVQQVJBTVMgY2FuIGJlIHVzZWQgdG8gcGFzcyBleHRyYSBwYXJhbWV0ZXJzIHRvIHJ1bnFlbXUsIGUuZy4gImdsIiB0byBlbmFibGUgT3BlbkdMIGFjY2VsZXJhdGlvbi4KIAorIyBURVNUSU1BR0VfQk9PVF9QQVRURVJOUyBjYW4gYmUgdXNlZCB0byBvdmVycmlkZSBjZXJ0YWluIHBhdHRlcm5zIHVzZWQgdG8gY29tbXVuaWNhdGUgd2l0aCB0aGUgdGFyZ2V0IHdoZW4gYm9vdGluZywKKyMgaWYgYSBwYXR0ZXJuIGlzIG5vdCBzcGVjaWZpY2FsbHkgcHJlc2VudCBvbiB0aGlzIHZhcmlhYmxlIGEgZGVmYXVsdCB3aWxsIGJlIHVzZWQgd2hlbiBib290aW5nIHRoZSB0YXJnZXQuCisjIFRFU1RJTUFHRV9CT09UX1BBVFRFUk5TWzxmbGFnPl0gb3ZlcnJpZGVzIHRoZSBwYXR0ZXJuIHVzZWQgZm9yIHRoYXQgc3BlY2lmaWMgZmxhZywgd2hlcmUgZmxhZyBjb21lcyBmcm9tIGEgbGlzdCBvZiBhY2NlcHRlZCBmbGFncworIyBlLmcuIG5vcm1hbGx5IHRoZSBzeXN0ZW0gYm9vdHMgYW5kIHdhaXRzIGZvciBhIGxvZ2luIHByb21wdCAobG9naW46KSwgYWZ0ZXIgdGhhdCBpdCBzZW5kcyB0aGUgY29tbWFuZDogInJvb3RcbiIgdG8gbG9nIGFzIHRoZSByb290IHVzZXIKKyMgaWYgd2Ugd2FudGVkIHRvIGxvZyBpbiBhcyB0aGUgaHlwb3RoZXRpY2FsICJ3ZWJzZXJ2ZXIiIHVzZXIgZm9yIGV4YW1wbGUgd2UgY291bGQgc2V0IHRoZSBmb2xsb3dpbmc6CisjIFRFU1RJTUFHRV9CT09UX1BBVFRFUk5TID0gInNlbmRfbG9naW5fdXNlciBzZWFyY2hfbG9naW5fc3VjY2VlZGVkIgorIyBURVNUSU1BR0VfQk9PVF9QQVRURVJOU1tzZW5kX2xvZ2luX3VzZXJdID0gIndlYnNlcnZlclxuIgorIyBURVNUSU1BR0VfQk9PVF9QQVRURVJOU1tzZWFyY2hfbG9naW5fc3VjY2VlZGVkXSA9ICJ3ZWJzZXJ2ZXJAW2EtekEtWjAtOVwtXSs6fiMiCisjIFRoZSBhY2NlcHRlZCBmbGFncyBhcmUgdGhlIGZvbGxvd2luZzogc2VhcmNoX3JlYWNoZWRfcHJvbXB0LCBzZW5kX2xvZ2luX3VzZXIsIHNlYXJjaF9sb2dpbl9zdWNjZWVkZWQsIHNlYXJjaF9jbWRfZmluaXNoZWQuCisjIFRoZXkgYXJlIHByZWZpeGVkIHdpdGggZWl0aGVyIHNlYXJjaC9zZW5kLCB0byBkaWZmZXJlbnRpYXRlIGlmIHRoZSBwYXR0ZXJuIGlzIG1lYW50IHRvIGJlIHNlbnQgb3Igc2VhcmNoZWQgdG8vZnJvbSB0aGUgdGFyZ2V0IHRlcm1pbmFsCisKIFRFU1RfTE9HX0RJUiA/PSAiJHtXT1JLRElSfS90ZXN0aW1hZ2UiCiAKIFRFU1RfRVhQT1JUX0RJUiA/PSAiJHtUTVBESVJ9L3Rlc3RpbWFnZS8ke1BOfSIKQEAgLTQ2LDcgKzU4LDcgQEAKICAgICBwaW5nIGRhdGUgZGYgc3NoIHNjcCBweXRob24gcGVybCBnaSBwdGVzdCBwYXJzZWxvZ3MgXAogICAgIGxvZ3JvdGF0ZSBjb25ubWFuIHN5c3RlbWQgb2Vfc3lzbG9nIHBhbSBzdGFwIGxkZCB4b3JnIFwKICAgICBrZXJuZWxtb2R1bGUgZ2NjIGJ1aWxkY3BpbyBidWlsZGx6aXAgYnVpbGRnYWxjdWxhdG9yIFwKLSAgICBkbmYgcnBtIG9wa2cgYXB0IgorICAgIGRuZiBycG0gb3BrZyBhcHQgd2VzdG9uIgogCiBERUZBVUxUX1RFU1RfU1VJVEVTID0gIiR7QkFTSUNURVNUU1VJVEV9IgogCkBAIC02NCwxMCArNzYsMTMgQEAKIFRFU1RfU1VJVEVTID89ICIke0RFRkFVTFRfVEVTVF9TVUlURVN9IgogCiBURVNUX1FFTVVCT09UX1RJTUVPVVQgPz0gIjEwMDAiCitURVNUX09WRVJBTExfVElNRU9VVCA/PSAiIgogVEVTVF9UQVJHRVQgPz0gInFlbXUiCiBURVNUX1FFTVVQQVJBTVMgPz0gIiIKIFRFU1RfUlVOUUVNVVBBUkFNUyA/PSAiIgogCitURVNUSU1BR0VfQk9PVF9QQVRURVJOUyA/PSAiIgorCiBURVNUSU1BR0VERVBFTkRTID0gIiIKIFRFU1RJTUFHRURFUEVORFNfYXBwZW5kX3FlbXVhbGwgPSAiIHFlbXUtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgcWVtdS1oZWxwZXItbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgcWVtdS1oZWxwZXItbmF0aXZlOmRvX2FkZHRvX3JlY2lwZV9zeXNyb290IgogVEVTVElNQUdFREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0lNQUdFX1BLR1RZUEUnLCAncnBtJywgJ2NwaW8tbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QnLCAnJywgZCl9IgpAQCAtMTUwLDYgKzE2NSwyOSBAQAogZGVmIGdldF90ZXN0aW1hZ2VfcmVzdWx0X2lkKGNvbmZpZ3VyYXRpb24pOgogICAgIHJldHVybiAnJXNfJXNfJXNfJXMnICUgKGNvbmZpZ3VyYXRpb25bJ1RFU1RfVFlQRSddLCBjb25maWd1cmF0aW9uWydJTUFHRV9CQVNFTkFNRSddLCBjb25maWd1cmF0aW9uWydNQUNISU5FJ10sIGNvbmZpZ3VyYXRpb25bJ1NUQVJUVElNRSddKQogCitkZWYgZ2V0X3Rlc3RpbWFnZV9ib290X3BhdHRlcm5zKGQpOgorICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CisgICAgYm9vdF9wYXR0ZXJucyA9IGRlZmF1bHRkaWN0KHN0cikKKyAgICAjIE9ubHkgYWNjZXB0IGNlcnRhaW4gdmFsdWVzCisgICAgYWNjZXB0ZWRfcGF0dGVybnMgPSBbJ3NlYXJjaF9yZWFjaGVkX3Byb21wdCcsICdzZW5kX2xvZ2luX3VzZXInLCAnc2VhcmNoX2xvZ2luX3N1Y2NlZWRlZCcsICdzZWFyY2hfY21kX2ZpbmlzaGVkJ10KKyAgICAjIE5vdCBhbGwgcGF0dGVybnMgbmVlZCB0byBiZSBvdmVycmlkZW4sIGUuZy4gcGVyaGFwcyB3ZSBvbmx5IHdhbnQgdG8gY2hhbmdlIHRoZSB1c2VyCisgICAgYm9vdF9wYXR0ZXJuc19mbGFncyA9IGQuZ2V0VmFyRmxhZ3MoJ1RFU1RJTUFHRV9CT09UX1BBVFRFUk5TJykgb3Ige30KKyAgICBpZiBib290X3BhdHRlcm5zX2ZsYWdzOgorICAgICAgICBwYXR0ZXJuc19zZXQgPSBbcCBmb3IgcCBpbiBib290X3BhdHRlcm5zX2ZsYWdzLml0ZW1zKCkgaWYgcFswXSBpbiBkLmdldFZhcignVEVTVElNQUdFX0JPT1RfUEFUVEVSTlMnKS5zcGxpdCgpXQorICAgICAgICBmb3IgZmxhZywgZmxhZ3ZhbCBpbiBwYXR0ZXJuc19zZXQ6CisgICAgICAgICAgICAgICAgaWYgZmxhZyBub3QgaW4gYWNjZXB0ZWRfcGF0dGVybnM6CisgICAgICAgICAgICAgICAgICAgIGJiLmZhdGFsKCdUZXN0aW1hZ2U6IFRoZSBvbmx5IGFjY2VwdGVkIGJvb3QgcGF0dGVybnMgYXJlOiBzZWFyY2hfcmVhY2hlZF9wcm9tcHQsc2VuZF9sb2dpbl91c2VyLCBcCisgICAgICAgICAgICAgICAgICAgIHNlYXJjaF9sb2dpbl9zdWNjZWVkZWQsc2VhcmNoX2NtZF9maW5pc2hlZFxuIE1ha2Ugc3VyZSB5b3VyIFRFU1RJTUFHRV9CT09UX1BBVFRFUk5TPSVzIFwKKyAgICAgICAgICAgICAgICAgICAgY29udGFpbnMgYW4gYWNjZXB0ZWQgZmxhZy4nICUgZC5nZXRWYXIoJ1RFU1RJTUFHRV9CT09UX1BBVFRFUk5TJykpCisgICAgICAgICAgICAgICAgICAgIHJldHVybgorICAgICAgICAgICAgICAgICMgV2Uga25vdyBib290IHByb21wdCBpcyBzZWFyY2hlZCB0aHJvdWdoIGluIGJpbmFyeSBmb3JtYXQsIG90aGVycyBtaWdodCBiZSBleHByZXNzaW9ucworICAgICAgICAgICAgICAgIGlmIGZsYWcgPT0gJ3NlYXJjaF9yZWFjaGVkX3Byb21wdCc6CisgICAgICAgICAgICAgICAgICAgIGJvb3RfcGF0dGVybnNbZmxhZ10gPSBmbGFndmFsLmVuY29kZSgpCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgYm9vdF9wYXR0ZXJuc1tmbGFnXSA9IGZsYWd2YWwuZW5jb2RlKCkuZGVjb2RlKCd1bmljb2RlLWVzY2FwZScpCisgICAgcmV0dXJuIGJvb3RfcGF0dGVybnMKKworCiBkZWYgdGVzdGltYWdlX21haW4oZCk6CiAgICAgaW1wb3J0IG9zCiAgICAgaW1wb3J0IGpzb24KQEAgLTE2OCw3ICsyMDYsMTEgQEAKICAgICAgICAgIiIiCiAgICAgICAgIENhdGNoIFNJR1RFUk0gZnJvbSB3b3JrZXIgaW4gb3JkZXIgdG8gc3RvcCBxZW11LgogICAgICAgICAiIiIKLSAgICAgICAgcmFpc2UgUnVudGltZUVycm9yCisgICAgICAgIG9zLmtpbGwob3MuZ2V0cGlkKCksIHNpZ25hbC5TSUdJTlQpCisKKyAgICBkZWYgaGFuZGxlX3Rlc3RfdGltZW91dCh0aW1lb3V0KToKKyAgICAgICAgYmIud2FybigiR2xvYmFsIHRlc3QgdGltZW91dCByZWFjaGVkICglcyBzZWNvbmRzKSwgc3RvcHBpbmcgdGhlIHRlc3RzLiIgJSh0aW1lb3V0KSkKKyAgICAgICAgb3Mua2lsbChvcy5nZXRwaWQoKSwgc2lnbmFsLlNJR0lOVCkKIAogICAgIHRlc3RpbWFnZV9zYW5pdHkoZCkKIApAQCAtMjA3LDcgKzI0OSw3IEBACiAgICAgaWYgZC5nZXRWYXIoIlRFU1RfVEFSR0VUIikgPT0gInFlbXUiOgogICAgICAgICBmc3R5cGVzID0gW2ZzIGZvciBmcyBpbiBmc3R5cGVzIGlmIGZzIGluIHN1cHBvcnRlZF9mc3R5cGVzXQogICAgICAgICBpZiBub3QgZnN0eXBlczoKLSAgICAgICAgICAgIGJiLmZhdGFsKCdVbnN1cHBvcnRlZCBpbWFnZSB0eXBlIGJ1aWx0LiBBZGQgYSBjb21wdGlibGUgaW1hZ2UgdG8gJworICAgICAgICAgICAgYmIuZmF0YWwoJ1Vuc3VwcG9ydGVkIGltYWdlIHR5cGUgYnVpbHQuIEFkZCBhIGNvbXBhdGlibGUgaW1hZ2UgdG8gJwogICAgICAgICAgICAgICAgICAgICAgJ0lNQUdFX0ZTVFlQRVMuIFN1cHBvcnRlZCB0eXBlczogJXMnICUKICAgICAgICAgICAgICAgICAgICAgICcsICcuam9pbihzdXBwb3J0ZWRfZnN0eXBlcykpCiAgICAgcWZzdHlwZSA9IGZzdHlwZXNbMF0KQEAgLTIzOSwxMSArMjgxLDE0IEBACiAgICAgIyBHZXQgdXNlX2t2bQogICAgIGt2bSA9IG9lLnR5cGVzLnFlbXVfdXNlX2t2bShkLmdldFZhcignUUVNVV9VU0VfS1ZNJyksIGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpKQogCisgICAgIyBHZXQgT1ZNRgorICAgIG92bWYgPSBkLmdldFZhcigiUUVNVV9VU0VfT1ZNRiIpCisKICAgICBzbGlycCA9IEZhbHNlCiAgICAgaWYgZC5nZXRWYXIoIlFFTVVfVVNFX1NMSVJQIik6CiAgICAgICAgIHNsaXJwID0gVHJ1ZQogCi0gICAgIyBUT0RPOiBXZSB1c2UgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpbiBvZiBxZW11IHJ1bm5lciBiZWNhdXNlIG9mCisgICAgIyBUT0RPOiBXZSB1c2UgdGhlIGN1cnJlbnQgaW1wbGVtZW50YXRpb24gb2YgcWVtdSBydW5uZXIgYmVjYXVzZSBvZgogICAgICMgdGltZSBjb25zdHJhaW5zLCBxZW11IHJ1bm5lciByZWFsbHkgbmVlZHMgYSByZWZhY3RvciB0b28uCiAgICAgdGFyZ2V0X2t3YXJncyA9IHsgJ21hY2hpbmUnICAgICA6IG1hY2hpbmUsCiAgICAgICAgICAgICAgICAgICAgICAgJ3Jvb3RmcycgICAgICA6IHJvb3RmcywKQEAgLTI1Niw4ICszMDEsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAna3ZtJyAgICAgICAgIDoga3ZtLAogICAgICAgICAgICAgICAgICAgICAgICdzbGlycCcgICAgICAgOiBzbGlycCwKICAgICAgICAgICAgICAgICAgICAgICAnZHVtcF9kaXInICAgIDogZC5nZXRWYXIoIlRFU1RJTUFHRV9EVU1QX0RJUiIpLAorICAgICAgICAgICAgICAgICAgICAgICdzZXJpYWxfcG9ydHMnOiBsZW4oZC5nZXRWYXIoIlNFUklBTF9DT05TT0xFUyIpLnNwbGl0KCkpLAorICAgICAgICAgICAgICAgICAgICAgICdvdm1mJyAgICAgICAgOiBvdm1mLAogICAgICAgICAgICAgICAgICAgICB9CiAKKyAgICBpZiBkLmdldFZhcigiVEVTVElNQUdFX0JPT1RfUEFUVEVSTlMiKToKKyAgICAgICAgdGFyZ2V0X2t3YXJnc1snYm9vdF9wYXR0ZXJucyddID0gZ2V0X3Rlc3RpbWFnZV9ib290X3BhdHRlcm5zKGQpCisKICAgICAjIFRPRE86IEN1cnJlbnRseSBCQlBBVEggaXMgbmVlZGVkIGZvciBjdXN0b20gbG9hZGluZyBvZiB0YXJnZXRzLgogICAgICMgSXQgd291bGQgYmUgYmV0dGVyIHRvIGZpbmQgdGhlc2UgbW9kdWxlcyB1c2luZyBpbnN0cm9zcGVjdGlvbi4KICAgICB0YXJnZXRfa3dhcmdzWyd0YXJnZXRfbW9kdWxlc19wYXRoJ10gPSBkLmdldFZhcignQkJQQVRIJykKQEAgLTMxOSwxMCArMzY5LDE1IEBACiAgICAgICAgICMgV2UgbmVlZCB0byBjaGVjayBpZiBydW5xZW11IGVuZHMgdW5leHBlY3RlZGx5CiAgICAgICAgICMgb3IgaWYgdGhlIHdvcmtlciBzZW5kIHVzIGEgU0lHVEVSTQogICAgICAgICB0Yy50YXJnZXQuc3RhcnQocGFyYW1zPWQuZ2V0VmFyKCJURVNUX1FFTVVQQVJBTVMiKSwgcnVucWVtdXBhcmFtcz1kLmdldFZhcigiVEVTVF9SVU5RRU1VUEFSQU1TIikpCisgICAgICAgIGltcG9ydCB0aHJlYWRpbmcKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgdGhyZWFkaW5nLlRpbWVyKGludChkLmdldFZhcigiVEVTVF9PVkVSQUxMX1RJTUVPVVQiKSksIGhhbmRsZV90ZXN0X3RpbWVvdXQsIChpbnQoZC5nZXRWYXIoIlRFU1RfT1ZFUkFMTF9USU1FT1VUIikpLCkpLnN0YXJ0KCkKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICBwYXNzCiAgICAgICAgIHJlc3VsdHMgPSB0Yy5ydW5UZXN0cygpCi0gICAgZXhjZXB0IChSdW50aW1lRXJyb3IsIEJsb2NraW5nSU9FcnJvcikgYXMgZXJyOgotICAgICAgICBpZiBpc2luc3RhbmNlKGVyciwgUnVudGltZUVycm9yKToKLSAgICAgICAgICAgIGJiLmVycm9yKCd0ZXN0aW1hZ2UgcmVjZWl2ZWQgU0lHVEVSTSwgc2h1dHRpbmcgZG93bi4uLicpCisgICAgZXhjZXB0IChLZXlib2FyZEludGVycnVwdCwgQmxvY2tpbmdJT0Vycm9yKSBhcyBlcnI6CisgICAgICAgIGlmIGlzaW5zdGFuY2UoZXJyLCBLZXlib2FyZEludGVycnVwdCk6CisgICAgICAgICAgICBiYi5lcnJvcigndGVzdGltYWdlIGludGVycnVwdGVkLCBzaHV0dGluZyBkb3duLi4uJykKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIGJiLmVycm9yKCdydW5xZW11IGZhaWxlZCwgc2h1dHRpbmcgZG93bi4uLicpCiAgICAgICAgIGlmIHJlc3VsdHM6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY2xhc3Nlcy90ZXhpbmZvLmJiY2xhc3MgYi9wb2t5L21ldGEvY2xhc3Nlcy90ZXhpbmZvLmJiY2xhc3MKaW5kZXggNmIwZGVmMC4uZjQ2YmFjYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvdGV4aW5mby5iYmNsYXNzCisrKyBiL3Bva3kvbWV0YS9jbGFzc2VzL3RleGluZm8uYmJjbGFzcwpAQCAtNiwxMyArNiwxMyBAQAogIyBUZXhpbmZvIHJlY2lwZSwgeW91IGNhbiByZW1vdmUgdGV4aW5mby1uYXRpdmUgZnJvbSBBU1NVTUVfUFJPVklERUQgYW5kCiAjIG1ha2VpbmZvIGZyb20gU0FOSVRZX1JFUVVJUkVEX1VUSUxJVElFUy4KIAotVEVYREVQID0gInRleGluZm8tbmF0aXZlIgorVEVYREVQID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYXBpLWRvY3VtZW50YXRpb24nLCAndGV4aW5mby1yZXBsYWNlbWVudC1uYXRpdmUnLCAndGV4aW5mby1kdW1teS1uYXRpdmUnLCBkKX0iCiBURVhERVBfY2xhc3MtbmF0aXZlID0gInRleGluZm8tZHVtbXktbmF0aXZlIgogVEVYREVQX2NsYXNzLWNyb3NzID0gInRleGluZm8tZHVtbXktbmF0aXZlIgorVEVYREVQX2NsYXNzLWNyb3Nzc2RrID0gInRleGluZm8tZHVtbXktbmF0aXZlIgorVEVYREVQX2NsYXNzLWNyb3NzLWNhbmFkaWFuID0gInRleGluZm8tZHVtbXktbmF0aXZlIgogREVQRU5EU19hcHBlbmQgPSAiICR7VEVYREVQfSIKLVBBVEhfcHJlcGVuZF9jbGFzcy1uYXRpdmUgPSAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3RleGluZm8tZHVtbXktbmF0aXZlOiIKLVBBVEhfcHJlcGVuZF9jbGFzcy1jcm9zcyA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vdGV4aW5mby1kdW1teS1uYXRpdmU6IgogCiAjIGxpYnRvb2wtY3Jvc3MgZG9lc24ndCBpbmhlcml0IGNyb3NzCiBURVhERVBfcG4tbGlidG9vbC1jcm9zcyA9ICJ0ZXhpbmZvLWR1bW15LW5hdGl2ZSIKLVBBVEhfcHJlcGVuZF9wbi1saWJ0b29sLWNyb3NzID0gIiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS90ZXhpbmZvLWR1bW15LW5hdGl2ZToiCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3RvYXN0ZXIuYmJjbGFzcyBiL3Bva3kvbWV0YS9jbGFzc2VzL3RvYXN0ZXIuYmJjbGFzcwppbmRleCA2Y2VmMGI4Li45NTE4ZGRmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY2xhc3Nlcy90b2FzdGVyLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvdG9hc3Rlci5iYmNsYXNzCkBAIC0xMTMsNyArMTEzLDcgQEAKICAgICAgICAgICAgICAgICBwYXNzICAgICMgaWdub3JlIGxpbmVzIHdpdGhvdXQgdmFsaWQga2V5OiB2YWx1ZSBwYWlycwogICAgIHJldHVybiBwa2dkYXRhCiAKLXB5dGhvbiB0b2FzdGVyX3BhY2thZ2VfZHVtcGRhdGEoKSB7CitkZWYgX3RvYXN0ZXJfZHVtcGRhdGEocGtnZGF0YWRpciwgZCk6CiAgICAgIiIiCiAgICAgRHVtcHMgdGhlIGRhdGEgYWJvdXQgdGhlIHBhY2thZ2VzIGNyZWF0ZWQgYnkgYSByZWNpcGUKICAgICAiIiIKQEAgLTEyMiwxNiArMTIyLDI0IEBACiAgICAgaWYgbm90IGQuZ2V0VmFyKCdQQUNLQUdFUycpOgogICAgICAgICByZXR1cm4KIAotICAgIHBrZ2RhdGFkaXIgPSBkLmdldFZhcignUEtHREVTVFdPUksnKQogICAgIGxwa2dkYXRhID0ge30KICAgICBkYXRhZGlyID0gb3MucGF0aC5qb2luKHBrZ2RhdGFkaXIsICdydW50aW1lJykKIAogICAgICMgc2NhbiBhbmQgc2VuZCBkYXRhIGZvciBlYWNoIGdlbmVyYXRlZCBwYWNrYWdlCi0gICAgZm9yIGRhdGFmaWxlIGluIG9zLmxpc3RkaXIoZGF0YWRpcik6Ci0gICAgICAgIGlmIG5vdCBkYXRhZmlsZS5lbmRzd2l0aCgnLnBhY2thZ2VkJyk6Ci0gICAgICAgICAgICBscGtnZGF0YSA9IF90b2FzdGVyX2xvYWRfcGtnZGF0YWZpbGUoZGF0YWRpciwgZGF0YWZpbGUpCi0gICAgICAgICAgICAjIEZpcmUgYW4gZXZlbnQgY29udGFpbmluZyB0aGUgcGtnIGRhdGEKLSAgICAgICAgICAgIGJiLmV2ZW50LmZpcmUoYmIuZXZlbnQuTWV0YWRhdGFFdmVudCgiU2luZ2xlUGFja2FnZUluZm8iLCBscGtnZGF0YSksIGQpCisgICAgaWYgb3MucGF0aC5leGlzdHMoZGF0YWRpcik6CisgICAgICAgIGZvciBkYXRhZmlsZSBpbiBvcy5saXN0ZGlyKGRhdGFkaXIpOgorICAgICAgICAgICAgaWYgbm90IGRhdGFmaWxlLmVuZHN3aXRoKCcucGFja2FnZWQnKToKKyAgICAgICAgICAgICAgICBscGtnZGF0YSA9IF90b2FzdGVyX2xvYWRfcGtnZGF0YWZpbGUoZGF0YWRpciwgZGF0YWZpbGUpCisgICAgICAgICAgICAgICAgIyBGaXJlIGFuIGV2ZW50IGNvbnRhaW5pbmcgdGhlIHBrZyBkYXRhCisgICAgICAgICAgICAgICAgYmIuZXZlbnQuZmlyZShiYi5ldmVudC5NZXRhZGF0YUV2ZW50KCJTaW5nbGVQYWNrYWdlSW5mbyIsIGxwa2dkYXRhKSwgZCkKKworcHl0aG9uIHRvYXN0ZXJfcGFja2FnZV9kdW1wZGF0YSgpIHsKKyAgICBfdG9hc3Rlcl9kdW1wZGF0YShkLmdldFZhcignUEtHREVTVFdPUksnKSwgZCkKK30KKworcHl0aG9uIHRvYXN0ZXJfcGFja2FnZWRhdGFfZHVtcGRhdGEoKSB7CisgICAgIyBUaGlzIHBhdGggbmVlZHMgdG8gbWF0Y2ggZG9fcGFja2FnZWRhdGFbc3N0YXRlLWlucHV0ZGlyc10KKyAgICBfdG9hc3Rlcl9kdW1wZGF0YShvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ1dPUktESVInKSwgJ3BrZ2RhdGEtcGRhdGEtaW5wdXQnKSwgZCkKIH0KIAogIyAyLiBEdW1wIG91dHB1dCBpbWFnZSBmaWxlcyBpbmZvcm1hdGlvbgpAQCAtMzY2LDggKzM3NCw4IEBACiBhZGRoYW5kbGVyIHRvYXN0ZXJfYXJ0aWZhY3RzCiB0b2FzdGVyX2FydGlmYWN0c1tldmVudG1hc2tdID0gImJiLnJ1bnF1ZXVlLnJ1blF1ZXVlVGFza1NraXBwZWQgYmIucnVucXVldWUucnVuUXVldWVUYXNrQ29tcGxldGVkIgogCi1kb19wYWNrYWdlZGF0YV9zZXRzY2VuZVtwb3N0ZnVuY3NdICs9ICJ0b2FzdGVyX3BhY2thZ2VfZHVtcGRhdGEgIgotZG9fcGFja2FnZWRhdGFfc2V0c2NlbmVbdmFyZGVwc2V4Y2x1ZGVdICs9ICJ0b2FzdGVyX3BhY2thZ2VfZHVtcGRhdGEgIgorZG9fcGFja2FnZWRhdGFfc2V0c2NlbmVbcG9zdGZ1bmNzXSArPSAidG9hc3Rlcl9wYWNrYWdlZGF0YV9kdW1wZGF0YSAiCitkb19wYWNrYWdlZGF0YV9zZXRzY2VuZVt2YXJkZXBzZXhjbHVkZV0gKz0gInRvYXN0ZXJfcGFja2FnZWRhdGFfZHVtcGRhdGEgIgogCiBkb19wYWNrYWdlW3Bvc3RmdW5jc10gKz0gInRvYXN0ZXJfcGFja2FnZV9kdW1wZGF0YSAiCiBkb19wYWNrYWdlW3ZhcmRlcHNleGNsdWRlXSArPSAidG9hc3Rlcl9wYWNrYWdlX2R1bXBkYXRhICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jbGFzc2VzL3VuaW5hdGl2ZS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvdW5pbmF0aXZlLmJiY2xhc3MKaW5kZXggOWY4NjQ1YS4uNzA3OTliYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NsYXNzZXMvdW5pbmF0aXZlLmJiY2xhc3MKKysrIGIvcG9reS9tZXRhL2NsYXNzZXMvdW5pbmF0aXZlLmJiY2xhc3MKQEAgLTEsNCArMSw0IEBACi1VTklOQVRJVkVfTE9BREVSID89ICIke1VOSU5BVElWRV9TVEFHSU5HX0RJUn0tdW5pbmF0aXZlLyR7QlVJTERfQVJDSH0tbGludXgvbGliLyR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCVUlMRF9BUkNIJywgJ3g4Nl82NCcsICdsZC1saW51eC14ODYtNjQuc28uMicsICcnLCBkKX0ke0BiYi51dGlscy5jb250YWlucygnQlVJTERfQVJDSCcsICdpNjg2JywgJ2xkLWxpbnV4LnNvLjInLCAnJywgZCl9JHtAYmIudXRpbHMuY29udGFpbnMoJ0JVSUxEX0FSQ0gnLCAnYWFyY2g2NCcsICdsZC1saW51eC1hYXJjaDY0LnNvLjEnLCAnJywgZCl9IgorVU5JTkFUSVZFX0xPQURFUiA/PSAiJHtVTklOQVRJVkVfU1RBR0lOR19ESVJ9LXVuaW5hdGl2ZS8ke0JVSUxEX0FSQ0h9LWxpbnV4L2xpYi8ke0BiYi51dGlscy5jb250YWlucygnQlVJTERfQVJDSCcsICd4ODZfNjQnLCAnbGQtbGludXgteDg2LTY0LnNvLjInLCAnJywgZCl9JHtAYmIudXRpbHMuY29udGFpbnMoJ0JVSUxEX0FSQ0gnLCAnaTY4NicsICdsZC1saW51eC5zby4yJywgJycsIGQpfSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCVUlMRF9BUkNIJywgJ2FhcmNoNjQnLCAnbGQtbGludXgtYWFyY2g2NC5zby4xJywgJycsIGQpfSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdCVUlMRF9BUkNIJywgJ3BwYzY0bGUnLCAnbGQ2NC5zby4yJywgJycsIGQpfSIKIFVOSU5BVElWRV9TVEFHSU5HX0RJUiA/PSAiJHtTVEFHSU5HX0RJUn0iCiAKIFVOSU5BVElWRV9VUkwgPz0gInVuc2V0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NsYXNzZXMvdmFsYS5iYmNsYXNzIGIvcG9reS9tZXRhL2NsYXNzZXMvdmFsYS5iYmNsYXNzCmluZGV4IDYxNWViMzcuLmJjYWY2OGMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jbGFzc2VzL3ZhbGEuYmJjbGFzcworKysgYi9wb2t5L21ldGEvY2xhc3Nlcy92YWxhLmJiY2xhc3MKQEAgLTgsNyArOCw3IEBACiAjIE91ciBwYXRjaGVkIHZlcnNpb24gb2YgVmFsYSBsb29rcyBpbiBTVEFHSU5HX0RBVEFESVIgZm9yIC52YXBpIGZpbGVzCiBleHBvcnQgU1RBR0lOR19EQVRBRElSCiAjIFVwc3RyZWFtIFZhbGEgPj0gMC4xMSBsb29rcyBpbiBYREdfREFUQV9ESVJTIGZvciAudmFwaSBmaWxlcwotZXhwb3J0IFhER19EQVRBX0RJUlMgPSAiJHtTVEFHSU5HX0RBVEFESVJ9IgorZXhwb3J0IFhER19EQVRBX0RJUlMgPSAiJHtTVEFHSU5HX0RBVEFESVJ9OiR7U1RBR0lOR19MSUJESVJ9IgogCiAjIFBhY2thZ2UgYWRkaXRpb25hbCBmaWxlcwogRklMRVNfJHtQTn0tZGV2ICs9ICJcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9hYmlfdmVyc2lvbi5jb25mIGIvcG9reS9tZXRhL2NvbmYvYWJpX3ZlcnNpb24uY29uZgppbmRleCA0OTY0ODgwLi4yYmRjNTU2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9hYmlfdmVyc2lvbi5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL2FiaV92ZXJzaW9uLmNvbmYKQEAgLTUsMyArNSwxMSBAQAogIyB3aXRoIGdlbmVyYWwgYWdyZWVtZW50IGZyb20gdGhlIGNvcmUgdGVhbS4KICMKIE9FTEFZT1VUX0FCSSA9ICIxMiIKKworIworIyBIQVNIRVFVSVZfSEFTSF9WRVJTSU9OIGlzIGluamVjdGVkIGludG8gdGhlIG91dHB1dCBoYXNoIGNhbGN1bGF0aW9uIHVzZWQgYnkKKyMgaGFzaGVxdWl2LiBDaGFuZ2luZyB0aGlzIG1lYW5zIHByZXZpb3VzIGhhc2hlcyB3aWxsIG5vIGxvbmdlciBtYXRjaCwgYWxsb3dpbmcKKyMgYSByZXNldCBvZiB0aGUgZXF1aXZhbGVuY2UsIGZvciBleGFtcGxlIHdoZW4gcmVwcm9kdWNpYmlsaXR5IGlzc3VlcyBicmVhayB0aGUKKyMgZXhpc3RpbmcgbWF0Y2ggZGF0YS4gRGlzdHJvcyBjYW4gYWxzbyBhcHBlbmQgdG8gdGhpcyB2YWx1ZSBmb3IgdGhlIHNhbWUgZWZmZWN0LgorIworSEFTSEVRVUlWX0hBU0hfVkVSU0lPTiAgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2JpdGJha2UuY29uZiBiL3Bva3kvbWV0YS9jb25mL2JpdGJha2UuY29uZgppbmRleCAyNjNkOGFlLi40YjU0NGEyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9iaXRiYWtlLmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvYml0YmFrZS5jb25mCkBAIC0xMSw2ICsxMSw3IEBACiBiYXNlbGliW3ZhcmRlcHZhbHVlXSA9ICIke2Jhc2VsaWJ9IgogQkFTRUxJQiA9ICJsaWIiCiBCQVNFTElCX3Bvd2VycGM2NCA9ICJsaWI2NCIKK0JBU0VMSUJfcG93ZXJwYzY0bGUgPSAibGliNjQiCiAKICMgUGF0aCBwcmVmaXhlcwogZXhwb3J0IGJhc2VfcHJlZml4ID0gIiIKQEAgLTEyOSw3ICsxMzAsNyBAQAogVEFSR0VUX0FSQ0ggPSAiJHtUVU5FX0FSQ0h9IgogVEFSR0VUX09TID0gImxpbnV4JHtMSUJDRVhURU5TSU9OfSR7QUJJRVhURU5TSU9OfSIKIFRBUkdFVF9WRU5ET1IgPSAiLW9lIgotVEFSR0VUX1NZUyA9ICIke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0ke0BbJy0nICsgZC5nZXRWYXIoJ1RBUkdFVF9PUycpLCAnJ11bZC5nZXRWYXIoJ1RBUkdFVF9PUycpID09ICgnJyBvciAnY3VzdG9tJyldfSIKK1RBUkdFVF9TWVMgPSAiJHtUQVJHRVRfQVJDSH0ke1RBUkdFVF9WRU5ET1J9LSR7VEFSR0VUX09TfSIKIFRBUkdFVF9QUkVGSVggPSAiJHtUQVJHRVRfU1lTfS0iCiBUQVJHRVRfQ0NfQVJDSCA9ICIke1RVTkVfQ0NBUkdTfSIKIFRBUkdFVF9MRF9BUkNIID0gIiR7VFVORV9MREFSR1N9IgpAQCAtMTM4LDcgKzEzOSw3IEBACiBTREtNQUNISU5FID8/PSAieDg2XzY0IgogU0RLX09TID0gIiR7QlVJTERfT1N9IgogU0RLX1ZFTkRPUiA9ICItb2VzZGsiCi1TREtfU1lTID0gIiR7U0RLX0FSQ0h9JHtTREtfVkVORE9SfSR7QFsnLScgKyBkLmdldFZhcignU0RLX09TJyksICcnXVtkLmdldFZhcignU0RLX09TJykgPT0gKCcnIG9yICdjdXN0b20nKV19IgorU0RLX1NZUyA9ICIke1NES19BUkNIfSR7U0RLX1ZFTkRPUn0tJHtTREtfT1N9IgogU0RLX1BSRUZJWCA9ICIke1NES19TWVN9LSIKIFNES19DQ19BUkNIID0gIiR7QlVJTERfQ0NfQVJDSH0iCiBTREtQS0dTVUZGSVggPSAibmF0aXZlc2RrIgpAQCAtMzI0LDcgKzMyNSw3IEBACiBTRUNUSU9OXyR7UE59LXN0YXRpY2RldiA9ICJkZXZlbCIKIFJERVBFTkRTXyR7UE59LXN0YXRpY2RldiA9ICIke1BOfS1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCiAKLUZJTEVTXyR7UE59LWRiZyA9ICIvdXNyL2xpYi9kZWJ1ZyAvdXNyL3NyYy9kZWJ1ZyIKK0ZJTEVTXyR7UE59LWRiZyA9ICIvdXNyL2xpYi9kZWJ1ZyAvdXNyL2xpYi9kZWJ1Zy1zdGF0aWMgL3Vzci9zcmMvZGVidWciCiBTRUNUSU9OXyR7UE59LWRiZyA9ICJkZXZlbCIKIEFMTE9XX0VNUFRZXyR7UE59LWRiZyA9ICIxIgogCkBAIC00MjksNyArNDMwLDggQEAKIE9MREVTVF9LRVJORUwgPSAiMy4yLjAiCiBPTERFU1RfS0VSTkVMX2FhcmNoNjQgPSAiMy4xNCIKIE9MREVTVF9LRVJORUxfbmlvczIgPSAiMy4xOSIKLU9MREVTVF9LRVJORUxfcmlzY3YzMiA9ICI0LjE1IgorT0xERVNUX0tFUk5FTF9wb3dlcnBjNjRsZSA9ICIzLjEwLjAiCitPTERFU1RfS0VSTkVMX3Jpc2N2MzIgPSAiNS40IgogT0xERVNUX0tFUk5FTF9yaXNjdjY0ID0gIjQuMTUiCiAKICMgU0RLX09MREVTVF9LRVJORUwgY2FuJ3QgYmUgc2V0IHVzaW5nIG92ZXJyaWRlcyBzaW5jZSB0aGVyZSBhcmUKQEAgLTQ4MSwxNCArNDgzLDE0IEBACiBIT1NUVE9PTFNfRElSID0gIiR7VE1QRElSfS9ob3N0dG9vbHMiCiAKICMgVG9vbHMgbmVlZGVkIHRvIHJ1biBidWlsZHMgd2l0aCBPRS1Db3JlCi0jIHB5dGhvbiBpcyBzcGVjaWFsIGNhc2VkIHRvIHBvaW50IGF0IHB5dGhvbjIKIEhPU1RUT09MUyArPSAiIFwKICAgICBbIGFyIGFzIGF3ayBiYXNlbmFtZSBiYXNoIGJ6aXAyIGNhdCBjaGdycCBjaG1vZCBjaG93biBjaHJwYXRoIGNtcCBjb21tIGNwIGNwaW8gXAogICAgIGNwcCBjdXQgZGF0ZSBkZCBkaWZmIGRpZmZzdGF0IGRpcm5hbWUgZHUgZWNobyBlZ3JlcCBlbnYgZXhwYW5kIGV4cHIgZmFsc2UgXAogICAgIGZncmVwIGZpbGUgZmluZCBmbG9jayBnKysgZ2F3ayBnY2MgZ2V0Y29uZiBnZXRvcHQgZ2l0IGdyZXAgZ3VuemlwIGd6aXAgXAotICAgIGhlYWQgaG9zdG5hbWUgaWNvbnYgaWQgaW5zdGFsbCBsZCBsZGQgbG4gbHMgbWFrZSBtYWtlaW5mbyBtZDVzdW0gbWtkaXIgbWtub2QgXAotICAgIG1rdGVtcCBtdiBubSBvYmpjb3B5IG9iamR1bXAgb2QgcGF0Y2ggcGVybCBwb2QybWFuIHByIHByaW50ZiBwd2QgcHl0aG9uMiBcCi0gICAgcHl0aG9uMi43IHB5dGhvbjMgcmFubGliIHJlYWRlbGYgcmVhZGxpbmsgcmVhbHBhdGggcm0gcm1kaXIgcnBjZ2VuIHNlZCBzZXEgc2ggc2hhMjU2c3VtIFwKKyAgICBoZWFkIGhvc3RuYW1lIGljb252IGlkIGluc3RhbGwgbGQgbGRkIGxuIGxzIG1ha2UgbWQ1c3VtIG1rZGlyIG1rbm9kIFwKKyAgICBta3RlbXAgbXYgbm0gb2JqY29weSBvYmpkdW1wIG9kIHBhdGNoIHBlcmwgcHIgcHJpbnRmIHB3ZCBcCisgICAgcHl0aG9uMyByYW5saWIgcmVhZGVsZiByZWFkbGluayByZWFscGF0aCBybSBybWRpciBycGNnZW4gc2VkIHNlcSBzaCBcCisgICAgc2hhMXN1bSBzaGEyMjRzdW0gc2hhMjU2c3VtIHNoYTM4NHN1bSBzaGE1MTJzdW0gXAogICAgIHNsZWVwIHNvcnQgc3BsaXQgc3RhdCBzdHJpbmdzIHN0cmlwIHRhaWwgdGFyIHRlZSB0ZXN0IHRvdWNoIHRyIHRydWUgdW5hbWUgXAogICAgIHVuaXEgd2Mgd2dldCB3aGljaCB4YXJncyBcCiAiCkBAIC01ODcsOCArNTg5LDYgQEAKIEJVSUxEU0RLX0xERkxBR1MgPSAiLVdsLC1PMSIKIAogTElOS0VSX0hBU0hfU1RZTEUgPz89ICJnbnUiCi0jIG1pcHMgZG9lcyBub3Qgc3VwcG9ydCBHTlUgaGFzaCBzdHlsZSB0aGVyZWZvcmUgd2Ugb3ZlcnJpZGUKLUxJTktFUl9IQVNIX1NUWUxFX21pcHNhcmNoID0gInN5c3YiCiAKIFRBUkdFVF9MSU5LX0hBU0hfU1RZTEUgPz0gIiR7QFsnLVdsLC0taGFzaC1zdHlsZT1nbnUnLCcnXVtkLmdldFZhcignTElOS0VSX0hBU0hfU1RZTEUnKSAhPSAnZ251J119IgogCkBAIC01OTYsNiArNTk2LDggQEAKIAogZXhwb3J0IExERkxBR1MgPSAiJHtUQVJHRVRfTERGTEFHU30iCiBUQVJHRVRfTERGTEFHUyA9ICItV2wsLU8xICR7VEFSR0VUX0xJTktfSEFTSF9TVFlMRX0gJHtBU05FRURFRH0iCisjIG1pcHMgZG9lcyBub3Qgc3VwcG9ydCBHTlUgaGFzaCBzdHlsZSB0aGVyZWZvcmUgd2Ugb3ZlcnJpZGUKK0xJTktFUl9IQVNIX1NUWUxFX21pcHNhcmNoX2xpYmMtbXVzbCA9ICJzeXN2IgogCiAjIFBhc3MgcGFyYWxsZWwgbWFrZSBvcHRpb25zIHRvIHRoZSBjb21waWxlIHRhc2sKIEVYVFJBX09FTUFLRV9wcmVwZW5kX3Rhc2stY29tcGlsZSA9ICIke1BBUkFMTEVMX01BS0V9ICIKQEAgLTc5Myw3ICs3OTUsMTAgQEAKIFBBUkFMTEVMX01BS0UgPz0gIi1qICR7QG9lLnV0aWxzLmNwdV9jb3VudCgpfSIKIAogIyBEZWZhdWx0IHBhcmFsbGVsaXNtIGFuZCByZXNvdXJjZSB1c2FnZSBmb3IgeHoKLVhaX0RFRkFVTFRTID89ICItLW1lbWxpbWl0PTUwJSAtLXRocmVhZHM9JHtAb2UudXRpbHMuY3B1X2NvdW50KCl9IgorWFpfTUVNTElNSVQgPz0gIjUwJSIKK1haX1RIUkVBRFMgPz0gIiR7QG9lLnV0aWxzLmNwdV9jb3VudChhdF9sZWFzdD0yKX0iCitYWl9ERUZBVUxUUyA/PSAiLS1tZW1saW1pdD0ke1haX01FTUxJTUlUfSAtLXRocmVhZHM9JHtYWl9USFJFQURTfSIKK1haX0RFRkFVTFRTW3ZhcmRlcHNleGNsdWRlXSArPSAiWFpfTUVNTElNSVQgWFpfVEhSRUFEUyIKIAogIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCiAjIE1hZ2ljIENvb2tpZSBmb3IgU0FOSVRZIENIRUNLCkBAIC04ODUsNyArODkwLDcgQEAKICAgICBmaWxlLWNoZWNrc3VtcyBweXRob24gZnVuYyB0YXNrIGV4cG9ydCB1bmV4cG9ydCBub2V4ZWMgbm9zdGFtcCBkaXJzIGNsZWFuZGlycyBcCiAgICAgc3N0YXRlLWxvY2tmaWxlLXNoYXJlZCBwcmVmdW5jcyBwb3N0ZnVuY3MgZXhwb3J0X2Z1bmMgZGVwdGFzayByZGVwdGFzayBcCiAgICAgcmVjcmRlcHRhc2sgbm9kZXBycmVjcyBzdGFtcC1leHRyYS1pbmZvIHNzdGF0ZS1vdXRwdXRkaXJzIGZpbGVuYW1lIGxpbmVubyBcCi0gICAgcHJvZ3Jlc3MgbWNkZXBlbmRzIgorICAgIHByb2dyZXNzIG1jZGVwZW5kcyBudW1iZXJfdGhyZWFkcyIKIAogTUxQUkVGSVggPz89ICIiCiBNVUxUSUxJQl9WQVJJQU5UUyA/Pz0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtZGlzdHJvdmFycy5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kZWZhdWx0LWRpc3Ryb3ZhcnMuaW5jCmluZGV4IDEwZDg2Y2YuLjQzM2Q0YjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2RlZmF1bHQtZGlzdHJvdmFycy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGVmYXVsdC1kaXN0cm92YXJzLmluYwpAQCAtMTAsNyArMTAsNyBAQAogTE9DQUxFX1VURjhfSVNfREVGQVVMVCA/PSAiMSIKIExPQ0FMRV9VVEY4X0lTX0RFRkFVTFRfY2xhc3MtbmF0aXZlc2RrID0gIjAiCiAKLURJU1RST19GRUFUVVJFU19ERUZBVUxUID89ICJhY2wgYWxzYSBhcmdwIGJsdWV0b290aCBleHQyIGlwdjQgaXB2NiBsYXJnZWZpbGUgcGNtY2lhIHVzYmdhZGdldCB1c2Job3N0IHdpZmkgeGF0dHIgbmZzIHplcm9jb25mIHBjaSAzZyBuZmMgeDExIgorRElTVFJPX0ZFQVRVUkVTX0RFRkFVTFQgPz0gImFjbCBhbHNhIGFyZ3AgYmx1ZXRvb3RoIGV4dDIgaXB2NCBpcHY2IGxhcmdlZmlsZSBwY21jaWEgdXNiZ2FkZ2V0IHVzYmhvc3Qgd2lmaSB4YXR0ciBuZnMgemVyb2NvbmYgcGNpIDNnIG5mYyB4MTEgdmZhdCIKIERJU1RST19GRUFUVVJFUyA/PSAiJHtESVNUUk9fRkVBVFVSRVNfREVGQVVMVH0iCiBJTUFHRV9GRUFUVVJFUyA/PSAiIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvZGlzdHJvX2FsaWFzLmluYwppbmRleCBlMzE0NjQyLi4wZTRhOWE5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9kaXN0cm9fYWxpYXMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL2Rpc3Ryb19hbGlhcy5pbmMKQEAgLTE1LDcgKzE1LDggQEAKIERJU1RST19QTl9BTElBU19wbi1hdGsgPSAiRmVkb3JhPWF0ayBPcGVuU3VTRT1hdGsiCiBESVNUUk9fUE5fQUxJQVNfcG4tYXZhaGktdWkgPSAiVWJ1bnR1PWF2YWhpLWRpc2NvdmVyIERlYmlhbj1hdmFoaS1kaXNjb3ZlciIKIERJU1RST19QTl9BTElBU19wbi1iYWJlbHRyYWNlID0gIk9TUERUIgotRElTVFJPX1BOX0FMSUFTX3BuLWJqYW0gPSAiT3BlblN1U0U9Ym9vc3QtamFtIERlYmluYT1iamFtIgorRElTVFJPX1BOX0FMSUFTX3BuLWJhYmVsdHJhY2UyID0gIk9TUERUIgorRElTVFJPX1BOX0FMSUFTX3BuLWJqYW0gPSAiT3BlblN1U0U9Ym9vc3QtamFtIERlYmlhbj1iamFtIgogRElTVFJPX1BOX0FMSUFTX3BuLWJsa3Rvb2wgPSAiRGViaWFuPWJsa3Rvb2wgTWFuZHJpdmE9YmxrdG9vbCIKIERJU1RST19QTl9BTElBU19wbi1ibHVlejUgPSAiRmVkb3JhPWJsdWV6ICBPcGVuc3VzZT1ibHVleiIKIERJU1RST19QTl9BTElBU19wbi1ib290Y2hhcnQyID0gIkZlZG9yYT1ib290Y2hhcnQyIE9wZW5zdXNlPWJvb3RjaGFydCIKQEAgLTEzMCw3ICsxMzEsNyBAQAogRElTVFJPX1BOX0FMSUFTX3BuLWluaXRyYW1mcy1saXZlLWluc3RhbGwtZWZpID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC1lZmktdGVzdGZzID0gIk9FLUNvcmUiCiBESVNUUk9fUE5fQUxJQVNfcG4taW5pdHJhbWZzLWxpdmUtaW5zdGFsbC10ZXN0ZnMgPSAiT0UtQ29yZSIKLURJU1RST19QTl9BTElBU19wbi1pbml0c2NyaXB0cyA9ICJGZWRvcmE9aW5pdHNjcmlwdHMgTWFuZHJhdmlhPWluaXRzY3JpcHRzIgorRElTVFJPX1BOX0FMSUFTX3BuLWluaXRzY3JpcHRzID0gIkZlZG9yYT1pbml0c2NyaXB0cyBNYW5kcml2YT1pbml0c2NyaXB0cyIKIERJU1RST19QTl9BTElBU19wbi1pcHJvdXRlMiA9ICJPU1BEVCIKIERJU1RST19QTl9BTElBU19wbi1qcGVnID0gIk9wZW5TdVNFPWxpYmpwZWcgVWJ1bnR1PWxpYmpwZWc2MiIKIERJU1RST19QTl9BTElBU19wbi1rZXJuZWwtZGV2c3JjID0gIkRlYmlhbj1saW51eC1iYXNlIFVidW50dT1saW51eCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYwppbmRleCBkODVlNWI2Li4xNTA4YWQxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9tYWludGFpbmVycy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jCkBAIC0zNSw2ICszNSw4IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hbHNhLXBsdWdpbnMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2Etc3RhdGUgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtdG9vbHMgPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWFsc2EtdG9wb2xvZ3ktY29uZiA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS11Y20tY29uZiA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS11dGlscyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYWxzYS11dGlscy1zY3JpcHRzID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hcG1kID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgpAQCAtNDcsOSArNDksOSBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tYXNwZWxsID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXNzaW1wID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0LXNwaTItYXRrID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXQtc3BpMi1jb3JlID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tYXRrID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXQtc3BpMi1hdGsgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYXQtc3BpMi1jb3JlID0gIlRpbSBPcmxpbmcgPHRpbW90aHkudC5vcmxpbmdAbGludXguaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWF0ayA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdHRyID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdXRvY29uZiA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdXRvY29uZi1hcmNoaXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKQEAgLTU3LDYgKzU5LDcgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWF2YWhpID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1hdmFoaS11aSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYmFiZWx0cmFjZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYWJlbHRyYWNlMiA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNlLWZpbGVzID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tYmFzZS1wYXNzd2QgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1iYXNoID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCkBAIC04Miw2ICs4NSw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1idWlsZC1jb21wYXJlID0gIlBhdWwgRWdnbGV0b24gPHBhdWwuZWdnbGV0b25AbGludXguaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkLXN5c3Jvb3RzID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkZXIgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tYnVpbGR0b29scy1leHRlbmRlZC10YXJiYWxsID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1aWxkdG9vbHMtdGFyYmFsbCA9ICJSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1idXN5Ym94ID0gIkFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWJ1c3lib3gtaW5pdHRhYiA9ICJEZW55cyBEbXl0cml5ZW5rbyA8ZGVueXNAdGkuY29tPiIKQEAgLTkxLDggKzk1LDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNhbnRhcmVsbC1mb250cyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jY2FjaGUgPSAiUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY2RydG9vbHMtbmF0aXZlID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jaGtjb25maWcgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNoa2NvbmZpZy1hbHRlcm5hdGl2ZXMtbmF0aXZlID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jaHJwYXRoID0gIllpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jbHV0dGVyLTEuMCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNsdXR0ZXItZ3N0LTMuMCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKQEAgLTEwMyw3ICsxMDUsNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tY29ubm1hbiA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbm5tYW4tY29uZiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWNvbm5tYW4tZ25vbWUgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jb25zb2xlLXRvb2xzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb25zb2xla2l0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1jb3JlLWltYWdlLWJhc2UgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY29yZS1pbWFnZS1taW5pbWFsID0gIlJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPiIKQEAgLTEzNCw3ICsxMzUsNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tY3J5cHRvZGV2LXRlc3RzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWN1cHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWN1cmwgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1jdmUtY2hlY2stdG9vbCA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWN2ZS11cGRhdGUtZGItbmF0aXZlID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tY3dhdXRvbWFjcm9zID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGIgPSAiTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPiIKQEAgLTE0Nyw2ICsxNDcsNyBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tZGVwbW9kd3JhcHBlci1jcm9zcyA9ICJNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZGVza3RvcC1maWxlLXV0aWxzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRoY3AgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpZmZvc2NvcGUgPSAiSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpZmZzdGF0ID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1kaWZmdXRpbHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWRpc3RjYyA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgpAQCAtMTY3LDcgKzE2OCw3IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1lZmlib290bWdyID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZWxmdXRpbHMgPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWVsbCA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZW5jaGFudCA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWVuY2hhbnQyID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZW5jb2RpbmdzID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZXBpcGhhbnkgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZXRodG9vbCA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAZ21haWwuY29tPiIKQEAgLTE4Miw3ICsxODMsNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tZm9udC1hbGlhcyA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnQtdXRpbCA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWZvbnRjb25maWcgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1mb29tYXRpYy1maWx0ZXJzID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1mb3JtZmFjdG9yID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZnJlZXR5cGUgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1mcmliaWRpID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgpAQCAtMTkxLDE0ICsxOTEsMTAgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYyA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1jcm9zcy0ke1RBUkdFVF9BUkNIfSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1jcm9zcy1jYW5hZGlhbi0ke1RSQU5TTEFURURfVEFSR0VUX0FSQ0h9ID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLWNyb3NzLWluaXRpYWwtJHtUQVJHRVRfQVJDSH0gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2MtY3Jvc3NzZGstJHtTREtfU1lTfSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1jcm9zc3Nkay1pbml0aWFsLSR7U0RLX1NZU30gPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2MtcnVudGltZSA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1zYW5pdGl6ZXJzID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLXNvdXJjZS04LjMuMCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjYy1zb3VyY2UtOS4yLjAgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nY2NtYWtlZGVwID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NjLXNvdXJjZS05LjMuMCA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdjb25mID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2NyID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdkYiA9ICJLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPiIKQEAgLTIyMSw3ICsyMTcsNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tZ2xpZGUgPSAiT3RhdmlvIFNhbHZhZG9yIDxvdGF2aW8uc2FsdmFkb3JAb3NzeXN0ZW1zLmNvbS5icj4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbXAgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS1kZXNrdG9wLXRlc3RpbmcgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1nbm9tZS10aGVtZXMtc3RhbmRhcmQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nbnUtY29uZmlnID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdudS1lZmkgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWdudXBnID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCkBAIC0yNTcsMTAgKzI1Miw4IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nc3RyZWFtZXIxLjAtcHl0aG9uID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ3N0cmVhbWVyMS4wLXZhYXBpID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrKyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWd0ayszID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tZ3RrLWRvYyA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1ndGstaWNvbi11dGlscy1uYXRpdmUgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1nemlwID0gIkRlbnlzIERteXRyaXllbmtvIDxkZW55c0B0aS5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taGFyZmJ1enogPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1oZHBhcm0gPSAiRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4iCkBAIC0yODcsMTAgKzI4MCwxMiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4taXB0YWJsZXMgPSAiQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pcHV0aWxzID0gIkNoYW5naHllb2sgQmFlIDxjaGFuZ2h5ZW9rLmJhZUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4taXNvLWNvZGVzID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWl0c3Rvb2wgPSAiQW5kcmVhcyBNw7xsbGVyIDxzY2huaXR6ZWx0b255QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1pdyA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmpwZWctdHVyYm8gPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1qc29uLWMgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWpzb24tZ2xpYiA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tanF1ZXJ5ID0gIkpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1rYmQgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4ta2Vybi10b29scy1uYXRpdmUgPSAiQnJ1Y2UgQXNoZmllbGQgPGJydWNlLmFzaGZpZWxkQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1rZXJuZWwtZGV2c3JjID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEBnbWFpbC5jb20+IgpAQCAtMzQ2LDcgKzM0MSw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpY2FsID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWNlID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWQzdGFnID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJpZG4gPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaWRuMiA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYmlucHV0ID0gIlJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGliaml0dGVyZW50cm9weSA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKQEAgLTM1Nyw3ICszNTEsNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibW9kdWxlLWJ1aWxkLXBlcmwgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibW9kdWxlbWQtdjEgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibmV3dCA9ICJIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbGlibmV3dC1weXRob24gPSAiSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5sID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5vdGlmeSA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYm5zbDIgPSAiS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4iCkBAIC0zOTMsMTUgKzM4NiwxOCBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidG9vbCA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ0b29sLWNyb3NzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnRvb2wtbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnVjb250ZXh0ID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidW5pc3RyaW5nID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidW53aW5kID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidXJjdSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1cmktcGVybCA9ICJUaW0gT3JsaW5nIDx0aW1vdGh5LnQub3JsaW5nQGxpbnV4LmludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ1c2IxID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidWJvb3RlbnYgPSAiU3RlZmFubyBCYWJpYyA8c2JhYmljQGRlbnguZGU+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlidmEgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ2YS11dGlscyA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLWxpYnZvcmJpcyA9ICJUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlid2VicCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1saWJ3cGUgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieDExID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGF1ID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbGlieGNiID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgpAQCAtNDk2LDcgKzQ5Miw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1taW5nZXR0eSA9ICJZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWluaS14LXNlc3Npb24gPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1taW5pY29tID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbWtmb250ZGlyID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbWtmb250c2NhbGUgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1ta2xpYnMtbmF0aXZlID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW1tYy11dGlscyA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKQEAgLTUzMSw4ICs1MjYsNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tbmZzLXV0aWxzID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW5pbmphID0gIktoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbnB0aCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1uc3ByID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tbnNzID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tbnNzLW15aG9zdG5hbWUgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1vZm9ubyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLW9wZW5zYmkgPSAiQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPiIKQEAgLTU1Nyw3ICs1NTAsNiBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tcGNtYW5mbSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wZXJmID0gIkJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcGVybCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1wZXJsLW5hdGl2ZSA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1waWdsaXQgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1waWd6ID0gIkhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1waW5lbnRyeSA9ICJBcm1pbiBLdXN0ZXIgPGFrdXN0ZXI4MDhAZ21haWwuY29tPiIKQEAgLTU4MCwyMCArNTcyLDE4IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wdWxzZWF1ZGlvID0gIlRhbnUgS2Fza2luZW4gPHRhbnVrQGlraS5maT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1wdWxzZWF1ZGlvLWNsaWVudC1jb25mLXNhdG8gPSAiVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB1enpsZXMgPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24gPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1uYXRpdmUgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKLVJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbi1zZXR1cHRvb2xzID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWFzeW5jID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCitSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWN5dGhvbiA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1kYnVzID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWRvY3V0aWxzID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWV4dHJhcyA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1maWxlLXV0aWxzID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLWdpdCA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1naXRkYiA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1pbmlwYXJzZSA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1saWJhcmNoaXZlLWMgPSAiSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbWFnaWMgPSAiSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbWFrbyA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1uYXRpdmUgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtbm9zZSA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1udW1weSA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1wYnIgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKQEAgLTYwMSw2ICs1OTEsNyBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1weWNhaXJvID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXB5Z21lbnRzID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1weXRob24zLXB5Z29iamVjdCA9ICJPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+IgorUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1weXBhcnNpbmcgPSAiT2xla3NhbmRyIEtyYXZjaHVrIDxvcGVuLnNvdXJjZUBvbGVrc2FuZHIta3JhdmNodWsuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXB5dGhvbjMtc2NvbnMgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zY29ucy1uYXRpdmUgPSAiVGltIE9ybGluZyA8dGltb3RoeS50Lm9ybGluZ0BsaW51eC5pbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tcHl0aG9uMy1zZXR1cHRvb2xzID0gIk9sZWtzYW5kciBLcmF2Y2h1ayA8b3Blbi5zb3VyY2VAb2xla3NhbmRyLWtyYXZjaHVrLmNvbT4iCkBAIC02NTcsNyArNjQ4LDYgQEAKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c2ZzdXRpbHMgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c2tsb2dkID0gIkNoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNsaW51eCA9ICJBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4iCi1SRUNJUEVfTUFJTlRBSU5FUl9wbi1zeXNwcm9mID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3N0YXQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQgPSAiQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXN5c3RlbWQtYm9vdCA9ICJDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+IgpAQCAtNjc4LDcgKzY2OCw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10Y2wgPSAiWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRjcC13cmFwcGVycyA9ICJSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXN0ZXhwb3J0LXRhcmJhbGwgPSAiUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdGV4aTJodG1sID0gIlJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRleGluZm8gPSAiQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10ZXhpbmZvLWR1bW15LW5hdGl2ZSA9ICJBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXRpZmYgPSAiQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+IgpAQCAtNjg3LDcgKzY3Niw2IEBACiBSRUNJUEVfTUFJTlRBSU5FUl9wbi10emNvZGUtbmF0aXZlID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdHpkYXRhID0gIkFybWluIEt1c3RlciA8YWt1c3RlcjgwOEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdS1ib290ID0gIk1hcmVrIFZhc3V0IDxtYXJlay52YXN1dEBnbWFpbC5jb20+IgotUkVDSVBFX01BSU5UQUlORVJfcG4tdS1ib290LWZ3LXV0aWxzID0gIk1hcmVrIFZhc3V0IDxtYXJlay52YXN1dEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdS1ib290LXRvb2xzID0gIk1hcmVrIFZhc3V0IDxtYXJlay52YXN1dEBnbWFpbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4tdWRldi1leHRyYWNvbmYgPSAiUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi11bmZzMyA9ICJSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPiIKQEAgLTcyNCw2ICs3MTIsNyBAQAogUkVDSVBFX01BSU5UQUlORVJfcG4td2ljLXRvb2xzID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4td2lyZWxlc3MtcmVnZGIgPSAiQWRyaWFuIEJ1bmsgPGJ1bmtAa2VybmVsLm9yZz4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi13cGEtc3VwcGxpY2FudCA9ICJDaGFuZ2h5ZW9rIEJhZSA8Y2hhbmdoeWVvay5iYWVAZ21haWwuY29tPiIKK1JFQ0lQRV9NQUlOVEFJTkVSX3BuLXdwZWJhY2tlbmQtZmRvID0gIkFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPiIKIFJFQ0lQRV9NQUlOVEFJTkVSX3BuLXgxMXBlcmYgPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCiBSRUNJUEVfTUFJTlRBSU5FUl9wbi14MjY0ID0gIkFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+IgogUkVDSVBFX01BSU5UQUlORVJfcG4teGF1dGggPSAiQXJtaW4gS3VzdGVyIDxha3VzdGVyODA4QGdtYWlsLmNvbT4iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9wdGVzdC1wYWNrYWdlbGlzdHMuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvcHRlc3QtcGFja2FnZWxpc3RzLmluYwppbmRleCBiYjQ3MjRjLi5jMTNmZjcyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9wdGVzdC1wYWNrYWdlbGlzdHMuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3B0ZXN0LXBhY2thZ2VsaXN0cy5pbmMKQEAgLTQ3LDMwICs0NywzNSBAQAogICAgIHF1aWx0LXB0ZXN0IFwKICAgICBzZWQtcHRlc3QgXAogICAgIHNsYW5nLXB0ZXN0IFwKKyAgICB3YXlsYW5kLXB0ZXN0IFwKICAgICB6bGliLXB0ZXN0IFwKICIKIAogI1BURVNUU19QUk9CTEVNUyA9ICJcCiAjICAgIHFlbXUtcHRlc3QgXCAjIERvZXNuJ3QgcnVuIGFueSB0ZXN0cz8KICMgICAgcnVieS1wdGVzdCBcICMgVGltZW91dAotIyAgICBtZGFkbS1wdGVzdCBcICMgVGltZW91dAogIyAgICBjbHV0dGVyLTEuMC1wdGVzdCBcICMgRG9lc24ndCBidWlsZCBkdWUgdG8gZGVwZW5kcyBvbiBjb2dsLTEuMAorIyAgICBsejQtcHRlc3QgXCAjIE5lZWRzIGEgcmV3cml0ZQorIyAgICBydC10ZXN0cy1wdGVzdCBcICMgTmVlZHMgdG8gYmUgY2hlY2tlZCB3aGV0aGVyIGl0IHJ1bnMgYXQgYWxsCisjICAgIGJhc2gtcHRlc3QgXCAjIFRlc3Qgb3V0Y29tZXMgYXJlIG5vbi1kZXRlcm1pbmlzdGljIGJ5IGRlc2lnbgorIyAgICBpZnVwZG93bi1wdGVzdCBcICMgVGVzdGVkIHNlcGFyYXRlbHkgaW4gbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VmZWF0dXJlcy5weQorIyAgICBtZGFkbS1wdGVzdCBcICMgVGVzdHMgcmVseSBvbiBub24tZGV0ZXJtaW5pc3RpYyBzbGVlcCgpIGFtb3VudHMKICMiCiAKIFBURVNUU19TTE9XID0gIlwKLSAgICBiYXNoLXB0ZXN0IFwKKyAgICBiYWJlbHRyYWNlLXB0ZXN0IFwKKyAgICBiYWJlbHRyYWNlMi1wdGVzdCBcCiAgICAgYnVzeWJveC1wdGVzdCBcCisgICAgY29yZXV0aWxzLXB0ZXN0IFwKICAgICBkYnVzLXRlc3QtcHRlc3QgXAogICAgIGUyZnNwcm9ncy1wdGVzdCBcCiAgICAgZ2xpYi0yLjAtcHRlc3QgXAogICAgIGdzdHJlYW1lcjEuMC1wdGVzdCBcCiAgICAgbGliZXZlbnQtcHRlc3QgXAogICAgIGx0dG5nLXRvb2xzLXB0ZXN0IFwKLSAgICBtZGFkbS1wdGVzdCBcCiAgICAgb3BlbnNzaC1wdGVzdCBcCiAgICAgb3BlbnNzbC1wdGVzdCBcCiAgICAgcGVybC1wdGVzdCBcCi0gICAgcHl0aG9uLXB0ZXN0IFwKICAgICBweXRob24zLXB0ZXN0IFwKICAgICBzdHJhY2UtcHRlc3QgXAogICAgIHRjbC1wdGVzdCBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9zZWN1cml0eV9mbGFncy5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS9zZWN1cml0eV9mbGFncy5pbmMKaW5kZXggYWFmMDRlOS4uNTY4ZDAzNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvc2VjdXJpdHlfZmxhZ3MuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3NlY3VyaXR5X2ZsYWdzLmluYwpAQCAtNTcsNiArNTcsOCBAQAogCiBUQVJHRVRfQ0NfQVJDSF9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke1NFQ1VSSVRZX0NGTEFHU30iCiBUQVJHRVRfTERGTEFHU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke1NFQ1VSSVRZX0xERkxBR1N9IgorVEFSR0VUX0NDX0FSQ0hfYXBwZW5kX2NsYXNzLWNyb3NzLWNhbmFkaWFuID0gIiAke1NFQ1VSSVRZX0NGTEFHU30iCitUQVJHRVRfTERGTEFHU19hcHBlbmRfY2xhc3MtY3Jvc3MtY2FuYWRpYW4gPSAiICR7U0VDVVJJVFlfTERGTEFHU30iCiAKIFNFQ1VSSVRZX1NUQUNLX1BST1RFQ1RPUl9wbi1nY2MtcnVudGltZSA9ICIiCiBTRUNVUklUWV9TVEFDS19QUk9URUNUT1JfcG4tZ2xpYmMgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLWJhcmVtZXRhbC5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtYmFyZW1ldGFsLmluYwppbmRleCBlMDRmOGM4Li4zMWQxMzJlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtYmFyZW1ldGFsLmluYworKysgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y2xpYmMtYmFyZW1ldGFsLmluYwpAQCAtMjcsNyArMjcsNyBAQAogVEFSR0VUX09TID0gImVsZiIKIFRBUkdFVF9PU19hcm0gPSAiZWFiaSIKIAotVE9PTENIQUlOX0hPU1RfVEFTSyA/PSAicGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuLSR7TUFDSElORX0iCitUT09MQ0hBSU5fSE9TVF9UQVNLID89ICJwYWNrYWdlZ3JvdXAtY3Jvc3MtY2FuYWRpYW4tJHtNQUNISU5FfSBuYXRpdmVzZGstcWVtdSIKIFRPT0xDSEFJTl9IT1NUX1RBU0tfQVRURU1QVE9OTFkgPz0gIiIKIFRPT0xDSEFJTl9UQVJHRVRfVEFTSyA/PSAibGliZ2NjLWRldiIKIFRPT0xDSEFJTl9ORUVEX0NPTkZJR1NJVEVfQ0FDSEVfcmVtb3ZlID0gInZpcnR1YWwvJHtNTFBSRUZJWH1saWJjIHpsaWIgbmN1cnNlcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbGliYy1uZXdsaWIuaW5jIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLW5ld2xpYi5pbmMKaW5kZXggODk2YzBiMS4uYmY4OWIxMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLW5ld2xpYi5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNsaWJjLW5ld2xpYi5pbmMKQEAgLTI1LDEyICsyNSwxMSBAQAogICAgIGxpYmdsb3NzLWRiZyBcCiAgICAgbGliZ2NjLWRldiBcCiAgICAgbGliZ2NjLWRiZyBcCisgICAgbGlic3RkYysrLWRldiBcCisgICAgbGlic3RkYysrLXN0YXRpY2RldiBcCiAgICAgIgogCi0jIGNvbXBpbGVybGlicyBkZWZhdWx0cyB0byBnY2MtcnVudGltZSwgYnV0IHdlIGdldCBydW50aW1lIGZyb20gbGliZ2xvc3MKLSMgd2Ugc2V0IEFTU1VNRV9QUk9WSURFRCBiZWNhdXNlIHdlIGNhbnQgc2V0IFBSRUZFUlJFRF9QUk9WSURFUgotIyBmb3IgY29tcGlsZXJsaWJzIHNpbmNlIGl0cyBvdmVycmlkZGVuIGJ5IHRjbW9kZS1kZWZhdWx0Ci1BU1NVTUVfUFJPVklERUQgKz0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWNvbXBpbGVybGlicyB2aXJ0dWFsL2NyeXB0IgorQVNTVU1FX1BST1ZJREVEICs9ICJ2aXJ0dWFsL2NyeXB0IgogCiAjIEl0cyB1c2VmdWwgdG8gYmUgYWJsZSB0byBleHRlbmQgbmV3bGliLCBidXQgd2UgZG9udCBwcm92aWRlIGEgbmF0aXZlIHZhcmlhbnQgb2YgbGliZ2xvc3MKIE5FV0xJQl9FWFRFTkRFRCA/PSAgImxpYmdsb3NzIGxpYmdjYyIKQEAgLTM5LDcgKzM4LDcgQEAKIFRBUkdFVF9PUyA9ICJlbGYiCiBUQVJHRVRfT1NfYXJtID0gImVhYmkiCiAKLVRPT0xDSEFJTl9IT1NUX1RBU0sgPz0gInBhY2thZ2Vncm91cC1jcm9zcy1jYW5hZGlhbi0ke01BQ0hJTkV9IgorVE9PTENIQUlOX0hPU1RfVEFTSyA/PSAicGFja2FnZWdyb3VwLWNyb3NzLWNhbmFkaWFuLSR7TUFDSElORX0gbmF0aXZlc2RrLXFlbXUiCiBUT09MQ0hBSU5fVEFSR0VUX1RBU0sgPz0gIiR7TElCQ19ERVBFTkRFTkNJRVN9IgogVE9PTENIQUlOX05FRURfQ09ORklHU0lURV9DQUNIRV9yZW1vdmUgPSAiemxpYiBuY3Vyc2VzIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS90Y21vZGUtZGVmYXVsdC5pbmMKaW5kZXggNGEyM2M1MC4uODQ5YmNmNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUvdGNtb2RlLWRlZmF1bHQuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3RjbW9kZS1kZWZhdWx0LmluYwpAQCAtMTgsMTUgKzE4LDE1IEBACiAKIEdDQ1ZFUlNJT04gPz0gIjkuJSIKIFNES0dDQ1ZFUlNJT04gPz0gIiR7R0NDVkVSU0lPTn0iCi1CSU5VVkVSU0lPTiA/PSAiMi4zMiUiCi1HREJWRVJTSU9OID89ICI4LjMlIgotR0xJQkNWRVJTSU9OID89ICIyLjMwJSIKLUxJTlVYTElCQ1ZFUlNJT04gPz0gIjUuMiUiCi1RRU1VVkVSU0lPTiA/PSAiNC4xJSIKLUdPVkVSU0lPTiA/PSAiMS4xMiUiCitCSU5VVkVSU0lPTiA/PSAiMi4zNCUiCitHREJWRVJTSU9OID89ICI5LiUiCitHTElCQ1ZFUlNJT04gPz0gIjIuMzElIgorTElOVVhMSUJDVkVSU0lPTiA/PSAiNS40JSIKK1FFTVVWRVJTSU9OID89ICI0LjIlIgorR09WRVJTSU9OID89ICIxLjE0JSIKICMgVGhpcyBjYW4gbm90IHVzZSB3aWxkY2FyZHMgbGlrZSA4LjAuJSBzaW5jZSBpdCBpcyBhbHNvIHVzZWQgaW4gbWVzYSB0byBkZW5vdGUKICMgbGx2bSB2ZXJzaW9uIGJlaW5nIHVzZWQsIHNvIGFsd2F5cyBidW1wIGl0IHdpdGggbGx2bSByZWNpcGUgdmVyc2lvbiBidW1wCi1MTFZNVkVSU0lPTiA/PSAiOS4wLjAiCitMTFZNVkVSU0lPTiA/PSAiOS4wLjEiCiAKIFBSRUZFUlJFRF9WRVJTSU9OX2djYyA/PSAiJHtHQ0NWRVJTSU9OfSIKIFBSRUZFUlJFRF9WRVJTSU9OX2djYy1jcm9zcy0ke1RBUkdFVF9BUkNIfSA/PSAiJHtHQ0NWRVJTSU9OfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3lvY3RvLXVuaW5hdGl2ZS5pbmMgYi9wb2t5L21ldGEvY29uZi9kaXN0cm8vaW5jbHVkZS95b2N0by11bmluYXRpdmUuaW5jCmluZGV4IGFkNzVkM2UuLjg4OTY5NWUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL3lvY3RvLXVuaW5hdGl2ZS5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvZGlzdHJvL2luY2x1ZGUveW9jdG8tdW5pbmF0aXZlLmluYwpAQCAtNiw5ICs2LDkgQEAKICMgdG8gdGhlIGRpc3RybyBydW5uaW5nIG9uIHRoZSBidWlsZCBtYWNoaW5lLgogIwogCi1VTklOQVRJVkVfTUFYR0xJQkNWRVJTSU9OID0gIjIuMzAiCitVTklOQVRJVkVfTUFYR0xJQkNWRVJTSU9OID0gIjIuMzEiCiAKLVVOSU5BVElWRV9VUkwgPz0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy91bmluYXRpdmUvMi43LyIKLVVOSU5BVElWRV9DSEVDS1NVTVthYXJjaDY0XSA/PSAiZTc2YTQ1ODg2ZWU4YTBiMzkwNGI3NjFjMTdhYzhmZjkxZWRmOTgxMWVlNDU1ZjE4MzJkMTA3NjNiYTc5NGRmYyIKLVVOSU5BVElWRV9DSEVDS1NVTVtpNjg2XSA/PSAiODEwZDAyN2RmYjFjNzY3NTIyNmFmYmNlYzA3ODA4NzcwNTE2Yzk2OWVlNzM3OGY2ZDgyNDAyODEwODNmODkyNCIKLVVOSU5BVElWRV9DSEVDS1NVTVt4ODZfNjRdID89ICI5NDk4ZDhiYmEwNDc0OTk5OTlhNzMxMGFjMjU3NmQwNzk2NDYxMTg0OTY1MzUxYTU2ZjZkMzJjODg4YTFmMjE2IgorVU5JTkFUSVZFX1VSTCA/PSAiaHR0cDovL2Rvd25sb2Fkcy55b2N0b3Byb2plY3Qub3JnL3JlbGVhc2VzL3VuaW5hdGl2ZS8yLjgvIgorVU5JTkFUSVZFX0NIRUNLU1VNW2FhcmNoNjRdID89ICI5ODkxODczNDRiZjk1MzliNDY0ZmI3ZWQ5YzIyM2U1MWY0YmRiNGM3YTY3N2QyYzMxNGU2ZmVkMzkzMTc2ZWZlIgorVU5JTkFUSVZFX0NIRUNLU1VNW2k2ODZdID89ICJjYzNlNDViYzg1OTQ0ODhiNDA3MzYzZTNmYTlhZjVhMDk5Mjc5ZGFiMjcwM2M2NDM0MjA5ODcxOWJkNjc0OTkwIgorVU5JTkFUSVZFX0NIRUNLU1VNW3g4Nl82NF0gPz0gImEwOTkyMjE3MmMzYTQzOTEwNWUwYWU2Yjk0M2RhYWQyZDgzNTA1YjE3ZGEwYWJhOTc5NjFmZjQzM2I4YzIxYWIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9kb2N1bWVudGF0aW9uLmNvbmYgYi9wb2t5L21ldGEvY29uZi9kb2N1bWVudGF0aW9uLmNvbmYKaW5kZXggZmNhMzZmMy4uYzY1NDRiOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvZG9jdW1lbnRhdGlvbi5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL2RvY3VtZW50YXRpb24uY29uZgpAQCAtNjksNiArNjksNyBAQAogQVVUSE9SW2RvY10gPSAiRW1haWwgYWRkcmVzcyB1c2VkIHRvIGNvbnRhY3QgdGhlIG9yaWdpbmFsIGF1dGhvcihzKSBpbiBvcmRlciB0byBzZW5kIHBhdGNoZXMgYW5kIGZvcndhcmQgYnVncy4iCiBBVVRPX1NZU0xJTlVYTUVOVVtkb2NdID0gIkVuYWJsZXMgY3JlYXRpbmcgYW4gYXV0b21hdGljIG1lbnUgZm9yIHRoZSBzeXNsaW51eCBib290bG9hZGVyLiIKIEFVVE9SRVZbZG9jXSA9ICJXaGVuIFNSQ1JFViBpcyBzZXQgdG8gdGhlIHZhbHVlIG9mIHRoaXMgdmFyaWFibGUsIGl0IHNwZWNpZmllcyB0byB1c2UgdGhlIGxhdGVzdCBzb3VyY2UgcmV2aXNpb24gaW4gdGhlIHJlcG9zaXRvcnkuIgorQVZBSUxBQkxFX0xJQ0VOU0VTW2RvY10gPSAiTGlzdCBvZiBsaWNlbnNlcyBmb3VuZCBpbiB0aGUgZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGJ5IENPTU1PTl9MSUNFTlNFX0RJUiBhbmQgTElDRU5TRV9QQVRILiIKIAogI0IKIApAQCAtMTE3LDcgKzExOCw2IEBACiBDT1JFX0lNQUdFX0VYVFJBX0lOU1RBTExbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGxpc3Qgb2YgcGFja2FnZXMgdG8gYmUgYWRkZWQgdG8gdGhlIGltYWdlLiBZb3Ugc2hvdWxkIG9ubHkgc2V0IHRoaXMgdmFyaWFibGUgaW4gdGhlIGNvbmYvbG9jYWwuY29uZiBmaWxlIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkuIgogQ09SRUJBU0VbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIHBhcmVudCBkaXJlY3Rvcnkgb2YgdGhlIE9wZW5FbWJlZGRlZCBDb3JlIE1ldGFkYXRhIGxheWVyIChpLmUuIG1ldGEpLiIKIENPTkZfVkVSU0lPTltkb2NdID0gIlRyYWNrcyB0aGUgdmVyc2lvbiBvZiBsb2NhbC5jb25mLiAgSW5jcmVhc2VkIGVhY2ggdGltZSBidWlsZC9jb25mLyBjaGFuZ2VzIGluY29tcGF0aWJseS4iCi1DVlNESVJbZG9jXSA9ICJUaGUgZGlyZWN0b3J5IHdoZXJlIGN2cyBjaGVja291dHMgd2lsbCBiZSBzdG9yZWQgaW4uIgogCiAjRAogCkBAIC0xNzcsNyArMTc3LDYgQEAKIAogI0cKIAotR0lURElSW2RvY10gPSAiVGhlIGRpcmVjdG9yeSB3aGVyZSBHaXQgY2xvbmVzIHdpbGwgYmUgc3RvcmVkLiIKIEdST1VQQUREX1BBUkFNW2RvY10gPSAiV2hlbiBhIHJlY2lwZSBpbmhlcml0cyB0aGUgdXNlcmFkZCBjbGFzcywgdGhpcyB2YXJpYWJsZSBzcGVjaWZpZXMgZm9yIGEgcGFja2FnZSB3aGF0IHBhcmFtZXRlcnMgc2hvdWxkIGJlIHBhc3NlZCB0byB0aGUgZ3JvdXBhZGQgY29tbWFuZCBpZiB5b3Ugd2lzaCB0byBhZGQgYSBncm91cCB0byB0aGUgc3lzdGVtIHdoZW4gdGhlIHBhY2thZ2UgaXMgaW5zdGFsbGVkLiIKIEdST1VQTUVNU19QQVJBTVtkb2NdID0gIldoZW4gYSByZWNpcGUgaW5oZXJpdHMgdGhlIHVzZXJhZGQgY2xhc3MsIHRoaXMgdmFyaWFibGUgc3BlY2lmaWVzIGZvciBhIHBhY2thZ2Ugd2hhdCBwYXJhbWV0ZXJzIHNob3VsZCBiZSBwYXNzZWQgdG8gdGhlIGdyb3VwbWVtcyBjb21tYW5kIGlmIHlvdSB3aXNoIHRvIG1vZGlmeSB0aGUgbWVtYmVycyBvZiBhIGdyb3VwIHdoZW4gdGhlIHBhY2thZ2UgaXMgaW5zdGFsbGVkLiIKIEdSVUJfR0ZYU0VSSUFMW2RvY10gPSAiQ29uZmlndXJlcyB0aGUgR05VIEdSYW5kIFVuaWZpZWQgQm9vdGxvYWRlciAoR1JVQikgdG8gaGF2ZSBncmFwaGljcyBhbmQgc2VyaWFsIGluIHRoZSBib290IG1lbnUuIgpAQCAtMzA3LDcgKzMwNiw2IEBACiBQQUNLQUdFX0NMQVNTRVNbZG9jXSA9ICJUaGlzIHZhcmlhYmxlIHNwZWNpZmllcyB0aGUgcGFja2FnZSBtYW5hZ2VyIHRvIHVzZSB3aGVuIHBhY2thZ2luZyBkYXRhLiBJdCBpcyBzZXQgaW4gdGhlIGNvbmYvbG9jYWwuY29uZiBmaWxlIGluIHRoZSBCdWlsZCBEaXJlY3RvcnkuIgogUEFDS0FHRV9FWENMVURFW2RvY10gPSAiUGFja2FnZXMgdG8gZXhjbHVkZSBmcm9tIHRoZSBpbnN0YWxsYXRpb24uIElmIGEgbGlzdGVkIHBhY2thZ2UgaXMgcmVxdWlyZWQsIGFuIGVycm9yIGlzIGdlbmVyYXRlZC4iCiBQQUNLQUdFX0VYVFJBX0FSQ0hTW2RvY10gPSAiU3BlY2lmaWVzIHRoZSBsaXN0IG9mIGFyY2hpdGVjdHVyZXMgY29tcGF0aWJsZSB3aXRoIHRoZSBkZXZpY2UgQ1BVLiBUaGlzIHZhcmlhYmxlIGlzIHVzZWZ1bCB3aGVuIHlvdSBidWlsZCBmb3Igc2V2ZXJhbCBkaWZmZXJlbnQgZGV2aWNlcyB0aGF0IHVzZSBtaXNjZWxsYW5lb3VzIHByb2Nlc3NvcnMuIgotUEFDS0FHRV9HUk9VUFtkb2NdID0gIkRlZmluZXMgb25lIG9yIG1vcmUgcGFja2FnZXMgdG8gaW5jbHVkZSBpbiBhbiBpbWFnZSB3aGVuIGEgc3BlY2lmaWMgaXRlbSBpcyBpbmNsdWRlZCBpbiBJTUFHRV9GRUFUVVJFUy4iCiBQQUNLQUdFX0lOU1RBTExbZG9jXSA9ICJMaXN0IG9mIHRoZSBwYWNrYWdlcyB0byBiZSBpbnN0YWxsZWQgaW50byB0aGUgaW1hZ2UuIFRoZSB2YXJpYWJsZSBpcyBnZW5lcmFsbHkgbm90IHVzZXItZGVmaW5lZCBhbmQgdXNlcyBJTUFHRV9JTlNUQUxMIGFzIHBhcnQgb2YgdGhlIGxpc3QuIgogUEFDS0FHRV9JTlNUQUxMX0FUVEVNUFRPTkxZW2RvY10gPSAiTGlzdCBvZiBwYWNrYWdlcyBhdHRlbXB0ZWQgdG8gYmUgaW5zdGFsbGVkLiBJZiBhIGxpc3RlZCBwYWNrYWdlIGZhaWxzIHRvIGluc3RhbGwsIHRoZSBidWlsZCBzeXN0ZW0gZG9lcyBub3QgZ2VuZXJhdGUgYW4gZXJyb3IuIFRoaXMgdmFyaWFibGUgaXMgZ2VuZXJhbGx5IG5vdCB1c2VyLWRlZmluZWQuIgogUEFDS0FHRUNPTkZJR1tkb2NdID0gIlRoaXMgdmFyaWFibGUgcHJvdmlkZXMgYSBtZWFucyBvZiBlbmFibGluZyBvciBkaXNhYmxpbmcgZmVhdHVyZXMgb2YgYSByZWNpcGUgb24gYSBwZXItcmVjaXBlIGJhc2lzLiIKQEAgLTM5Miw3ICszOTAsNiBAQAogU1RBTVBbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGJhc2UgcGF0aCB1c2VkIHRvIGNyZWF0ZSByZWNpcGUgc3RhbXAgZmlsZXMuIFRoZSBwYXRoIHRvIGFuIGFjdHVhbCBzdGFtcCBmaWxlIGlzIGNvbnN0cnVjdGVkIGJ5IGV2YWx1YXRpbmcgdGhpcyBzdHJpbmcgYW5kIHRoZW4gYXBwZW5kaW5nIGFkZGl0aW9uYWwgaW5mb3JtYXRpb24uIgogU1RBTVBTX0RJUltkb2NdID0gIlNwZWNpZmllcyB0aGUgYmFzZSBkaXJlY3RvcnkgaW4gd2hpY2ggdGhlIE9wZW5FbWJlZGRlZCBidWlsZCBzeXN0ZW0gcGxhY2VzIHN0YW1wcy4iCiBTVU1NQVJZW2RvY10gPSAiVGhlIHNob3J0ICg4MCBjaGFyYWN0ZXJzIG9yIGxlc3MpIHN1bW1hcnkgb2YgdGhlIGJpbmFyeSBwYWNrYWdlIGZvciBwYWNrYWdpbmcgc3lzdGVtcyBzdWNoIGFzIG9wa2csIHJwbSBvciBkcGtnLiBCeSBkZWZhdWx0LCBTVU1NQVJZIGlzIHVzZWQgdG8gZGVmaW5lIHRoZSBERVNDUklQVElPTiB2YXJpYWJsZSBpZiBERVNDUklQVElPTiBpcyBub3Qgc2V0IGluIHRoZSByZWNpcGUuIgotU1ZORElSW2RvY10gPSAiVGhlIGRpcmVjdG9yeSB3aGVyZSBTdWJ2ZXJzaW9uIGNoZWNrb3V0cyB3aWxsIGJlIHN0b3JlZC4iCiBTWVNMSU5VWF9ERUZBVUxUX0NPTlNPTEVbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGtlcm5lbCBib290IGRlZmF1bHQgY29uc29sZS4iCiBTWVNMSU5VWF9PUFRTW2RvY10gPSAiTGlzdHMgYWRkaXRpb25hbCBvcHRpb25zIHRvIGFkZCB0byB0aGUgc3lzbGludXggZmlsZS4iCiBTWVNMSU5VWF9TRVJJQUxbZG9jXSA9ICJTcGVjaWZpZXMgdGhlIGFsdGVybmF0ZSBzZXJpYWwgcG9ydCBvciB0dXJucyBpdCBvZmYuIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbGF5ZXIuY29uZiBiL3Bva3kvbWV0YS9jb25mL2xheWVyLmNvbmYKaW5kZXggZmNkZjlhZS4uZjAzZWI0OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbGF5ZXIuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9sYXllci5jb25mCkBAIC03LDEyICs3LDEyIEBACiBCQkZJTEVfUEFUVEVSTl9jb3JlID0gIl4ke0xBWUVSRElSfS8iCiBCQkZJTEVfUFJJT1JJVFlfY29yZSA9ICI1IgogCi1MQVlFUlNFUklFU19DT1JFTkFNRVMgPSAiemV1cyIKK0xBWUVSU0VSSUVTX0NPUkVOQU1FUyA9ICJkdW5mZWxsIgogCiAjIFRoaXMgc2hvdWxkIG9ubHkgYmUgaW5jcmVtZW50ZWQgb24gc2lnbmlmaWNhbnQgY2hhbmdlcyB0aGF0IHdpbGwKICMgY2F1c2UgY29tcGF0aWJpbGl0eSBpc3N1ZXMgd2l0aCBvdGhlciBsYXllcnMKIExBWUVSVkVSU0lPTl9jb3JlID0gIjExIgotTEFZRVJTRVJJRVNfQ09NUEFUX2NvcmUgPSAid2FycmlvciB6ZXVzIgorTEFZRVJTRVJJRVNfQ09NUEFUX2NvcmUgPSAiZHVuZmVsbCIKIAogQkJMQVlFUlNfTEFZRVJJTkRFWF9OQU1FX2NvcmUgPSAib3BlbmVtYmVkZGVkLWNvcmUiCiAKQEAgLTQzLDYgKzQzLDggQEAKICAgb3BrZy11dGlscyBcCiAgIGdzdHJlYW1lcjEuMC1tZXRhLWJhc2UgXAogICBjYS1jZXJ0aWZpY2F0ZXMgXAorICBzaGFyZWQtbWltZS1pbmZvIFwKKyAgZGVza3RvcC1maWxlLXV0aWxzIFwKICIKIAogU0lHR0VOX0VYQ0xVREVfU0FGRV9SRUNJUEVfREVQUyArPSAiIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL2xpY2Vuc2VzLmNvbmYgYi9wb2t5L21ldGEvY29uZi9saWNlbnNlcy5jb25mCmluZGV4IDdiMDFjNTcuLjc1MTQyNGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL2xpY2Vuc2VzLmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvbGljZW5zZXMuY29uZgpAQCAtMSw0OCArMSw3IEBACi0jIFRoZXNlIGFyZW4ndCBhY3R1YWxseSB1c2VkIGFueXdoZXJlIHRoYXQgSSBjYW4gdGVsbAotIyBUaGV5IG1heSBiZSBpbiB0aGUgZnV0dXJlIChvciBhcmUgdXNlZCBieSBzb21lb25lIGVsc2UKLSMgRm9yIGNvbXBsZXRpb24gc2FrZSwgSSd2ZSB1cGRhdGVkIHRoZW0KLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJBQUwgQWRvYmUgQUZMLTEuMiBBRkwtMi4wIEFGTC0yLjEgQUZMLTMuMCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJBR1BMLTMuMCBBTlRMUi1QRCBBcGFjaGUtMS4wIEFwYWNoZS0xLjEgQXBhY2hlLTIuMCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJBUEwtMS4wIEFQU0wtMS4wIEFQU0wtMS4xIEFQU0wtMS4yIEFQU0wtMi4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkFydGlzdGljLTEuMCBBcnRpc3RpYy0yLjAgQml0c3RyZWFtVmVyYSBCU0QiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQlNELTItQ2xhdXNlIEJTRC0zLUNsYXVzZSBCU0QtNC1DbGF1c2UgQlNMLTEuMCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJDQVRPU0wtMS4xIENDMC0xLjAgQ0MtQlktMS4wIENDLUJZLTIuMCBDQy1CWS0yLjUiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiQ0MtQlktMy4wIENDLUJZLU5DLTEuMCBDQy1CWS1OQy0yLjAgQ0MtQlktTkMtMi41IgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkNDLUJZLU5DLTMuMCBDQy1CWS1OQy1ORC0xLjAgQ0MtQlktTkMtTkQtMi4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkNDLUJZLU5DLU5ELTIuNSBDQy1CWS1OQy1ORC0zLjAgQ0MtQlktTkMtU0EtMS4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkNDLUJZLU5DLVNBLTIuMCBDQy1CWS1OQy1TQS0yLjUgQ0MtQlktTkMtU0EtMy4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkNDLUJZLU5ELTEuMCBDQy1CWS1ORC0yLjAgQ0MtQlktTkQtMi41IENDLUJZLU5ELTMuMCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJDQy1CWS1TQS0xLjAgQ0MtQlktU0EtMi4wIENDLUJZLVNBLTIuNSBDQy1CWS1TQS0zLjAgQ0MtQlktU0EtNC4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkNEREwtMS4wIENFQ0lMTC0xLjAgQ0VDSUxMLTIuMCBDRUNJTEwtQiBDRUNJTEwtQyIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJDbEFydGlzdGljIENQQUwtMS4wIENQTC0xLjAgQ1VBLU9QTC0xLjAgRFNTU0wiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiRUNMLTEuMCBFQ0wtMi4wIGVDb3MtMi4wIEVETC0xLjAgRUZMLTEuMCBFRkwtMi4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkVudGVzc2EgRVBMLTEuMCBFUEwtMi4wIEVybFBMLTEuMSIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJFVURhdGFncmlkIEVVUEwtMS4wIEVVUEwtMS4xIEZhaXIgRnJhbWV3b3J4LTEuMCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJGcmVlVHlwZSBHRkRMLTEuMSBHRkRMLTEuMiBHRkRMLTEuMyBHUEwtMS4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkdQTC0yLjAgR1BMLTIuMC13aXRoLWF1dG9jb25mLWV4Y2VwdGlvbiIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJHUEwtMi4wLXdpdGgtY2xhc3NwYXRoLWV4Y2VwdGlvbiIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJHUEwtMi4wLXdpdGgtZm9udC1leGNlcHRpb24iCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiR1BMLTIuMC13aXRoLUdDQy1leGNlcHRpb24iCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiR1BMLTItd2l0aC1iaXNvbi1leGNlcHRpb24gR1BMLTMuMCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJHUEwtMy4wLXdpdGgtYXV0b2NvbmYtZXhjZXB0aW9uIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIkdQTC0zLjAtd2l0aC1HQ0MtZXhjZXB0aW9uIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gImdTT0FQLTEgZ1NPQVAtMS4zYiBIUE5EIElQQSBJUEwtMS4wIElTQyBMR1BMLTIuMCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJMR1BMLTIuMSBMR1BMLTMuMCBMaWJwbmcgTFBMLTEuMDIgTFBQTC0xLjAgTFBQTC0xLjEiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiTFBQTC0xLjIgTFBQTC0xLjNjIE1pck9TIE1JVCBNb3Rvc290byBNUEwtMS4wIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIk1QTC0xLjEgTVMtUEwgTVMtUkwgTXVsdGljcyBOQVNBLTEuMyBOYXVtYW4gTkNTQSIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJOR1BMIE5va2lhIE5QT1NMLTMuMCBOVFAgT0FTSVMgT0NMQy0yLjAgT0RiTC0xLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiT0ZMLTEuMSBPR1RTTCBPTERBUC0yLjggT3BlblNTTCBPU0wtMS4wIE9TTC0yLjAiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiT1NMLTMuMCBQRCBQSFAtMy4wIFBvc3RncmVTUUwgUHJvcHJpZXRhcnkiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiUHl0aG9uLTIuMCBRUEwtMS4wIFJIZUNvcy0xIFJIZUNvcy0xLjEgUlBMLTEuNSIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJSUFNMLTEuMCBSU0NQTCBSdWJ5IFNBWC1QRCBTR0ktMSBTaW1wbGUtMi4wIFNsZWVweWNhdCIKLVNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTICs9ICJTUEwtMS4wIFN1Z2FyQ1JNLTEgU3VnYXJDUk0tMS4xLjMgVUNCIFZTTC0xLjAgVzNDIgotU1JDX0RJU1RSSUJVVEVfTElDRU5TRVMgKz0gIldhdGNvbS0xLjAgV1h3aW5kb3dzIFhGcmVlODYtMS4wIFhGcmVlODYtMS4xIFhuZXQgWFNMIFlQTC0xLjEiCi1TUkNfRElTVFJJQlVURV9MSUNFTlNFUyArPSAiWmltYnJhLTEuMyBabGliIFpQTC0xLjEgWlBMLTIuMCBaUEwtMi4xIgotCiAjIFN0YW5kYXJkcyBhcmUgZ3JlYXQhIEV2ZXJ5b25lIGhhcyB0aGVpciBvd24uIEluIGFuIGVmZm9ydCB0byBzdGFuZGFyZGl6ZSBsaWNlbnNpbmcKICMgbmFtZXMsIGNvbW1vbi1saWNlbnNlcyB3aWxsIHVzZSB0aGUgU1BEWCBzdGFuZGFyZCBsaWNlbnNlIG5hbWVzLiBJbiBvcmRlciB0byBub3QKICMgYnJlYWsgdGhlIG5vbi1zdGFuZGFyZGl6ZWQgbGljZW5zZSBuYW1lcyB0aGF0IHdlIGZpbmQgaW4gTElDRU5TRSwgd2UnbGwgc2V0Ci0jIHVwIGEgYnVuY2ggb2YgVmFyRmxhZ3MgdG8gYWNjb21vZGF0ZSBub24tU1BEWCBsaWNlbnNlIG5hbWVzLgorIyB1cCBhIGJ1bmNoIG9mIFZhckZsYWdzIHRvIGFjY29tbW9kYXRlIG5vbi1TUERYIGxpY2Vuc2UgbmFtZXMuCiAjCiAjIFdlIHNob3VsZCByZWFsbHkgZGlzY3VzcyBzdGFuZGFyZGl6aW5nIHRoaXMgZmllbGQsIGJ1dCB0aGF0J3MgYSBsb25nZXIgdGVybSBnb2FsLgogIyBGb3Igbm93LCB3ZSBjYW4gZG8gdGhpcyBhbmQgaXQgc2hvdWxkIGdyYWIgdGhlIG1vc3QgY29tbW9uIExJQ0VOU0UgbmFtaW5nIHZhcmlhdGlvbnMuCkBAIC0xODgsNSArMTQ3LDMgQEAKIEZPU1NfU0VSVkVSID0gIiR7Rk9TU19CQVNFX1VSTH0mZnVsbFNQRFhGbGFnPSR7Rk9TU19GVUxMX1NQRFh9Jm5vQ29weXJpZ2h0PSR7Rk9TU19OT19DT1BZUklHSFR9JnJlY3Vyc2l2ZVVucGFjaz0ke0ZPU1NfUkVDVVJTSVZFX1VOUEFDS30iCiAKIEZPU1NfV0dFVF9GTEFHUyA9ICItcU8gLSAtLW5vLWNoZWNrLWNlcnRpZmljYXRlIC0tdGltZW91dD0wIgotCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2FyY2gtbWljcm9ibGF6ZS5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9hcmNoLW1pY3JvYmxhemUuaW5jCmluZGV4IGVhYjcxNzEuLjRmNTgwNzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2FyY2gtbWljcm9ibGF6ZS5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvYXJjaC1taWNyb2JsYXplLmluYwpAQCAtNCwzNSArNCw0MSBAQAogVFVORVZBTElEW21pY3JvYmxhemVdID0gIk1pY3JvQmxhemUiCiBNQUNISU5FT1ZFUlJJREVTID0uICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJtaWNyb2JsYXplIiwgIm1pY3JvYmxhemU6IiwgIiIsIGQpfSIKIAorIyA2NC1iaXQKK1RVTkVWQUxJRFs2NC1iaXRdID0gIjY0LWJpdCBNaWNyb0JsYXplIgorVFVORUNPTkZMSUNUU1s2NC1iaXRdID0gInY4LjAwIHY4LjEwIHY4LjIwIHY4LjMwIHY4LjQwIHY4LjUwIHY5LjAgdjkuMSB2OS4yIHY5LjMgdjkuNCB2OS41IHY5LjYgdjEwLjAiCitNQUNISU5FT1ZFUlJJREVTID0uICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICI2NC1iaXQiLCAibWljcm9ibGF6ZTY0OiIsICIiLCBkKX0iCisKICMgRW5kaWFuCiBUVU5FVkFMSURbYmlnZW5kaWFuXSA9ICJVc2UgTWljcm9ibGF6ZSBCaWcgRW5kaWFuIgotVFVORUNPTkZMSUNUU1tiaWdlbmRpYW5dICs9ICJ2MTAuMCIKK1RVTkVDT05GTElDVFNbYmlnZW5kaWFuXSA9ICJ2MTAuMCIKIAogTUJQS0dBUkNIX0VORElBTiA9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJiaWdlbmRpYW4iLCAiZWIiLCAiZWwiLCBkKX0iCiAKLVRVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJiaWdlbmRpYW4iLCAiLW1iaWctZW5kaWFuIiwgIi1tbGl0dGxlLWVuZGlhbiIsIGQpfSIKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJiaWdlbmRpYW4iLCAiIC1tYmlnLWVuZGlhbiIsICIgLW1saXR0bGUtZW5kaWFuIiwgZCl9IgogCiAjIEdlbmVyYWwgZmVhdHVyZXMKIFRVTkVWQUxJRFtiYXJyZWwtc2hpZnRdID0gIkVuYWJsZSBIYXJkd2FyZSBCYXJyZWwgU2hpZnRlciIKIFRVTkVWQUxJRFtwYXR0ZXJuLWNvbXBhcmVdID0gIkVuYWJsZSBQYXR0ZXJuIENvbXBhcmUgSW5zdHJ1Y3Rpb25zIgogVFVORVZBTElEW3Jlb3JkZXJdID0gIkVuYWJsZSBSZW9yZGVyIEluc3RydWN0aW9ucyIKLVRVTkVDT05GTElDVFNbcmVvcmRlcl0gKz0gInY4LjAwIHY4LjEwIHY4LjIwIgorVFVORUNPTkZMSUNUU1tyZW9yZGVyXSA9ICJ2OC4wMCB2OC4xMCB2OC4yMCIKIAogIyBDb3JlIGNvbmZpZ3VyYXRpb24gdHVuZSBvcHRpbWl6YXRpb25zCiBUVU5FVkFMSURbZnJlcXVlbmN5LW9wdGltaXplZF0gPSAiRW5hYmxpbmcgdHVuaW5nIGZvciBmcmVxdWVuY3kgb3B0aW1pemVkIGNvcmUgKEFSRUFfT1BUSU1JWkVEXzIpIgotVFVORUNPTkZMSUNUU1tmcmVxdWVuY3ktb3B0aW1pemVkXSArPSAidjguMDAgdjguMTAgdjguMjAgdjguMzAgdjguNDAgdjguNTAgdjkuMCB2OS4xIHY5LjIgdjkuMyB2OS40IHY5LjUgdjkuNiIKK1RVTkVDT05GTElDVFNbZnJlcXVlbmN5LW9wdGltaXplZF0gPSAidjguMDAgdjguMTAgdjguMjAgdjguMzAgdjguNDAgdjguNTAgdjkuMCB2OS4xIHY5LjIgdjkuMyB2OS40IHY5LjUgdjkuNiIKIAogIyBGZWF0dXJlIGNvbXBpbGVyIGFyZ3MKLVRVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJiYXJyZWwtc2hpZnQiLCAiLW14bC1iYXJyZWwtc2hpZnQiLCAiLW1uby14bC1iYXJyZWwtc2hpZnQiLCBkKX0iCi1UVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAicGF0dGVybi1jb21wYXJlIiwgIi1teGwtcGF0dGVybi1jb21wYXJlIiwgIi1tbm8teGwtcGF0dGVybi1jb21wYXJlIiwgZCl9IgotVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImZyZXF1ZW5jeS1vcHRpbWl6ZWQiLCAiLW14bC1mcmVxdWVuY3kiLCAiIiwgZCl9IgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImJhcnJlbC1zaGlmdCIsICIgLW14bC1iYXJyZWwtc2hpZnQiLCAiIC1tbm8teGwtYmFycmVsLXNoaWZ0IiwgZCl9IgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgInBhdHRlcm4tY29tcGFyZSIsICIgLW14bC1wYXR0ZXJuLWNvbXBhcmUiLCAiIC1tbm8teGwtcGF0dGVybi1jb21wYXJlIiwgZCl9IgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImZyZXF1ZW5jeS1vcHRpbWl6ZWQiLCAiIC1teGwtZnJlcXVlbmN5IiwgIiIsIGQpfSIKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICI2NC1iaXQiLCAiIC1tNjQiLCAiIiwgZCl9IgogCiAjIERpc2FibGUgcmVvcmRlciBmb3IgdjguMzAgaWYgcGF0dGVybi1jb21wYXJlIGlzIG5vdCBlbmFibGVkCi1UVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAicmVvcmRlciIsIFwKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJyZW9yZGVyIiwgXAogICAgICAgICBiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJ2OC4zMCIsIFwKICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgInBhdHRlcm4tY29tcGFyZSIsIFwKLSAgICAgICAgICAgICAgICAiLW14bC1yZW9yZGVyIiwgIi1tbm8teGwtcmVvcmRlciIsIGQpLCBcCi0gICAgICAgICAgICAiLW14bC1yZW9yZGVyIiwgZCksICItbW5vLXhsLXJlb3JkZXIiLCBkKX0iCisgICAgICAgICAgICAgICAgIiAtbXhsLXJlb3JkZXIiLCAiIC1tbm8teGwtcmVvcmRlciIsIGQpLCBcCisgICAgICAgICAgICAiIC1teGwtcmVvcmRlciIsIGQpLCAiIC1tbm8teGwtcmVvcmRlciIsIGQpfSIKIAogIyBGZWF0dXJlIHBhY2thZ2UgYXJjaGl0ZWN0dXJlIGZvcm1hdHRpbmcKIE1CUEtHQVJDSF9UVU5FID0gIiIKQEAgLTQ1LDkgKzUxLDEyIEBACiByZXF1aXJlIGNvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLXZlcnNpb25zLmluYwogcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS1tYXRoLmluYwogCi0jIEFyY2hpdGVjdHVyZSBuYW1lLCBlaXRoZXIgJ21pY3JvYmxhemVlYicgb3IgJ21pY3JvYmxhemVlbCcgZGVwZW5kaW5nIG9uIGVuZGlhbmVzcwotVFVORV9BUkNIID0gIm1pY3JvYmxhemUke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJiaWdlbmRpYW4iLCAiZWIiLCAiZWwiLCBkKX0iCisjIEFyY2hpdGVjdHVyZSBuYW1lLCBlaXRoZXIgJ21pY3JvYmxhemUnIG9yICdtaWNyb2JsYXplZWwnIGRlcGVuZGluZyBvbiBlbmRpYW5lc3MKK1RVTkVfQVJDSCA9ICJtaWNyb2JsYXplJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYmlnZW5kaWFuIiwgIiIsICJlbCIsIGQpfSIKKworIyBBZGQgNjQtYml0IHRvIHRoZSBQS0dBUkNIIGlmIGVuYWJsZWQuCitNQlBLR0FSQ0hfU0laRSA9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICI2NC1iaXQiLCAiNjQiLCAiIiwgZCl9IgogCiAjIFBhY2thZ2UgQXJjaGl0ZWN0dXJlIGZvcm1hdHRpbmcKLVRVTkVfUEtHQVJDSCA9ICJtaWNyb2JsYXplJHtNQlBLR0FSQ0hfRU5ESUFOfSR7TUJQS0dBUkNIX1ZFUlNJT059JHtNQlBLR0FSQ0hfVFVORX0ke01CUEtHQVJDSF9NQVRIfSIKK1RVTkVfUEtHQVJDSCA9ICJtaWNyb2JsYXplJHtNQlBLR0FSQ0hfU0laRX0ke01CUEtHQVJDSF9FTkRJQU59JHtNQlBLR0FSQ0hfVkVSU0lPTn0ke01CUEtHQVJDSF9UVU5FfSR7TUJQS0dBUkNIX01BVEh9IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9mZWF0dXJlLW1pY3JvYmxhemUtbWF0aC5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9mZWF0dXJlLW1pY3JvYmxhemUtbWF0aC5pbmMKaW5kZXggYTMxNTE2Ni4uY2JhMGFlNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLW1hdGguaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS1tYXRoLmluYwpAQCAtMTMsMTQgKzEzLDE0IEBACiBUVU5FQ09ORkxJQ1RTW2ZwdS1oYXJkLWV4dGVuZGVkXSA9ICJmcHUtc29mdCIKIAogIyBDb21waWxlciBhcmdzCi1UVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdUVU5FX0ZFQVRVUkVTJywgWydtdWx0aXBseS1sb3cnLCAnbXVsdGlwbHktaGlnaCddLCAnLW1uby14bC1zb2Z0LW11bCcsICctbXhsLXNvZnQtbXVsJywgZCl9IgotVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ211bHRpcGx5LWhpZ2gnLCAnLW14bC1tdWx0aXBseS1oaWdoJywgJycsIGQpfSIKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1RVTkVfRkVBVFVSRVMnLCBbJ211bHRpcGx5LWxvdycsICdtdWx0aXBseS1oaWdoJ10sICcgLW1uby14bC1zb2Z0LW11bCcsICcgLW14bC1zb2Z0LW11bCcsIGQpfSIKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtdWx0aXBseS1oaWdoJywgJyAtbXhsLW11bHRpcGx5LWhpZ2gnLCAnJywgZCl9IgogCi1UVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZGl2aWRlLWhhcmQnLCAnLW1uby14bC1zb2Z0LWRpdicsICctbXhsLXNvZnQtZGl2JywgZCl9IgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2RpdmlkZS1oYXJkJywgJyAtbW5vLXhsLXNvZnQtZGl2JywgJyAtbXhsLXNvZnQtZGl2JywgZCl9IgogCi1UVU5FX0NDQVJHUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZnB1LXNvZnQnLCAnJywgJycsIGQpfSIKLVRVTkVfQ0NBUkdTICs9ICIke0BiYi51dGlscy5jb250YWluc19hbnkoJ1RVTkVfRkVBVFVSRVMnLCBbJ2ZwdS1oYXJkJywgJ2ZwdS1oYXJkLWV4dGVuZGVkJ10sICctbWhhcmQtZmxvYXQnLCAnJywgZCl9IgotVFVORV9DQ0FSR1MgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2ZwdS1oYXJkLWV4dGVuZGVkJywgJy1teGwtZmxvYXQtY29udmVydCAtbXhsLWZsb2F0LXNxcnQnLCAnJywgZCl9IgorVFVORV9DQ0FSR1MgLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2ZwdS1zb2Z0JywgJycsICcnLCBkKX0iCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdUVU5FX0ZFQVRVUkVTJywgWydmcHUtaGFyZCcsICdmcHUtaGFyZC1leHRlbmRlZCddLCAnIC1taGFyZC1mbG9hdCcsICcnLCBkKX0iCitUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZnB1LWhhcmQtZXh0ZW5kZWQnLCAnIC1teGwtZmxvYXQtY29udmVydCAtbXhsLWZsb2F0LXNxcnQnLCAnJywgZCl9IgogCiAjIFNldCB0YXJnZXQgZnB1IChiaXRiYWtlIGtub3duIHRhcmdldCkgdG8gc29mdCBvciBoYXJkIChiYXNpYyBvciBleHRlbmRlZCkKIFRBUkdFVF9GUFUgPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdUVU5FX0ZFQVRVUkVTJywgJ2ZwdS1oYXJkIGZwdS1oYXJkLWV4dGVuZGVkJywgJ2ZwdS1oYXJkJywgJ2ZwdS1zb2Z0JywgZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLXZlcnNpb25zLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9taWNyb2JsYXplL2ZlYXR1cmUtbWljcm9ibGF6ZS12ZXJzaW9ucy5pbmMKaW5kZXggOTU1Njc0Zi4uNWMzN2Y0OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL21pY3JvYmxhemUvZmVhdHVyZS1taWNyb2JsYXplLXZlcnNpb25zLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvbWljcm9ibGF6ZS9mZWF0dXJlLW1pY3JvYmxhemUtdmVyc2lvbnMuaW5jCkBAIC00NCw2ICs0NCw3IEBACiBUVU5FVkFMSURbdjkuNV0gID0gIk1pY3JvQmxhemUgdmVyc2lvbiA5LjUiCiBUVU5FVkFMSURbdjkuNl0gID0gIk1pY3JvQmxhemUgdmVyc2lvbiA5LjYiCiBUVU5FVkFMSURbdjEwLjBdID0gIk1pY3JvQmxhemUgdmVyc2lvbiAxMC4wIgorVFVORVZBTElEW3YxMS4wXSA9ICJNaWNyb0JsYXplIHZlcnNpb24gMTEuMCIKIAogIyBWZXJzaW9uIGNvbmZsaWN0IG1hdHJpeAogVFVORUNPTkZMSUNUU1t2OC4wMF0gPSAiIgpAQCAtNjAsOCArNjEsOSBAQAogVFVORUNPTkZMSUNUU1t2OS41XSAgPSAidjguMDAgdjguMTAgdjguMjAgdjguMzAgdjguNDAgdjguNTAgdjkuMCB2OS4xIHY5LjIgdjkuMyB2OS40IgogVFVORUNPTkZMSUNUU1t2OS42XSAgPSAidjguMDAgdjguMTAgdjguMjAgdjguMzAgdjguNDAgdjguNTAgdjkuMCB2OS4xIHY5LjIgdjkuMyB2OS40IHY5LjUiCiBUVU5FQ09ORkxJQ1RTW3YxMC4wXSA9ICJ2OC4wMCB2OC4xMCB2OC4yMCB2OC4zMCB2OC40MCB2OC41MCB2OS4wIHY5LjEgdjkuMiB2OS4zIHY5LjQgdjkuNSB2OS42IgorVFVORUNPTkZMSUNUU1t2MTEuMF0gPSAidjguMDAgdjguMTAgdjguMjAgdjguMzAgdjguNDAgdjguNTAgdjkuMCB2OS4xIHY5LjIgdjkuMyB2OS40IHY5LjUgdjkuNiB2MTAuMCIKIAogIyBWZXJzaW9uIGZsYWdzCi1UVU5FX0NDQVJHUyArPSAiLW1jcHU9JHtAbWljcm9ibGF6ZV9jdXJyZW50X3ZlcnNpb24oZCwgVHJ1ZSl9IgotTUJQS0dBUkNIX1ZFUlNJT04gPSAiLSR7QG1pY3JvYmxhemVfY3VycmVudF92ZXJzaW9uKGQpfSIKK1RVTkVfQ0NBUkdTICs9ICIke0AnLW1jcHU9JXMnICUgKG1pY3JvYmxhemVfY3VycmVudF92ZXJzaW9uKGQsIFRydWUpKSBpZiBtaWNyb2JsYXplX2N1cnJlbnRfdmVyc2lvbihkLCBUcnVlKSAhPSAnJyBlbHNlICcnfSIKK01CUEtHQVJDSF9WRVJTSU9OID0gIiR7QCctJXMnICUgKG1pY3JvYmxhemVfY3VycmVudF92ZXJzaW9uKGQsIFRydWUpKSBpZiBtaWNyb2JsYXplX2N1cnJlbnRfdmVyc2lvbihkLCBUcnVlKSAhPSAnJyBlbHNlICcnfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Bvd2VycGMvYXJjaC1wb3dlcnBjLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYy5pbmMKaW5kZXggOGMwYzk0My4uZWYxOGU5YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Bvd2VycGMvYXJjaC1wb3dlcnBjLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcG93ZXJwYy9hcmNoLXBvd2VycGMuaW5jCkBAIC0xNSw3ICsxNSw4IEBACiAKIFRVTkVWQUxJRFttMzJdID0gIlBvd2VyIEVMRjMyIHN0YW5kYXJkIEFCSSIKIFRVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtMzInLCAnIC1tMzInLCAnJywgZCl9IgotVFVORV9BUkNIIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdtMzInLCAncG93ZXJwYycsICcnLCBkKX0iCitUVU5FX0FSQ0ggLj0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ20zMicsICdwb3dlcnBjJHtFTkRJQU5fU0ZYfScsICcnLCBkKX0iCitFTkRJQU5fU0ZYID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ2JpZ2VuZGlhbicsICcnLCAnbGUnLCBkKX0iCiAKIFRVTkVWQUxJRFtmcHUtaGFyZF0gPSAiVXNlIGhhcmR3YXJlIEZQVS4iCiBUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnZnB1LWhhcmQnLCAnIC1taGFyZC1mbG9hdCcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcG93ZXJwYy9hcmNoLXBvd2VycGM2NC5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcG93ZXJwYy9hcmNoLXBvd2VycGM2NC5pbmMKaW5kZXggNGJjNTk4My4uY2Y1YzNlZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Bvd2VycGMvYXJjaC1wb3dlcnBjNjQuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYzY0LmluYwpAQCAtNSw3ICs1LDcgQEAKIFRVTkVWQUxJRFttNjRdID0gIlBvd2VyIEVMRjY0IHN0YW5kYXJkIEFCSSIKIFRVTkVDT05GTElDVFNbbTY0XSA9ICJtMzIgbmYiCiBUVU5FX0NDQVJHUyAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnbTY0JywgJyAtbTY0JywgJycsIGQpfSIKLVRVTkVfQVJDSCAuPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCBbICdtNjQnIF0sICdwb3dlcnBjNjQnLCAnJywgZCl9IgorVFVORV9BUkNIIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsIFsgJ202NCcgXSwgJ3Bvd2VycGM2NCR7RU5ESUFOX1NGWH0nLCAnJywgZCl9IgogCiAjIG11c2wgb25seSBzdXBwb3J0cyBlbGZ2MiBBQkkgZm9yIHBwYzY0CiBUVU5FX0NDQVJHUyAuPSAiJHtAWycnLCAnIC1tYWJpPWVsZnYyJ11bJ2xpYmMtbXVzbCcgaW4gZC5nZXRWYXIoJ09WRVJSSURFUycpLnNwbGl0KCc6JyldfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11LmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11LmluYwppbmRleCA1MDUwZTQxLi44ZGVkYjFhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXUuaW5jCkBAIC05LDcgKzksNyBAQAogICAgICAgICAgICAgeGY4Ni12aWRlby1mYmRldiBcCiAgICAgICAgICAgICAiCiAKLU1BQ0hJTkVfRkVBVFVSRVMgPSAiYWxzYSBibHVldG9vdGggdXNiZ2FkZ2V0IHNjcmVlbiIKK01BQ0hJTkVfRkVBVFVSRVMgPSAiYWxzYSBibHVldG9vdGggdXNiZ2FkZ2V0IHNjcmVlbiB2ZmF0IgogCiBNQUNISU5FT1ZFUlJJREVTID0uICJxZW11YWxsOiIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LW1pcHMuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3FlbXVib290LW1pcHMuaW5jCmluZGV4IDk3ODgyMGEuLmYxZjdjMmEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC1taXBzLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QtbWlwcy5pbmMKQEAgLTUsMyArNSw2IEBACiBRQl9PUFRfQVBQRU5EID0gIi1zaG93LWN1cnNvciAtdXNiIC1kZXZpY2UgdXNiLXRhYmxldCIKICMgQWRkIHRoZSAndmlydGlvLXJuZy1wY2knIGRldmljZSBvdGhlcndpc2UgdGhlIGd1ZXN0IG1heSBydW4gb3V0IG9mIGVudHJvcHkKIFFCX09QVF9BUFBFTkQgKz0gIi1vYmplY3Qgcm5nLXJhbmRvbSxmaWxlbmFtZT0vZGV2L3VyYW5kb20saWQ9cm5nMCAtZGV2aWNlIHZpcnRpby1ybmctcGNpLHJuZz1ybmcwIgorCisjIEZvciBncmFwaGljcyB0byB3b3JrIHdlIG5lZWQgdG8gZGVmaW5lIHRoZSBWR0EgZGV2aWNlIGFzIHdlbGwgYXMgdGhlIG5lY2Vzc2FyeSBVU0IgZGV2aWNlcworUUJfT1BUX0FQUEVORCArPSAiLXZnYSBzdGQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdWJvb3QteDg2LmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC14ODYuaW5jCmluZGV4IDQ5NTQxOGYuLjVkY2M4YjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC14ODYuaW5jCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9xZW11Ym9vdC14ODYuaW5jCkBAIC04LDkgKzgsOCBAQAogCiBRQl9BVURJT19EUlYgPSAiYWxzYSIKIFFCX0FVRElPX09QVCA9ICItc291bmRodyBhYzk3LGVzMTM3MCIKLVFCX0tFUk5FTF9DTURMSU5FX0FQUEVORCA9ICJ2Z2E9MCB1dmVzYWZiLm1vZGVfb3B0aW9uPSR7VVZFU0FfTU9ERX0gb3Byb2ZpbGUudGltZXI9MSB1dmVzYWZiLnRhc2tfdGltZW91dD0tMSIKK1FCX0tFUk5FTF9DTURMSU5FX0FQUEVORCA9ICJvcHJvZmlsZS50aW1lcj0xIgogUUJfT1BUX0FQUEVORCA9ICItc2hvdy1jdXJzb3IgLXVzYiAtZGV2aWNlIHVzYi10YWJsZXQiCiAjIEFkZCB0aGUgJ3ZpcnRpby1ybmctcGNpJyBkZXZpY2Ugb3RoZXJ3aXNlIHRoZSBndWVzdCBtYXkgcnVuIG91dCBvZiBlbnRyb3B5CiBRQl9PUFRfQVBQRU5EICs9ICItb2JqZWN0IHJuZy1yYW5kb20sZmlsZW5hbWU9L2Rldi91cmFuZG9tLGlkPXJuZzAgLWRldmljZSB2aXJ0aW8tcm5nLXBjaSxybmc9cm5nMCIKIAotVVZFU0FfTU9ERSA/PSAiNjQweDQ4MC0zMiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9yaXNjdi9hcmNoLXJpc2N2LmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9yaXNjdi9hcmNoLXJpc2N2LmluYwppbmRleCAxOWY4ZjNlLi5lM2RiZWY3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcmlzY3YvYXJjaC1yaXNjdi5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Jpc2N2L2FyY2gtcmlzY3YuaW5jCkBAIC00LDcgKzQsMTMgQEAKIAogVFVORV9BUkNIID0gIiR7VFVORV9BUkNIX3R1bmUtJHtERUZBVUxUVFVORX19IgogVFVORV9QS0dBUkNIID0gIiR7VFVORV9QS0dBUkNIX3R1bmUtJHtERUZBVUxUVFVORX19IgotVFVORV9DQ0FSR1MgLj0gIiIKK1RVTkVfQ0NBUkdTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdyaXNjdjY0bmYnLCAnIC1tYWJpPWxwNjQnLCAnICcsIGQpfSIKK1RVTkVfQ0NBUkdTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdyaXNjdjMybmYnLCAnIC1tYWJpPWlscDMyJywgJyAnLCBkKX0iCiAKICMgUUVNVSB1c2VybW9kZSBmYWlscyB3aXRoIGludmFsaWQgaW5zdHJ1Y3Rpb24gZXJyb3IgKEZvciByaXNjdjMyKQogTUFDSElORV9GRUFUVVJFU19CQUNLRklMTF9DT05TSURFUkVEX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdyaXNjdjMyJywgJyBxZW11LXVzZXJtb2RlJywgJycsIGQpfSIKKworIyBGaXg6IGxkOiB1bnJlY29nbml6ZWQgb3B0aW9uICctLWhhc2gtc3R5bGU9c3lzdicKK0xJTktFUl9IQVNIX1NUWUxFX2xpYmMtbmV3bGliID0gIiIKKyMgRml4OiBsZDogdW5yZWNvZ25pemVkIG9wdGlvbiAnLS1oYXNoLXN0eWxlPWdudScKK0xJTktFUl9IQVNIX1NUWUxFX2xpYmMtYmFyZW1ldGFsID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9yaXNjdi90dW5lLXJpc2N2LmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS9yaXNjdi90dW5lLXJpc2N2LmluYwppbmRleCAyNWQwNDYzLi43NDFlZWIzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvcmlzY3YvdHVuZS1yaXNjdi5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3Jpc2N2L3R1bmUtcmlzY3YuaW5jCkBAIC0zLDEwICszLDE0IEBACiBUVU5FVkFMSURbcmlzY3Y2NF0gPSAiRW5hYmxlIDY0LWJpdCBSSVNDLVYgb3B0aW1pemF0aW9ucyIKIFRVTkVWQUxJRFtyaXNjdjMyXSA9ICJFbmFibGUgMzItYml0IFJJU0MtViBvcHRpbWl6YXRpb25zIgogCitUVU5FVkFMSURbcmlzY3Y2NG5mXSA9ICJFbmFibGUgNjQtYml0IFJJU0MtViBvcHRpbWl6YXRpb25zIG5vIGZsb2F0aW5nIHBvaW50IgorVFVORVZBTElEW3Jpc2N2MzJuZl0gPSAiRW5hYmxlIDMyLWJpdCBSSVNDLVYgb3B0aW1pemF0aW9ucyBubyBmbG9hdGluZyBwb2ludCIKKwogVFVORVZBTElEW2JpZ2VuZGlhbl0gPSAiQmlnIGVuZGlhbiBtb2RlIgogCi1BVkFJTFRVTkVTICs9ICJyaXNjdjY0IHJpc2N2MzIiCitBVkFJTFRVTkVTICs9ICJyaXNjdjY0IHJpc2N2MzIgcmlzY3Y2NG5mIHJpc2N2MzJuZiIKIAorIyBEZWZhdWx0CiBUVU5FX0ZFQVRVUkVTX3R1bmUtcmlzY3Y2NCA9ICJyaXNjdjY0IgogVFVORV9BUkNIX3R1bmUtcmlzY3Y2NCA9ICJyaXNjdjY0IgogVFVORV9QS0dBUkNIX3R1bmUtcmlzY3Y2NCA9ICJyaXNjdjY0IgpAQCAtMTcsMyArMjEsMTMgQEAKIFRVTkVfUEtHQVJDSF90dW5lLXJpc2N2MzIgPSAicmlzY3YzMiIKIFBBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1yaXNjdjMyID0gInJpc2N2MzIiCiAKKyMgTm8gZmxvYXQKK1RVTkVfRkVBVFVSRVNfdHVuZS1yaXNjdjY0bmYgPSAiJHtUVU5FX0ZFQVRVUkVTX3R1bmUtcmlzY3Y2NH0gcmlzY3Y2NG5mIgorVFVORV9BUkNIX3R1bmUtcmlzY3Y2NG5mID0gInJpc2N2NjQiCitUVU5FX1BLR0FSQ0hfdHVuZS1yaXNjdjY0bmYgPSAicmlzY3Y2NCIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1yaXNjdjY0bmYgPSAicmlzY3Y2NG5mIgorCitUVU5FX0ZFQVRVUkVTX3R1bmUtcmlzY3YzMm5mID0gIiR7VFVORV9GRUFUVVJFU190dW5lLXJpc2N2MzJ9IHJpc2N2MzJuZiIKK1RVTkVfQVJDSF90dW5lLXJpc2N2MzJuZiA9ICJyaXNjdjMyIgorVFVORV9QS0dBUkNIX3R1bmUtcmlzY3YzMm5mID0gInJpc2N2MzIiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcmlzY3YzMm5mID0gInJpc2N2MzJuZiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTExMzZqZi1zLmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTExMzZqZi1zLmluYwppbmRleCBiMjU5OTVkLi4xNzNjYjQ2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTM2amYtcy5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXJtMTEzNmpmLXMuaW5jCkBAIC0xMCw3ICsxMCw3IEBACiBBUk1QS0dBUkNIX3R1bmUtYXJtMTEzNmpmcyA9ICJhcm0xMTM2amZzIgogQVJNUEtHQVJDSF90dW5lLWFybTExMzZqZnNoZiA9ICJhcm0xMTM2amZzIgogIyBtY3B1IGlzIHVzZWQgc28gZG9uJ3QgdXNlIGFybXY2IGFzIHdlIGRvbid0IHdhbnQgbWFyY2gKLVRVTkVfRkVBVFVSRVNfdHVuZS1hcm0xMTM2amZzID0gImFybSBhcm0xMTM2amZzIgorVFVORV9GRUFUVVJFU190dW5lLWFybTExMzZqZnMgPSAiYXJtIHZmcCBhcm0xMTM2amZzIgogVFVORV9GRUFUVVJFU190dW5lLWFybTExMzZqZnNoZiA9ICIke1RVTkVfRkVBVFVSRVNfdHVuZS1hcm0xMTM2amZzfSBjYWxsY29udmVudGlvbi1oYXJkIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybTExMzZqZnMgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjZ9IGFybTExMzZqZnMtdmZwIgogUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybTExMzZqZnNoZiA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12NmhmfSBhcm0xMTM2amZzaGYtdmZwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXJtMTE3Nmp6LXMuaW5jIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtYXJtMTE3Nmp6LXMuaW5jCmluZGV4IGM3NDFlODAuLmE2M2Q1ODUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTExNzZqei1zLmluYworKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm0xMTc2anotcy5pbmMKQEAgLTksNyArOSw3IEBACiBBVkFJTFRVTkVTICs9ICJhcm0xMTc2anpzIgogQVJNUEtHQVJDSF90dW5lLWFybTExNzZqenMgPSAiYXJtMTE3Nmp6cyIKIFRVTkVfRkVBVFVSRVNfdHVuZS1hcm0xMTc2anpzID0gImFybSB0aHVtYiBhcm0xMTc2anpzIgotUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybTExNzZqenMgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjZ0Yi1ub3ZmcH0gYXJtMTE3Nmp6cyBhcm0xMTc2anpzdCIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm0xMTc2anpzID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWFybXY2dC1ub3ZmcH0gYXJtMTE3Nmp6cyBhcm0xMTc2anpzdCIKIAogQVZBSUxUVU5FUyArPSAiYXJtMTE3Nmp6cy1iZSIKIEFSTVBLR0FSQ0hfdHVuZS1hcm0xMTc2anpzLWJlID0gIiR7QVJNUEtHQVJDSF90dW5lLWFybTExNzZqenN9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29ydGV4YTcyLWNvcnRleGE1My5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMjA4Yjk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtY29ydGV4YTcyLWNvcnRleGE1My5pbmMKQEAgLTAsMCArMSwyMyBAQAorREVGQVVMVFRVTkUgPz0gImNvcnRleGE3Mi1jb3J0ZXhhNTMiCisKK3JlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvYXJtL2FyY2gtYXJtdjhhLmluYworCitUVU5FVkFMSURbY29ydGV4YTcyLWNvcnRleGE1M10gPSAiRW5hYmxlIGJpZy5MSVRUTEUgQ29ydGV4LUE3Mi5Db3J0ZXgtQTUzIHNwZWNpZmljIHByb2Nlc3NvciBvcHRpbWl6YXRpb25zIgorCitUVU5FQ09ORkxJQ1RTW2FhcmNoNjRdID0gImFybXY0IGFybXY1IGFybXY2IGFybXY3IGFybXY3YSIKKworTUFDSElORU9WRVJSSURFUyA9LiAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiY29ydGV4YTcyLWNvcnRleGE1MyIsICJjb3J0ZXhhNzItY29ydGV4YTUzOiIsICIiICxkKX0iCisKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJjb3J0ZXhhNzItY29ydGV4YTUzIiwgIiAtbXR1bmU9Y29ydGV4LWE3Mi5jb3J0ZXgtYTUzIiwgIiIsIGQpfSIKKworIyBjb3J0ZXhhNzIuY29ydGV4YTUzIGltcGxpZXMgY3JjIHN1cHBvcnQKK0FWQUlMVFVORVMgKz0gImNvcnRleGE3Mi1jb3J0ZXhhNTMgY29ydGV4YTcyLWNvcnRleGE1My1jcnlwdG8iCitBUk1QS0dBUkNIX3R1bmUtY29ydGV4YTcyLWNvcnRleGE1MyAgICAgICAgICAgICAgICAgID0gImNvcnRleGE3Mi1jb3J0ZXhhNTMiCitBUk1QS0dBUkNIX3R1bmUtY29ydGV4YTcyLWNvcnRleGE1My1jcnlwdG8gICAgICAgICAgID0gImNvcnRleGE3Mi1jb3J0ZXhhNTMiCitUVU5FX0ZFQVRVUkVTX3R1bmUtY29ydGV4YTcyLWNvcnRleGE1MyAgICAgICAgICAgICAgID0gIiR7VFVORV9GRUFUVVJFU190dW5lLWFybXY4YS1jcmN9IGNvcnRleGE3Mi1jb3J0ZXhhNTMiCitUVU5FX0ZFQVRVUkVTX3R1bmUtY29ydGV4YTcyLWNvcnRleGE1My1jcnlwdG8gICAgICAgID0gIiR7VFVORV9GRUFUVVJFU190dW5lLWFybXY4YS1jcmMtY3J5cHRvfSBjb3J0ZXhhNzItY29ydGV4YTUzIgorUEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLWNvcnRleGE3Mi1jb3J0ZXhhNTMgICAgICAgICA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1hcm12OGEtY3JjfSAgICAgICAgY29ydGV4YTcyLWNvcnRleGE1MyIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzLWNyeXB0byAgPSAiJHtQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtYXJtdjhhLWNyYy1jcnlwdG99IGNvcnRleGE3Mi1jb3J0ZXhhNTMgY29ydGV4YTcyLWNvcnRleGE1My1jcnlwdG8iCitCQVNFX0xJQl90dW5lLWNvcnRleGE3Mi1jb3J0ZXhhNTMgICAgICAgICAgICAgICAgICAgID0gImxpYjY0IgorQkFTRV9MSUJfdHVuZS1jb3J0ZXhhNzItY29ydGV4YTUzLWNyeXB0byAgICAgICAgICAgICA9ICJsaWI2NCIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3R1bmUtcG93ZXI5LmluYyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBvd2VyOS5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODFkNmU4ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLXBvd2VyOS5pbmMKQEAgLTAsMCArMSwzNSBAQAorREVGQVVMVFRVTkUgPz0gInBwYzY0cDlsZSIKKworcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS9wb3dlcnBjL2FyY2gtcG93ZXJwYzY0LmluYworCitUVU5FVkFMSURbcG93ZXI5XSA9ICJFbmFibGUgSUJNIFBvd2VyOSBzcGVjaWZpYyBwcm9jZXNzb3Igb3B0aW1pemF0aW9ucyIKK1RVTkVfQ0NBUkdTIC49ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdwb3dlcjknLCAnIC1tY3B1PXBvd2VyOScsICcnLCBkKX0iCisKK0FWQUlMVFVORVMgKz0gInBwY3A5IHBwYzY0cDkgcHBjcDlsZSBwcGM2NHA5bGUiCisKK1RVTkVfRkVBVFVSRVNfdHVuZS1wcGNwOSA9ICJtMzIgZnB1LWhhcmQgcG93ZXI5IGFsdGl2ZWMgYmlnZW5kaWFuIgorQkFTRV9MSUJfdHVuZS1wcGNwOSA9ICJsaWIiCitUVU5FX1BLR0FSQ0hfdHVuZS1wcGNwOSA9ICJwcGNwOSIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wcGNwOSA9ICIke1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wb3dlcnBjfSBwcGNwOSIKKworVFVORV9GRUFUVVJFU190dW5lLXBwYzY0cDkgPSAibTY0IGZwdS1oYXJkIHBvd2VyOSBhbHRpdmVjIGJpZ2VuZGlhbiIKK0JBU0VfTElCX3R1bmUtcHBjNjRwOSA9ICJsaWI2NCIKK1RVTkVfUEtHQVJDSF90dW5lLXBwYzY0cDkgPSAicHBjNjRwOSIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wcGM2NHA5ID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBvd2VycGM2NH0gcHBjNjRwOSIKKworVFVORV9GRUFUVVJFU190dW5lLXBwY3A5bGUgPSAibTMyIGZwdS1oYXJkIHBvd2VyOSBhbHRpdmVjIgorQkFTRV9MSUJfdHVuZS1wcGNwOWxlID0gImxpYiIKK1RVTkVfUEtHQVJDSF90dW5lLXBwY3A5bGUgPSAicHBjcDlsZSIKK1BBQ0tBR0VfRVhUUkFfQVJDSFNfdHVuZS1wcGNwOWxlID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBvd2VycGNsZX0gcHBjcDlsZSIKKworVFVORV9GRUFUVVJFU190dW5lLXBwYzY0cDlsZSA9ICJtNjQgZnB1LWhhcmQgcG93ZXI5IGFsdGl2ZWMiCitCQVNFX0xJQl90dW5lLXBwYzY0cDlsZSA9ICJsaWI2NCIKK1RVTkVfUEtHQVJDSF90dW5lLXBwYzY0cDlsZSA9ICJwcGM2NHA5bGUiCitQQUNLQUdFX0VYVFJBX0FSQ0hTX3R1bmUtcHBjNjRwOWxlID0gIiR7UEFDS0FHRV9FWFRSQV9BUkNIU190dW5lLXBvd2VycGM2NGxlfSBwcGM2NHA5bGUiCisKKyMgZ2xpYmMgY29uZmlndXJlIG9wdGlvbnMgdG8gZ2V0IHBvd2VyOSBzcGVjaWZpYyBsaWJyYXJ5CitHTElCQ19FWFRSQV9PRUNPTkZfcG93ZXJwYzY0ICs9ICIke0BiYi51dGlscy5jb250YWlucygnVFVORV9GRUFUVVJFUycsICdwb3dlcjknLCAnLS13aXRoLWNwdT1wb3dlcjknLCAnJywgZCl9IgorR0xJQkNfRVhUUkFfT0VDT05GX3Bvd2VycGMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0ZFQVRVUkVTJywgJ3Bvd2VyOScsICctLXdpdGgtY3B1PXBvd2VyOScsICcnLCBkKX0iCisKKyMgUUVNVSB1c2VybW9kZSBmYWlscyB3aXRoIGludmFsaWQgaW5zdHJ1Y3Rpb24gZXJyb3IKK01BQ0hJTkVfRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRF9hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAncG93ZXI5JywgJyBxZW11LXVzZXJtb2RlJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL2luY2x1ZGUveDg2LWJhc2UuaW5jCmluZGV4IDAyMjdmM2MuLmE3MjcxNDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvaW5jbHVkZS94ODYtYmFzZS5pbmMKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9pbmNsdWRlL3g4Ni1iYXNlLmluYwpAQCAtOCw3ICs4LDcgQEAKIE1BQ0hJTkVfRkVBVFVSRVMgKz0gInNjcmVlbiBrZXlib2FyZCBwY2kgdXNiaG9zdCBleHQyIGV4dDMgeDg2IFwKICAgICAgICAgICAgICAgICAgICAgIGFjcGkgc2VyaWFsIHVzYmdhZGdldCBhbHNhIgogCi1JTUFHRV9GU1RZUEVTID89ICJoZGRpbWciCitJTUFHRV9GU1RZUEVTID89ICJ3aWMiCiAKIEtFUk5FTF9JTUFHRVRZUEUgPz0gImJ6SW1hZ2UiCiAKQEAgLTE4LDcgKzE4LDcgQEAKICMga2VybmVsLXJlbGF0ZWQgdmFyaWFibGVzCiAjCiBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgPz89ICJsaW51eC15b2N0byIKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID8/PSAiNS4yJSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID8/PSAiNS40JSIKIAogIwogIyBYU0VSVkVSIHN1YmNvbXBvbmVudHMsIHVzZWQgdG8gYnVpbGQgdGhlIFhTRVJWRVIgdmFyaWFibGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybS5jb25mIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtLmNvbmYKaW5kZXggMjZmNDBiMS4uMzY3ZmNlZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtLmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtLmNvbmYKQEAgLTExLDcgKzExLDcgQEAKIAogIyBGb3IgcnVucWVtdQogUUJfU1lTVEVNX05BTUUgPSAicWVtdS1zeXN0ZW0tYXJtIgotUUJfTUFDSElORSA9ICItbWFjaGluZSB2aXJ0IgorUUJfTUFDSElORSA9ICItbWFjaGluZSB2aXJ0LGhpZ2htZW09b2ZmIgogUUJfQ1BVID0gIi1jcHUgY29ydGV4LWExNSIKICMgU3RhbmRhcmQgU2VyaWFsIGNvbnNvbGUKIFFCX0tFUk5FTF9DTURMSU5FX0FQUEVORCA9ICJjb25zb2xlPXR0eUFNQTAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm02NC5jb25mIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtNjQuY29uZgppbmRleCBlYzJhODg3Li4xZTJkNGYwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm02NC5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybTY0LmNvbmYKQEAgLTEzLDcgKzEzLDcgQEAKIFFCX1NZU1RFTV9OQU1FID0gInFlbXUtc3lzdGVtLWFhcmNoNjQiCiBRQl9NQUNISU5FID0gIi1tYWNoaW5lIHZpcnQiCiBRQl9DUFUgPSAiLWNwdSBjb3J0ZXgtYTU3IgotUUJfQ1BVX0tWTSA9ICItY3B1IGhvc3QiCitRQl9DUFVfS1ZNID0gIi1jcHUgaG9zdCAtbWFjaGluZSBnaWMtdmVyc2lvbj0zIgogIyBTdGFuZGFyZCBTZXJpYWwgY29uc29sZQogUUJfS0VSTkVMX0NNRExJTkVfQVBQRU5EID0gImNvbnNvbGU9dHR5QU1BMCIKICMgRm9yIGdyYXBoaWNzIHRvIHdvcmsgd2UgbmVlZCB0byBkZWZpbmUgdGhlIFZHQSBkZXZpY2UgYXMgd2VsbCBhcyB0aGUgbmVjZXNzYXJ5IFVTQiBkZXZpY2VzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm12NS5jb25mIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11YXJtdjUuY29uZgppbmRleCBmYjQ3ODlmLi5lN2YyNGZlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVhcm12NS5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdWFybXY1LmNvbmYKQEAgLTQsNyArNCw2IEBACiAKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvcWVtdS5pbmMKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvdHVuZS1hcm05MjZlanMuaW5jCi0jcmVxdWlyZSBjb25mL21hY2hpbmUvaW5jbHVkZS90dW5lLWFybTExMzZqZi1zLmluYwogCiBLRVJORUxfSU1BR0VUWVBFID0gInpJbWFnZSIKIApAQCAtMTcsNyArMTYsNyBAQAogUUJfT1BUX0FQUEVORCA9ICItc2hvdy1jdXJzb3IgLXVzYiAtZGV2aWNlIHVzYi10YWJsZXQiCiAjIEFkZCB0aGUgJ3ZpcnRpby1ybmctcGNpJyBkZXZpY2Ugb3RoZXJ3aXNlIHRoZSBndWVzdCBtYXkgcnVuIG91dCBvZiBlbnRyb3B5CiBRQl9PUFRfQVBQRU5EICs9ICItb2JqZWN0IHJuZy1yYW5kb20sZmlsZW5hbWU9L2Rldi91cmFuZG9tLGlkPXJuZzAgLWRldmljZSB2aXJ0aW8tcm5nLXBjaSxybmc9cm5nMCIKLVBSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID8/PSAiNS4yJSIKK1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvID8/PSAiNS40JSIKIFFCX0RUQiA9ICIke0BvZS51dGlscy52ZXJzaW9uX2xlc3Nfb3JfZXF1YWwoJ1BSRUZFUlJFRF9WRVJTSU9OX2xpbnV4LXlvY3RvJywgJzQuNycsICcnLCAnekltYWdlLXZlcnNhdGlsZS1wYi5kdGInLCBkKX0iCiAKIEtNQUNISU5FX3FlbXVhcm12NSA9ICJxZW11YXJtIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11cmlzY3Y2NC5jb25mIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11cmlzY3Y2NC5jb25mCmluZGV4IGI0NWZkZDUuLmE3NTNhZjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXJpc2N2NjQuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXVyaXNjdjY0LmNvbmYKQEAgLTQsNiArNCw4IEBACiAKIHJlcXVpcmUgY29uZi9tYWNoaW5lL2luY2x1ZGUvcmlzY3YvcWVtdXJpc2N2LmluYwogCitYVklTT1JfUExBVCA9ICJyaXNjdi92aXJ0NjQiCisKIEVYVFJBX0lNQUdFREVQRU5EUyArPSAidS1ib290IgogVUJPT1RfTUFDSElORSA9ICJxZW11LXJpc2N2NjRfc21vZGVfZGVmY29uZmlnIgogVUJPT1RfRUxGID0gInUtYm9vdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9jb25mL21hY2hpbmUvcWVtdXg4Ni02NC5jb25mIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LTY0LmNvbmYKaW5kZXggNjQ4Y2YyZi4uZGI5MDA0ZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LTY0LmNvbmYKKysrIGIvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LTY0LmNvbmYKQEAgLTM3LDEwICszNyw2IEBACiAKIE1BQ0hJTkVfRVhUUkFfUlJFQ09NTUVORFMgPSAia2VybmVsLW1vZHVsZS1zbmQtZW5zMTM3MCBrZXJuZWwtbW9kdWxlLXNuZC1yYXdtaWRpIgogCi1LRVJORUxfTU9EVUxFX0FVVE9MT0FEICs9ICJ1dmVzYWZiIgotS0VSTkVMX01PRFVMRV9QUk9CRUNPTkYgKz0gInV2ZXNhZmIiCi1tb2R1bGVfY29uZl91dmVzYWZiID0gIm9wdGlvbnMgdXZlc2FmYiBtb2RlX29wdGlvbj0ke1VWRVNBX01PREV9IgotCiBXS1NfRklMRSA/PSAicWVtdXg4Ni1kaXJlY3RkaXNrLndrcyIKIGRvX2ltYWdlX3dpY1tkZXBlbmRzXSArPSAic3lzbGludXg6ZG9fcG9wdWxhdGVfc3lzcm9vdCBzeXNsaW51eC1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBtdG9vbHMtbmF0aXZlOmRvX3BvcHVsYXRlX3N5c3Jvb3QgZG9zZnN0b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2NvbmYvbWFjaGluZS9xZW11eDg2LmNvbmYgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYuY29uZgppbmRleCA4ZTBkYTgyLi43ZTY3MjNiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYuY29uZgorKysgYi9wb2t5L21ldGEvY29uZi9tYWNoaW5lL3FlbXV4ODYuY29uZgpAQCAtMzQsMTAgKzM0LDYgQEAKIAogTUFDSElORV9FWFRSQV9SUkVDT01NRU5EUyA9ICJrZXJuZWwtbW9kdWxlLXNuZC1lbnMxMzcwIGtlcm5lbC1tb2R1bGUtc25kLXJhd21pZGkiCiAKLUtFUk5FTF9NT0RVTEVfQVVUT0xPQUQgKz0gInV2ZXNhZmIiCi1LRVJORUxfTU9EVUxFX1BST0JFQ09ORiArPSAidXZlc2FmYiIKLW1vZHVsZV9jb25mX3V2ZXNhZmIgPSAib3B0aW9ucyB1dmVzYWZiIG1vZGVfb3B0aW9uPSR7VVZFU0FfTU9ERX0iCi0KIFdLU19GSUxFID89ICJxZW11eDg2LWRpcmVjdGRpc2sud2tzIgogZG9faW1hZ2Vfd2ljW2RlcGVuZHNdICs9ICJzeXNsaW51eDpkb19wb3B1bGF0ZV9zeXNyb290IHN5c2xpbnV4LW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IG10b29scy1uYXRpdmU6ZG9fcG9wdWxhdGVfc3lzcm9vdCBkb3Nmc3Rvb2xzLW5hdGl2ZTpkb19wb3B1bGF0ZV9zeXNyb290IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvY29uZi9tdWx0aWxpYi5jb25mIGIvcG9reS9tZXRhL2NvbmYvbXVsdGlsaWIuY29uZgppbmRleCBjZmVkM2ZiLi41OGYyYWM1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvY29uZi9tdWx0aWxpYi5jb25mCisrKyBiL3Bva3kvbWV0YS9jb25mL211bHRpbGliLmNvbmYKQEAgLTksNiArOSw3IEBACiBTVEFHSU5HX0RJUl9IT1NUID0gIiR7V09SS0RJUn0vJHtNTFBSRUZJWH1yZWNpcGUtc3lzcm9vdCIKIFNUQUdJTkdfRElSX1RBUkdFVCA9ICIke1dPUktESVJ9LyR7TUxQUkVGSVh9cmVjaXBlLXN5c3Jvb3QiCiBSRUNJUEVfU1lTUk9PVCA9ICIke1dPUktESVJ9LyR7TUxQUkVGSVh9cmVjaXBlLXN5c3Jvb3QiCitSRUNJUEVfU1lTUk9PVF9jbGFzcy1uYXRpdmUgPSAiJHtXT1JLRElSfS9yZWNpcGUtc3lzcm9vdCIKIAogSU5IRVJJVCArPSAibXVsdGlsaWJfZ2xvYmFsIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL2J6aXAyIGIvcG9reS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9iemlwMi0xLjAuNgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9iemlwMgpyZW5hbWUgdG8gcG9reS9tZXRhL2ZpbGVzL2NvbW1vbi1saWNlbnNlcy9iemlwMi0xLjAuNgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2ZpbGVzL3Rvb2xjaGFpbi1zaGFyLWV4dHJhY3Quc2ggYi9wb2t5L21ldGEvZmlsZXMvdG9vbGNoYWluLXNoYXItZXh0cmFjdC5zaAppbmRleCBjY2M0ZjRlLi4wNDUyN2Y4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvZmlsZXMvdG9vbGNoYWluLXNoYXItZXh0cmFjdC5zaAorKysgYi9wb2t5L21ldGEvZmlsZXMvdG9vbGNoYWluLXNoYXItZXh0cmFjdC5zaApAQCAtMSwxMyArMSwxMyBAQAogIyEvYmluL3NoCiAKLVsgLXogIiRFTlZDTEVBTkVEIiBdICYmIGV4ZWMgL3Vzci9iaW4vZW52IC1pIEVOVkNMRUFORUQ9MSBIT01FPSIkSE9NRSIgXAotCUxDX0FMTD1lbl9VUy5VVEYtOCBcCi0JVEVSTT0kVEVSTSBcCi0JSUNFQ0NfUEFUSD0iJElDRUNDX1BBVEgiIFwKLQlodHRwX3Byb3h5PSIkaHR0cF9wcm94eSIgaHR0cHNfcHJveHk9IiRodHRwc19wcm94eSIgZnRwX3Byb3h5PSIkZnRwX3Byb3h5IiBcCi0Jbm9fcHJveHk9IiRub19wcm94eSIgYWxsX3Byb3h5PSIkYWxsX3Byb3h5IiBHSVRfUFJPWFlfQ09NTUFORD0iJEdJVF9QUk9YWV9DT01NQU5EIiAiJDAiICIkQCIKLVsgLWYgL2V0Yy9lbnZpcm9ubWVudCBdICYmIC4gL2V0Yy9lbnZpcm9ubWVudAotZXhwb3J0IFBBVEg9YGVjaG8gIiRQQVRIIiB8IHNlZCAtZSAncy86XC4vLycgLWUgJ3MvOjovOi8nYAorZXhwb3J0IExDX0FMTD1lbl9VUy5VVEYtOAorI01ha2Ugc3VyZSBhdCBsZWFzdCBvbmUgcHl0aG9uIGlzIGluc3RhbGxlZAorSU5JVF9QWVRIT049JCh3aGljaCBweXRob24zIDI+L2Rldi9udWxsICkKK1sgLXogIiRJTklUX1BZVEhPTiIgXSAmJiBJTklUX1BZVEhPTj0kKHdoaWNoIHB5dGhvbjIgMj4vZGV2L251bGwpCitbIC16ICIkSU5JVF9QWVRIT04iIF0gJiYgZWNobyAiRXJyb3I6IFRoZSBTREsgbmVlZHMgYSBweXRob24gaW5zdGFsbGVkIiAmJiBleGl0IDEKKworIyBSZW1vdmUgaW52YWxpZCBQQVRIIGVsZW1lbnRzIGZpcnN0IChtYXliZSBmcm9tIGEgcHJldmlvdXNseSBzZXR1cCB0b29sY2hhaW4gbm93IGRlbGV0ZWQKK1BBVEg9YCRJTklUX1BZVEhPTiAtYyAnaW1wb3J0IG9zOyBwcmludCgiOiIuam9pbihlIGZvciBlIGluIG9zLmVudmlyb25bIlBBVEgiXS5zcGxpdCgiOiIpIGlmIG9zLnBhdGguZXhpc3RzKGUpKSknYAogCiB0d2Vha3BhdGggKCkgewogICAgIGNhc2UgIjoke1BBVEh9OiIgaW4KQEAgLTI0OSw3ICsyNDksNyBAQAogICAgICAgICBybSBzZGsuemlwICYmIGV4aXQgMQogICAgIGZpCiBlbHNlCi0gICAgdGFpbCAtbiArJHBheWxvYWRfb2Zmc2V0ICQwfCAkU1VET19FWEVDIHRhciB4SiAtQyAkdGFyZ2V0X3Nka19kaXIgLS1jaGVja3BvaW50PS4yNTAwICRFWFRSQV9UQVJfT1BUSU9OUyB8fCBleGl0IDEKKyAgICB0YWlsIC1uICskcGF5bG9hZF9vZmZzZXQgJDB8ICRTVURPX0VYRUMgdGFyIG14SiAtQyAkdGFyZ2V0X3Nka19kaXIgLS1jaGVja3BvaW50PS4yNTAwICRFWFRSQV9UQVJfT1BUSU9OUyB8fCBleGl0IDEKIGZpCiBlY2hvICJkb25lIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL2VsZi5weSBiL3Bva3kvbWV0YS9saWIvb2UvZWxmLnB5CmluZGV4IDI1NjJjZWEuLmRmMGE0NTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvZWxmLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvZWxmLnB5CkBAIC0xNSwxMyArMTUsMTMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICJhYXJjaDY0IiA6ICAgKDE4MywgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAgICAgImFhcmNoNjRfYmUiIDooMTgzLCAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICA2NCksCiAgICAgICAgICAgICAgICAgICAgICAgICAiaTU4NiIgOiAgICAgICgzLCAgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICJpNjg2IiA6ICAgICAgKDMsICAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIng4Nl82NCI6ICAgICAoNjIsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCiAgICAgICAgICAgICAgICAgICAgICAgICAiZXBpcGhhbnkiOiAgICg0NjQzLCAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJsbTMyIjogICAgICAgKDEzOCwgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHMiOiAgICAgICAoIDgsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAibWlwc2VsIjogICAgICggOCwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplIjogICgxODksICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlYiI6KDE4OSwgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWVsIjooMTg5LCAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgInJpc2N2MzIiOiAgICAoMjQzLCAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCkBAIC0zNCw2ICszNCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAiYXJtZWIiOiAgICAgICg0MCwgICAgOTcsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKDIwLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGM2NCI6ICAoMjEsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICA2NCksCisgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYzY0bGUiOiAgKDIxLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICA2NCksCiAgICAgICAgICAgICAgICAgICAgICAgICAiaTM4NiI6ICAgICAgICggMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJpNDg2IjogICAgICAgKCAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgImk1ODYiOiAgICAgICAoIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCkBAIC01OCw3ICs1OSw2IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAic2g0IjogICAgICAgICg0MiwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJzcGFyYyI6ICAgICAgKCAyLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemUiOiAgKDE4OSwgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCi0gICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZWViIjooMTg5LCAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWwiOigxODksICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgIH0sCiAgICAgICAgICAgICAibGludXgtbXVzbCIgOiB7IApAQCAtNjgsNiArNjgsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgImFybWViIjogICAgICAoICA0MCwgICAgOTcsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJwb3dlcnBjIjogICAgKCAgMjAsICAgICAwLCAgICAwLCAgICAgICAgICBGYWxzZSwgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAicG93ZXJwYzY0IjogICggIDIxLCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgNjQpLAorICAgICAgICAgICAgICAgICAgICAgICAgInBvd2VycGM2NGxlIjogICgyMSwgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgNjQpLAogICAgICAgICAgICAgICAgICAgICAgICAgImkzODYiOiAgICAgICAoICAgMywgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJpNDg2IjogICAgICAgKCAgIDMsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAiaTU4NiI6ICAgICAgICggICAzLCAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLApAQCAtNzgsNyArNzksNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIm1pcHM2NCI6ICAgICAoICAgOCwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDY0KSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaXBzNjRlbCI6ICAgKCAgIDgsICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICA2NCksCiAgICAgICAgICAgICAgICAgICAgICAgICAibWljcm9ibGF6ZSI6ICAoMTg5LCAgICAgMCwgICAgMCwgICAgICAgICAgRmFsc2UsICAgICAgICAgMzIpLAotICAgICAgICAgICAgICAgICAgICAgICAgIm1pY3JvYmxhemVlYiI6KDE4OSwgICAgIDAsICAgIDAsICAgICAgICAgIEZhbHNlLCAgICAgICAgIDMyKSwKICAgICAgICAgICAgICAgICAgICAgICAgICJtaWNyb2JsYXplZWwiOigxODksICAgICAwLCAgICAwLCAgICAgICAgICBUcnVlLCAgICAgICAgICAzMiksCiAgICAgICAgICAgICAgICAgICAgICAgICAicmlzY3YzMiI6ICAgICgyNDMsICAgICAgMCwgICAgMCwgICAgICAgICAgVHJ1ZSwgICAgICAgICAgMzIpLAogICAgICAgICAgICAgICAgICAgICAgICAgInJpc2N2NjQiOiAgICAoMjQzLCAgICAgIDAsICAgIDAsICAgICAgICAgIFRydWUsICAgICAgICAgIDY0KSwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZS5weSBiL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZS5weQppbmRleCBiODU4NWQ0Li5kZDcwMGNiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3BhY2thZ2UucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlLnB5CkBAIC0yODMsMzYgKzI4MywzIEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzaGxpYl9wcm92aWRlcltzWzBdXSA9IHt9CiAgICAgICAgICAgICAgICAgICAgIHNobGliX3Byb3ZpZGVyW3NbMF1dW3NbMV1dID0gKGRlcF9wa2csIHNbMl0pCiAgICAgcmV0dXJuIHNobGliX3Byb3ZpZGVyCi0KLQotZGVmIG5wbV9zcGxpdF9wYWNrYWdlX2RpcnMocGtnZGlyKToKLSAgICAiIiIKLSAgICBXb3JrIG91dCB0aGUgcGFja2FnZXMgZmV0Y2hlZCBhbmQgdW5wYWNrZWQgYnkgQml0QmFrZSdzIG5wbSBmZXRjaGVyCi0gICAgUmV0dXJucyBhIGRpY3Qgb2YgcGFja2FnZW5hbWUgLT4gKHJlbHBhdGgsIHBhY2thZ2UuanNvbikgb3JkZXJlZAotICAgIHN1Y2ggdGhhdCBpdCBpcyBzdWl0YWJsZSBmb3IgdXNlIGluIFBBQ0tBR0VTIGFuZCBGSUxFUwotICAgICIiIgotICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0Ci0gICAgaW1wb3J0IGpzb24KLSAgICBwYWNrYWdlcyA9IHt9Ci0gICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsocGtnZGlyKToKLSAgICAgICAgaWYgb3MucGF0aC5iYXNlbmFtZShyb290KSA9PSAnbm9kZV9tb2R1bGVzJzoKLSAgICAgICAgICAgIGZvciBkbiBpbiBkaXJzOgotICAgICAgICAgICAgICAgIHJlbHB0aCA9IG9zLnBhdGgucmVscGF0aChvcy5wYXRoLmpvaW4ocm9vdCwgZG4pLCBwa2dkaXIpCi0gICAgICAgICAgICAgICAgcGtnaXRlbXMgPSBbJyR7UE59J10KLSAgICAgICAgICAgICAgICBmb3IgcGF0aGl0ZW0gaW4gcmVscHRoLnNwbGl0KCcvJyk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIHBhdGhpdGVtID09ICdub2RlX21vZHVsZXMnOgotICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgcGtnaXRlbXMuYXBwZW5kKHBhdGhpdGVtKQotICAgICAgICAgICAgICAgIHBrZ25hbWUgPSAnLScuam9pbihwa2dpdGVtcykucmVwbGFjZSgnXycsICctJykKLSAgICAgICAgICAgICAgICBwa2duYW1lID0gcGtnbmFtZS5yZXBsYWNlKCdAJywgJycpCi0gICAgICAgICAgICAgICAgcGtnZmlsZSA9IG9zLnBhdGguam9pbihyb290LCBkbiwgJ3BhY2thZ2UuanNvbicpCi0gICAgICAgICAgICAgICAgZGF0YSA9IE5vbmUKLSAgICAgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwa2dmaWxlKToKLSAgICAgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHBrZ2ZpbGUsICdyJykgYXMgZjoKLSAgICAgICAgICAgICAgICAgICAgICAgIGRhdGEgPSBqc29uLmxvYWRzKGYucmVhZCgpKQotICAgICAgICAgICAgICAgICAgICBwYWNrYWdlc1twa2duYW1lXSA9IChyZWxwdGgsIGRhdGEpCi0gICAgIyBXZSB3YW50IHRoZSBtYWluIHBhY2thZ2UgZm9yIGEgbW9kdWxlIHNvcnRlZCAqYWZ0ZXIqIGl0cyBzdWJwYWNrYWdlcwotICAgICMgKHNvIHRoYXQgaXQgZG9lc24ndCBvdGhlcndpc2Ugc3RlYWwgdGhlIGZpbGVzIGZvciB0aGUgc3VicGFja2FnZSksIHNvCi0gICAgIyB0aGlzIGlzIGEgY2hlYXAgd2F5IHRvIGRvIHRoYXQgd2hpbHN0IHN0aWxsIGhhdmluZyBhbiBvdGhlcndpc2UKLSAgICAjIGFscGhhYmV0aWNhbCBzb3J0Ci0gICAgcmV0dXJuIE9yZGVyZWREaWN0KChrZXksIHBhY2thZ2VzW2tleV0pIGZvciBrZXkgaW4gc29ydGVkKHBhY2thZ2VzLCBrZXk9bGFtYmRhIHBrZzogcGtnICsgJ34nKSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvcGFja2FnZV9tYW5hZ2VyLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlX21hbmFnZXIucHkKaW5kZXggNGZmMTljZi4uYjA2NjA0MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlX21hbmFnZXIucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlX21hbmFnZXIucHkKQEAgLTQwLDggKzQwLDkgQEAKICAgICB2ZXIgPSAiIgogICAgIGZpbGVuYW1lID0gIiIKICAgICBkZXAgPSBbXQorICAgIHByb3YgPSBbXQogICAgIHBrZ2FyY2ggPSAiIgotICAgIGZvciBsaW5lIGluIGNtZF9vdXRwdXQuc3BsaXRsaW5lcygpOgorICAgIGZvciBsaW5lIGluIGNtZF9vdXRwdXQuc3BsaXRsaW5lcygpK1snJ106CiAgICAgICAgIGxpbmUgPSBsaW5lLnJzdHJpcCgpCiAgICAgICAgIGlmICc6JyBpbiBsaW5lOgogICAgICAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJQYWNrYWdlOiAiKToKQEAgLTY0LDYgKzY1LDEwIEBACiAgICAgICAgICAgICAgICAgICAgIGRlcC5hcHBlbmQoIiVzIFtSRUNdIiAlIHJlY29tbWVuZCkKICAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCJQYWNrYWdlQXJjaDogIik6CiAgICAgICAgICAgICAgICAgcGtnYXJjaCA9IGxpbmUuc3BsaXQoIjogIilbMV0KKyAgICAgICAgICAgIGVsaWYgbGluZS5zdGFydHN3aXRoKCJQcm92aWRlczogIik6CisgICAgICAgICAgICAgICAgcHJvdmlkZXMgPSB2ZXJyZWdleC5zdWIoJycsIGxpbmUuc3BsaXQoIjogIilbMV0pCisgICAgICAgICAgICAgICAgZm9yIHByb3ZpZGUgaW4gcHJvdmlkZXMuc3BsaXQoIiwgIik6CisgICAgICAgICAgICAgICAgICAgIHByb3YuYXBwZW5kKHByb3ZpZGUpCiAKICAgICAgICAgIyBXaGVuIHRoZXJlIGlzIGEgYmxhbmsgbGluZSBzYXZlIHRoZSBwYWNrYWdlIGluZm9ybWF0aW9uCiAgICAgICAgIGVsaWYgbm90IGxpbmU6CkBAIC03MiwyMCArNzcsMTUgQEAKICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9ICIlc18lc18lcy5pcGsiICUgKHBrZywgdmVyLCBhcmNoKQogICAgICAgICAgICAgaWYgcGtnOgogICAgICAgICAgICAgICAgIG91dHB1dFtwa2ddID0geyJhcmNoIjphcmNoLCAidmVyIjp2ZXIsCi0gICAgICAgICAgICAgICAgICAgICAgICAiZmlsZW5hbWUiOmZpbGVuYW1lLCAiZGVwcyI6IGRlcCwgInBrZ2FyY2giOnBrZ2FyY2ggfQorICAgICAgICAgICAgICAgICAgICAgICAgImZpbGVuYW1lIjpmaWxlbmFtZSwgImRlcHMiOiBkZXAsICJwa2dhcmNoIjpwa2dhcmNoLCAicHJvdnMiOiBwcm92fQogICAgICAgICAgICAgcGtnID0gIiIKICAgICAgICAgICAgIGFyY2ggPSAiIgogICAgICAgICAgICAgdmVyID0gIiIKICAgICAgICAgICAgIGZpbGVuYW1lID0gIiIKICAgICAgICAgICAgIGRlcCA9IFtdCisgICAgICAgICAgICBwcm92ID0gW10KICAgICAgICAgICAgIHBrZ2FyY2ggPSAiIgogCi0gICAgaWYgcGtnOgotICAgICAgICBpZiBub3QgZmlsZW5hbWU6Ci0gICAgICAgICAgICBmaWxlbmFtZSA9ICIlc18lc18lcy5pcGsiICUgKHBrZywgdmVyLCBhcmNoKQotICAgICAgICBvdXRwdXRbcGtnXSA9IHsiYXJjaCI6YXJjaCwgInZlciI6dmVyLAotICAgICAgICAgICAgICAgICJmaWxlbmFtZSI6ZmlsZW5hbWUsICJkZXBzIjogZGVwIH0KLQogICAgIHJldHVybiBvdXRwdXQKIAogZGVmIGZhaWxlZF9wb3N0aW5zdHNfYWJvcnQocGtncywgbG9nX3BhdGgpOgpAQCAtMTA3LDYgKzEwNyw3IEBACiAgICAgICAgICJzaDQiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCiAgICAgICAgICJwb3dlcnBjIjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tYmlnLWVuZGlhbiJdLAogICAgICAgICAicG93ZXJwYzY0IjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tYmlnLWVuZGlhbiJdLAorICAgICAgICAicG93ZXJwYzY0bGUiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1saXR0bGUtZW5kaWFuIl0sCiAgICAgICAgICJtaXBzIjogWyItLXVpbnQzMi1hbGlnbj00IiwgIi0tYmlnLWVuZGlhbiJdLAogICAgICAgICAibWlwc2lzYTMycjYiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCiAgICAgICAgICJtaXBzNjQiOiBbIi0tdWludDMyLWFsaWduPTQiLCAiLS1iaWctZW5kaWFuIl0sCkBAIC0xMzEsNyArMTMyLDcgQEAKICAgICBlbnYgPSBkaWN0KG9zLmVudmlyb24pCiAgICAgZW52WyJMT0NBTEVBUkNISVZFIl0gPSBvZS5wYXRoLmpvaW4obG9jYWxlZGlyLCAibG9jYWxlLWFyY2hpdmUiKQogCi0gICAgZm9yIG5hbWUgaW4gb3MubGlzdGRpcihsb2NhbGVkaXIpOgorICAgIGZvciBuYW1lIGluIHNvcnRlZChvcy5saXN0ZGlyKGxvY2FsZWRpcikpOgogICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGxvY2FsZWRpciwgbmFtZSkKICAgICAgICAgaWYgb3MucGF0aC5pc2RpcihwYXRoKToKICAgICAgICAgICAgIGNtZCA9IFsiY3Jvc3MtbG9jYWxlZGVmIiwgIi0tdmVyYm9zZSJdCkBAIC0zNjAsNyArMzYxLDcgQEAKICAgICAgICAgICAgICAgICItLWFkbWluZGlyPSVzL3Zhci9saWIvZHBrZyIgJSBzZWxmLnJvb3Rmc19kaXIsCiAgICAgICAgICAgICAgICAiLVciXQogCi0gICAgICAgIGNtZC5hcHBlbmQoIi1mPVBhY2thZ2U6ICR7UGFja2FnZX1cbkFyY2hpdGVjdHVyZTogJHtQYWNrYWdlQXJjaH1cblZlcnNpb246ICR7VmVyc2lvbn1cbkZpbGU6ICR7UGFja2FnZX1fJHtWZXJzaW9ufV8ke0FyY2hpdGVjdHVyZX0uZGViXG5EZXBlbmRzOiAke0RlcGVuZHN9XG5SZWNvbW1lbmRzOiAke1JlY29tbWVuZHN9XG5cbiIpCisgICAgICAgIGNtZC5hcHBlbmQoIi1mPVBhY2thZ2U6ICR7UGFja2FnZX1cbkFyY2hpdGVjdHVyZTogJHtQYWNrYWdlQXJjaH1cblZlcnNpb246ICR7VmVyc2lvbn1cbkZpbGU6ICR7UGFja2FnZX1fJHtWZXJzaW9ufV8ke0FyY2hpdGVjdHVyZX0uZGViXG5EZXBlbmRzOiAke0RlcGVuZHN9XG5SZWNvbW1lbmRzOiAke1JlY29tbWVuZHN9XG5Qcm92aWRlczogJHtQcm92aWRlc31cblxuIikKIAogICAgICAgICB0cnk6CiAgICAgICAgICAgICBjbWRfb3V0cHV0ID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQpLnN0cmlwKCkuZGVjb2RlKCJ1dGYtOCIpCkBAIC01ODAsNiArNTgxLDExIEBACiAgICAgICAgICMgb2UtcGtnZGF0YS11dGlsIHJlYWRzIGl0IGZyb20gYSBmaWxlCiAgICAgICAgIHdpdGggdGVtcGZpbGUuTmFtZWRUZW1wb3JhcnlGaWxlKG1vZGU9IncrIiwgcHJlZml4PSJpbnN0YWxsZWQtcGtncyIpIGFzIGluc3RhbGxlZF9wa2dzOgogICAgICAgICAgICAgcGtncyA9IHNlbGYubGlzdF9pbnN0YWxsZWQoKQorCisgICAgICAgICAgICBwcm92aWRlZF9wa2dzID0gc2V0KCkKKyAgICAgICAgICAgIGZvciBwa2cgaW4gcGtncy52YWx1ZXMoKToKKyAgICAgICAgICAgICAgICBwcm92aWRlZF9wa2dzIHw9IHNldChwa2cuZ2V0KCdwcm92cycsIFtdKSkKKwogICAgICAgICAgICAgb3V0cHV0ID0gb2UudXRpbHMuZm9ybWF0X3BrZ19saXN0KHBrZ3MsICJhcmNoIikKICAgICAgICAgICAgIGluc3RhbGxlZF9wa2dzLndyaXRlKG91dHB1dCkKICAgICAgICAgICAgIGluc3RhbGxlZF9wa2dzLmZsdXNoKCkKQEAgLTU5MSwxMCArNTk3LDE1IEBACiAgICAgICAgICAgICBpZiBleGNsdWRlOgogICAgICAgICAgICAgICAgIGNtZC5leHRlbmQoWyctLWV4Y2x1ZGU9JyArICd8Jy5qb2luKGV4Y2x1ZGUuc3BsaXQoKSldKQogICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIGJiLm5vdGUoIkluc3RhbGxpbmcgY29tcGxlbWVudGFyeSBwYWNrYWdlcyAuLi4iKQogICAgICAgICAgICAgICAgIGJiLm5vdGUoJ1J1bm5pbmcgJXMnICUgY21kKQogICAgICAgICAgICAgICAgIGNvbXBsZW1lbnRhcnlfcGtncyA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKS5kZWNvZGUoInV0Zi04IikKLSAgICAgICAgICAgICAgICBzZWxmLmluc3RhbGwoY29tcGxlbWVudGFyeV9wa2dzLnNwbGl0KCksIGF0dGVtcHRfb25seT1UcnVlKQorICAgICAgICAgICAgICAgIGNvbXBsZW1lbnRhcnlfcGtncyA9IHNldChjb21wbGVtZW50YXJ5X3BrZ3Muc3BsaXQoKSkKKyAgICAgICAgICAgICAgICBza2lwX3BrZ3MgPSBzb3J0ZWQoY29tcGxlbWVudGFyeV9wa2dzICYgcHJvdmlkZWRfcGtncykKKyAgICAgICAgICAgICAgICBpbnN0YWxsX3BrZ3MgPSBzb3J0ZWQoY29tcGxlbWVudGFyeV9wa2dzIC0gcHJvdmlkZWRfcGtncykKKyAgICAgICAgICAgICAgICBiYi5ub3RlKCJJbnN0YWxsaW5nIGNvbXBsZW1lbnRhcnkgcGFja2FnZXMgLi4uICVzIChza2lwcGVkIGFscmVhZHkgcHJvdmlkZWQgcGFja2FnZXMgJXMpIiAlICgKKyAgICAgICAgICAgICAgICAgICAgJyAnLmpvaW4oaW5zdGFsbF9wa2dzKSwKKyAgICAgICAgICAgICAgICAgICAgJyAnLmpvaW4oc2tpcF9wa2dzKSkpCisgICAgICAgICAgICAgICAgc2VsZi5pbnN0YWxsKGluc3RhbGxfcGtncywgYXR0ZW1wdF9vbmx5PVRydWUpCiAgICAgICAgICAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBiYi5mYXRhbCgiQ291bGQgbm90IGNvbXB1dGUgY29tcGxlbWVudGFyeSBwYWNrYWdlcyBsaXN0LiBDb21tYW5kICIKICAgICAgICAgICAgICAgICAgICAgICAgICAiJyVzJyByZXR1cm5lZCAlZDpcbiVzIiAlCkBAIC03NjgsNiArNzc5LDggQEAKICAgICAgICAgIyBUaGlzIHByZXZlbnRzIGFjY2lkZW50YWwgbWF0Y2hpbmcgYWdhaW5zdCBsaWJzb2x2J3MgYnVpbHQtaW4gcG9saWNpZXMKICAgICAgICAgaWYgbGVuKGFyY2hzKSA8PSAxOgogICAgICAgICAgICAgYXJjaHMgPSBhcmNocyArIFsiYm9ndXNhcmNoIl0KKyAgICAgICAgIyBUaGlzIGFyY2hpdGVjdHVyZSBuZWVkcyB0byBiZSB1cGZyb250IHNvIHRoYXQgcGFja2FnZXMgdXNpbmcgaXQgYXJlIHByb3Blcmx5IHByaW9yaXRpemVkCisgICAgICAgIGFyY2hzID0gWyJzZGtfcHJvdmlkZXNfZHVtbXlfdGFyZ2V0Il0gKyBhcmNocwogICAgICAgICBjb25mZGlyID0gIiVzLyVzIiAlKHNlbGYudGFyZ2V0X3Jvb3RmcywgImV0Yy9kbmYvdmFycy8iKQogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoY29uZmRpcikKICAgICAgICAgb3Blbihjb25mZGlyICsgImFyY2giLCAndycpLndyaXRlKCI6Ii5qb2luKGFyY2hzKSkKQEAgLTE2MjEsNyArMTYzNCw3IEBACiAKICAgICAgICAgb3MuZW52aXJvblsnQVBUX0NPTkZJRyddID0gc2VsZi5hcHRfY29uZl9maWxlCiAKLSAgICAgICAgY21kID0gIiVzICVzIGluc3RhbGwgLS1mb3JjZS15ZXMgLS1hbGxvdy11bmF1dGhlbnRpY2F0ZWQgJXMiICUgXAorICAgICAgICBjbWQgPSAiJXMgJXMgaW5zdGFsbCAtLWZvcmNlLXllcyAtLWFsbG93LXVuYXV0aGVudGljYXRlZCAtLW5vLXJlbW92ZSAlcyIgJSBcCiAgICAgICAgICAgICAgIChzZWxmLmFwdF9nZXRfY21kLCBzZWxmLmFwdF9hcmdzLCAnICcuam9pbihwa2dzKSkKIAogICAgICAgICB0cnk6CkBAIC0xNzgzLDggKzE3OTYsNyBAQAogICAgICAgICAgICAgb3Blbihvcy5wYXRoLmpvaW4odGFyZ2V0X2Rwa2dfZGlyLCAiYXZhaWxhYmxlIiksICJ3KyIpLmNsb3NlKCkKIAogICAgIGRlZiByZW1vdmVfcGFja2FnaW5nX2RhdGEoc2VsZik6Ci0gICAgICAgIGJiLnV0aWxzLnJlbW92ZShvcy5wYXRoLmpvaW4oc2VsZi50YXJnZXRfcm9vdGZzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuZC5nZXRWYXIoJ29wa2dsaWJkaXInKSksIFRydWUpCisgICAgICAgIGJiLnV0aWxzLnJlbW92ZShzZWxmLnRhcmdldF9yb290ZnMgKyBzZWxmLmQuZ2V0VmFyKCdvcGtnbGliZGlyJyksIFRydWUpCiAgICAgICAgIGJiLnV0aWxzLnJlbW92ZShzZWxmLnRhcmdldF9yb290ZnMgKyAiL3Zhci9saWIvZHBrZy8iLCBUcnVlKQogCiAgICAgZGVmIGZpeF9icm9rZW5fZGVwZW5kZW5jaWVzKHNlbGYpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9wYWNrYWdlZ3JvdXAucHkgYi9wb2t5L21ldGEvbGliL29lL3BhY2thZ2Vncm91cC5weQppbmRleCAyNDE5Y2JiLi44ZmNhZWNkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3BhY2thZ2Vncm91cC5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3BhY2thZ2Vncm91cC5weQpAQCAtNSwxNyArNSwxMSBAQAogaW1wb3J0IGl0ZXJ0b29scwogCiBkZWYgaXNfb3B0aW9uYWwoZmVhdHVyZSwgZCk6Ci0gICAgcGFja2FnZXMgPSBkLmdldFZhcigiRkVBVFVSRV9QQUNLQUdFU18lcyIgJSBmZWF0dXJlKQotICAgIGlmIHBhY2thZ2VzOgotICAgICAgICByZXR1cm4gYm9vbChkLmdldFZhckZsYWcoIkZFQVRVUkVfUEFDS0FHRVNfJXMiICUgZmVhdHVyZSwgIm9wdGlvbmFsIikpCi0gICAgZWxzZToKLSAgICAgICAgcmV0dXJuIGJvb2woZC5nZXRWYXJGbGFnKCJQQUNLQUdFX0dST1VQXyVzIiAlIGZlYXR1cmUsICJvcHRpb25hbCIpKQorICAgIHJldHVybiBib29sKGQuZ2V0VmFyRmxhZygiRkVBVFVSRV9QQUNLQUdFU18lcyIgJSBmZWF0dXJlLCAib3B0aW9uYWwiKSkKIAogZGVmIHBhY2thZ2VzKGZlYXR1cmVzLCBkKToKICAgICBmb3IgZmVhdHVyZSBpbiBmZWF0dXJlczoKICAgICAgICAgcGFja2FnZXMgPSBkLmdldFZhcigiRkVBVFVSRV9QQUNLQUdFU18lcyIgJSBmZWF0dXJlKQotICAgICAgICBpZiBub3QgcGFja2FnZXM6Ci0gICAgICAgICAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCJQQUNLQUdFX0dST1VQXyVzIiAlIGZlYXR1cmUpCiAgICAgICAgIGZvciBwa2cgaW4gKHBhY2thZ2VzIG9yICIiKS5zcGxpdCgpOgogICAgICAgICAgICAgeWllbGQgcGtnCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvcGF0aC5weSBiL3Bva3kvbWV0YS9saWIvb2UvcGF0aC5weQppbmRleCBmYTIwOWI5Li4wODI5NzI0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3BhdGgucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS9wYXRoLnB5CkBAIC05OSw3ICs5OSwyMiBAQAogICAgIGlmIG9zLnBhdGguaXNkaXIoc3JjKSBhbmQgbm90IGxlbihvcy5saXN0ZGlyKHNyYykpOgogICAgICAgICByZXR1cm4KIAotICAgIGlmIChvcy5zdGF0KHNyYykuc3RfZGV2ID09ICBvcy5zdGF0KGRzdCkuc3RfZGV2KToKKyAgICBjYW5oYXJkID0gRmFsc2UKKyAgICB0ZXN0ZmlsZSA9IE5vbmUKKyAgICBmb3Igcm9vdCwgZGlycywgZmlsZXMgaW4gb3Mud2FsayhzcmMpOgorICAgICAgICBpZiBsZW4oZmlsZXMpOgorICAgICAgICAgICAgdGVzdGZpbGUgPSBvcy5wYXRoLmpvaW4ocm9vdCwgZmlsZXNbMF0pCisgICAgICAgICAgICBicmVhaworCisgICAgaWYgdGVzdGZpbGUgaXMgbm90IE5vbmU6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIG9zLmxpbmsodGVzdGZpbGUsIG9zLnBhdGguam9pbihkc3QsICd0ZXN0ZmlsZScpKQorICAgICAgICAgICAgb3MudW5saW5rKG9zLnBhdGguam9pbihkc3QsICd0ZXN0ZmlsZScpKQorICAgICAgICAgICAgY2FuaGFyZCA9IFRydWUKKyAgICAgICAgZXhjZXB0IEV4Y2VwdGlvbiBhcyBlOgorICAgICAgICAgICAgYmIuZGVidWcoMiwgIkhhcmRsaW5rIHRlc3QgZmFpbGVkIHdpdGggIiArIHN0cihlKSkKKworICAgIGlmIChjYW5oYXJkKToKICAgICAgICAgIyBOZWVkIHRvIGNvcHkgZGlyZWN0b3JpZXMgb25seSB3aXRoIHRhciBmaXJzdCBzaW5jZSBjcCB3aWxsIGVycm9yIGlmIHR3byAKICAgICAgICAgIyB3cml0ZXJzIHRyeSBhbmQgY3JlYXRlIGEgZGlyZWN0b3J5IGF0IHRoZSBzYW1lIHRpbWUKICAgICAgICAgY21kID0gImNkICVzOyBmaW5kIC4gLXR5cGUgZCAtcHJpbnQgfCB0YXIgLS14YXR0cnMgLS14YXR0cnMtaW5jbHVkZT0nKicgLWNmIC0gLVMgLUMgJXMgLXAgLS1uby1yZWN1cnNpb24gLS1maWxlcy1mcm9tIC0gfCB0YXIgLS14YXR0cnMgLS14YXR0cnMtaW5jbHVkZT0nKicgLXhoZiAtIC1DICVzIiAlIChzcmMsIHNyYywgZHN0KQpAQCAtMTIxLDEyICsxMzYsOSBAQAogZGVmIGNvcHloYXJkbGluayhzcmMsIGRzdCk6CiAgICAgIiIiTWFrZSBhIGhhcmQgbGluayB3aGVuIHBvc3NpYmxlLCBvdGhlcndpc2UgY29weS4iIiIKIAotICAgICMgV2UgbmVlZCB0byBzdGF0IHRoZSBkZXN0aW5hdGlvbiBkaXJlY3RvcnkgYXMgdGhlIGRlc3RpbmF0aW9uIGZpbGUgcHJvYmFibHkKLSAgICAjIGRvZXNuJ3QgZXhpc3QgeWV0LgotICAgIGRzdGRpciA9IG9zLnBhdGguZGlybmFtZShkc3QpCi0gICAgaWYgb3Muc3RhdChzcmMpLnN0X2RldiA9PSBvcy5zdGF0KGRzdGRpcikuc3RfZGV2OgorICAgIHRyeToKICAgICAgICAgb3MubGluayhzcmMsIGRzdCkKLSAgICBlbHNlOgorICAgIGV4Y2VwdCBPU0Vycm9yOgogICAgICAgICBzaHV0aWwuY29weShzcmMsIGRzdCkKIAogZGVmIHJlbW92ZShwYXRoLCByZWN1cnNlPVRydWUpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9wcnNlcnZpY2UucHkgYi9wb2t5L21ldGEvbGliL29lL3Byc2VydmljZS5weQppbmRleCBiMTEzMmNjLi4yZDNjOWM3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3Byc2VydmljZS5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3Byc2VydmljZS5weQpAQCAtMyw2ICszLDEwIEBACiAjCiAKIGRlZiBwcnNlcnZfbWFrZV9jb25uKGQsIGNoZWNrID0gRmFsc2UpOgorICAgICMgT3RoZXJ3aXNlIHRoaXMgZmFpbHMgd2hlbiBjYWxsZWQgZnJvbSByZWNpcGVzIHdoaWNoIGUuZy4gaW5oZXJpdCBweXRob24zbmF0aXZlICh3aGljaCBzZXRzIF9QWVRIT05fU1lTQ09ORklHREFUQV9OQU1FKSB3aXRoOgorICAgICMgTm8gbW9kdWxlIG5hbWVkICdfc3lzY29uZmlnZGF0YScKKyAgICBpZiAnX1BZVEhPTl9TWVNDT05GSUdEQVRBX05BTUUnIGluIG9zLmVudmlyb246CisgICAgICAgIGRlbCBvcy5lbnZpcm9uWydfUFlUSE9OX1NZU0NPTkZJR0RBVEFfTkFNRSddCiAgICAgaW1wb3J0IHByc2Vydi5zZXJ2CiAgICAgaG9zdF9wYXJhbXMgPSBsaXN0KFtfZiBmb3IgX2YgaW4gKGQuZ2V0VmFyKCJQUlNFUlZfSE9TVCIpIG9yICcnKS5zcGxpdCgnOicpIGlmIF9mXSkKICAgICB0cnk6CkBAIC03OSw0MSArODMsNDAgQEAKICAgICBkZiA9IGQuZ2V0VmFyKCdQUlNFUlZfRFVNUEZJTEUnKQogICAgICN3cml0ZSBkYXRhCiAgICAgbGYgPSBiYi51dGlscy5sb2NrZmlsZSgiJXMubG9jayIgJSBkZikKLSAgICBmID0gb3BlbihkZiwgImEiKQotICAgIGlmIG1ldGFpbmZvOgotICAgICAgICAjZHVtcCBjb2x1bW4gaW5mbyAKLSAgICAgICAgZi53cml0ZSgiI1BSX2NvcmVfdmVyID0gXCIlc1wiXG5cbiIgJSBtZXRhaW5mb1snY29yZV92ZXInXSk7Ci0gICAgICAgIGYud3JpdGUoIiNUYWJsZTogJXNcbiIgJSBtZXRhaW5mb1sndGJsX25hbWUnXSkKLSAgICAgICAgZi53cml0ZSgiI0NvbHVtbnM6XG4iKQotICAgICAgICBmLndyaXRlKCIjbmFtZSAgICAgIFx0IHR5cGUgICAgXHQgbm90biAgICBcdCBkZmx0ICAgIFx0IHBrXG4iKQotICAgICAgICBmLndyaXRlKCIjLS0tLS0tLS0tLVx0IC0tLS0tLS0tXHQgLS0tLS0tLS1cdCAtLS0tLS0tLVx0IC0tLS1cbiIpCi0gICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihtZXRhaW5mb1snY29sX2luZm8nXSkpOgotICAgICAgICAgICAgZi53cml0ZSgiIyUxMHNcdCAlOHNcdCAlOHNcdCAlOHNcdCAlNHNcbiIgJSAKLSAgICAgICAgICAgICAgICAgICAgKG1ldGFpbmZvWydjb2xfaW5mbyddW2ldWyduYW1lJ10sIAotICAgICAgICAgICAgICAgICAgICAgbWV0YWluZm9bJ2NvbF9pbmZvJ11baV1bJ3R5cGUnXSwgCi0gICAgICAgICAgICAgICAgICAgICBtZXRhaW5mb1snY29sX2luZm8nXVtpXVsnbm90bnVsbCddLCAKLSAgICAgICAgICAgICAgICAgICAgIG1ldGFpbmZvWydjb2xfaW5mbyddW2ldWydkZmx0X3ZhbHVlJ10sIAotICAgICAgICAgICAgICAgICAgICAgbWV0YWluZm9bJ2NvbF9pbmZvJ11baV1bJ3BrJ10pKQotICAgICAgICBmLndyaXRlKCJcbiIpCisgICAgd2l0aCBvcGVuKGRmLCAiYSIpIGFzIGY6CisgICAgICAgIGlmIG1ldGFpbmZvOgorICAgICAgICAgICAgI2R1bXAgY29sdW1uIGluZm8KKyAgICAgICAgICAgIGYud3JpdGUoIiNQUl9jb3JlX3ZlciA9IFwiJXNcIlxuXG4iICUgbWV0YWluZm9bJ2NvcmVfdmVyJ10pOworICAgICAgICAgICAgZi53cml0ZSgiI1RhYmxlOiAlc1xuIiAlIG1ldGFpbmZvWyd0YmxfbmFtZSddKQorICAgICAgICAgICAgZi53cml0ZSgiI0NvbHVtbnM6XG4iKQorICAgICAgICAgICAgZi53cml0ZSgiI25hbWUgICAgICBcdCB0eXBlICAgIFx0IG5vdG4gICAgXHQgZGZsdCAgICBcdCBwa1xuIikKKyAgICAgICAgICAgIGYud3JpdGUoIiMtLS0tLS0tLS0tXHQgLS0tLS0tLS1cdCAtLS0tLS0tLVx0IC0tLS0tLS0tXHQgLS0tLVxuIikKKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihtZXRhaW5mb1snY29sX2luZm8nXSkpOgorICAgICAgICAgICAgICAgIGYud3JpdGUoIiMlMTBzXHQgJThzXHQgJThzXHQgJThzXHQgJTRzXG4iICUKKyAgICAgICAgICAgICAgICAgICAgICAgIChtZXRhaW5mb1snY29sX2luZm8nXVtpXVsnbmFtZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFpbmZvWydjb2xfaW5mbyddW2ldWyd0eXBlJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgbWV0YWluZm9bJ2NvbF9pbmZvJ11baV1bJ25vdG51bGwnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICBtZXRhaW5mb1snY29sX2luZm8nXVtpXVsnZGZsdF92YWx1ZSddLAorICAgICAgICAgICAgICAgICAgICAgICAgIG1ldGFpbmZvWydjb2xfaW5mbyddW2ldWydwayddKSkKKyAgICAgICAgICAgIGYud3JpdGUoIlxuIikKIAotICAgIGlmIGxvY2tkb3duOgotICAgICAgICBmLndyaXRlKCJQUlNFUlZfTE9DS0RPV04gPSBcIjFcIlxuXG4iKQorICAgICAgICBpZiBsb2NrZG93bjoKKyAgICAgICAgICAgIGYud3JpdGUoIlBSU0VSVl9MT0NLRE9XTiA9IFwiMVwiXG5cbiIpCiAKLSAgICBpZiBkYXRhaW5mbzoKLSAgICAgICAgaWR4ID0ge30KLSAgICAgICAgZm9yIGkgaW4gcmFuZ2UobGVuKGRhdGFpbmZvKSk6Ci0gICAgICAgICAgICBwa2dhcmNoID0gZGF0YWluZm9baV1bJ3BrZ2FyY2gnXQotICAgICAgICAgICAgdmFsdWUgPSBkYXRhaW5mb1tpXVsndmFsdWUnXQotICAgICAgICAgICAgaWYgcGtnYXJjaCBub3QgaW4gaWR4OgotICAgICAgICAgICAgICAgIGlkeFtwa2dhcmNoXSA9IGkKLSAgICAgICAgICAgIGVsaWYgdmFsdWUgPiBkYXRhaW5mb1tpZHhbcGtnYXJjaF1dWyd2YWx1ZSddOgotICAgICAgICAgICAgICAgIGlkeFtwa2dhcmNoXSA9IGkKLSAgICAgICAgICAgIGYud3JpdGUoIlBSQVVUTyQlcyQlcyQlcyA9IFwiJXNcIlxuIiAlIAotICAgICAgICAgICAgICAgIChzdHIoZGF0YWluZm9baV1bJ3ZlcnNpb24nXSksIHBrZ2FyY2gsIHN0cihkYXRhaW5mb1tpXVsnY2hlY2tzdW0nXSksIHN0cih2YWx1ZSkpKQotICAgICAgICBpZiBub3Qgbm9tYXg6Ci0gICAgICAgICAgICBmb3IgaSBpbiBpZHg6Ci0gICAgICAgICAgICAgICAgZi53cml0ZSgiUFJBVVRPXyVzXyVzID0gXCIlc1wiXG4iICUgKHN0cihkYXRhaW5mb1tpZHhbaV1dWyd2ZXJzaW9uJ10pLHN0cihkYXRhaW5mb1tpZHhbaV1dWydwa2dhcmNoJ10pLHN0cihkYXRhaW5mb1tpZHhbaV1dWyd2YWx1ZSddKSkpCi0gICAgZi5jbG9zZSgpCisgICAgICAgIGlmIGRhdGFpbmZvOgorICAgICAgICAgICAgaWR4ID0ge30KKyAgICAgICAgICAgIGZvciBpIGluIHJhbmdlKGxlbihkYXRhaW5mbykpOgorICAgICAgICAgICAgICAgIHBrZ2FyY2ggPSBkYXRhaW5mb1tpXVsncGtnYXJjaCddCisgICAgICAgICAgICAgICAgdmFsdWUgPSBkYXRhaW5mb1tpXVsndmFsdWUnXQorICAgICAgICAgICAgICAgIGlmIHBrZ2FyY2ggbm90IGluIGlkeDoKKyAgICAgICAgICAgICAgICAgICAgaWR4W3BrZ2FyY2hdID0gaQorICAgICAgICAgICAgICAgIGVsaWYgdmFsdWUgPiBkYXRhaW5mb1tpZHhbcGtnYXJjaF1dWyd2YWx1ZSddOgorICAgICAgICAgICAgICAgICAgICBpZHhbcGtnYXJjaF0gPSBpCisgICAgICAgICAgICAgICAgZi53cml0ZSgiUFJBVVRPJCVzJCVzJCVzID0gXCIlc1wiXG4iICUKKyAgICAgICAgICAgICAgICAgICAgKHN0cihkYXRhaW5mb1tpXVsndmVyc2lvbiddKSwgcGtnYXJjaCwgc3RyKGRhdGFpbmZvW2ldWydjaGVja3N1bSddKSwgc3RyKHZhbHVlKSkpCisgICAgICAgICAgICBpZiBub3Qgbm9tYXg6CisgICAgICAgICAgICAgICAgZm9yIGkgaW4gaWR4OgorICAgICAgICAgICAgICAgICAgICBmLndyaXRlKCJQUkFVVE9fJXNfJXMgPSBcIiVzXCJcbiIgJSAoc3RyKGRhdGFpbmZvW2lkeFtpXV1bJ3ZlcnNpb24nXSksc3RyKGRhdGFpbmZvW2lkeFtpXV1bJ3BrZ2FyY2gnXSksc3RyKGRhdGFpbmZvW2lkeFtpXV1bJ3ZhbHVlJ10pKSkKICAgICBiYi51dGlscy51bmxvY2tmaWxlKGxmKQogCiBkZWYgcHJzZXJ2X2NoZWNrX2F2YWlsKGQpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9xYS5weSBiL3Bva3kvbWV0YS9saWIvb2UvcWEucHkKaW5kZXggMjEwNjZjNC4uZWE4MzFiOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZS9xYS5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3FhLnB5CkBAIC00MSwxMyArNDEsMTUgQEAKICAgICBkZWYgX19pbml0X18oc2VsZiwgbmFtZSk6CiAgICAgICAgIHNlbGYubmFtZSA9IG5hbWUKICAgICAgICAgc2VsZi5vYmpkdW1wX291dHB1dCA9IHt9CisgICAgICAgIHNlbGYuZGF0YSA9IE5vbmUKIAogICAgICMgQ29udGV4dCBNYW5hZ2VyIGZ1bmN0aW9ucyB0byBjbG9zZSB0aGUgbW1hcCBleHBsaWNpdGx5CiAgICAgZGVmIF9fZW50ZXJfXyhzZWxmKToKICAgICAgICAgcmV0dXJuIHNlbGYKIAogICAgIGRlZiBfX2V4aXRfXyhzZWxmLCBleGNfdHlwZSwgZXhjX3ZhbHVlLCB0cmFjZWJhY2spOgotICAgICAgICBzZWxmLmRhdGEuY2xvc2UoKQorICAgICAgICBpZiBzZWxmLmRhdGE6CisgICAgICAgICAgICBzZWxmLmRhdGEuY2xvc2UoKQogCiAgICAgZGVmIG9wZW4oc2VsZik6CiAgICAgICAgIHdpdGggb3BlbihzZWxmLm5hbWUsICJyYiIpIGFzIGY6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3JlY2lwZXV0aWxzLnB5IGIvcG9reS9tZXRhL2xpYi9vZS9yZWNpcGV1dGlscy5weQppbmRleCA2MzBhZTk2Li43MzI0MjBlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3JlY2lwZXV0aWxzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2UvcmVjaXBldXRpbHMucHkKQEAgLTQyMSw2ICs0MjEsOCBAQAogICAgICAgICAgICAgIyBFbnN1cmUgd2UgaGFuZGxlIGNsYXNzLXRhcmdldCBpZiB3ZSdyZSBkZWFsaW5nIHdpdGggb25lIG9mIHRoZSB2YXJpYW50cwogICAgICAgICAgICAgdmFyaWFudHMuYXBwZW5kKCd0YXJnZXQnKQogICAgICAgICAgICAgZm9yIHZhcmlhbnQgaW4gdmFyaWFudHM6CisgICAgICAgICAgICAgICAgaWYgdmFyaWFudC5zdGFydHN3aXRoKCJkZXZ1cHN0cmVhbSIpOgorICAgICAgICAgICAgICAgICAgICBsb2NhbGRhdGEuc2V0VmFyKCdTUkNQVicsICdnaXQnKQogICAgICAgICAgICAgICAgIGxvY2FsZGF0YS5zZXRWYXIoJ0NMQVNTT1ZFUlJJREUnLCAnY2xhc3MtJXMnICUgdmFyaWFudCkKICAgICAgICAgICAgICAgICBmZXRjaF91cmxzKGxvY2FsZGF0YSkKIApAQCAtMTA1OSw3ICsxMDYxLDYgQEAKICAgICBkYXRhX2NvcHlfbGlzdCA9IFtdCiAgICAgY29weV92YXJzID0gKCdTUkNfVVJJJywKICAgICAgICAgICAgICAgICAgJ1BWJywKLSAgICAgICAgICAgICAgICAgJ0dJVERJUicsCiAgICAgICAgICAgICAgICAgICdETF9ESVInLAogICAgICAgICAgICAgICAgICAnUE4nLAogICAgICAgICAgICAgICAgICAnQ0FDSEUnLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZS9yb290ZnMucHkgYi9wb2t5L21ldGEvbGliL29lL3Jvb3Rmcy5weQppbmRleCBjNjJmYTVmLi5jZDY1ZTYyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lL3Jvb3Rmcy5weQorKysgYi9wb2t5L21ldGEvbGliL29lL3Jvb3Rmcy5weQpAQCAtMTI2LDE3ICsxMjYsMTYgQEAKICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihzZWxmLmltYWdlX3Jvb3RmcyArIG9zLnBhdGguZGlybmFtZShkaXIpKQogICAgICAgICAgICAgc2h1dGlsLmNvcHl0cmVlKHNlbGYuaW1hZ2Vfcm9vdGZzICsgJy1vcmlnJyArIGRpciwgc2VsZi5pbWFnZV9yb290ZnMgKyBkaXIsIHN5bWxpbmtzPVRydWUpCiAKLSAgICAgICAgY3BhdGggPSBvZS5jYWNoZWRwYXRoLkNhY2hlZFBhdGgoKQogICAgICAgICAjIENvcHkgZmlsZXMgbG9jYXRlZCBpbiAvdXNyL2xpYi9kZWJ1ZyBvciAvdXNyL3NyYy9kZWJ1ZwogICAgICAgICBmb3IgZGlyIGluIFsiL3Vzci9saWIvZGVidWciLCAiL3Vzci9zcmMvZGVidWciXToKICAgICAgICAgICAgIHNyYyA9IHNlbGYuaW1hZ2Vfcm9vdGZzICsgJy1vcmlnJyArIGRpcgotICAgICAgICAgICAgaWYgY3BhdGguZXhpc3RzKHNyYyk6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhzcmMpOgogICAgICAgICAgICAgICAgIGRzdCA9IHNlbGYuaW1hZ2Vfcm9vdGZzICsgZGlyCiAgICAgICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShkc3QpKQogICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5dHJlZShzcmMsIGRzdCkKIAogICAgICAgICAjIENvcHkgZmlsZXMgd2l0aCBzdWZmaXggJy5kZWJ1Zycgb3IgbG9jYXRlZCBpbiAnLmRlYnVnJyBkaXIuCi0gICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBjcGF0aC53YWxrKHNlbGYuaW1hZ2Vfcm9vdGZzICsgJy1vcmlnJyk6CisgICAgICAgIGZvciByb290LCBkaXJzLCBmaWxlcyBpbiBvcy53YWxrKHNlbGYuaW1hZ2Vfcm9vdGZzICsgJy1vcmlnJyk6CiAgICAgICAgICAgICByZWxhdGl2ZV9kaXIgPSByb290W2xlbihzZWxmLmltYWdlX3Jvb3RmcyArICctb3JpZycpOl0KICAgICAgICAgICAgIGZvciBmIGluIGZpbGVzOgogICAgICAgICAgICAgICAgIGlmIGYuZW5kc3dpdGgoJy5kZWJ1ZycpIG9yICcvLmRlYnVnJyBpbiByZWxhdGl2ZV9kaXI6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lL3NzdGF0ZXNpZy5weSBiL3Bva3kvbWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5CmluZGV4IGM1NjZjZTUuLmQyNGUzNzMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2Uvc3N0YXRlc2lnLnB5CkBAIC0xMDMsNiArMTAzLDggQEAKICAgICAgICAgc2VsZi51bmxvY2tlZHJlY2lwZXMgPSAoZGF0YS5nZXRWYXIoIlNJR0dFTl9VTkxPQ0tFRF9SRUNJUEVTIikgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiIpLnNwbGl0KCkKICAgICAgICAgc2VsZi51bmxvY2tlZHJlY2lwZXMgPSB7IGs6ICIiIGZvciBrIGluIHNlbGYudW5sb2NrZWRyZWNpcGVzIH0KKyAgICAgICAgc2VsZi5idWlsZGFyY2ggPSBkYXRhLmdldFZhcignQlVJTERfQVJDSCcpCisgICAgICAgIHNlbGYuX2ludGVybmFsID0gRmFsc2UKICAgICAgICAgcGFzcwogCiAgICAgZGVmIHRhc2tzX3Jlc29sdmVkKHNlbGYsIHZpcnRtYXAsIHZpcnRwbm1hcCwgZGF0YUNhY2hlKToKQEAgLTE0MCw4ICsxNDIsMjcgQEAKICAgICAgICAgc2VsZi5kdW1wX2xvY2tlZHNpZ3Moc2lnZmlsZSkKICAgICAgICAgcmV0dXJuIHN1cGVyKGJiLnNpZ2dlbi5TaWduYXR1cmVHZW5lcmF0b3JCYXNpY0hhc2gsIHNlbGYpLmR1bXBfc2lncyhkYXRhQ2FjaGUsIG9wdGlvbnMpCiAKKyAgICBkZWYgcHJlcF90YXNraGFzaChzZWxmLCB0aWQsIGRlcHMsIGRhdGFDYWNoZSk6CisgICAgICAgIHN1cGVyKCkucHJlcF90YXNraGFzaCh0aWQsIGRlcHMsIGRhdGFDYWNoZSkKKyAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAiZXh0cmFtZXRob2QiKToKKyAgICAgICAgICAgIChfLCBfLCBfLCBmbikgPSBiYi5ydW5xdWV1ZS5zcGxpdF90aWRfbWNmbih0aWQpCisgICAgICAgICAgICBpbmhlcml0cyA9ICIgIi5qb2luKGRhdGFDYWNoZS5pbmhlcml0c1tmbl0pICAgIAorICAgICAgICAgICAgaWYgaW5oZXJpdHMuZmluZCgiL25hdGl2ZS5iYmNsYXNzIikgIT0gLTEgb3IgaW5oZXJpdHMuZmluZCgiL2Nyb3NzLmJiY2xhc3MiKSAhPSAtMToKKyAgICAgICAgICAgICAgICBzZWxmLmV4dHJhbWV0aG9kW3RpZF0gPSAiOiIgKyBzZWxmLmJ1aWxkYXJjaAorCiAgICAgZGVmIGdldF90YXNraGFzaChzZWxmLCB0aWQsIGRlcHMsIGRhdGFDYWNoZSk6Ci0gICAgICAgIGggPSBzdXBlcihiYi5zaWdnZW4uU2lnbmF0dXJlR2VuZXJhdG9yQmFzaWNIYXNoLCBzZWxmKS5nZXRfdGFza2hhc2godGlkLCBkZXBzLCBkYXRhQ2FjaGUpCisgICAgICAgIGlmIHRpZCBpbiBzZWxmLmxvY2tlZGhhc2hlczoKKyAgICAgICAgICAgIGlmIHNlbGYubG9ja2VkaGFzaGVzW3RpZF06CisgICAgICAgICAgICAgICAgcmV0dXJuIHNlbGYubG9ja2VkaGFzaGVzW3RpZF0KKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuIHN1cGVyKCkuZ2V0X3Rhc2toYXNoKHRpZCwgZGVwcywgZGF0YUNhY2hlKQorCisgICAgICAgICMgZ2V0X3Rhc2toYXNoIHdpbGwgY2FsbCBnZXRfdW5paGFzaCBpbnRlcm5hbGx5IGluIHRoZSBwYXJlbnQgY2xhc3MsIHdlIAorICAgICAgICAjIG5lZWQgdG8gZGlzYWJsZSBvdXIgZmlsdGVyIG9mIGl0IHdoaWxzdCB0aGlzIHJ1bnMgZWxzZQorICAgICAgICAjIGluY29ycmVjdCBoYXNoZXMgY2FuIGJlIGNhbGN1bGF0ZWQuCisgICAgICAgIHNlbGYuX2ludGVybmFsID0gVHJ1ZQorICAgICAgICBoID0gc3VwZXIoKS5nZXRfdGFza2hhc2godGlkLCBkZXBzLCBkYXRhQ2FjaGUpCisgICAgICAgIHNlbGYuX2ludGVybmFsID0gRmFsc2UKIAogICAgICAgICAobWMsIF8sIHRhc2ssIGZuKSA9IGJiLnJ1bnF1ZXVlLnNwbGl0X3RpZF9tY2ZuKHRpZCkKIApAQCAtMTY5LDggKzE5MCw5IEBACiAgICAgICAgICAgICAgICAgaF9sb2NrZWQgPSBzZWxmLmxvY2tlZHNpZ3NbcmVjaXBlbmFtZV1bdGFza11bMF0KICAgICAgICAgICAgICAgICB2YXIgPSBzZWxmLmxvY2tlZHNpZ3NbcmVjaXBlbmFtZV1bdGFza11bMV0KICAgICAgICAgICAgICAgICBzZWxmLmxvY2tlZGhhc2hlc1t0aWRdID0gaF9sb2NrZWQKLSAgICAgICAgICAgICAgICB1bmloYXNoID0gc3VwZXIoKS5nZXRfdW5paGFzaCh0aWQpCi0gICAgICAgICAgICAgICAgc2VsZi50YXNraGFzaFt0aWRdID0gaF9sb2NrZWQKKyAgICAgICAgICAgICAgICBzZWxmLl9pbnRlcm5hbCA9IFRydWUKKyAgICAgICAgICAgICAgICB1bmloYXNoID0gc2VsZi5nZXRfdW5paGFzaCh0aWQpCisgICAgICAgICAgICAgICAgc2VsZi5faW50ZXJuYWwgPSBGYWxzZQogICAgICAgICAgICAgICAgICNiYi53YXJuKCJVc2luZyAlcyAlcyAlcyIgJSAocmVjaXBlbmFtZSwgdGFzaywgaCkpCiAKICAgICAgICAgICAgICAgICBpZiBoICE9IGhfbG9ja2VkIGFuZCBoX2xvY2tlZCAhPSB1bmloYXNoOgpAQCAtMTc4LDE3ICsyMDAsMjQgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHJlY2lwZW5hbWUsIHRhc2ssIGgsIGhfbG9ja2VkLCB2YXIpKQogCiAgICAgICAgICAgICAgICAgcmV0dXJuIGhfbG9ja2VkCisKKyAgICAgICAgc2VsZi5sb2NrZWRoYXNoZXNbdGlkXSA9IEZhbHNlCiAgICAgICAgICNiYi53YXJuKCIlcyAlcyAlcyIgJSAocmVjaXBlbmFtZSwgdGFzaywgaCkpCiAgICAgICAgIHJldHVybiBoCiAKKyAgICBkZWYgZ2V0X3N0YW1wZmlsZV9oYXNoKHNlbGYsIHRpZCk6CisgICAgICAgIGlmIHRpZCBpbiBzZWxmLmxvY2tlZGhhc2hlcyBhbmQgc2VsZi5sb2NrZWRoYXNoZXNbdGlkXToKKyAgICAgICAgICAgIHJldHVybiBzZWxmLmxvY2tlZGhhc2hlc1t0aWRdCisgICAgICAgIHJldHVybiBzdXBlcigpLmdldF9zdGFtcGZpbGVfaGFzaCh0aWQpCisKICAgICBkZWYgZ2V0X3VuaWhhc2goc2VsZiwgdGlkKToKLSAgICAgICAgaWYgdGlkIGluIHNlbGYubG9ja2VkaGFzaGVzOgorICAgICAgICBpZiB0aWQgaW4gc2VsZi5sb2NrZWRoYXNoZXMgYW5kIHNlbGYubG9ja2VkaGFzaGVzW3RpZF0gYW5kIG5vdCBzZWxmLl9pbnRlcm5hbDoKICAgICAgICAgICAgIHJldHVybiBzZWxmLmxvY2tlZGhhc2hlc1t0aWRdCiAgICAgICAgIHJldHVybiBzdXBlcigpLmdldF91bmloYXNoKHRpZCkKIAogICAgIGRlZiBkdW1wX3NpZ3Rhc2soc2VsZiwgZm4sIHRhc2ssIHN0YW1wYmFzZSwgcnVudGltZSk6CiAgICAgICAgIHRpZCA9IGZuICsgIjoiICsgdGFzawotICAgICAgICBpZiB0aWQgaW4gc2VsZi5sb2NrZWRoYXNoZXM6CisgICAgICAgIGlmIHRpZCBpbiBzZWxmLmxvY2tlZGhhc2hlcyBhbmQgc2VsZi5sb2NrZWRoYXNoZXNbdGlkXToKICAgICAgICAgICAgIHJldHVybgogICAgICAgICBzdXBlcihiYi5zaWdnZW4uU2lnbmF0dXJlR2VuZXJhdG9yQmFzaWNIYXNoLCBzZWxmKS5kdW1wX3NpZ3Rhc2soZm4sIHRhc2ssIHN0YW1wYmFzZSwgcnVudGltZSkKIApAQCAtNDQ4LDExICs0NzcsMTQgQEAKICAgICBoID0gaGFzaGxpYi5zaGEyNTYoKQogICAgIHByZXZfZGlyID0gb3MuZ2V0Y3dkKCkKICAgICBpbmNsdWRlX293bmVycyA9IG9zLmVudmlyb24uZ2V0KCdQU0VVRE9fRElTQUJMRUQnKSA9PSAnMCcKKyAgICBleHRyYV9jb250ZW50ID0gZC5nZXRWYXIoJ0hBU0hFUVVJVl9IQVNIX1ZFUlNJT04nKQogCiAgICAgdHJ5OgogICAgICAgICBvcy5jaGRpcihwYXRoKQogCiAgICAgICAgIHVwZGF0ZV9oYXNoKCJPRU91dGhhc2hCYXNpY1xuIikKKyAgICAgICAgaWYgZXh0cmFfY29udGVudDoKKyAgICAgICAgICAgIHVwZGF0ZV9oYXNoKGV4dHJhX2NvbnRlbnQgKyAiXG4iKQogCiAgICAgICAgICMgSXQgaXMgb25seSBjdXJyZW50bHkgdXNlZnVsIHRvIGdldCBlcXVpdmFsZW50IGhhc2hlcyBmb3IgdGhpbmdzIHRoYXQKICAgICAgICAgIyBjYW4gYmUgcmVzdG9yZWQgZnJvbSBzc3RhdGUuIFNpbmNlIHRoZSBzc3RhdGUgb2JqZWN0IGlzIG5hbWVkIHVzaW5nCkBAIC01MTIsOCArNTQ0LDEyIEBACiAgICAgICAgICAgICAgICAgICAgIGFkZF9wZXJtKHN0YXQuU19JWE9USCwgJ3gnKQogCiAgICAgICAgICAgICAgICAgaWYgaW5jbHVkZV9vd25lcnM6Ci0gICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9oYXNoKCIgJTEwcyIgJSBwd2QuZ2V0cHd1aWQocy5zdF91aWQpLnB3X25hbWUpCi0gICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9oYXNoKCIgJTEwcyIgJSBncnAuZ2V0Z3JnaWQocy5zdF9naWQpLmdyX25hbWUpCisgICAgICAgICAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICAgICAgICAgIHVwZGF0ZV9oYXNoKCIgJTEwcyIgJSBwd2QuZ2V0cHd1aWQocy5zdF91aWQpLnB3X25hbWUpCisgICAgICAgICAgICAgICAgICAgICAgICB1cGRhdGVfaGFzaCgiICUxMHMiICUgZ3JwLmdldGdyZ2lkKHMuc3RfZ2lkKS5ncl9uYW1lKQorICAgICAgICAgICAgICAgICAgICBleGNlcHQgS2V5RXJyb3I6CisgICAgICAgICAgICAgICAgICAgICAgICBiYi53YXJuKCJLZXlFcnJvciBpbiAlcyIgJSBwYXRoKQorICAgICAgICAgICAgICAgICAgICAgICAgcmFpc2UKIAogICAgICAgICAgICAgICAgIHVwZGF0ZV9oYXNoKCIgIikKICAgICAgICAgICAgICAgICBpZiBzdGF0LlNfSVNCTEsocy5zdF9tb2RlKSBvciBzdGF0LlNfSVNDSFIocy5zdF9tb2RlKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2UvdXRpbHMucHkgYi9wb2t5L21ldGEvbGliL29lL3V0aWxzLnB5CmluZGV4IDY1MmIyYmUuLjEzZjQyNzEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2UvdXRpbHMucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZS91dGlscy5weQpAQCAtMTY5LDcgKzE2OSw3IEBACiAgICAgIiIiCiAgICAgcmV0dXJuIGJiLnV0aWxzLmNvbnRhaW5zX2FueSgiRElTVFJPX0ZFQVRVUkVTIiwgZmVhdHVyZXMsIHRydWV2YWx1ZSwgZmFsc2V2YWx1ZSwgZCkKIAotZGVmIHBhcmFsbGVsX21ha2UoZCk6CitkZWYgcGFyYWxsZWxfbWFrZShkLCBtYWtlaW5zdD1GYWxzZSk6CiAgICAgIiIiCiAgICAgUmV0dXJuIHRoZSBpbnRlZ2VyIHZhbHVlIGZvciB0aGUgbnVtYmVyIG9mIHBhcmFsbGVsIHRocmVhZHMgdG8gdXNlIHdoZW4KICAgICBidWlsZGluZywgc2NyYXBlZCBvdXQgb2YgUEFSQUxMRUxfTUFLRS4gSWYgbm8gcGFyYWxsZWxpemF0aW9uIG9wdGlvbiBpcwpAQCAtMTc3LDcgKzE3NywxMCBAQAogCiAgICAgZS5nLiBpZiBQQVJBTExFTF9NQUtFID0gIi1qIDEwIiwgdGhpcyB3aWxsIHJldHVybiAxMCBhcyBhbiBpbnRlZ2VyLgogICAgICIiIgotICAgIHBtID0gKGQuZ2V0VmFyKCdQQVJBTExFTF9NQUtFJykgb3IgJycpLnNwbGl0KCkKKyAgICBpZiBtYWtlaW5zdDoKKyAgICAgICAgcG0gPSAoZC5nZXRWYXIoJ1BBUkFMTEVMX01BS0VJTlNUJykgb3IgJycpLnNwbGl0KCkKKyAgICBlbHNlOgorICAgICAgICBwbSA9IChkLmdldFZhcignUEFSQUxMRUxfTUFLRScpIG9yICcnKS5zcGxpdCgpCiAgICAgIyBsb29rIGZvciAnLWonIGFuZCB0aHJvdyBvdGhlciBvcHRpb25zIChlLmcuICctbCcpIGF3YXkKICAgICB3aGlsZSBwbToKICAgICAgICAgb3B0ID0gcG0ucG9wKDApCkBAIC0xOTIsNyArMTk1LDcgQEAKIAogICAgIHJldHVybiBOb25lCiAKLWRlZiBwYXJhbGxlbF9tYWtlX2FyZ3VtZW50KGQsIGZtdCwgbGltaXQ9Tm9uZSk6CitkZWYgcGFyYWxsZWxfbWFrZV9hcmd1bWVudChkLCBmbXQsIGxpbWl0PU5vbmUsIG1ha2VpbnN0PUZhbHNlKToKICAgICAiIiIKICAgICBIZWxwZXIgdXRpbGl0eSB0byBjb25zdHJ1Y3QgYSBwYXJhbGxlbCBtYWtlIGFyZ3VtZW50IGZyb20gdGhlIG51bWJlciBvZgogICAgIHBhcmFsbGVsIHRocmVhZHMgc3BlY2lmaWVkIGluIFBBUkFMTEVMX01BS0UuCkBAIC0yMDUsNyArMjA4LDcgQEAKICAgICBlLmcuIGlmIFBBUkFMTEVMX01BS0UgPSAiLWogMTAiLCBwYXJhbGxlbF9tYWtlX2FyZ3VtZW50KGQsICItbiAlZCIpIHdpbGwgcmV0dXJuCiAgICAgIi1uIDEwIgogICAgICIiIgotICAgIHYgPSBwYXJhbGxlbF9tYWtlKGQpCisgICAgdiA9IHBhcmFsbGVsX21ha2UoZCwgbWFrZWluc3QpCiAgICAgaWYgdjoKICAgICAgICAgaWYgbGltaXQ6CiAgICAgICAgICAgICB2ID0gbWluKGxpbWl0LCB2KQpAQCAtMjQ1LDkgKzI0OCwxMCBAQAogICAgIHRyaW1tZWQgPSAiLiIuam9pbihwYXJ0c1s6bnVtX3BhcnRzXSkKICAgICByZXR1cm4gdHJpbW1lZAogCi1kZWYgY3B1X2NvdW50KCk6CitkZWYgY3B1X2NvdW50KGF0X2xlYXN0PTEpOgogICAgIGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKLSAgICByZXR1cm4gbXVsdGlwcm9jZXNzaW5nLmNwdV9jb3VudCgpCisgICAgY3B1cyA9IG11bHRpcHJvY2Vzc2luZy5jcHVfY291bnQoKQorICAgIHJldHVybiBtYXgoY3B1cywgYXRfbGVhc3QpCiAKIGRlZiBleGVjdXRlX3ByZV9wb3N0X3Byb2Nlc3MoZCwgY21kcyk6CiAgICAgaWYgY21kcyBpcyBOb25lOgpAQCAtMzY5LDYgKzM3MywzNyBAQAogCiAgICAgcmV0dXJuIG91dHB1dF9zdHIKIAorCisjIEhlbHBlciBmdW5jdGlvbiB0byBnZXQgdGhlIGhvc3QgY29tcGlsZXIgdmVyc2lvbgorIyBEbyBub3QgYXNzdW1lIHRoZSBjb21waWxlciBpcyBnY2MKK2RlZiBnZXRfaG9zdF9jb21waWxlcl92ZXJzaW9uKGQsIHRhc2tjb250ZXh0b25seT1GYWxzZSk6CisgICAgaW1wb3J0IHJlLCBzdWJwcm9jZXNzCisKKyAgICBpZiB0YXNrY29udGV4dG9ubHkgYW5kIGQuZ2V0VmFyKCdCQl9XT1JLRVJDT05URVhUJykgIT0gJzEnOgorICAgICAgICByZXR1cm4KKworICAgIGNvbXBpbGVyID0gZC5nZXRWYXIoIkJVSUxEX0NDIikKKyAgICAjIEdldCByaWQgb2YgY2NhY2hlIHNpbmNlIGl0IGlzIG5vdCBwcmVzZW50IHdoZW4gcGFyc2luZy4KKyAgICBpZiBjb21waWxlci5zdGFydHN3aXRoKCdjY2FjaGUgJyk6CisgICAgICAgIGNvbXBpbGVyID0gY29tcGlsZXJbNzpdCisgICAgdHJ5OgorICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICAjIGRhdGFzdG9yZSBQQVRIIGRvZXMgbm90IGNvbnRhaW4gc2Vzc2lvbiBQQVRIIGFzIHNldCBieSBlbnZpcm9ubWVudC1zZXR1cC0uLi4KKyAgICAgICAgIyB0aGlzIGJyZWFrcyB0aGUgaW5zdGFsbC1idWlsZHRvb2xzIHVzZS1jYXNlCisgICAgICAgICMgZW52WyJQQVRIIl0gPSBkLmdldFZhcigiUEFUSCIpCisgICAgICAgIG91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCIlcyAtLXZlcnNpb24iICUgY29tcGlsZXIsIFwKKyAgICAgICAgICAgICAgICAgICAgc2hlbGw9VHJ1ZSwgZW52PWVudiwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VUKS5kZWNvZGUoInV0Zi04IikKKyAgICBleGNlcHQgc3VicHJvY2Vzcy5DYWxsZWRQcm9jZXNzRXJyb3IgYXMgZToKKyAgICAgICAgYmIuZmF0YWwoIkVycm9yIHJ1bm5pbmcgJXMgLS12ZXJzaW9uOiAlcyIgJSAoY29tcGlsZXIsIGUub3V0cHV0LmRlY29kZSgidXRmLTgiKSkpCisKKyAgICBtYXRjaCA9IHJlLm1hdGNoKHIiLiogKFxkK1wuXGQrKVwuXGQrLioiLCBvdXRwdXQuc3BsaXQoJ1xuJylbMF0pCisgICAgaWYgbm90IG1hdGNoOgorICAgICAgICBiYi5mYXRhbCgiQ2FuJ3QgZ2V0IGNvbXBpbGVyIHZlcnNpb24gZnJvbSAlcyAtLXZlcnNpb24gb3V0cHV0IiAlIGNvbXBpbGVyKQorCisgICAgdmVyc2lvbiA9IG1hdGNoLmdyb3VwKDEpCisgICAgcmV0dXJuIGNvbXBpbGVyLCB2ZXJzaW9uCisKKwogZGVmIGhvc3RfZ2NjX3ZlcnNpb24oZCwgdGFza2NvbnRleHRvbmx5PUZhbHNlKToKICAgICBpbXBvcnQgcmUsIHN1YnByb2Nlc3MKIApAQCAtMzg3LDcgKzQyMiw3IEBACiAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CiAgICAgICAgIGJiLmZhdGFsKCJFcnJvciBydW5uaW5nICVzIC0tdmVyc2lvbjogJXMiICUgKGNvbXBpbGVyLCBlLm91dHB1dC5kZWNvZGUoInV0Zi04IikpKQogCi0gICAgbWF0Y2ggPSByZS5tYXRjaChyIi4qIChcZFwuXGQpXC5cZC4qIiwgb3V0cHV0LnNwbGl0KCdcbicpWzBdKQorICAgIG1hdGNoID0gcmUubWF0Y2gociIuKiAoXGQrXC5cZCspXC5cZCsuKiIsIG91dHB1dC5zcGxpdCgnXG4nKVswXSkKICAgICBpZiBub3QgbWF0Y2g6CiAgICAgICAgIGJiLmZhdGFsKCJDYW4ndCBnZXQgY29tcGlsZXIgdmVyc2lvbiBmcm9tICVzIC0tdmVyc2lvbiBvdXRwdXQiICUgY29tcGlsZXIpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvYmFzZS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9idWlsZHBlcmYvYmFzZS5weQppbmRleCAzYjJmZWQ1Li41ZjE4MDVkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvYnVpbGRwZXJmL2Jhc2UucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL2J1aWxkcGVyZi9iYXNlLnB5CkBAIC00NjIsNyArNDYyLDcgQEAKICAgICBkZWYgcm1fdG1wKHNlbGYpOgogICAgICAgICAiIiJDbGVhbnVwIHRlbXBvcmFyeS9pbnRlcm1lZGlhdGUgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIiIiCiAgICAgICAgIGxvZy5kZWJ1ZygiUmVtb3ZpbmcgdGVtcG9yYXJ5IGFuZCBjYWNoZSBmaWxlcyIpCi0gICAgICAgIGZvciBuYW1lIGluIFsnYml0YmFrZS5sb2NrJywgJ2NvbmYvc2FuaXR5X2luZm8nLAorICAgICAgICBmb3IgbmFtZSBpbiBbJ2JpdGJha2UubG9jaycsICdjYWNoZS9zYW5pdHlfaW5mbycsCiAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJiX3ZhcnNbJ1RNUERJUiddXToKICAgICAgICAgICAgIG9lLnBhdGgucmVtb3ZlKG5hbWUsIHJlY3Vyc2U9VHJ1ZSkKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvbnRyb2xsZXJzL21hc3RlcmltYWdlLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvbnRyb2xsZXJzL21hc3RlcmltYWdlLnB5CmluZGV4IDA0MzVkZmEuLjBiZjU5MTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb250cm9sbGVycy9tYXN0ZXJpbWFnZS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvY29udHJvbGxlcnMvbWFzdGVyaW1hZ2UucHkKQEAgLTk3LDcgKzk3LDcgQEAKICAgICAgICAgaWYgc2VsZi5wb3dlcmNvbnRyb2xfY21kOgogICAgICAgICAgICAgY21kID0gIiVzICVzIiAlIChzZWxmLnBvd2VyY29udHJvbF9jbWQsIG1zZykKICAgICAgICAgICAgIHRyeToKLSAgICAgICAgICAgICAgICBjb21tYW5kcy5ydW5DbWQoY21kLCBhc3NlcnRfZXJyb3I9RmFsc2UsIHByZWV4ZWNfZm49b3Muc2V0c2lkLCBlbnY9c2VsZi5vcmlnZW52KQorICAgICAgICAgICAgICAgIGNvbW1hbmRzLnJ1bkNtZChjbWQsIGFzc2VydF9lcnJvcj1GYWxzZSwgc3RhcnRfbmV3X3Nlc3Npb249VHJ1ZSwgZW52PXNlbGYub3JpZ2VudikKICAgICAgICAgICAgIGV4Y2VwdCBDb21tYW5kRXJyb3IgYXMgZToKICAgICAgICAgICAgICAgICBiYi5mYXRhbChzdHIoZSkpCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2NvbnRleHQucHkgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS9jb250ZXh0LnB5CmluZGV4IDE0ZmM2YTUuLjQ3MDVkNjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL2NvbnRleHQucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvY29udGV4dC5weQpAQCAtNzIsNiArNzIsOSBAQAogICAgICAgICAgICAgICAgIG1vZHVsZXNfcmVxdWlyZWQsICoqa3dhcmdzKQogICAgICAgICBzZWxmLnN1aXRlcyA9IHNlbGYubG9hZGVyLmRpc2NvdmVyKCkKIAorICAgIGRlZiBwcmVwYXJlU3VpdGUoc2VsZiwgc3VpdGVzLCBwcm9jZXNzZXMpOgorICAgICAgICByZXR1cm4gc3VpdGVzCisKICAgICBkZWYgcnVuVGVzdHMoc2VsZiwgcHJvY2Vzc2VzPU5vbmUsIHNraXBzPVtdKToKICAgICAgICAgc2VsZi5ydW5uZXIgPSBzZWxmLnJ1bm5lckNsYXNzKHNlbGYsIGRlc2NyaXB0aW9ucz1GYWxzZSwgdmVyYm9zaXR5PTIpCiAKQEAgLTc5LDE0ICs4Miw5IEBACiAgICAgICAgIHNlbGYuc2tpcFRlc3RzKHNraXBzKQogCiAgICAgICAgIHNlbGYuX3J1bl9zdGFydF90aW1lID0gdGltZS50aW1lKCkKLSAgICAgICAgaWYgcHJvY2Vzc2VzOgotICAgICAgICAgICAgZnJvbSBvZXFhLmNvcmUudXRpbHMuY29uY3VycmVuY3l0ZXN0IGltcG9ydCBDb25jdXJyZW50VGVzdFN1aXRlCi0KLSAgICAgICAgICAgIGNvbmN1cnJlbnRfc3VpdGUgPSBDb25jdXJyZW50VGVzdFN1aXRlKHNlbGYuc3VpdGVzLCBwcm9jZXNzZXMpCi0gICAgICAgICAgICByZXN1bHQgPSBzZWxmLnJ1bm5lci5ydW4oY29uY3VycmVudF9zdWl0ZSkKLSAgICAgICAgZWxzZToKKyAgICAgICAgaWYgbm90IHByb2Nlc3NlczoKICAgICAgICAgICAgIHNlbGYucnVubmVyLmJ1ZmZlciA9IFRydWUKLSAgICAgICAgICAgIHJlc3VsdCA9IHNlbGYucnVubmVyLnJ1bihzZWxmLnN1aXRlcykKKyAgICAgICAgcmVzdWx0ID0gc2VsZi5ydW5uZXIucnVuKHNlbGYucHJlcGFyZVN1aXRlKHNlbGYuc3VpdGVzLCBwcm9jZXNzZXMpKQogICAgICAgICBzZWxmLl9ydW5fZW5kX3RpbWUgPSB0aW1lLnRpbWUoKQogCiAgICAgICAgIHJldHVybiByZXN1bHQKQEAgLTEwMiwyMiArMTAwLDI3IEBACiAgICAgbmFtZSA9ICdjb3JlJwogICAgIGhlbHAgPSAnY29yZSB0ZXN0IGNvbXBvbmVudCBleGFtcGxlJwogICAgIGRlc2NyaXB0aW9uID0gJ2V4ZWN1dGVzIGNvcmUgdGVzdCBzdWl0ZSBleGFtcGxlJworICAgIGRhdGV0aW1lID0gdGltZS5zdHJmdGltZSgiJVklbSVkJUglTSVTIikKIAogICAgIGRlZmF1bHRfY2FzZXMgPSBbb3MucGF0aC5qb2luKG9zLnBhdGguYWJzcGF0aChvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pKSwKICAgICAgICAgICAgICdjYXNlcy9leGFtcGxlJyldCiAgICAgZGVmYXVsdF90ZXN0X2RhdGEgPSBvcy5wYXRoLmpvaW4oZGVmYXVsdF9jYXNlc1swXSwgJ2RhdGEuanNvbicpCiAgICAgZGVmYXVsdF90ZXN0cyA9IE5vbmUKKyAgICBkZWZhdWx0X2pzb25fcmVzdWx0X2RpciA9IE5vbmUKIAogICAgIGRlZiByZWdpc3Rlcl9jb21tYW5kcyhzZWxmLCBsb2dnZXIsIHN1YnBhcnNlcnMpOgogICAgICAgICBzZWxmLnBhcnNlciA9IHN1YnBhcnNlcnMuYWRkX3BhcnNlcihzZWxmLm5hbWUsIGhlbHA9c2VsZi5oZWxwLAogICAgICAgICAgICAgICAgIGRlc2NyaXB0aW9uPXNlbGYuZGVzY3JpcHRpb24sIGdyb3VwPSdjb21wb25lbnRzJykKIAotICAgICAgICBzZWxmLmRlZmF1bHRfb3V0cHV0X2xvZyA9ICclcy1yZXN1bHRzLSVzLmxvZycgJSAoc2VsZi5uYW1lLAotICAgICAgICAgICAgICAgIHRpbWUuc3RyZnRpbWUoIiVZJW0lZCVIJU0lUyIpKQorICAgICAgICBzZWxmLmRlZmF1bHRfb3V0cHV0X2xvZyA9ICclcy1yZXN1bHRzLSVzLmxvZycgJSAoc2VsZi5uYW1lLCBzZWxmLmRhdGV0aW1lKQogICAgICAgICBzZWxmLnBhcnNlci5hZGRfYXJndW1lbnQoJy0tb3V0cHV0LWxvZycsIGFjdGlvbj0nc3RvcmUnLAogICAgICAgICAgICAgICAgIGRlZmF1bHQ9c2VsZi5kZWZhdWx0X291dHB1dF9sb2csCiAgICAgICAgICAgICAgICAgaGVscD0icmVzdWx0cyBvdXRwdXQgbG9nLCBkZWZhdWx0OiAlcyIgJSBzZWxmLmRlZmF1bHRfb3V0cHV0X2xvZykKIAorICAgICAgICBzZWxmLnBhcnNlci5hZGRfYXJndW1lbnQoJy0tanNvbi1yZXN1bHQtZGlyJywgYWN0aW9uPSdzdG9yZScsCisgICAgICAgICAgICAgICAgZGVmYXVsdD1zZWxmLmRlZmF1bHRfanNvbl9yZXN1bHRfZGlyLAorICAgICAgICAgICAgICAgIGhlbHA9Impzb24gcmVzdWx0IG91dHB1dCBkaXIsIGRlZmF1bHQ6ICVzIiAlIHNlbGYuZGVmYXVsdF9qc29uX3Jlc3VsdF9kaXIpCisKICAgICAgICAgZ3JvdXAgPSBzZWxmLnBhcnNlci5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKICAgICAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXJ1bi10ZXN0cycsIGFjdGlvbj0nc3RvcmUnLCBuYXJncz0nKycsCiAgICAgICAgICAgICAgICAgZGVmYXVsdD1zZWxmLmRlZmF1bHRfdGVzdHMsCkBAIC0xODAsNiArMTgzLDIyIEBACiAKICAgICAgICAgc2VsZi5tb2R1bGVfcGF0aHMgPSBhcmdzLkNBU0VTX1BBVEhTCiAKKyAgICBkZWYgX2dldF9qc29uX3Jlc3VsdF9kaXIoc2VsZiwgYXJncyk6CisgICAgICAgIHJldHVybiBhcmdzLmpzb25fcmVzdWx0X2RpcgorCisgICAgZGVmIF9nZXRfY29uZmlndXJhdGlvbihzZWxmKToKKyAgICAgICAgdGQgPSBzZWxmLnRjX2t3YXJnc1snaW5pdCddWyd0ZCddCisgICAgICAgIGNvbmZpZ3VyYXRpb24gPSB7J1RFU1RfVFlQRSc6IHNlbGYubmFtZSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdNQUNISU5FJzogdGQuZ2V0KCJNQUNISU5FIiksCisgICAgICAgICAgICAgICAgICAgICAgICAnRElTVFJPJzogdGQuZ2V0KCJESVNUUk8iKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdJTUFHRV9CQVNFTkFNRSc6IHRkLmdldCgiSU1BR0VfQkFTRU5BTUUiKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICdEQVRFVElNRSc6IHRkLmdldCgiREFURVRJTUUiKX0KKyAgICAgICAgcmV0dXJuIGNvbmZpZ3VyYXRpb24KKworICAgIGRlZiBfZ2V0X3Jlc3VsdF9pZChzZWxmLCBjb25maWd1cmF0aW9uKToKKyAgICAgICAgcmV0dXJuICclc18lc18lc18lcycgJSAoY29uZmlndXJhdGlvblsnVEVTVF9UWVBFJ10sIGNvbmZpZ3VyYXRpb25bJ0lNQUdFX0JBU0VOQU1FJ10sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb25bJ01BQ0hJTkUnXSwgc2VsZi5kYXRldGltZSkKKwogICAgIGRlZiBfcHJlX3J1bihzZWxmKToKICAgICAgICAgcGFzcwogCkBAIC0xOTgsNyArMjE3LDE2IEBACiAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICBzZWxmLl9wcmVfcnVuKCkKICAgICAgICAgICAgIHJjID0gc2VsZi50Yy5ydW5UZXN0cygqKnNlbGYudGNfa3dhcmdzWydydW4nXSkKLSAgICAgICAgICAgIHJjLmxvZ0RldGFpbHMoKQorCisgICAgICAgICAgICBqc29uX3Jlc3VsdF9kaXIgPSBzZWxmLl9nZXRfanNvbl9yZXN1bHRfZGlyKGFyZ3MpCisgICAgICAgICAgICBpZiBqc29uX3Jlc3VsdF9kaXI6CisgICAgICAgICAgICAgICAgY29uZmlndXJhdGlvbiA9IHNlbGYuX2dldF9jb25maWd1cmF0aW9uKCkKKyAgICAgICAgICAgICAgICByYy5sb2dEZXRhaWxzKGpzb25fcmVzdWx0X2RpciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9nZXRfcmVzdWx0X2lkKGNvbmZpZ3VyYXRpb24pKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICByYy5sb2dEZXRhaWxzKCkKKwogICAgICAgICAgICAgcmMubG9nU3VtbWFyeShzZWxmLm5hbWUpCiAKICAgICAgICAgb3V0cHV0X2xpbmsgPSBvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKGFyZ3Mub3V0cHV0X2xvZyksCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS9ydW5uZXIucHkgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS9ydW5uZXIucHkKaW5kZXggZjY1NmUxYS4uMTI4NDI5NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvcnVubmVyLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3J1bm5lci5weQpAQCAtMzE5LDEwICszMTksMTcgQEAKICAgICAgICAgICAgIHRoZV9maWxlLndyaXRlKGZpbGVfY29udGVudCkKIAogICAgIGRlZiBkdW1wX3Rlc3RyZXN1bHRfZmlsZShzZWxmLCB3cml0ZV9kaXIsIGNvbmZpZ3VyYXRpb24sIHJlc3VsdF9pZCwgdGVzdF9yZXN1bHQpOgotICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIod3JpdGVfZGlyKQotICAgICAgICBsZiA9IGJiLnV0aWxzLmxvY2tmaWxlKG9zLnBhdGguam9pbih3cml0ZV9kaXIsICdqc29udGVzdHJlc3VsdC5sb2NrJykpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGltcG9ydCBiYgorICAgICAgICAgICAgaGFzX2JiID0gVHJ1ZQorICAgICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKHdyaXRlX2RpcikKKyAgICAgICAgICAgIGxmID0gYmIudXRpbHMubG9ja2ZpbGUob3MucGF0aC5qb2luKHdyaXRlX2RpciwgJ2pzb250ZXN0cmVzdWx0LmxvY2snKSkKKyAgICAgICAgZXhjZXB0IEltcG9ydEVycm9yOgorICAgICAgICAgICAgaGFzX2JiID0gRmFsc2UKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKHdyaXRlX2RpciwgZXhpc3Rfb2s9VHJ1ZSkKICAgICAgICAgdGVzdF9yZXN1bHRzID0gc2VsZi5fZ2V0X2V4aXN0aW5nX3Rlc3RyZXN1bHRzX2lmX2F2YWlsYWJsZSh3cml0ZV9kaXIpCiAgICAgICAgIHRlc3RfcmVzdWx0c1tyZXN1bHRfaWRdID0geydjb25maWd1cmF0aW9uJzogY29uZmlndXJhdGlvbiwgJ3Jlc3VsdCc6IHRlc3RfcmVzdWx0fQogICAgICAgICBqc29uX3Rlc3RyZXN1bHRzID0ganNvbi5kdW1wcyh0ZXN0X3Jlc3VsdHMsIHNvcnRfa2V5cz1UcnVlLCBpbmRlbnQ9NCkKICAgICAgICAgc2VsZi5fd3JpdGVfZmlsZSh3cml0ZV9kaXIsIHNlbGYudGVzdHJlc3VsdF9maWxlbmFtZSwganNvbl90ZXN0cmVzdWx0cykKLSAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKKyAgICAgICAgaWYgaGFzX2JiOgorICAgICAgICAgICAgYmIudXRpbHMudW5sb2NrZmlsZShsZikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9xZW11LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3FlbXUucHkKaW5kZXggMDgxYzYyNy4uMjk1ZTg3NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3FlbXUucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3FlbXUucHkKQEAgLTgsNiArOCw3IEBACiBpbXBvcnQgc3lzCiBpbXBvcnQgc2lnbmFsCiBpbXBvcnQgdGltZQorZnJvbSBjb2xsZWN0aW9ucyBpbXBvcnQgZGVmYXVsdGRpY3QKIAogZnJvbSAuc3NoIGltcG9ydCBPRVNTSFRhcmdldAogZnJvbSBvZXFhLnV0aWxzLnFlbXVydW5uZXIgaW1wb3J0IFFlbXVSdW5uZXIKQEAgLTE4LDIzICsxOSwyOSBAQAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBsb2dnZXIsIHNlcnZlcl9pcCwgdGltZW91dD0zMDAsIHVzZXI9J3Jvb3QnLAogICAgICAgICAgICAgcG9ydD1Ob25lLCBtYWNoaW5lPScnLCByb290ZnM9JycsIGtlcm5lbD0nJywga3ZtPUZhbHNlLCBzbGlycD1GYWxzZSwKICAgICAgICAgICAgIGR1bXBfZGlyPScnLCBkdW1wX2hvc3RfY21kcz0nJywgZGlzcGxheT0nJywgYm9vdGxvZz0nJywKLSAgICAgICAgICAgIHRtcGRpcj0nJywgZGlyX2ltYWdlPScnLCBib290dGltZT02MCwgKiprd2FyZ3MpOgorICAgICAgICAgICAgdG1wZGlyPScnLCBkaXJfaW1hZ2U9JycsIGJvb3R0aW1lPTYwLCBzZXJpYWxfcG9ydHM9MiwKKyAgICAgICAgICAgIGJvb3RfcGF0dGVybnMgPSBkZWZhdWx0ZGljdChzdHIpLCBvdm1mPUZhbHNlLCAqKmt3YXJncyk6CiAKICAgICAgICAgc3VwZXIoT0VRZW11VGFyZ2V0LCBzZWxmKS5fX2luaXRfXyhsb2dnZXIsIE5vbmUsIHNlcnZlcl9pcCwgdGltZW91dCwKICAgICAgICAgICAgICAgICB1c2VyLCBwb3J0KQogCiAgICAgICAgIHNlbGYuc2VydmVyX2lwID0gc2VydmVyX2lwCisgICAgICAgIHNlbGYuc2VydmVyX3BvcnQgPSAwCiAgICAgICAgIHNlbGYubWFjaGluZSA9IG1hY2hpbmUKICAgICAgICAgc2VsZi5yb290ZnMgPSByb290ZnMKICAgICAgICAgc2VsZi5rZXJuZWwgPSBrZXJuZWwKICAgICAgICAgc2VsZi5rdm0gPSBrdm0KKyAgICAgICAgc2VsZi5vdm1mID0gb3ZtZgogICAgICAgICBzZWxmLnVzZV9zbGlycCA9IHNsaXJwCisgICAgICAgIHNlbGYuYm9vdF9wYXR0ZXJucyA9IGJvb3RfcGF0dGVybnMKIAogICAgICAgICBzZWxmLnJ1bm5lciA9IFFlbXVSdW5uZXIobWFjaGluZT1tYWNoaW5lLCByb290ZnM9cm9vdGZzLCB0bXBkaXI9dG1wZGlyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwbG95X2Rpcl9pbWFnZT1kaXJfaW1hZ2UsIGRpc3BsYXk9ZGlzcGxheSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2ZpbGU9Ym9vdGxvZywgYm9vdHRpbWU9Ym9vdHRpbWUsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vfa3ZtPWt2bSwgdXNlX3NsaXJwPXNsaXJwLCBkdW1wX2Rpcj1kdW1wX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBfaG9zdF9jbWRzPWR1bXBfaG9zdF9jbWRzLCBsb2dnZXI9bG9nZ2VyKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcF9ob3N0X2NtZHM9ZHVtcF9ob3N0X2NtZHMsIGxvZ2dlcj1sb2dnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZXJpYWxfcG9ydHM9c2VyaWFsX3BvcnRzLCBib290X3BhdHRlcm5zID0gYm9vdF9wYXR0ZXJucywgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB1c2Vfb3ZtZj1vdm1mKQogCiAgICAgZGVmIHN0YXJ0KHNlbGYsIHBhcmFtcz1Ob25lLCBleHRyYV9ib290cGFyYW1zPU5vbmUsIHJ1bnFlbXVwYXJhbXM9JycpOgogICAgICAgICBpZiBzZWxmLnVzZV9zbGlycCBhbmQgbm90IHNlbGYuc2VydmVyX2lwOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3NzaC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3RhcmdldC9zc2gucHkKaW5kZXggNTEwMzJlZi4uMDkwYjQwYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdGFyZ2V0L3NzaC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS90YXJnZXQvc3NoLnB5CkBAIC0xNSw3ICsxNSw3IEBACiAKIGNsYXNzIE9FU1NIVGFyZ2V0KE9FVGFyZ2V0KToKICAgICBkZWYgX19pbml0X18oc2VsZiwgbG9nZ2VyLCBpcCwgc2VydmVyX2lwLCB0aW1lb3V0PTMwMCwgdXNlcj0ncm9vdCcsCi0gICAgICAgICAgICAgICAgIHBvcnQ9Tm9uZSwgKiprd2FyZ3MpOgorICAgICAgICAgICAgICAgICBwb3J0PU5vbmUsIHNlcnZlcl9wb3J0PTAsICoqa3dhcmdzKToKICAgICAgICAgaWYgbm90IGxvZ2dlcjoKICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dpbmcuZ2V0TG9nZ2VyKCd0YXJnZXQnKQogICAgICAgICAgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuSU5GTykKQEAgLTMwLDYgKzMwLDcgQEAKICAgICAgICAgc3VwZXIoT0VTU0hUYXJnZXQsIHNlbGYpLl9faW5pdF9fKGxvZ2dlcikKICAgICAgICAgc2VsZi5pcCA9IGlwCiAgICAgICAgIHNlbGYuc2VydmVyX2lwID0gc2VydmVyX2lwCisgICAgICAgIHNlbGYuc2VydmVyX3BvcnQgPSBzZXJ2ZXJfcG9ydAogICAgICAgICBzZWxmLnRpbWVvdXQgPSB0aW1lb3V0CiAgICAgICAgIHNlbGYudXNlciA9IHVzZXIKICAgICAgICAgc3NoX29wdGlvbnMgPSBbCkBAIC0yNDYsNyArMjQ3LDcgQEAKICAgICAgICAgInN0ZGluIjogTm9uZSwKICAgICAgICAgInNoZWxsIjogRmFsc2UsCiAgICAgICAgICJidWZzaXplIjogLTEsCi0gICAgICAgICJwcmVleGVjX2ZuIjogb3Muc2V0c2lkLAorICAgICAgICAic3RhcnRfbmV3X3Nlc3Npb24iOiBUcnVlLAogICAgIH0KICAgICBvcHRpb25zLnVwZGF0ZShvcHRzKQogICAgIG91dHB1dCA9ICcnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvY29yZS91dGlscy9jb25jdXJyZW5jeXRlc3QucHkgYi9wb2t5L21ldGEvbGliL29lcWEvY29yZS91dGlscy9jb25jdXJyZW5jeXRlc3QucHkKaW5kZXggMGY3YjNkYy4uZmFjNTlmNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL2NvcmUvdXRpbHMvY29uY3VycmVuY3l0ZXN0LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9jb3JlL3V0aWxzL2NvbmN1cnJlbmN5dGVzdC5weQpAQCAtMTQ2LDYgKzE0NiwyMCBAQAogCiBzdWJ1bml0Ll9PdXRTaWRlVGVzdC5hZGRFcnJvciA9IG91dFNpZGVUZXN0YWRkRXJyb3IKIAorIyBMaWtlIG91dFNpZGVUZXN0YWRkRXJyb3IgYWJvdmUsIHdlIG5lZWQgYW4gZXF1aXZhbGVudCBmb3Igc2tpcHMKKyMgaGFwcGVuaW5nIGF0IHRoZSBzZXRVcENsYXNzKCkgbGV2ZWwsIG90aGVyd2lzZSB3ZSB3aWxsIHNlZSAiVU5LTk9XTiIKKyMgYXMgYSByZXN1bHQgZm9yIGNvbmN1cnJlbnQgdGVzdHMKKyMKK2RlZiBvdXRTaWRlVGVzdGFkZFNraXAoc2VsZiwgb2Zmc2V0LCBsaW5lKToKKyAgICAiIiJBICdza2lwOicgZGlyZWN0aXZlIGhhcyBiZWVuIHJlYWQuIiIiCisgICAgdGVzdF9uYW1lID0gbGluZVtvZmZzZXQ6LTFdLmRlY29kZSgndXRmOCcpCisgICAgc2VsZi5wYXJzZXIuX2N1cnJlbnRfdGVzdCA9IHN1YnVuaXQuUmVtb3RlZFRlc3RDYXNlKHRlc3RfbmFtZSkKKyAgICBzZWxmLnBhcnNlci5jdXJyZW50X3Rlc3RfZGVzY3JpcHRpb24gPSB0ZXN0X25hbWUKKyAgICBzZWxmLnBhcnNlci5fc3RhdGUgPSBzZWxmLnBhcnNlci5fcmVhZGluZ19za2lwX2RldGFpbHMKKyAgICBzZWxmLnBhcnNlci5fcmVhZGluZ19za2lwX2RldGFpbHMuc2V0X3NpbXBsZSgpCisgICAgc2VsZi5wYXJzZXIuc3VidW5pdExpbmVSZWNlaXZlZChsaW5lKQorCitzdWJ1bml0Ll9PdXRTaWRlVGVzdC5hZGRTa2lwID0gb3V0U2lkZVRlc3RhZGRTa2lwCiAKICMKICMgQSBkdW1teSBzdHJ1Y3R1cmUgdG8gYWRkIHRvIGlvLlN0cmluZ0lPIHNvIHRoYXQgdGhlIC5idWZmZXIgb2JqZWN0CkBAIC0xNjMsOSArMTc3LDEwIEBACiAjCiBjbGFzcyBDb25jdXJyZW50VGVzdFN1aXRlKHVuaXR0ZXN0LlRlc3RTdWl0ZSk6CiAKLSAgICBkZWYgX19pbml0X18oc2VsZiwgc3VpdGUsIHByb2Nlc3Nlcyk6CisgICAgZGVmIF9faW5pdF9fKHNlbGYsIHN1aXRlLCBwcm9jZXNzZXMsIHNldHVwZnVuYyk6CiAgICAgICAgIHN1cGVyKENvbmN1cnJlbnRUZXN0U3VpdGUsIHNlbGYpLl9faW5pdF9fKFtzdWl0ZV0pCiAgICAgICAgIHNlbGYucHJvY2Vzc2VzID0gcHJvY2Vzc2VzCisgICAgICAgIHNlbGYuc2V0dXBmdW5jID0gc2V0dXBmdW5jCiAKICAgICBkZWYgcnVuKHNlbGYsIHJlc3VsdCk6CiAgICAgICAgIHRlc3RzLCB0b3RhbHRlc3RzID0gZm9ya19mb3JfdGVzdHMoc2VsZi5wcm9jZXNzZXMsIHNlbGYpCkBAIC0yMjEsNiArMjM2LDE1IEBACiAgICAgd2hpbGUgZGVsYXkgYW5kIG9zLnBhdGguZXhpc3RzKGQgKyAiL2JpdGJha2UubG9jayIpOgogICAgICAgICB0aW1lLnNsZWVwKDEpCiAgICAgICAgIGRlbGF5ID0gZGVsYXkgLSAxCisgICAgIyBEZWxldGluZyB0aGVzZSBkaXJlY3RvcmllcyB0YWtlcyBhIGxvdCBvZiB0aW1lLCB1c2UgYXV0b2J1aWxkZXIKKyAgICAjIGNsb2JiZXJkaXIgaWYgaXRzIGF2YWlsYWJsZQorICAgIGNsb2JiZXJkaXIgPSBvcy5wYXRoLmV4cGFuZHVzZXIoIn4veW9jdG8tYXV0b2J1aWxkZXItaGVscGVyL2phbml0b3IvY2xvYmJlcmRpciIpCisgICAgaWYgb3MucGF0aC5leGlzdHMoY2xvYmJlcmRpcik6CisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHN1YnByb2Nlc3MuY2hlY2tfY2FsbChbY2xvYmJlcmRpciwgZF0pCisgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yOgorICAgICAgICAgICAgcGFzcwogICAgIGJiLnV0aWxzLnBydW5lZGlyKGQsIGlvbmljZT1UcnVlKQogCiBkZWYgZm9ya19mb3JfdGVzdHMoY29uY3VycmVuY3lfbnVtLCBzdWl0ZSk6CkBAIC0yNDksMzcgKzI3Myw3IEBACiAgICAgICAgICAgICAgICAgc3RyZWFtID0gb3MuZmRvcGVuKGMycHdyaXRlLCAnd2InLCAxKQogICAgICAgICAgICAgICAgIG9zLmNsb3NlKGMycHJlYWQpCiAKLSAgICAgICAgICAgICAgICAjIENyZWF0ZSBhIG5ldyBzZXBhcmF0ZSBCVUlMRERJUiBmb3IgZWFjaCBncm91cCBvZiB0ZXN0cwotICAgICAgICAgICAgICAgIGlmICdCVUlMRERJUicgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgICAgICAgICAgICAgYnVpbGRkaXIgPSBvcy5lbnZpcm9uWydCVUlMRERJUiddCi0gICAgICAgICAgICAgICAgICAgIG5ld2J1aWxkZGlyID0gYnVpbGRkaXIgKyAiLXN0LSIgKyBzdHIob3VycGlkKQotICAgICAgICAgICAgICAgICAgICBuZXdzZWxmdGVzdGRpciA9IG5ld2J1aWxkZGlyICsgIi9tZXRhLXNlbGZ0ZXN0IgotCi0gICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihuZXdidWlsZGRpcikKLSAgICAgICAgICAgICAgICAgICAgb2UucGF0aC5jb3B5dHJlZShidWlsZGRpciArICIvY29uZiIsIG5ld2J1aWxkZGlyICsgIi9jb25mIikKLSAgICAgICAgICAgICAgICAgICAgb2UucGF0aC5jb3B5dHJlZShidWlsZGRpciArICIvY2FjaGUiLCBuZXdidWlsZGRpciArICIvY2FjaGUiKQotICAgICAgICAgICAgICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKHNlbGZ0ZXN0ZGlyLCBuZXdzZWxmdGVzdGRpcikKLQotICAgICAgICAgICAgICAgICAgICBmb3IgZSBpbiBvcy5lbnZpcm9uOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgYnVpbGRkaXIgaW4gb3MuZW52aXJvbltlXToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5lbnZpcm9uW2VdID0gb3MuZW52aXJvbltlXS5yZXBsYWNlKGJ1aWxkZGlyLCBuZXdidWlsZGRpcikKLQotICAgICAgICAgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgiZ2l0IGluaXQ7IGdpdCBhZGQgKjsgZ2l0IGNvbW1pdCAtYSAtbSAnaW5pdGlhbCciLCBjd2Q9bmV3c2VsZnRlc3RkaXIsIHNoZWxsPVRydWUpCi0KLSAgICAgICAgICAgICAgICAgICAgIyBUcmllZCB0byB1c2VkIGJpdGJha2UtbGF5ZXJzIGFkZC9yZW1vdmUgYnV0IGl0IHJlcXVpcmVzIHJlY2lwZSBwYXJzaW5nIGFuZCBoZW5jZSBpcyB0b28gc2xvdwotICAgICAgICAgICAgICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgic2VkICVzL2NvbmYvYmJsYXllcnMuY29uZiAtaSAtZSAncyMlcyMlcyNnJyIgJSAobmV3YnVpbGRkaXIsIHNlbGZ0ZXN0ZGlyLCBuZXdzZWxmdGVzdGRpciksIGN3ZD1uZXdidWlsZGRpciwgc2hlbGw9VHJ1ZSkKLQotICAgICAgICAgICAgICAgICAgICBvcy5jaGRpcihuZXdidWlsZGRpcikKLQotICAgICAgICAgICAgICAgICAgICBmb3IgdCBpbiBwcm9jZXNzX3N1aXRlOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgbm90IGhhc2F0dHIodCwgInRjIik6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgICAgICAgICAgICAgICAgIGNwID0gdC50Yy5jb25maWdfcGF0aHMKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBwIGluIGNwOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGZ0ZXN0ZGlyIGluIGNwW3BdIGFuZCBuZXdzZWxmdGVzdGRpciBub3QgaW4gY3BbcF06Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNwW3BdID0gY3BbcF0ucmVwbGFjZShzZWxmdGVzdGRpciwgbmV3c2VsZnRlc3RkaXIpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgYnVpbGRkaXIgaW4gY3BbcF0gYW5kIG5ld2J1aWxkZGlyIG5vdCBpbiBjcFtwXToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3BbcF0gPSBjcFtwXS5yZXBsYWNlKGJ1aWxkZGlyLCBuZXdidWlsZGRpcikKKyAgICAgICAgICAgICAgICAoYnVpbGRkaXIsIG5ld2J1aWxkZGlyKSA9IHN1aXRlLnNldHVwZnVuYygiLXN0LSIgKyBzdHIob3VycGlkKSwgc2VsZnRlc3RkaXIsIHByb2Nlc3Nfc3VpdGUpCiAKICAgICAgICAgICAgICAgICAjIExlYXZlIHN0ZGVyciBhbmQgc3Rkb3V0IG9wZW4gc28gd2UgY2FuIHNlZSB0ZXN0IG5vaXNlCiAgICAgICAgICAgICAgICAgIyBDbG9zZSBzdGRpbiBzbyB0aGF0IHRoZSBjaGlsZCBnb2VzIGF3YXkgaWYgaXQgZGVjaWRlcyB0bwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9ic3AtaHcuanNvbiBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvYnNwLWh3Lmpzb24KaW5kZXggNWM1YjliNS4uYTliYzdkNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9ic3AtaHcuanNvbgorKysgYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2JzcC1ody5qc29uCkBAIC05MTcsMjggKzkxNyw2IEBACiAgICAgfSwKICAgICB7CiAgICAgICAgICJ0ZXN0IjogewotICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtaHcuQ2hlY2tfaWZfdGFyZ2V0X2Nhbl9zdXBwb3J0X0VFUFJPTSIsCi0gICAgICAgICAgICAiYXV0aG9yIjogWwotICAgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgICAgImVtYWlsIjogInlpLnpoYW9Ad2luZHJpdmVyLmNvbSIsCi0gICAgICAgICAgICAgICAgICAgICJuYW1lIjogInlpLnpoYW9Ad2luZHJpdmVyLmNvbSIKLSAgICAgICAgICAgICAgICB9Ci0gICAgICAgICAgICBdLAotICAgICAgICAgICAgImV4ZWN1dGlvbiI6IHsKLSAgICAgICAgICAgICAgICAiMSI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJDaGVjayBlZXByb20gZGV2aWNlIGV4aXN0IGluIC9zeXMvYnVzL2kyYy9kZXZpY2VzLyAiLAotICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICJIZXhkdW1wIGNhbiByZWFkIGRhdGEgZnJvbSBlZXByb20uXG4iCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiMiI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJSdW4gXCJoZXhkdW1wIGVlcHJvbVwiIGNvbW1hbmRyb290QG1wYzgzMTVlLXJkYjovc3lzL2J1cy9pMmMvZGV2aWNlcy8xLTAwNTE+IGhleGR1bXAgZWVwcm9tMDAwMDAwMCA5MjEwIDBiMDIgMDIxMSAwMDA5IDBiNTIgMDEwOCAwYzAwIDNjMDAwMDAwMDEwIDY5NzggNjkzMCA2OTExIDIwOGMgNzAwMyAzYzNjIDAwZjAgODM4MVx1MjAyNlxuIiwKLSAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAic3VtbWFyeSI6ICJDaGVja19pZl90YXJnZXRfY2FuX3N1cHBvcnRfRUVQUk9NIgotICAgICAgICB9Ci0gICAgfSwKLSAgICB7Ci0gICAgICAgICJ0ZXN0IjogewogICAgICAgICAgICAgIkBhbGlhcyI6ICJic3BzLWh3LmJzcHMtaHcuU3lzdGVtX2Nhbl9ib290X3VwX3ZpYV9ORlMiLAogICAgICAgICAgICAgImF1dGhvciI6IFsKICAgICAgICAgICAgICAgICB7CkBAIC05NjYsMzUgKzk0NCw1IEBACiAgICAgICAgICAgICB9LAogICAgICAgICAgICAgInN1bW1hcnkiOiAiU3lzdGVtX2Nhbl9ib290X3VwX3ZpYV9ORlMiCiAgICAgICAgIH0KLSAgICB9LAotICAgIHsKLSAgICAgICAgInRlc3QiOiB7Ci0gICAgICAgICAgICAiQGFsaWFzIjogImJzcHMtaHcuYnNwcy1ody5Cb290X2Zyb21fSkZGUzJfaW1hZ2UiLAotICAgICAgICAgICAgImF1dGhvciI6IFsKLSAgICAgICAgICAgICAgICB7Ci0gICAgICAgICAgICAgICAgICAgICJlbWFpbCI6ICJ5aS56aGFvQHdpbmRyaXZlci5jb20iLAotICAgICAgICAgICAgICAgICAgICAibmFtZSI6ICJ5aS56aGFvQHdpbmRyaXZlci5jb20iCi0gICAgICAgICAgICAgICAgfQotICAgICAgICAgICAgXSwKLSAgICAgICAgICAgICJleGVjdXRpb24iOiB7Ci0gICAgICAgICAgICAgICAgIjEiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiRmlyc3QgYm9vdCB0aGUgYm9hcmQgd2l0aCBORlMgcm9vdC4gIiwKLSAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiVGhlIHN5c3RlbSBjYW4gYm9vdCB1cCB3aXRob3V0IHByb2JsZW1cbiIKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICIyIjogewotICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIkluc3RhbGwgbXRkLXV0aWxzIHBhY2thZ2UuIEVyYXNlIHRoZSBNVEQgcGFydGl0aW9uIHdoaWNoIHdpbGwgYmUgdXNlZCBhcyByb290OiAkIGZsYXNoX2VyYXNlYWxsIC9kZXYvbXRkMyAiLAotICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCi0gICAgICAgICAgICAgICAgfSwKLSAgICAgICAgICAgICAgICAiMyI6IHsKLSAgICAgICAgICAgICAgICAgICAgImFjdGlvbiI6ICJDb3B5IHRoZSBKRkZTMiBpbWFnZSB0byB0aGUgTVREIHBhcnRpdGlvbjogJCBmbGFzaGNwIGNvcmUtaW1hZ2UtbWluaW1hbC1tcGM4MzE1ZS1yZGIuamZmczIgL2Rldi9tdGQzICIsCi0gICAgICAgICAgICAgICAgICAgICJleHBlY3RlZF9yZXN1bHRzIjogIiIKLSAgICAgICAgICAgICAgICB9LAotICAgICAgICAgICAgICAgICI0IjogewotICAgICAgICAgICAgICAgICAgICAiYWN0aW9uIjogIlRoZW4gcmVib290IHRoZSBib2FyZCBhbmQgc2V0IHVwIHRoZSBlbnZpcm9ubWVudCBpbiBVLUJvb3Q6ID0+IHNldGVudiBib290YXJncyByb290PS9kZXYvbXRkYmxvY2szIHJvb3Rmc3R5cGU9amZmczIgY29uc29sZT10dHlTMCwxMTUyMDAgIiwKLSAgICAgICAgICAgICAgICAgICAgImV4cGVjdGVkX3Jlc3VsdHMiOiAiIgotICAgICAgICAgICAgICAgIH0KLSAgICAgICAgICAgIH0sCi0gICAgICAgICAgICAic3VtbWFyeSI6ICJCb290X2Zyb21fSkZGUzJfaW1hZ2UiCi0gICAgICAgIH0KICAgICB9CiBdCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2VjbGlwc2UtcGx1Z2luLmpzb24gYi9wb2t5L21ldGEvbGliL29lcWEvbWFudWFsL2VjbGlwc2UtcGx1Z2luLmpzb24KaW5kZXggOTg2OTE1MC4uZDc3ZDBlNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL21hbnVhbC9lY2xpcHNlLXBsdWdpbi5qc29uCisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9tYW51YWwvZWNsaXBzZS1wbHVnaW4uanNvbgpAQCAtODIsNyArODIsNyBAQAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICJleGVjdXRpb24iOiB7CiAgICAgICAgICAgICAgICAgIjEiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiTGF1bmNoIGEgUUVNVSBvZiB0YXJnZXQgZW52aXJvbWVudC4oUmVmZXJlbmNlIHRvIGNhc2UgXCJBRFQgLSBMYXVuY2ggcWVtdSBieSBlY2xpcHNlXCIpICIsCisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiTGF1bmNoIGEgUUVNVSBvZiB0YXJnZXQgZW52aXJvbm1lbnQuKFJlZmVyZW5jZSB0byBjYXNlIFwiQURUIC0gTGF1bmNoIHFlbXUgYnkgZWNsaXBzZVwiKSAiLAogICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAiMiI6IHsKQEAgLTE2NCw3ICsxNjQsNyBAQAogICAgICAgICAgICAgXSwKICAgICAgICAgICAgICJleGVjdXRpb24iOiB7CiAgICAgICAgICAgICAgICAgIjEiOiB7Ci0gICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiTGF1bmNoIGEgUUVNVSBvZiB0YXJnZXQgZW52aXJvbWVudC4oUmVmZXJlbmNlIHRvIGNhc2UgXCJBRFQgLSBMYXVuY2ggcWVtdSBieSBlY2xpcHNlXCIpICIsCisgICAgICAgICAgICAgICAgICAgICJhY3Rpb24iOiAiTGF1bmNoIGEgUUVNVSBvZiB0YXJnZXQgZW52aXJvbm1lbnQuKFJlZmVyZW5jZSB0byBjYXNlIFwiQURUIC0gTGF1bmNoIHFlbXUgYnkgZWNsaXBzZVwiKSAiLAogICAgICAgICAgICAgICAgICAgICAiZXhwZWN0ZWRfcmVzdWx0cyI6ICIiCiAgICAgICAgICAgICAgICAgfSwKICAgICAgICAgICAgICAgICAiMiI6IHsKQEAgLTMxOSw0ICszMTksNCBAQAogICAgICAgICAgICAgInN1bW1hcnkiOiAiRWNsaXBzZV9Qb2t5X2luc3RhbGxhdGlvbl9hbmRfc2V0dXAiCiAgICAgICAgIH0KICAgICB9Ci1dClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorXQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYXB0LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYXB0LnB5CmluZGV4IDc0YTk0MGQuLmM1Mzc4ZDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2FwdC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9hcHQucHkKQEAgLTIyLDcgKzIyLDkgQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgogICAgICAgICBzZXJ2aWNlX3JlcG8gPSBvcy5wYXRoLmpvaW4oY2xzLnRjLnRkWydERVBMT1lfRElSX0RFQiddLCAnYWxsJykKLSAgICAgICAgY2xzLnJlcG9fc2VydmVyID0gSFRUUFNlcnZpY2Uoc2VydmljZV9yZXBvLCBjbHMudGMudGFyZ2V0LnNlcnZlcl9pcCwgbG9nZ2VyPWNscy50Yy5sb2dnZXIpCisgICAgICAgIGNscy5yZXBvX3NlcnZlciA9IEhUVFBTZXJ2aWNlKHNlcnZpY2VfcmVwbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzAuMC4wLjAnLCBwb3J0PWNscy50Yy50YXJnZXQuc2VydmVyX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlcj1jbHMudGMubG9nZ2VyKQogICAgICAgICBjbHMucmVwb19zZXJ2ZXIuc3RhcnQoKQogCiAgICAgQGNsYXNzbWV0aG9kCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9idWlsZGNwaW8ucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9idWlsZGNwaW8ucHkKaW5kZXggZjRlODcxZS4uZDBmOTE2NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvYnVpbGRjcGlvLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2J1aWxkY3Bpby5weQpAQCAtMTIsNyArMTIsNyBAQAogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKLSAgICAgICAgdXJpID0gJ2h0dHBzOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvY3Bpby0yLjEyLnRhci5neicKKyAgICAgICAgdXJpID0gJ2h0dHBzOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvbWlycm9yL3NvdXJjZXMvY3Bpby0yLjEzLnRhci5neicKICAgICAgICAgY2xzLnByb2plY3QgPSBUYXJnZXRCdWlsZFByb2plY3QoY2xzLnRjLnRhcmdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJpLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbF9kaXIgPSBjbHMudGMudGRbJ0RMX0RJUiddKQpAQCAtMjcsNiArMjcsNiBAQAogICAgIEBPRUhhc1BhY2thZ2UoWydhdXRvY29uZiddKQogICAgIGRlZiB0ZXN0X2NwaW8oc2VsZik6CiAgICAgICAgIHNlbGYucHJvamVjdC5kb3dubG9hZF9hcmNoaXZlKCkKLSAgICAgICAgc2VsZi5wcm9qZWN0LnJ1bl9jb25maWd1cmUoKQorICAgICAgICBzZWxmLnByb2plY3QucnVuX2NvbmZpZ3VyZSgnLS1kaXNhYmxlLW1haW50YWluZXItbW9kZScsJycpCiAgICAgICAgIHNlbGYucHJvamVjdC5ydW5fbWFrZSgpCiAgICAgICAgIHNlbGYucHJvamVjdC5ydW5faW5zdGFsbCgpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9kYXRlLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZGF0ZS5weQppbmRleCA3NzUwYTcyLi5mZGQyYTZhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9kYXRlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2RhdGUucHkKQEAgLTEzLDEyICsxMywxMiBAQAogICAgIGRlZiBzZXRVcChzZWxmKToKICAgICAgICAgaWYgc2VsZi50Yy50ZC5nZXQoJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXInKSA9PSAnc3lzdGVtZCc6CiAgICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygnU3RvcHBpbmcgc3lzdGVtZC10aW1lc3luY2QgZGFlbW9uJykKLSAgICAgICAgICAgIHNlbGYudGFyZ2V0LnJ1bignc3lzdGVtY3RsIHN0b3Agc3lzdGVtZC10aW1lc3luY2QnKQorICAgICAgICAgICAgc2VsZi50YXJnZXQucnVuKCdzeXN0ZW1jdGwgZGlzYWJsZSAtLW5vdyBzeXN0ZW1kLXRpbWVzeW5jZCcpCiAKICAgICBkZWYgdGVhckRvd24oc2VsZik6CiAgICAgICAgIGlmIHNlbGYudGMudGQuZ2V0KCdWSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyJykgPT0gJ3N5c3RlbWQnOgogICAgICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoJ1N0YXJ0aW5nIHN5c3RlbWQtdGltZXN5bmNkIGRhZW1vbicpCi0gICAgICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ3N5c3RlbWN0bCBzdGFydCBzeXN0ZW1kLXRpbWVzeW5jZCcpCisgICAgICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ3N5c3RlbWN0bCBlbmFibGUgLS1ub3cgc3lzdGVtZC10aW1lc3luY2QnKQogCiAgICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQogICAgIEBPRUhhc1BhY2thZ2UoWydjb3JldXRpbHMnLCAnYnVzeWJveCddKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZG5mLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvZG5mLnB5CmluZGV4IGRlMzc1OTkuLmY0MGM2MzAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2RuZi5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9kbmYucHkKQEAgLTUzLDcgKzUzLDggQEAKICAgICBAY2xhc3NtZXRob2QKICAgICBkZWYgc2V0VXBDbGFzcyhjbHMpOgogICAgICAgICBjbHMucmVwb19zZXJ2ZXIgPSBIVFRQU2VydmljZShvcy5wYXRoLmpvaW4oY2xzLnRjLnRkWydXT1JLRElSJ10sICdvZS10ZXN0aW1hZ2UtcmVwbycpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjbHMudGMudGFyZ2V0LnNlcnZlcl9pcCwgbG9nZ2VyPWNscy50Yy5sb2dnZXIpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcwLjAuMC4wJywgcG9ydD1jbHMudGMudGFyZ2V0LnNlcnZlcl9wb3J0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXI9Y2xzLnRjLmxvZ2dlcikKICAgICAgICAgY2xzLnJlcG9fc2VydmVyLnN0YXJ0KCkKIAogICAgIEBjbGFzc21ldGhvZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvbG9ncm90YXRlLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvbG9ncm90YXRlLnB5CmluZGV4IGJmYTU3YzUuLjM5MzhlOTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2xvZ3JvdGF0ZS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9sb2dyb3RhdGUucHkKQEAgLTE4LDMyICsxOCw1OCBAQAogICAgIEBjbGFzc21ldGhvZAogICAgIGRlZiB0ZWFyRG93bkNsYXNzKGNscyk6CiAgICAgICAgIGNscy50Yy50YXJnZXQucnVuKCdtdiAtZiAkSE9NRS93dG1wLm9lcWFiYWsgL2V0Yy9sb2dyb3RhdGUuZC93dG1wICYmIHJtIC1yZiAkSE9NRS9sb2dyb3RhdGVfZGlyJykKKyAgICAgICAgY2xzLnRjLnRhcmdldC5ydW4oJ3JtIC1yZiAvdmFyL2xvZy9sb2dyb3RhdGVfdGVzdGZpbGUgJiYgcm0gLXJmIC9ldGMvbG9ncm90YXRlLmQvbG9ncm90YXRlX3Rlc3RmaWxlJykKIAogICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKICAgICBAT0VIYXNQYWNrYWdlKFsnbG9ncm90YXRlJ10pCi0gICAgZGVmIHRlc3RfMV9sb2dyb3RhdGVfc2V0dXAoc2VsZik6CisgICAgZGVmIHRlc3RfbG9ncm90YXRlX3d0bXAoc2VsZik6CisKKyAgICAgICAgIyAvdmFyL2xvZy93dG1wIG1heSBub3QgYWx3YXlzIGV4aXN0IGluaXRpYWxseSwgc28gdXNlIHRvdWNoIHRvIGVuc3VyZSBpdCBpcyBwcmVzZW50CisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCd0b3VjaCAvdmFyL2xvZy93dG1wJykKKyAgICAgICAgbXNnID0gKCdDb3VsZCBub3QgY3JlYXRlL3VwZGF0ZSAvdmFyL2xvZy93dG1wIHdpdGggdG91Y2gnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnID0gbXNnKQorCiAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdta2RpciAkSE9NRS9sb2dyb3RhdGVfZGlyJykKLSAgICAgICAgbXNnID0gJ0NvdWxkIG5vdCBjcmVhdGUgbG9ncm90YXRlX2Rpci4gT3V0cHV0OiAlcycgJSBvdXRwdXQKKyAgICAgICAgbXNnID0gKCdDb3VsZCBub3QgY3JlYXRlIGxvZ3JvdGF0ZV9kaXIuIE91dHB1dDogJXMnICUgb3V0cHV0KQogICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnID0gbXNnKQogCi0gICAgICAgIGNtZCA9ICgnc2VkIC1pICJzI3d0bXAgeyN3dG1wIHtcXG4gICAgb2xkZGlyICRIT01FL2xvZ3JvdGF0ZV9kaXIjIicKLSAgICAgICAgICAgICAgICcgL2V0Yy9sb2dyb3RhdGUuZC93dG1wJykKLSAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oY21kKQotICAgICAgICBtc2cgPSAoJ0NvdWxkIG5vdCB3cml0ZSB0byBsb2dyb3RhdGUuZC93dG1wIGZpbGUuIFN0YXR1cyBhbmQgb3V0cHV0OiAnCi0gICAgICAgICAgICAgICAnICVzIGFuZCAlcycgJSAoc3RhdHVzLCBvdXRwdXQpKQorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignZWNobyAiY3JlYXRlIFxuIG9sZGRpciAkSE9NRS9sb2dyb3RhdGVfZGlyIFxuIGluY2x1ZGUgL2V0Yy9sb2dyb3RhdGUuZC93dG1wIiA+IC90bXAvbG9ncm90YXRlLXRlc3QuY29uZicpCisgICAgICAgIG1zZyA9ICgnQ291bGQgbm90IHdyaXRlIHRvIC90bXAvbG9ncm90YXRlLXRlc3QuY29uZicpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2cgPSBtc2cpCisgICAgICAgIAorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignZWNobyAiL3Zhci9sb2cvbG9ncm90YXRlX3Rlc3Qge1xcbiBtaXNzaW5nb2sgXFxuIG1vbnRobHkgXFxuIHJvdGF0ZSAxIiA+IC9ldGMvbG9ncm90YXRlLmQvbG9ncm90YXRlX3Rlc3QnKQorICAgICAgICBtc2cgPSAoJ0NvdWxkIG5vdCB3cml0ZSB0byAvZXRjL2xvZ3JvdGF0ZS5kL2xvZ3JvdGF0ZV90ZXN0JykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZyA9IG1zZykKKyAgICAgICAgCisgICAgICAgICMgSWYgbG9ncm90YXRlIGZhaWxzIHRvIHJvdGF0ZSB0aGUgbG9nLCB2aWV3IHRoZSB2ZXJib3NlIG91dHB1dCBvZiBsb2dyb3RhdGUgdG8gc2VlIHdoYXQgcHJldmVudGVkIGl0CisgICAgICAgIF8sIGxvZ3JvdGF0ZV9vdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ2xvZ3JvdGF0ZSAtdmYgL3RtcC9sb2dyb3RhdGUtdGVzdC5jb25mJykKKyAgICAgICAgc3RhdHVzLCBfID0gc2VsZi50YXJnZXQucnVuKCdmaW5kICRIT01FL2xvZ3JvdGF0ZV9kaXIgLXR5cGUgZiB8IGdyZXAgd3RtcC4xJykKKyAgICAgICAgbXNnID0gKCJsb2dyb3RhdGUgZGlkIG5vdCBzdWNjZXNzZnVsbHkgcm90YXRlIHRoZSB3dG1wIGxvZy4gT3V0cHV0IGZyb20gbG9ncm90YXRlIC12ZjogXG4lcyIgJSAobG9ncm90YXRlX291dHB1dCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2cgPSBtc2cpCisgICAgICAgCisgICAgQE9FVGVzdERlcGVuZHMoWydsb2dyb3RhdGUuTG9ncm90YXRlVGVzdC50ZXN0X2xvZ3JvdGF0ZV93dG1wJ10pCisgICAgZGVmIHRlc3RfbG9ncm90YXRlX25ld2xvZyhzZWxmKToKKyAgICAgICAgCisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKCdlY2hvICJvZXFhIGxvZ3JvdGF0ZSB0ZXN0IGZpbGUiID4gL3Zhci9sb2cvbG9ncm90YXRlX3Rlc3RmaWxlJykKKyAgICAgICAgbXNnID0gKCdDb3VsZCBub3QgY3JlYXRlIGxvZ3JvdGF0ZSB0ZXN0IGZpbGUgaW4gL3Zhci9sb2cnKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnID0gbXNnKQorICAgICAgICAKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ2VjaG8gIi92YXIvbG9nL2xvZ3JvdGF0ZV90ZXN0ZmlsZSB7XG4gbWlzc2luZ29rIFxuIG1vbnRobHkgXG4gcm90YXRlIDEiID4gL2V0Yy9sb2dyb3RhdGUuZC9sb2dyb3RhdGVfdGVzdGZpbGUnKQorICAgICAgICBtc2cgPSAoJ0NvdWxkIG5vdCB3cml0ZSB0byAvZXRjL2xvZ3JvdGF0ZS5kL2xvZ3JvdGF0ZV90ZXN0ZmlsZScpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2cgPSBtc2cpCiAKLSAgICBAT0VUZXN0RGVwZW5kcyhbJ2xvZ3JvdGF0ZS5Mb2dyb3RhdGVUZXN0LnRlc3RfMV9sb2dyb3RhdGVfc2V0dXAnXSkKLSAgICBkZWYgdGVzdF8yX2xvZ3JvdGF0ZShzZWxmKToKLSAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ2VjaG8gImNyZWF0ZSBcbiBpbmNsdWRlIC9ldGMvbG9ncm90YXRlLmQiID4gL3RtcC9sb2dyb3RhdGUtdGVzdC5jb25mJykKLSAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ2xvZ3JvdGF0ZSAtZiAvdG1wL2xvZ3JvdGF0ZS10ZXN0LmNvbmYnKQotCi0gICAgICAgIG1zZyA9ICgnbG9ncm90YXRlIHNlcnZpY2UgY291bGQgbm90IGJlIHJlbG9hZGVkLiBTdGF0dXMgYW5kIG91dHB1dDogJwotICAgICAgICAgICAgICAgICclcyBhbmQgJXMnICUgKHN0YXR1cywgb3V0cHV0KSkKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ2VjaG8gImNyZWF0ZSBcbiBvbGRkaXIgJEhPTUUvbG9ncm90YXRlX2RpciBcbiBpbmNsdWRlIC9ldGMvbG9ncm90YXRlLmQvbG9ncm90YXRlX3Rlc3RmaWxlIiA+IC90bXAvbG9ncm90YXRlLXRlc3QyLmNvbmYnKQorICAgICAgICBtc2cgPSAoJ0NvdWxkIG5vdCB3cml0ZSB0byAvdG1wL2xvZ3JvdGF0ZV90ZXN0Mi5jb25mJykKICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDAsIG1zZyA9IG1zZykKIAotICAgICAgICBfLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ2xzIC1sYSAkSE9NRS9sb2dyb3RhdGVfZGlyLyB8IHdjIC1sJykKLSAgICAgICAgbXNnID0gKCduZXcgbG9nZmlsZSBjb3VsZCBub3QgYmUgY3JlYXRlZC4gTGlzdCBvZiBmaWxlcyB3aXRoaW4gbG9nICcKLSAgICAgICAgICAgICAgICdkaXJlY3Rvcnk6ICVzJyAlICgKLSAgICAgICAgICAgICAgICBzZWxmLnRhcmdldC5ydW4oJ2xzIC1sYSAkSE9NRS9sb2dyb3RhdGVfZGlyJylbMV0pKQotICAgICAgICBzZWxmLmFzc2VydFRydWUoaW50KG91dHB1dCk+PTMsIG1zZyA9IG1zZykKKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ2ZpbmQgJEhPTUUvbG9ncm90YXRlX2RpciAtdHlwZSBmIHwgZ3JlcCBsb2dyb3RhdGVfdGVzdGZpbGUuMScpCisgICAgICAgIG1zZyA9ICgnQSByb3RhdGVkIGxvZyBmb3IgbG9ncm90YXRlX3Rlc3RmaWxlIGlzIGFscmVhZHkgcHJlc2VudCBpbiBsb2dyb3RhdGVfZGlyJykKKyAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChzdGF0dXMsIDEsIG1zZyA9IG1zZykKKworICAgICAgICAjIElmIGxvZ3JvdGF0ZSBmYWlscyB0byByb3RhdGUgdGhlIGxvZywgdmlldyB0aGUgdmVyYm9zZSBvdXRwdXQgb2YgbG9ncm90YXRlIGluc3RlYWQgb2YganVzdCBsaXN0aW5nIHRoZSBmaWxlcyBpbiBvbGRkaXIKKyAgICAgICAgXywgbG9ncm90YXRlX291dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bignbG9ncm90YXRlIC12ZiAvdG1wL2xvZ3JvdGF0ZS10ZXN0Mi5jb25mJykKKyAgICAgICAgc3RhdHVzLCBfID0gc2VsZi50YXJnZXQucnVuKCdmaW5kICRIT01FL2xvZ3JvdGF0ZV9kaXIgLXR5cGUgZiB8IGdyZXAgbG9ncm90YXRlX3Rlc3RmaWxlLjEnKQorICAgICAgICBtc2cgPSAoJ2xvZ3JvdGF0ZSBkaWQgbm90IHN1Y2Nlc3NmdWxseSByb3RhdGUgdGhlIGxvZ3JvdGF0ZV90ZXN0IGxvZy4gT3V0cHV0IGZyb20gbG9ncm90YXRlIC12ZjogXG4lcycgJSAobG9ncm90YXRlX291dHB1dCkpCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2cgPSBtc2cpCisKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvbHRwLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvbHRwLnB5CmluZGV4IDMwNTQ4NjQuLjZkYzVlZjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL2x0cC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9sdHAucHkKQEAgLTU3LDkgKzU3LDkgQEAKIAogY2xhc3MgTHRwVGVzdChMdHBUZXN0QmFzZSk6CiAKLSAgICBsdHBfZ3JvdXBzID0gWyJtYXRoIiwgInN5c2NhbGxzIiwgImRpbyIsICJpbyIsICJtbSIsICJpcGMiLCAic2NoZWQiLCAibnB0bCIsICJwdHkiLCAiY29udGFpbmVycyIsICJjb250cm9sbGVycyIsICJmaWxlY2FwcyIsICJjYXBfYm91bmRzIiwgImZjbnRsLWxvY2t0ZXN0cyIsICJjb25uZWN0b3JzIiwidGltZXJzIiwgImNvbW1hbmRzIiwgIm5ldC5pcHY2X2xpYiIsICJpbnB1dCIsImZzX3Blcm1zX3NpbXBsZSJdCisgICAgbHRwX2dyb3VwcyA9IFsibWF0aCIsICJzeXNjYWxscyIsICJkaW8iLCAiaW8iLCAibW0iLCAiaXBjIiwgInNjaGVkIiwgIm5wdGwiLCAicHR5IiwgImNvbnRhaW5lcnMiLCAiY29udHJvbGxlcnMiLCAiZmlsZWNhcHMiLCAiY2FwX2JvdW5kcyIsICJmY250bC1sb2NrdGVzdHMiLCAiY29ubmVjdG9ycyIsICJjb21tYW5kcyIsICJuZXQuaXB2Nl9saWIiLCAiaW5wdXQiLCJmc19wZXJtc19zaW1wbGUiXQogCi0gICAgbHRwX2ZzID0gWyJmcyIsICJmc3giLCAiZnNfYmluZCIsICJmc19leHQ0Il0KKyAgICBsdHBfZnMgPSBbImZzIiwgImZzeCIsICJmc19iaW5kIl0KICAgICAjIHNraXAga2VybmVsIGNwdWhvdHBsdWcKICAgICBsdHBfa2VybmVsID0gWyJwb3dlcl9tYW5hZ2VtZW50X3Rlc3RzIiwgImh5cGVydGhyZWFkaW5nICIsICJrZXJuZWxfbWlzYyIsICJodWdldGxiIl0KICAgICBsdHBfZ3JvdXBzICs9IGx0cF9mcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvb3BrZy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL29wa2cucHkKaW5kZXggNzUwNzA2MS4uOWNmZWUxYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvb3BrZy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9vcGtnLnB5CkBAIC0yNSw3ICsyNSw5IEBACiAgICAgICAgIGlmIGNscy50Yy50ZFsiTVVMVElMSUJfVkFSSUFOVFMiXToKICAgICAgICAgICAgIGFsbGFyY2hmZWVkID0gY2xzLnRjLnRkWyJUVU5FX1BLR0FSQ0giXQogICAgICAgICBzZXJ2aWNlX3JlcG8gPSBvcy5wYXRoLmpvaW4oY2xzLnRjLnRkWydERVBMT1lfRElSX0lQSyddLCBhbGxhcmNoZmVlZCkKLSAgICAgICAgY2xzLnJlcG9fc2VydmVyID0gSFRUUFNlcnZpY2Uoc2VydmljZV9yZXBvLCBjbHMudGMudGFyZ2V0LnNlcnZlcl9pcCwgbG9nZ2VyPWNscy50Yy5sb2dnZXIpCisgICAgICAgIGNscy5yZXBvX3NlcnZlciA9IEhUVFBTZXJ2aWNlKHNlcnZpY2VfcmVwbywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJzAuMC4wLjAnLCBwb3J0PWNscy50Yy50YXJnZXQuc2VydmVyX3BvcnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlcj1jbHMudGMubG9nZ2VyKQogICAgICAgICBjbHMucmVwb19zZXJ2ZXIuc3RhcnQoKQogCiAgICAgQGNsYXNzbWV0aG9kCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wYXJzZWxvZ3MucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wYXJzZWxvZ3MucHkKaW5kZXggMTUzNDNkNy4uYTE3OTFiNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcGFyc2Vsb2dzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2Nhc2VzL3BhcnNlbG9ncy5weQpAQCAtNTUsMTEgKzU1LDE1IEBACiAgICAgIkZhaWxlZCB0byByZWFkIC92YXIvbGliL25mcy9zdGF0ZC9zdGF0ZTogU3VjY2VzcyIsCiAgICAgImVycm9yIHJldHJ5IHRpbWUtb3V0ID0iLAogICAgICJsb2dpbmQ6IGNhbm5vdCBzZXR1cCBzeXN0ZW1kLWxvZ2luZCBoZWxwZXIgKC02MSksIHVzaW5nIGxlZ2FjeSBmYWxsYmFjayIsCi0gICAgIkVycm9yIGNoYW5naW5nIG5ldCBpbnRlcmZhY2UgbmFtZSAnZXRoMCcgdG8gIgorICAgICJGYWlsZWQgdG8gcmVuYW1lIG5ldHdvcmsgaW50ZXJmYWNlIiwKKyAgICAiRmFpbGVkIHRvIHByb2Nlc3MgZGV2aWNlLCBpZ25vcmluZzogRGV2aWNlIG9yIHJlc291cmNlIGJ1c3kiLAorICAgICJDYW5ub3QgZmluZCBhIG1hcCBmaWxlIiwKKyAgICAiW3JkcmFuZF06IEluaXRpYWxpemF0aW9uIEZhaWxlZCIsCisgICAgIltwdWxzZWF1ZGlvXSBhdXRoa2V5LmM6IEZhaWxlZCB0byBvcGVuIGNvb2tpZSBmaWxlIiwKKyAgICAiW3B1bHNlYXVkaW9dIGF1dGhrZXkuYzogRmFpbGVkIHRvIGxvYWQgYXV0aGVudGljYXRpb24ga2V5IiwKICAgICBdCiAKIHZpZGVvX3JlbGF0ZWQgPSBbCi0gICAgInV2ZXNhZmIiLAogXQogCiB4ODZfY29tbW9uID0gWwpAQCAtODEsMTEgKzg1LDggQEAKICAgICAiZmFpbCB0byBhZGQgTU1DT05GSUcgaW5mb3JtYXRpb24sIGNhbid0IGFjY2VzcyBleHRlbmRlZCBQQ0kgY29uZmlndXJhdGlvbiBzcGFjZSB1bmRlciB0aGlzIGJyaWRnZS4iLAogICAgICJjYW4ndCBjbGFpbSBCQVIgIiwKICAgICAnYW1kX25iOiBDYW5ub3QgZW51bWVyYXRlIEFNRCBub3J0aGJyaWRnZXMnLAotICAgICd1dmVzYWZiOiA1MDAwIG1zIHRhc2sgdGltZW91dCwgaW5maW5pdGVseSB3YWl0aW5nJywKICAgICAndHNjOiBIUEVUL1BNVElNRVIgY2FsaWJyYXRpb24gZmFpbGVkJywKICAgICAibW9kZXNldCgwKTogRmFpbGVkIHRvIGluaXRpYWxpemUgdGhlIERSSTIgZXh0ZW5zaW9uIiwKLSAgICAidXZlc2FmYjogY2Fubm90IHJlc2VydmUgdmlkZW8gbWVtb3J5IGF0IiwKLSAgICAidXZlc2FmYjogcHJvYmUgb2YgdXZlc2FmYi4wIGZhaWxlZCB3aXRoIGVycm9yIiwKICAgICAiZ2xhbW9yIGluaXRpYWxpemF0aW9uIGZhaWxlZCIsCiBdICsgY29tbW9uX2Vycm9ycwogCkBAIC0xMzMsNiArMTM0LDcgQEAKICAgICAgICAgJyhFRSkgU2VydmVyIHRlcm1pbmF0ZWQgd2l0aCBlcnJvciAoMSkuIENsb3NpbmcgbG9nIGZpbGUuJywKICAgICAgICAgJ2RtaTogRmlybXdhcmUgcmVnaXN0cmF0aW9uIGZhaWxlZC4nLAogICAgICAgICAnaXJxOiB0eXBlIG1pc21hdGNoLCBmYWlsZWQgdG8gbWFwIGh3aXJxLTI3IGZvciAvaW50YycsCisgICAgICAgICdsb2dpbmQ6IGZhaWxlZCB0byBnZXQgc2Vzc2lvbiBzZWF0JywKICAgICAgICAgXSArIGNvbW1vbl9lcnJvcnMsCiAgICAgJ2ludGVsLWNvcmUyLTMyJyA6IFsKICAgICAgICAgJ0FDUEk6IE5vIF9CUUMgbWV0aG9kLCBjYW5ub3QgZGV0ZXJtaW5lIGluaXRpYWwgYnJpZ2h0bmVzcycsCkBAIC0xODQsMTEgKzE4Niw2IEBACiAgICAgICAgICdGYWlsZWQgdG8gbWFrZSBFR0wgY29udGV4dCBjdXJyZW50JywKICAgICAgICAgJ2dsYW1vciBpbml0aWFsaXphdGlvbiBmYWlsZWQnLAogICAgICAgICBdICsgY29tbW9uX2Vycm9ycywKLSAgICAnbXBjODMxNWUtcmRiJyA6IFsKLSAgICAgICAgJ29mX2lycV9wYXJzZV9wY2k6IGZhaWxlZCB3aXRoJywKLSAgICAgICAgJ0ZhdGFsIHNlcnZlciBlcnJvcjonLAotICAgICAgICAnU2VydmVyIHRlcm1pbmF0ZWQgd2l0aCBlcnJvcicsCi0gICAgICAgIF0gKyBjb21tb25fZXJyb3JzLAogfQogCiBsb2dfbG9jYXRpb25zID0gWyIvdmFyL2xvZy8iLCIvdmFyL2xvZy9kbWVzZyIsICIvdG1wL2RtZXNnX291dHB1dC5sb2ciXQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvcHRlc3QucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wdGVzdC5weQppbmRleCBkOGQxZTFiLi45OWE0NGYwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wdGVzdC5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy9wdGVzdC5weQpAQCAtMiw2ICsyLDcgQEAKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IE1JVAogIwogCitpbXBvcnQgb3MKIGltcG9ydCB1bml0dGVzdAogaW1wb3J0IHBwcmludAogaW1wb3J0IGRhdGV0aW1lCkBAIC0xOCw3ICsxOSwyMCBAQAogICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKICAgICBAT0VIYXNQYWNrYWdlKFsncHRlc3QtcnVubmVyJ10pCiAgICAgQHVuaXR0ZXN0LmV4cGVjdGVkRmFpbHVyZQotICAgIGRlZiB0ZXN0X3B0ZXN0cnVubmVyKHNlbGYpOgorICAgIGRlZiB0ZXN0X3B0ZXN0cnVubmVyX2V4cGVjdGZhaWwoc2VsZik6CisgICAgICAgIGlmIG5vdCBzZWxmLnRkLmdldCgnUFRFU1RfRVhQRUNUX0ZBSUxVUkUnKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ0Nhbm5vdCBydW4gcHRlc3RzIHdpdGggQGV4cGVjdGVkRmFpbHVyZSBhcyBwdGVzdHMgYXJlIHJlcXVpcmVkIHRvIHBhc3MnKQorICAgICAgICBzZWxmLmRvX3B0ZXN0cnVubmVyKCkKKworICAgIEBza2lwSWZOb3RGZWF0dXJlKCdwdGVzdCcsICdUZXN0IHJlcXVpcmVzIHB0ZXN0IHRvIGJlIGluIERJU1RST19GRUFUVVJFUycpCisgICAgQE9FVGVzdERlcGVuZHMoWydzc2guU1NIVGVzdC50ZXN0X3NzaCddKQorICAgIEBPRUhhc1BhY2thZ2UoWydwdGVzdC1ydW5uZXInXSkKKyAgICBkZWYgdGVzdF9wdGVzdHJ1bm5lcl9leHBlY3RzdWNjZXNzKHNlbGYpOgorICAgICAgICBpZiBzZWxmLnRkLmdldCgnUFRFU1RfRVhQRUNUX0ZBSUxVUkUnKToKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ0Nhbm5vdCBydW4gcHRlc3RzIHdpdGhvdXQgQGV4cGVjdGVkRmFpbHVyZSBhcyBwdGVzdHMgYXJlIGV4cGVjdGVkIHRvIGZhaWwnKQorICAgICAgICBzZWxmLmRvX3B0ZXN0cnVubmVyKCkKKworICAgIGRlZiBkb19wdGVzdHJ1bm5lcihzZWxmKToKICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oJ3doaWNoIHB0ZXN0LXJ1bm5lcicsIDApCiAgICAgICAgIGlmIHN0YXR1cyAhPSAwOgogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgiTm8gLXB0ZXN0IHBhY2thZ2VzIGFyZSBpbnN0YWxsZWQgaW4gdGhlIGltYWdlIikKQEAgLTY3LDggKzgxLDEzIEBACiAgICAgICAgICAgICAgICAgZXh0cmFzW3Rlc3RuYW1lXSA9IHsnc3RhdHVzJzogcmVzdWx0fQogCiAgICAgICAgIGZhaWxlZF90ZXN0cyA9IHt9CisKKyAgICAgICAgZm9yIHNlY3Rpb24gaW4gc2VjdGlvbnM6CisgICAgICAgICAgICBpZiAnZXhpdGNvZGUnIGluIHNlY3Rpb25zW3NlY3Rpb25dLmtleXMoKToKKyAgICAgICAgICAgICAgICBmYWlsZWRfdGVzdHNbc2VjdGlvbl0gPSBzZWN0aW9uc1tzZWN0aW9uXVsibG9nIl0KKwogICAgICAgICBmb3Igc2VjdGlvbiBpbiByZXN1bHRzOgotICAgICAgICAgICAgZmFpbGVkX3Rlc3RjYXNlcyA9IFsgIl8iLmpvaW4odGVzdC50cmFuc2xhdGUodHJhbnMpLnNwbGl0KCkpIGZvciB0ZXN0IGluIHJlc3VsdHNbc2VjdGlvbl0gaWYgcmVzdWx0c1tzZWN0aW9uXVt0ZXN0XSA9PSAnZmFpbCcgXQorICAgICAgICAgICAgZmFpbGVkX3Rlc3RjYXNlcyA9IFsgIl8iLmpvaW4odGVzdC50cmFuc2xhdGUodHJhbnMpLnNwbGl0KCkpIGZvciB0ZXN0IGluIHJlc3VsdHNbc2VjdGlvbl0gaWYgcmVzdWx0c1tzZWN0aW9uXVt0ZXN0XSA9PSAnRkFJTEVEJyBdCiAgICAgICAgICAgICBpZiBmYWlsZWRfdGVzdGNhc2VzOgogICAgICAgICAgICAgICAgIGZhaWxlZF90ZXN0c1tzZWN0aW9uXSA9IGZhaWxlZF90ZXN0Y2FzZXMKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvd2VzdG9uLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY2FzZXMvd2VzdG9uLnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjMjllY2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jYXNlcy93ZXN0b24ucHkKQEAgLTAsMCArMSw2OSBAQAorIworIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisjCisKK2Zyb20gb2VxYS5ydW50aW1lLmNhc2UgaW1wb3J0IE9FUnVudGltZVRlc3RDYXNlCitmcm9tIG9lcWEuY29yZS5kZWNvcmF0b3IuZGVwZW5kcyBpbXBvcnQgT0VUZXN0RGVwZW5kcworZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRhdGEgaW1wb3J0IHNraXBJZk5vdEZlYXR1cmUKK2Zyb20gb2VxYS5ydW50aW1lLmRlY29yYXRvci5wYWNrYWdlIGltcG9ydCBPRUhhc1BhY2thZ2UKK2ltcG9ydCB0aHJlYWRpbmcKK2ltcG9ydCB0aW1lCisKK2NsYXNzIFdlc3RvblRlc3QoT0VSdW50aW1lVGVzdENhc2UpOgorICAgIHdlc3Rvbl9sb2dfZmlsZSA9ICcvdG1wL3dlc3Rvbi5sb2cnCisKKyAgICBAY2xhc3NtZXRob2QKKyAgICBkZWYgdGVhckRvd25DbGFzcyhjbHMpOgorICAgICAgICBjbHMudGMudGFyZ2V0LnJ1bigncm0gJXMnICUgY2xzLndlc3Rvbl9sb2dfZmlsZSkKKworICAgIEBPRVRlc3REZXBlbmRzKFsnc3NoLlNTSFRlc3QudGVzdF9zc2gnXSkKKyAgICBAT0VIYXNQYWNrYWdlKFsnd2VzdG9uJ10pCisgICAgZGVmIHRlc3Rfd2VzdG9uX3J1bm5pbmcoc2VsZik6CisgICAgICAgIGNtZCA9JyVzIHwgZ3JlcCBbd11lc3Rvbi1kZXNrdG9wLXNoZWxsJyAlIHNlbGYudGMudGFyZ2V0X2NtZHNbJ3BzJ10KKyAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBzZWxmLnRhcmdldC5ydW4oY21kKQorICAgICAgICBtc2cgPSAoJ1dlc3RvbiBkb2VzIG5vdCBhcHBlYXIgdG8gYmUgcnVubmluZyAlcycgJQorICAgICAgICAgICAgICBzZWxmLnRhcmdldC5ydW4oc2VsZi50Yy50YXJnZXRfY21kc1sncHMnXSlbMV0pCisgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc3RhdHVzLCAwLCBtc2c9bXNnKQorCisgICAgZGVmIGdldF9wcm9jZXNzZXNfb2Yoc2VsZiwgdGFyZ2V0LCBlcnJvcl9tc2cpOgorICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHNlbGYudGFyZ2V0LnJ1bigncGlkb2YgJXMnICUgdGFyZ2V0KQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnPSdSZXRyaWV2ZSAlcyAoJXMpIHByb2Nlc3NlcyBlcnJvcjogJXMnICUgKHRhcmdldCwgZXJyb3JfbXNnLCBvdXRwdXQpKQorICAgICAgICByZXR1cm4gb3V0cHV0LnNwbGl0KCIgIikKKworICAgIGRlZiBnZXRfd2VzdG9uX2NvbW1hbmQoc2VsZiwgY21kKToKKyAgICAgICAgcmV0dXJuICdleHBvcnQgWERHX1JVTlRJTUVfRElSPS9ydW4vdXNlci8wOyBleHBvcnQgV0FZTEFORF9ESVNQTEFZPXdheWxhbmQtMDsgJXMnICUgY21kCisKKyAgICBkZWYgcnVuX3dlc3Rvbl9pbml0KHNlbGYpOgorICAgICAgICBzZWxmLnRhcmdldC5ydW4oc2VsZi5nZXRfd2VzdG9uX2NvbW1hbmQoJ3dlc3RvbiAtLWxvZz0lcycgJSBzZWxmLndlc3Rvbl9sb2dfZmlsZSkpCisKKyAgICBkZWYgZ2V0X25ld193YXlsYW5kX3Byb2Nlc3NlcyhzZWxmLCBleGlzdGluZ193bF9wcm9jZXNzZXMpOgorICAgICAgICB0cnlfY250ID0gMAorICAgICAgICB3aGlsZSB0cnlfY250IDwgNToKKyAgICAgICAgICAgIHRpbWUuc2xlZXAoNSArIDUqdHJ5X2NudCkKKyAgICAgICAgICAgIHRyeV9jbnQgKz0gMQorICAgICAgICAgICAgd2xfcHJvY2Vzc2VzID0gc2VsZi5nZXRfcHJvY2Vzc2VzX29mKCd3ZXN0b24tZGVza3RvcC1zaGVsbCcsICdleGlzdGluZyBhbmQgbmV3JykKKyAgICAgICAgICAgIG5ld193bF9wcm9jZXNzZXMgPSBbeCBmb3IgeCBpbiB3bF9wcm9jZXNzZXMgaWYgeCBub3QgaW4gZXhpc3Rpbmdfd2xfcHJvY2Vzc2VzXQorICAgICAgICAgICAgaWYgbmV3X3dsX3Byb2Nlc3NlczoKKyAgICAgICAgICAgICAgICByZXR1cm4gbmV3X3dsX3Byb2Nlc3NlcywgdHJ5X2NudAorCisgICAgICAgIHJldHVybiBuZXdfd2xfcHJvY2Vzc2VzLCB0cnlfY250CisKKyAgICBAT0VIYXNQYWNrYWdlKFsnd2VzdG9uJ10pCisgICAgZGVmIHRlc3Rfd2VzdG9uX2luZm8oc2VsZik6CisgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gc2VsZi50YXJnZXQucnVuKHNlbGYuZ2V0X3dlc3Rvbl9jb21tYW5kKCd3ZXN0b24taW5mbycpKQorICAgICAgICBzZWxmLmFzc2VydEVxdWFsKHN0YXR1cywgMCwgbXNnPSd3ZXN0b24taW5mbyBlcnJvcjogJXMnICUgb3V0cHV0KQorCisgICAgQE9FSGFzUGFja2FnZShbJ3dlc3RvbiddKQorICAgIGRlZiB0ZXN0X3dlc3Rvbl9jYW5faW5pdGlhbGl6ZV9uZXdfd2F5bGFuZF9jb21wb3NpdG9yKHNlbGYpOgorICAgICAgICBleGlzdGluZ193bF9wcm9jZXNzZXMgPSBzZWxmLmdldF9wcm9jZXNzZXNfb2YoJ3dlc3Rvbi1kZXNrdG9wLXNoZWxsJywgJ2V4aXN0aW5nJykKKyAgICAgICAgZXhpc3Rpbmdfd2VzdG9uX3Byb2Nlc3NlcyA9IHNlbGYuZ2V0X3Byb2Nlc3Nlc19vZignd2VzdG9uJywgJ2V4aXN0aW5nJykKKworICAgICAgICB3ZXN0b25fdGhyZWFkID0gdGhyZWFkaW5nLlRocmVhZCh0YXJnZXQ9c2VsZi5ydW5fd2VzdG9uX2luaXQpCisgICAgICAgIHdlc3Rvbl90aHJlYWQuc3RhcnQoKQorICAgICAgICBuZXdfd2xfcHJvY2Vzc2VzLCB0cnlfY250ID0gc2VsZi5nZXRfbmV3X3dheWxhbmRfcHJvY2Vzc2VzKGV4aXN0aW5nX3dsX3Byb2Nlc3NlcykKKyAgICAgICAgZXhpc3RpbmdfYW5kX25ld193ZXN0b25fcHJvY2Vzc2VzID0gc2VsZi5nZXRfcHJvY2Vzc2VzX29mKCd3ZXN0b24nLCAnZXhpc3RpbmcgYW5kIG5ldycpCisgICAgICAgIG5ld193ZXN0b25fcHJvY2Vzc2VzID0gW3ggZm9yIHggaW4gZXhpc3RpbmdfYW5kX25ld193ZXN0b25fcHJvY2Vzc2VzIGlmIHggbm90IGluIGV4aXN0aW5nX3dlc3Rvbl9wcm9jZXNzZXNdCisgICAgICAgIGZvciB3IGluIG5ld193ZXN0b25fcHJvY2Vzc2VzOgorICAgICAgICAgICAgc2VsZi50YXJnZXQucnVuKCdraWxsIC05ICVzJyAlIHcpCisgICAgICAgIF9fLCB3ZXN0b25fbG9nID0gc2VsZi50YXJnZXQucnVuKCdjYXQgJXMnICUgc2VsZi53ZXN0b25fbG9nX2ZpbGUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShuZXdfd2xfcHJvY2Vzc2VzLCBtc2c9J0NvdWxkIG5vdCBnZXQgbmV3IHdlc3Rvbi1kZXNrdG9wLXNoZWxsIHByb2Nlc3NlcyAoJXMsIHRyeV9jbnQ6JXMpIHdlc3RvbiBsb2c6ICVzJyAlIChuZXdfd2xfcHJvY2Vzc2VzLCB0cnlfY250LCB3ZXN0b25fbG9nKSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2NvbnRleHQucHkgYi9wb2t5L21ldGEvbGliL29lcWEvcnVudGltZS9jb250ZXh0LnB5CmluZGV4IGVmNzM4YTMuLjM4MjZmMjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9ydW50aW1lL2NvbnRleHQucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3J1bnRpbWUvY29udGV4dC5weQpAQCAtNDcsNiArNDcsNyBAQAogICAgIGRlZmF1bHRfZGF0YSA9IE5vbmUKICAgICBkZWZhdWx0X3Rlc3RfZGF0YSA9ICdkYXRhL3Rlc3RkYXRhLmpzb24nCiAgICAgZGVmYXVsdF90ZXN0cyA9ICcnCisgICAgZGVmYXVsdF9qc29uX3Jlc3VsdF9kaXIgPSAnJXMtcmVzdWx0cycgJSBuYW1lCiAKICAgICBkZWZhdWx0X3RhcmdldF90eXBlID0gJ3NpbXBsZXJlbW90ZScKICAgICBkZWZhdWx0X21hbmlmZXN0ID0gJ2RhdGEvbWFuaWZlc3QnCkBAIC03Nyw3ICs3OCw3IEBACiAKICAgICAgICAgcnVudGltZV9ncm91cC5hZGRfYXJndW1lbnQoJy0tcGFja2FnZXMtbWFuaWZlc3QnLCBhY3Rpb249J3N0b3JlJywKICAgICAgICAgICAgICAgICBkZWZhdWx0PXNlbGYuZGVmYXVsdF9tYW5pZmVzdCwKLSAgICAgICAgICAgICAgICBoZWxwPSJQYWNrYWdlIG1hbmlmZXN0IG9mIHRoZSBpbWFnZSB1bmRlciB0ZXN0aSwgZGVmYXVsdDogJXMiIFwKKyAgICAgICAgICAgICAgICBoZWxwPSJQYWNrYWdlIG1hbmlmZXN0IG9mIHRoZSBpbWFnZSB1bmRlciB0ZXN0LCBkZWZhdWx0OiAlcyIgXAogICAgICAgICAgICAgICAgICUgc2VsZi5kZWZhdWx0X21hbmlmZXN0KQogCiAgICAgICAgIHJ1bnRpbWVfZ3JvdXAuYWRkX2FyZ3VtZW50KCctLWV4dHJhY3QtZGlyJywgYWN0aW9uPSdzdG9yZScsCkBAIC05OCw2ICs5OSwxMiBAQAogICAgICAgICAgICAgICAgIHRhcmdldF9pcCA9IHRhcmdldF9pcF9wb3J0WzBdCiAgICAgICAgICAgICAgICAga3dhcmdzWydwb3J0J10gPSB0YXJnZXRfaXBfcG9ydFsxXQogCisgICAgICAgIGlmIHNlcnZlcl9pcDoKKyAgICAgICAgICAgIHNlcnZlcl9pcF9wb3J0ID0gc2VydmVyX2lwLnNwbGl0KCc6JykKKyAgICAgICAgICAgIGlmIGxlbihzZXJ2ZXJfaXBfcG9ydCkgPT0gMjoKKyAgICAgICAgICAgICAgICBzZXJ2ZXJfaXAgPSBzZXJ2ZXJfaXBfcG9ydFswXQorICAgICAgICAgICAgICAgIGt3YXJnc1snc2VydmVyX3BvcnQnXSA9IGludChzZXJ2ZXJfaXBfcG9ydFsxXSkKKwogICAgICAgICBpZiB0YXJnZXRfdHlwZSA9PSAnc2ltcGxlcmVtb3RlJzoKICAgICAgICAgICAgIHRhcmdldCA9IE9FU1NIVGFyZ2V0KGxvZ2dlciwgdGFyZ2V0X2lwLCBzZXJ2ZXJfaXAsICoqa3dhcmdzKQogICAgICAgICBlbGlmIHRhcmdldF90eXBlID09ICdxZW11JzoKQEAgLTE3OCw3ICsxODUsNyBAQAogICAgICAgICBleGNlcHQ6CiAgICAgICAgICAgICBvYmogPSBOb25lCiAgICAgICAgIHJldHVybiBvYmoKLSAgICAgICAgCisKICAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIHJlYWRQYWNrYWdlc01hbmlmZXN0KG1hbmlmZXN0KToKICAgICAgICAgaWYgbm90IG1hbmlmZXN0IG9yIG5vdCBvcy5wYXRoLmV4aXN0cyhtYW5pZmVzdCk6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2RrL2Nhc2VzL2J1aWxkY3Bpby5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYnVpbGRjcGlvLnB5CmluZGV4IDBhNWU2OGQuLjkwMmU5M2YgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYnVpbGRjcGlvLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY2FzZXMvYnVpbGRjcGlvLnB5CkBAIC0xNywxMCArMTcsMTAgQEAKICAgICAiIiIKICAgICBkZWYgdGVzdF9jcGlvKHNlbGYpOgogICAgICAgICB3aXRoIHRlbXBmaWxlLlRlbXBvcmFyeURpcmVjdG9yeShwcmVmaXg9ImNwaW8tIiwgZGlyPXNlbGYudGMuc2RrX2RpcikgYXMgdGVzdGRpcjoKLSAgICAgICAgICAgIHRhcmJhbGwgPSBzZWxmLmZldGNoKHRlc3RkaXIsIHNlbGYudGRbIkRMX0RJUiJdLCAiaHR0cHM6Ly9mdHAuZ251Lm9yZy9nbnUvY3Bpby9jcGlvLTIuMTIudGFyLmd6IikKKyAgICAgICAgICAgIHRhcmJhbGwgPSBzZWxmLmZldGNoKHRlc3RkaXIsIHNlbGYudGRbIkRMX0RJUiJdLCAiaHR0cHM6Ly9mdHAuZ251Lm9yZy9nbnUvY3Bpby9jcGlvLTIuMTMudGFyLmd6IikKIAogICAgICAgICAgICAgZGlycyA9IHt9Ci0gICAgICAgICAgICBkaXJzWyJzb3VyY2UiXSA9IG9zLnBhdGguam9pbih0ZXN0ZGlyLCAiY3Bpby0yLjEyIikKKyAgICAgICAgICAgIGRpcnNbInNvdXJjZSJdID0gb3MucGF0aC5qb2luKHRlc3RkaXIsICJjcGlvLTIuMTMiKQogICAgICAgICAgICAgZGlyc1siYnVpbGQiXSA9IG9zLnBhdGguam9pbih0ZXN0ZGlyLCAiYnVpbGQiKQogICAgICAgICAgICAgZGlyc1siaW5zdGFsbCJdID0gb3MucGF0aC5qb2luKHRlc3RkaXIsICJpbnN0YWxsIikKIApAQCAtMjgsNyArMjgsNyBAQAogICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNkaXIoZGlyc1sic291cmNlIl0pKQogICAgICAgICAgICAgb3MubWFrZWRpcnMoZGlyc1siYnVpbGQiXSkKIAotICAgICAgICAgICAgc2VsZi5fcnVuKCJjZCB7YnVpbGR9ICYmIHtzb3VyY2V9L2NvbmZpZ3VyZSAkQ09ORklHVVJFX0ZMQUdTIi5mb3JtYXQoKipkaXJzKSkKKyAgICAgICAgICAgIHNlbGYuX3J1bigiY2Qge2J1aWxkfSAmJiB7c291cmNlfS9jb25maWd1cmUgLS1kaXNhYmxlLW1haW50YWluZXItbW9kZSAkQ09ORklHVVJFX0ZMQUdTIi5mb3JtYXQoKipkaXJzKSkKICAgICAgICAgICAgIHNlbGYuX3J1bigiY2Qge2J1aWxkfSAmJiBtYWtlIC1qIi5mb3JtYXQoKipkaXJzKSkKICAgICAgICAgICAgIHNlbGYuX3J1bigiY2Qge2J1aWxkfSAmJiBtYWtlIGluc3RhbGwgREVTVERJUj17aW5zdGFsbH0iLmZvcm1hdCgqKmRpcnMpKQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2RrL2NvbnRleHQucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2RrL2NvbnRleHQucHkKaW5kZXggMDllNzdjMS4uMDFjMzhjMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3Nkay9jb250ZXh0LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGsvY29udGV4dC5weQpAQCAtMTM2LDcgKzEzNiw3IEBACiAgICAgICAgIHNka19lbnZzID0gT0VTREtUZXN0Q29udGV4dEV4ZWN1dG9yLl9nZXRfc2RrX2Vudmlyb25zKGFyZ3Muc2RrX2RpcikKICAgICAgICAgaWYgbm90IHNka19lbnZzOgogICAgICAgICAgICAgcmFpc2UgYXJncGFyc2Vfb2UuQXJndW1lbnRVc2FnZUVycm9yKCJObyBhdmFpbGFibGUgU0RLICJcCi0gICAgICAgICAgICAgICAgICAgImVudmlyb21lbnRzIGZvdW5kIGF0ICVzIiAlIGFyZ3Muc2RrX2Rpciwgc2VsZi5uYW1lKQorICAgICAgICAgICAgICAgICAgICJlbnZpcm9ubWVudHMgZm91bmQgYXQgJXMiICUgYXJncy5zZGtfZGlyLCBzZWxmLm5hbWUpCiAKICAgICAgICAgaWYgYXJncy5saXN0X3Nka19lbnY6CiAgICAgICAgICAgICBzZWxmLl9kaXNwbGF5X3Nka19lbnZzKGxvZ2dlci5pbmZvLCBhcmdzLCBzZGtfZW52cykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvdGVzdHNkay5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZGtleHQvdGVzdHNkay5weQppbmRleCA3ODViNWRkLi5jNWM0NmRmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2RrZXh0L3Rlc3RzZGsucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3Nka2V4dC90ZXN0c2RrLnB5CkBAIC0yNSwxMSArMjUsOCBAQAogCiAgICAgICAgIHN1YnByb2Nlc3N0d2Vhay5lcnJvcnNfaGF2ZV9vdXRwdXQoKQogCi0gICAgICAgICMgZXh0ZW5zaWJsZSBzZGsgY2FuIGJlIGNvbnRhbWluYXRlZCBpZiBuYXRpdmUgcHJvZ3JhbXMgYXJlCi0gICAgICAgICMgaW4gUEFUSCwgaS5lLiB1c2UgcGVybC1uYXRpdmUgaW5zdGVhZCBvZiBlU0RLIG9uZS4KLSAgICAgICAgcGF0aHNfdG9fYXZvaWQgPSBbZC5nZXRWYXIoJ1NUQUdJTkdfRElSJyksCi0gICAgICAgICAgICAgICAgICAgICAgICBkLmdldFZhcignQkFTRV9XT1JLRElSJyldCi0gICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IGF2b2lkX3BhdGhzX2luX2Vudmlyb24ocGF0aHNfdG9fYXZvaWQpCisgICAgICAgICMgV2UgbmVlZCB0aGUgb3JpZ2luYWwgUEFUSCBmb3IgdGVzdGluZyB0aGUgZVNESywgbm90IHdpdGggb3VyIG1hbmlwdWxhdGlvbnMKKyAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gZC5nZXRWYXIoIkJCX09SSUdFTlYiLCBGYWxzZSkuZ2V0VmFyKCJQQVRIIikKIAogICAgICAgICB0Y25hbWUgPSBkLmV4cGFuZCgiJHtTREtfREVQTE9ZfS8ke1RPT0xDSEFJTkVYVF9PVVRQVVROQU1FfS5zaCIpCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyh0Y25hbWUpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2UucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZS5weQppbmRleCBhYzMzMDhkLi5kY2FkNGY3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZS5weQpAQCAtNiw3ICs2LDYgQEAKIAogaW1wb3J0IHN5cwogaW1wb3J0IG9zCi1pbXBvcnQgc2h1dGlsCiBpbXBvcnQgZ2xvYgogaW1wb3J0IGVycm5vCiBmcm9tIHVuaXR0ZXN0LnV0aWwgaW1wb3J0IHNhZmVfcmVwcgpAQCAtMzAsOSArMjksNyBAQAogICAgICAgICBjbHMuYnVpbGRkaXIgPSBjbHMudGMuY29uZmlnX3BhdGhzWydidWlsZGRpciddCiAKICAgICAgICAgY2xzLmxvY2FsY29uZl9wYXRoID0gY2xzLnRjLmNvbmZpZ19wYXRoc1snbG9jYWxjb25mJ10KLSAgICAgICAgY2xzLmxvY2FsY29uZl9iYWNrdXAgPSBjbHMudGMuY29uZmlnX3BhdGhzWydsb2NhbGNvbmZfY2xhc3NfYmFja3VwJ10KICAgICAgICAgY2xzLmxvY2FsX2JibGF5ZXJzX3BhdGggPSBjbHMudGMuY29uZmlnX3BhdGhzWydiYmxheWVycyddCi0gICAgICAgIGNscy5sb2NhbF9iYmxheWVyc19iYWNrdXAgPSBjbHMudGMuY29uZmlnX3BhdGhzWydiYmxheWVyc19jbGFzc19iYWNrdXAnXQogCiAgICAgICAgIGNscy50ZXN0aW5jX3BhdGggPSBvcy5wYXRoLmpvaW4oY2xzLnRjLmNvbmZpZ19wYXRoc1snYnVpbGRkaXInXSwKICAgICAgICAgICAgICAgICAiY29uZi9zZWxmdGVzdC5pbmMiKQpAQCAtNDMsOCArNDAsNyBAQAogCiAgICAgICAgIGNscy5fdHJhY2tfZm9yX2NsZWFudXAgPSBbCiAgICAgICAgICAgICBjbHMudGVzdGluY19wYXRoLCBjbHMudGVzdGluY19iYmxheWVyc19wYXRoLAotICAgICAgICAgICAgY2xzLm1hY2hpbmVpbmNfcGF0aCwgY2xzLmxvY2FsY29uZl9iYWNrdXAsCi0gICAgICAgICAgICBjbHMubG9jYWxfYmJsYXllcnNfYmFja3VwXQorICAgICAgICAgICAgY2xzLm1hY2hpbmVpbmNfcGF0aF0KIAogICAgICAgICBjbHMuYWRkX2luY2x1ZGUoKQogCkBAIC0xMDIsMzAgKzk4LDYgQEAKICAgICBkZWYgc2V0VXAoc2VsZik6CiAgICAgICAgIHN1cGVyKE9FU2VsZnRlc3RUZXN0Q2FzZSwgc2VsZikuc2V0VXAoKQogICAgICAgICBvcy5jaGRpcihzZWxmLmJ1aWxkZGlyKQotICAgICAgICAjIENoZWNrIGlmIGxvY2FsLmNvbmYgb3IgYmJsYXllcnMuY29uZiBmaWxlcyBiYWNrdXAgZXhpc3RzCi0gICAgICAgICMgZnJvbSBhIHByZXZpb3VzIGZhaWxlZCB0ZXN0IGFuZCByZXN0b3JlIHRoZW0KLSAgICAgICAgaWYgb3MucGF0aC5pc2ZpbGUoc2VsZi5sb2NhbGNvbmZfYmFja3VwKSBvciBvcy5wYXRoLmlzZmlsZSgKLSAgICAgICAgICAgICAgICBzZWxmLmxvY2FsX2JibGF5ZXJzX2JhY2t1cCk6Ci0gICAgICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiXAotRm91bmQgYSBsb2NhbC5jb25mIGFuZC9vciBiYmxheWVycy5jb25mIGJhY2t1cCBmcm9tIGEgcHJldmlvdXNseSBhYm9ydGVkIHRlc3QuXAotUmVzdG9yaW5nIHRoZXNlIGZpbGVzIG5vdywgYnV0IHRlc3RzIHNob3VsZCBiZSByZS1leGVjdXRlZCBmcm9tIGEgY2xlYW4gZW52aXJvbm1lbnRcCi10byBlbnN1cmUgYWNjdXJhdGUgcmVzdWx0cy4iKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLmxvY2FsY29uZl9iYWNrdXAsIHNlbGYubG9jYWxjb25mX3BhdGgpCi0gICAgICAgICAgICBleGNlcHQgT1NFcnJvciBhcyBlOgotICAgICAgICAgICAgICAgIGlmIGUuZXJybm8gIT0gZXJybm8uRU5PRU5UOgotICAgICAgICAgICAgICAgICAgICByYWlzZQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLmxvY2FsX2JibGF5ZXJzX2JhY2t1cCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5sb2NhbF9iYmxheWVyc19wYXRoKQotICAgICAgICAgICAgZXhjZXB0IE9TRXJyb3IgYXMgZToKLSAgICAgICAgICAgICAgICBpZiBlLmVycm5vICE9IGVycm5vLkVOT0VOVDoKLSAgICAgICAgICAgICAgICAgICAgcmFpc2UKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgICMgYmFja3VwIGxvY2FsLmNvbmYgYW5kIGJibGF5ZXJzLmNvbmYKLSAgICAgICAgICAgIHNodXRpbC5jb3B5ZmlsZShzZWxmLmxvY2FsY29uZl9wYXRoLCBzZWxmLmxvY2FsY29uZl9iYWNrdXApCi0gICAgICAgICAgICBzaHV0aWwuY29weWZpbGUoc2VsZi5sb2NhbF9iYmxheWVyc19wYXRoLCBzZWxmLmxvY2FsX2JibGF5ZXJzX2JhY2t1cCkKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJDcmVhdGluZyBsb2NhbC5jb25mIGFuZCBiYmxheWVycy5jb25mIGJhY2t1cHMuIikKICAgICAgICAgIyB3ZSBkb24ndCBrbm93IHdoYXQgdGhlIHByZXZpb3VzIHRlc3QgbGVmdCBhcm91bmQgaW4gY29uZmlnIG9yIGluYyBmaWxlcwogICAgICAgICAjIGlmIGl0IGZhaWxlZCBzbyB3ZSBuZWVkIGEgZnJlc2ggc3RhcnQKICAgICAgICAgdHJ5OgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2FyY2hpdmVyLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2FyY2hpdmVyLnB5CmluZGV4IGY4NjcyZjguLjYwNmVhYWIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9hcmNoaXZlci5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvYXJjaGl2ZXIucHkKQEAgLTEyOSwzICsxMjksMTI4IEBACiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQogCiAgICAgICAgIGJpdGJha2UoJy1uIGNvcmUtaW1hZ2Utc2F0bycpCisKKyAgICBkZWYgX3Rlc3RfYXJjaGl2ZXJfbW9kZShzZWxmLCBtb2RlLCB0YXJnZXRfZmlsZV9uYW1lLCBleHRyYV9jb25maWc9Tm9uZSk6CisgICAgICAgIHRhcmdldCA9ICJzZWxmdGVzdC1lZCIKKworICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJhcmNoaXZlciJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gICdBUkNISVZFUl9NT0RFW3NyY10gPSAiJXMiXG4nICUgKG1vZGUpCisgICAgICAgIGlmIGV4dHJhX2NvbmZpZzoKKyAgICAgICAgICAgIGZlYXR1cmVzICs9IGV4dHJhX2NvbmZpZworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKworICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiAlcycgJSAodGFyZ2V0KSkKKyAgICAgICAgYml0YmFrZSgnLWMgZGVwbG95X2FyY2hpdmVzICVzJyAlICh0YXJnZXQpKQorCisgICAgICAgIGJiX3ZhcnMgPSBnZXRfYmJfdmFycyhbJ0RFUExPWV9ESVJfU1JDJywgJ1RBUkdFVF9TWVMnXSkKKyAgICAgICAgZ2xvYl9zdHIgPSBvcy5wYXRoLmpvaW4oYmJfdmFyc1snREVQTE9ZX0RJUl9TUkMnXSwgYmJfdmFyc1snVEFSR0VUX1NZUyddLCAnJXMtKicgJSAodGFyZ2V0KSkKKyAgICAgICAgZ2xvYl9yZXN1bHQgPSBnbG9iLmdsb2IoZ2xvYl9zdHIpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnbG9iX3Jlc3VsdCwgJ01pc3NpbmcgYXJjaGl2ZXIgZGlyZWN0b3J5IGZvciAlcycgJSAodGFyZ2V0KSkKKworICAgICAgICBhcmNoaXZlX3BhdGggPSBvcy5wYXRoLmpvaW4oZ2xvYl9yZXN1bHRbMF0sIHRhcmdldF9maWxlX25hbWUpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhhcmNoaXZlX3BhdGgpLCAnTWlzc2luZyBhcmNoaXZlIGZpbGUgJXMnICUgKHRhcmdldF9maWxlX25hbWUpKQorCisgICAgZGVmIHRlc3RfYXJjaGl2ZXJfbW9kZV9vcmlnaW5hbChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgYXJjaGl2ZXIgd29ya3Mgd2l0aCBgQVJDSElWRVJfTU9ERVtzcmNdID0gIm9yaWdpbmFsImAuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX3Rlc3RfYXJjaGl2ZXJfbW9kZSgnb3JpZ2luYWwnLCAnZWQtMS4xNC4xLnRhci5seicpCisKKyAgICBkZWYgdGVzdF9hcmNoaXZlcl9tb2RlX3BhdGNoZWQoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIGFyY2hpdmVyIHdvcmtzIHdpdGggYEFSQ0hJVkVSX01PREVbc3JjXSA9ICJwYXRjaGVkImAuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX3Rlc3RfYXJjaGl2ZXJfbW9kZSgncGF0Y2hlZCcsICdzZWxmdGVzdC1lZC0xLjE0LjEtcjAtcGF0Y2hlZC50YXIuZ3onKQorCisgICAgZGVmIHRlc3RfYXJjaGl2ZXJfbW9kZV9jb25maWd1cmVkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBhcmNoaXZlciB3b3JrcyB3aXRoIGBBUkNISVZFUl9NT0RFW3NyY10gPSAiY29uZmlndXJlZCJgLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl90ZXN0X2FyY2hpdmVyX21vZGUoJ2NvbmZpZ3VyZWQnLCAnc2VsZnRlc3QtZWQtMS4xNC4xLXIwLWNvbmZpZ3VyZWQudGFyLmd6JykKKworICAgIGRlZiB0ZXN0X2FyY2hpdmVyX21vZGVfcmVjaXBlKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBhcmNoaXZlciB3b3JrcyB3aXRoIGBBUkNISVZFUl9NT0RFW3JlY2lwZV0gPSAiMSJgLgorICAgICAgICAiIiIKKworICAgICAgICBzZWxmLl90ZXN0X2FyY2hpdmVyX21vZGUoJ3BhdGNoZWQnLCAnc2VsZnRlc3QtZWQtMS4xNC4xLXIwLXJlY2lwZS50YXIuZ3onLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FSQ0hJVkVSX01PREVbcmVjaXBlXSA9ICIxIlxuJykKKworICAgIGRlZiB0ZXN0X2FyY2hpdmVyX21vZGVfZGlmZihzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFRlc3QgdGhhdCB0aGUgYXJjaGl2ZXIgd29ya3Mgd2l0aCBgQVJDSElWRVJfTU9ERVtkaWZmXSA9ICIxImAuCisgICAgICAgIEV4Y2x1c2lvbnMgY29udHJvbGxlZCBieSBgQVJDSElWRVJfTU9ERVtkaWZmLWV4Y2x1ZGVdYCBhcmUgbm90IHlldCB0ZXN0ZWQuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX3Rlc3RfYXJjaGl2ZXJfbW9kZSgncGF0Y2hlZCcsICdzZWxmdGVzdC1lZC0xLjE0LjEtcjAtZGlmZi5neicsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnQVJDSElWRVJfTU9ERVtkaWZmXSA9ICIxIlxuJykKKworICAgIGRlZiB0ZXN0X2FyY2hpdmVyX21vZGVfZHVtcGRhdGEoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBUZXN0IHRoYXQgdGhlIGFyY2hpdmVyIHdvcmtzIHdpdGggYEFSQ0hJVkVSX01PREVbZHVtcGRhdGFdID0gIjEiYC4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi5fdGVzdF9hcmNoaXZlcl9tb2RlKCdwYXRjaGVkJywgJ3NlbGZ0ZXN0LWVkLTEuMTQuMS1yMC1zaG93ZGF0YS5kdW1wJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdBUkNISVZFUl9NT0RFW2R1bXBkYXRhXSA9ICIxIlxuJykKKworICAgIGRlZiB0ZXN0X2FyY2hpdmVyX21vZGVfbWlycm9yKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBhcmNoaXZlciB3b3JrcyB3aXRoIGBBUkNISVZFUl9NT0RFW3NyY10gPSAibWlycm9yImAuCisgICAgICAgICIiIgorCisgICAgICAgIHNlbGYuX3Rlc3RfYXJjaGl2ZXJfbW9kZSgnbWlycm9yJywgJ2VkLTEuMTQuMS50YXIubHonLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0JCX0dFTkVSQVRFX01JUlJPUl9UQVJCQUxMUyA9ICIxIlxuJykKKworICAgIGRlZiB0ZXN0X2FyY2hpdmVyX21vZGVfbWlycm9yX2V4Y2x1ZGVzKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBhcmNoaXZlciB3b3JrcyB3aXRoIGBBUkNISVZFUl9NT0RFW3NyY10gPSAibWlycm9yImAgYW5kCisgICAgICAgIGNvcnJlY3RseSBleGNsdWRlcyBhbiBhcmNoaXZlIHdoZW4gaXRzIFVSTCBtYXRjaGVzCisgICAgICAgIGBBUkNISVZFUl9NSVJST1JfRVhDTFVERWAuCisgICAgICAgICIiIgorCisgICAgICAgIHRhcmdldD0nc2VsZnRlc3QtZWQnCisgICAgICAgIHRhcmdldF9maWxlX25hbWUgPSAnZWQtMS4xNC4xLnRhci5seicKKworICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJhcmNoaXZlciJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0FSQ0hJVkVSX01PREVbc3JjXSA9ICJtaXJyb3IiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdCQl9HRU5FUkFURV9NSVJST1JfVEFSQkFMTFMgPSAiMSJcbicKKyAgICAgICAgZmVhdHVyZXMgKz0gJ0FSQ0hJVkVSX01JUlJPUl9FWENMVURFID0gIiR7R05VX01JUlJPUn0iXG4nCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGZlYXR1cmVzKQorCisgICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzJyAlICh0YXJnZXQpKQorICAgICAgICBiaXRiYWtlKCctYyBkZXBsb3lfYXJjaGl2ZXMgJXMnICUgKHRhcmdldCkpCisKKyAgICAgICAgYmJfdmFycyA9IGdldF9iYl92YXJzKFsnREVQTE9ZX0RJUl9TUkMnLCAnVEFSR0VUX1NZUyddKQorICAgICAgICBnbG9iX3N0ciA9IG9zLnBhdGguam9pbihiYl92YXJzWydERVBMT1lfRElSX1NSQyddLCBiYl92YXJzWydUQVJHRVRfU1lTJ10sICclcy0qJyAlICh0YXJnZXQpKQorICAgICAgICBnbG9iX3Jlc3VsdCA9IGdsb2IuZ2xvYihnbG9iX3N0cikKKyAgICAgICAgc2VsZi5hc3NlcnRUcnVlKGdsb2JfcmVzdWx0LCAnTWlzc2luZyBhcmNoaXZlciBkaXJlY3RvcnkgZm9yICVzJyAlICh0YXJnZXQpKQorCisgICAgICAgIGFyY2hpdmVfcGF0aCA9IG9zLnBhdGguam9pbihnbG9iX3Jlc3VsdFswXSwgdGFyZ2V0X2ZpbGVfbmFtZSkKKyAgICAgICAgc2VsZi5hc3NlcnRGYWxzZShvcy5wYXRoLmV4aXN0cyhhcmNoaXZlX3BhdGgpLCAnRmFpbGVkIHRvIGV4Y2x1ZGUgYXJjaGl2ZSBmaWxlICVzJyAlICh0YXJnZXRfZmlsZV9uYW1lKSkKKworICAgIGRlZiB0ZXN0X2FyY2hpdmVyX21vZGVfbWlycm9yX2NvbWJpbmVkKHNlbGYpOgorICAgICAgICAiIiIKKyAgICAgICAgVGVzdCB0aGF0IHRoZSBhcmNoaXZlciB3b3JrcyB3aXRoIGBBUkNISVZFUl9NT0RFW3NyY10gPSAibWlycm9yImAKKyAgICAgICAgYW5kIGBBUkNISVZFUl9NT0RFW21pcnJvcl0gPSAiY29tYmluZWQiYC4gQXJjaGl2ZXMgZm9yIG11bHRpcGxlIHJlY2lwZXMKKyAgICAgICAgc2hvdWxkIGFsbCBlbmQgdXAgaW4gdGhlICdtaXJyb3InIGRpcmVjdG9yeS4KKyAgICAgICAgIiIiCisKKyAgICAgICAgZmVhdHVyZXMgPSAnSU5IRVJJVCArPSAiYXJjaGl2ZXIiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdBUkNISVZFUl9NT0RFW3NyY10gPSAibWlycm9yIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnQVJDSElWRVJfTU9ERVttaXJyb3JdID0gImNvbWJpbmVkIlxuJworICAgICAgICBmZWF0dXJlcyArPSAnQkJfR0VORVJBVEVfTUlSUk9SX1RBUkJBTExTID0gIjEiXG4nCisgICAgICAgIGZlYXR1cmVzICs9ICdDT1BZTEVGVF9MSUNFTlNFX0lOQ0xVREUgPSAiKiJcbicKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgZm9yIHRhcmdldCBpbiBbJ3NlbGZ0ZXN0LWVkJywgJ3NlbGZ0ZXN0LWhhcmRsaW5rJ106CisgICAgICAgICAgICBiaXRiYWtlKCctYyBjbGVhbiAlcycgJSAodGFyZ2V0KSkKKyAgICAgICAgICAgIGJpdGJha2UoJy1jIGRlcGxveV9hcmNoaXZlcyAlcycgJSAodGFyZ2V0KSkKKworICAgICAgICBiYl92YXJzID0gZ2V0X2JiX3ZhcnMoWydERVBMT1lfRElSX1NSQyddKQorICAgICAgICBmb3IgdGFyZ2V0X2ZpbGVfbmFtZSBpbiBbJ2VkLTEuMTQuMS50YXIubHonLCAnaGVsbG8uYyddOgorICAgICAgICAgICAgZ2xvYl9zdHIgPSBvcy5wYXRoLmpvaW4oYmJfdmFyc1snREVQTE9ZX0RJUl9TUkMnXSwgJ21pcnJvcicsIHRhcmdldF9maWxlX25hbWUpCisgICAgICAgICAgICBnbG9iX3Jlc3VsdCA9IGdsb2IuZ2xvYihnbG9iX3N0cikKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShnbG9iX3Jlc3VsdCwgJ01pc3NpbmcgYXJjaGl2ZSBmaWxlICVzJyAlICh0YXJnZXRfZmlsZV9uYW1lKSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9kZXZ0b29sLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2RldnRvb2wucHkKaW5kZXggNTdlNjY2Mi4uNTg4Njg2MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2RldnRvb2wucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2RldnRvb2wucHkKQEAgLTUxMSw2ICs1MTEsMjYgQEAKICAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSB1cmwucmVwbGFjZSh0ZXN0dmVyLCAnJHtQVn0nKQogICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIFtdKQogCisgICAgZGVmIHRlc3RfZGV2dG9vbF9hZGRfbnBtKHNlbGYpOgorICAgICAgICBwbiA9ICdzYXZvaXJmYWlyZWxpbnV4LW5vZGUtc2VydmVyLWV4YW1wbGUnCisgICAgICAgIHB2ID0gJzEuMC4wJworICAgICAgICB1cmwgPSAnbnBtOi8vcmVnaXN0cnkubnBtanMub3JnO3BhY2thZ2U9QHNhdm9pcmZhaXJlbGludXgvbm9kZS1zZXJ2ZXItZXhhbXBsZTt2ZXJzaW9uPScgKyBwdgorICAgICAgICAjIFRlc3QgZGV2dG9vbCBhZGQKKyAgICAgICAgc2VsZi50cmFja19mb3JfY2xlYW51cChzZWxmLndvcmtzcGFjZWRpcikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZSAtYyBjbGVhbnNzdGF0ZSAlcycgJSBwbikKKyAgICAgICAgc2VsZi5hZGRfY29tbWFuZF90b190ZWFyRG93bignYml0YmFrZS1sYXllcnMgcmVtb3ZlLWxheWVyICovd29ya3NwYWNlJykKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGFkZCBcJyVzXCcnICUgdXJsKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdjb25mJywgJ2xheWVyLmNvbmYnKSwgJ1dvcmtzcGFjZSBkaXJlY3Rvcnkgbm90IGNyZWF0ZWQnKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcG4sICclc18lcy5iYicgJSAocG4sIHB2KSksICdSZWNpcGUgbm90IGNyZWF0ZWQnKQorICAgICAgICBzZWxmLmFzc2VydEV4aXN0cyhvcy5wYXRoLmpvaW4oc2VsZi53b3Jrc3BhY2VkaXIsICdyZWNpcGVzJywgcG4sIHBuLCAnbnBtLXNocmlua3dyYXAuanNvbicpLCAnU2hyaW5rd3JhcCBub3QgY3JlYXRlZCcpCisgICAgICAgICMgVGVzdCBkZXZ0b29sIHN0YXR1cworICAgICAgICByZXN1bHQgPSBydW5DbWQoJ2RldnRvb2wgc3RhdHVzJykKKyAgICAgICAgc2VsZi5hc3NlcnRJbihwbiwgcmVzdWx0Lm91dHB1dCkKKyAgICAgICAgIyBDbGVhbiB1cCBhbnl0aGluZyBpbiB0aGUgd29ya2Rpci9zeXNyb290L3NzdGF0ZSBjYWNoZSAoaGF2ZSB0byBkbyB0aGlzICphZnRlciogZGV2dG9vbCBhZGQgc2luY2UgdGhlIHJlY2lwZSBvbmx5IGV4aXN0cyB0aGVuKQorICAgICAgICBiaXRiYWtlKCclcyAtYyBjbGVhbnNzdGF0ZScgJSBwbikKKyAgICAgICAgIyBUZXN0IGRldnRvb2wgYnVpbGQKKyAgICAgICAgcmVzdWx0ID0gcnVuQ21kKCdkZXZ0b29sIGJ1aWxkICVzJyAlIHBuKQorCiBjbGFzcyBEZXZ0b29sTW9kaWZ5VGVzdHMoRGV2dG9vbEJhc2UpOgogCiAgICAgZGVmIHRlc3RfZGV2dG9vbF9tb2RpZnkoc2VsZik6CkBAIC0xNzIxLDcgKzE3NDEsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIHdoZW4gYnVpbGRpbmcgdGhlIGtlcm5lbC4KICAgICAgICAgICIiIgogICAgICAgICBrZXJuZWxfcHJvdmlkZXIgPSBnZXRfYmJfdmFyKCdQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwnKQotICAgICAgICAjIENsZWFuIHVwIHRoZSBlbnZpcm9tZW50CisgICAgICAgICMgQ2xlYW4gdXAgdGhlIGVudmlyb25tZW50CiAgICAgICAgIGJpdGJha2UoJyVzIC1jIGNsZWFuJyAlIGtlcm5lbF9wcm92aWRlcikKICAgICAgICAgdGVtcGRpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdkZXZ0b29scWEnKQogICAgICAgICB0ZW1wZGlyX2NmZyA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdjb25maWdfcWEnKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2Rpc3Ryb2RhdGEucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGlzdHJvZGF0YS5weQppbmRleCA2OGJhNTU2Li5lMWNmYzNiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGlzdHJvZGF0YS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZGlzdHJvZGF0YS5weQpAQCAtNDIsOCArNDIsOSBAQAogCiAgICAgZGVmIHRlc3RfbWFpbnRhaW5lcnMoc2VsZik6CiAgICAgICAgICIiIgotICAgICAgICBTdW1tYXJ5OiAgICAgVGVzdCB0aGF0IG9lLWNvcmUgcmVjaXBlcyBoYXZlIGEgbWFpbnRhaW5lcgorICAgICAgICBTdW1tYXJ5OiAgICAgVGVzdCB0aGF0IG9lLWNvcmUgcmVjaXBlcyBoYXZlIGEgbWFpbnRhaW5lciBhbmQgZW50cmllcyBpbiBtYWludGFpbmVycyBsaXN0IGhhdmUgYSByZWNpcGUKICAgICAgICAgRXhwZWN0ZWQ6ICAgIEFsbCBvZS1jb3JlIHJlY2lwZXMgKGV4Y2VwdCBhIGZldyBzcGVjaWFsIHN0YXRpYy90ZXN0aW5nIG9uZXMpIHNob3VsZCBoYXZlIGEgbWFpbnRhaW5lciBsaXN0ZWQgaW4gbWFpbnRhaW5lcnMuaW5jIGZpbGUuCisgICAgICAgIEV4cGVjdGVkOiAgICBBbGwgZW50cmllcyBpbiBtYWludGFpbmVycyBsaXN0IHNob3VsZCBoYXZlIGEgcmVjaXBlIGZpbGUgdGhhdCBtYXRjaGVzIHRoZW0KICAgICAgICAgUHJvZHVjdDogICAgIG9lLWNvcmUKICAgICAgICAgQXV0aG9yOiAgICAgIEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgogICAgICAgICAiIiIKQEAgLTU0LDcgKzU1LDE1IEBACiAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICAgICAgZmVhdHVyZSA9ICdyZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jXG4nCisgICAgICAgIGRlZiBpc19tYWludGFpbmVyX2V4Y2VwdGlvbihlbnRyeSk6CisgICAgICAgICAgICBleGNlcHRpb25zID0gWyJtdXNsIiwgIm5ld2xpYiIsICJsaW51eC15b2N0byIsICJsaW51eC1kdW1teSIsICJtZXNhLWdsIiwgImxpYmdmb3J0cmFuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgImN2ZS11cGRhdGUtZGItbmF0aXZlIl0KKyAgICAgICAgICAgIGZvciBpIGluIGV4Y2VwdGlvbnM6CisgICAgICAgICAgICAgICAgIGlmIGkgaW4gZW50cnk6CisgICAgICAgICAgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICAgICAgZmVhdHVyZSA9ICdyZXF1aXJlIGNvbmYvZGlzdHJvL2luY2x1ZGUvbWFpbnRhaW5lcnMuaW5jXG5MSUNFTlNFX0ZMQUdTX1dISVRFTElTVCArPSAiIGNvbW1lcmNpYWwiXG5QQVJTRV9BTExfUkVDSVBFUyA9ICIxIlxuJwogICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlKQogCiAgICAgICAgIHdpdGggYmIudGluZm9pbC5UaW5mb2lsKCkgYXMgdGluZm9pbDoKQEAgLTYyLDYgKzcxLDExIEBACiAKICAgICAgICAgICAgIHdpdGhfbWFpbnRhaW5lcl9saXN0ID0gW10KICAgICAgICAgICAgIG5vX21haW50YWluZXJfbGlzdCA9IFtdCisKKyAgICAgICAgICAgIG1pc3NpbmdfcmVjaXBlcyA9IFtdCisgICAgICAgICAgICByZWNpcGVzID0gW10KKyAgICAgICAgICAgIHByZWZpeCA9ICJSRUNJUEVfTUFJTlRBSU5FUl9wbi0iCisKICAgICAgICAgICAgICMgV2UgY291bGQgaGF2ZSB1c2VkIGFsbF9yZWNpcGVzKCkgaGVyZSwgYnV0IHRoaXMgbWV0aG9kIHdpbGwgZmluZAogICAgICAgICAgICAgIyBldmVyeSByZWNpcGUgaWYgd2UgZXZlciBtb3ZlIHRvIHNldHRpbmcgUkVDSVBFX01BSU5UQUlORVIgaW4gcmVjaXBlIGZpbGVzCiAgICAgICAgICAgICAjIGluc3RlYWQgb2YgbWFpbnRhaW5lcnMuaW5jCkBAIC03MSw2ICs4NSw3IEBACiAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAgICAgICAgICAgICAgICAgcmQgPSB0aW5mb2lsLnBhcnNlX3JlY2lwZV9maWxlKGZuLCBhcHBlbmRzPUZhbHNlKQogICAgICAgICAgICAgICAgIHBuID0gcmQuZ2V0VmFyKCdQTicpCisgICAgICAgICAgICAgICAgcmVjaXBlcy5hcHBlbmQocG4pCiAgICAgICAgICAgICAgICAgaWYgaXNfZXhjZXB0aW9uKHBuKToKICAgICAgICAgICAgICAgICAgICAgY29udGludWUKICAgICAgICAgICAgICAgICBpZiByZC5nZXRWYXIoJ1JFQ0lQRV9NQUlOVEFJTkVSJyk6CkBAIC03OCw2ICs5MywxNSBAQAogICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgIG5vX21haW50YWluZXJfbGlzdC5hcHBlbmQoKHBuLCBmbikpCiAKKyAgICAgICAgICAgIG1haW50YWluZXJzID0gdGluZm9pbC5jb25maWdfZGF0YS5rZXlzKCkKKyAgICAgICAgICAgIGZvciBrZXkgaW4gbWFpbnRhaW5lcnM6CisgICAgICAgICAgICAgICAgIGlmIGtleS5zdGFydHN3aXRoKHByZWZpeCk6CisgICAgICAgICAgICAgICAgICAgICByZWNpcGUgPSB0aW5mb2lsLmNvbmZpZ19kYXRhLmV4cGFuZChrZXlbbGVuKHByZWZpeCk6XSkKKyAgICAgICAgICAgICAgICAgICAgIGlmIGlzX21haW50YWluZXJfZXhjZXB0aW9uKHJlY2lwZSk6CisgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWUKKyAgICAgICAgICAgICAgICAgICAgIGlmIHJlY2lwZSBub3QgaW4gcmVjaXBlczoKKyAgICAgICAgICAgICAgICAgICAgICAgICBtaXNzaW5nX3JlY2lwZXMuYXBwZW5kKHJlY2lwZSkKKwogICAgICAgICBpZiBub19tYWludGFpbmVyX2xpc3Q6CiAgICAgICAgICAgICBzZWxmLmZhaWwoIiIiCiBUaGUgZm9sbG93aW5nIHJlY2lwZXMgZG8gbm90IGhhdmUgYSBtYWludGFpbmVyIGFzc2lnbmVkIHRvIHRoZW0uIFBsZWFzZSBhZGQgYW4gZW50cnkgdG8gbWV0YS9jb25mL2Rpc3Ryby9pbmNsdWRlL21haW50YWluZXJzLmluYyBmaWxlLgpAQCAtODcsMyArMTExLDggQEAKICAgICAgICAgICAgIHNlbGYuZmFpbCgiIiIKIFRoZSBsaXN0IG9mIG9lLWNvcmUgcmVjaXBlcyB3aXRoIG1haW50YWluZXJzIGlzIGVtcHR5LiBUaGlzIG1heSBpbmRpY2F0ZSB0aGF0IHRoZSB0ZXN0IGhhcyByZWdyZXNzZWQgYW5kIG5lZWRzIGZpeGluZy4KICIiIikKKworICAgICAgICBpZiBtaXNzaW5nX3JlY2lwZXM6CisgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCIiIgorVW5hYmxlIHRvIGZpbmQgcmVjaXBlcyBmb3IgdGhlIGZvbGxvd2luZyBlbnRyaWVzIGluIG1haW50YWluZXJzLmluYzoKKyIiIiArICJcbiIuam9pbihbJyVzJyAlIGkgZm9yIGkgaW4gbWlzc2luZ19yZWNpcGVzXSkpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZ2NjLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2djYy5weQppbmRleCA1YTkxN2I5Li4zZWZlMTUyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvZ2NjLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9nY2MucHkKQEAgLTIxLDggKzIxLDEwIEBACiAgICAgZGVmIHJ1bl9jaGVjayhzZWxmLCAqc3VpdGVzLCBzc2ggPSBOb25lKToKICAgICAgICAgdGFyZ2V0cyA9IHNldCgpCiAgICAgICAgIGZvciBzIGluIHN1aXRlczoKLSAgICAgICAgICAgIGlmIHMgaW4gWyJnY2MiLCAiZysrIl06Ci0gICAgICAgICAgICAgICAgdGFyZ2V0cy5hZGQoImNoZWNrLWdjYyIpCisgICAgICAgICAgICBpZiBzID09ICJnY2MiOgorICAgICAgICAgICAgICAgIHRhcmdldHMuYWRkKCJjaGVjay1nY2MtYyIpCisgICAgICAgICAgICBlbGlmIHMgPT0gImcrKyI6CisgICAgICAgICAgICAgICAgdGFyZ2V0cy5hZGQoImNoZWNrLWdjYy1jKysiKQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICB0YXJnZXRzLmFkZCgiY2hlY2stdGFyZ2V0LXt9Ii5mb3JtYXQocykpCiAKQEAgLTc3LDcgKzc5LDEyIEBACiBAT0VUZXN0VGFnKCJ0b29sY2hhaW4tdXNlciIpCiBjbGFzcyBHY2NDcm9zc1NlbGZUZXN0KEdjY1NlbGZUZXN0QmFzZSk6CiAgICAgZGVmIHRlc3RfY3Jvc3NfZ2NjKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl9jaGVjaygiZ2NjIiwgImcrKyIpCisgICAgICAgIHNlbGYucnVuX2NoZWNrKCJnY2MiKQorCitAT0VUZXN0VGFnKCJ0b29sY2hhaW4tdXNlciIpCitjbGFzcyBHeHhDcm9zc1NlbGZUZXN0KEdjY1NlbGZUZXN0QmFzZSk6CisgICAgZGVmIHRlc3RfY3Jvc3NfZ3h4KHNlbGYpOgorICAgICAgICBzZWxmLnJ1bl9jaGVjaygiZysrIikKIAogQE9FVGVzdFRhZygidG9vbGNoYWluLXVzZXIiKQogY2xhc3MgR2NjTGliQXRvbWljU2VsZlRlc3QoR2NjU2VsZlRlc3RCYXNlKToKQEAgLTEwOSw3ICsxMTYsMTIgQEAKIEBPRVRlc3RUYWcoInRvb2xjaGFpbi1zeXN0ZW0iKQogY2xhc3MgR2NjQ3Jvc3NTZWxmVGVzdFN5c3RlbUVtdWxhdGVkKEdjY1NlbGZUZXN0QmFzZSk6CiAgICAgZGVmIHRlc3RfY3Jvc3NfZ2NjKHNlbGYpOgotICAgICAgICBzZWxmLnJ1bl9jaGVja19lbXVsYXRlZCgiZ2NjIiwgImcrKyIpCisgICAgICAgIHNlbGYucnVuX2NoZWNrX2VtdWxhdGVkKCJnY2MiKQorCitAT0VUZXN0VGFnKCJ0b29sY2hhaW4tc3lzdGVtIikKK2NsYXNzIEd4eENyb3NzU2VsZlRlc3RTeXN0ZW1FbXVsYXRlZChHY2NTZWxmVGVzdEJhc2UpOgorICAgIGRlZiB0ZXN0X2Nyb3NzX2d4eChzZWxmKToKKyAgICAgICAgc2VsZi5ydW5fY2hlY2tfZW11bGF0ZWQoImcrKyIpCiAKIEBPRVRlc3RUYWcoInRvb2xjaGFpbi1zeXN0ZW0iKQogY2xhc3MgR2NjTGliQXRvbWljU2VsZlRlc3RTeXN0ZW1FbXVsYXRlZChHY2NTZWxmVGVzdEJhc2UpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL2ltYWdlZmVhdHVyZXMucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VmZWF0dXJlcy5weQppbmRleCBlZjJlZWZhLi41YzUxOWFjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VmZWF0dXJlcy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW1hZ2VmZWF0dXJlcy5weQpAQCAtMjA4LDEzICsyMDgsMTMgQEAKICAgICAgICAgIiIiCiAgICAgICAgIGltYWdlX25hbWUgPSAnY29yZS1pbWFnZS1taW5pbWFsJwogCi0gICAgICAgIGltZ190eXBlcyA9IFtpdHlwZSBmb3IgaXR5cGUgaW4gZ2V0X2JiX3ZhcigiSU1BR0VfVFlQRVMiLCBpbWFnZV9uYW1lKS5zcGxpdCgpIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiBpdHlwZSBub3QgaW4gKCdjb250YWluZXInLCAnZWxmJywgJ2YyZnMnLCAnbXVsdGl1YmknKV0KKyAgICAgICAgYWxsX2ltYWdlX3R5cGVzID0gc2V0KGdldF9iYl92YXIoIklNQUdFX1RZUEVTIiwgaW1hZ2VfbmFtZSkuc3BsaXQoKSkKKyAgICAgICAgYmxhY2tsaXN0ID0gc2V0KCgnY29udGFpbmVyJywgJ2VsZicsICdmMmZzJywgJ211bHRpdWJpJywgJ3Rhci56c3QnKSkKKyAgICAgICAgaW1nX3R5cGVzID0gYWxsX2ltYWdlX3R5cGVzIC0gYmxhY2tsaXN0CiAKICAgICAgICAgY29uZmlnID0gJ0lNQUdFX0ZTVFlQRVMgKz0gIiVzIlxuJ1wKICAgICAgICAgICAgICAgICAgJ01LVUJJRlNfQVJHUyA/PSAiLW0gMjA0OCAtZSAxMjkwMjQgLWMgMjA0NyJcbidcCiAgICAgICAgICAgICAgICAgICdVQklOSVpFX0FSR1MgPz0gIi1tIDIwNDggLXAgMTI4S2lCIC1zIDUxMiInICUgJyAnLmpvaW4oaW1nX3R5cGVzKQotCiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGNvbmZpZykKIAogICAgICAgICBiaXRiYWtlKGltYWdlX25hbWUpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvaW5jb21wYXRpYmxlX2xpYy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbmNvbXBhdGlibGVfbGljLnB5CmluZGV4IDkwNGI1YjQuLjNlYWJkNzkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbmNvbXBhdGlibGVfbGljLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9pbmNvbXBhdGlibGVfbGljLnB5CkBAIC00LDcgKzQsNyBAQAogY2xhc3MgSW5jb21wYXRpYmxlTGljZW5zZVRlc3RzKE9FU2VsZnRlc3RUZXN0Q2FzZSk6CiAKICAgICBkZWYgbGljX3Rlc3Qoc2VsZiwgcG4sIHBuX2xpYywgbGljKToKLSAgICAgICAgZXJyb3JfbXNnID0gJ0VSUk9SOiBOb3RoaW5nIFBST1ZJREVTIFwnJXNcJ1xuJXMgd2FzIHNraXBwZWQ6IGl0IGhhcyBhbiBpbmNvbXBhdGlibGUgbGljZW5zZTogJXMnICUgKHBuLCBwbiwgcG5fbGljKQorICAgICAgICBlcnJvcl9tc2cgPSAnRVJST1I6IE5vdGhpbmcgUFJPVklERVMgXCclc1wnXG4lcyB3YXMgc2tpcHBlZDogaXQgaGFzIGluY29tcGF0aWJsZSBsaWNlbnNlKHMpOiAlcycgJSAocG4sIHBuLCBwbl9saWMpCiAKICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIklOQ09NUEFUSUJMRV9MSUNFTlNFICs9IFwiJXNcIiIgJSAobGljKSkKIApAQCAtMTIsMzAgKzEyLDcyIEBACiAgICAgICAgIGlmIGVycm9yX21zZyBub3QgaW4gcmVzdWx0Lm91dHB1dDoKICAgICAgICAgICAgIHJhaXNlIEFzc2VydGlvbkVycm9yKHJlc3VsdC5vdXRwdXQpCiAKLSAgICAjIFZlcmlmeSB0aGF0IGEgcGFja2FnZSB3aXRoIGFuIFNQRFggbGljZW5zZSAoZnJvbSBTUkNfRElTVFJJQlVURV9MSUNFTlNFUykKKyAgICAjIFZlcmlmeSB0aGF0IGEgcGFja2FnZSB3aXRoIGFuIFNQRFggbGljZW5zZSAoZnJvbSBBVkFJTEFCTEVfTElDRU5TRVMpCiAgICAgIyBjYW5ub3QgYmUgYnVpbHQgd2hlbiBJTkNPTVBBVElCTEVfTElDRU5TRSBjb250YWlucyB0aGlzIFNQRFggbGljZW5zZQogICAgIGRlZiB0ZXN0X2luY29tcGF0aWJsZV9zcGR4X2xpY2Vuc2Uoc2VsZik6CiAgICAgICAgIHNlbGYubGljX3Rlc3QoJ2luY29tcGF0aWJsZS1saWNlbnNlJywgJ0dQTC0zLjAnLCAnR1BMLTMuMCcpCiAKLSAgICAjIFZlcmlmeSB0aGF0IGEgcGFja2FnZSB3aXRoIGFuIFNQRFggbGljZW5zZSAoZnJvbSBTUkNfRElTVFJJQlVURV9MSUNFTlNFUykKKyAgICAjIFZlcmlmeSB0aGF0IGEgcGFja2FnZSB3aXRoIGFuIFNQRFggbGljZW5zZSAoZnJvbSBBVkFJTEFCTEVfTElDRU5TRVMpCiAgICAgIyBjYW5ub3QgYmUgYnVpbHQgd2hlbiBJTkNPTVBBVElCTEVfTElDRU5TRSBjb250YWlucyBhbiBhbGlhcyAoaW4KICAgICAjIFNQRFhMSUNFTlNFTUFQKSBvZiB0aGlzIFNQRFggbGljZW5zZQogICAgIGRlZiB0ZXN0X2luY29tcGF0aWJsZV9hbGlhc19zcGR4X2xpY2Vuc2Uoc2VsZik6CiAgICAgICAgIHNlbGYubGljX3Rlc3QoJ2luY29tcGF0aWJsZS1saWNlbnNlJywgJ0dQTC0zLjAnLCAnR1BMdjMnKQogCisgICAgIyBWZXJpZnkgdGhhdCBhIHBhY2thZ2Ugd2l0aCBhbiBTUERYIGxpY2Vuc2UgKGZyb20gQVZBSUxBQkxFX0xJQ0VOU0VTKQorICAgICMgY2Fubm90IGJlIGJ1aWx0IHdoZW4gSU5DT01QQVRJQkxFX0xJQ0VOU0UgY29udGFpbnMgYSB3aWxkY2FyZGVkIGxpY2Vuc2UKKyAgICAjIG1hdGNoaW5nIHRoaXMgU1BEWCBsaWNlbnNlCisgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlX3NwZHhfbGljZW5zZV93aWxkY2FyZChzZWxmKToKKyAgICAgICAgc2VsZi5saWNfdGVzdCgnaW5jb21wYXRpYmxlLWxpY2Vuc2UnLCAnR1BMLTMuMCcsICcqR1BMLTMuMCcpCisKKyAgICAjIFZlcmlmeSB0aGF0IGEgcGFja2FnZSB3aXRoIGFuIFNQRFggbGljZW5zZSAoZnJvbSBBVkFJTEFCTEVfTElDRU5TRVMpCisgICAgIyBjYW5ub3QgYmUgYnVpbHQgd2hlbiBJTkNPTVBBVElCTEVfTElDRU5TRSBjb250YWlucyBhIHdpbGRjYXJkZWQgYWxpYXMKKyAgICAjIGxpY2Vuc2UgbWF0Y2hpbmcgdGhpcyBTUERYIGxpY2Vuc2UKKyAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfYWxpYXNfc3BkeF9saWNlbnNlX3dpbGRjYXJkKHNlbGYpOgorICAgICAgICBzZWxmLmxpY190ZXN0KCdpbmNvbXBhdGlibGUtbGljZW5zZScsICdHUEwtMy4wJywgJypHUEx2MycpCisKICAgICAjIFZlcmlmeSB0aGF0IGEgcGFja2FnZSB3aXRoIGFuIGFsaWFzIChmcm9tIFNQRFhMSUNFTlNFTUFQKSB0byBhbiBTUERYCiAgICAgIyBsaWNlbnNlIGNhbm5vdCBiZSBidWlsdCB3aGVuIElOQ09NUEFUSUJMRV9MSUNFTlNFIGNvbnRhaW5zIHRoaXMgU1BEWAogICAgICMgbGljZW5zZQogICAgIGRlZiB0ZXN0X2luY29tcGF0aWJsZV9zcGR4X2xpY2Vuc2VfYWxpYXMoc2VsZik6Ci0gICAgICAgIHNlbGYubGljX3Rlc3QoJ2luY29tcGF0aWJsZS1saWNlbnNlLWFsaWFzJywgJ0dQTHYzJywgJ0dQTC0zLjAnKQorICAgICAgICBzZWxmLmxpY190ZXN0KCdpbmNvbXBhdGlibGUtbGljZW5zZS1hbGlhcycsICdHUEwtMy4wJywgJ0dQTC0zLjAnKQogCiAgICAgIyBWZXJpZnkgdGhhdCBhIHBhY2thZ2Ugd2l0aCBhbiBhbGlhcyAoZnJvbSBTUERYTElDRU5TRU1BUCkgdG8gYW4gU1BEWAogICAgICMgbGljZW5zZSBjYW5ub3QgYmUgYnVpbHQgd2hlbiBJTkNPTVBBVElCTEVfTElDRU5TRSBjb250YWlucyB0aGlzIGFsaWFzCiAgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlX2FsaWFzX3NwZHhfbGljZW5zZV9hbGlhcyhzZWxmKToKLSAgICAgICAgc2VsZi5saWNfdGVzdCgnaW5jb21wYXRpYmxlLWxpY2Vuc2UtYWxpYXMnLCAnR1BMdjMnLCAnR1BMdjMnKQorICAgICAgICBzZWxmLmxpY190ZXN0KCdpbmNvbXBhdGlibGUtbGljZW5zZS1hbGlhcycsICdHUEwtMy4wJywgJ0dQTHYzJykKKworICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggYW4gYWxpYXMgKGZyb20gU1BEWExJQ0VOU0VNQVApIHRvIGFuIFNQRFgKKyAgICAjIGxpY2Vuc2UgY2Fubm90IGJlIGJ1aWx0IHdoZW4gSU5DT01QQVRJQkxFX0xJQ0VOU0UgY29udGFpbnMgYSB3aWxkY2FyZGVkCisgICAgIyBsaWNlbnNlIG1hdGNoaW5nIHRoaXMgU1BEWCBsaWNlbnNlCisgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlX3NwZHhfbGljZW5zZV9hbGlhc193aWxkY2FyZChzZWxmKToKKyAgICAgICAgc2VsZi5saWNfdGVzdCgnaW5jb21wYXRpYmxlLWxpY2Vuc2UtYWxpYXMnLCAnR1BMLTMuMCcsICcqR1BMLTMuMCcpCisKKyAgICAjIFZlcmlmeSB0aGF0IGEgcGFja2FnZSB3aXRoIGFuIGFsaWFzIChmcm9tIFNQRFhMSUNFTlNFTUFQKSB0byBhbiBTUERYCisgICAgIyBsaWNlbnNlIGNhbm5vdCBiZSBidWlsdCB3aGVuIElOQ09NUEFUSUJMRV9MSUNFTlNFIGNvbnRhaW5zIGEgd2lsZGNhcmRlZAorICAgICMgYWxpYXMgbGljZW5zZSBtYXRjaGluZyB0aGUgU1BEWCBsaWNlbnNlCisgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlX2FsaWFzX3NwZHhfbGljZW5zZV9hbGlhc193aWxkY2FyZChzZWxmKToKKyAgICAgICAgc2VsZi5saWNfdGVzdCgnaW5jb21wYXRpYmxlLWxpY2Vuc2UtYWxpYXMnLCAnR1BMLTMuMCcsICcqR1BMdjMnKQorCisgICAgIyBWZXJpZnkgdGhhdCBhIHBhY2thZ2Ugd2l0aCBtdWx0aXBsZSBTUERYIGxpY2Vuc2VzIChmcm9tCisgICAgIyBBVkFJTEFCTEVfTElDRU5TRVMpIGNhbm5vdCBiZSBidWlsdCB3aGVuIElOQ09NUEFUSUJMRV9MSUNFTlNFIGNvbnRhaW5zCisgICAgIyBzb21lIG9mIHRoZW0KKyAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfc3BkeF9saWNlbnNlcyhzZWxmKToKKyAgICAgICAgc2VsZi5saWNfdGVzdCgnaW5jb21wYXRpYmxlLWxpY2Vuc2VzJywgJ0dQTC0zLjAgTEdQTC0zLjAnLCAnR1BMLTMuMCBMR1BMLTMuMCcpCisKKyAgICAjIFZlcmlmeSB0aGF0IGEgcGFja2FnZSB3aXRoIG11bHRpcGxlIFNQRFggbGljZW5zZXMgKGZyb20KKyAgICAjIEFWQUlMQUJMRV9MSUNFTlNFUykgY2Fubm90IGJlIGJ1aWx0IHdoZW4gSU5DT01QQVRJQkxFX0xJQ0VOU0UgY29udGFpbnMgYQorICAgICMgd2lsZGNhcmQgdG8gc29tZSBvZiB0aGVtCisgICAgZGVmIHRlc3RfaW5jb21wYXRpYmxlX3NwZHhfbGljZW5zZXNfd2lsZGNhcmQoc2VsZik6CisgICAgICAgIHNlbGYubGljX3Rlc3QoJ2luY29tcGF0aWJsZS1saWNlbnNlcycsICdHUEwtMy4wIExHUEwtMy4wJywgJypHUEwtMy4wJykKKworICAgICMgVmVyaWZ5IHRoYXQgYSBwYWNrYWdlIHdpdGggbXVsdGlwbGUgU1BEWCBsaWNlbnNlcyAoZnJvbQorICAgICMgQVZBSUxBQkxFX0xJQ0VOU0VTKSBjYW5ub3QgYmUgYnVpbHQgd2hlbiBJTkNPTVBBVElCTEVfTElDRU5TRSBjb250YWlucyBhCisgICAgIyB3aWxkY2FyZCBtYXRjaGluZyBhbGwgbGljZW5zZXMKKyAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfYWxsX2xpY2Vuc2VzX3dpbGRjYXJkKHNlbGYpOgorICAgICAgICBzZWxmLmxpY190ZXN0KCdpbmNvbXBhdGlibGUtbGljZW5zZXMnLCAnR1BMLTIuMCBHUEwtMy4wIExHUEwtMy4wJywgJyonKQogCiAgICAgIyBWZXJpZnkgdGhhdCBhIHBhY2thZ2Ugd2l0aCBhIG5vbi1TUERYIGxpY2Vuc2UgKG5laXRoZXIgaW4KLSAgICAjIFNSQ19ESVNUUklCVVRFX0xJQ0VOU0VTIG5vciBpbiBTUERYTElDRU5TRU1BUCkgY2Fubm90IGJlIGJ1aWx0IHdoZW4KKyAgICAjIEFWQUlMQUJMRV9MSUNFTlNFUyBub3IgaW4gU1BEWExJQ0VOU0VNQVApIGNhbm5vdCBiZSBidWlsdCB3aGVuCiAgICAgIyBJTkNPTVBBVElCTEVfTElDRU5TRSBjb250YWlucyB0aGlzIGxpY2Vuc2UKICAgICBkZWYgdGVzdF9pbmNvbXBhdGlibGVfbm9uc3BkeF9saWNlbnNlKHNlbGYpOgogICAgICAgICBzZWxmLmxpY190ZXN0KCdpbmNvbXBhdGlibGUtbm9uc3BkeC1saWNlbnNlJywgJ0Zvb0xpY2Vuc2UnLCAnRm9vTGljZW5zZScpCkBAIC00OSw3ICs5MSw3IEBACiAKICAgICBkZWYgdGVzdF9iYXNoX2RlZmF1bHQoc2VsZik6CiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKHNlbGYuZGVmYXVsdF9jb25maWcoKSkKLSAgICAgICAgZXJyb3JfbXNnID0gIkVSUk9SOiBjb3JlLWltYWdlLW1pbmltYWwtMS4wLXIwIGRvX3Jvb3RmczogUGFja2FnZSBiYXNoIGhhcyBhbiBpbmNvbXBhdGlibGUgbGljZW5zZSBHUEx2MysgYW5kIGNhbm5vdCBiZSBpbnN0YWxsZWQgaW50byB0aGUgaW1hZ2UuIgorICAgICAgICBlcnJvcl9tc2cgPSAiRVJST1I6IGNvcmUtaW1hZ2UtbWluaW1hbC0xLjAtcjAgZG9fcm9vdGZzOiBQYWNrYWdlIGJhc2ggY2Fubm90IGJlIGluc3RhbGxlZCBpbnRvIHRoZSBpbWFnZSBiZWNhdXNlIGl0IGhhcyBpbmNvbXBhdGlibGUgbGljZW5zZShzKTogR1BMLTMuMCsiCiAKICAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJywgaWdub3JlX3N0YXR1cz1UcnVlKQogICAgICAgICBpZiBlcnJvcl9tc2cgbm90IGluIHJlc3VsdC5vdXRwdXQ6CkBAIC01Nyw3ICs5OSw3IEBACiAKICAgICBkZWYgdGVzdF9iYXNoX2FuZF9saWNlbnNlKHNlbGYpOgogICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhzZWxmLmRlZmF1bHRfY29uZmlnKCkgKyAnXG5MSUNFTlNFX2FwcGVuZF9wbi1iYXNoID0gIiAmIFNvbWVMaWNlbnNlIicpCi0gICAgICAgIGVycm9yX21zZyA9ICJFUlJPUjogY29yZS1pbWFnZS1taW5pbWFsLTEuMC1yMCBkb19yb290ZnM6IFBhY2thZ2UgYmFzaCBoYXMgYW4gaW5jb21wYXRpYmxlIGxpY2Vuc2UgR1BMdjMrICYgU29tZUxpY2Vuc2UgYW5kIGNhbm5vdCBiZSBpbnN0YWxsZWQgaW50byB0aGUgaW1hZ2UuIgorICAgICAgICBlcnJvcl9tc2cgPSAiRVJST1I6IGNvcmUtaW1hZ2UtbWluaW1hbC0xLjAtcjAgZG9fcm9vdGZzOiBQYWNrYWdlIGJhc2ggY2Fubm90IGJlIGluc3RhbGxlZCBpbnRvIHRoZSBpbWFnZSBiZWNhdXNlIGl0IGhhcyBpbmNvbXBhdGlibGUgbGljZW5zZShzKTogR1BMLTMuMCsiCiAKICAgICAgICAgcmVzdWx0ID0gYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJywgaWdub3JlX3N0YXR1cz1UcnVlKQogICAgICAgICBpZiBlcnJvcl9tc2cgbm90IGluIHJlc3VsdC5vdXRwdXQ6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbWV0YV9pZGUucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvbWV0YV9pZGUucHkKaW5kZXggMDM5MDFhMi4uODA5MTQyNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL21ldGFfaWRlLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9tZXRhX2lkZS5weQpAQCAtNDAsNyArNDAsNyBAQAogICAgIGRlZiB0ZXN0X21ldGFfaWRlX2Nhbl9idWlsZF9jcGlvX3Byb2plY3Qoc2VsZik6CiAgICAgICAgIGRsX2RpciA9IHNlbGYudGQuZ2V0KCdETF9ESVInLCBOb25lKQogICAgICAgICBzZWxmLnByb2plY3QgPSBTREtCdWlsZFByb2plY3Qoc2VsZi50bXBkaXJfbWV0YWlkZVFBICsgIi9jcGlvLyIsIHNlbGYuZW52aXJvbm1lbnRfc2NyaXB0X3BhdGgsCi0gICAgICAgICAgICAgICAgICAgICAgICAiaHR0cHM6Ly9mdHAuZ251Lm9yZy9nbnUvY3Bpby9jcGlvLTIuMTIudGFyLmd6IiwKKyAgICAgICAgICAgICAgICAgICAgICAgICJodHRwczovL2Z0cC5nbnUub3JnL2dudS9jcGlvL2NwaW8tMi4xMy50YXIuZ3oiLAogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi50bXBkaXJfbWV0YWlkZVFBLCBzZWxmLnRkWydEQVRFVElNRSddLCBkbF9kaXI9ZGxfZGlyKQogICAgICAgICBzZWxmLnByb2plY3QuZG93bmxvYWRfYXJjaGl2ZSgpCiAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoc2VsZi5wcm9qZWN0LnJ1bl9jb25maWd1cmUoKSwgMCwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9idWlsZGhpc3RvcnkucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VsaWIvYnVpbGRoaXN0b3J5LnB5CmluZGV4IDZkODA4MjcuLmQ0NjY0YmQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZWxpYi9idWlsZGhpc3RvcnkucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lbGliL2J1aWxkaGlzdG9yeS5weQpAQCAtNDUsNyArNDUsNyBAQAogCiAgICAgZGVmIHRlc3RfYmxvYl90b19kaWN0KHNlbGYpOgogICAgICAgICAiIiIKLSAgICAgICAgVGVzdCBjb252ZXJ0aW9uIG9mIGdpdCBibG9icyB0byBkaWN0aW9uYXJ5CisgICAgICAgIFRlc3QgY29udmVyc2lvbiBvZiBnaXQgYmxvYnMgdG8gZGljdGlvbmFyeQogICAgICAgICAiIiIKICAgICAgICAgZnJvbSBvZS5idWlsZGhpc3RvcnlfYW5hbHlzaXMgaW1wb3J0IGJsb2JfdG9fZGljdAogICAgICAgICB2YWx1ZXNtYXAgPSB7ICJmb28iIDogIjEiLCAiYmFyIiA6ICIyIiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VzY3JpcHRzLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL29lc2NyaXB0cy5weQppbmRleCA0MWNiZTA0Li4yZjE4ZDhmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvb2VzY3JpcHRzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9vZXNjcmlwdHMucHkKQEAgLTQsNiArNCw3IEBACiAKIGltcG9ydCBvcwogaW1wb3J0IHNodXRpbAoraW1wb3J0IGltcG9ydGxpYgogaW1wb3J0IHVuaXR0ZXN0CiBmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZSBpbXBvcnQgT0VTZWxmdGVzdFRlc3RDYXNlCiBmcm9tIG9lcWEuc2VsZnRlc3QuY2FzZXMuYnVpbGRoaXN0b3J5IGltcG9ydCBCdWlsZGhpc3RvcnlCYXNlCkBAIC0zMywxNSArMzQsMTMgQEAKICAgICAgICAgaWYgZXhwZWN0ZWRfZW5kbGluZXM6CiAgICAgICAgICAgICBzZWxmLmZhaWwoJ01pc3NpbmcgZXhwZWN0ZWQgbGluZSBlbmRpbmdzOlxuICAlcycgJSAnXG4gICcuam9pbihleHBlY3RlZF9lbmRsaW5lcykpCiAKK0B1bml0dGVzdC5za2lwVW5sZXNzKGltcG9ydGxpYi51dGlsLmZpbmRfc3BlYygiY2Fpcm8iKSwgIlB5dGhvbiBjYWlybyBtb2R1bGUgaXMgbm90IHByZXNlbnQiKQogY2xhc3MgT0VTY3JpcHRUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgogCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIHNldFVwQ2xhc3MoY2xzKToKICAgICAgICAgc3VwZXIoT0VTY3JpcHRUZXN0cywgY2xzKS5zZXRVcENsYXNzKCkKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgaW1wb3J0IGNhaXJvCi0gICAgICAgIGV4Y2VwdCBJbXBvcnRFcnJvcjoKLSAgICAgICAgICAgIHJhaXNlIHVuaXR0ZXN0LlNraXBUZXN0KCdQeXRob24gbW9kdWxlIGNhaXJvIGlzIG5vdCBwcmVzZW50JykKKyAgICAgICAgaW1wb3J0IGNhaXJvCiAgICAgICAgIGJpdGJha2UoImNvcmUtaW1hZ2UtbWluaW1hbCAtYyByb290ZnMgLWYiKQogICAgICAgICBjbHMudG1wZGlyID0gZ2V0X2JiX3ZhcignVE1QRElSJykKICAgICAgICAgY2xzLmJ1aWxkc3RhdHMgPSBjbHMudG1wZGlyICsgIi9idWlsZHN0YXRzLyIgKyBzb3J0ZWQob3MubGlzdGRpcihjbHMudG1wZGlyICsgIi9idWlsZHN0YXRzIikpWy0xXQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3BhY2thZ2UucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcGFja2FnZS5weQppbmRleCAyOTE2Mjc4Li4zMDEwYjFhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcGFja2FnZS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcGFja2FnZS5weQpAQCAtMTM1LDcgKzEzNSw3IEBACiAgICAgICAgICAgICAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgICAgICAgICAgICAgIyBDaGVjayBkZWJ1Z2dpbmcgc3ltYm9scyB3b3JrcyBjb3JyZWN0bHkKLSAgICAgICAgICAgICAgICBlbGlmIHJlLm1hdGNoKCJCcmVha3BvaW50IDEuKmhlbGxvXC5jLio0IiwgbCk6CisgICAgICAgICAgICAgICAgZWxpZiByZS5tYXRjaChyIkJyZWFrcG9pbnQgMS4qaGVsbG9cLmMuKjQiLCBsKToKICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIFRydWUKIAogICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIkdEQiByZXN1bHQ6XG4lZDogJXMiLCBzdGF0dXMsIG91dHB1dCkKQEAgLTE0OCwzICsxNDgsMjYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICcvdXNyL2xpYmV4ZWMvaGVsbG80J106CiAgICAgICAgICAgICAgICAgaWYgbm90IGdkYnRlc3QocWVtdSwgYmluYXJ5KToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdHREIgJXMgZmFpbGVkJyAlIGJpbmFyeSkKKworICAgIGRlZiB0ZXN0X3ByZXNlcnZlX293bmVyc2hpcChzZWxmKToKKyAgICAgICAgaW1wb3J0IG9zLCBzdGF0LCBvZS5jYWNoZWRwYXRoCisgICAgICAgIGZlYXR1cmVzID0gJ0lNQUdFX0lOU1RBTExfYXBwZW5kID0gIiBzZWxmdGVzdC1jaG93biJcbicKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisgICAgICAgIGJpdGJha2UoImNvcmUtaW1hZ2UtbWluaW1hbCIpCisKKyAgICAgICAgc3lzY29uZmRpciA9IGdldF9iYl92YXIoJ3N5c2NvbmZkaXInLCAnc2VsZnRlc3QtY2hvd24nKQorICAgICAgICBkZWYgY2hlY2tfb3duZXJzaGlwKHFlbXUsIGdpZCwgdWlkLCBwYXRoKToKKyAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oIkNoZWNrIG93bmVyc2hpcCBvZiAlcyIsIHBhdGgpCisgICAgICAgICAgICBzdGF0dXMsIG91dHB1dCA9IHFlbXUucnVuX3NlcmlhbChyJy9iaW4vc3RhdCAtYyAiJVUgJUciICcgKyBwYXRoLCB0aW1lb3V0PTYwKQorICAgICAgICAgICAgb3V0cHV0ID0gb3V0cHV0LnNwbGl0KCIgIikKKyAgICAgICAgICAgIGlmIG91dHB1dFswXSAhPSB1aWQgb3Igb3V0cHV0WzFdICE9IGdpZCA6CisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIkluY3JyZWN0IG93bmVyc2hpcCAlcyBbJXM6JXNdIiwgcGF0aCwgb3V0cHV0WzBdLCBvdXRwdXRbMV0pCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorCisgICAgICAgIHdpdGggcnVucWVtdSgnY29yZS1pbWFnZS1taW5pbWFsJykgYXMgcWVtdToKKyAgICAgICAgICAgIGZvciBwYXRoIGluIFsgc3lzY29uZmRpciArICIvc2VsZnRlc3QtY2hvd24vZmlsZSIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2NvbmZkaXIgKyAiL3NlbGZ0ZXN0LWNob3duL2RpciIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2NvbmZkaXIgKyAiL3NlbGZ0ZXN0LWNob3duL3N5bWxpbmsiXToKKyAgICAgICAgICAgICAgICBpZiBub3QgY2hlY2tfb3duZXJzaGlwKHFlbXUsICJ0ZXN0IiwgInRlc3QiLCBwYXRoKToKKyAgICAgICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdUZXN0IG93bmVyc2hpcCAlcyBmYWlsZWQnICUgcGF0aCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9yZWNpcGV0b29sLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlY2lwZXRvb2wucHkKaW5kZXggYzE1NjJjNi4uNmJmZThmMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlY2lwZXRvb2wucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlY2lwZXRvb2wucHkKQEAgLTQyMSw2ICs0MjEsMzEgQEAKICAgICAgICAgaW5oZXJpdHMgPSBbJ2NtYWtlJ10KICAgICAgICAgc2VsZi5fdGVzdF9yZWNpcGVfY29udGVudHMocmVjaXBlZmlsZSwgY2hlY2t2YXJzLCBpbmhlcml0cykKIAorICAgIGRlZiB0ZXN0X3JlY2lwZXRvb2xfY3JlYXRlX25wbShzZWxmKToKKyAgICAgICAgdGVtcHJlY2lwZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdyZWNpcGUnKQorICAgICAgICBvcy5tYWtlZGlycyh0ZW1wcmVjaXBlKQorICAgICAgICByZWNpcGVmaWxlID0gb3MucGF0aC5qb2luKHRlbXByZWNpcGUsICdzYXZvaXJmYWlyZWxpbnV4LW5vZGUtc2VydmVyLWV4YW1wbGVfMS4wLjAuYmInKQorICAgICAgICBzaHJpbmt3cmFwID0gb3MucGF0aC5qb2luKHRlbXByZWNpcGUsICdzYXZvaXJmYWlyZWxpbnV4LW5vZGUtc2VydmVyLWV4YW1wbGUnLCAnbnBtLXNocmlua3dyYXAuanNvbicpCisgICAgICAgIHNyY3VyaSA9ICducG06Ly9yZWdpc3RyeS5ucG1qcy5vcmc7cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlO3ZlcnNpb249MS4wLjAnCisgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgncmVjaXBldG9vbCBjcmVhdGUgLW8gJXMgXCclc1wnJyAlICh0ZW1wcmVjaXBlLCBzcmN1cmkpKQorICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUocmVjaXBlZmlsZSkpCisgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmlzZmlsZShzaHJpbmt3cmFwKSkKKyAgICAgICAgY2hlY2t2YXJzID0ge30KKyAgICAgICAgY2hlY2t2YXJzWydTVU1NQVJZJ10gPSAnTm9kZSBTZXJ2ZXIgRXhhbXBsZScKKyAgICAgICAgY2hlY2t2YXJzWydIT01FUEFHRSddID0gJ2h0dHBzOi8vZ2l0aHViLmNvbS9zYXZvaXJmYWlyZWxpbnV4L25vZGUtc2VydmVyLWV4YW1wbGUjcmVhZG1lJworICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0UnXSA9IHNldChbJ01JVCcsICdJU0MnLCAnVW5rbm93biddKQorICAgICAgICB1cmxzID0gW10KKyAgICAgICAgdXJscy5hcHBlbmQoJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZy87cGFja2FnZT1Ac2F2b2lyZmFpcmVsaW51eC9ub2RlLXNlcnZlci1leGFtcGxlO3ZlcnNpb249JHtQVn0nKQorICAgICAgICB1cmxzLmFwcGVuZCgnbnBtc3c6Ly8ke1RISVNESVJ9LyR7QlBOfS9ucG0tc2hyaW5rd3JhcC5qc29uJykKKyAgICAgICAgY2hlY2t2YXJzWydTUkNfVVJJJ10gPSBzZXQodXJscykKKyAgICAgICAgY2hlY2t2YXJzWydTJ10gPSAnJHtXT1JLRElSfS9ucG0nCisgICAgICAgIGNoZWNrdmFyc1snTElDRU5TRV8ke1BOfSddID0gJ01JVCcKKyAgICAgICAgY2hlY2t2YXJzWydMSUNFTlNFXyR7UE59LWJhc2U2NCddID0gJ1Vua25vd24nCisgICAgICAgIGNoZWNrdmFyc1snTElDRU5TRV8ke1BOfS1hY2NlcHRzJ10gPSAnTUlUJworICAgICAgICBjaGVja3ZhcnNbJ0xJQ0VOU0VfJHtQTn0taW5oZXJpdHMnXSA9ICdJU0MnCisgICAgICAgIGluaGVyaXRzID0gWyducG0nXQorICAgICAgICBzZWxmLl90ZXN0X3JlY2lwZV9jb250ZW50cyhyZWNpcGVmaWxlLCBjaGVja3ZhcnMsIGluaGVyaXRzKQorCiAgICAgZGVmIHRlc3RfcmVjaXBldG9vbF9jcmVhdGVfZ2l0aHViKHNlbGYpOgogICAgICAgICAjIEJhc2ljIHRlc3QgdG8gc2VlIGlmIGdpdGh1YiBVUkwgbWFuZ2xpbmcgd29ya3MKICAgICAgICAgdGVtcHJlY2lwZSA9IG9zLnBhdGguam9pbihzZWxmLnRlbXBkaXIsICdyZWNpcGUnKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlcHJvZHVjaWJsZS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9yZXByb2R1Y2libGUucHkKaW5kZXggYTkxMTA1Ni4uNWQzOTU5YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3JlcHJvZHVjaWJsZS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcmVwcm9kdWNpYmxlLnB5CkBAIC0xLDcgKzEsNyBAQAogIwogIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCiAjCi0jIENvcHlyaWdodCAyMDE5IGJ5IEdhcm1pbiBMdGQuIG9yIGl0cyBzdWJzaWRpYXJpZXMKKyMgQ29weXJpZ2h0IDIwMTktMjAyMCBieSBHYXJtaW4gTHRkLiBvciBpdHMgc3Vic2lkaWFyaWVzCiAKIGZyb20gb2VxYS5zZWxmdGVzdC5jYXNlIGltcG9ydCBPRVNlbGZ0ZXN0VGVzdENhc2UKIGZyb20gb2VxYS51dGlscy5jb21tYW5kcyBpbXBvcnQgcnVuQ21kLCBiaXRiYWtlLCBnZXRfYmJfdmFyLCBnZXRfYmJfdmFycwpAQCAtMTUsNiArMTUsNyBAQAogaW1wb3J0IHNodXRpbAogaW1wb3J0IHN0YXQKIGltcG9ydCBvcworaW1wb3J0IGRhdGV0aW1lCiAKIE1JU1NJTkcgPSAnTUlTU0lORycKIERJRkZFUkVOVCA9ICdESUZGRVJFTlQnCkBAIC03OCw4ICs3OSwxOCBAQAogCiBjbGFzcyBSZXByb2R1Y2libGVUZXN0cyhPRVNlbGZ0ZXN0VGVzdENhc2UpOgogICAgIHBhY2thZ2VfY2xhc3NlcyA9IFsnZGViJywgJ2lwayddCi0gICAgaW1hZ2VzID0gWydjb3JlLWltYWdlLW1pbmltYWwnXQorICAgIGltYWdlcyA9IFsnY29yZS1pbWFnZS1taW5pbWFsJywgJ2NvcmUtaW1hZ2Utc2F0bycsICdjb3JlLWltYWdlLWZ1bGwtY21kbGluZSddCiAgICAgc2F2ZV9yZXN1bHRzID0gRmFsc2UKKyAgICBpZiAnT0VRQV9ERUJVR0dJTkdfU0FWRURfT1VUUFVUJyBpbiBvcy5lbnZpcm9uOgorICAgICAgICBzYXZlX3Jlc3VsdHMgPSBvcy5lbnZpcm9uWydPRVFBX0RFQlVHR0lOR19TQVZFRF9PVVRQVVQnXQorCisgICAgIyBUaGlzIHZhcmlhYmxlIGNvbnRyb2xzIGlmIG9uZSBvZiB0aGUgdGVzdCBidWlsZHMgaXMgYWxsb3dlZCB0byBwdWxsIGZyb20KKyAgICAjIGFuIHNzdGF0ZSBjYWNoZS9taXJyb3IuIFRoZSBvdGhlciBidWlsZCBpcyBhbHdheXMgZG9uZSBjbGVhbiBhcyBhIHBvaW50IG9mCisgICAgIyBjb21wYXJpc29uLgorICAgICMgSWYgeW91IGtub3cgdGhhdCB5b3VyIHNzdGF0ZSBhcmNoaXZlcyBhcmUgcmVwcm9kdWNpYmxlLCBlbmFibGluZyB0aGlzCisgICAgIyB3aWxsIHRlc3QgdGhhdCBhbmQgYWxzbyBtYWtlIHRoZSB0ZXN0IHJ1biBmYXN0ZXIuIElmIHlvdXIgc3N0YXRlIGlzIG5vdAorICAgICMgcmVwcm9kdWNpYmxlLCBkaXNhYmxlIHRoaXMgaW4geW91ciBkZXJpdmVkIHRlc3QgY2xhc3MKKyAgICBidWlsZF9mcm9tX3NzdGF0ZSA9IFRydWUKIAogICAgIGRlZiBzZXRVcExvY2FsKHNlbGYpOgogICAgICAgICBzdXBlcigpLnNldFVwTG9jYWwoKQpAQCAtODgsMTIgKzk5LDEyIEBACiAgICAgICAgIGZvciB2IGluIG5lZWRlZF92YXJzOgogICAgICAgICAgICAgc2V0YXR0cihzZWxmLCB2Lmxvd2VyKCksIGJiX3ZhcnNbdl0pCiAKLSAgICAgICAgc2VsZi5leHRyYXNyZXN1bHRzID0ge30KLSAgICAgICAgc2VsZi5leHRyYXNyZXN1bHRzLnNldGRlZmF1bHQoJ3JlcHJvZHVjaWJsZS5yYXdsb2dzJywge30pWydsb2cnXSA9ICcnCi0gICAgICAgIHNlbGYuZXh0cmFzcmVzdWx0cy5zZXRkZWZhdWx0KCdyZXByb2R1Y2libGUnLCB7fSkuc2V0ZGVmYXVsdCgnZmlsZXMnLCB7fSkKKyAgICAgICAgc2VsZi5leHRyYXJlc3VsdHMgPSB7fQorICAgICAgICBzZWxmLmV4dHJhcmVzdWx0cy5zZXRkZWZhdWx0KCdyZXByb2R1Y2libGUucmF3bG9ncycsIHt9KVsnbG9nJ10gPSAnJworICAgICAgICBzZWxmLmV4dHJhcmVzdWx0cy5zZXRkZWZhdWx0KCdyZXByb2R1Y2libGUnLCB7fSkuc2V0ZGVmYXVsdCgnZmlsZXMnLCB7fSkKIAogICAgIGRlZiBhcHBlbmRfdG9fbG9nKHNlbGYsIG1zZyk6Ci0gICAgICAgIHNlbGYuZXh0cmFzcmVzdWx0c1sncmVwcm9kdWNpYmxlLnJhd2xvZ3MnXVsnbG9nJ10gKz0gbXNnCisgICAgICAgIHNlbGYuZXh0cmFyZXN1bHRzWydyZXByb2R1Y2libGUucmF3bG9ncyddWydsb2cnXSArPSBtc2cKIAogICAgIGRlZiBjb21wYXJlX3BhY2thZ2VzKHNlbGYsIHJlZmVyZW5jZV9kaXIsIHRlc3RfZGlyLCBkaWZmdXRpbHNfc3lzcm9vdCk6CiAgICAgICAgIHJlc3VsdCA9IFBhY2thZ2VDb21wYXJlUmVzdWx0cygpCkBAIC0xMjAsNjAgKzEzMSw2OSBAQAogICAgICAgICByZXR1cm4gcmVzdWx0CiAKICAgICBkZWYgd3JpdGVfcGFja2FnZV9saXN0KHNlbGYsIHBhY2thZ2VfY2xhc3MsIG5hbWUsIHBhY2thZ2VzKToKLSAgICAgICAgc2VsZi5leHRyYXNyZXN1bHRzWydyZXByb2R1Y2libGUnXVsnZmlsZXMnXS5zZXRkZWZhdWx0KHBhY2thZ2VfY2xhc3MsIHt9KVtuYW1lXSA9IFsKKyAgICAgICAgc2VsZi5leHRyYXJlc3VsdHNbJ3JlcHJvZHVjaWJsZSddWydmaWxlcyddLnNldGRlZmF1bHQocGFja2FnZV9jbGFzcywge30pW25hbWVdID0gWwogICAgICAgICAgICAgICAgIHsncmVmZXJlbmNlJzogcC5yZWZlcmVuY2UsICd0ZXN0JzogcC50ZXN0fSBmb3IgcCBpbiBwYWNrYWdlc10KIAogICAgIGRlZiBjb3B5X2ZpbGUoc2VsZiwgc291cmNlLCBkZXN0KToKICAgICAgICAgYmIudXRpbHMubWtkaXJoaWVyKG9zLnBhdGguZGlybmFtZShkZXN0KSkKICAgICAgICAgc2h1dGlsLmNvcHlmaWxlKHNvdXJjZSwgZGVzdCkKIAotICAgIGRlZiB0ZXN0X3JlcHJvZHVjaWJsZV9idWlsZHMoc2VsZik6CisgICAgZGVmIGRvX3Rlc3RfYnVpbGQoc2VsZiwgbmFtZSwgdXNlX3NzdGF0ZSk6CiAgICAgICAgIGNhcHR1cmVfdmFycyA9IFsnREVQTE9ZX0RJUl8nICsgYy51cHBlcigpIGZvciBjIGluIHNlbGYucGFja2FnZV9jbGFzc2VzXQogCi0gICAgICAgIGlmIHNlbGYuc2F2ZV9yZXN1bHRzOgotICAgICAgICAgICAgc2F2ZV9kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKHByZWZpeD0nb2UtcmVwcm9kdWNpYmxlLScpCi0gICAgICAgICAgICBvcy5jaG1vZChzYXZlX2Rpciwgc3RhdC5TX0lSV1hVIHwgc3RhdC5TX0lSR1JQIHwgc3RhdC5TX0lYR1JQIHwgc3RhdC5TX0lST1RIIHwgc3RhdC5TX0lYT1RIKQotICAgICAgICAgICAgc2VsZi5sb2dnZXIuaW5mbygnTm9uLXJlcHJvZHVjaWJsZSBwYWNrYWdlcyB3aWxsIGJlIGNvcGllZCB0byAlcycsIHNhdmVfZGlyKQorICAgICAgICB0bXBkaXIgPSBvcy5wYXRoLmpvaW4oc2VsZi50b3BkaXIsIG5hbWUsICd0bXAnKQorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyh0bXBkaXIpOgorICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKHRtcGRpciwgcmVjdXJzZT1UcnVlKQorCisgICAgICAgIGNvbmZpZyA9IHRleHR3cmFwLmRlZGVudCgnJydcCisgICAgICAgICAgICBJTkhFUklUICs9ICJyZXByb2R1Y2libGVfYnVpbGQiCisgICAgICAgICAgICBQQUNLQUdFX0NMQVNTRVMgPSAie3BhY2thZ2VfY2xhc3Nlc30iCisgICAgICAgICAgICBJTkhJQklUX1BBQ0tBR0VfU1RSSVAgPSAiMSIKKyAgICAgICAgICAgIFRNUERJUiA9ICJ7dG1wZGlyfSIKKyAgICAgICAgICAgICcnJykuZm9ybWF0KHBhY2thZ2VfY2xhc3Nlcz0nICcuam9pbigncGFja2FnZV8lcycgJSBjIGZvciBjIGluIHNlbGYucGFja2FnZV9jbGFzc2VzKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHRtcGRpcj10bXBkaXIpCisKKyAgICAgICAgaWYgbm90IHVzZV9zc3RhdGU6CisgICAgICAgICAgICAjIFRoaXMgY29uZmlnIGZyYWdtZW50IHdpbGwgZGlzYWJsZSB1c2luZyBzaGFyZWQgYW5kIHRoZSBzc3RhdGUKKyAgICAgICAgICAgICMgbWlycm9yLCBmb3JjaW5nIGEgY29tcGxldGUgYnVpbGQgZnJvbSBzY3JhdGNoCisgICAgICAgICAgICBjb25maWcgKz0gdGV4dHdyYXAuZGVkZW50KCcnJ1wKKyAgICAgICAgICAgICAgICBTU1RBVEVfRElSID0gIiR7VE1QRElSfS9zc3RhdGUiCisgICAgICAgICAgICAgICAgU1NUQVRFX01JUlJPUiA9ICIiCisgICAgICAgICAgICAgICAgJycnKQorCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKGNvbmZpZykKKyAgICAgICAgZCA9IGdldF9iYl92YXJzKGNhcHR1cmVfdmFycykKKyAgICAgICAgYml0YmFrZSgnICcuam9pbihzZWxmLmltYWdlcykpCisgICAgICAgIHJldHVybiBkCisKKyAgICBkZWYgdGVzdF9yZXByb2R1Y2libGVfYnVpbGRzKHNlbGYpOgorICAgICAgICBkZWYgc3RyaXBfdG9wZGlyKHMpOgorICAgICAgICAgICAgaWYgcy5zdGFydHN3aXRoKHNlbGYudG9wZGlyKToKKyAgICAgICAgICAgICAgICByZXR1cm4gc1tsZW4oc2VsZi50b3BkaXIpOl0KKyAgICAgICAgICAgIHJldHVybiBzCiAKICAgICAgICAgIyBCdWlsZCBuYXRpdmUgdXRpbGl0aWVzCiAgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCcnKQotICAgICAgICBiaXRiYWtlKCJkaWZmdXRpbHMtbmF0aXZlIC1jIGFkZHRvX3JlY2lwZV9zeXNyb290IikKKyAgICAgICAgYml0YmFrZSgiZGlmZm9zY29wZS1uYXRpdmUgZGlmZnV0aWxzLW5hdGl2ZSBqcXVlcnktbmF0aXZlIC1jIGFkZHRvX3JlY2lwZV9zeXNyb290IikKICAgICAgICAgZGlmZnV0aWxzX3N5c3Jvb3QgPSBnZXRfYmJfdmFyKCJSRUNJUEVfU1lTUk9PVF9OQVRJVkUiLCAiZGlmZnV0aWxzLW5hdGl2ZSIpCisgICAgICAgIGRpZmZvc2NvcGVfc3lzcm9vdCA9IGdldF9iYl92YXIoIlJFQ0lQRV9TWVNST09UX05BVElWRSIsICJkaWZmb3Njb3BlLW5hdGl2ZSIpCisgICAgICAgIGpxdWVyeV9zeXNyb290ID0gZ2V0X2JiX3ZhcigiUkVDSVBFX1NZU1JPT1RfTkFUSVZFIiwgImpxdWVyeS1uYXRpdmUiKQogCi0gICAgICAgICMgUmVwcm9kdWNpYmxlIGJ1aWxkcyBzaG91bGQgbm90IHB1bGwgZnJvbSBzc3RhdGUgb3IgbWlycm9ycywgYnV0Ci0gICAgICAgICMgc2hhcmluZyBETF9ESVIgaXMgZmluZQotICAgICAgICBjb21tb25fY29uZmlnID0gdGV4dHdyYXAuZGVkZW50KCcnJ1wKLSAgICAgICAgICAgIElOSEVSSVQgKz0gInJlcHJvZHVjaWJsZV9idWlsZCIKLSAgICAgICAgICAgIFBBQ0tBR0VfQ0xBU1NFUyA9ICIlcyIKLSAgICAgICAgICAgIFNTVEFURV9ESVIgPSAiJHtUTVBESVJ9L3NzdGF0ZSIKLSAgICAgICAgICAgICcnJykgJSAoJyAnLmpvaW4oJ3BhY2thZ2VfJXMnICUgYyBmb3IgYyBpbiBzZWxmLnBhY2thZ2VfY2xhc3NlcykpCisgICAgICAgIGlmIHNlbGYuc2F2ZV9yZXN1bHRzOgorICAgICAgICAgICAgb3MubWFrZWRpcnMoc2VsZi5zYXZlX3Jlc3VsdHMsIGV4aXN0X29rPVRydWUpCisgICAgICAgICAgICBkYXRlc3RyID0gZGF0ZXRpbWUuZGF0ZXRpbWUubm93KCkuc3RyZnRpbWUoJyVZJW0lZCcpCisgICAgICAgICAgICBzYXZlX2RpciA9IHRlbXBmaWxlLm1rZHRlbXAocHJlZml4PSdvZS1yZXByb2R1Y2libGUtJXMtJyAlIGRhdGVzdHIsIGRpcj1zZWxmLnNhdmVfcmVzdWx0cykKKyAgICAgICAgICAgIG9zLmNobW9kKHNhdmVfZGlyLCBzdGF0LlNfSVJXWFUgfCBzdGF0LlNfSVJHUlAgfCBzdGF0LlNfSVhHUlAgfCBzdGF0LlNfSVJPVEggfCBzdGF0LlNfSVhPVEgpCisgICAgICAgICAgICBzZWxmLmxvZ2dlci5pbmZvKCdOb24tcmVwcm9kdWNpYmxlIHBhY2thZ2VzIHdpbGwgYmUgY29waWVkIHRvICVzJywgc2F2ZV9kaXIpCiAKLSAgICAgICAgIyBQZXJmb3JtIGEgYnVpbGQuCi0gICAgICAgIHJlcHJvZHVjaWJsZUFfdG1wID0gb3MucGF0aC5qb2luKHNlbGYudG9wZGlyLCAncmVwcm9kdWNpYmxlQScsICd0bXAnKQotICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhyZXByb2R1Y2libGVBX3RtcCk6Ci0gICAgICAgICAgICBiYi51dGlscy5yZW1vdmUocmVwcm9kdWNpYmxlQV90bXAsIHJlY3Vyc2U9VHJ1ZSkKLQotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygodGV4dHdyYXAuZGVkZW50KCcnJ1wKLSAgICAgICAgICAgIFRNUERJUiA9ICIlcyIKLSAgICAgICAgICAgICcnJykgJSByZXByb2R1Y2libGVBX3RtcCkgKyBjb21tb25fY29uZmlnKQotICAgICAgICB2YXJzX0EgPSBnZXRfYmJfdmFycyhjYXB0dXJlX3ZhcnMpCi0gICAgICAgIGJpdGJha2UoJyAnLmpvaW4oc2VsZi5pbWFnZXMpKQotCi0gICAgICAgICMgUGVyZm9ybSBhbm90aGVyIGJ1aWxkLgotICAgICAgICByZXByb2R1Y2libGVCX3RtcCA9IG9zLnBhdGguam9pbihzZWxmLnRvcGRpciwgJ3JlcHJvZHVjaWJsZUInLCAndG1wJykKLSAgICAgICAgaWYgb3MucGF0aC5leGlzdHMocmVwcm9kdWNpYmxlQl90bXApOgotICAgICAgICAgICAgYmIudXRpbHMucmVtb3ZlKHJlcHJvZHVjaWJsZUJfdG1wLCByZWN1cnNlPVRydWUpCi0KLSAgICAgICAgc2VsZi53cml0ZV9jb25maWcoKHRleHR3cmFwLmRlZGVudCgnJydcCi0gICAgICAgICAgICBTU1RBVEVfTUlSUk9SID0gIiIKLSAgICAgICAgICAgIFRNUERJUiA9ICIlcyIKLSAgICAgICAgICAgICcnJykgJSByZXByb2R1Y2libGVCX3RtcCkgKyBjb21tb25fY29uZmlnKQotICAgICAgICB2YXJzX0IgPSBnZXRfYmJfdmFycyhjYXB0dXJlX3ZhcnMpCi0gICAgICAgIGJpdGJha2UoJyAnLmpvaW4oc2VsZi5pbWFnZXMpKQorICAgICAgICB2YXJzX0EgPSBzZWxmLmRvX3Rlc3RfYnVpbGQoJ3JlcHJvZHVjaWJsZUEnLCBzZWxmLmJ1aWxkX2Zyb21fc3N0YXRlKQorICAgICAgICB2YXJzX0IgPSBzZWxmLmRvX3Rlc3RfYnVpbGQoJ3JlcHJvZHVjaWJsZUInLCBGYWxzZSkKIAogICAgICAgICAjIE5PVEU6IFRoZSB0ZW1wIGRpcmVjdG9yaWVzIGZyb20gdGhlIHJlcHJvZHVjaWJsZSBidWlsZCBhcmUgcHVycG9zZWx5CiAgICAgICAgICMga2VwdCBhZnRlciB0aGUgYnVpbGQgc28gaXQgY2FuIGJlIGRpZmZlZCBmb3IgZGVidWdnaW5nLgogCisgICAgICAgIGZhaWxzID0gW10KKwogICAgICAgICBmb3IgYyBpbiBzZWxmLnBhY2thZ2VfY2xhc3NlczoKICAgICAgICAgICAgIHdpdGggc2VsZi5zdWJUZXN0KHBhY2thZ2VfY2xhc3M9Yyk6CiAgICAgICAgICAgICAgICAgcGFja2FnZV9jbGFzcyA9ICdwYWNrYWdlXycgKyBjCkBAIC0xOTMsMTAgKzIxMywyOCBAQAogCiAgICAgICAgICAgICAgICAgaWYgc2VsZi5zYXZlX3Jlc3VsdHM6CiAgICAgICAgICAgICAgICAgICAgIGZvciBkIGluIHJlc3VsdC5kaWZmZXJlbnQ6Ci0gICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmNvcHlfZmlsZShkLnJlZmVyZW5jZSwgJy8nLmpvaW4oW3NhdmVfZGlyLCBkLnJlZmVyZW5jZV0pKQotICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb3B5X2ZpbGUoZC50ZXN0LCAnLycuam9pbihbc2F2ZV9kaXIsIGQudGVzdF0pKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb3B5X2ZpbGUoZC5yZWZlcmVuY2UsICcvJy5qb2luKFtzYXZlX2RpciwgJ3BhY2thZ2VzJywgc3RyaXBfdG9wZGlyKGQucmVmZXJlbmNlKV0pKQorICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5jb3B5X2ZpbGUoZC50ZXN0LCAnLycuam9pbihbc2F2ZV9kaXIsICdwYWNrYWdlcycsIHN0cmlwX3RvcGRpcihkLnRlc3QpXSkpCiAKICAgICAgICAgICAgICAgICBpZiByZXN1bHQubWlzc2luZyBvciByZXN1bHQuZGlmZmVyZW50OgotICAgICAgICAgICAgICAgICAgICBzZWxmLmZhaWwoIlRoZSBmb2xsb3dpbmcgJXMgcGFja2FnZXMgYXJlIG1pc3Npbmcgb3IgZGlmZmVyZW50OiAlcyIgJQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIChjLCAnICcuam9pbihyLnRlc3QgZm9yIHIgaW4gKHJlc3VsdC5taXNzaW5nICsgcmVzdWx0LmRpZmZlcmVudCkpKSkKKyAgICAgICAgICAgICAgICAgICAgZmFpbHMuYXBwZW5kKCJUaGUgZm9sbG93aW5nICVzIHBhY2thZ2VzIGFyZSBtaXNzaW5nIG9yIGRpZmZlcmVudDogJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoYywgJ1xuJy5qb2luKHIudGVzdCBmb3IgciBpbiAocmVzdWx0Lm1pc3NpbmcgKyByZXN1bHQuZGlmZmVyZW50KSkpKQorCisgICAgICAgICMgQ2xlYW4gdXAgZW1wdHkgZGlyZWN0b3JpZXMKKyAgICAgICAgaWYgc2VsZi5zYXZlX3Jlc3VsdHM6CisgICAgICAgICAgICBpZiBub3Qgb3MubGlzdGRpcihzYXZlX2Rpcik6CisgICAgICAgICAgICAgICAgb3Mucm1kaXIoc2F2ZV9kaXIpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmluZm8oJ1J1bm5pbmcgZGlmZm9zY29wZScpCisgICAgICAgICAgICAgICAgcGFja2FnZV9kaXIgPSBvcy5wYXRoLmpvaW4oc2F2ZV9kaXIsICdwYWNrYWdlcycpCisgICAgICAgICAgICAgICAgcGFja2FnZV9odG1sX2RpciA9IG9zLnBhdGguam9pbihwYWNrYWdlX2RpciwgJ2RpZmYtaHRtbCcpCisKKyAgICAgICAgICAgICAgICAjIENvcHkganF1ZXJ5IHRvIGltcHJvdmUgdGhlIGRpZmZvc2NvcGUgb3V0cHV0IHVzYWJpbGl0eQorICAgICAgICAgICAgICAgIHNlbGYuY29weV9maWxlKG9zLnBhdGguam9pbihqcXVlcnlfc3lzcm9vdCwgJ3Vzci9zaGFyZS9qYXZhc2NyaXB0L2pxdWVyeS9qcXVlcnkubWluLmpzJyksIG9zLnBhdGguam9pbihwYWNrYWdlX2h0bWxfZGlyLCAnanF1ZXJ5LmpzJykpCisKKyAgICAgICAgICAgICAgICBydW5DbWQoWydkaWZmb3Njb3BlJywgJy0tbm8tZGVmYXVsdC1saW1pdHMnLCAnLS1leGNsdWRlLWRpcmVjdG9yeS1tZXRhZGF0YScsICctLWh0bWwtZGlyJywgcGFja2FnZV9odG1sX2RpciwgJ3JlcHJvZHVjaWJsZUEnLCAncmVwcm9kdWNpYmxlQiddLAorICAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX3N5c3Jvb3Q9ZGlmZm9zY29wZV9zeXNyb290LCBpZ25vcmVfc3RhdHVzPVRydWUsIGN3ZD1wYWNrYWdlX2RpcikKKworICAgICAgICBpZiBmYWlsczoKKyAgICAgICAgICAgIHNlbGYuZmFpbCgnXG4nLmpvaW4oZmFpbHMpKQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVudGltZV90ZXN0LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3J1bnRpbWVfdGVzdC5weQppbmRleCA0YjU2ZTViLi42MGNiMmUwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvcnVudGltZV90ZXN0LnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9ydW50aW1lX3Rlc3QucHkKQEAgLTEwLDYgKzEwLDcgQEAKIGltcG9ydCB0ZW1wZmlsZQogaW1wb3J0IHNodXRpbAogaW1wb3J0IG9lLmxzYgorZnJvbSBvZXFhLmNvcmUuZGVjb3JhdG9yLmRhdGEgaW1wb3J0IHNraXBJZk5vdFFlbXUKIAogY2xhc3MgVGVzdEV4cG9ydChPRVNlbGZ0ZXN0VGVzdENhc2UpOgogCkBAIC0xNjYsOSArMTY3LDkgQEAKICAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1mdWxsLWNtZGxpbmUgc29jYXQnKQogICAgICAgICBiaXRiYWtlKCctYyB0ZXN0aW1hZ2UgY29yZS1pbWFnZS1mdWxsLWNtZGxpbmUnKQogCi0gICAgZGVmIHRlc3RfdGVzdGltYWdlX3ZpcmdsX2d0ayhzZWxmKToKKyAgICBkZWYgdGVzdF90ZXN0aW1hZ2VfdmlyZ2xfZ3RrX3NkbChzZWxmKToKICAgICAgICAgIiIiCi0gICAgICAgIFN1bW1hcnk6IENoZWNrIGhvc3QtYXNzaXN0ZWQgYWNjZWxlcmF0ZSBPcGVuR0wgZnVuY3Rpb25hbGl0eSBpbiBxZW11IHdpdGggZ3RrIGZyb250ZW5kCisgICAgICAgIFN1bW1hcnk6IENoZWNrIGhvc3QtYXNzaXN0ZWQgYWNjZWxlcmF0ZSBPcGVuR0wgZnVuY3Rpb25hbGl0eSBpbiBxZW11IHdpdGggZ3RrIGFuZCBTREwgZnJvbnRlbmRzCiAgICAgICAgIEV4cGVjdGVkOiAxLiBDaGVjayB0aGF0IHZpcmdsIGtlcm5lbCBkcml2ZXIgaXMgbG9hZGVkIGFuZCAzZCBhY2NlbGVyYXRpb24gaXMgZW5hYmxlZAogICAgICAgICAgICAgICAgICAgMi4gQ2hlY2sgdGhhdCBrbXNjdWJlIGRlbW8gcnVucyB3aXRob3V0IGNyYXNoaW5nLgogICAgICAgICBQcm9kdWN0OiBvZS1jb3JlCkBAIC0xODEsMjAgKzE4MiwzMSBAQAogICAgICAgICAgICAgc2VsZi5za2lwVGVzdCgndmlyZ2wgaXNuXCd0IHdvcmtpbmcgd2l0aCBEZWJpYW4gOCcpCiAgICAgICAgIGlmIGRpc3RybyBhbmQgZGlzdHJvID09ICdjZW50b3MtNyc6CiAgICAgICAgICAgICBzZWxmLnNraXBUZXN0KCd2aXJnbCBpc25cJ3Qgd29ya2luZyB3aXRoIENlbnRvcyA3JykKKyAgICAgICAgaWYgZGlzdHJvIGFuZCBkaXN0cm8gPT0gJ29wZW5zdXNlbGVhcC0xNS4wJzoKKyAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3ZpcmdsIGlzblwndCB3b3JraW5nIHdpdGggT3BlbnN1c2UgMTUuMCcpCiAKICAgICAgICAgcWVtdV9wYWNrYWdlY29uZmlnID0gZ2V0X2JiX3ZhcignUEFDS0FHRUNPTkZJRycsICdxZW11LXN5c3RlbS1uYXRpdmUnKQorICAgICAgICBzZGxfcGFja2FnZWNvbmZpZyA9IGdldF9iYl92YXIoJ1BBQ0tBR0VDT05GSUcnLCAnbGlic2RsMi1uYXRpdmUnKQogICAgICAgICBmZWF0dXJlcyA9ICdJTkhFUklUICs9ICJ0ZXN0aW1hZ2UiXG4nCiAgICAgICAgIGlmICdndGsrJyBub3QgaW4gcWVtdV9wYWNrYWdlY29uZmlnOgogICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLXFlbXUtc3lzdGVtLW5hdGl2ZSA9ICIgZ3RrKyJcbicKKyAgICAgICAgaWYgJ3NkbCcgbm90IGluIHFlbXVfcGFja2FnZWNvbmZpZzoKKyAgICAgICAgICAgIGZlYXR1cmVzICs9ICdQQUNLQUdFQ09ORklHX2FwcGVuZF9wbi1xZW11LXN5c3RlbS1uYXRpdmUgPSAiIHNkbCJcbicKICAgICAgICAgaWYgJ3ZpcmdscmVuZGVyZXInIG5vdCBpbiBxZW11X3BhY2thZ2Vjb25maWc6CiAgICAgICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRUNPTkZJR19hcHBlbmRfcG4tcWVtdS1zeXN0ZW0tbmF0aXZlID0gIiB2aXJnbHJlbmRlcmVyIlxuJwogICAgICAgICBpZiAnZ2x4JyBub3QgaW4gcWVtdV9wYWNrYWdlY29uZmlnOgogICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLXFlbXUtc3lzdGVtLW5hdGl2ZSA9ICIgZ2x4IlxuJworICAgICAgICBpZiAnb3BlbmdsJyBub3QgaW4gc2RsX3BhY2thZ2Vjb25maWc6CisgICAgICAgICAgICBmZWF0dXJlcyArPSAnUEFDS0FHRUNPTkZJR19hcHBlbmRfcG4tbGlic2RsMi1uYXRpdmUgPSAiIG9wZW5nbCJcbicKICAgICAgICAgZmVhdHVyZXMgKz0gJ1RFU1RfU1VJVEVTID0gInBpbmcgc3NoIHZpcmdsIlxuJwogICAgICAgICBmZWF0dXJlcyArPSAnSU1BR0VfRkVBVFVSRVNfYXBwZW5kID0gIiBzc2gtc2VydmVyLWRyb3BiZWFyIlxuJwogICAgICAgICBmZWF0dXJlcyArPSAnSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIGttc2N1YmUiXG4nCi0gICAgICAgIGZlYXR1cmVzICs9ICdURVNUX1JVTlFFTVVQQVJBTVMgPSAiZ3RrIGdsIlxuJwotICAgICAgICBzZWxmLndyaXRlX2NvbmZpZyhmZWF0dXJlcykKKyAgICAgICAgZmVhdHVyZXNfZ3RrID0gZmVhdHVyZXMgKyAnVEVTVF9SVU5RRU1VUEFSQU1TID0gImd0ayBnbCJcbicKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXNfZ3RrKQorICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQorICAgICAgICBiaXRiYWtlKCctYyB0ZXN0aW1hZ2UgY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgZmVhdHVyZXNfc2RsID0gZmVhdHVyZXMgKyAnVEVTVF9SVU5RRU1VUEFSQU1TID0gInNkbCBnbCJcbicKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXNfc2RsKQogICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQogICAgICAgICBiaXRiYWtlKCctYyB0ZXN0aW1hZ2UgY29yZS1pbWFnZS1taW5pbWFsJykKIApAQCAtMjMyLDcgKzI0NCw0NyBAQAogICAgICAgICBiaXRiYWtlKCctYyB0ZXN0aW1hZ2UgY29yZS1pbWFnZS1taW5pbWFsJykKIAogY2xhc3MgUG9zdGluc3QoT0VTZWxmdGVzdFRlc3RDYXNlKToKLSAgICBkZWYgdGVzdF9wb3N0aW5zdF9yb290ZnNfYW5kX2Jvb3Qoc2VsZik6CisKKyAgICBkZWYgaW5pdF9tYW5hZ2VyX2xvb3Aoc2VsZiwgaW5pdF9tYW5hZ2VyKToKKyAgICAgICAgaW1wb3J0IG9lLnBhdGgKKworICAgICAgICB2YXJzID0gZ2V0X2JiX3ZhcnMoKCJJTUFHRV9ST09URlMiLCAic3lzY29uZmRpciIpLCAiY29yZS1pbWFnZS1taW5pbWFsIikKKyAgICAgICAgcm9vdGZzID0gdmFyc1siSU1BR0VfUk9PVEZTIl0KKyAgICAgICAgc2VsZi5hc3NlcnRJc05vdE5vbmUocm9vdGZzKQorICAgICAgICBzeXNjb25mZGlyID0gdmFyc1sic3lzY29uZmRpciJdCisgICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHN5c2NvbmZkaXIpCisgICAgICAgICMgTmVlZCB0byB1c2Ugb2UucGF0aCBoZXJlIGFzIHN5c2NvbmZkaXIgc3RhcnRzIHdpdGggLworICAgICAgICBob3N0dGVzdGRpciA9IG9lLnBhdGguam9pbihyb290ZnMsIHN5c2NvbmZkaXIsICJwb3N0aW5zdC10ZXN0IikKKyAgICAgICAgdGFyZ2V0dGVzdGRpciA9IG9zLnBhdGguam9pbihzeXNjb25mZGlyLCAicG9zdGluc3QtdGVzdCIpCisKKyAgICAgICAgZm9yIGNsYXNzZXMgaW4gKCJwYWNrYWdlX3JwbSIsICJwYWNrYWdlX2RlYiIsICJwYWNrYWdlX2lwayIpOgorICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoaW5pdF9tYW5hZ2VyPWluaXRfbWFuYWdlciwgcGFja2FnZV9jbGFzcz1jbGFzc2VzKToKKyAgICAgICAgICAgICAgICBmZWF0dXJlcyA9ICdDT1JFX0lNQUdFX0VYVFJBX0lOU1RBTEwgPSAicG9zdGluc3QtZGVsYXllZC1iIlxuJworICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdJTUFHRV9GRUFUVVJFUyArPSAicGFja2FnZS1tYW5hZ2VtZW50IGVtcHR5LXJvb3QtcGFzc3dvcmQiXG4nCisgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VfQ0xBU1NFUyA9ICIlcyJcbicgJSBjbGFzc2VzCisgICAgICAgICAgICAgICAgaWYgaW5pdF9tYW5hZ2VyID09ICJzeXN0ZW1kIjoKKyAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ0RJU1RST19GRUFUVVJFU19hcHBlbmQgPSAiIHN5c3RlbWQiXG4nCisgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdWSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyID0gInN5c3RlbWQiXG4nCisgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdESVNUUk9fRkVBVFVSRVNfQkFDS0ZJTExfQ09OU0lERVJFRCA9ICJzeXN2aW5pdCJcbicKKyAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1ZJUlRVQUwtUlVOVElNRV9pbml0c2NyaXB0cyA9ICIiXG4nCisgICAgICAgICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCisKKyAgICAgICAgICAgICAgICBiaXRiYWtlKCdjb3JlLWltYWdlLW1pbmltYWwnKQorCisgICAgICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKG9zLnBhdGguaXNmaWxlKG9zLnBhdGguam9pbihob3N0dGVzdGRpciwgInJvb3RmcyIpKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJvb3RmcyBzdGF0ZSBmaWxlIHdhcyBub3QgY3JlYXRlZCIpCisKKyAgICAgICAgICAgICAgICB3aXRoIHJ1bnFlbXUoJ2NvcmUtaW1hZ2UtbWluaW1hbCcpIGFzIHFlbXU6CisgICAgICAgICAgICAgICAgICAgICMgTWFrZSB0aGUgdGVzdCBlY2hvIGEgc3RyaW5nIGFuZCBzZWFyY2ggZm9yIHRoYXQgYXMKKyAgICAgICAgICAgICAgICAgICAgIyBydW5fc2VyaWFsKCkncyBzdGF0dXMgY29kZSBpcyB1c2VsZXNzLicKKyAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGVuYW1lIGluICgicm9vdGZzIiwgImRlbGF5ZWQtYSIsICJkZWxheWVkLWIiKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHN0YXR1cywgb3V0cHV0ID0gcWVtdS5ydW5fc2VyaWFsKCJ0ZXN0IC1mICVzICYmIGVjaG8gZm91bmQiICUgb3MucGF0aC5qb2luKHRhcmdldHRlc3RkaXIsIGZpbGVuYW1lKSkKKyAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAiZm91bmQiLCAiJXMgd2FzIG5vdCBwcmVzZW50IG9uIGJvb3QiICUgZmlsZW5hbWUpCisKKworCisgICAgQHNraXBJZk5vdFFlbXUoJ3FlbXVhbGwnLCAnVGVzdCBvbmx5IHJ1bnMgaW4gcWVtdScpCisgICAgZGVmIHRlc3RfcG9zdGluc3Rfcm9vdGZzX2FuZF9ib290X3N5c3Zpbml0KHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgU3VtbWFyeTogICAgICAgIFRoZSBwdXJwb3NlIG9mIHRoaXMgdGVzdCBjYXNlIGlzIHRvIHZlcmlmeSBQb3N0LWluc3RhbGxhdGlvbgogICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0cyBhcmUgY2FsbGVkIHdoZW4gcm9vdGZzIGlzIGNyZWF0ZWQgYW5kIGFsc28gdGVzdApAQCAtMjQ2LDQ2ICsyOTgsMzIgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNyZWF0ZWQgYnkgcG9zdGluc3RfYm9vdCByZWNpcGUgaXMgcHJlc2VudCBvbiBpbWFnZS4KICAgICAgICAgRXhwZWN0ZWQ6ICAgICAgIFRoZSBmaWxlcyBhcmUgc3VjY2Vzc2Z1bGx5IGNyZWF0ZWQgZHVyaW5nIHJvb3RmcyBhbmQgYm9vdAogICAgICAgICAgICAgICAgICAgICAgICAgdGltZSBmb3IgMyBkaWZmZXJlbnQgcGFja2FnZSBtYW5hZ2VyczogcnBtLGlwayxkZWIgYW5kCi0gICAgICAgICAgICAgICAgICAgICAgICBmb3IgaW5pdGlhbGl6YXRpb24gbWFuYWdlcnM6IHN5c3Zpbml0IGFuZCBzeXN0ZW1kLgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGluaXRpYWxpemF0aW9uIG1hbmFnZXJzOiBzeXN2aW5pdC4KKworICAgICAgICAiIiIKKyAgICAgICAgc2VsZi5pbml0X21hbmFnZXJfbG9vcCgic3lzdmluaXQiKQorCisKKyAgICBAc2tpcElmTm90UWVtdSgncWVtdWFsbCcsICdUZXN0IG9ubHkgcnVucyBpbiBxZW11JykKKyAgICBkZWYgdGVzdF9wb3N0aW5zdF9yb290ZnNfYW5kX2Jvb3Rfc3lzdGVtZChzZWxmKToKKyAgICAgICAgIiIiCisgICAgICAgIFN1bW1hcnk6ICAgICAgICBUaGUgcHVycG9zZSBvZiB0aGlzIHRlc3QgY2FzZSBpcyB0byB2ZXJpZnkgUG9zdC1pbnN0YWxsYXRpb24KKyAgICAgICAgICAgICAgICAgICAgICAgIHNjcmlwdHMgYXJlIGNhbGxlZCB3aGVuIHJvb3RmcyBpcyBjcmVhdGVkIGFuZCBhbHNvIHRlc3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHRoYXQgc2NyaXB0IGNhbiBiZSBkZWxheWVkIHRvIHJ1biBhdCBmaXJzdCBib290LgorICAgICAgICBEZXBlbmRlbmNpZXM6ICAgTkEKKyAgICAgICAgU3RlcHM6ICAgICAgICAgIDEuIEFkZCBwcm9wZXIgY29uZmlndXJhdGlvbiB0byBsb2NhbC5jb25mIGZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgIDIuIEJ1aWxkIGEgImNvcmUtaW1hZ2UtbWluaW1hbCIgaW1hZ2UKKyAgICAgICAgICAgICAgICAgICAgICAgIDMuIFZlcmlmeSB0aGF0IGZpbGUgY3JlYXRlZCBieSBwb3N0aW5zdF9yb290ZnMgcmVjaXBlIGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICBwcmVzZW50IG9uIHJvb3RmcyBkaXIuCisgICAgICAgICAgICAgICAgICAgICAgICA0LiBCb290IHRoZSBpbWFnZSBjcmVhdGVkIG9uIHFlbXUgYW5kIHZlcmlmeSB0aGF0IHRoZSBmaWxlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBjcmVhdGVkIGJ5IHBvc3RpbnN0X2Jvb3QgcmVjaXBlIGlzIHByZXNlbnQgb24gaW1hZ2UuCisgICAgICAgIEV4cGVjdGVkOiAgICAgICBUaGUgZmlsZXMgYXJlIHN1Y2Nlc3NmdWxseSBjcmVhdGVkIGR1cmluZyByb290ZnMgYW5kIGJvb3QKKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUgZm9yIDMgZGlmZmVyZW50IHBhY2thZ2UgbWFuYWdlcnM6IHJwbSxpcGssZGViIGFuZAorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGluaXRpYWxpemF0aW9uIG1hbmFnZXJzOiBzeXN0ZW1kLgogCiAgICAgICAgICIiIgogCi0gICAgICAgIGltcG9ydCBvZS5wYXRoCi0KLSAgICAgICAgdmFycyA9IGdldF9iYl92YXJzKCgiSU1BR0VfUk9PVEZTIiwgInN5c2NvbmZkaXIiKSwgImNvcmUtaW1hZ2UtbWluaW1hbCIpCi0gICAgICAgIHJvb3RmcyA9IHZhcnNbIklNQUdFX1JPT1RGUyJdCi0gICAgICAgIHNlbGYuYXNzZXJ0SXNOb3ROb25lKHJvb3RmcykKLSAgICAgICAgc3lzY29uZmRpciA9IHZhcnNbInN5c2NvbmZkaXIiXQotICAgICAgICBzZWxmLmFzc2VydElzTm90Tm9uZShzeXNjb25mZGlyKQotICAgICAgICAjIE5lZWQgdG8gdXNlIG9lLnBhdGggaGVyZSBhcyBzeXNjb25mZGlyIHN0YXJ0cyB3aXRoIC8KLSAgICAgICAgaG9zdHRlc3RkaXIgPSBvZS5wYXRoLmpvaW4ocm9vdGZzLCBzeXNjb25mZGlyLCAicG9zdGluc3QtdGVzdCIpCi0gICAgICAgIHRhcmdldHRlc3RkaXIgPSBvcy5wYXRoLmpvaW4oc3lzY29uZmRpciwgInBvc3RpbnN0LXRlc3QiKQotCi0gICAgICAgIGZvciBpbml0X21hbmFnZXIgaW4gKCJzeXN2aW5pdCIsICJzeXN0ZW1kIik6Ci0gICAgICAgICAgICBmb3IgY2xhc3NlcyBpbiAoInBhY2thZ2VfcnBtIiwgInBhY2thZ2VfZGViIiwgInBhY2thZ2VfaXBrIik6Ci0gICAgICAgICAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QoaW5pdF9tYW5hZ2VyPWluaXRfbWFuYWdlciwgcGFja2FnZV9jbGFzcz1jbGFzc2VzKToKLSAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgPSAnQ09SRV9JTUFHRV9FWFRSQV9JTlNUQUxMID0gInBvc3RpbnN0LWRlbGF5ZWQtYiJcbicKLSAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ0lNQUdFX0ZFQVRVUkVTICs9ICJwYWNrYWdlLW1hbmFnZW1lbnQgZW1wdHktcm9vdC1wYXNzd29yZCJcbicKLSAgICAgICAgICAgICAgICAgICAgZmVhdHVyZXMgKz0gJ1BBQ0tBR0VfQ0xBU1NFUyA9ICIlcyJcbicgJSBjbGFzc2VzCi0gICAgICAgICAgICAgICAgICAgIGlmIGluaXRfbWFuYWdlciA9PSAic3lzdGVtZCI6Ci0gICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnRElTVFJPX0ZFQVRVUkVTX2FwcGVuZCA9ICIgc3lzdGVtZCJcbicKLSAgICAgICAgICAgICAgICAgICAgICAgIGZlYXR1cmVzICs9ICdWSVJUVUFMLVJVTlRJTUVfaW5pdF9tYW5hZ2VyID0gInN5c3RlbWQiXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnRElTVFJPX0ZFQVRVUkVTX0JBQ0tGSUxMX0NPTlNJREVSRUQgPSAic3lzdmluaXQiXG4nCi0gICAgICAgICAgICAgICAgICAgICAgICBmZWF0dXJlcyArPSAnVklSVFVBTC1SVU5USU1FX2luaXRzY3JpcHRzID0gIiJcbicKLSAgICAgICAgICAgICAgICAgICAgc2VsZi53cml0ZV9jb25maWcoZmVhdHVyZXMpCi0KLSAgICAgICAgICAgICAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKLQotICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3MucGF0aC5pc2ZpbGUob3MucGF0aC5qb2luKGhvc3R0ZXN0ZGlyLCAicm9vdGZzIikpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInJvb3RmcyBzdGF0ZSBmaWxlIHdhcyBub3QgY3JlYXRlZCIpCi0KLSAgICAgICAgICAgICAgICAgICAgd2l0aCBydW5xZW11KCdjb3JlLWltYWdlLW1pbmltYWwnKSBhcyBxZW11OgotICAgICAgICAgICAgICAgICAgICAgICAgIyBNYWtlIHRoZSB0ZXN0IGVjaG8gYSBzdHJpbmcgYW5kIHNlYXJjaCBmb3IgdGhhdCBhcwotICAgICAgICAgICAgICAgICAgICAgICAgIyBydW5fc2VyaWFsKCkncyBzdGF0dXMgY29kZSBpcyB1c2VsZXNzLicKLSAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmaWxlbmFtZSBpbiAoInJvb3RmcyIsICJkZWxheWVkLWEiLCAiZGVsYXllZC1iIik6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3RhdHVzLCBvdXRwdXQgPSBxZW11LnJ1bl9zZXJpYWwoInRlc3QgLWYgJXMgJiYgZWNobyBmb3VuZCIgJSBvcy5wYXRoLmpvaW4odGFyZ2V0dGVzdGRpciwgZmlsZW5hbWUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwob3V0cHV0LCAiZm91bmQiLCAiJXMgd2FzIG5vdCBwcmVzZW50IG9uIGJvb3QiICUgZmlsZW5hbWUpCi0KKyAgICAgICAgc2VsZi5pbml0X21hbmFnZXJfbG9vcCgic3lzdGVtZCIpCiAKIAogICAgIGRlZiB0ZXN0X2ZhaWxpbmdfcG9zdGluc3Qoc2VsZik6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc2lnbmluZy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zaWduaW5nLnB5CmluZGV4IDkzYjE1YWUuLjIwMmQ1NDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zaWduaW5nLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zaWduaW5nLnB5CkBAIC0xNTcsOCArMTU3LDggQEAKICAgICAgICAgICAgIGJpdGJha2UoJy1jIGNsZWFuICVzJyAlIHRlc3RfcmVjaXBlKQogICAgICAgICAgICAgYml0YmFrZSgnLWMgcG9wdWxhdGVfbGljICVzJyAlIHRlc3RfcmVjaXBlKQogCi0gICAgICAgICAgICByZWNpcGVfc2lnID0gZ2xvYi5nbG9iKHNzdGF0ZWRpciArICcvKi8qOmVkOipfcG9wdWxhdGVfbGljLnRnei5zaWcnKQotICAgICAgICAgICAgcmVjaXBlX3RneiA9IGdsb2IuZ2xvYihzc3RhdGVkaXIgKyAnLyovKjplZDoqX3BvcHVsYXRlX2xpYy50Z3onKQorICAgICAgICAgICAgcmVjaXBlX3NpZyA9IGdsb2IuZ2xvYihzc3RhdGVkaXIgKyAnLyovKi8qOmVkOipfcG9wdWxhdGVfbGljLnRnei5zaWcnKQorICAgICAgICAgICAgcmVjaXBlX3RneiA9IGdsb2IuZ2xvYihzc3RhdGVkaXIgKyAnLyovKi8qOmVkOipfcG9wdWxhdGVfbGljLnRneicpCiAKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobGVuKHJlY2lwZV9zaWcpLCAxLCAnRmFpbGVkIHRvIGZpbmQgLnNpZyBmaWxlLicpCiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihyZWNpcGVfdGd6KSwgMSwgJ0ZhaWxlZCB0byBmaW5kIC50Z3ogZmlsZS4nKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZS5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGUucHkKaW5kZXggNDEwZGVjNi4uODBjZTllMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZS5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRlLnB5CkBAIC01NiwxMSArNTYsMTEgQEAKICAgICBkZWYgc2VhcmNoX3NzdGF0ZShzZWxmLCBmaWxlbmFtZV9yZWdleCwgZGlzdHJvX3NwZWNpZmljPVRydWUsIGRpc3Ryb19ub25zcGVjaWZpYz1UcnVlKToKICAgICAgICAgcmVzdWx0ID0gW10KICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoc2VsZi5zc3RhdGVfcGF0aCk6Ci0gICAgICAgICAgICBpZiBkaXN0cm9fc3BlY2lmaWMgYW5kIHJlLnNlYXJjaCgiJXMvW2EtejAtOV17Mn0kIiAlIHNlbGYuaG9zdGRpc3Rybywgcm9vdCk6CisgICAgICAgICAgICBpZiBkaXN0cm9fc3BlY2lmaWMgYW5kIHJlLnNlYXJjaChyIiVzLyVzL1thLXowLTldezJ9L1thLXowLTldezJ9JCIgJSAoc2VsZi5zc3RhdGVfcGF0aCwgc2VsZi5ob3N0ZGlzdHJvKSwgcm9vdCk6CiAgICAgICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CiAgICAgICAgICAgICAgICAgICAgIGlmIHJlLnNlYXJjaChmaWxlbmFtZV9yZWdleCwgZik6CiAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGYpCi0gICAgICAgICAgICBpZiBkaXN0cm9fbm9uc3BlY2lmaWMgYW5kIHJlLnNlYXJjaCgiJXMvW2EtejAtOV17Mn0kIiAlIHNlbGYuc3N0YXRlX3BhdGgsIHJvb3QpOgorICAgICAgICAgICAgaWYgZGlzdHJvX25vbnNwZWNpZmljIGFuZCByZS5zZWFyY2gociIlcy9bYS16MC05XXsyfS9bYS16MC05XXsyfSQiICUgc2VsZi5zc3RhdGVfcGF0aCwgcm9vdCk6CiAgICAgICAgICAgICAgICAgZm9yIGYgaW4gZmlsZXM6CiAgICAgICAgICAgICAgICAgICAgIGlmIHJlLnNlYXJjaChmaWxlbmFtZV9yZWdleCwgZik6CiAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHQuYXBwZW5kKGYpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRldGVzdHMucHkgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3N0YXRldGVzdHMucHkKaW5kZXggNjc1N2EwZS4uOWFkYjUxMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3NzdGF0ZXRlc3RzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zc3RhdGV0ZXN0cy5weQpAQCAtNDQ2LDYgKzQ0Niw0NiBAQAogICAgICAgICBzZWxmLmFzc2VydENvdW50RXF1YWwoZmlsZXMxLCBmaWxlczIpCiAKIAorICAgIGRlZiB0ZXN0X3NzdGF0ZV9tdWx0aWxpYl9vcl9ub3RfbmF0aXZlX3NhbWVzaWdzKHNlbGYpOgorICAgICAgICAiIiJUaGUgc3N0YXRlIGNoZWNrc3VtcyBvZiB0d28gbmF0aXZlIHJlY2lwZXMgKGFuZCB0aGVpciBkZXBlbmRlbmNpZXMpCisgICAgICAgIHdoZXJlIHRoZSB0YXJnZXQgaXMgdXNpbmcgbXVsdGlsaWIgaW4gb25lIGJ1dCBub3QgdGhlIG90aGVyCisgICAgICAgIHNob3VsZCBiZSB0aGUgc2FtZS4gV2UgdXNlIHRoZSBxZW11eDg2Y29weSBtYWNoaW5lIHRvIHRlc3QKKyAgICAgICAgdGhpcy4KKyAgICAgICAgIiIiCisKKyAgICAgICAgc2VsZi53cml0ZV9jb25maWcoIiIiCitUTVBESVIgPSBcIiR7VE9QRElSfS90bXAtc3N0YXRlc2FtZWhhc2hcIgorVENMSUJDQVBQRU5EID0gXCJcIgorTUFDSElORSA9IFwicWVtdXg4NlwiCityZXF1aXJlIGNvbmYvbXVsdGlsaWIuY29uZgorTVVMVElMSUJTID0gIm11bHRpbGliOmxpYjMyIgorREVGQVVMVFRVTkVfdmlydGNsYXNzLW11bHRpbGliLWxpYjMyID0gIng4NiIKK0JCX1NJR05BVFVSRV9IQU5ETEVSID0gIk9FQmFzaWNIYXNoIgorIiIiKQorICAgICAgICBzZWxmLnRyYWNrX2Zvcl9jbGVhbnVwKHNlbGYudG9wZGlyICsgIi90bXAtc3N0YXRlc2FtZWhhc2giKQorICAgICAgICBiaXRiYWtlKCJiaW51dGlscy1uYXRpdmUgIC1TIG5vbmUiKQorICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKK1RNUERJUiA9IFwiJHtUT1BESVJ9L3RtcC1zc3RhdGVzYW1laGFzaDJcIgorVENMSUJDQVBQRU5EID0gXCJcIgorTUFDSElORSA9IFwicWVtdXg4NmNvcHlcIgorQkJfU0lHTkFUVVJFX0hBTkRMRVIgPSAiT0VCYXNpY0hhc2giCisiIiIpCisgICAgICAgIHNlbGYudHJhY2tfZm9yX2NsZWFudXAoc2VsZi50b3BkaXIgKyAiL3RtcC1zc3RhdGVzYW1laGFzaDIiKQorICAgICAgICBiaXRiYWtlKCJiaW51dGlscy1uYXRpdmUgLVMgbm9uZSIpCisKKyAgICAgICAgZGVmIGdldF9maWxlcyhkKToKKyAgICAgICAgICAgIGYgPSBbXQorICAgICAgICAgICAgZm9yIHJvb3QsIGRpcnMsIGZpbGVzIGluIG9zLndhbGsoZCk6CisgICAgICAgICAgICAgICAgZm9yIG5hbWUgaW4gZmlsZXM6CisgICAgICAgICAgICAgICAgICAgIGYuYXBwZW5kKG9zLnBhdGguam9pbihyb290LCBuYW1lKSkKKyAgICAgICAgICAgIHJldHVybiBmCisgICAgICAgIGZpbGVzMSA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoL3N0YW1wcyIpCisgICAgICAgIGZpbGVzMiA9IGdldF9maWxlcyhzZWxmLnRvcGRpciArICIvdG1wLXNzdGF0ZXNhbWVoYXNoMi9zdGFtcHMiKQorICAgICAgICBmaWxlczIgPSBbeC5yZXBsYWNlKCJ0bXAtc3N0YXRlc2FtZWhhc2gyIiwgInRtcC1zc3RhdGVzYW1laGFzaCIpIGZvciB4IGluIGZpbGVzMl0KKyAgICAgICAgc2VsZi5tYXhEaWZmID0gTm9uZQorICAgICAgICBzZWxmLmFzc2VydENvdW50RXF1YWwoZmlsZXMxLCBmaWxlczIpCisKKwogICAgIGRlZiB0ZXN0X3NzdGF0ZV9ub29wX3NhbWVzaWdzKHNlbGYpOgogICAgICAgICAiIiIKICAgICAgICAgVGhlIHNzdGF0ZSBjaGVja3N1bXMgb2YgdHdvIGJ1aWxkcyB3aXRoIHRoZXNlIHZhcmlhYmxlcyBjaGFuZ2VkIG9yCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3lzcm9vdC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy9zeXNyb290LnB5Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZlMzQ5MjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvc3lzcm9vdC5weQpAQCAtMCwwICsxLDM3IEBACisjCisjIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBNSVQKKyMKKworaW1wb3J0IHV1aWQKKworZnJvbSBvZXFhLnNlbGZ0ZXN0LmNhc2UgaW1wb3J0IE9FU2VsZnRlc3RUZXN0Q2FzZQorZnJvbSBvZXFhLnV0aWxzLmNvbW1hbmRzIGltcG9ydCAgYml0YmFrZQorCitjbGFzcyBTeXNyb290VGVzdHMoT0VTZWxmdGVzdFRlc3RDYXNlKToKKyAgICBkZWYgdGVzdF9zeXNyb290X2NsZWFudXAoc2VsZik6CisgICAgICAgICIiIgorICAgICAgICBCdWlsZCBzeXNyb290IHRlc3Qgd2hpY2ggZGVwZW5kcyBvbiB2aXJ0dWFsL3N5c3Jvb3QtdGVzdCBmb3Igb25lIG1hY2hpbmUsCisgICAgICAgIHN3aXRjaCBtYWNoaW5lLCBzd2l0Y2ggcHJvdmlkZXIgb2YgdmlydHVhbC9zeXNyb290LXRlc3QgYW5kIGNoZWNrIHRoYXQgdGhlCisgICAgICAgIHN5c3Jvb3QgaXMgY29ycmVjdGx5IGNsZWFuZWQgdXAuIFRoZSBmaWxlcyBpbiB0aGUgdHdvIHByb3ZpZGVycyBvdmVybGFwCisgICAgICAgIHNvIGNhbiBjYXVzZSBlcnJvcnMgaWYgdGhlIHN5c3Jvb3QgY29kZSBkb2Vzbid0IGZ1bmN0aW9uIGNvcnJlY3RseS4KKyAgICAgICAgWWVzLCBzeXNyb290LXRlc3Qgc2hvdWxkIGJlIG1hY2hpbmUgc3BlY2lmaWMgcmVhbGx5IHRvIGF2b2lkIHRoaXMsIGhvd2V2ZXIKKyAgICAgICAgdGhlIHN5c3Jvb3QgY2xlYW51cCBzaG91bGQgYWxzbyB3b3JrIFtZT0NUTyAjMTM3MDJdLiAKKyAgICAgICAgIiIiCisKKyAgICAgICAgdXVpZDEgPSB1dWlkLnV1aWQ0KCkKKyAgICAgICAgdXVpZDIgPSB1dWlkLnV1aWQ0KCkKKworICAgICAgICBzZWxmLndyaXRlX2NvbmZpZygiIiIKK1BSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL3N5c3Jvb3QtdGVzdCA9ICJzeXNyb290LXRlc3QtYXJjaDEiCitNQUNISU5FID0gInFlbXV4ODYiCitURVNUU1RSSU5HX3BuLXN5c3Jvb3QtdGVzdC1hcmNoMSA9ICIlcyIKK1RFU1RTVFJJTkdfcG4tc3lzcm9vdC10ZXN0LWFyY2gyID0gIiVzIgorIiIiICUgKHV1aWQxLCB1dWlkMikpCisgICAgICAgIGJpdGJha2UoInN5c3Jvb3QtdGVzdCIpCisgICAgICAgIHNlbGYud3JpdGVfY29uZmlnKCIiIgorUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvc3lzcm9vdC10ZXN0ID0gInN5c3Jvb3QtdGVzdC1hcmNoMiIKK01BQ0hJTkUgPSAicWVtdXg4NmNvcHkiCitURVNUU1RSSU5HX3BuLXN5c3Jvb3QtdGVzdC1hcmNoMSA9ICIlcyIKK1RFU1RTVFJJTkdfcG4tc3lzcm9vdC10ZXN0LWFyY2gyID0gIiVzIgorIiIiICUgKHV1aWQxLCB1dWlkMikpCisgICAgICAgIGJpdGJha2UoInN5c3Jvb3QtdGVzdCIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvdGluZm9pbC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy90aW5mb2lsLnB5CmluZGV4IDQyYTFiNmIuLmQxYWE3YjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy90aW5mb2lsLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy90aW5mb2lsLnB5CkBAIC02NSwxOSArNjUsNiBAQAogICAgICAgICAgICAgbG9jYWxkYXRhLnNldFZhcignUE4nLCAnaGVsbG8nKQogICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbCgnaGVsbG8nLCBsb2NhbGRhdGEuZ2V0VmFyKCdCUE4nKSkKIAotICAgIGRlZiB0ZXN0X3BhcnNlX3JlY2lwZV9pbml0aWFsX2RhdGFzdG9yZShzZWxmKToKLSAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgotICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PUZhbHNlLCBxdWlldD0yKQotICAgICAgICAgICAgdGVzdHJlY2lwZSA9ICdtZGFkbScKLSAgICAgICAgICAgIGJlc3QgPSB0aW5mb2lsLmZpbmRfYmVzdF9wcm92aWRlcih0ZXN0cmVjaXBlKQotICAgICAgICAgICAgaWYgbm90IGJlc3Q6Ci0gICAgICAgICAgICAgICAgc2VsZi5mYWlsKCdVbmFibGUgdG8gZmluZCByZWNpcGUgcHJvdmlkaW5nICVzJyAlIHRlc3RyZWNpcGUpCi0gICAgICAgICAgICBkY29weSA9IGJiLmRhdGEuY3JlYXRlQ29weSh0aW5mb2lsLmNvbmZpZ19kYXRhKQotICAgICAgICAgICAgZGNvcHkuc2V0VmFyKCdNWVZBUklBQkxFJywgJ3NvbWV2YWx1ZScpCi0gICAgICAgICAgICByZCA9IHRpbmZvaWwucGFyc2VfcmVjaXBlX2ZpbGUoYmVzdFszXSwgY29uZmlnX2RhdGE9ZGNvcHkpCi0gICAgICAgICAgICAjIENoZWNrIHdlIGNhbiBnZXQgdmFyaWFibGUgdmFsdWVzCi0gICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKCdzb21ldmFsdWUnLCByZC5nZXRWYXIoJ01ZVkFSSUFCTEUnKSkKLQogICAgIGRlZiB0ZXN0X2xpc3RfcmVjaXBlcyhzZWxmKToKICAgICAgICAgd2l0aCBiYi50aW5mb2lsLlRpbmZvaWwoKSBhcyB0aW5mb2lsOgogICAgICAgICAgICAgdGluZm9pbC5wcmVwYXJlKGNvbmZpZ19vbmx5PUZhbHNlLCBxdWlldD0yKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3dpYy5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jYXNlcy93aWMucHkKaW5kZXggMGMwM2I0Yi4uYzg3NjVlNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2Nhc2VzL3dpYy5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvc2VsZnRlc3QvY2FzZXMvd2ljLnB5CkBAIC00NCw2ICs0NCwzMCBAQAogICAgICAgICByZXR1cm4gd3JhcHBlZF9mCiAgICAgcmV0dXJuIHdyYXBwZXIKIAorZGVmIGV4dHJhY3RfZmlsZXMoZGVidWdmc19vdXRwdXQpOgorICAgICIiIgorICAgIGV4dHJhY3QgZmlsZSBuYW1lcyBmcm9tIHRoZSBvdXRwdXQgb2YgZGVidWdmcyAtUiAnbHMgLXAnLAorICAgIHdoaWNoIGxvb2tzIGxpa2UgdGhpczoKKworICAgICAvMi8wNDA3NTUvMC8wLy4vL1xuCisgICAgIC8yLzA0MDc1NS8wLzAvLi4vL1xuCisgICAgIC8xMS8wNDA3MDAvMC8wL2xvc3QrZm91bmReTS8vXG4KKyAgICAgLzEyLzA0MDc1NS8xMDAyLzEwMDIvcnVuLy9cbgorICAgICAvMTMvMDQwNzU1LzEwMDIvMTAwMi9zeXMvL1xuCisgICAgIC8xNC8wNDA3NTUvMTAwMi8xMDAyL2Jpbi8vXG4KKyAgICAgLzgwLzA0MDc1NS8xMDAyLzEwMDIvdmFyLy9cbgorICAgICAvOTIvMDQwNzU1LzEwMDIvMTAwMi90bXAvL1xuCisgICAgIiIiCisgICAgIyBOT1RFIHRoZSBvY2Nhc2lvbmFsIF5NIGluIGZpbGUgbmFtZXMKKyAgICByZXR1cm4gW2xpbmUuc3BsaXQoJy8nKVs1XS5zdHJpcCgpIGZvciBsaW5lIGluIFwKKyAgICAgICAgICAgIGRlYnVnZnNfb3V0cHV0LnN0cmlwKCkuc3BsaXQoJy9cbicpXQorCitkZWYgZmlsZXNfb3duX2J5X3Jvb3QoZGVidWdmc19vdXRwdXQpOgorICAgIGZvciBsaW5lIGluIGRlYnVnZnNfb3V0cHV0LnN0cmlwKCkuc3BsaXQoJy9cbicpOgorICAgICAgICBpZiBsaW5lLnNwbGl0KCcvJylbMzo1XSAhPSBbJzAnLCAnMCddOgorICAgICAgICAgICAgcHJpbnQoZGVidWdmc19vdXRwdXQpCisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKyAgICByZXR1cm4gVHJ1ZQogCiBjbGFzcyBXaWNUZXN0Q2FzZShPRVNlbGZ0ZXN0VGVzdENhc2UpOgogICAgICIiIldpYyB0ZXN0IGNsYXNzLiIiIgpAQCAtNjYsNiArOTAsNyBAQAogICAgICAgICAgICAgICAgIHNlbGYuc2tpcFRlc3QoJ3dpYy10b29scyBjYW5ub3QgYmUgYnVpbHQgZHVlIGl0cyAoaW50bHRvb2x8Z2V0dGV4dCktbmF0aXZlIGRlcGVuZGVuY3kgYW5kIE5MUyBkaXNhYmxlJykKIAogICAgICAgICAgICAgYml0YmFrZSgnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgICAgIGJpdGJha2UoJ2NvcmUtaW1hZ2UtbWluaW1hbC1tdGR1dGlscycpCiAgICAgICAgICAgICBXaWNUZXN0Q2FzZS5pbWFnZV9pc19yZWFkeSA9IFRydWUKIAogICAgICAgICBybXRyZWUoc2VsZi5yZXN1bHRkaXIsIGlnbm9yZV9lcnJvcnM9VHJ1ZSkKQEAgLTM5MywyNCArNDE4LDYgQEAKICAgICAgICAgICAgICAgICBydW5DbWQoImRkIGlmPSVzIG9mPSVzIHNraXA9JWQgY291bnQ9JWQiICUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAod2ljaW1nLCBwYXJ0X2ZpbGUsIHN0YXJ0LCBsZW5ndGgpKQogCi0gICAgICAgICAgICBkZWYgZXh0cmFjdF9maWxlcyhkZWJ1Z2ZzX291dHB1dCk6Ci0gICAgICAgICAgICAgICAgIiIiCi0gICAgICAgICAgICAgICAgZXh0cmFjdCBmaWxlIG5hbWVzIGZyb20gdGhlIG91dHB1dCBvZiBkZWJ1Z2ZzIC1SICdscyAtcCcsCi0gICAgICAgICAgICAgICAgd2hpY2ggbG9va3MgbGlrZSB0aGlzOgotCi0gICAgICAgICAgICAgICAgIC8yLzA0MDc1NS8wLzAvLi8vXG4KLSAgICAgICAgICAgICAgICAgLzIvMDQwNzU1LzAvMC8uLi8vXG4KLSAgICAgICAgICAgICAgICAgLzExLzA0MDcwMC8wLzAvbG9zdCtmb3VuZF5NLy9cbgotICAgICAgICAgICAgICAgICAvMTIvMDQwNzU1LzEwMDIvMTAwMi9ydW4vL1xuCi0gICAgICAgICAgICAgICAgIC8xMy8wNDA3NTUvMTAwMi8xMDAyL3N5cy8vXG4KLSAgICAgICAgICAgICAgICAgLzE0LzA0MDc1NS8xMDAyLzEwMDIvYmluLy9cbgotICAgICAgICAgICAgICAgICAvODAvMDQwNzU1LzEwMDIvMTAwMi92YXIvL1xuCi0gICAgICAgICAgICAgICAgIC85Mi8wNDA3NTUvMTAwMi8xMDAyL3RtcC8vXG4KLSAgICAgICAgICAgICAgICAiIiIKLSAgICAgICAgICAgICAgICAjIE5PVEUgdGhlIG9jY2FzaW9uYWwgXk0gaW4gZmlsZSBuYW1lcwotICAgICAgICAgICAgICAgIHJldHVybiBbbGluZS5zcGxpdCgnLycpWzVdLnN0cmlwKCkgZm9yIGxpbmUgaW4gXAotICAgICAgICAgICAgICAgICAgICAgICAgZGVidWdmc19vdXRwdXQuc3RyaXAoKS5zcGxpdCgnL1xuJyldCi0KICAgICAgICAgICAgICMgVGVzdCBwYXJ0aXRpb24gMSwgc2hvdWxkIGNvbnRhaW4gdGhlIG5vcm1hbCByb290IGRpcmVjdG9yaWVzLCBleGNlcHQKICAgICAgICAgICAgICMgL3Vzci4KICAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAnICVzIDI+L2Rldi9udWxsIiAlIFwKQEAgLTQ1MSw2ICs0NTgsMTA0IEBACiAgICAgICAgIGZpbmFsbHk6CiAgICAgICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBvbGRwYXRoCiAKKyAgICBkZWYgdGVzdF9pbmNsdWRlX3BhdGgoc2VsZik6CisgICAgICAgICIiIlRlc3QgLS1pbmNsdWRlLXBhdGggd2tzIG9wdGlvbi4iIiIKKworICAgICAgICBvbGRwYXRoID0gb3MuZW52aXJvblsnUEFUSCddCisgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IGdldF9iYl92YXIoIlBBVEgiLCAid2ljLXRvb2xzIikKKworICAgICAgICB0cnk6CisgICAgICAgICAgICBpbmNsdWRlX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICd0ZXN0LWluY2x1ZGUnKQorICAgICAgICAgICAgb3MubWFrZWRpcnMoaW5jbHVkZV9wYXRoKQorICAgICAgICAgICAgd2l0aCBvcGVuKG9zLnBhdGguam9pbihpbmNsdWRlX3BhdGgsICd0ZXN0LWZpbGUnKSwgJ3cnKSBhcyB0OgorICAgICAgICAgICAgICAgIHQud3JpdGUoInRlc3RcbiIpCisgICAgICAgICAgICB3a3NfZmlsZSA9IG9zLnBhdGguam9pbihpbmNsdWRlX3BhdGgsICd0ZW1wLndrcycpCisgICAgICAgICAgICB3aXRoIG9wZW4od2tzX2ZpbGUsICd3JykgYXMgd2tzOgorICAgICAgICAgICAgICAgIHJvb3Rmc19kaXIgPSBnZXRfYmJfdmFyKCdJTUFHRV9ST09URlMnLCAnY29yZS1pbWFnZS1taW5pbWFsJykKKyAgICAgICAgICAgICAgICB3a3Mud3JpdGUoIiIiCitwYXJ0IC9wYXJ0MSAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgbW1jYmxrMCAtLWZzdHlwZT1leHQ0CitwYXJ0IC9wYXJ0MiAtLXNvdXJjZSByb290ZnMgLS1vbmRpc2sgbW1jYmxrMCAtLWZzdHlwZT1leHQ0IC0taW5jbHVkZS1wYXRoICVzIiIiCisgICAgICAgICAgICAgICAgICAgICAgICAgICUgKGluY2x1ZGVfcGF0aCkpCisgICAgICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpKQorCisgICAgICAgICAgICBwYXJ0MSA9IGdsb2Iob3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAndGVtcC0qLmRpcmVjdC5wMScpKVswXQorICAgICAgICAgICAgcGFydDIgPSBnbG9iKG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgJ3RlbXAtKi5kaXJlY3QucDInKSlbMF0KKworICAgICAgICAgICAgIyBUZXN0IHBhcnRpdGlvbiAxLCBzaG91bGQgbm90IGNvbnRhaW4gJ3Rlc3QtZmlsZScKKyAgICAgICAgICAgIHJlcyA9IHJ1bkNtZCgiZGVidWdmcyAtUiAnbHMgLXAnICVzIDI+L2Rldi9udWxsIiAlIChwYXJ0MSkpCisgICAgICAgICAgICBmaWxlcyA9IGV4dHJhY3RfZmlsZXMocmVzLm91dHB1dCkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0Tm90SW4oJ3Rlc3QtZmlsZScsIGZpbGVzKQorICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChUcnVlLCBmaWxlc19vd25fYnlfcm9vdChyZXMub3V0cHV0KSkKKworICAgICAgICAgICAgIyBUZXN0IHBhcnRpdGlvbiAyLCBzaG91bGQgY29udGFpbiAndGVzdC1maWxlJworICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCcgJXMgMj4vZGV2L251bGwiICUgKHBhcnQyKSkKKyAgICAgICAgICAgIGZpbGVzID0gZXh0cmFjdF9maWxlcyhyZXMub3V0cHV0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigndGVzdC1maWxlJywgZmlsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGZpbGVzX293bl9ieV9yb290KHJlcy5vdXRwdXQpKQorCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBvbGRwYXRoCisKKyAgICBkZWYgdGVzdF9pbmNsdWRlX3BhdGhfZW1iZWRlZChzZWxmKToKKyAgICAgICAgIiIiVGVzdCAtLWluY2x1ZGUtcGF0aCB3a3Mgb3B0aW9uLiIiIgorCisgICAgICAgIG9sZHBhdGggPSBvcy5lbnZpcm9uWydQQVRIJ10KKyAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gZ2V0X2JiX3ZhcigiUEFUSCIsICJ3aWMtdG9vbHMiKQorCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIGluY2x1ZGVfcGF0aCA9IG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgJ3Rlc3QtaW5jbHVkZScpCisgICAgICAgICAgICBvcy5tYWtlZGlycyhpbmNsdWRlX3BhdGgpCisgICAgICAgICAgICB3aXRoIG9wZW4ob3MucGF0aC5qb2luKGluY2x1ZGVfcGF0aCwgJ3Rlc3QtZmlsZScpLCAndycpIGFzIHQ6CisgICAgICAgICAgICAgICAgdC53cml0ZSgidGVzdFxuIikKKyAgICAgICAgICAgIHdrc19maWxlID0gb3MucGF0aC5qb2luKGluY2x1ZGVfcGF0aCwgJ3RlbXAud2tzJykKKyAgICAgICAgICAgIHdpdGggb3Blbih3a3NfZmlsZSwgJ3cnKSBhcyB3a3M6CisgICAgICAgICAgICAgICAgd2tzLndyaXRlKCIiIgorcGFydCAvIC0tc291cmNlIHJvb3RmcyAgLS1mc3R5cGU9ZXh0NCAtLWluY2x1ZGUtcGF0aCAlcyAtLWluY2x1ZGUtcGF0aCBjb3JlLWltYWdlLW1pbmltYWwtbXRkdXRpbHMgZXhwb3J0LyIiIgorICAgICAgICAgICAgICAgICAgICAgICAgICAlIChpbmNsdWRlX3BhdGgpKQorICAgICAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSkKKworICAgICAgICAgICAgcGFydDEgPSBnbG9iKG9zLnBhdGguam9pbihzZWxmLnJlc3VsdGRpciwgJ3RlbXAtKi5kaXJlY3QucDEnKSlbMF0KKworICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCcgJXMgMj4vZGV2L251bGwiICUgKHBhcnQxKSkKKyAgICAgICAgICAgIGZpbGVzID0gZXh0cmFjdF9maWxlcyhyZXMub3V0cHV0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigndGVzdC1maWxlJywgZmlsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGZpbGVzX293bl9ieV9yb290KHJlcy5vdXRwdXQpKQorCisgICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wIC9leHBvcnQvZXRjLycgJXMgMj4vZGV2L251bGwiICUgKHBhcnQxKSkKKyAgICAgICAgICAgIGZpbGVzID0gZXh0cmFjdF9maWxlcyhyZXMub3V0cHV0KQorICAgICAgICAgICAgc2VsZi5hc3NlcnRJbigncGFzc3dkJywgZmlsZXMpCisgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGZpbGVzX293bl9ieV9yb290KHJlcy5vdXRwdXQpKQorCisgICAgICAgIGZpbmFsbHk6CisgICAgICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBvbGRwYXRoCisKKyAgICBkZWYgdGVzdF9pbmNsdWRlX3BhdGhfZXJyb3JzKHNlbGYpOgorICAgICAgICAiIiJUZXN0IC0taW5jbHVkZS1wYXRoIHdrcyBvcHRpb24gZXJyb3IgaGFuZGxpbmcuIiIiCisgICAgICAgIHdrc19maWxlID0gJ3RlbXAud2tzJworCisgICAgICAgICMgQWJzb2x1dGUgYXJndW1lbnQuCisgICAgICAgIHdpdGggb3Blbih3a3NfZmlsZSwgJ3cnKSBhcyB3a3M6CisgICAgICAgICAgICB3a3Mud3JpdGUoInBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1mc3R5cGU9ZXh0NCAtLWluY2x1ZGUtcGF0aCBjb3JlLWltYWdlLW1pbmltYWwtbXRkdXRpbHMgL2V4cG9ydCIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpLCBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKKyAgICAgICAgb3MucmVtb3ZlKHdrc19maWxlKQorCisgICAgICAgICMgQXJndW1lbnQgcG9pbnRpbmcgdG8gcGFyZW50IGRpcmVjdG9yeS4KKyAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAndycpIGFzIHdrczoKKyAgICAgICAgICAgIHdrcy53cml0ZSgicGFydCAvIC0tc291cmNlIHJvb3RmcyAtLWZzdHlwZT1leHQ0IC0taW5jbHVkZS1wYXRoIGNvcmUtaW1hZ2UtbWluaW1hbC1tdGR1dGlscyAuLy4vLi4iKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSwgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCisgICAgICAgIG9zLnJlbW92ZSh3a3NfZmlsZSkKKworICAgICAgICAjIDMgQXJndW1lbnQgcG9pbnRpbmcgdG8gcGFyZW50IGRpcmVjdG9yeS4KKyAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAndycpIGFzIHdrczoKKyAgICAgICAgICAgIHdrcy53cml0ZSgicGFydCAvIC0tc291cmNlIHJvb3RmcyAtLWZzdHlwZT1leHQ0IC0taW5jbHVkZS1wYXRoIGNvcmUtaW1hZ2UtbWluaW1hbC1tdGR1dGlscyBleHBvcnQvIGR1bW15IikKKyAgICAgICAgc2VsZi5hc3NlcnROb3RFcXVhbCgwLCBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHdrc19maWxlLCBzZWxmLnJlc3VsdGRpciksIGlnbm9yZV9zdGF0dXM9VHJ1ZSkuc3RhdHVzKQorICAgICAgICBvcy5yZW1vdmUod2tzX2ZpbGUpCisKICAgICBkZWYgdGVzdF9leGNsdWRlX3BhdGhfZXJyb3JzKHNlbGYpOgogICAgICAgICAiIiJUZXN0IC0tZXhjbHVkZS1wYXRoIHdrcyBvcHRpb24gZXJyb3IgaGFuZGxpbmcuIiIiCiAgICAgICAgIHdrc19maWxlID0gJ3RlbXAud2tzJwpAQCAtNDY5LDYgKzU3NCw4OSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpLCBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKICAgICAgICAgb3MucmVtb3ZlKHdrc19maWxlKQogCisgICAgZGVmIHRlc3RfcGVybWlzc2lvbnMoc2VsZik6CisgICAgICAgICIiIlRlc3QgcGVybWlzc2lvbnMgYXJlIHJlc3BlY3RlZCIiIgorCisgICAgICAgIG9sZHBhdGggPSBvcy5lbnZpcm9uWydQQVRIJ10KKyAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gZ2V0X2JiX3ZhcigiUEFUSCIsICJ3aWMtdG9vbHMiKQorCisgICAgICAgIHRfbm9ybWFsID0gIiIiCitwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tZnN0eXBlPWV4dDQKKyIiIgorICAgICAgICB0X2V4Y2x1ZGUgPSAiIiIKK3BhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1mc3R5cGU9ZXh0NCAtLWV4Y2x1ZGUtcGF0aD1ob21lCisiIiIKKyAgICAgICAgdF9tdWx0aSA9ICIiIgorcGFydCAvIC0tc291cmNlIHJvb3RmcyAtLW9uZGlzayBzZGEgLS1mc3R5cGU9ZXh0NAorcGFydCAvZXhwb3J0IC0tc291cmNlIHJvb3RmcyAtLXJvb3Rmcz1jb3JlLWltYWdlLW1pbmltYWwtbXRkdXRpbHMgLS1mc3R5cGU9ZXh0NAorIiIiCisgICAgICAgIHRfY2hhbmdlID0gIiIiCitwYXJ0IC8gLS1zb3VyY2Ugcm9vdGZzIC0tb25kaXNrIHNkYSAtLWZzdHlwZT1leHQ0IC0tZXhjbHVkZS1wYXRoPWV0Yy/CoCDCoAorcGFydCAvZXRjIC0tc291cmNlIHJvb3RmcyAtLWZzdHlwZT1leHQ0IC0tY2hhbmdlLWRpcmVjdG9yeT1ldGMKKyIiIgorICAgICAgICB0ZXN0cyA9IFt0X25vcm1hbCwgdF9leGNsdWRlLCB0X211bHRpLCB0X2NoYW5nZV0KKworICAgICAgICB0cnk6CisgICAgICAgICAgICBmb3IgdGVzdCBpbiB0ZXN0czoKKyAgICAgICAgICAgICAgICBpbmNsdWRlX3BhdGggPSBvcy5wYXRoLmpvaW4oc2VsZi5yZXN1bHRkaXIsICd0ZXN0LWluY2x1ZGUnKQorICAgICAgICAgICAgICAgIG9zLm1ha2VkaXJzKGluY2x1ZGVfcGF0aCkKKyAgICAgICAgICAgICAgICB3a3NfZmlsZSA9IG9zLnBhdGguam9pbihpbmNsdWRlX3BhdGgsICd0ZW1wLndrcycpCisgICAgICAgICAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAndycpIGFzIHdrczoKKyAgICAgICAgICAgICAgICAgICAgd2tzLndyaXRlKHRlc3QpCisgICAgICAgICAgICAgICAgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSkKKworICAgICAgICAgICAgICAgIGZvciBwYXJ0IGluIGdsb2Iob3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAndGVtcC0qLmRpcmVjdC5wKicpKToKKyAgICAgICAgICAgICAgICAgICAgcmVzID0gcnVuQ21kKCJkZWJ1Z2ZzIC1SICdscyAtcCcgJXMgMj4vZGV2L251bGwiICUgKHBhcnQpKQorICAgICAgICAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKFRydWUsIGZpbGVzX293bl9ieV9yb290KHJlcy5vdXRwdXQpKQorCisgICAgICAgICAgICAgICAgcm10cmVlKHNlbGYucmVzdWx0ZGlyLCBpZ25vcmVfZXJyb3JzPVRydWUpCisKKyAgICAgICAgZmluYWxseToKKyAgICAgICAgICAgIG9zLmVudmlyb25bJ1BBVEgnXSA9IG9sZHBhdGgKKworICAgIGRlZiB0ZXN0X2NoYW5nZV9kaXJlY3Rvcnkoc2VsZik6CisgICAgICAgICIiIlRlc3QgLS1jaGFuZ2UtZGlyZWN0b3J5IHdrcyBvcHRpb24uIiIiCisKKyAgICAgICAgb2xkcGF0aCA9IG9zLmVudmlyb25bJ1BBVEgnXQorICAgICAgICBvcy5lbnZpcm9uWydQQVRIJ10gPSBnZXRfYmJfdmFyKCJQQVRIIiwgIndpYy10b29scyIpCisKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgaW5jbHVkZV9wYXRoID0gb3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAndGVzdC1pbmNsdWRlJykKKyAgICAgICAgICAgIG9zLm1ha2VkaXJzKGluY2x1ZGVfcGF0aCkKKyAgICAgICAgICAgIHdrc19maWxlID0gb3MucGF0aC5qb2luKGluY2x1ZGVfcGF0aCwgJ3RlbXAud2tzJykKKyAgICAgICAgICAgIHdpdGggb3Blbih3a3NfZmlsZSwgJ3cnKSBhcyB3a3M6CisgICAgICAgICAgICAgICAgd2tzLndyaXRlKCJwYXJ0IC9ldGMgLS1zb3VyY2Ugcm9vdGZzIC0tZnN0eXBlPWV4dDQgLS1jaGFuZ2UtZGlyZWN0b3J5PWV0YyIpCisgICAgICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgJXMgLWUgY29yZS1pbWFnZS1taW5pbWFsIC1vICVzIiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpKQorCisgICAgICAgICAgICBwYXJ0MSA9IGdsb2Iob3MucGF0aC5qb2luKHNlbGYucmVzdWx0ZGlyLCAndGVtcC0qLmRpcmVjdC5wMScpKVswXQorCisgICAgICAgICAgICByZXMgPSBydW5DbWQoImRlYnVnZnMgLVIgJ2xzIC1wJyAlcyAyPi9kZXYvbnVsbCIgJSAocGFydDEpKQorICAgICAgICAgICAgZmlsZXMgPSBleHRyYWN0X2ZpbGVzKHJlcy5vdXRwdXQpCisgICAgICAgICAgICBzZWxmLmFzc2VydEluKCdwYXNzd2QnLCBmaWxlcykKKworICAgICAgICBmaW5hbGx5OgorICAgICAgICAgICAgb3MuZW52aXJvblsnUEFUSCddID0gb2xkcGF0aAorCisgICAgZGVmIHRlc3RfY2hhbmdlX2RpcmVjdG9yeV9lcnJvcnMoc2VsZik6CisgICAgICAgICIiIlRlc3QgLS1jaGFuZ2UtZGlyZWN0b3J5IHdrcyBvcHRpb24gZXJyb3IgaGFuZGxpbmcuIiIiCisgICAgICAgIHdrc19maWxlID0gJ3RlbXAud2tzJworCisgICAgICAgICMgQWJzb2x1dGUgYXJndW1lbnQuCisgICAgICAgIHdpdGggb3Blbih3a3NfZmlsZSwgJ3cnKSBhcyB3a3M6CisgICAgICAgICAgICB3a3Mud3JpdGUoInBhcnQgLyAtLXNvdXJjZSByb290ZnMgLS1mc3R5cGU9ZXh0NCAtLWNoYW5nZS1kaXJlY3RvcnkgL3VzciIpCisgICAgICAgIHNlbGYuYXNzZXJ0Tm90RXF1YWwoMCwgcnVuQ21kKCJ3aWMgY3JlYXRlICVzIC1lIGNvcmUtaW1hZ2UtbWluaW1hbCAtbyAlcyIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICh3a3NfZmlsZSwgc2VsZi5yZXN1bHRkaXIpLCBpZ25vcmVfc3RhdHVzPVRydWUpLnN0YXR1cykKKyAgICAgICAgb3MucmVtb3ZlKHdrc19maWxlKQorCisgICAgICAgICMgQXJndW1lbnQgcG9pbnRpbmcgdG8gcGFyZW50IGRpcmVjdG9yeS4KKyAgICAgICAgd2l0aCBvcGVuKHdrc19maWxlLCAndycpIGFzIHdrczoKKyAgICAgICAgICAgIHdrcy53cml0ZSgicGFydCAvIC0tc291cmNlIHJvb3RmcyAtLWZzdHlwZT1leHQ0IC0tY2hhbmdlLWRpcmVjdG9yeSAuLy4vLi4iKQorICAgICAgICBzZWxmLmFzc2VydE5vdEVxdWFsKDAsIHJ1bkNtZCgid2ljIGNyZWF0ZSAlcyAtZSBjb3JlLWltYWdlLW1pbmltYWwgLW8gJXMiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAod2tzX2ZpbGUsIHNlbGYucmVzdWx0ZGlyKSwgaWdub3JlX3N0YXR1cz1UcnVlKS5zdGF0dXMpCisgICAgICAgIG9zLnJlbW92ZSh3a3NfZmlsZSkKKwogY2xhc3MgV2ljMihXaWNUZXN0Q2FzZSk6CiAKICAgICBkZWYgdGVzdF9ibWFwX3Nob3J0KHNlbGYpOgpAQCAtNTAwLDcgKzY4OCw4IEBACiAgICAgICAgICMgZmlsdGVyIG91dCBvcHRpb25hbCB2YXJpYWJsZXMKICAgICAgICAgd2ljdmFycyA9IHdpY3ZhcnMuZGlmZmVyZW5jZSgoJ0RFUExPWV9ESVJfSU1BR0UnLCAnSU1BR0VfQk9PVF9GSUxFUycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdJTklUUkQnLCAnSU5JVFJEX0xJVkUnLCAnSVNPRElSJywnSU5JVFJBTUZTX0lNQUdFJywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0lOSVRSQU1GU19JTUFHRV9CVU5ETEUnLCAnSU5JVFJBTUZTX0xJTktfTkFNRScpKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnSU5JVFJBTUZTX0lNQUdFX0JVTkRMRScsICdJTklUUkFNRlNfTElOS19OQU1FJywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ0FQUEVORCcpKQogICAgICAgICB3aXRoIG9wZW4ocGF0aCkgYXMgZW52ZmlsZToKICAgICAgICAgICAgIGNvbnRlbnQgPSBkaWN0KGxpbmUuc3BsaXQoIj0iLCAxKSBmb3IgbGluZSBpbiBlbnZmaWxlKQogICAgICAgICAgICAgIyB0ZXN0IGlmIHZhcmlhYmxlcyB1c2VkIGJ5IHdpYyBwcmVzZW50IGluIHRoZSAuZW52IGZpbGUKQEAgLTg2Niw2ICsxMDU1LDEzIEBACiAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKDgsIGxlbihyZXN1bHQub3V0cHV0LnNwbGl0KCdcbicpKSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmJhc2VuYW1lKHRlc3RkaXIpIGluIHJlc3VsdC5vdXRwdXQpCiAKKyAgICAgICAgICAgICMgY29weSB0aGUgZmlsZSBmcm9tIHRoZSBwYXJ0aXRpb24gYW5kIGNoZWNrIGlmIGl0IHN1Y2Nlc3MKKyAgICAgICAgICAgIGRlc3QgPSAnJXMtY3AnICUgdGVzdGZpbGUubmFtZQorICAgICAgICAgICAgcnVuQ21kKCJ3aWMgY3AgJXM6MS8lcyAlcyAtbiAlcyIgJSAoaW1hZ2VzWzBdLAorICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmJhc2VuYW1lKHRlc3RmaWxlLm5hbWUpLCBkZXN0LCBzeXNyb290KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZShvcy5wYXRoLmV4aXN0cyhkZXN0KSkKKworCiAgICAgZGVmIHRlc3Rfd2ljX3JtKHNlbGYpOgogICAgICAgICAiIiJUZXN0IHJlbW92aW5nIGZpbGVzIGFuZCBkaXJlY3RvcmllcyBmcm9tIHRoZSB0aGUgd2ljIGltYWdlLiIiIgogICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgbWtlZmlkaXNrICIKQEAgLTEwMDUsNiArMTIwMSwxNiBAQAogICAgICAgICAgICAgbmV3ZGlycyA9IHNldChsaW5lLnNwbGl0KClbLTFdIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykgaWYgbGluZSkKICAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwobmV3ZGlycy5kaWZmZXJlbmNlKGRpcnMpLCBzZXQoW29zLnBhdGguYmFzZW5hbWUodGVzdGZpbGUubmFtZSldKSkKIAorICAgICAgICAgICAgIyBjaGVjayBpZiB0aGUgZmlsZSB0byBjb3B5IGlzIGluIHRoZSBwYXJ0aXRpb24KKyAgICAgICAgICAgIHJlc3VsdCA9IHJ1bkNtZCgid2ljIGxzICVzOjIvZXRjLyAtbiAlcyIgJSAoaW1hZ2VzWzBdLCBzeXNyb290KSkKKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSgnZnN0YWInIGluIFtsaW5lLnNwbGl0KClbLTFdIGZvciBsaW5lIGluIHJlc3VsdC5vdXRwdXQuc3BsaXQoJ1xuJykgaWYgbGluZV0pCisKKyAgICAgICAgICAgICMgY29weSBmaWxlIGZyb20gdGhlIHBhcnRpdGlvbiwgcmVwbGFjZSB0aGUgdGVtcG9yYXJ5IGZpbGUgY29udGVudCB3aXRoIGl0IGFuZAorICAgICAgICAgICAgIyBjaGVjayBmb3IgdGhlIGZpbGUgc2l6ZSB0byB2YWxpZGF0ZSB0aGUgY29weQorICAgICAgICAgICAgcnVuQ21kKCJ3aWMgY3AgJXM6Mi9ldGMvZnN0YWIgJXMgLW4gJXMiICUgKGltYWdlc1swXSwgdGVzdGZpbGUubmFtZSwgc3lzcm9vdCkpCisgICAgICAgICAgICBzZWxmLmFzc2VydFRydWUob3Muc3RhdCh0ZXN0ZmlsZS5uYW1lKS5zdF9zaXplID4gMCkKKworCiAgICAgZGVmIHRlc3Rfd2ljX3JtX2V4dChzZWxmKToKICAgICAgICAgIiIiVGVzdCByZW1vdmluZyBmaWxlcyBmcm9tIHRoZSBleHQgcGFydGl0aW9uLiIiIgogICAgICAgICBydW5DbWQoIndpYyBjcmVhdGUgbWtlZmlkaXNrICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS9zZWxmdGVzdC9jb250ZXh0LnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2NvbnRleHQucHkKaW5kZXggYzRlYjVkNi4uNDhlYzVkNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2NvbnRleHQucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3NlbGZ0ZXN0L2NvbnRleHQucHkKQEAgLTksMTIgKzksMTIgQEAKIGltcG9ydCBnbG9iCiBpbXBvcnQgc3lzCiBpbXBvcnQgaW1wb3J0bGliCi1pbXBvcnQgc2lnbmFsCi1mcm9tIHNodXRpbCBpbXBvcnQgY29weWZpbGUKK2ltcG9ydCBzdWJwcm9jZXNzCiBmcm9tIHJhbmRvbSBpbXBvcnQgY2hvaWNlCiAKIGltcG9ydCBvZXFhCiBpbXBvcnQgb2UKK2ltcG9ydCBiYi51dGlscwogCiBmcm9tIG9lcWEuY29yZS5jb250ZXh0IGltcG9ydCBPRVRlc3RDb250ZXh0LCBPRVRlc3RDb250ZXh0RXhlY3V0b3IKIGZyb20gb2VxYS5jb3JlLmV4Y2VwdGlvbiBpbXBvcnQgT0VRQVByZVJ1biwgT0VRQVRlc3ROb3RGb3VuZApAQCAtMjksNiArMjksNTQgQEAKICAgICAgICAgc2VsZi5jdXN0b21tYWNoaW5lID0gTm9uZQogICAgICAgICBzZWxmLmNvbmZpZ19wYXRocyA9IGNvbmZpZ19wYXRocwogCisgICAgZGVmIHNldHVwX2J1aWxkZGlyKHNlbGYsIHN1ZmZpeCwgc2VsZnRlc3RkaXIsIHN1aXRlKToKKyAgICAgICAgYnVpbGRkaXIgPSBvcy5lbnZpcm9uWydCVUlMRERJUiddCisgICAgICAgIGlmIG5vdCBzZWxmdGVzdGRpcjoKKyAgICAgICAgICAgIHNlbGZ0ZXN0ZGlyID0gZ2V0X3Rlc3RfbGF5ZXIoKQorICAgICAgICBuZXdidWlsZGRpciA9IGJ1aWxkZGlyICsgc3VmZml4CisgICAgICAgIG5ld3NlbGZ0ZXN0ZGlyID0gbmV3YnVpbGRkaXIgKyAiL21ldGEtc2VsZnRlc3QiCisKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMobmV3YnVpbGRkaXIpOgorICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIkJ1aWxkIGRpcmVjdG9yeSAlcyBhbHJlYWR5IGV4aXN0cywgYWJvcnRpbmciICUgbmV3YnVpbGRkaXIpCisgICAgICAgICAgICBzeXMuZXhpdCgxKQorCisgICAgICAgIGJiLnV0aWxzLm1rZGlyaGllcihuZXdidWlsZGRpcikKKyAgICAgICAgb2UucGF0aC5jb3B5dHJlZShidWlsZGRpciArICIvY29uZiIsIG5ld2J1aWxkZGlyICsgIi9jb25mIikKKyAgICAgICAgb2UucGF0aC5jb3B5dHJlZShidWlsZGRpciArICIvY2FjaGUiLCBuZXdidWlsZGRpciArICIvY2FjaGUiKQorICAgICAgICBvZS5wYXRoLmNvcHl0cmVlKHNlbGZ0ZXN0ZGlyLCBuZXdzZWxmdGVzdGRpcikKKworICAgICAgICBmb3IgZSBpbiBvcy5lbnZpcm9uOgorICAgICAgICAgICAgaWYgYnVpbGRkaXIgKyAiLyIgaW4gb3MuZW52aXJvbltlXSBvciBvcy5lbnZpcm9uW2VdLmVuZHN3aXRoKGJ1aWxkZGlyKToKKyAgICAgICAgICAgICAgICBvcy5lbnZpcm9uW2VdID0gb3MuZW52aXJvbltlXS5yZXBsYWNlKGJ1aWxkZGlyLCBuZXdidWlsZGRpcikKKworICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgiZ2l0IGluaXQ7IGdpdCBhZGQgKjsgZ2l0IGNvbW1pdCAtYSAtbSAnaW5pdGlhbCciLCBjd2Q9bmV3c2VsZnRlc3RkaXIsIHNoZWxsPVRydWUpCisKKyAgICAgICAgIyBUcmllZCB0byB1c2VkIGJpdGJha2UtbGF5ZXJzIGFkZC9yZW1vdmUgYnV0IGl0IHJlcXVpcmVzIHJlY2lwZSBwYXJzaW5nIGFuZCBoZW5jZSBpcyB0b28gc2xvdworICAgICAgICBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgic2VkICVzL2NvbmYvYmJsYXllcnMuY29uZiAtaSAtZSAncyMlcyMlcyNnJyIgJSAobmV3YnVpbGRkaXIsIHNlbGZ0ZXN0ZGlyLCBuZXdzZWxmdGVzdGRpciksIGN3ZD1uZXdidWlsZGRpciwgc2hlbGw9VHJ1ZSkKKworICAgICAgICBvcy5jaGRpcihuZXdidWlsZGRpcikKKworICAgICAgICBmb3IgdCBpbiBzdWl0ZToKKyAgICAgICAgICAgIGlmIG5vdCBoYXNhdHRyKHQsICJ0YyIpOgorICAgICAgICAgICAgICAgIGNvbnRpbnVlCisgICAgICAgICAgICBjcCA9IHQudGMuY29uZmlnX3BhdGhzCisgICAgICAgICAgICBmb3IgcCBpbiBjcDoKKyAgICAgICAgICAgICAgICBpZiBzZWxmdGVzdGRpciBpbiBjcFtwXSBhbmQgbmV3c2VsZnRlc3RkaXIgbm90IGluIGNwW3BdOgorICAgICAgICAgICAgICAgICAgICBjcFtwXSA9IGNwW3BdLnJlcGxhY2Uoc2VsZnRlc3RkaXIsIG5ld3NlbGZ0ZXN0ZGlyKQorICAgICAgICAgICAgICAgIGlmIGJ1aWxkZGlyIGluIGNwW3BdIGFuZCBuZXdidWlsZGRpciBub3QgaW4gY3BbcF06CisgICAgICAgICAgICAgICAgICAgIGNwW3BdID0gY3BbcF0ucmVwbGFjZShidWlsZGRpciwgbmV3YnVpbGRkaXIpCisKKyAgICAgICAgcmV0dXJuIChidWlsZGRpciwgbmV3YnVpbGRkaXIpCisKKyAgICBkZWYgcHJlcGFyZVN1aXRlKHNlbGYsIHN1aXRlcywgcHJvY2Vzc2VzKToKKyAgICAgICAgaWYgcHJvY2Vzc2VzOgorICAgICAgICAgICAgZnJvbSBvZXFhLmNvcmUudXRpbHMuY29uY3VycmVuY3l0ZXN0IGltcG9ydCBDb25jdXJyZW50VGVzdFN1aXRlCisKKyAgICAgICAgICAgIHJldHVybiBDb25jdXJyZW50VGVzdFN1aXRlKHN1aXRlcywgcHJvY2Vzc2VzLCBzZWxmLnNldHVwX2J1aWxkZGlyKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5zZXR1cF9idWlsZGRpcigiLXN0IiwgTm9uZSwgc3VpdGVzKQorICAgICAgICAgICAgcmV0dXJuIHN1aXRlcworCiAgICAgZGVmIHJ1blRlc3RzKHNlbGYsIHByb2Nlc3Nlcz1Ob25lLCBtYWNoaW5lPU5vbmUsIHNraXBzPVtdKToKICAgICAgICAgaWYgbWFjaGluZToKICAgICAgICAgICAgIHNlbGYuY3VzdG9tbWFjaGluZSA9IG1hY2hpbmUKQEAgLTEzNSwyNiArMTgzLDEwIEBACiAKICAgICAgICAgYnVpbGRkaXIgPSBvcy5lbnZpcm9uLmdldCgiQlVJTERESVIiKQogICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXSA9IHt9Ci0gICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWyd0ZXN0bGF5ZXJfcGF0aCddID0gXAotICAgICAgICAgICAgICAgIGdldF90ZXN0X2xheWVyKCkKKyAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ3Rlc3RsYXllcl9wYXRoJ10gPSBnZXRfdGVzdF9sYXllcigpCiAgICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydidWlsZGRpciddID0gYnVpbGRkaXIKLSAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2xvY2FsY29uZiddID0gXAotICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvbG9jYWwuY29uZiIpCi0gICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydsb2NhbGNvbmZfYmFja3VwJ10gPSBcCi0gICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGJ1aWxkZGlyLCAiY29uZi9sb2NhbC5jb25mLm9yaWciKQotICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnbG9jYWxjb25mX2NsYXNzX2JhY2t1cCddID0gXAotICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvbG9jYWwuY29uZi5iayIpCi0gICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydiYmxheWVycyddID0gXAotICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvYmJsYXllcnMuY29uZiIpCi0gICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydiYmxheWVyc19iYWNrdXAnXSA9IFwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2JibGF5ZXJzLmNvbmYub3JpZyIpCi0gICAgICAgIHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydiYmxheWVyc19jbGFzc19iYWNrdXAnXSA9IFwKLSAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2JibGF5ZXJzLmNvbmYuYmsiKQotCi0gICAgICAgIGNvcHlmaWxlKHNlbGYudGNfa3dhcmdzWydpbml0J11bJ2NvbmZpZ19wYXRocyddWydsb2NhbGNvbmYnXSwKLSAgICAgICAgICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnbG9jYWxjb25mX2JhY2t1cCddKQotICAgICAgICBjb3B5ZmlsZShzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnYmJsYXllcnMnXSwgCi0gICAgICAgICAgICAgICAgc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ11bJ2JibGF5ZXJzX2JhY2t1cCddKQorICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnbG9jYWxjb25mJ10gPSBvcy5wYXRoLmpvaW4oYnVpbGRkaXIsICJjb25mL2xvY2FsLmNvbmYiKQorICAgICAgICBzZWxmLnRjX2t3YXJnc1snaW5pdCddWydjb25maWdfcGF0aHMnXVsnYmJsYXllcnMnXSA9IG9zLnBhdGguam9pbihidWlsZGRpciwgImNvbmYvYmJsYXllcnMuY29uZiIpCiAKICAgICAgICAgZGVmIHRhZ19maWx0ZXIodGFncyk6CiAgICAgICAgICAgICBpZiBhcmdzLmV4Y2x1ZGVfdGFnczoKQEAgLTI3OSwxNCArMzExLDkgQEAKIAogICAgICAgICByZXR1cm4gcmMKIAotICAgIGRlZiBfc2lnbmFsX2NsZWFuX2hhbmRsZXIoc2VsZiwgc2lnbnVtLCBmcmFtZSk6Ci0gICAgICAgIHN5cy5leGl0KDEpCi0gICAgCiAgICAgZGVmIHJ1bihzZWxmLCBsb2dnZXIsIGFyZ3MpOgogICAgICAgICBzZWxmLl9wcm9jZXNzX2FyZ3MobG9nZ2VyLCBhcmdzKQogCi0gICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR1RFUk0sIHNlbGYuX3NpZ25hbF9jbGVhbl9oYW5kbGVyKQotCiAgICAgICAgIHJjID0gTm9uZQogICAgICAgICB0cnk6CiAgICAgICAgICAgICBpZiBhcmdzLm1hY2hpbmU6CkBAIC0zMTUsMjAgKzM0Miw2IEBACiAgICAgICAgICAgICAgICAgcmMgPSBzZWxmLl9pbnRlcm5hbF9ydW4obG9nZ2VyLCBhcmdzKQogICAgICAgICBmaW5hbGx5OgogICAgICAgICAgICAgY29uZmlnX3BhdGhzID0gc2VsZi50Y19rd2FyZ3NbJ2luaXQnXVsnY29uZmlnX3BhdGhzJ10KLSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGNvbmZpZ19wYXRoc1snbG9jYWxjb25mX2JhY2t1cCddKToKLSAgICAgICAgICAgICAgICBjb3B5ZmlsZShjb25maWdfcGF0aHNbJ2xvY2FsY29uZl9iYWNrdXAnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ19wYXRoc1snbG9jYWxjb25mJ10pCi0gICAgICAgICAgICAgICAgb3MucmVtb3ZlKGNvbmZpZ19wYXRoc1snbG9jYWxjb25mX2JhY2t1cCddKQotCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhjb25maWdfcGF0aHNbJ2JibGF5ZXJzX2JhY2t1cCddKToKLSAgICAgICAgICAgICAgICBjb3B5ZmlsZShjb25maWdfcGF0aHNbJ2JibGF5ZXJzX2JhY2t1cCddLCAKLSAgICAgICAgICAgICAgICAgICAgICAgIGNvbmZpZ19wYXRoc1snYmJsYXllcnMnXSkKLSAgICAgICAgICAgICAgICBvcy5yZW1vdmUoY29uZmlnX3BhdGhzWydiYmxheWVyc19iYWNrdXAnXSkKLQotICAgICAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoY29uZmlnX3BhdGhzWydsb2NhbGNvbmZfY2xhc3NfYmFja3VwJ10pOgotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShjb25maWdfcGF0aHNbJ2xvY2FsY29uZl9jbGFzc19iYWNrdXAnXSkKLSAgICAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGNvbmZpZ19wYXRoc1snYmJsYXllcnNfY2xhc3NfYmFja3VwJ10pOgotICAgICAgICAgICAgICAgIG9zLnJlbW92ZShjb25maWdfcGF0aHNbJ2JibGF5ZXJzX2NsYXNzX2JhY2t1cCddKQogCiAgICAgICAgICAgICBvdXRwdXRfbGluayA9IG9zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoYXJncy5vdXRwdXRfbG9nKSwKICAgICAgICAgICAgICAgICAgICAgIiVzLXJlc3VsdHMubG9nIiAlIHNlbGYubmFtZSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9saWIvb2VxYS90YXJnZXRjb250cm9sLnB5IGIvcG9reS9tZXRhL2xpYi9vZXFhL3RhcmdldGNvbnRyb2wucHkKaW5kZXggMTQ0NWUzZS4uMmFhNTQ4ZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3RhcmdldGNvbnRyb2wucHkKKysrIGIvcG9reS9tZXRhL2xpYi9vZXFhL3RhcmdldGNvbnRyb2wucHkKQEAgLTExNyw5ICsxMTcsOSBAQAogICAgICAgICBpbXBvcnQgb2UucGF0aAogICAgICAgICBiYi51dGlscy5ta2RpcmhpZXIoc2VsZi50ZXN0ZGlyKQogICAgICAgICBzZWxmLnFlbXVydW5uZXJsb2cgPSBvcy5wYXRoLmpvaW4oc2VsZi50ZXN0ZGlyLCAncWVtdXJ1bm5lcl9sb2cuJXMnICUgc2VsZi5kYXRldGltZSkKLSAgICAgICAgbG9nZ2VyaGFuZGxlciA9IGxvZ2dpbmcuRmlsZUhhbmRsZXIoc2VsZi5xZW11cnVubmVybG9nKQotICAgICAgICBsb2dnZXJoYW5kbGVyLnNldEZvcm1hdHRlcihsb2dnaW5nLkZvcm1hdHRlcigiJShsZXZlbG5hbWUpczogJShtZXNzYWdlKXMiKSkKLSAgICAgICAgc2VsZi5sb2dnZXIuYWRkSGFuZGxlcihsb2dnZXJoYW5kbGVyKQorICAgICAgICBzZWxmLmxvZ2dlcmhhbmRsZXIgPSBsb2dnaW5nLkZpbGVIYW5kbGVyKHNlbGYucWVtdXJ1bm5lcmxvZykKKyAgICAgICAgc2VsZi5sb2dnZXJoYW5kbGVyLnNldEZvcm1hdHRlcihsb2dnaW5nLkZvcm1hdHRlcigiJShsZXZlbG5hbWUpczogJShtZXNzYWdlKXMiKSkKKyAgICAgICAgc2VsZi5sb2dnZXIuYWRkSGFuZGxlcihzZWxmLmxvZ2dlcmhhbmRsZXIpCiAgICAgICAgIG9lLnBhdGguc3ltbGluayhvcy5wYXRoLmJhc2VuYW1lKHNlbGYucWVtdXJ1bm5lcmxvZyksIG9zLnBhdGguam9pbihzZWxmLnRlc3RkaXIsICdxZW11cnVubmVyX2xvZycpLCBmb3JjZT1UcnVlKQogCiAgICAgICAgIGlmIGQuZ2V0VmFyKCJESVNUUk8iKSA9PSAicG9reS10aW55IjoKQEAgLTE0Myw3ICsxNDMsOCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVzZV9rdm0gPSB1c2Vfa3ZtLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGR1bXBfZGlyID0gZHVtcF9kaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZHVtcF9ob3N0X2NtZHMgPSBkLmdldFZhcigidGVzdGltYWdlX2R1bXBfaG9zdCIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlciA9IGxvZ2dlcikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIgPSBsb2dnZXIsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VyaWFsX3BvcnRzID0gbGVuKGQuZ2V0VmFyKCJTRVJJQUxfQ09OU09MRVMiKS5zcGxpdCgpKSkKIAogICAgICAgICBzZWxmLnRhcmdldF9kdW1wZXIgPSBUYXJnZXREdW1wZXIoZHVtcF90YXJnZXRfY21kcywgZHVtcF9kaXIsIHNlbGYucnVubmVyKQogCkBAIC0xODIsNiArMTgzLDcgQEAKIAogICAgIGRlZiBzdG9wKHNlbGYpOgogICAgICAgICBzZWxmLnJ1bm5lci5zdG9wKCkKKyAgICAgICAgc2VsZi5sb2dnZXIucmVtb3ZlSGFuZGxlcihzZWxmLmxvZ2dlcmhhbmRsZXIpCiAgICAgICAgIHNlbGYuY29ubmVjdGlvbiA9IE5vbmUKICAgICAgICAgc2VsZi5pcCA9IE5vbmUKICAgICAgICAgc2VsZi5zZXJ2ZXJfaXAgPSBOb25lCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvY29tbWFuZHMucHkgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvY29tbWFuZHMucHkKaW5kZXggZGMxZTI4Ni4uZjE2Nzk4NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2NvbW1hbmRzLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9jb21tYW5kcy5weQpAQCAtMzE1LDE1ICszMTUsMTUgQEAKICAgICB0cnk6CiAgICAgICAgIHRpbmZvaWwubG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuV0FSTklORykKICAgICAgICAgaW1wb3J0IG9lcWEudGFyZ2V0Y29udHJvbAotICAgICAgICB0aW5mb2lsLmNvbmZpZ19kYXRhLnNldFZhcigiVEVTVF9MT0dfRElSIiwgIiR7V09SS0RJUn0vdGVzdGltYWdlIikKLSAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoIlRFU1RfUUVNVUJPT1RfVElNRU9VVCIsICIxMDAwIikKKyAgICAgICAgcmVjaXBlZGF0YSA9IHRpbmZvaWwucGFyc2VfcmVjaXBlKHBuKQorICAgICAgICByZWNpcGVkYXRhLnNldFZhcigiVEVTVF9MT0dfRElSIiwgIiR7V09SS0RJUn0vdGVzdGltYWdlIikKKyAgICAgICAgcmVjaXBlZGF0YS5zZXRWYXIoIlRFU1RfUUVNVUJPT1RfVElNRU9VVCIsICIxMDAwIikKICAgICAgICAgIyBUZWxsIFFlbXVUYXJnZXQoKSB3aGV0aGVyIG5lZWQgZmluZCByb290ZnMva2VybmVsIG9yIG5vdAogICAgICAgICBpZiBsYXVuY2hfY21kOgotICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoIkZJTkRfUk9PVEZTIiwgJzAnKQorICAgICAgICAgICAgcmVjaXBlZGF0YS5zZXRWYXIoIkZJTkRfUk9PVEZTIiwgJzAnKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgdGluZm9pbC5jb25maWdfZGF0YS5zZXRWYXIoIkZJTkRfUk9PVEZTIiwgJzEnKQorICAgICAgICAgICAgcmVjaXBlZGF0YS5zZXRWYXIoIkZJTkRfUk9PVEZTIiwgJzEnKQogCi0gICAgICAgIHJlY2lwZWRhdGEgPSB0aW5mb2lsLnBhcnNlX3JlY2lwZShwbikKICAgICAgICAgZm9yIGtleSwgdmFsdWUgaW4gb3ZlcnJpZGVzLml0ZW1zKCk6CiAgICAgICAgICAgICByZWNpcGVkYXRhLnNldFZhcihrZXksIHZhbHVlKQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvZHVtcC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9kdW1wLnB5CmluZGV4IGQzNGUwNWUuLjA5YTQ0MzIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9kdW1wLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9kdW1wLnB5CkBAIC03MSw4ICs3MSwxMSBAQAogICAgIGRlZiBkdW1wX2hvc3Qoc2VsZiwgZHVtcF9kaXI9IiIpOgogICAgICAgICBpZiBkdW1wX2RpcjoKICAgICAgICAgICAgIHNlbGYuZHVtcF9kaXIgPSBkdW1wX2RpcgorICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQorICAgICAgICBlbnZbJ1BBVEgnXSA9ICcvdXNyL3NiaW46L3NiaW46L3Vzci9iaW46L2JpbicKKyAgICAgICAgZW52WydDT0xVTU5TJ10gPSAnOTk5OScKICAgICAgICAgZm9yIGNtZCBpbiBzZWxmLmNtZHM6Ci0gICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoY21kLCBpZ25vcmVfc3RhdHVzPVRydWUpCisgICAgICAgICAgICByZXN1bHQgPSBydW5DbWQoY21kLCBpZ25vcmVfc3RhdHVzPVRydWUsIGVudj1lbnYpCiAgICAgICAgICAgICBzZWxmLl93cml0ZV9kdW1wKGNtZC5zcGxpdCgpWzBdLCByZXN1bHQub3V0cHV0KQogCiBjbGFzcyBUYXJnZXREdW1wZXIoQmFzZUR1bXBlcik6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvaHR0cHNlcnZlci5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9odHRwc2VydmVyLnB5CmluZGV4IGFhNDM1NTkuLjU4ZDNjM2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9odHRwc2VydmVyLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9odHRwc2VydmVyLnB5CkBAIC0yMiwxMCArMjIsMTAgQEAKIAogY2xhc3MgSFRUUFNlcnZpY2Uob2JqZWN0KToKIAotICAgIGRlZiBfX2luaXRfXyhzZWxmLCByb290X2RpciwgaG9zdD0nJywgbG9nZ2VyPU5vbmUpOgorICAgIGRlZiBfX2luaXRfXyhzZWxmLCByb290X2RpciwgaG9zdD0nJywgcG9ydD0wLCBsb2dnZXI9Tm9uZSk6CiAgICAgICAgIHNlbGYucm9vdF9kaXIgPSByb290X2RpcgogICAgICAgICBzZWxmLmhvc3QgPSBob3N0Ci0gICAgICAgIHNlbGYucG9ydCA9IDAKKyAgICAgICAgc2VsZi5wb3J0ID0gcG9ydAogICAgICAgICBzZWxmLmxvZ2dlciA9IGxvZ2dlcgogCiAgICAgZGVmIHN0YXJ0KHNlbGYpOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2xvZ3BhcnNlci5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9sb2dwYXJzZXIucHkKaW5kZXggNzMxM2RmOC4uNjBlMTZkNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL2xpYi9vZXFhL3V0aWxzL2xvZ3BhcnNlci5weQorKysgYi9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvbG9ncGFyc2VyLnB5CkBAIC0yNSwxMyArMjUsMjAgQEAKICAgICAgICAgc2VjdGlvbl9yZWdleFsnZXhpdGNvZGUnXSA9IHJlLmNvbXBpbGUociJeRVJST1I6IEV4aXQgc3RhdHVzIGlzICguKykiKQogICAgICAgICBzZWN0aW9uX3JlZ2V4Wyd0aW1lb3V0J10gPSByZS5jb21waWxlKHIiXlRJTUVPVVQ6IC4qLyguKykvcHRlc3QiKQogCisgICAgICAgICMgQ2FjaGUgbWFya2VycyBzbyB3ZSBkb24ndCB0YWtlIHRoZSByZS5zZWFyY2goKSBoaXQgYWxsIHRoZSB0aW1lLgorICAgICAgICBtYXJrZXJzID0gKCJQQVNTOiIsICJGQUlMOiIsICJTS0lQOiIsICJCRUdJTjoiLCAiRU5EOiIsICJEVVJBVElPTjoiLCAiRVJST1I6IEV4aXQiLCAiVElNRU9VVDoiKQorCiAgICAgICAgIGRlZiBuZXdzZWN0aW9uKCk6Ci0gICAgICAgICAgICByZXR1cm4geyAnbmFtZSc6ICJOby1zZWN0aW9uIiwgJ2xvZyc6ICIiIH0KKyAgICAgICAgICAgIHJldHVybiB7ICduYW1lJzogIk5vLXNlY3Rpb24iLCAnbG9nJzogW10gfQogCiAgICAgICAgIGN1cnJlbnRfc2VjdGlvbiA9IG5ld3NlY3Rpb24oKQogCiAgICAgICAgIHdpdGggb3Blbihsb2dmaWxlLCBlcnJvcnM9J3JlcGxhY2UnKSBhcyBmOgogICAgICAgICAgICAgZm9yIGxpbmUgaW4gZjoKKyAgICAgICAgICAgICAgICBpZiBub3QgbGluZS5zdGFydHN3aXRoKG1hcmtlcnMpOgorICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3NlY3Rpb25bJ2xvZyddLmFwcGVuZChsaW5lKQorICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorCiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gc2VjdGlvbl9yZWdleFsnYmVnaW4nXS5zZWFyY2gobGluZSkKICAgICAgICAgICAgICAgICBpZiByZXN1bHQ6CiAgICAgICAgICAgICAgICAgICAgIGN1cnJlbnRfc2VjdGlvblsnbmFtZSddID0gcmVzdWx0Lmdyb3VwKDEpCkBAIC02MSw3ICs2OCw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBjdXJyZW50X3NlY3Rpb25bdF0gPSByZXN1bHQuZ3JvdXAoMSkKICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKLSAgICAgICAgICAgICAgICBjdXJyZW50X3NlY3Rpb25bJ2xvZyddID0gY3VycmVudF9zZWN0aW9uWydsb2cnXSArIGxpbmUgCisgICAgICAgICAgICAgICAgY3VycmVudF9zZWN0aW9uWydsb2cnXS5hcHBlbmQobGluZSkKIAogICAgICAgICAgICAgICAgIGZvciB0IGluIHRlc3RfcmVnZXg6CiAgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRlc3RfcmVnZXhbdF0uc2VhcmNoKGxpbmUpCkBAIC03MCw2ICs3NywxMSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYucmVzdWx0c1tjdXJyZW50X3NlY3Rpb25bJ25hbWUnXV0gPSB7fQogICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5yZXN1bHRzW2N1cnJlbnRfc2VjdGlvblsnbmFtZSddXVtyZXN1bHQuZ3JvdXAoMSkuc3RyaXAoKV0gPSB0CiAKKyAgICAgICAgIyBQeXRob24gcGVyZm9ybWFuY2UgZm9yIHJlcGVhdGVkbHkgam9pbmluZyBsb25nIHN0cmluZ3MgaXMgcG9vciwgZG8gaXQgYWxsIGF0IG9uY2UgYXQgdGhlIGVuZC4KKyAgICAgICAgIyBGb3IgMi4xIG1pbGxpb24gbGluZXMgaW4gYSBsb2cgdGhpcyByZWR1Y2VzIDE4IGhvdXJzIHRvIDEycy4KKyAgICAgICAgZm9yIHNlY3Rpb24gaW4gc2VsZi5zZWN0aW9uczoKKyAgICAgICAgICAgIHNlbGYuc2VjdGlvbnNbc2VjdGlvbl1bJ2xvZyddID0gIiIuam9pbihzZWxmLnNlY3Rpb25zW3NlY3Rpb25dWydsb2cnXSkKKwogICAgICAgICByZXR1cm4gc2VsZi5yZXN1bHRzLCBzZWxmLnNlY3Rpb25zCiAKICAgICAjIExvZyB0aGUgcmVzdWx0cyBhcyBmaWxlcy4gVGhlIGZpbGUgbmFtZSBpcyB0aGUgc2VjdGlvbiBuYW1lIGFuZCB0aGUgY29udGVudHMgYXJlIHRoZSB0ZXN0cyBpbiB0aGF0IHNlY3Rpb24uCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvcWVtdXJ1bm5lci5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11cnVubmVyLnB5CmluZGV4IGZlOGI3N2QuLjRiNzQzMzcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11cnVubmVyLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9xZW11cnVubmVyLnB5CkBAIC0yMSw2ICsyMSw3IEBACiBpbXBvcnQgY29kZWNzCiBpbXBvcnQgbG9nZ2luZwogZnJvbSBvZXFhLnV0aWxzLmR1bXAgaW1wb3J0IEhvc3REdW1wZXIKK2Zyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CiAKICMgR2V0IFVuaWNvZGUgbm9uIHByaW50YWJsZSBjb250cm9sIGNoYXJzCiBjb250cm9sX3JhbmdlID0gbGlzdChyYW5nZSgwLDMyKSkrbGlzdChyYW5nZSgxMjcsMTYwKSkKQEAgLTMxLDEwICszMiwxMSBAQAogY2xhc3MgUWVtdVJ1bm5lcjoKIAogICAgIGRlZiBfX2luaXRfXyhzZWxmLCBtYWNoaW5lLCByb290ZnMsIGRpc3BsYXksIHRtcGRpciwgZGVwbG95X2Rpcl9pbWFnZSwgbG9nZmlsZSwgYm9vdHRpbWUsIGR1bXBfZGlyLCBkdW1wX2hvc3RfY21kcywKLSAgICAgICAgICAgICAgICAgdXNlX2t2bSwgbG9nZ2VyLCB1c2Vfc2xpcnA9RmFsc2UpOgorICAgICAgICAgICAgICAgICB1c2Vfa3ZtLCBsb2dnZXIsIHVzZV9zbGlycD1GYWxzZSwgc2VyaWFsX3BvcnRzPTIsIGJvb3RfcGF0dGVybnMgPSBkZWZhdWx0ZGljdChzdHIpLCB1c2Vfb3ZtZj1GYWxzZSk6CiAKICAgICAgICAgIyBQb3BlbiBvYmplY3QgZm9yIHJ1bnFlbXUKICAgICAgICAgc2VsZi5ydW5xZW11ID0gTm9uZQorICAgICAgICBzZWxmLnJ1bnFlbXVfZXhpdGVkID0gRmFsc2UKICAgICAgICAgIyBwaWQgb2YgdGhlIHFlbXUgcHJvY2VzcyB0aGF0IHJ1bnFlbXUgd2lsbCBzdGFydAogICAgICAgICBzZWxmLnFlbXVwaWQgPSBOb25lCiAgICAgICAgICMgdGFyZ2V0IGlwIC0gZnJvbSB0aGUgY29tbWFuZCBsaW5lIG9yIHJ1bnFlbXUgb3V0cHV0CkBAIC01NCw4ICs1NiwxMSBAQAogICAgICAgICBzZWxmLmxvZ2dlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYudGhyZWFkID0gTm9uZQogICAgICAgICBzZWxmLnVzZV9rdm0gPSB1c2Vfa3ZtCisgICAgICAgIHNlbGYudXNlX292bWYgPSB1c2Vfb3ZtZgogICAgICAgICBzZWxmLnVzZV9zbGlycCA9IHVzZV9zbGlycAorICAgICAgICBzZWxmLnNlcmlhbF9wb3J0cyA9IHNlcmlhbF9wb3J0cwogICAgICAgICBzZWxmLm1zZyA9ICcnCisgICAgICAgIHNlbGYuYm9vdF9wYXR0ZXJucyA9IGJvb3RfcGF0dGVybnMKIAogICAgICAgICBzZWxmLnJ1bnFlbXV0aW1lID0gMTIwCiAgICAgICAgIHNlbGYucWVtdV9waWRmaWxlID0gJ3BpZGZpbGVfJytzdHIob3MuZ2V0cGlkKCkpCkBAIC02NCw2ICs2OSwyNSBAQAogCiAgICAgICAgIHNlbGYubG9nZ2VyID0gbG9nZ2VyCiAKKyAgICAgICAgIyBFbmFibGUgdGVzdGluZyBvdGhlciBPUydzCisgICAgICAgICMgU2V0IGNvbW1hbmRzIGZvciB0YXJnZXQgY29tbXVuaWNhdGlvbiwgYW5kIGRlZmF1bHQgdG8gTGludXggQUxXQVlTCisgICAgICAgICMgT3RoZXIgT1MncyBvciBiYXJlbWV0YWwgYXBwbGljYXRpb25zIG5lZWQgdG8gcHJvdmlkZSB0aGVpcgorICAgICAgICAjIG93biBpbXBsZW1lbnRhdGlvbiBwYXNzaW5nIGl0IHRocm91Z2ggUWVtdVJ1bm5lcidzIGNvbnN0cnVjdG9yCisgICAgICAgICMgb3IgYnkgcGFzc2luZyB0aGVtIHRocm91Z2ggVEVTVElNQUdFX0JPT1RfUEFUVEVSTlNbZmxhZ10KKyAgICAgICAgIyBwcm92aWRlZCB2YXJpYWJsZXMsIHdoZXJlIDxmbGFnPiBpcyBvbmUgb2YgdGhlIG1lbnRpb25lZCBiZWxvdy4KKyAgICAgICAgYWNjZXB0ZWRfcGF0dGVybnMgPSBbJ3NlYXJjaF9yZWFjaGVkX3Byb21wdCcsICdzZW5kX2xvZ2luX3VzZXInLCAnc2VhcmNoX2xvZ2luX3N1Y2NlZWRlZCcsICdzZWFyY2hfY21kX2ZpbmlzaGVkJ10KKyAgICAgICAgZGVmYXVsdF9ib290X3BhdHRlcm5zID0gZGVmYXVsdGRpY3Qoc3RyKQorICAgICAgICAjIERlZmF1bHQgdG8gdGhlIHVzdWFsIHBhdGVybnMgdXNlZCB0byBjb21tdW5pY2F0ZSB3aXRoIHRoZSB0YXJnZXQKKyAgICAgICAgZGVmYXVsdF9ib290X3BhdHRlcm5zWydzZWFyY2hfcmVhY2hlZF9wcm9tcHQnXSA9IGInIGxvZ2luOicKKyAgICAgICAgZGVmYXVsdF9ib290X3BhdHRlcm5zWydzZW5kX2xvZ2luX3VzZXInXSA9ICdyb290XG4nCisgICAgICAgIGRlZmF1bHRfYm9vdF9wYXR0ZXJuc1snc2VhcmNoX2xvZ2luX3N1Y2NlZWRlZCddID0gciJyb290QFthLXpBLVowLTlcLV0rOn4jIgorICAgICAgICBkZWZhdWx0X2Jvb3RfcGF0dGVybnNbJ3NlYXJjaF9jbWRfZmluaXNoZWQnXSA9IHIiW2EtekEtWjAtOV0rQFthLXpBLVowLTlcLV0rOn4jIgorCisgICAgICAgICMgT25seSBvdmVycmlkZSBwYXR0ZXJucyB0aGF0IHdlcmUgc2V0IGUuZy4gbG9naW4gdXNlciBURVNUSU1BR0VfQk9PVF9QQVRURVJOU1tzZW5kX2xvZ2luX3VzZXJdID0gIndlYnNlcnZlclxuIgorICAgICAgICBmb3IgcGF0dGVybiBpbiBhY2NlcHRlZF9wYXR0ZXJuczoKKyAgICAgICAgICAgIGlmIG5vdCBzZWxmLmJvb3RfcGF0dGVybnNbcGF0dGVybl06CisgICAgICAgICAgICAgICAgc2VsZi5ib290X3BhdHRlcm5zW3BhdHRlcm5dID0gZGVmYXVsdF9ib290X3BhdHRlcm5zW3BhdHRlcm5dCisKICAgICBkZWYgY3JlYXRlX3NvY2tldChzZWxmKToKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgc29jayA9IHNvY2tldC5zb2NrZXQoc29ja2V0LkFGX0lORVQsIHNvY2tldC5TT0NLX1NUUkVBTSkKQEAgLTk4LDExICsxMjIsMTAgQEAKICAgICBkZWYgaGFuZGxlU0lHQ0hMRChzZWxmLCBzaWdudW0sIGZyYW1lKToKICAgICAgICAgaWYgc2VsZi5ydW5xZW11IGFuZCBzZWxmLnJ1bnFlbXUucG9sbCgpOgogICAgICAgICAgICAgaWYgc2VsZi5ydW5xZW11LnJldHVybmNvZGU6Ci0gICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIud2FybmluZygncnVucWVtdSBleGl0ZWQgd2l0aCBjb2RlICVkJyAlIHNlbGYucnVucWVtdS5yZXR1cm5jb2RlKQotICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJPdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiICUgc2VsZi5nZXRPdXRwdXQoc2VsZi5ydW5xZW11LnN0ZG91dCkpCisgICAgICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoJ3J1bnFlbXUgZXhpdGVkIHdpdGggY29kZSAlZCcgJSBzZWxmLnJ1bnFlbXUucmV0dXJuY29kZSkKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcignT3V0cHV0IGZyb20gcnVucWVtdTpcbiVzJyAlIHNlbGYuZ2V0T3V0cHV0KHNlbGYucnVucWVtdS5zdGRvdXQpKQogICAgICAgICAgICAgICAgIHNlbGYuc3RvcCgpCiAgICAgICAgICAgICAgICAgc2VsZi5fZHVtcF9ob3N0KCkKLSAgICAgICAgICAgICAgICByYWlzZSBTeXN0ZW1FeGl0CiAKICAgICBkZWYgc3RhcnQoc2VsZiwgcWVtdXBhcmFtcyA9IE5vbmUsIGdldF9pcCA9IFRydWUsIGV4dHJhX2Jvb3RwYXJhbXMgPSBOb25lLCBydW5xZW11cGFyYW1zPScnLCBsYXVuY2hfY21kPU5vbmUsIGRpc2NhcmRfd3JpdGVzPVRydWUpOgogICAgICAgICBlbnYgPSBvcy5lbnZpcm9uLmNvcHkoKQpAQCAtMTM2LDEzICsxNTksMTYgQEAKICAgICAgICAgICAgICAgICBsYXVuY2hfY21kICs9ICcgbm9ncmFwaGljJwogICAgICAgICAgICAgaWYgc2VsZi51c2Vfc2xpcnA6CiAgICAgICAgICAgICAgICAgbGF1bmNoX2NtZCArPSAnIHNsaXJwJworICAgICAgICAgICAgaWYgc2VsZi51c2Vfb3ZtZjoKKyAgICAgICAgICAgICAgICBsYXVuY2hfY21kICs9ICcgb3ZtZicKICAgICAgICAgICAgIGxhdW5jaF9jbWQgKz0gJyAlcyAlcyAlcycgJSAocnVucWVtdXBhcmFtcywgc2VsZi5tYWNoaW5lLCBzZWxmLnJvb3RmcykKIAogICAgICAgICByZXR1cm4gc2VsZi5sYXVuY2gobGF1bmNoX2NtZCwgcWVtdXBhcmFtcz1xZW11cGFyYW1zLCBnZXRfaXA9Z2V0X2lwLCBleHRyYV9ib290cGFyYW1zPWV4dHJhX2Jvb3RwYXJhbXMsIGVudj1lbnYpCiAKICAgICBkZWYgbGF1bmNoKHNlbGYsIGxhdW5jaF9jbWQsIGdldF9pcCA9IFRydWUsIHFlbXVwYXJhbXMgPSBOb25lLCBleHRyYV9ib290cGFyYW1zID0gTm9uZSwgZW52ID0gTm9uZSk6CiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIHNlbGYudGhyZWFkc29jaywgdGhyZWFkcG9ydCA9IHNlbGYuY3JlYXRlX3NvY2tldCgpCisgICAgICAgICAgICBpZiBzZWxmLnNlcmlhbF9wb3J0cyA+PSAyOgorICAgICAgICAgICAgICAgIHNlbGYudGhyZWFkc29jaywgdGhyZWFkcG9ydCA9IHNlbGYuY3JlYXRlX3NvY2tldCgpCiAgICAgICAgICAgICBzZWxmLnNlcnZlcl9zb2NrZXQsIHNlbGYuc2VydmVycG9ydCA9IHNlbGYuY3JlYXRlX3NvY2tldCgpCiAgICAgICAgIGV4Y2VwdCBzb2NrZXQuZXJyb3IgYXMgbXNnOgogICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIkZhaWxlZCB0byBjcmVhdGUgbGlzdGVuaW5nIHNvY2tldDogJXMiICUgbXNnWzFdKQpAQCAtMTYwLDcgKzE4NiwxMCBAQAogICAgICAgICBpZiBxZW11cGFyYW1zOgogICAgICAgICAgICAgc2VsZi5xZW11cGFyYW1zID0gc2VsZi5xZW11cGFyYW1zWzotMV0gKyAiICIgKyBxZW11cGFyYW1zICsgIiAiICsgJ1wiJwogCi0gICAgICAgIGxhdW5jaF9jbWQgKz0gJyB0Y3BzZXJpYWw9JXM6JXMgJXMnICUgKHRocmVhZHBvcnQsIHNlbGYuc2VydmVycG9ydCwgc2VsZi5xZW11cGFyYW1zKQorICAgICAgICBpZiBzZWxmLnNlcmlhbF9wb3J0cyA+PSAyOgorICAgICAgICAgICAgbGF1bmNoX2NtZCArPSAnIHRjcHNlcmlhbD0lczolcyAlcycgJSAodGhyZWFkcG9ydCwgc2VsZi5zZXJ2ZXJwb3J0LCBzZWxmLnFlbXVwYXJhbXMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsYXVuY2hfY21kICs9ICcgdGNwc2VyaWFsPSVzICVzJyAlIChzZWxmLnNlcnZlcnBvcnQsIHNlbGYucWVtdXBhcmFtcykKIAogICAgICAgICBzZWxmLm9yaWdjaGxkaGFuZGxlciA9IHNpZ25hbC5nZXRzaWduYWwoc2lnbmFsLlNJR0NITEQpCiAgICAgICAgIHNpZ25hbC5zaWduYWwoc2lnbmFsLlNJR0NITEQsIHNlbGYuaGFuZGxlU0lHQ0hMRCkKQEAgLTIwNiw2ICsyMzUsOCBAQAogICAgICAgICBlbmR0aW1lID0gdGltZS50aW1lKCkgKyBzZWxmLnJ1bnFlbXV0aW1lCiAgICAgICAgIHdoaWxlIG5vdCBzZWxmLmlzX2FsaXZlKCkgYW5kIHRpbWUudGltZSgpIDwgZW5kdGltZToKICAgICAgICAgICAgIGlmIHNlbGYucnVucWVtdS5wb2xsKCk6CisgICAgICAgICAgICAgICAgaWYgc2VsZi5ydW5xZW11X2V4aXRlZDoKKyAgICAgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgICAgICAgICAgaWYgc2VsZi5ydW5xZW11LnJldHVybmNvZGU6CiAgICAgICAgICAgICAgICAgICAgICMgTm8gcG9pbnQgd2FpdGluZyBhbnkgbG9uZ2VyCiAgICAgICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLndhcm5pbmcoJ3J1bnFlbXUgZXhpdGVkIHdpdGggY29kZSAlZCcgJSBzZWxmLnJ1bnFlbXUucmV0dXJuY29kZSkKQEAgLTIxNSw2ICsyNDYsOSBAQAogICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKICAgICAgICAgICAgIHRpbWUuc2xlZXAoMC41KQogCisgICAgICAgIGlmIHNlbGYucnVucWVtdV9leGl0ZWQ6CisgICAgICAgICAgICByZXR1cm4gRmFsc2UKKwogICAgICAgICBpZiBub3Qgc2VsZi5pc19hbGl2ZSgpOgogICAgICAgICAgICAgc2VsZi5sb2dnZXIuZXJyb3IoIlFlbXUgcGlkIGRpZG4ndCBhcHBlYXIgaW4gJXMgc2Vjb25kcyAoJXMpIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoc2VsZi5ydW5xZW11dGltZSwgdGltZS5zdHJmdGltZSgiJUQgJUg6JU06JVMiKSkpCkBAIC0yMzcsOCArMjcxLDggQEAKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoInFlbXUgc3RhcnRlZCBpbiAlcyBzZWNvbmRzIC0gcWVtdSBwcm9jY2VzIHBpZCBpcyAlcyAoJXMpIiAlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICh0aW1lLnRpbWUoKSAtIChlbmR0aW1lIC0gc2VsZi5ydW5xZW11dGltZSksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnFlbXVwaWQsIHRpbWUuc3RyZnRpbWUoIiVEICVIOiVNOiVTIikpKQorICAgICAgICBjbWRsaW5lID0gJycKICAgICAgICAgaWYgZ2V0X2lwOgotICAgICAgICAgICAgY21kbGluZSA9ICcnCiAgICAgICAgICAgICB3aXRoIG9wZW4oJy9wcm9jLyVzL2NtZGxpbmUnICUgc2VsZi5xZW11cGlkKSBhcyBwOgogICAgICAgICAgICAgICAgIGNtZGxpbmUgPSBwLnJlYWQoKQogICAgICAgICAgICAgICAgICMgSXQgaXMgbmVlZGVkIHRvIHNhbml0aXplIHRoZSBkYXRhIHJlY2VpdmVkCkBAIC0yNzUsMTQgKzMwOSwxNSBAQAogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiVGFyZ2V0IElQOiAlcyIgJSBzZWxmLmlwKQogICAgICAgICBzZWxmLmxvZ2dlci5kZWJ1ZygiU2VydmVyIElQOiAlcyIgJSBzZWxmLnNlcnZlcl9pcCkKIAotICAgICAgICBzZWxmLnRocmVhZCA9IExvZ2dpbmdUaHJlYWQoc2VsZi5sb2csIHNlbGYudGhyZWFkc29jaywgc2VsZi5sb2dnZXIpCi0gICAgICAgIHNlbGYudGhyZWFkLnN0YXJ0KCkKLSAgICAgICAgaWYgbm90IHNlbGYudGhyZWFkLmNvbm5lY3Rpb25fZXN0YWJsaXNoZWQud2FpdChzZWxmLmJvb3R0aW1lKToKLSAgICAgICAgICAgIHNlbGYubG9nZ2VyLmVycm9yKCJEaWRuJ3QgcmVjZWl2ZSBhIGNvbnNvbGUgY29ubmVjdGlvbiBmcm9tIHFlbXUuICIKLSAgICAgICAgICAgICAgICAgICAgICAgICAiSGVyZSBpcyB0aGUgcWVtdSBjb21tYW5kIGxpbmUgdXNlZDpcbiVzXG5hbmQgIgotICAgICAgICAgICAgICAgICAgICAgICAgICJvdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiICUgKGNtZGxpbmUsIG91dCkpCi0gICAgICAgICAgICBzZWxmLnN0b3BfdGhyZWFkKCkKLSAgICAgICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBpZiBzZWxmLnNlcmlhbF9wb3J0cyA+PSAyOgorICAgICAgICAgICAgc2VsZi50aHJlYWQgPSBMb2dnaW5nVGhyZWFkKHNlbGYubG9nLCBzZWxmLnRocmVhZHNvY2ssIHNlbGYubG9nZ2VyKQorICAgICAgICAgICAgc2VsZi50aHJlYWQuc3RhcnQoKQorICAgICAgICAgICAgaWYgbm90IHNlbGYudGhyZWFkLmNvbm5lY3Rpb25fZXN0YWJsaXNoZWQud2FpdChzZWxmLmJvb3R0aW1lKToKKyAgICAgICAgICAgICAgICBzZWxmLmxvZ2dlci5lcnJvcigiRGlkbid0IHJlY2VpdmUgYSBjb25zb2xlIGNvbm5lY3Rpb24gZnJvbSBxZW11LiAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJIZXJlIGlzIHRoZSBxZW11IGNvbW1hbmQgbGluZSB1c2VkOlxuJXNcbmFuZCAiCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvdXRwdXQgZnJvbSBydW5xZW11OlxuJXMiICUgKGNtZGxpbmUsIG91dCkpCisgICAgICAgICAgICAgICAgc2VsZi5zdG9wX3RocmVhZCgpCisgICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIk91dHB1dCBmcm9tIHJ1bnFlbXU6XG4lcyIsIG91dCkKICAgICAgICAgc2VsZi5sb2dnZXIuZGVidWcoIldhaXRpbmcgYXQgbW9zdCAlZCBzZWNvbmRzIGZvciBsb2dpbiBiYW5uZXIgKCVzKSIgJQpAQCAtMzEwLDggKzM0NSwxMiBAQAogICAgICAgICAgICAgICAgICAgICBkYXRhID0gZGF0YSArIHNvY2sucmVjdigxMDI0KQogICAgICAgICAgICAgICAgICAgICBpZiBkYXRhOgogICAgICAgICAgICAgICAgICAgICAgICAgYm9vdGxvZyArPSBkYXRhCisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLnNlcmlhbF9wb3J0cyA8IDI6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyB0aGlzIHNvY2tldCBoYXMgbWl4ZWQgY29uc29sZS9rZXJuZWwgZGF0YSwgbG9nIGl0IHRvIGxvZ2ZpbGUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxvZyhkYXRhKQorCiAgICAgICAgICAgICAgICAgICAgICAgICBkYXRhID0gYicnCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBiJyBsb2dpbjonIGluIGJvb3Rsb2c6CisgICAgICAgICAgICAgICAgICAgICAgICBpZiBzZWxmLmJvb3RfcGF0dGVybnNbJ3NlYXJjaF9yZWFjaGVkX3Byb21wdCddIGluIGJvb3Rsb2c6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5zZXJ2ZXJfc29ja2V0ID0gcWVtdXNvY2sKICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdG9wcmVhZCA9IFRydWUKICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFjaGVkbG9naW4gPSBUcnVlCkBAIC0zNDMsOCArMzgyLDggQEAKIAogICAgICAgICAjIElmIHdlIGFyZSBub3QgYWJsZSB0byBsb2dpbiB0aGUgdGVzdHMgY2FuIGNvbnRpbnVlCiAgICAgICAgIHRyeToKLSAgICAgICAgICAgIChzdGF0dXMsIG91dHB1dCkgPSBzZWxmLnJ1bl9zZXJpYWwoInJvb3RcbiIsIHJhdz1UcnVlKQotICAgICAgICAgICAgaWYgcmUuc2VhcmNoKHIicm9vdEBbYS16QS1aMC05XC1dKzp+IyIsIG91dHB1dCk6CisgICAgICAgICAgICAoc3RhdHVzLCBvdXRwdXQpID0gc2VsZi5ydW5fc2VyaWFsKHNlbGYuYm9vdF9wYXR0ZXJuc1snc2VuZF9sb2dpbl91c2VyJ10sIHJhdz1UcnVlKQorICAgICAgICAgICAgaWYgcmUuc2VhcmNoKHNlbGYuYm9vdF9wYXR0ZXJuc1snc2VhcmNoX2xvZ2luX3N1Y2NlZWRlZCddLCBvdXRwdXQpOgogICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VkID0gVHJ1ZQogICAgICAgICAgICAgICAgIHNlbGYubG9nZ2VyLmRlYnVnKCJMb2dnZWQgYXMgcm9vdCBpbiBzZXJpYWwgY29uc29sZSIpCiAgICAgICAgICAgICAgICAgaWYgbmV0Y29uZjoKQEAgLTM4NSw3ICs0MjQsNyBAQAogICAgICAgICAgICAgICAgIG9zLmtpbGxwZyhvcy5nZXRwZ2lkKHNlbGYucnVucWVtdS5waWQpLCBzaWduYWwuU0lHS0lMTCkKICAgICAgICAgICAgIHNlbGYucnVucWVtdS5zdGRpbi5jbG9zZSgpCiAgICAgICAgICAgICBzZWxmLnJ1bnFlbXUuc3Rkb3V0LmNsb3NlKCkKLSAgICAgICAgICAgIHNlbGYucnVucWVtdSA9IE5vbmUKKyAgICAgICAgICAgIHNlbGYucnVucWVtdV9leGl0ZWQgPSBUcnVlCiAKICAgICAgICAgaWYgaGFzYXR0cihzZWxmLCAnc2VydmVyX3NvY2tldCcpIGFuZCBzZWxmLnNlcnZlcl9zb2NrZXQ6CiAgICAgICAgICAgICBzZWxmLnNlcnZlcl9zb2NrZXQuY2xvc2UoKQpAQCAtMzk2LDcgKzQzNSwxMSBAQAogICAgICAgICBzZWxmLnFlbXVwaWQgPSBOb25lCiAgICAgICAgIHNlbGYuaXAgPSBOb25lCiAgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKHNlbGYucWVtdV9waWRmaWxlKToKLSAgICAgICAgICAgIG9zLnJlbW92ZShzZWxmLnFlbXVfcGlkZmlsZSkKKyAgICAgICAgICAgIHRyeToKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUoc2VsZi5xZW11X3BpZGZpbGUpCisgICAgICAgICAgICBleGNlcHQgRmlsZU5vdEZvdW5kRXJyb3IgYXMgZToKKyAgICAgICAgICAgICAgICAjIFdlIHJhY2VkLCBpZ25vcmUKKyAgICAgICAgICAgICAgICBwYXNzCiAgICAgICAgIGlmIHNlbGYubW9uaXRvcnBpcGU6CiAgICAgICAgICAgICBzZWxmLm1vbml0b3JwaXBlLmNsb3NlKCkKIApAQCAtNDIyLDcgKzQ2NSw3IEBACiAgICAgICAgIHJldHVybiBGYWxzZQogCiAgICAgZGVmIGlzX2FsaXZlKHNlbGYpOgotICAgICAgICBpZiBub3Qgc2VsZi5ydW5xZW11IG9yIHNlbGYucnVucWVtdS5wb2xsKCkgaXMgbm90IE5vbmU6CisgICAgICAgIGlmIG5vdCBzZWxmLnJ1bnFlbXUgb3Igc2VsZi5ydW5xZW11LnBvbGwoKSBpcyBub3QgTm9uZSBvciBzZWxmLnJ1bnFlbXVfZXhpdGVkOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKHNlbGYucWVtdV9waWRmaWxlKToKICAgICAgICAgICAgICMgd2hlbiBoYW5kbGluZyBwaWRmaWxlLCBxZW11IGNyZWF0ZXMgdGhlIGZpbGUsIHN0YXQgaXQsIGxvY2sgaXQgYW5kIHRoZW4gd3JpdGUgdG8gaXQKQEAgLTQ2NSw3ICs1MDgsNyBAQAogICAgICAgICAgICAgICAgIGlmIGFuc3dlcjoKICAgICAgICAgICAgICAgICAgICAgZGF0YSArPSBhbnN3ZXIuZGVjb2RlKCd1dGYtOCcpCiAgICAgICAgICAgICAgICAgICAgICMgU2VhcmNoIHRoZSBwcm9tcHQgdG8gc3RvcAotICAgICAgICAgICAgICAgICAgICBpZiByZS5zZWFyY2gociJbYS16QS1aMC05XStAW2EtekEtWjAtOVwtXSs6fiMiLCBkYXRhKToKKyAgICAgICAgICAgICAgICAgICAgaWYgcmUuc2VhcmNoKHNlbGYuYm9vdF9wYXR0ZXJuc1snc2VhcmNoX2NtZF9maW5pc2hlZCddLCBkYXRhKToKICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgcmFpc2UgRXhjZXB0aW9uKCJObyBkYXRhIG9uIHNlcmlhbCBjb25zb2xlIHNvY2tldCIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvbGliL29lcWEvdXRpbHMvc3NoY29udHJvbC5weSBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9zc2hjb250cm9sLnB5CmluZGV4IDQ5YTA3MjYuLjM2YzJlY2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9zc2hjb250cm9sLnB5CisrKyBiL3Bva3kvbWV0YS9saWIvb2VxYS91dGlscy9zc2hjb250cm9sLnB5CkBAIC0yMyw3ICsyMyw3IEBACiAgICAgICAgICAgICAic3RkaW4iOiBOb25lLAogICAgICAgICAgICAgInNoZWxsIjogRmFsc2UsCiAgICAgICAgICAgICAiYnVmc2l6ZSI6IC0xLAotICAgICAgICAgICAgInByZWV4ZWNfZm4iOiBvcy5zZXRzaWQsCisgICAgICAgICAgICAic3RhcnRfbmV3X3Nlc3Npb24iOiBUcnVlLAogICAgICAgICB9CiAgICAgICAgIHNlbGYub3B0aW9ucyA9IGRpY3Qoc2VsZi5kZWZhdWx0b3B0cykKICAgICAgICAgc2VsZi5vcHRpb25zLnVwZGF0ZShvcHRpb25zKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2Fsc2Etc3RhdGUvYWxzYS1zdGF0ZS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9hbHNhLXN0YXRlL2Fsc2Etc3RhdGUuYmIKaW5kZXggMDY3MDU1Ni4uY2VjMjI3MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2Fsc2Etc3RhdGUvYWxzYS1zdGF0ZS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvYWxzYS1zdGF0ZS9hbHNhLXN0YXRlLmJiCkBAIC02Miw3ICs2Miw3IEBACiAJdGhlbgogCQlpZiB0ZXN0IC14ICR7c2JpbmRpcn0vYWxzYWN0bAogCQl0aGVuCi0JCQkke3NiaW5kaXJ9L2Fsc2FjdGwgLWYgJHtsb2NhbHN0YXRlZGlyfS9saWIvYWxzYS9hc291bmQuc3RhdGUgcmVzdG9yZQorCQkJJHtzYmluZGlyfS9hbHNhY3RsIC1nIC1mICR7bG9jYWxzdGF0ZWRpcn0vbGliL2Fsc2EvYXNvdW5kLnN0YXRlIHJlc3RvcmUKIAkJZmkKIAlmaQogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1YjIuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2dydWIvZ3J1YjIuaW5jCmluZGV4IGM4MWRlZjIuLmIzMjkxY2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9ncnViL2dydWIyLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvZ3J1Yi9ncnViMi5pbmMKQEAgLTMzLDcgKzMzLDcgQEAKIEdSVUJQTEFURk9STV9hYXJjaDY0ID0gImVmaSIKIEdSVUJQTEFURk9STSA/Pz0gInBjIgogCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8KK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKIAogRVhUUkFfT0VDT05GID0gIi0td2l0aC1wbGF0Zm9ybT0ke0dSVUJQTEFURk9STX0gXAogICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1ncnViLW1rZm9udCBcCkBAIC02MCw4ICs2MCw5IEBACiBleHBvcnQgUFlUSE9OID0gInB5dGhvbjMiCiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCSggY2QgJHtTfQotCSR7U30vYXV0b2dlbi5zaCApCisJY2QgJHtTfQorCUZST01fQk9PVFNUUkFQPTEgJHtTfS9hdXRvZ2VuLnNoCisJY2QgJHtCfQogfQogCiBSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6LTAuMTIuMjAvYWNkZWZpbmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3otMC4xMi4yMC9hY2RlZmluZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjgyY2Y0MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3otMC4xMi4yMC9hY2RlZmluZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLUFkZCBhIGRlc2NyaXB0aW9uIHRvIHRoZSBBQ19ERUZJTkUgZm9yIExPQ0FMRURJUiBzbyB0aGF0IGl0IGFwcGVhcnMgaW4gY29uZmlnLmgKLWFuZCBzaWxlbmNlcyBhIGZhdGFsIHdhcm5pbmcuCi0KLVVwc3RyZWFtLVN0YXR1czpQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmluIGIvY29uZmlndXJlLmluCi1pbmRleCBjMTA0NjBjLi5hYTIwMjYzIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmluCi0rKysgYi9jb25maWd1cmUuaW4KLUBAIC0yNTgsNyArMjU4LDcgQEAgQUNfU1VCU1QoTElCUykKLSAKLSBBTV9HTlVfR0VUVEVYVAotIAotLUFDX0RFRklORV9VTlFVT1RFRChMT0NBTEVESVIsIiRwcmVmaXgvJERBVEFESVJOQU1FIikKLStBQ19ERUZJTkVfVU5RVU9URUQoTE9DQUxFRElSLCIkcHJlZml4LyREQVRBRElSTkFNRSIsW2xvY2FsZSBkaXJlY3RvcnldKQotIAotIEFDX09VVFBVVChbTWFrZWZpbGUgaW50bC9NYWtlZmlsZSBsaWIvTWFrZWZpbGUgdGVzdHN1aXRlL01ha2VmaWxlICBtNC9NYWtlZmlsZSBcCi0gbWFuL01ha2VmaWxlIHBvL01ha2VmaWxlLmluIHNyYy9NYWtlZmlsZSBkZWJpYW4vcnVsZXMgU3BlY2ZpbGUgc3lzdHlwZSBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3otMC4xMi4yMC9hdXRvdG9vbHMtdXBkYXRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6LTAuMTIuMjAvYXV0b3Rvb2xzLXVwZGF0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2FmMzhiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6LTAuMTIuMjAvYXV0b3Rvb2xzLXVwZGF0ZS5wYXRjaApAQCAtMCwwICsxLDU3NDkgQEAKK1VwZGF0ZSBhdXRvdG9vbHMgaW5mcmFzdHJ1Y3R1cmUgKGluY2x1ZGluZyBnZXR0ZXh0KSB0byBtb2Rlcm4gdmVyc2lvbnMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogUGhpbCBCbHVuZGVsbCA8cGJAcGJjbC5uZXQ+CisKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9jb25maWd1cmUuaW4gbHJ6c3otMC4xMi4yMC9jb25maWd1cmUuaW4KKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2NvbmZpZ3VyZS5pbgkxOTk4LTEyLTMwIDA3OjUwOjA3LjAwMDAwMDAwMCArMDAwMAorKysrIGxyenN6LTAuMTIuMjAvY29uZmlndXJlLmluCTIwMTktMTEtMjUgMTY6MjI6MzcuMDAwMDAwMDAwICswMDAwCitAQCAtOTIsNyArOTIsNiBAQCBBQ19QUk9HX1JBTkxJQgorIEFDX0lTQ19QT1NJWAorIEFDX0FJWAorIEFDX01JTklYCistQU1fQ19QUk9UT1RZUEVTCisgQUNfQ19DT05TVAorIEFDX0NfSU5MSU5FCisgCitAQCAtMjUzLDE4ICsyNTIsMTMgQEAgaWhhdmUkbG9va3VwX2ZhY2lsaXR5CisgZmkKKyAKKyAKKy1BQ19TVUJTVChDRkxBR1MpCistQUNfU1VCU1QoTERGTEFHUykKKyBBQ19TVUJTVChMSUJTKQorIAorLUFNX0dOVV9HRVRURVhUCisrQU1fR05VX0dFVFRFWFQoW2V4dGVybmFsXSkKKyAKKy1BQ19ERUZJTkVfVU5RVU9URUQoTE9DQUxFRElSLCIkcHJlZml4LyREQVRBRElSTkFNRSIpCistQUNfTElOS19GSUxFUygkbmxzX2N2X2hlYWRlcl9saWJndCwgJG5sc19jdl9oZWFkZXJfaW50bCkKKy0KKy1BQ19PVVRQVVQoW01ha2VmaWxlIGludGwvTWFrZWZpbGUgbGliL01ha2VmaWxlIHRlc3RzdWl0ZS9NYWtlZmlsZSBcCisrQUNfT1VUUFVUKFtNYWtlZmlsZSBsaWIvTWFrZWZpbGUgdGVzdHN1aXRlL01ha2VmaWxlIFwKKyBtYW4vTWFrZWZpbGUgcG8vTWFrZWZpbGUuaW4gc3JjL01ha2VmaWxlIGRlYmlhbi9ydWxlcyBTcGVjZmlsZSBzeXN0eXBlIFwKKyBzcmMvbHJ6c3pidWddLAorLVtzZWQgLWUgIi9QT1RGSUxFUyA9L3IgcG8vUE9URklMRVMiIHBvL01ha2VmaWxlLmluID4gcG8vTWFrZWZpbGU7IAorK1sKKyBjaG1vZCAreCBkZWJpYW4vcnVsZXM7CisgdGVzdCAteiAiJENPTkZJR19IRUFERVJTIiB8fCBlY2hvIHRpbWVzdGFtcCA+IHN0YW1wLWhdKQorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvYmluZHRleHRkb20uYyBscnpzei0wLjEyLjIwL2ludGwvYmluZHRleHRkb20uYworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9iaW5kdGV4dGRvbS5jCTE5OTgtMDQtMjYgMTQ6MjI6MzYuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2JpbmR0ZXh0ZG9tLmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDE5OSArMCwwIEBACistLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIGJpbmR0ZXh0ZG9tYWluKDMpIGZ1bmN0aW9uCistICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmZGVmIEhBVkVfQ09ORklHX0gKKy0jIGluY2x1ZGUgPGNvbmZpZy5oPgorLSNlbmRpZgorLQorLSNpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIF9MSUJDCistIyBpbmNsdWRlIDxzdGRsaWIuaD4KKy0jZWxzZQorLSMgaWZkZWYgSEFWRV9NQUxMT0NfSAorLSMgIGluY2x1ZGUgPG1hbGxvYy5oPgorLSMgZWxzZQorLXZvaWQgZnJlZSAoKTsKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmIGRlZmluZWQgSEFWRV9TVFJJTkdfSCB8fCBkZWZpbmVkIF9MSUJDCistIyBpbmNsdWRlIDxzdHJpbmcuaD4KKy0jZWxzZQorLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgorLSMgaWZuZGVmIG1lbWNweQorLSMgIGRlZmluZSBtZW1jcHkoRHN0LCBTcmMsIE51bSkgYmNvcHkgKFNyYywgRHN0LCBOdW0pCistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpZmRlZiBfTElCQworLSMgaW5jbHVkZSA8bGliaW50bC5oPgorLSNlbHNlCistIyBpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCistI2VuZGlmCistI2luY2x1ZGUgImdldHRleHQuaCIKKy0jaW5jbHVkZSAiZ2V0dGV4dFAuaCIKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistLyogQ29udGFpbnMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIG1lc3NhZ2UgY2F0YWxvZ3MuICAqLworLWV4dGVybiBjb25zdCBjaGFyIF9ubF9kZWZhdWx0X2Rpcm5hbWVbXTsKKy0KKy0vKiBMaXN0IHdpdGggYmluZGluZ3Mgb2Ygc3BlY2lmaWMgZG9tYWlucy4gICovCistZXh0ZXJuIHN0cnVjdCBiaW5kaW5nICpfbmxfZG9tYWluX2JpbmRpbmdzOworLQorLQorLS8qIE5hbWVzIGZvciB0aGUgbGliaW50bCBmdW5jdGlvbnMgYXJlIGEgcHJvYmxlbS4gIFRoZXkgbXVzdCBub3QgY2xhc2gKKy0gICB3aXRoIGV4aXN0aW5nIG5hbWVzIGFuZCB0aGV5IHNob3VsZCBmb2xsb3cgQU5TSSBDLiAgQnV0IHRoaXMgc291cmNlCistICAgY29kZSBpcyBhbHNvIHVzZWQgaW4gR05VIEMgTGlicmFyeSB3aGVyZSB0aGUgbmFtZXMgaGF2ZSBhIF9fCistICAgcHJlZml4LiAgU28gd2UgaGF2ZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KKy0jaWZkZWYgX0xJQkMKKy0jIGRlZmluZSBCSU5EVEVYVERPTUFJTiBfX2JpbmR0ZXh0ZG9tYWluCistIyBkZWZpbmUgc3RyZHVwKHN0cikgX19zdHJkdXAgKHN0cikKKy0jZWxzZQorLSMgZGVmaW5lIEJJTkRURVhURE9NQUlOIGJpbmR0ZXh0ZG9tYWluX18KKy0jZW5kaWYKKy0KKy0vKiBTcGVjaWZ5IHRoYXQgdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIHdpbGwgYmUgZm91bmQKKy0gICBpbiBESVJOQU1FIHJhdGhlciB0aGFuIGluIHRoZSBzeXN0ZW0gbG9jYWxlIGRhdGEgYmFzZS4gICovCistY2hhciAqCistQklORFRFWFRET01BSU4gKGRvbWFpbm5hbWUsIGRpcm5hbWUpCistICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOworLSAgICAgY29uc3QgY2hhciAqZGlybmFtZTsKKy17CistICBzdHJ1Y3QgYmluZGluZyAqYmluZGluZzsKKy0KKy0gIC8qIFNvbWUgc2FuaXR5IGNoZWNrcy4gICovCistICBpZiAoZG9tYWlubmFtZSA9PSBOVUxMIHx8IGRvbWFpbm5hbWVbMF0gPT0gJ1wwJykKKy0gICAgcmV0dXJuIE5VTEw7CistCistICBmb3IgKGJpbmRpbmcgPSBfbmxfZG9tYWluX2JpbmRpbmdzOyBiaW5kaW5nICE9IE5VTEw7IGJpbmRpbmcgPSBiaW5kaW5nLT5uZXh0KQorLSAgICB7CistICAgICAgaW50IGNvbXBhcmUgPSBzdHJjbXAgKGRvbWFpbm5hbWUsIGJpbmRpbmctPmRvbWFpbm5hbWUpOworLSAgICAgIGlmIChjb21wYXJlID09IDApCistCS8qIFdlIGZvdW5kIGl0ISAgKi8KKy0JYnJlYWs7CistICAgICAgaWYgKGNvbXBhcmUgPCAwKQorLQl7CistCSAgLyogSXQgaXMgbm90IGluIHRoZSBsaXN0LiAgKi8KKy0JICBiaW5kaW5nID0gTlVMTDsKKy0JICBicmVhazsKKy0JfQorLSAgICB9CistCistICBpZiAoZGlybmFtZSA9PSBOVUxMKQorLSAgICAvKiBUaGUgY3VycmVudCBiaW5kaW5nIGhhcyBiZSB0byByZXR1cm5lZC4gICovCistICAgIHJldHVybiBiaW5kaW5nID09IE5VTEwgPyAoY2hhciAqKSBfbmxfZGVmYXVsdF9kaXJuYW1lIDogYmluZGluZy0+ZGlybmFtZTsKKy0KKy0gIGlmIChiaW5kaW5nICE9IE5VTEwpCistICAgIHsKKy0gICAgICAvKiBUaGUgZG9tYWluIGlzIGFscmVhZHkgYm91bmQuICBJZiB0aGUgbmV3IHZhbHVlIGFuZCB0aGUgb2xkCistCSBvbmUgYXJlIGVxdWFsIHdlIHNpbXBseSBkbyBub3RoaW5nLiAgT3RoZXJ3aXNlIHJlcGxhY2UgdGhlCistCSBvbGQgYmluZGluZy4gICovCistICAgICAgaWYgKHN0cmNtcCAoZGlybmFtZSwgYmluZGluZy0+ZGlybmFtZSkgIT0gMCkKKy0JeworLQkgIGNoYXIgKm5ld19kaXJuYW1lOworLQorLQkgIGlmIChzdHJjbXAgKGRpcm5hbWUsIF9ubF9kZWZhdWx0X2Rpcm5hbWUpID09IDApCistCSAgICBuZXdfZGlybmFtZSA9IChjaGFyICopIF9ubF9kZWZhdWx0X2Rpcm5hbWU7CistCSAgZWxzZQorLQkgICAgeworLSNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9TVFJEVVAKKy0JICAgICAgbmV3X2Rpcm5hbWUgPSBzdHJkdXAgKGRpcm5hbWUpOworLQkgICAgICBpZiAobmV3X2Rpcm5hbWUgPT0gTlVMTCkKKy0JCXJldHVybiBOVUxMOworLSNlbHNlCistCSAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4gKGRpcm5hbWUpICsgMTsKKy0JICAgICAgbmV3X2Rpcm5hbWUgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7CistCSAgICAgIGlmIChuZXdfZGlybmFtZSA9PSBOVUxMKQorLQkJcmV0dXJuIE5VTEw7CistCistCSAgICAgIG1lbWNweSAobmV3X2Rpcm5hbWUsIGRpcm5hbWUsIGxlbik7CistI2VuZGlmCistCSAgICB9CistCistCSAgaWYgKGJpbmRpbmctPmRpcm5hbWUgIT0gX25sX2RlZmF1bHRfZGlybmFtZSkKKy0JICAgIGZyZWUgKGJpbmRpbmctPmRpcm5hbWUpOworLQorLQkgIGJpbmRpbmctPmRpcm5hbWUgPSBuZXdfZGlybmFtZTsKKy0JfQorLSAgICB9CistICBlbHNlCistICAgIHsKKy0gICAgICAvKiBXZSBoYXZlIHRvIGNyZWF0ZSBhIG5ldyBiaW5kaW5nLiAgKi8KKy0gICAgICBzaXplX3QgbGVuOworLSAgICAgIHN0cnVjdCBiaW5kaW5nICpuZXdfYmluZGluZyA9CistCShzdHJ1Y3QgYmluZGluZyAqKSBtYWxsb2MgKHNpemVvZiAoKm5ld19iaW5kaW5nKSk7CistCistICAgICAgaWYgKG5ld19iaW5kaW5nID09IE5VTEwpCistCXJldHVybiBOVUxMOworLQorLSNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9TVFJEVVAKKy0gICAgICBuZXdfYmluZGluZy0+ZG9tYWlubmFtZSA9IHN0cmR1cCAoZG9tYWlubmFtZSk7CistICAgICAgaWYgKG5ld19iaW5kaW5nLT5kb21haW5uYW1lID09IE5VTEwpCistCXJldHVybiBOVUxMOworLSNlbHNlCistICAgICAgbGVuID0gc3RybGVuIChkb21haW5uYW1lKSArIDE7CistICAgICAgbmV3X2JpbmRpbmctPmRvbWFpbm5hbWUgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7CistICAgICAgaWYgKG5ld19iaW5kaW5nLT5kb21haW5uYW1lID09IE5VTEwpCistCXJldHVybiBOVUxMOworLSAgICAgIG1lbWNweSAobmV3X2JpbmRpbmctPmRvbWFpbm5hbWUsIGRvbWFpbm5hbWUsIGxlbik7CistI2VuZGlmCistCistICAgICAgaWYgKHN0cmNtcCAoZGlybmFtZSwgX25sX2RlZmF1bHRfZGlybmFtZSkgPT0gMCkKKy0JbmV3X2JpbmRpbmctPmRpcm5hbWUgPSAoY2hhciAqKSBfbmxfZGVmYXVsdF9kaXJuYW1lOworLSAgICAgIGVsc2UKKy0JeworLSNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9TVFJEVVAKKy0JICBuZXdfYmluZGluZy0+ZGlybmFtZSA9IHN0cmR1cCAoZGlybmFtZSk7CistCSAgaWYgKG5ld19iaW5kaW5nLT5kaXJuYW1lID09IE5VTEwpCistCSAgICByZXR1cm4gTlVMTDsKKy0jZWxzZQorLQkgIGxlbiA9IHN0cmxlbiAoZGlybmFtZSkgKyAxOworLQkgIG5ld19iaW5kaW5nLT5kaXJuYW1lID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOworLQkgIGlmIChuZXdfYmluZGluZy0+ZGlybmFtZSA9PSBOVUxMKQorLQkgICAgcmV0dXJuIE5VTEw7CistCSAgbWVtY3B5IChuZXdfYmluZGluZy0+ZGlybmFtZSwgZGlybmFtZSwgbGVuKTsKKy0jZW5kaWYKKy0JfQorLQorLSAgICAgIC8qIE5vdyBlbnF1ZXVlIGl0LiAgKi8KKy0gICAgICBpZiAoX25sX2RvbWFpbl9iaW5kaW5ncyA9PSBOVUxMCistCSAgfHwgc3RyY21wIChkb21haW5uYW1lLCBfbmxfZG9tYWluX2JpbmRpbmdzLT5kb21haW5uYW1lKSA8IDApCistCXsKKy0JICBuZXdfYmluZGluZy0+bmV4dCA9IF9ubF9kb21haW5fYmluZGluZ3M7CistCSAgX25sX2RvbWFpbl9iaW5kaW5ncyA9IG5ld19iaW5kaW5nOworLQl9CistICAgICAgZWxzZQorLQl7CistCSAgYmluZGluZyA9IF9ubF9kb21haW5fYmluZGluZ3M7CistCSAgd2hpbGUgKGJpbmRpbmctPm5leHQgIT0gTlVMTAorLQkJICYmIHN0cmNtcCAoZG9tYWlubmFtZSwgYmluZGluZy0+bmV4dC0+ZG9tYWlubmFtZSkgPiAwKQorLQkgICAgYmluZGluZyA9IGJpbmRpbmctPm5leHQ7CistCistCSAgbmV3X2JpbmRpbmctPm5leHQgPSBiaW5kaW5nLT5uZXh0OworLQkgIGJpbmRpbmctPm5leHQgPSBuZXdfYmluZGluZzsKKy0JfQorLQorLSAgICAgIGJpbmRpbmcgPSBuZXdfYmluZGluZzsKKy0gICAgfQorLQorLSAgcmV0dXJuIGJpbmRpbmctPmRpcm5hbWU7CistfQorLQorLSNpZmRlZiBfTElCQworLS8qIEFsaWFzIGZvciBmdW5jdGlvbiBuYW1lIGluIEdOVSBDIExpYnJhcnkuICAqLworLXdlYWtfYWxpYXMgKF9fYmluZHRleHRkb21haW4sIGJpbmR0ZXh0ZG9tYWluKTsKKy0jZW5kaWYKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2NhdC1jb21wYXQuYyBscnpzei0wLjEyLjIwL2ludGwvY2F0LWNvbXBhdC5jCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2NhdC1jb21wYXQuYwkxOTk4LTA0LTI2IDE0OjIyOjM3LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9jYXQtY29tcGF0LmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDI2MiArMCwwIEBACistLyogQ29tcGF0aWJpbGl0eSBjb2RlIGZvciBnZXR0ZXh0LXVzaW5nLWNhdGdldHMgaW50ZXJmYWNlLgorLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLSNpZmRlZiBIQVZFX0NPTkZJR19ICistIyBpbmNsdWRlIDxjb25maWcuaD4KKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSA8c3RkaW8uaD4KKy0KKy0jaWZkZWYgU1REQ19IRUFERVJTCistIyBpbmNsdWRlIDxzdGRsaWIuaD4KKy0jIGluY2x1ZGUgPHN0cmluZy5oPgorLSNlbHNlCistY2hhciAqZ2V0ZW52ICgpOworLSMgaWZkZWYgSEFWRV9NQUxMT0NfSAorLSMgIGluY2x1ZGUgPG1hbGxvYy5oPgorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWZkZWYgSEFWRV9OTF9UWVBFU19ICistIyBpbmNsdWRlIDxubF90eXBlcy5oPgorLSNlbmRpZgorLQorLSNpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLQorLS8qIFhQRzMgZGVmaW5lcyB0aGUgcmVzdWx0IG9mIGBzZXRsb2NhbGUgKGNhdGVnb3J5LCBOVUxMKScgYXM6CistICAgYGBEaXJlY3RzIGBzZXRsb2NhbGUoKScgdG8gcXVlcnkgYGNhdGVnb3J5JyBhbmQgcmV0dXJuIHRoZSBjdXJyZW50CistICAgICBzZXR0aW5nIG9mIGBsb2NhbCcuJycKKy0gICBIb3dldmVyIGl0IGRvZXMgbm90IHNwZWNpZnkgdGhlIGV4YWN0IGZvcm1hdC4gIEFuZCBldmVuIHdvcnNlOiBQT1NJWAorLSAgIGRlZmluZXMgdGhpcyBub3QgYXQgYWxsLiAgU28gd2UgY2FuIHVzZSB0aGlzIGZlYXR1cmUgb25seSBvbiBzZWxlY3RlZAorLSAgIHN5c3RlbSAoZS5nLiB0aG9zZSB1c2luZyBHTlUgQyBMaWJyYXJ5KS4gICovCistI2lmZGVmIF9MSUJDCistIyBkZWZpbmUgSEFWRV9MT0NBTEVfTlVMTAorLSNlbmRpZgorLQorLS8qIFRoZSBjYXRhbG9nIGRlc2NyaXB0b3IuICAqLworLXN0YXRpYyBubF9jYXRkIGNhdGFsb2cgPSAobmxfY2F0ZCkgLTE7CistCistLyogTmFtZSBvZiB0aGUgZGVmYXVsdCBjYXRhbG9nLiAgKi8KKy1zdGF0aWMgY29uc3QgY2hhciBkZWZhdWx0X2NhdGFsb2dfbmFtZVtdID0gIm1lc3NhZ2VzIjsKKy0KKy0vKiBOYW1lIG9mIGN1cnJlbnRseSB1c2VkIGNhdGFsb2cuICAqLworLXN0YXRpYyBjb25zdCBjaGFyICpjYXRhbG9nX25hbWUgPSBkZWZhdWx0X2NhdGFsb2dfbmFtZTsKKy0KKy0vKiBHZXQgSUQgZm9yIGdpdmVuIHN0cmluZy4gIElmIG5vdCBmb3VuZCByZXR1cm4gLTEuICAqLworLXN0YXRpYyBpbnQgbXNnX3RvX2NhdF9pZCBQQVJBTVMgKChjb25zdCBjaGFyICptc2cpKTsKKy0KKy0vKiBTdWJzdGl0dXRpb24gZm9yIHN5c3RlbXMgbGFja2luZyB0aGlzIGZ1bmN0aW9uIGluIHRoZWlyIEMgbGlicmFyeS4gICovCistI2lmICFfTElCQyAmJiAhSEFWRV9TVFBDUFkKKy1zdGF0aWMgY2hhciAqc3RwY3B5IFBBUkFNUyAoKGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYykpOworLSNlbmRpZgorLQorLQorLS8qIFNldCBjdXJyZW50bHkgdXNlZCBkb21haW4vY2F0YWxvZy4gICovCistY2hhciAqCistdGV4dGRvbWFpbiAoZG9tYWlubmFtZSkKKy0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7CisteworLSAgbmxfY2F0ZCBuZXdfY2F0YWxvZzsKKy0gIGNoYXIgKm5ld19uYW1lOworLSAgc2l6ZV90IG5ld19uYW1lX2xlbjsKKy0gIGNoYXIgKmxhbmc7CistCistI2lmIGRlZmluZWQgSEFWRV9TRVRMT0NBTEUgJiYgZGVmaW5lZCBIQVZFX0xDX01FU1NBR0VTIFwKKy0gICAgJiYgZGVmaW5lZCBIQVZFX0xPQ0FMRV9OVUxMCistICBsYW5nID0gc2V0bG9jYWxlIChMQ19NRVNTQUdFUywgTlVMTCk7CistI2Vsc2UKKy0gIGxhbmcgPSBnZXRlbnYgKCJMQ19BTEwiKTsKKy0gIGlmIChsYW5nID09IE5VTEwgfHwgbGFuZ1swXSA9PSAnXDAnKQorLSAgICB7CistICAgICAgbGFuZyA9IGdldGVudiAoIkxDX01FU1NBR0VTIik7CistICAgICAgaWYgKGxhbmcgPT0gTlVMTCB8fCBsYW5nWzBdID09ICdcMCcpCistCWxhbmcgPSBnZXRlbnYgKCJMQU5HIik7CistICAgIH0KKy0jZW5kaWYKKy0gIGlmIChsYW5nID09IE5VTEwgfHwgbGFuZ1swXSA9PSAnXDAnKQorLSAgICBsYW5nID0gIkMiOworLQorLSAgLyogU2VlIHdoZXRoZXIgbmFtZSBvZiBjdXJyZW50bHkgdXNlZCBkb21haW4gaXMgYXNrZWQuICAqLworLSAgaWYgKGRvbWFpbm5hbWUgPT0gTlVMTCkKKy0gICAgcmV0dXJuIChjaGFyICopIGNhdGFsb2dfbmFtZTsKKy0KKy0gIGlmIChkb21haW5uYW1lWzBdID09ICdcMCcpCistICAgIGRvbWFpbm5hbWUgPSBkZWZhdWx0X2NhdGFsb2dfbmFtZTsKKy0KKy0gIC8qIENvbXB1dGUgbGVuZ3RoIG9mIGFkZGVkIHBhdGggZWxlbWVudC4gICovCistICBuZXdfbmFtZV9sZW4gPSBzaXplb2YgKExPQ0FMRURJUikgLSAxICsgMSArIHN0cmxlbiAobGFuZykKKy0JCSArIHNpemVvZiAoIi9MQ19NRVNTQUdFUy8iKSAtIDEgKyBzaXplb2YgKFBBQ0tBR0UpIC0gMQorLQkJICsgc2l6ZW9mICgiLmNhdCIpOworLQorLSAgbmV3X25hbWUgPSAoY2hhciAqKSBtYWxsb2MgKG5ld19uYW1lX2xlbik7CistICBpZiAobmV3X25hbWUgPT0gTlVMTCkKKy0gICAgcmV0dXJuIE5VTEw7CistCistICBzdHJjcHkgKG5ld19uYW1lLCBQQUNLQUdFKTsKKy0gIG5ld19jYXRhbG9nID0gY2F0b3BlbiAobmV3X25hbWUsIDApOworLQorLSAgaWYgKG5ld19jYXRhbG9nID09IChubF9jYXRkKSAtMSkKKy0gICAgeworLSAgICAgIC8qIE5MU1BBVEggc2VhcmNoIGRpZG4ndCB3b3JrLCB0cnkgYWJzb2x1dGUgcGF0aCAqLworLSAgICAgIHNwcmludGYgKG5ld19uYW1lLCAiJXMvJXMvTENfTUVTU0FHRVMvJXMuY2F0IiwgTE9DQUxFRElSLCBsYW5nLAorLQkgICAgICAgUEFDS0FHRSk7CistICAgICAgbmV3X2NhdGFsb2cgPSBjYXRvcGVuIChuZXdfbmFtZSwgMCk7CistCistICAgICAgaWYgKG5ld19jYXRhbG9nID09IChubF9jYXRkKSAtMSkKKy0JeworLQkgIGZyZWUgKG5ld19uYW1lKTsKKy0JICByZXR1cm4gKGNoYXIgKikgY2F0YWxvZ19uYW1lOworLQl9CistICAgIH0KKy0KKy0gIC8qIENsb3NlIG9sZCBjYXRhbG9nLiAgKi8KKy0gIGlmIChjYXRhbG9nICE9IChubF9jYXRkKSAtMSkKKy0gICAgY2F0Y2xvc2UgKGNhdGFsb2cpOworLSAgaWYgKGNhdGFsb2dfbmFtZSAhPSBkZWZhdWx0X2NhdGFsb2dfbmFtZSkKKy0gICAgZnJlZSAoKGNoYXIgKikgY2F0YWxvZ19uYW1lKTsKKy0KKy0gIGNhdGFsb2cgPSBuZXdfY2F0YWxvZzsKKy0gIGNhdGFsb2dfbmFtZSA9IG5ld19uYW1lOworLQorLSAgcmV0dXJuIChjaGFyICopIGNhdGFsb2dfbmFtZTsKKy19CistCistY2hhciAqCistYmluZHRleHRkb21haW4gKGRvbWFpbm5hbWUsIGRpcm5hbWUpCistICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOworLSAgICAgY29uc3QgY2hhciAqZGlybmFtZTsKKy17CistI2lmIEhBVkVfU0VURU5WIHx8IEhBVkVfUFVURU5WCistICBjaGFyICpvbGRfdmFsLCAqbmV3X3ZhbCwgKmNwOworLSAgc2l6ZV90IG5ld192YWxfbGVuOworLQorLSAgLyogVGhpcyBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2UgaGVyZSBidXQgdG8gYmUgY29tcGF0aWJsZSBkbyBpdC4gICovCistICBpZiAoZG9tYWlubmFtZSA9PSBOVUxMKQorLSAgICByZXR1cm4gTlVMTDsKKy0KKy0gIC8qIENvbXB1dGUgbGVuZ3RoIG9mIGFkZGVkIHBhdGggZWxlbWVudC4gIElmIHdlIHVzZSBzZXRlbnYgd2UgZG9uJ3QgbmVlZAorLSAgICAgdGhlIGZpcnN0IGJ5dHMgZm9yIE5MU1BBVEg9LCBidXQgd2h5IGNvbXBsaWNhdGUgdGhlIGNvZGUgZm9yIHRoaXMKKy0gICAgIHBlYW51dHMuICAqLworLSAgbmV3X3ZhbF9sZW4gPSBzaXplb2YgKCJOTFNQQVRIPSIpIC0gMSArIHN0cmxlbiAoZGlybmFtZSkKKy0JCSsgc2l6ZW9mICgiLyVML0xDX01FU1NBR0VTLyVOLmNhdCIpOworLQorLSAgb2xkX3ZhbCA9IGdldGVudiAoIk5MU1BBVEgiKTsKKy0gIGlmIChvbGRfdmFsID09IE5VTEwgfHwgb2xkX3ZhbFswXSA9PSAnXDAnKQorLSAgICB7CistICAgICAgb2xkX3ZhbCA9IE5VTEw7CistICAgICAgbmV3X3ZhbF9sZW4gKz0gMSArIHNpemVvZiAoTE9DQUxFRElSKSAtIDEKKy0JICAgICAgICAgICAgICsgc2l6ZW9mICgiLyVML0xDX01FU1NBR0VTLyVOLmNhdCIpOworLSAgICB9CistICBlbHNlCistICAgIG5ld192YWxfbGVuICs9IHN0cmxlbiAob2xkX3ZhbCk7CistCistICBuZXdfdmFsID0gKGNoYXIgKikgbWFsbG9jIChuZXdfdmFsX2xlbik7CistICBpZiAobmV3X3ZhbCA9PSBOVUxMKQorLSAgICByZXR1cm4gTlVMTDsKKy0KKy0jIGlmIEhBVkVfU0VURU5WCistICBjcCA9IG5ld192YWw7CistIyBlbHNlCistICBjcCA9IHN0cGNweSAobmV3X3ZhbCwgIk5MU1BBVEg9Iik7CistIyBlbmRpZgorLQorLSAgY3AgPSBzdHBjcHkgKGNwLCBkaXJuYW1lKTsKKy0gIGNwID0gc3RwY3B5IChjcCwgIi8lTC9MQ19NRVNTQUdFUy8lTi5jYXQ6Iik7CistCistICBpZiAob2xkX3ZhbCA9PSBOVUxMKQorLSAgICB7CistIyBpZiBfX1NURENfXworLSAgICAgIHN0cGNweSAoY3AsIExPQ0FMRURJUiAiLyVML0xDX01FU1NBR0VTLyVOLmNhdCIpOworLSMgZWxzZQorLQorLSAgICAgIGNwID0gc3RwY3B5IChjcCwgTE9DQUxFRElSKTsKKy0gICAgICBzdHBjcHkgKGNwLCAiLyVML0xDX01FU1NBR0VTLyVOLmNhdCIpOworLSMgZW5kaWYKKy0gICAgfQorLSAgZWxzZQorLSAgICBzdHBjcHkgKGNwLCBvbGRfdmFsKTsKKy0KKy0jIGlmIEhBVkVfU0VURU5WCistICBzZXRlbnYgKCJOTFNQQVRIIiwgbmV3X3ZhbCwgMSk7CistICBmcmVlIChuZXdfdmFsKTsKKy0jIGVsc2UKKy0gIHB1dGVudiAobmV3X3ZhbCk7CistICAvKiBEbyAqbm90KiBmcmVlIHRoZSBlbnZpcm9ubWVudCBlbnRyeSB3ZSBqdXN0IGVudGVyZWQuICBJdCBpcyB1c2VkCistICAgICBmcm9tIG5vdyBvbi4gICAqLworLSMgZW5kaWYKKy0KKy0jZW5kaWYKKy0KKy0gIHJldHVybiAoY2hhciAqKSBkb21haW5uYW1lOworLX0KKy0KKy0jdW5kZWYgZ2V0dGV4dAorLWNoYXIgKgorLWdldHRleHQgKG1zZykKKy0gICAgIGNvbnN0IGNoYXIgKm1zZzsKKy17CistICBpbnQgbXNnaWQ7CistCistICBpZiAobXNnID09IE5VTEwgfHwgY2F0YWxvZyA9PSAobmxfY2F0ZCkgLTEpCistICAgIHJldHVybiAoY2hhciAqKSBtc2c7CistCistICAvKiBHZXQgdGhlIG1lc3NhZ2UgZnJvbSB0aGUgY2F0YWxvZy4gIFdlIGFsd2F5cyB1c2Ugc2V0IG51bWJlciAxLgorLSAgICAgVGhlIG1lc3NhZ2UgSUQgaXMgY29tcHV0ZWQgYnkgdGhlIGZ1bmN0aW9uIGBtc2dfdG9fY2F0X2lkJworLSAgICAgd2hpY2ggd29ya3Mgb24gdGhlIHRhYmxlIGdlbmVyYXRlZCBieSBgcG8tdG8tdGJsJy4gICovCistICBtc2dpZCA9IG1zZ190b19jYXRfaWQgKG1zZyk7CistICBpZiAobXNnaWQgPT0gLTEpCistICAgIHJldHVybiAoY2hhciAqKSBtc2c7CistCistICByZXR1cm4gY2F0Z2V0cyAoY2F0YWxvZywgMSwgbXNnaWQsIChjaGFyICopIG1zZyk7CistfQorLQorLS8qIExvb2sgdGhyb3VnaCB0aGUgdGFibGUgYF9tc2dfdGJsJyB3aGljaCBoYXMgYF9tc2dfdGJsX2xlbmd0aCcgZW50cmllcworLSAgIGZvciB0aGUgb25lIGVxdWFsIHRvIG1zZy4gIElmIGl0IGlzIGZvdW5kIHJldHVybiB0aGUgSUQuICBJbiBjYXNlIHdoZW4KKy0gICB0aGUgc3RyaW5nIGlzIG5vdCBmb3VuZCByZXR1cm4gLTEuICAqLworLXN0YXRpYyBpbnQKKy1tc2dfdG9fY2F0X2lkIChtc2cpCistICAgICBjb25zdCBjaGFyICptc2c7CisteworLSAgaW50IGNudDsKKy0KKy0gIGZvciAoY250ID0gMDsgY250IDwgX21zZ190YmxfbGVuZ3RoOyArK2NudCkKKy0gICAgaWYgKHN0cmNtcCAobXNnLCBfbXNnX3RibFtjbnRdLl9tc2cpID09IDApCistICAgICAgcmV0dXJuIF9tc2dfdGJsW2NudF0uX21zZ19udW1iZXI7CistCistICByZXR1cm4gLTE7CistfQorLQorLQorLS8qIEBAIGJlZ2luIG9mIGVwaWxvZyBAQCAqLworLQorLS8qIFdlIGRvbid0IHdhbnQgbGliaW50bC5hIHRvIGRlcGVuZCBvbiBhbnkgb3RoZXIgbGlicmFyeS4gIFNvIHdlCistICAgYXZvaWQgdGhlIG5vbi1zdGFuZGFyZCBmdW5jdGlvbiBzdHBjcHkuICBJbiBHTlUgQyBMaWJyYXJ5IHRoaXMKKy0gICBmdW5jdGlvbiBpcyBhdmFpbGFibGUsIHRob3VnaC4gIEFsc28gYWxsb3cgdGhlIHN5bWJvbCBIQVZFX1NUUENQWQorLSAgIHRvIGJlIGRlZmluZWQuICAqLworLSNpZiAhX0xJQkMgJiYgIUhBVkVfU1RQQ1BZCistc3RhdGljIGNoYXIgKgorLXN0cGNweSAoZGVzdCwgc3JjKQorLSAgICAgY2hhciAqZGVzdDsKKy0gICAgIGNvbnN0IGNoYXIgKnNyYzsKKy17CistICB3aGlsZSAoKCpkZXN0KysgPSAqc3JjKyspICE9ICdcMCcpCistICAgIC8qIERvIG5vdGhpbmcuICovIDsKKy0gIHJldHVybiBkZXN0IC0gMTsKKy19CistI2VuZGlmCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9DaGFuZ2VMb2cgbHJ6c3otMC4xMi4yMC9pbnRsL0NoYW5nZUxvZworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9DaGFuZ2VMb2cJMTk5OC0wNC0yNiAxNDoyMjozNS4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvQ2hhbmdlTG9nCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwxMDIyICswLDAgQEAKKy0xOTk3LTA5LTA2IDAyOjEwICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBpbnRsaC5pbnN0LmluOiBSZWZvcm1hdCBjb3B5cmlnaHQuCistCistMTk5Ny0wOC0xOSAxNToyMiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogZGNnZXR0ZXh0LmMgKERDR0VUVEVYVCk6IFJlbW92ZSB3cm9uZyBjb21tZW50LgorLQorLTE5OTctMDgtMTYgMDA6MTMgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLWRhdGEpOiBEb24ndCBjaGFuZ2UgZGlyZWN0b3J5IHRvIGluc3RhbGwuCistCistMTk5Ny0wOC0wMSAxNDozMCAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogY2F0LWNvbXBhdC5jOiBGaXggY29weXJpZ2h0LgorLQorLQkqIGxvY2FsZWFsaWFzLmM6IERvbid0IGRlZmluZSBzdHJjaHIgdW5sZXNzICFIQVZFX1NUUkNIUi4KKy0KKy0JKiBsb2FkbXNnY2F0LmM6IFVwZGF0ZSBjb3B5cmlnaHQuICBGaXggdHlwb3MuCistCistCSogbDEwbmZsaXN0LmM6IERvbid0IGRlZmluZSBzdHJjaHIgdW5sZXNzICFIQVZFX1NUUkNIUi4KKy0JKF9ubF9tYWtlX2wxMG5mbGlzdCk6IEhhbmRsZSBzcG9uc29yIGFuZCByZXZpc2lvbiBjb3JyZWN0bHkuCistCistCSogZ2V0dGV4dC5jOiBVcGRhdGUgY29weXJpZ2h0LgorLQkqIGdldHRleHQuaDogTGlrZXdpc2UuCistCSogaGFzaC1zdHJpbmcuaDogTGlrZXdpc2UuCistCistCSogZmluZGRvbWFpbi5jOiBSZW1vYXZlIGRlYWQgY29kZS4gIERlZmluZSBzdHJjaHIgb25seSBpZgorLQkhSEFWRV9TVFJDSFIuCistCistCSogZXhwbG9kZW5hbWUuYzogSW5jbHVkZSA8c3lzL3R5cGVzLmg+LgorLQorLQkqIGV4cGxvZGVuYW1lLmM6IFJlZm9ybWF0IGNvcHlyaWdodCB0ZXh0LgorLQkoX25sX2V4cGxvZGVfbmFtZSk6IEZpeCB0eXBvLgorLQorLQkqIGRjZ2V0dGV4dC5jOiBEZWZpbmUgYW5kIHVzZSBfX3NldF9lcnJuby4KKy0JKGd1ZXNzX2NhdGVnb3J5X3ZhbHVlKTogRG9uJ3QgdXNlIHNldGxvY2FsZSBpZiBIQVZFX0xDX01FU1NBR0VTIGlzCistCW5vdCBkZWZpbmVkLgorLQorLQkqIGJpbmR0ZXh0ZG9tLmM6IFByZXR0eSBwcmludGluZy4KKy0KKy0xOTk3LTA1LTAxIDAyOjI1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBkY2dldHRleHQuYyAoZ3Vlc3NfY2F0ZWdvcnlfdmFsdWUpOiBEb24ndCBkZXBlbmQgb24KKy0JSEFWRV9MQ19NRVNTQUdFUy4gIFdlIGRvbid0IG5lZWQgdGhlIG1hY3JvIGhlcmUuCistCVBhdGNoIGJ5IEJydW5vIEhhaWJsZSA8aGFpYmxlQGlsb2cuZnI+LgorLQorLQkqIGNhdC1jb21wYXQuYyAodGV4dGRvbWFpbik6IERvTid0IHJlZmVyIHRvIEhBVkVfU0VUTE9DQUxFX05VTEwKKy0JbWFjcm8uICBJbnN0ZWFkIHVzZSBIQVZFX0xPQ0FMRV9OVUxMIGFuZCBkZWZpbmUgaXQgd2hlbiB1c2luZworLQlnbGliYywgYXMgaW4gZGNnZXR0ZXh0LmMuCistCVBhdGNoIGJ5IEJydW5vIEhhaWJsZSA8aGFpYmxlQGlsb2cuZnI+LgorLQorLQkqIE1ha2VmaWxlLmluIChDUFBGTEFHUyk6IE5ldyB2YXJpYWJsZS4gIFJlcG9ydGVkIGJ5IEZyYW5jLG9pcworLQlQaW5hcmQuCistCistTW9uIE1hciAxMCAwNjo1MToxNyAxOTk3ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBNYWtlZmlsZS5pbjogSW1wbGVtZW50IGhhbmRsaW5nIG9mIGxpYnRvb2wuCistCistCSogZ2V0dGV4dFAuaDogQ2hhbmdlIGRhdGEgc3RydWN0dXJlcyBmb3IgdXNlIG9mIGdlbmVyaWMgbG93bGV2ZWwKKy0JaTE4biBmaWxlIGhhbmRsaW5nLgorLQorLVdlZCBEZWMgIDQgMjA6MjE6MTggMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogdGV4dGRvbWFpbi5jOiBQdXQgcGFyZW50aGVzZXMgYXJvdW5kIGFyZ3VtZW50cyBvZiBtZW1jcHkgbWFjcm8KKy0JZGVmaW5pdGlvbi4KKy0JKiBsb2NhbGVhbGlhcy5jOiBMaWtld2lzZS4KKy0JKiBsMTBuZmxpc3QuYzogTGlrZXdpc2UuCistCSogZmluZGRvbWFpbi5jOiBMaWtld2lzZS4KKy0JKiBiaW5kdGV4dGRvbS5jOiBMaWtld2lzZS4KKy0JUmVwb3J0ZWQgYnkgVGhvbWFzIEVza2VuLgorLQorLU1vbiBOb3YgMjUgMjI6NTc6NTEgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogdGV4dGRvbWFpbi5jOiBNb3ZlIGRlZmluaXRpb24gb2YgYG1lbWNweWAgbWFjcm8gdG8gcmlnaHQKKy0JcG9zaXRpb24uCistCistRnJpIE5vdiAyMiAwNDowMTo1OCAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBmaW5kZG9tYWluLmMgWyFIQVZFX1NUUklOR19IICYmICFfTElCQ106IERlZmluZSBtZW1jcHkgdXNpbmcKKy0gCWJjb3B5IGlmIG5vdCBhbHJlYWR5IGRlZmluZWQuICBSZXBvcnRlZCBieSBUaG9tYXMgRXNrZW4uCistCSogYmluZHRleHRkb20uYzogTGlrZXdpc2UuCistCSogbDEwbmZsaXN0LmM6IExpa2V3aXNlLgorLQkqIGxvY2FsZWFsaWFzLmM6IExpa2V3aXNlLgorLQkqIHRleHRkb21haW4uYzogTGlrZXdpc2UuCistCistVHVlIE9jdCAyOSAxMToxMDoyNyAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAobGliZGlyKTogQ2hhbmdlIHRvIHVzZSBleGVjX3ByZWZpeCBpbnN0ZWFkIG9mCistIAlwcmVmaXguICBSZXBvcnRlZCBieSBLbnV0LUjldmFyZEFrc25lcyA8ZXRva25hQGV0by5lcmljc3Nvbi5zZT4uCistCistU2F0IEF1ZyAzMSAwMzowNzowOSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBsMTBuZmxpc3QuYyAoX25sX25vcm1hbGl6ZV9jb2Rlc2V0KTogV2UgY29udmVydCB0byBsb3dlciBjYXNlLAorLQlzbyBkb24ndCBwcmVwZW5kIHVwcGVyY2FzZSBgSVNPJyBmb3Igb25seSBudW1lcmljIGFyZy4KKy0KKy1GcmkgSnVsIDE5IDAwOjE1OjQ2IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIGwxMG5mbGlzdC5jOiBNb3ZlIGluY2x1c2lvbiBvZiBhcmd6LmgsIGN0eXBlLmgsIHN0ZGxpYi5oIGFmdGVyCistCWRlZmluaXRpb24gb2YgX0dOVV9TT1VSQ0UuICBQYXRjaCBieSBSb2xhbmQgTWNHcmF0aC4KKy0KKy0JKiBNYWtlZmlsZS5pbiAodW5pbnN0YWxsKTogRml4IGFub3RoZXIgYnVnIHdpdGggYGZvcicgbG9vcCBhbmQKKy0JZW1wdHkgYXJndW1lbnRzLiAgUGF0Y2ggYnkgSmltIE1leWVyaW5nLiAgQ29ycmVjdCBuYW1lIG9zCistCXVuaW5zdGFsbGVkIGZpbGVzOiBubyBpbnRsLSBwcmVmaXggYW55bW9yZS4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1kYXRhKTogQWdhaW4gd29yayBhcm91bmQgc2hlbGxzIHdoaWNoCistCWNhbm5vdCBoYW5kbGUgbXB0eSBmb3IgbGlzdC4gIFJlcG9ydGVkIGJ5IEppbSBNZXllcmluZy4KKy0KKy1TYXQgSnVsIDEzIDE4OjExOjM1IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogU3BsaXQgZ29hbC4gIE5vdyBkZXBlbmQgb24gaW5zdGFsbC1leGVjCistICAgICAgICBhbmQgaW5zdGFsbC1kYXRhLgorLQkoaW5zdGFsbC1leGVjLCBpbnN0YWxsLWRhdGEpOiBOZXcgZ29hbHMuICBDcmVhdGVkIGZyb20gZm9ybWVyCistCWluc3RhbGwgZ29hbC4KKy0JUmVwb3J0ZWQgYnkgS2FybCBCZXJyeS4KKy0KKy1TYXQgSnVuIDIyIDA0OjU4OjE0IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIE1ha2VmaWxlLmluIChNS0lOU1RBTExESVJTKTogTmV3IHZhcmlhYmxlLiAgUGF0aCB0bworLSAgICAgICAgbWtpbnN0YWxsZGlycyBzY3JpcHQuCistCShpbnN0YWxsKTogdXNlIE1LSU5TVEFMTERJUlMgdmFyaWFibGUgb3IgaWYgdGhlIHNjcmlwdCBpcyBub3QgcHJlc2VudAorLQl0cnkgdG8gZmluZCBpdCBpbiB0aGUgJHRvcF9zY3JkaXIpLgorLQorLVdlZCBKdW4gMTkgMDI6NTY6NTYgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogbDEwbmZsaXN0LmM6IExpbnV4IGxpYmMgKnBhcnRseSogaW5jbHVkZXMgdGhlIGFyZ3pfKiBmdW5jdGlvbnMuCistCUdyci4gIFdvcmsgYXJvdW5kIGJ5IHJlbmFtaW5nIHRoZSBzdGF0aWMgdmVyc2lvbiBhbmQgdXNlIG1hY3JvcworLQlmb3IgcmVuYW1pbmcuCistCistVHVlIEp1biAxOCAyMDoxMToxNyAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBsMTBuZmxpc3QuYzogQ29ycmVjdCBwcmVzZW5jZSB0ZXN0IG1hY3JvcyBvZiBfX2FyZ3pfKiBmdW5jdGlvbnMuCistCistCSogbDEwbmZsaXN0LmM6IEluY2x1ZGUgPGFyZ3ouaD4gYmFzZWQgb24gdGVzdCBvZiBpdCBpbnN0ZWFkIHdoZW4KKy0JX19hcmd6XyogZnVuY3Rpb25zIGFyZSBhdmFpbGFibGUuCistCVJlcG9ydGVkIGJ5IEFuZHJlYXMgU2Nod2FiLgorLQorLVRodSBKdW4gMTMgMTU6MTc6NDQgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogZXhwbG9kZW5hbWUuYywgbDEwbmZsaXN0LmM6IERlZmluZSBOVUxMIGZvciBkdW1iIHN5c3RlbXMuCistCistVHVlIEp1biAxMSAxNzowNToxMyAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBpbnRsaC5pbnN0LmluLCBsaWJnZXR0ZXh0LmggKGRjZ2V0dGV4dCk6IFJlbmFtZSBsb2NhbCB2YXJpYWJsZQorLQlyZXN1bHQgdG8gX19yZXN1bHQgdG8gcHJldmVudCBuYW1lIGNsYXNoLgorLQorLQkqIGwxMG5mbGlzdC5jLCBsb2NhbGVhbGlhcy5jLCBkY2dldHRleHQuYzogRGVmaW5lIF9HTlVfU09VUkNFIHRvCistICAgICAgICBnZXQgcHJvdG90eXBlIGZvciBzdHBjcHkgYW5kIHN0cmNhc2VjbXAuCistCistCSogaW50bGguaW5zdC5pbiwgbGliZ2V0dGV4dC5oOiBNb3ZlIGRlY2xhcmF0aW9uIG9mCistCWBfbmxfbXNnX2NhdF9jbnRyJyBvdXRzaWRlIF9fZXh0ZW5zaW9uX18gYmxvY2sgdG8gcHJldmVudCB3YXJuaW5nCistCWZyb20gZ2NjJ3MgLVduZXN0ZWQtZXh0ZXJuIG9wdGlvbi4KKy0KKy1GcmkgSnVuICA3IDAxOjU4OjAwIDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogUmVtb3ZlIGNvbW1lbnQuCistCistVGh1IEp1biAgNiAxNzoyODoxNyAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IFdvcmsgYXJvdW5kIGZvciBhbm90aGVyIEJ1Z2xpeCBzdHVwaWRpdHkuCistCUFsd2F5cyB1c2UgYW4gYGVsc2UnIGNsb3NlIGZvciBgaWYncy4gIFJlcG9ydGVkIGJ5IE5lbHNvbiBCZWViZS4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW50bGguaW5zdCk6IENvcnJlY3QgdHlwbyBpbiBwaG9ueSBydWxlLgorLQlSZXBvcnRlZCBieSBOZWxzb24gQmVlYmUuCistCistVGh1IEp1biAgNiAwMTo0OTo1MiAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBkY2dldHRleHQuYyAocmVhZF9hbGlhc19maWxlKTogUmVuYW1lIHZhcmlhYmxlIGFsbG9jYV9saXN0IHRvCistCWJsb2NrX2xpc3QgYXMgdGhlIG1hY3JvIGNhbGxzIGFzc3VtZS4KKy0JUGF0Y2ggYnkgRXJpYyBCYWNrdXMuCistCistCSogbG9jYWxlYWxpYXMuYyBbIUhBVkVfQUxMT0NBXTogRGVmaW5lIGFsbG9jYSBhcyBtYWNybyB1c2luZworLSAgICAgICAgbWFsbG9jLgorLQkocmVhZF9hbGlhc19maWxlKTogUmVuYW1lIHZhcnJpYWJlIGFsbG9jYV9saXN0IHRvIGJsb2NrX2xpc3QgYXMgdGhlCistCW1hY3JvIGNhbGxzIGFzc3VtZS4KKy0JUGF0Y2ggYnkgRXJpYyBCYWNrdXMuCistCistCSogbDEwbmZsaXN0LmM6IENvcnJlY3QgY29uZGl0aW9uYWwgZm9yIDxhcmd6Lmg+IGluY2x1c2lvbi4KKy0JUmVwb3J0ZWQgYnkgUm9sYW5kIE1jR3JhdGguCistCistCSogTWFrZWZpbGUuaW4gKGFsbCk6IERlcGVuZCBvbiBhbGwtQFVTRV9JTkNMVURFRF9MSUJJTlRMQCwgbm90CistICAgICAgICBhbGwtQFVTRV9OTFNALgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogaW50bGguaW5zdCBjb21lcyBmcm9tIGxvY2FsIGRpciwgbm90CistICAgICAgICAkKHNyY2RpcikuCistCistCSogTWFrZWZpbGUuaW4gKGludGxoLmluc3QpOiBTcGVjaWFsIGhhbmRsaW5nIG9mIHRoaXMgZ29hbC4gIElmCistCXVzZWQgaW4gZ2V0dGV4dCwgdGhpcyBpcyByZWFsbHkgYSBydWwgdG8gY29uc3RydWN0IHRoaXMgZmlsZS4gIElmCistCXVzZWQgaW4gYW55IG90aGVyIHBhY2thZ2UgaXQgaXMgZGVmaW5lZCBhcyBhIC5QSE9OWSBydWxlIHdpdGgKKy0JZW1wdHkgYm9keS4KKy0KKy0JKiBmaW5kZG9tYWluLmM6IEV4dHJhY3QgbG9jYWxlIGZpbGUgaW5mb3JtYXRpb24gaGFuZGxpbmcgaW50bworLQlsMTBuZmlsZS5jLiAgUmVuYW1lIGxvY2FsIHN0cGNweV9fIGZ1bmN0aW9uIHRvIHN0cGNweS4KKy0KKy0JKiBkY2dldHRleHQuYyAoc3RwY3B5KTogQWRkIGxvY2FsIGRlZmluaXRpb24uCistCistCSogbDEwbmZsaXN0LmM6IFNvbHZlIHNvbWUgcG9ydGFiaWxpdHkgcHJvYmxlbXMuICBQYXRjaGVzIHBhcnRseSBieQorLQlUaG9tYXMgRXNrZW4uICBBZGQgbG9jYWwgZGVmaW5pdGlvbiBvZiBzdHBjcHkuCistCistVHVlIEp1biAgNCAwMjo0Nzo0OSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBpbnRsaC5pbnN0LmluOiBEb24ndCBkZXBlbmQgaW5jbHVkaW5nIDxsb2NhbGUuaD4gb24KKy0JSEFWRV9MT0NBTEVfSC4gIEluc3RlYWQgY29uZmlndXJlIG11c3QgcmV3cml0ZSB0aGlzIGZpaWxlCistCWRlcGVuZGluZyBvbiB0aGUgcmVzdWx0IG9mIHRoZSBjb25maWd1cmUgcnVuLgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogbGliaW50bC5pbnN0IGlzIG5vdyBjYWxsZWQgaW50bGguaW5zdC4KKy0JQWRkIHJ1bGVzIGZvciB1cGRhdGluZyBpbnRsaC5pbnN0IGZyb20gaW50bGguaW5zdC5pbi4KKy0KKy0JKiBsaWJpbnRsLmluc3Q6IFJlbmFtZWQgdG8gaW50bGguaW5zdC5pbi4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jLCBkY2dldHRleHQuYyBbX19HTlVDX19dOiBEZWZpbmUgSEFWRV9BTExPQ0EgdG8gMQorLSAgICAgICAgYmVjYXVzZSBnY2MgaGFzIF9fYnVpdGxpbl9hbGxvY2EuCistCVJlcG9ydGVkIGJ5IFJvbGFuZCBNY0dyYXRoLgorLQorLU1vbiBKdW4gIDMgMDA6MzI6MTYgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGxjaGVjayk6IE5ldyBnb2FsIHRvIGZ1bGZpbGwgbmVlZHMgb2YKKy0gICAgICAgIGF1dG9tYWtlJ3MgZGlzdGNoZWNrLgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsKTogUmVvcmRlciBjb21tYW5kcyBzbyB0aGF0IFZFUlNJT04gaXMKKy0gICAgICAgIGZvdW5kLgorLQorLQkqIE1ha2VmaWxlLmluIChnZXR0ZXh0c3JjZGlyKTogTm93IHVzZSBzdWJkaXJlY3RvcnkgaW50bC8gaW4KKy0gICAgICAgIEBkYXRhZGlyQC9nZXR0ZXh0LgorLQkoQ09NU1JDUyk6IEFkZCBsMTBuZmlsZS5jLgorLQkoT0JKRUNUUyk6IEFkZCBsMTBuZmlsZS5vLgorLQkoRElTVEZJTEVTKTogUmVuYW1lIHRvIERJU1RGSUxFLm5vcm1hbC4gIFJlbW92ZSAkKERJU1RGSUxFUy5jb21tb24pLgorLQkoRElTVEZJTEUuZ2V0dGV4dCk6IFJlbW92ZSAkKERJU1RGSUxFUy5jb21tb24pLgorLQkoYWxsLWdldHRleHQpOiBSZW1vdmUgZ29hbC4KKy0JKGluc3RhbGwpOiBJZiAkKFBBQ0tBR0UpID0gZ2V0dGV4dCBpbnN0YWxsLCBvdGhlcndvc2UgZG8gbm90aGluZy4gIE5vCistCXBhY2thZ2UgYnV0IGdldHRleHQgaXRzZWxmIHNob3VsZCBpbnN0YWxsIGxpYmludGwuaCArIGhlYWRlcnMuCistCShkaXN0KTogRXh0ZW5kIGdvYWwgdG8gd29yayBmb3IgZ2V0dGV4dCwgdG9vLgorLQkoZGlzdC1nZXR0ZXh0KTogUmVtb3ZlIGdvYWwuCistCistCSogZGNnZXR0ZXh0LmMgWyFIQVZFX0FMTE9DQV06IERlZmluZSBtYWNybyBhbGxvY2EgYnkgdXNpbmcgbWFsbG9jLgorLQorLVN1biBKdW4gIDIgMTc6MzM6MDYgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+CistCistCSogbG9hZG1zZ2NhdC5jIChfbmxfbG9hZF9kb21haW4pOiBQYXJhbWV0ZXIgaXMgbm93IGNvbWVzIGZyb20KKy0gICAgICAgIGZpbmRfbDEwbmZpbGUuCistCistU2F0IEp1biAgMSAwMjoyMzowMyAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KKy0KKy0JKiBsMTBuZmxpc3QuYyAoX19hcmd6X25leHQpOiBBZGQgZGVmaW5pdGlvbi4KKy0KKy0JKiBkY2dldHRleHQuYyBbIUhBVkVfQUxMT0NBXTogQWRkIGNvZGUgZm9yIGhhbmRsaW5nIG1pc3NpbmcgYWxsb2NhCistCWNvZGUuICBVc2UgbmV3IGwxMG5maWxlIGhhbmRsaW5nLgorLQorLQkqIGxvY2FsZWFsaWFzLmMgWyFIQVZFX0FMTE9DQV06IEFkZCBjb2RlIGZvciBoYW5kbGluZyBtaXNzaW5nCistICAgICAgICBhbGxvY2EgY29kZS4KKy0KKy0JKiBsMTBuZmxpc3QuYzogSW5pdGlhbCByZXZpc2lvbi4KKy0KKy1UdWUgQXByICAyIDE4OjUxOjE4IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKGFsbC1nZXR0ZXh0KTogTmV3IGdvYWwuICBTYW1lIGFzIGFsbC15ZXMuCistCistVGh1IE1hciAyOCAyMzowMToyMiAxOTk2ICBLYXJsIEVpY2h3YWxkZXIgIDxrZUBrZS5jZW50cmFsLmRlPgorLQorLQkqIE1ha2VmaWxlLmluIChnZXR0ZXh0c3JjZGlyKTogRGVmaW5lIHVzaW5nIEBkYXRhZGlyQC4KKy0KKy1UdWUgTWFyIDI2IDEyOjM5OjE0IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZmluZGRvbWFpbi5jOiBJbmNsdWRlIDxjdHlwZS5oPi4gIFJlcG9ydGVkIGJ5IFJvbGFuZCBNY0dyYXRoLgorLQorLVNhdCBNYXIgMjMgMDI6MDA6MzUgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBmaW5kZG9tYWluLmMgKHN0cGNweSk6IFJlbmFtZSB0byBzdHBjcHlfXyB0byBwcmV2ZW50IGNsYXNoaW5nCistICAgICAgICB3aXRoIGV4dGVybmFsIGRlY2xhcmF0aW9uLgorLQorLVNhdCBNYXIgIDIgMDA6NDc6MDkgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoYWxsLW5vKTogUmVuYW1lIGZyb20gYWxsX25vLgorLQorLVNhdCBGZWIgMTcgMDA6MjU6NTkgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBnZXR0ZXh0UC5oIFtsb2FkZWRfZG9tYWluXTogQXJyYXkgYHN1Y2Nlc3NvcicgbXVzdCBub3cgY29udGFpbiB1cAorLSAgICAgICAgdG8gNjMgZWxlbWVudHMgKGJlY2F1c2Ugb2YgY29kZXNldCBuYW1lIG5vcm1hbGl6YXRpb24pLgorLQorLQkqIGZpbmRkb21haW4uYzogSW1wbGVtZW50IGNvZGVzZXQgbmFtZSBub3JtYWxpemF0aW9uLgorLQorLVRodSBGZWIgMTUgMDQ6Mzk6MDkgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoYWxsKTogRGVmaW5lIHRvIGBhbGwtQFVTRV9OTFNAJy4KKy0JKGFsbC15ZXMsIGFsbF9ubyk6IE5ldyBnb2Fscy4gIGBhbGwtbm8nIGlzIG5vb3AsIGBhbGwteWVzJworLQlpcyBmb3JtZXIgYWxsLgorLQorLU1vbiBKYW4gMTUgMjE6NDY6MDEgMTk5NiAgSG93YXJkIEdheWxlICA8aG93YXJkQGhhbC5jb20+CistCistCSogbG9jYWxlYWxpYXMuYyAoYWxpYXNfY29tcGFyZSk6IEluY3JlbWVudCBzdHJpbmcgcG9pbnRlcnMgaW4gbG9vcAorLSAgICAgICAgb2Ygc3RyY2FzZWNtcCByZXBsYWNlbWVudC4KKy0KKy1GcmkgRGVjIDI5IDIxOjE2OjM0IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtc3JjKTogV2hvIGNvbW1lbnRlZCB0aGlzIGdvYWwgb3V0ID8gOi0pCistCistRnJpIERlYyAyOSAxNTowODoxNiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGRjZ2V0dGV4dC5jIChEQ0dFVFRFWFQpOiBTYXZlIGBlcnJubycuICBGYWlsaW5nIHN5c3RlbSBjYWxscworLQlzaG91bGQgbm90IGVmZmVjdCBpdCBiZWNhdXNlIGEgbWlzc2luZyBjYXRhbG9nIGlzIG5vIGVycm9yLgorLQlSZXBvcnRlZCBieSBIYXJhbGQgSzxvOj5uaWcgPGtvZW5pZ0B0YXQucGh5c2lrLnVuaS10dWViaW5nZW4uZGU+LgorLQorLVR1ZSBEZWMgMTkgMjI6MDk6MTMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoTWFrZWZpbGUpOiBFeHBsaWNpdGx5IHVzZSAkKFNIRUxMKSBmb3IgcnVubmluZworLSAgICAgICAgc2hlbGwgc2NyaXB0cy4KKy0KKy1GcmkgRGVjIDE1IDE3OjM0OjU5IDE5OTUgIEFuZHJlYXMgU2Nod2FiICA8c2Nod2FiQGlzc2FuLmluZm9ybWF0aWsudW5pLWRvcnRtdW5kLmRlPgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLXNyYyk6IE9ubHkgaW5zdGFsbCBsaWJyYXJ5IGFuZCBoZWFkZXIgd2hlbgorLQl3ZSB1c2UgdGhlIG93biBpbXBsZW1lbnRhdGlvbi4gIERvbid0IGRvIGl0IHdoZW4gdXNpbmcgdGhlCistCXN5c3RlbSdzIGdldHRleHQgb3IgY2F0Z2V0cyBmdW5jdGlvbnMuCistCistCSogZGNnZXR0ZXh0LmMgKGZpbmRfbXNnKTogTXVzdCBub3Qgc3dhcCBkb21haW4tPmhhc2hfc2l6ZSBoZXJlLgorLQorLVNhdCBEZWMgIDkgMTY6MjQ6MzcgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jLCBsaWJpbnRsLmluc3QsIGxpYmdldHRleHQuaCwgaGFzaC1zdHJpbmcuaCwKKy0JZ2V0dGV4dFAuaCwgZmluZGRvbWFpbi5jLCBkY2dldHRleHQuYywgY2F0LWNvbXBhdC5jOgorLQlVc2UgUEFSQU1TIGluc3RlYWQgb2YgX19QLiAgU3VnZ2VzdGVkIGJ5IFJvbGFuZCBNY0dyYXRoLgorLQorLVR1ZSBEZWMgIDUgMTE6Mzk6MTQgMTk5NSAgTGFycnkgU2Nod2ltbWVyICA8cm9zZWJ1ZEBjeWNsb25lLnN0YW5mb3JkLmVkdT4KKy0KKy0JKiBsaWJnZXR0ZXh0Lmg6IFVzZSBgI2lmICFkZWZpbmVkIChfTElCSU5UTF9IKScgaW5zdGVhZCBvZiBgI2lmCistCSFfTElCSU5UTF9IJyBiZWNhdXNlIFNvbGFyaXMgZGVmaW5lcyBfTElCSU5UTF9IIGFzIGVtcHR5LgorLQorLU1vbiBEZWMgIDQgMTU6NDI6MDcgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1zcmMpOgorLQlJbnN0YWxsIGxpYmludGwuaW5zdCBpbnN0ZWFkIG9mIGxpYmludGwuaC5pbnN0YWxsLgorLQorLVNhdCBEZWMgIDIgMjI6NTE6MzggMTk5NSAgTWFyY3VzIERhbmllbHMgIDxtYXJjdXNAc3lzYy5wZHguZWR1PgorLQorLQkqIGNhdC1jb21wYXQuYyAodGV4dGRvbWFpbik6CistCVJldmVyc2Ugb3JkZXIgaW4gd2hpY2ggZmlsZXMgYXJlIHRyaWVkIHlvdSBsb2FkLiAgRmlyc3QKKy0JdHJ5IGxvY2FsIGZpbGUsIHdoZW4gdGhpcyBmYWlsZWQgYWJzb2x1dGUgcGF0aC4KKy0KKy1XZWQgTm92IDI5IDAyOjAzOjUzIDE5OTUgIE5lbHNvbiBILiBGLiBCZWViZSAgPGJlZWJlQG1hdGgudXRhaC5lZHU+CistCistCSogY2F0LWNvbXBhdC5jIChiaW5kdGV4dGRvbWFpbik6IEFkZCBtaXNzaW5nIHsgfS4KKy0KKy1TdW4gTm92IDI2IDE4OjIxOjQxIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogbGliaW50bC5pbnN0OiBBZGQgbWlzc2luZyBfX1AgZGVmaW5pdGlvbi4gIFJlcG9ydGVkIGJ5IE5lbHNvbiBCZWViZS4KKy0KKy0JKiBNYWtlZmlsZS5pbjoKKy0JQWRkIGR1bW15IGBhbGwnIGFuZCBgZHZpJyBnb2Fscy4gIFJlcG9ydGVkIGJ5IFRvbSBUcm9tZXkuCistCistU2F0IE5vdiAyNSAxNjoxMjowMSAxOTk1ICBGcmFuYyxvaXMgUGluYXJkICA8cGluYXJkQGlyby51bW9udHJlYWwuY2E+CistCistCSogaGFzaC1zdHJpbmcuaDogQ2FwaXRhbGl6ZSBhcmd1bWVudHMgb2YgbWFjcm9zLgorLQorLVNhdCBOb3YgMjUgMTI6MDE6MzYgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoRElTVEZJTEVTKTogUHJldmVudCBmaWxlcyBuYW1lcyBsb25nZXIgdGhhbiAxMworLQljaGFyYWN0ZXJzLiAgbGliaW50bC5oLmdsaWJjLT5saWJpbnRsLmdsaWJjLAorLQlsaWJpbnRsLmguaW5zdGFsbC0+bGliaW50bC5pbnN0LiAgUmVwb3J0ZWQgYnkgSm9zaHVhIFIuIFBvdWxzb24uCistCistU2F0IE5vdiAyNSAxMTozMToxMiAxOTk1ICBFcmljIEJhY2t1cyAgPGVyaWNiQGxzaWQuaHAuY29tPgorLQorLQkqIGRjZ2V0dGV4dC5jOiBGaXggYnVnIGluIHByZXByb2Nlc3NvciBjb25kaXRpb25hbHMuCistCistU2F0IE5vdiAyNSAwMjozNToyNyAxOTk1ICBOZWxzb24gSC4gRi4gQmVlYmUgIDxiZWViZUBtYXRoLnV0YWguZWR1PgorLQorLQkqIGxpYmdldHRleHQuaDogU29sYXJpcyBjYyBkb2VzIG5vdCB1bmRlcnN0YW5kCistCSAjaWYgIVNZTUJPTDEgJiYgIVNZTUJPTDIuICBTYWQJYnV0IHRydWUuCistCistVGh1IE5vdiAyMyAxNjoyMjoxNCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGhhc2gtc3RyaW5nLmggKGhhc2hfc3RyaW5nKToKKy0JRml4IGZvciBtYWNoaW5lIHdpdGggPjMyIGJpdCBgdW5zaWduZWQgbG9uZydzLgorLQorLQkqIGRjZ2V0dGV4dC5jIChEQ0dFVFRFWFQpOgorLQlGaXggaG9ycmlibGUgYnVnIGluIGxvb3AgZm9yIGFsdGVybmF0aXZlIHRyYW5zbGF0aW9uLgorLQorLVRodSBOb3YgMjMgMDE6NDU6MjkgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBwbzJ0Ymwuc2VkLmluLCBsaW51eC1tc2cuc2VkLCB4b3Blbi1tc2cuc2VkOgorLQlTb21lIGZ1cnRoZXIgc2ltcGxpZmljYXRpb25zIGluIG1lc3NhZ2UgbnVtYmVyIGdlbmVyYXRpb24uCistCistTW9uIE5vdiAyMCAyMTowODo0MyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGxpYmludGwuaC5nbGliYzogVXNlIF9fY29uc3QgaW5zdGVhZCBvZiBjb25zdCBpbiBwcm90b3R5cGVzLgorLQorLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLXNyYyk6CistCUluc3RhbGwgbGliaW50bC5oLmluc3RhbGwgaW5zdGVhZCBvZiBsaWJpbnRsLmguICBUaGlzCistCWlzIGEgc3RyaXBwZWQtZG93biB2ZXJzaW9uLiAgU3VnZ2VzdGVkIGJ5IFBldGVyIE1pbGxlci4KKy0KKy0JKiBsaWJpbnRsLmguaW5zdGFsbCwgbGliaW50bC5oLmdsaWJjOiBJbml0aWFsIHJldmlzaW9uLgorLQorLQkqIGxvY2FsZWFsaWFzLmMgKF9ubF9leHBhbmRfYWxpYXMsIHJlYWRfYWxpYXNfZmlsZSk6CistCVByb3RlY3QgcHJvdG90eXBlcyBpbiB0eXBlIGNhc3RzIGJ5IF9fUC4KKy0KKy1UdWUgTm92IDE0IDE2OjQzOjU4IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogaGFzaC1zdHJpbmcuaDogQ29ycmVjdCBwcm90b3R5cGUgZm9yIGhhc2hfc3RyaW5nLgorLQorLVN1biBOb3YgMTIgMTI6NDI6MzAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBoYXNoLXN0cmluZy5oIChoYXNoX3N0cmluZyk6IEFkZCBwcm90b3R5cGUuCistCistCSogZ2V0dGV4dFAuaDogRml4IGNvcHlyaWdodC4KKy0JKFNXQVApOiBBZGQgcHJvdG90eXBlLgorLQorLVdlZCBOb3YgIDggMjI6NTY6MzMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jIChyZWFkX2FsaWFzX2ZpbGUpOiBGb3Jnb3Qgc2l6ZW9mLgorLQlBdm9pZCBjYWxsaW5nICpwcmludGYgZnVuY3Rpb24uICBUaGlzIGludHJvZHVjZXMgYSBiaWcgb3ZlcmhlYWQuCistCVBhdGNoIGJ5IFJvbGFuZCBNY0dyYXRoLgorLQorLVR1ZSBOb3YgIDcgMTQ6MjE6MDggMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBmaW5kZG9tYWluLmMsIGNhdC1jb21wYXQuYzogV3JvbmcgaW5kZW50YXRpb24gaW4gI2lmIGZvciBzdHBjcHkuCistCistCSogZmluZGRvbWFpbi5jIChzdHBjcHkpOgorLQlEZWZpbmUgc3Vic3RpdHV0aW9uIGZ1bmN0aW9uIGxvY2FsLiAgVGhlIG1hY3JvIHdhcyB0byBmbGFreS4KKy0KKy0JKiBjYXQtY29tcGF0LmM6IEZpeCB0eXBvLgorLQorLQkqIHhvcGVuLW1zZy5zZWQsIGxpbnV4LW1zZy5zZWQ6CistCVdoaWxlIGJyaW5naW5nIG1lc3NhZ2UgbnVtYmVyIHRvIHJpZ2h0IHBsYWNlIG9ubHkgYWNjZXB0IGRpZ2l0cy4KKy0KKy0JKiBsaW51eC1tc2cuc2VkLCB4b3Blbi1tc2cuc2VkOiBOb3cgdGhhdCB0aGUgY291bnRlciBkb2VzIG5vdCBoYXZlCistCWxlYWRpbmcgMHMgd2UgZG9uJ3QgbmVlZCB0byByZW1vdmUgdGhlbS4gIFJlcG9ydGVkIGJ5IE1hcmN1cworLQlEYW5pZWxzLgorLQorLQkqIE1ha2VmaWxlLmluICguLi9wby9jYXQtaWQtdGJsLm8pOiBVc2UgJCh0b3Bfc3JkaXIpIGluCistCWRlcGVuZGVuY3kuICBSZXBvcnRlZCBieSBNYXJjdXMgRGFuaWVscy4KKy0KKy0JKiBjYXQtY29tcGF0LmM6IChzdHBjcHkpIFshX0xJQkMgJiYgIUhBVkVfU1RQQ1BZXTogRGVmaW5lIHJlcGxhY2VtZW50LgorLQlHZW5lcmFsbHkgY2xlYW51cCB1c2luZyAjaWYgaW5zdGVhZCBvZiAjaWZuZGVmLgorLQorLQkqIE1ha2VmaWxlLmluOiBDb3JyZWN0IHR5cG9zIGluIGNvbW1lbnQuICBCeSBGcmFuYyxvaXMgUGluYXJkLgorLQorLU1vbiBOb3YgIDYgMDA6Mjc6MDIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1zcmMpOiBEb24ndCBpbnN0YWxsIGxpYmludGwuaCBhbmQgbGliaW50bC5hCistCWlmIHdlIHVzZSBhbiBhdmFpbGFibGUgZ2V0dGV4dCBpbXBsZW1lbnRhdGlvbi4KKy0KKy1TdW4gTm92ICA1IDIyOjAyOjA4IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogbGliZ2V0dGV4dC5oOiBGaXggdHlwbzogSEFWRV9DQVRHRVRUUyAtPiBIQVZFX0NBVEdFVFMuICBSZXBvcnRlZAorLQlieSBGcmFuYyxvaXMgUGluYXJkLgorLQorLQkqIGxpYmdldHRleHQuaDogVXNlICNpZiBpbnN0ZWFkIG9mICNpZmRlZi8jaWZuZGVmLgorLQorLQkqIGZpbmRkb21haW4uYzoKKy0JQ29tbWVudHMgZGVzY3JpYmluZyB3aGF0IGhhcyB0byBiZSBkb25lIHNob3VsZCBzdGFydCB3aXRoIEZJWE1FLgorLQorLVN1biBOb3YgIDUgMTk6Mzg6MDEgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoRElTVEZJTEVTKTogU3BsaXQuICBVc2UgRElTVEZJTEVTIHdpdGggbm9ybWFsIG1lYW5pbmcuCistCURJU1RGSUxFUy5jb21tb24gbmFtZXMgdGhlIGZpbGVzIGNvbW1vbiB0byBib3RoIGRpc3QgZ29hbHMuCistCURJU1RGSUxFUy5nZXR0ZXh0IGFyZSB0aGUgZmlsZXMgb25seSBkaXN0cmlidXRlZCBpbiBHTlUgZ2V0dGV4dC4KKy0KKy1TdW4gTm92ICA1IDE3OjMyOjU0IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogZGNnZXR0ZXh0LmMgKERDR0VUVEVYVCk6IENvcnJlY3Qgc2VhcmNoaW5nIGluIGRlcml2ZWQgbG9jYWxlcy4KKy0JVGhpcyB3YXMgbmVjZXNzYXJ5IHNpbmNlIGEgY2hhbmdlIGluIF9ubF9maW5kX21zZyBzZXZlcmFsIHdlZWtzCistCWFnby4gIEkgcmVhbGx5IGRvbid0IGtub3cgdGhpcyBpcyBzdGlsbCBub3QgZml4ZWQuCistCistU3VuIE5vdiAgNSAxMjo0MzoxMiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGxvYWRtc2djYXQuYyAoX25sX2xvYWRfZG9tYWluKTogVGVzdCBmb3IgRklMRU5BTUUgPT0gTlVMTC4gIFRoaXMKKy0JbWlnaHQgbWFyayBhIHNwZWNpYWwgY29uZGl0aW9uLgorLQorLQkqIGZpbmRkb21haW4uYyAobWFrZV9lbnRyeV9yZWMpOiBEb24ndCBtYWtlIGlsbGVnYWwgZW50cnkgYXMgZGVjaWRlZC4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoZGlzdCk6IFN1cHByZXNzIGVycm9yIG1lc3NhZ2Ugd2hlbiBsbiBmYWlsZWQuCistCUdldCBmaWxlcyBmcm9tICQoc3JjZGlyKSBleHBsaWNpdGx5LgorLQorLQkqIGxpYmdldHRleHQuaCAoZ2V0dGV4dF9jb25zdCk6IFJlbmFtZSB0byBnZXR0ZXh0X25vb3AuCistCistRnJpIE5vdiAgMyAwNzozNjo1MCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGZpbmRkb21haW4uYyAobWFrZV9lbnRyeV9yZWMpOgorLQlQcm90ZWN0IGFnYWluc3Qgd3JvbmcgbG9jYWxlIG5hbWVzIGJ5IHRlc3RpbmcgbWFzay4KKy0KKy0JKiBsaWJnZXR0ZXh0LmggKGdldHRleHRfY29uc3QpOiBBZGQgbWFjcm8gZGVmaW5pdGlvbi4KKy0JQ2FwaXRhbGl6ZSBtYWNybyBhcmd1bWVudHMuCistCistVGh1IE5vdiAgMiAyMzoxNTo1MSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGZpbmRkb21haW4uYyAoX25sX2ZpbmRfZG9tYWluKToKKy0JVGVzdCBmb3IgcG9pbnRlciAhPSBOVUxMIGJlZm9yZSBhY2Nlc3NpbmcgdmFsdWUuCistCVJlcG9ydGVkIGJ5IFRvbSBUcm9tZXkuCistCistCSogZ2V0dGV4dC5jIChOVUxMKToKKy0JRGVmaW5lIGFzICh2b2lkKikwIGluc3RhZCBvZiAwLiAgUmVwb3J0ZWQgYnkgRnJhbmMsb2lzIFBpbmFyZC4KKy0KKy1Nb24gT2N0IDMwIDIxOjI4OjUyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogcG8ydGJsLnNlZC5pbjogU2VyaW91cyB0eXBvIGJ1ZyBmaXhlZCBieSBKaW0gTWV5ZXJpbmcuCistCistU2F0IE9jdCAyOCAyMzoyMDo0NyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGxpYmdldHRleHQuaDogRGlzYWJsZSBkY2dldHRleHQgb3B0aW1pemF0aW9uIGZvciBTb2xhcmlzIDIuMy4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jIChhbGlhc19jb21wYXJlKToKKy0JUGV0ZXIgTWlsbGVyIHJlcG9ydGVkIHRoYXQgdG9sb3dlciBpbiBzb21lIHN5c3RlbXMgaXMKKy0JZXZlbiBkdW1iZXIgdGhhbiBJIHRob3VnaHQuICBQcm90ZWN0IGNhbGwgYnkgYGlzdXBwZXInLgorLQorLUZyaSBPY3QgMjcgMjI6MjI6NTEgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAobGliZGlyLCBpbmNsdWRlZGlyKTogTmV3IHZhcmlhYmxlcy4KKy0JKGluc3RhbGwtc3JjKTogSW5zdGFsbCBsaWJpbnRsLmEgYW5kIGxpYmludGwuaCBpbiBjb3JyZWN0IGRpcnMuCistCistRnJpIE9jdCAyNyAyMjowNzoyOSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChTT1VSQ0VTKTogRml4IHR5cG86IGludHJsLmNvbXBhdC5jIC0+IGludGwtY29tcGF0LmMuCistCistCSogcG8ydGJsLnNlZC5pbjogUGF0Y2ggZm9yIGJ1Z2d5IFNFRHMgYnkgQ2hyaXN0aWFuIHZvbiBSb3F1ZXMuCistCistCSogbG9jYWxlYWxpYXMuYzoKKy0JRml4IHR5cG8gYW5kIHN1cGVyZmxvdXMgdGVzdC4gIFJlcG9ydGVkIGJ5IENocmlzdGlhbiB2b24gUm9xdWVzLgorLQorLUZyaSBPY3QgIDYgMTE6NTI6MDUgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBmaW5kZG9tYWluLmMgKF9ubF9maW5kX2RvbWFpbik6CistCUNvcnJlY3Qgc29tZSByZW1haW5kZXIgZnJvbSB0aGUgcHJlLUNFTiBzeW50YXguICBOb3cKKy0Jd2UgZG9uJ3QgaGF2ZSBhIGNvbnN0YW50IG51bWJlciBvZiBzdWNjZXNzb3JzIGFueW1vcmUuCistCistV2VkIFNlcCAyNyAyMTo0MToxMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOiBBZGQgbGliaW50bC5oLmdsaWJjLgorLQorLQkqIE1ha2VmaWxlLmluIChkaXN0LWxpYmMpOiBBZGQgZ29hbCBmb3IgcGFja2luZyBzb3VyY2VzIGZvciBnbGliYy4KKy0JKENPTVNSQ1MsIENPTUhEUlMpOiBTcGxpdHRlZCB0byBzZXBhcmF0ZSBzb3VyY2VzIHNoYXJlZCB3aXRoIGdsaWJjLgorLQorLQkqIGxvYWRtc2djYXQuYzogRm9yZ2V0IHRvIGNvbnRpbnVlICNpZiBsaW5lLgorLQorLQkqIGxvY2FsZWFsaWFzLmM6CistCVtfTElCQ106IFJlbmFtZSBzdHJjYXNlY21wIHRvIF9fc3RyY2FzZWNtcCB0byBrZWVwIEFOU0kgQyBuYW1lCistCXNwYWNlIGNsZWFuLgorLQorLQkqIGRjZ2V0dGV4dC5jLCBmaW5kZG9tYWluLmM6IEJldHRlciBjb21tZW50IHRvIGxhc3QgY2hhbmdlLgorLQorLQkqIGxvYWRtc2djYXQuYzoKKy0JW19MSUJDXTogUmVuYW1lIGZzdGF0LCBvcGVuLCBjbG9zZSwgcmVhZCwgbW1hcCwgYW5kIG11bm1hcCB0bworLQlfX2ZzdGF0LCBfX29wZW4sIF9fY2xvc2UsIF9fcmVhZCwgX19tbWFwLCBhbmQgX19tdW5tYXAgcmVzcAorLQl0byBrZWVwIEFOU0kgQyBuYW1lIHNwYWNlIGNsZWFuLgorLQorLQkqIGZpbmRkb21haW4uYzoKKy0JW19MSUJDXTogUmVuYW1lIHN0cGNweSB0byBfX3N0cGNweSB0byBrZWVwIEFOU0kgQyBuYW1lIHNwYWNlIGNsZWFuLgorLQorLQkqIGRjZ2V0dGV4dC5jOgorLQlbX0xJQkNdOiBSZW5hbWUgZ2V0Y2VkIGFuZCBzdHBjcHkgdG8gX19nZXRjd2QgYW5kIF9fc3RwY3B5IHJlc3AgdG8KKy0Ja2VlcCBBTlNJIEMgbmFtZSBzcGFjZSBjbGVhbi4KKy0KKy0JKiBsaWJnZXR0ZXh0Lmg6CistCUluY2x1ZGUgc3lzL3R5cGVzLmggZm9yIHRob3NlIG9sZCBTeXNWIHN5c3RlbXMgb3V0IHRoZXJlLgorLQlSZXBvcnRlZCBieSBGcmFuY2VzY28gUG90b3J0aWAuCistCistCSogbG9hZG1zZ2NhdC5jICh1c2VfbW1hcCk6IERlZmluZSBpZiBjb21waWxlZCBmb3IgZ2xpYmMuCistCistCSogYmluZHRleHRkb20uYzogSW5jbHVkZSBhbGwgdGhvc2Ugc3RhbmRhcmQgaGVhZGVycworLQl1bmNvbmRpdGlvbmFsbHkgaWYgX0xJQkMgaXMgZGVmaW5lZC4KKy0KKy0JKiBmaW5kZG9tYWluLmM6IEZpeCAyIHRpbWVzIGRlZmllbmQgLT4gZGVmaW5lZC4KKy0KKy0JKiB0ZXh0ZG9tYWluLmM6IEluY2x1ZGUgbGliaW50bC5oIGluc3RlYWQgb2YgbGliZ2V0dGV4dC5oIHdoZW4KKy0JY29tcGlsaW5nIGZvciBnbGliYy4gIEluY2x1ZGUgYWxsIHRob3NlIHN0YW5kYXJkIGhlYWRlcnMKKy0JdW5jb25kaXRpb25hbGx5IGlmIF9MSUJDIGlzIGRlZmluZWQuCistCistCSogbG9jYWxlYWxpYXMuYywgbG9hZG1zZ2NhdC5jOiBQcmVwYXJlIHRvIGJlIGNvbXBpbGVkIGluIGdsaWJjLgorLQorLQkqIGdldHRleHQuYzoKKy0JSW5jbHVkZSBsaWJpbnRsLmggaW5zdGVhZCBvZiBsaWJnZXR0ZXh0Lmggd2hlbiBjb21waWxpbmcgZm9yIGdsaWJjLgorLQlHZXQgTlVMTCBmcm9tIHN0ZGRlZi5oIGlmIHdlIGNvbXBpbGUgZm9yIGdsaWJjLgorLQorLQkqIGZpbmRkb21haW4uYzogSW5jbHVkZSBsaWJpbnRsLmggaW5zdGVhZCBvZiBsaWJnZXR0ZXh0Lmggd2hlbgorLQljb21waWxpbmcgZm9yIGdsaWJjLiAgSW5jbHVkZSBhbGwgdGhvc2Ugc3RhbmRhcmQgaGVhZGVycworLQl1bmNvbmRpdGlvbmFsbHkgaWYgX0xJQkMgaXMgZGVmaW5lZC4KKy0KKy0JKiBkY2dldHRleHQuYzogSW5jbHVkZSBhbGwgdGhvc2Ugc3RhbmRhcmQgaGVhZGVycyB1bmNvbmRpdGlvbmFsbHkKKy0JaWYgX0xJQkMgaXMgZGVmaW5lZC4KKy0KKy0JKiBkZ2V0dGV4dC5jOiBJZiBjb21waWxlZCBpbiBnbGliYyBpbmNsdWRlIGxpYmludGwuaCBpbnN0ZWFkIG9mCistCWxpYmdldHRleHQuaC4KKy0JKGxvY2FsZS5oKTogRG9uJ3QgcmVseSBvbiBIQVZFX0xPQ0FMRV9IIHdoZW4gY29tcGlsaW5nIGZvciBnbGliYy4KKy0KKy0JKiBkY2dldHRleHQuYzogSWYgY29tcGlsZWQgaW4gZ2xpYmMgaW5jbHVkZSBsaWJpbnRsLmggaW5zdGVhZCBvZgorLQlsaWJnZXR0ZXh0LmguCistCShnZXRjd2QpOiBEb24ndCByZWx5IG9uIEhBVkVfR0VUQ1dEIHdoZW4gY29tcGlsaW5nIGZvciBnbGliYy4KKy0KKy0JKiBiaW5kdGV4dGRvbS5jOgorLQlJZiBjb21waWxlZCBpbiBnbGliYyBpbmNsdWRlIGxpYmludGwuaCBpbnN0ZWFkIG9mIGxpYmdldHRleHQuaC4KKy0KKy1Nb24gU2VwIDI1IDIyOjIzOjA2IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogbG9jYWxlYWxpYXMuYyAoX25sX2V4cGFuZF9hbGlhcyk6IERvbid0IGNhbGwgYnNlYXJjaCBpZiBOTUFQIDw9IDAuCistCVJlcG9ydGVkIGJ5IE1hcmN1cyBEYW5pZWxzLgorLQorLQkqIGNhdC1jb21wYXQuYyAoYmluZHRleHRkb21haW4pOgorLQlTdHJpbmcgdXNlZCBpbiBwdXRlbnYgbXVzdCBub3QgYmUgcmVjeWNsZWQuCistCVJlcG9ydGVkIGJ5IE1hcmN1cyBEYW5pZWxzLgorLQorLQkqIGxpYmdldHRleHQuaCAoX19VU0VfR05VX0dFVFRFWFQpOgorLQlBZGRpdGlvbmFsIHN5bWJvbCB0byBzaWduYWwgdGhhdCB3ZSB1c2UgR05VIGdldHRleHQKKy0JbGlicmFyeS4KKy0KKy0JKiBjYXQtY29tcGF0LmMgKGJpbmR0ZXh0ZG9tYWluKToKKy0JRml4IGJ1ZyB3aXRoIHRoZSBzdHJhbmdlIHN0cGNweSByZXBsYWNlbWVudC4KKy0JUmVwb3J0ZWQgYnkgTmVsc29uIEJlZWJlLgorLQorLVNhdCBTZXAgMjMgMDg6MjM6NTEgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBjYXQtY29tcGF0LmM6IEluY2x1ZGUgPHN0cmluZy5oPiBmb3Igc3RwY3B5IHByb3RvdHlwZS4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jIChyZWFkX2FsaWFzX2ZpbGUpOgorLQlXaGlsZSBleHBhbmQgc3RyZHVwIGNvZGUgdGVtcG9yYXJ5IHZhcmlhYmxlIGBjcCcgaGlkZWQKKy0JaGlnaGVyIGxldmVsIHZhcmlhYmxlIHdpdGggc2FtZSBuYW1lLiAgUmVuYW1lIHRvIGB0cCcuCistCistCSogdGV4dGRvbWFpbi5jICh0ZXh0ZG9tYWluKToKKy0JQXZvaWQgd2FybmluZyBieSB1c2luZyB0ZW1wb3JhcnkgdmFyaWFibGUgaW4gc3RyZHVwIGNvZGUuCistCistCSogZmluZGRvbWFpbi5jIChfbmxfZmluZF9kb21haW4pOiBSZW1vdmUgdW51c2VkIHZhcmlhYmxlIGBhcHBsaWNhdGlvbicuCistCistVGh1IFNlcCAyMSAxNTo1MTo0NCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGxvY2FsZWFsaWFzLmMgKGFsaWFzX2NvbXBhcmUpOgorLQlVc2Ugc3RyY2FzZWNtcCgpIG9ubHkgaWYgYXZhaWxhYmxlLiAgRWxzZSB1c2UKKy0JaW1wbGVtZW50YXRpb24gaW4gcGxhY2UuCistCistCSogaW50bC1jb21wYXQuYzoKKy0JV3JhcHBlciBmdW5jdGlvbnMgbm93IGNhbGwgKl9fIGZ1bmN0aW9ucyBpbnN0ZWFkIG9mIF9fKi4KKy0KKy0JKiBsaWJnZXR0ZXh0Lmg6IERlY2xhcmUgcHJvdG90eXBlcyBmb3IgKl9fIGZ1bmN0aW9ucyBpbnN0ZWFkIGZvciBfXyouCistCistCSogY2F0LWNvbXBhdC5jLCBsb2FkbXNnY2F0LmM6CistCURvbid0IHVzZSB4bWFsbG9jLCB4c3RyZHVwLCBhbmQgc3RwY3B5LiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgcGFydAorLQlvZiB0aGUgc3RhbmRhcmQgbGliYyBhbmQgc28gcHJldmVudCBsaWJpbnRsLmEgZnJvbSBiZWluZyB1c2VkCistCXN0YW5kYWxvbmUuCistCistCSogYmluZHRleHRkb20uYzoKKy0JRG9uJ3QgdXNlIHhtYWxsb2MsIHhzdHJkdXAsIGFuZCBzdHBjcHkuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vdCBwYXJ0CistCW9mIHRoZSBzdGFuZGFyZCBsaWJjIGFuZCBzbyBwcmV2ZW50IGxpYmludGwuYSBmcm9tIGJlaW5nIHVzZWQKKy0Jc3RhbmRhbG9uZS4KKy0JUmVuYW1lIHRvIGJpbmR0ZXh0ZG9tYWluX18gaWYgbm90IHVzZWQgaW4gR05VIEMgTGlicmFyeS4KKy0KKy0JKiBkZ2V0dGV4dC5jOgorLQlSZW5hbWUgZnVuY3Rpb24gdG8gZGdldHRleHRfXyBpZiBub3QgdXNlZCBpbiBHTlUgQyBMaWJyYXJ5LgorLQorLQkqIGdldHRleHQuYzoKKy0JRG9uJ3QgdXNlIHhtYWxsb2MsIHhzdHJkdXAsIGFuZCBzdHBjcHkuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vdCBwYXJ0CistCW9mIHRoZSBzdGFuZGFyZCBsaWJjIGFuZCBzbyBwcmV2ZW50IGxpYmludGwuYSBmcm9tIGJlaW5nIHVzZWQKKy0Jc3RhbmRhbG9uZS4KKy0JRnVuY3Rpb25zIG5vdyBjYWxsZWQgZ2V0dGV4dF9fIGlmIG5vdCB1c2VkIGluIEdOVSBDIExpYnJhcnkuCistCistCSogZGNnZXR0ZXh0LmMsIGxvY2FsZWFsaWFzLmMsIHRleHRkb21haW4uYywgZmluZGRvbWFpbi5jOgorLQlEb24ndCB1c2UgeG1hbGxvYywgeHN0cmR1cCwgYW5kIHN0cGNweS4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IHBhcnQKKy0Jb2YgdGhlIHN0YW5kYXJkIGxpYmMgYW5kIHNvIHByZXZlbnQgbGliaW50bC5hIGZyb20gYmVpbmcgdXNlZAorLQlzdGFuZGFsb25lLgorLQorLVN1biBTZXAgMTcgMjM6MTQ6NDkgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBmaW5kZG9tYWluLmM6IENvcnJlY3Qgc29tZSBidWdzIGluIGhhbmRsaW5nIG9mIENFTiBzdGFuZGFyZAorLSAJbG9jYWxlIGRlZmluaXRpb25zLgorLQorLVRodSBTZXAgIDcgMDE6NDk6MjggMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBmaW5kZG9tYWluLmM6IEltcGxlbWVudCBDRU4gc3ludGF4LgorLQorLQkqIGdldHRleHRQLmggKGxvYWRlZF9kb21haW4pOiBFeHRlbmQgbnVtYmVyIG9mIHN1Y2Nlc3NvcnMgdG8gMzEuCistCistU2F0IEF1ZyAxOSAxOToyNToyOSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChhbGlhc3BhdGgpOiBSZW1vdmUgcGF0aCB0byBYMTEgbG9jYWxlIGRpci4KKy0KKy0JKiBNYWtlZmlsZS5pbjogTWFrZSBpbnN0YWxsLXNyYyBkZXBlbmQgb24gaW5zdGFsbC4gIFRoaXMgaGVscHMKKy0gCWdldHRleHQgdG8gaW5zdGFsbCB0aGUgc291cmNlcyBhbmQgb3RoZXIgcGFja2FnZXMgY2FuIHVzZSB0aGUKKy0gCWluc3RhbGwgZ29hbC4KKy0KKy1TYXQgQXVnIDE5IDE1OjE5OjMzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKHVuaW5zdGFsbCk6IFJlbW92ZSBzdHVmZiBpbnN0YWxsZWQgYnkgaW5zdGFsbC1zcmMuCistCistVHVlIEF1ZyAxNSAxMzoxMzo1MyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIFZFUlNJT04uaW46IEluaXRpYWwgcmV2aXNpb24uCistCistCSogTWFrZWZpbGUuaW4gKERJU1RGSUxFUyk6CistCUFkZCBWRVJTSU9OIGZpbGUuICBUaGlzIGlzIG5vdCBuZWNlc3NhcnkgZm9yIGdldHRleHQsIGJ1dAorLQlmb3Igb3RoZXIgcGFja2FnZXMgdXNpbmcgdGhpcyBsaWJyYXJ5LgorLQorLVR1ZSBBdWcgMTUgMDY6MTY6NDQgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBnZXR0ZXh0UC5oIChfbmxfZmluZF9kb21haW4pOgorLQlOZXcgcHJvdG90eXBlIGFmdGVyIGNoYW5naW5nIHNlYXJjaCBzdHJhdGVneS4KKy0KKy0JKiBmaW5kZG9tYWluLmMgKF9ubF9maW5kX2RvbWFpbik6CistCVdlIG5vdyB0cnkgb25seSB0byBmaW5kIGEgc3BlY2lmaWVkIGNhdGFsb2cuICBGYWxsIGJhY2sgdG8gb3RoZXIKKy0JY2F0YWxvZ3MgbGlzdGVkIGluIHRoZSBsb2NhbGUgbGlzdCBpcyBub3cgZG9uZSBpbiBfX2RjZ2V0dGV4dC4KKy0KKy0JKiBkY2dldHRleHQuYyAoX19kY2dldHRleHQpOgorLQlOb3cgd2UgcHJvdmlkZSBtZXNzYWdlIGZhbGwgYmFjayBldmVuIHRvIGRpZmZlcmVudCBsYW5ndWFnZXMuCistCUkuZS4gaWYgYSBtZXNzYWdlIGlzIG5vdCBhdmFpbGFibGUgaW4gb25lIGxhbmd1YWdlIGFsbCB0aGUgb3RoZXIKKy0gCWluIHRoZSBsb2NhbGUgbGlzdCBhIHRyaWVkLiAgRm9ybWVybHkgZmFsbCBiYWNrIHdhcyBvbmx5IHBvc3NpYmxlCistIAl3aXRoaW4gb25lIGxhbmd1YWdlLiAgSW1wbGVtZW50ZWQgYnkgbW92aW5nIG9uZSBsb29wIGZyb20KKy0gCV9ubF9maW5kX2RvbWFpbiB0byBoZXJlLgorLQorLU1vbiBBdWcgMTQgMjM6NDU6NTAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoZ2V0dGV4dHNyY2Rpcik6CistCURpcmVjdG9yeSB3aGVyZSBzb3VyY2Ugb2YgR05VIGdldHRleHQgbGlicmFyeSBhcmUgbWFkZQorLQlhdmFpbGFibGUuCistCShJTlNUQUxMLCBJTlNUQUxMX0RBVEEpOiBQcm9ncmFtcyB1c2VkIGZvciBpbnN0YWxsaW5nIHNvdXJjZXMuCistCShnZXR0ZXh0LXNyYyk6IE5ldy4gIFJ1bGUgdG8gaW5zdGFsbCBHTlUgZ2V0dGV4dCBzb3VyY2VzIGZvciB1c2UgaW4KKy0JZ2V0dGV4dGl6ZSBzaGVsbCBzY3JpcHQuCistCistU3VuIEF1ZyAxMyAxNDo0MDo0OCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGxvYWRtc2djYXQuYyAoX25sX2xvYWRfZG9tYWluKToKKy0JVXNlIG1tYXAgZm9yIGxvYWRpbmcgb25seSB3aGVuIG11bm1hcCBmdW5jdGlvbiBpcworLQlhbHNvIGF2YWlsYWJsZS4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IERlcGVuZCBvbiBgYWxsJyBnb2FsLgorLQorLVdlZCBBdWcgIDkgMTE6MDQ6MzMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBsb2NhbGVhbGlhcy5jIChyZWFkX2FsaWFzX2ZpbGUpOgorLQlEbyBub3Qgb3ZlcndyaXRlICdcbicgd2hlbiB0ZXJtaW5hdGluZyBhbGlhcyB2YWx1ZSBzdHJpbmcuCistCistCSogbG9jYWxlYWxpYXMuYyAocmVhZF9hbGlhc19maWxlKToKKy0JSGFuZGxlIGxvbmcgbGluZXMuICBJZ25vcmUgdGhlIHJlc3Qgbm90IGZpdHRpbmcgaW4KKy0JdGhlIGJ1ZmZlciBhZnRlciB0aGUgaW5pdGlhbCBgZmdldHMnIGNhbGwuCistCistV2VkIEF1ZyAgOSAwMDo1NDoyOSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGdldHRleHRQLmggKF9ubF9sb2FkX2RvbWFpbik6CistCUFkZCBwcm90b3R5cGUsIHJlcGxhY2luZyBwcm90b3R5cGUgZm9yIF9ubF9sb2FkX21zZ19jYXQuCistCistCSogZmluZGRvbWFpbi5jIChfbmxfZmluZF9kb21haW4pOgorLQlSZW1vdmUgdW5uZWVkZWQgdmFyaWFibGUgZmlsZW5hbWUgYW5kIGZpbGVuYW1lX2xlbi4KKy0JKGV4cGFuZF9hbGlhcyk6IFJlbW92ZSBwcm90b3R5cGUgYmVjYXVzZSBmdW5jdGlvbnMgZG9lcyBub3QKKy0gCWV4aXN0IGFueW1vcmUuCistCistCSogbG9jYWxlYWxpYXMuYyAocmVhZF9hbGlhc19maWxlKToKKy0JQ2hhbmdlIHR5cGUgb2YgZm5hbWVfbGVuIHBhcmFtZXRlciB0byBpbnQuCistCSh4bWFsbG9jKTogQWRkIHByb3RvdHlwZS4KKy0KKy0JKiBsb2FkbXNnY2F0LmM6IEJldHRlciBwcm90b3R5cGVzIGZvciB4bWFsbG9jLgorLQorLVR1ZSBBdWcgIDggMjI6MzA6MzkgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBmaW5kZG9tYWluLmMgKF9ubF9maW5kX2RvbWFpbik6CistCUFsbG93IGFsaWFzIG5hbWUgdG8gYmUgY29uc3RydWN0ZWQgZnJvbSB0aGUgZm91ciBjb21wb25lbnRzLgorLQorLQkqIE1ha2VmaWxlLmluIChhbGlhc3BhdGgpOiBOZXcgdmFyaWFibGUuICBTZXQgdG8gcHJlbGltaW5hcnkgdmFsdWUuCistCShTT1VSQ0VTKTogQWRkIGxvY2FsZWFsaWFzLmMuCistCShPQkpFQ1RTKTogQWRkIGxvY2FsZWFsaWFzLm8uCistCistCSogZ2V0dGV4dFAuaDogQWRkIHByb3RvdHlwZSBmb3IgX25sX2V4cGFuZF9hbGlhcy4KKy0KKy0JKiBmaW5kZG9tYWluLmM6IEFsaWFzaW5nIGhhbmRsZWQgaW4gaW50bC9sb2NhbGVhbGlhcy5jLgorLQorLQkqIGxvY2FsZWFsaWFzLmM6IEFsaWFzaW5nIGZvciBsb2NhbGUgbmFtZXMuCistCistCSogYmluZHRleHRkb20uYzogQmV0dGVyIHByb3RvdHlwZXMgZm9yIHhtYWxsb2MgYW5kIHhzdHJkdXAuCistCistTW9uIEF1ZyAgNyAyMzo0Nzo0MiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOiBnZXR0ZXh0LnBlcmwgaXMgbm93IGZvdW5kIGluIG1pc2MvLgorLQorLQkqIGNhdC1jb21wYXQuYyAoYmluZHRleHRkb21haW4pOgorLQlDb3JyZWN0IGltcGxlbWVudGF0aW9uLiAgZGlybmFtZSBwYXJhbWV0ZXIgd2FzIG5vdCB1c2VkLgorLQlSZXBvcnRlZCBieSBNYXJjdXMgRGFuaWVscy4KKy0KKy0JKiBnZXR0ZXh0UC5oIChsb2FkZWRfZG9tYWluKToKKy0JTmV3IGZpZWxkcyBgc3VjY2Vzc29yJyBhbmQgYGRlY2lkZWQnIGZvciBvbywgbGF6eQorLQltZXNzYWdlIGhhbmRsaW5nIGltcGxlbWVudGF0aW9uLgorLQorLQkqIGRjZ2V0dGV4dC5jOgorLQlBZG9wdCBmb3Igb28sIGxhenkgbWVzc2FnZSBoYW5kbGlpbmcuCistICAJTm93IHdlIGNhbiBpbmhlcml0IHRyYW5zbGF0aW9ucyBmcm9tIGxlc3Mgc3BlY2lmaWMgbG9jYWxlcy4KKy0JKGZpbmRfbXNnKTogTmV3IGZ1bmN0aW9uLgorLQorLQkqIGxvYWRtc2djYXQuYywgZmluZGRvbWFpbi5jOgorLQlDb21wbGV0ZSByZXdyaXRlLiAgSW1wbGVtZW50IG9vLCBsYXp5IG1lc3NhZ2UgaGFuZGxpbmcgOi0pLgorLSAgCVdlIG5vdyBoYXZlIGFuIGFkZGl0aW9uYWwgZW52aXJvbm1lbnQgdmFyaWFibGUgYExBTkdVQUdFJyB3aXRoCistIAlhIGhpZ2hlciBwcmlvcml0eSB0aGFuIExDX0FMTCBmb3IgdGhlIExDX01FU1NBR0UgbG9jYWxlLgorLSAgCUhlcmUgd2UgY2FuIHNldCBhIGNvbG9uIHNlcGFyYXRlZCBsaXN0IG9mIHNwZWNpZmljYXRpb25zIGVhY2gKKy0gCW9mIHRoZSBmb3JtIGBsYW5ndWFnZVtfdGVycml0b3J5Wy5jb2Rlc2V0XV1bQG1vZGlmaWVyXScuCistCistU2F0IEF1ZyAgNSAwOTo1NTo0MiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGZpbmRkb21haW4uYyAodW5pc3RkLmgpOgorLQlJbmNsdWRlIHRvIGdldCBfUENfUEFUSF9NQVggZGVmaW5lZCBvbiBzeXN0ZW0gaGF2aW5nIGl0LgorLQorLUZyaSBBdWcgIDQgMjI6NDI6MDAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBmaW5kZG9tYWluLmMgKHN0cGNweSk6IEluY2x1ZGUgcHJvdG90eXBlLgorLQorLQkqIE1ha2VmaWxlLmluIChkaXN0KTogUmVtb3ZlIGBjb3B5aW5nIGluc3RlYWQnIG1lc3NhZ2UuCistCistV2VkIEF1ZyAgMiAxODo1MjowMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChJRCwgVEFHUyk6IERvIG5vdCB1c2UgJF4uCistCistVHVlIEF1ZyAgMSAyMDowNzoxMSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChUQUdTLCBJRCk6IFVzZSAkXiBhcyBjb21tYW5kIGFyZ3VtZW50LgorLQkoVEFHUyk6IEdpdmUgZXRhZ3MgLW8gb3B0aW9uIHQgd3JpdGUgdG8gY3VycmVudCBkaXJlY3RvcnksCistIAlub3QgJChzcmNkaXIpLgorLQkoSUQpOiBVc2UgJChzcmNkaXIpIGluc3RlYWQgb3MgJCh0b3Bfc3JjZGlyKS9zcmMuCistCShkaXN0Y2xlYW4pOiBSZW1vdmUgSUQuCistCistU3VuIEp1bCAzMCAxMTo1MTo0NiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChnbnVsb2NhbGVkaXIpOgorLQlOZXcgdmFyaWFibGUsIGFsd2F5cyB1c2luZyBzaGFyZS8gZm9yIGRhdGEgZGlyZWN0b3J5LgorLQkoREVGUyk6IEFkZCBHTlVMT0NBTEVESVIsIHVzZWQgaW4gZmluZGRvbWFpbi5jLgorLQorLQkqIGZpbmRkb21haW4uYyAoX25sX2RlZmF1bHRfZGlybmFtZSk6CistCVNldCB0byBHTlVMT0NBTEVESVIsIGJlY2F1c2UgaXQgYWx3YXlzIGhhcyB0byBwb2ludAorLQl0byB0aGUgZGlyZWN0b3J5IHdoZXJlIEdOVSBnZXR0ZXh0IExpYnJhcnkgd3JpdGVzIGl0IHRvLgorLQorLQkqIGludGwtY29tcGF0LmMgKHRleHRkb21haW4sIGJpbmR0ZXh0ZG9tYWluKToKKy0JVW5kZWZpbmUgbWFjcm9zIGJlZm9yZSBmdW5jdGlvbiBkZWZpbml0aW9uLgorLQorLVNhdCBKdWwgMjIgMDE6MTA6MDIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBsaWJnZXR0ZXh0LmggKF9MSUJJTlRMX0gpOgorLQlQcm90ZWN0IGRlZmluaXRpb24gaW4gY2FzZSB3aGVyZSB0aGlzIGZpbGUgaXMgaW5jbHVkZWQgYXMKKy0JbGliZ2V0dGV4dC5oIG9uIFNvbGFyaXMgbWFjaGluZXMuICBBZGQgY29tbWVudCBhYm91dCB0aGlzLgorLQorLVdlZCBKdWwgMTkgMDI6MzY6NDIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBpbnRsLWNvbXBhdC5jICh0ZXh0ZG9tYWluKTogQ29ycmVjdCB0eXBvLgorLQorLVdlZCBKdWwgMTkgMDE6NTE6MzUgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBkY2dldHRleHQuYyAoZGNnZXR0ZXh0KTogRnVuY3Rpb24gbm93IGNhbGxlZCBfX2RjZ2V0dGV4dC4KKy0KKy0JKiBkZ2V0dGV4dC5jIChkZ2V0dGV4dCk6IE5vdyBjYWxsZWQgX19kZ2V0dGV4dCBhbmQgY2FsbHMKKy0gCV9fZGNnZXR0ZXh0LgorLQorLQkqIGdldHRleHQuYyAoZ2V0dGV4dCk6CistCUZ1bmN0aW9uIG5vdyBjYWxsZWQgX19nZXR0ZXh0IGFuZCBjYWxscyBfX2RnZXR0ZXh0LgorLQorLQkqIHRleHRkb21haW4uYyAodGV4dGRvbWFpbik6IEZ1bmN0aW9uIG5vdyBjYWxsZWQgX190ZXh0ZG9tYWluLgorLQorLQkqIGJpbmR0ZXh0ZG9tLmMgKGJpbmR0ZXh0ZG9tYWluKTogRnVuY3Rpb24gbm93IGNhbGxlZAorLSAJX19iaW5kdGV4dGRvbWFpbi4KKy0KKy0JKiBpbnRsLWNvbXBhdC5jOiBJbml0aWFsIHJldmlzaW9uLgorLQorLQkqIE1ha2VmaWxlLmluIChTT1VSQ0VTKTogQWRkIGludGwtY29tcGF0LmMuCistCShPQkpFQ1RTKTogV2UgYWx3YXlzIGNvbXBpbGUgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgZnVuY3Rpb25zLgorLSAgCU9CSkVDVFMgY29udGFpbnMgYWxsIG9iamVjdHMgYnV0IGNhdC1jb21wYXQubywgLi4vcG8vY2F0LWlmLXRibC5vLAorLSAJYW5kIGludGwtY29tcGF0Lm8uCistICAJKEdFVFRPQkpTKTogQ29udGFpbnMgbm93IG9ubHkgaW50bC1jb21wYXQuby4KKy0KKy0JKiBsaWJnZXR0ZXh0Lmg6CistCVJlLWluY2x1ZGUgcHJvdGVjdGlvbiBtYXRjaGVzIGR1YWxpc3RpYyBjaGFyYWN0ZXIgb2YgbGliZ2V0dGV4dC5oLgorLQlGb3IgYWxsIGZ1bmN0aW9ucyBpbiBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGRlZmluZSBfXyBjb3VudGVyIHBhcnQuCistCistCSogZmluZGRvbWFpbi5jIChzdHJjaHIpOiBEZWZpbmUgYXMgaW5kZXggaWYgbm90IGZvdW5kIGluIEMgbGlicmFyeS4KKy0JKF9ubF9maW5kX2RvbWFpbik6IEZvciByZWxhdGl2ZSBwYXRocyBwYXN0ZSAvIGluIGJldHdlZW4uCistCistVHVlIEp1bCAxOCAxNjozNzo0NSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGxvYWRtc2djYXQuYywgZmluZGRvbWFpbi5jOiBBZGQgaW5jbHVzaW9uIG9mIHN5cy90eXBlcy5oLgorLQorLQkqIHhvcGVuLW1zZy5zZWQ6IEZpeCBidWcgd2l0aCBgbXNnc3RyICIiJyBsaW5lcy4KKy0JQSBsaXR0bGUgYml0IGJldHRlciBjb21tZW50cy4KKy0KKy1UdWUgSnVsIDE4IDAxOjE4OjI3IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW46CistCXBvLW1vZGUuZWwsIG1ha2VsaW5rcywgY29tYmluZS1zaCBhcmUgbm93IGZvdW5kIGluIC4uL21pc2MuCistCistCSogcG8tbW9kZS5lbCwgbWFrZWxpbmtzLCBjb21iaW5lLXNoLCBlbGlzcC1jb21wOgorLQlNb3ZlZCB0byAuLi9taXNjLy4KKy0KKy0JKiBsaWJnZXR0ZXh0LmgsIGdldHRleHRQLmgsIGdldHRleHQuaDogVW5pZm9ybSB0ZXN0IGZvciBfX1NURENfXy4KKy0KKy1TdW4gSnVsIDE2IDIyOjMzOjAyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogTWFrZWZpbGUuaW4gKElOU1RBTEwsIElOU1RBTExfREFUQSk6IE5ldyB2YXJpYWJsZXMuCistCShpbnN0YWxsLWRhdGEsIHVuaW5zdGFsbCk6IEluc3RhbGwvdW5pbnN0YWxsIC5lbGMgZmlsZS4KKy0KKy0JKiBwby1tb2RlLmVsIChJbnN0YWxsYXRpb24gY29tbWVudCk6CistCUFkZCAucG94IGFzIHBvc3NpYmxlIGV4dGVuc2lvbiBvZiAucG8gZmlsZXMuCistCistU3VuIEp1bCAxNiAxMzoyMzoyNyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIGVsaXNwLWNvbXA6IENvbXBsZXRlIG5ldyB2ZXJzaW9uIGJ5IEZyYW5jLG9pczogVGhpcyBkb2VzIG5vdAorLSAJZmFpbCB3aGVuIG5vdCBjb21waWxpbmcgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnkuCistCistU3VuIEp1bCAxNiAwMDoxMjoxNyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluICguLi9wby9jYXQtaWQtdGJsLm8pOgorLQlVc2UgJChNQUtFKSBpbnN0ZWFkIG9mIG1ha2UgZm9yIHJlY3Vyc2l2ZSBtYWtlLgorLQorLQkqIE1ha2VmaWxlLmluICguZWwuZWxjKTogVXNlICQoU0hFTEwpIGluc3RlYWQgb2YgL2Jpbi9zaC4KKy0JKGluc3RhbGwtZXhlYyk6IEFkZCBtaXNzaW5nIGR1bW15IGdvYWwuCistCShpbnN0YWxsLWRhdGEsIHVuaW5zdGFsbCk6IEAgaW4gbXVsdGktbGluZSBzaGVsbCBjb21tYW5kIGF0CistIAliZWdpbm5pbmcsIG5vdCBpbiBmcm9udCBvZiBlY2hvLiAgUmVwb3J0ZWQgYnkgRXJpYyBCYWNrdXMuCistCistU2F0IEp1bCAxNSAwMDoyMToyOCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOgorLQlSZW5hbWUgbGliZ2V0dGV4dC5wZXJsIHRvIGdldHRleHQucGVybCB0byBmaXQgaW4gMTQgY2hhcnMKKy0JZmlsZSBzeXN0ZW1zLgorLQorLQkqIGdldHRleHQucGVybDoKKy0gCVJlbmFtZSB0byBnZXR0ZXh0LnBlcmwgdG8gZml0IGluIDE0IGNoYXJzIGZpbGUgc3lzdGVtcy4KKy0KKy1UaHUgSnVsIDEzIDIzOjE3OjIwIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogY2F0LWNvbXBhdC5jOiBJZiAhU1REQ19IRUFERVJTIHRyeSB0byBpbmNsdWRlIG1hbGxvYy5oLgorLQorLVRodSBKdWwgMTMgMjA6NTU6MDIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBwbzJ0Ymwuc2VkLmluOiBQcmV0dHkgcHJpbnRpbmcuCistCistCSogbGludXgtbXNnLnNlZCwgeG9wZW4tbXNnLnNlZDoKKy0JQ29ycmVjdCBidWdzIHdpdGggaGFuZGxpbmcgc3Vic3RpdHV0ZSBmbGFncyBpbiBicmFuY2hlcy4KKy0KKy0JKiBoYXNoLXN0cmluZy5oIChoYXNoX3N0cmluZyk6CistCU9sZCBLJlIgY29tcGlsZXJzIGRvbid0IHVuZGVyIHN0YW5kIGB1bnNpZ25lZCBjaGFyJy4KKy0KKy0JKiBnZXR0ZXh0LmggKG5sc191aW50MzIpOgorLQlTb21lIG9sZCBLJlIgY29tcGlsZXJzIChlZyBIUCkgZG9uJ3QgdW5kZXJzdGFuZCBgdW5zaWduZWQgaW50Jy4KKy0KKy0JKiBjYXQtY29tcGF0LmMgKG1zZ190b19jYXRfaWQpOiBEZS1BTlNJLWZ5IHByb3RvdHlwZXMuCistCistVGh1IEp1bCAxMyAwMTozNDozMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIE1ha2VmaWxlLmluIChFTENGSUxFUyk6IE5ldyB2YXJpYWJsZS4KKy0JKERJU1RGSUxFUyk6IEFkZCBlbGlzcC1jb21wLgorLQlBZGQgaW1wbGljaXQgcnVsZSBmb3IgLmVsIC0+IC5lbGMgY29tcGlsYXRpb24uCistCShpbnN0YWxsLWRhdGEpOiBpbnN0YWxsICRFTENGSUxFUworLQkoY2xlYW4pOiByZW5hbWVkIHBvLXRvLXRibCBhbmQgcG8tdG8tbXNnIHRvIHBvMnRibCBhbmQgcG8ybXNnIHJlc3AuCistCistCSogZWxpc3AtY29tcDogSW5pdGlhbCByZXZpc2lvbgorLQorLVdlZCBKdWwgMTIgMTY6MTQ6NTIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbjoKKy0JY2F0LWlkLXRibC5jIGlzIG5vdyBmb3VuZCBpbiBwby8uICBUaGlzIGVuYWJsZXMgdXMgdG8gdXNlIGFuIGlkZW50aWNhbAorLQlpbnRsLyBkaXJlY3RvcnkgaW4gYWxsIHBhY2thZ2VzLgorLQorLQkqIGRjZ2V0dGV4dC5jIChkY2dldHRleHQpOiBoYXNoaW5nIGRvZXMgbm90IHdvcmsgZm9yIHRhYmxlIHNpemUgPD0gMi4KKy0KKy0JKiB0ZXh0ZG9tYWluLmM6IGZpeCB0eXBvICgjaWYgZGVmIC0+ICNpZiBkZWZpbmVkKQorLQorLVR1ZSBKdWwgMTEgMTg6NDQ6NDMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoc3RhbXAtY2F0LWlkKTogdXNlIHRvcF9zcmNkaXIgdG8gYWRkcmVzcyBzb3VyY2UgZmlsZXMKKy0JKERJU1RGSUxFUyxkaXN0Y2xlYW4pOiBtb3ZlIHR1cGRhdGUucGVybCB0byBzcmMvCistCistCSogcG8tdG8tdGJsLnNlZC5pbjoKKy0JYWRkIGFkZGl0aW9uYWwganVtcCB0byBjbGVhciBjaGFuZ2UgZmxhZyB0byByZWNvZ25pemUgbXVsdGlsaW5lIHN0cmluZ3MKKy0KKy1UdWUgSnVsIDExIDAxOjMyOjUwIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogdGV4dGRvbWFpbi5jOiBQcm90ZWN0IGluY2x1c2lvbiBvZiBzdGRsaWIuaCBhbmQgc3RyaW5nLmguCistCistCSogbG9hZG1zZ2NhdC5jOiBQcm90ZWN0IGluY2x1c2lvbiBvZiBzdGRsaWIuaC4KKy0KKy0JKiBsaWJnZXR0ZXh0Lmg6IFByb3RlY3QgaW5jbHVzaW9uIG9mIGxvY2FsZS5oLgorLQlBbGxvdyB1c2UgaW4gQysrIHByb2dyYW1zLgorLQlEZWZpbmUgTlVMTCBpcyBub3QgaGFwcGVuZWQgYWxyZWFkeS4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoRElTVEZJTEVTKTogc2hpcCBwby10by10Ymwuc2VkLmluIGluc3RlYWQgb2YKKy0JcG8tdG8tdGJsLnNlZC4KKy0JKGRpc3RjbGVhbik6IHJlbW92ZSBwby10by10Ymwuc2VkIGFuZCB0dXBkYXRlLnBlcmwuCistCistCSogdHVwZGF0ZS5wZXJsLmluOiBTdWJzdGl0dXRlIFBlcmwgcGF0aCBldmVuIGluIGV4ZWMgbGluZS4KKy0JRG9uJ3QgaW5jbHVkZSBlbnRyaWVzIHdpdGhvdXQgdHJhbnNsYXRpb24gZnJvbSBvbGQgLnBvIGZpbGUuCistCistVHVlIEp1bCAgNCAwMDo0MTo1MSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgorLQorLQkqIHR1cGRhdGUucGVybC5pbjogdXNlICJVcGRhdGVkOiAiIGluIG1zZ2lkICIiLgorLQorLQkqIGNhdC1jb21wYXQuYzogRml4IHR5cG8gKExPQ0FMRElSIC0+IExPQ0FMRURJUikuCistIAlEZWZpbmUgZ2V0ZW52IGlmICFfX1NURENfXy4KKy0KKy0JKiBiaW5kdGV4dGRvbS5jOiBQcm90ZWN0IHN0ZGxpYi5oIGFuZCBzdHJpbmcuaCBpbmNsdXNpb24uCistIAlEZWZpbmUgZnJlZSBpZiAhX19TVERDX18uCistCistCSogZmluZGRvbWFpbi5jOiBDaGFuZ2UgREVGX01TR19ET01fRElSIHRvIExPQ0FMRURJUi4KKy0gCURlZmluZSBmcmVlIGlmICFfX1NURENfXy4KKy0KKy0JKiBjYXQtY29tcGF0LmM6IENoYW5nZSBERUZfTVNHX0RPTV9ESVIgdG8gTE9DQUxFRElSLgorLQorLU1vbiBKdWwgIDMgMjM6NTY6MzAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBNYWtlZmlsZS5pbjogVXNlIExPQ0FMRURJUiBpbnN0ZWFkIG9mIERFRl9NU0dfRE9NX0RJUi4KKy0JUmVtb3ZlIHVubmVlZGVkICQoc3JjZGlyKSBmcm9tIE1ha2VmaWxlLmluIGRlcGVuZGVuY3kuCistCistCSogbWFrZWxpbmtzOiBBZGQgY29weXJpZ2h0IGFuZCBzaG9ydCBkZXNjcmlwdGlvbi4KKy0KKy0JKiBwby1tb2RlLmVsOiBMYXN0IHZlcnNpb24gZm9yIDAuNy4KKy0KKy0JKiB0dXBkYXRlLnBlcmwuaW46IEZpeCBkaWUgbWVzc2FnZS4KKy0KKy0JKiBkY2dldHRleHQuYzogUHJvdGVjdCBpbmNsdWRlIG9mIHN0cmluZy5oLgorLQorLQkqIGdldHRleHQuYzogUHJvdGVjdCBpbmNsdWRlIG9mIHN0ZGxpYi5oIGFuZCBmdXJ0aGVyIHRyaWVzIHRvIGdldCBOVUxMLgorLQorLQkqIGZpbmRkb21haW4uYzogU29tZSBjb3JyZWN0aW9ucyBpbiBpbmNsdWRlcy4KKy0KKy0JKiBNYWtlZmlsZS5pbiAoSU5DTFVERVMpOiBQcnVuZSBsaXN0IGNvcnJlY3QgcGF0aCB0byBNYWtlZmlsZS5pbi4KKy0KKy0JKiBwby10by10Ymwuc2VkOiBBZG9wdCBmb3IgbmV3IC5wbyBmaWxlIGZvcm1hdC4KKy0KKy0JKiBsaW51eC1tc2cuc2VkLCB4b3Blbi1tc2cuc2VkOiBBZG9wdCBmb3IgbmV3IC5wbyBmaWxlIGZvcm1hdC4KKy0KKy1TdW4gSnVsICAyIDIzOjU1OjAzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+CistCistCSogdHVwZGF0ZS5wZXJsLmluOiBDb21wbGV0ZSByZXdyaXRlIGZvciBuZXcgLnBvIGZpbGUgZm9ybWF0LgorLQorLVN1biBKdWwgIDIgMDI6MDY6NTAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KKy0KKy0JKiBGaXJzdCBvZmZpY2lhbCByZWxlYXNlLiAgVGhpcyBkaXJlY3RvcnkgY29udGFpbnMgYWxsIHRoZSBjb2RlCistCW5lZWRlZCB0byBpbnRlcm5hdGlvbmFsaXplIG93biBwYWNrYWdlcy4gIEl0IHByb3ZpZGVzIGZ1bmN0aW9ucworLQl3aGljaCBhbGxvdyB0byB1c2UgdGhlIFgvT3BlbiBjYXRnZXRzIGZ1bmN0aW9uIHdpdGggYW4gaW50ZXJmYWNlCistCWxpa2UgdGhlIFVuaWZvcnVtIGdldHRleHQgZnVuY3Rpb24uICBGb3Igc3lzdGVtIHdoaWNoIGRvZXMgbm90CistCWhhdmUgbmVpdGhlciBvZiB0aG9zZSBhIGNvbXBsZXRlIGltcGxlbWVudGF0aW9uIGlzIHByb3ZpZGVkLgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZGNnZXR0ZXh0LmMgbHJ6c3otMC4xMi4yMC9pbnRsL2RjZ2V0dGV4dC5jCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2RjZ2V0dGV4dC5jCTE5OTgtMDQtMjYgMTQ6MjI6MzYuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2RjZ2V0dGV4dC5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSw1OTMgKzAsMCBAQAorLS8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBkY2dldHRleHQoMykgZnVuY3Rpb24KKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZkZWYgSEFWRV9DT05GSUdfSAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCistI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLQorLSNpZmRlZiBfX0dOVUNfXworLSMgZGVmaW5lIGFsbG9jYSBfX2J1aWx0aW5fYWxsb2NhCistIyBkZWZpbmUgSEFWRV9BTExPQ0EgMQorLSNlbHNlCistIyBpZiBkZWZpbmVkIEhBVkVfQUxMT0NBX0ggfHwgZGVmaW5lZCBfTElCQworLSMgIGluY2x1ZGUgPGFsbG9jYS5oPgorLSMgZWxzZQorLSMgIGlmZGVmIF9BSVgKKy0gI3ByYWdtYSBhbGxvY2EKKy0jICBlbHNlCistIyAgIGlmbmRlZiBhbGxvY2EKKy1jaGFyICphbGxvY2EgKCk7CistIyAgIGVuZGlmCistIyAgZW5kaWYKKy0jIGVuZGlmCistI2VuZGlmCistCistI2luY2x1ZGUgPGVycm5vLmg+CistI2lmbmRlZiBlcnJubworLWV4dGVybiBpbnQgZXJybm87CistI2VuZGlmCistI2lmbmRlZiBfX3NldF9lcnJubworLSMgZGVmaW5lIF9fc2V0X2Vycm5vKHZhbCkgZXJybm8gPSAodmFsKQorLSNlbmRpZgorLQorLSNpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIF9MSUJDCistIyBpbmNsdWRlIDxzdGRsaWIuaD4KKy0jZWxzZQorLWNoYXIgKmdldGVudiAoKTsKKy0jIGlmZGVmIEhBVkVfTUFMTE9DX0gKKy0jICBpbmNsdWRlIDxtYWxsb2MuaD4KKy0jIGVsc2UKKy12b2lkIGZyZWUgKCk7CistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpZiBkZWZpbmVkIEhBVkVfU1RSSU5HX0ggfHwgZGVmaW5lZCBfTElCQworLSMgaWZuZGVmIF9HTlVfU09VUkNFCistIyAgZGVmaW5lIF9HTlVfU09VUkNFCTEKKy0jIGVuZGlmCistIyBpbmNsdWRlIDxzdHJpbmcuaD4KKy0jZWxzZQorLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgorLSNlbmRpZgorLSNpZiAhSEFWRV9TVFJDSFIgJiYgIWRlZmluZWQgX0xJQkMKKy0jIGlmbmRlZiBzdHJjaHIKKy0jICBkZWZpbmUgc3RyY2hyIGluZGV4CistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpZiBkZWZpbmVkIEhBVkVfVU5JU1REX0ggfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8dW5pc3RkLmg+CistI2VuZGlmCistCistI2luY2x1ZGUgImdldHRleHQuaCIKKy0jaW5jbHVkZSAiZ2V0dGV4dFAuaCIKKy0jaWZkZWYgX0xJQkMKKy0jIGluY2x1ZGUgPGxpYmludGwuaD4KKy0jZWxzZQorLSMgaW5jbHVkZSAibGliZ2V0dGV4dC5oIgorLSNlbmRpZgorLSNpbmNsdWRlICJoYXNoLXN0cmluZy5oIgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0KKy0jaWZkZWYgX0xJQkMKKy0vKiBSZW5hbWUgdGhlIG5vbiBBTlNJIEMgZnVuY3Rpb25zLiAgVGhpcyBpcyByZXF1aXJlZCBieSB0aGUgc3RhbmRhcmQKKy0gICBiZWNhdXNlIHNvbWUgQU5TSSBDIGZ1bmN0aW9ucyB3aWxsIHJlcXVpcmUgbGlua2luZyB3aXRoIHRoaXMgb2JqZWN0CistICAgZmlsZSBhbmQgdGhlIG5hbWUgc3BhY2UgbXVzdCBub3QgYmUgcG9sbHV0ZWQuICAqLworLSMgZGVmaW5lIGdldGN3ZCBfX2dldGN3ZAorLSMgZGVmaW5lIHN0cGNweSBfX3N0cGNweQorLSNlbHNlCistIyBpZiAhZGVmaW5lZCBIQVZFX0dFVENXRAorLWNoYXIgKmdldHdkICgpOworLSMgIGRlZmluZSBnZXRjd2QoYnVmLCBtYXgpIGdldHdkIChidWYpCistIyBlbHNlCistY2hhciAqZ2V0Y3dkICgpOworLSMgZW5kaWYKKy0jIGlmbmRlZiBIQVZFX1NUUENQWQorLXN0YXRpYyBjaGFyICpzdHBjcHkgUEFSQU1TICgoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKSk7CistIyBlbmRpZgorLSNlbmRpZgorLQorLS8qIEFtb3VudCB0byBpbmNyZWFzZSBidWZmZXIgc2l6ZSBieSBpbiBlYWNoIHRyeS4gICovCistI2RlZmluZSBQQVRIX0lOQ1IgMzIKKy0KKy0vKiBUaGUgZm9sbG93aW5nIGlzIGZyb20gcGF0aG1heC5oLiAgKi8KKy0vKiBOb24tUE9TSVggQlNEIHN5c3RlbXMgbWlnaHQgaGF2ZSBnY2MncyBsaW1pdHMuaCwgd2hpY2ggZG9lc24ndCBkZWZpbmUKKy0gICBQQVRIX01BWCBidXQgbWlnaHQgY2F1c2UgcmVkZWZpbml0aW9uIHdhcm5pbmdzIHdoZW4gc3lzL3BhcmFtLmggaXMKKy0gICBsYXRlciBpbmNsdWRlZCAoYXMgb24gTU9SRS9CU0QgNC4zKS4gICovCistI2lmIGRlZmluZWQoX1BPU0lYX1ZFUlNJT04pIHx8IChkZWZpbmVkKEhBVkVfTElNSVRTX0gpICYmICFkZWZpbmVkKF9fR05VQ19fKSkKKy0jIGluY2x1ZGUgPGxpbWl0cy5oPgorLSNlbmRpZgorLQorLSNpZm5kZWYgX1BPU0lYX1BBVEhfTUFYCistIyBkZWZpbmUgX1BPU0lYX1BBVEhfTUFYIDI1NQorLSNlbmRpZgorLQorLSNpZiAhZGVmaW5lZChQQVRIX01BWCkgJiYgZGVmaW5lZChfUENfUEFUSF9NQVgpCistIyBkZWZpbmUgUEFUSF9NQVggKHBhdGhjb25mICgiLyIsIF9QQ19QQVRIX01BWCkgPCAxID8gMTAyNCA6IHBhdGhjb25mICgiLyIsIF9QQ19QQVRIX01BWCkpCistI2VuZGlmCistCistLyogRG9uJ3QgaW5jbHVkZSBzeXMvcGFyYW0uaCBpZiBpdCBhbHJlYWR5IGhhcyBiZWVuLiAgKi8KKy0jaWYgZGVmaW5lZChIQVZFX1NZU19QQVJBTV9IKSAmJiAhZGVmaW5lZChQQVRIX01BWCkgJiYgIWRlZmluZWQoTUFYUEFUSExFTikKKy0jIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgorLSNlbmRpZgorLQorLSNpZiAhZGVmaW5lZChQQVRIX01BWCkgJiYgZGVmaW5lZChNQVhQQVRITEVOKQorLSMgZGVmaW5lIFBBVEhfTUFYIE1BWFBBVEhMRU4KKy0jZW5kaWYKKy0KKy0jaWZuZGVmIFBBVEhfTUFYCistIyBkZWZpbmUgUEFUSF9NQVggX1BPU0lYX1BBVEhfTUFYCistI2VuZGlmCistCistLyogWFBHMyBkZWZpbmVzIHRoZSByZXN1bHQgb2YgYHNldGxvY2FsZSAoY2F0ZWdvcnksIE5VTEwpJyBhczoKKy0gICBgYERpcmVjdHMgYHNldGxvY2FsZSgpJyB0byBxdWVyeSBgY2F0ZWdvcnknIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQKKy0gICAgIHNldHRpbmcgb2YgYGxvY2FsJy4nJworLSAgIEhvd2V2ZXIgaXQgZG9lcyBub3Qgc3BlY2lmeSB0aGUgZXhhY3QgZm9ybWF0LiAgQW5kIGV2ZW4gd29yc2U6IFBPU0lYCistICAgZGVmaW5lcyB0aGlzIG5vdCBhdCBhbGwuICBTbyB3ZSBjYW4gdXNlIHRoaXMgZmVhdHVyZSBvbmx5IG9uIHNlbGVjdGVkCistICAgc3lzdGVtIChlLmcuIHRob3NlIHVzaW5nIEdOVSBDIExpYnJhcnkpLiAgKi8KKy0jaWZkZWYgX0xJQkMKKy0jIGRlZmluZSBIQVZFX0xPQ0FMRV9OVUxMCistI2VuZGlmCistCistLyogTmFtZSBvZiB0aGUgZGVmYXVsdCBkb21haW4gdXNlZCBmb3IgZ2V0dGV4dCgzKSBwcmlvciBhbnkgY2FsbCB0bworLSAgIHRleHRkb21haW4oMykuICBUaGUgZGVmYXVsdCB2YWx1ZSBmb3IgdGhpcyBpcyAibWVzc2FnZXMiLiAgKi8KKy1jb25zdCBjaGFyIF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluW10gPSAibWVzc2FnZXMiOworLQorLS8qIFZhbHVlIHVzZWQgYXMgdGhlIGRlZmF1bHQgZG9tYWluIGZvciBnZXR0ZXh0KDMpLiAgKi8KKy1jb25zdCBjaGFyICpfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiA9IF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluOworLQorLS8qIENvbnRhaW5zIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBtZXNzYWdlIGNhdGFsb2dzLiAgKi8KKy1jb25zdCBjaGFyIF9ubF9kZWZhdWx0X2Rpcm5hbWVbXSA9IEdOVUxPQ0FMRURJUjsKKy0KKy0vKiBMaXN0IHdpdGggYmluZGluZ3Mgb2Ygc3BlY2lmaWMgZG9tYWlucyBjcmVhdGVkIGJ5IGJpbmR0ZXh0ZG9tYWluKCkKKy0gICBjYWxscy4gICovCistc3RydWN0IGJpbmRpbmcgKl9ubF9kb21haW5fYmluZGluZ3M7CistCistLyogUHJvdG90eXBlcyBmb3IgbG9jYWwgZnVuY3Rpb25zLiAgKi8KKy1zdGF0aWMgY2hhciAqZmluZF9tc2cgUEFSQU1TICgoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluX2ZpbGUsCistCQkJICAgICAgIGNvbnN0IGNoYXIgKm1zZ2lkKSk7Cistc3RhdGljIGNvbnN0IGNoYXIgKmNhdGVnb3J5X3RvX25hbWUgUEFSQU1TICgoaW50IGNhdGVnb3J5KSk7Cistc3RhdGljIGNvbnN0IGNoYXIgKmd1ZXNzX2NhdGVnb3J5X3ZhbHVlIFBBUkFNUyAoKGludCBjYXRlZ29yeSwKKy0JCQkJCQkgY29uc3QgY2hhciAqY2F0ZWdvcnluYW1lKSk7CistCistCistLyogRm9yIHRob3NlIGxvb3Npbmcgc3lzdGVtcyB3aGljaCBkb24ndCBoYXZlIGBhbGxvY2EnIHdlIGhhdmUgdG8gYWRkCistICAgc29tZSBhZGRpdGlvbmFsIGNvZGUgZW11bGF0aW5nIGl0LiAgKi8KKy0jaWZkZWYgSEFWRV9BTExPQ0EKKy0vKiBOb3RoaW5nIGhhcyB0byBiZSBkb25lLiAgKi8KKy0jIGRlZmluZSBBRERfQkxPQ0sobGlzdCwgYWRkcmVzcykgLyogbm90aGluZyAqLworLSMgZGVmaW5lIEZSRUVfQkxPQ0tTKGxpc3QpIC8qIG5vdGhpbmcgKi8KKy0jZWxzZQorLXN0cnVjdCBibG9ja19saXN0CisteworLSAgdm9pZCAqYWRkcmVzczsKKy0gIHN0cnVjdCBibG9ja19saXN0ICpuZXh0OworLX07CistIyBkZWZpbmUgQUREX0JMT0NLKGxpc3QsIGFkZHIpCQkJCQkJICAgICAgXAorLSAgZG8gewkJCQkJCQkJCSAgICAgIFwKKy0gICAgc3RydWN0IGJsb2NrX2xpc3QgKm5ld3AgPSAoc3RydWN0IGJsb2NrX2xpc3QgKikgbWFsbG9jIChzaXplb2YgKCpuZXdwKSk7ICBcCistICAgIC8qIElmIHdlIGNhbm5vdCBnZXQgYSBmcmVlIGJsb2NrIHdlIGNhbm5vdCBhZGQgdGhlIG5ldyBlbGVtZW50IHRvCSAgICAgIFwKKy0gICAgICAgdGhlIGxpc3QuICAqLwkJCQkJCQkgICAgICBcCistICAgIGlmIChuZXdwICE9IE5VTEwpIHsJCQkJCQkJICAgICAgXAorLSAgICAgIG5ld3AtPmFkZHJlc3MgPSAoYWRkcik7CQkJCQkJICAgICAgXAorLSAgICAgIG5ld3AtPm5leHQgPSAobGlzdCk7CQkJCQkJICAgICAgXAorLSAgICAgIChsaXN0KSA9IG5ld3A7CQkJCQkJCSAgICAgIFwKKy0gICAgfQkJCQkJCQkJCSAgICAgIFwKKy0gIH0gd2hpbGUgKDApCistIyBkZWZpbmUgRlJFRV9CTE9DS1MobGlzdCkJCQkJCQkgICAgICBcCistICBkbyB7CQkJCQkJCQkJICAgICAgXAorLSAgICB3aGlsZSAobGlzdCAhPSBOVUxMKSB7CQkJCQkJICAgICAgXAorLSAgICAgIHN0cnVjdCBibG9ja19saXN0ICpvbGQgPSBsaXN0OwkJCQkJICAgICAgXAorLSAgICAgIGxpc3QgPSBsaXN0LT5uZXh0OwkJCQkJCSAgICAgIFwKKy0gICAgICBmcmVlIChvbGQpOwkJCQkJCQkgICAgICBcCistICAgIH0JCQkJCQkJCQkgICAgICBcCistICB9IHdoaWxlICgwKQorLSMgdW5kZWYgYWxsb2NhCistIyBkZWZpbmUgYWxsb2NhKHNpemUpIChtYWxsb2MgKHNpemUpKQorLSNlbmRpZgkvKiBoYXZlIGFsbG9jYSAqLworLQorLQorLS8qIE5hbWVzIGZvciB0aGUgbGliaW50bCBmdW5jdGlvbnMgYXJlIGEgcHJvYmxlbS4gIFRoZXkgbXVzdCBub3QgY2xhc2gKKy0gICB3aXRoIGV4aXN0aW5nIG5hbWVzIGFuZCB0aGV5IHNob3VsZCBmb2xsb3cgQU5TSSBDLiAgQnV0IHRoaXMgc291cmNlCistICAgY29kZSBpcyBhbHNvIHVzZWQgaW4gR05VIEMgTGlicmFyeSB3aGVyZSB0aGUgbmFtZXMgaGF2ZSBhIF9fCistICAgcHJlZml4LiAgU28gd2UgaGF2ZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KKy0jaWZkZWYgX0xJQkMKKy0jIGRlZmluZSBEQ0dFVFRFWFQgX19kY2dldHRleHQKKy0jZWxzZQorLSMgZGVmaW5lIERDR0VUVEVYVCBkY2dldHRleHRfXworLSNlbmRpZgorLQorLS8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudCBDQVRFR09SWQorLSAgIGxvY2FsZS4gICovCistY2hhciAqCistRENHRVRURVhUIChkb21haW5uYW1lLCBtc2dpZCwgY2F0ZWdvcnkpCistICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOworLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7CistICAgICBpbnQgY2F0ZWdvcnk7CisteworLSNpZm5kZWYgSEFWRV9BTExPQ0EKKy0gIHN0cnVjdCBibG9ja19saXN0ICpibG9ja19saXN0ID0gTlVMTDsKKy0jZW5kaWYKKy0gIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbjsKKy0gIHN0cnVjdCBiaW5kaW5nICpiaW5kaW5nOworLSAgY29uc3QgY2hhciAqY2F0ZWdvcnluYW1lOworLSAgY29uc3QgY2hhciAqY2F0ZWdvcnl2YWx1ZTsKKy0gIGNoYXIgKmRpcm5hbWUsICp4ZG9tYWlubmFtZTsKKy0gIGNoYXIgKnNpbmdsZV9sb2NhbGU7CistICBjaGFyICpyZXR2YWw7CistICBpbnQgc2F2ZWRfZXJybm8gPSBlcnJubzsKKy0KKy0gIC8qIElmIG5vIHJlYWwgTVNHSUQgaXMgZ2l2ZW4gcmV0dXJuIE5VTEwuICAqLworLSAgaWYgKG1zZ2lkID09IE5VTEwpCistICAgIHJldHVybiBOVUxMOworLQorLSAgLyogSWYgRE9NQUlOTkFNRSBpcyBOVUxMLCB3ZSBhcmUgaW50ZXJlc3RlZCBpbiB0aGUgZGVmYXVsdCBkb21haW4uICBJZgorLSAgICAgQ0FURUdPUlkgaXMgbm90IExDX01FU1NBR0VTIHRoaXMgbWlnaHQgbm90IG1ha2UgbXVjaCBzZW5zZSBidXQgdGhlCistICAgICBkZWZpbnRpb24gbGVmdCB0aGlzIHVuZGVmaW5lZC4gICovCistICBpZiAoZG9tYWlubmFtZSA9PSBOVUxMKQorLSAgICBkb21haW5uYW1lID0gX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW47CistCistICAvKiBGaXJzdCBmaW5kIG1hdGNoaW5nIGJpbmRpbmcuICAqLworLSAgZm9yIChiaW5kaW5nID0gX25sX2RvbWFpbl9iaW5kaW5nczsgYmluZGluZyAhPSBOVUxMOyBiaW5kaW5nID0gYmluZGluZy0+bmV4dCkKKy0gICAgeworLSAgICAgIGludCBjb21wYXJlID0gc3RyY21wIChkb21haW5uYW1lLCBiaW5kaW5nLT5kb21haW5uYW1lKTsKKy0gICAgICBpZiAoY29tcGFyZSA9PSAwKQorLQkvKiBXZSBmb3VuZCBpdCEgICovCistCWJyZWFrOworLSAgICAgIGlmIChjb21wYXJlIDwgMCkKKy0JeworLQkgIC8qIEl0IGlzIG5vdCBpbiB0aGUgbGlzdC4gICovCistCSAgYmluZGluZyA9IE5VTEw7CistCSAgYnJlYWs7CistCX0KKy0gICAgfQorLQorLSAgaWYgKGJpbmRpbmcgPT0gTlVMTCkKKy0gICAgZGlybmFtZSA9IChjaGFyICopIF9ubF9kZWZhdWx0X2Rpcm5hbWU7CistICBlbHNlIGlmIChiaW5kaW5nLT5kaXJuYW1lWzBdID09ICcvJykKKy0gICAgZGlybmFtZSA9IGJpbmRpbmctPmRpcm5hbWU7CistICBlbHNlCistICAgIHsKKy0gICAgICAvKiBXZSBoYXZlIGEgcmVsYXRpdmUgcGF0aC4gIE1ha2UgaXQgYWJzb2x1dGUgbm93LiAgKi8KKy0gICAgICBzaXplX3QgZGlybmFtZV9sZW4gPSBzdHJsZW4gKGJpbmRpbmctPmRpcm5hbWUpICsgMTsKKy0gICAgICBzaXplX3QgcGF0aF9tYXg7CistICAgICAgY2hhciAqcmV0OworLQorLSAgICAgIHBhdGhfbWF4ID0gKHVuc2lnbmVkKSBQQVRIX01BWDsKKy0gICAgICBwYXRoX21heCArPSAyOwkJLyogVGhlIGdldGN3ZCBkb2NzIHNheSB0byBkbyB0aGlzLiAgKi8KKy0KKy0gICAgICBkaXJuYW1lID0gKGNoYXIgKikgYWxsb2NhIChwYXRoX21heCArIGRpcm5hbWVfbGVuKTsKKy0gICAgICBBRERfQkxPQ0sgKGJsb2NrX2xpc3QsIGRpcm5hbWUpOworLQorLSAgICAgIF9fc2V0X2Vycm5vICgwKTsKKy0gICAgICB3aGlsZSAoKHJldCA9IGdldGN3ZCAoZGlybmFtZSwgcGF0aF9tYXgpKSA9PSBOVUxMICYmIGVycm5vID09IEVSQU5HRSkKKy0JeworLQkgIHBhdGhfbWF4ICs9IFBBVEhfSU5DUjsKKy0JICBkaXJuYW1lID0gKGNoYXIgKikgYWxsb2NhIChwYXRoX21heCArIGRpcm5hbWVfbGVuKTsKKy0JICBBRERfQkxPQ0sgKGJsb2NrX2xpc3QsIGRpcm5hbWUpOworLQkgIF9fc2V0X2Vycm5vICgwKTsKKy0JfQorLQorLSAgICAgIGlmIChyZXQgPT0gTlVMTCkKKy0JeworLQkgIC8qIFdlIGNhbm5vdCBnZXQgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuICBEb24ndCBzaWduYWwgYW4KKy0JICAgICBlcnJvciBidXQgc2ltcGx5IHJldHVybiB0aGUgZGVmYXVsdCBzdHJpbmcuICAqLworLQkgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKKy0JICBfX3NldF9lcnJubyAoc2F2ZWRfZXJybm8pOworLQkgIHJldHVybiAoY2hhciAqKSBtc2dpZDsKKy0JfQorLQorLSAgICAgIHN0cGNweSAoc3RwY3B5IChzdHJjaHIgKGRpcm5hbWUsICdcMCcpLCAiLyIpLCBiaW5kaW5nLT5kaXJuYW1lKTsKKy0gICAgfQorLQorLSAgLyogTm93IGRldGVybWluZSB0aGUgc3ltYm9saWMgbmFtZSBvZiBDQVRFR09SWSBhbmQgaXRzIHZhbHVlLiAgKi8KKy0gIGNhdGVnb3J5bmFtZSA9IGNhdGVnb3J5X3RvX25hbWUgKGNhdGVnb3J5KTsKKy0gIGNhdGVnb3J5dmFsdWUgPSBndWVzc19jYXRlZ29yeV92YWx1ZSAoY2F0ZWdvcnksIGNhdGVnb3J5bmFtZSk7CistCistICB4ZG9tYWlubmFtZSA9IChjaGFyICopIGFsbG9jYSAoc3RybGVuIChjYXRlZ29yeW5hbWUpCistCQkJCSArIHN0cmxlbiAoZG9tYWlubmFtZSkgKyA1KTsKKy0gIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgeGRvbWFpbm5hbWUpOworLQorLSAgc3RwY3B5IChzdHBjcHkgKHN0cGNweSAoc3RwY3B5ICh4ZG9tYWlubmFtZSwgY2F0ZWdvcnluYW1lKSwgIi8iKSwKKy0JCSAgZG9tYWlubmFtZSksCistCSAgIi5tbyIpOworLQorLSAgLyogQ3JlYXRpbmcgd29ya2luZyBhcmVhLiAgKi8KKy0gIHNpbmdsZV9sb2NhbGUgPSAoY2hhciAqKSBhbGxvY2EgKHN0cmxlbiAoY2F0ZWdvcnl2YWx1ZSkgKyAxKTsKKy0gIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgc2luZ2xlX2xvY2FsZSk7CistCistCistICAvKiBTZWFyY2ggZm9yIHRoZSBnaXZlbiBzdHJpbmcuICBUaGlzIGlzIGEgbG9vcCBiZWNhdXNlIHdlIHBlcmhhcHMKKy0gICAgIGdvdCBhbiBvcmRlcmVkIGxpc3Qgb2YgbGFuZ3VhZ2VzIHRvIGNvbnNpZGVyIGZvciB0aCB0cmFuc2xhdGlvbi4gICovCistICB3aGlsZSAoMSkKKy0gICAgeworLSAgICAgIC8qIE1ha2UgQ0FURUdPUllWQUxVRSBwb2ludCB0byB0aGUgbmV4dCBlbGVtZW50IG9mIHRoZSBsaXN0LiAgKi8KKy0gICAgICB3aGlsZSAoY2F0ZWdvcnl2YWx1ZVswXSAhPSAnXDAnICYmIGNhdGVnb3J5dmFsdWVbMF0gPT0gJzonKQorLQkrK2NhdGVnb3J5dmFsdWU7CistICAgICAgaWYgKGNhdGVnb3J5dmFsdWVbMF0gPT0gJ1wwJykKKy0JeworLQkgIC8qIFRoZSB3aG9sZSBjb250ZW50cyBvZiBDQVRFR09SWVZBTFVFIGhhcyBiZWVuIHNlYXJjaGVkIGJ1dAorLQkgICAgIG5vIHZhbGlkIGVudHJ5IGhhcyBiZWVuIGZvdW5kLiAgV2Ugc29sdmUgdGhpcyBzaXR1YXRpb24KKy0JICAgICBieSBpbXBsaWNpdGx5IGFwcGVuZGluZyBhICJDIiBlbnRyeSwgaS5lLiBubyB0cmFuc2xhdGlvbgorLQkgICAgIHdpbGwgdGFrZSBwbGFjZS4gICovCistCSAgc2luZ2xlX2xvY2FsZVswXSA9ICdDJzsKKy0JICBzaW5nbGVfbG9jYWxlWzFdID0gJ1wwJzsKKy0JfQorLSAgICAgIGVsc2UKKy0JeworLQkgIGNoYXIgKmNwID0gc2luZ2xlX2xvY2FsZTsKKy0JICB3aGlsZSAoY2F0ZWdvcnl2YWx1ZVswXSAhPSAnXDAnICYmIGNhdGVnb3J5dmFsdWVbMF0gIT0gJzonKQorLQkgICAgKmNwKysgPSAqY2F0ZWdvcnl2YWx1ZSsrOworLQkgICpjcCA9ICdcMCc7CistCX0KKy0KKy0gICAgICAvKiBJZiB0aGUgY3VycmVudCBsb2NhbGUgdmFsdWUgaXMgQyAob3IgUE9TSVgpIHdlIGRvbid0IGxvYWQgYQorLQkgZG9tYWluLiAgUmV0dXJuIHRoZSBNU0dJRC4gICovCistICAgICAgaWYgKHN0cmNtcCAoc2luZ2xlX2xvY2FsZSwgIkMiKSA9PSAwCistCSAgfHwgc3RyY21wIChzaW5nbGVfbG9jYWxlLCAiUE9TSVgiKSA9PSAwKQorLQl7CistCSAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOworLQkgIF9fc2V0X2Vycm5vIChzYXZlZF9lcnJubyk7CistCSAgcmV0dXJuIChjaGFyICopIG1zZ2lkOworLQl9CistCistCistICAgICAgLyogRmluZCBzdHJ1Y3R1cmUgZGVzY3JpYmluZyB0aGUgbWVzc2FnZSBjYXRhbG9nIG1hdGNoaW5nIHRoZQorLQkgRE9NQUlOTkFNRSBhbmQgQ0FURUdPUlkuICAqLworLSAgICAgIGRvbWFpbiA9IF9ubF9maW5kX2RvbWFpbiAoZGlybmFtZSwgc2luZ2xlX2xvY2FsZSwgeGRvbWFpbm5hbWUpOworLQorLSAgICAgIGlmIChkb21haW4gIT0gTlVMTCkKKy0JeworLQkgIHJldHZhbCA9IGZpbmRfbXNnIChkb21haW4sIG1zZ2lkKTsKKy0KKy0JICBpZiAocmV0dmFsID09IE5VTEwpCistCSAgICB7CistCSAgICAgIGludCBjbnQ7CistCistCSAgICAgIGZvciAoY250ID0gMDsgZG9tYWluLT5zdWNjZXNzb3JbY250XSAhPSBOVUxMOyArK2NudCkKKy0JCXsKKy0JCSAgcmV0dmFsID0gZmluZF9tc2cgKGRvbWFpbi0+c3VjY2Vzc29yW2NudF0sIG1zZ2lkKTsKKy0KKy0JCSAgaWYgKHJldHZhbCAhPSBOVUxMKQorLQkJICAgIGJyZWFrOworLQkJfQorLQkgICAgfQorLQorLQkgIGlmIChyZXR2YWwgIT0gTlVMTCkKKy0JICAgIHsKKy0JICAgICAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOworLQkgICAgICBfX3NldF9lcnJubyAoc2F2ZWRfZXJybm8pOworLQkgICAgICByZXR1cm4gcmV0dmFsOworLQkgICAgfQorLQl9CistICAgIH0KKy0gIC8qIE5PVFJFQUNIRUQgKi8KKy19CistCistI2lmZGVmIF9MSUJDCistLyogQWxpYXMgZm9yIGZ1bmN0aW9uIG5hbWUgaW4gR05VIEMgTGlicmFyeS4gICovCistd2Vha19hbGlhcyAoX19kY2dldHRleHQsIGRjZ2V0dGV4dCk7CistI2VuZGlmCistCistCistc3RhdGljIGNoYXIgKgorLWZpbmRfbXNnIChkb21haW5fZmlsZSwgbXNnaWQpCistICAgICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW5fZmlsZTsKKy0gICAgIGNvbnN0IGNoYXIgKm1zZ2lkOworLXsKKy0gIHNpemVfdCB0b3AsIGFjdCwgYm90dG9tOworLSAgc3RydWN0IGxvYWRlZF9kb21haW4gKmRvbWFpbjsKKy0KKy0gIGlmIChkb21haW5fZmlsZS0+ZGVjaWRlZCA9PSAwKQorLSAgICBfbmxfbG9hZF9kb21haW4gKGRvbWFpbl9maWxlKTsKKy0KKy0gIGlmIChkb21haW5fZmlsZS0+ZGF0YSA9PSBOVUxMKQorLSAgICByZXR1cm4gTlVMTDsKKy0KKy0gIGRvbWFpbiA9IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqKSBkb21haW5fZmlsZS0+ZGF0YTsKKy0KKy0gIC8qIExvY2F0ZSB0aGUgTVNHSUQgYW5kIGl0cyB0cmFuc2xhdGlvbi4gICovCistICBpZiAoZG9tYWluLT5oYXNoX3NpemUgPiAyICYmIGRvbWFpbi0+aGFzaF90YWIgIT0gTlVMTCkKKy0gICAgeworLSAgICAgIC8qIFVzZSB0aGUgaGFzaGluZyB0YWJsZS4gICovCistICAgICAgbmxzX3VpbnQzMiBsZW4gPSBzdHJsZW4gKG1zZ2lkKTsKKy0gICAgICBubHNfdWludDMyIGhhc2hfdmFsID0gaGFzaF9zdHJpbmcgKG1zZ2lkKTsKKy0gICAgICBubHNfdWludDMyIGlkeCA9IGhhc2hfdmFsICUgZG9tYWluLT5oYXNoX3NpemU7CistICAgICAgbmxzX3VpbnQzMiBpbmNyID0gMSArIChoYXNoX3ZhbCAlIChkb21haW4tPmhhc2hfc2l6ZSAtIDIpKTsKKy0gICAgICBubHNfdWludDMyIG5zdHIgPSBXIChkb21haW4tPm11c3Rfc3dhcCwgZG9tYWluLT5oYXNoX3RhYltpZHhdKTsKKy0KKy0gICAgICBpZiAobnN0ciA9PSAwKQorLQkvKiBIYXNoIHRhYmxlIGVudHJ5IGlzIGVtcHR5LiAgKi8KKy0JcmV0dXJuIE5VTEw7CistCistICAgICAgaWYgKFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkb21haW4tPm9yaWdfdGFiW25zdHIgLSAxXS5sZW5ndGgpID09IGxlbgorLQkgICYmIHN0cmNtcCAobXNnaWQsCistCQkgICAgIGRvbWFpbi0+ZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAorLQkJCQkgICAgICAgZG9tYWluLT5vcmlnX3RhYltuc3RyIC0gMV0ub2Zmc2V0KSkgPT0gMCkKKy0JcmV0dXJuIChjaGFyICopIGRvbWFpbi0+ZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAorLQkJCQkJICBkb21haW4tPnRyYW5zX3RhYltuc3RyIC0gMV0ub2Zmc2V0KTsKKy0KKy0gICAgICB3aGlsZSAoMSkKKy0JeworLQkgIGlmIChpZHggPj0gZG9tYWluLT5oYXNoX3NpemUgLSBpbmNyKQorLQkgICAgaWR4IC09IGRvbWFpbi0+aGFzaF9zaXplIC0gaW5jcjsKKy0JICBlbHNlCistCSAgICBpZHggKz0gaW5jcjsKKy0KKy0JICBuc3RyID0gVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRvbWFpbi0+aGFzaF90YWJbaWR4XSk7CistCSAgaWYgKG5zdHIgPT0gMCkKKy0JICAgIC8qIEhhc2ggdGFibGUgZW50cnkgaXMgZW1wdHkuICAqLworLQkgICAgcmV0dXJuIE5VTEw7CistCistCSAgaWYgKFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkb21haW4tPm9yaWdfdGFiW25zdHIgLSAxXS5sZW5ndGgpID09IGxlbgorLQkgICAgICAmJiBzdHJjbXAgKG1zZ2lkLAorLQkJCSBkb21haW4tPmRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKKy0JCQkJCSAgIGRvbWFpbi0+b3JpZ190YWJbbnN0ciAtIDFdLm9mZnNldCkpCistCSAgICAgICAgID09IDApCistCSAgICByZXR1cm4gKGNoYXIgKikgZG9tYWluLT5kYXRhCistCSAgICAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRvbWFpbi0+dHJhbnNfdGFiW25zdHIgLSAxXS5vZmZzZXQpOworLQl9CistICAgICAgLyogTk9UUkVBQ0hFRCAqLworLSAgICB9CistCistICAvKiBOb3cgd2UgdHJ5IHRoZSBkZWZhdWx0IG1ldGhvZDogIGJpbmFyeSBzZWFyY2ggaW4gdGhlIHNvcnRlZAorLSAgICAgYXJyYXkgb2YgbWVzc2FnZXMuICAqLworLSAgYm90dG9tID0gMDsKKy0gIHRvcCA9IGRvbWFpbi0+bnN0cmluZ3M7CistICB3aGlsZSAoYm90dG9tIDwgdG9wKQorLSAgICB7CistICAgICAgaW50IGNtcF92YWw7CistCistICAgICAgYWN0ID0gKGJvdHRvbSArIHRvcCkgLyAyOworLSAgICAgIGNtcF92YWwgPSBzdHJjbXAgKG1zZ2lkLCBkb21haW4tPmRhdGEKKy0JCQkgICAgICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKKy0JCQkJICAgIGRvbWFpbi0+b3JpZ190YWJbYWN0XS5vZmZzZXQpKTsKKy0gICAgICBpZiAoY21wX3ZhbCA8IDApCistCXRvcCA9IGFjdDsKKy0gICAgICBlbHNlIGlmIChjbXBfdmFsID4gMCkKKy0JYm90dG9tID0gYWN0ICsgMTsKKy0gICAgICBlbHNlCistCWJyZWFrOworLSAgICB9CistCistICAvKiBJZiBhbiB0cmFuc2xhdGlvbiBpcyBmb3VuZCByZXR1cm4gdGhpcy4gICovCistICByZXR1cm4gYm90dG9tID49IHRvcCA/IE5VTEwgOiAoY2hhciAqKSBkb21haW4tPmRhdGEKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCistCQkJCSAgICAgZG9tYWluLT50cmFuc190YWJbYWN0XS5vZmZzZXQpOworLX0KKy0KKy0KKy0vKiBSZXR1cm4gc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIGxvY2FsZSBDQVRFR09SWS4gICovCistc3RhdGljIGNvbnN0IGNoYXIgKgorLWNhdGVnb3J5X3RvX25hbWUgKGNhdGVnb3J5KQorLSAgICAgaW50IGNhdGVnb3J5OworLXsKKy0gIGNvbnN0IGNoYXIgKnJldHZhbDsKKy0KKy0gIHN3aXRjaCAoY2F0ZWdvcnkpCistICB7CistI2lmZGVmIExDX0NPTExBVEUKKy0gIGNhc2UgTENfQ09MTEFURToKKy0gICAgcmV0dmFsID0gIkxDX0NPTExBVEUiOworLSAgICBicmVhazsKKy0jZW5kaWYKKy0jaWZkZWYgTENfQ1RZUEUKKy0gIGNhc2UgTENfQ1RZUEU6CistICAgIHJldHZhbCA9ICJMQ19DVFlQRSI7CistICAgIGJyZWFrOworLSNlbmRpZgorLSNpZmRlZiBMQ19NT05FVEFSWQorLSAgY2FzZSBMQ19NT05FVEFSWToKKy0gICAgcmV0dmFsID0gIkxDX01PTkVUQVJZIjsKKy0gICAgYnJlYWs7CistI2VuZGlmCistI2lmZGVmIExDX05VTUVSSUMKKy0gIGNhc2UgTENfTlVNRVJJQzoKKy0gICAgcmV0dmFsID0gIkxDX05VTUVSSUMiOworLSAgICBicmVhazsKKy0jZW5kaWYKKy0jaWZkZWYgTENfVElNRQorLSAgY2FzZSBMQ19USU1FOgorLSAgICByZXR2YWwgPSAiTENfVElNRSI7CistICAgIGJyZWFrOworLSNlbmRpZgorLSNpZmRlZiBMQ19NRVNTQUdFUworLSAgY2FzZSBMQ19NRVNTQUdFUzoKKy0gICAgcmV0dmFsID0gIkxDX01FU1NBR0VTIjsKKy0gICAgYnJlYWs7CistI2VuZGlmCistI2lmZGVmIExDX1JFU1BPTlNFCistICBjYXNlIExDX1JFU1BPTlNFOgorLSAgICByZXR2YWwgPSAiTENfUkVTUE9OU0UiOworLSAgICBicmVhazsKKy0jZW5kaWYKKy0jaWZkZWYgTENfQUxMCistICBjYXNlIExDX0FMTDoKKy0gICAgLyogVGhpcyBtaWdodCBub3QgbWFrZSBzZW5zZSBidXQgaXMgcGVyaGFwcyBiZXR0ZXIgdGhhbiBhbnkgb3RoZXIKKy0gICAgICAgdmFsdWUuICAqLworLSAgICByZXR2YWwgPSAiTENfQUxMIjsKKy0gICAgYnJlYWs7CistI2VuZGlmCistICBkZWZhdWx0OgorLSAgICAvKiBJZiB5b3UgaGF2ZSBhIGJldHRlciBpZGVhIGZvciBhIGRlZmF1bHQgdmFsdWUgbGV0IG1lIGtub3cuICAqLworLSAgICByZXR2YWwgPSAiTENfWFhYIjsKKy0gIH0KKy0KKy0gIHJldHVybiByZXR2YWw7CistfQorLQorLS8qIEd1ZXNzIHZhbHVlIG9mIGN1cnJlbnQgbG9jYWxlIGZyb20gdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy4gICovCistc3RhdGljIGNvbnN0IGNoYXIgKgorLWd1ZXNzX2NhdGVnb3J5X3ZhbHVlIChjYXRlZ29yeSwgY2F0ZWdvcnluYW1lKQorLSAgICAgaW50IGNhdGVnb3J5OworLSAgICAgY29uc3QgY2hhciAqY2F0ZWdvcnluYW1lOworLXsKKy0gIGNvbnN0IGNoYXIgKnJldHZhbDsKKy0KKy0gIC8qIFRoZSBoaWdoZXN0IHByaW9yaXR5IHZhbHVlIGlzIHRoZSBgTEFOR1VBR0UnIGVudmlyb25tZW50CistICAgICB2YXJpYWJsZS4gIFRoaXMgaXMgYSBHTlUgZXh0ZW5zaW9uLiAgKi8KKy0gIHJldHZhbCA9IGdldGVudiAoIkxBTkdVQUdFIik7CistICBpZiAocmV0dmFsICE9IE5VTEwgJiYgcmV0dmFsWzBdICE9ICdcMCcpCistICAgIHJldHVybiByZXR2YWw7CistCistICAvKiBgTEFOR1VBR0UnIGlzIG5vdCBzZXQuICBTbyB3ZSBoYXZlIHRvIHByb2NlZWQgd2l0aCB0aGUgUE9TSVgKKy0gICAgIG1ldGhvZHMgb2YgbG9va2luZyB0byBgTENfQUxMJywgYExDX3h4eCcsIGFuZCBgTEFORycuICBPbiBzb21lCistICAgICBzeXN0ZW1zIHRoaXMgY2FuIGJlIGRvbmUgYnkgdGhlIGBzZXRsb2NhbGUnIGZ1bmN0aW9uIGl0c2VsZi4gICovCistI2lmIGRlZmluZWQgSEFWRV9TRVRMT0NBTEUgJiYgZGVmaW5lZCBIQVZFX0xDX01FU1NBR0VTICYmIGRlZmluZWQgSEFWRV9MT0NBTEVfTlVMTAorLSAgcmV0dXJuIHNldGxvY2FsZSAoY2F0ZWdvcnksIE5VTEwpOworLSNlbHNlCistICAvKiBTZXR0aW5nIG9mIExDX0FMTCBvdmVyd3JpdGVzIGFsbCBvdGhlci4gICovCistICByZXR2YWwgPSBnZXRlbnYgKCJMQ19BTEwiKTsKKy0gIGlmIChyZXR2YWwgIT0gTlVMTCAmJiByZXR2YWxbMF0gIT0gJ1wwJykKKy0gICAgcmV0dXJuIHJldHZhbDsKKy0KKy0gIC8qIE5leHQgY29tZXMgdGhlIG5hbWUgb2YgdGhlIGRlc2lyZWQgY2F0ZWdvcnkuICAqLworLSAgcmV0dmFsID0gZ2V0ZW52IChjYXRlZ29yeW5hbWUpOworLSAgaWYgKHJldHZhbCAhPSBOVUxMICYmIHJldHZhbFswXSAhPSAnXDAnKQorLSAgICByZXR1cm4gcmV0dmFsOworLQorLSAgLyogTGFzdCBwb3NzaWJpbGl0eSBpcyB0aGUgTEFORyBlbnZpcm9ubWVudCB2YXJpYWJsZS4gICovCistICByZXR2YWwgPSBnZXRlbnYgKCJMQU5HIik7CistICBpZiAocmV0dmFsICE9IE5VTEwgJiYgcmV0dmFsWzBdICE9ICdcMCcpCistICAgIHJldHVybiByZXR2YWw7CistCistICAvKiBXZSB1c2UgQyBhcyB0aGUgZGVmYXVsdCBkb21haW4uICBQT1NJWCBzYXlzIHRoaXMgaXMgaW1wbGVtZW50YXRpb24KKy0gICAgIGRlZmluZWQuICAqLworLSAgcmV0dXJuICJDIjsKKy0jZW5kaWYKKy19CistCistLyogQEAgYmVnaW4gb2YgZXBpbG9nIEBAICovCistCistLyogV2UgZG9uJ3Qgd2FudCBsaWJpbnRsLmEgdG8gZGVwZW5kIG9uIGFueSBvdGhlciBsaWJyYXJ5LiAgU28gd2UKKy0gICBhdm9pZCB0aGUgbm9uLXN0YW5kYXJkIGZ1bmN0aW9uIHN0cGNweS4gIEluIEdOVSBDIExpYnJhcnkgdGhpcworLSAgIGZ1bmN0aW9uIGlzIGF2YWlsYWJsZSwgdGhvdWdoLiAgQWxzbyBhbGxvdyB0aGUgc3ltYm9sIEhBVkVfU1RQQ1BZCistICAgdG8gYmUgZGVmaW5lZC4gICovCistI2lmICFfTElCQyAmJiAhSEFWRV9TVFBDUFkKKy1zdGF0aWMgY2hhciAqCistc3RwY3B5IChkZXN0LCBzcmMpCistICAgICBjaGFyICpkZXN0OworLSAgICAgY29uc3QgY2hhciAqc3JjOworLXsKKy0gIHdoaWxlICgoKmRlc3QrKyA9ICpzcmMrKykgIT0gJ1wwJykKKy0gICAgLyogRG8gbm90aGluZy4gKi8gOworLSAgcmV0dXJuIGRlc3QgLSAxOworLX0KKy0jZW5kaWYKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2RnZXR0ZXh0LmMgbHJ6c3otMC4xMi4yMC9pbnRsL2RnZXR0ZXh0LmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZGdldHRleHQuYwkxOTk4LTA0LTI2IDE0OjIwOjUyLjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9kZ2V0dGV4dC5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSw1OSArMCwwIEBACistLyogZGdldHRleHQuYyAtLSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGdldHRleHQoMykgZnVuY3Rpb24KKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLQorLVRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy10aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistYW55IGxhdGVyIHZlcnNpb24uCistCistVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy1NRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy1Zb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLWFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmZGVmIEhBVkVfQ09ORklHX0gKKy0jIGluY2x1ZGUgPGNvbmZpZy5oPgorLSNlbmRpZgorLQorLSNpZiBkZWZpbmVkIEhBVkVfTE9DQUxFX0ggfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8bG9jYWxlLmg+CistI2VuZGlmCistCistI2lmZGVmIF9MSUJDCistIyBpbmNsdWRlIDxsaWJpbnRsLmg+CistI2Vsc2UKKy0jIGluY2x1ZGUgImxpYmdldHRleHQuaCIKKy0jZW5kaWYKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhleSBtdXN0IG5vdCBjbGFzaAorLSAgIHdpdGggZXhpc3RpbmcgbmFtZXMgYW5kIHRoZXkgc2hvdWxkIGZvbGxvdyBBTlNJIEMuICBCdXQgdGhpcyBzb3VyY2UKKy0gICBjb2RlIGlzIGFsc28gdXNlZCBpbiBHTlUgQyBMaWJyYXJ5IHdoZXJlIHRoZSBuYW1lcyBoYXZlIGEgX18KKy0gICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLworLSNpZmRlZiBfTElCQworLSMgZGVmaW5lIERHRVRURVhUIF9fZGdldHRleHQKKy0jIGRlZmluZSBEQ0dFVFRFWFQgX19kY2dldHRleHQKKy0jZWxzZQorLSMgZGVmaW5lIERHRVRURVhUIGRnZXR0ZXh0X18KKy0jIGRlZmluZSBEQ0dFVFRFWFQgZGNnZXR0ZXh0X18KKy0jZW5kaWYKKy0KKy0vKiBMb29rIHVwIE1TR0lEIGluIHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyBvZiB0aGUgY3VycmVudAorLSAgIExDX01FU1NBR0VTIGxvY2FsZS4gICovCistY2hhciAqCistREdFVFRFWFQgKGRvbWFpbm5hbWUsIG1zZ2lkKQorLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKKy0gICAgIGNvbnN0IGNoYXIgKm1zZ2lkOworLXsKKy0gIHJldHVybiBEQ0dFVFRFWFQgKGRvbWFpbm5hbWUsIG1zZ2lkLCBMQ19NRVNTQUdFUyk7CistfQorLQorLSNpZmRlZiBfTElCQworLS8qIEFsaWFzIGZvciBmdW5jdGlvbiBuYW1lIGluIEdOVSBDIExpYnJhcnkuICAqLworLXdlYWtfYWxpYXMgKF9fZGdldHRleHQsIGRnZXR0ZXh0KTsKKy0jZW5kaWYKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2V4cGxvZGVuYW1lLmMgbHJ6c3otMC4xMi4yMC9pbnRsL2V4cGxvZGVuYW1lLmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZXhwbG9kZW5hbWUuYwkxOTk4LTA0LTI2IDE0OjIyOjM3LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9leHBsb2RlbmFtZS5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwxODEgKzAsMCBAQAorLS8qIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0gICBDb250cmlidXRlZCBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCistCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZkZWYgSEFWRV9DT05GSUdfSAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCistI2luY2x1ZGUgPHN0ZGxpYi5oPgorLSNpbmNsdWRlIDxzdHJpbmcuaD4KKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistCistI2luY2x1ZGUgImxvYWRpbmZvLmgiCistCistLyogT24gc29tZSBzdHJhbmdlIHN5c3RlbXMgc3RpbGwgbm8gZGVmaW5pdGlvbiBvZiBOVUxMIGlzIGZvdW5kLiAgU2lnaCEgICovCistI2lmbmRlZiBOVUxMCistIyBpZiBkZWZpbmVkIF9fU1REQ19fICYmIF9fU1REQ19fCistIyAgZGVmaW5lIE5VTEwgKCh2b2lkICopIDApCistIyBlbHNlCistIyAgZGVmaW5lIE5VTEwgMAorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistaW50CistX25sX2V4cGxvZGVfbmFtZSAobmFtZSwgbGFuZ3VhZ2UsIG1vZGlmaWVyLCB0ZXJyaXRvcnksIGNvZGVzZXQsCistCQkgIG5vcm1hbGl6ZWRfY29kZXNldCwgc3BlY2lhbCwgc3BvbnNvciwgcmV2aXNpb24pCistICAgICBjaGFyICpuYW1lOworLSAgICAgY29uc3QgY2hhciAqKmxhbmd1YWdlOworLSAgICAgY29uc3QgY2hhciAqKm1vZGlmaWVyOworLSAgICAgY29uc3QgY2hhciAqKnRlcnJpdG9yeTsKKy0gICAgIGNvbnN0IGNoYXIgKipjb2Rlc2V0OworLSAgICAgY29uc3QgY2hhciAqKm5vcm1hbGl6ZWRfY29kZXNldDsKKy0gICAgIGNvbnN0IGNoYXIgKipzcGVjaWFsOworLSAgICAgY29uc3QgY2hhciAqKnNwb25zb3I7CistICAgICBjb25zdCBjaGFyICoqcmV2aXNpb247CisteworLSAgZW51bSB7IHVuZGVjaWRlZCwgeHBnLCBjZW4gfSBzeW50YXg7CistICBjaGFyICpjcDsKKy0gIGludCBtYXNrOworLQorLSAgKm1vZGlmaWVyID0gTlVMTDsKKy0gICp0ZXJyaXRvcnkgPSBOVUxMOworLSAgKmNvZGVzZXQgPSBOVUxMOworLSAgKm5vcm1hbGl6ZWRfY29kZXNldCA9IE5VTEw7CistICAqc3BlY2lhbCA9IE5VTEw7CistICAqc3BvbnNvciA9IE5VTEw7CistICAqcmV2aXNpb24gPSBOVUxMOworLQorLSAgLyogTm93IHdlIGRldGVybWluZSB0aGUgc2luZ2xlIHBhcnRzIG9mIHRoZSBsb2NhbGUgbmFtZS4gIEZpcnN0CistICAgICBsb29rIGZvciB0aGUgbGFuZ3VhZ2UuICBUZXJtaW5hdGlvbiBzeW1ib2xzIGFyZSBgXycgYW5kIGBAJyBpZgorLSAgICAgd2UgdXNlIFhQRzQgc3R5bGUsIGFuZCBgXycsIGArJywgYW5kIGAsJyBpZiB3ZSB1c2UgQ0VOIHN5bnRheC4gICovCistICBtYXNrID0gMDsKKy0gIHN5bnRheCA9IHVuZGVjaWRlZDsKKy0gICpsYW5ndWFnZSA9IGNwID0gbmFtZTsKKy0gIHdoaWxlIChjcFswXSAhPSAnXDAnICYmIGNwWzBdICE9ICdfJyAmJiBjcFswXSAhPSAnQCcKKy0JICYmIGNwWzBdICE9ICcrJyAmJiBjcFswXSAhPSAnLCcpCistICAgICsrY3A7CistCistICBpZiAoKmxhbmd1YWdlID09IGNwKQorLSAgICAvKiBUaGlzIGRvZXMgbm90IG1ha2Ugc2Vuc2U6IGxhbmd1YWdlIGhhcyB0byBiZSBzcGVjaWZpZWQuICBVc2UKKy0gICAgICAgdGhpcyBlbnRyeSBhcyBpdCBpcyB3aXRob3V0IGV4cGxvZGluZy4gIFBlcmhhcHMgaXQgaXMgYW4gYWxpYXMuICAqLworLSAgICBjcCA9IHN0cmNociAoKmxhbmd1YWdlLCAnXDAnKTsKKy0gIGVsc2UgaWYgKGNwWzBdID09ICdfJykKKy0gICAgeworLSAgICAgIC8qIE5leHQgaXMgdGhlIHRlcnJpdG9yeS4gICovCistICAgICAgY3BbMF0gPSAnXDAnOworLSAgICAgICp0ZXJyaXRvcnkgPSArK2NwOworLQorLSAgICAgIHdoaWxlIChjcFswXSAhPSAnXDAnICYmIGNwWzBdICE9ICcuJyAmJiBjcFswXSAhPSAnQCcKKy0JICAgICAmJiBjcFswXSAhPSAnKycgJiYgY3BbMF0gIT0gJywnICYmIGNwWzBdICE9ICdfJykKKy0JKytjcDsKKy0KKy0gICAgICBtYXNrIHw9IFRFUlJJVE9SWTsKKy0KKy0gICAgICBpZiAoY3BbMF0gPT0gJy4nKQorLQl7CistCSAgLyogTmV4dCBpcyB0aGUgY29kZXNldC4gICovCistCSAgc3ludGF4ID0geHBnOworLQkgIGNwWzBdID0gJ1wwJzsKKy0JICAqY29kZXNldCA9ICsrY3A7CistCistCSAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgY3BbMF0gIT0gJ0AnKQorLQkgICAgKytjcDsKKy0KKy0JICBtYXNrIHw9IFhQR19DT0RFU0VUOworLQorLQkgIGlmICgqY29kZXNldCAhPSBjcCAmJiAoKmNvZGVzZXQpWzBdICE9ICdcMCcpCistCSAgICB7CistCSAgICAgICpub3JtYWxpemVkX2NvZGVzZXQgPSBfbmxfbm9ybWFsaXplX2NvZGVzZXQgKCpjb2Rlc2V0LAorLQkJCQkJCQkgICBjcCAtICpjb2Rlc2V0KTsKKy0JICAgICAgaWYgKHN0cmNtcCAoKmNvZGVzZXQsICpub3JtYWxpemVkX2NvZGVzZXQpID09IDApCistCQlmcmVlICgoY2hhciAqKSAqbm9ybWFsaXplZF9jb2Rlc2V0KTsKKy0JICAgICAgZWxzZQorLQkJbWFzayB8PSBYUEdfTk9STV9DT0RFU0VUOworLQkgICAgfQorLQl9CistICAgIH0KKy0KKy0gIGlmIChjcFswXSA9PSAnQCcgfHwgKHN5bnRheCAhPSB4cGcgJiYgY3BbMF0gPT0gJysnKSkKKy0gICAgeworLSAgICAgIC8qIE5leHQgaXMgdGhlIG1vZGlmaWVyLiAgKi8KKy0gICAgICBzeW50YXggPSBjcFswXSA9PSAnQCcgPyB4cGcgOiBjZW47CistICAgICAgY3BbMF0gPSAnXDAnOworLSAgICAgICptb2RpZmllciA9ICsrY3A7CistCistICAgICAgd2hpbGUgKHN5bnRheCA9PSBjZW4gJiYgY3BbMF0gIT0gJ1wwJyAmJiBjcFswXSAhPSAnKycKKy0JICAgICAmJiBjcFswXSAhPSAnLCcgJiYgY3BbMF0gIT0gJ18nKQorLQkrK2NwOworLQorLSAgICAgIG1hc2sgfD0gWFBHX01PRElGSUVSIHwgQ0VOX0FVRElFTkNFOworLSAgICB9CistCistICBpZiAoc3ludGF4ICE9IHhwZyAmJiAoY3BbMF0gPT0gJysnIHx8IGNwWzBdID09ICcsJyB8fCBjcFswXSA9PSAnXycpKQorLSAgICB7CistICAgICAgc3ludGF4ID0gY2VuOworLQorLSAgICAgIGlmIChjcFswXSA9PSAnKycpCistCXsKKy0gCSAgLyogTmV4dCBpcyBzcGVjaWFsIGFwcGxpY2F0aW9uIChDRU4gc3ludGF4KS4gICovCistCSAgY3BbMF0gPSAnXDAnOworLQkgICpzcGVjaWFsID0gKytjcDsKKy0KKy0JICB3aGlsZSAoY3BbMF0gIT0gJ1wwJyAmJiBjcFswXSAhPSAnLCcgJiYgY3BbMF0gIT0gJ18nKQorLQkgICAgKytjcDsKKy0KKy0JICBtYXNrIHw9IENFTl9TUEVDSUFMOworLQl9CistCistICAgICAgaWYgKGNwWzBdID09ICcsJykKKy0JeworLSAJICAvKiBOZXh0IGlzIHNwb25zb3IgKENFTiBzeW50YXgpLiAgKi8KKy0JICBjcFswXSA9ICdcMCc7CistCSAgKnNwb25zb3IgPSArK2NwOworLQorLQkgIHdoaWxlIChjcFswXSAhPSAnXDAnICYmIGNwWzBdICE9ICdfJykKKy0JICAgICsrY3A7CistCistCSAgbWFzayB8PSBDRU5fU1BPTlNPUjsKKy0JfQorLQorLSAgICAgIGlmIChjcFswXSA9PSAnXycpCistCXsKKy0gCSAgLyogTmV4dCBpcyByZXZpc2lvbiAoQ0VOIHN5bnRheCkuICAqLworLQkgIGNwWzBdID0gJ1wwJzsKKy0JICAqcmV2aXNpb24gPSArK2NwOworLQorLQkgIG1hc2sgfD0gQ0VOX1JFVklTSU9OOworLQl9CistICAgIH0KKy0KKy0gIC8qIEZvciBDRU4gc3ludGF4IHZhbHVlcyBpdCBtaWdodCBiZSBpbXBvcnRhbnQgdG8gaGF2ZSB0aGUKKy0gICAgIHNlcGFyYXRvciBjaGFyYWN0ZXIgaW4gdGhlIGZpbGUgbmFtZSwgbm90IGZvciBYUEcgc3ludGF4LiAgKi8KKy0gIGlmIChzeW50YXggPT0geHBnKQorLSAgICB7CistICAgICAgaWYgKCp0ZXJyaXRvcnkgIT0gTlVMTCAmJiAoKnRlcnJpdG9yeSlbMF0gPT0gJ1wwJykKKy0JbWFzayAmPSB+VEVSUklUT1JZOworLQorLSAgICAgIGlmICgqY29kZXNldCAhPSBOVUxMICYmICgqY29kZXNldClbMF0gPT0gJ1wwJykKKy0JbWFzayAmPSB+WFBHX0NPREVTRVQ7CistCistICAgICAgaWYgKCptb2RpZmllciAhPSBOVUxMICYmICgqbW9kaWZpZXIpWzBdID09ICdcMCcpCistCW1hc2sgJj0gflhQR19NT0RJRklFUjsKKy0gICAgfQorLQorLSAgcmV0dXJuIG1hc2s7CistfQorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZmluZGRvbWFpbi5jIGxyenN6LTAuMTIuMjAvaW50bC9maW5kZG9tYWluLmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZmluZGRvbWFpbi5jCTE5OTgtMDQtMjYgMTQ6MjI6MzYuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2ZpbmRkb21haW4uYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMTg5ICswLDAgQEAKKy0vKiBIYW5kbGUgbGlzdCBvZiBuZWVkZWQgbWVzc2FnZSBjYXRhbG9ncworLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0gICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLSNpZmRlZiBIQVZFX0NPTkZJR19ICistIyBpbmNsdWRlIDxjb25maWcuaD4KKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSA8Y3R5cGUuaD4KKy0jaW5jbHVkZSA8ZXJybm8uaD4KKy0jaW5jbHVkZSA8c3RkaW8uaD4KKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistCistI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHN0ZGxpYi5oPgorLSNlbHNlCistIyBpZmRlZiBIQVZFX01BTExPQ19ICistIyAgaW5jbHVkZSA8bWFsbG9jLmg+CistIyBlbHNlCistdm9pZCBmcmVlICgpOworLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWYgZGVmaW5lZCBIQVZFX1NUUklOR19IIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHN0cmluZy5oPgorLSNlbHNlCistIyBpbmNsdWRlIDxzdHJpbmdzLmg+CistIyBpZm5kZWYgbWVtY3B5CistIyAgZGVmaW5lIG1lbWNweShEc3QsIFNyYywgTnVtKSBiY29weSAoU3JjLCBEc3QsIE51bSkKKy0jIGVuZGlmCistI2VuZGlmCistI2lmICFIQVZFX1NUUkNIUiAmJiAhZGVmaW5lZCBfTElCQworLSMgaWZuZGVmIHN0cmNocgorLSMgIGRlZmluZSBzdHJjaHIgaW5kZXgKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmIGRlZmluZWQgSEFWRV9VTklTVERfSCB8fCBkZWZpbmVkIF9MSUJDCistIyBpbmNsdWRlIDx1bmlzdGQuaD4KKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSAiZ2V0dGV4dC5oIgorLSNpbmNsdWRlICJnZXR0ZXh0UC5oIgorLSNpZmRlZiBfTElCQworLSMgaW5jbHVkZSA8bGliaW50bC5oPgorLSNlbHNlCistIyBpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCistI2VuZGlmCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLS8qIExpc3Qgb2YgYWxyZWFkeSBsb2FkZWQgZG9tYWlucy4gICovCistc3RhdGljIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9ubF9sb2FkZWRfZG9tYWluczsKKy0KKy0KKy0vKiBSZXR1cm4gYSBkYXRhIHN0cnVjdHVyZSBkZXNjcmliaW5nIHRoZSBtZXNzYWdlIGNhdGFsb2cgZGVzY3JpYmVkIGJ5CistICAgdGhlIERPTUFJTk5BTUUgYW5kIENBVEVHT1JZIHBhcmFtZXRlcnMgd2l0aCByZXNwZWN0IHRvIHRoZSBjdXJyZW50bHkKKy0gICBlc3RhYmxpc2hlZCBiaW5kaW5ncy4gICovCistc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqCistX25sX2ZpbmRfZG9tYWluIChkaXJuYW1lLCBsb2NhbGUsIGRvbWFpbm5hbWUpCistICAgICBjb25zdCBjaGFyICpkaXJuYW1lOworLSAgICAgY2hhciAqbG9jYWxlOworLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKKy17CistICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpyZXR2YWw7CistICBjb25zdCBjaGFyICpsYW5ndWFnZTsKKy0gIGNvbnN0IGNoYXIgKm1vZGlmaWVyOworLSAgY29uc3QgY2hhciAqdGVycml0b3J5OworLSAgY29uc3QgY2hhciAqY29kZXNldDsKKy0gIGNvbnN0IGNoYXIgKm5vcm1hbGl6ZWRfY29kZXNldDsKKy0gIGNvbnN0IGNoYXIgKnNwZWNpYWw7CistICBjb25zdCBjaGFyICpzcG9uc29yOworLSAgY29uc3QgY2hhciAqcmV2aXNpb247CistICBjb25zdCBjaGFyICphbGlhc192YWx1ZTsKKy0gIGludCBtYXNrOworLQorLSAgLyogTE9DQUxFIGNhbiBjb25zaXN0IG9mIHVwIHRvIGZvdXIgcmVjb2duaXplZCBwYXJ0cyBmb3IgdGhlIFhQRyBzeW50YXg6CistCistCQlsYW5ndWFnZVtfdGVycml0b3J5Wy5jb2Rlc2V0XV1bQG1vZGlmaWVyXQorLQorLSAgICAgYW5kIHNpeCBwYXJ0cyBmb3IgdGhlIENFTiBzeW50YXg6CistCistCWxhbmd1YWdlW190ZXJyaXRvcnldWythdWRpZW5jZV1bK3NwZWNpYWxdWyxbc3BvbnNvcl1bX3JldmlzaW9uXV0KKy0KKy0gICAgIEJlc2lkZSB0aGUgZmlyc3QgYWxsIG9mIHRoZW0gYXJlIGFsbG93ZWQgdG8gYmUgbWlzc2luZy4gIElmIHRoZQorLSAgICAgZnVsbCBzcGVjaWZpZWQgbG9jYWxlIGlzIG5vdCBmb3VuZCwgdGhlIGxlc3Mgc3BlY2lmaWMgb25lIGFyZQorLSAgICAgbG9va2VkIGZvci4gIFRoZSB2YXJpb3VzIHBhcnQgd2lsbCBiZSBzdHJpcHBlZCBvZiBhY2NvcmRpbmcgdG8KKy0gICAgIHRoZSBmb2xsb3dpbmcgb3JkZXI6CistCQkoMSkgcmV2aXNpb24KKy0JCSgyKSBzcG9uc29yCistCQkoMykgc3BlY2lhbAorLQkJKDQpIGNvZGVzZXQKKy0JCSg1KSBub3JtYWxpemVkIGNvZGVzZXQKKy0JCSg2KSB0ZXJyaXRvcnkKKy0JCSg3KSBhdWRpZW5jZS9tb2RpZmllcgorLSAgICovCistCistICAvKiBJZiB3ZSBoYXZlIGFscmVhZHkgdGVzdGVkIGZvciB0aGlzIGxvY2FsZSBlbnRyeSB0aGVyZSBoYXMgdG8KKy0gICAgIGJlIG9uZSBkYXRhIHNldCBpbiB0aGUgbGlzdCBvZiBsb2FkZWQgZG9tYWlucy4gICovCistICByZXR2YWwgPSBfbmxfbWFrZV9sMTBuZmxpc3QgKCZfbmxfbG9hZGVkX2RvbWFpbnMsIGRpcm5hbWUsCistCQkJICAgICAgIHN0cmxlbiAoZGlybmFtZSkgKyAxLCAwLCBsb2NhbGUsIE5VTEwsIE5VTEwsCistCQkJICAgICAgIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIE5VTEwsIGRvbWFpbm5hbWUsIDApOworLSAgaWYgKHJldHZhbCAhPSBOVUxMKQorLSAgICB7CistICAgICAgLyogV2Uga25vdyBzb21ldGhpbmcgYWJvdXQgdGhpcyBsb2NhbGUuICAqLworLSAgICAgIGludCBjbnQ7CistCistICAgICAgaWYgKHJldHZhbC0+ZGVjaWRlZCA9PSAwKQorLQlfbmxfbG9hZF9kb21haW4gKHJldHZhbCk7CistCistICAgICAgaWYgKHJldHZhbC0+ZGF0YSAhPSBOVUxMKQorLQlyZXR1cm4gcmV0dmFsOworLQorLSAgICAgIGZvciAoY250ID0gMDsgcmV0dmFsLT5zdWNjZXNzb3JbY250XSAhPSBOVUxMOyArK2NudCkKKy0JeworLQkgIGlmIChyZXR2YWwtPnN1Y2Nlc3NvcltjbnRdLT5kZWNpZGVkID09IDApCistCSAgICBfbmxfbG9hZF9kb21haW4gKHJldHZhbC0+c3VjY2Vzc29yW2NudF0pOworLQorLQkgIGlmIChyZXR2YWwtPnN1Y2Nlc3NvcltjbnRdLT5kYXRhICE9IE5VTEwpCistCSAgICBicmVhazsKKy0JfQorLSAgICAgIHJldHVybiBjbnQgPj0gMCA/IHJldHZhbCA6IE5VTEw7CistICAgICAgLyogTk9UUkVBQ0hFRCAqLworLSAgICB9CistCistICAvKiBTZWUgd2hldGhlciB0aGUgbG9jYWxlIHZhbHVlIGlzIGFuIGFsaWFzLiAgSWYgeWVzIGl0cyB2YWx1ZQorLSAgICAgKm92ZXJ3cml0ZXMqIHRoZSBhbGlhcyBuYW1lLiAgTm8gdGVzdCBmb3IgdGhlIG9yaWdpbmFsIHZhbHVlIGlzCistICAgICBkb25lLiAgKi8KKy0gIGFsaWFzX3ZhbHVlID0gX25sX2V4cGFuZF9hbGlhcyAobG9jYWxlKTsKKy0gIGlmIChhbGlhc192YWx1ZSAhPSBOVUxMKQorLSAgICB7CistICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoYWxpYXNfdmFsdWUpICsgMTsKKy0gICAgICBsb2NhbGUgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7CistICAgICAgaWYgKGxvY2FsZSA9PSBOVUxMKQorLQlyZXR1cm4gTlVMTDsKKy0KKy0gICAgICBtZW1jcHkgKGxvY2FsZSwgYWxpYXNfdmFsdWUsIGxlbik7CistICAgIH0KKy0KKy0gIC8qIE5vdyB3ZSBkZXRlcm1pbmUgdGhlIHNpbmdsZSBwYXJ0cyBvZiB0aGUgbG9jYWxlIG5hbWUuICBGaXJzdAorLSAgICAgbG9vayBmb3IgdGhlIGxhbmd1YWdlLiAgVGVybWluYXRpb24gc3ltYm9scyBhcmUgYF8nIGFuZCBgQCcgaWYKKy0gICAgIHdlIHVzZSBYUEc0IHN0eWxlLCBhbmQgYF8nLCBgKycsIGFuZCBgLCcgaWYgd2UgdXNlIENFTiBzeW50YXguICAqLworLSAgbWFzayA9IF9ubF9leHBsb2RlX25hbWUgKGxvY2FsZSwgJmxhbmd1YWdlLCAmbW9kaWZpZXIsICZ0ZXJyaXRvcnksCistCQkJICAgJmNvZGVzZXQsICZub3JtYWxpemVkX2NvZGVzZXQsICZzcGVjaWFsLAorLQkJCSAgICZzcG9uc29yLCAmcmV2aXNpb24pOworLQorLSAgLyogQ3JlYXRlIGFsbCBwb3NzaWJsZSBsb2NhbGUgZW50cmllcyB3aGljaCBtaWdodCBiZSBpbnRlcmVzdGVkIGluCistICAgICBnZW5lcmFsaXphdGlvbi4gICovCistICByZXR2YWwgPSBfbmxfbWFrZV9sMTBuZmxpc3QgKCZfbmxfbG9hZGVkX2RvbWFpbnMsIGRpcm5hbWUsCistCQkJICAgICAgIHN0cmxlbiAoZGlybmFtZSkgKyAxLCBtYXNrLCBsYW5ndWFnZSwgdGVycml0b3J5LAorLQkJCSAgICAgICBjb2Rlc2V0LCBub3JtYWxpemVkX2NvZGVzZXQsIG1vZGlmaWVyLCBzcGVjaWFsLAorLQkJCSAgICAgICBzcG9uc29yLCByZXZpc2lvbiwgZG9tYWlubmFtZSwgMSk7CistICBpZiAocmV0dmFsID09IE5VTEwpCistICAgIC8qIFRoaXMgbWVhbnMgd2UgYXJlIG91dCBvZiBjb3JlLiAgKi8KKy0gICAgcmV0dXJuIE5VTEw7CistCistICBpZiAocmV0dmFsLT5kZWNpZGVkID09IDApCistICAgIF9ubF9sb2FkX2RvbWFpbiAocmV0dmFsKTsKKy0gIGlmIChyZXR2YWwtPmRhdGEgPT0gTlVMTCkKKy0gICAgeworLSAgICAgIGludCBjbnQ7CistICAgICAgZm9yIChjbnQgPSAwOyByZXR2YWwtPnN1Y2Nlc3NvcltjbnRdICE9IE5VTEw7ICsrY250KQorLQl7CistCSAgaWYgKHJldHZhbC0+c3VjY2Vzc29yW2NudF0tPmRlY2lkZWQgPT0gMCkKKy0JICAgIF9ubF9sb2FkX2RvbWFpbiAocmV0dmFsLT5zdWNjZXNzb3JbY250XSk7CistCSAgaWYgKHJldHZhbC0+c3VjY2Vzc29yW2NudF0tPmRhdGEgIT0gTlVMTCkKKy0JICAgIGJyZWFrOworLQl9CistICAgIH0KKy0KKy0gIC8qIFRoZSByb29tIGZvciBhbiBhbGlhcyB3YXMgZHluYW1pY2FsbHkgYWxsb2NhdGVkLiAgRnJlZSBpdCBub3cuICAqLworLSAgaWYgKGFsaWFzX3ZhbHVlICE9IE5VTEwpCistICAgIGZyZWUgKGxvY2FsZSk7CistCistICByZXR1cm4gcmV0dmFsOworLX0KK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2dldHRleHQuYyBscnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dC5jCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2dldHRleHQuYwkxOTk4LTA0LTI2IDE0OjIyOjM2LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0LmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDcwICswLDAgQEAKKy0vKiBJbXBsZW1lbnRhdGlvbiBvZiBnZXR0ZXh0KDMpIGZ1bmN0aW9uCistICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmZGVmIEhBVkVfQ09ORklHX0gKKy0jIGluY2x1ZGUgPGNvbmZpZy5oPgorLSNlbmRpZgorLQorLSNpZmRlZiBfTElCQworLSMgZGVmaW5lIF9fbmVlZF9OVUxMCistIyBpbmNsdWRlIDxzdGRkZWYuaD4KKy0jZWxzZQorLSMgaWZkZWYgU1REQ19IRUFERVJTCistIyAgaW5jbHVkZSA8c3RkbGliLmg+CQkvKiBKdXN0IGZvciBOVUxMLiAgKi8KKy0jIGVsc2UKKy0jICBpZmRlZiBIQVZFX1NUUklOR19ICistIyAgIGluY2x1ZGUgPHN0cmluZy5oPgorLSMgIGVsc2UKKy0jICAgZGVmaW5lIE5VTEwgKCh2b2lkICopIDApCistIyAgZW5kaWYKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmZGVmIF9MSUJDCistIyBpbmNsdWRlIDxsaWJpbnRsLmg+CistI2Vsc2UKKy0jIGluY2x1ZGUgImxpYmdldHRleHQuaCIKKy0jZW5kaWYKKy0KKy0vKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCistCistLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhleSBtdXN0IG5vdCBjbGFzaAorLSAgIHdpdGggZXhpc3RpbmcgbmFtZXMgYW5kIHRoZXkgc2hvdWxkIGZvbGxvdyBBTlNJIEMuICBCdXQgdGhpcyBzb3VyY2UKKy0gICBjb2RlIGlzIGFsc28gdXNlZCBpbiBHTlUgQyBMaWJyYXJ5IHdoZXJlIHRoZSBuYW1lcyBoYXZlIGEgX18KKy0gICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLworLSNpZmRlZiBfTElCQworLSMgZGVmaW5lIEdFVFRFWFQgX19nZXR0ZXh0CistIyBkZWZpbmUgREdFVFRFWFQgX19kZ2V0dGV4dAorLSNlbHNlCistIyBkZWZpbmUgR0VUVEVYVCBnZXR0ZXh0X18KKy0jIGRlZmluZSBER0VUVEVYVCBkZ2V0dGV4dF9fCistI2VuZGlmCistCistLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgY3VycmVudCBkZWZhdWx0IG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQKKy0gICBMQ19NRVNTQUdFUyBsb2NhbGUuICBJZiBub3QgZm91bmQsIHJldHVybnMgTVNHSUQgaXRzZWxmICh0aGUgZGVmYXVsdAorLSAgIHRleHQpLiAgKi8KKy1jaGFyICoKKy1HRVRURVhUIChtc2dpZCkKKy0gICAgIGNvbnN0IGNoYXIgKm1zZ2lkOworLXsKKy0gIHJldHVybiBER0VUVEVYVCAoTlVMTCwgbXNnaWQpOworLX0KKy0KKy0jaWZkZWYgX0xJQkMKKy0vKiBBbGlhcyBmb3IgZnVuY3Rpb24gbmFtZSBpbiBHTlUgQyBMaWJyYXJ5LiAgKi8KKy13ZWFrX2FsaWFzIChfX2dldHRleHQsIGdldHRleHQpOworLSNlbmRpZgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dC5oIGxyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0LmgKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dC5oCTE5OTgtMDQtMjYgMTQ6MjI6MzUuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2dldHRleHQuaAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMTA1ICswLDAgQEAKKy0vKiBJbnRlcm5hbCBoZWFkZXIgZm9yIEdOVSBnZXR0ZXh0IGludGVybmF0aW9uYWxpemF0aW9uIGZ1bmN0aW9ucworLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKKy0gICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwKKy0gICB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCistICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLSNpZm5kZWYgX0dFVFRFWFRfSAorLSNkZWZpbmUgX0dFVFRFWFRfSCAxCistCistI2luY2x1ZGUgPHN0ZGlvLmg+CistCistI2lmIEhBVkVfTElNSVRTX0ggfHwgX0xJQkMKKy0jIGluY2x1ZGUgPGxpbWl0cy5oPgorLSNlbmRpZgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0KKy0vKiBUaGUgbWFnaWMgbnVtYmVyIG9mIHRoZSBHTlUgbWVzc2FnZSBjYXRhbG9nIGZvcm1hdC4gICovCistI2RlZmluZSBfTUFHSUMgMHg5NTA0MTJkZQorLSNkZWZpbmUgX01BR0lDX1NXQVBQRUQgMHhkZTEyMDQ5NQorLQorLS8qIFJldmlzaW9uIG51bWJlciBvZiB0aGUgY3VycmVudGx5IHVzZWQgLm1vIChiaW5hcnkpIGZpbGUgZm9ybWF0LiAgKi8KKy0jZGVmaW5lIE1PX1JFVklTSU9OX05VTUJFUiAwCistCistLyogVGhlIGZvbGxvd2luZyBjb250b3J0aW9ucyBhcmUgYW4gYXR0ZW1wdCB0byB1c2UgdGhlIEMgcHJlcHJvY2Vzc29yCistICAgdG8gZGV0ZXJtaW5lIGFuIHVuc2lnbmVkIGludGVncmFsIHR5cGUgdGhhdCBpcyAzMiBiaXRzIHdpZGUuICBBbgorLSAgIGFsdGVybmF0aXZlIGFwcHJvYWNoIGlzIHRvIHVzZSBhdXRvY29uZidzIEFDX0NIRUNLX1NJWkVPRiBtYWNybywgYnV0CistICAgZG9pbmcgdGhhdCB3b3VsZCByZXF1aXJlIHRoYXQgdGhlIGNvbmZpZ3VyZSBzY3JpcHQgY29tcGlsZSBhbmQgKnJ1bioKKy0gICB0aGUgcmVzdWx0aW5nIGV4ZWN1dGFibGUuICBMb2NhbGx5IHJ1bm5pbmcgY3Jvc3MtY29tcGlsZWQgZXhlY3V0YWJsZXMKKy0gICBpcyB1c3VhbGx5IG5vdCBwb3NzaWJsZS4gICovCistCistI2lmIF9fU1REQ19fCistIyBkZWZpbmUgVUlOVF9NQVhfMzJfQklUUyA0Mjk0OTY3Mjk1VQorLSNlbHNlCistIyBkZWZpbmUgVUlOVF9NQVhfMzJfQklUUyAweEZGRkZGRkZGCistI2VuZGlmCistCistLyogSWYgVUlOVF9NQVggaXNuJ3QgZGVmaW5lZCwgYXNzdW1lIGl0J3MgYSAzMi1iaXQgdHlwZS4KKy0gICBUaGlzIHNob3VsZCBiZSB2YWxpZCBmb3IgYWxsIHN5c3RlbXMgR05VIGNhcmVzIGFib3V0IGJlY2F1c2UKKy0gICB0aGF0IGRvZXNuJ3QgaW5jbHVkZSAxNi1iaXQgc3lzdGVtcywgYW5kIG9ubHkgbW9kZXJuIHN5c3RlbXMKKy0gICAodGhhdCBjZXJ0YWlubHkgaGF2ZSA8bGltaXRzLmg+KSBoYXZlIDY0Ky1iaXQgaW50ZWdyYWwgdHlwZXMuICAqLworLQorLSNpZm5kZWYgVUlOVF9NQVgKKy0jIGRlZmluZSBVSU5UX01BWCBVSU5UX01BWF8zMl9CSVRTCistI2VuZGlmCistCistI2lmIFVJTlRfTUFYID09IFVJTlRfTUFYXzMyX0JJVFMKKy10eXBlZGVmIHVuc2lnbmVkIG5sc191aW50MzI7CistI2Vsc2UKKy0jIGlmIFVTSFJUX01BWCA9PSBVSU5UX01BWF8zMl9CSVRTCistdHlwZWRlZiB1bnNpZ25lZCBzaG9ydCBubHNfdWludDMyOworLSMgZWxzZQorLSMgIGlmIFVMT05HX01BWCA9PSBVSU5UX01BWF8zMl9CSVRTCistdHlwZWRlZiB1bnNpZ25lZCBsb25nIG5sc191aW50MzI7CistIyAgZWxzZQorLSAgLyogVGhlIGZvbGxvd2luZyBsaW5lIGlzIGludGVuZGVkIHRvIHRocm93IGFuIGVycm9yLiAgVXNpbmcgI2Vycm9yIGlzCistICAgICBub3QgcG9ydGFibGUgZW5vdWdoLiAgKi8KKy0gICJDYW5ub3QgZGV0ZXJtaW5lIHVuc2lnbmVkIDMyLWJpdCBkYXRhIHR5cGUuIgorLSMgIGVuZGlmCistIyBlbmRpZgorLSNlbmRpZgorLQorLQorLS8qIEhlYWRlciBmb3IgYmluYXJ5IC5tbyBmaWxlIGZvcm1hdC4gICovCistc3RydWN0IG1vX2ZpbGVfaGVhZGVyCisteworLSAgLyogVGhlIG1hZ2ljIG51bWJlci4gICovCistICBubHNfdWludDMyIG1hZ2ljOworLSAgLyogVGhlIHJldmlzaW9uIG51bWJlciBvZiB0aGUgZmlsZSBmb3JtYXQuICAqLworLSAgbmxzX3VpbnQzMiByZXZpc2lvbjsKKy0gIC8qIFRoZSBudW1iZXIgb2Ygc3RyaW5ncyBwYWlycy4gICovCistICBubHNfdWludDMyIG5zdHJpbmdzOworLSAgLyogT2Zmc2V0IG9mIHRhYmxlIHdpdGggc3RhcnQgb2Zmc2V0cyBvZiBvcmlnaW5hbCBzdHJpbmdzLiAgKi8KKy0gIG5sc191aW50MzIgb3JpZ190YWJfb2Zmc2V0OworLSAgLyogT2Zmc2V0IG9mIHRhYmxlIHdpdGggc3RhcnQgb2Zmc2V0cyBvZiB0cmFuc2xhdGlvbiBzdHJpbmdzLiAgKi8KKy0gIG5sc191aW50MzIgdHJhbnNfdGFiX29mZnNldDsKKy0gIC8qIFNpemUgb2YgaGFzaGluZyB0YWJsZS4gICovCistICBubHNfdWludDMyIGhhc2hfdGFiX3NpemU7CistICAvKiBPZmZzZXQgb2YgZmlyc3QgaGFzaGluZyBlbnRyeS4gICovCistICBubHNfdWludDMyIGhhc2hfdGFiX29mZnNldDsKKy19OworLQorLXN0cnVjdCBzdHJpbmdfZGVzYworLXsKKy0gIC8qIExlbmd0aCBvZiBhZGRyZXNzZWQgc3RyaW5nLiAgKi8KKy0gIG5sc191aW50MzIgbGVuZ3RoOworLSAgLyogT2Zmc2V0IG9mIHN0cmluZyBpbiBmaWxlLiAgKi8KKy0gIG5sc191aW50MzIgb2Zmc2V0OworLX07CistCistLyogQEAgYmVnaW4gb2YgZXBpbG9nIEBAICovCistCistI2VuZGlmCS8qIGdldHRleHQuaCAgKi8KK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2dldHRleHRQLmggbHJ6c3otMC4xMi4yMC9pbnRsL2dldHRleHRQLmgKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dFAuaAkxOTk4LTA0LTI2IDE0OjIyOjM1LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0UC5oCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSw3MyArMCwwIEBACistLyogSGVhZGVyIGRlc2NyaWJpbmcgaW50ZXJuYWxzIG9mIGdldHRleHQgbGlicmFyeQorLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLSNpZm5kZWYgX0dFVFRFWFRQX0gKKy0jZGVmaW5lIF9HRVRURVhUUF9ICistCistI2luY2x1ZGUgImxvYWRpbmZvLmgiCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLQorLSNpZm5kZWYgUEFSQU1TCistIyBpZiBfX1NURENfXworLSMgIGRlZmluZSBQQVJBTVMoYXJncykgYXJncworLSMgZWxzZQorLSMgIGRlZmluZSBQQVJBTVMoYXJncykgKCkKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmbmRlZiBXCistIyBkZWZpbmUgVyhmbGFnLCBkYXRhKSAoKGZsYWcpID8gU1dBUCAoZGF0YSkgOiAoZGF0YSkpCistI2VuZGlmCistCistCistc3RhdGljIG5sc191aW50MzIgU1dBUCBQQVJBTVMgKChubHNfdWludDMyIGkpKTsKKy0KKy1zdGF0aWMgaW5saW5lIG5sc191aW50MzIKKy1TV0FQIChpKQorLSAgICAgbmxzX3VpbnQzMiBpOworLXsKKy0gIHJldHVybiAoaSA8PCAyNCkgfCAoKGkgJiAweGZmMDApIDw8IDgpIHwgKChpID4+IDgpICYgMHhmZjAwKSB8IChpID4+IDI0KTsKKy19CistCistCistc3RydWN0IGxvYWRlZF9kb21haW4KKy17CistICBjb25zdCBjaGFyICpkYXRhOworLSAgaW50IG11c3Rfc3dhcDsKKy0gIG5sc191aW50MzIgbnN0cmluZ3M7CistICBzdHJ1Y3Qgc3RyaW5nX2Rlc2MgKm9yaWdfdGFiOworLSAgc3RydWN0IHN0cmluZ19kZXNjICp0cmFuc190YWI7CistICBubHNfdWludDMyIGhhc2hfc2l6ZTsKKy0gIG5sc191aW50MzIgKmhhc2hfdGFiOworLX07CistCistc3RydWN0IGJpbmRpbmcKKy17CistICBzdHJ1Y3QgYmluZGluZyAqbmV4dDsKKy0gIGNoYXIgKmRvbWFpbm5hbWU7CistICBjaGFyICpkaXJuYW1lOworLX07CistCistc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqX25sX2ZpbmRfZG9tYWluIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZGlybmFtZSwKKy0JCQkJCQkgY2hhciAqX19sb2NhbGUsCistCQkJCQkJIGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSkpOworLXZvaWQgX25sX2xvYWRfZG9tYWluIFBBUkFNUyAoKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9fZG9tYWluKSk7CistCistLyogQEAgYmVnaW4gb2YgZXBpbG9nIEBAICovCistCistI2VuZGlmIC8qIGdldHRleHRQLmggICovCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9oYXNoLXN0cmluZy5oIGxyenN6LTAuMTIuMjAvaW50bC9oYXNoLXN0cmluZy5oCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2hhc2gtc3RyaW5nLmgJMTk5OC0wNC0yNiAxNDoyMjozNi4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvaGFzaC1zdHJpbmcuaAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsNjMgKzAsMCBAQAorLS8qIEltcGxlbWVudHMgYSBzdHJpbmcgaGFzaGluZyBmdW5jdGlvbi4KKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCistICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBzZWUgdGhlIGZpbGUgQ09QWUlORy5MSUIuICBJZiBub3QsCistICAgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAorLSAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZkZWYgSEFWRV9WQUxVRVNfSAorLSMgaW5jbHVkZSA8dmFsdWVzLmg+CistI2VuZGlmCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLQorLSNpZm5kZWYgUEFSQU1TCistIyBpZiBfX1NURENfXworLSMgIGRlZmluZSBQQVJBTVMoQXJncykgQXJncworLSMgZWxzZQorLSMgIGRlZmluZSBQQVJBTVMoQXJncykgKCkKKy0jIGVuZGlmCistI2VuZGlmCistCistLyogV2UgYXNzdW1lIHRvIGhhdmUgYHVuc2lnbmVkIGxvbmcgaW50JyB2YWx1ZSB3aXRoIGF0IGxlYXN0IDMyIGJpdHMuICAqLworLSNkZWZpbmUgSEFTSFdPUkRCSVRTIDMyCistCistCistLyogRGVmaW5lcyB0aGUgc28gY2FsbGVkIGBoYXNocGp3JyBmdW5jdGlvbiBieSBQLkouIFdlaW5iZXJnZXIKKy0gICBbc2VlIEFoby9TZXRoaS9VbGxtYW4sIENPTVBJTEVSUzogUHJpbmNpcGxlcywgVGVjaG5pcXVlcyBhbmQgVG9vbHMsCistICAgMTk4NiwgMTk4NyBCZWxsIFRlbGVwaG9uZSBMYWJvcmF0b3JpZXMsIEluYy5dICAqLworLXN0YXRpYyB1bnNpZ25lZCBsb25nIGhhc2hfc3RyaW5nIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fc3RyX3BhcmFtKSk7CistCistc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nCistaGFzaF9zdHJpbmcgKHN0cl9wYXJhbSkKKy0gICAgIGNvbnN0IGNoYXIgKnN0cl9wYXJhbTsKKy17CistICB1bnNpZ25lZCBsb25nIGludCBodmFsLCBnOworLSAgY29uc3QgY2hhciAqc3RyID0gc3RyX3BhcmFtOworLQorLSAgLyogQ29tcHV0ZSB0aGUgaGFzaCB2YWx1ZSBmb3IgdGhlIGdpdmVuIHN0cmluZy4gICovCistICBodmFsID0gMDsKKy0gIHdoaWxlICgqc3RyICE9ICdcMCcpCistICAgIHsKKy0gICAgICBodmFsIDw8PSA0OworLSAgICAgIGh2YWwgKz0gKHVuc2lnbmVkIGxvbmcpICpzdHIrKzsKKy0gICAgICBnID0gaHZhbCAmICgodW5zaWduZWQgbG9uZykgMHhmIDw8IChIQVNIV09SREJJVFMgLSA0KSk7CistICAgICAgaWYgKGcgIT0gMCkKKy0JeworLQkgIGh2YWwgXj0gZyA+PiAoSEFTSFdPUkRCSVRTIC0gOCk7CistCSAgaHZhbCBePSBnOworLQl9CistICAgIH0KKy0gIHJldHVybiBodmFsOworLX0KK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2ludGwtY29tcGF0LmMgbHJ6c3otMC4xMi4yMC9pbnRsL2ludGwtY29tcGF0LmMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvaW50bC1jb21wYXQuYwkxOTk4LTA0LTI2IDE0OjIwOjUyLjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9pbnRsLWNvbXBhdC5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSw3NiArMCwwIEBACistLyogaW50bC1jb21wYXQuYyAtIFN0dWIgZnVuY3Rpb25zIHRvIGNhbGwgZ2V0dGV4dCBmdW5jdGlvbnMgZnJvbSBHTlUgZ2V0dGV4dAorLSAgIExpYnJhcnkuCistICAgQ29weXJpZ2h0IChDKSAxOTk1IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0KKy1UaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLWl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLWFueSBsYXRlciB2ZXJzaW9uLgorLQorLVRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLWJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLUdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy1hbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLUZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLSNpZmRlZiBIQVZFX0NPTkZJR19ICistIyBpbmNsdWRlIDxjb25maWcuaD4KKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSAibGliZ2V0dGV4dC5oIgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0KKy0KKy0jdW5kZWYgZ2V0dGV4dAorLSN1bmRlZiBkZ2V0dGV4dAorLSN1bmRlZiBkY2dldHRleHQKKy0jdW5kZWYgdGV4dGRvbWFpbgorLSN1bmRlZiBiaW5kdGV4dGRvbWFpbgorLQorLQorLWNoYXIgKgorLWJpbmR0ZXh0ZG9tYWluIChkb21haW5uYW1lLCBkaXJuYW1lKQorLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKKy0gICAgIGNvbnN0IGNoYXIgKmRpcm5hbWU7CisteworLSAgcmV0dXJuIGJpbmR0ZXh0ZG9tYWluX18gKGRvbWFpbm5hbWUsIGRpcm5hbWUpOworLX0KKy0KKy0KKy1jaGFyICoKKy1kY2dldHRleHQgKGRvbWFpbm5hbWUsIG1zZ2lkLCBjYXRlZ29yeSkKKy0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7CistICAgICBjb25zdCBjaGFyICptc2dpZDsKKy0gICAgIGludCBjYXRlZ29yeTsKKy17CistICByZXR1cm4gZGNnZXR0ZXh0X18gKGRvbWFpbm5hbWUsIG1zZ2lkLCBjYXRlZ29yeSk7CistfQorLQorLQorLWNoYXIgKgorLWRnZXR0ZXh0IChkb21haW5uYW1lLCBtc2dpZCkKKy0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7CistICAgICBjb25zdCBjaGFyICptc2dpZDsKKy17CistICByZXR1cm4gZGdldHRleHRfXyAoZG9tYWlubmFtZSwgbXNnaWQpOworLX0KKy0KKy0KKy1jaGFyICoKKy1nZXR0ZXh0IChtc2dpZCkKKy0gICAgIGNvbnN0IGNoYXIgKm1zZ2lkOworLXsKKy0gIHJldHVybiBnZXR0ZXh0X18gKG1zZ2lkKTsKKy19CistCistCistY2hhciAqCistdGV4dGRvbWFpbiAoZG9tYWlubmFtZSkKKy0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7CisteworLSAgcmV0dXJuIHRleHRkb21haW5fXyAoZG9tYWlubmFtZSk7CistfQorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvbDEwbmZsaXN0LmMgbHJ6c3otMC4xMi4yMC9pbnRsL2wxMG5mbGlzdC5jCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2wxMG5mbGlzdC5jCTE5OTgtMDQtMjYgMTQ6MjI6MzcuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2wxMG5mbGlzdC5jCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSw0MDkgKzAsMCBAQAorLS8qIEhhbmRsZSBsaXN0IG9mIG5lZWRlZCBtZXNzYWdlIGNhdGFsb2dzCistICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmZGVmIEhBVkVfQ09ORklHX0gKKy0jIGluY2x1ZGUgPGNvbmZpZy5oPgorLSNlbmRpZgorLQorLQorLSNpZiBkZWZpbmVkIEhBVkVfU1RSSU5HX0ggfHwgZGVmaW5lZCBfTElCQworLSMgaWZuZGVmIF9HTlVfU09VUkNFCistIyAgZGVmaW5lIF9HTlVfU09VUkNFCTEKKy0jIGVuZGlmCistIyBpbmNsdWRlIDxzdHJpbmcuaD4KKy0jZWxzZQorLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgorLSMgaWZuZGVmIG1lbWNweQorLSMgIGRlZmluZSBtZW1jcHkoRHN0LCBTcmMsIE51bSkgYmNvcHkgKFNyYywgRHN0LCBOdW0pCistIyBlbmRpZgorLSNlbmRpZgorLSNpZiAhSEFWRV9TVFJDSFIgJiYgIWRlZmluZWQgX0xJQkMKKy0jIGlmbmRlZiBzdHJjaHIKKy0jICBkZWZpbmUgc3RyY2hyIGluZGV4CistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9BUkdaX0gKKy0jIGluY2x1ZGUgPGFyZ3ouaD4KKy0jZW5kaWYKKy0jaW5jbHVkZSA8Y3R5cGUuaD4KKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistCistI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHN0ZGxpYi5oPgorLSNlbmRpZgorLQorLSNpbmNsdWRlICJsb2FkaW5mby5oIgorLQorLS8qIE9uIHNvbWUgc3RyYW5nZSBzeXN0ZW1zIHN0aWxsIG5vIGRlZmluaXRpb24gb2YgTlVMTCBpcyBmb3VuZC4gIFNpZ2ghICAqLworLSNpZm5kZWYgTlVMTAorLSMgaWYgZGVmaW5lZCBfX1NURENfXyAmJiBfX1NURENfXworLSMgIGRlZmluZSBOVUxMICgodm9pZCAqKSAwKQorLSMgZWxzZQorLSMgIGRlZmluZSBOVUxMIDAKKy0jIGVuZGlmCistI2VuZGlmCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLQorLSNpZmRlZiBfTElCQworLS8qIFJlbmFtZSB0aGUgbm9uIEFOU0kgQyBmdW5jdGlvbnMuICBUaGlzIGlzIHJlcXVpcmVkIGJ5IHRoZSBzdGFuZGFyZAorLSAgIGJlY2F1c2Ugc29tZSBBTlNJIEMgZnVuY3Rpb25zIHdpbGwgcmVxdWlyZSBsaW5raW5nIHdpdGggdGhpcyBvYmplY3QKKy0gICBmaWxlIGFuZCB0aGUgbmFtZSBzcGFjZSBtdXN0IG5vdCBiZSBwb2xsdXRlZC4gICovCistIyBkZWZpbmUgc3RwY3B5KGRlc3QsIHNyYykgX19zdHBjcHkoZGVzdCwgc3JjKQorLSNlbHNlCistIyBpZm5kZWYgSEFWRV9TVFBDUFkKKy1zdGF0aWMgY2hhciAqc3RwY3B5IFBBUkFNUyAoKGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYykpOworLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0vKiBEZWZpbmUgZnVuY3Rpb24gd2hpY2ggYXJlIHVzdWFsbHkgbm90IGF2YWlsYWJsZS4gICovCistCistI2lmICFkZWZpbmVkIF9MSUJDICYmICFkZWZpbmVkIEhBVkVfX19BUkdaX0NPVU5UCistLyogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHN0cmluZ3MgaW4gQVJHWi4gICovCistc3RhdGljIHNpemVfdCBhcmd6X2NvdW50X18gUEFSQU1TICgoY29uc3QgY2hhciAqYXJneiwgc2l6ZV90IGxlbikpOworLQorLXN0YXRpYyBzaXplX3QKKy1hcmd6X2NvdW50X18gKGFyZ3osIGxlbikKKy0gICAgIGNvbnN0IGNoYXIgKmFyZ3o7CistICAgICBzaXplX3QgbGVuOworLXsKKy0gIHNpemVfdCBjb3VudCA9IDA7CistICB3aGlsZSAobGVuID4gMCkKKy0gICAgeworLSAgICAgIHNpemVfdCBwYXJ0X2xlbiA9IHN0cmxlbiAoYXJneik7CistICAgICAgYXJneiArPSBwYXJ0X2xlbiArIDE7CistICAgICAgbGVuIC09IHBhcnRfbGVuICsgMTsKKy0gICAgICBjb3VudCsrOworLSAgICB9CistICByZXR1cm4gY291bnQ7CistfQorLSMgdW5kZWYgX19hcmd6X2NvdW50CistIyBkZWZpbmUgX19hcmd6X2NvdW50KGFyZ3osIGxlbikgYXJnel9jb3VudF9fIChhcmd6LCBsZW4pCistI2VuZGlmCS8qICFfTElCQyAmJiAhSEFWRV9fX0FSR1pfQ09VTlQgKi8KKy0KKy0jaWYgIWRlZmluZWQgX0xJQkMgJiYgIWRlZmluZWQgSEFWRV9fX0FSR1pfU1RSSU5HSUZZCistLyogTWFrZSAnXDAnIHNlcGFyYXRlZCBhcmcgdmVjdG9yIEFSR1ogcHJpbnRhYmxlIGJ5IGNvbnZlcnRpbmcgYWxsIHRoZSAnXDAncworLSAgIGV4Y2VwdCB0aGUgbGFzdCBpbnRvIHRoZSBjaGFyYWN0ZXIgU0VQLiAgKi8KKy1zdGF0aWMgdm9pZCBhcmd6X3N0cmluZ2lmeV9fIFBBUkFNUyAoKGNoYXIgKmFyZ3osIHNpemVfdCBsZW4sIGludCBzZXApKTsKKy0KKy1zdGF0aWMgdm9pZAorLWFyZ3pfc3RyaW5naWZ5X18gKGFyZ3osIGxlbiwgc2VwKQorLSAgICAgY2hhciAqYXJnejsKKy0gICAgIHNpemVfdCBsZW47CistICAgICBpbnQgc2VwOworLXsKKy0gIHdoaWxlIChsZW4gPiAwKQorLSAgICB7CistICAgICAgc2l6ZV90IHBhcnRfbGVuID0gc3RybGVuIChhcmd6KTsKKy0gICAgICBhcmd6ICs9IHBhcnRfbGVuOworLSAgICAgIGxlbiAtPSBwYXJ0X2xlbiArIDE7CistICAgICAgaWYgKGxlbiA+IDApCistCSphcmd6KysgPSBzZXA7CistICAgIH0KKy19CistIyB1bmRlZiBfX2FyZ3pfc3RyaW5naWZ5CistIyBkZWZpbmUgX19hcmd6X3N0cmluZ2lmeShhcmd6LCBsZW4sIHNlcCkgYXJnel9zdHJpbmdpZnlfXyAoYXJneiwgbGVuLCBzZXApCistI2VuZGlmCS8qICFfTElCQyAmJiAhSEFWRV9fX0FSR1pfU1RSSU5HSUZZICovCistCistI2lmICFkZWZpbmVkIF9MSUJDICYmICFkZWZpbmVkIEhBVkVfX19BUkdaX05FWFQKKy1zdGF0aWMgY2hhciAqYXJnel9uZXh0X18gUEFSQU1TICgoY2hhciAqYXJneiwgc2l6ZV90IGFyZ3pfbGVuLAorLQkJCQkgIGNvbnN0IGNoYXIgKmVudHJ5KSk7CistCistc3RhdGljIGNoYXIgKgorLWFyZ3pfbmV4dF9fIChhcmd6LCBhcmd6X2xlbiwgZW50cnkpCistICAgICBjaGFyICphcmd6OworLSAgICAgc2l6ZV90IGFyZ3pfbGVuOworLSAgICAgY29uc3QgY2hhciAqZW50cnk7CisteworLSAgaWYgKGVudHJ5KQorLSAgICB7CistICAgICAgaWYgKGVudHJ5IDwgYXJneiArIGFyZ3pfbGVuKQorLSAgICAgICAgZW50cnkgPSBzdHJjaHIgKGVudHJ5LCAnXDAnKSArIDE7CistCistICAgICAgcmV0dXJuIGVudHJ5ID49IGFyZ3ogKyBhcmd6X2xlbiA/IE5VTEwgOiAoY2hhciAqKSBlbnRyeTsKKy0gICAgfQorLSAgZWxzZQorLSAgICBpZiAoYXJnel9sZW4gPiAwKQorLSAgICAgIHJldHVybiBhcmd6OworLSAgICBlbHNlCistICAgICAgcmV0dXJuIDA7CistfQorLSMgdW5kZWYgX19hcmd6X25leHQKKy0jIGRlZmluZSBfX2FyZ3pfbmV4dChhcmd6LCBsZW4sIGVudHJ5KSBhcmd6X25leHRfXyAoYXJneiwgbGVuLCBlbnRyeSkKKy0jZW5kaWYJLyogIV9MSUJDICYmICFIQVZFX19fQVJHWl9ORVhUICovCistCistCistLyogUmV0dXJuIG51bWJlciBvZiBiaXRzIHNldCBpbiBYLiAgKi8KKy1zdGF0aWMgaW50IHBvcCBQQVJBTVMgKChpbnQgeCkpOworLQorLXN0YXRpYyBpbmxpbmUgaW50CistcG9wICh4KQorLSAgICAgaW50IHg7CisteworLSAgLyogV2UgYXNzdW1lIHRoYXQgbm8gbW9yZSB0aGFuIDE2IGJpdHMgYXJlIHVzZWQuICAqLworLSAgeCA9ICgoeCAmIH4weDU1NTUpID4+IDEpICsgKHggJiAweDU1NTUpOworLSAgeCA9ICgoeCAmIH4weDMzMzMpID4+IDIpICsgKHggJiAweDMzMzMpOworLSAgeCA9ICgoeCA+PiA0KSArIHgpICYgMHgwZjBmOworLSAgeCA9ICgoeCA+PiA4KSArIHgpICYgMHhmZjsKKy0KKy0gIHJldHVybiB4OworLX0KKy0KKy0MCistc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqCistX25sX21ha2VfbDEwbmZsaXN0IChsMTBuZmlsZV9saXN0LCBkaXJsaXN0LCBkaXJsaXN0X2xlbiwgbWFzaywgbGFuZ3VhZ2UsCistCQkgICAgdGVycml0b3J5LCBjb2Rlc2V0LCBub3JtYWxpemVkX2NvZGVzZXQsIG1vZGlmaWVyLCBzcGVjaWFsLAorLQkJICAgIHNwb25zb3IsIHJldmlzaW9uLCBmaWxlbmFtZSwgZG9fYWxsb2NhdGUpCistICAgICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoqbDEwbmZpbGVfbGlzdDsKKy0gICAgIGNvbnN0IGNoYXIgKmRpcmxpc3Q7CistICAgICBzaXplX3QgZGlybGlzdF9sZW47CistICAgICBpbnQgbWFzazsKKy0gICAgIGNvbnN0IGNoYXIgKmxhbmd1YWdlOworLSAgICAgY29uc3QgY2hhciAqdGVycml0b3J5OworLSAgICAgY29uc3QgY2hhciAqY29kZXNldDsKKy0gICAgIGNvbnN0IGNoYXIgKm5vcm1hbGl6ZWRfY29kZXNldDsKKy0gICAgIGNvbnN0IGNoYXIgKm1vZGlmaWVyOworLSAgICAgY29uc3QgY2hhciAqc3BlY2lhbDsKKy0gICAgIGNvbnN0IGNoYXIgKnNwb25zb3I7CistICAgICBjb25zdCBjaGFyICpyZXZpc2lvbjsKKy0gICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lOworLSAgICAgaW50IGRvX2FsbG9jYXRlOworLXsKKy0gIGNoYXIgKmFic19maWxlbmFtZTsKKy0gIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmxhc3QgPSBOVUxMOworLSAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqcmV0dmFsOworLSAgY2hhciAqY3A7CistICBzaXplX3QgZW50cmllczsKKy0gIGludCBjbnQ7CistCistICAvKiBBbGxvY2F0ZSByb29tIGZvciB0aGUgZnVsbCBmaWxlIG5hbWUuICAqLworLSAgYWJzX2ZpbGVuYW1lID0gKGNoYXIgKikgbWFsbG9jIChkaXJsaXN0X2xlbgorLQkJCQkgICsgc3RybGVuIChsYW5ndWFnZSkKKy0JCQkJICArICgobWFzayAmIFRFUlJJVE9SWSkgIT0gMAorLQkJCQkgICAgID8gc3RybGVuICh0ZXJyaXRvcnkpICsgMSA6IDApCistCQkJCSAgKyAoKG1hc2sgJiBYUEdfQ09ERVNFVCkgIT0gMAorLQkJCQkgICAgID8gc3RybGVuIChjb2Rlc2V0KSArIDEgOiAwKQorLQkJCQkgICsgKChtYXNrICYgWFBHX05PUk1fQ09ERVNFVCkgIT0gMAorLQkJCQkgICAgID8gc3RybGVuIChub3JtYWxpemVkX2NvZGVzZXQpICsgMSA6IDApCistCQkJCSAgKyAoKChtYXNrICYgWFBHX01PRElGSUVSKSAhPSAwCistCQkJCSAgICAgIHx8IChtYXNrICYgQ0VOX0FVRElFTkNFKSAhPSAwKQorLQkJCQkgICAgID8gc3RybGVuIChtb2RpZmllcikgKyAxIDogMCkKKy0JCQkJICArICgobWFzayAmIENFTl9TUEVDSUFMKSAhPSAwCistCQkJCSAgICAgPyBzdHJsZW4gKHNwZWNpYWwpICsgMSA6IDApCistCQkJCSAgKyAoKChtYXNrICYgQ0VOX1NQT05TT1IpICE9IDAKKy0JCQkJICAgICAgfHwgKG1hc2sgJiBDRU5fUkVWSVNJT04pICE9IDApCistCQkJCSAgICAgPyAoMSArICgobWFzayAmIENFTl9TUE9OU09SKSAhPSAwCistCQkJCQkgICAgID8gc3RybGVuIChzcG9uc29yKSArIDEgOiAwKQorLQkJCQkJKyAoKG1hc2sgJiBDRU5fUkVWSVNJT04pICE9IDAKKy0JCQkJCSAgID8gc3RybGVuIChyZXZpc2lvbikgKyAxIDogMCkpIDogMCkKKy0JCQkJICArIDEgKyBzdHJsZW4gKGZpbGVuYW1lKSArIDEpOworLQorLSAgaWYgKGFic19maWxlbmFtZSA9PSBOVUxMKQorLSAgICByZXR1cm4gTlVMTDsKKy0KKy0gIHJldHZhbCA9IE5VTEw7CistICBsYXN0ID0gTlVMTDsKKy0KKy0gIC8qIENvbnN0cnVjdCBmaWxlIG5hbWUuICAqLworLSAgbWVtY3B5IChhYnNfZmlsZW5hbWUsIGRpcmxpc3QsIGRpcmxpc3RfbGVuKTsKKy0gIF9fYXJnel9zdHJpbmdpZnkgKGFic19maWxlbmFtZSwgZGlybGlzdF9sZW4sICc6Jyk7CistICBjcCA9IGFic19maWxlbmFtZSArIChkaXJsaXN0X2xlbiAtIDEpOworLSAgKmNwKysgPSAnLyc7CistICBjcCA9IHN0cGNweSAoY3AsIGxhbmd1YWdlKTsKKy0KKy0gIGlmICgobWFzayAmIFRFUlJJVE9SWSkgIT0gMCkKKy0gICAgeworLSAgICAgICpjcCsrID0gJ18nOworLSAgICAgIGNwID0gc3RwY3B5IChjcCwgdGVycml0b3J5KTsKKy0gICAgfQorLSAgaWYgKChtYXNrICYgWFBHX0NPREVTRVQpICE9IDApCistICAgIHsKKy0gICAgICAqY3ArKyA9ICcuJzsKKy0gICAgICBjcCA9IHN0cGNweSAoY3AsIGNvZGVzZXQpOworLSAgICB9CistICBpZiAoKG1hc2sgJiBYUEdfTk9STV9DT0RFU0VUKSAhPSAwKQorLSAgICB7CistICAgICAgKmNwKysgPSAnLic7CistICAgICAgY3AgPSBzdHBjcHkgKGNwLCBub3JtYWxpemVkX2NvZGVzZXQpOworLSAgICB9CistICBpZiAoKG1hc2sgJiAoWFBHX01PRElGSUVSIHwgQ0VOX0FVRElFTkNFKSkgIT0gMCkKKy0gICAgeworLSAgICAgIC8qIFRoaXMgY29tcG9uZW50IGNhbiBiZSBwYXJ0IG9mIGJvdGggc3ludGFjZXMgYnV0IGhhcyBkaWZmZXJlbnQKKy0JIGxlYWRpbmcgY2hhcmFjdGVycy4gIEZvciBDRU4gd2UgdXNlIGArJywgZWxzZSBgQCcuICAqLworLSAgICAgICpjcCsrID0gKG1hc2sgJiBDRU5fQVVESUVOQ0UpICE9IDAgPyAnKycgOiAnQCc7CistICAgICAgY3AgPSBzdHBjcHkgKGNwLCBtb2RpZmllcik7CistICAgIH0KKy0gIGlmICgobWFzayAmIENFTl9TUEVDSUFMKSAhPSAwKQorLSAgICB7CistICAgICAgKmNwKysgPSAnKyc7CistICAgICAgY3AgPSBzdHBjcHkgKGNwLCBzcGVjaWFsKTsKKy0gICAgfQorLSAgaWYgKChtYXNrICYgKENFTl9TUE9OU09SIHwgQ0VOX1JFVklTSU9OKSkgIT0gMCkKKy0gICAgeworLSAgICAgICpjcCsrID0gJywnOworLSAgICAgIGlmICgobWFzayAmIENFTl9TUE9OU09SKSAhPSAwKQorLQljcCA9IHN0cGNweSAoY3AsIHNwb25zb3IpOworLSAgICAgIGlmICgobWFzayAmIENFTl9SRVZJU0lPTikgIT0gMCkKKy0JeworLQkgICpjcCsrID0gJ18nOworLQkgIGNwID0gc3RwY3B5IChjcCwgcmV2aXNpb24pOworLQl9CistICAgIH0KKy0KKy0gICpjcCsrID0gJy8nOworLSAgc3RwY3B5IChjcCwgZmlsZW5hbWUpOworLQorLSAgLyogTG9vayBpbiBsaXN0IG9mIGFscmVhZHkgbG9hZGVkIGRvbWFpbnMgd2hldGhlciBpdCBpcyBhbHJlYWR5CistICAgICBhdmFpbGFibGUuICAqLworLSAgbGFzdCA9IE5VTEw7CistICBmb3IgKHJldHZhbCA9ICpsMTBuZmlsZV9saXN0OyByZXR2YWwgIT0gTlVMTDsgcmV0dmFsID0gcmV0dmFsLT5uZXh0KQorLSAgICBpZiAocmV0dmFsLT5maWxlbmFtZSAhPSBOVUxMKQorLSAgICAgIHsKKy0JaW50IGNvbXBhcmUgPSBzdHJjbXAgKHJldHZhbC0+ZmlsZW5hbWUsIGFic19maWxlbmFtZSk7CistCWlmIChjb21wYXJlID09IDApCistCSAgLyogV2UgZm91bmQgaXQhICAqLworLQkgIGJyZWFrOworLQlpZiAoY29tcGFyZSA8IDApCistCSAgeworLQkgICAgLyogSXQncyBub3QgaW4gdGhlIGxpc3QuICAqLworLQkgICAgcmV0dmFsID0gTlVMTDsKKy0JICAgIGJyZWFrOworLQkgIH0KKy0KKy0JbGFzdCA9IHJldHZhbDsKKy0gICAgICB9CistCistICBpZiAocmV0dmFsICE9IE5VTEwgfHwgZG9fYWxsb2NhdGUgPT0gMCkKKy0gICAgeworLSAgICAgIGZyZWUgKGFic19maWxlbmFtZSk7CistICAgICAgcmV0dXJuIHJldHZhbDsKKy0gICAgfQorLQorLSAgcmV0dmFsID0gKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKikKKy0gICAgbWFsbG9jIChzaXplb2YgKCpyZXR2YWwpICsgKF9fYXJnel9jb3VudCAoZGlybGlzdCwgZGlybGlzdF9sZW4pCistCQkJCSogKDEgPDwgcG9wIChtYXNrKSkKKy0JCQkJKiBzaXplb2YgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKikpKTsKKy0gIGlmIChyZXR2YWwgPT0gTlVMTCkKKy0gICAgcmV0dXJuIE5VTEw7CistCistICByZXR2YWwtPmZpbGVuYW1lID0gYWJzX2ZpbGVuYW1lOworLSAgcmV0dmFsLT5kZWNpZGVkID0gKF9fYXJnel9jb3VudCAoZGlybGlzdCwgZGlybGlzdF9sZW4pICE9IDEKKy0JCSAgICAgfHwgKChtYXNrICYgWFBHX0NPREVTRVQpICE9IDAKKy0JCQkgJiYgKG1hc2sgJiBYUEdfTk9STV9DT0RFU0VUKSAhPSAwKSk7CistICByZXR2YWwtPmRhdGEgPSBOVUxMOworLQorLSAgaWYgKGxhc3QgPT0gTlVMTCkKKy0gICAgeworLSAgICAgIHJldHZhbC0+bmV4dCA9ICpsMTBuZmlsZV9saXN0OworLSAgICAgICpsMTBuZmlsZV9saXN0ID0gcmV0dmFsOworLSAgICB9CistICBlbHNlCistICAgIHsKKy0gICAgICByZXR2YWwtPm5leHQgPSBsYXN0LT5uZXh0OworLSAgICAgIGxhc3QtPm5leHQgPSByZXR2YWw7CistICAgIH0KKy0KKy0gIGVudHJpZXMgPSAwOworLSAgLyogSWYgdGhlIERJUkxJU1QgaXMgYSByZWFsIGxpc3QgdGhlIFJFVFZBTCBlbnRyeSBjb3JyZXNwb25kcyBub3QgdG8KKy0gICAgIGEgcmVhbCBmaWxlLiAgU28gd2UgaGF2ZSB0byB1c2UgdGhlIERJUkxJU1Qgc2VwYXJhdGlvbiBtZWNoYW5pc20KKy0gICAgIG9mIHRoZSBpbm5lciBsb29wLiAgKi8KKy0gIGNudCA9IF9fYXJnel9jb3VudCAoZGlybGlzdCwgZGlybGlzdF9sZW4pID09IDEgPyBtYXNrIC0gMSA6IG1hc2s7CistICBmb3IgKDsgY250ID49IDA7IC0tY250KQorLSAgICBpZiAoKGNudCAmIH5tYXNrKSA9PSAwCistCSYmICgoY250ICYgQ0VOX1NQRUNJRklDKSA9PSAwIHx8IChjbnQgJiBYUEdfU1BFQ0lGSUMpID09IDApCistCSYmICgoY250ICYgWFBHX0NPREVTRVQpID09IDAgfHwgKGNudCAmIFhQR19OT1JNX0NPREVTRVQpID09IDApKQorLSAgICAgIHsKKy0JLyogSXRlcmF0ZSBvdmVyIGFsbCBlbGVtZW50cyBvZiB0aGUgRElSTElTVC4gICovCistCWNoYXIgKmRpciA9IE5VTEw7CistCistCXdoaWxlICgoZGlyID0gX19hcmd6X25leHQgKChjaGFyICopIGRpcmxpc3QsIGRpcmxpc3RfbGVuLCBkaXIpKQorLQkgICAgICAgIT0gTlVMTCkKKy0JICByZXR2YWwtPnN1Y2Nlc3NvcltlbnRyaWVzKytdCistCSAgICA9IF9ubF9tYWtlX2wxMG5mbGlzdCAobDEwbmZpbGVfbGlzdCwgZGlyLCBzdHJsZW4gKGRpcikgKyAxLCBjbnQsCistCQkJCSAgbGFuZ3VhZ2UsIHRlcnJpdG9yeSwgY29kZXNldCwKKy0JCQkJICBub3JtYWxpemVkX2NvZGVzZXQsIG1vZGlmaWVyLCBzcGVjaWFsLAorLQkJCQkgIHNwb25zb3IsIHJldmlzaW9uLCBmaWxlbmFtZSwgMSk7CistICAgICAgfQorLSAgcmV0dmFsLT5zdWNjZXNzb3JbZW50cmllc10gPSBOVUxMOworLQorLSAgcmV0dXJuIHJldHZhbDsKKy19CistDAorLS8qIE5vcm1hbGl6ZSBjb2Rlc2V0IG5hbWUuICBUaGVyZSBpcyBubyBzdGFuZGFyZCBmb3IgdGhlIGNvZGVzZXQKKy0gICBuYW1lcy4gIE5vcm1hbGl6YXRpb24gYWxsb3dzIHRoZSB1c2VyIHRvIHVzZSBhbnkgb2YgdGhlIGNvbW1vbgorLSAgIG5hbWVzLiAgKi8KKy1jb25zdCBjaGFyICoKKy1fbmxfbm9ybWFsaXplX2NvZGVzZXQgKGNvZGVzZXQsIG5hbWVfbGVuKQorLSAgICAgY29uc3QgY2hhciAqY29kZXNldDsKKy0gICAgIHNpemVfdCBuYW1lX2xlbjsKKy17CistICBpbnQgbGVuID0gMDsKKy0gIGludCBvbmx5X2RpZ2l0ID0gMTsKKy0gIGNoYXIgKnJldHZhbDsKKy0gIGNoYXIgKndwOworLSAgc2l6ZV90IGNudDsKKy0KKy0gIGZvciAoY250ID0gMDsgY250IDwgbmFtZV9sZW47ICsrY250KQorLSAgICBpZiAoaXNhbG51bSAoY29kZXNldFtjbnRdKSkKKy0gICAgICB7CistCSsrbGVuOworLQorLQlpZiAoaXNhbHBoYSAoY29kZXNldFtjbnRdKSkKKy0JICBvbmx5X2RpZ2l0ID0gMDsKKy0gICAgICB9CistCistICByZXR2YWwgPSAoY2hhciAqKSBtYWxsb2MgKChvbmx5X2RpZ2l0ID8gMyA6IDApICsgbGVuICsgMSk7CistCistICBpZiAocmV0dmFsICE9IE5VTEwpCistICAgIHsKKy0gICAgICBpZiAob25seV9kaWdpdCkKKy0Jd3AgPSBzdHBjcHkgKHJldHZhbCwgImlzbyIpOworLSAgICAgIGVsc2UKKy0Jd3AgPSByZXR2YWw7CistCistICAgICAgZm9yIChjbnQgPSAwOyBjbnQgPCBuYW1lX2xlbjsgKytjbnQpCistCWlmIChpc2FscGhhIChjb2Rlc2V0W2NudF0pKQorLQkgICp3cCsrID0gdG9sb3dlciAoY29kZXNldFtjbnRdKTsKKy0JZWxzZSBpZiAoaXNkaWdpdCAoY29kZXNldFtjbnRdKSkKKy0JICAqd3ArKyA9IGNvZGVzZXRbY250XTsKKy0KKy0gICAgICAqd3AgPSAnXDAnOworLSAgICB9CistCistICByZXR1cm4gKGNvbnN0IGNoYXIgKikgcmV0dmFsOworLX0KKy0KKy0KKy0vKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KKy0KKy0vKiBXZSBkb24ndCB3YW50IGxpYmludGwuYSB0byBkZXBlbmQgb24gYW55IG90aGVyIGxpYnJhcnkuICBTbyB3ZQorLSAgIGF2b2lkIHRoZSBub24tc3RhbmRhcmQgZnVuY3Rpb24gc3RwY3B5LiAgSW4gR05VIEMgTGlicmFyeSB0aGlzCistICAgZnVuY3Rpb24gaXMgYXZhaWxhYmxlLCB0aG91Z2guICBBbHNvIGFsbG93IHRoZSBzeW1ib2wgSEFWRV9TVFBDUFkKKy0gICB0byBiZSBkZWZpbmVkLiAgKi8KKy0jaWYgIV9MSUJDICYmICFIQVZFX1NUUENQWQorLXN0YXRpYyBjaGFyICoKKy1zdHBjcHkgKGRlc3QsIHNyYykKKy0gICAgIGNoYXIgKmRlc3Q7CistICAgICBjb25zdCBjaGFyICpzcmM7CisteworLSAgd2hpbGUgKCgqZGVzdCsrID0gKnNyYysrKSAhPSAnXDAnKQorLSAgICAvKiBEbyBub3RoaW5nLiAqLyA7CistICByZXR1cm4gZGVzdCAtIDE7CistfQorLSNlbmRpZgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvbGliZ2V0dGV4dC5oIGxyenN6LTAuMTIuMjAvaW50bC9saWJnZXR0ZXh0LmgKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvbGliZ2V0dGV4dC5oCTE5OTgtMDQtMjYgMTQ6MjI6MzYuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xpYmdldHRleHQuaAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMTgyICswLDAgQEAKKy0vKiBNZXNzYWdlIGNhdGFsb2dzIGZvciBpbnRlcm5hdGlvbmFsaXphdGlvbi4KKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0vKiBCZWNhdXNlIG9uIHNvbWUgc3lzdGVtcyAoZS5nLiBTb2xhcmlzKSB3ZSBzb21ldGltZXMgaGF2ZSB0byBpbmNsdWRlCistICAgdGhlIHN5c3RlbXMgbGliaW50bC5oIGFzIHdlbGwgYXMgdGhpcyBmaWxlIHdlIGhhdmUgbW9yZSBjb21wbGV4CistICAgaW5jbHVkZSBwcm90ZWN0aW9uIGFib3ZlLiAgQnV0IHRoZSBzeXN0ZW1zIGhlYWRlciBtaWdodCBwZXJoYXBzIGFsc28KKy0gICBkZWZpbmUgX0xJQklOVExfSCBhbmQgdGhlcmVmb3JlIHdlIGhhdmUgdG8gcHJvdGVjdCB0aGUgZGVmaW5pdGlvbiBoZXJlLiAgKi8KKy0KKy0jaWYgIWRlZmluZWQgKF9MSUJJTlRMX0gpIHx8ICFkZWZpbmVkIChfTElCR0VUVEVYVF9IKQorLSNpZiAhZGVmaW5lZCAoX0xJQklOVExfSCkKKy0jIGRlZmluZSBfTElCSU5UTF9ICTEKKy0jZW5kaWYKKy0jZGVmaW5lIF9MSUJHRVRURVhUX0gJMQorLQorLS8qIFdlIGRlZmluZSBhbiBhZGRpdGlvbmFsIHN5bWJvbCB0byBzaWduYWwgdGhhdCB3ZSB1c2UgdGhlIEdOVQorLSAgIGltcGxlbWVudGF0aW9uIG9mIGdldHRleHQuICAqLworLSNkZWZpbmUgX19VU0VfR05VX0dFVFRFWFQgMQorLQorLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0KKy0jaWYgSEFWRV9MT0NBTEVfSAorLSMgaW5jbHVkZSA8bG9jYWxlLmg+CistI2VuZGlmCistCistCistI2lmZGVmIF9fY3BsdXNwbHVzCistZXh0ZXJuICJDIiB7CistI2VuZGlmCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLQorLSNpZm5kZWYgUEFSQU1TCistIyBpZiBfX1NURENfXworLSMgIGRlZmluZSBQQVJBTVMoYXJncykgYXJncworLSMgZWxzZQorLSMgIGRlZmluZSBQQVJBTVMoYXJncykgKCkKKy0jIGVuZGlmCistI2VuZGlmCistCistI2lmbmRlZiBOVUxMCistIyBpZiAhZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9fR05VQ19fCistIyAgZGVmaW5lIE5VTEwgKCh2b2lkICopIDApCistIyBlbHNlCistIyAgZGVmaW5lIE5VTEwgKDApCistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpZiAhSEFWRV9MQ19NRVNTQUdFUworLS8qIFRoaXMgdmFsdWUgZGV0ZXJtaW5lcyB0aGUgYmVoYXZpb3VyIG9mIHRoZSBnZXR0ZXh0KCkgYW5kIGRnZXR0ZXh0KCkKKy0gICBmdW5jdGlvbi4gIEJ1dCBzb21lIHN5c3RlbSBkb2VzIG5vdCBoYXZlIHRoaXMgZGVmaW5lZC4gIERlZmluZSBpdAorLSAgIHRvIGEgZGVmYXVsdCB2YWx1ZS4gICovCistIyBkZWZpbmUgTENfTUVTU0FHRVMgKC0xKQorLSNlbmRpZgorLQorLQorLS8qIERlY2xhcmF0aW9ucyBmb3IgZ2V0dGV4dC11c2luZy1jYXRnZXRzIGludGVyZmFjZS4gIERlcml2ZWQgZnJvbQorLSAgIEppbSBNZXllcmluZydzIGxpYmludGwuaC4gICovCistc3RydWN0IF9tc2dfZW50CisteworLSAgY29uc3QgY2hhciAqX21zZzsKKy0gIGludCBfbXNnX251bWJlcjsKKy19OworLQorLQorLSNpZiBIQVZFX0NBVEdFVFMKKy0vKiBUaGVzZSB0d28gdmFyaWFibGVzIGFyZSBkZWZpbmVkIGluIHRoZSBhdXRvbWF0aWNhbGx5IGJ5IHBvLXRvLXRibC5zZWQKKy0gICBnZW5lcmF0ZWQgZmlsZSBgY2F0LWlkLXRibC5jJy4gICovCistZXh0ZXJuIGNvbnN0IHN0cnVjdCBfbXNnX2VudCBfbXNnX3RibFtdOworLWV4dGVybiBpbnQgX21zZ190YmxfbGVuZ3RoOworLSNlbmRpZgorLQorLQorLS8qIEZvciBhdXRvbWF0aWNhbCBleHRyYWN0aW9uIG9mIG1lc3NhZ2VzIHNvbWV0aW1lcyBubyByZWFsCistICAgdHJhbnNsYXRpb24gaXMgbmVlZGVkLiAgSW5zdGVhZCB0aGUgc3RyaW5nIGl0c2VsZiBpcyB0aGUgcmVzdWx0LiAgKi8KKy0jZGVmaW5lIGdldHRleHRfbm9vcChTdHIpIChTdHIpCistCistLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgY3VycmVudCBkZWZhdWx0IG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQKKy0gICBMQ19NRVNTQUdFUyBsb2NhbGUuICBJZiBub3QgZm91bmQsIHJldHVybnMgTVNHSUQgaXRzZWxmICh0aGUgZGVmYXVsdAorLSAgIHRleHQpLiAgKi8KKy1leHRlcm4gY2hhciAqZ2V0dGV4dCBQQVJBTVMgKChjb25zdCBjaGFyICpfX21zZ2lkKSk7CistZXh0ZXJuIGNoYXIgKmdldHRleHRfXyBQQVJBTVMgKChjb25zdCBjaGFyICpfX21zZ2lkKSk7CistCistLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50CistICAgTENfTUVTU0FHRVMgbG9jYWxlLiAgKi8KKy1leHRlcm4gY2hhciAqZGdldHRleHQgUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkKSk7CistZXh0ZXJuIGNoYXIgKmRnZXR0ZXh0X18gUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAorLQkJCQkgY29uc3QgY2hhciAqX19tc2dpZCkpOworLQorLS8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudCBDQVRFR09SWQorLSAgIGxvY2FsZS4gICovCistZXh0ZXJuIGNoYXIgKmRjZ2V0dGV4dCBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQsCistCQkJCWludCBfX2NhdGVnb3J5KSk7CistZXh0ZXJuIGNoYXIgKmRjZ2V0dGV4dF9fIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKKy0JCQkJICBjb25zdCBjaGFyICpfX21zZ2lkLCBpbnQgX19jYXRlZ29yeSkpOworLQorLQorLS8qIFNldCB0aGUgY3VycmVudCBkZWZhdWx0IG1lc3NhZ2UgY2F0YWxvZyB0byBET01BSU5OQU1FLgorLSAgIElmIERPTUFJTk5BTUUgaXMgbnVsbCwgcmV0dXJuIHRoZSBjdXJyZW50IGRlZmF1bHQuCistICAgSWYgRE9NQUlOTkFNRSBpcyAiIiwgcmVzZXQgdG8gdGhlIGRlZmF1bHQgb2YgIm1lc3NhZ2VzIi4gICovCistZXh0ZXJuIGNoYXIgKnRleHRkb21haW4gUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lKSk7CistZXh0ZXJuIGNoYXIgKnRleHRkb21haW5fXyBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUpKTsKKy0KKy0vKiBTcGVjaWZ5IHRoYXQgdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIHdpbGwgYmUgZm91bmQKKy0gICBpbiBESVJOQU1FIHJhdGhlciB0aGFuIGluIHRoZSBzeXN0ZW0gbG9jYWxlIGRhdGEgYmFzZS4gICovCistZXh0ZXJuIGNoYXIgKmJpbmR0ZXh0ZG9tYWluIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKKy0JCQkJICBjb25zdCBjaGFyICpfX2Rpcm5hbWUpKTsKKy1leHRlcm4gY2hhciAqYmluZHRleHRkb21haW5fXyBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCistCQkJCSAgICBjb25zdCBjaGFyICpfX2Rpcm5hbWUpKTsKKy0KKy0jaWYgRU5BQkxFX05MUworLQorLS8qIFNvbGFyaXMgMi4zIGhhcyB0aGUgZ2V0dGV4dCBmdW5jdGlvbiBidXQgZGNnZXR0ZXh0IGlzIG1pc3NpbmcuCistICAgU28gd2Ugb21pdCB0aGlzIG9wdGltaXphdGlvbiBmb3IgU29sYXJpcyAyLjMuICBCVFcsIFNvbGFyaXMgMi40CistICAgaGFzIGRjZ2V0dGV4dC4gICovCistIyBpZiAhSEFWRV9DQVRHRVRTICYmICghSEFWRV9HRVRURVhUIHx8IEhBVkVfRENHRVRURVhUKQorLQorLSMgIGRlZmluZSBnZXR0ZXh0KE1zZ2lkKQkJCQkJCSAgICAgIFwKKy0gICAgIGRnZXR0ZXh0IChOVUxMLCBNc2dpZCkKKy0KKy0jICBkZWZpbmUgZGdldHRleHQoRG9tYWlubmFtZSwgTXNnaWQpCQkJCQkgICAgICBcCistICAgICBkY2dldHRleHQgKERvbWFpbm5hbWUsIE1zZ2lkLCBMQ19NRVNTQUdFUykKKy0KKy0jICBpZiBkZWZpbmVkIF9fR05VQ19fICYmIF9fR05VQ19fID09IDIgJiYgX19HTlVDX01JTk9SX18gPj0gNworLS8qIFRoaXMgZ2xvYmFsIHZhcmlhYmxlIGlzIGRlZmluZWQgaW4gbG9hZG1zZ2NhdC5jLiAgV2UgbmVlZCBhIHNpZ24sCistICAgd2hldGhlciBhIG5ldyBjYXRhbG9nIHdhcyBsb2FkZWQsIHdoaWNoIGNhbiBiZSBhc3NvY2lhdGVkIHdpdGggYWxsCistICAgdHJhbnNsYXRpb25zLiAgKi8KKy1leHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7CistCistIyAgIGRlZmluZSBkY2dldHRleHQoRG9tYWlubmFtZSwgTXNnaWQsIENhdGVnb3J5KQkJCSAgICAgIFwKKy0gIChfX2V4dGVuc2lvbl9fCQkJCQkJCSAgICAgIFwKKy0gICAoewkJCQkJCQkJCSAgICAgIFwKKy0gICAgIGNoYXIgKl9fcmVzdWx0OwkJCQkJCQkgICAgICBcCistICAgICBpZiAoX19idWlsdGluX2NvbnN0YW50X3AgKE1zZ2lkKSkJCQkJCSAgICAgIFwKKy0gICAgICAgewkJCQkJCQkJICAgICAgXAorLQkgc3RhdGljIGNoYXIgKl9fdHJhbnNsYXRpb25fXzsJCQkJCSAgICAgIFwKKy0JIHN0YXRpYyBpbnQgX19jYXRhbG9nX2NvdW50ZXJfXzsJCQkJICAgICAgXAorLQkgaWYgKCEgX190cmFuc2xhdGlvbl9fIHx8IF9fY2F0YWxvZ19jb3VudGVyX18gIT0gX25sX21zZ19jYXRfY250cikgICAgXAorLQkgICB7CQkJCQkJCQkgICAgICBcCistCSAgICAgX190cmFuc2xhdGlvbl9fID0JCQkJCQkgICAgICBcCistCSAgICAgICBkY2dldHRleHRfXyAoRG9tYWlubmFtZSwgTXNnaWQsIENhdGVnb3J5KTsJCSAgICAgIFwKKy0JICAgICBfX2NhdGFsb2dfY291bnRlcl9fID0gX25sX21zZ19jYXRfY250cjsJCQkgICAgICBcCistCSAgIH0JCQkJCQkJCSAgICAgIFwKKy0JIF9fcmVzdWx0ID0gX190cmFuc2xhdGlvbl9fOwkJCQkJICAgICAgXAorLSAgICAgICB9CQkJCQkJCQkgICAgICBcCistICAgICBlbHNlCQkJCQkJCQkgICAgICBcCistICAgICAgIF9fcmVzdWx0ID0gZGNnZXR0ZXh0X18gKERvbWFpbm5hbWUsIE1zZ2lkLCBDYXRlZ29yeSk7CQkgICAgICBcCistICAgICBfX3Jlc3VsdDsJCQkJCQkJCSAgICAgIFwKKy0gICAgfSkpCistIyAgZW5kaWYKKy0jIGVuZGlmCistCistI2Vsc2UKKy0KKy0jIGRlZmluZSBnZXR0ZXh0KE1zZ2lkKSAoTXNnaWQpCistIyBkZWZpbmUgZGdldHRleHQoRG9tYWlubmFtZSwgTXNnaWQpIChNc2dpZCkKKy0jIGRlZmluZSBkY2dldHRleHQoRG9tYWlubmFtZSwgTXNnaWQsIENhdGVnb3J5KSAoTXNnaWQpCistIyBkZWZpbmUgdGV4dGRvbWFpbihEb21haW5uYW1lKSB3aGlsZSAoMCkgLyogbm90aGluZyAqLworLSMgZGVmaW5lIGJpbmR0ZXh0ZG9tYWluKERvbWFpbm5hbWUsIERpcm5hbWUpIHdoaWxlICgwKSAvKiBub3RoaW5nICovCistCistI2VuZGlmCistCistLyogQEAgYmVnaW4gb2YgZXBpbG9nIEBAICovCistCistI2lmZGVmIF9fY3BsdXNwbHVzCistfQorLSNlbmRpZgorLQorLSNlbmRpZgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvbGludXgtbXNnLnNlZCBscnpzei0wLjEyLjIwL2ludGwvbGludXgtbXNnLnNlZAorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9saW51eC1tc2cuc2VkCTE5OTgtMDQtMjYgMTQ6MjA6NTIuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xpbnV4LW1zZy5zZWQJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDEwMCArMCwwIEBACistIyBwbzJtc2cuc2VkIC0gQ29udmVydCBVbmlmb3J1bSBzdHlsZSAucG8gZmlsZSB0byBMaW51eCBzdHlsZSAubXNnIGZpbGUKKy0jIENvcHlyaWdodCAoQykgMTk5NSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0jIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KKy0jCistIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0jIGFueSBsYXRlciB2ZXJzaW9uLgorLSMKKy0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistIworLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorLSMKKy0jCistIyBUaGUgZmlyc3QgZGlyZWN0aXZlIGluIHRoZSAubXNnIHNob3VsZCBiZSB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKKy0jIG1lc3NhZ2Ugc2V0IG51bWJlci4gIFdlIHVzZSBhbHdheXMgc2V0IG51bWJlciAxLgorLSMKKy0xIHsKKy0gIGlcCistJHNldCAxICMgQXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IHBvMm1zZy5zZWQKKy0gIGgKKy0gIHMvLiovMC8KKy0gIHgKKy19CistIworLSMgTWl0Y2gncyBvbGQgY2F0YWxvZyBmb3JtYXQgZG9lcyBub3QgYWxsb3cgY29tbWVudHMuCistIworLSMgV2UgY29weSB0aGUgb3JpZ2luYWwgbWVzc2FnZSBhcyBhIGNvbW1lbnQgaW50byB0aGUgLm1zZyBmaWxlLgorLSMKKy0vXm1zZ2lkLyB7CistICBzL21zZ2lkWyAJXSoiLy8KKy0jCistIyBUaGlzIGRvZXMgbm90IHdvcmsgbm93IHdpdGggdGhlIG5ldyBmb3JtYXQuCistIyAvIiQvISB7CistIyAgIHMvXFwkLy8KKy0jICAgcy8kLyAuLi4gKG1vcmUgbGluZXMgZm9sbG93aW5nKSIvCistIyB9CistICB4CistIyBUaGUgZm9sbG93aW5nIG5pY2Ugc29sdXRpb24gaXMgYnkKKy0jIEJydW5vIDxIYWlibGVAbWEyczIubWF0aGVtYXRpay51bmkta2FybHNydWhlLmRlPgorLSAgdGQKKy0jIEluY3JlbWVudCBhIGRlY2ltYWwgbnVtYmVyIGluIHBhdHRlcm4gc3BhY2UuCistIyBGaXJzdCBoaWRlIHRyYWlsaW5nIGA5JyBkaWdpdHMuCistICA6ZAorLSAgcy85XChfKlwpJC9fXDEvCistICB0ZAorLSMgQXNzdXJlIGF0IGxlYXN0IG9uZSBkaWdpdCBpcyBhdmFpbGFibGUuCistICBzL15cKF8qXCkkLzBcMS8KKy0jIEluY3JlbWVudCB0aGUgbGFzdCBkaWdpdC4KKy0gIHMvOFwoXypcKSQvOVwxLworLSAgcy83XChfKlwpJC84XDEvCistICBzLzZcKF8qXCkkLzdcMS8KKy0gIHMvNVwoXypcKSQvNlwxLworLSAgcy80XChfKlwpJC81XDEvCistICBzLzNcKF8qXCkkLzRcMS8KKy0gIHMvMlwoXypcKSQvM1wxLworLSAgcy8xXChfKlwpJC8yXDEvCistICBzLzBcKF8qXCkkLzFcMS8KKy0jIENvbnZlcnQgdGhlIGhpZGRlbiBgOScgZGlnaXRzIHRvIGAwJ3MuCistICBzL18vMC9nCistICB4CistICBHCistICBzL1woLipcKSJcblwoWzAtOV0qXCkvJCAjXDIgT3JpZ2luYWwgTWVzc2FnZTooXDEpL3AKKy19CistIworLSMgVGhlIC5tc2cgZmlsZSBjb250YWlucywgb3RoZXIgdGhlbiB0aGUgLnBvIGZpbGUsIG9ubHkgdGhlIHRyYW5zbGF0aW9ucworLSMgYnV0IGVhY2ggZ2l2ZW4gYSB1bmlxdWUgSUQuICBTdGFydGluZyBmcm9tIDEgYW5kIGluY3JlbWVudGluZyBieSAxIGZvcgorLSMgZWFjaCBtZXNzYWdlIHdlIGFzc2lnbiB0aGVtIHRvIHRoZSBtZXNzYWdlcy4KKy0jIEl0IGlzIGltcG9ydGFudCB0aGF0IHRoZSAucG8gZmlsZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSBjYXQtaWQtdGJsLmMgZmlsZQorLSMgKHdpdGggcG8tdG8tdGJsKSBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHVzZWQgaGVyZS4gIChBdCBsZWFzdCB0aGUgb3JkZXIKKy0jIG9mIGRlY2xhcmF0aW9ucyBtdXN0IG5vdCBiZSBjaGFuZ2VkLikKKy0jCistL15tc2dzdHIvIHsKKy0gIHMvbXNnc3RyWyAJXSoiXCguKlwpIi8jIFwxLworLSMgQ2xlYXIgc3Vic3RpdHV0aW9uIGZsYWcuCistICB0YgorLSMgQXBwZW5kIHRoZSBuZXh0IGxpbmUuCistICA6YgorLSAgTgorLSMgTG9vayB3aGV0aGVyIHNlY29uZCBwYXJ0IGlzIGNvbnRpbnVhdGlvbiBsaW5lLgorLSAgcy9cKC4qXG5cKSJcKC4qXCkiL1wxXDIvCistIyBZZXMsIHRoZW4gYnJhbmNoLgorLSAgdGEKKy0gIFAKKy0gIEQKKy0jIE5vdGUgdGhhdCBEIGluY2x1ZGVzIGEganVtcCB0byB0aGUgc3RhcnQhIQorLSMgV2UgZm91bmQgYSBjb250aW51YXRpb24gbGluZS4gIEJ1dCBiZWZvcmUgcHJpbnRpbmcgaW5zZXJ0ICdcJy4KKy0gIDphCistICBzL1woLipcKVwoXG4uKlwpL1wxXFxcMi8KKy0gIFAKKy0jIFdlIGNhbm5vdCB1c2UgRCBoZXJlLgorLSAgcy8uKlxuXCguKlwpL1wxLworLSAgdGIKKy19CistZAorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvbG9hZGluZm8uaCBscnpzei0wLjEyLjIwL2ludGwvbG9hZGluZm8uaAorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9sb2FkaW5mby5oCTE5OTgtMDQtMjYgMTQ6MjA6NTIuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL2xvYWRpbmZvLmgJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDU4ICswLDAgQEAKKy0jaWZuZGVmIFBBUkFNUworLSMgaWYgX19TVERDX18KKy0jICBkZWZpbmUgUEFSQU1TKGFyZ3MpIGFyZ3MKKy0jIGVsc2UKKy0jICBkZWZpbmUgUEFSQU1TKGFyZ3MpICgpCistIyBlbmRpZgorLSNlbmRpZgorLQorLS8qIEVuY29kaW5nIG9mIGxvY2FsZSBuYW1lIHBhcnRzLiAgKi8KKy0jZGVmaW5lIENFTl9SRVZJU0lPTgkJMQorLSNkZWZpbmUgQ0VOX1NQT05TT1IJCTIKKy0jZGVmaW5lIENFTl9TUEVDSUFMCQk0CistI2RlZmluZSBYUEdfTk9STV9DT0RFU0VUCTgKKy0jZGVmaW5lIFhQR19DT0RFU0VUCQkxNgorLSNkZWZpbmUgVEVSUklUT1JZCQkzMgorLSNkZWZpbmUgQ0VOX0FVRElFTkNFCQk2NAorLSNkZWZpbmUgWFBHX01PRElGSUVSCQkxMjgKKy0KKy0jZGVmaW5lIENFTl9TUEVDSUZJQwkoQ0VOX1JFVklTSU9OfENFTl9TUE9OU09SfENFTl9TUEVDSUFMfENFTl9BVURJRU5DRSkKKy0jZGVmaW5lIFhQR19TUEVDSUZJQwkoWFBHX0NPREVTRVR8WFBHX05PUk1fQ09ERVNFVHxYUEdfTU9ESUZJRVIpCistCistCistc3RydWN0IGxvYWRlZF9sMTBuZmlsZQorLXsKKy0gIGNvbnN0IGNoYXIgKmZpbGVuYW1lOworLSAgaW50IGRlY2lkZWQ7CistCistICBjb25zdCB2b2lkICpkYXRhOworLQorLSAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqbmV4dDsKKy0gIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKnN1Y2Nlc3NvclsxXTsKKy19OworLQorLQorLWV4dGVybiBjb25zdCBjaGFyICpfbmxfbm9ybWFsaXplX2NvZGVzZXQgUEFSQU1TICgoY29uc3QgY2hhciAqY29kZXNldCwKKy0JCQkJCQkgIHNpemVfdCBuYW1lX2xlbikpOworLQorLWV4dGVybiBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoKKy1fbmxfbWFrZV9sMTBuZmxpc3QgUEFSQU1TICgoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKmwxMG5maWxlX2xpc3QsCistCQkJICAgIGNvbnN0IGNoYXIgKmRpcmxpc3QsIHNpemVfdCBkaXJsaXN0X2xlbiwgaW50IG1hc2ssCistCQkJICAgIGNvbnN0IGNoYXIgKmxhbmd1YWdlLCBjb25zdCBjaGFyICp0ZXJyaXRvcnksCistCQkJICAgIGNvbnN0IGNoYXIgKmNvZGVzZXQsCistCQkJICAgIGNvbnN0IGNoYXIgKm5vcm1hbGl6ZWRfY29kZXNldCwKKy0JCQkgICAgY29uc3QgY2hhciAqbW9kaWZpZXIsIGNvbnN0IGNoYXIgKnNwZWNpYWwsCistCQkJICAgIGNvbnN0IGNoYXIgKnNwb25zb3IsIGNvbnN0IGNoYXIgKnJldmlzaW9uLAorLQkJCSAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGRvX2FsbG9jYXRlKSk7CistCistCistZXh0ZXJuIGNvbnN0IGNoYXIgKl9ubF9leHBhbmRfYWxpYXMgUEFSQU1TICgoY29uc3QgY2hhciAqbmFtZSkpOworLQorLWV4dGVybiBpbnQgX25sX2V4cGxvZGVfbmFtZSBQQVJBTVMgKChjaGFyICpuYW1lLCBjb25zdCBjaGFyICoqbGFuZ3VhZ2UsCistCQkJCSAgICAgY29uc3QgY2hhciAqKm1vZGlmaWVyLAorLQkJCQkgICAgIGNvbnN0IGNoYXIgKip0ZXJyaXRvcnksCistCQkJCSAgICAgY29uc3QgY2hhciAqKmNvZGVzZXQsCistCQkJCSAgICAgY29uc3QgY2hhciAqKm5vcm1hbGl6ZWRfY29kZXNldCwKKy0JCQkJICAgICBjb25zdCBjaGFyICoqc3BlY2lhbCwKKy0JCQkJICAgICBjb25zdCBjaGFyICoqc3BvbnNvciwKKy0JCQkJICAgICBjb25zdCBjaGFyICoqcmV2aXNpb24pKTsKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2xvYWRtc2djYXQuYyBscnpzei0wLjEyLjIwL2ludGwvbG9hZG1zZ2NhdC5jCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2xvYWRtc2djYXQuYwkxOTk4LTA0LTI2IDE0OjIyOjM3LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC9sb2FkbXNnY2F0LmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDE5OSArMCwwIEBACistLyogTG9hZCBuZWVkZWQgbWVzc2FnZSBjYXRhbG9ncworLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSAgIGFueSBsYXRlciB2ZXJzaW9uLgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistCistICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLworLQorLSNpZmRlZiBIQVZFX0NPTkZJR19ICistIyBpbmNsdWRlIDxjb25maWcuaD4KKy0jZW5kaWYKKy0KKy0jaW5jbHVkZSA8ZmNudGwuaD4KKy0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+CistI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CistCistI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHN0ZGxpYi5oPgorLSNlbmRpZgorLQorLSNpZiBkZWZpbmVkIEhBVkVfVU5JU1REX0ggfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8dW5pc3RkLmg+CistI2VuZGlmCistCistI2lmIChkZWZpbmVkIEhBVkVfTU1BUCAmJiBkZWZpbmVkIEhBVkVfTVVOTUFQKSB8fCBkZWZpbmVkIF9MSUJDCistIyBpbmNsdWRlIDxzeXMvbW1hbi5oPgorLSNlbmRpZgorLQorLSNpbmNsdWRlICJnZXR0ZXh0LmgiCistI2luY2x1ZGUgImdldHRleHRQLmgiCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLQorLSNpZmRlZiBfTElCQworLS8qIFJlbmFtZSB0aGUgbm9uIElTTyBDIGZ1bmN0aW9ucy4gIFRoaXMgaXMgcmVxdWlyZWQgYnkgdGhlIHN0YW5kYXJkCistICAgYmVjYXVzZSBzb21lIElTTyBDIGZ1bmN0aW9ucyB3aWxsIHJlcXVpcmUgbGlua2luZyB3aXRoIHRoaXMgb2JqZWN0CistICAgZmlsZSBhbmQgdGhlIG5hbWUgc3BhY2UgbXVzdCBub3QgYmUgcG9sbHV0ZWQuICAqLworLSMgZGVmaW5lIGZzdGF0ICBfX2ZzdGF0CistIyBkZWZpbmUgb3BlbiAgIF9fb3BlbgorLSMgZGVmaW5lIGNsb3NlICBfX2Nsb3NlCistIyBkZWZpbmUgcmVhZCAgIF9fcmVhZAorLSMgZGVmaW5lIG1tYXAgICBfX21tYXAKKy0jIGRlZmluZSBtdW5tYXAgX19tdW5tYXAKKy0jZW5kaWYKKy0KKy0vKiBXZSBuZWVkIGEgc2lnbiwgd2hldGhlciBhIG5ldyBjYXRhbG9nIHdhcyBsb2FkZWQsIHdoaWNoIGNhbiBiZSBhc3NvY2lhdGVkCistICAgd2l0aCBhbGwgdHJhbnNsYXRpb25zLiAgVGhpcyBpcyBpbXBvcnRhbnQgaWYgdGhlIHRyYW5zbGF0aW9ucyBhcmUKKy0gICBjYWNoZWQgYnkgb25lIG9mIEdDQydzIGZlYXR1cmVzLiAgKi8KKy1pbnQgX25sX21zZ19jYXRfY250ciA9IDA7CistCistCistLyogTG9hZCB0aGUgbWVzc2FnZSBjYXRhbG9ncyBzcGVjaWZpZWQgYnkgRklMRU5BTUUuICBJZiBpdCBpcyBubyB2YWxpZAorLSAgIG1lc3NhZ2UgY2F0YWxvZyBkbyBub3RoaW5nLiAgKi8KKy12b2lkCistX25sX2xvYWRfZG9tYWluIChkb21haW5fZmlsZSkKKy0gICAgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbl9maWxlOworLXsKKy0gIGludCBmZDsKKy0gIHN0cnVjdCBzdGF0IHN0OworLSAgc3RydWN0IG1vX2ZpbGVfaGVhZGVyICpkYXRhID0gKHN0cnVjdCBtb19maWxlX2hlYWRlciAqKSAtMTsKKy0jaWYgKGRlZmluZWQgSEFWRV9NTUFQICYmIGRlZmluZWQgSEFWRV9NVU5NQVAgJiYgIWRlZmluZWQgRElTQUxMT1dfTU1BUCkgXAorLSAgICB8fCBkZWZpbmVkIF9MSUJDCistICBpbnQgdXNlX21tYXAgPSAwOworLSNlbmRpZgorLSAgc3RydWN0IGxvYWRlZF9kb21haW4gKmRvbWFpbjsKKy0KKy0gIGRvbWFpbl9maWxlLT5kZWNpZGVkID0gMTsKKy0gIGRvbWFpbl9maWxlLT5kYXRhID0gTlVMTDsKKy0KKy0gIC8qIElmIHRoZSByZWNvcmQgZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsaWQgbG9jYWxlIHRoZSBGSUxFTkFNRQorLSAgICAgbWlnaHQgYmUgTlVMTC4gIFRoaXMgY2FuIGhhcHBlbiB3aGVuIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4KKy0gICAgIHNwZWNpZmljYXRpb24gdGhlIGxvY2FsZSBmaWxlIG5hbWUgaXMgZGlmZmVyZW50IGZvciBYUEcgYW5kIENFTgorLSAgICAgc3ludGF4LiAgKi8KKy0gIGlmIChkb21haW5fZmlsZS0+ZmlsZW5hbWUgPT0gTlVMTCkKKy0gICAgcmV0dXJuOworLQorLSAgLyogVHJ5IHRvIG9wZW4gdGhlIGFkZHJlc3NlZCBmaWxlLiAgKi8KKy0gIGZkID0gb3BlbiAoZG9tYWluX2ZpbGUtPmZpbGVuYW1lLCBPX1JET05MWSk7CistICBpZiAoZmQgPT0gLTEpCistICAgIHJldHVybjsKKy0KKy0gIC8qIFdlIG11c3Qga25vdyBhYm91dCB0aGUgc2l6ZSBvZiB0aGUgZmlsZS4gICovCistICBpZiAoZnN0YXQgKGZkLCAmc3QpICE9IDAKKy0gICAgICAmJiBzdC5zdF9zaXplIDwgKG9mZl90KSBzaXplb2YgKHN0cnVjdCBtb19maWxlX2hlYWRlcikpCistICAgIHsKKy0gICAgICAvKiBTb21ldGhpbmcgd2VudCB3cm9uZy4gICovCistICAgICAgY2xvc2UgKGZkKTsKKy0gICAgICByZXR1cm47CistICAgIH0KKy0KKy0jaWYgKGRlZmluZWQgSEFWRV9NTUFQICYmIGRlZmluZWQgSEFWRV9NVU5NQVAgJiYgIWRlZmluZWQgRElTQUxMT1dfTU1BUCkgXAorLSAgICB8fCBkZWZpbmVkIF9MSUJDCistICAvKiBOb3cgd2UgYXJlIHJlYWR5IHRvIGxvYWQgdGhlIGZpbGUuICBJZiBtbWFwKCkgaXMgYXZhaWxhYmxlIHdlIHRyeQorLSAgICAgdGhpcyBmaXJzdC4gIElmIG5vdCBhdmFpbGFibGUgb3IgaXQgZmFpbGVkIHdlIHRyeSB0byBsb2FkIGl0LiAgKi8KKy0gIGRhdGEgPSAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyICopIG1tYXAgKE5VTEwsIHN0LnN0X3NpemUsIFBST1RfUkVBRCwKKy0JCQkJCSBNQVBfUFJJVkFURSwgZmQsIDApOworLQorLSAgaWYgKGRhdGEgIT0gKHN0cnVjdCBtb19maWxlX2hlYWRlciAqKSAtMSkKKy0gICAgeworLSAgICAgIC8qIG1tYXAoKSBjYWxsIHdhcyBzdWNjZXNzZnVsLiAgKi8KKy0gICAgICBjbG9zZSAoZmQpOworLSAgICAgIHVzZV9tbWFwID0gMTsKKy0gICAgfQorLSNlbmRpZgorLQorLSAgLyogSWYgdGhlIGRhdGEgaXMgbm90IHlldCBhdmFpbGFibGUgKGkuZS4gbW1hcCdlZCkgd2UgdHJ5IHRvIGxvYWQKKy0gICAgIGl0IG1hbnVhbGx5LiAgKi8KKy0gIGlmIChkYXRhID09IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgLTEpCistICAgIHsKKy0gICAgICBvZmZfdCB0b19yZWFkOworLSAgICAgIGNoYXIgKnJlYWRfcHRyOworLQorLSAgICAgIGRhdGEgPSAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyICopIG1hbGxvYyAoc3Quc3Rfc2l6ZSk7CistICAgICAgaWYgKGRhdGEgPT0gTlVMTCkKKy0JcmV0dXJuOworLQorLSAgICAgIHRvX3JlYWQgPSBzdC5zdF9zaXplOworLSAgICAgIHJlYWRfcHRyID0gKGNoYXIgKikgZGF0YTsKKy0gICAgICBkbworLQl7CistCSAgbG9uZyBpbnQgbmIgPSAobG9uZyBpbnQpIHJlYWQgKGZkLCByZWFkX3B0ciwgdG9fcmVhZCk7CistCSAgaWYgKG5iID09IC0xKQorLQkgICAgeworLQkgICAgICBjbG9zZSAoZmQpOworLQkgICAgICByZXR1cm47CistCSAgICB9CistCistCSAgcmVhZF9wdHIgKz0gbmI7CistCSAgdG9fcmVhZCAtPSBuYjsKKy0JfQorLSAgICAgIHdoaWxlICh0b19yZWFkID4gMCk7CistCistICAgICAgY2xvc2UgKGZkKTsKKy0gICAgfQorLQorLSAgLyogVXNpbmcgdGhlIG1hZ2ljIG51bWJlciB3ZSBjYW4gdGVzdCB3aGV0aGVyIGl0IHJlYWxseSBpcyBhIG1lc3NhZ2UKKy0gICAgIGNhdGFsb2cgZmlsZS4gICovCistICBpZiAoZGF0YS0+bWFnaWMgIT0gX01BR0lDICYmIGRhdGEtPm1hZ2ljICE9IF9NQUdJQ19TV0FQUEVEKQorLSAgICB7CistICAgICAgLyogVGhlIG1hZ2ljIG51bWJlciBpcyB3cm9uZzogbm90IGEgbWVzc2FnZSBjYXRhbG9nIGZpbGUuICAqLworLSNpZiAoZGVmaW5lZCBIQVZFX01NQVAgJiYgZGVmaW5lZCBIQVZFX01VTk1BUCAmJiAhZGVmaW5lZCBESVNBTExPV19NTUFQKSBcCistICAgIHx8IGRlZmluZWQgX0xJQkMKKy0gICAgICBpZiAodXNlX21tYXApCistCW11bm1hcCAoKGNhZGRyX3QpIGRhdGEsIHN0LnN0X3NpemUpOworLSAgICAgIGVsc2UKKy0jZW5kaWYKKy0JZnJlZSAoZGF0YSk7CistICAgICAgcmV0dXJuOworLSAgICB9CistCistICBkb21haW5fZmlsZS0+ZGF0YQorLSAgICA9IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqKSBtYWxsb2MgKHNpemVvZiAoc3RydWN0IGxvYWRlZF9kb21haW4pKTsKKy0gIGlmIChkb21haW5fZmlsZS0+ZGF0YSA9PSBOVUxMKQorLSAgICByZXR1cm47CistCistICBkb21haW4gPSAoc3RydWN0IGxvYWRlZF9kb21haW4gKikgZG9tYWluX2ZpbGUtPmRhdGE7CistICBkb21haW4tPmRhdGEgPSAoY2hhciAqKSBkYXRhOworLSAgZG9tYWluLT5tdXN0X3N3YXAgPSBkYXRhLT5tYWdpYyAhPSBfTUFHSUM7CistCistICAvKiBGaWxsIGluIHRoZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgYXZhaWxhYmxlIHRhYmxlcy4gICovCistICBzd2l0Y2ggKFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5yZXZpc2lvbikpCistICAgIHsKKy0gICAgY2FzZSAwOgorLSAgICAgIGRvbWFpbi0+bnN0cmluZ3MgPSBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+bnN0cmluZ3MpOworLSAgICAgIGRvbWFpbi0+b3JpZ190YWIgPSAoc3RydWN0IHN0cmluZ19kZXNjICopCistCSgoY2hhciAqKSBkYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPm9yaWdfdGFiX29mZnNldCkpOworLSAgICAgIGRvbWFpbi0+dHJhbnNfdGFiID0gKHN0cnVjdCBzdHJpbmdfZGVzYyAqKQorLQkoKGNoYXIgKikgZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT50cmFuc190YWJfb2Zmc2V0KSk7CistICAgICAgZG9tYWluLT5oYXNoX3NpemUgPSBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+aGFzaF90YWJfc2l6ZSk7CistICAgICAgZG9tYWluLT5oYXNoX3RhYiA9IChubHNfdWludDMyICopCistCSgoY2hhciAqKSBkYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPmhhc2hfdGFiX29mZnNldCkpOworLSAgICAgIGJyZWFrOworLSAgICBkZWZhdWx0OgorLSAgICAgIC8qIFRoaXMgaXMgYW4gaWxsZWdhbCByZXZpc2lvbi4gICovCistI2lmIChkZWZpbmVkIEhBVkVfTU1BUCAmJiBkZWZpbmVkIEhBVkVfTVVOTUFQICYmICFkZWZpbmVkIERJU0FMTE9XX01NQVApIFwKKy0gICAgfHwgZGVmaW5lZCBfTElCQworLSAgICAgIGlmICh1c2VfbW1hcCkKKy0JbXVubWFwICgoY2FkZHJfdCkgZGF0YSwgc3Quc3Rfc2l6ZSk7CistICAgICAgZWxzZQorLSNlbmRpZgorLQlmcmVlIChkYXRhKTsKKy0gICAgICBmcmVlIChkb21haW4pOworLSAgICAgIGRvbWFpbl9maWxlLT5kYXRhID0gTlVMTDsKKy0gICAgICByZXR1cm47CistICAgIH0KKy0KKy0gIC8qIFNob3cgdGhhdCBvbmUgZG9tYWluIGlzIGNoYW5nZWQuICBUaGlzIG1pZ2h0IG1ha2Ugc29tZSBjYWNoZWQKKy0gICAgIHRyYW5zbGF0aW9ucyBpbnZhbGlkLiAgKi8KKy0gICsrX25sX21zZ19jYXRfY250cjsKKy19CitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9sb2NhbGVhbGlhcy5jIGxyenN6LTAuMTIuMjAvaW50bC9sb2NhbGVhbGlhcy5jCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL2xvY2FsZWFsaWFzLmMJMTk5OC0wNC0yNiAxNDoyMjozNy4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvbG9jYWxlYWxpYXMuYwkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMzc4ICswLDAgQEAKKy0vKiBIYW5kbGUgYWxpYXNlcyBmb3IgbG9jYWxlIG5hbWVzCistICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgorLQorLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCistICAgYW55IGxhdGVyIHZlcnNpb24uCistCistICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0KKy0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCistICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCistCistI2lmZGVmIEhBVkVfQ09ORklHX0gKKy0jIGluY2x1ZGUgPGNvbmZpZy5oPgorLSNlbmRpZgorLQorLSNpbmNsdWRlIDxjdHlwZS5oPgorLSNpbmNsdWRlIDxzdGRpby5oPgorLSNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKy0KKy0jaWZkZWYgX19HTlVDX18KKy0jIGRlZmluZSBhbGxvY2EgX19idWlsdGluX2FsbG9jYQorLSMgZGVmaW5lIEhBVkVfQUxMT0NBIDEKKy0jZWxzZQorLSMgaWYgZGVmaW5lZCBIQVZFX0FMTE9DQV9IIHx8IGRlZmluZWQgX0xJQkMKKy0jICBpbmNsdWRlIDxhbGxvY2EuaD4KKy0jIGVsc2UKKy0jICBpZmRlZiBfQUlYCistICNwcmFnbWEgYWxsb2NhCistIyAgZWxzZQorLSMgICBpZm5kZWYgYWxsb2NhCistY2hhciAqYWxsb2NhICgpOworLSMgICBlbmRpZgorLSMgIGVuZGlmCistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIF9MSUJDCistIyBpbmNsdWRlIDxzdGRsaWIuaD4KKy0jZWxzZQorLWNoYXIgKmdldGVudiAoKTsKKy0jIGlmZGVmIEhBVkVfTUFMTE9DX0gKKy0jICBpbmNsdWRlIDxtYWxsb2MuaD4KKy0jIGVsc2UKKy12b2lkIGZyZWUgKCk7CistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpZiBkZWZpbmVkIEhBVkVfU1RSSU5HX0ggfHwgZGVmaW5lZCBfTElCQworLSMgaWZuZGVmIF9HTlVfU09VUkNFCistIyAgZGVmaW5lIF9HTlVfU09VUkNFCTEKKy0jIGVuZGlmCistIyBpbmNsdWRlIDxzdHJpbmcuaD4KKy0jZWxzZQorLSMgaW5jbHVkZSA8c3RyaW5ncy5oPgorLSMgaWZuZGVmIG1lbWNweQorLSMgIGRlZmluZSBtZW1jcHkoRHN0LCBTcmMsIE51bSkgYmNvcHkgKFNyYywgRHN0LCBOdW0pCistIyBlbmRpZgorLSNlbmRpZgorLSNpZiAhSEFWRV9TVFJDSFIgJiYgIWRlZmluZWQgX0xJQkMKKy0jIGlmbmRlZiBzdHJjaHIKKy0jICBkZWZpbmUgc3RyY2hyIGluZGV4CistIyBlbmRpZgorLSNlbmRpZgorLQorLSNpbmNsdWRlICJnZXR0ZXh0LmgiCistI2luY2x1ZGUgImdldHRleHRQLmgiCistCistLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLworLQorLSNpZmRlZiBfTElCQworLS8qIFJlbmFtZSB0aGUgbm9uIEFOU0kgQyBmdW5jdGlvbnMuICBUaGlzIGlzIHJlcXVpcmVkIGJ5IHRoZSBzdGFuZGFyZAorLSAgIGJlY2F1c2Ugc29tZSBBTlNJIEMgZnVuY3Rpb25zIHdpbGwgcmVxdWlyZSBsaW5raW5nIHdpdGggdGhpcyBvYmplY3QKKy0gICBmaWxlIGFuZCB0aGUgbmFtZSBzcGFjZSBtdXN0IG5vdCBiZSBwb2xsdXRlZC4gICovCistIyBkZWZpbmUgc3RyY2FzZWNtcCBfX3N0cmNhc2VjbXAKKy0jZW5kaWYKKy0KKy0KKy0vKiBGb3IgdGhvc2UgbG9vc2luZyBzeXN0ZW1zIHdoaWNoIGRvbid0IGhhdmUgYGFsbG9jYScgd2UgaGF2ZSB0byBhZGQKKy0gICBzb21lIGFkZGl0aW9uYWwgY29kZSBlbXVsYXRpbmcgaXQuICAqLworLSNpZmRlZiBIQVZFX0FMTE9DQQorLS8qIE5vdGhpbmcgaGFzIHRvIGJlIGRvbmUuICAqLworLSMgZGVmaW5lIEFERF9CTE9DSyhsaXN0LCBhZGRyZXNzKSAvKiBub3RoaW5nICovCistIyBkZWZpbmUgRlJFRV9CTE9DS1MobGlzdCkgLyogbm90aGluZyAqLworLSNlbHNlCistc3RydWN0IGJsb2NrX2xpc3QKKy17CistICB2b2lkICphZGRyZXNzOworLSAgc3RydWN0IGJsb2NrX2xpc3QgKm5leHQ7CistfTsKKy0jIGRlZmluZSBBRERfQkxPQ0sobGlzdCwgYWRkcikJCQkJCQkgICAgICBcCistICBkbyB7CQkJCQkJCQkJICAgICAgXAorLSAgICBzdHJ1Y3QgYmxvY2tfbGlzdCAqbmV3cCA9IChzdHJ1Y3QgYmxvY2tfbGlzdCAqKSBtYWxsb2MgKHNpemVvZiAoKm5ld3ApKTsgIFwKKy0gICAgLyogSWYgd2UgY2Fubm90IGdldCBhIGZyZWUgYmxvY2sgd2UgY2Fubm90IGFkZCB0aGUgbmV3IGVsZW1lbnQgdG8JICAgICAgXAorLSAgICAgICB0aGUgbGlzdC4gICovCQkJCQkJCSAgICAgIFwKKy0gICAgaWYgKG5ld3AgIT0gTlVMTCkgewkJCQkJCQkgICAgICBcCistICAgICAgbmV3cC0+YWRkcmVzcyA9IChhZGRyKTsJCQkJCQkgICAgICBcCistICAgICAgbmV3cC0+bmV4dCA9IChsaXN0KTsJCQkJCQkgICAgICBcCistICAgICAgKGxpc3QpID0gbmV3cDsJCQkJCQkJICAgICAgXAorLSAgICB9CQkJCQkJCQkJICAgICAgXAorLSAgfSB3aGlsZSAoMCkKKy0jIGRlZmluZSBGUkVFX0JMT0NLUyhsaXN0KQkJCQkJCSAgICAgIFwKKy0gIGRvIHsJCQkJCQkJCQkgICAgICBcCistICAgIHdoaWxlIChsaXN0ICE9IE5VTEwpIHsJCQkJCQkgICAgICBcCistICAgICAgc3RydWN0IGJsb2NrX2xpc3QgKm9sZCA9IGxpc3Q7CQkJCQkgICAgICBcCistICAgICAgbGlzdCA9IGxpc3QtPm5leHQ7CQkJCQkJICAgICAgXAorLSAgICAgIGZyZWUgKG9sZCk7CQkJCQkJCSAgICAgIFwKKy0gICAgfQkJCQkJCQkJCSAgICAgIFwKKy0gIH0gd2hpbGUgKDApCistIyB1bmRlZiBhbGxvY2EKKy0jIGRlZmluZSBhbGxvY2Eoc2l6ZSkgKG1hbGxvYyAoc2l6ZSkpCistI2VuZGlmCS8qIGhhdmUgYWxsb2NhICovCistCistCistc3RydWN0IGFsaWFzX21hcAorLXsKKy0gIGNvbnN0IGNoYXIgKmFsaWFzOworLSAgY29uc3QgY2hhciAqdmFsdWU7CistfTsKKy0KKy0KKy1zdGF0aWMgc3RydWN0IGFsaWFzX21hcCAqbWFwOworLXN0YXRpYyBzaXplX3Qgbm1hcCA9IDA7Cistc3RhdGljIHNpemVfdCBtYXhtYXAgPSAwOworLQorLQorLS8qIFByb3RvdHlwZXMgZm9yIGxvY2FsIGZ1bmN0aW9ucy4gICovCistc3RhdGljIHNpemVfdCByZWFkX2FsaWFzX2ZpbGUgUEFSQU1TICgoY29uc3QgY2hhciAqZm5hbWUsIGludCBmbmFtZV9sZW4pKTsKKy1zdGF0aWMgdm9pZCBleHRlbmRfYWxpYXNfdGFibGUgUEFSQU1TICgodm9pZCkpOworLXN0YXRpYyBpbnQgYWxpYXNfY29tcGFyZSBQQVJBTVMgKChjb25zdCBzdHJ1Y3QgYWxpYXNfbWFwICptYXAxLAorLQkJCQkgIGNvbnN0IHN0cnVjdCBhbGlhc19tYXAgKm1hcDIpKTsKKy0KKy0KKy1jb25zdCBjaGFyICoKKy1fbmxfZXhwYW5kX2FsaWFzIChuYW1lKQorLSAgICBjb25zdCBjaGFyICpuYW1lOworLXsKKy0gIHN0YXRpYyBjb25zdCBjaGFyICpsb2NhbGVfYWxpYXNfcGF0aCA9IExPQ0FMRV9BTElBU19QQVRIOworLSAgc3RydWN0IGFsaWFzX21hcCAqcmV0dmFsOworLSAgc2l6ZV90IGFkZGVkOworLQorLSAgZG8KKy0gICAgeworLSAgICAgIHN0cnVjdCBhbGlhc19tYXAgaXRlbTsKKy0KKy0gICAgICBpdGVtLmFsaWFzID0gbmFtZTsKKy0KKy0gICAgICBpZiAobm1hcCA+IDApCistCXJldHZhbCA9IChzdHJ1Y3QgYWxpYXNfbWFwICopIGJzZWFyY2ggKCZpdGVtLCBtYXAsIG5tYXAsCistCQkJCQkgICAgICAgc2l6ZW9mIChzdHJ1Y3QgYWxpYXNfbWFwKSwKKy0JCQkJCSAgICAgICAoaW50ICgqKSBQQVJBTVMgKChjb25zdCB2b2lkICosCistCQkJCQkJCQkgY29uc3Qgdm9pZCAqKSkKKy0JCQkJCQkpIGFsaWFzX2NvbXBhcmUpOworLSAgICAgIGVsc2UKKy0JcmV0dmFsID0gTlVMTDsKKy0KKy0gICAgICAvKiBXZSByZWFsbHkgZm91bmQgYW4gYWxpYXMuICBSZXR1cm4gdGhlIHZhbHVlLiAgKi8KKy0gICAgICBpZiAocmV0dmFsICE9IE5VTEwpCistCXJldHVybiByZXR2YWwtPnZhbHVlOworLQorLSAgICAgIC8qIFBlcmhhcHMgd2UgY2FuIGZpbmQgYW5vdGhlciBhbGlhcyBmaWxlLiAgKi8KKy0gICAgICBhZGRlZCA9IDA7CistICAgICAgd2hpbGUgKGFkZGVkID09IDAgJiYgbG9jYWxlX2FsaWFzX3BhdGhbMF0gIT0gJ1wwJykKKy0JeworLQkgIGNvbnN0IGNoYXIgKnN0YXJ0OworLQorLQkgIHdoaWxlIChsb2NhbGVfYWxpYXNfcGF0aFswXSA9PSAnOicpCistCSAgICArK2xvY2FsZV9hbGlhc19wYXRoOworLQkgIHN0YXJ0ID0gbG9jYWxlX2FsaWFzX3BhdGg7CistCistCSAgd2hpbGUgKGxvY2FsZV9hbGlhc19wYXRoWzBdICE9ICdcMCcgJiYgbG9jYWxlX2FsaWFzX3BhdGhbMF0gIT0gJzonKQorLQkgICAgKytsb2NhbGVfYWxpYXNfcGF0aDsKKy0KKy0JICBpZiAoc3RhcnQgPCBsb2NhbGVfYWxpYXNfcGF0aCkKKy0JICAgIGFkZGVkID0gcmVhZF9hbGlhc19maWxlIChzdGFydCwgbG9jYWxlX2FsaWFzX3BhdGggLSBzdGFydCk7CistCX0KKy0gICAgfQorLSAgd2hpbGUgKGFkZGVkICE9IDApOworLQorLSAgcmV0dXJuIE5VTEw7CistfQorLQorLQorLXN0YXRpYyBzaXplX3QKKy1yZWFkX2FsaWFzX2ZpbGUgKGZuYW1lLCBmbmFtZV9sZW4pCistICAgICBjb25zdCBjaGFyICpmbmFtZTsKKy0gICAgIGludCBmbmFtZV9sZW47CisteworLSNpZm5kZWYgSEFWRV9BTExPQ0EKKy0gIHN0cnVjdCBibG9ja19saXN0ICpibG9ja19saXN0ID0gTlVMTDsKKy0jZW5kaWYKKy0gIEZJTEUgKmZwOworLSAgY2hhciAqZnVsbF9mbmFtZTsKKy0gIHNpemVfdCBhZGRlZDsKKy0gIHN0YXRpYyBjb25zdCBjaGFyIGFsaWFzZmlsZVtdID0gIi9sb2NhbGUuYWxpYXMiOworLQorLSAgZnVsbF9mbmFtZSA9IChjaGFyICopIGFsbG9jYSAoZm5hbWVfbGVuICsgc2l6ZW9mIGFsaWFzZmlsZSk7CistICBBRERfQkxPQ0sgKGJsb2NrX2xpc3QsIGZ1bGxfZm5hbWUpOworLSAgbWVtY3B5IChmdWxsX2ZuYW1lLCBmbmFtZSwgZm5hbWVfbGVuKTsKKy0gIG1lbWNweSAoJmZ1bGxfZm5hbWVbZm5hbWVfbGVuXSwgYWxpYXNmaWxlLCBzaXplb2YgYWxpYXNmaWxlKTsKKy0KKy0gIGZwID0gZm9wZW4gKGZ1bGxfZm5hbWUsICJyIik7CistICBpZiAoZnAgPT0gTlVMTCkKKy0gICAgeworLSAgICAgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKKy0gICAgICByZXR1cm4gMDsKKy0gICAgfQorLQorLSAgYWRkZWQgPSAwOworLSAgd2hpbGUgKCFmZW9mIChmcCkpCistICAgIHsKKy0gICAgICAvKiBJdCBpcyBhIHJlYXNvbmFibGUgYXBwcm9hY2ggdG8gdXNlIGEgZml4IGJ1ZmZlciBoZXJlIGJlY2F1c2UKKy0JIGEpIHdlIGFyZSBvbmx5IGludGVyZXN0ZWQgaW4gdGhlIGZpcnN0IHR3byBmaWVsZHMKKy0JIGIpIHRoZXNlIGZpZWxkcyBtdXN0IGJlIHVzYWJsZSBhcyBmaWxlIG5hbWVzIGFuZCBzbyBtdXN0IG5vdAorLQkgICAgYmUgdGhhdCBsb25nCistICAgICAgICovCistICAgICAgY2hhciBidWZbQlVGU0laXTsKKy0gICAgICBjaGFyICphbGlhczsKKy0gICAgICBjaGFyICp2YWx1ZTsKKy0gICAgICBjaGFyICpjcDsKKy0KKy0gICAgICBpZiAoZmdldHMgKGJ1ZiwgQlVGU0laLCBmcCkgPT0gTlVMTCkKKy0JLyogRU9GIHJlYWNoZWQuICAqLworLQlicmVhazsKKy0KKy0gICAgICBjcCA9IGJ1ZjsKKy0gICAgICAvKiBJZ25vcmUgbGVhZGluZyB3aGl0ZSBzcGFjZS4gICovCistICAgICAgd2hpbGUgKGlzc3BhY2UgKGNwWzBdKSkKKy0JKytjcDsKKy0KKy0gICAgICAvKiBBIGxlYWRpbmcgJyMnIHNpZ25hbHMgYSBjb21tZW50IGxpbmUuICAqLworLSAgICAgIGlmIChjcFswXSAhPSAnXDAnICYmIGNwWzBdICE9ICcjJykKKy0JeworLQkgIGFsaWFzID0gY3ArKzsKKy0JICB3aGlsZSAoY3BbMF0gIT0gJ1wwJyAmJiAhaXNzcGFjZSAoY3BbMF0pKQorLQkgICAgKytjcDsKKy0JICAvKiBUZXJtaW5hdGUgYWxpYXMgbmFtZS4gICovCistCSAgaWYgKGNwWzBdICE9ICdcMCcpCistCSAgICAqY3ArKyA9ICdcMCc7CistCistCSAgLyogTm93IGxvb2sgZm9yIHRoZSBiZWdpbm5pbmcgb2YgdGhlIHZhbHVlLiAgKi8KKy0JICB3aGlsZSAoaXNzcGFjZSAoY3BbMF0pKQorLQkgICAgKytjcDsKKy0KKy0JICBpZiAoY3BbMF0gIT0gJ1wwJykKKy0JICAgIHsKKy0JICAgICAgY2hhciAqdHA7CistCSAgICAgIHNpemVfdCBsZW47CistCistCSAgICAgIHZhbHVlID0gY3ArKzsKKy0JICAgICAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgIWlzc3BhY2UgKGNwWzBdKSkKKy0JCSsrY3A7CistCSAgICAgIC8qIFRlcm1pbmF0ZSB2YWx1ZS4gICovCistCSAgICAgIGlmIChjcFswXSA9PSAnXG4nKQorLQkJeworLQkJICAvKiBUaGlzIGhhcyB0byBiZSBkb25lIHRvIG1ha2UgdGhlIGZvbGxvd2luZyB0ZXN0CistCQkgICAgIGZvciB0aGUgZW5kIG9mIGxpbmUgcG9zc2libGUuICBXZSBhcmUgbG9va2luZyBmb3IKKy0JCSAgICAgdGhlIHRlcm1pbmF0aW5nICdcbicgd2hpY2ggZG8gbm90IG92ZXJ3cml0ZSBoZXJlLiAgKi8KKy0JCSAgKmNwKysgPSAnXDAnOworLQkJICAqY3AgPSAnXG4nOworLQkJfQorLQkgICAgICBlbHNlIGlmIChjcFswXSAhPSAnXDAnKQorLQkJKmNwKysgPSAnXDAnOworLQorLQkgICAgICBpZiAobm1hcCA+PSBtYXhtYXApCistCQlleHRlbmRfYWxpYXNfdGFibGUgKCk7CistCistCSAgICAgIC8qIFdlIGNhbm5vdCBkZXBlbmQgb24gc3RyZHVwIGF2YWlsYWJsZSBpbiB0aGUgbGliYy4gIFNpZ2ghICAqLworLQkgICAgICBsZW4gPSBzdHJsZW4gKGFsaWFzKSArIDE7CistCSAgICAgIHRwID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOworLQkgICAgICBpZiAodHAgPT0gTlVMTCkKKy0JCXsKKy0JCSAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOworLQkJICByZXR1cm4gYWRkZWQ7CistCQl9CistCSAgICAgIG1lbWNweSAodHAsIGFsaWFzLCBsZW4pOworLQkgICAgICBtYXBbbm1hcF0uYWxpYXMgPSB0cDsKKy0KKy0JICAgICAgbGVuID0gc3RybGVuICh2YWx1ZSkgKyAxOworLQkgICAgICB0cCA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKKy0JICAgICAgaWYgKHRwID09IE5VTEwpCistCQl7CistCQkgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKKy0JCSAgcmV0dXJuIGFkZGVkOworLQkJfQorLQkgICAgICBtZW1jcHkgKHRwLCB2YWx1ZSwgbGVuKTsKKy0JICAgICAgbWFwW25tYXBdLnZhbHVlID0gdHA7CistCistCSAgICAgICsrbm1hcDsKKy0JICAgICAgKythZGRlZDsKKy0JICAgIH0KKy0JfQorLQorLSAgICAgIC8qIFBvc3NpYmx5IG5vdCB0aGUgd2hvbGUgbGluZSBmaXRzIGludG8gdGhlIGJ1ZmZlci4gIElnbm9yZQorLQkgdGhlIHJlc3Qgb2YgdGhlIGxpbmUuICAqLworLSAgICAgIHdoaWxlIChzdHJjaHIgKGNwLCAnXG4nKSA9PSBOVUxMKQorLQl7CistCSAgY3AgPSBidWY7CistCSAgaWYgKGZnZXRzIChidWYsIEJVRlNJWiwgZnApID09IE5VTEwpCistCSAgICAvKiBNYWtlIHN1cmUgdGhlIGlubmVyIGxvb3Agd2lsbCBiZSBsZWZ0LiAgVGhlIG91dGVyIGxvb3AKKy0JICAgICAgIHdpbGwgZXhpdCBhdCB0aGUgYGZlb2YnIHRlc3QuICAqLworLQkgICAgKmNwID0gJ1xuJzsKKy0JfQorLSAgICB9CistCistICAvKiBTaG91bGQgd2UgdGVzdCBmb3IgZmVycm9yKCk/ICBJIHRoaW5rIHdlIGhhdmUgdG8gc2lsZW50bHkgaWdub3JlCistICAgICBlcnJvcnMuICAtLWRyZXBwZXIgICovCistICBmY2xvc2UgKGZwKTsKKy0KKy0gIGlmIChhZGRlZCA+IDApCistICAgIHFzb3J0IChtYXAsIG5tYXAsIHNpemVvZiAoc3RydWN0IGFsaWFzX21hcCksCistCSAgIChpbnQgKCopIFBBUkFNUyAoKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkpIGFsaWFzX2NvbXBhcmUpOworLQorLSAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOworLSAgcmV0dXJuIGFkZGVkOworLX0KKy0KKy0KKy1zdGF0aWMgdm9pZAorLWV4dGVuZF9hbGlhc190YWJsZSAoKQorLXsKKy0gIHNpemVfdCBuZXdfc2l6ZTsKKy0gIHN0cnVjdCBhbGlhc19tYXAgKm5ld19tYXA7CistCistICBuZXdfc2l6ZSA9IG1heG1hcCA9PSAwID8gMTAwIDogMiAqIG1heG1hcDsKKy0gIG5ld19tYXAgPSAoc3RydWN0IGFsaWFzX21hcCAqKSBtYWxsb2MgKG5ld19zaXplCistCQkJCQkgKiBzaXplb2YgKHN0cnVjdCBhbGlhc19tYXApKTsKKy0gIGlmIChuZXdfbWFwID09IE5VTEwpCistICAgIC8qIFNpbXBseSBkb24ndCBleHRlbmQ6IHdlIGRvbid0IGhhdmUgYW55IG1vcmUgY29yZS4gICovCistICAgIHJldHVybjsKKy0KKy0gIG1lbWNweSAobmV3X21hcCwgbWFwLCBubWFwICogc2l6ZW9mIChzdHJ1Y3QgYWxpYXNfbWFwKSk7CistCistICBpZiAobWF4bWFwICE9IDApCistICAgIGZyZWUgKG1hcCk7CistCistICBtYXAgPSBuZXdfbWFwOworLSAgbWF4bWFwID0gbmV3X3NpemU7CistfQorLQorLQorLXN0YXRpYyBpbnQKKy1hbGlhc19jb21wYXJlIChtYXAxLCBtYXAyKQorLSAgICAgY29uc3Qgc3RydWN0IGFsaWFzX21hcCAqbWFwMTsKKy0gICAgIGNvbnN0IHN0cnVjdCBhbGlhc19tYXAgKm1hcDI7CisteworLSNpZiBkZWZpbmVkIF9MSUJDIHx8IGRlZmluZWQgSEFWRV9TVFJDQVNFQ01QCistICByZXR1cm4gc3RyY2FzZWNtcCAobWFwMS0+YWxpYXMsIG1hcDItPmFsaWFzKTsKKy0jZWxzZQorLSAgY29uc3QgdW5zaWduZWQgY2hhciAqcDEgPSAoY29uc3QgdW5zaWduZWQgY2hhciAqKSBtYXAxLT5hbGlhczsKKy0gIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnAyID0gKGNvbnN0IHVuc2lnbmVkIGNoYXIgKikgbWFwMi0+YWxpYXM7CistICB1bnNpZ25lZCBjaGFyIGMxLCBjMjsKKy0KKy0gIGlmIChwMSA9PSBwMikKKy0gICAgcmV0dXJuIDA7CistCistICBkbworLSAgICB7CistICAgICAgLyogSSBrbm93IHRoaXMgc2VlbXMgdG8gYmUgb2RkIGJ1dCB0aGUgdG9sb3dlcigpIGZ1bmN0aW9uIGluCistCSBzb21lIHN5c3RlbXMgbGliYyBjYW5ub3QgaGFuZGxlIG5vbmFscGhhIGNoYXJhY3RlcnMuICAqLworLSAgICAgIGMxID0gaXN1cHBlciAoKnAxKSA/IHRvbG93ZXIgKCpwMSkgOiAqcDE7CistICAgICAgYzIgPSBpc3VwcGVyICgqcDIpID8gdG9sb3dlciAoKnAyKSA6ICpwMjsKKy0gICAgICBpZiAoYzEgPT0gJ1wwJykKKy0JYnJlYWs7CistICAgICAgKytwMTsKKy0gICAgICArK3AyOworLSAgICB9CistICB3aGlsZSAoYzEgPT0gYzIpOworLQorLSAgcmV0dXJuIGMxIC0gYzI7CistI2VuZGlmCistfQorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvTWFrZWZpbGUuaW4gbHJ6c3otMC4xMi4yMC9pbnRsL01ha2VmaWxlLmluCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL01ha2VmaWxlLmluCTE5OTgtMDQtMjYgMTQ6MjI6MzUuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL01ha2VmaWxlLmluCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSwyMTQgKzAsMCBAQAorLSMgTWFrZWZpbGUgZm9yIGRpcmVjdG9yeSB3aXRoIG1lc3NhZ2UgY2F0YWxvZyBoYW5kbGluZyBpbiBHTlUgTkxTIFV0aWxpdGllcy4KKy0jIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0jCistIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0jIGFueSBsYXRlciB2ZXJzaW9uLgorLSMKKy0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistIworLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorLQorLVBBQ0tBR0UgPSBAUEFDS0FHRUAKKy1WRVJTSU9OID0gQFZFUlNJT05ACistCistU0hFTEwgPSAvYmluL3NoCistCistc3JjZGlyID0gQHNyY2RpckAKKy10b3Bfc3JjZGlyID0gQHRvcF9zcmNkaXJACistdG9wX2J1aWxkZGlyID0gLi4KKy1WUEFUSCA9IEBzcmNkaXJACistCistcHJlZml4ID0gQHByZWZpeEAKKy1leGVjX3ByZWZpeCA9IEBleGVjX3ByZWZpeEAKKy10cmFuc2Zvcm0gPSBAcHJvZ3JhbV90cmFuc2Zvcm1fbmFtZUAKKy1saWJkaXIgPSAkKGV4ZWNfcHJlZml4KS9saWIKKy1pbmNsdWRlZGlyID0gJChwcmVmaXgpL2luY2x1ZGUKKy1kYXRhZGlyID0gJChwcmVmaXgpL0BEQVRBRElSTkFNRUAKKy1sb2NhbGVkaXIgPSAkKGRhdGFkaXIpL2xvY2FsZQorLWdudWxvY2FsZWRpciA9ICQocHJlZml4KS9zaGFyZS9sb2NhbGUKKy1nZXR0ZXh0c3JjZGlyID0gQGRhdGFkaXJAL2dldHRleHQvaW50bAorLWFsaWFzcGF0aCA9ICQobG9jYWxlZGlyKTouCistc3ViZGlyID0gaW50bAorLQorLUlOU1RBTEwgPSBASU5TVEFMTEAKKy1JTlNUQUxMX0RBVEEgPSBASU5TVEFMTF9EQVRBQAorLU1LSU5TVEFMTERJUlMgPSBATUtJTlNUQUxMRElSU0AKKy0KKy1sID0gQGxACistCistQVIgPSBhcgorLUNDID0gQENDQAorLUxJQlRPT0wgPSBATElCVE9PTEAKKy1SQU5MSUIgPSBAUkFOTElCQAorLQorLURFRlMgPSAtRExPQ0FMRURJUj1cIiQobG9jYWxlZGlyKVwiIC1ER05VTE9DQUxFRElSPVwiJChnbnVsb2NhbGVkaXIpXCIgXAorLS1ETE9DQUxFX0FMSUFTX1BBVEg9XCIkKGFsaWFzcGF0aClcIiBAREVGU0AKKy1DUFBGTEFHUyA9IEBDUFBGTEFHU0AKKy1DRkxBR1MgPSBAQ0ZMQUdTQAorLUxERkxBR1MgPSBATERGTEFHU0AKKy0KKy1DT01QSUxFID0gJChDQykgLWMgJChERUZTKSAkKElOQ0xVREVTKSAkKENQUEZMQUdTKSAkKENGTEFHUykgJChYQ0ZMQUdTKQorLQorLUhFQURFUlMgPSAkKENPTUhEUlMpIGxpYmdldHRleHQuaCBsb2FkaW5mby5oCistQ09NSERSUyA9IGdldHRleHQuaCBnZXR0ZXh0UC5oIGhhc2gtc3RyaW5nLmgKKy1TT1VSQ0VTID0gJChDT01TUkNTKSBpbnRsLWNvbXBhdC5jIGNhdC1jb21wYXQuYworLUNPTVNSQ1MgPSBiaW5kdGV4dGRvbS5jIGRjZ2V0dGV4dC5jIGRnZXR0ZXh0LmMgZ2V0dGV4dC5jIFwKKy1maW5kZG9tYWluLmMgbG9hZG1zZ2NhdC5jIGxvY2FsZWFsaWFzLmMgdGV4dGRvbWFpbi5jIGwxMG5mbGlzdC5jIFwKKy1leHBsb2RlbmFtZS5jCistT0JKRUNUUyA9IEBJTlRMT0JKU0AgYmluZHRleHRkb20uJGxvIGRjZ2V0dGV4dC4kbG8gZGdldHRleHQuJGxvIGdldHRleHQuJGxvIFwKKy1maW5kZG9tYWluLiRsbyBsb2FkbXNnY2F0LiRsbyBsb2NhbGVhbGlhcy4kbG8gdGV4dGRvbWFpbi4kbG8gbDEwbmZsaXN0LiRsbyBcCistZXhwbG9kZW5hbWUuJGxvCistQ0FUT0JKUyA9IGNhdC1jb21wYXQuJGxvIC4uL3BvL2NhdC1pZC10YmwuJGxvCistR0VUVE9CSlMgPSBpbnRsLWNvbXBhdC4kbG8KKy1ESVNURklMRVMuY29tbW9uID0gQ2hhbmdlTG9nIE1ha2VmaWxlLmluIGxpbnV4LW1zZy5zZWQgcG8ydGJsLnNlZC5pbiBcCisteG9wZW4tbXNnLnNlZCAkKEhFQURFUlMpICQoU09VUkNFUykKKy1ESVNURklMRVMubm9ybWFsID0gVkVSU0lPTgorLURJU1RGSUxFUy5nZXR0ZXh0ID0gbGliaW50bC5nbGliYyBpbnRsaC5pbnN0LmluCistCistLlNVRkZJWEVTOgorLS5TVUZGSVhFUzogLmMgLm8gLmxvCistLmMubzoKKy0JJChDT01QSUxFKSAkPAorLS5jLmxvOgorLQkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJDwKKy0KKy1JTkNMVURFUyA9IC1JLi4gLUkuIC1JJCh0b3Bfc3JjZGlyKS9pbnRsIC1JJCh0b3Bfc3JjZGlyKS9saWIKKy0KKy1hbGw6IGFsbC1AVVNFX0lOQ0xVREVEX0xJQklOVExACistCistYWxsLXllczogbGliaW50bC4kbGEgaW50bGguaW5zdAorLWFsbC1ubzoKKy0KKy1saWJpbnRsLmE6ICQoT0JKRUNUUykKKy0Jcm0gLWYgJEAKKy0JJChBUikgY3J1ICRAICQoT0JKRUNUUykKKy0JJChSQU5MSUIpICRACistCistbGliaW50bC5sYTogJChPQkpFQ1RTKQorLQkkKExJQlRPT0wpIC0tbW9kZT1saW5rICQoQ0MpICQoTERGTEFHUykgLW8gJEAgJChPQkpFQ1RTKSBcCistCQkgICAtdmVyc2lvbi1pbmZvIDE6MCAtcnBhdGggJChsaWJkaXIpCistCistLi4vcG8vY2F0LWlkLXRibC4kbG86IC4uL3BvL2NhdC1pZC10YmwuYyAkKHRvcF9zcmNkaXIpL3BvLyQoUEFDS0FHRSkucG90CistCWNkIC4uL3BvICYmICQoTUFLRSkgY2F0LWlkLXRibC4kbG8KKy0KKy1jaGVjazogYWxsCistCistIyBUaGlzIGluc3RhbGxhdGlvbiBnb2FsIGlzIG9ubHkgdXNlZCBpbiBHTlUgZ2V0dGV4dC4gIFBhY2thZ2VzIHdoaWNoCistIyBvbmx5IHVzZSB0aGUgbGlicmFyeSBzaG91bGQgdXNlIGluc3RhbGwgaW5zdGVhZC4KKy0KKy0jIFdlIG11c3Qgbm90IGluc3RhbGwgdGhlIGxpYmludGwuaC9saWJpbnRsLmEgZmlsZXMgaWYgd2UgYXJlIG9uIGEKKy0jIHN5c3RlbSB3aGljaCBoYXMgdGhlIGdldHRleHQoKSBmdW5jdGlvbiBpbiBpdHMgQyBsaWJyYXJ5IG9yIGluIGEKKy0jIHNlcGFyYXRlIGxpYnJhcnkgb3IgdXNlIHRoZSBjYXRnZXRzIGludGVyZmFjZS4gIEEgc3BlY2lhbCBjYXNlIGlzCistIyB3aGVyZSBjb25maWd1cmUgZm91bmQgYSBwcmV2aW91c2x5IGluc3RhbGxlZCBHTlUgZ2V0dGV4dCBsaWJyYXJ5LgorLSMgSWYgeW91IHdhbnQgdG8gdXNlIHRoZSBvbmUgd2hpY2ggY29tZXMgd2l0aCB0aGlzIHZlcnNpb24gb2YgdGhlCistIyBwYWNrYWdlLCB5b3UgaGF2ZSB0byB1c2UgYGNvbmZpZ3VyZSAtLXdpdGgtaW5jbHVkZWQtZ2V0dGV4dCcuCistaW5zdGFsbDogaW5zdGFsbC1leGVjIGluc3RhbGwtZGF0YQorLWluc3RhbGwtZXhlYzogYWxsCistCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQiIFwKKy0JICAgJiYgdGVzdCAnQElOVExPQkpTQCcgPSAnJChHRVRUT0JKUyknOyB0aGVuIFwKKy0JICBpZiB0ZXN0IC1yICQoTUtJTlNUQUxMRElSUyk7IHRoZW4gXAorLQkgICAgJChNS0lOU1RBTExESVJTKSAkKGxpYmRpcikgJChpbmNsdWRlZGlyKTsgXAorLQkgIGVsc2UgXAorLQkgICAgJCh0b3Bfc3JjZGlyKS9ta2luc3RhbGxkaXJzICQobGliZGlyKSAkKGluY2x1ZGVkaXIpOyBcCistCSAgZmk7IFwKKy0JICAkKElOU1RBTExfREFUQSkgaW50bGguaW5zdCAkKGluY2x1ZGVkaXIpL2xpYmludGwuaDsgXAorLQkgICQoSU5TVEFMTF9EQVRBKSBsaWJpbnRsLmEgJChsaWJkaXIpL2xpYmludGwuYTsgXAorLQllbHNlIFwKKy0JICA6IDsgXAorLQlmaQorLWluc3RhbGwtZGF0YTogYWxsCistCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQiOyB0aGVuIFwKKy0JICBpZiB0ZXN0IC1yICQoTUtJTlNUQUxMRElSUyk7IHRoZW4gXAorLQkgICAgJChNS0lOU1RBTExESVJTKSAkKGdldHRleHRzcmNkaXIpOyBcCistCSAgZWxzZSBcCistCSAgICAkKHRvcF9zcmNkaXIpL21raW5zdGFsbGRpcnMgJChnZXR0ZXh0c3JjZGlyKTsgXAorLQkgIGZpOyBcCistCSAgJChJTlNUQUxMX0RBVEEpIFZFUlNJT04gJChnZXR0ZXh0c3JjZGlyKS9WRVJTSU9OOyBcCistCSAgZGlzdHM9IiQoRElTVEZJTEVTLmNvbW1vbikiOyBcCistCSAgZm9yIGZpbGUgaW4gJCRkaXN0czsgZG8gXAorLQkgICAgJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS8kJGZpbGUgJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKKy0JICBkb25lOyBcCistCWVsc2UgXAorLQkgIDogOyBcCistCWZpCistCistIyBEZWZpbmUgdGhpcyBhcyBlbXB0eSB1bnRpbCBJIGZvdW5kIGEgdXNlZnVsIGFwcGxpY2F0aW9uLgorLWluc3RhbGxjaGVjazoKKy0KKy11bmluc3RhbGw6CistCWRpc3RzPSIkKERJU1RGSUxFUy5jb21tb24pIjsgXAorLQlmb3IgZmlsZSBpbiAkJGRpc3RzOyBkbyBcCistCSAgcm0gLWYgJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKKy0JZG9uZQorLQorLWluZm8gZHZpOgorLQorLSQoT0JKRUNUUyk6IC4uL2NvbmZpZy5oIGxpYmdldHRleHQuaAorLWJpbmR0ZXh0ZG9tLiRsbyBmaW5kZG9tYWluLiRsbyBsb2FkbXNnY2F0LiRsbzogZ2V0dGV4dFAuaCBnZXR0ZXh0LmggbG9hZGluZm8uaAorLWRjZ2V0dGV4dC4kbG86IGdldHRleHRQLmggZ2V0dGV4dC5oIGhhc2gtc3RyaW5nLmggbG9hZGluZm8uaAorLQorLXRhZ3M6IFRBR1MKKy0KKy1UQUdTOiAkKEhFQURFUlMpICQoU09VUkNFUykKKy0JaGVyZT1gcHdkYDsgY2QgJChzcmNkaXIpICYmIGV0YWdzIC1vICQkaGVyZS9UQUdTICQoSEVBREVSUykgJChTT1VSQ0VTKQorLQorLWlkOiBJRAorLQorLUlEOiAkKEhFQURFUlMpICQoU09VUkNFUykKKy0JaGVyZT1gcHdkYDsgY2QgJChzcmNkaXIpICYmIG1raWQgLWYkJGhlcmUvSUQgJChIRUFERVJTKSAkKFNPVVJDRVMpCistCistCistbW9zdGx5Y2xlYW46CistCXJtIC1mICouYSAqLm8gKi5sbyBjb3JlIGNvcmUuKgorLQorLWNsZWFuOiBtb3N0bHljbGVhbgorLQorLWRpc3RjbGVhbjogY2xlYW4KKy0Jcm0gLWYgTWFrZWZpbGUgSUQgVEFHUyBwbzJtc2cuc2VkIHBvMnRibC5zZWQgbGliaW50bC5oCistCistbWFpbnRhaW5lci1jbGVhbjogZGlzdGNsZWFuCistCUBlY2hvICJUaGlzIGNvbW1hbmQgaXMgaW50ZW5kZWQgZm9yIG1haW50YWluZXJzIHRvIHVzZTsiCistCUBlY2hvICJpdCBkZWxldGVzIGZpbGVzIHRoYXQgbWF5IHJlcXVpcmUgc3BlY2lhbCB0b29scyB0byByZWJ1aWxkLiIKKy0KKy0KKy0jIEdOVSBnZXR0ZXh0IG5lZWRzIG5vdCBjb250YWluIHRoZSBmaWxlIGBWRVJTSU9OJyBidXQgY29udGFpbnMgc29tZQorLSMgb3RoZXIgZmlsZXMgd2hpY2ggc2hvdWxkIG5vdCBiZSBkaXN0cmlidXRlZCBpbiBvdGhlciBwYWNrYWdlcy4KKy1kaXN0ZGlyID0gLi4vJChQQUNLQUdFKS0kKFZFUlNJT04pLyQoc3ViZGlyKQorLWRpc3QgZGlzdGRpcjogTWFrZWZpbGUgJChESVNURklMRVMpCistCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gZ2V0dGV4dDsgdGhlbiBcCistCSAgYWRkaXRpb25hbD0iJChESVNURklMRVMuZ2V0dGV4dCkiOyBcCistCWVsc2UgXAorLQkgIGFkZGl0aW9uYWw9IiQoRElTVEZJTEVTLm5vcm1hbCkiOyBcCistCWZpOyBcCistCWZvciBmaWxlIGluICQoRElTVEZJTEVTLmNvbW1vbikgJCRhZGRpdGlvbmFsOyBkbyBcCistCSAgbG4gJChzcmNkaXIpLyQkZmlsZSAkKGRpc3RkaXIpIDI+IC9kZXYvbnVsbCBcCistCSAgICB8fCBjcCAtcCAkKHNyY2RpcikvJCRmaWxlICQoZGlzdGRpcik7IFwKKy0JZG9uZQorLQorLWRpc3QtbGliYzoKKy0JdGFyIHpjdmYgaW50bC1nbGliYy50YXIuZ3ogJChDT01TUkNTKSAkKENPTUhEUlMpIGxpYmludGwuaC5nbGliYworLQorLU1ha2VmaWxlOiBNYWtlZmlsZS5pbiAuLi9jb25maWcuc3RhdHVzCistCWNkIC4uIFwKKy0JICAmJiBDT05GSUdfRklMRVM9JChzdWJkaXIpLyRAIENPTkZJR19IRUFERVJTPSAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMKKy0KKy0jIFRoZSBkZXBlbmRlbmN5IGZvciBpbnRsaC5pbnN0IGlzIGRpZmZlcmVudCBpbiBnZXR0ZXh0IGFuZCBhbGwgb3RoZXIKKy0jIHBhY2thZ2VzLiAgQmVjYXVzZSB3ZSBjYW5ub3QgeW91IEdOVSBtYWtlIGZlYXR1cmVzIHdlIGhhdmUgdG8gc29sdmUKKy0jIHRoZSBwcm9ibGVtIHdoaWxlIHJld3JpdGluZyBNYWtlZmlsZS5pbi4KKy1AR1RfWUVTQGludGxoLmluc3Q6IGludGxoLmluc3QuaW4gLi4vY29uZmlnLnN0YXR1cworLUBHVF9ZRVNACWNkIC4uIFwKKy1AR1RfWUVTQAkmJiBDT05GSUdfRklMRVM9JChzdWJkaXIpLyRAIENPTkZJR19IRUFERVJTPSBcCistQEdUX1lFU0AJICAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMKKy1AR1RfTk9ALlBIT05ZOiBpbnRsaC5pbnN0CistQEdUX05PQGludGxoLmluc3Q6CistCistIyBUZWxsIHZlcnNpb25zIFszLjU5LDMuNjMpIG9mIEdOVSBtYWtlIG5vdCB0byBleHBvcnQgYWxsIHZhcmlhYmxlcy4KKy0jIE90aGVyd2lzZSBhIHN5c3RlbSBsaW1pdCAoZm9yIFN5c1YgYXQgbGVhc3QpIG1heSBiZSBleGNlZWRlZC4KKy0uTk9FWFBPUlQ6CitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9wbzJ0Ymwuc2VkLmluIGxyenN6LTAuMTIuMjAvaW50bC9wbzJ0Ymwuc2VkLmluCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL3BvMnRibC5zZWQuaW4JMTk5OC0wNC0yNiAxNDoyMDo1Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwvcG8ydGJsLnNlZC5pbgkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMTAyICswLDAgQEAKKy0jIHBvMnRibC5zZWQgLSBDb252ZXJ0IFVuaWZvcnVtIHN0eWxlIC5wbyBmaWxlIHRvIGxvb2t1cCB0YWJsZSBmb3IgY2F0Z2V0cworLSMgQ29weXJpZ2h0IChDKSAxOTk1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorLSMgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgorLSMKKy0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQorLSMgYW55IGxhdGVyIHZlcnNpb24uCistIworLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0jCistIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCistIworLTEgeworLSAgaVwKKy0vKiBBdXRvbWF0aWNhbGx5IGdlbmVyYXRlZCBieSBwbzJ0Ymwuc2VkIGZyb20gQFBBQ0tBR0UgTkFNRUAucG90LiAgKi9cCistXAorLSNpZiBIQVZFX0NPTkZJR19IXAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+XAorLSNlbmRpZlwKKy1cCistI2luY2x1ZGUgImxpYmdldHRleHQuaCJcCistXAorLWNvbnN0IHN0cnVjdCBfbXNnX2VudCBfbXNnX3RibFtdID0geworLSAgaAorLSAgcy8uKi8wLworLSAgeAorLX0KKy0jCistIyBXcml0ZSBtc2dpZCBlbnRyaWVzIGluIEMgYXJyYXkgZm9ybS4KKy0jCistL15tc2dpZC8geworLSAgcy9tc2dpZFsgCV0qXCgiLioiXCkvICB7XDEvCistICB0YgorLSMgQXBwZW5kIHRoZSBuZXh0IGxpbmUKKy0gIDpiCistICBOCistIyBMb29rIHdoZXRoZXIgc2Vjb25kIHBhcnQgaXMgY29udGludWF0aW9uIGxpbmUuCistICBzL1woLipcKSJcKFxuXCkiXCguKiJcKS9cMVwyXDMvCistIyBZZXMsIHRoZW4gYnJhbmNoLgorLSAgdGEKKy0jIEJlY2F1c2Ugd2UgYXNzdW1lIHRoYXQgdGhlIGlucHV0IGZpbGUgY29ycmVjdGx5IGZvcm1lZCB0aGUgbGluZQorLSMganVzdCByZWFkIGNhbm5vdCBiZSBhZ2FpbiBiZSBhIG1zZ2lkIGxpbmUuICBTbyBpdCdzIHNhZmUgdG8gaWdub3JlCistIyBpdC4KKy0gIHMvXCguKlwpXG4uKi9cMS8KKy0gIGJjCistIyBXZSBmb3VuZCBhIGNvbnRpbnVhdGlvbiBsaW5lLiAgQnV0IGJlZm9yZSBwcmludGluZyBpbnNlcnQgJ1wnLgorLSAgOmEKKy0gIHMvXCguKlwpXChcbi4qXCkvXDFcXFwyLworLSAgUAorLSMgV2UgY2Fubm90IHVzZSBEIGhlcmUuCistICBzLy4qXG5cKC4qXCkvXDEvCistIyBTb21lIGJ1Z2d5IHNlZHMgZG8gbm90IGNsZWFyIHRoZSBgc3VjY2Vzc2Z1bCBzdWJzdGl0dXRpb24gc2luY2UgbGFzdCBgYHQnJycKKy0jIGZsYWcgb24gYE4nLCBzbyB3ZSBkbyBhIGB0JyBoZXJlIHRvIGNsZWFyIGl0LgorLSAgdGIKKy0jIE5vdCByZWFjaGVkCistICA6YworLSAgeAorLSMgVGhlIGZvbGxvd2luZyBuaWNlIHNvbHV0aW9uIGlzIGJ5CistIyBCcnVubyA8SGFpYmxlQG1hMnMyLm1hdGhlbWF0aWsudW5pLWthcmxzcnVoZS5kZT4KKy0gIHRkCistIyBJbmNyZW1lbnQgYSBkZWNpbWFsIG51bWJlciBpbiBwYXR0ZXJuIHNwYWNlLgorLSMgRmlyc3QgaGlkZSB0cmFpbGluZyBgOScgZGlnaXRzLgorLSAgOmQKKy0gIHMvOVwoXypcKSQvX1wxLworLSAgdGQKKy0jIEFzc3VyZSBhdCBsZWFzdCBvbmUgZGlnaXQgaXMgYXZhaWxhYmxlLgorLSAgcy9eXChfKlwpJC8wXDEvCistIyBJbmNyZW1lbnQgdGhlIGxhc3QgZGlnaXQuCistICBzLzhcKF8qXCkkLzlcMS8KKy0gIHMvN1woXypcKSQvOFwxLworLSAgcy82XChfKlwpJC83XDEvCistICBzLzVcKF8qXCkkLzZcMS8KKy0gIHMvNFwoXypcKSQvNVwxLworLSAgcy8zXChfKlwpJC80XDEvCistICBzLzJcKF8qXCkkLzNcMS8KKy0gIHMvMVwoXypcKSQvMlwxLworLSAgcy8wXChfKlwpJC8xXDEvCistIyBDb252ZXJ0IHRoZSBoaWRkZW4gYDknIGRpZ2l0cyB0byBgMCdzLgorLSAgcy9fLzAvZworLSAgeAorLSAgRworLSAgcy9cKC4qXClcblwoWzAtOV0qXCkvXDEsIFwyfSwvCistICBzL1woLipcKSIkL1wxLworLSAgcAorLX0KKy0jCistIyBMYXN0IGxpbmUuCistIworLSQgeworLSAgaVwKKy19O1wKKy0KKy0gIGcKKy0gIHMvMCpcKC4qXCkvaW50IF9tc2dfdGJsX2xlbmd0aCA9IFwxOy9wCistfQorLWQKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL3RleHRkb21haW4uYyBscnpzei0wLjEyLjIwL2ludGwvdGV4dGRvbWFpbi5jCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL3RleHRkb21haW4uYwkxOTk4LTA0LTI2IDE0OjIyOjM3LjAwMDAwMDAwMCArMDEwMAorKysrIGxyenN6LTAuMTIuMjAvaW50bC90ZXh0ZG9tYWluLmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDEwNiArMCwwIEBACistLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIHRleHRkb21haW4oMykgZnVuY3Rpb24KKy0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCistICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCistCistICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0gICBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0KKy0gICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLQorLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKy0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KKy0KKy0jaWZkZWYgSEFWRV9DT05GSUdfSAorLSMgaW5jbHVkZSA8Y29uZmlnLmg+CistI2VuZGlmCistCistI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgX0xJQkMKKy0jIGluY2x1ZGUgPHN0ZGxpYi5oPgorLSNlbmRpZgorLQorLSNpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIEhBVkVfU1RSSU5HX0ggfHwgZGVmaW5lZCBfTElCQworLSMgaW5jbHVkZSA8c3RyaW5nLmg+CistI2Vsc2UKKy0jIGluY2x1ZGUgPHN0cmluZ3MuaD4KKy0jIGlmbmRlZiBtZW1jcHkKKy0jICBkZWZpbmUgbWVtY3B5KERzdCwgU3JjLCBOdW0pIGJjb3B5IChTcmMsIERzdCwgTnVtKQorLSMgZW5kaWYKKy0jZW5kaWYKKy0KKy0jaWZkZWYgX0xJQkMKKy0jIGluY2x1ZGUgPGxpYmludGwuaD4KKy0jZWxzZQorLSMgaW5jbHVkZSAibGliZ2V0dGV4dC5oIgorLSNlbmRpZgorLQorLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KKy0KKy0vKiBOYW1lIG9mIHRoZSBkZWZhdWx0IHRleHQgZG9tYWluLiAgKi8KKy1leHRlcm4gY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbltdOworLQorLS8qIERlZmF1bHQgdGV4dCBkb21haW4gaW4gd2hpY2ggZW50cmllcyBmb3IgZ2V0dGV4dCgzKSBhcmUgdG8gYmUgZm91bmQuICAqLworLWV4dGVybiBjb25zdCBjaGFyICpfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbjsKKy0KKy0KKy0vKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCistICAgd2l0aCBleGlzdGluZyBuYW1lcyBhbmQgdGhleSBzaG91bGQgZm9sbG93IEFOU0kgQy4gIEJ1dCB0aGlzIHNvdXJjZQorLSAgIGNvZGUgaXMgYWxzbyB1c2VkIGluIEdOVSBDIExpYnJhcnkgd2hlcmUgdGhlIG5hbWVzIGhhdmUgYSBfXworLSAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCistI2lmZGVmIF9MSUJDCistIyBkZWZpbmUgVEVYVERPTUFJTiBfX3RleHRkb21haW4KKy0jIGRlZmluZSBzdHJkdXAoc3RyKSBfX3N0cmR1cCAoc3RyKQorLSNlbHNlCistIyBkZWZpbmUgVEVYVERPTUFJTiB0ZXh0ZG9tYWluX18KKy0jZW5kaWYKKy0KKy0vKiBTZXQgdGhlIGN1cnJlbnQgZGVmYXVsdCBtZXNzYWdlIGNhdGFsb2cgdG8gRE9NQUlOTkFNRS4KKy0gICBJZiBET01BSU5OQU1FIGlzIG51bGwsIHJldHVybiB0aGUgY3VycmVudCBkZWZhdWx0LgorLSAgIElmIERPTUFJTk5BTUUgaXMgIiIsIHJlc2V0IHRvIHRoZSBkZWZhdWx0IG9mICJtZXNzYWdlcyIuICAqLworLWNoYXIgKgorLVRFWFRET01BSU4gKGRvbWFpbm5hbWUpCistICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOworLXsKKy0gIGNoYXIgKm9sZDsKKy0KKy0gIC8qIEEgTlVMTCBwb2ludGVyIHJlcXVlc3RzIHRoZSBjdXJyZW50IHNldHRpbmcuICAqLworLSAgaWYgKGRvbWFpbm5hbWUgPT0gTlVMTCkKKy0gICAgcmV0dXJuIChjaGFyICopIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOworLQorLSAgb2xkID0gKGNoYXIgKikgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW47CistCistICAvKiBJZiBkb21haW4gbmFtZSBpcyB0aGUgbnVsbCBzdHJpbmcgc2V0IHRvIGRlZmF1bHQgZG9tYWluICJtZXNzYWdlcyIuICAqLworLSAgaWYgKGRvbWFpbm5hbWVbMF0gPT0gJ1wwJworLSAgICAgIHx8IHN0cmNtcCAoZG9tYWlubmFtZSwgX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW4pID09IDApCistICAgIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluID0gX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW47CistICBlbHNlCistICAgIHsKKy0gICAgICAvKiBJZiB0aGUgZm9sbG93aW5nIG1hbGxvYyBmYWlscyBgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4nCistCSB3aWxsIGJlIE5VTEwuICBUaGlzIHZhbHVlIHdpbGwgYmUgcmV0dXJuZWQgYW5kIHNvIHNpZ25hbHMgd2UKKy0JIGFyZSBvdXQgb2YgY29yZS4gICovCistI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkRVUAorLSAgICAgIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluID0gc3RyZHVwIChkb21haW5uYW1lKTsKKy0jZWxzZQorLSAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4gKGRvbWFpbm5hbWUpICsgMTsKKy0gICAgICBjaGFyICpjcCA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKKy0gICAgICBpZiAoY3AgIT0gTlVMTCkKKy0JbWVtY3B5IChjcCwgZG9tYWlubmFtZSwgbGVuKTsKKy0gICAgICBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiA9IGNwOworLSNlbmRpZgorLSAgICB9CistCistICBpZiAob2xkICE9IF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluKQorLSAgICBmcmVlIChvbGQpOworLQorLSAgcmV0dXJuIChjaGFyICopIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOworLX0KKy0KKy0jaWZkZWYgX0xJQkMKKy0vKiBBbGlhcyBmb3IgZnVuY3Rpb24gbmFtZSBpbiBHTlUgQyBMaWJyYXJ5LiAgKi8KKy13ZWFrX2FsaWFzIChfX3RleHRkb21haW4sIHRleHRkb21haW4pOworLSNlbmRpZgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL2ludGwvVkVSU0lPTiBscnpzei0wLjEyLjIwL2ludGwvVkVSU0lPTgorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC9WRVJTSU9OCTE5OTgtMDQtMjYgMTQ6MjI6MzcuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9pbnRsL1ZFUlNJT04JMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xICswLDAgQEAKKy1HTlUgZ2V0dGV4dCBsaWJyYXJ5IGZyb20gZ2V0dGV4dC0wLjEwLjMyCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvaW50bC94b3Blbi1tc2cuc2VkIGxyenN6LTAuMTIuMjAvaW50bC94b3Blbi1tc2cuc2VkCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9pbnRsL3hvcGVuLW1zZy5zZWQJMTk5OC0wNC0yNiAxNDoyMDo1Mi4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL2ludGwveG9wZW4tbXNnLnNlZAkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEsMTA0ICswLDAgQEAKKy0jIHBvMm1zZy5zZWQgLSBDb252ZXJ0IFVuaWZvcnVtIHN0eWxlIC5wbyBmaWxlIHRvIFgvT3BlbiBzdHlsZSAubXNnIGZpbGUKKy0jIENvcHlyaWdodCAoQykgMTk5NSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKy0jIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KKy0jCistIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKKy0jIGFueSBsYXRlciB2ZXJzaW9uLgorLSMKKy0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistIworLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgorLSMKKy0jCistIyBUaGUgZmlyc3QgZGlyZWN0aXZlIGluIHRoZSAubXNnIHNob3VsZCBiZSB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKKy0jIG1lc3NhZ2Ugc2V0IG51bWJlci4gIFdlIHVzZSBhbHdheXMgc2V0IG51bWJlciAxLgorLSMKKy0xIHsKKy0gIGlcCistJHNldCAxICMgQXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IHBvMm1zZy5zZWQKKy0gIGgKKy0gIHMvLiovMC8KKy0gIHgKKy19CistIworLSMgV2UgY29weSBhbGwgY29tbWVudHMgaW50byB0aGUgLm1zZyBmaWxlLiAgUGVyaGFwcyB0aGV5IGNhbiBoZWxwLgorLSMKKy0vXiMvIHMvXiNbIAldKi8kIC9wCistIworLSMgV2UgY29weSB0aGUgb3JpZ2luYWwgbWVzc2FnZSBhcyBhIGNvbW1lbnQgaW50byB0aGUgLm1zZyBmaWxlLgorLSMKKy0vXm1zZ2lkLyB7CistIyBEb2VzIG5vdCB3b3JrIG5vdworLSMgIC8iJC8hIHsKKy0jICAgIHMvXFwkLy8KKy0jICAgIHMvJC8gLi4uIChtb3JlIGxpbmVzIGZvbGxvd2luZykiLworLSMgIH0KKy0gIHMvXm1zZ2lkWyAJXSoiXCguKlwpIiQvJCBPcmlnaW5hbCBNZXNzYWdlOiBcMS8KKy0gIHAKKy19CistIworLSMgVGhlIC5tc2cgZmlsZSBjb250YWlucywgb3RoZXIgdGhlbiB0aGUgLnBvIGZpbGUsIG9ubHkgdGhlIHRyYW5zbGF0aW9ucworLSMgYnV0IGVhY2ggZ2l2ZW4gYSB1bmlxdWUgSUQuICBTdGFydGluZyBmcm9tIDEgYW5kIGluY3JlbWVudGluZyBieSAxIGZvcgorLSMgZWFjaCBtZXNzYWdlIHdlIGFzc2lnbiB0aGVtIHRvIHRoZSBtZXNzYWdlcy4KKy0jIEl0IGlzIGltcG9ydGFudCB0aGF0IHRoZSAucG8gZmlsZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSBjYXQtaWQtdGJsLmMgZmlsZQorLSMgKHdpdGggcG8tdG8tdGJsKSBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHVzZWQgaGVyZS4gIChBdCBsZWFzdCB0aGUgb3JkZXIKKy0jIG9mIGRlY2xhcmF0aW9ucyBtdXN0IG5vdCBiZSBjaGFuZ2VkLikKKy0jCistL15tc2dzdHIvIHsKKy0gIHMvbXNnc3RyWyAJXSoiXCguKlwpIi9cMS8KKy0gIHgKKy0jIFRoZSBmb2xsb3dpbmcgbmljZSBzb2x1dGlvbiBpcyBieQorLSMgQnJ1bm8gPEhhaWJsZUBtYTJzMi5tYXRoZW1hdGlrLnVuaS1rYXJsc3J1aGUuZGU+CistICB0ZAorLSMgSW5jcmVtZW50IGEgZGVjaW1hbCBudW1iZXIgaW4gcGF0dGVybiBzcGFjZS4KKy0jIEZpcnN0IGhpZGUgdHJhaWxpbmcgYDknIGRpZ2l0cy4KKy0gIDpkCistICBzLzlcKF8qXCkkL19cMS8KKy0gIHRkCistIyBBc3N1cmUgYXQgbGVhc3Qgb25lIGRpZ2l0IGlzIGF2YWlsYWJsZS4KKy0gIHMvXlwoXypcKSQvMFwxLworLSMgSW5jcmVtZW50IHRoZSBsYXN0IGRpZ2l0LgorLSAgcy84XChfKlwpJC85XDEvCistICBzLzdcKF8qXCkkLzhcMS8KKy0gIHMvNlwoXypcKSQvN1wxLworLSAgcy81XChfKlwpJC82XDEvCistICBzLzRcKF8qXCkkLzVcMS8KKy0gIHMvM1woXypcKSQvNFwxLworLSAgcy8yXChfKlwpJC8zXDEvCistICBzLzFcKF8qXCkkLzJcMS8KKy0gIHMvMFwoXypcKSQvMVwxLworLSMgQ29udmVydCB0aGUgaGlkZGVuIGA5JyBkaWdpdHMgdG8gYDAncy4KKy0gIHMvXy8wL2cKKy0gIHgKKy0jIEJyaW5nIHRoZSBsaW5lIGluIHRoZSBmb3JtYXQgYDxudW1iZXI+IDxtZXNzYWdlPicKKy0gIEcKKy0gIHMvXlteXG5dKiQvJiAvCistICBzL1woLipcKVxuXChbMC05XSpcKS9cMiBcMS8KKy0jIENsZWFyIGZsYWcgZnJvbSBsYXN0IHN1YnN0aXR1dGlvbi4KKy0gIHRiCistIyBBcHBlbmQgdGhlIG5leHQgbGluZS4KKy0gIDpiCistICBOCistIyBMb29rIHdoZXRoZXIgc2Vjb25kIHBhcnQgaXMgYSBjb250aW51YXRpb24gbGluZS4KKy0gIHMvXCguKlxuXCkiXCguKlwpIi9cMVwyLworLSMgWWVzLCB0aGVuIGJyYW5jaC4KKy0gIHRhCistICBQCistICBECistIyBOb3RlIHRoYXQgYEQnIGluY2x1ZGVzIGEganVtcCB0byB0aGUgc3RhcnQhIQorLSMgV2UgZm91bmQgYSBjb250aW51YXRpb24gbGluZS4gIEJ1dCBiZWZvcmUgcHJpbnRpbmcgaW5zZXJ0ICdcJy4KKy0gIDphCistICBzL1woLipcKVwoXG4uKlwpL1wxXFxcMi8KKy0gIFAKKy0jIFdlIGNhbm5vdCB1c2UgdGhlIHNlZCBjb21tYW5kIGBEJyBoZXJlCistICBzLy4qXG5cKC4qXCkvXDEvCistICB0YgorLX0KKy1kCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvbGliL01ha2VmaWxlLmFtIGxyenN6LTAuMTIuMjAvbGliL01ha2VmaWxlLmFtCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9saWIvTWFrZWZpbGUuYW0JMTk5OC0xMi0yNyAxNjoyNToyNi4wMDAwMDAwMDAgKzAwMDAKKysrKyBscnpzei0wLjEyLjIwL2xpYi9NYWtlZmlsZS5hbQkyMDE5LTExLTI1IDE2OjIyOjM0LjAwMDAwMDAwMCArMDAwMAorQEAgLTEsNiArMSw0IEBACisgbm9pbnN0X0xJQlJBUklFUz1saWJ6bW9kZW0uYQorLUNGTEFHUz1AQ0ZMQUdTQAorLUFVVE9NQUtFX09QVElPTlM9YW5zaTJrbnIKKyAKKyBFWFRSQV9ESVNUID0gYWxsb2NhLmMgYW5zaTJrbnIuMSBhbnNpMmtuci5jIFwKKyAJZ2V0b3B0LmMgZ2V0b3B0MS5jIG1rZGlyLmMgbWt0aW1lLmMgXAorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL01ha2VmaWxlLmFtIGxyenN6LTAuMTIuMjAvTWFrZWZpbGUuYW0KKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL01ha2VmaWxlLmFtCTE5OTgtMTItMzAgMTE6MTk6NDAuMDAwMDAwMDAwICswMDAwCisrKysgbHJ6c3otMC4xMi4yMC9NYWtlZmlsZS5hbQkyMDE5LTExLTI2IDExOjQ3OjI5LjAwMDAwMDAwMCArMDAwMAorQEAgLTEsNSArMSw1IEBACistU1VCRElSUyA9IGxpYiBpbnRsIHNyYyBwbyBtYW4gdGVzdHN1aXRlCistRVhUUkFfRElTVCA9IGNoZWNrLmxyenN6IENPTVBBVEFCSUxJVFkgUkVBRE1FLmN2cyBSRUFETUUuaXNkbjRsaW51eCBcCisrU1VCRElSUyA9IGxpYiBzcmMgcG8gbWFuIHRlc3RzdWl0ZQorK0VYVFJBX0RJU1QgPSBjb25maWcucnBhdGggbTQvQ2hhbmdlTG9nICBjaGVjay5scnpzeiBDT01QQVRBQklMSVRZIFJFQURNRS5jdnMgUkVBRE1FLmlzZG40bGludXggXAorIAlSRUFETUUuZ2V0dGV4dCBycG1yYyBidWlsZHJwbSBzeXN0eXBlLmluIGZhc3RjaGVjay5zaCBSRUFETUUudGVzdHMgXAorIAliZW9zLXJ1bnBpcGVkLmMgZmFzdGNoZWNrLmJlb3MKKyBub2luc3RfU0NSSVBUUz1zeXN0eXBlCitAQCAtNyw3ICs3LDYgQEAgUFI9QFBBQ0tBR0VALUBWRVJTSU9OQAorIENMRUFOX0ZJTEVTPWZhc3RjaGVjay5kb25lCisgCisgZGlzdC1ob29rOgorLQlta2RpciAkKGRpc3RkaXIpL2RlYmlhbgorIAljcCAtZmEgJChzcmNkaXIpL2RlYmlhbi9jaGFuZ2Vsb2cgICQoZGlzdGRpcikvZGViaWFuLworIAljcCAtZmEgJChzcmNkaXIpL2RlYmlhbi9jb250cm9sICAkKGRpc3RkaXIpL2RlYmlhbi8KKyAJY3AgLWZhICQoc3JjZGlyKS9kZWJpYW4vY29weXJpZ2h0ICAkKGRpc3RkaXIpL2RlYmlhbi8KK0BAIC04MywzICs4Miw1IEBAIGN2cy1kaXN0OgorIHJwbTogJChQUikudGFyLmd6IFNwZWNmaWxlCisgCSQoc3JjZGlyKS9idWlsZHJwbSAkKHNyY2RpcikKKyAKKysKKytBQ0xPQ0FMX0FNRkxBR1MgPSAtSSBtNAorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL3BvL2NhdC1pZC10YmwuYyBscnpzei0wLjEyLjIwL3BvL2NhdC1pZC10YmwuYworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvcG8vY2F0LWlkLXRibC5jCTE5OTgtMTItMjkgMDk6MjQ6MjQuMDAwMDAwMDAwICswMDAwCisrKysgbHJ6c3otMC4xMi4yMC9wby9jYXQtaWQtdGJsLmMJMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKK0BAIC0xLDIzNCArMCwwIEBACistLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgcG8ydGJsLnNlZCBmcm9tIGxyenN6LnBvdC4gICovCistCistI2lmIEhBVkVfQ09ORklHX0gKKy0jIGluY2x1ZGUgPGNvbmZpZy5oPgorLSNlbmRpZgorLQorLSNpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCistCistY29uc3Qgc3RydWN0IF9tc2dfZW50IF9tc2dfdGJsW10gPSB7CistICB7IiIsIDF9LAorLSAgeyJpb19tb2RlKCwyKSBpbiByYnNiLmMgbm90IGltcGxlbWVudGVkXG4iLCAyfSwKKy0gIHsiY2F1Z2h0IHNpZ25hbCAlZDsgZXhpdGluZyIsIDN9LAorLSAgeyJjb21tYW5kIHRyaWVzIiwgNH0sCistICB7InBhY2tldGxlbmd0aCIsIDV9LAorLSAgeyJwYWNrZXRsZW5ndGggb3V0IG9mIHJhbmdlIDI0Li4lbGQiLCA2fSwKKy0gIHsiZnJhbWVsZW5ndGgiLCA3fSwKKy0gIHsiZnJhbWVsZW5ndGggb3V0IG9mIHJhbmdlIDMyLi4lbGQiLCA4fSwKKy0gIHsibWluX2JwcyIsIDl9LAorLSAgeyJtaW5fYnBzIG11c3QgYmUgPj0gMCIsIDEwfSwKKy0gIHsibWluX2Jwc190aW1lIiwgMTF9LAorLSAgeyJtaW5fYnBzX3RpbWUgbXVzdCBiZSA+IDEiLCAxMn0sCistICB7ImhvdXIgdG8gbGFyZ2UgKDAuLjIzKSIsIDEzfSwKKy0gIHsidW5wYXJzYWJsZSBzdG9wIHRpbWVcbiIsIDE0fSwKKy0gIHsibWludXRlIHRvIGxhcmdlICgwLi41OSkiLCAxNX0sCistICB7InN0b3AgdGltZSB0byBzbWFsbCIsIDE2fSwKKy0gIHsic3RvcC1hdCIsIDE3fSwKKy0gIHsidGltZW91dCIsIDE4fSwKKy0gIHsidGltZW91dCBvdXQgb2YgcmFuZ2UgMTAuLjEwMDAiLCAxOX0sCistICB7InNlY3VyaXR5IHZpb2xhdGlvbjogY2FuJ3QgZG8gdGhhdCB1bmRlciByZXN0cmljdGVkIHNoZWxsXG4iLCAyMH0sCistICB7IndpbmRvdyBzaXplIiwgMjF9LAorLSAgeyJjYW5ub3QgdHVybm9mZiBzeXNsb2ciLCAyMn0sCistICB7InN0YXJ0dXAgZGVsYXkiLCAyM30sCistICB7Im91dCBvZiBtZW1vcnkiLCAyNH0sCistICB7InRoaXMgcHJvZ3JhbSB3YXMgbmV2ZXIgaW50ZW5kZWQgdG8gYmUgdXNlZCBzZXR1aWRcbiIsIDI1fSwKKy0gIHsibmVlZCBhdCBsZWFzdCBvbmUgZmlsZSB0byBzZW5kIiwgMjZ9LAorLSAgeyJDYW4ndCBzZW5kIGNvbW1hbmQgaW4gcmVzdHJpY3RlZCBtb2RlXG4iLCAyN30sCistICB7Imhvc3RuYW1lIHRvbyBsb25nXG4iLCAyOH0sCistICB7ImlsbGVnYWwgc2VydmVyIGFkZHJlc3NcbiIsIDI5fSwKKy0gIHsiY2FuIHJlYWQgb25seSBvbmUgZmlsZSBmcm9tIHN0ZGluIiwgMzB9LAorLSAgeyJUcmFuc2ZlciBpbmNvbXBsZXRlXG4iLCAzMX0sCistICB7IlRyYW5zZmVyIGNvbXBsZXRlXG4iLCAzMn0sCistICB7InNlbmRfcHNldWRvICVzOiBjYW5ub3Qgb3BlbiB0bXBmaWxlICVzOiAlcyIsIDMzfSwKKy0gIHsic2VuZF9wc2V1ZG8gJXM6IGNhbm5vdCBsc3RhdCB0bXBmaWxlICVzOiAlcyIsIDM0fSwKKy0gIHsic2VuZF9wc2V1ZG8gJXM6IGF2b2lkaW5nIHN5bWxpbmsgdHJhcCIsIDM1fSwKKy0gIHsic2VuZF9wc2V1ZG8gJXM6IGNhbm5vdCB3cml0ZSB0byB0bXBmaWxlICVzOiAlcyIsIDM2fSwKKy0gIHsic2VuZF9wc2V1ZG8gJXM6IGZhaWxlZCIsIDM3fSwKKy0gIHsic2VuZF9wc2V1ZG8gJXM6IG9rIiwgMzh9LAorLSAgeyJ0Y3AgcHJvdG9jb2wgaW5pdCBmYWlsZWRcbiIsIDM5fSwKKy0gIHsiQW5zd2VyaW5nIFRJTUVTWU5DIGF0ICVzIiwgNDB9LAorLSAgeyJ0aW1lem9uZSIsIDQxfSwKKy0gIHsidGltZXpvbmUgdW5rbm93biIsIDQyfSwKKy0gIHsiQ2FuJ3Qgb3BlbiBhbnkgcmVxdWVzdGVkIGZpbGVzLiIsIDQzfSwKKy0gIHsic2VjdXJpdHkgdmlvbGF0aW9uOiBub3QgYWxsb3dlZCB0byB1cGxvYWQgZnJvbSAlcyIsIDQ0fSwKKy0gIHsiY2Fubm90IG9wZW4gJXMiLCA0NX0sCistICB7ImlzIG5vdCBhIGZpbGU6ICVzIiwgNDZ9LAorLSAgeyIlcy8lczogZXJyb3Igb2NjdXJlZCIsIDQ3fSwKKy0gIHsic2tpcHBlZDogJXMiLCA0OH0sCistICB7IiVzLyVzOiBza2lwcGVkIiwgNDl9LAorLSAgeyJCeXRlcyBTZW50OiU3bGQgICBCUFM6JS04bGQgICAgICAgICAgICAgICAgICAgICAgICBcbiIsIDUwfSwKKy0gIHsiU2VuZGluZyAlcywgJWxkIGJsb2NrczogIiwgNTF9LAorLSAgeyJHaXZlIHlvdXIgbG9jYWwgWE1PREVNIHJlY2VpdmUgY29tbWFuZCBub3cuIiwgNTJ9LAorLSAgeyJTZW5kaW5nOiAlc1xuIiwgNTN9LAorLSAgeyJUaW1lb3V0IG9uIHBhdGhuYW1lIiwgNTR9LAorLSAgeyJSZWNlaXZlciBDYW5jZWxsZWQiLCA1NX0sCistICB7Ik5vIEFDSyBvbiBFT1QiLCA1Nn0sCistICB7Ilhtb2RlbSBzZWN0b3JzL2tieXRlcyBzZW50OiAlM2QvJTJkayIsIDU3fSwKKy0gIHsiWW1vZGVtIHNlY3RvcnMva2J5dGVzIHNlbnQ6ICUzZC8lMmRrIiwgNTh9LAorLSAgeyJDYW5jZWxsZWQiLCA1OX0sCistICB7IlRpbWVvdXQgb24gc2VjdG9yIEFDSyIsIDYwfSwKKy0gIHsiTkFLIG9uIHNlY3RvciIsIDYxfSwKKy0gIHsiR290IGJ1cnN0IGZvciBzZWN0b3IgQUNLIiwgNjJ9LAorLSAgeyJHb3QgJTAyeCBmb3Igc2VjdG9yIEFDSyIsIDYzfSwKKy0gIHsiUmV0cnkgQ291bnQgRXhjZWVkZWQiLCA2NH0sCistICB7IlRyeSBgJXMgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIsIDY1fSwKKy0gIHsiJXMgdmVyc2lvbiAlc1xuIiwgNjZ9LAorLSAgeyJVc2FnZTogJXMgW29wdGlvbnNdIGZpbGUgLi4uXG4iLCA2N30sCistICB7IiAgIG9yOiAlcyBbb3B0aW9uc10gLXtjfGl9IENPTU1BTkRcbiIsIDY4fSwKKy0gIHsiU2VuZCBmaWxlKHMpIHdpdGggWk1PREVNL1lNT0RFTS9YTU9ERU0gcHJvdG9jb2xcbiIsIDY5fSwKKy0gIHsiXAorLSAgICAoWCkgPSBvcHRpb24gYXBwbGllcyB0byBYTU9ERU0gb25seVxuXAorLSAgICAoWSkgPSBvcHRpb24gYXBwbGllcyB0byBZTU9ERU0gb25seVxuXAorLSAgICAoWikgPSBvcHRpb24gYXBwbGllcyB0byBaTU9ERU0gb25seVxuIiwgNzB9LAorLSAgeyJcCistICAtKywgLS1hcHBlbmQgICAgICAgICAgICAgICAgYXBwZW5kIHRvIGV4aXN0aW5nIGRlc3RpbmF0aW9uIGZpbGUgKFopXG5cCistICAtMiwgLS10d29zdG9wICAgICAgICAgICAgICAgdXNlIDIgc3RvcCBiaXRzXG5cCistICAtNCwgLS10cnktNGsgICAgICAgICAgICAgICAgZ28gdXAgdG8gNEsgYmxvY2tzaXplXG5cCistICAgICAgLS1zdGFydC00ayAgICAgICAgICAgICAgc3RhcnQgd2l0aCA0SyBibG9ja3NpemUgKGRvZXNuJ3QgdHJ5IDgpXG5cCistICAtOCwgLS10cnktOGsgICAgICAgICAgICAgICAgZ28gdXAgdG8gOEsgYmxvY2tzaXplXG5cCistICAgICAgLS1zdGFydC04ayAgICAgICAgICAgICAgc3RhcnQgd2l0aCA4SyBibG9ja3NpemVcblwKKy0gIC1hLCAtLWFzY2lpICAgICAgICAgICAgICAgICBBU0NJSSB0cmFuc2ZlciAoY2hhbmdlIENSL0xGIHRvIExGKVxuXAorLSAgLWIsIC0tYmluYXJ5ICAgICAgICAgICAgICAgIGJpbmFyeSB0cmFuc2ZlclxuXAorLSAgLUIsIC0tYnVmc2l6ZSBOICAgICAgICAgICAgIGJ1ZmZlciBOIGJ5dGVzIChOPT1hdXRvOiBidWZmZXIgd2hvbGUgZmlsZSlcblwKKy0gIC1jLCAtLWNvbW1hbmQgQ09NTUFORCAgICAgICBleGVjdXRlIHJlbW90ZSBjb21tYW5kIENPTU1BTkQgKFopXG5cCistICAtQywgLS1jb21tYW5kLXRyaWVzIE4gICAgICAgdHJ5IE4gdGltZXMgdG8gZXhlY3V0ZSBhIGNvbW1hbmQgKFopXG5cCistICAtZCwgLS1kb3QtdG8tc2xhc2ggICAgICAgICAgY2hhbmdlICcuJyB0byAnLycgaW4gcGF0aG5hbWVzIChZL1opXG5cCistICAgICAgLS1kZWxheS1zdGFydHVwIE4gICAgICAgc2xlZXAgTiBzZWNvbmRzIGJlZm9yZSBkb2luZyBhbnl0aGluZ1xuXAorLSAgLWUsIC0tZXNjYXBlICAgICAgICAgICAgICAgIGVzY2FwZSBhbGwgY29udHJvbCBjaGFyYWN0ZXJzIChaKVxuXAorLSAgLUUsIC0tcmVuYW1lICAgICAgICAgICAgICAgIGZvcmNlIHJlY2VpdmVyIHRvIHJlbmFtZSBmaWxlcyBpdCBhbHJlYWR5IGhhc1xuXAorLSAgLWYsIC0tZnVsbC1wYXRoICAgICAgICAgICAgIHNlbmQgZnVsbCBwYXRobmFtZSAoWS9aKVxuXAorLSAgLWksIC0taW1tZWRpYXRlLWNvbW1hbmQgQ01EIHNlbmQgcmVtb3RlIENNRCwgcmV0dXJuIGltbWVkaWF0ZWx5IChaKVxuXAorLSAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgIHByaW50IHRoaXMgdXNhZ2UgbWVzc2FnZVxuXAorLSAgLWssIC0tMWsgICAgICAgICAgICAgICAgICAgIHNlbmQgMTAyNCBieXRlIHBhY2tldHMgKFgpXG5cCistICAtTCwgLS1wYWNrZXRsZW4gTiAgICAgICAgICAgbGltaXQgc3VicGFja2V0IGxlbmd0aCB0byBOIGJ5dGVzIChaKVxuXAorLSAgLWwsIC0tZnJhbWVsZW4gTiAgICAgICAgICAgIGxpbWl0IGZyYW1lIGxlbmd0aCB0byBOIGJ5dGVzIChsPj1MKSAoWilcblwKKy0gIC1tLCAtLW1pbi1icHMgTiAgICAgICAgICAgICBzdG9wIHRyYW5zbWlzc2lvbiBpZiBCUFMgYmVsb3cgTlxuXAorLSAgLU0sIC0tbWluLWJwcy10aW1lIE4gICAgICAgICAgZm9yIGF0IGxlYXN0IE4gc2Vjb25kcyAoZGVmYXVsdDogMTIwKVxuIiwgNzF9LAorLSAgeyJcCistICAtbiwgLS1uZXdlciAgICAgICAgICAgICAgICAgc2VuZCBmaWxlIGlmIHNvdXJjZSBuZXdlciAoWilcblwKKy0gIC1OLCAtLW5ld2VyLW9yLWxvbmdlciAgICAgICBzZW5kIGZpbGUgaWYgc291cmNlIG5ld2VyIG9yIGxvbmdlciAoWilcblwKKy0gIC1vLCAtLTE2LWJpdC1jcmMgICAgICAgICAgICB1c2UgMTYgYml0IENSQyBpbnN0ZWFkIG9mIDMyIGJpdCBDUkMgKFopXG5cCistICAtTywgLS1kaXNhYmxlLXRpbWVvdXRzICAgICAgZGlzYWJsZSB0aW1lb3V0IGNvZGUsIHdhaXQgZm9yZXZlclxuXAorLSAgLXAsIC0tcHJvdGVjdCAgICAgICAgICAgICAgIHByb3RlY3QgZXhpc3RpbmcgZGVzdGluYXRpb24gZmlsZSAoWilcblwKKy0gIC1yLCAtLXJlc3VtZSAgICAgICAgICAgICAgICByZXN1bWUgaW50ZXJydXB0ZWQgZmlsZSB0cmFuc2ZlciAoWilcblwKKy0gIC1SLCAtLXJlc3RyaWN0ZWQgICAgICAgICAgICByZXN0cmljdGVkLCBtb3JlIHNlY3VyZSBtb2RlXG5cCistICAtcSwgLS1xdWlldCAgICAgICAgICAgICAgICAgcXVpZXQgKG5vIHByb2dyZXNzIHJlcG9ydHMpXG5cCistICAtcywgLS1zdG9wLWF0IHtISDpNTXwrTn0gICAgc3RvcCB0cmFuc21pc3Npb24gYXQgSEg6TU0gb3IgaW4gTiBzZWNvbmRzXG5cCistICAgICAgLS10Y3AgICAgICAgICAgICAgICAgICAgYnVpbGQgYSBUQ1AgY29ubmVjdGlvbiB0byB0cmFuc21pdCBmaWxlc1xuXAorLSAgICAgIC0tdGNwLXNlcnZlciAgICAgICAgICAgIG9wZW4gc29ja2V0LCB3YWl0IGZvciBjb25uZWN0aW9uXG5cCistICAtdSwgLS11bmxpbmsgICAgICAgICAgICAgICAgdW5saW5rIGZpbGUgYWZ0ZXIgdHJhbnNtaXNzaW9uXG5cCistICAtVSwgLS11bnJlc3RyaWN0ICAgICAgICAgICAgdHVybiBvZmYgcmVzdHJpY3RlZCBtb2RlIChpZiBhbGxvd2VkIHRvKVxuXAorLSAgLXYsIC0tdmVyYm9zZSAgICAgICAgICAgICAgIGJlIHZlcmJvc2UsIHByb3ZpZGUgZGVidWdnaW5nIGluZm9ybWF0aW9uXG5cCistICAtdywgLS13aW5kb3dzaXplIE4gICAgICAgICAgV2luZG93IGlzIE4gYnl0ZXMgKFopXG5cCistICAtWCwgLS14bW9kZW0gICAgICAgICAgICAgICAgdXNlIFhNT0RFTSBwcm90b2NvbFxuXAorLSAgLXksIC0tb3ZlcndyaXRlICAgICAgICAgICAgIG92ZXJ3cml0ZSBleGlzdGluZyBmaWxlc1xuXAorLSAgLVksIC0tb3ZlcndyaXRlLW9yLXNraXAgICAgIG92ZXJ3cml0ZSBleGlzdGluZyBmaWxlcywgZWxzZSBza2lwXG5cCistICAgICAgLS15bW9kZW0gICAgICAgICAgICAgICAgdXNlIFlNT0RFTSBwcm90b2NvbFxuXAorLSAgLVosIC0tem1vZGVtICAgICAgICAgICAgICAgIHVzZSBaTU9ERU0gcHJvdG9jb2xcblwKKy1cblwKKy1zaG9ydCBvcHRpb25zIHVzZSB0aGUgc2FtZSBhcmd1bWVudHMgYXMgdGhlIGxvbmcgb25lc1xuIiwgNzJ9LAorLSAgeyJnb3QgWlJRSU5JVCIsIDczfSwKKy0gIHsiZ290IFpDQU4iLCA3NH0sCistICB7ImJsa2xlbiBub3cgJWRcbiIsIDc1fSwKKy0gIHsienNlbmRmZGF0YTogYnBzIHJhdGUgJWxkIGJlbG93IG1pbiAlbGQiLCA3Nn0sCistICB7InpzZW5kZmRhdGE6IHJlYWNoZWQgc3RvcCB0aW1lIiwgNzd9LAorLSAgeyJCeXRlcyBTZW50OiU3bGQvJTdsZCAgIEJQUzolLThsZCBFVEEgJTAyZDolMDJkICAiLCA3OH0sCistICB7ImNhbGNfYmxrbGVuOiByZWR1Y2VkIHRvICVkIGR1ZSB0byBlcnJvclxuIiwgNzl9LAorLSAgeyJjYWxjX2Jsa2xlbjogcmV0dXJuZWQgb2xkIHZhbHVlICVkIGR1ZSB0byBsb3cgYnBlIGRpZmZcbiIsIDgwfSwKKy0gIHsiY2FsY19ibGtsZW46IG9sZCAlbGQsIG5ldyAlbGQsIGQgJWxkXG4iLCA4MX0sCistICB7ImNhbGNfYmxrbGVuOiBjYWxjIHRvdGFsX2J5dGVzPSVsZCwgYnBlPSVsZCwgZWM9JWxkXG4iLCA4Mn0sCistICB7ImNhbGNfYmxrbGVuOiBibGtsZW4gJWQsIG9rICVsZCwgZmFpbGVkICVsZCAtPiAlbHVcbiIsIDgzfSwKKy0gIHsiY2FsY19ibGtsZW46IHJldHVybmVkICVkIGFzIGJlc3RcbiIsIDg0fSwKKy0gIHsiXAorLVxuXAorLWNvdW50ZW06IFRvdGFsICVkICVsZFxuIiwgODV9LAorLSAgeyJCYWQgZXNjYXBlIHNlcXVlbmNlICV4IiwgODZ9LAorLSAgeyJTZW5kZXIgQ2FuY2VsZWQiLCA4N30sCistICB7IlRJTUVPVVQiLCA4OH0sCistICB7IkJhZCBkYXRhIHN1YnBhY2tldCIsIDg5fSwKKy0gIHsiRGF0YSBzdWJwYWNrZXQgdG9vIGxvbmciLCA5MH0sCistICB7IkdhcmJhZ2UgY291bnQgZXhjZWVkZWQiLCA5MX0sCistICB7IkdvdCAlcyIsIDkyfSwKKy0gIHsiUmV0cnkgJWQ6ICIsIDkzfSwKKy0gIHsiZG9uJ3QgaGF2ZSBzZXR0aW1lb2ZkYXksIHdpbGwgbm90IHNldCB0aW1lXG4iLCA5NH0sCistICB7Im5vdCBydW5uaW5nIGFzIHJvb3QgKHRoaXMgaXMgZ29vZCEpLCBjYW4gbm90IHNldCB0aW1lXG4iLCA5NX0sCistICB7ImJ5dGVzX3Blcl9lcnJvciIsIDk2fSwKKy0gIHsiYnl0ZXMtcGVyLWVycm9yIHNob3VsZCBiZSA+MTAwIiwgOTd9LAorLSAgeyJPX1NZTkMgbm90IHN1cHBvcnRlZCBieSB0aGUga2VybmVsIiwgOTh9LAorLSAgeyJnYXJiYWdlIG9uIGNvbW1hbmRsaW5lIiwgOTl9LAorLSAgeyJVc2FnZTogJXMgW29wdGlvbnNdIFtmaWxlbmFtZS5pZi54bW9kZW1dXG4iLCAxMDB9LAorLSAgeyJSZWNlaXZlIGZpbGVzIHdpdGggWk1PREVNL1lNT0RFTS9YTU9ERU0gcHJvdG9jb2xcbiIsIDEwMX0sCistICB7IlwKKy0gIC0rLCAtLWFwcGVuZCAgICAgICAgICAgICAgICBhcHBlbmQgdG8gZXhpc3RpbmcgZmlsZXNcblwKKy0gIC1hLCAtLWFzY2lpICAgICAgICAgICAgICAgICBBU0NJSSB0cmFuc2ZlciAoY2hhbmdlIENSL0xGIHRvIExGKVxuXAorLSAgLWIsIC0tYmluYXJ5ICAgICAgICAgICAgICAgIGJpbmFyeSB0cmFuc2ZlclxuXAorLSAgLUIsIC0tYnVmc2l6ZSBOICAgICAgICAgICAgIGJ1ZmZlciBOIGJ5dGVzIChOPT1hdXRvOiBidWZmZXIgd2hvbGUgZmlsZSlcblwKKy0gIC1jLCAtLXdpdGgtY3JjICAgICAgICAgICAgICBVc2UgMTYgYml0IENSQyAoWClcblwKKy0gIC1DLCAtLWFsbG93LXJlbW90ZS1jb21tYW5kcyBhbGxvdyBleGVjdXRpb24gb2YgcmVtb3RlIGNvbW1hbmRzIChaKVxuXAorLSAgLUQsIC0tbnVsbCAgICAgICAgICAgICAgICAgIHdyaXRlIGFsbCByZWNlaXZlZCBkYXRhIHRvIC9kZXYvbnVsbFxuXAorLSAgICAgIC0tZGVsYXktc3RhcnR1cCBOICAgICAgIHNsZWVwIE4gc2Vjb25kcyBiZWZvcmUgZG9pbmcgYW55dGhpbmdcblwKKy0gIC1lLCAtLWVzY2FwZSAgICAgICAgICAgICAgICBFc2NhcGUgY29udHJvbCBjaGFyYWN0ZXJzIChaKVxuXAorLSAgLUUsIC0tcmVuYW1lICAgICAgICAgICAgICAgIHJlbmFtZSBhbnkgZmlsZXMgYWxyZWFkeSBleGlzdGluZ1xuXAorLSAgICAgIC0tZXJyb3JzIE4gICAgICAgICAgICAgIGdlbmVyYXRlIENSQyBlcnJvciBldmVyeSBOIGJ5dGVzIChkZWJ1Z2dpbmcpXG5cCistICAtaCwgLS1oZWxwICAgICAgICAgICAgICAgICAgSGVscCwgcHJpbnQgdGhpcyB1c2FnZSBtZXNzYWdlXG5cCistICAtbSwgLS1taW4tYnBzIE4gICAgICAgICAgICAgc3RvcCB0cmFuc21pc3Npb24gaWYgQlBTIGJlbG93IE5cblwKKy0gIC1NLCAtLW1pbi1icHMtdGltZSBOICAgICAgICAgIGZvciBhdCBsZWFzdCBOIHNlY29uZHMgKGRlZmF1bHQ6IDEyMClcblwKKy0gIC1PLCAtLWRpc2FibGUtdGltZW91dHMgICAgICBkaXNhYmxlIHRpbWVvdXQgY29kZSwgd2FpdCBmb3JldmVyIGZvciBkYXRhXG5cCistICAgICAgLS1vLXN5bmMgICAgICAgICAgICAgICAgb3BlbiBvdXRwdXQgZmlsZShzKSBpbiBzeW5jaHJvbm91cyB3cml0ZSBtb2RlXG5cCistICAtcCwgLS1wcm90ZWN0ICAgICAgICAgICAgICAgcHJvdGVjdCBleGlzdGluZyBmaWxlc1xuXAorLSAgLXEsIC0tcXVpZXQgICAgICAgICAgICAgICAgIHF1aWV0LCBubyBwcm9ncmVzcyByZXBvcnRzXG5cCistICAtciwgLS1yZXN1bWUgICAgICAgICAgICAgICAgdHJ5IHRvIHJlc3VtZSBpbnRlcnJ1cHRlZCBmaWxlIHRyYW5zZmVyIChaKVxuXAorLSAgLVIsIC0tcmVzdHJpY3RlZCAgICAgICAgICAgIHJlc3RyaWN0ZWQsIG1vcmUgc2VjdXJlIG1vZGVcblwKKy0gIC1zLCAtLXN0b3AtYXQge0hIOk1NfCtOfSAgICBzdG9wIHRyYW5zbWlzc2lvbiBhdCBISDpNTSBvciBpbiBOIHNlY29uZHNcblwKKy0gIC1TLCAtLXRpbWVzeW5jICAgICAgICAgICAgICByZXF1ZXN0IHJlbW90ZSB0aW1lICh0d2ljZTogc2V0IGxvY2FsIHRpbWUpXG5cCistICAgICAgLS1zeXNsb2dbPW9mZl0gICAgICAgICAgdHVybiBzeXNsb2cgb24gb3Igb2ZmLCBpZiBwb3NzaWJsZVxuXAorLSAgLXQsIC0tdGltZW91dCBOICAgICAgICAgICAgIHNldCB0aW1lb3V0IHRvIE4gdGVudGhzIG9mIGEgc2Vjb25kXG5cCistICAtdSwgLS1rZWVwLXVwcGVyY2FzZSAgICAgICAga2VlcCB1cHBlciBjYXNlIGZpbGVuYW1lc1xuXAorLSAgLVUsIC0tdW5yZXN0cmljdCAgICAgICAgICAgIGRpc2FibGUgcmVzdHJpY3RlZCBtb2RlIChpZiBhbGxvd2VkIHRvKVxuXAorLSAgLXYsIC0tdmVyYm9zZSAgICAgICAgICAgICAgIGJlIHZlcmJvc2UsIHByb3ZpZGUgZGVidWdnaW5nIGluZm9ybWF0aW9uXG5cCistICAtdywgLS13aW5kb3dzaXplIE4gICAgICAgICAgV2luZG93IGlzIE4gYnl0ZXMgKFopXG5cCistICAtWCAgLS14bW9kZW0gICAgICAgICAgICAgICAgdXNlIFhNT0RFTSBwcm90b2NvbFxuXAorLSAgLXksIC0tb3ZlcndyaXRlICAgICAgICAgICAgIFllcywgY2xvYmJlciBleGlzdGluZyBmaWxlIGlmIGFueVxuXAorLSAgICAgIC0teW1vZGVtICAgICAgICAgICAgICAgIHVzZSBZTU9ERU0gcHJvdG9jb2xcblwKKy0gIC1aLCAtLXptb2RlbSAgICAgICAgICAgICAgICB1c2UgWk1PREVNIHByb3RvY29sXG5cCistXG5cCistc2hvcnQgb3B0aW9ucyB1c2UgdGhlIHNhbWUgYXJndW1lbnRzIGFzIHRoZSBsb25nIG9uZXNcbiIsIDEwMn0sCistICB7IiVzIHdhaXRpbmcgdG8gcmVjZWl2ZS4iLCAxMDN9LAorLSAgeyJcckJ5dGVzIHJlY2VpdmVkOiAlN2xkLyU3bGQgICBCUFM6JS02bGQgICAgICAgICAgICAgICAgXHJcbiIsIDEwNH0sCistICB7IiVzOiByZWFkeSB0byByZWNlaXZlICVzIiwgMTA1fSwKKy0gIHsiXHJCeXRlcyByZWNlaXZlZDogJTdsZCAgIEJQUzolLTZsZCAgICAgICAgICAgICAgICBcclxuIiwgMTA2fSwKKy0gIHsiXAorLVxyXG5cCistJXM6ICVzIHJlbW92ZWQuXHJcbiIsIDEwN30sCistICB7IlBhdGhuYW1lIGZldGNoIHJldHVybmVkIEVPVCIsIDEwOH0sCistICB7IlJlY2VpdmVkIGR1cCBTZWN0b3IiLCAxMDl9LAorLSAgeyJTeW5jIEVycm9yIiwgMTEwfSwKKy0gIHsiQ1JDIiwgMTExfSwKKy0gIHsiQ2hlY2tzdW0iLCAxMTJ9LAorLSAgeyJTZWN0b3IgbnVtYmVyIGdhcmJsZWQiLCAxMTN9LAorLSAgeyJTZW5kZXIgQ2FuY2VsbGVkIiwgMTE0fSwKKy0gIHsiR290IDAlbyBzZWN0b3IgaGVhZGVyIiwgMTE1fSwKKy0gIHsiZmlsZSBuYW1lIGVuZHMgd2l0aCBhIC8sIHNraXBwZWQ6ICVzXG4iLCAxMTZ9LAorLSAgeyJ6bWFuYWc9JWQsIEx6bWFuYWc9JWRcbiIsIDExN30sCistICB7Inpjb252PSVkXG4iLCAxMTh9LAorLSAgeyJmaWxlIGV4aXN0cywgc2tpcHBlZDogJXNcbiIsIDExOX0sCistICB7IlRJTUVTWU5DOiBoZXJlICVsZCwgcmVtb3RlICVsZCwgZGlmZiAlbGQgc2Vjb25kc1xuIiwgMTIwfSwKKy0gIHsiVElNRVNZTkM6IGNhbm5vdCBzZXQgdGltZTogJXNcbiIsIDEyMX0sCistICB7ImNhbm5vdCB0bXBmaWxlKCkgZm9yIHRjcCBwcm90b2NvbCBzeW5jaHJvbml6YXRpb24iLCAxMjJ9LAorLSAgeyJUb3BpcGUiLCAxMjN9LAorLSAgeyJSZWNlaXZpbmc6ICVzXG4iLCAxMjR9LAorLSAgeyJCbG9ja3MgcmVjZWl2ZWQ6ICVkIiwgMTI1fSwKKy0gIHsiJXM6ICVzIGV4aXN0c1xuIiwgMTI2fSwKKy0gIHsiJXM6XHRTZWN1cml0eSBWaW9sYXRpb24iLCAxMjd9LAorLSAgeyJyZW1vdGUgY29tbWFuZCBleGVjdXRpb24gcmVxdWVzdGVkIiwgMTI4fSwKKy0gIHsibm90IGV4ZWN1dGVkIiwgMTI5fSwKKy0gIHsiZ290IFpSSU5JVCIsIDEzMH0sCistICB7IlNraXBwZWQiLCAxMzF9LAorLSAgeyJyemZpbGU6IGJwcyByYXRlICVsZCBiZWxvdyBtaW4gJWxkIiwgMTMyfSwKKy0gIHsicnpmaWxlOiByZWFjaGVkIHN0b3AgdGltZSIsIDEzM30sCistICB7IlxyQnl0ZXMgcmVjZWl2ZWQ6ICU3bGQvJTdsZCAgIEJQUzolLTZsZCBFVEEgJTAyZDolMDJkICAiLCAxMzR9LAorLSAgeyJmZ2V0cyBmb3IgdGNwIHByb3RvY29sIHN5bmNocm9uaXphdGlvbiBmYWlsZWQ6ICIsIDEzNX0sCistICB7ImZpbGUgY2xvc2UgZXJyb3IiLCAxMzZ9LAorLX07CistCistaW50IF9tc2dfdGJsX2xlbmd0aCA9IDEzNjsKK0JpbmFyeSBmaWxlcyBjbGVhbi9scnpzei0wLjEyLjIwL3BvL2RlLmdtbyBhbmQgbHJ6c3otMC4xMi4yMC9wby9kZS5nbW8gZGlmZmVyCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvcG8vZGUucG8gbHJ6c3otMC4xMi4yMC9wby9kZS5wbworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvcG8vZGUucG8JMTk5OC0xMi0zMCAxNjozMTo0Ni4wMDAwMDAwMDAgKzAwMDAKKysrKyBscnpzei0wLjEyLjIwL3BvL2RlLnBvCTIwMTktMTEtMjYgMTE6NDI6MDcuMDAwMDAwMDAwICswMDAwCitAQCAtNiwxMCArNiwxMiBAQAorIG1zZ2lkICIiCisgbXNnc3RyICIiCisgIlByb2plY3QtSWQtVmVyc2lvbjogUEFDS0FHRSBWRVJTSU9OXG4iCistIlBPVC1DcmVhdGlvbi1EYXRlOiAxOTk4LTEyLTMwIDA4OjQ5KzAxMDBcbiIKKysiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgorKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxOS0xMS0yNiAxMTozOSswMDAwXG4iCisgIlBPLVJldmlzaW9uLURhdGU6IDE5OTctMDYtMDEgMTk6MDArMDIwMFxuIgorICJMYXN0LVRyYW5zbGF0b3I6IEZVTEwgTkFNRSA8dXdlQG9oc2UuZGU+XG4iCisgIkxhbmd1YWdlLVRlYW06IG5vbmUuIHRyeSA8dXdlQG9oc2UuZGU+XG4iCisrIkxhbmd1YWdlOiBkZVxuIgorICJNSU1FLVZlcnNpb246IDEuMFxuIgorICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9aXNvLTg4NTktMVxuIgorICJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCitAQCAtMTgsNyArMjAsNyBAQCBtc2dzdHIgIiIKKyBtc2dpZCAiaW9fbW9kZSgsMikgaW4gcmJzYi5jIG5vdCBpbXBsZW1lbnRlZFxuIgorIG1zZ3N0ciAiaW9fbW9kZSgyKSBpbiByYnNiLmMgbmljaHQgaW1wbGVtZW50aWVydFxuIgorIAorLSM6IHNyYy9scnouYzoyMDEgc3JjL2xzei5jOjIzMAorKyM6IHNyYy9sc3ouYzoyMzAgc3JjL2xyei5jOjIwMQorICMsIGMtZm9ybWF0CisgbXNnaWQgImNhdWdodCBzaWduYWwgJWQ7IGV4aXRpbmciCisgbXNnc3RyICJlcmhpZWx0IFNpZ25hbCAlZDsgUHJvZ3JhbW1hYmJydWNoIgorQEAgLTQ1LDcgKzQ3LDcgQEAgbXNnc3RyICJGcmFtZWzkbmdlIgorIG1zZ2lkICJmcmFtZWxlbmd0aCBvdXQgb2YgcmFuZ2UgMzIuLiVsZCIKKyBtc2dzdHIgIkFyZ3VtZW50IGRlciBPcHRpb24gbCBhdd9lcmhhbGIgZGVzIEJlcmVpY2hzIDMyLi4lbGQiCisgCistIzogc3JjL2xyei5jOjMyMyBzcmMvbHN6LmM6NDUwCisrIzogc3JjL2xzei5jOjQ1MCBzcmMvbHJ6LmM6MzIzCisgbXNnaWQgIm1pbl9icHMiCisgbXNnc3RyICJtaW5pbWFsZSBCUFMtUmF0ZSIKKyAKK0BAIC01Myw2NSArNTUsNjUgQEAgbXNnc3RyICJtaW5pbWFsZSBCUFMtUmF0ZSIKKyBtc2dpZCAibWluX2JwcyBtdXN0IGJlID49IDAiCisgbXNnc3RyICJtaW5pbWFsZSBCUFMtUmF0ZSBtdd8gPj0gMCBzZWluIgorIAorLSM6IHNyYy9scnouYzozMjkgc3JjL2xzei5jOjQ1OAorKyM6IHNyYy9sc3ouYzo0NTggc3JjL2xyei5jOjMyOQorIG1zZ2lkICJtaW5fYnBzX3RpbWUiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjMzMSBzcmMvbHN6LmM6NDYwCisrIzogc3JjL2xzei5jOjQ2MCBzcmMvbHJ6LmM6MzMxCisgbXNnaWQgIm1pbl9icHNfdGltZSBtdXN0IGJlID4gMSIKKyBtc2dzdHIgIlplaXRmZW5zdGVyIGb8ciBtaW5pbWFsZSBCUFMtUmF0ZSBtdd8gPiAxIFNla3VuZGUgc2VpbiIKKyAKKy0jOiBzcmMvbHJ6LmM6MzQ3IHNyYy9sc3ouYzo0ODQKKysjOiBzcmMvbHN6LmM6NDg0IHNyYy9scnouYzozNDcKKyBtc2dpZCAiaG91ciB0byBsYXJnZSAoMC4uMjMpIgorIG1zZ3N0ciAiU3R1bmRlIHp1IGdyb3NzICgwLi4yMykiCisgCistIzogc3JjL2xyei5jOjM0OSBzcmMvbHN6LmM6NDg2CisrIzogc3JjL2xzei5jOjQ4NiBzcmMvbHJ6LmM6MzQ5CisgbXNnaWQgInVucGFyc2FibGUgc3RvcCB0aW1lXG4iCisgbXNnc3RyICJ1bnBhcnNiYXJlIEVuZHplaXRcbiIKKyAKKy0jOiBzcmMvbHJ6LmM6MzUzIHNyYy9sc3ouYzo0OTAKKysjOiBzcmMvbHN6LmM6NDkwIHNyYy9scnouYzozNTMKKyBtc2dpZCAibWludXRlIHRvIGxhcmdlICgwLi41OSkiCisgbXNnc3RyICJNaW51dGUgenUgZ3Jv3yAoMC4uNTkpIgorIAorLSM6IHNyYy9scnouYzozNjMgc3JjL2xyei5jOjM3MCBzcmMvbHN6LmM6NTAwIHNyYy9sc3ouYzo1MDcKKysjOiBzcmMvbHN6LmM6NTAwIHNyYy9sc3ouYzo1MDcgc3JjL2xyei5jOjM2MyBzcmMvbHJ6LmM6MzcwCisgbXNnaWQgInN0b3AgdGltZSB0byBzbWFsbCIKKyBtc2dzdHIgIlN0b3B6ZWl0IHp1IGt1cnoiCisgCistIzogc3JjL2xyei5jOjM2OCBzcmMvbHN6LmM6NTA1CisrIzogc3JjL2xzei5jOjUwNSBzcmMvbHJ6LmM6MzY4CisgbXNnaWQgInN0b3AtYXQiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjM5OSBzcmMvbHN6LmM6NTE2CisrIzogc3JjL2xzei5jOjUxNiBzcmMvbHJ6LmM6Mzk5CisgbXNnaWQgInRpbWVvdXQiCisgbXNnc3RyICJUaW1lb3V0IgorIAorLSM6IHNyYy9scnouYzo0MDEgc3JjL2xzei5jOjUxOAorKyM6IHNyYy9sc3ouYzo1MTggc3JjL2xyei5jOjQwMQorIG1zZ2lkICJ0aW1lb3V0IG91dCBvZiByYW5nZSAxMC4uMTAwMCIKKyBtc2dzdHIgIkFyZ3VtZW50IGRlciBPcHRpb24gdCBhdd9lcmhhbGIgZGVzIEJlcmVpY2hzIDEwLi4xMDAwIgorIAorLSM6IHNyYy9scnouYzo0MTcgc3JjL2xzei5jOjUyNgorKyM6IHNyYy9sc3ouYzo1MjYgc3JjL2xyei5jOjQxNworIG1zZ2lkICJzZWN1cml0eSB2aW9sYXRpb246IGNhbid0IGRvIHRoYXQgdW5kZXIgcmVzdHJpY3RlZCBzaGVsbFxuIgorIG1zZ3N0ciAiU2ljaGVyaGVpdHN2ZXJzdG/fOiBBdXNm/GhydW5nIHVudGVyIGVpbmdlc2NocuRua3RlciBTaGVsbCB2ZXJib3RlblxuIgorIAorLSM6IHNyYy9scnouYzo0MDcgc3JjL2xzei5jOjUzMworKyM6IHNyYy9sc3ouYzo1MzMgc3JjL2xyei5jOjQwNworIG1zZ2lkICJ3aW5kb3cgc2l6ZSIKKyBtc2dzdHIgIkZlbnN0ZXJncvbfZSIKKyAKKy0jOiBzcmMvbHJ6LmM6NDMyIHNyYy9scnouYzo0Mzkgc3JjL2xzei5jOjU1NiBzcmMvbHN6LmM6NTYzCisrIzogc3JjL2xzei5jOjU1NiBzcmMvbHN6LmM6NTYzIHNyYy9scnouYzo0MzIgc3JjL2xyei5jOjQzOQorIG1zZ2lkICJjYW5ub3QgdHVybm9mZiBzeXNsb2ciCisgbXNnc3RyICJrYW5uIHN5c2xvZ2dpbmcgbmljaHQgYWJzY2hhbHRlbiIKKyAKKy0jOiBzcmMvbHJ6LmM6NDU0IHNyYy9sc3ouYzo1NzEKKysjOiBzcmMvbHN6LmM6NTcxIHNyYy9scnouYzo0NTQKKyBtc2dpZCAic3RhcnR1cCBkZWxheSIKKyBtc2dzdHIgIlN0YXJ0dmVyevZnZXJ1bmciCisgCisrIzogc3JjL2xzei5jOjU4MyBzcmMvbHN6LmM6NjkyIHNyYy9sc3ouYzo4MzEgc3JjL2xzei5jOjEwODAgc3JjL3pyZWFkbGluZS5jOjEyNworICM6IHNyYy9scnouYzo0NzAgc3JjL2xyei5jOjc1NSBzcmMvbHJ6LmM6MTExNyBzcmMvbHJ6LmM6MTI0MyBzcmMvbHJ6LmM6MTMwMAorLSM6IHNyYy9scnouYzoxMzE3IHNyYy9scnouYzoxMzMyIHNyYy9scnouYzoxNDMxIHNyYy9sc3ouYzo1ODMgc3JjL2xzei5jOjY5MgorLSM6IHNyYy9sc3ouYzo4MzEgc3JjL2xzei5jOjEwODAgc3JjL3pyZWFkbGluZS5jOjEyNworKyM6IHNyYy9scnouYzoxMzE3IHNyYy9scnouYzoxMzMyIHNyYy9scnouYzoxNDMxCisgbXNnaWQgIm91dCBvZiBtZW1vcnkiCisgbXNnc3RyICJLZWluIFNwZWljaGVyIG1laHIgZnJlaSIKKyAKKy0jOiBzcmMvbHJ6LmM6NDgwIHNyYy9sc3ouYzo1OTUKKysjOiBzcmMvbHN6LmM6NTk1IHNyYy9scnouYzo0ODAKKyBtc2dpZCAidGhpcyBwcm9ncmFtIHdhcyBuZXZlciBpbnRlbmRlZCB0byBiZSB1c2VkIHNldHVpZFxuIgorIG1zZ3N0ciAiZGllc2VzIFByb2dyYW1tIGRhcmYgbmljaHQgc2V0dWlkIGxhdWZlblxuIgorIAorQEAgLTEyMCwxNCArMTIyLDE1IEBAIG1zZ2lkICJuZWVkIGF0IGxlYXN0IG9uZSBmaWxlIHRvIHNlbmQiCisgbXNnc3RyICJlcyBtdd8gbWluZGVzdGVucyBlaW4gTmFtZSBlaW5lciB6dSBzZW5kZW5kZW4gRGF0ZWkgYW5nZWdlYmVuIHdlcmRlbiIKKyAKKyAjOiBzcmMvbHN6LmM6NjI4CisrIywgYy1mb3JtYXQKKyBtc2dpZCAiQ2FuJ3Qgc2VuZCBjb21tYW5kIGluIHJlc3RyaWN0ZWQgbW9kZVxuIgorIG1zZ3N0ciAiSW0gZWluZ2VzY2hy5G5rdGVuIE1vZHVzIGlzdCBkYXMgU2VuZGVuIHZvbiBLb21tYW5kb3MgdmVyYm90ZW5cbiIKKyAKKy0jOiBzcmMvbHJ6LmM6NTI0IHNyYy9sc3ouYzo2NTUKKysjOiBzcmMvbHN6LmM6NjU1IHNyYy9scnouYzo1MjQKKyBtc2dpZCAiaG9zdG5hbWUgdG9vIGxvbmdcbiIKKyBtc2dzdHIgIkhvc3RuYW1lIHp1IGxhbmdcbiIKKyAKKy0jOiBzcmMvbHJ6LmM6NTM5IHNyYy9sc3ouYzo2NzAKKysjOiBzcmMvbHN6LmM6NjcwIHNyYy9scnouYzo1MzkKKyBtc2dpZCAiaWxsZWdhbCBzZXJ2ZXIgYWRkcmVzc1xuIgorIG1zZ3N0ciAiSWxsZWdhbGUgU2VydmVyYWRkcmVzc2VcbiIKKyAKK0BAIC0xMzUsMTEgKzEzOCwxMSBAQCBtc2dzdHIgIklsbGVnYWxlIFNlcnZlcmFkZHJlc3NlXG4iCisgbXNnaWQgImNhbiByZWFkIG9ubHkgb25lIGZpbGUgZnJvbSBzdGRpbiIKKyBtc2dzdHIgImthbm4gbnVyIGVpbmUgRGF0ZWkgdm9uIGRlciBTdGFuZGFyZGVpbmdhYmUgbGVzZW4iCisgCistIzogc3JjL2xyei5jOjU3MSBzcmMvbHN6LmM6ODA2CisrIzogc3JjL2xzei5jOjgwNiBzcmMvbHJ6LmM6NTcxCisgbXNnaWQgIlRyYW5zZmVyIGluY29tcGxldGVcbiIKKyBtc2dzdHIgItxiZXJ0cmFndW5nIG5pY2h0IGFiZ2VzY2hsb3NzZW5cbiIKKyAKKy0jOiBzcmMvbHJ6LmM6NTczIHNyYy9sc3ouYzo4MDgKKysjOiBzcmMvbHN6LmM6ODA4IHNyYy9scnouYzo1NzMKKyBtc2dpZCAiVHJhbnNmZXIgY29tcGxldGVcbiIKKyBtc2dzdHIgItxiZXJ0cmFndW5nIGFiZ2VzY2hsb3NzZW5cbiIKKyAKK0BAIC0xOTcsOSArMjAwLDkgQEAgbXNnc3RyICJLYW5uIGtlaW5lIGRlciBhbmdlZm9yZGVydGVuIERhdAorICM6IHNyYy9sc3ouYzoxMDI4CisgIywgYy1mb3JtYXQKKyBtc2dpZCAic2VjdXJpdHkgdmlvbGF0aW9uOiBub3QgYWxsb3dlZCB0byB1cGxvYWQgZnJvbSAlcyIKKy1tc2dzdHIgIlNpY2hlcmhlaXRzdmVyc3Rv3zogQXVzZvxocnVuZyB1bnRlciBlaW5nZXNjaHLkbmt0ZXIgU2hlbGwgdmVyYm90ZW4iCisrbXNnc3RyICJTaWNoZXJoZWl0c3ZlcnN0b986IEF1c2b8aHJ1bmcgdW50ZXIgJXMgdmVyYm90ZW4iCisgCistIzogc3JjL2xyei5jOjEzOTIgc3JjL2xzei5jOjEwNDYKKysjOiBzcmMvbHN6LmM6MTA0NiBzcmMvbHJ6LmM6MTM5MgorICMsIGMtZm9ybWF0CisgbXNnaWQgImNhbm5vdCBvcGVuICVzIgorIG1zZ3N0ciAia2FubiAlcyBuaWNodCD2ZmZuZW4iCitAQCAtMjkwLDEyICsyOTMsMTIgQEAgbXNnc3RyICJFcmhpZWx0ICUwMnggYWxzIFNla3RvcmJlc3TkdGlndQorIG1zZ2lkICJSZXRyeSBDb3VudCBFeGNlZWRlZCIKKyBtc2dzdHIgIk1heGltYWxlIFdpZWRlcmhvbHVuZ3NhbnphaGwg/GJlcnNjaHJpdHRlbiIKKyAKKy0jOiBzcmMvbHJ6LmM6NTkzIHNyYy9sc3ouYzoxNTIxCisrIzogc3JjL2xzei5jOjE1MjEgc3JjL2xyei5jOjU5MworICMsIGMtZm9ybWF0CisgbXNnaWQgIlRyeSBgJXMgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIKKyBtc2dzdHIgImAlcyAtLWhlbHAnIGdpYnQgd2VpdGVyZSBJbmZvcm1hdGlvbmVuLlxuIgorIAorLSM6IHNyYy9scnouYzo1OTggc3JjL2xzei5jOjE1MjYKKysjOiBzcmMvbHN6LmM6MTUyNiBzcmMvbHJ6LmM6NTk4CisgIywgYy1mb3JtYXQKKyBtc2dpZCAiJXMgdmVyc2lvbiAlc1xuIgorIG1zZ3N0ciAiJXMgVmVyc2lvbiAlc1xuIgorQEAgLTMxNSw3ICszMTgsNyBAQCBtc2dpZCAiU2VuZCBmaWxlKHMpIHdpdGggWk1PREVNL1lNT0RFTS9YCisgbXNnc3RyICJEYXRlaWVuIG1pdCBaTU9ERU0vWU1PREVNL1hNT0RFTSD8YmVydHJhZ2VuXG4iCisgCisgIyBzcmMvbHJ6LmM6NDc1IHNyYy9sc3ouYzoxMzMwIHh4CistIzogc3JjL2xyei5jOjYwNCBzcmMvbHN6LmM6MTUzNAorKyM6IHNyYy9sc3ouYzoxNTM0IHNyYy9scnouYzo2MDQKKyBtc2dpZCAiIgorICIgICAgKFgpID0gb3B0aW9uIGFwcGxpZXMgdG8gWE1PREVNIG9ubHlcbiIKKyAiICAgIChZKSA9IG9wdGlvbiBhcHBsaWVzIHRvIFlNT0RFTSBvbmx5XG4iCitAQCAtNDMxLDcgKzQzNCw3IEBAIG1zZ3N0ciAiIgorIG1zZ2lkICJnb3QgWlJRSU5JVCIKKyBtc2dzdHIgImVyaGllbHQgWlJRSU5JVCIKKyAKKy0jOiBzcmMvbHJ6LmM6MTA3NCBzcmMvbHJ6LmM6MTc4NyBzcmMvbHN6LmM6MTc5MgorKyM6IHNyYy9sc3ouYzoxNzkyIHNyYy9scnouYzoxMDc0IHNyYy9scnouYzoxNzg3CisgbXNnaWQgImdvdCBaQ0FOIgorIG1zZ3N0ciAiZXJoaWVsdCBaQ0FOIgorIAorQEAgLTQ3Miw3ICs0NzUsNyBAQCBtc2dzdHIgImNhbGNfYmxrbGVuOiBhbHQgJWxkLCBuZXUgJWxkLCBECisgIzogc3JjL2xzei5jOjIyNzIKKyAjLCBjLWZvcm1hdAorIG1zZ2lkICJjYWxjX2Jsa2xlbjogY2FsYyB0b3RhbF9ieXRlcz0lbGQsIGJwZT0lbGQsIGVjPSVsZFxuIgorLW1zZ3N0ciAiY2FsY19ibGtsZW46IGthbGt1bGllcmUgZ2VzYW10X2J5dGVzPSVsZCwgYnBlPSVsZSwgZWM9JWxkXG4iCisrbXNnc3RyICJjYWxjX2Jsa2xlbjoga2Fsa3VsaWVyZSBnZXNhbXRfYnl0ZXM9JWxkLCBicGU9JWxkLCBlYz0lbGRcbiIKKyAKKyAjOiBzcmMvbHN6LmM6MjI4MworICMsIGMtZm9ybWF0CitAQCAtNDkzLDYgKzQ5NiwxMCBAQCBtc2dzdHIgIiIKKyAiXG4iCisgImNvdW50ZW06IEdlc2FtdCAlZCAlbGRcbiIKKyAKKysjOiBzcmMvem0uYzo5MQorK21zZ2lkICJCYWQgQ1JDIgorK21zZ3N0ciAiIgorKworICM6IHNyYy96bS5jOjI0NAorICMsIGMtZm9ybWF0CisgbXNnaWQgIkJhZCBlc2NhcGUgc2VxdWVuY2UgJXgiCitAQCAtNTAyLDcgKzUwOSw3IEBAIG1zZ3N0ciAiRmFsc2NoZSBFc2NhcGVzZXF1ZW56ICV4IgorIG1zZ2lkICJTZW5kZXIgQ2FuY2VsZWQiCisgbXNnc3RyICJTZW5kZXIgYnJhY2ggYWIiCisgCistIzogc3JjL2xyei5jOjk5NyBzcmMvem0uYzo1ODUgc3JjL3ptLmM6NjQ0CisrIzogc3JjL3ptLmM6NTg1IHNyYy96bS5jOjY0NCBzcmMvbHJ6LmM6OTk3CisgbXNnaWQgIlRJTUVPVVQiCisgbXNnc3RyICJUSU1FT1VUIgorIAorQEAgLTc3MiwxMyArNzc5LDExIEBAIG1zZ3N0ciAiRXJoaWVsdCB1bmVyd2FydGV0ZXMgWlJJTklUIgorIG1zZ2lkICJTa2lwcGVkIgorIG1zZ3N0ciAi3GJlcnNwcnVuZ2VuIgorIAorLSMuIHRvbyBiYWQKKyAjOiBzcmMvbHJ6LmM6MjA2NAorICMsIGMtZm9ybWF0CisgbXNnaWQgInJ6ZmlsZTogYnBzIHJhdGUgJWxkIGJlbG93IG1pbiAlbGQiCisgbXNnc3RyICJyemZpbGU6IEJQUy1SYXRlICVsZCB1bnRlciBNaW5pbXVtICVsZCIKKyAKKy0jLiB0b28gYmFkCisgIzogc3JjL2xyei5jOjIwNzkKKyBtc2dpZCAicnpmaWxlOiByZWFjaGVkIHN0b3AgdGltZSIKKyBtc2dzdHIgInJ6ZmlsZTogQWJicnVjaHplaXQgZXJyZWljaHQiCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvcG8vbHJ6c3oucG90IGxyenN6LTAuMTIuMjAvcG8vbHJ6c3oucG90CistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9wby9scnpzei5wb3QJMTk5OC0xMi0zMCAwNzo1MDowMC4wMDAwMDAwMDAgKzAwMDAKKysrKyBscnpzei0wLjEyLjIwL3BvL2xyenN6LnBvdAkyMDE5LTExLTI2IDExOjM5OjEyLjAwMDAwMDAwMCArMDAwMAorQEAgLTEsMjQgKzEsMjcgQEAKKyAjIFNPTUUgREVTQ1JJUFRJVkUgVElUTEUuCisgIyBDb3B5cmlnaHQgKEMpIFlFQVIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyBUaGlzIGZpbGUgaXMgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHNhbWUgbGljZW5zZSBhcyB0aGUgbHJ6c3ogcGFja2FnZS4KKyAjIEZJUlNUIEFVVEhPUiA8RU1BSUxAQUREUkVTUz4sIFlFQVIuCisgIworICMsIGZ1enp5CisgbXNnaWQgIiIKKyBtc2dzdHIgIiIKKy0iUHJvamVjdC1JZC1WZXJzaW9uOiBQQUNLQUdFIFZFUlNJT05cbiIKKy0iUE9ULUNyZWF0aW9uLURhdGU6IDE5OTgtMTItMzAgMDg6NDkrMDEwMFxuIgorKyJQcm9qZWN0LUlkLVZlcnNpb246IGxyenN6IDAuMTIuMjBcbiIKKysiUmVwb3J0LU1zZ2lkLUJ1Z3MtVG86IFxuIgorKyJQT1QtQ3JlYXRpb24tRGF0ZTogMjAxOS0xMS0yNiAxMTozOSswMDAwXG4iCisgIlBPLVJldmlzaW9uLURhdGU6IFlFQVItTU8tREEgSE86TUkrWk9ORVxuIgorICJMYXN0LVRyYW5zbGF0b3I6IEZVTEwgTkFNRSA8RU1BSUxAQUREUkVTUz5cbiIKKyAiTGFuZ3VhZ2UtVGVhbTogTEFOR1VBR0UgPExMQGxpLm9yZz5cbiIKKysiTGFuZ3VhZ2U6IFxuIgorICJNSU1FLVZlcnNpb246IDEuMFxuIgorICJDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9Q0hBUlNFVFxuIgorLSJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiBFTkNPRElOR1xuIgorKyJDb250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0XG4iCisgCisgIzogc3JjL2xzei5jOjIyOAorIG1zZ2lkICJpb19tb2RlKCwyKSBpbiByYnNiLmMgbm90IGltcGxlbWVudGVkXG4iCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjIwMSBzcmMvbHN6LmM6MjMwCisrIzogc3JjL2xzei5jOjIzMCBzcmMvbHJ6LmM6MjAxCisgIywgYy1mb3JtYXQKKyBtc2dpZCAiY2F1Z2h0IHNpZ25hbCAlZDsgZXhpdGluZyIKKyBtc2dzdHIgIiIKK0BAIC00NSw3ICs0OCw3IEBAIG1zZ3N0ciAiIgorIG1zZ2lkICJmcmFtZWxlbmd0aCBvdXQgb2YgcmFuZ2UgMzIuLiVsZCIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6MzIzIHNyYy9sc3ouYzo0NTAKKysjOiBzcmMvbHN6LmM6NDUwIHNyYy9scnouYzozMjMKKyBtc2dpZCAibWluX2JwcyIKKyBtc2dzdHIgIiIKKyAKK0BAIC01Myw2NSArNTYsNjUgQEAgbXNnc3RyICIiCisgbXNnaWQgIm1pbl9icHMgbXVzdCBiZSA+PSAwIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzozMjkgc3JjL2xzei5jOjQ1OAorKyM6IHNyYy9sc3ouYzo0NTggc3JjL2xyei5jOjMyOQorIG1zZ2lkICJtaW5fYnBzX3RpbWUiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjMzMSBzcmMvbHN6LmM6NDYwCisrIzogc3JjL2xzei5jOjQ2MCBzcmMvbHJ6LmM6MzMxCisgbXNnaWQgIm1pbl9icHNfdGltZSBtdXN0IGJlID4gMSIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6MzQ3IHNyYy9sc3ouYzo0ODQKKysjOiBzcmMvbHN6LmM6NDg0IHNyYy9scnouYzozNDcKKyBtc2dpZCAiaG91ciB0byBsYXJnZSAoMC4uMjMpIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzozNDkgc3JjL2xzei5jOjQ4NgorKyM6IHNyYy9sc3ouYzo0ODYgc3JjL2xyei5jOjM0OQorIG1zZ2lkICJ1bnBhcnNhYmxlIHN0b3AgdGltZVxuIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzozNTMgc3JjL2xzei5jOjQ5MAorKyM6IHNyYy9sc3ouYzo0OTAgc3JjL2xyei5jOjM1MworIG1zZ2lkICJtaW51dGUgdG8gbGFyZ2UgKDAuLjU5KSIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6MzYzIHNyYy9scnouYzozNzAgc3JjL2xzei5jOjUwMCBzcmMvbHN6LmM6NTA3CisrIzogc3JjL2xzei5jOjUwMCBzcmMvbHN6LmM6NTA3IHNyYy9scnouYzozNjMgc3JjL2xyei5jOjM3MAorIG1zZ2lkICJzdG9wIHRpbWUgdG8gc21hbGwiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjM2OCBzcmMvbHN6LmM6NTA1CisrIzogc3JjL2xzei5jOjUwNSBzcmMvbHJ6LmM6MzY4CisgbXNnaWQgInN0b3AtYXQiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjM5OSBzcmMvbHN6LmM6NTE2CisrIzogc3JjL2xzei5jOjUxNiBzcmMvbHJ6LmM6Mzk5CisgbXNnaWQgInRpbWVvdXQiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjQwMSBzcmMvbHN6LmM6NTE4CisrIzogc3JjL2xzei5jOjUxOCBzcmMvbHJ6LmM6NDAxCisgbXNnaWQgInRpbWVvdXQgb3V0IG9mIHJhbmdlIDEwLi4xMDAwIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzo0MTcgc3JjL2xzei5jOjUyNgorKyM6IHNyYy9sc3ouYzo1MjYgc3JjL2xyei5jOjQxNworIG1zZ2lkICJzZWN1cml0eSB2aW9sYXRpb246IGNhbid0IGRvIHRoYXQgdW5kZXIgcmVzdHJpY3RlZCBzaGVsbFxuIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzo0MDcgc3JjL2xzei5jOjUzMworKyM6IHNyYy9sc3ouYzo1MzMgc3JjL2xyei5jOjQwNworIG1zZ2lkICJ3aW5kb3cgc2l6ZSIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6NDMyIHNyYy9scnouYzo0Mzkgc3JjL2xzei5jOjU1NiBzcmMvbHN6LmM6NTYzCisrIzogc3JjL2xzei5jOjU1NiBzcmMvbHN6LmM6NTYzIHNyYy9scnouYzo0MzIgc3JjL2xyei5jOjQzOQorIG1zZ2lkICJjYW5ub3QgdHVybm9mZiBzeXNsb2ciCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjQ1NCBzcmMvbHN6LmM6NTcxCisrIzogc3JjL2xzei5jOjU3MSBzcmMvbHJ6LmM6NDU0CisgbXNnaWQgInN0YXJ0dXAgZGVsYXkiCisgbXNnc3RyICIiCisgCisrIzogc3JjL2xzei5jOjU4MyBzcmMvbHN6LmM6NjkyIHNyYy9sc3ouYzo4MzEgc3JjL2xzei5jOjEwODAgc3JjL3pyZWFkbGluZS5jOjEyNworICM6IHNyYy9scnouYzo0NzAgc3JjL2xyei5jOjc1NSBzcmMvbHJ6LmM6MTExNyBzcmMvbHJ6LmM6MTI0MyBzcmMvbHJ6LmM6MTMwMAorLSM6IHNyYy9scnouYzoxMzE3IHNyYy9scnouYzoxMzMyIHNyYy9scnouYzoxNDMxIHNyYy9sc3ouYzo1ODMgc3JjL2xzei5jOjY5MgorLSM6IHNyYy9sc3ouYzo4MzEgc3JjL2xzei5jOjEwODAgc3JjL3pyZWFkbGluZS5jOjEyNworKyM6IHNyYy9scnouYzoxMzE3IHNyYy9scnouYzoxMzMyIHNyYy9scnouYzoxNDMxCisgbXNnaWQgIm91dCBvZiBtZW1vcnkiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjQ4MCBzcmMvbHN6LmM6NTk1CisrIzogc3JjL2xzei5jOjU5NSBzcmMvbHJ6LmM6NDgwCisgbXNnaWQgInRoaXMgcHJvZ3JhbSB3YXMgbmV2ZXIgaW50ZW5kZWQgdG8gYmUgdXNlZCBzZXR1aWRcbiIKKyBtc2dzdHIgIiIKKyAKK0BAIC0xMjAsMTQgKzEyMywxNSBAQCBtc2dpZCAibmVlZCBhdCBsZWFzdCBvbmUgZmlsZSB0byBzZW5kIgorIG1zZ3N0ciAiIgorIAorICM6IHNyYy9sc3ouYzo2MjgKKysjLCBjLWZvcm1hdAorIG1zZ2lkICJDYW4ndCBzZW5kIGNvbW1hbmQgaW4gcmVzdHJpY3RlZCBtb2RlXG4iCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjUyNCBzcmMvbHN6LmM6NjU1CisrIzogc3JjL2xzei5jOjY1NSBzcmMvbHJ6LmM6NTI0CisgbXNnaWQgImhvc3RuYW1lIHRvbyBsb25nXG4iCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjUzOSBzcmMvbHN6LmM6NjcwCisrIzogc3JjL2xzei5jOjY3MCBzcmMvbHJ6LmM6NTM5CisgbXNnaWQgImlsbGVnYWwgc2VydmVyIGFkZHJlc3NcbiIKKyBtc2dzdHIgIiIKKyAKK0BAIC0xMzUsMTEgKzEzOSwxMSBAQCBtc2dzdHIgIiIKKyBtc2dpZCAiY2FuIHJlYWQgb25seSBvbmUgZmlsZSBmcm9tIHN0ZGluIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzo1NzEgc3JjL2xzei5jOjgwNgorKyM6IHNyYy9sc3ouYzo4MDYgc3JjL2xyei5jOjU3MQorIG1zZ2lkICJUcmFuc2ZlciBpbmNvbXBsZXRlXG4iCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjU3MyBzcmMvbHN6LmM6ODA4CisrIzogc3JjL2xzei5jOjgwOCBzcmMvbHJ6LmM6NTczCisgbXNnaWQgIlRyYW5zZmVyIGNvbXBsZXRlXG4iCisgbXNnc3RyICIiCisgCitAQCAtMTk5LDcgKzIwMyw3IEBAIG1zZ3N0ciAiIgorIG1zZ2lkICJzZWN1cml0eSB2aW9sYXRpb246IG5vdCBhbGxvd2VkIHRvIHVwbG9hZCBmcm9tICVzIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzoxMzkyIHNyYy9sc3ouYzoxMDQ2CisrIzogc3JjL2xzei5jOjEwNDYgc3JjL2xyei5jOjEzOTIKKyAjLCBjLWZvcm1hdAorIG1zZ2lkICJjYW5ub3Qgb3BlbiAlcyIKKyBtc2dzdHIgIiIKK0BAIC0yOTAsMTIgKzI5NCwxMiBAQCBtc2dzdHIgIiIKKyBtc2dpZCAiUmV0cnkgQ291bnQgRXhjZWVkZWQiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjU5MyBzcmMvbHN6LmM6MTUyMQorKyM6IHNyYy9sc3ouYzoxNTIxIHNyYy9scnouYzo1OTMKKyAjLCBjLWZvcm1hdAorIG1zZ2lkICJUcnkgYCVzIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjU5OCBzcmMvbHN6LmM6MTUyNgorKyM6IHNyYy9sc3ouYzoxNTI2IHNyYy9scnouYzo1OTgKKyAjLCBjLWZvcm1hdAorIG1zZ2lkICIlcyB2ZXJzaW9uICVzXG4iCisgbXNnc3RyICIiCitAQCAtMzE0LDcgKzMxOCw3IEBAIG1zZ3N0ciAiIgorIG1zZ2lkICJTZW5kIGZpbGUocykgd2l0aCBaTU9ERU0vWU1PREVNL1hNT0RFTSBwcm90b2NvbFxuIgorIG1zZ3N0ciAiIgorIAorLSM6IHNyYy9scnouYzo2MDQgc3JjL2xzei5jOjE1MzQKKysjOiBzcmMvbHN6LmM6MTUzNCBzcmMvbHJ6LmM6NjA0CisgbXNnaWQgIiIKKyAiICAgIChYKSA9IG9wdGlvbiBhcHBsaWVzIHRvIFhNT0RFTSBvbmx5XG4iCisgIiAgICAoWSkgPSBvcHRpb24gYXBwbGllcyB0byBZTU9ERU0gb25seVxuIgorQEAgLTM3OCw3ICszODIsNyBAQCBtc2dzdHIgIiIKKyBtc2dpZCAiZ290IFpSUUlOSVQiCisgbXNnc3RyICIiCisgCistIzogc3JjL2xyei5jOjEwNzQgc3JjL2xyei5jOjE3ODcgc3JjL2xzei5jOjE3OTIKKysjOiBzcmMvbHN6LmM6MTc5MiBzcmMvbHJ6LmM6MTA3NCBzcmMvbHJ6LmM6MTc4NworIG1zZ2lkICJnb3QgWkNBTiIKKyBtc2dzdHIgIiIKKyAKK0BAIC00MzgsNiArNDQyLDEwIEBAIG1zZ2lkICIiCisgImNvdW50ZW06IFRvdGFsICVkICVsZFxuIgorIG1zZ3N0ciAiIgorIAorKyM6IHNyYy96bS5jOjkxCisrbXNnaWQgIkJhZCBDUkMiCisrbXNnc3RyICIiCisrCisgIzogc3JjL3ptLmM6MjQ0CisgIywgYy1mb3JtYXQKKyBtc2dpZCAiQmFkIGVzY2FwZSBzZXF1ZW5jZSAleCIKK0BAIC00NDcsNyArNDU1LDcgQEAgbXNnc3RyICIiCisgbXNnaWQgIlNlbmRlciBDYW5jZWxlZCIKKyBtc2dzdHIgIiIKKyAKKy0jOiBzcmMvbHJ6LmM6OTk3IHNyYy96bS5jOjU4NSBzcmMvem0uYzo2NDQKKysjOiBzcmMvem0uYzo1ODUgc3JjL3ptLmM6NjQ0IHNyYy9scnouYzo5OTcKKyBtc2dpZCAiVElNRU9VVCIKKyBtc2dzdHIgIiIKKyAKK0BAIC02NzgsMTMgKzY4NiwxMSBAQCBtc2dzdHIgIiIKKyBtc2dpZCAiU2tpcHBlZCIKKyBtc2dzdHIgIiIKKyAKKy0jLiB0b28gYmFkCisgIzogc3JjL2xyei5jOjIwNjQKKyAjLCBjLWZvcm1hdAorIG1zZ2lkICJyemZpbGU6IGJwcyByYXRlICVsZCBiZWxvdyBtaW4gJWxkIgorIG1zZ3N0ciAiIgorIAorLSMuIHRvbyBiYWQKKyAjOiBzcmMvbHJ6LmM6MjA3OQorIG1zZ2lkICJyemZpbGU6IHJlYWNoZWQgc3RvcCB0aW1lIgorIG1zZ3N0ciAiIgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL3BvL01ha2V2YXJzIGxyenN6LTAuMTIuMjAvcG8vTWFrZXZhcnMKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL3BvL01ha2V2YXJzCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCisrKysgbHJ6c3otMC4xMi4yMC9wby9NYWtldmFycwkyMDE5LTExLTI1IDE4OjA5OjUyLjAwMDAwMDAwMCArMDAwMAorQEAgLTAsMCArMSw3OCBAQAorKyMgTWFrZWZpbGUgdmFyaWFibGVzIGZvciBQTyBkaXJlY3RvcnkgaW4gYW55IHBhY2thZ2UgdXNpbmcgR05VIGdldHRleHQuCisrCisrIyBVc3VhbGx5IHRoZSBtZXNzYWdlIGRvbWFpbiBpcyB0aGUgc2FtZSBhcyB0aGUgcGFja2FnZSBuYW1lLgorK0RPTUFJTiA9ICQoUEFDS0FHRSkKKysKKysjIFRoZXNlIHR3byB2YXJpYWJsZXMgZGVwZW5kIG9uIHRoZSBsb2NhdGlvbiBvZiB0aGlzIGRpcmVjdG9yeS4KKytzdWJkaXIgPSBwbworK3RvcF9idWlsZGRpciA9IC4uCisrCisrIyBUaGVzZSBvcHRpb25zIGdldCBwYXNzZWQgdG8geGdldHRleHQuCisrWEdFVFRFWFRfT1BUSU9OUyA9IC0ta2V5d29yZD1fIC0ta2V5d29yZD1OXworKworKyMgVGhpcyBpcyB0aGUgY29weXJpZ2h0IGhvbGRlciB0aGF0IGdldHMgaW5zZXJ0ZWQgaW50byB0aGUgaGVhZGVyIG9mIHRoZQorKyMgJChET01BSU4pLnBvdCBmaWxlLiAgU2V0IHRoaXMgdG8gdGhlIGNvcHlyaWdodCBob2xkZXIgb2YgdGhlIHN1cnJvdW5kaW5nCisrIyBwYWNrYWdlLiAgKE5vdGUgdGhhdCB0aGUgbXNnc3RyIHN0cmluZ3MsIGV4dHJhY3RlZCBmcm9tIHRoZSBwYWNrYWdlJ3MKKysjIHNvdXJjZXMsIGJlbG9uZyB0byB0aGUgY29weXJpZ2h0IGhvbGRlciBvZiB0aGUgcGFja2FnZS4pICBUcmFuc2xhdG9ycyBhcmUKKysjIGV4cGVjdGVkIHRvIHRyYW5zZmVyIHRoZSBjb3B5cmlnaHQgZm9yIHRoZWlyIHRyYW5zbGF0aW9ucyB0byB0aGlzIHBlcnNvbgorKyMgb3IgZW50aXR5LCBvciB0byBkaXNjbGFpbSB0aGVpciBjb3B5cmlnaHQuICBUaGUgZW1wdHkgc3RyaW5nIHN0YW5kcyBmb3IKKysjIHRoZSBwdWJsaWMgZG9tYWluOyBpbiB0aGlzIGNhc2UgdGhlIHRyYW5zbGF0b3JzIGFyZSBleHBlY3RlZCB0byBkaXNjbGFpbQorKyMgdGhlaXIgY29weXJpZ2h0LgorK0NPUFlSSUdIVF9IT0xERVIgPSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysKKysjIFRoaXMgdGVsbHMgd2hldGhlciBvciBub3QgdG8gcHJlcGVuZCAiR05VICIgcHJlZml4IHRvIHRoZSBwYWNrYWdlCisrIyBuYW1lIHRoYXQgZ2V0cyBpbnNlcnRlZCBpbnRvIHRoZSBoZWFkZXIgb2YgdGhlICQoRE9NQUlOKS5wb3QgZmlsZS4KKysjIFBvc3NpYmxlIHZhbHVlcyBhcmUgInllcyIsICJubyIsIG9yIGVtcHR5LiAgSWYgaXQgaXMgZW1wdHksIHRyeSB0bworKyMgZGV0ZWN0IGl0IGF1dG9tYXRpY2FsbHkgYnkgc2Nhbm5pbmcgdGhlIGZpbGVzIGluICQodG9wX3NyY2RpcikgZm9yCisrIyAiR05VIHBhY2thZ2VuYW1lIiBzdHJpbmcuCisrUEFDS0FHRV9HTlUgPQorKworKyMgVGhpcyBpcyB0aGUgZW1haWwgYWRkcmVzcyBvciBVUkwgdG8gd2hpY2ggdGhlIHRyYW5zbGF0b3JzIHNoYWxsIHJlcG9ydAorKyMgYnVncyBpbiB0aGUgdW50cmFuc2xhdGVkIHN0cmluZ3M6CisrIyAtIFN0cmluZ3Mgd2hpY2ggYXJlIG5vdCBlbnRpcmUgc2VudGVuY2VzLCBzZWUgdGhlIG1haW50YWluZXIgZ3VpZGVsaW5lcworKyMgICBpbiB0aGUgR05VIGdldHRleHQgZG9jdW1lbnRhdGlvbiwgc2VjdGlvbiAnUHJlcGFyaW5nIFN0cmluZ3MnLgorKyMgLSBTdHJpbmdzIHdoaWNoIHVzZSB1bmNsZWFyIHRlcm1zIG9yIHJlcXVpcmUgYWRkaXRpb25hbCBjb250ZXh0IHRvIGJlCisrIyAgIHVuZGVyc3Rvb2QuCisrIyAtIFN0cmluZ3Mgd2hpY2ggbWFrZSBpbnZhbGlkIGFzc3VtcHRpb25zIGFib3V0IG5vdGF0aW9uIG9mIGRhdGUsIHRpbWUgb3IKKysjICAgbW9uZXkuCisrIyAtIFBsdXJhbGlzYXRpb24gcHJvYmxlbXMuCisrIyAtIEluY29ycmVjdCBFbmdsaXNoIHNwZWxsaW5nLgorKyMgLSBJbmNvcnJlY3QgZm9ybWF0dGluZy4KKysjIEl0IGNhbiBiZSB5b3VyIGVtYWlsIGFkZHJlc3MsIG9yIGEgbWFpbGluZyBsaXN0IGFkZHJlc3Mgd2hlcmUgdHJhbnNsYXRvcnMKKysjIGNhbiB3cml0ZSB0byB3aXRob3V0IGJlaW5nIHN1YnNjcmliZWQsIG9yIHRoZSBVUkwgb2YgYSB3ZWIgcGFnZSB0aHJvdWdoCisrIyB3aGljaCB0aGUgdHJhbnNsYXRvcnMgY2FuIGNvbnRhY3QgeW91LgorK01TR0lEX0JVR1NfQUREUkVTUyA9CisrCisrIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGxvY2FsZSBjYXRlZ29yaWVzLCBiZXlvbmQgTENfTUVTU0FHRVMsIGZvciB3aGljaCB0aGUKKysjIG1lc3NhZ2UgY2F0YWxvZ3Mgc2hhbGwgYmUgdXNlZC4gIEl0IGlzIHVzdWFsbHkgZW1wdHkuCisrRVhUUkFfTE9DQUxFX0NBVEVHT1JJRVMgPQorKworKyMgVGhpcyB0ZWxscyB3aGV0aGVyIHRoZSAkKERPTUFJTikucG90IGZpbGUgY29udGFpbnMgbWVzc2FnZXMgd2l0aCBhbiAnbXNnY3R4dCcKKysjIGNvbnRleHQuICBQb3NzaWJsZSB2YWx1ZXMgYXJlICJ5ZXMiIGFuZCAibm8iLiAgU2V0IHRoaXMgdG8geWVzIGlmIHRoZQorKyMgcGFja2FnZSB1c2VzIGZ1bmN0aW9ucyB0YWtpbmcgYWxzbyBhIG1lc3NhZ2UgY29udGV4dCwgbGlrZSBwZ2V0dGV4dCgpLCBvcgorKyMgaWYgaW4gJChYR0VUVEVYVF9PUFRJT05TKSB5b3UgZGVmaW5lIGtleXdvcmRzIHdpdGggYSBjb250ZXh0IGFyZ3VtZW50LgorK1VTRV9NU0dDVFhUID0gbm8KKysKKysjIFRoZXNlIG9wdGlvbnMgZ2V0IHBhc3NlZCB0byBtc2dtZXJnZS4KKysjIFVzZWZ1bCBvcHRpb25zIGFyZSBpbiBwYXJ0aWN1bGFyOgorKyMgICAtLXByZXZpb3VzICAgICAgICAgICAgdG8ga2VlcCBwcmV2aW91cyBtc2dpZHMgb2YgdHJhbnNsYXRlZCBtZXNzYWdlcywKKysjICAgLS1xdWlldCAgICAgICAgICAgICAgIHRvIHJlZHVjZSB0aGUgdmVyYm9zaXR5LgorK01TR01FUkdFX09QVElPTlMgPQorKworKyMgVGhlc2Ugb3B0aW9ucyBnZXQgcGFzc2VkIHRvIG1zZ2luaXQuCisrIyBJZiB5b3Ugd2FudCB0byBkaXNhYmxlIGxpbmUgd3JhcHBpbmcgd2hlbiB3cml0aW5nIFBPIGZpbGVzLCBhZGQKKysjIC0tbm8td3JhcCB0byBNU0dNRVJHRV9PUFRJT05TLCBYR0VUVEVYVF9PUFRJT05TLCBhbmQKKysjIE1TR0lOSVRfT1BUSU9OUy4KKytNU0dJTklUX09QVElPTlMgPQorKworKyMgVGhpcyB0ZWxscyB3aGV0aGVyIG9yIG5vdCB0byByZWdlbmVyYXRlIGEgUE8gZmlsZSB3aGVuICQoRE9NQUlOKS5wb3QKKysjIGhhcyBjaGFuZ2VkLiAgUG9zc2libGUgdmFsdWVzIGFyZSAieWVzIiBhbmQgIm5vIi4gIFNldCB0aGlzIHRvIG5vIGlmCisrIyB0aGUgUE9UIGZpbGUgaXMgY2hlY2tlZCBpbiB0aGUgcmVwb3NpdG9yeSBhbmQgdGhlIHZlcnNpb24gY29udHJvbAorKyMgcHJvZ3JhbSBpZ25vcmVzIHRpbWVzdGFtcHMuCisrUE9fREVQRU5EU19PTl9QT1QgPSB5ZXMKKysKKysjIFRoaXMgdGVsbHMgd2hldGhlciBvciBub3QgdG8gZm9yY2libHkgdXBkYXRlICQoRE9NQUlOKS5wb3QgYW5kCisrIyByZWdlbmVyYXRlIFBPIGZpbGVzIG9uICJtYWtlIGRpc3QiLiAgUG9zc2libGUgdmFsdWVzIGFyZSAieWVzIiBhbmQKKysjICJubyIuICBTZXQgdGhpcyB0byBubyBpZiB0aGUgUE9UIGZpbGUgYW5kIFBPIGZpbGVzIGFyZSBtYWludGFpbmVkCisrIyBleHRlcm5hbGx5LgorK0RJU1RfREVQRU5EU19PTl9VUERBVEVfUE8gPSB5ZXMKK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9wby9zdGFtcC1jYXQtaWQgbHJ6c3otMC4xMi4yMC9wby9zdGFtcC1jYXQtaWQKKy0tLSBjbGVhbi9scnpzei0wLjEyLjIwL3BvL3N0YW1wLWNhdC1pZAkxOTk4LTEyLTMwIDA3OjUwOjAxLjAwMDAwMDAwMCArMDAwMAorKysrIGxyenN6LTAuMTIuMjAvcG8vc3RhbXAtY2F0LWlkCTE5NzAtMDEtMDEgMDE6MDA6MDAuMDAwMDAwMDAwICswMTAwCitAQCAtMSArMCwwIEBACistdGltZXN0YW1wCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvcG8vc3RhbXAtcG8gbHJ6c3otMC4xMi4yMC9wby9zdGFtcC1wbworLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvcG8vc3RhbXAtcG8JMTk3MC0wMS0wMSAwMTowMDowMC4wMDAwMDAwMDAgKzAxMDAKKysrKyBscnpzei0wLjEyLjIwL3BvL3N0YW1wLXBvCTIwMTktMTEtMjYgMTE6NDI6MDkuMDAwMDAwMDAwICswMDAwCitAQCAtMCwwICsxIEBACisrdGltZXN0YW1wCitkaWZmIC11cHJOIGNsZWFuL2xyenN6LTAuMTIuMjAvc3JjL01ha2VmaWxlLmFtIGxyenN6LTAuMTIuMjAvc3JjL01ha2VmaWxlLmFtCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9zcmMvTWFrZWZpbGUuYW0JMTk5OC0xMi0yOCAwODozODo0Ny4wMDAwMDAwMDAgKzAwMDAKKysrKyBscnpzei0wLjEyLjIwL3NyYy9NYWtlZmlsZS5hbQkyMDE5LTExLTI1IDE2OjIyOjQ5LjAwMDAwMDAwMCArMDAwMAorQEAgLTIsMTMgKzIsMTEgQEAgYmluX1BST0dSQU1TPWxyeiBsc3oKKyBscnpfU09VUkNFUz1scnouYyB0aW1pbmcuYyB6cGVyci5jIHpyZWFkbGluZS5jIGNyY3RhYi5jIHJic2IuYyB6bS5jIHByb3RuYW1lLmMgdGNwLmMgbHN5c2xvZy5jIGNhbml0LmMKKyBsc3pfU09VUkNFUz1sc3ouYyB0aW1pbmcuYyB6cGVyci5jIHpyZWFkbGluZS5jIGNyY3RhYi5jIHJic2IuYyB6bS5jIHByb3RuYW1lLmMgdGNwLmMgbHN5c2xvZy5jIGNhbml0LmMKKyBub2luc3RfSEVBREVSUyA9IHRpbWluZy5oIHpnbG9iYWwuaCB6bW9kZW0uaAorLWRhdGFkaXIgPSAkKHByZWZpeCkvQERBVEFESVJOQU1FQAorK2RhdGFkaXIgPSAkKHByZWZpeCkvc2hhcmUKKyBsb2NhbGVkaXIgPSAkKGRhdGFkaXIpL2xvY2FsZQorLUNGTEFHUz1AQ0ZMQUdTQAorIERJU1RDTEVBTl9GSUxFUz1scnpzemJ1ZworIAorLUxEQUREID0gLi4vbGliL2xpYnptb2RlbS5hIEBJTlRMTElCU0AKKy1BVVRPTUFLRV9PUFRJT05TPWFuc2kya25yCisrTERBREQgPSAuLi9saWIvbGliem1vZGVtLmEgQExJQklOVExACisgRVhUUkFfRElTVCA9IGFuc2kya25yLjEgYW5zaTJrbnIuYyBscnpzemJ1Zy5pbgorIElOQ0xVREVTID0gLUkuLiAtSSQoc3JjZGlyKSAtSSQodG9wX3NyY2Rpcikvc3JjIC1JLi4vaW50bCAtSSQodG9wX3NyY2RpcikvbGliCisgI0RFRlMgPSAtRExPQ0FMRURJUj1cIiQobG9jYWxlZGlyKVwiIC1ET1M9XCJAaG9zdF9vc0BcIiAtRENQVT1cIkBob3N0X2NwdUBcIgorZGlmZiAtdXByTiBjbGVhbi9scnpzei0wLjEyLjIwL3NyYy96Z2xvYmFsLmggbHJ6c3otMC4xMi4yMC9zcmMvemdsb2JhbC5oCistLS0gY2xlYW4vbHJ6c3otMC4xMi4yMC9zcmMvemdsb2JhbC5oCTE5OTgtMTItMjkgMTI6MzQ6NTkuMDAwMDAwMDAwICswMDAwCisrKysgbHJ6c3otMC4xMi4yMC9zcmMvemdsb2JhbC5oCTIwMTktMTEtMjUgMTY6MzI6NDIuMDAwMDAwMDAwICswMDAwCitAQCAtMTgwLDkgKzE4MCw2IEBAIHN0cnVjdCB0ZXJtaW9zOworICNpZiBIQVZFX0xPQ0FMRV9ICisgIyBpbmNsdWRlIDxsb2NhbGUuaD4KKyAjZW5kaWYKKy0jaWYgIUhBVkVfU0VUTE9DQUxFCistIyBkZWZpbmUgc2V0bG9jYWxlKENhdGVnb3J5LCBMb2NhbGUpIC8qIGVtcHR5ICovCistI2VuZGlmCisgCisgI2lmIEVOQUJMRV9OTFMKKyAjIGluY2x1ZGUgPGxpYmludGwuaD4KK2RpZmYgLXVwck4gY2xlYW4vbHJ6c3otMC4xMi4yMC9zdGFtcC1oLmluIGxyenN6LTAuMTIuMjAvc3RhbXAtaC5pbgorLS0tIGNsZWFuL2xyenN6LTAuMTIuMjAvc3RhbXAtaC5pbgkxOTk4LTEyLTMwIDA3OjUxOjA3LjAwMDAwMDAwMCArMDAwMAorKysrIGxyenN6LTAuMTIuMjAvc3RhbXAtaC5pbgkxOTcwLTAxLTAxIDAxOjAwOjAwLjAwMDAwMDAwMCArMDEwMAorQEAgLTEgKzAsMCBAQAorLXRpbWVzdGFtcApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6LTAuMTIuMjAvZ2V0dGV4dC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzei0wLjEyLjIwL2dldHRleHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFhMjRhMWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6LTAuMTIuMjAvZ2V0dGV4dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxODg0ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9BQk9VVC1OTFMJMTk5OC0wNC0yNiAwOToyMjozMC4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL0FCT1VULU5MUwkyMDA0LTA5LTEyIDE0OjQwOjM0LjMyMzc1Mjk1MiAtMDQwMAotQEAgLTEsMTQgKzEsMTQgQEAKLSBOb3RlcyBvbiB0aGUgRnJlZSBUcmFuc2xhdGlvbiBQcm9qZWN0Ci0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIAotLSAgIEZyZWUgc29mdHdhcmUgaXMgZ29pbmcgaW50ZXJuYXRpb25hbCEgIFRoZSBGcmVlIFRyYW5zbGF0aW9uIFByb2plY3QKLS1pcyBhIHdheSB0byBnZXQgbWFpbnRhaW5lcnMgb2YgZnJlZSBzb2Z0d2FyZSwgdHJhbnNsYXRvcnMsIGFuZCB1c2VycyBhbGwKLStGcmVlIHNvZnR3YXJlIGlzIGdvaW5nIGludGVybmF0aW9uYWwhICBUaGUgRnJlZSBUcmFuc2xhdGlvbiBQcm9qZWN0IGlzCi0rYSB3YXkgdG8gZ2V0IG1haW50YWluZXJzIG9mIGZyZWUgc29mdHdhcmUsIHRyYW5zbGF0b3JzLCBhbmQgdXNlcnMgYWxsCi0gdG9nZXRoZXIsIHNvIHRoYXQgd2lsbCBncmFkdWFsbHkgYmVjb21lIGFibGUgdG8gc3BlYWsgbWFueSBsYW5ndWFnZXMuCi0gQSBmZXcgcGFja2FnZXMgYWxyZWFkeSBwcm92aWRlIHRyYW5zbGF0aW9ucyBmb3IgdGhlaXIgbWVzc2FnZXMuCi0gCi0gICAgSWYgeW91IGZvdW5kIHRoaXMgYEFCT1VULU5MUycgZmlsZSBpbnNpZGUgYSBkaXN0cmlidXRpb24sIHlvdSBtYXkKLSBhc3N1bWUgdGhhdCB0aGUgZGlzdHJpYnV0ZWQgcGFja2FnZSBkb2VzIHVzZSBHTlUgYGdldHRleHQnIGludGVybmFsbHksCi0taXRzZWxmIGF2YWlsYWJsZSBhdCB5b3VyIG5lYXJlc3QgR05VIGFyY2hpdmUgc2l0ZS4gIEJ1dCB5b3UgZG8gKm5vdCoKLStpdHNlbGYgYXZhaWxhYmxlIGF0IHlvdXIgbmVhcmVzdCBHTlUgYXJjaGl2ZSBzaXRlLiAgQnV0IHlvdSBkbyBfbm90XwotIG5lZWQgdG8gaW5zdGFsbCBHTlUgYGdldHRleHQnIHByaW9yIHRvIGNvbmZpZ3VyaW5nLCBpbnN0YWxsaW5nIG9yIHVzaW5nCi0gdGhpcyBwYWNrYWdlIHdpdGggbWVzc2FnZXMgdHJhbnNsYXRlZC4KLSAKLUBAIC0yMiwxMCArMjIsMTAgQEAKLSBgZ2V0dGV4dCcgd2hpY2ggaXMgdXNlZC4gIFRoZSBpbmZvcm1hdGlvbiBjYW4gYmUgZm91bmQgaW4gdGhlCi0gYGludGwvVkVSU0lPTicgZmlsZSwgaW4gaW50ZXJuYXRpb25hbGl6ZWQgcGFja2FnZXMuCi0gCi0tT25lIGFkdmlzZSBpbiBhZHZhbmNlCi0tPT09PT09PT09PT09PT09PT09PT09Ci0rUXVpY2sgY29uZmlndXJhdGlvbiBhZHZpY2UKLSs9PT09PT09PT09PT09PT09PT09PT09PT09PQotIAotLSAgIElmIHlvdSB3YW50IHRvIGV4cGxvaXQgdGhlIGZ1bGwgcG93ZXIgb2YgaW50ZXJuYXRpb25hbGl6YXRpb24sIHlvdQotK0lmIHlvdSB3YW50IHRvIGV4cGxvaXQgdGhlIGZ1bGwgcG93ZXIgb2YgaW50ZXJuYXRpb25hbGl6YXRpb24sIHlvdQotIHNob3VsZCBjb25maWd1cmUgaXQgdXNpbmcKLSAKLSAgICAgIC4vY29uZmlndXJlIC0td2l0aC1pbmNsdWRlZC1nZXR0ZXh0Ci1AQCAtMzQsNDIgKzM0LDQwIEBACi0gcGFja2FnZSwgZGVzcGl0ZSB0aGUgZXhpc3RlbmNlIG9mIGludGVybmF0aW9uYWxpemluZyBjYXBhYmlsaXRpZXMgaW4gdGhlCi0gb3BlcmF0aW5nIHN5c3RlbSB3aGVyZSB0aGlzIHBhY2thZ2UgaXMgYmVpbmcgaW5zdGFsbGVkLiAgU28gZmFyLCBvbmx5Ci0gdGhlIGBnZXR0ZXh0JyBpbXBsZW1lbnRhdGlvbiBpbiB0aGUgR05VIEMgbGlicmFyeSB2ZXJzaW9uIDIgcHJvdmlkZXMgYXMKLS1tYW55IGZlYXR1cmVzIChzdWNoIGFzIGxvY2FsZSBhbGlhcyBvciBtZXNzYWdlIGluaGVyaXRhbmNlKSBhcyB0aGUKLS1pbXBsZW1lbnRhdGlvbiBoZXJlLiAgSXQgaXMgYWxzbyBub3QgcG9zc2libGUgdG8gb2ZmZXIgdGhpcyBhZGRpdGlvbmFsCi0tZnVuY3Rpb25hbGl0eSBvbiB0b3Agb2YgYSBgY2F0Z2V0cycgaW1wbGVtZW50YXRpb24uICBGdXR1cmUgdmVyc2lvbnMgb2YKLS1HTlUgYGdldHRleHQnIHdpbGwgdmVyeSBsaWtlbHkgY29udmV5IGV2ZW4gbW9yZSBmdW5jdGlvbmFsaXR5LiAgU28gaXQKLS1taWdodCBiZSBhIGdvb2QgaWRlYSB0byBjaGFuZ2UgdG8gR05VIGBnZXR0ZXh0JyBhcyBzb29uIGFzIHBvc3NpYmxlLgotK21hbnkgZmVhdHVyZXMgKHN1Y2ggYXMgbG9jYWxlIGFsaWFzLCBtZXNzYWdlIGluaGVyaXRhbmNlLCBhdXRvbWF0aWMKLStjaGFyc2V0IGNvbnZlcnNpb24gb3IgcGx1cmFsIGZvcm0gaGFuZGxpbmcpIGFzIHRoZSBpbXBsZW1lbnRhdGlvbiBoZXJlLgotK0l0IGlzIGFsc28gbm90IHBvc3NpYmxlIHRvIG9mZmVyIHRoaXMgYWRkaXRpb25hbCBmdW5jdGlvbmFsaXR5IG9uIHRvcAotK29mIGEgYGNhdGdldHMnIGltcGxlbWVudGF0aW9uLiAgRnV0dXJlIHZlcnNpb25zIG9mIEdOVSBgZ2V0dGV4dCcgd2lsbAotK3ZlcnkgbGlrZWx5IGNvbnZleSBldmVuIG1vcmUgZnVuY3Rpb25hbGl0eS4gIFNvIGl0IG1pZ2h0IGJlIGEgZ29vZCBpZGVhCi0rdG8gY2hhbmdlIHRvIEdOVSBgZ2V0dGV4dCcgYXMgc29vbiBhcyBwb3NzaWJsZS4KLSAKLS0gICBTbyB5b3UgbmVlZCBub3QgcHJvdmlkZSB0aGlzIG9wdGlvbiBpZiB5b3UgYXJlIHVzaW5nIEdOVSBsaWJjIDIgb3IKLSsgICBTbyB5b3UgbmVlZCBfbm90XyBwcm92aWRlIHRoaXMgb3B0aW9uIGlmIHlvdSBhcmUgdXNpbmcgR05VIGxpYmMgMiBvcgotIHlvdSBoYXZlIGluc3RhbGxlZCBhIHJlY2VudCBjb3B5IG9mIHRoZSBHTlUgZ2V0dGV4dCBwYWNrYWdlIHdpdGggdGhlCi0gaW5jbHVkZWQgYGxpYmludGwnLgotIAotIElOU1RBTEwgTWF0dGVycwotID09PT09PT09PT09PT09PQotIAotLSAgIFNvbWUgcGFja2FnZXMgYXJlICJsb2NhbGl6YWJsZSIgd2hlbiBwcm9wZXJseSBpbnN0YWxsZWQ7IHRoZQotLXByb2dyYW1zIHRoZXkgY29udGFpbiBjYW4gYmUgbWFkZSB0byBzcGVhayB5b3VyIG93biBuYXRpdmUgbGFuZ3VhZ2UuCi0tTW9zdCBzdWNoIHBhY2thZ2VzIHVzZSBHTlUgYGdldHRleHQnLiAgT3RoZXIgcGFja2FnZXMgaGF2ZSB0aGVpciBvd24KLS13YXlzIHRvIGludGVybmF0aW9uYWxpemF0aW9uLCBwcmVkYXRpbmcgR05VIGBnZXR0ZXh0Jy4KLStTb21lIHBhY2thZ2VzIGFyZSAibG9jYWxpemFibGUiIHdoZW4gcHJvcGVybHkgaW5zdGFsbGVkOyB0aGUgcHJvZ3JhbXMKLSt0aGV5IGNvbnRhaW4gY2FuIGJlIG1hZGUgdG8gc3BlYWsgeW91ciBvd24gbmF0aXZlIGxhbmd1YWdlLiAgTW9zdCBzdWNoCi0rcGFja2FnZXMgdXNlIEdOVSBgZ2V0dGV4dCcuICBPdGhlciBwYWNrYWdlcyBoYXZlIHRoZWlyIG93biB3YXlzIHRvCi0raW50ZXJuYXRpb25hbGl6YXRpb24sIHByZWRhdGluZyBHTlUgYGdldHRleHQnLgotIAotICAgIEJ5IGRlZmF1bHQsIHRoaXMgcGFja2FnZSB3aWxsIGJlIGluc3RhbGxlZCB0byBhbGxvdyB0cmFuc2xhdGlvbiBvZgotLW1lc3NhZ2VzLiAgSXQgd2lsbCBhdXRvbWF0aWNhbGx5IGRldGVjdCB3aGV0aGVyIHRoZSBzeXN0ZW0gcHJvdmlkZXMKLS11c2FibGUgYGNhdGdldHMnIChpZiB1c2luZyB0aGlzIGlzIHNlbGVjdGVkIGJ5IHRoZSBpbnN0YWxsZXIpIG9yCi0tYGdldHRleHQnIGZ1bmN0aW9ucy4gIElmIG5laXRoZXIgaXMgYXZhaWxhYmxlLCB0aGUgR05VIGBnZXR0ZXh0JyBvd24KLSttZXNzYWdlcy4gIEl0IHdpbGwgYXV0b21hdGljYWxseSBkZXRlY3Qgd2hldGhlciB0aGUgc3lzdGVtIGFscmVhZHkKLStwcm92aWRlcyB0aGUgR05VIGBnZXR0ZXh0JyBmdW5jdGlvbnMuICBJZiBub3QsIHRoZSBHTlUgYGdldHRleHQnIG93bgotIGxpYnJhcnkgd2lsbCBiZSB1c2VkLiAgVGhpcyBsaWJyYXJ5IGlzIHdob2xseSBjb250YWluZWQgd2l0aGluIHRoaXMKLSBwYWNrYWdlLCB1c3VhbGx5IGluIHRoZSBgaW50bC8nIHN1YmRpcmVjdG9yeSwgc28gcHJpb3IgaW5zdGFsbGF0aW9uIG9mCi0tdGhlIEdOVSBgZ2V0dGV4dCcgcGFja2FnZSBpcyAqbm90KiByZXF1aXJlZC4gIEluc3RhbGxlcnMgbWF5IHVzZQotK3RoZSBHTlUgYGdldHRleHQnIHBhY2thZ2UgaXMgX25vdF8gcmVxdWlyZWQuICBJbnN0YWxsZXJzIG1heSB1c2UKLSBzcGVjaWFsIG9wdGlvbnMgYXQgY29uZmlndXJhdGlvbiB0aW1lIGZvciBjaGFuZ2luZyB0aGUgZGVmYXVsdAotIGJlaGF2aW91ci4gIFRoZSBjb21tYW5kczoKLSAKLSAgICAgIC4vY29uZmlndXJlIC0td2l0aC1pbmNsdWRlZC1nZXR0ZXh0Ci0tICAgICAuL2NvbmZpZ3VyZSAtLXdpdGgtY2F0Z2V0cwotICAgICAgLi9jb25maWd1cmUgLS1kaXNhYmxlLW5scwotIAotLXdpbGwgcmVzcGVjdGl2ZWx5IGJ5cGFzcyBhbnkgcHJlLWV4aXN0aW5nIGBjYXRnZXRzJyBvciBgZ2V0dGV4dCcgdG8gdXNlCi0tdGhlIGludGVybmF0aW9uYWxpemluZyByb3V0aW5lcyBwcm92aWRlZCB3aXRoaW4gdGhpcyBwYWNrYWdlLCBlbmFibGUKLS10aGUgdXNlIG9mIHRoZSBgY2F0Z2V0cycgZnVuY3Rpb25zIChpZiBmb3VuZCBvbiB0aGUgbG9jYWxlIHN5c3RlbSksIG9yCi0tZWxzZSwgKnRvdGFsbHkqIGRpc2FibGUgdHJhbnNsYXRpb24gb2YgbWVzc2FnZXMuCi0rd2lsbCByZXNwZWN0aXZlbHkgYnlwYXNzIGFueSBwcmUtZXhpc3RpbmcgYGdldHRleHQnIHRvIHVzZSB0aGUKLStpbnRlcm5hdGlvbmFsaXppbmcgcm91dGluZXMgcHJvdmlkZWQgd2l0aGluIHRoaXMgcGFja2FnZSwgb3IgZWxzZSwKLStfdG90YWxseV8gZGlzYWJsZSB0cmFuc2xhdGlvbiBvZiBtZXNzYWdlcy4KLSAKLSAgICBXaGVuIHlvdSBhbHJlYWR5IGhhdmUgR05VIGBnZXR0ZXh0JyBpbnN0YWxsZWQgb24geW91ciBzeXN0ZW0gYW5kIHJ1bgotIGNvbmZpZ3VyZSB3aXRob3V0IGFuIG9wdGlvbiBmb3IgeW91ciBuZXcgcGFja2FnZSwgYGNvbmZpZ3VyZScgd2lsbAotQEAgLTgzLDE4ICs4MSwxMCBAQAotIAotIHRvIHByZXZlbnQgYXV0by1kZXRlY3Rpb24uCi0gCi0tICAgQnkgZGVmYXVsdCB0aGUgY29uZmlndXJhdGlvbiBwcm9jZXNzIHdpbGwgbm90IHRlc3QgZm9yIHRoZSBgY2F0Z2V0cycKLS1mdW5jdGlvbiBhbmQgdGhlcmVmb3JlIHRoZXkgd2lsbCBub3QgYmUgdXNlZC4gIFRoZSByZWFzb25zIGFyZSBhbHJlYWR5Ci0tZ2l2ZW4gYWJvdmU6IHRoZSBlbXVsYXRpb24gb24gdG9wIG9mIGBjYXRnZXRzJyBjYW5ub3QgcHJvdmlkZSBhbGwgdGhlCi0tZXh0ZW5zaW9ucyBwcm92aWRlZCBieSB0aGUgR05VIGBnZXR0ZXh0JyBsaWJyYXJ5LiAgSWYgeW91IG5ldmVydGhlbGVzcwotLXdhbnQgdG8gdXNlIHRoZSBgY2F0Z2V0cycgZnVuY3Rpb25zIHVzZQotLQotLSAgICAgLi9jb25maWd1cmUgLS13aXRoLWNhdGdldHMKLS0KLS10byBlbmFibGUgdGhlIHRlc3QgZm9yIGBjYXRnZXRzJyAodGhpcyBjYXVzZXMgbm8gaGFybSBpZiBgY2F0Z2V0cycgaXMKLS1ub3QgYXZhaWxhYmxlIG9uIHlvdXIgc3lzdGVtKS4gIElmIHlvdSByZWFsbHkgc2VsZWN0IHRoaXMgb3B0aW9uIHdlCi0td291bGQgbGlrZSB0byBoZWFyIGFib3V0IHRoZSByZWFzb25zIGJlY2F1c2Ugd2UgY2Fubm90IHRoaW5rIG9mIGFueQotLWdvb2Qgb25lIG91cnNlbGYuCi0rICAgVGhlIGNvbmZpZ3VyYXRpb24gcHJvY2VzcyB3aWxsIG5vdCB0ZXN0IGZvciB0aGUgYGNhdGdldHMnIGZ1bmN0aW9uCi0rYW5kIHRoZXJlZm9yZSBpdCB3aWxsIG5vdCBiZSB1c2VkLiAgVGhlIHJlYXNvbiBpcyB0aGF0IGV2ZW4gYW4KLStlbXVsYXRpb24gb2YgYGdldHRleHQnIG9uIHRvcCBvZiBgY2F0Z2V0cycgY291bGQgbm90IHByb3ZpZGUgYWxsIHRoZQotK2V4dGVuc2lvbnMgb2YgdGhlIEdOVSBgZ2V0dGV4dCcgbGlicmFyeS4KLSAKLSAgICBJbnRlcm5hdGlvbmFsaXplZCBwYWNrYWdlcyBoYXZlIHVzdWFsbHkgbWFueSBgcG8vTEwucG8nIGZpbGVzLCB3aGVyZQotIExMIGdpdmVzIGFuIElTTyA2MzkgdHdvLWxldHRlciBjb2RlIGlkZW50aWZ5aW5nIHRoZSBsYW5ndWFnZS4gIFVubGVzcwotQEAgLTEwOCw1NyArOTgsNzMgQEAKLSBVc2luZyBUaGlzIFBhY2thZ2UKLSA9PT09PT09PT09PT09PT09PT0KLSAKLS0gICBBcyBhIHVzZXIsIGlmIHlvdXIgbGFuZ3VhZ2UgaGFzIGJlZW4gaW5zdGFsbGVkIGZvciB0aGlzIHBhY2thZ2UsIHlvdQotK0FzIGEgdXNlciwgaWYgeW91ciBsYW5ndWFnZSBoYXMgYmVlbiBpbnN0YWxsZWQgZm9yIHRoaXMgcGFja2FnZSwgeW91Ci0gb25seSBoYXZlIHRvIHNldCB0aGUgYExBTkcnIGVudmlyb25tZW50IHZhcmlhYmxlIHRvIHRoZSBhcHByb3ByaWF0ZQotLUlTTyA2MzkgYExMJyB0d28tbGV0dGVyIGNvZGUgcHJpb3IgdG8gdXNpbmcgdGhlIHByb2dyYW1zIGluIHRoZQotLXBhY2thZ2UuICBGb3IgZXhhbXBsZSwgbGV0J3Mgc3VwcG9zZSB0aGF0IHlvdSBzcGVhayBHZXJtYW4uICBBdCB0aGUKLS1zaGVsbCBwcm9tcHQsIG1lcmVseSBleGVjdXRlIGBzZXRlbnYgTEFORyBkZScgKGluIGBjc2gnKSwKLS1gZXhwb3J0IExBTkc7IExBTkc9ZGUnIChpbiBgc2gnKSBvciBgZXhwb3J0IExBTkc9ZGUnIChpbiBgYmFzaCcpLiAgVGhpcwotLWNhbiBiZSBkb25lIGZyb20geW91ciBgLmxvZ2luJyBvciBgLnByb2ZpbGUnIGZpbGUsIG9uY2UgYW5kIGZvciBhbGwuCi0rYExMX0NDJyBjb21iaW5hdGlvbi4gIEhlcmUgYExMJyBpcyBhbiBJU08gNjM5IHR3by1sZXR0ZXIgbGFuZ3VhZ2UgY29kZSwKLSthbmQgYENDJyBpcyBhbiBJU08gMzE2NiB0d28tbGV0dGVyIGNvdW50cnkgY29kZS4gIEZvciBleGFtcGxlLCBsZXQncwotK3N1cHBvc2UgdGhhdCB5b3Ugc3BlYWsgR2VybWFuIGFuZCBsaXZlIGluIEdlcm1hbnkuICBBdCB0aGUgc2hlbGwKLStwcm9tcHQsIG1lcmVseSBleGVjdXRlIGBzZXRlbnYgTEFORyBkZV9ERScgKGluIGBjc2gnKSwKLStgZXhwb3J0IExBTkc7IExBTkc9ZGVfREUnIChpbiBgc2gnKSBvciBgZXhwb3J0IExBTkc9ZGVfREUnIChpbiBgYmFzaCcpLgotK1RoaXMgY2FuIGJlIGRvbmUgZnJvbSB5b3VyIGAubG9naW4nIG9yIGAucHJvZmlsZScgZmlsZSwgb25jZSBhbmQgZm9yCi0rYWxsLgotIAotLSAgIEFuIG9wZXJhdGluZyBzeXN0ZW0gbWlnaHQgYWxyZWFkeSBvZmZlciBtZXNzYWdlIGxvY2FsaXphdGlvbiBmb3IKLS1tYW55IG9mIGl0cyBwcm9ncmFtcywgd2hpbGUgb3RoZXIgcHJvZ3JhbXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBsb2NhbGx5Ci0td2l0aCB0aGUgZnVsbCBjYXBhYmlsaXRpZXMgb2YgR05VIGBnZXR0ZXh0Jy4gIEp1c3QgdXNpbmcgYGdldHRleHQnCi0tZXh0ZW5kZWQgc3ludGF4IGZvciBgTEFORycgd291bGQgYnJlYWsgcHJvcGVyIGxvY2FsaXphdGlvbiBvZiBhbHJlYWR5Ci0tYXZhaWxhYmxlIG9wZXJhdGluZyBzeXN0ZW0gcHJvZ3JhbXMuICBJbiB0aGlzIGNhc2UsIHVzZXJzIHNob3VsZCBzZXQKLS1ib3RoIGBMQU5HVUFHRScgYW5kIGBMQU5HJyB2YXJpYWJsZXMgaW4gdGhlaXIgZW52aXJvbm1lbnQsIGFzIHByb2dyYW1zCi0tdXNpbmcgR05VIGBnZXR0ZXh0JyBnaXZlIHByZWZlcmVuY2UgdG8gYExBTkdVQUdFJy4gIEZvciBleGFtcGxlLCBzb21lCi0tU3dlZGlzaCB1c2VycyB3b3VsZCByYXRoZXIgcmVhZCB0cmFuc2xhdGlvbnMgaW4gR2VybWFuIHRoYW4gRW5nbGlzaCBmb3IKLS13aGVuIFN3ZWRpc2ggaXMgbm90IGF2YWlsYWJsZS4gIFRoaXMgaXMgZWFzaWx5IGFjY29tcGxpc2hlZCBieSBzZXR0aW5nCi0tYExBTkdVQUdFJyB0byBgc3Y6ZGUnIHdoaWxlIGxlYXZpbmcgYExBTkcnIHRvIGBzdicuCi0rICAgWW91IG1pZ2h0IHRoaW5rIHRoYXQgdGhlIGNvdW50cnkgY29kZSBzcGVjaWZpY2F0aW9uIGlzIHJlZHVuZGFudC4KLStCdXQgaW4gZmFjdCwgc29tZSBsYW5ndWFnZXMgaGF2ZSBkaWFsZWN0cyBpbiBkaWZmZXJlbnQgY291bnRyaWVzLiAgRm9yCi0rZXhhbXBsZSwgYGRlX0FUJyBpcyB1c2VkIGZvciBBdXN0cmlhLCBhbmQgYHB0X0JSJyBmb3IgQnJhemlsLiAgVGhlCi0rY291bnRyeSBjb2RlIHNlcnZlcyB0byBkaXN0aW5ndWlzaCB0aGUgZGlhbGVjdHMuCi0rCi0rICAgVGhlIGxvY2FsZSBuYW1pbmcgY29udmVudGlvbiBvZiBgTExfQ0MnLCB3aXRoIGBMTCcgZGVub3RpbmcgdGhlCi0rbGFuZ3VhZ2UgYW5kIGBDQycgZGVub3RpbmcgdGhlIGNvdW50cnksIGlzIHRoZSBvbmUgdXNlIG9uIHN5c3RlbXMgYmFzZWQKLStvbiBHTlUgbGliYy4gIE9uIG90aGVyIHN5c3RlbXMsIHNvbWUgdmFyaWF0aW9ucyBvZiB0aGlzIHNjaGVtZSBhcmUKLSt1c2VkLCBzdWNoIGFzIGBMTCcgb3IgYExMX0NDLkVOQ09ESU5HJy4gIFlvdSBjYW4gZ2V0IHRoZSBsaXN0IG9mCi0rbG9jYWxlcyBzdXBwb3J0ZWQgYnkgeW91ciBzeXN0ZW0gZm9yIHlvdXIgY291bnRyeSBieSBydW5uaW5nIHRoZSBjb21tYW5kCi0rYGxvY2FsZSAtYSB8IGdyZXAgJ15MTCcnLgotKwotKyAgIE5vdCBhbGwgcHJvZ3JhbXMgaGF2ZSB0cmFuc2xhdGlvbnMgZm9yIGFsbCBsYW5ndWFnZXMuICBCeSBkZWZhdWx0LCBhbgotK0VuZ2xpc2ggbWVzc2FnZSBpcyBzaG93biBpbiBwbGFjZSBvZiBhIG5vbmV4aXN0ZW50IHRyYW5zbGF0aW9uLiAgSWYgeW91Ci0rdW5kZXJzdGFuZCBvdGhlciBsYW5ndWFnZXMsIHlvdSBjYW4gc2V0IHVwIGEgcHJpb3JpdHkgbGlzdCBvZiBsYW5ndWFnZXMuCi0rVGhpcyBpcyBkb25lIHRocm91Z2ggYSBkaWZmZXJlbnQgZW52aXJvbm1lbnQgdmFyaWFibGUsIGNhbGxlZAotK2BMQU5HVUFHRScuICBHTlUgYGdldHRleHQnIGdpdmVzIHByZWZlcmVuY2UgdG8gYExBTkdVQUdFJyBvdmVyIGBMQU5HJwotK2ZvciB0aGUgcHVycG9zZSBvZiBtZXNzYWdlIGhhbmRsaW5nLCBidXQgeW91IHN0aWxsIG5lZWQgdG8gaGF2ZSBgTEFORycKLStzZXQgdG8gdGhlIHByaW1hcnkgbGFuZ3VhZ2U7IHRoaXMgaXMgcmVxdWlyZWQgYnkgb3RoZXIgcGFydHMgb2YgdGhlCi0rc3lzdGVtIGxpYnJhcmllcy4gIEZvciBleGFtcGxlLCBzb21lIFN3ZWRpc2ggdXNlcnMgd2hvIHdvdWxkIHJhdGhlcgotK3JlYWQgdHJhbnNsYXRpb25zIGluIEdlcm1hbiB0aGFuIEVuZ2xpc2ggZm9yIHdoZW4gU3dlZGlzaCBpcyBub3QKLSthdmFpbGFibGUsIHNldCBgTEFOR1VBR0UnIHRvIGBzdjpkZScgd2hpbGUgbGVhdmluZyBgTEFORycgdG8gYHN2X1NFJy4KLSsKLSsgICBTcGVjaWFsIGFkdmljZSBmb3IgTm9yd2VnaWFuIHVzZXJzOiBUaGUgbGFuZ3VhZ2UgY29kZSBmb3IgTm9yd2VnaWFuCi0rYm9rbWEqbCBjaGFuZ2VkIGZyb20gYG5vJyB0byBgbmInIHJlY2VudGx5IChpbiAyMDAzKS4gIER1cmluZyB0aGUKLSt0cmFuc2l0aW9uIHBlcmlvZCwgd2hpbGUgc29tZSBtZXNzYWdlIGNhdGFsb2dzIGZvciB0aGlzIGxhbmd1YWdlIGFyZQotK2luc3RhbGxlZCB1bmRlciBgbmInIGFuZCBzb21lIG9sZGVyIG9uZXMgdW5kZXIgYG5vJywgaXQncyByZWNvbW1lbmRlZAotK2ZvciBOb3J3ZWdpYW4gdXNlcnMgdG8gc2V0IGBMQU5HVUFHRScgdG8gYG5iOm5vJyBzbyB0aGF0IGJvdGggbmV3ZXIgYW5kCi0rb2xkZXIgdHJhbnNsYXRpb25zIGFyZSB1c2VkLgotKwotKyAgIEluIHRoZSBgTEFOR1VBR0UnIGVudmlyb25tZW50IHZhcmlhYmxlLCBidXQgbm90IGluIHRoZSBgTEFORycKLStlbnZpcm9ubWVudCB2YXJpYWJsZSwgYExMX0NDJyBjb21iaW5hdGlvbnMgY2FuIGJlIGFiYnJldmlhdGVkIGFzIGBMTCcKLSt0byBkZW5vdGUgdGhlIGxhbmd1YWdlJ3MgbWFpbiBkaWFsZWN0LiAgRm9yIGV4YW1wbGUsIGBkZScgaXMgZXF1aXZhbGVudAotK3RvIGBkZV9ERScgKEdlcm1hbiBhcyBzcG9rZW4gaW4gR2VybWFueSksIGFuZCBgcHQnIHRvIGBwdF9QVCcKLSsoUG9ydHVndWVzZSBhcyBzcG9rZW4gaW4gUG9ydHVnYWwpIGluIHRoaXMgY29udGV4dC4KLSAKLSBUcmFuc2xhdGluZyBUZWFtcwotID09PT09PT09PT09PT09PT09Ci0gCi0tICAgRm9yIHRoZSBGcmVlIFRyYW5zbGF0aW9uIFByb2plY3QgdG8gYmUgYSBzdWNjZXNzLCB3ZSBuZWVkIGludGVyZXN0ZWQKLStGb3IgdGhlIEZyZWUgVHJhbnNsYXRpb24gUHJvamVjdCB0byBiZSBhIHN1Y2Nlc3MsIHdlIG5lZWQgaW50ZXJlc3RlZAotIHBlb3BsZSB3aG8gbGlrZSB0aGVpciBvd24gbGFuZ3VhZ2UgYW5kIHdyaXRlIGl0IHdlbGwsIGFuZCB3aG8gYXJlIGFsc28KLSBhYmxlIHRvIHN5bmVyZ2l6ZSB3aXRoIG90aGVyIHRyYW5zbGF0b3JzIHNwZWFraW5nIHRoZSBzYW1lIGxhbmd1YWdlLgotLUVhY2ggdHJhbnNsYXRpb24gdGVhbSBoYXMgaXRzIG93biBtYWlsaW5nIGxpc3QsIGNvdXJ0ZXN5IG9mIExpbnV4Ci0tSW50ZXJuYXRpb25hbC4gIFlvdSBtYXkgcmVhY2ggeW91ciB0cmFuc2xhdGlvbiB0ZWFtIGF0IHRoZSBhZGRyZXNzCi0tYExMQGxpLm9yZycsIHJlcGxhY2luZyBMTCBieSB0aGUgdHdvLWxldHRlciBJU08gNjM5IGNvZGUgZm9yIHlvdXIKLS1sYW5ndWFnZS4gIExhbmd1YWdlIGNvZGVzIGFyZSAqbm90KiB0aGUgc2FtZSBhcyB0aGUgY291bnRyeSBjb2RlcyBnaXZlbgotLWluIElTTyAzMTY2LiAgVGhlIGZvbGxvd2luZyB0cmFuc2xhdGlvbiB0ZWFtcyBleGlzdCwgYXMgb2YgQXVndXN0IDE5OTc6Ci0tCi0tICAgICBDaGluZXNlIGB6aCcsIEN6ZWNoIGBjcycsIERhbmlzaCBgZGEnLCBEdXRjaCBgbmwnLCBFbmdsaXNoIGBlbicsCi0tICAgICBFc3BlcmFudG8gYGVvJywgRmlubmlzaCBgZmknLCBGcmVuY2ggYGZyJywgR2VybWFuIGBkZScsIEh1bmdhcmlhbgotLSAgICAgYGh1JywgSXJpc2ggYGdhJywgSXRhbGlhbiBgaXQnLCBJbmRvbmVzaWFuIGBpZCcsIEphcGFuZXNlIGBqYScsCi0tICAgICBLb3JlYW4gYGtvJywgTGF0aW4gYGxhJywgTm9yd2VnaWFuIGBubycsIFBlcnNpYW4gYGZhJywgUG9saXNoCi0tICAgICBgcGwnLCBQb3J0dWd1ZXNlIGBwdCcsIFJ1c3NpYW4gYHJ1JywgU2xvdmVuaWFuIGBzbCcsIFNwYW5pc2ggYGVzJywKLS0gICAgIFN3ZWRpc2ggYHN2JywgYW5kIFR1cmtpc2ggYHRyJy4KLS0KLS1Gb3IgZXhhbXBsZSwgeW91IG1heSByZWFjaCB0aGUgQ2hpbmVzZSB0cmFuc2xhdGlvbiB0ZWFtIGJ5IHdyaXRpbmcgdG8KLS1gemhAbGkub3JnJy4KLStFYWNoIHRyYW5zbGF0aW9uIHRlYW0gaGFzIGl0cyBvd24gbWFpbGluZyBsaXN0LiAgVGhlIHVwLXRvLWRhdGUgbGlzdCBvZgotK3RlYW1zIGNhbiBiZSBmb3VuZCBhdCB0aGUgRnJlZSBUcmFuc2xhdGlvbiBQcm9qZWN0J3MgaG9tZXBhZ2UsCi0rYGh0dHA6Ly93d3cuaXJvLnVtb250cmVhbC5jYS9jb250cmliL3BvL0hUTUwvJywgaW4gdGhlICJOYXRpb25hbCB0ZWFtcyIKLSthcmVhLgotIAotLSAgIElmIHlvdSdkIGxpa2UgdG8gdm9sdW50ZWVyIHRvICp3b3JrKiBhdCB0cmFuc2xhdGluZyBtZXNzYWdlcywgeW91Ci0rICAgSWYgeW91J2QgbGlrZSB0byB2b2x1bnRlZXIgdG8gX3dvcmtfIGF0IHRyYW5zbGF0aW5nIG1lc3NhZ2VzLCB5b3UKLSBzaG91bGQgYmVjb21lIGEgbWVtYmVyIG9mIHRoZSB0cmFuc2xhdGluZyB0ZWFtIGZvciB5b3VyIG93biBsYW5ndWFnZS4KLS1UaGUgc3Vic2NyaWJpbmcgYWRkcmVzcyBpcyAqbm90KiB0aGUgc2FtZSBhcyB0aGUgbGlzdCBpdHNlbGYsIGl0IGhhcwotK1RoZSBzdWJzY3JpYmluZyBhZGRyZXNzIGlzIF9ub3RfIHRoZSBzYW1lIGFzIHRoZSBsaXN0IGl0c2VsZiwgaXQgaGFzCi0gYC1yZXF1ZXN0JyBhcHBlbmRlZC4gIEZvciBleGFtcGxlLCBzcGVha2VycyBvZiBTd2VkaXNoIGNhbiBzZW5kIGEKLSBtZXNzYWdlIHRvIGBzdi1yZXF1ZXN0QGxpLm9yZycsIGhhdmluZyB0aGlzIG1lc3NhZ2UgYm9keToKLSAKLSAgICAgIHN1YnNjcmliZQotIAotICAgIEtlZXAgaW4gbWluZCB0aGF0IHRlYW0gbWVtYmVycyBhcmUgZXhwZWN0ZWQgdG8gcGFydGljaXBhdGUKLS0qYWN0aXZlbHkqIGluIHRyYW5zbGF0aW9ucywgb3IgYXQgc29sdmluZyB0cmFuc2xhdGlvbmFsIGRpZmZpY3VsdGllcywKLStfYWN0aXZlbHlfIGluIHRyYW5zbGF0aW9ucywgb3IgYXQgc29sdmluZyB0cmFuc2xhdGlvbmFsIGRpZmZpY3VsdGllcywKLSByYXRoZXIgdGhhbiBtZXJlbHkgbHVya2luZyBhcm91bmQuICBJZiB5b3VyIHRlYW0gZG9lcyBub3QgZXhpc3QgeWV0IGFuZAotIHlvdSB3YW50IHRvIHN0YXJ0IG9uZSwgb3IgaWYgeW91IGFyZSB1bnN1cmUgYWJvdXQgd2hhdCB0byBkbyBvciBob3cgdG8KLSBnZXQgc3RhcnRlZCwgcGxlYXNlIHdyaXRlIHRvIGB0cmFuc2xhdGlvbkBpcm8udW1vbnRyZWFsLmNhJyB0byByZWFjaCB0aGUKLUBAIC0xNzEsNDMgKzE3Nyw1NTkgQEAKLSBBdmFpbGFibGUgUGFja2FnZXMKLSA9PT09PT09PT09PT09PT09PT0KLSAKLS0gICBMYW5ndWFnZXMgYXJlIG5vdCBlcXVhbGx5IHN1cHBvcnRlZCBpbiBhbGwgcGFja2FnZXMuICBUaGUgZm9sbG93aW5nCi0tbWF0cml4IHNob3dzIHRoZSBjdXJyZW50IHN0YXRlIG9mIGludGVybmF0aW9uYWxpemF0aW9uLCBhcyBvZiBBdWd1c3QKLS0xOTk3LiAgVGhlIG1hdHJpeCBzaG93cywgaW4gcmVnYXJkIG9mIGVhY2ggcGFja2FnZSwgZm9yIHdoaWNoIGxhbmd1YWdlcwotLVBPIGZpbGVzIGhhdmUgYmVlbiBzdWJtaXR0ZWQgdG8gdHJhbnNsYXRpb24gY29vcmRpbmF0aW9uLgotK0xhbmd1YWdlcyBhcmUgbm90IGVxdWFsbHkgc3VwcG9ydGVkIGluIGFsbCBwYWNrYWdlcy4gIFRoZSBmb2xsb3dpbmcKLSttYXRyaXggc2hvd3MgdGhlIGN1cnJlbnQgc3RhdGUgb2YgaW50ZXJuYXRpb25hbGl6YXRpb24sIGFzIG9mIEphbnVhcnkKLSsyMDA0LiAgVGhlIG1hdHJpeCBzaG93cywgaW4gcmVnYXJkIG9mIGVhY2ggcGFja2FnZSwgZm9yIHdoaWNoIGxhbmd1YWdlcwotK1BPIGZpbGVzIGhhdmUgYmVlbiBzdWJtaXR0ZWQgdG8gdHJhbnNsYXRpb24gY29vcmRpbmF0aW9uLCB3aXRoIGEKLSt0cmFuc2xhdGlvbiBwZXJjZW50YWdlIG9mIGF0IGxlYXN0IDUwJS4KLSAKLS0gICAgIFJlYWR5IFBPIGZpbGVzICAgIGNzIGRhIGRlIGVuIGVzIGZpIGZyIGl0IGphIGtvIG5sIG5vIHBsIHB0IHNsIHN2Ci0tICAgICAgICAgICAgICAgICAgICAgLi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0tICAgICBiYXNoICAgICAgICAgICAgfCAgICAgICBbXSAgICAgICAgICBbXSAgICAgICAgICBbXSAgICAgICAgICAgICAgICB8ICAzCi0tICAgICBiaXNvbiAgICAgICAgICAgfCAgICAgICBbXSAgICAgICAgICBbXSAgICAgICAgICBbXSAgICAgICAgICAgICAgICB8ICAzCi0tICAgICBjbGlzcCAgICAgICAgICAgfCAgICAgICBbXSBbXSBbXSAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0Ci0tICAgICBjcGlvICAgICAgICAgICAgfCAgICAgICBbXSAgICBbXSAgICBbXSAgICAgICAgICBbXSAgICBbXSAgICAgICAgICB8ICA1Ci0tICAgICBkaWZmdXRpbHMgICAgICAgfCAgICAgICBbXSAgICBbXSAgICBbXSAgICAgICAgICAgICAgICBbXSAgICAgICBbXSB8ICA1Ci0tICAgICBlbnNjcmlwdCAgICAgICAgfCAgICAgICBbXSAgICBbXSBbXSBbXSAgICAgICAgICBbXSAgICAgICAgICBbXSAgICB8ICA2Ci0tICAgICBmaWxldXRpbHMgICAgICAgfCBbXSAgICBbXSAgICBbXSAgICBbXSAgICAgICBbXSBbXSAgICBbXSBbXSBbXSBbXSB8IDEwCi0tICAgICBmaW5kdXRpbHMgICAgICAgfCAgICAgICBbXSAgICBbXSAgICBbXSBbXSAgICBbXSBbXSAgICBbXSAgICAgICBbXSB8ICA4Ci0tICAgICBmbGV4ICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICBbXSB8ICA0Ci0tICAgICBnY2FsICAgICAgICAgICAgfCAgICAgICBbXSAgICAgICAgICBbXSAgICAgICAgICBbXSAgICBbXSAgICAgICBbXSB8ICA1Ci0tICAgICBnZXR0ZXh0ICAgICAgICAgfCAgICAgICBbXSAgICBbXSAgICBbXSAgICAgICBbXSBbXSBbXSBbXSBbXSBbXSBbXSB8IDExCi0tICAgICBncmVwICAgICAgICAgICAgfCAgICAgICBbXSAgICBbXSAgICBbXSAgICAgICBbXSBbXSBbXSBbXSAgICBbXSBbXSB8ICA5Ci0tICAgICBoZWxsbyAgICAgICAgICAgfCAgICAgICBbXSAgICBbXSAgICBbXSAgICAgICBbXSBbXSBbXSBbXSBbXSBbXSBbXSB8IDEwCi0tICAgICBpZC11dGlscyAgICAgICAgfCAgICAgICBbXSAgICAgICAgICBbXSAgICAgICAgICAgICAgICBbXSAgICAgICAgICB8ICAzCi0tICAgICBpbmRlbnQgICAgICAgICAgfCAgICBbXSBbXSAgICAgICAgICAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICB8ICA0Ci0tICAgICBsaWJjICAgICAgICAgICAgfCAgICAgICBbXSAgICBbXSAgICBbXSAgICAgICBbXSBbXSAgICBbXSAgICAgICBbXSB8ICA3Ci0tICAgICBtNCAgICAgICAgICAgICAgfCAgICAgICBbXSAgICAgICAgICBbXSAgICBbXSAgICBbXSAgICAgICAgICAgICBbXSB8ICA1Ci0tICAgICBtYWtlICAgICAgICAgICAgfCAgICAgICBbXSAgICBbXSAgICBbXSAgICAgICBbXSBbXSAgICBbXSAgICAgICAgICB8ICA2Ci0tICAgICBtdXNpYyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICBbXSAgICAgICAgICB8ICAyCi0tICAgICBwdHggICAgICAgICAgICAgfCAgICAgICBbXSAgICBbXSAgICBbXSAgICAgICAgICBbXSBbXSBbXSBbXSAgICBbXSB8ICA4Ci0tICAgICByZWNvZGUgICAgICAgICAgfCAgICBbXSBbXSAgICBbXSAgICBbXSAgICAgICAgICBbXSAgICBbXSBbXSBbXSBbXSB8ICA5Ci0tICAgICBzaC11dGlscyAgICAgICAgfCAgICAgICBbXSAgICAgICAgICBbXSAgICAgICAgICBbXSBbXSBbXSBbXSAgICBbXSB8ICA3Ci0tICAgICBzaGFydXRpbHMgICAgICAgfCAgICAgICBbXSAgICBbXSAgICBbXSAgICAgICAgICBbXSAgICAgICAgICAgICBbXSB8ICA1Ci0tICAgICB0YXIgICAgICAgICAgICAgfCAgICAgICBbXSAgICAgICAgICBbXSBbXSAgICBbXSBbXSBbXSBbXSBbXSBbXSBbXSB8IDEwCi0tICAgICB0ZXhpbmZvICAgICAgICAgfCAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxCi0tICAgICB0ZXh0dXRpbHMgICAgICAgfCBbXSAgICBbXSAgICBbXSAgICBbXSAgICAgICBbXSBbXSBbXSBbXSAgICAgICBbXSB8ICA5Ci0tICAgICB3ZGlmZiAgICAgICAgICAgfCBbXSAgICBbXSAgICBbXSAgICBbXSAgICAgICAgICBbXSBbXSBbXSAgICAgICBbXSB8ICA4Ci0tICAgICAgICAgICAgICAgICAgICAgYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0nCi0tICAgICAgIDE2IGxhbmd1YWdlcyAgICBjcyBkYSBkZSBlbiBlcyBmaSBmciBpdCBqYSBrbyBubCBubyBwbCBwdCBzbCBzdgotLSAgICAgICAyNyBwYWNrYWdlcyAgICAgIDMgIDIgMjQgIDEgMTcgIDEgMjYgIDIgIDEgMTEgMjAgIDkgMTkgIDcgIDcgMTcgIDE2NwotKyAgICAgUmVhZHkgUE8gZmlsZXMgICAgICAgYWYgYW0gYXIgYXogYmUgYmcgYnMgY2EgY3MgZGEgZGUgZWwgZW4gZW5fR0IgZW8gZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSsgICAgIGEycHMgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgIFtdIFtdIFtdICAgICAgICAgICAgICAgIHwKLSsgICAgIGFlZ2lzICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGFudC1waG9uZSAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGFudWJpcyAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGFwLXV0aWxzICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGFzcGVsbCAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGJhc2ggICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGJhdGNoZWxvciAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGJmZCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGJpbnV0aWxzICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGJpc29uICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGJsdWV6LXBpbiAgICAgICAgICB8IFtdICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIGNsaXNwICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGNsaXNwICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgIFtdIHwKLSsgICAgIGNvbnNvbGUtdG9vbHMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGNvcmV1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGNwaW8gICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGRhcmtzdGF0ICAgICAgICAgICB8ICAgICAgICAgICAgICAgIFtdICAgICAgICAgICgpICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGRpZmZ1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIFtdIFtdIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGUyZnNwcm9ncyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGVuc2NyaXB0ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdIFtdICAgICAgICBbXSAgICAgICAgIHwKLSsgICAgIGVycm9yICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdIFtdICAgICAgICBbXSAgICAgIFtdIHwKLSsgICAgIGZldGNobWFpbCAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICgpIFtdIFtdIFtdICAgICAgICAgICAgIFtdIHwKLSsgICAgIGZpbGV1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGZpbmR1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgIFtdICAgIFtdIFtdIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGZsZXggICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGZzbGludCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdhcyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGdhd2sgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGdiaWZmICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdjYWwgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdjYyAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGdldHRleHQgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgIFtdICAgIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGdldHRleHQtZXhhbXBsZXMgICB8IFtdICAgICAgICAgICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGdldHRleHQtcnVudGltZSAgICB8ICAgICAgICAgICAgIFtdICAgICAgIFtdICAgIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGdldHRleHQtdG9vbHMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGdpbXAtcHJpbnQgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIFtdICAgICAgICBbXSAgICAgIFtdIHwKLSsgICAgIGdsaXYgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdsdW5hcmNsb2NrICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdudWJpZmYgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdudWNhc2ggICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICgpICAgICAgICBbXSAgICAgIFtdIHwKLSsgICAgIGdudWNhc2gtZ2xvc3NhcnkgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICgpICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGdudXBnICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICgpICAgIFtdIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS1hZXJpYWwgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1iZWFtICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1jYWxlbmRhciAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1jbG9jayAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1jb25mICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1jb250YWN0cyAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1lZGl0ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1nbyAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1sb2dpbiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1vd25lcmluZm8gICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1za2V0Y2hib29rICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS1zdSAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS10YXNrbWFuYWdlciAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS10aW1lc2hlZXQgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS10b2RheSAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwZS10b2RvICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdwaG90bzIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGdwcm9mICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGdwc2RyaXZlICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpICAgICgpICAgICAgICAgICgpIHwKLSsgICAgIGdyYW1hZG9pciAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdyZXAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdIFtdICAgIFtdICAgICAgIFtdIFtdICAgICAgICAgICAgIFtdIHwKLSsgICAgIGdyZXRsICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGd0aWNrICAgICAgICAgICAgICB8IFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGhlbGxvICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdIFtdIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGlkLXV0aWxzICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGluZGVudCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGlzb18zMTY2ICAgICAgICAgICB8ICAgICAgICAgIFtdICAgIFtdIFtdIFtdIFtdIFtdIFtdIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGlzb18zMTY2XzEgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIFtdIFtdIFtdICAgICAgICAgICAgIFtdIHwKLSsgICAgIGlzb18zMTY2XzIgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGlzb18zMTY2XzMgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGlzb180MjE3ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGlzb182MzkgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGpwaWxvdCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGp0YWcgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGp3aG9pcyAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGtiZCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIFtdIFtdICAgICAgICAgICAgIFtdIHwKLSsgICAgIGxhdHJpbmUgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGxkICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIGxpYmMgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIFtdIFtdIFtdICAgICAgICAgICAgIFtdIHwKLSsgICAgIGxpYmdwZXdpZGdldCAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGxpYmljb252ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdIFtdICAgICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGxpZmVsaW5lcyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICgpICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGxpbHlwb25kICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGxpbmdvdGVhY2ggICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGxpbmdvdGVhY2hfbGVzc29ucyB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpICAgICAgICAgICAgICAgICgpIHwKLSsgICAgIGx5bnggICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIFtdIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIG00ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIFtdIFtdICAgICAgICAgICAgICAgIHwKLSsgICAgIG1haWx1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIG1ha2UgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIG1hbi1kYiAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICgpIFtdIFtdICAgICAgICAgICAgICAgICgpIHwKLSsgICAgIG1pbmljb20gICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIG15c2VjcmV0ZGlhcnkgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIG5hbm8gICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICgpIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIG5hbm9fMV8wICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICgpIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIG9wY29kZXMgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHBhcnRlZCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHB0eCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdIFtdICAgICAgICAgICAgIFtdIFtdIHwKLSsgICAgIHB5dGhvbiAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHJhZGl1cyAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHJlY29kZSAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgIFtdICAgIFtdIFtdIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIHJwbSAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHNjcmVlbSAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHNjcm9sbGtlZXBlciAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHNlZCAgICAgICAgICAgICAgICB8IFtdICAgICAgICAgICAgICAgICAgIFtdICAgIFtdIFtdICAgICAgICAgICAgIFtdIFtdIHwKLSsgICAgIHNoLXV0aWxzICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHNoYXJlZC1taW1lLWluZm8gICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHNoYXJ1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIFtdIFtdIFtdICAgICAgICAgICAgIFtdIHwKLSsgICAgIHNpbGt5ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHNrZW5jaWwgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICgpICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHNrZXRjaCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICgpICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHNvdW5kdHJhY2tlciAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHNwICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHRhciAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHRleGluZm8gICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIHRleHR1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHRpbiAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpICAgICAgICAoKSAgICAgICAgIHwKLSsgICAgIHRwLXJvYm90ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHR1eHBhaW50ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIFtdIFtdIFtdICAgICBbXSAgICAgIFtdIHwKLSsgICAgIHVuaWNvZGUtaGFuLXRyYS4uLiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHVuaWNvZGUtdHJhbnNsYS4uLiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHV0aWwtbGludXggICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHZvcmJpcy10b29scyAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHdhc3Rlc2VkZ2UgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHdkaWZmICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgIFtdIFtdICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHdnZXQgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgIFtdICAgIFtdICAgIFtdIFtdIFtdICAgICAgICAgICAgIFtdIHwKLSsgICAgIHhjaGF0ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdICAgICAgICAgICAgIFtdIHwKLSsgICAgIHhmcmVlODZfeGtiX3htbCAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHhwYWQgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGFmIGFtIGFyIGF6IGJlIGJnIGJzIGNhIGNzIGRhIGRlIGVsIGVuIGVuX0dCIGVvIGVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgNCAgMCAgMCAgMSAgOSAgNCAgMSA0MCA0MSA2MCA3OCAxNyAgMSAgIDUgICAxMyA2OAotKyAgICAgCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBldCBldSBmYSBmaSBmciBnYSBnbCBoZSBociBodSBpZCBpcyBpdCBqYSBrbyBsZwotKyAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotKyAgICAgYTJwcyAgICAgICAgICAgICAgIHwgW10gICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgKCkgICAgKCkgICAgfAotKyAgICAgYWVnaXMgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYW50LXBob25lICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYW51YmlzICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYXAtdXRpbHMgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYXNwZWxsICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYmFzaCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgYmF0Y2hlbG9yICAgICAgICAgIHwgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYmZkICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgYmludXRpbHMgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgfAotKyAgICAgYmlzb24gICAgICAgICAgICAgIHwgW10gICAgICAgICAgW10gICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgfAotKyAgICAgYmx1ZXotcGluICAgICAgICAgIHwgICAgICAgICAgW10gW10gW10gICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgfAotKyAgICAgY2xpc3AgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgY2xpc3AgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgY29uc29sZS10b29scyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgY29yZXV0aWxzICAgICAgICAgIHwgW10gICAgICAgW10gW10gW10gICAgICAgICAgICAgICAgICAgW10gW10gICAgICAgfAotKyAgICAgY3BpbyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgW10gICAgICAgW10gICAgICAgICAgICAgW10gICAgfAotKyAgICAgZGFya3N0YXQgICAgICAgICAgIHwgICAgICAgICAgICAgKCkgW10gICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgfAotKyAgICAgZGlmZnV0aWxzICAgICAgICAgIHwgICAgICAgICAgW10gW10gICAgW10gW10gICAgW10gW10gICAgICAgW10gICAgICAgfAotKyAgICAgZTJmc3Byb2dzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZW5zY3JpcHQgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZXJyb3IgICAgICAgICAgICAgIHwgICAgICAgICAgW10gW10gW10gICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZmV0Y2htYWlsICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgfAotKyAgICAgZmlsZXV0aWxzICAgICAgICAgIHwgW10gICAgICAgICAgW10gW10gICAgICAgICAgW10gICAgICAgW10gW10gICAgICAgfAotKyAgICAgZmluZHV0aWxzICAgICAgICAgIHwgW10gICAgICAgW10gW10gW10gW10gICAgW10gW10gW10gICAgW10gW10gW10gICAgfAotKyAgICAgZmxleCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgZnNsaW50ICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ2FzICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ2F3ayAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgW10gICAgICAgfAotKyAgICAgZ2JpZmYgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ2NhbCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ2NjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ2V0dGV4dCAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgfAotKyAgICAgZ2V0dGV4dC1leGFtcGxlcyAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgfAotKyAgICAgZ2V0dGV4dC1ydW50aW1lICAgIHwgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgW10gICAgICAgW10gW10gICAgfAotKyAgICAgZ2V0dGV4dC10b29scyAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gICAgfAotKyAgICAgZ2ltcC1wcmludCAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgfAotKyAgICAgZ2xpdiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ2x1bmFyY2xvY2sgICAgICAgIHwgICAgICAgICAgW10gICAgW10gW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ251YmlmZiAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ251Y2FzaCAgICAgICAgICAgIHwgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgfAotKyAgICAgZ251Y2FzaC1nbG9zc2FyeSAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgfAotKyAgICAgZ251cGcgICAgICAgICAgICAgIHwgW10gICAgICAgW10gW10gICAgW10gICAgICAgICAgW10gICAgW10gW10gICAgICAgfAotKyAgICAgZ3BlLWFlcmlhbCAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWJlYW0gICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWNhbGVuZGFyICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWNsb2NrICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWNvbmYgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWNvbnRhY3RzICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWVkaXQgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWdvICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLWxvZ2luICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLW93bmVyaW5mbyAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLXNrZXRjaGJvb2sgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLXN1ICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLXRhc2ttYW5hZ2VyICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLXRpbWVzaGVldCAgICAgIHwgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLXRvZGF5ICAgICAgICAgIHwgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3BlLXRvZG8gICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgfAotKyAgICAgZ3Bob3RvMiAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgW10gICAgICAgICAgW10gICAgICAgfAotKyAgICAgZ3Byb2YgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgfAotKyAgICAgZ3BzZHJpdmUgICAgICAgICAgIHwgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgICAgKCkgKCkgICAgICAgfAotKyAgICAgZ3JhbWFkb2lyICAgICAgICAgIHwgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ3JlcCAgICAgICAgICAgICAgIHwgW10gICAgICAgW10gW10gW10gW10gW10gW10gW10gW10gICAgW10gW10gICAgICAgfAotKyAgICAgZ3JldGwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgfAotKyAgICAgZ3RpY2sgICAgICAgICAgICAgIHwgICAgICAgICAgW10gW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgaGVsbG8gICAgICAgICAgICAgIHwgW10gICAgW10gW10gW10gW10gW10gW10gW10gW10gW10gICAgW10gW10gW10gICAgfAotKyAgICAgaWQtdXRpbHMgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgW10gW10gICAgW10gICAgICAgICAgfAotKyAgICAgaW5kZW50ICAgICAgICAgICAgIHwgW10gICAgICAgW10gW10gW10gW10gICAgICAgW10gW10gICAgW10gW10gICAgICAgfAotKyAgICAgaXNvXzMxNjYgICAgICAgICAgIHwgICAgW10gICAgICAgW10gW10gICAgICAgW10gW10gW10gICAgW10gICAgICAgICAgfAotKyAgICAgaXNvXzMxNjZfMSAgICAgICAgIHwgICAgW10gICAgICAgW10gW10gICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgfAotKyAgICAgaXNvXzMxNjZfMiAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgaXNvXzMxNjZfMyAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgaXNvXzQyMTcgICAgICAgICAgIHwgW10gICAgICAgICAgW10gICAgW10gICAgICAgW10gICAgICAgW10gW10gICAgICAgfAotKyAgICAgaXNvXzYzOSAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAganBpbG90ICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgfAotKyAgICAganRhZyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgandob2lzICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgW10gW10gICAgW10gICAgICAgICAgfAotKyAgICAga2JkICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGF0cmluZSAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGQgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGliYyAgICAgICAgICAgICAgIHwgICAgICAgICAgW10gW10gICAgW10gICAgICAgW10gICAgICAgICAgW10gW10gICAgfAotKyAgICAgbGliZ3Bld2lkZ2V0ICAgICAgIHwgICAgICAgICAgICAgW10gW10gICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgfAotKyAgICAgbGliaWNvbnYgICAgICAgICAgIHwgW10gICAgICAgW10gW10gW10gW10gICAgW10gW10gW10gICAgW10gICAgICAgICAgfAotKyAgICAgbGlmZWxpbmVzICAgICAgICAgIHwgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGlseXBvbmQgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGluZ290ZWFjaCAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgfAotKyAgICAgbGluZ290ZWFjaF9sZXNzb25zIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgbHlueCAgICAgICAgICAgICAgIHwgW10gICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgW10gW10gICAgICAgfAotKyAgICAgbTQgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgW10gICAgICAgW10gICAgICAgfAotKyAgICAgbWFpbHV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgbWFrZSAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgW10gW10gW10gICAgICAgICAgICAgW10gW10gICAgfAotKyAgICAgbWFuLWRiICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgKCkgICAgICAgfAotKyAgICAgbWluaWNvbSAgICAgICAgICAgIHwgICAgICAgICAgW10gW10gICAgICAgICAgICAgW10gICAgICAgICAgW10gICAgICAgfAotKyAgICAgbXlzZWNyZXRkaWFyeSAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgfAotKyAgICAgbmFubyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgW10gICAgW10gICAgICAgICAgfAotKyAgICAgbmFub18xXzAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgW10gICAgW10gICAgICAgICAgfAotKyAgICAgb3Bjb2RlcyAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgcGFydGVkICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgW10gICAgICAgfAotKyAgICAgcHR4ICAgICAgICAgICAgICAgIHwgW10gICAgICAgW10gW10gW10gW10gICAgICAgW10gW10gICAgICAgICAgICAgICAgfAotKyAgICAgcHl0aG9uICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgcmFkaXVzICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgcmVjb2RlICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgW10gW10gICAgW10gW10gICAgW10gICAgICAgICAgfAotKyAgICAgcnBtICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgc2NyZWVtICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgc2Nyb2xsa2VlcGVyICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgc2VkICAgICAgICAgICAgICAgIHwgW10gICAgICAgW10gW10gW10gW10gICAgICAgW10gW10gICAgW10gW10gICAgICAgfAotKyAgICAgc2gtdXRpbHMgICAgICAgICAgIHwgW10gICAgICAgW10gW10gW10gICAgICAgICAgW10gICAgICAgW10gW10gICAgICAgfAotKyAgICAgc2hhcmVkLW1pbWUtaW5mbyAgIHwgICAgICAgICAgW10gW10gICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgc2hhcnV0aWxzICAgICAgICAgIHwgW10gICAgICAgICAgW10gICAgW10gICAgICAgW10gICAgICAgICAgW10gICAgICAgfAotKyAgICAgc2lsa3kgICAgICAgICAgICAgIHwgICAgICAgICAgKCkgW10gICAgICAgICAgICAgKCkgICAgICAgKCkgICAgICAgICAgfAotKyAgICAgc2tlbmNpbCAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgc2tldGNoICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgc291bmR0cmFja2VyICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgfAotKyAgICAgc3AgICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgfAotKyAgICAgdGFyICAgICAgICAgICAgICAgIHwgW10gICAgICAgW10gW10gICAgW10gICAgW10gW10gW10gICAgW10gW10gICAgICAgfAotKyAgICAgdGV4aW5mbyAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gW10gICAgICAgICAgICAgW10gICAgICAgfAotKyAgICAgdGV4dHV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgW10gW10gW10gICAgICAgW10gICAgICAgICAgW10gW10gICAgfAotKyAgICAgdGluICAgICAgICAgICAgICAgIHwgW10gICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgdHAtcm9ib3QgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgdHV4cGFpbnQgICAgICAgICAgIHwgICAgICAgICAgW10gW10gICAgICAgW10gICAgW10gW10gW10gW10gW10gW10gICAgfAotKyAgICAgdW5pY29kZS1oYW4tdHJhLi4uIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgdW5pY29kZS10cmFuc2xhLi4uIHwgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgdXRpbC1saW51eCAgICAgICAgIHwgW10gICAgICAgW10gW10gICAgICAgICAgICAgW10gICAgICAgKCkgW10gICAgICAgfAotKyAgICAgdm9yYmlzLXRvb2xzICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgd2FzdGVzZWRnZSAgICAgICAgIHwgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgd2RpZmYgICAgICAgICAgICAgIHwgW10gICAgICAgICAgW10gW10gW10gICAgICAgW10gW10gICAgICAgICAgICAgICAgfAotKyAgICAgd2dldCAgICAgICAgICAgICAgIHwgW10gICAgICAgW10gW10gICAgW10gICAgW10gW10gICAgICAgICAgW10gICAgICAgfAotKyAgICAgeGNoYXQgICAgICAgICAgICAgIHwgW10gICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgeGZyZWU4Nl94a2JfeG1sICAgIHwgICAgICAgICAgICAgW10gICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgfAotKyAgICAgeHBhZCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgICAgICAgICAgICAgICAgICAgICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgZXQgZXUgZmEgZmkgZnIgZ2EgZ2wgaGUgaHIgaHUgaWQgaXMgaXQgamEga28gbGcKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIDIyICAyICAxIDI2IDEwNiAyOCAyNCAgOCAxMCA0MSAzMyAgMSAyNiAzMyAxMiAgMAotKyAgICAgCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBsdCBsdiBtayBtbiBtcyBtdCBuYiBubCBubiBubyBuc28gcGwgcHQgcHRfQlIgcm8gcnUKLSsgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0rICAgICBhMnBzICAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICBbXSAgICAoKSAgICAgKCkgICAgIFtdICAgW10gW10gfAotKyAgICAgYWVnaXMgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgICAgICgpICgpIHwKLSsgICAgIGFudC1waG9uZSAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBhbnViaXMgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICBbXSBbXSAgICAgICAgICAgW10gICAgICAgICAgW10gW10gfAotKyAgICAgYXAtdXRpbHMgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICgpICAgICAgICAgIFtdICAgIHwKLSsgICAgIGFzcGVsbCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBiYXNoICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgW10gW10gfAotKyAgICAgYmF0Y2hlbG9yICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIGJmZCAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBiaW51dGlscyAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgYmlzb24gICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIGJsdWV6LXBpbiAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICBbXSAgICAgICAgICBbXSAgICB8Ci0rICAgICBjbGlzcCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgY2xpc3AgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGNvbnNvbGUtdG9vbHMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBjb3JldXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgW10gfAotKyAgICAgY3BpbyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIGRhcmtzdGF0ICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICBbXSAgICB8Ci0rICAgICBkaWZmdXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgW10gICAgIFtdICAgW10gW10gfAotKyAgICAgZTJmc3Byb2dzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgIHwKLSsgICAgIGVuc2NyaXB0ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICBbXSBbXSB8Ci0rICAgICBlcnJvciAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgW10gICAgfAotKyAgICAgZmV0Y2htYWlsICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICAoKSAgICAgIFtdIHwKLSsgICAgIGZpbGV1dGlscyAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICBmaW5kdXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgIFtdICAgW10gW10gfAotKyAgICAgZmxleCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIGZzbGludCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBnYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ2F3ayAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICBbXSAgIFtdICAgIHwKLSsgICAgIGdiaWZmICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBnY2FsICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ2NjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGdldHRleHQgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICBnZXR0ZXh0LWV4YW1wbGVzICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgICAgICAgW10gICAgfAotKyAgICAgZ2V0dGV4dC1ydW50aW1lICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIGdldHRleHQtdG9vbHMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICBbXSAgICB8Ci0rICAgICBnaW1wLXByaW50ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ2xpdiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgIFtdICAgIHwKLSsgICAgIGdsdW5hcmNsb2NrICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSB8Ci0rICAgICBnbnViaWZmICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgZ251Y2FzaCAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAoKSAgICAgIFtdIHwKLSsgICAgIGdudWNhc2gtZ2xvc3NhcnkgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICAgICAgICB8Ci0rICAgICBnbnVwZyAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgfAotKyAgICAgZ3BlLWFlcmlhbCAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS1iZWFtICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtY2FsZW5kYXIgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3BlLWNsb2NrICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS1jb25mICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtY29udGFjdHMgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3BlLWVkaXQgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS1nbyAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtbG9naW4gICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3BlLW93bmVyaW5mbyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS1za2V0Y2hib29rICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtc3UgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3BlLXRhc2ttYW5hZ2VyICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIHwKLSsgICAgIGdwZS10aW1lc2hlZXQgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICBbXSBbXSB8Ci0rICAgICBncGUtdG9kYXkgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgW10gICAgICAgW10gW10gfAotKyAgICAgZ3BlLXRvZG8gICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdIFtdIHwKLSsgICAgIGdwaG90bzIgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBncHJvZiAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgW10gICAgfAotKyAgICAgZ3BzZHJpdmUgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKCkgICAgKCkgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIGdyYW1hZG9pciAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICgpICAgICAgICAgICAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBncmVwICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gW10gIFtdICAgW10gW10gfAotKyAgICAgZ3JldGwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGd0aWNrICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICBbXSBbXSB8Ci0rICAgICBoZWxsbyAgICAgICAgICAgICAgfCAgICBbXSAgICAgICBbXSAgICBbXSBbXSBbXSBbXSAgICAgW10gICAgIFtdICAgW10gW10gfAotKyAgICAgaWQtdXRpbHMgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgIFtdIFtdIHwKLSsgICAgIGluZGVudCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICBbXSBbXSB8Ci0rICAgICBpc29fMzE2NiAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgaXNvXzMxNjZfMSAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGlzb18zMTY2XzIgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBpc29fMzE2Nl8zICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgaXNvXzQyMTcgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgICAgW10gW10gW10gICAgIFtdIFtdICBbXSAgICAgIFtdIHwKLSsgICAgIGlzb182MzkgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBqcGlsb3QgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAoKSAgICAoKSAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAganRhZyAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGp3aG9pcyAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICBbXSAgICAgW10gICBbXSAoKSB8Ci0rICAgICBrYmQgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgW10gICAgICAgICAgW10gICAgfAotKyAgICAgbGF0cmluZSAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIGxkICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsaWJjICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICBbXSAgICAgICBbXSAgICAgW10gICAgIFtdICAgICAgICAgfAotKyAgICAgbGliZ3Bld2lkZ2V0ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgIFtdICAgICAgIFtdICAgIHwKLSsgICAgIGxpYmljb252ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICBbXSAgICAgW10gICBbXSBbXSB8Ci0rICAgICBsaWZlbGluZXMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgbGlseXBvbmQgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIGxpbmdvdGVhY2ggICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBsaW5nb3RlYWNoX2xlc3NvbnMgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgbHlueCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgICAgIFtdIHwKLSsgICAgIG00ICAgICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICBbXSAgICAgW10gICBbXSBbXSB8Ci0rICAgICBtYWlsdXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgW10gW10gfAotKyAgICAgbWFrZSAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICBbXSAgICAgIFtdIHwKLSsgICAgIG1hbi1kYiAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICB8Ci0rICAgICBtaW5pY29tICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgIFtdICAgW10gW10gfAotKyAgICAgbXlzZWNyZXRkaWFyeSAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgIFtdICAgIHwKLSsgICAgIG5hbm8gICAgICAgICAgICAgICB8ICAgICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICBuYW5vXzFfMCAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICBbXSAgICBbXSAgICAgICAgW10gICAgICAgICAgW10gW10gfAotKyAgICAgb3Bjb2RlcyAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgIHBhcnRlZCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICBbXSBbXSAgW10gICAgICAgICB8Ci0rICAgICBwdHggICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICBbXSBbXSAgICBbXSAgICAgW10gW10gIFtdICAgW10gW10gfAotKyAgICAgcHl0aG9uICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHJhZGl1cyAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICBbXSB8Ci0rICAgICByZWNvZGUgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgIFtdICAgW10gW10gfAotKyAgICAgcnBtICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdIFtdICAgICAgICAgIFtdIHwKLSsgICAgIHNjcmVlbSAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBzY3JvbGxrZWVwZXIgICAgICAgfCAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgW10gICAgICAgICAgW10gW10gfAotKyAgICAgc2VkICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICBbXSAgIFtdICAgIHwKLSsgICAgIHNoLXV0aWxzICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICBzaGFyZWQtbWltZS1pbmZvICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgc2hhcnV0aWxzICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgIFtdIHwKLSsgICAgIHNpbGt5ICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoKSB8Ci0rICAgICBza2VuY2lsICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gIFtdICAgICAgICAgfAotKyAgICAgc2tldGNoICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICBbXSAgICAgICAgIHwKLSsgICAgIHNvdW5kdHJhY2tlciAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICBzcCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfAotKyAgICAgdGFyICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgW10gICAgW10gICAgICAgW10gICAgIFtdICAgICBbXSAgIFtdICAgIHwKLSsgICAgIHRleGluZm8gICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICBbXSAgICAgICAgICBbXSBbXSB8Ci0rICAgICB0ZXh0dXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgdGluICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHRwLXJvYm90ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB0dXhwYWludCAgICAgICAgICAgfCBbXSAgICAgICAgICBbXSAgICAgICBbXSBbXSAgICAgICAgW10gW10gIFtdICAgW10gICAgfAotKyAgICAgdW5pY29kZS1oYW4tdHJhLi4uIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLSsgICAgIHVuaWNvZGUtdHJhbnNsYS4uLiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB1dGlsLWxpbnV4ICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgICAgW10gfAotKyAgICAgdm9yYmlzLXRvb2xzICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgIFtdIFtdIHwKLSsgICAgIHdhc3Rlc2VkZ2UgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rICAgICB3ZGlmZiAgICAgICAgICAgICAgfCAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgW10gICAgIFtdICAgW10gW10gfAotKyAgICAgd2dldCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgIFtdIFtdIHwKLSsgICAgIHhjaGF0ICAgICAgICAgICAgICB8ICAgIFtdICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICBbXSB8Ci0rICAgICB4ZnJlZTg2X3hrYl94bWwgICAgfCAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgW10gfAotKyAgICAgeHBhZCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgIFtdICAgIHwKLSsgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBsdCBsdiBtayBtbiBtcyBtdCBuYiBubCBubiBubyBuc28gcGwgcHQgcHRfQlIgcm8gcnUKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAxICAyICAwICAzIDEyICAwIDEwIDY5ICA2ICA3ICAxICA0MCAyNiAgMzYgICA3NiA2MwotKyAgICAgCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBzayBzbCBzciBzdiB0YSB0aCB0ciB1ayB2ZW4gdmkgd2EgeGggemhfQ04gemhfVFcgenUKLSsgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0rICAgICBhMnBzICAgICAgICAgICAgICAgfCAgICBbXSAgICBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNgotKyAgICAgYWVnaXMgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDAKLSsgICAgIGFudC1waG9uZSAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzCi0rICAgICBhbnViaXMgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOQotKyAgICAgYXAtdXRpbHMgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgKCkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMKLSsgICAgIGFzcGVsbCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0Ci0rICAgICBiYXNoICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOQotKyAgICAgYmF0Y2hlbG9yICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMKLSsgICAgIGJmZCAgICAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA2Ci0rICAgICBiaW51dGlscyAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAgOAotKyAgICAgYmlzb24gICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTQKLSsgICAgIGJsdWV6LXBpbiAgICAgICAgICB8IFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8IDE0Ci0rICAgICBjbGlzcCAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMAotKyAgICAgY2xpc3AgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUKLSsgICAgIGNvbnNvbGUtdG9vbHMgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzCi0rICAgICBjb3JldXRpbHMgICAgICAgICAgfCAgICBbXSAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgfCAxNgotKyAgICAgY3BpbyAgICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMTQKLSsgICAgIGRhcmtzdGF0ICAgICAgICAgICB8IFtdICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgKCkgICAgKCkgICAgICB8IDEyCi0rICAgICBkaWZmdXRpbHMgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgfCAyMwotKyAgICAgZTJmc3Byb2dzICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYKLSsgICAgIGVuc2NyaXB0ICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDEyCi0rICAgICBlcnJvciAgICAgICAgICAgICAgfCBbXSAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgfCAxNQotKyAgICAgZmV0Y2htYWlsICAgICAgICAgIHwgW10gICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTEKLSsgICAgIGZpbGV1dGlscyAgICAgICAgICB8ICAgIFtdICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICAgW10gICAgICB8IDE3Ci0rICAgICBmaW5kdXRpbHMgICAgICAgICAgfCBbXSBbXSBbXSBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAyOQotKyAgICAgZmxleCAgICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTMKLSsgICAgIGZzbGludCAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzCi0rICAgICBnYXMgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMwotKyAgICAgZ2F3ayAgICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIKLSsgICAgIGdiaWZmICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0Ci0rICAgICBnY2FsICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNAotKyAgICAgZ2NjICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQKLSsgICAgIGdldHRleHQgICAgICAgICAgICB8IFtdIFtdICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICB8IDE2Ci0rICAgICBnZXR0ZXh0LWV4YW1wbGVzICAgfCBbXSAgICBbXSBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAxNAotKyAgICAgZ2V0dGV4dC1ydW50aW1lICAgIHwgW10gW10gW10gW10gICAgICAgW10gW10gICAgICAgICAgICAgICBbXSAgICBbXSAgICAgIHwgMjIKLSsgICAgIGdldHRleHQtdG9vbHMgICAgICB8IFtdIFtdIFtdIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8IDE0Ci0rICAgICBnaW1wLXByaW50ICAgICAgICAgfCBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMAotKyAgICAgZ2xpdiAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMKLSsgICAgIGdsdW5hcmNsb2NrICAgICAgICB8ICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICB8IDEzCi0rICAgICBnbnViaWZmICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMwotKyAgICAgZ251Y2FzaCAgICAgICAgICAgIHwgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgIHwgIDkKLSsgICAgIGdudWNhc2gtZ2xvc3NhcnkgICB8IFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICB8ICA4Ci0rICAgICBnbnVwZyAgICAgICAgICAgICAgfCBbXSAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgfCAxNwotKyAgICAgZ3BlLWFlcmlhbCAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDcKLSsgICAgIGdwZS1iZWFtICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA4Ci0rICAgICBncGUtY2FsZW5kYXIgICAgICAgfCBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICAgfCAxMwotKyAgICAgZ3BlLWNsb2NrICAgICAgICAgIHwgW10gICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAKLSsgICAgIGdwZS1jb25mICAgICAgICAgICB8IFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5Ci0rICAgICBncGUtY29udGFjdHMgICAgICAgfCBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgfCAxMQotKyAgICAgZ3BlLWVkaXQgICAgICAgICAgIHwgW10gICAgW10gW10gICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICBbXSAgICAgIHwgMTIKLSsgICAgIGdwZS1nbyAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1Ci0rICAgICBncGUtbG9naW4gICAgICAgICAgfCBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICAgfCAxMwotKyAgICAgZ3BlLW93bmVyaW5mbyAgICAgIHwgW10gICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgIHwgMTMKLSsgICAgIGdwZS1za2V0Y2hib29rICAgICB8IFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA5Ci0rICAgICBncGUtc3UgICAgICAgICAgICAgfCBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMAotKyAgICAgZ3BlLXRhc2ttYW5hZ2VyICAgIHwgW10gICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAKLSsgICAgIGdwZS10aW1lc2hlZXQgICAgICB8IFtdICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICB8IDEyCi0rICAgICBncGUtdG9kYXkgICAgICAgICAgfCBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgIFtdICAgICAgfCAxMwotKyAgICAgZ3BlLXRvZG8gICAgICAgICAgIHwgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICBbXSAgICAgIHwgMTIKLSsgICAgIGdwaG90bzIgICAgICAgICAgICB8IFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8IDExCi0rICAgICBncHJvZiAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgOQotKyAgICAgZ3BzZHJpdmUgICAgICAgICAgIHwgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMKLSsgICAgIGdyYW1hZG9pciAgICAgICAgICB8IFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1Ci0rICAgICBncmVwICAgICAgICAgICAgICAgfCAgICBbXSBbXSAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyNgotKyAgICAgZ3JldGwgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMKLSsgICAgIGd0aWNrICAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3Ci0rICAgICBoZWxsbyAgICAgICAgICAgICAgfCBbXSAgICBbXSBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAzNAotKyAgICAgaWQtdXRpbHMgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTIKLSsgICAgIGluZGVudCAgICAgICAgICAgICB8IFtdICAgIFtdIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIxCi0rICAgICBpc29fMzE2NiAgICAgICAgICAgfCBbXSBbXSBbXSBbXSAgICAgICBbXSAgICBbXSAgICAgW10gICAgICAgICAgICAgICAgICAgfCAyNwotKyAgICAgaXNvXzMxNjZfMSAgICAgICAgIHwgW10gW10gICAgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTYKLSsgICAgIGlzb18zMTY2XzIgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAwCi0rICAgICBpc29fMzE2Nl8zICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMgotKyAgICAgaXNvXzQyMTcgICAgICAgICAgIHwgW10gW10gICAgW10gICAgICAgW10gW10gICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMjQKLSsgICAgIGlzb182MzkgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxCi0rICAgICBqcGlsb3QgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgW10gICAgICAgIFtdICAgIFtdICAgICAgfCAgOQotKyAgICAganRhZyAgICAgICAgICAgICAgIHwgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIKLSsgICAgIGp3aG9pcyAgICAgICAgICAgICB8ICAgICAgICAgICgpICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICB8IDExCi0rICAgICBrYmQgICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMQotKyAgICAgbGF0cmluZSAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIKLSsgICAgIGxkICAgICAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1Ci0rICAgICBsaWJjICAgICAgICAgICAgICAgfCBbXSAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAyMAotKyAgICAgbGliZ3Bld2lkZ2V0ICAgICAgIHwgW10gICAgW10gW10gICAgICAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgIHwgMTMKLSsgICAgIGxpYmljb252ICAgICAgICAgICB8IFtdIFtdIFtdIFtdICAgICAgIFtdIFtdICAgICAgICBbXSAgICAgW10gICAgICAgICAgICB8IDI3Ci0rICAgICBsaWZlbGluZXMgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMgotKyAgICAgbGlseXBvbmQgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDMKLSsgICAgIGxpbmdvdGVhY2ggICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyCi0rICAgICBsaW5nb3RlYWNoX2xlc3NvbnMgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICgpICAgICAgICAgICAgfCAgMAotKyAgICAgbHlueCAgICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTQKLSsgICAgIG00ICAgICAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8IDE1Ci0rICAgICBtYWlsdXRpbHMgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNQotKyAgICAgbWFrZSAgICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMTYKLSsgICAgIG1hbi1kYiAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA1Ci0rICAgICBtaW5pY29tICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMQotKyAgICAgbXlzZWNyZXRkaWFyeSAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAKLSsgICAgIG5hbm8gICAgICAgICAgICAgICB8ICAgICAgIFtdIFtdICAgICAgIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE3Ci0rICAgICBuYW5vXzFfMCAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNwotKyAgICAgb3Bjb2RlcyAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYKLSsgICAgIHBhcnRlZCAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8IDE1Ci0rICAgICBwdHggICAgICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMgotKyAgICAgcHl0aG9uICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDAKLSsgICAgIHJhZGl1cyAgICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA0Ci0rICAgICByZWNvZGUgICAgICAgICAgICAgfCAgICBbXSAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyMAotKyAgICAgcnBtICAgICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkKLSsgICAgIHNjcmVlbSAgICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8ICAyCi0rICAgICBzY3JvbGxrZWVwZXIgICAgICAgfCBbXSAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNQotKyAgICAgc2VkICAgICAgICAgICAgICAgIHwgW10gW10gW10gW10gICAgICAgW10gW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjQKLSsgICAgIHNoLXV0aWxzICAgICAgICAgICB8ICAgIFtdICAgICAgICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDE0Ci0rICAgICBzaGFyZWQtbWltZS1pbmZvICAgfCAgICAgICBbXSBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNwotKyAgICAgc2hhcnV0aWxzICAgICAgICAgIHwgICAgICAgW10gW10gICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICBbXSAgICAgIHwgMTcKLSsgICAgIHNpbGt5ICAgICAgICAgICAgICB8ICgpICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAzCi0rICAgICBza2VuY2lsICAgICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgNgotKyAgICAgc2tldGNoICAgICAgICAgICAgIHwgICAgICAgICAgW10gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDYKLSsgICAgIHNvdW5kdHJhY2tlciAgICAgICB8IFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICA3Ci0rICAgICBzcCAgICAgICAgICAgICAgICAgfCAgICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMwotKyAgICAgdGFyICAgICAgICAgICAgICAgIHwgW10gW10gICAgW10gICAgICAgW10gICAgICAgICAgICAgICAgICBbXSAgICAgICAgICAgIHwgMjQKLSsgICAgIHRleGluZm8gICAgICAgICAgICB8ICAgICAgICAgIFtdICAgICAgIFtdICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8IDE0Ci0rICAgICB0ZXh0dXRpbHMgICAgICAgICAgfCAgICBbXSAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgIFtdICAgICAgfCAxNgotKyAgICAgdGluICAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEKLSsgICAgIHRwLXJvYm90ICAgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyCi0rICAgICB0dXhwYWludCAgICAgICAgICAgfCBbXSAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgW10gICAgIFtdICAgICAgICAgICAgfCAyOQotKyAgICAgdW5pY29kZS1oYW4tdHJhLi4uIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDAKLSsgICAgIHVuaWNvZGUtdHJhbnNsYS4uLiB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyCi0rICAgICB1dGlsLWxpbnV4ICAgICAgICAgfCAgICAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNQotKyAgICAgdm9yYmlzLXRvb2xzICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDgKLSsgICAgIHdhc3Rlc2VkZ2UgICAgICAgICB8ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAwCi0rICAgICB3ZGlmZiAgICAgICAgICAgICAgfCBbXSAgICAgICBbXSAgICAgICBbXSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxOAotKyAgICAgd2dldCAgICAgICAgICAgICAgIHwgW10gW10gW10gW10gICAgICAgW10gW10gICAgICAgICAgICAgICBbXSAgICBbXSAgICAgIHwgMjQKLSsgICAgIHhjaGF0ICAgICAgICAgICAgICB8IFtdIFtdIFtdIFtdICAgICAgICAgICAgICAgICAgICAgICAgICAgW10gICAgICAgICAgICB8IDE1Ci0rICAgICB4ZnJlZTg2X3hrYl94bWwgICAgfCBbXSAgICBbXSAgICAgICAgICBbXSBbXSAgICAgICAgICAgICAgIFtdICAgICAgICAgICAgfCAxMQotKyAgICAgeHBhZCAgICAgICAgICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUKLSsgICAgICAgICAgICAgICAgICAgICAgICArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCi0rICAgICAgIDYzIHRlYW1zICAgICAgICAgICBzayBzbCBzciBzdiB0YSB0aCB0ciB1ayB2ZW4gdmkgd2EgeGggemhfQ04gemhfVFcgenUKLSsgICAgICAxMzEgZG9tYWlucyAgICAgICAgIDQ3IDE5IDI4IDgzICAwICAwIDU5IDEzICAxICAgMSAxMSAgMCAgMjIgICAgMjIgICAgMCAgMTM3MwotIAotICAgIFNvbWUgY291bnRlcnMgaW4gdGhlIHByZWNlZGluZyBtYXRyaXggYXJlIGhpZ2hlciB0aGFuIHRoZSBudW1iZXIgb2YKLSB2aXNpYmxlIGJsb2NrcyBsZXQgdXMgZXhwZWN0LiAgVGhpcyBpcyBiZWNhdXNlIGEgZmV3IGV4dHJhIFBPIGZpbGVzIGFyZQotQEAgLTIyMCw2ICs3NDIsMjcgQEAKLSBsYWcgYmV0d2VlbiB0aGUgbWVyZSBleGlzdGVuY2UgYSBQTyBmaWxlIGFuZCBpdHMgd2lkZSBhdmFpbGFiaWxpdHkgaW4gYQotIGRpc3RyaWJ1dGlvbi4KLSAKLS0gICBJZiBBdWd1c3QgMTk5NyBzZWVtcyB0byBiZSBvbGQsIHlvdSBtYXkgZmV0Y2ggYSBtb3JlIHJlY2VudCBjb3B5IG9mCi0tdGhpcyBgQUJPVVQtTkxTJyBmaWxlIG9uIG1vc3QgR05VIGFyY2hpdmUgc2l0ZXMuCi0rICAgSWYgSmFudWFyeSAyMDA0IHNlZW1zIHRvIGJlIG9sZCwgeW91IG1heSBmZXRjaCBhIG1vcmUgcmVjZW50IGNvcHkgb2YKLSt0aGlzIGBBQk9VVC1OTFMnIGZpbGUgb24gbW9zdCBHTlUgYXJjaGl2ZSBzaXRlcy4gIFRoZSBtb3N0IHVwLXRvLWRhdGUKLSttYXRyaXggd2l0aCBmdWxsIHBlcmNlbnRhZ2UgZGV0YWlscyBjYW4gYmUgZm91bmQgYXQKLStgaHR0cDovL3d3dy5pcm8udW1vbnRyZWFsLmNhL2NvbnRyaWIvcG8vSFRNTC9tYXRyaXguaHRtbCcuCi0rCi0rVXNpbmcgYGdldHRleHQnIGluIG5ldyBwYWNrYWdlcwotKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsKLStJZiB5b3UgYXJlIHdyaXRpbmcgYSBmcmVlbHkgYXZhaWxhYmxlIHByb2dyYW0gYW5kIHdhbnQgdG8KLStpbnRlcm5hdGlvbmFsaXplIGl0IHlvdSBhcmUgd2VsY29tZSB0byB1c2UgR05VIGBnZXR0ZXh0JyBpbiB5b3VyCi0rcGFja2FnZS4gIE9mIGNvdXJzZSB5b3UgaGF2ZSB0byByZXNwZWN0IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotK0xpY2Vuc2Ugd2hpY2ggY292ZXJzIHRoZSB1c2Ugb2YgdGhlIEdOVSBgZ2V0dGV4dCcgbGlicmFyeS4gIFRoaXMgbWVhbnMKLStpbiBwYXJ0aWN1bGFyIHRoYXQgZXZlbiBub24tZnJlZSBwcm9ncmFtcyBjYW4gdXNlIGBsaWJpbnRsJyBhcyBhIHNoYXJlZAotK2xpYnJhcnksIHdoZXJlYXMgb25seSBmcmVlIHNvZnR3YXJlIGNhbiB1c2UgYGxpYmludGwnIGFzIGEgc3RhdGljCi0rbGlicmFyeSBvciB1c2UgbW9kaWZpZWQgdmVyc2lvbnMgb2YgYGxpYmludGwnLgotKwotKyAgIE9uY2UgdGhlIHNvdXJjZXMgYXJlIGNoYW5nZWQgYXBwcm9wcmlhdGVseSBhbmQgdGhlIHNldHVwIGNhbiBoYW5kbGUKLSt0aGUgdXNlIG9mIGBnZXR0ZXh0JyB0aGUgb25seSB0aGluZyBtaXNzaW5nIGFyZSB0aGUgdHJhbnNsYXRpb25zLiAgVGhlCi0rRnJlZSBUcmFuc2xhdGlvbiBQcm9qZWN0IGlzIGFsc28gYXZhaWxhYmxlIGZvciBwYWNrYWdlcyB3aGljaCBhcmUgbm90Ci0rZGV2ZWxvcGVkIGluc2lkZSB0aGUgR05VIHByb2plY3QuICBUaGVyZWZvcmUgdGhlIGluZm9ybWF0aW9uIGdpdmVuIGFib3ZlCi0rYXBwbGllcyBhbHNvIGZvciBldmVyeSBvdGhlciBGcmVlIFNvZnR3YXJlIFByb2plY3QuICBDb250YWN0Ci0rYHRyYW5zbGF0aW9uQGlyby51bW9udHJlYWwuY2EnIHRvIG1ha2UgdGhlIGAucG90JyBmaWxlcyBhdmFpbGFibGUgdG8KLSt0aGUgdHJhbnNsYXRpb24gdGVhbXMuCi0gCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL0NoYW5nZUxvZwkxOTk4LTEyLTI5IDE3OjQ5OjU2LjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvQ2hhbmdlTG9nCTIwMDQtMDktMTIgMTQ6NDA6MzUuODQ2NTIxNDU2IC0wNDAwCi1AQCAtMSwzICsxLDExIEBACi0rMjAwNC0wOS0xMiAgZ2V0dGV4dGl6ZSAgPGJ1Zy1nbnUtZ2V0dGV4dEBnbnUub3JnPgotKwotKwkqIE1ha2VmaWxlLmFtIChBQ0xPQ0FMX0FNRkxBR1MpOiBOZXcgdmFyaWFibGUuCi0rCShFWFRSQV9ESVNUKTogQWRkIGNvbmZpZy5ycGF0aC4KLSsJKiBjb25maWd1cmUuaW4gKEFDX09VVFBVVCk6IEFkZCBtNC9NYWtlZmlsZS4KLSsJKEFDX09VVFBVVCk6IFJlbW92ZSBjb21tYW5kIHRoYXQgY3JlYXRlZCBwby9NYWtlZmlsZS4KLSsJKEFDX0xJTktfRklMRVMpOiBSZW1vdmUgaW52b2NhdGlvbi4KLSsKLSAxOTk4LTEyLTI5CVV3ZSBPaHNlICA8dXdlQG9oc2UuZGU+Ci0gCi0gCSogc3JjL2xyei5jOiByZW1vdmVkIHN0cGNweSBjYWxsLgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9jb25maWcucnBhdGgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2NvbmZpZy5ycGF0aAkyMDA0LTA5LTEyIDE0OjQwOjM0LjMyOTc1MjA0MCAtMDQwMAotQEAgLTAsMCArMSw1NDggQEAKLSsjISAvYmluL3NoCi0rIyBPdXRwdXQgYSBzeXN0ZW0gZGVwZW5kZW50IHNldCBvZiB2YXJpYWJsZXMsIGRlc2NyaWJpbmcgaG93IHRvIHNldCB0aGUKLSsjIHJ1biB0aW1lIHNlYXJjaCBwYXRoIG9mIHNoYXJlZCBsaWJyYXJpZXMgaW4gYW4gZXhlY3V0YWJsZS4KLSsjCi0rIyAgIENvcHlyaWdodCAxOTk2LTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgIFRha2VuIGZyb20gR05VIGxpYnRvb2wsIDIwMDEKLSsjICAgT3JpZ2luYWxseSBieSBHb3Jkb24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKLSsjCi0rIyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rIyAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0rIyAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwgYnV0Ci0rIyAgIFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsjICAgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLSsjICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLSsjCi0rIyAgIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBpZiB5b3UKLSsjICAgZGlzdHJpYnV0ZSB0aGlzIGZpbGUgYXMgcGFydCBvZiBhIHByb2dyYW0gdGhhdCBjb250YWlucyBhCi0rIyAgIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgeW91IG1heSBpbmNsdWRlIGl0IHVuZGVyCi0rIyAgIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyB0aGF0IHlvdSB1c2UgZm9yIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsjCi0rIyBUaGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIHRvIHRoaXMgZmlsZSBpcyB0aGUgY2Fub25pY2FsIGhvc3Qgc3BlY2lmaWNhdGlvbiwKLSsjICAgIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1PUEVSQVRJTkdfU1lTVEVNCi0rIyBvcgotKyMgICAgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVSQVRJTkdfU1lTVEVNCi0rIyBUaGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIENDLCBHQ0MsIExERkxBR1MsIExELCB3aXRoX2dudV9sZAotKyMgc2hvdWxkIGJlIHNldCBieSB0aGUgY2FsbGVyLgotKyMKLSsjIFRoZSBzZXQgb2YgZGVmaW5lZCB2YXJpYWJsZXMgaXMgYXQgdGhlIGVuZCBvZiB0aGlzIHNjcmlwdC4KLSsKLSsjIEtub3duIGxpbWl0YXRpb25zOgotKyMgLSBPbiBJUklYIDYuNSB3aXRoIENDPSJjYyIsIHRoZSBydW4gdGltZSBzZWFyY2ggcGF0Y2ggbXVzdCBub3QgYmUgbG9uZ2VyCi0rIyAgIHRoYW4gMjU2IGJ5dGVzLCBvdGhlcndpc2UgdGhlIGNvbXBpbGVyIGRyaXZlciB3aWxsIGR1bXAgY29yZS4gVGhlIG9ubHkKLSsjICAga25vd24gd29ya2Fyb3VuZCBpcyB0byBjaG9vc2Ugc2hvcnRlciBkaXJlY3RvcnkgbmFtZXMgZm9yIHRoZSBidWlsZAotKyMgICBkaXJlY3RvcnkgYW5kL29yIHRoZSBpbnN0YWxsYXRpb24gZGlyZWN0b3J5LgotKwotKyMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNJFZDLAotKyMgd2hpY2ggbmVlZHMgJy5saWInKS4KLStsaWJleHQ9YQotK3NocmV4dD0uc28KLSsKLStob3N0PSIkMSIKLStob3N0X2NwdT1gZWNobyAiJGhvc3QiIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKLStob3N0X3ZlbmRvcj1gZWNobyAiJGhvc3QiIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDIvJ2AKLStob3N0X29zPWBlY2hvICIkaG9zdCIgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAotKwotKyMgQ29kZSB0YWtlbiBmcm9tIGxpYnRvb2wubTQncyBBQ19MSUJUT09MX1BST0dfQ09NUElMRVJfUElDLgotKwotK3dsPQotK2lmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICB3bD0nLVdsLCcKLStlbHNlCi0rICBjYXNlICIkaG9zdF9vcyIgaW4KLSsgICAgYWl4KikKLSsgICAgICB3bD0nLVdsLCcKLSsgICAgICA7OwotKyAgICBtaW5ndyogfCBwdzMyKiB8IG9zMiopCi0rICAgICAgOzsKLSsgICAgaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgxMSopCi0rICAgICAgd2w9Jy1XbCwnCi0rICAgICAgOzsKLSsgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSsgICAgICB3bD0nLVdsLCcKLSsgICAgICA7OwotKyAgICBuZXdzb3M2KQotKyAgICAgIDs7Ci0rICAgIGxpbnV4KikKLSsgICAgICBjYXNlICRDQyBpbgotKyAgICAgICAgaWNjfGVjYykKLSsgICAgICAgICAgd2w9Jy1XbCwnCi0rICAgICAgICAgIDs7Ci0rICAgICAgICBjY2MpCi0rICAgICAgICAgIHdsPSctV2wsJwotKyAgICAgICAgICA7OwotKyAgICAgIGVzYWMKLSsgICAgICA7OwotKyAgICBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCi0rICAgICAgd2w9Jy1XbCwnCi0rICAgICAgOzsKLSsgICAgc2NvMy4ydjUqKQotKyAgICAgIDs7Ci0rICAgIHNvbGFyaXMqKQotKyAgICAgIHdsPSctV2wsJwotKyAgICAgIDs7Ci0rICAgIHN1bm9zNCopCi0rICAgICAgd2w9Jy1Rb3B0aW9uIGxkICcKLSsgICAgICA7OwotKyAgICBzeXN2NCB8IHN5c3Y0LjJ1dzIqIHwgc3lzdjQuMyogfCBzeXN2NSopCi0rICAgICAgd2w9Jy1XbCwnCi0rICAgICAgOzsKLSsgICAgc3lzdjQqTVAqKQotKyAgICAgIDs7Ci0rICAgIHV0czQqKQotKyAgICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSsjIENvZGUgdGFrZW4gZnJvbSBsaWJ0b29sLm00J3MgQUNfTElCVE9PTF9QUk9HX0xEX1NITElCUy4KLSsKLStoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotK2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9Ci0raGFyZGNvZGVfZGlyZWN0PW5vCi0raGFyZGNvZGVfbWludXNfTD1ubwotKwotK2Nhc2UgIiRob3N0X29zIiBpbgotKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqKQotKyAgICAjIEZJWE1FOiB0aGUgTVNWQysrIHBvcnQgaGFzbid0IGJlZW4gdGVzdGVkIGluIGEgbG9vb29uZyB0aW1lCi0rICAgICMgV2hlbiBub3QgdXNpbmcgZ2NjLCB3ZSBjdXJyZW50bHkgYXNzdW1lIHRoYXQgd2UgYXJlIHVzaW5nCi0rICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0rICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgIHdpdGhfZ251X2xkPW5vCi0rICAgIGZpCi0rICAgIDs7Ci0rICBvcGVuYnNkKikKLSsgICAgd2l0aF9nbnVfbGQ9bm8KLSsgICAgOzsKLStlc2FjCi0rCi0rbGRfc2hsaWJzPXllcwotK2lmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KLSsgIGNhc2UgIiRob3N0X29zIiBpbgotKyAgICBhaXgzKiB8IGFpeDQqIHwgYWl4NSopCi0rICAgICAgIyBPbiBBSVgvUFBDLCB0aGUgR05VIGxpbmtlciBpcyB2ZXJ5IGJyb2tlbgotKyAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NDsgdGhlbgotKyAgICAgICAgbGRfc2hsaWJzPW5vCi0rICAgICAgZmkKLSsgICAgICA7OwotKyAgICBhbWlnYW9zKikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0rICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSsgICAgICAjIFNhbXVlbCBBLiBGYWx2byBJSSA8a2M1dGphQGRvbHBoaW4ub3BlbnByb2plY3RzLm5ldD4gcmVwb3J0cwotKyAgICAgICMgdGhhdCB0aGUgc2VtYW50aWNzIG9mIGR5bmFtaWMgbGlicmFyaWVzIG9uIEFtaWdhT1MsIGF0IGxlYXN0IHVwCi0rICAgICAgIyB0byB2ZXJzaW9uIDQsIGlzIHRvIHNoYXJlIGRhdGEgYW1vbmcgbXVsdGlwbGUgcHJvZ3JhbXMgbGlua2VkCi0rICAgICAgIyB3aXRoIHRoZSBzYW1lIGR5bmFtaWMgbGlicmFyeS4gIFNpbmNlIHRoaXMgZG9lc24ndCBtYXRjaCB0aGUKLSsgICAgICAjIGJlaGF2aW9yIG9mIHNoYXJlZCBsaWJyYXJpZXMgb24gb3RoZXIgcGxhdGZvcm1zLCB3ZSBjYW4gdXNlCi0rICAgICAgIyB0aGVtLgotKyAgICAgIGxkX3NobGlicz1ubwotKyAgICAgIDs7Ci0rICAgIGJlb3MqKQotKyAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgOgotKyAgICAgIGVsc2UKLSsgICAgICAgIGxkX3NobGlicz1ubwotKyAgICAgIGZpCi0rICAgICAgOzsKLSsgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqKQotKyAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSsgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSsgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgICAgIDoKLSsgICAgICBlbHNlCi0rICAgICAgICBsZF9zaGxpYnM9bm8KLSsgICAgICBmaQotKyAgICAgIDs7Ci0rICAgIG5ldGJzZCopCi0rICAgICAgOzsKLSsgICAgc29sYXJpcyogfCBzeXN2NSopCi0rICAgICAgaWYgJExEIC12IDI+JjEgfCBncmVwICdCRkQgMlwuOCcgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgICAgIGxkX3NobGlicz1ubwotKyAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0rICAgICAgICA6Ci0rICAgICAgZWxzZQotKyAgICAgICAgbGRfc2hsaWJzPW5vCi0rICAgICAgZmkKLSsgICAgICA7OwotKyAgICBzdW5vczQqKQotKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgOgotKyAgICAgIGVsc2UKLSsgICAgICAgIGxkX3NobGlicz1ubwotKyAgICAgIGZpCi0rICAgICAgOzsKLSsgIGVzYWMKLSsgIGlmIHRlc3QgIiRsZF9zaGxpYnMiID0geWVzOyB0aGVuCi0rICAgICMgVW5saWtlIGxpYnRvb2wsIHdlIHVzZSAtcnBhdGggaGVyZSwgbm90IC0tcnBhdGgsIHNpbmNlIHRoZSBkb2N1bWVudGVkCi0rICAgICMgb3B0aW9uIG9mIEdOVSBsZCBpcyBjYWxsZWQgLXJwYXRoLCBub3QgLS1ycGF0aC4KLSsgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotKyAgZmkKLStlbHNlCi0rICBjYXNlICIkaG9zdF9vcyIgaW4KLSsgICAgYWl4MyopCi0rICAgICAgIyBOb3RlOiB0aGlzIGxpbmtlciBoYXJkY29kZXMgdGhlIGRpcmVjdG9yaWVzIGluIExJQlBBVEggaWYgdGhlcmUKLSsgICAgICAjIGFyZSBubyBkaXJlY3RvcmllcyBzcGVjaWZpZWQgYnkgLUwuCi0rICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSsgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgICAgIyBOZWl0aGVyIGRpcmVjdCBoYXJkY29kaW5nIG5vciBzdGF0aWMgbGlua2luZyBpcyBzdXBwb3J0ZWQgd2l0aCBhCi0rICAgICAgICAjIGJyb2tlbiBjb2xsZWN0Mi4KLSsgICAgICAgIGhhcmRjb2RlX2RpcmVjdD11bnN1cHBvcnRlZAotKyAgICAgIGZpCi0rICAgICAgOzsKLSsgICAgYWl4NCogfCBhaXg1KikKLSsgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotKyAgICAgICAgIyBPbiBJQTY0LCB0aGUgbGlua2VyIGRvZXMgcnVuIHRpbWUgbGlua2luZyBieSBkZWZhdWx0LCBzbyB3ZSBkb24ndAotKyAgICAgICAgIyBoYXZlIHRvIGRvIGFueXRoaW5nIHNwZWNpYWwuCi0rICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCi0rICAgICAgZWxzZQotKyAgICAgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz1ubwotKyAgICAgICAgIyBUZXN0IGlmIHdlIGFyZSB0cnlpbmcgdG8gdXNlIHJ1biB0aW1lIGxpbmtpbmcgb3Igbm9ybWFsCi0rICAgICAgICAjIEFJWCBzdHlsZSBsaW5raW5nLiBJZiAtYnJ0bCBpcyBzb21ld2hlcmUgaW4gTERGTEFHUywgd2UKLSsgICAgICAgICMgbmVlZCB0byBkbyBydW50aW1lIGxpbmtpbmcuCi0rICAgICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuWzIzXXxhaXg0LlsyM10uKnxhaXg1KikKLSsgICAgICAgICAgZm9yIGxkX2ZsYWcgaW4gJExERkxBR1M7IGRvCi0rICAgICAgICAgICAgaWYgKHRlc3QgJGxkX2ZsYWcgPSAiLWJydGwiIHx8IHRlc3QgJGxkX2ZsYWcgPSAiLVdsLC1icnRsIik7IHRoZW4KLSsgICAgICAgICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9eWVzCi0rICAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAgIGZpCi0rICAgICAgICAgIGRvbmUKLSsgICAgICAgIGVzYWMKLSsgICAgICBmaQotKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSsgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSc6JwotKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuWzAxMl18YWl4NC5bMDEyXS4qKQotKyAgICAgICAgICBjb2xsZWN0Mm5hbWU9YCR7Q0N9IC1wcmludC1wcm9nLW5hbWU9Y29sbGVjdDJgCi0rICAgICAgICAgIGlmIHRlc3QgLWYgIiRjb2xsZWN0Mm5hbWUiICYmIFwKLSsgICAgICAgICAgICBzdHJpbmdzICIkY29sbGVjdDJuYW1lIiB8IGdyZXAgcmVzb2x2ZV9saWJfbmFtZSA+L2Rldi9udWxsCi0rICAgICAgICAgIHRoZW4KLSsgICAgICAgICAgICAjIFdlIGhhdmUgcmV3b3JrZWQgY29sbGVjdDIKLSsgICAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0rICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAjIFdlIGhhdmUgb2xkIGNvbGxlY3QyCi0rICAgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXVuc3VwcG9ydGVkCi0rICAgICAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSsgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0rICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0KLSsgICAgICAgICAgZmkKLSsgICAgICAgIGVzYWMKLSsgICAgICBmaQotKyAgICAgICMgQmVnaW4gX0xUX0FDX1NZU19MSUJQQVRIX0FJWC4KLSsgICAgICBlY2hvICdpbnQgbWFpbiAoKSB7IHJldHVybiAwOyB9JyA+IGNvbmZ0ZXN0LmMKLSsgICAgICAke0NDfSAke0xERkxBR1N9IGNvbmZ0ZXN0LmMgLW8gY29uZnRlc3QKLSsgICAgICBhaXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCAyPi9kZXYvbnVsbCB8IHNlZCAtbiAtZSAnL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geyAvXjAvIHsgcy9eMCAgKlwoLipcKSQvXDEvOyBwOyB9Ci0rfSdgCi0rICAgICAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotKyAgICAgICAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QgMj4vZGV2L251bGwgfCBzZWQgLW4gLWUgJy9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsgL14wLyB7IHMvXjAgICpcKC4qXCkkL1wxLzsgcDsgfQotK30nYAotKyAgICAgIGZpCi0rICAgICAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotKyAgICAgICAgYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC5jIGNvbmZ0ZXN0Ci0rICAgICAgIyBFbmQgX0xUX0FDX1NZU19MSUJQQVRIX0FJWC4KLSsgICAgICBpZiB0ZXN0ICIkYWl4X3VzZV9ydW50aW1lbGlua2luZyIgPSB5ZXM7IHRoZW4KLSsgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0rICAgICAgZWxzZQotKyAgICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiA9IGlhNjQ7IHRoZW4KLSsgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tUiAkbGliZGlyOi91c3IvbGliOi9saWInCi0rICAgICAgICBlbHNlCi0rICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgOzsKLSsgICAgYW1pZ2FvcyopCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0rICAgICAgIyBzZWUgY29tbWVudCBhYm91dCBkaWZmZXJlbnQgc2VtYW50aWNzIG9uIHRoZSBHTlUgbGQgc2VjdGlvbgotKyAgICAgIGxkX3NobGlicz1ubwotKyAgICAgIDs7Ci0rICAgIGJzZGk0KikKLSsgICAgICA7OwotKyAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiopCi0rICAgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKLSsgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotKyAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSsgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rICAgICAgbGliZXh0PWxpYgotKyAgICAgIDs7Ci0rICAgIGRhcndpbiogfCByaGFwc29keSopCi0rICAgICAgaWYgJENDIC12IDI+JjEgfCBncmVwICdBcHBsZScgPi9kZXYvbnVsbCA7IHRoZW4KLSsgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubwotKyAgICAgIGZpCi0rICAgICAgOzsKLSsgICAgZGd1eCopCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotKyAgICAgIDs7Ci0rICAgIGZyZWVic2QxKikKLSsgICAgICBsZF9zaGxpYnM9bm8KLSsgICAgICA7OwotKyAgICBmcmVlYnNkMi4yKikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0rICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotKyAgICAgIDs7Ci0rICAgIGZyZWVic2QyKikKLSsgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0rICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSsgICAgICA7OwotKyAgICBmcmVlYnNkKikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0rICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotKyAgICAgIDs7Ci0rICAgIGhwdXg5KikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9JGxpYmRpcicKLSsgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKLSsgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0rICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKLSsgICAgICAjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KLSsgICAgICBoYXJkY29kZV9taW51c19MPXllcwotKyAgICAgIDs7Ci0rICAgIGhwdXgxMCogfCBocHV4MTEqKQotKyAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotKyAgICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgotKyAgICAgICAgICBocHBhKjY0KikKLSsgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9JGxpYmRpcicKLSsgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKLSsgICAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KLSsgICAgICAgICAgICA7OwotKyAgICAgICAgICBpYTY0KikKLSsgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0rICAgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCi0rICAgICAgICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKLSsgICAgICAgICAgICAjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KLSsgICAgICAgICAgICBoYXJkY29kZV9taW51c19MPXllcwotKyAgICAgICAgICAgIDs7Ci0rICAgICAgICAgICopCi0rICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0rYiAke3dsfSRsaWJkaXInCi0rICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0rICAgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotKyAgICAgICAgICAgICMgaGFyZGNvZGVfbWludXNfTDogTm90IHJlYWxseSBpbiB0aGUgc2VhcmNoIFBBVEgsCi0rICAgICAgICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0rICAgICAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSsgICAgICAgICAgICA7OwotKyAgICAgICAgZXNhYwotKyAgICAgIGZpCi0rICAgICAgOzsKLSsgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0rICAgICAgOzsKLSsgICAgbmV0YnNkKikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0rICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotKyAgICAgIDs7Ci0rICAgIG5ld3NvczYpCi0rICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSsgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKLSsgICAgICA7OwotKyAgICBvcGVuYnNkKikKLSsgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0rICAgICAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgZ3JlcCBfX0VMRl9fYCIgfHwgdGVzdCAiJGhvc3Rfb3MtJGhvc3RfY3B1IiA9ICJvcGVuYnNkMi44LXBvd2VycGMiOyB0aGVuCi0rICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCwkbGliZGlyJwotKyAgICAgIGVsc2UKLSsgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgotKyAgICAgICAgICBvcGVuYnNkWzAxXS4qIHwgb3BlbmJzZDIuWzAtN10gfCBvcGVuYnNkMi5bMC03XS4qKQotKyAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSsgICAgICAgICAgICA7OwotKyAgICAgICAgICAqKQotKyAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoLCRsaWJkaXInCi0rICAgICAgICAgICAgOzsKLSsgICAgICAgIGVzYWMKLSsgICAgICBmaQotKyAgICAgIDs7Ci0rICAgIG9zMiopCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0rICAgICAgOzsKLSsgICAgb3NmMyopCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotKyAgICAgIDs7Ci0rICAgIG9zZjQqIHwgb3NmNSopCi0rICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSsgICAgICBlbHNlCi0rICAgICAgICAjIEJvdGggY2MgYW5kIGN4eCBjb21waWxlciBzdXBwb3J0IC1ycGF0aCBkaXJlY3RseQotKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLXJwYXRoICRsaWJkaXInCi0rICAgICAgZmkKLSsgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKLSsgICAgICA7OwotKyAgICBzY28zLjJ2NSopCi0rICAgICAgOzsKLSsgICAgc29sYXJpcyopCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotKyAgICAgIDs7Ci0rICAgIHN1bm9zNCopCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotKyAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSsgICAgICBoYXJkY29kZV9taW51c19MPXllcwotKyAgICAgIDs7Ci0rICAgIHN5c3Y0KQotKyAgICAgIGNhc2UgJGhvc3RfdmVuZG9yIGluCi0rICAgICAgICBzbmkpCi0rICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMgIyBpcyB0aGlzIHJlYWxseSB0cnVlPz8/Ci0rICAgICAgICAgIDs7Ci0rICAgICAgICBzaWVtZW5zKQotKyAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KLSsgICAgICAgICAgOzsKLSsgICAgICAgIG1vdG9yb2xhKQotKyAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8gI01vdG9yb2xhIG1hbnVhbCBzYXlzIHllcywgYnV0IG15IHRlc3RzIHNheSB0aGV5IGxpZQotKyAgICAgICAgICA7OwotKyAgICAgIGVzYWMKLSsgICAgICA7OwotKyAgICBzeXN2NC4zKikKLSsgICAgICA7OwotKyAgICBzeXN2NCpNUCopCi0rICAgICAgaWYgdGVzdCAtZCAvdXNyL25lYzsgdGhlbgotKyAgICAgICAgbGRfc2hsaWJzPXllcwotKyAgICAgIGZpCi0rICAgICAgOzsKLSsgICAgc3lzdjQuMnV3MiopCi0rICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotKyAgICAgIGhhcmRjb2RlX21pbnVzX0w9bm8KLSsgICAgICA7OwotKyAgICBzeXN2NU9wZW5VTklYOCogfCBzeXN2NVVuaXhXYXJlNyogfCAgc3lzdjV1d1s3OF0qIHwgdW5peHdhcmU3KikKLSsgICAgICA7OwotKyAgICBzeXN2NSopCi0rICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSsgICAgICA7OwotKyAgICB1dHM0KikKLSsgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBsZF9zaGxpYnM9bm8KLSsgICAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0rIyBDaGVjayBkeW5hbWljIGxpbmtlciBjaGFyYWN0ZXJpc3RpY3MKLSsjIENvZGUgdGFrZW4gZnJvbSBsaWJ0b29sLm00J3MgQUNfTElCVE9PTF9TWVNfRFlOQU1JQ19MSU5LRVIuCi0rbGlibmFtZV9zcGVjPSdsaWIkbmFtZScKLStjYXNlICIkaG9zdF9vcyIgaW4KLSsgIGFpeDMqKQotKyAgICA7OwotKyAgYWl4NCogfCBhaXg1KikKLSsgICAgOzsKLSsgIGFtaWdhb3MqKQotKyAgICA7OwotKyAgYmVvcyopCi0rICAgIDs7Ci0rICBic2RpNCopCi0rICAgIDs7Ci0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiopCi0rICAgIHNocmV4dD0uZGxsCi0rICAgIDs7Ci0rICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotKyAgICBzaHJleHQ9LmR5bGliCi0rICAgIDs7Ci0rICBkZ3V4KikKLSsgICAgOzsKLSsgIGZyZWVic2QxKikKLSsgICAgOzsKLSsgIGZyZWVic2QqKQotKyAgICA7OwotKyAgZ251KikKLSsgICAgOzsKLSsgIGhwdXg5KiB8IGhwdXgxMCogfCBocHV4MTEqKQotKyAgICBjYXNlICIkaG9zdF9jcHUiIGluCi0rICAgICAgaWE2NCopCi0rICAgICAgICBzaHJleHQ9LnNvCi0rICAgICAgICA7OwotKyAgICAgIGhwcGEqNjQqKQotKyAgICAgICAgc2hyZXh0PS5zbAotKyAgICAgICAgOzsKLSsgICAgICAqKQotKyAgICAgICAgc2hyZXh0PS5zbAotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSsgICAgY2FzZSAiJGhvc3Rfb3MiIGluCi0rICAgICAgaXJpeDUqIHwgbm9uc3RvcHV4KikKLSsgICAgICAgIGxpYnN1ZmY9IHNobGlic3VmZj0KLSsgICAgICAgIDs7Ci0rICAgICAgKikKLSsgICAgICAgIGNhc2UgJExEIGluCi0rICAgICAgICAgICotMzJ8KiItMzIgInwqLW1lbGYzMmJzbWlwfCoiLW1lbGYzMmJzbWlwICIpIGxpYnN1ZmY9IHNobGlic3VmZj0gOzsKLSsgICAgICAgICAgKi1uMzJ8KiItbjMyICJ8Ki1tZWxmMzJibWlwbjMyfCoiLW1lbGYzMmJtaXBuMzIgIikgbGlic3VmZj0zMiBzaGxpYnN1ZmY9TjMyIDs7Ci0rICAgICAgICAgICotNjR8KiItNjQgInwqLW1lbGY2NGJtaXB8KiItbWVsZjY0Ym1pcCAiKSBsaWJzdWZmPTY0IHNobGlic3VmZj02NCA7OwotKyAgICAgICAgICAqKSBsaWJzdWZmPSBzaGxpYnN1ZmY9IDs7Ci0rICAgICAgICBlc2FjCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICBsaW51eCpvbGRsZCogfCBsaW51eCphb3V0KiB8IGxpbnV4KmNvZmYqKQotKyAgICA7OwotKyAgbGludXgqKQotKyAgICA7OwotKyAgbmV0YnNkKikKLSsgICAgOzsKLSsgIG5ld3NvczYpCi0rICAgIDs7Ci0rICBudG8tcW54KQotKyAgICA7OwotKyAgb3BlbmJzZCopCi0rICAgIDs7Ci0rICBvczIqKQotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzaHJleHQ9LmRsbAotKyAgICA7OwotKyAgb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQotKyAgICA7OwotKyAgc2NvMy4ydjUqKQotKyAgICA7OwotKyAgc29sYXJpcyopCi0rICAgIDs7Ci0rICBzdW5vczQqKQotKyAgICA7OwotKyAgc3lzdjQgfCBzeXN2NC4ydXcyKiB8IHN5c3Y0LjMqIHwgc3lzdjUqKQotKyAgICA7OwotKyAgc3lzdjQqTVAqKQotKyAgICA7OwotKyAgdXRzNCopCi0rICAgIDs7Ci0rZXNhYwotKwotK3NlZF9xdW90ZV9zdWJzdD0ncy9cKFsiYCRcXF1cKS9cXFwxL2cnCi0rZXNjYXBlZF93bD1gZWNobyAiWCR3bCIgfCBzZWQgLWUgJ3MvXlgvLycgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotK3NobGliZXh0PWBlY2hvICIkc2hyZXh0IiB8IHNlZCAtZSAncyxeXC4sLCdgCi0rZXNjYXBlZF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPWBlY2hvICJYJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiIHwgc2VkIC1lICdzL15YLy8nIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsKLStzZWQgLWUgJ3MvXlwoW2EtekEtWjAtOV9dKlwpPS9hY2xfY3ZfXDE9LycgPDxFT0YKLSsKLSsjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0rd2w9IiRlc2NhcGVkX3dsIgotKwotKyMgU3RhdGljIGxpYnJhcnkgc3VmZml4IChub3JtYWxseSAiYSIpLgotK2xpYmV4dD0iJGxpYmV4dCIKLSsKLSsjIFNoYXJlZCBsaWJyYXJ5IHN1ZmZpeCAobm9ybWFsbHkgInNvIikuCi0rc2hsaWJleHQ9IiRzaGxpYmV4dCIKLSsKLSsjIEZsYWcgdG8gaGFyZGNvZGUgXCRsaWJkaXIgaW50byBhIGJpbmFyeSBkdXJpbmcgbGlua2luZy4KLSsjIFRoaXMgbXVzdCB3b3JrIGV2ZW4gaWYgXCRsaWJkaXIgZG9lcyBub3QgZXhpc3QuCi0raGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0iJGVzY2FwZWRfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIKLSsKLSsjIFdoZXRoZXIgd2UgbmVlZCBhIHNpbmdsZSAtcnBhdGggZmxhZyB3aXRoIGEgc2VwYXJhdGVkIGFyZ3VtZW50LgotK2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9IiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIgotKwotKyMgU2V0IHRvIHllcyBpZiB1c2luZyBESVIvbGliTkFNRS5zbyBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMgRElSIGludG8gdGhlCi0rIyByZXN1bHRpbmcgYmluYXJ5LgotK2hhcmRjb2RlX2RpcmVjdD0iJGhhcmRjb2RlX2RpcmVjdCIKLSsKLSsjIFNldCB0byB5ZXMgaWYgdXNpbmcgdGhlIC1MRElSIGZsYWcgZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvIHRoZQotKyMgcmVzdWx0aW5nIGJpbmFyeS4KLStoYXJkY29kZV9taW51c19MPSIkaGFyZGNvZGVfbWludXNfTCIKLSsKLStFT0YKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvY29uZmlndXJlLmluCTIwMDQtMDktMTIgMTQ6Mzk6NTUuMTYxNzA2NDg4IC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9jb25maWd1cmUuaW4JMjAwNC0wOS0xMiAxNDo0MDozNS44MTY1MjYwMTYgLTA0MDAKLUBAIC0yNjAsMTEgKzI2MCwxMCBAQAotIEFNX0dOVV9HRVRURVhUCi0gCi0gQUNfREVGSU5FX1VOUVVPVEVEKExPQ0FMRURJUiwiJHByZWZpeC8kREFUQURJUk5BTUUiKQotLUFDX0xJTktfRklMRVMoJG5sc19jdl9oZWFkZXJfbGliZ3QsICRubHNfY3ZfaGVhZGVyX2ludGwpCi0gCi0tQUNfT1VUUFVUKFtNYWtlZmlsZSBpbnRsL01ha2VmaWxlIGxpYi9NYWtlZmlsZSB0ZXN0c3VpdGUvTWFrZWZpbGUgXAotK0FDX09VVFBVVChbTWFrZWZpbGUgaW50bC9NYWtlZmlsZSBsaWIvTWFrZWZpbGUgdGVzdHN1aXRlL01ha2VmaWxlICBtNC9NYWtlZmlsZSBcCi0gbWFuL01ha2VmaWxlIHBvL01ha2VmaWxlLmluIHNyYy9NYWtlZmlsZSBkZWJpYW4vcnVsZXMgU3BlY2ZpbGUgc3lzdHlwZSBcCi0gc3JjL2xyenN6YnVnXSwKLS1bc2VkIC1lICIvUE9URklMRVMgPS9yIHBvL1BPVEZJTEVTIiBwby9NYWtlZmlsZS5pbiA+IHBvL01ha2VmaWxlOyAKLStbCi0gY2htb2QgK3ggZGViaWFuL3J1bGVzOwotIHRlc3QgLXogIiRDT05GSUdfSEVBREVSUyIgfHwgZWNobyB0aW1lc3RhbXAgPiBzdGFtcC1oXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9iaW5kdGV4dGRvbS5jCTE5OTgtMDQtMjYgMDk6MjI6MzYuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2JpbmR0ZXh0ZG9tLmMJMjAwNC0wOS0xMiAxNDo0MDozNC4zNDM3NDk5MTIgLTA0MDAKLUBAIC0xLDU5ICsxLDc1IEBACi0gLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIGJpbmR0ZXh0ZG9tYWluKDMpIGZ1bmN0aW9uCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk4LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICAgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0gICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQwotLSMgaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2Vsc2UKLS0jIGlmZGVmIEhBVkVfTUFMTE9DX0gKLS0jICBpbmNsdWRlIDxtYWxsb2MuaD4KLS0jIGVsc2UKLS12b2lkIGZyZWUgKCk7Ci0tIyBlbmRpZgotLSNlbmRpZgotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotIAotLSNpZiBkZWZpbmVkIEhBVkVfU1RSSU5HX0ggfHwgZGVmaW5lZCBfTElCQwotLSMgaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2lmZGVmIF9MSUJDCi0rIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2Vsc2UKLS0jIGluY2x1ZGUgPHN0cmluZ3MuaD4KLS0jIGlmbmRlZiBtZW1jcHkKLS0jICBkZWZpbmUgbWVtY3B5KERzdCwgU3JjLCBOdW0pIGJjb3B5IChTcmMsIERzdCwgTnVtKQotLSMgZW5kaWYKLSsjIGluY2x1ZGUgImxpYmdudWludGwuaCIKLSAjZW5kaWYKLSsjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSAKLSAjaWZkZWYgX0xJQkMKLS0jIGluY2x1ZGUgPGxpYmludGwuaD4KLSsvKiBXZSBoYXZlIHRvIGhhbmRsZSBtdWx0aS10aHJlYWRlZCBhcHBsaWNhdGlvbnMuICAqLwotKyMgaW5jbHVkZSA8Yml0cy9saWJjLWxvY2suaD4KLSAjZWxzZQotLSMgaW5jbHVkZSAibGliZ2V0dGV4dC5oIgotKy8qIFByb3ZpZGUgZHVtbXkgaW1wbGVtZW50YXRpb24gaWYgdGhpcyBpcyBvdXRzaWRlIGdsaWJjLiAgKi8KLSsjIGRlZmluZSBfX2xpYmNfcndsb2NrX2RlZmluZShDTEFTUywgTkFNRSkKLSsjIGRlZmluZSBfX2xpYmNfcndsb2NrX3dybG9jayhOQU1FKQotKyMgZGVmaW5lIF9fbGliY19yd2xvY2tfdW5sb2NrKE5BTUUpCi0rI2VuZGlmCi0rCi0rLyogVGhlIGludGVybmFsIHZhcmlhYmxlcyBpbiB0aGUgc3RhbmRhbG9uZSBsaWJpbnRsLmEgbXVzdCBoYXZlIGRpZmZlcmVudAotKyAgIG5hbWVzIHRoYW4gdGhlIGludGVybmFsIHZhcmlhYmxlcyBpbiBHTlUgbGliYywgb3RoZXJ3aXNlIHByb2dyYW1zCi0rICAgdXNpbmcgbGliaW50bC5hIGNhbm5vdCBiZSBsaW5rZWQgc3RhdGljYWxseS4gICovCi0rI2lmICFkZWZpbmVkIF9MSUJDCi0rIyBkZWZpbmUgX25sX2RlZmF1bHRfZGlybmFtZSBsaWJpbnRsX25sX2RlZmF1bHRfZGlybmFtZQotKyMgZGVmaW5lIF9ubF9kb21haW5fYmluZGluZ3MgbGliaW50bF9ubF9kb21haW5fYmluZGluZ3MKLSsjZW5kaWYKLSsKLSsvKiBTb21lIGNvbXBpbGVycywgbGlrZSBTdW5PUzQgY2MsIGRvbid0IGhhdmUgb2Zmc2V0b2YgaW4gPHN0ZGRlZi5oPi4gICovCi0rI2lmbmRlZiBvZmZzZXRvZgotKyMgZGVmaW5lIG9mZnNldG9mKHR5cGUsaWRlbnQpICgoc2l6ZV90KSYoKCh0eXBlKikwKS0+aWRlbnQpKQotICNlbmRpZgotLSNpbmNsdWRlICJnZXR0ZXh0LmgiCi0tI2luY2x1ZGUgImdldHRleHRQLmgiCi0gCi0gLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotIAotIC8qIENvbnRhaW5zIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBtZXNzYWdlIGNhdGFsb2dzLiAgKi8KLSBleHRlcm4gY29uc3QgY2hhciBfbmxfZGVmYXVsdF9kaXJuYW1lW107Ci0rI2lmZGVmIF9MSUJDCi0rZXh0ZXJuIGNvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGlybmFtZV9pbnRlcm5hbFtdIGF0dHJpYnV0ZV9oaWRkZW47Ci0rI2Vsc2UKLSsjIGRlZmluZSBJTlRVU0UobmFtZSkgbmFtZQotKyNlbmRpZgotIAotIC8qIExpc3Qgd2l0aCBiaW5kaW5ncyBvZiBzcGVjaWZpYyBkb21haW5zLiAgKi8KLSBleHRlcm4gc3RydWN0IGJpbmRpbmcgKl9ubF9kb21haW5fYmluZGluZ3M7Ci0gCi0rLyogTG9jayB2YXJpYWJsZSB0byBwcm90ZWN0IHRoZSBnbG9iYWwgZGF0YSBpbiB0aGUgZ2V0dGV4dCBpbXBsZW1lbnRhdGlvbi4gICovCi0rX19saWJjX3J3bG9ja19kZWZpbmUgKGV4dGVybiwgX25sX3N0YXRlX2xvY2sgYXR0cmlidXRlX2hpZGRlbikKLSsKLSAKLSAvKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCi0gICAgd2l0aCBleGlzdGluZyBuYW1lcyBhbmQgdGhleSBzaG91bGQgZm9sbG93IEFOU0kgQy4gIEJ1dCB0aGlzIHNvdXJjZQotQEAgLTYxLDIzICs3Nyw0MSBAQAotICAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCi0gI2lmZGVmIF9MSUJDCi0gIyBkZWZpbmUgQklORFRFWFRET01BSU4gX19iaW5kdGV4dGRvbWFpbgotLSMgZGVmaW5lIHN0cmR1cChzdHIpIF9fc3RyZHVwIChzdHIpCi0rIyBkZWZpbmUgQklORF9URVhURE9NQUlOX0NPREVTRVQgX19iaW5kX3RleHRkb21haW5fY29kZXNldAotKyMgaWZuZGVmIHN0cmR1cAotKyMgIGRlZmluZSBzdHJkdXAoc3RyKSBfX3N0cmR1cCAoc3RyKQotKyMgZW5kaWYKLSAjZWxzZQotLSMgZGVmaW5lIEJJTkRURVhURE9NQUlOIGJpbmR0ZXh0ZG9tYWluX18KLSsjIGRlZmluZSBCSU5EVEVYVERPTUFJTiBsaWJpbnRsX2JpbmR0ZXh0ZG9tYWluCi0rIyBkZWZpbmUgQklORF9URVhURE9NQUlOX0NPREVTRVQgbGliaW50bF9iaW5kX3RleHRkb21haW5fY29kZXNldAotICNlbmRpZgotIAotLS8qIFNwZWNpZnkgdGhhdCB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgd2lsbCBiZSBmb3VuZAotLSAgIGluIERJUk5BTUUgcmF0aGVyIHRoYW4gaW4gdGhlIHN5c3RlbSBsb2NhbGUgZGF0YSBiYXNlLiAgKi8KLS1jaGFyICoKLS1CSU5EVEVYVERPTUFJTiAoZG9tYWlubmFtZSwgZGlybmFtZSkKLS0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7Ci0tICAgICBjb25zdCBjaGFyICpkaXJuYW1lOwotKy8qIFNwZWNpZmllcyB0aGUgZGlyZWN0b3J5IG5hbWUgKkRJUk5BTUVQIGFuZCB0aGUgb3V0cHV0IGNvZGVzZXQgKkNPREVTRVRQCi0rICAgdG8gYmUgdXNlZCBmb3IgdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nLgotKyAgIElmICpESVJOQU1FUCBvciAqQ09ERVNFVFAgaXMgTlVMTCwgdGhlIGNvcnJlc3BvbmRpbmcgYXR0cmlidXRlIGlzIG5vdAotKyAgIG1vZGlmaWVkLCBvbmx5IHRoZSBjdXJyZW50IHZhbHVlIGlzIHJldHVybmVkLgotKyAgIElmIERJUk5BTUVQIG9yIENPREVTRVRQIGlzIE5VTEwsIHRoZSBjb3JyZXNwb25kaW5nIGF0dHJpYnV0ZSBpcyBuZWl0aGVyCi0rICAgbW9kaWZpZWQgbm9yIHJldHVybmVkLiAgKi8KLStzdGF0aWMgdm9pZAotK3NldF9iaW5kaW5nX3ZhbHVlcyAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSsJCSAgICBjb25zdCBjaGFyICoqZGlybmFtZXAsIGNvbnN0IGNoYXIgKipjb2Rlc2V0cCkKLSB7Ci0gICBzdHJ1Y3QgYmluZGluZyAqYmluZGluZzsKLSsgIGludCBtb2RpZmllZDsKLSAKLSAgIC8qIFNvbWUgc2FuaXR5IGNoZWNrcy4gICovCi0gICBpZiAoZG9tYWlubmFtZSA9PSBOVUxMIHx8IGRvbWFpbm5hbWVbMF0gPT0gJ1wwJykKLS0gICAgcmV0dXJuIE5VTEw7Ci0rICAgIHsKLSsgICAgICBpZiAoZGlybmFtZXApCi0rCSpkaXJuYW1lcCA9IE5VTEw7Ci0rICAgICAgaWYgKGNvZGVzZXRwKQotKwkqY29kZXNldHAgPSBOVUxMOwotKyAgICAgIHJldHVybjsKLSsgICAgfQotKwotKyAgX19saWJjX3J3bG9ja193cmxvY2sgKF9ubF9zdGF0ZV9sb2NrKTsKLSsKLSsgIG1vZGlmaWVkID0gMDsKLSAKLSAgIGZvciAoYmluZGluZyA9IF9ubF9kb21haW5fYmluZGluZ3M7IGJpbmRpbmcgIT0gTlVMTDsgYmluZGluZyA9IGJpbmRpbmctPm5leHQpCi0gICAgIHsKLUBAIC05Myw4MSArMTI3LDE3MyBAQAotIAl9Ci0gICAgIH0KLSAKLS0gIGlmIChkaXJuYW1lID09IE5VTEwpCi0tICAgIC8qIFRoZSBjdXJyZW50IGJpbmRpbmcgaGFzIGJlIHRvIHJldHVybmVkLiAgKi8KLS0gICAgcmV0dXJuIGJpbmRpbmcgPT0gTlVMTCA/IChjaGFyICopIF9ubF9kZWZhdWx0X2Rpcm5hbWUgOiBiaW5kaW5nLT5kaXJuYW1lOwotLQotICAgaWYgKGJpbmRpbmcgIT0gTlVMTCkKLSAgICAgewotLSAgICAgIC8qIFRoZSBkb21haW4gaXMgYWxyZWFkeSBib3VuZC4gIElmIHRoZSBuZXcgdmFsdWUgYW5kIHRoZSBvbGQKLS0JIG9uZSBhcmUgZXF1YWwgd2Ugc2ltcGx5IGRvIG5vdGhpbmcuICBPdGhlcndpc2UgcmVwbGFjZSB0aGUKLS0JIG9sZCBiaW5kaW5nLiAgKi8KLS0gICAgICBpZiAoc3RyY21wIChkaXJuYW1lLCBiaW5kaW5nLT5kaXJuYW1lKSAhPSAwKQotKyAgICAgIGlmIChkaXJuYW1lcCkKLSAJewotLQkgIGNoYXIgKm5ld19kaXJuYW1lOwotKwkgIGNvbnN0IGNoYXIgKmRpcm5hbWUgPSAqZGlybmFtZXA7Ci0gCi0tCSAgaWYgKHN0cmNtcCAoZGlybmFtZSwgX25sX2RlZmF1bHRfZGlybmFtZSkgPT0gMCkKLS0JICAgIG5ld19kaXJuYW1lID0gKGNoYXIgKikgX25sX2RlZmF1bHRfZGlybmFtZTsKLSsJICBpZiAoZGlybmFtZSA9PSBOVUxMKQotKwkgICAgLyogVGhlIGN1cnJlbnQgYmluZGluZyBoYXMgYmUgdG8gcmV0dXJuZWQuICAqLwotKwkgICAgKmRpcm5hbWVwID0gYmluZGluZy0+ZGlybmFtZTsKLSAJICBlbHNlCi0gCSAgICB7Ci0rCSAgICAgIC8qIFRoZSBkb21haW4gaXMgYWxyZWFkeSBib3VuZC4gIElmIHRoZSBuZXcgdmFsdWUgYW5kIHRoZSBvbGQKLSsJCSBvbmUgYXJlIGVxdWFsIHdlIHNpbXBseSBkbyBub3RoaW5nLiAgT3RoZXJ3aXNlIHJlcGxhY2UgdGhlCi0rCQkgb2xkIGJpbmRpbmcuICAqLwotKwkgICAgICBjaGFyICpyZXN1bHQgPSBiaW5kaW5nLT5kaXJuYW1lOwotKwkgICAgICBpZiAoc3RyY21wIChkaXJuYW1lLCByZXN1bHQpICE9IDApCi0rCQl7Ci0rCQkgIGlmIChzdHJjbXAgKGRpcm5hbWUsIElOVFVTRShfbmxfZGVmYXVsdF9kaXJuYW1lKSkgPT0gMCkKLSsJCSAgICByZXN1bHQgPSAoY2hhciAqKSBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSk7Ci0rCQkgIGVsc2UKLSsJCSAgICB7Ci0gI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkRVUAotLQkgICAgICBuZXdfZGlybmFtZSA9IHN0cmR1cCAoZGlybmFtZSk7Ci0tCSAgICAgIGlmIChuZXdfZGlybmFtZSA9PSBOVUxMKQotLQkJcmV0dXJuIE5VTEw7Ci0rCQkgICAgICByZXN1bHQgPSBzdHJkdXAgKGRpcm5hbWUpOwotICNlbHNlCi0tCSAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4gKGRpcm5hbWUpICsgMTsKLS0JICAgICAgbmV3X2Rpcm5hbWUgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7Ci0tCSAgICAgIGlmIChuZXdfZGlybmFtZSA9PSBOVUxMKQotLQkJcmV0dXJuIE5VTEw7Ci0tCi0tCSAgICAgIG1lbWNweSAobmV3X2Rpcm5hbWUsIGRpcm5hbWUsIGxlbik7Ci0rCQkgICAgICBzaXplX3QgbGVuID0gc3RybGVuIChkaXJuYW1lKSArIDE7Ci0rCQkgICAgICByZXN1bHQgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7Ci0rCQkgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAocmVzdWx0ICE9IE5VTEwsIDEpKQotKwkJCW1lbWNweSAocmVzdWx0LCBkaXJuYW1lLCBsZW4pOwotICNlbmRpZgotKwkJICAgIH0KLSsKLSsJCSAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHJlc3VsdCAhPSBOVUxMLCAxKSkKLSsJCSAgICB7Ci0rCQkgICAgICBpZiAoYmluZGluZy0+ZGlybmFtZSAhPSBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSkpCi0rCQkJZnJlZSAoYmluZGluZy0+ZGlybmFtZSk7Ci0rCi0rCQkgICAgICBiaW5kaW5nLT5kaXJuYW1lID0gcmVzdWx0OwotKwkJICAgICAgbW9kaWZpZWQgPSAxOwotKwkJICAgIH0KLSsJCX0KLSsJICAgICAgKmRpcm5hbWVwID0gcmVzdWx0OwotIAkgICAgfQotKwl9Ci0gCi0tCSAgaWYgKGJpbmRpbmctPmRpcm5hbWUgIT0gX25sX2RlZmF1bHRfZGlybmFtZSkKLS0JICAgIGZyZWUgKGJpbmRpbmctPmRpcm5hbWUpOwotKyAgICAgIGlmIChjb2Rlc2V0cCkKLSsJewotKwkgIGNvbnN0IGNoYXIgKmNvZGVzZXQgPSAqY29kZXNldHA7Ci0gCi0tCSAgYmluZGluZy0+ZGlybmFtZSA9IG5ld19kaXJuYW1lOwotKwkgIGlmIChjb2Rlc2V0ID09IE5VTEwpCi0rCSAgICAvKiBUaGUgY3VycmVudCBiaW5kaW5nIGhhcyBiZSB0byByZXR1cm5lZC4gICovCi0rCSAgICAqY29kZXNldHAgPSBiaW5kaW5nLT5jb2Rlc2V0OwotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgLyogVGhlIGRvbWFpbiBpcyBhbHJlYWR5IGJvdW5kLiAgSWYgdGhlIG5ldyB2YWx1ZSBhbmQgdGhlIG9sZAotKwkJIG9uZSBhcmUgZXF1YWwgd2Ugc2ltcGx5IGRvIG5vdGhpbmcuICBPdGhlcndpc2UgcmVwbGFjZSB0aGUKLSsJCSBvbGQgYmluZGluZy4gICovCi0rCSAgICAgIGNoYXIgKnJlc3VsdCA9IGJpbmRpbmctPmNvZGVzZXQ7Ci0rCSAgICAgIGlmIChyZXN1bHQgPT0gTlVMTCB8fCBzdHJjbXAgKGNvZGVzZXQsIHJlc3VsdCkgIT0gMCkKLSsJCXsKLSsjaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfU1RSRFVQCi0rCQkgIHJlc3VsdCA9IHN0cmR1cCAoY29kZXNldCk7Ci0rI2Vsc2UKLSsJCSAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoY29kZXNldCkgKyAxOwotKwkJICByZXN1bHQgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7Ci0rCQkgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChyZXN1bHQgIT0gTlVMTCwgMSkpCi0rCQkgICAgbWVtY3B5IChyZXN1bHQsIGNvZGVzZXQsIGxlbik7Ci0rI2VuZGlmCi0rCi0rCQkgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChyZXN1bHQgIT0gTlVMTCwgMSkpCi0rCQkgICAgewotKwkJICAgICAgaWYgKGJpbmRpbmctPmNvZGVzZXQgIT0gTlVMTCkKLSsJCQlmcmVlIChiaW5kaW5nLT5jb2Rlc2V0KTsKLSsKLSsJCSAgICAgIGJpbmRpbmctPmNvZGVzZXQgPSByZXN1bHQ7Ci0rCQkgICAgICBiaW5kaW5nLT5jb2Rlc2V0X2NudHIrKzsKLSsJCSAgICAgIG1vZGlmaWVkID0gMTsKLSsJCSAgICB9Ci0rCQl9Ci0rCSAgICAgICpjb2Rlc2V0cCA9IHJlc3VsdDsKLSsJICAgIH0KLSAJfQotICAgICB9Ci0rICBlbHNlIGlmICgoZGlybmFtZXAgPT0gTlVMTCB8fCAqZGlybmFtZXAgPT0gTlVMTCkKLSsJICAgJiYgKGNvZGVzZXRwID09IE5VTEwgfHwgKmNvZGVzZXRwID09IE5VTEwpKQotKyAgICB7Ci0rICAgICAgLyogU2ltcGx5IHJldHVybiB0aGUgZGVmYXVsdCB2YWx1ZXMuICAqLwotKyAgICAgIGlmIChkaXJuYW1lcCkKLSsJKmRpcm5hbWVwID0gSU5UVVNFKF9ubF9kZWZhdWx0X2Rpcm5hbWUpOwotKyAgICAgIGlmIChjb2Rlc2V0cCkKLSsJKmNvZGVzZXRwID0gTlVMTDsKLSsgICAgfQotICAgZWxzZQotICAgICB7Ci0gICAgICAgLyogV2UgaGF2ZSB0byBjcmVhdGUgYSBuZXcgYmluZGluZy4gICovCi0tICAgICAgc2l6ZV90IGxlbjsKLSsgICAgICBzaXplX3QgbGVuID0gc3RybGVuIChkb21haW5uYW1lKSArIDE7Ci0gICAgICAgc3RydWN0IGJpbmRpbmcgKm5ld19iaW5kaW5nID0KLS0JKHN0cnVjdCBiaW5kaW5nICopIG1hbGxvYyAoc2l6ZW9mICgqbmV3X2JpbmRpbmcpKTsKLSsJKHN0cnVjdCBiaW5kaW5nICopIG1hbGxvYyAob2Zmc2V0b2YgKHN0cnVjdCBiaW5kaW5nLCBkb21haW5uYW1lKSArIGxlbik7Ci0gCi0tICAgICAgaWYgKG5ld19iaW5kaW5nID09IE5VTEwpCi0tCXJldHVybiBOVUxMOwotKyAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChuZXdfYmluZGluZyA9PSBOVUxMLCAwKSkKLSsJZ290byBmYWlsZWQ7Ci0gCi0rICAgICAgbWVtY3B5IChuZXdfYmluZGluZy0+ZG9tYWlubmFtZSwgZG9tYWlubmFtZSwgbGVuKTsKLSsKLSsgICAgICBpZiAoZGlybmFtZXApCi0rCXsKLSsJICBjb25zdCBjaGFyICpkaXJuYW1lID0gKmRpcm5hbWVwOwotKwotKwkgIGlmIChkaXJuYW1lID09IE5VTEwpCi0rCSAgICAvKiBUaGUgZGVmYXVsdCB2YWx1ZS4gICovCi0rCSAgICBkaXJuYW1lID0gSU5UVVNFKF9ubF9kZWZhdWx0X2Rpcm5hbWUpOwotKwkgIGVsc2UKLSsJICAgIHsKLSsJICAgICAgaWYgKHN0cmNtcCAoZGlybmFtZSwgSU5UVVNFKF9ubF9kZWZhdWx0X2Rpcm5hbWUpKSA9PSAwKQotKwkJZGlybmFtZSA9IElOVFVTRShfbmxfZGVmYXVsdF9kaXJuYW1lKTsKLSsJICAgICAgZWxzZQotKwkJewotKwkJICBjaGFyICpyZXN1bHQ7Ci0gI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkRVUAotLSAgICAgIG5ld19iaW5kaW5nLT5kb21haW5uYW1lID0gc3RyZHVwIChkb21haW5uYW1lKTsKLS0gICAgICBpZiAobmV3X2JpbmRpbmctPmRvbWFpbm5hbWUgPT0gTlVMTCkKLS0JcmV0dXJuIE5VTEw7Ci0rCQkgIHJlc3VsdCA9IHN0cmR1cCAoZGlybmFtZSk7Ci0rCQkgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChyZXN1bHQgPT0gTlVMTCwgMCkpCi0rCQkgICAgZ290byBmYWlsZWRfZGlybmFtZTsKLSAjZWxzZQotLSAgICAgIGxlbiA9IHN0cmxlbiAoZG9tYWlubmFtZSkgKyAxOwotLSAgICAgIG5ld19iaW5kaW5nLT5kb21haW5uYW1lID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOwotLSAgICAgIGlmIChuZXdfYmluZGluZy0+ZG9tYWlubmFtZSA9PSBOVUxMKQotLQlyZXR1cm4gTlVMTDsKLS0gICAgICBtZW1jcHkgKG5ld19iaW5kaW5nLT5kb21haW5uYW1lLCBkb21haW5uYW1lLCBsZW4pOwotKwkJICBzaXplX3QgbGVuID0gc3RybGVuIChkaXJuYW1lKSArIDE7Ci0rCQkgIHJlc3VsdCA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKLSsJCSAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHJlc3VsdCA9PSBOVUxMLCAwKSkKLSsJCSAgICBnb3RvIGZhaWxlZF9kaXJuYW1lOwotKwkJICBtZW1jcHkgKHJlc3VsdCwgZGlybmFtZSwgbGVuKTsKLSAjZW5kaWYKLS0KLS0gICAgICBpZiAoc3RyY21wIChkaXJuYW1lLCBfbmxfZGVmYXVsdF9kaXJuYW1lKSA9PSAwKQotLQluZXdfYmluZGluZy0+ZGlybmFtZSA9IChjaGFyICopIF9ubF9kZWZhdWx0X2Rpcm5hbWU7Ci0rCQkgIGRpcm5hbWUgPSByZXN1bHQ7Ci0rCQl9Ci0rCSAgICB9Ci0rCSAgKmRpcm5hbWVwID0gZGlybmFtZTsKLSsJICBuZXdfYmluZGluZy0+ZGlybmFtZSA9IChjaGFyICopIGRpcm5hbWU7Ci0rCX0KLSAgICAgICBlbHNlCi0rCS8qIFRoZSBkZWZhdWx0IHZhbHVlLiAgKi8KLSsJbmV3X2JpbmRpbmctPmRpcm5hbWUgPSAoY2hhciAqKSBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSk7Ci0rCi0rICAgICAgbmV3X2JpbmRpbmctPmNvZGVzZXRfY250ciA9IDA7Ci0rCi0rICAgICAgaWYgKGNvZGVzZXRwKQotIAl7Ci0rCSAgY29uc3QgY2hhciAqY29kZXNldCA9ICpjb2Rlc2V0cDsKLSsKLSsJICBpZiAoY29kZXNldCAhPSBOVUxMKQotKwkgICAgewotKwkgICAgICBjaGFyICpyZXN1bHQ7Ci0rCi0gI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkRVUAotLQkgIG5ld19iaW5kaW5nLT5kaXJuYW1lID0gc3RyZHVwIChkaXJuYW1lKTsKLS0JICBpZiAobmV3X2JpbmRpbmctPmRpcm5hbWUgPT0gTlVMTCkKLS0JICAgIHJldHVybiBOVUxMOwotKwkgICAgICByZXN1bHQgPSBzdHJkdXAgKGNvZGVzZXQpOwotKwkgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAocmVzdWx0ID09IE5VTEwsIDApKQotKwkJZ290byBmYWlsZWRfY29kZXNldDsKLSAjZWxzZQotLQkgIGxlbiA9IHN0cmxlbiAoZGlybmFtZSkgKyAxOwotLQkgIG5ld19iaW5kaW5nLT5kaXJuYW1lID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOwotLQkgIGlmIChuZXdfYmluZGluZy0+ZGlybmFtZSA9PSBOVUxMKQotLQkgICAgcmV0dXJuIE5VTEw7Ci0tCSAgbWVtY3B5IChuZXdfYmluZGluZy0+ZGlybmFtZSwgZGlybmFtZSwgbGVuKTsKLSsJICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoY29kZXNldCkgKyAxOwotKwkgICAgICByZXN1bHQgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7Ci0rCSAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChyZXN1bHQgPT0gTlVMTCwgMCkpCi0rCQlnb3RvIGZhaWxlZF9jb2Rlc2V0OwotKwkgICAgICBtZW1jcHkgKHJlc3VsdCwgY29kZXNldCwgbGVuKTsKLSAjZW5kaWYKLSsJICAgICAgY29kZXNldCA9IHJlc3VsdDsKLSsJICAgICAgbmV3X2JpbmRpbmctPmNvZGVzZXRfY250cisrOwotKwkgICAgfQotKwkgICpjb2Rlc2V0cCA9IGNvZGVzZXQ7Ci0rCSAgbmV3X2JpbmRpbmctPmNvZGVzZXQgPSAoY2hhciAqKSBjb2Rlc2V0OwotIAl9Ci0rICAgICAgZWxzZQotKwluZXdfYmluZGluZy0+Y29kZXNldCA9IE5VTEw7Ci0gCi0gICAgICAgLyogTm93IGVucXVldWUgaXQuICAqLwotICAgICAgIGlmIChfbmxfZG9tYWluX2JpbmRpbmdzID09IE5VTEwKLUBAIC0xODcsMTMgKzMxMyw1MSBAQAotIAkgIGJpbmRpbmctPm5leHQgPSBuZXdfYmluZGluZzsKLSAJfQotIAotLSAgICAgIGJpbmRpbmcgPSBuZXdfYmluZGluZzsKLSsgICAgICBtb2RpZmllZCA9IDE7Ci0rCi0rICAgICAgLyogSGVyZSB3ZSBkZWFsIHdpdGggbWVtb3J5IGFsbG9jYXRpb24gZmFpbHVyZXMuICAqLwotKyAgICAgIGlmICgwKQotKwl7Ci0rCWZhaWxlZF9jb2Rlc2V0OgotKwkgIGlmIChuZXdfYmluZGluZy0+ZGlybmFtZSAhPSBJTlRVU0UoX25sX2RlZmF1bHRfZGlybmFtZSkpCi0rCSAgICBmcmVlIChuZXdfYmluZGluZy0+ZGlybmFtZSk7Ci0rCWZhaWxlZF9kaXJuYW1lOgotKwkgIGZyZWUgKG5ld19iaW5kaW5nKTsKLSsJZmFpbGVkOgotKwkgIGlmIChkaXJuYW1lcCkKLSsJICAgICpkaXJuYW1lcCA9IE5VTEw7Ci0rCSAgaWYgKGNvZGVzZXRwKQotKwkgICAgKmNvZGVzZXRwID0gTlVMTDsKLSsJfQotICAgICB9Ci0gCi0tICByZXR1cm4gYmluZGluZy0+ZGlybmFtZTsKLSsgIC8qIElmIHdlIG1vZGlmaWVkIGFueSBiaW5kaW5nLCB3ZSBmbHVzaCB0aGUgY2FjaGVzLiAgKi8KLSsgIGlmIChtb2RpZmllZCkKLSsgICAgKytfbmxfbXNnX2NhdF9jbnRyOwotKwotKyAgX19saWJjX3J3bG9ja191bmxvY2sgKF9ubF9zdGF0ZV9sb2NrKTsKLSt9Ci0rCi0rLyogU3BlY2lmeSB0aGF0IHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyB3aWxsIGJlIGZvdW5kCi0rICAgaW4gRElSTkFNRSByYXRoZXIgdGhhbiBpbiB0aGUgc3lzdGVtIGxvY2FsZSBkYXRhIGJhc2UuICAqLwotK2NoYXIgKgotK0JJTkRURVhURE9NQUlOIChjb25zdCBjaGFyICpkb21haW5uYW1lLCBjb25zdCBjaGFyICpkaXJuYW1lKQotK3sKLSsgIHNldF9iaW5kaW5nX3ZhbHVlcyAoZG9tYWlubmFtZSwgJmRpcm5hbWUsIE5VTEwpOwotKyAgcmV0dXJuIChjaGFyICopIGRpcm5hbWU7Ci0rfQotKwotKy8qIFNwZWNpZnkgdGhlIGNoYXJhY3RlciBlbmNvZGluZyBpbiB3aGljaCB0aGUgbWVzc2FnZXMgZnJvbSB0aGUKLSsgICBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyB3aWxsIGJlIHJldHVybmVkLiAgKi8KLStjaGFyICoKLStCSU5EX1RFWFRET01BSU5fQ09ERVNFVCAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwgY29uc3QgY2hhciAqY29kZXNldCkKLSt7Ci0rICBzZXRfYmluZGluZ192YWx1ZXMgKGRvbWFpbm5hbWUsIE5VTEwsICZjb2Rlc2V0KTsKLSsgIHJldHVybiAoY2hhciAqKSBjb2Rlc2V0OwotIH0KLSAKLSAjaWZkZWYgX0xJQkMKLS0vKiBBbGlhcyBmb3IgZnVuY3Rpb24gbmFtZSBpbiBHTlUgQyBMaWJyYXJ5LiAgKi8KLSsvKiBBbGlhc2VzIGZvciBmdW5jdGlvbiBuYW1lcyBpbiBHTlUgQyBMaWJyYXJ5LiAgKi8KLSB3ZWFrX2FsaWFzIChfX2JpbmR0ZXh0ZG9tYWluLCBiaW5kdGV4dGRvbWFpbik7Ci0rd2Vha19hbGlhcyAoX19iaW5kX3RleHRkb21haW5fY29kZXNldCwgYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQpOwotICNlbmRpZgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2NhdC1jb21wYXQuYwkxOTk4LTA0LTI2IDA5OjIyOjM3LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9jYXQtY29tcGF0LmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLUBAIC0xLDI2MiArMCwwIEBACi0tLyogQ29tcGF0aWJpbGl0eSBjb2RlIGZvciBnZXR0ZXh0LXVzaW5nLWNhdGdldHMgaW50ZXJmYWNlLgotLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0KLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLSAgIGFueSBsYXRlciB2ZXJzaW9uLgotLQotLSAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotLQotLSNpZmRlZiBIQVZFX0NPTkZJR19ICi0tIyBpbmNsdWRlIDxjb25maWcuaD4KLS0jZW5kaWYKLS0KLS0jaW5jbHVkZSA8c3RkaW8uaD4KLS0KLS0jaWZkZWYgU1REQ19IRUFERVJTCi0tIyBpbmNsdWRlIDxzdGRsaWIuaD4KLS0jIGluY2x1ZGUgPHN0cmluZy5oPgotLSNlbHNlCi0tY2hhciAqZ2V0ZW52ICgpOwotLSMgaWZkZWYgSEFWRV9NQUxMT0NfSAotLSMgIGluY2x1ZGUgPG1hbGxvYy5oPgotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0jaWZkZWYgSEFWRV9OTF9UWVBFU19ICi0tIyBpbmNsdWRlIDxubF90eXBlcy5oPgotLSNlbmRpZgotLQotLSNpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCi0tCi0tLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotLQotLS8qIFhQRzMgZGVmaW5lcyB0aGUgcmVzdWx0IG9mIGBzZXRsb2NhbGUgKGNhdGVnb3J5LCBOVUxMKScgYXM6Ci0tICAgYGBEaXJlY3RzIGBzZXRsb2NhbGUoKScgdG8gcXVlcnkgYGNhdGVnb3J5JyBhbmQgcmV0dXJuIHRoZSBjdXJyZW50Ci0tICAgICBzZXR0aW5nIG9mIGBsb2NhbCcuJycKLS0gICBIb3dldmVyIGl0IGRvZXMgbm90IHNwZWNpZnkgdGhlIGV4YWN0IGZvcm1hdC4gIEFuZCBldmVuIHdvcnNlOiBQT1NJWAotLSAgIGRlZmluZXMgdGhpcyBub3QgYXQgYWxsLiAgU28gd2UgY2FuIHVzZSB0aGlzIGZlYXR1cmUgb25seSBvbiBzZWxlY3RlZAotLSAgIHN5c3RlbSAoZS5nLiB0aG9zZSB1c2luZyBHTlUgQyBMaWJyYXJ5KS4gICovCi0tI2lmZGVmIF9MSUJDCi0tIyBkZWZpbmUgSEFWRV9MT0NBTEVfTlVMTAotLSNlbmRpZgotLQotLS8qIFRoZSBjYXRhbG9nIGRlc2NyaXB0b3IuICAqLwotLXN0YXRpYyBubF9jYXRkIGNhdGFsb2cgPSAobmxfY2F0ZCkgLTE7Ci0tCi0tLyogTmFtZSBvZiB0aGUgZGVmYXVsdCBjYXRhbG9nLiAgKi8KLS1zdGF0aWMgY29uc3QgY2hhciBkZWZhdWx0X2NhdGFsb2dfbmFtZVtdID0gIm1lc3NhZ2VzIjsKLS0KLS0vKiBOYW1lIG9mIGN1cnJlbnRseSB1c2VkIGNhdGFsb2cuICAqLwotLXN0YXRpYyBjb25zdCBjaGFyICpjYXRhbG9nX25hbWUgPSBkZWZhdWx0X2NhdGFsb2dfbmFtZTsKLS0KLS0vKiBHZXQgSUQgZm9yIGdpdmVuIHN0cmluZy4gIElmIG5vdCBmb3VuZCByZXR1cm4gLTEuICAqLwotLXN0YXRpYyBpbnQgbXNnX3RvX2NhdF9pZCBQQVJBTVMgKChjb25zdCBjaGFyICptc2cpKTsKLS0KLS0vKiBTdWJzdGl0dXRpb24gZm9yIHN5c3RlbXMgbGFja2luZyB0aGlzIGZ1bmN0aW9uIGluIHRoZWlyIEMgbGlicmFyeS4gICovCi0tI2lmICFfTElCQyAmJiAhSEFWRV9TVFBDUFkKLS1zdGF0aWMgY2hhciAqc3RwY3B5IFBBUkFNUyAoKGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYykpOwotLSNlbmRpZgotLQotLQotLS8qIFNldCBjdXJyZW50bHkgdXNlZCBkb21haW4vY2F0YWxvZy4gICovCi0tY2hhciAqCi0tdGV4dGRvbWFpbiAoZG9tYWlubmFtZSkKLS0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7Ci0tewotLSAgbmxfY2F0ZCBuZXdfY2F0YWxvZzsKLS0gIGNoYXIgKm5ld19uYW1lOwotLSAgc2l6ZV90IG5ld19uYW1lX2xlbjsKLS0gIGNoYXIgKmxhbmc7Ci0tCi0tI2lmIGRlZmluZWQgSEFWRV9TRVRMT0NBTEUgJiYgZGVmaW5lZCBIQVZFX0xDX01FU1NBR0VTIFwKLS0gICAgJiYgZGVmaW5lZCBIQVZFX0xPQ0FMRV9OVUxMCi0tICBsYW5nID0gc2V0bG9jYWxlIChMQ19NRVNTQUdFUywgTlVMTCk7Ci0tI2Vsc2UKLS0gIGxhbmcgPSBnZXRlbnYgKCJMQ19BTEwiKTsKLS0gIGlmIChsYW5nID09IE5VTEwgfHwgbGFuZ1swXSA9PSAnXDAnKQotLSAgICB7Ci0tICAgICAgbGFuZyA9IGdldGVudiAoIkxDX01FU1NBR0VTIik7Ci0tICAgICAgaWYgKGxhbmcgPT0gTlVMTCB8fCBsYW5nWzBdID09ICdcMCcpCi0tCWxhbmcgPSBnZXRlbnYgKCJMQU5HIik7Ci0tICAgIH0KLS0jZW5kaWYKLS0gIGlmIChsYW5nID09IE5VTEwgfHwgbGFuZ1swXSA9PSAnXDAnKQotLSAgICBsYW5nID0gIkMiOwotLQotLSAgLyogU2VlIHdoZXRoZXIgbmFtZSBvZiBjdXJyZW50bHkgdXNlZCBkb21haW4gaXMgYXNrZWQuICAqLwotLSAgaWYgKGRvbWFpbm5hbWUgPT0gTlVMTCkKLS0gICAgcmV0dXJuIChjaGFyICopIGNhdGFsb2dfbmFtZTsKLS0KLS0gIGlmIChkb21haW5uYW1lWzBdID09ICdcMCcpCi0tICAgIGRvbWFpbm5hbWUgPSBkZWZhdWx0X2NhdGFsb2dfbmFtZTsKLS0KLS0gIC8qIENvbXB1dGUgbGVuZ3RoIG9mIGFkZGVkIHBhdGggZWxlbWVudC4gICovCi0tICBuZXdfbmFtZV9sZW4gPSBzaXplb2YgKExPQ0FMRURJUikgLSAxICsgMSArIHN0cmxlbiAobGFuZykKLS0JCSArIHNpemVvZiAoIi9MQ19NRVNTQUdFUy8iKSAtIDEgKyBzaXplb2YgKFBBQ0tBR0UpIC0gMQotLQkJICsgc2l6ZW9mICgiLmNhdCIpOwotLQotLSAgbmV3X25hbWUgPSAoY2hhciAqKSBtYWxsb2MgKG5ld19uYW1lX2xlbik7Ci0tICBpZiAobmV3X25hbWUgPT0gTlVMTCkKLS0gICAgcmV0dXJuIE5VTEw7Ci0tCi0tICBzdHJjcHkgKG5ld19uYW1lLCBQQUNLQUdFKTsKLS0gIG5ld19jYXRhbG9nID0gY2F0b3BlbiAobmV3X25hbWUsIDApOwotLQotLSAgaWYgKG5ld19jYXRhbG9nID09IChubF9jYXRkKSAtMSkKLS0gICAgewotLSAgICAgIC8qIE5MU1BBVEggc2VhcmNoIGRpZG4ndCB3b3JrLCB0cnkgYWJzb2x1dGUgcGF0aCAqLwotLSAgICAgIHNwcmludGYgKG5ld19uYW1lLCAiJXMvJXMvTENfTUVTU0FHRVMvJXMuY2F0IiwgTE9DQUxFRElSLCBsYW5nLAotLQkgICAgICAgUEFDS0FHRSk7Ci0tICAgICAgbmV3X2NhdGFsb2cgPSBjYXRvcGVuIChuZXdfbmFtZSwgMCk7Ci0tCi0tICAgICAgaWYgKG5ld19jYXRhbG9nID09IChubF9jYXRkKSAtMSkKLS0JewotLQkgIGZyZWUgKG5ld19uYW1lKTsKLS0JICByZXR1cm4gKGNoYXIgKikgY2F0YWxvZ19uYW1lOwotLQl9Ci0tICAgIH0KLS0KLS0gIC8qIENsb3NlIG9sZCBjYXRhbG9nLiAgKi8KLS0gIGlmIChjYXRhbG9nICE9IChubF9jYXRkKSAtMSkKLS0gICAgY2F0Y2xvc2UgKGNhdGFsb2cpOwotLSAgaWYgKGNhdGFsb2dfbmFtZSAhPSBkZWZhdWx0X2NhdGFsb2dfbmFtZSkKLS0gICAgZnJlZSAoKGNoYXIgKikgY2F0YWxvZ19uYW1lKTsKLS0KLS0gIGNhdGFsb2cgPSBuZXdfY2F0YWxvZzsKLS0gIGNhdGFsb2dfbmFtZSA9IG5ld19uYW1lOwotLQotLSAgcmV0dXJuIChjaGFyICopIGNhdGFsb2dfbmFtZTsKLS19Ci0tCi0tY2hhciAqCi0tYmluZHRleHRkb21haW4gKGRvbWFpbm5hbWUsIGRpcm5hbWUpCi0tICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOwotLSAgICAgY29uc3QgY2hhciAqZGlybmFtZTsKLS17Ci0tI2lmIEhBVkVfU0VURU5WIHx8IEhBVkVfUFVURU5WCi0tICBjaGFyICpvbGRfdmFsLCAqbmV3X3ZhbCwgKmNwOwotLSAgc2l6ZV90IG5ld192YWxfbGVuOwotLQotLSAgLyogVGhpcyBkb2VzIG5vdCBtYWtlIG11Y2ggc2Vuc2UgaGVyZSBidXQgdG8gYmUgY29tcGF0aWJsZSBkbyBpdC4gICovCi0tICBpZiAoZG9tYWlubmFtZSA9PSBOVUxMKQotLSAgICByZXR1cm4gTlVMTDsKLS0KLS0gIC8qIENvbXB1dGUgbGVuZ3RoIG9mIGFkZGVkIHBhdGggZWxlbWVudC4gIElmIHdlIHVzZSBzZXRlbnYgd2UgZG9uJ3QgbmVlZAotLSAgICAgdGhlIGZpcnN0IGJ5dHMgZm9yIE5MU1BBVEg9LCBidXQgd2h5IGNvbXBsaWNhdGUgdGhlIGNvZGUgZm9yIHRoaXMKLS0gICAgIHBlYW51dHMuICAqLwotLSAgbmV3X3ZhbF9sZW4gPSBzaXplb2YgKCJOTFNQQVRIPSIpIC0gMSArIHN0cmxlbiAoZGlybmFtZSkKLS0JCSsgc2l6ZW9mICgiLyVML0xDX01FU1NBR0VTLyVOLmNhdCIpOwotLQotLSAgb2xkX3ZhbCA9IGdldGVudiAoIk5MU1BBVEgiKTsKLS0gIGlmIChvbGRfdmFsID09IE5VTEwgfHwgb2xkX3ZhbFswXSA9PSAnXDAnKQotLSAgICB7Ci0tICAgICAgb2xkX3ZhbCA9IE5VTEw7Ci0tICAgICAgbmV3X3ZhbF9sZW4gKz0gMSArIHNpemVvZiAoTE9DQUxFRElSKSAtIDEKLS0JICAgICAgICAgICAgICsgc2l6ZW9mICgiLyVML0xDX01FU1NBR0VTLyVOLmNhdCIpOwotLSAgICB9Ci0tICBlbHNlCi0tICAgIG5ld192YWxfbGVuICs9IHN0cmxlbiAob2xkX3ZhbCk7Ci0tCi0tICBuZXdfdmFsID0gKGNoYXIgKikgbWFsbG9jIChuZXdfdmFsX2xlbik7Ci0tICBpZiAobmV3X3ZhbCA9PSBOVUxMKQotLSAgICByZXR1cm4gTlVMTDsKLS0KLS0jIGlmIEhBVkVfU0VURU5WCi0tICBjcCA9IG5ld192YWw7Ci0tIyBlbHNlCi0tICBjcCA9IHN0cGNweSAobmV3X3ZhbCwgIk5MU1BBVEg9Iik7Ci0tIyBlbmRpZgotLQotLSAgY3AgPSBzdHBjcHkgKGNwLCBkaXJuYW1lKTsKLS0gIGNwID0gc3RwY3B5IChjcCwgIi8lTC9MQ19NRVNTQUdFUy8lTi5jYXQ6Iik7Ci0tCi0tICBpZiAob2xkX3ZhbCA9PSBOVUxMKQotLSAgICB7Ci0tIyBpZiBfX1NURENfXwotLSAgICAgIHN0cGNweSAoY3AsIExPQ0FMRURJUiAiLyVML0xDX01FU1NBR0VTLyVOLmNhdCIpOwotLSMgZWxzZQotLQotLSAgICAgIGNwID0gc3RwY3B5IChjcCwgTE9DQUxFRElSKTsKLS0gICAgICBzdHBjcHkgKGNwLCAiLyVML0xDX01FU1NBR0VTLyVOLmNhdCIpOwotLSMgZW5kaWYKLS0gICAgfQotLSAgZWxzZQotLSAgICBzdHBjcHkgKGNwLCBvbGRfdmFsKTsKLS0KLS0jIGlmIEhBVkVfU0VURU5WCi0tICBzZXRlbnYgKCJOTFNQQVRIIiwgbmV3X3ZhbCwgMSk7Ci0tICBmcmVlIChuZXdfdmFsKTsKLS0jIGVsc2UKLS0gIHB1dGVudiAobmV3X3ZhbCk7Ci0tICAvKiBEbyAqbm90KiBmcmVlIHRoZSBlbnZpcm9ubWVudCBlbnRyeSB3ZSBqdXN0IGVudGVyZWQuICBJdCBpcyB1c2VkCi0tICAgICBmcm9tIG5vdyBvbi4gICAqLwotLSMgZW5kaWYKLS0KLS0jZW5kaWYKLS0KLS0gIHJldHVybiAoY2hhciAqKSBkb21haW5uYW1lOwotLX0KLS0KLS0jdW5kZWYgZ2V0dGV4dAotLWNoYXIgKgotLWdldHRleHQgKG1zZykKLS0gICAgIGNvbnN0IGNoYXIgKm1zZzsKLS17Ci0tICBpbnQgbXNnaWQ7Ci0tCi0tICBpZiAobXNnID09IE5VTEwgfHwgY2F0YWxvZyA9PSAobmxfY2F0ZCkgLTEpCi0tICAgIHJldHVybiAoY2hhciAqKSBtc2c7Ci0tCi0tICAvKiBHZXQgdGhlIG1lc3NhZ2UgZnJvbSB0aGUgY2F0YWxvZy4gIFdlIGFsd2F5cyB1c2Ugc2V0IG51bWJlciAxLgotLSAgICAgVGhlIG1lc3NhZ2UgSUQgaXMgY29tcHV0ZWQgYnkgdGhlIGZ1bmN0aW9uIGBtc2dfdG9fY2F0X2lkJwotLSAgICAgd2hpY2ggd29ya3Mgb24gdGhlIHRhYmxlIGdlbmVyYXRlZCBieSBgcG8tdG8tdGJsJy4gICovCi0tICBtc2dpZCA9IG1zZ190b19jYXRfaWQgKG1zZyk7Ci0tICBpZiAobXNnaWQgPT0gLTEpCi0tICAgIHJldHVybiAoY2hhciAqKSBtc2c7Ci0tCi0tICByZXR1cm4gY2F0Z2V0cyAoY2F0YWxvZywgMSwgbXNnaWQsIChjaGFyICopIG1zZyk7Ci0tfQotLQotLS8qIExvb2sgdGhyb3VnaCB0aGUgdGFibGUgYF9tc2dfdGJsJyB3aGljaCBoYXMgYF9tc2dfdGJsX2xlbmd0aCcgZW50cmllcwotLSAgIGZvciB0aGUgb25lIGVxdWFsIHRvIG1zZy4gIElmIGl0IGlzIGZvdW5kIHJldHVybiB0aGUgSUQuICBJbiBjYXNlIHdoZW4KLS0gICB0aGUgc3RyaW5nIGlzIG5vdCBmb3VuZCByZXR1cm4gLTEuICAqLwotLXN0YXRpYyBpbnQKLS1tc2dfdG9fY2F0X2lkIChtc2cpCi0tICAgICBjb25zdCBjaGFyICptc2c7Ci0tewotLSAgaW50IGNudDsKLS0KLS0gIGZvciAoY250ID0gMDsgY250IDwgX21zZ190YmxfbGVuZ3RoOyArK2NudCkKLS0gICAgaWYgKHN0cmNtcCAobXNnLCBfbXNnX3RibFtjbnRdLl9tc2cpID09IDApCi0tICAgICAgcmV0dXJuIF9tc2dfdGJsW2NudF0uX21zZ19udW1iZXI7Ci0tCi0tICByZXR1cm4gLTE7Ci0tfQotLQotLQotLS8qIEBAIGJlZ2luIG9mIGVwaWxvZyBAQCAqLwotLQotLS8qIFdlIGRvbid0IHdhbnQgbGliaW50bC5hIHRvIGRlcGVuZCBvbiBhbnkgb3RoZXIgbGlicmFyeS4gIFNvIHdlCi0tICAgYXZvaWQgdGhlIG5vbi1zdGFuZGFyZCBmdW5jdGlvbiBzdHBjcHkuICBJbiBHTlUgQyBMaWJyYXJ5IHRoaXMKLS0gICBmdW5jdGlvbiBpcyBhdmFpbGFibGUsIHRob3VnaC4gIEFsc28gYWxsb3cgdGhlIHN5bWJvbCBIQVZFX1NUUENQWQotLSAgIHRvIGJlIGRlZmluZWQuICAqLwotLSNpZiAhX0xJQkMgJiYgIUhBVkVfU1RQQ1BZCi0tc3RhdGljIGNoYXIgKgotLXN0cGNweSAoZGVzdCwgc3JjKQotLSAgICAgY2hhciAqZGVzdDsKLS0gICAgIGNvbnN0IGNoYXIgKnNyYzsKLS17Ci0tICB3aGlsZSAoKCpkZXN0KysgPSAqc3JjKyspICE9ICdcMCcpCi0tICAgIC8qIERvIG5vdGhpbmcuICovIDsKLS0gIHJldHVybiBkZXN0IC0gMTsKLS19Ci0tI2VuZGlmCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvQ2hhbmdlTG9nCTE5OTgtMDQtMjYgMDk6MjI6MzUuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL0NoYW5nZUxvZwkyMDA0LTA5LTEyIDE0OjQwOjM0LjM0OTc0OTAwMCAtMDQwMAotQEAgLTEsMTAyMiArMSw0IEBACi0tMTk5Ny0wOS0wNiAwMjoxMCAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogaW50bGguaW5zdC5pbjogUmVmb3JtYXQgY29weXJpZ2h0LgotLQotLTE5OTctMDgtMTkgMTU6MjIgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIGRjZ2V0dGV4dC5jIChEQ0dFVFRFWFQpOiBSZW1vdmUgd3JvbmcgY29tbWVudC4KLS0KLS0xOTk3LTA4LTE2IDAwOjEzICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1kYXRhKTogRG9uJ3QgY2hhbmdlIGRpcmVjdG9yeSB0byBpbnN0YWxsLgotLQotLTE5OTctMDgtMDEgMTQ6MzAgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIGNhdC1jb21wYXQuYzogRml4IGNvcHlyaWdodC4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jOiBEb24ndCBkZWZpbmUgc3RyY2hyIHVubGVzcyAhSEFWRV9TVFJDSFIuCi0tCi0tCSogbG9hZG1zZ2NhdC5jOiBVcGRhdGUgY29weXJpZ2h0LiAgRml4IHR5cG9zLgotLQotLQkqIGwxMG5mbGlzdC5jOiBEb24ndCBkZWZpbmUgc3RyY2hyIHVubGVzcyAhSEFWRV9TVFJDSFIuCi0tCShfbmxfbWFrZV9sMTBuZmxpc3QpOiBIYW5kbGUgc3BvbnNvciBhbmQgcmV2aXNpb24gY29ycmVjdGx5LgotLQotLQkqIGdldHRleHQuYzogVXBkYXRlIGNvcHlyaWdodC4KLS0JKiBnZXR0ZXh0Lmg6IExpa2V3aXNlLgotLQkqIGhhc2gtc3RyaW5nLmg6IExpa2V3aXNlLgotLQotLQkqIGZpbmRkb21haW4uYzogUmVtb2F2ZSBkZWFkIGNvZGUuICBEZWZpbmUgc3RyY2hyIG9ubHkgaWYKLS0JIUhBVkVfU1RSQ0hSLgotLQotLQkqIGV4cGxvZGVuYW1lLmM6IEluY2x1ZGUgPHN5cy90eXBlcy5oPi4KLS0KLS0JKiBleHBsb2RlbmFtZS5jOiBSZWZvcm1hdCBjb3B5cmlnaHQgdGV4dC4KLS0JKF9ubF9leHBsb2RlX25hbWUpOiBGaXggdHlwby4KLS0KLS0JKiBkY2dldHRleHQuYzogRGVmaW5lIGFuZCB1c2UgX19zZXRfZXJybm8uCi0tCShndWVzc19jYXRlZ29yeV92YWx1ZSk6IERvbid0IHVzZSBzZXRsb2NhbGUgaWYgSEFWRV9MQ19NRVNTQUdFUyBpcwotLQlub3QgZGVmaW5lZC4KLS0KLS0JKiBiaW5kdGV4dGRvbS5jOiBQcmV0dHkgcHJpbnRpbmcuCi0tCi0tMTk5Ny0wNS0wMSAwMjoyNSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogZGNnZXR0ZXh0LmMgKGd1ZXNzX2NhdGVnb3J5X3ZhbHVlKTogRG9uJ3QgZGVwZW5kIG9uCi0tCUhBVkVfTENfTUVTU0FHRVMuICBXZSBkb24ndCBuZWVkIHRoZSBtYWNybyBoZXJlLgotLQlQYXRjaCBieSBCcnVubyBIYWlibGUgPGhhaWJsZUBpbG9nLmZyPi4KLS0KLS0JKiBjYXQtY29tcGF0LmMgKHRleHRkb21haW4pOiBEb04ndCByZWZlciB0byBIQVZFX1NFVExPQ0FMRV9OVUxMCi0tCW1hY3JvLiAgSW5zdGVhZCB1c2UgSEFWRV9MT0NBTEVfTlVMTCBhbmQgZGVmaW5lIGl0IHdoZW4gdXNpbmcKLS0JZ2xpYmMsIGFzIGluIGRjZ2V0dGV4dC5jLgotLQlQYXRjaCBieSBCcnVubyBIYWlibGUgPGhhaWJsZUBpbG9nLmZyPi4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoQ1BQRkxBR1MpOiBOZXcgdmFyaWFibGUuICBSZXBvcnRlZCBieSBGcmFuYyxvaXMKLS0JUGluYXJkLgotLQotLU1vbiBNYXIgMTAgMDY6NTE6MTcgMTk5NyAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogTWFrZWZpbGUuaW46IEltcGxlbWVudCBoYW5kbGluZyBvZiBsaWJ0b29sLgotLQotLQkqIGdldHRleHRQLmg6IENoYW5nZSBkYXRhIHN0cnVjdHVyZXMgZm9yIHVzZSBvZiBnZW5lcmljIGxvd2xldmVsCi0tCWkxOG4gZmlsZSBoYW5kbGluZy4KLS0KLS1XZWQgRGVjICA0IDIwOjIxOjE4IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIHRleHRkb21haW4uYzogUHV0IHBhcmVudGhlc2VzIGFyb3VuZCBhcmd1bWVudHMgb2YgbWVtY3B5IG1hY3JvCi0tCWRlZmluaXRpb24uCi0tCSogbG9jYWxlYWxpYXMuYzogTGlrZXdpc2UuCi0tCSogbDEwbmZsaXN0LmM6IExpa2V3aXNlLgotLQkqIGZpbmRkb21haW4uYzogTGlrZXdpc2UuCi0tCSogYmluZHRleHRkb20uYzogTGlrZXdpc2UuCi0tCVJlcG9ydGVkIGJ5IFRob21hcyBFc2tlbi4KLS0KLS1Nb24gTm92IDI1IDIyOjU3OjUxIDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIHRleHRkb21haW4uYzogTW92ZSBkZWZpbml0aW9uIG9mIGBtZW1jcHlgIG1hY3JvIHRvIHJpZ2h0Ci0tCXBvc2l0aW9uLgotLQotLUZyaSBOb3YgMjIgMDQ6MDE6NTggMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogZmluZGRvbWFpbi5jIFshSEFWRV9TVFJJTkdfSCAmJiAhX0xJQkNdOiBEZWZpbmUgbWVtY3B5IHVzaW5nCi0tIAliY29weSBpZiBub3QgYWxyZWFkeSBkZWZpbmVkLiAgUmVwb3J0ZWQgYnkgVGhvbWFzIEVza2VuLgotLQkqIGJpbmR0ZXh0ZG9tLmM6IExpa2V3aXNlLgotLQkqIGwxMG5mbGlzdC5jOiBMaWtld2lzZS4KLS0JKiBsb2NhbGVhbGlhcy5jOiBMaWtld2lzZS4KLS0JKiB0ZXh0ZG9tYWluLmM6IExpa2V3aXNlLgotLQotLVR1ZSBPY3QgMjkgMTE6MTA6MjcgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGxpYmRpcik6IENoYW5nZSB0byB1c2UgZXhlY19wcmVmaXggaW5zdGVhZCBvZgotLSAJcHJlZml4LiAgUmVwb3J0ZWQgYnkgS251dC1I5XZhcmRBa3NuZXMgPGV0b2tuYUBldG8uZXJpY3Nzb24uc2U+LgotLQotLVNhdCBBdWcgMzEgMDM6MDc6MDkgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogbDEwbmZsaXN0LmMgKF9ubF9ub3JtYWxpemVfY29kZXNldCk6IFdlIGNvbnZlcnQgdG8gbG93ZXIgY2FzZSwKLS0Jc28gZG9uJ3QgcHJlcGVuZCB1cHBlcmNhc2UgYElTTycgZm9yIG9ubHkgbnVtZXJpYyBhcmcuCi0tCi0tRnJpIEp1bCAxOSAwMDoxNTo0NiAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBsMTBuZmxpc3QuYzogTW92ZSBpbmNsdXNpb24gb2YgYXJnei5oLCBjdHlwZS5oLCBzdGRsaWIuaCBhZnRlcgotLQlkZWZpbml0aW9uIG9mIF9HTlVfU09VUkNFLiAgUGF0Y2ggYnkgUm9sYW5kIE1jR3JhdGguCi0tCi0tCSogTWFrZWZpbGUuaW4gKHVuaW5zdGFsbCk6IEZpeCBhbm90aGVyIGJ1ZyB3aXRoIGBmb3InIGxvb3AgYW5kCi0tCWVtcHR5IGFyZ3VtZW50cy4gIFBhdGNoIGJ5IEppbSBNZXllcmluZy4gIENvcnJlY3QgbmFtZSBvcwotLQl1bmluc3RhbGxlZCBmaWxlczogbm8gaW50bC0gcHJlZml4IGFueW1vcmUuCi0tCi0tCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtZGF0YSk6IEFnYWluIHdvcmsgYXJvdW5kIHNoZWxscyB3aGljaAotLQljYW5ub3QgaGFuZGxlIG1wdHkgZm9yIGxpc3QuICBSZXBvcnRlZCBieSBKaW0gTWV5ZXJpbmcuCi0tCi0tU2F0IEp1bCAxMyAxODoxMTozNSAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IFNwbGl0IGdvYWwuICBOb3cgZGVwZW5kIG9uIGluc3RhbGwtZXhlYwotLSAgICAgICAgYW5kIGluc3RhbGwtZGF0YS4KLS0JKGluc3RhbGwtZXhlYywgaW5zdGFsbC1kYXRhKTogTmV3IGdvYWxzLiAgQ3JlYXRlZCBmcm9tIGZvcm1lcgotLQlpbnN0YWxsIGdvYWwuCi0tCVJlcG9ydGVkIGJ5IEthcmwgQmVycnkuCi0tCi0tU2F0IEp1biAyMiAwNDo1ODoxNCAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoTUtJTlNUQUxMRElSUyk6IE5ldyB2YXJpYWJsZS4gIFBhdGggdG8KLS0gICAgICAgIG1raW5zdGFsbGRpcnMgc2NyaXB0LgotLQkoaW5zdGFsbCk6IHVzZSBNS0lOU1RBTExESVJTIHZhcmlhYmxlIG9yIGlmIHRoZSBzY3JpcHQgaXMgbm90IHByZXNlbnQKLS0JdHJ5IHRvIGZpbmQgaXQgaW4gdGhlICR0b3Bfc2NyZGlyKS4KLS0KLS1XZWQgSnVuIDE5IDAyOjU2OjU2IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIGwxMG5mbGlzdC5jOiBMaW51eCBsaWJjICpwYXJ0bHkqIGluY2x1ZGVzIHRoZSBhcmd6XyogZnVuY3Rpb25zLgotLQlHcnIuICBXb3JrIGFyb3VuZCBieSByZW5hbWluZyB0aGUgc3RhdGljIHZlcnNpb24gYW5kIHVzZSBtYWNyb3MKLS0JZm9yIHJlbmFtaW5nLgotLQotLVR1ZSBKdW4gMTggMjA6MTE6MTcgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogbDEwbmZsaXN0LmM6IENvcnJlY3QgcHJlc2VuY2UgdGVzdCBtYWNyb3Mgb2YgX19hcmd6XyogZnVuY3Rpb25zLgotLQotLQkqIGwxMG5mbGlzdC5jOiBJbmNsdWRlIDxhcmd6Lmg+IGJhc2VkIG9uIHRlc3Qgb2YgaXQgaW5zdGVhZCB3aGVuCi0tCV9fYXJnel8qIGZ1bmN0aW9ucyBhcmUgYXZhaWxhYmxlLgotLQlSZXBvcnRlZCBieSBBbmRyZWFzIFNjaHdhYi4KLS0KLS1UaHUgSnVuIDEzIDE1OjE3OjQ0IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIGV4cGxvZGVuYW1lLmMsIGwxMG5mbGlzdC5jOiBEZWZpbmUgTlVMTCBmb3IgZHVtYiBzeXN0ZW1zLgotLQotLVR1ZSBKdW4gMTEgMTc6MDU6MTMgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogaW50bGguaW5zdC5pbiwgbGliZ2V0dGV4dC5oIChkY2dldHRleHQpOiBSZW5hbWUgbG9jYWwgdmFyaWFibGUKLS0JcmVzdWx0IHRvIF9fcmVzdWx0IHRvIHByZXZlbnQgbmFtZSBjbGFzaC4KLS0KLS0JKiBsMTBuZmxpc3QuYywgbG9jYWxlYWxpYXMuYywgZGNnZXR0ZXh0LmM6IERlZmluZSBfR05VX1NPVVJDRSB0bwotLSAgICAgICAgZ2V0IHByb3RvdHlwZSBmb3Igc3RwY3B5IGFuZCBzdHJjYXNlY21wLgotLQotLQkqIGludGxoLmluc3QuaW4sIGxpYmdldHRleHQuaDogTW92ZSBkZWNsYXJhdGlvbiBvZgotLQlgX25sX21zZ19jYXRfY250cicgb3V0c2lkZSBfX2V4dGVuc2lvbl9fIGJsb2NrIHRvIHByZXZlbnQgd2FybmluZwotLQlmcm9tIGdjYydzIC1XbmVzdGVkLWV4dGVybiBvcHRpb24uCi0tCi0tRnJpIEp1biAgNyAwMTo1ODowMCAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAY3lnbnVzLmNvbT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IFJlbW92ZSBjb21tZW50LgotLQotLVRodSBKdW4gIDYgMTc6Mjg6MTcgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBXb3JrIGFyb3VuZCBmb3IgYW5vdGhlciBCdWdsaXggc3R1cGlkaXR5LgotLQlBbHdheXMgdXNlIGFuIGBlbHNlJyBjbG9zZSBmb3IgYGlmJ3MuICBSZXBvcnRlZCBieSBOZWxzb24gQmVlYmUuCi0tCi0tCSogTWFrZWZpbGUuaW4gKGludGxoLmluc3QpOiBDb3JyZWN0IHR5cG8gaW4gcGhvbnkgcnVsZS4KLS0JUmVwb3J0ZWQgYnkgTmVsc29uIEJlZWJlLgotLQotLVRodSBKdW4gIDYgMDE6NDk6NTIgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogZGNnZXR0ZXh0LmMgKHJlYWRfYWxpYXNfZmlsZSk6IFJlbmFtZSB2YXJpYWJsZSBhbGxvY2FfbGlzdCB0bwotLQlibG9ja19saXN0IGFzIHRoZSBtYWNybyBjYWxscyBhc3N1bWUuCi0tCVBhdGNoIGJ5IEVyaWMgQmFja3VzLgotLQotLQkqIGxvY2FsZWFsaWFzLmMgWyFIQVZFX0FMTE9DQV06IERlZmluZSBhbGxvY2EgYXMgbWFjcm8gdXNpbmcKLS0gICAgICAgIG1hbGxvYy4KLS0JKHJlYWRfYWxpYXNfZmlsZSk6IFJlbmFtZSB2YXJyaWFiZSBhbGxvY2FfbGlzdCB0byBibG9ja19saXN0IGFzIHRoZQotLQltYWNybyBjYWxscyBhc3N1bWUuCi0tCVBhdGNoIGJ5IEVyaWMgQmFja3VzLgotLQotLQkqIGwxMG5mbGlzdC5jOiBDb3JyZWN0IGNvbmRpdGlvbmFsIGZvciA8YXJnei5oPiBpbmNsdXNpb24uCi0tCVJlcG9ydGVkIGJ5IFJvbGFuZCBNY0dyYXRoLgotLQotLQkqIE1ha2VmaWxlLmluIChhbGwpOiBEZXBlbmQgb24gYWxsLUBVU0VfSU5DTFVERURfTElCSU5UTEAsIG5vdAotLSAgICAgICAgYWxsLUBVU0VfTkxTQC4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IGludGxoLmluc3QgY29tZXMgZnJvbSBsb2NhbCBkaXIsIG5vdAotLSAgICAgICAgJChzcmNkaXIpLgotLQotLQkqIE1ha2VmaWxlLmluIChpbnRsaC5pbnN0KTogU3BlY2lhbCBoYW5kbGluZyBvZiB0aGlzIGdvYWwuICBJZgotLQl1c2VkIGluIGdldHRleHQsIHRoaXMgaXMgcmVhbGx5IGEgcnVsIHRvIGNvbnN0cnVjdCB0aGlzIGZpbGUuICBJZgotLQl1c2VkIGluIGFueSBvdGhlciBwYWNrYWdlIGl0IGlzIGRlZmluZWQgYXMgYSAuUEhPTlkgcnVsZSB3aXRoCi0tCWVtcHR5IGJvZHkuCi0tCi0tCSogZmluZGRvbWFpbi5jOiBFeHRyYWN0IGxvY2FsZSBmaWxlIGluZm9ybWF0aW9uIGhhbmRsaW5nIGludG8KLS0JbDEwbmZpbGUuYy4gIFJlbmFtZSBsb2NhbCBzdHBjcHlfXyBmdW5jdGlvbiB0byBzdHBjcHkuCi0tCi0tCSogZGNnZXR0ZXh0LmMgKHN0cGNweSk6IEFkZCBsb2NhbCBkZWZpbml0aW9uLgotLQotLQkqIGwxMG5mbGlzdC5jOiBTb2x2ZSBzb21lIHBvcnRhYmlsaXR5IHByb2JsZW1zLiAgUGF0Y2hlcyBwYXJ0bHkgYnkKLS0JVGhvbWFzIEVza2VuLiAgQWRkIGxvY2FsIGRlZmluaXRpb24gb2Ygc3RwY3B5LgotLQotLVR1ZSBKdW4gIDQgMDI6NDc6NDkgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogaW50bGguaW5zdC5pbjogRG9uJ3QgZGVwZW5kIGluY2x1ZGluZyA8bG9jYWxlLmg+IG9uCi0tCUhBVkVfTE9DQUxFX0guICBJbnN0ZWFkIGNvbmZpZ3VyZSBtdXN0IHJld3JpdGUgdGhpcyBmaWlsZQotLQlkZXBlbmRpbmcgb24gdGhlIHJlc3VsdCBvZiB0aGUgY29uZmlndXJlIHJ1bi4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IGxpYmludGwuaW5zdCBpcyBub3cgY2FsbGVkIGludGxoLmluc3QuCi0tCUFkZCBydWxlcyBmb3IgdXBkYXRpbmcgaW50bGguaW5zdCBmcm9tIGludGxoLmluc3QuaW4uCi0tCi0tCSogbGliaW50bC5pbnN0OiBSZW5hbWVkIHRvIGludGxoLmluc3QuaW4uCi0tCi0tCSogbG9jYWxlYWxpYXMuYywgZGNnZXR0ZXh0LmMgW19fR05VQ19fXTogRGVmaW5lIEhBVkVfQUxMT0NBIHRvIDEKLS0gICAgICAgIGJlY2F1c2UgZ2NjIGhhcyBfX2J1aXRsaW5fYWxsb2NhLgotLQlSZXBvcnRlZCBieSBSb2xhbmQgTWNHcmF0aC4KLS0KLS1Nb24gSnVuICAzIDAwOjMyOjE2IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsY2hlY2spOiBOZXcgZ29hbCB0byBmdWxmaWxsIG5lZWRzIG9mCi0tICAgICAgICBhdXRvbWFrZSdzIGRpc3RjaGVjay4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbCk6IFJlb3JkZXIgY29tbWFuZHMgc28gdGhhdCBWRVJTSU9OIGlzCi0tICAgICAgICBmb3VuZC4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoZ2V0dGV4dHNyY2Rpcik6IE5vdyB1c2Ugc3ViZGlyZWN0b3J5IGludGwvIGluCi0tICAgICAgICBAZGF0YWRpckAvZ2V0dGV4dC4KLS0JKENPTVNSQ1MpOiBBZGQgbDEwbmZpbGUuYy4KLS0JKE9CSkVDVFMpOiBBZGQgbDEwbmZpbGUuby4KLS0JKERJU1RGSUxFUyk6IFJlbmFtZSB0byBESVNURklMRS5ub3JtYWwuICBSZW1vdmUgJChESVNURklMRVMuY29tbW9uKS4KLS0JKERJU1RGSUxFLmdldHRleHQpOiBSZW1vdmUgJChESVNURklMRVMuY29tbW9uKS4KLS0JKGFsbC1nZXR0ZXh0KTogUmVtb3ZlIGdvYWwuCi0tCShpbnN0YWxsKTogSWYgJChQQUNLQUdFKSA9IGdldHRleHQgaW5zdGFsbCwgb3RoZXJ3b3NlIGRvIG5vdGhpbmcuICBObwotLQlwYWNrYWdlIGJ1dCBnZXR0ZXh0IGl0c2VsZiBzaG91bGQgaW5zdGFsbCBsaWJpbnRsLmggKyBoZWFkZXJzLgotLQkoZGlzdCk6IEV4dGVuZCBnb2FsIHRvIHdvcmsgZm9yIGdldHRleHQsIHRvby4KLS0JKGRpc3QtZ2V0dGV4dCk6IFJlbW92ZSBnb2FsLgotLQotLQkqIGRjZ2V0dGV4dC5jIFshSEFWRV9BTExPQ0FdOiBEZWZpbmUgbWFjcm8gYWxsb2NhIGJ5IHVzaW5nIG1hbGxvYy4KLS0KLS1TdW4gSnVuICAyIDE3OjMzOjA2IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBjeWdudXMuY29tPgotLQotLQkqIGxvYWRtc2djYXQuYyAoX25sX2xvYWRfZG9tYWluKTogUGFyYW1ldGVyIGlzIG5vdyBjb21lcyBmcm9tCi0tICAgICAgICBmaW5kX2wxMG5maWxlLgotLQotLVNhdCBKdW4gIDEgMDI6MjM6MDMgMTk5NiAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQGN5Z251cy5jb20+Ci0tCi0tCSogbDEwbmZsaXN0LmMgKF9fYXJnel9uZXh0KTogQWRkIGRlZmluaXRpb24uCi0tCi0tCSogZGNnZXR0ZXh0LmMgWyFIQVZFX0FMTE9DQV06IEFkZCBjb2RlIGZvciBoYW5kbGluZyBtaXNzaW5nIGFsbG9jYQotLQljb2RlLiAgVXNlIG5ldyBsMTBuZmlsZSBoYW5kbGluZy4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jIFshSEFWRV9BTExPQ0FdOiBBZGQgY29kZSBmb3IgaGFuZGxpbmcgbWlzc2luZwotLSAgICAgICAgYWxsb2NhIGNvZGUuCi0tCi0tCSogbDEwbmZsaXN0LmM6IEluaXRpYWwgcmV2aXNpb24uCi0tCi0tVHVlIEFwciAgMiAxODo1MToxOCAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChhbGwtZ2V0dGV4dCk6IE5ldyBnb2FsLiAgU2FtZSBhcyBhbGwteWVzLgotLQotLVRodSBNYXIgMjggMjM6MDE6MjIgMTk5NiAgS2FybCBFaWNod2FsZGVyICA8a2VAa2UuY2VudHJhbC5kZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoZ2V0dGV4dHNyY2Rpcik6IERlZmluZSB1c2luZyBAZGF0YWRpckAuCi0tCi0tVHVlIE1hciAyNiAxMjozOToxNCAxOTk2ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGZpbmRkb21haW4uYzogSW5jbHVkZSA8Y3R5cGUuaD4uICBSZXBvcnRlZCBieSBSb2xhbmQgTWNHcmF0aC4KLS0KLS1TYXQgTWFyIDIzIDAyOjAwOjM1IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZmluZGRvbWFpbi5jIChzdHBjcHkpOiBSZW5hbWUgdG8gc3RwY3B5X18gdG8gcHJldmVudCBjbGFzaGluZwotLSAgICAgICAgd2l0aCBleHRlcm5hbCBkZWNsYXJhdGlvbi4KLS0KLS1TYXQgTWFyICAyIDAwOjQ3OjA5IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGFsbC1ubyk6IFJlbmFtZSBmcm9tIGFsbF9uby4KLS0KLS1TYXQgRmViIDE3IDAwOjI1OjU5IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZ2V0dGV4dFAuaCBbbG9hZGVkX2RvbWFpbl06IEFycmF5IGBzdWNjZXNzb3InIG11c3Qgbm93IGNvbnRhaW4gdXAKLS0gICAgICAgIHRvIDYzIGVsZW1lbnRzIChiZWNhdXNlIG9mIGNvZGVzZXQgbmFtZSBub3JtYWxpemF0aW9uKS4KLS0KLS0JKiBmaW5kZG9tYWluLmM6IEltcGxlbWVudCBjb2Rlc2V0IG5hbWUgbm9ybWFsaXphdGlvbi4KLS0KLS1UaHUgRmViIDE1IDA0OjM5OjA5IDE5OTYgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGFsbCk6IERlZmluZSB0byBgYWxsLUBVU0VfTkxTQCcuCi0tCShhbGwteWVzLCBhbGxfbm8pOiBOZXcgZ29hbHMuICBgYWxsLW5vJyBpcyBub29wLCBgYWxsLXllcycKLS0JaXMgZm9ybWVyIGFsbC4KLS0KLS1Nb24gSmFuIDE1IDIxOjQ2OjAxIDE5OTYgIEhvd2FyZCBHYXlsZSAgPGhvd2FyZEBoYWwuY29tPgotLQotLQkqIGxvY2FsZWFsaWFzLmMgKGFsaWFzX2NvbXBhcmUpOiBJbmNyZW1lbnQgc3RyaW5nIHBvaW50ZXJzIGluIGxvb3AKLS0gICAgICAgIG9mIHN0cmNhc2VjbXAgcmVwbGFjZW1lbnQuCi0tCi0tRnJpIERlYyAyOSAyMToxNjozNCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChpbnN0YWxsLXNyYyk6IFdobyBjb21tZW50ZWQgdGhpcyBnb2FsIG91dCA/IDotKQotLQotLUZyaSBEZWMgMjkgMTU6MDg6MTYgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBkY2dldHRleHQuYyAoRENHRVRURVhUKTogU2F2ZSBgZXJybm8nLiAgRmFpbGluZyBzeXN0ZW0gY2FsbHMKLS0Jc2hvdWxkIG5vdCBlZmZlY3QgaXQgYmVjYXVzZSBhIG1pc3NpbmcgY2F0YWxvZyBpcyBubyBlcnJvci4KLS0JUmVwb3J0ZWQgYnkgSGFyYWxkIEs8bzo+bmlnIDxrb2VuaWdAdGF0LnBoeXNpay51bmktdHVlYmluZ2VuLmRlPi4KLS0KLS1UdWUgRGVjIDE5IDIyOjA5OjEzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKE1ha2VmaWxlKTogRXhwbGljaXRseSB1c2UgJChTSEVMTCkgZm9yIHJ1bm5pbmcKLS0gICAgICAgIHNoZWxsIHNjcmlwdHMuCi0tCi0tRnJpIERlYyAxNSAxNzozNDo1OSAxOTk1ICBBbmRyZWFzIFNjaHdhYiAgPHNjaHdhYkBpc3Nhbi5pbmZvcm1hdGlrLnVuaS1kb3J0bXVuZC5kZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1zcmMpOiBPbmx5IGluc3RhbGwgbGlicmFyeSBhbmQgaGVhZGVyIHdoZW4KLS0Jd2UgdXNlIHRoZSBvd24gaW1wbGVtZW50YXRpb24uICBEb24ndCBkbyBpdCB3aGVuIHVzaW5nIHRoZQotLQlzeXN0ZW0ncyBnZXR0ZXh0IG9yIGNhdGdldHMgZnVuY3Rpb25zLgotLQotLQkqIGRjZ2V0dGV4dC5jIChmaW5kX21zZyk6IE11c3Qgbm90IHN3YXAgZG9tYWluLT5oYXNoX3NpemUgaGVyZS4KLS0KLS1TYXQgRGVjICA5IDE2OjI0OjM3IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogbG9jYWxlYWxpYXMuYywgbGliaW50bC5pbnN0LCBsaWJnZXR0ZXh0LmgsIGhhc2gtc3RyaW5nLmgsCi0tCWdldHRleHRQLmgsIGZpbmRkb21haW4uYywgZGNnZXR0ZXh0LmMsIGNhdC1jb21wYXQuYzoKLS0JVXNlIFBBUkFNUyBpbnN0ZWFkIG9mIF9fUC4gIFN1Z2dlc3RlZCBieSBSb2xhbmQgTWNHcmF0aC4KLS0KLS1UdWUgRGVjICA1IDExOjM5OjE0IDE5OTUgIExhcnJ5IFNjaHdpbW1lciAgPHJvc2VidWRAY3ljbG9uZS5zdGFuZm9yZC5lZHU+Ci0tCi0tCSogbGliZ2V0dGV4dC5oOiBVc2UgYCNpZiAhZGVmaW5lZCAoX0xJQklOVExfSCknIGluc3RlYWQgb2YgYCNpZgotLQkhX0xJQklOVExfSCcgYmVjYXVzZSBTb2xhcmlzIGRlZmluZXMgX0xJQklOVExfSCBhcyBlbXB0eS4KLS0KLS1Nb24gRGVjICA0IDE1OjQyOjA3IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtc3JjKToKLS0JSW5zdGFsbCBsaWJpbnRsLmluc3QgaW5zdGVhZCBvZiBsaWJpbnRsLmguaW5zdGFsbC4KLS0KLS1TYXQgRGVjICAyIDIyOjUxOjM4IDE5OTUgIE1hcmN1cyBEYW5pZWxzICA8bWFyY3VzQHN5c2MucGR4LmVkdT4KLS0KLS0JKiBjYXQtY29tcGF0LmMgKHRleHRkb21haW4pOgotLQlSZXZlcnNlIG9yZGVyIGluIHdoaWNoIGZpbGVzIGFyZSB0cmllZCB5b3UgbG9hZC4gIEZpcnN0Ci0tCXRyeSBsb2NhbCBmaWxlLCB3aGVuIHRoaXMgZmFpbGVkIGFic29sdXRlIHBhdGguCi0tCi0tV2VkIE5vdiAyOSAwMjowMzo1MyAxOTk1ICBOZWxzb24gSC4gRi4gQmVlYmUgIDxiZWViZUBtYXRoLnV0YWguZWR1PgotLQotLQkqIGNhdC1jb21wYXQuYyAoYmluZHRleHRkb21haW4pOiBBZGQgbWlzc2luZyB7IH0uCi0tCi0tU3VuIE5vdiAyNiAxODoyMTo0MSAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGxpYmludGwuaW5zdDogQWRkIG1pc3NpbmcgX19QIGRlZmluaXRpb24uICBSZXBvcnRlZCBieSBOZWxzb24gQmVlYmUuCi0tCi0tCSogTWFrZWZpbGUuaW46Ci0tCUFkZCBkdW1teSBgYWxsJyBhbmQgYGR2aScgZ29hbHMuICBSZXBvcnRlZCBieSBUb20gVHJvbWV5LgotLQotLVNhdCBOb3YgMjUgMTY6MTI6MDEgMTk5NSAgRnJhbmMsb2lzIFBpbmFyZCAgPHBpbmFyZEBpcm8udW1vbnRyZWFsLmNhPgotLQotLQkqIGhhc2gtc3RyaW5nLmg6IENhcGl0YWxpemUgYXJndW1lbnRzIG9mIG1hY3Jvcy4KLS0KLS1TYXQgTm92IDI1IDEyOjAxOjM2IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKERJU1RGSUxFUyk6IFByZXZlbnQgZmlsZXMgbmFtZXMgbG9uZ2VyIHRoYW4gMTMKLS0JY2hhcmFjdGVycy4gIGxpYmludGwuaC5nbGliYy0+bGliaW50bC5nbGliYywKLS0JbGliaW50bC5oLmluc3RhbGwtPmxpYmludGwuaW5zdC4gIFJlcG9ydGVkIGJ5IEpvc2h1YSBSLiBQb3Vsc29uLgotLQotLVNhdCBOb3YgMjUgMTE6MzE6MTIgMTk5NSAgRXJpYyBCYWNrdXMgIDxlcmljYkBsc2lkLmhwLmNvbT4KLS0KLS0JKiBkY2dldHRleHQuYzogRml4IGJ1ZyBpbiBwcmVwcm9jZXNzb3IgY29uZGl0aW9uYWxzLgotLQotLVNhdCBOb3YgMjUgMDI6MzU6MjcgMTk5NSAgTmVsc29uIEguIEYuIEJlZWJlICA8YmVlYmVAbWF0aC51dGFoLmVkdT4KLS0KLS0JKiBsaWJnZXR0ZXh0Lmg6IFNvbGFyaXMgY2MgZG9lcyBub3QgdW5kZXJzdGFuZAotLQkgI2lmICFTWU1CT0wxICYmICFTWU1CT0wyLiAgU2FkCWJ1dCB0cnVlLgotLQotLVRodSBOb3YgMjMgMTY6MjI6MTQgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBoYXNoLXN0cmluZy5oIChoYXNoX3N0cmluZyk6Ci0tCUZpeCBmb3IgbWFjaGluZSB3aXRoID4zMiBiaXQgYHVuc2lnbmVkIGxvbmcncy4KLS0KLS0JKiBkY2dldHRleHQuYyAoRENHRVRURVhUKToKLS0JRml4IGhvcnJpYmxlIGJ1ZyBpbiBsb29wIGZvciBhbHRlcm5hdGl2ZSB0cmFuc2xhdGlvbi4KLS0KLS1UaHUgTm92IDIzIDAxOjQ1OjI5IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogcG8ydGJsLnNlZC5pbiwgbGludXgtbXNnLnNlZCwgeG9wZW4tbXNnLnNlZDoKLS0JU29tZSBmdXJ0aGVyIHNpbXBsaWZpY2F0aW9ucyBpbiBtZXNzYWdlIG51bWJlciBnZW5lcmF0aW9uLgotLQotLU1vbiBOb3YgMjAgMjE6MDg6NDMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBsaWJpbnRsLmguZ2xpYmM6IFVzZSBfX2NvbnN0IGluc3RlYWQgb2YgY29uc3QgaW4gcHJvdG90eXBlcy4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoaW5zdGFsbC1zcmMpOgotLQlJbnN0YWxsIGxpYmludGwuaC5pbnN0YWxsIGluc3RlYWQgb2YgbGliaW50bC5oLiAgVGhpcwotLQlpcyBhIHN0cmlwcGVkLWRvd24gdmVyc2lvbi4gIFN1Z2dlc3RlZCBieSBQZXRlciBNaWxsZXIuCi0tCi0tCSogbGliaW50bC5oLmluc3RhbGwsIGxpYmludGwuaC5nbGliYzogSW5pdGlhbCByZXZpc2lvbi4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jIChfbmxfZXhwYW5kX2FsaWFzLCByZWFkX2FsaWFzX2ZpbGUpOgotLQlQcm90ZWN0IHByb3RvdHlwZXMgaW4gdHlwZSBjYXN0cyBieSBfX1AuCi0tCi0tVHVlIE5vdiAxNCAxNjo0Mzo1OCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGhhc2gtc3RyaW5nLmg6IENvcnJlY3QgcHJvdG90eXBlIGZvciBoYXNoX3N0cmluZy4KLS0KLS1TdW4gTm92IDEyIDEyOjQyOjMwIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogaGFzaC1zdHJpbmcuaCAoaGFzaF9zdHJpbmcpOiBBZGQgcHJvdG90eXBlLgotLQotLQkqIGdldHRleHRQLmg6IEZpeCBjb3B5cmlnaHQuCi0tCShTV0FQKTogQWRkIHByb3RvdHlwZS4KLS0KLS1XZWQgTm92ICA4IDIyOjU2OjMzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogbG9jYWxlYWxpYXMuYyAocmVhZF9hbGlhc19maWxlKTogRm9yZ290IHNpemVvZi4KLS0JQXZvaWQgY2FsbGluZyAqcHJpbnRmIGZ1bmN0aW9uLiAgVGhpcyBpbnRyb2R1Y2VzIGEgYmlnIG92ZXJoZWFkLgotLQlQYXRjaCBieSBSb2xhbmQgTWNHcmF0aC4KLS0KLS1UdWUgTm92ICA3IDE0OjIxOjA4IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZmluZGRvbWFpbi5jLCBjYXQtY29tcGF0LmM6IFdyb25nIGluZGVudGF0aW9uIGluICNpZiBmb3Igc3RwY3B5LgotLQotLQkqIGZpbmRkb21haW4uYyAoc3RwY3B5KToKLS0JRGVmaW5lIHN1YnN0aXR1dGlvbiBmdW5jdGlvbiBsb2NhbC4gIFRoZSBtYWNybyB3YXMgdG8gZmxha3kuCi0tCi0tCSogY2F0LWNvbXBhdC5jOiBGaXggdHlwby4KLS0KLS0JKiB4b3Blbi1tc2cuc2VkLCBsaW51eC1tc2cuc2VkOgotLQlXaGlsZSBicmluZ2luZyBtZXNzYWdlIG51bWJlciB0byByaWdodCBwbGFjZSBvbmx5IGFjY2VwdCBkaWdpdHMuCi0tCi0tCSogbGludXgtbXNnLnNlZCwgeG9wZW4tbXNnLnNlZDogTm93IHRoYXQgdGhlIGNvdW50ZXIgZG9lcyBub3QgaGF2ZQotLQlsZWFkaW5nIDBzIHdlIGRvbid0IG5lZWQgdG8gcmVtb3ZlIHRoZW0uICBSZXBvcnRlZCBieSBNYXJjdXMKLS0JRGFuaWVscy4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoLi4vcG8vY2F0LWlkLXRibC5vKTogVXNlICQodG9wX3NyZGlyKSBpbgotLQlkZXBlbmRlbmN5LiAgUmVwb3J0ZWQgYnkgTWFyY3VzIERhbmllbHMuCi0tCi0tCSogY2F0LWNvbXBhdC5jOiAoc3RwY3B5KSBbIV9MSUJDICYmICFIQVZFX1NUUENQWV06IERlZmluZSByZXBsYWNlbWVudC4KLS0JR2VuZXJhbGx5IGNsZWFudXAgdXNpbmcgI2lmIGluc3RlYWQgb2YgI2lmbmRlZi4KLS0KLS0JKiBNYWtlZmlsZS5pbjogQ29ycmVjdCB0eXBvcyBpbiBjb21tZW50LiAgQnkgRnJhbmMsb2lzIFBpbmFyZC4KLS0KLS1Nb24gTm92ICA2IDAwOjI3OjAyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGluc3RhbGwtc3JjKTogRG9uJ3QgaW5zdGFsbCBsaWJpbnRsLmggYW5kIGxpYmludGwuYQotLQlpZiB3ZSB1c2UgYW4gYXZhaWxhYmxlIGdldHRleHQgaW1wbGVtZW50YXRpb24uCi0tCi0tU3VuIE5vdiAgNSAyMjowMjowOCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGxpYmdldHRleHQuaDogRml4IHR5cG86IEhBVkVfQ0FUR0VUVFMgLT4gSEFWRV9DQVRHRVRTLiAgUmVwb3J0ZWQKLS0JYnkgRnJhbmMsb2lzIFBpbmFyZC4KLS0KLS0JKiBsaWJnZXR0ZXh0Lmg6IFVzZSAjaWYgaW5zdGVhZCBvZiAjaWZkZWYvI2lmbmRlZi4KLS0KLS0JKiBmaW5kZG9tYWluLmM6Ci0tCUNvbW1lbnRzIGRlc2NyaWJpbmcgd2hhdCBoYXMgdG8gYmUgZG9uZSBzaG91bGQgc3RhcnQgd2l0aCBGSVhNRS4KLS0KLS1TdW4gTm92ICA1IDE5OjM4OjAxIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKERJU1RGSUxFUyk6IFNwbGl0LiAgVXNlIERJU1RGSUxFUyB3aXRoIG5vcm1hbCBtZWFuaW5nLgotLQlESVNURklMRVMuY29tbW9uIG5hbWVzIHRoZSBmaWxlcyBjb21tb24gdG8gYm90aCBkaXN0IGdvYWxzLgotLQlESVNURklMRVMuZ2V0dGV4dCBhcmUgdGhlIGZpbGVzIG9ubHkgZGlzdHJpYnV0ZWQgaW4gR05VIGdldHRleHQuCi0tCi0tU3VuIE5vdiAgNSAxNzozMjo1NCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGRjZ2V0dGV4dC5jIChEQ0dFVFRFWFQpOiBDb3JyZWN0IHNlYXJjaGluZyBpbiBkZXJpdmVkIGxvY2FsZXMuCi0tCVRoaXMgd2FzIG5lY2Vzc2FyeSBzaW5jZSBhIGNoYW5nZSBpbiBfbmxfZmluZF9tc2cgc2V2ZXJhbCB3ZWVrcwotLQlhZ28uICBJIHJlYWxseSBkb24ndCBrbm93IHRoaXMgaXMgc3RpbGwgbm90IGZpeGVkLgotLQotLVN1biBOb3YgIDUgMTI6NDM6MTIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBsb2FkbXNnY2F0LmMgKF9ubF9sb2FkX2RvbWFpbik6IFRlc3QgZm9yIEZJTEVOQU1FID09IE5VTEwuICBUaGlzCi0tCW1pZ2h0IG1hcmsgYSBzcGVjaWFsIGNvbmRpdGlvbi4KLS0KLS0JKiBmaW5kZG9tYWluLmMgKG1ha2VfZW50cnlfcmVjKTogRG9uJ3QgbWFrZSBpbGxlZ2FsIGVudHJ5IGFzIGRlY2lkZWQuCi0tCi0tCSogTWFrZWZpbGUuaW4gKGRpc3QpOiBTdXBwcmVzcyBlcnJvciBtZXNzYWdlIHdoZW4gbG4gZmFpbGVkLgotLQlHZXQgZmlsZXMgZnJvbSAkKHNyY2RpcikgZXhwbGljaXRseS4KLS0KLS0JKiBsaWJnZXR0ZXh0LmggKGdldHRleHRfY29uc3QpOiBSZW5hbWUgdG8gZ2V0dGV4dF9ub29wLgotLQotLUZyaSBOb3YgIDMgMDc6MzY6NTAgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBmaW5kZG9tYWluLmMgKG1ha2VfZW50cnlfcmVjKToKLS0JUHJvdGVjdCBhZ2FpbnN0IHdyb25nIGxvY2FsZSBuYW1lcyBieSB0ZXN0aW5nIG1hc2suCi0tCi0tCSogbGliZ2V0dGV4dC5oIChnZXR0ZXh0X2NvbnN0KTogQWRkIG1hY3JvIGRlZmluaXRpb24uCi0tCUNhcGl0YWxpemUgbWFjcm8gYXJndW1lbnRzLgotLQotLVRodSBOb3YgIDIgMjM6MTU6NTEgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBmaW5kZG9tYWluLmMgKF9ubF9maW5kX2RvbWFpbik6Ci0tCVRlc3QgZm9yIHBvaW50ZXIgIT0gTlVMTCBiZWZvcmUgYWNjZXNzaW5nIHZhbHVlLgotLQlSZXBvcnRlZCBieSBUb20gVHJvbWV5LgotLQotLQkqIGdldHRleHQuYyAoTlVMTCk6Ci0tCURlZmluZSBhcyAodm9pZCopMCBpbnN0YWQgb2YgMC4gIFJlcG9ydGVkIGJ5IEZyYW5jLG9pcyBQaW5hcmQuCi0tCi0tTW9uIE9jdCAzMCAyMToyODo1MiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIHBvMnRibC5zZWQuaW46IFNlcmlvdXMgdHlwbyBidWcgZml4ZWQgYnkgSmltIE1leWVyaW5nLgotLQotLVNhdCBPY3QgMjggMjM6MjA6NDcgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBsaWJnZXR0ZXh0Lmg6IERpc2FibGUgZGNnZXR0ZXh0IG9wdGltaXphdGlvbiBmb3IgU29sYXJpcyAyLjMuCi0tCi0tCSogbG9jYWxlYWxpYXMuYyAoYWxpYXNfY29tcGFyZSk6Ci0tCVBldGVyIE1pbGxlciByZXBvcnRlZCB0aGF0IHRvbG93ZXIgaW4gc29tZSBzeXN0ZW1zIGlzCi0tCWV2ZW4gZHVtYmVyIHRoYW4gSSB0aG91Z2h0LiAgUHJvdGVjdCBjYWxsIGJ5IGBpc3VwcGVyJy4KLS0KLS1GcmkgT2N0IDI3IDIyOjIyOjUxIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGxpYmRpciwgaW5jbHVkZWRpcik6IE5ldyB2YXJpYWJsZXMuCi0tCShpbnN0YWxsLXNyYyk6IEluc3RhbGwgbGliaW50bC5hIGFuZCBsaWJpbnRsLmggaW4gY29ycmVjdCBkaXJzLgotLQotLUZyaSBPY3QgMjcgMjI6MDc6MjkgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoU09VUkNFUyk6IEZpeCB0eXBvOiBpbnRybC5jb21wYXQuYyAtPiBpbnRsLWNvbXBhdC5jLgotLQotLQkqIHBvMnRibC5zZWQuaW46IFBhdGNoIGZvciBidWdneSBTRURzIGJ5IENocmlzdGlhbiB2b24gUm9xdWVzLgotLQotLQkqIGxvY2FsZWFsaWFzLmM6Ci0tCUZpeCB0eXBvIGFuZCBzdXBlcmZsb3VzIHRlc3QuICBSZXBvcnRlZCBieSBDaHJpc3RpYW4gdm9uIFJvcXVlcy4KLS0KLS1GcmkgT2N0ICA2IDExOjUyOjA1IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZmluZGRvbWFpbi5jIChfbmxfZmluZF9kb21haW4pOgotLQlDb3JyZWN0IHNvbWUgcmVtYWluZGVyIGZyb20gdGhlIHByZS1DRU4gc3ludGF4LiAgTm93Ci0tCXdlIGRvbid0IGhhdmUgYSBjb25zdGFudCBudW1iZXIgb2Ygc3VjY2Vzc29ycyBhbnltb3JlLgotLQotLVdlZCBTZXAgMjcgMjE6NDE6MTMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoRElTVEZJTEVTKTogQWRkIGxpYmludGwuaC5nbGliYy4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoZGlzdC1saWJjKTogQWRkIGdvYWwgZm9yIHBhY2tpbmcgc291cmNlcyBmb3IgZ2xpYmMuCi0tCShDT01TUkNTLCBDT01IRFJTKTogU3BsaXR0ZWQgdG8gc2VwYXJhdGUgc291cmNlcyBzaGFyZWQgd2l0aCBnbGliYy4KLS0KLS0JKiBsb2FkbXNnY2F0LmM6IEZvcmdldCB0byBjb250aW51ZSAjaWYgbGluZS4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jOgotLQlbX0xJQkNdOiBSZW5hbWUgc3RyY2FzZWNtcCB0byBfX3N0cmNhc2VjbXAgdG8ga2VlcCBBTlNJIEMgbmFtZQotLQlzcGFjZSBjbGVhbi4KLS0KLS0JKiBkY2dldHRleHQuYywgZmluZGRvbWFpbi5jOiBCZXR0ZXIgY29tbWVudCB0byBsYXN0IGNoYW5nZS4KLS0KLS0JKiBsb2FkbXNnY2F0LmM6Ci0tCVtfTElCQ106IFJlbmFtZSBmc3RhdCwgb3BlbiwgY2xvc2UsIHJlYWQsIG1tYXAsIGFuZCBtdW5tYXAgdG8KLS0JX19mc3RhdCwgX19vcGVuLCBfX2Nsb3NlLCBfX3JlYWQsIF9fbW1hcCwgYW5kIF9fbXVubWFwIHJlc3AKLS0JdG8ga2VlcCBBTlNJIEMgbmFtZSBzcGFjZSBjbGVhbi4KLS0KLS0JKiBmaW5kZG9tYWluLmM6Ci0tCVtfTElCQ106IFJlbmFtZSBzdHBjcHkgdG8gX19zdHBjcHkgdG8ga2VlcCBBTlNJIEMgbmFtZSBzcGFjZSBjbGVhbi4KLS0KLS0JKiBkY2dldHRleHQuYzoKLS0JW19MSUJDXTogUmVuYW1lIGdldGNlZCBhbmQgc3RwY3B5IHRvIF9fZ2V0Y3dkIGFuZCBfX3N0cGNweSByZXNwIHRvCi0tCWtlZXAgQU5TSSBDIG5hbWUgc3BhY2UgY2xlYW4uCi0tCi0tCSogbGliZ2V0dGV4dC5oOgotLQlJbmNsdWRlIHN5cy90eXBlcy5oIGZvciB0aG9zZSBvbGQgU3lzViBzeXN0ZW1zIG91dCB0aGVyZS4KLS0JUmVwb3J0ZWQgYnkgRnJhbmNlc2NvIFBvdG9ydGlgLgotLQotLQkqIGxvYWRtc2djYXQuYyAodXNlX21tYXApOiBEZWZpbmUgaWYgY29tcGlsZWQgZm9yIGdsaWJjLgotLQotLQkqIGJpbmR0ZXh0ZG9tLmM6IEluY2x1ZGUgYWxsIHRob3NlIHN0YW5kYXJkIGhlYWRlcnMKLS0JdW5jb25kaXRpb25hbGx5IGlmIF9MSUJDIGlzIGRlZmluZWQuCi0tCi0tCSogZmluZGRvbWFpbi5jOiBGaXggMiB0aW1lcyBkZWZpZW5kIC0+IGRlZmluZWQuCi0tCi0tCSogdGV4dGRvbWFpbi5jOiBJbmNsdWRlIGxpYmludGwuaCBpbnN0ZWFkIG9mIGxpYmdldHRleHQuaCB3aGVuCi0tCWNvbXBpbGluZyBmb3IgZ2xpYmMuICBJbmNsdWRlIGFsbCB0aG9zZSBzdGFuZGFyZCBoZWFkZXJzCi0tCXVuY29uZGl0aW9uYWxseSBpZiBfTElCQyBpcyBkZWZpbmVkLgotLQotLQkqIGxvY2FsZWFsaWFzLmMsIGxvYWRtc2djYXQuYzogUHJlcGFyZSB0byBiZSBjb21waWxlZCBpbiBnbGliYy4KLS0KLS0JKiBnZXR0ZXh0LmM6Ci0tCUluY2x1ZGUgbGliaW50bC5oIGluc3RlYWQgb2YgbGliZ2V0dGV4dC5oIHdoZW4gY29tcGlsaW5nIGZvciBnbGliYy4KLS0JR2V0IE5VTEwgZnJvbSBzdGRkZWYuaCBpZiB3ZSBjb21waWxlIGZvciBnbGliYy4KLS0KLS0JKiBmaW5kZG9tYWluLmM6IEluY2x1ZGUgbGliaW50bC5oIGluc3RlYWQgb2YgbGliZ2V0dGV4dC5oIHdoZW4KLS0JY29tcGlsaW5nIGZvciBnbGliYy4gIEluY2x1ZGUgYWxsIHRob3NlIHN0YW5kYXJkIGhlYWRlcnMKLS0JdW5jb25kaXRpb25hbGx5IGlmIF9MSUJDIGlzIGRlZmluZWQuCi0tCi0tCSogZGNnZXR0ZXh0LmM6IEluY2x1ZGUgYWxsIHRob3NlIHN0YW5kYXJkIGhlYWRlcnMgdW5jb25kaXRpb25hbGx5Ci0tCWlmIF9MSUJDIGlzIGRlZmluZWQuCi0tCi0tCSogZGdldHRleHQuYzogSWYgY29tcGlsZWQgaW4gZ2xpYmMgaW5jbHVkZSBsaWJpbnRsLmggaW5zdGVhZCBvZgotLQlsaWJnZXR0ZXh0LmguCi0tCShsb2NhbGUuaCk6IERvbid0IHJlbHkgb24gSEFWRV9MT0NBTEVfSCB3aGVuIGNvbXBpbGluZyBmb3IgZ2xpYmMuCi0tCi0tCSogZGNnZXR0ZXh0LmM6IElmIGNvbXBpbGVkIGluIGdsaWJjIGluY2x1ZGUgbGliaW50bC5oIGluc3RlYWQgb2YKLS0JbGliZ2V0dGV4dC5oLgotLQkoZ2V0Y3dkKTogRG9uJ3QgcmVseSBvbiBIQVZFX0dFVENXRCB3aGVuIGNvbXBpbGluZyBmb3IgZ2xpYmMuCi0tCi0tCSogYmluZHRleHRkb20uYzoKLS0JSWYgY29tcGlsZWQgaW4gZ2xpYmMgaW5jbHVkZSBsaWJpbnRsLmggaW5zdGVhZCBvZiBsaWJnZXR0ZXh0LmguCi0tCi0tTW9uIFNlcCAyNSAyMjoyMzowNiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGxvY2FsZWFsaWFzLmMgKF9ubF9leHBhbmRfYWxpYXMpOiBEb24ndCBjYWxsIGJzZWFyY2ggaWYgTk1BUCA8PSAwLgotLQlSZXBvcnRlZCBieSBNYXJjdXMgRGFuaWVscy4KLS0KLS0JKiBjYXQtY29tcGF0LmMgKGJpbmR0ZXh0ZG9tYWluKToKLS0JU3RyaW5nIHVzZWQgaW4gcHV0ZW52IG11c3Qgbm90IGJlIHJlY3ljbGVkLgotLQlSZXBvcnRlZCBieSBNYXJjdXMgRGFuaWVscy4KLS0KLS0JKiBsaWJnZXR0ZXh0LmggKF9fVVNFX0dOVV9HRVRURVhUKToKLS0JQWRkaXRpb25hbCBzeW1ib2wgdG8gc2lnbmFsIHRoYXQgd2UgdXNlIEdOVSBnZXR0ZXh0Ci0tCWxpYnJhcnkuCi0tCi0tCSogY2F0LWNvbXBhdC5jIChiaW5kdGV4dGRvbWFpbik6Ci0tCUZpeCBidWcgd2l0aCB0aGUgc3RyYW5nZSBzdHBjcHkgcmVwbGFjZW1lbnQuCi0tCVJlcG9ydGVkIGJ5IE5lbHNvbiBCZWViZS4KLS0KLS1TYXQgU2VwIDIzIDA4OjIzOjUxIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogY2F0LWNvbXBhdC5jOiBJbmNsdWRlIDxzdHJpbmcuaD4gZm9yIHN0cGNweSBwcm90b3R5cGUuCi0tCi0tCSogbG9jYWxlYWxpYXMuYyAocmVhZF9hbGlhc19maWxlKToKLS0JV2hpbGUgZXhwYW5kIHN0cmR1cCBjb2RlIHRlbXBvcmFyeSB2YXJpYWJsZSBgY3AnIGhpZGVkCi0tCWhpZ2hlciBsZXZlbCB2YXJpYWJsZSB3aXRoIHNhbWUgbmFtZS4gIFJlbmFtZSB0byBgdHAnLgotLQotLQkqIHRleHRkb21haW4uYyAodGV4dGRvbWFpbik6Ci0tCUF2b2lkIHdhcm5pbmcgYnkgdXNpbmcgdGVtcG9yYXJ5IHZhcmlhYmxlIGluIHN0cmR1cCBjb2RlLgotLQotLQkqIGZpbmRkb21haW4uYyAoX25sX2ZpbmRfZG9tYWluKTogUmVtb3ZlIHVudXNlZCB2YXJpYWJsZSBgYXBwbGljYXRpb24nLgotLQotLVRodSBTZXAgMjEgMTU6NTE6NDQgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jIChhbGlhc19jb21wYXJlKToKLS0JVXNlIHN0cmNhc2VjbXAoKSBvbmx5IGlmIGF2YWlsYWJsZS4gIEVsc2UgdXNlCi0tCWltcGxlbWVudGF0aW9uIGluIHBsYWNlLgotLQotLQkqIGludGwtY29tcGF0LmM6Ci0tCVdyYXBwZXIgZnVuY3Rpb25zIG5vdyBjYWxsICpfXyBmdW5jdGlvbnMgaW5zdGVhZCBvZiBfXyouCi0tCi0tCSogbGliZ2V0dGV4dC5oOiBEZWNsYXJlIHByb3RvdHlwZXMgZm9yICpfXyBmdW5jdGlvbnMgaW5zdGVhZCBmb3IgX18qLgotLQotLQkqIGNhdC1jb21wYXQuYywgbG9hZG1zZ2NhdC5jOgotLQlEb24ndCB1c2UgeG1hbGxvYywgeHN0cmR1cCwgYW5kIHN0cGNweS4gIFRoZXNlIGZ1bmN0aW9ucyBhcmUgbm90IHBhcnQKLS0Jb2YgdGhlIHN0YW5kYXJkIGxpYmMgYW5kIHNvIHByZXZlbnQgbGliaW50bC5hIGZyb20gYmVpbmcgdXNlZAotLQlzdGFuZGFsb25lLgotLQotLQkqIGJpbmR0ZXh0ZG9tLmM6Ci0tCURvbid0IHVzZSB4bWFsbG9jLCB4c3RyZHVwLCBhbmQgc3RwY3B5LiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgcGFydAotLQlvZiB0aGUgc3RhbmRhcmQgbGliYyBhbmQgc28gcHJldmVudCBsaWJpbnRsLmEgZnJvbSBiZWluZyB1c2VkCi0tCXN0YW5kYWxvbmUuCi0tCVJlbmFtZSB0byBiaW5kdGV4dGRvbWFpbl9fIGlmIG5vdCB1c2VkIGluIEdOVSBDIExpYnJhcnkuCi0tCi0tCSogZGdldHRleHQuYzoKLS0JUmVuYW1lIGZ1bmN0aW9uIHRvIGRnZXR0ZXh0X18gaWYgbm90IHVzZWQgaW4gR05VIEMgTGlicmFyeS4KLS0KLS0JKiBnZXR0ZXh0LmM6Ci0tCURvbid0IHVzZSB4bWFsbG9jLCB4c3RyZHVwLCBhbmQgc3RwY3B5LiAgVGhlc2UgZnVuY3Rpb25zIGFyZSBub3QgcGFydAotLQlvZiB0aGUgc3RhbmRhcmQgbGliYyBhbmQgc28gcHJldmVudCBsaWJpbnRsLmEgZnJvbSBiZWluZyB1c2VkCi0tCXN0YW5kYWxvbmUuCi0tCUZ1bmN0aW9ucyBub3cgY2FsbGVkIGdldHRleHRfXyBpZiBub3QgdXNlZCBpbiBHTlUgQyBMaWJyYXJ5LgotLQotLQkqIGRjZ2V0dGV4dC5jLCBsb2NhbGVhbGlhcy5jLCB0ZXh0ZG9tYWluLmMsIGZpbmRkb21haW4uYzoKLS0JRG9uJ3QgdXNlIHhtYWxsb2MsIHhzdHJkdXAsIGFuZCBzdHBjcHkuICBUaGVzZSBmdW5jdGlvbnMgYXJlIG5vdCBwYXJ0Ci0tCW9mIHRoZSBzdGFuZGFyZCBsaWJjIGFuZCBzbyBwcmV2ZW50IGxpYmludGwuYSBmcm9tIGJlaW5nIHVzZWQKLS0Jc3RhbmRhbG9uZS4KLS0KLS1TdW4gU2VwIDE3IDIzOjE0OjQ5IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZmluZGRvbWFpbi5jOiBDb3JyZWN0IHNvbWUgYnVncyBpbiBoYW5kbGluZyBvZiBDRU4gc3RhbmRhcmQKLS0gCWxvY2FsZSBkZWZpbml0aW9ucy4KLS0KLS1UaHUgU2VwICA3IDAxOjQ5OjI4IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZmluZGRvbWFpbi5jOiBJbXBsZW1lbnQgQ0VOIHN5bnRheC4KLS0KLS0JKiBnZXR0ZXh0UC5oIChsb2FkZWRfZG9tYWluKTogRXh0ZW5kIG51bWJlciBvZiBzdWNjZXNzb3JzIHRvIDMxLgotLQotLVNhdCBBdWcgMTkgMTk6MjU6MjkgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoYWxpYXNwYXRoKTogUmVtb3ZlIHBhdGggdG8gWDExIGxvY2FsZSBkaXIuCi0tCi0tCSogTWFrZWZpbGUuaW46IE1ha2UgaW5zdGFsbC1zcmMgZGVwZW5kIG9uIGluc3RhbGwuICBUaGlzIGhlbHBzCi0tIAlnZXR0ZXh0IHRvIGluc3RhbGwgdGhlIHNvdXJjZXMgYW5kIG90aGVyIHBhY2thZ2VzIGNhbiB1c2UgdGhlCi0tIAlpbnN0YWxsIGdvYWwuCi0tCi0tU2F0IEF1ZyAxOSAxNToxOTozMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluICh1bmluc3RhbGwpOiBSZW1vdmUgc3R1ZmYgaW5zdGFsbGVkIGJ5IGluc3RhbGwtc3JjLgotLQotLVR1ZSBBdWcgMTUgMTM6MTM6NTMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBWRVJTSU9OLmluOiBJbml0aWFsIHJldmlzaW9uLgotLQotLQkqIE1ha2VmaWxlLmluIChESVNURklMRVMpOgotLQlBZGQgVkVSU0lPTiBmaWxlLiAgVGhpcyBpcyBub3QgbmVjZXNzYXJ5IGZvciBnZXR0ZXh0LCBidXQKLS0JZm9yIG90aGVyIHBhY2thZ2VzIHVzaW5nIHRoaXMgbGlicmFyeS4KLS0KLS1UdWUgQXVnIDE1IDA2OjE2OjQ0IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZ2V0dGV4dFAuaCAoX25sX2ZpbmRfZG9tYWluKToKLS0JTmV3IHByb3RvdHlwZSBhZnRlciBjaGFuZ2luZyBzZWFyY2ggc3RyYXRlZ3kuCi0tCi0tCSogZmluZGRvbWFpbi5jIChfbmxfZmluZF9kb21haW4pOgotLQlXZSBub3cgdHJ5IG9ubHkgdG8gZmluZCBhIHNwZWNpZmllZCBjYXRhbG9nLiAgRmFsbCBiYWNrIHRvIG90aGVyCi0tCWNhdGFsb2dzIGxpc3RlZCBpbiB0aGUgbG9jYWxlIGxpc3QgaXMgbm93IGRvbmUgaW4gX19kY2dldHRleHQuCi0tCi0tCSogZGNnZXR0ZXh0LmMgKF9fZGNnZXR0ZXh0KToKLS0JTm93IHdlIHByb3ZpZGUgbWVzc2FnZSBmYWxsIGJhY2sgZXZlbiB0byBkaWZmZXJlbnQgbGFuZ3VhZ2VzLgotLQlJLmUuIGlmIGEgbWVzc2FnZSBpcyBub3QgYXZhaWxhYmxlIGluIG9uZSBsYW5ndWFnZSBhbGwgdGhlIG90aGVyCi0tIAlpbiB0aGUgbG9jYWxlIGxpc3QgYSB0cmllZC4gIEZvcm1lcmx5IGZhbGwgYmFjayB3YXMgb25seSBwb3NzaWJsZQotLSAJd2l0aGluIG9uZSBsYW5ndWFnZS4gIEltcGxlbWVudGVkIGJ5IG1vdmluZyBvbmUgbG9vcCBmcm9tCi0tIAlfbmxfZmluZF9kb21haW4gdG8gaGVyZS4KLS0KLS1Nb24gQXVnIDE0IDIzOjQ1OjUwIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKGdldHRleHRzcmNkaXIpOgotLQlEaXJlY3Rvcnkgd2hlcmUgc291cmNlIG9mIEdOVSBnZXR0ZXh0IGxpYnJhcnkgYXJlIG1hZGUKLS0JYXZhaWxhYmxlLgotLQkoSU5TVEFMTCwgSU5TVEFMTF9EQVRBKTogUHJvZ3JhbXMgdXNlZCBmb3IgaW5zdGFsbGluZyBzb3VyY2VzLgotLQkoZ2V0dGV4dC1zcmMpOiBOZXcuICBSdWxlIHRvIGluc3RhbGwgR05VIGdldHRleHQgc291cmNlcyBmb3IgdXNlIGluCi0tCWdldHRleHRpemUgc2hlbGwgc2NyaXB0LgotLQotLVN1biBBdWcgMTMgMTQ6NDA6NDggMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBsb2FkbXNnY2F0LmMgKF9ubF9sb2FkX2RvbWFpbik6Ci0tCVVzZSBtbWFwIGZvciBsb2FkaW5nIG9ubHkgd2hlbiBtdW5tYXAgZnVuY3Rpb24gaXMKLS0JYWxzbyBhdmFpbGFibGUuCi0tCi0tCSogTWFrZWZpbGUuaW4gKGluc3RhbGwpOiBEZXBlbmQgb24gYGFsbCcgZ29hbC4KLS0KLS1XZWQgQXVnICA5IDExOjA0OjMzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogbG9jYWxlYWxpYXMuYyAocmVhZF9hbGlhc19maWxlKToKLS0JRG8gbm90IG92ZXJ3cml0ZSAnXG4nIHdoZW4gdGVybWluYXRpbmcgYWxpYXMgdmFsdWUgc3RyaW5nLgotLQotLQkqIGxvY2FsZWFsaWFzLmMgKHJlYWRfYWxpYXNfZmlsZSk6Ci0tCUhhbmRsZSBsb25nIGxpbmVzLiAgSWdub3JlIHRoZSByZXN0IG5vdCBmaXR0aW5nIGluCi0tCXRoZSBidWZmZXIgYWZ0ZXIgdGhlIGluaXRpYWwgYGZnZXRzJyBjYWxsLgotLQotLVdlZCBBdWcgIDkgMDA6NTQ6MjkgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBnZXR0ZXh0UC5oIChfbmxfbG9hZF9kb21haW4pOgotLQlBZGQgcHJvdG90eXBlLCByZXBsYWNpbmcgcHJvdG90eXBlIGZvciBfbmxfbG9hZF9tc2dfY2F0LgotLQotLQkqIGZpbmRkb21haW4uYyAoX25sX2ZpbmRfZG9tYWluKToKLS0JUmVtb3ZlIHVubmVlZGVkIHZhcmlhYmxlIGZpbGVuYW1lIGFuZCBmaWxlbmFtZV9sZW4uCi0tCShleHBhbmRfYWxpYXMpOiBSZW1vdmUgcHJvdG90eXBlIGJlY2F1c2UgZnVuY3Rpb25zIGRvZXMgbm90Ci0tIAlleGlzdCBhbnltb3JlLgotLQotLQkqIGxvY2FsZWFsaWFzLmMgKHJlYWRfYWxpYXNfZmlsZSk6Ci0tCUNoYW5nZSB0eXBlIG9mIGZuYW1lX2xlbiBwYXJhbWV0ZXIgdG8gaW50LgotLQkoeG1hbGxvYyk6IEFkZCBwcm90b3R5cGUuCi0tCi0tCSogbG9hZG1zZ2NhdC5jOiBCZXR0ZXIgcHJvdG90eXBlcyBmb3IgeG1hbGxvYy4KLS0KLS1UdWUgQXVnICA4IDIyOjMwOjM5IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZmluZGRvbWFpbi5jIChfbmxfZmluZF9kb21haW4pOgotLQlBbGxvdyBhbGlhcyBuYW1lIHRvIGJlIGNvbnN0cnVjdGVkIGZyb20gdGhlIGZvdXIgY29tcG9uZW50cy4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoYWxpYXNwYXRoKTogTmV3IHZhcmlhYmxlLiAgU2V0IHRvIHByZWxpbWluYXJ5IHZhbHVlLgotLQkoU09VUkNFUyk6IEFkZCBsb2NhbGVhbGlhcy5jLgotLQkoT0JKRUNUUyk6IEFkZCBsb2NhbGVhbGlhcy5vLgotLQotLQkqIGdldHRleHRQLmg6IEFkZCBwcm90b3R5cGUgZm9yIF9ubF9leHBhbmRfYWxpYXMuCi0tCi0tCSogZmluZGRvbWFpbi5jOiBBbGlhc2luZyBoYW5kbGVkIGluIGludGwvbG9jYWxlYWxpYXMuYy4KLS0KLS0JKiBsb2NhbGVhbGlhcy5jOiBBbGlhc2luZyBmb3IgbG9jYWxlIG5hbWVzLgotLQotLQkqIGJpbmR0ZXh0ZG9tLmM6IEJldHRlciBwcm90b3R5cGVzIGZvciB4bWFsbG9jIGFuZCB4c3RyZHVwLgotLQotLU1vbiBBdWcgIDcgMjM6NDc6NDIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoRElTVEZJTEVTKTogZ2V0dGV4dC5wZXJsIGlzIG5vdyBmb3VuZCBpbiBtaXNjLy4KLS0KLS0JKiBjYXQtY29tcGF0LmMgKGJpbmR0ZXh0ZG9tYWluKToKLS0JQ29ycmVjdCBpbXBsZW1lbnRhdGlvbi4gIGRpcm5hbWUgcGFyYW1ldGVyIHdhcyBub3QgdXNlZC4KLS0JUmVwb3J0ZWQgYnkgTWFyY3VzIERhbmllbHMuCi0tCi0tCSogZ2V0dGV4dFAuaCAobG9hZGVkX2RvbWFpbik6Ci0tCU5ldyBmaWVsZHMgYHN1Y2Nlc3NvcicgYW5kIGBkZWNpZGVkJyBmb3Igb28sIGxhenkKLS0JbWVzc2FnZSBoYW5kbGluZyBpbXBsZW1lbnRhdGlvbi4KLS0KLS0JKiBkY2dldHRleHQuYzoKLS0JQWRvcHQgZm9yIG9vLCBsYXp5IG1lc3NhZ2UgaGFuZGxpaW5nLgotLSAgCU5vdyB3ZSBjYW4gaW5oZXJpdCB0cmFuc2xhdGlvbnMgZnJvbSBsZXNzIHNwZWNpZmljIGxvY2FsZXMuCi0tCShmaW5kX21zZyk6IE5ldyBmdW5jdGlvbi4KLS0KLS0JKiBsb2FkbXNnY2F0LmMsIGZpbmRkb21haW4uYzoKLS0JQ29tcGxldGUgcmV3cml0ZS4gIEltcGxlbWVudCBvbywgbGF6eSBtZXNzYWdlIGhhbmRsaW5nIDotKS4KLS0gIAlXZSBub3cgaGF2ZSBhbiBhZGRpdGlvbmFsIGVudmlyb25tZW50IHZhcmlhYmxlIGBMQU5HVUFHRScgd2l0aAotLSAJYSBoaWdoZXIgcHJpb3JpdHkgdGhhbiBMQ19BTEwgZm9yIHRoZSBMQ19NRVNTQUdFIGxvY2FsZS4KLS0gIAlIZXJlIHdlIGNhbiBzZXQgYSBjb2xvbiBzZXBhcmF0ZWQgbGlzdCBvZiBzcGVjaWZpY2F0aW9ucyBlYWNoCi0tIAlvZiB0aGUgZm9ybSBgbGFuZ3VhZ2VbX3RlcnJpdG9yeVsuY29kZXNldF1dW0Btb2RpZmllcl0nLgotLQotLVNhdCBBdWcgIDUgMDk6NTU6NDIgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBmaW5kZG9tYWluLmMgKHVuaXN0ZC5oKToKLS0JSW5jbHVkZSB0byBnZXQgX1BDX1BBVEhfTUFYIGRlZmluZWQgb24gc3lzdGVtIGhhdmluZyBpdC4KLS0KLS1GcmkgQXVnICA0IDIyOjQyOjAwIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZmluZGRvbWFpbi5jIChzdHBjcHkpOiBJbmNsdWRlIHByb3RvdHlwZS4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoZGlzdCk6IFJlbW92ZSBgY29weWluZyBpbnN0ZWFkJyBtZXNzYWdlLgotLQotLVdlZCBBdWcgIDIgMTg6NTI6MDMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoSUQsIFRBR1MpOiBEbyBub3QgdXNlICReLgotLQotLVR1ZSBBdWcgIDEgMjA6MDc6MTEgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoVEFHUywgSUQpOiBVc2UgJF4gYXMgY29tbWFuZCBhcmd1bWVudC4KLS0JKFRBR1MpOiBHaXZlIGV0YWdzIC1vIG9wdGlvbiB0IHdyaXRlIHRvIGN1cnJlbnQgZGlyZWN0b3J5LAotLSAJbm90ICQoc3JjZGlyKS4KLS0JKElEKTogVXNlICQoc3JjZGlyKSBpbnN0ZWFkIG9zICQodG9wX3NyY2Rpcikvc3JjLgotLQkoZGlzdGNsZWFuKTogUmVtb3ZlIElELgotLQotLVN1biBKdWwgMzAgMTE6NTE6NDYgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoZ251bG9jYWxlZGlyKToKLS0JTmV3IHZhcmlhYmxlLCBhbHdheXMgdXNpbmcgc2hhcmUvIGZvciBkYXRhIGRpcmVjdG9yeS4KLS0JKERFRlMpOiBBZGQgR05VTE9DQUxFRElSLCB1c2VkIGluIGZpbmRkb21haW4uYy4KLS0KLS0JKiBmaW5kZG9tYWluLmMgKF9ubF9kZWZhdWx0X2Rpcm5hbWUpOgotLQlTZXQgdG8gR05VTE9DQUxFRElSLCBiZWNhdXNlIGl0IGFsd2F5cyBoYXMgdG8gcG9pbnQKLS0JdG8gdGhlIGRpcmVjdG9yeSB3aGVyZSBHTlUgZ2V0dGV4dCBMaWJyYXJ5IHdyaXRlcyBpdCB0by4KLS0KLS0JKiBpbnRsLWNvbXBhdC5jICh0ZXh0ZG9tYWluLCBiaW5kdGV4dGRvbWFpbik6Ci0tCVVuZGVmaW5lIG1hY3JvcyBiZWZvcmUgZnVuY3Rpb24gZGVmaW5pdGlvbi4KLS0KLS1TYXQgSnVsIDIyIDAxOjEwOjAyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogbGliZ2V0dGV4dC5oIChfTElCSU5UTF9IKToKLS0JUHJvdGVjdCBkZWZpbml0aW9uIGluIGNhc2Ugd2hlcmUgdGhpcyBmaWxlIGlzIGluY2x1ZGVkIGFzCi0tCWxpYmdldHRleHQuaCBvbiBTb2xhcmlzIG1hY2hpbmVzLiAgQWRkIGNvbW1lbnQgYWJvdXQgdGhpcy4KLS0KLS1XZWQgSnVsIDE5IDAyOjM2OjQyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogaW50bC1jb21wYXQuYyAodGV4dGRvbWFpbik6IENvcnJlY3QgdHlwby4KLS0KLS1XZWQgSnVsIDE5IDAxOjUxOjM1IDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogZGNnZXR0ZXh0LmMgKGRjZ2V0dGV4dCk6IEZ1bmN0aW9uIG5vdyBjYWxsZWQgX19kY2dldHRleHQuCi0tCi0tCSogZGdldHRleHQuYyAoZGdldHRleHQpOiBOb3cgY2FsbGVkIF9fZGdldHRleHQgYW5kIGNhbGxzCi0tIAlfX2RjZ2V0dGV4dC4KLS0KLS0JKiBnZXR0ZXh0LmMgKGdldHRleHQpOgotLQlGdW5jdGlvbiBub3cgY2FsbGVkIF9fZ2V0dGV4dCBhbmQgY2FsbHMgX19kZ2V0dGV4dC4KLS0KLS0JKiB0ZXh0ZG9tYWluLmMgKHRleHRkb21haW4pOiBGdW5jdGlvbiBub3cgY2FsbGVkIF9fdGV4dGRvbWFpbi4KLS0KLS0JKiBiaW5kdGV4dGRvbS5jIChiaW5kdGV4dGRvbWFpbik6IEZ1bmN0aW9uIG5vdyBjYWxsZWQKLS0gCV9fYmluZHRleHRkb21haW4uCi0tCi0tCSogaW50bC1jb21wYXQuYzogSW5pdGlhbCByZXZpc2lvbi4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoU09VUkNFUyk6IEFkZCBpbnRsLWNvbXBhdC5jLgotLQkoT0JKRUNUUyk6IFdlIGFsd2F5cyBjb21waWxlIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGZ1bmN0aW9ucy4KLS0gIAlPQkpFQ1RTIGNvbnRhaW5zIGFsbCBvYmplY3RzIGJ1dCBjYXQtY29tcGF0Lm8sIC4uL3BvL2NhdC1pZi10YmwubywKLS0gCWFuZCBpbnRsLWNvbXBhdC5vLgotLSAgCShHRVRUT0JKUyk6IENvbnRhaW5zIG5vdyBvbmx5IGludGwtY29tcGF0Lm8uCi0tCi0tCSogbGliZ2V0dGV4dC5oOgotLQlSZS1pbmNsdWRlIHByb3RlY3Rpb24gbWF0Y2hlcyBkdWFsaXN0aWMgY2hhcmFjdGVyIG9mIGxpYmdldHRleHQuaC4KLS0JRm9yIGFsbCBmdW5jdGlvbnMgaW4gR05VIGdldHRleHQgbGlicmFyeSBkZWZpbmUgX18gY291bnRlciBwYXJ0LgotLQotLQkqIGZpbmRkb21haW4uYyAoc3RyY2hyKTogRGVmaW5lIGFzIGluZGV4IGlmIG5vdCBmb3VuZCBpbiBDIGxpYnJhcnkuCi0tCShfbmxfZmluZF9kb21haW4pOiBGb3IgcmVsYXRpdmUgcGF0aHMgcGFzdGUgLyBpbiBiZXR3ZWVuLgotLQotLVR1ZSBKdWwgMTggMTY6Mzc6NDUgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBsb2FkbXNnY2F0LmMsIGZpbmRkb21haW4uYzogQWRkIGluY2x1c2lvbiBvZiBzeXMvdHlwZXMuaC4KLS0KLS0JKiB4b3Blbi1tc2cuc2VkOiBGaXggYnVnIHdpdGggYG1zZ3N0ciAiIicgbGluZXMuCi0tCUEgbGl0dGxlIGJpdCBiZXR0ZXIgY29tbWVudHMuCi0tCi0tVHVlIEp1bCAxOCAwMToxODoyNyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluOgotLQlwby1tb2RlLmVsLCBtYWtlbGlua3MsIGNvbWJpbmUtc2ggYXJlIG5vdyBmb3VuZCBpbiAuLi9taXNjLgotLQotLQkqIHBvLW1vZGUuZWwsIG1ha2VsaW5rcywgY29tYmluZS1zaCwgZWxpc3AtY29tcDoKLS0JTW92ZWQgdG8gLi4vbWlzYy8uCi0tCi0tCSogbGliZ2V0dGV4dC5oLCBnZXR0ZXh0UC5oLCBnZXR0ZXh0Lmg6IFVuaWZvcm0gdGVzdCBmb3IgX19TVERDX18uCi0tCi0tU3VuIEp1bCAxNiAyMjozMzowMiAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIE1ha2VmaWxlLmluIChJTlNUQUxMLCBJTlNUQUxMX0RBVEEpOiBOZXcgdmFyaWFibGVzLgotLQkoaW5zdGFsbC1kYXRhLCB1bmluc3RhbGwpOiBJbnN0YWxsL3VuaW5zdGFsbCAuZWxjIGZpbGUuCi0tCi0tCSogcG8tbW9kZS5lbCAoSW5zdGFsbGF0aW9uIGNvbW1lbnQpOgotLQlBZGQgLnBveCBhcyBwb3NzaWJsZSBleHRlbnNpb24gb2YgLnBvIGZpbGVzLgotLQotLVN1biBKdWwgMTYgMTM6MjM6MjcgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBlbGlzcC1jb21wOiBDb21wbGV0ZSBuZXcgdmVyc2lvbiBieSBGcmFuYyxvaXM6IFRoaXMgZG9lcyBub3QKLS0gCWZhaWwgd2hlbiBub3QgY29tcGlsaW5nIGluIHRoZSBzb3VyY2UgZGlyZWN0b3J5LgotLQotLVN1biBKdWwgMTYgMDA6MTI6MTcgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoLi4vcG8vY2F0LWlkLXRibC5vKToKLS0JVXNlICQoTUFLRSkgaW5zdGVhZCBvZiBtYWtlIGZvciByZWN1cnNpdmUgbWFrZS4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoLmVsLmVsYyk6IFVzZSAkKFNIRUxMKSBpbnN0ZWFkIG9mIC9iaW4vc2guCi0tCShpbnN0YWxsLWV4ZWMpOiBBZGQgbWlzc2luZyBkdW1teSBnb2FsLgotLQkoaW5zdGFsbC1kYXRhLCB1bmluc3RhbGwpOiBAIGluIG11bHRpLWxpbmUgc2hlbGwgY29tbWFuZCBhdAotLSAJYmVnaW5uaW5nLCBub3QgaW4gZnJvbnQgb2YgZWNoby4gIFJlcG9ydGVkIGJ5IEVyaWMgQmFja3VzLgotLQotLVNhdCBKdWwgMTUgMDA6MjE6MjggMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoRElTVEZJTEVTKToKLS0JUmVuYW1lIGxpYmdldHRleHQucGVybCB0byBnZXR0ZXh0LnBlcmwgdG8gZml0IGluIDE0IGNoYXJzCi0tCWZpbGUgc3lzdGVtcy4KLS0KLS0JKiBnZXR0ZXh0LnBlcmw6Ci0tIAlSZW5hbWUgdG8gZ2V0dGV4dC5wZXJsIHRvIGZpdCBpbiAxNCBjaGFycyBmaWxlIHN5c3RlbXMuCi0tCi0tVGh1IEp1bCAxMyAyMzoxNzoyMCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIGNhdC1jb21wYXQuYzogSWYgIVNURENfSEVBREVSUyB0cnkgdG8gaW5jbHVkZSBtYWxsb2MuaC4KLS0KLS1UaHUgSnVsIDEzIDIwOjU1OjAyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogcG8ydGJsLnNlZC5pbjogUHJldHR5IHByaW50aW5nLgotLQotLQkqIGxpbnV4LW1zZy5zZWQsIHhvcGVuLW1zZy5zZWQ6Ci0tCUNvcnJlY3QgYnVncyB3aXRoIGhhbmRsaW5nIHN1YnN0aXR1dGUgZmxhZ3MgaW4gYnJhbmNoZXMuCi0tCi0tCSogaGFzaC1zdHJpbmcuaCAoaGFzaF9zdHJpbmcpOgotLQlPbGQgSyZSIGNvbXBpbGVycyBkb24ndCB1bmRlciBzdGFuZCBgdW5zaWduZWQgY2hhcicuCi0tCi0tCSogZ2V0dGV4dC5oIChubHNfdWludDMyKToKLS0JU29tZSBvbGQgSyZSIGNvbXBpbGVycyAoZWcgSFApIGRvbid0IHVuZGVyc3RhbmQgYHVuc2lnbmVkIGludCcuCi0tCi0tCSogY2F0LWNvbXBhdC5jIChtc2dfdG9fY2F0X2lkKTogRGUtQU5TSS1meSBwcm90b3R5cGVzLgotLQotLVRodSBKdWwgMTMgMDE6MzQ6MzMgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiBNYWtlZmlsZS5pbiAoRUxDRklMRVMpOiBOZXcgdmFyaWFibGUuCi0tCShESVNURklMRVMpOiBBZGQgZWxpc3AtY29tcC4KLS0JQWRkIGltcGxpY2l0IHJ1bGUgZm9yIC5lbCAtPiAuZWxjIGNvbXBpbGF0aW9uLgotLQkoaW5zdGFsbC1kYXRhKTogaW5zdGFsbCAkRUxDRklMRVMKLS0JKGNsZWFuKTogcmVuYW1lZCBwby10by10YmwgYW5kIHBvLXRvLW1zZyB0byBwbzJ0YmwgYW5kIHBvMm1zZyByZXNwLgotLQotLQkqIGVsaXNwLWNvbXA6IEluaXRpYWwgcmV2aXNpb24KLS0KLS1XZWQgSnVsIDEyIDE2OjE0OjUyIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW46Ci0tCWNhdC1pZC10YmwuYyBpcyBub3cgZm91bmQgaW4gcG8vLiAgVGhpcyBlbmFibGVzIHVzIHRvIHVzZSBhbiBpZGVudGljYWwKLS0JaW50bC8gZGlyZWN0b3J5IGluIGFsbCBwYWNrYWdlcy4KLS0KLS0JKiBkY2dldHRleHQuYyAoZGNnZXR0ZXh0KTogaGFzaGluZyBkb2VzIG5vdCB3b3JrIGZvciB0YWJsZSBzaXplIDw9IDIuCi0tCi0tCSogdGV4dGRvbWFpbi5jOiBmaXggdHlwbyAoI2lmIGRlZiAtPiAjaWYgZGVmaW5lZCkKLS0KLS1UdWUgSnVsIDExIDE4OjQ0OjQzIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW4gKHN0YW1wLWNhdC1pZCk6IHVzZSB0b3Bfc3JjZGlyIHRvIGFkZHJlc3Mgc291cmNlIGZpbGVzCi0tCShESVNURklMRVMsZGlzdGNsZWFuKTogbW92ZSB0dXBkYXRlLnBlcmwgdG8gc3JjLwotLQotLQkqIHBvLXRvLXRibC5zZWQuaW46Ci0tCWFkZCBhZGRpdGlvbmFsIGp1bXAgdG8gY2xlYXIgY2hhbmdlIGZsYWcgdG8gcmVjb2duaXplIG11bHRpbGluZSBzdHJpbmdzCi0tCi0tVHVlIEp1bCAxMSAwMTozMjo1MCAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIHRleHRkb21haW4uYzogUHJvdGVjdCBpbmNsdXNpb24gb2Ygc3RkbGliLmggYW5kIHN0cmluZy5oLgotLQotLQkqIGxvYWRtc2djYXQuYzogUHJvdGVjdCBpbmNsdXNpb24gb2Ygc3RkbGliLmguCi0tCi0tCSogbGliZ2V0dGV4dC5oOiBQcm90ZWN0IGluY2x1c2lvbiBvZiBsb2NhbGUuaC4KLS0JQWxsb3cgdXNlIGluIEMrKyBwcm9ncmFtcy4KLS0JRGVmaW5lIE5VTEwgaXMgbm90IGhhcHBlbmVkIGFscmVhZHkuCi0tCi0tCSogTWFrZWZpbGUuaW4gKERJU1RGSUxFUyk6IHNoaXAgcG8tdG8tdGJsLnNlZC5pbiBpbnN0ZWFkIG9mCi0tCXBvLXRvLXRibC5zZWQuCi0tCShkaXN0Y2xlYW4pOiByZW1vdmUgcG8tdG8tdGJsLnNlZCBhbmQgdHVwZGF0ZS5wZXJsLgotLQotLQkqIHR1cGRhdGUucGVybC5pbjogU3Vic3RpdHV0ZSBQZXJsIHBhdGggZXZlbiBpbiBleGVjIGxpbmUuCi0tCURvbid0IGluY2x1ZGUgZW50cmllcyB3aXRob3V0IHRyYW5zbGF0aW9uIGZyb20gb2xkIC5wbyBmaWxlLgotLQotLVR1ZSBKdWwgIDQgMDA6NDE6NTEgMTk5NSAgVWxyaWNoIERyZXBwZXIgIDxkcmVwcGVyQG15d2FyZT4KLS0KLS0JKiB0dXBkYXRlLnBlcmwuaW46IHVzZSAiVXBkYXRlZDogIiBpbiBtc2dpZCAiIi4KLS0KLS0JKiBjYXQtY29tcGF0LmM6IEZpeCB0eXBvIChMT0NBTERJUiAtPiBMT0NBTEVESVIpLgotLSAJRGVmaW5lIGdldGVudiBpZiAhX19TVERDX18uCi0tCi0tCSogYmluZHRleHRkb20uYzogUHJvdGVjdCBzdGRsaWIuaCBhbmQgc3RyaW5nLmggaW5jbHVzaW9uLgotLSAJRGVmaW5lIGZyZWUgaWYgIV9fU1REQ19fLgotLQotLQkqIGZpbmRkb21haW4uYzogQ2hhbmdlIERFRl9NU0dfRE9NX0RJUiB0byBMT0NBTEVESVIuCi0tIAlEZWZpbmUgZnJlZSBpZiAhX19TVERDX18uCi0tCi0tCSogY2F0LWNvbXBhdC5jOiBDaGFuZ2UgREVGX01TR19ET01fRElSIHRvIExPQ0FMRURJUi4KLS0KLS1Nb24gSnVsICAzIDIzOjU2OjMwIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0tCi0tCSogTWFrZWZpbGUuaW46IFVzZSBMT0NBTEVESVIgaW5zdGVhZCBvZiBERUZfTVNHX0RPTV9ESVIuCi0tCVJlbW92ZSB1bm5lZWRlZCAkKHNyY2RpcikgZnJvbSBNYWtlZmlsZS5pbiBkZXBlbmRlbmN5LgotLQotLQkqIG1ha2VsaW5rczogQWRkIGNvcHlyaWdodCBhbmQgc2hvcnQgZGVzY3JpcHRpb24uCi0tCi0tCSogcG8tbW9kZS5lbDogTGFzdCB2ZXJzaW9uIGZvciAwLjcuCi0tCi0tCSogdHVwZGF0ZS5wZXJsLmluOiBGaXggZGllIG1lc3NhZ2UuCi0tCi0tCSogZGNnZXR0ZXh0LmM6IFByb3RlY3QgaW5jbHVkZSBvZiBzdHJpbmcuaC4KLS0KLS0JKiBnZXR0ZXh0LmM6IFByb3RlY3QgaW5jbHVkZSBvZiBzdGRsaWIuaCBhbmQgZnVydGhlciB0cmllcyB0byBnZXQgTlVMTC4KLS0KLS0JKiBmaW5kZG9tYWluLmM6IFNvbWUgY29ycmVjdGlvbnMgaW4gaW5jbHVkZXMuCi0tCi0tCSogTWFrZWZpbGUuaW4gKElOQ0xVREVTKTogUHJ1bmUgbGlzdCBjb3JyZWN0IHBhdGggdG8gTWFrZWZpbGUuaW4uCi0tCi0tCSogcG8tdG8tdGJsLnNlZDogQWRvcHQgZm9yIG5ldyAucG8gZmlsZSBmb3JtYXQuCi0tCi0tCSogbGludXgtbXNnLnNlZCwgeG9wZW4tbXNnLnNlZDogQWRvcHQgZm9yIG5ldyAucG8gZmlsZSBmb3JtYXQuCi0tCi0tU3VuIEp1bCAgMiAyMzo1NTowMyAxOTk1ICBVbHJpY2ggRHJlcHBlciAgPGRyZXBwZXJAbXl3YXJlPgotLQotLQkqIHR1cGRhdGUucGVybC5pbjogQ29tcGxldGUgcmV3cml0ZSBmb3IgbmV3IC5wbyBmaWxlIGZvcm1hdC4KLSsyMDA0LTAxLTI5ICBHTlUgIDxidWctZ251LWdldHRleHRAZ251Lm9yZz4KLSAKLS1TdW4gSnVsICAyIDAyOjA2OjUwIDE5OTUgIFVscmljaCBEcmVwcGVyICA8ZHJlcHBlckBteXdhcmU+Ci0rCSogVmVyc2lvbiAwLjE0LjEgcmVsZWFzZWQuCi0gCi0tCSogRmlyc3Qgb2ZmaWNpYWwgcmVsZWFzZS4gIFRoaXMgZGlyZWN0b3J5IGNvbnRhaW5zIGFsbCB0aGUgY29kZQotLQluZWVkZWQgdG8gaW50ZXJuYXRpb25hbGl6ZSBvd24gcGFja2FnZXMuICBJdCBwcm92aWRlcyBmdW5jdGlvbnMKLS0Jd2hpY2ggYWxsb3cgdG8gdXNlIHRoZSBYL09wZW4gY2F0Z2V0cyBmdW5jdGlvbiB3aXRoIGFuIGludGVyZmFjZQotLQlsaWtlIHRoZSBVbmlmb3J1bSBnZXR0ZXh0IGZ1bmN0aW9uLiAgRm9yIHN5c3RlbSB3aGljaCBkb2VzIG5vdAotLQloYXZlIG5laXRoZXIgb2YgdGhvc2UgYSBjb21wbGV0ZSBpbXBsZW1lbnRhdGlvbiBpcyBwcm92aWRlZC4KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9jb25maWcuY2hhcnNldAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9jb25maWcuY2hhcnNldAkyMDA0LTA5LTEyIDE0OjQwOjM0LjM1NDc0ODI0MCAtMDQwMAotQEAgLTAsMCArMSw2MDggQEAKLSsjISAvYmluL3NoCi0rIyBPdXRwdXQgYSBzeXN0ZW0gZGVwZW5kZW50IHRhYmxlIG9mIGNoYXJhY3RlciBlbmNvZGluZyBhbGlhc2VzLgotKyMKLSsjICAgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIwotKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rIyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsjICAgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsjICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyMgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyMgICBVU0EuCi0rIwotKyMgVGhlIHRhYmxlIGNvbnNpc3RzIG9mIGxpbmVzIG9mIHRoZSBmb3JtCi0rIyAgICBBTElBUyAgQ0FOT05JQ0FMCi0rIwotKyMgQUxJQVMgaXMgdGhlIChzeXN0ZW0gZGVwZW5kZW50KSByZXN1bHQgb2YgIm5sX2xhbmdpbmZvIChDT0RFU0VUKSIuCi0rIyBBTElBUyBpcyBjb21wYXJlZCBpbiBhIGNhc2Ugc2Vuc2l0aXZlIHdheS4KLSsjCi0rIyBDQU5PTklDQUwgaXMgdGhlIEdOVSBjYW5vbmljYWwgbmFtZSBmb3IgdGhpcyBjaGFyYWN0ZXIgZW5jb2RpbmcuCi0rIyBJdCBtdXN0IGJlIGFuIGVuY29kaW5nIHN1cHBvcnRlZCBieSBsaWJpY29udi4gU3VwcG9ydCBieSBHTlUgbGliYyBpcwotKyMgYWxzbyBkZXNpcmFibGUuIENBTk9OSUNBTCBpcyBjYXNlIGluc2Vuc2l0aXZlLiBVc3VhbGx5IGFuIHVwcGVyIGNhc2UKLSsjIE1JTUUgY2hhcnNldCBuYW1lIGlzIHByZWZlcnJlZC4KLSsjIFRoZSBjdXJyZW50IGxpc3Qgb2YgR05VIGNhbm9uaWNhbCBjaGFyc2V0IG5hbWVzIGlzIGFzIGZvbGxvd3MuCi0rIwotKyMgICAgICAgbmFtZSAgICAgICAgICAgICAgTUlNRT8gICAgICAgICAgICAgdXNlZCBieSB3aGljaCBzeXN0ZW1zCi0rIyAgIEFTQ0lJLCBBTlNJX1gzLjQtMTk2OCAgICAgICBnbGliYyBzb2xhcmlzIGZyZWVic2QgZGFyd2luCi0rIyAgIElTTy04ODU5LTEgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBpcml4IG9zZiBzb2xhcmlzIGZyZWVic2QgZGFyd2luCi0rIyAgIElTTy04ODU5LTIgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBpcml4IG9zZiBzb2xhcmlzIGZyZWVic2QgZGFyd2luCi0rIyAgIElTTy04ODU5LTMgICAgICAgICAgICAgIFkgICBnbGliYyBzb2xhcmlzCi0rIyAgIElTTy04ODU5LTQgICAgICAgICAgICAgIFkgICBvc2Ygc29sYXJpcyBmcmVlYnNkIGRhcndpbgotKyMgICBJU08tODg1OS01ICAgICAgICAgICAgICBZICAgZ2xpYmMgYWl4IGhwdXggaXJpeCBvc2Ygc29sYXJpcyBmcmVlYnNkIGRhcndpbgotKyMgICBJU08tODg1OS02ICAgICAgICAgICAgICBZICAgZ2xpYmMgYWl4IGhwdXggc29sYXJpcwotKyMgICBJU08tODg1OS03ICAgICAgICAgICAgICBZICAgZ2xpYmMgYWl4IGhwdXggaXJpeCBvc2Ygc29sYXJpcwotKyMgICBJU08tODg1OS04ICAgICAgICAgICAgICBZICAgZ2xpYmMgYWl4IGhwdXggb3NmIHNvbGFyaXMKLSsjICAgSVNPLTg4NTktOSAgICAgICAgICAgICAgWSAgIGdsaWJjIGFpeCBocHV4IGlyaXggb3NmIHNvbGFyaXMKLSsjICAgSVNPLTg4NTktMTMgICAgICAgICAgICAgICAgIGdsaWJjCi0rIyAgIElTTy04ODU5LTE0ICAgICAgICAgICAgICAgICBnbGliYwotKyMgICBJU08tODg1OS0xNSAgICAgICAgICAgICAgICAgZ2xpYmMgYWl4IG9zZiBzb2xhcmlzIGZyZWVic2QKLSsjICAgS09JOC1SICAgICAgICAgICAgICAgICAgWSAgIGdsaWJjIHNvbGFyaXMgZnJlZWJzZCBkYXJ3aW4KLSsjICAgS09JOC1VICAgICAgICAgICAgICAgICAgWSAgIGdsaWJjIGZyZWVic2QgZGFyd2luCi0rIyAgIEtPSTgtVCAgICAgICAgICAgICAgICAgICAgICBnbGliYwotKyMgICBDUDQzNyAgICAgICAgICAgICAgICAgICAgICAgZG9zCi0rIyAgIENQNzc1ICAgICAgICAgICAgICAgICAgICAgICBkb3MKLSsjICAgQ1A4NTAgICAgICAgICAgICAgICAgICAgICAgIGFpeCBvc2YgZG9zCi0rIyAgIENQODUyICAgICAgICAgICAgICAgICAgICAgICBkb3MKLSsjICAgQ1A4NTUgICAgICAgICAgICAgICAgICAgICAgIGRvcwotKyMgICBDUDg1NiAgICAgICAgICAgICAgICAgICAgICAgYWl4Ci0rIyAgIENQODU3ICAgICAgICAgICAgICAgICAgICAgICBkb3MKLSsjICAgQ1A4NjEgICAgICAgICAgICAgICAgICAgICAgIGRvcwotKyMgICBDUDg2MiAgICAgICAgICAgICAgICAgICAgICAgZG9zCi0rIyAgIENQODY0ICAgICAgICAgICAgICAgICAgICAgICBkb3MKLSsjICAgQ1A4NjUgICAgICAgICAgICAgICAgICAgICAgIGRvcwotKyMgICBDUDg2NiAgICAgICAgICAgICAgICAgICAgICAgZnJlZWJzZCBkYXJ3aW4gZG9zCi0rIyAgIENQODY5ICAgICAgICAgICAgICAgICAgICAgICBkb3MKLSsjICAgQ1A4NzQgICAgICAgICAgICAgICAgICAgICAgIHdvZTMyIGRvcwotKyMgICBDUDkyMiAgICAgICAgICAgICAgICAgICAgICAgYWl4Ci0rIyAgIENQOTMyICAgICAgICAgICAgICAgICAgICAgICBhaXggd29lMzIgZG9zCi0rIyAgIENQOTQzICAgICAgICAgICAgICAgICAgICAgICBhaXgKLSsjICAgQ1A5NDkgICAgICAgICAgICAgICAgICAgICAgIG9zZiB3b2UzMiBkb3MKLSsjICAgQ1A5NTAgICAgICAgICAgICAgICAgICAgICAgIHdvZTMyIGRvcwotKyMgICBDUDEwNDYgICAgICAgICAgICAgICAgICAgICAgYWl4Ci0rIyAgIENQMTEyNCAgICAgICAgICAgICAgICAgICAgICBhaXgKLSsjICAgQ1AxMTI1ICAgICAgICAgICAgICAgICAgICAgIGRvcwotKyMgICBDUDExMjkgICAgICAgICAgICAgICAgICAgICAgYWl4Ci0rIyAgIENQMTI1MCAgICAgICAgICAgICAgICAgICAgICB3b2UzMgotKyMgICBDUDEyNTEgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMgc29sYXJpcyBkYXJ3aW4gd29lMzIKLSsjICAgQ1AxMjUyICAgICAgICAgICAgICAgICAgICAgIGFpeCB3b2UzMgotKyMgICBDUDEyNTMgICAgICAgICAgICAgICAgICAgICAgd29lMzIKLSsjICAgQ1AxMjU0ICAgICAgICAgICAgICAgICAgICAgIHdvZTMyCi0rIyAgIENQMTI1NSAgICAgICAgICAgICAgICAgICAgICBnbGliYyB3b2UzMgotKyMgICBDUDEyNTYgICAgICAgICAgICAgICAgICAgICAgd29lMzIKLSsjICAgQ1AxMjU3ICAgICAgICAgICAgICAgICAgICAgIHdvZTMyCi0rIyAgIEdCMjMxMiAgICAgICAgICAgICAgICAgIFkgICBnbGliYyBhaXggaHB1eCBpcml4IHNvbGFyaXMgZnJlZWJzZCBkYXJ3aW4KLSsjICAgRVVDLUpQICAgICAgICAgICAgICAgICAgWSAgIGdsaWJjIGFpeCBocHV4IGlyaXggb3NmIHNvbGFyaXMgZnJlZWJzZCBkYXJ3aW4KLSsjICAgRVVDLUtSICAgICAgICAgICAgICAgICAgWSAgIGdsaWJjIGFpeCBocHV4IGlyaXggb3NmIHNvbGFyaXMgZnJlZWJzZCBkYXJ3aW4KLSsjICAgRVVDLVRXICAgICAgICAgICAgICAgICAgICAgIGdsaWJjIGFpeCBocHV4IGlyaXggb3NmIHNvbGFyaXMKLSsjICAgQklHNSAgICAgICAgICAgICAgICAgICAgWSAgIGdsaWJjIGFpeCBocHV4IG9zZiBzb2xhcmlzIGZyZWVic2QgZGFyd2luCi0rIyAgIEJJRzUtSEtTQ1MgICAgICAgICAgICAgICAgICBnbGliYyBzb2xhcmlzCi0rIyAgIEdCSyAgICAgICAgICAgICAgICAgICAgICAgICBnbGliYyBhaXggb3NmIHNvbGFyaXMgd29lMzIgZG9zCi0rIyAgIEdCMTgwMzAgICAgICAgICAgICAgICAgICAgICBnbGliYyBzb2xhcmlzCi0rIyAgIFNISUZUX0pJUyAgICAgICAgICAgICAgIFkgICBocHV4IG9zZiBzb2xhcmlzIGZyZWVic2QgZGFyd2luCi0rIyAgIEpPSEFCICAgICAgICAgICAgICAgICAgICAgICBnbGliYyBzb2xhcmlzIHdvZTMyCi0rIyAgIFRJUy02MjAgICAgICAgICAgICAgICAgICAgICBnbGliYyBhaXggaHB1eCBvc2Ygc29sYXJpcwotKyMgICBWSVNDSUkgICAgICAgICAgICAgICAgICBZICAgZ2xpYmMKLSsjICAgVENWTjU3MTItMSAgICAgICAgICAgICAgICAgIGdsaWJjCi0rIyAgIEdFT1JHSUFOLVBTICAgICAgICAgICAgICAgICBnbGliYwotKyMgICBIUC1ST01BTjggICAgICAgICAgICAgICAgICAgaHB1eAotKyMgICBIUC1BUkFCSUM4ICAgICAgICAgICAgICAgICAgaHB1eAotKyMgICBIUC1HUkVFSzggICAgICAgICAgICAgICAgICAgaHB1eAotKyMgICBIUC1IRUJSRVc4ICAgICAgICAgICAgICAgICAgaHB1eAotKyMgICBIUC1UVVJLSVNIOCAgICAgICAgICAgICAgICAgaHB1eAotKyMgICBIUC1LQU5BOCAgICAgICAgICAgICAgICAgICAgaHB1eAotKyMgICBERUMtS0FOSkkgICAgICAgICAgICAgICAgICAgb3NmCi0rIyAgIERFQy1IQU5ZVSAgICAgICAgICAgICAgICAgICBvc2YKLSsjICAgVVRGLTggICAgICAgICAgICAgICAgICAgWSAgIGdsaWJjIGFpeCBocHV4IG9zZiBzb2xhcmlzCi0rIwotKyMgTm90ZTogTmFtZXMgd2hpY2ggYXJlIG5vdCBtYXJrZWQgYXMgYmVpbmcgYSBNSU1FIG5hbWUgc2hvdWxkIG5vdCBiZSB1c2VkIGluCi0rIyBJbnRlcm5ldCBwcm90b2NvbHMgZm9yIGluZm9ybWF0aW9uIGludGVyY2hhbmdlIChtYWlsLCBuZXdzLCBldGMuKS4KLSsjCi0rIyBOb3RlOiBBU0NJSSBhbmQgQU5TSV9YMy40LTE5NjggYXJlIHN5bm9ueW1vdXMgY2Fub25pY2FsIG5hbWVzLiBBcHBsaWNhdGlvbnMKLSsjIG11c3QgdW5kZXJzdGFuZCBib3RoIG5hbWVzIGFuZCB0cmVhdCB0aGVtIGFzIGVxdWl2YWxlbnQuCi0rIwotKyMgVGhlIGZpcnN0IGFyZ3VtZW50IHBhc3NlZCB0byB0aGlzIGZpbGUgaXMgdGhlIGNhbm9uaWNhbCBob3N0IHNwZWNpZmljYXRpb24sCi0rIyAgICBDUFVfVFlQRS1NQU5VRkFDVFVSRVItT1BFUkFUSU5HX1NZU1RFTQotKyMgb3IKLSsjICAgIENQVV9UWVBFLU1BTlVGQUNUVVJFUi1LRVJORUwtT1BFUkFUSU5HX1NZU1RFTQotKwotK2hvc3Q9IiQxIgotK29zPWBlY2hvICIkaG9zdCIgfCBzZWQgLWUgJ3MvXlteLV0qLVteLV0qLVwoLipcKSQvXDEvJ2AKLStlY2hvICIjIFRoaXMgZmlsZSBjb250YWlucyBhIHRhYmxlIG9mIGNoYXJhY3RlciBlbmNvZGluZyBhbGlhc2VzLCIKLStlY2hvICIjIHN1aXRhYmxlIGZvciBvcGVyYXRpbmcgc3lzdGVtICcke29zfScuIgotK2VjaG8gIiMgSXQgd2FzIGF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGZyb20gY29uZmlnLmNoYXJzZXQuIgotKyMgTGlzdCBvZiByZWZlcmVuY2VzLCB1cGRhdGVkIGR1cmluZyBpbnN0YWxsYXRpb246Ci0rZWNobyAiIyBQYWNrYWdlcyB1c2luZyB0aGlzIGZpbGU6ICIKLStjYXNlICIkb3MiIGluCi0rICAgIGxpbnV4LWdudWxpYmMxKikKLSsJIyBMaW51eCBsaWJjNSBkb2Vzbid0IGhhdmUgbmxfbGFuZ2luZm8oQ09ERVNFVCk7IHRoZXJlZm9yZQotKwkjIGxvY2FsY2hhcnNldC5jIGZhbGxzIGJhY2sgdG8gdXNpbmcgdGhlIGZ1bGwgbG9jYWxlIG5hbWUKLSsJIyBmcm9tIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCi0rCWVjaG8gIkMgQVNDSUkiCi0rCWVjaG8gIlBPU0lYIEFTQ0lJIgotKwlmb3IgbCBpbiBhZiBhZl9aQSBjYSBjYV9FUyBkYSBkYV9ESyBkZSBkZV9BVCBkZV9CRSBkZV9DSCBkZV9ERSBkZV9MVSBcCi0rCSAgICAgICAgIGVuIGVuX0FVIGVuX0JXIGVuX0NBIGVuX0RLIGVuX0dCIGVuX0lFIGVuX05aIGVuX1VTIGVuX1pBIFwKLSsJICAgICAgICAgZW5fWlcgZXMgZXNfQVIgZXNfQk8gZXNfQ0wgZXNfQ08gZXNfRE8gZXNfRUMgZXNfRVMgZXNfR1QgXAotKwkgICAgICAgICBlc19ITiBlc19NWCBlc19QQSBlc19QRSBlc19QWSBlc19TViBlc19VUyBlc19VWSBlc19WRSBldCBcCi0rCSAgICAgICAgIGV0X0VFIGV1IGV1X0VTIGZpIGZpX0ZJIGZvIGZvX0ZPIGZyIGZyX0JFIGZyX0NBIGZyX0NIIGZyX0ZSIFwKLSsJICAgICAgICAgZnJfTFUgZ2EgZ2FfSUUgZ2wgZ2xfRVMgaWQgaWRfSUQgaW4gaW5fSUQgaXMgaXNfSVMgaXQgaXRfQ0ggXAotKwkgICAgICAgICBpdF9JVCBrbCBrbF9HTCBubCBubF9CRSBubF9OTCBubyBub19OTyBwdCBwdF9CUiBwdF9QVCBzdiBcCi0rCSAgICAgICAgIHN2X0ZJIHN2X1NFOyBkbwotKwkgIGVjaG8gIiRsIElTTy04ODU5LTEiCi0rCSAgZWNobyAiJGwuaXNvLTg4NTktMSBJU08tODg1OS0xIgotKwkgIGVjaG8gIiRsLmlzby04ODU5LTE1IElTTy04ODU5LTE1IgotKwkgIGVjaG8gIiRsLmlzby04ODU5LTE1QGV1cm8gSVNPLTg4NTktMTUiCi0rCSAgZWNobyAiJGxAZXVybyBJU08tODg1OS0xNSIKLSsJICBlY2hvICIkbC5jcC00MzcgQ1A0MzciCi0rCSAgZWNobyAiJGwuY3AtODUwIENQODUwIgotKwkgIGVjaG8gIiRsLmNwLTEyNTIgQ1AxMjUyIgotKwkgIGVjaG8gIiRsLmNwLTEyNTJAZXVybyBDUDEyNTIiCi0rCSAgI2VjaG8gIiRsLmF0YXJpLXN0IEFUQVJJLVNUIiAjIG5vdCBhIGNvbW1vbmx5IHVzZWQgZW5jb2RpbmcKLSsJICBlY2hvICIkbC51dGYtOCBVVEYtOCIKLSsJICBlY2hvICIkbC51dGYtOEBldXJvIFVURi04IgotKwlkb25lCi0rCWZvciBsIGluIGNzIGNzX0NaIGhyIGhyX0hSIGh1IGh1X0hVIHBsIHBsX1BMIHJvIHJvX1JPIHNrIHNrX1NLIHNsIFwKLSsJICAgICAgICAgc2xfU0kgc3Igc3JfQ1Mgc3JfWVU7IGRvCi0rCSAgZWNobyAiJGwgSVNPLTg4NTktMiIKLSsJICBlY2hvICIkbC5pc28tODg1OS0yIElTTy04ODU5LTIiCi0rCSAgZWNobyAiJGwuY3AtODUyIENQODUyIgotKwkgIGVjaG8gIiRsLmNwLTEyNTAgQ1AxMjUwIgotKwkgIGVjaG8gIiRsLnV0Zi04IFVURi04IgotKwlkb25lCi0rCWZvciBsIGluIG1rIG1rX01LIHJ1IHJ1X1JVOyBkbwotKwkgIGVjaG8gIiRsIElTTy04ODU5LTUiCi0rCSAgZWNobyAiJGwuaXNvLTg4NTktNSBJU08tODg1OS01IgotKwkgIGVjaG8gIiRsLmtvaTgtciBLT0k4LVIiCi0rCSAgZWNobyAiJGwuY3AtODY2IENQODY2IgotKwkgIGVjaG8gIiRsLmNwLTEyNTEgQ1AxMjUxIgotKwkgIGVjaG8gIiRsLnV0Zi04IFVURi04IgotKwlkb25lCi0rCWZvciBsIGluIGFyIGFyX1NBOyBkbwotKwkgIGVjaG8gIiRsIElTTy04ODU5LTYiCi0rCSAgZWNobyAiJGwuaXNvLTg4NTktNiBJU08tODg1OS02IgotKwkgIGVjaG8gIiRsLmNwLTg2NCBDUDg2NCIKLSsJICAjZWNobyAiJGwuY3AtODY4IENQODY4IiAjIG5vdCBhIGNvbW1vbmx5IHVzZWQgZW5jb2RpbmcKLSsJICBlY2hvICIkbC5jcC0xMjU2IENQMTI1NiIKLSsJICBlY2hvICIkbC51dGYtOCBVVEYtOCIKLSsJZG9uZQotKwlmb3IgbCBpbiBlbCBlbF9HUiBnciBncl9HUjsgZG8KLSsJICBlY2hvICIkbCBJU08tODg1OS03IgotKwkgIGVjaG8gIiRsLmlzby04ODU5LTcgSVNPLTg4NTktNyIKLSsJICBlY2hvICIkbC5jcC04NjkgQ1A4NjkiCi0rCSAgZWNobyAiJGwuY3AtMTI1MyBDUDEyNTMiCi0rCSAgZWNobyAiJGwuY3AtMTI1M0BldXJvIENQMTI1MyIKLSsJICBlY2hvICIkbC51dGYtOCBVVEYtOCIKLSsJICBlY2hvICIkbC51dGYtOEBldXJvIFVURi04IgotKwlkb25lCi0rCWZvciBsIGluIGhlIGhlX0lMIGl3IGl3X0lMOyBkbwotKwkgIGVjaG8gIiRsIElTTy04ODU5LTgiCi0rCSAgZWNobyAiJGwuaXNvLTg4NTktOCBJU08tODg1OS04IgotKwkgIGVjaG8gIiRsLmNwLTg2MiBDUDg2MiIKLSsJICBlY2hvICIkbC5jcC0xMjU1IENQMTI1NSIKLSsJICBlY2hvICIkbC51dGYtOCBVVEYtOCIKLSsJZG9uZQotKwlmb3IgbCBpbiB0ciB0cl9UUjsgZG8KLSsJICBlY2hvICIkbCBJU08tODg1OS05IgotKwkgIGVjaG8gIiRsLmlzby04ODU5LTkgSVNPLTg4NTktOSIKLSsJICBlY2hvICIkbC5jcC04NTcgQ1A4NTciCi0rCSAgZWNobyAiJGwuY3AtMTI1NCBDUDEyNTQiCi0rCSAgZWNobyAiJGwudXRmLTggVVRGLTgiCi0rCWRvbmUKLSsJZm9yIGwgaW4gbHQgbHRfTFQgbHYgbHZfTFY7IGRvCi0rCSAgI2VjaG8gIiRsIEJBTFRJQyIgIyBub3QgYSBjb21tb25seSB1c2VkIGVuY29kaW5nLCB3cm9uZyBlbmNvZGluZyBuYW1lCi0rCSAgZWNobyAiJGwgSVNPLTg4NTktMTMiCi0rCWRvbmUKLSsJZm9yIGwgaW4gcnVfVUEgdWsgdWtfVUE7IGRvCi0rCSAgZWNobyAiJGwgS09JOC1VIgotKwlkb25lCi0rCWZvciBsIGluIHpoIHpoX0NOOyBkbwotKwkgICNlY2hvICIkbCBHQl8yMzEyLTgwIiAjIG5vdCBhIGNvbW1vbmx5IHVzZWQgZW5jb2RpbmcsIHdyb25nIGVuY29kaW5nIG5hbWUKLSsJICBlY2hvICIkbCBHQjIzMTIiCi0rCWRvbmUKLSsJZm9yIGwgaW4gamEgamFfSlAgamFfSlAuRVVDOyBkbwotKwkgIGVjaG8gIiRsIEVVQy1KUCIKLSsJZG9uZQotKwlmb3IgbCBpbiBrbyBrb19LUjsgZG8KLSsJICBlY2hvICIkbCBFVUMtS1IiCi0rCWRvbmUKLSsJZm9yIGwgaW4gdGggdGhfVEg7IGRvCi0rCSAgZWNobyAiJGwgVElTLTYyMCIKLSsJZG9uZQotKwlmb3IgbCBpbiBmYSBmYV9JUjsgZG8KLSsJICAjZWNobyAiJGwgSVNJUkktMzM0MiIgIyBhIGJyb2tlbiBlbmNvZGluZwotKwkgIGVjaG8gIiRsLnV0Zi04IFVURi04IgotKwlkb25lCi0rCTs7Ci0rICAgIGxpbnV4KiB8ICotZ251KikKLSsJIyBXaXRoIGdsaWJjLTIuMSBvciBuZXdlciwgd2UgZG9uJ3QgbmVlZCBhbnkgY2Fub25pY2FsaXphdGlvbiwKLSsJIyBiZWNhdXNlIGdsaWJjIGhhcyBpY29udiBhbmQgYm90aCBnbGliYyBhbmQgbGliaWNvbnYgc3VwcG9ydCBhbGwKLSsJIyBHTlUgY2Fub25pY2FsIG5hbWVzIGRpcmVjdGx5LiBUaGVyZWZvcmUsIHRoZSBNYWtlZmlsZSBkb2VzIG5vdAotKwkjIG5lZWQgdG8gaW5zdGFsbCB0aGUgYWxpYXMgZmlsZSBhdCBhbGwuCi0rCSMgVGhlIGZvbGxvd2luZyBhcHBsaWVzIG9ubHkgdG8gZ2xpYmMtMi4wLnggYW5kIG9sZGVyIGxpYmNzLgotKwllY2hvICJJU09fNjQ2LklSVjoxOTgzIEFTQ0lJIgotKwk7OwotKyAgICBhaXgqKQotKwllY2hvICJJU084ODU5LTEgSVNPLTg4NTktMSIKLSsJZWNobyAiSVNPODg1OS0yIElTTy04ODU5LTIiCi0rCWVjaG8gIklTTzg4NTktNSBJU08tODg1OS01IgotKwllY2hvICJJU084ODU5LTYgSVNPLTg4NTktNiIKLSsJZWNobyAiSVNPODg1OS03IElTTy04ODU5LTciCi0rCWVjaG8gIklTTzg4NTktOCBJU08tODg1OS04IgotKwllY2hvICJJU084ODU5LTkgSVNPLTg4NTktOSIKLSsJZWNobyAiSVNPODg1OS0xNSBJU08tODg1OS0xNSIKLSsJZWNobyAiSUJNLTg1MCBDUDg1MCIKLSsJZWNobyAiSUJNLTg1NiBDUDg1NiIKLSsJZWNobyAiSUJNLTkyMSBJU08tODg1OS0xMyIKLSsJZWNobyAiSUJNLTkyMiBDUDkyMiIKLSsJZWNobyAiSUJNLTkzMiBDUDkzMiIKLSsJZWNobyAiSUJNLTk0MyBDUDk0MyIKLSsJZWNobyAiSUJNLTEwNDYgQ1AxMDQ2IgotKwllY2hvICJJQk0tMTEyNCBDUDExMjQiCi0rCWVjaG8gIklCTS0xMTI5IENQMTEyOSIKLSsJZWNobyAiSUJNLTEyNTIgQ1AxMjUyIgotKwllY2hvICJJQk0tZXVjQ04gR0IyMzEyIgotKwllY2hvICJJQk0tZXVjSlAgRVVDLUpQIgotKwllY2hvICJJQk0tZXVjS1IgRVVDLUtSIgotKwllY2hvICJJQk0tZXVjVFcgRVVDLVRXIgotKwllY2hvICJiaWc1IEJJRzUiCi0rCWVjaG8gIkdCSyBHQksiCi0rCWVjaG8gIlRJUy02MjAgVElTLTYyMCIKLSsJZWNobyAiVVRGLTggVVRGLTgiCi0rCTs7Ci0rICAgIGhwdXgqKQotKwllY2hvICJpc284ODU5MSBJU08tODg1OS0xIgotKwllY2hvICJpc284ODU5MiBJU08tODg1OS0yIgotKwllY2hvICJpc284ODU5NSBJU08tODg1OS01IgotKwllY2hvICJpc284ODU5NiBJU08tODg1OS02IgotKwllY2hvICJpc284ODU5NyBJU08tODg1OS03IgotKwllY2hvICJpc284ODU5OCBJU08tODg1OS04IgotKwllY2hvICJpc284ODU5OSBJU08tODg1OS05IgotKwllY2hvICJpc284ODU5MTUgSVNPLTg4NTktMTUiCi0rCWVjaG8gInJvbWFuOCBIUC1ST01BTjgiCi0rCWVjaG8gImFyYWJpYzggSFAtQVJBQklDOCIKLSsJZWNobyAiZ3JlZWs4IEhQLUdSRUVLOCIKLSsJZWNobyAiaGVicmV3OCBIUC1IRUJSRVc4IgotKwllY2hvICJ0dXJraXNoOCBIUC1UVVJLSVNIOCIKLSsJZWNobyAia2FuYTggSFAtS0FOQTgiCi0rCWVjaG8gInRpczYyMCBUSVMtNjIwIgotKwllY2hvICJiaWc1IEJJRzUiCi0rCWVjaG8gImV1Y0pQIEVVQy1KUCIKLSsJZWNobyAiZXVjS1IgRVVDLUtSIgotKwllY2hvICJldWNUVyBFVUMtVFciCi0rCWVjaG8gImhwMTVDTiBHQjIzMTIiCi0rCSNlY2hvICJjY2RjID8iICMgd2hhdCBpcyB0aGlzPwotKwllY2hvICJTSklTIFNISUZUX0pJUyIKLSsJZWNobyAidXRmOCBVVEYtOCIKLSsJOzsKLSsgICAgaXJpeCopCi0rCWVjaG8gIklTTzg4NTktMSBJU08tODg1OS0xIgotKwllY2hvICJJU084ODU5LTIgSVNPLTg4NTktMiIKLSsJZWNobyAiSVNPODg1OS01IElTTy04ODU5LTUiCi0rCWVjaG8gIklTTzg4NTktNyBJU08tODg1OS03IgotKwllY2hvICJJU084ODU5LTkgSVNPLTg4NTktOSIKLSsJZWNobyAiZXVjQ04gR0IyMzEyIgotKwllY2hvICJldWNKUCBFVUMtSlAiCi0rCWVjaG8gImV1Y0tSIEVVQy1LUiIKLSsJZWNobyAiZXVjVFcgRVVDLVRXIgotKwk7OwotKyAgICBvc2YqKQotKwllY2hvICJJU084ODU5LTEgSVNPLTg4NTktMSIKLSsJZWNobyAiSVNPODg1OS0yIElTTy04ODU5LTIiCi0rCWVjaG8gIklTTzg4NTktNCBJU08tODg1OS00IgotKwllY2hvICJJU084ODU5LTUgSVNPLTg4NTktNSIKLSsJZWNobyAiSVNPODg1OS03IElTTy04ODU5LTciCi0rCWVjaG8gIklTTzg4NTktOCBJU08tODg1OS04IgotKwllY2hvICJJU084ODU5LTkgSVNPLTg4NTktOSIKLSsJZWNobyAiSVNPODg1OS0xNSBJU08tODg1OS0xNSIKLSsJZWNobyAiY3A4NTAgQ1A4NTAiCi0rCWVjaG8gImJpZzUgQklHNSIKLSsJZWNobyAiZGVjaGFueXUgREVDLUhBTllVIgotKwllY2hvICJkZWNoYW56aSBHQjIzMTIiCi0rCWVjaG8gImRlY2thbmppIERFQy1LQU5KSSIKLSsJZWNobyAiZGVja29yZWFuIEVVQy1LUiIKLSsJZWNobyAiZXVjSlAgRVVDLUpQIgotKwllY2hvICJldWNLUiBFVUMtS1IiCi0rCWVjaG8gImV1Y1RXIEVVQy1UVyIKLSsJZWNobyAiR0JLIEdCSyIKLSsJZWNobyAiS1NDNTYwMSBDUDk0OSIKLSsJZWNobyAic2RlY2thbmppIEVVQy1KUCIKLSsJZWNobyAiU0pJUyBTSElGVF9KSVMiCi0rCWVjaG8gIlRBQ1RJUyBUSVMtNjIwIgotKwllY2hvICJVVEYtOCBVVEYtOCIKLSsJOzsKLSsgICAgc29sYXJpcyopCi0rCWVjaG8gIjY0NiBBU0NJSSIKLSsJZWNobyAiSVNPODg1OS0xIElTTy04ODU5LTEiCi0rCWVjaG8gIklTTzg4NTktMiBJU08tODg1OS0yIgotKwllY2hvICJJU084ODU5LTMgSVNPLTg4NTktMyIKLSsJZWNobyAiSVNPODg1OS00IElTTy04ODU5LTQiCi0rCWVjaG8gIklTTzg4NTktNSBJU08tODg1OS01IgotKwllY2hvICJJU084ODU5LTYgSVNPLTg4NTktNiIKLSsJZWNobyAiSVNPODg1OS03IElTTy04ODU5LTciCi0rCWVjaG8gIklTTzg4NTktOCBJU08tODg1OS04IgotKwllY2hvICJJU084ODU5LTkgSVNPLTg4NTktOSIKLSsJZWNobyAiSVNPODg1OS0xNSBJU08tODg1OS0xNSIKLSsJZWNobyAia29pOC1yIEtPSTgtUiIKLSsJZWNobyAiYW5zaS0xMjUxIENQMTI1MSIKLSsJZWNobyAiQklHNSBCSUc1IgotKwllY2hvICJCaWc1LUhLU0NTIEJJRzUtSEtTQ1MiCi0rCWVjaG8gImdiMjMxMiBHQjIzMTIiCi0rCWVjaG8gIkdCSyBHQksiCi0rCWVjaG8gIkdCMTgwMzAgR0IxODAzMCIKLSsJZWNobyAiY25zMTE2NDMgRVVDLVRXIgotKwllY2hvICI1NjAxIEVVQy1LUiIKLSsJZWNobyAia29fS1Iuam9oYXA5MiBKT0hBQiIKLSsJZWNobyAiZXVjSlAgRVVDLUpQIgotKwllY2hvICJQQ0sgU0hJRlRfSklTIgotKwllY2hvICJUSVM2MjAuMjUzMyBUSVMtNjIwIgotKwkjZWNobyAic3VuX2V1X2dyZWVrID8iICMgd2hhdCBpcyB0aGlzPwotKwllY2hvICJVVEYtOCBVVEYtOCIKLSsJOzsKLSsgICAgZnJlZWJzZCogfCBvczIqKQotKwkjIEZyZWVCU0QgNC4yIGRvZXNuJ3QgaGF2ZSBubF9sYW5naW5mbyhDT0RFU0VUKTsgdGhlcmVmb3JlCi0rCSMgbG9jYWxjaGFyc2V0LmMgZmFsbHMgYmFjayB0byB1c2luZyB0aGUgZnVsbCBsb2NhbGUgbmFtZQotKwkjIGZyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy4KLSsJIyBMaWtld2lzZSBmb3IgT1MvMi4gT1MvMiBoYXMgWEZyZWU4NiBqdXN0IGxpa2UgRnJlZUJTRC4gSnVzdAotKwkjIHJldXNlIEZyZWVCU0QncyBsb2NhbGUgZGF0YSBmb3IgT1MvMi4KLSsJZWNobyAiQyBBU0NJSSIKLSsJZWNobyAiVVMtQVNDSUkgQVNDSUkiCi0rCWZvciBsIGluIGxhX0xOIGx0X0xOOyBkbwotKwkgIGVjaG8gIiRsLkFTQ0lJIEFTQ0lJIgotKwlkb25lCi0rCWZvciBsIGluIGRhX0RLIGRlX0FUIGRlX0NIIGRlX0RFIGVuX0FVIGVuX0NBIGVuX0dCIGVuX1VTIGVzX0VTIFwKLSsJICAgICAgICAgZmlfRkkgZnJfQkUgZnJfQ0EgZnJfQ0ggZnJfRlIgaXNfSVMgaXRfQ0ggaXRfSVQgbGFfTE4gXAotKwkgICAgICAgICBsdF9MTiBubF9CRSBubF9OTCBub19OTyBwdF9QVCBzdl9TRTsgZG8KLSsJICBlY2hvICIkbC5JU09fODg1OS0xIElTTy04ODU5LTEiCi0rCSAgZWNobyAiJGwuRElTXzg4NTktMTUgSVNPLTg4NTktMTUiCi0rCWRvbmUKLSsJZm9yIGwgaW4gY3NfQ1ogaHJfSFIgaHVfSFUgbGFfTE4gbHRfTE4gcGxfUEwgc2xfU0k7IGRvCi0rCSAgZWNobyAiJGwuSVNPXzg4NTktMiBJU08tODg1OS0yIgotKwlkb25lCi0rCWZvciBsIGluIGxhX0xOIGx0X0xUOyBkbwotKwkgIGVjaG8gIiRsLklTT184ODU5LTQgSVNPLTg4NTktNCIKLSsJZG9uZQotKwlmb3IgbCBpbiBydV9SVSBydV9TVTsgZG8KLSsJICBlY2hvICIkbC5LT0k4LVIgS09JOC1SIgotKwkgIGVjaG8gIiRsLklTT184ODU5LTUgSVNPLTg4NTktNSIKLSsJICBlY2hvICIkbC5DUDg2NiBDUDg2NiIKLSsJZG9uZQotKwllY2hvICJ1a19VQS5LT0k4LVUgS09JOC1VIgotKwllY2hvICJ6aF9UVy5CSUc1IEJJRzUiCi0rCWVjaG8gInpoX1RXLkJpZzUgQklHNSIKLSsJZWNobyAiemhfQ04uRVVDIEdCMjMxMiIKLSsJZWNobyAiamFfSlAuRVVDIEVVQy1KUCIKLSsJZWNobyAiamFfSlAuU0pJUyBTSElGVF9KSVMiCi0rCWVjaG8gImphX0pQLlNoaWZ0X0pJUyBTSElGVF9KSVMiCi0rCWVjaG8gImtvX0tSLkVVQyBFVUMtS1IiCi0rCTs7Ci0rICAgIG5ldGJzZCopCi0rCWVjaG8gIjY0NiBBU0NJSSIKLSsJZWNobyAiSVNPODg1OS0xIElTTy04ODU5LTEiCi0rCWVjaG8gIklTTzg4NTktMiBJU08tODg1OS0yIgotKwllY2hvICJJU084ODU5LTQgSVNPLTg4NTktNCIKLSsJZWNobyAiSVNPODg1OS01IElTTy04ODU5LTUiCi0rCWVjaG8gIklTTzg4NTktMTUgSVNPLTg4NTktMTUiCi0rCWVjaG8gImV1Y0NOIEdCMjMxMiIKLSsJZWNobyAiZXVjSlAgRVVDLUpQIgotKwllY2hvICJldWNLUiBFVUMtS1IiCi0rCWVjaG8gImV1Y1RXIEVVQy1UVyIKLSsJZWNobyAiQklHNSBCSUc1IgotKwllY2hvICJTSklTIFNISUZUX0pJUyIKLSsJOzsKLSsgICAgZGFyd2luKikKLSsJIyBEYXJ3aW4gNi44IGRvZXNuJ3QgaGF2ZSBubF9sYW5naW5mbyhDT0RFU0VUKTsgdGhlcmVmb3JlCi0rCSMgbG9jYWxjaGFyc2V0LmMgZmFsbHMgYmFjayB0byB1c2luZyB0aGUgZnVsbCBsb2NhbGUgbmFtZQotKwkjIGZyb20gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcy4KLSsJZWNobyAiQyBBU0NJSSIKLSsJZm9yIGwgaW4gZW5fQVUgZW5fQ0EgZW5fR0IgZW5fVVMgbGFfTE47IGRvCi0rCSAgZWNobyAiJGwuVVMtQVNDSUkgQVNDSUkiCi0rCWRvbmUKLSsJZm9yIGwgaW4gZGFfREsgZGVfQVQgZGVfQ0ggZGVfREUgZW5fQVUgZW5fQ0EgZW5fR0IgZW5fVVMgZXNfRVMgXAotKwkgICAgICAgICBmaV9GSSBmcl9CRSBmcl9DQSBmcl9DSCBmcl9GUiBpc19JUyBpdF9DSCBpdF9JVCBubF9CRSBcCi0rCSAgICAgICAgIG5sX05MIG5vX05PIHB0X1BUIHN2X1NFOyBkbwotKwkgIGVjaG8gIiRsIElTTy04ODU5LTEiCi0rCSAgZWNobyAiJGwuSVNPODg1OS0xIElTTy04ODU5LTEiCi0rCSAgZWNobyAiJGwuSVNPODg1OS0xNSBJU08tODg1OS0xNSIKLSsJZG9uZQotKwlmb3IgbCBpbiBsYV9MTjsgZG8KLSsJICBlY2hvICIkbC5JU084ODU5LTEgSVNPLTg4NTktMSIKLSsJICBlY2hvICIkbC5JU084ODU5LTE1IElTTy04ODU5LTE1IgotKwlkb25lCi0rCWZvciBsIGluIGNzX0NaIGhyX0hSIGh1X0hVIGxhX0xOIHBsX1BMIHNsX1NJOyBkbwotKwkgIGVjaG8gIiRsLklTTzg4NTktMiBJU08tODg1OS0yIgotKwlkb25lCi0rCWZvciBsIGluIGxhX0xOIGx0X0xUOyBkbwotKwkgIGVjaG8gIiRsLklTTzg4NTktNCBJU08tODg1OS00IgotKwlkb25lCi0rCWZvciBsIGluIHJ1X1JVOyBkbwotKwkgIGVjaG8gIiRsLktPSTgtUiBLT0k4LVIiCi0rCSAgZWNobyAiJGwuSVNPODg1OS01IElTTy04ODU5LTUiCi0rCSAgZWNobyAiJGwuQ1A4NjYgQ1A4NjYiCi0rCWRvbmUKLSsJZm9yIGwgaW4gYmdfQkc7IGRvCi0rCSAgZWNobyAiJGwuQ1AxMjUxIENQMTI1MSIKLSsJZG9uZQotKwllY2hvICJ1a19VQS5LT0k4LVUgS09JOC1VIgotKwllY2hvICJ6aF9UVy5CSUc1IEJJRzUiCi0rCWVjaG8gInpoX1RXLkJpZzUgQklHNSIKLSsJZWNobyAiemhfQ04uRVVDIEdCMjMxMiIKLSsJZWNobyAiamFfSlAuRVVDIEVVQy1KUCIKLSsJZWNobyAiamFfSlAuU0pJUyBTSElGVF9KSVMiCi0rCWVjaG8gImtvX0tSLkVVQyBFVUMtS1IiCi0rCTs7Ci0rICAgIGJlb3MqKQotKwkjIEJlT1MgaGFzIGEgc2luZ2xlIGxvY2FsZSwgYW5kIGl0IGhhcyBVVEYtOCBlbmNvZGluZy4KLSsJZWNobyAiKiBVVEYtOCIKLSsJOzsKLSsgICAgbXNkb3NkamdwcCopCi0rCSMgREpHUFAgMi4wMyBkb2Vzbid0IGhhdmUgbmxfbGFuZ2luZm8oQ09ERVNFVCk7IHRoZXJlZm9yZQotKwkjIGxvY2FsY2hhcnNldC5jIGZhbGxzIGJhY2sgdG8gdXNpbmcgdGhlIGZ1bGwgbG9jYWxlIG5hbWUKLSsJIyBmcm9tIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuCi0rCWVjaG8gIiMiCi0rCWVjaG8gIiMgVGhlIGVuY29kaW5ncyBnaXZlbiBoZXJlIG1heSBub3QgYWxsIGJlIGNvcnJlY3QuIgotKwllY2hvICIjIElmIHlvdSBmaW5kIHRoYXQgdGhlIGVuY29kaW5nIGdpdmVuIGZvciB5b3VyIGxhbmd1YWdlIGFuZCIKLSsJZWNobyAiIyBjb3VudHJ5IGlzIG5vdCB0aGUgb25lIHlvdXIgRE9TIG1hY2hpbmUgYWN0dWFsbHkgdXNlcywganVzdCIKLSsJZWNobyAiIyBjb3JyZWN0IGl0IGluIHRoaXMgZmlsZSwgYW5kIHNlbmQgYSBtYWlsIHRvIgotKwllY2hvICIjIEp1YW4gTWFudWVsIEd1ZXJyZXJvIDxzdDAwMTkwNkBocnoxLmhyei50dS1kYXJtc3RhZHQuZGU+IgotKwllY2hvICIjIGFuZCBCcnVubyBIYWlibGUgPGJydW5vQGNsaXNwLm9yZz4uIgotKwllY2hvICIjIgotKwllY2hvICJDIEFTQ0lJIgotKwkjIElTTy04ODU5LTEgbGFuZ3VhZ2VzCi0rCWVjaG8gImNhIENQODUwIgotKwllY2hvICJjYV9FUyBDUDg1MCIKLSsJZWNobyAiZGEgQ1A4NjUiICAgICMgbm90IENQODUwID8/Ci0rCWVjaG8gImRhX0RLIENQODY1IiAjIG5vdCBDUDg1MCA/PwotKwllY2hvICJkZSBDUDg1MCIKLSsJZWNobyAiZGVfQVQgQ1A4NTAiCi0rCWVjaG8gImRlX0NIIENQODUwIgotKwllY2hvICJkZV9ERSBDUDg1MCIKLSsJZWNobyAiZW4gQ1A4NTAiCi0rCWVjaG8gImVuX0FVIENQODUwIiAjIG5vdCBDUDQzNyA/PwotKwllY2hvICJlbl9DQSBDUDg1MCIKLSsJZWNobyAiZW5fR0IgQ1A4NTAiCi0rCWVjaG8gImVuX05aIENQNDM3IgotKwllY2hvICJlbl9VUyBDUDQzNyIKLSsJZWNobyAiZW5fWkEgQ1A4NTAiICMgbm90IENQNDM3ID8/Ci0rCWVjaG8gImVzIENQODUwIgotKwllY2hvICJlc19BUiBDUDg1MCIKLSsJZWNobyAiZXNfQk8gQ1A4NTAiCi0rCWVjaG8gImVzX0NMIENQODUwIgotKwllY2hvICJlc19DTyBDUDg1MCIKLSsJZWNobyAiZXNfQ1IgQ1A4NTAiCi0rCWVjaG8gImVzX0NVIENQODUwIgotKwllY2hvICJlc19ETyBDUDg1MCIKLSsJZWNobyAiZXNfRUMgQ1A4NTAiCi0rCWVjaG8gImVzX0VTIENQODUwIgotKwllY2hvICJlc19HVCBDUDg1MCIKLSsJZWNobyAiZXNfSE4gQ1A4NTAiCi0rCWVjaG8gImVzX01YIENQODUwIgotKwllY2hvICJlc19OSSBDUDg1MCIKLSsJZWNobyAiZXNfUEEgQ1A4NTAiCi0rCWVjaG8gImVzX1BZIENQODUwIgotKwllY2hvICJlc19QRSBDUDg1MCIKLSsJZWNobyAiZXNfU1YgQ1A4NTAiCi0rCWVjaG8gImVzX1VZIENQODUwIgotKwllY2hvICJlc19WRSBDUDg1MCIKLSsJZWNobyAiZXQgQ1A4NTAiCi0rCWVjaG8gImV0X0VFIENQODUwIgotKwllY2hvICJldSBDUDg1MCIKLSsJZWNobyAiZXVfRVMgQ1A4NTAiCi0rCWVjaG8gImZpIENQODUwIgotKwllY2hvICJmaV9GSSBDUDg1MCIKLSsJZWNobyAiZnIgQ1A4NTAiCi0rCWVjaG8gImZyX0JFIENQODUwIgotKwllY2hvICJmcl9DQSBDUDg1MCIKLSsJZWNobyAiZnJfQ0ggQ1A4NTAiCi0rCWVjaG8gImZyX0ZSIENQODUwIgotKwllY2hvICJnYSBDUDg1MCIKLSsJZWNobyAiZ2FfSUUgQ1A4NTAiCi0rCWVjaG8gImdkIENQODUwIgotKwllY2hvICJnZF9HQiBDUDg1MCIKLSsJZWNobyAiZ2wgQ1A4NTAiCi0rCWVjaG8gImdsX0VTIENQODUwIgotKwllY2hvICJpZCBDUDg1MCIgICAgIyBub3QgQ1A0MzcgPz8KLSsJZWNobyAiaWRfSUQgQ1A4NTAiICMgbm90IENQNDM3ID8/Ci0rCWVjaG8gImlzIENQODYxIiAgICAjIG5vdCBDUDg1MCA/PwotKwllY2hvICJpc19JUyBDUDg2MSIgIyBub3QgQ1A4NTAgPz8KLSsJZWNobyAiaXQgQ1A4NTAiCi0rCWVjaG8gIml0X0NIIENQODUwIgotKwllY2hvICJpdF9JVCBDUDg1MCIKLSsJZWNobyAibHQgQ1A3NzUiCi0rCWVjaG8gImx0X0xUIENQNzc1IgotKwllY2hvICJsdiBDUDc3NSIKLSsJZWNobyAibHZfTFYgQ1A3NzUiCi0rCWVjaG8gIm5iIENQODY1IiAgICAjIG5vdCBDUDg1MCA/PwotKwllY2hvICJuYl9OTyBDUDg2NSIgIyBub3QgQ1A4NTAgPz8KLSsJZWNobyAibmwgQ1A4NTAiCi0rCWVjaG8gIm5sX0JFIENQODUwIgotKwllY2hvICJubF9OTCBDUDg1MCIKLSsJZWNobyAibm4gQ1A4NjUiICAgICMgbm90IENQODUwID8/Ci0rCWVjaG8gIm5uX05PIENQODY1IiAjIG5vdCBDUDg1MCA/PwotKwllY2hvICJubyBDUDg2NSIgICAgIyBub3QgQ1A4NTAgPz8KLSsJZWNobyAibm9fTk8gQ1A4NjUiICMgbm90IENQODUwID8/Ci0rCWVjaG8gInB0IENQODUwIgotKwllY2hvICJwdF9CUiBDUDg1MCIKLSsJZWNobyAicHRfUFQgQ1A4NTAiCi0rCWVjaG8gInN2IENQODUwIgotKwllY2hvICJzdl9TRSBDUDg1MCIKLSsJIyBJU08tODg1OS0yIGxhbmd1YWdlcwotKwllY2hvICJjcyBDUDg1MiIKLSsJZWNobyAiY3NfQ1ogQ1A4NTIiCi0rCWVjaG8gImhyIENQODUyIgotKwllY2hvICJocl9IUiBDUDg1MiIKLSsJZWNobyAiaHUgQ1A4NTIiCi0rCWVjaG8gImh1X0hVIENQODUyIgotKwllY2hvICJwbCBDUDg1MiIKLSsJZWNobyAicGxfUEwgQ1A4NTIiCi0rCWVjaG8gInJvIENQODUyIgotKwllY2hvICJyb19STyBDUDg1MiIKLSsJZWNobyAic2sgQ1A4NTIiCi0rCWVjaG8gInNrX1NLIENQODUyIgotKwllY2hvICJzbCBDUDg1MiIKLSsJZWNobyAic2xfU0kgQ1A4NTIiCi0rCWVjaG8gInNxIENQODUyIgotKwllY2hvICJzcV9BTCBDUDg1MiIKLSsJZWNobyAic3IgQ1A4NTIiICAgICMgQ1A4NTIgb3IgQ1A4NjYgb3IgQ1A4NTUgPz8KLSsJZWNobyAic3JfQ1MgQ1A4NTIiICMgQ1A4NTIgb3IgQ1A4NjYgb3IgQ1A4NTUgPz8KLSsJZWNobyAic3JfWVUgQ1A4NTIiICMgQ1A4NTIgb3IgQ1A4NjYgb3IgQ1A4NTUgPz8KLSsJIyBJU08tODg1OS0zIGxhbmd1YWdlcwotKwllY2hvICJtdCBDUDg1MCIKLSsJZWNobyAibXRfTVQgQ1A4NTAiCi0rCSMgSVNPLTg4NTktNSBsYW5ndWFnZXMKLSsJZWNobyAiYmUgQ1A4NjYiCi0rCWVjaG8gImJlX0JFIENQODY2IgotKwllY2hvICJiZyBDUDg2NiIgICAgIyBub3QgQ1A4NTUgPz8KLSsJZWNobyAiYmdfQkcgQ1A4NjYiICMgbm90IENQODU1ID8/Ci0rCWVjaG8gIm1rIENQODY2IiAgICAjIG5vdCBDUDg1NSA/PwotKwllY2hvICJta19NSyBDUDg2NiIgIyBub3QgQ1A4NTUgPz8KLSsJZWNobyAicnUgQ1A4NjYiCi0rCWVjaG8gInJ1X1JVIENQODY2IgotKwllY2hvICJ1ayBDUDExMjUiCi0rCWVjaG8gInVrX1VBIENQMTEyNSIKLSsJIyBJU08tODg1OS02IGxhbmd1YWdlcwotKwllY2hvICJhciBDUDg2NCIKLSsJZWNobyAiYXJfQUUgQ1A4NjQiCi0rCWVjaG8gImFyX0RaIENQODY0IgotKwllY2hvICJhcl9FRyBDUDg2NCIKLSsJZWNobyAiYXJfSVEgQ1A4NjQiCi0rCWVjaG8gImFyX0lSIENQODY0IgotKwllY2hvICJhcl9KTyBDUDg2NCIKLSsJZWNobyAiYXJfS1cgQ1A4NjQiCi0rCWVjaG8gImFyX01BIENQODY0IgotKwllY2hvICJhcl9PTSBDUDg2NCIKLSsJZWNobyAiYXJfUUEgQ1A4NjQiCi0rCWVjaG8gImFyX1NBIENQODY0IgotKwllY2hvICJhcl9TWSBDUDg2NCIKLSsJIyBJU08tODg1OS03IGxhbmd1YWdlcwotKwllY2hvICJlbCBDUDg2OSIKLSsJZWNobyAiZWxfR1IgQ1A4NjkiCi0rCSMgSVNPLTg4NTktOCBsYW5ndWFnZXMKLSsJZWNobyAiaGUgQ1A4NjIiCi0rCWVjaG8gImhlX0lMIENQODYyIgotKwkjIElTTy04ODU5LTkgbGFuZ3VhZ2VzCi0rCWVjaG8gInRyIENQODU3IgotKwllY2hvICJ0cl9UUiBDUDg1NyIKLSsJIyBKYXBhbmVzZQotKwllY2hvICJqYSBDUDkzMiIKLSsJZWNobyAiamFfSlAgQ1A5MzIiCi0rCSMgQ2hpbmVzZQotKwllY2hvICJ6aF9DTiBHQksiCi0rCWVjaG8gInpoX1RXIENQOTUwIiAjIG5vdCBDUDkzOCA/PwotKwkjIEtvcmVhbgotKwllY2hvICJrciBDUDk0OSIgICAgIyBub3QgQ1A5MzQgPz8KLSsJZWNobyAia3JfS1IgQ1A5NDkiICMgbm90IENQOTM0ID8/Ci0rCSMgVGhhaQotKwllY2hvICJ0aCBDUDg3NCIKLSsJZWNobyAidGhfVEggQ1A4NzQiCi0rCSMgT3RoZXIKLSsJZWNobyAiZW8gQ1A4NTAiCi0rCWVjaG8gImVvX0VPIENQODUwIgotKwk7OwotK2VzYWMKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9kY2dldHRleHQuYwkxOTk4LTA0LTI2IDA5OjIyOjM2LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9kY2dldHRleHQuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjM1OTc0NzQ4MCAtMDQwMAotQEAgLTEsNTkzICsxLDU2IEBACi0tLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIGRjZ2V0dGV4dCgzKSBmdW5jdGlvbgotLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgZGNnZXR0ZXh0KDMpIGZ1bmN0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk5LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICAgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0gICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tCi0tI2lmZGVmIF9fR05VQ19fCi0tIyBkZWZpbmUgYWxsb2NhIF9fYnVpbHRpbl9hbGxvY2EKLS0jIGRlZmluZSBIQVZFX0FMTE9DQSAxCi0tI2Vsc2UKLS0jIGlmIGRlZmluZWQgSEFWRV9BTExPQ0FfSCB8fCBkZWZpbmVkIF9MSUJDCi0tIyAgaW5jbHVkZSA8YWxsb2NhLmg+Ci0tIyBlbHNlCi0tIyAgaWZkZWYgX0FJWAotLSAjcHJhZ21hIGFsbG9jYQotLSMgIGVsc2UKLS0jICAgaWZuZGVmIGFsbG9jYQotLWNoYXIgKmFsbG9jYSAoKTsKLS0jICAgZW5kaWYKLS0jICBlbmRpZgotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0jaW5jbHVkZSA8ZXJybm8uaD4KLS0jaWZuZGVmIGVycm5vCi0tZXh0ZXJuIGludCBlcnJubzsKLS0jZW5kaWYKLS0jaWZuZGVmIF9fc2V0X2Vycm5vCi0tIyBkZWZpbmUgX19zZXRfZXJybm8odmFsKSBlcnJubyA9ICh2YWwpCi0tI2VuZGlmCi0tCi0tI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgX0xJQkMKLS0jIGluY2x1ZGUgPHN0ZGxpYi5oPgotLSNlbHNlCi0tY2hhciAqZ2V0ZW52ICgpOwotLSMgaWZkZWYgSEFWRV9NQUxMT0NfSAotLSMgIGluY2x1ZGUgPG1hbGxvYy5oPgotLSMgZWxzZQotLXZvaWQgZnJlZSAoKTsKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tI2lmIGRlZmluZWQgSEFWRV9TVFJJTkdfSCB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpZm5kZWYgX0dOVV9TT1VSQ0UKLS0jICBkZWZpbmUgX0dOVV9TT1VSQ0UJMQotLSMgZW5kaWYKLS0jIGluY2x1ZGUgPHN0cmluZy5oPgotLSNlbHNlCi0tIyBpbmNsdWRlIDxzdHJpbmdzLmg+Ci0tI2VuZGlmCi0tI2lmICFIQVZFX1NUUkNIUiAmJiAhZGVmaW5lZCBfTElCQwotLSMgaWZuZGVmIHN0cmNocgotLSMgIGRlZmluZSBzdHJjaHIgaW5kZXgKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tI2lmIGRlZmluZWQgSEFWRV9VTklTVERfSCB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpbmNsdWRlIDx1bmlzdGQuaD4KLS0jZW5kaWYKLS0KLS0jaW5jbHVkZSAiZ2V0dGV4dC5oIgotICNpbmNsdWRlICJnZXR0ZXh0UC5oIgotICNpZmRlZiBfTElCQwotICMgaW5jbHVkZSA8bGliaW50bC5oPgotICNlbHNlCi0tIyBpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCi0rIyBpbmNsdWRlICJsaWJnbnVpbnRsLmgiCi0gI2VuZGlmCi0tI2luY2x1ZGUgImhhc2gtc3RyaW5nLmgiCi0gCi0gLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotIAotLSNpZmRlZiBfTElCQwotLS8qIFJlbmFtZSB0aGUgbm9uIEFOU0kgQyBmdW5jdGlvbnMuICBUaGlzIGlzIHJlcXVpcmVkIGJ5IHRoZSBzdGFuZGFyZAotLSAgIGJlY2F1c2Ugc29tZSBBTlNJIEMgZnVuY3Rpb25zIHdpbGwgcmVxdWlyZSBsaW5raW5nIHdpdGggdGhpcyBvYmplY3QKLS0gICBmaWxlIGFuZCB0aGUgbmFtZSBzcGFjZSBtdXN0IG5vdCBiZSBwb2xsdXRlZC4gICovCi0tIyBkZWZpbmUgZ2V0Y3dkIF9fZ2V0Y3dkCi0tIyBkZWZpbmUgc3RwY3B5IF9fc3RwY3B5Ci0tI2Vsc2UKLS0jIGlmICFkZWZpbmVkIEhBVkVfR0VUQ1dECi0tY2hhciAqZ2V0d2QgKCk7Ci0tIyAgZGVmaW5lIGdldGN3ZChidWYsIG1heCkgZ2V0d2QgKGJ1ZikKLS0jIGVsc2UKLS1jaGFyICpnZXRjd2QgKCk7Ci0tIyBlbmRpZgotLSMgaWZuZGVmIEhBVkVfU1RQQ1BZCi0tc3RhdGljIGNoYXIgKnN0cGNweSBQQVJBTVMgKChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMpKTsKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tLyogQW1vdW50IHRvIGluY3JlYXNlIGJ1ZmZlciBzaXplIGJ5IGluIGVhY2ggdHJ5LiAgKi8KLS0jZGVmaW5lIFBBVEhfSU5DUiAzMgotLQotLS8qIFRoZSBmb2xsb3dpbmcgaXMgZnJvbSBwYXRobWF4LmguICAqLwotLS8qIE5vbi1QT1NJWCBCU0Qgc3lzdGVtcyBtaWdodCBoYXZlIGdjYydzIGxpbWl0cy5oLCB3aGljaCBkb2Vzbid0IGRlZmluZQotLSAgIFBBVEhfTUFYIGJ1dCBtaWdodCBjYXVzZSByZWRlZmluaXRpb24gd2FybmluZ3Mgd2hlbiBzeXMvcGFyYW0uaCBpcwotLSAgIGxhdGVyIGluY2x1ZGVkIChhcyBvbiBNT1JFL0JTRCA0LjMpLiAgKi8KLS0jaWYgZGVmaW5lZChfUE9TSVhfVkVSU0lPTikgfHwgKGRlZmluZWQoSEFWRV9MSU1JVFNfSCkgJiYgIWRlZmluZWQoX19HTlVDX18pKQotLSMgaW5jbHVkZSA8bGltaXRzLmg+Ci0tI2VuZGlmCi0tCi0tI2lmbmRlZiBfUE9TSVhfUEFUSF9NQVgKLS0jIGRlZmluZSBfUE9TSVhfUEFUSF9NQVggMjU1Ci0tI2VuZGlmCi0tCi0tI2lmICFkZWZpbmVkKFBBVEhfTUFYKSAmJiBkZWZpbmVkKF9QQ19QQVRIX01BWCkKLS0jIGRlZmluZSBQQVRIX01BWCAocGF0aGNvbmYgKCIvIiwgX1BDX1BBVEhfTUFYKSA8IDEgPyAxMDI0IDogcGF0aGNvbmYgKCIvIiwgX1BDX1BBVEhfTUFYKSkKLS0jZW5kaWYKLS0KLS0vKiBEb24ndCBpbmNsdWRlIHN5cy9wYXJhbS5oIGlmIGl0IGFscmVhZHkgaGFzIGJlZW4uICAqLwotLSNpZiBkZWZpbmVkKEhBVkVfU1lTX1BBUkFNX0gpICYmICFkZWZpbmVkKFBBVEhfTUFYKSAmJiAhZGVmaW5lZChNQVhQQVRITEVOKQotLSMgaW5jbHVkZSA8c3lzL3BhcmFtLmg+Ci0tI2VuZGlmCi0tCi0tI2lmICFkZWZpbmVkKFBBVEhfTUFYKSAmJiBkZWZpbmVkKE1BWFBBVEhMRU4pCi0tIyBkZWZpbmUgUEFUSF9NQVggTUFYUEFUSExFTgotLSNlbmRpZgotLQotLSNpZm5kZWYgUEFUSF9NQVgKLS0jIGRlZmluZSBQQVRIX01BWCBfUE9TSVhfUEFUSF9NQVgKLS0jZW5kaWYKLS0KLS0vKiBYUEczIGRlZmluZXMgdGhlIHJlc3VsdCBvZiBgc2V0bG9jYWxlIChjYXRlZ29yeSwgTlVMTCknIGFzOgotLSAgIGBgRGlyZWN0cyBgc2V0bG9jYWxlKCknIHRvIHF1ZXJ5IGBjYXRlZ29yeScgYW5kIHJldHVybiB0aGUgY3VycmVudAotLSAgICAgc2V0dGluZyBvZiBgbG9jYWwnLicnCi0tICAgSG93ZXZlciBpdCBkb2VzIG5vdCBzcGVjaWZ5IHRoZSBleGFjdCBmb3JtYXQuICBBbmQgZXZlbiB3b3JzZTogUE9TSVgKLS0gICBkZWZpbmVzIHRoaXMgbm90IGF0IGFsbC4gIFNvIHdlIGNhbiB1c2UgdGhpcyBmZWF0dXJlIG9ubHkgb24gc2VsZWN0ZWQKLS0gICBzeXN0ZW0gKGUuZy4gdGhvc2UgdXNpbmcgR05VIEMgTGlicmFyeSkuICAqLwotLSNpZmRlZiBfTElCQwotLSMgZGVmaW5lIEhBVkVfTE9DQUxFX05VTEwKLS0jZW5kaWYKLS0KLS0vKiBOYW1lIG9mIHRoZSBkZWZhdWx0IGRvbWFpbiB1c2VkIGZvciBnZXR0ZXh0KDMpIHByaW9yIGFueSBjYWxsIHRvCi0tICAgdGV4dGRvbWFpbigzKS4gIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIGlzICJtZXNzYWdlcyIuICAqLwotLWNvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW5bXSA9ICJtZXNzYWdlcyI7Ci0tCi0tLyogVmFsdWUgdXNlZCBhcyB0aGUgZGVmYXVsdCBkb21haW4gZm9yIGdldHRleHQoMykuICAqLwotLWNvbnN0IGNoYXIgKl9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluID0gX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW47Ci0tCi0tLyogQ29udGFpbnMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIG1lc3NhZ2UgY2F0YWxvZ3MuICAqLwotLWNvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGlybmFtZVtdID0gR05VTE9DQUxFRElSOwotLQotLS8qIExpc3Qgd2l0aCBiaW5kaW5ncyBvZiBzcGVjaWZpYyBkb21haW5zIGNyZWF0ZWQgYnkgYmluZHRleHRkb21haW4oKQotLSAgIGNhbGxzLiAgKi8KLS1zdHJ1Y3QgYmluZGluZyAqX25sX2RvbWFpbl9iaW5kaW5nczsKLS0KLS0vKiBQcm90b3R5cGVzIGZvciBsb2NhbCBmdW5jdGlvbnMuICAqLwotLXN0YXRpYyBjaGFyICpmaW5kX21zZyBQQVJBTVMgKChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW5fZmlsZSwKLS0JCQkgICAgICAgY29uc3QgY2hhciAqbXNnaWQpKTsKLS1zdGF0aWMgY29uc3QgY2hhciAqY2F0ZWdvcnlfdG9fbmFtZSBQQVJBTVMgKChpbnQgY2F0ZWdvcnkpKTsKLS1zdGF0aWMgY29uc3QgY2hhciAqZ3Vlc3NfY2F0ZWdvcnlfdmFsdWUgUEFSQU1TICgoaW50IGNhdGVnb3J5LAotLQkJCQkJCSBjb25zdCBjaGFyICpjYXRlZ29yeW5hbWUpKTsKLS0KLS0KLS0vKiBGb3IgdGhvc2UgbG9vc2luZyBzeXN0ZW1zIHdoaWNoIGRvbid0IGhhdmUgYGFsbG9jYScgd2UgaGF2ZSB0byBhZGQKLS0gICBzb21lIGFkZGl0aW9uYWwgY29kZSBlbXVsYXRpbmcgaXQuICAqLwotLSNpZmRlZiBIQVZFX0FMTE9DQQotLS8qIE5vdGhpbmcgaGFzIHRvIGJlIGRvbmUuICAqLwotLSMgZGVmaW5lIEFERF9CTE9DSyhsaXN0LCBhZGRyZXNzKSAvKiBub3RoaW5nICovCi0tIyBkZWZpbmUgRlJFRV9CTE9DS1MobGlzdCkgLyogbm90aGluZyAqLwotLSNlbHNlCi0tc3RydWN0IGJsb2NrX2xpc3QKLS17Ci0tICB2b2lkICphZGRyZXNzOwotLSAgc3RydWN0IGJsb2NrX2xpc3QgKm5leHQ7Ci0tfTsKLS0jIGRlZmluZSBBRERfQkxPQ0sobGlzdCwgYWRkcikJCQkJCQkgICAgICBcCi0tICBkbyB7CQkJCQkJCQkJICAgICAgXAotLSAgICBzdHJ1Y3QgYmxvY2tfbGlzdCAqbmV3cCA9IChzdHJ1Y3QgYmxvY2tfbGlzdCAqKSBtYWxsb2MgKHNpemVvZiAoKm5ld3ApKTsgIFwKLS0gICAgLyogSWYgd2UgY2Fubm90IGdldCBhIGZyZWUgYmxvY2sgd2UgY2Fubm90IGFkZCB0aGUgbmV3IGVsZW1lbnQgdG8JICAgICAgXAotLSAgICAgICB0aGUgbGlzdC4gICovCQkJCQkJCSAgICAgIFwKLS0gICAgaWYgKG5ld3AgIT0gTlVMTCkgewkJCQkJCQkgICAgICBcCi0tICAgICAgbmV3cC0+YWRkcmVzcyA9IChhZGRyKTsJCQkJCQkgICAgICBcCi0tICAgICAgbmV3cC0+bmV4dCA9IChsaXN0KTsJCQkJCQkgICAgICBcCi0tICAgICAgKGxpc3QpID0gbmV3cDsJCQkJCQkJICAgICAgXAotLSAgICB9CQkJCQkJCQkJICAgICAgXAotLSAgfSB3aGlsZSAoMCkKLS0jIGRlZmluZSBGUkVFX0JMT0NLUyhsaXN0KQkJCQkJCSAgICAgIFwKLS0gIGRvIHsJCQkJCQkJCQkgICAgICBcCi0tICAgIHdoaWxlIChsaXN0ICE9IE5VTEwpIHsJCQkJCQkgICAgICBcCi0tICAgICAgc3RydWN0IGJsb2NrX2xpc3QgKm9sZCA9IGxpc3Q7CQkJCQkgICAgICBcCi0tICAgICAgbGlzdCA9IGxpc3QtPm5leHQ7CQkJCQkJICAgICAgXAotLSAgICAgIGZyZWUgKG9sZCk7CQkJCQkJCSAgICAgIFwKLS0gICAgfQkJCQkJCQkJCSAgICAgIFwKLS0gIH0gd2hpbGUgKDApCi0tIyB1bmRlZiBhbGxvY2EKLS0jIGRlZmluZSBhbGxvY2Eoc2l6ZSkgKG1hbGxvYyAoc2l6ZSkpCi0tI2VuZGlmCS8qIGhhdmUgYWxsb2NhICovCi0tCi0tCi0gLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhleSBtdXN0IG5vdCBjbGFzaAotICAgIHdpdGggZXhpc3RpbmcgbmFtZXMgYW5kIHRoZXkgc2hvdWxkIGZvbGxvdyBBTlNJIEMuICBCdXQgdGhpcyBzb3VyY2UKLSAgICBjb2RlIGlzIGFsc28gdXNlZCBpbiBHTlUgQyBMaWJyYXJ5IHdoZXJlIHRoZSBuYW1lcyBoYXZlIGEgX18KLSAgICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLwotICNpZmRlZiBfTElCQwotICMgZGVmaW5lIERDR0VUVEVYVCBfX2RjZ2V0dGV4dAotKyMgZGVmaW5lIERDSUdFVFRFWFQgX19kY2lnZXR0ZXh0Ci0gI2Vsc2UKLS0jIGRlZmluZSBEQ0dFVFRFWFQgZGNnZXR0ZXh0X18KLSsjIGRlZmluZSBEQ0dFVFRFWFQgbGliaW50bF9kY2dldHRleHQKLSsjIGRlZmluZSBEQ0lHRVRURVhUIGxpYmludGxfZGNpZ2V0dGV4dAotICNlbmRpZgotIAotIC8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudCBDQVRFR09SWQotICAgIGxvY2FsZS4gICovCi0gY2hhciAqCi0tRENHRVRURVhUIChkb21haW5uYW1lLCBtc2dpZCwgY2F0ZWdvcnkpCi0tICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOwotLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7Ci0tICAgICBpbnQgY2F0ZWdvcnk7Ci0rRENHRVRURVhUIChjb25zdCBjaGFyICpkb21haW5uYW1lLCBjb25zdCBjaGFyICptc2dpZCwgaW50IGNhdGVnb3J5KQotIHsKLS0jaWZuZGVmIEhBVkVfQUxMT0NBCi0tICBzdHJ1Y3QgYmxvY2tfbGlzdCAqYmxvY2tfbGlzdCA9IE5VTEw7Ci0tI2VuZGlmCi0tICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW47Ci0tICBzdHJ1Y3QgYmluZGluZyAqYmluZGluZzsKLS0gIGNvbnN0IGNoYXIgKmNhdGVnb3J5bmFtZTsKLS0gIGNvbnN0IGNoYXIgKmNhdGVnb3J5dmFsdWU7Ci0tICBjaGFyICpkaXJuYW1lLCAqeGRvbWFpbm5hbWU7Ci0tICBjaGFyICpzaW5nbGVfbG9jYWxlOwotLSAgY2hhciAqcmV0dmFsOwotLSAgaW50IHNhdmVkX2Vycm5vID0gZXJybm87Ci0tCi0tICAvKiBJZiBubyByZWFsIE1TR0lEIGlzIGdpdmVuIHJldHVybiBOVUxMLiAgKi8KLS0gIGlmIChtc2dpZCA9PSBOVUxMKQotLSAgICByZXR1cm4gTlVMTDsKLS0KLS0gIC8qIElmIERPTUFJTk5BTUUgaXMgTlVMTCwgd2UgYXJlIGludGVyZXN0ZWQgaW4gdGhlIGRlZmF1bHQgZG9tYWluLiAgSWYKLS0gICAgIENBVEVHT1JZIGlzIG5vdCBMQ19NRVNTQUdFUyB0aGlzIG1pZ2h0IG5vdCBtYWtlIG11Y2ggc2Vuc2UgYnV0IHRoZQotLSAgICAgZGVmaW50aW9uIGxlZnQgdGhpcyB1bmRlZmluZWQuICAqLwotLSAgaWYgKGRvbWFpbm5hbWUgPT0gTlVMTCkKLS0gICAgZG9tYWlubmFtZSA9IF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluOwotLQotLSAgLyogRmlyc3QgZmluZCBtYXRjaGluZyBiaW5kaW5nLiAgKi8KLS0gIGZvciAoYmluZGluZyA9IF9ubF9kb21haW5fYmluZGluZ3M7IGJpbmRpbmcgIT0gTlVMTDsgYmluZGluZyA9IGJpbmRpbmctPm5leHQpCi0tICAgIHsKLS0gICAgICBpbnQgY29tcGFyZSA9IHN0cmNtcCAoZG9tYWlubmFtZSwgYmluZGluZy0+ZG9tYWlubmFtZSk7Ci0tICAgICAgaWYgKGNvbXBhcmUgPT0gMCkKLS0JLyogV2UgZm91bmQgaXQhICAqLwotLQlicmVhazsKLS0gICAgICBpZiAoY29tcGFyZSA8IDApCi0tCXsKLS0JICAvKiBJdCBpcyBub3QgaW4gdGhlIGxpc3QuICAqLwotLQkgIGJpbmRpbmcgPSBOVUxMOwotLQkgIGJyZWFrOwotLQl9Ci0tICAgIH0KLS0KLS0gIGlmIChiaW5kaW5nID09IE5VTEwpCi0tICAgIGRpcm5hbWUgPSAoY2hhciAqKSBfbmxfZGVmYXVsdF9kaXJuYW1lOwotLSAgZWxzZSBpZiAoYmluZGluZy0+ZGlybmFtZVswXSA9PSAnLycpCi0tICAgIGRpcm5hbWUgPSBiaW5kaW5nLT5kaXJuYW1lOwotLSAgZWxzZQotLSAgICB7Ci0tICAgICAgLyogV2UgaGF2ZSBhIHJlbGF0aXZlIHBhdGguICBNYWtlIGl0IGFic29sdXRlIG5vdy4gICovCi0tICAgICAgc2l6ZV90IGRpcm5hbWVfbGVuID0gc3RybGVuIChiaW5kaW5nLT5kaXJuYW1lKSArIDE7Ci0tICAgICAgc2l6ZV90IHBhdGhfbWF4OwotLSAgICAgIGNoYXIgKnJldDsKLS0KLS0gICAgICBwYXRoX21heCA9ICh1bnNpZ25lZCkgUEFUSF9NQVg7Ci0tICAgICAgcGF0aF9tYXggKz0gMjsJCS8qIFRoZSBnZXRjd2QgZG9jcyBzYXkgdG8gZG8gdGhpcy4gICovCi0tCi0tICAgICAgZGlybmFtZSA9IChjaGFyICopIGFsbG9jYSAocGF0aF9tYXggKyBkaXJuYW1lX2xlbik7Ci0tICAgICAgQUREX0JMT0NLIChibG9ja19saXN0LCBkaXJuYW1lKTsKLS0KLS0gICAgICBfX3NldF9lcnJubyAoMCk7Ci0tICAgICAgd2hpbGUgKChyZXQgPSBnZXRjd2QgKGRpcm5hbWUsIHBhdGhfbWF4KSkgPT0gTlVMTCAmJiBlcnJubyA9PSBFUkFOR0UpCi0tCXsKLS0JICBwYXRoX21heCArPSBQQVRIX0lOQ1I7Ci0tCSAgZGlybmFtZSA9IChjaGFyICopIGFsbG9jYSAocGF0aF9tYXggKyBkaXJuYW1lX2xlbik7Ci0tCSAgQUREX0JMT0NLIChibG9ja19saXN0LCBkaXJuYW1lKTsKLS0JICBfX3NldF9lcnJubyAoMCk7Ci0tCX0KLS0KLS0gICAgICBpZiAocmV0ID09IE5VTEwpCi0tCXsKLS0JICAvKiBXZSBjYW5ub3QgZ2V0IHRoZSBjdXJyZW50IHdvcmtpbmcgZGlyZWN0b3J5LiAgRG9uJ3Qgc2lnbmFsIGFuCi0tCSAgICAgZXJyb3IgYnV0IHNpbXBseSByZXR1cm4gdGhlIGRlZmF1bHQgc3RyaW5nLiAgKi8KLS0JICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7Ci0tCSAgX19zZXRfZXJybm8gKHNhdmVkX2Vycm5vKTsKLS0JICByZXR1cm4gKGNoYXIgKikgbXNnaWQ7Ci0tCX0KLS0KLS0gICAgICBzdHBjcHkgKHN0cGNweSAoc3RyY2hyIChkaXJuYW1lLCAnXDAnKSwgIi8iKSwgYmluZGluZy0+ZGlybmFtZSk7Ci0tICAgIH0KLS0KLS0gIC8qIE5vdyBkZXRlcm1pbmUgdGhlIHN5bWJvbGljIG5hbWUgb2YgQ0FURUdPUlkgYW5kIGl0cyB2YWx1ZS4gICovCi0tICBjYXRlZ29yeW5hbWUgPSBjYXRlZ29yeV90b19uYW1lIChjYXRlZ29yeSk7Ci0tICBjYXRlZ29yeXZhbHVlID0gZ3Vlc3NfY2F0ZWdvcnlfdmFsdWUgKGNhdGVnb3J5LCBjYXRlZ29yeW5hbWUpOwotLQotLSAgeGRvbWFpbm5hbWUgPSAoY2hhciAqKSBhbGxvY2EgKHN0cmxlbiAoY2F0ZWdvcnluYW1lKQotLQkJCQkgKyBzdHJsZW4gKGRvbWFpbm5hbWUpICsgNSk7Ci0tICBBRERfQkxPQ0sgKGJsb2NrX2xpc3QsIHhkb21haW5uYW1lKTsKLS0KLS0gIHN0cGNweSAoc3RwY3B5IChzdHBjcHkgKHN0cGNweSAoeGRvbWFpbm5hbWUsIGNhdGVnb3J5bmFtZSksICIvIiksCi0tCQkgIGRvbWFpbm5hbWUpLAotLQkgICIubW8iKTsKLS0KLS0gIC8qIENyZWF0aW5nIHdvcmtpbmcgYXJlYS4gICovCi0tICBzaW5nbGVfbG9jYWxlID0gKGNoYXIgKikgYWxsb2NhIChzdHJsZW4gKGNhdGVnb3J5dmFsdWUpICsgMSk7Ci0tICBBRERfQkxPQ0sgKGJsb2NrX2xpc3QsIHNpbmdsZV9sb2NhbGUpOwotLQotLQotLSAgLyogU2VhcmNoIGZvciB0aGUgZ2l2ZW4gc3RyaW5nLiAgVGhpcyBpcyBhIGxvb3AgYmVjYXVzZSB3ZSBwZXJoYXBzCi0tICAgICBnb3QgYW4gb3JkZXJlZCBsaXN0IG9mIGxhbmd1YWdlcyB0byBjb25zaWRlciBmb3IgdGggdHJhbnNsYXRpb24uICAqLwotLSAgd2hpbGUgKDEpCi0tICAgIHsKLS0gICAgICAvKiBNYWtlIENBVEVHT1JZVkFMVUUgcG9pbnQgdG8gdGhlIG5leHQgZWxlbWVudCBvZiB0aGUgbGlzdC4gICovCi0tICAgICAgd2hpbGUgKGNhdGVnb3J5dmFsdWVbMF0gIT0gJ1wwJyAmJiBjYXRlZ29yeXZhbHVlWzBdID09ICc6JykKLS0JKytjYXRlZ29yeXZhbHVlOwotLSAgICAgIGlmIChjYXRlZ29yeXZhbHVlWzBdID09ICdcMCcpCi0tCXsKLS0JICAvKiBUaGUgd2hvbGUgY29udGVudHMgb2YgQ0FURUdPUllWQUxVRSBoYXMgYmVlbiBzZWFyY2hlZCBidXQKLS0JICAgICBubyB2YWxpZCBlbnRyeSBoYXMgYmVlbiBmb3VuZC4gIFdlIHNvbHZlIHRoaXMgc2l0dWF0aW9uCi0tCSAgICAgYnkgaW1wbGljaXRseSBhcHBlbmRpbmcgYSAiQyIgZW50cnksIGkuZS4gbm8gdHJhbnNsYXRpb24KLS0JICAgICB3aWxsIHRha2UgcGxhY2UuICAqLwotLQkgIHNpbmdsZV9sb2NhbGVbMF0gPSAnQyc7Ci0tCSAgc2luZ2xlX2xvY2FsZVsxXSA9ICdcMCc7Ci0tCX0KLS0gICAgICBlbHNlCi0tCXsKLS0JICBjaGFyICpjcCA9IHNpbmdsZV9sb2NhbGU7Ci0tCSAgd2hpbGUgKGNhdGVnb3J5dmFsdWVbMF0gIT0gJ1wwJyAmJiBjYXRlZ29yeXZhbHVlWzBdICE9ICc6JykKLS0JICAgICpjcCsrID0gKmNhdGVnb3J5dmFsdWUrKzsKLS0JICAqY3AgPSAnXDAnOwotLQl9Ci0tCi0tICAgICAgLyogSWYgdGhlIGN1cnJlbnQgbG9jYWxlIHZhbHVlIGlzIEMgKG9yIFBPU0lYKSB3ZSBkb24ndCBsb2FkIGEKLS0JIGRvbWFpbi4gIFJldHVybiB0aGUgTVNHSUQuICAqLwotLSAgICAgIGlmIChzdHJjbXAgKHNpbmdsZV9sb2NhbGUsICJDIikgPT0gMAotLQkgIHx8IHN0cmNtcCAoc2luZ2xlX2xvY2FsZSwgIlBPU0lYIikgPT0gMCkKLS0JewotLQkgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKLS0JICBfX3NldF9lcnJubyAoc2F2ZWRfZXJybm8pOwotLQkgIHJldHVybiAoY2hhciAqKSBtc2dpZDsKLS0JfQotLQotLQotLSAgICAgIC8qIEZpbmQgc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIG1lc3NhZ2UgY2F0YWxvZyBtYXRjaGluZyB0aGUKLS0JIERPTUFJTk5BTUUgYW5kIENBVEVHT1JZLiAgKi8KLS0gICAgICBkb21haW4gPSBfbmxfZmluZF9kb21haW4gKGRpcm5hbWUsIHNpbmdsZV9sb2NhbGUsIHhkb21haW5uYW1lKTsKLS0KLS0gICAgICBpZiAoZG9tYWluICE9IE5VTEwpCi0tCXsKLS0JICByZXR2YWwgPSBmaW5kX21zZyAoZG9tYWluLCBtc2dpZCk7Ci0tCi0tCSAgaWYgKHJldHZhbCA9PSBOVUxMKQotLQkgICAgewotLQkgICAgICBpbnQgY250OwotLQotLQkgICAgICBmb3IgKGNudCA9IDA7IGRvbWFpbi0+c3VjY2Vzc29yW2NudF0gIT0gTlVMTDsgKytjbnQpCi0tCQl7Ci0tCQkgIHJldHZhbCA9IGZpbmRfbXNnIChkb21haW4tPnN1Y2Nlc3NvcltjbnRdLCBtc2dpZCk7Ci0tCi0tCQkgIGlmIChyZXR2YWwgIT0gTlVMTCkKLS0JCSAgICBicmVhazsKLS0JCX0KLS0JICAgIH0KLS0KLS0JICBpZiAocmV0dmFsICE9IE5VTEwpCi0tCSAgICB7Ci0tCSAgICAgIEZSRUVfQkxPQ0tTIChibG9ja19saXN0KTsKLS0JICAgICAgX19zZXRfZXJybm8gKHNhdmVkX2Vycm5vKTsKLS0JICAgICAgcmV0dXJuIHJldHZhbDsKLS0JICAgIH0KLS0JfQotLSAgICB9Ci0tICAvKiBOT1RSRUFDSEVEICovCi0rICByZXR1cm4gRENJR0VUVEVYVCAoZG9tYWlubmFtZSwgbXNnaWQsIE5VTEwsIDAsIDAsIGNhdGVnb3J5KTsKLSB9Ci0gCi0gI2lmZGVmIF9MSUJDCi0gLyogQWxpYXMgZm9yIGZ1bmN0aW9uIG5hbWUgaW4gR05VIEMgTGlicmFyeS4gICovCi0rSU5UREVGKF9fZGNnZXR0ZXh0KQotIHdlYWtfYWxpYXMgKF9fZGNnZXR0ZXh0LCBkY2dldHRleHQpOwotICNlbmRpZgotLQotLQotLXN0YXRpYyBjaGFyICoKLS1maW5kX21zZyAoZG9tYWluX2ZpbGUsIG1zZ2lkKQotLSAgICAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluX2ZpbGU7Ci0tICAgICBjb25zdCBjaGFyICptc2dpZDsKLS17Ci0tICBzaXplX3QgdG9wLCBhY3QsIGJvdHRvbTsKLS0gIHN0cnVjdCBsb2FkZWRfZG9tYWluICpkb21haW47Ci0tCi0tICBpZiAoZG9tYWluX2ZpbGUtPmRlY2lkZWQgPT0gMCkKLS0gICAgX25sX2xvYWRfZG9tYWluIChkb21haW5fZmlsZSk7Ci0tCi0tICBpZiAoZG9tYWluX2ZpbGUtPmRhdGEgPT0gTlVMTCkKLS0gICAgcmV0dXJuIE5VTEw7Ci0tCi0tICBkb21haW4gPSAoc3RydWN0IGxvYWRlZF9kb21haW4gKikgZG9tYWluX2ZpbGUtPmRhdGE7Ci0tCi0tICAvKiBMb2NhdGUgdGhlIE1TR0lEIGFuZCBpdHMgdHJhbnNsYXRpb24uICAqLwotLSAgaWYgKGRvbWFpbi0+aGFzaF9zaXplID4gMiAmJiBkb21haW4tPmhhc2hfdGFiICE9IE5VTEwpCi0tICAgIHsKLS0gICAgICAvKiBVc2UgdGhlIGhhc2hpbmcgdGFibGUuICAqLwotLSAgICAgIG5sc191aW50MzIgbGVuID0gc3RybGVuIChtc2dpZCk7Ci0tICAgICAgbmxzX3VpbnQzMiBoYXNoX3ZhbCA9IGhhc2hfc3RyaW5nIChtc2dpZCk7Ci0tICAgICAgbmxzX3VpbnQzMiBpZHggPSBoYXNoX3ZhbCAlIGRvbWFpbi0+aGFzaF9zaXplOwotLSAgICAgIG5sc191aW50MzIgaW5jciA9IDEgKyAoaGFzaF92YWwgJSAoZG9tYWluLT5oYXNoX3NpemUgLSAyKSk7Ci0tICAgICAgbmxzX3VpbnQzMiBuc3RyID0gVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRvbWFpbi0+aGFzaF90YWJbaWR4XSk7Ci0tCi0tICAgICAgaWYgKG5zdHIgPT0gMCkKLS0JLyogSGFzaCB0YWJsZSBlbnRyeSBpcyBlbXB0eS4gICovCi0tCXJldHVybiBOVUxMOwotLQotLSAgICAgIGlmIChXIChkb21haW4tPm11c3Rfc3dhcCwgZG9tYWluLT5vcmlnX3RhYltuc3RyIC0gMV0ubGVuZ3RoKSA9PSBsZW4KLS0JICAmJiBzdHJjbXAgKG1zZ2lkLAotLQkJICAgICBkb21haW4tPmRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKLS0JCQkJICAgICAgIGRvbWFpbi0+b3JpZ190YWJbbnN0ciAtIDFdLm9mZnNldCkpID09IDApCi0tCXJldHVybiAoY2hhciAqKSBkb21haW4tPmRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKLS0JCQkJCSAgZG9tYWluLT50cmFuc190YWJbbnN0ciAtIDFdLm9mZnNldCk7Ci0tCi0tICAgICAgd2hpbGUgKDEpCi0tCXsKLS0JICBpZiAoaWR4ID49IGRvbWFpbi0+aGFzaF9zaXplIC0gaW5jcikKLS0JICAgIGlkeCAtPSBkb21haW4tPmhhc2hfc2l6ZSAtIGluY3I7Ci0tCSAgZWxzZQotLQkgICAgaWR4ICs9IGluY3I7Ci0tCi0tCSAgbnN0ciA9IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkb21haW4tPmhhc2hfdGFiW2lkeF0pOwotLQkgIGlmIChuc3RyID09IDApCi0tCSAgICAvKiBIYXNoIHRhYmxlIGVudHJ5IGlzIGVtcHR5LiAgKi8KLS0JICAgIHJldHVybiBOVUxMOwotLQotLQkgIGlmIChXIChkb21haW4tPm11c3Rfc3dhcCwgZG9tYWluLT5vcmlnX3RhYltuc3RyIC0gMV0ubGVuZ3RoKSA9PSBsZW4KLS0JICAgICAgJiYgc3RyY21wIChtc2dpZCwKLS0JCQkgZG9tYWluLT5kYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCi0tCQkJCQkgICBkb21haW4tPm9yaWdfdGFiW25zdHIgLSAxXS5vZmZzZXQpKQotLQkgICAgICAgICA9PSAwKQotLQkgICAgcmV0dXJuIChjaGFyICopIGRvbWFpbi0+ZGF0YQotLQkgICAgICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkb21haW4tPnRyYW5zX3RhYltuc3RyIC0gMV0ub2Zmc2V0KTsKLS0JfQotLSAgICAgIC8qIE5PVFJFQUNIRUQgKi8KLS0gICAgfQotLQotLSAgLyogTm93IHdlIHRyeSB0aGUgZGVmYXVsdCBtZXRob2Q6ICBiaW5hcnkgc2VhcmNoIGluIHRoZSBzb3J0ZWQKLS0gICAgIGFycmF5IG9mIG1lc3NhZ2VzLiAgKi8KLS0gIGJvdHRvbSA9IDA7Ci0tICB0b3AgPSBkb21haW4tPm5zdHJpbmdzOwotLSAgd2hpbGUgKGJvdHRvbSA8IHRvcCkKLS0gICAgewotLSAgICAgIGludCBjbXBfdmFsOwotLQotLSAgICAgIGFjdCA9IChib3R0b20gKyB0b3ApIC8gMjsKLS0gICAgICBjbXBfdmFsID0gc3RyY21wIChtc2dpZCwgZG9tYWluLT5kYXRhCi0tCQkJICAgICAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCi0tCQkJCSAgICBkb21haW4tPm9yaWdfdGFiW2FjdF0ub2Zmc2V0KSk7Ci0tICAgICAgaWYgKGNtcF92YWwgPCAwKQotLQl0b3AgPSBhY3Q7Ci0tICAgICAgZWxzZSBpZiAoY21wX3ZhbCA+IDApCi0tCWJvdHRvbSA9IGFjdCArIDE7Ci0tICAgICAgZWxzZQotLQlicmVhazsKLS0gICAgfQotLQotLSAgLyogSWYgYW4gdHJhbnNsYXRpb24gaXMgZm91bmQgcmV0dXJuIHRoaXMuICAqLwotLSAgcmV0dXJuIGJvdHRvbSA+PSB0b3AgPyBOVUxMIDogKGNoYXIgKikgZG9tYWluLT5kYXRhCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAotLQkJCQkgICAgIGRvbWFpbi0+dHJhbnNfdGFiW2FjdF0ub2Zmc2V0KTsKLS19Ci0tCi0tCi0tLyogUmV0dXJuIHN0cmluZyByZXByZXNlbnRhdGlvbiBvZiBsb2NhbGUgQ0FURUdPUlkuICAqLwotLXN0YXRpYyBjb25zdCBjaGFyICoKLS1jYXRlZ29yeV90b19uYW1lIChjYXRlZ29yeSkKLS0gICAgIGludCBjYXRlZ29yeTsKLS17Ci0tICBjb25zdCBjaGFyICpyZXR2YWw7Ci0tCi0tICBzd2l0Y2ggKGNhdGVnb3J5KQotLSAgewotLSNpZmRlZiBMQ19DT0xMQVRFCi0tICBjYXNlIExDX0NPTExBVEU6Ci0tICAgIHJldHZhbCA9ICJMQ19DT0xMQVRFIjsKLS0gICAgYnJlYWs7Ci0tI2VuZGlmCi0tI2lmZGVmIExDX0NUWVBFCi0tICBjYXNlIExDX0NUWVBFOgotLSAgICByZXR2YWwgPSAiTENfQ1RZUEUiOwotLSAgICBicmVhazsKLS0jZW5kaWYKLS0jaWZkZWYgTENfTU9ORVRBUlkKLS0gIGNhc2UgTENfTU9ORVRBUlk6Ci0tICAgIHJldHZhbCA9ICJMQ19NT05FVEFSWSI7Ci0tICAgIGJyZWFrOwotLSNlbmRpZgotLSNpZmRlZiBMQ19OVU1FUklDCi0tICBjYXNlIExDX05VTUVSSUM6Ci0tICAgIHJldHZhbCA9ICJMQ19OVU1FUklDIjsKLS0gICAgYnJlYWs7Ci0tI2VuZGlmCi0tI2lmZGVmIExDX1RJTUUKLS0gIGNhc2UgTENfVElNRToKLS0gICAgcmV0dmFsID0gIkxDX1RJTUUiOwotLSAgICBicmVhazsKLS0jZW5kaWYKLS0jaWZkZWYgTENfTUVTU0FHRVMKLS0gIGNhc2UgTENfTUVTU0FHRVM6Ci0tICAgIHJldHZhbCA9ICJMQ19NRVNTQUdFUyI7Ci0tICAgIGJyZWFrOwotLSNlbmRpZgotLSNpZmRlZiBMQ19SRVNQT05TRQotLSAgY2FzZSBMQ19SRVNQT05TRToKLS0gICAgcmV0dmFsID0gIkxDX1JFU1BPTlNFIjsKLS0gICAgYnJlYWs7Ci0tI2VuZGlmCi0tI2lmZGVmIExDX0FMTAotLSAgY2FzZSBMQ19BTEw6Ci0tICAgIC8qIFRoaXMgbWlnaHQgbm90IG1ha2Ugc2Vuc2UgYnV0IGlzIHBlcmhhcHMgYmV0dGVyIHRoYW4gYW55IG90aGVyCi0tICAgICAgIHZhbHVlLiAgKi8KLS0gICAgcmV0dmFsID0gIkxDX0FMTCI7Ci0tICAgIGJyZWFrOwotLSNlbmRpZgotLSAgZGVmYXVsdDoKLS0gICAgLyogSWYgeW91IGhhdmUgYSBiZXR0ZXIgaWRlYSBmb3IgYSBkZWZhdWx0IHZhbHVlIGxldCBtZSBrbm93LiAgKi8KLS0gICAgcmV0dmFsID0gIkxDX1hYWCI7Ci0tICB9Ci0tCi0tICByZXR1cm4gcmV0dmFsOwotLX0KLS0KLS0vKiBHdWVzcyB2YWx1ZSBvZiBjdXJyZW50IGxvY2FsZSBmcm9tIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuICAqLwotLXN0YXRpYyBjb25zdCBjaGFyICoKLS1ndWVzc19jYXRlZ29yeV92YWx1ZSAoY2F0ZWdvcnksIGNhdGVnb3J5bmFtZSkKLS0gICAgIGludCBjYXRlZ29yeTsKLS0gICAgIGNvbnN0IGNoYXIgKmNhdGVnb3J5bmFtZTsKLS17Ci0tICBjb25zdCBjaGFyICpyZXR2YWw7Ci0tCi0tICAvKiBUaGUgaGlnaGVzdCBwcmlvcml0eSB2YWx1ZSBpcyB0aGUgYExBTkdVQUdFJyBlbnZpcm9ubWVudAotLSAgICAgdmFyaWFibGUuICBUaGlzIGlzIGEgR05VIGV4dGVuc2lvbi4gICovCi0tICByZXR2YWwgPSBnZXRlbnYgKCJMQU5HVUFHRSIpOwotLSAgaWYgKHJldHZhbCAhPSBOVUxMICYmIHJldHZhbFswXSAhPSAnXDAnKQotLSAgICByZXR1cm4gcmV0dmFsOwotLQotLSAgLyogYExBTkdVQUdFJyBpcyBub3Qgc2V0LiAgU28gd2UgaGF2ZSB0byBwcm9jZWVkIHdpdGggdGhlIFBPU0lYCi0tICAgICBtZXRob2RzIG9mIGxvb2tpbmcgdG8gYExDX0FMTCcsIGBMQ194eHgnLCBhbmQgYExBTkcnLiAgT24gc29tZQotLSAgICAgc3lzdGVtcyB0aGlzIGNhbiBiZSBkb25lIGJ5IHRoZSBgc2V0bG9jYWxlJyBmdW5jdGlvbiBpdHNlbGYuICAqLwotLSNpZiBkZWZpbmVkIEhBVkVfU0VUTE9DQUxFICYmIGRlZmluZWQgSEFWRV9MQ19NRVNTQUdFUyAmJiBkZWZpbmVkIEhBVkVfTE9DQUxFX05VTEwKLS0gIHJldHVybiBzZXRsb2NhbGUgKGNhdGVnb3J5LCBOVUxMKTsKLS0jZWxzZQotLSAgLyogU2V0dGluZyBvZiBMQ19BTEwgb3ZlcndyaXRlcyBhbGwgb3RoZXIuICAqLwotLSAgcmV0dmFsID0gZ2V0ZW52ICgiTENfQUxMIik7Ci0tICBpZiAocmV0dmFsICE9IE5VTEwgJiYgcmV0dmFsWzBdICE9ICdcMCcpCi0tICAgIHJldHVybiByZXR2YWw7Ci0tCi0tICAvKiBOZXh0IGNvbWVzIHRoZSBuYW1lIG9mIHRoZSBkZXNpcmVkIGNhdGVnb3J5LiAgKi8KLS0gIHJldHZhbCA9IGdldGVudiAoY2F0ZWdvcnluYW1lKTsKLS0gIGlmIChyZXR2YWwgIT0gTlVMTCAmJiByZXR2YWxbMF0gIT0gJ1wwJykKLS0gICAgcmV0dXJuIHJldHZhbDsKLS0KLS0gIC8qIExhc3QgcG9zc2liaWxpdHkgaXMgdGhlIExBTkcgZW52aXJvbm1lbnQgdmFyaWFibGUuICAqLwotLSAgcmV0dmFsID0gZ2V0ZW52ICgiTEFORyIpOwotLSAgaWYgKHJldHZhbCAhPSBOVUxMICYmIHJldHZhbFswXSAhPSAnXDAnKQotLSAgICByZXR1cm4gcmV0dmFsOwotLQotLSAgLyogV2UgdXNlIEMgYXMgdGhlIGRlZmF1bHQgZG9tYWluLiAgUE9TSVggc2F5cyB0aGlzIGlzIGltcGxlbWVudGF0aW9uCi0tICAgICBkZWZpbmVkLiAgKi8KLS0gIHJldHVybiAiQyI7Ci0tI2VuZGlmCi0tfQotLQotLS8qIEBAIGJlZ2luIG9mIGVwaWxvZyBAQCAqLwotLQotLS8qIFdlIGRvbid0IHdhbnQgbGliaW50bC5hIHRvIGRlcGVuZCBvbiBhbnkgb3RoZXIgbGlicmFyeS4gIFNvIHdlCi0tICAgYXZvaWQgdGhlIG5vbi1zdGFuZGFyZCBmdW5jdGlvbiBzdHBjcHkuICBJbiBHTlUgQyBMaWJyYXJ5IHRoaXMKLS0gICBmdW5jdGlvbiBpcyBhdmFpbGFibGUsIHRob3VnaC4gIEFsc28gYWxsb3cgdGhlIHN5bWJvbCBIQVZFX1NUUENQWQotLSAgIHRvIGJlIGRlZmluZWQuICAqLwotLSNpZiAhX0xJQkMgJiYgIUhBVkVfU1RQQ1BZCi0tc3RhdGljIGNoYXIgKgotLXN0cGNweSAoZGVzdCwgc3JjKQotLSAgICAgY2hhciAqZGVzdDsKLS0gICAgIGNvbnN0IGNoYXIgKnNyYzsKLS17Ci0tICB3aGlsZSAoKCpkZXN0KysgPSAqc3JjKyspICE9ICdcMCcpCi0tICAgIC8qIERvIG5vdGhpbmcuICovIDsKLS0gIHJldHVybiBkZXN0IC0gMTsKLS19Ci0tI2VuZGlmCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvZGNpZ2V0dGV4dC5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2RjaWdldHRleHQuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjM2OTc0NTk2MCAtMDQwMAotQEAgLTAsMCArMSwxMjE5IEBACi0rLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIGludGVybmFsIGRjaWdldHRleHQgZnVuY3Rpb24uCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTksIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rLyogVGVsbCBnbGliYydzIDxzdHJpbmcuaD4gdG8gcHJvdmlkZSBhIHByb3RvdHlwZSBmb3IgbWVtcGNweSgpLgotKyAgIFRoaXMgbXVzdCBjb21lIGJlZm9yZSA8Y29uZmlnLmg+IGJlY2F1c2UgPGNvbmZpZy5oPiBtYXkgaW5jbHVkZQotKyAgIDxmZWF0dXJlcy5oPiwgYW5kIG9uY2UgPGZlYXR1cmVzLmg+IGhhcyBiZWVuIGluY2x1ZGVkLCBpdCdzIHRvbyBsYXRlLiAgKi8KLSsjaWZuZGVmIF9HTlVfU09VUkNFCi0rIyBkZWZpbmUgX0dOVV9TT1VSQ0UJMQotKyNlbmRpZgotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rCi0rI2lmZGVmIF9fR05VQ19fCi0rIyBkZWZpbmUgYWxsb2NhIF9fYnVpbHRpbl9hbGxvY2EKLSsjIGRlZmluZSBIQVZFX0FMTE9DQSAxCi0rI2Vsc2UKLSsjIGlmZGVmIF9NU0NfVkVSCi0rIyAgaW5jbHVkZSA8bWFsbG9jLmg+Ci0rIyAgZGVmaW5lIGFsbG9jYSBfYWxsb2NhCi0rIyBlbHNlCi0rIyAgaWYgZGVmaW5lZCBIQVZFX0FMTE9DQV9IIHx8IGRlZmluZWQgX0xJQkMKLSsjICAgaW5jbHVkZSA8YWxsb2NhLmg+Ci0rIyAgZWxzZQotKyMgICBpZmRlZiBfQUlYCi0rICNwcmFnbWEgYWxsb2NhCi0rIyAgIGVsc2UKLSsjICAgIGlmbmRlZiBhbGxvY2EKLStjaGFyICphbGxvY2EgKCk7Ci0rIyAgICBlbmRpZgotKyMgICBlbmRpZgotKyMgIGVuZGlmCi0rIyBlbmRpZgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxlcnJuby5oPgotKyNpZm5kZWYgZXJybm8KLStleHRlcm4gaW50IGVycm5vOwotKyNlbmRpZgotKyNpZm5kZWYgX19zZXRfZXJybm8KLSsjIGRlZmluZSBfX3NldF9lcnJubyh2YWwpIGVycm5vID0gKHZhbCkKLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsKLSsjaWYgZGVmaW5lZCBIQVZFX1VOSVNURF9IIHx8IGRlZmluZWQgX0xJQkMKLSsjIGluY2x1ZGUgPHVuaXN0ZC5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxsb2NhbGUuaD4KLSsKLSsjaWZkZWYgX0xJQkMKLSsgIC8qIEd1ZXNzIHdoZXRoZXIgaW50ZWdlciBkaXZpc2lvbiBieSB6ZXJvIHJhaXNlcyBzaWduYWwgU0lHRlBFLgotKyAgICAgU2V0IHRvIDEgb25seSBpZiB5b3Uga25vdyBmb3Igc3VyZS4gIEluIGNhc2Ugb2YgZG91YnQsIHNldCB0byAwLiAgKi8KLSsjIGlmIGRlZmluZWQgX19hbHBoYV9fIHx8IGRlZmluZWQgX19hcm1fXyB8fCBkZWZpbmVkIF9faTM4Nl9fIFwKLSsgICAgIHx8IGRlZmluZWQgX19tNjhrX18gfHwgZGVmaW5lZCBfX3MzOTBfXwotKyMgIGRlZmluZSBJTlRESVYwX1JBSVNFU19TSUdGUEUgMQotKyMgZWxzZQotKyMgIGRlZmluZSBJTlRESVYwX1JBSVNFU19TSUdGUEUgMAotKyMgZW5kaWYKLSsjZW5kaWYKLSsjaWYgIUlOVERJVjBfUkFJU0VTX1NJR0ZQRQotKyMgaW5jbHVkZSA8c2lnbmFsLmg+Ci0rI2VuZGlmCi0rCi0rI2lmIGRlZmluZWQgSEFWRV9TWVNfUEFSQU1fSCB8fCBkZWZpbmVkIF9MSUJDCi0rIyBpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSsjaW5jbHVkZSAicGx1cmFsLWV4cC5oIgotKyNpZmRlZiBfTElCQwotKyMgaW5jbHVkZSA8bGliaW50bC5oPgotKyNlbHNlCi0rIyBpbmNsdWRlICJsaWJnbnVpbnRsLmgiCi0rI2VuZGlmCi0rI2luY2x1ZGUgImhhc2gtc3RyaW5nLmgiCi0rCi0rLyogVGhyZWFkIHNhZmV0eW5lc3MuICAqLwotKyNpZmRlZiBfTElCQwotKyMgaW5jbHVkZSA8Yml0cy9saWJjLWxvY2suaD4KLSsjZWxzZQotKy8qIFByb3ZpZGUgZHVtbXkgaW1wbGVtZW50YXRpb24gaWYgdGhpcyBpcyBvdXRzaWRlIGdsaWJjLiAgKi8KLSsjIGRlZmluZSBfX2xpYmNfbG9ja19kZWZpbmVfaW5pdGlhbGl6ZWQoQ0xBU1MsIE5BTUUpCi0rIyBkZWZpbmUgX19saWJjX2xvY2tfbG9jayhOQU1FKQotKyMgZGVmaW5lIF9fbGliY19sb2NrX3VubG9jayhOQU1FKQotKyMgZGVmaW5lIF9fbGliY19yd2xvY2tfZGVmaW5lX2luaXRpYWxpemVkKENMQVNTLCBOQU1FKQotKyMgZGVmaW5lIF9fbGliY19yd2xvY2tfcmRsb2NrKE5BTUUpCi0rIyBkZWZpbmUgX19saWJjX3J3bG9ja191bmxvY2soTkFNRSkKLSsjZW5kaWYKLSsKLSsvKiBBbGlnbm1lbnQgb2YgdHlwZXMuICAqLwotKyNpZiBkZWZpbmVkIF9fR05VQ19fICYmIF9fR05VQ19fID49IDIKLSsjIGRlZmluZSBhbGlnbm9mKFRZUEUpIF9fYWxpZ25vZl9fIChUWVBFKQotKyNlbHNlCi0rIyBkZWZpbmUgYWxpZ25vZihUWVBFKSBcCi0rICAgICgoaW50KSAmKChzdHJ1Y3QgeyBjaGFyIGR1bW15MTsgVFlQRSBkdW1teTI7IH0gKikgMCktPmR1bW15MikKLSsjZW5kaWYKLSsKLSsvKiBUaGUgaW50ZXJuYWwgdmFyaWFibGVzIGluIHRoZSBzdGFuZGFsb25lIGxpYmludGwuYSBtdXN0IGhhdmUgZGlmZmVyZW50Ci0rICAgbmFtZXMgdGhhbiB0aGUgaW50ZXJuYWwgdmFyaWFibGVzIGluIEdOVSBsaWJjLCBvdGhlcndpc2UgcHJvZ3JhbXMKLSsgICB1c2luZyBsaWJpbnRsLmEgY2Fubm90IGJlIGxpbmtlZCBzdGF0aWNhbGx5LiAgKi8KLSsjaWYgIWRlZmluZWQgX0xJQkMKLSsjIGRlZmluZSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbiBsaWJpbnRsX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW4KLSsjIGRlZmluZSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiBsaWJpbnRsX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4KLSsjIGRlZmluZSBfbmxfZGVmYXVsdF9kaXJuYW1lIGxpYmludGxfbmxfZGVmYXVsdF9kaXJuYW1lCi0rIyBkZWZpbmUgX25sX2RvbWFpbl9iaW5kaW5ncyBsaWJpbnRsX25sX2RvbWFpbl9iaW5kaW5ncwotKyNlbmRpZgotKwotKy8qIFNvbWUgY29tcGlsZXJzLCBsaWtlIFN1bk9TNCBjYywgZG9uJ3QgaGF2ZSBvZmZzZXRvZiBpbiA8c3RkZGVmLmg+LiAgKi8KLSsjaWZuZGVmIG9mZnNldG9mCi0rIyBkZWZpbmUgb2Zmc2V0b2YodHlwZSxpZGVudCkgKChzaXplX3QpJigoKHR5cGUqKTApLT5pZGVudCkpCi0rI2VuZGlmCi0rCi0rLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotKwotKyNpZmRlZiBfTElCQwotKy8qIFJlbmFtZSB0aGUgbm9uIEFOU0kgQyBmdW5jdGlvbnMuICBUaGlzIGlzIHJlcXVpcmVkIGJ5IHRoZSBzdGFuZGFyZAotKyAgIGJlY2F1c2Ugc29tZSBBTlNJIEMgZnVuY3Rpb25zIHdpbGwgcmVxdWlyZSBsaW5raW5nIHdpdGggdGhpcyBvYmplY3QKLSsgICBmaWxlIGFuZCB0aGUgbmFtZSBzcGFjZSBtdXN0IG5vdCBiZSBwb2xsdXRlZC4gICovCi0rIyBkZWZpbmUgZ2V0Y3dkIF9fZ2V0Y3dkCi0rIyBpZm5kZWYgc3RwY3B5Ci0rIyAgZGVmaW5lIHN0cGNweSBfX3N0cGNweQotKyMgZW5kaWYKLSsjIGRlZmluZSB0ZmluZCBfX3RmaW5kCi0rI2Vsc2UKLSsjIGlmICFkZWZpbmVkIEhBVkVfR0VUQ1dECi0rY2hhciAqZ2V0d2QgKCk7Ci0rIyAgZGVmaW5lIGdldGN3ZChidWYsIG1heCkgZ2V0d2QgKGJ1ZikKLSsjIGVsc2UKLSsjICBpZiBWTVMKLSsjICAgZGVmaW5lIGdldGN3ZChidWYsIG1heCkgKGdldGN3ZCkgKGJ1ZiwgbWF4LCAwKQotKyMgIGVsc2UKLStjaGFyICpnZXRjd2QgKCk7Ci0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rIyBpZm5kZWYgSEFWRV9TVFBDUFkKLStzdGF0aWMgY2hhciAqc3RwY3B5IChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMpOwotKyMgZW5kaWYKLSsjIGlmbmRlZiBIQVZFX01FTVBDUFkKLStzdGF0aWMgdm9pZCAqbWVtcGNweSAodm9pZCAqZGVzdCwgY29uc3Qgdm9pZCAqc3JjLCBzaXplX3Qgbik7Ci0rIyBlbmRpZgotKyNlbmRpZgotKwotKy8qIEFtb3VudCB0byBpbmNyZWFzZSBidWZmZXIgc2l6ZSBieSBpbiBlYWNoIHRyeS4gICovCi0rI2RlZmluZSBQQVRIX0lOQ1IgMzIKLSsKLSsvKiBUaGUgZm9sbG93aW5nIGlzIGZyb20gcGF0aG1heC5oLiAgKi8KLSsvKiBOb24tUE9TSVggQlNEIHN5c3RlbXMgbWlnaHQgaGF2ZSBnY2MncyBsaW1pdHMuaCwgd2hpY2ggZG9lc24ndCBkZWZpbmUKLSsgICBQQVRIX01BWCBidXQgbWlnaHQgY2F1c2UgcmVkZWZpbml0aW9uIHdhcm5pbmdzIHdoZW4gc3lzL3BhcmFtLmggaXMKLSsgICBsYXRlciBpbmNsdWRlZCAoYXMgb24gTU9SRS9CU0QgNC4zKS4gICovCi0rI2lmIGRlZmluZWQgX1BPU0lYX1ZFUlNJT04gfHwgKGRlZmluZWQgSEFWRV9MSU1JVFNfSCAmJiAhZGVmaW5lZCBfX0dOVUNfXykKLSsjIGluY2x1ZGUgPGxpbWl0cy5oPgotKyNlbmRpZgotKwotKyNpZm5kZWYgX1BPU0lYX1BBVEhfTUFYCi0rIyBkZWZpbmUgX1BPU0lYX1BBVEhfTUFYIDI1NQotKyNlbmRpZgotKwotKyNpZiAhZGVmaW5lZCBQQVRIX01BWCAmJiBkZWZpbmVkIF9QQ19QQVRIX01BWAotKyMgZGVmaW5lIFBBVEhfTUFYIChwYXRoY29uZiAoIi8iLCBfUENfUEFUSF9NQVgpIDwgMSA/IDEwMjQgOiBwYXRoY29uZiAoIi8iLCBfUENfUEFUSF9NQVgpKQotKyNlbmRpZgotKwotKy8qIERvbid0IGluY2x1ZGUgc3lzL3BhcmFtLmggaWYgaXQgYWxyZWFkeSBoYXMgYmVlbi4gICovCi0rI2lmIGRlZmluZWQgSEFWRV9TWVNfUEFSQU1fSCAmJiAhZGVmaW5lZCBQQVRIX01BWCAmJiAhZGVmaW5lZCBNQVhQQVRITEVOCi0rIyBpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSsjZW5kaWYKLSsKLSsjaWYgIWRlZmluZWQgUEFUSF9NQVggJiYgZGVmaW5lZCBNQVhQQVRITEVOCi0rIyBkZWZpbmUgUEFUSF9NQVggTUFYUEFUSExFTgotKyNlbmRpZgotKwotKyNpZm5kZWYgUEFUSF9NQVgKLSsjIGRlZmluZSBQQVRIX01BWCBfUE9TSVhfUEFUSF9NQVgKLSsjZW5kaWYKLSsKLSsvKiBQYXRobmFtZSBzdXBwb3J0LgotKyAgIElTU0xBU0goQykgICAgICAgICAgIHRlc3RzIHdoZXRoZXIgQyBpcyBhIGRpcmVjdG9yeSBzZXBhcmF0b3IgY2hhcmFjdGVyLgotKyAgIElTX0FCU09MVVRFX1BBVEgoUCkgIHRlc3RzIHdoZXRoZXIgUCBpcyBhbiBhYnNvbHV0ZSBwYXRoLiAgSWYgaXQgaXMgbm90LAotKyAgICAgICAgICAgICAgICAgICAgICAgIGl0IG1heSBiZSBjb25jYXRlbmF0ZWQgdG8gYSBkaXJlY3RvcnkgcGF0aG5hbWUuCi0rICAgSVNfUEFUSF9XSVRIX0RJUihQKSAgdGVzdHMgd2hldGhlciBQIGNvbnRhaW5zIGEgZGlyZWN0b3J5IHNwZWNpZmljYXRpb24uCi0rICovCi0rI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fIHx8IGRlZmluZWQgX19FTVhfXyB8fCBkZWZpbmVkIF9fREpHUFBfXwotKyAgLyogV2luMzIsIE9TLzIsIERPUyAqLwotKyMgZGVmaW5lIElTU0xBU0goQykgKChDKSA9PSAnLycgfHwgKEMpID09ICdcXCcpCi0rIyBkZWZpbmUgSEFTX0RFVklDRShQKSBcCi0rICAgICgoKChQKVswXSA+PSAnQScgJiYgKFApWzBdIDw9ICdaJykgfHwgKChQKVswXSA+PSAnYScgJiYgKFApWzBdIDw9ICd6JykpIFwKLSsgICAgICYmIChQKVsxXSA9PSAnOicpCi0rIyBkZWZpbmUgSVNfQUJTT0xVVEVfUEFUSChQKSAoSVNTTEFTSCAoKFApWzBdKSB8fCBIQVNfREVWSUNFIChQKSkKLSsjIGRlZmluZSBJU19QQVRIX1dJVEhfRElSKFApIFwKLSsgICAgKHN0cmNociAoUCwgJy8nKSAhPSBOVUxMIHx8IHN0cmNociAoUCwgJ1xcJykgIT0gTlVMTCB8fCBIQVNfREVWSUNFIChQKSkKLSsjZWxzZQotKyAgLyogVW5peCAqLwotKyMgZGVmaW5lIElTU0xBU0goQykgKChDKSA9PSAnLycpCi0rIyBkZWZpbmUgSVNfQUJTT0xVVEVfUEFUSChQKSBJU1NMQVNIICgoUClbMF0pCi0rIyBkZWZpbmUgSVNfUEFUSF9XSVRIX0RJUihQKSAoc3RyY2hyIChQLCAnLycpICE9IE5VTEwpCi0rI2VuZGlmCi0rCi0rLyogVGhpcyBpcyB0aGUgdHlwZSB1c2VkIGZvciB0aGUgc2VhcmNoIHRyZWUgd2hlcmUga25vd24gdHJhbnNsYXRpb25zCi0rICAgYXJlIHN0b3JlZC4gICovCi0rc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QKLSt7Ci0rICAvKiBEb21haW4gaW4gd2hpY2ggdG8gc2VhcmNoLiAgKi8KLSsgIGNoYXIgKmRvbWFpbm5hbWU7Ci0rCi0rICAvKiBUaGUgY2F0ZWdvcnkuICAqLwotKyAgaW50IGNhdGVnb3J5OwotKwotKyAgLyogU3RhdGUgb2YgdGhlIGNhdGFsb2cgY291bnRlciBhdCB0aGUgcG9pbnQgdGhlIHN0cmluZyB3YXMgZm91bmQuICAqLwotKyAgaW50IGNvdW50ZXI7Ci0rCi0rICAvKiBDYXRhbG9nIHdoZXJlIHRoZSBzdHJpbmcgd2FzIGZvdW5kLiAgKi8KLSsgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbjsKLSsKLSsgIC8qIEFuZCBmaW5hbGx5IHRoZSB0cmFuc2xhdGlvbi4gICovCi0rICBjb25zdCBjaGFyICp0cmFuc2xhdGlvbjsKLSsgIHNpemVfdCB0cmFuc2xhdGlvbl9sZW5ndGg7Ci0rCi0rICAvKiBQb2ludGVyIHRvIHRoZSBzdHJpbmcgaW4gcXVlc3Rpb24uICAqLwotKyAgY2hhciBtc2dpZFtaRVJPXTsKLSt9OwotKwotKy8qIFJvb3Qgb2YgdGhlIHNlYXJjaCB0cmVlIHdpdGgga25vd24gdHJhbnNsYXRpb25zLiAgV2UgY2FuIHVzZSB0aGlzCi0rICAgb25seSBpZiB0aGUgc3lzdGVtIHByb3ZpZGVzIHRoZSBgdHNlYXJjaCcgZnVuY3Rpb24gZmFtaWx5LiAgKi8KLSsjaWYgZGVmaW5lZCBIQVZFX1RTRUFSQ0ggfHwgZGVmaW5lZCBfTElCQwotKyMgaW5jbHVkZSA8c2VhcmNoLmg+Ci0rCi0rc3RhdGljIHZvaWQgKnJvb3Q7Ci0rCi0rIyBpZmRlZiBfTElCQwotKyMgIGRlZmluZSB0c2VhcmNoIF9fdHNlYXJjaAotKyMgZW5kaWYKLSsKLSsvKiBGdW5jdGlvbiB0byBjb21wYXJlIHR3byBlbnRyaWVzIGluIHRoZSB0YWJsZSBvZiBrbm93biB0cmFuc2xhdGlvbnMuICAqLwotK3N0YXRpYyBpbnQKLSt0cmFuc2NtcCAoY29uc3Qgdm9pZCAqcDEsIGNvbnN0IHZvaWQgKnAyKQotK3sKLSsgIGNvbnN0IHN0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90ICpzMTsKLSsgIGNvbnN0IHN0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90ICpzMjsKLSsgIGludCByZXN1bHQ7Ci0rCi0rICBzMSA9IChjb25zdCBzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCAqKSBwMTsKLSsgIHMyID0gKGNvbnN0IHN0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90ICopIHAyOwotKwotKyAgcmVzdWx0ID0gc3RyY21wIChzMS0+bXNnaWQsIHMyLT5tc2dpZCk7Ci0rICBpZiAocmVzdWx0ID09IDApCi0rICAgIHsKLSsgICAgICByZXN1bHQgPSBzdHJjbXAgKHMxLT5kb21haW5uYW1lLCBzMi0+ZG9tYWlubmFtZSk7Ci0rICAgICAgaWYgKHJlc3VsdCA9PSAwKQotKwkvKiBXZSBjb21wYXJlIHRoZSBjYXRlZ29yeSBsYXN0ICh0aG91Z2ggdGhpcyBpcyB0aGUgY2hlYXBlc3QKLSsJICAgb3BlcmF0aW9uKSBzaW5jZSBpdCBpcyBob3BlZnVsbHkgYWx3YXlzIHRoZSBzYW1lIChuYW1lbHkKLSsJICAgTENfTUVTU0FHRVMpLiAgKi8KLSsJcmVzdWx0ID0gczEtPmNhdGVnb3J5IC0gczItPmNhdGVnb3J5OwotKyAgICB9Ci0rCi0rICByZXR1cm4gcmVzdWx0OwotK30KLSsjZW5kaWYKLSsKLSsjaWZuZGVmIElOVFZBUkRFRgotKyMgZGVmaW5lIElOVFZBUkRFRihuYW1lKQotKyNlbmRpZgotKyNpZm5kZWYgSU5UVVNFCi0rIyBkZWZpbmUgSU5UVVNFKG5hbWUpIG5hbWUKLSsjZW5kaWYKLSsKLSsvKiBOYW1lIG9mIHRoZSBkZWZhdWx0IGRvbWFpbiB1c2VkIGZvciBnZXR0ZXh0KDMpIHByaW9yIGFueSBjYWxsIHRvCi0rICAgdGV4dGRvbWFpbigzKS4gIFRoZSBkZWZhdWx0IHZhbHVlIGZvciB0aGlzIGlzICJtZXNzYWdlcyIuICAqLwotK2NvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW5bXSBhdHRyaWJ1dGVfaGlkZGVuID0gIm1lc3NhZ2VzIjsKLSsKLSsvKiBWYWx1ZSB1c2VkIGFzIHRoZSBkZWZhdWx0IGRvbWFpbiBmb3IgZ2V0dGV4dCgzKS4gICovCi0rY29uc3QgY2hhciAqX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gYXR0cmlidXRlX2hpZGRlbgotKyAgICAgPSBfbmxfZGVmYXVsdF9kZWZhdWx0X2RvbWFpbjsKLSsKLSsvKiBDb250YWlucyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbWVzc2FnZSBjYXRhbG9ncy4gICovCi0rI2lmIGRlZmluZWQgX19FTVhfXwotK2V4dGVybiBjb25zdCBjaGFyIF9ubF9kZWZhdWx0X2Rpcm5hbWVbXTsKLSsjZWxzZQotK2NvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGlybmFtZVtdID0gTE9DQUxFRElSOwotK0lOVFZBUkRFRiAoX25sX2RlZmF1bHRfZGlybmFtZSkKLSsjZW5kaWYKLSsKLSsvKiBMaXN0IHdpdGggYmluZGluZ3Mgb2Ygc3BlY2lmaWMgZG9tYWlucyBjcmVhdGVkIGJ5IGJpbmR0ZXh0ZG9tYWluKCkKLSsgICBjYWxscy4gICovCi0rc3RydWN0IGJpbmRpbmcgKl9ubF9kb21haW5fYmluZGluZ3M7Ci0rCi0rLyogUHJvdG90eXBlcyBmb3IgbG9jYWwgZnVuY3Rpb25zLiAgKi8KLStzdGF0aWMgY2hhciAqcGx1cmFsX2xvb2t1cCAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluLAotKwkJCSAgICB1bnNpZ25lZCBsb25nIGludCBuLAotKwkJCSAgICBjb25zdCBjaGFyICp0cmFuc2xhdGlvbiwgc2l6ZV90IHRyYW5zbGF0aW9uX2xlbikKLSsgICAgIGludGVybmFsX2Z1bmN0aW9uOwotK3N0YXRpYyBjb25zdCBjaGFyICpndWVzc19jYXRlZ29yeV92YWx1ZSAoaW50IGNhdGVnb3J5LAotKwkJCQkJIGNvbnN0IGNoYXIgKmNhdGVnb3J5bmFtZSkKLSsgICAgIGludGVybmFsX2Z1bmN0aW9uOwotKyNpZmRlZiBfTElCQwotKyMgaW5jbHVkZSAiLi4vbG9jYWxlL2xvY2FsZWluZm8uaCIKLSsjIGRlZmluZSBjYXRlZ29yeV90b19uYW1lKGNhdGVnb3J5KQlfbmxfY2F0ZWdvcnlfbmFtZXNbY2F0ZWdvcnldCi0rI2Vsc2UKLStzdGF0aWMgY29uc3QgY2hhciAqY2F0ZWdvcnlfdG9fbmFtZSAoaW50IGNhdGVnb3J5KSBpbnRlcm5hbF9mdW5jdGlvbjsKLSsjZW5kaWYKLSsKLSsKLSsvKiBGb3IgdGhvc2UgbG9vc2luZyBzeXN0ZW1zIHdoaWNoIGRvbid0IGhhdmUgYGFsbG9jYScgd2UgaGF2ZSB0byBhZGQKLSsgICBzb21lIGFkZGl0aW9uYWwgY29kZSBlbXVsYXRpbmcgaXQuICAqLwotKyNpZmRlZiBIQVZFX0FMTE9DQQotKy8qIE5vdGhpbmcgaGFzIHRvIGJlIGRvbmUuICAqLwotKyMgZGVmaW5lIGZyZWVhKHApIC8qIG5vdGhpbmcgKi8KLSsjIGRlZmluZSBBRERfQkxPQ0sobGlzdCwgYWRkcmVzcykgLyogbm90aGluZyAqLwotKyMgZGVmaW5lIEZSRUVfQkxPQ0tTKGxpc3QpIC8qIG5vdGhpbmcgKi8KLSsjZWxzZQotK3N0cnVjdCBibG9ja19saXN0Ci0rewotKyAgdm9pZCAqYWRkcmVzczsKLSsgIHN0cnVjdCBibG9ja19saXN0ICpuZXh0OwotK307Ci0rIyBkZWZpbmUgQUREX0JMT0NLKGxpc3QsIGFkZHIpCQkJCQkJICAgICAgXAotKyAgZG8gewkJCQkJCQkJCSAgICAgIFwKLSsgICAgc3RydWN0IGJsb2NrX2xpc3QgKm5ld3AgPSAoc3RydWN0IGJsb2NrX2xpc3QgKikgbWFsbG9jIChzaXplb2YgKCpuZXdwKSk7ICBcCi0rICAgIC8qIElmIHdlIGNhbm5vdCBnZXQgYSBmcmVlIGJsb2NrIHdlIGNhbm5vdCBhZGQgdGhlIG5ldyBlbGVtZW50IHRvCSAgICAgIFwKLSsgICAgICAgdGhlIGxpc3QuICAqLwkJCQkJCQkgICAgICBcCi0rICAgIGlmIChuZXdwICE9IE5VTEwpIHsJCQkJCQkJICAgICAgXAotKyAgICAgIG5ld3AtPmFkZHJlc3MgPSAoYWRkcik7CQkJCQkJICAgICAgXAotKyAgICAgIG5ld3AtPm5leHQgPSAobGlzdCk7CQkJCQkJICAgICAgXAotKyAgICAgIChsaXN0KSA9IG5ld3A7CQkJCQkJCSAgICAgIFwKLSsgICAgfQkJCQkJCQkJCSAgICAgIFwKLSsgIH0gd2hpbGUgKDApCi0rIyBkZWZpbmUgRlJFRV9CTE9DS1MobGlzdCkJCQkJCQkgICAgICBcCi0rICBkbyB7CQkJCQkJCQkJICAgICAgXAotKyAgICB3aGlsZSAobGlzdCAhPSBOVUxMKSB7CQkJCQkJICAgICAgXAotKyAgICAgIHN0cnVjdCBibG9ja19saXN0ICpvbGQgPSBsaXN0OwkJCQkJICAgICAgXAotKyAgICAgIGxpc3QgPSBsaXN0LT5uZXh0OwkJCQkJCSAgICAgIFwKLSsgICAgICBmcmVlIChvbGQtPmFkZHJlc3MpOwkJCQkJCSAgICAgIFwKLSsgICAgICBmcmVlIChvbGQpOwkJCQkJCQkgICAgICBcCi0rICAgIH0JCQkJCQkJCQkgICAgICBcCi0rICB9IHdoaWxlICgwKQotKyMgdW5kZWYgYWxsb2NhCi0rIyBkZWZpbmUgYWxsb2NhKHNpemUpIChtYWxsb2MgKHNpemUpKQotKyMgZGVmaW5lIGZyZWVhKHApIGZyZWUgKHApCi0rI2VuZGlmCS8qIGhhdmUgYWxsb2NhICovCi0rCi0rCi0rI2lmZGVmIF9MSUJDCi0rLyogTGlzdCBvZiBibG9ja3MgYWxsb2NhdGVkIGZvciB0cmFuc2xhdGlvbnMuICAqLwotK3R5cGVkZWYgc3RydWN0IHRyYW5zbWVtX2xpc3QKLSt7Ci0rICBzdHJ1Y3QgdHJhbnNtZW1fbGlzdCAqbmV4dDsKLSsgIGNoYXIgZGF0YVtaRVJPXTsKLSt9IHRyYW5zbWVtX2Jsb2NrX3Q7Ci0rc3RhdGljIHN0cnVjdCB0cmFuc21lbV9saXN0ICp0cmFuc21lbV9saXN0OwotKyNlbHNlCi0rdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHRyYW5zbWVtX2Jsb2NrX3Q7Ci0rI2VuZGlmCi0rCi0rCi0rLyogTmFtZXMgZm9yIHRoZSBsaWJpbnRsIGZ1bmN0aW9ucyBhcmUgYSBwcm9ibGVtLiAgVGhleSBtdXN0IG5vdCBjbGFzaAotKyAgIHdpdGggZXhpc3RpbmcgbmFtZXMgYW5kIHRoZXkgc2hvdWxkIGZvbGxvdyBBTlNJIEMuICBCdXQgdGhpcyBzb3VyY2UKLSsgICBjb2RlIGlzIGFsc28gdXNlZCBpbiBHTlUgQyBMaWJyYXJ5IHdoZXJlIHRoZSBuYW1lcyBoYXZlIGEgX18KLSsgICBwcmVmaXguICBTbyB3ZSBoYXZlIHRvIG1ha2UgYSBkaWZmZXJlbmNlIGhlcmUuICAqLwotKyNpZmRlZiBfTElCQwotKyMgZGVmaW5lIERDSUdFVFRFWFQgX19kY2lnZXR0ZXh0Ci0rI2Vsc2UKLSsjIGRlZmluZSBEQ0lHRVRURVhUIGxpYmludGxfZGNpZ2V0dGV4dAotKyNlbmRpZgotKwotKy8qIExvY2sgdmFyaWFibGUgdG8gcHJvdGVjdCB0aGUgZ2xvYmFsIGRhdGEgaW4gdGhlIGdldHRleHQgaW1wbGVtZW50YXRpb24uICAqLwotKyNpZmRlZiBfTElCQwotK19fbGliY19yd2xvY2tfZGVmaW5lX2luaXRpYWxpemVkICgsIF9ubF9zdGF0ZV9sb2NrIGF0dHJpYnV0ZV9oaWRkZW4pCi0rI2VuZGlmCi0rCi0rLyogQ2hlY2tpbmcgd2hldGhlciB0aGUgYmluYXJpZXMgcnVucyBTVUlEIG11c3QgYmUgZG9uZSBhbmQgZ2xpYmMgcHJvdmlkZXMKLSsgICBlYXNpZXIgbWV0aG9kcyB0aGVyZWZvcmUgd2UgbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCi0rI2lmZGVmIF9MSUJDCi0rIyBkZWZpbmUgRU5BQkxFX1NFQ1VSRSBfX2xpYmNfZW5hYmxlX3NlY3VyZQotKyMgZGVmaW5lIERFVEVSTUlORV9TRUNVUkUKLSsjZWxzZQotKyMgaWZuZGVmIEhBVkVfR0VUVUlECi0rIyAgZGVmaW5lIGdldHVpZCgpIDAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgSEFWRV9HRVRHSUQKLSsjICBkZWZpbmUgZ2V0Z2lkKCkgMAotKyMgZW5kaWYKLSsjIGlmbmRlZiBIQVZFX0dFVEVVSUQKLSsjICBkZWZpbmUgZ2V0ZXVpZCgpIGdldHVpZCgpCi0rIyBlbmRpZgotKyMgaWZuZGVmIEhBVkVfR0VURUdJRAotKyMgIGRlZmluZSBnZXRlZ2lkKCkgZ2V0Z2lkKCkKLSsjIGVuZGlmCi0rc3RhdGljIGludCBlbmFibGVfc2VjdXJlOwotKyMgZGVmaW5lIEVOQUJMRV9TRUNVUkUgKGVuYWJsZV9zZWN1cmUgPT0gMSkKLSsjIGRlZmluZSBERVRFUk1JTkVfU0VDVVJFIFwKLSsgIGlmIChlbmFibGVfc2VjdXJlID09IDApCQkJCQkJICAgICAgXAotKyAgICB7CQkJCQkJCQkJICAgICAgXAotKyAgICAgIGlmIChnZXR1aWQgKCkgIT0gZ2V0ZXVpZCAoKSB8fCBnZXRnaWQgKCkgIT0gZ2V0ZWdpZCAoKSkJCSAgICAgIFwKLSsJZW5hYmxlX3NlY3VyZSA9IDE7CQkJCQkJICAgICAgXAotKyAgICAgIGVsc2UJCQkJCQkJCSAgICAgIFwKLSsJZW5hYmxlX3NlY3VyZSA9IC0xOwkJCQkJCSAgICAgIFwKLSsgICAgfQotKyNlbmRpZgotKwotKy8qIEdldCB0aGUgZnVuY3Rpb24gdG8gZXZhbHVhdGUgdGhlIHBsdXJhbCBleHByZXNzaW9uLiAgKi8KLSsjaW5jbHVkZSAiZXZhbC1wbHVyYWwuaCIKLSsKLSsvKiBMb29rIHVwIE1TR0lEIGluIHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQKLSsgICBDQVRFR09SWSBsb2NhbGUgYW5kLCBpZiBQTFVSQUwgaXMgbm9uemVybywgc2VhcmNoIG92ZXIgc3RyaW5nCi0rICAgZGVwZW5kaW5nIG9uIHRoZSBwbHVyYWwgZm9ybSBkZXRlcm1pbmVkIGJ5IE4uICAqLwotK2NoYXIgKgotK0RDSUdFVFRFWFQgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKm1zZ2lkMSwgY29uc3QgY2hhciAqbXNnaWQyLAotKwkgICAgaW50IHBsdXJhbCwgdW5zaWduZWQgbG9uZyBpbnQgbiwgaW50IGNhdGVnb3J5KQotK3sKLSsjaWZuZGVmIEhBVkVfQUxMT0NBCi0rICBzdHJ1Y3QgYmxvY2tfbGlzdCAqYmxvY2tfbGlzdCA9IE5VTEw7Ci0rI2VuZGlmCi0rICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW47Ci0rICBzdHJ1Y3QgYmluZGluZyAqYmluZGluZzsKLSsgIGNvbnN0IGNoYXIgKmNhdGVnb3J5bmFtZTsKLSsgIGNvbnN0IGNoYXIgKmNhdGVnb3J5dmFsdWU7Ci0rICBjaGFyICpkaXJuYW1lLCAqeGRvbWFpbm5hbWU7Ci0rICBjaGFyICpzaW5nbGVfbG9jYWxlOwotKyAgY2hhciAqcmV0dmFsOwotKyAgc2l6ZV90IHJldGxlbjsKLSsgIGludCBzYXZlZF9lcnJubzsKLSsjaWYgZGVmaW5lZCBIQVZFX1RTRUFSQ0ggfHwgZGVmaW5lZCBfTElCQwotKyAgc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKnNlYXJjaDsKLSsgIHN0cnVjdCBrbm93bl90cmFuc2xhdGlvbl90ICoqZm91bmRwID0gTlVMTDsKLSsgIHNpemVfdCBtc2dpZF9sZW47Ci0rI2VuZGlmCi0rICBzaXplX3QgZG9tYWlubmFtZV9sZW47Ci0rCi0rICAvKiBJZiBubyByZWFsIE1TR0lEIGlzIGdpdmVuIHJldHVybiBOVUxMLiAgKi8KLSsgIGlmIChtc2dpZDEgPT0gTlVMTCkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rI2lmZGVmIF9MSUJDCi0rICBpZiAoY2F0ZWdvcnkgPCAwIHx8IGNhdGVnb3J5ID49IF9fTENfTEFTVCB8fCBjYXRlZ29yeSA9PSBMQ19BTEwpCi0rICAgIC8qIEJvZ3VzLiAgKi8KLSsgICAgcmV0dXJuIChwbHVyYWwgPT0gMAotKwkgICAgPyAoY2hhciAqKSBtc2dpZDEKLSsJICAgIC8qIFVzZSB0aGUgR2VybWFuaWMgcGx1cmFsIHJ1bGUuICAqLwotKwkgICAgOiBuID09IDEgPyAoY2hhciAqKSBtc2dpZDEgOiAoY2hhciAqKSBtc2dpZDIpOwotKyNlbmRpZgotKwotKyAgX19saWJjX3J3bG9ja19yZGxvY2sgKF9ubF9zdGF0ZV9sb2NrKTsKLSsKLSsgIC8qIElmIERPTUFJTk5BTUUgaXMgTlVMTCwgd2UgYXJlIGludGVyZXN0ZWQgaW4gdGhlIGRlZmF1bHQgZG9tYWluLiAgSWYKLSsgICAgIENBVEVHT1JZIGlzIG5vdCBMQ19NRVNTQUdFUyB0aGlzIG1pZ2h0IG5vdCBtYWtlIG11Y2ggc2Vuc2UgYnV0IHRoZQotKyAgICAgZGVmaW5pdGlvbiBsZWZ0IHRoaXMgdW5kZWZpbmVkLiAgKi8KLSsgIGlmIChkb21haW5uYW1lID09IE5VTEwpCi0rICAgIGRvbWFpbm5hbWUgPSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbjsKLSsKLSsgIC8qIE9TLzIgc3BlY2lmaWM6IGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBvbGRlciBsaWJpbnRsIHZlcnNpb25zICAqLwotKyNpZmRlZiBMQ19NRVNTQUdFU19DT01QQVQKLSsgIGlmIChjYXRlZ29yeSA9PSBMQ19NRVNTQUdFU19DT01QQVQpCi0rICAgIGNhdGVnb3J5ID0gTENfTUVTU0FHRVM7Ci0rI2VuZGlmCi0rCi0rI2lmIGRlZmluZWQgSEFWRV9UU0VBUkNIIHx8IGRlZmluZWQgX0xJQkMKLSsgIG1zZ2lkX2xlbiA9IHN0cmxlbiAobXNnaWQxKSArIDE7Ci0rCi0rICAvKiBUcnkgdG8gZmluZCB0aGUgdHJhbnNsYXRpb24gYW1vbmcgdGhvc2Ugd2hpY2ggd2UgZm91bmQgYXQKLSsgICAgIHNvbWUgdGltZS4gICovCi0rICBzZWFyY2ggPSAoc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKikKLSsJICAgYWxsb2NhIChvZmZzZXRvZiAoc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QsIG1zZ2lkKSArIG1zZ2lkX2xlbik7Ci0rICBtZW1jcHkgKHNlYXJjaC0+bXNnaWQsIG1zZ2lkMSwgbXNnaWRfbGVuKTsKLSsgIHNlYXJjaC0+ZG9tYWlubmFtZSA9IChjaGFyICopIGRvbWFpbm5hbWU7Ci0rICBzZWFyY2gtPmNhdGVnb3J5ID0gY2F0ZWdvcnk7Ci0rCi0rICBmb3VuZHAgPSAoc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKiopIHRmaW5kIChzZWFyY2gsICZyb290LCB0cmFuc2NtcCk7Ci0rICBmcmVlYSAoc2VhcmNoKTsKLSsgIGlmIChmb3VuZHAgIT0gTlVMTCAmJiAoKmZvdW5kcCktPmNvdW50ZXIgPT0gX25sX21zZ19jYXRfY250cikKLSsgICAgewotKyAgICAgIC8qIE5vdyBkZWFsIHdpdGggcGx1cmFsLiAgKi8KLSsgICAgICBpZiAocGx1cmFsKQotKwlyZXR2YWwgPSBwbHVyYWxfbG9va3VwICgoKmZvdW5kcCktPmRvbWFpbiwgbiwgKCpmb3VuZHApLT50cmFuc2xhdGlvbiwKLSsJCQkJKCpmb3VuZHApLT50cmFuc2xhdGlvbl9sZW5ndGgpOwotKyAgICAgIGVsc2UKLSsJcmV0dmFsID0gKGNoYXIgKikgKCpmb3VuZHApLT50cmFuc2xhdGlvbjsKLSsKLSsgICAgICBfX2xpYmNfcndsb2NrX3VubG9jayAoX25sX3N0YXRlX2xvY2spOwotKyAgICAgIHJldHVybiByZXR2YWw7Ci0rICAgIH0KLSsjZW5kaWYKLSsKLSsgIC8qIFByZXNlcnZlIHRoZSBgZXJybm8nIHZhbHVlLiAgKi8KLSsgIHNhdmVkX2Vycm5vID0gZXJybm87Ci0rCi0rICAvKiBTZWUgd2hldGhlciB0aGlzIGlzIGEgU1VJRCBiaW5hcnkgb3Igbm90LiAgKi8KLSsgIERFVEVSTUlORV9TRUNVUkU7Ci0rCi0rICAvKiBGaXJzdCBmaW5kIG1hdGNoaW5nIGJpbmRpbmcuICAqLwotKyAgZm9yIChiaW5kaW5nID0gX25sX2RvbWFpbl9iaW5kaW5nczsgYmluZGluZyAhPSBOVUxMOyBiaW5kaW5nID0gYmluZGluZy0+bmV4dCkKLSsgICAgewotKyAgICAgIGludCBjb21wYXJlID0gc3RyY21wIChkb21haW5uYW1lLCBiaW5kaW5nLT5kb21haW5uYW1lKTsKLSsgICAgICBpZiAoY29tcGFyZSA9PSAwKQotKwkvKiBXZSBmb3VuZCBpdCEgICovCi0rCWJyZWFrOwotKyAgICAgIGlmIChjb21wYXJlIDwgMCkKLSsJewotKwkgIC8qIEl0IGlzIG5vdCBpbiB0aGUgbGlzdC4gICovCi0rCSAgYmluZGluZyA9IE5VTEw7Ci0rCSAgYnJlYWs7Ci0rCX0KLSsgICAgfQotKwotKyAgaWYgKGJpbmRpbmcgPT0gTlVMTCkKLSsgICAgZGlybmFtZSA9IChjaGFyICopIElOVFVTRShfbmxfZGVmYXVsdF9kaXJuYW1lKTsKLSsgIGVsc2UgaWYgKElTX0FCU09MVVRFX1BBVEggKGJpbmRpbmctPmRpcm5hbWUpKQotKyAgICBkaXJuYW1lID0gYmluZGluZy0+ZGlybmFtZTsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIC8qIFdlIGhhdmUgYSByZWxhdGl2ZSBwYXRoLiAgTWFrZSBpdCBhYnNvbHV0ZSBub3cuICAqLwotKyAgICAgIHNpemVfdCBkaXJuYW1lX2xlbiA9IHN0cmxlbiAoYmluZGluZy0+ZGlybmFtZSkgKyAxOwotKyAgICAgIHNpemVfdCBwYXRoX21heDsKLSsgICAgICBjaGFyICpyZXQ7Ci0rCi0rICAgICAgcGF0aF9tYXggPSAodW5zaWduZWQgaW50KSBQQVRIX01BWDsKLSsgICAgICBwYXRoX21heCArPSAyOwkJLyogVGhlIGdldGN3ZCBkb2NzIHNheSB0byBkbyB0aGlzLiAgKi8KLSsKLSsgICAgICBmb3IgKDs7KQotKwl7Ci0rCSAgZGlybmFtZSA9IChjaGFyICopIGFsbG9jYSAocGF0aF9tYXggKyBkaXJuYW1lX2xlbik7Ci0rCSAgQUREX0JMT0NLIChibG9ja19saXN0LCBkaXJuYW1lKTsKLSsKLSsJICBfX3NldF9lcnJubyAoMCk7Ci0rCSAgcmV0ID0gZ2V0Y3dkIChkaXJuYW1lLCBwYXRoX21heCk7Ci0rCSAgaWYgKHJldCAhPSBOVUxMIHx8IGVycm5vICE9IEVSQU5HRSkKLSsJICAgIGJyZWFrOwotKwotKwkgIHBhdGhfbWF4ICs9IHBhdGhfbWF4IC8gMjsKLSsJICBwYXRoX21heCArPSBQQVRIX0lOQ1I7Ci0rCX0KLSsKLSsgICAgICBpZiAocmV0ID09IE5VTEwpCi0rCS8qIFdlIGNhbm5vdCBnZXQgdGhlIGN1cnJlbnQgd29ya2luZyBkaXJlY3RvcnkuICBEb24ndCBzaWduYWwgYW4KLSsJICAgZXJyb3IgYnV0IHNpbXBseSByZXR1cm4gdGhlIGRlZmF1bHQgc3RyaW5nLiAgKi8KLSsJZ290byByZXR1cm5fdW50cmFuc2xhdGVkOwotKwotKyAgICAgIHN0cGNweSAoc3RwY3B5IChzdHJjaHIgKGRpcm5hbWUsICdcMCcpLCAiLyIpLCBiaW5kaW5nLT5kaXJuYW1lKTsKLSsgICAgfQotKwotKyAgLyogTm93IGRldGVybWluZSB0aGUgc3ltYm9saWMgbmFtZSBvZiBDQVRFR09SWSBhbmQgaXRzIHZhbHVlLiAgKi8KLSsgIGNhdGVnb3J5bmFtZSA9IGNhdGVnb3J5X3RvX25hbWUgKGNhdGVnb3J5KTsKLSsgIGNhdGVnb3J5dmFsdWUgPSBndWVzc19jYXRlZ29yeV92YWx1ZSAoY2F0ZWdvcnksIGNhdGVnb3J5bmFtZSk7Ci0rCi0rICBkb21haW5uYW1lX2xlbiA9IHN0cmxlbiAoZG9tYWlubmFtZSk7Ci0rICB4ZG9tYWlubmFtZSA9IChjaGFyICopIGFsbG9jYSAoc3RybGVuIChjYXRlZ29yeW5hbWUpCi0rCQkJCSArIGRvbWFpbm5hbWVfbGVuICsgNSk7Ci0rICBBRERfQkxPQ0sgKGJsb2NrX2xpc3QsIHhkb21haW5uYW1lKTsKLSsKLSsgIHN0cGNweSAobWVtcGNweSAoc3RwY3B5IChzdHBjcHkgKHhkb21haW5uYW1lLCBjYXRlZ29yeW5hbWUpLCAiLyIpLAotKwkJICBkb21haW5uYW1lLCBkb21haW5uYW1lX2xlbiksCi0rCSAgIi5tbyIpOwotKwotKyAgLyogQ3JlYXRpbmcgd29ya2luZyBhcmVhLiAgKi8KLSsgIHNpbmdsZV9sb2NhbGUgPSAoY2hhciAqKSBhbGxvY2EgKHN0cmxlbiAoY2F0ZWdvcnl2YWx1ZSkgKyAxKTsKLSsgIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgc2luZ2xlX2xvY2FsZSk7Ci0rCi0rCi0rICAvKiBTZWFyY2ggZm9yIHRoZSBnaXZlbiBzdHJpbmcuICBUaGlzIGlzIGEgbG9vcCBiZWNhdXNlIHdlIHBlcmhhcHMKLSsgICAgIGdvdCBhbiBvcmRlcmVkIGxpc3Qgb2YgbGFuZ3VhZ2VzIHRvIGNvbnNpZGVyIGZvciB0aGUgdHJhbnNsYXRpb24uICAqLwotKyAgd2hpbGUgKDEpCi0rICAgIHsKLSsgICAgICAvKiBNYWtlIENBVEVHT1JZVkFMVUUgcG9pbnQgdG8gdGhlIG5leHQgZWxlbWVudCBvZiB0aGUgbGlzdC4gICovCi0rICAgICAgd2hpbGUgKGNhdGVnb3J5dmFsdWVbMF0gIT0gJ1wwJyAmJiBjYXRlZ29yeXZhbHVlWzBdID09ICc6JykKLSsJKytjYXRlZ29yeXZhbHVlOwotKyAgICAgIGlmIChjYXRlZ29yeXZhbHVlWzBdID09ICdcMCcpCi0rCXsKLSsJICAvKiBUaGUgd2hvbGUgY29udGVudHMgb2YgQ0FURUdPUllWQUxVRSBoYXMgYmVlbiBzZWFyY2hlZCBidXQKLSsJICAgICBubyB2YWxpZCBlbnRyeSBoYXMgYmVlbiBmb3VuZC4gIFdlIHNvbHZlIHRoaXMgc2l0dWF0aW9uCi0rCSAgICAgYnkgaW1wbGljaXRseSBhcHBlbmRpbmcgYSAiQyIgZW50cnksIGkuZS4gbm8gdHJhbnNsYXRpb24KLSsJICAgICB3aWxsIHRha2UgcGxhY2UuICAqLwotKwkgIHNpbmdsZV9sb2NhbGVbMF0gPSAnQyc7Ci0rCSAgc2luZ2xlX2xvY2FsZVsxXSA9ICdcMCc7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXsKLSsJICBjaGFyICpjcCA9IHNpbmdsZV9sb2NhbGU7Ci0rCSAgd2hpbGUgKGNhdGVnb3J5dmFsdWVbMF0gIT0gJ1wwJyAmJiBjYXRlZ29yeXZhbHVlWzBdICE9ICc6JykKLSsJICAgICpjcCsrID0gKmNhdGVnb3J5dmFsdWUrKzsKLSsJICAqY3AgPSAnXDAnOwotKwotKwkgIC8qIFdoZW4gdGhpcyBpcyBhIFNVSUQgYmluYXJ5IHdlIG11c3Qgbm90IGFsbG93IGFjY2Vzc2luZyBmaWxlcwotKwkgICAgIG91dHNpZGUgdGhlIGRlZGljYXRlZCBkaXJlY3Rvcmllcy4gICovCi0rCSAgaWYgKEVOQUJMRV9TRUNVUkUgJiYgSVNfUEFUSF9XSVRIX0RJUiAoc2luZ2xlX2xvY2FsZSkpCi0rCSAgICAvKiBJbmdvcmUgdGhpcyBlbnRyeS4gICovCi0rCSAgICBjb250aW51ZTsKLSsJfQotKwotKyAgICAgIC8qIElmIHRoZSBjdXJyZW50IGxvY2FsZSB2YWx1ZSBpcyBDIChvciBQT1NJWCkgd2UgZG9uJ3QgbG9hZCBhCi0rCSBkb21haW4uICBSZXR1cm4gdGhlIE1TR0lELiAgKi8KLSsgICAgICBpZiAoc3RyY21wIChzaW5nbGVfbG9jYWxlLCAiQyIpID09IDAKLSsJICB8fCBzdHJjbXAgKHNpbmdsZV9sb2NhbGUsICJQT1NJWCIpID09IDApCi0rCWJyZWFrOwotKwotKyAgICAgIC8qIEZpbmQgc3RydWN0dXJlIGRlc2NyaWJpbmcgdGhlIG1lc3NhZ2UgY2F0YWxvZyBtYXRjaGluZyB0aGUKLSsJIERPTUFJTk5BTUUgYW5kIENBVEVHT1JZLiAgKi8KLSsgICAgICBkb21haW4gPSBfbmxfZmluZF9kb21haW4gKGRpcm5hbWUsIHNpbmdsZV9sb2NhbGUsIHhkb21haW5uYW1lLCBiaW5kaW5nKTsKLSsKLSsgICAgICBpZiAoZG9tYWluICE9IE5VTEwpCi0rCXsKLSsJICByZXR2YWwgPSBfbmxfZmluZF9tc2cgKGRvbWFpbiwgYmluZGluZywgbXNnaWQxLCAmcmV0bGVuKTsKLSsKLSsJICBpZiAocmV0dmFsID09IE5VTEwpCi0rCSAgICB7Ci0rCSAgICAgIGludCBjbnQ7Ci0rCi0rCSAgICAgIGZvciAoY250ID0gMDsgZG9tYWluLT5zdWNjZXNzb3JbY250XSAhPSBOVUxMOyArK2NudCkKLSsJCXsKLSsJCSAgcmV0dmFsID0gX25sX2ZpbmRfbXNnIChkb21haW4tPnN1Y2Nlc3NvcltjbnRdLCBiaW5kaW5nLAotKwkJCQkJIG1zZ2lkMSwgJnJldGxlbik7Ci0rCi0rCQkgIGlmIChyZXR2YWwgIT0gTlVMTCkKLSsJCSAgICB7Ci0rCQkgICAgICBkb21haW4gPSBkb21haW4tPnN1Y2Nlc3NvcltjbnRdOwotKwkJICAgICAgYnJlYWs7Ci0rCQkgICAgfQotKwkJfQotKwkgICAgfQotKwotKwkgIGlmIChyZXR2YWwgIT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgLyogRm91bmQgdGhlIHRyYW5zbGF0aW9uIG9mIE1TR0lEMSBpbiBkb21haW4gRE9NQUlOOgotKwkJIHN0YXJ0aW5nIGF0IFJFVFZBTCwgUkVUTEVOIGJ5dGVzLiAgKi8KLSsJICAgICAgRlJFRV9CTE9DS1MgKGJsb2NrX2xpc3QpOwotKyNpZiBkZWZpbmVkIEhBVkVfVFNFQVJDSCB8fCBkZWZpbmVkIF9MSUJDCi0rCSAgICAgIGlmIChmb3VuZHAgPT0gTlVMTCkKLSsJCXsKLSsJCSAgLyogQ3JlYXRlIGEgbmV3IGVudHJ5IGFuZCBhZGQgaXQgdG8gdGhlIHNlYXJjaCB0cmVlLiAgKi8KLSsJCSAgc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKm5ld3A7Ci0rCi0rCQkgIG5ld3AgPSAoc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKikKLSsJCSAgICBtYWxsb2MgKG9mZnNldG9mIChzdHJ1Y3Qga25vd25fdHJhbnNsYXRpb25fdCwgbXNnaWQpCi0rCQkJICAgICsgbXNnaWRfbGVuICsgZG9tYWlubmFtZV9sZW4gKyAxKTsKLSsJCSAgaWYgKG5ld3AgIT0gTlVMTCkKLSsJCSAgICB7Ci0rCQkgICAgICBuZXdwLT5kb21haW5uYW1lID0KLSsJCQltZW1wY3B5IChuZXdwLT5tc2dpZCwgbXNnaWQxLCBtc2dpZF9sZW4pOwotKwkJICAgICAgbWVtY3B5IChuZXdwLT5kb21haW5uYW1lLCBkb21haW5uYW1lLCBkb21haW5uYW1lX2xlbiArIDEpOwotKwkJICAgICAgbmV3cC0+Y2F0ZWdvcnkgPSBjYXRlZ29yeTsKLSsJCSAgICAgIG5ld3AtPmNvdW50ZXIgPSBfbmxfbXNnX2NhdF9jbnRyOwotKwkJICAgICAgbmV3cC0+ZG9tYWluID0gZG9tYWluOwotKwkJICAgICAgbmV3cC0+dHJhbnNsYXRpb24gPSByZXR2YWw7Ci0rCQkgICAgICBuZXdwLT50cmFuc2xhdGlvbl9sZW5ndGggPSByZXRsZW47Ci0rCi0rCQkgICAgICAvKiBJbnNlcnQgdGhlIGVudHJ5IGluIHRoZSBzZWFyY2ggdHJlZS4gICovCi0rCQkgICAgICBmb3VuZHAgPSAoc3RydWN0IGtub3duX3RyYW5zbGF0aW9uX3QgKiopCi0rCQkJdHNlYXJjaCAobmV3cCwgJnJvb3QsIHRyYW5zY21wKTsKLSsJCSAgICAgIGlmIChmb3VuZHAgPT0gTlVMTAotKwkJCSAgfHwgX19idWlsdGluX2V4cGVjdCAoKmZvdW5kcCAhPSBuZXdwLCAwKSkKLSsJCQkvKiBUaGUgaW5zZXJ0IGZhaWxlZC4gICovCi0rCQkJZnJlZSAobmV3cCk7Ci0rCQkgICAgfQotKwkJfQotKwkgICAgICBlbHNlCi0rCQl7Ci0rCQkgIC8qIFdlIGNhbiB1cGRhdGUgdGhlIGV4aXN0aW5nIGVudHJ5LiAgKi8KLSsJCSAgKCpmb3VuZHApLT5jb3VudGVyID0gX25sX21zZ19jYXRfY250cjsKLSsJCSAgKCpmb3VuZHApLT5kb21haW4gPSBkb21haW47Ci0rCQkgICgqZm91bmRwKS0+dHJhbnNsYXRpb24gPSByZXR2YWw7Ci0rCQkgICgqZm91bmRwKS0+dHJhbnNsYXRpb25fbGVuZ3RoID0gcmV0bGVuOwotKwkJfQotKyNlbmRpZgotKwkgICAgICBfX3NldF9lcnJubyAoc2F2ZWRfZXJybm8pOwotKwotKwkgICAgICAvKiBOb3cgZGVhbCB3aXRoIHBsdXJhbC4gICovCi0rCSAgICAgIGlmIChwbHVyYWwpCi0rCQlyZXR2YWwgPSBwbHVyYWxfbG9va3VwIChkb21haW4sIG4sIHJldHZhbCwgcmV0bGVuKTsKLSsKLSsJICAgICAgX19saWJjX3J3bG9ja191bmxvY2sgKF9ubF9zdGF0ZV9sb2NrKTsKLSsJICAgICAgcmV0dXJuIHJldHZhbDsKLSsJICAgIH0KLSsJfQotKyAgICB9Ci0rCi0rIHJldHVybl91bnRyYW5zbGF0ZWQ6Ci0rICAvKiBSZXR1cm4gdGhlIHVudHJhbnNsYXRlZCBNU0dJRC4gICovCi0rICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7Ci0rICBfX2xpYmNfcndsb2NrX3VubG9jayAoX25sX3N0YXRlX2xvY2spOwotKyNpZm5kZWYgX0xJQkMKLSsgIGlmICghRU5BQkxFX1NFQ1VSRSkKLSsgICAgewotKyAgICAgIGV4dGVybiB2b2lkIF9ubF9sb2dfdW50cmFuc2xhdGVkIChjb25zdCBjaGFyICpsb2dmaWxlbmFtZSwKLSsJCQkJCWNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0rCQkJCQljb25zdCBjaGFyICptc2dpZDEsIGNvbnN0IGNoYXIgKm1zZ2lkMiwKLSsJCQkJCWludCBwbHVyYWwpOwotKyAgICAgIGNvbnN0IGNoYXIgKmxvZ2ZpbGVuYW1lID0gZ2V0ZW52ICgiR0VUVEVYVF9MT0dfVU5UUkFOU0xBVEVEIik7Ci0rCi0rICAgICAgaWYgKGxvZ2ZpbGVuYW1lICE9IE5VTEwgJiYgbG9nZmlsZW5hbWVbMF0gIT0gJ1wwJykKLSsJX25sX2xvZ191bnRyYW5zbGF0ZWQgKGxvZ2ZpbGVuYW1lLCBkb21haW5uYW1lLCBtc2dpZDEsIG1zZ2lkMiwgcGx1cmFsKTsKLSsgICAgfQotKyNlbmRpZgotKyAgX19zZXRfZXJybm8gKHNhdmVkX2Vycm5vKTsKLSsgIHJldHVybiAocGx1cmFsID09IDAKLSsJICA/IChjaGFyICopIG1zZ2lkMQotKwkgIC8qIFVzZSB0aGUgR2VybWFuaWMgcGx1cmFsIHJ1bGUuICAqLwotKwkgIDogbiA9PSAxID8gKGNoYXIgKikgbXNnaWQxIDogKGNoYXIgKikgbXNnaWQyKTsKLSt9Ci0rCi0rCi0rY2hhciAqCi0raW50ZXJuYWxfZnVuY3Rpb24KLStfbmxfZmluZF9tc2cgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmRvbWFpbl9maWxlLAotKwkgICAgICBzdHJ1Y3QgYmluZGluZyAqZG9tYWluYmluZGluZywgY29uc3QgY2hhciAqbXNnaWQsCi0rCSAgICAgIHNpemVfdCAqbGVuZ3RocCkKLSt7Ci0rICBzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqZG9tYWluOwotKyAgbmxzX3VpbnQzMiBuc3RyaW5nczsKLSsgIHNpemVfdCBhY3Q7Ci0rICBjaGFyICpyZXN1bHQ7Ci0rICBzaXplX3QgcmVzdWx0bGVuOwotKwotKyAgaWYgKGRvbWFpbl9maWxlLT5kZWNpZGVkID09IDApCi0rICAgIF9ubF9sb2FkX2RvbWFpbiAoZG9tYWluX2ZpbGUsIGRvbWFpbmJpbmRpbmcpOwotKwotKyAgaWYgKGRvbWFpbl9maWxlLT5kYXRhID09IE5VTEwpCi0rICAgIHJldHVybiBOVUxMOwotKwotKyAgZG9tYWluID0gKHN0cnVjdCBsb2FkZWRfZG9tYWluICopIGRvbWFpbl9maWxlLT5kYXRhOwotKwotKyAgbnN0cmluZ3MgPSBkb21haW4tPm5zdHJpbmdzOwotKwotKyAgLyogTG9jYXRlIHRoZSBNU0dJRCBhbmQgaXRzIHRyYW5zbGF0aW9uLiAgKi8KLSsgIGlmIChkb21haW4tPmhhc2hfdGFiICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICAvKiBVc2UgdGhlIGhhc2hpbmcgdGFibGUuICAqLwotKyAgICAgIG5sc191aW50MzIgbGVuID0gc3RybGVuIChtc2dpZCk7Ci0rICAgICAgbmxzX3VpbnQzMiBoYXNoX3ZhbCA9IGhhc2hfc3RyaW5nIChtc2dpZCk7Ci0rICAgICAgbmxzX3VpbnQzMiBpZHggPSBoYXNoX3ZhbCAlIGRvbWFpbi0+aGFzaF9zaXplOwotKyAgICAgIG5sc191aW50MzIgaW5jciA9IDEgKyAoaGFzaF92YWwgJSAoZG9tYWluLT5oYXNoX3NpemUgLSAyKSk7Ci0rCi0rICAgICAgd2hpbGUgKDEpCi0rCXsKLSsJICBubHNfdWludDMyIG5zdHIgPQotKwkgICAgVyAoZG9tYWluLT5tdXN0X3N3YXBfaGFzaF90YWIsIGRvbWFpbi0+aGFzaF90YWJbaWR4XSk7Ci0rCi0rCSAgaWYgKG5zdHIgPT0gMCkKLSsJICAgIC8qIEhhc2ggdGFibGUgZW50cnkgaXMgZW1wdHkuICAqLwotKwkgICAgcmV0dXJuIE5VTEw7Ci0rCi0rCSAgbnN0ci0tOwotKwotKwkgIC8qIENvbXBhcmUgbXNnaWQgd2l0aCB0aGUgb3JpZ2luYWwgc3RyaW5nIGF0IGluZGV4IG5zdHIuCi0rCSAgICAgV2UgY29tcGFyZSB0aGUgbGVuZ3RocyB3aXRoID49LCBub3QgPT0sIGJlY2F1c2UgcGx1cmFsIGVudHJpZXMKLSsJICAgICBhcmUgcmVwcmVzZW50ZWQgYnkgc3RyaW5ncyB3aXRoIGFuIGVtYmVkZGVkIE5VTC4gICovCi0rCSAgaWYgKG5zdHIgPCBuc3RyaW5ncwotKwkgICAgICA/IFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkb21haW4tPm9yaWdfdGFiW25zdHJdLmxlbmd0aCkgPj0gbGVuCi0rCQkmJiAoc3RyY21wIChtc2dpZCwKLSsJCQkgICAgZG9tYWluLT5kYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCi0rCQkJCQkgICAgICBkb21haW4tPm9yaWdfdGFiW25zdHJdLm9mZnNldCkpCi0rCQkgICAgPT0gMCkKLSsJICAgICAgOiBkb21haW4tPm9yaWdfc3lzZGVwX3RhYltuc3RyIC0gbnN0cmluZ3NdLmxlbmd0aCA+IGxlbgotKwkJJiYgKHN0cmNtcCAobXNnaWQsCi0rCQkJICAgIGRvbWFpbi0+b3JpZ19zeXNkZXBfdGFiW25zdHIgLSBuc3RyaW5nc10ucG9pbnRlcikKLSsJCSAgICA9PSAwKSkKLSsJICAgIHsKLSsJICAgICAgYWN0ID0gbnN0cjsKLSsJICAgICAgZ290byBmb3VuZDsKLSsJICAgIH0KLSsKLSsJICBpZiAoaWR4ID49IGRvbWFpbi0+aGFzaF9zaXplIC0gaW5jcikKLSsJICAgIGlkeCAtPSBkb21haW4tPmhhc2hfc2l6ZSAtIGluY3I7Ci0rCSAgZWxzZQotKwkgICAgaWR4ICs9IGluY3I7Ci0rCX0KLSsgICAgICAvKiBOT1RSRUFDSEVEICovCi0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIC8qIFRyeSB0aGUgZGVmYXVsdCBtZXRob2Q6ICBiaW5hcnkgc2VhcmNoIGluIHRoZSBzb3J0ZWQgYXJyYXkgb2YKLSsJIG1lc3NhZ2VzLiAgKi8KLSsgICAgICBzaXplX3QgdG9wLCBib3R0b207Ci0rCi0rICAgICAgYm90dG9tID0gMDsKLSsgICAgICB0b3AgPSBuc3RyaW5nczsKLSsgICAgICB3aGlsZSAoYm90dG9tIDwgdG9wKQotKwl7Ci0rCSAgaW50IGNtcF92YWw7Ci0rCi0rCSAgYWN0ID0gKGJvdHRvbSArIHRvcCkgLyAyOwotKwkgIGNtcF92YWwgPSBzdHJjbXAgKG1zZ2lkLCAoZG9tYWluLT5kYXRhCi0rCQkJCSAgICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLAotKwkJCQkJIGRvbWFpbi0+b3JpZ190YWJbYWN0XS5vZmZzZXQpKSk7Ci0rCSAgaWYgKGNtcF92YWwgPCAwKQotKwkgICAgdG9wID0gYWN0OwotKwkgIGVsc2UgaWYgKGNtcF92YWwgPiAwKQotKwkgICAgYm90dG9tID0gYWN0ICsgMTsKLSsJICBlbHNlCi0rCSAgICBnb3RvIGZvdW5kOwotKwl9Ci0rICAgICAgLyogTm8gdHJhbnNsYXRpb24gd2FzIGZvdW5kLiAgKi8KLSsgICAgICByZXR1cm4gTlVMTDsKLSsgICAgfQotKwotKyBmb3VuZDoKLSsgIC8qIFRoZSB0cmFuc2xhdGlvbiB3YXMgZm91bmQgYXQgaW5kZXggQUNULiAgSWYgd2UgaGF2ZSB0byBjb252ZXJ0IHRoZQotKyAgICAgc3RyaW5nIHRvIHVzZSBhIGRpZmZlcmVudCBjaGFyYWN0ZXIgc2V0LCB0aGlzIGlzIHRoZSB0aW1lLiAgKi8KLSsgIGlmIChhY3QgPCBuc3RyaW5ncykKLSsgICAgewotKyAgICAgIHJlc3VsdCA9IChjaGFyICopCi0rCShkb21haW4tPmRhdGEgKyBXIChkb21haW4tPm11c3Rfc3dhcCwgZG9tYWluLT50cmFuc190YWJbYWN0XS5vZmZzZXQpKTsKLSsgICAgICByZXN1bHRsZW4gPSBXIChkb21haW4tPm11c3Rfc3dhcCwgZG9tYWluLT50cmFuc190YWJbYWN0XS5sZW5ndGgpICsgMTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgcmVzdWx0ID0gKGNoYXIgKikgZG9tYWluLT50cmFuc19zeXNkZXBfdGFiW2FjdCAtIG5zdHJpbmdzXS5wb2ludGVyOwotKyAgICAgIHJlc3VsdGxlbiA9IGRvbWFpbi0+dHJhbnNfc3lzZGVwX3RhYlthY3QgLSBuc3RyaW5nc10ubGVuZ3RoOwotKyAgICB9Ci0rCi0rI2lmIGRlZmluZWQgX0xJQkMgfHwgSEFWRV9JQ09OVgotKyAgaWYgKGRvbWFpbi0+Y29kZXNldF9jbnRyCi0rICAgICAgIT0gKGRvbWFpbmJpbmRpbmcgIT0gTlVMTCA/IGRvbWFpbmJpbmRpbmctPmNvZGVzZXRfY250ciA6IDApKQotKyAgICB7Ci0rICAgICAgLyogVGhlIGRvbWFpbidzIGNvZGVzZXQgaGFzIGNoYW5nZWQgdGhyb3VnaCBiaW5kX3RleHRkb21haW5fY29kZXNldCgpCi0rCSBzaW5jZSB0aGUgbWVzc2FnZSBjYXRhbG9nIHdhcyBpbml0aWFsaXplZCBvciBsYXN0IGFjY2Vzc2VkLiAgV2UKLSsJIGhhdmUgdG8gcmVpbml0aWFsaXplIHRoZSBjb252ZXJ0ZXIuICAqLwotKyAgICAgIF9ubF9mcmVlX2RvbWFpbl9jb252IChkb21haW4pOwotKyAgICAgIF9ubF9pbml0X2RvbWFpbl9jb252IChkb21haW5fZmlsZSwgZG9tYWluLCBkb21haW5iaW5kaW5nKTsKLSsgICAgfQotKwotKyAgaWYgKAotKyMgaWZkZWYgX0xJQkMKLSsgICAgICBkb21haW4tPmNvbnYgIT0gKF9fZ2NvbnZfdCkgLTEKLSsjIGVsc2UKLSsjICBpZiBIQVZFX0lDT05WCi0rICAgICAgZG9tYWluLT5jb252ICE9IChpY29udl90KSAtMQotKyMgIGVuZGlmCi0rIyBlbmRpZgotKyAgICAgICkKLSsgICAgewotKyAgICAgIC8qIFdlIGFyZSBzdXBwb3NlZCB0byBkbyBhIGNvbnZlcnNpb24uICBGaXJzdCBhbGxvY2F0ZSBhbgotKwkgYXBwcm9wcmlhdGUgdGFibGUgd2l0aCB0aGUgc2FtZSBzdHJ1Y3R1cmUgYXMgdGhlIHRhYmxlCi0rCSBvZiB0cmFuc2xhdGlvbnMgaW4gdGhlIGZpbGUsIHdoZXJlIHdlIGNhbiBwdXQgdGhlIHBvaW50ZXJzCi0rCSB0byB0aGUgY29udmVydGVkIHN0cmluZ3MgaW4uCi0rCSBUaGVyZSBpcyBhIHNsaWdodCBjb21wbGljYXRpb24gd2l0aCBwbHVyYWwgZW50cmllcy4gIFRoZXkKLSsJIGFyZSByZXByZXNlbnRlZCBieSBjb25zZWN1dGl2ZSBOVUwgdGVybWluYXRlZCBzdHJpbmdzLiAgV2UKLSsJIGhhbmRsZSB0aGlzIGNhc2UgYnkgY29udmVydGluZyBSRVNVTFRMRU4gYnl0ZXMsIGluY2x1ZGluZwotKwkgTlVMcy4gICovCi0rCi0rICAgICAgaWYgKGRvbWFpbi0+Y29udl90YWIgPT0gTlVMTAotKwkgICYmICgoZG9tYWluLT5jb252X3RhYiA9Ci0rCQkgKGNoYXIgKiopIGNhbGxvYyAobnN0cmluZ3MgKyBkb21haW4tPm5fc3lzZGVwX3N0cmluZ3MsCi0rCQkJCSAgIHNpemVvZiAoY2hhciAqKSkpCi0rCSAgICAgID09IE5VTEwpKQotKwkvKiBNYXJrIHRoYXQgd2UgZGlkbid0IHN1Y2NlZWQgYWxsb2NhdGluZyBhIHRhYmxlLiAgKi8KLSsJZG9tYWluLT5jb252X3RhYiA9IChjaGFyICoqKSAtMTsKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoZG9tYWluLT5jb252X3RhYiA9PSAoY2hhciAqKikgLTEsIDApKQotKwkvKiBOb3RoaW5nIHdlIGNhbiBkbywgbm8gbW9yZSBtZW1vcnkuICAqLwotKwlnb3RvIGNvbnZlcnRlZDsKLSsKLSsgICAgICBpZiAoZG9tYWluLT5jb252X3RhYlthY3RdID09IE5VTEwpCi0rCXsKLSsJICAvKiBXZSBoYXZlbid0IHVzZWQgdGhpcyBzdHJpbmcgc28gZmFyLCBzbyBpdCBpcyBub3QKLSsJICAgICB0cmFuc2xhdGVkIHlldC4gIERvIHRoaXMgbm93LiAgKi8KLSsJICAvKiBXZSB1c2UgYSBiaXQgbW9yZSBlZmZpY2llbnQgbWVtb3J5IGhhbmRsaW5nLgotKwkgICAgIFdlIGFsbG9jYXRlIGFsd2F5cyBsYXJnZXIgYmxvY2tzIHdoaWNoIGdldCB1c2VkIG92ZXIKLSsJICAgICB0aW1lLiAgVGhpcyBpcyBmYXN0ZXIgdGhhbiBtYW55IHNtYWxsIGFsbG9jYXRpb25zLiAgICovCi0rCSAgX19saWJjX2xvY2tfZGVmaW5lX2luaXRpYWxpemVkIChzdGF0aWMsIGxvY2spCi0rIyBkZWZpbmUgSU5JVElBTF9CTE9DS19TSVpFCTQwODAKLSsJICBzdGF0aWMgdW5zaWduZWQgY2hhciAqZnJlZW1lbTsKLSsJICBzdGF0aWMgc2l6ZV90IGZyZWVtZW1fc2l6ZTsKLSsKLSsJICBjb25zdCB1bnNpZ25lZCBjaGFyICppbmJ1ZjsKLSsJICB1bnNpZ25lZCBjaGFyICpvdXRidWY7Ci0rCSAgaW50IG1hbGxvY19jb3VudDsKLSsjIGlmbmRlZiBfTElCQwotKwkgIHRyYW5zbWVtX2Jsb2NrX3QgKnRyYW5zbWVtX2xpc3QgPSBOVUxMOwotKyMgZW5kaWYKLSsKLSsJICBfX2xpYmNfbG9ja19sb2NrIChsb2NrKTsKLSsKLSsJICBpbmJ1ZiA9IChjb25zdCB1bnNpZ25lZCBjaGFyICopIHJlc3VsdDsKLSsJICBvdXRidWYgPSBmcmVlbWVtICsgc2l6ZW9mIChzaXplX3QpOwotKwotKwkgIG1hbGxvY19jb3VudCA9IDA7Ci0rCSAgd2hpbGUgKDEpCi0rCSAgICB7Ci0rCSAgICAgIHRyYW5zbWVtX2Jsb2NrX3QgKm5ld21lbTsKLSsjIGlmZGVmIF9MSUJDCi0rCSAgICAgIHNpemVfdCBub25fcmV2ZXJzaWJsZTsKLSsJICAgICAgaW50IHJlczsKLSsKLSsJICAgICAgaWYgKGZyZWVtZW1fc2l6ZSA8IHNpemVvZiAoc2l6ZV90KSkKLSsJCWdvdG8gcmVzaXplX2ZyZWVtZW07Ci0rCi0rCSAgICAgIHJlcyA9IF9fZ2NvbnYgKGRvbWFpbi0+Y29udiwKLSsJCQkgICAgICZpbmJ1ZiwgaW5idWYgKyByZXN1bHRsZW4sCi0rCQkJICAgICAmb3V0YnVmLAotKwkJCSAgICAgb3V0YnVmICsgZnJlZW1lbV9zaXplIC0gc2l6ZW9mIChzaXplX3QpLAotKwkJCSAgICAgJm5vbl9yZXZlcnNpYmxlKTsKLSsKLSsJICAgICAgaWYgKHJlcyA9PSBfX0dDT05WX09LIHx8IHJlcyA9PSBfX0dDT05WX0VNUFRZX0lOUFVUKQotKwkJYnJlYWs7Ci0rCi0rCSAgICAgIGlmIChyZXMgIT0gX19HQ09OVl9GVUxMX09VVFBVVCkKLSsJCXsKLSsJCSAgX19saWJjX2xvY2tfdW5sb2NrIChsb2NrKTsKLSsJCSAgZ290byBjb252ZXJ0ZWQ7Ci0rCQl9Ci0rCi0rCSAgICAgIGluYnVmID0gcmVzdWx0OwotKyMgZWxzZQotKyMgIGlmIEhBVkVfSUNPTlYKLSsJICAgICAgY29uc3QgY2hhciAqaW5wdHIgPSAoY29uc3QgY2hhciAqKSBpbmJ1ZjsKLSsJICAgICAgc2l6ZV90IGlubGVmdCA9IHJlc3VsdGxlbjsKLSsJICAgICAgY2hhciAqb3V0cHRyID0gKGNoYXIgKikgb3V0YnVmOwotKwkgICAgICBzaXplX3Qgb3V0bGVmdDsKLSsKLSsJICAgICAgaWYgKGZyZWVtZW1fc2l6ZSA8IHNpemVvZiAoc2l6ZV90KSkKLSsJCWdvdG8gcmVzaXplX2ZyZWVtZW07Ci0rCi0rCSAgICAgIG91dGxlZnQgPSBmcmVlbWVtX3NpemUgLSBzaXplb2YgKHNpemVfdCk7Ci0rCSAgICAgIGlmIChpY29udiAoZG9tYWluLT5jb252LAotKwkJCSAoSUNPTlZfQ09OU1QgY2hhciAqKikgJmlucHRyLCAmaW5sZWZ0LAotKwkJCSAmb3V0cHRyLCAmb3V0bGVmdCkKLSsJCSAgIT0gKHNpemVfdCkgKC0xKSkKLSsJCXsKLSsJCSAgb3V0YnVmID0gKHVuc2lnbmVkIGNoYXIgKikgb3V0cHRyOwotKwkJICBicmVhazsKLSsJCX0KLSsJICAgICAgaWYgKGVycm5vICE9IEUyQklHKQotKwkJewotKwkJICBfX2xpYmNfbG9ja191bmxvY2sgKGxvY2spOwotKwkJICBnb3RvIGNvbnZlcnRlZDsKLSsJCX0KLSsjICBlbmRpZgotKyMgZW5kaWYKLSsKLSsJICAgIHJlc2l6ZV9mcmVlbWVtOgotKwkgICAgICAvKiBXZSBtdXN0IGFsbG9jYXRlIGEgbmV3IGJ1ZmZlciBvciByZXNpemUgdGhlIG9sZCBvbmUuICAqLwotKwkgICAgICBpZiAobWFsbG9jX2NvdW50ID4gMCkKLSsJCXsKLSsJCSAgKyttYWxsb2NfY291bnQ7Ci0rCQkgIGZyZWVtZW1fc2l6ZSA9IG1hbGxvY19jb3VudCAqIElOSVRJQUxfQkxPQ0tfU0laRTsKLSsJCSAgbmV3bWVtID0gKHRyYW5zbWVtX2Jsb2NrX3QgKikgcmVhbGxvYyAodHJhbnNtZW1fbGlzdCwKLSsJCQkJCQkJIGZyZWVtZW1fc2l6ZSk7Ci0rIyBpZmRlZiBfTElCQwotKwkJICBpZiAobmV3bWVtICE9IE5VTEwpCi0rCQkgICAgdHJhbnNtZW1fbGlzdCA9IHRyYW5zbWVtX2xpc3QtPm5leHQ7Ci0rCQkgIGVsc2UKLSsJCSAgICB7Ci0rCQkgICAgICBzdHJ1Y3QgdHJhbnNtZW1fbGlzdCAqb2xkID0gdHJhbnNtZW1fbGlzdDsKLSsKLSsJCSAgICAgIHRyYW5zbWVtX2xpc3QgPSB0cmFuc21lbV9saXN0LT5uZXh0OwotKwkJICAgICAgZnJlZSAob2xkKTsKLSsJCSAgICB9Ci0rIyBlbmRpZgotKwkJfQotKwkgICAgICBlbHNlCi0rCQl7Ci0rCQkgIG1hbGxvY19jb3VudCA9IDE7Ci0rCQkgIGZyZWVtZW1fc2l6ZSA9IElOSVRJQUxfQkxPQ0tfU0laRTsKLSsJCSAgbmV3bWVtID0gKHRyYW5zbWVtX2Jsb2NrX3QgKikgbWFsbG9jIChmcmVlbWVtX3NpemUpOwotKwkJfQotKwkgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAobmV3bWVtID09IE5VTEwsIDApKQotKwkJewotKwkJICBmcmVlbWVtID0gTlVMTDsKLSsJCSAgZnJlZW1lbV9zaXplID0gMDsKLSsJCSAgX19saWJjX2xvY2tfdW5sb2NrIChsb2NrKTsKLSsJCSAgZ290byBjb252ZXJ0ZWQ7Ci0rCQl9Ci0rCi0rIyBpZmRlZiBfTElCQwotKwkgICAgICAvKiBBZGQgdGhlIGJsb2NrIHRvIHRoZSBsaXN0IG9mIGJsb2NrcyB3ZSBoYXZlIHRvIGZyZWUKLSsgICAgICAgICAgICAgICAgIGF0IHNvbWUgcG9pbnQuICAqLwotKwkgICAgICBuZXdtZW0tPm5leHQgPSB0cmFuc21lbV9saXN0OwotKwkgICAgICB0cmFuc21lbV9saXN0ID0gbmV3bWVtOwotKwotKwkgICAgICBmcmVlbWVtID0gbmV3bWVtLT5kYXRhOwotKwkgICAgICBmcmVlbWVtX3NpemUgLT0gb2Zmc2V0b2YgKHN0cnVjdCB0cmFuc21lbV9saXN0LCBkYXRhKTsKLSsjIGVsc2UKLSsJICAgICAgdHJhbnNtZW1fbGlzdCA9IG5ld21lbTsKLSsJICAgICAgZnJlZW1lbSA9IG5ld21lbTsKLSsjIGVuZGlmCi0rCi0rCSAgICAgIG91dGJ1ZiA9IGZyZWVtZW0gKyBzaXplb2YgKHNpemVfdCk7Ci0rCSAgICB9Ci0rCi0rCSAgLyogV2UgaGF2ZSBub3cgaW4gb3VyIGJ1ZmZlciBhIGNvbnZlcnRlZCBzdHJpbmcuICBQdXQgdGhpcwotKwkgICAgIGludG8gdGhlIHRhYmxlIG9mIGNvbnZlcnNpb25zLiAgKi8KLSsJICAqKHNpemVfdCAqKSBmcmVlbWVtID0gb3V0YnVmIC0gZnJlZW1lbSAtIHNpemVvZiAoc2l6ZV90KTsKLSsJICBkb21haW4tPmNvbnZfdGFiW2FjdF0gPSAoY2hhciAqKSBmcmVlbWVtOwotKwkgIC8qIFNocmluayBmcmVlbWVtLCBidXQga2VlcCBpdCBhbGlnbmVkLiAgKi8KLSsJICBmcmVlbWVtX3NpemUgLT0gb3V0YnVmIC0gZnJlZW1lbTsKLSsJICBmcmVlbWVtID0gb3V0YnVmOwotKwkgIGZyZWVtZW0gKz0gZnJlZW1lbV9zaXplICYgKGFsaWdub2YgKHNpemVfdCkgLSAxKTsKLSsJICBmcmVlbWVtX3NpemUgPSBmcmVlbWVtX3NpemUgJiB+IChhbGlnbm9mIChzaXplX3QpIC0gMSk7Ci0rCi0rCSAgX19saWJjX2xvY2tfdW5sb2NrIChsb2NrKTsKLSsJfQotKwotKyAgICAgIC8qIE5vdyBkb21haW4tPmNvbnZfdGFiW2FjdF0gY29udGFpbnMgdGhlIHRyYW5zbGF0aW9uIG9mIGFsbAotKwkgdGhlIHBsdXJhbCB2YXJpYW50cy4gICovCi0rICAgICAgcmVzdWx0ID0gZG9tYWluLT5jb252X3RhYlthY3RdICsgc2l6ZW9mIChzaXplX3QpOwotKyAgICAgIHJlc3VsdGxlbiA9ICooc2l6ZV90ICopIGRvbWFpbi0+Y29udl90YWJbYWN0XTsKLSsgICAgfQotKwotKyBjb252ZXJ0ZWQ6Ci0rICAvKiBUaGUgcmVzdWx0IHN0cmluZyBpcyBjb252ZXJ0ZWQuICAqLwotKwotKyNlbmRpZiAvKiBfTElCQyB8fCBIQVZFX0lDT05WICovCi0rCi0rICAqbGVuZ3RocCA9IHJlc3VsdGxlbjsKLSsgIHJldHVybiByZXN1bHQ7Ci0rfQotKwotKwotKy8qIExvb2sgdXAgYSBwbHVyYWwgdmFyaWFudC4gICovCi0rc3RhdGljIGNoYXIgKgotK2ludGVybmFsX2Z1bmN0aW9uCi0rcGx1cmFsX2xvb2t1cCAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluLCB1bnNpZ25lZCBsb25nIGludCBuLAotKwkgICAgICAgY29uc3QgY2hhciAqdHJhbnNsYXRpb24sIHNpemVfdCB0cmFuc2xhdGlvbl9sZW4pCi0rewotKyAgc3RydWN0IGxvYWRlZF9kb21haW4gKmRvbWFpbmRhdGEgPSAoc3RydWN0IGxvYWRlZF9kb21haW4gKikgZG9tYWluLT5kYXRhOwotKyAgdW5zaWduZWQgbG9uZyBpbnQgaW5kZXg7Ci0rICBjb25zdCBjaGFyICpwOwotKwotKyAgaW5kZXggPSBwbHVyYWxfZXZhbCAoZG9tYWluZGF0YS0+cGx1cmFsLCBuKTsKLSsgIGlmIChpbmRleCA+PSBkb21haW5kYXRhLT5ucGx1cmFscykKLSsgICAgLyogVGhpcyBzaG91bGQgbmV2ZXIgaGFwcGVuLiAgSXQgbWVhbnMgdGhlIHBsdXJhbCBleHByZXNzaW9uIGFuZCB0aGUKLSsgICAgICAgZ2l2ZW4gbWF4aW11bSB2YWx1ZSBkbyBub3QgbWF0Y2guICAqLwotKyAgICBpbmRleCA9IDA7Ci0rCi0rICAvKiBTa2lwIElOREVYIHN0cmluZ3MgYXQgVFJBTlNMQVRJT04uICAqLwotKyAgcCA9IHRyYW5zbGF0aW9uOwotKyAgd2hpbGUgKGluZGV4LS0gPiAwKQotKyAgICB7Ci0rI2lmZGVmIF9MSUJDCi0rICAgICAgcCA9IF9fcmF3bWVtY2hyIChwLCAnXDAnKTsKLSsjZWxzZQotKyAgICAgIHAgPSBzdHJjaHIgKHAsICdcMCcpOwotKyNlbmRpZgotKyAgICAgIC8qIEFuZCBza2lwIG92ZXIgdGhlIE5VTCBieXRlLiAgKi8KLSsgICAgICBwKys7Ci0rCi0rICAgICAgaWYgKHAgPj0gdHJhbnNsYXRpb24gKyB0cmFuc2xhdGlvbl9sZW4pCi0rCS8qIFRoaXMgc2hvdWxkIG5ldmVyIGhhcHBlbi4gIEl0IG1lYW5zIHRoZSBwbHVyYWwgZXhwcmVzc2lvbgotKwkgICBldmFsdWF0ZWQgdG8gYSB2YWx1ZSBsYXJnZXIgdGhhbiB0aGUgbnVtYmVyIG9mIHZhcmlhbnRzCi0rCSAgIGF2YWlsYWJsZSBmb3IgTVNHSUQxLiAgKi8KLSsJcmV0dXJuIChjaGFyICopIHRyYW5zbGF0aW9uOwotKyAgICB9Ci0rICByZXR1cm4gKGNoYXIgKikgcDsKLSt9Ci0rCi0rI2lmbmRlZiBfTElCQwotKy8qIFJldHVybiBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgbG9jYWxlIENBVEVHT1JZLiAgKi8KLStzdGF0aWMgY29uc3QgY2hhciAqCi0raW50ZXJuYWxfZnVuY3Rpb24KLStjYXRlZ29yeV90b19uYW1lIChpbnQgY2F0ZWdvcnkpCi0rewotKyAgY29uc3QgY2hhciAqcmV0dmFsOwotKwotKyAgc3dpdGNoIChjYXRlZ29yeSkKLSsgIHsKLSsjaWZkZWYgTENfQ09MTEFURQotKyAgY2FzZSBMQ19DT0xMQVRFOgotKyAgICByZXR2YWwgPSAiTENfQ09MTEFURSI7Ci0rICAgIGJyZWFrOwotKyNlbmRpZgotKyNpZmRlZiBMQ19DVFlQRQotKyAgY2FzZSBMQ19DVFlQRToKLSsgICAgcmV0dmFsID0gIkxDX0NUWVBFIjsKLSsgICAgYnJlYWs7Ci0rI2VuZGlmCi0rI2lmZGVmIExDX01PTkVUQVJZCi0rICBjYXNlIExDX01PTkVUQVJZOgotKyAgICByZXR2YWwgPSAiTENfTU9ORVRBUlkiOwotKyAgICBicmVhazsKLSsjZW5kaWYKLSsjaWZkZWYgTENfTlVNRVJJQwotKyAgY2FzZSBMQ19OVU1FUklDOgotKyAgICByZXR2YWwgPSAiTENfTlVNRVJJQyI7Ci0rICAgIGJyZWFrOwotKyNlbmRpZgotKyNpZmRlZiBMQ19USU1FCi0rICBjYXNlIExDX1RJTUU6Ci0rICAgIHJldHZhbCA9ICJMQ19USU1FIjsKLSsgICAgYnJlYWs7Ci0rI2VuZGlmCi0rI2lmZGVmIExDX01FU1NBR0VTCi0rICBjYXNlIExDX01FU1NBR0VTOgotKyAgICByZXR2YWwgPSAiTENfTUVTU0FHRVMiOwotKyAgICBicmVhazsKLSsjZW5kaWYKLSsjaWZkZWYgTENfUkVTUE9OU0UKLSsgIGNhc2UgTENfUkVTUE9OU0U6Ci0rICAgIHJldHZhbCA9ICJMQ19SRVNQT05TRSI7Ci0rICAgIGJyZWFrOwotKyNlbmRpZgotKyNpZmRlZiBMQ19BTEwKLSsgIGNhc2UgTENfQUxMOgotKyAgICAvKiBUaGlzIG1pZ2h0IG5vdCBtYWtlIHNlbnNlIGJ1dCBpcyBwZXJoYXBzIGJldHRlciB0aGFuIGFueSBvdGhlcgotKyAgICAgICB2YWx1ZS4gICovCi0rICAgIHJldHZhbCA9ICJMQ19BTEwiOwotKyAgICBicmVhazsKLSsjZW5kaWYKLSsgIGRlZmF1bHQ6Ci0rICAgIC8qIElmIHlvdSBoYXZlIGEgYmV0dGVyIGlkZWEgZm9yIGEgZGVmYXVsdCB2YWx1ZSBsZXQgbWUga25vdy4gICovCi0rICAgIHJldHZhbCA9ICJMQ19YWFgiOwotKyAgfQotKwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci0rI2VuZGlmCi0rCi0rLyogR3Vlc3MgdmFsdWUgb2YgY3VycmVudCBsb2NhbGUgZnJvbSB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzLiAgKi8KLStzdGF0aWMgY29uc3QgY2hhciAqCi0raW50ZXJuYWxfZnVuY3Rpb24KLStndWVzc19jYXRlZ29yeV92YWx1ZSAoaW50IGNhdGVnb3J5LCBjb25zdCBjaGFyICpjYXRlZ29yeW5hbWUpCi0rewotKyAgY29uc3QgY2hhciAqbGFuZ3VhZ2U7Ci0rICBjb25zdCBjaGFyICpyZXR2YWw7Ci0rCi0rICAvKiBUaGUgaGlnaGVzdCBwcmlvcml0eSB2YWx1ZSBpcyB0aGUgYExBTkdVQUdFJyBlbnZpcm9ubWVudAotKyAgICAgdmFyaWFibGUuICBCdXQgd2UgZG9uJ3QgdXNlIHRoZSB2YWx1ZSBpZiB0aGUgY3VycmVudGx5IHNlbGVjdGVkCi0rICAgICBsb2NhbGUgaXMgdGhlIEMgbG9jYWxlLiAgVGhpcyBpcyBhIEdOVSBleHRlbnNpb24uICAqLwotKyAgbGFuZ3VhZ2UgPSBnZXRlbnYgKCJMQU5HVUFHRSIpOwotKyAgaWYgKGxhbmd1YWdlICE9IE5VTEwgJiYgbGFuZ3VhZ2VbMF0gPT0gJ1wwJykKLSsgICAgbGFuZ3VhZ2UgPSBOVUxMOwotKwotKyAgLyogV2UgaGF2ZSB0byBwcm9jZWVkIHdpdGggdGhlIFBPU0lYIG1ldGhvZHMgb2YgbG9va2luZyB0byBgTENfQUxMJywKLSsgICAgIGBMQ194eHgnLCBhbmQgYExBTkcnLiAgT24gc29tZSBzeXN0ZW1zIHRoaXMgY2FuIGJlIGRvbmUgYnkgdGhlCi0rICAgICBgc2V0bG9jYWxlJyBmdW5jdGlvbiBpdHNlbGYuICAqLwotKyNpZmRlZiBfTElCQwotKyAgcmV0dmFsID0gX19jdXJyZW50X2xvY2FsZV9uYW1lIChjYXRlZ29yeSk7Ci0rI2Vsc2UKLSsgIHJldHZhbCA9IF9ubF9sb2NhbGVfbmFtZSAoY2F0ZWdvcnksIGNhdGVnb3J5bmFtZSk7Ci0rI2VuZGlmCi0rCi0rICAvKiBJZ25vcmUgTEFOR1VBR0UgaWYgdGhlIGxvY2FsZSBpcyBzZXQgdG8gIkMiIGJlY2F1c2UKLSsgICAgIDEuICJDIiBsb2NhbGUgdXN1YWxseSB1c2VzIHRoZSBBU0NJSSBlbmNvZGluZywgYW5kIG1vc3QgaW50ZXJuYXRpb25hbAotKwltZXNzYWdlcyB1c2Ugbm9uLUFTQ0lJIGNoYXJhY3RlcnMuIFRoZXNlIGNoYXJhY3RlcnMgZ2V0IGRpc3BsYXllZAotKwlhcyBxdWVzdGlvbiBtYXJrcyAoaWYgdXNpbmcgZ2xpYmMncyBpY29udigpKSBvciBhcyBpbnZhbGlkIDgtYml0Ci0rCWNoYXJhY3RlcnMgKGJlY2F1c2Ugb3RoZXIgaWNvbnYoKXMgcmVmdXNlIHRvIGNvbnZlcnQgbW9zdCBub24tQVNDSUkKLSsJY2hhcmFjdGVycyB0byBBU0NJSSkuIEluIGFueSBjYXNlLCB0aGUgb3V0cHV0IGlzIHVnbHkuCi0rICAgICAyLiBUaGUgcHJlY2lzZSBvdXRwdXQgb2Ygc29tZSBwcm9ncmFtcyBpbiB0aGUgIkMiIGxvY2FsZSBpcyBzcGVjaWZpZWQKLSsJYnkgUE9TSVggYW5kIHNob3VsZCBub3QgZGVwZW5kIG9uIGVudmlyb25tZW50IHZhcmlhYmxlcyBsaWtlCi0rCSJMQU5HVUFHRSIuICBXZSBhbGxvdyBzdWNoIHByb2dyYW1zIHRvIHVzZSBnZXR0ZXh0KCkuICAqLwotKyAgcmV0dXJuIGxhbmd1YWdlICE9IE5VTEwgJiYgc3RyY21wIChyZXR2YWwsICJDIikgIT0gMCA/IGxhbmd1YWdlIDogcmV0dmFsOwotK30KLSsKLSsvKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KLSsKLSsvKiBXZSBkb24ndCB3YW50IGxpYmludGwuYSB0byBkZXBlbmQgb24gYW55IG90aGVyIGxpYnJhcnkuICBTbyB3ZQotKyAgIGF2b2lkIHRoZSBub24tc3RhbmRhcmQgZnVuY3Rpb24gc3RwY3B5LiAgSW4gR05VIEMgTGlicmFyeSB0aGlzCi0rICAgZnVuY3Rpb24gaXMgYXZhaWxhYmxlLCB0aG91Z2guICBBbHNvIGFsbG93IHRoZSBzeW1ib2wgSEFWRV9TVFBDUFkKLSsgICB0byBiZSBkZWZpbmVkLiAgKi8KLSsjaWYgIV9MSUJDICYmICFIQVZFX1NUUENQWQotK3N0YXRpYyBjaGFyICoKLStzdHBjcHkgKGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYykKLSt7Ci0rICB3aGlsZSAoKCpkZXN0KysgPSAqc3JjKyspICE9ICdcMCcpCi0rICAgIC8qIERvIG5vdGhpbmcuICovIDsKLSsgIHJldHVybiBkZXN0IC0gMTsKLSt9Ci0rI2VuZGlmCi0rCi0rI2lmICFfTElCQyAmJiAhSEFWRV9NRU1QQ1BZCi0rc3RhdGljIHZvaWQgKgotK21lbXBjcHkgKHZvaWQgKmRlc3QsIGNvbnN0IHZvaWQgKnNyYywgc2l6ZV90IG4pCi0rewotKyAgcmV0dXJuICh2b2lkICopICgoY2hhciAqKSBtZW1jcHkgKGRlc3QsIHNyYywgbikgKyBuKTsKLSt9Ci0rI2VuZGlmCi0rCi0rCi0rI2lmZGVmIF9MSUJDCi0rLyogSWYgd2Ugd2FudCB0byBmcmVlIGFsbCByZXNvdXJjZXMgd2UgaGF2ZSB0byBkbyBzb21lIHdvcmsgYXQKLSsgICBwcm9ncmFtJ3MgZW5kLiAgKi8KLStsaWJjX2ZyZWVyZXNfZm4gKGZyZWVfbWVtKQotK3sKLSsgIHZvaWQgKm9sZDsKLSsKLSsgIHdoaWxlIChfbmxfZG9tYWluX2JpbmRpbmdzICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBzdHJ1Y3QgYmluZGluZyAqb2xkcCA9IF9ubF9kb21haW5fYmluZGluZ3M7Ci0rICAgICAgX25sX2RvbWFpbl9iaW5kaW5ncyA9IF9ubF9kb21haW5fYmluZGluZ3MtPm5leHQ7Ci0rICAgICAgaWYgKG9sZHAtPmRpcm5hbWUgIT0gSU5UVVNFKF9ubF9kZWZhdWx0X2Rpcm5hbWUpKQotKwkvKiBZZXMsIHRoaXMgaXMgYSBwb2ludGVyIGNvbXBhcmlzb24uICAqLwotKwlmcmVlIChvbGRwLT5kaXJuYW1lKTsKLSsgICAgICBmcmVlIChvbGRwLT5jb2Rlc2V0KTsKLSsgICAgICBmcmVlIChvbGRwKTsKLSsgICAgfQotKwotKyAgaWYgKF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluICE9IF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluKQotKyAgICAvKiBZZXMsIGFnYWluIGEgcG9pbnRlciBjb21wYXJpc29uLiAgKi8KLSsgICAgZnJlZSAoKGNoYXIgKikgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4pOwotKwotKyAgLyogUmVtb3ZlIHRoZSBzZWFyY2ggdHJlZSB3aXRoIHRoZSBrbm93biB0cmFuc2xhdGlvbnMuICAqLwotKyAgX190ZGVzdHJveSAocm9vdCwgZnJlZSk7Ci0rICByb290ID0gTlVMTDsKLSsKLSsgIHdoaWxlICh0cmFuc21lbV9saXN0ICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBvbGQgPSB0cmFuc21lbV9saXN0OwotKyAgICAgIHRyYW5zbWVtX2xpc3QgPSB0cmFuc21lbV9saXN0LT5uZXh0OwotKyAgICAgIGZyZWUgKG9sZCk7Ci0rICAgIH0KLSt9Ci0rI2VuZGlmCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvZGNuZ2V0dGV4dC5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2RjbmdldHRleHQuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjM3NTc0NTA0OCAtMDQwMAotQEAgLTAsMCArMSw1NyBAQAotKy8qIEltcGxlbWVudGF0aW9uIG9mIHRoZSBkY25nZXR0ZXh0KDMpIGZ1bmN0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk5LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSsjaWZkZWYgX0xJQkMKLSsjIGluY2x1ZGUgPGxpYmludGwuaD4KLSsjZWxzZQotKyMgaW5jbHVkZSAibGliZ251aW50bC5oIgotKyNlbmRpZgotKwotKy8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLSsKLSsvKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCi0rICAgd2l0aCBleGlzdGluZyBuYW1lcyBhbmQgdGhleSBzaG91bGQgZm9sbG93IEFOU0kgQy4gIEJ1dCB0aGlzIHNvdXJjZQotKyAgIGNvZGUgaXMgYWxzbyB1c2VkIGluIEdOVSBDIExpYnJhcnkgd2hlcmUgdGhlIG5hbWVzIGhhdmUgYSBfXwotKyAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCi0rI2lmZGVmIF9MSUJDCi0rIyBkZWZpbmUgRENOR0VUVEVYVCBfX2RjbmdldHRleHQKLSsjIGRlZmluZSBEQ0lHRVRURVhUIF9fZGNpZ2V0dGV4dAotKyNlbHNlCi0rIyBkZWZpbmUgRENOR0VUVEVYVCBsaWJpbnRsX2RjbmdldHRleHQKLSsjIGRlZmluZSBEQ0lHRVRURVhUIGxpYmludGxfZGNpZ2V0dGV4dAotKyNlbmRpZgotKwotKy8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudCBDQVRFR09SWQotKyAgIGxvY2FsZS4gICovCi0rY2hhciAqCi0rRENOR0VUVEVYVCAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSsJICAgIGNvbnN0IGNoYXIgKm1zZ2lkMSwgY29uc3QgY2hhciAqbXNnaWQyLCB1bnNpZ25lZCBsb25nIGludCBuLAotKwkgICAgaW50IGNhdGVnb3J5KQotK3sKLSsgIHJldHVybiBEQ0lHRVRURVhUIChkb21haW5uYW1lLCBtc2dpZDEsIG1zZ2lkMiwgMSwgbiwgY2F0ZWdvcnkpOwotK30KLSsKLSsjaWZkZWYgX0xJQkMKLSsvKiBBbGlhcyBmb3IgZnVuY3Rpb24gbmFtZSBpbiBHTlUgQyBMaWJyYXJ5LiAgKi8KLSt3ZWFrX2FsaWFzIChfX2RjbmdldHRleHQsIGRjbmdldHRleHQpOwotKyNlbmRpZgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2RnZXR0ZXh0LmMJMTk5OC0wNC0yNiAwOToyMDo1Mi4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvZGdldHRleHQuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjM4MDc0NDI4OCAtMDQwMAotQEAgLTEsMzIgKzEsMzMgQEAKLS0vKiBkZ2V0dGV4dC5jIC0tIGltcGxlbWVudGF0aW9uIG9mIHRoZSBkZ2V0dGV4dCgzKSBmdW5jdGlvbgotLSAgIENvcHlyaWdodCAoQykgMTk5NSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIGRnZXR0ZXh0KDMpIGZ1bmN0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk3LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS1pdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLXRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLS1hbnkgbGF0ZXIgdmVyc2lvbi4KLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0tVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS1NRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS1hbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotLUZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkIEhBVkVfTE9DQUxFX0ggfHwgZGVmaW5lZCBfTElCQwotLSMgaW5jbHVkZSA8bG9jYWxlLmg+Ci0tI2VuZGlmCi0rI2luY2x1ZGUgImdldHRleHRQLmgiCi0rCi0rI2luY2x1ZGUgPGxvY2FsZS5oPgotIAotICNpZmRlZiBfTElCQwotICMgaW5jbHVkZSA8bGliaW50bC5oPgotICNlbHNlCi0tIyBpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCi0rIyBpbmNsdWRlICJsaWJnbnVpbnRsLmgiCi0gI2VuZGlmCi0gCi0gLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotQEAgLTM3LDE4ICszOCwxNiBAQAotICAgIHByZWZpeC4gIFNvIHdlIGhhdmUgdG8gbWFrZSBhIGRpZmZlcmVuY2UgaGVyZS4gICovCi0gI2lmZGVmIF9MSUJDCi0gIyBkZWZpbmUgREdFVFRFWFQgX19kZ2V0dGV4dAotLSMgZGVmaW5lIERDR0VUVEVYVCBfX2RjZ2V0dGV4dAotKyMgZGVmaW5lIERDR0VUVEVYVCBJTlRVU0UoX19kY2dldHRleHQpCi0gI2Vsc2UKLS0jIGRlZmluZSBER0VUVEVYVCBkZ2V0dGV4dF9fCi0tIyBkZWZpbmUgRENHRVRURVhUIGRjZ2V0dGV4dF9fCi0rIyBkZWZpbmUgREdFVFRFWFQgbGliaW50bF9kZ2V0dGV4dAotKyMgZGVmaW5lIERDR0VUVEVYVCBsaWJpbnRsX2RjZ2V0dGV4dAotICNlbmRpZgotIAotIC8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIG9mIHRoZSBjdXJyZW50Ci0gICAgTENfTUVTU0FHRVMgbG9jYWxlLiAgKi8KLSBjaGFyICoKLS1ER0VUVEVYVCAoZG9tYWlubmFtZSwgbXNnaWQpCi0tICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOwotLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7Ci0rREdFVFRFWFQgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKm1zZ2lkKQotIHsKLSAgIHJldHVybiBEQ0dFVFRFWFQgKGRvbWFpbm5hbWUsIG1zZ2lkLCBMQ19NRVNTQUdFUyk7Ci0gfQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2RuZ2V0dGV4dC5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2RuZ2V0dGV4dC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzg1NzQzNTI4IC0wNDAwCi1AQCAtMCwwICsxLDU5IEBACi0rLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIGRuZ2V0dGV4dCgzKSBmdW5jdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5NywgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgImdldHRleHRQLmgiCi0rCi0rI2luY2x1ZGUgPGxvY2FsZS5oPgotKwotKyNpZmRlZiBfTElCQwotKyMgaW5jbHVkZSA8bGliaW50bC5oPgotKyNlbHNlCi0rIyBpbmNsdWRlICJsaWJnbnVpbnRsLmgiCi0rI2VuZGlmCi0rCi0rLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotKwotKy8qIE5hbWVzIGZvciB0aGUgbGliaW50bCBmdW5jdGlvbnMgYXJlIGEgcHJvYmxlbS4gIFRoZXkgbXVzdCBub3QgY2xhc2gKLSsgICB3aXRoIGV4aXN0aW5nIG5hbWVzIGFuZCB0aGV5IHNob3VsZCBmb2xsb3cgQU5TSSBDLiAgQnV0IHRoaXMgc291cmNlCi0rICAgY29kZSBpcyBhbHNvIHVzZWQgaW4gR05VIEMgTGlicmFyeSB3aGVyZSB0aGUgbmFtZXMgaGF2ZSBhIF9fCi0rICAgcHJlZml4LiAgU28gd2UgaGF2ZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KLSsjaWZkZWYgX0xJQkMKLSsjIGRlZmluZSBETkdFVFRFWFQgX19kbmdldHRleHQKLSsjIGRlZmluZSBEQ05HRVRURVhUIF9fZGNuZ2V0dGV4dAotKyNlbHNlCi0rIyBkZWZpbmUgRE5HRVRURVhUIGxpYmludGxfZG5nZXR0ZXh0Ci0rIyBkZWZpbmUgRENOR0VUVEVYVCBsaWJpbnRsX2RjbmdldHRleHQKLSsjZW5kaWYKLSsKLSsvKiBMb29rIHVwIE1TR0lEIGluIHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyBvZiB0aGUgY3VycmVudAotKyAgIExDX01FU1NBR0VTIGxvY2FsZSBhbmQgc2tpcCBtZXNzYWdlIGFjY29yZGluZyB0byB0aGUgcGx1cmFsIGZvcm0uICAqLwotK2NoYXIgKgotK0ROR0VUVEVYVCAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwKLSsJICAgY29uc3QgY2hhciAqbXNnaWQxLCBjb25zdCBjaGFyICptc2dpZDIsIHVuc2lnbmVkIGxvbmcgaW50IG4pCi0rewotKyAgcmV0dXJuIERDTkdFVFRFWFQgKGRvbWFpbm5hbWUsIG1zZ2lkMSwgbXNnaWQyLCBuLCBMQ19NRVNTQUdFUyk7Ci0rfQotKwotKyNpZmRlZiBfTElCQwotKy8qIEFsaWFzIGZvciBmdW5jdGlvbiBuYW1lIGluIEdOVSBDIExpYnJhcnkuICAqLwotK3dlYWtfYWxpYXMgKF9fZG5nZXR0ZXh0LCBkbmdldHRleHQpOwotKyNlbmRpZgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2V2YWwtcGx1cmFsLmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvZXZhbC1wbHVyYWwuaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjM5MDc0Mjc2OCAtMDQwMAotQEAgLTAsMCArMSwxMDggQEAKLSsvKiBQbHVyYWwgZXhwcmVzc2lvbiBldmFsdWF0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZuZGVmIFNUQVRJQwotKyNkZWZpbmUgU1RBVElDIHN0YXRpYwotKyNlbmRpZgotKwotKy8qIEV2YWx1YXRlIHRoZSBwbHVyYWwgZXhwcmVzc2lvbiBhbmQgcmV0dXJuIGFuIGluZGV4IHZhbHVlLiAgKi8KLStTVEFUSUMKLSt1bnNpZ25lZCBsb25nIGludAotK2ludGVybmFsX2Z1bmN0aW9uCi0rcGx1cmFsX2V2YWwgKHN0cnVjdCBleHByZXNzaW9uICpwZXhwLCB1bnNpZ25lZCBsb25nIGludCBuKQotK3sKLSsgIHN3aXRjaCAocGV4cC0+bmFyZ3MpCi0rICAgIHsKLSsgICAgY2FzZSAwOgotKyAgICAgIHN3aXRjaCAocGV4cC0+b3BlcmF0aW9uKQotKwl7Ci0rCWNhc2UgdmFyOgotKwkgIHJldHVybiBuOwotKwljYXNlIG51bToKLSsJICByZXR1cm4gcGV4cC0+dmFsLm51bTsKLSsJZGVmYXVsdDoKLSsJICBicmVhazsKLSsJfQotKyAgICAgIC8qIE5PVFJFQUNIRUQgKi8KLSsgICAgICBicmVhazsKLSsgICAgY2FzZSAxOgotKyAgICAgIHsKLSsJLyogcGV4cC0+b3BlcmF0aW9uIG11c3QgYmUgbG5vdC4gICovCi0rCXVuc2lnbmVkIGxvbmcgaW50IGFyZyA9IHBsdXJhbF9ldmFsIChwZXhwLT52YWwuYXJnc1swXSwgbik7Ci0rCXJldHVybiAhIGFyZzsKLSsgICAgICB9Ci0rICAgIGNhc2UgMjoKLSsgICAgICB7Ci0rCXVuc2lnbmVkIGxvbmcgaW50IGxlZnRhcmcgPSBwbHVyYWxfZXZhbCAocGV4cC0+dmFsLmFyZ3NbMF0sIG4pOwotKwlpZiAocGV4cC0+b3BlcmF0aW9uID09IGxvcikKLSsJICByZXR1cm4gbGVmdGFyZyB8fCBwbHVyYWxfZXZhbCAocGV4cC0+dmFsLmFyZ3NbMV0sIG4pOwotKwllbHNlIGlmIChwZXhwLT5vcGVyYXRpb24gPT0gbGFuZCkKLSsJICByZXR1cm4gbGVmdGFyZyAmJiBwbHVyYWxfZXZhbCAocGV4cC0+dmFsLmFyZ3NbMV0sIG4pOwotKwllbHNlCi0rCSAgewotKwkgICAgdW5zaWduZWQgbG9uZyBpbnQgcmlnaHRhcmcgPSBwbHVyYWxfZXZhbCAocGV4cC0+dmFsLmFyZ3NbMV0sIG4pOwotKwotKwkgICAgc3dpdGNoIChwZXhwLT5vcGVyYXRpb24pCi0rCSAgICAgIHsKLSsJICAgICAgY2FzZSBtdWx0OgotKwkJcmV0dXJuIGxlZnRhcmcgKiByaWdodGFyZzsKLSsJICAgICAgY2FzZSBkaXZpZGU6Ci0rI2lmICFJTlRESVYwX1JBSVNFU19TSUdGUEUKLSsJCWlmIChyaWdodGFyZyA9PSAwKQotKwkJICByYWlzZSAoU0lHRlBFKTsKLSsjZW5kaWYKLSsJCXJldHVybiBsZWZ0YXJnIC8gcmlnaHRhcmc7Ci0rCSAgICAgIGNhc2UgbW9kdWxlOgotKyNpZiAhSU5URElWMF9SQUlTRVNfU0lHRlBFCi0rCQlpZiAocmlnaHRhcmcgPT0gMCkKLSsJCSAgcmFpc2UgKFNJR0ZQRSk7Ci0rI2VuZGlmCi0rCQlyZXR1cm4gbGVmdGFyZyAlIHJpZ2h0YXJnOwotKwkgICAgICBjYXNlIHBsdXM6Ci0rCQlyZXR1cm4gbGVmdGFyZyArIHJpZ2h0YXJnOwotKwkgICAgICBjYXNlIG1pbnVzOgotKwkJcmV0dXJuIGxlZnRhcmcgLSByaWdodGFyZzsKLSsJICAgICAgY2FzZSBsZXNzX3RoYW46Ci0rCQlyZXR1cm4gbGVmdGFyZyA8IHJpZ2h0YXJnOwotKwkgICAgICBjYXNlIGdyZWF0ZXJfdGhhbjoKLSsJCXJldHVybiBsZWZ0YXJnID4gcmlnaHRhcmc7Ci0rCSAgICAgIGNhc2UgbGVzc19vcl9lcXVhbDoKLSsJCXJldHVybiBsZWZ0YXJnIDw9IHJpZ2h0YXJnOwotKwkgICAgICBjYXNlIGdyZWF0ZXJfb3JfZXF1YWw6Ci0rCQlyZXR1cm4gbGVmdGFyZyA+PSByaWdodGFyZzsKLSsJICAgICAgY2FzZSBlcXVhbDoKLSsJCXJldHVybiBsZWZ0YXJnID09IHJpZ2h0YXJnOwotKwkgICAgICBjYXNlIG5vdF9lcXVhbDoKLSsJCXJldHVybiBsZWZ0YXJnICE9IHJpZ2h0YXJnOwotKwkgICAgICBkZWZhdWx0OgotKwkJYnJlYWs7Ci0rCSAgICAgIH0KLSsJICB9Ci0rCS8qIE5PVFJFQUNIRUQgKi8KLSsJYnJlYWs7Ci0rICAgICAgfQotKyAgICBjYXNlIDM6Ci0rICAgICAgewotKwkvKiBwZXhwLT5vcGVyYXRpb24gbXVzdCBiZSBxbW9wLiAgKi8KLSsJdW5zaWduZWQgbG9uZyBpbnQgYm9vbGFyZyA9IHBsdXJhbF9ldmFsIChwZXhwLT52YWwuYXJnc1swXSwgbik7Ci0rCXJldHVybiBwbHVyYWxfZXZhbCAocGV4cC0+dmFsLmFyZ3NbYm9vbGFyZyA/IDEgOiAyXSwgbik7Ci0rICAgICAgfQotKyAgICB9Ci0rICAvKiBOT1RSRUFDSEVEICovCi0rICByZXR1cm4gMDsKLSt9Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvZXhwbG9kZW5hbWUuYwkxOTk4LTA0LTI2IDA5OjIyOjM3LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9leHBsb2RlbmFtZS5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuMzk1NzQyMDA4IC0wNDAwCi1AQCAtMSwxOSArMSwyMCBAQAotLS8qIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OCwgMjAwMC0yMDAxLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICAgIENvbnRyaWJ1dGVkIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KLSAKLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSAgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotQEAgLTM2LDE4ICszNywyMyBAQAotIAotIC8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLSAKLStjaGFyICoKLStfbmxfZmluZF9sYW5ndWFnZSAoY29uc3QgY2hhciAqbmFtZSkKLSt7Ci0rICB3aGlsZSAobmFtZVswXSAhPSAnXDAnICYmIG5hbWVbMF0gIT0gJ18nICYmIG5hbWVbMF0gIT0gJ0AnCi0rCSAmJiBuYW1lWzBdICE9ICcrJyAmJiBuYW1lWzBdICE9ICcsJykKLSsgICAgKytuYW1lOwotKwotKyAgcmV0dXJuIChjaGFyICopIG5hbWU7Ci0rfQotKwotKwotIGludAotLV9ubF9leHBsb2RlX25hbWUgKG5hbWUsIGxhbmd1YWdlLCBtb2RpZmllciwgdGVycml0b3J5LCBjb2Rlc2V0LAotLQkJICBub3JtYWxpemVkX2NvZGVzZXQsIHNwZWNpYWwsIHNwb25zb3IsIHJldmlzaW9uKQotLSAgICAgY2hhciAqbmFtZTsKLS0gICAgIGNvbnN0IGNoYXIgKipsYW5ndWFnZTsKLS0gICAgIGNvbnN0IGNoYXIgKiptb2RpZmllcjsKLS0gICAgIGNvbnN0IGNoYXIgKip0ZXJyaXRvcnk7Ci0tICAgICBjb25zdCBjaGFyICoqY29kZXNldDsKLS0gICAgIGNvbnN0IGNoYXIgKipub3JtYWxpemVkX2NvZGVzZXQ7Ci0tICAgICBjb25zdCBjaGFyICoqc3BlY2lhbDsKLS0gICAgIGNvbnN0IGNoYXIgKipzcG9uc29yOwotLSAgICAgY29uc3QgY2hhciAqKnJldmlzaW9uOwotK19ubF9leHBsb2RlX25hbWUgKGNoYXIgKm5hbWUsCi0rCQkgIGNvbnN0IGNoYXIgKipsYW5ndWFnZSwgY29uc3QgY2hhciAqKm1vZGlmaWVyLAotKwkJICBjb25zdCBjaGFyICoqdGVycml0b3J5LCBjb25zdCBjaGFyICoqY29kZXNldCwKLSsJCSAgY29uc3QgY2hhciAqKm5vcm1hbGl6ZWRfY29kZXNldCwgY29uc3QgY2hhciAqKnNwZWNpYWwsCi0rCQkgIGNvbnN0IGNoYXIgKipzcG9uc29yLCBjb25zdCBjaGFyICoqcmV2aXNpb24pCi0gewotICAgZW51bSB7IHVuZGVjaWRlZCwgeHBnLCBjZW4gfSBzeW50YXg7Ci0gICBjaGFyICpjcDsKLUBAIC02Nyw5ICs3Myw3IEBACi0gICBtYXNrID0gMDsKLSAgIHN5bnRheCA9IHVuZGVjaWRlZDsKLSAgICpsYW5ndWFnZSA9IGNwID0gbmFtZTsKLS0gIHdoaWxlIChjcFswXSAhPSAnXDAnICYmIGNwWzBdICE9ICdfJyAmJiBjcFswXSAhPSAnQCcKLS0JICYmIGNwWzBdICE9ICcrJyAmJiBjcFswXSAhPSAnLCcpCi0tICAgICsrY3A7Ci0rICBjcCA9IF9ubF9maW5kX2xhbmd1YWdlICgqbGFuZ3VhZ2UpOwotIAotICAgaWYgKCpsYW5ndWFnZSA9PSBjcCkKLSAgICAgLyogVGhpcyBkb2VzIG5vdCBtYWtlIHNlbnNlOiBsYW5ndWFnZSBoYXMgdG8gYmUgc3BlY2lmaWVkLiAgVXNlCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvZmluZGRvbWFpbi5jCTE5OTgtMDQtMjYgMDk6MjI6MzYuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2ZpbmRkb21haW4uYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjQxNTczODk2OCAtMDQwMAotQEAgLTEsNjQgKzEsNDAgQEAKLSAvKiBIYW5kbGUgbGlzdCBvZiBuZWVkZWQgbWVzc2FnZSBjYXRhbG9ncwotLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NiwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0gICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OSwgMjAwMC0yMDAxLCAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251Lm9yZz4sIDE5OTUuCi0gCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICAgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0gICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSA8Y3R5cGUuaD4KLS0jaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tCi0tI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgX0xJQkMKLS0jIGluY2x1ZGUgPHN0ZGxpYi5oPgotLSNlbHNlCi0tIyBpZmRlZiBIQVZFX01BTExPQ19ICi0tIyAgaW5jbHVkZSA8bWFsbG9jLmg+Ci0tIyBlbHNlCi0tdm9pZCBmcmVlICgpOwotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0jaWYgZGVmaW5lZCBIQVZFX1NUUklOR19IIHx8IGRlZmluZWQgX0xJQkMKLS0jIGluY2x1ZGUgPHN0cmluZy5oPgotLSNlbHNlCi0tIyBpbmNsdWRlIDxzdHJpbmdzLmg+Ci0tIyBpZm5kZWYgbWVtY3B5Ci0tIyAgZGVmaW5lIG1lbWNweShEc3QsIFNyYywgTnVtKSBiY29weSAoU3JjLCBEc3QsIE51bSkKLS0jIGVuZGlmCi0tI2VuZGlmCi0tI2lmICFIQVZFX1NUUkNIUiAmJiAhZGVmaW5lZCBfTElCQwotLSMgaWZuZGVmIHN0cmNocgotLSMgIGRlZmluZSBzdHJjaHIgaW5kZXgKLS0jIGVuZGlmCi0tI2VuZGlmCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSAKLSAjaWYgZGVmaW5lZCBIQVZFX1VOSVNURF9IIHx8IGRlZmluZWQgX0xJQkMKLSAjIGluY2x1ZGUgPHVuaXN0ZC5oPgotICNlbmRpZgotIAotLSNpbmNsdWRlICJnZXR0ZXh0LmgiCi0gI2luY2x1ZGUgImdldHRleHRQLmgiCi0gI2lmZGVmIF9MSUJDCi0gIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2Vsc2UKLS0jIGluY2x1ZGUgImxpYmdldHRleHQuaCIKLSsjIGluY2x1ZGUgImxpYmdudWludGwuaCIKLSAjZW5kaWYKLSAKLSAvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi1AQCAtNzAsMTAgKzQ2LDkgQEAKLSAgICB0aGUgRE9NQUlOTkFNRSBhbmQgQ0FURUdPUlkgcGFyYW1ldGVycyB3aXRoIHJlc3BlY3QgdG8gdGhlIGN1cnJlbnRseQotICAgIGVzdGFibGlzaGVkIGJpbmRpbmdzLiAgKi8KLSBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoKLS1fbmxfZmluZF9kb21haW4gKGRpcm5hbWUsIGxvY2FsZSwgZG9tYWlubmFtZSkKLS0gICAgIGNvbnN0IGNoYXIgKmRpcm5hbWU7Ci0tICAgICBjaGFyICpsb2NhbGU7Ci0tICAgICBjb25zdCBjaGFyICpkb21haW5uYW1lOwotK2ludGVybmFsX2Z1bmN0aW9uCi0rX25sX2ZpbmRfZG9tYWluIChjb25zdCBjaGFyICpkaXJuYW1lLCBjaGFyICpsb2NhbGUsCi0rCQkgY29uc3QgY2hhciAqZG9tYWlubmFtZSwgc3RydWN0IGJpbmRpbmcgKmRvbWFpbmJpbmRpbmcpCi0gewotICAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqcmV0dmFsOwotICAgY29uc3QgY2hhciAqbGFuZ3VhZ2U7Ci1AQCAtOTUsOSArNzAsOSBAQAotIAotIAlsYW5ndWFnZVtfdGVycml0b3J5XVsrYXVkaWVuY2VdWytzcGVjaWFsXVssW3Nwb25zb3JdW19yZXZpc2lvbl1dCi0gCi0tICAgICBCZXNpZGUgdGhlIGZpcnN0IGFsbCBvZiB0aGVtIGFyZSBhbGxvd2VkIHRvIGJlIG1pc3NpbmcuICBJZiB0aGUKLS0gICAgIGZ1bGwgc3BlY2lmaWVkIGxvY2FsZSBpcyBub3QgZm91bmQsIHRoZSBsZXNzIHNwZWNpZmljIG9uZSBhcmUKLS0gICAgIGxvb2tlZCBmb3IuICBUaGUgdmFyaW91cyBwYXJ0IHdpbGwgYmUgc3RyaXBwZWQgb2YgYWNjb3JkaW5nIHRvCi0rICAgICBCZXNpZGUgdGhlIGZpcnN0IHBhcnQgYWxsIG9mIHRoZW0gYXJlIGFsbG93ZWQgdG8gYmUgbWlzc2luZy4gIElmCi0rICAgICB0aGUgZnVsbCBzcGVjaWZpZWQgbG9jYWxlIGlzIG5vdCBmb3VuZCwgdGhlIGxlc3Mgc3BlY2lmaWMgb25lIGFyZQotKyAgICAgbG9va2VkIGZvci4gIFRoZSB2YXJpb3VzIHBhcnRzIHdpbGwgYmUgc3RyaXBwZWQgb2ZmIGFjY29yZGluZyB0bwotICAgICAgdGhlIGZvbGxvd2luZyBvcmRlcjoKLSAJCSgxKSByZXZpc2lvbgotIAkJKDIpIHNwb25zb3IKLUBAIC0xMTksNyArOTQsNyBAQAotICAgICAgIGludCBjbnQ7Ci0gCi0gICAgICAgaWYgKHJldHZhbC0+ZGVjaWRlZCA9PSAwKQotLQlfbmxfbG9hZF9kb21haW4gKHJldHZhbCk7Ci0rCV9ubF9sb2FkX2RvbWFpbiAocmV0dmFsLCBkb21haW5iaW5kaW5nKTsKLSAKLSAgICAgICBpZiAocmV0dmFsLT5kYXRhICE9IE5VTEwpCi0gCXJldHVybiByZXR2YWw7Ci1AQCAtMTI3LDcgKzEwMiw3IEBACi0gICAgICAgZm9yIChjbnQgPSAwOyByZXR2YWwtPnN1Y2Nlc3NvcltjbnRdICE9IE5VTEw7ICsrY250KQotIAl7Ci0gCSAgaWYgKHJldHZhbC0+c3VjY2Vzc29yW2NudF0tPmRlY2lkZWQgPT0gMCkKLS0JICAgIF9ubF9sb2FkX2RvbWFpbiAocmV0dmFsLT5zdWNjZXNzb3JbY250XSk7Ci0rCSAgICBfbmxfbG9hZF9kb21haW4gKHJldHZhbC0+c3VjY2Vzc29yW2NudF0sIGRvbWFpbmJpbmRpbmcpOwotIAotIAkgIGlmIChyZXR2YWwtPnN1Y2Nlc3NvcltjbnRdLT5kYXRhICE9IE5VTEwpCi0gCSAgICBicmVhazsKLUBAIC0xNDIsMTIgKzExNywxOCBAQAotICAgYWxpYXNfdmFsdWUgPSBfbmxfZXhwYW5kX2FsaWFzIChsb2NhbGUpOwotICAgaWYgKGFsaWFzX3ZhbHVlICE9IE5VTEwpCi0gICAgIHsKLSsjaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfU1RSRFVQCi0rICAgICAgbG9jYWxlID0gc3RyZHVwIChhbGlhc192YWx1ZSk7Ci0rICAgICAgaWYgKGxvY2FsZSA9PSBOVUxMKQotKwlyZXR1cm4gTlVMTDsKLSsjZWxzZQotICAgICAgIHNpemVfdCBsZW4gPSBzdHJsZW4gKGFsaWFzX3ZhbHVlKSArIDE7Ci0gICAgICAgbG9jYWxlID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOwotICAgICAgIGlmIChsb2NhbGUgPT0gTlVMTCkKLSAJcmV0dXJuIE5VTEw7Ci0gCi0gICAgICAgbWVtY3B5IChsb2NhbGUsIGFsaWFzX3ZhbHVlLCBsZW4pOwotKyNlbmRpZgotICAgICB9Ci0gCi0gICAvKiBOb3cgd2UgZGV0ZXJtaW5lIHRoZSBzaW5nbGUgcGFydHMgb2YgdGhlIGxvY2FsZSBuYW1lLiAgRmlyc3QKLUBAIC0xNjgsMTQgKzE0OSwxNCBAQAotICAgICByZXR1cm4gTlVMTDsKLSAKLSAgIGlmIChyZXR2YWwtPmRlY2lkZWQgPT0gMCkKLS0gICAgX25sX2xvYWRfZG9tYWluIChyZXR2YWwpOwotKyAgICBfbmxfbG9hZF9kb21haW4gKHJldHZhbCwgZG9tYWluYmluZGluZyk7Ci0gICBpZiAocmV0dmFsLT5kYXRhID09IE5VTEwpCi0gICAgIHsKLSAgICAgICBpbnQgY250OwotICAgICAgIGZvciAoY250ID0gMDsgcmV0dmFsLT5zdWNjZXNzb3JbY250XSAhPSBOVUxMOyArK2NudCkKLSAJewotIAkgIGlmIChyZXR2YWwtPnN1Y2Nlc3NvcltjbnRdLT5kZWNpZGVkID09IDApCi0tCSAgICBfbmxfbG9hZF9kb21haW4gKHJldHZhbC0+c3VjY2Vzc29yW2NudF0pOwotKwkgICAgX25sX2xvYWRfZG9tYWluIChyZXR2YWwtPnN1Y2Nlc3NvcltjbnRdLCBkb21haW5iaW5kaW5nKTsKLSAJICBpZiAocmV0dmFsLT5zdWNjZXNzb3JbY250XS0+ZGF0YSAhPSBOVUxMKQotIAkgICAgYnJlYWs7Ci0gCX0KLUBAIC0xODUsNSArMTY2LDI3IEBACi0gICBpZiAoYWxpYXNfdmFsdWUgIT0gTlVMTCkKLSAgICAgZnJlZSAobG9jYWxlKTsKLSAKLSsgIC8qIFRoZSBzcGFjZSBmb3Igbm9ybWFsaXplZF9jb2Rlc2V0IGlzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZC4gIEZyZWUgaXQuICAqLwotKyAgaWYgKG1hc2sgJiBYUEdfTk9STV9DT0RFU0VUKQotKyAgICBmcmVlICgodm9pZCAqKSBub3JtYWxpemVkX2NvZGVzZXQpOwotKwotICAgcmV0dXJuIHJldHZhbDsKLSB9Ci0rCi0rCi0rI2lmZGVmIF9MSUJDCi0rbGliY19mcmVlcmVzX2ZuIChmcmVlX21lbSkKLSt7Ci0rICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpydW5wID0gX25sX2xvYWRlZF9kb21haW5zOwotKwotKyAgd2hpbGUgKHJ1bnAgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKmhlcmUgPSBydW5wOwotKyAgICAgIGlmIChydW5wLT5kYXRhICE9IE5VTEwpCi0rCV9ubF91bmxvYWRfZG9tYWluICgoc3RydWN0IGxvYWRlZF9kb21haW4gKikgcnVucC0+ZGF0YSk7Ci0rICAgICAgcnVucCA9IHJ1bnAtPm5leHQ7Ci0rICAgICAgZnJlZSAoKGNoYXIgKikgaGVyZS0+ZmlsZW5hbWUpOwotKyAgICAgIGZyZWUgKGhlcmUpOwotKyAgICB9Ci0rfQotKyNlbmRpZgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2dldHRleHQuYwkxOTk4LTA0LTI2IDA5OjIyOjM2LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9nZXR0ZXh0LmMJMjAwNC0wOS0xMiAxNDo0MDozNC40MjA3MzgyMDggLTA0MDAKLUBAIC0xLDE5ICsxLDIwIEBACi0tLyogSW1wbGVtZW50YXRpb24gb2YgZ2V0dGV4dCgzKSBmdW5jdGlvbgotLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBJbXBsZW1lbnRhdGlvbiBvZiBnZXR0ZXh0KDMpIGZ1bmN0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NywgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIAotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgIGFueSBsYXRlciB2ZXJzaW9uLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSAKLSAjaWZkZWYgSEFWRV9DT05GSUdfSAotICMgaW5jbHVkZSA8Y29uZmlnLmg+Ci1AQCAtMjMsMjEgKzI0LDE0IEBACi0gIyBkZWZpbmUgX19uZWVkX05VTEwKLSAjIGluY2x1ZGUgPHN0ZGRlZi5oPgotICNlbHNlCi0tIyBpZmRlZiBTVERDX0hFQURFUlMKLS0jICBpbmNsdWRlIDxzdGRsaWIuaD4JCS8qIEp1c3QgZm9yIE5VTEwuICAqLwotLSMgZWxzZQotLSMgIGlmZGVmIEhBVkVfU1RSSU5HX0gKLS0jICAgaW5jbHVkZSA8c3RyaW5nLmg+Ci0tIyAgZWxzZQotLSMgICBkZWZpbmUgTlVMTCAoKHZvaWQgKikgMCkKLS0jICBlbmRpZgotLSMgZW5kaWYKLSsjIGluY2x1ZGUgPHN0ZGxpYi5oPgkJLyogSnVzdCBmb3IgTlVMTC4gICovCi0gI2VuZGlmCi0gCi0rI2luY2x1ZGUgImdldHRleHRQLmgiCi0gI2lmZGVmIF9MSUJDCi0gIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2Vsc2UKLS0jIGluY2x1ZGUgImxpYmdldHRleHQuaCIKLSsjIGluY2x1ZGUgImxpYmdudWludGwuaCIKLSAjZW5kaWYKLSAKLSAvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi1AQCAtNDgsMjAgKzQyLDE5IEBACi0gICAgcHJlZml4LiAgU28gd2UgaGF2ZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KLSAjaWZkZWYgX0xJQkMKLSAjIGRlZmluZSBHRVRURVhUIF9fZ2V0dGV4dAotLSMgZGVmaW5lIERHRVRURVhUIF9fZGdldHRleHQKLSsjIGRlZmluZSBEQ0dFVFRFWFQgSU5UVVNFKF9fZGNnZXR0ZXh0KQotICNlbHNlCi0tIyBkZWZpbmUgR0VUVEVYVCBnZXR0ZXh0X18KLS0jIGRlZmluZSBER0VUVEVYVCBkZ2V0dGV4dF9fCi0rIyBkZWZpbmUgR0VUVEVYVCBsaWJpbnRsX2dldHRleHQKLSsjIGRlZmluZSBEQ0dFVFRFWFQgbGliaW50bF9kY2dldHRleHQKLSAjZW5kaWYKLSAKLSAvKiBMb29rIHVwIE1TR0lEIGluIHRoZSBjdXJyZW50IGRlZmF1bHQgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudAotICAgIExDX01FU1NBR0VTIGxvY2FsZS4gIElmIG5vdCBmb3VuZCwgcmV0dXJucyBNU0dJRCBpdHNlbGYgKHRoZSBkZWZhdWx0Ci0gICAgdGV4dCkuICAqLwotIGNoYXIgKgotLUdFVFRFWFQgKG1zZ2lkKQotLSAgICAgY29uc3QgY2hhciAqbXNnaWQ7Ci0rR0VUVEVYVCAoY29uc3QgY2hhciAqbXNnaWQpCi0gewotLSAgcmV0dXJuIERHRVRURVhUIChOVUxMLCBtc2dpZCk7Ci0rICByZXR1cm4gRENHRVRURVhUIChOVUxMLCBtc2dpZCwgTENfTUVTU0FHRVMpOwotIH0KLSAKLSAjaWZkZWYgX0xJQkMKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9nZXR0ZXh0LmgJMTk5OC0wNC0yNiAwOToyMjozNS4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dC5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi1AQCAtMSwxMDUgKzAsMCBAQAotLS8qIEludGVybmFsIGhlYWRlciBmb3IgR05VIGdldHRleHQgaW50ZXJuYXRpb25hbGl6YXRpb24gZnVuY3Rpb25zCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLQotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tICAgYW55IGxhdGVyIHZlcnNpb24uCi0tCi0tICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0KLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotLSAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgc2VlIHRoZSBmaWxlIENPUFlJTkcuTElCLiAgSWYgbm90LAotLSAgIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwKLS0gICBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0tCi0tI2lmbmRlZiBfR0VUVEVYVF9ICi0tI2RlZmluZSBfR0VUVEVYVF9IIDEKLS0KLS0jaW5jbHVkZSA8c3RkaW8uaD4KLS0KLS0jaWYgSEFWRV9MSU1JVFNfSCB8fCBfTElCQwotLSMgaW5jbHVkZSA8bGltaXRzLmg+Ci0tI2VuZGlmCi0tCi0tLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotLQotLS8qIFRoZSBtYWdpYyBudW1iZXIgb2YgdGhlIEdOVSBtZXNzYWdlIGNhdGFsb2cgZm9ybWF0LiAgKi8KLS0jZGVmaW5lIF9NQUdJQyAweDk1MDQxMmRlCi0tI2RlZmluZSBfTUFHSUNfU1dBUFBFRCAweGRlMTIwNDk1Ci0tCi0tLyogUmV2aXNpb24gbnVtYmVyIG9mIHRoZSBjdXJyZW50bHkgdXNlZCAubW8gKGJpbmFyeSkgZmlsZSBmb3JtYXQuICAqLwotLSNkZWZpbmUgTU9fUkVWSVNJT05fTlVNQkVSIDAKLS0KLS0vKiBUaGUgZm9sbG93aW5nIGNvbnRvcnRpb25zIGFyZSBhbiBhdHRlbXB0IHRvIHVzZSB0aGUgQyBwcmVwcm9jZXNzb3IKLS0gICB0byBkZXRlcm1pbmUgYW4gdW5zaWduZWQgaW50ZWdyYWwgdHlwZSB0aGF0IGlzIDMyIGJpdHMgd2lkZS4gIEFuCi0tICAgYWx0ZXJuYXRpdmUgYXBwcm9hY2ggaXMgdG8gdXNlIGF1dG9jb25mJ3MgQUNfQ0hFQ0tfU0laRU9GIG1hY3JvLCBidXQKLS0gICBkb2luZyB0aGF0IHdvdWxkIHJlcXVpcmUgdGhhdCB0aGUgY29uZmlndXJlIHNjcmlwdCBjb21waWxlIGFuZCAqcnVuKgotLSAgIHRoZSByZXN1bHRpbmcgZXhlY3V0YWJsZS4gIExvY2FsbHkgcnVubmluZyBjcm9zcy1jb21waWxlZCBleGVjdXRhYmxlcwotLSAgIGlzIHVzdWFsbHkgbm90IHBvc3NpYmxlLiAgKi8KLS0KLS0jaWYgX19TVERDX18KLS0jIGRlZmluZSBVSU5UX01BWF8zMl9CSVRTIDQyOTQ5NjcyOTVVCi0tI2Vsc2UKLS0jIGRlZmluZSBVSU5UX01BWF8zMl9CSVRTIDB4RkZGRkZGRkYKLS0jZW5kaWYKLS0KLS0vKiBJZiBVSU5UX01BWCBpc24ndCBkZWZpbmVkLCBhc3N1bWUgaXQncyBhIDMyLWJpdCB0eXBlLgotLSAgIFRoaXMgc2hvdWxkIGJlIHZhbGlkIGZvciBhbGwgc3lzdGVtcyBHTlUgY2FyZXMgYWJvdXQgYmVjYXVzZQotLSAgIHRoYXQgZG9lc24ndCBpbmNsdWRlIDE2LWJpdCBzeXN0ZW1zLCBhbmQgb25seSBtb2Rlcm4gc3lzdGVtcwotLSAgICh0aGF0IGNlcnRhaW5seSBoYXZlIDxsaW1pdHMuaD4pIGhhdmUgNjQrLWJpdCBpbnRlZ3JhbCB0eXBlcy4gICovCi0tCi0tI2lmbmRlZiBVSU5UX01BWAotLSMgZGVmaW5lIFVJTlRfTUFYIFVJTlRfTUFYXzMyX0JJVFMKLS0jZW5kaWYKLS0KLS0jaWYgVUlOVF9NQVggPT0gVUlOVF9NQVhfMzJfQklUUwotLXR5cGVkZWYgdW5zaWduZWQgbmxzX3VpbnQzMjsKLS0jZWxzZQotLSMgaWYgVVNIUlRfTUFYID09IFVJTlRfTUFYXzMyX0JJVFMKLS10eXBlZGVmIHVuc2lnbmVkIHNob3J0IG5sc191aW50MzI7Ci0tIyBlbHNlCi0tIyAgaWYgVUxPTkdfTUFYID09IFVJTlRfTUFYXzMyX0JJVFMKLS10eXBlZGVmIHVuc2lnbmVkIGxvbmcgbmxzX3VpbnQzMjsKLS0jICBlbHNlCi0tICAvKiBUaGUgZm9sbG93aW5nIGxpbmUgaXMgaW50ZW5kZWQgdG8gdGhyb3cgYW4gZXJyb3IuICBVc2luZyAjZXJyb3IgaXMKLS0gICAgIG5vdCBwb3J0YWJsZSBlbm91Z2guICAqLwotLSAgIkNhbm5vdCBkZXRlcm1pbmUgdW5zaWduZWQgMzItYml0IGRhdGEgdHlwZS4iCi0tIyAgZW5kaWYKLS0jIGVuZGlmCi0tI2VuZGlmCi0tCi0tCi0tLyogSGVhZGVyIGZvciBiaW5hcnkgLm1vIGZpbGUgZm9ybWF0LiAgKi8KLS1zdHJ1Y3QgbW9fZmlsZV9oZWFkZXIKLS17Ci0tICAvKiBUaGUgbWFnaWMgbnVtYmVyLiAgKi8KLS0gIG5sc191aW50MzIgbWFnaWM7Ci0tICAvKiBUaGUgcmV2aXNpb24gbnVtYmVyIG9mIHRoZSBmaWxlIGZvcm1hdC4gICovCi0tICBubHNfdWludDMyIHJldmlzaW9uOwotLSAgLyogVGhlIG51bWJlciBvZiBzdHJpbmdzIHBhaXJzLiAgKi8KLS0gIG5sc191aW50MzIgbnN0cmluZ3M7Ci0tICAvKiBPZmZzZXQgb2YgdGFibGUgd2l0aCBzdGFydCBvZmZzZXRzIG9mIG9yaWdpbmFsIHN0cmluZ3MuICAqLwotLSAgbmxzX3VpbnQzMiBvcmlnX3RhYl9vZmZzZXQ7Ci0tICAvKiBPZmZzZXQgb2YgdGFibGUgd2l0aCBzdGFydCBvZmZzZXRzIG9mIHRyYW5zbGF0aW9uIHN0cmluZ3MuICAqLwotLSAgbmxzX3VpbnQzMiB0cmFuc190YWJfb2Zmc2V0OwotLSAgLyogU2l6ZSBvZiBoYXNoaW5nIHRhYmxlLiAgKi8KLS0gIG5sc191aW50MzIgaGFzaF90YWJfc2l6ZTsKLS0gIC8qIE9mZnNldCBvZiBmaXJzdCBoYXNoaW5nIGVudHJ5LiAgKi8KLS0gIG5sc191aW50MzIgaGFzaF90YWJfb2Zmc2V0OwotLX07Ci0tCi0tc3RydWN0IHN0cmluZ19kZXNjCi0tewotLSAgLyogTGVuZ3RoIG9mIGFkZHJlc3NlZCBzdHJpbmcuICAqLwotLSAgbmxzX3VpbnQzMiBsZW5ndGg7Ci0tICAvKiBPZmZzZXQgb2Ygc3RyaW5nIGluIGZpbGUuICAqLwotLSAgbmxzX3VpbnQzMiBvZmZzZXQ7Ci0tfTsKLS0KLS0vKiBAQCBiZWdpbiBvZiBlcGlsb2cgQEAgKi8KLS0KLS0jZW5kaWYJLyogZ2V0dGV4dC5oICAqLwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2dldHRleHRQLmgJMTk5OC0wNC0yNiAwOToyMjozNS4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvZ2V0dGV4dFAuaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjQyNjczNzI5NiAtMDQwMAotQEAgLTEsMzMgKzEsNTMgQEAKLS0vKiBIZWFkZXIgZGVzY3JpYmluZyBpbnRlcm5hbHMgb2YgZ2V0dGV4dCBsaWJyYXJ5Ci0tICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIEhlYWRlciBkZXNjcmliaW5nIGludGVybmFscyBvZiBsaWJpbnRsIGxpYnJhcnkuCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTksIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk1LgotIAotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotICAgIGFueSBsYXRlciB2ZXJzaW9uLgotIAotICAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSAKLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSAKLSAjaWZuZGVmIF9HRVRURVhUUF9ICi0gI2RlZmluZSBfR0VUVEVYVFBfSAotIAotKyNpbmNsdWRlIDxzdGRkZWYuaD4JCS8qIEdldCBzaXplX3QuICAqLwotKwotKyNpZmRlZiBfTElCQwotKyMgaW5jbHVkZSAiLi4vaWNvbnYvZ2NvbnZfaW50LmgiCi0rI2Vsc2UKLSsjIGlmIEhBVkVfSUNPTlYKLSsjICBpbmNsdWRlIDxpY29udi5oPgotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSAjaW5jbHVkZSAibG9hZGluZm8uaCIKLSAKLSsjaW5jbHVkZSAiZ21vLmgiCQkvKiBHZXQgbmxzX3VpbnQzMi4gICovCi0rCi0gLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotIAotLSNpZm5kZWYgUEFSQU1TCi0tIyBpZiBfX1NURENfXwotLSMgIGRlZmluZSBQQVJBTVMoYXJncykgYXJncwotLSMgZWxzZQotLSMgIGRlZmluZSBQQVJBTVMoYXJncykgKCkKLS0jIGVuZGlmCi0rI2lmbmRlZiBpbnRlcm5hbF9mdW5jdGlvbgotKyMgZGVmaW5lIGludGVybmFsX2Z1bmN0aW9uCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBhdHRyaWJ1dGVfaGlkZGVuCi0rIyBkZWZpbmUgYXR0cmlidXRlX2hpZGRlbgotKyNlbmRpZgotKwotKy8qIFRlbGwgdGhlIGNvbXBpbGVyIHdoZW4gYSBjb25kaXRpb25hbCBvciBpbnRlZ2VyIGV4cHJlc3Npb24gaXMKLSsgICBhbG1vc3QgYWx3YXlzIHRydWUgb3IgYWxtb3N0IGFsd2F5cyBmYWxzZS4gICovCi0rI2lmbmRlZiBIQVZFX0JVSUxUSU5fRVhQRUNUCi0rIyBkZWZpbmUgX19idWlsdGluX2V4cGVjdChleHByLCB2YWwpIChleHByKQotICNlbmRpZgotIAotICNpZm5kZWYgVwotQEAgLTM1LDM4ICs1NSwxNjAgQEAKLSAjZW5kaWYKLSAKLSAKLS1zdGF0aWMgbmxzX3VpbnQzMiBTV0FQIFBBUkFNUyAoKG5sc191aW50MzIgaSkpOwotLQotKyNpZmRlZiBfTElCQwotKyMgaW5jbHVkZSA8Ynl0ZXN3YXAuaD4KLSsjIGRlZmluZSBTV0FQKGkpIGJzd2FwXzMyIChpKQotKyNlbHNlCi0gc3RhdGljIGlubGluZSBubHNfdWludDMyCi0gU1dBUCAoaSkKLSAgICAgIG5sc191aW50MzIgaTsKLSB7Ci0gICByZXR1cm4gKGkgPDwgMjQpIHwgKChpICYgMHhmZjAwKSA8PCA4KSB8ICgoaSA+PiA4KSAmIDB4ZmYwMCkgfCAoaSA+PiAyNCk7Ci0gfQotKyNlbmRpZgotKwotIAotKy8qIEluLW1lbW9yeSByZXByZXNlbnRhdGlvbiBvZiBzeXN0ZW0gZGVwZW5kZW50IHN0cmluZy4gICovCi0rc3RydWN0IHN5c2RlcF9zdHJpbmdfZGVzYwotK3sKLSsgIC8qIExlbmd0aCBvZiBhZGRyZXNzZWQgc3RyaW5nLCBpbmNsdWRpbmcgdGhlIHRyYWlsaW5nIE5VTC4gICovCi0rICBzaXplX3QgbGVuZ3RoOwotKyAgLyogUG9pbnRlciB0byBhZGRyZXNzZWQgc3RyaW5nLiAgKi8KLSsgIGNvbnN0IGNoYXIgKnBvaW50ZXI7Ci0rfTsKLSAKLSsvKiBUaGUgcmVwcmVzZW50YXRpb24gb2YgYW4gb3BlbmVkIG1lc3NhZ2UgY2F0YWxvZy4gICovCi0gc3RydWN0IGxvYWRlZF9kb21haW4KLSB7Ci0rICAvKiBQb2ludGVyIHRvIG1lbW9yeSBjb250YWluaW5nIHRoZSAubW8gZmlsZS4gICovCi0gICBjb25zdCBjaGFyICpkYXRhOwotKyAgLyogMSBpZiB0aGUgbWVtb3J5IGlzIG1tYXAoKWVkLCAwIGlmIHRoZSBtZW1vcnkgaXMgbWFsbG9jKCllZC4gICovCi0rICBpbnQgdXNlX21tYXA7Ci0rICAvKiBTaXplIG9mIG1tYXAoKWVkIG1lbW9yeS4gICovCi0rICBzaXplX3QgbW1hcF9zaXplOwotKyAgLyogMSBpZiB0aGUgLm1vIGZpbGUgdXNlcyBhIGRpZmZlcmVudCBlbmRpYW5uZXNzIHRoYW4gdGhpcyBtYWNoaW5lLiAgKi8KLSAgIGludCBtdXN0X3N3YXA7Ci0rICAvKiBQb2ludGVyIHRvIGFkZGl0aW9uYWwgbWFsbG9jKCllZCBtZW1vcnkuICAqLwotKyAgdm9pZCAqbWFsbG9jZWQ7Ci0rCi0rICAvKiBOdW1iZXIgb2Ygc3RhdGljIHN0cmluZ3MgcGFpcnMuICAqLwotICAgbmxzX3VpbnQzMiBuc3RyaW5nczsKLS0gIHN0cnVjdCBzdHJpbmdfZGVzYyAqb3JpZ190YWI7Ci0tICBzdHJ1Y3Qgc3RyaW5nX2Rlc2MgKnRyYW5zX3RhYjsKLSsgIC8qIFBvaW50ZXIgdG8gZGVzY3JpcHRvcnMgb2Ygb3JpZ2luYWwgc3RyaW5ncyBpbiB0aGUgZmlsZS4gICovCi0rICBjb25zdCBzdHJ1Y3Qgc3RyaW5nX2Rlc2MgKm9yaWdfdGFiOwotKyAgLyogUG9pbnRlciB0byBkZXNjcmlwdG9ycyBvZiB0cmFuc2xhdGVkIHN0cmluZ3MgaW4gdGhlIGZpbGUuICAqLwotKyAgY29uc3Qgc3RydWN0IHN0cmluZ19kZXNjICp0cmFuc190YWI7Ci0rCi0rICAvKiBOdW1iZXIgb2Ygc3lzdGVtIGRlcGVuZGVudCBzdHJpbmdzIHBhaXJzLiAgKi8KLSsgIG5sc191aW50MzIgbl9zeXNkZXBfc3RyaW5nczsKLSsgIC8qIFBvaW50ZXIgdG8gZGVzY3JpcHRvcnMgb2Ygb3JpZ2luYWwgc3lzZGVwIHN0cmluZ3MuICAqLwotKyAgY29uc3Qgc3RydWN0IHN5c2RlcF9zdHJpbmdfZGVzYyAqb3JpZ19zeXNkZXBfdGFiOwotKyAgLyogUG9pbnRlciB0byBkZXNjcmlwdG9ycyBvZiB0cmFuc2xhdGVkIHN5c2RlcCBzdHJpbmdzLiAgKi8KLSsgIGNvbnN0IHN0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MgKnRyYW5zX3N5c2RlcF90YWI7Ci0rCi0rICAvKiBTaXplIG9mIGhhc2ggdGFibGUuICAqLwotICAgbmxzX3VpbnQzMiBoYXNoX3NpemU7Ci0tICBubHNfdWludDMyICpoYXNoX3RhYjsKLSsgIC8qIFBvaW50ZXIgdG8gaGFzaCB0YWJsZS4gICovCi0rICBjb25zdCBubHNfdWludDMyICpoYXNoX3RhYjsKLSsgIC8qIDEgaWYgdGhlIGhhc2ggdGFibGUgdXNlcyBhIGRpZmZlcmVudCBlbmRpYW5uZXNzIHRoYW4gdGhpcyBtYWNoaW5lLiAgKi8KLSsgIGludCBtdXN0X3N3YXBfaGFzaF90YWI7Ci0rCi0rICBpbnQgY29kZXNldF9jbnRyOwotKyNpZmRlZiBfTElCQwotKyAgX19nY29udl90IGNvbnY7Ci0rI2Vsc2UKLSsjIGlmIEhBVkVfSUNPTlYKLSsgIGljb252X3QgY29udjsKLSsjIGVuZGlmCi0rI2VuZGlmCi0rICBjaGFyICoqY29udl90YWI7Ci0rCi0rICBzdHJ1Y3QgZXhwcmVzc2lvbiAqcGx1cmFsOwotKyAgdW5zaWduZWQgbG9uZyBpbnQgbnBsdXJhbHM7Ci0gfTsKLSAKLSsvKiBXZSB3YW50IHRvIGFsbG9jYXRlIGEgc3RyaW5nIGF0IHRoZSBlbmQgb2YgdGhlIHN0cnVjdC4gIEJ1dCBJU08gQwotKyAgIGRvZXNuJ3QgYWxsb3cgemVybyBzaXplZCBhcnJheXMuICAqLwotKyNpZmRlZiBfX0dOVUNfXwotKyMgZGVmaW5lIFpFUk8gMAotKyNlbHNlCi0rIyBkZWZpbmUgWkVSTyAxCi0rI2VuZGlmCi0rCi0rLyogQSBzZXQgb2Ygc2V0dGluZ3MgYm91bmQgdG8gYSBtZXNzYWdlIGRvbWFpbi4gIFVzZWQgdG8gc3RvcmUgc2V0dGluZ3MKLSsgICBmcm9tIGJpbmR0ZXh0ZG9tYWluKCkgYW5kIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0KCkuICAqLwotIHN0cnVjdCBiaW5kaW5nCi0gewotICAgc3RydWN0IGJpbmRpbmcgKm5leHQ7Ci0tICBjaGFyICpkb21haW5uYW1lOwotICAgY2hhciAqZGlybmFtZTsKLSsgIGludCBjb2Rlc2V0X2NudHI7CS8qIEluY3JlbWVudGVkIGVhY2ggdGltZSBjb2Rlc2V0IGNoYW5nZXMuICAqLwotKyAgY2hhciAqY29kZXNldDsKLSsgIGNoYXIgZG9tYWlubmFtZVtaRVJPXTsKLSB9OwotIAotLXN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9ubF9maW5kX2RvbWFpbiBQQVJBTVMgKChjb25zdCBjaGFyICpfX2Rpcm5hbWUsCi0tCQkJCQkJIGNoYXIgKl9fbG9jYWxlLAotLQkJCQkJCSBjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUpKTsKLS12b2lkIF9ubF9sb2FkX2RvbWFpbiBQQVJBTVMgKChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpfX2RvbWFpbikpOwotKy8qIEEgY291bnRlciB3aGljaCBpcyBpbmNyZW1lbnRlZCBlYWNoIHRpbWUgc29tZSBwcmV2aW91cyB0cmFuc2xhdGlvbnMKLSsgICBiZWNvbWUgaW52YWxpZC4KLSsgICBUaGlzIHZhcmlhYmxlIGlzIHBhcnQgb2YgdGhlIGV4dGVybmFsIEFCSSBvZiB0aGUgR05VIGxpYmludGwuICAqLwotK2V4dGVybiBpbnQgX25sX21zZ19jYXRfY250cjsKLSsKLSsjaWZuZGVmIF9MSUJDCi0rY29uc3QgY2hhciAqX25sX2xvY2FsZV9uYW1lIChpbnQgY2F0ZWdvcnksIGNvbnN0IGNoYXIgKmNhdGVnb3J5bmFtZSk7Ci0rI2VuZGlmCi0rCi0rc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqX25sX2ZpbmRfZG9tYWluIChjb25zdCBjaGFyICpfX2Rpcm5hbWUsIGNoYXIgKl9fbG9jYWxlLAotKwkJCQkJIGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQkJCSBzdHJ1Y3QgYmluZGluZyAqX19kb21haW5iaW5kaW5nKQotKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247Ci0rdm9pZCBfbmxfbG9hZF9kb21haW4gKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKl9fZG9tYWluLAotKwkJICAgICAgc3RydWN0IGJpbmRpbmcgKl9fZG9tYWluYmluZGluZykKLSsgICAgIGludGVybmFsX2Z1bmN0aW9uOwotK3ZvaWQgX25sX3VubG9hZF9kb21haW4gKHN0cnVjdCBsb2FkZWRfZG9tYWluICpfX2RvbWFpbikKLSsgICAgIGludGVybmFsX2Z1bmN0aW9uOwotK2NvbnN0IGNoYXIgKl9ubF9pbml0X2RvbWFpbl9jb252IChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpfX2RvbWFpbl9maWxlLAotKwkJCQkgIHN0cnVjdCBsb2FkZWRfZG9tYWluICpfX2RvbWFpbiwKLSsJCQkJICBzdHJ1Y3QgYmluZGluZyAqX19kb21haW5iaW5kaW5nKQotKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247Ci0rdm9pZCBfbmxfZnJlZV9kb21haW5fY29udiAoc3RydWN0IGxvYWRlZF9kb21haW4gKl9fZG9tYWluKQotKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247Ci0rCi0rY2hhciAqX25sX2ZpbmRfbXNnIChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW5fZmlsZSwKLSsJCSAgICBzdHJ1Y3QgYmluZGluZyAqZG9tYWluYmluZGluZywgY29uc3QgY2hhciAqbXNnaWQsCi0rCQkgICAgc2l6ZV90ICpsZW5ndGhwKQotKyAgICAgaW50ZXJuYWxfZnVuY3Rpb247Ci0rCi0rI2lmZGVmIF9MSUJDCi0rZXh0ZXJuIGNoYXIgKl9fZ2V0dGV4dCAoY29uc3QgY2hhciAqX19tc2dpZCk7Ci0rZXh0ZXJuIGNoYXIgKl9fZGdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCk7Ci0rZXh0ZXJuIGNoYXIgKl9fZGNnZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQsCi0rCQkJICBpbnQgX19jYXRlZ29yeSk7Ci0rZXh0ZXJuIGNoYXIgKl9fbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKLSsJCQkgdW5zaWduZWQgbG9uZyBpbnQgX19uKTsKLStleHRlcm4gY2hhciAqX19kbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQkgIGNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKLSsJCQkgIHVuc2lnbmVkIGxvbmcgaW50IG4pOwotK2V4dGVybiBjaGFyICpfX2RjbmdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQkgICBjb25zdCBjaGFyICpfX21zZ2lkMSwgY29uc3QgY2hhciAqX19tc2dpZDIsCi0rCQkJICAgdW5zaWduZWQgbG9uZyBpbnQgX19uLCBpbnQgX19jYXRlZ29yeSk7Ci0rZXh0ZXJuIGNoYXIgKl9fZGNpZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCSAgIGNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKLSsJCQkgICBpbnQgX19wbHVyYWwsIHVuc2lnbmVkIGxvbmcgaW50IF9fbiwKLSsJCQkgICBpbnQgX19jYXRlZ29yeSk7Ci0rZXh0ZXJuIGNoYXIgKl9fdGV4dGRvbWFpbiAoY29uc3QgY2hhciAqX19kb21haW5uYW1lKTsKLStleHRlcm4gY2hhciAqX19iaW5kdGV4dGRvbWFpbiAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCSAgICAgICBjb25zdCBjaGFyICpfX2Rpcm5hbWUpOwotK2V4dGVybiBjaGFyICpfX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJCQljb25zdCBjaGFyICpfX2NvZGVzZXQpOwotKyNlbHNlCi0rLyogRGVjbGFyZSB0aGUgZXhwb3J0ZWQgbGliaW50bF8qIGZ1bmN0aW9ucywgaW4gYSB3YXkgdGhhdCBhbGxvd3MgdXMgdG8KLSsgICBjYWxsIHRoZW0gdW5kZXIgdGhlaXIgcmVhbCBuYW1lLiAgKi8KLSsjIHVuZGVmIF9JTlRMX1JFRElSRUNUX0lOTElORQotKyMgdW5kZWYgX0lOVExfUkVESVJFQ1RfTUFDUk9TCi0rIyBkZWZpbmUgX0lOVExfUkVESVJFQ1RfTUFDUk9TCi0rIyBpbmNsdWRlICJsaWJnbnVpbnRsLmgiCi0rZXh0ZXJuIGNoYXIgKmxpYmludGxfZGNpZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCQkgY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAotKwkJCQkgaW50IF9fcGx1cmFsLCB1bnNpZ25lZCBsb25nIGludCBfX24sCi0rCQkJCSBpbnQgX19jYXRlZ29yeSk7Ci0rI2VuZGlmCi0gCi0gLyogQEAgYmVnaW4gb2YgZXBpbG9nIEBAICovCi0gCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvZ21vLmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvZ21vLmgJMjAwNC0wOS0xMiAxNDo0MDozNC40MzE3MzY1MzYgLTA0MDAKLUBAIC0wLDAgKzEsMTQ5IEBACi0rLyogRGVzY3JpcHRpb24gb2YgR05VIG1lc3NhZ2UgY2F0YWxvZyBmb3JtYXQ6IGdlbmVyYWwgZmlsZSBsYXlvdXQuCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk3LCAyMDAwLTIwMDIsIDIwMDQgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZm5kZWYgX0dFVFRFWFRfSAotKyNkZWZpbmUgX0dFVFRFWFRfSCAxCi0rCi0rI2luY2x1ZGUgPGxpbWl0cy5oPgotKwotKy8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLSsKLSsvKiBUaGUgbWFnaWMgbnVtYmVyIG9mIHRoZSBHTlUgbWVzc2FnZSBjYXRhbG9nIGZvcm1hdC4gICovCi0rI2RlZmluZSBfTUFHSUMgMHg5NTA0MTJkZQotKyNkZWZpbmUgX01BR0lDX1NXQVBQRUQgMHhkZTEyMDQ5NQotKwotKy8qIFJldmlzaW9uIG51bWJlciBvZiB0aGUgY3VycmVudGx5IHVzZWQgLm1vIChiaW5hcnkpIGZpbGUgZm9ybWF0LiAgKi8KLSsjZGVmaW5lIE1PX1JFVklTSU9OX05VTUJFUiAwCi0rI2RlZmluZSBNT19SRVZJU0lPTl9OVU1CRVJfV0lUSF9TWVNERVBfSSAxCi0rCi0rLyogVGhlIGZvbGxvd2luZyBjb250b3J0aW9ucyBhcmUgYW4gYXR0ZW1wdCB0byB1c2UgdGhlIEMgcHJlcHJvY2Vzc29yCi0rICAgdG8gZGV0ZXJtaW5lIGFuIHVuc2lnbmVkIGludGVncmFsIHR5cGUgdGhhdCBpcyAzMiBiaXRzIHdpZGUuICBBbgotKyAgIGFsdGVybmF0aXZlIGFwcHJvYWNoIGlzIHRvIHVzZSBhdXRvY29uZidzIEFDX0NIRUNLX1NJWkVPRiBtYWNybywgYnV0Ci0rICAgYXMgb2YgdmVyc2lvbiBhdXRvY29uZi0yLjEzLCB0aGUgQUNfQ0hFQ0tfU0laRU9GIG1hY3JvIGRvZXNuJ3Qgd29yawotKyAgIHdoZW4gY3Jvc3MtY29tcGlsaW5nLiAgKi8KLSsKLSsjaWYgX19TVERDX18KLSsjIGRlZmluZSBVSU5UX01BWF8zMl9CSVRTIDQyOTQ5NjcyOTVVCi0rI2Vsc2UKLSsjIGRlZmluZSBVSU5UX01BWF8zMl9CSVRTIDB4RkZGRkZGRkYKLSsjZW5kaWYKLSsKLSsvKiBJZiBVSU5UX01BWCBpc24ndCBkZWZpbmVkLCBhc3N1bWUgaXQncyBhIDMyLWJpdCB0eXBlLgotKyAgIFRoaXMgc2hvdWxkIGJlIHZhbGlkIGZvciBhbGwgc3lzdGVtcyBHTlUgY2FyZXMgYWJvdXQgYmVjYXVzZQotKyAgIHRoYXQgZG9lc24ndCBpbmNsdWRlIDE2LWJpdCBzeXN0ZW1zLCBhbmQgb25seSBtb2Rlcm4gc3lzdGVtcwotKyAgICh0aGF0IGNlcnRhaW5seSBoYXZlIDxsaW1pdHMuaD4pIGhhdmUgNjQrLWJpdCBpbnRlZ3JhbCB0eXBlcy4gICovCi0rCi0rI2lmbmRlZiBVSU5UX01BWAotKyMgZGVmaW5lIFVJTlRfTUFYIFVJTlRfTUFYXzMyX0JJVFMKLSsjZW5kaWYKLSsKLSsjaWYgVUlOVF9NQVggPT0gVUlOVF9NQVhfMzJfQklUUwotK3R5cGVkZWYgdW5zaWduZWQgbmxzX3VpbnQzMjsKLSsjZWxzZQotKyMgaWYgVVNIUlRfTUFYID09IFVJTlRfTUFYXzMyX0JJVFMKLSt0eXBlZGVmIHVuc2lnbmVkIHNob3J0IG5sc191aW50MzI7Ci0rIyBlbHNlCi0rIyAgaWYgVUxPTkdfTUFYID09IFVJTlRfTUFYXzMyX0JJVFMKLSt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgbmxzX3VpbnQzMjsKLSsjICBlbHNlCi0rICAvKiBUaGUgZm9sbG93aW5nIGxpbmUgaXMgaW50ZW5kZWQgdG8gdGhyb3cgYW4gZXJyb3IuICBVc2luZyAjZXJyb3IgaXMKLSsgICAgIG5vdCBwb3J0YWJsZSBlbm91Z2guICAqLwotKyAgIkNhbm5vdCBkZXRlcm1pbmUgdW5zaWduZWQgMzItYml0IGRhdGEgdHlwZS4iCi0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rCi0rLyogSGVhZGVyIGZvciBiaW5hcnkgLm1vIGZpbGUgZm9ybWF0LiAgKi8KLStzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIKLSt7Ci0rICAvKiBUaGUgbWFnaWMgbnVtYmVyLiAgKi8KLSsgIG5sc191aW50MzIgbWFnaWM7Ci0rICAvKiBUaGUgcmV2aXNpb24gbnVtYmVyIG9mIHRoZSBmaWxlIGZvcm1hdC4gICovCi0rICBubHNfdWludDMyIHJldmlzaW9uOwotKwotKyAgLyogVGhlIGZvbGxvd2luZyBhcmUgb25seSB1c2VkIGluIC5tbyBmaWxlcyB3aXRoIG1ham9yIHJldmlzaW9uIDAgb3IgMS4gICovCi0rCi0rICAvKiBUaGUgbnVtYmVyIG9mIHN0cmluZ3MgcGFpcnMuICAqLwotKyAgbmxzX3VpbnQzMiBuc3RyaW5nczsKLSsgIC8qIE9mZnNldCBvZiB0YWJsZSB3aXRoIHN0YXJ0IG9mZnNldHMgb2Ygb3JpZ2luYWwgc3RyaW5ncy4gICovCi0rICBubHNfdWludDMyIG9yaWdfdGFiX29mZnNldDsKLSsgIC8qIE9mZnNldCBvZiB0YWJsZSB3aXRoIHN0YXJ0IG9mZnNldHMgb2YgdHJhbnNsYXRlZCBzdHJpbmdzLiAgKi8KLSsgIG5sc191aW50MzIgdHJhbnNfdGFiX29mZnNldDsKLSsgIC8qIFNpemUgb2YgaGFzaCB0YWJsZS4gICovCi0rICBubHNfdWludDMyIGhhc2hfdGFiX3NpemU7Ci0rICAvKiBPZmZzZXQgb2YgZmlyc3QgaGFzaCB0YWJsZSBlbnRyeS4gICovCi0rICBubHNfdWludDMyIGhhc2hfdGFiX29mZnNldDsKLSsKLSsgIC8qIFRoZSBmb2xsb3dpbmcgYXJlIG9ubHkgdXNlZCBpbiAubW8gZmlsZXMgd2l0aCBtaW5vciByZXZpc2lvbiA+PSAxLiAgKi8KLSsKLSsgIC8qIFRoZSBudW1iZXIgb2Ygc3lzdGVtIGRlcGVuZGVudCBzZWdtZW50cy4gICovCi0rICBubHNfdWludDMyIG5fc3lzZGVwX3NlZ21lbnRzOwotKyAgLyogT2Zmc2V0IG9mIHRhYmxlIGRlc2NyaWJpbmcgc3lzdGVtIGRlcGVuZGVudCBzZWdtZW50cy4gICovCi0rICBubHNfdWludDMyIHN5c2RlcF9zZWdtZW50c19vZmZzZXQ7Ci0rICAvKiBUaGUgbnVtYmVyIG9mIHN5c3RlbSBkZXBlbmRlbnQgc3RyaW5ncyBwYWlycy4gICovCi0rICBubHNfdWludDMyIG5fc3lzZGVwX3N0cmluZ3M7Ci0rICAvKiBPZmZzZXQgb2YgdGFibGUgd2l0aCBzdGFydCBvZmZzZXRzIG9mIG9yaWdpbmFsIHN5c2RlcCBzdHJpbmdzLiAgKi8KLSsgIG5sc191aW50MzIgb3JpZ19zeXNkZXBfdGFiX29mZnNldDsKLSsgIC8qIE9mZnNldCBvZiB0YWJsZSB3aXRoIHN0YXJ0IG9mZnNldHMgb2YgdHJhbnNsYXRlZCBzeXNkZXAgc3RyaW5ncy4gICovCi0rICBubHNfdWludDMyIHRyYW5zX3N5c2RlcF90YWJfb2Zmc2V0OwotK307Ci0rCi0rLyogRGVzY3JpcHRvciBmb3Igc3RhdGljIHN0cmluZyBjb250YWluZWQgaW4gdGhlIGJpbmFyeSAubW8gZmlsZS4gICovCi0rc3RydWN0IHN0cmluZ19kZXNjCi0rewotKyAgLyogTGVuZ3RoIG9mIGFkZHJlc3NlZCBzdHJpbmcsIG5vdCBpbmNsdWRpbmcgdGhlIHRyYWlsaW5nIE5VTC4gICovCi0rICBubHNfdWludDMyIGxlbmd0aDsKLSsgIC8qIE9mZnNldCBvZiBzdHJpbmcgaW4gZmlsZS4gICovCi0rICBubHNfdWludDMyIG9mZnNldDsKLSt9OwotKwotKy8qIFRoZSBmb2xsb3dpbmcgYXJlIG9ubHkgdXNlZCBpbiAubW8gZmlsZXMgd2l0aCBtaW5vciByZXZpc2lvbiA+PSAxLiAgKi8KLSsKLSsvKiBEZXNjcmlwdG9yIGZvciBzeXN0ZW0gZGVwZW5kZW50IHN0cmluZyBzZWdtZW50LiAgKi8KLStzdHJ1Y3Qgc3lzZGVwX3NlZ21lbnQKLSt7Ci0rICAvKiBMZW5ndGggb2YgYWRkcmVzc2VkIHN0cmluZywgaW5jbHVkaW5nIHRoZSB0cmFpbGluZyBOVUwuICAqLwotKyAgbmxzX3VpbnQzMiBsZW5ndGg7Ci0rICAvKiBPZmZzZXQgb2Ygc3RyaW5nIGluIGZpbGUuICAqLwotKyAgbmxzX3VpbnQzMiBvZmZzZXQ7Ci0rfTsKLSsKLSsvKiBEZXNjcmlwdG9yIGZvciBzeXN0ZW0gZGVwZW5kZW50IHN0cmluZy4gICovCi0rc3RydWN0IHN5c2RlcF9zdHJpbmcKLSt7Ci0rICAvKiBPZmZzZXQgb2Ygc3RhdGljIHN0cmluZyBzZWdtZW50cyBpbiBmaWxlLiAgKi8KLSsgIG5sc191aW50MzIgb2Zmc2V0OwotKyAgLyogQWx0ZXJuYXRpbmcgc2VxdWVuY2Ugb2Ygc3RhdGljIGFuZCBzeXN0ZW0gZGVwZW5kZW50IHNlZ21lbnRzLgotKyAgICAgVGhlIGxhc3Qgc2VnbWVudCBpcyBhIHN0YXRpYyBzZWdtZW50LCBpbmNsdWRpbmcgdGhlIHRyYWlsaW5nIE5VTC4gICovCi0rICBzdHJ1Y3Qgc2VnbWVudF9wYWlyCi0rICB7Ci0rICAgIC8qIFNpemUgb2Ygc3RhdGljIHNlZ21lbnQuICAqLwotKyAgICBubHNfdWludDMyIHNlZ3NpemU7Ci0rICAgIC8qIFJlZmVyZW5jZSB0byBzeXN0ZW0gZGVwZW5kZW50IHN0cmluZyBzZWdtZW50LCBvciB+MCBhdCB0aGUgZW5kLiAgKi8KLSsgICAgbmxzX3VpbnQzMiBzeXNkZXByZWY7Ci0rICB9IHNlZ21lbnRzWzFdOwotK307Ci0rCi0rLyogTWFya2VyIGZvciB0aGUgZW5kIG9mIHRoZSBzZWdtZW50c1tdIGFycmF5LiAgVGhpcyBoYXMgdGhlIHZhbHVlIDB4RkZGRkZGRkYsCi0rICAgcmVnYXJkbGVzcyB3aGV0aGVyICdpbnQnIGlzIDE2IGJpdCwgMzIgYml0LCBvciA2NCBiaXQuICAqLwotKyNkZWZpbmUgU0VHTUVOVFNfRU5EICgobmxzX3VpbnQzMikgfjApCi0rCi0rLyogQEAgYmVnaW4gb2YgZXBpbG9nIEBAICovCi0rCi0rI2VuZGlmCS8qIGdldHRleHQuaCAgKi8KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9oYXNoLXN0cmluZy5oCTE5OTgtMDQtMjYgMDk6MjI6MzYuMDAwMDAwMDAwIC0wNDAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL2hhc2gtc3RyaW5nLmgJMjAwNC0wOS0xMiAxNDo0MDozNC40MzY3MzU3NzYgLTA0MDAKLUBAIC0xLDM1ICsxLDIzIEBACi0tLyogSW1wbGVtZW50cyBhIHN0cmluZyBoYXNoaW5nIGZ1bmN0aW9uLgotLSAgIENvcHlyaWdodCAoQykgMTk5NSwgMTk5NyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsvKiBEZXNjcmlwdGlvbiBvZiBHTlUgbWVzc2FnZSBjYXRhbG9nIGZvcm1hdDogc3RyaW5nIGhhc2hpbmcgZnVuY3Rpb24uCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk3LTE5OTgsIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSAgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0gICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLS0gICBMaWNlbnNlIGFsb25nIHdpdGggdGhlIEdOVSBDIExpYnJhcnk7IHNlZSB0aGUgZmlsZSBDT1BZSU5HLkxJQi4gIElmIG5vdCwKLS0gICB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsCi0tICAgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotLQotLSNpZmRlZiBIQVZFX1ZBTFVFU19ICi0tIyBpbmNsdWRlIDx2YWx1ZXMuaD4KLS0jZW5kaWYKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSAKLSAvKiBAQCBlbmQgb2YgcHJvbG9nIEBAICovCi0gCi0tI2lmbmRlZiBQQVJBTVMKLS0jIGlmIF9fU1REQ19fCi0tIyAgZGVmaW5lIFBBUkFNUyhBcmdzKSBBcmdzCi0tIyBlbHNlCi0tIyAgZGVmaW5lIFBBUkFNUyhBcmdzKSAoKQotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLSAvKiBXZSBhc3N1bWUgdG8gaGF2ZSBgdW5zaWduZWQgbG9uZyBpbnQnIHZhbHVlIHdpdGggYXQgbGVhc3QgMzIgYml0cy4gICovCi0gI2RlZmluZSBIQVNIV09SREJJVFMgMzIKLSAKLUBAIC0zNywxMSArMjUsOCBAQAotIC8qIERlZmluZXMgdGhlIHNvIGNhbGxlZCBgaGFzaHBqdycgZnVuY3Rpb24gYnkgUC5KLiBXZWluYmVyZ2VyCi0gICAgW3NlZSBBaG8vU2V0aGkvVWxsbWFuLCBDT01QSUxFUlM6IFByaW5jaXBsZXMsIFRlY2huaXF1ZXMgYW5kIFRvb2xzLAotICAgIDE5ODYsIDE5ODcgQmVsbCBUZWxlcGhvbmUgTGFib3JhdG9yaWVzLCBJbmMuXSAgKi8KLS1zdGF0aWMgdW5zaWduZWQgbG9uZyBoYXNoX3N0cmluZyBQQVJBTVMgKChjb25zdCBjaGFyICpfX3N0cl9wYXJhbSkpOwotLQotLXN0YXRpYyBpbmxpbmUgdW5zaWduZWQgbG9uZwotLWhhc2hfc3RyaW5nIChzdHJfcGFyYW0pCi0tICAgICBjb25zdCBjaGFyICpzdHJfcGFyYW07Ci0rc3RhdGljIGlubGluZSB1bnNpZ25lZCBsb25nIGludAotK2hhc2hfc3RyaW5nIChjb25zdCBjaGFyICpzdHJfcGFyYW0pCi0gewotICAgdW5zaWduZWQgbG9uZyBpbnQgaHZhbCwgZzsKLSAgIGNvbnN0IGNoYXIgKnN0ciA9IHN0cl9wYXJhbTsKLUBAIC01MSw4ICszNiw4IEBACi0gICB3aGlsZSAoKnN0ciAhPSAnXDAnKQotICAgICB7Ci0gICAgICAgaHZhbCA8PD0gNDsKLS0gICAgICBodmFsICs9ICh1bnNpZ25lZCBsb25nKSAqc3RyKys7Ci0tICAgICAgZyA9IGh2YWwgJiAoKHVuc2lnbmVkIGxvbmcpIDB4ZiA8PCAoSEFTSFdPUkRCSVRTIC0gNCkpOwotKyAgICAgIGh2YWwgKz0gKHVuc2lnbmVkIGNoYXIpICpzdHIrKzsKLSsgICAgICBnID0gaHZhbCAmICgodW5zaWduZWQgbG9uZyBpbnQpIDB4ZiA8PCAoSEFTSFdPUkRCSVRTIC0gNCkpOwotICAgICAgIGlmIChnICE9IDApCi0gCXsKLSAJICBodmFsIF49IGcgPj4gKEhBU0hXT1JEQklUUyAtIDgpOwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2ludGwtY29tcGF0LmMJMTk5OC0wNC0yNiAwOToyMDo1Mi4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvaW50bC1jb21wYXQuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjQ0MTczNTAxNiAtMDQwMAotQEAgLTEsNzYgKzEsMTMxIEBACi0gLyogaW50bC1jb21wYXQuYyAtIFN0dWIgZnVuY3Rpb25zIHRvIGNhbGwgZ2V0dGV4dCBmdW5jdGlvbnMgZnJvbSBHTlUgZ2V0dGV4dAotICAgIExpYnJhcnkuCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1IFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBDb3B5cmlnaHQgKEMpIDE5OTUsIDIwMDAtMjAwMyBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gCi0tVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS1pdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLXRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLS1hbnkgbGF0ZXIgdmVyc2lvbi4KLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0tVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS1NRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS1hbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotLUZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLSNpbmNsdWRlICJsaWJnZXR0ZXh0LmgiCi0rI2luY2x1ZGUgImdldHRleHRQLmgiCi0gCi0gLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotIAotKy8qIFRoaXMgZmlsZSByZWRpcmVjdHMgdGhlIGdldHRleHQgZnVuY3Rpb25zICh3aXRob3V0IHByZWZpeCkgdG8gdGhvc2UKLSsgICBkZWZpbmVkIGluIHRoZSBpbmNsdWRlZCBHTlUgbGliaW50bCBsaWJyYXJ5ICh3aXRoICJsaWJpbnRsXyIgcHJlZml4KS4KLSsgICBJdCBpcyBjb21waWxlZCBpbnRvIGxpYmludGwgaW4gb3JkZXIgdG8gbWFrZSB0aGUgQU1fR05VX0dFVFRFWFQgdGVzdAotKyAgIG9mIGdldHRleHQgPD0gMC4xMS4yIHdvcmsgd2l0aCB0aGUgbGliaW50bCBsaWJyYXJ5ID49IDAuMTEuMyB3aGljaAotKyAgIGhhcyB0aGUgcmVkaXJlY3Rpb25zIHByaW1hcmlseSBpbiB0aGUgPGxpYmludGwuaD4gaW5jbHVkZSBmaWxlLgotKyAgIEl0IGlzIGFsc28gY29tcGlsZWQgaW50byBsaWJnbnVpbnRsIHNvIHRoYXQgbGliZ251aW50bC5zbyBjYW4gYmUgdXNlZAotKyAgIGFzIExEX1BSRUxPQURhYmxlIGxpYnJhcnkgb24gZ2xpYmMgc3lzdGVtcywgdG8gcHJvdmlkZSB0aGUgZXh0cmEKLSsgICBmZWF0dXJlcyB0aGF0IHRoZSBmdW5jdGlvbnMgaW4gdGhlIGxpYmMgZG9uJ3QgaGF2ZSAobmFtZWx5LCBsb2dnaW5nKS4gICovCi0rCi0gCi0gI3VuZGVmIGdldHRleHQKLSAjdW5kZWYgZGdldHRleHQKLSAjdW5kZWYgZGNnZXR0ZXh0Ci0rI3VuZGVmIG5nZXR0ZXh0Ci0rI3VuZGVmIGRuZ2V0dGV4dAotKyN1bmRlZiBkY25nZXR0ZXh0Ci0gI3VuZGVmIHRleHRkb21haW4KLSAjdW5kZWYgYmluZHRleHRkb21haW4KLSsjdW5kZWYgYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQKLSsKLSsKLSsvKiBXaGVuIGJ1aWxkaW5nIGEgRExMLCB3ZSBtdXN0IGV4cG9ydCBzb21lIGZ1bmN0aW9ucy4gIE5vdGUgdGhhdCBiZWNhdXNlCi0rICAgdGhlIGZ1bmN0aW9ucyBhcmUgb25seSBkZWZpbmVkIGZvciBiaW5hcnkgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgd2UKLSsgICBkb24ndCBuZWVkIHRvIHVzZSBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW4gYW55IGNhc2UuICAqLwotKyNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIEJVSUxESU5HX0RMTAotKyMgZGVmaW5lIERMTF9FWFBPUlRFRCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKLSsjZWxzZQotKyMgZGVmaW5lIERMTF9FWFBPUlRFRAotKyNlbmRpZgotIAotIAotK0RMTF9FWFBPUlRFRAotIGNoYXIgKgotLWJpbmR0ZXh0ZG9tYWluIChkb21haW5uYW1lLCBkaXJuYW1lKQotLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKLS0gICAgIGNvbnN0IGNoYXIgKmRpcm5hbWU7Ci0rZ2V0dGV4dCAoY29uc3QgY2hhciAqbXNnaWQpCi0gewotLSAgcmV0dXJuIGJpbmR0ZXh0ZG9tYWluX18gKGRvbWFpbm5hbWUsIGRpcm5hbWUpOwotKyAgcmV0dXJuIGxpYmludGxfZ2V0dGV4dCAobXNnaWQpOwotIH0KLSAKLSAKLStETExfRVhQT1JURUQKLSBjaGFyICoKLS1kY2dldHRleHQgKGRvbWFpbm5hbWUsIG1zZ2lkLCBjYXRlZ29yeSkKLS0gICAgIGNvbnN0IGNoYXIgKmRvbWFpbm5hbWU7Ci0tICAgICBjb25zdCBjaGFyICptc2dpZDsKLS0gICAgIGludCBjYXRlZ29yeTsKLStkZ2V0dGV4dCAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwgY29uc3QgY2hhciAqbXNnaWQpCi0gewotLSAgcmV0dXJuIGRjZ2V0dGV4dF9fIChkb21haW5uYW1lLCBtc2dpZCwgY2F0ZWdvcnkpOwotKyAgcmV0dXJuIGxpYmludGxfZGdldHRleHQgKGRvbWFpbm5hbWUsIG1zZ2lkKTsKLSB9Ci0gCi0gCi0rRExMX0VYUE9SVEVECi0gY2hhciAqCi0tZGdldHRleHQgKGRvbWFpbm5hbWUsIG1zZ2lkKQotLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKLS0gICAgIGNvbnN0IGNoYXIgKm1zZ2lkOwotK2RjZ2V0dGV4dCAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwgY29uc3QgY2hhciAqbXNnaWQsIGludCBjYXRlZ29yeSkKLSB7Ci0tICByZXR1cm4gZGdldHRleHRfXyAoZG9tYWlubmFtZSwgbXNnaWQpOwotKyAgcmV0dXJuIGxpYmludGxfZGNnZXR0ZXh0IChkb21haW5uYW1lLCBtc2dpZCwgY2F0ZWdvcnkpOwotIH0KLSAKLSAKLStETExfRVhQT1JURUQKLSBjaGFyICoKLS1nZXR0ZXh0IChtc2dpZCkKLS0gICAgIGNvbnN0IGNoYXIgKm1zZ2lkOwotK25nZXR0ZXh0IChjb25zdCBjaGFyICptc2dpZDEsIGNvbnN0IGNoYXIgKm1zZ2lkMiwgdW5zaWduZWQgbG9uZyBpbnQgbikKLSB7Ci0tICByZXR1cm4gZ2V0dGV4dF9fIChtc2dpZCk7Ci0rICByZXR1cm4gbGliaW50bF9uZ2V0dGV4dCAobXNnaWQxLCBtc2dpZDIsIG4pOwotIH0KLSAKLSAKLStETExfRVhQT1JURUQKLSBjaGFyICoKLS10ZXh0ZG9tYWluIChkb21haW5uYW1lKQotLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKLStkbmdldHRleHQgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0rCSAgIGNvbnN0IGNoYXIgKm1zZ2lkMSwgY29uc3QgY2hhciAqbXNnaWQyLCB1bnNpZ25lZCBsb25nIGludCBuKQotIHsKLS0gIHJldHVybiB0ZXh0ZG9tYWluX18gKGRvbWFpbm5hbWUpOwotKyAgcmV0dXJuIGxpYmludGxfZG5nZXR0ZXh0IChkb21haW5uYW1lLCBtc2dpZDEsIG1zZ2lkMiwgbik7Ci0rfQotKwotKwotK0RMTF9FWFBPUlRFRAotK2NoYXIgKgotK2RjbmdldHRleHQgKGNvbnN0IGNoYXIgKmRvbWFpbm5hbWUsCi0rCSAgICBjb25zdCBjaGFyICptc2dpZDEsIGNvbnN0IGNoYXIgKm1zZ2lkMiwgdW5zaWduZWQgbG9uZyBpbnQgbiwKLSsJICAgIGludCBjYXRlZ29yeSkKLSt7Ci0rICByZXR1cm4gbGliaW50bF9kY25nZXR0ZXh0IChkb21haW5uYW1lLCBtc2dpZDEsIG1zZ2lkMiwgbiwgY2F0ZWdvcnkpOwotK30KLSsKLSsKLStETExfRVhQT1JURUQKLStjaGFyICoKLSt0ZXh0ZG9tYWluIChjb25zdCBjaGFyICpkb21haW5uYW1lKQotK3sKLSsgIHJldHVybiBsaWJpbnRsX3RleHRkb21haW4gKGRvbWFpbm5hbWUpOwotK30KLSsKLSsKLStETExfRVhQT1JURUQKLStjaGFyICoKLStiaW5kdGV4dGRvbWFpbiAoY29uc3QgY2hhciAqZG9tYWlubmFtZSwgY29uc3QgY2hhciAqZGlybmFtZSkKLSt7Ci0rICByZXR1cm4gbGliaW50bF9iaW5kdGV4dGRvbWFpbiAoZG9tYWlubmFtZSwgZGlybmFtZSk7Ci0rfQotKwotKwotK0RMTF9FWFBPUlRFRAotK2NoYXIgKgotK2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IChjb25zdCBjaGFyICpkb21haW5uYW1lLCBjb25zdCBjaGFyICpjb2Rlc2V0KQotK3sKLSsgIHJldHVybiBsaWJpbnRsX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IChkb21haW5uYW1lLCBjb2Rlc2V0KTsKLSB9Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvbDEwbmZsaXN0LmMJMTk5OC0wNC0yNiAwOToyMjozNy4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvbDEwbmZsaXN0LmMJMjAwNC0wOS0xMiAxNDo0MDozNC40NTc3MzI1ODQgLTA0MDAKLUBAIC0xLDUyICsxLDQwIEBACi0tLyogSGFuZGxlIGxpc3Qgb2YgbmVlZGVkIG1lc3NhZ2UgY2F0YWxvZ3MKLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCi0rLyogQ29weXJpZ2h0IChDKSAxOTk1LTE5OTksIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBDb250cmlidXRlZCBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCi0gCi0tICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0gICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0gICAgYW55IGxhdGVyIHZlcnNpb24uCi0gCi0gICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0gICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotIAotLSAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLS0gICBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKy8qIFRlbGwgZ2xpYmMncyA8c3RyaW5nLmg+IHRvIHByb3ZpZGUgYSBwcm90b3R5cGUgZm9yIHN0cGNweSgpLgotKyAgIFRoaXMgbXVzdCBjb21lIGJlZm9yZSA8Y29uZmlnLmg+IGJlY2F1c2UgPGNvbmZpZy5oPiBtYXkgaW5jbHVkZQotKyAgIDxmZWF0dXJlcy5oPiwgYW5kIG9uY2UgPGZlYXR1cmVzLmg+IGhhcyBiZWVuIGluY2x1ZGVkLCBpdCdzIHRvbyBsYXRlLiAgKi8KLSsjaWZuZGVmIF9HTlVfU09VUkNFCi0rIyBkZWZpbmUgX0dOVV9TT1VSQ0UJMQotKyNlbmRpZgotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLS0KLS0jaWYgZGVmaW5lZCBIQVZFX1NUUklOR19IIHx8IGRlZmluZWQgX0xJQkMKLS0jIGlmbmRlZiBfR05VX1NPVVJDRQotLSMgIGRlZmluZSBfR05VX1NPVVJDRQkxCi0tIyBlbmRpZgotLSMgaW5jbHVkZSA8c3RyaW5nLmg+Ci0tI2Vsc2UKLS0jIGluY2x1ZGUgPHN0cmluZ3MuaD4KLS0jIGlmbmRlZiBtZW1jcHkKLS0jICBkZWZpbmUgbWVtY3B5KERzdCwgU3JjLCBOdW0pIGJjb3B5IChTcmMsIERzdCwgTnVtKQotLSMgZW5kaWYKLS0jZW5kaWYKLS0jaWYgIUhBVkVfU1RSQ0hSICYmICFkZWZpbmVkIF9MSUJDCi0tIyBpZm5kZWYgc3RyY2hyCi0tIyAgZGVmaW5lIHN0cmNociBpbmRleAotLSMgZW5kaWYKLS0jZW5kaWYKLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gCi0gI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX0FSR1pfSAotICMgaW5jbHVkZSA8YXJnei5oPgotICNlbmRpZgotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0KLS0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQwotLSMgaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2VuZGlmCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotIAotICNpbmNsdWRlICJsb2FkaW5mby5oIgotIAotQEAgLTY1LDIzICs1MywzOSBAQAotIC8qIFJlbmFtZSB0aGUgbm9uIEFOU0kgQyBmdW5jdGlvbnMuICBUaGlzIGlzIHJlcXVpcmVkIGJ5IHRoZSBzdGFuZGFyZAotICAgIGJlY2F1c2Ugc29tZSBBTlNJIEMgZnVuY3Rpb25zIHdpbGwgcmVxdWlyZSBsaW5raW5nIHdpdGggdGhpcyBvYmplY3QKLSAgICBmaWxlIGFuZCB0aGUgbmFtZSBzcGFjZSBtdXN0IG5vdCBiZSBwb2xsdXRlZC4gICovCi0tIyBkZWZpbmUgc3RwY3B5KGRlc3QsIHNyYykgX19zdHBjcHkoZGVzdCwgc3JjKQotKyMgaWZuZGVmIHN0cGNweQotKyMgIGRlZmluZSBzdHBjcHkoZGVzdCwgc3JjKSBfX3N0cGNweShkZXN0LCBzcmMpCi0rIyBlbmRpZgotICNlbHNlCi0gIyBpZm5kZWYgSEFWRV9TVFBDUFkKLS1zdGF0aWMgY2hhciAqc3RwY3B5IFBBUkFNUyAoKGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYykpOwotK3N0YXRpYyBjaGFyICpzdHBjcHkgKGNoYXIgKmRlc3QsIGNvbnN0IGNoYXIgKnNyYyk7Ci0gIyBlbmRpZgotICNlbmRpZgotIAotKy8qIFBhdGhuYW1lIHN1cHBvcnQuCi0rICAgSVNTTEFTSChDKSAgICAgICAgICAgdGVzdHMgd2hldGhlciBDIGlzIGEgZGlyZWN0b3J5IHNlcGFyYXRvciBjaGFyYWN0ZXIuCi0rICAgSVNfQUJTT0xVVEVfUEFUSChQKSAgdGVzdHMgd2hldGhlciBQIGlzIGFuIGFic29sdXRlIHBhdGguICBJZiBpdCBpcyBub3QsCi0rICAgICAgICAgICAgICAgICAgICAgICAgaXQgbWF5IGJlIGNvbmNhdGVuYXRlZCB0byBhIGRpcmVjdG9yeSBwYXRobmFtZS4KLSsgKi8KLSsjaWYgZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18gfHwgZGVmaW5lZCBfX0VNWF9fIHx8IGRlZmluZWQgX19ESkdQUF9fCi0rICAvKiBXaW4zMiwgT1MvMiwgRE9TICovCi0rIyBkZWZpbmUgSVNTTEFTSChDKSAoKEMpID09ICcvJyB8fCAoQykgPT0gJ1xcJykKLSsjIGRlZmluZSBIQVNfREVWSUNFKFApIFwKLSsgICAgKCgoKFApWzBdID49ICdBJyAmJiAoUClbMF0gPD0gJ1onKSB8fCAoKFApWzBdID49ICdhJyAmJiAoUClbMF0gPD0gJ3onKSkgXAotKyAgICAgJiYgKFApWzFdID09ICc6JykKLSsjIGRlZmluZSBJU19BQlNPTFVURV9QQVRIKFApIChJU1NMQVNIICgoUClbMF0pIHx8IEhBU19ERVZJQ0UgKFApKQotKyNlbHNlCi0rICAvKiBVbml4ICovCi0rIyBkZWZpbmUgSVNTTEFTSChDKSAoKEMpID09ICcvJykKLSsjIGRlZmluZSBJU19BQlNPTFVURV9QQVRIKFApIElTU0xBU0ggKChQKVswXSkKLSsjZW5kaWYKLSsKLSAvKiBEZWZpbmUgZnVuY3Rpb24gd2hpY2ggYXJlIHVzdWFsbHkgbm90IGF2YWlsYWJsZS4gICovCi0gCi0gI2lmICFkZWZpbmVkIF9MSUJDICYmICFkZWZpbmVkIEhBVkVfX19BUkdaX0NPVU5UCi0gLyogUmV0dXJucyB0aGUgbnVtYmVyIG9mIHN0cmluZ3MgaW4gQVJHWi4gICovCi0tc3RhdGljIHNpemVfdCBhcmd6X2NvdW50X18gUEFSQU1TICgoY29uc3QgY2hhciAqYXJneiwgc2l6ZV90IGxlbikpOwotLQotIHN0YXRpYyBzaXplX3QKLS1hcmd6X2NvdW50X18gKGFyZ3osIGxlbikKLS0gICAgIGNvbnN0IGNoYXIgKmFyZ3o7Ci0tICAgICBzaXplX3QgbGVuOwotK2FyZ3pfY291bnRfXyAoY29uc3QgY2hhciAqYXJneiwgc2l6ZV90IGxlbikKLSB7Ci0gICBzaXplX3QgY291bnQgPSAwOwotICAgd2hpbGUgKGxlbiA+IDApCi1AQCAtOTUsMTggKzk5LDE3IEBACi0gfQotICMgdW5kZWYgX19hcmd6X2NvdW50Ci0gIyBkZWZpbmUgX19hcmd6X2NvdW50KGFyZ3osIGxlbikgYXJnel9jb3VudF9fIChhcmd6LCBsZW4pCi0rI2Vsc2UKLSsjIGlmZGVmIF9MSUJDCi0rIyAgZGVmaW5lIF9fYXJnel9jb3VudChhcmd6LCBsZW4pIElOVFVTRShfX2FyZ3pfY291bnQpIChhcmd6LCBsZW4pCi0rIyBlbmRpZgotICNlbmRpZgkvKiAhX0xJQkMgJiYgIUhBVkVfX19BUkdaX0NPVU5UICovCi0gCi0gI2lmICFkZWZpbmVkIF9MSUJDICYmICFkZWZpbmVkIEhBVkVfX19BUkdaX1NUUklOR0lGWQotIC8qIE1ha2UgJ1wwJyBzZXBhcmF0ZWQgYXJnIHZlY3RvciBBUkdaIHByaW50YWJsZSBieSBjb252ZXJ0aW5nIGFsbCB0aGUgJ1wwJ3MKLSAgICBleGNlcHQgdGhlIGxhc3QgaW50byB0aGUgY2hhcmFjdGVyIFNFUC4gICovCi0tc3RhdGljIHZvaWQgYXJnel9zdHJpbmdpZnlfXyBQQVJBTVMgKChjaGFyICphcmd6LCBzaXplX3QgbGVuLCBpbnQgc2VwKSk7Ci0tCi0gc3RhdGljIHZvaWQKLS1hcmd6X3N0cmluZ2lmeV9fIChhcmd6LCBsZW4sIHNlcCkKLS0gICAgIGNoYXIgKmFyZ3o7Ci0tICAgICBzaXplX3QgbGVuOwotLSAgICAgaW50IHNlcDsKLSthcmd6X3N0cmluZ2lmeV9fIChjaGFyICphcmd6LCBzaXplX3QgbGVuLCBpbnQgc2VwKQotIHsKLSAgIHdoaWxlIChsZW4gPiAwKQotICAgICB7Ci1AQCAtMTE5LDE3ICsxMjIsMTYgQEAKLSB9Ci0gIyB1bmRlZiBfX2FyZ3pfc3RyaW5naWZ5Ci0gIyBkZWZpbmUgX19hcmd6X3N0cmluZ2lmeShhcmd6LCBsZW4sIHNlcCkgYXJnel9zdHJpbmdpZnlfXyAoYXJneiwgbGVuLCBzZXApCi0rI2Vsc2UKLSsjIGlmZGVmIF9MSUJDCi0rIyAgZGVmaW5lIF9fYXJnel9zdHJpbmdpZnkoYXJneiwgbGVuLCBzZXApIFwKLSsgIElOVFVTRShfX2FyZ3pfc3RyaW5naWZ5KSAoYXJneiwgbGVuLCBzZXApCi0rIyBlbmRpZgotICNlbmRpZgkvKiAhX0xJQkMgJiYgIUhBVkVfX19BUkdaX1NUUklOR0lGWSAqLwotIAotICNpZiAhZGVmaW5lZCBfTElCQyAmJiAhZGVmaW5lZCBIQVZFX19fQVJHWl9ORVhUCi0tc3RhdGljIGNoYXIgKmFyZ3pfbmV4dF9fIFBBUkFNUyAoKGNoYXIgKmFyZ3osIHNpemVfdCBhcmd6X2xlbiwKLS0JCQkJICBjb25zdCBjaGFyICplbnRyeSkpOwotLQotIHN0YXRpYyBjaGFyICoKLS1hcmd6X25leHRfXyAoYXJneiwgYXJnel9sZW4sIGVudHJ5KQotLSAgICAgY2hhciAqYXJnejsKLS0gICAgIHNpemVfdCBhcmd6X2xlbjsKLS0gICAgIGNvbnN0IGNoYXIgKmVudHJ5OwotK2FyZ3pfbmV4dF9fIChjaGFyICphcmd6LCBzaXplX3QgYXJnel9sZW4sIGNvbnN0IGNoYXIgKmVudHJ5KQotIHsKLSAgIGlmIChlbnRyeSkKLSAgICAgewotQEAgLTE1MCwxMSArMTUyLDggQEAKLSAKLSAKLSAvKiBSZXR1cm4gbnVtYmVyIG9mIGJpdHMgc2V0IGluIFguICAqLwotLXN0YXRpYyBpbnQgcG9wIFBBUkFNUyAoKGludCB4KSk7Ci0tCi0gc3RhdGljIGlubGluZSBpbnQKLS1wb3AgKHgpCi0tICAgICBpbnQgeDsKLStwb3AgKGludCB4KQotIHsKLSAgIC8qIFdlIGFzc3VtZSB0aGF0IG5vIG1vcmUgdGhhbiAxNiBiaXRzIGFyZSB1c2VkLiAgKi8KLSAgIHggPSAoKHggJiB+MHg1NTU1KSA+PiAxKSArICh4ICYgMHg1NTU1KTsKLUBAIC0xNjcsMzEgKzE2NiwyNyBAQAotIAotIAwKLSBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoKLS1fbmxfbWFrZV9sMTBuZmxpc3QgKGwxMG5maWxlX2xpc3QsIGRpcmxpc3QsIGRpcmxpc3RfbGVuLCBtYXNrLCBsYW5ndWFnZSwKLS0JCSAgICB0ZXJyaXRvcnksIGNvZGVzZXQsIG5vcm1hbGl6ZWRfY29kZXNldCwgbW9kaWZpZXIsIHNwZWNpYWwsCi0tCQkgICAgc3BvbnNvciwgcmV2aXNpb24sIGZpbGVuYW1lLCBkb19hbGxvY2F0ZSkKLS0gICAgIHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKipsMTBuZmlsZV9saXN0OwotLSAgICAgY29uc3QgY2hhciAqZGlybGlzdDsKLS0gICAgIHNpemVfdCBkaXJsaXN0X2xlbjsKLS0gICAgIGludCBtYXNrOwotLSAgICAgY29uc3QgY2hhciAqbGFuZ3VhZ2U7Ci0tICAgICBjb25zdCBjaGFyICp0ZXJyaXRvcnk7Ci0tICAgICBjb25zdCBjaGFyICpjb2Rlc2V0OwotLSAgICAgY29uc3QgY2hhciAqbm9ybWFsaXplZF9jb2Rlc2V0OwotLSAgICAgY29uc3QgY2hhciAqbW9kaWZpZXI7Ci0tICAgICBjb25zdCBjaGFyICpzcGVjaWFsOwotLSAgICAgY29uc3QgY2hhciAqc3BvbnNvcjsKLS0gICAgIGNvbnN0IGNoYXIgKnJldmlzaW9uOwotLSAgICAgY29uc3QgY2hhciAqZmlsZW5hbWU7Ci0tICAgICBpbnQgZG9fYWxsb2NhdGU7Ci0rX25sX21ha2VfbDEwbmZsaXN0IChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoqbDEwbmZpbGVfbGlzdCwKLSsJCSAgICBjb25zdCBjaGFyICpkaXJsaXN0LCBzaXplX3QgZGlybGlzdF9sZW4sCi0rCQkgICAgaW50IG1hc2ssIGNvbnN0IGNoYXIgKmxhbmd1YWdlLCBjb25zdCBjaGFyICp0ZXJyaXRvcnksCi0rCQkgICAgY29uc3QgY2hhciAqY29kZXNldCwgY29uc3QgY2hhciAqbm9ybWFsaXplZF9jb2Rlc2V0LAotKwkJICAgIGNvbnN0IGNoYXIgKm1vZGlmaWVyLCBjb25zdCBjaGFyICpzcGVjaWFsLAotKwkJICAgIGNvbnN0IGNoYXIgKnNwb25zb3IsIGNvbnN0IGNoYXIgKnJldmlzaW9uLAotKwkJICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZG9fYWxsb2NhdGUpCi0gewotICAgY2hhciAqYWJzX2ZpbGVuYW1lOwotLSAgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqbGFzdCA9IE5VTEw7Ci0rICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoqbGFzdHA7Ci0gICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpyZXR2YWw7Ci0gICBjaGFyICpjcDsKLSsgIHNpemVfdCBkaXJsaXN0X2NvdW50OwotICAgc2l6ZV90IGVudHJpZXM7Ci0gICBpbnQgY250OwotIAotKyAgLyogSWYgTEFOR1VBR0UgY29udGFpbnMgYW4gYWJzb2x1dGUgZGlyZWN0b3J5IHNwZWNpZmljYXRpb24sIHdlIGlnbm9yZQotKyAgICAgRElSTElTVC4gICovCi0rICBpZiAoSVNfQUJTT0xVVEVfUEFUSCAobGFuZ3VhZ2UpKQotKyAgICBkaXJsaXN0X2xlbiA9IDA7Ci0rCi0gICAvKiBBbGxvY2F0ZSByb29tIGZvciB0aGUgZnVsbCBmaWxlIG5hbWUuICAqLwotICAgYWJzX2ZpbGVuYW1lID0gKGNoYXIgKikgbWFsbG9jIChkaXJsaXN0X2xlbgotIAkJCQkgICsgc3RybGVuIChsYW5ndWFnZSkKLUBAIC0yMDksNyArMjA0LDcgQEAKLSAJCQkJICArICgoKG1hc2sgJiBDRU5fU1BPTlNPUikgIT0gMAotIAkJCQkgICAgICB8fCAobWFzayAmIENFTl9SRVZJU0lPTikgIT0gMCkKLSAJCQkJICAgICA/ICgxICsgKChtYXNrICYgQ0VOX1NQT05TT1IpICE9IDAKLS0JCQkJCSAgICAgPyBzdHJsZW4gKHNwb25zb3IpICsgMSA6IDApCi0rCQkJCQkgICAgID8gc3RybGVuIChzcG9uc29yKSA6IDApCi0gCQkJCQkrICgobWFzayAmIENFTl9SRVZJU0lPTikgIT0gMAotIAkJCQkJICAgPyBzdHJsZW4gKHJldmlzaW9uKSArIDEgOiAwKSkgOiAwKQotIAkJCQkgICsgMSArIHN0cmxlbiAoZmlsZW5hbWUpICsgMSk7Ci1AQCAtMjE3LDE0ICsyMTIsMTYgQEAKLSAgIGlmIChhYnNfZmlsZW5hbWUgPT0gTlVMTCkKLSAgICAgcmV0dXJuIE5VTEw7Ci0gCi0tICByZXR2YWwgPSBOVUxMOwotLSAgbGFzdCA9IE5VTEw7Ci0tCi0gICAvKiBDb25zdHJ1Y3QgZmlsZSBuYW1lLiAgKi8KLS0gIG1lbWNweSAoYWJzX2ZpbGVuYW1lLCBkaXJsaXN0LCBkaXJsaXN0X2xlbik7Ci0tICBfX2FyZ3pfc3RyaW5naWZ5IChhYnNfZmlsZW5hbWUsIGRpcmxpc3RfbGVuLCAnOicpOwotLSAgY3AgPSBhYnNfZmlsZW5hbWUgKyAoZGlybGlzdF9sZW4gLSAxKTsKLS0gICpjcCsrID0gJy8nOwotKyAgY3AgPSBhYnNfZmlsZW5hbWU7Ci0rICBpZiAoZGlybGlzdF9sZW4gPiAwKQotKyAgICB7Ci0rICAgICAgbWVtY3B5IChjcCwgZGlybGlzdCwgZGlybGlzdF9sZW4pOwotKyAgICAgIF9fYXJnel9zdHJpbmdpZnkgKGNwLCBkaXJsaXN0X2xlbiwgUEFUSF9TRVBBUkFUT1IpOwotKyAgICAgIGNwICs9IGRpcmxpc3RfbGVuOwotKyAgICAgIGNwWy0xXSA9ICcvJzsKLSsgICAgfQotKwotICAgY3AgPSBzdHBjcHkgKGNwLCBsYW5ndWFnZSk7Ci0gCi0gICBpZiAoKG1hc2sgJiBURVJSSVRPUlkpICE9IDApCi1AQCAtMjcxLDcgKzI2OCw3IEBACi0gCi0gICAvKiBMb29rIGluIGxpc3Qgb2YgYWxyZWFkeSBsb2FkZWQgZG9tYWlucyB3aGV0aGVyIGl0IGlzIGFscmVhZHkKLSAgICAgIGF2YWlsYWJsZS4gICovCi0tICBsYXN0ID0gTlVMTDsKLSsgIGxhc3RwID0gbDEwbmZpbGVfbGlzdDsKLSAgIGZvciAocmV0dmFsID0gKmwxMG5maWxlX2xpc3Q7IHJldHZhbCAhPSBOVUxMOyByZXR2YWwgPSByZXR2YWwtPm5leHQpCi0gICAgIGlmIChyZXR2YWwtPmZpbGVuYW1lICE9IE5VTEwpCi0gICAgICAgewotQEAgLTI4Niw3ICsyODMsNyBAQAotIAkgICAgYnJlYWs7Ci0gCSAgfQotIAotLQlsYXN0ID0gcmV0dmFsOwotKwlsYXN0cCA9ICZyZXR2YWwtPm5leHQ7Ci0gICAgICAgfQotIAotICAgaWYgKHJldHZhbCAhPSBOVUxMIHx8IGRvX2FsbG9jYXRlID09IDApCi1AQCAtMjk1LDQ4ICsyOTIsNjYgQEAKLSAgICAgICByZXR1cm4gcmV0dmFsOwotICAgICB9Ci0gCi0tICByZXR2YWwgPSAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKQotLSAgICBtYWxsb2MgKHNpemVvZiAoKnJldHZhbCkgKyAoX19hcmd6X2NvdW50IChkaXJsaXN0LCBkaXJsaXN0X2xlbikKLS0JCQkJKiAoMSA8PCBwb3AgKG1hc2spKQotLQkJCQkqIHNpemVvZiAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKSkpOwotKyAgZGlybGlzdF9jb3VudCA9IChkaXJsaXN0X2xlbiA+IDAgPyBfX2FyZ3pfY291bnQgKGRpcmxpc3QsIGRpcmxpc3RfbGVuKSA6IDEpOwotKwotKyAgLyogQWxsb2NhdGUgYSBuZXcgbG9hZGVkX2wxMG5maWxlLiAgKi8KLSsgIHJldHZhbCA9Ci0rICAgIChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICopCi0rICAgIG1hbGxvYyAoc2l6ZW9mICgqcmV0dmFsKQotKwkgICAgKyAoKChkaXJsaXN0X2NvdW50IDw8IHBvcCAobWFzaykpICsgKGRpcmxpc3RfY291bnQgPiAxID8gMSA6IDApKQotKwkgICAgICAgKiBzaXplb2YgKHN0cnVjdCBsb2FkZWRfbDEwbmZpbGUgKikpKTsKLSAgIGlmIChyZXR2YWwgPT0gTlVMTCkKLSAgICAgcmV0dXJuIE5VTEw7Ci0gCi0gICByZXR2YWwtPmZpbGVuYW1lID0gYWJzX2ZpbGVuYW1lOwotLSAgcmV0dmFsLT5kZWNpZGVkID0gKF9fYXJnel9jb3VudCAoZGlybGlzdCwgZGlybGlzdF9sZW4pICE9IDEKLSsKLSsgIC8qIFdlIHNldCByZXR2YWwtPmRhdGEgdG8gTlVMTCBoZXJlOyBpdCBpcyBmaWxsZWQgaW4gbGF0ZXIuCi0rICAgICBTZXR0aW5nIHJldHZhbC0+ZGVjaWRlZCB0byAxIGhlcmUgbWVhbnMgdGhhdCByZXR2YWwgZG9lcyBub3QKLSsgICAgIGNvcnJlc3BvbmQgdG8gYSByZWFsIGZpbGUgKGRpcmxpc3RfY291bnQgPiAxKSBvciBpcyBub3Qgd29ydGgKLSsgICAgIGxvb2tpbmcgdXAgKGlmIGFuIHVubm9ybWFsaXplZCBjb2Rlc2V0IHdhcyBzcGVjaWZpZWQpLiAgKi8KLSsgIHJldHZhbC0+ZGVjaWRlZCA9IChkaXJsaXN0X2NvdW50ID4gMQotIAkJICAgICB8fCAoKG1hc2sgJiBYUEdfQ09ERVNFVCkgIT0gMAotIAkJCSAmJiAobWFzayAmIFhQR19OT1JNX0NPREVTRVQpICE9IDApKTsKLSAgIHJldHZhbC0+ZGF0YSA9IE5VTEw7Ci0gCi0tICBpZiAobGFzdCA9PSBOVUxMKQotLSAgICB7Ci0tICAgICAgcmV0dmFsLT5uZXh0ID0gKmwxMG5maWxlX2xpc3Q7Ci0tICAgICAgKmwxMG5maWxlX2xpc3QgPSByZXR2YWw7Ci0tICAgIH0KLS0gIGVsc2UKLS0gICAgewotLSAgICAgIHJldHZhbC0+bmV4dCA9IGxhc3QtPm5leHQ7Ci0tICAgICAgbGFzdC0+bmV4dCA9IHJldHZhbDsKLS0gICAgfQotKyAgcmV0dmFsLT5uZXh0ID0gKmxhc3RwOwotKyAgKmxhc3RwID0gcmV0dmFsOwotIAotICAgZW50cmllcyA9IDA7Ci0tICAvKiBJZiB0aGUgRElSTElTVCBpcyBhIHJlYWwgbGlzdCB0aGUgUkVUVkFMIGVudHJ5IGNvcnJlc3BvbmRzIG5vdCB0bwotLSAgICAgYSByZWFsIGZpbGUuICBTbyB3ZSBoYXZlIHRvIHVzZSB0aGUgRElSTElTVCBzZXBhcmF0aW9uIG1lY2hhbmlzbQotLSAgICAgb2YgdGhlIGlubmVyIGxvb3AuICAqLwotLSAgY250ID0gX19hcmd6X2NvdW50IChkaXJsaXN0LCBkaXJsaXN0X2xlbikgPT0gMSA/IG1hc2sgLSAxIDogbWFzazsKLS0gIGZvciAoOyBjbnQgPj0gMDsgLS1jbnQpCi0rICAvKiBSZWN1cnNlIHRvIGZpbGwgdGhlIGluaGVyaXRhbmNlIGxpc3Qgb2YgUkVUVkFMLgotKyAgICAgSWYgdGhlIERJUkxJU1QgaXMgYSByZWFsIGxpc3QgKGkuZS4gRElSTElTVF9DT1VOVCA+IDEpLCB0aGUgUkVUVkFMCi0rICAgICBlbnRyeSBkb2VzIG5vdCBjb3JyZXNwb25kIHRvIGEgcmVhbCBmaWxlOyByZXR2YWwtPmZpbGVuYW1lIGNvbnRhaW5zCi0rICAgICBjb2xvbnMuICBJbiB0aGlzIGNhc2Ugd2UgbG9vcCBhY3Jvc3MgYWxsIGVsZW1lbnRzIG9mIERJUkxJU1QgYW5kCi0rICAgICBhY3Jvc3MgYWxsIGJpdCBwYXR0ZXJucyBkb21pbmF0ZWQgYnkgTUFTSy4KLSsgICAgIElmIHRoZSBESVJMSVNUIGlzIGEgc2luZ2xlIGRpcmVjdG9yeSBvciBlbnRpcmVseSByZWR1bmRhbnQgKGkuZS4KLSsgICAgIERJUkxJU1RfQ09VTlQgPT0gMSksIHdlIGxvb3AgYWNyb3NzIGFsbCBiaXQgcGF0dGVybnMgZG9taW5hdGVkIGJ5Ci0rICAgICBNQVNLLCBleGNsdWRpbmcgTUFTSyBpdHNlbGYuCi0rICAgICBJbiBlaXRoZXIgY2FzZSwgd2UgbG9vcCBkb3duIGZyb20gTUFTSyB0byAwLiAgVGhpcyBoYXMgdGhlIGVmZmVjdAotKyAgICAgdGhhdCB0aGUgZXh0cmEgYml0cyBpbiB0aGUgbG9jYWxlIG5hbWUgYXJlIGRyb3BwZWQgaW4gdGhpcyBvcmRlcjoKLSsgICAgIGZpcnN0IHRoZSBtb2RpZmllciwgdGhlbiB0aGUgdGVycml0b3J5LCB0aGVuIHRoZSBjb2Rlc2V0LCB0aGVuIHRoZQotKyAgICAgbm9ybWFsaXplZF9jb2Rlc2V0LiAgKi8KLSsgIGZvciAoY250ID0gZGlybGlzdF9jb3VudCA+IDEgPyBtYXNrIDogbWFzayAtIDE7IGNudCA+PSAwOyAtLWNudCkKLSAgICAgaWYgKChjbnQgJiB+bWFzaykgPT0gMAotIAkmJiAoKGNudCAmIENFTl9TUEVDSUZJQykgPT0gMCB8fCAoY250ICYgWFBHX1NQRUNJRklDKSA9PSAwKQotIAkmJiAoKGNudCAmIFhQR19DT0RFU0VUKSA9PSAwIHx8IChjbnQgJiBYUEdfTk9STV9DT0RFU0VUKSA9PSAwKSkKLSAgICAgICB7Ci0tCS8qIEl0ZXJhdGUgb3ZlciBhbGwgZWxlbWVudHMgb2YgdGhlIERJUkxJU1QuICAqLwotLQljaGFyICpkaXIgPSBOVUxMOwotKwlpZiAoZGlybGlzdF9jb3VudCA+IDEpCi0rCSAgewotKwkgICAgLyogSXRlcmF0ZSBvdmVyIGFsbCBlbGVtZW50cyBvZiB0aGUgRElSTElTVC4gICovCi0rCSAgICBjaGFyICpkaXIgPSBOVUxMOwotIAotLQl3aGlsZSAoKGRpciA9IF9fYXJnel9uZXh0ICgoY2hhciAqKSBkaXJsaXN0LCBkaXJsaXN0X2xlbiwgZGlyKSkKLS0JICAgICAgICE9IE5VTEwpCi0rCSAgICB3aGlsZSAoKGRpciA9IF9fYXJnel9uZXh0ICgoY2hhciAqKSBkaXJsaXN0LCBkaXJsaXN0X2xlbiwgZGlyKSkKLSsJCSAgICE9IE5VTEwpCi0rCSAgICAgIHJldHZhbC0+c3VjY2Vzc29yW2VudHJpZXMrK10KLSsJCT0gX25sX21ha2VfbDEwbmZsaXN0IChsMTBuZmlsZV9saXN0LCBkaXIsIHN0cmxlbiAoZGlyKSArIDEsCi0rCQkJCSAgICAgIGNudCwgbGFuZ3VhZ2UsIHRlcnJpdG9yeSwgY29kZXNldCwKLSsJCQkJICAgICAgbm9ybWFsaXplZF9jb2Rlc2V0LCBtb2RpZmllciwgc3BlY2lhbCwKLSsJCQkJICAgICAgc3BvbnNvciwgcmV2aXNpb24sIGZpbGVuYW1lLCAxKTsKLSsJICB9Ci0rCWVsc2UKLSAJICByZXR2YWwtPnN1Y2Nlc3NvcltlbnRyaWVzKytdCi0tCSAgICA9IF9ubF9tYWtlX2wxMG5mbGlzdCAobDEwbmZpbGVfbGlzdCwgZGlyLCBzdHJsZW4gKGRpcikgKyAxLCBjbnQsCi0tCQkJCSAgbGFuZ3VhZ2UsIHRlcnJpdG9yeSwgY29kZXNldCwKLSsJICAgID0gX25sX21ha2VfbDEwbmZsaXN0IChsMTBuZmlsZV9saXN0LCBkaXJsaXN0LCBkaXJsaXN0X2xlbiwKLSsJCQkJICBjbnQsIGxhbmd1YWdlLCB0ZXJyaXRvcnksIGNvZGVzZXQsCi0gCQkJCSAgbm9ybWFsaXplZF9jb2Rlc2V0LCBtb2RpZmllciwgc3BlY2lhbCwKLSAJCQkJICBzcG9uc29yLCByZXZpc2lvbiwgZmlsZW5hbWUsIDEpOwotICAgICAgIH0KLUBAIC0zNDcsMTEgKzM2MiwxMCBAQAotIAwKLSAvKiBOb3JtYWxpemUgY29kZXNldCBuYW1lLiAgVGhlcmUgaXMgbm8gc3RhbmRhcmQgZm9yIHRoZSBjb2Rlc2V0Ci0gICAgbmFtZXMuICBOb3JtYWxpemF0aW9uIGFsbG93cyB0aGUgdXNlciB0byB1c2UgYW55IG9mIHRoZSBjb21tb24KLS0gICBuYW1lcy4gICovCi0rICAgbmFtZXMuICBUaGUgcmV0dXJuIHZhbHVlIGlzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBhbmQgaGFzIHRvIGJlCi0rICAgZnJlZWQgYnkgdGhlIGNhbGxlci4gICovCi0gY29uc3QgY2hhciAqCi0tX25sX25vcm1hbGl6ZV9jb2Rlc2V0IChjb2Rlc2V0LCBuYW1lX2xlbikKLS0gICAgIGNvbnN0IGNoYXIgKmNvZGVzZXQ7Ci0tICAgICBzaXplX3QgbmFtZV9sZW47Ci0rX25sX25vcm1hbGl6ZV9jb2Rlc2V0IChjb25zdCBjaGFyICpjb2Rlc2V0LCBzaXplX3QgbmFtZV9sZW4pCi0gewotICAgaW50IGxlbiA9IDA7Ci0gICBpbnQgb25seV9kaWdpdCA9IDE7Ci1AQCAtMzYwLDExICszNzQsMTEgQEAKLSAgIHNpemVfdCBjbnQ7Ci0gCi0gICBmb3IgKGNudCA9IDA7IGNudCA8IG5hbWVfbGVuOyArK2NudCkKLS0gICAgaWYgKGlzYWxudW0gKGNvZGVzZXRbY250XSkpCi0rICAgIGlmIChpc2FsbnVtICgodW5zaWduZWQgY2hhcikgY29kZXNldFtjbnRdKSkKLSAgICAgICB7Ci0gCSsrbGVuOwotIAotLQlpZiAoaXNhbHBoYSAoY29kZXNldFtjbnRdKSkKLSsJaWYgKGlzYWxwaGEgKCh1bnNpZ25lZCBjaGFyKSBjb2Rlc2V0W2NudF0pKQotIAkgIG9ubHlfZGlnaXQgPSAwOwotICAgICAgIH0KLSAKLUBAIC0zNzgsOSArMzkyLDkgQEAKLSAJd3AgPSByZXR2YWw7Ci0gCi0gICAgICAgZm9yIChjbnQgPSAwOyBjbnQgPCBuYW1lX2xlbjsgKytjbnQpCi0tCWlmIChpc2FscGhhIChjb2Rlc2V0W2NudF0pKQotLQkgICp3cCsrID0gdG9sb3dlciAoY29kZXNldFtjbnRdKTsKLS0JZWxzZSBpZiAoaXNkaWdpdCAoY29kZXNldFtjbnRdKSkKLSsJaWYgKGlzYWxwaGEgKCh1bnNpZ25lZCBjaGFyKSBjb2Rlc2V0W2NudF0pKQotKwkgICp3cCsrID0gdG9sb3dlciAoKHVuc2lnbmVkIGNoYXIpIGNvZGVzZXRbY250XSk7Ci0rCWVsc2UgaWYgKGlzZGlnaXQgKCh1bnNpZ25lZCBjaGFyKSBjb2Rlc2V0W2NudF0pKQotIAkgICp3cCsrID0gY29kZXNldFtjbnRdOwotIAotICAgICAgICp3cCA9ICdcMCc7Ci1AQCAtMzk4LDkgKzQxMiw3IEBACi0gICAgdG8gYmUgZGVmaW5lZC4gICovCi0gI2lmICFfTElCQyAmJiAhSEFWRV9TVFBDUFkKLSBzdGF0aWMgY2hhciAqCi0tc3RwY3B5IChkZXN0LCBzcmMpCi0tICAgICBjaGFyICpkZXN0OwotLSAgICAgY29uc3QgY2hhciAqc3JjOwotK3N0cGNweSAoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjKQotIHsKLSAgIHdoaWxlICgoKmRlc3QrKyA9ICpzcmMrKykgIT0gJ1wwJykKLSAgICAgLyogRG8gbm90aGluZy4gKi8gOwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2xpYmdldHRleHQuaAkxOTk4LTA0LTI2IDA5OjIyOjM2LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9saWJnZXR0ZXh0LmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLUBAIC0xLDE4MiArMCwwIEBACi0tLyogTWVzc2FnZSBjYXRhbG9ncyBmb3IgaW50ZXJuYXRpb25hbGl6YXRpb24uCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLQotLSAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0gICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tICAgYW55IGxhdGVyIHZlcnNpb24uCi0tCi0tICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0gICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0KLS0gICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0tICAgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4gICovCi0tCi0tLyogQmVjYXVzZSBvbiBzb21lIHN5c3RlbXMgKGUuZy4gU29sYXJpcykgd2Ugc29tZXRpbWVzIGhhdmUgdG8gaW5jbHVkZQotLSAgIHRoZSBzeXN0ZW1zIGxpYmludGwuaCBhcyB3ZWxsIGFzIHRoaXMgZmlsZSB3ZSBoYXZlIG1vcmUgY29tcGxleAotLSAgIGluY2x1ZGUgcHJvdGVjdGlvbiBhYm92ZS4gIEJ1dCB0aGUgc3lzdGVtcyBoZWFkZXIgbWlnaHQgcGVyaGFwcyBhbHNvCi0tICAgZGVmaW5lIF9MSUJJTlRMX0ggYW5kIHRoZXJlZm9yZSB3ZSBoYXZlIHRvIHByb3RlY3QgdGhlIGRlZmluaXRpb24gaGVyZS4gICovCi0tCi0tI2lmICFkZWZpbmVkIChfTElCSU5UTF9IKSB8fCAhZGVmaW5lZCAoX0xJQkdFVFRFWFRfSCkKLS0jaWYgIWRlZmluZWQgKF9MSUJJTlRMX0gpCi0tIyBkZWZpbmUgX0xJQklOVExfSAkxCi0tI2VuZGlmCi0tI2RlZmluZSBfTElCR0VUVEVYVF9ICTEKLS0KLS0vKiBXZSBkZWZpbmUgYW4gYWRkaXRpb25hbCBzeW1ib2wgdG8gc2lnbmFsIHRoYXQgd2UgdXNlIHRoZSBHTlUKLS0gICBpbXBsZW1lbnRhdGlvbiBvZiBnZXR0ZXh0LiAgKi8KLS0jZGVmaW5lIF9fVVNFX0dOVV9HRVRURVhUIDEKLS0KLS0jaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tCi0tI2lmIEhBVkVfTE9DQUxFX0gKLS0jIGluY2x1ZGUgPGxvY2FsZS5oPgotLSNlbmRpZgotLQotLQotLSNpZmRlZiBfX2NwbHVzcGx1cwotLWV4dGVybiAiQyIgewotLSNlbmRpZgotLQotLS8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLS0KLS0jaWZuZGVmIFBBUkFNUwotLSMgaWYgX19TVERDX18KLS0jICBkZWZpbmUgUEFSQU1TKGFyZ3MpIGFyZ3MKLS0jIGVsc2UKLS0jICBkZWZpbmUgUEFSQU1TKGFyZ3MpICgpCi0tIyBlbmRpZgotLSNlbmRpZgotLQotLSNpZm5kZWYgTlVMTAotLSMgaWYgIWRlZmluZWQgX19jcGx1c3BsdXMgfHwgZGVmaW5lZCBfX0dOVUNfXwotLSMgIGRlZmluZSBOVUxMICgodm9pZCAqKSAwKQotLSMgZWxzZQotLSMgIGRlZmluZSBOVUxMICgwKQotLSMgZW5kaWYKLS0jZW5kaWYKLS0KLS0jaWYgIUhBVkVfTENfTUVTU0FHRVMKLS0vKiBUaGlzIHZhbHVlIGRldGVybWluZXMgdGhlIGJlaGF2aW91ciBvZiB0aGUgZ2V0dGV4dCgpIGFuZCBkZ2V0dGV4dCgpCi0tICAgZnVuY3Rpb24uICBCdXQgc29tZSBzeXN0ZW0gZG9lcyBub3QgaGF2ZSB0aGlzIGRlZmluZWQuICBEZWZpbmUgaXQKLS0gICB0byBhIGRlZmF1bHQgdmFsdWUuICAqLwotLSMgZGVmaW5lIExDX01FU1NBR0VTICgtMSkKLS0jZW5kaWYKLS0KLS0KLS0vKiBEZWNsYXJhdGlvbnMgZm9yIGdldHRleHQtdXNpbmctY2F0Z2V0cyBpbnRlcmZhY2UuICBEZXJpdmVkIGZyb20KLS0gICBKaW0gTWV5ZXJpbmcncyBsaWJpbnRsLmguICAqLwotLXN0cnVjdCBfbXNnX2VudAotLXsKLS0gIGNvbnN0IGNoYXIgKl9tc2c7Ci0tICBpbnQgX21zZ19udW1iZXI7Ci0tfTsKLS0KLS0KLS0jaWYgSEFWRV9DQVRHRVRTCi0tLyogVGhlc2UgdHdvIHZhcmlhYmxlcyBhcmUgZGVmaW5lZCBpbiB0aGUgYXV0b21hdGljYWxseSBieSBwby10by10Ymwuc2VkCi0tICAgZ2VuZXJhdGVkIGZpbGUgYGNhdC1pZC10YmwuYycuICAqLwotLWV4dGVybiBjb25zdCBzdHJ1Y3QgX21zZ19lbnQgX21zZ190YmxbXTsKLS1leHRlcm4gaW50IF9tc2dfdGJsX2xlbmd0aDsKLS0jZW5kaWYKLS0KLS0KLS0vKiBGb3IgYXV0b21hdGljYWwgZXh0cmFjdGlvbiBvZiBtZXNzYWdlcyBzb21ldGltZXMgbm8gcmVhbAotLSAgIHRyYW5zbGF0aW9uIGlzIG5lZWRlZC4gIEluc3RlYWQgdGhlIHN0cmluZyBpdHNlbGYgaXMgdGhlIHJlc3VsdC4gICovCi0tI2RlZmluZSBnZXR0ZXh0X25vb3AoU3RyKSAoU3RyKQotLQotLS8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIGN1cnJlbnQgZGVmYXVsdCBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50Ci0tICAgTENfTUVTU0FHRVMgbG9jYWxlLiAgSWYgbm90IGZvdW5kLCByZXR1cm5zIE1TR0lEIGl0c2VsZiAodGhlIGRlZmF1bHQKLS0gICB0ZXh0KS4gICovCi0tZXh0ZXJuIGNoYXIgKmdldHRleHQgUEFSQU1TICgoY29uc3QgY2hhciAqX19tc2dpZCkpOwotLWV4dGVybiBjaGFyICpnZXR0ZXh0X18gUEFSQU1TICgoY29uc3QgY2hhciAqX19tc2dpZCkpOwotLQotLS8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIERPTUFJTk5BTUUgbWVzc2FnZSBjYXRhbG9nIGZvciB0aGUgY3VycmVudAotLSAgIExDX01FU1NBR0VTIGxvY2FsZS4gICovCi0tZXh0ZXJuIGNoYXIgKmRnZXR0ZXh0IFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCkpOwotLWV4dGVybiBjaGFyICpkZ2V0dGV4dF9fIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLS0JCQkJIGNvbnN0IGNoYXIgKl9fbXNnaWQpKTsKLS0KLS0vKiBMb29rIHVwIE1TR0lEIGluIHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQgQ0FURUdPUlkKLS0gICBsb2NhbGUuICAqLwotLWV4dGVybiBjaGFyICpkY2dldHRleHQgUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkLAotLQkJCQlpbnQgX19jYXRlZ29yeSkpOwotLWV4dGVybiBjaGFyICpkY2dldHRleHRfXyBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0tCQkJCSAgY29uc3QgY2hhciAqX19tc2dpZCwgaW50IF9fY2F0ZWdvcnkpKTsKLS0KLS0KLS0vKiBTZXQgdGhlIGN1cnJlbnQgZGVmYXVsdCBtZXNzYWdlIGNhdGFsb2cgdG8gRE9NQUlOTkFNRS4KLS0gICBJZiBET01BSU5OQU1FIGlzIG51bGwsIHJldHVybiB0aGUgY3VycmVudCBkZWZhdWx0LgotLSAgIElmIERPTUFJTk5BTUUgaXMgIiIsIHJlc2V0IHRvIHRoZSBkZWZhdWx0IG9mICJtZXNzYWdlcyIuICAqLwotLWV4dGVybiBjaGFyICp0ZXh0ZG9tYWluIFBBUkFNUyAoKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSkpOwotLWV4dGVybiBjaGFyICp0ZXh0ZG9tYWluX18gUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lKSk7Ci0tCi0tLyogU3BlY2lmeSB0aGF0IHRoZSBET01BSU5OQU1FIG1lc3NhZ2UgY2F0YWxvZyB3aWxsIGJlIGZvdW5kCi0tICAgaW4gRElSTkFNRSByYXRoZXIgdGhhbiBpbiB0aGUgc3lzdGVtIGxvY2FsZSBkYXRhIGJhc2UuICAqLwotLWV4dGVybiBjaGFyICpiaW5kdGV4dGRvbWFpbiBQQVJBTVMgKChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0tCQkJCSAgY29uc3QgY2hhciAqX19kaXJuYW1lKSk7Ci0tZXh0ZXJuIGNoYXIgKmJpbmR0ZXh0ZG9tYWluX18gUEFSQU1TICgoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotLQkJCQkgICAgY29uc3QgY2hhciAqX19kaXJuYW1lKSk7Ci0tCi0tI2lmIEVOQUJMRV9OTFMKLS0KLS0vKiBTb2xhcmlzIDIuMyBoYXMgdGhlIGdldHRleHQgZnVuY3Rpb24gYnV0IGRjZ2V0dGV4dCBpcyBtaXNzaW5nLgotLSAgIFNvIHdlIG9taXQgdGhpcyBvcHRpbWl6YXRpb24gZm9yIFNvbGFyaXMgMi4zLiAgQlRXLCBTb2xhcmlzIDIuNAotLSAgIGhhcyBkY2dldHRleHQuICAqLwotLSMgaWYgIUhBVkVfQ0FUR0VUUyAmJiAoIUhBVkVfR0VUVEVYVCB8fCBIQVZFX0RDR0VUVEVYVCkKLS0KLS0jICBkZWZpbmUgZ2V0dGV4dChNc2dpZCkJCQkJCQkgICAgICBcCi0tICAgICBkZ2V0dGV4dCAoTlVMTCwgTXNnaWQpCi0tCi0tIyAgZGVmaW5lIGRnZXR0ZXh0KERvbWFpbm5hbWUsIE1zZ2lkKQkJCQkJICAgICAgXAotLSAgICAgZGNnZXR0ZXh0IChEb21haW5uYW1lLCBNc2dpZCwgTENfTUVTU0FHRVMpCi0tCi0tIyAgaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiBfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fID49IDcKLS0vKiBUaGlzIGdsb2JhbCB2YXJpYWJsZSBpcyBkZWZpbmVkIGluIGxvYWRtc2djYXQuYy4gIFdlIG5lZWQgYSBzaWduLAotLSAgIHdoZXRoZXIgYSBuZXcgY2F0YWxvZyB3YXMgbG9hZGVkLCB3aGljaCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGFsbAotLSAgIHRyYW5zbGF0aW9ucy4gICovCi0tZXh0ZXJuIGludCBfbmxfbXNnX2NhdF9jbnRyOwotLQotLSMgICBkZWZpbmUgZGNnZXR0ZXh0KERvbWFpbm5hbWUsIE1zZ2lkLCBDYXRlZ29yeSkJCQkgICAgICBcCi0tICAoX19leHRlbnNpb25fXwkJCQkJCQkgICAgICBcCi0tICAgKHsJCQkJCQkJCQkgICAgICBcCi0tICAgICBjaGFyICpfX3Jlc3VsdDsJCQkJCQkJICAgICAgXAotLSAgICAgaWYgKF9fYnVpbHRpbl9jb25zdGFudF9wIChNc2dpZCkpCQkJCQkgICAgICBcCi0tICAgICAgIHsJCQkJCQkJCSAgICAgIFwKLS0JIHN0YXRpYyBjaGFyICpfX3RyYW5zbGF0aW9uX187CQkJCQkgICAgICBcCi0tCSBzdGF0aWMgaW50IF9fY2F0YWxvZ19jb3VudGVyX187CQkJCSAgICAgIFwKLS0JIGlmICghIF9fdHJhbnNsYXRpb25fXyB8fCBfX2NhdGFsb2dfY291bnRlcl9fICE9IF9ubF9tc2dfY2F0X2NudHIpICAgIFwKLS0JICAgewkJCQkJCQkJICAgICAgXAotLQkgICAgIF9fdHJhbnNsYXRpb25fXyA9CQkJCQkJICAgICAgXAotLQkgICAgICAgZGNnZXR0ZXh0X18gKERvbWFpbm5hbWUsIE1zZ2lkLCBDYXRlZ29yeSk7CQkgICAgICBcCi0tCSAgICAgX19jYXRhbG9nX2NvdW50ZXJfXyA9IF9ubF9tc2dfY2F0X2NudHI7CQkJICAgICAgXAotLQkgICB9CQkJCQkJCQkgICAgICBcCi0tCSBfX3Jlc3VsdCA9IF9fdHJhbnNsYXRpb25fXzsJCQkJCSAgICAgIFwKLS0gICAgICAgfQkJCQkJCQkJICAgICAgXAotLSAgICAgZWxzZQkJCQkJCQkJICAgICAgXAotLSAgICAgICBfX3Jlc3VsdCA9IGRjZ2V0dGV4dF9fIChEb21haW5uYW1lLCBNc2dpZCwgQ2F0ZWdvcnkpOwkJICAgICAgXAotLSAgICAgX19yZXN1bHQ7CQkJCQkJCQkgICAgICBcCi0tICAgIH0pKQotLSMgIGVuZGlmCi0tIyBlbmRpZgotLQotLSNlbHNlCi0tCi0tIyBkZWZpbmUgZ2V0dGV4dChNc2dpZCkgKE1zZ2lkKQotLSMgZGVmaW5lIGRnZXR0ZXh0KERvbWFpbm5hbWUsIE1zZ2lkKSAoTXNnaWQpCi0tIyBkZWZpbmUgZGNnZXR0ZXh0KERvbWFpbm5hbWUsIE1zZ2lkLCBDYXRlZ29yeSkgKE1zZ2lkKQotLSMgZGVmaW5lIHRleHRkb21haW4oRG9tYWlubmFtZSkgd2hpbGUgKDApIC8qIG5vdGhpbmcgKi8KLS0jIGRlZmluZSBiaW5kdGV4dGRvbWFpbihEb21haW5uYW1lLCBEaXJuYW1lKSB3aGlsZSAoMCkgLyogbm90aGluZyAqLwotLQotLSNlbmRpZgotLQotLS8qIEBAIGJlZ2luIG9mIGVwaWxvZyBAQCAqLwotLQotLSNpZmRlZiBfX2NwbHVzcGx1cwotLX0KLS0jZW5kaWYKLS0KLS0jZW5kaWYKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9saWJnbnVpbnRsLmguaW4JMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvbGliZ251aW50bC5oLmluCTIwMDQtMDktMTIgMTQ6NDA6MzQuNDYyNzMxODI0IC0wNDAwCi1AQCAtMCwwICsxLDM4MyBAQAotKy8qIE1lc3NhZ2UgY2F0YWxvZ3MgZm9yIGludGVybmF0aW9uYWxpemF0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMTk5NS0xOTk3LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZm5kZWYgX0xJQklOVExfSAotKyNkZWZpbmUgX0xJQklOVExfSAkxCi0rCi0rI2luY2x1ZGUgPGxvY2FsZS5oPgotKwotKy8qIFRoZSBMQ19NRVNTQUdFUyBsb2NhbGUgY2F0ZWdvcnkgaXMgdGhlIGNhdGVnb3J5IHVzZWQgYnkgdGhlIGZ1bmN0aW9ucwotKyAgIGdldHRleHQoKSBhbmQgZGdldHRleHQoKS4gIEl0IGlzIHNwZWNpZmllZCBpbiBQT1NJWCwgYnV0IG5vdCBpbiBBTlNJIEMuCi0rICAgT24gc3lzdGVtcyB0aGF0IGRvbid0IGRlZmluZSBpdCwgdXNlIGFuIGFyYml0cmFyeSB2YWx1ZSBpbnN0ZWFkLgotKyAgIE9uIFNvbGFyaXMsIDxsb2NhbGUuaD4gZGVmaW5lcyBfX0xPQ0FMRV9IIChvciBfTE9DQUxFX0ggaW4gU29sYXJpcyAyLjUpCi0rICAgdGhlbiBpbmNsdWRlcyA8bGliaW50bC5oPiAoaS5lLiB0aGlzIGZpbGUhKSBhbmQgdGhlbiBvbmx5IGRlZmluZXMKLSsgICBMQ19NRVNTQUdFUy4gIFRvIGF2b2lkIGEgcmVkZWZpbml0aW9uIHdhcm5pbmcsIGRvbid0IGRlZmluZSBMQ19NRVNTQUdFUwotKyAgIGluIHRoaXMgY2FzZS4gICovCi0rI2lmICFkZWZpbmVkIExDX01FU1NBR0VTICYmICEoZGVmaW5lZCBfX0xPQ0FMRV9IIHx8IChkZWZpbmVkIF9MT0NBTEVfSCAmJiBkZWZpbmVkIF9fc3VuKSkKLSsjIGRlZmluZSBMQ19NRVNTQUdFUyAxNzI5Ci0rI2VuZGlmCi0rCi0rLyogV2UgZGVmaW5lIGFuIGFkZGl0aW9uYWwgc3ltYm9sIHRvIHNpZ25hbCB0aGF0IHdlIHVzZSB0aGUgR05VCi0rICAgaW1wbGVtZW50YXRpb24gb2YgZ2V0dGV4dC4gICovCi0rI2RlZmluZSBfX1VTRV9HTlVfR0VUVEVYVCAxCi0rCi0rLyogUHJvdmlkZSBpbmZvcm1hdGlvbiBhYm91dCB0aGUgc3VwcG9ydGVkIGZpbGUgZm9ybWF0cy4gIFJldHVybnMgdGhlCi0rICAgbWF4aW11bSBtaW5vciByZXZpc2lvbiBudW1iZXIgc3VwcG9ydGVkIGZvciBhIGdpdmVuIG1ham9yIHJldmlzaW9uLiAgKi8KLSsjZGVmaW5lIF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OKG1ham9yKSBcCi0rICAoKG1ham9yKSA9PSAwID8gMSA6IC0xKQotKwotKy8qIFJlc29sdmUgYSBwbGF0Zm9ybSBzcGVjaWZpYyBjb25mbGljdCBvbiBESkdQUC4gIEdOVSBnZXR0ZXh0IHRha2VzCi0rICAgcHJlY2VkZW5jZSBvdmVyIF9jb25pb19nZXR0ZXh0LiAgKi8KLSsjaWZkZWYgX19ESkdQUF9fCi0rIyB1bmRlZiBnZXR0ZXh0Ci0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0rCi0rCi0rLyogV2UgcmVkaXJlY3QgdGhlIGZ1bmN0aW9ucyB0byB0aG9zZSBwcmVmaXhlZCB3aXRoICJsaWJpbnRsXyIuICBUaGlzIGlzCi0rICAgbmVjZXNzYXJ5LCBiZWNhdXNlIHNvbWUgc3lzdGVtcyBkZWZpbmUgZ2V0dGV4dC90ZXh0ZG9tYWluLy4uLiBpbiB0aGUgQwotKyAgIGxpYnJhcnkgKG5hbWVseSwgU29sYXJpcyAyLjQgYW5kIG5ld2VyLCBhbmQgR05VIGxpYmMgMi4wIGFuZCBuZXdlcikuCi0rICAgSWYgd2UgdXNlZCB0aGUgdW5wcmVmaXhlZCBuYW1lcywgdGhlcmUgd291bGQgYmUgY2FzZXMgd2hlcmUgdGhlCi0rICAgZGVmaW5pdGlvbiBpbiB0aGUgQyBsaWJyYXJ5IHdvdWxkIG92ZXJyaWRlIHRoZSBvbmUgaW4gdGhlIGxpYmludGwuc28KLSsgICBzaGFyZWQgbGlicmFyeS4gIFJlY2FsbCB0aGF0IG9uIEVMRiBzeXN0ZW1zLCB0aGUgc3ltYm9scyBhcmUgbG9va2VkCi0rICAgdXAgaW4gdGhlIGZvbGxvd2luZyBvcmRlcjoKLSsgICAgIDEuIGluIHRoZSBleGVjdXRhYmxlLAotKyAgICAgMi4gaW4gdGhlIHNoYXJlZCBsaWJyYXJpZXMgc3BlY2lmaWVkIG9uIHRoZSBsaW5rIGNvbW1hbmQgbGluZSwgaW4gb3JkZXIsCi0rICAgICAzLiBpbiB0aGUgZGVwZW5kZW5jaWVzIG9mIHRoZSBzaGFyZWQgbGlicmFyaWVzIHNwZWNpZmllZCBvbiB0aGUgbGluawotKyAgICAgICAgY29tbWFuZCBsaW5lLAotKyAgICAgNC4gaW4gdGhlIGRsb3BlbigpZWQgc2hhcmVkIGxpYnJhcmllcywgaW4gdGhlIG9yZGVyIGluIHdoaWNoIHRoZXkgd2VyZQotKyAgICAgICAgZGxvcGVuKCllZC4KLSsgICBUaGUgZGVmaW5pdGlvbiBpbiB0aGUgQyBsaWJyYXJ5IHdvdWxkIG92ZXJyaWRlIHRoZSBvbmUgaW4gbGliaW50bC5zbyBpZgotKyAgIGVpdGhlcgotKyAgICAgKiAtbGMgaXMgZ2l2ZW4gb24gdGhlIGxpbmsgY29tbWFuZCBsaW5lIGFuZCAtbGludGwgaXNuJ3QsIG9yCi0rICAgICAqIC1sYyBpcyBnaXZlbiBvbiB0aGUgbGluayBjb21tYW5kIGxpbmUgYmVmb3JlIC1saW50bCwgb3IKLSsgICAgICogbGliaW50bC5zbyBpcyBhIGRlcGVuZGVuY3kgb2YgYSBkbG9wZW4oKWVkIHNoYXJlZCBsaWJyYXJ5IGJ1dCBub3QKLSsgICAgICAgbGlua2VkIHRvIHRoZSBleGVjdXRhYmxlIGF0IGxpbmsgdGltZS4KLSsgICBTaW5jZSBTb2xhcmlzIGdldHRleHQoKSBiZWhhdmVzIGRpZmZlcmVudGx5IHRoYW4gR05VIGdldHRleHQoKSwgdGhpcwotKyAgIHdvdWxkIGJlIHVuYWNjZXB0YWJsZS4KLSsKLSsgICBUaGUgcmVkaXJlY3Rpb24gaGFwcGVucyBieSBkZWZhdWx0IHRocm91Z2ggbWFjcm9zIGluIEMsIHNvIHRoYXQgJmdldHRleHQKLSsgICBpcyBpbmRlcGVuZGVudCBvZiB0aGUgY29tcGlsYXRpb24gdW5pdCwgYnV0IHRocm91Z2ggaW5saW5lIGZ1bmN0aW9ucyBpbgotKyAgIEMrKywgaW4gb3JkZXIgbm90IHRvIGludGVyZmVyZSB3aXRoIHRoZSBuYW1lIG1hbmdsaW5nIG9mIGNsYXNzIGZpZWxkcyBvcgotKyAgIGNsYXNzIG1ldGhvZHMgY2FsbGVkICdnZXR0ZXh0Jy4gICovCi0rCi0rLyogVGhlIHVzZXIgY2FuIGRlZmluZSBfSU5UTF9SRURJUkVDVF9JTkxJTkUgb3IgX0lOVExfUkVESVJFQ1RfTUFDUk9TLgotKyAgIElmIGhlIGRvZXNuJ3QsIHdlIGNob29zZSB0aGUgbWV0aG9kLiAgQSB0aGlyZCBwb3NzaWJsZSBtZXRob2QgaXMKLSsgICBfSU5UTF9SRURJUkVDVF9BU00sIHN1cHBvcnRlZCBvbmx5IGJ5IEdDQy4gICovCi0rI2lmICEoZGVmaW5lZCBfSU5UTF9SRURJUkVDVF9JTkxJTkUgfHwgZGVmaW5lZCBfSU5UTF9SRURJUkVDVF9NQUNST1MpCi0rIyBpZiBfX0dOVUNfXyA+PSAyICYmICFkZWZpbmVkIF9fQVBQTEVfQ0NfXyAmJiAhZGVmaW5lZCBfX01JTkdXMzJfXyAmJiAhKF9fR05VQ19fID09IDIgJiYgZGVmaW5lZCBfQUlYKSAmJiAoZGVmaW5lZCBfX1NURENfXyB8fCBkZWZpbmVkIF9fY3BsdXNwbHVzKQotKyMgIGRlZmluZSBfSU5UTF9SRURJUkVDVF9BU00KLSsjIGVsc2UKLSsjICBpZmRlZiBfX2NwbHVzcGx1cwotKyMgICBkZWZpbmUgX0lOVExfUkVESVJFQ1RfSU5MSU5FCi0rIyAgZWxzZQotKyMgICBkZWZpbmUgX0lOVExfUkVESVJFQ1RfTUFDUk9TCi0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rI2VuZGlmCi0rLyogQXV4aWxpYXJ5IG1hY3Jvcy4gICovCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX0FTTQotKyMgZGVmaW5lIF9JTlRMX0FTTShjbmFtZSkgX19hc21fXyAoX0lOVExfQVNNTkFNRSAoX19VU0VSX0xBQkVMX1BSRUZJWF9fLCAjY25hbWUpKQotKyMgZGVmaW5lIF9JTlRMX0FTTU5BTUUocHJlZml4LGNuYW1lc3RyaW5nKSBfSU5UTF9TVFJJTkdJRlkgKHByZWZpeCkgY25hbWVzdHJpbmcKLSsjIGRlZmluZSBfSU5UTF9TVFJJTkdJRlkocHJlZml4KSAjcHJlZml4Ci0rI2Vsc2UKLSsjIGRlZmluZSBfSU5UTF9BU00oY25hbWUpCi0rI2VuZGlmCi0rCi0rLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgY3VycmVudCBkZWZhdWx0IG1lc3NhZ2UgY2F0YWxvZyBmb3IgdGhlIGN1cnJlbnQKLSsgICBMQ19NRVNTQUdFUyBsb2NhbGUuICBJZiBub3QgZm91bmQsIHJldHVybnMgTVNHSUQgaXRzZWxmICh0aGUgZGVmYXVsdAotKyAgIHRleHQpLiAgKi8KLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfSU5MSU5FCi0rZXh0ZXJuIGNoYXIgKmxpYmludGxfZ2V0dGV4dCAoY29uc3QgY2hhciAqX19tc2dpZCk7Ci0rc3RhdGljIGlubGluZSBjaGFyICpnZXR0ZXh0IChjb25zdCBjaGFyICpfX21zZ2lkKQotK3sKLSsgIHJldHVybiBsaWJpbnRsX2dldHRleHQgKF9fbXNnaWQpOwotK30KLSsjZWxzZQotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9NQUNST1MKLSsjIGRlZmluZSBnZXR0ZXh0IGxpYmludGxfZ2V0dGV4dAotKyNlbmRpZgotK2V4dGVybiBjaGFyICpnZXR0ZXh0IChjb25zdCBjaGFyICpfX21zZ2lkKQotKyAgICAgICBfSU5UTF9BU00gKGxpYmludGxfZ2V0dGV4dCk7Ci0rI2VuZGlmCi0rCi0rLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50Ci0rICAgTENfTUVTU0FHRVMgbG9jYWxlLiAgKi8KLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfSU5MSU5FCi0rZXh0ZXJuIGNoYXIgKmxpYmludGxfZGdldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCk7Ci0rc3RhdGljIGlubGluZSBjaGFyICpkZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkKQotK3sKLSsgIHJldHVybiBsaWJpbnRsX2RnZXR0ZXh0IChfX2RvbWFpbm5hbWUsIF9fbXNnaWQpOwotK30KLSsjZWxzZQotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9NQUNST1MKLSsjIGRlZmluZSBkZ2V0dGV4dCBsaWJpbnRsX2RnZXR0ZXh0Ci0rI2VuZGlmCi0rZXh0ZXJuIGNoYXIgKmRnZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQpCi0rICAgICAgIF9JTlRMX0FTTSAobGliaW50bF9kZ2V0dGV4dCk7Ci0rI2VuZGlmCi0rCi0rLyogTG9vayB1cCBNU0dJRCBpbiB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50IENBVEVHT1JZCi0rICAgbG9jYWxlLiAgKi8KLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfSU5MSU5FCi0rZXh0ZXJuIGNoYXIgKmxpYmludGxfZGNnZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQsCi0rCQkJCWludCBfX2NhdGVnb3J5KTsKLStzdGF0aWMgaW5saW5lIGNoYXIgKmRjZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkLAotKwkJCSAgICAgICBpbnQgX19jYXRlZ29yeSkKLSt7Ci0rICByZXR1cm4gbGliaW50bF9kY2dldHRleHQgKF9fZG9tYWlubmFtZSwgX19tc2dpZCwgX19jYXRlZ29yeSk7Ci0rfQotKyNlbHNlCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX01BQ1JPUwotKyMgZGVmaW5lIGRjZ2V0dGV4dCBsaWJpbnRsX2RjZ2V0dGV4dAotKyNlbmRpZgotK2V4dGVybiBjaGFyICpkY2dldHRleHQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwgY29uc3QgY2hhciAqX19tc2dpZCwKLSsJCQlpbnQgX19jYXRlZ29yeSkKLSsgICAgICAgX0lOVExfQVNNIChsaWJpbnRsX2RjZ2V0dGV4dCk7Ci0rI2VuZGlmCi0rCi0rCi0rLyogU2ltaWxhciB0byBgZ2V0dGV4dCcgYnV0IHNlbGVjdCB0aGUgcGx1cmFsIGZvcm0gY29ycmVzcG9uZGluZyB0byB0aGUKLSsgICBudW1iZXIgTi4gICovCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX0lOTElORQotK2V4dGVybiBjaGFyICpsaWJpbnRsX25nZXR0ZXh0IChjb25zdCBjaGFyICpfX21zZ2lkMSwgY29uc3QgY2hhciAqX19tc2dpZDIsCi0rCQkJICAgICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fbik7Ci0rc3RhdGljIGlubGluZSBjaGFyICpuZ2V0dGV4dCAoY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAotKwkJCSAgICAgIHVuc2lnbmVkIGxvbmcgaW50IF9fbikKLSt7Ci0rICByZXR1cm4gbGliaW50bF9uZ2V0dGV4dCAoX19tc2dpZDEsIF9fbXNnaWQyLCBfX24pOwotK30KLSsjZWxzZQotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9NQUNST1MKLSsjIGRlZmluZSBuZ2V0dGV4dCBsaWJpbnRsX25nZXR0ZXh0Ci0rI2VuZGlmCi0rZXh0ZXJuIGNoYXIgKm5nZXR0ZXh0IChjb25zdCBjaGFyICpfX21zZ2lkMSwgY29uc3QgY2hhciAqX19tc2dpZDIsCi0rCQkgICAgICAgdW5zaWduZWQgbG9uZyBpbnQgX19uKQotKyAgICAgICBfSU5UTF9BU00gKGxpYmludGxfbmdldHRleHQpOwotKyNlbmRpZgotKwotKy8qIFNpbWlsYXIgdG8gYGRnZXR0ZXh0JyBidXQgc2VsZWN0IHRoZSBwbHVyYWwgZm9ybSBjb3JyZXNwb25kaW5nIHRvIHRoZQotKyAgIG51bWJlciBOLiAgKi8KLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfSU5MSU5FCi0rZXh0ZXJuIGNoYXIgKmxpYmludGxfZG5nZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fbXNnaWQxLAotKwkJCQljb25zdCBjaGFyICpfX21zZ2lkMiwgdW5zaWduZWQgbG9uZyBpbnQgX19uKTsKLStzdGF0aWMgaW5saW5lIGNoYXIgKmRuZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLCBjb25zdCBjaGFyICpfX21zZ2lkMSwKLSsJCQkgICAgICAgY29uc3QgY2hhciAqX19tc2dpZDIsIHVuc2lnbmVkIGxvbmcgaW50IF9fbikKLSt7Ci0rICByZXR1cm4gbGliaW50bF9kbmdldHRleHQgKF9fZG9tYWlubmFtZSwgX19tc2dpZDEsIF9fbXNnaWQyLCBfX24pOwotK30KLSsjZWxzZQotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9NQUNST1MKLSsjIGRlZmluZSBkbmdldHRleHQgbGliaW50bF9kbmdldHRleHQKLSsjZW5kaWYKLStleHRlcm4gY2hhciAqZG5nZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAotKwkJCXVuc2lnbmVkIGxvbmcgaW50IF9fbikKLSsgICAgICAgX0lOVExfQVNNIChsaWJpbnRsX2RuZ2V0dGV4dCk7Ci0rI2VuZGlmCi0rCi0rLyogU2ltaWxhciB0byBgZGNnZXR0ZXh0JyBidXQgc2VsZWN0IHRoZSBwbHVyYWwgZm9ybSBjb3JyZXNwb25kaW5nIHRvIHRoZQotKyAgIG51bWJlciBOLiAgKi8KLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfSU5MSU5FCi0rZXh0ZXJuIGNoYXIgKmxpYmludGxfZGNuZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCQkgY29uc3QgY2hhciAqX19tc2dpZDEsIGNvbnN0IGNoYXIgKl9fbXNnaWQyLAotKwkJCQkgdW5zaWduZWQgbG9uZyBpbnQgX19uLCBpbnQgX19jYXRlZ29yeSk7Ci0rc3RhdGljIGlubGluZSBjaGFyICpkY25nZXR0ZXh0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJCWNvbnN0IGNoYXIgKl9fbXNnaWQxLCBjb25zdCBjaGFyICpfX21zZ2lkMiwKLSsJCQkJdW5zaWduZWQgbG9uZyBpbnQgX19uLCBpbnQgX19jYXRlZ29yeSkKLSt7Ci0rICByZXR1cm4gbGliaW50bF9kY25nZXR0ZXh0IChfX2RvbWFpbm5hbWUsIF9fbXNnaWQxLCBfX21zZ2lkMiwgX19uLCBfX2NhdGVnb3J5KTsKLSt9Ci0rI2Vsc2UKLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfTUFDUk9TCi0rIyBkZWZpbmUgZGNuZ2V0dGV4dCBsaWJpbnRsX2RjbmdldHRleHQKLSsjZW5kaWYKLStleHRlcm4gY2hhciAqZGNuZ2V0dGV4dCAoY29uc3QgY2hhciAqX19kb21haW5uYW1lLAotKwkJCSBjb25zdCBjaGFyICpfX21zZ2lkMSwgY29uc3QgY2hhciAqX19tc2dpZDIsCi0rCQkJIHVuc2lnbmVkIGxvbmcgaW50IF9fbiwgaW50IF9fY2F0ZWdvcnkpCi0rICAgICAgIF9JTlRMX0FTTSAobGliaW50bF9kY25nZXR0ZXh0KTsKLSsjZW5kaWYKLSsKLSsKLSsvKiBTZXQgdGhlIGN1cnJlbnQgZGVmYXVsdCBtZXNzYWdlIGNhdGFsb2cgdG8gRE9NQUlOTkFNRS4KLSsgICBJZiBET01BSU5OQU1FIGlzIG51bGwsIHJldHVybiB0aGUgY3VycmVudCBkZWZhdWx0LgotKyAgIElmIERPTUFJTk5BTUUgaXMgIiIsIHJlc2V0IHRvIHRoZSBkZWZhdWx0IG9mICJtZXNzYWdlcyIuICAqLwotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9JTkxJTkUKLStleHRlcm4gY2hhciAqbGliaW50bF90ZXh0ZG9tYWluIChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUpOwotK3N0YXRpYyBpbmxpbmUgY2hhciAqdGV4dGRvbWFpbiAoY29uc3QgY2hhciAqX19kb21haW5uYW1lKQotK3sKLSsgIHJldHVybiBsaWJpbnRsX3RleHRkb21haW4gKF9fZG9tYWlubmFtZSk7Ci0rfQotKyNlbHNlCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX01BQ1JPUwotKyMgZGVmaW5lIHRleHRkb21haW4gbGliaW50bF90ZXh0ZG9tYWluCi0rI2VuZGlmCi0rZXh0ZXJuIGNoYXIgKnRleHRkb21haW4gKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSkKLSsgICAgICAgX0lOVExfQVNNIChsaWJpbnRsX3RleHRkb21haW4pOwotKyNlbmRpZgotKwotKy8qIFNwZWNpZnkgdGhhdCB0aGUgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgd2lsbCBiZSBmb3VuZAotKyAgIGluIERJUk5BTUUgcmF0aGVyIHRoYW4gaW4gdGhlIHN5c3RlbSBsb2NhbGUgZGF0YSBiYXNlLiAgKi8KLSsjaWZkZWYgX0lOVExfUkVESVJFQ1RfSU5MSU5FCi0rZXh0ZXJuIGNoYXIgKmxpYmludGxfYmluZHRleHRkb21haW4gKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQkJICAgICBjb25zdCBjaGFyICpfX2Rpcm5hbWUpOwotK3N0YXRpYyBpbmxpbmUgY2hhciAqYmluZHRleHRkb21haW4gKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQkJICAgIGNvbnN0IGNoYXIgKl9fZGlybmFtZSkKLSt7Ci0rICByZXR1cm4gbGliaW50bF9iaW5kdGV4dGRvbWFpbiAoX19kb21haW5uYW1lLCBfX2Rpcm5hbWUpOwotK30KLSsjZWxzZQotKyNpZmRlZiBfSU5UTF9SRURJUkVDVF9NQUNST1MKLSsjIGRlZmluZSBiaW5kdGV4dGRvbWFpbiBsaWJpbnRsX2JpbmR0ZXh0ZG9tYWluCi0rI2VuZGlmCi0rZXh0ZXJuIGNoYXIgKmJpbmR0ZXh0ZG9tYWluIChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsIGNvbnN0IGNoYXIgKl9fZGlybmFtZSkKLSsgICAgICAgX0lOVExfQVNNIChsaWJpbnRsX2JpbmR0ZXh0ZG9tYWluKTsKLSsjZW5kaWYKLSsKLSsvKiBTcGVjaWZ5IHRoZSBjaGFyYWN0ZXIgZW5jb2RpbmcgaW4gd2hpY2ggdGhlIG1lc3NhZ2VzIGZyb20gdGhlCi0rICAgRE9NQUlOTkFNRSBtZXNzYWdlIGNhdGFsb2cgd2lsbCBiZSByZXR1cm5lZC4gICovCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX0lOTElORQotK2V4dGVybiBjaGFyICpsaWJpbnRsX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IChjb25zdCBjaGFyICpfX2RvbWFpbm5hbWUsCi0rCQkJCQkgICAgICBjb25zdCBjaGFyICpfX2NvZGVzZXQpOwotK3N0YXRpYyBpbmxpbmUgY2hhciAqYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQkJCSAgICAgY29uc3QgY2hhciAqX19jb2Rlc2V0KQotK3sKLSsgIHJldHVybiBsaWJpbnRsX2JpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IChfX2RvbWFpbm5hbWUsIF9fY29kZXNldCk7Ci0rfQotKyNlbHNlCi0rI2lmZGVmIF9JTlRMX1JFRElSRUNUX01BQ1JPUwotKyMgZGVmaW5lIGJpbmRfdGV4dGRvbWFpbl9jb2Rlc2V0IGxpYmludGxfYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQKLSsjZW5kaWYKLStleHRlcm4gY2hhciAqYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQgKGNvbnN0IGNoYXIgKl9fZG9tYWlubmFtZSwKLSsJCQkJICAgICAgY29uc3QgY2hhciAqX19jb2Rlc2V0KQotKyAgICAgICBfSU5UTF9BU00gKGxpYmludGxfYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQpOwotKyNlbmRpZgotKwotKwotKy8qIFN1cHBvcnQgZm9yIGZvcm1hdCBzdHJpbmdzIHdpdGggcG9zaXRpb25zIGluICpwcmludGYoKSwgZm9sbG93aW5nIHRoZQotKyAgIFBPU0lYL1hTSSBzcGVjaWZpY2F0aW9uLgotKyAgIE5vdGU6IFRoZXNlIHJlcGxhY2VtZW50cyBmb3IgdGhlICpwcmludGYoKSBmdW5jdGlvbnMgYXJlIHZpc2libGUgb25seQotKyAgIGluIHNvdXJjZSBmaWxlcyB0aGF0ICNpbmNsdWRlIDxsaWJpbnRsLmg+IG9yICNpbmNsdWRlICJnZXR0ZXh0LmgiLgotKyAgIFBhY2thZ2VzIHRoYXQgdXNlICpwcmludGYoKSBpbiBzb3VyY2UgZmlsZXMgdGhhdCBkb24ndCByZWZlciB0byBfKCkKLSsgICBvciBnZXR0ZXh0KCkgYnV0IGZvciB3aGljaCB0aGUgZm9ybWF0IHN0cmluZyBjb3VsZCBiZSB0aGUgcmV0dXJuIHZhbHVlCi0rICAgb2YgXygpIG9yIGdldHRleHQoKSBuZWVkIHRvIGFkZCB0aGlzICNpbmNsdWRlLiAgT2ggd2VsbC4gICovCi0rCi0rI2lmICFASEFWRV9QT1NJWF9QUklOVEZACi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKwotKy8qIEdldCB2YV9saXN0LiAgKi8KLSsjaWYgX19TVERDX18gfHwgZGVmaW5lZCBfX2NwbHVzcGx1cyB8fCBkZWZpbmVkIF9NU0NfVkVSCi0rIyBpbmNsdWRlIDxzdGRhcmcuaD4KLSsjZWxzZQotKyMgaW5jbHVkZSA8dmFyYXJncy5oPgotKyNlbmRpZgotKwotKyN1bmRlZiBmcHJpbnRmCi0rI2RlZmluZSBmcHJpbnRmIGxpYmludGxfZnByaW50ZgotK2V4dGVybiBpbnQgZnByaW50ZiAoRklMRSAqLCBjb25zdCBjaGFyICosIC4uLik7Ci0rI3VuZGVmIHZmcHJpbnRmCi0rI2RlZmluZSB2ZnByaW50ZiBsaWJpbnRsX3ZmcHJpbnRmCi0rZXh0ZXJuIGludCB2ZnByaW50ZiAoRklMRSAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QpOwotKwotKyN1bmRlZiBwcmludGYKLSsjZGVmaW5lIHByaW50ZiBsaWJpbnRsX3ByaW50ZgotK2V4dGVybiBpbnQgcHJpbnRmIChjb25zdCBjaGFyICosIC4uLik7Ci0rI3VuZGVmIHZwcmludGYKLSsjZGVmaW5lIHZwcmludGYgbGliaW50bF92cHJpbnRmCi0rZXh0ZXJuIGludCB2cHJpbnRmIChjb25zdCBjaGFyICosIHZhX2xpc3QpOwotKwotKyN1bmRlZiBzcHJpbnRmCi0rI2RlZmluZSBzcHJpbnRmIGxpYmludGxfc3ByaW50ZgotK2V4dGVybiBpbnQgc3ByaW50ZiAoY2hhciAqLCBjb25zdCBjaGFyICosIC4uLik7Ci0rI3VuZGVmIHZzcHJpbnRmCi0rI2RlZmluZSB2c3ByaW50ZiBsaWJpbnRsX3ZzcHJpbnRmCi0rZXh0ZXJuIGludCB2c3ByaW50ZiAoY2hhciAqLCBjb25zdCBjaGFyICosIHZhX2xpc3QpOwotKwotKyNpZiBASEFWRV9TTlBSSU5URkAKLSsKLSsjdW5kZWYgc25wcmludGYKLSsjZGVmaW5lIHNucHJpbnRmIGxpYmludGxfc25wcmludGYKLStleHRlcm4gaW50IHNucHJpbnRmIChjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCAuLi4pOwotKyN1bmRlZiB2c25wcmludGYKLSsjZGVmaW5lIHZzbnByaW50ZiBsaWJpbnRsX3ZzbnByaW50ZgotK2V4dGVybiBpbnQgdnNucHJpbnRmIChjaGFyICosIHNpemVfdCwgY29uc3QgY2hhciAqLCB2YV9saXN0KTsKLSsKLSsjZW5kaWYKLSsKLSsjaWYgQEhBVkVfQVNQUklOVEZACi0rCi0rI3VuZGVmIGFzcHJpbnRmCi0rI2RlZmluZSBhc3ByaW50ZiBsaWJpbnRsX2FzcHJpbnRmCi0rZXh0ZXJuIGludCBhc3ByaW50ZiAoY2hhciAqKiwgY29uc3QgY2hhciAqLCAuLi4pOwotKyN1bmRlZiB2YXNwcmludGYKLSsjZGVmaW5lIHZhc3ByaW50ZiBsaWJpbnRsX3Zhc3ByaW50ZgotK2V4dGVybiBpbnQgdmFzcHJpbnRmIChjaGFyICoqLCBjb25zdCBjaGFyICosIHZhX2xpc3QpOwotKwotKyNlbmRpZgotKwotKyNpZiBASEFWRV9XUFJJTlRGQAotKwotKyN1bmRlZiBmd3ByaW50ZgotKyNkZWZpbmUgZndwcmludGYgbGliaW50bF9md3ByaW50ZgotK2V4dGVybiBpbnQgZndwcmludGYgKEZJTEUgKiwgY29uc3Qgd2NoYXJfdCAqLCAuLi4pOwotKyN1bmRlZiB2ZndwcmludGYKLSsjZGVmaW5lIHZmd3ByaW50ZiBsaWJpbnRsX3Zmd3ByaW50ZgotK2V4dGVybiBpbnQgdmZ3cHJpbnRmIChGSUxFICosIGNvbnN0IHdjaGFyX3QgKiwgdmFfbGlzdCk7Ci0rCi0rI3VuZGVmIHdwcmludGYKLSsjZGVmaW5lIHdwcmludGYgbGliaW50bF93cHJpbnRmCi0rZXh0ZXJuIGludCB3cHJpbnRmIChjb25zdCB3Y2hhcl90ICosIC4uLik7Ci0rI3VuZGVmIHZ3cHJpbnRmCi0rI2RlZmluZSB2d3ByaW50ZiBsaWJpbnRsX3Z3cHJpbnRmCi0rZXh0ZXJuIGludCB2d3ByaW50ZiAoY29uc3Qgd2NoYXJfdCAqLCB2YV9saXN0KTsKLSsKLSsjdW5kZWYgc3dwcmludGYKLSsjZGVmaW5lIHN3cHJpbnRmIGxpYmludGxfc3dwcmludGYKLStleHRlcm4gaW50IHN3cHJpbnRmICh3Y2hhcl90ICosIHNpemVfdCwgY29uc3Qgd2NoYXJfdCAqLCAuLi4pOwotKyN1bmRlZiB2c3dwcmludGYKLSsjZGVmaW5lIHZzd3ByaW50ZiBsaWJpbnRsX3Zzd3ByaW50ZgotK2V4dGVybiBpbnQgdnN3cHJpbnRmICh3Y2hhcl90ICosIHNpemVfdCwgY29uc3Qgd2NoYXJfdCAqLCB2YV9saXN0KTsKLSsKLSsjZW5kaWYKLSsKLSsjZW5kaWYKLSsKLSsKLSsvKiBTdXBwb3J0IGZvciByZWxvY2F0YWJsZSBwYWNrYWdlcy4gICovCi0rCi0rLyogU2V0cyB0aGUgb3JpZ2luYWwgYW5kIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbiBwcmVmaXggb2YgdGhlIHBhY2thZ2UuCi0rICAgUmVsb2NhdGlvbiBzaW1wbHkgcmVwbGFjZXMgYSBwYXRobmFtZSBzdGFydGluZyB3aXRoIHRoZSBvcmlnaW5hbCBwcmVmaXgKLSsgICBieSB0aGUgY29ycmVzcG9uZGluZyBwYXRobmFtZSB3aXRoIHRoZSBjdXJyZW50IHByZWZpeCBpbnN0ZWFkLiAgQm90aAotKyAgIHByZWZpeGVzIHNob3VsZCBiZSBkaXJlY3RvcnkgbmFtZXMgd2l0aG91dCB0cmFpbGluZyBzbGFzaCAoaS5lLiB1c2UgIiIKLSsgICBpbnN0ZWFkIG9mICIvIikuICAqLwotKyNkZWZpbmUgbGliaW50bF9zZXRfcmVsb2NhdGlvbl9wcmVmaXggbGliaW50bF9zZXRfcmVsb2NhdGlvbl9wcmVmaXgKLStleHRlcm4gdm9pZAotKyAgICAgICBsaWJpbnRsX3NldF9yZWxvY2F0aW9uX3ByZWZpeCAoY29uc3QgY2hhciAqb3JpZ19wcmVmaXgsCi0rCQkJCSAgICAgIGNvbnN0IGNoYXIgKmN1cnJfcHJlZml4KTsKLSsKLSsKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rCi0rI2VuZGlmIC8qIGxpYmludGwuaCAqLwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2xpbnV4LW1zZy5zZWQJMTk5OC0wNC0yNiAwOToyMDo1Mi4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvbGludXgtbXNnLnNlZAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotQEAgLTEsMTAwICswLDAgQEAKLS0jIHBvMm1zZy5zZWQgLSBDb252ZXJ0IFVuaWZvcnVtIHN0eWxlIC5wbyBmaWxlIHRvIExpbnV4IHN0eWxlIC5tc2cgZmlsZQotLSMgQ29weXJpZ2h0IChDKSAxOTk1IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLSMgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgotLSMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotLSMgYW55IGxhdGVyIHZlcnNpb24uCi0tIwotLSMgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSMgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLSMgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0jCi0tIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotLSMgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLS0jIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuCi0tIwotLSMKLS0jIFRoZSBmaXJzdCBkaXJlY3RpdmUgaW4gdGhlIC5tc2cgc2hvdWxkIGJlIHRoZSBkZWZpbml0aW9uIG9mIHRoZQotLSMgbWVzc2FnZSBzZXQgbnVtYmVyLiAgV2UgdXNlIGFsd2F5cyBzZXQgbnVtYmVyIDEuCi0tIwotLTEgewotLSAgaVwKLS0kc2V0IDEgIyBBdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYnkgcG8ybXNnLnNlZAotLSAgaAotLSAgcy8uKi8wLwotLSAgeAotLX0KLS0jCi0tIyBNaXRjaCdzIG9sZCBjYXRhbG9nIGZvcm1hdCBkb2VzIG5vdCBhbGxvdyBjb21tZW50cy4KLS0jCi0tIyBXZSBjb3B5IHRoZSBvcmlnaW5hbCBtZXNzYWdlIGFzIGEgY29tbWVudCBpbnRvIHRoZSAubXNnIGZpbGUuCi0tIwotLS9ebXNnaWQvIHsKLS0gIHMvbXNnaWRbIAldKiIvLwotLSMKLS0jIFRoaXMgZG9lcyBub3Qgd29yayBub3cgd2l0aCB0aGUgbmV3IGZvcm1hdC4KLS0jIC8iJC8hIHsKLS0jICAgcy9cXCQvLwotLSMgICBzLyQvIC4uLiAobW9yZSBsaW5lcyBmb2xsb3dpbmcpIi8KLS0jIH0KLS0gIHgKLS0jIFRoZSBmb2xsb3dpbmcgbmljZSBzb2x1dGlvbiBpcyBieQotLSMgQnJ1bm8gPEhhaWJsZUBtYTJzMi5tYXRoZW1hdGlrLnVuaS1rYXJsc3J1aGUuZGU+Ci0tICB0ZAotLSMgSW5jcmVtZW50IGEgZGVjaW1hbCBudW1iZXIgaW4gcGF0dGVybiBzcGFjZS4KLS0jIEZpcnN0IGhpZGUgdHJhaWxpbmcgYDknIGRpZ2l0cy4KLS0gIDpkCi0tICBzLzlcKF8qXCkkL19cMS8KLS0gIHRkCi0tIyBBc3N1cmUgYXQgbGVhc3Qgb25lIGRpZ2l0IGlzIGF2YWlsYWJsZS4KLS0gIHMvXlwoXypcKSQvMFwxLwotLSMgSW5jcmVtZW50IHRoZSBsYXN0IGRpZ2l0LgotLSAgcy84XChfKlwpJC85XDEvCi0tICBzLzdcKF8qXCkkLzhcMS8KLS0gIHMvNlwoXypcKSQvN1wxLwotLSAgcy81XChfKlwpJC82XDEvCi0tICBzLzRcKF8qXCkkLzVcMS8KLS0gIHMvM1woXypcKSQvNFwxLwotLSAgcy8yXChfKlwpJC8zXDEvCi0tICBzLzFcKF8qXCkkLzJcMS8KLS0gIHMvMFwoXypcKSQvMVwxLwotLSMgQ29udmVydCB0aGUgaGlkZGVuIGA5JyBkaWdpdHMgdG8gYDAncy4KLS0gIHMvXy8wL2cKLS0gIHgKLS0gIEcKLS0gIHMvXCguKlwpIlxuXChbMC05XSpcKS8kICNcMiBPcmlnaW5hbCBNZXNzYWdlOihcMSkvcAotLX0KLS0jCi0tIyBUaGUgLm1zZyBmaWxlIGNvbnRhaW5zLCBvdGhlciB0aGVuIHRoZSAucG8gZmlsZSwgb25seSB0aGUgdHJhbnNsYXRpb25zCi0tIyBidXQgZWFjaCBnaXZlbiBhIHVuaXF1ZSBJRC4gIFN0YXJ0aW5nIGZyb20gMSBhbmQgaW5jcmVtZW50aW5nIGJ5IDEgZm9yCi0tIyBlYWNoIG1lc3NhZ2Ugd2UgYXNzaWduIHRoZW0gdG8gdGhlIG1lc3NhZ2VzLgotLSMgSXQgaXMgaW1wb3J0YW50IHRoYXQgdGhlIC5wbyBmaWxlIHVzZWQgdG8gZ2VuZXJhdGUgdGhlIGNhdC1pZC10YmwuYyBmaWxlCi0tIyAod2l0aCBwby10by10YmwpIGlzIHRoZSBzYW1lIGFzIHRoZSBvbmUgdXNlZCBoZXJlLiAgKEF0IGxlYXN0IHRoZSBvcmRlcgotLSMgb2YgZGVjbGFyYXRpb25zIG11c3Qgbm90IGJlIGNoYW5nZWQuKQotLSMKLS0vXm1zZ3N0ci8gewotLSAgcy9tc2dzdHJbIAldKiJcKC4qXCkiLyMgXDEvCi0tIyBDbGVhciBzdWJzdGl0dXRpb24gZmxhZy4KLS0gIHRiCi0tIyBBcHBlbmQgdGhlIG5leHQgbGluZS4KLS0gIDpiCi0tICBOCi0tIyBMb29rIHdoZXRoZXIgc2Vjb25kIHBhcnQgaXMgY29udGludWF0aW9uIGxpbmUuCi0tICBzL1woLipcblwpIlwoLipcKSIvXDFcMi8KLS0jIFllcywgdGhlbiBicmFuY2guCi0tICB0YQotLSAgUAotLSAgRAotLSMgTm90ZSB0aGF0IEQgaW5jbHVkZXMgYSBqdW1wIHRvIHRoZSBzdGFydCEhCi0tIyBXZSBmb3VuZCBhIGNvbnRpbnVhdGlvbiBsaW5lLiAgQnV0IGJlZm9yZSBwcmludGluZyBpbnNlcnQgJ1wnLgotLSAgOmEKLS0gIHMvXCguKlwpXChcbi4qXCkvXDFcXFwyLwotLSAgUAotLSMgV2UgY2Fubm90IHVzZSBEIGhlcmUuCi0tICBzLy4qXG5cKC4qXCkvXDEvCi0tICB0YgotLX0KLS1kCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvbG9hZGluZm8uaAkxOTk4LTA0LTI2IDA5OjIwOjUyLjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9sb2FkaW5mby5oCTIwMDQtMDktMTIgMTQ6NDA6MzQuNDY4NzMwOTEyIC0wNDAwCi1AQCAtMSw5ICsxLDU0IEBACi0tI2lmbmRlZiBQQVJBTVMKLS0jIGlmIF9fU1REQ19fCi0tIyAgZGVmaW5lIFBBUkFNUyhhcmdzKSBhcmdzCi0tIyBlbHNlCi0tIyAgZGVmaW5lIFBBUkFNUyhhcmdzKSAoKQotLSMgZW5kaWYKLSsvKiBDb3B5cmlnaHQgKEMpIDE5OTYtMTk5OSwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQyBMaWJyYXJ5LgotKyAgIENvbnRyaWJ1dGVkIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk2LgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZuZGVmIF9MT0FESU5GT19ICi0rI2RlZmluZSBfTE9BRElORk9fSAkxCi0rCi0rLyogRGVjbGFyYXRpb25zIG9mIGxvY2FsZSBkZXBlbmRlbnQgY2F0YWxvZyBsb29rdXAgZnVuY3Rpb25zLgotKyAgIEltcGxlbWVudGVkIGluCi0rCi0rICAgICBsb2NhbGVhbGlhcy5jICAgIFBvc3NpYmx5IHJlcGxhY2UgYSBsb2NhbGUgbmFtZSBieSBhbm90aGVyLgotKyAgICAgZXhwbG9kZW5hbWUuYyAgICBTcGxpdCBhIGxvY2FsZSBuYW1lIGludG8gaXRzIHZhcmlvdXMgZmllbGRzLgotKyAgICAgbDEwbmZsaXN0LmMgICAgICBHZW5lcmF0ZSBhIGxpc3Qgb2YgZmlsZW5hbWVzIG9mIHBvc3NpYmxlIG1lc3NhZ2UgY2F0YWxvZ3MuCi0rICAgICBmaW5kZG9tYWluLmMgICAgIEZpbmQgYW5kIG9wZW4gdGhlIHJlbGV2YW50IG1lc3NhZ2UgY2F0YWxvZ3MuCi0rCi0rICAgVGhlIG1haW4gZnVuY3Rpb24gX25sX2ZpbmRfZG9tYWluKCkgaW4gZmluZGRvbWFpbi5jIGlzIGRlY2xhcmVkCi0rICAgaW4gZ2V0dGV4dFAuaC4KLSsgKi8KLSsKLSsjaWZuZGVmIGludGVybmFsX2Z1bmN0aW9uCi0rIyBkZWZpbmUgaW50ZXJuYWxfZnVuY3Rpb24KLSsjZW5kaWYKLSsKLSsvKiBUZWxsIHRoZSBjb21waWxlciB3aGVuIGEgY29uZGl0aW9uYWwgb3IgaW50ZWdlciBleHByZXNzaW9uIGlzCi0rICAgYWxtb3N0IGFsd2F5cyB0cnVlIG9yIGFsbW9zdCBhbHdheXMgZmFsc2UuICAqLwotKyNpZm5kZWYgSEFWRV9CVUlMVElOX0VYUEVDVAotKyMgZGVmaW5lIF9fYnVpbHRpbl9leHBlY3QoZXhwciwgdmFsKSAoZXhwcikKLSsjZW5kaWYKLSsKLSsvKiBTZXBhcmF0b3IgaW4gUEFUSCBsaWtlIGxpc3RzIG9mIHBhdGhuYW1lcy4gICovCi0rI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fIHx8IGRlZmluZWQgX19FTVhfXyB8fCBkZWZpbmVkIF9fREpHUFBfXwotKyAgLyogV2luMzIsIE9TLzIsIERPUyAqLwotKyMgZGVmaW5lIFBBVEhfU0VQQVJBVE9SICc7JwotKyNlbHNlCi0rICAvKiBVbml4ICovCi0rIyBkZWZpbmUgUEFUSF9TRVBBUkFUT1IgJzonCi0gI2VuZGlmCi0gCi0gLyogRW5jb2Rpbmcgb2YgbG9jYWxlIG5hbWUgcGFydHMuICAqLwotQEAgLTMyLDI3ICs3Nyw2OSBAQAotIH07Ci0gCi0gCi0tZXh0ZXJuIGNvbnN0IGNoYXIgKl9ubF9ub3JtYWxpemVfY29kZXNldCBQQVJBTVMgKChjb25zdCBjaGFyICpjb2Rlc2V0LAotLQkJCQkJCSAgc2l6ZV90IG5hbWVfbGVuKSk7Ci0rLyogTm9ybWFsaXplIGNvZGVzZXQgbmFtZS4gIFRoZXJlIGlzIG5vIHN0YW5kYXJkIGZvciB0aGUgY29kZXNldAotKyAgIG5hbWVzLiAgTm9ybWFsaXphdGlvbiBhbGxvd3MgdGhlIHVzZXIgdG8gdXNlIGFueSBvZiB0aGUgY29tbW9uCi0rICAgbmFtZXMuICBUaGUgcmV0dXJuIHZhbHVlIGlzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBhbmQgaGFzIHRvIGJlCi0rICAgZnJlZWQgYnkgdGhlIGNhbGxlci4gICovCi0rZXh0ZXJuIGNvbnN0IGNoYXIgKl9ubF9ub3JtYWxpemVfY29kZXNldCAoY29uc3QgY2hhciAqY29kZXNldCwKLSsJCQkJCSAgc2l6ZV90IG5hbWVfbGVuKTsKLSAKLSsvKiBMb29rdXAgYSBsb2NhbGUgZGVwZW5kZW50IGZpbGUuCi0rICAgKkwxME5GSUxFX0xJU1QgZGVub3RlcyBhIHBvb2wgb2YgbG9va3VwIHJlc3VsdHMgb2YgbG9jYWxlIGRlcGVuZGVudAotKyAgIGZpbGVzIG9mIHRoZSBzYW1lIGtpbmQsIHNvcnRlZCBpbiBkZWNyZWFzaW5nIG9yZGVyIG9mIC0+ZmlsZW5hbWUuCi0rICAgRElSTElTVCBhbmQgRElSTElTVF9MRU4gYXJlIGFuIGFyZ3ogbGlzdCBvZiBkaXJlY3RvcmllcyBpbiB3aGljaCB0bwotKyAgIGxvb2ssIGNvbnRhaW5pbmcgYXQgbGVhc3Qgb25lIGRpcmVjdG9yeSAoaS5lLiBESVJMSVNUX0xFTiA+IDApLgotKyAgIE1BU0ssIExBTkdVQUdFLCBURVJSSVRPUlksIENPREVTRVQsIE5PUk1BTElaRURfQ09ERVNFVCwgTU9ESUZJRVIsCi0rICAgU1BFQ0lBTCwgU1BPTlNPUiwgUkVWSVNJT04gYXJlIHRoZSBwaWVjZXMgb2YgdGhlIGxvY2FsZSBuYW1lLCBhcwotKyAgIHByb2R1Y2VkIGJ5IF9ubF9leHBsb2RlX25hbWUoKS4gIEZJTEVOQU1FIGlzIHRoZSBmaWxlbmFtZSBzdWZmaXguCi0rICAgVGhlIHJldHVybiB2YWx1ZSBpcyB0aGUgbG9va3VwIHJlc3VsdCwgZWl0aGVyIGZvdW5kIGluICpMMTBORklMRV9MSVNULAotKyAgIG9yIC0gaWYgRE9fQUxMT0NBVEUgaXMgbm9uemVybyAtIGZyZXNobHkgYWxsb2NhdGVkLCBvciBwb3NzaWJseSBOVUxMLgotKyAgIElmIHRoZSByZXR1cm4gdmFsdWUgaXMgbm9uLU5VTEwsIGl0IGlzIGFkZGVkIHRvICpMMTBORklMRV9MSVNULCBhbmQKLSsgICBpdHMgLT5uZXh0IGZpZWxkIGRlbm90ZXMgdGhlIGNoYWluaW5nIGluc2lkZSAqTDEwTkZJTEVfTElTVCwgYW5kCi0rICAgZnVydGhlcm1vcmUgaXRzIC0+c3VjY2Vzc29yW10gZmllbGQgY29udGFpbnMgYSBsaXN0IG9mIG90aGVyIGxvb2t1cAotKyAgIHJlc3VsdHMgZnJvbSB3aGljaCB0aGlzIGxvb2t1cCByZXN1bHQgaW5oZXJpdHMuICAqLwotIGV4dGVybiBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoKLS1fbmxfbWFrZV9sMTBuZmxpc3QgUEFSQU1TICgoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqKmwxMG5maWxlX2xpc3QsCi0tCQkJICAgIGNvbnN0IGNoYXIgKmRpcmxpc3QsIHNpemVfdCBkaXJsaXN0X2xlbiwgaW50IG1hc2ssCi0tCQkJICAgIGNvbnN0IGNoYXIgKmxhbmd1YWdlLCBjb25zdCBjaGFyICp0ZXJyaXRvcnksCi0tCQkJICAgIGNvbnN0IGNoYXIgKmNvZGVzZXQsCi0tCQkJICAgIGNvbnN0IGNoYXIgKm5vcm1hbGl6ZWRfY29kZXNldCwKLS0JCQkgICAgY29uc3QgY2hhciAqbW9kaWZpZXIsIGNvbnN0IGNoYXIgKnNwZWNpYWwsCi0tCQkJICAgIGNvbnN0IGNoYXIgKnNwb25zb3IsIGNvbnN0IGNoYXIgKnJldmlzaW9uLAotLQkJCSAgICBjb25zdCBjaGFyICpmaWxlbmFtZSwgaW50IGRvX2FsbG9jYXRlKSk7Ci0rX25sX21ha2VfbDEwbmZsaXN0IChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICoqbDEwbmZpbGVfbGlzdCwKLSsJCSAgICBjb25zdCBjaGFyICpkaXJsaXN0LCBzaXplX3QgZGlybGlzdF9sZW4sIGludCBtYXNrLAotKwkJICAgIGNvbnN0IGNoYXIgKmxhbmd1YWdlLCBjb25zdCBjaGFyICp0ZXJyaXRvcnksCi0rCQkgICAgY29uc3QgY2hhciAqY29kZXNldCwgY29uc3QgY2hhciAqbm9ybWFsaXplZF9jb2Rlc2V0LAotKwkJICAgIGNvbnN0IGNoYXIgKm1vZGlmaWVyLCBjb25zdCBjaGFyICpzcGVjaWFsLAotKwkJICAgIGNvbnN0IGNoYXIgKnNwb25zb3IsIGNvbnN0IGNoYXIgKnJldmlzaW9uLAotKwkJICAgIGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBpbnQgZG9fYWxsb2NhdGUpOwotIAotKy8qIExvb2t1cCB0aGUgcmVhbCBsb2NhbGUgbmFtZSBmb3IgYSBsb2NhbGUgYWxpYXMgTkFNRSwgb3IgTlVMTCBpZgotKyAgIE5BTUUgaXMgbm90IGEgbG9jYWxlIGFsaWFzIChidXQgcG9zc2libHkgYSByZWFsIGxvY2FsZSBuYW1lKS4KLSsgICBUaGUgcmV0dXJuIHZhbHVlIGlzIHN0YXRpY2FsbHkgYWxsb2NhdGVkIGFuZCBtdXN0IG5vdCBiZSBmcmVlZC4gICovCi0rZXh0ZXJuIGNvbnN0IGNoYXIgKl9ubF9leHBhbmRfYWxpYXMgKGNvbnN0IGNoYXIgKm5hbWUpOwotIAotLWV4dGVybiBjb25zdCBjaGFyICpfbmxfZXhwYW5kX2FsaWFzIFBBUkFNUyAoKGNvbnN0IGNoYXIgKm5hbWUpKTsKLSsvKiBTcGxpdCBhIGxvY2FsZSBuYW1lIE5BTUUgaW50byBpdHMgcGllY2VzOiBsYW5ndWFnZSwgbW9kaWZpZXIsCi0rICAgdGVycml0b3J5LCBjb2Rlc2V0LCBzcGVjaWFsLCBzcG9uc29yLCByZXZpc2lvbi4KLSsgICBOQU1FIGdldHMgZGVzdHJ1Y3RpdmVseSBtb2RpZmllZDogTlVMIGJ5dGVzIGFyZSBpbnNlcnRlZCBoZXJlIGFuZAotKyAgIHRoZXJlLiAgKkxBTkdVQUdFIGdldHMgYXNzaWduZWQgTkFNRS4gIEVhY2ggb2YgKk1PRElGSUVSLCAqVEVSUklUT1JZLAotKyAgICpDT0RFU0VULCAqU1BFQ0lBTCwgKlNQT05TT1IsICpSRVZJU0lPTiBnZXRzIGFzc2lnbmVkIGVpdGhlciBhCi0rICAgcG9pbnRlciBpbnRvIHRoZSBvbGQgTkFNRSBzdHJpbmcsIG9yIE5VTEwuICAqTk9STUFMSVpFRF9DT0RFU0VUCi0rICAgZ2V0cyBhc3NpZ25lZCB0aGUgZXhwYW5kZWQgKkNPREVTRVQsIGlmIGl0IGlzIGRpZmZlcmVudCBmcm9tICpDT0RFU0VUOwotKyAgIHRoaXMgb25lIGlzIGR5bmFtaWNhbGx5IGFsbG9jYXRlZCBhbmQgaGFzIHRvIGJlIGZyZWVkIGJ5IHRoZSBjYWxsZXIuCi0rICAgVGhlIHJldHVybiB2YWx1ZSBpcyBhIGJpdG1hc2ssIHdoZXJlIGVhY2ggYml0IGNvcnJlc3BvbmRzIHRvIG9uZQotKyAgIGZpbGxlZC1pbiB2YWx1ZToKLSsgICAgIFhQR19NT0RJRklFUiwgQ0VOX0FVRElFTkNFICBmb3IgKk1PRElGSUVSLAotKyAgICAgVEVSUklUT1JZICAgICAgICAgICAgICAgICAgIGZvciAqVEVSUklUT1JZLAotKyAgICAgWFBHX0NPREVTRVQgICAgICAgICAgICAgICAgIGZvciAqQ09ERVNFVCwKLSsgICAgIFhQR19OT1JNX0NPREVTRVQgICAgICAgICAgICBmb3IgKk5PUk1BTElaRURfQ09ERVNFVCwKLSsgICAgIENFTl9TUEVDSUFMICAgICAgICAgICAgICAgICBmb3IgKlNQRUNJQUwsCi0rICAgICBDRU5fU1BPTlNPUiAgICAgICAgICAgICAgICAgZm9yICpTUE9OU09SLAotKyAgICAgQ0VOX1JFVklTSU9OICAgICAgICAgICAgICAgIGZvciAqUkVWSVNJT04uCi0rICovCi0rZXh0ZXJuIGludCBfbmxfZXhwbG9kZV9uYW1lIChjaGFyICpuYW1lLCBjb25zdCBjaGFyICoqbGFuZ3VhZ2UsCi0rCQkJICAgICBjb25zdCBjaGFyICoqbW9kaWZpZXIsIGNvbnN0IGNoYXIgKip0ZXJyaXRvcnksCi0rCQkJICAgICBjb25zdCBjaGFyICoqY29kZXNldCwKLSsJCQkgICAgIGNvbnN0IGNoYXIgKipub3JtYWxpemVkX2NvZGVzZXQsCi0rCQkJICAgICBjb25zdCBjaGFyICoqc3BlY2lhbCwgY29uc3QgY2hhciAqKnNwb25zb3IsCi0rCQkJICAgICBjb25zdCBjaGFyICoqcmV2aXNpb24pOwotIAotLWV4dGVybiBpbnQgX25sX2V4cGxvZGVfbmFtZSBQQVJBTVMgKChjaGFyICpuYW1lLCBjb25zdCBjaGFyICoqbGFuZ3VhZ2UsCi0tCQkJCSAgICAgY29uc3QgY2hhciAqKm1vZGlmaWVyLAotLQkJCQkgICAgIGNvbnN0IGNoYXIgKip0ZXJyaXRvcnksCi0tCQkJCSAgICAgY29uc3QgY2hhciAqKmNvZGVzZXQsCi0tCQkJCSAgICAgY29uc3QgY2hhciAqKm5vcm1hbGl6ZWRfY29kZXNldCwKLS0JCQkJICAgICBjb25zdCBjaGFyICoqc3BlY2lhbCwKLS0JCQkJICAgICBjb25zdCBjaGFyICoqc3BvbnNvciwKLS0JCQkJICAgICBjb25zdCBjaGFyICoqcmV2aXNpb24pKTsKLSsvKiBTcGxpdCBhIGxvY2FsZSBuYW1lIE5BTUUgaW50byBhIGxlYWRpbmcgbGFuZ3VhZ2UgcGFydCBhbmQgYWxsIHRoZQotKyAgIHJlc3QuICBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBmaXJzdCBjaGFyYWN0ZXIgYWZ0ZXIgdGhlIGxhbmd1YWdlLAotKyAgIGkuZS4gdG8gdGhlIGZpcnN0IGJ5dGUgb2YgdGhlIHJlc3QuICAqLwotK2V4dGVybiBjaGFyICpfbmxfZmluZF9sYW5ndWFnZSAoY29uc3QgY2hhciAqbmFtZSk7Ci0rCi0rI2VuZGlmCS8qIGxvYWRpbmZvLmggKi8KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9sb2FkbXNnY2F0LmMJMTk5OC0wNC0yNiAwOToyMjozNy4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvbG9hZG1zZ2NhdC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNDczNzMwMTUyIC0wNDAwCi1AQCAtMSw0MiArMSw0NTUgQEAKLS0vKiBMb2FkIG5lZWRlZCBtZXNzYWdlIGNhdGFsb2dzCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKy8qIExvYWQgbmVlZGVkIG1lc3NhZ2UgY2F0YWxvZ3MuCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTksIDIwMDAtMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSAgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rLyogVGVsbCBnbGliYydzIDxzdHJpbmcuaD4gdG8gcHJvdmlkZSBhIHByb3RvdHlwZSBmb3IgbWVtcGNweSgpLgotKyAgIFRoaXMgbXVzdCBjb21lIGJlZm9yZSA8Y29uZmlnLmg+IGJlY2F1c2UgPGNvbmZpZy5oPiBtYXkgaW5jbHVkZQotKyAgIDxmZWF0dXJlcy5oPiwgYW5kIG9uY2UgPGZlYXR1cmVzLmg+IGhhcyBiZWVuIGluY2x1ZGVkLCBpdCdzIHRvbyBsYXRlLiAgKi8KLSsjaWZuZGVmIF9HTlVfU09VUkNFCi0rIyBkZWZpbmUgX0dOVV9TT1VSQ0UgICAgMQotKyNlbmRpZgotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLSAjZW5kaWYKLSAKLSsjaW5jbHVkZSA8Y3R5cGUuaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0gCi0tI2lmIGRlZmluZWQgU1REQ19IRUFERVJTIHx8IGRlZmluZWQgX0xJQkMKLS0jIGluY2x1ZGUgPHN0ZGxpYi5oPgotKyNpZmRlZiBfX0dOVUNfXwotKyMgdW5kZWYgIGFsbG9jYQotKyMgZGVmaW5lIGFsbG9jYSBfX2J1aWx0aW5fYWxsb2NhCi0rIyBkZWZpbmUgSEFWRV9BTExPQ0EgMQotKyNlbHNlCi0rIyBpZmRlZiBfTVNDX1ZFUgotKyMgIGluY2x1ZGUgPG1hbGxvYy5oPgotKyMgIGRlZmluZSBhbGxvY2EgX2FsbG9jYQotKyMgZWxzZQotKyMgIGlmIGRlZmluZWQgSEFWRV9BTExPQ0FfSCB8fCBkZWZpbmVkIF9MSUJDCi0rIyAgIGluY2x1ZGUgPGFsbG9jYS5oPgotKyMgIGVsc2UKLSsjICAgaWZkZWYgX0FJWAotKyAjcHJhZ21hIGFsbG9jYQotKyMgICBlbHNlCi0rIyAgICBpZm5kZWYgYWxsb2NhCi0rY2hhciAqYWxsb2NhICgpOwotKyMgICAgZW5kaWYKLSsjICAgZW5kaWYKLSsjICBlbmRpZgotKyMgZW5kaWYKLSAjZW5kaWYKLSAKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotICNpZiBkZWZpbmVkIEhBVkVfVU5JU1REX0ggfHwgZGVmaW5lZCBfTElCQwotICMgaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2VuZGlmCi0gCi0tI2lmIChkZWZpbmVkIEhBVkVfTU1BUCAmJiBkZWZpbmVkIEhBVkVfTVVOTUFQKSB8fCBkZWZpbmVkIF9MSUJDCi0rI2lmZGVmIF9MSUJDCi0rIyBpbmNsdWRlIDxsYW5naW5mby5oPgotKyMgaW5jbHVkZSA8bG9jYWxlLmg+Ci0rI2VuZGlmCi0rCi0rI2lmIChkZWZpbmVkIEhBVkVfTU1BUCAmJiBkZWZpbmVkIEhBVkVfTVVOTUFQICYmICFkZWZpbmVkIERJU0FMTE9XX01NQVApIFwKLSsgICAgfHwgKGRlZmluZWQgX0xJQkMgJiYgZGVmaW5lZCBfUE9TSVhfTUFQUEVEX0ZJTEVTKQotICMgaW5jbHVkZSA8c3lzL21tYW4uaD4KLSsjIHVuZGVmIEhBVkVfTU1BUAotKyMgZGVmaW5lIEhBVkVfTU1BUAkxCi0rI2Vsc2UKLSsjIHVuZGVmIEhBVkVfTU1BUAotICNlbmRpZgotIAotLSNpbmNsdWRlICJnZXR0ZXh0LmgiCi0rI2lmIGRlZmluZWQgSEFWRV9TVERJTlRfSF9XSVRIX1VJTlRNQVggfHwgZGVmaW5lZCBfTElCQwotKyMgaW5jbHVkZSA8c3RkaW50Lmg+Ci0rI2VuZGlmCi0rI2lmIGRlZmluZWQgSEFWRV9JTlRUWVBFU19IIHx8IGRlZmluZWQgX0xJQkMKLSsjIGluY2x1ZGUgPGludHR5cGVzLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgImdtby5oIgotICNpbmNsdWRlICJnZXR0ZXh0UC5oIgotKyNpbmNsdWRlICJoYXNoLXN0cmluZy5oIgotKyNpbmNsdWRlICJwbHVyYWwtZXhwLmgiCi0rCi0rI2lmZGVmIF9MSUJDCi0rIyBpbmNsdWRlICIuLi9sb2NhbGUvbG9jYWxlaW5mby5oIgotKyNlbmRpZgotKwotKy8qIFByb3ZpZGUgZmFsbGJhY2sgdmFsdWVzIGZvciBtYWNyb3MgdGhhdCBvdWdodCB0byBiZSBkZWZpbmVkIGluIDxpbnR0eXBlcy5oPi4KLSsgICBOb3RlIHRoYXQgb3VyIGZhbGxiYWNrIHZhbHVlcyBuZWVkIG5vdCBiZSBsaXRlcmFsIHN0cmluZ3MsIGJlY2F1c2Ugd2UgZG9uJ3QKLSsgICB1c2UgdGhlbSB3aXRoIHByZXByb2Nlc3NvciBzdHJpbmcgY29uY2F0ZW5hdGlvbi4gICovCi0rI2lmICFkZWZpbmVkIFBSSWQ4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklkOAotKyMgZGVmaW5lIFBSSWQ4ICJkIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklpOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJaTgKLSsjIGRlZmluZSBQUklpOCAiaSIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJbzggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSW84Ci0rIyBkZWZpbmUgUFJJbzggIm8iCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXU4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl1OAotKyMgZGVmaW5lIFBSSXU4ICJ1IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl4OCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJeDgKLSsjIGRlZmluZSBQUkl4OCAieCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJWDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSVg4Ci0rIyBkZWZpbmUgUFJJWDggIlgiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWQxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZDE2Ci0rIyBkZWZpbmUgUFJJZDE2ICJkIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklpMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWkxNgotKyMgZGVmaW5lIFBSSWkxNiAiaSIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJbzE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklvMTYKLSsjIGRlZmluZSBQUklvMTYgIm8iCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXUxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdTE2Ci0rIyBkZWZpbmUgUFJJdTE2ICJ1IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl4MTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXgxNgotKyMgZGVmaW5lIFBSSXgxNiAieCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJWDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklYMTYKLSsjIGRlZmluZSBQUklYMTYgIlgiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWQzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZDMyCi0rIyBkZWZpbmUgUFJJZDMyICJkIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklpMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWkzMgotKyMgZGVmaW5lIFBSSWkzMiAiaSIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJbzMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklvMzIKLSsjIGRlZmluZSBQUklvMzIgIm8iCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXUzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdTMyCi0rIyBkZWZpbmUgUFJJdTMyICJ1IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl4MzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXgzMgotKyMgZGVmaW5lIFBSSXgzMiAieCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJWDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklYMzIKLSsjIGRlZmluZSBQUklYMzIgIlgiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWQ2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZDY0Ci0rIyBkZWZpbmUgUFJJZDY0IChzaXplb2YgKGxvbmcpID09IDggPyAibGQiIDogImxsZCIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWk2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJaTY0Ci0rIyBkZWZpbmUgUFJJaTY0IChzaXplb2YgKGxvbmcpID09IDggPyAibGkiIDogImxsaSIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSW82NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJbzY0Ci0rIyBkZWZpbmUgUFJJbzY0IChzaXplb2YgKGxvbmcpID09IDggPyAibG8iIDogImxsbyIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXU2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdTY0Ci0rIyBkZWZpbmUgUFJJdTY0IChzaXplb2YgKGxvbmcpID09IDggPyAibHUiIDogImxsdSIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXg2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJeDY0Ci0rIyBkZWZpbmUgUFJJeDY0IChzaXplb2YgKGxvbmcpID09IDggPyAibHgiIDogImxseCIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSVg2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJWDY0Ci0rIyBkZWZpbmUgUFJJWDY0IChzaXplb2YgKGxvbmcpID09IDggPyAibFgiIDogImxsWCIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWRMRUFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWRMRUFTVDgKLSsjIGRlZmluZSBQUklkTEVBU1Q4ICJkIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklpTEVBU1Q4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpTEVBU1Q4Ci0rIyBkZWZpbmUgUFJJaUxFQVNUOCAiaSIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJb0xFQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJb0xFQVNUOAotKyMgZGVmaW5lIFBSSW9MRUFTVDggIm8iCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXVMRUFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXVMRUFTVDgKLSsjIGRlZmluZSBQUkl1TEVBU1Q4ICJ1IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl4TEVBU1Q4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4TEVBU1Q4Ci0rIyBkZWZpbmUgUFJJeExFQVNUOCAieCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJWExFQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJWExFQVNUOAotKyMgZGVmaW5lIFBSSVhMRUFTVDggIlgiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWRMRUFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklkTEVBU1QxNgotKyMgZGVmaW5lIFBSSWRMRUFTVDE2ICJkIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklpTEVBU1QxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJaUxFQVNUMTYKLSsjIGRlZmluZSBQUklpTEVBU1QxNiAiaSIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJb0xFQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSW9MRUFTVDE2Ci0rIyBkZWZpbmUgUFJJb0xFQVNUMTYgIm8iCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXVMRUFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl1TEVBU1QxNgotKyMgZGVmaW5lIFBSSXVMRUFTVDE2ICJ1IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl4TEVBU1QxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJeExFQVNUMTYKLSsjIGRlZmluZSBQUkl4TEVBU1QxNiAieCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJWExFQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSVhMRUFTVDE2Ci0rIyBkZWZpbmUgUFJJWExFQVNUMTYgIlgiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWRMRUFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklkTEVBU1QzMgotKyMgZGVmaW5lIFBSSWRMRUFTVDMyICJkIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklpTEVBU1QzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJaUxFQVNUMzIKLSsjIGRlZmluZSBQUklpTEVBU1QzMiAiaSIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJb0xFQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSW9MRUFTVDMyCi0rIyBkZWZpbmUgUFJJb0xFQVNUMzIgIm8iCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXVMRUFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl1TEVBU1QzMgotKyMgZGVmaW5lIFBSSXVMRUFTVDMyICJ1IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl4TEVBU1QzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJeExFQVNUMzIKLSsjIGRlZmluZSBQUkl4TEVBU1QzMiAieCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJWExFQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSVhMRUFTVDMyCi0rIyBkZWZpbmUgUFJJWExFQVNUMzIgIlgiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWRMRUFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklkTEVBU1Q2NAotKyMgZGVmaW5lIFBSSWRMRUFTVDY0IFBSSWQ2NAotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklpTEVBU1Q2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJaUxFQVNUNjQKLSsjIGRlZmluZSBQUklpTEVBU1Q2NCBQUklpNjQKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJb0xFQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSW9MRUFTVDY0Ci0rIyBkZWZpbmUgUFJJb0xFQVNUNjQgUFJJbzY0Ci0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXVMRUFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl1TEVBU1Q2NAotKyMgZGVmaW5lIFBSSXVMRUFTVDY0IFBSSXU2NAotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl4TEVBU1Q2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJeExFQVNUNjQKLSsjIGRlZmluZSBQUkl4TEVBU1Q2NCBQUkl4NjQKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJWExFQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSVhMRUFTVDY0Ci0rIyBkZWZpbmUgUFJJWExFQVNUNjQgUFJJWDY0Ci0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWRGQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJZEZBU1Q4Ci0rIyBkZWZpbmUgUFJJZEZBU1Q4ICJkIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklpRkFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWlGQVNUOAotKyMgZGVmaW5lIFBSSWlGQVNUOCAiaSIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJb0ZBU1Q4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklvRkFTVDgKLSsjIGRlZmluZSBQUklvRkFTVDggIm8iCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXVGQVNUOCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJdUZBU1Q4Ci0rIyBkZWZpbmUgUFJJdUZBU1Q4ICJ1IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl4RkFTVDggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXhGQVNUOAotKyMgZGVmaW5lIFBSSXhGQVNUOCAieCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJWEZBU1Q4IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklYRkFTVDgKLSsjIGRlZmluZSBQUklYRkFTVDggIlgiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWRGQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWRGQVNUMTYKLSsjIGRlZmluZSBQUklkRkFTVDE2ICJkIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklpRkFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpRkFTVDE2Ci0rIyBkZWZpbmUgUFJJaUZBU1QxNiAiaSIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJb0ZBU1QxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJb0ZBU1QxNgotKyMgZGVmaW5lIFBSSW9GQVNUMTYgIm8iCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXVGQVNUMTYgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXVGQVNUMTYKLSsjIGRlZmluZSBQUkl1RkFTVDE2ICJ1IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl4RkFTVDE2IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4RkFTVDE2Ci0rIyBkZWZpbmUgUFJJeEZBU1QxNiAieCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJWEZBU1QxNiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJWEZBU1QxNgotKyMgZGVmaW5lIFBSSVhGQVNUMTYgIlgiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWRGQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWRGQVNUMzIKLSsjIGRlZmluZSBQUklkRkFTVDMyICJkIgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklpRkFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpRkFTVDMyCi0rIyBkZWZpbmUgUFJJaUZBU1QzMiAiaSIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJb0ZBU1QzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJb0ZBU1QzMgotKyMgZGVmaW5lIFBSSW9GQVNUMzIgIm8iCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXVGQVNUMzIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXVGQVNUMzIKLSsjIGRlZmluZSBQUkl1RkFTVDMyICJ1IgotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl4RkFTVDMyIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4RkFTVDMyCi0rIyBkZWZpbmUgUFJJeEZBU1QzMiAieCIKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJWEZBU1QzMiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJWEZBU1QzMgotKyMgZGVmaW5lIFBSSVhGQVNUMzIgIlgiCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWRGQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWRGQVNUNjQKLSsjIGRlZmluZSBQUklkRkFTVDY0IFBSSWQ2NAotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklpRkFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklpRkFTVDY0Ci0rIyBkZWZpbmUgUFJJaUZBU1Q2NCBQUklpNjQKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJb0ZBU1Q2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJb0ZBU1Q2NAotKyMgZGVmaW5lIFBSSW9GQVNUNjQgUFJJbzY0Ci0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXVGQVNUNjQgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXVGQVNUNjQKLSsjIGRlZmluZSBQUkl1RkFTVDY0IFBSSXU2NAotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUkl4RkFTVDY0IHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUkl4RkFTVDY0Ci0rIyBkZWZpbmUgUFJJeEZBU1Q2NCBQUkl4NjQKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJWEZBU1Q2NCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJWEZBU1Q2NAotKyMgZGVmaW5lIFBSSVhGQVNUNjQgUFJJWDY0Ci0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWRNQVggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWRNQVgKLSsjIGRlZmluZSBQUklkTUFYIChzaXplb2YgKHVpbnRtYXhfdCkgPT0gc2l6ZW9mIChsb25nKSA/ICJsZCIgOiAibGxkIikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJaU1BWCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJaU1BWAotKyMgZGVmaW5lIFBSSWlNQVggKHNpemVvZiAodWludG1heF90KSA9PSBzaXplb2YgKGxvbmcpID8gImxpIiA6ICJsbGkiKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvTUFYIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklvTUFYCi0rIyBkZWZpbmUgUFJJb01BWCAoc2l6ZW9mICh1aW50bWF4X3QpID09IHNpemVvZiAobG9uZykgPyAibG8iIDogImxsbyIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXVNQVggfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXVNQVgKLSsjIGRlZmluZSBQUkl1TUFYIChzaXplb2YgKHVpbnRtYXhfdCkgPT0gc2l6ZW9mIChsb25nKSA/ICJsdSIgOiAibGx1IikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJeE1BWCB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJeE1BWAotKyMgZGVmaW5lIFBSSXhNQVggKHNpemVvZiAodWludG1heF90KSA9PSBzaXplb2YgKGxvbmcpID8gImx4IiA6ICJsbHgiKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYTUFYIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklYTUFYCi0rIyBkZWZpbmUgUFJJWE1BWCAoc2l6ZW9mICh1aW50bWF4X3QpID09IHNpemVvZiAobG9uZykgPyAibFgiIDogImxsWCIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSWRQVFIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSWRQVFIKLSsjIGRlZmluZSBQUklkUFRSIFwKLSsgIChzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChsb25nKSA/ICJsZCIgOiBcCi0rICAgc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAoaW50KSA/ICJkIiA6IFwKLSsgICAibGxkIikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJaVBUUiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJaVBUUgotKyMgZGVmaW5lIFBSSWlQVFIgXAotKyAgKHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGxvbmcpID8gImxpIiA6IFwKLSsgICBzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChpbnQpID8gImkiIDogXAotKyAgICJsbGkiKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklvUFRSIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklvUFRSCi0rIyBkZWZpbmUgUFJJb1BUUiBcCi0rICAoc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAobG9uZykgPyAibG8iIDogXAotKyAgIHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGludCkgPyAibyIgOiBcCi0rICAgImxsbyIpCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkIFBSSXVQVFIgfHwgUFJJX01BQ1JPU19CUk9LRU4KLSsjIHVuZGVmIFBSSXVQVFIKLSsjIGRlZmluZSBQUkl1UFRSIFwKLSsgIChzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChsb25nKSA/ICJsdSIgOiBcCi0rICAgc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAoaW50KSA/ICJ1IiA6IFwKLSsgICAibGx1IikKLSsjZW5kaWYKLSsjaWYgIWRlZmluZWQgUFJJeFBUUiB8fCBQUklfTUFDUk9TX0JST0tFTgotKyMgdW5kZWYgUFJJeFBUUgotKyMgZGVmaW5lIFBSSXhQVFIgXAotKyAgKHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGxvbmcpID8gImx4IiA6IFwKLSsgICBzaXplb2YgKHZvaWQgKikgPT0gc2l6ZW9mIChpbnQpID8gIngiIDogXAotKyAgICJsbHgiKQotKyNlbmRpZgotKyNpZiAhZGVmaW5lZCBQUklYUFRSIHx8IFBSSV9NQUNST1NfQlJPS0VOCi0rIyB1bmRlZiBQUklYUFRSCi0rIyBkZWZpbmUgUFJJWFBUUiBcCi0rICAoc2l6ZW9mICh2b2lkICopID09IHNpemVvZiAobG9uZykgPyAibFgiIDogXAotKyAgIHNpemVvZiAodm9pZCAqKSA9PSBzaXplb2YgKGludCkgPyAiWCIgOiBcCi0rICAgImxsWCIpCi0rI2VuZGlmCi0gCi0gLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotIAotQEAgLTQ0LDcgKzQ1Nyw2IEBACi0gLyogUmVuYW1lIHRoZSBub24gSVNPIEMgZnVuY3Rpb25zLiAgVGhpcyBpcyByZXF1aXJlZCBieSB0aGUgc3RhbmRhcmQKLSAgICBiZWNhdXNlIHNvbWUgSVNPIEMgZnVuY3Rpb25zIHdpbGwgcmVxdWlyZSBsaW5raW5nIHdpdGggdGhpcyBvYmplY3QKLSAgICBmaWxlIGFuZCB0aGUgbmFtZSBzcGFjZSBtdXN0IG5vdCBiZSBwb2xsdXRlZC4gICovCi0tIyBkZWZpbmUgZnN0YXQgIF9fZnN0YXQKLSAjIGRlZmluZSBvcGVuICAgX19vcGVuCi0gIyBkZWZpbmUgY2xvc2UgIF9fY2xvc2UKLSAjIGRlZmluZSByZWFkICAgX19yZWFkCi1AQCAtNTIsMzAgKzQ2NCw0NzEgQEAKLSAjIGRlZmluZSBtdW5tYXAgX19tdW5tYXAKLSAjZW5kaWYKLSAKLSsvKiBGb3IgdGhvc2UgbG9zaW5nIHN5c3RlbXMgd2hpY2ggZG9uJ3QgaGF2ZSBgYWxsb2NhJyB3ZSBoYXZlIHRvIGFkZAotKyAgIHNvbWUgYWRkaXRpb25hbCBjb2RlIGVtdWxhdGluZyBpdC4gICovCi0rI2lmZGVmIEhBVkVfQUxMT0NBCi0rIyBkZWZpbmUgZnJlZWEocCkgLyogbm90aGluZyAqLwotKyNlbHNlCi0rIyBkZWZpbmUgYWxsb2NhKG4pIG1hbGxvYyAobikKLSsjIGRlZmluZSBmcmVlYShwKSBmcmVlIChwKQotKyNlbmRpZgotKwotKy8qIEZvciBzeXN0ZW1zIHRoYXQgZGlzdGluZ3Vpc2ggYmV0d2VlbiB0ZXh0IGFuZCBiaW5hcnkgSS9PLgotKyAgIE9fQklOQVJZIGlzIHVzdWFsbHkgZGVjbGFyZWQgaW4gPGZjbnRsLmg+LiAqLwotKyNpZiAhZGVmaW5lZCBPX0JJTkFSWSAmJiBkZWZpbmVkIF9PX0JJTkFSWQotKyAgLyogRm9yIE1TQy1jb21wYXRpYmxlIGNvbXBpbGVycy4gICovCi0rIyBkZWZpbmUgT19CSU5BUlkgX09fQklOQVJZCi0rIyBkZWZpbmUgT19URVhUIF9PX1RFWFQKLSsjZW5kaWYKLSsjaWZkZWYgX19CRU9TX18KLSsgIC8qIEJlT1MgNSBoYXMgT19CSU5BUlkgYW5kIE9fVEVYVCwgYnV0IHRoZXkgaGF2ZSBubyBlZmZlY3QuICAqLwotKyMgdW5kZWYgT19CSU5BUlkKLSsjIHVuZGVmIE9fVEVYVAotKyNlbmRpZgotKy8qIE9uIHJlYXNvbmFibGUgc3lzdGVtcywgYmluYXJ5IEkvTyBpcyB0aGUgZGVmYXVsdC4gICovCi0rI2lmbmRlZiBPX0JJTkFSWQotKyMgZGVmaW5lIE9fQklOQVJZIDAKLSsjZW5kaWYKLSsKLSsKLSAvKiBXZSBuZWVkIGEgc2lnbiwgd2hldGhlciBhIG5ldyBjYXRhbG9nIHdhcyBsb2FkZWQsIHdoaWNoIGNhbiBiZSBhc3NvY2lhdGVkCi0gICAgd2l0aCBhbGwgdHJhbnNsYXRpb25zLiAgVGhpcyBpcyBpbXBvcnRhbnQgaWYgdGhlIHRyYW5zbGF0aW9ucyBhcmUKLSAgICBjYWNoZWQgYnkgb25lIG9mIEdDQydzIGZlYXR1cmVzLiAgKi8KLS1pbnQgX25sX21zZ19jYXRfY250ciA9IDA7Ci0raW50IF9ubF9tc2dfY2F0X2NudHI7Ci0gCi0gCi0rLyogRXhwYW5kIGEgc3lzdGVtIGRlcGVuZGVudCBzdHJpbmcgc2VnbWVudC4gIFJldHVybiBOVUxMIGlmIHVuc3VwcG9ydGVkLiAgKi8KLStzdGF0aWMgY29uc3QgY2hhciAqCi0rZ2V0X3N5c2RlcF9zZWdtZW50X3ZhbHVlIChjb25zdCBjaGFyICpuYW1lKQotK3sKLSsgIC8qIFRlc3QgZm9yIGFuIElTTyBDIDk5IHNlY3Rpb24gNy44LjEgZm9ybWF0IHN0cmluZyBkaXJlY3RpdmUuCi0rICAgICBTeW50YXg6Ci0rICAgICBQIFIgSSB7IGQgfCBpIHwgbyB8IHUgfCB4IHwgWCB9Ci0rICAgICB7IHsgfCBMRUFTVCB8IEZBU1QgfSB7IDggfCAxNiB8IDMyIHwgNjQgfSB8IE1BWCB8IFBUUiB9ICAqLwotKyAgLyogV2UgZG9uJ3QgdXNlIGEgdGFibGUgb2YgMTQgdGltZXMgNiAnY29uc3QgY2hhciAqJyBzdHJpbmdzIGhlcmUsIGJlY2F1c2UKLSsgICAgIGRhdGEgcmVsb2NhdGlvbnMgY29zdCBzdGFydHVwIHRpbWUuICAqLwotKyAgaWYgKG5hbWVbMF0gPT0gJ1AnICYmIG5hbWVbMV0gPT0gJ1InICYmIG5hbWVbMl0gPT0gJ0knKQotKyAgICB7Ci0rICAgICAgaWYgKG5hbWVbM10gPT0gJ2QnIHx8IG5hbWVbM10gPT0gJ2knIHx8IG5hbWVbM10gPT0gJ28nIHx8IG5hbWVbM10gPT0gJ3UnCi0rCSAgfHwgbmFtZVszXSA9PSAneCcgfHwgbmFtZVszXSA9PSAnWCcpCi0rCXsKLSsJICBpZiAobmFtZVs0XSA9PSAnOCcgJiYgbmFtZVs1XSA9PSAnXDAnKQotKwkgICAgewotKwkgICAgICBpZiAobmFtZVszXSA9PSAnZCcpCi0rCQlyZXR1cm4gUFJJZDg7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCXJldHVybiBQUklpODsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ28nKQotKwkJcmV0dXJuIFBSSW84OwotKwkgICAgICBpZiAobmFtZVszXSA9PSAndScpCi0rCQlyZXR1cm4gUFJJdTg7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCXJldHVybiBQUkl4ODsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ1gnKQotKwkJcmV0dXJuIFBSSVg4OwotKwkgICAgICBhYm9ydCAoKTsKLSsJICAgIH0KLSsJICBpZiAobmFtZVs0XSA9PSAnMScgJiYgbmFtZVs1XSA9PSAnNicgJiYgbmFtZVs2XSA9PSAnXDAnKQotKwkgICAgewotKwkgICAgICBpZiAobmFtZVszXSA9PSAnZCcpCi0rCQlyZXR1cm4gUFJJZDE2OwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnaScpCi0rCQlyZXR1cm4gUFJJaTE2OwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQlyZXR1cm4gUFJJbzE2OwotKwkgICAgICBpZiAobmFtZVszXSA9PSAndScpCi0rCQlyZXR1cm4gUFJJdTE2OwotKwkgICAgICBpZiAobmFtZVszXSA9PSAneCcpCi0rCQlyZXR1cm4gUFJJeDE2OwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQlyZXR1cm4gUFJJWDE2OwotKwkgICAgICBhYm9ydCAoKTsKLSsJICAgIH0KLSsJICBpZiAobmFtZVs0XSA9PSAnMycgJiYgbmFtZVs1XSA9PSAnMicgJiYgbmFtZVs2XSA9PSAnXDAnKQotKwkgICAgewotKwkgICAgICBpZiAobmFtZVszXSA9PSAnZCcpCi0rCQlyZXR1cm4gUFJJZDMyOwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnaScpCi0rCQlyZXR1cm4gUFJJaTMyOwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQlyZXR1cm4gUFJJbzMyOwotKwkgICAgICBpZiAobmFtZVszXSA9PSAndScpCi0rCQlyZXR1cm4gUFJJdTMyOwotKwkgICAgICBpZiAobmFtZVszXSA9PSAneCcpCi0rCQlyZXR1cm4gUFJJeDMyOwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQlyZXR1cm4gUFJJWDMyOwotKwkgICAgICBhYm9ydCAoKTsKLSsJICAgIH0KLSsJICBpZiAobmFtZVs0XSA9PSAnNicgJiYgbmFtZVs1XSA9PSAnNCcgJiYgbmFtZVs2XSA9PSAnXDAnKQotKwkgICAgewotKwkgICAgICBpZiAobmFtZVszXSA9PSAnZCcpCi0rCQlyZXR1cm4gUFJJZDY0OwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnaScpCi0rCQlyZXR1cm4gUFJJaTY0OwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQlyZXR1cm4gUFJJbzY0OwotKwkgICAgICBpZiAobmFtZVszXSA9PSAndScpCi0rCQlyZXR1cm4gUFJJdTY0OwotKwkgICAgICBpZiAobmFtZVszXSA9PSAneCcpCi0rCQlyZXR1cm4gUFJJeDY0OwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQlyZXR1cm4gUFJJWDY0OwotKwkgICAgICBhYm9ydCAoKTsKLSsJICAgIH0KLSsJICBpZiAobmFtZVs0XSA9PSAnTCcgJiYgbmFtZVs1XSA9PSAnRScgJiYgbmFtZVs2XSA9PSAnQScKLSsJICAgICAgJiYgbmFtZVs3XSA9PSAnUycgJiYgbmFtZVs4XSA9PSAnVCcpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChuYW1lWzldID09ICc4JyAmJiBuYW1lWzEwXSA9PSAnXDAnKQotKwkJewotKwkJICBpZiAobmFtZVszXSA9PSAnZCcpCi0rCQkgICAgcmV0dXJuIFBSSWRMRUFTVDg7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCSAgICByZXR1cm4gUFJJaUxFQVNUODsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ28nKQotKwkJICAgIHJldHVybiBQUklvTEVBU1Q4OwotKwkJICBpZiAobmFtZVszXSA9PSAndScpCi0rCQkgICAgcmV0dXJuIFBSSXVMRUFTVDg7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCSAgICByZXR1cm4gUFJJeExFQVNUODsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ1gnKQotKwkJICAgIHJldHVybiBQUklYTEVBU1Q4OwotKwkJICBhYm9ydCAoKTsKLSsJCX0KLSsJICAgICAgaWYgKG5hbWVbOV0gPT0gJzEnICYmIG5hbWVbMTBdID09ICc2JyAmJiBuYW1lWzExXSA9PSAnXDAnKQotKwkJewotKwkJICBpZiAobmFtZVszXSA9PSAnZCcpCi0rCQkgICAgcmV0dXJuIFBSSWRMRUFTVDE2OwotKwkJICBpZiAobmFtZVszXSA9PSAnaScpCi0rCQkgICAgcmV0dXJuIFBSSWlMRUFTVDE2OwotKwkJICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQkgICAgcmV0dXJuIFBSSW9MRUFTVDE2OwotKwkJICBpZiAobmFtZVszXSA9PSAndScpCi0rCQkgICAgcmV0dXJuIFBSSXVMRUFTVDE2OwotKwkJICBpZiAobmFtZVszXSA9PSAneCcpCi0rCQkgICAgcmV0dXJuIFBSSXhMRUFTVDE2OwotKwkJICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQkgICAgcmV0dXJuIFBSSVhMRUFTVDE2OwotKwkJICBhYm9ydCAoKTsKLSsJCX0KLSsJICAgICAgaWYgKG5hbWVbOV0gPT0gJzMnICYmIG5hbWVbMTBdID09ICcyJyAmJiBuYW1lWzExXSA9PSAnXDAnKQotKwkJewotKwkJICBpZiAobmFtZVszXSA9PSAnZCcpCi0rCQkgICAgcmV0dXJuIFBSSWRMRUFTVDMyOwotKwkJICBpZiAobmFtZVszXSA9PSAnaScpCi0rCQkgICAgcmV0dXJuIFBSSWlMRUFTVDMyOwotKwkJICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQkgICAgcmV0dXJuIFBSSW9MRUFTVDMyOwotKwkJICBpZiAobmFtZVszXSA9PSAndScpCi0rCQkgICAgcmV0dXJuIFBSSXVMRUFTVDMyOwotKwkJICBpZiAobmFtZVszXSA9PSAneCcpCi0rCQkgICAgcmV0dXJuIFBSSXhMRUFTVDMyOwotKwkJICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQkgICAgcmV0dXJuIFBSSVhMRUFTVDMyOwotKwkJICBhYm9ydCAoKTsKLSsJCX0KLSsJICAgICAgaWYgKG5hbWVbOV0gPT0gJzYnICYmIG5hbWVbMTBdID09ICc0JyAmJiBuYW1lWzExXSA9PSAnXDAnKQotKwkJewotKwkJICBpZiAobmFtZVszXSA9PSAnZCcpCi0rCQkgICAgcmV0dXJuIFBSSWRMRUFTVDY0OwotKwkJICBpZiAobmFtZVszXSA9PSAnaScpCi0rCQkgICAgcmV0dXJuIFBSSWlMRUFTVDY0OwotKwkJICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQkgICAgcmV0dXJuIFBSSW9MRUFTVDY0OwotKwkJICBpZiAobmFtZVszXSA9PSAndScpCi0rCQkgICAgcmV0dXJuIFBSSXVMRUFTVDY0OwotKwkJICBpZiAobmFtZVszXSA9PSAneCcpCi0rCQkgICAgcmV0dXJuIFBSSXhMRUFTVDY0OwotKwkJICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQkgICAgcmV0dXJuIFBSSVhMRUFTVDY0OwotKwkJICBhYm9ydCAoKTsKLSsJCX0KLSsJICAgIH0KLSsJICBpZiAobmFtZVs0XSA9PSAnRicgJiYgbmFtZVs1XSA9PSAnQScgJiYgbmFtZVs2XSA9PSAnUycKLSsJICAgICAgJiYgbmFtZVs3XSA9PSAnVCcpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChuYW1lWzhdID09ICc4JyAmJiBuYW1lWzldID09ICdcMCcpCi0rCQl7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCSAgICByZXR1cm4gUFJJZEZBU1Q4OwotKwkJICBpZiAobmFtZVszXSA9PSAnaScpCi0rCQkgICAgcmV0dXJuIFBSSWlGQVNUODsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ28nKQotKwkJICAgIHJldHVybiBQUklvRkFTVDg7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCSAgICByZXR1cm4gUFJJdUZBU1Q4OwotKwkJICBpZiAobmFtZVszXSA9PSAneCcpCi0rCQkgICAgcmV0dXJuIFBSSXhGQVNUODsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ1gnKQotKwkJICAgIHJldHVybiBQUklYRkFTVDg7Ci0rCQkgIGFib3J0ICgpOwotKwkJfQotKwkgICAgICBpZiAobmFtZVs4XSA9PSAnMScgJiYgbmFtZVs5XSA9PSAnNicgJiYgbmFtZVsxMF0gPT0gJ1wwJykKLSsJCXsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2QnKQotKwkJICAgIHJldHVybiBQUklkRkFTVDE2OwotKwkJICBpZiAobmFtZVszXSA9PSAnaScpCi0rCQkgICAgcmV0dXJuIFBSSWlGQVNUMTY7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdvJykKLSsJCSAgICByZXR1cm4gUFJJb0ZBU1QxNjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3UnKQotKwkJICAgIHJldHVybiBQUkl1RkFTVDE2OwotKwkJICBpZiAobmFtZVszXSA9PSAneCcpCi0rCQkgICAgcmV0dXJuIFBSSXhGQVNUMTY7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdYJykKLSsJCSAgICByZXR1cm4gUFJJWEZBU1QxNjsKLSsJCSAgYWJvcnQgKCk7Ci0rCQl9Ci0rCSAgICAgIGlmIChuYW1lWzhdID09ICczJyAmJiBuYW1lWzldID09ICcyJyAmJiBuYW1lWzEwXSA9PSAnXDAnKQotKwkJewotKwkJICBpZiAobmFtZVszXSA9PSAnZCcpCi0rCQkgICAgcmV0dXJuIFBSSWRGQVNUMzI7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdpJykKLSsJCSAgICByZXR1cm4gUFJJaUZBU1QzMjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ28nKQotKwkJICAgIHJldHVybiBQUklvRkFTVDMyOwotKwkJICBpZiAobmFtZVszXSA9PSAndScpCi0rCQkgICAgcmV0dXJuIFBSSXVGQVNUMzI7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd4JykKLSsJCSAgICByZXR1cm4gUFJJeEZBU1QzMjsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ1gnKQotKwkJICAgIHJldHVybiBQUklYRkFTVDMyOwotKwkJICBhYm9ydCAoKTsKLSsJCX0KLSsJICAgICAgaWYgKG5hbWVbOF0gPT0gJzYnICYmIG5hbWVbOV0gPT0gJzQnICYmIG5hbWVbMTBdID09ICdcMCcpCi0rCQl7Ci0rCQkgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCSAgICByZXR1cm4gUFJJZEZBU1Q2NDsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ2knKQotKwkJICAgIHJldHVybiBQUklpRkFTVDY0OwotKwkJICBpZiAobmFtZVszXSA9PSAnbycpCi0rCQkgICAgcmV0dXJuIFBSSW9GQVNUNjQ7Ci0rCQkgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCSAgICByZXR1cm4gUFJJdUZBU1Q2NDsKLSsJCSAgaWYgKG5hbWVbM10gPT0gJ3gnKQotKwkJICAgIHJldHVybiBQUkl4RkFTVDY0OwotKwkJICBpZiAobmFtZVszXSA9PSAnWCcpCi0rCQkgICAgcmV0dXJuIFBSSVhGQVNUNjQ7Ci0rCQkgIGFib3J0ICgpOwotKwkJfQotKwkgICAgfQotKwkgIGlmIChuYW1lWzRdID09ICdNJyAmJiBuYW1lWzVdID09ICdBJyAmJiBuYW1lWzZdID09ICdYJwotKwkgICAgICAmJiBuYW1lWzddID09ICdcMCcpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCXJldHVybiBQUklkTUFYOwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnaScpCi0rCQlyZXR1cm4gUFJJaU1BWDsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ28nKQotKwkJcmV0dXJuIFBSSW9NQVg7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCXJldHVybiBQUkl1TUFYOwotKwkgICAgICBpZiAobmFtZVszXSA9PSAneCcpCi0rCQlyZXR1cm4gUFJJeE1BWDsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ1gnKQotKwkJcmV0dXJuIFBSSVhNQVg7Ci0rCSAgICAgIGFib3J0ICgpOwotKwkgICAgfQotKwkgIGlmIChuYW1lWzRdID09ICdQJyAmJiBuYW1lWzVdID09ICdUJyAmJiBuYW1lWzZdID09ICdSJwotKwkgICAgICAmJiBuYW1lWzddID09ICdcMCcpCi0rCSAgICB7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICdkJykKLSsJCXJldHVybiBQUklkUFRSOwotKwkgICAgICBpZiAobmFtZVszXSA9PSAnaScpCi0rCQlyZXR1cm4gUFJJaVBUUjsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ28nKQotKwkJcmV0dXJuIFBSSW9QVFI7Ci0rCSAgICAgIGlmIChuYW1lWzNdID09ICd1JykKLSsJCXJldHVybiBQUkl1UFRSOwotKwkgICAgICBpZiAobmFtZVszXSA9PSAneCcpCi0rCQlyZXR1cm4gUFJJeFBUUjsKLSsJICAgICAgaWYgKG5hbWVbM10gPT0gJ1gnKQotKwkJcmV0dXJuIFBSSVhQVFI7Ci0rCSAgICAgIGFib3J0ICgpOwotKwkgICAgfQotKwl9Ci0rICAgIH0KLSsgIC8qIFRlc3QgZm9yIGEgZ2xpYmMgc3BlY2lmaWMgcHJpbnRmKCkgZm9ybWF0IGRpcmVjdGl2ZSBmbGFnLiAgKi8KLSsgIGlmIChuYW1lWzBdID09ICdJJyAmJiBuYW1lWzFdID09ICdcMCcpCi0rICAgIHsKLSsjaWYgZGVmaW5lZCBfTElCQyB8fCBfX0dMSUJDX18gPiAyIHx8IChfX0dMSUJDX18gPT0gMiAmJiBfX0dMSUJDX01JTk9SX18gPj0gMikKLSsgICAgICAvKiBUaGUgJ0knIGZsYWcsIGluIG51bWVyaWMgZm9ybWF0IGRpcmVjdGl2ZXMsIHJlcGxhY2VzIEFTQ0lJIGRpZ2l0cwotKwkgd2l0aCB0aGUgJ291dGRpZ2l0cycgZGVmaW5lZCBpbiB0aGUgTENfQ1RZUEUgbG9jYWxlIGZhY2V0LiAgVGhpcyBpcwotKwkgdXNlZCBmb3IgRmFyc2kgKFBlcnNpYW4pIGFuZCBtYXliZSBBcmFiaWMuICAqLwotKyAgICAgIHJldHVybiAiSSI7Ci0rI2Vsc2UKLSsgICAgICByZXR1cm4gIiI7Ci0rI2VuZGlmCi0rICAgIH0KLSsgIC8qIE90aGVyIHN5c3RlbSBkZXBlbmRlbnQgc3RyaW5ncyBhcmUgbm90IHZhbGlkLiAgKi8KLSsgIHJldHVybiBOVUxMOwotK30KLSsKLSsvKiBJbml0aWFsaXplIHRoZSBjb2Rlc2V0IGRlcGVuZGVudCBwYXJ0cyBvZiBhbiBvcGVuZWQgbWVzc2FnZSBjYXRhbG9nLgotKyAgIFJldHVybiB0aGUgaGVhZGVyIGVudHJ5LiAgKi8KLStjb25zdCBjaGFyICoKLStpbnRlcm5hbF9mdW5jdGlvbgotK19ubF9pbml0X2RvbWFpbl9jb252IChzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW5fZmlsZSwKLSsJCSAgICAgIHN0cnVjdCBsb2FkZWRfZG9tYWluICpkb21haW4sCi0rCQkgICAgICBzdHJ1Y3QgYmluZGluZyAqZG9tYWluYmluZGluZykKLSt7Ci0rICAvKiBGaW5kIG91dCBhYm91dCB0aGUgY2hhcmFjdGVyIHNldCB0aGUgZmlsZSBpcyBlbmNvZGVkIHdpdGguCi0rICAgICBUaGlzIGNhbiBiZSBmb3VuZCAoaW4gdGV4dHVhbCBmb3JtKSBpbiB0aGUgZW50cnkgIiIuICBJZiB0aGlzCi0rICAgICBlbnRyeSBkb2VzIG5vdCBleGlzdCBvciBpZiB0aGlzIGRvZXMgbm90IGNvbnRhaW4gdGhlIGBjaGFyc2V0PScKLSsgICAgIGluZm9ybWF0aW9uLCB3ZSB3aWxsIGFzc3VtZSB0aGUgY2hhcnNldCBtYXRjaGVzIHRoZSBvbmUgdGhlCi0rICAgICBjdXJyZW50IGxvY2FsZSBhbmQgd2UgZG9uJ3QgaGF2ZSB0byBwZXJmb3JtIGFueSBjb252ZXJzaW9uLiAgKi8KLSsgIGNoYXIgKm51bGxlbnRyeTsKLSsgIHNpemVfdCBudWxsZW50cnlsZW47Ci0rCi0rICAvKiBQcmVpbml0aWFsaXplIGZpZWxkcywgdG8gYXZvaWQgcmVjdXJzaW9uIGR1cmluZyBfbmxfZmluZF9tc2cuICAqLwotKyAgZG9tYWluLT5jb2Rlc2V0X2NudHIgPQotKyAgICAoZG9tYWluYmluZGluZyAhPSBOVUxMID8gZG9tYWluYmluZGluZy0+Y29kZXNldF9jbnRyIDogMCk7Ci0rI2lmZGVmIF9MSUJDCi0rICBkb21haW4tPmNvbnYgPSAoX19nY29udl90KSAtMTsKLSsjZWxzZQotKyMgaWYgSEFWRV9JQ09OVgotKyAgZG9tYWluLT5jb252ID0gKGljb252X3QpIC0xOwotKyMgZW5kaWYKLSsjZW5kaWYKLSsgIGRvbWFpbi0+Y29udl90YWIgPSBOVUxMOwotKwotKyAgLyogR2V0IHRoZSBoZWFkZXIgZW50cnkuICAqLwotKyAgbnVsbGVudHJ5ID0gX25sX2ZpbmRfbXNnIChkb21haW5fZmlsZSwgZG9tYWluYmluZGluZywgIiIsICZudWxsZW50cnlsZW4pOwotKwotKyAgaWYgKG51bGxlbnRyeSAhPSBOVUxMKQotKyAgICB7Ci0rI2lmIGRlZmluZWQgX0xJQkMgfHwgSEFWRV9JQ09OVgotKyAgICAgIGNvbnN0IGNoYXIgKmNoYXJzZXRzdHI7Ci0rCi0rICAgICAgY2hhcnNldHN0ciA9IHN0cnN0ciAobnVsbGVudHJ5LCAiY2hhcnNldD0iKTsKLSsgICAgICBpZiAoY2hhcnNldHN0ciAhPSBOVUxMKQotKwl7Ci0rCSAgc2l6ZV90IGxlbjsKLSsJICBjaGFyICpjaGFyc2V0OwotKwkgIGNvbnN0IGNoYXIgKm91dGNoYXJzZXQ7Ci0rCi0rCSAgY2hhcnNldHN0ciArPSBzdHJsZW4gKCJjaGFyc2V0PSIpOwotKwkgIGxlbiA9IHN0cmNzcG4gKGNoYXJzZXRzdHIsICIgXHRcbiIpOwotKwotKwkgIGNoYXJzZXQgPSAoY2hhciAqKSBhbGxvY2EgKGxlbiArIDEpOwotKyMgaWYgZGVmaW5lZCBfTElCQyB8fCBIQVZFX01FTVBDUFkKLSsJICAqKChjaGFyICopIG1lbXBjcHkgKGNoYXJzZXQsIGNoYXJzZXRzdHIsIGxlbikpID0gJ1wwJzsKLSsjIGVsc2UKLSsJICBtZW1jcHkgKGNoYXJzZXQsIGNoYXJzZXRzdHIsIGxlbik7Ci0rCSAgY2hhcnNldFtsZW5dID0gJ1wwJzsKLSsjIGVuZGlmCi0rCi0rCSAgLyogVGhlIG91dHB1dCBjaGFyc2V0IHNob3VsZCBub3JtYWxseSBiZSBkZXRlcm1pbmVkIGJ5IHRoZQotKwkgICAgIGxvY2FsZS4gIEJ1dCBzb21ldGltZXMgdGhlIGxvY2FsZSBpcyBub3QgdXNlZCBvciBub3QgY29ycmVjdGx5Ci0rCSAgICAgc2V0IHVwLCBzbyB3ZSBwcm92aWRlIGEgcG9zc2liaWxpdHkgZm9yIHRoZSB1c2VyIHRvIG92ZXJyaWRlCi0rCSAgICAgdGhpcy4gIE1vcmVvdmVyLCB0aGUgdmFsdWUgc3BlY2lmaWVkIHRocm91Z2gKLSsJICAgICBiaW5kX3RleHRkb21haW5fY29kZXNldCBvdmVycmlkZXMgYm90aC4gICovCi0rCSAgaWYgKGRvbWFpbmJpbmRpbmcgIT0gTlVMTCAmJiBkb21haW5iaW5kaW5nLT5jb2Rlc2V0ICE9IE5VTEwpCi0rCSAgICBvdXRjaGFyc2V0ID0gZG9tYWluYmluZGluZy0+Y29kZXNldDsKLSsJICBlbHNlCi0rCSAgICB7Ci0rCSAgICAgIG91dGNoYXJzZXQgPSBnZXRlbnYgKCJPVVRQVVRfQ0hBUlNFVCIpOwotKwkgICAgICBpZiAob3V0Y2hhcnNldCA9PSBOVUxMIHx8IG91dGNoYXJzZXRbMF0gPT0gJ1wwJykKLSsJCXsKLSsjIGlmZGVmIF9MSUJDCi0rCQkgIG91dGNoYXJzZXQgPSBfTkxfQ1VSUkVOVCAoTENfQ1RZUEUsIENPREVTRVQpOwotKyMgZWxzZQotKyMgIGlmIEhBVkVfSUNPTlYKLSsJCSAgZXh0ZXJuIGNvbnN0IGNoYXIgKmxvY2FsZV9jaGFyc2V0ICh2b2lkKTsKLSsJCSAgb3V0Y2hhcnNldCA9IGxvY2FsZV9jaGFyc2V0ICgpOwotKyMgIGVuZGlmCi0rIyBlbmRpZgotKwkJfQotKwkgICAgfQotKwotKyMgaWZkZWYgX0xJQkMKLSsJICAvKiBXZSBhbHdheXMgd2FudCB0byB1c2UgdHJhbnNsaXRlcmF0aW9uLiAgKi8KLSsJICBvdXRjaGFyc2V0ID0gbm9ybV9hZGRfc2xhc2hlcyAob3V0Y2hhcnNldCwgIlRSQU5TTElUIik7Ci0rCSAgY2hhcnNldCA9IG5vcm1fYWRkX3NsYXNoZXMgKGNoYXJzZXQsIE5VTEwpOwotKwkgIGlmIChfX2djb252X29wZW4gKG91dGNoYXJzZXQsIGNoYXJzZXQsICZkb21haW4tPmNvbnYsCi0rCQkJICAgIEdDT05WX0FWT0lEX05PQ09OVikKLSsJICAgICAgIT0gX19HQ09OVl9PSykKLSsJICAgIGRvbWFpbi0+Y29udiA9IChfX2djb252X3QpIC0xOwotKyMgZWxzZQotKyMgIGlmIEhBVkVfSUNPTlYKLSsJICAvKiBXaGVuIHVzaW5nIEdOVSBsaWJjID49IDIuMiBvciBHTlUgbGliaWNvbnYgPj0gMS41LAotKwkgICAgIHdlIHdhbnQgdG8gdXNlIHRyYW5zbGl0ZXJhdGlvbi4gICovCi0rIyAgIGlmIChfX0dMSUJDX18gPT0gMiAmJiBfX0dMSUJDX01JTk9SX18gPj0gMikgfHwgX19HTElCQ19fID4gMiBcCi0rICAgICAgIHx8IF9MSUJJQ09OVl9WRVJTSU9OID49IDB4MDEwNQotKwkgIGlmIChzdHJjaHIgKG91dGNoYXJzZXQsICcvJykgPT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgY2hhciAqdG1wOwotKwotKwkgICAgICBsZW4gPSBzdHJsZW4gKG91dGNoYXJzZXQpOwotKwkgICAgICB0bXAgPSAoY2hhciAqKSBhbGxvY2EgKGxlbiArIDEwICsgMSk7Ci0rCSAgICAgIG1lbWNweSAodG1wLCBvdXRjaGFyc2V0LCBsZW4pOwotKwkgICAgICBtZW1jcHkgKHRtcCArIGxlbiwgIi8vVFJBTlNMSVQiLCAxMCArIDEpOwotKwkgICAgICBvdXRjaGFyc2V0ID0gdG1wOwotKwotKwkgICAgICBkb21haW4tPmNvbnYgPSBpY29udl9vcGVuIChvdXRjaGFyc2V0LCBjaGFyc2V0KTsKLSsKLSsJICAgICAgZnJlZWEgKG91dGNoYXJzZXQpOwotKwkgICAgfQotKwkgIGVsc2UKLSsjICAgZW5kaWYKLSsJICAgIGRvbWFpbi0+Y29udiA9IGljb252X29wZW4gKG91dGNoYXJzZXQsIGNoYXJzZXQpOwotKyMgIGVuZGlmCi0rIyBlbmRpZgotKwotKwkgIGZyZWVhIChjaGFyc2V0KTsKLSsJfQotKyNlbmRpZiAvKiBfTElCQyB8fCBIQVZFX0lDT05WICovCi0rICAgIH0KLSsKLSsgIHJldHVybiBudWxsZW50cnk7Ci0rfQotKwotKy8qIEZyZWVzIHRoZSBjb2Rlc2V0IGRlcGVuZGVudCBwYXJ0cyBvZiBhbiBvcGVuZWQgbWVzc2FnZSBjYXRhbG9nLiAgKi8KLSt2b2lkCi0raW50ZXJuYWxfZnVuY3Rpb24KLStfbmxfZnJlZV9kb21haW5fY29udiAoc3RydWN0IGxvYWRlZF9kb21haW4gKmRvbWFpbikKLSt7Ci0rICBpZiAoZG9tYWluLT5jb252X3RhYiAhPSBOVUxMICYmIGRvbWFpbi0+Y29udl90YWIgIT0gKGNoYXIgKiopIC0xKQotKyAgICBmcmVlIChkb21haW4tPmNvbnZfdGFiKTsKLSsKLSsjaWZkZWYgX0xJQkMKLSsgIGlmIChkb21haW4tPmNvbnYgIT0gKF9fZ2NvbnZfdCkgLTEpCi0rICAgIF9fZ2NvbnZfY2xvc2UgKGRvbWFpbi0+Y29udik7Ci0rI2Vsc2UKLSsjIGlmIEhBVkVfSUNPTlYKLSsgIGlmIChkb21haW4tPmNvbnYgIT0gKGljb252X3QpIC0xKQotKyAgICBpY29udl9jbG9zZSAoZG9tYWluLT5jb252KTsKLSsjIGVuZGlmCi0rI2VuZGlmCi0rfQotKwotIC8qIExvYWQgdGhlIG1lc3NhZ2UgY2F0YWxvZ3Mgc3BlY2lmaWVkIGJ5IEZJTEVOQU1FLiAgSWYgaXQgaXMgbm8gdmFsaWQKLSAgICBtZXNzYWdlIGNhdGFsb2cgZG8gbm90aGluZy4gICovCi0gdm9pZAotLV9ubF9sb2FkX2RvbWFpbiAoZG9tYWluX2ZpbGUpCi0tICAgICBzdHJ1Y3QgbG9hZGVkX2wxMG5maWxlICpkb21haW5fZmlsZTsKLStpbnRlcm5hbF9mdW5jdGlvbgotK19ubF9sb2FkX2RvbWFpbiAoc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqZG9tYWluX2ZpbGUsCi0rCQkgc3RydWN0IGJpbmRpbmcgKmRvbWFpbmJpbmRpbmcpCi0gewotICAgaW50IGZkOwotKyAgc2l6ZV90IHNpemU7Ci0rI2lmZGVmIF9MSUJDCi0rICBzdHJ1Y3Qgc3RhdDY0IHN0OwotKyNlbHNlCi0gICBzdHJ1Y3Qgc3RhdCBzdDsKLSsjZW5kaWYKLSAgIHN0cnVjdCBtb19maWxlX2hlYWRlciAqZGF0YSA9IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgLTE7Ci0tI2lmIChkZWZpbmVkIEhBVkVfTU1BUCAmJiBkZWZpbmVkIEhBVkVfTVVOTUFQICYmICFkZWZpbmVkIERJU0FMTE9XX01NQVApIFwKLS0gICAgfHwgZGVmaW5lZCBfTElCQwotICAgaW50IHVzZV9tbWFwID0gMDsKLS0jZW5kaWYKLSAgIHN0cnVjdCBsb2FkZWRfZG9tYWluICpkb21haW47Ci0rICBpbnQgcmV2aXNpb247Ci0rICBjb25zdCBjaGFyICpudWxsZW50cnk7Ci0gCi0gICBkb21haW5fZmlsZS0+ZGVjaWRlZCA9IDE7Ci0gICBkb21haW5fZmlsZS0+ZGF0YSA9IE5VTEw7Ci0gCi0rICAvKiBOb3RlIHRoYXQgaXQgd291bGQgYmUgdXNlbGVzcyB0byBzdG9yZSBkb21haW5iaW5kaW5nIGluIGRvbWFpbl9maWxlCi0rICAgICBiZWNhdXNlIGRvbWFpbmJpbmRpbmcgbWlnaHQgYmUgPT0gTlVMTCBub3cgYnV0ICE9IE5VTEwgbGF0ZXIgKGFmdGVyCi0rICAgICBhIGNhbGwgdG8gYmluZF90ZXh0ZG9tYWluX2NvZGVzZXQpLiAgKi8KLSsKLSAgIC8qIElmIHRoZSByZWNvcmQgZG9lcyBub3QgcmVwcmVzZW50IGEgdmFsaWQgbG9jYWxlIHRoZSBGSUxFTkFNRQotICAgICAgbWlnaHQgYmUgTlVMTC4gIFRoaXMgY2FuIGhhcHBlbiB3aGVuIGFjY29yZGluZyB0byB0aGUgZ2l2ZW4KLSAgICAgIHNwZWNpZmljYXRpb24gdGhlIGxvY2FsZSBmaWxlIG5hbWUgaXMgZGlmZmVyZW50IGZvciBYUEcgYW5kIENFTgotQEAgLTg0LDI3ICs5MzcsMzIgQEAKLSAgICAgcmV0dXJuOwotIAotICAgLyogVHJ5IHRvIG9wZW4gdGhlIGFkZHJlc3NlZCBmaWxlLiAgKi8KLS0gIGZkID0gb3BlbiAoZG9tYWluX2ZpbGUtPmZpbGVuYW1lLCBPX1JET05MWSk7Ci0rICBmZCA9IG9wZW4gKGRvbWFpbl9maWxlLT5maWxlbmFtZSwgT19SRE9OTFkgfCBPX0JJTkFSWSk7Ci0gICBpZiAoZmQgPT0gLTEpCi0gICAgIHJldHVybjsKLSAKLSAgIC8qIFdlIG11c3Qga25vdyBhYm91dCB0aGUgc2l6ZSBvZiB0aGUgZmlsZS4gICovCi0tICBpZiAoZnN0YXQgKGZkLCAmc3QpICE9IDAKLS0gICAgICAmJiBzdC5zdF9zaXplIDwgKG9mZl90KSBzaXplb2YgKHN0cnVjdCBtb19maWxlX2hlYWRlcikpCi0rICBpZiAoCi0rI2lmZGVmIF9MSUJDCi0rICAgICAgX19idWlsdGluX2V4cGVjdCAoZnN0YXQ2NCAoZmQsICZzdCkgIT0gMCwgMCkKLSsjZWxzZQotKyAgICAgIF9fYnVpbHRpbl9leHBlY3QgKGZzdGF0IChmZCwgJnN0KSAhPSAwLCAwKQotKyNlbmRpZgotKyAgICAgIHx8IF9fYnVpbHRpbl9leHBlY3QgKChzaXplID0gKHNpemVfdCkgc3Quc3Rfc2l6ZSkgIT0gc3Quc3Rfc2l6ZSwgMCkKLSsgICAgICB8fCBfX2J1aWx0aW5fZXhwZWN0IChzaXplIDwgc2l6ZW9mIChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIpLCAwKSkKLSAgICAgewotICAgICAgIC8qIFNvbWV0aGluZyB3ZW50IHdyb25nLiAgKi8KLSAgICAgICBjbG9zZSAoZmQpOwotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotLSNpZiAoZGVmaW5lZCBIQVZFX01NQVAgJiYgZGVmaW5lZCBIQVZFX01VTk1BUCAmJiAhZGVmaW5lZCBESVNBTExPV19NTUFQKSBcCi0tICAgIHx8IGRlZmluZWQgX0xJQkMKLSsjaWZkZWYgSEFWRV9NTUFQCi0gICAvKiBOb3cgd2UgYXJlIHJlYWR5IHRvIGxvYWQgdGhlIGZpbGUuICBJZiBtbWFwKCkgaXMgYXZhaWxhYmxlIHdlIHRyeQotICAgICAgdGhpcyBmaXJzdC4gIElmIG5vdCBhdmFpbGFibGUgb3IgaXQgZmFpbGVkIHdlIHRyeSB0byBsb2FkIGl0LiAgKi8KLS0gIGRhdGEgPSAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyICopIG1tYXAgKE5VTEwsIHN0LnN0X3NpemUsIFBST1RfUkVBRCwKLSsgIGRhdGEgPSAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyICopIG1tYXAgKE5VTEwsIHNpemUsIFBST1RfUkVBRCwKLSAJCQkJCSBNQVBfUFJJVkFURSwgZmQsIDApOwotIAotLSAgaWYgKGRhdGEgIT0gKHN0cnVjdCBtb19maWxlX2hlYWRlciAqKSAtMSkKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChkYXRhICE9IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgLTEsIDEpKQotICAgICB7Ci0gICAgICAgLyogbW1hcCgpIGNhbGwgd2FzIHN1Y2Nlc3NmdWwuICAqLwotICAgICAgIGNsb3NlIChmZCk7Ci1AQCAtMTE2LDI0ICs5NzQsMjcgQEAKLSAgICAgIGl0IG1hbnVhbGx5LiAgKi8KLSAgIGlmIChkYXRhID09IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgLTEpCi0gICAgIHsKLS0gICAgICBvZmZfdCB0b19yZWFkOwotKyAgICAgIHNpemVfdCB0b19yZWFkOwotICAgICAgIGNoYXIgKnJlYWRfcHRyOwotIAotLSAgICAgIGRhdGEgPSAoc3RydWN0IG1vX2ZpbGVfaGVhZGVyICopIG1hbGxvYyAoc3Quc3Rfc2l6ZSk7Ci0rICAgICAgZGF0YSA9IChzdHJ1Y3QgbW9fZmlsZV9oZWFkZXIgKikgbWFsbG9jIChzaXplKTsKLSAgICAgICBpZiAoZGF0YSA9PSBOVUxMKQotIAlyZXR1cm47Ci0gCi0tICAgICAgdG9fcmVhZCA9IHN0LnN0X3NpemU7Ci0rICAgICAgdG9fcmVhZCA9IHNpemU7Ci0gICAgICAgcmVhZF9wdHIgPSAoY2hhciAqKSBkYXRhOwotICAgICAgIGRvCi0gCXsKLSAJICBsb25nIGludCBuYiA9IChsb25nIGludCkgcmVhZCAoZmQsIHJlYWRfcHRyLCB0b19yZWFkKTsKLS0JICBpZiAobmIgPT0gLTEpCi0rCSAgaWYgKG5iIDw9IDApCi0gCSAgICB7Ci0rI2lmZGVmIEVJTlRSCi0rCSAgICAgIGlmIChuYiA9PSAtMSAmJiBlcnJubyA9PSBFSU5UUikKLSsJCWNvbnRpbnVlOwotKyNlbmRpZgotIAkgICAgICBjbG9zZSAoZmQpOwotIAkgICAgICByZXR1cm47Ci0gCSAgICB9Ci0tCi0gCSAgcmVhZF9wdHIgKz0gbmI7Ci0gCSAgdG9fcmVhZCAtPSBuYjsKLSAJfQotQEAgLTE0NCw0NyArMTAwNSwzNzggQEAKLSAKLSAgIC8qIFVzaW5nIHRoZSBtYWdpYyBudW1iZXIgd2UgY2FuIHRlc3Qgd2hldGhlciBpdCByZWFsbHkgaXMgYSBtZXNzYWdlCi0gICAgICBjYXRhbG9nIGZpbGUuICAqLwotLSAgaWYgKGRhdGEtPm1hZ2ljICE9IF9NQUdJQyAmJiBkYXRhLT5tYWdpYyAhPSBfTUFHSUNfU1dBUFBFRCkKLSsgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChkYXRhLT5tYWdpYyAhPSBfTUFHSUMgJiYgZGF0YS0+bWFnaWMgIT0gX01BR0lDX1NXQVBQRUQsCi0rCQkJMCkpCi0gICAgIHsKLSAgICAgICAvKiBUaGUgbWFnaWMgbnVtYmVyIGlzIHdyb25nOiBub3QgYSBtZXNzYWdlIGNhdGFsb2cgZmlsZS4gICovCi0tI2lmIChkZWZpbmVkIEhBVkVfTU1BUCAmJiBkZWZpbmVkIEhBVkVfTVVOTUFQICYmICFkZWZpbmVkIERJU0FMTE9XX01NQVApIFwKLS0gICAgfHwgZGVmaW5lZCBfTElCQwotKyNpZmRlZiBIQVZFX01NQVAKLSAgICAgICBpZiAodXNlX21tYXApCi0tCW11bm1hcCAoKGNhZGRyX3QpIGRhdGEsIHN0LnN0X3NpemUpOwotKwltdW5tYXAgKChjYWRkcl90KSBkYXRhLCBzaXplKTsKLSAgICAgICBlbHNlCi0gI2VuZGlmCi0gCWZyZWUgKGRhdGEpOwotICAgICAgIHJldHVybjsKLSAgICAgfQotIAotLSAgZG9tYWluX2ZpbGUtPmRhdGEKLS0gICAgPSAoc3RydWN0IGxvYWRlZF9kb21haW4gKikgbWFsbG9jIChzaXplb2YgKHN0cnVjdCBsb2FkZWRfZG9tYWluKSk7Ci0tICBpZiAoZG9tYWluX2ZpbGUtPmRhdGEgPT0gTlVMTCkKLSsgIGRvbWFpbiA9IChzdHJ1Y3QgbG9hZGVkX2RvbWFpbiAqKSBtYWxsb2MgKHNpemVvZiAoc3RydWN0IGxvYWRlZF9kb21haW4pKTsKLSsgIGlmIChkb21haW4gPT0gTlVMTCkKLSAgICAgcmV0dXJuOwotKyAgZG9tYWluX2ZpbGUtPmRhdGEgPSBkb21haW47Ci0gCi0tICBkb21haW4gPSAoc3RydWN0IGxvYWRlZF9kb21haW4gKikgZG9tYWluX2ZpbGUtPmRhdGE7Ci0gICBkb21haW4tPmRhdGEgPSAoY2hhciAqKSBkYXRhOwotKyAgZG9tYWluLT51c2VfbW1hcCA9IHVzZV9tbWFwOwotKyAgZG9tYWluLT5tbWFwX3NpemUgPSBzaXplOwotICAgZG9tYWluLT5tdXN0X3N3YXAgPSBkYXRhLT5tYWdpYyAhPSBfTUFHSUM7Ci0rICBkb21haW4tPm1hbGxvY2VkID0gTlVMTDsKLSAKLSAgIC8qIEZpbGwgaW4gdGhlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBhdmFpbGFibGUgdGFibGVzLiAgKi8KLS0gIHN3aXRjaCAoVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPnJldmlzaW9uKSkKLSsgIHJldmlzaW9uID0gVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPnJldmlzaW9uKTsKLSsgIC8qIFdlIHN1cHBvcnQgb25seSB0aGUgbWFqb3IgcmV2aXNpb25zIDAgYW5kIDEuICAqLwotKyAgc3dpdGNoIChyZXZpc2lvbiA+PiAxNikKLSAgICAgewotICAgICBjYXNlIDA6Ci0rICAgIGNhc2UgMToKLSAgICAgICBkb21haW4tPm5zdHJpbmdzID0gVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPm5zdHJpbmdzKTsKLS0gICAgICBkb21haW4tPm9yaWdfdGFiID0gKHN0cnVjdCBzdHJpbmdfZGVzYyAqKQotKyAgICAgIGRvbWFpbi0+b3JpZ190YWIgPSAoY29uc3Qgc3RydWN0IHN0cmluZ19kZXNjICopCi0gCSgoY2hhciAqKSBkYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPm9yaWdfdGFiX29mZnNldCkpOwotLSAgICAgIGRvbWFpbi0+dHJhbnNfdGFiID0gKHN0cnVjdCBzdHJpbmdfZGVzYyAqKQotKyAgICAgIGRvbWFpbi0+dHJhbnNfdGFiID0gKGNvbnN0IHN0cnVjdCBzdHJpbmdfZGVzYyAqKQotIAkoKGNoYXIgKikgZGF0YSArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT50cmFuc190YWJfb2Zmc2V0KSk7Ci0gICAgICAgZG9tYWluLT5oYXNoX3NpemUgPSBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+aGFzaF90YWJfc2l6ZSk7Ci0tICAgICAgZG9tYWluLT5oYXNoX3RhYiA9IChubHNfdWludDMyICopCi0tCSgoY2hhciAqKSBkYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPmhhc2hfdGFiX29mZnNldCkpOwotKyAgICAgIGRvbWFpbi0+aGFzaF90YWIgPQotKwkoZG9tYWluLT5oYXNoX3NpemUgPiAyCi0rCSA/IChjb25zdCBubHNfdWludDMyICopCi0rCSAgICgoY2hhciAqKSBkYXRhICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPmhhc2hfdGFiX29mZnNldCkpCi0rCSA6IE5VTEwpOwotKyAgICAgIGRvbWFpbi0+bXVzdF9zd2FwX2hhc2hfdGFiID0gZG9tYWluLT5tdXN0X3N3YXA7Ci0rCi0rICAgICAgLyogTm93IGRpc3BhdGNoIG9uIHRoZSBtaW5vciByZXZpc2lvbi4gICovCi0rICAgICAgc3dpdGNoIChyZXZpc2lvbiAmIDB4ZmZmZikKLSsJewotKwljYXNlIDA6Ci0rCSAgZG9tYWluLT5uX3N5c2RlcF9zdHJpbmdzID0gMDsKLSsJICBkb21haW4tPm9yaWdfc3lzZGVwX3RhYiA9IE5VTEw7Ci0rCSAgZG9tYWluLT50cmFuc19zeXNkZXBfdGFiID0gTlVMTDsKLSsJICBicmVhazsKLSsJY2FzZSAxOgotKwlkZWZhdWx0OgotKwkgIHsKLSsJICAgIG5sc191aW50MzIgbl9zeXNkZXBfc3RyaW5nczsKLSsKLSsJICAgIGlmIChkb21haW4tPmhhc2hfdGFiID09IE5VTEwpCi0rCSAgICAgIC8qIFRoaXMgaXMgaW52YWxpZC4gIFRoZXNlIG1pbm9yIHJldmlzaW9ucyBuZWVkIGEgaGFzaCB0YWJsZS4gICovCi0rCSAgICAgIGdvdG8gaW52YWxpZDsKLSsKLSsJICAgIG5fc3lzZGVwX3N0cmluZ3MgPQotKwkgICAgICBXIChkb21haW4tPm11c3Rfc3dhcCwgZGF0YS0+bl9zeXNkZXBfc3RyaW5ncyk7Ci0rCSAgICBpZiAobl9zeXNkZXBfc3RyaW5ncyA+IDApCi0rCSAgICAgIHsKLSsJCW5sc191aW50MzIgbl9zeXNkZXBfc2VnbWVudHM7Ci0rCQljb25zdCBzdHJ1Y3Qgc3lzZGVwX3NlZ21lbnQgKnN5c2RlcF9zZWdtZW50czsKLSsJCWNvbnN0IGNoYXIgKipzeXNkZXBfc2VnbWVudF92YWx1ZXM7Ci0rCQljb25zdCBubHNfdWludDMyICpvcmlnX3N5c2RlcF90YWI7Ci0rCQljb25zdCBubHNfdWludDMyICp0cmFuc19zeXNkZXBfdGFiOwotKwkJbmxzX3VpbnQzMiBuX2lubWVtX3N5c2RlcF9zdHJpbmdzOwotKwkJc2l6ZV90IG1lbW5lZWQ7Ci0rCQljaGFyICptZW07Ci0rCQlzdHJ1Y3Qgc3lzZGVwX3N0cmluZ19kZXNjICppbm1lbV9vcmlnX3N5c2RlcF90YWI7Ci0rCQlzdHJ1Y3Qgc3lzZGVwX3N0cmluZ19kZXNjICppbm1lbV90cmFuc19zeXNkZXBfdGFiOwotKwkJbmxzX3VpbnQzMiAqaW5tZW1faGFzaF90YWI7Ci0rCQl1bnNpZ25lZCBpbnQgaSwgajsKLSsKLSsJCS8qIEdldCB0aGUgdmFsdWVzIG9mIHRoZSBzeXN0ZW0gZGVwZW5kZW50IHNlZ21lbnRzLiAgKi8KLSsJCW5fc3lzZGVwX3NlZ21lbnRzID0KLSsJCSAgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPm5fc3lzZGVwX3NlZ21lbnRzKTsKLSsJCXN5c2RlcF9zZWdtZW50cyA9IChjb25zdCBzdHJ1Y3Qgc3lzZGVwX3NlZ21lbnQgKikKLSsJCSAgKChjaGFyICopIGRhdGEKLSsJCSAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPnN5c2RlcF9zZWdtZW50c19vZmZzZXQpKTsKLSsJCXN5c2RlcF9zZWdtZW50X3ZhbHVlcyA9Ci0rCQkgIGFsbG9jYSAobl9zeXNkZXBfc2VnbWVudHMgKiBzaXplb2YgKGNvbnN0IGNoYXIgKikpOwotKwkJZm9yIChpID0gMDsgaSA8IG5fc3lzZGVwX3NlZ21lbnRzOyBpKyspCi0rCQkgIHsKLSsJCSAgICBjb25zdCBjaGFyICpuYW1lID0KLSsJCSAgICAgIChjaGFyICopIGRhdGEKLSsJCSAgICAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIHN5c2RlcF9zZWdtZW50c1tpXS5vZmZzZXQpOwotKwkJICAgIG5sc191aW50MzIgbmFtZWxlbiA9Ci0rCQkgICAgICBXIChkb21haW4tPm11c3Rfc3dhcCwgc3lzZGVwX3NlZ21lbnRzW2ldLmxlbmd0aCk7Ci0rCi0rCQkgICAgaWYgKCEobmFtZWxlbiA+IDAgJiYgbmFtZVtuYW1lbGVuIC0gMV0gPT0gJ1wwJykpCi0rCQkgICAgICB7Ci0rCQkJZnJlZWEgKHN5c2RlcF9zZWdtZW50X3ZhbHVlcyk7Ci0rCQkJZ290byBpbnZhbGlkOwotKwkJICAgICAgfQotKwotKwkJICAgIHN5c2RlcF9zZWdtZW50X3ZhbHVlc1tpXSA9IGdldF9zeXNkZXBfc2VnbWVudF92YWx1ZSAobmFtZSk7Ci0rCQkgIH0KLSsKLSsJCW9yaWdfc3lzZGVwX3RhYiA9IChjb25zdCBubHNfdWludDMyICopCi0rCQkgICgoY2hhciAqKSBkYXRhCi0rCQkgICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBkYXRhLT5vcmlnX3N5c2RlcF90YWJfb2Zmc2V0KSk7Ci0rCQl0cmFuc19zeXNkZXBfdGFiID0gKGNvbnN0IG5sc191aW50MzIgKikKLSsJCSAgKChjaGFyICopIGRhdGEKLSsJCSAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsIGRhdGEtPnRyYW5zX3N5c2RlcF90YWJfb2Zmc2V0KSk7Ci0rCi0rCQkvKiBDb21wdXRlIHRoZSBhbW91bnQgb2YgYWRkaXRpb25hbCBtZW1vcnkgbmVlZGVkIGZvciB0aGUKLSsJCSAgIHN5c3RlbSBkZXBlbmRlbnQgc3RyaW5ncyBhbmQgdGhlIGF1Z21lbnRlZCBoYXNoIHRhYmxlLgotKwkJICAgQXQgdGhlIHNhbWUgdGltZSwgYWxzbyBkcm9wIHN0cmluZyBwYWlycyB3aGljaCByZWZlciB0bwotKwkJICAgYW4gdW5kZWZpbmVkIHN5c3RlbSBkZXBlbmRlbnQgc2VnbWVudC4gICovCi0rCQluX2lubWVtX3N5c2RlcF9zdHJpbmdzID0gMDsKLSsJCW1lbW5lZWQgPSBkb21haW4tPmhhc2hfc2l6ZSAqIHNpemVvZiAobmxzX3VpbnQzMik7Ci0rCQlmb3IgKGkgPSAwOyBpIDwgbl9zeXNkZXBfc3RyaW5nczsgaSsrKQotKwkJICB7Ci0rCQkgICAgaW50IHZhbGlkID0gMTsKLSsJCSAgICBzaXplX3QgbmVlZHNbMl07Ci0rCi0rCQkgICAgZm9yIChqID0gMDsgaiA8IDI7IGorKykKLSsJCSAgICAgIHsKLSsJCQljb25zdCBzdHJ1Y3Qgc3lzZGVwX3N0cmluZyAqc3lzZGVwX3N0cmluZyA9Ci0rCQkJICAoY29uc3Qgc3RydWN0IHN5c2RlcF9zdHJpbmcgKikKLSsJCQkgICgoY2hhciAqKSBkYXRhCi0rCQkJICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKLSsJCQkJaiA9PSAwCi0rCQkJCT8gb3JpZ19zeXNkZXBfdGFiW2ldCi0rCQkJCTogdHJhbnNfc3lzZGVwX3RhYltpXSkpOwotKwkJCXNpemVfdCBuZWVkID0gMDsKLSsJCQljb25zdCBzdHJ1Y3Qgc2VnbWVudF9wYWlyICpwID0gc3lzZGVwX3N0cmluZy0+c2VnbWVudHM7Ci0rCi0rCQkJaWYgKFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBwLT5zeXNkZXByZWYpICE9IFNFR01FTlRTX0VORCkKLSsJCQkgIGZvciAocCA9IHN5c2RlcF9zdHJpbmctPnNlZ21lbnRzOzsgcCsrKQotKwkJCSAgICB7Ci0rCQkJICAgICAgbmxzX3VpbnQzMiBzeXNkZXByZWY7Ci0rCi0rCQkJICAgICAgbmVlZCArPSBXIChkb21haW4tPm11c3Rfc3dhcCwgcC0+c2Vnc2l6ZSk7Ci0rCi0rCQkJICAgICAgc3lzZGVwcmVmID0gVyAoZG9tYWluLT5tdXN0X3N3YXAsIHAtPnN5c2RlcHJlZik7Ci0rCQkJICAgICAgaWYgKHN5c2RlcHJlZiA9PSBTRUdNRU5UU19FTkQpCi0rCQkJCWJyZWFrOwotKwotKwkJCSAgICAgIGlmIChzeXNkZXByZWYgPj0gbl9zeXNkZXBfc2VnbWVudHMpCi0rCQkJCXsKLSsJCQkJICAvKiBJbnZhbGlkLiAgKi8KLSsJCQkJICBmcmVlYSAoc3lzZGVwX3NlZ21lbnRfdmFsdWVzKTsKLSsJCQkJICBnb3RvIGludmFsaWQ7Ci0rCQkJCX0KLSsKLSsJCQkgICAgICBpZiAoc3lzZGVwX3NlZ21lbnRfdmFsdWVzW3N5c2RlcHJlZl0gPT0gTlVMTCkKLSsJCQkJewotKwkJCQkgIC8qIFRoaXMgcGFydGljdWxhciBzdHJpbmcgcGFpciBpcyBpbnZhbGlkLiAgKi8KLSsJCQkJICB2YWxpZCA9IDA7Ci0rCQkJCSAgYnJlYWs7Ci0rCQkJCX0KLSsKLSsJCQkgICAgICBuZWVkICs9IHN0cmxlbiAoc3lzZGVwX3NlZ21lbnRfdmFsdWVzW3N5c2RlcHJlZl0pOwotKwkJCSAgICB9Ci0rCi0rCQkJbmVlZHNbal0gPSBuZWVkOwotKwkJCWlmICghdmFsaWQpCi0rCQkJICBicmVhazsKLSsJCSAgICAgIH0KLSsKLSsJCSAgICBpZiAodmFsaWQpCi0rCQkgICAgICB7Ci0rCQkJbl9pbm1lbV9zeXNkZXBfc3RyaW5ncysrOwotKwkJCW1lbW5lZWQgKz0gbmVlZHNbMF0gKyBuZWVkc1sxXTsKLSsJCSAgICAgIH0KLSsJCSAgfQotKwkJbWVtbmVlZCArPSAyICogbl9pbm1lbV9zeXNkZXBfc3RyaW5ncwotKwkJCSAgICogc2l6ZW9mIChzdHJ1Y3Qgc3lzZGVwX3N0cmluZ19kZXNjKTsKLSsKLSsJCWlmIChuX2lubWVtX3N5c2RlcF9zdHJpbmdzID4gMCkKLSsJCSAgewotKwkJICAgIHVuc2lnbmVkIGludCBrOwotKwotKwkJICAgIC8qIEFsbG9jYXRlIGFkZGl0aW9uYWwgbWVtb3J5LiAgKi8KLSsJCSAgICBtZW0gPSAoY2hhciAqKSBtYWxsb2MgKG1lbW5lZWQpOwotKwkJICAgIGlmIChtZW0gPT0gTlVMTCkKLSsJCSAgICAgIGdvdG8gaW52YWxpZDsKLSsKLSsJCSAgICBkb21haW4tPm1hbGxvY2VkID0gbWVtOwotKwkJICAgIGlubWVtX29yaWdfc3lzZGVwX3RhYiA9IChzdHJ1Y3Qgc3lzZGVwX3N0cmluZ19kZXNjICopIG1lbTsKLSsJCSAgICBtZW0gKz0gbl9pbm1lbV9zeXNkZXBfc3RyaW5ncwotKwkJCSAgICogc2l6ZW9mIChzdHJ1Y3Qgc3lzZGVwX3N0cmluZ19kZXNjKTsKLSsJCSAgICBpbm1lbV90cmFuc19zeXNkZXBfdGFiID0gKHN0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MgKikgbWVtOwotKwkJICAgIG1lbSArPSBuX2lubWVtX3N5c2RlcF9zdHJpbmdzCi0rCQkJICAgKiBzaXplb2YgKHN0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MpOwotKwkJICAgIGlubWVtX2hhc2hfdGFiID0gKG5sc191aW50MzIgKikgbWVtOwotKwkJICAgIG1lbSArPSBkb21haW4tPmhhc2hfc2l6ZSAqIHNpemVvZiAobmxzX3VpbnQzMik7Ci0rCi0rCQkgICAgLyogQ29tcHV0ZSB0aGUgc3lzdGVtIGRlcGVuZGVudCBzdHJpbmdzLiAgKi8KLSsJCSAgICBrID0gMDsKLSsJCSAgICBmb3IgKGkgPSAwOyBpIDwgbl9zeXNkZXBfc3RyaW5nczsgaSsrKQotKwkJICAgICAgewotKwkJCWludCB2YWxpZCA9IDE7Ci0rCi0rCQkJZm9yIChqID0gMDsgaiA8IDI7IGorKykKLSsJCQkgIHsKLSsJCQkgICAgY29uc3Qgc3RydWN0IHN5c2RlcF9zdHJpbmcgKnN5c2RlcF9zdHJpbmcgPQotKwkJCSAgICAgIChjb25zdCBzdHJ1Y3Qgc3lzZGVwX3N0cmluZyAqKQotKwkJCSAgICAgICgoY2hhciAqKSBkYXRhCi0rCQkJICAgICAgICsgVyAoZG9tYWluLT5tdXN0X3N3YXAsCi0rCQkJCSAgICBqID09IDAKLSsJCQkJICAgID8gb3JpZ19zeXNkZXBfdGFiW2ldCi0rCQkJCSAgICA6IHRyYW5zX3N5c2RlcF90YWJbaV0pKTsKLSsJCQkgICAgY29uc3Qgc3RydWN0IHNlZ21lbnRfcGFpciAqcCA9Ci0rCQkJICAgICAgc3lzZGVwX3N0cmluZy0+c2VnbWVudHM7Ci0rCi0rCQkJICAgIGlmIChXIChkb21haW4tPm11c3Rfc3dhcCwgcC0+c3lzZGVwcmVmKQotKwkJCQkhPSBTRUdNRU5UU19FTkQpCi0rCQkJICAgICAgZm9yIChwID0gc3lzZGVwX3N0cmluZy0+c2VnbWVudHM7OyBwKyspCi0rCQkJCXsKLSsJCQkJICBubHNfdWludDMyIHN5c2RlcHJlZjsKLSsKLSsJCQkJICBzeXNkZXByZWYgPQotKwkJCQkgICAgVyAoZG9tYWluLT5tdXN0X3N3YXAsIHAtPnN5c2RlcHJlZik7Ci0rCQkJCSAgaWYgKHN5c2RlcHJlZiA9PSBTRUdNRU5UU19FTkQpCi0rCQkJCSAgICBicmVhazsKLSsKLSsJCQkJICBpZiAoc3lzZGVwX3NlZ21lbnRfdmFsdWVzW3N5c2RlcHJlZl0gPT0gTlVMTCkKLSsJCQkJICAgIHsKLSsJCQkJICAgICAgLyogVGhpcyBwYXJ0aWN1bGFyIHN0cmluZyBwYWlyIGlzCi0rCQkJCQkgaW52YWxpZC4gICovCi0rCQkJCSAgICAgIHZhbGlkID0gMDsKLSsJCQkJICAgICAgYnJlYWs7Ci0rCQkJCSAgICB9Ci0rCQkJCX0KLSsKLSsJCQkgICAgaWYgKCF2YWxpZCkKLSsJCQkgICAgICBicmVhazsKLSsJCQkgIH0KLSsKLSsJCQlpZiAodmFsaWQpCi0rCQkJICB7Ci0rCQkJICAgIGZvciAoaiA9IDA7IGogPCAyOyBqKyspCi0rCQkJICAgICAgewotKwkJCQljb25zdCBzdHJ1Y3Qgc3lzZGVwX3N0cmluZyAqc3lzZGVwX3N0cmluZyA9Ci0rCQkJCSAgKGNvbnN0IHN0cnVjdCBzeXNkZXBfc3RyaW5nICopCi0rCQkJCSAgKChjaGFyICopIGRhdGEKLSsJCQkJICAgKyBXIChkb21haW4tPm11c3Rfc3dhcCwKLSsJCQkJCWogPT0gMAotKwkJCQkJPyBvcmlnX3N5c2RlcF90YWJbaV0KLSsJCQkJCTogdHJhbnNfc3lzZGVwX3RhYltpXSkpOwotKwkJCQljb25zdCBjaGFyICpzdGF0aWNfc2VnbWVudHMgPQotKwkJCQkgIChjaGFyICopIGRhdGEKLSsJCQkJICArIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBzeXNkZXBfc3RyaW5nLT5vZmZzZXQpOwotKwkJCQljb25zdCBzdHJ1Y3Qgc2VnbWVudF9wYWlyICpwID0KLSsJCQkJICBzeXNkZXBfc3RyaW5nLT5zZWdtZW50czsKLSsKLSsJCQkJLyogQ29uY2F0ZW5hdGUgdGhlIHNlZ21lbnRzLCBhbmQgZmlsbAotKwkJCQkgICBpbm1lbV9vcmlnX3N5c2RlcF90YWJba10gKGZvciBqID09IDApIGFuZAotKwkJCQkgICBpbm1lbV90cmFuc19zeXNkZXBfdGFiW2tdIChmb3IgaiA9PSAxKS4gICovCi0rCi0rCQkJCXN0cnVjdCBzeXNkZXBfc3RyaW5nX2Rlc2MgKmlubWVtX3RhYl9lbnRyeSA9Ci0rCQkJCSAgKGogPT0gMAotKwkJCQkgICA/IGlubWVtX29yaWdfc3lzZGVwX3RhYgotKwkJCQkgICA6IGlubWVtX3RyYW5zX3N5c2RlcF90YWIpCi0rCQkJCSAgKyBrOwotKwotKwkJCQlpZiAoVyAoZG9tYWluLT5tdXN0X3N3YXAsIHAtPnN5c2RlcHJlZikKLSsJCQkJICAgID09IFNFR01FTlRTX0VORCkKLSsJCQkJICB7Ci0rCQkJCSAgICAvKiBPbmx5IG9uZSBzdGF0aWMgc2VnbWVudC4gICovCi0rCQkJCSAgICBpbm1lbV90YWJfZW50cnktPmxlbmd0aCA9Ci0rCQkJCSAgICAgIFcgKGRvbWFpbi0+bXVzdF9zd2FwLCBwLT5zZWdzaXplKTsKLSsJCQkJICAgIGlubWVtX3RhYl9lbnRyeS0+cG9pbnRlciA9IHN0YXRpY19zZWdtZW50czsKLSsJCQkJICB9Ci0rCQkJCWVsc2UKLSsJCQkJICB7Ci0rCQkJCSAgICBpbm1lbV90YWJfZW50cnktPnBvaW50ZXIgPSBtZW07Ci0rCi0rCQkJCSAgICBmb3IgKHAgPSBzeXNkZXBfc3RyaW5nLT5zZWdtZW50czs7IHArKykKLSsJCQkJICAgICAgewotKwkJCQkJbmxzX3VpbnQzMiBzZWdzaXplID0KLSsJCQkJCSAgVyAoZG9tYWluLT5tdXN0X3N3YXAsIHAtPnNlZ3NpemUpOwotKwkJCQkJbmxzX3VpbnQzMiBzeXNkZXByZWYgPQotKwkJCQkJICBXIChkb21haW4tPm11c3Rfc3dhcCwgcC0+c3lzZGVwcmVmKTsKLSsJCQkJCXNpemVfdCBuOwotKwotKwkJCQkJaWYgKHNlZ3NpemUgPiAwKQotKwkJCQkJICB7Ci0rCQkJCQkgICAgbWVtY3B5IChtZW0sIHN0YXRpY19zZWdtZW50cywgc2Vnc2l6ZSk7Ci0rCQkJCQkgICAgbWVtICs9IHNlZ3NpemU7Ci0rCQkJCQkgICAgc3RhdGljX3NlZ21lbnRzICs9IHNlZ3NpemU7Ci0rCQkJCQkgIH0KLSsKLSsJCQkJCWlmIChzeXNkZXByZWYgPT0gU0VHTUVOVFNfRU5EKQotKwkJCQkJICBicmVhazsKLSsKLSsJCQkJCW4gPSBzdHJsZW4gKHN5c2RlcF9zZWdtZW50X3ZhbHVlc1tzeXNkZXByZWZdKTsKLSsJCQkJCW1lbWNweSAobWVtLCBzeXNkZXBfc2VnbWVudF92YWx1ZXNbc3lzZGVwcmVmXSwgbik7Ci0rCQkJCQltZW0gKz0gbjsKLSsJCQkJICAgICAgfQotKwotKwkJCQkgICAgaW5tZW1fdGFiX2VudHJ5LT5sZW5ndGggPQotKwkJCQkgICAgICBtZW0gLSBpbm1lbV90YWJfZW50cnktPnBvaW50ZXI7Ci0rCQkJCSAgfQotKwkJCSAgICAgIH0KLSsKLSsJCQkgICAgaysrOwotKwkJCSAgfQotKwkJICAgICAgfQotKwkJICAgIGlmIChrICE9IG5faW5tZW1fc3lzZGVwX3N0cmluZ3MpCi0rCQkgICAgICBhYm9ydCAoKTsKLSsKLSsJCSAgICAvKiBDb21wdXRlIHRoZSBhdWdtZW50ZWQgaGFzaCB0YWJsZS4gICovCi0rCQkgICAgZm9yIChpID0gMDsgaSA8IGRvbWFpbi0+aGFzaF9zaXplOyBpKyspCi0rCQkgICAgICBpbm1lbV9oYXNoX3RhYltpXSA9Ci0rCQkJVyAoZG9tYWluLT5tdXN0X3N3YXBfaGFzaF90YWIsIGRvbWFpbi0+aGFzaF90YWJbaV0pOwotKwkJICAgIGZvciAoaSA9IDA7IGkgPCBuX2lubWVtX3N5c2RlcF9zdHJpbmdzOyBpKyspCi0rCQkgICAgICB7Ci0rCQkJY29uc3QgY2hhciAqbXNnaWQgPSBpbm1lbV9vcmlnX3N5c2RlcF90YWJbaV0ucG9pbnRlcjsKLSsJCQlubHNfdWludDMyIGhhc2hfdmFsID0gaGFzaF9zdHJpbmcgKG1zZ2lkKTsKLSsJCQlubHNfdWludDMyIGlkeCA9IGhhc2hfdmFsICUgZG9tYWluLT5oYXNoX3NpemU7Ci0rCQkJbmxzX3VpbnQzMiBpbmNyID0KLSsJCQkgIDEgKyAoaGFzaF92YWwgJSAoZG9tYWluLT5oYXNoX3NpemUgLSAyKSk7Ci0rCi0rCQkJZm9yICg7OykKLSsJCQkgIHsKLSsJCQkgICAgaWYgKGlubWVtX2hhc2hfdGFiW2lkeF0gPT0gMCkKLSsJCQkgICAgICB7Ci0rCQkJCS8qIEhhc2ggdGFibGUgZW50cnkgaXMgZW1wdHkuICBVc2UgaXQuICAqLwotKwkJCQlpbm1lbV9oYXNoX3RhYltpZHhdID0gMSArIGRvbWFpbi0+bnN0cmluZ3MgKyBpOwotKwkJCQlicmVhazsKLSsJCQkgICAgICB9Ci0rCi0rCQkJICAgIGlmIChpZHggPj0gZG9tYWluLT5oYXNoX3NpemUgLSBpbmNyKQotKwkJCSAgICAgIGlkeCAtPSBkb21haW4tPmhhc2hfc2l6ZSAtIGluY3I7Ci0rCQkJICAgIGVsc2UKLSsJCQkgICAgICBpZHggKz0gaW5jcjsKLSsJCQkgIH0KLSsJCSAgICAgIH0KLSsKLSsJCSAgICBkb21haW4tPm5fc3lzZGVwX3N0cmluZ3MgPSBuX2lubWVtX3N5c2RlcF9zdHJpbmdzOwotKwkJICAgIGRvbWFpbi0+b3JpZ19zeXNkZXBfdGFiID0gaW5tZW1fb3JpZ19zeXNkZXBfdGFiOwotKwkJICAgIGRvbWFpbi0+dHJhbnNfc3lzZGVwX3RhYiA9IGlubWVtX3RyYW5zX3N5c2RlcF90YWI7Ci0rCi0rCQkgICAgZG9tYWluLT5oYXNoX3RhYiA9IGlubWVtX2hhc2hfdGFiOwotKwkJICAgIGRvbWFpbi0+bXVzdF9zd2FwX2hhc2hfdGFiID0gMDsKLSsJCSAgfQotKwkJZWxzZQotKwkJICB7Ci0rCQkgICAgZG9tYWluLT5uX3N5c2RlcF9zdHJpbmdzID0gMDsKLSsJCSAgICBkb21haW4tPm9yaWdfc3lzZGVwX3RhYiA9IE5VTEw7Ci0rCQkgICAgZG9tYWluLT50cmFuc19zeXNkZXBfdGFiID0gTlVMTDsKLSsJCSAgfQotKwotKwkJZnJlZWEgKHN5c2RlcF9zZWdtZW50X3ZhbHVlcyk7Ci0rCSAgICAgIH0KLSsJICAgIGVsc2UKLSsJICAgICAgewotKwkJZG9tYWluLT5uX3N5c2RlcF9zdHJpbmdzID0gMDsKLSsJCWRvbWFpbi0+b3JpZ19zeXNkZXBfdGFiID0gTlVMTDsKLSsJCWRvbWFpbi0+dHJhbnNfc3lzZGVwX3RhYiA9IE5VTEw7Ci0rCSAgICAgIH0KLSsJICB9Ci0rCSAgYnJlYWs7Ci0rCX0KLSAgICAgICBicmVhazsKLSAgICAgZGVmYXVsdDoKLS0gICAgICAvKiBUaGlzIGlzIGFuIGlsbGVnYWwgcmV2aXNpb24uICAqLwotLSNpZiAoZGVmaW5lZCBIQVZFX01NQVAgJiYgZGVmaW5lZCBIQVZFX01VTk1BUCAmJiAhZGVmaW5lZCBESVNBTExPV19NTUFQKSBcCi0tICAgIHx8IGRlZmluZWQgX0xJQkMKLSsgICAgICAvKiBUaGlzIGlzIGFuIGludmFsaWQgcmV2aXNpb24uICAqLwotKyAgICBpbnZhbGlkOgotKyAgICAgIC8qIFRoaXMgaXMgYW4gaW52YWxpZCAubW8gZmlsZS4gICovCi0rICAgICAgaWYgKGRvbWFpbi0+bWFsbG9jZWQpCi0rCWZyZWUgKGRvbWFpbi0+bWFsbG9jZWQpOwotKyNpZmRlZiBIQVZFX01NQVAKLSAgICAgICBpZiAodXNlX21tYXApCi0tCW11bm1hcCAoKGNhZGRyX3QpIGRhdGEsIHN0LnN0X3NpemUpOwotKwltdW5tYXAgKChjYWRkcl90KSBkYXRhLCBzaXplKTsKLSAgICAgICBlbHNlCi0gI2VuZGlmCi0gCWZyZWUgKGRhdGEpOwotQEAgLTE5Myw3ICsxMzg1LDM2IEBACi0gICAgICAgcmV0dXJuOwotICAgICB9Ci0gCi0tICAvKiBTaG93IHRoYXQgb25lIGRvbWFpbiBpcyBjaGFuZ2VkLiAgVGhpcyBtaWdodCBtYWtlIHNvbWUgY2FjaGVkCi0tICAgICB0cmFuc2xhdGlvbnMgaW52YWxpZC4gICovCi0tICArK19ubF9tc2dfY2F0X2NudHI7Ci0rICAvKiBOb3cgaW5pdGlhbGl6ZSB0aGUgY2hhcmFjdGVyIHNldCBjb252ZXJ0ZXIgZnJvbSB0aGUgY2hhcmFjdGVyIHNldAotKyAgICAgdGhlIGZpbGUgaXMgZW5jb2RlZCB3aXRoIChmb3VuZCBpbiB0aGUgaGVhZGVyIGVudHJ5KSB0byB0aGUgZG9tYWluJ3MKLSsgICAgIHNwZWNpZmllZCBjaGFyYWN0ZXIgc2V0IG9yIHRoZSBsb2NhbGUncyBjaGFyYWN0ZXIgc2V0LiAgKi8KLSsgIG51bGxlbnRyeSA9IF9ubF9pbml0X2RvbWFpbl9jb252IChkb21haW5fZmlsZSwgZG9tYWluLCBkb21haW5iaW5kaW5nKTsKLSsKLSsgIC8qIEFsc28gbG9vayBmb3IgYSBwbHVyYWwgc3BlY2lmaWNhdGlvbi4gICovCi0rICBFWFRSQUNUX1BMVVJBTF9FWFBSRVNTSU9OIChudWxsZW50cnksICZkb21haW4tPnBsdXJhbCwgJmRvbWFpbi0+bnBsdXJhbHMpOwotIH0KLSsKLSsKLSsjaWZkZWYgX0xJQkMKLSt2b2lkCi0raW50ZXJuYWxfZnVuY3Rpb24KLStfbmxfdW5sb2FkX2RvbWFpbiAoc3RydWN0IGxvYWRlZF9kb21haW4gKmRvbWFpbikKLSt7Ci0rICBpZiAoZG9tYWluLT5wbHVyYWwgIT0gJl9fZ2V0dGV4dF9nZXJtYW5pY19wbHVyYWwpCi0rICAgIF9fZ2V0dGV4dF9mcmVlX2V4cCAoZG9tYWluLT5wbHVyYWwpOwotKwotKyAgX25sX2ZyZWVfZG9tYWluX2NvbnYgKGRvbWFpbik7Ci0rCi0rICBpZiAoZG9tYWluLT5tYWxsb2NlZCkKLSsgICAgZnJlZSAoZG9tYWluLT5tYWxsb2NlZCk7Ci0rCi0rIyBpZmRlZiBfUE9TSVhfTUFQUEVEX0ZJTEVTCi0rICBpZiAoZG9tYWluLT51c2VfbW1hcCkKLSsgICAgbXVubWFwICgoY2FkZHJfdCkgZG9tYWluLT5kYXRhLCBkb21haW4tPm1tYXBfc2l6ZSk7Ci0rICBlbHNlCi0rIyBlbmRpZgkvKiBfUE9TSVhfTUFQUEVEX0ZJTEVTICovCi0rICAgIGZyZWUgKCh2b2lkICopIGRvbWFpbi0+ZGF0YSk7Ci0rCi0rICBmcmVlIChkb21haW4pOwotK30KLSsjZW5kaWYKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9sb2NhbGNoYXJzZXQuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9sb2NhbGNoYXJzZXQuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjQ3ODcyOTM5MiAtMDQwMAotQEAgLTAsMCArMSwzOTggQEAKLSsvKiBEZXRlcm1pbmUgYSBjYW5vbmljYWwgbmFtZSBmb3IgdGhlIGN1cnJlbnQgbG9jYWxlJ3MgY2hhcmFjdGVyIGVuY29kaW5nLgotKwotKyAgIENvcHlyaWdodCAoQykgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsvKiBXcml0dGVuIGJ5IEJydW5vIEhhaWJsZSA8YnJ1bm9AY2xpc3Aub3JnPi4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKy8qIFNwZWNpZmljYXRpb24uICAqLwotKyNpbmNsdWRlICJsb2NhbGNoYXJzZXQuaCIKLSsKLSsjaWYgSEFWRV9TVERERUZfSAotKyMgaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2lmIEhBVkVfU1RSSU5HX0gKLSsjIGluY2x1ZGUgPHN0cmluZy5oPgotKyNlbHNlCi0rIyBpbmNsdWRlIDxzdHJpbmdzLmg+Ci0rI2VuZGlmCi0rI2lmIEhBVkVfU1RETElCX0gKLSsjIGluY2x1ZGUgPHN0ZGxpYi5oPgotKyNlbmRpZgotKwotKyNpZiBkZWZpbmVkIF9XSU4zMiB8fCBkZWZpbmVkIF9fV0lOMzJfXwotKyMgdW5kZWYgV0lOMzIgICAvKiBhdm9pZCB3YXJuaW5nIG9uIG1pbmd3MzIgKi8KLSsjIGRlZmluZSBXSU4zMgotKyNlbmRpZgotKwotKyNpZiBkZWZpbmVkIF9fRU1YX18KLSsvKiBBc3N1bWUgRU1YIHByb2dyYW0gcnVucyBvbiBPUy8yLCBldmVuIGlmIGNvbXBpbGVkIHVuZGVyIERPUy4gICovCi0rIyBkZWZpbmUgT1MyCi0rI2VuZGlmCi0rCi0rI2lmICFkZWZpbmVkIFdJTjMyCi0rIyBpZiBIQVZFX0xBTkdJTkZPX0NPREVTRVQKLSsjICBpbmNsdWRlIDxsYW5naW5mby5oPgotKyMgZWxzZQotKyMgIGlmIEhBVkVfU0VUTE9DQUxFCi0rIyAgIGluY2x1ZGUgPGxvY2FsZS5oPgotKyMgIGVuZGlmCi0rIyBlbmRpZgotKyNlbGlmIGRlZmluZWQgV0lOMzIKLSsjIGRlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCi0rIyBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0rI2VuZGlmCi0rI2lmIGRlZmluZWQgT1MyCi0rIyBkZWZpbmUgSU5DTF9ET1MKLSsjIGluY2x1ZGUgPG9zMi5oPgotKyNlbmRpZgotKwotKyNpZiBFTkFCTEVfUkVMT0NBVEFCTEUKLSsjIGluY2x1ZGUgInJlbG9jYXRhYmxlLmgiCi0rI2Vsc2UKLSsjIGRlZmluZSByZWxvY2F0ZShwYXRobmFtZSkgKHBhdGhuYW1lKQotKyNlbmRpZgotKwotKyNpZiBkZWZpbmVkIF9XSU4zMiB8fCBkZWZpbmVkIF9fV0lOMzJfXyB8fCBkZWZpbmVkIF9fRU1YX18gfHwgZGVmaW5lZCBfX0RKR1BQX18KLSsgIC8qIFdpbjMyLCBPUy8yLCBET1MgKi8KLSsjIGRlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gJy8nIHx8IChDKSA9PSAnXFwnKQotKyNlbmRpZgotKwotKyNpZm5kZWYgRElSRUNUT1JZX1NFUEFSQVRPUgotKyMgZGVmaW5lIERJUkVDVE9SWV9TRVBBUkFUT1IgJy8nCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBJU1NMQVNICi0rIyBkZWZpbmUgSVNTTEFTSChDKSAoKEMpID09IERJUkVDVE9SWV9TRVBBUkFUT1IpCi0rI2VuZGlmCi0rCi0rI2lmIEhBVkVfREVDTF9HRVRDX1VOTE9DS0VECi0rIyB1bmRlZiBnZXRjCi0rIyBkZWZpbmUgZ2V0YyBnZXRjX3VubG9ja2VkCi0rI2VuZGlmCi0rCi0rLyogVGhlIGZvbGxvd2luZyBzdGF0aWMgdmFyaWFibGUgaXMgZGVjbGFyZWQgJ3ZvbGF0aWxlJyB0byBhdm9pZCBhCi0rICAgcG9zc2libGUgbXVsdGl0aHJlYWQgcHJvYmxlbSBpbiB0aGUgZnVuY3Rpb24gZ2V0X2NoYXJzZXRfYWxpYXNlcy4gSWYgd2UKLSsgICBhcmUgcnVubmluZyBpbiBhIHRocmVhZGVkIGVudmlyb25tZW50LCBhbmQgaWYgdHdvIHRocmVhZHMgaW5pdGlhbGl6ZQotKyAgICdjaGFyc2V0X2FsaWFzZXMnIHNpbXVsdGFuZW91c2x5LCBib3RoIHdpbGwgcHJvZHVjZSB0aGUgc2FtZSB2YWx1ZSwKLSsgICBhbmQgZXZlcnl0aGluZyB3aWxsIGJlIG9rIGlmIHRoZSB0d28gYXNzaWdubWVudHMgdG8gJ2NoYXJzZXRfYWxpYXNlcycKLSsgICBhcmUgYXRvbWljLiBCdXQgSSBkb24ndCBrbm93IHdoYXQgd2lsbCBoYXBwZW4gaWYgdGhlIHR3byBhc3NpZ25tZW50cyBtaXguICAqLwotKyNpZiBfX1NURENfXyAhPSAxCi0rIyBkZWZpbmUgdm9sYXRpbGUgLyogZW1wdHkgKi8KLSsjZW5kaWYKLSsvKiBQb2ludGVyIHRvIHRoZSBjb250ZW50cyBvZiB0aGUgY2hhcnNldC5hbGlhcyBmaWxlLCBpZiBpdCBoYXMgYWxyZWFkeSBiZWVuCi0rICAgcmVhZCwgZWxzZSBOVUxMLiAgSXRzIGZvcm1hdCBpczoKLSsgICBBTElBU18xICdcMCcgQ0FOT05JQ0FMXzEgJ1wwJyAuLi4gQUxJQVNfbiAnXDAnIENBTk9OSUNBTF9uICdcMCcgJ1wwJyAgKi8KLStzdGF0aWMgY29uc3QgY2hhciAqIHZvbGF0aWxlIGNoYXJzZXRfYWxpYXNlczsKLSsKLSsvKiBSZXR1cm4gYSBwb2ludGVyIHRvIHRoZSBjb250ZW50cyBvZiB0aGUgY2hhcnNldC5hbGlhcyBmaWxlLiAgKi8KLStzdGF0aWMgY29uc3QgY2hhciAqCi0rZ2V0X2NoYXJzZXRfYWxpYXNlcyAoKQotK3sKLSsgIGNvbnN0IGNoYXIgKmNwOwotKwotKyAgY3AgPSBjaGFyc2V0X2FsaWFzZXM7Ci0rICBpZiAoY3AgPT0gTlVMTCkKLSsgICAgewotKyNpZiAhKGRlZmluZWQgVk1TIHx8IGRlZmluZWQgV0lOMzIpCi0rICAgICAgRklMRSAqZnA7Ci0rICAgICAgY29uc3QgY2hhciAqZGlyID0gcmVsb2NhdGUgKExJQkRJUik7Ci0rICAgICAgY29uc3QgY2hhciAqYmFzZSA9ICJjaGFyc2V0LmFsaWFzIjsKLSsgICAgICBjaGFyICpmaWxlX25hbWU7Ci0rCi0rICAgICAgLyogQ29uY2F0ZW5hdGUgZGlyIGFuZCBiYXNlIGludG8gZnJlc2hseSBhbGxvY2F0ZWQgZmlsZV9uYW1lLiAgKi8KLSsgICAgICB7Ci0rCXNpemVfdCBkaXJfbGVuID0gc3RybGVuIChkaXIpOwotKwlzaXplX3QgYmFzZV9sZW4gPSBzdHJsZW4gKGJhc2UpOwotKwlpbnQgYWRkX3NsYXNoID0gKGRpcl9sZW4gPiAwICYmICFJU1NMQVNIIChkaXJbZGlyX2xlbiAtIDFdKSk7Ci0rCWZpbGVfbmFtZSA9IChjaGFyICopIG1hbGxvYyAoZGlyX2xlbiArIGFkZF9zbGFzaCArIGJhc2VfbGVuICsgMSk7Ci0rCWlmIChmaWxlX25hbWUgIT0gTlVMTCkKLSsJICB7Ci0rCSAgICBtZW1jcHkgKGZpbGVfbmFtZSwgZGlyLCBkaXJfbGVuKTsKLSsJICAgIGlmIChhZGRfc2xhc2gpCi0rCSAgICAgIGZpbGVfbmFtZVtkaXJfbGVuXSA9IERJUkVDVE9SWV9TRVBBUkFUT1I7Ci0rCSAgICBtZW1jcHkgKGZpbGVfbmFtZSArIGRpcl9sZW4gKyBhZGRfc2xhc2gsIGJhc2UsIGJhc2VfbGVuICsgMSk7Ci0rCSAgfQotKyAgICAgIH0KLSsKLSsgICAgICBpZiAoZmlsZV9uYW1lID09IE5VTEwgfHwgKGZwID0gZm9wZW4gKGZpbGVfbmFtZSwgInIiKSkgPT0gTlVMTCkKLSsJLyogT3V0IG9mIG1lbW9yeSBvciBmaWxlIG5vdCBmb3VuZCwgdHJlYXQgaXQgYXMgZW1wdHkuICAqLwotKwljcCA9ICIiOwotKyAgICAgIGVsc2UKLSsJewotKwkgIC8qIFBhcnNlIHRoZSBmaWxlJ3MgY29udGVudHMuICAqLwotKwkgIGludCBjOwotKwkgIGNoYXIgYnVmMVs1MCsxXTsKLSsJICBjaGFyIGJ1ZjJbNTArMV07Ci0rCSAgY2hhciAqcmVzX3B0ciA9IE5VTEw7Ci0rCSAgc2l6ZV90IHJlc19zaXplID0gMDsKLSsJICBzaXplX3QgbDEsIGwyOwotKwotKwkgIGZvciAoOzspCi0rCSAgICB7Ci0rCSAgICAgIGMgPSBnZXRjIChmcCk7Ci0rCSAgICAgIGlmIChjID09IEVPRikKLSsJCWJyZWFrOwotKwkgICAgICBpZiAoYyA9PSAnXG4nIHx8IGMgPT0gJyAnIHx8IGMgPT0gJ1x0JykKLSsJCWNvbnRpbnVlOwotKwkgICAgICBpZiAoYyA9PSAnIycpCi0rCQl7Ci0rCQkgIC8qIFNraXAgY29tbWVudCwgdG8gZW5kIG9mIGxpbmUuICAqLwotKwkJICBkbwotKwkJICAgIGMgPSBnZXRjIChmcCk7Ci0rCQkgIHdoaWxlICghKGMgPT0gRU9GIHx8IGMgPT0gJ1xuJykpOwotKwkJICBpZiAoYyA9PSBFT0YpCi0rCQkgICAgYnJlYWs7Ci0rCQkgIGNvbnRpbnVlOwotKwkJfQotKwkgICAgICB1bmdldGMgKGMsIGZwKTsKLSsJICAgICAgaWYgKGZzY2FuZiAoZnAsICIlNTBzICU1MHMiLCBidWYxLCBidWYyKSA8IDIpCi0rCQlicmVhazsKLSsJICAgICAgbDEgPSBzdHJsZW4gKGJ1ZjEpOwotKwkgICAgICBsMiA9IHN0cmxlbiAoYnVmMik7Ci0rCSAgICAgIGlmIChyZXNfc2l6ZSA9PSAwKQotKwkJewotKwkJICByZXNfc2l6ZSA9IGwxICsgMSArIGwyICsgMTsKLSsJCSAgcmVzX3B0ciA9IChjaGFyICopIG1hbGxvYyAocmVzX3NpemUgKyAxKTsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJewotKwkJICByZXNfc2l6ZSArPSBsMSArIDEgKyBsMiArIDE7Ci0rCQkgIHJlc19wdHIgPSAoY2hhciAqKSByZWFsbG9jIChyZXNfcHRyLCByZXNfc2l6ZSArIDEpOwotKwkJfQotKwkgICAgICBpZiAocmVzX3B0ciA9PSBOVUxMKQotKwkJewotKwkJICAvKiBPdXQgb2YgbWVtb3J5LiAqLwotKwkJICByZXNfc2l6ZSA9IDA7Ci0rCQkgIGJyZWFrOwotKwkJfQotKwkgICAgICBzdHJjcHkgKHJlc19wdHIgKyByZXNfc2l6ZSAtIChsMiArIDEpIC0gKGwxICsgMSksIGJ1ZjEpOwotKwkgICAgICBzdHJjcHkgKHJlc19wdHIgKyByZXNfc2l6ZSAtIChsMiArIDEpLCBidWYyKTsKLSsJICAgIH0KLSsJICBmY2xvc2UgKGZwKTsKLSsJICBpZiAocmVzX3NpemUgPT0gMCkKLSsJICAgIGNwID0gIiI7Ci0rCSAgZWxzZQotKwkgICAgewotKwkgICAgICAqKHJlc19wdHIgKyByZXNfc2l6ZSkgPSAnXDAnOwotKwkgICAgICBjcCA9IHJlc19wdHI7Ci0rCSAgICB9Ci0rCX0KLSsKLSsgICAgICBpZiAoZmlsZV9uYW1lICE9IE5VTEwpCi0rCWZyZWUgKGZpbGVfbmFtZSk7Ci0rCi0rI2Vsc2UKLSsKLSsjIGlmIGRlZmluZWQgVk1TCi0rICAgICAgLyogVG8gYXZvaWQgdGhlIHRyb3VibGVzIG9mIGFuIGV4dHJhIGZpbGUgY2hhcnNldC5hbGlhc192bXMgaW4gdGhlCi0rCSBzb3VyY2VzIG9mIG1hbnkgR05VIHBhY2thZ2VzLCBzaW1wbHkgaW5saW5lIHRoZSBhbGlhc2VzIGhlcmUuICAqLwotKyAgICAgIC8qIFRoZSBsaXN0IG9mIGVuY29kaW5ncyBpcyB0YWtlbiBmcm9tIHRoZSBPcGVuVk1TIDcuMy0xIGRvY3VtZW50YXRpb24KLSsJICJDb21wYXEgQyBSdW4tVGltZSBMaWJyYXJ5IFJlZmVyZW5jZSBNYW51YWwgZm9yIE9wZW5WTVMgc3lzdGVtcyIKLSsJIHNlY3Rpb24gMTAuNyAiSGFuZGxpbmcgRGlmZmVyZW50IENoYXJhY3RlciBTZXRzIi4gICovCi0rICAgICAgY3AgPSAiSVNPODg1OS0xIiAiXDAiICJJU08tODg1OS0xIiAiXDAiCi0rCSAgICJJU084ODU5LTIiICJcMCIgIklTTy04ODU5LTIiICJcMCIKLSsJICAgIklTTzg4NTktNSIgIlwwIiAiSVNPLTg4NTktNSIgIlwwIgotKwkgICAiSVNPODg1OS03IiAiXDAiICJJU08tODg1OS03IiAiXDAiCi0rCSAgICJJU084ODU5LTgiICJcMCIgIklTTy04ODU5LTgiICJcMCIKLSsJICAgIklTTzg4NTktOSIgIlwwIiAiSVNPLTg4NTktOSIgIlwwIgotKwkgICAvKiBKYXBhbmVzZSAqLwotKwkgICAiZXVjSlAiICJcMCIgIkVVQy1KUCIgIlwwIgotKwkgICAiU0pJUyIgIlwwIiAiU0hJRlRfSklTIiAiXDAiCi0rCSAgICJERUNLQU5KSSIgIlwwIiAiREVDLUtBTkpJIiAiXDAiCi0rCSAgICJTREVDS0FOSkkiICJcMCIgIkVVQy1KUCIgIlwwIgotKwkgICAvKiBDaGluZXNlICovCi0rCSAgICJldWNUVyIgIlwwIiAiRVVDLVRXIiAiXDAiCi0rCSAgICJERUNIQU5ZVSIgIlwwIiAiREVDLUhBTllVIiAiXDAiCi0rCSAgICJERUNIQU5aSSIgIlwwIiAiR0IyMzEyIiAiXDAiCi0rCSAgIC8qIEtvcmVhbiAqLwotKwkgICAiREVDS09SRUFOIiAiXDAiICJFVUMtS1IiICJcMCI7Ci0rIyBlbmRpZgotKwotKyMgaWYgZGVmaW5lZCBXSU4zMgotKyAgICAgIC8qIFRvIGF2b2lkIHRoZSB0cm91YmxlcyBvZiBpbnN0YWxsaW5nIGEgc2VwYXJhdGUgZmlsZSBpbiB0aGUgc2FtZQotKwkgZGlyZWN0b3J5IGFzIHRoZSBETEwgYW5kIG9mIHJldHJpZXZpbmcgdGhlIERMTCdzIGRpcmVjdG9yeSBhdAotKwkgcnVudGltZSwgc2ltcGx5IGlubGluZSB0aGUgYWxpYXNlcyBoZXJlLiAgKi8KLSsKLSsgICAgICBjcCA9ICJDUDkzNiIgIlwwIiAiR0JLIiAiXDAiCi0rCSAgICJDUDEzNjEiICJcMCIgIkpPSEFCIiAiXDAiCi0rCSAgICJDUDIwMTI3IiAiXDAiICJBU0NJSSIgIlwwIgotKwkgICAiQ1AyMDg2NiIgIlwwIiAiS09JOC1SIiAiXDAiCi0rCSAgICJDUDIxODY2IiAiXDAiICJLT0k4LVJVIiAiXDAiCi0rCSAgICJDUDI4NTkxIiAiXDAiICJJU08tODg1OS0xIiAiXDAiCi0rCSAgICJDUDI4NTkyIiAiXDAiICJJU08tODg1OS0yIiAiXDAiCi0rCSAgICJDUDI4NTkzIiAiXDAiICJJU08tODg1OS0zIiAiXDAiCi0rCSAgICJDUDI4NTk0IiAiXDAiICJJU08tODg1OS00IiAiXDAiCi0rCSAgICJDUDI4NTk1IiAiXDAiICJJU08tODg1OS01IiAiXDAiCi0rCSAgICJDUDI4NTk2IiAiXDAiICJJU08tODg1OS02IiAiXDAiCi0rCSAgICJDUDI4NTk3IiAiXDAiICJJU08tODg1OS03IiAiXDAiCi0rCSAgICJDUDI4NTk4IiAiXDAiICJJU08tODg1OS04IiAiXDAiCi0rCSAgICJDUDI4NTk5IiAiXDAiICJJU08tODg1OS05IiAiXDAiCi0rCSAgICJDUDI4NjA1IiAiXDAiICJJU08tODg1OS0xNSIgIlwwIjsKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rICAgICAgY2hhcnNldF9hbGlhc2VzID0gY3A7Ci0rICAgIH0KLSsKLSsgIHJldHVybiBjcDsKLSt9Ci0rCi0rLyogRGV0ZXJtaW5lIHRoZSBjdXJyZW50IGxvY2FsZSdzIGNoYXJhY3RlciBlbmNvZGluZywgYW5kIGNhbm9uaWNhbGl6ZSBpdAotKyAgIGludG8gb25lIG9mIHRoZSBjYW5vbmljYWwgbmFtZXMgbGlzdGVkIGluIGNvbmZpZy5jaGFyc2V0LgotKyAgIFRoZSByZXN1bHQgbXVzdCBub3QgYmUgZnJlZWQ7IGl0IGlzIHN0YXRpY2FsbHkgYWxsb2NhdGVkLgotKyAgIElmIHRoZSBjYW5vbmljYWwgbmFtZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCwgdGhlIHJlc3VsdCBpcyBhIG5vbi1jYW5vbmljYWwKLSsgICBuYW1lLiAgKi8KLSsKLSsjaWZkZWYgU1RBVElDCi0rU1RBVElDCi0rI2VuZGlmCi0rY29uc3QgY2hhciAqCi0rbG9jYWxlX2NoYXJzZXQgKCkKLSt7Ci0rICBjb25zdCBjaGFyICpjb2Rlc2V0OwotKyAgY29uc3QgY2hhciAqYWxpYXNlczsKLSsKLSsjaWYgIShkZWZpbmVkIFdJTjMyIHx8IGRlZmluZWQgT1MyKQotKwotKyMgaWYgSEFWRV9MQU5HSU5GT19DT0RFU0VUCi0rCi0rICAvKiBNb3N0IHN5c3RlbXMgc3VwcG9ydCBubF9sYW5naW5mbyAoQ09ERVNFVCkgbm93YWRheXMuICAqLwotKyAgY29kZXNldCA9IG5sX2xhbmdpbmZvIChDT0RFU0VUKTsKLSsKLSsjIGVsc2UKLSsKLSsgIC8qIE9uIG9sZCBzeXN0ZW1zIHdoaWNoIGxhY2sgaXQsIHVzZSBzZXRsb2NhbGUgb3IgZ2V0ZW52LiAgKi8KLSsgIGNvbnN0IGNoYXIgKmxvY2FsZSA9IE5VTEw7Ci0rCi0rICAvKiBCdXQgbW9zdCBvbGQgc3lzdGVtcyBkb24ndCBoYXZlIGEgY29tcGxldGUgc2V0IG9mIGxvY2FsZXMuICBTb21lCi0rICAgICAobGlrZSBTdW5PUyA0IG9yIERKR1BQKSBoYXZlIG9ubHkgdGhlIEMgbG9jYWxlLiAgVGhlcmVmb3JlIHdlIGRvbid0Ci0rICAgICB1c2Ugc2V0bG9jYWxlIGhlcmU7IGl0IHdvdWxkIHJldHVybiAiQyIgd2hlbiBpdCBkb2Vzbid0IHN1cHBvcnQgdGhlCi0rICAgICBsb2NhbGUgbmFtZSB0aGUgdXNlciBoYXMgc2V0LiAgKi8KLSsjICBpZiBIQVZFX1NFVExPQ0FMRSAmJiAwCi0rICBsb2NhbGUgPSBzZXRsb2NhbGUgKExDX0NUWVBFLCBOVUxMKTsKLSsjICBlbmRpZgotKyAgaWYgKGxvY2FsZSA9PSBOVUxMIHx8IGxvY2FsZVswXSA9PSAnXDAnKQotKyAgICB7Ci0rICAgICAgbG9jYWxlID0gZ2V0ZW52ICgiTENfQUxMIik7Ci0rICAgICAgaWYgKGxvY2FsZSA9PSBOVUxMIHx8IGxvY2FsZVswXSA9PSAnXDAnKQotKwl7Ci0rCSAgbG9jYWxlID0gZ2V0ZW52ICgiTENfQ1RZUEUiKTsKLSsJICBpZiAobG9jYWxlID09IE5VTEwgfHwgbG9jYWxlWzBdID09ICdcMCcpCi0rCSAgICBsb2NhbGUgPSBnZXRlbnYgKCJMQU5HIik7Ci0rCX0KLSsgICAgfQotKwotKyAgLyogT24gc29tZSBvbGQgc3lzdGVtcywgb25lIHVzZWQgdG8gc2V0IGxvY2FsZSA9ICJpc284ODU5XzEiLiBPbiBvdGhlcnMsCi0rICAgICB5b3Ugc2V0IGl0IHRvICJsYW5ndWFnZV9DT1VOVFJZLmNoYXJzZXQiLiBJbiBhbnkgY2FzZSwgd2UgcmVzb2x2ZSBpdAotKyAgICAgdGhyb3VnaCB0aGUgY2hhcnNldC5hbGlhcyBmaWxlLiAgKi8KLSsgIGNvZGVzZXQgPSBsb2NhbGU7Ci0rCi0rIyBlbmRpZgotKwotKyNlbGlmIGRlZmluZWQgV0lOMzIKLSsKLSsgIHN0YXRpYyBjaGFyIGJ1ZlsyICsgMTAgKyAxXTsKLSsKLSsgIC8qIFdvZTMyIGhhcyBhIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgbG9jYWxlJ3MgY29kZXBhZ2UgYXMgYSBudW1iZXIuICAqLwotKyAgc3ByaW50ZiAoYnVmLCAiQ1AldSIsIEdldEFDUCAoKSk7Ci0rICBjb2Rlc2V0ID0gYnVmOwotKwotKyNlbGlmIGRlZmluZWQgT1MyCi0rCi0rICBjb25zdCBjaGFyICpsb2NhbGU7Ci0rICBzdGF0aWMgY2hhciBidWZbMiArIDEwICsgMV07Ci0rICBVTE9ORyBjcFszXTsKLSsgIFVMT05HIGNwbGVuOwotKwotKyAgLyogQWxsb3cgdXNlciB0byBvdmVycmlkZSB0aGUgY29kZXNldCwgYXMgc2V0IGluIHRoZSBvcGVyYXRpbmcgc3lzdGVtLAotKyAgICAgd2l0aCBzdGFuZGFyZCBsYW5ndWFnZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMuICAqLwotKyAgbG9jYWxlID0gZ2V0ZW52ICgiTENfQUxMIik7Ci0rICBpZiAobG9jYWxlID09IE5VTEwgfHwgbG9jYWxlWzBdID09ICdcMCcpCi0rICAgIHsKLSsgICAgICBsb2NhbGUgPSBnZXRlbnYgKCJMQ19DVFlQRSIpOwotKyAgICAgIGlmIChsb2NhbGUgPT0gTlVMTCB8fCBsb2NhbGVbMF0gPT0gJ1wwJykKLSsJbG9jYWxlID0gZ2V0ZW52ICgiTEFORyIpOwotKyAgICB9Ci0rICBpZiAobG9jYWxlICE9IE5VTEwgJiYgbG9jYWxlWzBdICE9ICdcMCcpCi0rICAgIHsKLSsgICAgICAvKiBJZiB0aGUgbG9jYWxlIG5hbWUgY29udGFpbnMgYW4gZW5jb2RpbmcgYWZ0ZXIgdGhlIGRvdCwgcmV0dXJuIGl0LiAgKi8KLSsgICAgICBjb25zdCBjaGFyICpkb3QgPSBzdHJjaHIgKGxvY2FsZSwgJy4nKTsKLSsKLSsgICAgICBpZiAoZG90ICE9IE5VTEwpCi0rCXsKLSsJICBjb25zdCBjaGFyICptb2RpZmllcjsKLSsKLSsJICBkb3QrKzsKLSsJICAvKiBMb29rIGZvciB0aGUgcG9zc2libGUgQC4uLiB0cmFpbGVyIGFuZCByZW1vdmUgaXQsIGlmIGFueS4gICovCi0rCSAgbW9kaWZpZXIgPSBzdHJjaHIgKGRvdCwgJ0AnKTsKLSsJICBpZiAobW9kaWZpZXIgPT0gTlVMTCkKLSsJICAgIHJldHVybiBkb3Q7Ci0rCSAgaWYgKG1vZGlmaWVyIC0gZG90IDwgc2l6ZW9mIChidWYpKQotKwkgICAgewotKwkgICAgICBtZW1jcHkgKGJ1ZiwgZG90LCBtb2RpZmllciAtIGRvdCk7Ci0rCSAgICAgIGJ1ZiBbbW9kaWZpZXIgLSBkb3RdID0gJ1wwJzsKLSsJICAgICAgcmV0dXJuIGJ1ZjsKLSsJICAgIH0KLSsJfQotKwotKyAgICAgIC8qIFJlc29sdmUgdGhyb3VnaCB0aGUgY2hhcnNldC5hbGlhcyBmaWxlLiAgKi8KLSsgICAgICBjb2Rlc2V0ID0gbG9jYWxlOwotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICAvKiBPUy8yIGhhcyBhIGZ1bmN0aW9uIHJldHVybmluZyB0aGUgbG9jYWxlJ3MgY29kZXBhZ2UgYXMgYSBudW1iZXIuICAqLwotKyAgICAgIGlmIChEb3NRdWVyeUNwIChzaXplb2YgKGNwKSwgY3AsICZjcGxlbikpCi0rCWNvZGVzZXQgPSAiIjsKLSsgICAgICBlbHNlCi0rCXsKLSsJICBzcHJpbnRmIChidWYsICJDUCV1IiwgY3BbMF0pOwotKwkgIGNvZGVzZXQgPSBidWY7Ci0rCX0KLSsgICAgfQotKwotKyNlbmRpZgotKwotKyAgaWYgKGNvZGVzZXQgPT0gTlVMTCkKLSsgICAgLyogVGhlIGNhbm9uaWNhbCBuYW1lIGNhbm5vdCBiZSBkZXRlcm1pbmVkLiAgKi8KLSsgICAgY29kZXNldCA9ICIiOwotKwotKyAgLyogUmVzb2x2ZSBhbGlhcy4gKi8KLSsgIGZvciAoYWxpYXNlcyA9IGdldF9jaGFyc2V0X2FsaWFzZXMgKCk7Ci0rICAgICAgICphbGlhc2VzICE9ICdcMCc7Ci0rICAgICAgIGFsaWFzZXMgKz0gc3RybGVuIChhbGlhc2VzKSArIDEsIGFsaWFzZXMgKz0gc3RybGVuIChhbGlhc2VzKSArIDEpCi0rICAgIGlmIChzdHJjbXAgKGNvZGVzZXQsIGFsaWFzZXMpID09IDAKLSsJfHwgKGFsaWFzZXNbMF0gPT0gJyonICYmIGFsaWFzZXNbMV0gPT0gJ1wwJykpCi0rICAgICAgewotKwljb2Rlc2V0ID0gYWxpYXNlcyArIHN0cmxlbiAoYWxpYXNlcykgKyAxOwotKwlicmVhazsKLSsgICAgICB9Ci0rCi0rICAvKiBEb24ndCByZXR1cm4gYW4gZW1wdHkgc3RyaW5nLiAgR05VIGxpYmMgYW5kIEdOVSBsaWJpY29udiBpbnRlcnByZXQKLSsgICAgIHRoZSBlbXB0eSBzdHJpbmcgYXMgZGVub3RpbmcgInRoZSBsb2NhbGUncyBjaGFyYWN0ZXIgZW5jb2RpbmciLAotKyAgICAgdGh1cyBHTlUgbGliaWNvbnYgd291bGQgY2FsbCB0aGlzIGZ1bmN0aW9uIGEgc2Vjb25kIHRpbWUuICAqLwotKyAgaWYgKGNvZGVzZXRbMF0gPT0gJ1wwJykKLSsgICAgY29kZXNldCA9ICJBU0NJSSI7Ci0rCi0rICByZXR1cm4gY29kZXNldDsKLSt9Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvbG9jYWxjaGFyc2V0LmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvbG9jYWxjaGFyc2V0LmgJMjAwNC0wOS0xMiAxNDo0MDozNC40ODM3Mjg2MzIgLTA0MDAKLUBAIC0wLDAgKzEsNDIgQEAKLSsvKiBEZXRlcm1pbmUgYSBjYW5vbmljYWwgbmFtZSBmb3IgdGhlIGN1cnJlbnQgbG9jYWxlJ3MgY2hhcmFjdGVyIGVuY29kaW5nLgotKyAgIENvcHlyaWdodCAoQykgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIHRoZSBHTlUgQ0hBUlNFVCBMaWJyYXJ5LgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZuZGVmIF9MT0NBTENIQVJTRVRfSAotKyNkZWZpbmUgX0xPQ0FMQ0hBUlNFVF9ICi0rCi0rCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0rCi0rCi0rLyogRGV0ZXJtaW5lIHRoZSBjdXJyZW50IGxvY2FsZSdzIGNoYXJhY3RlciBlbmNvZGluZywgYW5kIGNhbm9uaWNhbGl6ZSBpdAotKyAgIGludG8gb25lIG9mIHRoZSBjYW5vbmljYWwgbmFtZXMgbGlzdGVkIGluIGNvbmZpZy5jaGFyc2V0LgotKyAgIFRoZSByZXN1bHQgbXVzdCBub3QgYmUgZnJlZWQ7IGl0IGlzIHN0YXRpY2FsbHkgYWxsb2NhdGVkLgotKyAgIElmIHRoZSBjYW5vbmljYWwgbmFtZSBjYW5ub3QgYmUgZGV0ZXJtaW5lZCwgdGhlIHJlc3VsdCBpcyBhIG5vbi1jYW5vbmljYWwKLSsgICBuYW1lLiAgKi8KLStleHRlcm4gY29uc3QgY2hhciAqIGxvY2FsZV9jaGFyc2V0ICh2b2lkKTsKLSsKLSsKLSsjaWZkZWYgX19jcGx1c3BsdXMKLSt9Ci0rI2VuZGlmCi0rCi0rCi0rI2VuZGlmIC8qIF9MT0NBTENIQVJTRVRfSCAqLwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2xvY2FsZS5hbGlhcwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9sb2NhbGUuYWxpYXMJMjAwNC0wOS0xMiAxNDo0MDozNC40OTk3MjYyMDAgLTA0MDAKLUBAIC0wLDAgKzEsNzggQEAKLSsjIExvY2FsZSBuYW1lIGFsaWFzIGRhdGEgYmFzZS4KLSsjIENvcHlyaWdodCAoQykgMTk5Ni0yMDAxLDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsjIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsjIGFueSBsYXRlciB2ZXJzaW9uLgotKyMKLSsjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rIyBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsjCi0rIyBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyMgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rIyBVU0EuCi0rCi0rIyBUaGUgZm9ybWF0IG9mIHRoaXMgZmlsZSBpcyB0aGUgc2FtZSBhcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgZmlsZSBvZgotKyMgdGhlIFggV2luZG93IFN5c3RlbSwgd2hpY2ggbm9ybWFsbHkgY2FuIGJlIGZvdW5kIGluCi0rIwkvdXNyL2xpYi9YMTEvbG9jYWxlL2xvY2FsZS5hbGlhcwotKyMgQSBzaW5nbGUgbGluZSBjb250YWlucyB0d28gZmllbGRzOiBhbiBhbGlhcyBhbmQgYSBzdWJzdGl0dXRpb24gdmFsdWUuCi0rIyBBbGwgZW50cmllcyBhcmUgY2FzZSBpbmRlcGVuZGVudC4KLSsKLSsjIE5vdGU6IFRoaXMgZmlsZSBpcyBmYXIgZnJvbSBiZWluZyBjb21wbGV0ZS4gIElmIHlvdSBoYXZlIGEgdmFsdWUgZm9yCi0rIyB5b3VyIG93biBzaXRlIHdoaWNoIHlvdSB0aGluayBtaWdodCBiZSB1c2VmdWwgZm9yIG90aGVycyB0b28sIHNoYXJlCi0rIyBpdCB3aXRoIHRoZSByZXN0IG9mIHVzLiAgU2VuZCBpdCB1c2luZyB0aGUgYGdsaWJjYnVnJyBzY3JpcHQgdG8KLSsjIGJ1Z3NAZ251Lm9yZy4KLSsKLSsjIFBhY2thZ2VzIHVzaW5nIHRoaXMgZmlsZTogCi0rCi0rYm9rbWFsCQluYl9OTy5JU08tODg1OS0xCi0rYm9rbeVsCQluYl9OTy5JU08tODg1OS0xCi0rY2F0YWxhbgkJY2FfRVMuSVNPLTg4NTktMQotK2Nyb2F0aWFuCWhyX0hSLklTTy04ODU5LTIKLStjemVjaAkJY3NfQ1ouSVNPLTg4NTktMgotK2RhbmlzaCAgICAgICAgICBkYV9ESy5JU08tODg1OS0xCi0rZGFuc2sJCWRhX0RLLklTTy04ODU5LTEKLStkZXV0c2NoCQlkZV9ERS5JU08tODg1OS0xCi0rZHV0Y2gJCW5sX05MLklTTy04ODU5LTEKLStlZXN0aQkJZXRfRUUuSVNPLTg4NTktMQotK2VzdG9uaWFuCWV0X0VFLklTTy04ODU5LTEKLStmaW5uaXNoICAgICAgICAgZmlfRkkuSVNPLTg4NTktMQotK2ZyYW7nYWlzCWZyX0ZSLklTTy04ODU5LTEKLStmcmVuY2gJCWZyX0ZSLklTTy04ODU5LTEKLStnYWxlZ28JCWdsX0VTLklTTy04ODU5LTEKLStnYWxpY2lhbglnbF9FUy5JU08tODg1OS0xCi0rZ2VybWFuCQlkZV9ERS5JU08tODg1OS0xCi0rZ3JlZWsgICAgICAgICAgIGVsX0dSLklTTy04ODU5LTcKLStoZWJyZXcgICAgICAgICAgaGVfSUwuSVNPLTg4NTktOAotK2hydmF0c2tpCWhyX0hSLklTTy04ODU5LTIKLStodW5nYXJpYW4gICAgICAgaHVfSFUuSVNPLTg4NTktMgotK2ljZWxhbmRpYyAgICAgICBpc19JUy5JU08tODg1OS0xCi0raXRhbGlhbiAgICAgICAgIGl0X0lULklTTy04ODU5LTEKLStqYXBhbmVzZQlqYV9KUC5ldWNKUAotK2phcGFuZXNlLmV1YwlqYV9KUC5ldWNKUAotK2phX0pQCQlqYV9KUC5ldWNKUAotK2phX0pQLnVqaXMJamFfSlAuZXVjSlAKLStqYXBhbmVzZS5zamlzCWphX0pQLlNKSVMKLStrb3JlYW4JCWtvX0tSLmV1Y0tSCi0ra29yZWFuLmV1YyAJa29fS1IuZXVjS1IKLStrb19LUgkJa29fS1IuZXVjS1IKLStsaXRodWFuaWFuICAgICAgbHRfTFQuSVNPLTg4NTktMTMKLStub19OTwkJbmJfTk8uSVNPLTg4NTktMQotK25vX05PLklTTy04ODU5LTEgbmJfTk8uSVNPLTg4NTktMQotK25vcndlZ2lhbiAgICAgICBuYl9OTy5JU08tODg1OS0xCi0rbnlub3JzawkJbm5fTk8uSVNPLTg4NTktMQotK3BvbGlzaCAgICAgICAgICBwbF9QTC5JU08tODg1OS0yCi0rcG9ydHVndWVzZSAgICAgIHB0X1BULklTTy04ODU5LTEKLStyb21hbmlhbiAgICAgICAgcm9fUk8uSVNPLTg4NTktMgotK3J1c3NpYW4gICAgICAgICBydV9SVS5JU08tODg1OS01Ci0rc2xvdmFrICAgICAgICAgIHNrX1NLLklTTy04ODU5LTIKLStzbG92ZW5lICAgICAgICAgc2xfU0kuSVNPLTg4NTktMgotK3Nsb3ZlbmlhbiAgICAgICBzbF9TSS5JU08tODg1OS0yCi0rc3BhbmlzaCAgICAgICAgIGVzX0VTLklTTy04ODU5LTEKLStzd2VkaXNoICAgICAgICAgc3ZfU0UuSVNPLTg4NTktMQotK3RoYWkJCXRoX1RILlRJUy02MjAKLSt0dXJraXNoICAgICAgICAgdHJfVFIuSVNPLTg4NTktOQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2xvY2FsZWFsaWFzLmMJMTk5OC0wNC0yNiAwOToyMjozNy4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvbG9jYWxlYWxpYXMuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjUwNTcyNTI4OCAtMDQwMAotQEAgLTEsMjAgKzEsMjcgQEAKLS0vKiBIYW5kbGUgYWxpYXNlcyBmb3IgbG9jYWxlIG5hbWVzCi0tICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotLSAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAZ251LmFpLm1pdC5lZHU+LCAxOTk1LgotKy8qIEhhbmRsZSBhbGlhc2VzIGZvciBsb2NhbGUgbmFtZXMuCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTksIDIwMDAtMjAwMSwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSAgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rLyogVGVsbCBnbGliYydzIDxzdHJpbmcuaD4gdG8gcHJvdmlkZSBhIHByb3RvdHlwZSBmb3IgbWVtcGNweSgpLgotKyAgIFRoaXMgbXVzdCBjb21lIGJlZm9yZSA8Y29uZmlnLmg+IGJlY2F1c2UgPGNvbmZpZy5oPiBtYXkgaW5jbHVkZQotKyAgIDxmZWF0dXJlcy5oPiwgYW5kIG9uY2UgPGZlYXR1cmVzLmg+IGhhcyBiZWVuIGluY2x1ZGVkLCBpdCdzIHRvbyBsYXRlLiAgKi8KLSsjaWZuZGVmIF9HTlVfU09VUkNFCi0rIyBkZWZpbmUgX0dOVV9TT1VSQ0UgICAgMQotKyNlbmRpZgotIAotICNpZmRlZiBIQVZFX0NPTkZJR19ICi0gIyBpbmNsdWRlIDxjb25maWcuaD4KLUBAIC0yMiw1NiArMjksNDUgQEAKLSAKLSAjaW5jbHVkZSA8Y3R5cGUuaD4KLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfX19GU0VUTE9DS0lORwotKyMgaW5jbHVkZSA8c3RkaW9fZXh0Lmg+Ci0rI2VuZGlmCi0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIAotICNpZmRlZiBfX0dOVUNfXwotKyMgdW5kZWYgYWxsb2NhCi0gIyBkZWZpbmUgYWxsb2NhIF9fYnVpbHRpbl9hbGxvY2EKLSAjIGRlZmluZSBIQVZFX0FMTE9DQSAxCi0gI2Vsc2UKLS0jIGlmIGRlZmluZWQgSEFWRV9BTExPQ0FfSCB8fCBkZWZpbmVkIF9MSUJDCi0tIyAgaW5jbHVkZSA8YWxsb2NhLmg+Ci0rIyBpZmRlZiBfTVNDX1ZFUgotKyMgIGluY2x1ZGUgPG1hbGxvYy5oPgotKyMgIGRlZmluZSBhbGxvY2EgX2FsbG9jYQotICMgZWxzZQotLSMgIGlmZGVmIF9BSVgKLS0gI3ByYWdtYSBhbGxvY2EKLSsjICBpZiBkZWZpbmVkIEhBVkVfQUxMT0NBX0ggfHwgZGVmaW5lZCBfTElCQwotKyMgICBpbmNsdWRlIDxhbGxvY2EuaD4KLSAjICBlbHNlCi0tIyAgIGlmbmRlZiBhbGxvY2EKLSsjICAgaWZkZWYgX0FJWAotKyAjcHJhZ21hIGFsbG9jYQotKyMgICBlbHNlCi0rIyAgICBpZm5kZWYgYWxsb2NhCi0gY2hhciAqYWxsb2NhICgpOwotKyMgICAgZW5kaWYKLSAjICAgZW5kaWYKLSAjICBlbmRpZgotICMgZW5kaWYKLSAjZW5kaWYKLSAKLS0jaWYgZGVmaW5lZCBTVERDX0hFQURFUlMgfHwgZGVmaW5lZCBfTElCQwotLSMgaW5jbHVkZSA8c3RkbGliLmg+Ci0tI2Vsc2UKLS1jaGFyICpnZXRlbnYgKCk7Ci0tIyBpZmRlZiBIQVZFX01BTExPQ19ICi0tIyAgaW5jbHVkZSA8bWFsbG9jLmg+Ci0tIyBlbHNlCi0tdm9pZCBmcmVlICgpOwotLSMgZW5kaWYKLS0jZW5kaWYKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotIAotLSNpZiBkZWZpbmVkIEhBVkVfU1RSSU5HX0ggfHwgZGVmaW5lZCBfTElCQwotLSMgaWZuZGVmIF9HTlVfU09VUkNFCi0tIyAgZGVmaW5lIF9HTlVfU09VUkNFCTEKLS0jIGVuZGlmCi0tIyBpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSsKLSsjaWYgRU5BQkxFX1JFTE9DQVRBQkxFCi0rIyBpbmNsdWRlICJyZWxvY2F0YWJsZS5oIgotICNlbHNlCi0tIyBpbmNsdWRlIDxzdHJpbmdzLmg+Ci0tIyBpZm5kZWYgbWVtY3B5Ci0tIyAgZGVmaW5lIG1lbWNweShEc3QsIFNyYywgTnVtKSBiY29weSAoU3JjLCBEc3QsIE51bSkKLS0jIGVuZGlmCi0tI2VuZGlmCi0tI2lmICFIQVZFX1NUUkNIUiAmJiAhZGVmaW5lZCBfTElCQwotLSMgaWZuZGVmIHN0cmNocgotLSMgIGRlZmluZSBzdHJjaHIgaW5kZXgKLS0jIGVuZGlmCi0rIyBkZWZpbmUgcmVsb2NhdGUocGF0aG5hbWUpIChwYXRobmFtZSkKLSAjZW5kaWYKLSAKLS0jaW5jbHVkZSAiZ2V0dGV4dC5oIgotLSNpbmNsdWRlICJnZXR0ZXh0UC5oIgotLQotIC8qIEBAIGVuZCBvZiBwcm9sb2cgQEAgKi8KLSAKLSAjaWZkZWYgX0xJQkMKLUBAIC03OSw0MyArNzUsNDkgQEAKLSAgICBiZWNhdXNlIHNvbWUgQU5TSSBDIGZ1bmN0aW9ucyB3aWxsIHJlcXVpcmUgbGlua2luZyB3aXRoIHRoaXMgb2JqZWN0Ci0gICAgZmlsZSBhbmQgdGhlIG5hbWUgc3BhY2UgbXVzdCBub3QgYmUgcG9sbHV0ZWQuICAqLwotICMgZGVmaW5lIHN0cmNhc2VjbXAgX19zdHJjYXNlY21wCi0rCi0rIyBpZm5kZWYgbWVtcGNweQotKyMgIGRlZmluZSBtZW1wY3B5IF9fbWVtcGNweQotKyMgZW5kaWYKLSsjIGRlZmluZSBIQVZFX01FTVBDUFkJMQotKyMgZGVmaW5lIEhBVkVfX19GU0VUTE9DS0lORwkxCi0rCi0rLyogV2UgbmVlZCBsb2NraW5nIGhlcmUgc2luY2Ugd2UgY2FuIGJlIGNhbGxlZCBmcm9tIGRpZmZlcmVudCBwbGFjZXMuICAqLwotKyMgaW5jbHVkZSA8Yml0cy9saWJjLWxvY2suaD4KLSsKLStfX2xpYmNfbG9ja19kZWZpbmVfaW5pdGlhbGl6ZWQgKHN0YXRpYywgbG9jayk7Ci0rI2VuZGlmCi0rCi0rI2lmbmRlZiBpbnRlcm5hbF9mdW5jdGlvbgotKyMgZGVmaW5lIGludGVybmFsX2Z1bmN0aW9uCi0gI2VuZGlmCi0gCi0rLyogU29tZSBvcHRpbWl6YXRpb25zIGZvciBnbGliYy4gICovCi0rI2lmZGVmIF9MSUJDCi0rIyBkZWZpbmUgRkVPRihmcCkJCWZlb2ZfdW5sb2NrZWQgKGZwKQotKyMgZGVmaW5lIEZHRVRTKGJ1ZiwgbiwgZnApCWZnZXRzX3VubG9ja2VkIChidWYsIG4sIGZwKQotKyNlbHNlCi0rIyBkZWZpbmUgRkVPRihmcCkJCWZlb2YgKGZwKQotKyMgZGVmaW5lIEZHRVRTKGJ1ZiwgbiwgZnApCWZnZXRzIChidWYsIG4sIGZwKQotKyNlbmRpZgotIAotLS8qIEZvciB0aG9zZSBsb29zaW5nIHN5c3RlbXMgd2hpY2ggZG9uJ3QgaGF2ZSBgYWxsb2NhJyB3ZSBoYXZlIHRvIGFkZAotKy8qIEZvciB0aG9zZSBsb3Npbmcgc3lzdGVtcyB3aGljaCBkb24ndCBoYXZlIGBhbGxvY2EnIHdlIGhhdmUgdG8gYWRkCi0gICAgc29tZSBhZGRpdGlvbmFsIGNvZGUgZW11bGF0aW5nIGl0LiAgKi8KLSAjaWZkZWYgSEFWRV9BTExPQ0EKLS0vKiBOb3RoaW5nIGhhcyB0byBiZSBkb25lLiAgKi8KLS0jIGRlZmluZSBBRERfQkxPQ0sobGlzdCwgYWRkcmVzcykgLyogbm90aGluZyAqLwotLSMgZGVmaW5lIEZSRUVfQkxPQ0tTKGxpc3QpIC8qIG5vdGhpbmcgKi8KLSsjIGRlZmluZSBmcmVlYShwKSAvKiBub3RoaW5nICovCi0gI2Vsc2UKLS1zdHJ1Y3QgYmxvY2tfbGlzdAotLXsKLS0gIHZvaWQgKmFkZHJlc3M7Ci0tICBzdHJ1Y3QgYmxvY2tfbGlzdCAqbmV4dDsKLS19OwotLSMgZGVmaW5lIEFERF9CTE9DSyhsaXN0LCBhZGRyKQkJCQkJCSAgICAgIFwKLS0gIGRvIHsJCQkJCQkJCQkgICAgICBcCi0tICAgIHN0cnVjdCBibG9ja19saXN0ICpuZXdwID0gKHN0cnVjdCBibG9ja19saXN0ICopIG1hbGxvYyAoc2l6ZW9mICgqbmV3cCkpOyAgXAotLSAgICAvKiBJZiB3ZSBjYW5ub3QgZ2V0IGEgZnJlZSBibG9jayB3ZSBjYW5ub3QgYWRkIHRoZSBuZXcgZWxlbWVudCB0bwkgICAgICBcCi0tICAgICAgIHRoZSBsaXN0LiAgKi8JCQkJCQkJICAgICAgXAotLSAgICBpZiAobmV3cCAhPSBOVUxMKSB7CQkJCQkJCSAgICAgIFwKLS0gICAgICBuZXdwLT5hZGRyZXNzID0gKGFkZHIpOwkJCQkJCSAgICAgIFwKLS0gICAgICBuZXdwLT5uZXh0ID0gKGxpc3QpOwkJCQkJCSAgICAgIFwKLS0gICAgICAobGlzdCkgPSBuZXdwOwkJCQkJCQkgICAgICBcCi0tICAgIH0JCQkJCQkJCQkgICAgICBcCi0tICB9IHdoaWxlICgwKQotLSMgZGVmaW5lIEZSRUVfQkxPQ0tTKGxpc3QpCQkJCQkJICAgICAgXAotLSAgZG8gewkJCQkJCQkJCSAgICAgIFwKLS0gICAgd2hpbGUgKGxpc3QgIT0gTlVMTCkgewkJCQkJCSAgICAgIFwKLS0gICAgICBzdHJ1Y3QgYmxvY2tfbGlzdCAqb2xkID0gbGlzdDsJCQkJCSAgICAgIFwKLS0gICAgICBsaXN0ID0gbGlzdC0+bmV4dDsJCQkJCQkgICAgICBcCi0tICAgICAgZnJlZSAob2xkKTsJCQkJCQkJICAgICAgXAotLSAgICB9CQkJCQkJCQkJICAgICAgXAotLSAgfSB3aGlsZSAoMCkKLS0jIHVuZGVmIGFsbG9jYQotLSMgZGVmaW5lIGFsbG9jYShzaXplKSAobWFsbG9jIChzaXplKSkKLS0jZW5kaWYJLyogaGF2ZSBhbGxvY2EgKi8KLSsjIGRlZmluZSBhbGxvY2EobikgbWFsbG9jIChuKQotKyMgZGVmaW5lIGZyZWVhKHApIGZyZWUgKHApCi0rI2VuZGlmCi0rCi0rI2lmIGRlZmluZWQgX0xJQkNfUkVFTlRSQU5UIHx8IEhBVkVfREVDTF9GR0VUU19VTkxPQ0tFRAotKyMgdW5kZWYgZmdldHMKLSsjIGRlZmluZSBmZ2V0cyhidWYsIGxlbiwgcykgZmdldHNfdW5sb2NrZWQgKGJ1ZiwgbGVuLCBzKQotKyNlbmRpZgotKyNpZiBkZWZpbmVkIF9MSUJDX1JFRU5UUkFOVCB8fCBIQVZFX0RFQ0xfRkVPRl9VTkxPQ0tFRAotKyMgdW5kZWYgZmVvZgotKyMgZGVmaW5lIGZlb2YocykgZmVvZl91bmxvY2tlZCAocykKLSsjZW5kaWYKLSAKLSAKLSBzdHJ1Y3QgYWxpYXNfbWFwCi1AQCAtMTI1LDI2ICsxMjcsNDEgQEAKLSB9OwotIAotIAotLXN0YXRpYyBzdHJ1Y3QgYWxpYXNfbWFwICptYXA7Ci0tc3RhdGljIHNpemVfdCBubWFwID0gMDsKLS1zdGF0aWMgc2l6ZV90IG1heG1hcCA9IDA7Ci0rI2lmbmRlZiBfTElCQwotKyMgZGVmaW5lIGxpYmNfZnJlZXJlc19wdHIoZGVjbCkgZGVjbAotKyNlbmRpZgotKwotK2xpYmNfZnJlZXJlc19wdHIgKHN0YXRpYyBjaGFyICpzdHJpbmdfc3BhY2UpOwotK3N0YXRpYyBzaXplX3Qgc3RyaW5nX3NwYWNlX2FjdDsKLStzdGF0aWMgc2l6ZV90IHN0cmluZ19zcGFjZV9tYXg7Ci0rbGliY19mcmVlcmVzX3B0ciAoc3RhdGljIHN0cnVjdCBhbGlhc19tYXAgKm1hcCk7Ci0rc3RhdGljIHNpemVfdCBubWFwOwotK3N0YXRpYyBzaXplX3QgbWF4bWFwOwotIAotIAotIC8qIFByb3RvdHlwZXMgZm9yIGxvY2FsIGZ1bmN0aW9ucy4gICovCi0tc3RhdGljIHNpemVfdCByZWFkX2FsaWFzX2ZpbGUgUEFSQU1TICgoY29uc3QgY2hhciAqZm5hbWUsIGludCBmbmFtZV9sZW4pKTsKLS1zdGF0aWMgdm9pZCBleHRlbmRfYWxpYXNfdGFibGUgUEFSQU1TICgodm9pZCkpOwotLXN0YXRpYyBpbnQgYWxpYXNfY29tcGFyZSBQQVJBTVMgKChjb25zdCBzdHJ1Y3QgYWxpYXNfbWFwICptYXAxLAotLQkJCQkgIGNvbnN0IHN0cnVjdCBhbGlhc19tYXAgKm1hcDIpKTsKLStzdGF0aWMgc2l6ZV90IHJlYWRfYWxpYXNfZmlsZSAoY29uc3QgY2hhciAqZm5hbWUsIGludCBmbmFtZV9sZW4pCi0rICAgICBpbnRlcm5hbF9mdW5jdGlvbjsKLStzdGF0aWMgaW50IGV4dGVuZF9hbGlhc190YWJsZSAodm9pZCk7Ci0rc3RhdGljIGludCBhbGlhc19jb21wYXJlIChjb25zdCBzdHJ1Y3QgYWxpYXNfbWFwICptYXAxLAotKwkJCSAgY29uc3Qgc3RydWN0IGFsaWFzX21hcCAqbWFwMik7Ci0gCi0gCi0gY29uc3QgY2hhciAqCi0tX25sX2V4cGFuZF9hbGlhcyAobmFtZSkKLS0gICAgY29uc3QgY2hhciAqbmFtZTsKLStfbmxfZXhwYW5kX2FsaWFzIChjb25zdCBjaGFyICpuYW1lKQotIHsKLS0gIHN0YXRpYyBjb25zdCBjaGFyICpsb2NhbGVfYWxpYXNfcGF0aCA9IExPQ0FMRV9BTElBU19QQVRIOwotKyAgc3RhdGljIGNvbnN0IGNoYXIgKmxvY2FsZV9hbGlhc19wYXRoOwotICAgc3RydWN0IGFsaWFzX21hcCAqcmV0dmFsOwotKyAgY29uc3QgY2hhciAqcmVzdWx0ID0gTlVMTDsKLSAgIHNpemVfdCBhZGRlZDsKLSAKLSsjaWZkZWYgX0xJQkMKLSsgIF9fbGliY19sb2NrX2xvY2sgKGxvY2spOwotKyNlbmRpZgotKwotKyAgaWYgKGxvY2FsZV9hbGlhc19wYXRoID09IE5VTEwpCi0rICAgIGxvY2FsZV9hbGlhc19wYXRoID0gTE9DQUxFX0FMSUFTX1BBVEg7Ci0rCi0gICBkbwotICAgICB7Ci0gICAgICAgc3RydWN0IGFsaWFzX21hcCBpdGVtOwotQEAgLTE1NCwxNSArMTcxLDE4IEBACi0gICAgICAgaWYgKG5tYXAgPiAwKQotIAlyZXR2YWwgPSAoc3RydWN0IGFsaWFzX21hcCAqKSBic2VhcmNoICgmaXRlbSwgbWFwLCBubWFwLAotIAkJCQkJICAgICAgIHNpemVvZiAoc3RydWN0IGFsaWFzX21hcCksCi0tCQkJCQkgICAgICAgKGludCAoKikgUEFSQU1TICgoY29uc3Qgdm9pZCAqLAotLQkJCQkJCQkJIGNvbnN0IHZvaWQgKikpCi0rCQkJCQkgICAgICAgKGludCAoKikgKGNvbnN0IHZvaWQgKiwKLSsJCQkJCQkJIGNvbnN0IHZvaWQgKikKLSAJCQkJCQkpIGFsaWFzX2NvbXBhcmUpOwotICAgICAgIGVsc2UKLSAJcmV0dmFsID0gTlVMTDsKLSAKLSAgICAgICAvKiBXZSByZWFsbHkgZm91bmQgYW4gYWxpYXMuICBSZXR1cm4gdGhlIHZhbHVlLiAgKi8KLSAgICAgICBpZiAocmV0dmFsICE9IE5VTEwpCi0tCXJldHVybiByZXR2YWwtPnZhbHVlOwotKwl7Ci0rCSAgcmVzdWx0ID0gcmV0dmFsLT52YWx1ZTsKLSsJICBicmVhazsKLSsJfQotIAotICAgICAgIC8qIFBlcmhhcHMgd2UgY2FuIGZpbmQgYW5vdGhlciBhbGlhcyBmaWxlLiAgKi8KLSAgICAgICBhZGRlZCA9IDA7Ci1AQCAtMTcwLDExICsxOTAsMTIgQEAKLSAJewotIAkgIGNvbnN0IGNoYXIgKnN0YXJ0OwotIAotLQkgIHdoaWxlIChsb2NhbGVfYWxpYXNfcGF0aFswXSA9PSAnOicpCi0rCSAgd2hpbGUgKGxvY2FsZV9hbGlhc19wYXRoWzBdID09IFBBVEhfU0VQQVJBVE9SKQotIAkgICAgKytsb2NhbGVfYWxpYXNfcGF0aDsKLSAJICBzdGFydCA9IGxvY2FsZV9hbGlhc19wYXRoOwotIAotLQkgIHdoaWxlIChsb2NhbGVfYWxpYXNfcGF0aFswXSAhPSAnXDAnICYmIGxvY2FsZV9hbGlhc19wYXRoWzBdICE9ICc6JykKLSsJICB3aGlsZSAobG9jYWxlX2FsaWFzX3BhdGhbMF0gIT0gJ1wwJwotKwkJICYmIGxvY2FsZV9hbGlhc19wYXRoWzBdICE9IFBBVEhfU0VQQVJBVE9SKQotIAkgICAgKytsb2NhbGVfYWxpYXNfcGF0aDsKLSAKLSAJICBpZiAoc3RhcnQgPCBsb2NhbGVfYWxpYXNfcGF0aCkKLUBAIC0xODMsNzggKzIwNCw4NyBAQAotICAgICB9Ci0gICB3aGlsZSAoYWRkZWQgIT0gMCk7Ci0gCi0tICByZXR1cm4gTlVMTDsKLSsjaWZkZWYgX0xJQkMKLSsgIF9fbGliY19sb2NrX3VubG9jayAobG9jayk7Ci0rI2VuZGlmCi0rCi0rICByZXR1cm4gcmVzdWx0OwotIH0KLSAKLSAKLSBzdGF0aWMgc2l6ZV90Ci0tcmVhZF9hbGlhc19maWxlIChmbmFtZSwgZm5hbWVfbGVuKQotLSAgICAgY29uc3QgY2hhciAqZm5hbWU7Ci0tICAgICBpbnQgZm5hbWVfbGVuOwotK2ludGVybmFsX2Z1bmN0aW9uCi0rcmVhZF9hbGlhc19maWxlIChjb25zdCBjaGFyICpmbmFtZSwgaW50IGZuYW1lX2xlbikKLSB7Ci0tI2lmbmRlZiBIQVZFX0FMTE9DQQotLSAgc3RydWN0IGJsb2NrX2xpc3QgKmJsb2NrX2xpc3QgPSBOVUxMOwotLSNlbmRpZgotICAgRklMRSAqZnA7Ci0gICBjaGFyICpmdWxsX2ZuYW1lOwotICAgc2l6ZV90IGFkZGVkOwotICAgc3RhdGljIGNvbnN0IGNoYXIgYWxpYXNmaWxlW10gPSAiL2xvY2FsZS5hbGlhcyI7Ci0gCi0gICBmdWxsX2ZuYW1lID0gKGNoYXIgKikgYWxsb2NhIChmbmFtZV9sZW4gKyBzaXplb2YgYWxpYXNmaWxlKTsKLS0gIEFERF9CTE9DSyAoYmxvY2tfbGlzdCwgZnVsbF9mbmFtZSk7Ci0rI2lmZGVmIEhBVkVfTUVNUENQWQotKyAgbWVtcGNweSAobWVtcGNweSAoZnVsbF9mbmFtZSwgZm5hbWUsIGZuYW1lX2xlbiksCi0rCSAgIGFsaWFzZmlsZSwgc2l6ZW9mIGFsaWFzZmlsZSk7Ci0rI2Vsc2UKLSAgIG1lbWNweSAoZnVsbF9mbmFtZSwgZm5hbWUsIGZuYW1lX2xlbik7Ci0gICBtZW1jcHkgKCZmdWxsX2ZuYW1lW2ZuYW1lX2xlbl0sIGFsaWFzZmlsZSwgc2l6ZW9mIGFsaWFzZmlsZSk7Ci0rI2VuZGlmCi0gCi0tICBmcCA9IGZvcGVuIChmdWxsX2ZuYW1lLCAiciIpOwotKyAgZnAgPSBmb3BlbiAocmVsb2NhdGUgKGZ1bGxfZm5hbWUpLCAiciIpOwotKyAgZnJlZWEgKGZ1bGxfZm5hbWUpOwotICAgaWYgKGZwID09IE5VTEwpCi0tICAgIHsKLS0gICAgICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7Ci0tICAgICAgcmV0dXJuIDA7Ci0tICAgIH0KLSsgICAgcmV0dXJuIDA7Ci0rCi0rI2lmZGVmIEhBVkVfX19GU0VUTE9DS0lORwotKyAgLyogTm8gdGhyZWFkcyBwcmVzZW50LiAgKi8KLSsgIF9fZnNldGxvY2tpbmcgKGZwLCBGU0VUTE9DS0lOR19CWUNBTExFUik7Ci0rI2VuZGlmCi0gCi0gICBhZGRlZCA9IDA7Ci0tICB3aGlsZSAoIWZlb2YgKGZwKSkKLSsgIHdoaWxlICghRkVPRiAoZnApKQotICAgICB7Ci0gICAgICAgLyogSXQgaXMgYSByZWFzb25hYmxlIGFwcHJvYWNoIHRvIHVzZSBhIGZpeCBidWZmZXIgaGVyZSBiZWNhdXNlCi0gCSBhKSB3ZSBhcmUgb25seSBpbnRlcmVzdGVkIGluIHRoZSBmaXJzdCB0d28gZmllbGRzCi0gCSBiKSB0aGVzZSBmaWVsZHMgbXVzdCBiZSB1c2FibGUgYXMgZmlsZSBuYW1lcyBhbmQgc28gbXVzdCBub3QKLSAJICAgIGJlIHRoYXQgbG9uZwotLSAgICAgICAqLwotLSAgICAgIGNoYXIgYnVmW0JVRlNJWl07Ci0rCSBXZSBhdm9pZCBhIG11bHRpLWtpbG9ieXRlIGJ1ZmZlciBoZXJlIHNpbmNlIHRoaXMgd291bGQgdXNlIHVwCi0rCSBzdGFjayBzcGFjZSB3aGljaCB3ZSBtaWdodCBub3QgaGF2ZSBpZiB0aGUgcHJvZ3JhbSByYW4gb3V0IG9mCi0rCSBtZW1vcnkuICAqLwotKyAgICAgIGNoYXIgYnVmWzQwMF07Ci0gICAgICAgY2hhciAqYWxpYXM7Ci0gICAgICAgY2hhciAqdmFsdWU7Ci0gICAgICAgY2hhciAqY3A7Ci0gCi0tICAgICAgaWYgKGZnZXRzIChidWYsIEJVRlNJWiwgZnApID09IE5VTEwpCi0rICAgICAgaWYgKEZHRVRTIChidWYsIHNpemVvZiBidWYsIGZwKSA9PSBOVUxMKQotIAkvKiBFT0YgcmVhY2hlZC4gICovCi0gCWJyZWFrOwotIAotICAgICAgIGNwID0gYnVmOwotICAgICAgIC8qIElnbm9yZSBsZWFkaW5nIHdoaXRlIHNwYWNlLiAgKi8KLS0gICAgICB3aGlsZSAoaXNzcGFjZSAoY3BbMF0pKQotKyAgICAgIHdoaWxlIChpc3NwYWNlICgodW5zaWduZWQgY2hhcikgY3BbMF0pKQotIAkrK2NwOwotIAotICAgICAgIC8qIEEgbGVhZGluZyAnIycgc2lnbmFscyBhIGNvbW1lbnQgbGluZS4gICovCi0gICAgICAgaWYgKGNwWzBdICE9ICdcMCcgJiYgY3BbMF0gIT0gJyMnKQotIAl7Ci0gCSAgYWxpYXMgPSBjcCsrOwotLQkgIHdoaWxlIChjcFswXSAhPSAnXDAnICYmICFpc3NwYWNlIChjcFswXSkpCi0rCSAgd2hpbGUgKGNwWzBdICE9ICdcMCcgJiYgIWlzc3BhY2UgKCh1bnNpZ25lZCBjaGFyKSBjcFswXSkpCi0gCSAgICArK2NwOwotIAkgIC8qIFRlcm1pbmF0ZSBhbGlhcyBuYW1lLiAgKi8KLSAJICBpZiAoY3BbMF0gIT0gJ1wwJykKLSAJICAgICpjcCsrID0gJ1wwJzsKLSAKLSAJICAvKiBOb3cgbG9vayBmb3IgdGhlIGJlZ2lubmluZyBvZiB0aGUgdmFsdWUuICAqLwotLQkgIHdoaWxlIChpc3NwYWNlIChjcFswXSkpCi0rCSAgd2hpbGUgKGlzc3BhY2UgKCh1bnNpZ25lZCBjaGFyKSBjcFswXSkpCi0gCSAgICArK2NwOwotIAotIAkgIGlmIChjcFswXSAhPSAnXDAnKQotIAkgICAgewotLQkgICAgICBjaGFyICp0cDsKLS0JICAgICAgc2l6ZV90IGxlbjsKLSsJICAgICAgc2l6ZV90IGFsaWFzX2xlbjsKLSsJICAgICAgc2l6ZV90IHZhbHVlX2xlbjsKLSAKLSAJICAgICAgdmFsdWUgPSBjcCsrOwotLQkgICAgICB3aGlsZSAoY3BbMF0gIT0gJ1wwJyAmJiAhaXNzcGFjZSAoY3BbMF0pKQotKwkgICAgICB3aGlsZSAoY3BbMF0gIT0gJ1wwJyAmJiAhaXNzcGFjZSAoKHVuc2lnbmVkIGNoYXIpIGNwWzBdKSkKLSAJCSsrY3A7Ci0gCSAgICAgIC8qIFRlcm1pbmF0ZSB2YWx1ZS4gICovCi0gCSAgICAgIGlmIChjcFswXSA9PSAnXG4nKQotQEAgLTI2OSwyOCArMjk5LDQ0IEBACi0gCQkqY3ArKyA9ICdcMCc7Ci0gCi0gCSAgICAgIGlmIChubWFwID49IG1heG1hcCkKLS0JCWV4dGVuZF9hbGlhc190YWJsZSAoKTsKLS0KLS0JICAgICAgLyogV2UgY2Fubm90IGRlcGVuZCBvbiBzdHJkdXAgYXZhaWxhYmxlIGluIHRoZSBsaWJjLiAgU2lnaCEgICovCi0tCSAgICAgIGxlbiA9IHN0cmxlbiAoYWxpYXMpICsgMTsKLS0JICAgICAgdHAgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7Ci0tCSAgICAgIGlmICh0cCA9PSBOVUxMKQotLQkJewotLQkJICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7Ci0rCQlpZiAoX19idWlsdGluX2V4cGVjdCAoZXh0ZW5kX2FsaWFzX3RhYmxlICgpLCAwKSkKLSAJCSAgcmV0dXJuIGFkZGVkOwotLQkJfQotLQkgICAgICBtZW1jcHkgKHRwLCBhbGlhcywgbGVuKTsKLS0JICAgICAgbWFwW25tYXBdLmFsaWFzID0gdHA7Ci0gCi0tCSAgICAgIGxlbiA9IHN0cmxlbiAodmFsdWUpICsgMTsKLS0JICAgICAgdHAgPSAoY2hhciAqKSBtYWxsb2MgKGxlbik7Ci0tCSAgICAgIGlmICh0cCA9PSBOVUxMKQotKwkgICAgICBhbGlhc19sZW4gPSBzdHJsZW4gKGFsaWFzKSArIDE7Ci0rCSAgICAgIHZhbHVlX2xlbiA9IHN0cmxlbiAodmFsdWUpICsgMTsKLSsKLSsJICAgICAgaWYgKHN0cmluZ19zcGFjZV9hY3QgKyBhbGlhc19sZW4gKyB2YWx1ZV9sZW4gPiBzdHJpbmdfc3BhY2VfbWF4KQotIAkJewotLQkJICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7Ci0tCQkgIHJldHVybiBhZGRlZDsKLSsJCSAgLyogSW5jcmVhc2Ugc2l6ZSBvZiBtZW1vcnkgcG9vbC4gICovCi0rCQkgIHNpemVfdCBuZXdfc2l6ZSA9IChzdHJpbmdfc3BhY2VfbWF4Ci0rCQkJCSAgICAgKyAoYWxpYXNfbGVuICsgdmFsdWVfbGVuID4gMTAyNAotKwkJCQkJPyBhbGlhc19sZW4gKyB2YWx1ZV9sZW4gOiAxMDI0KSk7Ci0rCQkgIGNoYXIgKm5ld19wb29sID0gKGNoYXIgKikgcmVhbGxvYyAoc3RyaW5nX3NwYWNlLCBuZXdfc2l6ZSk7Ci0rCQkgIGlmIChuZXdfcG9vbCA9PSBOVUxMKQotKwkJICAgIHJldHVybiBhZGRlZDsKLSsKLSsJCSAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKHN0cmluZ19zcGFjZSAhPSBuZXdfcG9vbCwgMCkpCi0rCQkgICAgewotKwkJICAgICAgc2l6ZV90IGk7Ci0rCi0rCQkgICAgICBmb3IgKGkgPSAwOyBpIDwgbm1hcDsgaSsrKQotKwkJCXsKLSsJCQkgIG1hcFtpXS5hbGlhcyArPSBuZXdfcG9vbCAtIHN0cmluZ19zcGFjZTsKLSsJCQkgIG1hcFtpXS52YWx1ZSArPSBuZXdfcG9vbCAtIHN0cmluZ19zcGFjZTsKLSsJCQl9Ci0rCQkgICAgfQotKwotKwkJICBzdHJpbmdfc3BhY2UgPSBuZXdfcG9vbDsKLSsJCSAgc3RyaW5nX3NwYWNlX21heCA9IG5ld19zaXplOwotIAkJfQotLQkgICAgICBtZW1jcHkgKHRwLCB2YWx1ZSwgbGVuKTsKLS0JICAgICAgbWFwW25tYXBdLnZhbHVlID0gdHA7Ci0rCi0rCSAgICAgIG1hcFtubWFwXS5hbGlhcyA9IG1lbWNweSAoJnN0cmluZ19zcGFjZVtzdHJpbmdfc3BhY2VfYWN0XSwKLSsJCQkJCWFsaWFzLCBhbGlhc19sZW4pOwotKwkgICAgICBzdHJpbmdfc3BhY2VfYWN0ICs9IGFsaWFzX2xlbjsKLSsKLSsJICAgICAgbWFwW25tYXBdLnZhbHVlID0gbWVtY3B5ICgmc3RyaW5nX3NwYWNlW3N0cmluZ19zcGFjZV9hY3RdLAotKwkJCQkJdmFsdWUsIHZhbHVlX2xlbik7Ci0rCSAgICAgIHN0cmluZ19zcGFjZV9hY3QgKz0gdmFsdWVfbGVuOwotIAotIAkgICAgICArK25tYXA7Ci0gCSAgICAgICsrYWRkZWQ7Ci1AQCAtMjk5LDE0ICszNDUsMTEgQEAKLSAKLSAgICAgICAvKiBQb3NzaWJseSBub3QgdGhlIHdob2xlIGxpbmUgZml0cyBpbnRvIHRoZSBidWZmZXIuICBJZ25vcmUKLSAJIHRoZSByZXN0IG9mIHRoZSBsaW5lLiAgKi8KLS0gICAgICB3aGlsZSAoc3RyY2hyIChjcCwgJ1xuJykgPT0gTlVMTCkKLS0JewotLQkgIGNwID0gYnVmOwotLQkgIGlmIChmZ2V0cyAoYnVmLCBCVUZTSVosIGZwKSA9PSBOVUxMKQotLQkgICAgLyogTWFrZSBzdXJlIHRoZSBpbm5lciBsb29wIHdpbGwgYmUgbGVmdC4gIFRoZSBvdXRlciBsb29wCi0tCSAgICAgICB3aWxsIGV4aXQgYXQgdGhlIGBmZW9mJyB0ZXN0LiAgKi8KLS0JICAgICpjcCA9ICdcbic7Ci0tCX0KLSsgICAgICB3aGlsZSAoc3RyY2hyIChidWYsICdcbicpID09IE5VTEwpCi0rCWlmIChGR0VUUyAoYnVmLCBzaXplb2YgYnVmLCBmcCkgPT0gTlVMTCkKLSsJICAvKiBNYWtlIHN1cmUgdGhlIGlubmVyIGxvb3Agd2lsbCBiZSBsZWZ0LiAgVGhlIG91dGVyIGxvb3AKLSsJICAgICB3aWxsIGV4aXQgYXQgdGhlIGBmZW9mJyB0ZXN0LiAgKi8KLSsJICBicmVhazsKLSAgICAgfQotIAotICAgLyogU2hvdWxkIHdlIHRlc3QgZm9yIGZlcnJvcigpPyAgSSB0aGluayB3ZSBoYXZlIHRvIHNpbGVudGx5IGlnbm9yZQotQEAgLTMxNSw0MCArMzU4LDMzIEBACi0gCi0gICBpZiAoYWRkZWQgPiAwKQotICAgICBxc29ydCAobWFwLCBubWFwLCBzaXplb2YgKHN0cnVjdCBhbGlhc19tYXApLAotLQkgICAoaW50ICgqKSBQQVJBTVMgKChjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKikpKSBhbGlhc19jb21wYXJlKTsKLSsJICAgKGludCAoKikgKGNvbnN0IHZvaWQgKiwgY29uc3Qgdm9pZCAqKSkgYWxpYXNfY29tcGFyZSk7Ci0gCi0tICBGUkVFX0JMT0NLUyAoYmxvY2tfbGlzdCk7Ci0gICByZXR1cm4gYWRkZWQ7Ci0gfQotIAotIAotLXN0YXRpYyB2b2lkCi0rc3RhdGljIGludAotIGV4dGVuZF9hbGlhc190YWJsZSAoKQotIHsKLSAgIHNpemVfdCBuZXdfc2l6ZTsKLSAgIHN0cnVjdCBhbGlhc19tYXAgKm5ld19tYXA7Ci0gCi0gICBuZXdfc2l6ZSA9IG1heG1hcCA9PSAwID8gMTAwIDogMiAqIG1heG1hcDsKLS0gIG5ld19tYXAgPSAoc3RydWN0IGFsaWFzX21hcCAqKSBtYWxsb2MgKG5ld19zaXplCi0tCQkJCQkgKiBzaXplb2YgKHN0cnVjdCBhbGlhc19tYXApKTsKLSsgIG5ld19tYXAgPSAoc3RydWN0IGFsaWFzX21hcCAqKSByZWFsbG9jIChtYXAsIChuZXdfc2l6ZQotKwkJCQkJCSogc2l6ZW9mIChzdHJ1Y3QgYWxpYXNfbWFwKSkpOwotICAgaWYgKG5ld19tYXAgPT0gTlVMTCkKLSAgICAgLyogU2ltcGx5IGRvbid0IGV4dGVuZDogd2UgZG9uJ3QgaGF2ZSBhbnkgbW9yZSBjb3JlLiAgKi8KLS0gICAgcmV0dXJuOwotLQotLSAgbWVtY3B5IChuZXdfbWFwLCBtYXAsIG5tYXAgKiBzaXplb2YgKHN0cnVjdCBhbGlhc19tYXApKTsKLS0KLS0gIGlmIChtYXhtYXAgIT0gMCkKLS0gICAgZnJlZSAobWFwKTsKLSsgICAgcmV0dXJuIC0xOwotIAotICAgbWFwID0gbmV3X21hcDsKLSAgIG1heG1hcCA9IG5ld19zaXplOwotKyAgcmV0dXJuIDA7Ci0gfQotIAotIAotIHN0YXRpYyBpbnQKLS1hbGlhc19jb21wYXJlIChtYXAxLCBtYXAyKQotLSAgICAgY29uc3Qgc3RydWN0IGFsaWFzX21hcCAqbWFwMTsKLS0gICAgIGNvbnN0IHN0cnVjdCBhbGlhc19tYXAgKm1hcDI7Ci0rYWxpYXNfY29tcGFyZSAoY29uc3Qgc3RydWN0IGFsaWFzX21hcCAqbWFwMSwgY29uc3Qgc3RydWN0IGFsaWFzX21hcCAqbWFwMikKLSB7Ci0gI2lmIGRlZmluZWQgX0xJQkMgfHwgZGVmaW5lZCBIQVZFX1NUUkNBU0VDTVAKLSAgIHJldHVybiBzdHJjYXNlY21wIChtYXAxLT5hbGlhcywgbWFwMi0+YWxpYXMpOwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL2xvY2FsZW5hbWUuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9sb2NhbGVuYW1lLmMJMjAwNC0wOS0xMiAxNDo0MDozNC41MTA3MjQ1MjggLTA0MDAKLUBAIC0wLDAgKzEsMTE0MiBAQAotKy8qIERldGVybWluZSB0aGUgY3VycmVudCBzZWxlY3RlZCBsb2NhbGUuCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTksIDIwMDAtMjAwNCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rLyogV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUub3JnPiwgMTk5NS4gICovCi0rLyogV2luMzIgY29kZSB3cml0dGVuIGJ5IFRvciBMaWxscXZpc3QgPHRtbEBpa2kuZmk+LiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxsb2NhbGUuaD4KLSsKLSsjaWYgZGVmaW5lZCBfV0lOMzIgfHwgZGVmaW5lZCBfX1dJTjMyX18KLSsjIHVuZGVmIFdJTjMyICAgLyogYXZvaWQgd2FybmluZyBvbiBtaW5ndzMyICovCi0rIyBkZWZpbmUgV0lOMzIKLSsjZW5kaWYKLSsKLSsjaWZkZWYgV0lOMzIKLSsjIGRlZmluZSBXSU4zMl9MRUFOX0FORF9NRUFOCi0rIyBpbmNsdWRlIDx3aW5kb3dzLmg+Ci0rLyogTGlzdCBvZiBsYW5ndWFnZSBjb2Rlcywgc29ydGVkIGJ5IHZhbHVlOgotKyAgIDB4MDEgTEFOR19BUkFCSUMKLSsgICAweDAyIExBTkdfQlVMR0FSSUFOCi0rICAgMHgwMyBMQU5HX0NBVEFMQU4KLSsgICAweDA0IExBTkdfQ0hJTkVTRQotKyAgIDB4MDUgTEFOR19DWkVDSAotKyAgIDB4MDYgTEFOR19EQU5JU0gKLSsgICAweDA3IExBTkdfR0VSTUFOCi0rICAgMHgwOCBMQU5HX0dSRUVLCi0rICAgMHgwOSBMQU5HX0VOR0xJU0gKLSsgICAweDBhIExBTkdfU1BBTklTSAotKyAgIDB4MGIgTEFOR19GSU5OSVNICi0rICAgMHgwYyBMQU5HX0ZSRU5DSAotKyAgIDB4MGQgTEFOR19IRUJSRVcKLSsgICAweDBlIExBTkdfSFVOR0FSSUFOCi0rICAgMHgwZiBMQU5HX0lDRUxBTkRJQwotKyAgIDB4MTAgTEFOR19JVEFMSUFOCi0rICAgMHgxMSBMQU5HX0pBUEFORVNFCi0rICAgMHgxMiBMQU5HX0tPUkVBTgotKyAgIDB4MTMgTEFOR19EVVRDSAotKyAgIDB4MTQgTEFOR19OT1JXRUdJQU4KLSsgICAweDE1IExBTkdfUE9MSVNICi0rICAgMHgxNiBMQU5HX1BPUlRVR1VFU0UKLSsgICAweDE3IExBTkdfUkhBRVRPX1JPTUFOQ0UKLSsgICAweDE4IExBTkdfUk9NQU5JQU4KLSsgICAweDE5IExBTkdfUlVTU0lBTgotKyAgIDB4MWEgTEFOR19DUk9BVElBTiA9PSBMQU5HX1NFUkJJQU4KLSsgICAweDFiIExBTkdfU0xPVkFLCi0rICAgMHgxYyBMQU5HX0FMQkFOSUFOCi0rICAgMHgxZCBMQU5HX1NXRURJU0gKLSsgICAweDFlIExBTkdfVEhBSQotKyAgIDB4MWYgTEFOR19UVVJLSVNICi0rICAgMHgyMCBMQU5HX1VSRFUKLSsgICAweDIxIExBTkdfSU5ET05FU0lBTgotKyAgIDB4MjIgTEFOR19VS1JBSU5JQU4KLSsgICAweDIzIExBTkdfQkVMQVJVU0lBTgotKyAgIDB4MjQgTEFOR19TTE9WRU5JQU4KLSsgICAweDI1IExBTkdfRVNUT05JQU4KLSsgICAweDI2IExBTkdfTEFUVklBTgotKyAgIDB4MjcgTEFOR19MSVRIVUFOSUFOCi0rICAgMHgyOCBMQU5HX1RBSklLCi0rICAgMHgyOSBMQU5HX0ZBUlNJCi0rICAgMHgyYSBMQU5HX1ZJRVROQU1FU0UKLSsgICAweDJiIExBTkdfQVJNRU5JQU4KLSsgICAweDJjIExBTkdfQVpFUkkKLSsgICAweDJkIExBTkdfQkFTUVVFCi0rICAgMHgyZSBMQU5HX1NPUkJJQU4KLSsgICAweDJmIExBTkdfTUFDRURPTklBTgotKyAgIDB4MzAgTEFOR19TVVRVCi0rICAgMHgzMSBMQU5HX1RTT05HQQotKyAgIDB4MzIgTEFOR19UU1dBTkEKLSsgICAweDMzIExBTkdfVkVOREEKLSsgICAweDM0IExBTkdfWEhPU0EKLSsgICAweDM1IExBTkdfWlVMVQotKyAgIDB4MzYgTEFOR19BRlJJS0FBTlMKLSsgICAweDM3IExBTkdfR0VPUkdJQU4KLSsgICAweDM4IExBTkdfRkFFUk9FU0UKLSsgICAweDM5IExBTkdfSElOREkKLSsgICAweDNhIExBTkdfTUFMVEVTRQotKyAgIDB4M2IgTEFOR19TQUFNSQotKyAgIDB4M2MgTEFOR19HQUVMSUMKLSsgICAweDNkIExBTkdfWUlERElTSAotKyAgIDB4M2UgTEFOR19NQUxBWQotKyAgIDB4M2YgTEFOR19LQVpBSwotKyAgIDB4NDAgTEFOR19LWVJHWVoKLSsgICAweDQxIExBTkdfU1dBSElMSQotKyAgIDB4NDIgTEFOR19UVVJLTUVOCi0rICAgMHg0MyBMQU5HX1VaQkVLCi0rICAgMHg0NCBMQU5HX1RBVEFSCi0rICAgMHg0NSBMQU5HX0JFTkdBTEkKLSsgICAweDQ2IExBTkdfUFVOSkFCSQotKyAgIDB4NDcgTEFOR19HVUpBUkFUSQotKyAgIDB4NDggTEFOR19PUklZQQotKyAgIDB4NDkgTEFOR19UQU1JTAotKyAgIDB4NGEgTEFOR19URUxVR1UKLSsgICAweDRiIExBTkdfS0FOTkFEQQotKyAgIDB4NGMgTEFOR19NQUxBWUFMQU0KLSsgICAweDRkIExBTkdfQVNTQU1FU0UKLSsgICAweDRlIExBTkdfTUFSQVRISQotKyAgIDB4NGYgTEFOR19TQU5TS1JJVAotKyAgIDB4NTAgTEFOR19NT05HT0xJQU4KLSsgICAweDUxIExBTkdfVElCRVRBTgotKyAgIDB4NTIgTEFOR19XRUxTSAotKyAgIDB4NTMgTEFOR19DQU1CT0RJQU4KLSsgICAweDU0IExBTkdfTEFPCi0rICAgMHg1NSBMQU5HX0JVUk1FU0UKLSsgICAweDU2IExBTkdfR0FMSUNJQU4KLSsgICAweDU3IExBTkdfS09OS0FOSQotKyAgIDB4NTggTEFOR19NQU5JUFVSSQotKyAgIDB4NTkgTEFOR19TSU5ESEkKLSsgICAweDVhIExBTkdfU1lSSUFDCi0rICAgMHg1YiBMQU5HX1NJTkhBTEVTRQotKyAgIDB4NWMgTEFOR19DSEVST0tFRQotKyAgIDB4NWQgTEFOR19JTlVLVElUVVQKLSsgICAweDVlIExBTkdfQU1IQVJJQwotKyAgIDB4NWYgTEFOR19UQU1BWklHSFQKLSsgICAweDYwIExBTkdfS0FTSE1JUkkKLSsgICAweDYxIExBTkdfTkVQQUxJCi0rICAgMHg2MiBMQU5HX0ZSSVNJQU4KLSsgICAweDYzIExBTkdfUEFTSFRPCi0rICAgMHg2NCBMQU5HX1RBR0FMT0cKLSsgICAweDY1IExBTkdfRElWRUhJCi0rICAgMHg2NiBMQU5HX0VETwotKyAgIDB4NjcgTEFOR19GVUxGVUxERQotKyAgIDB4NjggTEFOR19IQVVTQQotKyAgIDB4NjkgTEFOR19JQklCSU8KLSsgICAweDZhIExBTkdfWU9SVUJBCi0rICAgMHg3MCBMQU5HX0lHQk8KLSsgICAweDcxIExBTkdfS0FOVVJJCi0rICAgMHg3MiBMQU5HX09ST01PCi0rICAgMHg3MyBMQU5HX1RJR1JJTllBCi0rICAgMHg3NCBMQU5HX0dVQVJBTkkKLSsgICAweDc1IExBTkdfSEFXQUlJQU4KLSsgICAweDc2IExBTkdfTEFUSU4KLSsgICAweDc3IExBTkdfU09NQUxJCi0rICAgMHg3OCBMQU5HX1lJCi0rICAgMHg3OSBMQU5HX1BBUElBTUVOVFUKLSsqLwotKy8qIE1pbmd3IGhlYWRlcnMgZG9uJ3QgaGF2ZSBsYXRlc3QgbGFuZ3VhZ2UgYW5kIHN1Ymxhbmd1YWdlIGNvZGVzLiAgKi8KLSsjIGlmbmRlZiBMQU5HX0FGUklLQUFOUwotKyMgZGVmaW5lIExBTkdfQUZSSUtBQU5TIDB4MzYKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19BTEJBTklBTgotKyMgZGVmaW5lIExBTkdfQUxCQU5JQU4gMHgxYwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0FNSEFSSUMKLSsjIGRlZmluZSBMQU5HX0FNSEFSSUMgMHg1ZQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0FSQUJJQwotKyMgZGVmaW5lIExBTkdfQVJBQklDIDB4MDEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19BUk1FTklBTgotKyMgZGVmaW5lIExBTkdfQVJNRU5JQU4gMHgyYgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0FTU0FNRVNFCi0rIyBkZWZpbmUgTEFOR19BU1NBTUVTRSAweDRkCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfQVpFUkkKLSsjIGRlZmluZSBMQU5HX0FaRVJJIDB4MmMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19CQVNRVUUKLSsjIGRlZmluZSBMQU5HX0JBU1FVRSAweDJkCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfQkVMQVJVU0lBTgotKyMgZGVmaW5lIExBTkdfQkVMQVJVU0lBTiAweDIzCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfQkVOR0FMSQotKyMgZGVmaW5lIExBTkdfQkVOR0FMSSAweDQ1Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfQlVSTUVTRQotKyMgZGVmaW5lIExBTkdfQlVSTUVTRSAweDU1Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfQ0FNQk9ESUFOCi0rIyBkZWZpbmUgTEFOR19DQU1CT0RJQU4gMHg1MwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0NBVEFMQU4KLSsjIGRlZmluZSBMQU5HX0NBVEFMQU4gMHgwMwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0NIRVJPS0VFCi0rIyBkZWZpbmUgTEFOR19DSEVST0tFRSAweDVjCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfRElWRUhJCi0rIyBkZWZpbmUgTEFOR19ESVZFSEkgMHg2NQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0VETwotKyMgZGVmaW5lIExBTkdfRURPIDB4NjYKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19FU1RPTklBTgotKyMgZGVmaW5lIExBTkdfRVNUT05JQU4gMHgyNQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0ZBRVJPRVNFCi0rIyBkZWZpbmUgTEFOR19GQUVST0VTRSAweDM4Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfRkFSU0kKLSsjIGRlZmluZSBMQU5HX0ZBUlNJIDB4MjkKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19GUklTSUFOCi0rIyBkZWZpbmUgTEFOR19GUklTSUFOIDB4NjIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19GVUxGVUxERQotKyMgZGVmaW5lIExBTkdfRlVMRlVMREUgMHg2NwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0dBRUxJQwotKyMgZGVmaW5lIExBTkdfR0FFTElDIDB4M2MKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19HQUxJQ0lBTgotKyMgZGVmaW5lIExBTkdfR0FMSUNJQU4gMHg1NgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0dFT1JHSUFOCi0rIyBkZWZpbmUgTEFOR19HRU9SR0lBTiAweDM3Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfR1VBUkFOSQotKyMgZGVmaW5lIExBTkdfR1VBUkFOSSAweDc0Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfR1VKQVJBVEkKLSsjIGRlZmluZSBMQU5HX0dVSkFSQVRJIDB4NDcKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19IQVVTQQotKyMgZGVmaW5lIExBTkdfSEFVU0EgMHg2OAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0hBV0FJSUFOCi0rIyBkZWZpbmUgTEFOR19IQVdBSUlBTiAweDc1Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfSEVCUkVXCi0rIyBkZWZpbmUgTEFOR19IRUJSRVcgMHgwZAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0hJTkRJCi0rIyBkZWZpbmUgTEFOR19ISU5ESSAweDM5Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfSUJJQklPCi0rIyBkZWZpbmUgTEFOR19JQklCSU8gMHg2OQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0lHQk8KLSsjIGRlZmluZSBMQU5HX0lHQk8gMHg3MAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0lORE9ORVNJQU4KLSsjIGRlZmluZSBMQU5HX0lORE9ORVNJQU4gMHgyMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0lOVUtUSVRVVAotKyMgZGVmaW5lIExBTkdfSU5VS1RJVFVUIDB4NWQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19LQU5OQURBCi0rIyBkZWZpbmUgTEFOR19LQU5OQURBIDB4NGIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19LQU5VUkkKLSsjIGRlZmluZSBMQU5HX0tBTlVSSSAweDcxCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfS0FTSE1JUkkKLSsjIGRlZmluZSBMQU5HX0tBU0hNSVJJIDB4NjAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19LQVpBSwotKyMgZGVmaW5lIExBTkdfS0FaQUsgMHgzZgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0tPTktBTkkKLSsjIGRlZmluZSBMQU5HX0tPTktBTkkgMHg1NwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX0tZUkdZWgotKyMgZGVmaW5lIExBTkdfS1lSR1laIDB4NDAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19MQU8KLSsjIGRlZmluZSBMQU5HX0xBTyAweDU0Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfTEFUSU4KLSsjIGRlZmluZSBMQU5HX0xBVElOIDB4NzYKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19MQVRWSUFOCi0rIyBkZWZpbmUgTEFOR19MQVRWSUFOIDB4MjYKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19MSVRIVUFOSUFOCi0rIyBkZWZpbmUgTEFOR19MSVRIVUFOSUFOIDB4MjcKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19NQUNFRE9OSUFOCi0rIyBkZWZpbmUgTEFOR19NQUNFRE9OSUFOIDB4MmYKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19NQUxBWQotKyMgZGVmaW5lIExBTkdfTUFMQVkgMHgzZQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX01BTEFZQUxBTQotKyMgZGVmaW5lIExBTkdfTUFMQVlBTEFNIDB4NGMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19NQUxURVNFCi0rIyBkZWZpbmUgTEFOR19NQUxURVNFIDB4M2EKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19NQU5JUFVSSQotKyMgZGVmaW5lIExBTkdfTUFOSVBVUkkgMHg1OAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX01BUkFUSEkKLSsjIGRlZmluZSBMQU5HX01BUkFUSEkgMHg0ZQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX01PTkdPTElBTgotKyMgZGVmaW5lIExBTkdfTU9OR09MSUFOIDB4NTAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19ORVBBTEkKLSsjIGRlZmluZSBMQU5HX05FUEFMSSAweDYxCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfT1JJWUEKLSsjIGRlZmluZSBMQU5HX09SSVlBIDB4NDgKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19PUk9NTwotKyMgZGVmaW5lIExBTkdfT1JPTU8gMHg3MgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1BBUElBTUVOVFUKLSsjIGRlZmluZSBMQU5HX1BBUElBTUVOVFUgMHg3OQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1BBU0hUTwotKyMgZGVmaW5lIExBTkdfUEFTSFRPIDB4NjMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19QVU5KQUJJCi0rIyBkZWZpbmUgTEFOR19QVU5KQUJJIDB4NDYKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19SSEFFVE9fUk9NQU5DRQotKyMgZGVmaW5lIExBTkdfUkhBRVRPX1JPTUFOQ0UgMHgxNwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1NBQU1JCi0rIyBkZWZpbmUgTEFOR19TQUFNSSAweDNiCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfU0FOU0tSSVQKLSsjIGRlZmluZSBMQU5HX1NBTlNLUklUIDB4NGYKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19TRVJCSUFOCi0rIyBkZWZpbmUgTEFOR19TRVJCSUFOIDB4MWEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19TSU5ESEkKLSsjIGRlZmluZSBMQU5HX1NJTkRISSAweDU5Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfU0lOSEFMRVNFCi0rIyBkZWZpbmUgTEFOR19TSU5IQUxFU0UgMHg1YgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1NMT1ZBSwotKyMgZGVmaW5lIExBTkdfU0xPVkFLIDB4MWIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19TT01BTEkKLSsjIGRlZmluZSBMQU5HX1NPTUFMSSAweDc3Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfU09SQklBTgotKyMgZGVmaW5lIExBTkdfU09SQklBTiAweDJlCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfU1VUVQotKyMgZGVmaW5lIExBTkdfU1VUVSAweDMwCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfU1dBSElMSQotKyMgZGVmaW5lIExBTkdfU1dBSElMSSAweDQxCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfU1lSSUFDCi0rIyBkZWZpbmUgTEFOR19TWVJJQUMgMHg1YQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1RBR0FMT0cKLSsjIGRlZmluZSBMQU5HX1RBR0FMT0cgMHg2NAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1RBSklLCi0rIyBkZWZpbmUgTEFOR19UQUpJSyAweDI4Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVEFNQVpJR0hUCi0rIyBkZWZpbmUgTEFOR19UQU1BWklHSFQgMHg1ZgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1RBTUlMCi0rIyBkZWZpbmUgTEFOR19UQU1JTCAweDQ5Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVEFUQVIKLSsjIGRlZmluZSBMQU5HX1RBVEFSIDB4NDQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19URUxVR1UKLSsjIGRlZmluZSBMQU5HX1RFTFVHVSAweDRhCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVEhBSQotKyMgZGVmaW5lIExBTkdfVEhBSSAweDFlCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVElCRVRBTgotKyMgZGVmaW5lIExBTkdfVElCRVRBTiAweDUxCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVElHUklOWUEKLSsjIGRlZmluZSBMQU5HX1RJR1JJTllBIDB4NzMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19UU09OR0EKLSsjIGRlZmluZSBMQU5HX1RTT05HQSAweDMxCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVFNXQU5BCi0rIyBkZWZpbmUgTEFOR19UU1dBTkEgMHgzMgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1RVUktNRU4KLSsjIGRlZmluZSBMQU5HX1RVUktNRU4gMHg0MgotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1VLUkFJTklBTgotKyMgZGVmaW5lIExBTkdfVUtSQUlOSUFOIDB4MjIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19VUkRVCi0rIyBkZWZpbmUgTEFOR19VUkRVIDB4MjAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19VWkJFSwotKyMgZGVmaW5lIExBTkdfVVpCRUsgMHg0MwotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1ZFTkRBCi0rIyBkZWZpbmUgTEFOR19WRU5EQSAweDMzCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfVklFVE5BTUVTRQotKyMgZGVmaW5lIExBTkdfVklFVE5BTUVTRSAweDJhCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfV0VMU0gKLSsjIGRlZmluZSBMQU5HX1dFTFNIIDB4NTIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgTEFOR19YSE9TQQotKyMgZGVmaW5lIExBTkdfWEhPU0EgMHgzNAotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1lJCi0rIyBkZWZpbmUgTEFOR19ZSSAweDc4Ci0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfWUlERElTSAotKyMgZGVmaW5lIExBTkdfWUlERElTSCAweDNkCi0rIyBlbmRpZgotKyMgaWZuZGVmIExBTkdfWU9SVUJBCi0rIyBkZWZpbmUgTEFOR19ZT1JVQkEgMHg2YQotKyMgZW5kaWYKLSsjIGlmbmRlZiBMQU5HX1pVTFUKLSsjIGRlZmluZSBMQU5HX1pVTFUgMHgzNQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19TQVVESV9BUkFCSUEKLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19TQVVESV9BUkFCSUEgMHgwMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19JUkFRCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfSVJBUSAweDAyCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX0VHWVBUCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfRUdZUFQgMHgwMwotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19MSUJZQQotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX0xJQllBIDB4MDQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfQUxHRVJJQQotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX0FMR0VSSUEgMHgwNQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19NT1JPQ0NPCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfTU9ST0NDTyAweDA2Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX1RVTklTSUEKLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19UVU5JU0lBIDB4MDcKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfT01BTgotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX09NQU4gMHgwOAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19ZRU1FTgotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX1lFTUVOIDB4MDkKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfU1lSSUEKLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19TWVJJQSAweDBhCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX0pPUkRBTgotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX0pPUkRBTiAweDBiCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQVJBQklDX0xFQkFOT04KLSsjIGRlZmluZSBTVUJMQU5HX0FSQUJJQ19MRUJBTk9OIDB4MGMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfS1VXQUlUCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfS1VXQUlUIDB4MGQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfVUFFCi0rIyBkZWZpbmUgU1VCTEFOR19BUkFCSUNfVUFFIDB4MGUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BUkFCSUNfQkFIUkFJTgotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX0JBSFJBSU4gMHgwZgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FSQUJJQ19RQVRBUgotKyMgZGVmaW5lIFNVQkxBTkdfQVJBQklDX1FBVEFSIDB4MTAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19BWkVSSV9MQVRJTgotKyMgZGVmaW5lIFNVQkxBTkdfQVpFUklfTEFUSU4gMHgwMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0FaRVJJX0NZUklMTElDCi0rIyBkZWZpbmUgU1VCTEFOR19BWkVSSV9DWVJJTExJQyAweDAyCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQkVOR0FMSV9JTkRJQQotKyMgZGVmaW5lIFNVQkxBTkdfQkVOR0FMSV9JTkRJQSAweDAwCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfQkVOR0FMSV9CQU5HTEFERVNICi0rIyBkZWZpbmUgU1VCTEFOR19CRU5HQUxJX0JBTkdMQURFU0ggMHgwMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0NISU5FU0VfTUFDQVUKLSsjIGRlZmluZSBTVUJMQU5HX0NISU5FU0VfTUFDQVUgMHgwNQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfU09VVEhfQUZSSUNBCi0rIyBkZWZpbmUgU1VCTEFOR19FTkdMSVNIX1NPVVRIX0FGUklDQSAweDA3Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9KQU1BSUNBCi0rIyBkZWZpbmUgU1VCTEFOR19FTkdMSVNIX0pBTUFJQ0EgMHgwOAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfQ0FSSUJCRUFOCi0rIyBkZWZpbmUgU1VCTEFOR19FTkdMSVNIX0NBUklCQkVBTiAweDA5Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRU5HTElTSF9CRUxJWkUKLSsjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfQkVMSVpFIDB4MGEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19FTkdMSVNIX1RSSU5JREFECi0rIyBkZWZpbmUgU1VCTEFOR19FTkdMSVNIX1RSSU5JREFEIDB4MGIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19FTkdMSVNIX1pJTUJBQldFCi0rIyBkZWZpbmUgU1VCTEFOR19FTkdMSVNIX1pJTUJBQldFIDB4MGMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19FTkdMSVNIX1BISUxJUFBJTkVTCi0rIyBkZWZpbmUgU1VCTEFOR19FTkdMSVNIX1BISUxJUFBJTkVTIDB4MGQKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19FTkdMSVNIX0lORE9ORVNJQQotKyMgZGVmaW5lIFNVQkxBTkdfRU5HTElTSF9JTkRPTkVTSUEgMHgwZQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfSE9OR0tPTkcKLSsjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfSE9OR0tPTkcgMHgwZgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfSU5ESUEKLSsjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfSU5ESUEgMHgxMAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfTUFMQVlTSUEKLSsjIGRlZmluZSBTVUJMQU5HX0VOR0xJU0hfTUFMQVlTSUEgMHgxMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0VOR0xJU0hfU0lOR0FQT1JFCi0rIyBkZWZpbmUgU1VCTEFOR19FTkdMSVNIX1NJTkdBUE9SRSAweDEyCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRlJFTkNIX0xVWEVNQk9VUkcKLSsjIGRlZmluZSBTVUJMQU5HX0ZSRU5DSF9MVVhFTUJPVVJHIDB4MDUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19GUkVOQ0hfTU9OQUNPCi0rIyBkZWZpbmUgU1VCTEFOR19GUkVOQ0hfTU9OQUNPIDB4MDYKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19GUkVOQ0hfV0VTVElORElFUwotKyMgZGVmaW5lIFNVQkxBTkdfRlJFTkNIX1dFU1RJTkRJRVMgMHgwNwotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0ZSRU5DSF9SRVVOSU9OCi0rIyBkZWZpbmUgU1VCTEFOR19GUkVOQ0hfUkVVTklPTiAweDA4Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRlJFTkNIX0NPTkdPCi0rIyBkZWZpbmUgU1VCTEFOR19GUkVOQ0hfQ09OR08gMHgwOQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0ZSRU5DSF9TRU5FR0FMCi0rIyBkZWZpbmUgU1VCTEFOR19GUkVOQ0hfU0VORUdBTCAweDBhCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRlJFTkNIX0NBTUVST09OCi0rIyBkZWZpbmUgU1VCTEFOR19GUkVOQ0hfQ0FNRVJPT04gMHgwYgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0ZSRU5DSF9DT1RFRElWT0lSRQotKyMgZGVmaW5lIFNVQkxBTkdfRlJFTkNIX0NPVEVESVZPSVJFIDB4MGMKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19GUkVOQ0hfTUFMSQotKyMgZGVmaW5lIFNVQkxBTkdfRlJFTkNIX01BTEkgMHgwZAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0ZSRU5DSF9NT1JPQ0NPCi0rIyBkZWZpbmUgU1VCTEFOR19GUkVOQ0hfTU9ST0NDTyAweDBlCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfRlJFTkNIX0hBSVRJCi0rIyBkZWZpbmUgU1VCTEFOR19GUkVOQ0hfSEFJVEkgMHgwZgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX0dFUk1BTl9MVVhFTUJPVVJHCi0rIyBkZWZpbmUgU1VCTEFOR19HRVJNQU5fTFVYRU1CT1VSRyAweDA0Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfR0VSTUFOX0xJRUNIVEVOU1RFSU4KLSsjIGRlZmluZSBTVUJMQU5HX0dFUk1BTl9MSUVDSFRFTlNURUlOIDB4MDUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19LQVNITUlSSV9JTkRJQQotKyMgZGVmaW5lIFNVQkxBTkdfS0FTSE1JUklfSU5ESUEgMHgwMgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX01BTEFZX01BTEFZU0lBCi0rIyBkZWZpbmUgU1VCTEFOR19NQUxBWV9NQUxBWVNJQSAweDAxCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfTUFMQVlfQlJVTkVJX0RBUlVTU0FMQU0KLSsjIGRlZmluZSBTVUJMQU5HX01BTEFZX0JSVU5FSV9EQVJVU1NBTEFNIDB4MDIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19ORVBBTElfSU5ESUEKLSsjIGRlZmluZSBTVUJMQU5HX05FUEFMSV9JTkRJQSAweDAyCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfUFVOSkFCSV9JTkRJQQotKyMgZGVmaW5lIFNVQkxBTkdfUFVOSkFCSV9JTkRJQSAweDAwCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfUFVOSkFCSV9QQUtJU1RBTgotKyMgZGVmaW5lIFNVQkxBTkdfUFVOSkFCSV9QQUtJU1RBTiAweDAxCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfUk9NQU5JQU5fUk9NQU5JQQotKyMgZGVmaW5lIFNVQkxBTkdfUk9NQU5JQU5fUk9NQU5JQSAweDAwCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfUk9NQU5JQU5fTU9MRE9WQQotKyMgZGVmaW5lIFNVQkxBTkdfUk9NQU5JQU5fTU9MRE9WQSAweDAxCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU0VSQklBTl9MQVRJTgotKyMgZGVmaW5lIFNVQkxBTkdfU0VSQklBTl9MQVRJTiAweDAyCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU0VSQklBTl9DWVJJTExJQwotKyMgZGVmaW5lIFNVQkxBTkdfU0VSQklBTl9DWVJJTExJQyAweDAzCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU0lOREhJX0lORElBCi0rIyBkZWZpbmUgU1VCTEFOR19TSU5ESElfSU5ESUEgMHgwMAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NJTkRISV9QQUtJU1RBTgotKyMgZGVmaW5lIFNVQkxBTkdfU0lOREhJX1BBS0lTVEFOIDB4MDEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX0dVQVRFTUFMQQotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9HVUFURU1BTEEgMHgwNAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfQ09TVEFfUklDQQotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9DT1NUQV9SSUNBIDB4MDUKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX1BBTkFNQQotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9QQU5BTUEgMHgwNgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfRE9NSU5JQ0FOX1JFUFVCTElDCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX0RPTUlOSUNBTl9SRVBVQkxJQyAweDA3Ci0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9WRU5FWlVFTEEKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfVkVORVpVRUxBIDB4MDgKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX0NPTE9NQklBCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX0NPTE9NQklBIDB4MDkKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX1BFUlUKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfUEVSVSAweDBhCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9BUkdFTlRJTkEKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfQVJHRU5USU5BIDB4MGIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX0VDVUFET1IKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfRUNVQURPUiAweDBjCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9DSElMRQotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9DSElMRSAweDBkCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfU1BBTklTSF9VUlVHVUFZCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX1VSVUdVQVkgMHgwZQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfUEFSQUdVQVkKLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfUEFSQUdVQVkgMHgwZgotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfQk9MSVZJQQotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9CT0xJVklBIDB4MTAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX0VMX1NBTFZBRE9SCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX0VMX1NBTFZBRE9SIDB4MTEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX0hPTkRVUkFTCi0rIyBkZWZpbmUgU1VCTEFOR19TUEFOSVNIX0hPTkRVUkFTIDB4MTIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19TUEFOSVNIX05JQ0FSQUdVQQotKyMgZGVmaW5lIFNVQkxBTkdfU1BBTklTSF9OSUNBUkFHVUEgMHgxMwotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NQQU5JU0hfUFVFUlRPX1JJQ08KLSsjIGRlZmluZSBTVUJMQU5HX1NQQU5JU0hfUFVFUlRPX1JJQ08gMHgxNAotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1NXRURJU0hfRklOTEFORAotKyMgZGVmaW5lIFNVQkxBTkdfU1dFRElTSF9GSU5MQU5EIDB4MDIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19UQU1BWklHSFRfQVJBQklDCi0rIyBkZWZpbmUgU1VCTEFOR19UQU1BWklHSFRfQVJBQklDIDB4MDEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19UQU1BWklHSFRfTEFUSU4KLSsjIGRlZmluZSBTVUJMQU5HX1RBTUFaSUdIVF9MQVRJTiAweDAyCi0rIyBlbmRpZgotKyMgaWZuZGVmIFNVQkxBTkdfVElHUklOWUFfRVRISU9QSUEKLSsjIGRlZmluZSBTVUJMQU5HX1RJR1JJTllBX0VUSElPUElBIDB4MDAKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19USUdSSU5ZQV9FUklUUkVBCi0rIyBkZWZpbmUgU1VCTEFOR19USUdSSU5ZQV9FUklUUkVBIDB4MDEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19VUkRVX1BBS0lTVEFOCi0rIyBkZWZpbmUgU1VCTEFOR19VUkRVX1BBS0lTVEFOIDB4MDEKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19VUkRVX0lORElBCi0rIyBkZWZpbmUgU1VCTEFOR19VUkRVX0lORElBIDB4MDIKLSsjIGVuZGlmCi0rIyBpZm5kZWYgU1VCTEFOR19VWkJFS19MQVRJTgotKyMgZGVmaW5lIFNVQkxBTkdfVVpCRUtfTEFUSU4gMHgwMQotKyMgZW5kaWYKLSsjIGlmbmRlZiBTVUJMQU5HX1VaQkVLX0NZUklMTElDCi0rIyBkZWZpbmUgU1VCTEFOR19VWkJFS19DWVJJTExJQyAweDAyCi0rIyBlbmRpZgotKyNlbmRpZgotKwotKy8qIFhQRzMgZGVmaW5lcyB0aGUgcmVzdWx0IG9mICdzZXRsb2NhbGUgKGNhdGVnb3J5LCBOVUxMKScgYXM6Ci0rICAgIkRpcmVjdHMgJ3NldGxvY2FsZSgpJyB0byBxdWVyeSAnY2F0ZWdvcnknIGFuZCByZXR1cm4gdGhlIGN1cnJlbnQKLSsgICAgc2V0dGluZyBvZiAnbG9jYWwnLiIKLSsgICBIb3dldmVyIGl0IGRvZXMgbm90IHNwZWNpZnkgdGhlIGV4YWN0IGZvcm1hdC4gIE5laXRoZXIgZG8gU1VTVjIgYW5kCi0rICAgSVNPIEMgOTkuICBTbyB3ZSBjYW4gdXNlIHRoaXMgZmVhdHVyZSBvbmx5IG9uIHNlbGVjdGVkIHN5c3RlbXMgKGUuZy4KLSsgICB0aG9zZSB1c2luZyBHTlUgQyBMaWJyYXJ5KS4gICovCi0rI2lmIGRlZmluZWQgX0xJQkMgfHwgKGRlZmluZWQgX19HTlVfTElCUkFSWV9fICYmIF9fR05VX0xJQlJBUllfXyA+PSAyKQotKyMgZGVmaW5lIEhBVkVfTE9DQUxFX05VTEwKLSsjZW5kaWYKLSsKLSsvKiBEZXRlcm1pbmUgdGhlIGN1cnJlbnQgbG9jYWxlJ3MgbmFtZSwgYW5kIGNhbm9uaWNhbGl6ZSBpdCBpbnRvIFhQRyBzeW50YXgKLSsgICAgIGxhbmd1YWdlW190ZXJyaXRvcnlbLmNvZGVzZXRdXVtAbW9kaWZpZXJdCi0rICAgVGhlIGNvZGVzZXQgcGFydCBpbiB0aGUgcmVzdWx0IGlzIG5vdCByZWxpYWJsZTsgdGhlIGxvY2FsZV9jaGFyc2V0KCkKLSsgICBzaG91bGQgYmUgdXNlZCBmb3IgY29kZXNldCBpbmZvcm1hdGlvbiBpbnN0ZWFkLgotKyAgIFRoZSByZXN1bHQgbXVzdCBub3QgYmUgZnJlZWQ7IGl0IGlzIHN0YXRpY2FsbHkgYWxsb2NhdGVkLiAgKi8KLSsKLStjb25zdCBjaGFyICoKLStfbmxfbG9jYWxlX25hbWUgKGludCBjYXRlZ29yeSwgY29uc3QgY2hhciAqY2F0ZWdvcnluYW1lKQotK3sKLSsgIGNvbnN0IGNoYXIgKnJldHZhbDsKLSsKLSsjaWZuZGVmIFdJTjMyCi0rCi0rICAvKiBVc2UgdGhlIFBPU0lYIG1ldGhvZHMgb2YgbG9va2luZyB0byAnTENfQUxMJywgJ0xDX3h4eCcsIGFuZCAnTEFORycuCi0rICAgICBPbiBzb21lIHN5c3RlbXMgdGhpcyBjYW4gYmUgZG9uZSBieSB0aGUgJ3NldGxvY2FsZScgZnVuY3Rpb24gaXRzZWxmLiAgKi8KLSsjIGlmIGRlZmluZWQgSEFWRV9TRVRMT0NBTEUgJiYgZGVmaW5lZCBIQVZFX0xDX01FU1NBR0VTICYmIGRlZmluZWQgSEFWRV9MT0NBTEVfTlVMTAotKyAgcmV0dmFsID0gc2V0bG9jYWxlIChjYXRlZ29yeSwgTlVMTCk7Ci0rIyBlbHNlCi0rICAvKiBTZXR0aW5nIG9mIExDX0FMTCBvdmVyd3JpdGVzIGFsbCBvdGhlci4gICovCi0rICByZXR2YWwgPSBnZXRlbnYgKCJMQ19BTEwiKTsKLSsgIGlmIChyZXR2YWwgPT0gTlVMTCB8fCByZXR2YWxbMF0gPT0gJ1wwJykKLSsgICAgewotKyAgICAgIC8qIE5leHQgY29tZXMgdGhlIG5hbWUgb2YgdGhlIGRlc2lyZWQgY2F0ZWdvcnkuICAqLwotKyAgICAgIHJldHZhbCA9IGdldGVudiAoY2F0ZWdvcnluYW1lKTsKLSsgICAgICBpZiAocmV0dmFsID09IE5VTEwgfHwgcmV0dmFsWzBdID09ICdcMCcpCi0rCXsKLSsJICAvKiBMYXN0IHBvc3NpYmlsaXR5IGlzIHRoZSBMQU5HIGVudmlyb25tZW50IHZhcmlhYmxlLiAgKi8KLSsJICByZXR2YWwgPSBnZXRlbnYgKCJMQU5HIik7Ci0rCSAgaWYgKHJldHZhbCA9PSBOVUxMIHx8IHJldHZhbFswXSA9PSAnXDAnKQotKwkgICAgLyogV2UgdXNlIEMgYXMgdGhlIGRlZmF1bHQgZG9tYWluLiAgUE9TSVggc2F5cyB0aGlzIGlzCi0rCSAgICAgICBpbXBsZW1lbnRhdGlvbiBkZWZpbmVkLiAgKi8KLSsJICAgIHJldHZhbCA9ICJDIjsKLSsJfQotKyAgICB9Ci0rIyBlbmRpZgotKwotKyAgcmV0dXJuIHJldHZhbDsKLSsKLSsjZWxzZSAvKiBXSU4zMiAqLwotKwotKyAgLyogUmV0dXJuIGFuIFhQRyBzdHlsZSBsb2NhbGUgbmFtZSBsYW5ndWFnZVtfdGVycml0b3J5XVtAbW9kaWZpZXJdLgotKyAgICAgRG9uJ3QgZXZlbiBib3RoZXIgZGV0ZXJtaW5pbmcgdGhlIGNvZGVzZXQ7IGl0J3Mgbm90IHVzZWZ1bCBpbiB0aGlzCi0rICAgICBjb250ZXh0LCBiZWNhdXNlIG1lc3NhZ2UgY2F0YWxvZ3MgYXJlIG5vdCBzcGVjaWZpYyB0byBhIHNpbmdsZQotKyAgICAgY29kZXNldC4gICovCi0rCi0rICBMQ0lEIGxjaWQ7Ci0rICBMQU5HSUQgbGFuZ2lkOwotKyAgaW50IHByaW1hcnksIHN1YjsKLSsKLSsgIC8qIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgc3lzdGVtIHNldHRpbmdzIHRocm91Z2ggZW52aXJvbm1lbnQKLSsgICAgIHZhcmlhYmxlcywgYXMgb24gUE9TSVggc3lzdGVtcy4gICovCi0rICByZXR2YWwgPSBnZXRlbnYgKCJMQ19BTEwiKTsKLSsgIGlmIChyZXR2YWwgIT0gTlVMTCAmJiByZXR2YWxbMF0gIT0gJ1wwJykKLSsgICAgcmV0dXJuIHJldHZhbDsKLSsgIHJldHZhbCA9IGdldGVudiAoY2F0ZWdvcnluYW1lKTsKLSsgIGlmIChyZXR2YWwgIT0gTlVMTCAmJiByZXR2YWxbMF0gIT0gJ1wwJykKLSsgICAgcmV0dXJuIHJldHZhbDsKLSsgIHJldHZhbCA9IGdldGVudiAoIkxBTkciKTsKLSsgIGlmIChyZXR2YWwgIT0gTlVMTCAmJiByZXR2YWxbMF0gIT0gJ1wwJykKLSsgICAgcmV0dXJuIHJldHZhbDsKLSsKLSsgIC8qIFVzZSBuYXRpdmUgV2luMzIgQVBJIGxvY2FsZSBJRC4gICovCi0rICBsY2lkID0gR2V0VGhyZWFkTG9jYWxlICgpOwotKwotKyAgLyogU3RyaXAgb2ZmIHRoZSBzb3J0aW5nIHJ1bGVzLCBrZWVwIG9ubHkgdGhlIGxhbmd1YWdlIHBhcnQuICAqLwotKyAgbGFuZ2lkID0gTEFOR0lERlJPTUxDSUQgKGxjaWQpOwotKwotKyAgLyogU3BsaXQgaW50byBsYW5ndWFnZSBhbmQgdGVycml0b3J5IHBhcnQuICAqLwotKyAgcHJpbWFyeSA9IFBSSU1BUllMQU5HSUQgKGxhbmdpZCk7Ci0rICBzdWIgPSBTVUJMQU5HSUQgKGxhbmdpZCk7Ci0rCi0rICAvKiBEaXNwYXRjaCBvbiBsYW5ndWFnZS4KLSsgICAgIFNlZSBhbHNvIGh0dHA6Ly93d3cudW5pY29kZS5vcmcvdW5pY29kZS9vbmxpbmVkYXQvbGFuZ3VhZ2VzLmh0bWwgLgotKyAgICAgRm9yIGRldGFpbHMgYWJvdXQgbGFuZ3VhZ2VzLCBzZWUgaHR0cDovL3d3dy5ldGhub2xvZ3VlLmNvbS8gLiAgKi8KLSsgIHN3aXRjaCAocHJpbWFyeSkKLSsgICAgewotKyAgICBjYXNlIExBTkdfQUZSSUtBQU5TOiByZXR1cm4gImFmX1pBIjsKLSsgICAgY2FzZSBMQU5HX0FMQkFOSUFOOiByZXR1cm4gInNxX0FMIjsKLSsgICAgY2FzZSBMQU5HX0FNSEFSSUM6IHJldHVybiAiYW1fRVQiOwotKyAgICBjYXNlIExBTkdfQVJBQklDOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfU0FVRElfQVJBQklBOiByZXR1cm4gImFyX1NBIjsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19JUkFROiByZXR1cm4gImFyX0lRIjsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19FR1lQVDogcmV0dXJuICJhcl9FRyI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfTElCWUE6IHJldHVybiAiYXJfTFkiOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX0FMR0VSSUE6IHJldHVybiAiYXJfRFoiOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX01PUk9DQ086IHJldHVybiAiYXJfTUEiOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX1RVTklTSUE6IHJldHVybiAiYXJfVE4iOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX09NQU46IHJldHVybiAiYXJfT00iOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX1lFTUVOOiByZXR1cm4gImFyX1lFIjsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19TWVJJQTogcmV0dXJuICJhcl9TWSI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfSk9SREFOOiByZXR1cm4gImFyX0pPIjsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19MRUJBTk9OOiByZXR1cm4gImFyX0xCIjsKLSsJY2FzZSBTVUJMQU5HX0FSQUJJQ19LVVdBSVQ6IHJldHVybiAiYXJfS1ciOwotKwljYXNlIFNVQkxBTkdfQVJBQklDX1VBRTogcmV0dXJuICJhcl9BRSI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfQkFIUkFJTjogcmV0dXJuICJhcl9CSCI7Ci0rCWNhc2UgU1VCTEFOR19BUkFCSUNfUUFUQVI6IHJldHVybiAiYXJfUUEiOwotKwl9Ci0rICAgICAgcmV0dXJuICJhciI7Ci0rICAgIGNhc2UgTEFOR19BUk1FTklBTjogcmV0dXJuICJoeV9BTSI7Ci0rICAgIGNhc2UgTEFOR19BU1NBTUVTRTogcmV0dXJuICJhc19JTiI7Ci0rICAgIGNhc2UgTEFOR19BWkVSSToKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwkvKiBGSVhNRTogQWRqdXN0IHRoaXMgd2hlbiBBemVyYmFpamFuaSBsb2NhbGVzIGFwcGVhciBvbiBVbml4LiAgKi8KLSsJY2FzZSBTVUJMQU5HX0FaRVJJX0xBVElOOiByZXR1cm4gImF6X0FaQGxhdGluIjsKLSsJY2FzZSBTVUJMQU5HX0FaRVJJX0NZUklMTElDOiByZXR1cm4gImF6X0FaQGN5cmlsbGljIjsKLSsJfQotKyAgICAgIHJldHVybiAiYXoiOwotKyAgICBjYXNlIExBTkdfQkFTUVVFOgotKyAgICAgIHJldHVybiAiZXUiOyAvKiBBbWJpZ3VvdXM6IGNvdWxkIGJlICJldV9FUyIgb3IgImV1X0ZSIi4gICovCi0rICAgIGNhc2UgTEFOR19CRUxBUlVTSUFOOiByZXR1cm4gImJlX0JZIjsKLSsgICAgY2FzZSBMQU5HX0JFTkdBTEk6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX0JFTkdBTElfSU5ESUE6IHJldHVybiAiYm5fSU4iOwotKwljYXNlIFNVQkxBTkdfQkVOR0FMSV9CQU5HTEFERVNIOiByZXR1cm4gImJuX0JEIjsKLSsJfQotKyAgICAgIHJldHVybiAiYm4iOwotKyAgICBjYXNlIExBTkdfQlVMR0FSSUFOOiByZXR1cm4gImJnX0JHIjsKLSsgICAgY2FzZSBMQU5HX0JVUk1FU0U6IHJldHVybiAibXlfTU0iOwotKyAgICBjYXNlIExBTkdfQ0FNQk9ESUFOOiByZXR1cm4gImttX0tIIjsKLSsgICAgY2FzZSBMQU5HX0NBVEFMQU46IHJldHVybiAiY2FfRVMiOwotKyAgICBjYXNlIExBTkdfQ0hFUk9LRUU6IHJldHVybiAiY2hyX1VTIjsKLSsgICAgY2FzZSBMQU5HX0NISU5FU0U6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX0NISU5FU0VfVFJBRElUSU9OQUw6IHJldHVybiAiemhfVFciOwotKwljYXNlIFNVQkxBTkdfQ0hJTkVTRV9TSU1QTElGSUVEOiByZXR1cm4gInpoX0NOIjsKLSsJY2FzZSBTVUJMQU5HX0NISU5FU0VfSE9OR0tPTkc6IHJldHVybiAiemhfSEsiOwotKwljYXNlIFNVQkxBTkdfQ0hJTkVTRV9TSU5HQVBPUkU6IHJldHVybiAiemhfU0ciOwotKwljYXNlIFNVQkxBTkdfQ0hJTkVTRV9NQUNBVTogcmV0dXJuICJ6aF9NTyI7Ci0rCX0KLSsgICAgICByZXR1cm4gInpoIjsKLSsgICAgY2FzZSBMQU5HX0NST0FUSUFOOgkJLyogTEFOR19DUk9BVElBTiA9PSBMQU5HX1NFUkJJQU4KLSsJCQkJICogV2hhdCB1c2VkIHRvIGJlIGNhbGxlZCBTZXJiby1Dcm9hdGlhbgotKwkJCQkgKiBzaG91bGQgcmVhbGx5IG5vdyBiZSB0d28gc2VwYXJhdGUKLSsJCQkJICogbGFuZ3VhZ2VzIGJlY2F1c2Ugb2YgcG9saXRpY2FsIHJlYXNvbnMuCi0rCQkJCSAqIChTYXlzIHRtbCwgd2hvIGtub3dzIG5vdGhpbmcgYWJvdXQgU2VyYmlhbgotKwkJCQkgKiBvciBDcm9hdGlhbi4pCi0rCQkJCSAqIChJIGNhbiBmZWVsIHRob3NlIGZsYW1lcyBjb21pbmcgYWxyZWFkeS4pCi0rCQkJCSAqLwotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19ERUZBVUxUOiByZXR1cm4gImhyX0hSIjsKLSsJY2FzZSBTVUJMQU5HX1NFUkJJQU5fTEFUSU46IHJldHVybiAic3JfQ1MiOwotKwljYXNlIFNVQkxBTkdfU0VSQklBTl9DWVJJTExJQzogcmV0dXJuICJzcl9DU0BjeXJpbGxpYyI7Ci0rCX0KLSsgICAgICByZXR1cm4gImhyIjsKLSsgICAgY2FzZSBMQU5HX0NaRUNIOiByZXR1cm4gImNzX0NaIjsKLSsgICAgY2FzZSBMQU5HX0RBTklTSDogcmV0dXJuICJkYV9ESyI7Ci0rICAgIGNhc2UgTEFOR19ESVZFSEk6IHJldHVybiAiZHZfTVYiOwotKyAgICBjYXNlIExBTkdfRFVUQ0g6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX0RVVENIOiByZXR1cm4gIm5sX05MIjsKLSsJY2FzZSBTVUJMQU5HX0RVVENIX0JFTEdJQU46IC8qIEZMRU1JU0gsIFZMQUFNUyAqLyByZXR1cm4gIm5sX0JFIjsKLSsJfQotKyAgICAgIHJldHVybiAibmwiOwotKyAgICBjYXNlIExBTkdfRURPOiByZXR1cm4gImJpbl9ORyI7Ci0rICAgIGNhc2UgTEFOR19FTkdMSVNIOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCS8qIFNVQkxBTkdfRU5HTElTSF9VUyA9PSBTVUJMQU5HX0RFRkFVTFQuIEhlaC4gSSB0aG91Z2h0Ci0rCSAqIEVuZ2xpc2ggd2FzIHRoZSBsYW5ndWFnZSBzcG9rZW4gaW4gRW5nbGFuZC4KLSsJICogT2ggd2VsbC4KLSsJICovCi0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX1VTOiByZXR1cm4gImVuX1VTIjsKLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfVUs6IHJldHVybiAiZW5fR0IiOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9BVVM6IHJldHVybiAiZW5fQVUiOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9DQU46IHJldHVybiAiZW5fQ0EiOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9OWjogcmV0dXJuICJlbl9OWiI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX0VJUkU6IHJldHVybiAiZW5fSUUiOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9TT1VUSF9BRlJJQ0E6IHJldHVybiAiZW5fWkEiOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9KQU1BSUNBOiByZXR1cm4gImVuX0pNIjsKLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfQ0FSSUJCRUFOOiByZXR1cm4gImVuX0dEIjsgLyogR3JlbmFkYT8gKi8KLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfQkVMSVpFOiByZXR1cm4gImVuX0JaIjsKLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfVFJJTklEQUQ6IHJldHVybiAiZW5fVFQiOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9aSU1CQUJXRTogcmV0dXJuICJlbl9aVyI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX1BISUxJUFBJTkVTOiByZXR1cm4gImVuX1BIIjsKLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfSU5ET05FU0lBOiByZXR1cm4gImVuX0lEIjsKLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfSE9OR0tPTkc6IHJldHVybiAiZW5fSEsiOwotKwljYXNlIFNVQkxBTkdfRU5HTElTSF9JTkRJQTogcmV0dXJuICJlbl9JTiI7Ci0rCWNhc2UgU1VCTEFOR19FTkdMSVNIX01BTEFZU0lBOiByZXR1cm4gImVuX01ZIjsKLSsJY2FzZSBTVUJMQU5HX0VOR0xJU0hfU0lOR0FQT1JFOiByZXR1cm4gImVuX1NHIjsKLSsJfQotKyAgICAgIHJldHVybiAiZW4iOwotKyAgICBjYXNlIExBTkdfRVNUT05JQU46IHJldHVybiAiZXRfRUUiOwotKyAgICBjYXNlIExBTkdfRkFFUk9FU0U6IHJldHVybiAiZm9fRk8iOwotKyAgICBjYXNlIExBTkdfRkFSU0k6IHJldHVybiAiZmFfSVIiOwotKyAgICBjYXNlIExBTkdfRklOTklTSDogcmV0dXJuICJmaV9GSSI7Ci0rICAgIGNhc2UgTEFOR19GUkVOQ0g6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSDogcmV0dXJuICJmcl9GUiI7Ci0rCWNhc2UgU1VCTEFOR19GUkVOQ0hfQkVMR0lBTjogLyogV0FMTE9PTiAqLyByZXR1cm4gImZyX0JFIjsKLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSF9DQU5BRElBTjogcmV0dXJuICJmcl9DQSI7Ci0rCWNhc2UgU1VCTEFOR19GUkVOQ0hfU1dJU1M6IHJldHVybiAiZnJfQ0giOwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX0xVWEVNQk9VUkc6IHJldHVybiAiZnJfTFUiOwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX01PTkFDTzogcmV0dXJuICJmcl9NQyI7Ci0rCWNhc2UgU1VCTEFOR19GUkVOQ0hfV0VTVElORElFUzogcmV0dXJuICJmciI7IC8qIENhcmliYmVhbj8gKi8KLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSF9SRVVOSU9OOiByZXR1cm4gImZyX1JFIjsKLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSF9DT05HTzogcmV0dXJuICJmcl9DRyI7Ci0rCWNhc2UgU1VCTEFOR19GUkVOQ0hfU0VORUdBTDogcmV0dXJuICJmcl9TTiI7Ci0rCWNhc2UgU1VCTEFOR19GUkVOQ0hfQ0FNRVJPT046IHJldHVybiAiZnJfQ00iOwotKwljYXNlIFNVQkxBTkdfRlJFTkNIX0NPVEVESVZPSVJFOiByZXR1cm4gImZyX0NJIjsKLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSF9NQUxJOiByZXR1cm4gImZyX01MIjsKLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSF9NT1JPQ0NPOiByZXR1cm4gImZyX01BIjsKLSsJY2FzZSBTVUJMQU5HX0ZSRU5DSF9IQUlUSTogcmV0dXJuICJmcl9IVCI7Ci0rCX0KLSsgICAgICByZXR1cm4gImZyIjsKLSsgICAgY2FzZSBMQU5HX0ZSSVNJQU46IHJldHVybiAiZnlfTkwiOwotKyAgICBjYXNlIExBTkdfRlVMRlVMREU6Ci0rICAgICAgLyogU3Bva2VuIGluIE5pZ2VyaWEsIEd1aW5lYSwgU2VuZWdhbCwgTWFsaSwgTmlnZXIsIENhbWVyb29uLCBCZW5pbi4gKi8KLSsgICAgICByZXR1cm4gImZmX05HIjsKLSsgICAgY2FzZSBMQU5HX0dBRUxJQzoKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIDB4MDE6IC8qIFNDT1RUSVNIICovIHJldHVybiAiZ2RfR0IiOwotKwljYXNlIDB4MDI6IC8qIElSSVNIICovIHJldHVybiAiZ2FfSUUiOwotKwl9Ci0rICAgICAgcmV0dXJuICJDIjsKLSsgICAgY2FzZSBMQU5HX0dBTElDSUFOOiByZXR1cm4gImdsX0VTIjsKLSsgICAgY2FzZSBMQU5HX0dFT1JHSUFOOiByZXR1cm4gImthX0dFIjsKLSsgICAgY2FzZSBMQU5HX0dFUk1BTjoKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfR0VSTUFOOiByZXR1cm4gImRlX0RFIjsKLSsJY2FzZSBTVUJMQU5HX0dFUk1BTl9TV0lTUzogcmV0dXJuICJkZV9DSCI7Ci0rCWNhc2UgU1VCTEFOR19HRVJNQU5fQVVTVFJJQU46IHJldHVybiAiZGVfQVQiOwotKwljYXNlIFNVQkxBTkdfR0VSTUFOX0xVWEVNQk9VUkc6IHJldHVybiAiZGVfTFUiOwotKwljYXNlIFNVQkxBTkdfR0VSTUFOX0xJRUNIVEVOU1RFSU46IHJldHVybiAiZGVfTEkiOwotKwl9Ci0rICAgICAgcmV0dXJuICJkZSI7Ci0rICAgIGNhc2UgTEFOR19HUkVFSzogcmV0dXJuICJlbF9HUiI7Ci0rICAgIGNhc2UgTEFOR19HVUFSQU5JOiByZXR1cm4gImduX1BZIjsKLSsgICAgY2FzZSBMQU5HX0dVSkFSQVRJOiByZXR1cm4gImd1X0lOIjsKLSsgICAgY2FzZSBMQU5HX0hBVVNBOiByZXR1cm4gImhhX05HIjsKLSsgICAgY2FzZSBMQU5HX0hBV0FJSUFOOgotKyAgICAgIC8qIEZJWE1FOiBEbyB0aGV5IG1lYW4gSGF3YWlpYW4gKCJoYXdfVVMiLCAxMDAwIHNwZWFrZXJzKQotKwkgb3IgSGF3YWlpIENyZW9sZSBFbmdsaXNoICgiY3BlX1VTIiwgNjAwMDAwIHNwZWFrZXJzKT8gICovCi0rICAgICAgcmV0dXJuICJjcGVfVVMiOwotKyAgICBjYXNlIExBTkdfSEVCUkVXOiByZXR1cm4gImhlX0lMIjsKLSsgICAgY2FzZSBMQU5HX0hJTkRJOiByZXR1cm4gImhpX0lOIjsKLSsgICAgY2FzZSBMQU5HX0hVTkdBUklBTjogcmV0dXJuICJodV9IVSI7Ci0rICAgIGNhc2UgTEFOR19JQklCSU86IHJldHVybiAibmljX05HIjsKLSsgICAgY2FzZSBMQU5HX0lDRUxBTkRJQzogcmV0dXJuICJpc19JUyI7Ci0rICAgIGNhc2UgTEFOR19JR0JPOiByZXR1cm4gImlnX05HIjsKLSsgICAgY2FzZSBMQU5HX0lORE9ORVNJQU46IHJldHVybiAiaWRfSUQiOwotKyAgICBjYXNlIExBTkdfSU5VS1RJVFVUOiByZXR1cm4gIml1X0NBIjsKLSsgICAgY2FzZSBMQU5HX0lUQUxJQU46Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX0lUQUxJQU46IHJldHVybiAiaXRfSVQiOwotKwljYXNlIFNVQkxBTkdfSVRBTElBTl9TV0lTUzogcmV0dXJuICJpdF9DSCI7Ci0rCX0KLSsgICAgICByZXR1cm4gIml0IjsKLSsgICAgY2FzZSBMQU5HX0pBUEFORVNFOiByZXR1cm4gImphX0pQIjsKLSsgICAgY2FzZSBMQU5HX0tBTk5BREE6IHJldHVybiAia25fSU4iOwotKyAgICBjYXNlIExBTkdfS0FOVVJJOiByZXR1cm4gImtyX05HIjsKLSsgICAgY2FzZSBMQU5HX0tBU0hNSVJJOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19ERUZBVUxUOiByZXR1cm4gImtzX1BLIjsKLSsJY2FzZSBTVUJMQU5HX0tBU0hNSVJJX0lORElBOiByZXR1cm4gImtzX0lOIjsKLSsJfQotKyAgICAgIHJldHVybiAia3MiOwotKyAgICBjYXNlIExBTkdfS0FaQUs6IHJldHVybiAia2tfS1oiOwotKyAgICBjYXNlIExBTkdfS09OS0FOSToKLSsgICAgICAvKiBGSVhNRTogQWRqdXN0IHRoaXMgd2hlbiBzdWNoIGxvY2FsZXMgYXBwZWFyIG9uIFVuaXguICAqLwotKyAgICAgIHJldHVybiAia29rX0lOIjsKLSsgICAgY2FzZSBMQU5HX0tPUkVBTjogcmV0dXJuICJrb19LUiI7Ci0rICAgIGNhc2UgTEFOR19LWVJHWVo6IHJldHVybiAia3lfS0ciOwotKyAgICBjYXNlIExBTkdfTEFPOiByZXR1cm4gImxvX0xBIjsKLSsgICAgY2FzZSBMQU5HX0xBVElOOiByZXR1cm4gImxhX1ZBIjsKLSsgICAgY2FzZSBMQU5HX0xBVFZJQU46IHJldHVybiAibHZfTFYiOwotKyAgICBjYXNlIExBTkdfTElUSFVBTklBTjogcmV0dXJuICJsdF9MVCI7Ci0rICAgIGNhc2UgTEFOR19NQUNFRE9OSUFOOiByZXR1cm4gIm1rX01LIjsKLSsgICAgY2FzZSBMQU5HX01BTEFZOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19NQUxBWV9NQUxBWVNJQTogcmV0dXJuICJtc19NWSI7Ci0rCWNhc2UgU1VCTEFOR19NQUxBWV9CUlVORUlfREFSVVNTQUxBTTogcmV0dXJuICJtc19CTiI7Ci0rCX0KLSsgICAgICByZXR1cm4gIm1zIjsKLSsgICAgY2FzZSBMQU5HX01BTEFZQUxBTTogcmV0dXJuICJtbF9JTiI7Ci0rICAgIGNhc2UgTEFOR19NQUxURVNFOiByZXR1cm4gIm10X01UIjsKLSsgICAgY2FzZSBMQU5HX01BTklQVVJJOgotKyAgICAgIC8qIEZJWE1FOiBBZGp1c3QgdGhpcyB3aGVuIHN1Y2ggbG9jYWxlcyBhcHBlYXIgb24gVW5peC4gICovCi0rICAgICAgcmV0dXJuICJtbmlfSU4iOwotKyAgICBjYXNlIExBTkdfTUFSQVRISTogcmV0dXJuICJtcl9JTiI7Ci0rICAgIGNhc2UgTEFOR19NT05HT0xJQU46Ci0rICAgICAgcmV0dXJuICJtbiI7IC8qIEFtYmlndW91czogY291bGQgYmUgIm1uX0NOIiBvciAibW5fTU4iLiAgKi8KLSsgICAgY2FzZSBMQU5HX05FUEFMSToKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfREVGQVVMVDogcmV0dXJuICJuZV9OUCI7Ci0rCWNhc2UgU1VCTEFOR19ORVBBTElfSU5ESUE6IHJldHVybiAibmVfSU4iOwotKwl9Ci0rICAgICAgcmV0dXJuICJuZSI7Ci0rICAgIGNhc2UgTEFOR19OT1JXRUdJQU46Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX05PUldFR0lBTl9CT0tNQUw6IHJldHVybiAibm9fTk8iOwotKwljYXNlIFNVQkxBTkdfTk9SV0VHSUFOX05ZTk9SU0s6IHJldHVybiAibm5fTk8iOwotKwl9Ci0rICAgICAgcmV0dXJuICJubyI7Ci0rICAgIGNhc2UgTEFOR19PUklZQTogcmV0dXJuICJvcl9JTiI7Ci0rICAgIGNhc2UgTEFOR19PUk9NTzogcmV0dXJuICJvbV9FVCI7Ci0rICAgIGNhc2UgTEFOR19QQVBJQU1FTlRVOiByZXR1cm4gInBhcF9BTiI7Ci0rICAgIGNhc2UgTEFOR19QQVNIVE86Ci0rICAgICAgcmV0dXJuICJwcyI7IC8qIEFtYmlndW91czogY291bGQgYmUgInBzX1BLIiBvciAicHNfQUYiLiAgKi8KLSsgICAgY2FzZSBMQU5HX1BPTElTSDogcmV0dXJuICJwbF9QTCI7Ci0rICAgIGNhc2UgTEFOR19QT1JUVUdVRVNFOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19QT1JUVUdVRVNFOiByZXR1cm4gInB0X1BUIjsKLSsJLyogSG1tLiBTVUJMQU5HX1BPUlRVR1VFU0VfQlJBWklMSUFOID09IFNVQkxBTkdfREVGQVVMVC4KLSsJICAgU2FtZSBwaGVub21lbm9uIGFzIFNVQkxBTkdfRU5HTElTSF9VUyA9PSBTVUJMQU5HX0RFRkFVTFQuICovCi0rCWNhc2UgU1VCTEFOR19QT1JUVUdVRVNFX0JSQVpJTElBTjogcmV0dXJuICJwdF9CUiI7Ci0rCX0KLSsgICAgICByZXR1cm4gInB0IjsKLSsgICAgY2FzZSBMQU5HX1BVTkpBQkk6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX1BVTkpBQklfSU5ESUE6IHJldHVybiAicGFfSU4iOyAvKiBHdXJtdWtoaSBzY3JpcHQgKi8KLSsJY2FzZSBTVUJMQU5HX1BVTkpBQklfUEFLSVNUQU46IHJldHVybiAicGFfUEsiOyAvKiBBcmFiaWMgc2NyaXB0ICovCi0rCX0KLSsgICAgICByZXR1cm4gInBhIjsKLSsgICAgY2FzZSBMQU5HX1JIQUVUT19ST01BTkNFOiByZXR1cm4gInJtX0NIIjsKLSsgICAgY2FzZSBMQU5HX1JPTUFOSUFOOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19ST01BTklBTl9ST01BTklBOiByZXR1cm4gInJvX1JPIjsKLSsJY2FzZSBTVUJMQU5HX1JPTUFOSUFOX01PTERPVkE6IHJldHVybiAicm9fTUQiOwotKwl9Ci0rICAgICAgcmV0dXJuICJybyI7Ci0rICAgIGNhc2UgTEFOR19SVVNTSUFOOgotKyAgICAgIHJldHVybiAicnUiOyAvKiBBbWJpZ3VvdXM6IGNvdWxkIGJlICJydV9SVSIgb3IgInJ1X1VBIiBvciAicnVfTUQiLiAgKi8KLSsgICAgY2FzZSBMQU5HX1NBQU1JOiAvKiBhY3R1YWxseSBOb3J0aGVybiBTYW1pICovIHJldHVybiAic2VfTk8iOwotKyAgICBjYXNlIExBTkdfU0FOU0tSSVQ6IHJldHVybiAic2FfSU4iOwotKyAgICBjYXNlIExBTkdfU0lOREhJOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19TSU5ESElfSU5ESUE6IHJldHVybiAic2RfSU4iOwotKwljYXNlIFNVQkxBTkdfU0lOREhJX1BBS0lTVEFOOiByZXR1cm4gInNkX1BLIjsKLSsJfQotKyAgICAgIHJldHVybiAic2QiOwotKyAgICBjYXNlIExBTkdfU0lOSEFMRVNFOiByZXR1cm4gInNpX0xLIjsKLSsgICAgY2FzZSBMQU5HX1NMT1ZBSzogcmV0dXJuICJza19TSyI7Ci0rICAgIGNhc2UgTEFOR19TTE9WRU5JQU46IHJldHVybiAic2xfU0kiOwotKyAgICBjYXNlIExBTkdfU09NQUxJOiByZXR1cm4gInNvX1NPIjsKLSsgICAgY2FzZSBMQU5HX1NPUkJJQU46Ci0rICAgICAgLyogRklYTUU6IEFkanVzdCB0aGlzIHdoZW4gc3VjaCBsb2NhbGVzIGFwcGVhciBvbiBVbml4LiAgKi8KLSsgICAgICByZXR1cm4gIndlbl9ERSI7Ci0rICAgIGNhc2UgTEFOR19TUEFOSVNIOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIOiByZXR1cm4gImVzX0VTIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfTUVYSUNBTjogcmV0dXJuICJlc19NWCI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX01PREVSTjoKLSsJICByZXR1cm4gImVzX0VTQG1vZGVybiI7CS8qIG5vdCBzZWVuIG9uIFVuaXggKi8KLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfR1VBVEVNQUxBOiByZXR1cm4gImVzX0dUIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfQ09TVEFfUklDQTogcmV0dXJuICJlc19DUiI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX1BBTkFNQTogcmV0dXJuICJlc19QQSI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX0RPTUlOSUNBTl9SRVBVQkxJQzogcmV0dXJuICJlc19ETyI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX1ZFTkVaVUVMQTogcmV0dXJuICJlc19WRSI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX0NPTE9NQklBOiByZXR1cm4gImVzX0NPIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfUEVSVTogcmV0dXJuICJlc19QRSI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX0FSR0VOVElOQTogcmV0dXJuICJlc19BUiI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX0VDVUFET1I6IHJldHVybiAiZXNfRUMiOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9DSElMRTogcmV0dXJuICJlc19DTCI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX1VSVUdVQVk6IHJldHVybiAiZXNfVVkiOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9QQVJBR1VBWTogcmV0dXJuICJlc19QWSI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX0JPTElWSUE6IHJldHVybiAiZXNfQk8iOwotKwljYXNlIFNVQkxBTkdfU1BBTklTSF9FTF9TQUxWQURPUjogcmV0dXJuICJlc19TViI7Ci0rCWNhc2UgU1VCTEFOR19TUEFOSVNIX0hPTkRVUkFTOiByZXR1cm4gImVzX0hOIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfTklDQVJBR1VBOiByZXR1cm4gImVzX05JIjsKLSsJY2FzZSBTVUJMQU5HX1NQQU5JU0hfUFVFUlRPX1JJQ086IHJldHVybiAiZXNfUFIiOwotKwl9Ci0rICAgICAgcmV0dXJuICJlcyI7Ci0rICAgIGNhc2UgTEFOR19TVVRVOiByZXR1cm4gImJudF9UWiI7IC8qIG9yICJzdF9MUyIgb3IgIm5zb19aQSI/ICovCi0rICAgIGNhc2UgTEFOR19TV0FISUxJOiByZXR1cm4gInN3X0tFIjsKLSsgICAgY2FzZSBMQU5HX1NXRURJU0g6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJY2FzZSBTVUJMQU5HX0RFRkFVTFQ6IHJldHVybiAic3ZfU0UiOwotKwljYXNlIFNVQkxBTkdfU1dFRElTSF9GSU5MQU5EOiByZXR1cm4gInN2X0ZJIjsKLSsJfQotKyAgICAgIHJldHVybiAic3YiOwotKyAgICBjYXNlIExBTkdfU1lSSUFDOiByZXR1cm4gInN5cl9UUiI7IC8qIEFuIGV4dGluY3QgbGFuZ3VhZ2UuICAqLwotKyAgICBjYXNlIExBTkdfVEFHQUxPRzogcmV0dXJuICJ0bF9QSCI7Ci0rICAgIGNhc2UgTEFOR19UQUpJSzogcmV0dXJuICJ0Z19USiI7Ci0rICAgIGNhc2UgTEFOR19UQU1BWklHSFQ6Ci0rICAgICAgc3dpdGNoIChzdWIpCi0rCXsKLSsJLyogRklYTUU6IEFkanVzdCB0aGlzIHdoZW4gVGFtYXppZ2h0IGxvY2FsZXMgYXBwZWFyIG9uIFVuaXguICAqLwotKwljYXNlIFNVQkxBTkdfVEFNQVpJR0hUX0FSQUJJQzogcmV0dXJuICJiZXJfTUFAYXJhYmljIjsKLSsJY2FzZSBTVUJMQU5HX1RBTUFaSUdIVF9MQVRJTjogcmV0dXJuICJiZXJfTUFAbGF0aW4iOwotKwl9Ci0rICAgICAgcmV0dXJuICJiZXJfTUEiOwotKyAgICBjYXNlIExBTkdfVEFNSUw6Ci0rICAgICAgcmV0dXJuICJ0YSI7IC8qIEFtYmlndW91czogY291bGQgYmUgInRhX0lOIiBvciAidGFfTEsiIG9yICJ0YV9TRyIuICAqLwotKyAgICBjYXNlIExBTkdfVEFUQVI6IHJldHVybiAidHRfUlUiOwotKyAgICBjYXNlIExBTkdfVEVMVUdVOiByZXR1cm4gInRlX0lOIjsKLSsgICAgY2FzZSBMQU5HX1RIQUk6IHJldHVybiAidGhfVEgiOwotKyAgICBjYXNlIExBTkdfVElCRVRBTjogcmV0dXJuICJib19DTiI7Ci0rICAgIGNhc2UgTEFOR19USUdSSU5ZQToKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfVElHUklOWUFfRVRISU9QSUE6IHJldHVybiAidGlfRVQiOwotKwljYXNlIFNVQkxBTkdfVElHUklOWUFfRVJJVFJFQTogcmV0dXJuICJ0aV9FUiI7Ci0rCX0KLSsgICAgICByZXR1cm4gInRpIjsKLSsgICAgY2FzZSBMQU5HX1RTT05HQTogcmV0dXJuICJ0c19aQSI7Ci0rICAgIGNhc2UgTEFOR19UU1dBTkE6IHJldHVybiAidG5fQlciOwotKyAgICBjYXNlIExBTkdfVFVSS0lTSDogcmV0dXJuICJ0cl9UUiI7Ci0rICAgIGNhc2UgTEFOR19UVVJLTUVOOiByZXR1cm4gInRrX1RNIjsKLSsgICAgY2FzZSBMQU5HX1VLUkFJTklBTjogcmV0dXJuICJ1a19VQSI7Ci0rICAgIGNhc2UgTEFOR19VUkRVOgotKyAgICAgIHN3aXRjaCAoc3ViKQotKwl7Ci0rCWNhc2UgU1VCTEFOR19VUkRVX1BBS0lTVEFOOiByZXR1cm4gInVyX1BLIjsKLSsJY2FzZSBTVUJMQU5HX1VSRFVfSU5ESUE6IHJldHVybiAidXJfSU4iOwotKwl9Ci0rICAgICAgcmV0dXJuICJ1ciI7Ci0rICAgIGNhc2UgTEFOR19VWkJFSzoKLSsgICAgICBzd2l0Y2ggKHN1YikKLSsJewotKwljYXNlIFNVQkxBTkdfVVpCRUtfTEFUSU46IHJldHVybiAidXpfVVoiOwotKwljYXNlIFNVQkxBTkdfVVpCRUtfQ1lSSUxMSUM6IHJldHVybiAidXpfVVpAY3lyaWxsaWMiOwotKwl9Ci0rICAgICAgcmV0dXJuICJ1eiI7Ci0rICAgIGNhc2UgTEFOR19WRU5EQTogcmV0dXJuICJ2ZV9aQSI7Ci0rICAgIGNhc2UgTEFOR19WSUVUTkFNRVNFOiByZXR1cm4gInZpX1ZOIjsKLSsgICAgY2FzZSBMQU5HX1dFTFNIOiByZXR1cm4gImN5X0dCIjsKLSsgICAgY2FzZSBMQU5HX1hIT1NBOiByZXR1cm4gInhoX1pBIjsKLSsgICAgY2FzZSBMQU5HX1lJOiByZXR1cm4gInNpdF9DTiI7Ci0rICAgIGNhc2UgTEFOR19ZSURESVNIOiByZXR1cm4gInlpX0lMIjsKLSsgICAgY2FzZSBMQU5HX1lPUlVCQTogcmV0dXJuICJ5b19ORyI7Ci0rICAgIGNhc2UgTEFOR19aVUxVOiByZXR1cm4gInp1X1pBIjsKLSsgICAgZGVmYXVsdDogcmV0dXJuICJDIjsKLSsgICAgfQotKwotKyNlbmRpZgotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9sb2cuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9sb2cuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjUxNTcyMzc2OCAtMDQwMAotQEAgLTAsMCArMSw5OCBAQAotKy8qIExvZyBmaWxlIG91dHB1dC4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKy8qIFdyaXR0ZW4gYnkgQnJ1bm8gSGFpYmxlIDxicnVub0BjbGlzcC5vcmc+LiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsKLSsvKiBQcmludCBhbiBBU0NJSSBzdHJpbmcgd2l0aCBxdW90ZXMgYW5kIGVzY2FwZSBzZXF1ZW5jZXMgd2hlcmUgbmVlZGVkLiAgKi8KLStzdGF0aWMgdm9pZAotK3ByaW50X2VzY2FwZWQgKEZJTEUgKnN0cmVhbSwgY29uc3QgY2hhciAqc3RyKQotK3sKLSsgIHB1dGMgKCciJywgc3RyZWFtKTsKLSsgIGZvciAoOyAqc3RyICE9ICdcMCc7IHN0cisrKQotKyAgICBpZiAoKnN0ciA9PSAnXG4nKQotKyAgICAgIHsKLSsJZnB1dHMgKCJcXG5cIiIsIHN0cmVhbSk7Ci0rCWlmIChzdHJbMV0gPT0gJ1wwJykKLSsJICByZXR1cm47Ci0rCWZwdXRzICgiXG5cIiIsIHN0cmVhbSk7Ci0rICAgICAgfQotKyAgICBlbHNlCi0rICAgICAgewotKwlpZiAoKnN0ciA9PSAnIicgfHwgKnN0ciA9PSAnXFwnKQotKwkgIHB1dGMgKCdcXCcsIHN0cmVhbSk7Ci0rCXB1dGMgKCpzdHIsIHN0cmVhbSk7Ci0rICAgICAgfQotKyAgcHV0YyAoJyInLCBzdHJlYW0pOwotK30KLSsKLSsvKiBBZGQgdG8gdGhlIGxvZyBmaWxlIGFuIGVudHJ5IGRlbm90aW5nIGEgZmFpbGVkIHRyYW5zbGF0aW9uLiAgKi8KLSt2b2lkCi0rX25sX2xvZ191bnRyYW5zbGF0ZWQgKGNvbnN0IGNoYXIgKmxvZ2ZpbGVuYW1lLCBjb25zdCBjaGFyICpkb21haW5uYW1lLAotKwkJICAgICAgY29uc3QgY2hhciAqbXNnaWQxLCBjb25zdCBjaGFyICptc2dpZDIsIGludCBwbHVyYWwpCi0rewotKyAgc3RhdGljIGNoYXIgKmxhc3RfbG9nZmlsZW5hbWUgPSBOVUxMOwotKyAgc3RhdGljIEZJTEUgKmxhc3RfbG9nZmlsZSA9IE5VTEw7Ci0rICBGSUxFICpsb2dmaWxlOwotKwotKyAgLyogQ2FuIHdlIHJldXNlIHRoZSBsYXN0IG9wZW5lZCBsb2dmaWxlPyAgKi8KLSsgIGlmIChsYXN0X2xvZ2ZpbGVuYW1lID09IE5VTEwgfHwgc3RyY21wIChsb2dmaWxlbmFtZSwgbGFzdF9sb2dmaWxlbmFtZSkgIT0gMCkKLSsgICAgewotKyAgICAgIC8qIENsb3NlIHRoZSBsYXN0IHVzZWQgbG9nZmlsZS4gICovCi0rICAgICAgaWYgKGxhc3RfbG9nZmlsZW5hbWUgIT0gTlVMTCkKLSsJewotKwkgIGlmIChsYXN0X2xvZ2ZpbGUgIT0gTlVMTCkKLSsJICAgIHsKLSsJICAgICAgZmNsb3NlIChsYXN0X2xvZ2ZpbGUpOwotKwkgICAgICBsYXN0X2xvZ2ZpbGUgPSBOVUxMOwotKwkgICAgfQotKwkgIGZyZWUgKGxhc3RfbG9nZmlsZW5hbWUpOwotKwkgIGxhc3RfbG9nZmlsZW5hbWUgPSBOVUxMOwotKwl9Ci0rICAgICAgLyogT3BlbiB0aGUgbG9nZmlsZS4gICovCi0rICAgICAgbGFzdF9sb2dmaWxlbmFtZSA9IChjaGFyICopIG1hbGxvYyAoc3RybGVuIChsb2dmaWxlbmFtZSkgKyAxKTsKLSsgICAgICBpZiAobGFzdF9sb2dmaWxlbmFtZSA9PSBOVUxMKQotKwlyZXR1cm47Ci0rICAgICAgc3RyY3B5IChsYXN0X2xvZ2ZpbGVuYW1lLCBsb2dmaWxlbmFtZSk7Ci0rICAgICAgbGFzdF9sb2dmaWxlID0gZm9wZW4gKGxvZ2ZpbGVuYW1lLCAiYSIpOwotKyAgICAgIGlmIChsYXN0X2xvZ2ZpbGUgPT0gTlVMTCkKLSsJcmV0dXJuOwotKyAgICB9Ci0rICBsb2dmaWxlID0gbGFzdF9sb2dmaWxlOwotKwotKyAgZnByaW50ZiAobG9nZmlsZSwgImRvbWFpbiAiKTsKLSsgIHByaW50X2VzY2FwZWQgKGxvZ2ZpbGUsIGRvbWFpbm5hbWUpOwotKyAgZnByaW50ZiAobG9nZmlsZSwgIlxubXNnaWQgIik7Ci0rICBwcmludF9lc2NhcGVkIChsb2dmaWxlLCBtc2dpZDEpOwotKyAgaWYgKHBsdXJhbCkKLSsgICAgewotKyAgICAgIGZwcmludGYgKGxvZ2ZpbGUsICJcbm1zZ2lkX3BsdXJhbCAiKTsKLSsgICAgICBwcmludF9lc2NhcGVkIChsb2dmaWxlLCBtc2dpZDIpOwotKyAgICAgIGZwcmludGYgKGxvZ2ZpbGUsICJcbm1zZ3N0clswXSBcIlwiXG4iKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICBmcHJpbnRmIChsb2dmaWxlLCAiXG5tc2dzdHIgXCJcIlxuIik7Ci0rICBwdXRjICgnXG4nLCBsb2dmaWxlKTsKLSt9Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvTWFrZWZpbGUuaW4JMTk5OC0wNC0yNiAwOToyMjozNS4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvTWFrZWZpbGUuaW4JMjAwNC0wOS0xMiAxNDo0MDozNC41MjE3MjI4NTYgLTA0MDAKLUBAIC0xLDE5ICsxLDIwIEBACi0tIyBNYWtlZmlsZSBmb3IgZGlyZWN0b3J5IHdpdGggbWVzc2FnZSBjYXRhbG9nIGhhbmRsaW5nIGluIEdOVSBOTFMgVXRpbGl0aWVzLgotLSMgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk2LCAxOTk3IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgTWFrZWZpbGUgZm9yIGRpcmVjdG9yeSB3aXRoIG1lc3NhZ2UgY2F0YWxvZyBoYW5kbGluZyBsaWJyYXJ5IG9mIEdOVSBnZXR0ZXh0Ci0rIyBDb3B5cmlnaHQgKEMpIDE5OTUtMTk5OCwgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotICMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0tIyBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQotLSMgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsjIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSAjIGFueSBsYXRlciB2ZXJzaW9uLgotICMKLSAjIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotICMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyMgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gIwotLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0tIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotKyMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsjIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsjIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyMgVVNBLgotIAotIFBBQ0tBR0UgPSBAUEFDS0FHRUAKLSBWRVJTSU9OID0gQFZFUlNJT05ACi1AQCAtMjMsMTE4ICsyNCwzNDEgQEAKLSBzcmNkaXIgPSBAc3JjZGlyQAotIHRvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKLSB0b3BfYnVpbGRkaXIgPSAuLgotLVZQQVRIID0gQHNyY2RpckAKLSsjVlBBVEggPSAkKHNyY2RpcikKLSAKLSBwcmVmaXggPSBAcHJlZml4QAotIGV4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAotIHRyYW5zZm9ybSA9IEBwcm9ncmFtX3RyYW5zZm9ybV9uYW1lQAotLWxpYmRpciA9ICQoZXhlY19wcmVmaXgpL2xpYgotLWluY2x1ZGVkaXIgPSAkKHByZWZpeCkvaW5jbHVkZQotLWRhdGFkaXIgPSAkKHByZWZpeCkvQERBVEFESVJOQU1FQAotK2xpYmRpciA9IEBsaWJkaXJACi0raW5jbHVkZWRpciA9IEBpbmNsdWRlZGlyQAotK2RhdGFkaXIgPSBAZGF0YWRpckAKLSBsb2NhbGVkaXIgPSAkKGRhdGFkaXIpL2xvY2FsZQotLWdudWxvY2FsZWRpciA9ICQocHJlZml4KS9zaGFyZS9sb2NhbGUKLS1nZXR0ZXh0c3JjZGlyID0gQGRhdGFkaXJAL2dldHRleHQvaW50bAotLWFsaWFzcGF0aCA9ICQobG9jYWxlZGlyKTouCi0rZ2V0dGV4dHNyY2RpciA9ICQoZGF0YWRpcikvZ2V0dGV4dC9pbnRsCi0rYWxpYXNwYXRoID0gJChsb2NhbGVkaXIpCi0gc3ViZGlyID0gaW50bAotIAotIElOU1RBTEwgPSBASU5TVEFMTEAKLSBJTlNUQUxMX0RBVEEgPSBASU5TVEFMTF9EQVRBQAotIE1LSU5TVEFMTERJUlMgPSBATUtJTlNUQUxMRElSU0AKLStta2luc3RhbGxkaXJzID0gJChTSEVMTCkgJChNS0lOU1RBTExESVJTKQotIAotLWwgPSBAbEAKLStsID0gQElOVExfTElCVE9PTF9TVUZGSVhfUFJFRklYQAotIAotIEFSID0gYXIKLSBDQyA9IEBDQ0AKLSBMSUJUT09MID0gQExJQlRPT0xACi0gUkFOTElCID0gQFJBTkxJQkAKLStZQUNDID0gQElOVExCSVNPTkAgLXkgLWQKLStZRkxBR1MgPSAtLW5hbWUtcHJlZml4PV9fZ2V0dGV4dAotIAotLURFRlMgPSAtRExPQ0FMRURJUj1cIiQobG9jYWxlZGlyKVwiIC1ER05VTE9DQUxFRElSPVwiJChnbnVsb2NhbGVkaXIpXCIgXAotLS1ETE9DQUxFX0FMSUFTX1BBVEg9XCIkKGFsaWFzcGF0aClcIiBAREVGU0AKLStERUZTID0gLURMT0NBTEVESVI9XCIkKGxvY2FsZWRpcilcIiAtRExPQ0FMRV9BTElBU19QQVRIPVwiJChhbGlhc3BhdGgpXCIgXAotKy1ETElCRElSPVwiJChsaWJkaXIpXCIgLURJTl9MSUJJTlRMIFwKLSstREVOQUJMRV9SRUxPQ0FUQUJMRT0xIC1ESU5fTElCUkFSWSAtRElOU1RBTExESVI9XCIkKGxpYmRpcilcIiAtRE5PX1hNQUxMT0MgXAotKy1Ec2V0X3JlbG9jYXRpb25fcHJlZml4PWxpYmludGxfc2V0X3JlbG9jYXRpb25fcHJlZml4IFwKLSstRHJlbG9jYXRlPWxpYmludGxfcmVsb2NhdGUgXAotKy1EREVQRU5EU19PTl9MSUJJQ09OVj0xIEBERUZTQAotIENQUEZMQUdTID0gQENQUEZMQUdTQAotIENGTEFHUyA9IEBDRkxBR1NACi0gTERGTEFHUyA9IEBMREZMQUdTQAotK0xJQlMgPSBATElCU0AKLSAKLSBDT01QSUxFID0gJChDQykgLWMgJChERUZTKSAkKElOQ0xVREVTKSAkKENQUEZMQUdTKSAkKENGTEFHUykgJChYQ0ZMQUdTKQotIAotLUhFQURFUlMgPSAkKENPTUhEUlMpIGxpYmdldHRleHQuaCBsb2FkaW5mby5oCi0tQ09NSERSUyA9IGdldHRleHQuaCBnZXR0ZXh0UC5oIGhhc2gtc3RyaW5nLmgKLS1TT1VSQ0VTID0gJChDT01TUkNTKSBpbnRsLWNvbXBhdC5jIGNhdC1jb21wYXQuYwotLUNPTVNSQ1MgPSBiaW5kdGV4dGRvbS5jIGRjZ2V0dGV4dC5jIGRnZXR0ZXh0LmMgZ2V0dGV4dC5jIFwKLS1maW5kZG9tYWluLmMgbG9hZG1zZ2NhdC5jIGxvY2FsZWFsaWFzLmMgdGV4dGRvbWFpbi5jIGwxMG5mbGlzdC5jIFwKLS1leHBsb2RlbmFtZS5jCi0tT0JKRUNUUyA9IEBJTlRMT0JKU0AgYmluZHRleHRkb20uJGxvIGRjZ2V0dGV4dC4kbG8gZGdldHRleHQuJGxvIGdldHRleHQuJGxvIFwKLS1maW5kZG9tYWluLiRsbyBsb2FkbXNnY2F0LiRsbyBsb2NhbGVhbGlhcy4kbG8gdGV4dGRvbWFpbi4kbG8gbDEwbmZsaXN0LiRsbyBcCi0tZXhwbG9kZW5hbWUuJGxvCi0tQ0FUT0JKUyA9IGNhdC1jb21wYXQuJGxvIC4uL3BvL2NhdC1pZC10YmwuJGxvCi0tR0VUVE9CSlMgPSBpbnRsLWNvbXBhdC4kbG8KLS1ESVNURklMRVMuY29tbW9uID0gQ2hhbmdlTG9nIE1ha2VmaWxlLmluIGxpbnV4LW1zZy5zZWQgcG8ydGJsLnNlZC5pbiBcCi0teG9wZW4tbXNnLnNlZCAkKEhFQURFUlMpICQoU09VUkNFUykKLStIRUFERVJTID0gXAotKyAgZ21vLmggXAotKyAgZ2V0dGV4dFAuaCBcCi0rICBoYXNoLXN0cmluZy5oIFwKLSsgIGxvYWRpbmZvLmggXAotKyAgcGx1cmFsLWV4cC5oIFwKLSsgIGV2YWwtcGx1cmFsLmggXAotKyAgbG9jYWxjaGFyc2V0LmggXAotKyAgcmVsb2NhdGFibGUuaCBcCi0rICB4c2l6ZS5oIFwKLSsgIHByaW50Zi1hcmdzLmggcHJpbnRmLWFyZ3MuYyBcCi0rICBwcmludGYtcGFyc2UuaCB3cHJpbnRmLXBhcnNlLmggcHJpbnRmLXBhcnNlLmMgXAotKyAgdmFzbnByaW50Zi5oIHZhc253cHJpbnRmLmggdmFzbnByaW50Zi5jIFwKLSsgIG9zMmNvbXBhdC5oIFwKLSsgIGxpYmdudWludGwuaC5pbgotK1NPVVJDRVMgPSBcCi0rICBiaW5kdGV4dGRvbS5jIFwKLSsgIGRjZ2V0dGV4dC5jIFwKLSsgIGRnZXR0ZXh0LmMgXAotKyAgZ2V0dGV4dC5jIFwKLSsgIGZpbmRkb21haW4uYyBcCi0rICBsb2FkbXNnY2F0LmMgXAotKyAgbG9jYWxlYWxpYXMuYyBcCi0rICB0ZXh0ZG9tYWluLmMgXAotKyAgbDEwbmZsaXN0LmMgXAotKyAgZXhwbG9kZW5hbWUuYyBcCi0rICBkY2lnZXR0ZXh0LmMgXAotKyAgZGNuZ2V0dGV4dC5jIFwKLSsgIGRuZ2V0dGV4dC5jIFwKLSsgIG5nZXR0ZXh0LmMgXAotKyAgcGx1cmFsLnkgXAotKyAgcGx1cmFsLWV4cC5jIFwKLSsgIGxvY2FsY2hhcnNldC5jIFwKLSsgIHJlbG9jYXRhYmxlLmMgXAotKyAgbG9jYWxlbmFtZS5jIFwKLSsgIGxvZy5jIFwKLSsgIHByaW50Zi5jIFwKLSsgIG9zZGVwLmMgXAotKyAgb3MyY29tcGF0LmMgXAotKyAgaW50bC1jb21wYXQuYwotK09CSkVDVFMgPSBcCi0rICBiaW5kdGV4dGRvbS4kbG8gXAotKyAgZGNnZXR0ZXh0LiRsbyBcCi0rICBkZ2V0dGV4dC4kbG8gXAotKyAgZ2V0dGV4dC4kbG8gXAotKyAgZmluZGRvbWFpbi4kbG8gXAotKyAgbG9hZG1zZ2NhdC4kbG8gXAotKyAgbG9jYWxlYWxpYXMuJGxvIFwKLSsgIHRleHRkb21haW4uJGxvIFwKLSsgIGwxMG5mbGlzdC4kbG8gXAotKyAgZXhwbG9kZW5hbWUuJGxvIFwKLSsgIGRjaWdldHRleHQuJGxvIFwKLSsgIGRjbmdldHRleHQuJGxvIFwKLSsgIGRuZ2V0dGV4dC4kbG8gXAotKyAgbmdldHRleHQuJGxvIFwKLSsgIHBsdXJhbC4kbG8gXAotKyAgcGx1cmFsLWV4cC4kbG8gXAotKyAgbG9jYWxjaGFyc2V0LiRsbyBcCi0rICByZWxvY2F0YWJsZS4kbG8gXAotKyAgbG9jYWxlbmFtZS4kbG8gXAotKyAgbG9nLiRsbyBcCi0rICBwcmludGYuJGxvIFwKLSsgIG9zZGVwLiRsbyBcCi0rICBpbnRsLWNvbXBhdC4kbG8KLStESVNURklMRVMuY29tbW9uID0gTWFrZWZpbGUuaW4gXAotK2NvbmZpZy5jaGFyc2V0IGxvY2FsZS5hbGlhcyByZWYtYWRkLnNpbiByZWYtZGVsLnNpbiAkKEhFQURFUlMpICQoU09VUkNFUykKLStESVNURklMRVMuZ2VuZXJhdGVkID0gcGx1cmFsLmMKLSBESVNURklMRVMubm9ybWFsID0gVkVSU0lPTgotLURJU1RGSUxFUy5nZXR0ZXh0ID0gbGliaW50bC5nbGliYyBpbnRsaC5pbnN0LmluCi0rRElTVEZJTEVTLmdldHRleHQgPSBDT1BZSU5HLkxJQi0yLjAgQ09QWUlORy5MSUItMi4xIGxpYmludGwuZ2xpYmMgXAotK2xpYmdudWludGwuaF92bXMgTWFrZWZpbGUudm1zIFwKLStsaWJnbnVpbnRsLmgubXN2Yy1zdGF0aWMgbGliZ251aW50bC5oLm1zdmMtc2hhcmVkIFJFQURNRS53b2UzMiBNYWtlZmlsZS5tc3ZjCi0rRElTVEZJTEVTLm9ic29sZXRlID0geG9wZW4tbXNnLnNlZCBsaW51eC1tc2cuc2VkIHBvMnRibC5zZWQuaW4gY2F0LWNvbXBhdC5jIFwKLStDT1BZSU5HLkxJQi0yIGdldHRleHQuaCBsaWJnZXR0ZXh0LmggcGx1cmFsLWV2YWwuYyBsaWJnbnVpbnRsLmgKLSsKLSthbGw6IGFsbC1AVVNFX0lOQ0xVREVEX0xJQklOVExACi0rYWxsLXllczogbGliaW50bC4kbGEgbGliaW50bC5oIGNoYXJzZXQuYWxpYXMgcmVmLWFkZC5zZWQgcmVmLWRlbC5zZWQKLSthbGwtbm86IGFsbC1uby1AQlVJTERfSU5DTFVERURfTElCSU5UTEAKLSthbGwtbm8teWVzOiBsaWJnbnVpbnRsLiRsYQotK2FsbC1uby1ubzoKLSsKLStsaWJpbnRsLmEgbGliZ251aW50bC5hOiAkKE9CSkVDVFMpCi0rCXJtIC1mICRACi0rCSQoQVIpIGNydSAkQCAkKE9CSkVDVFMpCi0rCSQoUkFOTElCKSAkQAotKwotK2xpYmludGwubGEgbGliZ251aW50bC5sYTogJChPQkpFQ1RTKQotKwkkKExJQlRPT0wpIC0tbW9kZT1saW5rIFwKLSsJICAkKENDKSAkKENQUEZMQUdTKSAkKENGTEFHUykgJChYQ0ZMQUdTKSAkKExERkxBR1MpIC1vICRAIFwKLSsJICAkKE9CSkVDVFMpIEBMVExJQklDT05WQCAkKExJQlMpIC1sYyBcCi0rCSAgLXZlcnNpb24taW5mbyAkKExUVl9DVVJSRU5UKTokKExUVl9SRVZJU0lPTik6JChMVFZfQUdFKSBcCi0rCSAgLXJwYXRoICQobGliZGlyKSBcCi0rCSAgLW5vLXVuZGVmaW5lZAotKwotKyMgTGlidG9vbCdzIGxpYnJhcnkgdmVyc2lvbiBpbmZvcm1hdGlvbiBmb3IgbGliaW50bC4KLSsjIEJlZm9yZSBtYWtpbmcgYSBnZXR0ZXh0IHJlbGVhc2UsIHRoZSBnZXR0ZXh0IG1haW50YWluZXIgbXVzdCBjaGFuZ2UgdGhpcwotKyMgYWNjb3JkaW5nIHRvIHRoZSBsaWJ0b29sIGRvY3VtZW50YXRpb24sIHNlY3Rpb24gIkxpYnJhcnkgaW50ZXJmYWNlIHZlcnNpb25zIi4KLSsjIE1haW50YWluZXJzIG9mIG90aGVyIHBhY2thZ2VzIHRoYXQgaW5jbHVkZSB0aGUgaW50bCBkaXJlY3RvcnkgbXVzdCAqbm90KgotKyMgY2hhbmdlIHRoZXNlIHZhbHVlcy4KLStMVFZfQ1VSUkVOVD03Ci0rTFRWX1JFVklTSU9OPTAKLStMVFZfQUdFPTQKLSAKLSAuU1VGRklYRVM6Ci0tLlNVRkZJWEVTOiAuYyAubyAubG8KLSsuU1VGRklYRVM6IC5jIC55IC5vIC5sbyAuc2luIC5zZWQKLSsKLSAuYy5vOgotIAkkKENPTVBJTEUpICQ8Ci0tLmMubG86Ci0tCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkPAotIAotLUlOQ0xVREVTID0gLUkuLiAtSS4gLUkkKHRvcF9zcmNkaXIpL2ludGwgLUkkKHRvcF9zcmNkaXIpL2xpYgotKy55LmM6Ci0rCSQoWUFDQykgJChZRkxBR1MpIC0tb3V0cHV0ICRAICQ8Ci0rCXJtIC1mICQqLmgKLSAKLS1hbGw6IGFsbC1AVVNFX0lOQ0xVREVEX0xJQklOVExACi0rYmluZHRleHRkb20ubG86ICQoc3JjZGlyKS9iaW5kdGV4dGRvbS5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvYmluZHRleHRkb20uYwotK2RjZ2V0dGV4dC5sbzogJChzcmNkaXIpL2RjZ2V0dGV4dC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvZGNnZXR0ZXh0LmMKLStkZ2V0dGV4dC5sbzogJChzcmNkaXIpL2RnZXR0ZXh0LmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9kZ2V0dGV4dC5jCi0rZ2V0dGV4dC5sbzogJChzcmNkaXIpL2dldHRleHQuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2dldHRleHQuYwotK2ZpbmRkb21haW4ubG86ICQoc3JjZGlyKS9maW5kZG9tYWluLmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9maW5kZG9tYWluLmMKLStsb2FkbXNnY2F0LmxvOiAkKHNyY2RpcikvbG9hZG1zZ2NhdC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvbG9hZG1zZ2NhdC5jCi0rbG9jYWxlYWxpYXMubG86ICQoc3JjZGlyKS9sb2NhbGVhbGlhcy5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvbG9jYWxlYWxpYXMuYwotK3RleHRkb21haW4ubG86ICQoc3JjZGlyKS90ZXh0ZG9tYWluLmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS90ZXh0ZG9tYWluLmMKLStsMTBuZmxpc3QubG86ICQoc3JjZGlyKS9sMTBuZmxpc3QuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2wxMG5mbGlzdC5jCi0rZXhwbG9kZW5hbWUubG86ICQoc3JjZGlyKS9leHBsb2RlbmFtZS5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvZXhwbG9kZW5hbWUuYwotK2RjaWdldHRleHQubG86ICQoc3JjZGlyKS9kY2lnZXR0ZXh0LmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9kY2lnZXR0ZXh0LmMKLStkY25nZXR0ZXh0LmxvOiAkKHNyY2RpcikvZGNuZ2V0dGV4dC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvZGNuZ2V0dGV4dC5jCi0rZG5nZXR0ZXh0LmxvOiAkKHNyY2RpcikvZG5nZXR0ZXh0LmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9kbmdldHRleHQuYwotK25nZXR0ZXh0LmxvOiAkKHNyY2RpcikvbmdldHRleHQuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL25nZXR0ZXh0LmMKLStwbHVyYWwubG86ICQoc3JjZGlyKS9wbHVyYWwuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL3BsdXJhbC5jCi0rcGx1cmFsLWV4cC5sbzogJChzcmNkaXIpL3BsdXJhbC1leHAuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL3BsdXJhbC1leHAuYwotK2xvY2FsY2hhcnNldC5sbzogJChzcmNkaXIpL2xvY2FsY2hhcnNldC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvbG9jYWxjaGFyc2V0LmMKLStyZWxvY2F0YWJsZS5sbzogJChzcmNkaXIpL3JlbG9jYXRhYmxlLmMKLSsJJChMSUJUT09MKSAtLW1vZGU9Y29tcGlsZSAkKENPTVBJTEUpICQoc3JjZGlyKS9yZWxvY2F0YWJsZS5jCi0rbG9jYWxlbmFtZS5sbzogJChzcmNkaXIpL2xvY2FsZW5hbWUuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2xvY2FsZW5hbWUuYwotK2xvZy5sbzogJChzcmNkaXIpL2xvZy5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2RpcikvbG9nLmMKLStwcmludGYubG86ICQoc3JjZGlyKS9wcmludGYuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL3ByaW50Zi5jCi0rb3NkZXAubG86ICQoc3JjZGlyKS9vc2RlcC5jCi0rCSQoTElCVE9PTCkgLS1tb2RlPWNvbXBpbGUgJChDT01QSUxFKSAkKHNyY2Rpcikvb3NkZXAuYwotK2ludGwtY29tcGF0LmxvOiAkKHNyY2RpcikvaW50bC1jb21wYXQuYwotKwkkKExJQlRPT0wpIC0tbW9kZT1jb21waWxlICQoQ09NUElMRSkgJChzcmNkaXIpL2ludGwtY29tcGF0LmMKLSAKLS1hbGwteWVzOiBsaWJpbnRsLiRsYSBpbnRsaC5pbnN0Ci0tYWxsLW5vOgotK3JlZi1hZGQuc2VkOiAkKHNyY2RpcikvcmVmLWFkZC5zaW4KLSsJc2VkIC1lICcvXiMvZCcgLWUgJ3MvQCcnUEFDS0FHRScnQC9AUEFDS0FHRUAvZycgJChzcmNkaXIpL3JlZi1hZGQuc2luID4gdC1yZWYtYWRkLnNlZAotKwltdiB0LXJlZi1hZGQuc2VkIHJlZi1hZGQuc2VkCi0rcmVmLWRlbC5zZWQ6ICQoc3JjZGlyKS9yZWYtZGVsLnNpbgotKwlzZWQgLWUgJy9eIy9kJyAtZSAncy9AJydQQUNLQUdFJydAL0BQQUNLQUdFQC9nJyAkKHNyY2RpcikvcmVmLWRlbC5zaW4gPiB0LXJlZi1kZWwuc2VkCi0rCW12IHQtcmVmLWRlbC5zZWQgcmVmLWRlbC5zZWQKLSAKLS1saWJpbnRsLmE6ICQoT0JKRUNUUykKLS0Jcm0gLWYgJEAKLS0JJChBUikgY3J1ICRAICQoT0JKRUNUUykKLS0JJChSQU5MSUIpICRACi0rSU5DTFVERVMgPSAtSS4gLUkkKHNyY2RpcikgLUkuLgotIAotLWxpYmludGwubGE6ICQoT0JKRUNUUykKLS0JJChMSUJUT09MKSAtLW1vZGU9bGluayAkKENDKSAkKExERkxBR1MpIC1vICRAICQoT0JKRUNUUykgXAotLQkJICAgLXZlcnNpb24taW5mbyAxOjAgLXJwYXRoICQobGliZGlyKQotK2xpYmdudWludGwuaDogJChzcmNkaXIpL2xpYmdudWludGwuaC5pbgotKwlzZWQgLWUgJ3MsQCcnSEFWRV9QT1NJWF9QUklOVEYnJ0AsQEhBVkVfUE9TSVhfUFJJTlRGQCxnJyBcCi0rCSAgICAtZSAncyxAJydIQVZFX0FTUFJJTlRGJydALEBIQVZFX0FTUFJJTlRGQCxnJyBcCi0rCSAgICAtZSAncyxAJydIQVZFX1NOUFJJTlRGJydALEBIQVZFX1NOUFJJTlRGQCxnJyBcCi0rCSAgICAtZSAncyxAJydIQVZFX1dQUklOVEYnJ0AsQEhBVkVfV1BSSU5URkAsZycgXAotKwkgIDwgJChzcmNkaXIpL2xpYmdudWludGwuaC5pbiA+IGxpYmdudWludGwuaAotIAotLS4uL3BvL2NhdC1pZC10YmwuJGxvOiAuLi9wby9jYXQtaWQtdGJsLmMgJCh0b3Bfc3JjZGlyKS9wby8kKFBBQ0tBR0UpLnBvdAotLQljZCAuLi9wbyAmJiAkKE1BS0UpIGNhdC1pZC10YmwuJGxvCi0rbGliaW50bC5oOiBsaWJnbnVpbnRsLmgKLSsJY3AgbGliZ251aW50bC5oIGxpYmludGwuaAotIAotLWNoZWNrOiBhbGwKLStjaGFyc2V0LmFsaWFzOiAkKHNyY2RpcikvY29uZmlnLmNoYXJzZXQKLSsJJChTSEVMTCkgJChzcmNkaXIpL2NvbmZpZy5jaGFyc2V0ICdAaG9zdEAnID4gdC0kQAotKwltdiB0LSRAICRACi0gCi0tIyBUaGlzIGluc3RhbGxhdGlvbiBnb2FsIGlzIG9ubHkgdXNlZCBpbiBHTlUgZ2V0dGV4dC4gIFBhY2thZ2VzIHdoaWNoCi0tIyBvbmx5IHVzZSB0aGUgbGlicmFyeSBzaG91bGQgdXNlIGluc3RhbGwgaW5zdGVhZC4KLStjaGVjazogYWxsCi0gCi0gIyBXZSBtdXN0IG5vdCBpbnN0YWxsIHRoZSBsaWJpbnRsLmgvbGliaW50bC5hIGZpbGVzIGlmIHdlIGFyZSBvbiBhCi0tIyBzeXN0ZW0gd2hpY2ggaGFzIHRoZSBnZXR0ZXh0KCkgZnVuY3Rpb24gaW4gaXRzIEMgbGlicmFyeSBvciBpbiBhCi0tIyBzZXBhcmF0ZSBsaWJyYXJ5IG9yIHVzZSB0aGUgY2F0Z2V0cyBpbnRlcmZhY2UuICBBIHNwZWNpYWwgY2FzZSBpcwotLSMgd2hlcmUgY29uZmlndXJlIGZvdW5kIGEgcHJldmlvdXNseSBpbnN0YWxsZWQgR05VIGdldHRleHQgbGlicmFyeS4KLSsjIHN5c3RlbSB3aGljaCBoYXMgdGhlIEdOVSBnZXR0ZXh0KCkgZnVuY3Rpb24gaW4gaXRzIEMgbGlicmFyeSBvciBpbiBhCi0rIyBzZXBhcmF0ZSBsaWJyYXJ5LgotICMgSWYgeW91IHdhbnQgdG8gdXNlIHRoZSBvbmUgd2hpY2ggY29tZXMgd2l0aCB0aGlzIHZlcnNpb24gb2YgdGhlCi0gIyBwYWNrYWdlLCB5b3UgaGF2ZSB0byB1c2UgYGNvbmZpZ3VyZSAtLXdpdGgtaW5jbHVkZWQtZ2V0dGV4dCcuCi0gaW5zdGFsbDogaW5zdGFsbC1leGVjIGluc3RhbGwtZGF0YQotIGluc3RhbGwtZXhlYzogYWxsCi0tCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQiIFwKLS0JICAgJiYgdGVzdCAnQElOVExPQkpTQCcgPSAnJChHRVRUT0JKUyknOyB0aGVuIFwKLS0JICBpZiB0ZXN0IC1yICQoTUtJTlNUQUxMRElSUyk7IHRoZW4gXAotLQkgICAgJChNS0lOU1RBTExESVJTKSAkKGxpYmRpcikgJChpbmNsdWRlZGlyKTsgXAotLQkgIGVsc2UgXAotLQkgICAgJCh0b3Bfc3JjZGlyKS9ta2luc3RhbGxkaXJzICQobGliZGlyKSAkKGluY2x1ZGVkaXIpOyBcCi0rCWlmIHsgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC1ydW50aW1lIiB8fCB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgfSBcCi0rCSAgICYmIHRlc3QgJ0BVU0VfSU5DTFVERURfTElCSU5UTEAnID0geWVzOyB0aGVuIFwKLSsJICAkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKGxpYmRpcikgJChERVNURElSKSQoaW5jbHVkZWRpcik7IFwKLSsJICAkKElOU1RBTExfREFUQSkgbGliaW50bC5oICQoREVTVERJUikkKGluY2x1ZGVkaXIpL2xpYmludGwuaDsgXAotKwkgICQoTElCVE9PTCkgLS1tb2RlPWluc3RhbGwgXAotKwkgICAgJChJTlNUQUxMX0RBVEEpIGxpYmludGwuJGxhICQoREVTVERJUikkKGxpYmRpcikvbGliaW50bC4kbGE7IFwKLSsJICBpZiB0ZXN0ICJAUkVMT0NBVEFCTEVAIiA9IHllczsgdGhlbiBcCi0rCSAgICBkZXBlbmRlbmNpZXM9YHNlZCAtbiAtZSAncyxeZGVwZW5kZW5jeV9saWJzPVwoLipcKSxcMSxwJyA8ICQoREVTVERJUikkKGxpYmRpcikvbGliaW50bC5sYSB8IHNlZCAtZSAicyxeJywsIiAtZSAicywnXCQkLCwiYDsgXAotKwkgICAgaWYgdGVzdCAtbiAiJCRkZXBlbmRlbmNpZXMiOyB0aGVuIFwKLSsJICAgICAgcm0gLWYgJChERVNURElSKSQobGliZGlyKS9saWJpbnRsLmxhOyBcCi0rCSAgICBmaTsgXAotIAkgIGZpOyBcCi0tCSAgJChJTlNUQUxMX0RBVEEpIGludGxoLmluc3QgJChpbmNsdWRlZGlyKS9saWJpbnRsLmg7IFwKLS0JICAkKElOU1RBTExfREFUQSkgbGliaW50bC5hICQobGliZGlyKS9saWJpbnRsLmE7IFwKLSAJZWxzZSBcCi0gCSAgOiA7IFwKLSAJZmkKLS1pbnN0YWxsLWRhdGE6IGFsbAotLQlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0IjsgdGhlbiBcCi0tCSAgaWYgdGVzdCAtciAkKE1LSU5TVEFMTERJUlMpOyB0aGVuIFwKLS0JICAgICQoTUtJTlNUQUxMRElSUykgJChnZXR0ZXh0c3JjZGlyKTsgXAotKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIiBcCi0rCSAgICYmIHRlc3QgJ0BVU0VfSU5DTFVERURfTElCSU5UTEAnID0gbm87IHRoZW4gXAotKwkgICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQobGliZGlyKTsgXAotKwkgICQoTElCVE9PTCkgLS1tb2RlPWluc3RhbGwgXAotKwkgICAgJChJTlNUQUxMX0RBVEEpIGxpYmdudWludGwuJGxhICQoREVTVERJUikkKGxpYmRpcikvbGliZ251aW50bC4kbGE7IFwKLSsJICBybSAtZiAkKERFU1RESVIpJChsaWJkaXIpL3ByZWxvYWRhYmxlX2xpYmludGwuc287IFwKLSsJICAkKElOU1RBTExfREFUQSkgJChERVNURElSKSQobGliZGlyKS9saWJnbnVpbnRsLnNvICQoREVTVERJUikkKGxpYmRpcikvcHJlbG9hZGFibGVfbGliaW50bC5zbzsgXAotKwkgICQoTElCVE9PTCkgLS1tb2RlPXVuaW5zdGFsbCBcCi0rCSAgICBybSAtZiAkKERFU1RESVIpJChsaWJkaXIpL2xpYmdudWludGwuJGxhOyBcCi0rCWVsc2UgXAotKwkgIDogOyBcCi0rCWZpCi0rCWlmIHRlc3QgJ0BVU0VfSU5DTFVERURfTElCSU5UTEAnID0geWVzOyB0aGVuIFwKLSsJICB0ZXN0IEBHTElCQzIxQCAhPSBubyB8fCAkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKGxpYmRpcik7IFwKLSsJICB0ZW1wPSQoREVTVERJUikkKGxpYmRpcikvdC1jaGFyc2V0LmFsaWFzOyBcCi0rCSAgZGVzdD0kKERFU1RESVIpJChsaWJkaXIpL2NoYXJzZXQuYWxpYXM7IFwKLSsJICBpZiB0ZXN0IC1mICQoREVTVERJUikkKGxpYmRpcikvY2hhcnNldC5hbGlhczsgdGhlbiBcCi0rCSAgICBvcmlnPSQoREVTVERJUikkKGxpYmRpcikvY2hhcnNldC5hbGlhczsgXAotKwkgICAgc2VkIC1mIHJlZi1hZGQuc2VkICQkb3JpZyA+ICQkdGVtcDsgXAotKwkgICAgJChJTlNUQUxMX0RBVEEpICQkdGVtcCAkJGRlc3Q7IFwKLSsJICAgIHJtIC1mICQkdGVtcDsgXAotIAkgIGVsc2UgXAotLQkgICAgJCh0b3Bfc3JjZGlyKS9ta2luc3RhbGxkaXJzICQoZ2V0dGV4dHNyY2Rpcik7IFwKLSsJICAgIGlmIHRlc3QgQEdMSUJDMjFAID0gbm87IHRoZW4gXAotKwkgICAgICBvcmlnPWNoYXJzZXQuYWxpYXM7IFwKLSsJICAgICAgc2VkIC1mIHJlZi1hZGQuc2VkICQkb3JpZyA+ICQkdGVtcDsgXAotKwkgICAgICAkKElOU1RBTExfREFUQSkgJCR0ZW1wICQkZGVzdDsgXAotKwkgICAgICBybSAtZiAkJHRlbXA7IFwKLSsJICAgIGZpOyBcCi0gCSAgZmk7IFwKLS0JICAkKElOU1RBTExfREFUQSkgVkVSU0lPTiAkKGdldHRleHRzcmNkaXIpL1ZFUlNJT047IFwKLS0JICBkaXN0cz0iJChESVNURklMRVMuY29tbW9uKSI7IFwKLSsJICAkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKGxvY2FsZWRpcik7IFwKLSsJICB0ZXN0IC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvbG9jYWxlLmFsaWFzIFwKLSsJICAgICYmIG9yaWc9JChERVNURElSKSQobG9jYWxlZGlyKS9sb2NhbGUuYWxpYXMgXAotKwkgICAgfHwgb3JpZz0kKHNyY2RpcikvbG9jYWxlLmFsaWFzOyBcCi0rCSAgdGVtcD0kKERFU1RESVIpJChsb2NhbGVkaXIpL3QtbG9jYWxlLmFsaWFzOyBcCi0rCSAgZGVzdD0kKERFU1RESVIpJChsb2NhbGVkaXIpL2xvY2FsZS5hbGlhczsgXAotKwkgIHNlZCAtZiByZWYtYWRkLnNlZCAkJG9yaWcgPiAkJHRlbXA7IFwKLSsJICAkKElOU1RBTExfREFUQSkgJCR0ZW1wICQkZGVzdDsgXAotKwkgIHJtIC1mICQkdGVtcDsgXAotKwllbHNlIFwKLSsJICA6IDsgXAotKwlmaQotK2luc3RhbGwtZGF0YTogYWxsCi0rCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKLSsJICAkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpOyBcCi0rCSAgJChJTlNUQUxMX0RBVEEpIFZFUlNJT04gJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvVkVSU0lPTjsgXAotKwkgICQoSU5TVEFMTF9EQVRBKSBDaGFuZ2VMb2cuaW5zdCAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS9DaGFuZ2VMb2c7IFwKLSsJICBkaXN0cz0iQ09QWUlORy5MSUItMi4wIENPUFlJTkcuTElCLTIuMSAkKERJU1RGSUxFUy5jb21tb24pIjsgXAotIAkgIGZvciBmaWxlIGluICQkZGlzdHM7IGRvIFwKLS0JICAgICQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvJCRmaWxlICQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCi0rCSAgICAkKElOU1RBTExfREFUQSkgJChzcmNkaXIpLyQkZmlsZSBcCi0rCQkJICAgICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAotIAkgIGRvbmU7IFwKLSsJICBjaG1vZCBhK3ggJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvY29uZmlnLmNoYXJzZXQ7IFwKLSsJICBkaXN0cz0iJChESVNURklMRVMuZ2VuZXJhdGVkKSI7IFwKLSsJICBmb3IgZmlsZSBpbiAkJGRpc3RzOyBkbyBcCi0rCSAgICBpZiB0ZXN0IC1mICQkZmlsZTsgdGhlbiBkaXI9LjsgZWxzZSBkaXI9JChzcmNkaXIpOyBmaTsgXAotKwkgICAgJChJTlNUQUxMX0RBVEEpICQkZGlyLyQkZmlsZSBcCi0rCQkJICAgICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAotKwkgIGRvbmU7IFwKLSsJICBkaXN0cz0iJChESVNURklMRVMub2Jzb2xldGUpIjsgXAotKwkgIGZvciBmaWxlIGluICQkZGlzdHM7IGRvIFwKLSsJICAgIHJtIC1mICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAotKwkgIGRvbmU7IFwKLSsJZWxzZSBcCi0rCSAgOiA7IFwKLSsJZmkKLSsKLStpbnN0YWxsLXN0cmlwOiBpbnN0YWxsCi0rCi0raW5zdGFsbGRpcnM6Ci0rCWlmIHsgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC1ydW50aW1lIiB8fCB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgfSBcCi0rCSAgICYmIHRlc3QgJ0BVU0VfSU5DTFVERURfTElCSU5UTEAnID0geWVzOyB0aGVuIFwKLSsJICAkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKGxpYmRpcikgJChERVNURElSKSQoaW5jbHVkZWRpcik7IFwKLSsJZWxzZSBcCi0rCSAgOiA7IFwKLSsJZmkKLSsJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyIgXAotKwkgICAmJiB0ZXN0ICdAVVNFX0lOQ0xVREVEX0xJQklOVExAJyA9IG5vOyB0aGVuIFwKLSsJICAkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKGxpYmRpcik7IFwKLSsJZWxzZSBcCi0rCSAgOiA7IFwKLSsJZmkKLSsJaWYgdGVzdCAnQFVTRV9JTkNMVURFRF9MSUJJTlRMQCcgPSB5ZXM7IHRoZW4gXAotKwkgIHRlc3QgQEdMSUJDMjFAICE9IG5vIHx8ICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQobGliZGlyKTsgXAotKwkgICQobWtpbnN0YWxsZGlycykgJChERVNURElSKSQobG9jYWxlZGlyKTsgXAotKwllbHNlIFwKLSsJICA6IDsgXAotKwlmaQotKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCi0rCSAgJChta2luc3RhbGxkaXJzKSAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKTsgXAotIAllbHNlIFwKLSAJICA6IDsgXAotIAlmaQotQEAgLTE0MywyMiArMzY3LDc2IEBACi0gaW5zdGFsbGNoZWNrOgotIAotIHVuaW5zdGFsbDoKLS0JZGlzdHM9IiQoRElTVEZJTEVTLmNvbW1vbikiOyBcCi0tCWZvciBmaWxlIGluICQkZGlzdHM7IGRvIFwKLS0JICBybSAtZiAkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAotLQlkb25lCi0rCWlmIHsgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC1ydW50aW1lIiB8fCB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgfSBcCi0rCSAgICYmIHRlc3QgJ0BVU0VfSU5DTFVERURfTElCSU5UTEAnID0geWVzOyB0aGVuIFwKLSsJICBybSAtZiAkKERFU1RESVIpJChpbmNsdWRlZGlyKS9saWJpbnRsLmg7IFwKLSsJICAkKExJQlRPT0wpIC0tbW9kZT11bmluc3RhbGwgXAotKwkgICAgcm0gLWYgJChERVNURElSKSQobGliZGlyKS9saWJpbnRsLiRsYTsgXAotKwllbHNlIFwKLSsJICA6IDsgXAotKwlmaQotKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIiBcCi0rCSAgICYmIHRlc3QgJ0BVU0VfSU5DTFVERURfTElCSU5UTEAnID0gbm87IHRoZW4gXAotKwkgIHJtIC1mICQoREVTVERJUikkKGxpYmRpcikvcHJlbG9hZGFibGVfbGliaW50bC5zbzsgXAotKwllbHNlIFwKLSsJICA6IDsgXAotKwlmaQotKwlpZiB0ZXN0ICdAVVNFX0lOQ0xVREVEX0xJQklOVExAJyA9IHllczsgdGhlbiBcCi0rCSAgaWYgdGVzdCAtZiAkKERFU1RESVIpJChsaWJkaXIpL2NoYXJzZXQuYWxpYXM7IHRoZW4gXAotKwkgICAgdGVtcD0kKERFU1RESVIpJChsaWJkaXIpL3QtY2hhcnNldC5hbGlhczsgXAotKwkgICAgZGVzdD0kKERFU1RESVIpJChsaWJkaXIpL2NoYXJzZXQuYWxpYXM7IFwKLSsJICAgIHNlZCAtZiByZWYtZGVsLnNlZCAkJGRlc3QgPiAkJHRlbXA7IFwKLSsJICAgIGlmIGdyZXAgJ14jIFBhY2thZ2VzIHVzaW5nIHRoaXMgZmlsZTogJCQnICQkdGVtcCA+IC9kZXYvbnVsbDsgdGhlbiBcCi0rCSAgICAgIHJtIC1mICQkZGVzdDsgXAotKwkgICAgZWxzZSBcCi0rCSAgICAgICQoSU5TVEFMTF9EQVRBKSAkJHRlbXAgJCRkZXN0OyBcCi0rCSAgICBmaTsgXAotKwkgICAgcm0gLWYgJCR0ZW1wOyBcCi0rCSAgZmk7IFwKLSsJICBpZiB0ZXN0IC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvbG9jYWxlLmFsaWFzOyB0aGVuIFwKLSsJICAgIHRlbXA9JChERVNURElSKSQobG9jYWxlZGlyKS90LWxvY2FsZS5hbGlhczsgXAotKwkgICAgZGVzdD0kKERFU1RESVIpJChsb2NhbGVkaXIpL2xvY2FsZS5hbGlhczsgXAotKwkgICAgc2VkIC1mIHJlZi1kZWwuc2VkICQkZGVzdCA+ICQkdGVtcDsgXAotKwkgICAgaWYgZ3JlcCAnXiMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOiAkJCcgJCR0ZW1wID4gL2Rldi9udWxsOyB0aGVuIFwKLSsJICAgICAgcm0gLWYgJCRkZXN0OyBcCi0rCSAgICBlbHNlIFwKLSsJICAgICAgJChJTlNUQUxMX0RBVEEpICQkdGVtcCAkJGRlc3Q7IFwKLSsJICAgIGZpOyBcCi0rCSAgICBybSAtZiAkJHRlbXA7IFwKLSsJICBmaTsgXAotKwllbHNlIFwKLSsJICA6IDsgXAotKwlmaQotKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCi0rCSAgZm9yIGZpbGUgaW4gVkVSU0lPTiBDaGFuZ2VMb2cgQ09QWUlORy5MSUItMi4wIENPUFlJTkcuTElCLTIuMSAkKERJU1RGSUxFUy5jb21tb24pICQoRElTVEZJTEVTLmdlbmVyYXRlZCk7IGRvIFwKLSsJICAgIHJtIC1mICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAotKwkgIGRvbmU7IFwKLSsJZWxzZSBcCi0rCSAgOiA7IFwKLSsJZmkKLSAKLS1pbmZvIGR2aToKLStpbmZvIGR2aSBwcyBwZGYgaHRtbDoKLSAKLS0kKE9CSkVDVFMpOiAuLi9jb25maWcuaCBsaWJnZXR0ZXh0LmgKLS1iaW5kdGV4dGRvbS4kbG8gZmluZGRvbWFpbi4kbG8gbG9hZG1zZ2NhdC4kbG86IGdldHRleHRQLmggZ2V0dGV4dC5oIGxvYWRpbmZvLmgKLS1kY2dldHRleHQuJGxvOiBnZXR0ZXh0UC5oIGdldHRleHQuaCBoYXNoLXN0cmluZy5oIGxvYWRpbmZvLmgKLSskKE9CSkVDVFMpOiAuLi9jb25maWcuaCBsaWJnbnVpbnRsLmgKLStiaW5kdGV4dGRvbS4kbG8gZGNnZXR0ZXh0LiRsbyBkY2lnZXR0ZXh0LiRsbyBkY25nZXR0ZXh0LiRsbyBkZ2V0dGV4dC4kbG8gZG5nZXR0ZXh0LiRsbyBmaW5kZG9tYWluLiRsbyBnZXR0ZXh0LiRsbyBpbnRsLWNvbXBhdC4kbG8gbG9hZG1zZ2NhdC4kbG8gbG9jYWxlYWxpYXMuJGxvIG5nZXR0ZXh0LiRsbyB0ZXh0ZG9tYWluLiRsbzogJChzcmNkaXIpL2dldHRleHRQLmggJChzcmNkaXIpL2dtby5oICQoc3JjZGlyKS9sb2FkaW5mby5oCi0rZGNpZ2V0dGV4dC4kbG8gbG9hZG1zZ2NhdC4kbG86ICQoc3JjZGlyKS9oYXNoLXN0cmluZy5oCi0rZXhwbG9kZW5hbWUuJGxvIGwxMG5mbGlzdC4kbG86ICQoc3JjZGlyKS9sb2FkaW5mby5oCi0rZGNpZ2V0dGV4dC4kbG8gbG9hZG1zZ2NhdC4kbG8gcGx1cmFsLiRsbyBwbHVyYWwtZXhwLiRsbzogJChzcmNkaXIpL3BsdXJhbC1leHAuaAotK2RjaWdldHRleHQuJGxvOiAkKHNyY2RpcikvZXZhbC1wbHVyYWwuaAotK2xvY2FsY2hhcnNldC4kbG86ICQoc3JjZGlyKS9sb2NhbGNoYXJzZXQuaAotK2xvY2FsZWFsaWFzLiRsbyBsb2NhbGNoYXJzZXQuJGxvIHJlbG9jYXRhYmxlLiRsbzogJChzcmNkaXIpL3JlbG9jYXRhYmxlLmgKLStwcmludGYuJGxvOiAkKHNyY2RpcikvcHJpbnRmLWFyZ3MuaCAkKHNyY2RpcikvcHJpbnRmLWFyZ3MuYyAkKHNyY2RpcikvcHJpbnRmLXBhcnNlLmggJChzcmNkaXIpL3dwcmludGYtcGFyc2UuaCAkKHNyY2RpcikveHNpemUuaCAkKHNyY2RpcikvcHJpbnRmLXBhcnNlLmMgJChzcmNkaXIpL3Zhc25wcmludGYuaCAkKHNyY2RpcikvdmFzbndwcmludGYuaCAkKHNyY2RpcikvdmFzbnByaW50Zi5jCi0gCi0gdGFnczogVEFHUwotIAotIFRBR1M6ICQoSEVBREVSUykgJChTT1VSQ0VTKQotIAloZXJlPWBwd2RgOyBjZCAkKHNyY2RpcikgJiYgZXRhZ3MgLW8gJCRoZXJlL1RBR1MgJChIRUFERVJTKSAkKFNPVVJDRVMpCi0gCi0rY3RhZ3M6IENUQUdTCi0rCi0rQ1RBR1M6ICQoSEVBREVSUykgJChTT1VSQ0VTKQotKwloZXJlPWBwd2RgOyBjZCAkKHNyY2RpcikgJiYgY3RhZ3MgLW8gJCRoZXJlL0NUQUdTICQoSEVBREVSUykgJChTT1VSQ0VTKQotKwotIGlkOiBJRAotIAotIElEOiAkKEhFQURFUlMpICQoU09VUkNFUykKLUBAIC0xNjYsMTIgKzQ0NCwxOSBAQAotIAotIAotIG1vc3RseWNsZWFuOgotLQlybSAtZiAqLmEgKi5vICoubG8gY29yZSBjb3JlLioKLSsJcm0gLWYgKi5hICoubGEgKi5vICoub2JqICoubG8gY29yZSBjb3JlLioKLSsJcm0gLWYgbGliZ251aW50bC5oIGxpYmludGwuaCBjaGFyc2V0LmFsaWFzIHJlZi1hZGQuc2VkIHJlZi1kZWwuc2VkCi0rCXJtIC1mIC1yIC5saWJzIF9saWJzCi0gCi0gY2xlYW46IG1vc3RseWNsZWFuCi0gCi0gZGlzdGNsZWFuOiBjbGVhbgotLQlybSAtZiBNYWtlZmlsZSBJRCBUQUdTIHBvMm1zZy5zZWQgcG8ydGJsLnNlZCBsaWJpbnRsLmgKLSsJcm0gLWYgTWFrZWZpbGUgSUQgVEFHUwotKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXJ1bnRpbWUiIHx8IHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKLSsJICBybSAtZiBDaGFuZ2VMb2cuaW5zdCAkKERJU1RGSUxFUy5ub3JtYWwpOyBcCi0rCWVsc2UgXAotKwkgIDogOyBcCi0rCWZpCi0gCi0gbWFpbnRhaW5lci1jbGVhbjogZGlzdGNsZWFuCi0gCUBlY2hvICJUaGlzIGNvbW1hbmQgaXMgaW50ZW5kZWQgZm9yIG1haW50YWluZXJzIHRvIHVzZTsiCi1AQCAtMTgxLDMzICs0NjYsMjcgQEAKLSAjIEdOVSBnZXR0ZXh0IG5lZWRzIG5vdCBjb250YWluIHRoZSBmaWxlIGBWRVJTSU9OJyBidXQgY29udGFpbnMgc29tZQotICMgb3RoZXIgZmlsZXMgd2hpY2ggc2hvdWxkIG5vdCBiZSBkaXN0cmlidXRlZCBpbiBvdGhlciBwYWNrYWdlcy4KLSBkaXN0ZGlyID0gLi4vJChQQUNLQUdFKS0kKFZFUlNJT04pLyQoc3ViZGlyKQotLWRpc3QgZGlzdGRpcjogTWFrZWZpbGUgJChESVNURklMRVMpCi0tCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gZ2V0dGV4dDsgdGhlbiBcCi0tCSAgYWRkaXRpb25hbD0iJChESVNURklMRVMuZ2V0dGV4dCkiOyBcCi0rZGlzdCBkaXN0ZGlyOiBNYWtlZmlsZQotKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCi0rCSAgOiA7IFwKLSAJZWxzZSBcCi0tCSAgYWRkaXRpb25hbD0iJChESVNURklMRVMubm9ybWFsKSI7IFwKLS0JZmk7IFwKLS0JZm9yIGZpbGUgaW4gJChESVNURklMRVMuY29tbW9uKSAkJGFkZGl0aW9uYWw7IGRvIFwKLS0JICBsbiAkKHNyY2RpcikvJCRmaWxlICQoZGlzdGRpcikgMj4gL2Rldi9udWxsIFwKLS0JICAgIHx8IGNwIC1wICQoc3JjZGlyKS8kJGZpbGUgJChkaXN0ZGlyKTsgXAotLQlkb25lCi0tCi0tZGlzdC1saWJjOgotLQl0YXIgemN2ZiBpbnRsLWdsaWJjLnRhci5neiAkKENPTVNSQ1MpICQoQ09NSERSUykgbGliaW50bC5oLmdsaWJjCi0tCi0tTWFrZWZpbGU6IE1ha2VmaWxlLmluIC4uL2NvbmZpZy5zdGF0dXMKLS0JY2QgLi4gXAotLQkgICYmIENPTkZJR19GSUxFUz0kKHN1YmRpcikvJEAgQ09ORklHX0hFQURFUlM9ICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cwotKwkgIGlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtcnVudGltZSI7IHRoZW4gXAotKwkgICAgYWRkaXRpb25hbD0iJChESVNURklMRVMuZ2V0dGV4dCkiOyBcCi0rCSAgZWxzZSBcCi0rCSAgICBhZGRpdGlvbmFsPSIkKERJU1RGSUxFUy5ub3JtYWwpIjsgXAotKwkgIGZpOyBcCi0rCSAgJChNQUtFKSAkKERJU1RGSUxFUy5jb21tb24pICQoRElTVEZJTEVTLmdlbmVyYXRlZCkgJCRhZGRpdGlvbmFsOyBcCi0rCSAgZm9yIGZpbGUgaW4gQ2hhbmdlTG9nICQoRElTVEZJTEVTLmNvbW1vbikgJChESVNURklMRVMuZ2VuZXJhdGVkKSAkJGFkZGl0aW9uYWw7IGRvIFwKLSsJICAgIGlmIHRlc3QgLWYgJCRmaWxlOyB0aGVuIGRpcj0uOyBlbHNlIGRpcj0kKHNyY2Rpcik7IGZpOyBcCi0rCSAgICBjcCAtcCAkJGRpci8kJGZpbGUgJChkaXN0ZGlyKTsgXAotKwkgIGRvbmU7IFwKLSsJZmkKLSAKLS0jIFRoZSBkZXBlbmRlbmN5IGZvciBpbnRsaC5pbnN0IGlzIGRpZmZlcmVudCBpbiBnZXR0ZXh0IGFuZCBhbGwgb3RoZXIKLS0jIHBhY2thZ2VzLiAgQmVjYXVzZSB3ZSBjYW5ub3QgeW91IEdOVSBtYWtlIGZlYXR1cmVzIHdlIGhhdmUgdG8gc29sdmUKLS0jIHRoZSBwcm9ibGVtIHdoaWxlIHJld3JpdGluZyBNYWtlZmlsZS5pbi4KLS1AR1RfWUVTQGludGxoLmluc3Q6IGludGxoLmluc3QuaW4gLi4vY29uZmlnLnN0YXR1cwotLUBHVF9ZRVNACWNkIC4uIFwKLS1AR1RfWUVTQAkmJiBDT05GSUdfRklMRVM9JChzdWJkaXIpLyRAIENPTkZJR19IRUFERVJTPSBcCi0tQEdUX1lFU0AJICAkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMKLS1AR1RfTk9ALlBIT05ZOiBpbnRsaC5pbnN0Ci0tQEdUX05PQGludGxoLmluc3Q6Ci0rTWFrZWZpbGU6ICQoc3JjZGlyKS9NYWtlZmlsZS5pbiAkKHRvcF9idWlsZGRpcikvY29uZmlnLnN0YXR1cwotKwljZCAkKHRvcF9idWlsZGRpcikgJiYgJChTSEVMTCkgLi9jb25maWcuc3RhdHVzCi0rIyBUaGlzIHdvdWxkIGJlIG1vcmUgZWZmaWNpZW50LCBidXQgZG9lc24ndCB3b3JrIGFueSBtb3JlIHdpdGggYXV0b2NvbmYtMi41NywKLSsjIHdoZW4gQUNfQ09ORklHX0ZJTEVTKFtpbnRsL01ha2VmaWxlOnNvbWVkaXIvTWFrZWZpbGUuaW5dKSBpcyB1c2VkLgotKyMJY2QgJCh0b3BfYnVpbGRkaXIpICYmIENPTkZJR19GSUxFUz0kKHN1YmRpcikvJEAgQ09ORklHX0hFQURFUlM9ICQoU0hFTEwpIC4vY29uZmlnLnN0YXR1cwotIAotICMgVGVsbCB2ZXJzaW9ucyBbMy41OSwzLjYzKSBvZiBHTlUgbWFrZSBub3QgdG8gZXhwb3J0IGFsbCB2YXJpYWJsZXMuCi0gIyBPdGhlcndpc2UgYSBzeXN0ZW0gbGltaXQgKGZvciBTeXNWIGF0IGxlYXN0KSBtYXkgYmUgZXhjZWVkZWQuCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvbmdldHRleHQuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9uZ2V0dGV4dC5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNTMzNzIxMDMyIC0wNDAwCi1AQCAtMCwwICsxLDY1IEBACi0rLyogSW1wbGVtZW50YXRpb24gb2YgbmdldHRleHQoMykgZnVuY3Rpb24uCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LCAxOTk3LCAyMDAwLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsjaWZkZWYgX0xJQkMKLSsjIGRlZmluZSBfX25lZWRfTlVMTAotKyMgaW5jbHVkZSA8c3RkZGVmLmg+Ci0rI2Vsc2UKLSsjIGluY2x1ZGUgPHN0ZGxpYi5oPgkJLyogSnVzdCBmb3IgTlVMTC4gICovCi0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgImdldHRleHRQLmgiCi0rI2lmZGVmIF9MSUJDCi0rIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0rI2Vsc2UKLSsjIGluY2x1ZGUgImxpYmdudWludGwuaCIKLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8bG9jYWxlLmg+Ci0rCi0rLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotKwotKy8qIE5hbWVzIGZvciB0aGUgbGliaW50bCBmdW5jdGlvbnMgYXJlIGEgcHJvYmxlbS4gIFRoZXkgbXVzdCBub3QgY2xhc2gKLSsgICB3aXRoIGV4aXN0aW5nIG5hbWVzIGFuZCB0aGV5IHNob3VsZCBmb2xsb3cgQU5TSSBDLiAgQnV0IHRoaXMgc291cmNlCi0rICAgY29kZSBpcyBhbHNvIHVzZWQgaW4gR05VIEMgTGlicmFyeSB3aGVyZSB0aGUgbmFtZXMgaGF2ZSBhIF9fCi0rICAgcHJlZml4LiAgU28gd2UgaGF2ZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KLSsjaWZkZWYgX0xJQkMKLSsjIGRlZmluZSBOR0VUVEVYVCBfX25nZXR0ZXh0Ci0rIyBkZWZpbmUgRENOR0VUVEVYVCBfX2RjbmdldHRleHQKLSsjZWxzZQotKyMgZGVmaW5lIE5HRVRURVhUIGxpYmludGxfbmdldHRleHQKLSsjIGRlZmluZSBEQ05HRVRURVhUIGxpYmludGxfZGNuZ2V0dGV4dAotKyNlbmRpZgotKwotKy8qIExvb2sgdXAgTVNHSUQgaW4gdGhlIGN1cnJlbnQgZGVmYXVsdCBtZXNzYWdlIGNhdGFsb2cgZm9yIHRoZSBjdXJyZW50Ci0rICAgTENfTUVTU0FHRVMgbG9jYWxlLiAgSWYgbm90IGZvdW5kLCByZXR1cm5zIE1TR0lEIGl0c2VsZiAodGhlIGRlZmF1bHQKLSsgICB0ZXh0KS4gICovCi0rY2hhciAqCi0rTkdFVFRFWFQgKGNvbnN0IGNoYXIgKm1zZ2lkMSwgY29uc3QgY2hhciAqbXNnaWQyLCB1bnNpZ25lZCBsb25nIGludCBuKQotK3sKLSsgIHJldHVybiBEQ05HRVRURVhUIChOVUxMLCBtc2dpZDEsIG1zZ2lkMiwgbiwgTENfTUVTU0FHRVMpOwotK30KLSsKLSsjaWZkZWYgX0xJQkMKLSsvKiBBbGlhcyBmb3IgZnVuY3Rpb24gbmFtZSBpbiBHTlUgQyBMaWJyYXJ5LiAgKi8KLSt3ZWFrX2FsaWFzIChfX25nZXR0ZXh0LCBuZ2V0dGV4dCk7Ci0rI2VuZGlmCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvb3MyY29tcGF0LmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvb3MyY29tcGF0LmMJMjAwNC0wOS0xMiAxNDo0MDozNC41Mzk3MjAxMjAgLTA0MDAKLUBAIC0wLDAgKzEsOTggQEAKLSsvKiBPUy8yIGNvbXBhdGliaWxpdHkgZnVuY3Rpb25zLgotKyAgIENvcHlyaWdodCAoQykgMjAwMS0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjZGVmaW5lIE9TMl9BV0FSRQotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rI2luY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2luY2x1ZGUgPHN5cy9wYXJhbS5oPgotKwotKy8qIEEgdmVyc2lvbiBvZiBnZXRlbnYoKSB0aGF0IHdvcmtzIGZyb20gRExMcyAqLwotK2V4dGVybiB1bnNpZ25lZCBsb25nIERvc1NjYW5FbnYgKGNvbnN0IHVuc2lnbmVkIGNoYXIgKnBzek5hbWUsIHVuc2lnbmVkIGNoYXIgKipwcHN6VmFsdWUpOwotKwotK2NoYXIgKgotK19ubF9nZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUpCi0rewotKyAgdW5zaWduZWQgY2hhciAqdmFsdWU7Ci0rICBpZiAoRG9zU2NhbkVudiAobmFtZSwgJnZhbHVlKSkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rICBlbHNlCi0rICAgIHJldHVybiB2YWx1ZTsKLSt9Ci0rCi0rLyogQSBmaXhlZCBzaXplIGJ1ZmZlci4gICovCi0rY2hhciBsaWJpbnRsX25sX2RlZmF1bHRfZGlybmFtZVtNQVhQQVRITEVOKzFdOwotKwotK2NoYXIgKl9ubG9zMl9saWJkaXIgPSBOVUxMOwotK2NoYXIgKl9ubG9zMl9sb2NhbGVhbGlhc3BhdGggPSBOVUxMOwotK2NoYXIgKl9ubG9zMl9sb2NhbGVkaXIgPSBOVUxMOwotKwotK3N0YXRpYyBfX2F0dHJpYnV0ZV9fKChjb25zdHJ1Y3RvcikpIHZvaWQKLStubG9zMl9pbml0aWFsaXplICgpCi0rewotKyAgY2hhciAqcm9vdCA9IGdldGVudiAoIlVOSVhST09UIik7Ci0rICBjaGFyICpnbnVsb2NhbGVkaXIgPSBnZXRlbnYgKCJHTlVMT0NBTEVESVIiKTsKLSsKLSsgIF9ubG9zMl9saWJkaXIgPSBnbnVsb2NhbGVkaXI7Ci0rICBpZiAoIV9ubG9zMl9saWJkaXIpCi0rICAgIHsKLSsgICAgICBpZiAocm9vdCkKLSsgICAgICAgIHsKLSsgICAgICAgICAgc2l6ZV90IHNsID0gc3RybGVuIChyb290KTsKLSsgICAgICAgICAgX25sb3MyX2xpYmRpciA9IChjaGFyICopIG1hbGxvYyAoc2wgKyBzdHJsZW4gKExJQkRJUikgKyAxKTsKLSsgICAgICAgICAgbWVtY3B5IChfbmxvczJfbGliZGlyLCByb290LCBzbCk7Ci0rICAgICAgICAgIG1lbWNweSAoX25sb3MyX2xpYmRpciArIHNsLCBMSUJESVIsIHN0cmxlbiAoTElCRElSKSArIDEpOwotKyAgICAgICAgfQotKyAgICAgIGVsc2UKLSsgICAgICAgIF9ubG9zMl9saWJkaXIgPSBMSUJESVI7Ci0rICAgIH0KLSsKLSsgIF9ubG9zMl9sb2NhbGVhbGlhc3BhdGggPSBnbnVsb2NhbGVkaXI7Ci0rICBpZiAoIV9ubG9zMl9sb2NhbGVhbGlhc3BhdGgpCi0rICAgIHsKLSsgICAgICBpZiAocm9vdCkKLSsgICAgICAgIHsKLSsgICAgICAgICAgc2l6ZV90IHNsID0gc3RybGVuIChyb290KTsKLSsgICAgICAgICAgX25sb3MyX2xvY2FsZWFsaWFzcGF0aCA9IChjaGFyICopIG1hbGxvYyAoc2wgKyBzdHJsZW4gKExPQ0FMRV9BTElBU19QQVRIKSArIDEpOwotKyAgICAgICAgICBtZW1jcHkgKF9ubG9zMl9sb2NhbGVhbGlhc3BhdGgsIHJvb3QsIHNsKTsKLSsgICAgICAgICAgbWVtY3B5IChfbmxvczJfbG9jYWxlYWxpYXNwYXRoICsgc2wsIExPQ0FMRV9BTElBU19QQVRILCBzdHJsZW4gKExPQ0FMRV9BTElBU19QQVRIKSArIDEpOwotKyAgICAgICAgfQotKyAgICAgZWxzZQotKyAgICAgICAgX25sb3MyX2xvY2FsZWFsaWFzcGF0aCA9IExPQ0FMRV9BTElBU19QQVRIOwotKyAgICB9Ci0rCi0rICBfbmxvczJfbG9jYWxlZGlyID0gZ251bG9jYWxlZGlyOwotKyAgaWYgKCFfbmxvczJfbG9jYWxlZGlyKQotKyAgICB7Ci0rICAgICAgaWYgKHJvb3QpCi0rICAgICAgICB7Ci0rICAgICAgICAgIHNpemVfdCBzbCA9IHN0cmxlbiAocm9vdCk7Ci0rICAgICAgICAgIF9ubG9zMl9sb2NhbGVkaXIgPSAoY2hhciAqKSBtYWxsb2MgKHNsICsgc3RybGVuIChMT0NBTEVESVIpICsgMSk7Ci0rICAgICAgICAgIG1lbWNweSAoX25sb3MyX2xvY2FsZWRpciwgcm9vdCwgc2wpOwotKyAgICAgICAgICBtZW1jcHkgKF9ubG9zMl9sb2NhbGVkaXIgKyBzbCwgTE9DQUxFRElSLCBzdHJsZW4gKExPQ0FMRURJUikgKyAxKTsKLSsgICAgICAgIH0KLSsgICAgICBlbHNlCi0rICAgICAgICBfbmxvczJfbG9jYWxlZGlyID0gTE9DQUxFRElSOwotKyAgICB9Ci0rCi0rICBpZiAoc3RybGVuIChfbmxvczJfbG9jYWxlZGlyKSA8PSBNQVhQQVRITEVOKQotKyAgICBzdHJjcHkgKGxpYmludGxfbmxfZGVmYXVsdF9kaXJuYW1lLCBfbmxvczJfbG9jYWxlZGlyKTsKLSt9Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvb3MyY29tcGF0LmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvb3MyY29tcGF0LmgJMjAwNC0wOS0xMiAxNDo0MDozNC41NDQ3MTkzNjAgLTA0MDAKLUBAIC0wLDAgKzEsNDYgQEAKLSsvKiBPUy8yIGNvbXBhdGliaWxpdHkgZGVmaW5lcy4KLSsgICBUaGlzIGZpbGUgaXMgaW50ZW5kZWQgdG8gYmUgaW5jbHVkZWQgZnJvbSBjb25maWcuaAotKyAgIENvcHlyaWdodCAoQykgMjAwMS0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsvKiBXaGVuIGluY2x1ZGVkIGZyb20gb3MyY29tcGF0Lmggd2UgbmVlZCBhbGwgdGhlIG9yaWdpbmFsIGRlZmluaXRpb25zICovCi0rI2lmbmRlZiBPUzJfQVdBUkUKLSsKLSsjdW5kZWYgTElCRElSCi0rI2RlZmluZSBMSUJESVIJCQlfbmxvczJfbGliZGlyCi0rZXh0ZXJuIGNoYXIgKl9ubG9zMl9saWJkaXI7Ci0rCi0rI3VuZGVmIExPQ0FMRURJUgotKyNkZWZpbmUgTE9DQUxFRElSCQlfbmxvczJfbG9jYWxlZGlyCi0rZXh0ZXJuIGNoYXIgKl9ubG9zMl9sb2NhbGVkaXI7Ci0rCi0rI3VuZGVmIExPQ0FMRV9BTElBU19QQVRICi0rI2RlZmluZSBMT0NBTEVfQUxJQVNfUEFUSAlfbmxvczJfbG9jYWxlYWxpYXNwYXRoCi0rZXh0ZXJuIGNoYXIgKl9ubG9zMl9sb2NhbGVhbGlhc3BhdGg7Ci0rCi0rI2VuZGlmCi0rCi0rI3VuZGVmIEhBVkVfU1RSQ0FTRUNNUAotKyNkZWZpbmUgSEFWRV9TVFJDQVNFQ01QIDEKLSsjZGVmaW5lIHN0cmNhc2VjbXAgc3RyaWNtcAotKyNkZWZpbmUgc3RybmNhc2VjbXAgc3RybmljbXAKLSsKLSsvKiBXZSBoYXZlIG91ciBvd24gZ2V0ZW52KCkgd2hpY2ggd29ya3MgZXZlbiBpZiBsaWJyYXJ5IGlzIGNvbXBpbGVkIGFzIERMTCAqLwotKyNkZWZpbmUgZ2V0ZW52IF9ubF9nZXRlbnYKLSsKLSsvKiBPbGRlciB2ZXJzaW9ucyBvZiBnZXR0ZXh0IHVzZWQgLTEgYXMgdGhlIHZhbHVlIG9mIExDX01FU1NBR0VTICovCi0rI2RlZmluZSBMQ19NRVNTQUdFU19DT01QQVQgKC0xKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL29zZGVwLmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvb3NkZXAuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjU1MDcxODQ0OCAtMDQwMAotQEAgLTAsMCArMSwyNCBAQAotKy8qIE9TIGRlcGVuZGVudCBwYXJ0cyBvZiBsaWJpbnRsLgotKyAgIENvcHlyaWdodCAoQykgMjAwMS0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWYgZGVmaW5lZCBfX0VNWF9fCi0rIyBpbmNsdWRlICJvczJjb21wYXQuYyIKLSsjZWxzZQotKy8qIEF2b2lkIEFJWCBjb21waWxlciB3YXJuaW5nLiAgKi8KLSt0eXBlZGVmIGludCBkdW1teTsKLSsjZW5kaWYKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9wbHVyYWwuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9wbHVyYWwuYwkyMDA0LTA5LTEyIDE0OjQwOjM2LjU3MTQxMTI1NiAtMDQwMAotQEAgLTAsMCArMSwxNDkwIEBACi0rLyogQSBCaXNvbiBwYXJzZXIsIG1hZGUgZnJvbSBwbHVyYWwueQotKyAgIGJ5IEdOVSBiaXNvbiAxLjM1LiAgKi8KLSsKLSsjZGVmaW5lIFlZQklTT04gMSAgLyogSWRlbnRpZnkgQmlzb24gb3V0cHV0LiAgKi8KLSsKLSsjZGVmaW5lIHl5cGFyc2UgX19nZXR0ZXh0cGFyc2UKLSsjZGVmaW5lIHl5bGV4IF9fZ2V0dGV4dGxleAotKyNkZWZpbmUgeXllcnJvciBfX2dldHRleHRlcnJvcgotKyNkZWZpbmUgeXlsdmFsIF9fZ2V0dGV4dGx2YWwKLSsjZGVmaW5lIHl5Y2hhciBfX2dldHRleHRjaGFyCi0rI2RlZmluZSB5eWRlYnVnIF9fZ2V0dGV4dGRlYnVnCi0rI2RlZmluZSB5eW5lcnJzIF9fZ2V0dGV4dG5lcnJzCi0rIyBkZWZpbmUJRVFVT1AyCTI1NwotKyMgZGVmaW5lCUNNUE9QMgkyNTgKLSsjIGRlZmluZQlBRERPUDIJMjU5Ci0rIyBkZWZpbmUJTVVMT1AyCTI2MAotKyMgZGVmaW5lCU5VTUJFUgkyNjEKLSsKLSsjbGluZSAxICJwbHVyYWwueSIKLSsKLSsvKiBFeHByZXNzaW9uIHBhcnNpbmcgZm9yIHBsdXJhbCBmb3JtIHNlbGVjdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMSwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAyMDAwLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsvKiBUaGUgYmlzb24gZ2VuZXJhdGVkIHBhcnNlciB1c2VzIGFsbG9jYS4gIEFJWCAzIGZvcmNlcyB1cyB0byBwdXQgdGhpcwotKyAgIGRlY2xhcmF0aW9uIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUuICBUaGUgZGVjbGFyYXRpb24gaW4gYmlzb24ncwotKyAgIHNrZWxldG9uIGZpbGUgY29tZXMgdG9vIGxhdGUuICBUaGlzIG11c3QgY29tZSBiZWZvcmUgPGNvbmZpZy5oPgotKyAgIGJlY2F1c2UgPGNvbmZpZy5oPiBtYXkgaW5jbHVkZSBhcmJpdHJhcnkgc3lzdGVtIGhlYWRlcnMuICAqLwotKyNpZiBkZWZpbmVkIF9BSVggJiYgIWRlZmluZWQgX19HTlVDX18KLSsgI3ByYWdtYSBhbGxvY2EKLSsjZW5kaWYKLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSAicGx1cmFsLWV4cC5oIgotKwotKy8qIFRoZSBtYWluIGZ1bmN0aW9uIGdlbmVyYXRlZCBieSB0aGUgcGFyc2VyIGlzIGNhbGxlZCBfX2dldHRleHRwYXJzZSwKLSsgICBidXQgd2Ugd2FudCBpdCB0byBiZSBjYWxsZWQgUExVUkFMX1BBUlNFLiAgKi8KLSsjaWZuZGVmIF9MSUJDCi0rIyBkZWZpbmUgX19nZXR0ZXh0cGFyc2UgUExVUkFMX1BBUlNFCi0rI2VuZGlmCi0rCi0rI2RlZmluZSBZWUxFWF9QQVJBTQkmKChzdHJ1Y3QgcGFyc2VfYXJncyAqKSBhcmcpLT5jcAotKyNkZWZpbmUgWVlQQVJTRV9QQVJBTQlhcmcKLSsKLSsjbGluZSA0OSAicGx1cmFsLnkiCi0rI2lmbmRlZiBZWVNUWVBFCi0rdHlwZWRlZiB1bmlvbiB7Ci0rICB1bnNpZ25lZCBsb25nIGludCBudW07Ci0rICBlbnVtIG9wZXJhdG9yIG9wOwotKyAgc3RydWN0IGV4cHJlc3Npb24gKmV4cDsKLSt9IHl5c3R5cGU7Ci0rIyBkZWZpbmUgWVlTVFlQRSB5eXN0eXBlCi0rIyBkZWZpbmUgWVlTVFlQRV9JU19UUklWSUFMIDEKLSsjZW5kaWYKLSsjbGluZSA1NSAicGx1cmFsLnkiCi0rCi0rLyogUHJvdG90eXBlcyBmb3IgbG9jYWwgZnVuY3Rpb25zLiAgKi8KLStzdGF0aWMgaW50IHl5bGV4IChZWVNUWVBFICpsdmFsLCBjb25zdCBjaGFyICoqcGV4cCk7Ci0rc3RhdGljIHZvaWQgeXllcnJvciAoY29uc3QgY2hhciAqc3RyKTsKLSsKLSsvKiBBbGxvY2F0aW9uIG9mIGV4cHJlc3Npb25zLiAgKi8KLSsKLStzdGF0aWMgc3RydWN0IGV4cHJlc3Npb24gKgotK25ld19leHAgKGludCBuYXJncywgZW51bSBvcGVyYXRvciBvcCwgc3RydWN0IGV4cHJlc3Npb24gKiBjb25zdCAqYXJncykKLSt7Ci0rICBpbnQgaTsKLSsgIHN0cnVjdCBleHByZXNzaW9uICpuZXdwOwotKwotKyAgLyogSWYgYW55IG9mIHRoZSBhcmd1bWVudCBjb3VsZCBub3QgYmUgbWFsbG9jJ2VkLCBqdXN0IHJldHVybiBOVUxMLiAgKi8KLSsgIGZvciAoaSA9IG5hcmdzIC0gMTsgaSA+PSAwOyBpLS0pCi0rICAgIGlmIChhcmdzW2ldID09IE5VTEwpCi0rICAgICAgZ290byBmYWlsOwotKwotKyAgLyogQWxsb2NhdGUgYSBuZXcgZXhwcmVzc2lvbi4gICovCi0rICBuZXdwID0gKHN0cnVjdCBleHByZXNzaW9uICopIG1hbGxvYyAoc2l6ZW9mICgqbmV3cCkpOwotKyAgaWYgKG5ld3AgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIG5ld3AtPm5hcmdzID0gbmFyZ3M7Ci0rICAgICAgbmV3cC0+b3BlcmF0aW9uID0gb3A7Ci0rICAgICAgZm9yIChpID0gbmFyZ3MgLSAxOyBpID49IDA7IGktLSkKLSsJbmV3cC0+dmFsLmFyZ3NbaV0gPSBhcmdzW2ldOwotKyAgICAgIHJldHVybiBuZXdwOwotKyAgICB9Ci0rCi0rIGZhaWw6Ci0rICBmb3IgKGkgPSBuYXJncyAtIDE7IGkgPj0gMDsgaS0tKQotKyAgICBGUkVFX0VYUFJFU1NJT04gKGFyZ3NbaV0pOwotKwotKyAgcmV0dXJuIE5VTEw7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgc3RydWN0IGV4cHJlc3Npb24gKgotK25ld19leHBfMCAoZW51bSBvcGVyYXRvciBvcCkKLSt7Ci0rICByZXR1cm4gbmV3X2V4cCAoMCwgb3AsIE5VTEwpOwotK30KLSsKLStzdGF0aWMgaW5saW5lIHN0cnVjdCBleHByZXNzaW9uICoKLStuZXdfZXhwXzEgKGVudW0gb3BlcmF0b3Igb3AsIHN0cnVjdCBleHByZXNzaW9uICpyaWdodCkKLSt7Ci0rICBzdHJ1Y3QgZXhwcmVzc2lvbiAqYXJnc1sxXTsKLSsKLSsgIGFyZ3NbMF0gPSByaWdodDsKLSsgIHJldHVybiBuZXdfZXhwICgxLCBvcCwgYXJncyk7Ci0rfQotKwotK3N0YXRpYyBzdHJ1Y3QgZXhwcmVzc2lvbiAqCi0rbmV3X2V4cF8yIChlbnVtIG9wZXJhdG9yIG9wLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqbGVmdCwgc3RydWN0IGV4cHJlc3Npb24gKnJpZ2h0KQotK3sKLSsgIHN0cnVjdCBleHByZXNzaW9uICphcmdzWzJdOwotKwotKyAgYXJnc1swXSA9IGxlZnQ7Ci0rICBhcmdzWzFdID0gcmlnaHQ7Ci0rICByZXR1cm4gbmV3X2V4cCAoMiwgb3AsIGFyZ3MpOwotK30KLSsKLStzdGF0aWMgaW5saW5lIHN0cnVjdCBleHByZXNzaW9uICoKLStuZXdfZXhwXzMgKGVudW0gb3BlcmF0b3Igb3AsIHN0cnVjdCBleHByZXNzaW9uICpiZXhwLAotKwkgICBzdHJ1Y3QgZXhwcmVzc2lvbiAqdGJyYW5jaCwgc3RydWN0IGV4cHJlc3Npb24gKmZicmFuY2gpCi0rewotKyAgc3RydWN0IGV4cHJlc3Npb24gKmFyZ3NbM107Ci0rCi0rICBhcmdzWzBdID0gYmV4cDsKLSsgIGFyZ3NbMV0gPSB0YnJhbmNoOwotKyAgYXJnc1syXSA9IGZicmFuY2g7Ci0rICByZXR1cm4gbmV3X2V4cCAoMywgb3AsIGFyZ3MpOwotK30KLSsKLSsjaWZuZGVmIFlZREVCVUcKLSsjIGRlZmluZSBZWURFQlVHIDAKLSsjZW5kaWYKLSsKLSsKLSsKLSsjZGVmaW5lCVlZRklOQUwJCTI3Ci0rI2RlZmluZQlZWUZMQUcJCS0zMjc2OAotKyNkZWZpbmUJWVlOVEJBU0UJMTYKLSsKLSsvKiBZWVRSQU5TTEFURShZWUxFWCkgLS0gQmlzb24gdG9rZW4gbnVtYmVyIGNvcnJlc3BvbmRpbmcgdG8gWVlMRVguICovCi0rI2RlZmluZSBZWVRSQU5TTEFURSh4KSAoKHVuc2lnbmVkKSh4KSA8PSAyNjEgPyB5eXRyYW5zbGF0ZVt4XSA6IDE4KQotKwotKy8qIFlZVFJBTlNMQVRFW1lZTEVYXSAtLSBCaXNvbiB0b2tlbiBudW1iZXIgY29ycmVzcG9uZGluZyB0byBZWUxFWC4gKi8KLStzdGF0aWMgY29uc3QgY2hhciB5eXRyYW5zbGF0ZVtdID0KLSt7Ci0rICAgICAgIDAsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgMTAsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgNSwgICAgIDIsCi0rICAgICAgMTQsICAgIDE1LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAxMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDMsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgMTMsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICA0LCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsCi0rICAgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDIsICAgICAyLCAgICAgMiwgICAgIDEsICAgICA2LCAgICAgNywgICAgIDgsCi0rICAgICAgIDksICAgIDExCi0rfTsKLSsKLSsjaWYgWVlERUJVRwotK3N0YXRpYyBjb25zdCBzaG9ydCB5eXByaHNbXSA9Ci0rewotKyAgICAgICAwLCAgICAgMCwgICAgIDIsICAgICA4LCAgICAxMiwgICAgMTYsICAgIDIwLCAgICAyNCwgICAgMjgsICAgIDMyLAotKyAgICAgIDM1LCAgICAzNywgICAgMzkKLSt9OwotK3N0YXRpYyBjb25zdCBzaG9ydCB5eXJoc1tdID0KLSt7Ci0rICAgICAgMTcsICAgICAwLCAgICAxNywgICAgIDMsICAgIDE3LCAgICAxMiwgICAgMTcsICAgICAwLCAgICAxNywgICAgIDQsCi0rICAgICAgMTcsICAgICAwLCAgICAxNywgICAgIDUsICAgIDE3LCAgICAgMCwgICAgMTcsICAgICA2LCAgICAxNywgICAgIDAsCi0rICAgICAgMTcsICAgICA3LCAgICAxNywgICAgIDAsICAgIDE3LCAgICAgOCwgICAgMTcsICAgICAwLCAgICAxNywgICAgIDksCi0rICAgICAgMTcsICAgICAwLCAgICAxMCwgICAgMTcsICAgICAwLCAgICAxMywgICAgIDAsICAgIDExLCAgICAgMCwgICAgMTQsCi0rICAgICAgMTcsICAgIDE1LCAgICAgMAotK307Ci0rCi0rI2VuZGlmCi0rCi0rI2lmIFlZREVCVUcKLSsvKiBZWVJMSU5FW1lZTl0gLS0gc291cmNlIGxpbmUgd2hlcmUgcnVsZSBudW1iZXIgWVlOIHdhcyBkZWZpbmVkLiAqLwotK3N0YXRpYyBjb25zdCBzaG9ydCB5eXJsaW5lW10gPQotK3sKLSsgICAgICAgMCwgICAxNTAsICAgMTU4LCAgIDE2MiwgICAxNjYsICAgMTcwLCAgIDE3NCwgICAxNzgsICAgMTgyLCAgIDE4NiwKLSsgICAgIDE5MCwgICAxOTQsICAgMTk5Ci0rfTsKLSsjZW5kaWYKLSsKLSsKLSsjaWYgKFlZREVCVUcpIHx8IGRlZmluZWQgWVlFUlJPUl9WRVJCT1NFCi0rCi0rLyogWVlUTkFNRVtUT0tFTl9OVU1dIC0tIFN0cmluZyBuYW1lIG9mIHRoZSB0b2tlbiBUT0tFTl9OVU0uICovCi0rc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHl5dG5hbWVbXSA9Ci0rewotKyAgIiQiLCAiZXJyb3IiLCAiJHVuZGVmaW5lZC4iLCAiJz8nIiwgIid8JyIsICInJiciLCAiRVFVT1AyIiwgIkNNUE9QMiIsIAotKyAgIkFERE9QMiIsICJNVUxPUDIiLCAiJyEnIiwgIk5VTUJFUiIsICInOiciLCAiJ24nIiwgIicoJyIsICInKSciLCAKLSsgICJzdGFydCIsICJleHAiLCAwCi0rfTsKLSsjZW5kaWYKLSsKLSsvKiBZWVIxW1lZTl0gLS0gU3ltYm9sIG51bWJlciBvZiBzeW1ib2wgdGhhdCBydWxlIFlZTiBkZXJpdmVzLiAqLwotK3N0YXRpYyBjb25zdCBzaG9ydCB5eXIxW10gPQotK3sKLSsgICAgICAgMCwgICAgMTYsICAgIDE3LCAgICAxNywgICAgMTcsICAgIDE3LCAgICAxNywgICAgMTcsICAgIDE3LCAgICAxNywKLSsgICAgICAxNywgICAgMTcsICAgIDE3Ci0rfTsKLSsKLSsvKiBZWVIyW1lZTl0gLS0gTnVtYmVyIG9mIHN5bWJvbHMgY29tcG9zaW5nIHJpZ2h0IGhhbmQgc2lkZSBvZiBydWxlIFlZTi4gKi8KLStzdGF0aWMgY29uc3Qgc2hvcnQgeXlyMltdID0KLSt7Ci0rICAgICAgIDAsICAgICAxLCAgICAgNSwgICAgIDMsICAgICAzLCAgICAgMywgICAgIDMsICAgICAzLCAgICAgMywgICAgIDIsCi0rICAgICAgIDEsICAgICAxLCAgICAgMwotK307Ci0rCi0rLyogWVlERUZBQ1RbU10gLS0gZGVmYXVsdCBydWxlIHRvIHJlZHVjZSB3aXRoIGluIHN0YXRlIFMgd2hlbiBZWVRBQkxFCi0rICAgZG9lc24ndCBzcGVjaWZ5IHNvbWV0aGluZyBlbHNlIHRvIGRvLiAgWmVybyBtZWFucyB0aGUgZGVmYXVsdCBpcyBhbgotKyAgIGVycm9yLiAqLwotK3N0YXRpYyBjb25zdCBzaG9ydCB5eWRlZmFjdFtdID0KLSt7Ci0rICAgICAgIDAsICAgICAwLCAgICAxMSwgICAgMTAsICAgICAwLCAgICAgMSwgICAgIDksICAgICAwLCAgICAgMCwgICAgIDAsCi0rICAgICAgIDAsICAgICAwLCAgICAgMCwgICAgIDAsICAgICAwLCAgICAxMiwgICAgIDAsICAgICAzLCAgICAgNCwgICAgIDUsCi0rICAgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDAsICAgICAyLCAgICAgMCwgICAgIDAsICAgICAwCi0rfTsKLSsKLStzdGF0aWMgY29uc3Qgc2hvcnQgeXlkZWZnb3RvW10gPQotK3sKLSsgICAgICAyNSwgICAgIDUKLSt9OwotKwotK3N0YXRpYyBjb25zdCBzaG9ydCB5eXBhY3RbXSA9Ci0rewotKyAgICAgIC05LCAgICAtOSwtMzI3NjgsLTMyNzY4LCAgICAtOSwgICAgMzQsLTMyNzY4LCAgICAxMSwgICAgLTksICAgIC05LAotKyAgICAgIC05LCAgICAtOSwgICAgLTksICAgIC05LCAgICAtOSwtMzI3NjgsICAgIDI0LCAgICAzOSwgICAgNDMsICAgIDE2LAotKyAgICAgIDI2LCAgICAtMywtMzI3NjgsICAgIC05LCAgICAzNCwgICAgMjEsICAgIDUzLC0zMjc2OAotK307Ci0rCi0rc3RhdGljIGNvbnN0IHNob3J0IHl5cGdvdG9bXSA9Ci0rewotKyAgLTMyNzY4LCAgICAtMQotK307Ci0rCi0rCi0rI2RlZmluZQlZWUxBU1QJCTUzCi0rCi0rCi0rc3RhdGljIGNvbnN0IHNob3J0IHl5dGFibGVbXSA9Ci0rewotKyAgICAgICA2LCAgICAgMSwgICAgIDIsICAgICA3LCAgICAgMywgICAgIDQsICAgIDE0LCAgICAxNiwgICAgMTcsICAgIDE4LAotKyAgICAgIDE5LCAgICAyMCwgICAgMjEsICAgIDIyLCAgICAgOCwgICAgIDksICAgIDEwLCAgICAxMSwgICAgMTIsICAgIDEzLAotKyAgICAgIDE0LCAgICAyNiwgICAgMjQsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDE1LCAgICAgOCwgICAgIDksICAgIDEwLAotKyAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxMywgICAgMTQsICAgIDIzLCAgICAgOCwgICAgIDksICAgIDEwLAotKyAgICAgIDExLCAgICAxMiwgICAgMTMsICAgIDE0LCAgICAxMCwgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgIDExLAotKyAgICAgIDEyLCAgICAxMywgICAgMTQsICAgIDI3Ci0rfTsKLSsKLStzdGF0aWMgY29uc3Qgc2hvcnQgeXljaGVja1tdID0KLSt7Ci0rICAgICAgIDEsICAgIDEwLCAgICAxMSwgICAgIDQsICAgIDEzLCAgICAxNCwgICAgIDksICAgICA4LCAgICAgOSwgICAgMTAsCi0rICAgICAgMTEsICAgIDEyLCAgICAxMywgICAgMTQsICAgICAzLCAgICAgNCwgICAgIDUsICAgICA2LCAgICAgNywgICAgIDgsCi0rICAgICAgIDksICAgICAwLCAgICAyMywgICAgIDcsICAgICA4LCAgICAgOSwgICAgMTUsICAgICAzLCAgICAgNCwgICAgIDUsCi0rICAgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgICA4LCAgICAgOSwgICAgMTIsICAgICAzLCAgICAgNCwgICAgIDUsCi0rICAgICAgIDYsICAgICA3LCAgICAgOCwgICAgIDksICAgICA1LCAgICAgNiwgICAgIDcsICAgICA4LCAgICAgOSwgICAgIDYsCi0rICAgICAgIDcsICAgICA4LCAgICAgOSwgICAgIDAKLSt9OwotKyNkZWZpbmUgWVlQVVJFIDEKLSsKLSsvKiAtKi1DLSotICBOb3RlIHNvbWUgY29tcGlsZXJzIGNob2tlIG9uIGNvbW1lbnRzIG9uIGAjbGluZScgbGluZXMuICAqLwotKyNsaW5lIDMgIi91c3IvbG9jYWwvc2hhcmUvYmlzb24vYmlzb24uc2ltcGxlIgotKwotKy8qIFNrZWxldG9uIG91dHB1dCBwYXJzZXIgZm9yIGJpc29uLAotKwotKyAgIENvcHlyaWdodCAoQykgMTk4NCwgMTk4OSwgMTk5MCwgMjAwMCwgMjAwMSwgMjAwMiBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5Ci0rICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLSsgICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQotKyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLAotKyAgIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLiAgKi8KLSsKLSsvKiBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uLCB3aGVuIHRoaXMgZmlsZSBpcyBjb3BpZWQgYnkgQmlzb24gaW50byBhCi0rICAgQmlzb24gb3V0cHV0IGZpbGUsIHlvdSBtYXkgdXNlIHRoYXQgb3V0cHV0IGZpbGUgd2l0aG91dCByZXN0cmljdGlvbi4KLSsgICBUaGlzIHNwZWNpYWwgZXhjZXB0aW9uIHdhcyBhZGRlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0rICAgaW4gdmVyc2lvbiAxLjI0IG9mIEJpc29uLiAgKi8KLSsKLSsvKiBUaGlzIGlzIHRoZSBwYXJzZXIgY29kZSB0aGF0IGlzIHdyaXR0ZW4gaW50byBlYWNoIGJpc29uIHBhcnNlciB3aGVuCi0rICAgdGhlICVzZW1hbnRpY19wYXJzZXIgZGVjbGFyYXRpb24gaXMgbm90IHNwZWNpZmllZCBpbiB0aGUgZ3JhbW1hci4KLSsgICBJdCB3YXMgd3JpdHRlbiBieSBSaWNoYXJkIFN0YWxsbWFuIGJ5IHNpbXBsaWZ5aW5nIHRoZSBoYWlyeSBwYXJzZXIKLSsgICB1c2VkIHdoZW4gJXNlbWFudGljX3BhcnNlciBpcyBzcGVjaWZpZWQuICAqLwotKwotKy8qIEFsbCBzeW1ib2xzIGRlZmluZWQgYmVsb3cgc2hvdWxkIGJlZ2luIHdpdGggeXkgb3IgWVksIHRvIGF2b2lkCi0rICAgaW5mcmluZ2luZyBvbiB1c2VyIG5hbWUgc3BhY2UuICBUaGlzIHNob3VsZCBiZSBkb25lIGV2ZW4gZm9yIGxvY2FsCi0rICAgdmFyaWFibGVzLCBhcyB0aGV5IG1pZ2h0IG90aGVyd2lzZSBiZSBleHBhbmRlZCBieSB1c2VyIG1hY3Jvcy4KLSsgICBUaGVyZSBhcmUgc29tZSB1bmF2b2lkYWJsZSBleGNlcHRpb25zIHdpdGhpbiBpbmNsdWRlIGZpbGVzIHRvCi0rICAgZGVmaW5lIG5lY2Vzc2FyeSBsaWJyYXJ5IHN5bWJvbHM7IHRoZXkgYXJlIG5vdGVkICJJTkZSSU5HRVMgT04KLSsgICBVU0VSIE5BTUUgU1BBQ0UiIGJlbG93LiAgKi8KLSsKLSsjaWYgISBkZWZpbmVkICh5eW92ZXJmbG93KSB8fCBkZWZpbmVkIChZWUVSUk9SX1ZFUkJPU0UpCi0rCi0rLyogVGhlIHBhcnNlciBpbnZva2VzIGFsbG9jYSBvciBtYWxsb2M7IGRlZmluZSB0aGUgbmVjZXNzYXJ5IHN5bWJvbHMuICAqLwotKwotKyMgaWYgWVlTVEFDS19VU0VfQUxMT0NBCi0rIyAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgYWxsb2NhCi0rIyBlbHNlCi0rIyAgaWZuZGVmIFlZU1RBQ0tfVVNFX0FMTE9DQQotKyMgICBpZiBkZWZpbmVkIChhbGxvY2EpIHx8IGRlZmluZWQgKF9BTExPQ0FfSCkKLSsjICAgIGRlZmluZSBZWVNUQUNLX0FMTE9DIGFsbG9jYQotKyMgICBlbHNlCi0rIyAgICBpZmRlZiBfX0dOVUNfXwotKyMgICAgIGRlZmluZSBZWVNUQUNLX0FMTE9DIF9fYnVpbHRpbl9hbGxvY2EKLSsjICAgIGVuZGlmCi0rIyAgIGVuZGlmCi0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rCi0rIyBpZmRlZiBZWVNUQUNLX0FMTE9DCi0rICAgLyogUGFjaWZ5IEdDQydzIGBlbXB0eSBpZi1ib2R5JyB3YXJuaW5nLiAqLwotKyMgIGRlZmluZSBZWVNUQUNLX0ZSRUUoUHRyKSBkbyB7IC8qIGVtcHR5ICovOyB9IHdoaWxlICgwKQotKyMgZWxzZQotKyMgIGlmIGRlZmluZWQgKF9fU1REQ19fKSB8fCBkZWZpbmVkIChfX2NwbHVzcGx1cykKLSsjICAgaW5jbHVkZSA8c3RkbGliLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KLSsjICAgZGVmaW5lIFlZU0laRV9UIHNpemVfdAotKyMgIGVuZGlmCi0rIyAgZGVmaW5lIFlZU1RBQ0tfQUxMT0MgbWFsbG9jCi0rIyAgZGVmaW5lIFlZU1RBQ0tfRlJFRSBmcmVlCi0rIyBlbmRpZgotKyNlbmRpZiAvKiAhIGRlZmluZWQgKHl5b3ZlcmZsb3cpIHx8IGRlZmluZWQgKFlZRVJST1JfVkVSQk9TRSkgKi8KLSsKLSsKLSsjaWYgKCEgZGVmaW5lZCAoeXlvdmVyZmxvdykgXAotKyAgICAgJiYgKCEgZGVmaW5lZCAoX19jcGx1c3BsdXMpIFwKLSsJIHx8IChZWUxUWVBFX0lTX1RSSVZJQUwgJiYgWVlTVFlQRV9JU19UUklWSUFMKSkpCi0rCi0rLyogQSB0eXBlIHRoYXQgaXMgcHJvcGVybHkgYWxpZ25lZCBmb3IgYW55IHN0YWNrIG1lbWJlci4gICovCi0rdW5pb24geXlhbGxvYwotK3sKLSsgIHNob3J0IHl5c3M7Ci0rICBZWVNUWVBFIHl5dnM7Ci0rIyBpZiBZWUxTUF9ORUVERUQKLSsgIFlZTFRZUEUgeXlsczsKLSsjIGVuZGlmCi0rfTsKLSsKLSsvKiBUaGUgc2l6ZSBvZiB0aGUgbWF4aW11bSBnYXAgYmV0d2VlbiBvbmUgYWxpZ25lZCBzdGFjayBhbmQgdGhlIG5leHQuICAqLwotKyMgZGVmaW5lIFlZU1RBQ0tfR0FQX01BWCAoc2l6ZW9mICh1bmlvbiB5eWFsbG9jKSAtIDEpCi0rCi0rLyogVGhlIHNpemUgb2YgYW4gYXJyYXkgbGFyZ2UgdG8gZW5vdWdoIHRvIGhvbGQgYWxsIHN0YWNrcywgZWFjaCB3aXRoCi0rICAgTiBlbGVtZW50cy4gICovCi0rIyBpZiBZWUxTUF9ORUVERUQKLSsjICBkZWZpbmUgWVlTVEFDS19CWVRFUyhOKSBcCi0rICAgICAoKE4pICogKHNpemVvZiAoc2hvcnQpICsgc2l6ZW9mIChZWVNUWVBFKSArIHNpemVvZiAoWVlMVFlQRSkpCVwKLSsgICAgICArIDIgKiBZWVNUQUNLX0dBUF9NQVgpCi0rIyBlbHNlCi0rIyAgZGVmaW5lIFlZU1RBQ0tfQllURVMoTikgXAotKyAgICAgKChOKSAqIChzaXplb2YgKHNob3J0KSArIHNpemVvZiAoWVlTVFlQRSkpCQkJCVwKLSsgICAgICArIFlZU1RBQ0tfR0FQX01BWCkKLSsjIGVuZGlmCi0rCi0rLyogQ29weSBDT1VOVCBvYmplY3RzIGZyb20gRlJPTSB0byBUTy4gIFRoZSBzb3VyY2UgYW5kIGRlc3RpbmF0aW9uIGRvCi0rICAgbm90IG92ZXJsYXAuICAqLwotKyMgaWZuZGVmIFlZQ09QWQotKyMgIGlmIDEgPCBfX0dOVUNfXwotKyMgICBkZWZpbmUgWVlDT1BZKFRvLCBGcm9tLCBDb3VudCkgXAotKyAgICAgIF9fYnVpbHRpbl9tZW1jcHkgKFRvLCBGcm9tLCAoQ291bnQpICogc2l6ZW9mICgqKEZyb20pKSkKLSsjICBlbHNlCi0rIyAgIGRlZmluZSBZWUNPUFkoVG8sIEZyb20sIENvdW50KQkJXAotKyAgICAgIGRvCQkJCQlcCi0rCXsJCQkJCVwKLSsJICByZWdpc3RlciBZWVNJWkVfVCB5eWk7CQlcCi0rCSAgZm9yICh5eWkgPSAwOyB5eWkgPCAoQ291bnQpOyB5eWkrKykJXAotKwkgICAgKFRvKVt5eWldID0gKEZyb20pW3l5aV07CQlcCi0rCX0JCQkJCVwKLSsgICAgICB3aGlsZSAoMCkKLSsjICBlbmRpZgotKyMgZW5kaWYKLSsKLSsvKiBSZWxvY2F0ZSBTVEFDSyBmcm9tIGl0cyBvbGQgbG9jYXRpb24gdG8gdGhlIG5ldyBvbmUuICBUaGUKLSsgICBsb2NhbCB2YXJpYWJsZXMgWVlTSVpFIGFuZCBZWVNUQUNLU0laRSBnaXZlIHRoZSBvbGQgYW5kIG5ldyBudW1iZXIgb2YKLSsgICBlbGVtZW50cyBpbiB0aGUgc3RhY2ssIGFuZCBZWVBUUiBnaXZlcyB0aGUgbmV3IGxvY2F0aW9uIG9mIHRoZQotKyAgIHN0YWNrLiAgQWR2YW5jZSBZWVBUUiB0byBhIHByb3Blcmx5IGFsaWduZWQgbG9jYXRpb24gZm9yIHRoZSBuZXh0Ci0rICAgc3RhY2suICAqLwotKyMgZGVmaW5lIFlZU1RBQ0tfUkVMT0NBVEUoU3RhY2spCQkJCQlcCi0rICAgIGRvCQkJCQkJCQkJXAotKyAgICAgIHsJCQkJCQkJCQlcCi0rCVlZU0laRV9UIHl5bmV3Ynl0ZXM7CQkJCQkJXAotKwlZWUNPUFkgKCZ5eXB0ci0+U3RhY2ssIFN0YWNrLCB5eXNpemUpOwkJCQlcCi0rCVN0YWNrID0gJnl5cHRyLT5TdGFjazsJCQkJCQlcCi0rCXl5bmV3Ynl0ZXMgPSB5eXN0YWNrc2l6ZSAqIHNpemVvZiAoKlN0YWNrKSArIFlZU1RBQ0tfR0FQX01BWDsJXAotKwl5eXB0ciArPSB5eW5ld2J5dGVzIC8gc2l6ZW9mICgqeXlwdHIpOwkJCQlcCi0rICAgICAgfQkJCQkJCQkJCVwKLSsgICAgd2hpbGUgKDApCi0rCi0rI2VuZGlmCi0rCi0rCi0rI2lmICEgZGVmaW5lZCAoWVlTSVpFX1QpICYmIGRlZmluZWQgKF9fU0laRV9UWVBFX18pCi0rIyBkZWZpbmUgWVlTSVpFX1QgX19TSVpFX1RZUEVfXwotKyNlbmRpZgotKyNpZiAhIGRlZmluZWQgKFlZU0laRV9UKSAmJiBkZWZpbmVkIChzaXplX3QpCi0rIyBkZWZpbmUgWVlTSVpFX1Qgc2l6ZV90Ci0rI2VuZGlmCi0rI2lmICEgZGVmaW5lZCAoWVlTSVpFX1QpCi0rIyBpZiBkZWZpbmVkIChfX1NURENfXykgfHwgZGVmaW5lZCAoX19jcGx1c3BsdXMpCi0rIyAgaW5jbHVkZSA8c3RkZGVmLmg+IC8qIElORlJJTkdFUyBPTiBVU0VSIE5BTUUgU1BBQ0UgKi8KLSsjICBkZWZpbmUgWVlTSVpFX1Qgc2l6ZV90Ci0rIyBlbmRpZgotKyNlbmRpZgotKyNpZiAhIGRlZmluZWQgKFlZU0laRV9UKQotKyMgZGVmaW5lIFlZU0laRV9UIHVuc2lnbmVkIGludAotKyNlbmRpZgotKwotKyNkZWZpbmUgeXllcnJvawkJKHl5ZXJyc3RhdHVzID0gMCkKLSsjZGVmaW5lIHl5Y2xlYXJpbgkoeXljaGFyID0gWVlFTVBUWSkKLSsjZGVmaW5lIFlZRU1QVFkJCS0yCi0rI2RlZmluZSBZWUVPRgkJMAotKyNkZWZpbmUgWVlBQ0NFUFQJZ290byB5eWFjY2VwdGxhYgotKyNkZWZpbmUgWVlBQk9SVCAJZ290byB5eWFib3J0bGFiCi0rI2RlZmluZSBZWUVSUk9SCQlnb3RvIHl5ZXJybGFiMQotKy8qIExpa2UgWVlFUlJPUiBleGNlcHQgZG8gY2FsbCB5eWVycm9yLiAgVGhpcyByZW1haW5zIGhlcmUgdGVtcG9yYXJpbHkKLSsgICB0byBlYXNlIHRoZSB0cmFuc2l0aW9uIHRvIHRoZSBuZXcgbWVhbmluZyBvZiBZWUVSUk9SLCBmb3IgR0NDLgotKyAgIE9uY2UgR0NDIHZlcnNpb24gMiBoYXMgc3VwcGxhbnRlZCB2ZXJzaW9uIDEsIHRoaXMgY2FuIGdvLiAgKi8KLSsjZGVmaW5lIFlZRkFJTAkJZ290byB5eWVycmxhYgotKyNkZWZpbmUgWVlSRUNPVkVSSU5HKCkgICghIXl5ZXJyc3RhdHVzKQotKyNkZWZpbmUgWVlCQUNLVVAoVG9rZW4sIFZhbHVlKQkJCQkJXAotK2RvCQkJCQkJCQlcCi0rICBpZiAoeXljaGFyID09IFlZRU1QVFkgJiYgeXlsZW4gPT0gMSkJCQkJXAotKyAgICB7CQkJCQkJCQlcCi0rICAgICAgeXljaGFyID0gKFRva2VuKTsJCQkJCQlcCi0rICAgICAgeXlsdmFsID0gKFZhbHVlKTsJCQkJCQlcCi0rICAgICAgeXljaGFyMSA9IFlZVFJBTlNMQVRFICh5eWNoYXIpOwkJCQlcCi0rICAgICAgWVlQT1BTVEFDSzsJCQkJCQlcCi0rICAgICAgZ290byB5eWJhY2t1cDsJCQkJCQlcCi0rICAgIH0JCQkJCQkJCVwKLSsgIGVsc2UJCQkJCQkJCVwKLSsgICAgeyAJCQkJCQkJCVwKLSsgICAgICB5eWVycm9yICgic3ludGF4IGVycm9yOiBjYW5ub3QgYmFjayB1cCIpOwkJCVwKLSsgICAgICBZWUVSUk9SOwkJCQkJCQlcCi0rICAgIH0JCQkJCQkJCVwKLSt3aGlsZSAoMCkKLSsKLSsjZGVmaW5lIFlZVEVSUk9SCTEKLSsjZGVmaW5lIFlZRVJSQ09ERQkyNTYKLSsKLSsKLSsvKiBZWUxMT0NfREVGQVVMVCAtLSBDb21wdXRlIHRoZSBkZWZhdWx0IGxvY2F0aW9uIChiZWZvcmUgdGhlIGFjdGlvbnMKLSsgICBhcmUgcnVuKS4KLSsKLSsgICBXaGVuIFlZTExPQ19ERUZBVUxUIGlzIHJ1biwgQ1VSUkVOVCBpcyBzZXQgdGhlIGxvY2F0aW9uIG9mIHRoZQotKyAgIGZpcnN0IHRva2VuLiAgQnkgZGVmYXVsdCwgdG8gaW1wbGVtZW50IHN1cHBvcnQgZm9yIHJhbmdlcywgZXh0ZW5kCi0rICAgaXRzIHJhbmdlIHRvIHRoZSBsYXN0IHN5bWJvbC4gICovCi0rCi0rI2lmbmRlZiBZWUxMT0NfREVGQVVMVAotKyMgZGVmaW5lIFlZTExPQ19ERUZBVUxUKEN1cnJlbnQsIFJocywgTikgICAgICAgCVwKLSsgICBDdXJyZW50Lmxhc3RfbGluZSAgID0gUmhzW05dLmxhc3RfbGluZTsJXAotKyAgIEN1cnJlbnQubGFzdF9jb2x1bW4gPSBSaHNbTl0ubGFzdF9jb2x1bW47Ci0rI2VuZGlmCi0rCi0rCi0rLyogWVlMRVggLS0gY2FsbGluZyBgeXlsZXgnIHdpdGggdGhlIHJpZ2h0IGFyZ3VtZW50cy4gICovCi0rCi0rI2lmIFlZUFVSRQotKyMgaWYgWVlMU1BfTkVFREVECi0rIyAgaWZkZWYgWVlMRVhfUEFSQU0KLSsjICAgZGVmaW5lIFlZTEVYCQl5eWxleCAoJnl5bHZhbCwgJnl5bGxvYywgWVlMRVhfUEFSQU0pCi0rIyAgZWxzZQotKyMgICBkZWZpbmUgWVlMRVgJCXl5bGV4ICgmeXlsdmFsLCAmeXlsbG9jKQotKyMgIGVuZGlmCi0rIyBlbHNlIC8qICFZWUxTUF9ORUVERUQgKi8KLSsjICBpZmRlZiBZWUxFWF9QQVJBTQotKyMgICBkZWZpbmUgWVlMRVgJCXl5bGV4ICgmeXlsdmFsLCBZWUxFWF9QQVJBTSkKLSsjICBlbHNlCi0rIyAgIGRlZmluZSBZWUxFWAkJeXlsZXggKCZ5eWx2YWwpCi0rIyAgZW5kaWYKLSsjIGVuZGlmIC8qICFZWUxTUF9ORUVERUQgKi8KLSsjZWxzZSAvKiAhWVlQVVJFICovCi0rIyBkZWZpbmUgWVlMRVgJCQl5eWxleCAoKQotKyNlbmRpZiAvKiAhWVlQVVJFICovCi0rCi0rCi0rLyogRW5hYmxlIGRlYnVnZ2luZyBpZiByZXF1ZXN0ZWQuICAqLwotKyNpZiBZWURFQlVHCi0rCi0rIyBpZm5kZWYgWVlGUFJJTlRGCi0rIyAgaW5jbHVkZSA8c3RkaW8uaD4gLyogSU5GUklOR0VTIE9OIFVTRVIgTkFNRSBTUEFDRSAqLwotKyMgIGRlZmluZSBZWUZQUklOVEYgZnByaW50ZgotKyMgZW5kaWYKLSsKLSsjIGRlZmluZSBZWURQUklOVEYoQXJncykJCQlcCi0rZG8gewkJCQkJCVwKLSsgIGlmICh5eWRlYnVnKQkJCQkJXAotKyAgICBZWUZQUklOVEYgQXJnczsJCQkJXAotK30gd2hpbGUgKDApCi0rLyogTm9uemVybyBtZWFucyBwcmludCBwYXJzZSB0cmFjZS4gIEl0IGlzIGxlZnQgdW5pbml0aWFsaXplZCBzbyB0aGF0Ci0rICAgbXVsdGlwbGUgcGFyc2VycyBjYW4gY29leGlzdC4gICovCi0raW50IHl5ZGVidWc7Ci0rI2Vsc2UgLyogIVlZREVCVUcgKi8KLSsjIGRlZmluZSBZWURQUklOVEYoQXJncykKLSsjZW5kaWYgLyogIVlZREVCVUcgKi8KLSsKLSsvKiBZWUlOSVRERVBUSCAtLSBpbml0aWFsIHNpemUgb2YgdGhlIHBhcnNlcidzIHN0YWNrcy4gICovCi0rI2lmbmRlZglZWUlOSVRERVBUSAotKyMgZGVmaW5lIFlZSU5JVERFUFRIIDIwMAotKyNlbmRpZgotKwotKy8qIFlZTUFYREVQVEggLS0gbWF4aW11bSBzaXplIHRoZSBzdGFja3MgY2FuIGdyb3cgdG8gKGVmZmVjdGl2ZSBvbmx5Ci0rICAgaWYgdGhlIGJ1aWx0LWluIHN0YWNrIGV4dGVuc2lvbiBtZXRob2QgaXMgdXNlZCkuCi0rCi0rICAgRG8gbm90IG1ha2UgdGhpcyB2YWx1ZSB0b28gbGFyZ2U7IHRoZSByZXN1bHRzIGFyZSB1bmRlZmluZWQgaWYKLSsgICBTSVpFX01BWCA8IFlZU1RBQ0tfQllURVMgKFlZTUFYREVQVEgpCi0rICAgZXZhbHVhdGVkIHdpdGggaW5maW5pdGUtcHJlY2lzaW9uIGludGVnZXIgYXJpdGhtZXRpYy4gICovCi0rCi0rI2lmIFlZTUFYREVQVEggPT0gMAotKyMgdW5kZWYgWVlNQVhERVBUSAotKyNlbmRpZgotKwotKyNpZm5kZWYgWVlNQVhERVBUSAotKyMgZGVmaW5lIFlZTUFYREVQVEggMTAwMDAKLSsjZW5kaWYKLSsMCi0rI2lmZGVmIFlZRVJST1JfVkVSQk9TRQotKwotKyMgaWZuZGVmIHl5c3RybGVuCi0rIyAgaWYgZGVmaW5lZCAoX19HTElCQ19fKSAmJiBkZWZpbmVkIChfU1RSSU5HX0gpCi0rIyAgIGRlZmluZSB5eXN0cmxlbiBzdHJsZW4KLSsjICBlbHNlCi0rLyogUmV0dXJuIHRoZSBsZW5ndGggb2YgWVlTVFIuICAqLwotK3N0YXRpYyBZWVNJWkVfVAotKyMgICBpZiBkZWZpbmVkIChfX1NURENfXykgfHwgZGVmaW5lZCAoX19jcGx1c3BsdXMpCi0reXlzdHJsZW4gKGNvbnN0IGNoYXIgKnl5c3RyKQotKyMgICBlbHNlCi0reXlzdHJsZW4gKHl5c3RyKQotKyAgICAgY29uc3QgY2hhciAqeXlzdHI7Ci0rIyAgIGVuZGlmCi0rewotKyAgcmVnaXN0ZXIgY29uc3QgY2hhciAqeXlzID0geXlzdHI7Ci0rCi0rICB3aGlsZSAoKnl5cysrICE9ICdcMCcpCi0rICAgIGNvbnRpbnVlOwotKwotKyAgcmV0dXJuIHl5cyAtIHl5c3RyIC0gMTsKLSt9Ci0rIyAgZW5kaWYKLSsjIGVuZGlmCi0rCi0rIyBpZm5kZWYgeXlzdHBjcHkKLSsjICBpZiBkZWZpbmVkIChfX0dMSUJDX18pICYmIGRlZmluZWQgKF9TVFJJTkdfSCkgJiYgZGVmaW5lZCAoX0dOVV9TT1VSQ0UpCi0rIyAgIGRlZmluZSB5eXN0cGNweSBzdHBjcHkKLSsjICBlbHNlCi0rLyogQ29weSBZWVNSQyB0byBZWURFU1QsIHJldHVybmluZyB0aGUgYWRkcmVzcyBvZiB0aGUgdGVybWluYXRpbmcgJ1wwJyBpbgotKyAgIFlZREVTVC4gICovCi0rc3RhdGljIGNoYXIgKgotKyMgICBpZiBkZWZpbmVkIChfX1NURENfXykgfHwgZGVmaW5lZCAoX19jcGx1c3BsdXMpCi0reXlzdHBjcHkgKGNoYXIgKnl5ZGVzdCwgY29uc3QgY2hhciAqeXlzcmMpCi0rIyAgIGVsc2UKLSt5eXN0cGNweSAoeXlkZXN0LCB5eXNyYykKLSsgICAgIGNoYXIgKnl5ZGVzdDsKLSsgICAgIGNvbnN0IGNoYXIgKnl5c3JjOwotKyMgICBlbmRpZgotK3sKLSsgIHJlZ2lzdGVyIGNoYXIgKnl5ZCA9IHl5ZGVzdDsKLSsgIHJlZ2lzdGVyIGNvbnN0IGNoYXIgKnl5cyA9IHl5c3JjOwotKwotKyAgd2hpbGUgKCgqeXlkKysgPSAqeXlzKyspICE9ICdcMCcpCi0rICAgIGNvbnRpbnVlOwotKwotKyAgcmV0dXJuIHl5ZCAtIDE7Ci0rfQotKyMgIGVuZGlmCi0rIyBlbmRpZgotKyNlbmRpZgotKwwKLSsjbGluZSAzMTUgIi91c3IvbG9jYWwvc2hhcmUvYmlzb24vYmlzb24uc2ltcGxlIgotKwotKwotKy8qIFRoZSB1c2VyIGNhbiBkZWZpbmUgWVlQQVJTRV9QQVJBTSBhcyB0aGUgbmFtZSBvZiBhbiBhcmd1bWVudCB0byBiZSBwYXNzZWQKLSsgICBpbnRvIHl5cGFyc2UuICBUaGUgYXJndW1lbnQgc2hvdWxkIGhhdmUgdHlwZSB2b2lkICouCi0rICAgSXQgc2hvdWxkIGFjdHVhbGx5IHBvaW50IHRvIGFuIG9iamVjdC4KLSsgICBHcmFtbWFyIGFjdGlvbnMgY2FuIGFjY2VzcyB0aGUgdmFyaWFibGUgYnkgY2FzdGluZyBpdAotKyAgIHRvIHRoZSBwcm9wZXIgcG9pbnRlciB0eXBlLiAgKi8KLSsKLSsjaWZkZWYgWVlQQVJTRV9QQVJBTQotKyMgaWYgZGVmaW5lZCAoX19TVERDX18pIHx8IGRlZmluZWQgKF9fY3BsdXNwbHVzKQotKyMgIGRlZmluZSBZWVBBUlNFX1BBUkFNX0FSRyB2b2lkICpZWVBBUlNFX1BBUkFNCi0rIyAgZGVmaW5lIFlZUEFSU0VfUEFSQU1fREVDTAotKyMgZWxzZQotKyMgIGRlZmluZSBZWVBBUlNFX1BBUkFNX0FSRyBZWVBBUlNFX1BBUkFNCi0rIyAgZGVmaW5lIFlZUEFSU0VfUEFSQU1fREVDTCB2b2lkICpZWVBBUlNFX1BBUkFNOwotKyMgZW5kaWYKLSsjZWxzZSAvKiAhWVlQQVJTRV9QQVJBTSAqLwotKyMgZGVmaW5lIFlZUEFSU0VfUEFSQU1fQVJHCi0rIyBkZWZpbmUgWVlQQVJTRV9QQVJBTV9ERUNMCi0rI2VuZGlmIC8qICFZWVBBUlNFX1BBUkFNICovCi0rCi0rLyogUHJldmVudCB3YXJuaW5nIGlmIC1Xc3RyaWN0LXByb3RvdHlwZXMuICAqLwotKyNpZmRlZiBfX0dOVUNfXwotKyMgaWZkZWYgWVlQQVJTRV9QQVJBTQotK2ludCB5eXBhcnNlICh2b2lkICopOwotKyMgZWxzZQotK2ludCB5eXBhcnNlICh2b2lkKTsKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rLyogWVlfREVDTF9WQVJJQUJMRVMgLS0gZGVwZW5kaW5nIHdoZXRoZXIgd2UgdXNlIGEgcHVyZSBwYXJzZXIsCi0rICAgdmFyaWFibGVzIGFyZSBnbG9iYWwsIG9yIGxvY2FsIHRvIFlZUEFSU0UuICAqLwotKwotKyNkZWZpbmUgWVlfREVDTF9OT05fTFNQX1ZBUklBQkxFUwkJCVwKLSsvKiBUaGUgbG9va2FoZWFkIHN5bWJvbC4gICovCQkJCVwKLStpbnQgeXljaGFyOwkJCQkJCVwKLSsJCQkJCQkJXAotKy8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBvZiB0aGUgbG9va2FoZWFkIHN5bWJvbC4gKi8JXAotK1lZU1RZUEUgeXlsdmFsOwkJCQkJCVwKLSsJCQkJCQkJXAotKy8qIE51bWJlciBvZiBwYXJzZSBlcnJvcnMgc28gZmFyLiAgKi8JCQlcCi0raW50IHl5bmVycnM7Ci0rCi0rI2lmIFlZTFNQX05FRURFRAotKyMgZGVmaW5lIFlZX0RFQ0xfVkFSSUFCTEVTCQkJXAotK1lZX0RFQ0xfTk9OX0xTUF9WQVJJQUJMRVMJCQlcCi0rCQkJCQkJXAotKy8qIExvY2F0aW9uIGRhdGEgZm9yIHRoZSBsb29rYWhlYWQgc3ltYm9sLiAgKi8JXAotK1lZTFRZUEUgeXlsbG9jOwotKyNlbHNlCi0rIyBkZWZpbmUgWVlfREVDTF9WQVJJQUJMRVMJCQlcCi0rWVlfREVDTF9OT05fTFNQX1ZBUklBQkxFUwotKyNlbmRpZgotKwotKwotKy8qIElmIG5vbnJlZW50cmFudCwgZ2VuZXJhdGUgdGhlIHZhcmlhYmxlcyBoZXJlLiAqLwotKwotKyNpZiAhWVlQVVJFCi0rWVlfREVDTF9WQVJJQUJMRVMKLSsjZW5kaWYgIC8qICFZWVBVUkUgKi8KLSsKLStpbnQKLSt5eXBhcnNlIChZWVBBUlNFX1BBUkFNX0FSRykKLSsgICAgIFlZUEFSU0VfUEFSQU1fREVDTAotK3sKLSsgIC8qIElmIHJlZW50cmFudCwgZ2VuZXJhdGUgdGhlIHZhcmlhYmxlcyBoZXJlLiAqLwotKyNpZiBZWVBVUkUKLSsgIFlZX0RFQ0xfVkFSSUFCTEVTCi0rI2VuZGlmICAvKiAhWVlQVVJFICovCi0rCi0rICByZWdpc3RlciBpbnQgeXlzdGF0ZTsKLSsgIHJlZ2lzdGVyIGludCB5eW47Ci0rICBpbnQgeXlyZXN1bHQ7Ci0rICAvKiBOdW1iZXIgb2YgdG9rZW5zIHRvIHNoaWZ0IGJlZm9yZSBlcnJvciBtZXNzYWdlcyBlbmFibGVkLiAgKi8KLSsgIGludCB5eWVycnN0YXR1czsKLSsgIC8qIExvb2thaGVhZCB0b2tlbiBhcyBhbiBpbnRlcm5hbCAodHJhbnNsYXRlZCkgdG9rZW4gbnVtYmVyLiAgKi8KLSsgIGludCB5eWNoYXIxID0gMDsKLSsKLSsgIC8qIFRocmVlIHN0YWNrcyBhbmQgdGhlaXIgdG9vbHM6Ci0rICAgICBgeXlzcyc6IHJlbGF0ZWQgdG8gc3RhdGVzLAotKyAgICAgYHl5dnMnOiByZWxhdGVkIHRvIHNlbWFudGljIHZhbHVlcywKLSsgICAgIGB5eWxzJzogcmVsYXRlZCB0byBsb2NhdGlvbnMuCi0rCi0rICAgICBSZWZlciB0byB0aGUgc3RhY2tzIHRocnUgc2VwYXJhdGUgcG9pbnRlcnMsIHRvIGFsbG93IHl5b3ZlcmZsb3cKLSsgICAgIHRvIHJlYWxsb2NhdGUgdGhlbSBlbHNld2hlcmUuICAqLwotKwotKyAgLyogVGhlIHN0YXRlIHN0YWNrLiAqLwotKyAgc2hvcnQJeXlzc2FbWVlJTklUREVQVEhdOwotKyAgc2hvcnQgKnl5c3MgPSB5eXNzYTsKLSsgIHJlZ2lzdGVyIHNob3J0ICp5eXNzcDsKLSsKLSsgIC8qIFRoZSBzZW1hbnRpYyB2YWx1ZSBzdGFjay4gICovCi0rICBZWVNUWVBFIHl5dnNhW1lZSU5JVERFUFRIXTsKLSsgIFlZU1RZUEUgKnl5dnMgPSB5eXZzYTsKLSsgIHJlZ2lzdGVyIFlZU1RZUEUgKnl5dnNwOwotKwotKyNpZiBZWUxTUF9ORUVERUQKLSsgIC8qIFRoZSBsb2NhdGlvbiBzdGFjay4gICovCi0rICBZWUxUWVBFIHl5bHNhW1lZSU5JVERFUFRIXTsKLSsgIFlZTFRZUEUgKnl5bHMgPSB5eWxzYTsKLSsgIFlZTFRZUEUgKnl5bHNwOwotKyNlbmRpZgotKwotKyNpZiBZWUxTUF9ORUVERUQKLSsjIGRlZmluZSBZWVBPUFNUQUNLICAgKHl5dnNwLS0sIHl5c3NwLS0sIHl5bHNwLS0pCi0rI2Vsc2UKLSsjIGRlZmluZSBZWVBPUFNUQUNLICAgKHl5dnNwLS0sIHl5c3NwLS0pCi0rI2VuZGlmCi0rCi0rICBZWVNJWkVfVCB5eXN0YWNrc2l6ZSA9IFlZSU5JVERFUFRIOwotKwotKwotKyAgLyogVGhlIHZhcmlhYmxlcyB1c2VkIHRvIHJldHVybiBzZW1hbnRpYyB2YWx1ZSBhbmQgbG9jYXRpb24gZnJvbSB0aGUKLSsgICAgIGFjdGlvbiByb3V0aW5lcy4gICovCi0rICBZWVNUWVBFIHl5dmFsOwotKyNpZiBZWUxTUF9ORUVERUQKLSsgIFlZTFRZUEUgeXlsb2M7Ci0rI2VuZGlmCi0rCi0rICAvKiBXaGVuIHJlZHVjaW5nLCB0aGUgbnVtYmVyIG9mIHN5bWJvbHMgb24gdGhlIFJIUyBvZiB0aGUgcmVkdWNlZAotKyAgICAgcnVsZS4gKi8KLSsgIGludCB5eWxlbjsKLSsKLSsgIFlZRFBSSU5URiAoKHN0ZGVyciwgIlN0YXJ0aW5nIHBhcnNlXG4iKSk7Ci0rCi0rICB5eXN0YXRlID0gMDsKLSsgIHl5ZXJyc3RhdHVzID0gMDsKLSsgIHl5bmVycnMgPSAwOwotKyAgeXljaGFyID0gWVlFTVBUWTsJCS8qIENhdXNlIGEgdG9rZW4gdG8gYmUgcmVhZC4gICovCi0rCi0rICAvKiBJbml0aWFsaXplIHN0YWNrIHBvaW50ZXJzLgotKyAgICAgV2FzdGUgb25lIGVsZW1lbnQgb2YgdmFsdWUgYW5kIGxvY2F0aW9uIHN0YWNrCi0rICAgICBzbyB0aGF0IHRoZXkgc3RheSBvbiB0aGUgc2FtZSBsZXZlbCBhcyB0aGUgc3RhdGUgc3RhY2suCi0rICAgICBUaGUgd2FzdGVkIGVsZW1lbnRzIGFyZSBuZXZlciBpbml0aWFsaXplZC4gICovCi0rCi0rICB5eXNzcCA9IHl5c3M7Ci0rICB5eXZzcCA9IHl5dnM7Ci0rI2lmIFlZTFNQX05FRURFRAotKyAgeXlsc3AgPSB5eWxzOwotKyNlbmRpZgotKyAgZ290byB5eXNldHN0YXRlOwotKwotKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotK3wgeXluZXdzdGF0ZSAtLSBQdXNoIGEgbmV3IHN0YXRlLCB3aGljaCBpcyBmb3VuZCBpbiB5eXN0YXRlLiAgfAotK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotKyB5eW5ld3N0YXRlOgotKyAgLyogSW4gYWxsIGNhc2VzLCB3aGVuIHlvdSBnZXQgaGVyZSwgdGhlIHZhbHVlIGFuZCBsb2NhdGlvbiBzdGFja3MKLSsgICAgIGhhdmUganVzdCBiZWVuIHB1c2hlZC4gc28gcHVzaGluZyBhIHN0YXRlIGhlcmUgZXZlbnMgdGhlIHN0YWNrcy4KLSsgICAgICovCi0rICB5eXNzcCsrOwotKwotKyB5eXNldHN0YXRlOgotKyAgKnl5c3NwID0geXlzdGF0ZTsKLSsKLSsgIGlmICh5eXNzcCA+PSB5eXNzICsgeXlzdGFja3NpemUgLSAxKQotKyAgICB7Ci0rICAgICAgLyogR2V0IHRoZSBjdXJyZW50IHVzZWQgc2l6ZSBvZiB0aGUgdGhyZWUgc3RhY2tzLCBpbiBlbGVtZW50cy4gICovCi0rICAgICAgWVlTSVpFX1QgeXlzaXplID0geXlzc3AgLSB5eXNzICsgMTsKLSsKLSsjaWZkZWYgeXlvdmVyZmxvdwotKyAgICAgIHsKLSsJLyogR2l2ZSB1c2VyIGEgY2hhbmNlIHRvIHJlYWxsb2NhdGUgdGhlIHN0YWNrLiBVc2UgY29waWVzIG9mCi0rCSAgIHRoZXNlIHNvIHRoYXQgdGhlICYncyBkb24ndCBmb3JjZSB0aGUgcmVhbCBvbmVzIGludG8KLSsJICAgbWVtb3J5LiAgKi8KLSsJWVlTVFlQRSAqeXl2czEgPSB5eXZzOwotKwlzaG9ydCAqeXlzczEgPSB5eXNzOwotKwotKwkvKiBFYWNoIHN0YWNrIHBvaW50ZXIgYWRkcmVzcyBpcyBmb2xsb3dlZCBieSB0aGUgc2l6ZSBvZiB0aGUKLSsJICAgZGF0YSBpbiB1c2UgaW4gdGhhdCBzdGFjaywgaW4gYnl0ZXMuICAqLwotKyMgaWYgWVlMU1BfTkVFREVECi0rCVlZTFRZUEUgKnl5bHMxID0geXlsczsKLSsJLyogVGhpcyB1c2VkIHRvIGJlIGEgY29uZGl0aW9uYWwgYXJvdW5kIGp1c3QgdGhlIHR3byBleHRyYSBhcmdzLAotKwkgICBidXQgdGhhdCBtaWdodCBiZSB1bmRlZmluZWQgaWYgeXlvdmVyZmxvdyBpcyBhIG1hY3JvLiAgKi8KLSsJeXlvdmVyZmxvdyAoInBhcnNlciBzdGFjayBvdmVyZmxvdyIsCi0rCQkgICAgJnl5c3MxLCB5eXNpemUgKiBzaXplb2YgKCp5eXNzcCksCi0rCQkgICAgJnl5dnMxLCB5eXNpemUgKiBzaXplb2YgKCp5eXZzcCksCi0rCQkgICAgJnl5bHMxLCB5eXNpemUgKiBzaXplb2YgKCp5eWxzcCksCi0rCQkgICAgJnl5c3RhY2tzaXplKTsKLSsJeXlscyA9IHl5bHMxOwotKyMgZWxzZQotKwl5eW92ZXJmbG93ICgicGFyc2VyIHN0YWNrIG92ZXJmbG93IiwKLSsJCSAgICAmeXlzczEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5c3NwKSwKLSsJCSAgICAmeXl2czEsIHl5c2l6ZSAqIHNpemVvZiAoKnl5dnNwKSwKLSsJCSAgICAmeXlzdGFja3NpemUpOwotKyMgZW5kaWYKLSsJeXlzcyA9IHl5c3MxOwotKwl5eXZzID0geXl2czE7Ci0rICAgICAgfQotKyNlbHNlIC8qIG5vIHl5b3ZlcmZsb3cgKi8KLSsjIGlmbmRlZiBZWVNUQUNLX1JFTE9DQVRFCi0rICAgICAgZ290byB5eW92ZXJmbG93bGFiOwotKyMgZWxzZQotKyAgICAgIC8qIEV4dGVuZCB0aGUgc3RhY2sgb3VyIG93biB3YXkuICAqLwotKyAgICAgIGlmICh5eXN0YWNrc2l6ZSA+PSBZWU1BWERFUFRIKQotKwlnb3RvIHl5b3ZlcmZsb3dsYWI7Ci0rICAgICAgeXlzdGFja3NpemUgKj0gMjsKLSsgICAgICBpZiAoeXlzdGFja3NpemUgPiBZWU1BWERFUFRIKQotKwl5eXN0YWNrc2l6ZSA9IFlZTUFYREVQVEg7Ci0rCi0rICAgICAgewotKwlzaG9ydCAqeXlzczEgPSB5eXNzOwotKwl1bmlvbiB5eWFsbG9jICp5eXB0ciA9Ci0rCSAgKHVuaW9uIHl5YWxsb2MgKikgWVlTVEFDS19BTExPQyAoWVlTVEFDS19CWVRFUyAoeXlzdGFja3NpemUpKTsKLSsJaWYgKCEgeXlwdHIpCi0rCSAgZ290byB5eW92ZXJmbG93bGFiOwotKwlZWVNUQUNLX1JFTE9DQVRFICh5eXNzKTsKLSsJWVlTVEFDS19SRUxPQ0FURSAoeXl2cyk7Ci0rIyBpZiBZWUxTUF9ORUVERUQKLSsJWVlTVEFDS19SRUxPQ0FURSAoeXlscyk7Ci0rIyBlbmRpZgotKyMgdW5kZWYgWVlTVEFDS19SRUxPQ0FURQotKwlpZiAoeXlzczEgIT0geXlzc2EpCi0rCSAgWVlTVEFDS19GUkVFICh5eXNzMSk7Ci0rICAgICAgfQotKyMgZW5kaWYKLSsjZW5kaWYgLyogbm8geXlvdmVyZmxvdyAqLwotKwotKyAgICAgIHl5c3NwID0geXlzcyArIHl5c2l6ZSAtIDE7Ci0rICAgICAgeXl2c3AgPSB5eXZzICsgeXlzaXplIC0gMTsKLSsjaWYgWVlMU1BfTkVFREVECi0rICAgICAgeXlsc3AgPSB5eWxzICsgeXlzaXplIC0gMTsKLSsjZW5kaWYKLSsKLSsgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJTdGFjayBzaXplIGluY3JlYXNlZCB0byAlbHVcbiIsCi0rCQkgICh1bnNpZ25lZCBsb25nIGludCkgeXlzdGFja3NpemUpKTsKLSsKLSsgICAgICBpZiAoeXlzc3AgPj0geXlzcyArIHl5c3RhY2tzaXplIC0gMSkKLSsJWVlBQk9SVDsKLSsgICAgfQotKwotKyAgWVlEUFJJTlRGICgoc3RkZXJyLCAiRW50ZXJpbmcgc3RhdGUgJWRcbiIsIHl5c3RhdGUpKTsKLSsKLSsgIGdvdG8geXliYWNrdXA7Ci0rCi0rCi0rLyotLS0tLS0tLS0tLS4KLSt8IHl5YmFja3VwLiAgfAotK2AtLS0tLS0tLS0tLSovCi0reXliYWNrdXA6Ci0rCi0rLyogRG8gYXBwcm9wcmlhdGUgcHJvY2Vzc2luZyBnaXZlbiB0aGUgY3VycmVudCBzdGF0ZS4gICovCi0rLyogUmVhZCBhIGxvb2thaGVhZCB0b2tlbiBpZiB3ZSBuZWVkIG9uZSBhbmQgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCi0rLyogeXlyZXN1bWU6ICovCi0rCi0rICAvKiBGaXJzdCB0cnkgdG8gZGVjaWRlIHdoYXQgdG8gZG8gd2l0aG91dCByZWZlcmVuY2UgdG8gbG9va2FoZWFkIHRva2VuLiAgKi8KLSsKLSsgIHl5biA9IHl5cGFjdFt5eXN0YXRlXTsKLSsgIGlmICh5eW4gPT0gWVlGTEFHKQotKyAgICBnb3RvIHl5ZGVmYXVsdDsKLSsKLSsgIC8qIE5vdCBrbm93biA9PiBnZXQgYSBsb29rYWhlYWQgdG9rZW4gaWYgZG9uJ3QgYWxyZWFkeSBoYXZlIG9uZS4gICovCi0rCi0rICAvKiB5eWNoYXIgaXMgZWl0aGVyIFlZRU1QVFkgb3IgWVlFT0YKLSsgICAgIG9yIGEgdmFsaWQgdG9rZW4gaW4gZXh0ZXJuYWwgZm9ybS4gICovCi0rCi0rICBpZiAoeXljaGFyID09IFlZRU1QVFkpCi0rICAgIHsKLSsgICAgICBZWURQUklOVEYgKChzdGRlcnIsICJSZWFkaW5nIGEgdG9rZW46ICIpKTsKLSsgICAgICB5eWNoYXIgPSBZWUxFWDsKLSsgICAgfQotKwotKyAgLyogQ29udmVydCB0b2tlbiB0byBpbnRlcm5hbCBmb3JtIChpbiB5eWNoYXIxKSBmb3IgaW5kZXhpbmcgdGFibGVzIHdpdGggKi8KLSsKLSsgIGlmICh5eWNoYXIgPD0gMCkJCS8qIFRoaXMgbWVhbnMgZW5kIG9mIGlucHV0LiAqLwotKyAgICB7Ci0rICAgICAgeXljaGFyMSA9IDA7Ci0rICAgICAgeXljaGFyID0gWVlFT0Y7CQkvKiBEb24ndCBjYWxsIFlZTEVYIGFueSBtb3JlICovCi0rCi0rICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiTm93IGF0IGVuZCBvZiBpbnB1dC5cbiIpKTsKLSsgICAgfQotKyAgZWxzZQotKyAgICB7Ci0rICAgICAgeXljaGFyMSA9IFlZVFJBTlNMQVRFICh5eWNoYXIpOwotKwotKyNpZiBZWURFQlVHCi0rICAgICAvKiBXZSBoYXZlIHRvIGtlZXAgdGhpcyBgI2lmIFlZREVCVUcnLCBzaW5jZSB3ZSB1c2UgdmFyaWFibGVzCi0rCXdoaWNoIGFyZSBkZWZpbmVkIG9ubHkgaWYgYFlZREVCVUcnIGlzIHNldC4gICovCi0rICAgICAgaWYgKHl5ZGVidWcpCi0rCXsKLSsJICBZWUZQUklOVEYgKHN0ZGVyciwgIk5leHQgdG9rZW4gaXMgJWQgKCVzIiwKLSsJCSAgICAgeXljaGFyLCB5eXRuYW1lW3l5Y2hhcjFdKTsKLSsJICAvKiBHaXZlIHRoZSBpbmRpdmlkdWFsIHBhcnNlciBhIHdheSB0byBwcmludCB0aGUgcHJlY2lzZQotKwkgICAgIG1lYW5pbmcgb2YgYSB0b2tlbiwgZm9yIGZ1cnRoZXIgZGVidWdnaW5nIGluZm8uICAqLwotKyMgaWZkZWYgWVlQUklOVAotKwkgIFlZUFJJTlQgKHN0ZGVyciwgeXljaGFyLCB5eWx2YWwpOwotKyMgZW5kaWYKLSsJICBZWUZQUklOVEYgKHN0ZGVyciwgIilcbiIpOwotKwl9Ci0rI2VuZGlmCi0rICAgIH0KLSsKLSsgIHl5biArPSB5eWNoYXIxOwotKyAgaWYgKHl5biA8IDAgfHwgeXluID4gWVlMQVNUIHx8IHl5Y2hlY2tbeXluXSAhPSB5eWNoYXIxKQotKyAgICBnb3RvIHl5ZGVmYXVsdDsKLSsKLSsgIHl5biA9IHl5dGFibGVbeXluXTsKLSsKLSsgIC8qIHl5biBpcyB3aGF0IHRvIGRvIGZvciB0aGlzIHRva2VuIHR5cGUgaW4gdGhpcyBzdGF0ZS4KLSsgICAgIE5lZ2F0aXZlID0+IHJlZHVjZSwgLXl5biBpcyBydWxlIG51bWJlci4KLSsgICAgIFBvc2l0aXZlID0+IHNoaWZ0LCB5eW4gaXMgbmV3IHN0YXRlLgotKyAgICAgICBOZXcgc3RhdGUgaXMgZmluYWwgc3RhdGUgPT4gZG9uJ3QgYm90aGVyIHRvIHNoaWZ0LAotKyAgICAgICBqdXN0IHJldHVybiBzdWNjZXNzLgotKyAgICAgMCwgb3IgbW9zdCBuZWdhdGl2ZSBudW1iZXIgPT4gZXJyb3IuICAqLwotKwotKyAgaWYgKHl5biA8IDApCi0rICAgIHsKLSsgICAgICBpZiAoeXluID09IFlZRkxBRykKLSsJZ290byB5eWVycmxhYjsKLSsgICAgICB5eW4gPSAteXluOwotKyAgICAgIGdvdG8geXlyZWR1Y2U7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKHl5biA9PSAwKQotKyAgICBnb3RvIHl5ZXJybGFiOwotKwotKyAgaWYgKHl5biA9PSBZWUZJTkFMKQotKyAgICBZWUFDQ0VQVDsKLSsKLSsgIC8qIFNoaWZ0IHRoZSBsb29rYWhlYWQgdG9rZW4uICAqLwotKyAgWVlEUFJJTlRGICgoc3RkZXJyLCAiU2hpZnRpbmcgdG9rZW4gJWQgKCVzKSwgIiwKLSsJICAgICAgeXljaGFyLCB5eXRuYW1lW3l5Y2hhcjFdKSk7Ci0rCi0rICAvKiBEaXNjYXJkIHRoZSB0b2tlbiBiZWluZyBzaGlmdGVkIHVubGVzcyBpdCBpcyBlb2YuICAqLwotKyAgaWYgKHl5Y2hhciAhPSBZWUVPRikKLSsgICAgeXljaGFyID0gWVlFTVBUWTsKLSsKLSsgICorK3l5dnNwID0geXlsdmFsOwotKyNpZiBZWUxTUF9ORUVERUQKLSsgICorK3l5bHNwID0geXlsbG9jOwotKyNlbmRpZgotKwotKyAgLyogQ291bnQgdG9rZW5zIHNoaWZ0ZWQgc2luY2UgZXJyb3I7IGFmdGVyIHRocmVlLCB0dXJuIG9mZiBlcnJvcgotKyAgICAgc3RhdHVzLiAgKi8KLSsgIGlmICh5eWVycnN0YXR1cykKLSsgICAgeXllcnJzdGF0dXMtLTsKLSsKLSsgIHl5c3RhdGUgPSB5eW47Ci0rICBnb3RvIHl5bmV3c3RhdGU7Ci0rCi0rCi0rLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLSt8IHl5ZGVmYXVsdCAtLSBkbyB0aGUgZGVmYXVsdCBhY3Rpb24gZm9yIHRoZSBjdXJyZW50IHN0YXRlLiAgfAotK2AtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSovCi0reXlkZWZhdWx0OgotKyAgeXluID0geXlkZWZhY3RbeXlzdGF0ZV07Ci0rICBpZiAoeXluID09IDApCi0rICAgIGdvdG8geXllcnJsYWI7Ci0rICBnb3RvIHl5cmVkdWNlOwotKwotKwotKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0rfCB5eXJlZHVjZSAtLSBEbyBhIHJlZHVjdGlvbi4gIHwKLStgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotK3l5cmVkdWNlOgotKyAgLyogeXluIGlzIHRoZSBudW1iZXIgb2YgYSBydWxlIHRvIHJlZHVjZSB3aXRoLiAgKi8KLSsgIHl5bGVuID0geXlyMlt5eW5dOwotKwotKyAgLyogSWYgWVlMRU4gaXMgbm9uemVybywgaW1wbGVtZW50IHRoZSBkZWZhdWx0IHZhbHVlIG9mIHRoZSBhY3Rpb246Ci0rICAgICBgJCQgPSAkMScuCi0rCi0rICAgICBPdGhlcndpc2UsIHRoZSBmb2xsb3dpbmcgbGluZSBzZXRzIFlZVkFMIHRvIHRoZSBzZW1hbnRpYyB2YWx1ZSBvZgotKyAgICAgdGhlIGxvb2thaGVhZCB0b2tlbi4gIFRoaXMgYmVoYXZpb3IgaXMgdW5kb2N1bWVudGVkIGFuZCBCaXNvbgotKyAgICAgdXNlcnMgc2hvdWxkIG5vdCByZWx5IHVwb24gaXQuICBBc3NpZ25pbmcgdG8gWVlWQUwKLSsgICAgIHVuY29uZGl0aW9uYWxseSBtYWtlcyB0aGUgcGFyc2VyIGEgYml0IHNtYWxsZXIsIGFuZCBpdCBhdm9pZHMgYQotKyAgICAgR0NDIHdhcm5pbmcgdGhhdCBZWVZBTCBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkLiAgKi8KLSsgIHl5dmFsID0geXl2c3BbMS15eWxlbl07Ci0rCi0rI2lmIFlZTFNQX05FRURFRAotKyAgLyogU2ltaWxhcmx5IGZvciB0aGUgZGVmYXVsdCBsb2NhdGlvbi4gIExldCB0aGUgdXNlciBydW4gYWRkaXRpb25hbAotKyAgICAgY29tbWFuZHMgaWYgZm9yIGluc3RhbmNlIGxvY2F0aW9ucyBhcmUgcmFuZ2VzLiAgKi8KLSsgIHl5bG9jID0geXlsc3BbMS15eWxlbl07Ci0rICBZWUxMT0NfREVGQVVMVCAoeXlsb2MsICh5eWxzcCAtIHl5bGVuKSwgeXlsZW4pOwotKyNlbmRpZgotKwotKyNpZiBZWURFQlVHCi0rICAvKiBXZSBoYXZlIHRvIGtlZXAgdGhpcyBgI2lmIFlZREVCVUcnLCBzaW5jZSB3ZSB1c2UgdmFyaWFibGVzIHdoaWNoCi0rICAgICBhcmUgZGVmaW5lZCBvbmx5IGlmIGBZWURFQlVHJyBpcyBzZXQuICAqLwotKyAgaWYgKHl5ZGVidWcpCi0rICAgIHsKLSsgICAgICBpbnQgeXlpOwotKwotKyAgICAgIFlZRlBSSU5URiAoc3RkZXJyLCAiUmVkdWNpbmcgdmlhIHJ1bGUgJWQgKGxpbmUgJWQpLCAiLAotKwkJIHl5biwgeXlybGluZVt5eW5dKTsKLSsKLSsgICAgICAvKiBQcmludCB0aGUgc3ltYm9scyBiZWluZyByZWR1Y2VkLCBhbmQgdGhlaXIgcmVzdWx0LiAgKi8KLSsgICAgICBmb3IgKHl5aSA9IHl5cHJoc1t5eW5dOyB5eXJoc1t5eWldID4gMDsgeXlpKyspCi0rCVlZRlBSSU5URiAoc3RkZXJyLCAiJXMgIiwgeXl0bmFtZVt5eXJoc1t5eWldXSk7Ci0rICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICIgLT4gJXNcbiIsIHl5dG5hbWVbeXlyMVt5eW5dXSk7Ci0rICAgIH0KLSsjZW5kaWYKLSsKLSsgIHN3aXRjaCAoeXluKSB7Ci0rCi0rY2FzZSAxOgotKyNsaW5lIDE1MSAicGx1cmFsLnkiCi0rewotKwkgICAgaWYgKHl5dnNwWzBdLmV4cCA9PSBOVUxMKQotKwkgICAgICBZWUFCT1JUOwotKwkgICAgKChzdHJ1Y3QgcGFyc2VfYXJncyAqKSBhcmcpLT5yZXMgPSB5eXZzcFswXS5leHA7Ci0rCSAgfQotKyAgICBicmVhazsKLStjYXNlIDI6Ci0rI2xpbmUgMTU5ICJwbHVyYWwueSIKLSt7Ci0rCSAgICB5eXZhbC5leHAgPSBuZXdfZXhwXzMgKHFtb3AsIHl5dnNwWy00XS5leHAsIHl5dnNwWy0yXS5leHAsIHl5dnNwWzBdLmV4cCk7Ci0rCSAgfQotKyAgICBicmVhazsKLStjYXNlIDM6Ci0rI2xpbmUgMTYzICJwbHVyYWwueSIKLSt7Ci0rCSAgICB5eXZhbC5leHAgPSBuZXdfZXhwXzIgKGxvciwgeXl2c3BbLTJdLmV4cCwgeXl2c3BbMF0uZXhwKTsKLSsJICB9Ci0rICAgIGJyZWFrOwotK2Nhc2UgNDoKLSsjbGluZSAxNjcgInBsdXJhbC55IgotK3sKLSsJICAgIHl5dmFsLmV4cCA9IG5ld19leHBfMiAobGFuZCwgeXl2c3BbLTJdLmV4cCwgeXl2c3BbMF0uZXhwKTsKLSsJICB9Ci0rICAgIGJyZWFrOwotK2Nhc2UgNToKLSsjbGluZSAxNzEgInBsdXJhbC55IgotK3sKLSsJICAgIHl5dmFsLmV4cCA9IG5ld19leHBfMiAoeXl2c3BbLTFdLm9wLCB5eXZzcFstMl0uZXhwLCB5eXZzcFswXS5leHApOwotKwkgIH0KLSsgICAgYnJlYWs7Ci0rY2FzZSA2OgotKyNsaW5lIDE3NSAicGx1cmFsLnkiCi0rewotKwkgICAgeXl2YWwuZXhwID0gbmV3X2V4cF8yICh5eXZzcFstMV0ub3AsIHl5dnNwWy0yXS5leHAsIHl5dnNwWzBdLmV4cCk7Ci0rCSAgfQotKyAgICBicmVhazsKLStjYXNlIDc6Ci0rI2xpbmUgMTc5ICJwbHVyYWwueSIKLSt7Ci0rCSAgICB5eXZhbC5leHAgPSBuZXdfZXhwXzIgKHl5dnNwWy0xXS5vcCwgeXl2c3BbLTJdLmV4cCwgeXl2c3BbMF0uZXhwKTsKLSsJICB9Ci0rICAgIGJyZWFrOwotK2Nhc2UgODoKLSsjbGluZSAxODMgInBsdXJhbC55IgotK3sKLSsJICAgIHl5dmFsLmV4cCA9IG5ld19leHBfMiAoeXl2c3BbLTFdLm9wLCB5eXZzcFstMl0uZXhwLCB5eXZzcFswXS5leHApOwotKwkgIH0KLSsgICAgYnJlYWs7Ci0rY2FzZSA5OgotKyNsaW5lIDE4NyAicGx1cmFsLnkiCi0rewotKwkgICAgeXl2YWwuZXhwID0gbmV3X2V4cF8xIChsbm90LCB5eXZzcFswXS5leHApOwotKwkgIH0KLSsgICAgYnJlYWs7Ci0rY2FzZSAxMDoKLSsjbGluZSAxOTEgInBsdXJhbC55IgotK3sKLSsJICAgIHl5dmFsLmV4cCA9IG5ld19leHBfMCAodmFyKTsKLSsJICB9Ci0rICAgIGJyZWFrOwotK2Nhc2UgMTE6Ci0rI2xpbmUgMTk1ICJwbHVyYWwueSIKLSt7Ci0rCSAgICBpZiAoKHl5dmFsLmV4cCA9IG5ld19leHBfMCAobnVtKSkgIT0gTlVMTCkKLSsJICAgICAgeXl2YWwuZXhwLT52YWwubnVtID0geXl2c3BbMF0ubnVtOwotKwkgIH0KLSsgICAgYnJlYWs7Ci0rY2FzZSAxMjoKLSsjbGluZSAyMDAgInBsdXJhbC55IgotK3sKLSsJICAgIHl5dmFsLmV4cCA9IHl5dnNwWy0xXS5leHA7Ci0rCSAgfQotKyAgICBicmVhazsKLSt9Ci0rCi0rI2xpbmUgNzA1ICIvdXNyL2xvY2FsL3NoYXJlL2Jpc29uL2Jpc29uLnNpbXBsZSIKLSsKLSsMCi0rICB5eXZzcCAtPSB5eWxlbjsKLSsgIHl5c3NwIC09IHl5bGVuOwotKyNpZiBZWUxTUF9ORUVERUQKLSsgIHl5bHNwIC09IHl5bGVuOwotKyNlbmRpZgotKwotKyNpZiBZWURFQlVHCi0rICBpZiAoeXlkZWJ1ZykKLSsgICAgewotKyAgICAgIHNob3J0ICp5eXNzcDEgPSB5eXNzIC0gMTsKLSsgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgInN0YXRlIHN0YWNrIG5vdyIpOwotKyAgICAgIHdoaWxlICh5eXNzcDEgIT0geXlzc3ApCi0rCVlZRlBSSU5URiAoc3RkZXJyLCAiICVkIiwgKisreXlzc3AxKTsKLSsgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIlxuIik7Ci0rICAgIH0KLSsjZW5kaWYKLSsKLSsgICorK3l5dnNwID0geXl2YWw7Ci0rI2lmIFlZTFNQX05FRURFRAotKyAgKisreXlsc3AgPSB5eWxvYzsKLSsjZW5kaWYKLSsKLSsgIC8qIE5vdyBgc2hpZnQnIHRoZSByZXN1bHQgb2YgdGhlIHJlZHVjdGlvbi4gIERldGVybWluZSB3aGF0IHN0YXRlCi0rICAgICB0aGF0IGdvZXMgdG8sIGJhc2VkIG9uIHRoZSBzdGF0ZSB3ZSBwb3BwZWQgYmFjayB0byBhbmQgdGhlIHJ1bGUKLSsgICAgIG51bWJlciByZWR1Y2VkIGJ5LiAgKi8KLSsKLSsgIHl5biA9IHl5cjFbeXluXTsKLSsKLSsgIHl5c3RhdGUgPSB5eXBnb3RvW3l5biAtIFlZTlRCQVNFXSArICp5eXNzcDsKLSsgIGlmICh5eXN0YXRlID49IDAgJiYgeXlzdGF0ZSA8PSBZWUxBU1QgJiYgeXljaGVja1t5eXN0YXRlXSA9PSAqeXlzc3ApCi0rICAgIHl5c3RhdGUgPSB5eXRhYmxlW3l5c3RhdGVdOwotKyAgZWxzZQotKyAgICB5eXN0YXRlID0geXlkZWZnb3RvW3l5biAtIFlZTlRCQVNFXTsKLSsKLSsgIGdvdG8geXluZXdzdGF0ZTsKLSsKLSsKLSsvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLSt8IHl5ZXJybGFiIC0tIGhlcmUgb24gZGV0ZWN0aW5nIGVycm9yIHwKLStgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSt5eWVycmxhYjoKLSsgIC8qIElmIG5vdCBhbHJlYWR5IHJlY292ZXJpbmcgZnJvbSBhbiBlcnJvciwgcmVwb3J0IHRoaXMgZXJyb3IuICAqLwotKyAgaWYgKCF5eWVycnN0YXR1cykKLSsgICAgewotKyAgICAgICsreXluZXJyczsKLSsKLSsjaWZkZWYgWVlFUlJPUl9WRVJCT1NFCi0rICAgICAgeXluID0geXlwYWN0W3l5c3RhdGVdOwotKwotKyAgICAgIGlmICh5eW4gPiBZWUZMQUcgJiYgeXluIDwgWVlMQVNUKQotKwl7Ci0rCSAgWVlTSVpFX1QgeXlzaXplID0gMDsKLSsJICBjaGFyICp5eW1zZzsKLSsJICBpbnQgeXl4LCB5eWNvdW50OwotKwotKwkgIHl5Y291bnQgPSAwOwotKwkgIC8qIFN0YXJ0IFlZWCBhdCAtWVlOIGlmIG5lZ2F0aXZlIHRvIGF2b2lkIG5lZ2F0aXZlIGluZGV4ZXMgaW4KLSsJICAgICBZWUNIRUNLLiAgKi8KLSsJICBmb3IgKHl5eCA9IHl5biA8IDAgPyAteXluIDogMDsKLSsJICAgICAgIHl5eCA8IChpbnQpIChzaXplb2YgKHl5dG5hbWUpIC8gc2l6ZW9mIChjaGFyICopKTsgeXl4KyspCi0rCSAgICBpZiAoeXljaGVja1t5eXggKyB5eW5dID09IHl5eCkKLSsJICAgICAgeXlzaXplICs9IHl5c3RybGVuICh5eXRuYW1lW3l5eF0pICsgMTUsIHl5Y291bnQrKzsKLSsJICB5eXNpemUgKz0geXlzdHJsZW4gKCJwYXJzZSBlcnJvciwgdW5leHBlY3RlZCAiKSArIDE7Ci0rCSAgeXlzaXplICs9IHl5c3RybGVuICh5eXRuYW1lW1lZVFJBTlNMQVRFICh5eWNoYXIpXSk7Ci0rCSAgeXltc2cgPSAoY2hhciAqKSBZWVNUQUNLX0FMTE9DICh5eXNpemUpOwotKwkgIGlmICh5eW1zZyAhPSAwKQotKwkgICAgewotKwkgICAgICBjaGFyICp5eXAgPSB5eXN0cGNweSAoeXltc2csICJwYXJzZSBlcnJvciwgdW5leHBlY3RlZCAiKTsKLSsJICAgICAgeXlwID0geXlzdHBjcHkgKHl5cCwgeXl0bmFtZVtZWVRSQU5TTEFURSAoeXljaGFyKV0pOwotKwotKwkgICAgICBpZiAoeXljb3VudCA8IDUpCi0rCQl7Ci0rCQkgIHl5Y291bnQgPSAwOwotKwkJICBmb3IgKHl5eCA9IHl5biA8IDAgPyAteXluIDogMDsKLSsJCSAgICAgICB5eXggPCAoaW50KSAoc2l6ZW9mICh5eXRuYW1lKSAvIHNpemVvZiAoY2hhciAqKSk7Ci0rCQkgICAgICAgeXl4KyspCi0rCQkgICAgaWYgKHl5Y2hlY2tbeXl4ICsgeXluXSA9PSB5eXgpCi0rCQkgICAgICB7Ci0rCQkJY29uc3QgY2hhciAqeXlxID0gISB5eWNvdW50ID8gIiwgZXhwZWN0aW5nICIgOiAiIG9yICI7Ci0rCQkJeXlwID0geXlzdHBjcHkgKHl5cCwgeXlxKTsKLSsJCQl5eXAgPSB5eXN0cGNweSAoeXlwLCB5eXRuYW1lW3l5eF0pOwotKwkJCXl5Y291bnQrKzsKLSsJCSAgICAgIH0KLSsJCX0KLSsJICAgICAgeXllcnJvciAoeXltc2cpOwotKwkgICAgICBZWVNUQUNLX0ZSRUUgKHl5bXNnKTsKLSsJICAgIH0KLSsJICBlbHNlCi0rCSAgICB5eWVycm9yICgicGFyc2UgZXJyb3I7IGFsc28gdmlydHVhbCBtZW1vcnkgZXhoYXVzdGVkIik7Ci0rCX0KLSsgICAgICBlbHNlCi0rI2VuZGlmIC8qIGRlZmluZWQgKFlZRVJST1JfVkVSQk9TRSkgKi8KLSsJeXllcnJvciAoInBhcnNlIGVycm9yIik7Ci0rICAgIH0KLSsgIGdvdG8geXllcnJsYWIxOwotKwotKwotKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0uCi0rfCB5eWVycmxhYjEgLS0gZXJyb3IgcmFpc2VkIGV4cGxpY2l0bHkgYnkgYW4gYWN0aW9uIHwKLStgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotK3l5ZXJybGFiMToKLSsgIGlmICh5eWVycnN0YXR1cyA9PSAzKQotKyAgICB7Ci0rICAgICAgLyogSWYganVzdCB0cmllZCBhbmQgZmFpbGVkIHRvIHJldXNlIGxvb2thaGVhZCB0b2tlbiBhZnRlciBhbgotKwkgZXJyb3IsIGRpc2NhcmQgaXQuICAqLwotKwotKyAgICAgIC8qIHJldHVybiBmYWlsdXJlIGlmIGF0IGVuZCBvZiBpbnB1dCAqLwotKyAgICAgIGlmICh5eWNoYXIgPT0gWVlFT0YpCi0rCVlZQUJPUlQ7Ci0rICAgICAgWVlEUFJJTlRGICgoc3RkZXJyLCAiRGlzY2FyZGluZyB0b2tlbiAlZCAoJXMpLlxuIiwKLSsJCSAgeXljaGFyLCB5eXRuYW1lW3l5Y2hhcjFdKSk7Ci0rICAgICAgeXljaGFyID0gWVlFTVBUWTsKLSsgICAgfQotKwotKyAgLyogRWxzZSB3aWxsIHRyeSB0byByZXVzZSBsb29rYWhlYWQgdG9rZW4gYWZ0ZXIgc2hpZnRpbmcgdGhlIGVycm9yCi0rICAgICB0b2tlbi4gICovCi0rCi0rICB5eWVycnN0YXR1cyA9IDM7CQkvKiBFYWNoIHJlYWwgdG9rZW4gc2hpZnRlZCBkZWNyZW1lbnRzIHRoaXMgKi8KLSsKLSsgIGdvdG8geXllcnJoYW5kbGU7Ci0rCi0rCi0rLyotLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotK3wgeXllcnJkZWZhdWx0IC0tIGN1cnJlbnQgc3RhdGUgZG9lcyBub3QgZG8gYW55dGhpbmcgc3BlY2lhbCBmb3IgdGhlIHwKLSt8IGVycm9yIHRva2VuLiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8Ci0rYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotK3l5ZXJyZGVmYXVsdDoKLSsjaWYgMAotKyAgLyogVGhpcyBpcyB3cm9uZzsgb25seSBzdGF0ZXMgdGhhdCBleHBsaWNpdGx5IHdhbnQgZXJyb3IgdG9rZW5zCi0rICAgICBzaG91bGQgc2hpZnQgdGhlbS4gICovCi0rCi0rICAvKiBJZiBpdHMgZGVmYXVsdCBpcyB0byBhY2NlcHQgYW55IHRva2VuLCBvay4gIE90aGVyd2lzZSBwb3AgaXQuICAqLwotKyAgeXluID0geXlkZWZhY3RbeXlzdGF0ZV07Ci0rICBpZiAoeXluKQotKyAgICBnb3RvIHl5ZGVmYXVsdDsKLSsjZW5kaWYKLSsKLSsKLSsvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLSt8IHl5ZXJycG9wIC0tIHBvcCB0aGUgY3VycmVudCBzdGF0ZSBiZWNhdXNlIGl0IGNhbm5vdCBoYW5kbGUgdGhlIHwKLSt8IGVycm9yIHRva2VuICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKLStgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSt5eWVycnBvcDoKLSsgIGlmICh5eXNzcCA9PSB5eXNzKQotKyAgICBZWUFCT1JUOwotKyAgeXl2c3AtLTsKLSsgIHl5c3RhdGUgPSAqLS15eXNzcDsKLSsjaWYgWVlMU1BfTkVFREVECi0rICB5eWxzcC0tOwotKyNlbmRpZgotKwotKyNpZiBZWURFQlVHCi0rICBpZiAoeXlkZWJ1ZykKLSsgICAgewotKyAgICAgIHNob3J0ICp5eXNzcDEgPSB5eXNzIC0gMTsKLSsgICAgICBZWUZQUklOVEYgKHN0ZGVyciwgIkVycm9yOiBzdGF0ZSBzdGFjayBub3ciKTsKLSsgICAgICB3aGlsZSAoeXlzc3AxICE9IHl5c3NwKQotKwlZWUZQUklOVEYgKHN0ZGVyciwgIiAlZCIsICorK3l5c3NwMSk7Ci0rICAgICAgWVlGUFJJTlRGIChzdGRlcnIsICJcbiIpOwotKyAgICB9Ci0rI2VuZGlmCi0rCi0rLyotLS0tLS0tLS0tLS0tLS4KLSt8IHl5ZXJyaGFuZGxlLiAgfAotK2AtLS0tLS0tLS0tLS0tLSovCi0reXllcnJoYW5kbGU6Ci0rICB5eW4gPSB5eXBhY3RbeXlzdGF0ZV07Ci0rICBpZiAoeXluID09IFlZRkxBRykKLSsgICAgZ290byB5eWVycmRlZmF1bHQ7Ci0rCi0rICB5eW4gKz0gWVlURVJST1I7Ci0rICBpZiAoeXluIDwgMCB8fCB5eW4gPiBZWUxBU1QgfHwgeXljaGVja1t5eW5dICE9IFlZVEVSUk9SKQotKyAgICBnb3RvIHl5ZXJyZGVmYXVsdDsKLSsKLSsgIHl5biA9IHl5dGFibGVbeXluXTsKLSsgIGlmICh5eW4gPCAwKQotKyAgICB7Ci0rICAgICAgaWYgKHl5biA9PSBZWUZMQUcpCi0rCWdvdG8geXllcnJwb3A7Ci0rICAgICAgeXluID0gLXl5bjsKLSsgICAgICBnb3RvIHl5cmVkdWNlOwotKyAgICB9Ci0rICBlbHNlIGlmICh5eW4gPT0gMCkKLSsgICAgZ290byB5eWVycnBvcDsKLSsKLSsgIGlmICh5eW4gPT0gWVlGSU5BTCkKLSsgICAgWVlBQ0NFUFQ7Ci0rCi0rICBZWURQUklOVEYgKChzdGRlcnIsICJTaGlmdGluZyBlcnJvciB0b2tlbiwgIikpOwotKwotKyAgKisreXl2c3AgPSB5eWx2YWw7Ci0rI2lmIFlZTFNQX05FRURFRAotKyAgKisreXlsc3AgPSB5eWxsb2M7Ci0rI2VuZGlmCi0rCi0rICB5eXN0YXRlID0geXluOwotKyAgZ290byB5eW5ld3N0YXRlOwotKwotKwotKy8qLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLSt8IHl5YWNjZXB0bGFiIC0tIFlZQUNDRVBUIGNvbWVzIGhlcmUuICB8Ci0rYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0qLwotK3l5YWNjZXB0bGFiOgotKyAgeXlyZXN1bHQgPSAwOwotKyAgZ290byB5eXJldHVybjsKLSsKLSsvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLgotK3wgeXlhYm9ydGxhYiAtLSBZWUFCT1JUIGNvbWVzIGhlcmUuICB8Ci0rYC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSt5eWFib3J0bGFiOgotKyAgeXlyZXN1bHQgPSAxOwotKyAgZ290byB5eXJldHVybjsKLSsKLSsvKi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS4KLSt8IHl5b3ZlcmZsb3dhYiAtLSBwYXJzZXIgb3ZlcmZsb3cgY29tZXMgaGVyZS4gIHwKLStgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKi8KLSt5eW92ZXJmbG93bGFiOgotKyAgeXllcnJvciAoInBhcnNlciBzdGFjayBvdmVyZmxvdyIpOwotKyAgeXlyZXN1bHQgPSAyOwotKyAgLyogRmFsbCB0aHJvdWdoLiAgKi8KLSsKLSt5eXJldHVybjoKLSsjaWZuZGVmIHl5b3ZlcmZsb3cKLSsgIGlmICh5eXNzICE9IHl5c3NhKQotKyAgICBZWVNUQUNLX0ZSRUUgKHl5c3MpOwotKyNlbmRpZgotKyAgcmV0dXJuIHl5cmVzdWx0OwotK30KLSsjbGluZSAyMDUgInBsdXJhbC55IgotKwotKwotK3ZvaWQKLStpbnRlcm5hbF9mdW5jdGlvbgotK0ZSRUVfRVhQUkVTU0lPTiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCkKLSt7Ci0rICBpZiAoZXhwID09IE5VTEwpCi0rICAgIHJldHVybjsKLSsKLSsgIC8qIEhhbmRsZSB0aGUgcmVjdXJzaXZlIGNhc2UuICAqLwotKyAgc3dpdGNoIChleHAtPm5hcmdzKQotKyAgICB7Ci0rICAgIGNhc2UgMzoKLSsgICAgICBGUkVFX0VYUFJFU1NJT04gKGV4cC0+dmFsLmFyZ3NbMl0pOwotKyAgICAgIC8qIEZBTExUSFJPVUdIICovCi0rICAgIGNhc2UgMjoKLSsgICAgICBGUkVFX0VYUFJFU1NJT04gKGV4cC0+dmFsLmFyZ3NbMV0pOwotKyAgICAgIC8qIEZBTExUSFJPVUdIICovCi0rICAgIGNhc2UgMToKLSsgICAgICBGUkVFX0VYUFJFU1NJT04gKGV4cC0+dmFsLmFyZ3NbMF0pOwotKyAgICAgIC8qIEZBTExUSFJPVUdIICovCi0rICAgIGRlZmF1bHQ6Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgIGZyZWUgKGV4cCk7Ci0rfQotKwotKwotK3N0YXRpYyBpbnQKLSt5eWxleCAoWVlTVFlQRSAqbHZhbCwgY29uc3QgY2hhciAqKnBleHApCi0rewotKyAgY29uc3QgY2hhciAqZXhwID0gKnBleHA7Ci0rICBpbnQgcmVzdWx0OwotKwotKyAgd2hpbGUgKDEpCi0rICAgIHsKLSsgICAgICBpZiAoZXhwWzBdID09ICdcMCcpCi0rCXsKLSsJICAqcGV4cCA9IGV4cDsKLSsJICByZXR1cm4gWVlFT0Y7Ci0rCX0KLSsKLSsgICAgICBpZiAoZXhwWzBdICE9ICcgJyAmJiBleHBbMF0gIT0gJ1x0JykKLSsJYnJlYWs7Ci0rCi0rICAgICAgKytleHA7Ci0rICAgIH0KLSsKLSsgIHJlc3VsdCA9ICpleHArKzsKLSsgIHN3aXRjaCAocmVzdWx0KQotKyAgICB7Ci0rICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzoKLSsgICAgY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOgotKyAgICAgIHsKLSsJdW5zaWduZWQgbG9uZyBpbnQgbiA9IHJlc3VsdCAtICcwJzsKLSsJd2hpbGUgKGV4cFswXSA+PSAnMCcgJiYgZXhwWzBdIDw9ICc5JykKLSsJICB7Ci0rCSAgICBuICo9IDEwOwotKwkgICAgbiArPSBleHBbMF0gLSAnMCc7Ci0rCSAgICArK2V4cDsKLSsJICB9Ci0rCWx2YWwtPm51bSA9IG47Ci0rCXJlc3VsdCA9IE5VTUJFUjsKLSsgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJz0nOgotKyAgICAgIGlmIChleHBbMF0gPT0gJz0nKQotKwl7Ci0rCSAgKytleHA7Ci0rCSAgbHZhbC0+b3AgPSBlcXVhbDsKLSsJICByZXN1bHQgPSBFUVVPUDI7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXJlc3VsdCA9IFlZRVJSQ09ERTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnISc6Ci0rICAgICAgaWYgKGV4cFswXSA9PSAnPScpCi0rCXsKLSsJICArK2V4cDsKLSsJICBsdmFsLT5vcCA9IG5vdF9lcXVhbDsKLSsJICByZXN1bHQgPSBFUVVPUDI7Ci0rCX0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnJic6Ci0rICAgIGNhc2UgJ3wnOgotKyAgICAgIGlmIChleHBbMF0gPT0gcmVzdWx0KQotKwkrK2V4cDsKLSsgICAgICBlbHNlCi0rCXJlc3VsdCA9IFlZRVJSQ09ERTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnPCc6Ci0rICAgICAgaWYgKGV4cFswXSA9PSAnPScpCi0rCXsKLSsJICArK2V4cDsKLSsJICBsdmFsLT5vcCA9IGxlc3Nfb3JfZXF1YWw7Ci0rCX0KLSsgICAgICBlbHNlCi0rCWx2YWwtPm9wID0gbGVzc190aGFuOwotKyAgICAgIHJlc3VsdCA9IENNUE9QMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnPic6Ci0rICAgICAgaWYgKGV4cFswXSA9PSAnPScpCi0rCXsKLSsJICArK2V4cDsKLSsJICBsdmFsLT5vcCA9IGdyZWF0ZXJfb3JfZXF1YWw7Ci0rCX0KLSsgICAgICBlbHNlCi0rCWx2YWwtPm9wID0gZ3JlYXRlcl90aGFuOwotKyAgICAgIHJlc3VsdCA9IENNUE9QMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnKic6Ci0rICAgICAgbHZhbC0+b3AgPSBtdWx0OwotKyAgICAgIHJlc3VsdCA9IE1VTE9QMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnLyc6Ci0rICAgICAgbHZhbC0+b3AgPSBkaXZpZGU7Ci0rICAgICAgcmVzdWx0ID0gTVVMT1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICclJzoKLSsgICAgICBsdmFsLT5vcCA9IG1vZHVsZTsKLSsgICAgICByZXN1bHQgPSBNVUxPUDI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJysnOgotKyAgICAgIGx2YWwtPm9wID0gcGx1czsKLSsgICAgICByZXN1bHQgPSBBRERPUDI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJy0nOgotKyAgICAgIGx2YWwtPm9wID0gbWludXM7Ci0rICAgICAgcmVzdWx0ID0gQURET1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICduJzoKLSsgICAgY2FzZSAnPyc6Ci0rICAgIGNhc2UgJzonOgotKyAgICBjYXNlICcoJzoKLSsgICAgY2FzZSAnKSc6Ci0rICAgICAgLyogTm90aGluZywganVzdCByZXR1cm4gdGhlIGNoYXJhY3Rlci4gICovCi0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJzsnOgotKyAgICBjYXNlICdcbic6Ci0rICAgIGNhc2UgJ1wwJzoKLSsgICAgICAvKiBCZSBzYWZlIGFuZCBsZXQgdGhlIHVzZXIgY2FsbCB0aGlzIGZ1bmN0aW9uIGFnYWluLiAgKi8KLSsgICAgICAtLWV4cDsKLSsgICAgICByZXN1bHQgPSBZWUVPRjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgZGVmYXVsdDoKLSsgICAgICByZXN1bHQgPSBZWUVSUkNPREU7Ci0rI2lmIFlZREVCVUcgIT0gMAotKyAgICAgIC0tZXhwOwotKyNlbmRpZgotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rCi0rICAqcGV4cCA9IGV4cDsKLSsKLSsgIHJldHVybiByZXN1bHQ7Ci0rfQotKwotKwotK3N0YXRpYyB2b2lkCi0reXllcnJvciAoY29uc3QgY2hhciAqc3RyKQotK3sKLSsgIC8qIERvIG5vdGhpbmcuICBXZSBkb24ndCBwcmludCBlcnJvciBtZXNzYWdlcyBoZXJlLiAgKi8KLSt9Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvcGx1cmFsLWV4cC5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3BsdXJhbC1leHAuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjU3ODcxNDE5MiAtMDQwMAotQEAgLTAsMCArMSwxNTQgQEAKLSsvKiBFeHByZXNzaW9uIHBhcnNpbmcgZm9yIHBsdXJhbCBmb3JtIHNlbGVjdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMSwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAyMDAwLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPGN0eXBlLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsKLSsjaW5jbHVkZSAicGx1cmFsLWV4cC5oIgotKwotKyNpZiAoZGVmaW5lZCBfX0dOVUNfXyAmJiAhZGVmaW5lZCBfX0FQUExFX0NDX18pIFwKLSsgICAgfHwgKGRlZmluZWQgX19TVERDX1ZFUlNJT05fXyAmJiBfX1NURENfVkVSU0lPTl9fID49IDE5OTkwMUwpCi0rCi0rLyogVGhlc2Ugc3RydWN0cyBhcmUgdGhlIGNvbnN0YW50IGV4cHJlc3Npb24gZm9yIHRoZSBnZXJtYW5pYyBwbHVyYWwKLSsgICBmb3JtIGRldGVybWluYXRpb24uICBJdCByZXByZXNlbnRzIHRoZSBleHByZXNzaW9uICAibiAhPSAxIi4gICovCi0rc3RhdGljIGNvbnN0IHN0cnVjdCBleHByZXNzaW9uIHBsdmFyID0KLSt7Ci0rICAubmFyZ3MgPSAwLAotKyAgLm9wZXJhdGlvbiA9IHZhciwKLSt9OwotK3N0YXRpYyBjb25zdCBzdHJ1Y3QgZXhwcmVzc2lvbiBwbG9uZSA9Ci0rewotKyAgLm5hcmdzID0gMCwKLSsgIC5vcGVyYXRpb24gPSBudW0sCi0rICAudmFsID0KLSsgIHsKLSsgICAgLm51bSA9IDEKLSsgIH0KLSt9OwotK3N0cnVjdCBleHByZXNzaW9uIEdFUk1BTklDX1BMVVJBTCA9Ci0rewotKyAgLm5hcmdzID0gMiwKLSsgIC5vcGVyYXRpb24gPSBub3RfZXF1YWwsCi0rICAudmFsID0KLSsgIHsKLSsgICAgLmFyZ3MgPQotKyAgICB7Ci0rICAgICAgWzBdID0gKHN0cnVjdCBleHByZXNzaW9uICopICZwbHZhciwKLSsgICAgICBbMV0gPSAoc3RydWN0IGV4cHJlc3Npb24gKikgJnBsb25lCi0rICAgIH0KLSsgIH0KLSt9OwotKwotKyMgZGVmaW5lIElOSVRfR0VSTUFOSUNfUExVUkFMKCkKLSsKLSsjZWxzZQotKwotKy8qIEZvciBjb21waWxlcnMgd2l0aG91dCBzdXBwb3J0IGZvciBJU08gQyA5OSBzdHJ1Y3QvdW5pb24gaW5pdGlhbGl6ZXJzOgotKyAgIEluaXRpYWxpemF0aW9uIGF0IHJ1bi10aW1lLiAgKi8KLSsKLStzdGF0aWMgc3RydWN0IGV4cHJlc3Npb24gcGx2YXI7Ci0rc3RhdGljIHN0cnVjdCBleHByZXNzaW9uIHBsb25lOwotK3N0cnVjdCBleHByZXNzaW9uIEdFUk1BTklDX1BMVVJBTDsKLSsKLStzdGF0aWMgdm9pZAotK2luaXRfZ2VybWFuaWNfcGx1cmFsICgpCi0rewotKyAgaWYgKHBsb25lLnZhbC5udW0gPT0gMCkKLSsgICAgewotKyAgICAgIHBsdmFyLm5hcmdzID0gMDsKLSsgICAgICBwbHZhci5vcGVyYXRpb24gPSB2YXI7Ci0rCi0rICAgICAgcGxvbmUubmFyZ3MgPSAwOwotKyAgICAgIHBsb25lLm9wZXJhdGlvbiA9IG51bTsKLSsgICAgICBwbG9uZS52YWwubnVtID0gMTsKLSsKLSsgICAgICBHRVJNQU5JQ19QTFVSQUwubmFyZ3MgPSAyOwotKyAgICAgIEdFUk1BTklDX1BMVVJBTC5vcGVyYXRpb24gPSBub3RfZXF1YWw7Ci0rICAgICAgR0VSTUFOSUNfUExVUkFMLnZhbC5hcmdzWzBdID0gJnBsdmFyOwotKyAgICAgIEdFUk1BTklDX1BMVVJBTC52YWwuYXJnc1sxXSA9ICZwbG9uZTsKLSsgICAgfQotK30KLSsKLSsjIGRlZmluZSBJTklUX0dFUk1BTklDX1BMVVJBTCgpIGluaXRfZ2VybWFuaWNfcGx1cmFsICgpCi0rCi0rI2VuZGlmCi0rCi0rdm9pZAotK2ludGVybmFsX2Z1bmN0aW9uCi0rRVhUUkFDVF9QTFVSQUxfRVhQUkVTU0lPTiAoY29uc3QgY2hhciAqbnVsbGVudHJ5LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqKnBsdXJhbHAsCi0rCQkJICAgdW5zaWduZWQgbG9uZyBpbnQgKm5wbHVyYWxzcCkKLSt7Ci0rICBpZiAobnVsbGVudHJ5ICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICBjb25zdCBjaGFyICpwbHVyYWw7Ci0rICAgICAgY29uc3QgY2hhciAqbnBsdXJhbHM7Ci0rCi0rICAgICAgcGx1cmFsID0gc3Ryc3RyIChudWxsZW50cnksICJwbHVyYWw9Iik7Ci0rICAgICAgbnBsdXJhbHMgPSBzdHJzdHIgKG51bGxlbnRyeSwgIm5wbHVyYWxzPSIpOwotKyAgICAgIGlmIChwbHVyYWwgPT0gTlVMTCB8fCBucGx1cmFscyA9PSBOVUxMKQotKwlnb3RvIG5vX3BsdXJhbDsKLSsgICAgICBlbHNlCi0rCXsKLSsJICBjaGFyICplbmRwOwotKwkgIHVuc2lnbmVkIGxvbmcgaW50IG47Ci0rCSAgc3RydWN0IHBhcnNlX2FyZ3MgYXJnczsKLSsKLSsJICAvKiBGaXJzdCBnZXQgdGhlIG51bWJlci4gICovCi0rCSAgbnBsdXJhbHMgKz0gOTsKLSsJICB3aGlsZSAoKm5wbHVyYWxzICE9ICdcMCcgJiYgaXNzcGFjZSAoKHVuc2lnbmVkIGNoYXIpICpucGx1cmFscykpCi0rCSAgICArK25wbHVyYWxzOwotKwkgIGlmICghKCpucGx1cmFscyA+PSAnMCcgJiYgKm5wbHVyYWxzIDw9ICc5JykpCi0rCSAgICBnb3RvIG5vX3BsdXJhbDsKLSsjaWYgZGVmaW5lZCBIQVZFX1NUUlRPVUwgfHwgZGVmaW5lZCBfTElCQwotKwkgIG4gPSBzdHJ0b3VsIChucGx1cmFscywgJmVuZHAsIDEwKTsKLSsjZWxzZQotKwkgIGZvciAoZW5kcCA9IG5wbHVyYWxzLCBuID0gMDsgKmVuZHAgPj0gJzAnICYmICplbmRwIDw9ICc5JzsgZW5kcCsrKQotKwkgICAgbiA9IG4gKiAxMCArICgqZW5kcCAtICcwJyk7Ci0rI2VuZGlmCi0rCSAgaWYgKG5wbHVyYWxzID09IGVuZHApCi0rCSAgICBnb3RvIG5vX3BsdXJhbDsKLSsJICAqbnBsdXJhbHNwID0gbjsKLSsKLSsJICAvKiBEdWUgdG8gdGhlIHJlc3RyaWN0aW9ucyBiaXNvbiBpbXBvc2VzIG9udG8gdGhlIGludGVyZmFjZSBvZiB0aGUKLSsJICAgICBzY2FubmVyIGZ1bmN0aW9uIHdlIGhhdmUgdG8gcHV0IHRoZSBpbnB1dCBzdHJpbmcgYW5kIHRoZSByZXN1bHQKLSsJICAgICBwYXNzZWQgdXAgZnJvbSB0aGUgcGFyc2VyIGludG8gdGhlIHNhbWUgc3RydWN0dXJlIHdoaWNoIGFkZHJlc3MKLSsJICAgICBpcyBwYXNzZWQgZG93biB0byB0aGUgcGFyc2VyLiAgKi8KLSsJICBwbHVyYWwgKz0gNzsKLSsJICBhcmdzLmNwID0gcGx1cmFsOwotKwkgIGlmIChQTFVSQUxfUEFSU0UgKCZhcmdzKSAhPSAwKQotKwkgICAgZ290byBub19wbHVyYWw7Ci0rCSAgKnBsdXJhbHAgPSBhcmdzLnJlczsKLSsJfQotKyAgICB9Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICAvKiBCeSBkZWZhdWx0IHdlIGFyZSB1c2luZyB0aGUgR2VybWFuaWMgZm9ybTogc2luZ3VsYXIgZm9ybSBvbmx5Ci0rICAgICAgICAgZm9yIGBvbmUnLCB0aGUgcGx1cmFsIGZvcm0gb3RoZXJ3aXNlLiAgWWVzLCB0aGlzIGlzIGFsc28gd2hhdAotKyAgICAgICAgIEVuZ2xpc2ggaXMgdXNpbmcgc2luY2UgRW5nbGlzaCBpcyBhIEdlcm1hbmljIGxhbmd1YWdlLiAgKi8KLSsgICAgbm9fcGx1cmFsOgotKyAgICAgIElOSVRfR0VSTUFOSUNfUExVUkFMICgpOwotKyAgICAgICpwbHVyYWxwID0gJkdFUk1BTklDX1BMVVJBTDsKLSsgICAgICAqbnBsdXJhbHNwID0gMjsKLSsgICAgfQotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9wbHVyYWwtZXhwLmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvcGx1cmFsLWV4cC5oCTIwMDQtMDktMTIgMTQ6NDA6MzQuNTg0NzEzMjgwIC0wNDAwCi1AQCAtMCwwICsxLDExOCBAQAotKy8qIEV4cHJlc3Npb24gcGFyc2luZyBhbmQgZXZhbHVhdGlvbiBmb3IgcGx1cmFsIGZvcm0gc2VsZWN0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMjAwMC0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFdyaXR0ZW4gYnkgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDIwMDAuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZm5kZWYgX1BMVVJBTF9FWFBfSAotKyNkZWZpbmUgX1BMVVJBTF9FWFBfSAotKwotKyNpZm5kZWYgaW50ZXJuYWxfZnVuY3Rpb24KLSsjIGRlZmluZSBpbnRlcm5hbF9mdW5jdGlvbgotKyNlbmRpZgotKwotKyNpZm5kZWYgYXR0cmlidXRlX2hpZGRlbgotKyMgZGVmaW5lIGF0dHJpYnV0ZV9oaWRkZW4KLSsjZW5kaWYKLSsKLSsKLSsvKiBUaGlzIGlzIHRoZSByZXByZXNlbnRhdGlvbiBvZiB0aGUgZXhwcmVzc2lvbnMgdG8gZGV0ZXJtaW5lIHRoZQotKyAgIHBsdXJhbCBmb3JtLiAgKi8KLStzdHJ1Y3QgZXhwcmVzc2lvbgotK3sKLSsgIGludCBuYXJnczsJCQkvKiBOdW1iZXIgb2YgYXJndW1lbnRzLiAgKi8KLSsgIGVudW0gb3BlcmF0b3IKLSsgIHsKLSsgICAgLyogV2l0aG91dCBhcmd1bWVudHM6ICAqLwotKyAgICB2YXIsCQkJLyogVGhlIHZhcmlhYmxlICJuIi4gICovCi0rICAgIG51bSwJCQkvKiBEZWNpbWFsIG51bWJlci4gICovCi0rICAgIC8qIFVuYXJ5IG9wZXJhdG9yczogICovCi0rICAgIGxub3QsCQkJLyogTG9naWNhbCBOT1QuICAqLwotKyAgICAvKiBCaW5hcnkgb3BlcmF0b3JzOiAgKi8KLSsgICAgbXVsdCwJCQkvKiBNdWx0aXBsaWNhdGlvbi4gICovCi0rICAgIGRpdmlkZSwJCQkvKiBEaXZpc2lvbi4gICovCi0rICAgIG1vZHVsZSwJCQkvKiBNb2R1bG8gb3BlcmF0aW9uLiAgKi8KLSsgICAgcGx1cywJCQkvKiBBZGRpdGlvbi4gICovCi0rICAgIG1pbnVzLAkJCS8qIFN1YnRyYWN0aW9uLiAgKi8KLSsgICAgbGVzc190aGFuLAkJCS8qIENvbXBhcmlzb24uICAqLwotKyAgICBncmVhdGVyX3RoYW4sCQkvKiBDb21wYXJpc29uLiAgKi8KLSsgICAgbGVzc19vcl9lcXVhbCwJCS8qIENvbXBhcmlzb24uICAqLwotKyAgICBncmVhdGVyX29yX2VxdWFsLAkJLyogQ29tcGFyaXNvbi4gICovCi0rICAgIGVxdWFsLAkJCS8qIENvbXBhcmlzb24gZm9yIGVxdWFsaXR5LiAgKi8KLSsgICAgbm90X2VxdWFsLAkJCS8qIENvbXBhcmlzb24gZm9yIGluZXF1YWxpdHkuICAqLwotKyAgICBsYW5kLAkJCS8qIExvZ2ljYWwgQU5ELiAgKi8KLSsgICAgbG9yLAkJCS8qIExvZ2ljYWwgT1IuICAqLwotKyAgICAvKiBUZXJuYXJ5IG9wZXJhdG9yczogICovCi0rICAgIHFtb3AJCQkvKiBRdWVzdGlvbiBtYXJrIG9wZXJhdG9yLiAgKi8KLSsgIH0gb3BlcmF0aW9uOwotKyAgdW5pb24KLSsgIHsKLSsgICAgdW5zaWduZWQgbG9uZyBpbnQgbnVtOwkvKiBOdW1iZXIgdmFsdWUgZm9yIGBudW0nLiAgKi8KLSsgICAgc3RydWN0IGV4cHJlc3Npb24gKmFyZ3NbM107CS8qIFVwIHRvIHRocmVlIGFyZ3VtZW50cy4gICovCi0rICB9IHZhbDsKLSt9OwotKwotKy8qIFRoaXMgaXMgdGhlIGRhdGEgc3RydWN0dXJlIHRvIHBhc3MgaW5mb3JtYXRpb24gdG8gdGhlIHBhcnNlciBhbmQgZ2V0Ci0rICAgdGhlIHJlc3VsdCBpbiBhIHRocmVhZC1zYWZlIHdheS4gICovCi0rc3RydWN0IHBhcnNlX2FyZ3MKLSt7Ci0rICBjb25zdCBjaGFyICpjcDsKLSsgIHN0cnVjdCBleHByZXNzaW9uICpyZXM7Ci0rfTsKLSsKLSsKLSsvKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGlzIHNvdXJjZSBjb2RlIGlzIHVzZWQKLSsgICAxLiBpbiB0aGUgR05VIEMgTGlicmFyeSBsaWJyYXJ5LAotKyAgIDIuIGluIHRoZSBHTlUgbGliaW50bCBsaWJyYXJ5LAotKyAgIDMuIGluIHRoZSBHTlUgZ2V0dGV4dCB0b29scy4KLSsgICBUaGUgZnVuY3Rpb24gbmFtZXMgaW4gZWFjaCBzaXR1YXRpb24gbXVzdCBiZSBkaWZmZXJlbnQsIHRvIGFsbG93IGZvcgotKyAgIGJpbmFyeSBpbmNvbXBhdGlibGUgY2hhbmdlcyBpbiAnc3RydWN0IGV4cHJlc3Npb24nLiAgRnVydGhlcm1vcmUsCi0rICAgMS4gaW4gdGhlIEdOVSBDIExpYnJhcnkgbGlicmFyeSwgdGhlIG5hbWVzIGhhdmUgYSBfXyBwcmVmaXgsCi0rICAgMi4rMy4gaW4gdGhlIEdOVSBsaWJpbnRsIGxpYnJhcnkgYW5kIGluIHRoZSBHTlUgZ2V0dGV4dCB0b29scywgdGhlIG5hbWVzCi0rICAgICAgICAgbXVzdCBmb2xsb3cgQU5TSSBDIGFuZCBub3Qgc3RhcnQgd2l0aCBfXy4KLSsgICBTbyB3ZSBoYXZlIHRvIGRpc3Rpbmd1aXNoIHRoZSB0aHJlZSBjYXNlcy4gICovCi0rI2lmZGVmIF9MSUJDCi0rIyBkZWZpbmUgRlJFRV9FWFBSRVNTSU9OIF9fZ2V0dGV4dF9mcmVlX2V4cAotKyMgZGVmaW5lIFBMVVJBTF9QQVJTRSBfX2dldHRleHRwYXJzZQotKyMgZGVmaW5lIEdFUk1BTklDX1BMVVJBTCBfX2dldHRleHRfZ2VybWFuaWNfcGx1cmFsCi0rIyBkZWZpbmUgRVhUUkFDVF9QTFVSQUxfRVhQUkVTU0lPTiBfX2dldHRleHRfZXh0cmFjdF9wbHVyYWwKLSsjZWxpZiBkZWZpbmVkIChJTl9MSUJJTlRMKQotKyMgZGVmaW5lIEZSRUVfRVhQUkVTU0lPTiBsaWJpbnRsX2dldHRleHRfZnJlZV9leHAKLSsjIGRlZmluZSBQTFVSQUxfUEFSU0UgbGliaW50bF9nZXR0ZXh0cGFyc2UKLSsjIGRlZmluZSBHRVJNQU5JQ19QTFVSQUwgbGliaW50bF9nZXR0ZXh0X2dlcm1hbmljX3BsdXJhbAotKyMgZGVmaW5lIEVYVFJBQ1RfUExVUkFMX0VYUFJFU1NJT04gbGliaW50bF9nZXR0ZXh0X2V4dHJhY3RfcGx1cmFsCi0rI2Vsc2UKLSsjIGRlZmluZSBGUkVFX0VYUFJFU1NJT04gZnJlZV9wbHVyYWxfZXhwcmVzc2lvbgotKyMgZGVmaW5lIFBMVVJBTF9QQVJTRSBwYXJzZV9wbHVyYWxfZXhwcmVzc2lvbgotKyMgZGVmaW5lIEdFUk1BTklDX1BMVVJBTCBnZXJtYW5pY19wbHVyYWwKLSsjIGRlZmluZSBFWFRSQUNUX1BMVVJBTF9FWFBSRVNTSU9OIGV4dHJhY3RfcGx1cmFsX2V4cHJlc3Npb24KLSsjZW5kaWYKLSsKLStleHRlcm4gdm9pZCBGUkVFX0VYUFJFU1NJT04gKHN0cnVjdCBleHByZXNzaW9uICpleHApCi0rICAgICBpbnRlcm5hbF9mdW5jdGlvbjsKLStleHRlcm4gaW50IFBMVVJBTF9QQVJTRSAodm9pZCAqYXJnKTsKLStleHRlcm4gc3RydWN0IGV4cHJlc3Npb24gR0VSTUFOSUNfUExVUkFMIGF0dHJpYnV0ZV9oaWRkZW47Ci0rZXh0ZXJuIHZvaWQgRVhUUkFDVF9QTFVSQUxfRVhQUkVTU0lPTiAoY29uc3QgY2hhciAqbnVsbGVudHJ5LAotKwkJCQkgICAgICAgc3RydWN0IGV4cHJlc3Npb24gKipwbHVyYWxwLAotKwkJCQkgICAgICAgdW5zaWduZWQgbG9uZyBpbnQgKm5wbHVyYWxzcCkKLSsgICAgIGludGVybmFsX2Z1bmN0aW9uOwotKwotKyNpZiAhZGVmaW5lZCAoX0xJQkMpICYmICFkZWZpbmVkIChJTl9MSUJJTlRMKQotK2V4dGVybiB1bnNpZ25lZCBsb25nIGludCBwbHVyYWxfZXZhbCAoc3RydWN0IGV4cHJlc3Npb24gKnBleHAsCi0rCQkJCSAgICAgIHVuc2lnbmVkIGxvbmcgaW50IG4pOwotKyNlbmRpZgotKwotKyNlbmRpZiAvKiBfUExVUkFMX0VYUF9IICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvcGx1cmFsLnkJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvcGx1cmFsLnkJMjAwNC0wOS0xMiAxNDo0MDozNC41ODk3MTI1MjAgLTA0MDAKLUBAIC0wLDAgKzEsMzgxIEBACi0rJXsKLSsvKiBFeHByZXNzaW9uIHBhcnNpbmcgZm9yIHBsdXJhbCBmb3JtIHNlbGVjdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMSwgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBXcml0dGVuIGJ5IFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAyMDAwLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsvKiBUaGUgYmlzb24gZ2VuZXJhdGVkIHBhcnNlciB1c2VzIGFsbG9jYS4gIEFJWCAzIGZvcmNlcyB1cyB0byBwdXQgdGhpcwotKyAgIGRlY2xhcmF0aW9uIGF0IHRoZSBiZWdpbm5pbmcgb2YgdGhlIGZpbGUuICBUaGUgZGVjbGFyYXRpb24gaW4gYmlzb24ncwotKyAgIHNrZWxldG9uIGZpbGUgY29tZXMgdG9vIGxhdGUuICBUaGlzIG11c3QgY29tZSBiZWZvcmUgPGNvbmZpZy5oPgotKyAgIGJlY2F1c2UgPGNvbmZpZy5oPiBtYXkgaW5jbHVkZSBhcmJpdHJhcnkgc3lzdGVtIGhlYWRlcnMuICAqLwotKyNpZiBkZWZpbmVkIF9BSVggJiYgIWRlZmluZWQgX19HTlVDX18KLSsgI3ByYWdtYSBhbGxvY2EKLSsjZW5kaWYKLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSAicGx1cmFsLWV4cC5oIgotKwotKy8qIFRoZSBtYWluIGZ1bmN0aW9uIGdlbmVyYXRlZCBieSB0aGUgcGFyc2VyIGlzIGNhbGxlZCBfX2dldHRleHRwYXJzZSwKLSsgICBidXQgd2Ugd2FudCBpdCB0byBiZSBjYWxsZWQgUExVUkFMX1BBUlNFLiAgKi8KLSsjaWZuZGVmIF9MSUJDCi0rIyBkZWZpbmUgX19nZXR0ZXh0cGFyc2UgUExVUkFMX1BBUlNFCi0rI2VuZGlmCi0rCi0rI2RlZmluZSBZWUxFWF9QQVJBTQkmKChzdHJ1Y3QgcGFyc2VfYXJncyAqKSBhcmcpLT5jcAotKyNkZWZpbmUgWVlQQVJTRV9QQVJBTQlhcmcKLSslfQotKyVwdXJlX3BhcnNlcgotKyVleHBlY3QgNwotKwotKyV1bmlvbiB7Ci0rICB1bnNpZ25lZCBsb25nIGludCBudW07Ci0rICBlbnVtIG9wZXJhdG9yIG9wOwotKyAgc3RydWN0IGV4cHJlc3Npb24gKmV4cDsKLSt9Ci0rCi0rJXsKLSsvKiBQcm90b3R5cGVzIGZvciBsb2NhbCBmdW5jdGlvbnMuICAqLwotK3N0YXRpYyBpbnQgeXlsZXggKFlZU1RZUEUgKmx2YWwsIGNvbnN0IGNoYXIgKipwZXhwKTsKLStzdGF0aWMgdm9pZCB5eWVycm9yIChjb25zdCBjaGFyICpzdHIpOwotKwotKy8qIEFsbG9jYXRpb24gb2YgZXhwcmVzc2lvbnMuICAqLwotKwotK3N0YXRpYyBzdHJ1Y3QgZXhwcmVzc2lvbiAqCi0rbmV3X2V4cCAoaW50IG5hcmdzLCBlbnVtIG9wZXJhdG9yIG9wLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqIGNvbnN0ICphcmdzKQotK3sKLSsgIGludCBpOwotKyAgc3RydWN0IGV4cHJlc3Npb24gKm5ld3A7Ci0rCi0rICAvKiBJZiBhbnkgb2YgdGhlIGFyZ3VtZW50IGNvdWxkIG5vdCBiZSBtYWxsb2MnZWQsIGp1c3QgcmV0dXJuIE5VTEwuICAqLwotKyAgZm9yIChpID0gbmFyZ3MgLSAxOyBpID49IDA7IGktLSkKLSsgICAgaWYgKGFyZ3NbaV0gPT0gTlVMTCkKLSsgICAgICBnb3RvIGZhaWw7Ci0rCi0rICAvKiBBbGxvY2F0ZSBhIG5ldyBleHByZXNzaW9uLiAgKi8KLSsgIG5ld3AgPSAoc3RydWN0IGV4cHJlc3Npb24gKikgbWFsbG9jIChzaXplb2YgKCpuZXdwKSk7Ci0rICBpZiAobmV3cCAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgbmV3cC0+bmFyZ3MgPSBuYXJnczsKLSsgICAgICBuZXdwLT5vcGVyYXRpb24gPSBvcDsKLSsgICAgICBmb3IgKGkgPSBuYXJncyAtIDE7IGkgPj0gMDsgaS0tKQotKwluZXdwLT52YWwuYXJnc1tpXSA9IGFyZ3NbaV07Ci0rICAgICAgcmV0dXJuIG5ld3A7Ci0rICAgIH0KLSsKLSsgZmFpbDoKLSsgIGZvciAoaSA9IG5hcmdzIC0gMTsgaSA+PSAwOyBpLS0pCi0rICAgIEZSRUVfRVhQUkVTU0lPTiAoYXJnc1tpXSk7Ci0rCi0rICByZXR1cm4gTlVMTDsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSBzdHJ1Y3QgZXhwcmVzc2lvbiAqCi0rbmV3X2V4cF8wIChlbnVtIG9wZXJhdG9yIG9wKQotK3sKLSsgIHJldHVybiBuZXdfZXhwICgwLCBvcCwgTlVMTCk7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgc3RydWN0IGV4cHJlc3Npb24gKgotK25ld19leHBfMSAoZW51bSBvcGVyYXRvciBvcCwgc3RydWN0IGV4cHJlc3Npb24gKnJpZ2h0KQotK3sKLSsgIHN0cnVjdCBleHByZXNzaW9uICphcmdzWzFdOwotKwotKyAgYXJnc1swXSA9IHJpZ2h0OwotKyAgcmV0dXJuIG5ld19leHAgKDEsIG9wLCBhcmdzKTsKLSt9Ci0rCi0rc3RhdGljIHN0cnVjdCBleHByZXNzaW9uICoKLStuZXdfZXhwXzIgKGVudW0gb3BlcmF0b3Igb3AsIHN0cnVjdCBleHByZXNzaW9uICpsZWZ0LCBzdHJ1Y3QgZXhwcmVzc2lvbiAqcmlnaHQpCi0rewotKyAgc3RydWN0IGV4cHJlc3Npb24gKmFyZ3NbMl07Ci0rCi0rICBhcmdzWzBdID0gbGVmdDsKLSsgIGFyZ3NbMV0gPSByaWdodDsKLSsgIHJldHVybiBuZXdfZXhwICgyLCBvcCwgYXJncyk7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgc3RydWN0IGV4cHJlc3Npb24gKgotK25ld19leHBfMyAoZW51bSBvcGVyYXRvciBvcCwgc3RydWN0IGV4cHJlc3Npb24gKmJleHAsCi0rCSAgIHN0cnVjdCBleHByZXNzaW9uICp0YnJhbmNoLCBzdHJ1Y3QgZXhwcmVzc2lvbiAqZmJyYW5jaCkKLSt7Ci0rICBzdHJ1Y3QgZXhwcmVzc2lvbiAqYXJnc1szXTsKLSsKLSsgIGFyZ3NbMF0gPSBiZXhwOwotKyAgYXJnc1sxXSA9IHRicmFuY2g7Ci0rICBhcmdzWzJdID0gZmJyYW5jaDsKLSsgIHJldHVybiBuZXdfZXhwICgzLCBvcCwgYXJncyk7Ci0rfQotKwotKyV9Ci0rCi0rLyogVGhpcyBkZWNsYXJlcyB0aGF0IGFsbCBvcGVyYXRvcnMgaGF2ZSB0aGUgc2FtZSBhc3NvY2lhdGl2aXR5IGFuZCB0aGUKLSsgICBwcmVjZWRlbmNlIG9yZGVyIGFzIGluIEMuICBTZWUgW0hhcmJpc29uLCBTdGVlbGU6IEMsIEEgUmVmZXJlbmNlIE1hbnVhbF0uCi0rICAgVGhlcmUgaXMgbm8gdW5hcnkgbWludXMgYW5kIG5vIGJpdHdpc2Ugb3BlcmF0b3JzLgotKyAgIE9wZXJhdG9ycyB3aXRoIHRoZSBzYW1lIHN5bnRhY3RpYyBiZWhhdmlvdXIgaGF2ZSBiZWVuIG1lcmdlZCBpbnRvIGEgc2luZ2xlCi0rICAgdG9rZW4sIHRvIHNhdmUgc3BhY2UgaW4gdGhlIGFycmF5IGdlbmVyYXRlZCBieSBiaXNvbi4gICovCi0rJXJpZ2h0ICc/JwkJLyogICA/CQkqLwotKyVsZWZ0ICd8JwkJLyogICB8fAkJKi8KLSslbGVmdCAnJicJCS8qICAgJiYJCSovCi0rJWxlZnQgRVFVT1AyCQkvKiAgID09ICE9CSovCi0rJWxlZnQgQ01QT1AyCQkvKiAgIDwgPiA8PSA+PQkqLwotKyVsZWZ0IEFERE9QMgkJLyogICArIC0JKi8KLSslbGVmdCBNVUxPUDIJCS8qICAgKiAvICUJKi8KLSslcmlnaHQgJyEnCQkvKiAgICEJCSovCi0rCi0rJXRva2VuIDxvcD4gRVFVT1AyIENNUE9QMiBBRERPUDIgTVVMT1AyCi0rJXRva2VuIDxudW0+IE5VTUJFUgotKyV0eXBlIDxleHA+IGV4cAotKwotKyUlCi0rCi0rc3RhcnQ6CSAgZXhwCi0rCSAgewotKwkgICAgaWYgKCQxID09IE5VTEwpCi0rCSAgICAgIFlZQUJPUlQ7Ci0rCSAgICAoKHN0cnVjdCBwYXJzZV9hcmdzICopIGFyZyktPnJlcyA9ICQxOwotKwkgIH0KLSsJOwotKwotK2V4cDoJICBleHAgJz8nIGV4cCAnOicgZXhwCi0rCSAgewotKwkgICAgJCQgPSBuZXdfZXhwXzMgKHFtb3AsICQxLCAkMywgJDUpOwotKwkgIH0KLSsJfCBleHAgJ3wnIGV4cAotKwkgIHsKLSsJICAgICQkID0gbmV3X2V4cF8yIChsb3IsICQxLCAkMyk7Ci0rCSAgfQotKwl8IGV4cCAnJicgZXhwCi0rCSAgewotKwkgICAgJCQgPSBuZXdfZXhwXzIgKGxhbmQsICQxLCAkMyk7Ci0rCSAgfQotKwl8IGV4cCBFUVVPUDIgZXhwCi0rCSAgewotKwkgICAgJCQgPSBuZXdfZXhwXzIgKCQyLCAkMSwgJDMpOwotKwkgIH0KLSsJfCBleHAgQ01QT1AyIGV4cAotKwkgIHsKLSsJICAgICQkID0gbmV3X2V4cF8yICgkMiwgJDEsICQzKTsKLSsJICB9Ci0rCXwgZXhwIEFERE9QMiBleHAKLSsJICB7Ci0rCSAgICAkJCA9IG5ld19leHBfMiAoJDIsICQxLCAkMyk7Ci0rCSAgfQotKwl8IGV4cCBNVUxPUDIgZXhwCi0rCSAgewotKwkgICAgJCQgPSBuZXdfZXhwXzIgKCQyLCAkMSwgJDMpOwotKwkgIH0KLSsJfCAnIScgZXhwCi0rCSAgewotKwkgICAgJCQgPSBuZXdfZXhwXzEgKGxub3QsICQyKTsKLSsJICB9Ci0rCXwgJ24nCi0rCSAgewotKwkgICAgJCQgPSBuZXdfZXhwXzAgKHZhcik7Ci0rCSAgfQotKwl8IE5VTUJFUgotKwkgIHsKLSsJICAgIGlmICgoJCQgPSBuZXdfZXhwXzAgKG51bSkpICE9IE5VTEwpCi0rCSAgICAgICQkLT52YWwubnVtID0gJDE7Ci0rCSAgfQotKwl8ICcoJyBleHAgJyknCi0rCSAgewotKwkgICAgJCQgPSAkMjsKLSsJICB9Ci0rCTsKLSsKLSslJQotKwotK3ZvaWQKLStpbnRlcm5hbF9mdW5jdGlvbgotK0ZSRUVfRVhQUkVTU0lPTiAoc3RydWN0IGV4cHJlc3Npb24gKmV4cCkKLSt7Ci0rICBpZiAoZXhwID09IE5VTEwpCi0rICAgIHJldHVybjsKLSsKLSsgIC8qIEhhbmRsZSB0aGUgcmVjdXJzaXZlIGNhc2UuICAqLwotKyAgc3dpdGNoIChleHAtPm5hcmdzKQotKyAgICB7Ci0rICAgIGNhc2UgMzoKLSsgICAgICBGUkVFX0VYUFJFU1NJT04gKGV4cC0+dmFsLmFyZ3NbMl0pOwotKyAgICAgIC8qIEZBTExUSFJPVUdIICovCi0rICAgIGNhc2UgMjoKLSsgICAgICBGUkVFX0VYUFJFU1NJT04gKGV4cC0+dmFsLmFyZ3NbMV0pOwotKyAgICAgIC8qIEZBTExUSFJPVUdIICovCi0rICAgIGNhc2UgMToKLSsgICAgICBGUkVFX0VYUFJFU1NJT04gKGV4cC0+dmFsLmFyZ3NbMF0pOwotKyAgICAgIC8qIEZBTExUSFJPVUdIICovCi0rICAgIGRlZmF1bHQ6Ci0rICAgICAgYnJlYWs7Ci0rICAgIH0KLSsKLSsgIGZyZWUgKGV4cCk7Ci0rfQotKwotKwotK3N0YXRpYyBpbnQKLSt5eWxleCAoWVlTVFlQRSAqbHZhbCwgY29uc3QgY2hhciAqKnBleHApCi0rewotKyAgY29uc3QgY2hhciAqZXhwID0gKnBleHA7Ci0rICBpbnQgcmVzdWx0OwotKwotKyAgd2hpbGUgKDEpCi0rICAgIHsKLSsgICAgICBpZiAoZXhwWzBdID09ICdcMCcpCi0rCXsKLSsJICAqcGV4cCA9IGV4cDsKLSsJICByZXR1cm4gWVlFT0Y7Ci0rCX0KLSsKLSsgICAgICBpZiAoZXhwWzBdICE9ICcgJyAmJiBleHBbMF0gIT0gJ1x0JykKLSsJYnJlYWs7Ci0rCi0rICAgICAgKytleHA7Ci0rICAgIH0KLSsKLSsgIHJlc3VsdCA9ICpleHArKzsKLSsgIHN3aXRjaCAocmVzdWx0KQotKyAgICB7Ci0rICAgIGNhc2UgJzAnOiBjYXNlICcxJzogY2FzZSAnMic6IGNhc2UgJzMnOiBjYXNlICc0JzoKLSsgICAgY2FzZSAnNSc6IGNhc2UgJzYnOiBjYXNlICc3JzogY2FzZSAnOCc6IGNhc2UgJzknOgotKyAgICAgIHsKLSsJdW5zaWduZWQgbG9uZyBpbnQgbiA9IHJlc3VsdCAtICcwJzsKLSsJd2hpbGUgKGV4cFswXSA+PSAnMCcgJiYgZXhwWzBdIDw9ICc5JykKLSsJICB7Ci0rCSAgICBuICo9IDEwOwotKwkgICAgbiArPSBleHBbMF0gLSAnMCc7Ci0rCSAgICArK2V4cDsKLSsJICB9Ci0rCWx2YWwtPm51bSA9IG47Ci0rCXJlc3VsdCA9IE5VTUJFUjsKLSsgICAgICB9Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJz0nOgotKyAgICAgIGlmIChleHBbMF0gPT0gJz0nKQotKwl7Ci0rCSAgKytleHA7Ci0rCSAgbHZhbC0+b3AgPSBlcXVhbDsKLSsJICByZXN1bHQgPSBFUVVPUDI7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXJlc3VsdCA9IFlZRVJSQ09ERTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnISc6Ci0rICAgICAgaWYgKGV4cFswXSA9PSAnPScpCi0rCXsKLSsJICArK2V4cDsKLSsJICBsdmFsLT5vcCA9IG5vdF9lcXVhbDsKLSsJICByZXN1bHQgPSBFUVVPUDI7Ci0rCX0KLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnJic6Ci0rICAgIGNhc2UgJ3wnOgotKyAgICAgIGlmIChleHBbMF0gPT0gcmVzdWx0KQotKwkrK2V4cDsKLSsgICAgICBlbHNlCi0rCXJlc3VsdCA9IFlZRVJSQ09ERTsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnPCc6Ci0rICAgICAgaWYgKGV4cFswXSA9PSAnPScpCi0rCXsKLSsJICArK2V4cDsKLSsJICBsdmFsLT5vcCA9IGxlc3Nfb3JfZXF1YWw7Ci0rCX0KLSsgICAgICBlbHNlCi0rCWx2YWwtPm9wID0gbGVzc190aGFuOwotKyAgICAgIHJlc3VsdCA9IENNUE9QMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnPic6Ci0rICAgICAgaWYgKGV4cFswXSA9PSAnPScpCi0rCXsKLSsJICArK2V4cDsKLSsJICBsdmFsLT5vcCA9IGdyZWF0ZXJfb3JfZXF1YWw7Ci0rCX0KLSsgICAgICBlbHNlCi0rCWx2YWwtPm9wID0gZ3JlYXRlcl90aGFuOwotKyAgICAgIHJlc3VsdCA9IENNUE9QMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnKic6Ci0rICAgICAgbHZhbC0+b3AgPSBtdWx0OwotKyAgICAgIHJlc3VsdCA9IE1VTE9QMjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgY2FzZSAnLyc6Ci0rICAgICAgbHZhbC0+b3AgPSBkaXZpZGU7Ci0rICAgICAgcmVzdWx0ID0gTVVMT1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICclJzoKLSsgICAgICBsdmFsLT5vcCA9IG1vZHVsZTsKLSsgICAgICByZXN1bHQgPSBNVUxPUDI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJysnOgotKyAgICAgIGx2YWwtPm9wID0gcGx1czsKLSsgICAgICByZXN1bHQgPSBBRERPUDI7Ci0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJy0nOgotKyAgICAgIGx2YWwtPm9wID0gbWludXM7Ci0rICAgICAgcmVzdWx0ID0gQURET1AyOwotKyAgICAgIGJyZWFrOwotKwotKyAgICBjYXNlICduJzoKLSsgICAgY2FzZSAnPyc6Ci0rICAgIGNhc2UgJzonOgotKyAgICBjYXNlICcoJzoKLSsgICAgY2FzZSAnKSc6Ci0rICAgICAgLyogTm90aGluZywganVzdCByZXR1cm4gdGhlIGNoYXJhY3Rlci4gICovCi0rICAgICAgYnJlYWs7Ci0rCi0rICAgIGNhc2UgJzsnOgotKyAgICBjYXNlICdcbic6Ci0rICAgIGNhc2UgJ1wwJzoKLSsgICAgICAvKiBCZSBzYWZlIGFuZCBsZXQgdGhlIHVzZXIgY2FsbCB0aGlzIGZ1bmN0aW9uIGFnYWluLiAgKi8KLSsgICAgICAtLWV4cDsKLSsgICAgICByZXN1bHQgPSBZWUVPRjsKLSsgICAgICBicmVhazsKLSsKLSsgICAgZGVmYXVsdDoKLSsgICAgICByZXN1bHQgPSBZWUVSUkNPREU7Ci0rI2lmIFlZREVCVUcgIT0gMAotKyAgICAgIC0tZXhwOwotKyNlbmRpZgotKyAgICAgIGJyZWFrOwotKyAgICB9Ci0rCi0rICAqcGV4cCA9IGV4cDsKLSsKLSsgIHJldHVybiByZXN1bHQ7Ci0rfQotKwotKwotK3N0YXRpYyB2b2lkCi0reXllcnJvciAoY29uc3QgY2hhciAqc3RyKQotK3sKLSsgIC8qIERvIG5vdGhpbmcuICBXZSBkb24ndCBwcmludCBlcnJvciBtZXNzYWdlcyBoZXJlLiAgKi8KLSt9Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvcG8ydGJsLnNlZC5pbgkxOTk4LTA0LTI2IDA5OjIwOjUyLjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9wbzJ0Ymwuc2VkLmluCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi1AQCAtMSwxMDIgKzAsMCBAQAotLSMgcG8ydGJsLnNlZCAtIENvbnZlcnQgVW5pZm9ydW0gc3R5bGUgLnBvIGZpbGUgdG8gbG9va3VwIHRhYmxlIGZvciBjYXRnZXRzCi0tIyBDb3B5cmlnaHQgKEMpIDE5OTUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tIyBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCi0tIwotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKLS0jIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0tIyBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0jCi0tIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLSMKLS0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotLSMgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsIFVTQS4KLS0jCi0tMSB7Ci0tICBpXAotLS8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHBvMnRibC5zZWQgZnJvbSBAUEFDS0FHRSBOQU1FQC5wb3QuICAqL1wKLS1cCi0tI2lmIEhBVkVfQ09ORklHX0hcCi0tIyBpbmNsdWRlIDxjb25maWcuaD5cCi0tI2VuZGlmXAotLVwKLS0jaW5jbHVkZSAibGliZ2V0dGV4dC5oIlwKLS1cCi0tY29uc3Qgc3RydWN0IF9tc2dfZW50IF9tc2dfdGJsW10gPSB7Ci0tICBoCi0tICBzLy4qLzAvCi0tICB4Ci0tfQotLSMKLS0jIFdyaXRlIG1zZ2lkIGVudHJpZXMgaW4gQyBhcnJheSBmb3JtLgotLSMKLS0vXm1zZ2lkLyB7Ci0tICBzL21zZ2lkWyAJXSpcKCIuKiJcKS8gIHtcMS8KLS0gIHRiCi0tIyBBcHBlbmQgdGhlIG5leHQgbGluZQotLSAgOmIKLS0gIE4KLS0jIExvb2sgd2hldGhlciBzZWNvbmQgcGFydCBpcyBjb250aW51YXRpb24gbGluZS4KLS0gIHMvXCguKlwpIlwoXG5cKSJcKC4qIlwpL1wxXDJcMy8KLS0jIFllcywgdGhlbiBicmFuY2guCi0tICB0YQotLSMgQmVjYXVzZSB3ZSBhc3N1bWUgdGhhdCB0aGUgaW5wdXQgZmlsZSBjb3JyZWN0bHkgZm9ybWVkIHRoZSBsaW5lCi0tIyBqdXN0IHJlYWQgY2Fubm90IGJlIGFnYWluIGJlIGEgbXNnaWQgbGluZS4gIFNvIGl0J3Mgc2FmZSB0byBpZ25vcmUKLS0jIGl0LgotLSAgcy9cKC4qXClcbi4qL1wxLwotLSAgYmMKLS0jIFdlIGZvdW5kIGEgY29udGludWF0aW9uIGxpbmUuICBCdXQgYmVmb3JlIHByaW50aW5nIGluc2VydCAnXCcuCi0tICA6YQotLSAgcy9cKC4qXClcKFxuLipcKS9cMVxcXDIvCi0tICBQCi0tIyBXZSBjYW5ub3QgdXNlIEQgaGVyZS4KLS0gIHMvLipcblwoLipcKS9cMS8KLS0jIFNvbWUgYnVnZ3kgc2VkcyBkbyBub3QgY2xlYXIgdGhlIGBzdWNjZXNzZnVsIHN1YnN0aXR1dGlvbiBzaW5jZSBsYXN0IGBgdCcnJwotLSMgZmxhZyBvbiBgTicsIHNvIHdlIGRvIGEgYHQnIGhlcmUgdG8gY2xlYXIgaXQuCi0tICB0YgotLSMgTm90IHJlYWNoZWQKLS0gIDpjCi0tICB4Ci0tIyBUaGUgZm9sbG93aW5nIG5pY2Ugc29sdXRpb24gaXMgYnkKLS0jIEJydW5vIDxIYWlibGVAbWEyczIubWF0aGVtYXRpay51bmkta2FybHNydWhlLmRlPgotLSAgdGQKLS0jIEluY3JlbWVudCBhIGRlY2ltYWwgbnVtYmVyIGluIHBhdHRlcm4gc3BhY2UuCi0tIyBGaXJzdCBoaWRlIHRyYWlsaW5nIGA5JyBkaWdpdHMuCi0tICA6ZAotLSAgcy85XChfKlwpJC9fXDEvCi0tICB0ZAotLSMgQXNzdXJlIGF0IGxlYXN0IG9uZSBkaWdpdCBpcyBhdmFpbGFibGUuCi0tICBzL15cKF8qXCkkLzBcMS8KLS0jIEluY3JlbWVudCB0aGUgbGFzdCBkaWdpdC4KLS0gIHMvOFwoXypcKSQvOVwxLwotLSAgcy83XChfKlwpJC84XDEvCi0tICBzLzZcKF8qXCkkLzdcMS8KLS0gIHMvNVwoXypcKSQvNlwxLwotLSAgcy80XChfKlwpJC81XDEvCi0tICBzLzNcKF8qXCkkLzRcMS8KLS0gIHMvMlwoXypcKSQvM1wxLwotLSAgcy8xXChfKlwpJC8yXDEvCi0tICBzLzBcKF8qXCkkLzFcMS8KLS0jIENvbnZlcnQgdGhlIGhpZGRlbiBgOScgZGlnaXRzIHRvIGAwJ3MuCi0tICBzL18vMC9nCi0tICB4Ci0tICBHCi0tICBzL1woLipcKVxuXChbMC05XSpcKS9cMSwgXDJ9LC8KLS0gIHMvXCguKlwpIiQvXDEvCi0tICBwCi0tfQotLSMKLS0jIExhc3QgbGluZS4KLS0jCi0tJCB7Ci0tICBpXAotLX07XAotLQotLSAgZwotLSAgcy8wKlwoLipcKS9pbnQgX21zZ190YmxfbGVuZ3RoID0gXDE7L3AKLS19Ci0tZAotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3ByaW50Zi1hcmdzLmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvcHJpbnRmLWFyZ3MuYwkyMDA0LTA5LTEyIDE0OjQwOjM0LjU5NTcxMTYwOCAtMDQwMAotQEAgLTAsMCArMSwxMTkgQEAKLSsvKiBEZWNvbXBvc2VkIHByaW50ZiBhcmd1bWVudCBsaXN0LgotKyAgIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMi0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0rLyogU3BlY2lmaWNhdGlvbi4gICovCi0rI2luY2x1ZGUgInByaW50Zi1hcmdzLmgiCi0rCi0rI2lmZGVmIFNUQVRJQwotK1NUQVRJQwotKyNlbmRpZgotK2ludAotK3ByaW50Zl9mZXRjaGFyZ3MgKHZhX2xpc3QgYXJncywgYXJndW1lbnRzICphKQotK3sKLSsgIHNpemVfdCBpOwotKyAgYXJndW1lbnQgKmFwOwotKwotKyAgZm9yIChpID0gMCwgYXAgPSAmYS0+YXJnWzBdOyBpIDwgYS0+Y291bnQ7IGkrKywgYXArKykKLSsgICAgc3dpdGNoIChhcC0+dHlwZSkKLSsgICAgICB7Ci0rICAgICAgY2FzZSBUWVBFX1NDSEFSOgotKwlhcC0+YS5hX3NjaGFyID0gdmFfYXJnIChhcmdzLCAvKnNpZ25lZCBjaGFyKi8gaW50KTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBUWVBFX1VDSEFSOgotKwlhcC0+YS5hX3VjaGFyID0gdmFfYXJnIChhcmdzLCAvKnVuc2lnbmVkIGNoYXIqLyBpbnQpOwotKwlicmVhazsKLSsgICAgICBjYXNlIFRZUEVfU0hPUlQ6Ci0rCWFwLT5hLmFfc2hvcnQgPSB2YV9hcmcgKGFyZ3MsIC8qc2hvcnQqLyBpbnQpOwotKwlicmVhazsKLSsgICAgICBjYXNlIFRZUEVfVVNIT1JUOgotKwlhcC0+YS5hX3VzaG9ydCA9IHZhX2FyZyAoYXJncywgLyp1bnNpZ25lZCBzaG9ydCovIGludCk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgVFlQRV9JTlQ6Ci0rCWFwLT5hLmFfaW50ID0gdmFfYXJnIChhcmdzLCBpbnQpOwotKwlicmVhazsKLSsgICAgICBjYXNlIFRZUEVfVUlOVDoKLSsJYXAtPmEuYV91aW50ID0gdmFfYXJnIChhcmdzLCB1bnNpZ25lZCBpbnQpOwotKwlicmVhazsKLSsgICAgICBjYXNlIFRZUEVfTE9OR0lOVDoKLSsJYXAtPmEuYV9sb25naW50ID0gdmFfYXJnIChhcmdzLCBsb25nIGludCk7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgVFlQRV9VTE9OR0lOVDoKLSsJYXAtPmEuYV91bG9uZ2ludCA9IHZhX2FyZyAoYXJncywgdW5zaWduZWQgbG9uZyBpbnQpOwotKwlicmVhazsKLSsjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSsgICAgICBjYXNlIFRZUEVfTE9OR0xPTkdJTlQ6Ci0rCWFwLT5hLmFfbG9uZ2xvbmdpbnQgPSB2YV9hcmcgKGFyZ3MsIGxvbmcgbG9uZyBpbnQpOwotKwlicmVhazsKLSsgICAgICBjYXNlIFRZUEVfVUxPTkdMT05HSU5UOgotKwlhcC0+YS5hX3Vsb25nbG9uZ2ludCA9IHZhX2FyZyAoYXJncywgdW5zaWduZWQgbG9uZyBsb25nIGludCk7Ci0rCWJyZWFrOwotKyNlbmRpZgotKyAgICAgIGNhc2UgVFlQRV9ET1VCTEU6Ci0rCWFwLT5hLmFfZG91YmxlID0gdmFfYXJnIChhcmdzLCBkb3VibGUpOwotKwlicmVhazsKLSsjaWZkZWYgSEFWRV9MT05HX0RPVUJMRQotKyAgICAgIGNhc2UgVFlQRV9MT05HRE9VQkxFOgotKwlhcC0+YS5hX2xvbmdkb3VibGUgPSB2YV9hcmcgKGFyZ3MsIGxvbmcgZG91YmxlKTsKLSsJYnJlYWs7Ci0rI2VuZGlmCi0rICAgICAgY2FzZSBUWVBFX0NIQVI6Ci0rCWFwLT5hLmFfY2hhciA9IHZhX2FyZyAoYXJncywgaW50KTsKLSsJYnJlYWs7Ci0rI2lmZGVmIEhBVkVfV0lOVF9UCi0rICAgICAgY2FzZSBUWVBFX1dJREVfQ0hBUjoKLSsJYXAtPmEuYV93aWRlX2NoYXIgPSB2YV9hcmcgKGFyZ3MsIHdpbnRfdCk7Ci0rCWJyZWFrOwotKyNlbmRpZgotKyAgICAgIGNhc2UgVFlQRV9TVFJJTkc6Ci0rCWFwLT5hLmFfc3RyaW5nID0gdmFfYXJnIChhcmdzLCBjb25zdCBjaGFyICopOwotKwlicmVhazsKLSsjaWZkZWYgSEFWRV9XQ0hBUl9UCi0rICAgICAgY2FzZSBUWVBFX1dJREVfU1RSSU5HOgotKwlhcC0+YS5hX3dpZGVfc3RyaW5nID0gdmFfYXJnIChhcmdzLCBjb25zdCB3Y2hhcl90ICopOwotKwlicmVhazsKLSsjZW5kaWYKLSsgICAgICBjYXNlIFRZUEVfUE9JTlRFUjoKLSsJYXAtPmEuYV9wb2ludGVyID0gdmFfYXJnIChhcmdzLCB2b2lkICopOwotKwlicmVhazsKLSsgICAgICBjYXNlIFRZUEVfQ09VTlRfU0NIQVJfUE9JTlRFUjoKLSsJYXAtPmEuYV9jb3VudF9zY2hhcl9wb2ludGVyID0gdmFfYXJnIChhcmdzLCBzaWduZWQgY2hhciAqKTsKLSsJYnJlYWs7Ci0rICAgICAgY2FzZSBUWVBFX0NPVU5UX1NIT1JUX1BPSU5URVI6Ci0rCWFwLT5hLmFfY291bnRfc2hvcnRfcG9pbnRlciA9IHZhX2FyZyAoYXJncywgc2hvcnQgKik7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgVFlQRV9DT1VOVF9JTlRfUE9JTlRFUjoKLSsJYXAtPmEuYV9jb3VudF9pbnRfcG9pbnRlciA9IHZhX2FyZyAoYXJncywgaW50ICopOwotKwlicmVhazsKLSsgICAgICBjYXNlIFRZUEVfQ09VTlRfTE9OR0lOVF9QT0lOVEVSOgotKwlhcC0+YS5hX2NvdW50X2xvbmdpbnRfcG9pbnRlciA9IHZhX2FyZyAoYXJncywgbG9uZyBpbnQgKik7Ci0rCWJyZWFrOwotKyNpZmRlZiBIQVZFX0xPTkdfTE9ORwotKyAgICAgIGNhc2UgVFlQRV9DT1VOVF9MT05HTE9OR0lOVF9QT0lOVEVSOgotKwlhcC0+YS5hX2NvdW50X2xvbmdsb25naW50X3BvaW50ZXIgPSB2YV9hcmcgKGFyZ3MsIGxvbmcgbG9uZyBpbnQgKik7Ci0rCWJyZWFrOwotKyNlbmRpZgotKyAgICAgIGRlZmF1bHQ6Ci0rCS8qIFVua25vd24gdHlwZS4gICovCi0rCXJldHVybiAtMTsKLSsgICAgICB9Ci0rICByZXR1cm4gMDsKLSt9Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvcHJpbnRmLWFyZ3MuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9wcmludGYtYXJncy5oCTIwMDQtMDktMTIgMTQ6NDA6MzQuNjAxNzEwNjk2IC0wNDAwCi1AQCAtMCwwICsxLDEzNyBAQAotKy8qIERlY29tcG9zZWQgcHJpbnRmIGFyZ3VtZW50IGxpc3QuCi0rICAgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAyLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZm5kZWYgX1BSSU5URl9BUkdTX0gKLSsjZGVmaW5lIF9QUklOVEZfQVJHU19ICi0rCi0rLyogR2V0IHNpemVfdC4gICovCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKwotKy8qIEdldCB3Y2hhcl90LiAgKi8KLSsjaWZkZWYgSEFWRV9XQ0hBUl9UCi0rIyBpbmNsdWRlIDxzdGRkZWYuaD4KLSsjZW5kaWYKLSsKLSsvKiBHZXQgd2ludF90LiAgKi8KLSsjaWZkZWYgSEFWRV9XSU5UX1QKLSsjIGluY2x1ZGUgPHdjaGFyLmg+Ci0rI2VuZGlmCi0rCi0rLyogR2V0IHZhX2xpc3QuICAqLwotKyNpbmNsdWRlIDxzdGRhcmcuaD4KLSsKLSsKLSsvKiBBcmd1bWVudCB0eXBlcyAqLwotK3R5cGVkZWYgZW51bQotK3sKLSsgIFRZUEVfTk9ORSwKLSsgIFRZUEVfU0NIQVIsCi0rICBUWVBFX1VDSEFSLAotKyAgVFlQRV9TSE9SVCwKLSsgIFRZUEVfVVNIT1JULAotKyAgVFlQRV9JTlQsCi0rICBUWVBFX1VJTlQsCi0rICBUWVBFX0xPTkdJTlQsCi0rICBUWVBFX1VMT05HSU5ULAotKyNpZmRlZiBIQVZFX0xPTkdfTE9ORwotKyAgVFlQRV9MT05HTE9OR0lOVCwKLSsgIFRZUEVfVUxPTkdMT05HSU5ULAotKyNlbmRpZgotKyAgVFlQRV9ET1VCTEUsCi0rI2lmZGVmIEhBVkVfTE9OR19ET1VCTEUKLSsgIFRZUEVfTE9OR0RPVUJMRSwKLSsjZW5kaWYKLSsgIFRZUEVfQ0hBUiwKLSsjaWZkZWYgSEFWRV9XSU5UX1QKLSsgIFRZUEVfV0lERV9DSEFSLAotKyNlbmRpZgotKyAgVFlQRV9TVFJJTkcsCi0rI2lmZGVmIEhBVkVfV0NIQVJfVAotKyAgVFlQRV9XSURFX1NUUklORywKLSsjZW5kaWYKLSsgIFRZUEVfUE9JTlRFUiwKLSsgIFRZUEVfQ09VTlRfU0NIQVJfUE9JTlRFUiwKLSsgIFRZUEVfQ09VTlRfU0hPUlRfUE9JTlRFUiwKLSsgIFRZUEVfQ09VTlRfSU5UX1BPSU5URVIsCi0rICBUWVBFX0NPVU5UX0xPTkdJTlRfUE9JTlRFUgotKyNpZmRlZiBIQVZFX0xPTkdfTE9ORwotKywgVFlQRV9DT1VOVF9MT05HTE9OR0lOVF9QT0lOVEVSCi0rI2VuZGlmCi0rfSBhcmdfdHlwZTsKLSsKLSsvKiBQb2x5bW9ycGhpYyBhcmd1bWVudCAqLwotK3R5cGVkZWYgc3RydWN0Ci0rewotKyAgYXJnX3R5cGUgdHlwZTsKLSsgIHVuaW9uCi0rICB7Ci0rICAgIHNpZ25lZCBjaGFyCQkJYV9zY2hhcjsKLSsgICAgdW5zaWduZWQgY2hhcgkJYV91Y2hhcjsKLSsgICAgc2hvcnQJCQlhX3Nob3J0OwotKyAgICB1bnNpZ25lZCBzaG9ydAkJYV91c2hvcnQ7Ci0rICAgIGludAkJCQlhX2ludDsKLSsgICAgdW5zaWduZWQgaW50CQlhX3VpbnQ7Ci0rICAgIGxvbmcgaW50CQkJYV9sb25naW50OwotKyAgICB1bnNpZ25lZCBsb25nIGludAkJYV91bG9uZ2ludDsKLSsjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSsgICAgbG9uZyBsb25nIGludAkJYV9sb25nbG9uZ2ludDsKLSsgICAgdW5zaWduZWQgbG9uZyBsb25nIGludAlhX3Vsb25nbG9uZ2ludDsKLSsjZW5kaWYKLSsgICAgZmxvYXQJCQlhX2Zsb2F0OwotKyAgICBkb3VibGUJCQlhX2RvdWJsZTsKLSsjaWZkZWYgSEFWRV9MT05HX0RPVUJMRQotKyAgICBsb25nIGRvdWJsZQkJCWFfbG9uZ2RvdWJsZTsKLSsjZW5kaWYKLSsgICAgaW50CQkJCWFfY2hhcjsKLSsjaWZkZWYgSEFWRV9XSU5UX1QKLSsgICAgd2ludF90CQkJYV93aWRlX2NoYXI7Ci0rI2VuZGlmCi0rICAgIGNvbnN0IGNoYXIqCQkJYV9zdHJpbmc7Ci0rI2lmZGVmIEhBVkVfV0NIQVJfVAotKyAgICBjb25zdCB3Y2hhcl90KgkJYV93aWRlX3N0cmluZzsKLSsjZW5kaWYKLSsgICAgdm9pZCoJCQlhX3BvaW50ZXI7Ci0rICAgIHNpZ25lZCBjaGFyICoJCWFfY291bnRfc2NoYXJfcG9pbnRlcjsKLSsgICAgc2hvcnQgKgkJCWFfY291bnRfc2hvcnRfcG9pbnRlcjsKLSsgICAgaW50ICoJCQlhX2NvdW50X2ludF9wb2ludGVyOwotKyAgICBsb25nIGludCAqCQkJYV9jb3VudF9sb25naW50X3BvaW50ZXI7Ci0rI2lmZGVmIEhBVkVfTE9OR19MT05HCi0rICAgIGxvbmcgbG9uZyBpbnQgKgkJYV9jb3VudF9sb25nbG9uZ2ludF9wb2ludGVyOwotKyNlbmRpZgotKyAgfQotKyAgYTsKLSt9Ci0rYXJndW1lbnQ7Ci0rCi0rdHlwZWRlZiBzdHJ1Y3QKLSt7Ci0rICBzaXplX3QgY291bnQ7Ci0rICBhcmd1bWVudCAqYXJnOwotK30KLSthcmd1bWVudHM7Ci0rCi0rCi0rLyogRmV0Y2ggdGhlIGFyZ3VtZW50cywgcHV0dGluZyB0aGVtIGludG8gYS4gKi8KLSsjaWZkZWYgU1RBVElDCi0rU1RBVElDCi0rI2Vsc2UKLStleHRlcm4KLSsjZW5kaWYKLStpbnQgcHJpbnRmX2ZldGNoYXJncyAodmFfbGlzdCBhcmdzLCBhcmd1bWVudHMgKmEpOwotKwotKyNlbmRpZiAvKiBfUFJJTlRGX0FSR1NfSCAqLwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3ByaW50Zi5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3ByaW50Zi5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNjA3NzA5Nzg0IC0wNDAwCi1AQCAtMCwwICsxLDM3MSBAQAotKy8qIEZvcm1hdHRlZCBvdXRwdXQgdG8gc3RyaW5ncywgdXNpbmcgUE9TSVgvWFNJIGZvcm1hdCBzdHJpbmdzIHdpdGggcG9zaXRpb25zLgotKyAgIENvcHlyaWdodCAoQykgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBXcml0dGVuIGJ5IEJydW5vIEhhaWJsZSA8YnJ1bm9AY2xpc3Aub3JnPiwgMjAwMy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKwotKyNpZmRlZiBfX0dOVUNfXwotKyMgZGVmaW5lIGFsbG9jYSBfX2J1aWx0aW5fYWxsb2NhCi0rIyBkZWZpbmUgSEFWRV9BTExPQ0EgMQotKyNlbHNlCi0rIyBpZmRlZiBfTVNDX1ZFUgotKyMgIGluY2x1ZGUgPG1hbGxvYy5oPgotKyMgIGRlZmluZSBhbGxvY2EgX2FsbG9jYQotKyMgZWxzZQotKyMgIGlmIGRlZmluZWQgSEFWRV9BTExPQ0FfSCB8fCBkZWZpbmVkIF9MSUJDCi0rIyAgIGluY2x1ZGUgPGFsbG9jYS5oPgotKyMgIGVsc2UKLSsjICAgaWZkZWYgX0FJWAotKyAjcHJhZ21hIGFsbG9jYQotKyMgICBlbHNlCi0rIyAgICBpZm5kZWYgYWxsb2NhCi0rY2hhciAqYWxsb2NhICgpOwotKyMgICAgZW5kaWYKLSsjICAgZW5kaWYKLSsjICBlbmRpZgotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsKLSsjaWYgIUhBVkVfUE9TSVhfUFJJTlRGCi0rCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsKLSsvKiBXaGVuIGJ1aWxkaW5nIGEgRExMLCB3ZSBtdXN0IGV4cG9ydCBzb21lIGZ1bmN0aW9ucy4gIE5vdGUgdGhhdCBiZWNhdXNlCi0rICAgdGhlIGZ1bmN0aW9ucyBhcmUgb25seSBkZWZpbmVkIGZvciBiaW5hcnkgYmFja3dhcmQgY29tcGF0aWJpbGl0eSwgd2UKLSsgICBkb24ndCBuZWVkIHRvIHVzZSBfX2RlY2xzcGVjKGRsbGltcG9ydCkgaW4gYW55IGNhc2UuICAqLwotKyNpZiBkZWZpbmVkIF9NU0NfVkVSICYmIEJVSUxESU5HX0RMTAotKyMgZGVmaW5lIERMTF9FWFBPUlRFRCBfX2RlY2xzcGVjKGRsbGV4cG9ydCkKLSsjZWxzZQotKyMgZGVmaW5lIERMTF9FWFBPUlRFRAotKyNlbmRpZgotKwotKyNkZWZpbmUgU1RBVElDIHN0YXRpYwotKwotKy8qIERlZmluZSBhdXhpbGlhcnkgZnVuY3Rpb25zIGRlY2xhcmVkIGluICJwcmludGYtYXJncy5oIi4gICovCi0rI2luY2x1ZGUgInByaW50Zi1hcmdzLmMiCi0rCi0rLyogRGVmaW5lIGF1eGlsaWFyeSBmdW5jdGlvbnMgZGVjbGFyZWQgaW4gInByaW50Zi1wYXJzZS5oIi4gICovCi0rI2luY2x1ZGUgInByaW50Zi1wYXJzZS5jIgotKwotKy8qIERlZmluZSBmdW5jdGlvbnMgZGVjbGFyZWQgaW4gInZhc25wcmludGYuaCIuICAqLwotKyNkZWZpbmUgdmFzbnByaW50ZiBsaWJpbnRsX3Zhc25wcmludGYKLSsjaW5jbHVkZSAidmFzbnByaW50Zi5jIgotKyNpZiAwIC8qIG5vdCBuZWVkZWQgKi8KLSsjZGVmaW5lIGFzbnByaW50ZiBsaWJpbnRsX2FzbnByaW50ZgotKyNpbmNsdWRlICJhc25wcmludGYuYyIKLSsjZW5kaWYKLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX3ZmcHJpbnRmIChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQotK3sKLSsgIGlmIChzdHJjaHIgKGZvcm1hdCwgJyQnKSA9PSBOVUxMKQotKyAgICByZXR1cm4gdmZwcmludGYgKHN0cmVhbSwgZm9ybWF0LCBhcmdzKTsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHNpemVfdCBsZW5ndGg7Ci0rICAgICAgY2hhciAqcmVzdWx0ID0gbGliaW50bF92YXNucHJpbnRmIChOVUxMLCAmbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOwotKyAgICAgIGludCByZXR2YWwgPSAtMTsKLSsgICAgICBpZiAocmVzdWx0ICE9IE5VTEwpCi0rCXsKLSsJICBpZiAoZndyaXRlIChyZXN1bHQsIDEsIGxlbmd0aCwgc3RyZWFtKSA9PSBsZW5ndGgpCi0rCSAgICByZXR2YWwgPSBsZW5ndGg7Ci0rCSAgZnJlZSAocmVzdWx0KTsKLSsJfQotKyAgICAgIHJldHVybiByZXR2YWw7Ci0rICAgIH0KLSt9Ci0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF9mcHJpbnRmIChGSUxFICpzdHJlYW0sIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotK3sKLSsgIHZhX2xpc3QgYXJnczsKLSsgIGludCByZXR2YWw7Ci0rCi0rICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsKLSsgIHJldHZhbCA9IGxpYmludGxfdmZwcmludGYgKHN0cmVhbSwgZm9ybWF0LCBhcmdzKTsKLSsgIHZhX2VuZCAoYXJncyk7Ci0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX3ZwcmludGYgKGNvbnN0IGNoYXIgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQotK3sKLSsgIHJldHVybiBsaWJpbnRsX3ZmcHJpbnRmIChzdGRvdXQsIGZvcm1hdCwgYXJncyk7Ci0rfQotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfcHJpbnRmIChjb25zdCBjaGFyICpmb3JtYXQsIC4uLikKLSt7Ci0rICB2YV9saXN0IGFyZ3M7Ci0rICBpbnQgcmV0dmFsOwotKwotKyAgdmFfc3RhcnQgKGFyZ3MsIGZvcm1hdCk7Ci0rICByZXR2YWwgPSBsaWJpbnRsX3ZwcmludGYgKGZvcm1hdCwgYXJncyk7Ci0rICB2YV9lbmQgKGFyZ3MpOwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF92c3ByaW50ZiAoY2hhciAqcmVzdWx0YnVmLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKLSt7Ci0rICBpZiAoc3RyY2hyIChmb3JtYXQsICckJykgPT0gTlVMTCkKLSsgICAgcmV0dXJuIHZzcHJpbnRmIChyZXN1bHRidWYsIGZvcm1hdCwgYXJncyk7Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBzaXplX3QgbGVuZ3RoID0gKHNpemVfdCkgfjAgLyAoNCAqIHNpemVvZiAoY2hhcikpOwotKyAgICAgIGNoYXIgKnJlc3VsdCA9IGxpYmludGxfdmFzbnByaW50ZiAocmVzdWx0YnVmLCAmbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOwotKyAgICAgIGlmIChyZXN1bHQgIT0gcmVzdWx0YnVmKQotKwl7Ci0rCSAgZnJlZSAocmVzdWx0KTsKLSsJICByZXR1cm4gLTE7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXJldHVybiBsZW5ndGg7Ci0rICAgIH0KLSt9Ci0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF9zcHJpbnRmIChjaGFyICpyZXN1bHRidWYsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotK3sKLSsgIHZhX2xpc3QgYXJnczsKLSsgIGludCByZXR2YWw7Ci0rCi0rICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsKLSsgIHJldHZhbCA9IGxpYmludGxfdnNwcmludGYgKHJlc3VsdGJ1ZiwgZm9ybWF0LCBhcmdzKTsKLSsgIHZhX2VuZCAoYXJncyk7Ci0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLSsjaWYgSEFWRV9TTlBSSU5URgotKwotKyMgaWYgSEFWRV9ERUNMX19TTlBSSU5URgotKyAgIC8qIFdpbmRvd3MuICAqLwotKyMgIGRlZmluZSBzeXN0ZW1fdnNucHJpbnRmIF92c25wcmludGYKLSsjIGVsc2UKLSsgICAvKiBVbml4LiAgKi8KLSsjICBkZWZpbmUgc3lzdGVtX3ZzbnByaW50ZiB2c25wcmludGYKLSsjIGVuZGlmCi0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF92c25wcmludGYgKGNoYXIgKnJlc3VsdGJ1Ziwgc2l6ZV90IGxlbmd0aCwgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi0rewotKyAgaWYgKHN0cmNociAoZm9ybWF0LCAnJCcpID09IE5VTEwpCi0rICAgIHJldHVybiBzeXN0ZW1fdnNucHJpbnRmIChyZXN1bHRidWYsIGxlbmd0aCwgZm9ybWF0LCBhcmdzKTsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHNpemVfdCBtYXhsZW5ndGggPSBsZW5ndGg7Ci0rICAgICAgY2hhciAqcmVzdWx0ID0gbGliaW50bF92YXNucHJpbnRmIChyZXN1bHRidWYsICZsZW5ndGgsIGZvcm1hdCwgYXJncyk7Ci0rICAgICAgaWYgKHJlc3VsdCAhPSByZXN1bHRidWYpCi0rCXsKLSsJICBpZiAobWF4bGVuZ3RoID4gMCkKLSsJICAgIHsKLSsJICAgICAgaWYgKGxlbmd0aCA8IG1heGxlbmd0aCkKLSsJCWFib3J0ICgpOwotKwkgICAgICBtZW1jcHkgKHJlc3VsdGJ1ZiwgcmVzdWx0LCBtYXhsZW5ndGggLSAxKTsKLSsJICAgICAgcmVzdWx0YnVmW21heGxlbmd0aCAtIDFdID0gJ1wwJzsKLSsJICAgIH0KLSsJICBmcmVlIChyZXN1bHQpOwotKwkgIHJldHVybiAtMTsKLSsJfQotKyAgICAgIGVsc2UKLSsJcmV0dXJuIGxlbmd0aDsKLSsgICAgfQotK30KLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX3NucHJpbnRmIChjaGFyICpyZXN1bHRidWYsIHNpemVfdCBsZW5ndGgsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotK3sKLSsgIHZhX2xpc3QgYXJnczsKLSsgIGludCByZXR2YWw7Ci0rCi0rICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsKLSsgIHJldHZhbCA9IGxpYmludGxfdnNucHJpbnRmIChyZXN1bHRidWYsIGxlbmd0aCwgZm9ybWF0LCBhcmdzKTsKLSsgIHZhX2VuZCAoYXJncyk7Ci0rICByZXR1cm4gcmV0dmFsOwotK30KLSsKLSsjZW5kaWYKLSsKLSsjaWYgSEFWRV9BU1BSSU5URgotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfdmFzcHJpbnRmIChjaGFyICoqcmVzdWx0cCwgY29uc3QgY2hhciAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi0rewotKyAgc2l6ZV90IGxlbmd0aDsKLSsgIGNoYXIgKnJlc3VsdCA9IGxpYmludGxfdmFzbnByaW50ZiAoTlVMTCwgJmxlbmd0aCwgZm9ybWF0LCBhcmdzKTsKLSsgIGlmIChyZXN1bHQgPT0gTlVMTCkKLSsgICAgcmV0dXJuIC0xOwotKyAgKnJlc3VsdHAgPSByZXN1bHQ7Ci0rICByZXR1cm4gbGVuZ3RoOwotK30KLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX2FzcHJpbnRmIChjaGFyICoqcmVzdWx0cCwgY29uc3QgY2hhciAqZm9ybWF0LCAuLi4pCi0rewotKyAgdmFfbGlzdCBhcmdzOwotKyAgaW50IHJldHZhbDsKLSsKLSsgIHZhX3N0YXJ0IChhcmdzLCBmb3JtYXQpOwotKyAgcmV0dmFsID0gbGliaW50bF92YXNwcmludGYgKHJlc3VsdHAsIGZvcm1hdCwgYXJncyk7Ci0rICB2YV9lbmQgKGFyZ3MpOwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci0rCi0rI2VuZGlmCi0rCi0rI2lmIEhBVkVfRldQUklOVEYKLSsKLSsjaW5jbHVkZSA8d2NoYXIuaD4KLSsKLSsjZGVmaW5lIFdJREVfQ0hBUl9WRVJTSU9OIDEKLSsKLSsvKiBEZWZpbmUgYXV4aWxpYXJ5IGZ1bmN0aW9ucyBkZWNsYXJlZCBpbiAid3ByaW50Zi1wYXJzZS5oIi4gICovCi0rI2luY2x1ZGUgInByaW50Zi1wYXJzZS5jIgotKwotKy8qIERlZmluZSBmdW5jdGlvbnMgZGVjbGFyZWQgaW4gInZhc25wcmludGYuaCIuICAqLwotKyNkZWZpbmUgdmFzbndwcmludGYgbGliaW50bF92YXNud3ByaW50ZgotKyNpbmNsdWRlICJ2YXNucHJpbnRmLmMiCi0rI2lmIDAgLyogbm90IG5lZWRlZCAqLwotKyNkZWZpbmUgYXNud3ByaW50ZiBsaWJpbnRsX2FzbndwcmludGYKLSsjaW5jbHVkZSAiYXNucHJpbnRmLmMiCi0rI2VuZGlmCi0rCi0rIyBpZiBIQVZFX0RFQ0xfX1NOV1BSSU5URgotKyAgIC8qIFdpbmRvd3MuICAqLwotKyMgIGRlZmluZSBzeXN0ZW1fdnN3cHJpbnRmIF92c253cHJpbnRmCi0rIyBlbHNlCi0rICAgLyogVW5peC4gICovCi0rIyAgZGVmaW5lIHN5c3RlbV92c3dwcmludGYgdnN3cHJpbnRmCi0rIyBlbmRpZgotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfdmZ3cHJpbnRmIChGSUxFICpzdHJlYW0sIGNvbnN0IHdjaGFyX3QgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQotK3sKLSsgIGlmICh3Y3NjaHIgKGZvcm1hdCwgJyQnKSA9PSBOVUxMKQotKyAgICByZXR1cm4gdmZ3cHJpbnRmIChzdHJlYW0sIGZvcm1hdCwgYXJncyk7Ci0rICBlbHNlCi0rICAgIHsKLSsgICAgICBzaXplX3QgbGVuZ3RoOwotKyAgICAgIHdjaGFyX3QgKnJlc3VsdCA9IGxpYmludGxfdmFzbndwcmludGYgKE5VTEwsICZsZW5ndGgsIGZvcm1hdCwgYXJncyk7Ci0rICAgICAgaW50IHJldHZhbCA9IC0xOwotKyAgICAgIGlmIChyZXN1bHQgIT0gTlVMTCkKLSsJewotKwkgIHNpemVfdCBpOwotKwkgIGZvciAoaSA9IDA7IGkgPCBsZW5ndGg7IGkrKykKLSsJICAgIGlmIChmcHV0d2MgKHJlc3VsdFtpXSwgc3RyZWFtKSA9PSBXRU9GKQotKwkgICAgICBicmVhazsKLSsJICBpZiAoaSA9PSBsZW5ndGgpCi0rCSAgICByZXR2YWwgPSBsZW5ndGg7Ci0rCSAgZnJlZSAocmVzdWx0KTsKLSsJfQotKyAgICAgIHJldHVybiByZXR2YWw7Ci0rICAgIH0KLSt9Ci0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF9md3ByaW50ZiAoRklMRSAqc3RyZWFtLCBjb25zdCB3Y2hhcl90ICpmb3JtYXQsIC4uLikKLSt7Ci0rICB2YV9saXN0IGFyZ3M7Ci0rICBpbnQgcmV0dmFsOwotKwotKyAgdmFfc3RhcnQgKGFyZ3MsIGZvcm1hdCk7Ci0rICByZXR2YWwgPSBsaWJpbnRsX3Zmd3ByaW50ZiAoc3RyZWFtLCBmb3JtYXQsIGFyZ3MpOwotKyAgdmFfZW5kIChhcmdzKTsKLSsgIHJldHVybiByZXR2YWw7Ci0rfQotKwotK0RMTF9FWFBPUlRFRAotK2ludAotK2xpYmludGxfdndwcmludGYgKGNvbnN0IHdjaGFyX3QgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQotK3sKLSsgIHJldHVybiBsaWJpbnRsX3Zmd3ByaW50ZiAoc3Rkb3V0LCBmb3JtYXQsIGFyZ3MpOwotK30KLSsKLStETExfRVhQT1JURUQKLStpbnQKLStsaWJpbnRsX3dwcmludGYgKGNvbnN0IHdjaGFyX3QgKmZvcm1hdCwgLi4uKQotK3sKLSsgIHZhX2xpc3QgYXJnczsKLSsgIGludCByZXR2YWw7Ci0rCi0rICB2YV9zdGFydCAoYXJncywgZm9ybWF0KTsKLSsgIHJldHZhbCA9IGxpYmludGxfdndwcmludGYgKGZvcm1hdCwgYXJncyk7Ci0rICB2YV9lbmQgKGFyZ3MpOwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF92c3dwcmludGYgKHdjaGFyX3QgKnJlc3VsdGJ1Ziwgc2l6ZV90IGxlbmd0aCwgY29uc3Qgd2NoYXJfdCAqZm9ybWF0LCB2YV9saXN0IGFyZ3MpCi0rewotKyAgaWYgKHdjc2NociAoZm9ybWF0LCAnJCcpID09IE5VTEwpCi0rICAgIHJldHVybiBzeXN0ZW1fdnN3cHJpbnRmIChyZXN1bHRidWYsIGxlbmd0aCwgZm9ybWF0LCBhcmdzKTsKLSsgIGVsc2UKLSsgICAgewotKyAgICAgIHNpemVfdCBtYXhsZW5ndGggPSBsZW5ndGg7Ci0rICAgICAgd2NoYXJfdCAqcmVzdWx0ID0gbGliaW50bF92YXNud3ByaW50ZiAocmVzdWx0YnVmLCAmbGVuZ3RoLCBmb3JtYXQsIGFyZ3MpOwotKyAgICAgIGlmIChyZXN1bHQgIT0gcmVzdWx0YnVmKQotKwl7Ci0rCSAgaWYgKG1heGxlbmd0aCA+IDApCi0rCSAgICB7Ci0rCSAgICAgIGlmIChsZW5ndGggPCBtYXhsZW5ndGgpCi0rCQlhYm9ydCAoKTsKLSsJICAgICAgbWVtY3B5IChyZXN1bHRidWYsIHJlc3VsdCwgKG1heGxlbmd0aCAtIDEpICogc2l6ZW9mICh3Y2hhcl90KSk7Ci0rCSAgICAgIHJlc3VsdGJ1ZlttYXhsZW5ndGggLSAxXSA9IDA7Ci0rCSAgICB9Ci0rCSAgZnJlZSAocmVzdWx0KTsKLSsJICByZXR1cm4gLTE7Ci0rCX0KLSsgICAgICBlbHNlCi0rCXJldHVybiBsZW5ndGg7Ci0rICAgIH0KLSt9Ci0rCi0rRExMX0VYUE9SVEVECi0raW50Ci0rbGliaW50bF9zd3ByaW50ZiAod2NoYXJfdCAqcmVzdWx0YnVmLCBzaXplX3QgbGVuZ3RoLCBjb25zdCB3Y2hhcl90ICpmb3JtYXQsIC4uLikKLSt7Ci0rICB2YV9saXN0IGFyZ3M7Ci0rICBpbnQgcmV0dmFsOwotKwotKyAgdmFfc3RhcnQgKGFyZ3MsIGZvcm1hdCk7Ci0rICByZXR2YWwgPSBsaWJpbnRsX3Zzd3ByaW50ZiAocmVzdWx0YnVmLCBsZW5ndGgsIGZvcm1hdCwgYXJncyk7Ci0rICB2YV9lbmQgKGFyZ3MpOwotKyAgcmV0dXJuIHJldHZhbDsKLSt9Ci0rCi0rI2VuZGlmCi0rCi0rI2VuZGlmCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvcHJpbnRmLXBhcnNlLmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvcHJpbnRmLXBhcnNlLmMJMjAwNC0wOS0xMiAxNDo0MDozNC42MjI3MDc1MDQgLTA0MDAKLUBAIC0wLDAgKzEsNTM3IEBACi0rLyogRm9ybWF0dGVkIG91dHB1dCB0byBzdHJpbmdzLgotKyAgIENvcHlyaWdodCAoQykgMTk5OS0yMDAwLCAyMDAyLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZmRlZiBIQVZFX0NPTkZJR19ICi0rIyBpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSsvKiBTcGVjaWZpY2F0aW9uLiAgKi8KLSsjaWYgV0lERV9DSEFSX1ZFUlNJT04KLSsjIGluY2x1ZGUgIndwcmludGYtcGFyc2UuaCIKLSsjZWxzZQotKyMgaW5jbHVkZSAicHJpbnRmLXBhcnNlLmgiCi0rI2VuZGlmCi0rCi0rLyogR2V0IHNpemVfdCwgTlVMTC4gICovCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKwotKy8qIEdldCBpbnRtYXhfdC4gICovCi0rI2lmIEhBVkVfU1RESU5UX0hfV0lUSF9VSU5UTUFYCi0rIyBpbmNsdWRlIDxzdGRpbnQuaD4KLSsjZW5kaWYKLSsjaWYgSEFWRV9JTlRUWVBFU19IX1dJVEhfVUlOVE1BWAotKyMgaW5jbHVkZSA8aW50dHlwZXMuaD4KLSsjZW5kaWYKLSsKLSsvKiBtYWxsb2MoKSwgcmVhbGxvYygpLCBmcmVlKCkuICAqLwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsKLSsvKiBDaGVja2VkIHNpemVfdCBjb21wdXRhdGlvbnMuICAqLwotKyNpbmNsdWRlICJ4c2l6ZS5oIgotKwotKyNpZiBXSURFX0NIQVJfVkVSU0lPTgotKyMgZGVmaW5lIFBSSU5URl9QQVJTRSB3cHJpbnRmX3BhcnNlCi0rIyBkZWZpbmUgQ0hBUl9UIHdjaGFyX3QKLSsjIGRlZmluZSBESVJFQ1RJVkUgd2NoYXJfdF9kaXJlY3RpdmUKLSsjIGRlZmluZSBESVJFQ1RJVkVTIHdjaGFyX3RfZGlyZWN0aXZlcwotKyNlbHNlCi0rIyBkZWZpbmUgUFJJTlRGX1BBUlNFIHByaW50Zl9wYXJzZQotKyMgZGVmaW5lIENIQVJfVCBjaGFyCi0rIyBkZWZpbmUgRElSRUNUSVZFIGNoYXJfZGlyZWN0aXZlCi0rIyBkZWZpbmUgRElSRUNUSVZFUyBjaGFyX2RpcmVjdGl2ZXMKLSsjZW5kaWYKLSsKLSsjaWZkZWYgU1RBVElDCi0rU1RBVElDCi0rI2VuZGlmCi0raW50Ci0rUFJJTlRGX1BBUlNFIChjb25zdCBDSEFSX1QgKmZvcm1hdCwgRElSRUNUSVZFUyAqZCwgYXJndW1lbnRzICphKQotK3sKLSsgIGNvbnN0IENIQVJfVCAqY3AgPSBmb3JtYXQ7CQkvKiBwb2ludGVyIGludG8gZm9ybWF0ICovCi0rICBzaXplX3QgYXJnX3Bvc24gPSAwOwkJLyogbnVtYmVyIG9mIHJlZ3VsYXIgYXJndW1lbnRzIGNvbnN1bWVkICovCi0rICBzaXplX3QgZF9hbGxvY2F0ZWQ7CQkJLyogYWxsb2NhdGVkIGVsZW1lbnRzIG9mIGQtPmRpciAqLwotKyAgc2l6ZV90IGFfYWxsb2NhdGVkOwkJCS8qIGFsbG9jYXRlZCBlbGVtZW50cyBvZiBhLT5hcmcgKi8KLSsgIHNpemVfdCBtYXhfd2lkdGhfbGVuZ3RoID0gMDsKLSsgIHNpemVfdCBtYXhfcHJlY2lzaW9uX2xlbmd0aCA9IDA7Ci0rCi0rICBkLT5jb3VudCA9IDA7Ci0rICBkX2FsbG9jYXRlZCA9IDE7Ci0rICBkLT5kaXIgPSBtYWxsb2MgKGRfYWxsb2NhdGVkICogc2l6ZW9mIChESVJFQ1RJVkUpKTsKLSsgIGlmIChkLT5kaXIgPT0gTlVMTCkKLSsgICAgLyogT3V0IG9mIG1lbW9yeS4gICovCi0rICAgIHJldHVybiAtMTsKLSsKLSsgIGEtPmNvdW50ID0gMDsKLSsgIGFfYWxsb2NhdGVkID0gMDsKLSsgIGEtPmFyZyA9IE5VTEw7Ci0rCi0rI2RlZmluZSBSRUdJU1RFUl9BUkcoX2luZGV4XyxfdHlwZV8pIFwKLSsgIHsJCQkJCQkJCQlcCi0rICAgIHNpemVfdCBuID0gKF9pbmRleF8pOwkJCQkJCVwKLSsgICAgaWYgKG4gPj0gYV9hbGxvY2F0ZWQpCQkJCQkJXAotKyAgICAgIHsJCQkJCQkJCQlcCi0rCXNpemVfdCBtZW1vcnlfc2l6ZTsJCQkJCQlcCi0rCWFyZ3VtZW50ICptZW1vcnk7CQkJCQkJXAotKwkJCQkJCQkJCVwKLSsJYV9hbGxvY2F0ZWQgPSB4dGltZXMgKGFfYWxsb2NhdGVkLCAyKTsJCQkJXAotKwlpZiAoYV9hbGxvY2F0ZWQgPD0gbikJCQkJCQlcCi0rCSAgYV9hbGxvY2F0ZWQgPSB4c3VtIChuLCAxKTsJCQkJCVwKLSsJbWVtb3J5X3NpemUgPSB4dGltZXMgKGFfYWxsb2NhdGVkLCBzaXplb2YgKGFyZ3VtZW50KSk7CQlcCi0rCWlmIChzaXplX292ZXJmbG93X3AgKG1lbW9yeV9zaXplKSkJCQkJXAotKwkgIC8qIE92ZXJmbG93LCB3b3VsZCBsZWFkIHRvIG91dCBvZiBtZW1vcnkuICAqLwkJCVwKLSsJICBnb3RvIGVycm9yOwkJCQkJCQlcCi0rCW1lbW9yeSA9IChhLT5hcmcJCQkJCQlcCi0rCQkgID8gcmVhbGxvYyAoYS0+YXJnLCBtZW1vcnlfc2l6ZSkJCQlcCi0rCQkgIDogbWFsbG9jIChtZW1vcnlfc2l6ZSkpOwkJCQlcCi0rCWlmIChtZW1vcnkgPT0gTlVMTCkJCQkJCQlcCi0rCSAgLyogT3V0IG9mIG1lbW9yeS4gICovCQkJCQkJXAotKwkgIGdvdG8gZXJyb3I7CQkJCQkJCVwKLSsJYS0+YXJnID0gbWVtb3J5OwkJCQkJCVwKLSsgICAgICB9CQkJCQkJCQkJXAotKyAgICB3aGlsZSAoYS0+Y291bnQgPD0gbikJCQkJCQlcCi0rICAgICAgYS0+YXJnW2EtPmNvdW50KytdLnR5cGUgPSBUWVBFX05PTkU7CQkJCVwKLSsgICAgaWYgKGEtPmFyZ1tuXS50eXBlID09IFRZUEVfTk9ORSkJCQkJCVwKLSsgICAgICBhLT5hcmdbbl0udHlwZSA9IChfdHlwZV8pOwkJCQkJXAotKyAgICBlbHNlIGlmIChhLT5hcmdbbl0udHlwZSAhPSAoX3R5cGVfKSkJCQkJXAotKyAgICAgIC8qIEFtYmlndW91cyB0eXBlIGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50LiAgKi8JCQlcCi0rICAgICAgZ290byBlcnJvcjsJCQkJCQkJXAotKyAgfQotKwotKyAgd2hpbGUgKCpjcCAhPSAnXDAnKQotKyAgICB7Ci0rICAgICAgQ0hBUl9UIGMgPSAqY3ArKzsKLSsgICAgICBpZiAoYyA9PSAnJScpCi0rCXsKLSsJICBzaXplX3QgYXJnX2luZGV4ID0gQVJHX05PTkU7Ci0rCSAgRElSRUNUSVZFICpkcCA9ICZkLT5kaXJbZC0+Y291bnRdOy8qIHBvaW50ZXIgdG8gbmV4dCBkaXJlY3RpdmUgKi8KLSsKLSsJICAvKiBJbml0aWFsaXplIHRoZSBuZXh0IGRpcmVjdGl2ZS4gICovCi0rCSAgZHAtPmRpcl9zdGFydCA9IGNwIC0gMTsKLSsJICBkcC0+ZmxhZ3MgPSAwOwotKwkgIGRwLT53aWR0aF9zdGFydCA9IE5VTEw7Ci0rCSAgZHAtPndpZHRoX2VuZCA9IE5VTEw7Ci0rCSAgZHAtPndpZHRoX2FyZ19pbmRleCA9IEFSR19OT05FOwotKwkgIGRwLT5wcmVjaXNpb25fc3RhcnQgPSBOVUxMOwotKwkgIGRwLT5wcmVjaXNpb25fZW5kID0gTlVMTDsKLSsJICBkcC0+cHJlY2lzaW9uX2FyZ19pbmRleCA9IEFSR19OT05FOwotKwkgIGRwLT5hcmdfaW5kZXggPSBBUkdfTk9ORTsKLSsKLSsJICAvKiBUZXN0IGZvciBwb3NpdGlvbmFsIGFyZ3VtZW50LiAgKi8KLSsJICBpZiAoKmNwID49ICcwJyAmJiAqY3AgPD0gJzknKQotKwkgICAgewotKwkgICAgICBjb25zdCBDSEFSX1QgKm5wOwotKwotKwkgICAgICBmb3IgKG5wID0gY3A7ICpucCA+PSAnMCcgJiYgKm5wIDw9ICc5JzsgbnArKykKLSsJCTsKLSsJICAgICAgaWYgKCpucCA9PSAnJCcpCi0rCQl7Ci0rCQkgIHNpemVfdCBuID0gMDsKLSsKLSsJCSAgZm9yIChucCA9IGNwOyAqbnAgPj0gJzAnICYmICpucCA8PSAnOSc7IG5wKyspCi0rCQkgICAgbiA9IHhzdW0gKHh0aW1lcyAobiwgMTApLCAqbnAgLSAnMCcpOwotKwkJICBpZiAobiA9PSAwKQotKwkJICAgIC8qIFBvc2l0aW9uYWwgYXJndW1lbnQgMC4gICovCi0rCQkgICAgZ290byBlcnJvcjsKLSsJCSAgaWYgKHNpemVfb3ZlcmZsb3dfcCAobikpCi0rCQkgICAgLyogbiB0b28gbGFyZ2UsIHdvdWxkIGxlYWQgdG8gb3V0IG9mIG1lbW9yeSBsYXRlci4gICovCi0rCQkgICAgZ290byBlcnJvcjsKLSsJCSAgYXJnX2luZGV4ID0gbiAtIDE7Ci0rCQkgIGNwID0gbnAgKyAxOwotKwkJfQotKwkgICAgfQotKwotKwkgIC8qIFJlYWQgdGhlIGZsYWdzLiAgKi8KLSsJICBmb3IgKDs7KQotKwkgICAgewotKwkgICAgICBpZiAoKmNwID09ICdcJycpCi0rCQl7Ci0rCQkgIGRwLT5mbGFncyB8PSBGTEFHX0dST1VQOwotKwkJICBjcCsrOwotKwkJfQotKwkgICAgICBlbHNlIGlmICgqY3AgPT0gJy0nKQotKwkJewotKwkJICBkcC0+ZmxhZ3MgfD0gRkxBR19MRUZUOwotKwkJICBjcCsrOwotKwkJfQotKwkgICAgICBlbHNlIGlmICgqY3AgPT0gJysnKQotKwkJewotKwkJICBkcC0+ZmxhZ3MgfD0gRkxBR19TSE9XU0lHTjsKLSsJCSAgY3ArKzsKLSsJCX0KLSsJICAgICAgZWxzZSBpZiAoKmNwID09ICcgJykKLSsJCXsKLSsJCSAgZHAtPmZsYWdzIHw9IEZMQUdfU1BBQ0U7Ci0rCQkgIGNwKys7Ci0rCQl9Ci0rCSAgICAgIGVsc2UgaWYgKCpjcCA9PSAnIycpCi0rCQl7Ci0rCQkgIGRwLT5mbGFncyB8PSBGTEFHX0FMVDsKLSsJCSAgY3ArKzsKLSsJCX0KLSsJICAgICAgZWxzZSBpZiAoKmNwID09ICcwJykKLSsJCXsKLSsJCSAgZHAtPmZsYWdzIHw9IEZMQUdfWkVSTzsKLSsJCSAgY3ArKzsKLSsJCX0KLSsJICAgICAgZWxzZQotKwkJYnJlYWs7Ci0rCSAgICB9Ci0rCi0rCSAgLyogUGFyc2UgdGhlIGZpZWxkIHdpZHRoLiAgKi8KLSsJICBpZiAoKmNwID09ICcqJykKLSsJICAgIHsKLSsJICAgICAgZHAtPndpZHRoX3N0YXJ0ID0gY3A7Ci0rCSAgICAgIGNwKys7Ci0rCSAgICAgIGRwLT53aWR0aF9lbmQgPSBjcDsKLSsJICAgICAgaWYgKG1heF93aWR0aF9sZW5ndGggPCAxKQotKwkJbWF4X3dpZHRoX2xlbmd0aCA9IDE7Ci0rCi0rCSAgICAgIC8qIFRlc3QgZm9yIHBvc2l0aW9uYWwgYXJndW1lbnQuICAqLwotKwkgICAgICBpZiAoKmNwID49ICcwJyAmJiAqY3AgPD0gJzknKQotKwkJewotKwkJICBjb25zdCBDSEFSX1QgKm5wOwotKwotKwkJICBmb3IgKG5wID0gY3A7ICpucCA+PSAnMCcgJiYgKm5wIDw9ICc5JzsgbnArKykKLSsJCSAgICA7Ci0rCQkgIGlmICgqbnAgPT0gJyQnKQotKwkJICAgIHsKLSsJCSAgICAgIHNpemVfdCBuID0gMDsKLSsKLSsJCSAgICAgIGZvciAobnAgPSBjcDsgKm5wID49ICcwJyAmJiAqbnAgPD0gJzknOyBucCsrKQotKwkJCW4gPSB4c3VtICh4dGltZXMgKG4sIDEwKSwgKm5wIC0gJzAnKTsKLSsJCSAgICAgIGlmIChuID09IDApCi0rCQkJLyogUG9zaXRpb25hbCBhcmd1bWVudCAwLiAgKi8KLSsJCQlnb3RvIGVycm9yOwotKwkJICAgICAgaWYgKHNpemVfb3ZlcmZsb3dfcCAobikpCi0rCQkJLyogbiB0b28gbGFyZ2UsIHdvdWxkIGxlYWQgdG8gb3V0IG9mIG1lbW9yeSBsYXRlci4gICovCi0rCQkJZ290byBlcnJvcjsKLSsJCSAgICAgIGRwLT53aWR0aF9hcmdfaW5kZXggPSBuIC0gMTsKLSsJCSAgICAgIGNwID0gbnAgKyAxOwotKwkJICAgIH0KLSsJCX0KLSsJICAgICAgaWYgKGRwLT53aWR0aF9hcmdfaW5kZXggPT0gQVJHX05PTkUpCi0rCQl7Ci0rCQkgIGRwLT53aWR0aF9hcmdfaW5kZXggPSBhcmdfcG9zbisrOwotKwkJICBpZiAoZHAtPndpZHRoX2FyZ19pbmRleCA9PSBBUkdfTk9ORSkKLSsJCSAgICAvKiBhcmdfcG9zbiB3cmFwcGVkIGFyb3VuZC4gICovCi0rCQkgICAgZ290byBlcnJvcjsKLSsJCX0KLSsJICAgICAgUkVHSVNURVJfQVJHIChkcC0+d2lkdGhfYXJnX2luZGV4LCBUWVBFX0lOVCk7Ci0rCSAgICB9Ci0rCSAgZWxzZSBpZiAoKmNwID49ICcwJyAmJiAqY3AgPD0gJzknKQotKwkgICAgewotKwkgICAgICBzaXplX3Qgd2lkdGhfbGVuZ3RoOwotKwotKwkgICAgICBkcC0+d2lkdGhfc3RhcnQgPSBjcDsKLSsJICAgICAgZm9yICg7ICpjcCA+PSAnMCcgJiYgKmNwIDw9ICc5JzsgY3ArKykKLSsJCTsKLSsJICAgICAgZHAtPndpZHRoX2VuZCA9IGNwOwotKwkgICAgICB3aWR0aF9sZW5ndGggPSBkcC0+d2lkdGhfZW5kIC0gZHAtPndpZHRoX3N0YXJ0OwotKwkgICAgICBpZiAobWF4X3dpZHRoX2xlbmd0aCA8IHdpZHRoX2xlbmd0aCkKLSsJCW1heF93aWR0aF9sZW5ndGggPSB3aWR0aF9sZW5ndGg7Ci0rCSAgICB9Ci0rCi0rCSAgLyogUGFyc2UgdGhlIHByZWNpc2lvbi4gICovCi0rCSAgaWYgKCpjcCA9PSAnLicpCi0rCSAgICB7Ci0rCSAgICAgIGNwKys7Ci0rCSAgICAgIGlmICgqY3AgPT0gJyonKQotKwkJewotKwkJICBkcC0+cHJlY2lzaW9uX3N0YXJ0ID0gY3AgLSAxOwotKwkJICBjcCsrOwotKwkJICBkcC0+cHJlY2lzaW9uX2VuZCA9IGNwOwotKwkJICBpZiAobWF4X3ByZWNpc2lvbl9sZW5ndGggPCAyKQotKwkJICAgIG1heF9wcmVjaXNpb25fbGVuZ3RoID0gMjsKLSsKLSsJCSAgLyogVGVzdCBmb3IgcG9zaXRpb25hbCBhcmd1bWVudC4gICovCi0rCQkgIGlmICgqY3AgPj0gJzAnICYmICpjcCA8PSAnOScpCi0rCQkgICAgewotKwkJICAgICAgY29uc3QgQ0hBUl9UICpucDsKLSsKLSsJCSAgICAgIGZvciAobnAgPSBjcDsgKm5wID49ICcwJyAmJiAqbnAgPD0gJzknOyBucCsrKQotKwkJCTsKLSsJCSAgICAgIGlmICgqbnAgPT0gJyQnKQotKwkJCXsKLSsJCQkgIHNpemVfdCBuID0gMDsKLSsKLSsJCQkgIGZvciAobnAgPSBjcDsgKm5wID49ICcwJyAmJiAqbnAgPD0gJzknOyBucCsrKQotKwkJCSAgICBuID0geHN1bSAoeHRpbWVzIChuLCAxMCksICpucCAtICcwJyk7Ci0rCQkJICBpZiAobiA9PSAwKQotKwkJCSAgICAvKiBQb3NpdGlvbmFsIGFyZ3VtZW50IDAuICAqLwotKwkJCSAgICBnb3RvIGVycm9yOwotKwkJCSAgaWYgKHNpemVfb3ZlcmZsb3dfcCAobikpCi0rCQkJICAgIC8qIG4gdG9vIGxhcmdlLCB3b3VsZCBsZWFkIHRvIG91dCBvZiBtZW1vcnkKLSsJCQkgICAgICAgbGF0ZXIuICAqLwotKwkJCSAgICBnb3RvIGVycm9yOwotKwkJCSAgZHAtPnByZWNpc2lvbl9hcmdfaW5kZXggPSBuIC0gMTsKLSsJCQkgIGNwID0gbnAgKyAxOwotKwkJCX0KLSsJCSAgICB9Ci0rCQkgIGlmIChkcC0+cHJlY2lzaW9uX2FyZ19pbmRleCA9PSBBUkdfTk9ORSkKLSsJCSAgICB7Ci0rCQkgICAgICBkcC0+cHJlY2lzaW9uX2FyZ19pbmRleCA9IGFyZ19wb3NuKys7Ci0rCQkgICAgICBpZiAoZHAtPnByZWNpc2lvbl9hcmdfaW5kZXggPT0gQVJHX05PTkUpCi0rCQkJLyogYXJnX3Bvc24gd3JhcHBlZCBhcm91bmQuICAqLwotKwkJCWdvdG8gZXJyb3I7Ci0rCQkgICAgfQotKwkJICBSRUdJU1RFUl9BUkcgKGRwLT5wcmVjaXNpb25fYXJnX2luZGV4LCBUWVBFX0lOVCk7Ci0rCQl9Ci0rCSAgICAgIGVsc2UKLSsJCXsKLSsJCSAgc2l6ZV90IHByZWNpc2lvbl9sZW5ndGg7Ci0rCi0rCQkgIGRwLT5wcmVjaXNpb25fc3RhcnQgPSBjcCAtIDE7Ci0rCQkgIGZvciAoOyAqY3AgPj0gJzAnICYmICpjcCA8PSAnOSc7IGNwKyspCi0rCQkgICAgOwotKwkJICBkcC0+cHJlY2lzaW9uX2VuZCA9IGNwOwotKwkJICBwcmVjaXNpb25fbGVuZ3RoID0gZHAtPnByZWNpc2lvbl9lbmQgLSBkcC0+cHJlY2lzaW9uX3N0YXJ0OwotKwkJICBpZiAobWF4X3ByZWNpc2lvbl9sZW5ndGggPCBwcmVjaXNpb25fbGVuZ3RoKQotKwkJICAgIG1heF9wcmVjaXNpb25fbGVuZ3RoID0gcHJlY2lzaW9uX2xlbmd0aDsKLSsJCX0KLSsJICAgIH0KLSsKLSsJICB7Ci0rCSAgICBhcmdfdHlwZSB0eXBlOwotKwotKwkgICAgLyogUGFyc2UgYXJndW1lbnQgdHlwZS9zaXplIHNwZWNpZmllcnMuICAqLwotKwkgICAgewotKwkgICAgICBpbnQgZmxhZ3MgPSAwOwotKwotKwkgICAgICBmb3IgKDs7KQotKwkJewotKwkJICBpZiAoKmNwID09ICdoJykKLSsJCSAgICB7Ci0rCQkgICAgICBmbGFncyB8PSAoMSA8PCAoZmxhZ3MgJiAxKSk7Ci0rCQkgICAgICBjcCsrOwotKwkJICAgIH0KLSsJCSAgZWxzZSBpZiAoKmNwID09ICdMJykKLSsJCSAgICB7Ci0rCQkgICAgICBmbGFncyB8PSA0OwotKwkJICAgICAgY3ArKzsKLSsJCSAgICB9Ci0rCQkgIGVsc2UgaWYgKCpjcCA9PSAnbCcpCi0rCQkgICAgewotKwkJICAgICAgZmxhZ3MgKz0gODsKLSsJCSAgICAgIGNwKys7Ci0rCQkgICAgfQotKyNpZmRlZiBIQVZFX0lOVE1BWF9UCi0rCQkgIGVsc2UgaWYgKCpjcCA9PSAnaicpCi0rCQkgICAgewotKwkJICAgICAgaWYgKHNpemVvZiAoaW50bWF4X3QpID4gc2l6ZW9mIChsb25nKSkKLSsJCQl7Ci0rCQkJICAvKiBpbnRtYXhfdCA9IGxvbmcgbG9uZyAqLwotKwkJCSAgZmxhZ3MgKz0gMTY7Ci0rCQkJfQotKwkJICAgICAgZWxzZSBpZiAoc2l6ZW9mIChpbnRtYXhfdCkgPiBzaXplb2YgKGludCkpCi0rCQkJewotKwkJCSAgLyogaW50bWF4X3QgPSBsb25nICovCi0rCQkJICBmbGFncyArPSA4OwotKwkJCX0KLSsJCSAgICAgIGNwKys7Ci0rCQkgICAgfQotKyNlbmRpZgotKwkJICBlbHNlIGlmICgqY3AgPT0gJ3onIHx8ICpjcCA9PSAnWicpCi0rCQkgICAgewotKwkJICAgICAgLyogJ3onIGlzIHN0YW5kYXJkaXplZCBpbiBJU08gQyA5OSwgYnV0IGdsaWJjIHVzZXMgJ1onCi0rCQkJIGJlY2F1c2UgdGhlIHdhcm5pbmcgZmFjaWxpdHkgaW4gZ2NjLTIuOTUuMiB1bmRlcnN0YW5kcwotKwkJCSBvbmx5ICdaJyAoc2VlIGdjYy0yLjk1LjIvZ2NjL2MtY29tbW9uLmM6MTc4NCkuICAqLwotKwkJICAgICAgaWYgKHNpemVvZiAoc2l6ZV90KSA+IHNpemVvZiAobG9uZykpCi0rCQkJewotKwkJCSAgLyogc2l6ZV90ID0gbG9uZyBsb25nICovCi0rCQkJICBmbGFncyArPSAxNjsKLSsJCQl9Ci0rCQkgICAgICBlbHNlIGlmIChzaXplb2YgKHNpemVfdCkgPiBzaXplb2YgKGludCkpCi0rCQkJewotKwkJCSAgLyogc2l6ZV90ID0gbG9uZyAqLwotKwkJCSAgZmxhZ3MgKz0gODsKLSsJCQl9Ci0rCQkgICAgICBjcCsrOwotKwkJICAgIH0KLSsJCSAgZWxzZSBpZiAoKmNwID09ICd0JykKLSsJCSAgICB7Ci0rCQkgICAgICBpZiAoc2l6ZW9mIChwdHJkaWZmX3QpID4gc2l6ZW9mIChsb25nKSkKLSsJCQl7Ci0rCQkJICAvKiBwdHJkaWZmX3QgPSBsb25nIGxvbmcgKi8KLSsJCQkgIGZsYWdzICs9IDE2OwotKwkJCX0KLSsJCSAgICAgIGVsc2UgaWYgKHNpemVvZiAocHRyZGlmZl90KSA+IHNpemVvZiAoaW50KSkKLSsJCQl7Ci0rCQkJICAvKiBwdHJkaWZmX3QgPSBsb25nICovCi0rCQkJICBmbGFncyArPSA4OwotKwkJCX0KLSsJCSAgICAgIGNwKys7Ci0rCQkgICAgfQotKwkJICBlbHNlCi0rCQkgICAgYnJlYWs7Ci0rCQl9Ci0rCi0rCSAgICAgIC8qIFJlYWQgdGhlIGNvbnZlcnNpb24gY2hhcmFjdGVyLiAgKi8KLSsJICAgICAgYyA9ICpjcCsrOwotKwkgICAgICBzd2l0Y2ggKGMpCi0rCQl7Ci0rCQljYXNlICdkJzogY2FzZSAnaSc6Ci0rI2lmZGVmIEhBVkVfTE9OR19MT05HCi0rCQkgIGlmIChmbGFncyA+PSAxNiB8fCAoZmxhZ3MgJiA0KSkKLSsJCSAgICB0eXBlID0gVFlQRV9MT05HTE9OR0lOVDsKLSsJCSAgZWxzZQotKyNlbmRpZgotKwkJICBpZiAoZmxhZ3MgPj0gOCkKLSsJCSAgICB0eXBlID0gVFlQRV9MT05HSU5UOwotKwkJICBlbHNlIGlmIChmbGFncyAmIDIpCi0rCQkgICAgdHlwZSA9IFRZUEVfU0NIQVI7Ci0rCQkgIGVsc2UgaWYgKGZsYWdzICYgMSkKLSsJCSAgICB0eXBlID0gVFlQRV9TSE9SVDsKLSsJCSAgZWxzZQotKwkJICAgIHR5cGUgPSBUWVBFX0lOVDsKLSsJCSAgYnJlYWs7Ci0rCQljYXNlICdvJzogY2FzZSAndSc6IGNhc2UgJ3gnOiBjYXNlICdYJzoKLSsjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSsJCSAgaWYgKGZsYWdzID49IDE2IHx8IChmbGFncyAmIDQpKQotKwkJICAgIHR5cGUgPSBUWVBFX1VMT05HTE9OR0lOVDsKLSsJCSAgZWxzZQotKyNlbmRpZgotKwkJICBpZiAoZmxhZ3MgPj0gOCkKLSsJCSAgICB0eXBlID0gVFlQRV9VTE9OR0lOVDsKLSsJCSAgZWxzZSBpZiAoZmxhZ3MgJiAyKQotKwkJICAgIHR5cGUgPSBUWVBFX1VDSEFSOwotKwkJICBlbHNlIGlmIChmbGFncyAmIDEpCi0rCQkgICAgdHlwZSA9IFRZUEVfVVNIT1JUOwotKwkJICBlbHNlCi0rCQkgICAgdHlwZSA9IFRZUEVfVUlOVDsKLSsJCSAgYnJlYWs7Ci0rCQljYXNlICdmJzogY2FzZSAnRic6IGNhc2UgJ2UnOiBjYXNlICdFJzogY2FzZSAnZyc6IGNhc2UgJ0cnOgotKwkJY2FzZSAnYSc6IGNhc2UgJ0EnOgotKyNpZmRlZiBIQVZFX0xPTkdfRE9VQkxFCi0rCQkgIGlmIChmbGFncyA+PSAxNiB8fCAoZmxhZ3MgJiA0KSkKLSsJCSAgICB0eXBlID0gVFlQRV9MT05HRE9VQkxFOwotKwkJICBlbHNlCi0rI2VuZGlmCi0rCQkgIHR5cGUgPSBUWVBFX0RPVUJMRTsKLSsJCSAgYnJlYWs7Ci0rCQljYXNlICdjJzoKLSsJCSAgaWYgKGZsYWdzID49IDgpCi0rI2lmZGVmIEhBVkVfV0lOVF9UCi0rCQkgICAgdHlwZSA9IFRZUEVfV0lERV9DSEFSOwotKyNlbHNlCi0rCQkgICAgZ290byBlcnJvcjsKLSsjZW5kaWYKLSsJCSAgZWxzZQotKwkJICAgIHR5cGUgPSBUWVBFX0NIQVI7Ci0rCQkgIGJyZWFrOwotKyNpZmRlZiBIQVZFX1dJTlRfVAotKwkJY2FzZSAnQyc6Ci0rCQkgIHR5cGUgPSBUWVBFX1dJREVfQ0hBUjsKLSsJCSAgYyA9ICdjJzsKLSsJCSAgYnJlYWs7Ci0rI2VuZGlmCi0rCQljYXNlICdzJzoKLSsJCSAgaWYgKGZsYWdzID49IDgpCi0rI2lmZGVmIEhBVkVfV0NIQVJfVAotKwkJICAgIHR5cGUgPSBUWVBFX1dJREVfU1RSSU5HOwotKyNlbHNlCi0rCQkgICAgZ290byBlcnJvcjsKLSsjZW5kaWYKLSsJCSAgZWxzZQotKwkJICAgIHR5cGUgPSBUWVBFX1NUUklORzsKLSsJCSAgYnJlYWs7Ci0rI2lmZGVmIEhBVkVfV0NIQVJfVAotKwkJY2FzZSAnUyc6Ci0rCQkgIHR5cGUgPSBUWVBFX1dJREVfU1RSSU5HOwotKwkJICBjID0gJ3MnOwotKwkJICBicmVhazsKLSsjZW5kaWYKLSsJCWNhc2UgJ3AnOgotKwkJICB0eXBlID0gVFlQRV9QT0lOVEVSOwotKwkJICBicmVhazsKLSsJCWNhc2UgJ24nOgotKyNpZmRlZiBIQVZFX0xPTkdfTE9ORwotKwkJICBpZiAoZmxhZ3MgPj0gMTYgfHwgKGZsYWdzICYgNCkpCi0rCQkgICAgdHlwZSA9IFRZUEVfQ09VTlRfTE9OR0xPTkdJTlRfUE9JTlRFUjsKLSsJCSAgZWxzZQotKyNlbmRpZgotKwkJICBpZiAoZmxhZ3MgPj0gOCkKLSsJCSAgICB0eXBlID0gVFlQRV9DT1VOVF9MT05HSU5UX1BPSU5URVI7Ci0rCQkgIGVsc2UgaWYgKGZsYWdzICYgMikKLSsJCSAgICB0eXBlID0gVFlQRV9DT1VOVF9TQ0hBUl9QT0lOVEVSOwotKwkJICBlbHNlIGlmIChmbGFncyAmIDEpCi0rCQkgICAgdHlwZSA9IFRZUEVfQ09VTlRfU0hPUlRfUE9JTlRFUjsKLSsJCSAgZWxzZQotKwkJICAgIHR5cGUgPSBUWVBFX0NPVU5UX0lOVF9QT0lOVEVSOwotKwkJICBicmVhazsKLSsJCWNhc2UgJyUnOgotKwkJICB0eXBlID0gVFlQRV9OT05FOwotKwkJICBicmVhazsKLSsJCWRlZmF1bHQ6Ci0rCQkgIC8qIFVua25vd24gY29udmVyc2lvbiBjaGFyYWN0ZXIuICAqLwotKwkJICBnb3RvIGVycm9yOwotKwkJfQotKwkgICAgfQotKwotKwkgICAgaWYgKHR5cGUgIT0gVFlQRV9OT05FKQotKwkgICAgICB7Ci0rCQlkcC0+YXJnX2luZGV4ID0gYXJnX2luZGV4OwotKwkJaWYgKGRwLT5hcmdfaW5kZXggPT0gQVJHX05PTkUpCi0rCQkgIHsKLSsJCSAgICBkcC0+YXJnX2luZGV4ID0gYXJnX3Bvc24rKzsKLSsJCSAgICBpZiAoZHAtPmFyZ19pbmRleCA9PSBBUkdfTk9ORSkKLSsJCSAgICAgIC8qIGFyZ19wb3NuIHdyYXBwZWQgYXJvdW5kLiAgKi8KLSsJCSAgICAgIGdvdG8gZXJyb3I7Ci0rCQkgIH0KLSsJCVJFR0lTVEVSX0FSRyAoZHAtPmFyZ19pbmRleCwgdHlwZSk7Ci0rCSAgICAgIH0KLSsJICAgIGRwLT5jb252ZXJzaW9uID0gYzsKLSsJICAgIGRwLT5kaXJfZW5kID0gY3A7Ci0rCSAgfQotKwotKwkgIGQtPmNvdW50Kys7Ci0rCSAgaWYgKGQtPmNvdW50ID49IGRfYWxsb2NhdGVkKQotKwkgICAgewotKwkgICAgICBzaXplX3QgbWVtb3J5X3NpemU7Ci0rCSAgICAgIERJUkVDVElWRSAqbWVtb3J5OwotKwotKwkgICAgICBkX2FsbG9jYXRlZCA9IHh0aW1lcyAoZF9hbGxvY2F0ZWQsIDIpOwotKwkgICAgICBtZW1vcnlfc2l6ZSA9IHh0aW1lcyAoZF9hbGxvY2F0ZWQsIHNpemVvZiAoRElSRUNUSVZFKSk7Ci0rCSAgICAgIGlmIChzaXplX292ZXJmbG93X3AgKG1lbW9yeV9zaXplKSkKLSsJCS8qIE92ZXJmbG93LCB3b3VsZCBsZWFkIHRvIG91dCBvZiBtZW1vcnkuICAqLwotKwkJZ290byBlcnJvcjsKLSsJICAgICAgbWVtb3J5ID0gcmVhbGxvYyAoZC0+ZGlyLCBtZW1vcnlfc2l6ZSk7Ci0rCSAgICAgIGlmIChtZW1vcnkgPT0gTlVMTCkKLSsJCS8qIE91dCBvZiBtZW1vcnkuICAqLwotKwkJZ290byBlcnJvcjsKLSsJICAgICAgZC0+ZGlyID0gbWVtb3J5OwotKwkgICAgfQotKwl9Ci0rICAgIH0KLSsgIGQtPmRpcltkLT5jb3VudF0uZGlyX3N0YXJ0ID0gY3A7Ci0rCi0rICBkLT5tYXhfd2lkdGhfbGVuZ3RoID0gbWF4X3dpZHRoX2xlbmd0aDsKLSsgIGQtPm1heF9wcmVjaXNpb25fbGVuZ3RoID0gbWF4X3ByZWNpc2lvbl9sZW5ndGg7Ci0rICByZXR1cm4gMDsKLSsKLStlcnJvcjoKLSsgIGlmIChhLT5hcmcpCi0rICAgIGZyZWUgKGEtPmFyZyk7Ci0rICBpZiAoZC0+ZGlyKQotKyAgICBmcmVlIChkLT5kaXIpOwotKyAgcmV0dXJuIC0xOwotK30KLSsKLSsjdW5kZWYgRElSRUNUSVZFUwotKyN1bmRlZiBESVJFQ1RJVkUKLSsjdW5kZWYgQ0hBUl9UCi0rI3VuZGVmIFBSSU5URl9QQVJTRQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3ByaW50Zi1wYXJzZS5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3ByaW50Zi1wYXJzZS5oCTIwMDQtMDktMTIgMTQ6NDA6MzQuNjI4NzA2NTkyIC0wNDAwCi1AQCAtMCwwICsxLDc1IEBACi0rLyogUGFyc2UgcHJpbnRmIGZvcm1hdCBzdHJpbmcuCi0rICAgQ29weXJpZ2h0IChDKSAxOTk5LCAyMDAyLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rICAgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIGFueSBsYXRlciB2ZXJzaW9uLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotKyAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsgICBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKLSsgICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywKLSsgICBVU0EuICAqLwotKwotKyNpZm5kZWYgX1BSSU5URl9QQVJTRV9ICi0rI2RlZmluZSBfUFJJTlRGX1BBUlNFX0gKLSsKLSsjaW5jbHVkZSAicHJpbnRmLWFyZ3MuaCIKLSsKLSsKLSsvKiBGbGFncyAqLwotKyNkZWZpbmUgRkxBR19HUk9VUAkgMQkvKiAnIGZsYWcgKi8KLSsjZGVmaW5lIEZMQUdfTEVGVAkgMgkvKiAtIGZsYWcgKi8KLSsjZGVmaW5lIEZMQUdfU0hPV1NJR04JIDQJLyogKyBmbGFnICovCi0rI2RlZmluZSBGTEFHX1NQQUNFCSA4CS8qIHNwYWNlIGZsYWcgKi8KLSsjZGVmaW5lIEZMQUdfQUxUCTE2CS8qICMgZmxhZyAqLwotKyNkZWZpbmUgRkxBR19aRVJPCTMyCi0rCi0rLyogYXJnX2luZGV4IHZhbHVlIGluZGljYXRpbmcgdGhhdCBubyBhcmd1bWVudCBpcyBjb25zdW1lZC4gICovCi0rI2RlZmluZSBBUkdfTk9ORQkofihzaXplX3QpMCkKLSsKLSsvKiBBIHBhcnNlZCBkaXJlY3RpdmUuICAqLwotK3R5cGVkZWYgc3RydWN0Ci0rewotKyAgY29uc3QgY2hhciogZGlyX3N0YXJ0OwotKyAgY29uc3QgY2hhciogZGlyX2VuZDsKLSsgIGludCBmbGFnczsKLSsgIGNvbnN0IGNoYXIqIHdpZHRoX3N0YXJ0OwotKyAgY29uc3QgY2hhciogd2lkdGhfZW5kOwotKyAgc2l6ZV90IHdpZHRoX2FyZ19pbmRleDsKLSsgIGNvbnN0IGNoYXIqIHByZWNpc2lvbl9zdGFydDsKLSsgIGNvbnN0IGNoYXIqIHByZWNpc2lvbl9lbmQ7Ci0rICBzaXplX3QgcHJlY2lzaW9uX2FyZ19pbmRleDsKLSsgIGNoYXIgY29udmVyc2lvbjsgLyogZCBpIG8gdSB4IFggZiBlIEUgZyBHIGMgcyBwIG4gVSAlIGJ1dCBub3QgQyBTICovCi0rICBzaXplX3QgYXJnX2luZGV4OwotK30KLStjaGFyX2RpcmVjdGl2ZTsKLSsKLSsvKiBBIHBhcnNlZCBmb3JtYXQgc3RyaW5nLiAgKi8KLSt0eXBlZGVmIHN0cnVjdAotK3sKLSsgIHNpemVfdCBjb3VudDsKLSsgIGNoYXJfZGlyZWN0aXZlICpkaXI7Ci0rICBzaXplX3QgbWF4X3dpZHRoX2xlbmd0aDsKLSsgIHNpemVfdCBtYXhfcHJlY2lzaW9uX2xlbmd0aDsKLSt9Ci0rY2hhcl9kaXJlY3RpdmVzOwotKwotKwotKy8qIFBhcnNlcyB0aGUgZm9ybWF0IHN0cmluZy4gIEZpbGxzIGluIHRoZSBudW1iZXIgTiBvZiBkaXJlY3RpdmVzLCBhbmQgZmlsbHMKLSsgICBpbiBkaXJlY3RpdmVzWzBdLCAuLi4sIGRpcmVjdGl2ZXNbTi0xXSwgYW5kIHNldHMgZGlyZWN0aXZlc1tOXS5kaXJfc3RhcnQKLSsgICB0byB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgc3RyaW5nLiAgQWxzbyBmaWxscyBpbiB0aGUgYXJnX3R5cGUgZmllbGRzIG9mIHRoZQotKyAgIGFyZ3VtZW50cyBhbmQgdGhlIG5lZWRlZCBjb3VudCBvZiBhcmd1bWVudHMuICAqLwotKyNpZmRlZiBTVEFUSUMKLStTVEFUSUMKLSsjZWxzZQotK2V4dGVybgotKyNlbmRpZgotK2ludCBwcmludGZfcGFyc2UgKGNvbnN0IGNoYXIgKmZvcm1hdCwgY2hhcl9kaXJlY3RpdmVzICpkLCBhcmd1bWVudHMgKmEpOwotKwotKyNlbmRpZiAvKiBfUFJJTlRGX1BBUlNFX0ggKi8KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC9yZWYtYWRkLnNpbgkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9yZWYtYWRkLnNpbgkyMDA0LTA5LTEyIDE0OjQwOjM0LjYzMzcwNTgzMiAtMDQwMAotQEAgLTAsMCArMSwzMSBAQAotKyMgQWRkIHRoaXMgcGFja2FnZSB0byBhIGxpc3Qgb2YgcmVmZXJlbmNlcyBzdG9yZWQgaW4gYSB0ZXh0IGZpbGUuCi0rIwotKyMgICBDb3B5cmlnaHQgKEMpIDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIwotKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rIyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsjICAgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsjICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyMgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyMgICBVU0EuCi0rIwotKyMgV3JpdHRlbiBieSBCcnVubyBIYWlibGUgPGhhaWJsZUBjbGlzcC5jb25zLm9yZz4uCi0rIwotKy9eIyBQYWNrYWdlcyB1c2luZyB0aGlzIGZpbGU6IC8gewotKyAgcy8jIFBhY2thZ2VzIHVzaW5nIHRoaXMgZmlsZTovLwotKyAgdGEKLSsgIDphCi0rICBzLyBAUEFDS0FHRUAgLyBAUEFDS0FHRUAgLwotKyAgdGIKLSsgIHMvICQvIEBQQUNLQUdFQCAvCi0rICA6YgotKyAgcy9eLyMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOi8KLSt9Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvcmVmLWRlbC5zaW4JMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvcmVmLWRlbC5zaW4JMjAwNC0wOS0xMiAxNDo0MDozNC42Mzg3MDUwNzIgLTA0MDAKLUBAIC0wLDAgKzEsMjYgQEAKLSsjIFJlbW92ZSB0aGlzIHBhY2thZ2UgZnJvbSBhIGxpc3Qgb2YgcmVmZXJlbmNlcyBzdG9yZWQgaW4gYSB0ZXh0IGZpbGUuCi0rIwotKyMgICBDb3B5cmlnaHQgKEMpIDIwMDAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIwotKyMgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyMgICB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkCi0rIyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsjICAgYW55IGxhdGVyIHZlcnNpb24uCi0rIwotKyMgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsjICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZSBHTlUKLSsjICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rIwotKyMgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotKyMgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rIyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyMgICBVU0EuCi0rIwotKyMgV3JpdHRlbiBieSBCcnVubyBIYWlibGUgPGhhaWJsZUBjbGlzcC5jb25zLm9yZz4uCi0rIwotKy9eIyBQYWNrYWdlcyB1c2luZyB0aGlzIGZpbGU6IC8gewotKyAgcy8jIFBhY2thZ2VzIHVzaW5nIHRoaXMgZmlsZTovLwotKyAgcy8gQFBBQ0tBR0VAIC8gLwotKyAgcy9eLyMgUGFja2FnZXMgdXNpbmcgdGhpcyBmaWxlOi8KLSt9Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvcmVsb2NhdGFibGUuYwkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC9yZWxvY2F0YWJsZS5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNjQ0NzA0MTYwIC0wNDAwCi1AQCAtMCwwICsxLDQ0OSBAQAotKy8qIFByb3ZpZGUgcmVsb2NhdGFibGUgcGFja2FnZXMuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFdyaXR0ZW4gYnkgQnJ1bm8gSGFpYmxlIDxicnVub0BjbGlzcC5vcmc+LCAyMDAzLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsKLSsvKiBUZWxsIGdsaWJjJ3MgPHN0ZGlvLmg+IHRvIHByb3ZpZGUgYSBwcm90b3R5cGUgZm9yIGdldGxpbmUoKS4KLSsgICBUaGlzIG11c3QgY29tZSBiZWZvcmUgPGNvbmZpZy5oPiBiZWNhdXNlIDxjb25maWcuaD4gbWF5IGluY2x1ZGUKLSsgICA8ZmVhdHVyZXMuaD4sIGFuZCBvbmNlIDxmZWF0dXJlcy5oPiBoYXMgYmVlbiBpbmNsdWRlZCwgaXQncyB0b28gbGF0ZS4gICovCi0rI2lmbmRlZiBfR05VX1NPVVJDRQotKyMgZGVmaW5lIF9HTlVfU09VUkNFCTEKLSsjZW5kaWYKLSsKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyMgaW5jbHVkZSAiY29uZmlnLmgiCi0rI2VuZGlmCi0rCi0rLyogU3BlY2lmaWNhdGlvbi4gICovCi0rI2luY2x1ZGUgInJlbG9jYXRhYmxlLmgiCi0rCi0rI2lmIEVOQUJMRV9SRUxPQ0FUQUJMRQotKwotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKwotKyNpZmRlZiBOT19YTUFMTE9DCi0rIyBkZWZpbmUgeG1hbGxvYyBtYWxsb2MKLSsjZWxzZQotKyMgaW5jbHVkZSAieGFsbG9jLmgiCi0rI2VuZGlmCi0rCi0rI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fCi0rIyBkZWZpbmUgV0lOMzJfTEVBTl9BTkRfTUVBTgotKyMgaW5jbHVkZSA8d2luZG93cy5oPgotKyNlbmRpZgotKwotKyNpZiBERVBFTkRTX09OX0xJQkNIQVJTRVQKLSsjIGluY2x1ZGUgPGxpYmNoYXJzZXQuaD4KLSsjZW5kaWYKLSsjaWYgREVQRU5EU19PTl9MSUJJQ09OViAmJiBIQVZFX0lDT05WCi0rIyBpbmNsdWRlIDxpY29udi5oPgotKyNlbmRpZgotKyNpZiBERVBFTkRTX09OX0xJQklOVEwgJiYgRU5BQkxFX05MUwotKyMgaW5jbHVkZSA8bGliaW50bC5oPgotKyNlbmRpZgotKwotKy8qIEZha2VkIGNoZWFwICdib29sJy4gICovCi0rI3VuZGVmIGJvb2wKLSsjdW5kZWYgZmFsc2UKLSsjdW5kZWYgdHJ1ZQotKyNkZWZpbmUgYm9vbCBpbnQKLSsjZGVmaW5lIGZhbHNlIDAKLSsjZGVmaW5lIHRydWUgMQotKwotKy8qIFBhdGhuYW1lIHN1cHBvcnQuCi0rICAgSVNTTEFTSChDKSAgICAgICAgICAgdGVzdHMgd2hldGhlciBDIGlzIGEgZGlyZWN0b3J5IHNlcGFyYXRvciBjaGFyYWN0ZXIuCi0rICAgSVNfUEFUSF9XSVRIX0RJUihQKSAgdGVzdHMgd2hldGhlciBQIGNvbnRhaW5zIGEgZGlyZWN0b3J5IHNwZWNpZmljYXRpb24uCi0rICovCi0rI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fIHx8IGRlZmluZWQgX19FTVhfXyB8fCBkZWZpbmVkIF9fREpHUFBfXwotKyAgLyogV2luMzIsIE9TLzIsIERPUyAqLwotKyMgZGVmaW5lIElTU0xBU0goQykgKChDKSA9PSAnLycgfHwgKEMpID09ICdcXCcpCi0rIyBkZWZpbmUgSEFTX0RFVklDRShQKSBcCi0rICAgICgoKChQKVswXSA+PSAnQScgJiYgKFApWzBdIDw9ICdaJykgfHwgKChQKVswXSA+PSAnYScgJiYgKFApWzBdIDw9ICd6JykpIFwKLSsgICAgICYmIChQKVsxXSA9PSAnOicpCi0rIyBkZWZpbmUgSVNfUEFUSF9XSVRIX0RJUihQKSBcCi0rICAgIChzdHJjaHIgKFAsICcvJykgIT0gTlVMTCB8fCBzdHJjaHIgKFAsICdcXCcpICE9IE5VTEwgfHwgSEFTX0RFVklDRSAoUCkpCi0rIyBkZWZpbmUgRklMRVNZU1RFTV9QUkVGSVhfTEVOKFApIChIQVNfREVWSUNFIChQKSA/IDIgOiAwKQotKyNlbHNlCi0rICAvKiBVbml4ICovCi0rIyBkZWZpbmUgSVNTTEFTSChDKSAoKEMpID09ICcvJykKLSsjIGRlZmluZSBJU19QQVRIX1dJVEhfRElSKFApIChzdHJjaHIgKFAsICcvJykgIT0gTlVMTCkKLSsjIGRlZmluZSBGSUxFU1lTVEVNX1BSRUZJWF9MRU4oUCkgMAotKyNlbmRpZgotKwotKy8qIE9yaWdpbmFsIGluc3RhbGxhdGlvbiBwcmVmaXguICAqLwotK3N0YXRpYyBjaGFyICpvcmlnX3ByZWZpeDsKLStzdGF0aWMgc2l6ZV90IG9yaWdfcHJlZml4X2xlbjsKLSsvKiBDdXJyZW50IGluc3RhbGxhdGlvbiBwcmVmaXguICAqLwotK3N0YXRpYyBjaGFyICpjdXJyX3ByZWZpeDsKLStzdGF0aWMgc2l6ZV90IGN1cnJfcHJlZml4X2xlbjsKLSsvKiBUaGVzZSBwcmVmaXhlcyBkbyBub3QgZW5kIGluIGEgc2xhc2guICBBbnl0aGluZyB0aGF0IHdpbGwgYmUgY29uY2F0ZW5hdGVkCi0rICAgdG8gdGhlbSBtdXN0IHN0YXJ0IHdpdGggYSBzbGFzaC4gICovCi0rCi0rLyogU2V0cyB0aGUgb3JpZ2luYWwgYW5kIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbiBwcmVmaXggb2YgdGhpcyBtb2R1bGUuCi0rICAgUmVsb2NhdGlvbiBzaW1wbHkgcmVwbGFjZXMgYSBwYXRobmFtZSBzdGFydGluZyB3aXRoIHRoZSBvcmlnaW5hbCBwcmVmaXgKLSsgICBieSB0aGUgY29ycmVzcG9uZGluZyBwYXRobmFtZSB3aXRoIHRoZSBjdXJyZW50IHByZWZpeCBpbnN0ZWFkLiAgQm90aAotKyAgIHByZWZpeGVzIHNob3VsZCBiZSBkaXJlY3RvcnkgbmFtZXMgd2l0aG91dCB0cmFpbGluZyBzbGFzaCAoaS5lLiB1c2UgIiIKLSsgICBpbnN0ZWFkIG9mICIvIikuICAqLwotK3N0YXRpYyB2b2lkCi0rc2V0X3RoaXNfcmVsb2NhdGlvbl9wcmVmaXggKGNvbnN0IGNoYXIgKm9yaWdfcHJlZml4X2FyZywKLSsJCQkgICAgY29uc3QgY2hhciAqY3Vycl9wcmVmaXhfYXJnKQotK3sKLSsgIGlmIChvcmlnX3ByZWZpeF9hcmcgIT0gTlVMTCAmJiBjdXJyX3ByZWZpeF9hcmcgIT0gTlVMTAotKyAgICAgIC8qIE9wdGltaXphdGlvbjogaWYgb3JpZ19wcmVmaXggYW5kIGN1cnJfcHJlZml4IGFyZSBlcXVhbCwgdGhlCi0rCSByZWxvY2F0aW9uIGlzIGEgbm9wLiAgKi8KLSsgICAgICAmJiBzdHJjbXAgKG9yaWdfcHJlZml4X2FyZywgY3Vycl9wcmVmaXhfYXJnKSAhPSAwKQotKyAgICB7Ci0rICAgICAgLyogRHVwbGljYXRlIHRoZSBhcmd1bWVudCBzdHJpbmdzLiAgKi8KLSsgICAgICBjaGFyICptZW1vcnk7Ci0rCi0rICAgICAgb3JpZ19wcmVmaXhfbGVuID0gc3RybGVuIChvcmlnX3ByZWZpeF9hcmcpOwotKyAgICAgIGN1cnJfcHJlZml4X2xlbiA9IHN0cmxlbiAoY3Vycl9wcmVmaXhfYXJnKTsKLSsgICAgICBtZW1vcnkgPSAoY2hhciAqKSB4bWFsbG9jIChvcmlnX3ByZWZpeF9sZW4gKyAxICsgY3Vycl9wcmVmaXhfbGVuICsgMSk7Ci0rI2lmZGVmIE5PX1hNQUxMT0MKLSsgICAgICBpZiAobWVtb3J5ICE9IE5VTEwpCi0rI2VuZGlmCi0rCXsKLSsJICBtZW1jcHkgKG1lbW9yeSwgb3JpZ19wcmVmaXhfYXJnLCBvcmlnX3ByZWZpeF9sZW4gKyAxKTsKLSsJICBvcmlnX3ByZWZpeCA9IG1lbW9yeTsKLSsJICBtZW1vcnkgKz0gb3JpZ19wcmVmaXhfbGVuICsgMTsKLSsJICBtZW1jcHkgKG1lbW9yeSwgY3Vycl9wcmVmaXhfYXJnLCBjdXJyX3ByZWZpeF9sZW4gKyAxKTsKLSsJICBjdXJyX3ByZWZpeCA9IG1lbW9yeTsKLSsJICByZXR1cm47Ci0rCX0KLSsgICAgfQotKyAgb3JpZ19wcmVmaXggPSBOVUxMOwotKyAgY3Vycl9wcmVmaXggPSBOVUxMOwotKyAgLyogRG9uJ3Qgd29ycnkgYWJvdXQgd2FzdGVkIG1lbW9yeSBoZXJlIC0gdGhpcyBmdW5jdGlvbiBpcyB1c3VhbGx5IG9ubHkKLSsgICAgIGNhbGxlZCBvbmNlLiAgKi8KLSt9Ci0rCi0rLyogU2V0cyB0aGUgb3JpZ2luYWwgYW5kIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbiBwcmVmaXggb2YgdGhlIHBhY2thZ2UuCi0rICAgUmVsb2NhdGlvbiBzaW1wbHkgcmVwbGFjZXMgYSBwYXRobmFtZSBzdGFydGluZyB3aXRoIHRoZSBvcmlnaW5hbCBwcmVmaXgKLSsgICBieSB0aGUgY29ycmVzcG9uZGluZyBwYXRobmFtZSB3aXRoIHRoZSBjdXJyZW50IHByZWZpeCBpbnN0ZWFkLiAgQm90aAotKyAgIHByZWZpeGVzIHNob3VsZCBiZSBkaXJlY3RvcnkgbmFtZXMgd2l0aG91dCB0cmFpbGluZyBzbGFzaCAoaS5lLiB1c2UgIiIKLSsgICBpbnN0ZWFkIG9mICIvIikuICAqLwotK3ZvaWQKLStzZXRfcmVsb2NhdGlvbl9wcmVmaXggKGNvbnN0IGNoYXIgKm9yaWdfcHJlZml4X2FyZywgY29uc3QgY2hhciAqY3Vycl9wcmVmaXhfYXJnKQotK3sKLSsgIHNldF90aGlzX3JlbG9jYXRpb25fcHJlZml4IChvcmlnX3ByZWZpeF9hcmcsIGN1cnJfcHJlZml4X2FyZyk7Ci0rCi0rICAvKiBOb3cgbm90aWZ5IGFsbCBkZXBlbmRlbnQgbGlicmFyaWVzLiAgKi8KLSsjaWYgREVQRU5EU19PTl9MSUJDSEFSU0VUCi0rICBsaWJjaGFyc2V0X3NldF9yZWxvY2F0aW9uX3ByZWZpeCAob3JpZ19wcmVmaXhfYXJnLCBjdXJyX3ByZWZpeF9hcmcpOwotKyNlbmRpZgotKyNpZiBERVBFTkRTX09OX0xJQklDT05WICYmIEhBVkVfSUNPTlYgJiYgX0xJQklDT05WX1ZFUlNJT04gPj0gMHgwMTA5Ci0rICBsaWJpY29udl9zZXRfcmVsb2NhdGlvbl9wcmVmaXggKG9yaWdfcHJlZml4X2FyZywgY3Vycl9wcmVmaXhfYXJnKTsKLSsjZW5kaWYKLSsjaWYgREVQRU5EU19PTl9MSUJJTlRMICYmIEVOQUJMRV9OTFMgJiYgZGVmaW5lZCBsaWJpbnRsX3NldF9yZWxvY2F0aW9uX3ByZWZpeAotKyAgbGliaW50bF9zZXRfcmVsb2NhdGlvbl9wcmVmaXggKG9yaWdfcHJlZml4X2FyZywgY3Vycl9wcmVmaXhfYXJnKTsKLSsjZW5kaWYKLSt9Ci0rCi0rI2lmICFkZWZpbmVkIElOX0xJQlJBUlkgfHwgKGRlZmluZWQgUElDICYmIGRlZmluZWQgSU5TVEFMTERJUikKLSsKLSsvKiBDb252ZW5pZW5jZSBmdW5jdGlvbjoKLSsgICBDb21wdXRlcyB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24gcHJlZml4LCBiYXNlZCBvbiB0aGUgb3JpZ2luYWwKLSsgICBpbnN0YWxsYXRpb24gcHJlZml4LCB0aGUgb3JpZ2luYWwgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBvZiBhIHBhcnRpY3VsYXIKLSsgICBmaWxlLCBhbmQgdGhlIGN1cnJlbnQgcGF0aG5hbWUgb2YgdGhpcyBmaWxlLiAgUmV0dXJucyBOVUxMIHVwb24gZmFpbHVyZS4gICovCi0rI2lmZGVmIElOX0xJQlJBUlkKLSsjZGVmaW5lIGNvbXB1dGVfY3Vycl9wcmVmaXggbG9jYWxfY29tcHV0ZV9jdXJyX3ByZWZpeAotK3N0YXRpYwotKyNlbmRpZgotK2NvbnN0IGNoYXIgKgotK2NvbXB1dGVfY3Vycl9wcmVmaXggKGNvbnN0IGNoYXIgKm9yaWdfaW5zdGFsbHByZWZpeCwKLSsJCSAgICAgY29uc3QgY2hhciAqb3JpZ19pbnN0YWxsZGlyLAotKwkJICAgICBjb25zdCBjaGFyICpjdXJyX3BhdGhuYW1lKQotK3sKLSsgIGNvbnN0IGNoYXIgKmN1cnJfaW5zdGFsbGRpcjsKLSsgIGNvbnN0IGNoYXIgKnJlbF9pbnN0YWxsZGlyOwotKwotKyAgaWYgKGN1cnJfcGF0aG5hbWUgPT0gTlVMTCkKLSsgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICAvKiBEZXRlcm1pbmUgdGhlIHJlbGF0aXZlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnksIHJlbGF0aXZlIHRvIHRoZSBwcmVmaXguCi0rICAgICBUaGlzIGlzIHNpbXBseSB0aGUgZGlmZmVyZW5jZSBiZXR3ZWVuIG9yaWdfaW5zdGFsbHByZWZpeCBhbmQKLSsgICAgIG9yaWdfaW5zdGFsbGRpci4gICovCi0rICBpZiAoc3RybmNtcCAob3JpZ19pbnN0YWxscHJlZml4LCBvcmlnX2luc3RhbGxkaXIsIHN0cmxlbiAob3JpZ19pbnN0YWxscHJlZml4KSkKLSsgICAgICAhPSAwKQotKyAgICAvKiBTaG91bGRuJ3QgaGFwcGVuIC0gbm90aGluZyBzaG91bGQgYmUgaW5zdGFsbGVkIG91dHNpZGUgJChwcmVmaXgpLiAgKi8KLSsgICAgcmV0dXJuIE5VTEw7Ci0rICByZWxfaW5zdGFsbGRpciA9IG9yaWdfaW5zdGFsbGRpciArIHN0cmxlbiAob3JpZ19pbnN0YWxscHJlZml4KTsKLSsKLSsgIC8qIERldGVybWluZSB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24gZGlyZWN0b3J5LiAgKi8KLSsgIHsKLSsgICAgY29uc3QgY2hhciAqcF9iYXNlID0gY3Vycl9wYXRobmFtZSArIEZJTEVTWVNURU1fUFJFRklYX0xFTiAoY3Vycl9wYXRobmFtZSk7Ci0rICAgIGNvbnN0IGNoYXIgKnAgPSBjdXJyX3BhdGhuYW1lICsgc3RybGVuIChjdXJyX3BhdGhuYW1lKTsKLSsgICAgY2hhciAqcTsKLSsKLSsgICAgd2hpbGUgKHAgPiBwX2Jhc2UpCi0rICAgICAgewotKwlwLS07Ci0rCWlmIChJU1NMQVNIICgqcCkpCi0rCSAgYnJlYWs7Ci0rICAgICAgfQotKwotKyAgICBxID0gKGNoYXIgKikgeG1hbGxvYyAocCAtIGN1cnJfcGF0aG5hbWUgKyAxKTsKLSsjaWZkZWYgTk9fWE1BTExPQwotKyAgICBpZiAocSA9PSBOVUxMKQotKyAgICAgIHJldHVybiBOVUxMOwotKyNlbmRpZgotKyAgICBtZW1jcHkgKHEsIGN1cnJfcGF0aG5hbWUsIHAgLSBjdXJyX3BhdGhuYW1lKTsKLSsgICAgcVtwIC0gY3Vycl9wYXRobmFtZV0gPSAnXDAnOwotKyAgICBjdXJyX2luc3RhbGxkaXIgPSBxOwotKyAgfQotKwotKyAgLyogQ29tcHV0ZSB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24gcHJlZml4IGJ5IHJlbW92aW5nIHRoZSB0cmFpbGluZwotKyAgICAgcmVsX2luc3RhbGxkaXIgZnJvbSBpdC4gICovCi0rICB7Ci0rICAgIGNvbnN0IGNoYXIgKnJwID0gcmVsX2luc3RhbGxkaXIgKyBzdHJsZW4gKHJlbF9pbnN0YWxsZGlyKTsKLSsgICAgY29uc3QgY2hhciAqY3AgPSBjdXJyX2luc3RhbGxkaXIgKyBzdHJsZW4gKGN1cnJfaW5zdGFsbGRpcik7Ci0rICAgIGNvbnN0IGNoYXIgKmNwX2Jhc2UgPQotKyAgICAgIGN1cnJfaW5zdGFsbGRpciArIEZJTEVTWVNURU1fUFJFRklYX0xFTiAoY3Vycl9pbnN0YWxsZGlyKTsKLSsKLSsgICAgd2hpbGUgKHJwID4gcmVsX2luc3RhbGxkaXIgJiYgY3AgPiBjcF9iYXNlKQotKyAgICAgIHsKLSsJYm9vbCBzYW1lID0gZmFsc2U7Ci0rCWNvbnN0IGNoYXIgKnJwaSA9IHJwOwotKwljb25zdCBjaGFyICpjcGkgPSBjcDsKLSsKLSsJd2hpbGUgKHJwaSA+IHJlbF9pbnN0YWxsZGlyICYmIGNwaSA+IGNwX2Jhc2UpCi0rCSAgewotKwkgICAgcnBpLS07Ci0rCSAgICBjcGktLTsKLSsJICAgIGlmIChJU1NMQVNIICgqcnBpKSB8fCBJU1NMQVNIICgqY3BpKSkKLSsJICAgICAgewotKwkJaWYgKElTU0xBU0ggKCpycGkpICYmIElTU0xBU0ggKCpjcGkpKQotKwkJICBzYW1lID0gdHJ1ZTsKLSsJCWJyZWFrOwotKwkgICAgICB9Ci0rI2lmIGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fIHx8IGRlZmluZWQgX19FTVhfXyB8fCBkZWZpbmVkIF9fREpHUFBfXwotKwkgICAgLyogV2luMzIsIE9TLzIsIERPUyAtIGNhc2UgaW5zaWduaWZpY2FudCBmaWxlc3lzdGVtICovCi0rCSAgICBpZiAoKCpycGkgPj0gJ2EnICYmICpycGkgPD0gJ3onID8gKnJwaSAtICdhJyArICdBJyA6ICpycGkpCi0rCQkhPSAoKmNwaSA+PSAnYScgJiYgKmNwaSA8PSAneicgPyAqY3BpIC0gJ2EnICsgJ0EnIDogKmNwaSkpCi0rCSAgICAgIGJyZWFrOwotKyNlbHNlCi0rCSAgICBpZiAoKnJwaSAhPSAqY3BpKQotKwkgICAgICBicmVhazsKLSsjZW5kaWYKLSsJICB9Ci0rCWlmICghc2FtZSkKLSsJICBicmVhazsKLSsJLyogVGhlIGxhc3QgcGF0aG5hbWUgY29tcG9uZW50IHdhcyB0aGUgc2FtZS4gIG9waSBhbmQgY3BpIG5vdyBwb2ludAotKwkgICB0byB0aGUgc2xhc2ggYmVmb3JlIGl0LiAgKi8KLSsJcnAgPSBycGk7Ci0rCWNwID0gY3BpOwotKyAgICAgIH0KLSsKLSsgICAgaWYgKHJwID4gcmVsX2luc3RhbGxkaXIpCi0rICAgICAgLyogVW5leHBlY3RlZDogVGhlIGN1cnJfaW5zdGFsbGRpciBkb2VzIG5vdCBlbmQgd2l0aCByZWxfaW5zdGFsbGRpci4gICovCi0rICAgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICAgIHsKLSsgICAgICBzaXplX3QgY3Vycl9wcmVmaXhfbGVuID0gY3AgLSBjdXJyX2luc3RhbGxkaXI7Ci0rICAgICAgY2hhciAqY3Vycl9wcmVmaXg7Ci0rCi0rICAgICAgY3Vycl9wcmVmaXggPSAoY2hhciAqKSB4bWFsbG9jIChjdXJyX3ByZWZpeF9sZW4gKyAxKTsKLSsjaWZkZWYgTk9fWE1BTExPQwotKyAgICAgIGlmIChjdXJyX3ByZWZpeCA9PSBOVUxMKQotKwlyZXR1cm4gTlVMTDsKLSsjZW5kaWYKLSsgICAgICBtZW1jcHkgKGN1cnJfcHJlZml4LCBjdXJyX2luc3RhbGxkaXIsIGN1cnJfcHJlZml4X2xlbik7Ci0rICAgICAgY3Vycl9wcmVmaXhbY3Vycl9wcmVmaXhfbGVuXSA9ICdcMCc7Ci0rCi0rICAgICAgcmV0dXJuIGN1cnJfcHJlZml4OwotKyAgICB9Ci0rICB9Ci0rfQotKwotKyNlbmRpZiAvKiAhSU5fTElCUkFSWSB8fCBQSUMgKi8KLSsKLSsjaWYgZGVmaW5lZCBQSUMgJiYgZGVmaW5lZCBJTlNUQUxMRElSCi0rCi0rLyogRnVsbCBwYXRobmFtZSBvZiBzaGFyZWQgbGlicmFyeSwgb3IgTlVMTC4gICovCi0rc3RhdGljIGNoYXIgKnNoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lOwotKwotKyNpZiBkZWZpbmVkIF9XSU4zMiB8fCBkZWZpbmVkIF9fV0lOMzJfXwotKwotKy8qIERldGVybWluZSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkgd2hlbiBpdCBpcyBsb2FkZWQuICAqLwotKwotK0JPT0wgV0lOQVBJCi0rRGxsTWFpbiAoSElOU1RBTkNFIG1vZHVsZV9oYW5kbGUsIERXT1JEIGV2ZW50LCBMUFZPSUQgcmVzZXJ2ZWQpCi0rewotKyAgKHZvaWQpIHJlc2VydmVkOwotKwotKyAgaWYgKGV2ZW50ID09IERMTF9QUk9DRVNTX0FUVEFDSCkKLSsgICAgewotKyAgICAgIC8qIFRoZSBETEwgaXMgYmVpbmcgbG9hZGVkIGludG8gYW4gYXBwbGljYXRpb24ncyBhZGRyZXNzIHJhbmdlLiAgKi8KLSsgICAgICBzdGF0aWMgY2hhciBsb2NhdGlvbltNQVhfUEFUSF07Ci0rCi0rICAgICAgaWYgKCFHZXRNb2R1bGVGaWxlTmFtZSAobW9kdWxlX2hhbmRsZSwgbG9jYXRpb24sIHNpemVvZiAobG9jYXRpb24pKSkKLSsJLyogU2hvdWxkbid0IGhhcHBlbi4gICovCi0rCXJldHVybiBGQUxTRTsKLSsKLSsgICAgICBpZiAoIUlTX1BBVEhfV0lUSF9ESVIgKGxvY2F0aW9uKSkKLSsJLyogU2hvdWxkbid0IGhhcHBlbi4gICovCi0rCXJldHVybiBGQUxTRTsKLSsKLSsgICAgICBzaGFyZWRfbGlicmFyeV9mdWxsbmFtZSA9IHN0cmR1cCAobG9jYXRpb24pOwotKyAgICB9Ci0rCi0rICByZXR1cm4gVFJVRTsKLSt9Ci0rCi0rI2Vsc2UgLyogVW5peCAqLwotKwotK3N0YXRpYyB2b2lkCi0rZmluZF9zaGFyZWRfbGlicmFyeV9mdWxsbmFtZSAoKQotK3sKLSsjaWYgZGVmaW5lZCBfX2xpbnV4X18gJiYgX19HTElCQ19fID49IDIKLSsgIC8qIExpbnV4IGhhcyAvcHJvYy9zZWxmL21hcHMuIGdsaWJjIDIgaGFzIHRoZSBnZXRsaW5lKCkgZnVuY3Rpb24uICAqLwotKyAgRklMRSAqZnA7Ci0rCi0rICAvKiBPcGVuIHRoZSBjdXJyZW50IHByb2Nlc3MnIG1hcHMgZmlsZS4gIEl0IGRlc2NyaWJlcyBvbmUgVk1BIHBlciBsaW5lLiAgKi8KLSsgIGZwID0gZm9wZW4gKCIvcHJvYy9zZWxmL21hcHMiLCAiciIpOwotKyAgaWYgKGZwKQotKyAgICB7Ci0rICAgICAgdW5zaWduZWQgbG9uZyBhZGRyZXNzID0gKHVuc2lnbmVkIGxvbmcpICZmaW5kX3NoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lOwotKyAgICAgIGZvciAoOzspCi0rCXsKLSsJICB1bnNpZ25lZCBsb25nIHN0YXJ0LCBlbmQ7Ci0rCSAgaW50IGM7Ci0rCi0rCSAgaWYgKGZzY2FuZiAoZnAsICIlbHgtJWx4IiwgJnN0YXJ0LCAmZW5kKSAhPSAyKQotKwkgICAgYnJlYWs7Ci0rCSAgaWYgKGFkZHJlc3MgPj0gc3RhcnQgJiYgYWRkcmVzcyA8PSBlbmQgLSAxKQotKwkgICAgewotKwkgICAgICAvKiBGb3VuZCBpdC4gIE5vdyBzZWUgaWYgdGhpcyBsaW5lIGNvbnRhaW5zIGEgZmlsZW5hbWUuICAqLwotKwkgICAgICB3aGlsZSAoYyA9IGdldGMgKGZwKSwgYyAhPSBFT0YgJiYgYyAhPSAnXG4nICYmIGMgIT0gJy8nKQotKwkJY29udGludWU7Ci0rCSAgICAgIGlmIChjID09ICcvJykKLSsJCXsKLSsJCSAgc2l6ZV90IHNpemU7Ci0rCQkgIGludCBsZW47Ci0rCi0rCQkgIHVuZ2V0YyAoYywgZnApOwotKwkJICBzaGFyZWRfbGlicmFyeV9mdWxsbmFtZSA9IE5VTEw7IHNpemUgPSAwOwotKwkJICBsZW4gPSBnZXRsaW5lICgmc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWUsICZzaXplLCBmcCk7Ci0rCQkgIGlmIChsZW4gPj0gMCkKLSsJCSAgICB7Ci0rCQkgICAgICAvKiBTdWNjZXNzOiBmaWxsZWQgc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWUuICAqLwotKwkJICAgICAgaWYgKGxlbiA+IDAgJiYgc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWVbbGVuIC0gMV0gPT0gJ1xuJykKLSsJCQlzaGFyZWRfbGlicmFyeV9mdWxsbmFtZVtsZW4gLSAxXSA9ICdcMCc7Ci0rCQkgICAgfQotKwkJfQotKwkgICAgICBicmVhazsKLSsJICAgIH0KLSsJICB3aGlsZSAoYyA9IGdldGMgKGZwKSwgYyAhPSBFT0YgJiYgYyAhPSAnXG4nKQotKwkgICAgY29udGludWU7Ci0rCX0KLSsgICAgICBmY2xvc2UgKGZwKTsKLSsgICAgfQotKyNlbmRpZgotK30KLSsKLSsjZW5kaWYgLyogV0lOMzIgLyBVbml4ICovCi0rCi0rLyogUmV0dXJuIHRoZSBmdWxsIHBhdGhuYW1lIG9mIHRoZSBjdXJyZW50IHNoYXJlZCBsaWJyYXJ5LgotKyAgIFJldHVybiBOVUxMIGlmIHVua25vd24uCi0rICAgR3VhcmFudGVlZCB0byB3b3JrIG9ubHkgb24gTGludXggYW5kIFdvZTMyLiAgKi8KLStzdGF0aWMgY2hhciAqCi0rZ2V0X3NoYXJlZF9saWJyYXJ5X2Z1bGxuYW1lICgpCi0rewotKyNpZiAhKGRlZmluZWQgX1dJTjMyIHx8IGRlZmluZWQgX19XSU4zMl9fKQotKyAgc3RhdGljIGJvb2wgdHJpZWRfZmluZF9zaGFyZWRfbGlicmFyeV9mdWxsbmFtZTsKLSsgIGlmICghdHJpZWRfZmluZF9zaGFyZWRfbGlicmFyeV9mdWxsbmFtZSkKLSsgICAgewotKyAgICAgIGZpbmRfc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWUgKCk7Ci0rICAgICAgdHJpZWRfZmluZF9zaGFyZWRfbGlicmFyeV9mdWxsbmFtZSA9IHRydWU7Ci0rICAgIH0KLSsjZW5kaWYKLSsgIHJldHVybiBzaGFyZWRfbGlicmFyeV9mdWxsbmFtZTsKLSt9Ci0rCi0rI2VuZGlmIC8qIFBJQyAqLwotKwotKy8qIFJldHVybnMgdGhlIHBhdGhuYW1lLCByZWxvY2F0ZWQgYWNjb3JkaW5nIHRvIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbgotKyAgIGRpcmVjdG9yeS4gICovCi0rY29uc3QgY2hhciAqCi0rcmVsb2NhdGUgKGNvbnN0IGNoYXIgKnBhdGhuYW1lKQotK3sKLSsjaWYgZGVmaW5lZCBQSUMgJiYgZGVmaW5lZCBJTlNUQUxMRElSCi0rICBzdGF0aWMgaW50IGluaXRpYWxpemVkOwotKwotKyAgLyogSW5pdGlhbGl6YXRpb24gY29kZSBmb3IgYSBzaGFyZWQgbGlicmFyeS4gICovCi0rICBpZiAoIWluaXRpYWxpemVkKQotKyAgICB7Ci0rICAgICAgLyogQXQgdGhpcyBwb2ludCwgb3JpZ19wcmVmaXggYW5kIGN1cnJfcHJlZml4IGxpa2VseSBoYXZlIGFscmVhZHkgYmVlbgotKwkgc2V0IHRocm91Z2ggdGhlIG1haW4gcHJvZ3JhbSdzIHNldF9wcm9ncmFtX25hbWVfYW5kX2luc3RhbGxkaXIKLSsJIGZ1bmN0aW9uLiAgVGhpcyBpcyBzdWZmaWNpZW50IGluIHRoZSBjYXNlIHRoYXQgdGhlIGxpYnJhcnkgaGFzCi0rCSBpbml0aWFsbHkgYmVlbiBpbnN0YWxsZWQgaW4gdGhlIHNhbWUgb3JpZ19wcmVmaXguICBCdXQgd2UgY2FuIGRvCi0rCSBiZXR0ZXIsIHRvIGFsc28gY292ZXIgdGhlIGNhc2VzIHRoYXQgMS4gaXQgaGFzIGJlZW4gaW5zdGFsbGVkCi0rCSBpbiBhIGRpZmZlcmVudCBwcmVmaXggYmVmb3JlIGJlaW5nIG1vdmVkIHRvIG9yaWdfcHJlZml4IGFuZCAobGF0ZXIpCi0rCSB0byBjdXJyX3ByZWZpeCwgMi4gdW5saWtlIHRoZSBwcm9ncmFtLCBpdCBoYXMgbm90IG1vdmVkIGF3YXkgZnJvbQotKwkgb3JpZ19wcmVmaXguICAqLwotKyAgICAgIGNvbnN0IGNoYXIgKm9yaWdfaW5zdGFsbHByZWZpeCA9IElOU1RBTExQUkVGSVg7Ci0rICAgICAgY29uc3QgY2hhciAqb3JpZ19pbnN0YWxsZGlyID0gSU5TVEFMTERJUjsKLSsgICAgICBjb25zdCBjaGFyICpjdXJyX3ByZWZpeF9iZXR0ZXI7Ci0rCi0rICAgICAgY3Vycl9wcmVmaXhfYmV0dGVyID0KLSsJY29tcHV0ZV9jdXJyX3ByZWZpeCAob3JpZ19pbnN0YWxscHJlZml4LCBvcmlnX2luc3RhbGxkaXIsCi0rCQkJICAgICBnZXRfc2hhcmVkX2xpYnJhcnlfZnVsbG5hbWUgKCkpOwotKyAgICAgIGlmIChjdXJyX3ByZWZpeF9iZXR0ZXIgPT0gTlVMTCkKLSsJY3Vycl9wcmVmaXhfYmV0dGVyID0gY3Vycl9wcmVmaXg7Ci0rCi0rICAgICAgc2V0X3JlbG9jYXRpb25fcHJlZml4IChvcmlnX2luc3RhbGxwcmVmaXgsIGN1cnJfcHJlZml4X2JldHRlcik7Ci0rCi0rICAgICAgaW5pdGlhbGl6ZWQgPSAxOwotKyAgICB9Ci0rI2VuZGlmCi0rCi0rICAvKiBOb3RlOiBJdCBpcyBub3QgbmVjZXNzYXJ5IHRvIHBlcmZvcm0gY2FzZSBpbnNlbnNpdGl2ZSBjb21wYXJpc29uIGhlcmUsCi0rICAgICBldmVuIGZvciBET1MtbGlrZSBmaWxlc3lzdGVtcywgYmVjYXVzZSB0aGUgcGF0aG5hbWUgYXJndW1lbnQgd2FzCi0rICAgICB0eXBpY2FsbHkgY3JlYXRlZCBmcm9tIHRoZSBzYW1lIE1ha2VmaWxlIHZhcmlhYmxlIGFzIG9yaWdfcHJlZml4IGNhbWUKLSsgICAgIGZyb20uICAqLwotKyAgaWYgKG9yaWdfcHJlZml4ICE9IE5VTEwgJiYgY3Vycl9wcmVmaXggIT0gTlVMTAotKyAgICAgICYmIHN0cm5jbXAgKHBhdGhuYW1lLCBvcmlnX3ByZWZpeCwgb3JpZ19wcmVmaXhfbGVuKSA9PSAwKQotKyAgICB7Ci0rICAgICAgaWYgKHBhdGhuYW1lW29yaWdfcHJlZml4X2xlbl0gPT0gJ1wwJykKLSsJLyogcGF0aG5hbWUgZXF1YWxzIG9yaWdfcHJlZml4LiAgKi8KLSsJcmV0dXJuIGN1cnJfcHJlZml4OwotKyAgICAgIGlmIChJU1NMQVNIIChwYXRobmFtZVtvcmlnX3ByZWZpeF9sZW5dKSkKLSsJewotKwkgIC8qIHBhdGhuYW1lIHN0YXJ0cyB3aXRoIG9yaWdfcHJlZml4LiAgKi8KLSsJICBjb25zdCBjaGFyICpwYXRobmFtZV90YWlsID0gJnBhdGhuYW1lW29yaWdfcHJlZml4X2xlbl07Ci0rCSAgY2hhciAqcmVzdWx0ID0KLSsJICAgIChjaGFyICopIHhtYWxsb2MgKGN1cnJfcHJlZml4X2xlbiArIHN0cmxlbiAocGF0aG5hbWVfdGFpbCkgKyAxKTsKLSsKLSsjaWZkZWYgTk9fWE1BTExPQwotKwkgIGlmIChyZXN1bHQgIT0gTlVMTCkKLSsjZW5kaWYKLSsJICAgIHsKLSsJICAgICAgbWVtY3B5IChyZXN1bHQsIGN1cnJfcHJlZml4LCBjdXJyX3ByZWZpeF9sZW4pOwotKwkgICAgICBzdHJjcHkgKHJlc3VsdCArIGN1cnJfcHJlZml4X2xlbiwgcGF0aG5hbWVfdGFpbCk7Ci0rCSAgICAgIHJldHVybiByZXN1bHQ7Ci0rCSAgICB9Ci0rCX0KLSsgICAgfQotKyAgLyogTm90aGluZyB0byByZWxvY2F0ZS4gICovCi0rICByZXR1cm4gcGF0aG5hbWU7Ci0rfQotKwotKyNlbmRpZgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3JlbG9jYXRhYmxlLmgJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvcmVsb2NhdGFibGUuaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjY1MTcwMzA5NiAtMDQwMAotQEAgLTAsMCArMSw3NyBAQAotKy8qIFByb3ZpZGUgcmVsb2NhdGFibGUgcGFja2FnZXMuCi0rICAgQ29weXJpZ2h0IChDKSAyMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyAgIFdyaXR0ZW4gYnkgQnJ1bm8gSGFpYmxlIDxicnVub0BjbGlzcC5vcmc+LCAyMDAzLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZuZGVmIF9SRUxPQ0FUQUJMRV9ICi0rI2RlZmluZSBfUkVMT0NBVEFCTEVfSAotKwotKyNpZmRlZiBfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotKwotKwotKy8qIFRoaXMgY2FuIGJlIGVuYWJsZWQgdGhyb3VnaCB0aGUgY29uZmlndXJlIC0tZW5hYmxlLXJlbG9jYXRhYmxlIG9wdGlvbi4gICovCi0rI2lmIEVOQUJMRV9SRUxPQ0FUQUJMRQotKwotKy8qIFdoZW4gYnVpbGRpbmcgYSBETEwsIHdlIG11c3QgZXhwb3J0IHNvbWUgZnVuY3Rpb25zLiAgTm90ZSB0aGF0IGJlY2F1c2UKLSsgICB0aGlzIGlzIGEgcHJpdmF0ZSAuaCBmaWxlLCB3ZSBkb24ndCBuZWVkIHRvIHVzZSBfX2RlY2xzcGVjKGRsbGltcG9ydCkKLSsgICBpbiBhbnkgY2FzZS4gICovCi0rI2lmIGRlZmluZWQgX01TQ19WRVIgJiYgQlVJTERJTkdfRExMCi0rIyBkZWZpbmUgUkVMT0NBVEFCTEVfRExMX0VYUE9SVEVEIF9fZGVjbHNwZWMoZGxsZXhwb3J0KQotKyNlbHNlCi0rIyBkZWZpbmUgUkVMT0NBVEFCTEVfRExMX0VYUE9SVEVECi0rI2VuZGlmCi0rCi0rLyogU2V0cyB0aGUgb3JpZ2luYWwgYW5kIHRoZSBjdXJyZW50IGluc3RhbGxhdGlvbiBwcmVmaXggb2YgdGhlIHBhY2thZ2UuCi0rICAgUmVsb2NhdGlvbiBzaW1wbHkgcmVwbGFjZXMgYSBwYXRobmFtZSBzdGFydGluZyB3aXRoIHRoZSBvcmlnaW5hbCBwcmVmaXgKLSsgICBieSB0aGUgY29ycmVzcG9uZGluZyBwYXRobmFtZSB3aXRoIHRoZSBjdXJyZW50IHByZWZpeCBpbnN0ZWFkLiAgQm90aAotKyAgIHByZWZpeGVzIHNob3VsZCBiZSBkaXJlY3RvcnkgbmFtZXMgd2l0aG91dCB0cmFpbGluZyBzbGFzaCAoaS5lLiB1c2UgIiIKLSsgICBpbnN0ZWFkIG9mICIvIikuICAqLwotK2V4dGVybiBSRUxPQ0FUQUJMRV9ETExfRVhQT1JURUQgdm9pZAotKyAgICAgICBzZXRfcmVsb2NhdGlvbl9wcmVmaXggKGNvbnN0IGNoYXIgKm9yaWdfcHJlZml4LAotKwkJCSAgICAgIGNvbnN0IGNoYXIgKmN1cnJfcHJlZml4KTsKLSsKLSsvKiBSZXR1cm5zIHRoZSBwYXRobmFtZSwgcmVsb2NhdGVkIGFjY29yZGluZyB0byB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24KLSsgICBkaXJlY3RvcnkuICAqLwotK2V4dGVybiBjb25zdCBjaGFyICogcmVsb2NhdGUgKGNvbnN0IGNoYXIgKnBhdGhuYW1lKTsKLSsKLSsvKiBNZW1vcnkgbWFuYWdlbWVudDogcmVsb2NhdGUoKSBsZWFrcyBtZW1vcnksIGJlY2F1c2UgaXQgaGFzIHRvIGNvbnN0cnVjdAotKyAgIGEgZnJlc2ggcGF0aG5hbWUuICBJZiB0aGlzIGlzIGEgcHJvYmxlbSBiZWNhdXNlIHlvdXIgcHJvZ3JhbSBjYWxscwotKyAgIHJlbG9jYXRlKCkgZnJlcXVlbnRseSwgdGhpbmsgYWJvdXQgY2FjaGluZyB0aGUgcmVzdWx0LiAgKi8KLSsKLSsvKiBDb252ZW5pZW5jZSBmdW5jdGlvbjoKLSsgICBDb21wdXRlcyB0aGUgY3VycmVudCBpbnN0YWxsYXRpb24gcHJlZml4LCBiYXNlZCBvbiB0aGUgb3JpZ2luYWwKLSsgICBpbnN0YWxsYXRpb24gcHJlZml4LCB0aGUgb3JpZ2luYWwgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeSBvZiBhIHBhcnRpY3VsYXIKLSsgICBmaWxlLCBhbmQgdGhlIGN1cnJlbnQgcGF0aG5hbWUgb2YgdGhpcyBmaWxlLiAgUmV0dXJucyBOVUxMIHVwb24gZmFpbHVyZS4gICovCi0rZXh0ZXJuIGNvbnN0IGNoYXIgKiBjb21wdXRlX2N1cnJfcHJlZml4IChjb25zdCBjaGFyICpvcmlnX2luc3RhbGxwcmVmaXgsCi0rCQkJCQkgY29uc3QgY2hhciAqb3JpZ19pbnN0YWxsZGlyLAotKwkJCQkJIGNvbnN0IGNoYXIgKmN1cnJfcGF0aG5hbWUpOwotKwotKyNlbHNlCi0rCi0rLyogQnkgZGVmYXVsdCwgd2UgdXNlIHRoZSBoYXJkd2lyZWQgcGF0aG5hbWVzLiAgKi8KLSsjZGVmaW5lIHJlbG9jYXRlKHBhdGhuYW1lKSAocGF0aG5hbWUpCi0rCi0rI2VuZGlmCi0rCi0rCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotKwotKyNlbmRpZiAvKiBfUkVMT0NBVEFCTEVfSCAqLwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3RleHRkb21haW4uYwkxOTk4LTA0LTI2IDA5OjIyOjM3LjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC90ZXh0ZG9tYWluLmMJMjAwNC0wOS0xMiAxNDo0MDozNC42NTY3MDIzMzYgLTA0MDAKLUBAIC0xLDUxICsxLDYwIEBACi0tLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIHRleHRkb21haW4oMykgZnVuY3Rpb24KLS0gICBDb3B5cmlnaHQgKEMpIDE5OTUsIDE5OTYsIDE5OTcgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0tICAgV3JpdHRlbiBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4sIDE5OTUuCi0rLyogSW1wbGVtZW50YXRpb24gb2YgdGhlIHRleHRkb21haW4oMykgZnVuY3Rpb24uCi0rICAgQ29weXJpZ2h0IChDKSAxOTk1LTE5OTgsIDIwMDAtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSAKLS0gICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiwgb3IgKGF0IHlvdXIgb3B0aW9uKQotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSAgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSAKLSAgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSAgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLSAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0gICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0gCi0tICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0gICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotLSAgIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LCBVU0EuICAqLwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0gCi0gI2lmZGVmIEhBVkVfQ09ORklHX0gKLSAjIGluY2x1ZGUgPGNvbmZpZy5oPgotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIF9MSUJDCi0tIyBpbmNsdWRlIDxzdGRsaWIuaD4KLS0jZW5kaWYKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotIAotLSNpZiBkZWZpbmVkIFNURENfSEVBREVSUyB8fCBkZWZpbmVkIEhBVkVfU1RSSU5HX0ggfHwgZGVmaW5lZCBfTElCQwotLSMgaW5jbHVkZSA8c3RyaW5nLmg+Ci0rI2lmZGVmIF9MSUJDCi0rIyBpbmNsdWRlIDxsaWJpbnRsLmg+Ci0gI2Vsc2UKLS0jIGluY2x1ZGUgPHN0cmluZ3MuaD4KLS0jIGlmbmRlZiBtZW1jcHkKLS0jICBkZWZpbmUgbWVtY3B5KERzdCwgU3JjLCBOdW0pIGJjb3B5IChTcmMsIERzdCwgTnVtKQotLSMgZW5kaWYKLSsjIGluY2x1ZGUgImxpYmdudWludGwuaCIKLSAjZW5kaWYKLSsjaW5jbHVkZSAiZ2V0dGV4dFAuaCIKLSAKLSAjaWZkZWYgX0xJQkMKLS0jIGluY2x1ZGUgPGxpYmludGwuaD4KLSsvKiBXZSBoYXZlIHRvIGhhbmRsZSBtdWx0aS10aHJlYWRlZCBhcHBsaWNhdGlvbnMuICAqLwotKyMgaW5jbHVkZSA8Yml0cy9saWJjLWxvY2suaD4KLSAjZWxzZQotLSMgaW5jbHVkZSAibGliZ2V0dGV4dC5oIgotKy8qIFByb3ZpZGUgZHVtbXkgaW1wbGVtZW50YXRpb24gaWYgdGhpcyBpcyBvdXRzaWRlIGdsaWJjLiAgKi8KLSsjIGRlZmluZSBfX2xpYmNfcndsb2NrX2RlZmluZShDTEFTUywgTkFNRSkKLSsjIGRlZmluZSBfX2xpYmNfcndsb2NrX3dybG9jayhOQU1FKQotKyMgZGVmaW5lIF9fbGliY19yd2xvY2tfdW5sb2NrKE5BTUUpCi0rI2VuZGlmCi0rCi0rLyogVGhlIGludGVybmFsIHZhcmlhYmxlcyBpbiB0aGUgc3RhbmRhbG9uZSBsaWJpbnRsLmEgbXVzdCBoYXZlIGRpZmZlcmVudAotKyAgIG5hbWVzIHRoYW4gdGhlIGludGVybmFsIHZhcmlhYmxlcyBpbiBHTlUgbGliYywgb3RoZXJ3aXNlIHByb2dyYW1zCi0rICAgdXNpbmcgbGliaW50bC5hIGNhbm5vdCBiZSBsaW5rZWQgc3RhdGljYWxseS4gICovCi0rI2lmICFkZWZpbmVkIF9MSUJDCi0rIyBkZWZpbmUgX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW4gbGliaW50bF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluCi0rIyBkZWZpbmUgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gbGliaW50bF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluCi0gI2VuZGlmCi0gCi0gLyogQEAgZW5kIG9mIHByb2xvZyBAQCAqLwotIAotIC8qIE5hbWUgb2YgdGhlIGRlZmF1bHQgdGV4dCBkb21haW4uICAqLwotLWV4dGVybiBjb25zdCBjaGFyIF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluW107Ci0rZXh0ZXJuIGNvbnN0IGNoYXIgX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW5bXSBhdHRyaWJ1dGVfaGlkZGVuOwotIAotIC8qIERlZmF1bHQgdGV4dCBkb21haW4gaW4gd2hpY2ggZW50cmllcyBmb3IgZ2V0dGV4dCgzKSBhcmUgdG8gYmUgZm91bmQuICAqLwotLWV4dGVybiBjb25zdCBjaGFyICpfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbjsKLStleHRlcm4gY29uc3QgY2hhciAqX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gYXR0cmlidXRlX2hpZGRlbjsKLSAKLSAKLSAvKiBOYW1lcyBmb3IgdGhlIGxpYmludGwgZnVuY3Rpb25zIGFyZSBhIHByb2JsZW0uICBUaGV5IG11c3Qgbm90IGNsYXNoCi1AQCAtNTQsNTAgKzYzLDc2IEBACi0gICAgcHJlZml4LiAgU28gd2UgaGF2ZSB0byBtYWtlIGEgZGlmZmVyZW5jZSBoZXJlLiAgKi8KLSAjaWZkZWYgX0xJQkMKLSAjIGRlZmluZSBURVhURE9NQUlOIF9fdGV4dGRvbWFpbgotLSMgZGVmaW5lIHN0cmR1cChzdHIpIF9fc3RyZHVwIChzdHIpCi0rIyBpZm5kZWYgc3RyZHVwCi0rIyAgZGVmaW5lIHN0cmR1cChzdHIpIF9fc3RyZHVwIChzdHIpCi0rIyBlbmRpZgotICNlbHNlCi0tIyBkZWZpbmUgVEVYVERPTUFJTiB0ZXh0ZG9tYWluX18KLSsjIGRlZmluZSBURVhURE9NQUlOIGxpYmludGxfdGV4dGRvbWFpbgotICNlbmRpZgotIAotKy8qIExvY2sgdmFyaWFibGUgdG8gcHJvdGVjdCB0aGUgZ2xvYmFsIGRhdGEgaW4gdGhlIGdldHRleHQgaW1wbGVtZW50YXRpb24uICAqLwotK19fbGliY19yd2xvY2tfZGVmaW5lIChleHRlcm4sIF9ubF9zdGF0ZV9sb2NrIGF0dHJpYnV0ZV9oaWRkZW4pCi0rCi0gLyogU2V0IHRoZSBjdXJyZW50IGRlZmF1bHQgbWVzc2FnZSBjYXRhbG9nIHRvIERPTUFJTk5BTUUuCi0gICAgSWYgRE9NQUlOTkFNRSBpcyBudWxsLCByZXR1cm4gdGhlIGN1cnJlbnQgZGVmYXVsdC4KLSAgICBJZiBET01BSU5OQU1FIGlzICIiLCByZXNldCB0byB0aGUgZGVmYXVsdCBvZiAibWVzc2FnZXMiLiAgKi8KLSBjaGFyICoKLS1URVhURE9NQUlOIChkb21haW5uYW1lKQotLSAgICAgY29uc3QgY2hhciAqZG9tYWlubmFtZTsKLStURVhURE9NQUlOIChjb25zdCBjaGFyICpkb21haW5uYW1lKQotIHsKLS0gIGNoYXIgKm9sZDsKLSsgIGNoYXIgKm5ld19kb21haW47Ci0rICBjaGFyICpvbGRfZG9tYWluOwotIAotICAgLyogQSBOVUxMIHBvaW50ZXIgcmVxdWVzdHMgdGhlIGN1cnJlbnQgc2V0dGluZy4gICovCi0gICBpZiAoZG9tYWlubmFtZSA9PSBOVUxMKQotICAgICByZXR1cm4gKGNoYXIgKikgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW47Ci0gCi0tICBvbGQgPSAoY2hhciAqKSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbjsKLSsgIF9fbGliY19yd2xvY2tfd3Jsb2NrIChfbmxfc3RhdGVfbG9jayk7Ci0rCi0rICBvbGRfZG9tYWluID0gKGNoYXIgKikgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW47Ci0gCi0gICAvKiBJZiBkb21haW4gbmFtZSBpcyB0aGUgbnVsbCBzdHJpbmcgc2V0IHRvIGRlZmF1bHQgZG9tYWluICJtZXNzYWdlcyIuICAqLwotICAgaWYgKGRvbWFpbm5hbWVbMF0gPT0gJ1wwJwotICAgICAgIHx8IHN0cmNtcCAoZG9tYWlubmFtZSwgX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW4pID09IDApCi0tICAgIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluID0gX25sX2RlZmF1bHRfZGVmYXVsdF9kb21haW47Ci0rICAgIHsKLSsgICAgICBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbiA9IF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluOwotKyAgICAgIG5ld19kb21haW4gPSAoY2hhciAqKSBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbjsKLSsgICAgfQotKyAgZWxzZSBpZiAoc3RyY21wIChkb21haW5uYW1lLCBvbGRfZG9tYWluKSA9PSAwKQotKyAgICAvKiBUaGlzIGNhbiBoYXBwZW4gYW5kIHBlb3BsZSB3aWxsIHVzZSBpdCB0byBzaWduYWwgdGhhdCBzb21lCi0rICAgICAgIGVudmlyb25tZW50IHZhcmlhYmxlIGNoYW5nZWQuICAqLwotKyAgICBuZXdfZG9tYWluID0gb2xkX2RvbWFpbjsKLSAgIGVsc2UKLSAgICAgewotICAgICAgIC8qIElmIHRoZSBmb2xsb3dpbmcgbWFsbG9jIGZhaWxzIGBfbmxfY3VycmVudF9kZWZhdWx0X2RvbWFpbicKLSAJIHdpbGwgYmUgTlVMTC4gIFRoaXMgdmFsdWUgd2lsbCBiZSByZXR1cm5lZCBhbmQgc28gc2lnbmFscyB3ZQotIAkgYXJlIG91dCBvZiBjb3JlLiAgKi8KLSAjaWYgZGVmaW5lZCBfTElCQyB8fCBkZWZpbmVkIEhBVkVfU1RSRFVQCi0tICAgICAgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gPSBzdHJkdXAgKGRvbWFpbm5hbWUpOwotKyAgICAgIG5ld19kb21haW4gPSBzdHJkdXAgKGRvbWFpbm5hbWUpOwotICNlbHNlCi0gICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAoZG9tYWlubmFtZSkgKyAxOwotLSAgICAgIGNoYXIgKmNwID0gKGNoYXIgKikgbWFsbG9jIChsZW4pOwotLSAgICAgIGlmIChjcCAhPSBOVUxMKQotLQltZW1jcHkgKGNwLCBkb21haW5uYW1lLCBsZW4pOwotLSAgICAgIF9ubF9jdXJyZW50X2RlZmF1bHRfZG9tYWluID0gY3A7Ci0rICAgICAgbmV3X2RvbWFpbiA9IChjaGFyICopIG1hbGxvYyAobGVuKTsKLSsgICAgICBpZiAobmV3X2RvbWFpbiAhPSBOVUxMKQotKwltZW1jcHkgKG5ld19kb21haW4sIGRvbWFpbm5hbWUsIGxlbik7Ci0gI2VuZGlmCi0rCi0rICAgICAgaWYgKG5ld19kb21haW4gIT0gTlVMTCkKLSsJX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW4gPSBuZXdfZG9tYWluOwotICAgICB9Ci0gCi0tICBpZiAob2xkICE9IF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluKQotLSAgICBmcmVlIChvbGQpOwotKyAgLyogV2UgdXNlIHRoaXMgcG9zc2liaWxpdHkgdG8gc2lnbmFsIGEgY2hhbmdlIG9mIHRoZSBsb2FkZWQgY2F0YWxvZ3MKLSsgICAgIHNpbmNlIHRoaXMgaXMgbW9zdCBsaWtlbHkgdGhlIGNhc2UgYW5kIHRoZXJlIGlzIG5vIG90aGVyIGVhc3kgd2UKLSsgICAgIHRvIGRvIGl0LiAgRG8gaXQgb25seSB3aGVuIHRoZSBjYWxsIHdhcyBzdWNjZXNzZnVsLiAgKi8KLSsgIGlmIChuZXdfZG9tYWluICE9IE5VTEwpCi0rICAgIHsKLSsgICAgICArK19ubF9tc2dfY2F0X2NudHI7Ci0gCi0tICByZXR1cm4gKGNoYXIgKikgX25sX2N1cnJlbnRfZGVmYXVsdF9kb21haW47Ci0rICAgICAgaWYgKG9sZF9kb21haW4gIT0gbmV3X2RvbWFpbiAmJiBvbGRfZG9tYWluICE9IF9ubF9kZWZhdWx0X2RlZmF1bHRfZG9tYWluKQotKwlmcmVlIChvbGRfZG9tYWluKTsKLSsgICAgfQotKwotKyAgX19saWJjX3J3bG9ja191bmxvY2sgKF9ubF9zdGF0ZV9sb2NrKTsKLSsKLSsgIHJldHVybiBuZXdfZG9tYWluOwotIH0KLSAKLSAjaWZkZWYgX0xJQkMKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvaW50bC92YXNucHJpbnRmLmMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvdmFzbnByaW50Zi5jCTIwMDQtMDktMTIgMTQ6NDA6MzQuNjYyNzAxNDI0IC0wNDAwCi1AQCAtMCwwICsxLDg4NyBAQAotKy8qIHZzcHJpbnRmIHdpdGggYXV0b21hdGljIG1lbW9yeSBhbGxvY2F0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMi0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsvKiBUZWxsIGdsaWJjJ3MgPHN0ZGlvLmg+IHRvIHByb3ZpZGUgYSBwcm90b3R5cGUgZm9yIHNucHJpbnRmKCkuCi0rICAgVGhpcyBtdXN0IGNvbWUgYmVmb3JlIDxjb25maWcuaD4gYmVjYXVzZSA8Y29uZmlnLmg+IG1heSBpbmNsdWRlCi0rICAgPGZlYXR1cmVzLmg+LCBhbmQgb25jZSA8ZmVhdHVyZXMuaD4gaGFzIGJlZW4gaW5jbHVkZWQsIGl0J3MgdG9vIGxhdGUuICAqLwotKyNpZm5kZWYgX0dOVV9TT1VSQ0UKLSsjIGRlZmluZSBfR05VX1NPVVJDRSAgICAxCi0rI2VuZGlmCi0rCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjIGluY2x1ZGUgPGNvbmZpZy5oPgotKyNlbmRpZgotKyNpZm5kZWYgSU5fTElCSU5UTAotKyMgaW5jbHVkZSA8YWxsb2NhLmg+Ci0rI2VuZGlmCi0rCi0rLyogU3BlY2lmaWNhdGlvbi4gICovCi0rI2lmIFdJREVfQ0hBUl9WRVJTSU9OCi0rIyBpbmNsdWRlICJ2YXNud3ByaW50Zi5oIgotKyNlbHNlCi0rIyBpbmNsdWRlICJ2YXNucHJpbnRmLmgiCi0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgPHN0ZGlvLmg+CS8qIHNucHJpbnRmKCksIHNwcmludGYoKSAqLwotKyNpbmNsdWRlIDxzdGRsaWIuaD4JLyogYWJvcnQoKSwgbWFsbG9jKCksIHJlYWxsb2MoKSwgZnJlZSgpICovCi0rI2luY2x1ZGUgPHN0cmluZy5oPgkvKiBtZW1jcHkoKSwgc3RybGVuKCkgKi8KLSsjaW5jbHVkZSA8ZXJybm8uaD4JLyogZXJybm8gKi8KLSsjaW5jbHVkZSA8bGltaXRzLmg+CS8qIENIQVJfQklUICovCi0rI2luY2x1ZGUgPGZsb2F0Lmg+CS8qIERCTF9NQVhfRVhQLCBMREJMX01BWF9FWFAgKi8KLSsjaWYgV0lERV9DSEFSX1ZFUlNJT04KLSsjIGluY2x1ZGUgIndwcmludGYtcGFyc2UuaCIKLSsjZWxzZQotKyMgaW5jbHVkZSAicHJpbnRmLXBhcnNlLmgiCi0rI2VuZGlmCi0rCi0rLyogQ2hlY2tlZCBzaXplX3QgY29tcHV0YXRpb25zLiAgKi8KLSsjaW5jbHVkZSAieHNpemUuaCIKLSsKLSsjaWZkZWYgSEFWRV9XQ0hBUl9UCi0rIyBpZmRlZiBIQVZFX1dDU0xFTgotKyMgIGRlZmluZSBsb2NhbF93Y3NsZW4gd2NzbGVuCi0rIyBlbHNlCi0rICAgLyogU29sYXJpcyAyLjUuMSBoYXMgd2NzbGVuKCkgaW4gYSBzZXBhcmF0ZSBsaWJyYXJ5IGxpYncuc28uIFRvIGF2b2lkCi0rICAgICAgYSBkZXBlbmRlbmN5IHRvd2FyZHMgdGhpcyBsaWJyYXJ5LCBoZXJlIGlzIGEgbG9jYWwgc3Vic3RpdHV0ZS4KLSsgICAgICBEZWZpbmUgdGhpcyBzdWJzdGl0dXRlIG9ubHkgb25jZSwgZXZlbiBpZiB0aGlzIGZpbGUgaXMgaW5jbHVkZWQKLSsgICAgICB0d2ljZSBpbiB0aGUgc2FtZSBjb21waWxhdGlvbiB1bml0LiAgKi8KLSsjICBpZm5kZWYgbG9jYWxfd2NzbGVuX2RlZmluZWQKLSsjICAgZGVmaW5lIGxvY2FsX3djc2xlbl9kZWZpbmVkIDEKLStzdGF0aWMgc2l6ZV90Ci0rbG9jYWxfd2NzbGVuIChjb25zdCB3Y2hhcl90ICpzKQotK3sKLSsgIGNvbnN0IHdjaGFyX3QgKnB0cjsKLSsKLSsgIGZvciAocHRyID0gczsgKnB0ciAhPSAod2NoYXJfdCkgMDsgcHRyKyspCi0rICAgIDsKLSsgIHJldHVybiBwdHIgLSBzOwotK30KLSsjICBlbmRpZgotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsjaWYgV0lERV9DSEFSX1ZFUlNJT04KLSsjIGRlZmluZSBWQVNOUFJJTlRGIHZhc253cHJpbnRmCi0rIyBkZWZpbmUgQ0hBUl9UIHdjaGFyX3QKLSsjIGRlZmluZSBESVJFQ1RJVkUgd2NoYXJfdF9kaXJlY3RpdmUKLSsjIGRlZmluZSBESVJFQ1RJVkVTIHdjaGFyX3RfZGlyZWN0aXZlcwotKyMgZGVmaW5lIFBSSU5URl9QQVJTRSB3cHJpbnRmX3BhcnNlCi0rIyBkZWZpbmUgVVNFX1NOUFJJTlRGIDEKLSsjIGlmIEhBVkVfREVDTF9fU05XUFJJTlRGCi0rICAgLyogT24gV2luZG93cywgdGhlIGZ1bmN0aW9uIHN3cHJpbnRmKCkgaGFzIGEgZGlmZmVyZW50IHNpZ25hdHVyZSB0aGFuCi0rICAgICAgb24gVW5peDsgd2UgdXNlIHRoZSBfc253cHJpbnRmKCkgZnVuY3Rpb24gaW5zdGVhZC4gICovCi0rIyAgZGVmaW5lIFNOUFJJTlRGIF9zbndwcmludGYKLSsjIGVsc2UKLSsgICAvKiBVbml4LiAgKi8KLSsjICBkZWZpbmUgU05QUklOVEYgc3dwcmludGYKLSsjIGVuZGlmCi0rI2Vsc2UKLSsjIGRlZmluZSBWQVNOUFJJTlRGIHZhc25wcmludGYKLSsjIGRlZmluZSBDSEFSX1QgY2hhcgotKyMgZGVmaW5lIERJUkVDVElWRSBjaGFyX2RpcmVjdGl2ZQotKyMgZGVmaW5lIERJUkVDVElWRVMgY2hhcl9kaXJlY3RpdmVzCi0rIyBkZWZpbmUgUFJJTlRGX1BBUlNFIHByaW50Zl9wYXJzZQotKyMgZGVmaW5lIFVTRV9TTlBSSU5URiAoSEFWRV9ERUNMX19TTlBSSU5URiB8fCBIQVZFX1NOUFJJTlRGKQotKyMgaWYgSEFWRV9ERUNMX19TTlBSSU5URgotKyAgIC8qIFdpbmRvd3MuICAqLwotKyMgIGRlZmluZSBTTlBSSU5URiBfc25wcmludGYKLSsjIGVsc2UKLSsgICAvKiBVbml4LiAgKi8KLSsjICBkZWZpbmUgU05QUklOVEYgc25wcmludGYKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rQ0hBUl9UICoKLStWQVNOUFJJTlRGIChDSEFSX1QgKnJlc3VsdGJ1Ziwgc2l6ZV90ICpsZW5ndGhwLCBjb25zdCBDSEFSX1QgKmZvcm1hdCwgdmFfbGlzdCBhcmdzKQotK3sKLSsgIERJUkVDVElWRVMgZDsKLSsgIGFyZ3VtZW50cyBhOwotKwotKyAgaWYgKFBSSU5URl9QQVJTRSAoZm9ybWF0LCAmZCwgJmEpIDwgMCkKLSsgICAgewotKyAgICAgIGVycm5vID0gRUlOVkFMOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0rI2RlZmluZSBDTEVBTlVQKCkgXAotKyAgZnJlZSAoZC5kaXIpOwkJCQkJCQkJXAotKyAgaWYgKGEuYXJnKQkJCQkJCQkJXAotKyAgICBmcmVlIChhLmFyZyk7Ci0rCi0rICBpZiAocHJpbnRmX2ZldGNoYXJncyAoYXJncywgJmEpIDwgMCkKLSsgICAgewotKyAgICAgIENMRUFOVVAgKCk7Ci0rICAgICAgZXJybm8gPSBFSU5WQUw7Ci0rICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsKLSsgIHsKLSsgICAgc2l6ZV90IGJ1Zl9uZWVkZWRsZW5ndGg7Ci0rICAgIENIQVJfVCAqYnVmOwotKyAgICBDSEFSX1QgKmJ1Zl9tYWxsb2NlZDsKLSsgICAgY29uc3QgQ0hBUl9UICpjcDsKLSsgICAgc2l6ZV90IGk7Ci0rICAgIERJUkVDVElWRSAqZHA7Ci0rICAgIC8qIE91dHB1dCBzdHJpbmcgYWNjdW11bGF0b3IuICAqLwotKyAgICBDSEFSX1QgKnJlc3VsdDsKLSsgICAgc2l6ZV90IGFsbG9jYXRlZDsKLSsgICAgc2l6ZV90IGxlbmd0aDsKLSsKLSsgICAgLyogQWxsb2NhdGUgYSBzbWFsbCBidWZmZXIgdGhhdCB3aWxsIGhvbGQgYSBkaXJlY3RpdmUgcGFzc2VkIHRvCi0rICAgICAgIHNwcmludGYgb3Igc25wcmludGYuICAqLwotKyAgICBidWZfbmVlZGVkbGVuZ3RoID0KLSsgICAgICB4c3VtNCAoNywgZC5tYXhfd2lkdGhfbGVuZ3RoLCBkLm1heF9wcmVjaXNpb25fbGVuZ3RoLCA2KTsKLSsjaWYgSEFWRV9BTExPQ0EKLSsgICAgaWYgKGJ1Zl9uZWVkZWRsZW5ndGggPCA0MDAwIC8gc2l6ZW9mIChDSEFSX1QpKQotKyAgICAgIHsKLSsJYnVmID0gKENIQVJfVCAqKSBhbGxvY2EgKGJ1Zl9uZWVkZWRsZW5ndGggKiBzaXplb2YgKENIQVJfVCkpOwotKwlidWZfbWFsbG9jZWQgPSBOVUxMOwotKyAgICAgIH0KLSsgICAgZWxzZQotKyNlbmRpZgotKyAgICAgIHsKLSsJc2l6ZV90IGJ1Zl9tZW1zaXplID0geHRpbWVzIChidWZfbmVlZGVkbGVuZ3RoLCBzaXplb2YgKENIQVJfVCkpOwotKwlpZiAoc2l6ZV9vdmVyZmxvd19wIChidWZfbWVtc2l6ZSkpCi0rCSAgZ290byBvdXRfb2ZfbWVtb3J5XzE7Ci0rCWJ1ZiA9IChDSEFSX1QgKikgbWFsbG9jIChidWZfbWVtc2l6ZSk7Ci0rCWlmIChidWYgPT0gTlVMTCkKLSsJICBnb3RvIG91dF9vZl9tZW1vcnlfMTsKLSsJYnVmX21hbGxvY2VkID0gYnVmOwotKyAgICAgIH0KLSsKLSsgICAgaWYgKHJlc3VsdGJ1ZiAhPSBOVUxMKQotKyAgICAgIHsKLSsJcmVzdWx0ID0gcmVzdWx0YnVmOwotKwlhbGxvY2F0ZWQgPSAqbGVuZ3RocDsKLSsgICAgICB9Ci0rICAgIGVsc2UKLSsgICAgICB7Ci0rCXJlc3VsdCA9IE5VTEw7Ci0rCWFsbG9jYXRlZCA9IDA7Ci0rICAgICAgfQotKyAgICBsZW5ndGggPSAwOwotKyAgICAvKiBJbnZhcmlhbnRzOgotKyAgICAgICByZXN1bHQgaXMgZWl0aGVyID09IHJlc3VsdGJ1ZiBvciA9PSBOVUxMIG9yIG1hbGxvYy1hbGxvY2F0ZWQuCi0rICAgICAgIElmIGxlbmd0aCA+IDAsIHRoZW4gcmVzdWx0ICE9IE5VTEwuICAqLwotKwotKyAgICAvKiBFbnN1cmVzIHRoYXQgYWxsb2NhdGVkID49IG5lZWRlZC4gIEFib3J0cyB0aHJvdWdoIGEganVtcCB0bwotKyAgICAgICBvdXRfb2ZfbWVtb3J5IGlmIG5lZWRlZCBpcyBTSVpFX01BWCBvciBvdGhlcndpc2UgdG9vIGJpZy4gICovCi0rI2RlZmluZSBFTlNVUkVfQUxMT0NBVElPTihuZWVkZWQpIFwKLSsgICAgaWYgKChuZWVkZWQpID4gYWxsb2NhdGVkKQkJCQkJCSAgICAgXAotKyAgICAgIHsJCQkJCQkJCQkgICAgIFwKLSsJc2l6ZV90IG1lbW9yeV9zaXplOwkJCQkJCSAgICAgXAotKwlDSEFSX1QgKm1lbW9yeTsJCQkJCQkJICAgICBcCi0rCQkJCQkJCQkJICAgICBcCi0rCWFsbG9jYXRlZCA9IChhbGxvY2F0ZWQgPiAwID8geHRpbWVzIChhbGxvY2F0ZWQsIDIpIDogMTIpOwkgICAgIFwKLSsJaWYgKChuZWVkZWQpID4gYWxsb2NhdGVkKQkJCQkJICAgICBcCi0rCSAgYWxsb2NhdGVkID0gKG5lZWRlZCk7CQkJCQkJICAgICBcCi0rCW1lbW9yeV9zaXplID0geHRpbWVzIChhbGxvY2F0ZWQsIHNpemVvZiAoQ0hBUl9UKSk7CQkgICAgIFwKLSsJaWYgKHNpemVfb3ZlcmZsb3dfcCAobWVtb3J5X3NpemUpKQkJCQkgICAgIFwKLSsJICBnb3RvIG91dF9vZl9tZW1vcnk7CQkJCQkJICAgICBcCi0rCWlmIChyZXN1bHQgPT0gcmVzdWx0YnVmIHx8IHJlc3VsdCA9PSBOVUxMKQkJCSAgICAgXAotKwkgIG1lbW9yeSA9IChDSEFSX1QgKikgbWFsbG9jIChtZW1vcnlfc2l6ZSk7CQkJICAgICBcCi0rCWVsc2UJCQkJCQkJCSAgICAgXAotKwkgIG1lbW9yeSA9IChDSEFSX1QgKikgcmVhbGxvYyAocmVzdWx0LCBtZW1vcnlfc2l6ZSk7CQkgICAgIFwKLSsJaWYgKG1lbW9yeSA9PSBOVUxMKQkJCQkJCSAgICAgXAotKwkgIGdvdG8gb3V0X29mX21lbW9yeTsJCQkJCQkgICAgIFwKLSsJaWYgKHJlc3VsdCA9PSByZXN1bHRidWYgJiYgbGVuZ3RoID4gMCkJCQkJICAgICBcCi0rCSAgbWVtY3B5IChtZW1vcnksIHJlc3VsdCwgbGVuZ3RoICogc2l6ZW9mIChDSEFSX1QpKTsJCSAgICAgXAotKwlyZXN1bHQgPSBtZW1vcnk7CQkJCQkJICAgICBcCi0rICAgICAgfQotKwotKyAgICBmb3IgKGNwID0gZm9ybWF0LCBpID0gMCwgZHAgPSAmZC5kaXJbMF07IDsgY3AgPSBkcC0+ZGlyX2VuZCwgaSsrLCBkcCsrKQotKyAgICAgIHsKLSsJaWYgKGNwICE9IGRwLT5kaXJfc3RhcnQpCi0rCSAgewotKwkgICAgc2l6ZV90IG4gPSBkcC0+ZGlyX3N0YXJ0IC0gY3A7Ci0rCSAgICBzaXplX3QgYXVnbWVudGVkX2xlbmd0aCA9IHhzdW0gKGxlbmd0aCwgbik7Ci0rCi0rCSAgICBFTlNVUkVfQUxMT0NBVElPTiAoYXVnbWVudGVkX2xlbmd0aCk7Ci0rCSAgICBtZW1jcHkgKHJlc3VsdCArIGxlbmd0aCwgY3AsIG4gKiBzaXplb2YgKENIQVJfVCkpOwotKwkgICAgbGVuZ3RoID0gYXVnbWVudGVkX2xlbmd0aDsKLSsJICB9Ci0rCWlmIChpID09IGQuY291bnQpCi0rCSAgYnJlYWs7Ci0rCi0rCS8qIEV4ZWN1dGUgYSBzaW5nbGUgZGlyZWN0aXZlLiAgKi8KLSsJaWYgKGRwLT5jb252ZXJzaW9uID09ICclJykKLSsJICB7Ci0rCSAgICBzaXplX3QgYXVnbWVudGVkX2xlbmd0aDsKLSsKLSsJICAgIGlmICghKGRwLT5hcmdfaW5kZXggPT0gQVJHX05PTkUpKQotKwkgICAgICBhYm9ydCAoKTsKLSsJICAgIGF1Z21lbnRlZF9sZW5ndGggPSB4c3VtIChsZW5ndGgsIDEpOwotKwkgICAgRU5TVVJFX0FMTE9DQVRJT04gKGF1Z21lbnRlZF9sZW5ndGgpOwotKwkgICAgcmVzdWx0W2xlbmd0aF0gPSAnJSc7Ci0rCSAgICBsZW5ndGggPSBhdWdtZW50ZWRfbGVuZ3RoOwotKwkgIH0KLSsJZWxzZQotKwkgIHsKLSsJICAgIGlmICghKGRwLT5hcmdfaW5kZXggIT0gQVJHX05PTkUpKQotKwkgICAgICBhYm9ydCAoKTsKLSsKLSsJICAgIGlmIChkcC0+Y29udmVyc2lvbiA9PSAnbicpCi0rCSAgICAgIHsKLSsJCXN3aXRjaCAoYS5hcmdbZHAtPmFyZ19pbmRleF0udHlwZSkKLSsJCSAgewotKwkJICBjYXNlIFRZUEVfQ09VTlRfU0NIQVJfUE9JTlRFUjoKLSsJCSAgICAqYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX2NvdW50X3NjaGFyX3BvaW50ZXIgPSBsZW5ndGg7Ci0rCQkgICAgYnJlYWs7Ci0rCQkgIGNhc2UgVFlQRV9DT1VOVF9TSE9SVF9QT0lOVEVSOgotKwkJICAgICphLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfY291bnRfc2hvcnRfcG9pbnRlciA9IGxlbmd0aDsKLSsJCSAgICBicmVhazsKLSsJCSAgY2FzZSBUWVBFX0NPVU5UX0lOVF9QT0lOVEVSOgotKwkJICAgICphLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfY291bnRfaW50X3BvaW50ZXIgPSBsZW5ndGg7Ci0rCQkgICAgYnJlYWs7Ci0rCQkgIGNhc2UgVFlQRV9DT1VOVF9MT05HSU5UX1BPSU5URVI6Ci0rCQkgICAgKmEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9jb3VudF9sb25naW50X3BvaW50ZXIgPSBsZW5ndGg7Ci0rCQkgICAgYnJlYWs7Ci0rI2lmZGVmIEhBVkVfTE9OR19MT05HCi0rCQkgIGNhc2UgVFlQRV9DT1VOVF9MT05HTE9OR0lOVF9QT0lOVEVSOgotKwkJICAgICphLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfY291bnRfbG9uZ2xvbmdpbnRfcG9pbnRlciA9IGxlbmd0aDsKLSsJCSAgICBicmVhazsKLSsjZW5kaWYKLSsJCSAgZGVmYXVsdDoKLSsJCSAgICBhYm9ydCAoKTsKLSsJCSAgfQotKwkgICAgICB9Ci0rCSAgICBlbHNlCi0rCSAgICAgIHsKLSsJCWFyZ190eXBlIHR5cGUgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS50eXBlOwotKwkJQ0hBUl9UICpwOwotKwkJdW5zaWduZWQgaW50IHByZWZpeF9jb3VudDsKLSsJCWludCBwcmVmaXhlc1syXTsKLSsjaWYgIVVTRV9TTlBSSU5URgotKwkJc2l6ZV90IHRtcF9sZW5ndGg7Ci0rCQlDSEFSX1QgdG1wYnVmWzcwMF07Ci0rCQlDSEFSX1QgKnRtcDsKLSsKLSsJCS8qIEFsbG9jYXRlIGEgdGVtcG9yYXJ5IGJ1ZmZlciBvZiBzdWZmaWNpZW50IHNpemUgZm9yIGNhbGxpbmcKLSsJCSAgIHNwcmludGYuICAqLwotKwkJewotKwkJICBzaXplX3Qgd2lkdGg7Ci0rCQkgIHNpemVfdCBwcmVjaXNpb247Ci0rCi0rCQkgIHdpZHRoID0gMDsKLSsJCSAgaWYgKGRwLT53aWR0aF9zdGFydCAhPSBkcC0+d2lkdGhfZW5kKQotKwkJICAgIHsKLSsJCSAgICAgIGlmIChkcC0+d2lkdGhfYXJnX2luZGV4ICE9IEFSR19OT05FKQotKwkJCXsKLSsJCQkgIGludCBhcmc7Ci0rCi0rCQkJICBpZiAoIShhLmFyZ1tkcC0+d2lkdGhfYXJnX2luZGV4XS50eXBlID09IFRZUEVfSU5UKSkKLSsJCQkgICAgYWJvcnQgKCk7Ci0rCQkJICBhcmcgPSBhLmFyZ1tkcC0+d2lkdGhfYXJnX2luZGV4XS5hLmFfaW50OwotKwkJCSAgd2lkdGggPSAoYXJnIDwgMCA/ICh1bnNpZ25lZCBpbnQpICgtYXJnKSA6IGFyZyk7Ci0rCQkJfQotKwkJICAgICAgZWxzZQotKwkJCXsKLSsJCQkgIGNvbnN0IENIQVJfVCAqZGlnaXRwID0gZHAtPndpZHRoX3N0YXJ0OwotKwotKwkJCSAgZG8KLSsJCQkgICAgd2lkdGggPSB4c3VtICh4dGltZXMgKHdpZHRoLCAxMCksICpkaWdpdHArKyAtICcwJyk7Ci0rCQkJICB3aGlsZSAoZGlnaXRwICE9IGRwLT53aWR0aF9lbmQpOwotKwkJCX0KLSsJCSAgICB9Ci0rCi0rCQkgIHByZWNpc2lvbiA9IDY7Ci0rCQkgIGlmIChkcC0+cHJlY2lzaW9uX3N0YXJ0ICE9IGRwLT5wcmVjaXNpb25fZW5kKQotKwkJICAgIHsKLSsJCSAgICAgIGlmIChkcC0+cHJlY2lzaW9uX2FyZ19pbmRleCAhPSBBUkdfTk9ORSkKLSsJCQl7Ci0rCQkJICBpbnQgYXJnOwotKwotKwkJCSAgaWYgKCEoYS5hcmdbZHAtPnByZWNpc2lvbl9hcmdfaW5kZXhdLnR5cGUgPT0gVFlQRV9JTlQpKQotKwkJCSAgICBhYm9ydCAoKTsKLSsJCQkgIGFyZyA9IGEuYXJnW2RwLT5wcmVjaXNpb25fYXJnX2luZGV4XS5hLmFfaW50OwotKwkJCSAgcHJlY2lzaW9uID0gKGFyZyA8IDAgPyAwIDogYXJnKTsKLSsJCQl9Ci0rCQkgICAgICBlbHNlCi0rCQkJewotKwkJCSAgY29uc3QgQ0hBUl9UICpkaWdpdHAgPSBkcC0+cHJlY2lzaW9uX3N0YXJ0ICsgMTsKLSsKLSsJCQkgIHByZWNpc2lvbiA9IDA7Ci0rCQkJICBkbwotKwkJCSAgICBwcmVjaXNpb24gPSB4c3VtICh4dGltZXMgKHByZWNpc2lvbiwgMTApLCAqZGlnaXRwKysgLSAnMCcpOwotKwkJCSAgd2hpbGUgKGRpZ2l0cCAhPSBkcC0+cHJlY2lzaW9uX2VuZCk7Ci0rCQkJfQotKwkJICAgIH0KLSsKLSsJCSAgc3dpdGNoIChkcC0+Y29udmVyc2lvbikKLSsJCSAgICB7Ci0rCi0rCQkgICAgY2FzZSAnZCc6IGNhc2UgJ2knOiBjYXNlICd1JzoKLSsjIGlmZGVmIEhBVkVfTE9OR19MT05HCi0rCQkgICAgICBpZiAodHlwZSA9PSBUWVBFX0xPTkdMT05HSU5UIHx8IHR5cGUgPT0gVFlQRV9VTE9OR0xPTkdJTlQpCi0rCQkJdG1wX2xlbmd0aCA9Ci0rCQkJICAodW5zaWduZWQgaW50KSAoc2l6ZW9mICh1bnNpZ25lZCBsb25nIGxvbmcpICogQ0hBUl9CSVQKLSsJCQkJCSAgKiAwLjMwMTAzIC8qIGJpbmFyeSAtPiBkZWNpbWFsICovCi0rCQkJCQkgICogMiAvKiBlc3RpbWF0ZSBmb3IgRkxBR19HUk9VUCAqLwotKwkJCQkJICkKLSsJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLwotKwkJCSAgKyAxOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIHNpZ24gKi8KLSsJCSAgICAgIGVsc2UKLSsjIGVuZGlmCi0rCQkgICAgICBpZiAodHlwZSA9PSBUWVBFX0xPTkdJTlQgfHwgdHlwZSA9PSBUWVBFX1VMT05HSU5UKQotKwkJCXRtcF9sZW5ndGggPQotKwkJCSAgKHVuc2lnbmVkIGludCkgKHNpemVvZiAodW5zaWduZWQgbG9uZykgKiBDSEFSX0JJVAotKwkJCQkJICAqIDAuMzAxMDMgLyogYmluYXJ5IC0+IGRlY2ltYWwgKi8KLSsJCQkJCSAgKiAyIC8qIGVzdGltYXRlIGZvciBGTEFHX0dST1VQICovCi0rCQkJCQkgKQotKwkJCSAgKyAxIC8qIHR1cm4gZmxvb3IgaW50byBjZWlsICovCi0rCQkJICArIDE7IC8qIGFjY291bnQgZm9yIGxlYWRpbmcgc2lnbiAqLwotKwkJICAgICAgZWxzZQotKwkJCXRtcF9sZW5ndGggPQotKwkJCSAgKHVuc2lnbmVkIGludCkgKHNpemVvZiAodW5zaWduZWQgaW50KSAqIENIQVJfQklUCi0rCQkJCQkgICogMC4zMDEwMyAvKiBiaW5hcnkgLT4gZGVjaW1hbCAqLwotKwkJCQkJICAqIDIgLyogZXN0aW1hdGUgZm9yIEZMQUdfR1JPVVAgKi8KLSsJCQkJCSApCi0rCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KLSsJCQkgICsgMTsgLyogYWNjb3VudCBmb3IgbGVhZGluZyBzaWduICovCi0rCQkgICAgICBicmVhazsKLSsKLSsJCSAgICBjYXNlICdvJzoKLSsjIGlmZGVmIEhBVkVfTE9OR19MT05HCi0rCQkgICAgICBpZiAodHlwZSA9PSBUWVBFX0xPTkdMT05HSU5UIHx8IHR5cGUgPT0gVFlQRV9VTE9OR0xPTkdJTlQpCi0rCQkJdG1wX2xlbmd0aCA9Ci0rCQkJICAodW5zaWduZWQgaW50KSAoc2l6ZW9mICh1bnNpZ25lZCBsb25nIGxvbmcpICogQ0hBUl9CSVQKLSsJCQkJCSAgKiAwLjMzMzMzNCAvKiBiaW5hcnkgLT4gb2N0YWwgKi8KLSsJCQkJCSApCi0rCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KLSsJCQkgICsgMTsgLyogYWNjb3VudCBmb3IgbGVhZGluZyBzaWduICovCi0rCQkgICAgICBlbHNlCi0rIyBlbmRpZgotKwkJICAgICAgaWYgKHR5cGUgPT0gVFlQRV9MT05HSU5UIHx8IHR5cGUgPT0gVFlQRV9VTE9OR0lOVCkKLSsJCQl0bXBfbGVuZ3RoID0KLSsJCQkgICh1bnNpZ25lZCBpbnQpIChzaXplb2YgKHVuc2lnbmVkIGxvbmcpICogQ0hBUl9CSVQKLSsJCQkJCSAgKiAwLjMzMzMzNCAvKiBiaW5hcnkgLT4gb2N0YWwgKi8KLSsJCQkJCSApCi0rCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KLSsJCQkgICsgMTsgLyogYWNjb3VudCBmb3IgbGVhZGluZyBzaWduICovCi0rCQkgICAgICBlbHNlCi0rCQkJdG1wX2xlbmd0aCA9Ci0rCQkJICAodW5zaWduZWQgaW50KSAoc2l6ZW9mICh1bnNpZ25lZCBpbnQpICogQ0hBUl9CSVQKLSsJCQkJCSAgKiAwLjMzMzMzNCAvKiBiaW5hcnkgLT4gb2N0YWwgKi8KLSsJCQkJCSApCi0rCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KLSsJCQkgICsgMTsgLyogYWNjb3VudCBmb3IgbGVhZGluZyBzaWduICovCi0rCQkgICAgICBicmVhazsKLSsKLSsJCSAgICBjYXNlICd4JzogY2FzZSAnWCc6Ci0rIyBpZmRlZiBIQVZFX0xPTkdfTE9ORwotKwkJICAgICAgaWYgKHR5cGUgPT0gVFlQRV9MT05HTE9OR0lOVCB8fCB0eXBlID09IFRZUEVfVUxPTkdMT05HSU5UKQotKwkJCXRtcF9sZW5ndGggPQotKwkJCSAgKHVuc2lnbmVkIGludCkgKHNpemVvZiAodW5zaWduZWQgbG9uZyBsb25nKSAqIENIQVJfQklUCi0rCQkJCQkgICogMC4yNSAvKiBiaW5hcnkgLT4gaGV4YWRlY2ltYWwgKi8KLSsJCQkJCSApCi0rCQkJICArIDEgLyogdHVybiBmbG9vciBpbnRvIGNlaWwgKi8KLSsJCQkgICsgMjsgLyogYWNjb3VudCBmb3IgbGVhZGluZyBzaWduIG9yIGFsdGVybmF0ZSBmb3JtICovCi0rCQkgICAgICBlbHNlCi0rIyBlbmRpZgotKwkJICAgICAgaWYgKHR5cGUgPT0gVFlQRV9MT05HSU5UIHx8IHR5cGUgPT0gVFlQRV9VTE9OR0lOVCkKLSsJCQl0bXBfbGVuZ3RoID0KLSsJCQkgICh1bnNpZ25lZCBpbnQpIChzaXplb2YgKHVuc2lnbmVkIGxvbmcpICogQ0hBUl9CSVQKLSsJCQkJCSAgKiAwLjI1IC8qIGJpbmFyeSAtPiBoZXhhZGVjaW1hbCAqLwotKwkJCQkJICkKLSsJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLwotKwkJCSAgKyAyOyAvKiBhY2NvdW50IGZvciBsZWFkaW5nIHNpZ24gb3IgYWx0ZXJuYXRlIGZvcm0gKi8KLSsJCSAgICAgIGVsc2UKLSsJCQl0bXBfbGVuZ3RoID0KLSsJCQkgICh1bnNpZ25lZCBpbnQpIChzaXplb2YgKHVuc2lnbmVkIGludCkgKiBDSEFSX0JJVAotKwkJCQkJICAqIDAuMjUgLyogYmluYXJ5IC0+IGhleGFkZWNpbWFsICovCi0rCQkJCQkgKQotKwkJCSAgKyAxIC8qIHR1cm4gZmxvb3IgaW50byBjZWlsICovCi0rCQkJICArIDI7IC8qIGFjY291bnQgZm9yIGxlYWRpbmcgc2lnbiBvciBhbHRlcm5hdGUgZm9ybSAqLwotKwkJICAgICAgYnJlYWs7Ci0rCi0rCQkgICAgY2FzZSAnZic6IGNhc2UgJ0YnOgotKyMgaWZkZWYgSEFWRV9MT05HX0RPVUJMRQotKwkJICAgICAgaWYgKHR5cGUgPT0gVFlQRV9MT05HRE9VQkxFKQotKwkJCXRtcF9sZW5ndGggPQotKwkJCSAgKHVuc2lnbmVkIGludCkgKExEQkxfTUFYX0VYUAotKwkJCQkJICAqIDAuMzAxMDMgLyogYmluYXJ5IC0+IGRlY2ltYWwgKi8KLSsJCQkJCSAgKiAyIC8qIGVzdGltYXRlIGZvciBGTEFHX0dST1VQICovCi0rCQkJCQkgKQotKwkJCSAgKyAxIC8qIHR1cm4gZmxvb3IgaW50byBjZWlsICovCi0rCQkJICArIDEwOyAvKiBzaWduLCBkZWNpbWFsIHBvaW50IGV0Yy4gKi8KLSsJCSAgICAgIGVsc2UKLSsjIGVuZGlmCi0rCQkJdG1wX2xlbmd0aCA9Ci0rCQkJICAodW5zaWduZWQgaW50KSAoREJMX01BWF9FWFAKLSsJCQkJCSAgKiAwLjMwMTAzIC8qIGJpbmFyeSAtPiBkZWNpbWFsICovCi0rCQkJCQkgICogMiAvKiBlc3RpbWF0ZSBmb3IgRkxBR19HUk9VUCAqLwotKwkJCQkJICkKLSsJCQkgICsgMSAvKiB0dXJuIGZsb29yIGludG8gY2VpbCAqLwotKwkJCSAgKyAxMDsgLyogc2lnbiwgZGVjaW1hbCBwb2ludCBldGMuICovCi0rCQkgICAgICB0bXBfbGVuZ3RoID0geHN1bSAodG1wX2xlbmd0aCwgcHJlY2lzaW9uKTsKLSsJCSAgICAgIGJyZWFrOwotKwotKwkJICAgIGNhc2UgJ2UnOiBjYXNlICdFJzogY2FzZSAnZyc6IGNhc2UgJ0cnOgotKwkJICAgIGNhc2UgJ2EnOiBjYXNlICdBJzoKLSsJCSAgICAgIHRtcF9sZW5ndGggPQotKwkJCTEyOyAvKiBzaWduLCBkZWNpbWFsIHBvaW50LCBleHBvbmVudCBldGMuICovCi0rCQkgICAgICB0bXBfbGVuZ3RoID0geHN1bSAodG1wX2xlbmd0aCwgcHJlY2lzaW9uKTsKLSsJCSAgICAgIGJyZWFrOwotKwotKwkJICAgIGNhc2UgJ2MnOgotKyMgaWYgZGVmaW5lZCBIQVZFX1dJTlRfVCAmJiAhV0lERV9DSEFSX1ZFUlNJT04KLSsJCSAgICAgIGlmICh0eXBlID09IFRZUEVfV0lERV9DSEFSKQotKwkJCXRtcF9sZW5ndGggPSBNQl9DVVJfTUFYOwotKwkJICAgICAgZWxzZQotKyMgZW5kaWYKLSsJCQl0bXBfbGVuZ3RoID0gMTsKLSsJCSAgICAgIGJyZWFrOwotKwotKwkJICAgIGNhc2UgJ3MnOgotKyMgaWZkZWYgSEFWRV9XQ0hBUl9UCi0rCQkgICAgICBpZiAodHlwZSA9PSBUWVBFX1dJREVfU1RSSU5HKQotKwkJCXsKLSsJCQkgIHRtcF9sZW5ndGggPQotKwkJCSAgICBsb2NhbF93Y3NsZW4gKGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV93aWRlX3N0cmluZyk7Ci0rCi0rIyAgaWYgIVdJREVfQ0hBUl9WRVJTSU9OCi0rCQkJICB0bXBfbGVuZ3RoID0geHRpbWVzICh0bXBfbGVuZ3RoLCBNQl9DVVJfTUFYKTsKLSsjICBlbmRpZgotKwkJCX0KLSsJCSAgICAgIGVsc2UKLSsjIGVuZGlmCi0rCQkJdG1wX2xlbmd0aCA9IHN0cmxlbiAoYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3N0cmluZyk7Ci0rCQkgICAgICBicmVhazsKLSsKLSsJCSAgICBjYXNlICdwJzoKLSsJCSAgICAgIHRtcF9sZW5ndGggPQotKwkJCSh1bnNpZ25lZCBpbnQpIChzaXplb2YgKHZvaWQgKikgKiBDSEFSX0JJVAotKwkJCQkJKiAwLjI1IC8qIGJpbmFyeSAtPiBoZXhhZGVjaW1hbCAqLwotKwkJCQkgICAgICAgKQotKwkJCSAgKyAxIC8qIHR1cm4gZmxvb3IgaW50byBjZWlsICovCi0rCQkJICArIDI7IC8qIGFjY291bnQgZm9yIGxlYWRpbmcgMHggKi8KLSsJCSAgICAgIGJyZWFrOwotKwotKwkJICAgIGRlZmF1bHQ6Ci0rCQkgICAgICBhYm9ydCAoKTsKLSsJCSAgICB9Ci0rCi0rCQkgIGlmICh0bXBfbGVuZ3RoIDwgd2lkdGgpCi0rCQkgICAgdG1wX2xlbmd0aCA9IHdpZHRoOwotKwotKwkJICB0bXBfbGVuZ3RoID0geHN1bSAodG1wX2xlbmd0aCwgMSk7IC8qIGFjY291bnQgZm9yIHRyYWlsaW5nIE5VTCAqLwotKwkJfQotKwotKwkJaWYgKHRtcF9sZW5ndGggPD0gc2l6ZW9mICh0bXBidWYpIC8gc2l6ZW9mIChDSEFSX1QpKQotKwkJICB0bXAgPSB0bXBidWY7Ci0rCQllbHNlCi0rCQkgIHsKLSsJCSAgICBzaXplX3QgdG1wX21lbXNpemUgPSB4dGltZXMgKHRtcF9sZW5ndGgsIHNpemVvZiAoQ0hBUl9UKSk7Ci0rCi0rCQkgICAgaWYgKHNpemVfb3ZlcmZsb3dfcCAodG1wX21lbXNpemUpKQotKwkJICAgICAgLyogT3ZlcmZsb3csIHdvdWxkIGxlYWQgdG8gb3V0IG9mIG1lbW9yeS4gICovCi0rCQkgICAgICBnb3RvIG91dF9vZl9tZW1vcnk7Ci0rCQkgICAgdG1wID0gKENIQVJfVCAqKSBtYWxsb2MgKHRtcF9tZW1zaXplKTsKLSsJCSAgICBpZiAodG1wID09IE5VTEwpCi0rCQkgICAgICAvKiBPdXQgb2YgbWVtb3J5LiAgKi8KLSsJCSAgICAgIGdvdG8gb3V0X29mX21lbW9yeTsKLSsJCSAgfQotKyNlbmRpZgotKwotKwkJLyogQ29uc3RydWN0IHRoZSBmb3JtYXQgc3RyaW5nIGZvciBjYWxsaW5nIHNucHJpbnRmIG9yCi0rCQkgICBzcHJpbnRmLiAgKi8KLSsJCXAgPSBidWY7Ci0rCQkqcCsrID0gJyUnOwotKwkJaWYgKGRwLT5mbGFncyAmIEZMQUdfR1JPVVApCi0rCQkgICpwKysgPSAnXCcnOwotKwkJaWYgKGRwLT5mbGFncyAmIEZMQUdfTEVGVCkKLSsJCSAgKnArKyA9ICctJzsKLSsJCWlmIChkcC0+ZmxhZ3MgJiBGTEFHX1NIT1dTSUdOKQotKwkJICAqcCsrID0gJysnOwotKwkJaWYgKGRwLT5mbGFncyAmIEZMQUdfU1BBQ0UpCi0rCQkgICpwKysgPSAnICc7Ci0rCQlpZiAoZHAtPmZsYWdzICYgRkxBR19BTFQpCi0rCQkgICpwKysgPSAnIyc7Ci0rCQlpZiAoZHAtPmZsYWdzICYgRkxBR19aRVJPKQotKwkJICAqcCsrID0gJzAnOwotKwkJaWYgKGRwLT53aWR0aF9zdGFydCAhPSBkcC0+d2lkdGhfZW5kKQotKwkJICB7Ci0rCQkgICAgc2l6ZV90IG4gPSBkcC0+d2lkdGhfZW5kIC0gZHAtPndpZHRoX3N0YXJ0OwotKwkJICAgIG1lbWNweSAocCwgZHAtPndpZHRoX3N0YXJ0LCBuICogc2l6ZW9mIChDSEFSX1QpKTsKLSsJCSAgICBwICs9IG47Ci0rCQkgIH0KLSsJCWlmIChkcC0+cHJlY2lzaW9uX3N0YXJ0ICE9IGRwLT5wcmVjaXNpb25fZW5kKQotKwkJICB7Ci0rCQkgICAgc2l6ZV90IG4gPSBkcC0+cHJlY2lzaW9uX2VuZCAtIGRwLT5wcmVjaXNpb25fc3RhcnQ7Ci0rCQkgICAgbWVtY3B5IChwLCBkcC0+cHJlY2lzaW9uX3N0YXJ0LCBuICogc2l6ZW9mIChDSEFSX1QpKTsKLSsJCSAgICBwICs9IG47Ci0rCQkgIH0KLSsKLSsJCXN3aXRjaCAodHlwZSkKLSsJCSAgewotKyNpZmRlZiBIQVZFX0xPTkdfTE9ORwotKwkJICBjYXNlIFRZUEVfTE9OR0xPTkdJTlQ6Ci0rCQkgIGNhc2UgVFlQRV9VTE9OR0xPTkdJTlQ6Ci0rCQkgICAgKnArKyA9ICdsJzsKLSsJCSAgICAvKkZBTExUSFJPVUdIKi8KLSsjZW5kaWYKLSsJCSAgY2FzZSBUWVBFX0xPTkdJTlQ6Ci0rCQkgIGNhc2UgVFlQRV9VTE9OR0lOVDoKLSsjaWZkZWYgSEFWRV9XSU5UX1QKLSsJCSAgY2FzZSBUWVBFX1dJREVfQ0hBUjoKLSsjZW5kaWYKLSsjaWZkZWYgSEFWRV9XQ0hBUl9UCi0rCQkgIGNhc2UgVFlQRV9XSURFX1NUUklORzoKLSsjZW5kaWYKLSsJCSAgICAqcCsrID0gJ2wnOwotKwkJICAgIGJyZWFrOwotKyNpZmRlZiBIQVZFX0xPTkdfRE9VQkxFCi0rCQkgIGNhc2UgVFlQRV9MT05HRE9VQkxFOgotKwkJICAgICpwKysgPSAnTCc7Ci0rCQkgICAgYnJlYWs7Ci0rI2VuZGlmCi0rCQkgIGRlZmF1bHQ6Ci0rCQkgICAgYnJlYWs7Ci0rCQkgIH0KLSsJCSpwID0gZHAtPmNvbnZlcnNpb247Ci0rI2lmIFVTRV9TTlBSSU5URgotKwkJcFsxXSA9ICclJzsKLSsJCXBbMl0gPSAnbic7Ci0rCQlwWzNdID0gJ1wwJzsKLSsjZWxzZQotKwkJcFsxXSA9ICdcMCc7Ci0rI2VuZGlmCi0rCi0rCQkvKiBDb25zdHJ1Y3QgdGhlIGFyZ3VtZW50cyBmb3IgY2FsbGluZyBzbnByaW50ZiBvciBzcHJpbnRmLiAgKi8KLSsJCXByZWZpeF9jb3VudCA9IDA7Ci0rCQlpZiAoZHAtPndpZHRoX2FyZ19pbmRleCAhPSBBUkdfTk9ORSkKLSsJCSAgewotKwkJICAgIGlmICghKGEuYXJnW2RwLT53aWR0aF9hcmdfaW5kZXhdLnR5cGUgPT0gVFlQRV9JTlQpKQotKwkJICAgICAgYWJvcnQgKCk7Ci0rCQkgICAgcHJlZml4ZXNbcHJlZml4X2NvdW50KytdID0gYS5hcmdbZHAtPndpZHRoX2FyZ19pbmRleF0uYS5hX2ludDsKLSsJCSAgfQotKwkJaWYgKGRwLT5wcmVjaXNpb25fYXJnX2luZGV4ICE9IEFSR19OT05FKQotKwkJICB7Ci0rCQkgICAgaWYgKCEoYS5hcmdbZHAtPnByZWNpc2lvbl9hcmdfaW5kZXhdLnR5cGUgPT0gVFlQRV9JTlQpKQotKwkJICAgICAgYWJvcnQgKCk7Ci0rCQkgICAgcHJlZml4ZXNbcHJlZml4X2NvdW50KytdID0gYS5hcmdbZHAtPnByZWNpc2lvbl9hcmdfaW5kZXhdLmEuYV9pbnQ7Ci0rCQkgIH0KLSsKLSsjaWYgVVNFX1NOUFJJTlRGCi0rCQkvKiBQcmVwYXJlIGNoZWNraW5nIHdoZXRoZXIgc25wcmludGYgcmV0dXJucyB0aGUgY291bnQKLSsJCSAgIHZpYSAlbi4gICovCi0rCQlFTlNVUkVfQUxMT0NBVElPTiAoeHN1bSAobGVuZ3RoLCAxKSk7Ci0rCQlyZXN1bHRbbGVuZ3RoXSA9ICdcMCc7Ci0rI2VuZGlmCi0rCi0rCQlmb3IgKDs7KQotKwkJICB7Ci0rCQkgICAgc2l6ZV90IG1heGxlbjsKLSsJCSAgICBpbnQgY291bnQ7Ci0rCQkgICAgaW50IHJldGNvdW50OwotKwotKwkJICAgIG1heGxlbiA9IGFsbG9jYXRlZCAtIGxlbmd0aDsKLSsJCSAgICBjb3VudCA9IC0xOwotKwkJICAgIHJldGNvdW50ID0gMDsKLSsKLSsjaWYgVVNFX1NOUFJJTlRGCi0rIyBkZWZpbmUgU05QUklOVEZfQlVGKGFyZykgXAotKwkJICAgIHN3aXRjaCAocHJlZml4X2NvdW50KQkJCQkgICAgXAotKwkJICAgICAgewkJCQkJCQkgICAgXAotKwkJICAgICAgY2FzZSAwOgkJCQkJCSAgICBcCi0rCQkJcmV0Y291bnQgPSBTTlBSSU5URiAocmVzdWx0ICsgbGVuZ3RoLCBtYXhsZW4sIGJ1ZiwgIFwKLSsJCQkJCSAgICAgYXJnLCAmY291bnQpOwkJICAgIFwKLSsJCQlicmVhazsJCQkJCQkgICAgXAotKwkJICAgICAgY2FzZSAxOgkJCQkJCSAgICBcCi0rCQkJcmV0Y291bnQgPSBTTlBSSU5URiAocmVzdWx0ICsgbGVuZ3RoLCBtYXhsZW4sIGJ1ZiwgIFwKLSsJCQkJCSAgICAgcHJlZml4ZXNbMF0sIGFyZywgJmNvdW50KTsJICAgIFwKLSsJCQlicmVhazsJCQkJCQkgICAgXAotKwkJICAgICAgY2FzZSAyOgkJCQkJCSAgICBcCi0rCQkJcmV0Y291bnQgPSBTTlBSSU5URiAocmVzdWx0ICsgbGVuZ3RoLCBtYXhsZW4sIGJ1ZiwgIFwKLSsJCQkJCSAgICAgcHJlZml4ZXNbMF0sIHByZWZpeGVzWzFdLCBhcmcsIFwKLSsJCQkJCSAgICAgJmNvdW50KTsJCQkgICAgXAotKwkJCWJyZWFrOwkJCQkJCSAgICBcCi0rCQkgICAgICBkZWZhdWx0OgkJCQkJCSAgICBcCi0rCQkJYWJvcnQgKCk7CQkJCQkgICAgXAotKwkJICAgICAgfQotKyNlbHNlCi0rIyBkZWZpbmUgU05QUklOVEZfQlVGKGFyZykgXAotKwkJICAgIHN3aXRjaCAocHJlZml4X2NvdW50KQkJCQkgICAgXAotKwkJICAgICAgewkJCQkJCQkgICAgXAotKwkJICAgICAgY2FzZSAwOgkJCQkJCSAgICBcCi0rCQkJY291bnQgPSBzcHJpbnRmICh0bXAsIGJ1ZiwgYXJnKTsJCSAgICBcCi0rCQkJYnJlYWs7CQkJCQkJICAgIFwKLSsJCSAgICAgIGNhc2UgMToJCQkJCQkgICAgXAotKwkJCWNvdW50ID0gc3ByaW50ZiAodG1wLCBidWYsIHByZWZpeGVzWzBdLCBhcmcpOwkgICAgXAotKwkJCWJyZWFrOwkJCQkJCSAgICBcCi0rCQkgICAgICBjYXNlIDI6CQkJCQkJICAgIFwKLSsJCQljb3VudCA9IHNwcmludGYgKHRtcCwgYnVmLCBwcmVmaXhlc1swXSwgcHJlZml4ZXNbMV0sXAotKwkJCQkJIGFyZyk7CQkJCSAgICBcCi0rCQkJYnJlYWs7CQkJCQkJICAgIFwKLSsJCSAgICAgIGRlZmF1bHQ6CQkJCQkJICAgIFwKLSsJCQlhYm9ydCAoKTsJCQkJCSAgICBcCi0rCQkgICAgICB9Ci0rI2VuZGlmCi0rCi0rCQkgICAgc3dpdGNoICh0eXBlKQotKwkJICAgICAgewotKwkJICAgICAgY2FzZSBUWVBFX1NDSEFSOgotKwkJCXsKLSsJCQkgIGludCBhcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfc2NoYXI7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKwkJICAgICAgY2FzZSBUWVBFX1VDSEFSOgotKwkJCXsKLSsJCQkgIHVuc2lnbmVkIGludCBhcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfdWNoYXI7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKwkJICAgICAgY2FzZSBUWVBFX1NIT1JUOgotKwkJCXsKLSsJCQkgIGludCBhcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfc2hvcnQ7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKwkJICAgICAgY2FzZSBUWVBFX1VTSE9SVDoKLSsJCQl7Ci0rCQkJICB1bnNpZ25lZCBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3VzaG9ydDsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rCQkgICAgICBjYXNlIFRZUEVfSU5UOgotKwkJCXsKLSsJCQkgIGludCBhcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfaW50OwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsJCSAgICAgIGNhc2UgVFlQRV9VSU5UOgotKwkJCXsKLSsJCQkgIHVuc2lnbmVkIGludCBhcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfdWludDsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rCQkgICAgICBjYXNlIFRZUEVfTE9OR0lOVDoKLSsJCQl7Ci0rCQkJICBsb25nIGludCBhcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfbG9uZ2ludDsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rCQkgICAgICBjYXNlIFRZUEVfVUxPTkdJTlQ6Ci0rCQkJewotKwkJCSAgdW5zaWduZWQgbG9uZyBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3Vsb25naW50OwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsjaWZkZWYgSEFWRV9MT05HX0xPTkcKLSsJCSAgICAgIGNhc2UgVFlQRV9MT05HTE9OR0lOVDoKLSsJCQl7Ci0rCQkJICBsb25nIGxvbmcgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9sb25nbG9uZ2ludDsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rCQkgICAgICBjYXNlIFRZUEVfVUxPTkdMT05HSU5UOgotKwkJCXsKLSsJCQkgIHVuc2lnbmVkIGxvbmcgbG9uZyBpbnQgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3Vsb25nbG9uZ2ludDsKLSsJCQkgIFNOUFJJTlRGX0JVRiAoYXJnKTsKLSsJCQl9Ci0rCQkJYnJlYWs7Ci0rI2VuZGlmCi0rCQkgICAgICBjYXNlIFRZUEVfRE9VQkxFOgotKwkJCXsKLSsJCQkgIGRvdWJsZSBhcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfZG91YmxlOwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsjaWZkZWYgSEFWRV9MT05HX0RPVUJMRQotKwkJICAgICAgY2FzZSBUWVBFX0xPTkdET1VCTEU6Ci0rCQkJewotKwkJCSAgbG9uZyBkb3VibGUgYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX2xvbmdkb3VibGU7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKyNlbmRpZgotKwkJICAgICAgY2FzZSBUWVBFX0NIQVI6Ci0rCQkJewotKwkJCSAgaW50IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9jaGFyOwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsjaWZkZWYgSEFWRV9XSU5UX1QKLSsJCSAgICAgIGNhc2UgVFlQRV9XSURFX0NIQVI6Ci0rCQkJewotKwkJCSAgd2ludF90IGFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV93aWRlX2NoYXI7Ci0rCQkJICBTTlBSSU5URl9CVUYgKGFyZyk7Ci0rCQkJfQotKwkJCWJyZWFrOwotKyNlbmRpZgotKwkJICAgICAgY2FzZSBUWVBFX1NUUklORzoKLSsJCQl7Ci0rCQkJICBjb25zdCBjaGFyICphcmcgPSBhLmFyZ1tkcC0+YXJnX2luZGV4XS5hLmFfc3RyaW5nOwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsjaWZkZWYgSEFWRV9XQ0hBUl9UCi0rCQkgICAgICBjYXNlIFRZUEVfV0lERV9TVFJJTkc6Ci0rCQkJewotKwkJCSAgY29uc3Qgd2NoYXJfdCAqYXJnID0gYS5hcmdbZHAtPmFyZ19pbmRleF0uYS5hX3dpZGVfc3RyaW5nOwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsjZW5kaWYKLSsJCSAgICAgIGNhc2UgVFlQRV9QT0lOVEVSOgotKwkJCXsKLSsJCQkgIHZvaWQgKmFyZyA9IGEuYXJnW2RwLT5hcmdfaW5kZXhdLmEuYV9wb2ludGVyOwotKwkJCSAgU05QUklOVEZfQlVGIChhcmcpOwotKwkJCX0KLSsJCQlicmVhazsKLSsJCSAgICAgIGRlZmF1bHQ6Ci0rCQkJYWJvcnQgKCk7Ci0rCQkgICAgICB9Ci0rCi0rI2lmIFVTRV9TTlBSSU5URgotKwkJICAgIC8qIFBvcnRhYmlsaXR5OiBOb3QgYWxsIGltcGxlbWVudGF0aW9ucyBvZiBzbnByaW50ZigpCi0rCQkgICAgICAgYXJlIElTTyBDIDk5IGNvbXBsaWFudC4gIERldGVybWluZSB0aGUgbnVtYmVyIG9mCi0rCQkgICAgICAgYnl0ZXMgdGhhdCBzbnByaW50ZigpIGhhcyBwcm9kdWNlZCBvciB3b3VsZCBoYXZlCi0rCQkgICAgICAgcHJvZHVjZWQuICAqLwotKwkJICAgIGlmIChjb3VudCA+PSAwKQotKwkJICAgICAgewotKwkJCS8qIFZlcmlmeSB0aGF0IHNucHJpbnRmKCkgaGFzIE5VTC10ZXJtaW5hdGVkIGl0cwotKwkJCSAgIHJlc3VsdC4gICovCi0rCQkJaWYgKGNvdW50IDwgbWF4bGVuICYmIHJlc3VsdFtsZW5ndGggKyBjb3VudF0gIT0gJ1wwJykKLSsJCQkgIGFib3J0ICgpOwotKwkJCS8qIFBvcnRhYmlsaXR5IGhhY2suICAqLwotKwkJCWlmIChyZXRjb3VudCA+IGNvdW50KQotKwkJCSAgY291bnQgPSByZXRjb3VudDsKLSsJCSAgICAgIH0KLSsJCSAgICBlbHNlCi0rCQkgICAgICB7Ci0rCQkJLyogc25wcmludGYoKSBkb2Vzbid0IHVuZGVyc3RhbmQgdGhlICclbicKLSsJCQkgICBkaXJlY3RpdmUuICAqLwotKwkJCWlmIChwWzFdICE9ICdcMCcpCi0rCQkJICB7Ci0rCQkJICAgIC8qIERvbid0IHVzZSB0aGUgJyVuJyBkaXJlY3RpdmU7IGluc3RlYWQsIGxvb2sKLSsJCQkgICAgICAgYXQgdGhlIHNucHJpbnRmKCkgcmV0dXJuIHZhbHVlLiAgKi8KLSsJCQkgICAgcFsxXSA9ICdcMCc7Ci0rCQkJICAgIGNvbnRpbnVlOwotKwkJCSAgfQotKwkJCWVsc2UKLSsJCQkgIHsKLSsJCQkgICAgLyogTG9vayBhdCB0aGUgc25wcmludGYoKSByZXR1cm4gdmFsdWUuICAqLwotKwkJCSAgICBpZiAocmV0Y291bnQgPCAwKQotKwkJCSAgICAgIHsKLSsJCQkJLyogSFAtVVggMTAuMjAgc25wcmludGYoKSBpcyBkb3VibHkgZGVmaWNpZW50OgotKwkJCQkgICBJdCBkb2Vzbid0IHVuZGVyc3RhbmQgdGhlICclbicgZGlyZWN0aXZlLAotKwkJCQkgICAqYW5kKiBpdCByZXR1cm5zIC0xIChyYXRoZXIgdGhhbiB0aGUgbGVuZ3RoCi0rCQkJCSAgIHRoYXQgd291bGQgaGF2ZSBiZWVuIHJlcXVpcmVkKSB3aGVuIHRoZQotKwkJCQkgICBidWZmZXIgaXMgdG9vIHNtYWxsLiAgKi8KLSsJCQkJc2l6ZV90IGJpZ2dlcl9uZWVkID0KLSsJCQkJICB4c3VtICh4dGltZXMgKGFsbG9jYXRlZCwgMiksIDEyKTsKLSsJCQkJRU5TVVJFX0FMTE9DQVRJT04gKGJpZ2dlcl9uZWVkKTsKLSsJCQkJY29udGludWU7Ci0rCQkJICAgICAgfQotKwkJCSAgICBlbHNlCi0rCQkJICAgICAgY291bnQgPSByZXRjb3VudDsKLSsJCQkgIH0KLSsJCSAgICAgIH0KLSsjZW5kaWYKLSsKLSsJCSAgICAvKiBBdHRlbXB0IHRvIGhhbmRsZSBmYWlsdXJlLiAgKi8KLSsJCSAgICBpZiAoY291bnQgPCAwKQotKwkJICAgICAgewotKwkJCWlmICghKHJlc3VsdCA9PSByZXN1bHRidWYgfHwgcmVzdWx0ID09IE5VTEwpKQotKwkJCSAgZnJlZSAocmVzdWx0KTsKLSsJCQlpZiAoYnVmX21hbGxvY2VkICE9IE5VTEwpCi0rCQkJICBmcmVlIChidWZfbWFsbG9jZWQpOwotKwkJCUNMRUFOVVAgKCk7Ci0rCQkJZXJybm8gPSBFSU5WQUw7Ci0rCQkJcmV0dXJuIE5VTEw7Ci0rCQkgICAgICB9Ci0rCi0rI2lmICFVU0VfU05QUklOVEYKLSsJCSAgICBpZiAoY291bnQgPj0gdG1wX2xlbmd0aCkKLSsJCSAgICAgIC8qIHRtcF9sZW5ndGggd2FzIGluY29ycmVjdGx5IGNhbGN1bGF0ZWQgLSBmaXggdGhlCi0rCQkJIGNvZGUgYWJvdmUhICAqLwotKwkJICAgICAgYWJvcnQgKCk7Ci0rI2VuZGlmCi0rCi0rCQkgICAgLyogTWFrZSByb29tIGZvciB0aGUgcmVzdWx0LiAgKi8KLSsJCSAgICBpZiAoY291bnQgPj0gbWF4bGVuKQotKwkJICAgICAgewotKwkJCS8qIE5lZWQgYXQgbGVhc3QgY291bnQgYnl0ZXMuICBCdXQgYWxsb2NhdGUKLSsJCQkgICBwcm9wb3J0aW9uYWxseSwgdG8gYXZvaWQgbG9vcGluZyBldGVybmFsbHkgaWYKLSsJCQkgICBzbnByaW50ZigpIHJlcG9ydHMgYSB0b28gc21hbGwgY291bnQuICAqLwotKwkJCXNpemVfdCBuID0KLSsJCQkgIHhtYXggKHhzdW0gKGxlbmd0aCwgY291bnQpLCB4dGltZXMgKGFsbG9jYXRlZCwgMikpOwotKwotKwkJCUVOU1VSRV9BTExPQ0FUSU9OIChuKTsKLSsjaWYgVVNFX1NOUFJJTlRGCi0rCQkJY29udGludWU7Ci0rI2VuZGlmCi0rCQkgICAgICB9Ci0rCi0rI2lmIFVTRV9TTlBSSU5URgotKwkJICAgIC8qIFRoZSBzbnByaW50ZigpIHJlc3VsdCBkaWQgZml0LiAgKi8KLSsjZWxzZQotKwkJICAgIC8qIEFwcGVuZCB0aGUgc3ByaW50ZigpIHJlc3VsdC4gICovCi0rCQkgICAgbWVtY3B5IChyZXN1bHQgKyBsZW5ndGgsIHRtcCwgY291bnQgKiBzaXplb2YgKENIQVJfVCkpOwotKwkJICAgIGlmICh0bXAgIT0gdG1wYnVmKQotKwkJICAgICAgZnJlZSAodG1wKTsKLSsjZW5kaWYKLSsKLSsJCSAgICBsZW5ndGggKz0gY291bnQ7Ci0rCQkgICAgYnJlYWs7Ci0rCQkgIH0KLSsJICAgICAgfQotKwkgIH0KLSsgICAgICB9Ci0rCi0rICAgIC8qIEFkZCB0aGUgZmluYWwgTlVMLiAgKi8KLSsgICAgRU5TVVJFX0FMTE9DQVRJT04gKHhzdW0gKGxlbmd0aCwgMSkpOwotKyAgICByZXN1bHRbbGVuZ3RoXSA9ICdcMCc7Ci0rCi0rICAgIGlmIChyZXN1bHQgIT0gcmVzdWx0YnVmICYmIGxlbmd0aCArIDEgPCBhbGxvY2F0ZWQpCi0rICAgICAgewotKwkvKiBTaHJpbmsgdGhlIGFsbG9jYXRlZCBtZW1vcnkgaWYgcG9zc2libGUuICAqLwotKwlDSEFSX1QgKm1lbW9yeTsKLSsKLSsJbWVtb3J5ID0gKENIQVJfVCAqKSByZWFsbG9jIChyZXN1bHQsIChsZW5ndGggKyAxKSAqIHNpemVvZiAoQ0hBUl9UKSk7Ci0rCWlmIChtZW1vcnkgIT0gTlVMTCkKLSsJICByZXN1bHQgPSBtZW1vcnk7Ci0rICAgICAgfQotKwotKyAgICBpZiAoYnVmX21hbGxvY2VkICE9IE5VTEwpCi0rICAgICAgZnJlZSAoYnVmX21hbGxvY2VkKTsKLSsgICAgQ0xFQU5VUCAoKTsKLSsgICAgKmxlbmd0aHAgPSBsZW5ndGg7Ci0rICAgIHJldHVybiByZXN1bHQ7Ci0rCi0rICBvdXRfb2ZfbWVtb3J5OgotKyAgICBpZiAoIShyZXN1bHQgPT0gcmVzdWx0YnVmIHx8IHJlc3VsdCA9PSBOVUxMKSkKLSsgICAgICBmcmVlIChyZXN1bHQpOwotKyAgICBpZiAoYnVmX21hbGxvY2VkICE9IE5VTEwpCi0rICAgICAgZnJlZSAoYnVmX21hbGxvY2VkKTsKLSsgIG91dF9vZl9tZW1vcnlfMToKLSsgICAgQ0xFQU5VUCAoKTsKLSsgICAgZXJybm8gPSBFTk9NRU07Ci0rICAgIHJldHVybiBOVUxMOwotKyAgfQotK30KLSsKLSsjdW5kZWYgU05QUklOVEYKLSsjdW5kZWYgVVNFX1NOUFJJTlRGCi0rI3VuZGVmIFBSSU5URl9QQVJTRQotKyN1bmRlZiBESVJFQ1RJVkVTCi0rI3VuZGVmIERJUkVDVElWRQotKyN1bmRlZiBDSEFSX1QKLSsjdW5kZWYgVkFTTlBSSU5URgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3Zhc25wcmludGYuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC92YXNucHJpbnRmLmgJMjAwNC0wOS0xMiAxNDo0MDozNC42Njc3MDA2NjQgLTA0MDAKLUBAIC0wLDAgKzEsNjEgQEAKLSsvKiB2c3ByaW50ZiB3aXRoIGF1dG9tYXRpYyBtZW1vcnkgYWxsb2NhdGlvbi4KLSsgICBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmbmRlZiBfVkFTTlBSSU5URl9ICi0rI2RlZmluZSBfVkFTTlBSSU5URl9ICi0rCi0rLyogR2V0IHZhX2xpc3QuICAqLwotKyNpbmNsdWRlIDxzdGRhcmcuaD4KLSsKLSsvKiBHZXQgc2l6ZV90LiAgKi8KLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rCi0rI2lmbmRlZiBfX2F0dHJpYnV0ZV9fCi0rLyogVGhpcyBmZWF0dXJlIGlzIGF2YWlsYWJsZSBpbiBnY2MgdmVyc2lvbnMgMi41IGFuZCBsYXRlci4gICovCi0rIyBpZiBfX0dOVUNfXyA8IDIgfHwgKF9fR05VQ19fID09IDIgJiYgX19HTlVDX01JTk9SX18gPCA1KSB8fCBfX1NUUklDVF9BTlNJX18KLSsjICBkZWZpbmUgX19hdHRyaWJ1dGVfXyhTcGVjKSAvKiBlbXB0eSAqLwotKyMgZW5kaWYKLSsvKiBUaGUgX18tcHJvdGVjdGVkIHZhcmlhbnRzIG9mIGBmb3JtYXQnIGFuZCBgcHJpbnRmJyBhdHRyaWJ1dGVzCi0rICAgYXJlIGFjY2VwdGVkIGJ5IGdjYyB2ZXJzaW9ucyAyLjYuNCAoZWZmZWN0aXZlbHkgMi43KSBhbmQgbGF0ZXIuICAqLwotKyMgaWYgX19HTlVDX18gPCAyIHx8IChfX0dOVUNfXyA9PSAyICYmIF9fR05VQ19NSU5PUl9fIDwgNykKLSsjICBkZWZpbmUgX19mb3JtYXRfXyBmb3JtYXQKLSsjICBkZWZpbmUgX19wcmludGZfXyBwcmludGYKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rI2lmZGVmCV9fY3BsdXNwbHVzCi0rZXh0ZXJuICJDIiB7Ci0rI2VuZGlmCi0rCi0rLyogV3JpdGUgZm9ybWF0dGVkIG91dHB1dCB0byBhIHN0cmluZyBkeW5hbWljYWxseSBhbGxvY2F0ZWQgd2l0aCBtYWxsb2MoKS4KLSsgICBZb3UgY2FuIHBhc3MgYSBwcmVhbGxvY2F0ZWQgYnVmZmVyIGZvciB0aGUgcmVzdWx0IGluIFJFU1VMVEJVRiBhbmQgaXRzCi0rICAgc2l6ZSBpbiAqTEVOR1RIUDsgb3RoZXJ3aXNlIHlvdSBwYXNzIFJFU1VMVEJVRiA9IE5VTEwuCi0rICAgSWYgc3VjY2Vzc2Z1bCwgcmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBzdHJpbmcgKHRoaXMgbWF5IGJlID0gUkVTVUxUQlVGCi0rICAgaWYgbm8gZHluYW1pYyBtZW1vcnkgYWxsb2NhdGlvbiB3YXMgbmVjZXNzYXJ5KSBhbmQgc2V0ICpMRU5HVEhQIHRvIHRoZQotKyAgIG51bWJlciBvZiByZXN1bHRpbmcgYnl0ZXMsIGV4Y2x1ZGluZyB0aGUgdHJhaWxpbmcgTlVMLiAgVXBvbiBlcnJvciwgc2V0Ci0rICAgZXJybm8gYW5kIHJldHVybiBOVUxMLiAgKi8KLStleHRlcm4gY2hhciAqIGFzbnByaW50ZiAoY2hhciAqcmVzdWx0YnVmLCBzaXplX3QgKmxlbmd0aHAsIGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotKyAgICAgICBfX2F0dHJpYnV0ZV9fICgoX19mb3JtYXRfXyAoX19wcmludGZfXywgMywgNCkpKTsKLStleHRlcm4gY2hhciAqIHZhc25wcmludGYgKGNoYXIgKnJlc3VsdGJ1Ziwgc2l6ZV90ICpsZW5ndGhwLCBjb25zdCBjaGFyICpmb3JtYXQsIHZhX2xpc3QgYXJncykKLSsgICAgICAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDMsIDApKSk7Ci0rCi0rI2lmZGVmCV9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotKwotKyNlbmRpZiAvKiBfVkFTTlBSSU5URl9IICovCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvdmFzbndwcmludGYuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC92YXNud3ByaW50Zi5oCTIwMDQtMDktMTIgMTQ6NDA6MzQuNjczNjk5NzUyIC0wNDAwCi1AQCAtMCwwICsxLDQ2IEBACi0rLyogdnN3cHJpbnRmIHdpdGggYXV0b21hdGljIG1lbW9yeSBhbGxvY2F0aW9uLgotKyAgIENvcHlyaWdodCAoQykgMjAwMi0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZuZGVmIF9WQVNOV1BSSU5URl9ICi0rI2RlZmluZSBfVkFTTldQUklOVEZfSAotKwotKy8qIEdldCB2YV9saXN0LiAgKi8KLSsjaW5jbHVkZSA8c3RkYXJnLmg+Ci0rCi0rLyogR2V0IHdjaGFyX3QsIHNpemVfdC4gICovCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPgotKwotKyNpZmRlZglfX2NwbHVzcGx1cwotK2V4dGVybiAiQyIgewotKyNlbmRpZgotKwotKy8qIFdyaXRlIGZvcm1hdHRlZCBvdXRwdXQgdG8gYSBzdHJpbmcgZHluYW1pY2FsbHkgYWxsb2NhdGVkIHdpdGggbWFsbG9jKCkuCi0rICAgWW91IGNhbiBwYXNzIGEgcHJlYWxsb2NhdGVkIGJ1ZmZlciBmb3IgdGhlIHJlc3VsdCBpbiBSRVNVTFRCVUYgYW5kIGl0cwotKyAgIHNpemUgaW4gKkxFTkdUSFA7IG90aGVyd2lzZSB5b3UgcGFzcyBSRVNVTFRCVUYgPSBOVUxMLgotKyAgIElmIHN1Y2Nlc3NmdWwsIHJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgc3RyaW5nICh0aGlzIG1heSBiZSA9IFJFU1VMVEJVRgotKyAgIGlmIG5vIGR5bmFtaWMgbWVtb3J5IGFsbG9jYXRpb24gd2FzIG5lY2Vzc2FyeSkgYW5kIHNldCAqTEVOR1RIUCB0byB0aGUKLSsgICBudW1iZXIgb2YgcmVzdWx0aW5nIGJ5dGVzLCBleGNsdWRpbmcgdGhlIHRyYWlsaW5nIE5VTC4gIFVwb24gZXJyb3IsIHNldAotKyAgIGVycm5vIGFuZCByZXR1cm4gTlVMTC4gICovCi0rZXh0ZXJuIHdjaGFyX3QgKiBhc253cHJpbnRmICh3Y2hhcl90ICpyZXN1bHRidWYsIHNpemVfdCAqbGVuZ3RocCwgY29uc3Qgd2NoYXJfdCAqZm9ybWF0LCAuLi4pOwotK2V4dGVybiB3Y2hhcl90ICogdmFzbndwcmludGYgKHdjaGFyX3QgKnJlc3VsdGJ1Ziwgc2l6ZV90ICpsZW5ndGhwLCBjb25zdCB3Y2hhcl90ICpmb3JtYXQsIHZhX2xpc3QgYXJncyk7Ci0rCi0rI2lmZGVmCV9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotKwotKyNlbmRpZiAvKiBfVkFTTldQUklOVEZfSCAqLwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL1ZFUlNJT04JMTk5OC0wNC0yNiAwOToyMjozNy4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwvVkVSU0lPTgkyMDA0LTA5LTEyIDE0OjQwOjM0LjY3OTY5ODg0MCAtMDQwMAotQEAgLTEgKzEgQEAKLS1HTlUgZ2V0dGV4dCBsaWJyYXJ5IGZyb20gZ2V0dGV4dC0wLjEwLjMyCi0rR05VIGdldHRleHQgbGlicmFyeSBmcm9tIGdldHRleHQtMC4xNC4xCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwvd3ByaW50Zi1wYXJzZS5oCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9pbnRsL3dwcmludGYtcGFyc2UuaAkyMDA0LTA5LTEyIDE0OjQwOjM0LjY5NTY5NjQwOCAtMDQwMAotQEAgLTAsMCArMSw3NSBAQAotKy8qIFBhcnNlIHByaW50ZiBmb3JtYXQgc3RyaW5nLgotKyAgIENvcHlyaWdodCAoQykgMTk5OSwgMjAwMi0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0rICAgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZAotKyAgIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLSsgICBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rCi0rICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLSsgICBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0rICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlIC0gU3VpdGUgMzMwLCBCb3N0b24sIE1BIDAyMTExLTEzMDcsCi0rICAgVVNBLiAgKi8KLSsKLSsjaWZuZGVmIF9XUFJJTlRGX1BBUlNFX0gKLSsjZGVmaW5lIF9XUFJJTlRGX1BBUlNFX0gKLSsKLSsjaW5jbHVkZSAicHJpbnRmLWFyZ3MuaCIKLSsKLSsKLSsvKiBGbGFncyAqLwotKyNkZWZpbmUgRkxBR19HUk9VUAkgMQkvKiAnIGZsYWcgKi8KLSsjZGVmaW5lIEZMQUdfTEVGVAkgMgkvKiAtIGZsYWcgKi8KLSsjZGVmaW5lIEZMQUdfU0hPV1NJR04JIDQJLyogKyBmbGFnICovCi0rI2RlZmluZSBGTEFHX1NQQUNFCSA4CS8qIHNwYWNlIGZsYWcgKi8KLSsjZGVmaW5lIEZMQUdfQUxUCTE2CS8qICMgZmxhZyAqLwotKyNkZWZpbmUgRkxBR19aRVJPCTMyCi0rCi0rLyogYXJnX2luZGV4IHZhbHVlIGluZGljYXRpbmcgdGhhdCBubyBhcmd1bWVudCBpcyBjb25zdW1lZC4gICovCi0rI2RlZmluZSBBUkdfTk9ORQkofihzaXplX3QpMCkKLSsKLSsvKiBBIHBhcnNlZCBkaXJlY3RpdmUuICAqLwotK3R5cGVkZWYgc3RydWN0Ci0rewotKyAgY29uc3Qgd2NoYXJfdCogZGlyX3N0YXJ0OwotKyAgY29uc3Qgd2NoYXJfdCogZGlyX2VuZDsKLSsgIGludCBmbGFnczsKLSsgIGNvbnN0IHdjaGFyX3QqIHdpZHRoX3N0YXJ0OwotKyAgY29uc3Qgd2NoYXJfdCogd2lkdGhfZW5kOwotKyAgc2l6ZV90IHdpZHRoX2FyZ19pbmRleDsKLSsgIGNvbnN0IHdjaGFyX3QqIHByZWNpc2lvbl9zdGFydDsKLSsgIGNvbnN0IHdjaGFyX3QqIHByZWNpc2lvbl9lbmQ7Ci0rICBzaXplX3QgcHJlY2lzaW9uX2FyZ19pbmRleDsKLSsgIHdjaGFyX3QgY29udmVyc2lvbjsgLyogZCBpIG8gdSB4IFggZiBlIEUgZyBHIGMgcyBwIG4gVSAlIGJ1dCBub3QgQyBTICovCi0rICBzaXplX3QgYXJnX2luZGV4OwotK30KLSt3Y2hhcl90X2RpcmVjdGl2ZTsKLSsKLSsvKiBBIHBhcnNlZCBmb3JtYXQgc3RyaW5nLiAgKi8KLSt0eXBlZGVmIHN0cnVjdAotK3sKLSsgIHNpemVfdCBjb3VudDsKLSsgIHdjaGFyX3RfZGlyZWN0aXZlICpkaXI7Ci0rICBzaXplX3QgbWF4X3dpZHRoX2xlbmd0aDsKLSsgIHNpemVfdCBtYXhfcHJlY2lzaW9uX2xlbmd0aDsKLSt9Ci0rd2NoYXJfdF9kaXJlY3RpdmVzOwotKwotKwotKy8qIFBhcnNlcyB0aGUgZm9ybWF0IHN0cmluZy4gIEZpbGxzIGluIHRoZSBudW1iZXIgTiBvZiBkaXJlY3RpdmVzLCBhbmQgZmlsbHMKLSsgICBpbiBkaXJlY3RpdmVzWzBdLCAuLi4sIGRpcmVjdGl2ZXNbTi0xXSwgYW5kIHNldHMgZGlyZWN0aXZlc1tOXS5kaXJfc3RhcnQKLSsgICB0byB0aGUgZW5kIG9mIHRoZSBmb3JtYXQgc3RyaW5nLiAgQWxzbyBmaWxscyBpbiB0aGUgYXJnX3R5cGUgZmllbGRzIG9mIHRoZQotKyAgIGFyZ3VtZW50cyBhbmQgdGhlIG5lZWRlZCBjb3VudCBvZiBhcmd1bWVudHMuICAqLwotKyNpZmRlZiBTVEFUSUMKLStTVEFUSUMKLSsjZWxzZQotK2V4dGVybgotKyNlbmRpZgotK2ludCB3cHJpbnRmX3BhcnNlIChjb25zdCB3Y2hhcl90ICpmb3JtYXQsIHdjaGFyX3RfZGlyZWN0aXZlcyAqZCwgYXJndW1lbnRzICphKTsKLSsKLSsjZW5kaWYgLyogX1dQUklOVEZfUEFSU0VfSCAqLwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9pbnRsL3hvcGVuLW1zZy5zZWQJMTk5OC0wNC0yNiAwOToyMDo1Mi4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL2ludGwveG9wZW4tbXNnLnNlZAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotQEAgLTEsMTA0ICswLDAgQEAKLS0jIHBvMm1zZy5zZWQgLSBDb252ZXJ0IFVuaWZvcnVtIHN0eWxlIC5wbyBmaWxlIHRvIFgvT3BlbiBzdHlsZSAubXNnIGZpbGUKLS0jIENvcHlyaWdodCAoQykgMTk5NSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLS0jIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PiwgMTk5NS4KLS0jCi0tIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotLSMgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIsIG9yIChhdCB5b3VyIG9wdGlvbikKLS0jIGFueSBsYXRlciB2ZXJzaW9uLgotLSMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tIwotLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0tIyBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UgLSBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgMDIxMTEtMTMwNywgVVNBLgotLSMKLS0jCi0tIyBUaGUgZmlyc3QgZGlyZWN0aXZlIGluIHRoZSAubXNnIHNob3VsZCBiZSB0aGUgZGVmaW5pdGlvbiBvZiB0aGUKLS0jIG1lc3NhZ2Ugc2V0IG51bWJlci4gIFdlIHVzZSBhbHdheXMgc2V0IG51bWJlciAxLgotLSMKLS0xIHsKLS0gIGlcCi0tJHNldCAxICMgQXV0b21hdGljYWxseSBjcmVhdGVkIGJ5IHBvMm1zZy5zZWQKLS0gIGgKLS0gIHMvLiovMC8KLS0gIHgKLS19Ci0tIwotLSMgV2UgY29weSBhbGwgY29tbWVudHMgaW50byB0aGUgLm1zZyBmaWxlLiAgUGVyaGFwcyB0aGV5IGNhbiBoZWxwLgotLSMKLS0vXiMvIHMvXiNbIAldKi8kIC9wCi0tIwotLSMgV2UgY29weSB0aGUgb3JpZ2luYWwgbWVzc2FnZSBhcyBhIGNvbW1lbnQgaW50byB0aGUgLm1zZyBmaWxlLgotLSMKLS0vXm1zZ2lkLyB7Ci0tIyBEb2VzIG5vdCB3b3JrIG5vdwotLSMgIC8iJC8hIHsKLS0jICAgIHMvXFwkLy8KLS0jICAgIHMvJC8gLi4uIChtb3JlIGxpbmVzIGZvbGxvd2luZykiLwotLSMgIH0KLS0gIHMvXm1zZ2lkWyAJXSoiXCguKlwpIiQvJCBPcmlnaW5hbCBNZXNzYWdlOiBcMS8KLS0gIHAKLS19Ci0tIwotLSMgVGhlIC5tc2cgZmlsZSBjb250YWlucywgb3RoZXIgdGhlbiB0aGUgLnBvIGZpbGUsIG9ubHkgdGhlIHRyYW5zbGF0aW9ucwotLSMgYnV0IGVhY2ggZ2l2ZW4gYSB1bmlxdWUgSUQuICBTdGFydGluZyBmcm9tIDEgYW5kIGluY3JlbWVudGluZyBieSAxIGZvcgotLSMgZWFjaCBtZXNzYWdlIHdlIGFzc2lnbiB0aGVtIHRvIHRoZSBtZXNzYWdlcy4KLS0jIEl0IGlzIGltcG9ydGFudCB0aGF0IHRoZSAucG8gZmlsZSB1c2VkIHRvIGdlbmVyYXRlIHRoZSBjYXQtaWQtdGJsLmMgZmlsZQotLSMgKHdpdGggcG8tdG8tdGJsKSBpcyB0aGUgc2FtZSBhcyB0aGUgb25lIHVzZWQgaGVyZS4gIChBdCBsZWFzdCB0aGUgb3JkZXIKLS0jIG9mIGRlY2xhcmF0aW9ucyBtdXN0IG5vdCBiZSBjaGFuZ2VkLikKLS0jCi0tL15tc2dzdHIvIHsKLS0gIHMvbXNnc3RyWyAJXSoiXCguKlwpIi9cMS8KLS0gIHgKLS0jIFRoZSBmb2xsb3dpbmcgbmljZSBzb2x1dGlvbiBpcyBieQotLSMgQnJ1bm8gPEhhaWJsZUBtYTJzMi5tYXRoZW1hdGlrLnVuaS1rYXJsc3J1aGUuZGU+Ci0tICB0ZAotLSMgSW5jcmVtZW50IGEgZGVjaW1hbCBudW1iZXIgaW4gcGF0dGVybiBzcGFjZS4KLS0jIEZpcnN0IGhpZGUgdHJhaWxpbmcgYDknIGRpZ2l0cy4KLS0gIDpkCi0tICBzLzlcKF8qXCkkL19cMS8KLS0gIHRkCi0tIyBBc3N1cmUgYXQgbGVhc3Qgb25lIGRpZ2l0IGlzIGF2YWlsYWJsZS4KLS0gIHMvXlwoXypcKSQvMFwxLwotLSMgSW5jcmVtZW50IHRoZSBsYXN0IGRpZ2l0LgotLSAgcy84XChfKlwpJC85XDEvCi0tICBzLzdcKF8qXCkkLzhcMS8KLS0gIHMvNlwoXypcKSQvN1wxLwotLSAgcy81XChfKlwpJC82XDEvCi0tICBzLzRcKF8qXCkkLzVcMS8KLS0gIHMvM1woXypcKSQvNFwxLwotLSAgcy8yXChfKlwpJC8zXDEvCi0tICBzLzFcKF8qXCkkLzJcMS8KLS0gIHMvMFwoXypcKSQvMVwxLwotLSMgQ29udmVydCB0aGUgaGlkZGVuIGA5JyBkaWdpdHMgdG8gYDAncy4KLS0gIHMvXy8wL2cKLS0gIHgKLS0jIEJyaW5nIHRoZSBsaW5lIGluIHRoZSBmb3JtYXQgYDxudW1iZXI+IDxtZXNzYWdlPicKLS0gIEcKLS0gIHMvXlteXG5dKiQvJiAvCi0tICBzL1woLipcKVxuXChbMC05XSpcKS9cMiBcMS8KLS0jIENsZWFyIGZsYWcgZnJvbSBsYXN0IHN1YnN0aXR1dGlvbi4KLS0gIHRiCi0tIyBBcHBlbmQgdGhlIG5leHQgbGluZS4KLS0gIDpiCi0tICBOCi0tIyBMb29rIHdoZXRoZXIgc2Vjb25kIHBhcnQgaXMgYSBjb250aW51YXRpb24gbGluZS4KLS0gIHMvXCguKlxuXCkiXCguKlwpIi9cMVwyLwotLSMgWWVzLCB0aGVuIGJyYW5jaC4KLS0gIHRhCi0tICBQCi0tICBECi0tIyBOb3RlIHRoYXQgYEQnIGluY2x1ZGVzIGEganVtcCB0byB0aGUgc3RhcnQhIQotLSMgV2UgZm91bmQgYSBjb250aW51YXRpb24gbGluZS4gIEJ1dCBiZWZvcmUgcHJpbnRpbmcgaW5zZXJ0ICdcJy4KLS0gIDphCi0tICBzL1woLipcKVwoXG4uKlwpL1wxXFxcMi8KLS0gIFAKLS0jIFdlIGNhbm5vdCB1c2UgdGhlIHNlZCBjb21tYW5kIGBEJyBoZXJlCi0tICBzLy4qXG5cKC4qXCkvXDEvCi0tICB0YgotLX0KLS1kCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL2ludGwveHNpemUuaAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvaW50bC94c2l6ZS5oCTIwMDQtMDktMTIgMTQ6NDA6MzQuNzAwNjk1NjQ4IC0wNDAwCi1AQCAtMCwwICsxLDEwOSBAQAotKy8qIHhzaXplLmggLS0gQ2hlY2tlZCBzaXplX3QgY29tcHV0YXRpb25zLgotKwotKyAgIENvcHlyaWdodCAoQykgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsKLSsgICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotKyAgIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQKLSsgICBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyLCBvciAoYXQgeW91ciBvcHRpb24pCi0rICAgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0rICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLSsgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQotKyAgIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKwotKyAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQotKyAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSAtIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAwMjExMS0xMzA3LAotKyAgIFVTQS4gICovCi0rCi0rI2lmbmRlZiBfWFNJWkVfSAotKyNkZWZpbmUgX1hTSVpFX0gKLSsKLSsvKiBHZXQgc2l6ZV90LiAgKi8KLSsjaW5jbHVkZSA8c3RkZGVmLmg+Ci0rCi0rLyogR2V0IFNJWkVfTUFYLiAgKi8KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0rI2lmIEhBVkVfU1RESU5UX0gKLSsjIGluY2x1ZGUgPHN0ZGludC5oPgotKyNlbmRpZgotKwotKy8qIFRoZSBzaXplIG9mIG1lbW9yeSBvYmplY3RzIGlzIG9mdGVuIGNvbXB1dGVkIHRocm91Z2ggZXhwcmVzc2lvbnMgb2YKLSsgICB0eXBlIHNpemVfdC4gRXhhbXBsZToKLSsgICAgICB2b2lkKiBwID0gbWFsbG9jIChoZWFkZXJfc2l6ZSArIG4gKiBlbGVtZW50X3NpemUpLgotKyAgIFRoZXNlIGNvbXB1dGF0aW9ucyBjYW4gbGVhZCB0byBvdmVyZmxvdy4gIFdoZW4gdGhpcyBoYXBwZW5zLCBtYWxsb2MoKQotKyAgIHJldHVybnMgYSBwaWVjZSBvZiBtZW1vcnkgdGhhdCBpcyB3YXkgdG9vIHNtYWxsLCBhbmQgdGhlIHByb2dyYW0gdGhlbgotKyAgIGNyYXNoZXMgd2hpbGUgYXR0ZW1wdGluZyB0byBmaWxsIHRoZSBtZW1vcnkuCi0rICAgVG8gYXZvaWQgdGhpcywgdGhlIGZ1bmN0aW9ucyBhbmQgbWFjcm9zIGluIHRoaXMgZmlsZSBjaGVjayBmb3Igb3ZlcmZsb3cuCi0rICAgVGhlIGNvbnZlbnRpb24gaXMgdGhhdCBTSVpFX01BWCByZXByZXNlbnRzIG92ZXJmbG93LgotKyAgIG1hbGxvYyAoU0laRV9NQVgpIGlzIG5vdCBndWFyYW50ZWVkIHRvIGZhaWwgLS0gdGhpbmsgb2YgYSBtYWxsb2MKLSsgICBpbXBsZW1lbnRhdGlvbiB0aGF0IHVzZXMgbW1hcCAtLSwgaXQncyByZWNvbW1lbmRlZCB0byB1c2Ugc2l6ZV9vdmVyZmxvd19wKCkKLSsgICBvciBzaXplX2luX2JvdW5kc19wKCkgYmVmb3JlIGludm9raW5nIG1hbGxvYygpLgotKyAgIFRoZSBleGFtcGxlIHRodXMgYmVjb21lczoKLSsgICAgICBzaXplX3Qgc2l6ZSA9IHhzdW0gKGhlYWRlcl9zaXplLCB4dGltZXMgKG4sIGVsZW1lbnRfc2l6ZSkpOwotKyAgICAgIHZvaWQgKnAgPSAoc2l6ZV9pbl9ib3VuZHNfcCAoc2l6ZSkgPyBtYWxsb2MgKHNpemUpIDogTlVMTCk7Ci0rKi8KLSsKLSsvKiBDb252ZXJ0IGFuIGFyYml0cmFyeSB2YWx1ZSA+PSAwIHRvIHR5cGUgc2l6ZV90LiAgKi8KLSsjZGVmaW5lIHhjYXN0X3NpemVfdChOKSBcCi0rICAoKE4pIDw9IFNJWkVfTUFYID8gKHNpemVfdCkgKE4pIDogU0laRV9NQVgpCi0rCi0rLyogU3VtIG9mIHR3byBzaXplcywgd2l0aCBvdmVyZmxvdyBjaGVjay4gICovCi0rc3RhdGljIGlubGluZSBzaXplX3QKLSsjaWYgX19HTlVDX18gPj0gMwotK19fYXR0cmlidXRlX18gKChfX3B1cmVfXykpCi0rI2VuZGlmCi0reHN1bSAoc2l6ZV90IHNpemUxLCBzaXplX3Qgc2l6ZTIpCi0rewotKyAgc2l6ZV90IHN1bSA9IHNpemUxICsgc2l6ZTI7Ci0rICByZXR1cm4gKHN1bSA+PSBzaXplMSA/IHN1bSA6IFNJWkVfTUFYKTsKLSt9Ci0rCi0rLyogU3VtIG9mIHRocmVlIHNpemVzLCB3aXRoIG92ZXJmbG93IGNoZWNrLiAgKi8KLStzdGF0aWMgaW5saW5lIHNpemVfdAotKyNpZiBfX0dOVUNfXyA+PSAzCi0rX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkKLSsjZW5kaWYKLSt4c3VtMyAoc2l6ZV90IHNpemUxLCBzaXplX3Qgc2l6ZTIsIHNpemVfdCBzaXplMykKLSt7Ci0rICByZXR1cm4geHN1bSAoeHN1bSAoc2l6ZTEsIHNpemUyKSwgc2l6ZTMpOwotK30KLSsKLSsvKiBTdW0gb2YgZm91ciBzaXplcywgd2l0aCBvdmVyZmxvdyBjaGVjay4gICovCi0rc3RhdGljIGlubGluZSBzaXplX3QKLSsjaWYgX19HTlVDX18gPj0gMwotK19fYXR0cmlidXRlX18gKChfX3B1cmVfXykpCi0rI2VuZGlmCi0reHN1bTQgKHNpemVfdCBzaXplMSwgc2l6ZV90IHNpemUyLCBzaXplX3Qgc2l6ZTMsIHNpemVfdCBzaXplNCkKLSt7Ci0rICByZXR1cm4geHN1bSAoeHN1bSAoeHN1bSAoc2l6ZTEsIHNpemUyKSwgc2l6ZTMpLCBzaXplNCk7Ci0rfQotKwotKy8qIE1heGltdW0gb2YgdHdvIHNpemVzLCB3aXRoIG92ZXJmbG93IGNoZWNrLiAgKi8KLStzdGF0aWMgaW5saW5lIHNpemVfdAotKyNpZiBfX0dOVUNfXyA+PSAzCi0rX19hdHRyaWJ1dGVfXyAoKF9fcHVyZV9fKSkKLSsjZW5kaWYKLSt4bWF4IChzaXplX3Qgc2l6ZTEsIHNpemVfdCBzaXplMikKLSt7Ci0rICAvKiBObyBleHBsaWNpdCBjaGVjayBpcyBuZWVkZWQgaGVyZSwgYmVjYXVzZSBmb3IgYW55IG46Ci0rICAgICBtYXggKFNJWkVfTUFYLCBuKSA9PSBTSVpFX01BWCBhbmQgbWF4IChuLCBTSVpFX01BWCkgPT0gU0laRV9NQVguICAqLwotKyAgcmV0dXJuIChzaXplMSA+PSBzaXplMiA/IHNpemUxIDogc2l6ZTIpOwotK30KLSsKLSsvKiBNdWx0aXBsaWNhdGlvbiBvZiBhIGNvdW50IHdpdGggYW4gZWxlbWVudCBzaXplLCB3aXRoIG92ZXJmbG93IGNoZWNrLgotKyAgIFRoZSBjb3VudCBtdXN0IGJlID49IDAgYW5kIHRoZSBlbGVtZW50IHNpemUgbXVzdCBiZSA+IDAuCi0rICAgVGhpcyBpcyBhIG1hY3JvLCBub3QgYW4gaW5saW5lIGZ1bmN0aW9uLCBzbyB0aGF0IGl0IHdvcmtzIGNvcnJlY3RseSBldmVuCi0rICAgd2hlbiBOIGlzIG9mIGEgd2lkZXIgdHVwZSBhbmQgTiA+IFNJWkVfTUFYLiAgKi8KLSsjZGVmaW5lIHh0aW1lcyhOLCBFTFNJWkUpIFwKLSsgICgoTikgPD0gU0laRV9NQVggLyAoRUxTSVpFKSA/IChzaXplX3QpIChOKSAqIChFTFNJWkUpIDogU0laRV9NQVgpCi0rCi0rLyogQ2hlY2sgZm9yIG92ZXJmbG93LiAgKi8KLSsjZGVmaW5lIHNpemVfb3ZlcmZsb3dfcChTSVpFKSBcCi0rICAoKFNJWkUpID09IFNJWkVfTUFYKQotKy8qIENoZWNrIGFnYWluc3Qgb3ZlcmZsb3cuICAqLwotKyNkZWZpbmUgc2l6ZV9pbl9ib3VuZHNfcChTSVpFKSBcCi0rICAoKFNJWkUpICE9IFNJWkVfTUFYKQotKwotKyNlbmRpZiAvKiBfWFNJWkVfSCAqLwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9DaGFuZ2VMb2cJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L0NoYW5nZUxvZwkyMDA0LTA5LTEyIDE0OjQwOjM1LjA1NDY0MTg0MCAtMDQwMAotQEAgLTAsMCArMSwzMiBAQAotKzIwMDQtMDktMTIgIGdldHRleHRpemUgIDxidWctZ251LWdldHRleHRAZ251Lm9yZz4KLSsKLSsJKiBjb2Rlc2V0Lm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBnZXR0ZXh0Lm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBnbGliYzIxLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBpY29udi5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogaW50ZGl2MC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogaW50bWF4Lm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBpbnR0eXBlcy5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogaW50dHlwZXNfaC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogaW50dHlwZXMtcHJpLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBpc2MtcG9zaXgubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIGxjbWVzc2FnZS5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogbGliLWxkLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBsaWItbGluay5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogbGliLXByZWZpeC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogbG9uZ2RvdWJsZS5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogbG9uZ2xvbmcubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIG5scy5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogcG8ubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIHByaW50Zi1wb3NpeC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogcHJvZ3Rlc3QubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIHNpZ25lZC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogc2l6ZV9tYXgubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIHN0ZGludF9oLm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiB1aW50bWF4X3QubTQ6IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIHVsb25nbG9uZy5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogd2NoYXJfdC5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogd2ludF90Lm00OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiB4c2l6ZS5tNDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogTWFrZWZpbGUuYW06IE5ldyBmaWxlLgotKwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9jb2Rlc2V0Lm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9jb2Rlc2V0Lm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuODIwNjc3NDA4IC0wNDAwCi1AQCAtMCwwICsxLDIzIEBACi0rIyBjb2Rlc2V0Lm00IHNlcmlhbCBBTTEgKGdldHRleHQtMC4xMC40MCkKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAwLTIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0rCi0rQUNfREVGVU4oW0FNX0xBTkdJTkZPX0NPREVTRVRdLAotK1sKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgbmxfbGFuZ2luZm8gYW5kIENPREVTRVRdLCBhbV9jdl9sYW5naW5mb19jb2Rlc2V0LAotKyAgICBbQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsYW5naW5mby5oPl0sCi0rICAgICAgW2NoYXIqIGNzID0gbmxfbGFuZ2luZm8oQ09ERVNFVCk7XSwKLSsgICAgICBhbV9jdl9sYW5naW5mb19jb2Rlc2V0PXllcywKLSsgICAgICBhbV9jdl9sYW5naW5mb19jb2Rlc2V0PW5vKQotKyAgICBdKQotKyAgaWYgdGVzdCAkYW1fY3ZfbGFuZ2luZm9fY29kZXNldCA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkUoSEFWRV9MQU5HSU5GT19DT0RFU0VULCAxLAotKyAgICAgIFtEZWZpbmUgaWYgeW91IGhhdmUgPGxhbmdpbmZvLmg+IGFuZCBubF9sYW5naW5mbyhDT0RFU0VUKS5dKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9nZXR0ZXh0Lm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9nZXR0ZXh0Lm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuODI2Njc2NDk2IC0wNDAwCi1AQCAtMCwwICsxLDQ4NyBAQAotKyMgZ2V0dGV4dC5tNCBzZXJpYWwgMjggKGdldHRleHQtMC4xMykKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLStkbmwKLStkbmwgVGhpcyBmaWxlIGNhbiBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgotK2RubCB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugb3IgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCi0rZG5sIExpY2Vuc2UgYnV0IHdoaWNoIHN0aWxsIHdhbnQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR05VIGdldHRleHQKLStkbmwgZnVuY3Rpb25hbGl0eS4KLStkbmwgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIGNvZGUgb2YgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaXMgY292ZXJlZAotK2RubCBieSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHRoZSByZXN0IG9mIHRoZSBHTlUKLStkbmwgZ2V0dGV4dCBwYWNrYWdlIHBhY2thZ2UgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCi0rZG5sIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgotKwotK2RubCBBdXRob3JzOgotK2RubCAgIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk1LTIwMDAuCi0rZG5sICAgQnJ1bm8gSGFpYmxlIDxoYWlibGVAY2xpc3AuY29ucy5vcmc+LCAyMDAwLTIwMDMuCi0rCi0rZG5sIE1hY3JvIHRvIGFkZCBmb3IgdXNpbmcgR05VIGdldHRleHQuCi0rCi0rZG5sIFVzYWdlOiBBTV9HTlVfR0VUVEVYVChbSU5UTFNZTUJPTF0sIFtORUVEU1lNQk9MXSwgW0lOVExESVJdKS4KLStkbmwgSU5UTFNZTUJPTCBjYW4gYmUgb25lIG9mICdleHRlcm5hbCcsICduby1saWJ0b29sJywgJ3VzZS1saWJ0b29sJy4gVGhlCi0rZG5sICAgIGRlZmF1bHQgKGlmIGl0IGlzIG5vdCBzcGVjaWZpZWQgb3IgZW1wdHkpIGlzICduby1saWJ0b29sJy4KLStkbmwgICAgSU5UTFNZTUJPTCBzaG91bGQgYmUgJ2V4dGVybmFsJyBmb3IgcGFja2FnZXMgd2l0aCBubyBpbnRsIGRpcmVjdG9yeSwKLStkbmwgICAgYW5kICduby1saWJ0b29sJyBvciAndXNlLWxpYnRvb2wnIGZvciBwYWNrYWdlcyB3aXRoIGFuIGludGwgZGlyZWN0b3J5LgotK2RubCAgICBJZiBJTlRMU1lNQk9MIGlzICd1c2UtbGlidG9vbCcsIHRoZW4gYSBsaWJ0b29sIGxpYnJhcnkKLStkbmwgICAgJCh0b3BfYnVpbGRkaXIpL2ludGwvbGliaW50bC5sYSB3aWxsIGJlIGNyZWF0ZWQgKHNoYXJlZCBhbmQvb3Igc3RhdGljLAotK2RubCAgICBkZXBlbmRpbmcgb24gLS17ZW5hYmxlLGRpc2FibGV9LXtzaGFyZWQsc3RhdGljfSBhbmQgb24gdGhlIHByZXNlbmNlIG9mCi0rZG5sICAgIEFNLURJU0FCTEUtU0hBUkVEKS4gSWYgSU5UTFNZTUJPTCBpcyAnbm8tbGlidG9vbCcsIGEgc3RhdGljIGxpYnJhcnkKLStkbmwgICAgJCh0b3BfYnVpbGRkaXIpL2ludGwvbGliaW50bC5hIHdpbGwgYmUgY3JlYXRlZC4KLStkbmwgSWYgTkVFRFNZTUJPTCBpcyBzcGVjaWZpZWQgYW5kIGlzICduZWVkLW5nZXR0ZXh0JywgdGhlbiBHTlUgZ2V0dGV4dAotK2RubCAgICBpbXBsZW1lbnRhdGlvbnMgKGluIGxpYmMgb3IgbGliaW50bCkgd2l0aG91dCB0aGUgbmdldHRleHQoKSBmdW5jdGlvbgotK2RubCAgICB3aWxsIGJlIGlnbm9yZWQuICBJZiBORUVEU1lNQk9MIGlzIHNwZWNpZmllZCBhbmQgaXMKLStkbmwgICAgJ25lZWQtZm9ybWF0c3RyaW5nLW1hY3JvcycsIHRoZW4gR05VIGdldHRleHQgaW1wbGVtZW50YXRpb25zIHRoYXQgZG9uJ3QKLStkbmwgICAgc3VwcG9ydCB0aGUgSVNPIEMgOTkgPGludHR5cGVzLmg+IGZvcm1hdHN0cmluZyBtYWNyb3Mgd2lsbCBiZSBpZ25vcmVkLgotK2RubCBJTlRMRElSIGlzIHVzZWQgdG8gZmluZCB0aGUgaW50bCBsaWJyYXJpZXMuICBJZiBlbXB0eSwKLStkbmwgICAgdGhlIHZhbHVlIGAkKHRvcF9idWlsZGRpcikvaW50bC8nIGlzIHVzZWQuCi0rZG5sCi0rZG5sIFRoZSByZXN1bHQgb2YgdGhlIGNvbmZpZ3VyYXRpb24gaXMgb25lIG9mIHRocmVlIGNhc2VzOgotK2RubCAxKSBHTlUgZ2V0dGV4dCwgYXMgaW5jbHVkZWQgaW4gdGhlIGludGwgc3ViZGlyZWN0b3J5LCB3aWxsIGJlIGNvbXBpbGVkCi0rZG5sICAgIGFuZCB1c2VkLgotK2RubCAgICBDYXRhbG9nIGZvcm1hdDogR05VIC0tPiBpbnN0YWxsIGluICQoZGF0YWRpcikKLStkbmwgICAgQ2F0YWxvZyBleHRlbnNpb246IC5tbyBhZnRlciBpbnN0YWxsYXRpb24sIC5nbW8gaW4gc291cmNlIHRyZWUKLStkbmwgMikgR05VIGdldHRleHQgaGFzIGJlZW4gZm91bmQgaW4gdGhlIHN5c3RlbSdzIEMgbGlicmFyeS4KLStkbmwgICAgQ2F0YWxvZyBmb3JtYXQ6IEdOVSAtLT4gaW5zdGFsbCBpbiAkKGRhdGFkaXIpCi0rZG5sICAgIENhdGFsb2cgZXh0ZW5zaW9uOiAubW8gYWZ0ZXIgaW5zdGFsbGF0aW9uLCAuZ21vIGluIHNvdXJjZSB0cmVlCi0rZG5sIDMpIE5vIGludGVybmF0aW9uYWxpemF0aW9uLCBhbHdheXMgdXNlIEVuZ2xpc2ggbXNnaWQuCi0rZG5sICAgIENhdGFsb2cgZm9ybWF0OiBub25lCi0rZG5sICAgIENhdGFsb2cgZXh0ZW5zaW9uOiBub25lCi0rZG5sIElmIElOVExTWU1CT0wgaXMgJ2V4dGVybmFsJywgb25seSBjYXNlcyAyIGFuZCAzIGNhbiBvY2N1ci4KLStkbmwgVGhlIHVzZSBvZiAuZ21vIGlzIGhpc3RvcmljYWwgKGl0IHdhcyBuZWVkZWQgdG8gYXZvaWQgb3ZlcndyaXRpbmcgdGhlCi0rZG5sIEdOVSBmb3JtYXQgY2F0YWxvZ3Mgd2hlbiBidWlsZGluZyBvbiBhIHBsYXRmb3JtIHdpdGggYW4gWC9PcGVuIGdldHRleHQpLAotK2RubCBidXQgd2Uga2VlcCBpdCBpbiBvcmRlciBub3QgdG8gZm9yY2UgaXJyZWxldmFudCBmaWxlbmFtZSBjaGFuZ2VzIG9uIHRoZQotK2RubCBtYWludGFpbmVycy4KLStkbmwKLStBQ19ERUZVTihbQU1fR05VX0dFVFRFWFRdLAotK1sKLSsgIGRubCBBcmd1bWVudCBjaGVja2luZy4KLSsgIGlmZWxzZShbJDFdLCBbXSwgLCBbaWZlbHNlKFskMV0sIFtleHRlcm5hbF0sICwgW2lmZWxzZShbJDFdLCBbbm8tbGlidG9vbF0sICwgW2lmZWxzZShbJDFdLCBbdXNlLWxpYnRvb2xdLCAsCi0rICAgIFtlcnJwcmludChbRVJST1I6IGludmFsaWQgZmlyc3QgYXJndW1lbnQgdG8gQU1fR05VX0dFVFRFWFQKLStdKV0pXSldKV0pCi0rICBpZmVsc2UoWyQyXSwgW10sICwgW2lmZWxzZShbJDJdLCBbbmVlZC1uZ2V0dGV4dF0sICwgW2lmZWxzZShbJDJdLCBbbmVlZC1mb3JtYXRzdHJpbmctbWFjcm9zXSwgLAotKyAgICBbZXJycHJpbnQoW0VSUk9SOiBpbnZhbGlkIHNlY29uZCBhcmd1bWVudCB0byBBTV9HTlVfR0VUVEVYVAotK10pXSldKV0pCi0rICBkZWZpbmUoZ3RfaW5jbHVkZWRfaW50bCwgaWZlbHNlKFskMV0sIFtleHRlcm5hbF0sIFtub10sIFt5ZXNdKSkKLSsgIGRlZmluZShndF9saWJ0b29sX3N1ZmZpeF9wcmVmaXgsIGlmZWxzZShbJDFdLCBbdXNlLWxpYnRvb2xdLCBbbF0sIFtdKSkKLSsKLSsgIEFDX1JFUVVJUkUoW0FNX1BPX1NVQkRJUlNdKWRubAotKyAgaWZlbHNlKGd0X2luY2x1ZGVkX2ludGwsIHllcywgWwotKyAgICBBQ19SRVFVSVJFKFtBTV9JTlRMX1NVQkRJUl0pZG5sCi0rICBdKQotKwotKyAgZG5sIFByZXJlcXVpc2l0ZXMgb2YgQUNfTElCX0xJTktGTEFHU19CT0RZLgotKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfUFJFRklYXSkKLSsgIEFDX1JFUVVJUkUoW0FDX0xJQl9SUEFUSF0pCi0rCi0rICBkbmwgU29tZXRpbWVzIGxpYmludGwgcmVxdWlyZXMgbGliaWNvbnYsIHNvIGZpcnN0IHNlYXJjaCBmb3IgbGliaWNvbnYuCi0rICBkbmwgSWRlYWxseSB3ZSB3b3VsZCBkbyB0aGlzIHNlYXJjaCBvbmx5IGFmdGVyIHRoZQotKyAgZG5sICAgICAgaWYgdGVzdCAiJFVTRV9OTFMiID0gInllcyI7IHRoZW4KLSsgIGRubCAgICAgICAgaWYgdGVzdCAiJGd0X2N2X2Z1bmNfZ251Z2V0dGV4dF9saWJjIiAhPSAieWVzIjsgdGhlbgotKyAgZG5sIHRlc3RzLiBCdXQgaWYgY29uZmlndXJlLmluIGludm9rZXMgQU1fSUNPTlYgYWZ0ZXIgQU1fR05VX0dFVFRFWFQKLSsgIGRubCB0aGUgY29uZmlndXJlIHNjcmlwdCB3b3VsZCBuZWVkIHRvIGNvbnRhaW4gdGhlIHNhbWUgc2hlbGwgY29kZQotKyAgZG5sIGFnYWluLCBvdXRzaWRlIGFueSAnaWYnLiBUaGVyZSBhcmUgdHdvIHNvbHV0aW9uczoKLSsgIGRubCAtIEludm9rZSBBTV9JQ09OVl9MSU5LRkxBR1NfQk9EWSBoZXJlLCBvdXRzaWRlIGFueSAnaWYnLgotKyAgZG5sIC0gQ29udHJvbCB0aGUgZXhwYW5zaW9ucyBpbiBtb3JlIGRldGFpbCB1c2luZyBBQ19QUk9WSURFX0lGRUxTRS4KLSsgIGRubCBTaW5jZSBBQ19QUk9WSURFX0lGRUxTRSBpcyBvbmx5IGluIGF1dG9jb25mID49IDIuNTIgYW5kIG5vdAotKyAgZG5sIGRvY3VtZW50ZWQsIHdlIGF2b2lkIGl0LgotKyAgaWZlbHNlKGd0X2luY2x1ZGVkX2ludGwsIHllcywgLCBbCi0rICAgIEFDX1JFUVVJUkUoW0FNX0lDT05WX0xJTktGTEFHU19CT0RZXSkKLSsgIF0pCi0rCi0rICBkbmwgU2V0IFVTRV9OTFMuCi0rICBBTV9OTFMKLSsKLSsgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsIFsKLSsgICAgQlVJTERfSU5DTFVERURfTElCSU5UTD1ubwotKyAgICBVU0VfSU5DTFVERURfTElCSU5UTD1ubwotKyAgXSkKLSsgIExJQklOVEw9Ci0rICBMVExJQklOVEw9Ci0rICBQT1NVQj0KLSsKLSsgIGRubCBJZiB3ZSB1c2UgTkxTIGZpZ3VyZSBvdXQgd2hhdCBtZXRob2QKLSsgIGlmIHRlc3QgIiRVU0VfTkxTIiA9ICJ5ZXMiOyB0aGVuCi0rICAgIGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dD1ubwotKyAgICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCBbCi0rICAgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGluY2x1ZGVkIGdldHRleHQgaXMgcmVxdWVzdGVkXSkKLSsgICAgICBBQ19BUkdfV0lUSChpbmNsdWRlZC1nZXR0ZXh0LAotKyAgICAgICAgWyAgLS13aXRoLWluY2x1ZGVkLWdldHRleHQgdXNlIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGluY2x1ZGVkIGhlcmVdLAotKyAgICAgICAgbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dD0kd2l0aHZhbCwKLSsgICAgICAgIG5sc19jdl9mb3JjZV91c2VfZ251X2dldHRleHQ9bm8pCi0rICAgICAgQUNfTVNHX1JFU1VMVCgkbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dCkKLSsKLSsgICAgICBubHNfY3ZfdXNlX2dudV9nZXR0ZXh0PSIkbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dCIKLSsgICAgICBpZiB0ZXN0ICIkbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dCIgIT0gInllcyI7IHRoZW4KLSsgICAgXSkKLSsgICAgICAgIGRubCBVc2VyIGRvZXMgbm90IGluc2lzdCBvbiB1c2luZyBHTlUgTkxTIGxpYnJhcnkuICBGaWd1cmUgb3V0IHdoYXQKLSsgICAgICAgIGRubCB0byB1c2UuICBJZiBHTlUgZ2V0dGV4dCBpcyBhdmFpbGFibGUgd2UgdXNlIHRoaXMuICBFbHNlIHdlIGhhdmUKLSsgICAgICAgIGRubCB0byBmYWxsIGJhY2sgdG8gR05VIE5MUyBsaWJyYXJ5LgotKwotKyAgICAgICAgZG5sIEFkZCBhIHZlcnNpb24gbnVtYmVyIHRvIHRoZSBjYWNoZSBtYWNyb3MuCi0rICAgICAgICBkZWZpbmUoW2d0X2FwaV92ZXJzaW9uXSwgaWZlbHNlKFskMl0sIFtuZWVkLWZvcm1hdHN0cmluZy1tYWNyb3NdLCAzLCBpZmVsc2UoWyQyXSwgW25lZWQtbmdldHRleHRdLCAyLCAxKSkpCi0rICAgICAgICBkZWZpbmUoW2d0X2N2X2Z1bmNfZ251Z2V0dGV4dF9saWJjXSwgW2d0X2N2X2Z1bmNfZ251Z2V0dGV4dF1ndF9hcGlfdmVyc2lvbltfbGliY10pCi0rICAgICAgICBkZWZpbmUoW2d0X2N2X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsXSwgW2d0X2N2X2Z1bmNfZ251Z2V0dGV4dF1ndF9hcGlfdmVyc2lvbltfbGliaW50bF0pCi0rCi0rICAgICAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIEdOVSBnZXR0ZXh0IGluIGxpYmNdLCBndF9jdl9mdW5jX2dudWdldHRleHRfbGliYywKLSsgICAgICAgICBbQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0rXWlmZWxzZShbJDJdLCBbbmVlZC1mb3JtYXRzdHJpbmctbWFjcm9zXSwKLStbI2lmbmRlZiBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTgotKyNkZWZpbmUgX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04obWFqb3IpICgobWFqb3IpID09IDAgPyAwIDogLTEpCi0rI2VuZGlmCi0rY2hhbmdlcXVvdGUoLClkbmwKLSt0eXBlZGVmIGludCBhcnJheSBbMiAqIChfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTigwKSA+PSAxKSAtIDFdOwotK2NoYW5nZXF1b3RlKFssXSlkbmwKLStdLCBbXSlbZXh0ZXJuIGludCBfbmxfbXNnX2NhdF9jbnRyOwotK2V4dGVybiBpbnQgKl9ubF9kb21haW5fYmluZGluZ3M7XSwKLSsgICAgICAgICAgICBbYmluZHRleHRkb21haW4gKCIiLCAiIik7Ci0rcmV0dXJuIChpbnQpIGdldHRleHQgKCIiKV1pZmVsc2UoWyQyXSwgW25lZWQtbmdldHRleHRdLCBbICsgKGludCkgbmdldHRleHQgKCIiLCAiIiwgMCldLCBbXSlbICsgX25sX21zZ19jYXRfY250ciArICpfbmxfZG9tYWluX2JpbmRpbmdzXSwKLSsgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHRfbGliYz15ZXMsCi0rICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmM9bm8pXSkKLSsKLSsgICAgICAgIGlmIHRlc3QgIiRndF9jdl9mdW5jX2dudWdldHRleHRfbGliYyIgIT0gInllcyI7IHRoZW4KLSsgICAgICAgICAgZG5sIFNvbWV0aW1lcyBsaWJpbnRsIHJlcXVpcmVzIGxpYmljb252LCBzbyBmaXJzdCBzZWFyY2ggZm9yIGxpYmljb252LgotKyAgICAgICAgICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCAsIFsKLSsgICAgICAgICAgICBBTV9JQ09OVl9MSU5LCi0rICAgICAgICAgIF0pCi0rICAgICAgICAgIGRubCBTZWFyY2ggZm9yIGxpYmludGwgYW5kIGRlZmluZSBMSUJJTlRMLCBMVExJQklOVEwgYW5kIElOQ0lOVEwKLSsgICAgICAgICAgZG5sIGFjY29yZGluZ2x5LiBEb24ndCB1c2UgQUNfTElCX0xJTktGTEFHU19CT0RZKFtpbnRsXSxbaWNvbnZdKQotKyAgICAgICAgICBkbmwgYmVjYXVzZSB0aGF0IHdvdWxkIGFkZCAiLWxpY29udiIgdG8gTElCSU5UTCBhbmQgTFRMSUJJTlRMCi0rICAgICAgICAgIGRubCBldmVuIGlmIGxpYmljb252IGRvZXNuJ3QgZXhpc3QuCi0rICAgICAgICAgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbaW50bF0pCi0rICAgICAgICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgR05VIGdldHRleHQgaW4gbGliaW50bF0sCi0rICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmludGwsCi0rICAgICAgICAgICBbZ3Rfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgotKyAgICAgICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJElOQ0lOVEwiCi0rICAgICAgICAgICAgZ3Rfc2F2ZV9MSUJTPSIkTElCUyIKLSsgICAgICAgICAgICBMSUJTPSIkTElCUyAkTElCSU5UTCIKLSsgICAgICAgICAgICBkbmwgTm93IHNlZSB3aGV0aGVyIGxpYmludGwgZXhpc3RzIGFuZCBkb2VzIG5vdCBkZXBlbmQgb24gbGliaWNvbnYuCi0rICAgICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0rXWlmZWxzZShbJDJdLCBbbmVlZC1mb3JtYXRzdHJpbmctbWFjcm9zXSwKLStbI2lmbmRlZiBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTgotKyNkZWZpbmUgX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04obWFqb3IpICgobWFqb3IpID09IDAgPyAwIDogLTEpCi0rI2VuZGlmCi0rY2hhbmdlcXVvdGUoLClkbmwKLSt0eXBlZGVmIGludCBhcnJheSBbMiAqIChfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTigwKSA+PSAxKSAtIDFdOwotK2NoYW5nZXF1b3RlKFssXSlkbmwKLStdLCBbXSlbZXh0ZXJuIGludCBfbmxfbXNnX2NhdF9jbnRyOwotK2V4dGVybgotKyNpZmRlZiBfX2NwbHVzcGx1cwotKyJDIgotKyNlbmRpZgotK2NvbnN0IGNoYXIgKl9ubF9leHBhbmRfYWxpYXMgKCk7XSwKLSsgICAgICAgICAgICAgIFtiaW5kdGV4dGRvbWFpbiAoIiIsICIiKTsKLStyZXR1cm4gKGludCkgZ2V0dGV4dCAoIiIpXWlmZWxzZShbJDJdLCBbbmVlZC1uZ2V0dGV4dF0sIFsgKyAoaW50KSBuZ2V0dGV4dCAoIiIsICIiLCAwKV0sIFtdKVsgKyBfbmxfbXNnX2NhdF9jbnRyICsgKl9ubF9leHBhbmRfYWxpYXMgKDApXSwKLSsgICAgICAgICAgICAgIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsPXllcywKLSsgICAgICAgICAgICAgIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsPW5vKQotKyAgICAgICAgICAgIGRubCBOb3cgc2VlIHdoZXRoZXIgbGliaW50bCBleGlzdHMgYW5kIGRlcGVuZHMgb24gbGliaWNvbnYuCi0rICAgICAgICAgICAgaWYgdGVzdCAiJGd0X2N2X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsIiAhPSB5ZXMgJiYgdGVzdCAtbiAiJExJQklDT05WIjsgdGhlbgotKyAgICAgICAgICAgICAgTElCUz0iJExJQlMgJExJQklDT05WIgotKyAgICAgICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJpbnRsLmg+Ci0rXWlmZWxzZShbJDJdLCBbbmVlZC1mb3JtYXRzdHJpbmctbWFjcm9zXSwKLStbI2lmbmRlZiBfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTgotKyNkZWZpbmUgX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04obWFqb3IpICgobWFqb3IpID09IDAgPyAwIDogLTEpCi0rI2VuZGlmCi0rY2hhbmdlcXVvdGUoLClkbmwKLSt0eXBlZGVmIGludCBhcnJheSBbMiAqIChfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTigwKSA+PSAxKSAtIDFdOwotK2NoYW5nZXF1b3RlKFssXSlkbmwKLStdLCBbXSlbZXh0ZXJuIGludCBfbmxfbXNnX2NhdF9jbnRyOwotK2V4dGVybgotKyNpZmRlZiBfX2NwbHVzcGx1cwotKyJDIgotKyNlbmRpZgotK2NvbnN0IGNoYXIgKl9ubF9leHBhbmRfYWxpYXMgKCk7XSwKLSsgICAgICAgICAgICAgICAgW2JpbmR0ZXh0ZG9tYWluICgiIiwgIiIpOwotK3JldHVybiAoaW50KSBnZXR0ZXh0ICgiIildaWZlbHNlKFskMl0sIFtuZWVkLW5nZXR0ZXh0XSwgWyArIChpbnQpIG5nZXR0ZXh0ICgiIiwgIiIsIDApXSwgW10pWyArIF9ubF9tc2dfY2F0X2NudHIgKyAqX25sX2V4cGFuZF9hbGlhcyAoMCldLAotKyAgICAgICAgICAgICAgIFtMSUJJTlRMPSIkTElCSU5UTCAkTElCSUNPTlYiCi0rICAgICAgICAgICAgICAgIExUTElCSU5UTD0iJExUTElCSU5UTCAkTFRMSUJJQ09OViIKLSsgICAgICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmludGw9eWVzCi0rICAgICAgICAgICAgICAgXSkKLSsgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIENQUEZMQUdTPSIkZ3Rfc2F2ZV9DUFBGTEFHUyIKLSsgICAgICAgICAgICBMSUJTPSIkZ3Rfc2F2ZV9MSUJTIl0pCi0rICAgICAgICBmaQotKwotKyAgICAgICAgZG5sIElmIGFuIGFscmVhZHkgcHJlc2VudCBvciBwcmVpbnN0YWxsZWQgR05VIGdldHRleHQoKSBpcyBmb3VuZCwKLSsgICAgICAgIGRubCB1c2UgaXQuICBCdXQgaWYgdGhpcyBtYWNybyBpcyB1c2VkIGluIEdOVSBnZXR0ZXh0LCBhbmQgR05VCi0rICAgICAgICBkbmwgZ2V0dGV4dCBpcyBhbHJlYWR5IHByZWluc3RhbGxlZCBpbiBsaWJpbnRsLCB3ZSB1cGRhdGUgdGhpcwotKyAgICAgICAgZG5sIGxpYmludGwuICAoQ2YuIHRoZSBpbnN0YWxsIHJ1bGUgaW4gaW50bC9NYWtlZmlsZS5pbi4pCi0rICAgICAgICBpZiB0ZXN0ICIkZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmMiID0gInllcyIgXAotKyAgICAgICAgICAgfHwgeyB0ZXN0ICIkZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0X2xpYmludGwiID0gInllcyIgXAotKyAgICAgICAgICAgICAgICAmJiB0ZXN0ICIkUEFDS0FHRSIgIT0gZ2V0dGV4dC1ydW50aW1lIFwKLSsgICAgICAgICAgICAgICAgJiYgdGVzdCAiJFBBQ0tBR0UiICE9IGdldHRleHQtdG9vbHM7IH07IHRoZW4KLSsgICAgICAgICAgZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0PXllcwotKyAgICAgICAgZWxzZQotKyAgICAgICAgICBkbmwgUmVzZXQgdGhlIHZhbHVlcyBzZXQgYnkgc2VhcmNoaW5nIGZvciBsaWJpbnRsLgotKyAgICAgICAgICBMSUJJTlRMPQotKyAgICAgICAgICBMVExJQklOVEw9Ci0rICAgICAgICAgIElOQ0lOVEw9Ci0rICAgICAgICBmaQotKwotKyAgICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCBbCi0rICAgICAgICBpZiB0ZXN0ICIkZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0IiAhPSAieWVzIjsgdGhlbgotKyAgICAgICAgICBkbmwgR05VIGdldHRleHQgaXMgbm90IGZvdW5kIGluIHRoZSBDIGxpYnJhcnkuCi0rICAgICAgICAgIGRubCBGYWxsIGJhY2sgb24gaW5jbHVkZWQgR05VIGdldHRleHQgbGlicmFyeS4KLSsgICAgICAgICAgbmxzX2N2X3VzZV9nbnVfZ2V0dGV4dD15ZXMKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsKLSsgICAgICBpZiB0ZXN0ICIkbmxzX2N2X3VzZV9nbnVfZ2V0dGV4dCIgPSAieWVzIjsgdGhlbgotKyAgICAgICAgZG5sIE1hcmsgYWN0aW9ucyB1c2VkIHRvIGdlbmVyYXRlIEdOVSBOTFMgbGlicmFyeS4KLSsgICAgICAgIEJVSUxEX0lOQ0xVREVEX0xJQklOVEw9eWVzCi0rICAgICAgICBVU0VfSU5DTFVERURfTElCSU5UTD15ZXMKLSsgICAgICAgIExJQklOVEw9ImlmZWxzZShbJDNdLFtdLFwke3RvcF9idWlsZGRpcn0vaW50bCxbJDNdKS9saWJpbnRsLltdZ3RfbGlidG9vbF9zdWZmaXhfcHJlZml4W11hICRMSUJJQ09OViIKLSsgICAgICAgIExUTElCSU5UTD0iaWZlbHNlKFskM10sW10sXCR7dG9wX2J1aWxkZGlyfS9pbnRsLFskM10pL2xpYmludGwuW11ndF9saWJ0b29sX3N1ZmZpeF9wcmVmaXhbXWEgJExUTElCSUNPTlYiCi0rICAgICAgICBMSUJTPWBlY2hvICIgJExJQlMgIiB8IHNlZCAtZSAncy8gLWxpbnRsIC8gLycgLWUgJ3MvXiAvLycgLWUgJ3MvICQvLydgCi0rICAgICAgZmkKLSsKLSsgICAgICBpZiB0ZXN0ICIkZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0IiA9ICJ5ZXMiIFwKLSsgICAgICAgICB8fCB0ZXN0ICIkbmxzX2N2X3VzZV9nbnVfZ2V0dGV4dCIgPSAieWVzIjsgdGhlbgotKyAgICAgICAgZG5sIE1hcmsgYWN0aW9ucyB0byB1c2UgR05VIGdldHRleHQgdG9vbHMuCi0rICAgICAgICBDQVRPQkpFWFQ9LmdtbwotKyAgICAgIGZpCi0rICAgIF0pCi0rCi0rICAgIGlmIHRlc3QgIiRndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQiID0gInllcyIgXAotKyAgICAgICB8fCB0ZXN0ICIkbmxzX2N2X3VzZV9nbnVfZ2V0dGV4dCIgPSAieWVzIjsgdGhlbgotKyAgICAgIEFDX0RFRklORShFTkFCTEVfTkxTLCAxLAotKyAgICAgICAgW0RlZmluZSB0byAxIGlmIHRyYW5zbGF0aW9uIG9mIHByb2dyYW0gbWVzc2FnZXMgdG8gdGhlIHVzZXIncyBuYXRpdmUgbGFuZ3VhZ2UKLSsgICBpcyByZXF1ZXN0ZWQuXSkKLSsgICAgZWxzZQotKyAgICAgIFVTRV9OTFM9bm8KLSsgICAgZmkKLSsgIGZpCi0rCi0rICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgdG8gdXNlIE5MU10pCi0rICBBQ19NU0dfUkVTVUxUKFskVVNFX05MU10pCi0rICBpZiB0ZXN0ICIkVVNFX05MUyIgPSAieWVzIjsgdGhlbgotKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXJlIHRoZSBnZXR0ZXh0IGZ1bmN0aW9uIGNvbWVzIGZyb21dKQotKyAgICBpZiB0ZXN0ICIkZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCi0rICAgICAgaWYgdGVzdCAiJGd0X2N2X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsIiA9ICJ5ZXMiOyB0aGVuCi0rICAgICAgICBndF9zb3VyY2U9ImV4dGVybmFsIGxpYmludGwiCi0rICAgICAgZWxzZQotKyAgICAgICAgZ3Rfc291cmNlPSJsaWJjIgotKyAgICAgIGZpCi0rICAgIGVsc2UKLSsgICAgICBndF9zb3VyY2U9ImluY2x1ZGVkIGludGwgZGlyZWN0b3J5IgotKyAgICBmaQotKyAgICBBQ19NU0dfUkVTVUxUKFskZ3Rfc291cmNlXSkKLSsgIGZpCi0rCi0rICBpZiB0ZXN0ICIkVVNFX05MUyIgPSAieWVzIjsgdGhlbgotKwotKyAgICBpZiB0ZXN0ICIkZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCi0rICAgICAgaWYgdGVzdCAiJGd0X2N2X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsIiA9ICJ5ZXMiOyB0aGVuCi0rICAgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBsaW5rIHdpdGggbGliaW50bF0pCi0rICAgICAgICBBQ19NU0dfUkVTVUxUKFskTElCSU5UTF0pCi0rICAgICAgICBBQ19MSUJfQVBQRU5EVE9WQVIoW0NQUEZMQUdTXSwgWyRJTkNJTlRMXSkKLSsgICAgICBmaQotKwotKyAgICAgIGRubCBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gU29tZSBwYWNrYWdlcyBtYXkgYmUgdXNpbmcgdGhpcy4KLSsgICAgICBBQ19ERUZJTkUoSEFWRV9HRVRURVhULCAxLAotKyAgICAgICBbRGVmaW5lIGlmIHRoZSBHTlUgZ2V0dGV4dCgpIGZ1bmN0aW9uIGlzIGFscmVhZHkgcHJlc2VudCBvciBwcmVpbnN0YWxsZWQuXSkKLSsgICAgICBBQ19ERUZJTkUoSEFWRV9EQ0dFVFRFWFQsIDEsCi0rICAgICAgIFtEZWZpbmUgaWYgdGhlIEdOVSBkY2dldHRleHQoKSBmdW5jdGlvbiBpcyBhbHJlYWR5IHByZXNlbnQgb3IgcHJlaW5zdGFsbGVkLl0pCi0rICAgIGZpCi0rCi0rICAgIGRubCBXZSBuZWVkIHRvIHByb2Nlc3MgdGhlIHBvLyBkaXJlY3RvcnkuCi0rICAgIFBPU1VCPXBvCi0rICBmaQotKwotKyAgaWZlbHNlKGd0X2luY2x1ZGVkX2ludGwsIHllcywgWwotKyAgICBkbmwgSWYgdGhpcyBpcyB1c2VkIGluIEdOVSBnZXR0ZXh0IHdlIGhhdmUgdG8gc2V0IEJVSUxEX0lOQ0xVREVEX0xJQklOVEwKLSsgICAgZG5sIHRvICd5ZXMnIGJlY2F1c2Ugc29tZSBvZiB0aGUgdGVzdHN1aXRlIHJlcXVpcmVzIGl0LgotKyAgICBpZiB0ZXN0ICIkUEFDS0FHRSIgPSBnZXR0ZXh0LXJ1bnRpbWUgfHwgdGVzdCAiJFBBQ0tBR0UiID0gZ2V0dGV4dC10b29sczsgdGhlbgotKyAgICAgIEJVSUxEX0lOQ0xVREVEX0xJQklOVEw9eWVzCi0rICAgIGZpCi0rCi0rICAgIGRubCBNYWtlIGFsbCB2YXJpYWJsZXMgd2UgdXNlIGtub3duIHRvIGF1dG9jb25mLgotKyAgICBBQ19TVUJTVChCVUlMRF9JTkNMVURFRF9MSUJJTlRMKQotKyAgICBBQ19TVUJTVChVU0VfSU5DTFVERURfTElCSU5UTCkKLSsgICAgQUNfU1VCU1QoQ0FUT0JKRVhUKQotKwotKyAgICBkbmwgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFNvbWUgY29uZmlndXJlLmlucyBtYXkgYmUgdXNpbmcgdGhpcy4KLSsgICAgbmxzX2N2X2hlYWRlcl9pbnRsPQotKyAgICBubHNfY3ZfaGVhZGVyX2xpYmd0PQotKwotKyAgICBkbmwgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFNvbWUgTWFrZWZpbGVzIG1heSBiZSB1c2luZyB0aGlzLgotKyAgICBEQVRBRElSTkFNRT1zaGFyZQotKyAgICBBQ19TVUJTVChEQVRBRElSTkFNRSkKLSsKLSsgICAgZG5sIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBTb21lIE1ha2VmaWxlcyBtYXkgYmUgdXNpbmcgdGhpcy4KLSsgICAgSU5TVE9CSkVYVD0ubW8KLSsgICAgQUNfU1VCU1QoSU5TVE9CSkVYVCkKLSsKLSsgICAgZG5sIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBTb21lIE1ha2VmaWxlcyBtYXkgYmUgdXNpbmcgdGhpcy4KLSsgICAgR0VOQ0FUPWdlbmNhdAotKyAgICBBQ19TVUJTVChHRU5DQVQpCi0rCi0rICAgIGRubCBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gU29tZSBNYWtlZmlsZXMgbWF5IGJlIHVzaW5nIHRoaXMuCi0rICAgIGlmIHRlc3QgIiRVU0VfSU5DTFVERURfTElCSU5UTCIgPSB5ZXM7IHRoZW4KLSsgICAgICBJTlRMT0JKUz0iXCQoR0VUVE9CSlMpIgotKyAgICBmaQotKyAgICBBQ19TVUJTVChJTlRMT0JKUykKLSsKLSsgICAgZG5sIEVuYWJsZSBsaWJ0b29sIHN1cHBvcnQgaWYgdGhlIHN1cnJvdW5kaW5nIHBhY2thZ2Ugd2lzaGVzIGl0LgotKyAgICBJTlRMX0xJQlRPT0xfU1VGRklYX1BSRUZJWD1ndF9saWJ0b29sX3N1ZmZpeF9wcmVmaXgKLSsgICAgQUNfU1VCU1QoSU5UTF9MSUJUT09MX1NVRkZJWF9QUkVGSVgpCi0rICBdKQotKwotKyAgZG5sIEZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LiBTb21lIE1ha2VmaWxlcyBtYXkgYmUgdXNpbmcgdGhpcy4KLSsgIElOVExMSUJTPSIkTElCSU5UTCIKLSsgIEFDX1NVQlNUKElOVExMSUJTKQotKwotKyAgZG5sIE1ha2UgYWxsIGRvY3VtZW50ZWQgdmFyaWFibGVzIGtub3duIHRvIGF1dG9jb25mLgotKyAgQUNfU1VCU1QoTElCSU5UTCkKLSsgIEFDX1NVQlNUKExUTElCSU5UTCkKLSsgIEFDX1NVQlNUKFBPU1VCKQotK10pCi0rCi0rCi0rZG5sIENoZWNrcyBmb3IgYWxsIHByZXJlcXVpc2l0ZXMgb2YgdGhlIGludGwgc3ViZGlyZWN0b3J5LAotK2RubCBleGNlcHQgZm9yIElOVExfTElCVE9PTF9TVUZGSVhfUFJFRklYIChhbmQgcG9zc2libHkgTElCVE9PTCksIElOVExPQkpTLAotK2RubCAgICAgICAgICAgIFVTRV9JTkNMVURFRF9MSUJJTlRMLCBCVUlMRF9JTkNMVURFRF9MSUJJTlRMLgotK0FDX0RFRlVOKFtBTV9JTlRMX1NVQkRJUl0sCi0rWwotKyAgQUNfUkVRVUlSRShbQUNfUFJPR19JTlNUQUxMXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FNX01LSU5TVEFMTERJUlNdKWRubAotKyAgQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pZG5sCi0rICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pZG5sCi0rICBBQ19SRVFVSVJFKFtBQ19QUk9HX1JBTkxJQl0pZG5sCi0rICBBQ19SRVFVSVJFKFtBQ19JU0NfUE9TSVhdKWRubAotKyAgQUNfUkVRVUlSRShbQUNfSEVBREVSX1NURENdKWRubAotKyAgQUNfUkVRVUlSRShbQUNfQ19DT05TVF0pZG5sCi0rICBBQ19SRVFVSVJFKFtiaF9DX1NJR05FRF0pZG5sCi0rICBBQ19SRVFVSVJFKFtBQ19DX0lOTElORV0pZG5sCi0rICBBQ19SRVFVSVJFKFtBQ19UWVBFX09GRl9UXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FDX1RZUEVfU0laRV9UXSlkbmwKLSsgIEFDX1JFUVVJUkUoW2ptX0FDX1RZUEVfTE9OR19MT05HXSlkbmwKLSsgIEFDX1JFUVVJUkUoW2d0X1RZUEVfTE9OR0RPVUJMRV0pZG5sCi0rICBBQ19SRVFVSVJFKFtndF9UWVBFX1dDSEFSX1RdKWRubAotKyAgQUNfUkVRVUlSRShbZ3RfVFlQRV9XSU5UX1RdKWRubAotKyAgQUNfUkVRVUlSRShbam1fQUNfSEVBREVSX0lOVFRZUEVTX0hdKQotKyAgQUNfUkVRVUlSRShbam1fQUNfSEVBREVSX1NURElOVF9IXSkKLSsgIEFDX1JFUVVJUkUoW2d0X1RZUEVfSU5UTUFYX1RdKQotKyAgQUNfUkVRVUlSRShbZ3RfUFJJTlRGX1BPU0lYXSkKLSsgIEFDX1JFUVVJUkUoW0FDX0ZVTkNfQUxMT0NBXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FDX0ZVTkNfTU1BUF0pZG5sCi0rICBBQ19SRVFVSVJFKFtqbV9HTElCQzIxXSlkbmwKLSsgIEFDX1JFUVVJUkUoW2d0X0lOVERJVjBdKWRubAotKyAgQUNfUkVRVUlSRShbam1fQUNfVFlQRV9VSU5UTUFYX1RdKWRubAotKyAgQUNfUkVRVUlSRShbZ3RfSEVBREVSX0lOVFRZUEVTX0hdKWRubAotKyAgQUNfUkVRVUlSRShbZ3RfSU5UVFlQRVNfUFJJXSlkbmwKLSsgIEFDX1JFUVVJUkUoW2dsX1hTSVpFXSlkbmwKLSsKLSsgIEFDX0NIRUNLX1RZUEUoW3B0cmRpZmZfdF0sICwKLSsgICAgW0FDX0RFRklORShbcHRyZGlmZl90XSwgW2xvbmddLAotKyAgICAgICBbRGVmaW5lIGFzIHRoZSB0eXBlIG9mIHRoZSByZXN1bHQgb2Ygc3VidHJhY3RpbmcgdHdvIHBvaW50ZXJzLCBpZiB0aGUgc3lzdGVtIGRvZXNuJ3QgZGVmaW5lIGl0Ll0pCi0rICAgIF0pCi0rICBBQ19DSEVDS19IRUFERVJTKFthcmd6LmggbGltaXRzLmggbG9jYWxlLmggbmxfdHlwZXMuaCBtYWxsb2MuaCBzdGRkZWYuaCBcCi0rc3RkbGliLmggc3RyaW5nLmggdW5pc3RkLmggc3lzL3BhcmFtLmhdKQotKyAgQUNfQ0hFQ0tfRlVOQ1MoW2FzcHJpbnRmIGZ3cHJpbnRmIGdldGN3ZCBnZXRlZ2lkIGdldGV1aWQgZ2V0Z2lkIGdldHVpZCBcCi0rbWVtcGNweSBtdW5tYXAgcHV0ZW52IHNldGVudiBzZXRsb2NhbGUgc25wcmludGYgc3RwY3B5IHN0cmNhc2VjbXAgc3RyZHVwIFwKLStzdHJ0b3VsIHRzZWFyY2ggd2NzbGVuIF9fYXJnel9jb3VudCBfX2FyZ3pfc3RyaW5naWZ5IF9fYXJnel9uZXh0IFwKLStfX2ZzZXRsb2NraW5nXSkKLSsKLSsgIGRubCBVc2UgdGhlIF9zbnByaW50ZiBmdW5jdGlvbiBvbmx5IGlmIGl0IGlzIGRlY2xhcmVkIChiZWNhdXNlIG9uIE5ldEJTRCBpdAotKyAgZG5sIGlzIGRlZmluZWQgYXMgYSB3ZWFrIGFsaWFzIG9mIHNucHJpbnRmOyB3ZSBwcmVmZXIgdG8gdXNlIHRoZSBsYXR0ZXIpLgotKyAgZ3RfQ0hFQ0tfREVDTChfc25wcmludGYsIFsjaW5jbHVkZSA8c3RkaW8uaD5dKQotKyAgZ3RfQ0hFQ0tfREVDTChfc253cHJpbnRmLCBbI2luY2x1ZGUgPHN0ZGlvLmg+XSkKLSsKLSsgIGRubCBVc2UgdGhlICpfdW5sb2NrZWQgZnVuY3Rpb25zIG9ubHkgaWYgdGhleSBhcmUgZGVjbGFyZWQuCi0rICBkbmwgKGJlY2F1c2Ugc29tZSBvZiB0aGVtIHdlcmUgZGVmaW5lZCB3aXRob3V0IGJlaW5nIGRlY2xhcmVkIGluIFNvbGFyaXMKLSsgIGRubCAyLjUuMSBidXQgd2VyZSByZW1vdmVkIGluIFNvbGFyaXMgMi42LCB3aGVyZWFzIHdlIHdhbnQgYmluYXJpZXMgYnVpbHQKLSsgIGRubCBvbiBTb2xhcmlzIDIuNS4xIHRvIHJ1biBvbiBTb2xhcmlzIDIuNikuCi0rICBkbmwgRG9uJ3QgdXNlIEFDX0NIRUNLX0RFQ0xTIGJlY2F1c2UgaXQgaXNuJ3Qgc3VwcG9ydGVkIGluIGF1dG9jb25mLTIuMTMuCi0rICBndF9DSEVDS19ERUNMKGZlb2ZfdW5sb2NrZWQsIFsjaW5jbHVkZSA8c3RkaW8uaD5dKQotKyAgZ3RfQ0hFQ0tfREVDTChmZ2V0c191bmxvY2tlZCwgWyNpbmNsdWRlIDxzdGRpby5oPl0pCi0rICBndF9DSEVDS19ERUNMKGdldGNfdW5sb2NrZWQsIFsjaW5jbHVkZSA8c3RkaW8uaD5dKQotKwotKyAgY2FzZSAkZ3RfY3ZfZnVuY19wcmludGZfcG9zaXggaW4KLSsgICAgKnllcykgSEFWRV9QT1NJWF9QUklOVEY9MSA7OwotKyAgICAqKSBIQVZFX1BPU0lYX1BSSU5URj0wIDs7Ci0rICBlc2FjCi0rICBBQ19TVUJTVChbSEFWRV9QT1NJWF9QUklOVEZdKQotKyAgaWYgdGVzdCAiJGFjX2N2X2Z1bmNfYXNwcmludGYiID0geWVzOyB0aGVuCi0rICAgIEhBVkVfQVNQUklOVEY9MQotKyAgZWxzZQotKyAgICBIQVZFX0FTUFJJTlRGPTAKLSsgIGZpCi0rICBBQ19TVUJTVChbSEFWRV9BU1BSSU5URl0pCi0rICBpZiB0ZXN0ICIkYWNfY3ZfZnVuY19zbnByaW50ZiIgPSB5ZXM7IHRoZW4KLSsgICAgSEFWRV9TTlBSSU5URj0xCi0rICBlbHNlCi0rICAgIEhBVkVfU05QUklOVEY9MAotKyAgZmkKLSsgIEFDX1NVQlNUKFtIQVZFX1NOUFJJTlRGXSkKLSsgIGlmIHRlc3QgIiRhY19jdl9mdW5jX3dwcmludGYiID0geWVzOyB0aGVuCi0rICAgIEhBVkVfV1BSSU5URj0xCi0rICBlbHNlCi0rICAgIEhBVkVfV1BSSU5URj0wCi0rICBmaQotKyAgQUNfU1VCU1QoW0hBVkVfV1BSSU5URl0pCi0rCi0rICBBTV9JQ09OVgotKyAgQU1fTEFOR0lORk9fQ09ERVNFVAotKyAgaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX2xvY2FsZV9oID0geWVzOyB0aGVuCi0rICAgIEFNX0xDX01FU1NBR0VTCi0rICBmaQotKwotKyAgZG5sIGludGwvcGx1cmFsLmMgaXMgZ2VuZXJhdGVkIGZyb20gaW50bC9wbHVyYWwueS4gSXQgcmVxdWlyZXMgYmlzb24sCi0rICBkbmwgYmVjYXVzZSBwbHVyYWwueSB1c2VzIGJpc29uIHNwZWNpZmljIGZlYXR1cmVzLiBJdCByZXF1aXJlcyBhdCBsZWFzdAotKyAgZG5sIGJpc29uLTEuMjYgYmVjYXVzZSBlYXJsaWVyIHZlcnNpb25zIGdlbmVyYXRlIGEgcGx1cmFsLmMgdGhhdCBkb2Vzbid0Ci0rICBkbmwgY29tcGlsZS4KLSsgIGRubCBiaXNvbiBpcyBvbmx5IG5lZWRlZCBmb3IgdGhlIG1haW50YWluZXIgKHdobyB0b3VjaGVzIHBsdXJhbC55KS4gQnV0IGluCi0rICBkbmwgb3JkZXIgdG8gYXZvaWQgc2VwYXJhdGUgTWFrZWZpbGVzIG9yIC0tZW5hYmxlLW1haW50YWluZXItbW9kZSwgd2UgcHV0Ci0rICBkbmwgdGhlIHJ1bGUgaW4gZ2VuZXJhbCBNYWtlZmlsZS4gTm93LCBzb21lIHBlb3BsZSBjYXJlbGVzc2x5IHRvdWNoIHRoZQotKyAgZG5sIGZpbGVzIG9yIGhhdmUgYSBicm9rZW4gIm1ha2UiIHByb2dyYW0sIGhlbmNlIHRoZSBwbHVyYWwuYyBydWxlIHdpbGwKLSsgIGRubCBzb21ldGltZXMgZmlyZS4gVG8gYXZvaWQgYW4gZXJyb3IsIGRlZmluZXMgQklTT04gdG8gIjoiIGlmIGl0IGlzIG5vdAotKyAgZG5sIHByZXNlbnQgb3IgdG9vIG9sZC4KLSsgIEFDX0NIRUNLX1BST0dTKFtJTlRMQklTT05dLCBbYmlzb25dKQotKyAgaWYgdGVzdCAteiAiJElOVExCSVNPTiI7IHRoZW4KLSsgICAgYWNfdmVyY19mYWlsPXllcwotKyAgZWxzZQotKyAgICBkbmwgRm91bmQgaXQsIG5vdyBjaGVjayB0aGUgdmVyc2lvbi4KLSsgICAgQUNfTVNHX0NIRUNLSU5HKFt2ZXJzaW9uIG9mIGJpc29uXSkKLStjaGFuZ2VxdW90ZSg8PCw+PilkbmwKLSsgICAgYWNfcHJvZ192ZXJzaW9uPWAkSU5UTEJJU09OIC0tdmVyc2lvbiAyPiYxIHwgc2VkIC1uICdzL14uKkdOVSBCaXNvbi4qIFwoWzAtOV0qXC5bMC05Ll0qXCkuKiQvXDEvcCdgCi0rICAgIGNhc2UgJGFjX3Byb2dfdmVyc2lvbiBpbgotKyAgICAgICcnKSBhY19wcm9nX3ZlcnNpb249InYuID8uPz8sIGJhZCI7IGFjX3ZlcmNfZmFpbD15ZXM7OwotKyAgICAgIDEuMls2LTldKiB8IDEuWzMtOV1bMC05XSogfCBbMi05XS4qKQotK2NoYW5nZXF1b3RlKFssXSlkbmwKLSsgICAgICAgICBhY19wcm9nX3ZlcnNpb249IiRhY19wcm9nX3ZlcnNpb24sIG9rIjsgYWNfdmVyY19mYWlsPW5vOzsKLSsgICAgICAqKSBhY19wcm9nX3ZlcnNpb249IiRhY19wcm9nX3ZlcnNpb24sIGJhZCI7IGFjX3ZlcmNfZmFpbD15ZXM7OwotKyAgICBlc2FjCi0rICAgIEFDX01TR19SRVNVTFQoWyRhY19wcm9nX3ZlcnNpb25dKQotKyAgZmkKLSsgIGlmIHRlc3QgJGFjX3ZlcmNfZmFpbCA9IHllczsgdGhlbgotKyAgICBJTlRMQklTT049OgotKyAgZmkKLStdKQotKwotKwotK2RubCBndF9DSEVDS19ERUNMKEZVTkMsIElOQ0xVREVTKQotK2RubCBDaGVjayB3aGV0aGVyIGEgZnVuY3Rpb24gaXMgZGVjbGFyZWQuCi0rQUNfREVGVU4oW2d0X0NIRUNLX0RFQ0xdLAotK1sKLSsgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyICQxIGlzIGRlY2xhcmVkXSwgYWNfY3ZfaGF2ZV9kZWNsXyQxLAotKyAgICBbQUNfVFJZX0NPTVBJTEUoWyQyXSwgWwotKyNpZm5kZWYgJDEKLSsgIGNoYXIgKnAgPSAoY2hhciAqKSAkMTsKLSsjZW5kaWYKLStdLCBhY19jdl9oYXZlX2RlY2xfJDE9eWVzLCBhY19jdl9oYXZlX2RlY2xfJDE9bm8pXSkKLSsgIGlmIHRlc3QgJGFjX2N2X2hhdmVfZGVjbF8kMSA9IHllczsgdGhlbgotKyAgICBndF92YWx1ZT0xCi0rICBlbHNlCi0rICAgIGd0X3ZhbHVlPTAKLSsgIGZpCi0rICBBQ19ERUZJTkVfVU5RVU9URUQoW0hBVkVfREVDTF9ddHJhbnNsaXQoJDEsIFthLXpdLCBbQS1aXSksIFskZ3RfdmFsdWVdLAotKyAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIGRlY2xhcmF0aW9uIG9mIGAkMScsIGFuZCB0byAwIGlmIHlvdSBkb24ndC5dKQotK10pCi0rCi0rCi0rZG5sIFVzYWdlOiBBTV9HTlVfR0VUVEVYVF9WRVJTSU9OKFtnZXR0ZXh0LXZlcnNpb25dKQotK0FDX0RFRlVOKFtBTV9HTlVfR0VUVEVYVF9WRVJTSU9OXSwgW10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2dsaWJjMjEubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2dsaWJjMjEubTQJMjAwNC0wOS0xMiAxNDo0MDozNC44MzM2NzU0MzIgLTA0MDAKLUBAIC0wLDAgKzEsMzIgQEAKLSsjIGdsaWJjMjEubTQgc2VyaWFsIDIgKGZpbGV1dGlscy00LjEuMywgZ2V0dGV4dC0wLjEwLjQwKQotK2RubCBDb3B5cmlnaHQgKEMpIDIwMDAtMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotKyMgVGVzdCBmb3IgdGhlIEdOVSBDIExpYnJhcnksIHZlcnNpb24gMi4xIG9yIG5ld2VyLgotKyMgRnJvbSBCcnVubyBIYWlibGUuCi0rCi0rQUNfREVGVU4oW2ptX0dMSUJDMjFdLAotKyAgWwotKyAgICBBQ19DQUNIRV9DSEVDSyh3aGV0aGVyIHdlIGFyZSB1c2luZyB0aGUgR05VIEMgTGlicmFyeSAyLjEgb3IgbmV3ZXIsCi0rICAgICAgYWNfY3ZfZ251X2xpYnJhcnlfMl8xLAotKyAgICAgIFtBQ19FR1JFUF9DUFAoW0x1Y2t5IEdOVSB1c2VyXSwKLSsJWwotKyNpbmNsdWRlIDxmZWF0dXJlcy5oPgotKyNpZmRlZiBfX0dOVV9MSUJSQVJZX18KLSsgI2lmIChfX0dMSUJDX18gPT0gMiAmJiBfX0dMSUJDX01JTk9SX18gPj0gMSkgfHwgKF9fR0xJQkNfXyA+IDIpCi0rICBMdWNreSBHTlUgdXNlcgotKyAjZW5kaWYKLSsjZW5kaWYKLSsJXSwKLSsJYWNfY3ZfZ251X2xpYnJhcnlfMl8xPXllcywKLSsJYWNfY3ZfZ251X2xpYnJhcnlfMl8xPW5vKQotKyAgICAgIF0KLSsgICAgKQotKyAgICBBQ19TVUJTVChHTElCQzIxKQotKyAgICBHTElCQzIxPSIkYWNfY3ZfZ251X2xpYnJhcnlfMl8xIgotKyAgXQotKykKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvaWNvbnYubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2ljb252Lm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuODM5Njc0NTIwIC0wNDAwCi1AQCAtMCwwICsxLDEwMyBAQAotKyMgaWNvbnYubTQgc2VyaWFsIEFNNCAoZ2V0dGV4dC0wLjExLjMpCi0rZG5sIENvcHlyaWdodCAoQykgMjAwMC0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotKwotK0FDX0RFRlVOKFtBTV9JQ09OVl9MSU5LRkxBR1NfQk9EWV0sCi0rWwotKyAgZG5sIFByZXJlcXVpc2l0ZXMgb2YgQUNfTElCX0xJTktGTEFHU19CT0RZLgotKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfUFJFRklYXSkKLSsgIEFDX1JFUVVJUkUoW0FDX0xJQl9SUEFUSF0pCi0rCi0rICBkbmwgU2VhcmNoIGZvciBsaWJpY29udiBhbmQgZGVmaW5lIExJQklDT05WLCBMVExJQklDT05WIGFuZCBJTkNJQ09OVgotKyAgZG5sIGFjY29yZGluZ2x5LgotKyAgQUNfTElCX0xJTktGTEFHU19CT0RZKFtpY29udl0pCi0rXSkKLSsKLStBQ19ERUZVTihbQU1fSUNPTlZfTElOS10sCi0rWwotKyAgZG5sIFNvbWUgc3lzdGVtcyBoYXZlIGljb252IGluIGxpYmMsIHNvbWUgaGF2ZSBpdCBpbiBsaWJpY29udiAoT1NGLzEgYW5kCi0rICBkbmwgdGhvc2Ugd2l0aCB0aGUgc3RhbmRhbG9uZSBwb3J0YWJsZSBHTlUgbGliaWNvbnYgaW5zdGFsbGVkKS4KLSsKLSsgIGRubCBTZWFyY2ggZm9yIGxpYmljb252IGFuZCBkZWZpbmUgTElCSUNPTlYsIExUTElCSUNPTlYgYW5kIElOQ0lDT05WCi0rICBkbmwgYWNjb3JkaW5nbHkuCi0rICBBQ19SRVFVSVJFKFtBTV9JQ09OVl9MSU5LRkxBR1NfQk9EWV0pCi0rCi0rICBkbmwgQWRkICRJTkNJQ09OViB0byBDUFBGTEFHUyBiZWZvcmUgcGVyZm9ybWluZyB0aGUgZm9sbG93aW5nIGNoZWNrcywKLSsgIGRubCBiZWNhdXNlIGlmIHRoZSB1c2VyIGhhcyBpbnN0YWxsZWQgbGliaWNvbnYgYW5kIG5vdCBkaXNhYmxlZCBpdHMgdXNlCi0rICBkbmwgdmlhIC0td2l0aG91dC1saWJpY29udi1wcmVmaXgsIGhlIHdhbnRzIHRvIHVzZSBpdC4gVGhlIGZpcnN0Ci0rICBkbmwgQUNfVFJZX0xJTksgd2lsbCB0aGVuIGZhaWwsIHRoZSBzZWNvbmQgQUNfVFJZX0xJTksgd2lsbCBzdWNjZWVkLgotKyAgYW1fc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgotKyAgQUNfTElCX0FQUEVORFRPVkFSKFtDUFBGTEFHU10sIFskSU5DSUNPTlZdKQotKwotKyAgQUNfQ0FDSEVfQ0hFQ0soZm9yIGljb252LCBhbV9jdl9mdW5jX2ljb252LCBbCi0rICAgIGFtX2N2X2Z1bmNfaWNvbnY9Im5vLCBjb25zaWRlciBpbnN0YWxsaW5nIEdOVSBsaWJpY29udiIKLSsgICAgYW1fY3ZfbGliX2ljb252PW5vCi0rICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPGljb252Lmg+XSwKLSsgICAgICBbaWNvbnZfdCBjZCA9IGljb252X29wZW4oIiIsIiIpOwotKyAgICAgICBpY29udihjZCxOVUxMLE5VTEwsTlVMTCxOVUxMKTsKLSsgICAgICAgaWNvbnZfY2xvc2UoY2QpO10sCi0rICAgICAgYW1fY3ZfZnVuY19pY29udj15ZXMpCi0rICAgIGlmIHRlc3QgIiRhbV9jdl9mdW5jX2ljb252IiAhPSB5ZXM7IHRoZW4KLSsgICAgICBhbV9zYXZlX0xJQlM9IiRMSUJTIgotKyAgICAgIExJQlM9IiRMSUJTICRMSUJJQ09OViIKLSsgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxpY29udi5oPl0sCi0rICAgICAgICBbaWNvbnZfdCBjZCA9IGljb252X29wZW4oIiIsIiIpOwotKyAgICAgICAgIGljb252KGNkLE5VTEwsTlVMTCxOVUxMLE5VTEwpOwotKyAgICAgICAgIGljb252X2Nsb3NlKGNkKTtdLAotKyAgICAgICAgYW1fY3ZfbGliX2ljb252PXllcwotKyAgICAgICAgYW1fY3ZfZnVuY19pY29udj15ZXMpCi0rICAgICAgTElCUz0iJGFtX3NhdmVfTElCUyIKLSsgICAgZmkKLSsgIF0pCi0rICBpZiB0ZXN0ICIkYW1fY3ZfZnVuY19pY29udiIgPSB5ZXM7IHRoZW4KLSsgICAgQUNfREVGSU5FKEhBVkVfSUNPTlYsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlIGljb252KCkgZnVuY3Rpb24uXSkKLSsgIGZpCi0rICBpZiB0ZXN0ICIkYW1fY3ZfbGliX2ljb252IiA9IHllczsgdGhlbgotKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBsaW5rIHdpdGggbGliaWNvbnZdKQotKyAgICBBQ19NU0dfUkVTVUxUKFskTElCSUNPTlZdKQotKyAgZWxzZQotKyAgICBkbmwgSWYgJExJQklDT05WIGRpZG4ndCBsZWFkIHRvIGEgdXNhYmxlIGxpYnJhcnksIHdlIGRvbid0IG5lZWQgJElOQ0lDT05WCi0rICAgIGRubCBlaXRoZXIuCi0rICAgIENQUEZMQUdTPSIkYW1fc2F2ZV9DUFBGTEFHUyIKLSsgICAgTElCSUNPTlY9Ci0rICAgIExUTElCSUNPTlY9Ci0rICBmaQotKyAgQUNfU1VCU1QoTElCSUNPTlYpCi0rICBBQ19TVUJTVChMVExJQklDT05WKQotK10pCi0rCi0rQUNfREVGVU4oW0FNX0lDT05WXSwKLStbCi0rICBBTV9JQ09OVl9MSU5LCi0rICBpZiB0ZXN0ICIkYW1fY3ZfZnVuY19pY29udiIgPSB5ZXM7IHRoZW4KLSsgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgaWNvbnYgZGVjbGFyYXRpb25dKQotKyAgICBBQ19DQUNIRV9WQUwoYW1fY3ZfcHJvdG9faWNvbnYsIFsKLSsgICAgICBBQ19UUllfQ09NUElMRShbCi0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxpY29udi5oPgotK2V4dGVybgotKyNpZmRlZiBfX2NwbHVzcGx1cwotKyJDIgotKyNlbmRpZgotKyNpZiBkZWZpbmVkKF9fU1REQ19fKSB8fCBkZWZpbmVkKF9fY3BsdXNwbHVzKQotK3NpemVfdCBpY29udiAoaWNvbnZfdCBjZCwgY2hhciAqICppbmJ1Ziwgc2l6ZV90ICppbmJ5dGVzbGVmdCwgY2hhciAqICpvdXRidWYsIHNpemVfdCAqb3V0Ynl0ZXNsZWZ0KTsKLSsjZWxzZQotK3NpemVfdCBpY29udigpOwotKyNlbmRpZgotK10sIFtdLCBhbV9jdl9wcm90b19pY29udl9hcmcxPSIiLCBhbV9jdl9wcm90b19pY29udl9hcmcxPSJjb25zdCIpCi0rICAgICAgYW1fY3ZfcHJvdG9faWNvbnY9ImV4dGVybiBzaXplX3QgaWNvbnYgKGljb252X3QgY2QsICRhbV9jdl9wcm90b19pY29udl9hcmcxIGNoYXIgKiAqaW5idWYsIHNpemVfdCAqaW5ieXRlc2xlZnQsIGNoYXIgKiAqb3V0YnVmLCBzaXplX3QgKm91dGJ5dGVzbGVmdCk7Il0pCi0rICAgIGFtX2N2X3Byb3RvX2ljb252PWBlY2hvICJbJF1hbV9jdl9wcm90b19pY29udiIgfCB0ciAtcyAnICcgfCBzZWQgLWUgJ3MvKCAvKC8nYAotKyAgICBBQ19NU0dfUkVTVUxUKFskXXthY190Oi0KLSsgICAgICAgICB9WyRdYW1fY3ZfcHJvdG9faWNvbnYpCi0rICAgIEFDX0RFRklORV9VTlFVT1RFRChJQ09OVl9DT05TVCwgJGFtX2N2X3Byb3RvX2ljb252X2FyZzEsCi0rICAgICAgW0RlZmluZSBhcyBjb25zdCBpZiB0aGUgZGVjbGFyYXRpb24gb2YgaWNvbnYoKSBuZWVkcyBjb25zdC5dKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9pbnRkaXYwLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9pbnRkaXYwLm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuODQ1NjczNjA4IC0wNDAwCi1AQCAtMCwwICsxLDcyIEBACi0rIyBpbnRkaXYwLm00IHNlcmlhbCAxIChnZXR0ZXh0LTAuMTEuMykKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotKwotK0FDX0RFRlVOKFtndF9JTlRESVYwXSwKLStbCi0rICBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKLSsKLSsgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIGludGVnZXIgZGl2aXNpb24gYnkgemVybyByYWlzZXMgU0lHRlBFXSwKLSsgICAgZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGUsCi0rICAgIFsKLSsgICAgICBBQ19UUllfUlVOKFsKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHNpZ25hbC5oPgotKwotK3N0YXRpYyB2b2lkCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rc2lnZnBlX2hhbmRsZXIgKGludCBzaWcpCi0rI2Vsc2UKLStzaWdmcGVfaGFuZGxlciAoc2lnKSBpbnQgc2lnOwotKyNlbmRpZgotK3sKLSsgIC8qIEV4aXQgd2l0aCBjb2RlIDAgaWYgU0lHRlBFLCB3aXRoIGNvZGUgMSBpZiBhbnkgb3RoZXIgc2lnbmFsLiAgKi8KLSsgIGV4aXQgKHNpZyAhPSBTSUdGUEUpOwotK30KLSsKLStpbnQgeCA9IDE7Ci0raW50IHkgPSAwOwotK2ludCB6OwotK2ludCBuYW47Ci0rCi0raW50IG1haW4gKCkKLSt7Ci0rICBzaWduYWwgKFNJR0ZQRSwgc2lnZnBlX2hhbmRsZXIpOwotKy8qIElSSVggYW5kIEFJWCAod2hlbiAieGxjIC1xY2hlY2siIGlzIHVzZWQpIHlpZWxkIHNpZ25hbCBTSUdUUkFQLiAgKi8KLSsjaWYgKGRlZmluZWQgKF9fc2dpKSB8fCBkZWZpbmVkIChfQUlYKSkgJiYgZGVmaW5lZCAoU0lHVFJBUCkKLSsgIHNpZ25hbCAoU0lHVFJBUCwgc2lnZnBlX2hhbmRsZXIpOwotKyNlbmRpZgotKy8qIExpbnV4L1NQQVJDIHlpZWxkcyBzaWduYWwgU0lHSUxMLiAgKi8KLSsjaWYgZGVmaW5lZCAoX19zcGFyY19fKSAmJiBkZWZpbmVkIChfX2xpbnV4X18pCi0rICBzaWduYWwgKFNJR0lMTCwgc2lnZnBlX2hhbmRsZXIpOwotKyNlbmRpZgotKwotKyAgeiA9IHggLyB5OwotKyAgbmFuID0geSAvIHk7Ci0rICBleGl0ICgxKTsKLSt9Ci0rXSwgZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGU9eWVzLCBndF9jdl9pbnRfZGl2Ynl6ZXJvX3NpZ2ZwZT1ubywKLSsgICAgICAgIFsKLSsgICAgICAgICAgIyBHdWVzcyBiYXNlZCBvbiB0aGUgQ1BVLgotKyAgICAgICAgICBjYXNlICIkaG9zdF9jcHUiIGluCi0rICAgICAgICAgICAgYWxwaGEqIHwgaVszNDU2N104NiB8IG02OGsgfCBzMzkwKikKLSsgICAgICAgICAgICAgIGd0X2N2X2ludF9kaXZieXplcm9fc2lnZnBlPSJndWVzc2luZyB5ZXMiOzsKLSsgICAgICAgICAgICAqKQotKyAgICAgICAgICAgICAgZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGU9Imd1ZXNzaW5nIG5vIjs7Ci0rICAgICAgICAgIGVzYWMKLSsgICAgICAgIF0pCi0rICAgIF0pCi0rICBjYXNlICIkZ3RfY3ZfaW50X2RpdmJ5emVyb19zaWdmcGUiIGluCi0rICAgICp5ZXMpIHZhbHVlPTE7OwotKyAgICAqKSB2YWx1ZT0wOzsKLSsgIGVzYWMKLSsgIEFDX0RFRklORV9VTlFVT1RFRChJTlRESVYwX1JBSVNFU19TSUdGUEUsICR2YWx1ZSwKLSsgICAgW0RlZmluZSBpZiBpbnRlZ2VyIGRpdmlzaW9uIGJ5IHplcm8gcmFpc2VzIHNpZ25hbCBTSUdGUEUuXSkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9pbnRtYXgubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2ludG1heC5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0Ljg1NTY3MjA4OCAtMDQwMAotQEAgLTAsMCArMSwzMiBAQAotKyMgaW50bWF4Lm00IHNlcmlhbCAxIChnZXR0ZXh0LTAuMTIpCi0rZG5sIENvcHlyaWdodCAoQykgMjAwMi0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotK2RubCBUZXN0IHdoZXRoZXIgdGhlIHN5c3RlbSBoYXMgdGhlICdpbnRtYXhfdCcgdHlwZSwgYnV0IGRvbid0IGF0dGVtcHQgdG8KLStkbmwgZmluZCBhIHJlcGxhY2VtZW50IGlmIGl0IGlzIGxhY2tpbmcuCi0rCi0rQUNfREVGVU4oW2d0X1RZUEVfSU5UTUFYX1RdLAotK1sKLSsgIEFDX1JFUVVJUkUoW2ptX0FDX0hFQURFUl9JTlRUWVBFU19IXSkKLSsgIEFDX1JFUVVJUkUoW2ptX0FDX0hFQURFUl9TVERJTlRfSF0pCi0rICBBQ19DQUNIRV9DSEVDSyhmb3IgaW50bWF4X3QsIGd0X2N2X2NfaW50bWF4X3QsCi0rICAgIFtBQ19UUllfQ09NUElMRShbCi0rI2luY2x1ZGUgPHN0ZGRlZi5oPiAKLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2lmIEhBVkVfU1RESU5UX0hfV0lUSF9VSU5UTUFYCi0rI2luY2x1ZGUgPHN0ZGludC5oPgotKyNlbmRpZgotKyNpZiBIQVZFX0lOVFRZUEVTX0hfV0lUSF9VSU5UTUFYCi0rI2luY2x1ZGUgPGludHR5cGVzLmg+Ci0rI2VuZGlmCi0rXSwgW2ludG1heF90IHggPSAtMTtdLCBndF9jdl9jX2ludG1heF90PXllcywgZ3RfY3ZfY19pbnRtYXhfdD1ubyldKQotKyAgaWYgdGVzdCAkZ3RfY3ZfY19pbnRtYXhfdCA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkUoSEFWRV9JTlRNQVhfVCwgMSwKLSsgICAgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnaW50bWF4X3QnIHR5cGUgaW4gPHN0ZGludC5oPiBvciA8aW50dHlwZXMuaD4uXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvaW50dHlwZXNfaC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvaW50dHlwZXNfaC5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0Ljg2ODY3MDExMiAtMDQwMAotQEAgLTAsMCArMSwyOCBAQAotKyMgaW50dHlwZXNfaC5tNCBzZXJpYWwgNSAoZ2V0dGV4dC0wLjEyKQotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTctMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIFBhdWwgRWdnZXJ0LgotKwotKyMgRGVmaW5lIEhBVkVfSU5UVFlQRVNfSF9XSVRIX1VJTlRNQVggaWYgPGludHR5cGVzLmg+IGV4aXN0cywKLSsjIGRvZXNuJ3QgY2xhc2ggd2l0aCA8c3lzL3R5cGVzLmg+LCBhbmQgZGVjbGFyZXMgdWludG1heF90LgotKwotK0FDX0RFRlVOKFtqbV9BQ19IRUFERVJfSU5UVFlQRVNfSF0sCi0rWwotKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBpbnR0eXBlcy5oXSwgam1fYWNfY3ZfaGVhZGVyX2ludHR5cGVzX2gsCi0rICBbQUNfVFJZX0NPTVBJTEUoCi0rICAgIFsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rI2luY2x1ZGUgPGludHR5cGVzLmg+XSwKLSsgICAgW3VpbnRtYXhfdCBpID0gKHVpbnRtYXhfdCkgLTE7XSwKLSsgICAgam1fYWNfY3ZfaGVhZGVyX2ludHR5cGVzX2g9eWVzLAotKyAgICBqbV9hY19jdl9oZWFkZXJfaW50dHlwZXNfaD1ubyldKQotKyAgaWYgdGVzdCAkam1fYWNfY3ZfaGVhZGVyX2ludHR5cGVzX2ggPSB5ZXM7IHRoZW4KLSsgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfSU5UVFlQRVNfSF9XSVRIX1VJTlRNQVgsIDEsCi0rICAgICAgW0RlZmluZSBpZiA8aW50dHlwZXMuaD4gZXhpc3RzLCBkb2Vzbid0IGNsYXNoIHdpdGggPHN5cy90eXBlcy5oPiwKLSsgICAgICAgYW5kIGRlY2xhcmVzIHVpbnRtYXhfdC4gXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvaW50dHlwZXMubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2ludHR5cGVzLm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuODYxNjcxMTc2IC0wNDAwCi1AQCAtMCwwICsxLDI3IEBACi0rIyBpbnR0eXBlcy5tNCBzZXJpYWwgMSAoZ2V0dGV4dC0wLjExLjQpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5Ny0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gUGF1bCBFZ2dlcnQuCi0rCi0rIyBEZWZpbmUgSEFWRV9JTlRUWVBFU19IIGlmIDxpbnR0eXBlcy5oPiBleGlzdHMgYW5kIGRvZXNuJ3QgY2xhc2ggd2l0aAotKyMgPHN5cy90eXBlcy5oPi4KLSsKLStBQ19ERUZVTihbZ3RfSEVBREVSX0lOVFRZUEVTX0hdLAotK1sKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgaW50dHlwZXMuaF0sIGd0X2N2X2hlYWRlcl9pbnR0eXBlc19oLAotKyAgWwotKyAgICBBQ19UUllfQ09NUElMRSgKLSsgICAgICBbI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPl0sCi0rICAgICAgW10sIGd0X2N2X2hlYWRlcl9pbnR0eXBlc19oPXllcywgZ3RfY3ZfaGVhZGVyX2ludHR5cGVzX2g9bm8pCi0rICBdKQotKyAgaWYgdGVzdCAkZ3RfY3ZfaGVhZGVyX2ludHR5cGVzX2ggPSB5ZXM7IHRoZW4KLSsgICAgQUNfREVGSU5FX1VOUVVPVEVEKEhBVkVfSU5UVFlQRVNfSCwgMSwKLSsgICAgICBbRGVmaW5lIGlmIDxpbnR0eXBlcy5oPiBleGlzdHMgYW5kIGRvZXNuJ3QgY2xhc2ggd2l0aCA8c3lzL3R5cGVzLmg+Ll0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2ludHR5cGVzLXByaS5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvaW50dHlwZXMtcHJpLm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuODc0NjY5MjAwIC0wNDAwCi1AQCAtMCwwICsxLDMyIEBACi0rIyBpbnR0eXBlcy1wcmkubTQgc2VyaWFsIDEgKGdldHRleHQtMC4xMS40KQotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTctMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KLSsKLSsjIERlZmluZSBQUklfTUFDUk9TX0JST0tFTiBpZiA8aW50dHlwZXMuaD4gZXhpc3RzIGFuZCBkZWZpbmVzIHRoZSBQUkkqCi0rIyBtYWNyb3MgdG8gbm9uLXN0cmluZyB2YWx1ZXMuICBUaGlzIGlzIHRoZSBjYXNlIG9uIEFJWCA0LjMuMy4KLSsKLStBQ19ERUZVTihbZ3RfSU5UVFlQRVNfUFJJXSwKLStbCi0rICBBQ19SRVFVSVJFKFtndF9IRUFERVJfSU5UVFlQRVNfSF0pCi0rICBpZiB0ZXN0ICRndF9jdl9oZWFkZXJfaW50dHlwZXNfaCA9IHllczsgdGhlbgotKyAgICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgaW50dHlwZXMuaCBQUkl4Tk4gbWFjcm9zIGFyZSBicm9rZW5dLAotKyAgICAgIGd0X2N2X2ludHR5cGVzX3ByaV9icm9rZW4sCi0rICAgICAgWwotKyAgICAgICAgQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKyNpZmRlZiBQUklkMzIKLStjaGFyICpwID0gUFJJZDMyOwotKyNlbmRpZgotK10sIFtdLCBndF9jdl9pbnR0eXBlc19wcmlfYnJva2VuPW5vLCBndF9jdl9pbnR0eXBlc19wcmlfYnJva2VuPXllcykKLSsgICAgICBdKQotKyAgZmkKLSsgIGlmIHRlc3QgIiRndF9jdl9pbnR0eXBlc19wcmlfYnJva2VuIiA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoUFJJX01BQ1JPU19CUk9LRU4sIDEsCi0rICAgICAgW0RlZmluZSBpZiA8aW50dHlwZXMuaD4gZXhpc3RzIGFuZCBkZWZpbmVzIHVudXNhYmxlIFBSSSogbWFjcm9zLl0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2lzYy1wb3NpeC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvaXNjLXBvc2l4Lm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuODg1NjY3NTI4IC0wNDAwCi1AQCAtMCwwICsxLDI2IEBACi0rIyBpc2MtcG9zaXgubTQgc2VyaWFsIDIgKGdldHRleHQtMC4xMS4yKQotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotKyMgVGhpcyBmaWxlIGlzIG5vdCBuZWVkZWQgd2l0aCBhdXRvY29uZi0yLjUzIGFuZCBuZXdlci4gIFJlbW92ZSBpdCBpbiAyMDA1LgotKwotKyMgVGhpcyB0ZXN0IHJlcGxhY2VzIHRoZSBvbmUgaW4gYXV0b2NvbmYuCi0rIyBDdXJyZW50bHkgdGhpcyBtYWNybyBzaG91bGQgaGF2ZSB0aGUgc2FtZSBuYW1lIGFzIHRoZSBhdXRvY29uZiBtYWNybwotKyMgYmVjYXVzZSBnZXR0ZXh0J3MgZ2V0dGV4dC5tNCAoZGlzdHJpYnV0ZWQgaW4gdGhlIGF1dG9tYWtlIHBhY2thZ2UpCi0rIyBzdGlsbCB1c2VzIGl0LiAgT3RoZXJ3aXNlLCB0aGUgdXNlIGluIGdldHRleHQubTQgbWFrZXMgYXV0b2hlYWRlcgotKyMgZ2l2ZSB0aGVzZSBkaWFnbm9zdGljczoKLSsjICAgY29uZmlndXJlLmluOjU1NjogQUNfVFJZX0NPTVBJTEUgd2FzIGNhbGxlZCBiZWZvcmUgQUNfSVNDX1BPU0lYCi0rIyAgIGNvbmZpZ3VyZS5pbjo1NTY6IEFDX1RSWV9SVU4gd2FzIGNhbGxlZCBiZWZvcmUgQUNfSVNDX1BPU0lYCi0rCi0rdW5kZWZpbmUoW0FDX0lTQ19QT1NJWF0pCi0rCi0rQUNfREVGVU4oW0FDX0lTQ19QT1NJWF0sCi0rICBbCi0rICAgIGRubCBUaGlzIHRlc3QgcmVwbGFjZXMgdGhlIG9ic29sZXNjZW50IEFDX0lTQ19QT1NJWCBrbHVkZ2UuCi0rICAgIEFDX0NIRUNLX0xJQihjcG9zaXgsIHN0cmVycm9yLCBbTElCUz0iJExJQlMgLWxjcG9zaXgiXSkKLSsgIF0KLSspCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2xjbWVzc2FnZS5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvbGNtZXNzYWdlLm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuOTAyNjY0OTQ0IC0wNDAwCi1AQCAtMCwwICsxLDMyIEBACi0rIyBsY21lc3NhZ2UubTQgc2VyaWFsIDMgKGdldHRleHQtMC4xMS4zKQotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotK2RubAotK2RubCBUaGlzIGZpbGUgY2FuIGNhbiBiZSB1c2VkIGluIHByb2plY3RzIHdoaWNoIGFyZSBub3QgYXZhaWxhYmxlIHVuZGVyCi0rZG5sIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLStkbmwgTGljZW5zZSBidXQgd2hpY2ggc3RpbGwgd2FudCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHTlUgZ2V0dGV4dAotK2RubCBmdW5jdGlvbmFsaXR5LgotK2RubCBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgY29kZSBvZiB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpcyBjb3ZlcmVkCi0rZG5sIGJ5IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIEdOVQotK2RubCBnZXR0ZXh0IHBhY2thZ2UgcGFja2FnZSBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLStkbmwgVGhleSBhcmUgKm5vdCogaW4gdGhlIHB1YmxpYyBkb21haW4uCi0rCi0rZG5sIEF1dGhvcnM6Ci0rZG5sICAgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDE5OTUuCi0rCi0rIyBDaGVjayB3aGV0aGVyIExDX01FU1NBR0VTIGlzIGF2YWlsYWJsZSBpbiA8bG9jYWxlLmg+LgotKwotK0FDX0RFRlVOKFtBTV9MQ19NRVNTQUdFU10sCi0rWwotKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBMQ19NRVNTQUdFU10sIGFtX2N2X3ZhbF9MQ19NRVNTQUdFUywKLSsgICAgW0FDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bG9jYWxlLmg+XSwgW3JldHVybiBMQ19NRVNTQUdFU10sCi0rICAgICAgIGFtX2N2X3ZhbF9MQ19NRVNTQUdFUz15ZXMsIGFtX2N2X3ZhbF9MQ19NRVNTQUdFUz1ubyldKQotKyAgaWYgdGVzdCAkYW1fY3ZfdmFsX0xDX01FU1NBR0VTID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORShIQVZFX0xDX01FU1NBR0VTLCAxLAotKyAgICAgIFtEZWZpbmUgaWYgeW91ciA8bG9jYWxlLmg+IGZpbGUgZGVmaW5lcyBMQ19NRVNTQUdFUy5dKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9saWItbGQubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2xpYi1sZC5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0LjkwODY2NDAzMiAtMDQwMAotQEAgLTAsMCArMSwxMTIgQEAKLSsjIGxpYi1sZC5tNCBzZXJpYWwgMyAoZ2V0dGV4dC0wLjEzKQotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBTdWJyb3V0aW5lcyBvZiBsaWJ0b29sLm00LAotK2RubCB3aXRoIHJlcGxhY2VtZW50cyBzL0FDXy9BQ19MSUIvIGFuZCBzL2x0X2N2L2FjbF9jdi8gdG8gYXZvaWQgY29sbGlzaW9uCi0rZG5sIHdpdGggbGlidG9vbC5tNC4KLSsKLStkbmwgRnJvbSBsaWJ0b29sLTEuNC4gU2V0cyB0aGUgdmFyaWFibGUgd2l0aF9nbnVfbGQgdG8geWVzIG9yIG5vLgotK0FDX0RFRlVOKFtBQ19MSUJfUFJPR19MRF9HTlVdLAotK1tBQ19DQUNIRV9DSEVDSyhbaWYgdGhlIGxpbmtlciAoJExEKSBpcyBHTlUgbGRdLCBhY2xfY3ZfcHJvZ19nbnVfbGQsCi0rWyMgSSdkIHJhdGhlciB1c2UgLS12ZXJzaW9uIGhlcmUsIGJ1dCBhcHBhcmVudGx5IHNvbWUgR05VIGxkJ3Mgb25seSBhY2NlcHQgLXYuCi0rY2FzZSBgJExEIC12IDI+JjEgPC9kZXYvbnVsbGAgaW4KLSsqR05VKiB8ICond2l0aCBCRkQnKikKLSsgIGFjbF9jdl9wcm9nX2dudV9sZD15ZXMgOzsKLSsqKQotKyAgYWNsX2N2X3Byb2dfZ251X2xkPW5vIDs7Ci0rZXNhY10pCi0rd2l0aF9nbnVfbGQ9JGFjbF9jdl9wcm9nX2dudV9sZAotK10pCi0rCi0rZG5sIEZyb20gbGlidG9vbC0xLjQuIFNldHMgdGhlIHZhcmlhYmxlIExELgotK0FDX0RFRlVOKFtBQ19MSUJfUFJPR19MRF0sCi0rW0FDX0FSR19XSVRIKGdudS1sZCwKLStbICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dXSwKLSt0ZXN0ICIkd2l0aHZhbCIgPSBubyB8fCB3aXRoX2dudV9sZD15ZXMsIHdpdGhfZ251X2xkPW5vKQotK0FDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKWRubAotK0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKLSsjIFByZXBhcmUgUEFUSF9TRVBBUkFUT1IuCi0rIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCi0raWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7IHRoZW4KLSsgIGVjaG8gIiMhIC9iaW4vc2giID5jb25mJCQuc2gKLSsgIGVjaG8gICJleGl0IDAiICAgPj5jb25mJCQuc2gKLSsgIGNobW9kICt4IGNvbmYkJC5zaAotKyAgaWYgKFBBVEg9Ii9ub25leGlzdGVudDsuIjsgY29uZiQkLnNoKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgUEFUSF9TRVBBUkFUT1I9JzsnCi0rICBlbHNlCi0rICAgIFBBVEhfU0VQQVJBVE9SPToKLSsgIGZpCi0rICBybSAtZiBjb25mJCQuc2gKLStmaQotK2FjX3Byb2c9bGQKLStpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgIyBDaGVjayBpZiBnY2MgLXByaW50LXByb2ctbmFtZT1sZCBnaXZlcyBhIHBhdGguCi0rICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBsZCB1c2VkIGJ5IEdDQ10pCi0rICBjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqKQotKyAgICAjIGdjYyBsZWF2ZXMgYSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gd2hpY2ggdXBzZXRzIG1pbmd3Ci0rICAgIGFjX3Byb2c9YCgkQ0MgLXByaW50LXByb2ctbmFtZT1sZCkgMj4mNSB8IHRyIC1kICdcMDE1J2AgOzsKLSsgICopCi0rICAgIGFjX3Byb2c9YCgkQ0MgLXByaW50LXByb2ctbmFtZT1sZCkgMj4mNWAgOzsKLSsgIGVzYWMKLSsgIGNhc2UgJGFjX3Byb2cgaW4KLSsgICAgIyBBY2NlcHQgYWJzb2x1dGUgcGF0aHMuCi0rICAgIFtbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopXQotKyAgICAgIFtyZV9kaXJlbHQ9Jy9bXi9dW14vXSovXC5cLi8nXQotKyAgICAgICMgQ2Fub25pY2FsaXplIHRoZSBwYXRoIG9mIGxkCi0rICAgICAgYWNfcHJvZz1gZWNobyAkYWNfcHJvZ3wgc2VkICdzJVxcXFwlLyVnJ2AKLSsgICAgICB3aGlsZSBlY2hvICRhY19wcm9nIHwgZ3JlcCAiJHJlX2RpcmVsdCIgPiAvZGV2L251bGwgMj4mMTsgZG8KLSsJYWNfcHJvZz1gZWNobyAkYWNfcHJvZ3wgc2VkICJzJSRyZV9kaXJlbHQlLyUiYAotKyAgICAgIGRvbmUKLSsgICAgICB0ZXN0IC16ICIkTEQiICYmIExEPSIkYWNfcHJvZyIKLSsgICAgICA7OwotKyAgIiIpCi0rICAgICMgSWYgaXQgZmFpbHMsIHRoZW4gcHJldGVuZCB3ZSBhcmVuJ3QgdXNpbmcgR0NDLgotKyAgICBhY19wcm9nPWxkCi0rICAgIDs7Ci0rICAqKQotKyAgICAjIElmIGl0IGlzIHJlbGF0aXZlLCB0aGVuIHNlYXJjaCBmb3IgdGhlIGZpcnN0IGxkIGluIFBBVEguCi0rICAgIHdpdGhfZ251X2xkPXVua25vd24KLSsgICAgOzsKLSsgIGVzYWMKLStlbGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KLSsgIEFDX01TR19DSEVDS0lORyhbZm9yIEdOVSBsZF0pCi0rZWxzZQotKyAgQUNfTVNHX0NIRUNLSU5HKFtmb3Igbm9uLUdOVSBsZF0pCi0rZmkKLStBQ19DQUNIRV9WQUwoYWNsX2N2X3BhdGhfTEQsCi0rW2lmIHRlc3QgLXogIiRMRCI7IHRoZW4KLSsgIElGUz0iJHtJRlM9IAl9IjsgYWNfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9IiR7SUZTfSR7UEFUSF9TRVBBUkFUT1ItOn0iCi0rICBmb3IgYWNfZGlyIGluICRQQVRIOyBkbwotKyAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgotKyAgICBpZiB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nIiB8fCB0ZXN0IC1mICIkYWNfZGlyLyRhY19wcm9nJGFjX2V4ZWV4dCI7IHRoZW4KLSsgICAgICBhY2xfY3ZfcGF0aF9MRD0iJGFjX2Rpci8kYWNfcHJvZyIKLSsgICAgICAjIENoZWNrIHRvIHNlZSBpZiB0aGUgcHJvZ3JhbSBpcyBHTlUgbGQuICBJJ2QgcmF0aGVyIHVzZSAtLXZlcnNpb24sCi0rICAgICAgIyBidXQgYXBwYXJlbnRseSBzb21lIEdOVSBsZCdzIG9ubHkgYWNjZXB0IC12LgotKyAgICAgICMgQnJlYWsgb25seSBpZiBpdCB3YXMgdGhlIEdOVS9ub24tR05VIGxkIHRoYXQgd2UgcHJlZmVyLgotKyAgICAgIGNhc2UgYCIkYWNsX2N2X3BhdGhfTEQiIC12IDI+JjEgPCAvZGV2L251bGxgIGluCi0rICAgICAgKkdOVSogfCAqJ3dpdGggQkZEJyopCi0rCXRlc3QgIiR3aXRoX2dudV9sZCIgIT0gbm8gJiYgYnJlYWsgOzsKLSsgICAgICAqKQotKwl0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IHllcyAmJiBicmVhayA7OwotKyAgICAgIGVzYWMKLSsgICAgZmkKLSsgIGRvbmUKLSsgIElGUz0iJGFjX3NhdmVfaWZzIgotK2Vsc2UKLSsgIGFjbF9jdl9wYXRoX0xEPSIkTEQiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgotK2ZpXSkKLStMRD0iJGFjbF9jdl9wYXRoX0xEIgotK2lmIHRlc3QgLW4gIiRMRCI7IHRoZW4KLSsgIEFDX01TR19SRVNVTFQoJExEKQotK2Vsc2UKLSsgIEFDX01TR19SRVNVTFQobm8pCi0rZmkKLSt0ZXN0IC16ICIkTEQiICYmIEFDX01TR19FUlJPUihbbm8gYWNjZXB0YWJsZSBsZCBmb3VuZCBpbiBcJFBBVEhdKQotK0FDX0xJQl9QUk9HX0xEX0dOVQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L2xpYi1saW5rLm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9saWItbGluay5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0LjkxNDY2MzEyMCAtMDQwMAotQEAgLTAsMCArMSw1NTEgQEAKLSsjIGxpYi1saW5rLm00IHNlcmlhbCA0IChnZXR0ZXh0LTAuMTIpCi0rZG5sIENvcHlyaWdodCAoQykgMjAwMS0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotKwotK2RubCBBQ19MSUJfTElOS0ZMQUdTKG5hbWUgWywgZGVwZW5kZW5jaWVzXSkgc2VhcmNoZXMgZm9yIGxpYm5hbWUgYW5kCi0rZG5sIHRoZSBsaWJyYXJpZXMgY29ycmVzcG9uZGluZyB0byBleHBsaWNpdCBhbmQgaW1wbGljaXQgZGVwZW5kZW5jaWVzLgotK2RubCBTZXRzIGFuZCBBQ19TVUJTVHMgdGhlIExJQiR7TkFNRX0gYW5kIExUTElCJHtOQU1FfSB2YXJpYWJsZXMgYW5kCi0rZG5sIGF1Z21lbnRzIHRoZSBDUFBGTEFHUyB2YXJpYWJsZS4KLStBQ19ERUZVTihbQUNfTElCX0xJTktGTEFHU10sCi0rWwotKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfUFJFRklYXSkKLSsgIEFDX1JFUVVJUkUoW0FDX0xJQl9SUEFUSF0pCi0rICBkZWZpbmUoW05hbWVdLFt0cmFuc2xpdChbJDFdLFsuLy1dLCBbX19fXSldKQotKyAgZGVmaW5lKFtOQU1FXSxbdHJhbnNsaXQoWyQxXSxbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy1dLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19dKV0pCi0rICBBQ19DQUNIRV9DSEVDSyhbaG93IHRvIGxpbmsgd2l0aCBsaWJbXSQxXSwgW2FjX2N2X2xpYltdTmFtZVtdX2xpYnNdLCBbCi0rICAgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbJDFdLCBbJDJdKQotKyAgICBhY19jdl9saWJbXU5hbWVbXV9saWJzPSIkTElCW11OQU1FIgotKyAgICBhY19jdl9saWJbXU5hbWVbXV9sdGxpYnM9IiRMVExJQltdTkFNRSIKLSsgICAgYWNfY3ZfbGliW11OYW1lW11fY3BwZmxhZ3M9IiRJTkNbXU5BTUUiCi0rICBdKQotKyAgTElCW11OQU1FPSIkYWNfY3ZfbGliW11OYW1lW11fbGlicyIKLSsgIExUTElCW11OQU1FPSIkYWNfY3ZfbGliW11OYW1lW11fbHRsaWJzIgotKyAgSU5DW11OQU1FPSIkYWNfY3ZfbGliW11OYW1lW11fY3BwZmxhZ3MiCi0rICBBQ19MSUJfQVBQRU5EVE9WQVIoW0NQUEZMQUdTXSwgWyRJTkNdTkFNRSkKLSsgIEFDX1NVQlNUKFtMSUJdTkFNRSkKLSsgIEFDX1NVQlNUKFtMVExJQl1OQU1FKQotKyAgZG5sIEFsc28gc2V0IEhBVkVfTElCW11OQU1FIHNvIHRoYXQgQUNfTElCX0hBVkVfTElOS0ZMQUdTIGNhbiByZXVzZSB0aGUKLSsgIGRubCByZXN1bHRzIG9mIHRoaXMgc2VhcmNoIHdoZW4gdGhpcyBsaWJyYXJ5IGFwcGVhcnMgYXMgYSBkZXBlbmRlbmN5LgotKyAgSEFWRV9MSUJbXU5BTUU9eWVzCi0rICB1bmRlZmluZShbTmFtZV0pCi0rICB1bmRlZmluZShbTkFNRV0pCi0rXSkKLSsKLStkbmwgQUNfTElCX0hBVkVfTElOS0ZMQUdTKG5hbWUsIGRlcGVuZGVuY2llcywgaW5jbHVkZXMsIHRlc3Rjb2RlKQotK2RubCBzZWFyY2hlcyBmb3IgbGlibmFtZSBhbmQgdGhlIGxpYnJhcmllcyBjb3JyZXNwb25kaW5nIHRvIGV4cGxpY2l0IGFuZAotK2RubCBpbXBsaWNpdCBkZXBlbmRlbmNpZXMsIHRvZ2V0aGVyIHdpdGggdGhlIHNwZWNpZmllZCBpbmNsdWRlIGZpbGVzIGFuZAotK2RubCB0aGUgYWJpbGl0eSB0byBjb21waWxlIGFuZCBsaW5rIHRoZSBzcGVjaWZpZWQgdGVzdGNvZGUuIElmIGZvdW5kLCBpdAotK2RubCBzZXRzIGFuZCBBQ19TVUJTVHMgSEFWRV9MSUIke05BTUV9PXllcyBhbmQgdGhlIExJQiR7TkFNRX0gYW5kCi0rZG5sIExUTElCJHtOQU1FfSB2YXJpYWJsZXMgYW5kIGF1Z21lbnRzIHRoZSBDUFBGTEFHUyB2YXJpYWJsZSwgYW5kCi0rZG5sICNkZWZpbmVzIEhBVkVfTElCJHtOQU1FfSB0byAxLiBPdGhlcndpc2UsIGl0IHNldHMgYW5kIEFDX1NVQlNUcwotK2RubCBIQVZFX0xJQiR7TkFNRX09bm8gYW5kIExJQiR7TkFNRX0gYW5kIExUTElCJHtOQU1FfSB0byBlbXB0eS4KLStBQ19ERUZVTihbQUNfTElCX0hBVkVfTElOS0ZMQUdTXSwKLStbCi0rICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJFUEFSRV9QUkVGSVhdKQotKyAgQUNfUkVRVUlSRShbQUNfTElCX1JQQVRIXSkKLSsgIGRlZmluZShbTmFtZV0sW3RyYW5zbGl0KFskMV0sWy4vLV0sIFtfX19dKV0pCi0rICBkZWZpbmUoW05BTUVdLFt0cmFuc2xpdChbJDFdLFthYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vLV0sCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX10pXSkKLSsKLSsgIGRubCBTZWFyY2ggZm9yIGxpYltdTmFtZSBhbmQgZGVmaW5lIExJQltdTkFNRSwgTFRMSUJbXU5BTUUgYW5kIElOQ1tdTkFNRQotKyAgZG5sIGFjY29yZGluZ2x5LgotKyAgQUNfTElCX0xJTktGTEFHU19CT0RZKFskMV0sIFskMl0pCi0rCi0rICBkbmwgQWRkICRJTkNbXU5BTUUgdG8gQ1BQRkxBR1MgYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGZvbGxvd2luZyBjaGVja3MsCi0rICBkbmwgYmVjYXVzZSBpZiB0aGUgdXNlciBoYXMgaW5zdGFsbGVkIGxpYltdTmFtZSBhbmQgbm90IGRpc2FibGVkIGl0cyB1c2UKLSsgIGRubCB2aWEgLS13aXRob3V0LWxpYltdTmFtZS1wcmVmaXgsIGhlIHdhbnRzIHRvIHVzZSBpdC4KLSsgIGFjX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKLSsgIEFDX0xJQl9BUFBFTkRUT1ZBUihbQ1BQRkxBR1NdLCBbJElOQ11OQU1FKQotKwotKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBsaWJbXSQxXSwgW2FjX2N2X2xpYltdTmFtZV0sIFsKLSsgICAgYWNfc2F2ZV9MSUJTPSIkTElCUyIKLSsgICAgTElCUz0iJExJQlMgJExJQltdTkFNRSIKLSsgICAgQUNfVFJZX0xJTksoWyQzXSwgWyQ0XSwgW2FjX2N2X2xpYltdTmFtZT15ZXNdLCBbYWNfY3ZfbGliW11OYW1lPW5vXSkKLSsgICAgTElCUz0iJGFjX3NhdmVfTElCUyIKLSsgIF0pCi0rICBpZiB0ZXN0ICIkYWNfY3ZfbGliW11OYW1lIiA9IHllczsgdGhlbgotKyAgICBIQVZFX0xJQltdTkFNRT15ZXMKLSsgICAgQUNfREVGSU5FKFtIQVZFX0xJQl1OQU1FLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAkMSBsaWJyYXJ5Ll0pCi0rICAgIEFDX01TR19DSEVDS0lORyhbaG93IHRvIGxpbmsgd2l0aCBsaWJbXSQxXSkKLSsgICAgQUNfTVNHX1JFU1VMVChbJExJQltdTkFNRV0pCi0rICBlbHNlCi0rICAgIEhBVkVfTElCW11OQU1FPW5vCi0rICAgIGRubCBJZiAkTElCW11OQU1FIGRpZG4ndCBsZWFkIHRvIGEgdXNhYmxlIGxpYnJhcnksIHdlIGRvbid0IG5lZWQKLSsgICAgZG5sICRJTkNbXU5BTUUgZWl0aGVyLgotKyAgICBDUFBGTEFHUz0iJGFjX3NhdmVfQ1BQRkxBR1MiCi0rICAgIExJQltdTkFNRT0KLSsgICAgTFRMSUJbXU5BTUU9Ci0rICBmaQotKyAgQUNfU1VCU1QoW0hBVkVfTElCXU5BTUUpCi0rICBBQ19TVUJTVChbTElCXU5BTUUpCi0rICBBQ19TVUJTVChbTFRMSUJdTkFNRSkKLSsgIHVuZGVmaW5lKFtOYW1lXSkKLSsgIHVuZGVmaW5lKFtOQU1FXSkKLStdKQotKwotK2RubCBEZXRlcm1pbmUgdGhlIHBsYXRmb3JtIGRlcGVuZGVudCBwYXJhbWV0ZXJzIG5lZWRlZCB0byB1c2UgcnBhdGg6Ci0rZG5sIGxpYmV4dCwgc2hsaWJleHQsIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsCi0rZG5sIGhhcmRjb2RlX2RpcmVjdCwgaGFyZGNvZGVfbWludXNfTC4KLStBQ19ERUZVTihbQUNfTElCX1JQQVRIXSwKLStbCi0rICBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSkgICAgICAgICAgICAgICAgZG5sIHdlIHVzZSAkQ0MsICRHQ0MsICRMREZMQUdTCi0rICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJPR19MRF0pICAgICAgICAgICAgZG5sIHdlIHVzZSAkTEQsICR3aXRoX2dudV9sZAotKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKSAgICAgICAgIGRubCB3ZSB1c2UgJGhvc3QKLSsgIEFDX1JFUVVJUkUoW0FDX0NPTkZJR19BVVhfRElSX0RFRkFVTFRdKSBkbmwgd2UgdXNlICRhY19hdXhfZGlyCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIHNoYXJlZCBsaWJyYXJ5IHJ1biBwYXRoIG9yaWdpbl0sIGFjbF9jdl9ycGF0aCwgWwotKyAgICBDQz0iJENDIiBHQ0M9IiRHQ0MiIExERkxBR1M9IiRMREZMQUdTIiBMRD0iJExEIiB3aXRoX2dudV9sZD0iJHdpdGhfZ251X2xkIiBcCi0rICAgICR7Q09ORklHX1NIRUxMLS9iaW4vc2h9ICIkYWNfYXV4X2Rpci9jb25maWcucnBhdGgiICIkaG9zdCIgPiBjb25mdGVzdC5zaAotKyAgICAuIC4vY29uZnRlc3Quc2gKLSsgICAgcm0gLWYgLi9jb25mdGVzdC5zaAotKyAgICBhY2xfY3ZfcnBhdGg9ZG9uZQotKyAgXSkKLSsgIHdsPSIkYWNsX2N2X3dsIgotKyAgbGliZXh0PSIkYWNsX2N2X2xpYmV4dCIKLSsgIHNobGliZXh0PSIkYWNsX2N2X3NobGliZXh0IgotKyAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0iJGFjbF9jdl9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIgotKyAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0iJGFjbF9jdl9oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIgotKyAgaGFyZGNvZGVfZGlyZWN0PSIkYWNsX2N2X2hhcmRjb2RlX2RpcmVjdCIKLSsgIGhhcmRjb2RlX21pbnVzX0w9IiRhY2xfY3ZfaGFyZGNvZGVfbWludXNfTCIKLSsgIGRubCBEZXRlcm1pbmUgd2hldGhlciB0aGUgdXNlciB3YW50cyBycGF0aCBoYW5kbGluZyBhdCBhbGwuCi0rICBBQ19BUkdfRU5BQkxFKHJwYXRoLAotKyAgICBbICAtLWRpc2FibGUtcnBhdGggICAgICAgICBkbyBub3QgaGFyZGNvZGUgcnVudGltZSBsaWJyYXJ5IHBhdGhzXSwKLSsgICAgOiwgZW5hYmxlX3JwYXRoPXllcykKLStdKQotKwotK2RubCBBQ19MSUJfTElOS0ZMQUdTX0JPRFkobmFtZSBbLCBkZXBlbmRlbmNpZXNdKSBzZWFyY2hlcyBmb3IgbGlibmFtZSBhbmQKLStkbmwgdGhlIGxpYnJhcmllcyBjb3JyZXNwb25kaW5nIHRvIGV4cGxpY2l0IGFuZCBpbXBsaWNpdCBkZXBlbmRlbmNpZXMuCi0rZG5sIFNldHMgdGhlIExJQiR7TkFNRX0sIExUTElCJHtOQU1FfSBhbmQgSU5DJHtOQU1FfSB2YXJpYWJsZXMuCi0rQUNfREVGVU4oW0FDX0xJQl9MSU5LRkxBR1NfQk9EWV0sCi0rWwotKyAgZGVmaW5lKFtOQU1FXSxbdHJhbnNsaXQoWyQxXSxbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLy1dLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19dKV0pCi0rICBkbmwgQnkgZGVmYXVsdCwgbG9vayBpbiAkaW5jbHVkZWRpciBhbmQgJGxpYmRpci4KLSsgIHVzZV9hZGRpdGlvbmFsPXllcwotKyAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFsKLSsgICAgZXZhbCBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9XCIkaW5jbHVkZWRpclwiCi0rICAgIGV2YWwgYWRkaXRpb25hbF9saWJkaXI9XCIkbGliZGlyXCIKLSsgIF0pCi0rICBBQ19MSUJfQVJHX1dJVEgoW2xpYiQxLXByZWZpeF0sCi0rWyAgLS13aXRoLWxpYiQxLXByZWZpeFs9RElSXSAgc2VhcmNoIGZvciBsaWIkMSBpbiBESVIvaW5jbHVkZSBhbmQgRElSL2xpYgotKyAgLS13aXRob3V0LWxpYiQxLXByZWZpeCAgICAgZG9uJ3Qgc2VhcmNoIGZvciBsaWIkMSBpbiBpbmNsdWRlZGlyIGFuZCBsaWJkaXJdLAotK1sKLSsgICAgaWYgdGVzdCAiWCR3aXRodmFsIiA9ICJYbm8iOyB0aGVuCi0rICAgICAgdXNlX2FkZGl0aW9uYWw9bm8KLSsgICAgZWxzZQotKyAgICAgIGlmIHRlc3QgIlgkd2l0aHZhbCIgPSAiWCI7IHRoZW4KLSsgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbCi0rICAgICAgICAgIGV2YWwgYWRkaXRpb25hbF9pbmNsdWRlZGlyPVwiJGluY2x1ZGVkaXJcIgotKyAgICAgICAgICBldmFsIGFkZGl0aW9uYWxfbGliZGlyPVwiJGxpYmRpclwiCi0rICAgICAgICBdKQotKyAgICAgIGVsc2UKLSsgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0iJHdpdGh2YWwvaW5jbHVkZSIKLSsgICAgICAgIGFkZGl0aW9uYWxfbGliZGlyPSIkd2l0aHZhbC9saWIiCi0rICAgICAgZmkKLSsgICAgZmkKLStdKQotKyAgZG5sIFNlYXJjaCB0aGUgbGlicmFyeSBhbmQgaXRzIGRlcGVuZGVuY2llcyBpbiAkYWRkaXRpb25hbF9saWJkaXIgYW5kCi0rICBkbmwgJExERkxBR1MuIFVzaW5nIGJyZWFkdGgtZmlyc3Qtc2VhY2guCi0rICBMSUJbXU5BTUU9Ci0rICBMVExJQltdTkFNRT0KLSsgIElOQ1tdTkFNRT0KLSsgIHJwYXRoZGlycz0KLSsgIGx0cnBhdGhkaXJzPQotKyAgbmFtZXNfYWxyZWFkeV9oYW5kbGVkPQotKyAgbmFtZXNfbmV4dF9yb3VuZD0nJDEgJDInCi0rICB3aGlsZSB0ZXN0IC1uICIkbmFtZXNfbmV4dF9yb3VuZCI7IGRvCi0rICAgIG5hbWVzX3RoaXNfcm91bmQ9IiRuYW1lc19uZXh0X3JvdW5kIgotKyAgICBuYW1lc19uZXh0X3JvdW5kPQotKyAgICBmb3IgbmFtZSBpbiAkbmFtZXNfdGhpc19yb3VuZDsgZG8KLSsgICAgICBhbHJlYWR5X2hhbmRsZWQ9Ci0rICAgICAgZm9yIG4gaW4gJG5hbWVzX2FscmVhZHlfaGFuZGxlZDsgZG8KLSsgICAgICAgIGlmIHRlc3QgIiRuIiA9ICIkbmFtZSI7IHRoZW4KLSsgICAgICAgICAgYWxyZWFkeV9oYW5kbGVkPXllcwotKyAgICAgICAgICBicmVhawotKyAgICAgICAgZmkKLSsgICAgICBkb25lCi0rICAgICAgaWYgdGVzdCAteiAiJGFscmVhZHlfaGFuZGxlZCI7IHRoZW4KLSsgICAgICAgIG5hbWVzX2FscmVhZHlfaGFuZGxlZD0iJG5hbWVzX2FscmVhZHlfaGFuZGxlZCAkbmFtZSIKLSsgICAgICAgIGRubCBTZWUgaWYgaXQgd2FzIGFscmVhZHkgbG9jYXRlZCBieSBhbiBlYXJsaWVyIEFDX0xJQl9MSU5LRkxBR1MKLSsgICAgICAgIGRubCBvciBBQ19MSUJfSEFWRV9MSU5LRkxBR1MgY2FsbC4KLSsgICAgICAgIHVwcGVybmFtZT1gZWNobyAiJG5hbWUiIHwgc2VkIC1lICd5fGFiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8tfEFCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19ffCdgCi0rICAgICAgICBldmFsIHZhbHVlPVwiXCRIQVZFX0xJQiR1cHBlcm5hbWVcIgotKyAgICAgICAgaWYgdGVzdCAtbiAiJHZhbHVlIjsgdGhlbgotKyAgICAgICAgICBpZiB0ZXN0ICIkdmFsdWUiID0geWVzOyB0aGVuCi0rICAgICAgICAgICAgZXZhbCB2YWx1ZT1cIlwkTElCJHVwcGVybmFtZVwiCi0rICAgICAgICAgICAgdGVzdCAteiAiJHZhbHVlIiB8fCBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSR2YWx1ZSIKLSsgICAgICAgICAgICBldmFsIHZhbHVlPVwiXCRMVExJQiR1cHBlcm5hbWVcIgotKyAgICAgICAgICAgIHRlc3QgLXogIiR2YWx1ZSIgfHwgTFRMSUJbXU5BTUU9IiR7TFRMSUJbXU5BTUV9JHtMVExJQltdTkFNRTorIH0kdmFsdWUiCi0rICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICBkbmwgQW4gZWFybGllciBjYWxsIHRvIEFDX0xJQl9IQVZFX0xJTktGTEFHUyBoYXMgZGV0ZXJtaW5lZAotKyAgICAgICAgICAgIGRubCB0aGF0IHRoaXMgbGlicmFyeSBkb2Vzbid0IGV4aXN0LiBTbyBqdXN0IGRyb3AgaXQuCi0rICAgICAgICAgICAgOgotKyAgICAgICAgICBmaQotKyAgICAgICAgZWxzZQotKyAgICAgICAgICBkbmwgU2VhcmNoIHRoZSBsaWJyYXJ5IGxpYiRuYW1lIGluICRhZGRpdGlvbmFsX2xpYmRpciBhbmQgJExERkxBR1MKLSsgICAgICAgICAgZG5sIGFuZCB0aGUgYWxyZWFkeSBjb25zdHJ1Y3RlZCAkTElCTkFNRS8kTFRMSUJOQU1FLgotKyAgICAgICAgICBmb3VuZF9kaXI9Ci0rICAgICAgICAgIGZvdW5kX2xhPQotKyAgICAgICAgICBmb3VuZF9zbz0KLSsgICAgICAgICAgZm91bmRfYT0KLSsgICAgICAgICAgaWYgdGVzdCAkdXNlX2FkZGl0aW9uYWwgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgICBpZiB0ZXN0IC1uICIkc2hsaWJleHQiICYmIHRlc3QgLWYgIiRhZGRpdGlvbmFsX2xpYmRpci9saWIkbmFtZS4kc2hsaWJleHQiOyB0aGVuCi0rICAgICAgICAgICAgICBmb3VuZF9kaXI9IiRhZGRpdGlvbmFsX2xpYmRpciIKLSsgICAgICAgICAgICAgIGZvdW5kX3NvPSIkYWRkaXRpb25hbF9saWJkaXIvbGliJG5hbWUuJHNobGliZXh0IgotKyAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGFkZGl0aW9uYWxfbGliZGlyL2xpYiRuYW1lLmxhIjsgdGhlbgotKyAgICAgICAgICAgICAgICBmb3VuZF9sYT0iJGFkZGl0aW9uYWxfbGliZGlyL2xpYiRuYW1lLmxhIgotKyAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkYWRkaXRpb25hbF9saWJkaXIvbGliJG5hbWUuJGxpYmV4dCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkYWRkaXRpb25hbF9saWJkaXIiCi0rICAgICAgICAgICAgICAgIGZvdW5kX2E9IiRhZGRpdGlvbmFsX2xpYmRpci9saWIkbmFtZS4kbGliZXh0IgotKyAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkYWRkaXRpb25hbF9saWJkaXIvbGliJG5hbWUubGEiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgZm91bmRfbGE9IiRhZGRpdGlvbmFsX2xpYmRpci9saWIkbmFtZS5sYSIKLSsgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgZmkKLSsgICAgICAgICAgZmkKLSsgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgiOyB0aGVuCi0rICAgICAgICAgICAgZm9yIHggaW4gJExERkxBR1MgJExUTElCW11OQU1FOyBkbwotKyAgICAgICAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKLSsgICAgICAgICAgICAgIGNhc2UgIiR4IiBpbgotKyAgICAgICAgICAgICAgICAtTCopCi0rICAgICAgICAgICAgICAgICAgZGlyPWBlY2hvICJYJHgiIHwgc2VkIC1lICdzL15YLUwvLydgCi0rICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJHNobGliZXh0IiAmJiB0ZXN0IC1mICIkZGlyL2xpYiRuYW1lLiRzaGxpYmV4dCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKLSsgICAgICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyL2xpYiRuYW1lLiRzaGxpYmV4dCIKLSsgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvbGliJG5hbWUubGEiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2xhPSIkZGlyL2xpYiRuYW1lLmxhIgotKyAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyL2xpYiRuYW1lLiRsaWJleHQiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2Rpcj0iJGRpciIKLSsgICAgICAgICAgICAgICAgICAgICAgZm91bmRfYT0iJGRpci9saWIkbmFtZS4kbGliZXh0IgotKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyL2xpYiRuYW1lLmxhIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2xhPSIkZGlyL2xpYiRuYW1lLmxhIgotKyAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgIDs7Ci0rICAgICAgICAgICAgICBlc2FjCi0rICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgIT0gIlgiOyB0aGVuCi0rICAgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgZmkKLSsgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiICE9ICJYIjsgdGhlbgotKyAgICAgICAgICAgIGRubCBGb3VuZCB0aGUgbGlicmFyeS4KLSsgICAgICAgICAgICBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfS1MJGZvdW5kX2RpciAtbCRuYW1lIgotKyAgICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfc28iICE9ICJYIjsgdGhlbgotKyAgICAgICAgICAgICAgZG5sIExpbmtpbmcgd2l0aCBhIHNoYXJlZCBsaWJyYXJ5LiBXZSBhdHRlbXB0IHRvIGhhcmRjb2RlIGl0cwotKyAgICAgICAgICAgICAgZG5sIGRpcmVjdG9yeSBpbnRvIHRoZSBleGVjdXRhYmxlJ3MgcnVucGF0aCwgdW5sZXNzIGl0J3MgdGhlCi0rICAgICAgICAgICAgICBkbmwgc3RhbmRhcmQgL3Vzci9saWIuCi0rICAgICAgICAgICAgICBpZiB0ZXN0ICIkZW5hYmxlX3JwYXRoIiA9IG5vIHx8IHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYL3Vzci9saWIiOyB0aGVuCi0rICAgICAgICAgICAgICAgIGRubCBObyBoYXJkY29kaW5nIGlzIG5lZWRlZC4KLSsgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZm91bmRfc28iCi0rICAgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgIGRubCBVc2UgYW4gZXhwbGljaXQgb3B0aW9uIHRvIGhhcmRjb2RlIERJUiBpbnRvIHRoZSByZXN1bHRpbmcKLSsgICAgICAgICAgICAgICAgZG5sIGJpbmFyeS4KLSsgICAgICAgICAgICAgICAgZG5sIFBvdGVudGlhbGx5IGFkZCBESVIgdG8gbHRycGF0aGRpcnMuCi0rICAgICAgICAgICAgICAgIGRubCBUaGUgbHRycGF0aGRpcnMgd2lsbCBiZSBhcHBlbmRlZCB0byAkTFRMSUJOQU1FIGF0IHRoZSBlbmQuCi0rICAgICAgICAgICAgICAgIGhhdmVpdD0KLSsgICAgICAgICAgICAgICAgZm9yIHggaW4gJGx0cnBhdGhkaXJzOyBkbwotKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRmb3VuZF9kaXIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICBsdHJwYXRoZGlycz0iJGx0cnBhdGhkaXJzICRmb3VuZF9kaXIiCi0rICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgIGRubCBUaGUgaGFyZGNvZGluZyBpbnRvICRMSUJOQU1FIGlzIHN5c3RlbSBkZXBlbmRlbnQuCi0rICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRoYXJkY29kZV9kaXJlY3QiID0geWVzOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgZG5sIFVzaW5nIERJUi9saWJOQU1FLnNvIGR1cmluZyBsaW5raW5nIGhhcmRjb2RlcyBESVIgaW50byB0aGUKLSsgICAgICAgICAgICAgICAgICBkbmwgcmVzdWx0aW5nIGJpbmFyeS4KLSsgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmb3VuZF9zbyIKLSsgICAgICAgICAgICAgICAgZWxzZQotKyAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIiAmJiB0ZXN0ICIkaGFyZGNvZGVfbWludXNfTCIgPSBubzsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgZG5sIFVzZSBhbiBleHBsaWNpdCBvcHRpb24gdG8gaGFyZGNvZGUgRElSIGludG8gdGhlIHJlc3VsdGluZwotKyAgICAgICAgICAgICAgICAgICAgZG5sIGJpbmFyeS4KLSsgICAgICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZvdW5kX3NvIgotKyAgICAgICAgICAgICAgICAgICAgZG5sIFBvdGVudGlhbGx5IGFkZCBESVIgdG8gcnBhdGhkaXJzLgotKyAgICAgICAgICAgICAgICAgICAgZG5sIFRoZSBycGF0aGRpcnMgd2lsbCBiZSBhcHBlbmRlZCB0byAkTElCTkFNRSBhdCB0aGUgZW5kLgotKyAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQotKyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJHJwYXRoZGlyczsgZG8KLSsgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYJGZvdW5kX2RpciI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgIHJwYXRoZGlycz0iJHJwYXRoZGlycyAkZm91bmRfZGlyIgotKyAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgICAgICBkbmwgUmVseSBvbiAiLUwkZm91bmRfZGlyIi4KLSsgICAgICAgICAgICAgICAgICAgIGRubCBCdXQgZG9uJ3QgYWRkIGl0IGlmIGl0J3MgYWxyZWFkeSBjb250YWluZWQgaW4gdGhlIExERkxBR1MKLSsgICAgICAgICAgICAgICAgICAgIGRubCBvciB0aGUgYWxyZWFkeSBjb25zdHJ1Y3RlZCAkTElCTkFNRQotKyAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQotKyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJExERkxBR1MgJExJQltdTkFNRTsgZG8KLSsgICAgICAgICAgICAgICAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKLSsgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUwkZm91bmRfZGlyIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKLSsgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0tTCRmb3VuZF9kaXIiCi0rICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGhhcmRjb2RlX21pbnVzX0wiICE9IG5vOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgIGRubCBGSVhNRTogTm90IHN1cmUgd2hldGhlciB3ZSBzaG91bGQgdXNlCi0rICAgICAgICAgICAgICAgICAgICAgIGRubCAiLUwkZm91bmRfZGlyIC1sJG5hbWUiIG9yICItTCRmb3VuZF9kaXIgJGZvdW5kX3NvIgotKyAgICAgICAgICAgICAgICAgICAgICBkbmwgaGVyZS4KLSsgICAgICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZm91bmRfc28iCi0rICAgICAgICAgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgICAgICAgIGRubCBXZSBjYW5ub3QgdXNlICRoYXJkY29kZV9ydW5wYXRoX3ZhciBhbmQgTERfUlVOX1BBVEgKLSsgICAgICAgICAgICAgICAgICAgICAgZG5sIGhlcmUsIGJlY2F1c2UgdGhpcyBkb2Vzbid0IGZpdCBpbiBmbGFncyBwYXNzZWQgdG8gdGhlCi0rICAgICAgICAgICAgICAgICAgICAgIGRubCBjb21waWxlci4gU28gZ2l2ZSB1cC4gTm8gaGFyZGNvZGluZy4gVGhpcyBhZmZlY3RzIG9ubHkKLSsgICAgICAgICAgICAgICAgICAgICAgZG5sIHZlcnkgb2xkIHN5c3RlbXMuCi0rICAgICAgICAgICAgICAgICAgICAgIGRubCBGSVhNRTogTm90IHN1cmUgd2hldGhlciB3ZSBzaG91bGQgdXNlCi0rICAgICAgICAgICAgICAgICAgICAgIGRubCAiLUwkZm91bmRfZGlyIC1sJG5hbWUiIG9yICItTCRmb3VuZF9kaXIgJGZvdW5kX3NvIgotKyAgICAgICAgICAgICAgICAgICAgICBkbmwgaGVyZS4KLSsgICAgICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0tbCRuYW1lIgotKyAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2EiICE9ICJYIjsgdGhlbgotKyAgICAgICAgICAgICAgICBkbmwgTGlua2luZyB3aXRoIGEgc3RhdGljIGxpYnJhcnkuCi0rICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZvdW5kX2EiCi0rICAgICAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgICAgIGRubCBXZSBzaG91bGRuJ3QgY29tZSBoZXJlLCBidXQgYW55d2F5IGl0J3MgZ29vZCB0byBoYXZlIGEKLSsgICAgICAgICAgICAgICAgZG5sIGZhbGxiYWNrLgotKyAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfS1MJGZvdW5kX2RpciAtbCRuYW1lIgotKyAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGRubCBBc3N1bWUgdGhlIGluY2x1ZGUgZmlsZXMgYXJlIG5lYXJieS4KLSsgICAgICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9Ci0rICAgICAgICAgICAgY2FzZSAiJGZvdW5kX2RpciIgaW4KLSsgICAgICAgICAgICAgICovbGliIHwgKi9saWIvKQotKyAgICAgICAgICAgICAgICBiYXNlZGlyPWBlY2hvICJYJGZvdW5kX2RpciIgfCBzZWQgLWUgJ3MsXlgsLCcgLWUgJ3MsL2xpYi8qJCwsJ2AKLSsgICAgICAgICAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPSIkYmFzZWRpci9pbmNsdWRlIgotKyAgICAgICAgICAgICAgICA7OwotKyAgICAgICAgICAgIGVzYWMKLSsgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgIT0gIlgiOyB0aGVuCi0rICAgICAgICAgICAgICBkbmwgUG90ZW50aWFsbHkgYWRkICRhZGRpdGlvbmFsX2luY2x1ZGVkaXIgdG8gJElOQ05BTUUuCi0rICAgICAgICAgICAgICBkbmwgQnV0IGRvbid0IGFkZCBpdAotKyAgICAgICAgICAgICAgZG5sICAgMS4gaWYgaXQncyB0aGUgc3RhbmRhcmQgL3Vzci9pbmNsdWRlLAotKyAgICAgICAgICAgICAgZG5sICAgMi4gaWYgaXQncyAvdXNyL2xvY2FsL2luY2x1ZGUgYW5kIHdlIGFyZSB1c2luZyBHQ0Mgb24gTGludXgsCi0rICAgICAgICAgICAgICBkbmwgICAzLiBpZiBpdCdzIGFscmVhZHkgcHJlc2VudCBpbiAkQ1BQRkxBR1Mgb3IgdGhlIGFscmVhZHkKLSsgICAgICAgICAgICAgIGRubCAgICAgIGNvbnN0cnVjdGVkICRJTkNOQU1FLAotKyAgICAgICAgICAgICAgZG5sICAgNC4gaWYgaXQgZG9lc24ndCBleGlzdCBhcyBhIGRpcmVjdG9yeS4KLSsgICAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiAhPSAiWC91c3IvaW5jbHVkZSI7IHRoZW4KLSsgICAgICAgICAgICAgICAgaGF2ZWl0PQotKyAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgPSAiWC91c3IvbG9jYWwvaW5jbHVkZSI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkR0NDIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbgotKyAgICAgICAgICAgICAgICAgICAgICBsaW51eCopIGhhdmVpdD15ZXM7OwotKyAgICAgICAgICAgICAgICAgICAgZXNhYwotKyAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJENQUEZMQUdTICRJTkNbXU5BTUU7IGRvCi0rICAgICAgICAgICAgICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQotKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUkkYWRkaXRpb25hbF9pbmNsdWRlZGlyIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfaW5jbHVkZWRpciI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgZG5sIFJlYWxseSBhZGQgJGFkZGl0aW9uYWxfaW5jbHVkZWRpciB0byAkSU5DTkFNRS4KLSsgICAgICAgICAgICAgICAgICAgICAgSU5DW11OQU1FPSIke0lOQ1tdTkFNRX0ke0lOQ1tdTkFNRTorIH0tSSRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiCi0rICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgZG5sIExvb2sgZm9yIGRlcGVuZGVuY2llcy4KLSsgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZm91bmRfbGEiOyB0aGVuCi0rICAgICAgICAgICAgICBkbmwgUmVhZCB0aGUgLmxhIGZpbGUuIEl0IGRlZmluZXMgdGhlIHZhcmlhYmxlcwotKyAgICAgICAgICAgICAgZG5sIGRsbmFtZSwgbGlicmFyeV9uYW1lcywgb2xkX2xpYnJhcnksIGRlcGVuZGVuY3lfbGlicywgY3VycmVudCwKLSsgICAgICAgICAgICAgIGRubCBhZ2UsIHJldmlzaW9uLCBpbnN0YWxsZWQsIGRsb3BlbiwgZGxwcmVvcGVuLCBsaWJkaXIuCi0rICAgICAgICAgICAgICBzYXZlX2xpYmRpcj0iJGxpYmRpciIKLSsgICAgICAgICAgICAgIGNhc2UgIiRmb3VuZF9sYSIgaW4KLSsgICAgICAgICAgICAgICAgKi8qIHwgKlxcKikgLiAiJGZvdW5kX2xhIiA7OwotKyAgICAgICAgICAgICAgICAqKSAuICIuLyRmb3VuZF9sYSIgOzsKLSsgICAgICAgICAgICAgIGVzYWMKLSsgICAgICAgICAgICAgIGxpYmRpcj0iJHNhdmVfbGliZGlyIgotKyAgICAgICAgICAgICAgZG5sIFdlIHVzZSBvbmx5IGRlcGVuZGVuY3lfbGlicy4KLSsgICAgICAgICAgICAgIGZvciBkZXAgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KLSsgICAgICAgICAgICAgICAgY2FzZSAiJGRlcCIgaW4KLSsgICAgICAgICAgICAgICAgICAtTCopCi0rICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2xpYmRpcj1gZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzL15YLUwvLydgCi0rICAgICAgICAgICAgICAgICAgICBkbmwgUG90ZW50aWFsbHkgYWRkICRhZGRpdGlvbmFsX2xpYmRpciB0byAkTElCTkFNRSBhbmQgJExUTElCTkFNRS4KLSsgICAgICAgICAgICAgICAgICAgIGRubCBCdXQgZG9uJ3QgYWRkIGl0Ci0rICAgICAgICAgICAgICAgICAgICBkbmwgICAxLiBpZiBpdCdzIHRoZSBzdGFuZGFyZCAvdXNyL2xpYiwKLSsgICAgICAgICAgICAgICAgICAgIGRubCAgIDIuIGlmIGl0J3MgL3Vzci9sb2NhbC9saWIgYW5kIHdlIGFyZSB1c2luZyBHQ0Mgb24gTGludXgsCi0rICAgICAgICAgICAgICAgICAgICBkbmwgICAzLiBpZiBpdCdzIGFscmVhZHkgcHJlc2VudCBpbiAkTERGTEFHUyBvciB0aGUgYWxyZWFkeQotKyAgICAgICAgICAgICAgICAgICAgZG5sICAgICAgY29uc3RydWN0ZWQgJExJQk5BTUUsCi0rICAgICAgICAgICAgICAgICAgICBkbmwgICA0LiBpZiBpdCBkb2Vzbid0IGV4aXN0IGFzIGEgZGlyZWN0b3J5LgotKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgIT0gIlgvdXNyL2xpYiI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQotKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfbGliZGlyIiA9ICJYL3Vzci9sb2NhbC9saWIiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJEdDQyI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGludXgqKSBoYXZlaXQ9eWVzOzsKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGVzYWMKLSsgICAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KLSsgICAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkTERGTEFHUyAkTElCW11OQU1FOyBkbwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1MJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBkbmwgUmVhbGx5IGFkZCAkYWRkaXRpb25hbF9saWJkaXIgdG8gJExJQk5BTUUuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9LUwkYWRkaXRpb25hbF9saWJkaXIiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQotKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMVExJQltdTkFNRTsgZG8KLSsgICAgICAgICAgICAgICAgICAgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtTCRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgICAgICBkb25lCi0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG5sIFJlYWxseSBhZGQgJGFkZGl0aW9uYWxfbGliZGlyIHRvICRMVExJQk5BTUUuCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIExUTElCW11OQU1FPSIke0xUTElCW11OQU1FfSR7TFRMSUJbXU5BTUU6KyB9LUwkYWRkaXRpb25hbF9saWJkaXIiCi0rICAgICAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgOzsKLSsgICAgICAgICAgICAgICAgICAtUiopCi0rICAgICAgICAgICAgICAgICAgICBkaXI9YGVjaG8gIlgkZGVwIiB8IHNlZCAtZSAncy9eWC1SLy8nYAotKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGVuYWJsZV9ycGF0aCIgIT0gbm87IHRoZW4KLSsgICAgICAgICAgICAgICAgICAgICAgZG5sIFBvdGVudGlhbGx5IGFkZCBESVIgdG8gcnBhdGhkaXJzLgotKyAgICAgICAgICAgICAgICAgICAgICBkbmwgVGhlIHJwYXRoZGlycyB3aWxsIGJlIGFwcGVuZGVkIHRvICRMSUJOQU1FIGF0IHRoZSBlbmQuCi0rICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KLSsgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJHJwYXRoZGlyczsgZG8KLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZGlyIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgICBkb25lCi0rICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgcnBhdGhkaXJzPSIkcnBhdGhkaXJzICRkaXIiCi0rICAgICAgICAgICAgICAgICAgICAgIGZpCi0rICAgICAgICAgICAgICAgICAgICAgIGRubCBQb3RlbnRpYWxseSBhZGQgRElSIHRvIGx0cnBhdGhkaXJzLgotKyAgICAgICAgICAgICAgICAgICAgICBkbmwgVGhlIGx0cnBhdGhkaXJzIHdpbGwgYmUgYXBwZW5kZWQgdG8gJExUTElCTkFNRSBhdCB0aGUgZW5kLgotKyAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9Ci0rICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRsdHJwYXRoZGlyczsgZG8KLSsgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZGlyIjsgdGhlbgotKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKLSsgICAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgICBkb25lCi0rICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICAgICAgICAgICAgICAgICAgbHRycGF0aGRpcnM9IiRsdHJwYXRoZGlycyAkZGlyIgotKyAgICAgICAgICAgICAgICAgICAgICBmaQotKyAgICAgICAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgICAgICAgIDs7Ci0rICAgICAgICAgICAgICAgICAgLWwqKQotKyAgICAgICAgICAgICAgICAgICAgZG5sIEhhbmRsZSB0aGlzIGluIHRoZSBuZXh0IHJvdW5kLgotKyAgICAgICAgICAgICAgICAgICAgbmFtZXNfbmV4dF9yb3VuZD0iJG5hbWVzX25leHRfcm91bmQgImBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MvXlgtbC8vJ2AKLSsgICAgICAgICAgICAgICAgICAgIDs7Ci0rICAgICAgICAgICAgICAgICAgKi5sYSkKLSsgICAgICAgICAgICAgICAgICAgIGRubCBIYW5kbGUgdGhpcyBpbiB0aGUgbmV4dCByb3VuZC4gVGhyb3cgYXdheSB0aGUgLmxhJ3MKLSsgICAgICAgICAgICAgICAgICAgIGRubCBkaXJlY3Rvcnk7IGl0IGlzIGFscmVhZHkgY29udGFpbmVkIGluIGEgcHJlY2VkaW5nIC1MCi0rICAgICAgICAgICAgICAgICAgICBkbmwgb3B0aW9uLgotKyAgICAgICAgICAgICAgICAgICAgbmFtZXNfbmV4dF9yb3VuZD0iJG5hbWVzX25leHRfcm91bmQgImBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MsXlguKi8sLCcgLWUgJ3MsXmxpYiwsJyAtZSAncyxcLmxhJCwsJ2AKLSsgICAgICAgICAgICAgICAgICAgIDs7Ci0rICAgICAgICAgICAgICAgICAgKikKLSsgICAgICAgICAgICAgICAgICAgIGRubCBNb3N0IGxpa2VseSBhbiBpbW1lZGlhdGUgbGlicmFyeSBuYW1lLgotKyAgICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZGVwIgotKyAgICAgICAgICAgICAgICAgICAgTFRMSUJbXU5BTUU9IiR7TFRMSUJbXU5BTUV9JHtMVExJQltdTkFNRTorIH0kZGVwIgotKyAgICAgICAgICAgICAgICAgICAgOzsKLSsgICAgICAgICAgICAgICAgZXNhYwotKyAgICAgICAgICAgICAgZG9uZQotKyAgICAgICAgICAgIGZpCi0rICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICBkbmwgRGlkbid0IGZpbmQgdGhlIGxpYnJhcnk7IGFzc3VtZSBpdCBpcyBpbiB0aGUgc3lzdGVtIGRpcmVjdG9yaWVzCi0rICAgICAgICAgICAgZG5sIGtub3duIHRvIHRoZSBsaW5rZXIgYW5kIHJ1bnRpbWUgbG9hZGVyLiAoQWxsIHRoZSBzeXN0ZW0KLSsgICAgICAgICAgICBkbmwgZGlyZWN0b3JpZXMga25vd24gdG8gdGhlIGxpbmtlciBzaG91bGQgYWxzbyBiZSBrbm93biB0byB0aGUKLSsgICAgICAgICAgICBkbmwgcnVudGltZSBsb2FkZXIsIG90aGVyd2lzZSB0aGUgc3lzdGVtIGlzIHNldmVyZWx5IG1pc2NvbmZpZ3VyZWQuKQotKyAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9LWwkbmFtZSIKLSsgICAgICAgICAgICBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfS1sJG5hbWUiCi0rICAgICAgICAgIGZpCi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgIGRvbmUKLSsgIGRvbmUKLSsgIGlmIHRlc3QgIlgkcnBhdGhkaXJzIiAhPSAiWCI7IHRoZW4KLSsgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCi0rICAgICAgZG5sIFdlaXJkIHBsYXRmb3JtOiBvbmx5IHRoZSBsYXN0IC1ycGF0aCBvcHRpb24gY291bnRzLCB0aGUgdXNlciBtdXN0Ci0rICAgICAgZG5sIHBhc3MgYWxsIHBhdGggZWxlbWVudHMgaW4gb25lIG9wdGlvbi4gV2UgY2FuIGFycmFuZ2UgdGhhdCBmb3IgYQotKyAgICAgIGRubCBzaW5nbGUgbGlicmFyeSwgYnV0IG5vdCB3aGVuIG1vcmUgdGhhbiBvbmUgJExJQk5BTUVzIGFyZSB1c2VkLgotKyAgICAgIGFsbGRpcnM9Ci0rICAgICAgZm9yIGZvdW5kX2RpciBpbiAkcnBhdGhkaXJzOyBkbwotKyAgICAgICAgYWxsZGlycz0iJHthbGxkaXJzfSR7YWxsZGlyczorJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3J9JGZvdW5kX2RpciIKLSsgICAgICBkb25lCi0rICAgICAgZG5sIE5vdGU6IGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgdXNlcyAkbGliZGlyIGFuZCAkd2wuCi0rICAgICAgYWNsX3NhdmVfbGliZGlyPSIkbGliZGlyIgotKyAgICAgIGxpYmRpcj0iJGFsbGRpcnMiCi0rICAgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotKyAgICAgIGxpYmRpcj0iJGFjbF9zYXZlX2xpYmRpciIKLSsgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmbGFnIgotKyAgICBlbHNlCi0rICAgICAgZG5sIFRoZSAtcnBhdGggb3B0aW9ucyBhcmUgY3VtdWxhdGl2ZS4KLSsgICAgICBmb3IgZm91bmRfZGlyIGluICRycGF0aGRpcnM7IGRvCi0rICAgICAgICBhY2xfc2F2ZV9saWJkaXI9IiRsaWJkaXIiCi0rICAgICAgICBsaWJkaXI9IiRmb3VuZF9kaXIiCi0rICAgICAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0rICAgICAgICBsaWJkaXI9IiRhY2xfc2F2ZV9saWJkaXIiCi0rICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmbGFnIgotKyAgICAgIGRvbmUKLSsgICAgZmkKLSsgIGZpCi0rICBpZiB0ZXN0ICJYJGx0cnBhdGhkaXJzIiAhPSAiWCI7IHRoZW4KLSsgICAgZG5sIFdoZW4gdXNpbmcgbGlidG9vbCwgdGhlIG9wdGlvbiB0aGF0IHdvcmtzIGZvciBib3RoIGxpYnJhcmllcyBhbmQKLSsgICAgZG5sIGV4ZWN1dGFibGVzIGlzIC1SLiBUaGUgLVIgb3B0aW9ucyBhcmUgY3VtdWxhdGl2ZS4KLSsgICAgZm9yIGZvdW5kX2RpciBpbiAkbHRycGF0aGRpcnM7IGRvCi0rICAgICAgTFRMSUJbXU5BTUU9IiR7TFRMSUJbXU5BTUV9JHtMVExJQltdTkFNRTorIH0tUiRmb3VuZF9kaXIiCi0rICAgIGRvbmUKLSsgIGZpCi0rXSkKLSsKLStkbmwgQUNfTElCX0FQUEVORFRPVkFSKFZBUiwgQ09OVEVOVFMpIGFwcGVuZHMgdGhlIGVsZW1lbnRzIG9mIENPTlRFTlRTIHRvIFZBUiwKLStkbmwgdW5sZXNzIGFscmVhZHkgcHJlc2VudCBpbiBWQVIuCi0rZG5sIFdvcmtzIG9ubHkgZm9yIENQUEZMQUdTLCBub3QgZm9yIExJQiogdmFyaWFibGVzIGJlY2F1c2UgdGhhdCBzb21ldGltZXMKLStkbmwgY29udGFpbnMgdHdvIG9yIHRocmVlIGNvbnNlY3V0aXZlIGVsZW1lbnRzIHRoYXQgYmVsb25nIHRvZ2V0aGVyLgotK0FDX0RFRlVOKFtBQ19MSUJfQVBQRU5EVE9WQVJdLAotK1sKLSsgIGZvciBlbGVtZW50IGluIFskMl07IGRvCi0rICAgIGhhdmVpdD0KLSsgICAgZm9yIHggaW4gJFskMV07IGRvCi0rICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKLSsgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgkZWxlbWVudCI7IHRoZW4KLSsgICAgICAgIGhhdmVpdD15ZXMKLSsgICAgICAgIGJyZWFrCi0rICAgICAgZmkKLSsgICAgZG9uZQotKyAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgIFskMV09IiR7WyQxXX0ke1skMV06KyB9JGVsZW1lbnQiCi0rICAgIGZpCi0rICBkb25lCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvbGliLXByZWZpeC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvbGliLXByZWZpeC5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0LjkyMTY2MjA1NiAtMDQwMAotQEAgLTAsMCArMSwxNTUgQEAKLSsjIGxpYi1wcmVmaXgubTQgc2VyaWFsIDMgKGdldHRleHQtMC4xMykKLStkbmwgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0rCi0rZG5sIEFDX0xJQl9BUkdfV0lUSCBpcyBzeW5vbnltb3VzIHRvIEFDX0FSR19XSVRIIGluIGF1dG9jb25mLTIuMTMsIGFuZAotK2RubCBzaW1pbGFyIHRvIEFDX0FSR19XSVRIIGluIGF1dG9jb25mIDIuNTIuLi4yLjU3IGV4Y2VwdCB0aGF0IGlzIGRvZXNuJ3QKLStkbmwgcmVxdWlyZSBleGNlc3NpdmUgYnJhY2tldGluZy4KLStpZmRlZihbQUNfSEVMUF9TVFJJTkddLAotK1tBQ19ERUZVTihbQUNfTElCX0FSR19XSVRIXSwgW0FDX0FSR19XSVRIKFskMV0sW1skMl1dLFskM10sWyQ0XSldKV0sCi0rW0FDX0RFRlVOKFtBQ19dW0xJQl9BUkdfV0lUSF0sIFtBQ19BUkdfV0lUSChbJDFdLFskMl0sWyQzXSxbJDRdKV0pXSkKLSsKLStkbmwgQUNfTElCX1BSRUZJWCBhZGRzIHRvIHRoZSBDUFBGTEFHUyBhbmQgTERGTEFHUyB0aGUgZmxhZ3MgdGhhdCBhcmUgbmVlZGVkCi0rZG5sIHRvIGFjY2VzcyBwcmV2aW91c2x5IGluc3RhbGxlZCBsaWJyYXJpZXMuIFRoZSBiYXNpYyBhc3N1bXB0aW9uIGlzIHRoYXQKLStkbmwgYSB1c2VyIHdpbGwgd2FudCBwYWNrYWdlcyB0byB1c2Ugb3RoZXIgcGFja2FnZXMgaGUgcHJldmlvdXNseSBpbnN0YWxsZWQKLStkbmwgd2l0aCB0aGUgc2FtZSAtLXByZWZpeCBvcHRpb24uCi0rZG5sIFRoaXMgbWFjcm8gaXMgbm90IG5lZWRlZCBpZiBvbmx5IEFDX0xJQl9MSU5LRkxBR1MgaXMgdXNlZCB0byBsb2NhdGUKLStkbmwgbGlicmFyaWVzLCBidXQgaXMgb3RoZXJ3aXNlIHZlcnkgY29udmVuaWVudC4KLStBQ19ERUZVTihbQUNfTElCX1BSRUZJWF0sCi0rWwotKyAgQUNfQkVGT1JFKFskMF0sIFtBQ19MSUJfTElOS0ZMQUdTXSkKLSsgIEFDX1JFUVVJUkUoW0FDX1BST0dfQ0NdKQotKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQotKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfUFJFRklYXSkKLSsgIGRubCBCeSBkZWZhdWx0LCBsb29rIGluICRpbmNsdWRlZGlyIGFuZCAkbGliZGlyLgotKyAgdXNlX2FkZGl0aW9uYWw9eWVzCi0rICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoWwotKyAgICBldmFsIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj1cIiRpbmNsdWRlZGlyXCIKLSsgICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcj1cIiRsaWJkaXJcIgotKyAgXSkKLSsgIEFDX0xJQl9BUkdfV0lUSChbbGliLXByZWZpeF0sCi0rWyAgLS13aXRoLWxpYi1wcmVmaXhbPURJUl0gc2VhcmNoIGZvciBsaWJyYXJpZXMgaW4gRElSL2luY2x1ZGUgYW5kIERJUi9saWIKLSsgIC0td2l0aG91dC1saWItcHJlZml4ICAgIGRvbid0IHNlYXJjaCBmb3IgbGlicmFyaWVzIGluIGluY2x1ZGVkaXIgYW5kIGxpYmRpcl0sCi0rWwotKyAgICBpZiB0ZXN0ICJYJHdpdGh2YWwiID0gIlhubyI7IHRoZW4KLSsgICAgICB1c2VfYWRkaXRpb25hbD1ubwotKyAgICBlbHNlCi0rICAgICAgaWYgdGVzdCAiWCR3aXRodmFsIiA9ICJYIjsgdGhlbgotKyAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFsKLSsgICAgICAgICAgZXZhbCBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9XCIkaW5jbHVkZWRpclwiCi0rICAgICAgICAgIGV2YWwgYWRkaXRpb25hbF9saWJkaXI9XCIkbGliZGlyXCIKLSsgICAgICAgIF0pCi0rICAgICAgZWxzZQotKyAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPSIkd2l0aHZhbC9pbmNsdWRlIgotKyAgICAgICAgYWRkaXRpb25hbF9saWJkaXI9IiR3aXRodmFsL2xpYiIKLSsgICAgICBmaQotKyAgICBmaQotK10pCi0rICBpZiB0ZXN0ICR1c2VfYWRkaXRpb25hbCA9IHllczsgdGhlbgotKyAgICBkbmwgUG90ZW50aWFsbHkgYWRkICRhZGRpdGlvbmFsX2luY2x1ZGVkaXIgdG8gJENQUEZMQUdTLgotKyAgICBkbmwgQnV0IGRvbid0IGFkZCBpdAotKyAgICBkbmwgICAxLiBpZiBpdCdzIHRoZSBzdGFuZGFyZCAvdXNyL2luY2x1ZGUsCi0rICAgIGRubCAgIDIuIGlmIGl0J3MgYWxyZWFkeSBwcmVzZW50IGluICRDUFBGTEFHUywKLSsgICAgZG5sICAgMy4gaWYgaXQncyAvdXNyL2xvY2FsL2luY2x1ZGUgYW5kIHdlIGFyZSB1c2luZyBHQ0Mgb24gTGludXgsCi0rICAgIGRubCAgIDQuIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYXMgYSBkaXJlY3RvcnkuCi0rICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiAhPSAiWC91c3IvaW5jbHVkZSI7IHRoZW4KLSsgICAgICBoYXZlaXQ9Ci0rICAgICAgZm9yIHggaW4gJENQUEZMQUdTOyBkbwotKyAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKLSsgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1JJGFkZGl0aW9uYWxfaW5jbHVkZWRpciI7IHRoZW4KLSsgICAgICAgICAgaGF2ZWl0PXllcwotKyAgICAgICAgICBicmVhawotKyAgICAgICAgZmkKLSsgICAgICBkb25lCi0rICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KLSsgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiA9ICJYL3Vzci9sb2NhbC9pbmNsdWRlIjsgdGhlbgotKyAgICAgICAgICBpZiB0ZXN0IC1uICIkR0NDIjsgdGhlbgotKyAgICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSsgICAgICAgICAgICAgIGxpbnV4KikgaGF2ZWl0PXllczs7Ci0rICAgICAgICAgICAgZXNhYwotKyAgICAgICAgICBmaQotKyAgICAgICAgZmkKLSsgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICAgIGlmIHRlc3QgLWQgIiRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiOyB0aGVuCi0rICAgICAgICAgICAgZG5sIFJlYWxseSBhZGQgJGFkZGl0aW9uYWxfaW5jbHVkZWRpciB0byAkQ1BQRkxBR1MuCi0rICAgICAgICAgICAgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9JHtDUFBGTEFHUzorIH0tSSRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiCi0rICAgICAgICAgIGZpCi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgIGZpCi0rICAgIGRubCBQb3RlbnRpYWxseSBhZGQgJGFkZGl0aW9uYWxfbGliZGlyIHRvICRMREZMQUdTLgotKyAgICBkbmwgQnV0IGRvbid0IGFkZCBpdAotKyAgICBkbmwgICAxLiBpZiBpdCdzIHRoZSBzdGFuZGFyZCAvdXNyL2xpYiwKLSsgICAgZG5sICAgMi4gaWYgaXQncyBhbHJlYWR5IHByZXNlbnQgaW4gJExERkxBR1MsCi0rICAgIGRubCAgIDMuIGlmIGl0J3MgL3Vzci9sb2NhbC9saWIgYW5kIHdlIGFyZSB1c2luZyBHQ0Mgb24gTGludXgsCi0rICAgIGRubCAgIDQuIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYXMgYSBkaXJlY3RvcnkuCi0rICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiICE9ICJYL3Vzci9saWIiOyB0aGVuCi0rICAgICAgaGF2ZWl0PQotKyAgICAgIGZvciB4IGluICRMREZMQUdTOyBkbwotKyAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKLSsgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1MJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgotKyAgICAgICAgICBoYXZlaXQ9eWVzCi0rICAgICAgICAgIGJyZWFrCi0rICAgICAgICBmaQotKyAgICAgIGRvbmUKLSsgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgotKyAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgPSAiWC91c3IvbG9jYWwvbGliIjsgdGhlbgotKyAgICAgICAgICBpZiB0ZXN0IC1uICIkR0NDIjsgdGhlbgotKyAgICAgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4KLSsgICAgICAgICAgICAgIGxpbnV4KikgaGF2ZWl0PXllczs7Ci0rICAgICAgICAgICAgZXNhYwotKyAgICAgICAgICBmaQotKyAgICAgICAgZmkKLSsgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCi0rICAgICAgICAgIGlmIHRlc3QgLWQgIiRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KLSsgICAgICAgICAgICBkbmwgUmVhbGx5IGFkZCAkYWRkaXRpb25hbF9saWJkaXIgdG8gJExERkxBR1MuCi0rICAgICAgICAgICAgTERGTEFHUz0iJHtMREZMQUdTfSR7TERGTEFHUzorIH0tTCRhZGRpdGlvbmFsX2xpYmRpciIKLSsgICAgICAgICAgZmkKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgZmkKLSsgIGZpCi0rXSkKLSsKLStkbmwgQUNfTElCX1BSRVBBUkVfUFJFRklYIGNyZWF0ZXMgdmFyaWFibGVzIGFjbF9maW5hbF9wcmVmaXgsCi0rZG5sIGFjbF9maW5hbF9leGVjX3ByZWZpeCwgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIHdoaWNoICRwcmVmaXggYW5kCi0rZG5sICRleGVjX3ByZWZpeCB3aWxsIGV4cGFuZCBhdCB0aGUgZW5kIG9mIHRoZSBjb25maWd1cmUgc2NyaXB0LgotK0FDX0RFRlVOKFtBQ19MSUJfUFJFUEFSRV9QUkVGSVhdLAotK1sKLSsgIGRubCBVbmZvcnR1bmF0ZWx5LCBwcmVmaXggYW5kIGV4ZWNfcHJlZml4IGdldCBvbmx5IGZpbmFsbHkgZGV0ZXJtaW5lZAotKyAgZG5sIGF0IHRoZSBlbmQgb2YgY29uZmlndXJlLgotKyAgaWYgdGVzdCAiWCRwcmVmaXgiID0gIlhOT05FIjsgdGhlbgotKyAgICBhY2xfZmluYWxfcHJlZml4PSIkYWNfZGVmYXVsdF9wcmVmaXgiCi0rICBlbHNlCi0rICAgIGFjbF9maW5hbF9wcmVmaXg9IiRwcmVmaXgiCi0rICBmaQotKyAgaWYgdGVzdCAiWCRleGVjX3ByZWZpeCIgPSAiWE5PTkUiOyB0aGVuCi0rICAgIGFjbF9maW5hbF9leGVjX3ByZWZpeD0nJHtwcmVmaXh9JwotKyAgZWxzZQotKyAgICBhY2xfZmluYWxfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKLSsgIGZpCi0rICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCi0rICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgotKyAgZXZhbCBhY2xfZmluYWxfZXhlY19wcmVmaXg9XCIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4XCIKLSsgIHByZWZpeD0iJGFjbF9zYXZlX3ByZWZpeCIKLStdKQotKwotK2RubCBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW3N0YXRlbWVudF0pIGV2YWx1YXRlcyBzdGF0ZW1lbnQsIHdpdGggdGhlCi0rZG5sIHZhcmlhYmxlcyBwcmVmaXggYW5kIGV4ZWNfcHJlZml4IGJvdW5kIHRvIHRoZSB2YWx1ZXMgdGhleSB3aWxsIGhhdmUKLStkbmwgYXQgdGhlIGVuZCBvZiB0aGUgY29uZmlndXJlIHNjcmlwdC4KLStBQ19ERUZVTihbQUNfTElCX1dJVEhfRklOQUxfUFJFRklYXSwKLStbCi0rICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCi0rICBwcmVmaXg9IiRhY2xfZmluYWxfcHJlZml4IgotKyAgYWNsX3NhdmVfZXhlY19wcmVmaXg9IiRleGVjX3ByZWZpeCIKLSsgIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4IgotKyAgJDEKLSsgIGV4ZWNfcHJlZml4PSIkYWNsX3NhdmVfZXhlY19wcmVmaXgiCi0rICBwcmVmaXg9IiRhY2xfc2F2ZV9wcmVmaXgiCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvbG9uZ2RvdWJsZS5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvbG9uZ2RvdWJsZS5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0Ljk0MjY1ODg2NCAtMDQwMAotQEAgLTAsMCArMSwzMCBAQAotKyMgbG9uZ2RvdWJsZS5tNCBzZXJpYWwgMSAoZ2V0dGV4dC0wLjEyKQotK2RubCBDb3B5cmlnaHQgKEMpIDIwMDItMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KLStkbmwgVGVzdCB3aGV0aGVyIHRoZSBjb21waWxlciBzdXBwb3J0cyB0aGUgJ2xvbmcgZG91YmxlJyB0eXBlLgotK2RubCBQcmVyZXF1aXNpdGU6IEFDX1BST0dfQ0MKLSsKLStBQ19ERUZVTihbZ3RfVFlQRV9MT05HRE9VQkxFXSwKLStbCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIGxvbmcgZG91YmxlXSwgZ3RfY3ZfY19sb25nX2RvdWJsZSwKLSsgICAgW2lmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICAgIGd0X2N2X2NfbG9uZ19kb3VibGU9eWVzCi0rICAgICBlbHNlCi0rICAgICAgIEFDX1RSWV9DT01QSUxFKFsKLSsgICAgICAgICAvKiBUaGUgU3RhcmRlbnQgVmlzdHJhIGtub3dzIHNpemVvZihsb25nIGRvdWJsZSksIGJ1dCBkb2VzIG5vdCBzdXBwb3J0IGl0LiAgKi8KLSsgICAgICAgICBsb25nIGRvdWJsZSBmb28gPSAwLjA7Ci0rICAgICAgICAgLyogT24gVWx0cml4IDQuMyBjYywgbG9uZyBkb3VibGUgaXMgNCBhbmQgZG91YmxlIGlzIDguICAqLwotKyAgICAgICAgIGludCBhcnJheSBbMiooc2l6ZW9mKGxvbmcgZG91YmxlKSA+PSBzaXplb2YoZG91YmxlKSkgLSAxXTsKLSsgICAgICAgICBdLCAsCi0rICAgICAgICAgZ3RfY3ZfY19sb25nX2RvdWJsZT15ZXMsIGd0X2N2X2NfbG9uZ19kb3VibGU9bm8pCi0rICAgICBmaV0pCi0rICBpZiB0ZXN0ICRndF9jdl9jX2xvbmdfZG91YmxlID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORShIQVZFX0xPTkdfRE9VQkxFLCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnbG9uZyBkb3VibGUnIHR5cGUuXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvbG9uZ2xvbmcubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L2xvbmdsb25nLm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuOTQ5NjU3ODAwIC0wNDAwCi1AQCAtMCwwICsxLDI1IEBACi0rIyBsb25nbG9uZy5tNCBzZXJpYWwgNAotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTktMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIFBhdWwgRWdnZXJ0LgotKwotKyMgRGVmaW5lIEhBVkVfTE9OR19MT05HIGlmICdsb25nIGxvbmcnIHdvcmtzLgotKwotK0FDX0RFRlVOKFtqbV9BQ19UWVBFX0xPTkdfTE9OR10sCi0rWwotKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBsb25nIGxvbmddLCBhY19jdl90eXBlX2xvbmdfbG9uZywKLSsgIFtBQ19UUllfTElOSyhbbG9uZyBsb25nIGxsID0gMUxMOyBpbnQgaSA9IDYzO10sCi0rICAgIFtsb25nIGxvbmcgbGxtYXggPSAobG9uZyBsb25nKSAtMTsKLSsgICAgIHJldHVybiBsbCA8PCBpIHwgbGwgPj4gaSB8IGxsbWF4IC8gbGwgfCBsbG1heCAlIGxsO10sCi0rICAgIGFjX2N2X3R5cGVfbG9uZ19sb25nPXllcywKLSsgICAgYWNfY3ZfdHlwZV9sb25nX2xvbmc9bm8pXSkKLSsgIGlmIHRlc3QgJGFjX2N2X3R5cGVfbG9uZ19sb25nID0geWVzOyB0aGVuCi0rICAgIEFDX0RFRklORShIQVZFX0xPTkdfTE9ORywgMSwKLSsgICAgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnbG9uZyBsb25nJyB0eXBlLl0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L01ha2VmaWxlLmFtCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9NYWtlZmlsZS5hbQkyMDA0LTA5LTEyIDE0OjQwOjM1LjA0ODY0Mjc1MiAtMDQwMAotQEAgLTAsMCArMSBAQAotK0VYVFJBX0RJU1QgPSBjb2Rlc2V0Lm00IGdldHRleHQubTQgZ2xpYmMyMS5tNCBpY29udi5tNCBpbnRkaXYwLm00IGludG1heC5tNCBpbnR0eXBlcy5tNCBpbnR0eXBlc19oLm00IGludHR5cGVzLXByaS5tNCBpc2MtcG9zaXgubTQgbGNtZXNzYWdlLm00IGxpYi1sZC5tNCBsaWItbGluay5tNCBsaWItcHJlZml4Lm00IGxvbmdkb3VibGUubTQgbG9uZ2xvbmcubTQgbmxzLm00IHBvLm00IHByaW50Zi1wb3NpeC5tNCBwcm9ndGVzdC5tNCBzaWduZWQubTQgc2l6ZV9tYXgubTQgc3RkaW50X2gubTQgdWludG1heF90Lm00IHVsb25nbG9uZy5tNCB3Y2hhcl90Lm00IHdpbnRfdC5tNCB4c2l6ZS5tNAotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9ubHMubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L25scy5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0Ljk1NTY1Njg4OCAtMDQwMAotQEAgLTAsMCArMSw0OSBAQAotKyMgbmxzLm00IHNlcmlhbCAxIChnZXR0ZXh0LTAuMTIpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5NS0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rZG5sCi0rZG5sIFRoaXMgZmlsZSBjYW4gY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKLStkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYwotK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0Ci0rZG5sIGZ1bmN0aW9uYWxpdHkuCi0rZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKLStkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCi0rZG5sIGdldHRleHQgcGFja2FnZSBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotK2RubCBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KLSsKLStkbmwgQXV0aG9yczoKLStkbmwgICBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5NS0yMDAwLgotK2RubCAgIEJydW5vIEhhaWJsZSA8aGFpYmxlQGNsaXNwLmNvbnMub3JnPiwgMjAwMC0yMDAzLgotKwotK0FDX0RFRlVOKFtBTV9OTFNdLAotK1sKLSsgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBOTFMgaXMgcmVxdWVzdGVkXSkKLSsgIGRubCBEZWZhdWx0IGlzIGVuYWJsZWQgTkxTCi0rICBBQ19BUkdfRU5BQkxFKG5scywKLSsgICAgWyAgLS1kaXNhYmxlLW5scyAgICAgICAgICAgZG8gbm90IHVzZSBOYXRpdmUgTGFuZ3VhZ2UgU3VwcG9ydF0sCi0rICAgIFVTRV9OTFM9JGVuYWJsZXZhbCwgVVNFX05MUz15ZXMpCi0rICBBQ19NU0dfUkVTVUxUKCRVU0VfTkxTKQotKyAgQUNfU1VCU1QoVVNFX05MUykKLStdKQotKwotK0FDX0RFRlVOKFtBTV9NS0lOU1RBTExESVJTXSwKLStbCi0rICBkbmwgSWYgdGhlIEFDX0NPTkZJR19BVVhfRElSIG1hY3JvIGZvciBhdXRvY29uZiBpcyB1c2VkIHdlIHBvc3NpYmx5Ci0rICBkbmwgZmluZCB0aGUgbWtpbnN0YWxsZGlycyBzY3JpcHQgaW4gYW5vdGhlciBzdWJkaXIgYnV0ICQodG9wX3NyY2RpcikuCi0rICBkbmwgVHJ5IHRvIGxvY2F0ZSBpdC4KLSsgIE1LSU5TVEFMTERJUlM9Ci0rICBpZiB0ZXN0IC1uICIkYWNfYXV4X2RpciI7IHRoZW4KLSsgICAgY2FzZSAiJGFjX2F1eF9kaXIiIGluCi0rICAgICAgLyopIE1LSU5TVEFMTERJUlM9IiRhY19hdXhfZGlyL21raW5zdGFsbGRpcnMiIDs7Ci0rICAgICAgKikgTUtJTlNUQUxMRElSUz0iXCQodG9wX2J1aWxkZGlyKS8kYWNfYXV4X2Rpci9ta2luc3RhbGxkaXJzIiA7OwotKyAgICBlc2FjCi0rICBmaQotKyAgaWYgdGVzdCAteiAiJE1LSU5TVEFMTERJUlMiOyB0aGVuCi0rICAgIE1LSU5TVEFMTERJUlM9IlwkKHRvcF9zcmNkaXIpL21raW5zdGFsbGRpcnMiCi0rICBmaQotKyAgQUNfU1VCU1QoTUtJTlNUQUxMRElSUykKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9wby5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvcG8ubTQJMjAwNC0wOS0xMiAxNDo0MDozNC45NjE2NTU5NzYgLTA0MDAKLUBAIC0wLDAgKzEsNDI2IEBACi0rIyBwby5tNCBzZXJpYWwgMyAoZ2V0dGV4dC0wLjE0KQotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTUtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotK2RubAotK2RubCBUaGlzIGZpbGUgY2FuIGNhbiBiZSB1c2VkIGluIHByb2plY3RzIHdoaWNoIGFyZSBub3QgYXZhaWxhYmxlIHVuZGVyCi0rZG5sIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLStkbmwgTGljZW5zZSBidXQgd2hpY2ggc3RpbGwgd2FudCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHTlUgZ2V0dGV4dAotK2RubCBmdW5jdGlvbmFsaXR5LgotK2RubCBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgY29kZSBvZiB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpcyBjb3ZlcmVkCi0rZG5sIGJ5IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIEdOVQotK2RubCBnZXR0ZXh0IHBhY2thZ2UgcGFja2FnZSBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLStkbmwgVGhleSBhcmUgKm5vdCogaW4gdGhlIHB1YmxpYyBkb21haW4uCi0rCi0rZG5sIEF1dGhvcnM6Ci0rZG5sICAgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDE5OTUtMjAwMC4KLStkbmwgICBCcnVubyBIYWlibGUgPGhhaWJsZUBjbGlzcC5jb25zLm9yZz4sIDIwMDAtMjAwMy4KLSsKLStkbmwgQ2hlY2tzIGZvciBhbGwgcHJlcmVxdWlzaXRlcyBvZiB0aGUgcG8gc3ViZGlyZWN0b3J5LgotK0FDX0RFRlVOKFtBTV9QT19TVUJESVJTXSwKLStbCi0rICBBQ19SRVFVSVJFKFtBQ19QUk9HX01BS0VfU0VUXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FDX1BST0dfSU5TVEFMTF0pZG5sCi0rICBBQ19SRVFVSVJFKFtBTV9NS0lOU1RBTExESVJTXSlkbmwKLSsgIEFDX1JFUVVJUkUoW0FNX05MU10pZG5sCi0rCi0rICBkbmwgUGVyZm9ybSB0aGUgZm9sbG93aW5nIHRlc3RzIGFsc28gaWYgLS1kaXNhYmxlLW5scyBoYXMgYmVlbiBnaXZlbiwKLSsgIGRubCBiZWNhdXNlIHRoZXkgYXJlIG5lZWRlZCBmb3IgIm1ha2UgZGlzdCIgdG8gd29yay4KLSsKLSsgIGRubCBTZWFyY2ggZm9yIEdOVSBtc2dmbXQgaW4gdGhlIFBBVEguCi0rICBkbmwgVGhlIGZpcnN0IHRlc3QgZXhjbHVkZXMgU29sYXJpcyBtc2dmbXQgYW5kIGVhcmx5IEdOVSBtc2dmbXQgdmVyc2lvbnMuCi0rICBkbmwgVGhlIHNlY29uZCB0ZXN0IGV4Y2x1ZGVzIEZyZWVCU0QgbXNnZm10LgotKyAgQU1fUEFUSF9QUk9HX1dJVEhfVEVTVChNU0dGTVQsIG1zZ2ZtdCwKLSsgICAgWyRhY19kaXIvJGFjX3dvcmQgLS1zdGF0aXN0aWNzIC9kZXYvbnVsbCA+L2Rldi9udWxsIDI+JjEgJiYKLSsgICAgIChpZiAkYWNfZGlyLyRhY193b3JkIC0tc3RhdGlzdGljcyAvZGV2L251bGwgMj4mMSA+L2Rldi9udWxsIHwgZ3JlcCB1c2FnZSA+L2Rldi9udWxsOyB0aGVuIGV4aXQgMTsgZWxzZSBleGl0IDA7IGZpKV0sCi0rICAgIDopCi0rICBBQ19QQVRIX1BST0coR01TR0ZNVCwgZ21zZ2ZtdCwgJE1TR0ZNVCkKLSsKLSsgIGRubCBTZWFyY2ggZm9yIEdOVSB4Z2V0dGV4dCAwLjEyIG9yIG5ld2VyIGluIHRoZSBQQVRILgotKyAgZG5sIFRoZSBmaXJzdCB0ZXN0IGV4Y2x1ZGVzIFNvbGFyaXMgeGdldHRleHQgYW5kIGVhcmx5IEdOVSB4Z2V0dGV4dCB2ZXJzaW9ucy4KLSsgIGRubCBUaGUgc2Vjb25kIHRlc3QgZXhjbHVkZXMgRnJlZUJTRCB4Z2V0dGV4dC4KLSsgIEFNX1BBVEhfUFJPR19XSVRIX1RFU1QoWEdFVFRFWFQsIHhnZXR0ZXh0LAotKyAgICBbJGFjX2Rpci8kYWNfd29yZCAtLW9taXQtaGVhZGVyIC0tY29weXJpZ2h0LWhvbGRlcj0gLS1tc2dpZC1idWdzLWFkZHJlc3M9IC9kZXYvbnVsbCA+L2Rldi9udWxsIDI+JjEgJiYKLSsgICAgIChpZiAkYWNfZGlyLyRhY193b3JkIC0tb21pdC1oZWFkZXIgLS1jb3B5cmlnaHQtaG9sZGVyPSAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0gL2Rldi9udWxsIDI+JjEgPi9kZXYvbnVsbCB8IGdyZXAgdXNhZ2UgPi9kZXYvbnVsbDsgdGhlbiBleGl0IDE7IGVsc2UgZXhpdCAwOyBmaSldLAotKyAgICA6KQotKyAgZG5sIFJlbW92ZSBsZWZ0b3ZlciBmcm9tIEZyZWVCU0QgeGdldHRleHQgY2FsbC4KLSsgIHJtIC1mIG1lc3NhZ2VzLnBvCi0rCi0rICBkbmwgU2VhcmNoIGZvciBHTlUgbXNnbWVyZ2UgMC4xMSBvciBuZXdlciBpbiB0aGUgUEFUSC4KLSsgIEFNX1BBVEhfUFJPR19XSVRIX1RFU1QoTVNHTUVSR0UsIG1zZ21lcmdlLAotKyAgICBbJGFjX2Rpci8kYWNfd29yZCAtLXVwZGF0ZSAtcSAvZGV2L251bGwgL2Rldi9udWxsID4vZGV2L251bGwgMj4mMV0sIDopCi0rCi0rICBkbmwgVGhpcyBjb3VsZCBnbyBhd2F5IHNvbWUgZGF5OyB0aGUgUEFUSF9QUk9HX1dJVEhfVEVTVCBhbHJlYWR5IGRvZXMgaXQuCi0rICBkbmwgVGVzdCB3aGV0aGVyIHdlIHJlYWxseSBmb3VuZCBHTlUgbXNnZm10LgotKyAgaWYgdGVzdCAiJEdNU0dGTVQiICE9ICI6IjsgdGhlbgotKyAgICBkbmwgSWYgaXQgaXMgbm8gR05VIG1zZ2ZtdCB3ZSBkZWZpbmUgaXQgYXMgOiBzbyB0aGF0IHRoZQotKyAgICBkbmwgTWFrZWZpbGVzIHN0aWxsIGNhbiB3b3JrLgotKyAgICBpZiAkR01TR0ZNVCAtLXN0YXRpc3RpY3MgL2Rldi9udWxsID4vZGV2L251bGwgMj4mMSAmJgotKyAgICAgICAoaWYgJEdNU0dGTVQgLS1zdGF0aXN0aWNzIC9kZXYvbnVsbCAyPiYxID4vZGV2L251bGwgfCBncmVwIHVzYWdlID4vZGV2L251bGw7IHRoZW4gZXhpdCAxOyBlbHNlIGV4aXQgMDsgZmkpOyB0aGVuCi0rICAgICAgOiA7Ci0rICAgIGVsc2UKLSsgICAgICBHTVNHRk1UPWBlY2hvICIkR01TR0ZNVCIgfCBzZWQgLWUgJ3MsXi4qLywsJ2AKLSsgICAgICBBQ19NU0dfUkVTVUxUKAotKyAgICAgICAgW2ZvdW5kICRHTVNHRk1UIHByb2dyYW0gaXMgbm90IEdOVSBtc2dmbXQ7IGlnbm9yZSBpdF0pCi0rICAgICAgR01TR0ZNVD0iOiIKLSsgICAgZmkKLSsgIGZpCi0rCi0rICBkbmwgVGhpcyBjb3VsZCBnbyBhd2F5IHNvbWUgZGF5OyB0aGUgUEFUSF9QUk9HX1dJVEhfVEVTVCBhbHJlYWR5IGRvZXMgaXQuCi0rICBkbmwgVGVzdCB3aGV0aGVyIHdlIHJlYWxseSBmb3VuZCBHTlUgeGdldHRleHQuCi0rICBpZiB0ZXN0ICIkWEdFVFRFWFQiICE9ICI6IjsgdGhlbgotKyAgICBkbmwgSWYgaXQgaXMgbm8gR05VIHhnZXR0ZXh0IHdlIGRlZmluZSBpdCBhcyA6IHNvIHRoYXQgdGhlCi0rICAgIGRubCBNYWtlZmlsZXMgc3RpbGwgY2FuIHdvcmsuCi0rICAgIGlmICRYR0VUVEVYVCAtLW9taXQtaGVhZGVyIC0tY29weXJpZ2h0LWhvbGRlcj0gLS1tc2dpZC1idWdzLWFkZHJlc3M9IC9kZXYvbnVsbCA+L2Rldi9udWxsIDI+JjEgJiYKLSsgICAgICAgKGlmICRYR0VUVEVYVCAtLW9taXQtaGVhZGVyIC0tY29weXJpZ2h0LWhvbGRlcj0gLS1tc2dpZC1idWdzLWFkZHJlc3M9IC9kZXYvbnVsbCAyPiYxID4vZGV2L251bGwgfCBncmVwIHVzYWdlID4vZGV2L251bGw7IHRoZW4gZXhpdCAxOyBlbHNlIGV4aXQgMDsgZmkpOyB0aGVuCi0rICAgICAgOiA7Ci0rICAgIGVsc2UKLSsgICAgICBBQ19NU0dfUkVTVUxUKAotKyAgICAgICAgW2ZvdW5kIHhnZXR0ZXh0IHByb2dyYW0gaXMgbm90IEdOVSB4Z2V0dGV4dDsgaWdub3JlIGl0XSkKLSsgICAgICBYR0VUVEVYVD0iOiIKLSsgICAgZmkKLSsgICAgZG5sIFJlbW92ZSBsZWZ0b3ZlciBmcm9tIEZyZWVCU0QgeGdldHRleHQgY2FsbC4KLSsgICAgcm0gLWYgbWVzc2FnZXMucG8KLSsgIGZpCi0rCi0rICBBQ19PVVRQVVRfQ09NTUFORFMoWwotKyAgICBmb3IgYWNfZmlsZSBpbiAkQ09ORklHX0ZJTEVTOyBkbwotKyAgICAgICMgU3VwcG9ydCAib3V0ZmlsZVs6aW5maWxlWzppbmZpbGUuLi5dXSIKLSsgICAgICBjYXNlICIkYWNfZmlsZSIgaW4KLSsgICAgICAgICo6KikgYWNfZmlsZT1gZWNobyAiJGFjX2ZpbGUifHNlZCAncyU6LiolJSdgIDs7Ci0rICAgICAgZXNhYwotKyAgICAgICMgUE8gZGlyZWN0b3JpZXMgaGF2ZSBhIE1ha2VmaWxlLmluIGdlbmVyYXRlZCBmcm9tIE1ha2VmaWxlLmluLmluLgotKyAgICAgIGNhc2UgIiRhY19maWxlIiBpbiAqL01ha2VmaWxlLmluKQotKyAgICAgICAgIyBBZGp1c3QgYSByZWxhdGl2ZSBzcmNkaXIuCi0rICAgICAgICBhY19kaXI9YGVjaG8gIiRhY19maWxlInxzZWQgJ3MlL1teL11bXi9dKiQlJSdgCi0rICAgICAgICBhY19kaXJfc3VmZml4PSIvYGVjaG8gIiRhY19kaXIifHNlZCAncyVeXC4vJSUnYCIKLSsgICAgICAgIGFjX2RvdHM9YGVjaG8gIiRhY19kaXJfc3VmZml4InxzZWQgJ3MlL1teL10qJS4uLyVnJ2AKLSsgICAgICAgICMgSW4gYXV0b2NvbmYtMi4xMyBpdCBpcyBjYWxsZWQgJGFjX2dpdmVuX3NyY2Rpci4KLSsgICAgICAgICMgSW4gYXV0b2NvbmYtMi41MCBpdCBpcyBjYWxsZWQgJHNyY2Rpci4KLSsgICAgICAgIHRlc3QgLW4gIiRhY19naXZlbl9zcmNkaXIiIHx8IGFjX2dpdmVuX3NyY2Rpcj0iJHNyY2RpciIKLSsgICAgICAgIGNhc2UgIiRhY19naXZlbl9zcmNkaXIiIGluCi0rICAgICAgICAgIC4pICB0b3Bfc3JjZGlyPWBlY2hvICRhY19kb3RzfHNlZCAncyUvJCUlJ2AgOzsKLSsgICAgICAgICAgLyopIHRvcF9zcmNkaXI9IiRhY19naXZlbl9zcmNkaXIiIDs7Ci0rICAgICAgICAgICopICB0b3Bfc3JjZGlyPSIkYWNfZG90cyRhY19naXZlbl9zcmNkaXIiIDs7Ci0rICAgICAgICBlc2FjCi0rICAgICAgICBpZiB0ZXN0IC1mICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvUE9URklMRVMuaW4iOyB0aGVuCi0rICAgICAgICAgIHJtIC1mICIkYWNfZGlyL1BPVEZJTEVTIgotKyAgICAgICAgICB0ZXN0IC1uICIkYXNfbWUiICYmIGVjaG8gIiRhc19tZTogY3JlYXRpbmcgJGFjX2Rpci9QT1RGSUxFUyIgfHwgZWNobyAiY3JlYXRpbmcgJGFjX2Rpci9QT1RGSUxFUyIKLSsgICAgICAgICAgY2F0ICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvUE9URklMRVMuaW4iIHwgc2VkIC1lICIvXiMvZCIgLWUgIi9eWyAJXSpcJC9kIiAtZSAicywuKiwgICAgICR0b3Bfc3JjZGlyLyYgXFxcXCwiIHwgc2VkIC1lICJcJHMvXCguKlwpIFxcXFwvXDEvIiA+ICIkYWNfZGlyL1BPVEZJTEVTIgotKyAgICAgICAgICBQT01BS0VGSUxFREVQUz0iUE9URklMRVMuaW4iCi0rICAgICAgICAgICMgQUxMX0xJTkdVQVMsIFBPRklMRVMsIFVQREFURVBPRklMRVMsIERVTU1ZUE9GSUxFUywgR01PRklMRVMgZGVwZW5kCi0rICAgICAgICAgICMgb24gJGFjX2RpciBidXQgZG9uJ3QgZGVwZW5kIG9uIHVzZXItc3BlY2lmaWVkIGNvbmZpZ3VyYXRpb24KLSsgICAgICAgICAgIyBwYXJhbWV0ZXJzLgotKyAgICAgICAgICBpZiB0ZXN0IC1mICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvTElOR1VBUyI7IHRoZW4KLSsgICAgICAgICAgICAjIFRoZSBMSU5HVUFTIGZpbGUgY29udGFpbnMgdGhlIHNldCBvZiBhdmFpbGFibGUgbGFuZ3VhZ2VzLgotKyAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRPQlNPTEVURV9BTExfTElOR1VBUyI7IHRoZW4KLSsgICAgICAgICAgICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBzZXR0aW5nIEFMTF9MSU5HVUFTIGluIGNvbmZpZ3VyZS5pbiBpcyBvYnNvbGV0ZSIgfHwgZWNobyAic2V0dGluZyBBTExfTElOR1VBUyBpbiBjb25maWd1cmUuaW4gaXMgb2Jzb2xldGUiCi0rICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICBBTExfTElOR1VBU189YHNlZCAtZSAiL14jL2QiICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvTElOR1VBUyJgCi0rICAgICAgICAgICAgIyBIaWRlIHRoZSBBTExfTElOR1VBUyBhc3NpZ21lbnQgZnJvbSBhdXRvbWFrZS4KLSsgICAgICAgICAgICBldmFsICdBTExfTElOR1VBUycnPSRBTExfTElOR1VBU18nCi0rICAgICAgICAgICAgUE9NQUtFRklMRURFUFM9IiRQT01BS0VGSUxFREVQUyBMSU5HVUFTIgotKyAgICAgICAgICBlbHNlCi0rICAgICAgICAgICAgIyBUaGUgc2V0IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXMgd2FzIGdpdmVuIGluIGNvbmZpZ3VyZS5pbi4KLSsgICAgICAgICAgICBldmFsICdBTExfTElOR1VBUycnPSRPQlNPTEVURV9BTExfTElOR1VBUycKLSsgICAgICAgICAgZmkKLSsgICAgICAgICAgIyBDb21wdXRlIFBPRklMRVMKLSsgICAgICAgICAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQobGFuZykucG8pCi0rICAgICAgICAgICMgQ29tcHV0ZSBVUERBVEVQT0ZJTEVTCi0rICAgICAgICAgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQobGFuZykucG8tdXBkYXRlKQotKyAgICAgICAgICAjIENvbXB1dGUgRFVNTVlQT0ZJTEVTCi0rICAgICAgICAgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQobGFuZykubm9wKQotKyAgICAgICAgICAjIENvbXB1dGUgR01PRklMRVMKLSsgICAgICAgICAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQobGFuZykuZ21vKQotKyAgICAgICAgICBjYXNlICIkYWNfZ2l2ZW5fc3JjZGlyIiBpbgotKyAgICAgICAgICAgIC4pIHNyY2RpcnByZT0gOzsKLSsgICAgICAgICAgICAqKSBzcmNkaXJwcmU9JyQoc3JjZGlyKS8nIDs7Ci0rICAgICAgICAgIGVzYWMKLSsgICAgICAgICAgUE9GSUxFUz0KLSsgICAgICAgICAgVVBEQVRFUE9GSUxFUz0KLSsgICAgICAgICAgRFVNTVlQT0ZJTEVTPQotKyAgICAgICAgICBHTU9GSUxFUz0KLSsgICAgICAgICAgZm9yIGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbwotKyAgICAgICAgICAgIFBPRklMRVM9IiRQT0ZJTEVTICRzcmNkaXJwcmUkbGFuZy5wbyIKLSsgICAgICAgICAgICBVUERBVEVQT0ZJTEVTPSIkVVBEQVRFUE9GSUxFUyAkbGFuZy5wby11cGRhdGUiCi0rICAgICAgICAgICAgRFVNTVlQT0ZJTEVTPSIkRFVNTVlQT0ZJTEVTICRsYW5nLm5vcCIKLSsgICAgICAgICAgICBHTU9GSUxFUz0iJEdNT0ZJTEVTICRzcmNkaXJwcmUkbGFuZy5nbW8iCi0rICAgICAgICAgIGRvbmUKLSsgICAgICAgICAgIyBDQVRBTE9HUyBkZXBlbmRzIG9uIGJvdGggJGFjX2RpciBhbmQgdGhlIHVzZXIncyBMSU5HVUFTCi0rICAgICAgICAgICMgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0rICAgICAgICAgIElOU1RfTElOR1VBUz0KLSsgICAgICAgICAgaWYgdGVzdCAtbiAiJEFMTF9MSU5HVUFTIjsgdGhlbgotKyAgICAgICAgICAgIGZvciBwcmVzZW50bGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCi0rICAgICAgICAgICAgICB1c2VpdD1ubwotKyAgICAgICAgICAgICAgaWYgdGVzdCAiJVVOU0VUJSIgIT0gIiRMSU5HVUFTIjsgdGhlbgotKyAgICAgICAgICAgICAgICBkZXNpcmVkbGFuZ3VhZ2VzPSIkTElOR1VBUyIKLSsgICAgICAgICAgICAgIGVsc2UKLSsgICAgICAgICAgICAgICAgZGVzaXJlZGxhbmd1YWdlcz0iJEFMTF9MSU5HVUFTIgotKyAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICAgIGZvciBkZXNpcmVkbGFuZyBpbiAkZGVzaXJlZGxhbmd1YWdlczsgZG8KLSsgICAgICAgICAgICAgICAgIyBVc2UgdGhlIHByZXNlbnRsYW5nIGNhdGFsb2cgaWYgZGVzaXJlZGxhbmcgaXMKLSsgICAgICAgICAgICAgICAgIyAgIGEuIGVxdWFsIHRvIHByZXNlbnRsYW5nLCBvcgotKyAgICAgICAgICAgICAgICAjICAgYi4gYSB2YXJpYW50IG9mIHByZXNlbnRsYW5nIChiZWNhdXNlIGluIHRoaXMgY2FzZSwKLSsgICAgICAgICAgICAgICAgIyAgICAgIHByZXNlbnRsYW5nIGNhbiBiZSB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIG1lc3NhZ2VzCi0rICAgICAgICAgICAgICAgICMgICAgICB3aGljaCBhcmUgbm90IHRyYW5zbGF0ZWQgaW4gdGhlIGRlc2lyZWRsYW5nIGNhdGFsb2cpLgotKyAgICAgICAgICAgICAgICBjYXNlICIkZGVzaXJlZGxhbmciIGluCi0rICAgICAgICAgICAgICAgICAgIiRwcmVzZW50bGFuZyIqKSB1c2VpdD15ZXM7OwotKyAgICAgICAgICAgICAgICBlc2FjCi0rICAgICAgICAgICAgICBkb25lCi0rICAgICAgICAgICAgICBpZiB0ZXN0ICR1c2VpdCA9IHllczsgdGhlbgotKyAgICAgICAgICAgICAgICBJTlNUX0xJTkdVQVM9IiRJTlNUX0xJTkdVQVMgJHByZXNlbnRsYW5nIgotKyAgICAgICAgICAgICAgZmkKLSsgICAgICAgICAgICBkb25lCi0rICAgICAgICAgIGZpCi0rICAgICAgICAgIENBVEFMT0dTPQotKyAgICAgICAgICBpZiB0ZXN0IC1uICIkSU5TVF9MSU5HVUFTIjsgdGhlbgotKyAgICAgICAgICAgIGZvciBsYW5nIGluICRJTlNUX0xJTkdVQVM7IGRvCi0rICAgICAgICAgICAgICBDQVRBTE9HUz0iJENBVEFMT0dTICRsYW5nLmdtbyIKLSsgICAgICAgICAgICBkb25lCi0rICAgICAgICAgIGZpCi0rICAgICAgICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBjcmVhdGluZyAkYWNfZGlyL01ha2VmaWxlIiB8fCBlY2hvICJjcmVhdGluZyAkYWNfZGlyL01ha2VmaWxlIgotKyAgICAgICAgICBzZWQgLWUgIi9eUE9URklMRVMgPS9yICRhY19kaXIvUE9URklMRVMiIC1lICIvXiMgTWFrZXZhcnMvciAkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvTWFrZXZhcnMiIC1lICJzfEBQT0ZJTEVTQHwkUE9GSUxFU3xnIiAtZSAic3xAVVBEQVRFUE9GSUxFU0B8JFVQREFURVBPRklMRVN8ZyIgLWUgInN8QERVTU1ZUE9GSUxFU0B8JERVTU1ZUE9GSUxFU3xnIiAtZSAic3xAR01PRklMRVNAfCRHTU9GSUxFU3xnIiAtZSAic3xAQ0FUQUxPR1NAfCRDQVRBTE9HU3xnIiAtZSAic3xAUE9NQUtFRklMRURFUFNAfCRQT01BS0VGSUxFREVQU3xnIiAiJGFjX2Rpci9NYWtlZmlsZS5pbiIgPiAiJGFjX2Rpci9NYWtlZmlsZSIKLSsgICAgICAgICAgZm9yIGYgaW4gIiRhY19naXZlbl9zcmNkaXIvJGFjX2RpciIvUnVsZXMtKjsgZG8KLSsgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZiI7IHRoZW4KLSsgICAgICAgICAgICAgIGNhc2UgIiRmIiBpbgotKyAgICAgICAgICAgICAgICAqLm9yaWcgfCAqLmJhayB8ICp+KSA7OwotKyAgICAgICAgICAgICAgICAqKSBjYXQgIiRmIiA+PiAiJGFjX2Rpci9NYWtlZmlsZSIgOzsKLSsgICAgICAgICAgICAgIGVzYWMKLSsgICAgICAgICAgICBmaQotKyAgICAgICAgICBkb25lCi0rICAgICAgICBmaQotKyAgICAgICAgOzsKLSsgICAgICBlc2FjCi0rICAgIGRvbmVdLAotKyAgIFsjIENhcHR1cmUgdGhlIHZhbHVlIG9mIG9ic29sZXRlIEFMTF9MSU5HVUFTIGJlY2F1c2Ugd2UgbmVlZCBpdCB0byBjb21wdXRlCi0rICAgICMgUE9GSUxFUywgVVBEQVRFUE9GSUxFUywgRFVNTVlQT0ZJTEVTLCBHTU9GSUxFUywgQ0FUQUxPR1MuIEJ1dCBoaWRlIGl0Ci0rICAgICMgZnJvbSBhdXRvbWFrZS4KLSsgICAgZXZhbCAnT0JTT0xFVEVfQUxMX0xJTkdVQVMnJz0iJEFMTF9MSU5HVUFTIicKLSsgICAgIyBDYXB0dXJlIHRoZSB2YWx1ZSBvZiBMSU5HVUFTIGJlY2F1c2Ugd2UgbmVlZCBpdCB0byBjb21wdXRlIENBVEFMT0dTLgotKyAgICBMSU5HVUFTPSIke0xJTkdVQVMtJVVOU0VUJX0iCi0rICAgXSkKLStdKQotKwotK2RubCBQb3N0cHJvY2Vzc2VzIGEgTWFrZWZpbGUgaW4gYSBkaXJlY3RvcnkgY29udGFpbmluZyBQTyBmaWxlcy4KLStBQ19ERUZVTihbQU1fUE9TVFBST0NFU1NfUE9fTUFLRUZJTEVdLAotK1sKLSsgICMgV2hlbiB0aGlzIGNvZGUgaXMgcnVuLCBpbiBjb25maWcuc3RhdHVzLCB0d28gdmFyaWFibGVzIGhhdmUgYWxyZWFkeSBiZWVuCi0rICAjIHNldDoKLSsgICMgLSBPQlNPTEVURV9BTExfTElOR1VBUyBpcyB0aGUgdmFsdWUgb2YgTElOR1VBUyBzZXQgaW4gY29uZmlndXJlLmluLAotKyAgIyAtIExJTkdVQVMgaXMgdGhlIHZhbHVlIG9mIHRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZSBMSU5HVUFTIGF0IGNvbmZpZ3VyZQotKyAgIyAgIHRpbWUuCi0rCi0rY2hhbmdlcXVvdGUoLClkbmwKLSsgICMgQWRqdXN0IGEgcmVsYXRpdmUgc3JjZGlyLgotKyAgYWNfZGlyPWBlY2hvICIkYWNfZmlsZSJ8c2VkICdzJS9bXi9dW14vXSokJSUnYAotKyAgYWNfZGlyX3N1ZmZpeD0iL2BlY2hvICIkYWNfZGlyInxzZWQgJ3MlXlwuLyUlJ2AiCi0rICBhY19kb3RzPWBlY2hvICIkYWNfZGlyX3N1ZmZpeCJ8c2VkICdzJS9bXi9dKiUuLi8lZydgCi0rICAjIEluIGF1dG9jb25mLTIuMTMgaXQgaXMgY2FsbGVkICRhY19naXZlbl9zcmNkaXIuCi0rICAjIEluIGF1dG9jb25mLTIuNTAgaXQgaXMgY2FsbGVkICRzcmNkaXIuCi0rICB0ZXN0IC1uICIkYWNfZ2l2ZW5fc3JjZGlyIiB8fCBhY19naXZlbl9zcmNkaXI9IiRzcmNkaXIiCi0rICBjYXNlICIkYWNfZ2l2ZW5fc3JjZGlyIiBpbgotKyAgICAuKSAgdG9wX3NyY2Rpcj1gZWNobyAkYWNfZG90c3xzZWQgJ3MlLyQlJSdgIDs7Ci0rICAgIC8qKSB0b3Bfc3JjZGlyPSIkYWNfZ2l2ZW5fc3JjZGlyIiA7OwotKyAgICAqKSAgdG9wX3NyY2Rpcj0iJGFjX2RvdHMkYWNfZ2l2ZW5fc3JjZGlyIiA7OwotKyAgZXNhYwotKwotKyAgIyBGaW5kIGEgd2F5IHRvIGVjaG8gc3RyaW5ncyB3aXRob3V0IGludGVycHJldGluZyBiYWNrc2xhc2guCi0rICBpZiB0ZXN0ICJYYChlY2hvICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JzsgdGhlbgotKyAgICBndF9lY2hvPSdlY2hvJwotKyAgZWxzZQotKyAgICBpZiB0ZXN0ICJYYChwcmludGYgJyVzXG4nICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JzsgdGhlbgotKyAgICAgIGd0X2VjaG89J3ByaW50ZiAlc1xuJwotKyAgICBlbHNlCi0rICAgICAgZWNob19mdW5jICgpIHsKLSsgICAgICAgIGNhdCA8PEVPVAotKyQqCi0rRU9UCi0rICAgICAgfQotKyAgICAgIGd0X2VjaG89J2VjaG9fZnVuYycKLSsgICAgZmkKLSsgIGZpCi0rCi0rICAjIEEgc2VkIHNjcmlwdCB0aGF0IGV4dHJhY3RzIHRoZSB2YWx1ZSBvZiBWQVJJQUJMRSBmcm9tIGEgTWFrZWZpbGUuCi0rICBzZWRfeF92YXJpYWJsZT0nCi0rIyBUZXN0IGlmIHRoZSBob2xkIHNwYWNlIGlzIGVtcHR5LgotK3gKLStzL1AvUC8KLSt4Ci0rdGEKLSsjIFllcyBpdCB3YXMgZW1wdHkuIExvb2sgaWYgd2UgaGF2ZSB0aGUgZXhwZWN0ZWQgdmFyaWFibGUgZGVmaW5pdGlvbi4KLSsvXlsJIF0qVkFSSUFCTEVbCSBdKj0vewotKyAgIyBTZWVuIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSB2YXJpYWJsZSBkZWZpbml0aW9uLgotKyAgcy9eWwkgXSpWQVJJQUJMRVsJIF0qPS8vCi0rICBiYQotK30KLStiZAotKzphCi0rIyBIZXJlIHdlIGFyZSBwcm9jZXNzaW5nIGEgbGluZSBmcm9tIHRoZSB2YXJpYWJsZSBkZWZpbml0aW9uLgotKyMgUmVtb3ZlIGNvbW1lbnQsIG1vcmUgcHJlY2lzZWx5IHJlcGxhY2UgaXQgd2l0aCBhIHNwYWNlLgotK3MvIy4qJC8gLwotKyMgU2VlIGlmIHRoZSBsaW5lIGVuZHMgaW4gYSBiYWNrc2xhc2guCi0rdGIKLSs6YgotK3MvXFwkLy8KLSsjIFByaW50IHRoZSBsaW5lLCB3aXRob3V0IHRoZSB0cmFpbGluZyBiYWNrc2xhc2guCi0rcAotK3RjCi0rIyBUaGVyZSB3YXMgbm8gdHJhaWxpbmcgYmFja3NsYXNoLiBUaGUgZW5kIG9mIHRoZSB2YXJpYWJsZSBkZWZpbml0aW9uIGlzCi0rIyByZWFjaGVkLiBDbGVhciB0aGUgaG9sZCBzcGFjZS4KLStzL14uKiQvLwotK3gKLStiZAotKzpjCi0rIyBBIHRyYWlsaW5nIGJhY2tzbGFzaCBtZWFucyB0aGF0IHRoZSB2YXJpYWJsZSBkZWZpbml0aW9uIGNvbnRpbnVlcyBpbiB0aGUKLSsjIG5leHQgbGluZS4gUHV0IGEgbm9uZW1wdHkgc3RyaW5nIGludG8gdGhlIGhvbGQgc3BhY2UgdG8gaW5kaWNhdGUgdGhpcy4KLStzL14uKiQvUC8KLSt4Ci0rOmQKLSsnCi0rY2hhbmdlcXVvdGUoWyxdKWRubAotKwotKyAgIyBTZXQgUE9URklMRVMgdG8gdGhlIHZhbHVlIG9mIHRoZSBNYWtlZmlsZSB2YXJpYWJsZSBQT1RGSUxFUy4KLSsgIHNlZF94X1BPVEZJTEVTPSJgJGd0X2VjaG8gXCIkc2VkX3hfdmFyaWFibGVcIiB8IHNlZCAtZSAnL14gKiMvZCcgLWUgJ3MvVkFSSUFCTEUvUE9URklMRVMvZydgIgotKyAgUE9URklMRVM9YHNlZCAtbiAtZSAiJHNlZF94X1BPVEZJTEVTIiA8ICIkYWNfZmlsZSJgCi0rICAjIENvbXB1dGUgUE9URklMRVNfREVQUyBhcwotKyAgIyAgICQoZm9yZWFjaCBmaWxlLCAkKFBPVEZJTEVTKSwgJCh0b3Bfc3JjZGlyKS8kKGZpbGUpKQotKyAgUE9URklMRVNfREVQUz0KLSsgIGZvciBmaWxlIGluICRQT1RGSUxFUzsgZG8KLSsgICAgUE9URklMRVNfREVQUz0iJFBPVEZJTEVTX0RFUFMgIickKHRvcF9zcmNkaXIpLyciJGZpbGUiCi0rICBkb25lCi0rICBQT01BS0VGSUxFREVQUz0iIgotKwotKyAgaWYgdGVzdCAtbiAiJE9CU09MRVRFX0FMTF9MSU5HVUFTIjsgdGhlbgotKyAgICB0ZXN0IC1uICIkYXNfbWUiICYmIGVjaG8gIiRhc19tZTogc2V0dGluZyBBTExfTElOR1VBUyBpbiBjb25maWd1cmUuaW4gaXMgb2Jzb2xldGUiIHx8IGVjaG8gInNldHRpbmcgQUxMX0xJTkdVQVMgaW4gY29uZmlndXJlLmluIGlzIG9ic29sZXRlIgotKyAgZmkKLSsgIGlmIHRlc3QgLWYgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9MSU5HVUFTIjsgdGhlbgotKyAgICAjIFRoZSBMSU5HVUFTIGZpbGUgY29udGFpbnMgdGhlIHNldCBvZiBhdmFpbGFibGUgbGFuZ3VhZ2VzLgotKyAgICBBTExfTElOR1VBU189YHNlZCAtZSAiL14jL2QiICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvTElOR1VBUyJgCi0rICAgIFBPTUFLRUZJTEVERVBTPSIkUE9NQUtFRklMRURFUFMgTElOR1VBUyIKLSsgIGVsc2UKLSsgICAgIyBTZXQgQUxMX0xJTkdVQVMgdG8gdGhlIHZhbHVlIG9mIHRoZSBNYWtlZmlsZSB2YXJpYWJsZSBMSU5HVUFTLgotKyAgICBzZWRfeF9MSU5HVUFTPSJgJGd0X2VjaG8gXCIkc2VkX3hfdmFyaWFibGVcIiB8IHNlZCAtZSAnL14gKiMvZCcgLWUgJ3MvVkFSSUFCTEUvTElOR1VBUy9nJ2AiCi0rICAgIEFMTF9MSU5HVUFTXz1gc2VkIC1uIC1lICIkc2VkX3hfTElOR1VBUyIgPCAiJGFjX2ZpbGUiYAotKyAgZmkKLSsgICMgSGlkZSB0aGUgQUxMX0xJTkdVQVMgYXNzaWdtZW50IGZyb20gYXV0b21ha2UuCi0rICBldmFsICdBTExfTElOR1VBUycnPSRBTExfTElOR1VBU18nCi0rICAjIENvbXB1dGUgUE9GSUxFUwotKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQobGFuZykucG8pCi0rICAjIENvbXB1dGUgVVBEQVRFUE9GSUxFUwotKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChsYW5nKS5wby11cGRhdGUpCi0rICAjIENvbXB1dGUgRFVNTVlQT0ZJTEVTCi0rICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKGxhbmcpLm5vcCkKLSsgICMgQ29tcHV0ZSBHTU9GSUxFUwotKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQobGFuZykuZ21vKQotKyAgIyBDb21wdXRlIFBST1BFUlRJRVNGSUxFUwotKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJCh0b3Bfc3JjZGlyKS8kKERPTUFJTilfJChsYW5nKS5wcm9wZXJ0aWVzKQotKyAgIyBDb21wdXRlIENMQVNTRklMRVMKLSsgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQodG9wX3NyY2RpcikvJChET01BSU4pXyQobGFuZykuY2xhc3MpCi0rICAjIENvbXB1dGUgUU1GSUxFUwotKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQobGFuZykucW0pCi0rICAjIENvbXB1dGUgTVNHRklMRVMKLSsgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGZyb2IgJChsYW5nKSkubXNnKQotKyAgIyBDb21wdXRlIFJFU09VUkNFU0RMTEZJTEVTCi0rICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChmcm9iICQobGFuZykpLyQoRE9NQUlOKS5yZXNvdXJjZXMuZGxsKQotKyAgY2FzZSAiJGFjX2dpdmVuX3NyY2RpciIgaW4KLSsgICAgLikgc3JjZGlycHJlPSA7OwotKyAgICAqKSBzcmNkaXJwcmU9JyQoc3JjZGlyKS8nIDs7Ci0rICBlc2FjCi0rICBQT0ZJTEVTPQotKyAgVVBEQVRFUE9GSUxFUz0KLSsgIERVTU1ZUE9GSUxFUz0KLSsgIEdNT0ZJTEVTPQotKyAgUFJPUEVSVElFU0ZJTEVTPQotKyAgQ0xBU1NGSUxFUz0KLSsgIFFNRklMRVM9Ci0rICBNU0dGSUxFUz0KLSsgIFJFU09VUkNFU0RMTEZJTEVTPQotKyAgZm9yIGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbwotKyAgICBQT0ZJTEVTPSIkUE9GSUxFUyAkc3JjZGlycHJlJGxhbmcucG8iCi0rICAgIFVQREFURVBPRklMRVM9IiRVUERBVEVQT0ZJTEVTICRsYW5nLnBvLXVwZGF0ZSIKLSsgICAgRFVNTVlQT0ZJTEVTPSIkRFVNTVlQT0ZJTEVTICRsYW5nLm5vcCIKLSsgICAgR01PRklMRVM9IiRHTU9GSUxFUyAkc3JjZGlycHJlJGxhbmcuZ21vIgotKyAgICBQUk9QRVJUSUVTRklMRVM9IiRQUk9QRVJUSUVTRklMRVMgXCQodG9wX3NyY2RpcikvXCQoRE9NQUlOKV8kbGFuZy5wcm9wZXJ0aWVzIgotKyAgICBDTEFTU0ZJTEVTPSIkQ0xBU1NGSUxFUyBcJCh0b3Bfc3JjZGlyKS9cJChET01BSU4pXyRsYW5nLmNsYXNzIgotKyAgICBRTUZJTEVTPSIkUU1GSUxFUyAkc3JjZGlycHJlJGxhbmcucW0iCi0rICAgIGZyb2JiZWRsYW5nPWBlY2hvICRsYW5nIHwgc2VkIC1lICdzL1wuLiokLy8nIC1lICd5L0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LydgCi0rICAgIE1TR0ZJTEVTPSIkTVNHRklMRVMgJHNyY2RpcnByZSRmcm9iYmVkbGFuZy5tc2ciCi0rICAgIGZyb2JiZWRsYW5nPWBlY2hvICRsYW5nIHwgc2VkIC1lICdzL18vLS9nJ2AKLSsgICAgUkVTT1VSQ0VTRExMRklMRVM9IiRSRVNPVVJDRVNETExGSUxFUyAkc3JjZGlycHJlJGZyb2JiZWRsYW5nL1wkKERPTUFJTikucmVzb3VyY2VzLmRsbCIKLSsgIGRvbmUKLSsgICMgQ0FUQUxPR1MgZGVwZW5kcyBvbiBib3RoICRhY19kaXIgYW5kIHRoZSB1c2VyJ3MgTElOR1VBUwotKyAgIyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KLSsgIElOU1RfTElOR1VBUz0KLSsgIGlmIHRlc3QgLW4gIiRBTExfTElOR1VBUyI7IHRoZW4KLSsgICAgZm9yIHByZXNlbnRsYW5nIGluICRBTExfTElOR1VBUzsgZG8KLSsgICAgICB1c2VpdD1ubwotKyAgICAgIGlmIHRlc3QgIiVVTlNFVCUiICE9ICIkTElOR1VBUyI7IHRoZW4KLSsgICAgICAgIGRlc2lyZWRsYW5ndWFnZXM9IiRMSU5HVUFTIgotKyAgICAgIGVsc2UKLSsgICAgICAgIGRlc2lyZWRsYW5ndWFnZXM9IiRBTExfTElOR1VBUyIKLSsgICAgICBmaQotKyAgICAgIGZvciBkZXNpcmVkbGFuZyBpbiAkZGVzaXJlZGxhbmd1YWdlczsgZG8KLSsgICAgICAgICMgVXNlIHRoZSBwcmVzZW50bGFuZyBjYXRhbG9nIGlmIGRlc2lyZWRsYW5nIGlzCi0rICAgICAgICAjICAgYS4gZXF1YWwgdG8gcHJlc2VudGxhbmcsIG9yCi0rICAgICAgICAjICAgYi4gYSB2YXJpYW50IG9mIHByZXNlbnRsYW5nIChiZWNhdXNlIGluIHRoaXMgY2FzZSwKLSsgICAgICAgICMgICAgICBwcmVzZW50bGFuZyBjYW4gYmUgdXNlZCBhcyBhIGZhbGxiYWNrIGZvciBtZXNzYWdlcwotKyAgICAgICAgIyAgICAgIHdoaWNoIGFyZSBub3QgdHJhbnNsYXRlZCBpbiB0aGUgZGVzaXJlZGxhbmcgY2F0YWxvZykuCi0rICAgICAgICBjYXNlICIkZGVzaXJlZGxhbmciIGluCi0rICAgICAgICAgICIkcHJlc2VudGxhbmciKikgdXNlaXQ9eWVzOzsKLSsgICAgICAgIGVzYWMKLSsgICAgICBkb25lCi0rICAgICAgaWYgdGVzdCAkdXNlaXQgPSB5ZXM7IHRoZW4KLSsgICAgICAgIElOU1RfTElOR1VBUz0iJElOU1RfTElOR1VBUyAkcHJlc2VudGxhbmciCi0rICAgICAgZmkKLSsgICAgZG9uZQotKyAgZmkKLSsgIENBVEFMT0dTPQotKyAgSkFWQUNBVEFMT0dTPQotKyAgUVRDQVRBTE9HUz0KLSsgIFRDTENBVEFMT0dTPQotKyAgQ1NIQVJQQ0FUQUxPR1M9Ci0rICBpZiB0ZXN0IC1uICIkSU5TVF9MSU5HVUFTIjsgdGhlbgotKyAgICBmb3IgbGFuZyBpbiAkSU5TVF9MSU5HVUFTOyBkbwotKyAgICAgIENBVEFMT0dTPSIkQ0FUQUxPR1MgJGxhbmcuZ21vIgotKyAgICAgIEpBVkFDQVRBTE9HUz0iJEpBVkFDQVRBTE9HUyBcJChET01BSU4pXyRsYW5nLnByb3BlcnRpZXMiCi0rICAgICAgUVRDQVRBTE9HUz0iJFFUQ0FUQUxPR1MgJGxhbmcucW0iCi0rICAgICAgZnJvYmJlZGxhbmc9YGVjaG8gJGxhbmcgfCBzZWQgLWUgJ3MvXC4uKiQvLycgLWUgJ3kvQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXovJ2AKLSsgICAgICBUQ0xDQVRBTE9HUz0iJFRDTENBVEFMT0dTICRmcm9iYmVkbGFuZy5tc2ciCi0rICAgICAgZnJvYmJlZGxhbmc9YGVjaG8gJGxhbmcgfCBzZWQgLWUgJ3MvXy8tL2cnYAotKyAgICAgIENTSEFSUENBVEFMT0dTPSIkQ1NIQVJQQ0FUQUxPR1MgJGZyb2JiZWRsYW5nL1wkKERPTUFJTikucmVzb3VyY2VzLmRsbCIKLSsgICAgZG9uZQotKyAgZmkKLSsKLSsgIHNlZCAtZSAic3xAUE9URklMRVNfREVQU0B8JFBPVEZJTEVTX0RFUFN8ZyIgLWUgInN8QFBPRklMRVNAfCRQT0ZJTEVTfGciIC1lICJzfEBVUERBVEVQT0ZJTEVTQHwkVVBEQVRFUE9GSUxFU3xnIiAtZSAic3xARFVNTVlQT0ZJTEVTQHwkRFVNTVlQT0ZJTEVTfGciIC1lICJzfEBHTU9GSUxFU0B8JEdNT0ZJTEVTfGciIC1lICJzfEBQUk9QRVJUSUVTRklMRVNAfCRQUk9QRVJUSUVTRklMRVN8ZyIgLWUgInN8QENMQVNTRklMRVNAfCRDTEFTU0ZJTEVTfGciIC1lICJzfEBRTUZJTEVTQHwkUU1GSUxFU3xnIiAtZSAic3xATVNHRklMRVNAfCRNU0dGSUxFU3xnIiAtZSAic3xAUkVTT1VSQ0VTRExMRklMRVNAfCRSRVNPVVJDRVNETExGSUxFU3xnIiAtZSAic3xAQ0FUQUxPR1NAfCRDQVRBTE9HU3xnIiAtZSAic3xASkFWQUNBVEFMT0dTQHwkSkFWQUNBVEFMT0dTfGciIC1lICJzfEBRVENBVEFMT0dTQHwkUVRDQVRBTE9HU3xnIiAtZSAic3xAVENMQ0FUQUxPR1NAfCRUQ0xDQVRBTE9HU3xnIiAtZSAic3xAQ1NIQVJQQ0FUQUxPR1NAfCRDU0hBUlBDQVRBTE9HU3xnIiAtZSAncyxeI2Rpc3RkaXI6LGRpc3RkaXI6LCcgPCAiJGFjX2ZpbGUiID4gIiRhY19maWxlLnRtcCIKLSsgIGlmIGdyZXAgLWwgJ0BUQ0xDQVRBTE9HU0AnICIkYWNfZmlsZSIgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgIyBBZGQgZGVwZW5kZW5jaWVzIHRoYXQgY2Fubm90IGJlIGZvcm11bGF0ZWQgYXMgYSBzaW1wbGUgc3VmZml4IHJ1bGUuCi0rICAgIGZvciBsYW5nIGluICRBTExfTElOR1VBUzsgZG8KLSsgICAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9cLi4qJC8vJyAtZSAneS9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei8nYAotKyAgICAgIGNhdCA+PiAiJGFjX2ZpbGUudG1wIiA8PEVPRgotKyRmcm9iYmVkbGFuZy5tc2c6ICRsYW5nLnBvCi0rCUBlY2hvICJcJChNU0dGTVQpIC1jIC0tdGNsIC1kIFwkKHNyY2RpcikgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIjsgXAotKwlcJChNU0dGTVQpIC1jIC0tdGNsIC1kICJcJChzcmNkaXIpIiAtbCAkbGFuZyAkc3JjZGlycHJlJGxhbmcucG8gfHwgeyBybSAtZiAiXCQoc3JjZGlyKS8kZnJvYmJlZGxhbmcubXNnIjsgZXhpdCAxOyB9Ci0rRU9GCi0rICAgIGRvbmUKLSsgIGZpCi0rICBpZiBncmVwIC1sICdAQ1NIQVJQQ0FUQUxPR1NAJyAiJGFjX2ZpbGUiID4gL2Rldi9udWxsOyB0aGVuCi0rICAgICMgQWRkIGRlcGVuZGVuY2llcyB0aGF0IGNhbm5vdCBiZSBmb3JtdWxhdGVkIGFzIGEgc2ltcGxlIHN1ZmZpeCBydWxlLgotKyAgICBmb3IgbGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCi0rICAgICAgZnJvYmJlZGxhbmc9YGVjaG8gJGxhbmcgfCBzZWQgLWUgJ3MvXy8tL2cnYAotKyAgICAgIGNhdCA+PiAiJGFjX2ZpbGUudG1wIiA8PEVPRgotKyRmcm9iYmVkbGFuZy9cJChET01BSU4pLnJlc291cmNlcy5kbGw6ICRsYW5nLnBvCi0rCUBlY2hvICJcJChNU0dGTVQpIC1jIC0tY3NoYXJwIC1kIFwkKHNyY2RpcikgLWwgJGxhbmcgJHNyY2RpcnByZSRsYW5nLnBvIC1yIFwkKERPTUFJTikiOyBcCi0rCVwkKE1TR0ZNVCkgLWMgLS1jc2hhcnAgLWQgIlwkKHNyY2RpcikiIC1sICRsYW5nICRzcmNkaXJwcmUkbGFuZy5wbyAtciAiXCQoRE9NQUlOKSIgfHwgeyBybSAtZiAiXCQoc3JjZGlyKS8kZnJvYmJlZGxhbmcubXNnIjsgZXhpdCAxOyB9Ci0rRU9GCi0rICAgIGRvbmUKLSsgIGZpCi0rICBpZiB0ZXN0IC1uICIkUE9NQUtFRklMRURFUFMiOyB0aGVuCi0rICAgIGNhdCA+PiAiJGFjX2ZpbGUudG1wIiA8PEVPRgotK01ha2VmaWxlOiAkUE9NQUtFRklMRURFUFMKLStFT0YKLSsgIGZpCi0rICBtdiAiJGFjX2ZpbGUudG1wIiAiJGFjX2ZpbGUiCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvcHJpbnRmLXBvc2l4Lm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC9wcmludGYtcG9zaXgubTQJMjAwNC0wOS0xMiAxNDo0MDozNC45NzQ2NTQwMDAgLTA0MDAKLUBAIC0wLDAgKzEsNDYgQEAKLSsjIHByaW50Zi1wb3NpeC5tNCBzZXJpYWwgMiAoZ2V0dGV4dC0wLjEzLjEpCi0rZG5sIENvcHlyaWdodCAoQykgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KLStkbmwgVGVzdCB3aGV0aGVyIHRoZSBwcmludGYoKSBmdW5jdGlvbiBzdXBwb3J0cyBQT1NJWC9YU0kgZm9ybWF0IHN0cmluZ3Mgd2l0aAotK2RubCBwb3NpdGlvbnMuCi0rCi0rQUNfREVGVU4oW2d0X1BSSU5URl9QT1NJWF0sCi0rWwotKyAgQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pCi0rICBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciBwcmludGYoKSBzdXBwb3J0cyBQT1NJWC9YU0kgZm9ybWF0IHN0cmluZ3NdLAotKyAgICBndF9jdl9mdW5jX3ByaW50Zl9wb3NpeCwKLSsgICAgWwotKyAgICAgIEFDX1RSWV9SVU4oWwotKyNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsvKiBUaGUgc3RyaW5nICIlMiRkICUxJGQiLCB3aXRoIGRvbGxhciBjaGFyYWN0ZXJzIHByb3RlY3RlZCBmcm9tIHRoZSBzaGVsbCdzCi0rICAgZG9sbGFyIGV4cGFuc2lvbiAocG9zc2libHkgYW4gYXV0b2NvbmYgYnVnKS4gICovCi0rc3RhdGljIGNoYXIgZm9ybWF0W10gPSB7ICclJywgJzInLCAnJCcsICdkJywgJyAnLCAnJScsICcxJywgJyQnLCAnZCcsICdcMCcgfTsKLStzdGF0aWMgY2hhciBidWZbMTAwXTsKLStpbnQgbWFpbiAoKQotK3sKLSsgIHNwcmludGYgKGJ1ZiwgZm9ybWF0LCAzMywgNTUpOwotKyAgcmV0dXJuIChzdHJjbXAgKGJ1ZiwgIjU1IDMzIikgIT0gMCk7Ci0rfV0sIGd0X2N2X2Z1bmNfcHJpbnRmX3Bvc2l4PXllcywgZ3RfY3ZfZnVuY19wcmludGZfcG9zaXg9bm8sCi0rICAgICAgWwotKyAgICAgICAgQUNfRUdSRVBfQ1BQKG5vdHBvc2l4LCBbCi0rI2lmIGRlZmluZWQgX19OZXRCU0RfXyB8fCBkZWZpbmVkIF9NU0NfVkVSIHx8IGRlZmluZWQgX19NSU5HVzMyX18gfHwgZGVmaW5lZCBfX0NZR1dJTl9fCi0rICBub3Rwb3NpeAotKyNlbmRpZgotKyAgICAgICAgXSwgZ3RfY3ZfZnVuY19wcmludGZfcG9zaXg9Imd1ZXNzaW5nIG5vIiwKLSsgICAgICAgICAgIGd0X2N2X2Z1bmNfcHJpbnRmX3Bvc2l4PSJndWVzc2luZyB5ZXMiKQotKyAgICAgIF0pCi0rICAgIF0pCi0rICBjYXNlICRndF9jdl9mdW5jX3ByaW50Zl9wb3NpeCBpbgotKyAgICAqeWVzKQotKyAgICAgIEFDX0RFRklORShIQVZFX1BPU0lYX1BSSU5URiwgMSwKLSsgICAgICAgIFtEZWZpbmUgaWYgeW91ciBwcmludGYoKSBmdW5jdGlvbiBzdXBwb3J0cyBmb3JtYXQgc3RyaW5ncyB3aXRoIHBvc2l0aW9ucy5dKQotKyAgICAgIDs7Ci0rICBlc2FjCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQvcHJvZ3Rlc3QubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L3Byb2d0ZXN0Lm00CTIwMDQtMDktMTIgMTQ6NDA6MzQuOTkwNjUxNTY4IC0wNDAwCi1AQCAtMCwwICsxLDkxIEBACi0rIyBwcm9ndGVzdC5tNCBzZXJpYWwgMyAoZ2V0dGV4dC0wLjEyKQotK2RubCBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotK2RubAotK2RubCBUaGlzIGZpbGUgY2FuIGNhbiBiZSB1c2VkIGluIHByb2plY3RzIHdoaWNoIGFyZSBub3QgYXZhaWxhYmxlIHVuZGVyCi0rZG5sIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKLStkbmwgTGljZW5zZSBidXQgd2hpY2ggc3RpbGwgd2FudCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHTlUgZ2V0dGV4dAotK2RubCBmdW5jdGlvbmFsaXR5LgotK2RubCBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgY29kZSBvZiB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpcyBjb3ZlcmVkCi0rZG5sIGJ5IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIEdOVQotK2RubCBnZXR0ZXh0IHBhY2thZ2UgcGFja2FnZSBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KLStkbmwgVGhleSBhcmUgKm5vdCogaW4gdGhlIHB1YmxpYyBkb21haW4uCi0rCi0rZG5sIEF1dGhvcnM6Ci0rZG5sICAgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDE5OTYuCi0rCi0rIyBTZWFyY2ggcGF0aCBmb3IgYSBwcm9ncmFtIHdoaWNoIHBhc3NlcyB0aGUgZ2l2ZW4gdGVzdC4KLSsKLStkbmwgQU1fUEFUSF9QUk9HX1dJVEhfVEVTVChWQVJJQUJMRSwgUFJPRy1UTy1DSEVDSy1GT1IsCi0rZG5sICAgVEVTVC1QRVJGT1JNRUQtT04tRk9VTkRfUFJPR1JBTSBbLCBWQUxVRS1JRi1OT1QtRk9VTkQgWywgUEFUSF1dKQotK0FDX0RFRlVOKFtBTV9QQVRIX1BST0dfV0lUSF9URVNUXSwKLStbCi0rIyBQcmVwYXJlIFBBVEhfU0VQQVJBVE9SLgotKyMgVGhlIHVzZXIgaXMgYWx3YXlzIHJpZ2h0LgotK2lmIHRlc3QgIiR7UEFUSF9TRVBBUkFUT1Irc2V0fSIgIT0gc2V0OyB0aGVuCi0rICBlY2hvICIjISAvYmluL3NoIiA+Y29uZiQkLnNoCi0rICBlY2hvICAiZXhpdCAwIiAgID4+Y29uZiQkLnNoCi0rICBjaG1vZCAreCBjb25mJCQuc2gKLSsgIGlmIChQQVRIPSIvbm9uZXhpc3RlbnQ7LiI7IGNvbmYkJC5zaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICAgIFBBVEhfU0VQQVJBVE9SPSc7JwotKyAgZWxzZQotKyAgICBQQVRIX1NFUEFSQVRPUj06Ci0rICBmaQotKyAgcm0gLWYgY29uZiQkLnNoCi0rZmkKLSsKLSsjIEZpbmQgb3V0IGhvdyB0byB0ZXN0IGZvciBleGVjdXRhYmxlIGZpbGVzLiBEb24ndCB1c2UgYSB6ZXJvLWJ5dGUgZmlsZSwKLSsjIGFzIHN5c3RlbXMgbWF5IHVzZSBtZXRob2RzIG90aGVyIHRoYW4gbW9kZSBiaXRzIHRvIGRldGVybWluZSBleGVjdXRhYmlsaXR5LgotK2NhdCA+Y29uZiQkLmZpbGUgPDxfQVNFT0YKLSsjISAvYmluL3NoCi0rZXhpdCAwCi0rX0FTRU9GCi0rY2htb2QgK3ggY29uZiQkLmZpbGUKLStpZiB0ZXN0IC14IGNvbmYkJC5maWxlID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgYWNfZXhlY3V0YWJsZV9wPSJ0ZXN0IC14IgotK2Vsc2UKLSsgIGFjX2V4ZWN1dGFibGVfcD0idGVzdCAtZiIKLStmaQotK3JtIC1mIGNvbmYkJC5maWxlCi0rCi0rIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkMiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICQyOyBhY193b3JkPVskXTIKLStBQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkYWNfd29yZF0pCi0rQUNfQ0FDSEVfVkFMKGFjX2N2X3BhdGhfJDEsCi0rW2Nhc2UgIlskXSQxIiBpbgotKyAgW1tcXC9dXSogfCA/OltbXFwvXV0qKQotKyAgICBhY19jdl9wYXRoXyQxPSJbJF0kMSIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3Qgd2l0aCBhIHBhdGguCi0rICAgIDs7Ci0rICAqKQotKyAgICBhY19zYXZlX0lGUz0iJElGUyI7IElGUz0kUEFUSF9TRVBBUkFUT1IKLSsgICAgZm9yIGFjX2RpciBpbiBpZmVsc2UoWyQ1XSwgLCAkUEFUSCwgWyQ1XSk7IGRvCi0rICAgICAgSUZTPSIkYWNfc2F2ZV9JRlMiCi0rICAgICAgdGVzdCAteiAiJGFjX2RpciIgJiYgYWNfZGlyPS4KLSsgICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgICAgICAgIGlmICRhY19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgICAgICAgIGlmIFskM107IHRoZW4KLSsgICAgICAgICAgICBhY19jdl9wYXRoXyQxPSIkYWNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IgotKyAgICAgICAgICAgIGJyZWFrIDIKLSsgICAgICAgICAgZmkKLSsgICAgICAgIGZpCi0rICAgICAgZG9uZQotKyAgICBkb25lCi0rICAgIElGUz0iJGFjX3NhdmVfSUZTIgotK2RubCBJZiBubyA0dGggYXJnIGlzIGdpdmVuLCBsZWF2ZSB0aGUgY2FjaGUgdmFyaWFibGUgdW5zZXQsCi0rZG5sIHNvIEFDX1BBVEhfUFJPR1Mgd2lsbCBrZWVwIGxvb2tpbmcuCi0raWZlbHNlKFskNF0sICwgLCBbICB0ZXN0IC16ICJbJF1hY19jdl9wYXRoXyQxIiAmJiBhY19jdl9wYXRoXyQxPSIkNCIKLStdKWRubAotKyAgICA7OwotK2VzYWNdKWRubAotKyQxPSIkYWNfY3ZfcGF0aF8kMSIKLStpZiB0ZXN0IGlmZWxzZShbJDRdLCAsIFstbiAiWyRdJDEiXSwgWyJbJF0kMSIgIT0gIiQ0Il0pOyB0aGVuCi0rICBBQ19NU0dfUkVTVUxUKFskXSQxKQotK2Vsc2UKLSsgIEFDX01TR19SRVNVTFQobm8pCi0rZmkKLStBQ19TVUJTVCgkMSlkbmwKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9zaWduZWQubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L3NpZ25lZC5tNAkyMDA0LTA5LTEyIDE0OjQwOjM0Ljk5NjY1MDY1NiAtMDQwMAotQEAgLTAsMCArMSwxOSBAQAotKyMgc2lnbmVkLm00IHNlcmlhbCAxIChnZXR0ZXh0LTAuMTAuNDApCi0rZG5sIENvcHlyaWdodCAoQykgMjAwMS0yMDAyIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotKwotK0FDX0RFRlVOKFtiaF9DX1NJR05FRF0sCi0rWwotKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBzaWduZWRdLCBiaF9jdl9jX3NpZ25lZCwKLSsgICBbQUNfVFJZX0NPTVBJTEUoLCBbc2lnbmVkIGNoYXIgeDtdLCBiaF9jdl9jX3NpZ25lZD15ZXMsIGJoX2N2X2Nfc2lnbmVkPW5vKV0pCi0rICBpZiB0ZXN0ICRiaF9jdl9jX3NpZ25lZCA9IG5vOyB0aGVuCi0rICAgIEFDX0RFRklORShzaWduZWQsICwKLSsgICAgICAgICAgICAgIFtEZWZpbmUgdG8gZW1wdHkgaWYgdGhlIEMgY29tcGlsZXIgZG9lc24ndCBzdXBwb3J0IHRoaXMga2V5d29yZC5dKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9zaXplX21heC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvc2l6ZV9tYXgubTQJMjAwNC0wOS0xMiAxNDo0MDozNS4wMDM2NDk1OTIgLTA0MDAKLUBAIC0wLDAgKzEsNjEgQEAKLSsjIHNpemVfbWF4Lm00IHNlcmlhbCAyCi0rZG5sIENvcHlyaWdodCAoQykgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KLSsKLStBQ19ERUZVTihbZ2xfU0laRV9NQVhdLAotK1sKLSsgIEFDX0NIRUNLX0hFQURFUlMoc3RkaW50LmgpCi0rICBkbmwgRmlyc3QgdGVzdCB3aGV0aGVyIHRoZSBzeXN0ZW0gYWxyZWFkeSBoYXMgU0laRV9NQVguCi0rICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBTSVpFX01BWF0pCi0rICByZXN1bHQ9Ci0rICBBQ19FR1JFUF9DUFAoW0ZvdW5kIGl0XSwgWwotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSsjaWYgSEFWRV9TVERJTlRfSAotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSsjZW5kaWYKLSsjaWZkZWYgU0laRV9NQVgKLStGb3VuZCBpdAotKyNlbmRpZgotK10sIHJlc3VsdD15ZXMpCi0rICBpZiB0ZXN0IC16ICIkcmVzdWx0IjsgdGhlbgotKyAgICBkbmwgRGVmaW5lIGl0IG91cnNlbHZlcy4gSGVyZSB3ZSBhc3N1bWUgdGhhdCB0aGUgdHlwZSAnc2l6ZV90JyBpcyBub3Qgd2lkZXIKLSsgICAgZG5sIHRoYW4gdGhlIHR5cGUgJ3Vuc2lnbmVkIGxvbmcnLgotKyAgICBkbmwgVGhlIF9BQ19DT01QVVRFX0lOVCBtYWNybyB3b3JrcyB1cCB0byBMT05HX01BWCwgc2luY2UgaXQgdXNlcyAnZXhwcicsCi0rICAgIGRubCB3aGljaCBpcyBndWFyYW50ZWVkIHRvIHdvcmsgZnJvbSBMT05HX01JTiB0byBMT05HX01BWC4KLSsgICAgX0FDX0NPTVBVVEVfSU5UKFt+KHNpemVfdCkwIC8gMTBdLCByZXNfaGksCi0rICAgICAgWyNpbmNsdWRlIDxzdGRkZWYuaD5dLCByZXN1bHQ9PykKLSsgICAgX0FDX0NPTVBVVEVfSU5UKFt+KHNpemVfdCkwICUgMTBdLCByZXNfbG8sCi0rICAgICAgWyNpbmNsdWRlIDxzdGRkZWYuaD5dLCByZXN1bHQ9PykKLSsgICAgX0FDX0NPTVBVVEVfSU5UKFtzaXplb2YgKHNpemVfdCkgPD0gc2l6ZW9mICh1bnNpZ25lZCBpbnQpXSwgZml0c19pbl91aW50LAotKyAgICAgIFsjaW5jbHVkZSA8c3RkZGVmLmg+XSwgcmVzdWx0PT8pCi0rICAgIGlmIHRlc3QgIiRmaXRzX2luX3VpbnQiID0gMTsgdGhlbgotKyAgICAgIGRubCBFdmVuIHRob3VnaCBTSVpFX01BWCBmaXRzIGluIGFuIHVuc2lnbmVkIGludCwgaXQgbXVzdCBiZSBvZiB0eXBlCi0rICAgICAgZG5sICd1bnNpZ25lZCBsb25nJyBpZiB0aGUgdHlwZSAnc2l6ZV90JyBpcyB0aGUgc2FtZSBhcyAndW5zaWduZWQgbG9uZycuCi0rICAgICAgQUNfVFJZX0NPTVBJTEUoWyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsgICAgICAgIGV4dGVybiBzaXplX3QgZm9vOwotKyAgICAgICAgZXh0ZXJuIHVuc2lnbmVkIGxvbmcgZm9vOwotKyAgICAgICAgXSwgW10sIGZpdHNfaW5fdWludD0wKQotKyAgICBmaQotKyAgICBpZiB0ZXN0IC16ICIkcmVzdWx0IjsgdGhlbgotKyAgICAgIGlmIHRlc3QgIiRmaXRzX2luX3VpbnQiID0gMTsgdGhlbgotKyAgICAgICAgcmVzdWx0PSIkcmVzX2hpJHJlc19sbyJVCi0rICAgICAgZWxzZQotKyAgICAgICAgcmVzdWx0PSIkcmVzX2hpJHJlc19sbyJVTAotKyAgICAgIGZpCi0rICAgIGVsc2UKLSsgICAgICBkbmwgU2hvdWxkbid0IGhhcHBlbiwgYnV0IHdobyBrbm93cy4uLgotKyAgICAgIHJlc3VsdD0nfihzaXplX3QpMCcKLSsgICAgZmkKLSsgIGZpCi0rICBBQ19NU0dfUkVTVUxUKFskcmVzdWx0XSkKLSsgIGlmIHRlc3QgIiRyZXN1bHQiICE9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoW1NJWkVfTUFYXSwgWyRyZXN1bHRdLAotKyAgICAgIFtEZWZpbmUgYXMgdGhlIG1heGltdW0gdmFsdWUgb2YgdHlwZSAnc2l6ZV90JywgaWYgdGhlIHN5c3RlbSBkb2Vzbid0IGRlZmluZSBpdC5dKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC9zdGRpbnRfaC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvc3RkaW50X2gubTQJMjAwNC0wOS0xMiAxNDo0MDozNS4wMDk2NDg2ODAgLTA0MDAKLUBAIC0wLDAgKzEsMjggQEAKLSsjIHN0ZGludF9oLm00IHNlcmlhbCAzIChnZXR0ZXh0LTAuMTIpCi0rZG5sIENvcHlyaWdodCAoQykgMTk5Ny0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gUGF1bCBFZ2dlcnQuCi0rCi0rIyBEZWZpbmUgSEFWRV9TVERJTlRfSF9XSVRIX1VJTlRNQVggaWYgPHN0ZGludC5oPiBleGlzdHMsCi0rIyBkb2Vzbid0IGNsYXNoIHdpdGggPHN5cy90eXBlcy5oPiwgYW5kIGRlY2xhcmVzIHVpbnRtYXhfdC4KLSsKLStBQ19ERUZVTihbam1fQUNfSEVBREVSX1NURElOVF9IXSwKLStbCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIHN0ZGludC5oXSwgam1fYWNfY3ZfaGVhZGVyX3N0ZGludF9oLAotKyAgW0FDX1RSWV9DT01QSUxFKAotKyAgICBbI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxzdGRpbnQuaD5dLAotKyAgICBbdWludG1heF90IGkgPSAodWludG1heF90KSAtMTtdLAotKyAgICBqbV9hY19jdl9oZWFkZXJfc3RkaW50X2g9eWVzLAotKyAgICBqbV9hY19jdl9oZWFkZXJfc3RkaW50X2g9bm8pXSkKLSsgIGlmIHRlc3QgJGptX2FjX2N2X2hlYWRlcl9zdGRpbnRfaCA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoSEFWRV9TVERJTlRfSF9XSVRIX1VJTlRNQVgsIDEsCi0rICAgICAgW0RlZmluZSBpZiA8c3RkaW50Lmg+IGV4aXN0cywgZG9lc24ndCBjbGFzaCB3aXRoIDxzeXMvdHlwZXMuaD4sCi0rICAgICAgIGFuZCBkZWNsYXJlcyB1aW50bWF4X3QuIF0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L3VpbnRtYXhfdC5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvdWludG1heF90Lm00CTIwMDQtMDktMTIgMTQ6NDA6MzUuMDIxNjQ2ODU2IC0wNDAwCi1AQCAtMCwwICsxLDMyIEBACi0rIyB1aW50bWF4X3QubTQgc2VyaWFsIDcgKGdldHRleHQtMC4xMikKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk3LTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBQYXVsIEVnZ2VydC4KLSsKLStBQ19QUkVSRVEoMi4xMykKLSsKLSsjIERlZmluZSB1aW50bWF4X3QgdG8gJ3Vuc2lnbmVkIGxvbmcnIG9yICd1bnNpZ25lZCBsb25nIGxvbmcnCi0rIyBpZiBpdCBpcyBub3QgYWxyZWFkeSBkZWZpbmVkIGluIDxzdGRpbnQuaD4gb3IgPGludHR5cGVzLmg+LgotKwotK0FDX0RFRlVOKFtqbV9BQ19UWVBFX1VJTlRNQVhfVF0sCi0rWwotKyAgQUNfUkVRVUlSRShbam1fQUNfSEVBREVSX0lOVFRZUEVTX0hdKQotKyAgQUNfUkVRVUlSRShbam1fQUNfSEVBREVSX1NURElOVF9IXSkKLSsgIGlmIHRlc3QgJGptX2FjX2N2X2hlYWRlcl9pbnR0eXBlc19oID0gbm8gJiYgdGVzdCAkam1fYWNfY3ZfaGVhZGVyX3N0ZGludF9oID0gbm87IHRoZW4KLSsgICAgQUNfUkVRVUlSRShbam1fQUNfVFlQRV9VTlNJR05FRF9MT05HX0xPTkddKQotKyAgICB0ZXN0ICRhY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZyA9IHllcyBcCi0rICAgICAgJiYgYWNfdHlwZT0ndW5zaWduZWQgbG9uZyBsb25nJyBcCi0rICAgICAgfHwgYWNfdHlwZT0ndW5zaWduZWQgbG9uZycKLSsgICAgQUNfREVGSU5FX1VOUVVPVEVEKHVpbnRtYXhfdCwgJGFjX3R5cGUsCi0rICAgICAgW0RlZmluZSB0byB1bnNpZ25lZCBsb25nIG9yIHVuc2lnbmVkIGxvbmcgbG9uZwotKyAgICAgICBpZiA8c3RkaW50Lmg+IGFuZCA8aW50dHlwZXMuaD4gZG9uJ3QgZGVmaW5lLl0pCi0rICBlbHNlCi0rICAgIEFDX0RFRklORShIQVZFX1VJTlRNQVhfVCwgMSwKLSsgICAgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAndWludG1heF90JyB0eXBlIGluIDxzdGRpbnQuaD4gb3IgPGludHR5cGVzLmg+Ll0pCi0rICBmaQotK10pCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL200L3Vsb25nbG9uZy5tNAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvbTQvdWxvbmdsb25nLm00CTIwMDQtMDktMTIgMTQ6NDA6MzUuMDI4NjQ1NzkyIC0wNDAwCi1AQCAtMCwwICsxLDI1IEBACi0rIyB1bG9uZ2xvbmcubTQgc2VyaWFsIDMKLStkbmwgQ29weXJpZ2h0IChDKSAxOTk5LTIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStkbmwgRnJvbSBQYXVsIEVnZ2VydC4KLSsKLSsjIERlZmluZSBIQVZFX1VOU0lHTkVEX0xPTkdfTE9ORyBpZiAndW5zaWduZWQgbG9uZyBsb25nJyB3b3Jrcy4KLSsKLStBQ19ERUZVTihbam1fQUNfVFlQRV9VTlNJR05FRF9MT05HX0xPTkddLAotK1sKLSsgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgdW5zaWduZWQgbG9uZyBsb25nXSwgYWNfY3ZfdHlwZV91bnNpZ25lZF9sb25nX2xvbmcsCi0rICBbQUNfVFJZX0xJTksoW3Vuc2lnbmVkIGxvbmcgbG9uZyB1bGwgPSAxVUxMOyBpbnQgaSA9IDYzO10sCi0rICAgIFt1bnNpZ25lZCBsb25nIGxvbmcgdWxsbWF4ID0gKHVuc2lnbmVkIGxvbmcgbG9uZykgLTE7Ci0rICAgICByZXR1cm4gdWxsIDw8IGkgfCB1bGwgPj4gaSB8IHVsbG1heCAvIHVsbCB8IHVsbG1heCAlIHVsbDtdLAotKyAgICBhY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZz15ZXMsCi0rICAgIGFjX2N2X3R5cGVfdW5zaWduZWRfbG9uZ19sb25nPW5vKV0pCi0rICBpZiB0ZXN0ICRhY19jdl90eXBlX3Vuc2lnbmVkX2xvbmdfbG9uZyA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkUoSEFWRV9VTlNJR05FRF9MT05HX0xPTkcsIDEsCi0rICAgICAgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgJ3Vuc2lnbmVkIGxvbmcgbG9uZycgdHlwZS5dKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC93Y2hhcl90Lm00CTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9tNC93Y2hhcl90Lm00CTIwMDQtMDktMTIgMTQ6NDA6MzUuMDM0NjQ0ODgwIC0wNDAwCi1AQCAtMCwwICsxLDIyIEBACi0rIyB3Y2hhcl90Lm00IHNlcmlhbCAxIChnZXR0ZXh0LTAuMTIpCi0rZG5sIENvcHlyaWdodCAoQykgMjAwMi0yMDAzIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZSwgZGlzdHJpYnV0ZWQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUKLStkbmwgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4gIEFzIGEgc3BlY2lhbCBleGNlcHRpb24gdG8gdGhlIEdOVSBHZW5lcmFsCi0rZG5sIFB1YmxpYyBMaWNlbnNlLCB0aGlzIGZpbGUgbWF5IGJlIGRpc3RyaWJ1dGVkIGFzIHBhcnQgb2YgYSBwcm9ncmFtCi0rZG5sIHRoYXQgY29udGFpbnMgYSBjb25maWd1cmF0aW9uIHNjcmlwdCBnZW5lcmF0ZWQgYnkgQXV0b2NvbmYsIHVuZGVyCi0rZG5sIHRoZSBzYW1lIGRpc3RyaWJ1dGlvbiB0ZXJtcyBhcyB0aGUgcmVzdCBvZiB0aGF0IHByb2dyYW0uCi0rCi0rZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgotK2RubCBUZXN0IHdoZXRoZXIgPHN0ZGRlZi5oPiBoYXMgdGhlICd3Y2hhcl90JyB0eXBlLgotK2RubCBQcmVyZXF1aXNpdGU6IEFDX1BST0dfQ0MKLSsKLStBQ19ERUZVTihbZ3RfVFlQRV9XQ0hBUl9UXSwKLStbCi0rICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdjaGFyX3RdLCBndF9jdl9jX3djaGFyX3QsCi0rICAgIFtBQ19UUllfQ09NUElMRShbI2luY2x1ZGUgPHN0ZGRlZi5oPgotKyAgICAgICB3Y2hhcl90IGZvbyA9ICh3Y2hhcl90KSdcMCc7XSwgLAotKyAgICAgICBndF9jdl9jX3djaGFyX3Q9eWVzLCBndF9jdl9jX3djaGFyX3Q9bm8pXSkKLSsgIGlmIHRlc3QgJGd0X2N2X2Nfd2NoYXJfdCA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkUoSEFWRV9XQ0hBUl9ULCAxLCBbRGVmaW5lIGlmIHlvdSBoYXZlIHRoZSAnd2NoYXJfdCcgdHlwZS5dKQotKyAgZmkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9tNC93aW50X3QubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L3dpbnRfdC5tNAkyMDA0LTA5LTEyIDE0OjQwOjM1LjA0MDY0Mzk2OCAtMDQwMAotQEAgLTAsMCArMSwyMiBAQAotKyMgd2ludF90Lm00IHNlcmlhbCAxIChnZXR0ZXh0LTAuMTIpCi0rZG5sIENvcHlyaWdodCAoQykgMjAwMyBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLStkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmUsIGRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VCi0rZG5sIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuICBBcyBhIHNwZWNpYWwgZXhjZXB0aW9uIHRvIHRoZSBHTlUgR2VuZXJhbAotK2RubCBQdWJsaWMgTGljZW5zZSwgdGhpcyBmaWxlIG1heSBiZSBkaXN0cmlidXRlZCBhcyBwYXJ0IG9mIGEgcHJvZ3JhbQotK2RubCB0aGF0IGNvbnRhaW5zIGEgY29uZmlndXJhdGlvbiBzY3JpcHQgZ2VuZXJhdGVkIGJ5IEF1dG9jb25mLCB1bmRlcgotK2RubCB0aGUgc2FtZSBkaXN0cmlidXRpb24gdGVybXMgYXMgdGhlIHJlc3Qgb2YgdGhhdCBwcm9ncmFtLgotKwotK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KLStkbmwgVGVzdCB3aGV0aGVyIDx3Y2hhci5oPiBoYXMgdGhlICd3aW50X3QnIHR5cGUuCi0rZG5sIFByZXJlcXVpc2l0ZTogQUNfUFJPR19DQwotKwotK0FDX0RFRlVOKFtndF9UWVBFX1dJTlRfVF0sCi0rWwotKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciB3aW50X3RdLCBndF9jdl9jX3dpbnRfdCwKLSsgICAgW0FDX1RSWV9DT01QSUxFKFsjaW5jbHVkZSA8d2NoYXIuaD4KLSsgICAgICAgd2ludF90IGZvbyA9ICh3Y2hhcl90KSdcMCc7XSwgLAotKyAgICAgICBndF9jdl9jX3dpbnRfdD15ZXMsIGd0X2N2X2Nfd2ludF90PW5vKV0pCi0rICBpZiB0ZXN0ICRndF9jdl9jX3dpbnRfdCA9IHllczsgdGhlbgotKyAgICBBQ19ERUZJTkUoSEFWRV9XSU5UX1QsIDEsIFtEZWZpbmUgaWYgeW91IGhhdmUgdGhlICd3aW50X3QnIHR5cGUuXSkKLSsgIGZpCi0rXSkKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvbTQveHNpemUubTQJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL200L3hzaXplLm00CTIwMDQtMDktMTIgMTQ6NDA6MzUuMDQ3NjQyOTA0IC0wNDAwCi1AQCAtMCwwICsxLDE0IEBACi0rIyB4c2l6ZS5tNCBzZXJpYWwgMgotK2RubCBDb3B5cmlnaHQgKEMpIDIwMDMgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlLCBkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVQotK2RubCBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLiAgQXMgYSBzcGVjaWFsIGV4Y2VwdGlvbiB0byB0aGUgR05VIEdlbmVyYWwKLStkbmwgUHVibGljIExpY2Vuc2UsIHRoaXMgZmlsZSBtYXkgYmUgZGlzdHJpYnV0ZWQgYXMgcGFydCBvZiBhIHByb2dyYW0KLStkbmwgdGhhdCBjb250YWlucyBhIGNvbmZpZ3VyYXRpb24gc2NyaXB0IGdlbmVyYXRlZCBieSBBdXRvY29uZiwgdW5kZXIKLStkbmwgdGhlIHNhbWUgZGlzdHJpYnV0aW9uIHRlcm1zIGFzIHRoZSByZXN0IG9mIHRoYXQgcHJvZ3JhbS4KLSsKLStBQ19ERUZVTihbZ2xfWFNJWkVdLAotK1sKLSsgIGRubCBQcmVyZXF1aXNpdGVzIG9mIGxpYi94c2l6ZS5oLgotKyAgQUNfUkVRVUlSRShbZ2xfU0laRV9NQVhdKQotKyAgQUNfQ0hFQ0tfSEVBREVSUyhzdGRpbnQuaCkKLStdKQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9NYWtlZmlsZS5hbQkxOTk4LTEyLTMwIDA2OjE5OjQwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvTWFrZWZpbGUuYW0JMjAwNC0wOS0xMiAxNDo0MDozNS4xMjE2MzE2NTYgLTA0MDAKLUBAIC0xLDUgKzEsNSBAQAotIFNVQkRJUlMgPSBsaWIgaW50bCBzcmMgcG8gbWFuIHRlc3RzdWl0ZQotLUVYVFJBX0RJU1QgPSBjaGVjay5scnpzeiBDT01QQVRBQklMSVRZIFJFQURNRS5jdnMgUkVBRE1FLmlzZG40bGludXggXAotK0VYVFJBX0RJU1QgPSBjb25maWcucnBhdGggIGNoZWNrLmxyenN6IENPTVBBVEFCSUxJVFkgUkVBRE1FLmN2cyBSRUFETUUuaXNkbjRsaW51eCBcCi0gCVJFQURNRS5nZXR0ZXh0IHJwbXJjIGJ1aWxkcnBtIHN5c3R5cGUuaW4gZmFzdGNoZWNrLnNoIFJFQURNRS50ZXN0cyBcCi0gCWJlb3MtcnVucGlwZWQuYyBmYXN0Y2hlY2suYmVvcwotIG5vaW5zdF9TQ1JJUFRTPXN5c3R5cGUKLUBAIC04MywzICs4Myw1IEBACi0gcnBtOiAkKFBSKS50YXIuZ3ogU3BlY2ZpbGUKLSAJJChzcmNkaXIpL2J1aWxkcnBtICQoc3JjZGlyKQotIAotKwotK0FDTE9DQUxfQU1GTEFHUyA9IC1JIG00Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL01ha2VmaWxlLmluCTE5OTgtMTItMzAgMTE6MzE6NDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9NYWtlZmlsZS5pbgkyMDA0LTA5LTEyIDE0OjQwOjM1LjEwOTYzMzQ4MCAtMDQwMAotQEAgLTEyNSw3ICsxMjUsNyBAQAotIAkgICYmIENPTkZJR19GSUxFUz0kQCBDT05GSUdfSEVBREVSUz0gJChTSEVMTCkgLi9jb25maWcuc3RhdHVzCi0gCi0gJChBQ0xPQ0FMX000KTogIGNvbmZpZ3VyZS5pbiAgYWNpbmNsdWRlLm00Ci0tCWNkICQoc3JjZGlyKSAmJiAkKEFDTE9DQUwpCi0rCWNkICQoc3JjZGlyKSAmJiAkKEFDTE9DQUwpIC1JIG00Ci0gCi0gY29uZmlnLnN0YXR1czogJChzcmNkaXIpL2NvbmZpZ3VyZQotIAkkKFNIRUxMKSAuL2NvbmZpZy5zdGF0dXMgLS1yZWNoZWNrCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL21raW5zdGFsbGRpcnMJMTk5OC0wNC0yNiAwOToyMDo1Mi4wMDAwMDAwMDAgLTA0MDAKLSsrKyBscnpzei0wLjEyLjIwL21raW5zdGFsbGRpcnMJMjAwNC0wOS0xMiAxNDo0MDozNC4zMzc3NTA4MjQgLTA0MDAKLUBAIC0xLDM0ICsxLDE1MCBAQAotICMhIC9iaW4vc2gKLSAjIG1raW5zdGFsbGRpcnMgLS0tIG1ha2UgZGlyZWN0b3J5IGhpZXJhcmNoeQotLSMgQXV0aG9yOiBOb2FoIEZyaWVkbWFuIDxmcmllZG1hbkBwcmVwLmFpLm1pdC5lZHU+Ci0rCi0rc2NyaXB0dmVyc2lvbj0yMDA0LTAyLTE1LjIwCi0rCi0rIyBPcmlnaW5hbCBhdXRob3I6IE5vYWggRnJpZWRtYW4gPGZyaWVkbWFuQHByZXAuYWkubWl0LmVkdT4KLSAjIENyZWF0ZWQ6IDE5OTMtMDUtMTYKLS0jIExhc3QgbW9kaWZpZWQ6IDE5OTUtMDMtMDUKLS0jIFB1YmxpYyBkb21haW4KLSsjIFB1YmxpYyBkb21haW4uCi0rIwotKyMgVGhpcyBmaWxlIGlzIG1haW50YWluZWQgaW4gQXV0b21ha2UsIHBsZWFzZSByZXBvcnQKLSsjIGJ1Z3MgdG8gPGJ1Zy1hdXRvbWFrZUBnbnUub3JnPiBvciBzZW5kIHBhdGNoZXMgdG8KLSsjIDxhdXRvbWFrZS1wYXRjaGVzQGdudS5vcmc+LgotIAotIGVycnN0YXR1cz0wCi0rZGlybW9kZT0iIgotIAotLWZvciBmaWxlIGluICR7MSsiJEAifSA7IGRvCi0tICAgc2V0IGZub3JkIGBlY2hvICI6JGZpbGUiIHwgc2VkIC1uZSAncy9eOlwvLyMvO3MvXjovLztzL1wvLyAvZztzL14jL1wvLztwJ2AKLS0gICBzaGlmdAotK3VzYWdlPSJcCi0rVXNhZ2U6IG1raW5zdGFsbGRpcnMgWy1oXSBbLS1oZWxwXSBbLS12ZXJzaW9uXSBbLW0gTU9ERV0gRElSIC4uLgotIAotLSAgIHBhdGhjb21wPQotLSAgIGZvciBkIGluICR7MSsiJEAifSA7IGRvCi0tICAgICBwYXRoY29tcD0iJHBhdGhjb21wJGQiCi0tICAgICBjYXNlICIkcGF0aGNvbXAiIGluCi0tICAgICAgIC0qICkgcGF0aGNvbXA9Li8kcGF0aGNvbXAgOzsKLS0gICAgIGVzYWMKLStDcmVhdGUgZWFjaCBkaXJlY3RvcnkgRElSICh3aXRoIG1vZGUgTU9ERSwgaWYgc3BlY2lmaWVkKSwgaW5jbHVkaW5nIGFsbAotK2xlYWRpbmcgZmlsZSBuYW1lIGNvbXBvbmVudHMuCi0gCi0tICAgICBpZiB0ZXN0ICEgLWQgIiRwYXRoY29tcCI7IHRoZW4KLS0gICAgICAgIGVjaG8gIm1rZGlyICRwYXRoY29tcCIgMT4mMgotLSAgICAgICAgbWtkaXIgIiRwYXRoY29tcCIgPiAvZGV2L251bGwgMj4mMSB8fCBsYXN0ZXJyPSQ/Ci0tICAgICBmaQotK1JlcG9ydCBidWdzIHRvIDxidWctYXV0b21ha2VAZ251Lm9yZz4uIgotIAotLSAgICAgaWYgdGVzdCAhIC1kICIkcGF0aGNvbXAiOyB0aGVuCi0rIyBwcm9jZXNzIGNvbW1hbmQgbGluZSBhcmd1bWVudHMKLSt3aGlsZSB0ZXN0ICQjIC1ndCAwIDsgZG8KLSsgIGNhc2UgJDEgaW4KLSsgICAgLWggfCAtLWhlbHAgfCAtLWgqKSAgICAgICAgICMgLWggZm9yIGhlbHAKLSsgICAgICBlY2hvICIkdXNhZ2UiCi0rICAgICAgZXhpdCAwCi0rICAgICAgOzsKLSsgICAgLW0pICAgICAgICAgICAgICAgICAgICAgICAgICMgLW0gUEVSTSBhcmcKLSsgICAgICBzaGlmdAotKyAgICAgIHRlc3QgJCMgLWVxIDAgJiYgeyBlY2hvICIkdXNhZ2UiIDE+JjI7IGV4aXQgMTsgfQotKyAgICAgIGRpcm1vZGU9JDEKLSsgICAgICBzaGlmdAotKyAgICAgIDs7Ci0rICAgIC0tdmVyc2lvbikKLSsgICAgICBlY2hvICIkMCAkc2NyaXB0dmVyc2lvbiIKLSsgICAgICBleGl0IDAKLSsgICAgICA7OwotKyAgICAtLSkgICAgICAgICAgICAgICAgICAgICAgICAgIyBzdG9wIG9wdGlvbiBwcm9jZXNzaW5nCi0rICAgICAgc2hpZnQKLSsgICAgICBicmVhawotKyAgICAgIDs7Ci0rICAgIC0qKSAgICAgICAgICAgICAgICAgICAgICAgICAjIHVua25vd24gb3B0aW9uCi0rICAgICAgZWNobyAiJHVzYWdlIiAxPiYyCi0rICAgICAgZXhpdCAxCi0rICAgICAgOzsKLSsgICAgKikgICAgICAgICAgICAgICAgICAgICAgICAgICMgZmlyc3Qgbm9uLW9wdCBhcmcKLSsgICAgICBicmVhawotKyAgICAgIDs7Ci0rICBlc2FjCi0rZG9uZQotKwotK2ZvciBmaWxlCi0rZG8KLSsgIGlmIHRlc3QgLWQgIiRmaWxlIjsgdGhlbgotKyAgICBzaGlmdAotKyAgZWxzZQotKyAgICBicmVhawotKyAgZmkKLStkb25lCi0rCi0rY2FzZSAkIyBpbgotKyAgMCkgZXhpdCAwIDs7Ci0rZXNhYwotKwotKyMgU29sYXJpcyA4J3MgbWtkaXIgLXAgaXNuJ3QgdGhyZWFkLXNhZmUuICBJZiB5b3UgbWtkaXIgLXAgYS9iIGFuZAotKyMgbWtkaXIgLXAgYS9jIGF0IHRoZSBzYW1lIHRpbWUsIGJvdGggd2lsbCBkZXRlY3QgdGhhdCBhIGlzIG1pc3NpbmcsCi0rIyBvbmUgd2lsbCBjcmVhdGUgYSwgdGhlbiB0aGUgb3RoZXIgd2lsbCB0cnkgdG8gY3JlYXRlIGEgYW5kIGRpZSB3aXRoCi0rIyBhICJGaWxlIGV4aXN0cyIgZXJyb3IuICBUaGlzIGlzIGEgcHJvYmxlbSB3aGVuIGNhbGxpbmcgbWtpbnN0YWxsZGlycwotKyMgZnJvbSBhIHBhcmFsbGVsIG1ha2UuICBXZSB1c2UgLS12ZXJzaW9uIGluIHRoZSBwcm9iZSB0byByZXN0cmljdAotKyMgb3Vyc2VsdmVzIHRvIEdOVSBta2Rpciwgd2hpY2ggaXMgdGhyZWFkLXNhZmUuCi0rY2FzZSAkZGlybW9kZSBpbgotKyAgJycpCi0rICAgIGlmIG1rZGlyIC1wIC0tdmVyc2lvbiAuID4vZGV2L251bGwgMj4mMSAmJiB0ZXN0ICEgLWQgLi8tLXZlcnNpb247IHRoZW4KLSsgICAgICBlY2hvICJta2RpciAtcCAtLSAkKiIKLSsgICAgICBleGVjIG1rZGlyIC1wIC0tICIkQCIKLSsgICAgZWxzZQotKyAgICAgICMgT24gTmV4dFN0ZXAgYW5kIE9wZW5TdGVwLCB0aGUgYG1rZGlyJyBjb21tYW5kIGRvZXMgbm90Ci0rICAgICAgIyByZWNvZ25pemUgYW55IG9wdGlvbi4gIEl0IHdpbGwgaW50ZXJwcmV0IGFsbCBvcHRpb25zIGFzCi0rICAgICAgIyBkaXJlY3RvcmllcyB0byBjcmVhdGUsIGFuZCB0aGVuIGFib3J0IGJlY2F1c2UgYC4nIGFscmVhZHkKLSsgICAgICAjIGV4aXN0cy4KLSsgICAgICB0ZXN0IC1kIC4vLXAgJiYgcm1kaXIgLi8tcAotKyAgICAgIHRlc3QgLWQgLi8tLXZlcnNpb24gJiYgcm1kaXIgLi8tLXZlcnNpb24KLSsgICAgZmkKLSsgICAgOzsKLSsgICopCi0rICAgIGlmIG1rZGlyIC1tICIkZGlybW9kZSIgLXAgLS12ZXJzaW9uIC4gPi9kZXYvbnVsbCAyPiYxICYmCi0rICAgICAgIHRlc3QgISAtZCAuLy0tdmVyc2lvbjsgdGhlbgotKyAgICAgIGVjaG8gIm1rZGlyIC1tICRkaXJtb2RlIC1wIC0tICQqIgotKyAgICAgIGV4ZWMgbWtkaXIgLW0gIiRkaXJtb2RlIiAtcCAtLSAiJEAiCi0rICAgIGVsc2UKLSsgICAgICAjIENsZWFuIHVwIGFmdGVyIE5leHRTdGVwIGFuZCBPcGVuU3RlcCBta2Rpci4KLSsgICAgICBmb3IgZCBpbiAuLy1tIC4vLXAgLi8tLXZlcnNpb24gIi4vJGRpcm1vZGUiOwotKyAgICAgIGRvCi0rICAgICAgICB0ZXN0IC1kICRkICYmIHJtZGlyICRkCi0rICAgICAgZG9uZQotKyAgICBmaQotKyAgICA7OwotK2VzYWMKLSsKLStmb3IgZmlsZQotK2RvCi0rICBzZXQgZm5vcmQgYGVjaG8gIjokZmlsZSIgfCBzZWQgLW5lICdzL146XC8vIy87cy9eOi8vO3MvXC8vIC9nO3MvXiMvXC8vO3AnYAotKyAgc2hpZnQKLSsKLSsgIHBhdGhjb21wPQotKyAgZm9yIGQKLSsgIGRvCi0rICAgIHBhdGhjb21wPSIkcGF0aGNvbXAkZCIKLSsgICAgY2FzZSAkcGF0aGNvbXAgaW4KLSsgICAgICAtKikgcGF0aGNvbXA9Li8kcGF0aGNvbXAgOzsKLSsgICAgZXNhYwotKwotKyAgICBpZiB0ZXN0ICEgLWQgIiRwYXRoY29tcCI7IHRoZW4KLSsgICAgICBlY2hvICJta2RpciAkcGF0aGNvbXAiCi0rCi0rICAgICAgbWtkaXIgIiRwYXRoY29tcCIgfHwgbGFzdGVycj0kPwotKwotKyAgICAgIGlmIHRlc3QgISAtZCAiJHBhdGhjb21wIjsgdGhlbgotIAllcnJzdGF0dXM9JGxhc3RlcnIKLS0gICAgIGZpCi0rICAgICAgZWxzZQotKwlpZiB0ZXN0ICEgLXogIiRkaXJtb2RlIjsgdGhlbgotKwkgIGVjaG8gImNobW9kICRkaXJtb2RlICRwYXRoY29tcCIKLSsJICBsYXN0ZXJyPSIiCi0rCSAgY2htb2QgIiRkaXJtb2RlIiAiJHBhdGhjb21wIiB8fCBsYXN0ZXJyPSQ/Ci0gCi0tICAgICBwYXRoY29tcD0iJHBhdGhjb21wLyIKLS0gICBkb25lCi0rCSAgaWYgdGVzdCAhIC16ICIkbGFzdGVyciI7IHRoZW4KLSsJICAgIGVycnN0YXR1cz0kbGFzdGVycgotKwkgIGZpCi0rCWZpCi0rICAgICAgZmkKLSsgICAgZmkKLSsKLSsgICAgcGF0aGNvbXA9IiRwYXRoY29tcC8iCi0rICBkb25lCi0gZG9uZQotIAotIGV4aXQgJGVycnN0YXR1cwotKwotKyMgTG9jYWwgVmFyaWFibGVzOgotKyMgbW9kZTogc2hlbGwtc2NyaXB0Ci0rIyBzaC1pbmRlbnRhdGlvbjogMgotKyMgZXZhbDogKGFkZC1ob29rICd3cml0ZS1maWxlLWhvb2tzICd0aW1lLXN0YW1wKQotKyMgdGltZS1zdGFtcC1zdGFydDogInNjcmlwdHZlcnNpb249IgotKyMgdGltZS1zdGFtcC1mb3JtYXQ6ICIlOnktJTAybS0lMDJkLiUwMkgiCi0rIyB0aW1lLXN0YW1wLWVuZDogIiQiCi0rIyBFbmQ6Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL3BvL2JvbGRxdW90LnNlZAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvcG8vYm9sZHF1b3Quc2VkCTIwMDQtMDktMTIgMTQ6NDA6MzQuNzIzNjkyMTUyIC0wNDAwCi1AQCAtMCwwICsxLDEwIEBACi0rcy8iXChbXiJdKlwpIi/igJxcMeKAnS9nCi0rcy9gXChbXmAnXSpcKScv4oCYXDHigJkvZwotK3MvICdcKFteYCddKlwpJyAvIOKAmFwx4oCZIC9nCi0rcy8gJ1woW15gJ10qXCknJC8g4oCYXDHigJkvZwotK3MvXidcKFteYCddKlwpJyAv4oCYXDHigJkgL2cKLStzL+KAnOKAnS8iIi9nCi0rcy/igJwv4oCcG1sxbS9nCi0rcy/igJ0vG1swbeKAnS9nCi0rcy/igJgv4oCYG1sxbS9nCi0rcy/igJkvG1swbeKAmS9nCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL3BvL2NhdC1pZC10YmwuYwkxOTk4LTEyLTI5IDA0OjI0OjI0LjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvcG8vY2F0LWlkLXRibC5jCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi1AQCAtMSwyMzQgKzAsMCBAQAotLS8qIEF1dG9tYXRpY2FsbHkgZ2VuZXJhdGVkIGJ5IHBvMnRibC5zZWQgZnJvbSBscnpzei5wb3QuICAqLwotLQotLSNpZiBIQVZFX0NPTkZJR19ICi0tIyBpbmNsdWRlIDxjb25maWcuaD4KLS0jZW5kaWYKLS0KLS0jaW5jbHVkZSAibGliZ2V0dGV4dC5oIgotLQotLWNvbnN0IHN0cnVjdCBfbXNnX2VudCBfbXNnX3RibFtdID0gewotLSAgeyIiLCAxfSwKLS0gIHsiaW9fbW9kZSgsMikgaW4gcmJzYi5jIG5vdCBpbXBsZW1lbnRlZFxuIiwgMn0sCi0tICB7ImNhdWdodCBzaWduYWwgJWQ7IGV4aXRpbmciLCAzfSwKLS0gIHsiY29tbWFuZCB0cmllcyIsIDR9LAotLSAgeyJwYWNrZXRsZW5ndGgiLCA1fSwKLS0gIHsicGFja2V0bGVuZ3RoIG91dCBvZiByYW5nZSAyNC4uJWxkIiwgNn0sCi0tICB7ImZyYW1lbGVuZ3RoIiwgN30sCi0tICB7ImZyYW1lbGVuZ3RoIG91dCBvZiByYW5nZSAzMi4uJWxkIiwgOH0sCi0tICB7Im1pbl9icHMiLCA5fSwKLS0gIHsibWluX2JwcyBtdXN0IGJlID49IDAiLCAxMH0sCi0tICB7Im1pbl9icHNfdGltZSIsIDExfSwKLS0gIHsibWluX2Jwc190aW1lIG11c3QgYmUgPiAxIiwgMTJ9LAotLSAgeyJob3VyIHRvIGxhcmdlICgwLi4yMykiLCAxM30sCi0tICB7InVucGFyc2FibGUgc3RvcCB0aW1lXG4iLCAxNH0sCi0tICB7Im1pbnV0ZSB0byBsYXJnZSAoMC4uNTkpIiwgMTV9LAotLSAgeyJzdG9wIHRpbWUgdG8gc21hbGwiLCAxNn0sCi0tICB7InN0b3AtYXQiLCAxN30sCi0tICB7InRpbWVvdXQiLCAxOH0sCi0tICB7InRpbWVvdXQgb3V0IG9mIHJhbmdlIDEwLi4xMDAwIiwgMTl9LAotLSAgeyJzZWN1cml0eSB2aW9sYXRpb246IGNhbid0IGRvIHRoYXQgdW5kZXIgcmVzdHJpY3RlZCBzaGVsbFxuIiwgMjB9LAotLSAgeyJ3aW5kb3cgc2l6ZSIsIDIxfSwKLS0gIHsiY2Fubm90IHR1cm5vZmYgc3lzbG9nIiwgMjJ9LAotLSAgeyJzdGFydHVwIGRlbGF5IiwgMjN9LAotLSAgeyJvdXQgb2YgbWVtb3J5IiwgMjR9LAotLSAgeyJ0aGlzIHByb2dyYW0gd2FzIG5ldmVyIGludGVuZGVkIHRvIGJlIHVzZWQgc2V0dWlkXG4iLCAyNX0sCi0tICB7Im5lZWQgYXQgbGVhc3Qgb25lIGZpbGUgdG8gc2VuZCIsIDI2fSwKLS0gIHsiQ2FuJ3Qgc2VuZCBjb21tYW5kIGluIHJlc3RyaWN0ZWQgbW9kZVxuIiwgMjd9LAotLSAgeyJob3N0bmFtZSB0b28gbG9uZ1xuIiwgMjh9LAotLSAgeyJpbGxlZ2FsIHNlcnZlciBhZGRyZXNzXG4iLCAyOX0sCi0tICB7ImNhbiByZWFkIG9ubHkgb25lIGZpbGUgZnJvbSBzdGRpbiIsIDMwfSwKLS0gIHsiVHJhbnNmZXIgaW5jb21wbGV0ZVxuIiwgMzF9LAotLSAgeyJUcmFuc2ZlciBjb21wbGV0ZVxuIiwgMzJ9LAotLSAgeyJzZW5kX3BzZXVkbyAlczogY2Fubm90IG9wZW4gdG1wZmlsZSAlczogJXMiLCAzM30sCi0tICB7InNlbmRfcHNldWRvICVzOiBjYW5ub3QgbHN0YXQgdG1wZmlsZSAlczogJXMiLCAzNH0sCi0tICB7InNlbmRfcHNldWRvICVzOiBhdm9pZGluZyBzeW1saW5rIHRyYXAiLCAzNX0sCi0tICB7InNlbmRfcHNldWRvICVzOiBjYW5ub3Qgd3JpdGUgdG8gdG1wZmlsZSAlczogJXMiLCAzNn0sCi0tICB7InNlbmRfcHNldWRvICVzOiBmYWlsZWQiLCAzN30sCi0tICB7InNlbmRfcHNldWRvICVzOiBvayIsIDM4fSwKLS0gIHsidGNwIHByb3RvY29sIGluaXQgZmFpbGVkXG4iLCAzOX0sCi0tICB7IkFuc3dlcmluZyBUSU1FU1lOQyBhdCAlcyIsIDQwfSwKLS0gIHsidGltZXpvbmUiLCA0MX0sCi0tICB7InRpbWV6b25lIHVua25vd24iLCA0Mn0sCi0tICB7IkNhbid0IG9wZW4gYW55IHJlcXVlc3RlZCBmaWxlcy4iLCA0M30sCi0tICB7InNlY3VyaXR5IHZpb2xhdGlvbjogbm90IGFsbG93ZWQgdG8gdXBsb2FkIGZyb20gJXMiLCA0NH0sCi0tICB7ImNhbm5vdCBvcGVuICVzIiwgNDV9LAotLSAgeyJpcyBub3QgYSBmaWxlOiAlcyIsIDQ2fSwKLS0gIHsiJXMvJXM6IGVycm9yIG9jY3VyZWQiLCA0N30sCi0tICB7InNraXBwZWQ6ICVzIiwgNDh9LAotLSAgeyIlcy8lczogc2tpcHBlZCIsIDQ5fSwKLS0gIHsiQnl0ZXMgU2VudDolN2xkICAgQlBTOiUtOGxkICAgICAgICAgICAgICAgICAgICAgICAgXG4iLCA1MH0sCi0tICB7IlNlbmRpbmcgJXMsICVsZCBibG9ja3M6ICIsIDUxfSwKLS0gIHsiR2l2ZSB5b3VyIGxvY2FsIFhNT0RFTSByZWNlaXZlIGNvbW1hbmQgbm93LiIsIDUyfSwKLS0gIHsiU2VuZGluZzogJXNcbiIsIDUzfSwKLS0gIHsiVGltZW91dCBvbiBwYXRobmFtZSIsIDU0fSwKLS0gIHsiUmVjZWl2ZXIgQ2FuY2VsbGVkIiwgNTV9LAotLSAgeyJObyBBQ0sgb24gRU9UIiwgNTZ9LAotLSAgeyJYbW9kZW0gc2VjdG9ycy9rYnl0ZXMgc2VudDogJTNkLyUyZGsiLCA1N30sCi0tICB7Illtb2RlbSBzZWN0b3JzL2tieXRlcyBzZW50OiAlM2QvJTJkayIsIDU4fSwKLS0gIHsiQ2FuY2VsbGVkIiwgNTl9LAotLSAgeyJUaW1lb3V0IG9uIHNlY3RvciBBQ0siLCA2MH0sCi0tICB7Ik5BSyBvbiBzZWN0b3IiLCA2MX0sCi0tICB7IkdvdCBidXJzdCBmb3Igc2VjdG9yIEFDSyIsIDYyfSwKLS0gIHsiR290ICUwMnggZm9yIHNlY3RvciBBQ0siLCA2M30sCi0tICB7IlJldHJ5IENvdW50IEV4Y2VlZGVkIiwgNjR9LAotLSAgeyJUcnkgYCVzIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24uXG4iLCA2NX0sCi0tICB7IiVzIHZlcnNpb24gJXNcbiIsIDY2fSwKLS0gIHsiVXNhZ2U6ICVzIFtvcHRpb25zXSBmaWxlIC4uLlxuIiwgNjd9LAotLSAgeyIgICBvcjogJXMgW29wdGlvbnNdIC17Y3xpfSBDT01NQU5EXG4iLCA2OH0sCi0tICB7IlNlbmQgZmlsZShzKSB3aXRoIFpNT0RFTS9ZTU9ERU0vWE1PREVNIHByb3RvY29sXG4iLCA2OX0sCi0tICB7IlwKLS0gICAgKFgpID0gb3B0aW9uIGFwcGxpZXMgdG8gWE1PREVNIG9ubHlcblwKLS0gICAgKFkpID0gb3B0aW9uIGFwcGxpZXMgdG8gWU1PREVNIG9ubHlcblwKLS0gICAgKFopID0gb3B0aW9uIGFwcGxpZXMgdG8gWk1PREVNIG9ubHlcbiIsIDcwfSwKLS0gIHsiXAotLSAgLSssIC0tYXBwZW5kICAgICAgICAgICAgICAgIGFwcGVuZCB0byBleGlzdGluZyBkZXN0aW5hdGlvbiBmaWxlIChaKVxuXAotLSAgLTIsIC0tdHdvc3RvcCAgICAgICAgICAgICAgIHVzZSAyIHN0b3AgYml0c1xuXAotLSAgLTQsIC0tdHJ5LTRrICAgICAgICAgICAgICAgIGdvIHVwIHRvIDRLIGJsb2Nrc2l6ZVxuXAotLSAgICAgIC0tc3RhcnQtNGsgICAgICAgICAgICAgIHN0YXJ0IHdpdGggNEsgYmxvY2tzaXplIChkb2Vzbid0IHRyeSA4KVxuXAotLSAgLTgsIC0tdHJ5LThrICAgICAgICAgICAgICAgIGdvIHVwIHRvIDhLIGJsb2Nrc2l6ZVxuXAotLSAgICAgIC0tc3RhcnQtOGsgICAgICAgICAgICAgIHN0YXJ0IHdpdGggOEsgYmxvY2tzaXplXG5cCi0tICAtYSwgLS1hc2NpaSAgICAgICAgICAgICAgICAgQVNDSUkgdHJhbnNmZXIgKGNoYW5nZSBDUi9MRiB0byBMRilcblwKLS0gIC1iLCAtLWJpbmFyeSAgICAgICAgICAgICAgICBiaW5hcnkgdHJhbnNmZXJcblwKLS0gIC1CLCAtLWJ1ZnNpemUgTiAgICAgICAgICAgICBidWZmZXIgTiBieXRlcyAoTj09YXV0bzogYnVmZmVyIHdob2xlIGZpbGUpXG5cCi0tICAtYywgLS1jb21tYW5kIENPTU1BTkQgICAgICAgZXhlY3V0ZSByZW1vdGUgY29tbWFuZCBDT01NQU5EIChaKVxuXAotLSAgLUMsIC0tY29tbWFuZC10cmllcyBOICAgICAgIHRyeSBOIHRpbWVzIHRvIGV4ZWN1dGUgYSBjb21tYW5kIChaKVxuXAotLSAgLWQsIC0tZG90LXRvLXNsYXNoICAgICAgICAgIGNoYW5nZSAnLicgdG8gJy8nIGluIHBhdGhuYW1lcyAoWS9aKVxuXAotLSAgICAgIC0tZGVsYXktc3RhcnR1cCBOICAgICAgIHNsZWVwIE4gc2Vjb25kcyBiZWZvcmUgZG9pbmcgYW55dGhpbmdcblwKLS0gIC1lLCAtLWVzY2FwZSAgICAgICAgICAgICAgICBlc2NhcGUgYWxsIGNvbnRyb2wgY2hhcmFjdGVycyAoWilcblwKLS0gIC1FLCAtLXJlbmFtZSAgICAgICAgICAgICAgICBmb3JjZSByZWNlaXZlciB0byByZW5hbWUgZmlsZXMgaXQgYWxyZWFkeSBoYXNcblwKLS0gIC1mLCAtLWZ1bGwtcGF0aCAgICAgICAgICAgICBzZW5kIGZ1bGwgcGF0aG5hbWUgKFkvWilcblwKLS0gIC1pLCAtLWltbWVkaWF0ZS1jb21tYW5kIENNRCBzZW5kIHJlbW90ZSBDTUQsIHJldHVybiBpbW1lZGlhdGVseSAoWilcblwKLS0gIC1oLCAtLWhlbHAgICAgICAgICAgICAgICAgICBwcmludCB0aGlzIHVzYWdlIG1lc3NhZ2VcblwKLS0gIC1rLCAtLTFrICAgICAgICAgICAgICAgICAgICBzZW5kIDEwMjQgYnl0ZSBwYWNrZXRzIChYKVxuXAotLSAgLUwsIC0tcGFja2V0bGVuIE4gICAgICAgICAgIGxpbWl0IHN1YnBhY2tldCBsZW5ndGggdG8gTiBieXRlcyAoWilcblwKLS0gIC1sLCAtLWZyYW1lbGVuIE4gICAgICAgICAgICBsaW1pdCBmcmFtZSBsZW5ndGggdG8gTiBieXRlcyAobD49TCkgKFopXG5cCi0tICAtbSwgLS1taW4tYnBzIE4gICAgICAgICAgICAgc3RvcCB0cmFuc21pc3Npb24gaWYgQlBTIGJlbG93IE5cblwKLS0gIC1NLCAtLW1pbi1icHMtdGltZSBOICAgICAgICAgIGZvciBhdCBsZWFzdCBOIHNlY29uZHMgKGRlZmF1bHQ6IDEyMClcbiIsIDcxfSwKLS0gIHsiXAotLSAgLW4sIC0tbmV3ZXIgICAgICAgICAgICAgICAgIHNlbmQgZmlsZSBpZiBzb3VyY2UgbmV3ZXIgKFopXG5cCi0tICAtTiwgLS1uZXdlci1vci1sb25nZXIgICAgICAgc2VuZCBmaWxlIGlmIHNvdXJjZSBuZXdlciBvciBsb25nZXIgKFopXG5cCi0tICAtbywgLS0xNi1iaXQtY3JjICAgICAgICAgICAgdXNlIDE2IGJpdCBDUkMgaW5zdGVhZCBvZiAzMiBiaXQgQ1JDIChaKVxuXAotLSAgLU8sIC0tZGlzYWJsZS10aW1lb3V0cyAgICAgIGRpc2FibGUgdGltZW91dCBjb2RlLCB3YWl0IGZvcmV2ZXJcblwKLS0gIC1wLCAtLXByb3RlY3QgICAgICAgICAgICAgICBwcm90ZWN0IGV4aXN0aW5nIGRlc3RpbmF0aW9uIGZpbGUgKFopXG5cCi0tICAtciwgLS1yZXN1bWUgICAgICAgICAgICAgICAgcmVzdW1lIGludGVycnVwdGVkIGZpbGUgdHJhbnNmZXIgKFopXG5cCi0tICAtUiwgLS1yZXN0cmljdGVkICAgICAgICAgICAgcmVzdHJpY3RlZCwgbW9yZSBzZWN1cmUgbW9kZVxuXAotLSAgLXEsIC0tcXVpZXQgICAgICAgICAgICAgICAgIHF1aWV0IChubyBwcm9ncmVzcyByZXBvcnRzKVxuXAotLSAgLXMsIC0tc3RvcC1hdCB7SEg6TU18K059ICAgIHN0b3AgdHJhbnNtaXNzaW9uIGF0IEhIOk1NIG9yIGluIE4gc2Vjb25kc1xuXAotLSAgICAgIC0tdGNwICAgICAgICAgICAgICAgICAgIGJ1aWxkIGEgVENQIGNvbm5lY3Rpb24gdG8gdHJhbnNtaXQgZmlsZXNcblwKLS0gICAgICAtLXRjcC1zZXJ2ZXIgICAgICAgICAgICBvcGVuIHNvY2tldCwgd2FpdCBmb3IgY29ubmVjdGlvblxuXAotLSAgLXUsIC0tdW5saW5rICAgICAgICAgICAgICAgIHVubGluayBmaWxlIGFmdGVyIHRyYW5zbWlzc2lvblxuXAotLSAgLVUsIC0tdW5yZXN0cmljdCAgICAgICAgICAgIHR1cm4gb2ZmIHJlc3RyaWN0ZWQgbW9kZSAoaWYgYWxsb3dlZCB0bylcblwKLS0gIC12LCAtLXZlcmJvc2UgICAgICAgICAgICAgICBiZSB2ZXJib3NlLCBwcm92aWRlIGRlYnVnZ2luZyBpbmZvcm1hdGlvblxuXAotLSAgLXcsIC0td2luZG93c2l6ZSBOICAgICAgICAgIFdpbmRvdyBpcyBOIGJ5dGVzIChaKVxuXAotLSAgLVgsIC0teG1vZGVtICAgICAgICAgICAgICAgIHVzZSBYTU9ERU0gcHJvdG9jb2xcblwKLS0gIC15LCAtLW92ZXJ3cml0ZSAgICAgICAgICAgICBvdmVyd3JpdGUgZXhpc3RpbmcgZmlsZXNcblwKLS0gIC1ZLCAtLW92ZXJ3cml0ZS1vci1za2lwICAgICBvdmVyd3JpdGUgZXhpc3RpbmcgZmlsZXMsIGVsc2Ugc2tpcFxuXAotLSAgICAgIC0teW1vZGVtICAgICAgICAgICAgICAgIHVzZSBZTU9ERU0gcHJvdG9jb2xcblwKLS0gIC1aLCAtLXptb2RlbSAgICAgICAgICAgICAgICB1c2UgWk1PREVNIHByb3RvY29sXG5cCi0tXG5cCi0tc2hvcnQgb3B0aW9ucyB1c2UgdGhlIHNhbWUgYXJndW1lbnRzIGFzIHRoZSBsb25nIG9uZXNcbiIsIDcyfSwKLS0gIHsiZ290IFpSUUlOSVQiLCA3M30sCi0tICB7ImdvdCBaQ0FOIiwgNzR9LAotLSAgeyJibGtsZW4gbm93ICVkXG4iLCA3NX0sCi0tICB7InpzZW5kZmRhdGE6IGJwcyByYXRlICVsZCBiZWxvdyBtaW4gJWxkIiwgNzZ9LAotLSAgeyJ6c2VuZGZkYXRhOiByZWFjaGVkIHN0b3AgdGltZSIsIDc3fSwKLS0gIHsiQnl0ZXMgU2VudDolN2xkLyU3bGQgICBCUFM6JS04bGQgRVRBICUwMmQ6JTAyZCAgIiwgNzh9LAotLSAgeyJjYWxjX2Jsa2xlbjogcmVkdWNlZCB0byAlZCBkdWUgdG8gZXJyb3JcbiIsIDc5fSwKLS0gIHsiY2FsY19ibGtsZW46IHJldHVybmVkIG9sZCB2YWx1ZSAlZCBkdWUgdG8gbG93IGJwZSBkaWZmXG4iLCA4MH0sCi0tICB7ImNhbGNfYmxrbGVuOiBvbGQgJWxkLCBuZXcgJWxkLCBkICVsZFxuIiwgODF9LAotLSAgeyJjYWxjX2Jsa2xlbjogY2FsYyB0b3RhbF9ieXRlcz0lbGQsIGJwZT0lbGQsIGVjPSVsZFxuIiwgODJ9LAotLSAgeyJjYWxjX2Jsa2xlbjogYmxrbGVuICVkLCBvayAlbGQsIGZhaWxlZCAlbGQgLT4gJWx1XG4iLCA4M30sCi0tICB7ImNhbGNfYmxrbGVuOiByZXR1cm5lZCAlZCBhcyBiZXN0XG4iLCA4NH0sCi0tICB7IlwKLS1cblwKLS1jb3VudGVtOiBUb3RhbCAlZCAlbGRcbiIsIDg1fSwKLS0gIHsiQmFkIGVzY2FwZSBzZXF1ZW5jZSAleCIsIDg2fSwKLS0gIHsiU2VuZGVyIENhbmNlbGVkIiwgODd9LAotLSAgeyJUSU1FT1VUIiwgODh9LAotLSAgeyJCYWQgZGF0YSBzdWJwYWNrZXQiLCA4OX0sCi0tICB7IkRhdGEgc3VicGFja2V0IHRvbyBsb25nIiwgOTB9LAotLSAgeyJHYXJiYWdlIGNvdW50IGV4Y2VlZGVkIiwgOTF9LAotLSAgeyJHb3QgJXMiLCA5Mn0sCi0tICB7IlJldHJ5ICVkOiAiLCA5M30sCi0tICB7ImRvbid0IGhhdmUgc2V0dGltZW9mZGF5LCB3aWxsIG5vdCBzZXQgdGltZVxuIiwgOTR9LAotLSAgeyJub3QgcnVubmluZyBhcyByb290ICh0aGlzIGlzIGdvb2QhKSwgY2FuIG5vdCBzZXQgdGltZVxuIiwgOTV9LAotLSAgeyJieXRlc19wZXJfZXJyb3IiLCA5Nn0sCi0tICB7ImJ5dGVzLXBlci1lcnJvciBzaG91bGQgYmUgPjEwMCIsIDk3fSwKLS0gIHsiT19TWU5DIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGtlcm5lbCIsIDk4fSwKLS0gIHsiZ2FyYmFnZSBvbiBjb21tYW5kbGluZSIsIDk5fSwKLS0gIHsiVXNhZ2U6ICVzIFtvcHRpb25zXSBbZmlsZW5hbWUuaWYueG1vZGVtXVxuIiwgMTAwfSwKLS0gIHsiUmVjZWl2ZSBmaWxlcyB3aXRoIFpNT0RFTS9ZTU9ERU0vWE1PREVNIHByb3RvY29sXG4iLCAxMDF9LAotLSAgeyJcCi0tICAtKywgLS1hcHBlbmQgICAgICAgICAgICAgICAgYXBwZW5kIHRvIGV4aXN0aW5nIGZpbGVzXG5cCi0tICAtYSwgLS1hc2NpaSAgICAgICAgICAgICAgICAgQVNDSUkgdHJhbnNmZXIgKGNoYW5nZSBDUi9MRiB0byBMRilcblwKLS0gIC1iLCAtLWJpbmFyeSAgICAgICAgICAgICAgICBiaW5hcnkgdHJhbnNmZXJcblwKLS0gIC1CLCAtLWJ1ZnNpemUgTiAgICAgICAgICAgICBidWZmZXIgTiBieXRlcyAoTj09YXV0bzogYnVmZmVyIHdob2xlIGZpbGUpXG5cCi0tICAtYywgLS13aXRoLWNyYyAgICAgICAgICAgICAgVXNlIDE2IGJpdCBDUkMgKFgpXG5cCi0tICAtQywgLS1hbGxvdy1yZW1vdGUtY29tbWFuZHMgYWxsb3cgZXhlY3V0aW9uIG9mIHJlbW90ZSBjb21tYW5kcyAoWilcblwKLS0gIC1ELCAtLW51bGwgICAgICAgICAgICAgICAgICB3cml0ZSBhbGwgcmVjZWl2ZWQgZGF0YSB0byAvZGV2L251bGxcblwKLS0gICAgICAtLWRlbGF5LXN0YXJ0dXAgTiAgICAgICBzbGVlcCBOIHNlY29uZHMgYmVmb3JlIGRvaW5nIGFueXRoaW5nXG5cCi0tICAtZSwgLS1lc2NhcGUgICAgICAgICAgICAgICAgRXNjYXBlIGNvbnRyb2wgY2hhcmFjdGVycyAoWilcblwKLS0gIC1FLCAtLXJlbmFtZSAgICAgICAgICAgICAgICByZW5hbWUgYW55IGZpbGVzIGFscmVhZHkgZXhpc3RpbmdcblwKLS0gICAgICAtLWVycm9ycyBOICAgICAgICAgICAgICBnZW5lcmF0ZSBDUkMgZXJyb3IgZXZlcnkgTiBieXRlcyAoZGVidWdnaW5nKVxuXAotLSAgLWgsIC0taGVscCAgICAgICAgICAgICAgICAgIEhlbHAsIHByaW50IHRoaXMgdXNhZ2UgbWVzc2FnZVxuXAotLSAgLW0sIC0tbWluLWJwcyBOICAgICAgICAgICAgIHN0b3AgdHJhbnNtaXNzaW9uIGlmIEJQUyBiZWxvdyBOXG5cCi0tICAtTSwgLS1taW4tYnBzLXRpbWUgTiAgICAgICAgICBmb3IgYXQgbGVhc3QgTiBzZWNvbmRzIChkZWZhdWx0OiAxMjApXG5cCi0tICAtTywgLS1kaXNhYmxlLXRpbWVvdXRzICAgICAgZGlzYWJsZSB0aW1lb3V0IGNvZGUsIHdhaXQgZm9yZXZlciBmb3IgZGF0YVxuXAotLSAgICAgIC0tby1zeW5jICAgICAgICAgICAgICAgIG9wZW4gb3V0cHV0IGZpbGUocykgaW4gc3luY2hyb25vdXMgd3JpdGUgbW9kZVxuXAotLSAgLXAsIC0tcHJvdGVjdCAgICAgICAgICAgICAgIHByb3RlY3QgZXhpc3RpbmcgZmlsZXNcblwKLS0gIC1xLCAtLXF1aWV0ICAgICAgICAgICAgICAgICBxdWlldCwgbm8gcHJvZ3Jlc3MgcmVwb3J0c1xuXAotLSAgLXIsIC0tcmVzdW1lICAgICAgICAgICAgICAgIHRyeSB0byByZXN1bWUgaW50ZXJydXB0ZWQgZmlsZSB0cmFuc2ZlciAoWilcblwKLS0gIC1SLCAtLXJlc3RyaWN0ZWQgICAgICAgICAgICByZXN0cmljdGVkLCBtb3JlIHNlY3VyZSBtb2RlXG5cCi0tICAtcywgLS1zdG9wLWF0IHtISDpNTXwrTn0gICAgc3RvcCB0cmFuc21pc3Npb24gYXQgSEg6TU0gb3IgaW4gTiBzZWNvbmRzXG5cCi0tICAtUywgLS10aW1lc3luYyAgICAgICAgICAgICAgcmVxdWVzdCByZW1vdGUgdGltZSAodHdpY2U6IHNldCBsb2NhbCB0aW1lKVxuXAotLSAgICAgIC0tc3lzbG9nWz1vZmZdICAgICAgICAgIHR1cm4gc3lzbG9nIG9uIG9yIG9mZiwgaWYgcG9zc2libGVcblwKLS0gIC10LCAtLXRpbWVvdXQgTiAgICAgICAgICAgICBzZXQgdGltZW91dCB0byBOIHRlbnRocyBvZiBhIHNlY29uZFxuXAotLSAgLXUsIC0ta2VlcC11cHBlcmNhc2UgICAgICAgIGtlZXAgdXBwZXIgY2FzZSBmaWxlbmFtZXNcblwKLS0gIC1VLCAtLXVucmVzdHJpY3QgICAgICAgICAgICBkaXNhYmxlIHJlc3RyaWN0ZWQgbW9kZSAoaWYgYWxsb3dlZCB0bylcblwKLS0gIC12LCAtLXZlcmJvc2UgICAgICAgICAgICAgICBiZSB2ZXJib3NlLCBwcm92aWRlIGRlYnVnZ2luZyBpbmZvcm1hdGlvblxuXAotLSAgLXcsIC0td2luZG93c2l6ZSBOICAgICAgICAgIFdpbmRvdyBpcyBOIGJ5dGVzIChaKVxuXAotLSAgLVggIC0teG1vZGVtICAgICAgICAgICAgICAgIHVzZSBYTU9ERU0gcHJvdG9jb2xcblwKLS0gIC15LCAtLW92ZXJ3cml0ZSAgICAgICAgICAgICBZZXMsIGNsb2JiZXIgZXhpc3RpbmcgZmlsZSBpZiBhbnlcblwKLS0gICAgICAtLXltb2RlbSAgICAgICAgICAgICAgICB1c2UgWU1PREVNIHByb3RvY29sXG5cCi0tICAtWiwgLS16bW9kZW0gICAgICAgICAgICAgICAgdXNlIFpNT0RFTSBwcm90b2NvbFxuXAotLVxuXAotLXNob3J0IG9wdGlvbnMgdXNlIHRoZSBzYW1lIGFyZ3VtZW50cyBhcyB0aGUgbG9uZyBvbmVzXG4iLCAxMDJ9LAotLSAgeyIlcyB3YWl0aW5nIHRvIHJlY2VpdmUuIiwgMTAzfSwKLS0gIHsiXHJCeXRlcyByZWNlaXZlZDogJTdsZC8lN2xkICAgQlBTOiUtNmxkICAgICAgICAgICAgICAgIFxyXG4iLCAxMDR9LAotLSAgeyIlczogcmVhZHkgdG8gcmVjZWl2ZSAlcyIsIDEwNX0sCi0tICB7IlxyQnl0ZXMgcmVjZWl2ZWQ6ICU3bGQgICBCUFM6JS02bGQgICAgICAgICAgICAgICAgXHJcbiIsIDEwNn0sCi0tICB7IlwKLS1cclxuXAotLSVzOiAlcyByZW1vdmVkLlxyXG4iLCAxMDd9LAotLSAgeyJQYXRobmFtZSBmZXRjaCByZXR1cm5lZCBFT1QiLCAxMDh9LAotLSAgeyJSZWNlaXZlZCBkdXAgU2VjdG9yIiwgMTA5fSwKLS0gIHsiU3luYyBFcnJvciIsIDExMH0sCi0tICB7IkNSQyIsIDExMX0sCi0tICB7IkNoZWNrc3VtIiwgMTEyfSwKLS0gIHsiU2VjdG9yIG51bWJlciBnYXJibGVkIiwgMTEzfSwKLS0gIHsiU2VuZGVyIENhbmNlbGxlZCIsIDExNH0sCi0tICB7IkdvdCAwJW8gc2VjdG9yIGhlYWRlciIsIDExNX0sCi0tICB7ImZpbGUgbmFtZSBlbmRzIHdpdGggYSAvLCBza2lwcGVkOiAlc1xuIiwgMTE2fSwKLS0gIHsiem1hbmFnPSVkLCBMem1hbmFnPSVkXG4iLCAxMTd9LAotLSAgeyJ6Y29udj0lZFxuIiwgMTE4fSwKLS0gIHsiZmlsZSBleGlzdHMsIHNraXBwZWQ6ICVzXG4iLCAxMTl9LAotLSAgeyJUSU1FU1lOQzogaGVyZSAlbGQsIHJlbW90ZSAlbGQsIGRpZmYgJWxkIHNlY29uZHNcbiIsIDEyMH0sCi0tICB7IlRJTUVTWU5DOiBjYW5ub3Qgc2V0IHRpbWU6ICVzXG4iLCAxMjF9LAotLSAgeyJjYW5ub3QgdG1wZmlsZSgpIGZvciB0Y3AgcHJvdG9jb2wgc3luY2hyb25pemF0aW9uIiwgMTIyfSwKLS0gIHsiVG9waXBlIiwgMTIzfSwKLS0gIHsiUmVjZWl2aW5nOiAlc1xuIiwgMTI0fSwKLS0gIHsiQmxvY2tzIHJlY2VpdmVkOiAlZCIsIDEyNX0sCi0tICB7IiVzOiAlcyBleGlzdHNcbiIsIDEyNn0sCi0tICB7IiVzOlx0U2VjdXJpdHkgVmlvbGF0aW9uIiwgMTI3fSwKLS0gIHsicmVtb3RlIGNvbW1hbmQgZXhlY3V0aW9uIHJlcXVlc3RlZCIsIDEyOH0sCi0tICB7Im5vdCBleGVjdXRlZCIsIDEyOX0sCi0tICB7ImdvdCBaUklOSVQiLCAxMzB9LAotLSAgeyJTa2lwcGVkIiwgMTMxfSwKLS0gIHsicnpmaWxlOiBicHMgcmF0ZSAlbGQgYmVsb3cgbWluICVsZCIsIDEzMn0sCi0tICB7InJ6ZmlsZTogcmVhY2hlZCBzdG9wIHRpbWUiLCAxMzN9LAotLSAgeyJcckJ5dGVzIHJlY2VpdmVkOiAlN2xkLyU3bGQgICBCUFM6JS02bGQgRVRBICUwMmQ6JTAyZCAgIiwgMTM0fSwKLS0gIHsiZmdldHMgZm9yIHRjcCBwcm90b2NvbCBzeW5jaHJvbml6YXRpb24gZmFpbGVkOiAiLCAxMzV9LAotLSAgeyJmaWxlIGNsb3NlIGVycm9yIiwgMTM2fSwKLS19OwotLQotLWludCBfbXNnX3RibF9sZW5ndGggPSAxMzY7Ci0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL3BvL0NoYW5nZUxvZwkxOTk4LTA0LTI2IDA5OjIwOjUyLjAwMDAwMDAwMCAtMDQwMAotKysrIGxyenN6LTAuMTIuMjAvcG8vQ2hhbmdlTG9nCTIwMDQtMDktMTIgMTQ6NDA6MzQuNzkzNjgxNTEyIC0wNDAwCi1AQCAtMSwzICsxLDE1IEBACi0rMjAwNC0wOS0xMiAgZ2V0dGV4dGl6ZSAgPGJ1Zy1nbnUtZ2V0dGV4dEBnbnUub3JnPgotKwotKwkqIGJvbGRxdW90LnNlZDogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogZW5AYm9sZHF1b3QuaGVhZGVyOiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBlbkBxdW90LmhlYWRlcjogTmV3IGZpbGUsIGZyb20gZ2V0dGV4dC0wLjE0LjEuCi0rCSogaW5zZXJ0LWhlYWRlci5zaW46IE5ldyBmaWxlLCBmcm9tIGdldHRleHQtMC4xNC4xLgotKwkqIHF1b3Quc2VkOiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiByZW1vdmUtcG90Y2RhdGUuc2luOiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBSdWxlcy1xdW90OiBOZXcgZmlsZSwgZnJvbSBnZXR0ZXh0LTAuMTQuMS4KLSsJKiBjYXQtaWQtdGJsLmM6IFJlbW92ZSBmaWxlLgotKwkqIHN0YW1wLWNhdC1pZDogUmVtb3ZlIGZpbGUuCi0rCi0gLyogQXV0b21hdGljYWxseSBnZW5lcmF0ZWQgYnkgcG8ydGJsLnNlZCBmcm9tIGxyenN6LnBvdC4gICovCi0gCi0gI2lmIEhBVkVfQ09ORklHX0gKLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvcG8vZW5AYm9sZHF1b3QuaGVhZGVyCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9wby9lbkBib2xkcXVvdC5oZWFkZXIJMjAwNC0wOS0xMiAxNDo0MDozNC43MzE2OTA5MzYgLTA0MDAKLUBAIC0wLDAgKzEsMjUgQEAKLSsjIEFsbCB0aGlzIGNhdGFsb2cgInRyYW5zbGF0ZXMiIGFyZSBxdW90YXRpb24gY2hhcmFjdGVycy4KLSsjIFRoZSBtc2dpZHMgbXVzdCBiZSBBU0NJSSBhbmQgdGhlcmVmb3JlIGNhbm5vdCBjb250YWluIHJlYWwgcXVvdGF0aW9uCi0rIyBjaGFyYWN0ZXJzLCBvbmx5IHN1YnN0aXR1dGVzIGxpa2UgZ3JhdmUgYWNjZW50ICgweDYwKSwgYXBvc3Ryb3BoZSAoMHgyNykKLSsjIGFuZCBkb3VibGUgcXVvdGUgKDB4MjIpLiBUaGVzZSBzdWJzdGl0dXRlcyBsb29rIHN0cmFuZ2U7IHNlZQotKyMgaHR0cDovL3d3dy5jbC5jYW0uYWMudWsvfm1nazI1L3Vjcy9xdW90ZXMuaHRtbAotKyMKLSsjIFRoaXMgY2F0YWxvZyB0cmFuc2xhdGVzIGdyYXZlIGFjY2VudCAoMHg2MCkgYW5kIGFwb3N0cm9waGUgKDB4MjcpIHRvCi0rIyBsZWZ0IHNpbmdsZSBxdW90YXRpb24gbWFyayAoVSsyMDE4KSBhbmQgcmlnaHQgc2luZ2xlIHF1b3RhdGlvbiBtYXJrIChVKzIwMTkpLgotKyMgSXQgYWxzbyB0cmFuc2xhdGVzIHBhaXJzIG9mIGFwb3N0cm9waGUgKDB4MjcpIHRvCi0rIyBsZWZ0IHNpbmdsZSBxdW90YXRpb24gbWFyayAoVSsyMDE4KSBhbmQgcmlnaHQgc2luZ2xlIHF1b3RhdGlvbiBtYXJrIChVKzIwMTkpCi0rIyBhbmQgcGFpcnMgb2YgcXVvdGF0aW9uIG1hcmsgKDB4MjIpIHRvCi0rIyBsZWZ0IGRvdWJsZSBxdW90YXRpb24gbWFyayAoVSsyMDFDKSBhbmQgcmlnaHQgZG91YmxlIHF1b3RhdGlvbiBtYXJrIChVKzIwMUQpLgotKyMKLSsjIFdoZW4gb3V0cHV0IHRvIGFuIFVURi04IHRlcm1pbmFsLCB0aGUgcXVvdGF0aW9uIGNoYXJhY3RlcnMgYXBwZWFyIHBlcmZlY3RseS4KLSsjIFdoZW4gb3V0cHV0IHRvIGFuIElTTy04ODU5LTEgdGVybWluYWwsIHRoZSBzaW5nbGUgcXVvdGF0aW9uIG1hcmtzIGFyZQotKyMgdHJhbnNsaXRlcmF0ZWQgdG8gYXBvc3Ryb3BoZXMgKGJ5IGljb252IGluIGdsaWJjIDIuMiBvciBuZXdlcikgb3IgdG8KLSsjIGdyYXZlL2FjdXRlIGFjY2VudCAoYnkgbGliaWNvbnYpLCBhbmQgdGhlIGRvdWJsZSBxdW90YXRpb24gbWFya3MgYXJlCi0rIyB0cmFuc2xpdGVyYXRlZCB0byAweDIyLgotKyMgV2hlbiBvdXRwdXQgdG8gYW4gQVNDSUkgdGVybWluYWwsIHRoZSBzaW5nbGUgcXVvdGF0aW9uIG1hcmtzIGFyZQotKyMgdHJhbnNsaXRlcmF0ZWQgdG8gYXBvc3Ryb3BoZXMsIGFuZCB0aGUgZG91YmxlIHF1b3RhdGlvbiBtYXJrcyBhcmUKLSsjIHRyYW5zbGl0ZXJhdGVkIHRvIDB4MjIuCi0rIwotKyMgVGhpcyBjYXRhbG9nIGZ1cnRoZXJtb3JlIGRpc3BsYXlzIHRoZSB0ZXh0IGJldHdlZW4gdGhlIHF1b3RhdGlvbiBtYXJrcyBpbgotKyMgYm9sZCBmYWNlLCBhc3N1bWluZyB0aGUgVlQxMDAvWFRlcm0gZXNjYXBlIHNlcXVlbmNlcy4KLSsjCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL3BvL2VuQHF1b3QuaGVhZGVyCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9wby9lbkBxdW90LmhlYWRlcgkyMDA0LTA5LTEyIDE0OjQwOjM0LjczNzY5MDAyNCAtMDQwMAotQEAgLTAsMCArMSwyMiBAQAotKyMgQWxsIHRoaXMgY2F0YWxvZyAidHJhbnNsYXRlcyIgYXJlIHF1b3RhdGlvbiBjaGFyYWN0ZXJzLgotKyMgVGhlIG1zZ2lkcyBtdXN0IGJlIEFTQ0lJIGFuZCB0aGVyZWZvcmUgY2Fubm90IGNvbnRhaW4gcmVhbCBxdW90YXRpb24KLSsjIGNoYXJhY3RlcnMsIG9ubHkgc3Vic3RpdHV0ZXMgbGlrZSBncmF2ZSBhY2NlbnQgKDB4NjApLCBhcG9zdHJvcGhlICgweDI3KQotKyMgYW5kIGRvdWJsZSBxdW90ZSAoMHgyMikuIFRoZXNlIHN1YnN0aXR1dGVzIGxvb2sgc3RyYW5nZTsgc2VlCi0rIyBodHRwOi8vd3d3LmNsLmNhbS5hYy51ay9+bWdrMjUvdWNzL3F1b3Rlcy5odG1sCi0rIwotKyMgVGhpcyBjYXRhbG9nIHRyYW5zbGF0ZXMgZ3JhdmUgYWNjZW50ICgweDYwKSBhbmQgYXBvc3Ryb3BoZSAoMHgyNykgdG8KLSsjIGxlZnQgc2luZ2xlIHF1b3RhdGlvbiBtYXJrIChVKzIwMTgpIGFuZCByaWdodCBzaW5nbGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxOSkuCi0rIyBJdCBhbHNvIHRyYW5zbGF0ZXMgcGFpcnMgb2YgYXBvc3Ryb3BoZSAoMHgyNykgdG8KLSsjIGxlZnQgc2luZ2xlIHF1b3RhdGlvbiBtYXJrIChVKzIwMTgpIGFuZCByaWdodCBzaW5nbGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxOSkKLSsjIGFuZCBwYWlycyBvZiBxdW90YXRpb24gbWFyayAoMHgyMikgdG8KLSsjIGxlZnQgZG91YmxlIHF1b3RhdGlvbiBtYXJrIChVKzIwMUMpIGFuZCByaWdodCBkb3VibGUgcXVvdGF0aW9uIG1hcmsgKFUrMjAxRCkuCi0rIwotKyMgV2hlbiBvdXRwdXQgdG8gYW4gVVRGLTggdGVybWluYWwsIHRoZSBxdW90YXRpb24gY2hhcmFjdGVycyBhcHBlYXIgcGVyZmVjdGx5LgotKyMgV2hlbiBvdXRwdXQgdG8gYW4gSVNPLTg4NTktMSB0ZXJtaW5hbCwgdGhlIHNpbmdsZSBxdW90YXRpb24gbWFya3MgYXJlCi0rIyB0cmFuc2xpdGVyYXRlZCB0byBhcG9zdHJvcGhlcyAoYnkgaWNvbnYgaW4gZ2xpYmMgMi4yIG9yIG5ld2VyKSBvciB0bwotKyMgZ3JhdmUvYWN1dGUgYWNjZW50IChieSBsaWJpY29udiksIGFuZCB0aGUgZG91YmxlIHF1b3RhdGlvbiBtYXJrcyBhcmUKLSsjIHRyYW5zbGl0ZXJhdGVkIHRvIDB4MjIuCi0rIyBXaGVuIG91dHB1dCB0byBhbiBBU0NJSSB0ZXJtaW5hbCwgdGhlIHNpbmdsZSBxdW90YXRpb24gbWFya3MgYXJlCi0rIyB0cmFuc2xpdGVyYXRlZCB0byBhcG9zdHJvcGhlcywgYW5kIHRoZSBkb3VibGUgcXVvdGF0aW9uIG1hcmtzIGFyZQotKyMgdHJhbnNsaXRlcmF0ZWQgdG8gMHgyMi4KLSsjCi0tLS0gbHJ6c3otMC4xMi4yMC5zYWZlL3BvL2luc2VydC1oZWFkZXIuc2luCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9wby9pbnNlcnQtaGVhZGVyLnNpbgkyMDA0LTA5LTEyIDE0OjQwOjM0Ljc0MzY4OTExMiAtMDQwMAotQEAgLTAsMCArMSwyMyBAQAotKyMgU2VkIHNjcmlwdCB0aGF0IGluc2VydHMgdGhlIGZpbGUgY2FsbGVkIEhFQURFUiBiZWZvcmUgdGhlIGhlYWRlciBlbnRyeS4KLSsjCi0rIyBBdCBlYWNoIG9jY3VycmVuY2Ugb2YgYSBsaW5lIHN0YXJ0aW5nIHdpdGggIm1zZ2lkICIsIHdlIGV4ZWN1dGUgdGhlIGZvbGxvd2luZwotKyMgY29tbWFuZHMuIEF0IHRoZSBmaXJzdCBvY2N1cnJlbmNlLCBpbnNlcnQgdGhlIGZpbGUuIEF0IHRoZSBmb2xsb3dpbmcKLSsjIG9jY3VycmVuY2VzLCBkbyBub3RoaW5nLiBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGUgZmlyc3QgYW5kIHRoZSBmb2xsb3dpbmcKLSsjIG9jY3VycmVuY2VzIGlzIGFjaGlldmVkIGJ5IGxvb2tpbmcgYXQgdGhlIGhvbGQgc3BhY2UuCi0rL15tc2dpZCAvewotK3gKLSsjIFRlc3QgaWYgdGhlIGhvbGQgc3BhY2UgaXMgZW1wdHkuCi0rcy9tL20vCi0rdGEKLSsjIFllcyBpdCB3YXMgZW1wdHkuIEZpcnN0IG9jY3VycmVuY2UuIFJlYWQgdGhlIGZpbGUuCi0rciBIRUFERVIKLSsjIE91dHB1dCB0aGUgZmlsZSdzIGNvbnRlbnRzIGJ5IHJlYWRpbmcgdGhlIG5leHQgbGluZS4gQnV0IGRvbid0IGxvc2UgdGhlCi0rIyBjdXJyZW50IGxpbmUgd2hpbGUgZG9pbmcgdGhpcy4KLStnCi0rTgotK2JiCi0rOmEKLSsjIFRoZSBob2xkIHNwYWNlIHdhcyBub25lbXB0eS4gRm9sbG93aW5nIG9jY3VycmVuY2VzLiBEbyBub3RoaW5nLgotK3gKLSs6YgotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvcG8vTWFrZXZhcnMJMTk2OS0xMi0zMSAxOTowMDowMC4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL3BvL01ha2V2YXJzCTIwMDQtMDktMTIgMTQ6NDA6MzQuNzQ4Njg4MzUyIC0wNDAwCi1AQCAtMCwwICsxLDQxIEBACi0rIyBNYWtlZmlsZSB2YXJpYWJsZXMgZm9yIFBPIGRpcmVjdG9yeSBpbiBhbnkgcGFja2FnZSB1c2luZyBHTlUgZ2V0dGV4dC4KLSsKLSsjIFVzdWFsbHkgdGhlIG1lc3NhZ2UgZG9tYWluIGlzIHRoZSBzYW1lIGFzIHRoZSBwYWNrYWdlIG5hbWUuCi0rRE9NQUlOID0gJChQQUNLQUdFKQotKwotKyMgVGhlc2UgdHdvIHZhcmlhYmxlcyBkZXBlbmQgb24gdGhlIGxvY2F0aW9uIG9mIHRoaXMgZGlyZWN0b3J5LgotK3N1YmRpciA9IHBvCi0rdG9wX2J1aWxkZGlyID0gLi4KLSsKLSsjIFRoZXNlIG9wdGlvbnMgZ2V0IHBhc3NlZCB0byB4Z2V0dGV4dC4KLStYR0VUVEVYVF9PUFRJT05TID0gLS1rZXl3b3JkPV8gLS1rZXl3b3JkPU5fCi0rCi0rIyBUaGlzIGlzIHRoZSBjb3B5cmlnaHQgaG9sZGVyIHRoYXQgZ2V0cyBpbnNlcnRlZCBpbnRvIHRoZSBoZWFkZXIgb2YgdGhlCi0rIyAkKERPTUFJTikucG90IGZpbGUuICBTZXQgdGhpcyB0byB0aGUgY29weXJpZ2h0IGhvbGRlciBvZiB0aGUgc3Vycm91bmRpbmcKLSsjIHBhY2thZ2UuICAoTm90ZSB0aGF0IHRoZSBtc2dzdHIgc3RyaW5ncywgZXh0cmFjdGVkIGZyb20gdGhlIHBhY2thZ2UncwotKyMgc291cmNlcywgYmVsb25nIHRvIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG9mIHRoZSBwYWNrYWdlLikgIFRyYW5zbGF0b3JzIGFyZQotKyMgZXhwZWN0ZWQgdG8gdHJhbnNmZXIgdGhlIGNvcHlyaWdodCBmb3IgdGhlaXIgdHJhbnNsYXRpb25zIHRvIHRoaXMgcGVyc29uCi0rIyBvciBlbnRpdHksIG9yIHRvIGRpc2NsYWltIHRoZWlyIGNvcHlyaWdodC4gIFRoZSBlbXB0eSBzdHJpbmcgc3RhbmRzIGZvcgotKyMgdGhlIHB1YmxpYyBkb21haW47IGluIHRoaXMgY2FzZSB0aGUgdHJhbnNsYXRvcnMgYXJlIGV4cGVjdGVkIHRvIGRpc2NsYWltCi0rIyB0aGVpciBjb3B5cmlnaHQuCi0rQ09QWVJJR0hUX0hPTERFUiA9IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKwotKyMgVGhpcyBpcyB0aGUgZW1haWwgYWRkcmVzcyBvciBVUkwgdG8gd2hpY2ggdGhlIHRyYW5zbGF0b3JzIHNoYWxsIHJlcG9ydAotKyMgYnVncyBpbiB0aGUgdW50cmFuc2xhdGVkIHN0cmluZ3M6Ci0rIyAtIFN0cmluZ3Mgd2hpY2ggYXJlIG5vdCBlbnRpcmUgc2VudGVuY2VzLCBzZWUgdGhlIG1haW50YWluZXIgZ3VpZGVsaW5lcwotKyMgICBpbiB0aGUgR05VIGdldHRleHQgZG9jdW1lbnRhdGlvbiwgc2VjdGlvbiAnUHJlcGFyaW5nIFN0cmluZ3MnLgotKyMgLSBTdHJpbmdzIHdoaWNoIHVzZSB1bmNsZWFyIHRlcm1zIG9yIHJlcXVpcmUgYWRkaXRpb25hbCBjb250ZXh0IHRvIGJlCi0rIyAgIHVuZGVyc3Rvb2QuCi0rIyAtIFN0cmluZ3Mgd2hpY2ggbWFrZSBpbnZhbGlkIGFzc3VtcHRpb25zIGFib3V0IG5vdGF0aW9uIG9mIGRhdGUsIHRpbWUgb3IKLSsjICAgbW9uZXkuCi0rIyAtIFBsdXJhbGlzYXRpb24gcHJvYmxlbXMuCi0rIyAtIEluY29ycmVjdCBFbmdsaXNoIHNwZWxsaW5nLgotKyMgLSBJbmNvcnJlY3QgZm9ybWF0dGluZy4KLSsjIEl0IGNhbiBiZSB5b3VyIGVtYWlsIGFkZHJlc3MsIG9yIGEgbWFpbGluZyBsaXN0IGFkZHJlc3Mgd2hlcmUgdHJhbnNsYXRvcnMKLSsjIGNhbiB3cml0ZSB0byB3aXRob3V0IGJlaW5nIHN1YnNjcmliZWQsIG9yIHRoZSBVUkwgb2YgYSB3ZWIgcGFnZSB0aHJvdWdoCi0rIyB3aGljaCB0aGUgdHJhbnNsYXRvcnMgY2FuIGNvbnRhY3QgeW91LgotK01TR0lEX0JVR1NfQUREUkVTUyA9Ci0rCi0rIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGxvY2FsZSBjYXRlZ29yaWVzLCBiZXlvbmQgTENfTUVTU0FHRVMsIGZvciB3aGljaCB0aGUKLSsjIG1lc3NhZ2UgY2F0YWxvZ3Mgc2hhbGwgYmUgdXNlZC4gIEl0IGlzIHVzdWFsbHkgZW1wdHkuCi0rRVhUUkFfTE9DQUxFX0NBVEVHT1JJRVMgPQotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9wby9xdW90LnNlZAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvcG8vcXVvdC5zZWQJMjAwNC0wOS0xMiAxNDo0MDozNC43NTQ2ODc0NDAgLTA0MDAKLUBAIC0wLDAgKzEsNiBAQAotK3MvIlwoW14iXSpcKSIv4oCcXDHigJ0vZwotK3MvYFwoW15gJ10qXCknL+KAmFwx4oCZL2cKLStzLyAnXChbXmAnXSpcKScgLyDigJhcMeKAmSAvZwotK3MvICdcKFteYCddKlwpJyQvIOKAmFwx4oCZL2cKLStzL14nXChbXmAnXSpcKScgL+KAmFwx4oCZIC9nCi0rcy/igJzigJ0vIiIvZwotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9wby9yZW1vdmUtcG90Y2RhdGUuc2luCTE5NjktMTItMzEgMTk6MDA6MDAuMDAwMDAwMDAwIC0wNTAwCi0rKysgbHJ6c3otMC4xMi4yMC9wby9yZW1vdmUtcG90Y2RhdGUuc2luCTIwMDQtMDktMTIgMTQ6NDA6MzQuNzYyNjg2MjI0IC0wNDAwCi1AQCAtMCwwICsxLDE5IEBACi0rIyBTZWQgc2NyaXB0IHRoYXQgcmVtb3ZlIHRoZSBQT1QtQ3JlYXRpb24tRGF0ZSBsaW5lIGluIHRoZSBoZWFkZXIgZW50cnkKLSsjIGZyb20gYSBQT1QgZmlsZS4KLSsjCi0rIyBUaGUgZGlzdGluY3Rpb24gYmV0d2VlbiB0aGUgZmlyc3QgYW5kIHRoZSBmb2xsb3dpbmcgb2NjdXJyZW5jZXMgb2YgdGhlCi0rIyBwYXR0ZXJuIGlzIGFjaGlldmVkIGJ5IGxvb2tpbmcgYXQgdGhlIGhvbGQgc3BhY2UuCi0rL14iUE9ULUNyZWF0aW9uLURhdGU6IC4qIiQvewotK3gKLSsjIFRlc3QgaWYgdGhlIGhvbGQgc3BhY2UgaXMgZW1wdHkuCi0rcy9QL1AvCi0rdGEKLSsjIFllcyBpdCB3YXMgZW1wdHkuIEZpcnN0IG9jY3VycmVuY2UuIFJlbW92ZSB0aGUgbGluZS4KLStnCi0rZAotK2JiCi0rOmEKLSsjIFRoZSBob2xkIHNwYWNlIHdhcyBub25lbXB0eS4gRm9sbG93aW5nIG9jY3VycmVuY2VzLiBEbyBub3RoaW5nLgotK3gKLSs6YgotK30KLS0tLSBscnpzei0wLjEyLjIwLnNhZmUvcG8vUnVsZXMtcXVvdAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotKysrIGxyenN6LTAuMTIuMjAvcG8vUnVsZXMtcXVvdAkyMDA0LTA5LTEyIDE0OjQwOjM0Ljc3ODY4Mzc5MiAtMDQwMAotQEAgLTAsMCArMSw0NyBAQAotKyMgU3BlY2lhbCBNYWtlZmlsZSBydWxlcyBmb3IgRW5nbGlzaCBtZXNzYWdlIGNhdGFsb2dzIHdpdGggcXVvdGF0aW9uIG1hcmtzLgotKwotK0RJU1RGSUxFUy5jb21tb24uZXh0cmExID0gcXVvdC5zZWQgYm9sZHF1b3Quc2VkIGVuQHF1b3QuaGVhZGVyIGVuQGJvbGRxdW90LmhlYWRlciBpbnNlcnQtaGVhZGVyLnNpbiBSdWxlcy1xdW90Ci0rCi0rLlNVRkZJWEVTOiAuaW5zZXJ0LWhlYWRlciAucG8tdXBkYXRlLWVuCi0rCi0rZW5AcXVvdC5wby1jcmVhdGU6Ci0rCSQoTUFLRSkgZW5AcXVvdC5wby11cGRhdGUKLStlbkBib2xkcXVvdC5wby1jcmVhdGU6Ci0rCSQoTUFLRSkgZW5AYm9sZHF1b3QucG8tdXBkYXRlCi0rCi0rZW5AcXVvdC5wby11cGRhdGU6IGVuQHF1b3QucG8tdXBkYXRlLWVuCi0rZW5AYm9sZHF1b3QucG8tdXBkYXRlOiBlbkBib2xkcXVvdC5wby11cGRhdGUtZW4KLSsKLSsuaW5zZXJ0LWhlYWRlci5wby11cGRhdGUtZW46Ci0rCUBsYW5nPWBlY2hvICRAIHwgc2VkIC1lICdzL1wucG8tdXBkYXRlLWVuJCQvLydgOyBcCi0rCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQiOyB0aGVuIFBBVEg9YHB3ZGAvLi4vc3JjOiQkUEFUSDsgR0VUVEVYVExJQkRJUj1gY2QgJCh0b3Bfc3JjZGlyKS9zcmMgJiYgcHdkYDsgZXhwb3J0IEdFVFRFWFRMSUJESVI7IGZpOyBcCi0rCXRtcGRpcj1gcHdkYDsgXAotKwllY2hvICIkJGxhbmc6IjsgXAotKwlsbD1gZWNobyAkJGxhbmcgfCBzZWQgLWUgJ3MvQC4qLy8nYDsgXAotKwlMQ19BTEw9QzsgZXhwb3J0IExDX0FMTDsgXAotKwljZCAkKHNyY2Rpcik7IFwKLSsJaWYgJChNU0dJTklUKSAtaSAkKERPTUFJTikucG90IC0tbm8tdHJhbnNsYXRvciAtbCAkJGxsIC1vIC0gMj4vZGV2L251bGwgfCBzZWQgLWYgJCR0bXBkaXIvJCRsYW5nLmluc2VydC1oZWFkZXIgfCAkKE1TR0NPTlYpIC10IFVURi04IHwgJChNU0dGSUxURVIpIHNlZCAtZiBgZWNobyAkJGxhbmcgfCBzZWQgLWUgJ3MvLipALy8nYC5zZWQgMj4vZGV2L251bGwgPiAkJHRtcGRpci8kJGxhbmcubmV3LnBvOyB0aGVuIFwKLSsJICBpZiBjbXAgJCRsYW5nLnBvICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gPi9kZXYvbnVsbCAyPiYxOyB0aGVuIFwKLSsJICAgIHJtIC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG87IFwKLSsJICBlbHNlIFwKLSsJICAgIGlmIG12IC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gJCRsYW5nLnBvOyB0aGVuIFwKLSsJICAgICAgOjsgXAotKwkgICAgZWxzZSBcCi0rCSAgICAgIGVjaG8gImNyZWF0aW9uIG9mICQkbGFuZy5wbyBmYWlsZWQ6IGNhbm5vdCBtb3ZlICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gdG8gJCRsYW5nLnBvIiAxPiYyOyBcCi0rCSAgICAgIGV4aXQgMTsgXAotKwkgICAgZmk7IFwKLSsJICBmaTsgXAotKwllbHNlIFwKLSsJICBlY2hvICJjcmVhdGlvbiBvZiAkJGxhbmcucG8gZmFpbGVkISIgMT4mMjsgXAotKwkgIHJtIC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG87IFwKLSsJZmkKLSsKLStlbkBxdW90Lmluc2VydC1oZWFkZXI6IGluc2VydC1oZWFkZXIuc2luCi0rCXNlZCAtZSAnL14jL2QnIC1lICdzL0hFQURFUi9lbkBxdW90LmhlYWRlci9nJyAkKHNyY2RpcikvaW5zZXJ0LWhlYWRlci5zaW4gPiBlbkBxdW90Lmluc2VydC1oZWFkZXIKLSsKLStlbkBib2xkcXVvdC5pbnNlcnQtaGVhZGVyOiBpbnNlcnQtaGVhZGVyLnNpbgotKwlzZWQgLWUgJy9eIy9kJyAtZSAncy9IRUFERVIvZW5AYm9sZHF1b3QuaGVhZGVyL2cnICQoc3JjZGlyKS9pbnNlcnQtaGVhZGVyLnNpbiA+IGVuQGJvbGRxdW90Lmluc2VydC1oZWFkZXIKLSsKLSttb3N0bHljbGVhbjogbW9zdGx5Y2xlYW4tcXVvdAotK21vc3RseWNsZWFuLXF1b3Q6Ci0rCXJtIC1mICouaW5zZXJ0LWhlYWRlcgotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9wby9zdGFtcC1jYXQtaWQJMTk5OC0xMi0zMCAwMjo1MDowMS4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL3BvL3N0YW1wLWNhdC1pZAkxOTY5LTEyLTMxIDE5OjAwOjAwLjAwMDAwMDAwMCAtMDUwMAotQEAgLTEgKzAsMCBAQAotLXRpbWVzdGFtcAotLS0tIGxyenN6LTAuMTIuMjAuc2FmZS9zcmMvTWFrZWZpbGUuYW0JMTk5OC0xMi0yOCAwMzozODo0Ny4wMDAwMDAwMDAgLTA1MDAKLSsrKyBscnpzei0wLjEyLjIwL3NyYy9NYWtlZmlsZS5hbQkyMDA0LTA5LTEyIDE0OjQwOjUzLjY2NTgxMjUxMiAtMDQwMAotQEAgLTIsMTIgKzIsMTIgQEAKLSBscnpfU09VUkNFUz1scnouYyB0aW1pbmcuYyB6cGVyci5jIHpyZWFkbGluZS5jIGNyY3RhYi5jIHJic2IuYyB6bS5jIHByb3RuYW1lLmMgdGNwLmMgbHN5c2xvZy5jIGNhbml0LmMKLSBsc3pfU09VUkNFUz1sc3ouYyB0aW1pbmcuYyB6cGVyci5jIHpyZWFkbGluZS5jIGNyY3RhYi5jIHJic2IuYyB6bS5jIHByb3RuYW1lLmMgdGNwLmMgbHN5c2xvZy5jIGNhbml0LmMKLSBub2luc3RfSEVBREVSUyA9IHRpbWluZy5oIHpnbG9iYWwuaCB6bW9kZW0uaAotLWRhdGFkaXIgPSAkKHByZWZpeCkvQERBVEFESVJOQU1FQAotK2RhdGFkaXIgPSAkKHByZWZpeCkvc2hhcmUKLSBsb2NhbGVkaXIgPSAkKGRhdGFkaXIpL2xvY2FsZQotIENGTEFHUz1AQ0ZMQUdTQAotIERJU1RDTEVBTl9GSUxFUz1scnpzemJ1ZwotIAotLUxEQUREID0gLi4vbGliL2xpYnptb2RlbS5hIEBJTlRMTElCU0AKLStMREFERCA9IC4uL2xpYi9saWJ6bW9kZW0uYSBATElCSU5UTEAKLSBBVVRPTUFLRV9PUFRJT05TPWFuc2kya25yCi0gRVhUUkFfRElTVCA9IGFuc2kya25yLjEgYW5zaTJrbnIuYyBscnpzemJ1Zy5pbgotIElOQ0xVREVTID0gLUkuLiAtSSQoc3JjZGlyKSAtSSQodG9wX3NyY2Rpcikvc3JjIC1JLi4vaW50bCAtSSQodG9wX3NyY2RpcikvbGliCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3otMC4xMi4yMC9scnpzel9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvbHJ6c3ovbHJ6c3otMC4xMi4yMC9scnpzel9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4MmYxYzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6LTAuMTIuMjAvbHJ6c3pfZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVRoaXMgcGF0Y2ggZml4ZXMgZm9sbG93aW5nIGlzc3VlIHdpdGggYXV0b21ha2UgMS4xMgotCi18IGNvbmZpZ3VyZS5pbjo5NTogZXJyb3I6IGF1dG9tYXRpYyBkZS1BTlNJLWZpY2F0aW9uIHN1cHBvcnQgaGFzIGJlZW4gcmVtb3ZlZAotLi4uCi18IGxpYi9NYWtlZmlsZS5hbTozOiBlcnJvcjogYXV0b21hdGljIGRlLUFOU0ktZmljYXRpb24gc3VwcG9ydCBoYXMgYmVlbiByZW1vdmVkCi18IGxpYi9NYWtlZmlsZS5hbTogaW5zdGFsbGluZyAnLi9kZXBjb21wJwotfCBzcmMvTWFrZWZpbGUuYW06MTE6IGVycm9yOiBhdXRvbWF0aWMgZGUtQU5TSS1maWNhdGlvbiBzdXBwb3J0IGhhcyBiZWVuIHJlbW92ZWQKLQotCi1TaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotMjAxMi8wNS8wMwotCi1JbmRleDogbHJ6c3otMC4xMi4yMC9jb25maWd1cmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBscnpzei0wLjEyLjIwLm9yaWcvY29uZmlndXJlLmluCi0rKysgbHJ6c3otMC4xMi4yMC9jb25maWd1cmUuaW4KLUBAIC05Miw3ICs5Miw2IEBAIEFDX1BST0dfUkFOTElCCi0gQUNfSVNDX1BPU0lYCi0gQUNfQUlYCi0gQUNfTUlOSVgKLS1BTV9DX1BST1RPVFlQRVMKLSBBQ19DX0NPTlNUCi0gQUNfQ19JTkxJTkUKLSAKLUluZGV4OiBscnpzei0wLjEyLjIwL2xpYi9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxyenN6LTAuMTIuMjAub3JpZy9saWIvTWFrZWZpbGUuYW0KLSsrKyBscnpzei0wLjEyLjIwL2xpYi9NYWtlZmlsZS5hbQotQEAgLTEsNiArMSw1IEBACi0gbm9pbnN0X0xJQlJBUklFUz1saWJ6bW9kZW0uYQotIENGTEFHUz1AQ0ZMQUdTQAotLUFVVE9NQUtFX09QVElPTlM9YW5zaTJrbnIKLSAKLSBFWFRSQV9ESVNUID0gYWxsb2NhLmMgYW5zaTJrbnIuMSBhbnNpMmtuci5jIFwKLSAJZ2V0b3B0LmMgZ2V0b3B0MS5jIG1rZGlyLmMgbWt0aW1lLmMgXAotSW5kZXg6IGxyenN6LTAuMTIuMjAvc3JjL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbHJ6c3otMC4xMi4yMC5vcmlnL3NyYy9NYWtlZmlsZS5hbQotKysrIGxyenN6LTAuMTIuMjAvc3JjL01ha2VmaWxlLmFtCi1AQCAtOCw3ICs4LDYgQEAgQ0ZMQUdTPUBDRkxBR1NACi0gRElTVENMRUFOX0ZJTEVTPWxyenN6YnVnCi0gCi0gTERBREQgPSAuLi9saWIvbGliem1vZGVtLmEgQExJQklOVExACi0tQVVUT01BS0VfT1BUSU9OUz1hbnNpMmtucgotIEVYVFJBX0RJU1QgPSBhbnNpMmtuci4xIGFuc2kya25yLmMgbHJ6c3pidWcuaW4KLSBJTkNMVURFUyA9IC1JLi4gLUkkKHNyY2RpcikgLUkkKHRvcF9zcmNkaXIpL3NyYyAtSS4uL2ludGwgLUkkKHRvcF9zcmNkaXIpL2xpYgotICNERUZTID0gLURMT0NBTEVESVI9XCIkKGxvY2FsZWRpcilcIiAtRE9TPVwiQGhvc3Rfb3NAXCIgLURDUFU9XCJAaG9zdF9jcHVAXCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9scnpzei9scnpzel8wLjEyLjIwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6XzAuMTIuMjAuYmIKaW5kZXggMzQ1NTZiMi4uNDEyOTIzNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6XzAuMTIuMjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL2xyenN6L2xyenN6XzAuMTIuMjAuYmIKQEAgLTEzLDExICsxMyw5IEBACiBQUiA9ICJyNiIKIAogU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm9oc2UuZGUvdXdlL3JlbGVhc2VzL2xyenN6LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9hdXRvdG9vbHMtdXBkYXRlLnBhdGNoIFwKIAkgICBmaWxlOi8vYXV0b3Rvb2xzLnBhdGNoIFwKIAkgICBmaWxlOi8vbWFrZWZpbGUucGF0Y2ggXAotCSAgIGZpbGU6Ly9nZXR0ZXh0LnBhdGNoIFwKLQkgICBmaWxlOi8vYWNkZWZpbmUucGF0Y2ggXAotCSAgIGZpbGU6Ly9scnpzel9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vbHJ6c3otY2hlY2stbG9jYWxlLmgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vY3ZlLTIwMTgtMTAxOTUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS5wYXRjaCBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3Avb3BlbnNiaS9maWxlcy8wMDAxLU1ha2VmaWxlLURvbi10LXNwZWNpZnktbWFiaS1vci1tYXJjaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9vcGVuc2JpL2ZpbGVzLzAwMDEtTWFrZWZpbGUtRG9uLXQtc3BlY2lmeS1tYWJpLW9yLW1hcmNoLnBhdGNoCmluZGV4IDljMmQwZWIuLmQyYTgwNDggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9vcGVuc2JpL2ZpbGVzLzAwMDEtTWFrZWZpbGUtRG9uLXQtc3BlY2lmeS1tYWJpLW9yLW1hcmNoLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9vcGVuc2JpL2ZpbGVzLzAwMDEtTWFrZWZpbGUtRG9uLXQtc3BlY2lmeS1tYWJpLW9yLW1hcmNoLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBmNTg3MWUxZjM2NTBkNmM4YTAzMjkyOGNiNWQ4Y2EwMGMyNzVjMzc3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBmZTk4NjBmZDg1ZTQ5YTc1YmVmNTQ1ZTVkOTkxNDA3MDQ5MWU4MDAyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgogRGF0ZTogRnJpLCAxNSBGZWIgMjAxOSAxNDo1Nzo0MSAtMDgwMAogU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogRG9uJ3Qgc3BlY2lmeSBtYWJpIG9yIG1hcmNoCkBAIC03LDI1ICs3LDI2IEBACiAgICAgY2FuJ3QgbGluayBkb3VibGUtZmxvYXQgbW9kdWxlcyB3aXRoIHNvZnQtZmxvYXQgbW9kdWxlcwogZXJyb3JzIHdoZW4gYnVpbGRpbmcgMzItYml0IG9wZW5TQkkgZG9uJ3Qgc3BlY2lmeSBtYWJpIG9yIG1hcmNoLgogCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW0ZpeGVzIGEgMzItYml0IFlvY3RvIGZsb3cgYnVnXQorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtGaXhlcyBhIDMyLWJpdCBPRSBmbG93IGJ1Z10KIFNpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KKwogLS0tCiAgTWFrZWZpbGUgfCAyIC0tCiAgMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCBhZTY4ZjU1Li4xMDg1MWZjIDEwMDY0NAoraW5kZXggY2NmOGVhMy4uNjllNWIzOCAxMDA2NDQKIC0tLSBhL01ha2VmaWxlCiArKysgYi9NYWtlZmlsZQotQEAgLTE0NSw3ICsxNDUsNiBAQCBHRU5GTEFHUwkrPQkkKGZpcm13YXJlLWdlbmZsYWdzLXkpCi0gQ0ZMQUdTCQk9CS1nIC1XYWxsIC1XZXJyb3IgLW5vc3RkbGliIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1PMgorQEAgLTE2OSw3ICsxNjksNiBAQCBHRU5GTEFHUwkrPQkkKGZpcm13YXJlLWdlbmZsYWdzLXkpCisgQ0ZMQUdTCQk9CS1nIC1XYWxsIC1XZXJyb3IgLWZmcmVlc3RhbmRpbmcgLW5vc3RkbGliIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1PMgogIENGTEFHUwkJKz0JLWZuby1vbWl0LWZyYW1lLXBvaW50ZXIgLWZuby1vcHRpbWl6ZS1zaWJsaW5nLWNhbGxzCiAgQ0ZMQUdTCQkrPQktbW5vLXNhdmUtcmVzdG9yZSAtbXN0cmljdC1hbGlnbgogLUNGTEFHUwkJKz0JLW1hYmk9JChQTEFURk9STV9SSVNDVl9BQkkpIC1tYXJjaD0kKFBMQVRGT1JNX1JJU0NWX0lTQSkKICBDRkxBR1MJCSs9CS1tY21vZGVsPSQoUExBVEZPUk1fUklTQ1ZfQ09ERV9NT0RFTCkKICBDRkxBR1MJCSs9CSQoR0VORkxBR1MpCiAgQ0ZMQUdTCQkrPQkkKHBsYXRmb3JtLWNmbGFncy15KQotQEAgLTE1OCw3ICsxNTcsNiBAQCBDUFBGTEFHUwkrPQkkKGZpcm13YXJlLWNwcGZsYWdzLXkpCitAQCAtMTgzLDcgKzE4Miw2IEBAIENQUEZMQUdTCSs9CSQoZmlybXdhcmUtY3BwZmxhZ3MteSkKICBBU0ZMQUdTCQk9CS1nIC1XYWxsIC1ub3N0ZGxpYiAtRF9fQVNTRU1CTFlfXwogIEFTRkxBR1MJCSs9CS1mbm8tb21pdC1mcmFtZS1wb2ludGVyIC1mbm8tb3B0aW1pemUtc2libGluZy1jYWxscwogIEFTRkxBR1MJCSs9CS1tbm8tc2F2ZS1yZXN0b3JlIC1tc3RyaWN0LWFsaWduCkBAIC0zMyw2ICszNCwzIEBACiAgQVNGTEFHUwkJKz0JLW1jbW9kZWw9JChQTEFURk9STV9SSVNDVl9DT0RFX01PREVMKQogIEFTRkxBR1MJCSs9CSQoR0VORkxBR1MpCiAgQVNGTEFHUwkJKz0JJChwbGF0Zm9ybS1hc2ZsYWdzLXkpCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3Avb3BlbnNiaS9vcGVuc2JpLXBheWxvYWRzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9vcGVuc2JpL29wZW5zYmktcGF5bG9hZHMuaW5jCmluZGV4IGI5NzE0YTcuLjJlMzI5NDMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9vcGVuc2JpL29wZW5zYmktcGF5bG9hZHMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9vcGVuc2JpL29wZW5zYmktcGF5bG9hZHMuaW5jCkBAIC03LDE4ICs3LDggQEAKIAogICAgIHJldHVybiAiRldfUEFZTE9BRF9QQVRIPSIgKyBkZXBsb3lfZGlyICsgIi8iICsgc2JpX3BheWxvYWQKIAotZGVmIHJpc2N2X2dldF9leHRyYV9vZW1ha2VfZmR0KGQpOgotICAgIHNiaV9mZHRfcGF5bG9hZCA9IGQuZ2V0VmFyKCdSSVNDVl9TQklfRkRUJykKLSAgICBkZXBsb3lfZGlyID0gZC5nZXRWYXIoJ0RFUExPWV9ESVJfSU1BR0UnKQotCi0gICAgaWYgc2JpX2ZkdF9wYXlsb2FkIGlzIE5vbmU6Ci0gICAgICAgIHJldHVybiAiIgotCi0gICAgcmV0dXJuICJGV19QQVlMT0FEX0ZEVF9QQVRIPSIgKyBkZXBsb3lfZGlyICsgIi8iICsgc2JpX2ZkdF9wYXlsb2FkCi0KIGRlZiByaXNjdl9nZXRfZG9fY29tcGlsZV9kZXBlbmRzKGQpOgogICAgIHNiaV9wYXlsb2FkID0gZC5nZXRWYXIoJ1JJU0NWX1NCSV9QQVlMT0FEJykKLSAgICBzYmlfZmR0X3BheWxvYWQgPSBkLmdldFZhcignUklTQ1ZfU0JJX0ZEVCcpCiAKICAgICBpZiBzYmlfcGF5bG9hZCBpcyBOb25lOgogICAgICAgICByZXR1cm4gIiIKQEAgLTI2LDE0ICsxNiw2IEBACiAgICAgaWYgJ2xpbnV4JyBpbiBzYmlfcGF5bG9hZCBvciAnSW1hZ2UnIGluIHNiaV9wYXlsb2FkOgogICAgICAgICByZXR1cm4gInZpcnR1YWwva2VybmVsOmRvX2RlcGxveSIKICAgICBpZiAndS1ib290LmJpbicgaW4gc2JpX3BheWxvYWQ6Ci0gICAgICAgICMgSWYgd2Ugd2FudCBVLUJvb3QgYW5kIGEgRkRUIHRoZW4gd2UgbmVlZCB0byBkZXBlbmQgb24gVS1Cb290IGFuZAotICAgICAgICAjIHRoZSBrZXJuZWwKLSAgICAgICAgaWYgc2JpX2ZkdF9wYXlsb2FkIGlzIG5vdCBOb25lOgotICAgICAgICAgICAgcmV0dXJuICJ2aXJ0dWFsL2Jvb3Rsb2FkZXI6ZG9fZGVwbG95IHZpcnR1YWwva2VybmVsOmRvX2RlcGxveSIKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIHJldHVybiAidmlydHVhbC9ib290bG9hZGVyOmRvX2RlcGxveSIKLSAgICAjIElmIHdlIHdhbnQgYSBjdXN0b20gRkRUIHRoZW4gd2UgbmVlZCB0byBkZXBlbmQgb24gdGhlIGtlcm5lbAotICAgIGlmIHNiaV9mZHRfcGF5bG9hZCBpcyBub3QgTm9uZToKLSAgICAgICAgcmV0dXJuICJ2aXJ0dWFsL2tlcm5lbDpkb19kZXBsb3kiCisgICAgICAgIHJldHVybiAidmlydHVhbC9ib290bG9hZGVyOmRvX2RlcGxveSIKIAogICAgIHJldHVybiAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvb3BlbnNiaV8wLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3Avb3BlbnNiaS9vcGVuc2JpXzAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzU5YmJiZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3Avb3BlbnNiaS9vcGVuc2JpXzAuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVNVTU1BUlkgPSAiUklTQy1WIE9wZW4gU291cmNlIFN1cGVydmlzb3IgQmluYXJ5IEludGVyZmFjZSAoT3BlblNCSSkiCi1ERVNDUklQVElPTiA9ICJPcGVuU0JJIGFpbXMgdG8gcHJvdmlkZSBhbiBvcGVuLXNvdXJjZSBhbmQgZXh0ZW5zaWJsZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUklTQy1WIFNCSSBzcGVjaWZpY2F0aW9uIGZvciBhIHBsYXRmb3JtIHNwZWNpZmljIGZpcm13YXJlIChNLW1vZGUpIGFuZCBhIGdlbmVyYWwgcHVycG9zZSBPUywgaHlwZXJ2aXNvciBvciBib290bG9hZGVyIChTLW1vZGUgb3IgSFMtbW9kZSkuIE9wZW5TQkkgaW1wbGVtZW50YXRpb24gY2FuIGJlIGVhc2lseSBleHRlbmRlZCBieSBSSVNDLVYgcGxhdGZvcm0gb3IgU3lzdGVtLW9uLUNoaXAgdmVuZG9ycyB0byBmaXQgYSBwYXJ0aWN1bGFyIGhhZHdhcmUgY29uZmlndXJhdGlvbi4iCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuQlNEO21kNT00MmRkOTU1NWViMTc3ZjM1MTUwY2Y5YWEyNDBiNjFlNSIKLURFUEVORFMgKz0gImR0Yy1uYXRpdmUiCi0KLXJlcXVpcmUgb3BlbnNiaS1wYXlsb2Fkcy5pbmMKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGRlcGxveQotCi1TUkNSRVYgPSAiYmU5MmRhMjgwZDg3YzM4YTJlMGFkYzVkM2Y0M2JhYjdiNTQ2OGYwOSIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9yaXNjdi9vcGVuc2JpLmdpdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLURvbi10LXNwZWNpZnktbWFiaS1vci1tYXJjaC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjIxZjM4ZDgyMDVlZjVmYjE4NWU0MDU1MDI1ZTczZGYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDdmMThiNzNhYmYzYjg1YWFiZTViZWFkMTlhOTIzNzE2YzEwMGQzMGViNTgwMzM0NTlmMzljM2EyMjRiZTMwMCIKLQotRVhUUkFfT0VNQUtFICs9ICJQTEFURk9STT0ke1JJU0NWX1NCSV9QTEFUfSBJPSR7RH0iCi0jIElmIFJJU0NWX1NCSV9QQVlMT0FEIGlzIHNldCB0aGVuIGluY2x1ZGUgaXQgYXMgYSBwYXlsb2FkCi1FWFRSQV9PRU1BS0VfYXBwZW5kID0gIiAke0ByaXNjdl9nZXRfZXh0cmFfb2VtYWtlX2ltYWdlKGQpfSAke0ByaXNjdl9nZXRfZXh0cmFfb2VtYWtlX2ZkdChkKX0iCi0KLSMgUmVxdWlyZWQgaWYgc3BlY2lmeWluZyBhIGN1c3RvbSBwYXlsb2FkCi1kb19jb21waWxlW2RlcGVuZHNdICs9ICIke0ByaXNjdl9nZXRfZG9fY29tcGlsZV9kZXBlbmRzKGQpfSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JIyBJbiB0aGUgZnV0dXJlIHRoZXNlIG1pZ2h0IGJlIHJlcXVpcmVkIGFzIGEgZGVwZW5kZW5jeSBmb3Igb3RoZXIgcGFja2FnZXMuCi0JIyBBdCB0aGUgbW9tZW50IGp1c3QgZGVsZXRlIHRoZW0gdG8gYXZvaWQgd2FybmluZ3MKLQlybSAtciAke0R9L2luY2x1ZGUKLQlybSAtciAke0R9L3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2xpYgotCXJtIC1yICR7RH0vcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vZmlybXdhcmUvcGF5bG9hZHMKLQlybSAtciAke0R9L2xpYgotfQotCi1kb19kZXBsb3kgKCkgewotCWluc3RhbGwgLW0gNzU1ICR7RH0vcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vZmlybXdhcmUvZndfcGF5bG9hZC4qICR7REVQTE9ZRElSfS8KLQlpbnN0YWxsIC1tIDc1NSAke0R9L3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2Zpcm13YXJlL2Z3X2p1bXAuKiAke0RFUExPWURJUn0vCi0JaW5zdGFsbCAtbSA3NTUgJHtEfS9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9md19keW5hbWljLiogJHtERVBMT1lESVJ9LwotfQotCi1hZGR0YXNrIGRlcGxveSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9faW5zdGFsbAotCi1GSUxFU18ke1BOfSArPSAiL3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2Zpcm13YXJlL2Z3X2p1bXAuKiIKLUZJTEVTXyR7UE59ICs9ICIvcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vZmlybXdhcmUvZndfcGF5bG9hZC4qIgotRklMRVNfJHtQTn0gKz0gIi9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9md19keW5hbWljLioiCi0KLQotQ09NUEFUSUJMRV9IT1NUID0gIihyaXNjdjY0fHJpc2N2MzIpLioiCi1JTkhJQklUX1BBQ0tBR0VfU1RSSVAgPSAiMSIKLQotU0VDVVJJVFlfQ0ZMQUdTID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9vcGVuc2JpL29wZW5zYmlfMC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL29wZW5zYmkvb3BlbnNiaV8wLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTZmMmQ0YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9vcGVuc2JpL29wZW5zYmlfMC42LmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiUklTQy1WIE9wZW4gU291cmNlIFN1cGVydmlzb3IgQmluYXJ5IEludGVyZmFjZSAoT3BlblNCSSkiCitERVNDUklQVElPTiA9ICJPcGVuU0JJIGFpbXMgdG8gcHJvdmlkZSBhbiBvcGVuLXNvdXJjZSBhbmQgZXh0ZW5zaWJsZSBpbXBsZW1lbnRhdGlvbiBvZiB0aGUgUklTQy1WIFNCSSBzcGVjaWZpY2F0aW9uIGZvciBhIHBsYXRmb3JtIHNwZWNpZmljIGZpcm13YXJlIChNLW1vZGUpIGFuZCBhIGdlbmVyYWwgcHVycG9zZSBPUywgaHlwZXJ2aXNvciBvciBib290bG9hZGVyIChTLW1vZGUgb3IgSFMtbW9kZSkuIE9wZW5TQkkgaW1wbGVtZW50YXRpb24gY2FuIGJlIGVhc2lseSBleHRlbmRlZCBieSBSSVNDLVYgcGxhdGZvcm0gb3IgU3lzdGVtLW9uLUNoaXAgdmVuZG9ycyB0byBmaXQgYSBwYXJ0aWN1bGFyIGhhZHdhcmUgY29uZmlndXJhdGlvbi4iCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuQlNEO21kNT00MmRkOTU1NWViMTc3ZjM1MTUwY2Y5YWEyNDBiNjFlNSIKKworcmVxdWlyZSBvcGVuc2JpLXBheWxvYWRzLmluYworCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZGVwbG95CisKK1NSQ1JFViA9ICJhYzVlODIxZDUwYmU2MzFmMjYyNzQ3NjVhNTliYzFiNDQ0ZmZkODYyIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3Jpc2N2L29wZW5zYmkuZ2l0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUtRG9uLXQtc3BlY2lmeS1tYWJpLW9yLW1hcmNoLnBhdGNoIFwKKyAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0VYVFJBX09FTUFLRSArPSAiUExBVEZPUk09JHtSSVNDVl9TQklfUExBVH0gST0ke0R9IgorIyBJZiBSSVNDVl9TQklfUEFZTE9BRCBpcyBzZXQgdGhlbiBpbmNsdWRlIGl0IGFzIGEgcGF5bG9hZAorRVhUUkFfT0VNQUtFX2FwcGVuZCA9ICIgJHtAcmlzY3ZfZ2V0X2V4dHJhX29lbWFrZV9pbWFnZShkKX0iCisKKyMgUmVxdWlyZWQgaWYgc3BlY2lmeWluZyBhIGN1c3RvbSBwYXlsb2FkCitkb19jb21waWxlW2RlcGVuZHNdICs9ICIke0ByaXNjdl9nZXRfZG9fY29tcGlsZV9kZXBlbmRzKGQpfSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBJbiB0aGUgZnV0dXJlIHRoZXNlIG1pZ2h0IGJlIHJlcXVpcmVkIGFzIGEgZGVwZW5kZW5jeSBmb3Igb3RoZXIgcGFja2FnZXMuCisJIyBBdCB0aGUgbW9tZW50IGp1c3QgZGVsZXRlIHRoZW0gdG8gYXZvaWQgd2FybmluZ3MKKwlybSAtciAke0R9L2luY2x1ZGUKKwlybSAtciAke0R9L3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2xpYgorCXJtIC1yICR7RH0vcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vZmlybXdhcmUvcGF5bG9hZHMKKwlybSAtciAke0R9L2xpYgorfQorCitkb19kZXBsb3kgKCkgeworCWluc3RhbGwgLW0gNzU1ICR7RH0vcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vZmlybXdhcmUvZndfcGF5bG9hZC4qICR7REVQTE9ZRElSfS8KKwlpbnN0YWxsIC1tIDc1NSAke0R9L3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2Zpcm13YXJlL2Z3X2p1bXAuKiAke0RFUExPWURJUn0vCisJaW5zdGFsbCAtbSA3NTUgJHtEfS9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9md19keW5hbWljLiogJHtERVBMT1lESVJ9LworfQorCithZGR0YXNrIGRlcGxveSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9faW5zdGFsbAorCitGSUxFU18ke1BOfSArPSAiL3BsYXRmb3JtLyR7UklTQ1ZfU0JJX1BMQVR9L2Zpcm13YXJlL2Z3X2p1bXAuKiIKK0ZJTEVTXyR7UE59ICs9ICIvcGxhdGZvcm0vJHtSSVNDVl9TQklfUExBVH0vZmlybXdhcmUvZndfcGF5bG9hZC4qIgorRklMRVNfJHtQTn0gKz0gIi9wbGF0Zm9ybS8ke1JJU0NWX1NCSV9QTEFUfS9maXJtd2FyZS9md19keW5hbWljLioiCisKK0NPTVBBVElCTEVfSE9TVCA9ICIocmlzY3Y2NHxyaXNjdjMyKS4qIgorSU5ISUJJVF9QQUNLQUdFX1NUUklQID0gIjEiCisKK1NFQ1VSSVRZX0NGTEFHUyA9ICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvY29uZmlndXJlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzL2NvbmZpZ3VyZS5wYXRjaAppbmRleCBhN2U0NDU3Li5lNDQ0YzEzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHMvY29uZmlndXJlLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlscy9jb25maWd1cmUucGF0Y2gKQEAgLTI0LDcgKzI0LDcgQEAKIC0JJChDQykgJChMREZMQUdTKSAkKFRBUkdFVF9BUkNIKSAkXiAkKExETElCUykgLW8gJEAKICsJJChDQykgJChMREZMQUdTKSAkKFRBUkdFVF9BUkNIKSAkXiAkKExJQl9MRExJQlMpICQoTERMSUJTKSAtbyAkQAogIAotICUuOCAlLjc6ICUubWFuCisgJS44ICUuNyAlLjU6ICUubWFuCiAgCU09YGVjaG8gJChEQVRFKSB8IHNlZCAncy8tMDEtLy1KYW51YXJ5LS87cy8tMDItLy1GZWJydWFyeS0vO3MvLTAzLS8tTWFyY2gtLztzLy0wNC0vLUFwcmlsLS87cy8tMDUtLy1NYXktLztzLy0wNi0vLUp1bmUtLztzLy0wNy0vLUp1bHktLztzLy0wOC0vLUF1Z3VzdC0vO3MvLTA5LS8tU2VwdGVtYmVyLS87cy8tMTAtLy1PY3RvYmVyLS87cy8tMTEtLy1Ob3ZlbWJlci0vO3MvLTEyLS8tRGVjZW1iZXItLztzL1woLipcKS1cKC4qXCktXCguKlwpL1wzIFwyIFwxLydgIDsgc2VkIDwkPCA+JEAgInMvQFRPREFZQC8kJE0vO3MvQFZFUlNJT05AL3BjaXV0aWxzLSQoVkVSU0lPTikvO3MjQElEU0RJUkAjJChJRFNESVIpIyIKIEluZGV4OiBwY2l1dGlscy0zLjUuNi9saWIvY29uZmlndXJlCiA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CkBAIC03MCw3ICs3MCw3IEBACiAgZmkKICBbIC1uICIkUkVMRUFTRSIgXSAmJiByZWw9IiR7UkVMRUFTRX0iCiAgIyBDQVZFQVQ6IHRyIG9uIFNvbGFyaXMgaXMgYSBiaXQgd2VpcmQgYW5kIHRoZSBleHRyYSBbXSBpcyBvdGhlcndpc2UgaGFybWxlc3MuCi1AQCAtNDQsNiArNDgsOCBAQCBjcHU9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteCitAQCAtNDQsNiArNDgsOCBAQCBjcHU9YGVjaG8gJGhvc3QgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAogIHN5cz1gZWNobyAkaG9zdCB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wzLydgCiAgZWNobyAiICRob3N0ICRyZWwgJGNwdSAkc3lzIgogIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MTM0MjFjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC9wY2l1dGlscy9wY2l1dGlsc18zLjYuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLVNVTU1BUlkgPSAiUENJIHV0aWxpdGllcyIKLURFU0NSSVBUSU9OID0gJ1RoZSBQQ0kgVXRpbGl0aWVzIHBhY2thZ2UgY29udGFpbnMgYSBsaWJyYXJ5IGZvciBwb3J0YWJsZSBhY2Nlc3MgXAotdG8gUENJIGJ1cyBjb25maWd1cmF0aW9uIHNwYWNlIGFuZCBzZXZlcmFsIHV0aWxpdGllcyBiYXNlZCBvbiB0aGlzIGxpYnJhcnkuJwotSE9NRVBBR0UgPSAiaHR0cDovL2F0cmV5Lmthcmxpbi5tZmYuY3VuaS5jei9+bWovcGNpdXRpbHMuc2h0bWwiCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi1ERVBFTkRTID0gInpsaWIga21vZCIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L3NvZnR3YXJlL3V0aWxzL3BjaXV0aWxzL3BjaXV0aWxzLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI3Nzk2Mzc5NmQxYmU0ZjQ1MWI4M2U2ZGEyOGJhNGY4MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYjQ1MmVjOTg2ZWRlZmQ4OGFmMGQyMjJkMjJmNjEwMmY4MDMwYTg2MzNmZGZlODQ2YzNhZTRiZGU5YmI5M2YzIgotCi1pbmhlcml0IG11bHRpbGliX2hlYWRlciBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICdod2RiJywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdbaHdkYl0gPSAiSFdEQj15ZXMsSFdEQj1ubyx1ZGV2IgotCi1QQ0lfQ09ORl9GTEFHID0gIlpMSUI9eWVzIEROUz15ZXMgU0hBUkVEPXllcyBTVFJJUD0gTElCRElSPSR7bGliZGlyfSIKLQotIyBzZWUgY29uZmlndXJlLnBhdGNoCi1kb19jb25maWd1cmUgKCkgewotCSgKLQkgIGNkIGxpYiAmJiBcCi0JICAjIFBBQ0tBR0VDT05GSUdfQ09ORkFSR1MgZm9yIHRoaXMgcmVjaXBlIGNvdWxkIG9ubHkgcG9zc2libHkgY29udGFpbiAnSFdEQj15ZXMvbm8nLAotCSAgIyBzbyB3ZSBwdXQgaXQgYmVmb3JlIC4vY29uZmlndXJlCi0JICAke1BDSV9DT05GX0ZMQUd9ICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gLi9jb25maWd1cmUgJHtQVn0gJHtkYXRhZGlyfSAke1RBUkdFVF9PU30gJHtUQVJHRVRfQVJDSH0KLQkpCi19Ci0KLWV4cG9ydCBQUkVGSVggPSAiJHtwcmVmaXh9IgotZXhwb3J0IFNCSU5ESVIgPSAiJHtzYmluZGlyfSIKLWV4cG9ydCBTSEFSRURJUiA9ICIke2RhdGFkaXJ9IgotZXhwb3J0IE1BTkRJUiA9ICIke21hbmRpcn0iCi0KLUVYVFJBX09FTUFLRSA9ICItZSBNQUtFRkxBR1M9ICR7UENJX0NPTkZfRkxBR30iCi0KLUFTTkVFREVEID0gIiIKLQotIyBUaGUgY29uZmlndXJlIHNjcmlwdCBicmVha3MgaWYgdGhlIEhPU1QgdmFyaWFibGUgaXMgc2V0Ci1IT1NUW3VuZXhwb3J0XSA9ICIxIgotCi1kb19pbnN0YWxsICgpIHsKLQlvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsIGluc3RhbGwtbGliCi0KLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLQlsbiAtcyAuLi9zYmluL2xzcGNpICR7RH0ke2JpbmRpcn0vbHNwY2kKLQotCW9lX211bHRpbGliX2hlYWRlciBwY2kvY29uZmlnLmgKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LWlkcyBsaWJwY2kiCi1GSUxFU18ke1BOfS1pZHMgPSAiJHtkYXRhZGlyfS9wY2kuaWRzKiIKLUZJTEVTX2xpYnBjaSA9ICIke2xpYmRpcn0vbGlicGNpLnNvLioiCi1TVU1NQVJZXyR7UE59LWlkcyA9ICJQQ0kgdXRpbGl0aWVzIC0gZGV2aWNlIElEIGRhdGFiYXNlIgotREVTQ1JJUFRJT05fJHtQTn0taWRzID0gIlBhY2thZ2UgcHJvdmlkaW5nIHRoZSBQQ0kgZGV2aWNlIElEIGRhdGFiYXNlIGZvciBwY2l1dGlscy4iCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0taWRzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNi40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3BjaXV0aWxzL3BjaXV0aWxzXzMuNi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzNGJiNjMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvcGNpdXRpbHMvcGNpdXRpbHNfMy42LjQuYmIKQEAgLTAsMCArMSw2MCBAQAorU1VNTUFSWSA9ICJQQ0kgdXRpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAnVGhlIFBDSSBVdGlsaXRpZXMgcGFja2FnZSBjb250YWlucyBhIGxpYnJhcnkgZm9yIHBvcnRhYmxlIGFjY2VzcyBcCit0byBQQ0kgYnVzIGNvbmZpZ3VyYXRpb24gc3BhY2UgYW5kIHNldmVyYWwgdXRpbGl0aWVzIGJhc2VkIG9uIHRoaXMgbGlicmFyeS4nCitIT01FUEFHRSA9ICJodHRwOi8vYXRyZXkua2FybGluLm1mZi5jdW5pLmN6L35tai9wY2l1dGlscy5zaHRtbCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKK0RFUEVORFMgPSAiemxpYiBrbW9kIgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vc29mdHdhcmUvdXRpbHMvcGNpdXRpbHMvcGNpdXRpbHMtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2NvbmZpZ3VyZS5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjQzNDNiMzdlMTlmMzE5Y2U4ZjNkNTljMzAwMzE3OTBlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY2N2ZmNzMyOTc2ZTJkYjJhNWNjZGYzOTYwMDIwNzk2NTI2YmE2YjA1ZjZiMWNkZDI0YjdiMjA2YWY3MDYwNTUiCisKK2luaGVyaXQgbXVsdGlsaWJfaGVhZGVyIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ2h3ZGInLCAnJywgZCl9IgorUEFDS0FHRUNPTkZJR1tod2RiXSA9ICJIV0RCPXllcyxIV0RCPW5vLHVkZXYiCisKK1BDSV9DT05GX0ZMQUcgPSAiWkxJQj15ZXMgRE5TPXllcyBTSEFSRUQ9eWVzIFNUUklQPSBMSUJESVI9JHtsaWJkaXJ9IgorCisjIHNlZSBjb25maWd1cmUucGF0Y2gKK2RvX2NvbmZpZ3VyZSAoKSB7CisJKAorCSAgY2QgbGliICYmIFwKKwkgICMgUEFDS0FHRUNPTkZJR19DT05GQVJHUyBmb3IgdGhpcyByZWNpcGUgY291bGQgb25seSBwb3NzaWJseSBjb250YWluICdIV0RCPXllcy9ubycsCisJICAjIHNvIHdlIHB1dCBpdCBiZWZvcmUgLi9jb25maWd1cmUKKwkgICR7UENJX0NPTkZfRkxBR30gJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSAuL2NvbmZpZ3VyZSAke1BWfSAke2RhdGFkaXJ9ICR7VEFSR0VUX09TfSAke1RBUkdFVF9BUkNIfQorCSkKK30KKworZXhwb3J0IFBSRUZJWCA9ICIke3ByZWZpeH0iCitleHBvcnQgU0JJTkRJUiA9ICIke3NiaW5kaXJ9IgorZXhwb3J0IFNIQVJFRElSID0gIiR7ZGF0YWRpcn0iCitleHBvcnQgTUFORElSID0gIiR7bWFuZGlyfSIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0gJHtQQ0lfQ09ORl9GTEFHfSIKKworQVNORUVERUQgPSAiIgorCisjIFRoZSBjb25maWd1cmUgc2NyaXB0IGJyZWFrcyBpZiB0aGUgSE9TVCB2YXJpYWJsZSBpcyBzZXQKK0hPU1RbdW5leHBvcnRdID0gIjEiCisKK2RvX2luc3RhbGwgKCkgeworCW9lX3J1bm1ha2UgREVTVERJUj0ke0R9IGluc3RhbGwgaW5zdGFsbC1saWIKKworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWxuIC1zIC4uL3NiaW4vbHNwY2kgJHtEfSR7YmluZGlyfS9sc3BjaQorCisJb2VfbXVsdGlsaWJfaGVhZGVyIHBjaS9jb25maWcuaAorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0taWRzIGxpYnBjaSIKK0ZJTEVTXyR7UE59LWlkcyA9ICIke2RhdGFkaXJ9L3BjaS5pZHMqIgorRklMRVNfbGlicGNpID0gIiR7bGliZGlyfS9saWJwY2kuc28uKiIKK1NVTU1BUllfJHtQTn0taWRzID0gIlBDSSB1dGlsaXRpZXMgLSBkZXZpY2UgSUQgZGF0YWJhc2UiCitERVNDUklQVElPTl8ke1BOfS1pZHMgPSAiUGFja2FnZSBwcm92aWRpbmcgdGhlIFBDSSBkZXZpY2UgSUQgZGF0YWJhc2UgZm9yIHBjaXV0aWxzLiIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1pZHMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2ZpbGVzLzAwMDEtaW5jbHVkZS1lbnYuaC1FbnN1cmUtdWxvbmctaXMtZGVmaW5lZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvMDAwMS1pbmNsdWRlLWVudi5oLUVuc3VyZS11bG9uZy1pcy1kZWZpbmVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTExODE2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvZmlsZXMvMDAwMS1pbmNsdWRlLWVudi5oLUVuc3VyZS11bG9uZy1pcy1kZWZpbmVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAwNTY1YTA4MGQxNTNkNWJhYWFhY2ZlYjUwNDVhODMyZTEyNmY0ZjllIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgotRGF0ZTogTW9uLCAxNCBPY3QgMjAxOSAxNzozNzozMCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBpbmNsdWRlL2Vudi5oOiBFbnN1cmUgdWxvbmcgaXMgZGVmaW5lZAotCi1UbyBmaXggdGhlc2UgZmFpbHVyZXMgd2hlbiBidWlsZGluZyB3aXRoIG11c2w6Ci0gICBpbmNsdWRlL2Vudi5oOjE2NjoxOiBlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ3Vsb25nJzsgZGlkIHlvdSBtZWFuICdsb25nJz8KLWVuc3VyZSB0aGF0IHVsb25nIGlzIGRlZmluZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgotLS0tCi0gaW5jbHVkZS9lbnYuaCB8IDIgKysKLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL2Vudi5oIGIvaW5jbHVkZS9lbnYuaAotaW5kZXggYjcyMjM5ZjZhNS4uNWNhNDlhMzQ1NiAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvZW52LmgKLSsrKyBiL2luY2x1ZGUvZW52LmgKLUBAIC0xMyw2ICsxMyw4IEBACi0gI2luY2x1ZGUgPHN0ZGJvb2wuaD4KLSAjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KLSAKLSt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgICAgICAgICAgIHVsb25nOwotKwotIHN0cnVjdCBlbnZpcm9ubWVudF9zOwotIAotIC8qIFZhbHVlIGZvciBlbnZpcm9ubWVudCB2YWxpZGl0eSAqLwotLS0gCi0yLjIzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9saWJ1Ym9vdGVudl8wLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L2xpYnVib290ZW52XzAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMjUxZDBmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC9saWJ1Ym9vdGVudl8wLjIuYmIKQEAgLTAsMCArMSwyNyBAQAorU1VNTUFSWSA9ICJVLUJvb3QgbGlicmFyaWVzIGFuZCB0b29scyB0byBhY2Nlc3MgZW52aXJvbm1lbnQiCitERVBFTkRTICs9ICJtdGQtdXRpbHMiCisKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBjb250YWlucyB0b29scyBhbmQgbGlicmFyaWVzIHRvIHJlYWQgXAorYW5kIG1vZGlmeSBVLUJvb3QgZW52aXJvbm1lbnQuIFwKK0l0IHByb3ZpZGVzIGEgaGFyZHdhcmUtaW5kZXBlbmRlbnQgcmVwbGFjZW1lbnQgZm9yIGZ3X3ByaW50ZW52L3NldGVudiB1dGlsaXRpZXMgXAorcHJvdmlkZWQgYnkgVS1Cb290IgorCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2JhYmljL2xpYnVib290ZW52IgorTElDRU5TRSA9ICJMR1BMLTIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xpY2Vuc2VzL2xncGwtMi4xLnR4dDttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCitTRUNUSU9OID0gImxpYnMiCisKK1BWID0gIjAuMitnaXQke1NSQ1BWfSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zYmFiaWMvbGlidWJvb3RlbnY7cHJvdG9jb2w9aHR0cHMiCitTUkNSRVYgPSAiZjRiOWNkZTM4MTVhYmU4NGE5ODA3OWNlZGQ1MTUyODNlYTA4YzE2YiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZSBsaWJfcGFja2FnZQorCitFWFRSQV9PRUNNQUtFID0gIi1EQ01BS0VfQlVJTERfVFlQRT1SZWxlYXNlIgorCitQUk9WSURFUyArPSAidS1ib290LWZ3LXV0aWxzIgorUlBST1ZJREVTXyR7UE59LWJpbiArPSAidS1ib290LWZ3LXV0aWxzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC1jb21tb24uaW5jCmluZGV4IGMzZTQ1OGUuLmY0NzkwNTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWNvbW1vbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtY29tbW9uLmluYwpAQCAtMTIsOSArMTIsMTEgQEAKIAogIyBXZSB1c2UgdGhlIHJldmlzaW9uIGluIG9yZGVyIHRvIGF2b2lkIGhhdmluZyB0byBmZXRjaCBpdCBmcm9tIHRoZQogIyByZXBvIGR1cmluZyBwYXJzZQotU1JDUkVWID0gIjYxYmExMjQ0YjU0ODQ2M2RiZmIzYzUyODViNmIyMmU3Yzc3MmM1YmQiCitTUkNSRVYgPSAiMTA3OWVjMGE3N2MzZmRhNTEwZjA3ODYwYjI1NDljNDdmM2E0NmMyMSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQuZGVueC5kZS91LWJvb3QuZ2l0IFwKICAgICAgICAgICAiCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCitCID0gIiR7V09SS0RJUn0vYnVpbGQiCitkb19jb25maWd1cmVbY2xlYW5kaXJzXSA9ICIke0J9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxOS4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LWZ3LXV0aWxzXzIwMTkuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0MzIxYjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtZnctdXRpbHNfMjAxOS4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLXJlcXVpcmUgdS1ib290LWNvbW1vbi5pbmMKLQotU1VNTUFSWSA9ICJVLUJvb3QgYm9vdGxvYWRlciBmd19wcmludGVudi9zZXRlbnYgdXRpbGl0aWVzIgotREVQRU5EUyArPSAibXRkLXV0aWxzIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1pbmNsdWRlLWVudi5oLUVuc3VyZS11bG9uZy1pcy1kZWZpbmVkLnBhdGNoIgotCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJhbHJlYWR5LXN0cmlwcGVkIgotRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICdDUk9TU19DT01QSUxFPSR7VEFSR0VUX1BSRUZJWH0gQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBWPTEnCi1FWFRSQV9PRU1BS0VfY2xhc3MtY3Jvc3MgPSAnSE9TVENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgVj0xJwotCi1pbmhlcml0IHVib290LWNvbmZpZwotCi1kb19jb21waWxlICgpIHsKLQlvZV9ydW5tYWtlICR7VUJPT1RfTUFDSElORX0KLQlvZV9ydW5tYWtlIGVudnRvb2xzCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9zYmluZGlyfQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLQlpbnN0YWxsIC1tIDc1NSAke1N9L3Rvb2xzL2Vudi9md19wcmludGVudiAke0R9JHtiYXNlX3NiaW5kaXJ9L2Z3X3ByaW50ZW52Ci0JaW5zdGFsbCAtbSA3NTUgJHtTfS90b29scy9lbnYvZndfcHJpbnRlbnYgJHtEfSR7YmFzZV9zYmluZGlyfS9md19zZXRlbnYKLQlpbnN0YWxsIC1tIDA2NDQgJHtTfS90b29scy9lbnYvZndfZW52LmNvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9md19lbnYuY29uZmlnCi19Ci0KLWRvX2luc3RhbGxfY2xhc3MtY3Jvc3MgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyX2Nyb3NzfQotCWluc3RhbGwgLW0gNzU1ICR7U30vdG9vbHMvZW52L2Z3X3ByaW50ZW52ICR7RH0ke2JpbmRpcl9jcm9zc30vZndfcHJpbnRlbnYKLQlpbnN0YWxsIC1tIDc1NSAke1N9L3Rvb2xzL2Vudi9md19wcmludGVudiAke0R9JHtiaW5kaXJfY3Jvc3N9L2Z3X3NldGVudgotfQotCi1TWVNST09UX0RJUlNfYXBwZW5kX2NsYXNzLWNyb3NzID0gIiAke2JpbmRpcl9jcm9zc30iCi0KLVBBQ0tBR0VfQVJDSCA9ICIke01BQ0hJTkVfQVJDSH0iCi1CQkNMQVNTRVhURU5EID0gImNyb3NzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtdG9vbHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtdG9vbHMuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhZTI5MGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC10b29scy5pbmMKQEAgLTAsMCArMSw2NiBAQAorU1VNTUFSWSA9ICJVLUJvb3QgYm9vdGxvYWRlciB0b29scyIKK0RFUEVORFMgKz0gIm9wZW5zc2wiCisKK1BST1ZJREVTID0gIiR7TUxQUkVGSVh9dS1ib290LW1raW1hZ2UgJHtNTFBSRUZJWH11LWJvb3QtbWtlbnZpbWFnZSIKK1BST1ZJREVTX2NsYXNzLW5hdGl2ZSA9ICJ1LWJvb3QtbWtpbWFnZS1uYXRpdmUgdS1ib290LW1rZW52aW1hZ2UtbmF0aXZlIgorCitQQUNLQUdFUyArPSAiJHtQTn0tbWtpbWFnZSAke1BOfS1ta2VudmltYWdlIgorCisjIFJlcXVpcmVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHdpdGggInUtYm9vdC1ta2ltYWdlLXh4eC5iYiIKK1JQUk9WSURFU18ke1BOfS1ta2ltYWdlID0gInUtYm9vdC1ta2ltYWdlIgorUlJFUExBQ0VTXyR7UE59LW1raW1hZ2UgPSAidS1ib290LW1raW1hZ2UiCitSQ09ORkxJQ1RTXyR7UE59LW1raW1hZ2UgPSAidS1ib290LW1raW1hZ2UiCisKK0VYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAnQ1JPU1NfQ09NUElMRT0iJHtUQVJHRVRfUFJFRklYfSIgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKK0VYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAnQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKK0VYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmVzZGsgPSAnQ1JPU1NfQ09NUElMRT0iJHtIT1NUX1BSRUZJWH0iIENDPSIke0NDfSAke0NGTEFHU30gJHtMREZMQUdTfSIgSE9TVENDPSIke0JVSUxEX0NDfSAke0JVSUxEX0NGTEFHU30gJHtCVUlMRF9MREZMQUdTfSIgU1RSSVA9dHJ1ZSBWPTEnCisKK1NFRF9DT05GSUdfRUZJID0gJy1lICJzL0NPTkZJR19FRklfTE9BREVSPS4qLyMgQ09ORklHX0VGSV9MT0FERVIgaXMgbm90IHNldC8iJworU0VEX0NPTkZJR19FRklfeDg2ID0gJycKK1NFRF9DT05GSUdfRUZJX3g4Ni02NCA9ICcnCitTRURfQ09ORklHX0VGSV9hcm0gPSAnJworU0VEX0NPTkZJR19FRklfYXJtZWIgPSAnJworU0VEX0NPTkZJR19FRklfYWFyY2g2NCA9ICcnCisKK2RvX2NvbXBpbGUgKCkgeworCW9lX3J1bm1ha2UgLUMgJHtTfSBzYW5kYm94X2RlZmNvbmZpZyBPPSR7Qn0KKworCSMgRGlzYWJsZSBDT05GSUdfQ01EX0xJQ0VOU0UsIGxpY2Vuc2UuaCBpcyBub3QgdXNlZCBieSB0b29scyBhbmQKKwkjIGdlbmVyYXRpbmcgaXQgcmVxdWlyZXMgYmluMmhlYWRlciB0b29sLCB3aGljaCBmb3IgdGFyZ2V0IGJ1aWxkCisJIyBpcyBidWlsdCB3aXRoIHRhcmdldCB0b29scyBhbmQgdGh1cyBjYW5ub3QgYmUgZXhlY3V0ZWQgb24gaG9zdC4KKwlzZWQgLWkgLWUgInMvQ09ORklHX0NNRF9MSUNFTlNFPS4qLyMgQ09ORklHX0NNRF9MSUNFTlNFIGlzIG5vdCBzZXQvIiAke1NFRF9DT05GSUdfRUZJfSAke0J9Ly5jb25maWcKKworCW9lX3J1bm1ha2UgLUMgJHtTfSBjcm9zc190b29scyBOT19TREw9MSBPPSR7Qn0KK30KKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CisKKwkjIG1raW1hZ2UKKwlpbnN0YWxsIC1tIDA3NTUgdG9vbHMvbWtpbWFnZSAke0R9JHtiaW5kaXJ9L3Vib290LW1raW1hZ2UKKwlsbiAtc2YgdWJvb3QtbWtpbWFnZSAke0R9JHtiaW5kaXJ9L21raW1hZ2UKKworCSMgbWtlbnZpbWFnZQorCWluc3RhbGwgLW0gMDc1NSB0b29scy9ta2VudmltYWdlICR7RH0ke2JpbmRpcn0vdWJvb3QtbWtlbnZpbWFnZQorCWxuIC1zZiB1Ym9vdC1ta2VudmltYWdlICR7RH0ke2JpbmRpcn0vbWtlbnZpbWFnZQorCisJIyBkdW1waW1hZ2UKKwlpbnN0YWxsIC1tIDA3NTUgdG9vbHMvZHVtcGltYWdlICR7RH0ke2JpbmRpcn0vdWJvb3QtZHVtcGltYWdlCisJbG4gLXNmIHVib290LWR1bXBpbWFnZSAke0R9JHtiaW5kaXJ9L2R1bXBpbWFnZQorCisJIyBmaXRfY2hlY2tfc2lnbgorCWluc3RhbGwgLW0gMDc1NSB0b29scy9maXRfY2hlY2tfc2lnbiAke0R9JHtiaW5kaXJ9L3Vib290LWZpdF9jaGVja19zaWduCisJbG4gLXNmIHVib290LWZpdF9jaGVja19zaWduICR7RH0ke2JpbmRpcn0vZml0X2NoZWNrX3NpZ24KK30KKworQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKK0ZJTEVTXyR7UE59ID0gIiIKK0ZJTEVTXyR7UE59LW1raW1hZ2UgPSAiJHtiaW5kaXJ9L3Vib290LW1raW1hZ2UgJHtiaW5kaXJ9L21raW1hZ2UgJHtiaW5kaXJ9L3Vib290LWR1bXBpbWFnZSAke2JpbmRpcn0vZHVtcGltYWdlICR7YmluZGlyfS91Ym9vdC1maXRfY2hlY2tfc2lnbiAke2JpbmRpcn0vZml0X2NoZWNrX3NpZ24iCitGSUxFU18ke1BOfS1ta2VudmltYWdlID0gIiR7YmluZGlyfS91Ym9vdC1ta2VudmltYWdlICR7YmluZGlyfS9ta2VudmltYWdlIgorCitSREVQRU5EU18ke1BOfS1ta2ltYWdlICs9ICJkdGMiCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0tbWtpbWFnZSAke1BOfS1ta2VudmltYWdlIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC10b29sc18yMDE5LjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtdG9vbHNfMjAxOS4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVkZTk4NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC10b29sc18yMDE5LjEwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotcmVxdWlyZSB1LWJvb3QtY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlUtQm9vdCBib290bG9hZGVyIHRvb2xzIgotREVQRU5EUyArPSAib3BlbnNzbCIKLQotUFJPVklERVMgPSAiJHtNTFBSRUZJWH11LWJvb3QtbWtpbWFnZSAke01MUFJFRklYfXUtYm9vdC1ta2VudmltYWdlIgotUFJPVklERVNfY2xhc3MtbmF0aXZlID0gInUtYm9vdC1ta2ltYWdlLW5hdGl2ZSB1LWJvb3QtbWtlbnZpbWFnZS1uYXRpdmUiCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1ta2ltYWdlICR7UE59LW1rZW52aW1hZ2UiCi0KLSMgUmVxdWlyZWQgZm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCAidS1ib290LW1raW1hZ2UteHh4LmJiIgotUlBST1ZJREVTXyR7UE59LW1raW1hZ2UgPSAidS1ib290LW1raW1hZ2UiCi1SUkVQTEFDRVNfJHtQTn0tbWtpbWFnZSA9ICJ1LWJvb3QtbWtpbWFnZSIKLVJDT05GTElDVFNfJHtQTn0tbWtpbWFnZSA9ICJ1LWJvb3QtbWtpbWFnZSIKLQotRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICdDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IiBDQz0iJHtDQ30gJHtDRkxBR1N9ICR7TERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJwotRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICdDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIEhPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iIFNUUklQPXRydWUgVj0xJwotRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZXNkayA9ICdDUk9TU19DT01QSUxFPSIke0hPU1RfUFJFRklYfSIgQ0M9IiR7Q0N9ICR7Q0ZMQUdTfSAke0xERkxBR1N9IiBIT1NUQ0M9IiR7QlVJTERfQ0N9ICR7QlVJTERfQ0ZMQUdTfSAke0JVSUxEX0xERkxBR1N9IiBTVFJJUD10cnVlIFY9MScKLQotU0VEX0NPTkZJR19FRkkgPSAnLWUgInMvQ09ORklHX0VGSV9MT0FERVI9LiovIyBDT05GSUdfRUZJX0xPQURFUiBpcyBub3Qgc2V0LyInCi1TRURfQ09ORklHX0VGSV94ODYgPSAnJwotU0VEX0NPTkZJR19FRklfeDg2LTY0ID0gJycKLVNFRF9DT05GSUdfRUZJX2FybSA9ICcnCi1TRURfQ09ORklHX0VGSV9hcm1lYiA9ICcnCi1TRURfQ09ORklHX0VGSV9hYXJjaDY0ID0gJycKLQotZG9fY29tcGlsZSAoKSB7Ci0Jb2VfcnVubWFrZSBzYW5kYm94X2RlZmNvbmZpZwotCi0JIyBEaXNhYmxlIENPTkZJR19DTURfTElDRU5TRSwgbGljZW5zZS5oIGlzIG5vdCB1c2VkIGJ5IHRvb2xzIGFuZAotCSMgZ2VuZXJhdGluZyBpdCByZXF1aXJlcyBiaW4yaGVhZGVyIHRvb2wsIHdoaWNoIGZvciB0YXJnZXQgYnVpbGQKLQkjIGlzIGJ1aWx0IHdpdGggdGFyZ2V0IHRvb2xzIGFuZCB0aHVzIGNhbm5vdCBiZSBleGVjdXRlZCBvbiBob3N0LgotCXNlZCAtaSAtZSAicy9DT05GSUdfQ01EX0xJQ0VOU0U9LiovIyBDT05GSUdfQ01EX0xJQ0VOU0UgaXMgbm90IHNldC8iICR7U0VEX0NPTkZJR19FRkl9IC5jb25maWcKLQotCW9lX3J1bm1ha2UgY3Jvc3NfdG9vbHMgTk9fU0RMPTEKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9Ci0KLQkjIG1raW1hZ2UKLQlpbnN0YWxsIC1tIDA3NTUgdG9vbHMvbWtpbWFnZSAke0R9JHtiaW5kaXJ9L3Vib290LW1raW1hZ2UKLQlsbiAtc2YgdWJvb3QtbWtpbWFnZSAke0R9JHtiaW5kaXJ9L21raW1hZ2UKLQotCSMgbWtlbnZpbWFnZQotCWluc3RhbGwgLW0gMDc1NSB0b29scy9ta2VudmltYWdlICR7RH0ke2JpbmRpcn0vdWJvb3QtbWtlbnZpbWFnZQotCWxuIC1zZiB1Ym9vdC1ta2VudmltYWdlICR7RH0ke2JpbmRpcn0vbWtlbnZpbWFnZQotCi0JIyBkdW1waW1hZ2UKLQlpbnN0YWxsIC1tIDA3NTUgdG9vbHMvZHVtcGltYWdlICR7RH0ke2JpbmRpcn0vdWJvb3QtZHVtcGltYWdlCi0JbG4gLXNmIHVib290LWR1bXBpbWFnZSAke0R9JHtiaW5kaXJ9L2R1bXBpbWFnZQotCi0JIyBmaXRfY2hlY2tfc2lnbgotCWluc3RhbGwgLW0gMDc1NSB0b29scy9maXRfY2hlY2tfc2lnbiAke0R9JHtiaW5kaXJ9L3Vib290LWZpdF9jaGVja19zaWduCi0JbG4gLXNmIHVib290LWZpdF9jaGVja19zaWduICR7RH0ke2JpbmRpcn0vZml0X2NoZWNrX3NpZ24KLX0KLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLUZJTEVTXyR7UE59ID0gIiIKLUZJTEVTXyR7UE59LW1raW1hZ2UgPSAiJHtiaW5kaXJ9L3Vib290LW1raW1hZ2UgJHtiaW5kaXJ9L21raW1hZ2UgJHtiaW5kaXJ9L3Vib290LWR1bXBpbWFnZSAke2JpbmRpcn0vZHVtcGltYWdlICR7YmluZGlyfS91Ym9vdC1maXRfY2hlY2tfc2lnbiAke2JpbmRpcn0vZml0X2NoZWNrX3NpZ24iCi1GSUxFU18ke1BOfS1ta2VudmltYWdlID0gIiR7YmluZGlyfS91Ym9vdC1ta2VudmltYWdlICR7YmluZGlyfS9ta2VudmltYWdlIgotCi1SREVQRU5EU18ke1BOfS1ta2ltYWdlICs9ICJkdGMiCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0tbWtpbWFnZSAke1BOfS1ta2VudmltYWdlIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QtdG9vbHNfMjAyMC4wNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXRvb2xzXzIwMjAuMDQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2VhZjcyMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LXRvb2xzXzIwMjAuMDQuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIHUtYm9vdC1jb21tb24uaW5jCityZXF1aXJlIHUtYm9vdC10b29scy5pbmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWJzcC91LWJvb3QvdS1ib290LmluYwppbmRleCA5YTc1NGZkLi44MGY4MjhkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3QuaW5jCkBAIC0xLDE5ICsxLDE3IEBACiBTVU1NQVJZID0gIlVuaXZlcnNhbCBCb290IExvYWRlciBmb3IgZW1iZWRkZWQgZGV2aWNlcyIKIFBST1ZJREVTID0gInZpcnR1YWwvYm9vdGxvYWRlciIKIAotQiA9ICIke1dPUktESVJ9L2J1aWxkIgotCiBQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgogCiBERVBFTkRTICs9ICJrZXJuLXRvb2xzLW5hdGl2ZSIKIAotaW5oZXJpdCB1Ym9vdC1jb25maWcgdWJvb3QtZXh0bGludXgtY29uZmlnIHVib290LXNpZ24gZGVwbG95IGNtbDEKK2luaGVyaXQgdWJvb3QtY29uZmlnIHVib290LWV4dGxpbnV4LWNvbmZpZyB1Ym9vdC1zaWduIGRlcGxveSBjbWwxIHB5dGhvbjNuYXRpdmUKIAotREVQRU5EUyArPSAic3dpZy1uYXRpdmUgcHl0aG9uLW5hdGl2ZSIKK0RFUEVORFMgKz0gInN3aWctbmF0aXZlIgogCiBFWFRSQV9PRU1BS0UgPSAnQ1JPU1NfQ09NUElMRT0ke1RBUkdFVF9QUkVGSVh9IENDPSIke1RBUkdFVF9QUkVGSVh9Z2NjICR7VE9PTENIQUlOX09QVElPTlN9IiBWPTEnCiBFWFRSQV9PRU1BS0UgKz0gJ0hPU1RDQz0iJHtCVUlMRF9DQ30gJHtCVUlMRF9DRkxBR1N9ICR7QlVJTERfTERGTEFHU30iJwotRVhUUkFfT0VNQUtFICs9ICdQWVRIT04yPW5hdGl2ZXB5dGhvbiBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0gU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9JworRVhUUkFfT0VNQUtFICs9ICdTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0gU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9JwogCiBQQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCIKICMgdS1ib290IHdpbGwgY29tcGlsZSBpdHMgb3duIHRvb2xzIGR1cmluZyB0aGUgYnVpbGQsIHdpdGggc3BlY2lmaWMKQEAgLTg3LDYgKzg1LDggQEAKICAgICAgICAgZmkKICAgICAgICAgbWVyZ2VfY29uZmlnLnNoIC1tIC5jb25maWcgJHtAIiAiLmpvaW4oZmluZF9jZmdzKGQpKX0KICAgICAgICAgY21sMV9kb19jb25maWd1cmUKKyAgICBlbHNlCisgICAgICAgIERFVlRPT0xfRElTQUJMRV9NRU5VQ09ORklHPXRydWUKICAgICBmaQogfQogCkBAIC0xMjIsNiArMTIyLDExIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY3AgJHtCfS8ke2NvbmZpZ30vJHtiaW5hcnl9ICR7Qn0vJHtjb25maWd9L3UtYm9vdC0ke3R5cGV9LiR7VUJPT1RfU1VGRklYfQogICAgICAgICAgICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgICAgICAgICAgZG9uZQorCisgICAgICAgICAgICAgICAgICAgICMgR2VuZXJhdGUgdGhlIHVib290LWluaXRpYWwtZW52CisgICAgICAgICAgICAgICAgICAgIG9lX3J1bm1ha2UgLUMgJHtTfSBPPSR7Qn0vJHtjb25maWd9IHUtYm9vdC1pbml0aWFsLWVudgorICAgICAgICAgICAgICAgICAgICBjcCAke0J9LyR7Y29uZmlnfS91LWJvb3QtaW5pdGlhbC1lbnYgJHtCfS8ke2NvbmZpZ30vdS1ib290LWluaXRpYWwtZW52LSR7dHlwZX0KKwogICAgICAgICAgICAgICAgICAgICB1bnNldCBrCiAgICAgICAgICAgICAgICAgZmkKICAgICAgICAgICAgIGRvbmUKQEAgLTEzMCw2ICsxMzUsOSBAQAogICAgICAgICB1bnNldCAgaQogICAgIGVsc2UKICAgICAgICAgb2VfcnVubWFrZSAtQyAke1N9IE89JHtCfSAke1VCT09UX01BS0VfVEFSR0VUfQorCisgICAgICAgICMgR2VuZXJhdGUgdGhlIHVib290LWluaXRpYWwtZW52CisgICAgICAgIG9lX3J1bm1ha2UgLUMgJHtTfSBPPSR7Qn0gdS1ib290LWluaXRpYWwtZW52CiAgICAgZmkKIAogfQpAQCAtMTQzLDE5ICsxNTEsMjggQEAKICAgICAgICAgICAgICAgICBqPSQoZXhwciAkaiArIDEpOwogICAgICAgICAgICAgICAgIGlmIFsgJGogLWVxICRpIF0KICAgICAgICAgICAgICAgICB0aGVuCi0gICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfS9ib290Ci0gICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7Qn0vJHtjb25maWd9L3UtYm9vdC0ke3R5cGV9LiR7VUJPT1RfU1VGRklYfSAke0R9L2Jvb3QvdS1ib290LSR7dHlwZX0tJHtQVn0tJHtQUn0uJHtVQk9PVF9TVUZGSVh9CisgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gNjQ0ICR7Qn0vJHtjb25maWd9L3UtYm9vdC0ke3R5cGV9LiR7VUJPT1RfU1VGRklYfSAke0R9L2Jvb3QvdS1ib290LSR7dHlwZX0tJHtQVn0tJHtQUn0uJHtVQk9PVF9TVUZGSVh9CiAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiB1LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0gJHtEfS9ib290LyR7VUJPT1RfQklOQVJZfS0ke3R5cGV9CiAgICAgICAgICAgICAgICAgICAgIGxuIC1zZiB1LWJvb3QtJHt0eXBlfS0ke1BWfS0ke1BSfS4ke1VCT09UX1NVRkZJWH0gJHtEfS9ib290LyR7VUJPT1RfQklOQVJZfQorCisgICAgICAgICAgICAgICAgICAgICMgSW5zdGFsbCB0aGUgdWJvb3QtaW5pdGlhbC1lbnYKKyAgICAgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSA2NDQgJHtCfS8ke2NvbmZpZ30vdS1ib290LWluaXRpYWwtZW52LSR7dHlwZX0gJHtEfS8ke3N5c2NvbmZkaXJ9LyR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0tJHt0eXBlfS0ke1BWfS0ke1BSfQorICAgICAgICAgICAgICAgICAgICBsbiAtc2YgJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfS0ke3R5cGV9LSR7UFZ9LSR7UFJ9ICR7RH0vJHtzeXNjb25mZGlyfS8ke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7dHlwZX0KKyAgICAgICAgICAgICAgICAgICAgbG4gLXNmICR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0tJHt0eXBlfS0ke1BWfS0ke1BSfSAke0R9LyR7c3lzY29uZmRpcn0vJHtQTn0taW5pdGlhbC1lbnYtJHt0eXBlfQorICAgICAgICAgICAgICAgICAgICBsbiAtc2YgJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfS0ke3R5cGV9LSR7UFZ9LSR7UFJ9ICR7RH0vJHtzeXNjb25mZGlyfS8ke1BOfS1pbml0aWFsLWVudgogICAgICAgICAgICAgICAgIGZpCiAgICAgICAgICAgICBkb25lCiAgICAgICAgICAgICB1bnNldCAgagogICAgICAgICBkb25lCiAgICAgICAgIHVuc2V0ICBpCiAgICAgZWxzZQotICAgICAgICBpbnN0YWxsIC1kICR7RH0vYm9vdAotICAgICAgICBpbnN0YWxsIC1tIDY0NCAke0J9LyR7VUJPT1RfQklOQVJZfSAke0R9L2Jvb3QvJHtVQk9PVF9JTUFHRX0KKyAgICAgICAgaW5zdGFsbCAtRCAtbSA2NDQgJHtCfS8ke1VCT09UX0JJTkFSWX0gJHtEfS9ib290LyR7VUJPT1RfSU1BR0V9CiAgICAgICAgIGxuIC1zZiAke1VCT09UX0lNQUdFfSAke0R9L2Jvb3QvJHtVQk9PVF9CSU5BUll9CisKKyAgICAgICAgIyBJbnN0YWxsIHRoZSB1Ym9vdC1pbml0aWFsLWVudgorICAgICAgICBpbnN0YWxsIC1EIC1tIDY0NCAke0J9L3UtYm9vdC1pbml0aWFsLWVudiAke0R9LyR7c3lzY29uZmRpcn0vJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfS0ke1BWfS0ke1BSfQorICAgICAgICBsbiAtc2YgJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfS0ke1BWfS0ke1BSfSAke0R9LyR7c3lzY29uZmRpcn0vJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfQorICAgICAgICBsbiAtc2YgJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfS0ke1BWfS0ke1BSfSAke0R9LyR7c3lzY29uZmRpcn0vJHtQTn0taW5pdGlhbC1lbnYKICAgICBmaQogCiAgICAgaWYgWyAtbiAiJHtVQk9PVF9FTEZ9IiBdCkBAIC0yMjQsNyArMjQxLDE2IEBACiAKIH0KIAotRklMRVNfJHtQTn0gPSAiL2Jvb3QgJHtzeXNjb25mZGlyfSAke2RhdGFkaXJ9IgorUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7UE59LWVudiIKKworUlBST1ZJREVTXyR7UE59LWVudiArPSAidS1ib290LWRlZmF1bHQtZW52IgorRklMRVNfJHtQTn0tZW52ID0gIiBcCisgICAgJHtzeXNjb25mZGlyfS8ke1BOfS1pbml0aWFsLWVudiogXAorICAgICR7c3lzY29uZmRpcn0vZndfZW52LmNvbmZpZyBcCisiCisKK0ZJTEVTXyR7UE59ID0gIi9ib290ICR7ZGF0YWRpcn0iCitSREVQRU5EU18ke1BOfSArPSAiJHtQTn0tZW52IgogCiBkb19kZXBsb3kgKCkgewogICAgIGlmIFsgLW4gIiR7VUJPT1RfQ09ORklHfSIgXQpAQCAtMjM1LDI1ICsyNjEsNDMgQEAKICAgICAgICAgICAgICAgICBqPSQoZXhwciAkaiArIDEpOwogICAgICAgICAgICAgICAgIGlmIFsgJGogLWVxICRpIF0KICAgICAgICAgICAgICAgICB0aGVuCi0gICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLWQgJHtERVBMT1lESVJ9Ci0gICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7Qn0vJHtjb25maWd9L3UtYm9vdC0ke3R5cGV9LiR7VUJPT1RfU1VGRklYfSAke0RFUExPWURJUn0vdS1ib290LSR7dHlwZX0tJHtQVn0tJHtQUn0uJHtVQk9PVF9TVUZGSVh9CisgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gNjQ0ICR7Qn0vJHtjb25maWd9L3UtYm9vdC0ke3R5cGV9LiR7VUJPT1RfU1VGRklYfSAke0RFUExPWURJUn0vdS1ib290LSR7dHlwZX0tJHtQVn0tJHtQUn0uJHtVQk9PVF9TVUZGSVh9CiAgICAgICAgICAgICAgICAgICAgIGNkICR7REVQTE9ZRElSfQogICAgICAgICAgICAgICAgICAgICBsbiAtc2YgdS1ib290LSR7dHlwZX0tJHtQVn0tJHtQUn0uJHtVQk9PVF9TVUZGSVh9ICR7VUJPT1RfU1lNTElOS30tJHt0eXBlfQogICAgICAgICAgICAgICAgICAgICBsbiAtc2YgdS1ib290LSR7dHlwZX0tJHtQVn0tJHtQUn0uJHtVQk9PVF9TVUZGSVh9ICR7VUJPT1RfU1lNTElOS30KICAgICAgICAgICAgICAgICAgICAgbG4gLXNmIHUtYm9vdC0ke3R5cGV9LSR7UFZ9LSR7UFJ9LiR7VUJPT1RfU1VGRklYfSAke1VCT09UX0JJTkFSWX0tJHt0eXBlfQogICAgICAgICAgICAgICAgICAgICBsbiAtc2YgdS1ib290LSR7dHlwZX0tJHtQVn0tJHtQUn0uJHtVQk9PVF9TVUZGSVh9ICR7VUJPT1RfQklOQVJZfQorCisgICAgICAgICAgICAgICAgICAgICMgRGVwbG95IHRoZSB1Ym9vdC1pbml0aWFsLWVudgorICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDY0NCAke0J9LyR7Y29uZmlnfS91LWJvb3QtaW5pdGlhbC1lbnYtJHt0eXBlfSAke0RFUExPWURJUn0vJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfS0ke3R5cGV9LSR7UFZ9LSR7UFJ9CisgICAgICAgICAgICAgICAgICAgIGNkICR7REVQTE9ZRElSfQorICAgICAgICAgICAgICAgICAgICBsbiAtc2YgJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfS0ke3R5cGV9LSR7UFZ9LSR7UFJ9ICR7UE59LWluaXRpYWwtZW52LSR7TUFDSElORX0tJHt0eXBlfQorICAgICAgICAgICAgICAgICAgICBsbiAtc2YgJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfS0ke3R5cGV9LSR7UFZ9LSR7UFJ9ICR7UE59LWluaXRpYWwtZW52LSR7dHlwZX0KICAgICAgICAgICAgICAgICBmaQogICAgICAgICAgICAgZG9uZQogICAgICAgICAgICAgdW5zZXQgIGoKICAgICAgICAgZG9uZQogICAgICAgICB1bnNldCAgaQogICAgIGVsc2UKLSAgICAgICAgaW5zdGFsbCAtZCAke0RFUExPWURJUn0KLSAgICAgICAgaW5zdGFsbCAtbSA2NDQgJHtCfS8ke1VCT09UX0JJTkFSWX0gJHtERVBMT1lESVJ9LyR7VUJPT1RfSU1BR0V9CisgICAgICAgIGluc3RhbGwgLUQgLW0gNjQ0ICR7Qn0vJHtVQk9PVF9CSU5BUll9ICR7REVQTE9ZRElSfS8ke1VCT09UX0lNQUdFfQorCiAgICAgICAgIGNkICR7REVQTE9ZRElSfQogICAgICAgICBybSAtZiAke1VCT09UX0JJTkFSWX0gJHtVQk9PVF9TWU1MSU5LfQogICAgICAgICBsbiAtc2YgJHtVQk9PVF9JTUFHRX0gJHtVQk9PVF9TWU1MSU5LfQogICAgICAgICBsbiAtc2YgJHtVQk9PVF9JTUFHRX0gJHtVQk9PVF9CSU5BUll9CisKKyAgICAgICAgIyBEZXBsb3kgdGhlIHVib290LWluaXRpYWwtZW52CisgICAgICAgIGluc3RhbGwgLUQgLW0gNjQ0ICR7Qn0vdS1ib290LWluaXRpYWwtZW52ICR7REVQTE9ZRElSfS8ke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7UFZ9LSR7UFJ9CisgICAgICAgIGNkICR7REVQTE9ZRElSfQorICAgICAgICBsbiAtc2YgJHtQTn0taW5pdGlhbC1lbnYtJHtNQUNISU5FfS0ke1BWfS0ke1BSfSAke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9CisgICAgICAgIGxuIC1zZiAke1BOfS1pbml0aWFsLWVudi0ke01BQ0hJTkV9LSR7UFZ9LSR7UFJ9ICR7UE59LWluaXRpYWwtZW52CisgICAgZmkKKworICAgIGlmIFsgLWUgJHtXT1JLRElSfS9md19lbnYuY29uZmlnIF0gOyB0aGVuCisgICAgICAgIGluc3RhbGwgLUQgLW0gNjQ0ICR7V09SS0RJUn0vZndfZW52LmNvbmZpZyAke0RFUExPWURJUn0vZndfZW52LmNvbmZpZy0ke01BQ0hJTkV9LSR7UFZ9LSR7UFJ9CisgICAgICAgIGNkICR7REVQTE9ZRElSfQorICAgICAgICBsbiAtc2YgZndfZW52LmNvbmZpZy0ke01BQ0hJTkV9LSR7UFZ9LSR7UFJ9IGZ3X2Vudi5jb25maWctJHtNQUNISU5FfQorICAgICAgICBsbiAtc2YgZndfZW52LmNvbmZpZy0ke01BQ0hJTkV9LSR7UFZ9LSR7UFJ9IGZ3X2Vudi5jb25maWcKICAgICBmaQogCiAgICAgaWYgWyAtbiAiJHtVQk9PVF9FTEZ9IiBdCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ic3AvdS1ib290L3UtYm9vdF8yMDE5LjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3RfMjAyMC4wNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3RfMjAxOS4xMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtYnNwL3UtYm9vdC91LWJvb3RfMjAyMC4wNC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpXzAuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9hdmFoaS9hdmFoaV8wLjcuYmIKaW5kZXggMmUwNGQzMC4uMjQ1MjNjNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2F2YWhpL2F2YWhpXzAuNy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYXZhaGkvYXZhaGlfMC43LmJiCkBAIC0xMCw2ICsxMCwxNiBAQAogCiBQQUNLQUdFUyA9KyAibGliYXZhaGktZ29iamVjdCBhdmFoaS1kYWVtb24gbGliYXZhaGktY29tbW9uIGxpYmF2YWhpLWNvcmUgbGliYXZhaGktY2xpZW50IGF2YWhpLWRuc2NvbmZkIGxpYmF2YWhpLWdsaWIgYXZhaGktYXV0b2lwZCBhdmFoaS11dGlscyIKIAorTElDRU5TRV9saWJhdmFoaS1nb2JqZWN0ID0gIkxHUEx2Mi4xKyIKK0xJQ0VOU0VfYXZhaGktZGFlbW9uID0gIkxHUEx2Mi4xKyIKK0xJQ0VOU0VfbGliYXZhaGktY29tbW9uID0gIkxHUEx2Mi4xKyIKK0xJQ0VOU0VfbGliYXZhaGktY29yZSA9ICJMR1BMdjIuMSsiCitMSUNFTlNFX2F2YWhpLWNsaWVudCA9ICJMR1BMdjIuMSsiCitMSUNFTlNFX2F2YWhpLWRuc2NvbmZkID0gIkxHUEx2Mi4xKyIKK0xJQ0VOU0VfbGliYXZhaGktZ2xpYiA9ICJMR1BMdjIuMSsiCitMSUNFTlNFX2F2YWhpLWF1dG9pcGQgPSAiTEdQTHYyLjErIgorTElDRU5TRV9hdmFoaS11dGlscyA9ICJMR1BMdjIuMSsiCisKICMgQXMgYXZhaGkgZG9lc24ndCBwdXQgYW55IGZpbGVzIGludG8gUE4sIGNsZWFyIHRoZSBmaWxlcyBsaXN0IHRvIGF2b2lkIHByb2JsZW1zCiAjIGlmIGV4dHJhIGxpYnJhcmllcyBhcHBlYXIuCiBGSUxFU18ke1BOfSA9ICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtYmluZC1maXgtQ1ZFLTIwMTktNjQ3MS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1iaW5kLWZpeC1DVkUtMjAxOS02NDcxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmVkOTllLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1iaW5kLWZpeC1DVkUtMjAxOS02NDcxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotQmFja3BvcnQgcGF0Y2ggdG8gZml4IENWRS0yMDE5LTY0NzEuCi0KLVJlZjoKLWh0dHBzOi8vc2VjdXJpdHktdHJhY2tlci5kZWJpYW4ub3JnL3RyYWNrZXIvQ1ZFLTIwMTktNjQ3MQotCi1DVkU6IENWRS0yMDE5LTY0NzEKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmlzYy5vcmcvaXNjLXByb2plY3RzL2JpbmQ5L2NvbW1pdC8zYTljN2JiXQotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLQotRnJvbSAzYTljN2JiODBkNGE2MDliODY0Mjc0MDZkOWRkNzgzMTk5OTIwYjViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWFyayBBbmRyZXdzIDxtYXJrYUBpc2Mub3JnPgotRGF0ZTogVHVlLCAxOSBNYXIgMjAxOSAxNDoxNDoyMSArMTEwMAotU3ViamVjdDogW1BBVENIXSBtb3ZlIGl0ZW1fb3V0IHRlc3QgaW5zaWRlIGxvY2sgaW4gZG5zX2Rpc3BhdGNoX2dldG5leHQoKQotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA2MGM0MmY4NDlkNTIwNTY0ZWQ0MmU1ZWQwYmE0NmI0YjY5YzA3NzEyKQotLS0tCi0gbGliL2Rucy9kaXNwYXRjaC5jIHwgMTIgKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi9kbnMvZGlzcGF0Y2guYyBiL2xpYi9kbnMvZGlzcGF0Y2guYwotaW5kZXggNDA4YmVkYTM2Ny4uMzI3OGRiNGEwNyAxMDA2NDQKLS0tLSBhL2xpYi9kbnMvZGlzcGF0Y2guYwotKysrIGIvbGliL2Rucy9kaXNwYXRjaC5jCi1AQCAtMTM0LDcgKzEzNCw3IEBAIHN0cnVjdCBkbnNfZGlzcGVudHJ5IHsKLSAJaXNjX3Rhc2tfdAkJICAgICAgICp0YXNrOwotIAlpc2NfdGFza2FjdGlvbl90CQlhY3Rpb247Ci0gCXZvaWQJCQkgICAgICAgKmFyZzsKLS0JYm9vbAkJCWl0ZW1fb3V0OwotKwlib29sCQkJCWl0ZW1fb3V0OwotIAlkaXNwc29ja2V0X3QJCQkqZGlzcHNvY2tldDsKLSAJSVNDX0xJU1QoZG5zX2Rpc3BhdGNoZXZlbnRfdCkJaXRlbXM7Ci0gCUlTQ19MSU5LKGRuc19kaXNwZW50cnlfdCkJbGluazsKLUBAIC0zNDIyLDEzICszNDIyLDE0IEBAIGRuc19kaXNwYXRjaF9nZXRuZXh0KGRuc19kaXNwZW50cnlfdCAqcmVzcCwgZG5zX2Rpc3BhdGNoZXZlbnRfdCAqKnNvY2tldmVudCkgewotIAlkaXNwID0gcmVzcC0+ZGlzcDsKLSAJUkVRVUlSRShWQUxJRF9ESVNQQVRDSChkaXNwKSk7Ci0gCi0tCVJFUVVJUkUocmVzcC0+aXRlbV9vdXQgPT0gdHJ1ZSk7Ci0tCXJlc3AtPml0ZW1fb3V0ID0gZmFsc2U7Ci0tCi0gCWV2ID0gKnNvY2tldmVudDsKLSAJKnNvY2tldmVudCA9IE5VTEw7Ci0gCi0gCUxPQ0soJmRpc3AtPmxvY2spOwotKwotKwlSRVFVSVJFKHJlc3AtPml0ZW1fb3V0ID09IHRydWUpOwotKwlyZXNwLT5pdGVtX291dCA9IGZhbHNlOwotKwotIAlpZiAoZXYtPmJ1ZmZlci5iYXNlICE9IE5VTEwpCi0gCQlmcmVlX2J1ZmZlcihkaXNwLCBldi0+YnVmZmVyLmJhc2UsIGV2LT5idWZmZXIubGVuZ3RoKTsKLSAJZnJlZV9kZXZlbnQoZGlzcCwgZXYpOwotQEAgLTM1NzMsNiArMzU3NCw5IEBAIGRuc19kaXNwYXRjaF9yZW1vdmVyZXNwb25zZShkbnNfZGlzcGVudHJ5X3QgKipyZXNwLAotIAkJaXNjX3Rhc2tfc2VuZChkaXNwLT50YXNrWzBdLCAmZGlzcC0+Y3RsZXZlbnQpOwotIH0KLSAKLSsvKgotKyAqIGRpc3AgbXVzdCBiZSBsb2NrZWQuCi0rICovCi0gc3RhdGljIHZvaWQKLSBkb19jYW5jZWwoZG5zX2Rpc3BhdGNoX3QgKmRpc3ApIHsKLSAJZG5zX2Rpc3BhdGNoZXZlbnRfdCAqZXY7Ci0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtY29uZmlndXJlLmluLXJlbW92ZS11c2VsZXNzLUwtdXNlX29wZW5zc2wtbGliLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtdXNlbGVzcy1MLXVzZV9vcGVuc3NsLWxpYi5wYXRjaAppbmRleCA4NzFiYjJhLi45ZDMxYjk4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtY29uZmlndXJlLmluLXJlbW92ZS11c2VsZXNzLUwtdXNlX29wZW5zc2wtbGliLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1jb25maWd1cmUuaW4tcmVtb3ZlLXVzZWxlc3MtTC11c2Vfb3BlbnNzbC1saWIucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDk1MDg2N2Q5ZmQzZjY5MGUyNzFjOGM4MDdiNmVlZDE0NGIyOTM1YjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDIzMjVhOTJmMTg5NmEyYTdmNTg2NjExNjg2ODAxYjQxZmJjOTFiNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBNb24sIDI3IEF1ZyAyMDE4IDE1OjAwOjUxICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5pbjogcmVtb3ZlIHVzZWxlc3MgYC1MJHVzZV9vcGVuc3NsL2xpYicKQEAgLTEwLDE1ICsxMCwxNiBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKIC0tLQotIGNvbmZpZ3VyZS5pbiB8IDIgKy0KKyBjb25maWd1cmUuYWMgfCAyICstCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KLWluZGV4IDU0ZWZjNTUuLjc2YWMwZWIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuaW4KLSsrKyBiL2NvbmZpZ3VyZS5pbgotQEAgLTE2OTEsNyArMTY5MSw3IEBAIElmIHlvdSBkb24ndCB3YW50IE9wZW5TU0wsIHVzZSAtLXdpdGhvdXQtb3BlbnNzbF0pCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBlODVhNWM2Li4yYmJmYzU4IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0xNjMxLDcgKzE2MzEsNyBAQCBJZiB5b3UgZG9uJ3Qgd2FudCBPcGVuU1NMLCB1c2UgLS13aXRob3V0LW9wZW5zc2xdKQogIAkJCQlmaQogIAkJCQk7OwogIAkJCSopCkBAIC0yNyw2ICsyOCwzIEBACiAgCQkJCTs7CiAgCQkJZXNhYwogIAkJZmkKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWZpeC1lbmZvcmNlbWVudC1vZi10Y3AtY2xpZW50cy12MS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1maXgtZW5mb3JjZW1lbnQtb2YtdGNwLWNsaWVudHMtdjEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4YWUxMjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWZpeC1lbmZvcmNlbWVudC1vZi10Y3AtY2xpZW50cy12MS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLUJhY2twb3J0IHBhdGNoIHRvIGZpeCBDVkUtMjAxOC01NzQzLgotCi1SZWY6Ci1odHRwczovL3NlY3VyaXR5LXRyYWNrZXIuZGViaWFuLm9yZy90cmFja2VyL0NWRS0yMDE4LTU3NDMKLQotQ1ZFOiBDVkUtMjAxOC01NzQzCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5pc2Mub3JnL2lzYy1wcm9qZWN0cy9iaW5kOS9jb21taXQvZWMyZDUwZF0KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLUZyb20gZWMyZDUwZGE4ZDgxODE0NjQwZTI4NTkzZDkxMmY0Yjk2YzdlZmVjZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9XaXRvbGQ9MjBLcj1DND05OWNpY2tpPz0gPHdwa0Bpc2Mub3JnPgotRGF0ZTogVGh1LCAzIEphbiAyMDE5IDE0OjE3OjQzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMS82XSBmaXggZW5mb3JjZW1lbnQgb2YgdGNwLWNsaWVudHMgKHYxKQotCi10Y3AtY2xpZW50cyBzZXR0aW5ncyBjb3VsZCBiZSBleGNlZWRlZCBpbiBzb21lIGNhc2VzIGJ5Ci1jcmVhdGluZyBtb3JlIGFuZCBtb3JlIGFjdGl2ZSBUQ1AgY2xpZW50cyB0aGF0IGFyZSBvdmVyCi10aGUgc2V0IHF1b3RhIGxpbWl0LCB3aGljaCBpbiB0aGUgZW5kIGNvdWxkIGxlYWQgdG8gYQotRG9TIGF0dGFjayBieSBlLmcuIGV4aGF1c3Rpb24gb2YgZmlsZSBkZXNjcmlwdG9ycy4KLQotSWYgVENQIGNsaWVudCB3ZSdyZSBjbG9zaW5nIHdlbnQgb3ZlciB0aGUgcXVvdGEgKHNvIGl0J3MKLW5vdCBhdHRhY2hlZCB0byBhIHF1b3RhKSBtYXJrIGl0IGFzIG1vcnRhbCAtIHNvIHRoYXQgaXQKLXdpbGwgYmUgZGVzdHJveWVkIGFuZCBub3Qgc2V0IHVwIHRvIGxpc3RlbiBmb3IgbmV3Ci1jb25uZWN0aW9ucyAtIHVubGVzcyBpdCdzIHRoZSBsYXN0IGNsaWVudCBmb3IgYSBzcGVjaWZpYwotaW50ZXJmYWNlLgotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBmOTcxMzFkMjFiOTczODFjZWY3MmI5NzFiMTU3MzQ1YzFmOWI0MTE1KQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgOTY4OWZmYzQ4NWRmOGY5NzFmMGFkODFhYjhhYjFmNTM4OTQ5Mzc3NikKLS0tLQotIGJpbi9uYW1lZC9jbGllbnQuYyB8IDEzICsrKysrKysrKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2NsaWVudC5jIGIvYmluL25hbWVkL2NsaWVudC5jCi1pbmRleCBkNDgyZGE3MTIxLi4wNzM5ZGQ0OGFmIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2NsaWVudC5jCi0rKysgYi9iaW4vbmFtZWQvY2xpZW50LmMKLUBAIC00MjEsOCArNDIxLDE5IEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJCWlzY19zb2NrZXRfZGV0YWNoKCZjbGllbnQtPnRjcHNvY2tldCk7Ci0gCQl9Ci0gCi0tCQlpZiAoY2xpZW50LT50Y3BxdW90YSAhPSBOVUxMKQotKwkJaWYgKGNsaWVudC0+dGNwcXVvdGEgIT0gTlVMTCkgewotIAkJCWlzY19xdW90YV9kZXRhY2goJmNsaWVudC0+dGNwcXVvdGEpOwotKwkJfSBlbHNlIHsKLSsJCQkvKgotKwkJCSAqIFdlIHdlbnQgb3ZlciBxdW90YSB3aXRoIHRoaXMgY2xpZW50LCB3ZSBkb24ndAotKwkJCSAqIHdhbnQgdG8gcmVzdGFydCBsaXN0ZW5pbmcgdW5sZXNzIHRoaXMgaXMgdGhlCi0rCQkJICogbGFzdCBjbGllbnQgb24gdGhpcyBpbnRlcmZhY2UsIHdoaWNoIGlzCi0rCQkJICogY2hlY2tlZCBsYXRlci4KLSsJCQkgKi8KLSsJCQlpZiAoVENQX0NMSUVOVChjbGllbnQpKSB7Ci0rCQkJCWNsaWVudC0+bW9ydGFsID0gdHJ1ZTsKLSsJCQl9Ci0rCQl9Ci0gCi0gCQlpZiAoY2xpZW50LT50aW1lcnNldCkgewotIAkJCSh2b2lkKWlzY190aW1lcl9yZXNldChjbGllbnQtPnRpbWVyLAotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAxLWdlbi5jLWV4dGVuZC1ESVJOQU1FU0laRS1mcm9tLTI1Ni10by01MTIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtZ2VuLmMtZXh0ZW5kLURJUk5BTUVTSVpFLWZyb20tMjU2LXRvLTUxMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYThkNjAxZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtZ2VuLmMtZXh0ZW5kLURJUk5BTUVTSVpFLWZyb20tMjU2LXRvLTUxMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TdWJqZWN0OiBnZW4uYzogZXh0ZW5kIERJUk5BTUVTSVpFIGZyb20gMjU2IHRvIDUxMgotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWIvZG5zL2dlbi5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogYmluZC05LjExLjMvbGliL2Rucy9nZW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGJpbmQtOS4xMS4zLm9yaWcvbGliL2Rucy9nZW4uYwotKysrIGJpbmQtOS4xMS4zL2xpYi9kbnMvZ2VuLmMKLUBAIC0xMzAsNyArMTMwLDcgQEAgc3RhdGljIGNvbnN0IGNoYXIgY29weXJpZ2h0W10gPQotICNkZWZpbmUgVFlQRUNMQVNTQlVGIChUWVBFQ0xBU1NMRU4gKyAxKQotICNkZWZpbmUgVFlQRUNMQVNTRk1UICIlIiBTVFIoVFlQRUNMQVNTTEVOKSAiWy0wLTlhLXpdXyVkIgotICNkZWZpbmUgQVRUUklCVVRFU0laRSAyNTYKLS0jZGVmaW5lIERJUk5BTUVTSVpFIDI1NgotKyNkZWZpbmUgRElSTkFNRVNJWkUgNTEyCi0gCi0gc3RhdGljIHN0cnVjdCBjYyB7Ci0gCXN0cnVjdCBjYyAqbmV4dDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1saWItZG5zLWdlbi5jLWZpeC10b28tbG9uZy1lcnJvci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMS1saWItZG5zLWdlbi5jLWZpeC10b28tbG9uZy1lcnJvci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDE4NzRhNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDEtbGliLWRucy1nZW4uYy1maXgtdG9vLWxvbmctZXJyb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDViYzMxNjdhOGI3MTRlYzBjNGEzZjFjN2YzYjk0MTEyOTZlYzBhMjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMTYgU2VwIDIwMTUgMjA6MjM6NDcgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gbGliL2Rucy9nZW4uYzogZml4IHRvbyBsb25nIGVycm9yCi0KLVRoZSA1MTIgaXMgYSBsaXR0bGUgc2hvcnQgd2hlbiBidWlsZCBpbiBkZWVwIGRpciwgYW5kIGNhdXNlICJ0b28gbG9uZyIKLWVycm9yLCB1c2UgUEFUSF9NQVggaWYgZGVmaW5lZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gbGliL2Rucy9nZW4uYyB8ICAgIDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotSW5kZXg6IGJpbmQtOS4xMS4zL2xpYi9kbnMvZ2VuLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBiaW5kLTkuMTEuMy5vcmlnL2xpYi9kbnMvZ2VuLmMKLSsrKyBiaW5kLTkuMTEuMy9saWIvZG5zL2dlbi5jCi1AQCAtMTMwLDcgKzEzMCwxMSBAQCBzdGF0aWMgY29uc3QgY2hhciBjb3B5cmlnaHRbXSA9Ci0gI2RlZmluZSBUWVBFQ0xBU1NCVUYgKFRZUEVDTEFTU0xFTiArIDEpCi0gI2RlZmluZSBUWVBFQ0xBU1NGTVQgIiUiIFNUUihUWVBFQ0xBU1NMRU4pICJbLTAtOWEtel1fJWQiCi0gI2RlZmluZSBBVFRSSUJVVEVTSVpFIDI1NgotKyNpZmRlZiBQQVRIX01BWAotKyNkZWZpbmUgRElSTkFNRVNJWkUgUEFUSF9NQVgKLSsjZWxzZQotICNkZWZpbmUgRElSTkFNRVNJWkUgNTEyCi0rI2VuZGlmCi0gCi0gc3RhdGljIHN0cnVjdCBjYyB7Ci0gCXN0cnVjdCBjYyAqbmV4dDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMi10Y3AtY2xpZW50cy1jb3VsZC1zdGlsbC1iZS1leGNlZWRlZC12Mi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwMi10Y3AtY2xpZW50cy1jb3VsZC1zdGlsbC1iZS1leGNlZWRlZC12Mi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E0ZThiMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDItdGNwLWNsaWVudHMtY291bGQtc3RpbGwtYmUtZXhjZWVkZWQtdjIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2NzAgKzAsMCBAQAotQmFja3BvcnQgcGF0Y2ggdG8gZml4IENWRS0yMDE4LTU3NDMuCi0KLVJlZjoKLWh0dHBzOi8vc2VjdXJpdHktdHJhY2tlci5kZWJpYW4ub3JnL3RyYWNrZXIvQ1ZFLTIwMTgtNTc0MwotCi1DVkU6IENWRS0yMDE4LTU3NDMKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmlzYy5vcmcvaXNjLXByb2plY3RzL2JpbmQ5L2NvbW1pdC83MTlmNjA0XQotCi1TaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KLQotRnJvbSA3MTlmNjA0ZTNmYWQ1Yjc0NzliZDE0ZTJmYTBlZjQ0MTNmMGE4ZmRjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP1dpdG9sZD0yMEtyPUM0PTk5Y2lja2k/PSA8d3BrQGlzYy5vcmc+Ci1EYXRlOiBGcmksIDQgSmFuIDIwMTkgMTI6NTA6NTEgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzZdIHRjcC1jbGllbnRzIGNvdWxkIHN0aWxsIGJlIGV4Y2VlZGVkICh2MikKLQotdGhlIFRDUCBjbGllbnQgcXVvdGEgY291bGQgc3RpbGwgYmUgaW5lZmZlY3RpdmUgdW5kZXIgc29tZQotY2lyY3Vtc3RhbmNlcy4gIHRoaXMgY2hhbmdlOgotCi0tIGltcHJvdmVzIHF1b3RhIGFjY291bnRpbmcgdG8gZW5zdXJlIHRoYXQgVENQIGNsaWVudHMgYXJlCi0gIHByb3Blcmx5IGxpbWl0ZWQsIHdoaWxlIHN0aWxsIGd1YXJhbnRlZWluZyB0aGF0IGF0IGxlYXN0IG9uZSBjbGllbnQKLSAgaXMgYWx3YXlzIGF2YWlsYWJsZSB0byBzZXJ2ZSBUQ1AgY29ubmVjdGlvbnMgb24gZWFjaCBpbnRlcmZhY2UuCi0tIHVzZXMgbW9yZSBkZXNjcmlwdGl2ZSBuYW1lcyBhbmQgcmVtb3ZlcyBvbmUgKG50Y3B0YXJnZXQpIHRoYXQKLSAgd2FzIG5vIGxvbmdlciBuZWVkZWQKLS0gYWRkcyBjb21tZW50cwotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA5MjQ2NTFmMWQ1ZTYwNWNkMTg2ZDAzZjRmNzM0MGJjYzU0ZDc3Y2MyKQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgNTVhN2E0NThlMzBlNDc4NzRkMzRiZGYxMDc5ZWI4NjNhMDUxMjM5NikKLS0tLQotIGJpbi9uYW1lZC9jbGllbnQuYyAgICAgICAgICAgICAgICAgICAgIHwgMzExICsrKysrKysrKysrKysrKysrKysrLS0tLS0KLSBiaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaCAgICAgICB8ICAxNCArLQotIGJpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oIHwgIDExICstCi0gYmluL25hbWVkL2ludGVyZmFjZW1nci5jICAgICAgICAgICAgICAgfCAgIDggKy0KLSA0IGZpbGVzIGNoYW5nZWQsIDI2NyBpbnNlcnRpb25zKCspLCA3NyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9jbGllbnQuYyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotaW5kZXggMDczOWRkNDhhZi4uYTdiNDlhMGY3MSAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9jbGllbnQuYwotKysrIGIvYmluL25hbWVkL2NsaWVudC5jCi1AQCAtMjQ2LDEwICsyNDYsMTEgQEAgc3RhdGljIHZvaWQgbnNfY2xpZW50X2R1bXBtZXNzYWdlKG5zX2NsaWVudF90ICpjbGllbnQsIGNvbnN0IGNoYXIgKnJlYXNvbik7Ci0gc3RhdGljIGlzY19yZXN1bHRfdCBnZXRfY2xpZW50KG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLAotIAkJCSAgICAgICBkbnNfZGlzcGF0Y2hfdCAqZGlzcCwgYm9vbCB0Y3ApOwotIHN0YXRpYyBpc2NfcmVzdWx0X3QgZ2V0X3dvcmtlcihuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwKLS0JCQkgICAgICAgaXNjX3NvY2tldF90ICpzb2NrKTsKLSsJCQkgICAgICAgaXNjX3NvY2tldF90ICpzb2NrLCBuc19jbGllbnRfdCAqb2xkY2xpZW50KTsKLSBzdGF0aWMgaW5saW5lIGJvb2wKLS1hbGxvd2VkKGlzY19uZXRhZGRyX3QgKmFkZHIsIGRuc19uYW1lX3QgKnNpZ25lciwgaXNjX25ldGFkZHJfdCAqZWNzX2FkZHIsCi0tCXVpbnQ4X3QgZWNzX2FkZHJsZW4sIHVpbnQ4X3QgKmVjc19zY29wZSwgZG5zX2FjbF90ICphY2wpOwotK2FsbG93ZWQoaXNjX25ldGFkZHJfdCAqYWRkciwgZG5zX25hbWVfdCAqc2lnbmVyLAotKwlpc2NfbmV0YWRkcl90ICplY3NfYWRkciwgdWludDhfdCBlY3NfYWRkcmxlbiwKLSsJdWludDhfdCAqZWNzX3Njb3BlLCBkbnNfYWNsX3QgKmFjbCkKLSBzdGF0aWMgdm9pZCBjb21wdXRlX2Nvb2tpZShuc19jbGllbnRfdCAqY2xpZW50LCB1aW50MzJfdCB3aGVuLAotIAkJCSAgIHVpbnQzMl90IG5vbmNlLCBjb25zdCB1bnNpZ25lZCBjaGFyICpzZWNyZXQsCi0gCQkJICAgaXNjX2J1ZmZlcl90ICpidWYpOwotQEAgLTQwNSw4ICs0MDYsMTEgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkgKi8KLSAJCUlOU0lTVChjbGllbnQtPnJlY3Vyc2lvbnF1b3RhID09IE5VTEwpOwotIAkJSU5TSVNUKGNsaWVudC0+bmV3c3RhdGUgPD0gTlNfQ0xJRU5UU1RBVEVfUkVBRFkpOwotLQkJaWYgKGNsaWVudC0+bnJlYWRzID4gMCkKLSsKLSsJCWlmIChjbGllbnQtPm5yZWFkcyA+IDApIHsKLSAJCQlkbnNfdGNwbXNnX2NhbmNlbHJlYWQoJmNsaWVudC0+dGNwbXNnKTsKLSsJCX0KLSsKLSAJCWlmIChjbGllbnQtPm5yZWFkcyAhPSAwKSB7Ci0gCQkJLyogU3RpbGwgd2FpdGluZyBmb3IgcmVhZCBjYW5jZWwgY29tcGxldGlvbi4gKi8KLSAJCQlyZXR1cm4gKHRydWUpOwotQEAgLTQxNiwyNSArNDIwLDU4IEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJCWRuc190Y3Btc2dfaW52YWxpZGF0ZSgmY2xpZW50LT50Y3Btc2cpOwotIAkJCWNsaWVudC0+dGNwbXNnX3ZhbGlkID0gZmFsc2U7Ci0gCQl9Ci0rCi0gCQlpZiAoY2xpZW50LT50Y3Bzb2NrZXQgIT0gTlVMTCkgewotIAkJCUNUUkFDRSgiY2xvc2V0Y3AiKTsKLSAJCQlpc2Nfc29ja2V0X2RldGFjaCgmY2xpZW50LT50Y3Bzb2NrZXQpOwotKwotKwkJCWlmIChjbGllbnQtPnRjcGFjdGl2ZSkgewotKwkJCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCQkJCUlOU0lTVChjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSA+IDApOwotKwkJCQljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZS0tOwotKwkJCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJCQkJY2xpZW50LT50Y3BhY3RpdmUgPSBmYWxzZTsKLSsJCQl9Ci0gCQl9Ci0gCi0gCQlpZiAoY2xpZW50LT50Y3BxdW90YSAhPSBOVUxMKSB7Ci0tCQkJaXNjX3F1b3RhX2RldGFjaCgmY2xpZW50LT50Y3BxdW90YSk7Ci0tCQl9IGVsc2UgewotIAkJCS8qCi0tCQkJICogV2Ugd2VudCBvdmVyIHF1b3RhIHdpdGggdGhpcyBjbGllbnQsIHdlIGRvbid0Ci0tCQkJICogd2FudCB0byByZXN0YXJ0IGxpc3RlbmluZyB1bmxlc3MgdGhpcyBpcyB0aGUKLS0JCQkgKiBsYXN0IGNsaWVudCBvbiB0aGlzIGludGVyZmFjZSwgd2hpY2ggaXMKLS0JCQkgKiBjaGVja2VkIGxhdGVyLgotKwkJCSAqIElmIHdlIGFyZSBub3QgaW4gYSBwaXBlbGluZSBncm91cCwgb3IKLSsJCQkgKiB3ZSBhcmUgdGhlIGxhc3QgY2xpZW50IGluIHRoZSBncm91cCwgZGV0YWNoIGZyb20KLSsJCQkgKiB0Y3BxdW90YTsgb3RoZXJ3aXNlLCB0cmFuc2ZlciB0aGUgcXVvdGEgdG8KLSsJCQkgKiBhbm90aGVyIGNsaWVudCBpbiB0aGUgc2FtZSBncm91cC4KLSAJCQkgKi8KLS0JCQlpZiAoVENQX0NMSUVOVChjbGllbnQpKSB7Ci0tCQkJCWNsaWVudC0+bW9ydGFsID0gdHJ1ZTsKLSsJCQlpZiAoIUlTQ19MSU5LX0xJTktFRChjbGllbnQsIGdsaW5rKSB8fAotKwkJCSAgICAoY2xpZW50LT5nbGluay5uZXh0ID09IE5VTEwgJiYKLSsJCQkgICAgIGNsaWVudC0+Z2xpbmsucHJldiA9PSBOVUxMKSkKLSsJCQl7Ci0rCQkJCWlzY19xdW90YV9kZXRhY2goJmNsaWVudC0+dGNwcXVvdGEpOwotKwkJCX0gZWxzZSBpZiAoY2xpZW50LT5nbGluay5uZXh0ICE9IE5VTEwpIHsKLSsJCQkJSU5TSVNUKGNsaWVudC0+Z2xpbmsubmV4dC0+dGNwcXVvdGEgPT0gTlVMTCk7Ci0rCQkJCWNsaWVudC0+Z2xpbmsubmV4dC0+dGNwcXVvdGEgPSBjbGllbnQtPnRjcHF1b3RhOwotKwkJCQljbGllbnQtPnRjcHF1b3RhID0gTlVMTDsKLSsJCQl9IGVsc2UgewotKwkJCQlJTlNJU1QoY2xpZW50LT5nbGluay5wcmV2LT50Y3BxdW90YSA9PSBOVUxMKTsKLSsJCQkJY2xpZW50LT5nbGluay5wcmV2LT50Y3BxdW90YSA9IGNsaWVudC0+dGNwcXVvdGE7Ci0rCQkJCWNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotIAkJCX0KLSAJCX0KLSAKLSsJCS8qCi0rCQkgKiBVbmxpbmsgZnJvbSBwaXBlbGluZSBncm91cC4KLSsJCSAqLwotKwkJaWYgKElTQ19MSU5LX0xJTktFRChjbGllbnQsIGdsaW5rKSkgewotKwkJCWlmIChjbGllbnQtPmdsaW5rLm5leHQgIT0gTlVMTCkgewotKwkJCQljbGllbnQtPmdsaW5rLm5leHQtPmdsaW5rLnByZXYgPQotKwkJCQkJY2xpZW50LT5nbGluay5wcmV2OwotKwkJCX0KLSsJCQlpZiAoY2xpZW50LT5nbGluay5wcmV2ICE9IE5VTEwpIHsKLSsJCQkJY2xpZW50LT5nbGluay5wcmV2LT5nbGluay5uZXh0ID0KLSsJCQkJCWNsaWVudC0+Z2xpbmsubmV4dDsKLSsJCQl9Ci0rCQkJSVNDX0xJTktfSU5JVChjbGllbnQsIGdsaW5rKTsKLSsJCX0KLSsKLSAJCWlmIChjbGllbnQtPnRpbWVyc2V0KSB7Ci0gCQkJKHZvaWQpaXNjX3RpbWVyX3Jlc2V0KGNsaWVudC0+dGltZXIsCi0gCQkJCQkgICAgICBpc2NfdGltZXJ0eXBlX2luYWN0aXZlLAotQEAgLTQ1NSwxNSArNDkyLDE2IEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJICogdGhhdCBhbHJlYWR5LiAgQ2hlY2sgd2hldGhlciB0aGlzIGNsaWVudCBuZWVkcyB0byByZW1haW4KLSAJCSAqIGFjdGl2ZSBhbmQgZm9yY2UgaXQgdG8gZ28gaW5hY3RpdmUgaWYgbm90LgotIAkJICoKLS0JCSAqIFVEUCBjbGllbnRzIGdvIGluYWN0aXZlIGF0IHRoaXMgcG9pbnQsIGJ1dCBUQ1AgY2xpZW50cwotLQkJICogbWF5IHJlbWFpbiBhY3RpdmUgaWYgd2UgaGF2ZSBmZXdlciBhY3RpdmUgVENQIGNsaWVudAotLQkJICogb2JqZWN0cyB0aGFuIGRlc2lyZWQgZHVlIHRvIGFuIGVhcmxpZXIgcXVvdGEgZXhoYXVzdGlvbi4KLSsJCSAqIFVEUCBjbGllbnRzIGdvIGluYWN0aXZlIGF0IHRoaXMgcG9pbnQsIGJ1dCBhIFRDUCBjbGllbnQKLSsJCSAqIHdpbGwgbmVlZHMgdG8gcmVtYWluIGFjdGl2ZSBpZiBubyBvdGhlciBjbGllbnRzIGFyZQotKwkJICogbGlzdGVuaW5nIGZvciBUQ1AgcmVxdWVzdHMgb24gdGhpcyBpbnRlcmZhY2UsIHRvCi0rCQkgKiBwcmV2ZW50IHRoaXMgaW50ZXJmYWNlIGZyb20gZ29pbmcgbm9ucmVzcG9uc2l2ZS4KLSAJCSAqLwotIAkJaWYgKGNsaWVudC0+bW9ydGFsICYmIFRDUF9DTElFTlQoY2xpZW50KSAmJiAhbnNfZ19jbGllbnR0ZXN0KSB7Ci0gCQkJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJCWlmIChjbGllbnQtPmludGVyZmFjZS0+bnRjcGN1cnJlbnQgPAotLQkJCQkgICAgY2xpZW50LT5pbnRlcmZhY2UtPm50Y3B0YXJnZXQpCi0rCQkJaWYgKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nID09IDApIHsKLSAJCQkJY2xpZW50LT5tb3J0YWwgPSBmYWxzZTsKLSsJCQl9Ci0gCQkJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0gCQl9Ci0gCi1AQCAtNDcyLDE1ICs1MTAsMTcgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkgKiBxdWV1ZSBmb3IgcmVjeWNsaW5nLgotIAkJICovCi0gCQlpZiAoY2xpZW50LT5tb3J0YWwpIHsKLS0JCQlpZiAoY2xpZW50LT5uZXdzdGF0ZSA+IE5TX0NMSUVOVFNUQVRFX0lOQUNUSVZFKQotKwkJCWlmIChjbGllbnQtPm5ld3N0YXRlID4gTlNfQ0xJRU5UU1RBVEVfSU5BQ1RJVkUpIHsKLSAJCQkJY2xpZW50LT5uZXdzdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX0lOQUNUSVZFOwotKwkJCX0KLSAJCX0KLSAKLSAJCWlmIChOU19DTElFTlRTVEFURV9SRUFEWSA9PSBjbGllbnQtPm5ld3N0YXRlKSB7Ci0gCQkJaWYgKFRDUF9DTElFTlQoY2xpZW50KSkgewotIAkJCQljbGllbnRfYWNjZXB0KGNsaWVudCk7Ci0tCQkJfSBlbHNlCi0rCQkJfSBlbHNlIHsKLSAJCQkJY2xpZW50X3VkcHJlY3YoY2xpZW50KTsKLSsJCQl9Ci0gCQkJY2xpZW50LT5uZXdzdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX01BWDsKLSAJCQlyZXR1cm4gKHRydWUpOwotIAkJfQotQEAgLTQ5Miw0MSArNTMyLDU3IEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJLyoKLSAJCSAqIFdlIGFyZSB0cnlpbmcgdG8gZW50ZXIgdGhlIGluYWN0aXZlIHN0YXRlLgotIAkJICovCi0tCQlpZiAoY2xpZW50LT5uYWNjZXB0cyA+IDApCi0rCQlpZiAoY2xpZW50LT5uYWNjZXB0cyA+IDApIHsKLSAJCQlpc2Nfc29ja2V0X2NhbmNlbChjbGllbnQtPnRjcGxpc3RlbmVyLCBjbGllbnQtPnRhc2ssCi0gCQkJCQkgIElTQ19TT0NLQ0FOQ0VMX0FDQ0VQVCk7Ci0rCQl9Ci0gCi0gCQkvKiBTdGlsbCB3YWl0aW5nIGZvciBhY2NlcHQgY2FuY2VsIGNvbXBsZXRpb24uICovCi0tCQlpZiAoISAoY2xpZW50LT5uYWNjZXB0cyA9PSAwKSkKLSsJCWlmICghIChjbGllbnQtPm5hY2NlcHRzID09IDApKSB7Ci0gCQkJcmV0dXJuICh0cnVlKTsKLSsJCX0KLSAKLSAJCS8qIEFjY2VwdCBjYW5jZWwgaXMgY29tcGxldGUuICovCi0tCQlpZiAoY2xpZW50LT5ucmVjdnMgPiAwKQotKwkJaWYgKGNsaWVudC0+bnJlY3ZzID4gMCkgewotIAkJCWlzY19zb2NrZXRfY2FuY2VsKGNsaWVudC0+dWRwc29ja2V0LCBjbGllbnQtPnRhc2ssCi0gCQkJCQkgIElTQ19TT0NLQ0FOQ0VMX1JFQ1YpOwotKwkJfQotIAotIAkJLyogU3RpbGwgd2FpdGluZyBmb3IgcmVjdiBjYW5jZWwgY29tcGxldGlvbi4gKi8KLS0JCWlmICghIChjbGllbnQtPm5yZWN2cyA9PSAwKSkKLSsJCWlmICghIChjbGllbnQtPm5yZWN2cyA9PSAwKSkgewotIAkJCXJldHVybiAodHJ1ZSk7Ci0rCQl9Ci0gCi0gCQkvKiBTdGlsbCB3YWl0aW5nIGZvciBjb250cm9sIGV2ZW50IHRvIGJlIGRlbGl2ZXJlZCAqLwotLQkJaWYgKGNsaWVudC0+bmN0bHMgPiAwKQotKwkJaWYgKGNsaWVudC0+bmN0bHMgPiAwKSB7Ci0gCQkJcmV0dXJuICh0cnVlKTsKLS0KLS0JCS8qIERlYWN0aXZhdGUgdGhlIGNsaWVudC4gKi8KLS0JCWlmIChjbGllbnQtPmludGVyZmFjZSkKLS0JCQluc19pbnRlcmZhY2VfZGV0YWNoKCZjbGllbnQtPmludGVyZmFjZSk7Ci0rCQl9Ci0gCi0gCQlJTlNJU1QoY2xpZW50LT5uYWNjZXB0cyA9PSAwKTsKLSAJCUlOU0lTVChjbGllbnQtPnJlY3Vyc2lvbnF1b3RhID09IE5VTEwpOwotLQkJaWYgKGNsaWVudC0+dGNwbGlzdGVuZXIgIT0gTlVMTCkKLSsJCWlmIChjbGllbnQtPnRjcGxpc3RlbmVyICE9IE5VTEwpIHsKLSAJCQlpc2Nfc29ja2V0X2RldGFjaCgmY2xpZW50LT50Y3BsaXN0ZW5lcik7Ci0gCi0tCQlpZiAoY2xpZW50LT51ZHBzb2NrZXQgIT0gTlVMTCkKLSsJCQlpZiAoY2xpZW50LT50Y3BhY3RpdmUpIHsKLSsJCQkJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwkJCQlJTlNJU1QoY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUgPiAwKTsKLSsJCQkJY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUtLTsKLSsJCQkJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCQkJCWNsaWVudC0+dGNwYWN0aXZlID0gZmFsc2U7Ci0rCQkJfQotKwkJfQotKwkJaWYgKGNsaWVudC0+dWRwc29ja2V0ICE9IE5VTEwpIHsKLSAJCQlpc2Nfc29ja2V0X2RldGFjaCgmY2xpZW50LT51ZHBzb2NrZXQpOwotKwkJfQotIAotLQkJaWYgKGNsaWVudC0+ZGlzcGF0Y2ggIT0gTlVMTCkKLSsJCS8qIERlYWN0aXZhdGUgdGhlIGNsaWVudC4gKi8KLSsJCWlmIChjbGllbnQtPmludGVyZmFjZSAhPSBOVUxMKSB7Ci0rCQkJbnNfaW50ZXJmYWNlX2RldGFjaCgmY2xpZW50LT5pbnRlcmZhY2UpOwotKwkJfQotKwotKwkJaWYgKGNsaWVudC0+ZGlzcGF0Y2ggIT0gTlVMTCkgewotIAkJCWRuc19kaXNwYXRjaF9kZXRhY2goJmNsaWVudC0+ZGlzcGF0Y2gpOwotKwkJfQotIAotIAkJY2xpZW50LT5hdHRyaWJ1dGVzID0gMDsKLSAJCWNsaWVudC0+bW9ydGFsID0gZmFsc2U7Ci1AQCAtNTUxLDEwICs2MDcsMTMgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkJY2xpZW50LT5uZXdzdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX01BWDsKLSAJCQlpZiAoIW5zX2dfY2xpZW50dGVzdCAmJiBtYW5hZ2VyICE9IE5VTEwgJiYKLSAJCQkgICAgIW1hbmFnZXItPmV4aXRpbmcpCi0rCQkJewotIAkJCQlJU0NfUVVFVUVfUFVTSChtYW5hZ2VyLT5pbmFjdGl2ZSwgY2xpZW50LAotIAkJCQkJICAgICAgIGlsaW5rKTsKLS0JCQlpZiAoY2xpZW50LT5uZWVkc2h1dGRvd24pCi0rCQkJfQotKwkJCWlmIChjbGllbnQtPm5lZWRzaHV0ZG93bikgewotIAkJCQlpc2NfdGFza19zaHV0ZG93bihjbGllbnQtPnRhc2spOwotKwkJCX0KLSAJCQlyZXR1cm4gKHRydWUpOwotIAkJfQotIAl9Ci1AQCAtNjc1LDcgKzczNCw2IEBAIGNsaWVudF9zdGFydChpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJfQotIH0KLSAKLS0KLSAvKiUKLSAgKiBUaGUgY2xpZW50J3MgdGFzayBoYXMgcmVjZWl2ZWQgYSBzaHV0ZG93biBldmVudC4KLSAgKi8KLUBAIC0yNTA3LDE3ICsyNTY1LDEyIEBAIGNsaWVudF9yZXF1ZXN0KGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkvKgotIAkgKiBQaXBlbGluZSBUQ1AgcXVlcnkgcHJvY2Vzc2luZy4KLSAJICovCi0tCWlmIChjbGllbnQtPm1lc3NhZ2UtPm9wY29kZSAhPSBkbnNfb3Bjb2RlX3F1ZXJ5KQotKwlpZiAoY2xpZW50LT5tZXNzYWdlLT5vcGNvZGUgIT0gZG5zX29wY29kZV9xdWVyeSkgewotIAkJY2xpZW50LT5waXBlbGluZWQgPSBmYWxzZTsKLSsJfQotIAlpZiAoVENQX0NMSUVOVChjbGllbnQpICYmIGNsaWVudC0+cGlwZWxpbmVkKSB7Ci0tCQlyZXN1bHQgPSBpc2NfcXVvdGFfcmVzZXJ2ZSgmbnNfZ19zZXJ2ZXItPnRjcHF1b3RhKTsKLS0JCWlmIChyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUykKLS0JCQlyZXN1bHQgPSBuc19jbGllbnRfcmVwbGFjZShjbGllbnQpOwotKwkJcmVzdWx0ID0gbnNfY2xpZW50X3JlcGxhY2UoY2xpZW50KTsKLSAJCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotLQkJCW5zX2NsaWVudF9sb2coY2xpZW50LCBOU19MT0dDQVRFR09SWV9DTElFTlQsCi0tCQkJCSAgICAgIE5TX0xPR01PRFVMRV9DTElFTlQsIElTQ19MT0dfV0FSTklORywKLS0JCQkJICAgICAgIm5vIG1vcmUgVENQIGNsaWVudHMocmVhZCk6ICVzIiwKLS0JCQkJICAgICAgaXNjX3Jlc3VsdF90b3RleHQocmVzdWx0KSk7Ci0gCQkJY2xpZW50LT5waXBlbGluZWQgPSBmYWxzZTsKLSAJCX0KLSAJfQotQEAgLTMwODcsNiArMzE0MCw3IEBAIGNsaWVudF9jcmVhdGUobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2NsaWVudF90ICoqY2xpZW50cCkgewotIAljbGllbnQtPmZpbHRlcl9hYWFhID0gZG5zX2FhYWFfb2s7Ci0gI2VuZGlmCi0gCWNsaWVudC0+bmVlZHNodXRkb3duID0gbnNfZ19jbGllbnR0ZXN0OwotKwljbGllbnQtPnRjcGFjdGl2ZSA9IGZhbHNlOwotIAotIAlJU0NfRVZFTlRfSU5JVCgmY2xpZW50LT5jdGxldmVudCwgc2l6ZW9mKGNsaWVudC0+Y3RsZXZlbnQpLCAwLCBOVUxMLAotIAkJICAgICAgIE5TX0VWRU5UX0NMSUVOVENPTlRST0wsIGNsaWVudF9zdGFydCwgY2xpZW50LCBjbGllbnQsCi1AQCAtMzEwMCw2ICszMTU0LDcgQEAgY2xpZW50X2NyZWF0ZShuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfY2xpZW50X3QgKipjbGllbnRwKSB7Ci0gCWNsaWVudC0+Zm9ybWVycmNhY2hlLmlkID0gMDsKLSAJSVNDX0xJTktfSU5JVChjbGllbnQsIGxpbmspOwotIAlJU0NfTElOS19JTklUKGNsaWVudCwgcmxpbmspOwotKwlJU0NfTElOS19JTklUKGNsaWVudCwgZ2xpbmspOwotIAlJU0NfUUxJTktfSU5JVChjbGllbnQsIGlsaW5rKTsKLSAJY2xpZW50LT5rZXl0YWcgPSBOVUxMOwotIAljbGllbnQtPmtleXRhZ19sZW4gPSAwOwotQEAgLTMxOTMsMTIgKzMyNDgsMTkgQEAgY2xpZW50X25ld2Nvbm4oaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCi0gCUlOU0lTVChjbGllbnQtPnN0YXRlID09IE5TX0NMSUVOVFNUQVRFX1JFQURZKTsKLSAKLSsJLyoKLSsJICogVGhlIGFjY2VwdCgpIHdhcyBzdWNjZXNzZnVsIGFuZCB3ZSdyZSBub3cgZXN0YWJsaXNoaW5nIGEgbmV3Ci0rCSAqIGNvbm5lY3Rpb24uIFdlIG5lZWQgdG8gbWFrZSBub3RlIG9mIGl0IGluIHRoZSBjbGllbnQgYW5kCi0rCSAqIGludGVyZmFjZSBvYmplY3RzIHNvIGNsaWVudCBvYmplY3RzIGNhbiBkbyB0aGUgcmlnaHQgdGhpbmcKLSsJICogd2hlbiBnb2luZyBpbmFjdGl2ZSBpbiBleGl0X2NoZWNrKCkgKHNlZSBjb21tZW50cyBpbgotKwkgKiBjbGllbnRfYWNjZXB0KCkgZm9yIGRldGFpbHMpLgotKwkgKi8KLSAJSU5TSVNUKGNsaWVudC0+bmFjY2VwdHMgPT0gMSk7Ci0gCWNsaWVudC0+bmFjY2VwdHMtLTsKLSAKLSAJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQlJTlNJU1QoY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BjdXJyZW50ID4gMCk7Ci0tCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwY3VycmVudC0tOwotKwlJTlNJU1QoY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcgPiAwKTsKLSsJY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmctLTsKLSAJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0gCi0gCS8qCi1AQCAtMzIzMiw2ICszMjk0LDkgQEAgY2xpZW50X25ld2Nvbm4oaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCQkJICAgICAgTlNfTE9HTU9EVUxFX0NMSUVOVCwgSVNDX0xPR19ERUJVRygzKSwKLSAJCQkgICAgICAiYWNjZXB0IGZhaWxlZDogJXMiLAotIAkJCSAgICAgIGlzY19yZXN1bHRfdG90ZXh0KG5ldmVudC0+cmVzdWx0KSk7Ci0rCQlpZiAoY2xpZW50LT50Y3BxdW90YSAhPSBOVUxMKSB7Ci0rCQkJaXNjX3F1b3RhX2RldGFjaCgmY2xpZW50LT50Y3BxdW90YSk7Ci0rCQl9Ci0gCX0KLSAKLSAJaWYgKGV4aXRfY2hlY2soY2xpZW50KSkKLUBAIC0zMjcwLDE4ICszMzM1LDEyIEBAIGNsaWVudF9uZXdjb25uKGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkJICogZGVueSBzZXJ2aWNlIHRvIGxlZ2l0aW1hdGUgVENQIGNsaWVudHMuCi0gCQkgKi8KLSAJCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci0tCQlyZXN1bHQgPSBpc2NfcXVvdGFfYXR0YWNoKCZuc19nX3NlcnZlci0+dGNwcXVvdGEsCi0tCQkJCQkgICZjbGllbnQtPnRjcHF1b3RhKTsKLS0JCWlmIChyZXN1bHQgPT0gSVNDX1JfU1VDQ0VTUykKLS0JCQlyZXN1bHQgPSBuc19jbGllbnRfcmVwbGFjZShjbGllbnQpOwotLQkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0tCQkJbnNfY2xpZW50X2xvZyhjbGllbnQsIE5TX0xPR0NBVEVHT1JZX0NMSUVOVCwKLS0JCQkJICAgICAgTlNfTE9HTU9EVUxFX0NMSUVOVCwgSVNDX0xPR19XQVJOSU5HLAotLQkJCQkgICAgICAibm8gbW9yZSBUQ1AgY2xpZW50cyhhY2NlcHQpOiAlcyIsCi0tCQkJCSAgICAgIGlzY19yZXN1bHRfdG90ZXh0KHJlc3VsdCkpOwotLQkJfSBlbHNlIGlmIChuc19nX3NlcnZlci0+a2VlcHJlc3BvcmRlciA9PSBOVUxMIHx8Ci0tCQkJICAgIWFsbG93ZWQoJm5ldGFkZHIsIE5VTEwsIE5VTEwsIDAsIE5VTEwsCi0tCQkJCSAgICBuc19nX3NlcnZlci0+a2VlcHJlc3BvcmRlcikpIHsKLSsJCXJlc3VsdCA9IG5zX2NsaWVudF9yZXBsYWNlKGNsaWVudCk7Ci0rCQlpZiAocmVzdWx0ID09IElTQ19SX1NVQ0NFU1MgJiYKLSsJCSAgICAoY2xpZW50LT5zY3R4LT5rZWVwcmVzcG9yZGVyID09IE5VTEwgfHwKLSsJCSAgICAgIWFsbG93ZWQoJm5ldGFkZHIsIE5VTEwsIE5VTEwsIDAsIE5VTEwsCi0rCQkJICAgICAgbnNfZ19zZXJ2ZXItPmtlZXByZXNwb3JkZXIpKSkKLSsJCXsKLSAJCQljbGllbnQtPnBpcGVsaW5lZCA9IHRydWU7Ci0gCQl9Ci0gCi1AQCAtMzI5OCwxMiArMzM1Nyw4MCBAQCBjbGllbnRfYWNjZXB0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAKLSAJQ1RSQUNFKCJhY2NlcHQiKTsKLSAKLSsJLyoKLSsJICogVGhlIHRjcHF1b3RhIG9iamVjdCBjYW4gb25seSBiZSBzaW11bHRhbmVvdXNseSByZWZlcmVuY2VkIGEKLSsJICogcHJlLWRlZmluZWQgbnVtYmVyIG9mIHRpbWVzOyB0aGlzIGlzIGNvbmZpZ3VyZWQgYnkgJ3RjcC1jbGllbnRzJwotKwkgKiBpbiBuYW1lZC5jb25mLiBJZiB3ZSBjYW4ndCBhdHRhY2ggdG8gaXQgaGVyZSwgdGhhdCBtZWFucyB0aGUgVENQCi0rCSAqIGNsaWVudCBxdW90YSBoYXMgYmVlbiBleGNlZWRlZC4KLSsJICovCi0rCXJlc3VsdCA9IGlzY19xdW90YV9hdHRhY2goJmNsaWVudC0+c2N0eC0+dGNwcXVvdGEsCi0rCQkJCSAgJmNsaWVudC0+dGNwcXVvdGEpOwotKwlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpIHsKLSsJCQlib29sIGV4aXQ7Ci0rCi0rCQkJbnNfY2xpZW50X2xvZyhjbGllbnQsIE5TX0xPR0NBVEVHT1JZX0NMSUVOVCwKLSsJCQkJICAgICAgTlNfTE9HTU9EVUxFX0NMSUVOVCwgSVNDX0xPR19ERUJVRygxKSwKLSsJCQkJICAgICAgIm5vIG1vcmUgVENQIGNsaWVudHM6ICVzIiwKLSsJCQkJICAgICAgaXNjX3Jlc3VsdF90b3RleHQocmVzdWx0KSk7Ci0rCi0rCQkJLyoKLSsJCQkgKiBXZSBoYXZlIGV4Y2VlZGVkIHRoZSBzeXN0ZW0td2lkZSBUQ1AgY2xpZW50Ci0rCQkJICogcXVvdGEuICBCdXQsIHdlIGNhbid0IGp1c3QgYmxvY2sgdGhpcyBhY2NlcHQKLSsJCQkgKiBpbiBhbGwgY2FzZXMsIGJlY2F1c2UgaWYgd2UgZGlkLCBhIGhlYXZ5IFRDUAotKwkJCSAqIGxvYWQgb24gb3RoZXIgaW50ZXJmYWNlcyBtaWdodCBjYXVzZSB0aGlzCi0rCQkJICogaW50ZXJmYWNlIHRvIGJlIHN0YXJ2ZWQsIHdpdGggbm8gY2xpZW50cyBhYmxlCi0rCQkJICogdG8gYWNjZXB0IG5ldyBjb25uZWN0aW9ucy4KLSsJCQkgKgotKwkJCSAqIFNvLCB3ZSBjaGVjayBoZXJlIHRvIHNlZSBpZiBhbnkgb3RoZXIgY2xpZW50Ci0rCQkJICogaXMgYWxyZWFkeSBzZXJ2aWNpbmcgVENQIHF1ZXJpZXMgb24gdGhpcwotKwkJCSAqIGludGVyZmFjZSAod2hldGhlciBhY2NlcHRpbmcsIHJlYWRpbmcsIG9yCi0rCQkJICogcHJvY2Vzc2luZykuCi0rCQkJICoKLSsJCQkgKiBJZiBzbywgdGhlbiBpdCdzIG9rYXkgKm5vdCogdG8gY2FsbAotKwkJCSAqIGFjY2VwdCAtIHdlIGNhbiBsZXQgdGhpcyBjbGllbnQgdG8gZ28gaW5hY3RpdmUKLSsJCQkgKiBhbmQgdGhlIG90aGVyIG9uZSBoYW5kbGUgdGhlIG5leHQgY29ubmVjdGlvbgotKwkJCSAqIHdoZW4gaXQncyByZWFkeS4KLSsJCQkgKgotKwkJCSAqIEJ1dCBpZiBub3QsIHRoZW4gd2UgbmVlZCB0byBiZSBhIGxpdHRsZSBiaXQKLSsJCQkgKiBmbGV4aWJsZSBhYm91dCB0aGUgcXVvdGEuIFdlIGFsbG93ICpvbmUqIGV4dHJhCi0rCQkJICogVENQIGNsaWVudCB0aHJvdWdoLCB0byBlbnN1cmUgd2UncmUgbGlzdGVuaW5nIG9uCi0rCQkJICogZXZlcnkgaW50ZXJmYWNlLgotKwkJCSAqCi0rCQkJICogKE5vdGU6IEluIHByYWN0aWNlIHRoaXMgbWVhbnMgdGhhdCB0aGUgKnJlYWwqCi0rCQkJICogVENQIGNsaWVudCBxdW90YSBpcyB0Y3AtY2xpZW50cyBwbHVzIHRoZSBudW1iZXIKLSsJCQkgKiBvZiBpbnRlcmZhY2VzLikKLSsJCQkgKi8KLSsJCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCQkJZXhpdCA9IChjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSA+IDApOwotKwkJCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwotKwkJCWlmIChleGl0KSB7Ci0rCQkJCWNsaWVudC0+bmV3c3RhdGUgPSBOU19DTElFTlRTVEFURV9JTkFDVElWRTsKLSsJCQkJKHZvaWQpZXhpdF9jaGVjayhjbGllbnQpOwotKwkJCQlyZXR1cm47Ci0rCQkJfQotKwl9Ci0rCi0rCS8qCi0rCSAqIEJ5IGluY3JlbWVudGluZyB0aGUgaW50ZXJmYWNlJ3MgbnRjcGFjdGl2ZSBjb3VudGVyIHdlIHNpZ25hbAotKwkgKiB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjbGllbnQgc2VydmljaW5nIFRDUCBxdWVyaWVzIGZvciB0aGUKLSsJICogaW50ZXJmYWNlLgotKwkgKgotKwkgKiBXZSBhbHNvIG1ha2Ugbm90ZSBvZiB0aGUgZmFjdCBpbiB0aGUgY2xpZW50IGl0c2VsZiB3aXRoIHRoZQotKwkgKiB0Y3BhY3RpdmUgZmxhZy4gVGhpcyBlbnN1cmVzIHByb3BlciBhY2NvdW50aW5nIGJ5IHByZXZlbnRpbmcKLSsJICogdXMgZnJvbSBhY2NpZGVudGFsbHkgaW5jcmVtZW50aW5nIG9yIGRlY3JlbWVudGluZyBudGNwYWN0aXZlCi0rCSAqIG1vcmUgdGhhbiBvbmNlIHBlciBjbGllbnQgb2JqZWN0LgotKwkgKi8KLSsJaWYgKCFjbGllbnQtPnRjcGFjdGl2ZSkgewotKwkJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwkJY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUrKzsKLSsJCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwkJY2xpZW50LT50Y3BhY3RpdmUgPSB0cnVlOwotKwl9Ci0rCi0gCXJlc3VsdCA9IGlzY19zb2NrZXRfYWNjZXB0KGNsaWVudC0+dGNwbGlzdGVuZXIsIGNsaWVudC0+dGFzaywKLSAJCQkJICAgY2xpZW50X25ld2Nvbm4sIGNsaWVudCk7Ci0gCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotLQkJVU5FWFBFQ1RFRF9FUlJPUihfX0ZJTEVfXywgX19MSU5FX18sCi0tCQkJCSAiaXNjX3NvY2tldF9hY2NlcHQoKSBmYWlsZWQ6ICVzIiwKLS0JCQkJIGlzY19yZXN1bHRfdG90ZXh0KHJlc3VsdCkpOwotIAkJLyoKLSAJCSAqIFhYWFJUSCAgV2hhdCBzaG91bGQgd2UgZG8/ICBXZSdyZSB0cnlpbmcgdG8gYWNjZXB0IGJ1dAotIAkJICoJICAgaXQgZGlkbid0IHdvcmsuICBJZiB3ZSBqdXN0IGdpdmUgdXAsIHRoZW4gVENQCi1AQCAtMzMxMSwxMiArMzQzOCwzOSBAQCBjbGllbnRfYWNjZXB0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCSAqCi0gCQkgKgkgICBGb3Igbm93LCB3ZSBqdXN0IGdvIGlkbGUuCi0gCQkgKi8KLSsJCVVORVhQRUNURURfRVJST1IoX19GSUxFX18sIF9fTElORV9fLAotKwkJCQkgImlzY19zb2NrZXRfYWNjZXB0KCkgZmFpbGVkOiAlcyIsCi0rCQkJCSBpc2NfcmVzdWx0X3RvdGV4dChyZXN1bHQpKTsKLSsJCWlmIChjbGllbnQtPnRjcHF1b3RhICE9IE5VTEwpIHsKLSsJCQlpc2NfcXVvdGFfZGV0YWNoKCZjbGllbnQtPnRjcHF1b3RhKTsKLSsJCX0KLSAJCXJldHVybjsKLSAJfQotKwotKwkvKgotKwkgKiBUaGUgY2xpZW50J3MgJ25hY2NlcHRzJyBjb3VudGVyIGluZGljYXRlcyB0aGF0IHRoaXMgY2xpZW50IGhhcwotKwkgKiBjYWxsZWQgYWNjZXB0KCkgYW5kIGlzIHdhaXRpbmcgZm9yIGEgbmV3IGNvbm5lY3Rpb24uIEl0IHNob3VsZAotKwkgKiBuZXZlciBleGNlZWQgMS4KLSsJICovCi0gCUlOU0lTVChjbGllbnQtPm5hY2NlcHRzID09IDApOwotIAljbGllbnQtPm5hY2NlcHRzKys7Ci0rCi0rCS8qCi0rCSAqIFRoZSBpbnRlcmZhY2UncyAnbnRjcGFjY2VwdGluZycgY291bnRlciBpcyBpbmNyZW1lbnRlZCB3aGVuCi0rCSAqIGFueSBjbGllbnQgY2FsbHMgYWNjZXB0KCksIGFuZCBkZWNyZW1lbnRlZCBpbiBjbGllbnRfbmV3Y29ubigpCi0rCSAqIG9uY2UgdGhlIGNvbm5lY3Rpb24gaXMgZXN0YWJsaXNoZWQuCi0rCSAqCi0rCSAqIFdoZW4gdGhlIGNsaWVudCBvYmplY3QgaXMgc2h1dHRpbmcgZG93biBhZnRlciBoYW5kbGluZyBhIFRDUAotKwkgKiByZXF1ZXN0IChzZWUgZXhpdF9jaGVjaygpKSwgaXQgbG9va3MgdG8gc2VlIHdoZXRoZXIgdGhpcyB2YWx1ZSBpcwotKwkgKiBub24temVyby4gSWYgc28sIHRoYXQgbWVhbnMgYW5vdGhlciBjbGllbnQgaGFzIGFscmVhZHkgY2FsbGVkCi0rCSAqIGFjY2VwdCgpIGFuZCBpcyB3YWl0aW5nIHRvIGVzdGFibGlzaCB0aGUgbmV4dCBjb25uZWN0aW9uLCB3aGljaAotKwkgKiBtZWFucyB0aGUgZmlyc3QgY2xpZW50IGlzIGZyZWUgdG8gZ28gaW5hY3RpdmUuIE90aGVyd2lzZSwKLSsJICogdGhlIGZpcnN0IGNsaWVudCBtdXN0IGNvbWUgYmFjayBhbmQgY2FsbCBhY2NlcHQoKSBhZ2FpbjsgdGhpcwotKwkgKiBndWFyYW50ZWVzIHRoZXJlIHdpbGwgYWx3YXlzIGJlIGF0IGxlYXN0IG9uZSBjbGllbnQgbGlzdGVuaW5nCi0rCSAqIGZvciBuZXcgVENQIGNvbm5lY3Rpb25zIG9uIGVhY2ggaW50ZXJmYWNlLgotKwkgKi8KLSAJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQljbGllbnQtPmludGVyZmFjZS0+bnRjcGN1cnJlbnQrKzsKLSsJY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcrKzsKLSAJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0gfQotIAotQEAgLTMzOTAsMTMgKzM1NDQsMTQgQEAgbnNfY2xpZW50X3JlcGxhY2UobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAl0Y3AgPSBUQ1BfQ0xJRU5UKGNsaWVudCk7Ci0gCWlmICh0Y3AgJiYgY2xpZW50LT5waXBlbGluZWQpIHsKLSAJCXJlc3VsdCA9IGdldF93b3JrZXIoY2xpZW50LT5tYW5hZ2VyLCBjbGllbnQtPmludGVyZmFjZSwKLS0JCQkJICAgIGNsaWVudC0+dGNwc29ja2V0KTsKLSsJCQkJICAgIGNsaWVudC0+dGNwc29ja2V0LCBjbGllbnQpOwotIAl9IGVsc2UgewotIAkJcmVzdWx0ID0gZ2V0X2NsaWVudChjbGllbnQtPm1hbmFnZXIsIGNsaWVudC0+aW50ZXJmYWNlLAotIAkJCQkgICAgY2xpZW50LT5kaXNwYXRjaCwgdGNwKTsKLSAJfQotLQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpCi0rCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotIAkJcmV0dXJuIChyZXN1bHQpOwotKwl9Ci0gCi0gCS8qCi0gCSAqIFRoZSByZXNwb25zaWJpbGl0eSBmb3IgbGlzdGVuaW5nIGZvciBuZXcgcmVxdWVzdHMgaXMgaGVyZWJ5Ci1AQCAtMzU4NSw2ICszNzQwLDcgQEAgZ2V0X2NsaWVudChuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwKLSAJCWNsaWVudC0+YXR0cmlidXRlcyB8PSBOU19DTElFTlRBVFRSX1RDUDsKLSAJCWlzY19zb2NrZXRfYXR0YWNoKGlmcC0+dGNwc29ja2V0LAotIAkJCQkgICZjbGllbnQtPnRjcGxpc3RlbmVyKTsKLSsKLSAJfSBlbHNlIHsKLSAJCWlzY19zb2NrZXRfdCAqc29jazsKLSAKLUBAIC0zNjAyLDcgKzM3NTgsOCBAQCBnZXRfY2xpZW50KG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLAotIH0KLSAKLSBzdGF0aWMgaXNjX3Jlc3VsdF90Ci0tZ2V0X3dvcmtlcihuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwgaXNjX3NvY2tldF90ICpzb2NrKQotK2dldF93b3JrZXIobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsIGlzY19zb2NrZXRfdCAqc29jaywKLSsJICAgbnNfY2xpZW50X3QgKm9sZGNsaWVudCkKLSB7Ci0gCWlzY19yZXN1bHRfdCByZXN1bHQgPSBJU0NfUl9TVUNDRVNTOwotIAlpc2NfZXZlbnRfdCAqZXY7Ci1AQCAtMzYxMCw2ICszNzY3LDcgQEAgZ2V0X3dvcmtlcihuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwgaXNjX3NvY2tldF90ICpzb2NrKQotIAlNVFJBQ0UoImdldCB3b3JrZXIiKTsKLSAKLSAJUkVRVUlSRShtYW5hZ2VyICE9IE5VTEwpOwotKwlSRVFVSVJFKG9sZGNsaWVudCAhPSBOVUxMKTsKLSAKLSAJaWYgKG1hbmFnZXItPmV4aXRpbmcpCi0gCQlyZXR1cm4gKElTQ19SX1NIVVRUSU5HRE9XTik7Ci1AQCAtMzY0Miw3ICszODAwLDI4IEBAIGdldF93b3JrZXIobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsIGlzY19zb2NrZXRfdCAqc29jaykKLSAJbnNfaW50ZXJmYWNlX2F0dGFjaChpZnAsICZjbGllbnQtPmludGVyZmFjZSk7Ci0gCWNsaWVudC0+bmV3c3RhdGUgPSBjbGllbnQtPnN0YXRlID0gTlNfQ0xJRU5UU1RBVEVfV09SS0lORzsKLSAJSU5TSVNUKGNsaWVudC0+cmVjdXJzaW9ucXVvdGEgPT0gTlVMTCk7Ci0tCWNsaWVudC0+dGNwcXVvdGEgPSAmbnNfZ19zZXJ2ZXItPnRjcHF1b3RhOwotKwotKwkvKgotKwkgKiBUcmFuc2ZlciBUQ1AgcXVvdGEgdG8gdGhlIG5ldyBjbGllbnQuCi0rCSAqLwotKwlJTlNJU1QoY2xpZW50LT50Y3BxdW90YSA9PSBOVUxMKTsKLSsJSU5TSVNUKG9sZGNsaWVudC0+dGNwcXVvdGEgIT0gTlVMTCk7Ci0rCWNsaWVudC0+dGNwcXVvdGEgPSBvbGRjbGllbnQtPnRjcHF1b3RhOwotKwlvbGRjbGllbnQtPnRjcHF1b3RhID0gTlVMTDsKLSsKLSsJLyoKLSsJICogTGluayB0byBhIHBpcGVsaW5lIGdyb3VwLCBjcmVhdGluZyBpdCBpZiBuZWVkZWQuCi0rCSAqLwotKwlpZiAoIUlTQ19MSU5LX0xJTktFRChvbGRjbGllbnQsIGdsaW5rKSkgewotKwkJb2xkY2xpZW50LT5nbGluay5uZXh0ID0gTlVMTDsKLSsJCW9sZGNsaWVudC0+Z2xpbmsucHJldiA9IE5VTEw7Ci0rCX0KLSsJY2xpZW50LT5nbGluay5uZXh0ID0gb2xkY2xpZW50LT5nbGluay5uZXh0OwotKwljbGllbnQtPmdsaW5rLnByZXYgPSBvbGRjbGllbnQ7Ci0rCWlmIChvbGRjbGllbnQtPmdsaW5rLm5leHQgIT0gTlVMTCkgewotKwkJb2xkY2xpZW50LT5nbGluay5uZXh0LT5nbGluay5wcmV2ID0gY2xpZW50OwotKwl9Ci0rCW9sZGNsaWVudC0+Z2xpbmsubmV4dCA9IGNsaWVudDsKLSAKLSAJY2xpZW50LT5kc2NwID0gaWZwLT5kc2NwOwotIAotQEAgLTM2NTYsNiArMzgzNSwxMiBAQCBnZXRfd29ya2VyKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLCBpc2Nfc29ja2V0X3QgKnNvY2spCi0gCSh2b2lkKWlzY19zb2NrZXRfZ2V0cGVlcm5hbWUoY2xpZW50LT50Y3Bzb2NrZXQsICZjbGllbnQtPnBlZXJhZGRyKTsKLSAJY2xpZW50LT5wZWVyYWRkcl92YWxpZCA9IHRydWU7Ci0gCi0rCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUrKzsKLSsJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCi0rCWNsaWVudC0+dGNwYWN0aXZlID0gdHJ1ZTsKLSsKLSAJSU5TSVNUKGNsaWVudC0+dGNwbXNnX3ZhbGlkID09IGZhbHNlKTsKLSAJZG5zX3RjcG1zZ19pbml0KGNsaWVudC0+bWN0eCwgY2xpZW50LT50Y3Bzb2NrZXQsICZjbGllbnQtPnRjcG1zZyk7Ci0gCWNsaWVudC0+dGNwbXNnX3ZhbGlkID0gdHJ1ZTsKLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaCBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oCi1pbmRleCBiMjNhN2IxOTFkLi4xZjc5NzNmOWM1IDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmgKLSsrKyBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oCi1AQCAtOTQsNyArOTQsOCBAQCBzdHJ1Y3QgbnNfY2xpZW50IHsKLSAJaW50CQkJbnVwZGF0ZXM7Ci0gCWludAkJCW5jdGxzOwotIAlpbnQJCQlyZWZlcmVuY2VzOwotLQlib29sCQluZWVkc2h1dGRvd247IAkvKgotKwlib29sCQkJdGNwYWN0aXZlOwotKwlib29sCQkJbmVlZHNodXRkb3duOyAJLyoKLSAJCQkJCQkgKiBVc2VkIGJ5IGNsaWVudHRlc3QgdG8gZ2V0Ci0gCQkJCQkJICogdGhlIGNsaWVudCB0byBnbyBmcm9tCi0gCQkJCQkJICogaW5hY3RpdmUgdG8gZnJlZSBzdGF0ZQotQEAgLTEzMCw5ICsxMzEsOSBAQCBzdHJ1Y3QgbnNfY2xpZW50IHsKLSAJaXNjX3N0ZHRpbWVfdAkJbm93OwotIAlpc2NfdGltZV90CQl0bm93OwotIAlkbnNfbmFtZV90CQlzaWduZXJuYW1lOyAgIC8qJTwgW1RdU0lHIGtleSBuYW1lICovCi0tCWRuc19uYW1lX3QgKgkJc2lnbmVyOwkgICAgICAvKiU8IE5VTEwgaWYgbm90IHZhbGlkIHNpZyAqLwotLQlib29sCQltb3J0YWw7CSAgICAgIC8qJTwgRGllIGFmdGVyIGhhbmRsaW5nIHJlcXVlc3QgKi8KLS0JYm9vbAkJcGlwZWxpbmVkOyAgIC8qJTwgVENQIHF1ZXJpZXMgbm90IGluIHNlcXVlbmNlICovCi0rCWRuc19uYW1lX3QJCSpzaWduZXI7ICAgICAgLyolPCBOVUxMIGlmIG5vdCB2YWxpZCBzaWcgKi8KLSsJYm9vbAkJCW1vcnRhbDsJICAgICAgLyolPCBEaWUgYWZ0ZXIgaGFuZGxpbmcgcmVxdWVzdCAqLwotKwlib29sCQkJcGlwZWxpbmVkOyAgIC8qJTwgVENQIHF1ZXJpZXMgbm90IGluIHNlcXVlbmNlICovCi0gCWlzY19xdW90YV90CQkqdGNwcXVvdGE7Ci0gCWlzY19xdW90YV90CQkqcmVjdXJzaW9ucXVvdGE7Ci0gCW5zX2ludGVyZmFjZV90CQkqaW50ZXJmYWNlOwotQEAgLTE0Myw4ICsxNDQsOCBAQCBzdHJ1Y3QgbnNfY2xpZW50IHsKLSAJaXNjX3NvY2thZGRyX3QJCWRlc3Rzb2NrYWRkcjsKLSAKLSAJaXNjX25ldGFkZHJfdAkJZWNzX2FkZHI7CS8qJTwgRUROUyBjbGllbnQgc3VibmV0ICovCi0tCXVpbnQ4X3QJCWVjc19hZGRybGVuOwotLQl1aW50OF90CQllY3Nfc2NvcGU7Ci0rCXVpbnQ4X3QJCQllY3NfYWRkcmxlbjsKLSsJdWludDhfdAkJCWVjc19zY29wZTsKLSAKLSAJc3RydWN0IGluNl9wa3RpbmZvCXBrdGluZm87Ci0gCWlzY19kc2NwX3QJCWRzY3A7Ci1AQCAtMTY2LDYgKzE2Nyw3IEBAIHN0cnVjdCBuc19jbGllbnQgewotIAotIAlJU0NfTElOSyhuc19jbGllbnRfdCkJbGluazsKLSAJSVNDX0xJTksobnNfY2xpZW50X3QpCXJsaW5rOwotKwlJU0NfTElOSyhuc19jbGllbnRfdCkJZ2xpbms7Ci0gCUlTQ19RTElOSyhuc19jbGllbnRfdCkJaWxpbms7Ci0gCXVuc2lnbmVkIGNoYXIJCWNvb2tpZVs4XTsKLSAJdWludDMyX3QJCWV4cGlyZTsKLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9pbnRlcmZhY2VtZ3IuaCBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oCi1pbmRleCA3ZDE4ODNlMWU4Li42MWIwODgyNmE2IDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmgKLSsrKyBiL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oCi1AQCAtNzcsOSArNzcsMTQgQEAgc3RydWN0IG5zX2ludGVyZmFjZSB7Ci0gCQkJCQkJLyolPCBVRFAgZGlzcGF0Y2hlcnMuICovCi0gCWlzY19zb2NrZXRfdCAqCQl0Y3Bzb2NrZXQ7CS8qJTwgVENQIHNvY2tldC4gKi8KLSAJaXNjX2RzY3BfdAkJZHNjcDsJCS8qJTwgImxpc3Rlbi1vbiIgRFNDUCB2YWx1ZSAqLwotLQlpbnQJCQludGNwdGFyZ2V0OwkvKiU8IERlc2lyZWQgbnVtYmVyIG9mIGNvbmN1cnJlbnQKLS0JCQkJCQkgICAgIFRDUCBhY2NlcHRzICovCi0tCWludAkJCW50Y3BjdXJyZW50OwkvKiU8IEN1cnJlbnQgZGl0dG8sIGxvY2tlZCAqLwotKwlpbnQJCQludGNwYWNjZXB0aW5nOwkvKiU8IE51bWJlciBvZiBjbGllbnRzCi0rCQkJCQkJICAgICByZWFkeSB0byBhY2NlcHQgbmV3Ci0rCQkJCQkJICAgICBUQ1AgY29ubmVjdGlvbnMgb24gdGhpcwotKwkJCQkJCSAgICAgaW50ZXJmYWNlICovCi0rCWludAkJCW50Y3BhY3RpdmU7CS8qJTwgTnVtYmVyIG9mIGNsaWVudHMKLSsJCQkJCQkgICAgIHNlcnZpY2luZyBUQ1AgcXVlcmllcwotKwkJCQkJCSAgICAgKHdoZXRoZXIgYWNjZXB0aW5nIG9yCi0rCQkJCQkJICAgICBjb25uZWN0ZWQpICovCi0gCWludAkJCW51ZHBkaXNwYXRjaDsJLyolPCBOdW1iZXIgb2YgVURQIGRpc3BhdGNoZXMgKi8KLSAJbnNfY2xpZW50bWdyX3QgKgljbGllbnRtZ3I7CS8qJTwgQ2xpZW50IG1hbmFnZXIuICovCi0gCUlTQ19MSU5LKG5zX2ludGVyZmFjZV90KSBsaW5rOwotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9pbnRlcmZhY2VtZ3IuYyBiL2Jpbi9uYW1lZC9pbnRlcmZhY2VtZ3IuYwotaW5kZXggNDE5OTI3YmY1NC4uOTU1MDk2ZWY0NyAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9pbnRlcmZhY2VtZ3IuYwotKysrIGIvYmluL25hbWVkL2ludGVyZmFjZW1nci5jCi1AQCAtMzg2LDggKzM4Niw4IEBAIG5zX2ludGVyZmFjZV9jcmVhdGUobnNfaW50ZXJmYWNlbWdyX3QgKm1nciwgaXNjX3NvY2thZGRyX3QgKmFkZHIsCi0gCSAqIGNvbm5lY3Rpb25zIHdpbGwgYmUgaGFuZGxlZCBpbiBwYXJhbGxlbCBldmVuIHRob3VnaCB0aGVyZSBpcwotIAkgKiBvbmx5IG9uZSBjbGllbnQgaW5pdGlhbGx5LgotIAkgKi8KLS0JaWZwLT5udGNwdGFyZ2V0ID0gMTsKLS0JaWZwLT5udGNwY3VycmVudCA9IDA7Ci0rCWlmcC0+bnRjcGFjY2VwdGluZyA9IDA7Ci0rCWlmcC0+bnRjcGFjdGl2ZSA9IDA7Ci0gCWlmcC0+bnVkcGRpc3BhdGNoID0gMDsKLSAKLSAJaWZwLT5kc2NwID0gLTE7Ci1AQCAtNTIyLDkgKzUyMiw3IEBAIG5zX2ludGVyZmFjZV9hY2NlcHR0Y3AobnNfaW50ZXJmYWNlX3QgKmlmcCkgewotIAkgKi8KLSAJKHZvaWQpaXNjX3NvY2tldF9maWx0ZXIoaWZwLT50Y3Bzb2NrZXQsICJkYXRhcmVhZHkiKTsKLSAKLS0JcmVzdWx0ID0gbnNfY2xpZW50bWdyX2NyZWF0ZWNsaWVudHMoaWZwLT5jbGllbnRtZ3IsCi0tCQkJCQkgICAgaWZwLT5udGNwdGFyZ2V0LCBpZnAsCi0tCQkJCQkgICAgdHJ1ZSk7Ci0rCXJlc3VsdCA9IG5zX2NsaWVudG1ncl9jcmVhdGVjbGllbnRzKGlmcC0+Y2xpZW50bWdyLCAxLCBpZnAsIHRydWUpOwotIAlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpIHsKLSAJCVVORVhQRUNURURfRVJST1IoX19GSUxFX18sIF9fTElORV9fLAotIAkJCQkgIlRDUCBuc19jbGllbnRtZ3JfY3JlYXRlY2xpZW50cygpOiAlcyIsCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDMtdXNlLXJlZmVyZW5jZS1jb3VudGVyLWZvci1waXBlbGluZS1ncm91cHMtdjMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDMtdXNlLXJlZmVyZW5jZS1jb3VudGVyLWZvci1waXBlbGluZS1ncm91cHMtdjMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzMmNmYjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDAzLXVzZS1yZWZlcmVuY2UtY291bnRlci1mb3ItcGlwZWxpbmUtZ3JvdXBzLXYzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjc4ICswLDAgQEAKLUJhY2twb3J0IHBhdGNoIHRvIGZpeCBDVkUtMjAxOC01NzQzLgotCi1SZWY6Ci1odHRwczovL3NlY3VyaXR5LXRyYWNrZXIuZGViaWFuLm9yZy90cmFja2VyL0NWRS0yMDE4LTU3NDMKLQotQ1ZFOiBDVkUtMjAxOC01NzQzCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5pc2Mub3JnL2lzYy1wcm9qZWN0cy9iaW5kOS9jb21taXQvMzY2YjRlMV0KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLUZyb20gMzY2YjRlMWVkZThhZWQ2OTBlOTgxZTA3MTM3Y2IxY2I3Nzg3OWMzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9NaWNoYT1DNT04Mj0yMEs9QzQ9OTlwaWU9QzU9ODQ/PSA8bWljaGFsQGlzYy5vcmc+Ci1EYXRlOiBUaHUsIDE3IEphbiAyMDE5IDE1OjUzOjM4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMy82XSB1c2UgcmVmZXJlbmNlIGNvdW50ZXIgZm9yIHBpcGVsaW5lIGdyb3VwcyAodjMpCi0KLVRyYWNrIHBpcGVsaW5lIGdyb3VwcyB1c2luZyBhIHNoYXJlZCByZWZlcmVuY2UgY291bnRlcgotaW5zdGVhZCBvZiBhIGxpbmtlZCBsaXN0LgotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA1MTNhZmQzM2ViMTdkNWRjNDFhM2YwZDJkMzgyMDRlZjhjNWY2ZjkxKQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgOTQ0NjYyOWI3MzBjNTljNDIxNWYwOGQzN2ZiYWY4MTAyODJmYmNjYikKLS0tLQotIGJpbi9uYW1lZC9jbGllbnQuYyAgICAgICAgICAgICAgIHwgMTcxICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0KLSBiaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaCB8ICAgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMTEwIGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2NsaWVudC5jIGIvYmluL25hbWVkL2NsaWVudC5jCi1pbmRleCBhN2I0OWEwZjcxLi4yNzc2NTZjZWYwIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2NsaWVudC5jCi0rKysgYi9iaW4vbmFtZWQvY2xpZW50LmMKLUBAIC0yOTksNiArMjk5LDc1IEBAIG5zX2NsaWVudF9zZXR0aW1lb3V0KG5zX2NsaWVudF90ICpjbGllbnQsIHVuc2lnbmVkIGludCBzZWNvbmRzKSB7Ci0gCX0KLSB9Ci0gCi0rLyolCi0rICogQWxsb2NhdGUgYSByZWZlcmVuY2UgY291bnRlciB0aGF0IHdpbGwgdHJhY2sgdGhlIG51bWJlciBvZiBjbGllbnQgc3RydWN0dXJlcwotKyAqIHVzaW5nIHRoZSBUQ1AgY29ubmVjdGlvbiB0aGF0ICdjbGllbnQnIGNhbGxlZCBhY2NlcHQoKSBmb3IuICBUaGlzIGNvdW50ZXIKLSsgKiB3aWxsIGJlIHNoYXJlZCBiZXR3ZWVuIGFsbCBjbGllbnQgc3RydWN0dXJlcyBhc3NvY2lhdGVkIHdpdGggdGhpcyBUQ1AKLSsgKiBjb25uZWN0aW9uLgotKyAqLwotK3N0YXRpYyB2b2lkCi0rcGlwZWxpbmVfaW5pdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0rCWlzY19yZWZjb3VudF90ICpyZWZzOwotKwotKwlSRVFVSVJFKGNsaWVudC0+cGlwZWxpbmVfcmVmcyA9PSBOVUxMKTsKLSsKLSsJLyoKLSsJICogQSBnbG9iYWwgbWVtb3J5IGNvbnRleHQgaXMgdXNlZCBmb3IgdGhlIGFsbG9jYXRpb24gYXMgZGlmZmVyZW50Ci0rCSAqIGNsaWVudCBzdHJ1Y3R1cmVzIG1heSBoYXZlIGRpZmZlcmVudCBtZW1vcnkgY29udGV4dHMgYXNzaWduZWQgYW5kIGEKLSsJICogcmVmZXJlbmNlIGNvdW50ZXIgYWxsb2NhdGVkIGhlcmUgbWlnaHQgbmVlZCB0byBiZSBmcmVlZCBieSBhCi0rCSAqIGRpZmZlcmVudCBjbGllbnQuICBUaGUgcGVyZm9ybWFuY2UgaW1wYWN0IGNhdXNlZCBieSBtZW1vcnkgY29udGV4dAotKwkgKiBjb250ZW50aW9uIGhlcmUgaXMgZXhwZWN0ZWQgdG8gYmUgbmVnbGlnaWJsZSwgZ2l2ZW4gdGhhdCB0aGlzIGNvZGUKLSsJICogaXMgb25seSBleGVjdXRlZCBmb3IgVENQIGNvbm5lY3Rpb25zLgotKwkgKi8KLSsJcmVmcyA9IGlzY19tZW1fYWxsb2NhdGUoY2xpZW50LT5zY3R4LT5tY3R4LCBzaXplb2YoKnJlZnMpKTsKLSsJaXNjX3JlZmNvdW50X2luaXQocmVmcywgMSk7Ci0rCWNsaWVudC0+cGlwZWxpbmVfcmVmcyA9IHJlZnM7Ci0rfQotKwotKy8qJQotKyAqIEluY3JlYXNlIHRoZSBjb3VudCBvZiBjbGllbnQgc3RydWN0dXJlcyB1c2luZyB0aGUgVENQIGNvbm5lY3Rpb24gdGhhdAotKyAqICdzb3VyY2UnIGlzIGFzc29jaWF0ZWQgd2l0aCBhbmQgcHV0IGEgcG9pbnRlciB0byB0aGF0IGNvdW50IGluICd0YXJnZXQnLAotKyAqIHRodXMgYXNzb2NpYXRpbmcgaXQgd2l0aCB0aGUgc2FtZSBUQ1AgY29ubmVjdGlvbi4KLSsgKi8KLStzdGF0aWMgdm9pZAotK3BpcGVsaW5lX2F0dGFjaChuc19jbGllbnRfdCAqc291cmNlLCBuc19jbGllbnRfdCAqdGFyZ2V0KSB7Ci0rCWludCBvbGRfcmVmczsKLSsKLSsJUkVRVUlSRShzb3VyY2UtPnBpcGVsaW5lX3JlZnMgIT0gTlVMTCk7Ci0rCVJFUVVJUkUodGFyZ2V0LT5waXBlbGluZV9yZWZzID09IE5VTEwpOwotKwotKwlvbGRfcmVmcyA9IGlzY19yZWZjb3VudF9pbmNyZW1lbnQoc291cmNlLT5waXBlbGluZV9yZWZzKTsKLSsJSU5TSVNUKG9sZF9yZWZzID4gMCk7Ci0rCXRhcmdldC0+cGlwZWxpbmVfcmVmcyA9IHNvdXJjZS0+cGlwZWxpbmVfcmVmczsKLSt9Ci0rCi0rLyolCi0rICogRGVjcmVhc2UgdGhlIGNvdW50IG9mIGNsaWVudCBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBUQ1AgY29ubmVjdGlvbiB0aGF0Ci0rICogJ2NsaWVudCcgaXMgYXNzb2NpYXRlZCB3aXRoLiAgSWYgdGhpcyBpcyB0aGUgbGFzdCBjbGllbnQgdXNpbmcgdGhpcyBUQ1AKLSsgKiBjb25uZWN0aW9uLCBmcmVlIHRoZSByZWZlcmVuY2UgY291bnRlciBhbmQgcmV0dXJuIHRydWU7IG90aGVyd2lzZSwgcmV0dXJuCi0rICogZmFsc2UuCi0rICovCi0rc3RhdGljIGJvb2wKLStwaXBlbGluZV9kZXRhY2gobnNfY2xpZW50X3QgKmNsaWVudCkgewotKwlpc2NfcmVmY291bnRfdCAqcmVmczsKLSsJaW50IG9sZF9yZWZzOwotKwotKwlSRVFVSVJFKGNsaWVudC0+cGlwZWxpbmVfcmVmcyAhPSBOVUxMKTsKLSsKLSsJcmVmcyA9IGNsaWVudC0+cGlwZWxpbmVfcmVmczsKLSsJY2xpZW50LT5waXBlbGluZV9yZWZzID0gTlVMTDsKLSsKLSsJb2xkX3JlZnMgPSBpc2NfcmVmY291bnRfZGVjcmVtZW50KHJlZnMpOwotKwlJTlNJU1Qob2xkX3JlZnMgPiAwKTsKLSsKLSsJaWYgKG9sZF9yZWZzID09IDEpIHsKLSsJCWlzY19tZW1fZnJlZShjbGllbnQtPnNjdHgtPm1jdHgsIHJlZnMpOwotKwkJcmV0dXJuICh0cnVlKTsKLSsJfQotKwotKwlyZXR1cm4gKGZhbHNlKTsKLSt9Ci0rCi0gLyolCi0gICogQ2hlY2sgZm9yIGEgZGVhY3RpdmF0aW9uIG9yIHNodXRkb3duIHJlcXVlc3QgYW5kIHRha2UgYXBwcm9wcmlhdGUKLSAgKiBhY3Rpb24uICBSZXR1cm5zIHRydWUgaWYgZWl0aGVyIGlzIGluIHByb2dyZXNzOyBpbiB0aGlzIGNhc2UKLUBAIC00MjEsNiArNDkwLDQwIEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJCWNsaWVudC0+dGNwbXNnX3ZhbGlkID0gZmFsc2U7Ci0gCQl9Ci0gCi0rCQlpZiAoY2xpZW50LT50Y3BxdW90YSAhPSBOVUxMKSB7Ci0rCQkJaWYgKGNsaWVudC0+cGlwZWxpbmVfcmVmcyA9PSBOVUxMIHx8Ci0rCQkJICAgIHBpcGVsaW5lX2RldGFjaChjbGllbnQpKQotKwkJCXsKLSsJCQkJLyoKLSsJCQkJICogT25seSBkZXRhY2ggZnJvbSB0aGUgVENQIGNsaWVudCBxdW90YSBpZgotKwkJCQkgKiB0aGVyZSBhcmUgbm8gbW9yZSBjbGllbnQgc3RydWN0dXJlcyB1c2luZwotKwkJCQkgKiB0aGlzIFRDUCBjb25uZWN0aW9uLgotKwkJCQkgKgotKwkJCQkgKiBOb3RlIHRoYXQgd2UgY2hlY2sgJ3BpcGVsaW5lX3JlZnMnIGFuZCBub3QKLSsJCQkJICogJ3BpcGVsaW5lZCcgYmVjYXVzZSBpbiBzb21lIGNhc2VzIChlLmcuCi0rCQkJCSAqIGFmdGVyIHJlY2VpdmluZyBhIHJlcXVlc3Qgd2l0aCBhbiBvcGNvZGUKLSsJCQkJICogZGlmZmVyZW50IHRoYW4gUVVFUlkpICdwaXBlbGluZWQnIGlzIHNldCB0bwotKwkJCQkgKiBmYWxzZSBhZnRlciB0aGUgcmVmZXJlbmNlIGNvdW50ZXIgZ2V0cwotKwkJCQkgKiBhbGxvY2F0ZWQgaW4gcGlwZWxpbmVfaW5pdCgpIGFuZCB3ZSBtdXN0Ci0rCQkJCSAqIHN0aWxsIGRyb3Agb3VyIHJlZmVyZW5jZSBhcyBmYWlsaW5nIHRvIGRvIHNvCi0rCQkJCSAqIHdvdWxkIHByZXZlbnQgdGhlIHJlZmVyZW5jZSBjb3VudGVyIGl0c2VsZgotKwkJCQkgKiBmcm9tIGJlaW5nIGZyZWVkLgotKwkJCQkgKi8KLSsJCQkJaXNjX3F1b3RhX2RldGFjaCgmY2xpZW50LT50Y3BxdW90YSk7Ci0rCQkJfSBlbHNlIHsKLSsJCQkJLyoKLSsJCQkJICogVGhlcmUgYXJlIG90aGVyIGNsaWVudCBzdHJ1Y3R1cmVzIHVzaW5nIHRoaXMKLSsJCQkJICogVENQIGNvbm5lY3Rpb24sIHNvIHdlIGNhbm5vdCBkZXRhY2ggZnJvbSB0aGUKLSsJCQkJICogVENQIGNsaWVudCBxdW90YSB0byBwcmV2ZW50IGV4Y2VzcyBUQ1AKLSsJCQkJICogY29ubmVjdGlvbnMgZnJvbSBiZWluZyBhY2NlcHRlZC4gIEhvd2V2ZXIsCi0rCQkJCSAqIHRoaXMgY2xpZW50IHN0cnVjdHVyZSBtaWdodCBsYXRlciBiZSByZXVzZWQKLSsJCQkJICogZm9yIGFjY2VwdGluZyBuZXcgY29ubmVjdGlvbnMgYW5kIHRodXMgbXVzdAotKwkJCQkgKiBoYXZlIGl0cyAndGNwcXVvdGEnIGZpZWxkIHNldCB0byBOVUxMLgotKwkJCQkgKi8KLSsJCQkJY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0rCQkJfQotKwkJfQotKwotIAkJaWYgKGNsaWVudC0+dGNwc29ja2V0ICE9IE5VTEwpIHsKLSAJCQlDVFJBQ0UoImNsb3NldGNwIik7Ci0gCQkJaXNjX3NvY2tldF9kZXRhY2goJmNsaWVudC0+dGNwc29ja2V0KTsKLUBAIC00MzQsNDQgKzUzNyw2IEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJCX0KLSAJCX0KLSAKLS0JCWlmIChjbGllbnQtPnRjcHF1b3RhICE9IE5VTEwpIHsKLS0JCQkvKgotLQkJCSAqIElmIHdlIGFyZSBub3QgaW4gYSBwaXBlbGluZSBncm91cCwgb3IKLS0JCQkgKiB3ZSBhcmUgdGhlIGxhc3QgY2xpZW50IGluIHRoZSBncm91cCwgZGV0YWNoIGZyb20KLS0JCQkgKiB0Y3BxdW90YTsgb3RoZXJ3aXNlLCB0cmFuc2ZlciB0aGUgcXVvdGEgdG8KLS0JCQkgKiBhbm90aGVyIGNsaWVudCBpbiB0aGUgc2FtZSBncm91cC4KLS0JCQkgKi8KLS0JCQlpZiAoIUlTQ19MSU5LX0xJTktFRChjbGllbnQsIGdsaW5rKSB8fAotLQkJCSAgICAoY2xpZW50LT5nbGluay5uZXh0ID09IE5VTEwgJiYKLS0JCQkgICAgIGNsaWVudC0+Z2xpbmsucHJldiA9PSBOVUxMKSkKLS0JCQl7Ci0tCQkJCWlzY19xdW90YV9kZXRhY2goJmNsaWVudC0+dGNwcXVvdGEpOwotLQkJCX0gZWxzZSBpZiAoY2xpZW50LT5nbGluay5uZXh0ICE9IE5VTEwpIHsKLS0JCQkJSU5TSVNUKGNsaWVudC0+Z2xpbmsubmV4dC0+dGNwcXVvdGEgPT0gTlVMTCk7Ci0tCQkJCWNsaWVudC0+Z2xpbmsubmV4dC0+dGNwcXVvdGEgPSBjbGllbnQtPnRjcHF1b3RhOwotLQkJCQljbGllbnQtPnRjcHF1b3RhID0gTlVMTDsKLS0JCQl9IGVsc2UgewotLQkJCQlJTlNJU1QoY2xpZW50LT5nbGluay5wcmV2LT50Y3BxdW90YSA9PSBOVUxMKTsKLS0JCQkJY2xpZW50LT5nbGluay5wcmV2LT50Y3BxdW90YSA9IGNsaWVudC0+dGNwcXVvdGE7Ci0tCQkJCWNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotLQkJCX0KLS0JCX0KLS0KLS0JCS8qCi0tCQkgKiBVbmxpbmsgZnJvbSBwaXBlbGluZSBncm91cC4KLS0JCSAqLwotLQkJaWYgKElTQ19MSU5LX0xJTktFRChjbGllbnQsIGdsaW5rKSkgewotLQkJCWlmIChjbGllbnQtPmdsaW5rLm5leHQgIT0gTlVMTCkgewotLQkJCQljbGllbnQtPmdsaW5rLm5leHQtPmdsaW5rLnByZXYgPQotLQkJCQkJY2xpZW50LT5nbGluay5wcmV2OwotLQkJCX0KLS0JCQlpZiAoY2xpZW50LT5nbGluay5wcmV2ICE9IE5VTEwpIHsKLS0JCQkJY2xpZW50LT5nbGluay5wcmV2LT5nbGluay5uZXh0ID0KLS0JCQkJCWNsaWVudC0+Z2xpbmsubmV4dDsKLS0JCQl9Ci0tCQkJSVNDX0xJTktfSU5JVChjbGllbnQsIGdsaW5rKTsKLS0JCX0KLS0KLSAJCWlmIChjbGllbnQtPnRpbWVyc2V0KSB7Ci0gCQkJKHZvaWQpaXNjX3RpbWVyX3Jlc2V0KGNsaWVudC0+dGltZXIsCi0gCQkJCQkgICAgICBpc2NfdGltZXJ0eXBlX2luYWN0aXZlLAotQEAgLTMxMzAsNiArMzE5NSw3IEBAIGNsaWVudF9jcmVhdGUobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2NsaWVudF90ICoqY2xpZW50cCkgewotIAlkbnNfbmFtZV9pbml0KCZjbGllbnQtPnNpZ25lcm5hbWUsIE5VTEwpOwotIAljbGllbnQtPm1vcnRhbCA9IGZhbHNlOwotIAljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotKwljbGllbnQtPnBpcGVsaW5lX3JlZnMgPSBOVUxMOwotIAljbGllbnQtPnRjcHF1b3RhID0gTlVMTDsKLSAJY2xpZW50LT5yZWN1cnNpb25xdW90YSA9IE5VTEw7Ci0gCWNsaWVudC0+aW50ZXJmYWNlID0gTlVMTDsKLUBAIC0zMTU0LDcgKzMyMjAsNiBAQCBjbGllbnRfY3JlYXRlKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19jbGllbnRfdCAqKmNsaWVudHApIHsKLSAJY2xpZW50LT5mb3JtZXJyY2FjaGUuaWQgPSAwOwotIAlJU0NfTElOS19JTklUKGNsaWVudCwgbGluayk7Ci0gCUlTQ19MSU5LX0lOSVQoY2xpZW50LCBybGluayk7Ci0tCUlTQ19MSU5LX0lOSVQoY2xpZW50LCBnbGluayk7Ci0gCUlTQ19RTElOS19JTklUKGNsaWVudCwgaWxpbmspOwotIAljbGllbnQtPmtleXRhZyA9IE5VTEw7Ci0gCWNsaWVudC0+a2V5dGFnX2xlbiA9IDA7Ci1AQCAtMzM0MSw2ICszNDA2LDcgQEAgY2xpZW50X25ld2Nvbm4oaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCQkgICAgICFhbGxvd2VkKCZuZXRhZGRyLCBOVUxMLCBOVUxMLCAwLCBOVUxMLAotIAkJCSAgICAgIG5zX2dfc2VydmVyLT5rZWVwcmVzcG9yZGVyKSkpCi0gCQl7Ci0rCQkJcGlwZWxpbmVfaW5pdChjbGllbnQpOwotIAkJCWNsaWVudC0+cGlwZWxpbmVkID0gdHJ1ZTsKLSAJCX0KLSAKLUBAIC0zODAwLDM1ICszODY2LDE2IEBAIGdldF93b3JrZXIobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsIGlzY19zb2NrZXRfdCAqc29jaywKLSAJbnNfaW50ZXJmYWNlX2F0dGFjaChpZnAsICZjbGllbnQtPmludGVyZmFjZSk7Ci0gCWNsaWVudC0+bmV3c3RhdGUgPSBjbGllbnQtPnN0YXRlID0gTlNfQ0xJRU5UU1RBVEVfV09SS0lORzsKLSAJSU5TSVNUKGNsaWVudC0+cmVjdXJzaW9ucXVvdGEgPT0gTlVMTCk7Ci0tCi0tCS8qCi0tCSAqIFRyYW5zZmVyIFRDUCBxdW90YSB0byB0aGUgbmV3IGNsaWVudC4KLS0JICovCi0tCUlOU0lTVChjbGllbnQtPnRjcHF1b3RhID09IE5VTEwpOwotLQlJTlNJU1Qob2xkY2xpZW50LT50Y3BxdW90YSAhPSBOVUxMKTsKLS0JY2xpZW50LT50Y3BxdW90YSA9IG9sZGNsaWVudC0+dGNwcXVvdGE7Ci0tCW9sZGNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotLQotLQkvKgotLQkgKiBMaW5rIHRvIGEgcGlwZWxpbmUgZ3JvdXAsIGNyZWF0aW5nIGl0IGlmIG5lZWRlZC4KLS0JICovCi0tCWlmICghSVNDX0xJTktfTElOS0VEKG9sZGNsaWVudCwgZ2xpbmspKSB7Ci0tCQlvbGRjbGllbnQtPmdsaW5rLm5leHQgPSBOVUxMOwotLQkJb2xkY2xpZW50LT5nbGluay5wcmV2ID0gTlVMTDsKLS0JfQotLQljbGllbnQtPmdsaW5rLm5leHQgPSBvbGRjbGllbnQtPmdsaW5rLm5leHQ7Ci0tCWNsaWVudC0+Z2xpbmsucHJldiA9IG9sZGNsaWVudDsKLS0JaWYgKG9sZGNsaWVudC0+Z2xpbmsubmV4dCAhPSBOVUxMKSB7Ci0tCQlvbGRjbGllbnQtPmdsaW5rLm5leHQtPmdsaW5rLnByZXYgPSBjbGllbnQ7Ci0tCX0KLS0Jb2xkY2xpZW50LT5nbGluay5uZXh0ID0gY2xpZW50OwotKwljbGllbnQtPnRjcHF1b3RhID0gJmNsaWVudC0+c2N0eC0+dGNwcXVvdGE7Ci0gCi0gCWNsaWVudC0+ZHNjcCA9IGlmcC0+ZHNjcDsKLSAKLSAJY2xpZW50LT5hdHRyaWJ1dGVzIHw9IE5TX0NMSUVOVEFUVFJfVENQOwotLQljbGllbnQtPnBpcGVsaW5lZCA9IHRydWU7Ci0gCWNsaWVudC0+bW9ydGFsID0gdHJ1ZTsKLSAKLSsJcGlwZWxpbmVfYXR0YWNoKG9sZGNsaWVudCwgY2xpZW50KTsKLSsJY2xpZW50LT5waXBlbGluZWQgPSB0cnVlOwotKwotIAlpc2Nfc29ja2V0X2F0dGFjaChpZnAtPnRjcHNvY2tldCwgJmNsaWVudC0+dGNwbGlzdGVuZXIpOwotIAlpc2Nfc29ja2V0X2F0dGFjaChzb2NrLCAmY2xpZW50LT50Y3Bzb2NrZXQpOwotIAlpc2Nfc29ja2V0X3NldG5hbWUoY2xpZW50LT50Y3Bzb2NrZXQsICJ3b3JrZXItdGNwIiwgTlVMTCk7Ci1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmggYi9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaAotaW5kZXggMWY3OTczZjljNS4uYWVlZDljY2RkYSAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oCi0rKysgYi9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaAotQEAgLTEzNCw2ICsxMzQsNyBAQCBzdHJ1Y3QgbnNfY2xpZW50IHsKLSAJZG5zX25hbWVfdAkJKnNpZ25lcjsgICAgICAvKiU8IE5VTEwgaWYgbm90IHZhbGlkIHNpZyAqLwotIAlib29sCQkJbW9ydGFsOwkgICAgICAvKiU8IERpZSBhZnRlciBoYW5kbGluZyByZXF1ZXN0ICovCi0gCWJvb2wJCQlwaXBlbGluZWQ7ICAgLyolPCBUQ1AgcXVlcmllcyBub3QgaW4gc2VxdWVuY2UgKi8KLSsJaXNjX3JlZmNvdW50X3QJCSpwaXBlbGluZV9yZWZzOwotIAlpc2NfcXVvdGFfdAkJKnRjcHF1b3RhOwotIAlpc2NfcXVvdGFfdAkJKnJlY3Vyc2lvbnF1b3RhOwotIAluc19pbnRlcmZhY2VfdAkJKmludGVyZmFjZTsKLUBAIC0xNjcsNyArMTY4LDYgQEAgc3RydWN0IG5zX2NsaWVudCB7Ci0gCi0gCUlTQ19MSU5LKG5zX2NsaWVudF90KQlsaW5rOwotIAlJU0NfTElOSyhuc19jbGllbnRfdCkJcmxpbms7Ci0tCUlTQ19MSU5LKG5zX2NsaWVudF90KQlnbGluazsKLSAJSVNDX1FMSU5LKG5zX2NsaWVudF90KQlpbGluazsKLSAJdW5zaWduZWQgY2hhcgkJY29va2llWzhdOwotIAl1aW50MzJfdAkJZXhwaXJlOwotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDA0LWJldHRlci10Y3BxdW90YS1hY2NvdW50aW5nLWFuZC1jbGllbnQtbW9ydGFsaXR5LWNoZWMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDQtYmV0dGVyLXRjcHF1b3RhLWFjY291bnRpbmctYW5kLWNsaWVudC1tb3J0YWxpdHktY2hlYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDM0YWIxMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDQtYmV0dGVyLXRjcHF1b3RhLWFjY291bnRpbmctYW5kLWNsaWVudC1tb3J0YWxpdHktY2hlYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxMiArMCwwIEBACi1CYWNrcG9ydCBwYXRjaCB0byBmaXggQ1ZFLTIwMTgtNTc0My4KLQotUmVmOgotaHR0cHM6Ly9zZWN1cml0eS10cmFja2VyLmRlYmlhbi5vcmcvdHJhY2tlci9DVkUtMjAxOC01NzQzCi0KLUNWRTogQ1ZFLTIwMTgtNTc0MwotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuaXNjLm9yZy9pc2MtcHJvamVjdHMvYmluZDkvY29tbWl0LzJhYjhhMDhdCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotCi1Gcm9tIDJhYjhhMDg1YjNjNjY2ZjI4ZjFmOTIyOWJkNmVjYjU5OTE1YjI2YzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFdmFuIEh1bnQgPGVhY2hAaXNjLm9yZz4KLURhdGU6IEZyaSwgNSBBcHIgMjAxOSAxNjoxMjoxOCAtMDcwMAotU3ViamVjdDogW1BBVENIIDQvNl0gYmV0dGVyIHRjcHF1b3RhIGFjY291bnRpbmcgYW5kIGNsaWVudCBtb3J0YWxpdHkgY2hlY2tzCi0KLS0gZW5zdXJlIHRoYXQgdGNwYWN0aXZlIGlzIGNsZWFuZWQgdXAgY29ycmVjdGx5IHdoZW4gYWNjZXB0KCkgZmFpbHMuCi0tIHNldCAnY2xpZW50LT50Y3BhdHRhY2hlZCcgd2hlbiB0aGUgY2xpZW50IGlzIGF0dGFjaGVkIHRvIHRoZSB0Y3BxdW90YS4KLSAgY2FycnkgdGhpcyB2YWx1ZSBvbiB0byBuZXcgY2xpZW50cyBzaGFyaW5nIHRoZSBzYW1lIHBpcGVsaW5lIGdyb3VwLgotICBkb24ndCBjYWxsIGlzY19xdW90YV9kZXRhY2goKSBvbiB0aGUgdGNwcXVvdGEgdW5sZXNzIHRjcGF0dGFjaGVkIGlzCi0gIHNldC4gIHRoaXMgd2F5IGNsaWVudHMgdGhhdCB3ZXJlIGFsbG93ZWQgdG8gYWNjZXB0IFRDUCBjb25uZWN0aW9ucwotICBkZXNwaXRlIGJlaW5nIG92ZXIgcXVvdGEgKGFuZCB0aGVyZWZvcmUsIHdlcmUgbmV2ZXIgYXR0YWNoZWQgdG8gdGhlCi0gIHF1b3RhKSB3aWxsIG5vdCBpbmFkdmVydGVudGx5IGRldGFjaCBmcm9tIGl0IGFuZCBtZXNzIHVwIHRoZQotICBhY2NvdW50aW5nLgotLSBzaW1wbGlmeSB0aGUgY29kZSBmb3IgdGNwcXVvdGEgZGlzY29ubmVjdGlvbiBieSB1c2luZyBhIG5ldyBmdW5jdGlvbgotICB0Y3BxdW90YV9kaXNjb25uZWN0KCkuCi0tIGJlZm9yZSBkZWNpZGluZyB3aGV0aGVyIHRvIHJlamVjdCBhIG5ldyBjb25uZWN0aW9uIGR1ZSB0byBxdW90YQotICBleGhhdXN0aW9uLCBjaGVjayB0byBzZWUgd2hldGhlciB0aGVyZSBhcmUgYXQgbGVhc3QgdHdvIGFjdGl2ZQotICBjbGllbnRzLiBwcmV2aW91c2x5LCB0aGlzIHdhcyAiYXQgbGVhc3Qgb25lIiwgYnV0IHRoYXQgY291bGQgYmUKLSAgaW5zdWZmaWNpZW50IGlmIHRoZXJlIHdhcyBvbmUgb3RoZXIgY2xpZW50IGluIFJFQURJTkcgc3RhdGUgKHdhaXRpbmcKLSAgZm9yIG1lc3NhZ2VzIG9uIGFuIG9wZW4gY29ubmVjdGlvbikgYnV0IG5vbmUgaW4gUkVBRFkgKGxpc3RlbmluZwotICBmb3IgbmV3IGNvbm5lY3Rpb25zKS4KLS0gYmVmb3JlIGRlY2lkaW5nIHdoZXRoZXIgYSBUQ1AgY2xpZW50IG9iamVjdCBjYW4gdG8gZ28gaW5hY3RpdmUsIHdlCi0gIG11c3QgZW5zdXJlIHRoZXJlIGFyZSBlbm91Z2ggb3RoZXIgY2xpZW50cyB0byBtYWludGFpbiBzZXJ2aWNlCi0gIGFmdGVyd2FyZCAtLSBib3RoIGFjY2VwdGluZyBuZXcgY29ubmVjdGlvbnMgYW5kIHJlYWRpbmcvcHJvY2Vzc2luZyBuZXcKLSAgcXVlcmllcy4gIEEgVENQIGNsaWVudCBjYW4ndCBzaHV0IGRvd24gdW5sZXNzIGF0IGxlYXN0IG9uZQotICBjbGllbnQgaXMgYWNjZXB0aW5nIG5ldyBjb25uZWN0aW9ucyBhbmQgKGluIHRoZSBjYXNlIG9mIHBpcGVsaW5lZAotICBjbGllbnRzKSBhdCBsZWFzdCBvbmUgYWRkaXRpb25hbCBjbGllbnQgaXMgd2FpdGluZyB0byByZWFkLgotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBjNzM5NDczOGIyNDQ1YzE2ZjcyOGE4ODM5NDg2NGRkNjFiYWFkOTAwKQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgZTk2NWQ1ZjExZDNkMGY2ZDU5NzA0ZTYxNGZjZWNhMjA5M2NiMTg1NikKLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDg3ZDQzMTE2MTQ1MDc3N2VhMDkzODIxMjEyYWJmYjUyZDUxYjM2ZTMpCi0tLS0KLSBiaW4vbmFtZWQvY2xpZW50LmMgICAgICAgICAgICAgICB8IDI0NCArKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCi0gYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmggfCAgIDMgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDE1MiBpbnNlcnRpb25zKCspLCA5NSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9jbGllbnQuYyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotaW5kZXggMjc3NjU2Y2VmMC4uNjFlOTZkZDI4YyAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9jbGllbnQuYwotKysrIGIvYmluL25hbWVkL2NsaWVudC5jCi1AQCAtMjQ0LDEzICsyNDQsMTQgQEAgc3RhdGljIHZvaWQgY2xpZW50X3N0YXJ0KGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCk7Ci0gc3RhdGljIHZvaWQgY2xpZW50X3JlcXVlc3QoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KTsKLSBzdGF0aWMgdm9pZCBuc19jbGllbnRfZHVtcG1lc3NhZ2UobnNfY2xpZW50X3QgKmNsaWVudCwgY29uc3QgY2hhciAqcmVhc29uKTsKLSBzdGF0aWMgaXNjX3Jlc3VsdF90IGdldF9jbGllbnQobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsCi0tCQkJICAgICAgIGRuc19kaXNwYXRjaF90ICpkaXNwLCBib29sIHRjcCk7Ci0rCQkJICAgICAgIGRuc19kaXNwYXRjaF90ICpkaXNwLCBuc19jbGllbnRfdCAqb2xkY2xpZW50LAotKwkJCSAgICAgICBib29sIHRjcCk7Ci0gc3RhdGljIGlzY19yZXN1bHRfdCBnZXRfd29ya2VyKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLAotIAkJCSAgICAgICBpc2Nfc29ja2V0X3QgKnNvY2ssIG5zX2NsaWVudF90ICpvbGRjbGllbnQpOwotIHN0YXRpYyBpbmxpbmUgYm9vbAotIGFsbG93ZWQoaXNjX25ldGFkZHJfdCAqYWRkciwgZG5zX25hbWVfdCAqc2lnbmVyLAotIAlpc2NfbmV0YWRkcl90ICplY3NfYWRkciwgdWludDhfdCBlY3NfYWRkcmxlbiwKLS0JdWludDhfdCAqZWNzX3Njb3BlLCBkbnNfYWNsX3QgKmFjbCkKLSsJdWludDhfdCAqZWNzX3Njb3BlLCBkbnNfYWNsX3QgKmFjbCk7Ci0gc3RhdGljIHZvaWQgY29tcHV0ZV9jb29raWUobnNfY2xpZW50X3QgKmNsaWVudCwgdWludDMyX3Qgd2hlbiwKLSAJCQkgICB1aW50MzJfdCBub25jZSwgY29uc3QgdW5zaWduZWQgY2hhciAqc2VjcmV0LAotIAkJCSAgIGlzY19idWZmZXJfdCAqYnVmKTsKLUBAIC0zMTksNyArMzIwLDcgQEAgcGlwZWxpbmVfaW5pdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCSAqIGNvbnRlbnRpb24gaGVyZSBpcyBleHBlY3RlZCB0byBiZSBuZWdsaWdpYmxlLCBnaXZlbiB0aGF0IHRoaXMgY29kZQotIAkgKiBpcyBvbmx5IGV4ZWN1dGVkIGZvciBUQ1AgY29ubmVjdGlvbnMuCi0gCSAqLwotLQlyZWZzID0gaXNjX21lbV9hbGxvY2F0ZShjbGllbnQtPnNjdHgtPm1jdHgsIHNpemVvZigqcmVmcykpOwotKwlyZWZzID0gaXNjX21lbV9hbGxvY2F0ZShuc19nX21jdHgsIHNpemVvZigqcmVmcykpOwotIAlpc2NfcmVmY291bnRfaW5pdChyZWZzLCAxKTsKLSAJY2xpZW50LT5waXBlbGluZV9yZWZzID0gcmVmczsKLSB9Ci1AQCAtMzMxLDEzICszMzIsMTMgQEAgcGlwZWxpbmVfaW5pdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gICovCi0gc3RhdGljIHZvaWQKLSBwaXBlbGluZV9hdHRhY2gobnNfY2xpZW50X3QgKnNvdXJjZSwgbnNfY2xpZW50X3QgKnRhcmdldCkgewotLQlpbnQgb2xkX3JlZnM7Ci0rCWludCByZWZzOwotIAotIAlSRVFVSVJFKHNvdXJjZS0+cGlwZWxpbmVfcmVmcyAhPSBOVUxMKTsKLSAJUkVRVUlSRSh0YXJnZXQtPnBpcGVsaW5lX3JlZnMgPT0gTlVMTCk7Ci0gCi0tCW9sZF9yZWZzID0gaXNjX3JlZmNvdW50X2luY3JlbWVudChzb3VyY2UtPnBpcGVsaW5lX3JlZnMpOwotLQlJTlNJU1Qob2xkX3JlZnMgPiAwKTsKLSsJaXNjX3JlZmNvdW50X2luY3JlbWVudChzb3VyY2UtPnBpcGVsaW5lX3JlZnMsICZyZWZzKTsKLSsJSU5TSVNUKHJlZnMgPiAxKTsKLSAJdGFyZ2V0LT5waXBlbGluZV9yZWZzID0gc291cmNlLT5waXBlbGluZV9yZWZzOwotIH0KLSAKLUBAIC0zNDksMjUgKzM1MCw1MSBAQCBwaXBlbGluZV9hdHRhY2gobnNfY2xpZW50X3QgKnNvdXJjZSwgbnNfY2xpZW50X3QgKnRhcmdldCkgewotICAqLwotIHN0YXRpYyBib29sCi0gcGlwZWxpbmVfZGV0YWNoKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLS0JaXNjX3JlZmNvdW50X3QgKnJlZnM7Ci0tCWludCBvbGRfcmVmczsKLSsJaXNjX3JlZmNvdW50X3QgKnJlZmNvdW50OwotKwlpbnQgcmVmczsKLSAKLSAJUkVRVUlSRShjbGllbnQtPnBpcGVsaW5lX3JlZnMgIT0gTlVMTCk7Ci0gCi0tCXJlZnMgPSBjbGllbnQtPnBpcGVsaW5lX3JlZnM7Ci0rCXJlZmNvdW50ID0gY2xpZW50LT5waXBlbGluZV9yZWZzOwotIAljbGllbnQtPnBpcGVsaW5lX3JlZnMgPSBOVUxMOwotIAotLQlvbGRfcmVmcyA9IGlzY19yZWZjb3VudF9kZWNyZW1lbnQocmVmcyk7Ci0tCUlOU0lTVChvbGRfcmVmcyA+IDApOwotKwlpc2NfcmVmY291bnRfZGVjcmVtZW50KHJlZmNvdW50LCByZWZzKTsKLSAKLS0JaWYgKG9sZF9yZWZzID09IDEpIHsKLS0JCWlzY19tZW1fZnJlZShjbGllbnQtPnNjdHgtPm1jdHgsIHJlZnMpOwotKwlpZiAocmVmcyA9PSAwKSB7Ci0rCQlpc2NfbWVtX2ZyZWUobnNfZ19tY3R4LCByZWZzKTsKLSAJCXJldHVybiAodHJ1ZSk7Ci0gCX0KLSAKLSAJcmV0dXJuIChmYWxzZSk7Ci0gfQotIAotKy8qCi0rICogRGV0YWNoIGEgY2xpZW50IGZyb20gdGhlIFRDUCBjbGllbnQgcXVvdGEgaWYgYXBwcm9wcmlhdGUsIGFuZCBzZXQKLSsgKiB0aGUgcXVvdGEgcG9pbnRlciB0byBOVUxMLgotKyAqCi0rICogU29tZXRpbWVzIHdoZW4gdGhlIFRDUCBjbGllbnQgcXVvdGEgaXMgZXhoYXVzdGVkIGJ1dCB0aGVyZSBhcmUgbm8gb3RoZXIKLSsgKiBjbGllbnRzIHNlcnZpY2luZyB0aGUgaW50ZXJmYWNlLCBhIGNsaWVudCB3aWxsIGJlIGFsbG93ZWQgdG8gY29udGludWUKLSsgKiBydW5uaW5nIGRlc3BpdGUgbm90IGhhdmluZyBiZWVuIGF0dGFjaGVkIHRvIHRoZSBxdW90YS4gSW4gdGhpcyBldmVudCwKLSsgKiB0aGUgVENQIHF1b3RhIHdhcyBuZXZlciBhdHRhY2hlZCB0byB0aGUgY2xpZW50LCBzbyB3aGVuIHRoZSBjbGllbnQgKG9yCi0rICogYXNzb2NpYXRlZCBwaXBlbGluZSBncm91cCkgc2h1dHMgZG93biwgdGhlIHF1b3RhIG11c3QgTk9UIGJlIGRldGFjaGVkLgotKyAqCi0rICogT3RoZXJ3aXNlLCBpZiB0aGUgcXVvdGEgcG9pbnRlciBpcyBzZXQsIGl0IHNob3VsZCBiZSBkZXRhY2hlZC4gSWYgbm90Ci0rICogc2V0IGF0IGFsbCwgd2UganVzdCByZXR1cm4gd2l0aG91dCBkb2luZyBhbnl0aGluZy4KLSsgKi8KLStzdGF0aWMgdm9pZAotK3RjcHF1b3RhX2Rpc2Nvbm5lY3QobnNfY2xpZW50X3QgKmNsaWVudCkgewotKwlpZiAoY2xpZW50LT50Y3BxdW90YSA9PSBOVUxMKSB7Ci0rCQlyZXR1cm47Ci0rCX0KLSsKLSsJaWYgKGNsaWVudC0+dGNwYXR0YWNoZWQpIHsKLSsJCWlzY19xdW90YV9kZXRhY2goJmNsaWVudC0+dGNwcXVvdGEpOwotKwkJY2xpZW50LT50Y3BhdHRhY2hlZCA9IGZhbHNlOwotKwl9IGVsc2UgewotKwkJY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0rCX0KLSt9Ci0rCi0gLyolCi0gICogQ2hlY2sgZm9yIGEgZGVhY3RpdmF0aW9uIG9yIHNodXRkb3duIHJlcXVlc3QgYW5kIHRha2UgYXBwcm9wcmlhdGUKLSAgKiBhY3Rpb24uICBSZXR1cm5zIHRydWUgaWYgZWl0aGVyIGlzIGluIHByb2dyZXNzOyBpbiB0aGlzIGNhc2UKLUBAIC00OTAsMzggKzUxNywzMSBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCQljbGllbnQtPnRjcG1zZ192YWxpZCA9IGZhbHNlOwotIAkJfQotIAotLQkJaWYgKGNsaWVudC0+dGNwcXVvdGEgIT0gTlVMTCkgewotLQkJCWlmIChjbGllbnQtPnBpcGVsaW5lX3JlZnMgPT0gTlVMTCB8fAotLQkJCSAgICBwaXBlbGluZV9kZXRhY2goY2xpZW50KSkKLS0JCQl7Ci0tCQkJCS8qCi0tCQkJCSAqIE9ubHkgZGV0YWNoIGZyb20gdGhlIFRDUCBjbGllbnQgcXVvdGEgaWYKLS0JCQkJICogdGhlcmUgYXJlIG5vIG1vcmUgY2xpZW50IHN0cnVjdHVyZXMgdXNpbmcKLS0JCQkJICogdGhpcyBUQ1AgY29ubmVjdGlvbi4KLS0JCQkJICoKLS0JCQkJICogTm90ZSB0aGF0IHdlIGNoZWNrICdwaXBlbGluZV9yZWZzJyBhbmQgbm90Ci0tCQkJCSAqICdwaXBlbGluZWQnIGJlY2F1c2UgaW4gc29tZSBjYXNlcyAoZS5nLgotLQkJCQkgKiBhZnRlciByZWNlaXZpbmcgYSByZXF1ZXN0IHdpdGggYW4gb3Bjb2RlCi0tCQkJCSAqIGRpZmZlcmVudCB0aGFuIFFVRVJZKSAncGlwZWxpbmVkJyBpcyBzZXQgdG8KLS0JCQkJICogZmFsc2UgYWZ0ZXIgdGhlIHJlZmVyZW5jZSBjb3VudGVyIGdldHMKLS0JCQkJICogYWxsb2NhdGVkIGluIHBpcGVsaW5lX2luaXQoKSBhbmQgd2UgbXVzdAotLQkJCQkgKiBzdGlsbCBkcm9wIG91ciByZWZlcmVuY2UgYXMgZmFpbGluZyB0byBkbyBzbwotLQkJCQkgKiB3b3VsZCBwcmV2ZW50IHRoZSByZWZlcmVuY2UgY291bnRlciBpdHNlbGYKLS0JCQkJICogZnJvbSBiZWluZyBmcmVlZC4KLS0JCQkJICovCi0tCQkJCWlzY19xdW90YV9kZXRhY2goJmNsaWVudC0+dGNwcXVvdGEpOwotLQkJCX0gZWxzZSB7Ci0tCQkJCS8qCi0tCQkJCSAqIFRoZXJlIGFyZSBvdGhlciBjbGllbnQgc3RydWN0dXJlcyB1c2luZyB0aGlzCi0tCQkJCSAqIFRDUCBjb25uZWN0aW9uLCBzbyB3ZSBjYW5ub3QgZGV0YWNoIGZyb20gdGhlCi0tCQkJCSAqIFRDUCBjbGllbnQgcXVvdGEgdG8gcHJldmVudCBleGNlc3MgVENQCi0tCQkJCSAqIGNvbm5lY3Rpb25zIGZyb20gYmVpbmcgYWNjZXB0ZWQuICBIb3dldmVyLAotLQkJCQkgKiB0aGlzIGNsaWVudCBzdHJ1Y3R1cmUgbWlnaHQgbGF0ZXIgYmUgcmV1c2VkCi0tCQkJCSAqIGZvciBhY2NlcHRpbmcgbmV3IGNvbm5lY3Rpb25zIGFuZCB0aHVzIG11c3QKLS0JCQkJICogaGF2ZSBpdHMgJ3RjcHF1b3RhJyBmaWVsZCBzZXQgdG8gTlVMTC4KLS0JCQkJICovCi0tCQkJCWNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotLQkJCX0KLSsJCS8qCi0rCQkgKiBEZXRhY2ggZnJvbSBwaXBlbGluZSBncm91cCBhbmQgZnJvbSBUQ1AgY2xpZW50IHF1b3RhLAotKwkJICogaWYgYXBwcm9wcmlhdGUuCi0rCQkgKgotKwkJICogLSBJZiBubyBwaXBlbGluZSBncm91cCBpcyBhY3RpdmUsIGF0dGVtcHQgdG8KLSsJCSAqICAgZGV0YWNoIGZyb20gdGhlIFRDUCBjbGllbnQgcXVvdGEuCi0rCQkgKgotKwkJICogLSBJZiBhIHBpcGVsaW5lIGdyb3VwIGlzIGFjdGl2ZSwgZGV0YWNoIGZyb20gaXQ7Ci0rCQkgKiAgIGlmIHRoZSByZXR1cm4gY29kZSBpbmRpY2F0ZXMgdGhhdCB0aGVyZSBubyBtb3JlCi0rCQkgKiAgIGNsaWVudHMgbGVmdCBpZiB0aGlzIHBpcGVsaW5lIGdyb3VwLCB3ZSBhbHNvIGRldGFjaAotKwkJICogICBmcm9tIHRoZSBUQ1AgY2xpZW50IHF1b3RhLgotKwkJICoKLSsJCSAqIC0gT3RoZXJ3aXNlIHdlIGRvbid0IHRyeSB0byBkZXRhY2gsIHdlIGp1c3Qgc2V0IHRoZQotKwkJICogICBUQ1AgcXVvdGEgcG9pbnRlciB0byBOVUxMIGlmIGl0IHdhc24ndCBOVUxMIGFscmVhZHkuCi0rCQkgKgotKwkJICogdGNwcXVvdGFfZGlzY29ubmVjdCgpIHdpbGwgc2V0IHRjcHF1b3RhIHRvIE5VTEwsIGVpdGhlcgotKwkJICogYnkgZGV0YWNoaW5nIGl0IG9yIGJ5IGFzc2lnbm1lbnQsIGRlcGVuZGluZyBvbiB0aGUKLSsJCSAqIG5lZWRzIG9mIHRoZSBjbGllbnQuIFNlZSB0aGUgY29tbWVudHMgb24gdGhhdCBmdW5jdGlvbgotKwkJICogZm9yIGZ1cnRoZXIgaW5mb3JtYXRpb24uCi0rCQkgKi8KLSsJCWlmIChjbGllbnQtPnBpcGVsaW5lX3JlZnMgPT0gTlVMTCB8fCBwaXBlbGluZV9kZXRhY2goY2xpZW50KSkgewotKwkJCXRjcHF1b3RhX2Rpc2Nvbm5lY3QoY2xpZW50KTsKLSsJCX0gZWxzZSB7Ci0rCQkJY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0rCQkJY2xpZW50LT50Y3BhdHRhY2hlZCA9IGZhbHNlOwotIAkJfQotIAotIAkJaWYgKGNsaWVudC0+dGNwc29ja2V0ICE9IE5VTEwpIHsKLUBAIC01NDQsOCArNTY0LDYgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkJY2xpZW50LT50aW1lcnNldCA9IGZhbHNlOwotIAkJfQotIAotLQkJY2xpZW50LT5waXBlbGluZWQgPSBmYWxzZTsKLS0KLSAJCWNsaWVudC0+cGVlcmFkZHJfdmFsaWQgPSBmYWxzZTsKLSAKLSAJCWNsaWVudC0+c3RhdGUgPSBOU19DTElFTlRTVEFURV9SRUFEWTsKLUBAIC01NTgsMTggKzU3NiwyNyBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCSAqIGFjdGl2ZSBhbmQgZm9yY2UgaXQgdG8gZ28gaW5hY3RpdmUgaWYgbm90LgotIAkJICoKLSAJCSAqIFVEUCBjbGllbnRzIGdvIGluYWN0aXZlIGF0IHRoaXMgcG9pbnQsIGJ1dCBhIFRDUCBjbGllbnQKLS0JCSAqIHdpbGwgbmVlZHMgdG8gcmVtYWluIGFjdGl2ZSBpZiBubyBvdGhlciBjbGllbnRzIGFyZQotLQkJICogbGlzdGVuaW5nIGZvciBUQ1AgcmVxdWVzdHMgb24gdGhpcyBpbnRlcmZhY2UsIHRvCi0tCQkgKiBwcmV2ZW50IHRoaXMgaW50ZXJmYWNlIGZyb20gZ29pbmcgbm9ucmVzcG9uc2l2ZS4KLSsJCSAqIG1heSBuZWVkIHRvIHJlbWFpbiBhY3RpdmUgYW5kIGdvIGludG8gcmVhZHkgc3RhdGUgaWYKLSsJCSAqIG5vIG90aGVyIGNsaWVudHMgYXJlIGF2YWlsYWJsZSB0byBsaXN0ZW4gZm9yIFRDUAotKwkJICogcmVxdWVzdHMgb24gdGhpcyBpbnRlcmZhY2Ugb3IgKGluIHRoZSBjYXNlIG9mIHBpcGVsaW5lZAotKwkJICogY2xpZW50cykgdG8gcmVhZCBmb3IgYWRkaXRpb25hbCBtZXNzYWdlcyBvbiB0aGUgY3VycmVudAotKwkJICogY29ubmVjdGlvbi4KLSAJCSAqLwotIAkJaWYgKGNsaWVudC0+bW9ydGFsICYmIFRDUF9DTElFTlQoY2xpZW50KSAmJiAhbnNfZ19jbGllbnR0ZXN0KSB7Ci0gCQkJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJCWlmIChjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZyA9PSAwKSB7Ci0rCQkJaWYgKChjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZyA9PSAwIHx8Ci0rCQkJICAgIChjbGllbnQtPnBpcGVsaW5lZCAmJgotKwkJCSAgICAgY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUgPCAyKSkgJiYKLSsJCQkgICAgY2xpZW50LT5uZXdzdGF0ZSAhPSBOU19DTElFTlRTVEFURV9GUkVFRCkKLSsJCQl7Ci0gCQkJCWNsaWVudC0+bW9ydGFsID0gZmFsc2U7Ci0rCQkJCWNsaWVudC0+bmV3c3RhdGUgPSBOU19DTElFTlRTVEFURV9SRUFEWTsKLSAJCQl9Ci0gCQkJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0gCQl9Ci0gCi0rCQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotKwotIAkJLyoKLSAJCSAqIFdlIGRvbid0IG5lZWQgdGhlIGNsaWVudDsgc2VuZCBpdCB0byB0aGUgaW5hY3RpdmUKLSAJCSAqIHF1ZXVlIGZvciByZWN5Y2xpbmcuCi1AQCAtMjYzNCw2ICsyNjYxLDE4IEBAIGNsaWVudF9yZXF1ZXN0KGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkJY2xpZW50LT5waXBlbGluZWQgPSBmYWxzZTsKLSAJfQotIAlpZiAoVENQX0NMSUVOVChjbGllbnQpICYmIGNsaWVudC0+cGlwZWxpbmVkKSB7Ci0rCQkvKgotKwkJICogV2UncmUgcGlwZWxpbmluZy4gUmVwbGFjZSB0aGUgY2xpZW50OyB0aGUKLSsJCSAqIHRoZSByZXBsYWNlbWVudCBjYW4gcmVhZCB0aGUgVENQIHNvY2tldCBsb29raW5nCi0rCQkgKiBmb3IgbmV3IG1lc3NhZ2VzIGFuZCB0aGlzIGNsaWVudCBjYW4gcHJvY2VzcyB0aGUKLSsJCSAqIGN1cnJlbnQgbWVzc2FnZSBhc3luY2hyb25vdXNseS4KLSsJCSAqCi0rCQkgKiBUaGVyZSBhcmUgbm93IGF0IGxlYXN0IHRocmVlIGNsaWVudHMgdXNpbmcgdGhpcwotKwkJICogVENQIHNvY2tldCAtIG9uZSBhY2NlcHRpbmcgbmV3IGNvbm5lY3Rpb25zLAotKwkJICogb25lIHJlYWRpbmcgYW4gZXhpc3RpbmcgY29ubmVjdGlvbiB0byBnZXQgbmV3Ci0rCQkgKiBtZXNzYWdlcywgYW5kIG9uZSBhbnN3ZXJpbmcgdGhlIG1lc3NhZ2UgYWxyZWFkeQotKwkJICogcmVjZWl2ZWQuCi0rCQkgKi8KLSAJCXJlc3VsdCA9IG5zX2NsaWVudF9yZXBsYWNlKGNsaWVudCk7Ci0gCQlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpIHsKLSAJCQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotQEAgLTMxOTcsNiArMzIzNiw3IEBAIGNsaWVudF9jcmVhdGUobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2NsaWVudF90ICoqY2xpZW50cCkgewotIAljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotIAljbGllbnQtPnBpcGVsaW5lX3JlZnMgPSBOVUxMOwotIAljbGllbnQtPnRjcHF1b3RhID0gTlVMTDsKLSsJY2xpZW50LT50Y3BhdHRhY2hlZCA9IGZhbHNlOwotIAljbGllbnQtPnJlY3Vyc2lvbnF1b3RhID0gTlVMTDsKLSAJY2xpZW50LT5pbnRlcmZhY2UgPSBOVUxMOwotIAljbGllbnQtPnBlZXJhZGRyX3ZhbGlkID0gZmFsc2U7Ci1AQCAtMzM1OSw5ICszMzk5LDcgQEAgY2xpZW50X25ld2Nvbm4oaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCQkJICAgICAgTlNfTE9HTU9EVUxFX0NMSUVOVCwgSVNDX0xPR19ERUJVRygzKSwKLSAJCQkgICAgICAiYWNjZXB0IGZhaWxlZDogJXMiLAotIAkJCSAgICAgIGlzY19yZXN1bHRfdG90ZXh0KG5ldmVudC0+cmVzdWx0KSk7Ci0tCQlpZiAoY2xpZW50LT50Y3BxdW90YSAhPSBOVUxMKSB7Ci0tCQkJaXNjX3F1b3RhX2RldGFjaCgmY2xpZW50LT50Y3BxdW90YSk7Ci0tCQl9Ci0rCQl0Y3BxdW90YV9kaXNjb25uZWN0KGNsaWVudCk7Ci0gCX0KLSAKLSAJaWYgKGV4aXRfY2hlY2soY2xpZW50KSkKLUBAIC0zNDAyLDcgKzM0NDAsNyBAQCBjbGllbnRfbmV3Y29ubihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci0gCQlyZXN1bHQgPSBuc19jbGllbnRfcmVwbGFjZShjbGllbnQpOwotIAkJaWYgKHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTICYmCi0tCQkgICAgKGNsaWVudC0+c2N0eC0+a2VlcHJlc3BvcmRlciA9PSBOVUxMIHx8Ci0rCQkgICAgKG5zX2dfc2VydmVyLT5rZWVwcmVzcG9yZGVyID09IE5VTEwgfHwKLSAJCSAgICAgIWFsbG93ZWQoJm5ldGFkZHIsIE5VTEwsIE5VTEwsIDAsIE5VTEwsCi0gCQkJICAgICAgbnNfZ19zZXJ2ZXItPmtlZXByZXNwb3JkZXIpKSkKLSAJCXsKLUBAIC0zNDI5LDcgKzM0NjcsNyBAQCBjbGllbnRfYWNjZXB0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJICogaW4gbmFtZWQuY29uZi4gSWYgd2UgY2FuJ3QgYXR0YWNoIHRvIGl0IGhlcmUsIHRoYXQgbWVhbnMgdGhlIFRDUAotIAkgKiBjbGllbnQgcXVvdGEgaGFzIGJlZW4gZXhjZWVkZWQuCi0gCSAqLwotLQlyZXN1bHQgPSBpc2NfcXVvdGFfYXR0YWNoKCZjbGllbnQtPnNjdHgtPnRjcHF1b3RhLAotKwlyZXN1bHQgPSBpc2NfcXVvdGFfYXR0YWNoKCZuc19nX3NlcnZlci0+dGNwcXVvdGEsCi0gCQkJCSAgJmNsaWVudC0+dGNwcXVvdGEpOwotIAlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpIHsKLSAJCQlib29sIGV4aXQ7Ci1AQCAtMzQ0NywyNyArMzQ4NSwyNyBAQCBjbGllbnRfYWNjZXB0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCQkgKiBpbnRlcmZhY2UgdG8gYmUgc3RhcnZlZCwgd2l0aCBubyBjbGllbnRzIGFibGUKLSAJCQkgKiB0byBhY2NlcHQgbmV3IGNvbm5lY3Rpb25zLgotIAkJCSAqCi0tCQkJICogU28sIHdlIGNoZWNrIGhlcmUgdG8gc2VlIGlmIGFueSBvdGhlciBjbGllbnQKLS0JCQkgKiBpcyBhbHJlYWR5IHNlcnZpY2luZyBUQ1AgcXVlcmllcyBvbiB0aGlzCi0rCQkJICogU28sIHdlIGNoZWNrIGhlcmUgdG8gc2VlIGlmIGFueSBvdGhlciBjbGllbnRzCi0rCQkJICogYXJlIGFscmVhZHkgc2VydmljaW5nIFRDUCBxdWVyaWVzIG9uIHRoaXMKLSAJCQkgKiBpbnRlcmZhY2UgKHdoZXRoZXIgYWNjZXB0aW5nLCByZWFkaW5nLCBvcgotLQkJCSAqIHByb2Nlc3NpbmcpLgotLQkJCSAqCi0tCQkJICogSWYgc28sIHRoZW4gaXQncyBva2F5ICpub3QqIHRvIGNhbGwKLS0JCQkgKiBhY2NlcHQgLSB3ZSBjYW4gbGV0IHRoaXMgY2xpZW50IHRvIGdvIGluYWN0aXZlCi0tCQkJICogYW5kIHRoZSBvdGhlciBvbmUgaGFuZGxlIHRoZSBuZXh0IGNvbm5lY3Rpb24KLS0JCQkgKiB3aGVuIGl0J3MgcmVhZHkuCi0rCQkJICogcHJvY2Vzc2luZykuIElmIHRoZXJlIGFyZSBhdCBsZWFzdCB0d28KLSsJCQkgKiAob25lIHJlYWRpbmcgYW5kIG9uZSBwcm9jZXNzaW5nIGEgcmVxdWVzdCkKLSsJCQkgKiB0aGVuIGl0J3Mgb2theSAqbm90KiB0byBjYWxsIGFjY2VwdCAtIHdlCi0rCQkJICogY2FuIGxldCB0aGlzIGNsaWVudCBnbyBpbmFjdGl2ZSBhbmQgYW5vdGhlcgotKwkJCSAqIG9uZSB3aWxsIHJlc3VtZSBhY2NlcHRpbmcgd2hlbiBpdCdzIGRvbmUuCi0gCQkJICoKLS0JCQkgKiBCdXQgaWYgbm90LCB0aGVuIHdlIG5lZWQgdG8gYmUgYSBsaXR0bGUgYml0Ci0tCQkJICogZmxleGlibGUgYWJvdXQgdGhlIHF1b3RhLiBXZSBhbGxvdyAqb25lKiBleHRyYQotLQkJCSAqIFRDUCBjbGllbnQgdGhyb3VnaCwgdG8gZW5zdXJlIHdlJ3JlIGxpc3RlbmluZyBvbgotLQkJCSAqIGV2ZXJ5IGludGVyZmFjZS4KLSsJCQkgKiBJZiB0aGVyZSBhcmVuJ3QgZW5vdWdoIGFjdGl2ZSBjbGllbnRzIG9uIHRoZQotKwkJCSAqIGludGVyZmFjZSwgdGhlbiB3ZSBjYW4gYmUgYSBsaXR0bGUgYml0Ci0rCQkJICogZmxleGlibGUgYWJvdXQgdGhlIHF1b3RhLiBXZSdsbCBhbGxvdyAqb25lKgotKwkJCSAqIGV4dHJhIGNsaWVudCB0aHJvdWdoIHRvIGVuc3VyZSB3ZSdyZSBsaXN0ZW5pbmcKLSsJCQkgKiBvbiBldmVyeSBpbnRlcmZhY2UuCi0gCQkJICoKLS0JCQkgKiAoTm90ZTogSW4gcHJhY3RpY2UgdGhpcyBtZWFucyB0aGF0IHRoZSAqcmVhbCoKLS0JCQkgKiBUQ1AgY2xpZW50IHF1b3RhIGlzIHRjcC1jbGllbnRzIHBsdXMgdGhlIG51bWJlcgotLQkJCSAqIG9mIGludGVyZmFjZXMuKQotKwkJCSAqIChOb3RlOiBJbiBwcmFjdGljZSB0aGlzIG1lYW5zIHRoYXQgdGhlIHJlYWwKLSsJCQkgKiBUQ1AgY2xpZW50IHF1b3RhIGlzIHRjcC1jbGllbnRzIHBsdXMgdGhlCi0rCQkJICogbnVtYmVyIG9mIGxpc3RlbmluZyBpbnRlcmZhY2VzIHBsdXMgMi4pCi0gCQkJICovCi0gCQkJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJCWV4aXQgPSAoY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUgPiAwKTsKLSsJCQlleGl0ID0gKGNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlID4gMSk7Ci0gCQkJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0gCi0gCQkJaWYgKGV4aXQpIHsKLUBAIC0zNDc1LDYgKzM1MTMsOSBAQCBjbGllbnRfYWNjZXB0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCQkJKHZvaWQpZXhpdF9jaGVjayhjbGllbnQpOwotIAkJCQlyZXR1cm47Ci0gCQkJfQotKwotKwl9IGVsc2UgewotKwkJY2xpZW50LT50Y3BhdHRhY2hlZCA9IHRydWU7Ci0gCX0KLSAKLSAJLyoKLUBAIC0zNTA3LDkgKzM1NDgsMTYgQEAgY2xpZW50X2FjY2VwdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQlVTkVYUEVDVEVEX0VSUk9SKF9fRklMRV9fLCBfX0xJTkVfXywKLSAJCQkJICJpc2Nfc29ja2V0X2FjY2VwdCgpIGZhaWxlZDogJXMiLAotIAkJCQkgaXNjX3Jlc3VsdF90b3RleHQocmVzdWx0KSk7Ci0tCQlpZiAoY2xpZW50LT50Y3BxdW90YSAhPSBOVUxMKSB7Ci0tCQkJaXNjX3F1b3RhX2RldGFjaCgmY2xpZW50LT50Y3BxdW90YSk7Ci0rCi0rCQl0Y3BxdW90YV9kaXNjb25uZWN0KGNsaWVudCk7Ci0rCi0rCQlpZiAoY2xpZW50LT50Y3BhY3RpdmUpIHsKLSsJCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCQkJY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUtLTsKLSsJCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJCQljbGllbnQtPnRjcGFjdGl2ZSA9IGZhbHNlOwotIAkJfQotKwotIAkJcmV0dXJuOwotIAl9Ci0gCi1AQCAtMzUyNywxMyArMzU3NSwxMiBAQCBjbGllbnRfYWNjZXB0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJICogb25jZSB0aGUgY29ubmVjdGlvbiBpcyBlc3RhYmxpc2hlZC4KLSAJICoKLSAJICogV2hlbiB0aGUgY2xpZW50IG9iamVjdCBpcyBzaHV0dGluZyBkb3duIGFmdGVyIGhhbmRsaW5nIGEgVENQCi0tCSAqIHJlcXVlc3QgKHNlZSBleGl0X2NoZWNrKCkpLCBpdCBsb29rcyB0byBzZWUgd2hldGhlciB0aGlzIHZhbHVlIGlzCi0tCSAqIG5vbi16ZXJvLiBJZiBzbywgdGhhdCBtZWFucyBhbm90aGVyIGNsaWVudCBoYXMgYWxyZWFkeSBjYWxsZWQKLS0JICogYWNjZXB0KCkgYW5kIGlzIHdhaXRpbmcgdG8gZXN0YWJsaXNoIHRoZSBuZXh0IGNvbm5lY3Rpb24sIHdoaWNoCi0tCSAqIG1lYW5zIHRoZSBmaXJzdCBjbGllbnQgaXMgZnJlZSB0byBnbyBpbmFjdGl2ZS4gT3RoZXJ3aXNlLAotLQkgKiB0aGUgZmlyc3QgY2xpZW50IG11c3QgY29tZSBiYWNrIGFuZCBjYWxsIGFjY2VwdCgpIGFnYWluOyB0aGlzCi0tCSAqIGd1YXJhbnRlZXMgdGhlcmUgd2lsbCBhbHdheXMgYmUgYXQgbGVhc3Qgb25lIGNsaWVudCBsaXN0ZW5pbmcKLS0JICogZm9yIG5ldyBUQ1AgY29ubmVjdGlvbnMgb24gZWFjaCBpbnRlcmZhY2UuCi0rCSAqIHJlcXVlc3QgKHNlZSBleGl0X2NoZWNrKCkpLCBpZiB0aGlzIHZhbHVlIGlzIGF0IGxlYXN0IG9uZSwgdGhhdAotKwkgKiBtZWFucyBhbm90aGVyIGNsaWVudCBoYXMgY2FsbGVkIGFjY2VwdCgpIGFuZCBpcyB3YWl0aW5nIHRvCi0rCSAqIGVzdGFibGlzaCB0aGUgbmV4dCBjb25uZWN0aW9uLiBUaGF0IG1lYW5zIHRoZSBjbGllbnQgbWF5IGJlCi0rCSAqIGJlIGZyZWUgdG8gYmVjb21lIGluYWN0aXZlOyBvdGhlcndpc2UgaXQgbWF5IG5lZWQgdG8gc3RhcnQKLSsJICogbGlzdGVuaW5nIGZvciBjb25uZWN0aW9ucyBpdHNlbGYgdG8gcHJldmVudCB0aGUgaW50ZXJmYWNlCi0rCSAqIGdvaW5nIGRlYWQuCi0gCSAqLwotIAlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0gCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nKys7Ci1AQCAtMzYxMywxOSArMzY2MCwxOSBAQCBuc19jbGllbnRfcmVwbGFjZShuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkJCSAgICBjbGllbnQtPnRjcHNvY2tldCwgY2xpZW50KTsKLSAJfSBlbHNlIHsKLSAJCXJlc3VsdCA9IGdldF9jbGllbnQoY2xpZW50LT5tYW5hZ2VyLCBjbGllbnQtPmludGVyZmFjZSwKLS0JCQkJICAgIGNsaWVudC0+ZGlzcGF0Y2gsIHRjcCk7Ci0rCQkJCSAgICBjbGllbnQtPmRpc3BhdGNoLCBjbGllbnQsIHRjcCk7Ci0rCi0rCQkvKgotKwkJICogVGhlIHJlc3BvbnNpYmlsaXR5IGZvciBsaXN0ZW5pbmcgZm9yIG5ldyByZXF1ZXN0cyBpcyBoZXJlYnkKLSsJCSAqIHRyYW5zZmVycmVkIHRvIHRoZSBuZXcgY2xpZW50LiAgVGhlcmVmb3JlLCB0aGUgb2xkIGNsaWVudAotKwkJICogc2hvdWxkIHJlZnJhaW4gZnJvbSBsaXN0ZW5pbmcgZm9yIGFueSBtb3JlIHJlcXVlc3RzLgotKwkJICovCi0rCQljbGllbnQtPm1vcnRhbCA9IHRydWU7Ci0gCX0KLSAJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0gCQlyZXR1cm4gKHJlc3VsdCk7Ci0gCX0KLSAKLS0JLyoKLS0JICogVGhlIHJlc3BvbnNpYmlsaXR5IGZvciBsaXN0ZW5pbmcgZm9yIG5ldyByZXF1ZXN0cyBpcyBoZXJlYnkKLS0JICogdHJhbnNmZXJyZWQgdG8gdGhlIG5ldyBjbGllbnQuICBUaGVyZWZvcmUsIHRoZSBvbGQgY2xpZW50Ci0tCSAqIHNob3VsZCByZWZyYWluIGZyb20gbGlzdGVuaW5nIGZvciBhbnkgbW9yZSByZXF1ZXN0cy4KLS0JICovCi0tCWNsaWVudC0+bW9ydGFsID0gdHJ1ZTsKLS0KLSAJcmV0dXJuIChJU0NfUl9TVUNDRVNTKTsKLSB9Ci0gCi1AQCAtMzc1OSw3ICszODA2LDcgQEAgbnNfY2xpZW50bWdyX2Rlc3Ryb3kobnNfY2xpZW50bWdyX3QgKiptYW5hZ2VycCkgewotIAotIHN0YXRpYyBpc2NfcmVzdWx0X3QKLSBnZXRfY2xpZW50KG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLAotLQkgICBkbnNfZGlzcGF0Y2hfdCAqZGlzcCwgYm9vbCB0Y3ApCi0rCSAgIGRuc19kaXNwYXRjaF90ICpkaXNwLCBuc19jbGllbnRfdCAqb2xkY2xpZW50LCBib29sIHRjcCkKLSB7Ci0gCWlzY19yZXN1bHRfdCByZXN1bHQgPSBJU0NfUl9TVUNDRVNTOwotIAlpc2NfZXZlbnRfdCAqZXY7Ci1AQCAtMzgwMyw2ICszODUwLDE2IEBAIGdldF9jbGllbnQobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsCi0gCWNsaWVudC0+ZHNjcCA9IGlmcC0+ZHNjcDsKLSAKLSAJaWYgKHRjcCkgewotKwkJY2xpZW50LT50Y3BhdHRhY2hlZCA9IGZhbHNlOwotKwkJaWYgKG9sZGNsaWVudCAhPSBOVUxMKSB7Ci0rCQkJY2xpZW50LT50Y3BhdHRhY2hlZCA9IG9sZGNsaWVudC0+dGNwYXR0YWNoZWQ7Ci0rCQl9Ci0rCi0rCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCQljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSsrOwotKwkJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0rCQljbGllbnQtPnRjcGFjdGl2ZSA9IHRydWU7Ci0rCi0gCQljbGllbnQtPmF0dHJpYnV0ZXMgfD0gTlNfQ0xJRU5UQVRUUl9UQ1A7Ci0gCQlpc2Nfc29ja2V0X2F0dGFjaChpZnAtPnRjcHNvY2tldCwKLSAJCQkJICAmY2xpZW50LT50Y3BsaXN0ZW5lcik7Ci1AQCAtMzg2Niw3ICszOTIzLDggQEAgZ2V0X3dvcmtlcihuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwgaXNjX3NvY2tldF90ICpzb2NrLAotIAluc19pbnRlcmZhY2VfYXR0YWNoKGlmcCwgJmNsaWVudC0+aW50ZXJmYWNlKTsKLSAJY2xpZW50LT5uZXdzdGF0ZSA9IGNsaWVudC0+c3RhdGUgPSBOU19DTElFTlRTVEFURV9XT1JLSU5HOwotIAlJTlNJU1QoY2xpZW50LT5yZWN1cnNpb25xdW90YSA9PSBOVUxMKTsKLS0JY2xpZW50LT50Y3BxdW90YSA9ICZjbGllbnQtPnNjdHgtPnRjcHF1b3RhOwotKwljbGllbnQtPnRjcHF1b3RhID0gJm5zX2dfc2VydmVyLT50Y3BxdW90YTsKLSsJY2xpZW50LT50Y3BhdHRhY2hlZCA9IG9sZGNsaWVudC0+dGNwYXR0YWNoZWQ7Ci0gCi0gCWNsaWVudC0+ZHNjcCA9IGlmcC0+ZHNjcDsKLSAKLUBAIC0zODg1LDcgKzM5NDMsNiBAQCBnZXRfd29ya2VyKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLCBpc2Nfc29ja2V0X3QgKnNvY2ssCi0gCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSAJY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUrKzsKLSAJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCi0gCWNsaWVudC0+dGNwYWN0aXZlID0gdHJ1ZTsKLSAKLSAJSU5TSVNUKGNsaWVudC0+dGNwbXNnX3ZhbGlkID09IGZhbHNlKTsKLUBAIC0zOTEzLDcgKzM5NzAsOCBAQCBuc19jbGllbnRtZ3JfY3JlYXRlY2xpZW50cyhuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgdW5zaWduZWQgaW50IG4sCi0gCU1UUkFDRSgiY3JlYXRlY2xpZW50cyIpOwotIAotIAlmb3IgKGRpc3AgPSAwOyBkaXNwIDwgbjsgZGlzcCsrKSB7Ci0tCQlyZXN1bHQgPSBnZXRfY2xpZW50KG1hbmFnZXIsIGlmcCwgaWZwLT51ZHBkaXNwYXRjaFtkaXNwXSwgdGNwKTsKLSsJCXJlc3VsdCA9IGdldF9jbGllbnQobWFuYWdlciwgaWZwLCBpZnAtPnVkcGRpc3BhdGNoW2Rpc3BdLAotKwkJCQkgICAgTlVMTCwgdGNwKTsKLSAJCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykKLSAJCQlicmVhazsKLSAJfQotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmgKLWluZGV4IGFlZWQ5Y2NkZGEuLmUyYzQwYWNkMjggMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaAotKysrIGIvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmgKLUBAIC05LDggKzksNiBAQAotICAqIGluZm9ybWF0aW9uIHJlZ2FyZGluZyBjb3B5cmlnaHQgb3duZXJzaGlwLgotICAqLwotIAotLS8qICRJZDogY2xpZW50LmgsdiAxLjk2IDIwMTIvMDEvMzEgMjM6NDc6MzEgdGJveCBFeHAgJCAqLwotLQotICNpZm5kZWYgTkFNRURfQ0xJRU5UX0gKLSAjZGVmaW5lIE5BTUVEX0NMSUVOVF9IIDEKLSAKLUBAIC0xMzYsNiArMTM0LDcgQEAgc3RydWN0IG5zX2NsaWVudCB7Ci0gCWJvb2wJCQlwaXBlbGluZWQ7ICAgLyolPCBUQ1AgcXVlcmllcyBub3QgaW4gc2VxdWVuY2UgKi8KLSAJaXNjX3JlZmNvdW50X3QJCSpwaXBlbGluZV9yZWZzOwotIAlpc2NfcXVvdGFfdAkJKnRjcHF1b3RhOwotKwlib29sCQkJdGNwYXR0YWNoZWQ7Ci0gCWlzY19xdW90YV90CQkqcmVjdXJzaW9ucXVvdGE7Ci0gCW5zX2ludGVyZmFjZV90CQkqaW50ZXJmYWNlOwotIAotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDA1LXJlZmFjdG9yLXRjcHF1b3RhLWFuZC1waXBlbGluZS1yZWZzLWFsbG93LXNwZWNpYWwtY2EucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDUtcmVmYWN0b3ItdGNwcXVvdGEtYW5kLXBpcGVsaW5lLXJlZnMtYWxsb3ctc3BlY2lhbC1jYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTg3ZTc1Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDUtcmVmYWN0b3ItdGNwcXVvdGEtYW5kLXBpcGVsaW5lLXJlZnMtYWxsb3ctc3BlY2lhbC1jYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkxMSArMCwwIEBACi1CYWNrcG9ydCBwYXRjaCB0byBmaXggQ1ZFLTIwMTgtNTc0My4KLQotUmVmOgotaHR0cHM6Ly9zZWN1cml0eS10cmFja2VyLmRlYmlhbi5vcmcvdHJhY2tlci9DVkUtMjAxOC01NzQzCi0KLUNWRTogQ1ZFLTIwMTgtNTc0MwotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuaXNjLm9yZy9pc2MtcHJvamVjdHMvYmluZDkvY29tbWl0L2M0N2NjZjZdCi0KLVNpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgotCi1Gcm9tIGM0N2NjZjYzMGYxNDczNzg1NjhiMzNlOGZkYjdiNzU0ZjIyOGMzNDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBFdmFuIEh1bnQgPGVhY2hAaXNjLm9yZz4KLURhdGU6IEZyaSwgNSBBcHIgMjAxOSAxNjoyNjowNSAtMDcwMAotU3ViamVjdDogW1BBVENIIDUvNl0gcmVmYWN0b3IgdGNwcXVvdGEgYW5kIHBpcGVsaW5lIHJlZnM7IGFsbG93IHNwZWNpYWwtY2FzZQotIG92ZXJydW4gaW4gaXNjX3F1b3RhCi0KLS0gaWYgdGhlIFRDUCBxdW90YSBoYXMgYmVlbiBleGNlZWRlZCBidXQgdGhlcmUgYXJlIG5vIGNsaWVudHMgbGlzdGVuaW5nCi0gIGZvciBuZXcgY29ubmVjdGlvbnMgb24gdGhlIGludGVyZmFjZSwgd2UgY2FuIG5vdyBmb3JjZSBhdHRhY2htZW50IHRvIHRoZQotICBxdW90YSB1c2luZyBpc2NfcXVvdGFfZm9yY2UoKSwgaW5zdGVhZCBvZiBjYXJyeWluZyBvbiB3aXRoIHRoZSBxdW90YSBub3QKLSAgYXR0YWNoZWQuCi0tIHRoZSBUQ1AgY2xpZW50IHF1b3RhIGlzIG5vdyByZWZlcmVuY2VkIHZpYSBhIHJlZmVyZW5jZS1jb3VudGVkCi0gICduc190Y3Bjb25uJyBvYmplY3QsIG9uZSBvZiB3aGljaCBpcyBjcmVhdGVkIHdoZW5ldmVyIGEgY2xpZW50IGJlZ2lucwotICBsaXN0ZW5pbmcgZm9yIG5ldyBjb25uZWN0aW9ucywgYW5kIGF0dGFjaGVkIHRvIGJ5IG1lbWJlcnMgb2YgdGhhdAotICBjbGllbnQncyBwaXBlbGluZSBncm91cC4gd2hlbiB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhlIHRjcGNvbm4KLSAgb2JqZWN0IGlzIGRldGFjaGVkLCBpdCBpcyBmcmVlZCBhbmQgdGhlIFRDUCBxdW90YSBzbG90IGlzIHJlbGVhc2VkLgotLSByZWR1Y2UgY29kZSBkdXBsaWNhdGlvbiBieSBhZGRpbmcgbWFya190Y3BfYWN0aXZlKCkgZnVuY3Rpb24uCi0tIGNvbnZlcnQgY291bnRlcnMgdG8gYXRvbWljLgotCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCA3ZTgyMjIzNzhjYTI0ZjEzMDJhMGMxYzYzODU2NTA1MGFiMDQ2ODFiKQotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgNDkzOTQ1MTI3NTcyMmJmZGE0OTBlYTg2Y2ExM2U4NGY2YmM3MWU0NikKLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDEzZjdjOTE4Yjg3MjBkODkwNDA4ZjY3OGJkNzNjMjBlNjM0NTM5ZDkpCi0tLS0KLSBiaW4vbmFtZWQvY2xpZW50LmMgICAgICAgICAgICAgICAgICAgICB8IDQ0NCArKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCi0gYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmggICAgICAgfCAgMTIgKy0KLSBiaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9pbnRlcmZhY2VtZ3IuaCB8ICAgNiArLQotIGJpbi9uYW1lZC9pbnRlcmZhY2VtZ3IuYyAgICAgICAgICAgICAgIHwgICAxICsKLSBsaWIvaXNjL2luY2x1ZGUvaXNjL3F1b3RhLmggICAgICAgICAgICB8ICAgNyArCi0gbGliL2lzYy9xdW90YS5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgMzMgKy0KLSBsaWIvaXNjL3dpbjMyL2xpYmlzYy5kZWYuaW4gICAgICAgICAgICB8ICAgMSArCi0gNyBmaWxlcyBjaGFuZ2VkLCAyMzYgaW5zZXJ0aW9ucygrKSwgMjY4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2NsaWVudC5jIGIvYmluL25hbWVkL2NsaWVudC5jCi1pbmRleCA2MWU5NmRkMjhjLi5kODI2YWIzMmJmIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2NsaWVudC5jCi0rKysgYi9iaW4vbmFtZWQvY2xpZW50LmMKLUBAIC0yNDQsOCArMjQ0LDcgQEAgc3RhdGljIHZvaWQgY2xpZW50X3N0YXJ0KGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCk7Ci0gc3RhdGljIHZvaWQgY2xpZW50X3JlcXVlc3QoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KTsKLSBzdGF0aWMgdm9pZCBuc19jbGllbnRfZHVtcG1lc3NhZ2UobnNfY2xpZW50X3QgKmNsaWVudCwgY29uc3QgY2hhciAqcmVhc29uKTsKLSBzdGF0aWMgaXNjX3Jlc3VsdF90IGdldF9jbGllbnQobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsCi0tCQkJICAgICAgIGRuc19kaXNwYXRjaF90ICpkaXNwLCBuc19jbGllbnRfdCAqb2xkY2xpZW50LAotLQkJCSAgICAgICBib29sIHRjcCk7Ci0rCQkJICAgICAgIGRuc19kaXNwYXRjaF90ICpkaXNwLCBib29sIHRjcCk7Ci0gc3RhdGljIGlzY19yZXN1bHRfdCBnZXRfd29ya2VyKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLAotIAkJCSAgICAgICBpc2Nfc29ja2V0X3QgKnNvY2ssIG5zX2NsaWVudF90ICpvbGRjbGllbnQpOwotIHN0YXRpYyBpbmxpbmUgYm9vbAotQEAgLTMwMSwxNiArMzAwLDMyIEBAIG5zX2NsaWVudF9zZXR0aW1lb3V0KG5zX2NsaWVudF90ICpjbGllbnQsIHVuc2lnbmVkIGludCBzZWNvbmRzKSB7Ci0gfQotIAotIC8qJQotLSAqIEFsbG9jYXRlIGEgcmVmZXJlbmNlIGNvdW50ZXIgdGhhdCB3aWxsIHRyYWNrIHRoZSBudW1iZXIgb2YgY2xpZW50IHN0cnVjdHVyZXMKLS0gKiB1c2luZyB0aGUgVENQIGNvbm5lY3Rpb24gdGhhdCAnY2xpZW50JyBjYWxsZWQgYWNjZXB0KCkgZm9yLiAgVGhpcyBjb3VudGVyCi0tICogd2lsbCBiZSBzaGFyZWQgYmV0d2VlbiBhbGwgY2xpZW50IHN0cnVjdHVyZXMgYXNzb2NpYXRlZCB3aXRoIHRoaXMgVENQCi0tICogY29ubmVjdGlvbi4KLSsgKiBBbGxvY2F0ZSBhIHJlZmVyZW5jZS1jb3VudGVkIG9iamVjdCB0aGF0IHdpbGwgbWFpbnRhaW4gYSBzaW5nbGUgcG9pbnRlciB0bwotKyAqIHRoZSAoYWxzbyByZWZlcmVuY2UtY291bnRlZCkgVENQIGNsaWVudCBxdW90YSwgc2hhcmVkIGJldHdlZW4gYWxsIHRoZQotKyAqIGNsaWVudHMgcHJvY2Vzc2luZyBxdWVyaWVzIG9uIGEgc2luZ2xlIFRDUCBjb25uZWN0aW9uLCBzbyB0aGF0IGFsbAotKyAqIGNsaWVudHMgc2hhcmluZyB0aGUgb25lIHNvY2tldCB3aWxsIHRvZ2V0aGVyIGNvbnN1bWUgb25seSBvbmUgc2xvdCBpbgotKyAqIHRoZSAndGNwLWNsaWVudHMnIHF1b3RhLgotICAqLwotLXN0YXRpYyB2b2lkCi0tcGlwZWxpbmVfaW5pdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0tCWlzY19yZWZjb3VudF90ICpyZWZzOwotK3N0YXRpYyBpc2NfcmVzdWx0X3QKLSt0Y3Bjb25uX2luaXQobnNfY2xpZW50X3QgKmNsaWVudCwgYm9vbCBmb3JjZSkgewotKwlpc2NfcmVzdWx0X3QgcmVzdWx0OwotKwlpc2NfcXVvdGFfdCAqcXVvdGEgPSBOVUxMOwotKwluc190Y3Bjb25uX3QgKnRjb25uID0gTlVMTDsKLSAKLS0JUkVRVUlSRShjbGllbnQtPnBpcGVsaW5lX3JlZnMgPT0gTlVMTCk7Ci0rCVJFUVVJUkUoY2xpZW50LT50Y3Bjb25uID09IE5VTEwpOwotKwotKwkvKgotKwkgKiBUcnkgdG8gYXR0YWNoIHRvIHRoZSBxdW90YSBmaXJzdCwgc28gd2Ugd29uJ3QgcG9pbnRsZXNzbHkKLSsJICogYWxsb2NhdGUgbWVtb3J5IGZvciBhIHRjcGNvbm4gb2JqZWN0IGlmIHdlIGNhbid0IGdldCBvbmUuCi0rCSAqLwotKwlpZiAoZm9yY2UpIHsKLSsJCXJlc3VsdCA9IGlzY19xdW90YV9mb3JjZSgmbnNfZ19zZXJ2ZXItPnRjcHF1b3RhLCAmcXVvdGEpOwotKwl9IGVsc2UgewotKwkJcmVzdWx0ID0gaXNjX3F1b3RhX2F0dGFjaCgmbnNfZ19zZXJ2ZXItPnRjcHF1b3RhLCAmcXVvdGEpOwotKwl9Ci0rCWlmIChyZXN1bHQgIT0gSVNDX1JfU1VDQ0VTUykgewotKwkJcmV0dXJuIChyZXN1bHQpOwotKwl9Ci0gCi0gCS8qCi0gCSAqIEEgZ2xvYmFsIG1lbW9yeSBjb250ZXh0IGlzIHVzZWQgZm9yIHRoZSBhbGxvY2F0aW9uIGFzIGRpZmZlcmVudAotQEAgLTMyMCw3OCArMzM1LDgwIEBAIHBpcGVsaW5lX2luaXQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkgKiBjb250ZW50aW9uIGhlcmUgaXMgZXhwZWN0ZWQgdG8gYmUgbmVnbGlnaWJsZSwgZ2l2ZW4gdGhhdCB0aGlzIGNvZGUKLSAJICogaXMgb25seSBleGVjdXRlZCBmb3IgVENQIGNvbm5lY3Rpb25zLgotIAkgKi8KLS0JcmVmcyA9IGlzY19tZW1fYWxsb2NhdGUobnNfZ19tY3R4LCBzaXplb2YoKnJlZnMpKTsKLS0JaXNjX3JlZmNvdW50X2luaXQocmVmcywgMSk7Ci0tCWNsaWVudC0+cGlwZWxpbmVfcmVmcyA9IHJlZnM7Ci0rCXRjb25uID0gaXNjX21lbV9hbGxvY2F0ZShuc19nX21jdHgsIHNpemVvZigqdGNvbm4pKTsKLSsKLSsJaXNjX3JlZmNvdW50X2luaXQoJnRjb25uLT5yZWZzLCAxKTsKLSsJdGNvbm4tPnRjcHF1b3RhID0gcXVvdGE7Ci0rCXF1b3RhID0gTlVMTDsKLSsJdGNvbm4tPnBpcGVsaW5lZCA9IGZhbHNlOwotKwotKwljbGllbnQtPnRjcGNvbm4gPSB0Y29ubjsKLSsKLSsJcmV0dXJuIChJU0NfUl9TVUNDRVNTKTsKLSB9Ci0gCi0gLyolCi0tICogSW5jcmVhc2UgdGhlIGNvdW50IG9mIGNsaWVudCBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBUQ1AgY29ubmVjdGlvbiB0aGF0Ci0tICogJ3NvdXJjZScgaXMgYXNzb2NpYXRlZCB3aXRoIGFuZCBwdXQgYSBwb2ludGVyIHRvIHRoYXQgY291bnQgaW4gJ3RhcmdldCcsCi0tICogdGh1cyBhc3NvY2lhdGluZyBpdCB3aXRoIHRoZSBzYW1lIFRDUCBjb25uZWN0aW9uLgotKyAqIEluY3JlYXNlIHRoZSBjb3VudCBvZiBjbGllbnQgc3RydWN0dXJlcyBzaGFyaW5nIHRoZSBUQ1AgY29ubmVjdGlvbgotKyAqIHRoYXQgJ3NvdXJjZScgaXMgYXNzb2NpYXRlZCB3aXRoOyBhZGQgYSBwb2ludGVyIHRvIHRoZSBzYW1lIHRjcGNvbm4KLSsgKiB0byAndGFyZ2V0JywgdGh1cyBhc3NvY2lhdGluZyBpdCB3aXRoIHRoZSBzYW1lIFRDUCBjb25uZWN0aW9uLgotICAqLwotIHN0YXRpYyB2b2lkCi0tcGlwZWxpbmVfYXR0YWNoKG5zX2NsaWVudF90ICpzb3VyY2UsIG5zX2NsaWVudF90ICp0YXJnZXQpIHsKLSt0Y3Bjb25uX2F0dGFjaChuc19jbGllbnRfdCAqc291cmNlLCBuc19jbGllbnRfdCAqdGFyZ2V0KSB7Ci0gCWludCByZWZzOwotIAotLQlSRVFVSVJFKHNvdXJjZS0+cGlwZWxpbmVfcmVmcyAhPSBOVUxMKTsKLS0JUkVRVUlSRSh0YXJnZXQtPnBpcGVsaW5lX3JlZnMgPT0gTlVMTCk7Ci0rCVJFUVVJUkUoc291cmNlLT50Y3Bjb25uICE9IE5VTEwpOwotKwlSRVFVSVJFKHRhcmdldC0+dGNwY29ubiA9PSBOVUxMKTsKLSsJUkVRVUlSRShzb3VyY2UtPnRjcGNvbm4tPnBpcGVsaW5lZCk7Ci0gCi0tCWlzY19yZWZjb3VudF9pbmNyZW1lbnQoc291cmNlLT5waXBlbGluZV9yZWZzLCAmcmVmcyk7Ci0rCWlzY19yZWZjb3VudF9pbmNyZW1lbnQoJnNvdXJjZS0+dGNwY29ubi0+cmVmcywgJnJlZnMpOwotIAlJTlNJU1QocmVmcyA+IDEpOwotLQl0YXJnZXQtPnBpcGVsaW5lX3JlZnMgPSBzb3VyY2UtPnBpcGVsaW5lX3JlZnM7Ci0rCXRhcmdldC0+dGNwY29ubiA9IHNvdXJjZS0+dGNwY29ubjsKLSB9Ci0gCi0gLyolCi0tICogRGVjcmVhc2UgdGhlIGNvdW50IG9mIGNsaWVudCBzdHJ1Y3R1cmVzIHVzaW5nIHRoZSBUQ1AgY29ubmVjdGlvbiB0aGF0Ci0rICogRGVjcmVhc2UgdGhlIGNvdW50IG9mIGNsaWVudCBzdHJ1Y3R1cmVzIHNoYXJpbmcgdGhlIFRDUCBjb25uZWN0aW9uIHRoYXQKLSAgKiAnY2xpZW50JyBpcyBhc3NvY2lhdGVkIHdpdGguICBJZiB0aGlzIGlzIHRoZSBsYXN0IGNsaWVudCB1c2luZyB0aGlzIFRDUAotLSAqIGNvbm5lY3Rpb24sIGZyZWUgdGhlIHJlZmVyZW5jZSBjb3VudGVyIGFuZCByZXR1cm4gdHJ1ZTsgb3RoZXJ3aXNlLCByZXR1cm4KLS0gKiBmYWxzZS4KLSsgKiBjb25uZWN0aW9uLCB3ZSBkZXRhY2ggZnJvbSB0aGUgVENQIHF1b3RhIGFuZCBmcmVlIHRoZSB0Y3Bjb25uCi0rICogb2JqZWN0LiBFaXRoZXIgd2F5LCBjbGllbnQtPnRjcGNvbm4gaXMgc2V0IHRvIE5VTEwuCi0gICovCi0tc3RhdGljIGJvb2wKLS1waXBlbGluZV9kZXRhY2gobnNfY2xpZW50X3QgKmNsaWVudCkgewotLQlpc2NfcmVmY291bnRfdCAqcmVmY291bnQ7Ci0rc3RhdGljIHZvaWQKLSt0Y3Bjb25uX2RldGFjaChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0rCW5zX3RjcGNvbm5fdCAqdGNvbm4gPSBOVUxMOwotIAlpbnQgcmVmczsKLSAKLS0JUkVRVUlSRShjbGllbnQtPnBpcGVsaW5lX3JlZnMgIT0gTlVMTCk7Ci0tCi0tCXJlZmNvdW50ID0gY2xpZW50LT5waXBlbGluZV9yZWZzOwotLQljbGllbnQtPnBpcGVsaW5lX3JlZnMgPSBOVUxMOwotKwlSRVFVSVJFKGNsaWVudC0+dGNwY29ubiAhPSBOVUxMKTsKLSAKLS0JaXNjX3JlZmNvdW50X2RlY3JlbWVudChyZWZjb3VudCwgcmVmcyk7Ci0rCXRjb25uID0gY2xpZW50LT50Y3Bjb25uOwotKwljbGllbnQtPnRjcGNvbm4gPSBOVUxMOwotIAotKwlpc2NfcmVmY291bnRfZGVjcmVtZW50KCZ0Y29ubi0+cmVmcywgJnJlZnMpOwotIAlpZiAocmVmcyA9PSAwKSB7Ci0tCQlpc2NfbWVtX2ZyZWUobnNfZ19tY3R4LCByZWZzKTsKLS0JCXJldHVybiAodHJ1ZSk7Ci0rCQlpc2NfcXVvdGFfZGV0YWNoKCZ0Y29ubi0+dGNwcXVvdGEpOwotKwkJaXNjX21lbV9mcmVlKG5zX2dfbWN0eCwgdGNvbm4pOwotIAl9Ci0tCi0tCXJldHVybiAoZmFsc2UpOwotIH0KLSAKLS0vKgotLSAqIERldGFjaCBhIGNsaWVudCBmcm9tIHRoZSBUQ1AgY2xpZW50IHF1b3RhIGlmIGFwcHJvcHJpYXRlLCBhbmQgc2V0Ci0tICogdGhlIHF1b3RhIHBvaW50ZXIgdG8gTlVMTC4KLS0gKgotLSAqIFNvbWV0aW1lcyB3aGVuIHRoZSBUQ1AgY2xpZW50IHF1b3RhIGlzIGV4aGF1c3RlZCBidXQgdGhlcmUgYXJlIG5vIG90aGVyCi0tICogY2xpZW50cyBzZXJ2aWNpbmcgdGhlIGludGVyZmFjZSwgYSBjbGllbnQgd2lsbCBiZSBhbGxvd2VkIHRvIGNvbnRpbnVlCi0tICogcnVubmluZyBkZXNwaXRlIG5vdCBoYXZpbmcgYmVlbiBhdHRhY2hlZCB0byB0aGUgcXVvdGEuIEluIHRoaXMgZXZlbnQsCi0tICogdGhlIFRDUCBxdW90YSB3YXMgbmV2ZXIgYXR0YWNoZWQgdG8gdGhlIGNsaWVudCwgc28gd2hlbiB0aGUgY2xpZW50IChvcgotLSAqIGFzc29jaWF0ZWQgcGlwZWxpbmUgZ3JvdXApIHNodXRzIGRvd24sIHRoZSBxdW90YSBtdXN0IE5PVCBiZSBkZXRhY2hlZC4KLSsvKiUKLSsgKiBNYXJrIGEgY2xpZW50IGFzIGFjdGl2ZSBhbmQgaW5jcmVtZW50IHRoZSBpbnRlcmZhY2UncyAnbnRjcGFjdGl2ZScKLSsgKiBjb3VudGVyLCBhcyBhIHNpZ25hbCB0aGF0IHRoZXJlIGlzIGF0IGxlYXN0IG9uZSBjbGllbnQgc2VydmljaW5nCi0rICogVENQIHF1ZXJpZXMgZm9yIHRoZSBpbnRlcmZhY2UuIElmIHdlIHJlYWNoIHRoZSBUQ1AgY2xpZW50IHF1b3RhIGF0Ci0rICogc29tZSBwb2ludCwgdGhpcyB3aWxsIGJlIHVzZWQgdG8gZGV0ZXJtaW5lIHdoZXRoZXIgYSBxdW90YSBvdmVycnVuCi0rICogc2hvdWxkIGJlIHBlcm1pdHRlZC4KLSAgKgotLSAqIE90aGVyd2lzZSwgaWYgdGhlIHF1b3RhIHBvaW50ZXIgaXMgc2V0LCBpdCBzaG91bGQgYmUgZGV0YWNoZWQuIElmIG5vdAotLSAqIHNldCBhdCBhbGwsIHdlIGp1c3QgcmV0dXJuIHdpdGhvdXQgZG9pbmcgYW55dGhpbmcuCi0rICogTWFya2luZyB0aGUgY2xpZW50IGFjdGl2ZSB3aXRoIHRoZSAndGNwYWN0aXZlJyBmbGFnIGVuc3VyZXMgcHJvcGVyCi0rICogYWNjb3VudGluZywgYnkgcHJldmVudGluZyB1cyBmcm9tIGluY3JlbWVudGluZyBvciBkZWNyZW1lbnRpbmcKLSsgKiAnbnRjcGFjdGl2ZScgbW9yZSB0aGFuIG9uY2UgcGVyIGNsaWVudC4KLSAgKi8KLSBzdGF0aWMgdm9pZAotLXRjcHF1b3RhX2Rpc2Nvbm5lY3QobnNfY2xpZW50X3QgKmNsaWVudCkgewotLQlpZiAoY2xpZW50LT50Y3BxdW90YSA9PSBOVUxMKSB7Ci0tCQlyZXR1cm47Ci0tCX0KLS0KLS0JaWYgKGNsaWVudC0+dGNwYXR0YWNoZWQpIHsKLS0JCWlzY19xdW90YV9kZXRhY2goJmNsaWVudC0+dGNwcXVvdGEpOwotLQkJY2xpZW50LT50Y3BhdHRhY2hlZCA9IGZhbHNlOwotLQl9IGVsc2UgewotLQkJY2xpZW50LT50Y3BxdW90YSA9IE5VTEw7Ci0rbWFya190Y3BfYWN0aXZlKG5zX2NsaWVudF90ICpjbGllbnQsIGJvb2wgYWN0aXZlKSB7Ci0rCWlmIChhY3RpdmUgJiYgIWNsaWVudC0+dGNwYWN0aXZlKSB7Ci0rCQlpc2NfYXRvbWljX3hhZGQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLCAxKTsKLSsJCWNsaWVudC0+dGNwYWN0aXZlID0gYWN0aXZlOwotKwl9IGVsc2UgaWYgKCFhY3RpdmUgJiYgY2xpZW50LT50Y3BhY3RpdmUpIHsKLSsJCXVpbnQzMl90IG9sZCA9Ci0rCQkJaXNjX2F0b21pY194YWRkKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSwgLTEpOwotKwkJSU5TSVNUKG9sZCA+IDApOwotKwkJY2xpZW50LT50Y3BhY3RpdmUgPSBhY3RpdmU7Ci0gCX0KLSB9Ci0gCi1AQCAtNDg0LDcgKzUwMSw4IEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJSU5TSVNUKGNsaWVudC0+cmVjdXJzaW9ucXVvdGEgPT0gTlVMTCk7Ci0gCi0gCQlpZiAoTlNfQ0xJRU5UU1RBVEVfUkVBRElORyA9PSBjbGllbnQtPm5ld3N0YXRlKSB7Ci0tCQkJaWYgKCFjbGllbnQtPnBpcGVsaW5lZCkgewotKwkJCUlOU0lTVChjbGllbnQtPnRjcGNvbm4gIT0gTlVMTCk7Ci0rCQkJaWYgKCFjbGllbnQtPnRjcGNvbm4tPnBpcGVsaW5lZCkgewotIAkJCQljbGllbnRfcmVhZChjbGllbnQpOwotIAkJCQljbGllbnQtPm5ld3N0YXRlID0gTlNfQ0xJRU5UU1RBVEVfTUFYOwotIAkJCQlyZXR1cm4gKHRydWUpOyAvKiBXZSdyZSBkb25lLiAqLwotQEAgLTUwNyw4ICs1MjUsOCBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCQlkbnNfdGNwbXNnX2NhbmNlbHJlYWQoJmNsaWVudC0+dGNwbXNnKTsKLSAJCX0KLSAKLS0JCWlmIChjbGllbnQtPm5yZWFkcyAhPSAwKSB7Ci0tCQkJLyogU3RpbGwgd2FpdGluZyBmb3IgcmVhZCBjYW5jZWwgY29tcGxldGlvbi4gKi8KLSsJCS8qIFN0aWxsIHdhaXRpbmcgZm9yIHJlYWQgY2FuY2VsIGNvbXBsZXRpb24uICovCi0rCQlpZiAoY2xpZW50LT5ucmVhZHMgPiAwKSB7Ci0gCQkJcmV0dXJuICh0cnVlKTsKLSAJCX0KLSAKLUBAIC01MTgsNDMgKzUzNiw0NSBAQCBleGl0X2NoZWNrKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCX0KLSAKLSAJCS8qCi0tCQkgKiBEZXRhY2ggZnJvbSBwaXBlbGluZSBncm91cCBhbmQgZnJvbSBUQ1AgY2xpZW50IHF1b3RhLAotLQkJICogaWYgYXBwcm9wcmlhdGUuCi0rCQkgKiBTb29uIHRoZSBjbGllbnQgd2lsbCBiZSByZWFkeSB0byBhY2NlcHQgYSBuZXcgVENQCi0rCQkgKiBjb25uZWN0aW9uIG9yIFVEUCByZXF1ZXN0LCBidXQgd2UgbWF5IGhhdmUgZW5vdWdoCi0rCQkgKiBjbGllbnRzIGRvaW5nIHRoYXQgYWxyZWFkeS4gIENoZWNrIHdoZXRoZXIgdGhpcyBjbGllbnQKLSsJCSAqIG5lZWRzIHRvIHJlbWFpbiBhY3RpdmUgYW5kIGFsbG93IGl0IGdvIGluYWN0aXZlIGlmCi0rCQkgKiBub3QuCi0gCQkgKgotLQkJICogLSBJZiBubyBwaXBlbGluZSBncm91cCBpcyBhY3RpdmUsIGF0dGVtcHQgdG8KLS0JCSAqICAgZGV0YWNoIGZyb20gdGhlIFRDUCBjbGllbnQgcXVvdGEuCi0rCQkgKiBVRFAgY2xpZW50cyBhbHdheXMgZ28gaW5hY3RpdmUgYXQgdGhpcyBwb2ludCwgYnV0IGEgVENQCi0rCQkgKiBjbGllbnQgbWF5IG5lZWQgdG8gc3RheSBhY3RpdmUgYW5kIHJldHVybiB0byBSRUFEWQotKwkJICogc3RhdGUgaWYgbm8gb3RoZXIgY2xpZW50cyBhcmUgYXZhaWxhYmxlIHRvIGxpc3RlbgotKwkJICogZm9yIFRDUCByZXF1ZXN0cyBvbiB0aGlzIGludGVyZmFjZS4KLSAJCSAqCi0tCQkgKiAtIElmIGEgcGlwZWxpbmUgZ3JvdXAgaXMgYWN0aXZlLCBkZXRhY2ggZnJvbSBpdDsKLS0JCSAqICAgaWYgdGhlIHJldHVybiBjb2RlIGluZGljYXRlcyB0aGF0IHRoZXJlIG5vIG1vcmUKLS0JCSAqICAgY2xpZW50cyBsZWZ0IGlmIHRoaXMgcGlwZWxpbmUgZ3JvdXAsIHdlIGFsc28gZGV0YWNoCi0tCQkgKiAgIGZyb20gdGhlIFRDUCBjbGllbnQgcXVvdGEuCi0tCQkgKgotLQkJICogLSBPdGhlcndpc2Ugd2UgZG9uJ3QgdHJ5IHRvIGRldGFjaCwgd2UganVzdCBzZXQgdGhlCi0tCQkgKiAgIFRDUCBxdW90YSBwb2ludGVyIHRvIE5VTEwgaWYgaXQgd2Fzbid0IE5VTEwgYWxyZWFkeS4KLS0JCSAqCi0tCQkgKiB0Y3BxdW90YV9kaXNjb25uZWN0KCkgd2lsbCBzZXQgdGNwcXVvdGEgdG8gTlVMTCwgZWl0aGVyCi0tCQkgKiBieSBkZXRhY2hpbmcgaXQgb3IgYnkgYXNzaWdubWVudCwgZGVwZW5kaW5nIG9uIHRoZQotLQkJICogbmVlZHMgb2YgdGhlIGNsaWVudC4gU2VlIHRoZSBjb21tZW50cyBvbiB0aGF0IGZ1bmN0aW9uCi0tCQkgKiBmb3IgZnVydGhlciBpbmZvcm1hdGlvbi4KLSsJCSAqIFJlZ2FyZGxlc3MsIGlmIHdlJ3JlIGdvaW5nIHRvIEZSRUVEIHN0YXRlLCB0aGF0IG1lYW5zCi0rCQkgKiB0aGUgc3lzdGVtIGlzIHNodXR0aW5nIGRvd24gYW5kIHdlIGRvbid0IG5lZWQgdG8KLSsJCSAqIHJldGFpbiBjbGllbnRzLgotIAkJICovCi0tCQlpZiAoY2xpZW50LT5waXBlbGluZV9yZWZzID09IE5VTEwgfHwgcGlwZWxpbmVfZGV0YWNoKGNsaWVudCkpIHsKLS0JCQl0Y3BxdW90YV9kaXNjb25uZWN0KGNsaWVudCk7Ci0tCQl9IGVsc2UgewotLQkJCWNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotLQkJCWNsaWVudC0+dGNwYXR0YWNoZWQgPSBmYWxzZTsKLSsJCWlmIChjbGllbnQtPm1vcnRhbCAmJiBUQ1BfQ0xJRU5UKGNsaWVudCkgJiYKLSsJCSAgICBjbGllbnQtPm5ld3N0YXRlICE9IE5TX0NMSUVOVFNUQVRFX0ZSRUVEICYmCi0rCQkgICAgIW5zX2dfY2xpZW50dGVzdCAmJgotKwkJICAgIGlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcsIDApID09IDApCi0rCQl7Ci0rCQkJLyogTm9ib2R5IGVsc2UgaXMgYWNjZXB0aW5nICovCi0rCQkJY2xpZW50LT5tb3J0YWwgPSBmYWxzZTsKLSsJCQljbGllbnQtPm5ld3N0YXRlID0gTlNfQ0xJRU5UU1RBVEVfUkVBRFk7Ci0rCQl9Ci0rCi0rCQkvKgotKwkJICogRGV0YWNoIGZyb20gVENQIGNvbm5lY3Rpb24gYW5kIFRDUCBjbGllbnQgcXVvdGEsCi0rCQkgKiBpZiBhcHByb3ByaWF0ZS4gSWYgdGhpcyBpcyB0aGUgbGFzdCByZWZlcmVuY2UgdG8KLSsJCSAqIHRoZSBUQ1AgY29ubmVjdGlvbiBpbiBvdXIgcGlwZWxpbmUgZ3JvdXAsIHRoZQotKwkJICogVENQIHF1b3RhIHNsb3Qgd2lsbCBiZSByZWxlYXNlZC4KLSsJCSAqLwotKwkJaWYgKGNsaWVudC0+dGNwY29ubikgewotKwkJCXRjcGNvbm5fZGV0YWNoKGNsaWVudCk7Ci0gCQl9Ci0gCi0gCQlpZiAoY2xpZW50LT50Y3Bzb2NrZXQgIT0gTlVMTCkgewotIAkJCUNUUkFDRSgiY2xvc2V0Y3AiKTsKLSAJCQlpc2Nfc29ja2V0X2RldGFjaCgmY2xpZW50LT50Y3Bzb2NrZXQpOwotLQotLQkJCWlmIChjbGllbnQtPnRjcGFjdGl2ZSkgewotLQkJCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQkJCUlOU0lTVChjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSA+IDApOwotLQkJCQljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZS0tOwotLQkJCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCQkJY2xpZW50LT50Y3BhY3RpdmUgPSBmYWxzZTsKLS0JCQl9Ci0rCQkJbWFya190Y3BfYWN0aXZlKGNsaWVudCwgZmFsc2UpOwotIAkJfQotIAotIAkJaWYgKGNsaWVudC0+dGltZXJzZXQpIHsKLUBAIC01NjcsMzUgKzU4Nyw2IEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJY2xpZW50LT5wZWVyYWRkcl92YWxpZCA9IGZhbHNlOwotIAotIAkJY2xpZW50LT5zdGF0ZSA9IE5TX0NMSUVOVFNUQVRFX1JFQURZOwotLQkJSU5TSVNUKGNsaWVudC0+cmVjdXJzaW9ucXVvdGEgPT0gTlVMTCk7Ci0tCi0tCQkvKgotLQkJICogTm93IHRoZSBjbGllbnQgaXMgcmVhZHkgdG8gYWNjZXB0IGEgbmV3IFRDUCBjb25uZWN0aW9uCi0tCQkgKiBvciBVRFAgcmVxdWVzdCwgYnV0IHdlIG1heSBoYXZlIGVub3VnaCBjbGllbnRzIGRvaW5nCi0tCQkgKiB0aGF0IGFscmVhZHkuICBDaGVjayB3aGV0aGVyIHRoaXMgY2xpZW50IG5lZWRzIHRvIHJlbWFpbgotLQkJICogYWN0aXZlIGFuZCBmb3JjZSBpdCB0byBnbyBpbmFjdGl2ZSBpZiBub3QuCi0tCQkgKgotLQkJICogVURQIGNsaWVudHMgZ28gaW5hY3RpdmUgYXQgdGhpcyBwb2ludCwgYnV0IGEgVENQIGNsaWVudAotLQkJICogbWF5IG5lZWQgdG8gcmVtYWluIGFjdGl2ZSBhbmQgZ28gaW50byByZWFkeSBzdGF0ZSBpZgotLQkJICogbm8gb3RoZXIgY2xpZW50cyBhcmUgYXZhaWxhYmxlIHRvIGxpc3RlbiBmb3IgVENQCi0tCQkgKiByZXF1ZXN0cyBvbiB0aGlzIGludGVyZmFjZSBvciAoaW4gdGhlIGNhc2Ugb2YgcGlwZWxpbmVkCi0tCQkgKiBjbGllbnRzKSB0byByZWFkIGZvciBhZGRpdGlvbmFsIG1lc3NhZ2VzIG9uIHRoZSBjdXJyZW50Ci0tCQkgKiBjb25uZWN0aW9uLgotLQkJICovCi0tCQlpZiAoY2xpZW50LT5tb3J0YWwgJiYgVENQX0NMSUVOVChjbGllbnQpICYmICFuc19nX2NsaWVudHRlc3QpIHsKLS0JCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQkJaWYgKChjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZyA9PSAwIHx8Ci0tCQkJICAgIChjbGllbnQtPnBpcGVsaW5lZCAmJgotLQkJCSAgICAgY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUgPCAyKSkgJiYKLS0JCQkgICAgY2xpZW50LT5uZXdzdGF0ZSAhPSBOU19DTElFTlRTVEFURV9GUkVFRCkKLS0JCQl7Ci0tCQkJCWNsaWVudC0+bW9ydGFsID0gZmFsc2U7Ci0tCQkJCWNsaWVudC0+bmV3c3RhdGUgPSBOU19DTElFTlRTVEFURV9SRUFEWTsKLS0JCQl9Ci0tCQkJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQl9Ci0tCi0tCQljbGllbnQtPnBpcGVsaW5lZCA9IGZhbHNlOwotIAotIAkJLyoKLSAJCSAqIFdlIGRvbid0IG5lZWQgdGhlIGNsaWVudDsgc2VuZCBpdCB0byB0aGUgaW5hY3RpdmUKLUBAIC02MzAsNyArNjIxLDcgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQl9Ci0gCi0gCQkvKiBTdGlsbCB3YWl0aW5nIGZvciBhY2NlcHQgY2FuY2VsIGNvbXBsZXRpb24uICovCi0tCQlpZiAoISAoY2xpZW50LT5uYWNjZXB0cyA9PSAwKSkgewotKwkJaWYgKGNsaWVudC0+bmFjY2VwdHMgPiAwKSB7Ci0gCQkJcmV0dXJuICh0cnVlKTsKLSAJCX0KLSAKLUBAIC02NDEsNyArNjMyLDcgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQl9Ci0gCi0gCQkvKiBTdGlsbCB3YWl0aW5nIGZvciByZWN2IGNhbmNlbCBjb21wbGV0aW9uLiAqLwotLQkJaWYgKCEgKGNsaWVudC0+bnJlY3ZzID09IDApKSB7Ci0rCQlpZiAoY2xpZW50LT5ucmVjdnMgPiAwKSB7Ci0gCQkJcmV0dXJuICh0cnVlKTsKLSAJCX0KLSAKLUBAIC02NTQsMTQgKzY0NSw3IEBAIGV4aXRfY2hlY2sobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJSU5TSVNUKGNsaWVudC0+cmVjdXJzaW9ucXVvdGEgPT0gTlVMTCk7Ci0gCQlpZiAoY2xpZW50LT50Y3BsaXN0ZW5lciAhPSBOVUxMKSB7Ci0gCQkJaXNjX3NvY2tldF9kZXRhY2goJmNsaWVudC0+dGNwbGlzdGVuZXIpOwotLQotLQkJCWlmIChjbGllbnQtPnRjcGFjdGl2ZSkgewotLQkJCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQkJCUlOU0lTVChjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSA+IDApOwotLQkJCQljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZS0tOwotLQkJCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCQkJY2xpZW50LT50Y3BhY3RpdmUgPSBmYWxzZTsKLS0JCQl9Ci0rCQkJbWFya190Y3BfYWN0aXZlKGNsaWVudCwgZmFsc2UpOwotIAkJfQotIAkJaWYgKGNsaWVudC0+dWRwc29ja2V0ICE9IE5VTEwpIHsKLSAJCQlpc2Nfc29ja2V0X2RldGFjaCgmY2xpZW50LT51ZHBzb2NrZXQpOwotQEAgLTgxNiw3ICs4MDAsNyBAQCBjbGllbnRfc3RhcnQoaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCQlyZXR1cm47Ci0gCi0gCWlmIChUQ1BfQ0xJRU5UKGNsaWVudCkpIHsKLS0JCWlmIChjbGllbnQtPnBpcGVsaW5lZCkgewotKwkJaWYgKGNsaWVudC0+dGNwY29ubiAhPSBOVUxMKSB7Ci0gCQkJY2xpZW50X3JlYWQoY2xpZW50KTsKLSAJCX0gZWxzZSB7Ci0gCQkJY2xpZW50X2FjY2VwdChjbGllbnQpOwotQEAgLTI0NzAsNiArMjQ1NCw3IEBAIGNsaWVudF9yZXF1ZXN0KGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkJY2xpZW50LT5ucmVjdnMtLTsKLSAJfSBlbHNlIHsKLSAJCUlOU0lTVChUQ1BfQ0xJRU5UKGNsaWVudCkpOwotKwkJSU5TSVNUKGNsaWVudC0+dGNwY29ubiAhPSBOVUxMKTsKLSAJCVJFUVVJUkUoZXZlbnQtPmV2X3R5cGUgPT0gRE5TX0VWRU5UX1RDUE1TRyk7Ci0gCQlSRVFVSVJFKGV2ZW50LT5ldl9zZW5kZXIgPT0gJmNsaWVudC0+dGNwbXNnKTsKLSAJCWJ1ZmZlciA9ICZjbGllbnQtPnRjcG1zZy5idWZmZXI7Ci1AQCAtMjY1NywxNyArMjY0MiwxOSBAQCBjbGllbnRfcmVxdWVzdChpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJLyoKLSAJICogUGlwZWxpbmUgVENQIHF1ZXJ5IHByb2Nlc3NpbmcuCi0gCSAqLwotLQlpZiAoY2xpZW50LT5tZXNzYWdlLT5vcGNvZGUgIT0gZG5zX29wY29kZV9xdWVyeSkgewotLQkJY2xpZW50LT5waXBlbGluZWQgPSBmYWxzZTsKLSsJaWYgKFRDUF9DTElFTlQoY2xpZW50KSAmJgotKwkgICAgY2xpZW50LT5tZXNzYWdlLT5vcGNvZGUgIT0gZG5zX29wY29kZV9xdWVyeSkKLSsJewotKwkJY2xpZW50LT50Y3Bjb25uLT5waXBlbGluZWQgPSBmYWxzZTsKLSAJfQotLQlpZiAoVENQX0NMSUVOVChjbGllbnQpICYmIGNsaWVudC0+cGlwZWxpbmVkKSB7Ci0rCWlmIChUQ1BfQ0xJRU5UKGNsaWVudCkgJiYgY2xpZW50LT50Y3Bjb25uLT5waXBlbGluZWQpIHsKLSAJCS8qCi0gCQkgKiBXZSdyZSBwaXBlbGluaW5nLiBSZXBsYWNlIHRoZSBjbGllbnQ7IHRoZQotLQkJICogdGhlIHJlcGxhY2VtZW50IGNhbiByZWFkIHRoZSBUQ1Agc29ja2V0IGxvb2tpbmcKLS0JCSAqIGZvciBuZXcgbWVzc2FnZXMgYW5kIHRoaXMgY2xpZW50IGNhbiBwcm9jZXNzIHRoZQotKwkJICogcmVwbGFjZW1lbnQgY2FuIHJlYWQgdGhlIFRDUCBzb2NrZXQgbG9va2luZwotKwkJICogZm9yIG5ldyBtZXNzYWdlcyBhbmQgdGhpcyBvbmUgY2FuIHByb2Nlc3MgdGhlCi0gCQkgKiBjdXJyZW50IG1lc3NhZ2UgYXN5bmNocm9ub3VzbHkuCi0gCQkgKgotLQkJICogVGhlcmUgYXJlIG5vdyBhdCBsZWFzdCB0aHJlZSBjbGllbnRzIHVzaW5nIHRoaXMKLSsJCSAqIFRoZXJlIHdpbGwgbm93IGJlIGF0IGxlYXN0IHRocmVlIGNsaWVudHMgdXNpbmcgdGhpcwotIAkJICogVENQIHNvY2tldCAtIG9uZSBhY2NlcHRpbmcgbmV3IGNvbm5lY3Rpb25zLAotIAkJICogb25lIHJlYWRpbmcgYW4gZXhpc3RpbmcgY29ubmVjdGlvbiB0byBnZXQgbmV3Ci0gCQkgKiBtZXNzYWdlcywgYW5kIG9uZSBhbnN3ZXJpbmcgdGhlIG1lc3NhZ2UgYWxyZWFkeQotQEAgLTI2NzUsNyArMjY2Miw3IEBAIGNsaWVudF9yZXF1ZXN0KGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAkJICovCi0gCQlyZXN1bHQgPSBuc19jbGllbnRfcmVwbGFjZShjbGllbnQpOwotIAkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0tCQkJY2xpZW50LT5waXBlbGluZWQgPSBmYWxzZTsKLSsJCQljbGllbnQtPnRjcGNvbm4tPnBpcGVsaW5lZCA9IGZhbHNlOwotIAkJfQotIAl9Ci0gCi1AQCAtMzIzMywxMCArMzIyMCw3IEBAIGNsaWVudF9jcmVhdGUobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2NsaWVudF90ICoqY2xpZW50cCkgewotIAljbGllbnQtPnNpZ25lciA9IE5VTEw7Ci0gCWRuc19uYW1lX2luaXQoJmNsaWVudC0+c2lnbmVybmFtZSwgTlVMTCk7Ci0gCWNsaWVudC0+bW9ydGFsID0gZmFsc2U7Ci0tCWNsaWVudC0+cGlwZWxpbmVkID0gZmFsc2U7Ci0tCWNsaWVudC0+cGlwZWxpbmVfcmVmcyA9IE5VTEw7Ci0tCWNsaWVudC0+dGNwcXVvdGEgPSBOVUxMOwotLQljbGllbnQtPnRjcGF0dGFjaGVkID0gZmFsc2U7Ci0rCWNsaWVudC0+dGNwY29ubiA9IE5VTEw7Ci0gCWNsaWVudC0+cmVjdXJzaW9ucXVvdGEgPSBOVUxMOwotIAljbGllbnQtPmludGVyZmFjZSA9IE5VTEw7Ci0gCWNsaWVudC0+cGVlcmFkZHJfdmFsaWQgPSBmYWxzZTsKLUBAIC0zMzQxLDkgKzMzMjUsMTAgQEAgY2xpZW50X3JlYWQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAotIHN0YXRpYyB2b2lkCi0gY2xpZW50X25ld2Nvbm4oaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0rCWlzY19yZXN1bHRfdCByZXN1bHQ7Ci0gCW5zX2NsaWVudF90ICpjbGllbnQgPSBldmVudC0+ZXZfYXJnOwotIAlpc2Nfc29ja2V0X25ld2Nvbm5ldl90ICpuZXZlbnQgPSAoaXNjX3NvY2tldF9uZXdjb25uZXZfdCAqKWV2ZW50OwotLQlpc2NfcmVzdWx0X3QgcmVzdWx0OwotKwl1aW50MzJfdCBvbGQ7Ci0gCi0gCVJFUVVJUkUoZXZlbnQtPmV2X3R5cGUgPT0gSVNDX1NPQ0tFVkVOVF9ORVdDT05OKTsKLSAJUkVRVUlSRShOU19DTElFTlRfVkFMSUQoY2xpZW50KSk7Ci1AQCAtMzM2MywxMCArMzM0OCw4IEBAIGNsaWVudF9uZXdjb25uKGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAlJTlNJU1QoY2xpZW50LT5uYWNjZXB0cyA9PSAxKTsKLSAJY2xpZW50LT5uYWNjZXB0cy0tOwotIAotLQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCUlOU0lTVChjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZyA+IDApOwotLQljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZy0tOwotLQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJb2xkID0gaXNjX2F0b21pY194YWRkKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZywgLTEpOwotKwlJTlNJU1Qob2xkID4gMCk7Ci0gCi0gCS8qCi0gCSAqIFdlIG11c3QgdGFrZSBvd25lcnNoaXAgb2YgdGhlIG5ldyBzb2NrZXQgYmVmb3JlIHRoZSBleGl0Ci1AQCAtMzM5OSw3ICszMzgyLDcgQEAgY2xpZW50X25ld2Nvbm4oaXNjX3Rhc2tfdCAqdGFzaywgaXNjX2V2ZW50X3QgKmV2ZW50KSB7Ci0gCQkJICAgICAgTlNfTE9HTU9EVUxFX0NMSUVOVCwgSVNDX0xPR19ERUJVRygzKSwKLSAJCQkgICAgICAiYWNjZXB0IGZhaWxlZDogJXMiLAotIAkJCSAgICAgIGlzY19yZXN1bHRfdG90ZXh0KG5ldmVudC0+cmVzdWx0KSk7Ci0tCQl0Y3BxdW90YV9kaXNjb25uZWN0KGNsaWVudCk7Ci0rCQl0Y3Bjb25uX2RldGFjaChjbGllbnQpOwotIAl9Ci0gCi0gCWlmIChleGl0X2NoZWNrKGNsaWVudCkpCi1AQCAtMzQzNywxNSArMzQyMCwxMyBAQCBjbGllbnRfbmV3Y29ubihpc2NfdGFza190ICp0YXNrLCBpc2NfZXZlbnRfdCAqZXZlbnQpIHsKLSAJCSAqIHRlbG5ldHRpbmcgdG8gcG9ydCA1MyAob25jZSBwZXIgQ1BVKSB3aWxsCi0gCQkgKiBkZW55IHNlcnZpY2UgdG8gbGVnaXRpbWF0ZSBUQ1AgY2xpZW50cy4KLSAJCSAqLwotLQkJY2xpZW50LT5waXBlbGluZWQgPSBmYWxzZTsKLSAJCXJlc3VsdCA9IG5zX2NsaWVudF9yZXBsYWNlKGNsaWVudCk7Ci0gCQlpZiAocmVzdWx0ID09IElTQ19SX1NVQ0NFU1MgJiYKLSAJCSAgICAobnNfZ19zZXJ2ZXItPmtlZXByZXNwb3JkZXIgPT0gTlVMTCB8fAotIAkJICAgICAhYWxsb3dlZCgmbmV0YWRkciwgTlVMTCwgTlVMTCwgMCwgTlVMTCwKLSAJCQkgICAgICBuc19nX3NlcnZlci0+a2VlcHJlc3BvcmRlcikpKQotIAkJewotLQkJCXBpcGVsaW5lX2luaXQoY2xpZW50KTsKLS0JCQljbGllbnQtPnBpcGVsaW5lZCA9IHRydWU7Ci0rCQkJY2xpZW50LT50Y3Bjb25uLT5waXBlbGluZWQgPSB0cnVlOwotIAkJfQotIAotIAkJY2xpZW50X3JlYWQoY2xpZW50KTsKLUBAIC0zNDYyLDc4ICszNDQzLDU5IEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAlDVFJBQ0UoImFjY2VwdCIpOwotIAotIAkvKgotLQkgKiBUaGUgdGNwcXVvdGEgb2JqZWN0IGNhbiBvbmx5IGJlIHNpbXVsdGFuZW91c2x5IHJlZmVyZW5jZWQgYQotLQkgKiBwcmUtZGVmaW5lZCBudW1iZXIgb2YgdGltZXM7IHRoaXMgaXMgY29uZmlndXJlZCBieSAndGNwLWNsaWVudHMnCi0tCSAqIGluIG5hbWVkLmNvbmYuIElmIHdlIGNhbid0IGF0dGFjaCB0byBpdCBoZXJlLCB0aGF0IG1lYW5zIHRoZSBUQ1AKLS0JICogY2xpZW50IHF1b3RhIGhhcyBiZWVuIGV4Y2VlZGVkLgotKwkgKiBTZXQgdXAgYSBuZXcgVENQIGNvbm5lY3Rpb24uIFRoaXMgbWVhbnMgdHJ5IHRvIGF0dGFjaCB0byB0aGUKLSsJICogVENQIGNsaWVudCBxdW90YSAodGNwLWNsaWVudHMpLCBidXQgZmFpbCBpZiB3ZSdyZSBvdmVyIHF1b3RhLgotIAkgKi8KLS0JcmVzdWx0ID0gaXNjX3F1b3RhX2F0dGFjaCgmbnNfZ19zZXJ2ZXItPnRjcHF1b3RhLAotLQkJCQkgICZjbGllbnQtPnRjcHF1b3RhKTsKLSsJcmVzdWx0ID0gdGNwY29ubl9pbml0KGNsaWVudCwgZmFsc2UpOwotIAlpZiAocmVzdWx0ICE9IElTQ19SX1NVQ0NFU1MpIHsKLS0JCQlib29sIGV4aXQ7Ci0rCQlib29sIGV4aXQ7Ci0gCi0tCQkJbnNfY2xpZW50X2xvZyhjbGllbnQsIE5TX0xPR0NBVEVHT1JZX0NMSUVOVCwKLS0JCQkJICAgICAgTlNfTE9HTU9EVUxFX0NMSUVOVCwgSVNDX0xPR19ERUJVRygxKSwKLS0JCQkJICAgICAgIm5vIG1vcmUgVENQIGNsaWVudHM6ICVzIiwKLS0JCQkJICAgICAgaXNjX3Jlc3VsdF90b3RleHQocmVzdWx0KSk7Ci0tCi0tCQkJLyoKLS0JCQkgKiBXZSBoYXZlIGV4Y2VlZGVkIHRoZSBzeXN0ZW0td2lkZSBUQ1AgY2xpZW50Ci0tCQkJICogcXVvdGEuICBCdXQsIHdlIGNhbid0IGp1c3QgYmxvY2sgdGhpcyBhY2NlcHQKLS0JCQkgKiBpbiBhbGwgY2FzZXMsIGJlY2F1c2UgaWYgd2UgZGlkLCBhIGhlYXZ5IFRDUAotLQkJCSAqIGxvYWQgb24gb3RoZXIgaW50ZXJmYWNlcyBtaWdodCBjYXVzZSB0aGlzCi0tCQkJICogaW50ZXJmYWNlIHRvIGJlIHN0YXJ2ZWQsIHdpdGggbm8gY2xpZW50cyBhYmxlCi0tCQkJICogdG8gYWNjZXB0IG5ldyBjb25uZWN0aW9ucy4KLS0JCQkgKgotLQkJCSAqIFNvLCB3ZSBjaGVjayBoZXJlIHRvIHNlZSBpZiBhbnkgb3RoZXIgY2xpZW50cwotLQkJCSAqIGFyZSBhbHJlYWR5IHNlcnZpY2luZyBUQ1AgcXVlcmllcyBvbiB0aGlzCi0tCQkJICogaW50ZXJmYWNlICh3aGV0aGVyIGFjY2VwdGluZywgcmVhZGluZywgb3IKLS0JCQkgKiBwcm9jZXNzaW5nKS4gSWYgdGhlcmUgYXJlIGF0IGxlYXN0IHR3bwotLQkJCSAqIChvbmUgcmVhZGluZyBhbmQgb25lIHByb2Nlc3NpbmcgYSByZXF1ZXN0KQotLQkJCSAqIHRoZW4gaXQncyBva2F5ICpub3QqIHRvIGNhbGwgYWNjZXB0IC0gd2UKLS0JCQkgKiBjYW4gbGV0IHRoaXMgY2xpZW50IGdvIGluYWN0aXZlIGFuZCBhbm90aGVyCi0tCQkJICogb25lIHdpbGwgcmVzdW1lIGFjY2VwdGluZyB3aGVuIGl0J3MgZG9uZS4KLS0JCQkgKgotLQkJCSAqIElmIHRoZXJlIGFyZW4ndCBlbm91Z2ggYWN0aXZlIGNsaWVudHMgb24gdGhlCi0tCQkJICogaW50ZXJmYWNlLCB0aGVuIHdlIGNhbiBiZSBhIGxpdHRsZSBiaXQKLS0JCQkgKiBmbGV4aWJsZSBhYm91dCB0aGUgcXVvdGEuIFdlJ2xsIGFsbG93ICpvbmUqCi0tCQkJICogZXh0cmEgY2xpZW50IHRocm91Z2ggdG8gZW5zdXJlIHdlJ3JlIGxpc3RlbmluZwotLQkJCSAqIG9uIGV2ZXJ5IGludGVyZmFjZS4KLS0JCQkgKgotLQkJCSAqIChOb3RlOiBJbiBwcmFjdGljZSB0aGlzIG1lYW5zIHRoYXQgdGhlIHJlYWwKLS0JCQkgKiBUQ1AgY2xpZW50IHF1b3RhIGlzIHRjcC1jbGllbnRzIHBsdXMgdGhlCi0tCQkJICogbnVtYmVyIG9mIGxpc3RlbmluZyBpbnRlcmZhY2VzIHBsdXMgMi4pCi0tCQkJICovCi0tCQkJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJCWV4aXQgPSAoY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUgPiAxKTsKLS0JCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLSsJCW5zX2NsaWVudF9sb2coY2xpZW50LCBOU19MT0dDQVRFR09SWV9DTElFTlQsCi0rCQkJICAgICAgTlNfTE9HTU9EVUxFX0NMSUVOVCwgSVNDX0xPR19XQVJOSU5HLAotKwkJCSAgICAgICJUQ1AgY2xpZW50IHF1b3RhIHJlYWNoZWQ6ICVzIiwKLSsJCQkgICAgICBpc2NfcmVzdWx0X3RvdGV4dChyZXN1bHQpKTsKLSAKLS0JCQlpZiAoZXhpdCkgewotLQkJCQljbGllbnQtPm5ld3N0YXRlID0gTlNfQ0xJRU5UU1RBVEVfSU5BQ1RJVkU7Ci0tCQkJCSh2b2lkKWV4aXRfY2hlY2soY2xpZW50KTsKLS0JCQkJcmV0dXJuOwotLQkJCX0KLSsJCS8qCi0rCQkgKiBXZSBoYXZlIGV4Y2VlZGVkIHRoZSBzeXN0ZW0td2lkZSBUQ1AgY2xpZW50IHF1b3RhLiAgQnV0LAotKwkJICogd2UgY2FuJ3QganVzdCBibG9jayB0aGlzIGFjY2VwdCBpbiBhbGwgY2FzZXMsIGJlY2F1c2UgaWYKLSsJCSAqIHdlIGRpZCwgYSBoZWF2eSBUQ1AgbG9hZCBvbiBvdGhlciBpbnRlcmZhY2VzIG1pZ2h0IGNhdXNlCi0rCQkgKiB0aGlzIGludGVyZmFjZSB0byBiZSBzdGFydmVkLCB3aXRoIG5vIGNsaWVudHMgYWJsZSB0bwotKwkJICogYWNjZXB0IG5ldyBjb25uZWN0aW9ucy4KLSsJCSAqCi0rCQkgKiBTbywgd2UgY2hlY2sgaGVyZSB0byBzZWUgaWYgYW55IG90aGVyIGNsaWVudHMgYXJlCi0rCQkgKiBhbHJlYWR5IHNlcnZpY2luZyBUQ1AgcXVlcmllcyBvbiB0aGlzIGludGVyZmFjZSAod2hldGhlcgotKwkJICogYWNjZXB0aW5nLCByZWFkaW5nLCBvciBwcm9jZXNzaW5nKS4gSWYgd2UgZmluZCBhdCBsZWFzdAotKwkJICogb25lLCB0aGVuIGl0J3Mgb2theSAqbm90KiB0byBjYWxsIGFjY2VwdCAtIHdlIGNhbiBsZXQgdGhpcwotKwkJICogY2xpZW50IGdvIGluYWN0aXZlIGFuZCBhbm90aGVyIHdpbGwgdGFrZSBvdmVyIHdoZW4gaXQncwotKwkJICogZG9uZS4KLSsJCSAqCi0rCQkgKiBJZiB0aGVyZSBhcmVuJ3QgZW5vdWdoIGFjdGl2ZSBjbGllbnRzIG9uIHRoZSBpbnRlcmZhY2UsCi0rCQkgKiB0aGVuIHdlIGNhbiBiZSBhIGxpdHRsZSBiaXQgZmxleGlibGUgYWJvdXQgdGhlIHF1b3RhLgotKwkJICogV2UnbGwgYWxsb3cgKm9uZSogZXh0cmEgY2xpZW50IHRocm91Z2ggdG8gZW5zdXJlIHdlJ3JlCi0rCQkgKiBsaXN0ZW5pbmcgb24gZXZlcnkgaW50ZXJmYWNlOyB3ZSBkbyB0aGlzIGJ5IHNldHRpbmcgdGhlCi0rCQkgKiAnZm9yY2UnIG9wdGlvbiB0byB0Y3Bjb25uX2luaXQoKS4KLSsJCSAqCi0rCQkgKiAoTm90ZTogSW4gcHJhY3RpY2UgdGhpcyBtZWFucyB0aGF0IHRoZSByZWFsIFRDUCBjbGllbnQKLSsJCSAqIHF1b3RhIGlzIHRjcC1jbGllbnRzIHBsdXMgdGhlIG51bWJlciBvZiBsaXN0ZW5pbmcKLSsJCSAqIGludGVyZmFjZXMgcGx1cyAxLikKLSsJCSAqLwotKwkJZXhpdCA9IChpc2NfYXRvbWljX3hhZGQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLCAwKSA+IDApOwotKwkJaWYgKGV4aXQpIHsKLSsJCQljbGllbnQtPm5ld3N0YXRlID0gTlNfQ0xJRU5UU1RBVEVfSU5BQ1RJVkU7Ci0rCQkJKHZvaWQpZXhpdF9jaGVjayhjbGllbnQpOwotKwkJCXJldHVybjsKLSsJCX0KLSAKLS0JfSBlbHNlIHsKLS0JCWNsaWVudC0+dGNwYXR0YWNoZWQgPSB0cnVlOwotKwkJcmVzdWx0ID0gdGNwY29ubl9pbml0KGNsaWVudCwgdHJ1ZSk7Ci0rCQlSVU5USU1FX0NIRUNLKHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTKTsKLSAJfQotIAotIAkvKgotLQkgKiBCeSBpbmNyZW1lbnRpbmcgdGhlIGludGVyZmFjZSdzIG50Y3BhY3RpdmUgY291bnRlciB3ZSBzaWduYWwKLS0JICogdGhhdCB0aGVyZSBpcyBhdCBsZWFzdCBvbmUgY2xpZW50IHNlcnZpY2luZyBUQ1AgcXVlcmllcyBmb3IgdGhlCi0tCSAqIGludGVyZmFjZS4KLS0JICoKLS0JICogV2UgYWxzbyBtYWtlIG5vdGUgb2YgdGhlIGZhY3QgaW4gdGhlIGNsaWVudCBpdHNlbGYgd2l0aCB0aGUKLS0JICogdGNwYWN0aXZlIGZsYWcuIFRoaXMgZW5zdXJlcyBwcm9wZXIgYWNjb3VudGluZyBieSBwcmV2ZW50aW5nCi0tCSAqIHVzIGZyb20gYWNjaWRlbnRhbGx5IGluY3JlbWVudGluZyBvciBkZWNyZW1lbnRpbmcgbnRjcGFjdGl2ZQotLQkgKiBtb3JlIHRoYW4gb25jZSBwZXIgY2xpZW50IG9iamVjdC4KLSsJICogSWYgdGhpcyBjbGllbnQgd2FzIHNldCB1cCB1c2luZyBnZXRfY2xpZW50KCkgb3IgZ2V0X3dvcmtlcigpLAotKwkgKiB0aGVuIFRDUCBpcyBhbHJlYWR5IG1hcmtlZCBhY3RpdmUuIEhvd2V2ZXIsIGlmIGl0IHdhcyByZXN0YXJ0ZWQKLSsJICogZnJvbSBleGl0X2NoZWNrKCksIGl0IG1pZ2h0IG5vdCBiZSwgc28gd2UgdGFrZSBjYXJlIG9mIGl0IG5vdy4KLSAJICovCi0tCWlmICghY2xpZW50LT50Y3BhY3RpdmUpIHsKLS0JCUxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlKys7Ci0tCQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JCWNsaWVudC0+dGNwYWN0aXZlID0gdHJ1ZTsKLS0JfQotKwltYXJrX3RjcF9hY3RpdmUoY2xpZW50LCB0cnVlKTsKLSAKLSAJcmVzdWx0ID0gaXNjX3NvY2tldF9hY2NlcHQoY2xpZW50LT50Y3BsaXN0ZW5lciwgY2xpZW50LT50YXNrLAotIAkJCQkgICBjbGllbnRfbmV3Y29ubiwgY2xpZW50KTsKLUBAIC0zNTQ5LDE1ICszNTExLDggQEAgY2xpZW50X2FjY2VwdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQkJCSAiaXNjX3NvY2tldF9hY2NlcHQoKSBmYWlsZWQ6ICVzIiwKLSAJCQkJIGlzY19yZXN1bHRfdG90ZXh0KHJlc3VsdCkpOwotIAotLQkJdGNwcXVvdGFfZGlzY29ubmVjdChjbGllbnQpOwotLQotLQkJaWYgKGNsaWVudC0+dGNwYWN0aXZlKSB7Ci0tCQkJTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQkJCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLS07Ci0tCQkJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQkJY2xpZW50LT50Y3BhY3RpdmUgPSBmYWxzZTsKLS0JCX0KLS0KLSsJCXRjcGNvbm5fZGV0YWNoKGNsaWVudCk7Ci0rCQltYXJrX3RjcF9hY3RpdmUoY2xpZW50LCBmYWxzZSk7Ci0gCQlyZXR1cm47Ci0gCX0KLSAKLUBAIC0zNTgyLDkgKzM1MzcsNyBAQCBjbGllbnRfYWNjZXB0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJICogbGlzdGVuaW5nIGZvciBjb25uZWN0aW9ucyBpdHNlbGYgdG8gcHJldmVudCB0aGUgaW50ZXJmYWNlCi0gCSAqIGdvaW5nIGRlYWQuCi0gCSAqLwotLQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCWNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nKys7Ci0tCVVOTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotKwlpc2NfYXRvbWljX3hhZGQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nLCAxKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQKLUBAIC0zNjU1LDI0ICszNjA4LDI1IEBAIG5zX2NsaWVudF9yZXBsYWNlKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJUkVRVUlSRShjbGllbnQtPm1hbmFnZXIgIT0gTlVMTCk7Ci0gCi0gCXRjcCA9IFRDUF9DTElFTlQoY2xpZW50KTsKLS0JaWYgKHRjcCAmJiBjbGllbnQtPnBpcGVsaW5lZCkgewotKwlpZiAodGNwICYmIGNsaWVudC0+dGNwY29ubiAhPSBOVUxMICYmIGNsaWVudC0+dGNwY29ubi0+cGlwZWxpbmVkKSB7Ci0gCQlyZXN1bHQgPSBnZXRfd29ya2VyKGNsaWVudC0+bWFuYWdlciwgY2xpZW50LT5pbnRlcmZhY2UsCi0gCQkJCSAgICBjbGllbnQtPnRjcHNvY2tldCwgY2xpZW50KTsKLSAJfSBlbHNlIHsKLSAJCXJlc3VsdCA9IGdldF9jbGllbnQoY2xpZW50LT5tYW5hZ2VyLCBjbGllbnQtPmludGVyZmFjZSwKLS0JCQkJICAgIGNsaWVudC0+ZGlzcGF0Y2gsIGNsaWVudCwgdGNwKTsKLSsJCQkJICAgIGNsaWVudC0+ZGlzcGF0Y2gsIHRjcCk7Ci0gCi0tCQkvKgotLQkJICogVGhlIHJlc3BvbnNpYmlsaXR5IGZvciBsaXN0ZW5pbmcgZm9yIG5ldyByZXF1ZXN0cyBpcyBoZXJlYnkKLS0JCSAqIHRyYW5zZmVycmVkIHRvIHRoZSBuZXcgY2xpZW50LiAgVGhlcmVmb3JlLCB0aGUgb2xkIGNsaWVudAotLQkJICogc2hvdWxkIHJlZnJhaW4gZnJvbSBsaXN0ZW5pbmcgZm9yIGFueSBtb3JlIHJlcXVlc3RzLgotLQkJICovCi0tCQljbGllbnQtPm1vcnRhbCA9IHRydWU7Ci0gCX0KLSAJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKSB7Ci0gCQlyZXR1cm4gKHJlc3VsdCk7Ci0gCX0KLSAKLSsJLyoKLSsJICogVGhlIHJlc3BvbnNpYmlsaXR5IGZvciBsaXN0ZW5pbmcgZm9yIG5ldyByZXF1ZXN0cyBpcyBoZXJlYnkKLSsJICogdHJhbnNmZXJyZWQgdG8gdGhlIG5ldyBjbGllbnQuICBUaGVyZWZvcmUsIHRoZSBvbGQgY2xpZW50Ci0rCSAqIHNob3VsZCByZWZyYWluIGZyb20gbGlzdGVuaW5nIGZvciBhbnkgbW9yZSByZXF1ZXN0cy4KLSsJICovCi0rCWNsaWVudC0+bW9ydGFsID0gdHJ1ZTsKLSsKLSAJcmV0dXJuIChJU0NfUl9TVUNDRVNTKTsKLSB9Ci0gCi1AQCAtMzgwNiw3ICszNzYwLDcgQEAgbnNfY2xpZW50bWdyX2Rlc3Ryb3kobnNfY2xpZW50bWdyX3QgKiptYW5hZ2VycCkgewotIAotIHN0YXRpYyBpc2NfcmVzdWx0X3QKLSBnZXRfY2xpZW50KG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCBuc19pbnRlcmZhY2VfdCAqaWZwLAotLQkgICBkbnNfZGlzcGF0Y2hfdCAqZGlzcCwgbnNfY2xpZW50X3QgKm9sZGNsaWVudCwgYm9vbCB0Y3ApCi0rCSAgIGRuc19kaXNwYXRjaF90ICpkaXNwLCBib29sIHRjcCkKLSB7Ci0gCWlzY19yZXN1bHRfdCByZXN1bHQgPSBJU0NfUl9TVUNDRVNTOwotIAlpc2NfZXZlbnRfdCAqZXY7Ci1AQCAtMzg1MCwxNSArMzgwNCw3IEBAIGdldF9jbGllbnQobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsCi0gCWNsaWVudC0+ZHNjcCA9IGlmcC0+ZHNjcDsKLSAKLSAJaWYgKHRjcCkgewotLQkJY2xpZW50LT50Y3BhdHRhY2hlZCA9IGZhbHNlOwotLQkJaWYgKG9sZGNsaWVudCAhPSBOVUxMKSB7Ci0tCQkJY2xpZW50LT50Y3BhdHRhY2hlZCA9IG9sZGNsaWVudC0+dGNwYXR0YWNoZWQ7Ci0tCQl9Ci0tCi0tCQlMT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSsrOwotLQkJVU5MT0NLKCZjbGllbnQtPmludGVyZmFjZS0+bG9jayk7Ci0tCQljbGllbnQtPnRjcGFjdGl2ZSA9IHRydWU7Ci0rCQltYXJrX3RjcF9hY3RpdmUoY2xpZW50LCB0cnVlKTsKLSAKLSAJCWNsaWVudC0+YXR0cmlidXRlcyB8PSBOU19DTElFTlRBVFRSX1RDUDsKLSAJCWlzY19zb2NrZXRfYXR0YWNoKGlmcC0+dGNwc29ja2V0LAotQEAgLTM5MjMsMTYgKzM4NjksMTQgQEAgZ2V0X3dvcmtlcihuc19jbGllbnRtZ3JfdCAqbWFuYWdlciwgbnNfaW50ZXJmYWNlX3QgKmlmcCwgaXNjX3NvY2tldF90ICpzb2NrLAotIAluc19pbnRlcmZhY2VfYXR0YWNoKGlmcCwgJmNsaWVudC0+aW50ZXJmYWNlKTsKLSAJY2xpZW50LT5uZXdzdGF0ZSA9IGNsaWVudC0+c3RhdGUgPSBOU19DTElFTlRTVEFURV9XT1JLSU5HOwotIAlJTlNJU1QoY2xpZW50LT5yZWN1cnNpb25xdW90YSA9PSBOVUxMKTsKLS0JY2xpZW50LT50Y3BxdW90YSA9ICZuc19nX3NlcnZlci0+dGNwcXVvdGE7Ci0tCWNsaWVudC0+dGNwYXR0YWNoZWQgPSBvbGRjbGllbnQtPnRjcGF0dGFjaGVkOwotIAotIAljbGllbnQtPmRzY3AgPSBpZnAtPmRzY3A7Ci0gCi0gCWNsaWVudC0+YXR0cmlidXRlcyB8PSBOU19DTElFTlRBVFRSX1RDUDsKLSAJY2xpZW50LT5tb3J0YWwgPSB0cnVlOwotIAotLQlwaXBlbGluZV9hdHRhY2gob2xkY2xpZW50LCBjbGllbnQpOwotLQljbGllbnQtPnBpcGVsaW5lZCA9IHRydWU7Ci0rCXRjcGNvbm5fYXR0YWNoKG9sZGNsaWVudCwgY2xpZW50KTsKLSsJbWFya190Y3BfYWN0aXZlKGNsaWVudCwgdHJ1ZSk7Ci0gCi0gCWlzY19zb2NrZXRfYXR0YWNoKGlmcC0+dGNwc29ja2V0LCAmY2xpZW50LT50Y3BsaXN0ZW5lcik7Ci0gCWlzY19zb2NrZXRfYXR0YWNoKHNvY2ssICZjbGllbnQtPnRjcHNvY2tldCk7Ci1AQCAtMzk0MCwxMSArMzg4NCw2IEBAIGdldF93b3JrZXIobnNfY2xpZW50bWdyX3QgKm1hbmFnZXIsIG5zX2ludGVyZmFjZV90ICppZnAsIGlzY19zb2NrZXRfdCAqc29jaywKLSAJKHZvaWQpaXNjX3NvY2tldF9nZXRwZWVybmFtZShjbGllbnQtPnRjcHNvY2tldCwgJmNsaWVudC0+cGVlcmFkZHIpOwotIAljbGllbnQtPnBlZXJhZGRyX3ZhbGlkID0gdHJ1ZTsKLSAKLS0JTE9DSygmY2xpZW50LT5pbnRlcmZhY2UtPmxvY2spOwotLQljbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSsrOwotLQlVTkxPQ0soJmNsaWVudC0+aW50ZXJmYWNlLT5sb2NrKTsKLS0JY2xpZW50LT50Y3BhY3RpdmUgPSB0cnVlOwotLQotIAlJTlNJU1QoY2xpZW50LT50Y3Btc2dfdmFsaWQgPT0gZmFsc2UpOwotIAlkbnNfdGNwbXNnX2luaXQoY2xpZW50LT5tY3R4LCBjbGllbnQtPnRjcHNvY2tldCwgJmNsaWVudC0+dGNwbXNnKTsKLSAJY2xpZW50LT50Y3Btc2dfdmFsaWQgPSB0cnVlOwotQEAgLTM5NzAsOCArMzkwOSw3IEBAIG5zX2NsaWVudG1ncl9jcmVhdGVjbGllbnRzKG5zX2NsaWVudG1ncl90ICptYW5hZ2VyLCB1bnNpZ25lZCBpbnQgbiwKLSAJTVRSQUNFKCJjcmVhdGVjbGllbnRzIik7Ci0gCi0gCWZvciAoZGlzcCA9IDA7IGRpc3AgPCBuOyBkaXNwKyspIHsKLS0JCXJlc3VsdCA9IGdldF9jbGllbnQobWFuYWdlciwgaWZwLCBpZnAtPnVkcGRpc3BhdGNoW2Rpc3BdLAotLQkJCQkgICAgTlVMTCwgdGNwKTsKLSsJCXJlc3VsdCA9IGdldF9jbGllbnQobWFuYWdlciwgaWZwLCBpZnAtPnVkcGRpc3BhdGNoW2Rpc3BdLCB0Y3ApOwotIAkJaWYgKHJlc3VsdCAhPSBJU0NfUl9TVUNDRVNTKQotIAkJCWJyZWFrOwotIAl9Ci1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvY2xpZW50LmggYi9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaAotaW5kZXggZTJjNDBhY2QyOC4uOTY5ZWU0YzA4ZiAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2NsaWVudC5oCi0rKysgYi9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9jbGllbnQuaAotQEAgLTc4LDYgKzc4LDEzIEBACi0gICoqKiBUeXBlcwotICAqKiovCi0gCi0rLyolIHJlZmVyZW5jZS1jb3VudGVkIFRDUCBjb25uZWN0aW9uIG9iamVjdCAqLwotK3R5cGVkZWYgc3RydWN0IG5zX3RjcGNvbm4gewotKwlpc2NfcmVmY291bnRfdAkJcmVmczsKLSsJaXNjX3F1b3RhX3QJCSp0Y3BxdW90YTsKLSsJYm9vbAkJCXBpcGVsaW5lZDsKLSt9IG5zX3RjcGNvbm5fdDsKLSsKLSAvKiUgbmFtZXNlcnZlciBjbGllbnQgc3RydWN0dXJlICovCi0gc3RydWN0IG5zX2NsaWVudCB7Ci0gCXVuc2lnbmVkIGludAkJbWFnaWM7Ci1AQCAtMTMxLDEwICsxMzgsNyBAQCBzdHJ1Y3QgbnNfY2xpZW50IHsKLSAJZG5zX25hbWVfdAkJc2lnbmVybmFtZTsgICAvKiU8IFtUXVNJRyBrZXkgbmFtZSAqLwotIAlkbnNfbmFtZV90CQkqc2lnbmVyOyAgICAgIC8qJTwgTlVMTCBpZiBub3QgdmFsaWQgc2lnICovCi0gCWJvb2wJCQltb3J0YWw7CSAgICAgIC8qJTwgRGllIGFmdGVyIGhhbmRsaW5nIHJlcXVlc3QgKi8KLS0JYm9vbAkJCXBpcGVsaW5lZDsgICAvKiU8IFRDUCBxdWVyaWVzIG5vdCBpbiBzZXF1ZW5jZSAqLwotLQlpc2NfcmVmY291bnRfdAkJKnBpcGVsaW5lX3JlZnM7Ci0tCWlzY19xdW90YV90CQkqdGNwcXVvdGE7Ci0tCWJvb2wJCQl0Y3BhdHRhY2hlZDsKLSsJbnNfdGNwY29ubl90CQkqdGNwY29ubjsKLSAJaXNjX3F1b3RhX3QJCSpyZWN1cnNpb25xdW90YTsKLSAJbnNfaW50ZXJmYWNlX3QJCSppbnRlcmZhY2U7Ci0gCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmggYi9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9pbnRlcmZhY2VtZ3IuaAotaW5kZXggNjFiMDg4MjZhNi4uMzUzNWVmMjJhOCAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oCi0rKysgYi9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9pbnRlcmZhY2VtZ3IuaAotQEAgLTksOCArOSw2IEBACi0gICogaW5mb3JtYXRpb24gcmVnYXJkaW5nIGNvcHlyaWdodCBvd25lcnNoaXAuCi0gICovCi0gCi0tLyogJElkOiBpbnRlcmZhY2VtZ3IuaCx2IDEuMzUgMjAxMS8wNy8yOCAyMzo0Nzo1OCB0Ym94IEV4cCAkICovCi0tCi0gI2lmbmRlZiBOQU1FRF9JTlRFUkZBQ0VNR1JfSAotICNkZWZpbmUgTkFNRURfSU5URVJGQUNFTUdSX0ggMQotIAotQEAgLTc3LDExICs3NSwxMSBAQCBzdHJ1Y3QgbnNfaW50ZXJmYWNlIHsKLSAJCQkJCQkvKiU8IFVEUCBkaXNwYXRjaGVycy4gKi8KLSAJaXNjX3NvY2tldF90ICoJCXRjcHNvY2tldDsJLyolPCBUQ1Agc29ja2V0LiAqLwotIAlpc2NfZHNjcF90CQlkc2NwOwkJLyolPCAibGlzdGVuLW9uIiBEU0NQIHZhbHVlICovCi0tCWludAkJCW50Y3BhY2NlcHRpbmc7CS8qJTwgTnVtYmVyIG9mIGNsaWVudHMKLSsJaW50MzJfdAkJCW50Y3BhY2NlcHRpbmc7CS8qJTwgTnVtYmVyIG9mIGNsaWVudHMKLSAJCQkJCQkgICAgIHJlYWR5IHRvIGFjY2VwdCBuZXcKLSAJCQkJCQkgICAgIFRDUCBjb25uZWN0aW9ucyBvbiB0aGlzCi0gCQkJCQkJICAgICBpbnRlcmZhY2UgKi8KLS0JaW50CQkJbnRjcGFjdGl2ZTsJLyolPCBOdW1iZXIgb2YgY2xpZW50cwotKwlpbnQzMl90CQkJbnRjcGFjdGl2ZTsJLyolPCBOdW1iZXIgb2YgY2xpZW50cwotIAkJCQkJCSAgICAgc2VydmljaW5nIFRDUCBxdWVyaWVzCi0gCQkJCQkJICAgICAod2hldGhlciBhY2NlcHRpbmcgb3IKLSAJCQkJCQkgICAgIGNvbm5lY3RlZCkgKi8KLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvaW50ZXJmYWNlbWdyLmMgYi9iaW4vbmFtZWQvaW50ZXJmYWNlbWdyLmMKLWluZGV4IDk1NTA5NmVmNDcuLmQ5ZjZkZjU4MDIgMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvaW50ZXJmYWNlbWdyLmMKLSsrKyBiL2Jpbi9uYW1lZC9pbnRlcmZhY2VtZ3IuYwotQEAgLTM4OCw2ICszODgsNyBAQCBuc19pbnRlcmZhY2VfY3JlYXRlKG5zX2ludGVyZmFjZW1ncl90ICptZ3IsIGlzY19zb2NrYWRkcl90ICphZGRyLAotIAkgKi8KLSAJaWZwLT5udGNwYWNjZXB0aW5nID0gMDsKLSAJaWZwLT5udGNwYWN0aXZlID0gMDsKLSsKLSAJaWZwLT5udWRwZGlzcGF0Y2ggPSAwOwotIAotIAlpZnAtPmRzY3AgPSAtMTsKLWRpZmYgLS1naXQgYS9saWIvaXNjL2luY2x1ZGUvaXNjL3F1b3RhLmggYi9saWIvaXNjL2luY2x1ZGUvaXNjL3F1b3RhLmgKLWluZGV4IGI5YmY1OTg3N2EuLjM2YzU4MzAyNDIgMTAwNjQ0Ci0tLS0gYS9saWIvaXNjL2luY2x1ZGUvaXNjL3F1b3RhLmgKLSsrKyBiL2xpYi9pc2MvaW5jbHVkZS9pc2MvcXVvdGEuaAotQEAgLTEwMCw2ICsxMDAsMTMgQEAgaXNjX3F1b3RhX2F0dGFjaChpc2NfcXVvdGFfdCAqcXVvdGEsIGlzY19xdW90YV90ICoqcCk7Ci0gICogcXVvdGEgaWYgc3VjY2Vzc2Z1bCAoSVNDX1JfU1VDQ0VTUyBvciBJU0NfUl9TT0ZUUVVPVEEpLgotICAqLwotIAotK2lzY19yZXN1bHRfdAotK2lzY19xdW90YV9mb3JjZShpc2NfcXVvdGFfdCAqcXVvdGEsIGlzY19xdW90YV90ICoqcCk7Ci0rLyolPAotKyAqIExpa2UgaXNjX3F1b3RhX2F0dGFjaCwgYnV0IHdpbGwgYXR0YWNoICcqcCcgdG8gdGhlIHF1b3RhCi0rICogZXZlbiBpZiB0aGUgaGFyZCBxdW90YSBoYXMgYmVlbiBleGNlZWRlZC4KLSsgKi8KLSsKLSB2b2lkCi0gaXNjX3F1b3RhX2RldGFjaChpc2NfcXVvdGFfdCAqKnApOwotIC8qJTwKLWRpZmYgLS1naXQgYS9saWIvaXNjL3F1b3RhLmMgYi9saWIvaXNjL3F1b3RhLmMKLWluZGV4IDNkZGZmMGQ4NzUuLjU1NmE2MWYyMWQgMTAwNjQ0Ci0tLS0gYS9saWIvaXNjL3F1b3RhLmMKLSsrKyBiL2xpYi9pc2MvcXVvdGEuYwotQEAgLTc0LDIwICs3NCwzOSBAQCBpc2NfcXVvdGFfcmVsZWFzZShpc2NfcXVvdGFfdCAqcXVvdGEpIHsKLSAJVU5MT0NLKCZxdW90YS0+bG9jayk7Ci0gfQotIAotLWlzY19yZXN1bHRfdAotLWlzY19xdW90YV9hdHRhY2goaXNjX3F1b3RhX3QgKnF1b3RhLCBpc2NfcXVvdGFfdCAqKnApCi0tewotK3N0YXRpYyBpc2NfcmVzdWx0X3QKLStkb2F0dGFjaChpc2NfcXVvdGFfdCAqcXVvdGEsIGlzY19xdW90YV90ICoqcCwgYm9vbCBmb3JjZSkgewotIAlpc2NfcmVzdWx0X3QgcmVzdWx0OwotLQlJTlNJU1QocCAhPSBOVUxMICYmICpwID09IE5VTEwpOwotKwlSRVFVSVJFKHAgIT0gTlVMTCAmJiAqcCA9PSBOVUxMKTsKLSsKLSAJcmVzdWx0ID0gaXNjX3F1b3RhX3Jlc2VydmUocXVvdGEpOwotLQlpZiAocmVzdWx0ID09IElTQ19SX1NVQ0NFU1MgfHwgcmVzdWx0ID09IElTQ19SX1NPRlRRVU9UQSkKLSsJaWYgKHJlc3VsdCA9PSBJU0NfUl9TVUNDRVNTIHx8IHJlc3VsdCA9PSBJU0NfUl9TT0ZUUVVPVEEpIHsKLSsJCSpwID0gcXVvdGE7Ci0rCX0gZWxzZSBpZiAocmVzdWx0ID09IElTQ19SX1FVT1RBICYmIGZvcmNlKSB7Ci0rCQkvKiBhdHRhY2ggYW55d2F5ICovCi0rCQlMT0NLKCZxdW90YS0+bG9jayk7Ci0rCQlxdW90YS0+dXNlZCsrOwotKwkJVU5MT0NLKCZxdW90YS0+bG9jayk7Ci0rCi0gCQkqcCA9IHF1b3RhOwotKwkJcmVzdWx0ID0gSVNDX1JfU1VDQ0VTUzsKLSsJfQotKwotIAlyZXR1cm4gKHJlc3VsdCk7Ci0gfQotIAotK2lzY19yZXN1bHRfdAotK2lzY19xdW90YV9hdHRhY2goaXNjX3F1b3RhX3QgKnF1b3RhLCBpc2NfcXVvdGFfdCAqKnApIHsKLSsJcmV0dXJuIChkb2F0dGFjaChxdW90YSwgcCwgZmFsc2UpKTsKLSt9Ci0rCi0raXNjX3Jlc3VsdF90Ci0raXNjX3F1b3RhX2ZvcmNlKGlzY19xdW90YV90ICpxdW90YSwgaXNjX3F1b3RhX3QgKipwKSB7Ci0rCXJldHVybiAoZG9hdHRhY2gocXVvdGEsIHAsIHRydWUpKTsKLSt9Ci0rCi0gdm9pZAotLWlzY19xdW90YV9kZXRhY2goaXNjX3F1b3RhX3QgKipwKQotLXsKLStpc2NfcXVvdGFfZGV0YWNoKGlzY19xdW90YV90ICoqcCkgewotIAlJTlNJU1QocCAhPSBOVUxMICYmICpwICE9IE5VTEwpOwotIAlpc2NfcXVvdGFfcmVsZWFzZSgqcCk7Ci0gCSpwID0gTlVMTDsKLWRpZmYgLS1naXQgYS9saWIvaXNjL3dpbjMyL2xpYmlzYy5kZWYuaW4gYi9saWIvaXNjL3dpbjMyL2xpYmlzYy5kZWYuaW4KLWluZGV4IGE4MmZhY2VjMGYuLjdiOWYyM2Q3NzYgMTAwNjQ0Ci0tLS0gYS9saWIvaXNjL3dpbjMyL2xpYmlzYy5kZWYuaW4KLSsrKyBiL2xpYi9pc2Mvd2luMzIvbGliaXNjLmRlZi5pbgotQEAgLTUxOSw2ICs1MTksNyBAQCBpc2NfcG9ydHNldF9yZW1vdmVyYW5nZQotIGlzY19xdW90YV9hdHRhY2gKLSBpc2NfcXVvdGFfZGVzdHJveQotIGlzY19xdW90YV9kZXRhY2gKLStpc2NfcXVvdGFfZm9yY2UKLSBpc2NfcXVvdGFfaW5pdAotIGlzY19xdW90YV9tYXgKLSBpc2NfcXVvdGFfcmVsZWFzZQotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDA2LXJlc3RvcmUtYWxsb3dhbmNlLWZvci10Y3AtY2xpZW50cy1pbnRlcmZhY2VzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC8wMDA2LXJlc3RvcmUtYWxsb3dhbmNlLWZvci10Y3AtY2xpZW50cy1pbnRlcmZhY2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzODIxZDE4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwNi1yZXN0b3JlLWFsbG93YW5jZS1mb3ItdGNwLWNsaWVudHMtaW50ZXJmYWNlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLUJhY2twb3J0IHBhdGNoIHRvIGZpeCBDVkUtMjAxOC01NzQzLgotCi1SZWY6Ci1odHRwczovL3NlY3VyaXR5LXRyYWNrZXIuZGViaWFuLm9yZy90cmFja2VyL0NWRS0yMDE4LTU3NDMKLQotQ1ZFOiBDVkUtMjAxOC01NzQzCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5pc2Mub3JnL2lzYy1wcm9qZWN0cy9iaW5kOS9jb21taXQvNTk0MzRiOV0KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLUZyb20gNTk0MzRiOTg3ZThlYjQzNmIwOGMyNGU1NTllZTA5NGM0ZTkzOWRhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEV2YW4gSHVudCA8ZWFjaEBpc2Mub3JnPgotRGF0ZTogRnJpLCA1IEFwciAyMDE5IDE2OjI2OjE5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggNi82XSByZXN0b3JlIGFsbG93YW5jZSBmb3IgdGNwLWNsaWVudHMgPCBpbnRlcmZhY2VzCi0KLWluIHRoZSAicmVmYWN0b3IgdGNwcXVvdGEgYW5kIHBpcGVsaW5lIHJlZnMiIGNvbW1pdCwgdGhlIGNvdW50aW5nCi1vZiBhY3RpdmUgaW50ZXJmYWNlcyB3YXMgdGlnaHRlbmVkIGluIHN1Y2ggYSB3YXkgdGhhdCBuYW1lZCBjb3VsZAotZmFpbCB0byBsaXN0ZW4gb24gYW4gaW50ZXJmYWNlIGlmIHRoZXJlIHdlcmUgbW9yZSBpbnRlcmZhY2VzIHRoYW4KLXRjcC1jbGllbnRzLiB3aGVuIGNoZWNraW5nIHRoZSBxdW90YSB0byBzdGFydCBhY2NlcHRpbmcgb24gYW4KLWludGVyZmFjZSwgaWYgdGhlIG51bWJlciBvZiBhY3RpdmUgY2xpZW50cyB3YXMgYWJvdmUgemVybywgdGhlbgotaXQgd2FzIHByZXN1bWVkIHRoYXQgc29tZSBvdGhlciBjbGllbnQgd2FzIGFibGUgdG8gaGFuZGxlIGFjY2VwdGluZwotbmV3IGNvbm5lY3Rpb25zLiB0aGlzLCBob3dldmVyLCBpZ25vcmVkIHRoZSBmYWN0IHRoYXQgdGhlIGN1cnJlbnQgY2xpZW50Ci1jb3VsZCBiZSBpbmNsdWRlZCBpbiB0aGF0IGNvdW50LCBzbyBpZiB0aGUgcXVvdGEgd2FzIGFscmVhZHkgZXhjZWVkZWQKLWJlZm9yZSBhbGwgdGhlIGludGVyZmFjZXMgd2VyZSBsaXN0ZW5pbmcsIHNvbWUgaW50ZXJmYWNlcyB3b3VsZCBuZXZlcgotbGlzdGVuLgotCi13ZSBub3cgY2hlY2sgd2hldGhlciB0aGUgY3VycmVudCBjbGllbnQgaGFzIGJlZW4gbWFya2VkIGFjdGl2ZTsgaWYgc28sCi10aGVuIHRoZSBudW1iZXIgb2YgYWN0aXZlIGNsaWVudHMgb24gdGhlIGludGVyZmFjZSBtdXN0IGJlIGdyZWF0ZXIKLXRoYW4gMSwgbm90IDAuCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDBiNGUyY2Q0YzMxOTJiYTg4NTY5ZGQzNDRmNTQyYThjYzQzNzQyYjUpCi0oY2hlcnJ5IHBpY2tlZCBmcm9tIGNvbW1pdCBkMDEwMjNhYWFjMzU1NDNkYWZmYmRmNDg0NjRlMzIwMTUwMjM1ZDQxKQotLS0tCi0gYmluL25hbWVkL2NsaWVudC5jICAgICAgfCA4ICsrKysrLS0tCi0gZG9jL2FybS9CdjlBUk0tYm9vay54bWwgfCAzICsrLQotIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2NsaWVudC5jIGIvYmluL25hbWVkL2NsaWVudC5jCi1pbmRleCBkODI2YWIzMmJmLi44NDUzMjZhYmMwIDEwMDY0NAotLS0tIGEvYmluL25hbWVkL2NsaWVudC5jCi0rKysgYi9iaW4vbmFtZWQvY2xpZW50LmMKLUBAIC0zNDY0LDggKzM0NjQsOSBAQCBjbGllbnRfYWNjZXB0KG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSAJCSAqCi0gCQkgKiBTbywgd2UgY2hlY2sgaGVyZSB0byBzZWUgaWYgYW55IG90aGVyIGNsaWVudHMgYXJlCi0gCQkgKiBhbHJlYWR5IHNlcnZpY2luZyBUQ1AgcXVlcmllcyBvbiB0aGlzIGludGVyZmFjZSAod2hldGhlcgotLQkJICogYWNjZXB0aW5nLCByZWFkaW5nLCBvciBwcm9jZXNzaW5nKS4gSWYgd2UgZmluZCBhdCBsZWFzdAotLQkJICogb25lLCB0aGVuIGl0J3Mgb2theSAqbm90KiB0byBjYWxsIGFjY2VwdCAtIHdlIGNhbiBsZXQgdGhpcwotKwkJICogYWNjZXB0aW5nLCByZWFkaW5nLCBvciBwcm9jZXNzaW5nKS4gSWYgd2UgZmluZCB0aGF0IGF0Ci0rCQkgKiBsZWFzdCBvbmUgY2xpZW50IG90aGVyIHRoYW4gdGhpcyBvbmUgaXMgYWN0aXZlLCB0aGVuCi0rCQkgKiBpdCdzIG9rYXkgKm5vdCogdG8gY2FsbCBhY2NlcHQgLSB3ZSBjYW4gbGV0IHRoaXMKLSAJCSAqIGNsaWVudCBnbyBpbmFjdGl2ZSBhbmQgYW5vdGhlciB3aWxsIHRha2Ugb3ZlciB3aGVuIGl0J3MKLSAJCSAqIGRvbmUuCi0gCQkgKgotQEAgLTM0NzksNyArMzQ4MCw4IEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJICogcXVvdGEgaXMgdGNwLWNsaWVudHMgcGx1cyB0aGUgbnVtYmVyIG9mIGxpc3RlbmluZwotIAkJICogaW50ZXJmYWNlcyBwbHVzIDEuKQotIAkJICovCi0tCQlleGl0ID0gKGlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUsIDApID4gMCk7Ci0rCQlleGl0ID0gKGlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUsIDApID4KLSsJCQkoY2xpZW50LT50Y3BhY3RpdmUgPyAxIDogMCkpOwotIAkJaWYgKGV4aXQpIHsKLSAJCQljbGllbnQtPm5ld3N0YXRlID0gTlNfQ0xJRU5UU1RBVEVfSU5BQ1RJVkU7Ci0gCQkJKHZvaWQpZXhpdF9jaGVjayhjbGllbnQpOwotZGlmZiAtLWdpdCBhL2RvYy9hcm0vQnY5QVJNLWJvb2sueG1sIGIvZG9jL2FybS9CdjlBUk0tYm9vay54bWwKLWluZGV4IDM4MTc2OGQ1NDAuLjljNzZkM2NkNmYgMTAwNjQ0Ci0tLS0gYS9kb2MvYXJtL0J2OUFSTS1ib29rLnhtbAotKysrIGIvZG9jL2FybS9CdjlBUk0tYm9vay54bWwKLUBAIC04NDkzLDcgKzg0OTMsOCBAQCBhdm9pZC12Ni11ZHAtcG9ydHMgeyA0MDAwMDsgcmFuZ2UgNTAwMDAgNjAwMDA7IH07Ci0gCQk8cGFyYT4KLSAJCSAgVGhlIG51bWJlciBvZiBmaWxlIGRlc2NyaXB0b3JzIHJlc2VydmVkIGZvciBUQ1AsIHN0ZGlvLAotIAkJICBldGMuICBUaGlzIG5lZWRzIHRvIGJlIGJpZyBlbm91Z2ggdG8gY292ZXIgdGhlIG51bWJlciBvZgotLQkJICBpbnRlcmZhY2VzIDxjb21tYW5kPm5hbWVkPC9jb21tYW5kPiBsaXN0ZW5zIG9uLCA8Y29tbWFuZD50Y3AtY2xpZW50czwvY29tbWFuZD4gYXMgd2VsbCBhcwotKwkJICBpbnRlcmZhY2VzIDxjb21tYW5kPm5hbWVkPC9jb21tYW5kPiBsaXN0ZW5zIG9uIHBsdXMKLSsJCSAgPGNvbW1hbmQ+dGNwLWNsaWVudHM8L2NvbW1hbmQ+LCBhcyB3ZWxsIGFzCi0gCQkgIHRvIHByb3ZpZGUgcm9vbSBmb3Igb3V0Z29pbmcgVENQIHF1ZXJpZXMgYW5kIGluY29taW5nIHpvbmUKLSAJCSAgdHJhbnNmZXJzLiAgVGhlIGRlZmF1bHQgaXMgPGxpdGVyYWw+NTEyPC9saXRlcmFsPi4KLSAJCSAgVGhlIG1pbmltdW0gdmFsdWUgaXMgPGxpdGVyYWw+MTI4PC9saXRlcmFsPiBhbmQgdGhlCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kLzAwMDctUmVwbGFjZS1hdG9taWMtb3BlcmF0aW9ucy1pbi1iaW4tbmFtZWQtY2xpZW50LmMtd2l0aC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwNy1SZXBsYWNlLWF0b21pYy1vcGVyYXRpb25zLWluLWJpbi1uYW1lZC1jbGllbnQuYy13aXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYTg0ZWNhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvMDAwNy1SZXBsYWNlLWF0b21pYy1vcGVyYXRpb25zLWluLWJpbi1uYW1lZC1jbGllbnQuYy13aXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAKLUJhY2twb3J0IGNvbW1pdCB0byBmaXggY29tcGlsZSBlcnJvciBvbiBhcm0gY2F1c2VkIGJ5IGNvbW1pdHMgd2hpY2ggYXJlCi10byBmaXggQ1ZFLTIwMTgtNTc0My4KLQotQ1ZFOiBDVkUtMjAxOC01NzQzCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5pc2Mub3JnL2lzYy1wcm9qZWN0cy9iaW5kOS9jb21taXQvZWY0OTc4MF0KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLUZyb20gZWY0OTc4MGQzMGQzZGRjNTczNWNmYzMyNTYxYjY3OGE2MzRmYTcyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9PbmQ9QzU9OTllaj0yMFN1cj1DMz1CRD89IDxvbmRyZWpAc3VyeS5vcmc+Ci1EYXRlOiBXZWQsIDE3IEFwciAyMDE5IDE1OjIyOjI3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFJlcGxhY2UgYXRvbWljIG9wZXJhdGlvbnMgaW4gYmluL25hbWVkL2NsaWVudC5jIHdpdGgKLSBpc2NfcmVmY291bnQgcmVmZXJlbmNlIGNvdW50aW5nCi0KLS0tLQotIGJpbi9uYW1lZC9jbGllbnQuYyAgICAgICAgICAgICAgICAgICAgIHwgMTggKysrKysrKy0tLS0tLS0tLS0tCi0gYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmggfCAgNSArKystLQotIGJpbi9uYW1lZC9pbnRlcmZhY2VtZ3IuYyAgICAgICAgICAgICAgIHwgIDcgKysrKystLQotIDMgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMTUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9iaW4vbmFtZWQvY2xpZW50LmMgYi9iaW4vbmFtZWQvY2xpZW50LmMKLWluZGV4IDg0NTMyNmFiYzAuLjI5ZmVjYWRjYTggMTAwNjQ0Ci0tLS0gYS9iaW4vbmFtZWQvY2xpZW50LmMKLSsrKyBiL2Jpbi9uYW1lZC9jbGllbnQuYwotQEAgLTQwMiwxMiArNDAyLDEwIEBAIHRjcGNvbm5fZGV0YWNoKG5zX2NsaWVudF90ICpjbGllbnQpIHsKLSBzdGF0aWMgdm9pZAotIG1hcmtfdGNwX2FjdGl2ZShuc19jbGllbnRfdCAqY2xpZW50LCBib29sIGFjdGl2ZSkgewotIAlpZiAoYWN0aXZlICYmICFjbGllbnQtPnRjcGFjdGl2ZSkgewotLQkJaXNjX2F0b21pY194YWRkKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSwgMSk7Ci0rCQlpc2NfcmVmY291bnRfaW5jcmVtZW50MCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUsIE5VTEwpOwotIAkJY2xpZW50LT50Y3BhY3RpdmUgPSBhY3RpdmU7Ci0gCX0gZWxzZSBpZiAoIWFjdGl2ZSAmJiBjbGllbnQtPnRjcGFjdGl2ZSkgewotLQkJdWludDMyX3Qgb2xkID0KLS0JCQlpc2NfYXRvbWljX3hhZGQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWN0aXZlLCAtMSk7Ci0tCQlJTlNJU1Qob2xkID4gMCk7Ci0rCQlpc2NfcmVmY291bnRfZGVjcmVtZW50KCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjdGl2ZSwgTlVMTCk7Ci0gCQljbGllbnQtPnRjcGFjdGl2ZSA9IGFjdGl2ZTsKLSAJfQotIH0KLUBAIC01NTQsNyArNTUyLDcgQEAgZXhpdF9jaGVjayhuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCQlpZiAoY2xpZW50LT5tb3J0YWwgJiYgVENQX0NMSUVOVChjbGllbnQpICYmCi0gCQkgICAgY2xpZW50LT5uZXdzdGF0ZSAhPSBOU19DTElFTlRTVEFURV9GUkVFRCAmJgotIAkJICAgICFuc19nX2NsaWVudHRlc3QgJiYKLS0JCSAgICBpc2NfYXRvbWljX3hhZGQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nLCAwKSA9PSAwKQotKwkJICAgIGlzY19yZWZjb3VudF9jdXJyZW50KCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZykgPT0gMCkKLSAJCXsKLSAJCQkvKiBOb2JvZHkgZWxzZSBpcyBhY2NlcHRpbmcgKi8KLSAJCQljbGllbnQtPm1vcnRhbCA9IGZhbHNlOwotQEAgLTMzMjgsNyArMzMyNiw2IEBAIGNsaWVudF9uZXdjb25uKGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAlpc2NfcmVzdWx0X3QgcmVzdWx0OwotIAluc19jbGllbnRfdCAqY2xpZW50ID0gZXZlbnQtPmV2X2FyZzsKLSAJaXNjX3NvY2tldF9uZXdjb25uZXZfdCAqbmV2ZW50ID0gKGlzY19zb2NrZXRfbmV3Y29ubmV2X3QgKilldmVudDsKLS0JdWludDMyX3Qgb2xkOwotIAotIAlSRVFVSVJFKGV2ZW50LT5ldl90eXBlID09IElTQ19TT0NLRVZFTlRfTkVXQ09OTik7Ci0gCVJFUVVJUkUoTlNfQ0xJRU5UX1ZBTElEKGNsaWVudCkpOwotQEAgLTMzNDgsOCArMzM0NSw3IEBAIGNsaWVudF9uZXdjb25uKGlzY190YXNrX3QgKnRhc2ssIGlzY19ldmVudF90ICpldmVudCkgewotIAlJTlNJU1QoY2xpZW50LT5uYWNjZXB0cyA9PSAxKTsKLSAJY2xpZW50LT5uYWNjZXB0cy0tOwotIAotLQlvbGQgPSBpc2NfYXRvbWljX3hhZGQoJmNsaWVudC0+aW50ZXJmYWNlLT5udGNwYWNjZXB0aW5nLCAtMSk7Ci0tCUlOU0lTVChvbGQgPiAwKTsKLSsJaXNjX3JlZmNvdW50X2RlY3JlbWVudCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY2NlcHRpbmcsIE5VTEwpOwotIAotIAkvKgotIAkgKiBXZSBtdXN0IHRha2Ugb3duZXJzaGlwIG9mIHRoZSBuZXcgc29ja2V0IGJlZm9yZSB0aGUgZXhpdAotQEAgLTM0ODAsOCArMzQ3Niw4IEBAIGNsaWVudF9hY2NlcHQobnNfY2xpZW50X3QgKmNsaWVudCkgewotIAkJICogcXVvdGEgaXMgdGNwLWNsaWVudHMgcGx1cyB0aGUgbnVtYmVyIG9mIGxpc3RlbmluZwotIAkJICogaW50ZXJmYWNlcyBwbHVzIDEuKQotIAkJICovCi0tCQlleGl0ID0gKGlzY19hdG9taWNfeGFkZCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUsIDApID4KLS0JCQkoY2xpZW50LT50Y3BhY3RpdmUgPyAxIDogMCkpOwotKwkJZXhpdCA9IChpc2NfcmVmY291bnRfY3VycmVudCgmY2xpZW50LT5pbnRlcmZhY2UtPm50Y3BhY3RpdmUpID4KLSsJCQkoY2xpZW50LT50Y3BhY3RpdmUgPyAxVSA6IDBVKSk7Ci0gCQlpZiAoZXhpdCkgewotIAkJCWNsaWVudC0+bmV3c3RhdGUgPSBOU19DTElFTlRTVEFURV9JTkFDVElWRTsKLSAJCQkodm9pZClleGl0X2NoZWNrKGNsaWVudCk7Ci1AQCAtMzUzOSw3ICszNTM1LDcgQEAgY2xpZW50X2FjY2VwdChuc19jbGllbnRfdCAqY2xpZW50KSB7Ci0gCSAqIGxpc3RlbmluZyBmb3IgY29ubmVjdGlvbnMgaXRzZWxmIHRvIHByZXZlbnQgdGhlIGludGVyZmFjZQotIAkgKiBnb2luZyBkZWFkLgotIAkgKi8KLS0JaXNjX2F0b21pY194YWRkKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZywgMSk7Ci0rCWlzY19yZWZjb3VudF9pbmNyZW1lbnQwKCZjbGllbnQtPmludGVyZmFjZS0+bnRjcGFjY2VwdGluZywgTlVMTCk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi1kaWZmIC0tZ2l0IGEvYmluL25hbWVkL2luY2x1ZGUvbmFtZWQvaW50ZXJmYWNlbWdyLmggYi9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9pbnRlcmZhY2VtZ3IuaAotaW5kZXggMzUzNWVmMjJhOC4uNmUxMGYyMTBmZCAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9pbmNsdWRlL25hbWVkL2ludGVyZmFjZW1nci5oCi0rKysgYi9iaW4vbmFtZWQvaW5jbHVkZS9uYW1lZC9pbnRlcmZhY2VtZ3IuaAotQEAgLTQ1LDYgKzQ1LDcgQEAKLSAjaW5jbHVkZSA8aXNjL21hZ2ljLmg+Ci0gI2luY2x1ZGUgPGlzYy9tZW0uaD4KLSAjaW5jbHVkZSA8aXNjL3NvY2tldC5oPgotKyNpbmNsdWRlIDxpc2MvcmVmY291bnQuaD4KLSAKLSAjaW5jbHVkZSA8ZG5zL3Jlc3VsdC5oPgotIAotQEAgLTc1LDExICs3NiwxMSBAQCBzdHJ1Y3QgbnNfaW50ZXJmYWNlIHsKLSAJCQkJCQkvKiU8IFVEUCBkaXNwYXRjaGVycy4gKi8KLSAJaXNjX3NvY2tldF90ICoJCXRjcHNvY2tldDsJLyolPCBUQ1Agc29ja2V0LiAqLwotIAlpc2NfZHNjcF90CQlkc2NwOwkJLyolPCAibGlzdGVuLW9uIiBEU0NQIHZhbHVlICovCi0tCWludDMyX3QJCQludGNwYWNjZXB0aW5nOwkvKiU8IE51bWJlciBvZiBjbGllbnRzCi0rCWlzY19yZWZjb3VudF90CQludGNwYWNjZXB0aW5nOwkvKiU8IE51bWJlciBvZiBjbGllbnRzCi0gCQkJCQkJICAgICByZWFkeSB0byBhY2NlcHQgbmV3Ci0gCQkJCQkJICAgICBUQ1AgY29ubmVjdGlvbnMgb24gdGhpcwotIAkJCQkJCSAgICAgaW50ZXJmYWNlICovCi0tCWludDMyX3QJCQludGNwYWN0aXZlOwkvKiU8IE51bWJlciBvZiBjbGllbnRzCi0rCWlzY19yZWZjb3VudF90CQludGNwYWN0aXZlOwkvKiU8IE51bWJlciBvZiBjbGllbnRzCi0gCQkJCQkJICAgICBzZXJ2aWNpbmcgVENQIHF1ZXJpZXMKLSAJCQkJCQkgICAgICh3aGV0aGVyIGFjY2VwdGluZyBvcgotIAkJCQkJCSAgICAgY29ubmVjdGVkKSAqLwotZGlmZiAtLWdpdCBhL2Jpbi9uYW1lZC9pbnRlcmZhY2VtZ3IuYyBiL2Jpbi9uYW1lZC9pbnRlcmZhY2VtZ3IuYwotaW5kZXggZDlmNmRmNTgwMi4uMTM1NTMzYmU2YiAxMDA2NDQKLS0tLSBhL2Jpbi9uYW1lZC9pbnRlcmZhY2VtZ3IuYwotKysrIGIvYmluL25hbWVkL2ludGVyZmFjZW1nci5jCi1AQCAtMzg2LDggKzM4Niw4IEBAIG5zX2ludGVyZmFjZV9jcmVhdGUobnNfaW50ZXJmYWNlbWdyX3QgKm1nciwgaXNjX3NvY2thZGRyX3QgKmFkZHIsCi0gCSAqIGNvbm5lY3Rpb25zIHdpbGwgYmUgaGFuZGxlZCBpbiBwYXJhbGxlbCBldmVuIHRob3VnaCB0aGVyZSBpcwotIAkgKiBvbmx5IG9uZSBjbGllbnQgaW5pdGlhbGx5LgotIAkgKi8KLS0JaWZwLT5udGNwYWNjZXB0aW5nID0gMDsKLS0JaWZwLT5udGNwYWN0aXZlID0gMDsKLSsJaXNjX3JlZmNvdW50X2luaXQoJmlmcC0+bnRjcGFjY2VwdGluZywgMCk7Ci0rCWlzY19yZWZjb3VudF9pbml0KCZpZnAtPm50Y3BhY3RpdmUsIDApOwotIAotIAlpZnAtPm51ZHBkaXNwYXRjaCA9IDA7Ci0gCi1AQCAtNjE4LDYgKzYxOCw5IEBAIG5zX2ludGVyZmFjZV9kZXN0cm95KG5zX2ludGVyZmFjZV90ICppZnApIHsKLSAKLSAJbnNfaW50ZXJmYWNlbWdyX2RldGFjaCgmaWZwLT5tZ3IpOwotIAotKwlpc2NfcmVmY291bnRfZGVzdHJveSgmaWZwLT5udGNwYWN0aXZlKTsKLSsJaXNjX3JlZmNvdW50X2Rlc3Ryb3koJmlmcC0+bnRjcGFjY2VwdGluZyk7Ci0rCi0gCWlmcC0+bWFnaWMgPSAwOwotIAlpc2NfbWVtX3B1dChtY3R4LCBpZnAsIHNpemVvZigqaWZwKSk7Ci0gfQotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9iaW5kLWVuc3VyZS1zZWFyY2hpbmctZm9yLWpzb24taGVhZGVycy1zZWFyY2hlcy1zeXNyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZC9iaW5kLWVuc3VyZS1zZWFyY2hpbmctZm9yLWpzb24taGVhZGVycy1zZWFyY2hlcy1zeXNyLnBhdGNoCmluZGV4IDM3ZTIxMGUuLjg0NTU5ZTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmQvYmluZC1lbnN1cmUtc2VhcmNoaW5nLWZvci1qc29uLWhlYWRlcnMtc2VhcmNoZXMtc3lzci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kL2JpbmQtZW5zdXJlLXNlYXJjaGluZy1mb3ItanNvbi1oZWFkZXJzLXNlYXJjaGVzLXN5c3IucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDk0NzNkMjk4NDM1Nzk4MDJlOTZiMDI5M2EzZTk1M2ZlZDkzZGU4MmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGVkZGEyMGZiNWE2ZTg4NTQ4Zjg1ZTM5ZDM0ZDZjMDc0MzA2ZTE1YmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KIERhdGU6IFR1ZSwgOSBKdW4gMjAxNSAxMToyMjowMCAtMDQwMAogU3ViamVjdDogW1BBVENIXSBiaW5kOiBlbnN1cmUgc2VhcmNoaW5nIGZvciBqc29uIGhlYWRlcnMgc2VhcmNoZXMgc3lzcm9vdApAQCAtMjcsMTUgKzI3LDE2IEBACiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgU3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KKwogLS0tCi0gY29uZmlndXJlLmluIHwgMiArLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAotSW5kZXg6IGJpbmQtOS4xMS4zL2NvbmZpZ3VyZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGJpbmQtOS4xMS4zLm9yaWcvY29uZmlndXJlLmluCi0rKysgYmluZC05LjExLjMvY29uZmlndXJlLmluCi1AQCAtMjU3NCw3ICsyNTc0LDcgQEAgY2FzZSAiJHVzZV9saWJqc29uIiBpbgorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMTczOTJmZC4uZTg1YTVjNiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMjQ0OSw3ICsyNDQ5LDcgQEAgY2FzZSAiJHVzZV9saWJqc29uIiBpbgogIAkJbGlianNvbl9saWJzPSIiCiAgCQk7OwogIAlhdXRvfHllcykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMS4xMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMS4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZTY0MTcxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JpbmQvYmluZF85LjExLjEzLmJiCkBAIC0wLDAgKzEsMTQxIEBACitTVU1NQVJZID0gIklTQyBJbnRlcm5ldCBEb21haW4gTmFtZSBTZXJ2ZXIiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmlzYy5vcmcvc3cvYmluZC8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKKworTElDRU5TRSA9ICJJU0MgJiBCU0QiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PThmMTdmNjRlNDdlODNiNjBjZDkyMGExZTRiNTQ0MTllIgorCitERVBFTkRTID0gIm9wZW5zc2wgbGliY2FwIHpsaWIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9mdHAuaXNjLm9yZy9pc2MvYmluZDkvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9jb25mLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25hbWVkLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vYmluZDkgXAorICAgICAgICAgICBmaWxlOi8vZ2VuZXJhdGUtcm5kYy1rZXkuc2ggXAorICAgICAgICAgICBmaWxlOi8vbWFrZS1ldGMtaW5pdGQtYmluZC1zdG9wLXdvcmsucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vaW5pdC5kLWFkZC1zdXBwb3J0LWZvci1yZWFkLW9ubHktcm9vdGZzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2JpbmQtZW5zdXJlLXNlYXJjaGluZy1mb3ItanNvbi1oZWFkZXJzLXNlYXJjaGVzLXN5c3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuaW4tcmVtb3ZlLXVzZWxlc3MtTC11c2Vfb3BlbnNzbC1saWIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1uYW1lZC1sd3Jlc2QtVi1hbmQtc3RhcnQtbG9nLWhpZGUtYnVpbGQtb3B0aW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWF2b2lkLXN0YXJ0LWZhaWx1cmUtd2l0aC1iaW5kLXVzZXIucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxN2RlMGQwMjRhYjFlYWMzNzdmMWMyODU0ZGMyNTA1NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmZDNmM2NjOWZjZmNkYWE3NTJkYjM1ZWIyNDU5OGFmYTFmZGNjMjUwOWQzMjI3ZmM5MGE4NjMxYjdiNDAwZjdkIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9mdHAuaXNjLm9yZy9pc2MvYmluZDkvIgorIyBzdGF5IGF0IDkuMTEgdW50aWwgOS4xNiwgZnJvbSA5LjE2IGZvbGxvdyB0aGUgRVNWIHZlcnNpb25zIGRpdmlzaWJsZSBieSA0CitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj45LigxMXwxNnwyMHwyNHwyOCkoXC5cZCspKygtUFxkKykqKS8iCisKKyMgQklORCA+PSA5LjExLjIgbmVlZCBkaGNwZCA+PSA0LjQuMCwKKyMgZG9uJ3QgcmVwb3J0IGl0IGhlcmUgc2luY2UgZGhjcGQgaXMgYWxyZWFkeSByZWNlbnQgZW5vdWdoLgorQ1ZFX0NIRUNLX1dISVRFTElTVCArPSAiQ1ZFLTIwMTktNjQ3MCIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZCB1c2VyYWRkIHBrZ2NvbmZpZyBtdWx0aWxpYl9zY3JpcHQgbXVsdGlsaWJfaGVhZGVyCisKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn06JHtiaW5kaXJ9L2JpbmQ5LWNvbmZpZyAke1BOfToke2JpbmRpcn0vaXNjLWNvbmZpZy5zaCIKKworIyBQQUNLQUdFQ09ORklHcyByZWFkbGluZSBhbmQgbGliZWRpdCBzaG91bGQgTk9UIGJlIHNldCBhdCBzYW1lIHRpbWUKK1BBQ0tBR0VDT05GSUcgPz0gInJlYWRsaW5lIgorUEFDS0FHRUNPTkZJR1todHRwc3RhdHNdID0gIi0td2l0aC1saWJ4bWwyPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0sLS13aXRob3V0LWxpYnhtbDIsbGlieG1sMiIKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1yZWFkbGluZT0tbHJlYWRsaW5lLCxyZWFkbGluZSIKK1BBQ0tBR0VDT05GSUdbbGliZWRpdF0gPSAiLS13aXRoLXJlYWRsaW5lPS1sZWRpdCwsbGliZWRpdCIKK1BBQ0tBR0VDT05GSUdbdXJhbmRvbV0gPSAiLS13aXRoLXJhbmRvbWRldj0vZGV2L3VyYW5kb20sLS13aXRoLXJhbmRvbWRldj0vZGV2L3JhbmRvbSwsIgorUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItLXdpdGgtcHl0aG9uPXllcyAtLXdpdGgtcHl0aG9uLWluc3RhbGwtZGlyPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9ICwgLS13aXRob3V0LXB5dGhvbiwgcHl0aG9uMy1wbHktbmF0aXZlLCIKKworRU5BQkxFX0lQVjYgPSAiLS1lbmFibGUtaXB2Nj0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAneWVzJywgJ25vJywgZCl9IgorRVhUUkFfT0VDT05GID0gIiAke0VOQUJMRV9JUFY2fSAtLXdpdGgtbGlidG9vbCAtLWVuYWJsZS10aHJlYWRzIFwKKyAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRldnBvbGwgLS1lbmFibGUtZXBvbGwgLS13aXRoLWdvc3Q9bm8gXAorICAgICAgICAgICAgICAgICAtLXdpdGgtZ3NzYXBpPW5vIC0td2l0aC1lY2RzYT15ZXMgLS13aXRoLWVkZHNhPW5vIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWxtZGI9bm8gXAorICAgICAgICAgICAgICAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS9iaW5kIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLW9wZW5zc2w9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCisgICAgICAgICAgICAgICAiCisKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zbmF0aXZlIGRpc3R1dGlsczMtYmFzZScsICcnLCBkKX0KKworIyBkaGNwIG5lZWRzIC5sYSBzbyBrZWVwIHRoZW0KK1JFTU9WRV9MSUJUT09MX0xBID0gIjAiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitVU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZSAke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2JpbmQgLS1uby1jcmVhdGUtaG9tZSBcCisgICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBiaW5kIgorCitJTklUU0NSSVBUX05BTUUgPSAiYmluZCIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibmFtZWQuc2VydmljZSIKKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworCSMgY2xlYW4gaG9zdCBwYXRoIGluIGlzYy1jb25maWcuc2ggYmVmb3JlIHRoZSBoYXJkbGluayBjcmVhdGVkCisJIyBieSAibWFrZSBpbnN0YWxsIjoKKwkjICAgYmluZDktY29uZmlnIC0+IGlzYy1jb25maWcuc2gKKwlzZWQgLWkgLWUgInMsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LCIgJHtCfS9pc2MtY29uZmlnLnNoCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCisJcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKKwlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCisJaW5zdGFsbCAtZCAtbyBiaW5kICIke0R9JHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9iaW5kIgorCWluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2JpbmQiCisJaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kIgorCWluc3RhbGwgLW0gNjQ0ICR7U30vY29uZi8qICIke0R9JHtzeXNjb25mZGlyfS9iaW5kLyIKKwlpbnN0YWxsIC1tIDc1NSAiJHtTfS9pbml0LmQiICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvYmluZCIKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCXNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbjMsIyEgL3Vzci9iaW4vcHl0aG9uMywnIFwKKwkJJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWNvdmVyYWdlIFwKKwkJJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWNoZWNrZHMgXAorCQkke0R9JHtzYmluZGlyfS9kbnNzZWMta2V5bWdyCisJZmkKKworCSMgSW5zdGFsbCBzeXN0ZW1kIHJlbGF0ZWQgZmlsZXMKKwlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9CisJaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9nZW5lcmF0ZS1ybmRjLWtleS5zaCAke0R9JHtzYmluZGlyfQorCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uYW1lZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAorCSAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisJICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL25hbWVkLnNlcnZpY2UKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2JpbmQ5ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorCQllY2hvICJkIC9ydW4vbmFtZWQgMDc1NSBiaW5kIGJpbmQgLSAtIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvYmluZC5jb25mCisJZmkKKworICAgIG9lX211bHRpbGliX2hlYWRlciBpc2MvcGxhdGZvcm0uaAorfQorCitDT05GRklMRVNfJHtQTn0gPSAiIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZiBcCisJJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYubG9jYWwgXAorCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mLm9wdGlvbnMgXAorCSR7c3lzY29uZmRpcn0vYmluZC9kYi4wIFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuMTI3IFwKKwkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuZW1wdHkgXAorCSR7c3lzY29uZmRpcn0vYmluZC9kYi5sb2NhbCBcCisJJHtzeXNjb25mZGlyfS9iaW5kL2RiLnJvb3QgXAorCSIKKworQUxURVJOQVRJVkVfJHtQTn0tdXRpbHMgPSAibnNsb29rdXAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbnNsb29rdXBdID0gIiR7YmluZGlyfS9uc2xvb2t1cCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7UE59LXV0aWxzIgorRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9L2hvc3QgJHtiaW5kaXJ9L2RpZyAke2JpbmRpcn0vbWRpZyAke2JpbmRpcn0vbnNsb29rdXAgJHtiaW5kaXJ9L25zdXBkYXRlIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vaXNjLWNvbmZpZy5oIgorRklMRVNfJHtQTn0gKz0gIiR7c2JpbmRpcn0vZ2VuZXJhdGUtcm5kYy1rZXkuc2giCisKK1BBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS1saWJzIgorRklMRVNfJHtQTn0tbGlicyA9ICIke2xpYmRpcn0vKi5zbyoiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS8qLmxhIgorCitQQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zLWJpbmQnLCAnJywgZCl9IgorRklMRVNfcHl0aG9uMy1iaW5kID0gIiR7c2JpbmRpcn0vZG5zc2VjLWNvdmVyYWdlICR7c2JpbmRpcn0vZG5zc2VjLWNoZWNrZHMgXAorICAgICAgICAgICAgICAgICR7c2JpbmRpcn0vZG5zc2VjLWtleW1nciAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKKworUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKK1JERVBFTkRTX3B5dGhvbjMtYmluZCA9ICJweXRob24zLWNvcmUgcHl0aG9uMy1wbHkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmluZC9iaW5kXzkuMTEuNS1QNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMS41LVA0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODk3NzA2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9iaW5kL2JpbmRfOS4xMS41LVA0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiSVNDIEludGVybmV0IERvbWFpbiBOYW1lIFNlcnZlciIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuaXNjLm9yZy9zdy9iaW5kLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotCi1MSUNFTlNFID0gIklTQyAmIEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlSSUdIVDttZDU9OGYxN2Y2NGU0N2U4M2I2MGNkOTIwYTFlNGI1NDQxOWUiCi0KLURFUEVORFMgPSAib3BlbnNzbCBsaWJjYXAgemxpYiIKLQotU1JDX1VSSSA9ICJodHRwczovL2Z0cC5pc2Mub3JnL2lzYy9iaW5kOS8ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2NvbmYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbmFtZWQuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9iaW5kOSBcCi0gICAgICAgICAgIGZpbGU6Ly9nZW5lcmF0ZS1ybmRjLWtleS5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tYWtlLWV0Yy1pbml0ZC1iaW5kLXN0b3Atd29yay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0LmQtYWRkLXN1cHBvcnQtZm9yLXJlYWQtb25seS1yb290ZnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYmluZC1lbnN1cmUtc2VhcmNoaW5nLWZvci1qc29uLWhlYWRlcnMtc2VhcmNoZXMtc3lzci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdlbi5jLWV4dGVuZC1ESVJOQU1FU0laRS1mcm9tLTI1Ni10by01MTIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1saWItZG5zLWdlbi5jLWZpeC10b28tbG9uZy1lcnJvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtdXNlbGVzcy1MLXVzZV9vcGVuc3NsLWxpYi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW5hbWVkLWx3cmVzZC1WLWFuZC1zdGFydC1sb2ctaGlkZS1idWlsZC1vcHRpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYXZvaWQtc3RhcnQtZmFpbHVyZS13aXRoLWJpbmQtdXNlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJpbmQtZml4LUNWRS0yMDE5LTY0NzEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtZW5mb3JjZW1lbnQtb2YtdGNwLWNsaWVudHMtdjEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi10Y3AtY2xpZW50cy1jb3VsZC1zdGlsbC1iZS1leGNlZWRlZC12Mi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLXVzZS1yZWZlcmVuY2UtY291bnRlci1mb3ItcGlwZWxpbmUtZ3JvdXBzLXYzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtYmV0dGVyLXRjcHF1b3RhLWFjY291bnRpbmctYW5kLWNsaWVudC1tb3J0YWxpdHktY2hlYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LXJlZmFjdG9yLXRjcHF1b3RhLWFuZC1waXBlbGluZS1yZWZzLWFsbG93LXNwZWNpYWwtY2EucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1yZXN0b3JlLWFsbG93YW5jZS1mb3ItdGNwLWNsaWVudHMtaW50ZXJmYWNlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LVJlcGxhY2UtYXRvbWljLW9wZXJhdGlvbnMtaW4tYmluLW5hbWVkLWNsaWVudC5jLXdpdGgucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOGRkYWI0YjYxZmE0NTE2ZmU0MDQ2NzljNzRlMzc5NjAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2U4YzA4MTkyYmNiYWViNmU5ZjIzOTFhNzBlNjc1ODNiMDI3YjkwZThjNGJjMTYwNWRhNmViMTI2ZWRkZTQzNCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZnRwLmlzYy5vcmcvaXNjL2JpbmQ5LyIKLSMgc3RheSBhdCA5LjExIHVudGlsIDkuMTYsIGZyb20gOS4xNiBmb2xsb3cgdGhlIEVTViB2ZXJzaW9ucyBkaXZpc2libGUgYnkgNAotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+OS4oMTF8MTZ8MjB8MjR8MjgpKFwuXGQrKSsoLVBcZCspKikvIgotCi0jIEJJTkQgPj0gOS4xMS4yIG5lZWQgZGhjcGQgPj0gNC40LjAsCi0jIGRvbid0IHJlcG9ydCBpdCBoZXJlIHNpbmNlIGRoY3BkIGlzIGFscmVhZHkgcmVjZW50IGVub3VnaC4KLUNWRV9DSEVDS19XSElURUxJU1QgKz0gIkNWRS0yMDE5LTY0NzAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQgdXNlcmFkZCBwa2djb25maWcgbXVsdGlsaWJfc2NyaXB0Ci0KLU1VTFRJTElCX1NDUklQVFMgPSAiJHtQTn06JHtiaW5kaXJ9L2JpbmQ5LWNvbmZpZyAke1BOfToke2JpbmRpcn0vaXNjLWNvbmZpZy5zaCIKLQotIyBQQUNLQUdFQ09ORklHcyByZWFkbGluZSBhbmQgbGliZWRpdCBzaG91bGQgTk9UIGJlIHNldCBhdCBzYW1lIHRpbWUKLVBBQ0tBR0VDT05GSUcgPz0gInJlYWRsaW5lIgotUEFDS0FHRUNPTkZJR1todHRwc3RhdHNdID0gIi0td2l0aC1saWJ4bWwyPSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0sLS13aXRob3V0LWxpYnhtbDIsbGlieG1sMiIKLVBBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1yZWFkbGluZT0tbHJlYWRsaW5lLCxyZWFkbGluZSIKLVBBQ0tBR0VDT05GSUdbbGliZWRpdF0gPSAiLS13aXRoLXJlYWRsaW5lPS1sZWRpdCwsbGliZWRpdCIKLVBBQ0tBR0VDT05GSUdbdXJhbmRvbV0gPSAiLS13aXRoLXJhbmRvbWRldj0vZGV2L3VyYW5kb20sLS13aXRoLXJhbmRvbWRldj0vZGV2L3JhbmRvbSwsIgotUEFDS0FHRUNPTkZJR1tweXRob24zXSA9ICItLXdpdGgtcHl0aG9uPXllcyAtLXdpdGgtcHl0aG9uLWluc3RhbGwtZGlyPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9ICwgLS13aXRob3V0LXB5dGhvbiwgcHl0aG9uMy1wbHktbmF0aXZlLCIKLQotRU5BQkxFX0lQVjYgPSAiLS1lbmFibGUtaXB2Nj0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAneWVzJywgJ25vJywgZCl9IgotRVhUUkFfT0VDT05GID0gIiAke0VOQUJMRV9JUFY2fSAtLXdpdGgtbGlidG9vbCAtLWVuYWJsZS10aHJlYWRzIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRldnBvbGwgLS1lbmFibGUtZXBvbGwgLS13aXRoLWdvc3Q9bm8gXAotICAgICAgICAgICAgICAgICAtLXdpdGgtZ3NzYXBpPW5vIC0td2l0aC1lY2RzYT15ZXMgLS13aXRoLWVkZHNhPW5vIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWxtZGI9bm8gXAotICAgICAgICAgICAgICAgICAtLXN5c2NvbmZkaXI9JHtzeXNjb25mZGlyfS9iaW5kIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLW9wZW5zc2w9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCi0gICAgICAgICAgICAgICAiCi0KLWluaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICdweXRob24zbmF0aXZlIGRpc3R1dGlsczMtYmFzZScsICcnLCBkKX0KLQotIyBkaGNwIG5lZWRzIC5sYSBzbyBrZWVwIHRoZW0KLVJFTU9WRV9MSUJUT09MX0xBID0gIjAiCi0KLVVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCi1VU0VSQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIC0taG9tZSAke2xvY2Fsc3RhdGVkaXJ9L2NhY2hlL2JpbmQgLS1uby1jcmVhdGUtaG9tZSBcCi0gICAgICAgICAgICAgICAgICAgICAgIC0tdXNlci1ncm91cCBiaW5kIgotCi1JTklUU0NSSVBUX05BTUUgPSAiYmluZCIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibmFtZWQuc2VydmljZSIKLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotCSMgY2xlYW4gaG9zdCBwYXRoIGluIGlzYy1jb25maWcuc2ggYmVmb3JlIHRoZSBoYXJkbGluayBjcmVhdGVkCi0JIyBieSAibWFrZSBpbnN0YWxsIjoKLQkjICAgYmluZDktY29uZmlnIC0+IGlzYy1jb25maWcuc2gKLQlzZWQgLWkgLWUgInMsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LCIgJHtCfS9pc2MtY29uZmlnLnNoCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCi0Jcm1kaXIgIiR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3J1biIKLQlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAiJHtEfSR7bG9jYWxzdGF0ZWRpcn0iCi0JaW5zdGFsbCAtZCAtbyBiaW5kICIke0R9JHtsb2NhbHN0YXRlZGlyfS9jYWNoZS9iaW5kIgotCWluc3RhbGwgLWQgIiR7RH0ke3N5c2NvbmZkaXJ9L2JpbmQiCi0JaW5zdGFsbCAtZCAiJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kIgotCWluc3RhbGwgLW0gNjQ0ICR7U30vY29uZi8qICIke0R9JHtzeXNjb25mZGlyfS9iaW5kLyIKLQlpbnN0YWxsIC1tIDc1NSAiJHtTfS9pbml0LmQiICIke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvYmluZCIKLSAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uMycsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCXNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbjMsIyEgL3Vzci9iaW4vcHl0aG9uMywnIFwKLQkJJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWNvdmVyYWdlIFwKLQkJJHtEfSR7c2JpbmRpcn0vZG5zc2VjLWNoZWNrZHMgXAotCQkke0R9JHtzYmluZGlyfS9kbnNzZWMta2V5bWdyCi0JZmkKLQotCSMgSW5zdGFsbCBzeXN0ZW1kIHJlbGF0ZWQgZmlsZXMKLQlpbnN0YWxsIC1kICR7RH0ke3NiaW5kaXJ9Ci0JaW5zdGFsbCAtbSA3NTUgJHtXT1JLRElSfS9nZW5lcmF0ZS1ybmRjLWtleS5zaCAke0R9JHtzYmluZGlyfQotCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uYW1lZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0Jc2VkIC1pIC1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotCSAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCi0JICAgICAgICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL25hbWVkLnNlcnZpY2UKLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdAotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2JpbmQ5ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQKLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAotCQllY2hvICJkIC9ydW4vbmFtZWQgMDc1NSBiaW5kIGJpbmQgLSAtIiA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvYmluZC5jb25mCi0JZmkKLX0KLQotQ09ORkZJTEVTXyR7UE59ID0gIiBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL25hbWVkLmNvbmYgXAotCSR7c3lzY29uZmRpcn0vYmluZC9uYW1lZC5jb25mLmxvY2FsIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvbmFtZWQuY29uZi5vcHRpb25zIFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvZGIuMCBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLjEyNyBcCi0JJHtzeXNjb25mZGlyfS9iaW5kL2RiLmVtcHR5IFwKLQkke3N5c2NvbmZkaXJ9L2JpbmQvZGIubG9jYWwgXAotCSR7c3lzY29uZmRpcn0vYmluZC9kYi5yb290IFwKLQkiCi0KLUFMVEVSTkFUSVZFXyR7UE59LXV0aWxzID0gIm5zbG9va3VwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW25zbG9va3VwXSA9ICIke2JpbmRpcn0vbnNsb29rdXAiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLVBBQ0tBR0VfQkVGT1JFX1BOICs9ICIke1BOfS11dGlscyIKLUZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS9ob3N0ICR7YmluZGlyfS9kaWcgJHtiaW5kaXJ9L21kaWcgJHtiaW5kaXJ9L25zbG9va3VwICR7YmluZGlyfS9uc3VwZGF0ZSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2lzYy1jb25maWcuaCIKLUZJTEVTXyR7UE59ICs9ICIke3NiaW5kaXJ9L2dlbmVyYXRlLXJuZGMta2V5LnNoIgotCi1QQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtQTn0tbGlicyIKLUZJTEVTXyR7UE59LWxpYnMgPSAiJHtsaWJkaXJ9Lyouc28qIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vKi5sYSIKLQotUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbjMnLCAncHl0aG9uMy1iaW5kJywgJycsIGQpfSIKLUZJTEVTX3B5dGhvbjMtYmluZCA9ICIke3NiaW5kaXJ9L2Ruc3NlYy1jb3ZlcmFnZSAke3NiaW5kaXJ9L2Ruc3NlYy1jaGVja2RzIFwKLSAgICAgICAgICAgICAgICAke3NiaW5kaXJ9L2Ruc3NlYy1rZXltZ3IgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi0KLVJERVBFTkRTXyR7UE59LWRldiA9ICIiCi1SREVQRU5EU19weXRob24zLWJpbmQgPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtcGx5IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUuaW5jCmluZGV4IDQ4NDUwOTMuLjE1MGQ5MDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS5pbmMKQEAgLTQ2LDIwICs0NiwxMyBAQAogUEFDS0FHRUNPTkZJR1tidHBjbGllbnRdID0gIi0tZW5hYmxlLWJ0cGNsaWVudCwtLWRpc2FibGUtYnRwY2xpZW50LCBlbGwiCiBQQUNLQUdFQ09ORklHW3VkZXZdID0gIi0tZW5hYmxlLXVkZXYsLS1kaXNhYmxlLXVkZXYsdWRldiIKIAotU1JDX1VSSSA9ICJcCi0gICAgJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9ibHVldG9vdGgvYmx1ZXotJHtQVn0udGFyLnh6IFwKLSAgICBmaWxlOi8vb3V0LW9mLXRyZWUucGF0Y2ggXAotICAgIGZpbGU6Ly9pbml0IFwKLSAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnJywgJ2ZpbGU6Ly8wMDAxLUFsbG93LXVzaW5nLW9iZXhkLXdpdGhvdXQtc3lzdGVtZC1pbi10aGUtdXNlci1zZXNzaW8ucGF0Y2gnLCBkKX0gXAotICAgIGZpbGU6Ly8wMDAxLXRlc3RzLWFkZC1hLXRhcmdldC1mb3ItYnVpbGRpbmctdGVzdHMtd2l0aG91dC1ydW5uaW4ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXRlc3QtZ2F0dC1GaXgtaHVuZy1pc3N1ZS5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tRml4LWEtcmFjZS1pc3N1ZS1mb3ItdG9vbHMucGF0Y2ggXAotICAgIGZpbGU6Ly9DVkUtMjAxOC0xMDkxMC5wYXRjaCBcCi0gICAgZmlsZTovL2djYzktZml4ZXMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXRvb2xzLUZpeC1idWlsZC1hZnRlci15MjAzOC1jaGFuZ2VzLWluLWdsaWJjLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMS10b29scy1idHBjbGllbnQuYy1pbmNsdWRlLXNpZ25hbC5oLnBhdGNoIFwKLSIKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9ibHVldG9vdGgvYmx1ZXotJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2luaXQgXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJycsICdmaWxlOi8vMDAwMS1BbGxvdy11c2luZy1vYmV4ZC13aXRob3V0LXN5c3RlbWQtaW4tdGhlLXVzZXItc2Vzc2lvLnBhdGNoJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtYWRkLWEtdGFyZ2V0LWZvci1idWlsZGluZy10ZXN0cy13aXRob3V0LXJ1bm5pbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3QtZ2F0dC1GaXgtaHVuZy1pc3N1ZS5wYXRjaCBcCisgICAgICAgICAgICIKIFMgPSAiJHtXT1JLRElSfS9ibHVlei0ke1BWfSIKIAogQ1ZFX1BST0RVQ1QgPSAiYmx1ZXoiCkBAIC03MCw2ICs2Myw3IEBACiAgIC0tZW5hYmxlLXRlc3QgXAogICAtLWVuYWJsZS1kYXRhZmlsZXMgXAogICAtLWVuYWJsZS1saWJyYXJ5IFwKKyAgLS13aXRob3V0LXpzaC1jb21wbGV0aW9uLWRpciBcCiAiCiAKICMgYmx1ZXo1IGJ1aWxkcyBhIGxhcmdlIG51bWJlciBvZiB1c2VmdWwgdXRpbGl0aWVzIGJ1dCBkb2VzIG5vdApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS1BbGxvdy11c2luZy1vYmV4ZC13aXRob3V0LXN5c3RlbWQtaW4tdGhlLXVzZXItc2Vzc2lvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS1BbGxvdy11c2luZy1vYmV4ZC13aXRob3V0LXN5c3RlbWQtaW4tdGhlLXVzZXItc2Vzc2lvLnBhdGNoCmluZGV4IGRhNzE0MDkuLjYxOGVkNzMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtQWxsb3ctdXNpbmctb2JleGQtd2l0aG91dC1zeXN0ZW1kLWluLXRoZS11c2VyLXNlc3Npby5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLUFsbG93LXVzaW5nLW9iZXhkLXdpdGhvdXQtc3lzdGVtZC1pbi10aGUtdXNlci1zZXNzaW8ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDk5Y2NkYmUxNTUwMjhjNGM3ODk4MDNhNDI5MDcyNjc1Yjg3ZDBjM2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGY3NGViOTdjOWZiM2MwZWUyODk1NzQyZTc3M2FjNmEzYzQxYzk5OWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBHaW92YW5uaSBDYW1wYWduYSA8Z2NhbXBhZ25hLWNOVWRsUm90Rk1uTkx4alRlbkxldHdAcHVibGljLmdtYW5lLm9yZz4KIERhdGU6IFNhdCwgMTIgT2N0IDIwMTMgMTc6NDU6MjUgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gQWxsb3cgdXNpbmcgb2JleGQgd2l0aG91dCBzeXN0ZW1kIGluIHRoZSB1c2VyIHNlc3Npb24KQEAgLTE3LDIyICsxNywyMiBAQAogU2lnbmVkLW9mZi1ieTogSmF2aWVyIFZpZ3VlcmEgPGphdmllci52aWd1ZXJhQGRpZ2kuY29tPgogCiAtLS0KLSBNYWtlZmlsZS5vYmV4ZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA0ICsrLS0KLSBvYmV4ZC9zcmMve29yZy5ibHVlei5vYmV4LnNlcnZpY2UgPT4gb3JnLmJsdWV6Lm9iZXguc2VydmljZS5pbn0gfCAyICstCisgTWFrZWZpbGUub2JleGQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQorIC4uLi9zcmMve29yZy5ibHVlei5vYmV4LnNlcnZpY2UgPT4gb3JnLmJsdWV6Lm9iZXguc2VydmljZS5pbn0gfCAyICstCiAgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAgcmVuYW1lIG9iZXhkL3NyYy97b3JnLmJsdWV6Lm9iZXguc2VydmljZSA9PiBvcmcuYmx1ZXoub2JleC5zZXJ2aWNlLmlufSAoNzYlKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUub2JleGQgYi9NYWtlZmlsZS5vYmV4ZAotaW5kZXggYzQ2MjY5Mi4uMDMyNWY2NiAxMDA2NDQKK2luZGV4IGRlNTlkMjkuLjczMDA0YTMgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5vYmV4ZAogKysrIGIvTWFrZWZpbGUub2JleGQKIEBAIC0xLDEyICsxLDEyIEBACiAgaWYgU1lTVEVNRAotIHN5c3RlbWR1c2VydW5pdGRpciA9IEBTWVNURU1EX1VTRVJVTklURElSQAorIHN5c3RlbWR1c2VydW5pdGRpciA9ICQoU1lTVEVNRF9VU0VSVU5JVERJUikKICBzeXN0ZW1kdXNlcnVuaXRfREFUQSA9IG9iZXhkL3NyYy9vYmV4LnNlcnZpY2UKICtlbmRpZgogIAotIGRidXNzZXNzaW9uYnVzZGlyID0gQERCVVNfU0VTU0lPTkJVU0RJUkAKKyBkYnVzc2Vzc2lvbmJ1c2RpciA9ICQoREJVU19TRVNTSU9OQlVTRElSKQogIGRidXNzZXNzaW9uYnVzX0RBVEEgPSBvYmV4ZC9zcmMvb3JnLmJsdWV6Lm9iZXguc2VydmljZQogLWVuZGlmCiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLU1ha2VmaWxlLmFtLUZpeC1hLXJhY2UtaXNzdWUtZm9yLXRvb2xzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS1NYWtlZmlsZS5hbS1GaXgtYS1yYWNlLWlzc3VlLWZvci10b29scy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjZjYjk3OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLU1ha2VmaWxlLmFtLUZpeC1hLXJhY2UtaXNzdWUtZm9yLXRvb2xzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSAxMTdjNDEyNDJjMDFlMDU3Mjk1YWVkODBlZDk3M2M2ZGM3ZTM1ZmUyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgOCBPY3QgMjAxOSAxMTowMTo1NiArMDEwMAotU3ViamVjdDogW1BBVENIIEJsdWVaXSBNYWtlZmlsZS5hbTogYWRkIG1pc3NpbmcgbWtkaXIgaW4gcnVsZXMgZ2VuZXJhdGlvbgotCi1JbiBwYXJhbGxlbCBvdXQtb2YtdHJlZSBidWlsZHMgaXQncyBwb3NzaWJsZSB0aGF0IHRvb2xzLyoucnVsZXMgYXJlCi1nZW5lcmF0ZWQgYmVmb3JlIHRoZSB0YXJnZXQgZGlyZWN0b3J5IGhhcyBiZWVuIGltcGxpY2l0bHkgY3JlYXRlZC4gU29sdmUgdGhpcyBieQotY3JlYXRpbmcgdGhlIGRpcmVjdG9yeSBiZWZvcmUgd3JpdGluZyBpbnRvIGl0LgotLS0tCi0gTWFrZWZpbGUuYW0gfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDJhYzI4YjIzZC4uZTdiY2QyMzY2IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuYW0KLSsrKyBiL01ha2VmaWxlLmFtCi1AQCAtNTg5LDYgKzU4OSw3IEBAIHNyYy9idWlsdGluLmg6IHNyYy9nZW5idWlsdGluICQoYnVpbHRpbl9zb3VyY2VzKQotIAkkKEFNX1ZfR0VOKSQoc3JjZGlyKS9zcmMvZ2VuYnVpbHRpbiAkKGJ1aWx0aW5fbW9kdWxlcykgPiAkQAotIAotIHRvb2xzLyUucnVsZXM6Ci0rCSQoQU1fVl9hdCkkKE1LRElSX1ApIHRvb2xzCi0gCSQoQU1fVl9HRU4pY3AgJChzcmNkaXIpLyQoc3Vic3QgOTctLCwkQCkgJEAKLSAKLSAkKGxpYl9saWJibHVldG9vdGhfbGFfT0JKRUNUUyk6ICQobG9jYWxfaGVhZGVycykKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtdG9vbHMtRml4LWJ1aWxkLWFmdGVyLXkyMDM4LWNoYW5nZXMtaW4tZ2xpYmMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS8wMDAxLXRvb2xzLUZpeC1idWlsZC1hZnRlci15MjAzOC1jaGFuZ2VzLWluLWdsaWJjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2EyMGFlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtdG9vbHMtRml4LWJ1aWxkLWFmdGVyLXkyMDM4LWNoYW5nZXMtaW4tZ2xpYmMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1Gcm9tIGYzNmY3MWY2MGIxZTY4YzBmMTJlNjE1YjliMTI4ZDA4OWVjM2RkMTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBCYXN0aWVuIE5vY2VyYSA8aGFkZXNzQGhhZGVzcy5uZXQ+Ci1EYXRlOiBGcmksIDcgSnVuIDIwMTkgMDk6NTE6MzMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gdG9vbHM6IEZpeCBidWlsZCBhZnRlciB5MjAzOCBjaGFuZ2VzIGluIGdsaWJjCi0KLVRoZSAzMi1iaXQgU0lPQ0dTVEFNUCBoYXMgYmVlbiBkZXByZWNhdGVkLiBVc2UgdGhlIGRlcHJlY2F0ZWQgbmFtZQotdG8gZml4IHRoZSBidWlsZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBiYWNrcG9ydCBjb21taXQgZjM2ZjcxZjYwYjFlNjhjMGYxMmU2MTViOWIxMjhkMDg5ZWMzZGQxOQotCi1TaWduZWQtb2ZmLWJ5OiBCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAZ21haWwuY29tPgotCi0tLS0KLSB0b29scy9sMnRlc3QuYyB8IDYgKysrKystCi0gdG9vbHMvcmN0ZXN0LmMgfCA2ICsrKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rvb2xzL2wydGVzdC5jIGIvdG9vbHMvbDJ0ZXN0LmMKLWluZGV4IGU3NTVhYzg4MS4uZTc4N2MyY2UyIDEwMDY0NAotLS0tIGEvdG9vbHMvbDJ0ZXN0LmMKLSsrKyBiL3Rvb2xzL2wydGVzdC5jCi1AQCAtNTUsNiArNTUsMTAgQEAKLSAjZGVmaW5lIEJSRURSX0RFRkFVTFRfUFNNCTB4MTAxMQotICNkZWZpbmUgTEVfREVGQVVMVF9QU00JCTB4MDA4MAotIAotKyNpZm5kZWYgU0lPQ0dTVEFNUF9PTEQKLSsjZGVmaW5lIFNJT0NHU1RBTVBfT0xEIFNJT0NHU1RBTVAKLSsjZW5kaWYKLSsKLSAvKiBUZXN0IG1vZGVzICovCi0gZW51bSB7Ci0gCVNFTkQsCi1AQCAtOTA3LDcgKzkxMSw3IEBAIHN0YXRpYyB2b2lkIHJlY3ZfbW9kZShpbnQgc2spCi0gCQkJaWYgKHRpbWVzdGFtcCkgewotIAkJCQlzdHJ1Y3QgdGltZXZhbCB0djsKLSAKLS0JCQkJaWYgKGlvY3RsKHNrLCBTSU9DR1NUQU1QLCAmdHYpIDwgMCkgewotKwkJCQlpZiAoaW9jdGwoc2ssIFNJT0NHU1RBTVBfT0xELCAmdHYpIDwgMCkgewotIAkJCQkJdGltZXN0YW1wID0gMDsKLSAJCQkJCW1lbXNldCh0cywgMCwgc2l6ZW9mKHRzKSk7Ci0gCQkJCX0gZWxzZSB7Ci1kaWZmIC0tZ2l0IGEvdG9vbHMvcmN0ZXN0LmMgYi90b29scy9yY3Rlc3QuYwotaW5kZXggOTQ0OTBmNDYyLi5iYzhlZDg3NWQgMTAwNjQ0Ci0tLS0gYS90b29scy9yY3Rlc3QuYwotKysrIGIvdG9vbHMvcmN0ZXN0LmMKLUBAIC01MCw2ICs1MCwxMCBAQAotIAotICNpbmNsdWRlICJzcmMvc2hhcmVkL3V0aWwuaCIKLSAKLSsjaWZuZGVmIFNJT0NHU1RBTVBfT0xECi0rI2RlZmluZSBTSU9DR1NUQU1QX09MRCBTSU9DR1NUQU1QCi0rI2VuZGlmCi0rCi0gLyogVGVzdCBtb2RlcyAqLwotIGVudW0gewotIAlTRU5ELAotQEAgLTUwNSw3ICs1MDksNyBAQCBzdGF0aWMgdm9pZCByZWN2X21vZGUoaW50IHNrKQotIAkJCWlmICh0aW1lc3RhbXApIHsKLSAJCQkJc3RydWN0IHRpbWV2YWwgdHY7Ci0gCi0tCQkJCWlmIChpb2N0bChzaywgU0lPQ0dTVEFNUCwgJnR2KSA8IDApIHsKLSsJCQkJaWYgKGlvY3RsKHNrLCBTSU9DR1NUQU1QX09MRCwgJnR2KSA8IDApIHsKLSAJCQkJCXRpbWVzdGFtcCA9IDA7Ci0gCQkJCQltZW1zZXQodHMsIDAsIHNpemVvZih0cykpOwotIAkJCQl9IGVsc2UgewotLS0gCi0yLjE5LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS10b29scy1idHBjbGllbnQuYy1pbmNsdWRlLXNpZ25hbC5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvMDAwMS10b29scy1idHBjbGllbnQuYy1pbmNsdWRlLXNpZ25hbC5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MjBhYWFiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1LzAwMDEtdG9vbHMtYnRwY2xpZW50LmMtaW5jbHVkZS1zaWduYWwuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gMGIxNzY2NTE0ZjY4NDdjNzM2N2ZjZTA3ZjE5YTc1MGVjNzRjMTFhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAyNiBTZXAgMjAxOSAxNjoxOTozNCArMDgwMAotU3ViamVjdDogW1BBVENIXSB0b29scy9idHBjbGllbnQuYzogaW5jbHVkZSBzaWduYWwuaAotCi1GaXggY29tcGlsZSBmYWlsdXJlIHdoZW4gY29uZmlndXJlIC0tZW5hYmxlLWJ0cGNsaWVudDoKLWJ0cGNsaWVudC5jOjI4MzQ6NzogZXJyb3I6ICdTSUdJTlQnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtBIHN1YnNldCBvZiB0aGUgZnVsbCBmaXggdGhhdCB3ZW50IHVwc3RyZWFtXQotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRvb2xzL2J0cGNsaWVudC5jIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS90b29scy9idHBjbGllbnQuYyBiL3Rvb2xzL2J0cGNsaWVudC5jCi1pbmRleCBiMjE3ZGY1Li5hZWNlN2ZlIDEwMDY0NAotLS0tIGEvdG9vbHMvYnRwY2xpZW50LmMKLSsrKyBiL3Rvb2xzL2J0cGNsaWVudC5jCi1AQCAtMjksNiArMjksNyBAQAotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGdldG9wdC5oPgotKyNpbmNsdWRlIDxzaWduYWwuaD4KLSAKLSAjaW5jbHVkZSA8ZWxsL2VsbC5oPgotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9DVkUtMjAxOC0xMDkxMC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L0NWRS0yMDE4LTEwOTEwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTc4MDc3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L0NWRS0yMDE4LTEwOTEwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTA1ICswLDAgQEAKLUZyb20gOTc3MzIxZjJjN2Y5NzRlYTY4YTNkOTBkZjI5NmM2NjE4OWEzZjI1NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IExlaSBNYW9odWkgPGxlaW1hb2h1aUBjbi5mdWppdHN1LmNvbT4KLURhdGU6IEZyaSwgMjEgSnVuIDIwMTkgMTc6NTc6MzUgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gQ1ZFLTIwMTgtMTA5MTAKLQotQSBidWcgaW4gQmx1ZXogbWF5IGFsbG93IGZvciB0aGUgQmx1ZXRvb3RoIERpc2NvdmVyYWJsZSBzdGF0ZSBiZWluZyBzZXQgdG8gb24KLXdoZW4gbm8gQmx1ZXRvb3RoIGFnZW50IGlzIHJlZ2lzdGVyZWQgd2l0aCB0aGUgc3lzdGVtLiBUaGlzIHNpdHVhdGlvbiBjb3VsZAotbGVhZCB0byB0aGUgdW5hdXRob3JpemVkIHBhaXJpbmcgb2YgY2VydGFpbiBCbHVldG9vdGggZGV2aWNlcyB3aXRob3V0IGFueQotZm9ybSBvZiBhdXRoZW50aWNhdGlvbi4KLQotQ1ZFOiBDVkUtMjAxOC0xMDkxMAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotU3ViamVjdDogICAgW1BBVENIIEJsdWVaIDEvNF0gY2xpZW50OiBBZGQgZGlzY292ZXJhYmxlLXRpbWVvdXQgY29tbWFuZAotRnJvbTogICAgICAgTHVpeiBBdWd1c3RvIHZvbiBEZW50eiA8bHVpei5kZW50eiAoKSBnbWFpbCAhIGNvbT4KLURhdGU6ICAgICAgIDIwMTgtMDctMjUgMTA6MjA6MzIKLU1lc3NhZ2UtSUQ6IDIwMTgwNzI1MTAyMDM1LjE5NDM5LTEtbHVpei5kZW50eiAoKSBnbWFpbCAhIGNvbQotW0Rvd25sb2FkIFJBVyBtZXNzYWdlIG9yIGJvZHldCi0KLUZyb206IEx1aXogQXVndXN0byB2b24gRGVudHogPGx1aXoudm9uLmRlbnR6QGludGVsLmNvbT4KLQotVGhpcyBhZGRzIGRpc2NvdmVyYWJsZS10aW1lb3V0IGNvbW1hbmQgd2hpY2ggY2FuIGJlIHVzZWQgdG8gZ2V0L3NldAotRGlzY292ZXJhYmxlVGltZW91dCBwcm9wZXJ0eToKLQotW2JsdWV0b290aF0jIGRpc2NvdmVyYWJsZS10aW1lb3V0IDE4MAotQ2hhbmdpbmcgZGlzY292ZXJhYmxlLXRpbWVvdXQgMTgwIHN1Y2NlZWRlZAotLS0tCi0gY2xpZW50L21haW4uYyAgICAgICB8ICA4MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCi0gZG9jL2FkYXB0ZXItYXBpLnR4dCB8ICAgNiArKysKLSBzcmMvYWRhcHRlci5jICAgICAgIHwgMTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDE5OCBpbnNlcnRpb25zKCspLCAxNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NsaWVudC9tYWluLmMgYi9jbGllbnQvbWFpbi5jCi1pbmRleCA4NzMyM2Q4Li4xYTY2YTNhIDEwMDY0NAotLS0tIGEvY2xpZW50L21haW4uYwotKysrIGIvY2xpZW50L21haW4uYwotQEAgLTg3Nyw2ICs4NzcsNyBAQCBzdGF0aWMgdm9pZCBjbWRfc2hvdyhpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAlwcmludF9wcm9wZXJ0eShwcm94eSwgIkNsYXNzIik7Ci0gCXByaW50X3Byb3BlcnR5KHByb3h5LCAiUG93ZXJlZCIpOwotIAlwcmludF9wcm9wZXJ0eShwcm94eSwgIkRpc2NvdmVyYWJsZSIpOwotKwlwcmludF9wcm9wZXJ0eShwcm94eSwgIkRpc2NvdmVyYWJsZVRpbWVvdXQiKTsKLSAJcHJpbnRfcHJvcGVydHkocHJveHksICJQYWlyYWJsZSIpOwotIAlwcmludF91dWlkcyhwcm94eSk7Ci0gCXByaW50X3Byb3BlcnR5KHByb3h5LCAiTW9kYWxpYXMiKTsKLUBAIC0xMDYxLDYgKzEwNjIsNDcgQEAgc3RhdGljIHZvaWQgY21kX2Rpc2NvdmVyYWJsZShpbnQgYXJnYywgY2hhciAqYXJndltdKQotIAlyZXR1cm4gYnRfc2hlbGxfbm9uaW50ZXJhY3RpdmVfcXVpdChFWElUX0ZBSUxVUkUpOwotIH0KLSAKLStzdGF0aWMgdm9pZCBjbWRfZGlzY292ZXJhYmxlX3RpbWVvdXQoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSt7Ci0rCXVpbnQzMl90IHZhbHVlOwotKwljaGFyICplbmRwdHIgPSBOVUxMOwotKwljaGFyICpzdHI7Ci0rCi0rCWlmIChhcmdjIDwgMikgewotKwkJREJ1c01lc3NhZ2VJdGVyIGl0ZXI7Ci0rCi0rCQlpZiAoIWdfZGJ1c19wcm94eV9nZXRfcHJvcGVydHkoZGVmYXVsdF9jdHJsLT5wcm94eSwKLSsJCQkJCSJEaXNjb3ZlcmFibGVUaW1lb3V0IiwgJml0ZXIpKSB7Ci0rCQkJYnRfc2hlbGxfcHJpbnRmKCJVbmFibGUgdG8gZ2V0IERpc2NvdmVyYWJsZVRpbWVvdXRcbiIpOwotKwkJCXJldHVybiBidF9zaGVsbF9ub25pbnRlcmFjdGl2ZV9xdWl0KEVYSVRfRkFJTFVSRSk7Ci0rCQl9Ci0rCi0rCQlkYnVzX21lc3NhZ2VfaXRlcl9nZXRfYmFzaWMoJml0ZXIsICZ2YWx1ZSk7Ci0rCi0rCQlidF9zaGVsbF9wcmludGYoIkRpc2NvdmVyYWJsZVRpbWVvdXQ6ICVkIHNlY29uZHNcbiIsIHZhbHVlKTsKLSsKLSsJCXJldHVybjsKLSsJfQotKwotKwl2YWx1ZSA9IHN0cnRvbChhcmd2WzFdLCAmZW5kcHRyLCAwKTsKLSsJaWYgKCFlbmRwdHIgfHwgKmVuZHB0ciAhPSAnXDAnIHx8IHZhbHVlID4gVUlOVDMyX01BWCkgewotKwkJYnRfc2hlbGxfcHJpbnRmKCJJbnZhbGlkIGFyZ3VtZW50XG4iKTsKLSsJCXJldHVybiBidF9zaGVsbF9ub25pbnRlcmFjdGl2ZV9xdWl0KEVYSVRfRkFJTFVSRSk7Ci0rCX0KLSsKLSsJc3RyID0gZ19zdHJkdXBfcHJpbnRmKCJkaXNjb3ZlcmFibGUtdGltZW91dCAlZCIsIHZhbHVlKTsKLSsKLSsJaWYgKGdfZGJ1c19wcm94eV9zZXRfcHJvcGVydHlfYmFzaWMoZGVmYXVsdF9jdHJsLT5wcm94eSwKLSsJCQkJCSJEaXNjb3ZlcmFibGVUaW1lb3V0IiwKLSsJCQkJCURCVVNfVFlQRV9VSU5UMzIsICZ2YWx1ZSwKLSsJCQkJCWdlbmVyaWNfY2FsbGJhY2ssIHN0ciwgZ19mcmVlKSkKLSsJCXJldHVybjsKLSsKLSsJZ19mcmVlKHN0cik7Ci0rCi0rCXJldHVybiBidF9zaGVsbF9ub25pbnRlcmFjdGl2ZV9xdWl0KEVYSVRfRkFJTFVSRSk7Ci0rfQotKwotIHN0YXRpYyB2b2lkIGNtZF9hZ2VudChpbnQgYXJnYywgY2hhciAqYXJndltdKQotIHsKLSAJZGJ1c19ib29sX3QgZW5hYmxlOwotQEAgLTExMjQsNiArMTE2Niw3IEBAIHN0YXRpYyBzdHJ1Y3Qgc2V0X2Rpc2NvdmVyeV9maWx0ZXJfYXJncyB7Ci0gCWNoYXIgKip1dWlkczsKLSAJc2l6ZV90IHV1aWRzX2xlbjsKLSAJZGJ1c19ib29sX3QgZHVwbGljYXRlOwotKwlkYnVzX2Jvb2xfdCBkaXNjb3ZlcmFibGU7Ci0gCWJvb2wgc2V0OwotIH0gZmlsdGVyID0gewotIAkucnNzaSA9IERJU1RBTkNFX1ZBTF9JTlZBTElELAotQEAgLTExNjMsNiArMTIwNiwxMSBAQCBzdGF0aWMgdm9pZCBzZXRfZGlzY292ZXJ5X2ZpbHRlcl9zZXR1cChEQnVzTWVzc2FnZUl0ZXIgKml0ZXIsIHZvaWQgKnVzZXJfZGF0YSkKLSAJCQkJCQlEQlVTX1RZUEVfQk9PTEVBTiwKLSAJCQkJCQkmYXJncy0+ZHVwbGljYXRlKTsKLSAKLSsJaWYgKGFyZ3MtPmRpc2NvdmVyYWJsZSkKLSsJCWdfZGJ1c19kaWN0X2FwcGVuZF9lbnRyeSgmZGljdCwgIkRpc2NvdmVyYWJsZSIsCi0rCQkJCQkJREJVU19UWVBFX0JPT0xFQU4sCi0rCQkJCQkJJmFyZ3MtPmRpc2NvdmVyYWJsZSk7Ci0rCi0gCWRidXNfbWVzc2FnZV9pdGVyX2Nsb3NlX2NvbnRhaW5lcihpdGVyLCAmZGljdCk7Ci0gfQotIAotQEAgLTEzMjAsNiArMTM2OCwyNiBAQCBzdGF0aWMgdm9pZCBjbWRfc2Nhbl9maWx0ZXJfZHVwbGljYXRlX2RhdGEoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJZmlsdGVyLnNldCA9IGZhbHNlOwotIH0KLSAKLStzdGF0aWMgdm9pZCBjbWRfc2Nhbl9maWx0ZXJfZGlzY292ZXJhYmxlKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0rewotKwlpZiAoYXJnYyA8IDIgfHwgIXN0cmxlbihhcmd2WzFdKSkgewotKwkJYnRfc2hlbGxfcHJpbnRmKCJEaXNjb3ZlcmFibGU6ICVzXG4iLAotKwkJCQlmaWx0ZXIuZGlzY292ZXJhYmxlID8gIm9uIiA6ICJvZmYiKTsKLSsJCXJldHVybiBidF9zaGVsbF9ub25pbnRlcmFjdGl2ZV9xdWl0KEVYSVRfU1VDQ0VTUyk7Ci0rCX0KLSsKLSsJaWYgKCFzdHJjbXAoYXJndlsxXSwgIm9uIikpCi0rCQlmaWx0ZXIuZGlzY292ZXJhYmxlID0gdHJ1ZTsKLSsJZWxzZSBpZiAoIXN0cmNtcChhcmd2WzFdLCAib2ZmIikpCi0rCQlmaWx0ZXIuZGlzY292ZXJhYmxlID0gZmFsc2U7Ci0rCWVsc2UgewotKwkJYnRfc2hlbGxfcHJpbnRmKCJJbnZhbGlkIG9wdGlvbjogJXNcbiIsIGFyZ3ZbMV0pOwotKwkJcmV0dXJuIGJ0X3NoZWxsX25vbmludGVyYWN0aXZlX3F1aXQoRVhJVF9GQUlMVVJFKTsKLSsJfQotKwotKwlmaWx0ZXIuc2V0ID0gZmFsc2U7Ci0rfQotKwotIHN0YXRpYyB2b2lkIGZpbHRlcl9jbGVhcl91dWlkcyh2b2lkKQotIHsKLSAJZ19zdHJmcmVldihmaWx0ZXIudXVpZHMpOwotQEAgLTEzNDgsNiArMTQxNiwxMSBAQCBzdGF0aWMgdm9pZCBmaWx0ZXJfY2xlYXJfZHVwbGljYXRlKHZvaWQpCi0gCWZpbHRlci5kdXBsaWNhdGUgPSBmYWxzZTsKLSB9Ci0gCi0rc3RhdGljIHZvaWQgZmlsdGVyX2NsZWFyX2Rpc2NvdmVyYWJsZSh2b2lkKQotK3sKLSsJZmlsdGVyLmRpc2NvdmVyYWJsZSA9IGZhbHNlOwotK30KLSsKLSBzdHJ1Y3QgY2xlYXJfZW50cnkgewotIAljb25zdCBjaGFyICpuYW1lOwotIAl2b2lkICgqY2xlYXIpICh2b2lkKTsKLUBAIC0xMzU5LDYgKzE0MzIsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGNsZWFyX2VudHJ5IGZpbHRlcl9jbGVhcltdID0gewotIAl7ICJwYXRobG9zcyIsIGZpbHRlcl9jbGVhcl9wYXRobG9zcyB9LAotIAl7ICJ0cmFuc3BvcnQiLCBmaWx0ZXJfY2xlYXJfdHJhbnNwb3J0IH0sCi0gCXsgImR1cGxpY2F0ZS1kYXRhIiwgZmlsdGVyX2NsZWFyX2R1cGxpY2F0ZSB9LAotKwl7ICJkaXNjb3ZlcmFibGUiLCBmaWx0ZXJfY2xlYXJfZGlzY292ZXJhYmxlIH0sCi0gCXt9Ci0gfTsKLSAKLUBAIC0yNDY4LDcgKzI1NDIsMTEgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBidF9zaGVsbF9tZW51IHNjYW5fbWVudSA9IHsKLSAJeyAiZHVwbGljYXRlLWRhdGEiLCAiW29uL29mZl0iLCBjbWRfc2Nhbl9maWx0ZXJfZHVwbGljYXRlX2RhdGEsCi0gCQkJCSJTZXQvR2V0IGR1cGxpY2F0ZSBkYXRhIGZpbHRlciIsCi0gCQkJCU5VTEwgfSwKLS0JeyAiY2xlYXIiLCAiW3V1aWRzL3Jzc2kvcGF0aGxvc3MvdHJhbnNwb3J0L2R1cGxpY2F0ZS1kYXRhXSIsCi0rCXsgImRpc2NvdmVyYWJsZSIsICJbb24vb2ZmXSIsIGNtZF9zY2FuX2ZpbHRlcl9kaXNjb3ZlcmFibGUsCi0rCQkJCSJTZXQvR2V0IGRpc2NvdmVyYWJsZSBmaWx0ZXIiLAotKwkJCQlOVUxMIH0sCi0rCXsgImNsZWFyIiwKLSsJCSJbdXVpZHMvcnNzaS9wYXRobG9zcy90cmFuc3BvcnQvZHVwbGljYXRlLWRhdGEvZGlzY292ZXJhYmxlXSIsCi0gCQkJCWNtZF9zY2FuX2ZpbHRlcl9jbGVhciwKLSAJCQkJIkNsZWFycyBkaXNjb3ZlcnkgZmlsdGVyLiIsCi0gCQkJCWZpbHRlcl9jbGVhcl9nZW5lcmF0b3IgfSwKLUBAIC0yNTQ5LDYgKzI2MjcsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGJ0X3NoZWxsX21lbnUgbWFpbl9tZW51ID0gewotIAl7ICJkaXNjb3ZlcmFibGUiLCAiPG9uL29mZj4iLCBjbWRfZGlzY292ZXJhYmxlLAotIAkJCQkJIlNldCBjb250cm9sbGVyIGRpc2NvdmVyYWJsZSBtb2RlIiwKLSAJCQkJCQkJTlVMTCB9LAotKwl7ICJkaXNjb3ZlcmFibGUtdGltZW91dCIsICJbdmFsdWVdIiwgY21kX2Rpc2NvdmVyYWJsZV90aW1lb3V0LAotKwkJCQkJIlNldCBkaXNjb3ZlcmFibGUgdGltZW91dCIsIE5VTEwgfSwKLSAJeyAiYWdlbnQiLCAgICAgICAgIjxvbi9vZmYvY2FwYWJpbGl0eT4iLCBjbWRfYWdlbnQsCi0gCQkJCSJFbmFibGUvZGlzYWJsZSBhZ2VudCB3aXRoIGdpdmVuIGNhcGFiaWxpdHkiLAotIAkJCQkJCQljYXBhYmlsaXR5X2dlbmVyYXRvcn0sCi1kaWZmIC0tZ2l0IGEvZG9jL2FkYXB0ZXItYXBpLnR4dCBiL2RvYy9hZGFwdGVyLWFwaS50eHQKLWluZGV4IGQxNGQwY2EuLjQ3OTFhZjIgMTAwNjQ0Ci0tLS0gYS9kb2MvYWRhcHRlci1hcGkudHh0Ci0rKysgYi9kb2MvYWRhcHRlci1hcGkudHh0Ci1AQCAtMTEzLDYgKzExMywxMiBAQCBNZXRob2RzCQl2b2lkIFN0YXJ0RGlzY292ZXJ5KCkKLSAJCQkJZ2VuZXJhdGVkIGZvciBlaXRoZXIgTWFudWZhY3R1cmVyRGF0YSBhbmQKLSAJCQkJU2VydmljZURhdGEgZXZlcnl0aW1lIHRoZXkgYXJlIGRpc2NvdmVyZWQuCi0gCi0rCQkJYm9vbCBEaXNjb3ZlcmFibGUgKERlZmF1bHQ6IGZhbHNlKQotKwotKwkJCQlNYWtlIGFkYXB0ZXIgZGlzY292ZXJhYmxlIHdoaWxlIGRpc2NvdmVyaW5nLAotKwkJCQlpZiB0aGUgYWRhcHRlciBpcyBhbHJlYWR5IGRpc2NvdmVyYWJsZSB0aGlzCi0rCQkJCXNldHRpbmcgdGhpcyBmaWx0ZXIgd29uJ3QgZG8gYW55dGhpbmcuCi0rCi0gCQkJV2hlbiBkaXNjb3ZlcnkgZmlsdGVyIGlzIHNldCwgRGV2aWNlIG9iamVjdHMgd2lsbCBiZQotIAkJCWNyZWF0ZWQgYXMgbmV3IGRldmljZXMgd2l0aCBtYXRjaGluZyBjcml0ZXJpYSBhcmUKLSAJCQlkaXNjb3ZlcmVkIHJlZ2FyZGxlc3Mgb2YgdGhleSBhcmUgY29ubmVjdGFibGUgb3IKLWRpZmYgLS1naXQgYS9zcmMvYWRhcHRlci5jIGIvc3JjL2FkYXB0ZXIuYwotaW5kZXggYWYzNDBmZC4uODIyYmQzNCAxMDA2NDQKLS0tLSBhL3NyYy9hZGFwdGVyLmMKLSsrKyBiL3NyYy9hZGFwdGVyLmMKLUBAIC0xNTcsNiArMTU3LDcgQEAgc3RydWN0IGRpc2NvdmVyeV9maWx0ZXIgewotIAlpbnQxNl90IHJzc2k7Ci0gCUdTTGlzdCAqdXVpZHM7Ci0gCWJvb2wgZHVwbGljYXRlOwotKwlib29sIGRpc2NvdmVyYWJsZTsKLSB9OwotIAotIHN0cnVjdCB3YXRjaF9jbGllbnQgewotQEAgLTE5Niw2ICsxOTcsNyBAQCBzdHJ1Y3QgYnRkX2FkYXB0ZXIgewotIAljaGFyICpuYW1lOwkJCS8qIGNvbnRyb2xsZXIgZGV2aWNlIG5hbWUgKi8KLSAJY2hhciAqc2hvcnRfbmFtZTsJCS8qIGNvbnRyb2xsZXIgc2hvcnQgbmFtZSAqLwotIAl1aW50MzJfdCBzdXBwb3J0ZWRfc2V0dGluZ3M7CS8qIGNvbnRyb2xsZXIgc3VwcG9ydGVkIHNldHRpbmdzICovCi0rCXVpbnQzMl90IHBlbmRpbmdfc2V0dGluZ3M7CS8qIHBlbmRpbmcgY29udHJvbGxlciBzZXR0aW5ncyAqLwotIAl1aW50MzJfdCBjdXJyZW50X3NldHRpbmdzOwkvKiBjdXJyZW50IGNvbnRyb2xsZXIgc2V0dGluZ3MgKi8KLSAKLSAJY2hhciAqcGF0aDsJCQkvKiBhZGFwdGVyIG9iamVjdCBwYXRoICovCi1AQCAtMjEzLDYgKzIxNSw3IEBAIHN0cnVjdCBidGRfYWRhcHRlciB7Ci0gCi0gCWJvb2wgZGlzY292ZXJpbmc7CQkvKiBkaXNjb3ZlcmluZyBwcm9wZXJ0eSBzdGF0ZSAqLwotIAlib29sIGZpbHRlcmVkX2Rpc2NvdmVyeTsJLyogd2UgYXJlIGRvaW5nIGZpbHRlcmVkIGRpc2NvdmVyeSAqLwotKwlib29sIGZpbHRlcmVkX2Rpc2NvdmVyYWJsZTsJLyogd2UgYXJlIGRvaW5nIGZpbHRlcmVkIGRpc2NvdmVyeSAqLwotIAlib29sIG5vX3NjYW5fcmVzdGFydF9kZWxheTsJLyogd2hlbiB0aGlzIGZsYWcgaXMgc2V0LCByZXN0YXJ0IHNjYW4KLSAJCQkJCSAqIHdpdGhvdXQgZGVsYXkgKi8KLSAJdWludDhfdCBkaXNjb3ZlcnlfdHlwZTsJCS8qIGN1cnJlbnQgYWN0aXZlIGRpc2NvdmVyeSB0eXBlICovCi1AQCAtNTA5LDggKzUxMiwxMCBAQCBzdGF0aWMgdm9pZCBzZXR0aW5nc19jaGFuZ2VkKHN0cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlciwgdWludDMyX3Qgc2V0dGluZ3MpCi0gCWNoYW5nZWRfbWFzayA9IGFkYXB0ZXItPmN1cnJlbnRfc2V0dGluZ3MgXiBzZXR0aW5nczsKLSAKLSAJYWRhcHRlci0+Y3VycmVudF9zZXR0aW5ncyA9IHNldHRpbmdzOwotKwlhZGFwdGVyLT5wZW5kaW5nX3NldHRpbmdzICY9IH5jaGFuZ2VkX21hc2s7Ci0gCi0gCURCRygiQ2hhbmdlZCBzZXR0aW5nczogMHglMDh4IiwgY2hhbmdlZF9tYXNrKTsKLSsJREJHKCJQZW5kaW5nIHNldHRpbmdzOiAweCUwOHgiLCBhZGFwdGVyLT5wZW5kaW5nX3NldHRpbmdzKTsKLSAKLSAJaWYgKGNoYW5nZWRfbWFzayAmIE1HTVRfU0VUVElOR19QT1dFUkVEKSB7Ci0gCSAgICAgICAgZ19kYnVzX2VtaXRfcHJvcGVydHlfY2hhbmdlZChkYnVzX2Nvbm4sIGFkYXB0ZXItPnBhdGgsCi1AQCAtNTk2LDEwICs2MDEsMzEgQEAgc3RhdGljIGJvb2wgc2V0X21vZGUoc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyLCB1aW50MTZfdCBvcGNvZGUsCi0gCQkJCQkJCXVpbnQ4X3QgbW9kZSkKLSB7Ci0gCXN0cnVjdCBtZ210X21vZGUgY3A7Ci0rCXVpbnQzMl90IHNldHRpbmcgPSAwOwotIAotIAltZW1zZXQoJmNwLCAwLCBzaXplb2YoY3ApKTsKLSAJY3AudmFsID0gbW9kZTsKLSAKLSsJc3dpdGNoIChtb2RlKSB7Ci0rCWNhc2UgTUdNVF9PUF9TRVRfUE9XRVJFRDoKLSsJCXNldHRpbmcgPSBNR01UX1NFVFRJTkdfUE9XRVJFRDsKLSsJCWJyZWFrOwotKwljYXNlIE1HTVRfT1BfU0VUX0NPTk5FQ1RBQkxFOgotKwkJc2V0dGluZyA9IE1HTVRfU0VUVElOR19DT05ORUNUQUJMRTsKLSsJCWJyZWFrOwotKwljYXNlIE1HTVRfT1BfU0VUX0ZBU1RfQ09OTkVDVEFCTEU6Ci0rCQlzZXR0aW5nID0gTUdNVF9TRVRUSU5HX0ZBU1RfQ09OTkVDVEFCTEU7Ci0rCQlicmVhazsKLSsJY2FzZSBNR01UX09QX1NFVF9ESVNDT1ZFUkFCTEU6Ci0rCQlzZXR0aW5nID0gTUdNVF9TRVRUSU5HX0RJU0NPVkVSQUJMRTsKLSsJCWJyZWFrOwotKwljYXNlIE1HTVRfT1BfU0VUX0JPTkRBQkxFOgotKwkJc2V0dGluZyA9IE1HTVRfU0VUVElOR19ESVNDT1ZFUkFCTEU7Ci0rCQlicmVhazsKLSsJfQotKwotKwlhZGFwdGVyLT5wZW5kaW5nX3NldHRpbmdzIHw9IHNldHRpbmc7Ci0rCi0gCURCRygic2VuZGluZyBzZXQgbW9kZSBjb21tYW5kIGZvciBpbmRleCAldSIsIGFkYXB0ZXItPmRldl9pZCk7Ci0gCi0gCWlmIChtZ210X3NlbmQoYWRhcHRlci0+bWdtdCwgb3Bjb2RlLAotQEAgLTE4MTgsNyArMTg0NCwxNyBAQCBzdGF0aWMgdm9pZCBkaXNjb3ZlcnlfZnJlZSh2b2lkICp1c2VyX2RhdGEpCi0gCWdfZnJlZShjbGllbnQpOwotIH0KLSAKLS1zdGF0aWMgdm9pZCBkaXNjb3ZlcnlfcmVtb3ZlKHN0cnVjdCB3YXRjaF9jbGllbnQgKmNsaWVudCkKLStzdGF0aWMgYm9vbCBzZXRfZmlsdGVyZWRfZGlzY292ZXJhYmxlKHN0cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlciwgYm9vbCBlbmFibGUpCi0rewotKwlpZiAoYWRhcHRlci0+ZmlsdGVyZWRfZGlzY292ZXJhYmxlID09IGVuYWJsZSkKLSsJCXJldHVybiB0cnVlOwotKwotKwlhZGFwdGVyLT5maWx0ZXJlZF9kaXNjb3ZlcmFibGUgPSBlbmFibGU7Ci0rCi0rCXJldHVybiBzZXRfZGlzY292ZXJhYmxlKGFkYXB0ZXIsIGVuYWJsZSwgMCk7Ci0rfQotKwotK3N0YXRpYyB2b2lkIGRpc2NvdmVyeV9yZW1vdmUoc3RydWN0IHdhdGNoX2NsaWVudCAqY2xpZW50LCBib29sIGV4aXQpCi0gewotIAlzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIgPSBjbGllbnQtPmFkYXB0ZXI7Ci0gCi1AQCAtMTgzMCw3ICsxODY2LDI3IEBAIHN0YXRpYyB2b2lkIGRpc2NvdmVyeV9yZW1vdmUoc3RydWN0IHdhdGNoX2NsaWVudCAqY2xpZW50KQotIAlhZGFwdGVyLT5kaXNjb3ZlcnlfbGlzdCA9IGdfc2xpc3RfcmVtb3ZlKGFkYXB0ZXItPmRpc2NvdmVyeV9saXN0LAotIAkJCQkJCQkJY2xpZW50KTsKLSAKLS0JZGlzY292ZXJ5X2ZyZWUoY2xpZW50KTsKLSsJaWYgKGFkYXB0ZXItPmZpbHRlcmVkX2Rpc2NvdmVyYWJsZSAmJgotKwkJCWNsaWVudC0+ZGlzY292ZXJ5X2ZpbHRlci0+ZGlzY292ZXJhYmxlKSB7Ci0rCQlHU0xpc3QgKmw7Ci0rCi0rCQlmb3IgKGwgPSBhZGFwdGVyLT5kaXNjb3ZlcnlfbGlzdDsgbDsgbCA9IGdfc2xpc3RfbmV4dChsKSkgewotKwkJCXN0cnVjdCB3YXRjaF9jbGllbnQgKmNsaWVudCA9IGwtPmRhdGE7Ci0rCi0rCQkJaWYgKGNsaWVudC0+ZGlzY292ZXJ5X2ZpbHRlci0+ZGlzY292ZXJhYmxlKQotKwkJCQlicmVhazsKLSsJCX0KLSsKLSsJCS8qIERpc2FibGUgZmlsdGVyZWQgZGlzY292ZXJhYmxlIGlmIHRoZXJlIGFyZSBubyBjbGllbnRzICovCi0rCQlpZiAoIWwpCi0rCQkJc2V0X2ZpbHRlcmVkX2Rpc2NvdmVyYWJsZShhZGFwdGVyLCBmYWxzZSk7Ci0rCX0KLSsKLSsJaWYgKCFleGl0ICYmIGNsaWVudC0+ZGlzY292ZXJ5X2ZpbHRlcikKLSsJCWFkYXB0ZXItPnNldF9maWx0ZXJfbGlzdCA9IGdfc2xpc3RfcHJlcGVuZCgKLSsJCQkJCWFkYXB0ZXItPnNldF9maWx0ZXJfbGlzdCwgY2xpZW50KTsKLSsJZWxzZQotKwkJZGlzY292ZXJ5X2ZyZWUoY2xpZW50KTsKLSAKLSAJLyoKLSAJICogSWYgdGhlcmUgYXJlIG90aGVyIGNsaWVudCBkaXNjb3ZlcmllcyBpbiBwcm9ncmVzcywgdGhlbiBsZWF2ZQotQEAgLTE4NTksOCArMTkxNSwxMSBAQCBzdGF0aWMgdm9pZCBzdG9wX2Rpc2NvdmVyeV9jb21wbGV0ZSh1aW50OF90IHN0YXR1cywgdWludDE2X3QgbGVuZ3RoLAotIAkJZ290byBkb25lOwotIAl9Ci0gCi0tCWlmIChjbGllbnQtPm1zZykKLSsJaWYgKGNsaWVudC0+bXNnKSB7Ci0gCQlnX2RidXNfc2VuZF9yZXBseShkYnVzX2Nvbm4sIGNsaWVudC0+bXNnLCBEQlVTX1RZUEVfSU5WQUxJRCk7Ci0rCQlkYnVzX21lc3NhZ2VfdW5yZWYoY2xpZW50LT5tc2cpOwotKwkJY2xpZW50LT5tc2cgPSBOVUxMOwotKwl9Ci0gCi0gCWFkYXB0ZXItPmRpc2NvdmVyeV90eXBlID0gMHgwMDsKLSAJYWRhcHRlci0+ZGlzY292ZXJ5X2VuYWJsZSA9IDB4MDA7Ci1AQCAtMTg3Myw3ICsxOTMyLDcgQEAgc3RhdGljIHZvaWQgc3RvcF9kaXNjb3ZlcnlfY29tcGxldGUodWludDhfdCBzdGF0dXMsIHVpbnQxNl90IGxlbmd0aCwKLSAJdHJpZ2dlcl9wYXNzaXZlX3NjYW5uaW5nKGFkYXB0ZXIpOwotIAotIGRvbmU6Ci0tCWRpc2NvdmVyeV9yZW1vdmUoY2xpZW50KTsKLSsJZGlzY292ZXJ5X3JlbW92ZShjbGllbnQsIGZhbHNlKTsKLSB9Ci0gCi0gc3RhdGljIGludCBjb21wYXJlX3NlbmRlcihnY29uc3Rwb2ludGVyIGEsIGdjb25zdHBvaW50ZXIgYikKLUBAIC0yMDk0LDE0ICsyMTUzLDE0IEBAIHN0YXRpYyBpbnQgdXBkYXRlX2Rpc2NvdmVyeV9maWx0ZXIoc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyKQotIAlyZXR1cm4gLUVJTlBST0dSRVNTOwotIH0KLSAKLS1zdGF0aWMgaW50IGRpc2NvdmVyeV9zdG9wKHN0cnVjdCB3YXRjaF9jbGllbnQgKmNsaWVudCkKLStzdGF0aWMgaW50IGRpc2NvdmVyeV9zdG9wKHN0cnVjdCB3YXRjaF9jbGllbnQgKmNsaWVudCwgYm9vbCBleGl0KQotIHsKLSAJc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyID0gY2xpZW50LT5hZGFwdGVyOwotIAlzdHJ1Y3QgbWdtdF9jcF9zdG9wX2Rpc2NvdmVyeSBjcDsKLSAKLSAJLyogQ2hlY2sgaWYgdGhlcmUgYXJlIG1vcmUgY2xpZW50IGRpc2NvdmVyaW5nICovCi0gCWlmIChnX3NsaXN0X25leHQoYWRhcHRlci0+ZGlzY292ZXJ5X2xpc3QpKSB7Ci0tCQlkaXNjb3ZlcnlfcmVtb3ZlKGNsaWVudCk7Ci0rCQlkaXNjb3ZlcnlfcmVtb3ZlKGNsaWVudCwgZXhpdCk7Ci0gCQl1cGRhdGVfZGlzY292ZXJ5X2ZpbHRlcihhZGFwdGVyKTsKLSAJCXJldHVybiAwOwotIAl9Ci1AQCAtMjExMSw3ICsyMTcwLDcgQEAgc3RhdGljIGludCBkaXNjb3Zlcnlfc3RvcChzdHJ1Y3Qgd2F0Y2hfY2xpZW50ICpjbGllbnQpCi0gCSAqIGFuZCBzbyBpdCBpcyBlbm91Z2ggdG8gc2VuZCBvdXQgdGhlIHNpZ25hbCBhbmQganVzdCByZXR1cm4uCi0gCSAqLwotIAlpZiAoYWRhcHRlci0+ZGlzY292ZXJ5X2VuYWJsZSA9PSAweDAwKSB7Ci0tCQlkaXNjb3ZlcnlfcmVtb3ZlKGNsaWVudCk7Ci0rCQlkaXNjb3ZlcnlfcmVtb3ZlKGNsaWVudCwgZXhpdCk7Ci0gCQlhZGFwdGVyLT5kaXNjb3ZlcmluZyA9IGZhbHNlOwotIAkJZ19kYnVzX2VtaXRfcHJvcGVydHlfY2hhbmdlZChkYnVzX2Nvbm4sIGFkYXB0ZXItPnBhdGgsCi0gCQkJCQlBREFQVEVSX0lOVEVSRkFDRSwgIkRpc2NvdmVyaW5nIik7Ci1AQCAtMjEzNiw3ICsyMTk1LDcgQEAgc3RhdGljIHZvaWQgZGlzY292ZXJ5X2Rpc2Nvbm5lY3QoREJ1c0Nvbm5lY3Rpb24gKmNvbm4sIHZvaWQgKnVzZXJfZGF0YSkKLSAKLSAJREJHKCJvd25lciAlcyIsIGNsaWVudC0+b3duZXIpOwotIAotLQlkaXNjb3Zlcnlfc3RvcChjbGllbnQpOwotKwlkaXNjb3Zlcnlfc3RvcChjbGllbnQsIHRydWUpOwotIH0KLSAKLSAvKgotQEAgLTIyMDAsNiArMjI1OSwxNSBAQCBzdGF0aWMgREJ1c01lc3NhZ2UgKnN0YXJ0X2Rpc2NvdmVyeShEQnVzQ29ubmVjdGlvbiAqY29ubiwKLSAJCQkJCSAgICAgYWRhcHRlci0+c2V0X2ZpbHRlcl9saXN0LCBjbGllbnQpOwotIAkJYWRhcHRlci0+ZGlzY292ZXJ5X2xpc3QgPSBnX3NsaXN0X3ByZXBlbmQoCi0gCQkJCQkgICAgICBhZGFwdGVyLT5kaXNjb3ZlcnlfbGlzdCwgY2xpZW50KTsKLSsKLSsJCS8qIFJlc2V0IGRpc2NvdmVyYWJsZSBmaWx0ZXIgaWYgYWxyZWFkeSBzZXQgKi8KLSsJCWlmIChhZGFwdGVyLT5jdXJyZW50X3NldHRpbmdzICYgTUdNVF9PUF9TRVRfRElTQ09WRVJBQkxFKQotKwkJCWdvdG8gZG9uZTsKLSsKLSsJCS8qIFNldCBkaXNjb3ZlcmFibGUgaWYgZmlsdGVyIHJlcXVpcmVzIGFuZCBpdCovCi0rCQlpZiAoY2xpZW50LT5kaXNjb3ZlcnlfZmlsdGVyLT5kaXNjb3ZlcmFibGUpCi0rCQkJc2V0X2ZpbHRlcmVkX2Rpc2NvdmVyYWJsZShhZGFwdGVyLCB0cnVlKTsKLSsKLSAJCWdvdG8gZG9uZTsKLSAJfQotIAotQEAgLTIzMjQsNiArMjM5MiwxNyBAQCBzdGF0aWMgYm9vbCBwYXJzZV9kdXBsaWNhdGVfZGF0YShEQnVzTWVzc2FnZUl0ZXIgKnZhbHVlLAotIAlyZXR1cm4gdHJ1ZTsKLSB9Ci0gCi0rc3RhdGljIGJvb2wgcGFyc2VfZGlzY292ZXJhYmxlKERCdXNNZXNzYWdlSXRlciAqdmFsdWUsCi0rCQkJCQlzdHJ1Y3QgZGlzY292ZXJ5X2ZpbHRlciAqZmlsdGVyKQotK3sKLSsJaWYgKGRidXNfbWVzc2FnZV9pdGVyX2dldF9hcmdfdHlwZSh2YWx1ZSkgIT0gREJVU19UWVBFX0JPT0xFQU4pCi0rCQlyZXR1cm4gZmFsc2U7Ci0rCi0rCWRidXNfbWVzc2FnZV9pdGVyX2dldF9iYXNpYyh2YWx1ZSwgJmZpbHRlci0+ZGlzY292ZXJhYmxlKTsKLSsKLSsJcmV0dXJuIHRydWU7Ci0rfQotKwotIHN0cnVjdCBmaWx0ZXJfcGFyc2VyIHsKLSAJY29uc3QgY2hhciAqbmFtZTsKLSAJYm9vbCAoKmZ1bmMpKERCdXNNZXNzYWdlSXRlciAqaXRlciwgc3RydWN0IGRpc2NvdmVyeV9maWx0ZXIgKmZpbHRlcik7Ci1AQCAtMjMzMyw2ICsyNDEyLDcgQEAgc3RydWN0IGZpbHRlcl9wYXJzZXIgewotIAl7ICJQYXRobG9zcyIsIHBhcnNlX3BhdGhsb3NzIH0sCi0gCXsgIlRyYW5zcG9ydCIsIHBhcnNlX3RyYW5zcG9ydCB9LAotIAl7ICJEdXBsaWNhdGVEYXRhIiwgcGFyc2VfZHVwbGljYXRlX2RhdGEgfSwKLSsJeyAiRGlzY292ZXJhYmxlIiwgcGFyc2VfZGlzY292ZXJhYmxlIH0sCi0gCXsgfQotIH07Ci0gCi1AQCAtMjM3Miw2ICsyNDUyLDcgQEAgc3RhdGljIGJvb2wgcGFyc2VfZGlzY292ZXJ5X2ZpbHRlcl9kaWN0KHN0cnVjdCBidGRfYWRhcHRlciAqYWRhcHRlciwKLSAJKCpmaWx0ZXIpLT5yc3NpID0gRElTVEFOQ0VfVkFMX0lOVkFMSUQ7Ci0gCSgqZmlsdGVyKS0+dHlwZSA9IGdldF9zY2FuX3R5cGUoYWRhcHRlcik7Ci0gCSgqZmlsdGVyKS0+ZHVwbGljYXRlID0gZmFsc2U7Ci0rCSgqZmlsdGVyKS0+ZGlzY292ZXJhYmxlID0gZmFsc2U7Ci0gCi0gCWRidXNfbWVzc2FnZV9pdGVyX2luaXQobXNnLCAmaXRlcik7Ci0gCWlmIChkYnVzX21lc3NhZ2VfaXRlcl9nZXRfYXJnX3R5cGUoJml0ZXIpICE9IERCVVNfVFlQRV9BUlJBWSB8fAotQEAgLTI0MTcsOCArMjQ5OCwxMCBAQCBzdGF0aWMgYm9vbCBwYXJzZV9kaXNjb3ZlcnlfZmlsdGVyX2RpY3Qoc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyLAotIAkJZ290byBpbnZhbGlkX2FyZ3M7Ci0gCi0gCURCRygiZmlsdGVyZWQgZGlzY292ZXJ5IHBhcmFtczogdHJhbnNwb3J0OiAlZCByc3NpOiAlZCBwYXRobG9zczogJWQgIgotLQkJIiBkdXBsaWNhdGUgZGF0YTogJXMgIiwgKCpmaWx0ZXIpLT50eXBlLCAoKmZpbHRlciktPnJzc2ksCi0tCQkoKmZpbHRlciktPnBhdGhsb3NzLCAoKmZpbHRlciktPmR1cGxpY2F0ZSA/ICJ0cnVlIiA6ICJmYWxzZSIpOwotKwkJIiBkdXBsaWNhdGUgZGF0YTogJXMgZGlzY292ZXJhYmxlICVzIiwgKCpmaWx0ZXIpLT50eXBlLAotKwkJKCpmaWx0ZXIpLT5yc3NpLCAoKmZpbHRlciktPnBhdGhsb3NzLAotKwkJKCpmaWx0ZXIpLT5kdXBsaWNhdGUgPyAidHJ1ZSIgOiAiZmFsc2UiLAotKwkJKCpmaWx0ZXIpLT5kaXNjb3ZlcmFibGUgPyAidHJ1ZSIgOiAiZmFsc2UiKTsKLSAKLSAJcmV0dXJuIHRydWU7Ci0gCi1AQCAtMjUxMCw3ICsyNTkzLDcgQEAgc3RhdGljIERCdXNNZXNzYWdlICpzdG9wX2Rpc2NvdmVyeShEQnVzQ29ubmVjdGlvbiAqY29ubiwKLSAJaWYgKGNsaWVudC0+bXNnKQotIAkJcmV0dXJuIGJ0ZF9lcnJvcl9idXN5KG1zZyk7Ci0gCi0tCWVyciA9IGRpc2NvdmVyeV9zdG9wKGNsaWVudCk7Ci0rCWVyciA9IGRpc2NvdmVyeV9zdG9wKGNsaWVudCwgZmFsc2UpOwotIAlzd2l0Y2ggKGVycikgewotIAljYXNlIDA6Ci0gCQlyZXR1cm4gZGJ1c19tZXNzYWdlX25ld19tZXRob2RfcmV0dXJuKG1zZyk7Ci1AQCAtMjczOSwxMyArMjgyMiwxNSBAQCBzdGF0aWMgdm9pZCBwcm9wZXJ0eV9zZXRfbW9kZShzdHJ1Y3QgYnRkX2FkYXB0ZXIgKmFkYXB0ZXIsIHVpbnQzMl90IHNldHRpbmcsCi0gCWVsc2UKLSAJCWN1cnJlbnRfZW5hYmxlID0gRkFMU0U7Ci0gCi0tCWlmIChlbmFibGUgPT0gY3VycmVudF9lbmFibGUpIHsKLSsJaWYgKGVuYWJsZSA9PSBjdXJyZW50X2VuYWJsZSB8fCBhZGFwdGVyLT5wZW5kaW5nX3NldHRpbmdzICYgc2V0dGluZykgewotIAkJZ19kYnVzX3BlbmRpbmdfcHJvcGVydHlfc3VjY2VzcyhpZCk7Ci0gCQlyZXR1cm47Ci0gCX0KLSAKLSAJbW9kZSA9IChlbmFibGUgPT0gVFJVRSkgPyAweDAxIDogMHgwMDsKLSAKLSsJYWRhcHRlci0+cGVuZGluZ19zZXR0aW5ncyB8PSBzZXR0aW5nOwotKwotIAlzd2l0Y2ggKHNldHRpbmcpIHsKLSAJY2FzZSBNR01UX1NFVFRJTkdfUE9XRVJFRDoKLSAJCW9wY29kZSA9IE1HTVRfT1BfU0VUX1BPV0VSRUQ7Ci1AQCAtMjc5OCw3ICsyODgzLDcgQEAgc3RhdGljIHZvaWQgcHJvcGVydHlfc2V0X21vZGUoc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyLCB1aW50MzJfdCBzZXR0aW5nLAotIAlkYXRhLT5pZCA9IGlkOwotIAotIAlpZiAobWdtdF9zZW5kKGFkYXB0ZXItPm1nbXQsIG9wY29kZSwgYWRhcHRlci0+ZGV2X2lkLCBsZW4sIHBhcmFtLAotLQkJCQlwcm9wZXJ0eV9zZXRfbW9kZV9jb21wbGV0ZSwgZGF0YSwgZ19mcmVlKSA+IDApCi0rCQkJcHJvcGVydHlfc2V0X21vZGVfY29tcGxldGUsIGRhdGEsIGdfZnJlZSkgPiAwKQotIAkJcmV0dXJuOwotIAotIAlnX2ZyZWUoZGF0YSk7Ci1AQCAtMjg3NSw2ICsyOTYwLDcgQEAgc3RhdGljIHZvaWQgcHJvcGVydHlfc2V0X2Rpc2NvdmVyYWJsZV90aW1lb3V0KAotIAkJCQlHREJ1c1BlbmRpbmdQcm9wZXJ0eVNldCBpZCwgdm9pZCAqdXNlcl9kYXRhKQotIHsKLSAJc3RydWN0IGJ0ZF9hZGFwdGVyICphZGFwdGVyID0gdXNlcl9kYXRhOwotKwlib29sIGVuYWJsZWQ7Ci0gCWRidXNfdWludDMyX3QgdmFsdWU7Ci0gCi0gCWRidXNfbWVzc2FnZV9pdGVyX2dldF9iYXNpYyhpdGVyLCAmdmFsdWUpOwotQEAgLTI4ODgsOCArMjk3NCwxOSBAQCBzdGF0aWMgdm9pZCBwcm9wZXJ0eV9zZXRfZGlzY292ZXJhYmxlX3RpbWVvdXQoCi0gCWdfZGJ1c19lbWl0X3Byb3BlcnR5X2NoYW5nZWQoZGJ1c19jb25uLCBhZGFwdGVyLT5wYXRoLAotIAkJCQlBREFQVEVSX0lOVEVSRkFDRSwgIkRpc2NvdmVyYWJsZVRpbWVvdXQiKTsKLSAKLSsJaWYgKGFkYXB0ZXItPnBlbmRpbmdfc2V0dGluZ3MgJiBNR01UX1NFVFRJTkdfRElTQ09WRVJBQkxFKSB7Ci0rCQlpZiAoYWRhcHRlci0+Y3VycmVudF9zZXR0aW5ncyAmIE1HTVRfU0VUVElOR19ESVNDT1ZFUkFCTEUpCi0rCQkJZW5hYmxlZCA9IGZhbHNlOwotKwkJZWxzZQotKwkJCWVuYWJsZWQgPSB0cnVlOwotKwl9IGVsc2UgewotKwkJaWYgKGFkYXB0ZXItPmN1cnJlbnRfc2V0dGluZ3MgJiBNR01UX1NFVFRJTkdfRElTQ09WRVJBQkxFKQotKwkJCWVuYWJsZWQgPSB0cnVlOwotKwkJZWxzZQotKwkJCWVuYWJsZWQgPSBmYWxzZTsKLSsJfQotIAotLQlpZiAoYWRhcHRlci0+Y3VycmVudF9zZXR0aW5ncyAmIE1HTVRfU0VUVElOR19ESVNDT1ZFUkFCTEUpCi0rCWlmIChlbmFibGVkKQotIAkJc2V0X2Rpc2NvdmVyYWJsZShhZGFwdGVyLCAweDAxLCBhZGFwdGVyLT5kaXNjb3ZlcmFibGVfdGltZW91dCk7Ci0gfQotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9nY2M5LWZpeGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvZ2NjOS1maXhlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2E2NzhlNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9nY2M5LWZpeGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAxICswLDAgQEAKLUJhY2twb3J0ZWQgY29tbWl0IGZyb20gdXBzdHJlYW0gbWFzdGVyIGJyYW5jaCAocG9zdCA1LjUwIHJlbGVhc2UpLCB3aGljaAotcmVzb2x2ZXMgYXNzZXJ0aW9uIGZhaWx1cmVzIGluIHNldmVyYWwgdW5pdCB0ZXN0cy4KLQotaHR0cHM6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2JsdWV0b290aC9ibHVlei5naXQvcGF0Y2gvP2lkPTBiZTUyNDYxNzAKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL3VuaXQvdGVzdC1hdmN0cC5jIGIvdW5pdC90ZXN0LWF2Y3RwLmMKLWluZGV4IDNiYzM1NjkuLjI0ZGU2NjMgMTAwNjQ0Ci0tLS0gYS91bml0L3Rlc3QtYXZjdHAuYwotKysrIGIvdW5pdC90ZXN0LWF2Y3RwLmMKLUBAIC00Myw3ICs0Myw3IEBACi0gCi0gc3RydWN0IHRlc3RfcGR1IHsKLSAJYm9vbCB2YWxpZDsKLS0JY29uc3QgdWludDhfdCAqZGF0YTsKLSsJdWludDhfdCAqZGF0YTsKLSAJc2l6ZV90IHNpemU7Ci0gfTsKLSAKLUBAIC02Niw3ICs2Niw3IEBAIHN0cnVjdCBjb250ZXh0IHsKLSAjZGVmaW5lIHJhd19wZHUoYXJncy4uLikJCQkJCVwKLSAJewkJCQkJCQlcCi0gCQkudmFsaWQgPSB0cnVlLAkJCQkJXAotLQkJLmRhdGEgPSBkYXRhKGFyZ3MpLAkJCQlcCi0rCQkuZGF0YSA9IGdfbWVtZHVwKGRhdGEoYXJncyksIHNpemVvZihkYXRhKGFyZ3MpKSksIFwKLSAJCS5zaXplID0gc2l6ZW9mKGRhdGEoYXJncykpLAkJCVwKLSAJfQotIAotQEAgLTkxLDYgKzkxLDExIEBAIHN0YXRpYyB2b2lkIHRlc3RfZGVidWcoY29uc3QgY2hhciAqc3RyLCB2b2lkICp1c2VyX2RhdGEpCi0gc3RhdGljIHZvaWQgdGVzdF9mcmVlKGdjb25zdHBvaW50ZXIgdXNlcl9kYXRhKQotIHsKLSAJY29uc3Qgc3RydWN0IHRlc3RfZGF0YSAqZGF0YSA9IHVzZXJfZGF0YTsKLSsJc3RydWN0IHRlc3RfcGR1ICpwZHU7Ci0rCWludCBpOwotKwotKwlmb3IgKGkgPSAwOyAocGR1ID0gJmRhdGEtPnBkdV9saXN0W2ldKSAmJiBwZHUtPnZhbGlkOyBpKyspCi0rCQlnX2ZyZWUocGR1LT5kYXRhKTsKLSAKLSAJZ19mcmVlKGRhdGEtPnRlc3RfbmFtZSk7Ci0gCWdfZnJlZShkYXRhLT5wZHVfbGlzdCk7Ci1kaWZmIC0tZ2l0IGEvdW5pdC90ZXN0LWF2ZHRwLmMgYi91bml0L3Rlc3QtYXZkdHAuYwotaW5kZXggZGQ4YWVkNy4uZTJjOTUxYSAxMDA2NDQKLS0tLSBhL3VuaXQvdGVzdC1hdmR0cC5jCi0rKysgYi91bml0L3Rlc3QtYXZkdHAuYwotQEAgLTQ3LDcgKzQ3LDcgQEAKLSBzdHJ1Y3QgdGVzdF9wZHUgewotIAlib29sIHZhbGlkOwotIAlib29sIGZyYWdtZW50ZWQ7Ci0tCWNvbnN0IHVpbnQ4X3QgKmRhdGE7Ci0rCXVpbnQ4X3QgKmRhdGE7Ci0gCXNpemVfdCBzaXplOwotIH07Ci0gCi1AQCAtNjEsNyArNjEsNyBAQCBzdHJ1Y3QgdGVzdF9kYXRhIHsKLSAjZGVmaW5lIHJhd19wZHUoYXJncy4uLikgXAotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0tCQkuZGF0YSA9IGRhdGEoYXJncyksCQkJCVwKLSsJCS5kYXRhID0gZ19tZW1kdXAoZGF0YShhcmdzKSwgc2l6ZW9mKGRhdGEoYXJncykpKSwgXAotIAkJLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksCQkJXAotIAl9Ci0gCi1AQCAtNjksNyArNjksNyBAQCBzdHJ1Y3QgdGVzdF9kYXRhIHsKLSAJewkJCQkJCQlcCi0gCQkudmFsaWQgPSB0cnVlLAkJCQkJXAotIAkJLmZyYWdtZW50ZWQgPSB0cnVlLAkJCQlcCi0tCQkuZGF0YSA9IGRhdGEoYXJncyksCQkJCVwKLSsJCS5kYXRhID0gZ19tZW1kdXAoZGF0YShhcmdzKSwgc2l6ZW9mKGRhdGEoYXJncykpKSwgXAotIAkJLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksCQkJXAotIAl9Ci0gCi1AQCAtODEsNyArODEsNyBAQCBzdHJ1Y3QgdGVzdF9kYXRhIHsKLSAJCXN0YXRpYyBzdHJ1Y3QgdGVzdF9kYXRhIGRhdGE7CQkJCVwKLSAJCWRhdGEudGVzdF9uYW1lID0gZ19zdHJkdXAobmFtZSk7CQkJXAotIAkJZGF0YS5wZHVfbGlzdCA9IGdfbWVtZHVwKHBkdXMsIHNpemVvZihwZHVzKSk7CQlcCi0tCQl0ZXN0ZXJfYWRkKG5hbWUsICZkYXRhLCBOVUxMLCBmdW5jdGlvbiwgTlVMTCk7CQlcCi0rCQl0ZXN0ZXJfYWRkKG5hbWUsICZkYXRhLCBOVUxMLCBmdW5jdGlvbiwgTlVMTCk7CVwKLSAJfSB3aGlsZSAoMCkKLSAKLSBzdHJ1Y3QgY29udGV4dCB7Ci1AQCAtMTA5LDYgKzEwOSwxMSBAQCBzdGF0aWMgdm9pZCB0ZXN0X2RlYnVnKGNvbnN0IGNoYXIgKnN0ciwgdm9pZCAqdXNlcl9kYXRhKQotIHN0YXRpYyB2b2lkIHRlc3RfZnJlZShnY29uc3Rwb2ludGVyIHVzZXJfZGF0YSkKLSB7Ci0gCWNvbnN0IHN0cnVjdCB0ZXN0X2RhdGEgKmRhdGEgPSB1c2VyX2RhdGE7Ci0rCXN0cnVjdCB0ZXN0X3BkdSAqcGR1OwotKwlpbnQgaTsKLSsKLSsJZm9yIChpID0gMDsgKHBkdSA9ICZkYXRhLT5wZHVfbGlzdFtpXSkgJiYgcGR1LT52YWxpZDsgaSsrKQotKwkJZ19mcmVlKHBkdS0+ZGF0YSk7Ci0gCi0gCWdfZnJlZShkYXRhLT50ZXN0X25hbWUpOwotIAlnX2ZyZWUoZGF0YS0+cGR1X2xpc3QpOwotZGlmZiAtLWdpdCBhL3VuaXQvdGVzdC1hdnJjcC5jIGIvdW5pdC90ZXN0LWF2cmNwLmMKLWluZGV4IDAxMzA3ZTYuLmYxYWEzNTMgMTAwNjQ0Ci0tLS0gYS91bml0L3Rlc3QtYXZyY3AuYwotKysrIGIvdW5pdC90ZXN0LWF2cmNwLmMKLUBAIC00OSw3ICs0OSw3IEBAIHN0cnVjdCB0ZXN0X3BkdSB7Ci0gCWJvb2wgZnJhZ21lbnRlZDsKLSAJYm9vbCBjb250aW51aW5nOwotIAlib29sIGJyb3dzZTsKLS0JY29uc3QgdWludDhfdCAqZGF0YTsKLSsJdWludDhfdCAqZGF0YTsKLSAJc2l6ZV90IHNpemU7Ci0gfTsKLSAKLUBAIC03NCw3ICs3NCw3IEBAIHN0cnVjdCBjb250ZXh0IHsKLSAjZGVmaW5lIHJhd19wZHUoYXJncy4uLikJCQkJCVwKLSAJewkJCQkJCQlcCi0gCQkudmFsaWQgPSB0cnVlLAkJCQkJXAotLQkJLmRhdGEgPSBkYXRhKGFyZ3MpLAkJCQlcCi0rCQkuZGF0YSA9IGdfbWVtZHVwKGRhdGEoYXJncyksIHNpemVvZihkYXRhKGFyZ3MpKSksIFwKLSAJCS5zaXplID0gc2l6ZW9mKGRhdGEoYXJncykpLAkJCVwKLSAJfQotIAotQEAgLTgyLDcgKzgyLDcgQEAgc3RydWN0IGNvbnRleHQgewotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0gCQkuYnJvd3NlID0gdHJ1ZSwJCQkJCVwKLS0JCS5kYXRhID0gZGF0YShhcmdzKSwJCQkJXAotKwkJLmRhdGEgPSBnX21lbWR1cChkYXRhKGFyZ3MpLCBzaXplb2YoZGF0YShhcmdzKSkpLCBcCi0gCQkuc2l6ZSA9IHNpemVvZihkYXRhKGFyZ3MpKSwJCQlcCi0gCX0KLSAKLUBAIC05MCw3ICs5MCw3IEBAIHN0cnVjdCBjb250ZXh0IHsKLSAJewkJCQkJCQlcCi0gCQkudmFsaWQgPSB0cnVlLAkJCQkJXAotIAkJLmZyYWdtZW50ZWQgPSB0cnVlLAkJCQlcCi0tCQkuZGF0YSA9IGRhdGEoYXJncyksCQkJCVwKLSsJCS5kYXRhID0gZ19tZW1kdXAoZGF0YShhcmdzKSwgc2l6ZW9mKGRhdGEoYXJncykpKSwgXAotIAkJLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksCQkJXAotIAl9Ci0gCi1AQCAtOTgsNyArOTgsNyBAQCBzdHJ1Y3QgY29udGV4dCB7Ci0gCXsJCQkJCQkJXAotIAkJLnZhbGlkID0gdHJ1ZSwJCQkJCVwKLSAJCS5jb250aW51aW5nID0gdHJ1ZSwJCQkJXAotLQkJLmRhdGEgPSBkYXRhKGFyZ3MpLAkJCQlcCi0rCQkuZGF0YSA9IGdfbWVtZHVwKGRhdGEoYXJncyksIHNpemVvZihkYXRhKGFyZ3MpKSksIFwKLSAJCS5zaXplID0gc2l6ZW9mKGRhdGEoYXJncykpLAkJCVwKLSAJfQotIAotQEAgLTEyMyw2ICsxMjMsMTEgQEAgc3RhdGljIHZvaWQgdGVzdF9kZWJ1Zyhjb25zdCBjaGFyICpzdHIsIHZvaWQgKnVzZXJfZGF0YSkKLSBzdGF0aWMgdm9pZCB0ZXN0X2ZyZWUoZ2NvbnN0cG9pbnRlciB1c2VyX2RhdGEpCi0gewotIAljb25zdCBzdHJ1Y3QgdGVzdF9kYXRhICpkYXRhID0gdXNlcl9kYXRhOwotKwlzdHJ1Y3QgdGVzdF9wZHUgKnBkdTsKLSsJaW50IGk7Ci0rCi0rCWZvciAoaSA9IDA7IChwZHUgPSAmZGF0YS0+cGR1X2xpc3RbaV0pICYmIHBkdS0+dmFsaWQ7IGkrKykKLSsJCWdfZnJlZShwZHUtPmRhdGEpOwotIAotIAlnX2ZyZWUoZGF0YS0+dGVzdF9uYW1lKTsKLSAJZ19mcmVlKGRhdGEtPnBkdV9saXN0KTsKLWRpZmYgLS1naXQgYS91bml0L3Rlc3QtZ2F0dC5jIGIvdW5pdC90ZXN0LWdhdHQuYwotaW5kZXggYzdlMjhmOC4uZDQ5ZjdhMCAxMDA2NDQKLS0tLSBhL3VuaXQvdGVzdC1nYXR0LmMKLSsrKyBiL3VuaXQvdGVzdC1nYXR0LmMKLUBAIC00OCw3ICs0OCw3IEBACi0gCi0gc3RydWN0IHRlc3RfcGR1IHsKLSAJYm9vbCB2YWxpZDsKLS0JY29uc3QgdWludDhfdCAqZGF0YTsKLSsJdWludDhfdCAqZGF0YTsKLSAJc2l6ZV90IHNpemU7Ci0gfTsKLSAKLUBAIC04Niw3ICs4Niw3IEBAIHN0cnVjdCBjb250ZXh0IHsKLSAjZGVmaW5lIHJhd19wZHUoYXJncy4uLikJCQkJCVwKLSAJewkJCQkJCQlcCi0gCQkudmFsaWQgPSB0cnVlLAkJCQkJXAotLQkJLmRhdGEgPSBkYXRhKGFyZ3MpLAkJCQlcCi0rCQkuZGF0YSA9IGdfbWVtZHVwKGRhdGEoYXJncyksIHNpemVvZihkYXRhKGFyZ3MpKSksIFwKLSAJCS5zaXplID0gc2l6ZW9mKGRhdGEoYXJncykpLAkJCVwKLSAJfQotIAotQEAgLTMwNiw2ICszMDYsMTEgQEAgc3RhdGljIGJ0X3V1aWRfdCB1dWlkX2NoYXJfMTI4ID0gewotIHN0YXRpYyB2b2lkIHRlc3RfZnJlZShnY29uc3Rwb2ludGVyIHVzZXJfZGF0YSkKLSB7Ci0gCWNvbnN0IHN0cnVjdCB0ZXN0X2RhdGEgKmRhdGEgPSB1c2VyX2RhdGE7Ci0rCXN0cnVjdCB0ZXN0X3BkdSAqcGR1OwotKwlpbnQgaTsKLSsKLSsJZm9yIChpID0gMDsgKHBkdSA9ICZkYXRhLT5wZHVfbGlzdFtpXSkgJiYgcGR1LT52YWxpZDsgaSsrKQotKwkJZ19mcmVlKHBkdS0+ZGF0YSk7Ci0gCi0gCWdfZnJlZShkYXRhLT50ZXN0X25hbWUpOwotIAlnX2ZyZWUoZGF0YS0+cGR1X2xpc3QpOwotQEAgLTE5MTEsNiArMTkxNiw4IEBAIHN0YXRpYyB2b2lkIHRlc3Rfc2VydmVyKGdjb25zdHBvaW50ZXIgZGF0YSkKLSAJZ19hc3NlcnRfY21waW50KGxlbiwgPT0sIHBkdS5zaXplKTsKLSAKLSAJdXRpbF9oZXhkdW1wKCc8JywgcGR1LmRhdGEsIGxlbiwgdGVzdF9kZWJ1ZywgIkdBVFQ6ICIpOwotKwotKwlnX2ZyZWUocGR1LmRhdGEpOwotIH0KLSAKLSBzdGF0aWMgdm9pZCB0ZXN0X3NlYXJjaF9wcmltYXJ5KGdjb25zdHBvaW50ZXIgZGF0YSkKLWRpZmYgLS1naXQgYS91bml0L3Rlc3QtaGZwLmMgYi91bml0L3Rlc3QtaGZwLmMKLWluZGV4IGYyYjk2MjIuLjg5MGVlZTYgMTAwNjQ0Ci0tLS0gYS91bml0L3Rlc3QtaGZwLmMKLSsrKyBiL3VuaXQvdGVzdC1oZnAuYwotQEAgLTQzLDcgKzQzLDcgQEAgc3RydWN0IGNvbnRleHQgewotIAotIHN0cnVjdCB0ZXN0X3BkdSB7Ci0gCWJvb2wgdmFsaWQ7Ci0tCWNvbnN0IHVpbnQ4X3QgKmRhdGE7Ci0rCXVpbnQ4X3QgKmRhdGE7Ci0gCXNpemVfdCBzaXplOwotIAllbnVtIGhmcF9nd19jbWRfdHlwZSB0eXBlOwotIAlib29sIGZyYWdtZW50ZWQ7Ci1AQCAtNjMsNyArNjMsNyBAQCBzdHJ1Y3QgdGVzdF9kYXRhIHsKLSAjZGVmaW5lIHJhd19wZHUoYXJncy4uLikJCQkJCVwKLSAJewkJCQkJCQlcCi0gCQkudmFsaWQgPSB0cnVlLAkJCQkJXAotLQkJLmRhdGEgPSBkYXRhKGFyZ3MpLAkJCQlcCi0rCQkuZGF0YSA9IGdfbWVtZHVwKGRhdGEoYXJncyksIHNpemVvZihkYXRhKGFyZ3MpKSksIFwKLSAJCS5zaXplID0gc2l6ZW9mKGRhdGEoYXJncykpLAkJCVwKLSAJfQotIAotQEAgLTc1LDcgKzc1LDcgQEAgc3RydWN0IHRlc3RfZGF0YSB7Ci0gI2RlZmluZSB0eXBlX3BkdShjbWRfdHlwZSwgYXJncy4uLikJCQkJXAotIAl7CQkJCQkJCVwKLSAJCS52YWxpZCA9IHRydWUsCQkJCQlcCi0tCQkuZGF0YSA9IGRhdGEoYXJncyksCQkJCVwKLSsJCS5kYXRhID0gZ19tZW1kdXAoZGF0YShhcmdzKSwgc2l6ZW9mKGRhdGEoYXJncykpKSwgXAotIAkJLnNpemUgPSBzaXplb2YoZGF0YShhcmdzKSksCQkJXAotIAkJLnR5cGUgPSBjbWRfdHlwZSwJCQkJXAotIAl9Ci1AQCAtODMsNyArODMsNyBAQCBzdHJ1Y3QgdGVzdF9kYXRhIHsKLSAjZGVmaW5lIGZyZ19wZHUoYXJncy4uLikJCQkJCVwKLSAJewkJCQkJCQlcCi0gCQkudmFsaWQgPSB0cnVlLAkJCQkJXAotLQkJLmRhdGEgPSBkYXRhKGFyZ3MpLAkJCQlcCi0rCQkuZGF0YSA9IGdfbWVtZHVwKGRhdGEoYXJncyksIHNpemVvZihkYXRhKGFyZ3MpKSksIFwKLSAJCS5zaXplID0gc2l6ZW9mKGRhdGEoYXJncykpLAkJCVwKLSAJCS5mcmFnbWVudGVkID0gdHJ1ZSwJCQkJXAotIAl9Ci1AQCAtMTE5LDYgKzExOSwxMSBAQCBzdHJ1Y3QgdGVzdF9kYXRhIHsKLSBzdGF0aWMgdm9pZCB0ZXN0X2ZyZWUoZ2NvbnN0cG9pbnRlciB1c2VyX2RhdGEpCi0gewotIAljb25zdCBzdHJ1Y3QgdGVzdF9kYXRhICpkYXRhID0gdXNlcl9kYXRhOwotKwlzdHJ1Y3QgdGVzdF9wZHUgKnBkdTsKLSsJaW50IGk7Ci0rCi0rCWZvciAoaSA9IDA7IChwZHUgPSAmZGF0YS0+cGR1X2xpc3RbaV0pICYmIHBkdS0+dmFsaWQ7IGkrKykKLSsJCWdfZnJlZShwZHUtPmRhdGEpOwotIAotIAlnX2ZyZWUoZGF0YS0+dGVzdF9uYW1lKTsKLSAJZ19mcmVlKGRhdGEtPnBkdV9saXN0KTsKLWRpZmYgLS1naXQgYS91bml0L3Rlc3QtaG9nLmMgYi91bml0L3Rlc3QtaG9nLmMKLWluZGV4IGQxMTc5NjguLjI1YmRiNDIgMTAwNjQ0Ci0tLS0gYS91bml0L3Rlc3QtaG9nLmMKLSsrKyBiL3VuaXQvdGVzdC1ob2cuYwotQEAgLTY4LDExICs2OCwxMSBAQCBzdHJ1Y3QgY29udGV4dCB7Ci0gCi0gI2RlZmluZSBkYXRhKGFyZ3MuLi4pICgoY29uc3QgdW5zaWduZWQgY2hhcltdKSB7IGFyZ3MgfSkKLSAKLS0jZGVmaW5lIHJhd19wZHUoYXJncy4uLikgICAgXAotLXsgICAgICBcCi0tCS52YWxpZCA9IHRydWUsCQlcCi0tCS5kYXRhID0gZGF0YShhcmdzKSwgXAotLQkuc2l6ZSA9IHNpemVvZihkYXRhKGFyZ3MpKSxcCi0rI2RlZmluZSByYXdfcGR1KGFyZ3MuLi4pCQkJCQlcCi0rewkJCQkJCQkJXAotKwkudmFsaWQgPSB0cnVlLAkJCQkJCVwKLSsJLmRhdGEgPSBnX21lbWR1cChkYXRhKGFyZ3MpLCBzaXplb2YoZGF0YShhcmdzKSkpLAlcCi0rCS5zaXplID0gc2l6ZW9mKGRhdGEoYXJncykpLAkJCQlcCi0gfQotIAotICNkZWZpbmUgZmFsc2VfcGR1KCkJXAotZGlmZiAtLWdpdCBhL3VuaXQvdGVzdC1zZHAuYyBiL3VuaXQvdGVzdC1zZHAuYwotaW5kZXggYWM5MjFhOS4uYzcxZWUxZiAxMDA2NDQKLS0tLSBhL3VuaXQvdGVzdC1zZHAuYwotKysrIGIvdW5pdC90ZXN0LXNkcC5jCi1AQCAtNTksMTQgKzU5LDE0IEBAIHN0cnVjdCB0ZXN0X2RhdGEgewotICNkZWZpbmUgcmF3X3BkdShhcmdzLi4uKSBcCi0gCXsJCQkJCQkJXAotIAkJLnZhbGlkID0gdHJ1ZSwJCQkJCVwKLS0JCS5yYXdfZGF0YSA9IHJhd19kYXRhKGFyZ3MpLAkJCVwKLSsJCS5yYXdfZGF0YSA9IGdfbWVtZHVwKHJhd19kYXRhKGFyZ3MpLCBzaXplb2YocmF3X2RhdGEoYXJncykpKSwgXAotIAkJLnJhd19zaXplID0gc2l6ZW9mKHJhd19kYXRhKGFyZ3MpKSwJCVwKLSAJfQotIAotICNkZWZpbmUgcmF3X3BkdV9jb250KGNvbnQsIGFyZ3MuLi4pIFwKLSAJewkJCQkJCQlcCi0gCQkudmFsaWQgPSB0cnVlLAkJCQkJXAotLQkJLnJhd19kYXRhID0gcmF3X2RhdGEoYXJncyksCQkJXAotKwkJLnJhd19kYXRhID0gZ19tZW1kdXAocmF3X2RhdGEoYXJncyksIHNpemVvZihyYXdfZGF0YShhcmdzKSkpLCBcCi0gCQkucmF3X3NpemUgPSBzaXplb2YocmF3X2RhdGEoYXJncykpLAkJXAotIAkJLmNvbnRfbGVuID0gY29udCwJCQkJXAotIAl9Ci1AQCAtMTAzLDcgKzEwMyw3IEBAIHN0cnVjdCB0ZXN0X2RhdGFfZGUgewotICNkZWZpbmUgZGVmaW5lX3Rlc3RfZGVfYXR0cihuYW1lLCBpbnB1dCwgZXhwKSBcCi0gCWRvIHsJCQkJCQkJCVwKLSAJCXN0YXRpYyBzdHJ1Y3QgdGVzdF9kYXRhX2RlIGRhdGE7CQkJXAotLQkJZGF0YS5pbnB1dF9kYXRhID0gaW5wdXQ7CQkJCVwKLSsJCWRhdGEuaW5wdXRfZGF0YSA9IGdfbWVtZHVwKGlucHV0LCBzaXplb2YoaW5wdXQpKTsJXAotIAkJZGF0YS5pbnB1dF9zaXplID0gc2l6ZW9mKGlucHV0KTsJCQlcCi0gCQlkYXRhLmV4cGVjdGVkID0gZXhwOwkJCQkJXAotIAkJdGVzdGVyX2FkZCgiL3NkcC9ERS9BVFRSLyIgbmFtZSwgJmRhdGEsCU5VTEwsCQlcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9vdXQtb2YtdHJlZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L291dC1vZi10cmVlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NmVkNzc5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L291dC1vZi10cmVlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRnJvbSBlZDU1YjQ5YTIyNmNhMzkwOWY1MjQxNmJlMmFlNWNlMWM1Y2EyY2IyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLURhdGU6IEZyaSwgMjIgQXByIDIwMTYgMTU6NDA6MzcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUub2JleGQ6IGFkZCBtaXNzaW5nIG1rZGlyIGluIGJ1aWx0aW4uaCBnZW5lcmF0aW9uCi0KLUluIHBhcmFsbGVsIG91dC1vZi10cmVlIGJ1aWxkcyBpdCdzIHBvc3NpYmxlIHRoYXQgb2JleGQvc3JjL2J1aWx0aW4uaCBpcwotZ2VuZXJhdGVkIGJlZm9yZSB0aGUgdGFyZ2V0IGRpcmVjdG9yeSBoYXMgYmVlbiBpbXBsaWNpdGx5IGNyZWF0ZWQuIFNvbHZlIHRoaXMgYnkKLWNyZWF0aW5nIHRoZSBkaXJlY3RvcnkgYmVmb3JlIHdyaXRpbmcgaW50byBpdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLS0tLQotIE1ha2VmaWxlLm9iZXhkIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5vYmV4ZCBiL01ha2VmaWxlLm9iZXhkCi1pbmRleCAyZTMzY2JjLi5jODI4NmYwIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUub2JleGQKLSsrKyBiL01ha2VmaWxlLm9iZXhkCi1AQCAtMTA1LDIgKzEwNSwzIEBAIG9iZXhkL3NyYy9wbHVnaW4uJChPQkpFWFQpOiBvYmV4ZC9zcmMvYnVpbHRpbi5oCi0gb2JleGQvc3JjL2J1aWx0aW4uaDogb2JleGQvc3JjL2dlbmJ1aWx0aW4gJChvYmV4ZF9idWlsdGluX3NvdXJjZXMpCi0rCSQoQU1fVl9hdCkkKE1LRElSX1ApICQoZGlyICRAKQotIAkkKEFNX1ZfR0VOKSQoc3JjZGlyKS9vYmV4ZC9zcmMvZ2VuYnVpbHRpbiAkKG9iZXhkX2J1aWx0aW5fbW9kdWxlcykgPiAkQAotLS0gCi0yLjguMC5yYzMKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2JsdWV6NS9ibHVlejUvcnVuLXB0ZXN0CmluZGV4IDIxZGYwMGMuLjAzMzVlNjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1L3J1bi1wdGVzdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NS9ydW4tcHRlc3QKQEAgLTYsNyArNiw3IEBACiBhbGw9MAogCiBmb3IgZiBpbiB0ZXN0LSo7IGRvCi0gICAgIi4vJGYiCisgICAgIi4vJGYiIC1xCiAgICAgY2FzZSAiJD8iIGluCiAgICAgICAgIDApCiAgICAgICAgICAgICBlY2hvICJQQVNTOiAkZiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjUwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZTQ0M2U1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2OCArMCwwIEBACi1yZXF1aXJlIGJsdWV6NS5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gIjhlMzVjNjdjODFhNTVkM2FkNGM5ZjIyMjgwZGFlMTc4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmZmNhYWUxOGJiYjYxNTVmMTU5MWJlOGMyNDg5OGRjMTJmMDYyMDc1YTQwYjUzOGI3NDViZmQ0Nzc0ODE5MTEiCi0KLSMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFJFQURMSU5FCi0jIHN1cHBvcnQKLU5PSU5TVF9UT09MU19SRUFETElORSA/PSAiIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkZXByZWNhdGVkJywgJ2F0dHJpYi9nYXR0dG9vbCcsICcnLCBkKX0gXAotICAgIHRvb2xzL29iZXgtY2xpZW50LXRvb2wgXAotICAgIHRvb2xzL29iZXgtc2VydmVyLXRvb2wgXAotICAgIHRvb2xzL2JsdWV0b290aC1wbGF5ZXIgXAotICAgIHRvb2xzL29iZXhjdGwgXAotICAgIHRvb2xzL2J0bWdtdCBcCi0iCi0KLSMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFRFU1RJTkcKLSMgc3VwcG9ydAotTk9JTlNUX1RPT0xTX1RFU1RJTkcgPz0gIiBcCi0gICAgZW11bGF0b3IvYnR2aXJ0IFwKLSAgICBlbXVsYXRvci9iMWVlIFwKLSAgICBlbXVsYXRvci9oZnAgXAotICAgIHBlcmlwaGVyYWwvYnRzZW5zb3IgXAotICAgIHRvb2xzLzNkc3AgXAotICAgIHRvb2xzL21nbXQtdGVzdGVyIFwKLSAgICB0b29scy9nYXAtdGVzdGVyIFwKLSAgICB0b29scy9sMmNhcC10ZXN0ZXIgXAotICAgIHRvb2xzL3Njby10ZXN0ZXIgXAotICAgIHRvb2xzL3NtcC10ZXN0ZXIgXAotICAgIHRvb2xzL2hjaS10ZXN0ZXIgXAotICAgIHRvb2xzL3JmY29tbS10ZXN0ZXIgXAotICAgIHRvb2xzL2JuZXAtdGVzdGVyIFwKLSAgICB0b29scy91c2VyY2hhbi10ZXN0ZXIgXAotIgotCi0jIG5vaW5zdCBwcm9ncmFtcyBpbiBNYWtlZmlsZS50b29scyB0aGF0IGFyZSBjb25kaXRpb25hbCBvbiBUT09MUwotIyBzdXBwb3J0Ci1OT0lOU1RfVE9PTFNfQlQgPz0gIiBcCi0gICAgdG9vbHMvYmRhZGRyIFwKLSAgICB0b29scy9hdmluZm8gXAotICAgIHRvb2xzL2F2dGVzdCBcCi0gICAgdG9vbHMvc2NvdGVzdCBcCi0gICAgdG9vbHMvYW1wdGVzdCBcCi0gICAgdG9vbHMvaHdkYiBcCi0gICAgdG9vbHMvaGNpZXZlbnRtYXNrIFwKLSAgICB0b29scy9oY2lzZWNmaWx0ZXIgXAotICAgIHRvb2xzL2J0aW5mbyBcCi0gICAgdG9vbHMvYnRzbm9vcCBcCi0gICAgdG9vbHMvYnRwcm94eSBcCi0gICAgdG9vbHMvYnRpb3Rlc3QgXAotICAgIHRvb2xzL2JuZXB0ZXN0IFwKLSAgICB0b29scy9tY2FwdGVzdCBcCi0gICAgdG9vbHMvY2x0ZXN0IFwKLSAgICB0b29scy9vb2J0ZXN0IFwKLSAgICB0b29scy9hZHZ0ZXN0IFwKLSAgICB0b29scy9zZXEyYnNlcSBcCi0gICAgdG9vbHMvbm9rZncgXAotICAgIHRvb2xzL2NyZWF0ZS1pbWFnZSBcCi0gICAgdG9vbHMvZWRkeXN0b25lIFwKLSAgICB0b29scy9pYmVhY29uIFwKLSAgICB0b29scy9idGdhdHQtY2xpZW50IFwKLSAgICB0b29scy9idGdhdHQtc2VydmVyIFwKLSAgICB0b29scy90ZXN0LXJ1bm5lciBcCi0gICAgdG9vbHMvY2hlY2stc2VsZnRlc3QgXAotICAgIHRvb2xzL2dhdHQtc2VydmljZSBcCi0gICAgcHJvZmlsZXMvaWFwL2lhcGQgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2J0cGNsaWVudCcsICd0b29scy9idHBjbGllbnQnLCAnJywgZCl9IFwKLSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9ibHVlejUvYmx1ZXo1XzUuNTQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjU0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2MGVlZTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvYmx1ZXo1L2JsdWV6NV81LjU0LmJiCkBAIC0wLDAgKzEsNjggQEAKK3JlcXVpcmUgYmx1ZXo1LmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiZTYzN2ZlYjJkYmI3NTgyYmJiZmYxNzA4MzY3YTg0N2MiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjhjZGFiOWU2M2U4ODMyYjEzMGQ1OTc5ZGM4Yzk2ZmRiMDg3YjMxMjc4ZjM0Mjg3NGQ5OTJhZjNlNTY2NTZkYyIKKworIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gUkVBRExJTkUKKyMgc3VwcG9ydAorTk9JTlNUX1RPT0xTX1JFQURMSU5FID89ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2RlcHJlY2F0ZWQnLCAnYXR0cmliL2dhdHR0b29sJywgJycsIGQpfSBcCisgICAgdG9vbHMvb2JleC1jbGllbnQtdG9vbCBcCisgICAgdG9vbHMvb2JleC1zZXJ2ZXItdG9vbCBcCisgICAgdG9vbHMvYmx1ZXRvb3RoLXBsYXllciBcCisgICAgdG9vbHMvb2JleGN0bCBcCisgICAgdG9vbHMvYnRtZ210IFwKKyIKKworIyBub2luc3QgcHJvZ3JhbXMgaW4gTWFrZWZpbGUudG9vbHMgdGhhdCBhcmUgY29uZGl0aW9uYWwgb24gVEVTVElORworIyBzdXBwb3J0CitOT0lOU1RfVE9PTFNfVEVTVElORyA/PSAiIFwKKyAgICBlbXVsYXRvci9idHZpcnQgXAorICAgIGVtdWxhdG9yL2IxZWUgXAorICAgIGVtdWxhdG9yL2hmcCBcCisgICAgcGVyaXBoZXJhbC9idHNlbnNvciBcCisgICAgdG9vbHMvM2RzcCBcCisgICAgdG9vbHMvbWdtdC10ZXN0ZXIgXAorICAgIHRvb2xzL2dhcC10ZXN0ZXIgXAorICAgIHRvb2xzL2wyY2FwLXRlc3RlciBcCisgICAgdG9vbHMvc2NvLXRlc3RlciBcCisgICAgdG9vbHMvc21wLXRlc3RlciBcCisgICAgdG9vbHMvaGNpLXRlc3RlciBcCisgICAgdG9vbHMvcmZjb21tLXRlc3RlciBcCisgICAgdG9vbHMvYm5lcC10ZXN0ZXIgXAorICAgIHRvb2xzL3VzZXJjaGFuLXRlc3RlciBcCisiCisKKyMgbm9pbnN0IHByb2dyYW1zIGluIE1ha2VmaWxlLnRvb2xzIHRoYXQgYXJlIGNvbmRpdGlvbmFsIG9uIFRPT0xTCisjIHN1cHBvcnQKK05PSU5TVF9UT09MU19CVCA/PSAiIFwKKyAgICB0b29scy9iZGFkZHIgXAorICAgIHRvb2xzL2F2aW5mbyBcCisgICAgdG9vbHMvYXZ0ZXN0IFwKKyAgICB0b29scy9zY290ZXN0IFwKKyAgICB0b29scy9hbXB0ZXN0IFwKKyAgICB0b29scy9od2RiIFwKKyAgICB0b29scy9oY2lldmVudG1hc2sgXAorICAgIHRvb2xzL2hjaXNlY2ZpbHRlciBcCisgICAgdG9vbHMvYnRpbmZvIFwKKyAgICB0b29scy9idHNub29wIFwKKyAgICB0b29scy9idHByb3h5IFwKKyAgICB0b29scy9idGlvdGVzdCBcCisgICAgdG9vbHMvYm5lcHRlc3QgXAorICAgIHRvb2xzL21jYXB0ZXN0IFwKKyAgICB0b29scy9jbHRlc3QgXAorICAgIHRvb2xzL29vYnRlc3QgXAorICAgIHRvb2xzL2FkdnRlc3QgXAorICAgIHRvb2xzL3NlcTJic2VxIFwKKyAgICB0b29scy9ub2tmdyBcCisgICAgdG9vbHMvY3JlYXRlLWltYWdlIFwKKyAgICB0b29scy9lZGR5c3RvbmUgXAorICAgIHRvb2xzL2liZWFjb24gXAorICAgIHRvb2xzL2J0Z2F0dC1jbGllbnQgXAorICAgIHRvb2xzL2J0Z2F0dC1zZXJ2ZXIgXAorICAgIHRvb2xzL3Rlc3QtcnVubmVyIFwKKyAgICB0b29scy9jaGVjay1zZWxmdGVzdCBcCisgICAgdG9vbHMvZ2F0dC1zZXJ2aWNlIFwKKyAgICBwcm9maWxlcy9pYXAvaWFwZCBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYnRwY2xpZW50JywgJ3Rvb2xzL2J0cGNsaWVudCcsICcnLCBkKX0gXAorIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2Nvbm5tYW4vY29ubm1hbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLmluYwppbmRleCBmYjM4YWI0Li5kM2VlYjNiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvY29ubm1hbi9jb25ubWFuLmluYwpAQCAtMTUsNyArMTUsNyBAQAogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgc3lzdGVtZCB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzCiAKLURFUEVORFMgID0gImRidXMgZ2xpYi0yLjAgcHBwIHJlYWRsaW5lIgorREVQRU5EUyAgPSAiZGJ1cyBnbGliLTIuMCBwcHAiCiAKIElOQ19QUiA9ICJyMjAiCiAKQEAgLTI3LDEzICsyNywxMSBAQAogICAgIC0tZW5hYmxlLWV0aGVybmV0IFwKICAgICAtLWVuYWJsZS10b29scyBcCiAgICAgLS1kaXNhYmxlLXBvbGtpdCBcCi0gICAgLS1lbmFibGUtY2xpZW50IFwKICIKIAotUEFDS0FHRUNPTkZJRyA/Pz0gIndpc3ByIFwKK1BBQ0tBR0VDT05GSUcgPz89ICJ3aXNwciBpcHRhYmxlcyBjbGllbnRcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnM2cgc3lzdGVtZCB3aWZpJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICdibHVleicsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIGlwdGFibGVzIFwKICIKIAogIyBJZiB5b3Ugd2FudCBDb25uTWFuIHRvIHN1cHBvcnQgVlBOLCBhZGQgZm9sbG93aW5nIHN0YXRlbWVudCBpbnRvCkBAIC01MSw5ICs0OSwxMCBAQAogUEFDS0FHRUNPTkZJR1twcHRwXSA9ICItLWVuYWJsZS1wcHRwIC0td2l0aC1wcHRwPSR7c2JpbmRpcn0vcHB0cCwtLWRpc2FibGUtcHB0cCwscHB0cC1saW51eCIKICMgV0lTUHIgc3VwcG9ydCBmb3IgbG9nZ2luZyBpbnRvIGhvdHNwb3RzLCByZXF1aXJlcyBUTFMKIFBBQ0tBR0VDT05GSUdbd2lzcHJdID0gIi0tZW5hYmxlLXdpc3ByLC0tZGlzYWJsZS13aXNwcixnbnV0bHMsIgotUEFDS0FHRUNPTkZJR1tuZnRhYmxlc10gPSAiLS13aXRoLWZpcmV3YWxsPW5mdGFibGVzICwsbGlibW5sIGxpYm5mdG5sLCxrZXJuZWwtbW9kdWxlLW5mLXRhYmxlcy1pcHY0IGtlcm5lbC1tb2R1bGUtbmZ0LWNoYWluLW5hdC1pcHY0IGtlcm5lbC1tb2R1bGUtbmZ0LWNoYWluLXJvdXRlLWlwdjQga2VybmVsLW1vZHVsZS1uZnQtbWV0YSBrZXJuZWwtbW9kdWxlLW5mdC1tYXNxLWlwdjQga2VybmVsLW1vZHVsZS1uZnQtbmF0IgorUEFDS0FHRUNPTkZJR1tuZnRhYmxlc10gPSAiLS13aXRoLWZpcmV3YWxsPW5mdGFibGVzICwsbGlibW5sIGxpYm5mdG5sLCxrZXJuZWwtbW9kdWxlLW5mLXRhYmxlcyBrZXJuZWwtbW9kdWxlLW5mdC1jaGFpbi1uYXQtaXB2NCBrZXJuZWwtbW9kdWxlLW5mdC1jaGFpbi1yb3V0ZS1pcHY0IGtlcm5lbC1tb2R1bGUtbmZ0LW1hc3EtaXB2NCBrZXJuZWwtbW9kdWxlLW5mdC1uYXQiCiBQQUNLQUdFQ09ORklHW2lwdGFibGVzXSA9ICItLXdpdGgtZmlyZXdhbGw9aXB0YWJsZXMgLCxpcHRhYmxlcyxpcHRhYmxlcyIKIFBBQ0tBR0VDT05GSUdbbmZjXSA9ICItLWVuYWJsZS1uZWFyZCwgLS1kaXNhYmxlLW5lYXJkLCBuZWFyZCwgbmVhcmQiCitQQUNLQUdFQ09ORklHW2NsaWVudF0gPSAiLS1lbmFibGUtY2xpZW50LC0tZGlzYWJsZS1jbGllbnQscmVhZGxpbmUiCiAKIElOSVRTQ1JJUFRfTkFNRSA9ICJjb25ubWFuIgogSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMDUgNSAyIDMgLiBzdG9wIDIyIDAgMSA2IC4iCkBAIC04Nyw3ICs4Niw2IEBACiAJaWYgWyAtZSAke0J9L3Rvb2xzL3dpc3ByIF07IHRoZW4KIAkJaW5zdGFsbCAtbSAwNzU1ICR7Qn0vdG9vbHMvd2lzcHIgJHtEfSR7YmluZGlyfQogCWZpCi0JaW5zdGFsbCAtbSAwNzU1ICR7Qn0vY2xpZW50L2Nvbm5tYW5jdGwgJHtEfSR7YmluZGlyfQogCiAJIyBXZSBkb24ndCBuZWVkIHRvIHBhY2thZ2UgYW4gZW1wdHkgZGlyZWN0b3J5CiAJcm1kaXIgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7bGliZGlyfS9jb25ubWFuL3NjcmlwdHMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC5pbmMKaW5kZXggYzQ2OTdiZS4uZDQ2MTMwZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC5pbmMKQEAgLTEwMCw2ICsxMDAsNyBAQAogUEFDS0FHRVMgKz0gImRoY3AtbGlicyBkaGNwLXNlcnZlciBkaGNwLXNlcnZlci1jb25maWcgZGhjcC1jbGllbnQgZGhjcC1yZWxheSBkaGNwLW9tc2hlbGwiCiAKIFBBQ0tBR0VTX3JlbW92ZSA9ICIke1BOfSIKK1JERVBFTkRTXyR7UE59LWNsaWVudCArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ2lwcm91dGUyJywgJycsIGQpfSIKIFJERVBFTkRTXyR7UE59LWRldiA9ICIiCiBSREVQRU5EU18ke1BOfS1zdGF0aWNkZXYgPSAiIgogRklMRVNfJHtQTn0tbGlicyA9ICIke2xpYmRpcn0vbGliZGhjcGN0bC5zby4wKiAke2xpYmRpcn0vbGlib21hcGkuc28uMCogJHtsaWJkaXJ9L2xpYmRoY3Auc28uMCoiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtRml4LWEtTlNVUERBVEUtY29tcGlsaW5nLWlzc3VlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAxLUZpeC1hLU5TVVBEQVRFLWNvbXBpbGluZy1pc3N1ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjEyYTExMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDEtRml4LWEtTlNVUERBVEUtY29tcGlsaW5nLWlzc3VlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotRnJvbSBhNTljYjk4YTQ3M2NhYTJhZmQ2NGQ3YWUzNjg0ODBiNmU5ZjkxYjNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWluZyBMaXUgPGxpdS5taW5nNTBAZ21haWwuY29tPgotRGF0ZTogVHVlLCAxNCBNYXkgMjAxOSAxMTowNzoxNSArMDIwMAotU3ViamVjdDogW1BBVENIXSBGaXggYSBOU1VQREFURSBjb21waWxpbmcgaXNzdWUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtQYXRjaCBzZW50IHRvOiBodHRwczovL2dpdGxhYi5pc2Mub3JnL2lzYy1wcm9qZWN0cy9kaGNwL2lzc3Vlcy8xNl0KLQotQSBmb2xsb3dpbmcgZXJyb3Igd2FzIG9ic2VydmVkIHdoZW4gTlNVUERBVEUgaXMgbm90IGRlZmluZWQ6Ci18IG9tYXBpcC9pc2NsaWIuYzogSW4gZnVuY3Rpb24gJ2Ruc19jbGllbnRfaW5pdCc6Ci18IG9tYXBpcC9pc2NsaWIuYzozNTY6MTg6IGVycm9yOiAnZGhjcF9jb250ZXh0X3Qge2FrYSBzdHJ1Y3QgZGhjcF9jb250ZXh0fScgaGFzIG5vIG1lbWJlciBuYW1lZCAnZG5zY2xpZW50JwotfCAgIGlmIChkaGNwX2dibF9jdHguZG5zY2xpZW50ID09IE5VTEwpIHsKLXwgICAgICAgICAgICAgICAgICAgXgotfCBvbWFwaXAvaXNjbGliLmM6MzYzOjI0OiBlcnJvcjogJ2RoY3BfY29udGV4dF90IHtha2Egc3RydWN0IGRoY3BfY29udGV4dH0nIGhhcyBubyBtZW1iZXIgbmFtZWQgJ2Ruc2NsaWVudCcKLXwgICAgICAgICAgICAmZGhjcF9nYmxfY3R4LmRuc2NsaWVudCwKLXwgICAgICAgICAgICAgICAgICAgICAgICAgXgotfCBvbWFwaXAvaXNjbGliLmM6MzY0OjI0OiBlcnJvcjogJ2RoY3BfY29udGV4dF90IHtha2Egc3RydWN0IGRoY3BfY29udGV4dH0nIGhhcyBubyBtZW1iZXIgbmFtZWQgJ3VzZV9sb2NhbDQnCi18ICAgICAgICAgICAgKGRoY3BfZ2JsX2N0eC51c2VfbG9jYWw0ID8KLXwgICAgICAgICAgICAgICAgICAgICAgICAgXgotfCBvbWFwaXAvaXNjbGliLmM6MzY1OjI1OiBlcnJvcjogJ2RoY3BfY29udGV4dF90IHtha2Egc3RydWN0IGRoY3BfY29udGV4dH0nIGhhcyBubyBtZW1iZXIgbmFtZWQgJ2xvY2FsNF9zb2NrYWRkcicKLXwgICAgICAgICAgICAgJmRoY3BfZ2JsX2N0eC5sb2NhbDRfc29ja2FkZHIKLXwgICAgICAgICAgICAgICAgICAgICAgICAgIF4KLXwgb21hcGlwL2lzY2xpYi5jOjM2NzoyNDogZXJyb3I6ICdkaGNwX2NvbnRleHRfdCB7YWthIHN0cnVjdCBkaGNwX2NvbnRleHR9JyBoYXMgbm8gbWVtYmVyIG5hbWVkICd1c2VfbG9jYWw2JwotfCAgICAgICAgICAgIChkaGNwX2dibF9jdHgudXNlX2xvY2FsNiA/Ci18ICAgICAgICAgICAgICAgICAgICAgICAgIF4KLXwgb21hcGlwL2lzY2xpYi5jOjM2ODoyNTogZXJyb3I6ICdkaGNwX2NvbnRleHRfdCB7YWthIHN0cnVjdCBkaGNwX2NvbnRleHR9JyBoYXMgbm8gbWVtYmVyIG5hbWVkICdsb2NhbDZfc29ja2FkZHInCi18ICAgICAgICAgICAgICZkaGNwX2dibF9jdHgubG9jYWw2X3NvY2thZGRyCi0KLUZpeCBpdCBieSBhZGRpbmcgTlNVUERBVEUgY29uZGl0aW9uYWwgY2hlY2tpbmcuCi0KLVNpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxsaXUubWluZzUwQGdtYWlsLmNvbT4KLS0tLQotIGluY2x1ZGVzL29tYXBpcC9pc2NsaWIuaCB8IDIgKysKLSBvbWFwaXAvaXNjbGliLmMgICAgICAgICAgfCAyICsrCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGVzL29tYXBpcC9pc2NsaWIuaCBiL2luY2x1ZGVzL29tYXBpcC9pc2NsaWIuaAotaW5kZXggNTM4YjkyNy4uNmMyMDU4NCAxMDA2NDQKLS0tLSBhL2luY2x1ZGVzL29tYXBpcC9pc2NsaWIuaAotKysrIGIvaW5jbHVkZXMvb21hcGlwL2lzY2xpYi5oCi1AQCAtMTQxLDYgKzE0MSw4IEBAIHZvaWQgaXNjbGliX2NsZWFudXAodm9pZCk7Ci0gdm9pZCBkaGNwX3NpZ25hbF9oYW5kbGVyKGludCBzaWduYWwpOwotIGV4dGVybiBpbnQgc2h1dGRvd25fc2lnbmFsOwotIAotKyNpZiBkZWZpbmVkIChOU1VQREFURSkKLSBpc2NfcmVzdWx0X3QgZG5zX2NsaWVudF9pbml0KCk7Ci0rI2VuZGlmCi0gCi0gI2VuZGlmIC8qIElTQ0xJQl9IICovCi1kaWZmIC0tZ2l0IGEvb21hcGlwL2lzY2xpYi5jIGIvb21hcGlwL2lzY2xpYi5jCi1pbmRleCBkYjNiODk1Li5jZTRiNGExIDEwMDY0NAotLS0tIGEvb21hcGlwL2lzY2xpYi5jCi0rKysgYi9vbWFwaXAvaXNjbGliLmMKLUBAIC0zNTEsNiArMzUxLDcgQEAgdm9pZCBkaGNwX3NpZ25hbF9oYW5kbGVyKGludCBzaWduYWwpIHsKLSAJfQotIH0KLSAKLSsjaWYgZGVmaW5lZCAoTlNVUERBVEUpCi0gaXNjX3Jlc3VsdF90IGRuc19jbGllbnRfaW5pdCgpIHsKLSAJaXNjX3Jlc3VsdF90IHJlc3VsdDsKLSAJaWYgKGRoY3BfZ2JsX2N0eC5kbnNjbGllbnQgPT0gTlVMTCkgewotQEAgLTM4NywzICszODgsNCBAQCBpc2NfcmVzdWx0X3QgZG5zX2NsaWVudF9pbml0KCkgewotIAotIAlyZXR1cm4gSVNDX1JfU1VDQ0VTUzsKLSB9Ci0rI2VuZGlmCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3AvMDAwMS1tYXN0ZXItQWRkZWQtaW5jbHVkZXMtb2YtbmV3LUJJTkQ5LWNvbXBhdGliaWxpdHktaGVhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAxLW1hc3Rlci1BZGRlZC1pbmNsdWRlcy1vZi1uZXctQklORDktY29tcGF0aWJpbGl0eS1oZWEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiYzE0MjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDAxLW1hc3Rlci1BZGRlZC1pbmNsdWRlcy1vZi1uZXctQklORDktY29tcGF0aWJpbGl0eS1oZWEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi1Gcm9tIDgxOTRkYWFiZmQ1OTBmMTc4MjVmMGM2MWU5NTM0YmVlNWM5OWNjODYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUaG9tYXMgTWFya3dhbGRlciA8dG1hcmtAaXNjLm9yZz4KLURhdGU6IEZyaSwgMTQgU2VwIDIwMTggMTM6NDE6NDEgLTA0MDAKLVN1YmplY3Q6IFttYXN0ZXJdIEFkZGVkIGluY2x1ZGVzIG9mIG5ldyBCSU5EOSBjb21wYXRpYmlsaXR5IGhlYWRlcnMKLQotICAgIE1lcmdlcyBpbiBydDQ4MDcyLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBBZHJpYW4gQnVuayA8YnVua0BzdHVzdGEuZGU+Ci0KLWRpZmYgLS1naXQgYS9pbmNsdWRlcy9vbWFwaXAvaXNjbGliLmggYi9pbmNsdWRlcy9vbWFwaXAvaXNjbGliLmgKLWluZGV4IDc1YTg3ZmY2Li41MzhiOTI3ZiAxMDA2NDQKLS0tLSBhL2luY2x1ZGVzL29tYXBpcC9pc2NsaWIuaAotKysrIGIvaW5jbHVkZXMvb21hcGlwL2lzY2xpYi5oCi1AQCAtNDgsNiArNDgsOSBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8bmV0ZGIuaD4KLSAKLSsjaW5jbHVkZSA8aXNjL2Jvb2xlYW4uaD4KLSsjaW5jbHVkZSA8aXNjL2ludC5oPgotKwotICNpbmNsdWRlIDxpc2MvYnVmZmVyLmg+Ci0gI2luY2x1ZGUgPGlzYy9sZXguaD4KLSAjaW5jbHVkZSA8aXNjL2xpYi5oPgotZGlmZiAtLWdpdCBhL2luY2x1ZGVzL29tYXBpcC9yZXN1bHQuaCBiL2luY2x1ZGVzL29tYXBpcC9yZXN1bHQuaAotaW5kZXggOTEyNDNlMWIuLjg2MDI5OGY2IDEwMDY0NAotLS0tIGEvaW5jbHVkZXMvb21hcGlwL3Jlc3VsdC5oCi0rKysgYi9pbmNsdWRlcy9vbWFwaXAvcmVzdWx0LmgKLUBAIC0yNiw2ICsyNiw3IEBACi0gI2lmbmRlZiBESENQX1JFU1VMVF9ICi0gI2RlZmluZSBESENQX1JFU1VMVF9IIDEKLSAKLSsjaW5jbHVkZSA8aXNjL2Jvb2xlYW4uaD4KLSAjaW5jbHVkZSA8aXNjL2xhbmcuaD4KLSAjaW5jbHVkZSA8aXNjL3Jlc3VsdGNsYXNzLmg+Ci0gI2luY2x1ZGUgPGlzYy90eXBlcy5oPgotZGlmZiAtLWdpdCBhL3NlcnZlci9kaGNwdjYuYyBiL3NlcnZlci9kaGNwdjYuYwotaW5kZXggYTcxMTBmOTguLmNkZTRmNjE3IDEwMDY0NAotLS0tIGEvc2VydmVyL2RoY3B2Ni5jCi0rKysgYi9zZXJ2ZXIvZGhjcHY2LmMKLUBAIC0xMDM0LDcgKzEwMzQsOCBAQCB2b2lkIGNoZWNrX3Bvb2w2X3RocmVzaG9sZChzdHJ1Y3QgcmVwbHlfc3RhdGUgKnJlcGx5LAotIAkJCQkgIHNoYXJlZF9uYW1lLAotIAkJCQkgIGluZXRfbnRvcChBRl9JTkVUNiwgJmxlYXNlLT5hZGRyLAotIAkJCQkJICAgIHRtcF9hZGRyLCBzaXplb2YodG1wX2FkZHIpKSwKLS0JCQkJICB1c2VkLCBjb3VudCk7Ci0rCQkJCSAgKGxvbmcgbG9uZyB1bnNpZ25lZCkodXNlZCksCi0rCQkJCSAgKGxvbmcgbG9uZyB1bnNpZ25lZCkoY291bnQpKTsKLSAJCX0KLSAJCXJldHVybjsKLSAJfQotQEAgLTEwNjYsNyArMTA2Nyw4IEBAIHZvaWQgY2hlY2tfcG9vbDZfdGhyZXNob2xkKHN0cnVjdCByZXBseV9zdGF0ZSAqcmVwbHksCi0gCQkgICJhZGRyZXNzOiAlczsgaGlnaCB0aHJlc2hvbGQgJWQlJSAlbGx1LyVsbHUuIiwKLSAJCSAgc2hhcmVkX25hbWUsCi0gCQkgIGluZXRfbnRvcChBRl9JTkVUNiwgJmxlYXNlLT5hZGRyLCB0bXBfYWRkciwgc2l6ZW9mKHRtcF9hZGRyKSksCi0tCQkgIHBvb2xoaWdoLCB1c2VkLCBjb3VudCk7Ci0rCQkgIHBvb2xoaWdoLCAobG9uZyBsb25nIHVuc2lnbmVkKSh1c2VkKSwKLSsJCSAgKGxvbmcgbG9uZyB1bnNpZ25lZCkoY291bnQpKTsKLSAKLSAJLyogaGFuZGxlIHRoZSBsb3cgdGhyZXNob2xkIG5vdywgaWYgd2UgZG9uJ3QKLSAJICogaGF2ZSBvbmUgd2UgZGVmYXVsdCB0byAwLiAqLwotQEAgLTE0MzYsMTIgKzE0MzgsMTUgQEAgcGlja192Nl9hZGRyZXNzKHN0cnVjdCByZXBseV9zdGF0ZSAqcmVwbHkpCi0gCQlsb2dfZGVidWcoIlVuYWJsZSB0byBwaWNrIGNsaWVudCBhZGRyZXNzOiAiCi0gCQkJICAibm8gYWRkcmVzc2VzIGF2YWlsYWJsZSAgLSBzaGFyZWQgbmV0d29yayAlczogIgotIAkJCSAgIiAyXjY0LTEgPCB0b3RhbCwgJWxsdSBhY3RpdmUsICAlbGx1IGFiYW5kb25lZCIsCi0tCQkJICBzaGFyZWRfbmFtZSwgYWN0aXZlIC0gYWJhbmRvbmVkLCBhYmFuZG9uZWQpOwotKwkJCSAgc2hhcmVkX25hbWUsIChsb25nIGxvbmcgdW5zaWduZWQpKGFjdGl2ZSAtIGFiYW5kb25lZCksCi0rCQkJICAobG9uZyBsb25nIHVuc2lnbmVkKShhYmFuZG9uZWQpKTsKLSAJfSBlbHNlIHsKLSAJCWxvZ19kZWJ1ZygiVW5hYmxlIHRvIHBpY2sgY2xpZW50IGFkZHJlc3M6ICIKLSAJCQkgICJubyBhZGRyZXNzZXMgYXZhaWxhYmxlICAtIHNoYXJlZCBuZXR3b3JrICVzOiAiCi0gCQkJICAiJWxsdSB0b3RhbCwgJWxsdSBhY3RpdmUsICAlbGx1IGFiYW5kb25lZCIsCi0tCQkJICBzaGFyZWRfbmFtZSwgdG90YWwsIGFjdGl2ZSAtIGFiYW5kb25lZCwgYWJhbmRvbmVkKTsKLSsJCQkgIHNoYXJlZF9uYW1lLCAobG9uZyBsb25nIHVuc2lnbmVkKSh0b3RhbCksCi0rCQkJICAobG9uZyBsb25nIHVuc2lnbmVkKShhY3RpdmUgLSBhYmFuZG9uZWQpLAotKwkJICAgICAgICAgIChsb25nIGxvbmcgdW5zaWduZWQpKGFiYW5kb25lZCkpOwotIAl9Ci0gCi0gCXJldHVybiBJU0NfUl9OT1JFU09VUkNFUzsKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcC8wMDA0LUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaAppbmRleCBiNzFjOTNkLi43YjU3NzMwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaApAQCAtODUsOSArODUsMTEgQEAKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KIC0tLSBkaGNwLTQuNC4xLm9yaWcvcmVsYXkvTWFrZWZpbGUuYW0KICsrKyBkaGNwLTQuNC4xL3JlbGF5L01ha2VmaWxlLmFtCi1AQCAtMSw0ICsxLDQgQEAKK0BAIC0xLDYgKzEsNiBAQAorIFNVQkRJUlMgPSAuIHRlc3RzCisKIC1BTV9DUFBGTEFHUyA9IC1ETE9DQUxTVEFURURJUj0nIkBsb2NhbHN0YXRlZGlyQCInCiArQU1fQ1BQRkxBR1MgPSAtRExPQ0FMU1RBVEVESVI9JyJAbG9jYWxzdGF0ZWRpckAiJyAtSSQodG9wX3NyY2RpcikvaW5jbHVkZXMKLSAKKwogIHNiaW5fUFJPR1JBTVMgPSBkaGNyZWxheQogIGRoY3JlbGF5X1NPVVJDRVMgPSBkaGNyZWxheS5jCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDIwNzc3Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvZGhjcC9kaGNwXzQuNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjMgKzAsMCBAQAotcmVxdWlyZSBkaGNwLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1kZWZpbmUtbWFjcm8tX1BBVEhfREhDUERfQ09ORi1hbmQtX1BBVEhfREhDTElFTlRfQ09OLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWRoY2xpZW50LWRidXMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDMtbGluay13aXRoLWxjcnlwdG8ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwNS1kaGNwLWNsaWVudC1maXgtaW52b2tlLWRoY2xpZW50LXNjcmlwdC1mYWlsZWQtb24tUmVhLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA3LUFkZC1jb25maWd1cmUtYXJndW1lbnQtdG8tbWFrZS10aGUtbGlieG1sMi1kZXBlbmRlbmMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDktcmVtb3ZlLWRoY2xpZW50LXNjcmlwdC1iYXNoLWRlcGVuZGVuY3kucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMTItZGhjcC1jb3JyZWN0LXRoZS1pbnRlbnRpb24tZm9yLXhtbDItbGliLXNlYXJjaC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAxMy1maXh1cF91c2VfbGliYmluZC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1tYXN0ZXItQWRkZWQtaW5jbHVkZXMtb2YtbmV3LUJJTkQ5LWNvbXBhdGliaWxpdHktaGVhLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1hLU5TVVBEQVRFLWNvbXBpbGluZy1pc3N1ZS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS13b3JrYXJvdW5kLWJ1c3lib3gtbGltaXRhdGlvbi1pbi1saW51eC1kaGNsaWVudC1zY3JpcHQucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMThjN2Y0ZGNiYjBhNjNkZjI1MDk4MjE2ZDQ3YjFlZGUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmEyMjUwODkyMmFiMzY3YjRhZjQ2NjRhMDQ3MmRjMjIwY2M5NjAzNDgyY2YzYzE2ZDlhZmYxNGYzYTc2YjYwOCIKLQotTERGTEFHU19hcHBlbmQgPSAiIC1wdGhyZWFkIgotCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHW2JpbmQtaHR0cHN0YXRzXSA9ICItLXdpdGgtbGlieG1sMiwtLXdpdGhvdXQtbGlieG1sMixsaWJ4bWwyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2RoY3AvZGhjcF80LjQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC40LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU2YTIwNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9kaGNwL2RoY3BfNC40LjIuYmIKQEAgLTAsMCArMSwyMSBAQAorcmVxdWlyZSBkaGNwLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1kZWZpbmUtbWFjcm8tX1BBVEhfREhDUERfQ09ORi1hbmQtX1BBVEhfREhDTElFTlRfQ09OLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWRoY2xpZW50LWRidXMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDMtbGluay13aXRoLWxjcnlwdG8ucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDQtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwNS1kaGNwLWNsaWVudC1maXgtaW52b2tlLWRoY2xpZW50LXNjcmlwdC1mYWlsZWQtb24tUmVhLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA3LUFkZC1jb25maWd1cmUtYXJndW1lbnQtdG8tbWFrZS10aGUtbGlieG1sMi1kZXBlbmRlbmMucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDktcmVtb3ZlLWRoY2xpZW50LXNjcmlwdC1iYXNoLWRlcGVuZGVuY3kucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMTItZGhjcC1jb3JyZWN0LXRoZS1pbnRlbnRpb24tZm9yLXhtbDItbGliLXNlYXJjaC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAxMy1maXh1cF91c2VfbGliYmluZC5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS13b3JrYXJvdW5kLWJ1c3lib3gtbGltaXRhdGlvbi1pbi1saW51eC1kaGNsaWVudC1zY3JpcHQucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmFmZGFmODQ5OGRjMWVkYWYzMDEyZWZkZDU4OWIzZTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWE3Y2NkNjRhMTZlNWU2OGY3YjVlMGY1MjdmZDA3MjQwYTI4OTJlYTUzZmUyNDU2MjBmNGY1ZjYwNzAwNDUyMSIKKworTERGTEFHU19hcHBlbmQgPSAiIC1wdGhyZWFkIgorCitQQUNLQUdFQ09ORklHID89ICIiCitQQUNLQUdFQ09ORklHW2JpbmQtaHR0cHN0YXRzXSA9ICItLXdpdGgtbGlieG1sMiwtLXdpdGhvdXQtbGlieG1sMixsaWJ4bWwyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2luZXR1dGlscy9pbmV0dXRpbHNfMS45LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaW5ldHV0aWxzL2luZXR1dGlsc18xLjkuNC5iYgppbmRleCA2ODRmYmUwLi5jYzk0MTBiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaW5ldHV0aWxzL2luZXR1dGlsc18xLjkuNC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaW5ldHV0aWxzL2luZXR1dGlsc18xLjkuNC5iYgpAQCAtMTQzLDExICsxNDMsMTUgQEAKIEFMVEVSTkFUSVZFXyR7UE59LWhvc3RuYW1lID0gImhvc3RuYW1lIgogQUxURVJOQVRJVkVfTElOS19OQU1FW2hvc3RuYW1lXSAgPSAiJHtiYXNlX2JpbmRpcn0vaG9zdG5hbWUiCiAKLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJob3N0bmFtZS4xIGRuc2RvbWFpbm5hbWUuMSBsb2dnZXIuMSBzeXNsb2dkLjgiCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiaG9zdG5hbWUuMSBkbnNkb21haW5uYW1lLjEgbG9nZ2VyLjEgc3lzbG9nZC44IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICB0ZnRwZC44IHRmdHAuMSB0ZWxuZXRkLjgiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbaG9zdG5hbWUuMV0gPSAiJHttYW5kaXJ9L21hbjEvaG9zdG5hbWUuMSIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtkbnNkb21haW5uYW1lLjFdID0gIiR7bWFuZGlyfS9tYW4xL2Ruc2RvbWFpbm5hbWUuMSIKIEFMVEVSTkFUSVZFX0xJTktfTkFNRVtsb2dnZXIuMV0gPSAiJHttYW5kaXJ9L21hbjEvbG9nZ2VyLjEiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbc3lzbG9nZC44XSA9ICIke21hbmRpcn0vbWFuOC9zeXNsb2dkLjgiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdGVsbmV0ZC44XSA9ICIke21hbmRpcn0vbWFuOC90ZWxuZXRkLjgiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdGZ0cGQuOF0gPSAiJHttYW5kaXJ9L21hbjgvdGZ0cGQuOCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt0ZnRwLjFdID0gIiR7bWFuZGlyfS9tYW4xL3RmdHAuMSIKIAogQUxURVJOQVRJVkVfJHtQTn0taWZjb25maWcgPSAiaWZjb25maWciCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbaWZjb25maWddICA9ICIke2Jhc2Vfc2JpbmRpcn0vaWZjb25maWciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyLmluYwppbmRleCBmYzMxYjg0Li40MDNkMjY0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTIuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMi5pbmMKQEAgLTE1LDEyICsxNSwxOSBAQAogCiBDTEVBTkJST0tFTiA9ICIxIgogCi1QQUNLQUdFQ09ORklHID8/PSAidGlwYyBlbGYiCitQQUNLQUdFQ09ORklHID8/PSAidGlwYyBlbGYgZGV2bGluayIKIFBBQ0tBR0VDT05GSUdbdGlwY10gPSAiLCxsaWJtbmwsIgogUEFDS0FHRUNPTkZJR1tlbGZdID0gIiwsZWxmdXRpbHMsIgorUEFDS0FHRUNPTkZJR1tkZXZsaW5rXSA9ICIsLGxpYm1ubCwiCiAKLUVYVFJBX09FTUFLRSA9ICJDQz0nJHtDQ30nIEtFUk5FTF9JTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9IERPQ0RJUj0ke2RvY2Rpcn0vaXByb3V0ZTIgU1VCRElSUz0nbGliIHRjIGlwIGJyaWRnZSBtaXNjIGdlbmwgXAotICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RpcGMnLCAndGlwYycsICcnLCBkKX0nIFNCSU5ESVI9JyR7YmFzZV9zYmluZGlyfScgTElCRElSPScke2xpYmRpcn0nIgorRVhUUkFfT0VNQUtFID0gIlwKKyAgICBDQz0nJHtDQ30nIFwKKyAgICBLRVJORUxfSU5DTFVERT0ke1NUQUdJTkdfSU5DRElSfSBcCisgICAgRE9DRElSPSR7ZG9jZGlyfS9pcHJvdXRlMiBcCisgICAgU1VCRElSUz0nbGliIHRjIGlwIGJyaWRnZSBtaXNjIGdlbmwgJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2RldmxpbmsgdGlwYycsIGQpfScgXAorICAgIFNCSU5ESVI9JyR7YmFzZV9zYmluZGlyfScgXAorICAgIExJQkRJUj0nJHtsaWJkaXJ9JyBcCisiCiAKIGRvX2NvbmZpZ3VyZV9hcHBlbmQgKCkgewogICAgIHNoIGNvbmZpZ3VyZSAke1NUQUdJTkdfSU5DRElSfQpAQCAtMzksMTQgKzQ2LDE4IEBACiAjIFRoZSAuc28gZmlsZXMgaW4gaXByb3V0ZTItdGMgYXJlIG1vZHVsZXMsIG5vdCB0cmFkaXRpb25hbCBsaWJyYXJpZXMKIElOU0FORV9TS0lQXyR7UE59LXRjID0gImRldi1zbyIKIAotUEFDS0FHRVMgPSsgIiR7UE59LXRjIFwKLSAgICAgICAgICAgICAke1BOfS1sbnN0YXQgXAotICAgICAgICAgICAgICR7UE59LWlmc3RhdCBcCi0gICAgICAgICAgICAgJHtQTn0tZ2VubCBcCi0gICAgICAgICAgICAgJHtQTn0tcnRhY2N0IFwKLSAgICAgICAgICAgICAke1BOfS1uc3RhdCBcCi0gICAgICAgICAgICAgJHtQTn0tc3MgXAotICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RpcGMnLCAnJHtQTn0tdGlwYycsICcnLCBkKX0iCitQQUNLQUdFUyA9KyAiXAorICAgICR7UE59LWRldmxpbmsgXAorICAgICR7UE59LWdlbmwgXAorICAgICR7UE59LWlmc3RhdCBcCisgICAgJHtQTn0tbG5zdGF0IFwKKyAgICAke1BOfS1uc3RhdCBcCisgICAgJHtQTn0tcnRhY2N0IFwKKyAgICAke1BOfS1zcyBcCisgICAgJHtQTn0tdGMgXAorICAgICR7UE59LXRpcGMgXAorIgorCiBGSUxFU18ke1BOfS10YyA9ICIke2Jhc2Vfc2JpbmRpcn0vdGMqIFwKICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS90Yy8qLnNvIgogRklMRVNfJHtQTn0tbG5zdGF0ID0gIiR7YmFzZV9zYmluZGlyfS9sbnN0YXQgXApAQCAtNTgsNiArNjksNyBAQAogRklMRVNfJHtQTn0tbnN0YXQgPSAiJHtiYXNlX3NiaW5kaXJ9L25zdGF0IgogRklMRVNfJHtQTn0tc3MgPSAiJHtiYXNlX3NiaW5kaXJ9L3NzIgogRklMRVNfJHtQTn0tdGlwYyA9ICIke2Jhc2Vfc2JpbmRpcn0vdGlwYyIKK0ZJTEVTXyR7UE59LWRldmxpbmsgPSAiJHtiYXNlX3NiaW5kaXJ9L2RldmxpbmsiCiAKIEFMVEVSTkFUSVZFXyR7UE59ID0gImlwIgogQUxURVJOQVRJVkVfVEFSR0VUW2lwXSA9ICIke2Jhc2Vfc2JpbmRpcn0vaXAuJHtCUE59IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzUuMy4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2lwcm91dGUyL2lwcm91dGUyXzUuMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTg2Y2JmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl81LjMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLXJlcXVpcmUgaXByb3V0ZTIuaW5jCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9uZXQvJHtCUE59LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtYWRkLW11c2wtd29ya2Fyb3VuZC5wYXRjaCBcCi0gICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjI3NDA0NDEzYzhkNmRiNjQ5ZDYxODhlYWQxZTVhNmUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2IxYzFlNDU5OTNhM2JkMjQzODU0M2ZkNDMzMmQ3MGYxNzI2YTZlNmZmOTdkYzYxM2E4MjU4Yzk5MzExN2IzZiIKLQotIyBDRkxBR1MgYXJlIGNvbXB1dGVkIGluIE1ha2VmaWxlIGFuZCByZWZlcmVuY2UgQ0NPUFRTCi0jCi1FWFRSQV9PRU1BS0VfYXBwZW5kID0gIiBDQ09QVFM9JyR7Q0ZMQUdTfSciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNS41LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXByb3V0ZTIvaXByb3V0ZTJfNS41LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWQwYWIxMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pcHJvdXRlMi9pcHJvdXRlMl81LjUuMC5iYgpAQCAtMCwwICsxLDEyIEBACityZXF1aXJlIGlwcm91dGUyLmluYworCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMvbmV0LyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJjLWNvbXBhdC5oLWFkZC1tdXNsLXdvcmthcm91bmQucGF0Y2ggXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImVlOGUyY2RiNDE2ZDRhOGVmMzk1MjVkMzlhYjdjMmQwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJhYzU0MzQzNWNhYzIwOGExMWRiNDRjOWNjOGUzNWFhOTAyYmVmZWY4NzUwNTk0NjU0ZWU3MTk0MWMzODhmN2IiCisKKyMgQ0ZMQUdTIGFyZSBjb21wdXRlZCBpbiBNYWtlZmlsZSBhbmQgcmVmZXJlbmNlIENDT1BUUworIworRVhUUkFfT0VNQUtFX2FwcGVuZCA9ICIgQ0NPUFRTPScke0NGTEFHU30gLWZjb21tb24nIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3L3NlcGFyYXRlLW9iamRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pdy9zZXBhcmF0ZS1vYmpkaXIucGF0Y2gKaW5kZXggZWIwMWE1YS4uMTc5ZmQ5MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3L3NlcGFyYXRlLW9iamRpci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXcvc2VwYXJhdGUtb2JqZGlyLnBhdGNoCkBAIC0xLDMgKzEsNiBAQAorRnJvbSBmZjlmMGE2MzFjOTlmYjZlMjY3N2MwMmJmNTcyYTVlNjljNzBmNWNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdoeWVvayBCYWUgPGNoYW5naHllb2suYmFlQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMjcgSmFuIDIwMjAgMjI6NDg6MDMgKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gU3VwcG9ydCBzZXBhcmF0aW9uIG9mIFNSQ0RJUiBhbmQgT0JKRElSCiAKIFR5cGljYWwgdXNlIG9mIFZQQVRIIHRvIGxvY2F0ZSB0aGUgc291cmNlcy4KQEAgLTExLDEyICsxNCwxMiBAQAogIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCAzM2FhZjZhLi45MDMwNzk2IDEwMDY0NAoraW5kZXggOTBmMjI1MS4uNzE0Y2RiOSAxMDA2NDQKIC0tLSBhL01ha2VmaWxlCiArKysgYi9NYWtlZmlsZQogQEAgLTEsNSArMSw5IEBACiAgTUFLRUZMQUdTICs9IC0tbm8tcHJpbnQtZGlyZWN0b3J5Ci0KKyAKICtTUkNESVIgPz0gJChkaXIgJChsYXN0d29yZCAkKE1BS0VGSUxFX0xJU1QpKSkKICtPQkpESVIgPz0gJChQV0QpCiArVlBBVEggPSAkKFNSQ0RJUikKQEAgLTI0LDE5ICsyNywyNCBAQAogIFBSRUZJWCA/PSAvdXNyCiAgU0JJTkRJUiA/PSAkKFBSRUZJWCkvc2JpbgogIE1BTkRJUiA/PSAkKFBSRUZJWCkvc2hhcmUvbWFuCi1AQCAtMTAzLDExICsxMDcsMTEgQEAgVkVSU0lPTl9PQkpTIDo9ICQoZmlsdGVyLW91dCB2ZXJzaW9uLm8sICQoT0JKUykpCitAQCAtOTIsNyArOTYsNyBAQCBhbGw6ICQoQUxMKQogIHZlcnNpb24uYzogdmVyc2lvbi5zaCAkKHBhdHN1YnN0ICUubywlLmMsJChWRVJTSU9OX09CSlMpKSBubDgwMjExLmggaXcuaCBNYWtlZmlsZSBcCiAgCQkkKHdpbGRjYXJkIC5naXQvaW5kZXggLmdpdC9yZWZzL3RhZ3MpCiAgCUAkKE5RKSAnIEdFTiAnICRACiAtCSQoUSkuL3ZlcnNpb24uc2ggJEAKICsJJChRKWNkICQoU1JDRElSKSAmJiAuL3ZlcnNpb24uc2ggJChPQkpESVIpLyRACi0KLSAlLm86ICUuYyBpdy5oIG5sODAyMTEuaAorIAorIG5sODAyMTEtY29tbWFuZHMuaW5jOiBubDgwMjExLmgKKyAJQCQoTlEpICcgR0VOICcgJEAKK0BAIC0xMDAsNyArMTA0LDcgQEAgbmw4MDIxMS1jb21tYW5kcy5pbmM6IG5sODAyMTEuaAorIAorICUubzogJS5jIGl3Lmggbmw4MDIxMS5oIG5sODAyMTEtY29tbWFuZHMuaW5jCiAgCUAkKE5RKSAnIENDICAnICRACiAtCSQoUSkkKENDKSAkKENGTEFHUykgJChDUFBGTEFHUykgLWMgLW8gJEAgJDwKICsJJChRKSQoQ0MpIC1JJChTUkNESVIpICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAtYyAtbyAkQCAkPAotCisgCiAgaWZlcSAoJChJV19BTkRST0lEX0JVSUxEKSwpCiAgaXc6CSQoT0JKUykKLS0tCi0yLjIwLjEgKEFwcGxlIEdpdC0xMTcpCistLSAKKzIuMjMuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXdfNS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3XzUuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjdmMTNmNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvaXcvaXdfNS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJubDgwMjExIGJhc2VkIENMSSBjb25maWd1cmF0aW9uIHV0aWxpdHkgZm9yIHdpcmVsZXNzIGRldmljZXMiCi1ERVNDUklQVElPTiA9ICJpdyBpcyBhIG5ldyBubDgwMjExIGJhc2VkIENMSSBjb25maWd1cmF0aW9uIHV0aWxpdHkgZm9yIFwKLXdpcmVsZXNzIGRldmljZXMuIEl0IHN1cHBvcnRzIGFsbW9zdCBhbGwgbmV3IGRyaXZlcnMgdGhhdCBoYXZlIGJlZW4gYWRkZWQgXAotdG8gdGhlIGtlcm5lbCByZWNlbnRseS4gIgotSE9NRVBBR0UgPSAiaHR0cDovL3dpcmVsZXNzLmtlcm5lbC5vcmcvZW4vdXNlcnMvRG9jdW1lbnRhdGlvbi9pdyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODc4NjE4YTVjNGFmMjVlOWI5M2VmMGJlMWE5M2Y3NzQiCi0KLURFUEVORFMgPSAibGlibmwiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9uZXR3b3JrL2l3LyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWl3LXZlcnNpb24uc2gtZG9uLXQtdXNlLWdpdC1kZXNjcmliZS1mb3ItdmVyc2lvbmluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zZXBhcmF0ZS1vYmpkaXIucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmQ0ZDFjMGVlMzRmM2E3YmRhMGU2YWFmY2Q3YWFmMzEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTc1YWJiZmNlODYzNDhjMGI3MGU3NzhjMTNhOTRjMGJmYzlhYmM3YTUwNmQyYmQ2MDgyNjE1ODNhZWVkZjY0YSIKLQotaW5oZXJpdCBwa2djb25maWcKLQotRVhUUkFfT0VNQUtFID0gIlwKLSAgICAtZiAnJHtTfS9NYWtlZmlsZScgXAotICAgIFwKLSAgICAnUFJFRklYPSR7cHJlZml4fScgXAotICAgICdTQklORElSPSR7c2JpbmRpcn0nIFwKLSAgICAnTUFORElSPSR7bWFuZGlyfScgXAotIgotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2l3L2l3XzUuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pd181LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWY1OGU0OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9pdy9pd181LjQuYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJubDgwMjExIGJhc2VkIENMSSBjb25maWd1cmF0aW9uIHV0aWxpdHkgZm9yIHdpcmVsZXNzIGRldmljZXMiCitERVNDUklQVElPTiA9ICJpdyBpcyBhIG5ldyBubDgwMjExIGJhc2VkIENMSSBjb25maWd1cmF0aW9uIHV0aWxpdHkgZm9yIFwKK3dpcmVsZXNzIGRldmljZXMuIEl0IHN1cHBvcnRzIGFsbW9zdCBhbGwgbmV3IGRyaXZlcnMgdGhhdCBoYXZlIGJlZW4gYWRkZWQgXAordG8gdGhlIGtlcm5lbCByZWNlbnRseS4gIgorSE9NRVBBR0UgPSAiaHR0cDovL3dpcmVsZXNzLmtlcm5lbC5vcmcvZW4vdXNlcnMvRG9jdW1lbnRhdGlvbi9pdyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODc4NjE4YTVjNGFmMjVlOWI5M2VmMGJlMWE5M2Y3NzQiCisKK0RFUEVORFMgPSAibGlibmwiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5rZXJuZWwub3JnL3B1Yi9zb2Z0d2FyZS9uZXR3b3JrL2l3LyR7QlB9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWl3LXZlcnNpb24uc2gtZG9uLXQtdXNlLWdpdC1kZXNjcmliZS1mb3ItdmVyc2lvbmluZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9zZXBhcmF0ZS1vYmpkaXIucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDhhNGY1ODFhMzlkYzYyZmE4NWQzYWY3OTZkODQ0YjYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTQzY2QyNDQ2YTZjNzI0MmZkZWQzNzY2ZDA1NGFiMmEyMTRhMzUxNGI5YThiN2U5NDJmZWQ4ZmIxM2MxMzcwYyIKKworaW5oZXJpdCBwa2djb25maWcKKworRVhUUkFfT0VNQUtFID0gIlwKKyAgICAtZiAnJHtTfS9NYWtlZmlsZScgXAorICAgIFwKKyAgICAnUFJFRklYPSR7cHJlZml4fScgXAorICAgICdTQklORElSPSR7c2JpbmRpcn0nIFwKKyAgICAnTUFORElSPSR7bWFuZGlyfScgXAorIgorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L2xpYm5zcy1tZG5zL2xpYm5zcy1tZG5zXzAuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibnNzLW1kbnMvbGlibnNzLW1kbnNfMC4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTUzNTA1OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibnNzLW1kbnMvbGlibnNzLW1kbnNfMC4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVNVTU1BUlkgPSAiTmFtZSBTZXJ2aWNlIFN3aXRjaCBtb2R1bGUgZm9yIE11bHRpY2FzdCBETlMgKHplcm9jb25mKSBuYW1lIHJlc29sdXRpb24iCi1IT01FUEFHRSA9ICJodHRwOi8vMHBvaW50ZXIuZGUvbGVubmFydC9wcm9qZWN0cy9uc3MtbWRucy8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEiCi0KLURFUEVORFMgPSAiYXZhaGkiCi1QUiA9ICJyNyIKLQotU1JDX1VSSSA9ICJodHRwOi8vMHBvaW50ZXIuZGUvbGVubmFydC9wcm9qZWN0cy9uc3MtbWRucy9uc3MtbWRucy0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwMzkzOGYxNzY0NmVmYmI1MGFhNzBiYTVmOTlmNTFkNyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZTY4M2MyZTdjMzkyMTgxNDcwNmQ2MmZiYmQzZTljYmY0OTNhNzVmYTAwMjU1ZTBlNzE1NTA4ZDgxMzRmYTZkIgotCi1TID0gIiR7V09SS0RJUn0vbnNzLW1kbnMtJHtQVn0iCi0KLWxvY2Fsc3RhdGVkaXIgPSAiLyIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbCA9ICdudWxsJwotCi1FWFRSQV9PRUNPTkYgPSAiLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0gLS1kaXNhYmxlLWx5bnggLS1lbmFibGUtYXZhaGkiCi0KLSMgc3VwcHJlc3Mgd2FybmluZywgYnV0IGRvbid0IGJvdGhlciB3aXRoIGF1dG9uYW1lcgotTEVBRF9TT05BTUUgPSAibGlibnNzX21kbnMuc28iCi1ERUJJQU5OQU1FXyR7UE59ID0gImxpYm5zcy1tZG5zIgotCi1SREVQRU5EU18ke1BOfSA9ICJhdmFoaS1kYWVtb24iCi0KLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0Jc2VkICcKLQkJL15ob3N0czovICFiCi0JCS9cPG1kbnNcKDRcfDZcKVw/XChfbWluaW1hbFwpXD9cPi8gYgotCQlzL1woW1s6Ymxhbms6XV1cK1wpZG5zXD4vXDFtZG5zNF9taW5pbWFsIFtOT1RGT1VORD1yZXR1cm5dIGRucy9nCi0JCScgLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKLX0KLQotcGtnX3ByZXJtXyR7UE59ICgpIHsKLQlzZWQgJwotCQkvXmhvc3RzOi8gIWIKLQkJcy9bWzpibGFuazpdXVwrbWRuc1woNFx8NlwpXD9cKF9taW5pbWFsXCggXFtOT1RGT1VORD1yZXR1cm5cXVwpXD9cKVw/Ly9nCi0JCScgLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9saWJuc3MtbWRucy9saWJuc3MtbWRuc18wLjE0LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibnNzLW1kbnMvbGlibnNzLW1kbnNfMC4xNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlNDQ2MDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbGlibnNzLW1kbnMvbGlibnNzLW1kbnNfMC4xNC4xLmJiCkBAIC0wLDAgKzEsMzggQEAKK1NVTU1BUlkgPSAiTmFtZSBTZXJ2aWNlIFN3aXRjaCBtb2R1bGUgZm9yIE11bHRpY2FzdCBETlMgKHplcm9jb25mKSBuYW1lIHJlc29sdXRpb24iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGF0aGlhdC9uc3MtbWRucyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSIKKworREVQRU5EUyA9ICJhdmFoaSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2xhdGhpYXQvbnNzLW1kbnMgXAorICAgICAgICAgICAiCisKK1NSQ1JFViA9ICI0MWM5YzVlNzhmMjg3ZWQ0YjQxYWM0MzhjMTg3M2ZhNzFiZmE3MGFlIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworQ09NUEFUSUJMRV9IT1NUX2xpYmMtbXVzbCA9ICdudWxsJworCitFWFRSQV9PRUNPTkYgPSAiLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0iCisKK1JERVBFTkRTXyR7UE59ID0gImF2YWhpLWRhZW1vbiIKKworcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKKwlzZWQgJworCQkvXmhvc3RzOi8gIWIKKwkJL1w8bWRuc1woNFx8NlwpXD9cKF9taW5pbWFsXClcP1w+LyBiCisJCXMvXChbWzpibGFuazpdXVwrXClkbnNcPi9cMW1kbnM0X21pbmltYWwgW05PVEZPVU5EPXJldHVybl0gZG5zL2cKKwkJJyAtaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgorfQorCitwa2dfcHJlcm1fJHtQTn0gKCkgeworCXNlZCAnCisJCS9eaG9zdHM6LyAhYgorCQlzL1tbOmJsYW5rOl1dXCttZG5zXCg0XHw2XClcP1woX21pbmltYWxcKCBcW05PVEZPVU5EPXJldHVyblxdXClcP1wpXD8vL2cKKwkJJyAtaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1Eb24tdC1idWlsZC10b29scy13aXRoLUNDX0ZPUl9CVUlMRC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtRG9uLXQtYnVpbGQtdG9vbHMtd2l0aC1DQ19GT1JfQlVJTEQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIzYmMzZWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1Eb24tdC1idWlsZC10b29scy13aXRoLUNDX0ZPUl9CVUlMRC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gNzkwMTlkOTc2NTg0YzU5OGY4ZDBhOWQ4ZGU0M2M5ODk5NDZmOTc0YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhc2NhbCBCYWNoIDxwYXNjYWwuYmFjaEBzaWVtZW5zLmNvbT4KLURhdGU6IFdlZCwgMTMgRmViIDIwMTkgMDk6Mjg6MDcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRG9uJ3QgYnVpbGQgdG9vbHMgd2l0aCBDQ19GT1JfQlVJTEQKLQotVGhlIHRvb2xzIGFyZSBpbnRlbmRlZCBmb3IgdGhlIHRhcmdldCBub3QgZm9yIHRoZSBob3N0LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUGFzY2FsIEJhY2ggPHBhc2NhbC5iYWNoQHNpZW1lbnMuY29tPgotLS0tCi0gdG9vbHMvbG9ja3Rlc3QvTWFrZWZpbGUuYW0gfCAxIC0KLSB0b29scy9ycGNnZW4vTWFrZWZpbGUuYW0gICB8IDEgLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rvb2xzL2xvY2t0ZXN0L01ha2VmaWxlLmFtIGIvdG9vbHMvbG9ja3Rlc3QvTWFrZWZpbGUuYW0KLWluZGV4IDMxNTY4MTUuLjg3ZDBiYWMgMTAwNjQ0Ci0tLS0gYS90b29scy9sb2NrdGVzdC9NYWtlZmlsZS5hbQotKysrIGIvdG9vbHMvbG9ja3Rlc3QvTWFrZWZpbGUuYW0KLUBAIC0xLDYgKzEsNSBAQAotICMjIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b21ha2UgdG8gcHJvZHVjZSBNYWtlZmlsZS5pbgotIAotLUNDPSQoQ0NfRk9SX0JVSUxEKQotIExJQlRPT0wgPSBATElCVE9PTEAgLS10YWc9Q0MKLSAKLSBub2luc3RfUFJPR1JBTVMgPSB0ZXN0bGsKLWRpZmYgLS1naXQgYS90b29scy9ycGNnZW4vTWFrZWZpbGUuYW0gYi90b29scy9ycGNnZW4vTWFrZWZpbGUuYW0KLWluZGV4IDhhOWVjODkuLjNlMDkyYzkgMTAwNjQ0Ci0tLS0gYS90b29scy9ycGNnZW4vTWFrZWZpbGUuYW0KLSsrKyBiL3Rvb2xzL3JwY2dlbi9NYWtlZmlsZS5hbQotQEAgLTEsNiArMSw1IEBACi0gIyMgUHJvY2VzcyB0aGlzIGZpbGUgd2l0aCBhdXRvbWFrZSB0byBwcm9kdWNlIE1ha2VmaWxlLmluCi0gCi0tQ0M9JChDQ19GT1JfQlVJTEQpCi0gTElCVE9PTCA9IEBMSUJUT09MQCAtLXRhZz1DQwotIAotIG5vaW5zdF9QUk9HUkFNUyA9IHJwY2dlbgotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1GaXgtaW5jbHVkZS1vcmRlci1iZXR3ZWVuLWNvbmZpZy5oLWFuZC1zdGF0LmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLUZpeC1pbmNsdWRlLW9yZGVyLWJldHdlZW4tY29uZmlnLmgtYW5kLXN0YXQuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2IwZjkzNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLUZpeC1pbmNsdWRlLW9yZGVyLWJldHdlZW4tY29uZmlnLmgtYW5kLXN0YXQuaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1NiArMCwwIEBACi1Gcm9tIDJmYmM2MmUyYTEzZmMyMmI2YWU0OTEwZTI5NWEyYzEwZmI3OTA0ODYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBab2x0YW4gS2FyY2FnaSA8emtyNzQzMkBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEyIEF1ZyAyMDE5IDEzOjI3OjE2IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBpbmNsdWRlIG9yZGVyIGJldHdlZW4gY29uZmlnLmggYW5kIHN0YXQuaAotCi1BdCBsZWFzdCBvbiBBcmNoIGxpbnV4IEFSTSwgdGhlIGRlZmluaXRpb24gb2Ygc3RydWN0IHN0YXQgaW4gc3RhdC5oIGRlcGVuZHMKLW9uIF9fVVNFX0ZJTEVfT0ZGU0VUNjQuIFRoaXMgc3ltYm9sIGNvbWVzIGZyb20gY29uZmlnLmggd2hlbiBkZWZpbmVkLAotdGhlcmVmb3JlIGNvbmZpZy5oIG11c3QgYWx3YXlzIGJlIGluY2x1ZGVkIGJlZm9yZSBzdGF0LmguIEZpeCBhbGwKLW9jY3VycmVuY2VzIHdoZXJlIHRoZSBvcmRlciBpcyB3cm9uZyBieSBtb3ZpbmcgY29uZmlnLmggdG8gdGhlIHRvcC4KLQotVGhpcyBmaXhlcyB0aGUgY2xpZW50IHNpZGUgZXJyb3IgIlN0YWxlIGZpbGUgaGFuZGxlIiB3aGVuIG1vdW50aW5nIGZyb20KLWEgc2VydmVyIHJ1bm5pbmcgQXJjaCBMaW51eCBBUk0uCi0KLVNpZ25lZC1vZmYtYnk6IFpvbHRhbiBLYXJjYWdpIDx6a3I3NDMyQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFN0ZXZlIERpY2tzb24gPHN0ZXZlZEByZWRoYXQuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cDovL2dpdC5saW51eC1uZnMub3JnLz9wPXN0ZXZlZC9uZnMtdXRpbHMuZ2l0O2E9Y29tbWl0O2g9MmZiYzYyZTJhMTNmYzIyYjZhZTQ5MTBlMjk1YTJjMTBmYjc5MDQ4Nl0KLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gc3VwcG9ydC9taXNjL25mc2RfcGF0aC5jICAgICAgICAgfCA1ICsrKystCi0gc3VwcG9ydC9taXNjL3hzdGF0LmMgICAgICAgICAgICAgfCA1ICsrKystCi0gc3VwcG9ydC9uZnMvY29uZmZpbGUuYyAgICAgICAgICAgfCA4ICsrKysrKystCi0gdXRpbHMvYmxrbWFwZC9kZXZpY2UtZGlzY292ZXJ5LmMgfCA4ICsrKystLS0tCi0gdXRpbHMvaWRtYXBkL2lkbWFwZC5jICAgICAgICAgICAgfCA4ICsrKystLS0tCi0gNSBmaWxlcyBjaGFuZ2VkLCAyMyBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N1cHBvcnQvbWlzYy9uZnNkX3BhdGguYyBiL3N1cHBvcnQvbWlzYy9uZnNkX3BhdGguYwotaW5kZXggODRlNDgwMi4uZjA3OGE2NiAxMDA2NDQKLS0tLSBhL3N1cHBvcnQvbWlzYy9uZnNkX3BhdGguYwotKysrIGIvc3VwcG9ydC9taXNjL25mc2RfcGF0aC5jCi1AQCAtMSwzICsxLDcgQEAKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlIDxjb25maWcuaD4KLSsjZW5kaWYKLSsKLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci1AQCAtNSw3ICs5LDYgQEAKLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotIAotLSNpbmNsdWRlICJjb25maWcuaCIKLSAjaW5jbHVkZSAiY29uZmZpbGUuaCIKLSAjaW5jbHVkZSAieG1hbGxvYy5oIgotICNpbmNsdWRlICJ4bG9nLmgiCi1kaWZmIC0tZ2l0IGEvc3VwcG9ydC9taXNjL3hzdGF0LmMgYi9zdXBwb3J0L21pc2MveHN0YXQuYwotaW5kZXggZmEwNDc4OC4uNGM5OTdlZSAxMDA2NDQKLS0tLSBhL3N1cHBvcnQvbWlzYy94c3RhdC5jCi0rKysgYi9zdXBwb3J0L21pc2MveHN0YXQuYwotQEAgLTEsMyArMSw3IEBACi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSA8Y29uZmlnLmg+Ci0rI2VuZGlmCi0rCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxmY250bC5oPgotQEAgLTUsNyArOSw2IEBACi0gI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gCi0tI2luY2x1ZGUgImNvbmZpZy5oIgotICNpbmNsdWRlICJ4c3RhdC5oIgotIAotICNpZmRlZiBIQVZFX0ZTVEFUQVQKLWRpZmYgLS1naXQgYS9zdXBwb3J0L25mcy9jb25mZmlsZS5jIGIvc3VwcG9ydC9uZnMvY29uZmZpbGUuYwotaW5kZXggYjY0MDBiZS4uNmJhOGEzNSAxMDA2NDQKLS0tLSBhL3N1cHBvcnQvbmZzL2NvbmZmaWxlLmMKLSsrKyBiL3N1cHBvcnQvbmZzL2NvbmZmaWxlLmMKLUBAIC01MDAsNyArNTAwLDcgQEAgY29uZl9yZWFkZmlsZShjb25zdCBjaGFyICpwYXRoKQotIAotIAlpZiAoKHN0YXQgKHBhdGgsICZzYikgPT0gMCkgfHwgKGVycm5vICE9IEVOT0VOVCkpIHsKLSAJCWNoYXIgKm5ld19jb25mX2FkZHIgPSBOVUxMOwotLQkJc2l6ZV90IHN6ID0gc2Iuc3Rfc2l6ZTsKLSsJCW9mZl90IHN6OwotIAkJaW50IGZkID0gb3BlbiAocGF0aCwgT19SRE9OTFksIDApOwotIAotIAkJaWYgKGZkID09IC0xKSB7Ci1AQCAtNTE3LDYgKzUxNywxMSBAQCBjb25mX3JlYWRmaWxlKGNvbnN0IGNoYXIgKnBhdGgpCi0gCi0gCQkvKiBvbmx5IGFmdGVyIHdlIGhhdmUgdGhlIGxvY2ssIGNoZWNrIHRoZSBmaWxlIHNpemUgcmVhZHkgdG8gcmVhZCBpdCAqLwotIAkJc3ogPSBsc2VlayhmZCwgMCwgU0VFS19FTkQpOwotKwkJaWYgKHN6IDwgMCkgewotKwkJCXhsb2dfd2FybigiY29uZl9yZWFkZmlsZTogdW5hYmxlIHRvIGRldGVybWluZSBmaWxlIHNpemU6ICVzIiwKLSsJCQkJICBzdHJlcnJvcihlcnJubykpOwotKwkJCWdvdG8gZmFpbDsKLSsJCX0KLSAJCWxzZWVrKGZkLCAwLCBTRUVLX1NFVCk7Ci0gCi0gCQluZXdfY29uZl9hZGRyID0gbWFsbG9jKHN6KzEpOwotQEAgLTIxNjIsNiArMjE2Nyw3IEBAIGNvbmZfd3JpdGUoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKnNlY3Rpb24sIGNvbnN0IGNoYXIgKmFyZywKLSAJcmV0ID0gMDsKLSAKLSBjbGVhbnVwOgotKwlmbHVzaF9vdXRxdWV1ZSgmaW5xdWV1ZSwgTlVMTCk7Ci0gCWZsdXNoX291dHF1ZXVlKCZvdXRxdWV1ZSwgTlVMTCk7Ci0gCi0gCWlmIChidWZmKQotZGlmZiAtLWdpdCBhL3V0aWxzL2Jsa21hcGQvZGV2aWNlLWRpc2NvdmVyeS5jIGIvdXRpbHMvYmxrbWFwZC9kZXZpY2UtZGlzY292ZXJ5LmMKLWluZGV4IGU4MTE3MDMuLmY1ZjliMTAgMTAwNjQ0Ci0tLS0gYS91dGlscy9ibGttYXBkL2RldmljZS1kaXNjb3ZlcnkuYwotKysrIGIvdXRpbHMvYmxrbWFwZC9kZXZpY2UtZGlzY292ZXJ5LmMKLUBAIC0yNiw2ICsyNiwxMCBAQAotICAqIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCi0gICovCi0gCi0rI2lmZGVmIEhBVkVfQ09ORklHX0gKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0rI2VuZGlmIC8qIEhBVkVfQ09ORklHX0ggKi8KLSsKLSAjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLUBAIC01MSwxMCArNTUsNiBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxsaWJkZXZtYXBwZXIuaD4KLSAKLS0jaWZkZWYgSEFWRV9DT05GSUdfSAotLSNpbmNsdWRlICJjb25maWcuaCIKLS0jZW5kaWYgLyogSEFWRV9DT05GSUdfSCAqLwotLQotICNpbmNsdWRlICJkZXZpY2UtZGlzY292ZXJ5LmgiCi0gI2luY2x1ZGUgInhjb21tb24uaCIKLSAjaW5jbHVkZSAibmZzbGliLmgiCi1kaWZmIC0tZ2l0IGEvdXRpbHMvaWRtYXBkL2lkbWFwZC5jIGIvdXRpbHMvaWRtYXBkL2lkbWFwZC5jCi1pbmRleCA2MmUzN2I4Li4yNjdhY2VhIDEwMDY0NAotLS0tIGEvdXRpbHMvaWRtYXBkL2lkbWFwZC5jCi0rKysgYi91dGlscy9pZG1hcGQvaWRtYXBkLmMKLUBAIC0zNCw2ICszNCwxMCBAQAotICAqICBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KLSAgKi8KLSAKLSsjaWZkZWYgSEFWRV9DT05GSUdfSAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsjZW5kaWYgLyogSEFWRV9DT05GSUdfSCAqLwotKwotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSAjaW5jbHVkZSA8c3lzL2lub3RpZnkuaD4KLUBAIC02MiwxMCArNjYsNiBAQAotICNpbmNsdWRlIDxsaWJnZW4uaD4KLSAjaW5jbHVkZSA8bmZzaWRtYXAuaD4KLSAKLS0jaWZkZWYgSEFWRV9DT05GSUdfSAotLSNpbmNsdWRlICJjb25maWcuaCIKLS0jZW5kaWYgLyogSEFWRV9DT05GSUdfSCAqLwotLQotICNpbmNsdWRlICJ4bG9nLmgiCi0gI2luY2x1ZGUgImNvbmZmaWxlLmgiCi0gI2luY2x1ZGUgInF1ZXVlLmgiCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtTWFrZWZpbGUuYW0tZml4LXVuZGVmaW5lZC1mdW5jdGlvbi1mb3ItbGlibnNtLmEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy8wMDAxLU1ha2VmaWxlLmFtLWZpeC11bmRlZmluZWQtZnVuY3Rpb24tZm9yLWxpYm5zbS5hLnBhdGNoCmluZGV4IGZjYjBlOTkuLmJkMzUwMTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtTWFrZWZpbGUuYW0tZml4LXVuZGVmaW5lZC1mdW5jdGlvbi1mb3ItbGlibnNtLmEucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLWZ1bmN0aW9uLWZvci1saWJuc20uYS5wYXRjaApAQCAtMjgsMTAgKzI4LDEwIEBACiBTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KIC0tLQogIHN1cHBvcnQvbWlzYy9NYWtlZmlsZS5hbSB8ICAgMiArLQotIHN1cHBvcnQvbWlzYy9maWxlLmMgICAgICB8IDExMSAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBzdXBwb3J0L21pc2MvZmlsZS5jICAgICAgfCAxMTUgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCiAgc3VwcG9ydC9taXNjL21pc2MuYyAgICAgIHwgMTExICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogIHN1cHBvcnQvbnNtL01ha2VmaWxlLmFtICB8ICAgMiArLQotIDQgZmlsZXMgY2hhbmdlZCwgMTEzIGluc2VydGlvbnMoKyksIDExMyBkZWxldGlvbnMoLSkKKyA0IGZpbGVzIGNoYW5nZWQsIDExMyBpbnNlcnRpb25zKCspLCAxMTcgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zdXBwb3J0L21pc2MvTWFrZWZpbGUuYW0gYi9zdXBwb3J0L21pc2MvTWFrZWZpbGUuYW0KIGluZGV4IGY5OTkzZTMuLjhiMGU5ZGIgMTAwNjQ0CkBAIC00OCwxMCArNDgsMTAgQEAKICBNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9IE1ha2VmaWxlLmluCiBkaWZmIC0tZ2l0IGEvc3VwcG9ydC9taXNjL2ZpbGUuYyBiL3N1cHBvcnQvbWlzYy9maWxlLmMKIGRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggZTdjMzgxOS4uMDAwMDAwMAoraW5kZXggMDZmNmJiMi4uMDAwMDAwMAogLS0tIGEvc3VwcG9ydC9taXNjL2ZpbGUuYwogKysrIC9kZXYvbnVsbAotQEAgLTEsMTExICswLDAgQEAKK0BAIC0xLDExNSArMCwwIEBACiAtLyoKIC0gKiBDb3B5cmlnaHQgMjAwOSBPcmFjbGUuICBBbGwgcmlnaHRzIHJlc2VydmVkLgogLSAqIENvcHlyaWdodCAyMDE3IFJlZCBIYXQsIEluYy4gIEFsbCByaWdodHMgcmVzZXJ2ZWQuCkBAIC03Miw2ICs3MiwxMCBAQAogLSAqIGFsb25nIHdpdGggbmZzLXV0aWxzLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgogLSAqLwogLQorLSNpZmRlZiBIQVZFX0NPTkZJR19ICistI2luY2x1ZGUgPGNvbmZpZy5oPgorLSNlbmRpZgorLQogLSNpbmNsdWRlIDxzeXMvc3RhdC5oPgogLQogLSNpbmNsdWRlIDxzdHJpbmcuaD4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzLzAwMDEtY29uZmlndXJlLmFjLURvLW5vdC1mYXRhbGl6ZS1XbWlzc2luZy1wcm90b3R5cGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1jb25maWd1cmUuYWMtRG8tbm90LWZhdGFsaXplLVdtaXNzaW5nLXByb3RvdHlwZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxNGYwNzguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvMDAwMS1jb25maWd1cmUuYWMtRG8tbm90LWZhdGFsaXplLVdtaXNzaW5nLXByb3RvdHlwZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MCArMCwwIEBACi1Gcm9tIDY2NDcxZmJmNzEwNjkxN2RhN2ExNTM2YjE4YTBhNzdkMDc0Nzk3NzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNaW5nbGkgWXUgPE1pbmdsaS5ZdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAxNyBEZWMgMjAxOCAxNToyOTo0NyArMDgwMAotU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IERvIG5vdCBmYXRhbGl6ZSAtV21pc3NpbmctcHJvdG90eXBlcwotCi1UaGVyZSBjb21lcyBiZWxvdyBlcnJvciB3aGVuIHJ1biAibWFrZSAtQyB0ZXN0cy9uc21fY2xpZW50IG5zbV9jbGllbnQiCi18IG5sbV9zbV9pbnRlcl9zdmMuYzoyMDoxOiBlcnJvcjogbm8gcHJldmlvdXMgcHJvdG90eXBlIGZvciAnbmxtX3NtX3Byb2dfMycgWy1XZXJyb3I9bWlzc2luZy1wcm90b3R5cGVzXQotCi1JdCBpcyBiZWNhdXNlIHJwY2dlbiBkb2Vzbid0IGdlbmVyYXRlIC1XbWlzc2luZy1wcm90b3R5cGVzCi1mcmVlIGNvZGUgZm9yIG5sbV9zbV9pbnRlcl9zdmMuYyB3aXRoIGJlbG93IGxvZ2ljCi1pbiB0ZXN0cy9uc21fY2xpZW50L01ha2VmaWxlLmFtCi1bc25pcF0KLUdFTkZJTEVTX1NWQyAgICA9IG5sbV9zbV9pbnRlcl9zdmMuYwotW3NuaXBdCi0kKEdFTkZJTEVTX1NWQyk6ICVfc3ZjLmM6ICUueCAkKFJQQ0dFTikKLSAgICAgICAgdGVzdCAtZiAkQCAmJiBybSAtcmYgJEAgfHwgdHJ1ZQotICAgICAgICAkKFJQQ0dFTikgLW0gLW8gJEAgJDwKLQotU28gYWRkIHRoZSBsb2dpYyBub3QgdG8gZmF0YWxpemUgLVdtaXNzaW5nLXByb3RvdHlwZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkW2h0dHBzOi8vbWFyYy5pbmZvLz9sPWxpbnV4LW5mcyZtPTE1NDUwMzI2MDMyMzkzNiZ3PTJdCi0KLVNpZ25lZC1vZmYtYnk6IE1pbmdsaSBZdSA8TWluZ2xpLll1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDUwMDAyYjQuLmFlYmZmMDEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTU4Miw3ICs1ODIsNyBAQCBteV9hbV9jZmxhZ3M9IlwKLSAgLVdhbGwgXAotICAtV2V4dHJhIFwKLSAgJHJwY2dlbl9jZmxhZ3MgXAotLSAtV2Vycm9yPW1pc3NpbmctcHJvdG90eXBlcyBcCi0rIC1XbWlzc2luZy1wcm90b3R5cGVzIFwKLSAgLVdlcnJvcj1taXNzaW5nLWRlY2xhcmF0aW9ucyBcCi0gIC1XZXJyb3I9Zm9ybWF0PTIgXAotICAtV2Vycm9yPXVuZGVmIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL2NsYW5nLWZvcm1hdC1zdHJpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9jbGFuZy1mb3JtYXQtc3RyaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZDY5M2U0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL2NsYW5nLWZvcm1hdC1zdHJpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxODMgKzAsMCBAQAotQ2xhbmcgY29tZXMgdXAgd2l0aCBtb3JlIHByaW50ZiBmb3JtYXQgd2FybmluZ3MKLUNvcnJlY3Rpbmcg4oCcZm9ybWF0IHN0cmluZyBpcyBub3QgYSBzdHJpbmcgbGl0ZXJhbOKAnSB3YXJuaW5nCi1yZXF1aXJlcyB1cyB0byBkZWNsYXJlIHRoYXQgcGFyYW1ldGVyIGlzIGEgcHJpbnRmIHN0eWxlIAotZm9ybWF0IHVzaW5nIHRoZSBhdHRyaWJ1dGUgZmxhZwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotSW5kZXg6IG5mcy11dGlscy0yLjMuMy9zdXBwb3J0L2luY2x1ZGUveGNvbW1vbi5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmZzLXV0aWxzLTIuMy4zLm9yaWcvc3VwcG9ydC9pbmNsdWRlL3hjb21tb24uaAotKysrIG5mcy11dGlscy0yLjMuMy9zdXBwb3J0L2luY2x1ZGUveGNvbW1vbi5oCi1AQCAtMjcsNyArMjcsNyBAQAotIAotIC8qIEZ1bmN0aW9ucyBpbiBzdW5kcmllcy5jIHRoYXQgYXJlIHVzZWQgaW4gbW91bnQuYyBhbmQgdW1vdW50LmMgICovIAotIGNoYXIgKmNhbm9uaWNhbGl6ZSAoY29uc3QgY2hhciAqcGF0aCk7Ci0tdm9pZCBuZnNfZXJyb3IgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKLSt2b2lkIG5mc19lcnJvciAoY29uc3QgY2hhciAqZm10LCAuLi4pIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDEsIDIpKSk7Ci0gdm9pZCAqeG1hbGxvYyAoc2l6ZV90IHNpemUpOwotIHZvaWQgKnhyZWFsbG9jKHZvaWQgKnAsIHNpemVfdCBzaXplKTsKLSB2b2lkIHhmcmVlKHZvaWQgKik7Ci1AQCAtMzYsOSArMzYsOSBAQCBjaGFyICp4c3RybmR1cCAoY29uc3QgY2hhciAqcywgaW50IG4pOwotIGNoYXIgKnhzdHJjb25jYXQyIChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKik7Ci0gY2hhciAqeHN0cmNvbmNhdDMgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwotIGNoYXIgKnhzdHJjb25jYXQ0IChjb25zdCBjaGFyICosIGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICopOwotLXZvaWQgZGllIChpbnQgZXJyY29kZSwgY29uc3QgY2hhciAqZm10LCAuLi4pOwotK3ZvaWQgZGllIChpbnQgZXJyY29kZSwgY29uc3QgY2hhciAqZm10LCAuLi4pIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7Ci0gCi0tZXh0ZXJuIHZvaWQgZGllKGludCBlcnIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKTsKLStleHRlcm4gdm9pZCBkaWUoaW50IGVyciwgY29uc3QgY2hhciAqZm10LCAuLi4pIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDMpKSk7Ci0gZXh0ZXJuIHZvaWQgKCphdF9kaWUpKHZvaWQpOwotIAotIC8qIGV4aXQgc3RhdHVzIC0gYml0cyBiZWxvdyBhcmUgT1JlZCAqLwotSW5kZXg6IG5mcy11dGlscy0yLjMuMy9zdXBwb3J0L2luY2x1ZGUveGxvZy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmZzLXV0aWxzLTIuMy4zLm9yaWcvc3VwcG9ydC9pbmNsdWRlL3hsb2cuaAotKysrIG5mcy11dGlscy0yLjMuMy9zdXBwb3J0L2luY2x1ZGUveGxvZy5oCi1AQCAtNDMsMTAgKzQzLDEwIEBAIHZvaWQJCQl4bG9nX2NvbmZpZyhpbnQgZmFjLCBpbnQgb24pOwotIHZvaWQJCQl4bG9nX3Njb25maWcoY2hhciAqLCBpbnQgb24pOwotIHZvaWQJCQl4bG9nX2Zyb21fY29uZmZpbGUoY2hhciAqKTsKLSBpbnQJCQl4bG9nX2VuYWJsZWQoaW50IGZhYyk7Ci0tdm9pZAkJCXhsb2coaW50IGZhYywgY29uc3QgY2hhciAqZm10LCAuLi4pOwotLXZvaWQJCQl4bG9nX3dhcm4oY29uc3QgY2hhciAqZm10LCAuLi4pOwotLXZvaWQJCQl4bG9nX2Vycihjb25zdCBjaGFyICpmbXQsIC4uLik7Ci0tdm9pZAkJCXhsb2dfZXJybm8oaW50IGVyciwgY29uc3QgY2hhciAqZm10LCAuLi4pOwotLXZvaWQJCQl4bG9nX2JhY2tlbmQoaW50IGZhYywgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpOwotK3ZvaWQJCQl4bG9nKGludCBmYWMsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwotK3ZvaWQJCQl4bG9nX3dhcm4oY29uc3QgY2hhciAqZm10LCAuLi4pIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDEsIDIpKSk7Ci0rdm9pZAkJCXhsb2dfZXJyKGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAxLCAyKSkpOwotK3ZvaWQJCQl4bG9nX2Vycm5vKGludCBlcnIsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKSBfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpOwotK3ZvaWQJCQl4bG9nX2JhY2tlbmQoaW50IGZhYywgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFyZ3MpIF9fYXR0cmlidXRlX18oKF9fZm9ybWF0X18gKF9fcHJpbnRmX18sIDIsIDApKSk7Ci0gCi0gI2VuZGlmIC8qIFhMT0dfSCAqLwotSW5kZXg6IG5mcy11dGlscy0yLjMuMy9zdXBwb3J0L25mcy94Y29tbW9uLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZnMtdXRpbHMtMi4zLjMub3JpZy9zdXBwb3J0L25mcy94Y29tbW9uLmMKLSsrKyBuZnMtdXRpbHMtMi4zLjMvc3VwcG9ydC9uZnMveGNvbW1vbi5jCi1AQCAtOTMsNyArOTMsMTAgQEAgbmZzX2Vycm9yIChjb25zdCBjaGFyICpmbXQsIC4uLikgewotIAotICAgICAgZm10MiA9IHhzdHJjb25jYXQyIChmbXQsICJcbiIpOwotICAgICAgdmFfc3RhcnQgKGFyZ3MsIGZtdCk7Ci0rI3ByYWdtYSBjbGFuZyBkaWFnbm9zdGljIHB1c2gKLSsjcHJhZ21hIGNsYW5nIGRpYWdub3N0aWMgaWdub3JlZCAiLVdmb3JtYXQtbm9ubGl0ZXJhbCIKLSAgICAgIHZmcHJpbnRmIChzdGRlcnIsIGZtdDIsIGFyZ3MpOwotKyNwcmFnbWEgY2xhbmcgZGlhZ25vc3RpYyBwb3AKLSAgICAgIHZhX2VuZCAoYXJncyk7Ci0gICAgICBmcmVlIChmbXQyKTsKLSB9Ci1JbmRleDogbmZzLXV0aWxzLTIuMy4zL3V0aWxzL2V4cG9ydGZzL2V4cG9ydGZzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZnMtdXRpbHMtMi4zLjMub3JpZy91dGlscy9leHBvcnRmcy9leHBvcnRmcy5jCi0rKysgbmZzLXV0aWxzLTIuMy4zL3V0aWxzL2V4cG9ydGZzL2V4cG9ydGZzLmMKLUBAIC02NDQsNiArNjQ0LDcgQEAgb3V0OgotIAlyZXR1cm4gcmVzdWx0OwotIH0KLSAKLStfX2F0dHJpYnV0ZV9fKChfX2Zvcm1hdF9fIChfX3ByaW50Zl9fLCAyLCAzKSkpCi0gc3RhdGljIGNoYXIKLSBkdW1wb3B0KGNoYXIgYywgY2hhciAqZm10LCAuLi4pCi0gewotSW5kZXg6IG5mcy11dGlscy0yLjMuMy91dGlscy9zdGF0ZC9zdGF0ZC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmZzLXV0aWxzLTIuMy4zLm9yaWcvdXRpbHMvc3RhdGQvc3RhdGQuYwotKysrIG5mcy11dGlscy0yLjMuMy91dGlscy9zdGF0ZC9zdGF0ZC5jCi1AQCAtMTM2LDcgKzEzNiw3IEBAIHN0YXRpYyB2b2lkIGxvZ19tb2Rlcyh2b2lkKQotIAlzdHJjYXQoYnVmLCAiVEktUlBDICIpOwotICNlbmRpZgotIAotLQl4bG9nX3dhcm4oYnVmKTsKLSsJeGxvZ193YXJuKCIlcyIsIGJ1Zik7Ci0gfQotIAotIC8qCi1JbmRleDogbmZzLXV0aWxzLTIuMy4zL3N1cHBvcnQvbmZzL3N2Y19jcmVhdGUuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5mcy11dGlscy0yLjMuMy5vcmlnL3N1cHBvcnQvbmZzL3N2Y19jcmVhdGUuYwotKysrIG5mcy11dGlscy0yLjMuMy9zdXBwb3J0L25mcy9zdmNfY3JlYXRlLmMKLUBAIC0xODQsNyArMTg0LDcgQEAgc3ZjX2NyZWF0ZV9zb2NrKGNvbnN0IHN0cnVjdCBzb2NrYWRkciAqcwotIAkJdHlwZSA9IFNPQ0tfU1RSRUFNOwotIAkJYnJlYWs7Ci0gCWRlZmF1bHQ6Ci0tCQl4bG9nKERfR0VORVJBTCwgIiVzOiBVbnJlY29nbml6ZWQgYmluZCBhZGRyZXNzIHNlbWFudGljczogJXUiLAotKwkJeGxvZyhEX0dFTkVSQUwsICIlczogVW5yZWNvZ25pemVkIGJpbmQgYWRkcmVzcyBzZW1hbnRpY3M6ICVsdSIsCi0gCQkJX19mdW5jX18sIG5jb25mLT5uY19zZW1hbnRpY3MpOwotIAkJcmV0dXJuIC0xOwotIAl9Ci1JbmRleDogbmZzLXV0aWxzLTIuMy4zL3N1cHBvcnQvbnNtL3JwYy5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmZzLXV0aWxzLTIuMy4zLm9yaWcvc3VwcG9ydC9uc20vcnBjLmMKLSsrKyBuZnMtdXRpbHMtMi4zLjMvc3VwcG9ydC9uc20vcnBjLmMKLUBAIC0xODIsNyArMTgyLDcgQEAgbnNtX3htaXRfZ2V0cG9ydChjb25zdCBpbnQgc29jaywgY29uc3QgcwotIAl1aW50MzJfdCB4aWQ7Ci0gCVhEUiB4ZHI7Ci0gCi0tCXhsb2coRF9DQUxMLCAiU2VuZGluZyBQTUFQX0dFVFBPUlQgZm9yICV1LCAldSwgdWRwIiwgcHJvZ3JhbSwgdmVyc2lvbik7Ci0rCXhsb2coRF9DQUxMLCAiU2VuZGluZyBQTUFQX0dFVFBPUlQgZm9yICVsdSwgJWx1LCB1ZHAiLCBwcm9ncmFtLCB2ZXJzaW9uKTsKLSAKLSAJbnNtX2luaXRfeGRybWVtKG1zZ2J1ZiwgTlNNX01BWE1TR1NJWkUsICZ4ZHIpOwotIAl4aWQgPSBuc21faW5pdF9ycGNfaGVhZGVyKFBNQVBQUk9HLCBQTUFQVkVSUywKLUluZGV4OiBuZnMtdXRpbHMtMi4zLjMvdXRpbHMvbW91bnRkL2NhY2hlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZnMtdXRpbHMtMi4zLjMub3JpZy91dGlscy9tb3VudGQvY2FjaGUuYwotKysrIG5mcy11dGlscy0yLjMuMy91dGlscy9tb3VudGQvY2FjaGUuYwotQEAgLTk2OCw4ICs5NjgsNyBAQCBsb29rdXBfZXhwb3J0KGNoYXIgKmRvbSwgY2hhciAqcGF0aCwgc3RyCi0gCQkJfSBlbHNlIGlmIChmb3VuZF90eXBlID09IGkgJiYgZm91bmQtPm1fd2FybmVkID09IDApIHsKLSAJCQkJeGxvZyhMX1dBUk5JTkcsICIlcyBleHBvcnRlZCB0byBib3RoICVzIGFuZCAlcywgIgotIAkJCQkgICAgICJhcmJpdHJhcmlseSBjaG9vc2luZyBvcHRpb25zIGZyb20gZmlyc3QiLAotLQkJCQkgICAgIHBhdGgsIGZvdW5kLT5tX2NsaWVudC0+bV9ob3N0bmFtZSwgZXhwLT5tX2NsaWVudC0+bV9ob3N0bmFtZSwKLS0JCQkJICAgICBkb20pOwotKwkJCQkgICAgIHBhdGgsIGZvdW5kLT5tX2NsaWVudC0+bV9ob3N0bmFtZSwgZXhwLT5tX2NsaWVudC0+bV9ob3N0bmFtZSk7Ci0gCQkJCWZvdW5kLT5tX3dhcm5lZCA9IDE7Ci0gCQkJfQotIAkJfQotSW5kZXg6IG5mcy11dGlscy0yLjMuMy91dGlscy9tb3VudGQvbW91bnRkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBuZnMtdXRpbHMtMi4zLjMub3JpZy91dGlscy9tb3VudGQvbW91bnRkLmMKLSsrKyBuZnMtdXRpbHMtMi4zLjMvdXRpbHMvbW91bnRkL21vdW50ZC5jCi1AQCAtMjEzLDcgKzIxMyw3IEBAIHN0YXRpYyB2b2lkCi0gc2lnX2h1cCAoaW50IHNpZykKLSB7Ci0gCS8qIGRvbid0IGV4aXQgb24gU0lHSFVQICovCi0tCXhsb2cgKExfTk9USUNFLCAiUmVjZWl2ZWQgU0lHSFVQLi4uIElnbm9yaW5nLlxuIiwgc2lnKTsKLSsJeGxvZyAoTF9OT1RJQ0UsICJSZWNlaXZlZCBTSUdIVVAoJWQpLi4uIElnbm9yaW5nLlxuIiwgc2lnKTsKLSAJcmV0dXJuOwotIH0KLSAKLUluZGV4OiBuZnMtdXRpbHMtMi4zLjMvdXRpbHMvc3RhdGQvcm10Y2FsbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbmZzLXV0aWxzLTIuMy4zLm9yaWcvdXRpbHMvc3RhdGQvcm10Y2FsbC5jCi0rKysgbmZzLXV0aWxzLTIuMy4zL3V0aWxzL3N0YXRkL3JtdGNhbGwuYwotQEAgLTI0Nyw3ICsyNDcsNyBAQCBwcm9jZXNzX3JlcGx5KEZEX1NFVF9UWVBFICpyZmRzKQotIAkJeGxvZ193YXJuKCIlczogc2VydmljZSAlZCBub3QgcmVnaXN0ZXJlZCBvbiBsb2NhbGhvc3QiLAotIAkJCV9fZnVuY19fLCBOTF9NWV9QUk9HKGxwKSk7Ci0gCX0gZWxzZSB7Ci0tCQl4bG9nKERfR0VORVJBTCwgIiVzOiBDYWxsYmFjayB0byAlcyAoZm9yICVkKSBzdWNjZWVkZWQiLAotKwkJeGxvZyhEX0dFTkVSQUwsICIlczogQ2FsbGJhY2sgdG8gJXMgKGZvciAlcykgc3VjY2VlZGVkIiwKLSAJCQlfX2Z1bmNfXywgTkxfTVlfTkFNRShscCksIE5MX01PTl9OQU1FKGxwKSk7Ci0gCX0KLSAJbmxpc3RfZnJlZSgmbm90aWZ5LCBscCk7Ci1JbmRleDogbmZzLXV0aWxzLTIuMy4zL3V0aWxzL3N0YXRkL3N2Y19ydW4uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIG5mcy11dGlscy0yLjMuMy5vcmlnL3V0aWxzL3N0YXRkL3N2Y19ydW4uYwotKysrIG5mcy11dGlscy0yLjMuMy91dGlscy9zdGF0ZC9zdmNfcnVuLmMKLUBAIC01Myw2ICs1Myw3IEBACi0gCi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KLSsjaW5jbHVkZSA8aW50dHlwZXMuaD4KLSAjaW5jbHVkZSAic3RhdGQuaCIKLSAjaW5jbHVkZSAibm90bGlzdC5oIgotIAotQEAgLTEwNCw4ICsxMDUsOCBAQCBteV9zdmNfcnVuKGludCBzb2NrZmQpCi0gCi0gCQkJdHYudHZfc2VjICA9IE5MX1dIRU4obm90aWZ5KSAtIG5vdzsKLSAJCQl0di50dl91c2VjID0gMDsKLS0JCQl4bG9nKERfR0VORVJBTCwgIldhaXRpbmcgZm9yIHJlcGx5Li4uICh0aW1lbyAlZCkiLAotLQkJCQkJCQl0di50dl9zZWMpOwotKwkJCXhsb2coRF9HRU5FUkFMLCAiV2FpdGluZyBmb3IgcmVwbHkuLi4gKHRpbWVvICVqZCkiLAotKwkJCQkJCQkoaW50bWF4X3QpdHYudHZfc2VjKTsKLSAJCQlzZWxyZXQgPSBzZWxlY3QoRkRfU0VUU0laRSwgJnJlYWRmZHMsCi0gCQkJCSh2b2lkICopIDAsICh2b2lkICopIDAsICZ0dik7Ci0gCQl9IGVsc2UgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvY2xhbmctd2FybmluZ3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9jbGFuZy13YXJuaW5ncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDQwMGZlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHMvY2xhbmctd2FybmluZ3MucGF0Y2gKQEAgLTAsMCArMSw2MSBAQAorRGV0ZWN0IHdhcm5pbmcgb3B0aW9ucyBkdXJpbmcgY29uZmlndXJlCisKK0NlcnRhaW4gb3B0aW9ucyBtYXliZSBjb21waWxlciBzcGVjaWZpYyB0aGVyZWZvcmUgaXRzIGJldHRlcgordG8gZGV0ZWN0IHRoZW0gYmVmb3JlIHVzZS4KKworbmZzX2Vycm9yIGNvcGllcyB0aGUgZm9ybWF0IHN0cmluZyBhbmQgYXBwZW5kcyBuZXdsaW5lIHRvIGl0CitidXQgY29tcGlsZXIgY2FuIGZvcmdldCB0aGF0IGl0IHdhcyBmb3JtYXQgc3RyaW5nIHNpbmNlIGl0cyBub3QKK3NhbWUgZm10IHN0cmluZyB0aGF0IHdhcyBwYXNzZWQuIElnbm9yZSB0aGUgd2FybmluZworCitXZGlzY2FyZGVkLXF1YWxpZmllcnMgaXMgZ2NjIHNwZWNpZmljIGFuZCB0aGlzIGlzIG5vIGxvbmdlciBuZWVkZWQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTU5OSw3ICs1OTksNiBAQCBteV9hbV9jZmxhZ3M9IlwKKyAgLVdlcnJvcj1wYXJlbnRoZXNlcyBcCisgIC1XZXJyb3I9YWdncmVnYXRlLXJldHVybiBcCisgIC1XZXJyb3I9dW51c2VkLXJlc3VsdCBcCistIC1Xbm8tY2FzdC1mdW5jdGlvbi10eXBlIFwKKyAgLWZuby1zdHJpY3QtYWxpYXNpbmcgXAorICIKKyAKK0BAIC02MTksOSArNjE4LDEwIEBAIENIRUNLX0NDU1VQUE9SVChbLVdlcnJvcj1mb3JtYXQtb3ZlcmZsb3cKKyBDSEVDS19DQ1NVUFBPUlQoWy1XZXJyb3I9aW50LWNvbnZlcnNpb25dLCBbZmxnMl0pCisgQ0hFQ0tfQ0NTVVBQT1JUKFstV2Vycm9yPWluY29tcGF0aWJsZS1wb2ludGVyLXR5cGVzXSwgW2ZsZzNdKQorIENIRUNLX0NDU1VQUE9SVChbLVdlcnJvcj1taXNsZWFkaW5nLWluZGVudGF0aW9uXSwgW2ZsZzRdKQorK0NIRUNLX0NDU1VQUE9SVChbLVduby1jYXN0LWZ1bmN0aW9uLXR5cGVdLCBbZmxnNV0pCisgQVhfR0NDX0ZVTkNfQVRUUklCVVRFKFtmb3JtYXRdKQorIAorLUFDX1NVQlNUKFtBTV9DRkxBR1NdLCBbIiRteV9hbV9jZmxhZ3MgJGZsZzEgJGZsZzIgJGZsZzMgJGZsZzQiXSkKKytBQ19TVUJTVChbQU1fQ0ZMQUdTXSwgWyIkbXlfYW1fY2ZsYWdzICRmbGcxICRmbGcyICRmbGczICRmbGc0ICRmbGc1Il0pCisgCisgIyBNYWtlIHN1cmUgdGhhdCAkQUNMT0NBTF9GTEFHUyBhcmUgdXNlZCBkdXJpbmcgYSByZWJ1aWxkCisgQUNfU1VCU1QoW0FDTE9DQUxfQU1GTEFHU10sIFsiLUkgJGFjX21hY3JvX2RpciBcJChBQ0xPQ0FMX0ZMQUdTKSJdKQorLS0tIGEvc3VwcG9ydC9uZnMveGNvbW1vbi5jCisrKysgYi9zdXBwb3J0L25mcy94Y29tbW9uLmMKK0BAIC05OCw3ICs5OCwxMCBAQCBuZnNfZXJyb3IgKGNvbnN0IGNoYXIgKmZtdCwgLi4uKSB7CisgCisgICAgICBmbXQyID0geHN0cmNvbmNhdDIgKGZtdCwgIlxuIik7CisgICAgICB2YV9zdGFydCAoYXJncywgZm10KTsKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHB1c2gKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgIi1XZm9ybWF0LW5vbmxpdGVyYWwiCisgICAgICB2ZnByaW50ZiAoc3RkZXJyLCBmbXQyLCBhcmdzKTsKKysjcHJhZ21hIEdDQyBkaWFnbm9zdGljIHBvcAorICAgICAgdmFfZW5kIChhcmdzKTsKKyAgICAgIGZyZWUgKGZtdDIpOworIH0KKy0tLSBhL3V0aWxzL21vdW50L3N0cm9wdHMuYworKysrIGIvdXRpbHMvbW91bnQvc3Ryb3B0cy5jCitAQCAtMTA5NCw5ICsxMDk0LDcgQEAgc3RhdGljIGludCBuZnNtb3VudF9mZyhzdHJ1Y3QgbmZzbW91bnRfaQorIAkJaWYgKG5mc190cnlfbW91bnQobWkpKQorIAkJCXJldHVybiBFWF9TVUNDRVNTOworIAorLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgaWdub3JlZCAiLVdkaXNjYXJkZWQtcXVhbGlmaWVycyIKKyAJCWlmIChlcnJubyA9PSBFQlVTWSAmJiBpc19tb3VudHBvaW50KG1pLT5ub2RlKSkgeworLSNwcmFnbWEgR0NDIGRpYWdub3N0aWMgd2FybmluZyAiLVdkaXNjYXJkZWQtcXVhbGlmaWVycyIKKyAJCQkvKgorIAkJCSAqIEVCVVNZIGNhbiBoYXBwZW4gd2hlbiBtb3VudGluZyBhIGZpbGVzeXN0ZW0gdGhhdAorIAkJCSAqIGlzIGFscmVhZHkgbW91bnRlZCBvciB3aGVuIHRoZSBjb250ZXh0PSBhcmUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL25mcy11dGlscy1tdXNsLXJlc19xdWVyeWRvbWFpbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzL25mcy11dGlscy1tdXNsLXJlc19xdWVyeWRvbWFpbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTIxZjVlZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlscy9uZnMtdXRpbHMtbXVzbC1yZXNfcXVlcnlkb21haW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIGNhYTE5MjMxMTk2ZDczNTQxNDQ1NzI4ZTY4MTNjOGZhNzAzNDVhY2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMjYgSnVuIDIwMTggMTU6NTk6MDAgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbmZzLXV0aWxzOiAyLjEuMSAtPiAyLjMuMQotCi1GaXhlZDoKLWNvbmZpZ3VyZTogZXJyb3I6IHJlc19xdWVyeWRvbWFpbiBuZWVkZWQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtodHRwczovL2dpdGh1Yi5jb20vYWxwaW5lbGludXgvYXBvcnRzL2Jsb2IvbWFzdGVyL21haW4vbmZzLXV0aWxzL211c2wtY29uZmlndXJlX2FjLnBhdGNoXQotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLQotLS0tCi0gY29uZmlndXJlLmFjIHwgOSArKysrLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA1MDAwMmI0Li5kY2FkYjIzIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC01ODIsMTAgKzU4MiwxMCBAQCBteV9hbV9jZmxhZ3M9IlwKLSAgLVdhbGwgXAotICAtV2V4dHJhIFwKLSAgJHJwY2dlbl9jZmxhZ3MgXAotLSAtV2Vycm9yPW1pc3NpbmctcHJvdG90eXBlcyBcCi0tIC1XZXJyb3I9bWlzc2luZy1kZWNsYXJhdGlvbnMgXAotKyAtV21pc3NpbmctcHJvdG90eXBlcyBcCi0rIC1XbWlzc2luZy1kZWNsYXJhdGlvbnMgXAotICAtV2Vycm9yPWZvcm1hdD0yIFwKLS0gLVdlcnJvcj11bmRlZiBcCi0rIC1XdW5kZWYgXAotICAtV2Vycm9yPW1pc3NpbmctaW5jbHVkZS1kaXJzIFwKLSAgLVdlcnJvcj1zdHJpY3QtYWxpYXNpbmc9MiBcCi0gIC1XZXJyb3I9aW5pdC1zZWxmIFwKLUBAIC02MTQsMTAgKzYxNCw5IEBAIEFDX0RFRlVOKFtDSEVDS19DQ1NVUFBPUlRdLCBbCi0gCi0gQ0hFQ0tfQ0NTVVBQT1JUKFstV2Vycm9yPWZvcm1hdC1vdmVyZmxvdz0yXSwgW2ZsZzFdKQotIENIRUNLX0NDU1VQUE9SVChbLVdlcnJvcj1pbnQtY29udmVyc2lvbl0sIFtmbGcyXSkKLS1DSEVDS19DQ1NVUFBPUlQoWy1XZXJyb3I9aW5jb21wYXRpYmxlLXBvaW50ZXItdHlwZXNdLCBbZmxnM10pCi0gQ0hFQ0tfQ0NTVVBQT1JUKFstV2Vycm9yPW1pc2xlYWRpbmctaW5kZW50YXRpb25dLCBbZmxnNF0pCi0gCi0tQUNfU1VCU1QoW0FNX0NGTEFHU10sIFsiJG15X2FtX2NmbGFncyAkZmxnMSAkZmxnMiAkZmxnMyAkZmxnNCJdKQotK0FDX1NVQlNUKFtBTV9DRkxBR1NdLCBbIiRteV9hbV9jZmxhZ3MgJGZsZzEgJGZsZzIgJGZsZzQiXSkKLSAKLSAjIE1ha2Ugc3VyZSB0aGF0ICRBQ0xPQ0FMX0ZMQUdTIGFyZSB1c2VkIGR1cmluZyBhIHJlYnVpbGQKLSBBQ19TVUJTVChbQUNMT0NBTF9BTUZMQUdTXSwgWyItSSAkYWNfbWFjcm9fZGlyIFwkKEFDTE9DQUxfRkxBR1MpIl0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuNC4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjMyYmNjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9uZnMtdXRpbHMvbmZzLXV0aWxzXzIuNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTUyICswLDAgQEAKLVNVTU1BUlkgPSAidXNlcnNwYWNlIHV0aWxpdGllcyBmb3Iga2VybmVsIG5mcyIKLURFU0NSSVBUSU9OID0gIlRoZSBuZnMtdXRpbHMgcGFja2FnZSBwcm92aWRlcyBhIGRhZW1vbiBmb3IgdGhlIGtlcm5lbCBcCi1ORlMgc2VydmVyIGFuZCByZWxhdGVkIHRvb2xzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9uZnMuc291cmNlZm9yZ2UubmV0LyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotCi1MSUNFTlNFID0gIk1JVCAmIEdQTHYyKyAmIEJTRCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk1ZjNhOTNhNWMzYzc4ODhkZTYyM2I0NmVhMDg1YTg0IgotCi0jIHV0aWwtbGludXggZm9yIGxpYmJsa2lkCi1ERVBFTkRTID0gImxpYmNhcCBsaWJldmVudCB1dGlsLWxpbnV4IHNxbGl0ZTMgbGlidGlycGMiCi1SREVQRU5EU18ke1BOfSA9ICIke1BOfS1jbGllbnQiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLW5mc2QiCi0KLWluaGVyaXQgdXNlcmFkZAotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LWNsaWVudCIKLVVTRVJBRERfUEFSQU1fJHtQTn0tY2xpZW50ID0gIi0tc3lzdGVtICAtLWhvbWUtZGlyIC92YXIvbGliL25mcyBcCi0JCQkgICAgICAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIHJwY3VzZXIiCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9uZnMtdXRpbHMvJHtQVn0vbmZzLXV0aWxzLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnNzZXJ2ZXIgXAotICAgICAgICAgICBmaWxlOi8vbmZzY29tbW9uIFwKLSAgICAgICAgICAgZmlsZTovL25mcy11dGlscy5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL25mcy1zZXJ2ZXIuc2VydmljZSBcCi0gICAgICAgICAgIGZpbGU6Ly9uZnMtbW91bnRkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vbmZzLXN0YXRkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vcHJvYy1mcy1uZnNkLm1vdW50IFwKLSAgICAgICAgICAgZmlsZTovL25mcy11dGlscy1kZWJpYW5pemUtc3RhcnQtc3RhdGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYnVnZml4LWFkanVzdC1zdGF0ZC1zZXJ2aWNlLW5hbWUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jYWNoZWlvLXVzZS1pbnRtYXhfdC1mb3ItZm9ybWF0dGVkLUlPLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NsYW5nLWZvcm1hdC1zdHJpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS1maXgtdW5kZWZpbmVkLWZ1bmN0aW9uLWZvci1saWJuc20uYS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LWJ1aWxkLXRvb2xzLXdpdGgtQ0NfRk9SX0JVSUxELnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWluY2x1ZGUtb3JkZXItYmV0d2Vlbi1jb25maWcuaC1hbmQtc3RhdC5oLnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1Eby1ub3QtZmF0YWxpemUtV21pc3NpbmctcHJvdG90eXBlcy5wYXRjaCIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL25mcy11dGlscy1tdXNsLXJlc19xdWVyeWRvbWFpbi5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjE2MWVmZTQ2OWVjMWIwNmYxYzc1MGJkODdmOGJhNmRkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg1Mjc0YWRhOTQ0NzliMWJlYmE5ZjhlZWZmZDE5ZjQ3N2M1M2E2NzEwYjk5OThkMTE5MmM4MDc4NTQwODc3MzYiCi0KLSMgT25seSBrZXJuZWwtbW9kdWxlLW5mc2QgaXMgcmVxdWlyZWQgaGVyZSAoYnV0IGNhbiBiZSBidWlsdC1pbikgIC0gdGhlIG5mc2QgbW9kdWxlIHdpbGwKLSMgcHVsbCBpbiB0aGUgcmVtYWluZGVyIG9mIHRoZSBkZXBlbmRlbmNpZXMuCi0KLUlOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tY2xpZW50IgotSU5JVFNDUklQVF9OQU1FID0gIm5mc3NlcnZlciIKLUlOSVRTQ1JJUFRfUEFSQU1TID0gImRlZmF1bHRzIgotSU5JVFNDUklQVF9OQU1FXyR7UE59LWNsaWVudCA9ICJuZnNjb21tb24iCi1JTklUU0NSSVBUX1BBUkFNU18ke1BOfS1jbGllbnQgPSAiZGVmYXVsdHMgMTkgMjEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtcmMuZCBzeXN0ZW1kIHBrZ2NvbmZpZwotCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWNsaWVudCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJuZnMtc2VydmVyLnNlcnZpY2UgbmZzLW1vdW50ZC5zZXJ2aWNlIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LWNsaWVudCA9ICJuZnMtc3RhdGQuc2VydmljZSIKLQotIyAtLWVuYWJsZS11dWlkIGlzIG5lZWQgZm9yIGNyb3NzLWNvbXBpbGluZwotRVhUUkFfT0VDT05GID0gIi0td2l0aC1zdGF0ZHVzZXI9cnBjdXNlciBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbW91bnRjb25maWcgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWxpYm1vdW50LW1vdW50IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS11dWlkIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ3NzIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtbmZzZGNsdHJhY2sgXAotICAgICAgICAgICAgICAgIC0td2l0aC1zdGF0ZHBhdGg9L3Zhci9saWIvbmZzL3N0YXRkIFwKLSAgICAgICAgICAgICAgICIKLQotQ0ZMQUdTICs9ICItV25vLWVycm9yPWZvcm1hdC1vdmVyZmxvdyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInRjcC13cmFwcGVycyBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAidGNwLXdyYXBwZXJzIgotUEFDS0FHRUNPTkZJR1t0Y3Atd3JhcHBlcnNdID0gIi0td2l0aC10Y3Atd3JhcHBlcnMsLS13aXRob3V0LXRjcC13cmFwcGVycyx0Y3Atd3JhcHBlcnMiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgotIyBsaWJkZXZtYXBwZXIgaXMgYXZhaWxhYmxlIGluIG1ldGEtb2UKLVBBQ0tBR0VDT05GSUdbbmZzdjQxXSA9ICItLWVuYWJsZS1uZnN2NDEsLS1kaXNhYmxlLW5mc3Y0MSxsaWJkZXZtYXBwZXIiCi0jIGtleXV0aWxzIGlzIGF2YWlsYWJsZSBpbiBtZXRhLXNlY3VyaXR5Ci1QQUNLQUdFQ09ORklHW25mc3Y0XSA9ICItLWVuYWJsZS1uZnN2NCwtLWRpc2FibGUtbmZzdjQsa2V5dXRpbHMiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1jbGllbnQgJHtQTn0tbW91bnQgJHtQTn0tc3RhdHMiCi0KLUNPTkZGSUxFU18ke1BOfS1jbGllbnQgKz0gIiR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9ldGFiIFwKLQkJCSAgICR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9ybXRhYiBcCi0JCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMveHRhYiBcCi0JCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQvc3RhdGUgXAotCQkJICAgJHtzeXNjb25mZGlyfS9uZnNtb3VudC5jb25mIgotCi1GSUxFU18ke1BOfS1jbGllbnQgPSAiJHtzYmluZGlyfS8qc3RhdGQgXAotCQkgICAgICAke3NiaW5kaXJ9L3JwYy5pZG1hcGQgJHtzYmluZGlyfS9zbS1ub3RpZnkgXAotCQkgICAgICAke3NiaW5kaXJ9L3Nob3dtb3VudCAke3NiaW5kaXJ9L25mc3N0YXQgXAotCQkgICAgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMgXAotCQkgICAgICAke3N5c2NvbmZkaXJ9L25mcy11dGlscy5jb25mIFwKLQkJICAgICAgJHtzeXNjb25mZGlyfS9uZnNtb3VudC5jb25mIFwKLQkJICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQvbmZzY29tbW9uIFwKLQkJICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9uZnMtc3RhdGQuc2VydmljZSIKLVJERVBFTkRTXyR7UE59LWNsaWVudCA9ICIke1BOfS1tb3VudCBycGNiaW5kIgotCi1GSUxFU18ke1BOfS1tb3VudCA9ICIke2Jhc2Vfc2JpbmRpcn0vKm1vdW50Lm5mcyoiCi0KLUZJTEVTXyR7UE59LXN0YXRzID0gIiR7c2JpbmRpcn0vbW91bnRzdGF0cyAke3NiaW5kaXJ9L25mc2lvc3RhdCIKLVJERVBFTkRTXyR7UE59LXN0YXRzID0gInB5dGhvbjMtY29yZSIKLQotRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgICAgIHNlZCAtaSAtZSAncyxzYmluZGlyID0gL3NiaW4sc2JpbmRpciA9ICR7YmFzZV9zYmluZGlyfSxnJyBcCi0gICAgICAgICAgICAke1N9L3V0aWxzL21vdW50L01ha2VmaWxlLmFtCi19Ci0KLSMgTWFrZSBjbGVhbiBuZWVkZWQgYmVjYXVzZSB0aGUgcGFja2FnZSBjb21lcyB3aXRoCi0jIHByZWNvbXBpbGVkIDY0LWJpdCBvYmplY3RzIHRoYXQgYnJlYWsgdGhlIGJ1aWxkCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0JbWFrZSBjbGVhbgotfQotCi0jIFdvcmtzIG9uIHN5c3RlbWQgb25seQotSElHSF9STElNSVRfTk9GSUxFID8/PSAiNDA5NiIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbmZzc2VydmVyICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9uZnNzZXJ2ZXIKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnNjb21tb24gJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25mc2NvbW1vbgotCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbmZzLXV0aWxzLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KLQlpbnN0YWxsIC1tIDA3NTUgJHtTfS91dGlscy9tb3VudC9uZnNtb3VudC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9Ci0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmZzLXNlcnZlci5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25mcy1tb3VudGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uZnMtc3RhdGQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8KLQlzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotCQktZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCi0JCS1lICdzLEBISUdIX1JMSU1JVF9OT0ZJTEVALCR7SElHSF9STElNSVRfTk9GSUxFfSxnJyBcCi0JCSR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLyouc2VydmljZQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLQkgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcHJvYy1mcy1uZnNkLm1vdW50ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLwotCSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzLwotCSAgICBsbiAtc2YgLi4vcHJvYy1mcy1uZnNkLm1vdW50ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3Byb2MtZnMtbmZzZC5tb3VudAotCWZpCi0KLQkjIGtlcm5lbCBjb2RlIGFzIG9mIDMuOCBoYXJkLWNvZGVzIHRoaXMgcGF0aCBhcyBhIGRlZmF1bHQKLQlpbnN0YWxsIC1kICR7RH0vdmFyL2xpYi9uZnMvdjRyZWNvdmVyeQotCi0JIyBjaG93biB0aGUgZGlyZWN0b3JpZXMgYW5kIGZpbGVzCi0JY2hvd24gLVIgcnBjdXNlcjpycGN1c2VyICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQKLQljaG1vZCAwNjQ0ICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvc3RhdGQvc3RhdGUKLQotICAgICAgICAjIE1ha2UgcHl0aG9uIHRvb2xzIHVzZSBweXRob24gMwotICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLipweXRob24uKiwjISR7YmluZGlyfS9weXRob24zLCcgJHtEfSR7c2JpbmRpcn0vbW91bnRzdGF0cyAke0R9JHtzYmluZGlyfS9uZnNpb3N0YXQKLQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi40LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvbmZzLXV0aWxzL25mcy11dGlsc18yLjQuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YmRiNmY0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L25mcy11dGlscy9uZnMtdXRpbHNfMi40LjMuYmIKQEAgLTAsMCArMSwxNDcgQEAKK1NVTU1BUlkgPSAidXNlcnNwYWNlIHV0aWxpdGllcyBmb3Iga2VybmVsIG5mcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBuZnMtdXRpbHMgcGFja2FnZSBwcm92aWRlcyBhIGRhZW1vbiBmb3IgdGhlIGtlcm5lbCBcCitORlMgc2VydmVyIGFuZCByZWxhdGVkIHRvb2xzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9uZnMuc291cmNlZm9yZ2UubmV0LyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorCitMSUNFTlNFID0gIk1JVCAmIEdQTHYyKyAmIEJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk1ZjNhOTNhNWMzYzc4ODhkZTYyM2I0NmVhMDg1YTg0IgorCisjIHV0aWwtbGludXggZm9yIGxpYmJsa2lkCitERVBFTkRTID0gImxpYmNhcCBsaWJldmVudCB1dGlsLWxpbnV4IHNxbGl0ZTMgbGlidGlycGMiCitSREVQRU5EU18ke1BOfSA9ICIke1BOfS1jbGllbnQiCitSUkVDT01NRU5EU18ke1BOfSA9ICJrZXJuZWwtbW9kdWxlLW5mc2QiCisKK2luaGVyaXQgdXNlcmFkZAorCitVU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59LWNsaWVudCIKK1VTRVJBRERfUEFSQU1fJHtQTn0tY2xpZW50ID0gIi0tc3lzdGVtICAtLWhvbWUtZGlyIC92YXIvbGliL25mcyBcCisJCQkgICAgICAtLXNoZWxsIC9iaW4vZmFsc2UgLS11c2VyLWdyb3VwIHJwY3VzZXIiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy9uZnMtdXRpbHMvJHtQVn0vbmZzLXV0aWxzLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9uZnNzZXJ2ZXIgXAorICAgICAgICAgICBmaWxlOi8vbmZzY29tbW9uIFwKKyAgICAgICAgICAgZmlsZTovL25mcy11dGlscy5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL25mcy1zZXJ2ZXIuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9uZnMtbW91bnRkLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vbmZzLXN0YXRkLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vcHJvYy1mcy1uZnNkLm1vdW50IFwKKyAgICAgICAgICAgZmlsZTovL25mcy11dGlscy1kZWJpYW5pemUtc3RhcnQtc3RhdGQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYnVnZml4LWFkanVzdC1zdGF0ZC1zZXJ2aWNlLW5hbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jYWNoZWlvLXVzZS1pbnRtYXhfdC1mb3ItZm9ybWF0dGVkLUlPLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUuYW0tZml4LXVuZGVmaW5lZC1mdW5jdGlvbi1mb3ItbGlibnNtLmEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY2xhbmctd2FybmluZ3MucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMDYwMjBjNzZmNTMxZWQ5N2YzMTQ1NTE0OTAxZTBlN2MiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWY2NWZjZTVkZDgzNzBjZmY5ZWFkNjdiYWFjNWE2Y2Q2OWMzNzZkY2FkZmVmMjY0ZGMyYzc4YzkwNGYyNjU5OSIKKworIyBPbmx5IGtlcm5lbC1tb2R1bGUtbmZzZCBpcyByZXF1aXJlZCBoZXJlIChidXQgY2FuIGJlIGJ1aWx0LWluKSAgLSB0aGUgbmZzZCBtb2R1bGUgd2lsbAorIyBwdWxsIGluIHRoZSByZW1haW5kZXIgb2YgdGhlIGRlcGVuZGVuY2llcy4KKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1jbGllbnQiCitJTklUU0NSSVBUX05BTUUgPSAibmZzc2VydmVyIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMiCitJTklUU0NSSVBUX05BTUVfJHtQTn0tY2xpZW50ID0gIm5mc2NvbW1vbiIKK0lOSVRTQ1JJUFRfUEFSQU1TXyR7UE59LWNsaWVudCA9ICJkZWZhdWx0cyAxOSAyMSIKKworaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHVwZGF0ZS1yYy5kIHN5c3RlbWQgcGtnY29uZmlnCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0gJHtQTn0tY2xpZW50IgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gIm5mcy1zZXJ2ZXIuc2VydmljZSBuZnMtbW91bnRkLnNlcnZpY2UiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tY2xpZW50ID0gIm5mcy1zdGF0ZC5zZXJ2aWNlIgorCisjIC0tZW5hYmxlLXV1aWQgaXMgbmVlZCBmb3IgY3Jvc3MtY29tcGlsaW5nCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXN0YXRkdXNlcj1ycGN1c2VyIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb3VudGNvbmZpZyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtbGlibW91bnQtbW91bnQgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXV1aWQgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nc3MgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uZnNkY2x0cmFjayBcCisgICAgICAgICAgICAgICAgLS13aXRoLXN0YXRkcGF0aD0vdmFyL2xpYi9uZnMvc3RhdGQgXAorICAgICAgICAgICAgICAgIgorCitQQUNLQUdFQ09ORklHID8/PSAidGNwLXdyYXBwZXJzIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpYmMtbXVzbCA9ICJ0Y3Atd3JhcHBlcnMiCitQQUNLQUdFQ09ORklHW3RjcC13cmFwcGVyc10gPSAiLS13aXRoLXRjcC13cmFwcGVycywtLXdpdGhvdXQtdGNwLXdyYXBwZXJzLHRjcC13cmFwcGVycyIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCisjIGxpYmRldm1hcHBlciBpcyBhdmFpbGFibGUgaW4gbWV0YS1vZQorUEFDS0FHRUNPTkZJR1tuZnN2NDFdID0gIi0tZW5hYmxlLW5mc3Y0MSwtLWRpc2FibGUtbmZzdjQxLGxpYmRldm1hcHBlcixsaWJkZXZtYXBwZXIiCisjIGtleXV0aWxzIGlzIGF2YWlsYWJsZSBpbiBtZXRhLW9lCitQQUNLQUdFQ09ORklHW25mc3Y0XSA9ICItLWVuYWJsZS1uZnN2NCwtLWRpc2FibGUtbmZzdjQsa2V5dXRpbHMscHl0aG9uMy1jb3JlIgorCitQQUNLQUdFUyA9KyAiJHtQTn0tY2xpZW50ICR7UE59LW1vdW50ICR7UE59LXN0YXRzIgorCitDT05GRklMRVNfJHtQTn0tY2xpZW50ICs9ICIke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvZXRhYiBcCisJCQkgICAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9uZnMvcm10YWIgXAorCQkJICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3h0YWIgXAorCQkJICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzL3N0YXRkL3N0YXRlIFwKKwkJCSAgICR7c3lzY29uZmRpcn0vbmZzbW91bnQuY29uZiIKKworRklMRVNfJHtQTn0tY2xpZW50ID0gIiR7c2JpbmRpcn0vKnN0YXRkIFwKKwkJICAgICAgJHtzYmluZGlyfS9ycGMuaWRtYXBkICR7c2JpbmRpcn0vc20tbm90aWZ5IFwKKwkJICAgICAgJHtzYmluZGlyfS9zaG93bW91bnQgJHtzYmluZGlyfS9uZnNzdGF0IFwKKwkJICAgICAgJHtsb2NhbHN0YXRlZGlyfS9saWIvbmZzIFwKKwkJICAgICAgJHtzeXNjb25mZGlyfS9uZnMtdXRpbHMuY29uZiBcCisJCSAgICAgICR7c3lzY29uZmRpcn0vbmZzbW91bnQuY29uZiBcCisJCSAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL25mc2NvbW1vbiBcCisJCSAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbmZzLXN0YXRkLnNlcnZpY2UiCitSREVQRU5EU18ke1BOfS1jbGllbnQgPSAiJHtQTn0tbW91bnQgcnBjYmluZCIKKworRklMRVNfJHtQTn0tbW91bnQgPSAiJHtiYXNlX3NiaW5kaXJ9Lyptb3VudC5uZnMqIgorCitGSUxFU18ke1BOfS1zdGF0cyA9ICIke3NiaW5kaXJ9L21vdW50c3RhdHMgJHtzYmluZGlyfS9uZnNpb3N0YXQiCitSREVQRU5EU18ke1BOfS1zdGF0cyA9ICJweXRob24zLWNvcmUiCisKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2xpYm5mc2lkbWFwLyouYSIKKworRklMRVNfJHtQTn0gKz0gIiR7c3lzdGVtZF91bml0ZGlyfSAke2xpYmRpcn0vbGlibmZzaWRtYXAvIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAgICAgc2VkIC1pIC1lICdzLHNiaW5kaXIgPSAvc2JpbixzYmluZGlyID0gJHtiYXNlX3NiaW5kaXJ9LGcnIFwKKyAgICAgICAgICAgICR7U30vdXRpbHMvbW91bnQvTWFrZWZpbGUuYW0KK30KKworIyBNYWtlIGNsZWFuIG5lZWRlZCBiZWNhdXNlIHRoZSBwYWNrYWdlIGNvbWVzIHdpdGgKKyMgcHJlY29tcGlsZWQgNjQtYml0IG9iamVjdHMgdGhhdCBicmVhayB0aGUgYnVpbGQKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKwltYWtlIGNsZWFuCit9CisKKyMgV29ya3Mgb24gc3lzdGVtZCBvbmx5CitISUdIX1JMSU1JVF9OT0ZJTEUgPz89ICI0MDk2IgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnNzZXJ2ZXIgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL25mc3NlcnZlcgorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L25mc2NvbW1vbiAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvbmZzY29tbW9uCisKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9uZnMtdXRpbHMuY29uZiAke0R9JHtzeXNjb25mZGlyfQorCWluc3RhbGwgLW0gMDc1NSAke1N9L3V0aWxzL21vdW50L25mc21vdW50LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0KKworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9uZnMtc2VydmVyLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbmZzLW1vdW50ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L25mcy1zdGF0ZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtLworCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisJCS1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKKwkJLWUgJ3MsQEhJR0hfUkxJTUlUX05PRklMRUAsJHtISUdIX1JMSU1JVF9OT0ZJTEV9LGcnIFwKKwkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgorCSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9wcm9jLWZzLW5mc2QubW91bnQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vCisJICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvCisJICAgIGxuIC1zZiAuLi9wcm9jLWZzLW5mc2QubW91bnQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvcHJvYy1mcy1uZnNkLm1vdW50CisJZmkKKworCSMga2VybmVsIGNvZGUgYXMgb2YgMy44IGhhcmQtY29kZXMgdGhpcyBwYXRoIGFzIGEgZGVmYXVsdAorCWluc3RhbGwgLWQgJHtEfS92YXIvbGliL25mcy92NHJlY292ZXJ5CisKKwkjIGNob3duIHRoZSBkaXJlY3RvcmllcyBhbmQgZmlsZXMKKwljaG93biAtUiBycGN1c2VyOnJwY3VzZXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZAorCWNobW9kIDA2NDQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbGliL25mcy9zdGF0ZC9zdGF0ZQorCisgICAgICAgICMgTWFrZSBweXRob24gdG9vbHMgdXNlIHB5dGhvbiAzCisgICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKnB5dGhvbi4qLCMhJHtiaW5kaXJ9L3B5dGhvbjMsJyAke0R9JHtzYmluZGlyfS9tb3VudHN0YXRzICR7RH0ke3NiaW5kaXJ9L25mc2lvc3RhdAorCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoLzAwMDEtdXBzdHJlYW0tZml4LWludGVnZXItb3ZlcmZsb3ctaW4tWE1TUy1wcml2YXRlLWtleS1wYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvMDAwMS11cHN0cmVhbS1maXgtaW50ZWdlci1vdmVyZmxvdy1pbi1YTVNTLXByaXZhdGUta2V5LXBhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjY1YmUzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvMDAwMS11cHN0cmVhbS1maXgtaW50ZWdlci1vdmVyZmxvdy1pbi1YTVNTLXByaXZhdGUta2V5LXBhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSAyMDE0ZmFkM2QyODA5MGI1OWQyZjhhMDk3MTE2NmMwNmU1ZmE2ZGE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAxOCBPY3QgMjAxOSAxNDo1Njo1OCArMDgwMAotU3ViamVjdDogW1BBVENIXSB1cHN0cmVhbTogZml4IGludGVnZXIgb3ZlcmZsb3cgaW4gWE1TUyBwcml2YXRlIGtleSBwYXJzaW5nLgotCi1SZXBvcnRlZCBieSBBZGFtIFphYnJvY2tpIHZpYSBTZWN1cmlUZWFtJ3MgU1NIIHByb2dyYW0uCi0KLU5vdGUgdGhhdCB0aGlzIGNvZGUgaXMgZXhwZXJpbWVudGFsIGFuZCBub3QgY29tcGlsZWQgYnkgZGVmYXVsdC4KLQotb2sgbWFya3VzQAotCi1PcGVuQlNELUNvbW1pdC1JRDogY2QwMzYxODk2ZDE1ZThhMWJhYzQ5NWFjNTgzZmYwNjVmZmNhMmJlMQotCi1TaWduZWQtb2ZmLWJ5OiAiZGptQG9wZW5ic2Qub3JnIiA8ZGptQG9wZW5ic2Qub3JnPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vb3BlbnNzaC9vcGVuc3NoLXBvcnRhYmxlL2NvbW1pdC9hNTQ2YjE3YmJhZWIxMmJlYWM0YzlhZWVkNTZmNzRhNDJiMThhOTNhXQotQ1ZFOiBDVkUtMjAxOS0xNjkwNQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzc2hrZXkteG1zcy5jIHwgMyArKy0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zc2hrZXkteG1zcy5jIGIvc3Noa2V5LXhtc3MuYwotaW5kZXggYWFhZTcwMi4uYzU3NjgxYSAxMDA2NDQKLS0tLSBhL3NzaGtleS14bXNzLmMKLSsrKyBiL3NzaGtleS14bXNzLmMKLUBAIC05NzcsNyArOTc3LDggQEAgc3Noa2V5X3htc3NfZGVjcnlwdF9zdGF0ZShjb25zdCBzdHJ1Y3Qgc3Noa2V5ICprLCBzdHJ1Y3Qgc3NoYnVmICplbmNvZGVkLAotIAkJZ290byBvdXQ7Ci0gCX0KLSAJLyogY2hlY2sgdGhhdCBhbiBhcHByb3ByaWF0ZSBhbW91bnQgb2YgYXV0aCBkYXRhIGlzIHByZXNlbnQgKi8KLS0JaWYgKHNzaGJ1Zl9sZW4oZW5jb2RlZCkgPCBlbmNyeXB0ZWRfbGVuICsgYXV0aGxlbikgewotKwlpZiAoc3NoYnVmX2xlbihlbmNvZGVkKSA8IGF1dGhsZW4gfHwKLSsJICAgIHNzaGJ1Zl9sZW4oZW5jb2RlZCkgLSBhdXRobGVuIDwgZW5jcnlwdGVkX2xlbikgewotIAkJciA9IFNTSF9FUlJfSU5WQUxJRF9GT1JNQVQ7Ci0gCQlnb3RvIG91dDsKLSAJfQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvcnVuLXB0ZXN0CmluZGV4IGRhZjYyY2MuLmFlMDNlOTIgMTAwNzU1Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvcnVuLXB0ZXN0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvcnVuLXB0ZXN0CkBAIC0xLDYgKzEsNyBAQAogIyEvYmluL3NoCiAKIGV4cG9ydCBURVNUX1NIRUxMPXNoCitleHBvcnQgU0tJUF9VTklUPTEKIAogY2QgcmVncmVzcwogc2VkIC1pICIvXHRcdGFnZW50LXB0cmFjZSAvZCIgTWFrZWZpbGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZC5zb2NrZXQgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGQuc29ja2V0CmluZGV4IDEyYzM5YjIuLjhkNzZkNjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZC5zb2NrZXQKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkLnNvY2tldApAQCAtMSw1ICsxLDYgQEAKIFtVbml0XQogQ29uZmxpY3RzPXNzaGQuc2VydmljZQorV2FudHM9c3NoZGdlbmtleXMuc2VydmljZQogCiBbU29ja2V0XQogRXhlY1N0YXJ0UHJlPUBCQVNFX0JJTkRJUkAvbWtkaXIgLXAgL3Zhci9ydW4vc3NoZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkQC5zZXJ2aWNlIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaC9zc2hkQC5zZXJ2aWNlCmluZGV4IDlkODNkZmIuLjQyMjQ1MGMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2gvc3NoZEAuc2VydmljZQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoL3NzaGRALnNlcnZpY2UKQEAgLTEsMTMgKzEsMTEgQEAKIFtVbml0XQogRGVzY3JpcHRpb249T3BlblNTSCBQZXItQ29ubmVjdGlvbiBEYWVtb24KLVdhbnRzPXNzaGRnZW5rZXlzLnNlcnZpY2UKIEFmdGVyPXNzaGRnZW5rZXlzLnNlcnZpY2UKIAogW1NlcnZpY2VdCiBFbnZpcm9ubWVudD0iU1NIRF9PUFRTPSIKIEVudmlyb25tZW50RmlsZT0tL2V0Yy9kZWZhdWx0L3NzaAogRXhlY1N0YXJ0PS1AU0JJTkRJUkAvc3NoZCAtaSAkU1NIRF9PUFRTCi1FeGVjUmVsb2FkPUBCQVNFX0JJTkRJUkAva2lsbCAtSFVQICRNQUlOUElECiBTdGFuZGFyZElucHV0PXNvY2tldAogU3RhbmRhcmRFcnJvcj1zeXNsb2cKIEtpbGxNb2RlPXByb2Nlc3MKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfOC4wcDEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzaC9vcGVuc3NoXzguMHAxLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZmZiYzlhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfOC4wcDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNjUgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHN1aXRlIG9mIHNlY3VyaXR5LXJlbGF0ZWQgbmV0d29yayB1dGlsaXRpZXMgYmFzZWQgb24gXAotdGhlIFNTSCBwcm90b2NvbCBpbmNsdWRpbmcgdGhlIHNzaCBjbGllbnQgYW5kIHNzaGQgc2VydmVyIgotREVTQ1JJUFRJT04gPSAiU2VjdXJlIHJsb2dpbi9yc2gvcmNwL3RlbG5ldCByZXBsYWNlbWVudCAoT3BlblNTSCkgXAotU3NoIChTZWN1cmUgU2hlbGwpIGlzIGEgcHJvZ3JhbSBmb3IgbG9nZ2luZyBpbnRvIGEgcmVtb3RlIG1hY2hpbmUgXAotYW5kIGZvciBleGVjdXRpbmcgY29tbWFuZHMgb24gYSByZW1vdGUgbWFjaGluZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9wZW5zc2guY29tLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJCU0QgJiBJU0MgJiBNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT00Mjk2NThjNjYxMmYzYTliMTI5Mzc4MjM2NmFiMjlkOCIKLQotREVQRU5EUyA9ICJ6bGliIG9wZW5zc2wgdmlydHVhbC9jcnlwdCIKLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5vcGVuYnNkLm9yZy9wdWIvT3BlbkJTRC9PcGVuU1NIL3BvcnRhYmxlL29wZW5zc2gtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3NzaGRfY29uZmlnIFwKLSAgICAgICAgICAgZmlsZTovL3NzaF9jb25maWcgXAotICAgICAgICAgICBmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkLnNvY2tldCBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkQC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL3NzaGRnZW5rZXlzLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vdm9sYXRpbGVzLjk5X3NzaGQgXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1wb3RlbnRpYWwtc2lnbmVkLW92ZXJmbG93LWluLXBvaW50ZXItYXJpdGhtYXRpYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zc2hkX2NoZWNrX2tleXMgXAotICAgICAgICAgICBmaWxlOi8vYWRkLXRlc3Qtc3VwcG9ydC1mb3ItYnVzeWJveC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXVwc3RyZWFtLWZpeC1pbnRlZ2VyLW92ZXJmbG93LWluLVhNU1MtcHJpdmF0ZS1rZXktcGEucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYmYwNTBmMDAyZmU1MTBlMWRhZWNkMzkwNDRlMTEyMmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmQ5NDM4NzllNjk0OThlODAzMWViNmI3ZjQ0ZDA4Y2RjMzdkNTlhN2FiNjg5YWEwYjQzNzMyMGMzNDgxZmQ2OCIKLQotUEFNX1NSQ19VUkkgPSAiZmlsZTovL3NzaGQiCi0KLWluaGVyaXQgdXNlcmFkZCB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHN5c3RlbWQKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgotVVNFUkFERF9QQVJBTV8ke1BOfS1zc2hkID0gIi0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS1ob21lLWRpciAvdmFyL3J1bi9zc2hkIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgc3NoZCIKLUlOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0tc3NoZCIKLUlOSVRTQ1JJUFRfTkFNRV8ke1BOfS1zc2hkID0gInNzaGQiCi1JTklUU0NSSVBUX1BBUkFNU18ke1BOfS1zc2hkID0gImRlZmF1bHRzIDkiCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tc3NoZCIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1zc2hkID0gInNzaGQuc29ja2V0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcHRlc3QKLQotRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWFjbG9jYWwiCi0KLSMgbG9naW4gcGF0aCBpcyBoYXJkY29kZWQgaW4gc3NoZAotRVhUUkFfT0VDT05GID0gIidMT0dJTl9QUk9HUkFNPSR7YmFzZV9iaW5kaXJ9L2xvZ2luJyBcCi0gICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtemxpYi12ZXJzaW9uLWNoZWNrIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtcHJpdnNlcC1wYXRoPSR7bG9jYWxzdGF0ZWRpcn0vcnVuL3NzaGQgXAotICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9L3NzaCBcCi0gICAgICAgICAgICAgICAgLS13aXRoLXhhdXRoPSR7YmluZGlyfS94YXV0aCBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN0cmlwIFwKLSAgICAgICAgICAgICAgICAiCi0KLSMgbXVzbCBkb2Vzbid0IGltcGxlbWVudCB3dG1wL3V0bXAKLUVYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtd3RtcCIKLQotIyBTaW5jZSB3ZSBkbyBub3QgZGVwZW5kIG9uIGxpYmJzZCwgd2UgZG8gbm90IHdhbnQgY29uZmlndXJlIHRvIHVzZSBpdAotIyBqdXN0IGJlY2F1c2UgaXQgZmluZHMgbGlidXRpbC5oLiAgQnV0LCBzcGVjaWZ5aW5nIC0tZGlzYWJsZS1saWJ1dGlsCi0jIGNhdXNlcyBjb21waWxlIGVycm9ycywgc28uLi4KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfYnNkX2xpYnV0aWxfaD1ubyBhY19jdl9oZWFkZXJfbGlidXRpbF9oPW5vIgotCi0jIHBhc3N3ZCBwYXRoIGlzIGhhcmRjb2RlZCBpbiBzc2hkCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QQVRIX1BBU1NXRF9QUk9HPSR7YmluZGlyfS9wYXNzd2QiCi0KLSMgV2UgZG9uJ3Qgd2FudCB0byBkZXBlbmQgb24gbGliYmxvY2tmaWxlCi1DQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX21haWxsb2NrX2g9bm8iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlleHBvcnQgTEQ9IiR7Q0N9IgotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NzaGRfY29uZmlnICR7Qn0vCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoX2NvbmZpZyAke0J9LwotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotICAgICAgICAjIHNraXAgcmVncmVzcy91bml0dGVzdHMvIGJpbmFyaWVzOiB0aGlzIHdpbGwgc2lsZW50bHkgc2tpcAotICAgICAgICAjIHVuaXR0ZXN0cyBpbiBydW4tcHRlc3RzIHdoaWNoIGlzIGdvb2QgYmVjYXVzZSB0aGV5IGFyZSBzbyBzbG93LgotICAgICAgICBvZV9ydW5tYWtlIHJlZ3Jlc3MvbW9kcGlwZSByZWdyZXNzL3NldHVpZC1hbGxvd2VkIHJlZ3Jlc3MvbmV0Y2F0IFwKLSAgICAgICAgICAgICAgICAgICByZWdyZXNzL2NoZWNrLXBlcm0gcmVncmVzcy9ta2R0ZW1wCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KLQkJaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZCAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkCi0JCXNlZCAtaSAtZSAnczojVXNlUEFNIG5vOlVzZVBBTSB5ZXM6JyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcKLQlmaQotCi0JaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IiBdOyB0aGVuCi0JCXNlZCAtaSAtZSAnczojWDExRm9yd2FyZGluZyBubzpYMTFGb3J3YXJkaW5nIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZwotCWZpCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQKLQlybSAtZiAke0R9JHtiaW5kaXJ9L3Nsb2dpbiAke0R9JHtkYXRhZGlyfS9Tc2guYmluCi0Jcm1kaXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuL3NzaGQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9Ci0JaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy45OV9zc2hkICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9zc2hkCi0JaW5zdGFsbCAtbSAwNzU1ICR7U30vY29udHJpYi9zc2gtY29weS1pZCAke0R9JHtiaW5kaXJ9Ci0KLQkjIENyZWF0ZSBjb25maWcgZmlsZXMgZm9yIHJlYWQtb25seSByb290ZnMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NzaAotCWluc3RhbGwgLW0gNjQ0ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKLQlzZWQgLWkgJy9Ib3N0S2V5L2QnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X3JzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2VjZHNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5Ci0JZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWQyNTUxOV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGQuc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZEAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGRnZW5rZXlzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCi0JCS1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQEJJTkRJUkAsJHtiaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0vJHtCUE59LGcnIFwKLQkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCi0KLQlzZWQgLWkgLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0vJHtCUE59LGcnIFwKLQkJJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQKLQotCWluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L3NzaGRfY2hlY2tfa2V5cyAke0R9JHtsaWJleGVjZGlyfS8ke0JQTn0vc3NoZF9jaGVja19rZXlzCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotCXNlZCAtaSAtZSAic3xeU0ZUUFNFUlZFUj0uKnxTRlRQU0VSVkVSPSR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXJ8IiByZWdyZXNzL3Rlc3QtZXhlYy5zaAotCWNwIC1yIHJlZ3Jlc3MgJHtEfSR7UFRFU1RfUEFUSH0KLX0KLQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LWtleWdlbiAke1BOfS1zY3AgJHtQTn0tc3NoICR7UE59LXNzaGQgJHtQTn0tc2Z0cCAke1BOfS1taXNjICR7UE59LXNmdHAtc2VydmVyIgotRklMRVNfJHtQTn0tc2NwID0gIiR7YmluZGlyfS9zY3AuJHtCUE59IgotRklMRVNfJHtQTn0tc3NoID0gIiR7YmluZGlyfS9zc2guJHtCUE59ICR7c3lzY29uZmRpcn0vc3NoL3NzaF9jb25maWciCi1GSUxFU18ke1BOfS1zc2hkID0gIiR7c2JpbmRpcn0vc3NoZCAke3N5c2NvbmZkaXJ9L2luaXQuZC9zc2hkICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0iCi1GSUxFU18ke1BOfS1zc2hkICs9ICIke3N5c2NvbmZkaXJ9L3NzaC9tb2R1bGkgJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcgJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkgJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9zc2hkICR7c3lzY29uZmRpcn0vcGFtLmQvc3NoZCIKLUZJTEVTXyR7UE59LXNzaGQgKz0gIiR7bGliZXhlY2Rpcn0vJHtCUE59L3NzaGRfY2hlY2tfa2V5cyIKLUZJTEVTXyR7UE59LXNmdHAgPSAiJHtiaW5kaXJ9L3NmdHAiCi1GSUxFU18ke1BOfS1zZnRwLXNlcnZlciA9ICIke2xpYmV4ZWNkaXJ9L3NmdHAtc2VydmVyIgotRklMRVNfJHtQTn0tbWlzYyA9ICIke2JpbmRpcn0vc3NoKiAke2xpYmV4ZWNkaXJ9L3NzaCoiCi1GSUxFU18ke1BOfS1rZXlnZW4gPSAiJHtiaW5kaXJ9L3NzaC1rZXlnZW4iCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke1BOfS1zY3AgJHtQTn0tc3NoICR7UE59LXNzaGQgJHtQTn0ta2V5Z2VuIgotUkRFUEVORFNfJHtQTn0tc3NoZCArPSAiJHtQTn0ta2V5Z2VuICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4ta2V5aW5pdCBwYW0tcGx1Z2luLWxvZ2ludWlkJywgJycsIGQpfSIKLVJSRUNPTU1FTkRTXyR7UE59LXNzaGRfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgcm5nLXRvb2xzIgotIyBnZGIgd291bGQgbWFrZSBhdHRhY2gtcHRyYWNlIHRlc3QgcGFzcyByYXRoZXIgdGhhbiBza2lwIGJ1dCBub3Qgd29ydGggdGhlIGJ1aWxkIGRlcGVuZGVuY2llcwotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LXNmdHAgJHtQTn0tbWlzYyAke1BOfS1zZnRwLXNlcnZlciBtYWtlIHNlZCBzdWRvIGNvcmV1dGlscyIKLQotUlBST1ZJREVTXyR7UE59LXNzaCA9ICJzc2giCi1SUFJPVklERVNfJHtQTn0tc3NoZCA9ICJzc2hkIgotCi1SQ09ORkxJQ1RTXyR7UE59ID0gImRyb3BiZWFyIgotUkNPTkZMSUNUU18ke1BOfS1zc2hkID0gImRyb3BiZWFyIgotCi1DT05GRklMRVNfJHtQTn0tc3NoZCA9ICIke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyIKLUNPTkZGSUxFU18ke1BOfS1zc2ggPSAiJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiOTAiCi1BTFRFUk5BVElWRV8ke1BOfS1zY3AgPSAic2NwIgotQUxURVJOQVRJVkVfJHtQTn0tc3NoID0gInNzaCIKLQotQkJDTEFTU0VYVEVORCArPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2gvb3BlbnNzaF84LjJwMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfOC4ycDEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg3OWVmYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NoL29wZW5zc2hfOC4ycDEuYmIKQEAgLTAsMCArMSwxNzAgQEAKK1NVTU1BUlkgPSAiQSBzdWl0ZSBvZiBzZWN1cml0eS1yZWxhdGVkIG5ldHdvcmsgdXRpbGl0aWVzIGJhc2VkIG9uIFwKK3RoZSBTU0ggcHJvdG9jb2wgaW5jbHVkaW5nIHRoZSBzc2ggY2xpZW50IGFuZCBzc2hkIHNlcnZlciIKK0RFU0NSSVBUSU9OID0gIlNlY3VyZSBybG9naW4vcnNoL3JjcC90ZWxuZXQgcmVwbGFjZW1lbnQgKE9wZW5TU0gpIFwKK1NzaCAoU2VjdXJlIFNoZWxsKSBpcyBhIHByb2dyYW0gZm9yIGxvZ2dpbmcgaW50byBhIHJlbW90ZSBtYWNoaW5lIFwKK2FuZCBmb3IgZXhlY3V0aW5nIGNvbW1hbmRzIG9uIGEgcmVtb3RlIG1hY2hpbmUuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc3NoLmNvbS8iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiQlNEICYgSVNDICYgTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9MThkOWU1YThiM2RkMTc5MGQ3MzUwMmY1MDQyNmQ0ZDMiCisKK0RFUEVORFMgPSAiemxpYiBvcGVuc3NsIHZpcnR1YWwvY3J5cHQiCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgorCitTUkNfVVJJID0gImh0dHA6Ly9mdHAub3BlbmJzZC5vcmcvcHViL09wZW5CU0QvT3BlblNTSC9wb3J0YWJsZS9vcGVuc3NoLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkX2NvbmZpZyBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hfY29uZmlnIFwKKyAgICAgICAgICAgZmlsZTovL2luaXQgXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gXAorICAgICAgICAgICBmaWxlOi8vc3NoZC5zb2NrZXQgXAorICAgICAgICAgICBmaWxlOi8vc3NoZEAuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9zc2hkZ2Vua2V5cy5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy45OV9zc2hkIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcG90ZW50aWFsLXNpZ25lZC1vdmVyZmxvdy1pbi1wb2ludGVyLWFyaXRobWF0aWMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc3NoZF9jaGVja19rZXlzIFwKKyAgICAgICAgICAgZmlsZTovL2FkZC10ZXN0LXN1cHBvcnQtZm9yLWJ1c3lib3gucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMzA3NmU2NDEzZThkYmU1NmQzMzg0OGMxMDU0YWMwOTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDM5MjUxNTFlNmNmNmNlZTE0NTAxOTBjMGU5YWY0ZGMzNmI0MWMxMjczNzYxOWVkZmY4YmNlYmRmZjY0ZTY3MSIKKworUEFNX1NSQ19VUkkgPSAiZmlsZTovL3NzaGQiCisKK2luaGVyaXQgbWFucGFnZXMgdXNlcmFkZCB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHN5c3RlbWQKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfS1zc2hkIgorVVNFUkFERF9QQVJBTV8ke1BOfS1zc2hkID0gIi0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS1ob21lLWRpciAvdmFyL3J1bi9zc2hkIC0tc2hlbGwgL2Jpbi9mYWxzZSAtLXVzZXItZ3JvdXAgc3NoZCIKK0lOSVRTQ1JJUFRfUEFDS0FHRVMgPSAiJHtQTn0tc3NoZCIKK0lOSVRTQ1JJUFRfTkFNRV8ke1BOfS1zc2hkID0gInNzaGQiCitJTklUU0NSSVBUX1BBUkFNU18ke1BOfS1zc2hkID0gImRlZmF1bHRzIDkiCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtQTn0tc3NoZCIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1zc2hkID0gInNzaGQuc29ja2V0IgorCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgcHRlc3QKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdba2VyYmVyb3NdID0gIi0td2l0aC1rZXJiZXJvczUsLS13aXRob3V0LWtlcmJlcm9zNSxrcmI1IgorUEFDS0FHRUNPTkZJR1tsZG5zXSA9ICItLXdpdGgtbGRucywtLXdpdGhvdXQtbGRucyxsZG5zIgorUEFDS0FHRUNPTkZJR1tsaWJlZGl0XSA9ICItLXdpdGgtbGliZWRpdCwtLXdpdGhvdXQtbGliZWRpdCxsaWJlZGl0IgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS13aXRoLW1hbnR5cGU9bWFuLC0td2l0aC1tYW50eXBlPWNhdCIKKworRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWFjbG9jYWwiCisKKyMgbG9naW4gcGF0aCBpcyBoYXJkY29kZWQgaW4gc3NoZAorRVhUUkFfT0VDT05GID0gIidMT0dJTl9QUk9HUkFNPSR7YmFzZV9iaW5kaXJ9L2xvZ2luJyBcCisgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtemxpYi12ZXJzaW9uLWNoZWNrIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtcHJpdnNlcC1wYXRoPSR7bG9jYWxzdGF0ZWRpcn0vcnVuL3NzaGQgXAorICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0ke3N5c2NvbmZkaXJ9L3NzaCBcCisgICAgICAgICAgICAgICAgLS13aXRoLXhhdXRoPSR7YmluZGlyfS94YXV0aCBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXN0cmlwIFwKKyAgICAgICAgICAgICAgICAiCisKKyMgbXVzbCBkb2Vzbid0IGltcGxlbWVudCB3dG1wL3V0bXAKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiAtLWRpc2FibGUtd3RtcCIKKworIyBTaW5jZSB3ZSBkbyBub3QgZGVwZW5kIG9uIGxpYmJzZCwgd2UgZG8gbm90IHdhbnQgY29uZmlndXJlIHRvIHVzZSBpdAorIyBqdXN0IGJlY2F1c2UgaXQgZmluZHMgbGlidXRpbC5oLiAgQnV0LCBzcGVjaWZ5aW5nIC0tZGlzYWJsZS1saWJ1dGlsCisjIGNhdXNlcyBjb21waWxlIGVycm9ycywgc28uLi4KK0NBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfYnNkX2xpYnV0aWxfaD1ubyBhY19jdl9oZWFkZXJfbGlidXRpbF9oPW5vIgorCisjIHBhc3N3ZCBwYXRoIGlzIGhhcmRjb2RlZCBpbiBzc2hkCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9QQVRIX1BBU1NXRF9QUk9HPSR7YmluZGlyfS9wYXNzd2QiCisKKyMgV2UgZG9uJ3Qgd2FudCB0byBkZXBlbmQgb24gbGliYmxvY2tmaWxlCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfaGVhZGVyX21haWxsb2NrX2g9bm8iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlleHBvcnQgTEQ9IiR7Q0N9IgorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3NzaGRfY29uZmlnICR7Qn0vCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoX2NvbmZpZyAke0J9LworfQorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgICAgICAjIHNraXAgcmVncmVzcy91bml0dGVzdHMvIGJpbmFyaWVzOiB0aGlzIHdpbGwgc2lsZW50bHkgc2tpcAorICAgICAgICAjIHVuaXR0ZXN0cyBpbiBydW4tcHRlc3RzIHdoaWNoIGlzIGdvb2QgYmVjYXVzZSB0aGV5IGFyZSBzbyBzbG93LgorICAgICAgICBvZV9ydW5tYWtlIHJlZ3Jlc3MvbW9kcGlwZSByZWdyZXNzL3NldHVpZC1hbGxvd2VkIHJlZ3Jlc3MvbmV0Y2F0IFwKKyAgICAgICAgICAgICAgICAgICByZWdyZXNzL2NoZWNrLXBlcm0gcmVncmVzcy9ta2R0ZW1wCit9CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KKwkJaW5zdGFsbCAtRCAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZCAke0R9JHtzeXNjb25mZGlyfS9wYW0uZC9zc2hkCisJCXNlZCAtaSAtZSAnczojVXNlUEFNIG5vOlVzZVBBTSB5ZXM6JyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcKKwlmaQorCisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IiBdOyB0aGVuCisJCXNlZCAtaSAtZSAnczojWDExRm9yd2FyZGluZyBubzpYMTFGb3J3YXJkaW5nIHllczonICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZworCWZpCisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQKKwlybSAtZiAke0R9JHtiaW5kaXJ9L3Nsb2dpbiAke0R9JHtkYXRhZGlyfS9Tc2guYmluCisJcm1kaXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuL3NzaGQgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vcnVuICR7RH0ke2xvY2Fsc3RhdGVkaXJ9CisJaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKwlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy45OV9zc2hkICR7RH0vJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9zc2hkCisJaW5zdGFsbCAtbSAwNzU1ICR7U30vY29udHJpYi9zc2gtY29weS1pZCAke0R9JHtiaW5kaXJ9CisKKwkjIENyZWF0ZSBjb25maWcgZmlsZXMgZm9yIHJlYWQtb25seSByb290ZnMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3NzaAorCWluc3RhbGwgLW0gNjQ0ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyAke0R9JHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkKKwlzZWQgLWkgJy9Ib3N0S2V5L2QnICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X3JzYV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCWVjaG8gIkhvc3RLZXkgL3Zhci9ydW4vc3NoL3NzaF9ob3N0X2VjZHNhX2tleSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vc3NoL3NzaGRfY29uZmlnX3JlYWRvbmx5CisJZWNobyAiSG9zdEtleSAvdmFyL3J1bi9zc2gvc3NoX2hvc3RfZWQyNTUxOV9rZXkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZ19yZWFkb25seQorCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGQuc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJaW5zdGFsbCAtYyAtbSAwNjQ0ICR7V09SS0RJUn0vc3NoZEAuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLWMgLW0gMDY0NCAke1dPUktESVJ9L3NzaGRnZW5rZXlzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisJCS1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQEJJTkRJUkAsJHtiaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0vJHtCUE59LGcnIFwKKwkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3NoZC5zb2NrZXQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi5zZXJ2aWNlCisKKwlzZWQgLWkgLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0vJHtCUE59LGcnIFwKKwkJJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3NzaGQKKworCWluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L3NzaGRfY2hlY2tfa2V5cyAke0R9JHtsaWJleGVjZGlyfS8ke0JQTn0vc3NoZF9jaGVja19rZXlzCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworCXNlZCAtaSAtZSAic3xeU0ZUUFNFUlZFUj0uKnxTRlRQU0VSVkVSPSR7bGliZXhlY2Rpcn0vc2Z0cC1zZXJ2ZXJ8IiByZWdyZXNzL3Rlc3QtZXhlYy5zaAorCWNwIC1yIHJlZ3Jlc3MgJHtEfSR7UFRFU1RfUEFUSH0KK30KKworQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKKworUEFDS0FHRVMgPSsgIiR7UE59LWtleWdlbiAke1BOfS1zY3AgJHtQTn0tc3NoICR7UE59LXNzaGQgJHtQTn0tc2Z0cCAke1BOfS1taXNjICR7UE59LXNmdHAtc2VydmVyIgorRklMRVNfJHtQTn0tc2NwID0gIiR7YmluZGlyfS9zY3AuJHtCUE59IgorRklMRVNfJHtQTn0tc3NoID0gIiR7YmluZGlyfS9zc2guJHtCUE59ICR7c3lzY29uZmRpcn0vc3NoL3NzaF9jb25maWciCitGSUxFU18ke1BOfS1zc2hkID0gIiR7c2JpbmRpcn0vc3NoZCAke3N5c2NvbmZkaXJ9L2luaXQuZC9zc2hkICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0iCitGSUxFU18ke1BOfS1zc2hkICs9ICIke3N5c2NvbmZkaXJ9L3NzaC9tb2R1bGkgJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWcgJHtzeXNjb25mZGlyfS9zc2gvc3NoZF9jb25maWdfcmVhZG9ubHkgJHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcy85OV9zc2hkICR7c3lzY29uZmRpcn0vcGFtLmQvc3NoZCIKK0ZJTEVTXyR7UE59LXNzaGQgKz0gIiR7bGliZXhlY2Rpcn0vJHtCUE59L3NzaGRfY2hlY2tfa2V5cyIKK0ZJTEVTXyR7UE59LXNmdHAgPSAiJHtiaW5kaXJ9L3NmdHAiCitGSUxFU18ke1BOfS1zZnRwLXNlcnZlciA9ICIke2xpYmV4ZWNkaXJ9L3NmdHAtc2VydmVyIgorRklMRVNfJHtQTn0tbWlzYyA9ICIke2JpbmRpcn0vc3NoKiAke2xpYmV4ZWNkaXJ9L3NzaCoiCitGSUxFU18ke1BOfS1rZXlnZW4gPSAiJHtiaW5kaXJ9L3NzaC1rZXlnZW4iCisKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1zY3AgJHtQTn0tc3NoICR7UE59LXNzaGQgJHtQTn0ta2V5Z2VuIgorUkRFUEVORFNfJHtQTn0tc3NoZCArPSAiJHtQTn0ta2V5Z2VuICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4ta2V5aW5pdCBwYW0tcGx1Z2luLWxvZ2ludWlkJywgJycsIGQpfSIKK1JSRUNPTU1FTkRTXyR7UE59LXNzaGRfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgcm5nLXRvb2xzIgorIyBnZGIgd291bGQgbWFrZSBhdHRhY2gtcHRyYWNlIHRlc3QgcGFzcyByYXRoZXIgdGhhbiBza2lwIGJ1dCBub3Qgd29ydGggdGhlIGJ1aWxkIGRlcGVuZGVuY2llcworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiR7UE59LXNmdHAgJHtQTn0tbWlzYyAke1BOfS1zZnRwLXNlcnZlciBtYWtlIHNlZCBzdWRvIGNvcmV1dGlscyIKKworUlBST1ZJREVTXyR7UE59LXNzaCA9ICJzc2giCitSUFJPVklERVNfJHtQTn0tc3NoZCA9ICJzc2hkIgorCitSQ09ORkxJQ1RTXyR7UE59ID0gImRyb3BiZWFyIgorUkNPTkZMSUNUU18ke1BOfS1zc2hkID0gImRyb3BiZWFyIgorCitDT05GRklMRVNfJHtQTn0tc3NoZCA9ICIke3N5c2NvbmZkaXJ9L3NzaC9zc2hkX2NvbmZpZyIKK0NPTkZGSUxFU18ke1BOfS1zc2ggPSAiJHtzeXNjb25mZGlyfS9zc2gvc3NoX2NvbmZpZyIKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiOTAiCitBTFRFUk5BVElWRV8ke1BOfS1zY3AgPSAic2NwIgorQUxURVJOQVRJVkVfJHtQTn0tc3NoID0gInNzaCIKKworQkJDTEFTU0VYVEVORCArPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9yZXByb2R1Y2libGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsL3JlcHJvZHVjaWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMjQyNjBjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbC9yZXByb2R1Y2libGUucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorVGhlIHZhbHVlIGZvciBwZXJsX2FyY2huYW1lIGNhbiB2YXJ5IGRlcGVuZGluZyBvbiB0aGUgaG9zdCwgZS5nLiAKK3g4Nl82NC1saW51eC1nbnUtdGhyZWFkLW11bHRpIG9yIHg4Nl82NC1saW51eC10aHJlYWQtbXVsdGkgd2hpY2gKK21ha2VzIHRoZSBwdGVzdCBwYWNrYWdlIG5vbi1yZXByb2R1Y2libGUuIEl0cyB1bnVzZWQgb3RoZXIgdGhhbiAKK3RoZXNlIHJlZmVyZW5jZXMgc28gZHJvcCBpdC4KKworUlAgMjAyMC8yLzYKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KKworSW5kZXg6IG9wZW5zc2wtMS4xLjFkL0NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIG9wZW5zc2wtMS4xLjFkLm9yaWcvQ29uZmlndXJlCisrKysgb3BlbnNzbC0xLjEuMWQvQ29uZmlndXJlCitAQCAtMjg2LDcgKzI4Niw3IEBAIGlmIChkZWZpbmVkIGVudigkbG9jYWxfY29uZmlnX2Vudm5hbWUpKQorICMgU2F2ZSBhd2F5IHBlcmwgY29tbWFuZCBpbmZvcm1hdGlvbgorICRjb25maWd7cGVybF9jbWR9ID0gJF5YOworICRjb25maWd7cGVybF92ZXJzaW9ufSA9ICRDb25maWd7dmVyc2lvbn07CistJGNvbmZpZ3twZXJsX2FyY2huYW1lfSA9ICRDb25maWd7YXJjaG5hbWV9OworKyMkY29uZmlne3BlcmxfYXJjaG5hbWV9ID0gJENvbmZpZ3thcmNobmFtZX07CisgCisgJGNvbmZpZ3twcmVmaXh9PSIiOworICRjb25maWd7b3BlbnNzbGRpcn09IiI7CitAQCAtMjUxNyw3ICsyNTE3LDcgQEAgX19fX18KKyAgICAgICAgICAgICAgICAgICAgICAgICAgIEB7JGNvbmZpZ3twZXJsYXJndn19KSwgIlxuIjsKKyAgICAgICAgIHByaW50ICJcblBlcmwgaW5mb3JtYXRpb246XG5cbiI7CisgICAgICAgICBwcmludCAnICAgICcsJGNvbmZpZ3twZXJsX2NtZH0sIlxuIjsKKy0gICAgICAgIHByaW50ICcgICAgJywkY29uZmlne3BlcmxfdmVyc2lvbn0sJyBmb3IgJywkY29uZmlne3BlcmxfYXJjaG5hbWV9LCJcbiI7CisrICAgICAgICBwcmludCAnICAgICcsJGNvbmZpZ3twZXJsX3ZlcnNpb259LCJcbiI7CisgICAgIH0KKyAgICAgaWYgKCRkdW1wIHx8ICRvcHRpb25zKSB7CisgICAgICAgICBteSAkbG9uZ2VzdCA9IDA7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvb3BlbnNzbC9vcGVuc3NsXzEuMS4xZC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4xLjFkLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ODE5ZTE5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4xLjFkLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjA0ICswLDAgQEAKLVNVTU1BUlkgPSAiU2VjdXJlIFNvY2tldCBMYXllciIKLURFU0NSSVBUSU9OID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIgKFNTTCkgYmluYXJ5IGFuZCByZWxhdGVkIGNyeXB0b2dyYXBoaWMgdG9vbHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvbmV3cy92dWxuZXJhYmlsaXRpZXMuaHRtbCIKLVNFQ1RJT04gPSAibGlicy9uZXR3b3JrIgotCi0jICJvcGVuc3NsIiBoZXJlIGFjdHVhbGx5IG1lYW5zIGJvdGggT3BlblNTTCBhbmQgU1NMZWF5IGxpY2Vuc2VzIGFwcGx5Ci0jIChzZWUgbWV0YS9maWxlcy9jb21tb24tbGljZW5zZXMvT3BlblNTTCB0byB3aGljaCAib3BlbnNzbCIgaXMgU1BEWExJQ0VOU0VNQVBwZWQpCi1MSUNFTlNFID0gIm9wZW5zc2wiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kMzQzZTYyZmM5YzgzMzcxMGJiYmVkMjVmMjczNjRjOCIKLQotREVQRU5EUyA9ICJob3N0cGVybC1ydW50aW1lLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL3NvdXJjZS9vcGVuc3NsLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1za2lwLXRlc3Rfc3ltYm9sX3ByZXNlbmNlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGRpbmZvLXN0cmlwLXN5c3Jvb3QtYW5kLWRlYnVnLXByZWZpeC1tYXAtZnJvbS1jby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hZmFsZy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly9lbnZpcm9ubWVudC5kLW9wZW5zc2wuc2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzYmUyMDkwMDBkYmM3ZTFiOTViY2RmNDc5ODBhM2JhYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZTNhOTFiYzFmOWRmY2UwMWFmMjYwMjZmODU2ZTA2NGVhYjRjOGVlMGE4ZjQ1N2I1YWUzMGI0MGI4YjcxMWYyIgotCi1pbmhlcml0IGxpYl9wYWNrYWdlIG11bHRpbGliX2hlYWRlciBtdWx0aWxpYl9zY3JpcHQgcHRlc3QKLU1VTFRJTElCX1NDUklQVFMgPSAiJHtQTn0tYmluOiR7YmluZGlyfS9jX3JlaGFzaCIKLQotUEFDS0FHRUNPTkZJRyA/PSAiIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiIgotCi1QQUNLQUdFQ09ORklHW2NyeXB0b2Rldi1saW51eF0gPSAiZW5hYmxlLWRldmNyeXB0b2VuZyxkaXNhYmxlLWRldmNyeXB0b2VuZyxjcnlwdG9kZXYtbGludXgiCi0KLUIgPSAiJHtXT1JLRElSfS9idWlsZCIKLWRvX2NvbmZpZ3VyZVtjbGVhbmRpcnNdID0gIiR7Qn0iCi0KLSN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBnZXRjb250ZXh0JwotI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYHNldGNvbnRleHQnCi0jfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgbWFrZWNvbnRleHQnCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgbm8tYXN5bmMiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbF9wb3dlcnBjNjQgPSAiIG5vLWFzbSIKLQotIyBhZGRpbmcgZGV2cmFuZG9tIHByZXZlbnRzIG9wZW5zc2wgZnJvbSB1c2luZyBnZXRyYW5kb20oKSB3aGljaCBpcyBub3QgYXZhaWxhYmxlIG9uIG9sZGVyIGdsaWJjIHZlcnNpb25zCi0jIChuYXRpdmUgdmVyc2lvbnMgY2FuIGJlIGJ1aWx0IHdpdGggbmV3ZXIgZ2xpYmMsIGJ1dCB0aGVuIHJlbG9jYXRlZCBvbnRvIGEgc3lzdGVtIHdpdGggb2xkZXIgZ2xpYmMpCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aC1yYW5kLXNlZWQ9b3MsZGV2cmFuZG9tIgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLXdpdGgtcmFuZC1zZWVkPW9zLGRldnJhbmRvbSIKLQotIyBSZWx5aW5nIG9uIGhhcmRjb2RlZCBidWlsdC1pbiBwYXRocyBjYXVzZXMgb3BlbnNzbC1uYXRpdmUgdG8gbm90IGJlIHJlbG9jYXRlYWJsZSBmcm9tIHNzdGF0ZS4KLUNGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtRE9QRU5TU0xESVI9L25vdC9idWlsdGluIC1ERU5HSU5FU0RJUj0vbm90L2J1aWx0aW4iCi1DRkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgLURPUEVOU1NMRElSPS9ub3QvYnVpbHRpbiAtREVOR0lORVNESVI9L25vdC9idWlsdGluIgotCi1kb19jb25maWd1cmUgKCkgewotCW9zPSR7SE9TVF9PU30KLQljYXNlICRvcyBpbgotCWxpbnV4LWdudWVhYmkgfFwKLQlsaW51eC1nbnVzcGUgfFwKLQlsaW51eC1tdXNsZWFiaSB8XAotCWxpbnV4LW11c2xzcGUgfFwKLQlsaW51eC1tdXNsICkKLQkJb3M9bGludXgKLQkJOzsKLQkqKQotCQk7OwotCWVzYWMKLQl0YXJnZXQ9IiRvcy0ke0hPU1RfQVJDSH0iCi0JY2FzZSAkdGFyZ2V0IGluCi0JbGludXgtYXJtKikKLQkJdGFyZ2V0PWxpbnV4LWFybXY0Ci0JCTs7Ci0JbGludXgtYWFyY2g2NCopCi0JCXRhcmdldD1saW51eC1hYXJjaDY0Ci0JCTs7Ci0JbGludXgtaT84NiB8IGxpbnV4LXZpYWMzKQotCQl0YXJnZXQ9bGludXgteDg2Ci0JCTs7Ci0JbGludXgtZ251eDMyLXg4Nl82NCB8IGxpbnV4LW11c2x4MzIteDg2XzY0ICkKLQkJdGFyZ2V0PWxpbnV4LXgzMgotCQk7OwotCWxpbnV4LWdudTY0LXg4Nl82NCkKLQkJdGFyZ2V0PWxpbnV4LXg4Nl82NAotCQk7OwotCWxpbnV4LW1pcHMgfCBsaW51eC1taXBzZWwpCi0JCSMgc3BlY2lmeWluZyBUQVJHRVRfQ0NfQVJDSCBwcmV2ZW50cyBvcGVuc3NsIGZyb20gKGluY29ycmVjdGx5KSBhZGRpbmcgdGFyZ2V0IGFyY2hpdGVjdHVyZSBmbGFncwotCQl0YXJnZXQ9ImxpbnV4LW1pcHMzMiAke1RBUkdFVF9DQ19BUkNIfSIKLQkJOzsKLQlsaW51eC1nbnVuMzItbWlwcyopCi0JCXRhcmdldD1saW51eC1taXBzNjQKLQkJOzsKLQlsaW51eC0qLW1pcHM2NCB8IGxpbnV4LW1pcHM2NCB8IGxpbnV4LSotbWlwczY0ZWwgfCBsaW51eC1taXBzNjRlbCkKLQkJdGFyZ2V0PWxpbnV4NjQtbWlwczY0Ci0JCTs7Ci0JbGludXgtbWljcm9ibGF6ZSogfCBsaW51eC1uaW9zMiogfCBsaW51eC1zaDMgfCBsaW51eC1zaDQgfCBsaW51eC1hcmMqKQotCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCi0JCTs7Ci0JbGludXgtcG93ZXJwYykKLQkJdGFyZ2V0PWxpbnV4LXBwYwotCQk7OwotCWxpbnV4LXBvd2VycGM2NCkKLQkJdGFyZ2V0PWxpbnV4LXBwYzY0Ci0JCTs7Ci0JbGludXgtcmlzY3YzMikKLQkJdGFyZ2V0PWxpbnV4LWdlbmVyaWMzMgotCQk7OwotCWxpbnV4LXJpc2N2NjQpCi0JCXRhcmdldD1saW51eC1nZW5lcmljNjQKLQkJOzsKLQlsaW51eC1zcGFyYyB8IGxpbnV4LXN1cGVyc3BhcmMpCi0JCXRhcmdldD1saW51eC1zcGFyY3Y5Ci0JCTs7Ci0JZXNhYwotCi0JdXNlcHJlZml4PSR7cHJlZml4fQotCWlmIFsgIngkdXNlcHJlZml4IiA9ICJ4IiBdOyB0aGVuCi0JCXVzZXByZWZpeD0vCi0JZmkKLQkjIFdBUk5JTkc6IGRvIG5vdCBzZXQgY29tcGlsZXIvbGlua2VyIGZsYWdzICgtSS8tRCBldGMuKSBpbiBFWFRSQV9PRUNPTkYsIGFzIHRoZXkgd2lsbCBmdWxseSByZXBsYWNlIHRoZQotCSMgZW52aXJvbm1lbnQgdmFyaWFibGVzIHNldCBieSBiaXRiYWtlLiBBZGp1c3QgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBpbnN0ZWFkLgotCVBFUkw1TElCPSIke1N9L2V4dGVybmFsL3BlcmwvVGV4dC1UZW1wbGF0ZS0xLjQ2L2xpYi8iIFwKLQlwZXJsICR7U30vQ29uZmlndXJlICR7RVhUUkFfT0VDT05GfSAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IC0tcHJlZml4PSR1c2VwcmVmaXggLS1vcGVuc3NsZGlyPSR7bGliZGlyfS9zc2wtMS4xIC0tbGliZGlyPSR7bGliZGlyfSAkdGFyZ2V0Ci0JcGVybCAke0J9L2NvbmZpZ2RhdGEucG0gLS1kdW1wCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSIgTUFORElSPSIke21hbmRpcn0iIE1BTlNVRkZJWD1zc2wgaW5zdGFsbAotCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIG9wZW5zc2wvb3BlbnNzbGNvbmYuaAotCi0JIyBDcmVhdGUgU1NMIHN0cnVjdHVyZSBmb3IgcGFja2FnZXMgc3VjaCBhcyBjYS1jZXJ0aWZpY2F0ZXMgd2hpY2gKLQkjIGNvbnRhaW4gaGFyZC1jb2RlZCBwYXRocyB0byAvZXRjL3NzbC4gRGViaWFuIGRvZXMgdGhlIHNhbWUuCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zc2wKLQltdiAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvY2VydHMgXAotCSAgICR7RH0ke2xpYmRpcn0vc3NsLTEuMS9wcml2YXRlIFwKLQkgICAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvb3BlbnNzbC5jbmYgXAotCSAgICR7RH0ke3N5c2NvbmZkaXJ9L3NzbC8KLQotCSMgQWx0aG91Z2ggYWJzb2x1dGUgc3ltbGlua3Mgd291bGQgYmUgT0sgZm9yIHRoZSB0YXJnZXQsIHRoZXkgYmVjb21lCi0JIyBpbnZhbGlkIGlmIG5hdGl2ZSBvciBuYXRpdmVzZGsgYXJlIHJlbG9jYXRlZCBmcm9tIHNzdGF0ZS4KLQlsbiAtc2YgJHtAb2UucGF0aC5yZWxhdGl2ZSgnJHtsaWJkaXJ9L3NzbC0xLjEnLCAnJHtzeXNjb25mZGlyfS9zc2wvY2VydHMnKX0gJHtEfSR7bGliZGlyfS9zc2wtMS4xL2NlcnRzCi0JbG4gLXNmICR7QG9lLnBhdGgucmVsYXRpdmUoJyR7bGliZGlyfS9zc2wtMS4xJywgJyR7c3lzY29uZmRpcn0vc3NsL3ByaXZhdGUnKX0gJHtEfSR7bGliZGlyfS9zc2wtMS4xL3ByaXZhdGUKLQlsbiAtc2YgJHtAb2UucGF0aC5yZWxhdGl2ZSgnJHtsaWJkaXJ9L3NzbC0xLjEnLCAnJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYnKX0gJHtEfSR7bGliZGlyfS9zc2wtMS4xL29wZW5zc2wuY25mCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9vcGVuc3NsIFwKLQkgICAgT1BFTlNTTF9DT05GPSR7bGliZGlyfS9zc2wtMS4xL29wZW5zc2wuY25mIFwKLQkgICAgU1NMX0NFUlRfRElSPSR7bGliZGlyfS9zc2wtMS4xL2NlcnRzIFwKLQkgICAgU1NMX0NFUlRfRklMRT0ke2xpYmRpcn0vc3NsLTEuMS9jZXJ0LnBlbSBcCi0JICAgIE9QRU5TU0xfRU5HSU5FUz0ke2xpYmRpcn0vZW5naW5lcy0xLjEKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKLQlta2RpciAtcCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kCi0JaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9lbnZpcm9ubWVudC5kLW9wZW5zc2wuc2ggJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZC9vcGVuc3NsLnNoCi0Jc2VkICdzfC91c3IvbGliL3NzbC98L3Vzci9saWIvc3NsLTEuMS98ZycgLWkgJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZC9vcGVuc3NsLnNoCi19Ci0KLVBURVNUX0JVSUxEX0hPU1RfRklMRVMgKz0gImNvbmZpZ2RhdGEucG0iCi1QVEVTVF9CVUlMRF9IT1NUX1BBVFRFUk4gPSAicGVybF92ZXJzaW9uID0iCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLQkjIFBydW5lIHRoZSBidWlsZCB0cmVlCi0Jcm0gLWYgJHtCfS9mdXp6LyouKiAke0J9L3Rlc3QvKi4qCi0KLQljcCAke1N9L0NvbmZpZ3VyZSAke0J9L2NvbmZpZ2RhdGEucG0gJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke1N9L2V4dGVybmFsICR7Qn0vdGVzdCAke1N9L3Rlc3QgJHtCfS9mdXp6ICR7U30vdXRpbCAke0J9L3V0aWwgJHtEfSR7UFRFU1RfUEFUSH0KLQotCSMgRm9yIHRlc3Rfc2hsaWJsb2FkCi0JbG4gLXMgJHtsaWJkaXJ9L2xpYmNyeXB0by5zby4xLjEgJHtEfSR7UFRFU1RfUEFUSH0vCi0JbG4gLXMgJHtsaWJkaXJ9L2xpYnNzbC5zby4xLjEgJHtEfSR7UFRFU1RfUEFUSH0vCi0KLQlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKLQlsbiAtcyAke2JpbmRpcn0vb3BlbnNzbCAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCi0JaW5zdGFsbCAtbTY0NCAke1N9L2FwcHMvKi5wZW0gJHtTfS9hcHBzLyouc3JsICR7U30vYXBwcy9vcGVuc3NsLmNuZiAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCi0JaW5zdGFsbCAtbTc1NSAke0J9L2FwcHMvQ0EucGwgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcwotCi0JaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9lbmdpbmVzCi0JaW5zdGFsbCAtbTc1NSAke0J9L2VuZ2luZXMvb3NzbHRlc3Quc28gJHtEfSR7UFRFU1RfUEFUSH0vZW5naW5lcwotfQotCi0jIEFkZCB0aGUgb3BlbnNzbC5jbmYgZmlsZSB0byB0aGUgb3BlbnNzbC1jb25mIHBhY2thZ2UuIE1ha2UgdGhlIGxpYmNyeXB0bwotIyBwYWNrYWdlIFJSRUNPTU1FTkRTIG9uIHRoaXMgcGFja2FnZS4gVGhpcyB3aWxsIGVuYWJsZSB0aGUgY29uZmlndXJhdGlvbgotIyBmaWxlIHRvIGJlIGluc3RhbGxlZCBmb3IgYm90aCB0aGUgb3BlbnNzbC1iaW4gcGFja2FnZSBhbmQgdGhlIGxpYmNyeXB0bwotIyBwYWNrYWdlIHNpbmNlIHRoZSBvcGVuc3NsLWJpbiBwYWNrYWdlIGRlcGVuZHMgb24gdGhlIGxpYmNyeXB0byBwYWNrYWdlLgotCi1QQUNLQUdFUyA9KyAibGliY3J5cHRvIGxpYnNzbCBvcGVuc3NsLWNvbmYgJHtQTn0tZW5naW5lcyAke1BOfS1taXNjIgotCi1GSUxFU19saWJjcnlwdG8gPSAiJHtsaWJkaXJ9L2xpYmNyeXB0byR7U09MSUJTfSIKLUZJTEVTX2xpYnNzbCA9ICIke2xpYmRpcn0vbGlic3NsJHtTT0xJQlN9IgotRklMRVNfb3BlbnNzbC1jb25mID0gIiR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mIgotRklMRVNfJHtQTn0tZW5naW5lcyA9ICIke2xpYmRpcn0vZW5naW5lcy0xLjEiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9zc2wtMS4xL21pc2MiCi1GSUxFU18ke1BOfSA9KyAiJHtsaWJkaXJ9L3NzbC0xLjEvKiIKLUZJTEVTXyR7UE59X2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiICR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZC9vcGVuc3NsLnNoIgotCi1DT05GRklMRVNfb3BlbnNzbC1jb25mID0gIiR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mIgotCi1SUkVDT01NRU5EU19saWJjcnlwdG8gKz0gIm9wZW5zc2wtY29uZiIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJvcGVuc3NsLWJpbiBwZXJsIHBlcmwtbW9kdWxlcyBiYXNoIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLUNWRV9QUk9EVUNUID0gIm9wZW5zc2w6b3BlbnNzbCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4xLjFmLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L29wZW5zc2wvb3BlbnNzbF8xLjEuMWYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZhMmI0MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9vcGVuc3NsL29wZW5zc2xfMS4xLjFmLmJiCkBAIC0wLDAgKzEsMjExIEBACitTVU1NQVJZID0gIlNlY3VyZSBTb2NrZXQgTGF5ZXIiCitERVNDUklQVElPTiA9ICJTZWN1cmUgU29ja2V0IExheWVyIChTU0wpIGJpbmFyeSBhbmQgcmVsYXRlZCBjcnlwdG9ncmFwaGljIHRvb2xzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cub3BlbnNzbC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3Lm9wZW5zc2wub3JnL25ld3MvdnVsbmVyYWJpbGl0aWVzLmh0bWwiCitTRUNUSU9OID0gImxpYnMvbmV0d29yayIKKworIyAib3BlbnNzbCIgaGVyZSBhY3R1YWxseSBtZWFucyBib3RoIE9wZW5TU0wgYW5kIFNTTGVheSBsaWNlbnNlcyBhcHBseQorIyAoc2VlIG1ldGEvZmlsZXMvY29tbW9uLWxpY2Vuc2VzL09wZW5TU0wgdG8gd2hpY2ggIm9wZW5zc2wiIGlzIFNQRFhMSUNFTlNFTUFQcGVkKQorTElDRU5TRSA9ICJvcGVuc3NsIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZDM0M2U2MmZjOWM4MzM3MTBiYmJlZDI1ZjI3MzY0YzgiCisKK0RFUEVORFMgPSAiaG9zdHBlcmwtcnVudGltZS1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVuc3NsLm9yZy9zb3VyY2Uvb3BlbnNzbC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc2tpcC10ZXN0X3N5bWJvbF9wcmVzZW5jZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkaW5mby1zdHJpcC1zeXNyb290LWFuZC1kZWJ1Zy1wcmVmaXgtbWFwLWZyb20tY28ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYWZhbGcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcmVwcm9kdWNpYmxlLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIFwKKyAgICAgICAgICAgZmlsZTovL2Vudmlyb25tZW50LmQtb3BlbnNzbC5zaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE4NmM2YmZlNmVjZmJhN2E1YjQ4YzQ3ZjhhMTY3M2QwZjNiMGU1YmEyZTI1NjAyZGQyM2I2Mjk5NzVkYTNmMzUiCisKK2luaGVyaXQgbGliX3BhY2thZ2UgbXVsdGlsaWJfaGVhZGVyIG11bHRpbGliX3NjcmlwdCBwdGVzdAorTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfS1iaW46JHtiaW5kaXJ9L2NfcmVoYXNoIgorCitQQUNLQUdFQ09ORklHID89ICIiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIiCisKK1BBQ0tBR0VDT05GSUdbY3J5cHRvZGV2LWxpbnV4XSA9ICJlbmFibGUtZGV2Y3J5cHRvZW5nLGRpc2FibGUtZGV2Y3J5cHRvZW5nLGNyeXB0b2Rldi1saW51eCwsY3J5cHRvZGV2LW1vZHVsZSIKKworQiA9ICIke1dPUktESVJ9L2J1aWxkIgorZG9fY29uZmlndXJlW2NsZWFuZGlyc10gPSAiJHtCfSIKKworI3wgLi9saWJjcnlwdG8uc286IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYGdldGNvbnRleHQnCisjfCAuL2xpYmNyeXB0by5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgc2V0Y29udGV4dCcKKyN8IC4vbGliY3J5cHRvLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBtYWtlY29udGV4dCcKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsID0gIiBuby1hc3luYyIKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGliYy1tdXNsX3Bvd2VycGM2NCA9ICIgbm8tYXNtIgorCisjIGFkZGluZyBkZXZyYW5kb20gcHJldmVudHMgb3BlbnNzbCBmcm9tIHVzaW5nIGdldHJhbmRvbSgpIHdoaWNoIGlzIG5vdCBhdmFpbGFibGUgb24gb2xkZXIgZ2xpYmMgdmVyc2lvbnMKKyMgKG5hdGl2ZSB2ZXJzaW9ucyBjYW4gYmUgYnVpbHQgd2l0aCBuZXdlciBnbGliYywgYnV0IHRoZW4gcmVsb2NhdGVkIG9udG8gYSBzeXN0ZW0gd2l0aCBvbGRlciBnbGliYykKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRoLXJhbmQtc2VlZD1vcyxkZXZyYW5kb20iCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlc2RrID0gIi0td2l0aC1yYW5kLXNlZWQ9b3MsZGV2cmFuZG9tIgorCisjIFJlbHlpbmcgb24gaGFyZGNvZGVkIGJ1aWx0LWluIHBhdGhzIGNhdXNlcyBvcGVuc3NsLW5hdGl2ZSB0byBub3QgYmUgcmVsb2NhdGVhYmxlIGZyb20gc3N0YXRlLgorQ0ZMQUdTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIC1ET1BFTlNTTERJUj0vbm90L2J1aWx0aW4gLURFTkdJTkVTRElSPS9ub3QvYnVpbHRpbiIKK0NGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiAtRE9QRU5TU0xESVI9L25vdC9idWlsdGluIC1ERU5HSU5FU0RJUj0vbm90L2J1aWx0aW4iCisKK2RvX2NvbmZpZ3VyZSAoKSB7CisJb3M9JHtIT1NUX09TfQorCWNhc2UgJG9zIGluCisJbGludXgtZ251ZWFiaSB8XAorCWxpbnV4LWdudXNwZSB8XAorCWxpbnV4LW11c2xlYWJpIHxcCisJbGludXgtbXVzbHNwZSB8XAorCWxpbnV4LW11c2wgKQorCQlvcz1saW51eAorCQk7OworCSopCisJCTs7CisJZXNhYworCXRhcmdldD0iJG9zLSR7SE9TVF9BUkNIfSIKKwljYXNlICR0YXJnZXQgaW4KKwlsaW51eC1hcm0qKQorCQl0YXJnZXQ9bGludXgtYXJtdjQKKwkJOzsKKwlsaW51eC1hYXJjaDY0KikKKwkJdGFyZ2V0PWxpbnV4LWFhcmNoNjQKKwkJOzsKKwlsaW51eC1pPzg2IHwgbGludXgtdmlhYzMpCisJCXRhcmdldD1saW51eC14ODYKKwkJOzsKKwlsaW51eC1nbnV4MzIteDg2XzY0IHwgbGludXgtbXVzbHgzMi14ODZfNjQgKQorCQl0YXJnZXQ9bGludXgteDMyCisJCTs7CisJbGludXgtZ251NjQteDg2XzY0KQorCQl0YXJnZXQ9bGludXgteDg2XzY0CisJCTs7CisJbGludXgtbWlwcyB8IGxpbnV4LW1pcHNlbCkKKwkJIyBzcGVjaWZ5aW5nIFRBUkdFVF9DQ19BUkNIIHByZXZlbnRzIG9wZW5zc2wgZnJvbSAoaW5jb3JyZWN0bHkpIGFkZGluZyB0YXJnZXQgYXJjaGl0ZWN0dXJlIGZsYWdzCisJCXRhcmdldD0ibGludXgtbWlwczMyICR7VEFSR0VUX0NDX0FSQ0h9IgorCQk7OworCWxpbnV4LWdudW4zMi1taXBzKikKKwkJdGFyZ2V0PWxpbnV4LW1pcHM2NAorCQk7OworCWxpbnV4LSotbWlwczY0IHwgbGludXgtbWlwczY0IHwgbGludXgtKi1taXBzNjRlbCB8IGxpbnV4LW1pcHM2NGVsKQorCQl0YXJnZXQ9bGludXg2NC1taXBzNjQKKwkJOzsKKwlsaW51eC1taWNyb2JsYXplKiB8IGxpbnV4LW5pb3MyKiB8IGxpbnV4LXNoMyB8IGxpbnV4LXNoNCB8IGxpbnV4LWFyYyopCisJCXRhcmdldD1saW51eC1nZW5lcmljMzIKKwkJOzsKKwlsaW51eC1wb3dlcnBjKQorCQl0YXJnZXQ9bGludXgtcHBjCisJCTs7CisJbGludXgtcG93ZXJwYzY0KQorCQl0YXJnZXQ9bGludXgtcHBjNjQKKwkJOzsKKwlsaW51eC1wb3dlcnBjNjRsZSkKKwkJdGFyZ2V0PWxpbnV4LXBwYzY0bGUKKwkJOzsKKwlsaW51eC1yaXNjdjMyKQorCQl0YXJnZXQ9bGludXgtZ2VuZXJpYzMyCisJCTs7CisJbGludXgtcmlzY3Y2NCkKKwkJdGFyZ2V0PWxpbnV4LWdlbmVyaWM2NAorCQk7OworCWxpbnV4LXNwYXJjIHwgbGludXgtc3VwZXJzcGFyYykKKwkJdGFyZ2V0PWxpbnV4LXNwYXJjdjkKKwkJOzsKKwllc2FjCisKKwl1c2VwcmVmaXg9JHtwcmVmaXh9CisJaWYgWyAieCR1c2VwcmVmaXgiID0gIngiIF07IHRoZW4KKwkJdXNlcHJlZml4PS8KKwlmaQorCSMgV0FSTklORzogZG8gbm90IHNldCBjb21waWxlci9saW5rZXIgZmxhZ3MgKC1JLy1EIGV0Yy4pIGluIEVYVFJBX09FQ09ORiwgYXMgdGhleSB3aWxsIGZ1bGx5IHJlcGxhY2UgdGhlCisJIyBlbnZpcm9ubWVudCB2YXJpYWJsZXMgc2V0IGJ5IGJpdGJha2UuIEFkanVzdCB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGVzIGluc3RlYWQuCisJSEFTSEJBTkdQRVJMPSIvdXNyL2Jpbi9lbnYgcGVybCIgUEVSTD1wZXJsIFBFUkw1TElCPSIke1N9L2V4dGVybmFsL3BlcmwvVGV4dC1UZW1wbGF0ZS0xLjQ2L2xpYi8iIFwKKwlwZXJsICR7U30vQ29uZmlndXJlICR7RVhUUkFfT0VDT05GfSAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IC0tcHJlZml4PSR1c2VwcmVmaXggLS1vcGVuc3NsZGlyPSR7bGliZGlyfS9zc2wtMS4xIC0tbGliZGlyPSR7bGliZGlyfSAkdGFyZ2V0CisJcGVybCAke0J9L2NvbmZpZ2RhdGEucG0gLS1kdW1wCit9CisKK2RvX2luc3RhbGwgKCkgeworCW9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSIgTUFORElSPSIke21hbmRpcn0iIE1BTlNVRkZJWD1zc2wgaW5zdGFsbAorCisJb2VfbXVsdGlsaWJfaGVhZGVyIG9wZW5zc2wvb3BlbnNzbGNvbmYuaAorCisJIyBDcmVhdGUgU1NMIHN0cnVjdHVyZSBmb3IgcGFja2FnZXMgc3VjaCBhcyBjYS1jZXJ0aWZpY2F0ZXMgd2hpY2gKKwkjIGNvbnRhaW4gaGFyZC1jb2RlZCBwYXRocyB0byAvZXRjL3NzbC4gRGViaWFuIGRvZXMgdGhlIHNhbWUuCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zc2wKKwltdiAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvY2VydHMgXAorCSAgICR7RH0ke2xpYmRpcn0vc3NsLTEuMS9wcml2YXRlIFwKKwkgICAke0R9JHtsaWJkaXJ9L3NzbC0xLjEvb3BlbnNzbC5jbmYgXAorCSAgICR7RH0ke3N5c2NvbmZkaXJ9L3NzbC8KKworCSMgQWx0aG91Z2ggYWJzb2x1dGUgc3ltbGlua3Mgd291bGQgYmUgT0sgZm9yIHRoZSB0YXJnZXQsIHRoZXkgYmVjb21lCisJIyBpbnZhbGlkIGlmIG5hdGl2ZSBvciBuYXRpdmVzZGsgYXJlIHJlbG9jYXRlZCBmcm9tIHNzdGF0ZS4KKwlsbiAtc2YgJHtAb2UucGF0aC5yZWxhdGl2ZSgnJHtsaWJkaXJ9L3NzbC0xLjEnLCAnJHtzeXNjb25mZGlyfS9zc2wvY2VydHMnKX0gJHtEfSR7bGliZGlyfS9zc2wtMS4xL2NlcnRzCisJbG4gLXNmICR7QG9lLnBhdGgucmVsYXRpdmUoJyR7bGliZGlyfS9zc2wtMS4xJywgJyR7c3lzY29uZmRpcn0vc3NsL3ByaXZhdGUnKX0gJHtEfSR7bGliZGlyfS9zc2wtMS4xL3ByaXZhdGUKKwlsbiAtc2YgJHtAb2UucGF0aC5yZWxhdGl2ZSgnJHtsaWJkaXJ9L3NzbC0xLjEnLCAnJHtzeXNjb25mZGlyfS9zc2wvb3BlbnNzbC5jbmYnKX0gJHtEfSR7bGliZGlyfS9zc2wtMS4xL29wZW5zc2wuY25mCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisJY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9vcGVuc3NsIFwKKwkgICAgT1BFTlNTTF9DT05GPSR7bGliZGlyfS9zc2wtMS4xL29wZW5zc2wuY25mIFwKKwkgICAgU1NMX0NFUlRfRElSPSR7bGliZGlyfS9zc2wtMS4xL2NlcnRzIFwKKwkgICAgU1NMX0NFUlRfRklMRT0ke2xpYmRpcn0vc3NsLTEuMS9jZXJ0LnBlbSBcCisJICAgIE9QRU5TU0xfRU5HSU5FUz0ke2xpYmRpcn0vZW5naW5lcy0xLjEKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKKwlta2RpciAtcCAke0R9JHtTREtQQVRITkFUSVZFfS9lbnZpcm9ubWVudC1zZXR1cC5kCisJaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9lbnZpcm9ubWVudC5kLW9wZW5zc2wuc2ggJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZC9vcGVuc3NsLnNoCisJc2VkICdzfC91c3IvbGliL3NzbC98L3Vzci9saWIvc3NsLTEuMS98ZycgLWkgJHtEfSR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZC9vcGVuc3NsLnNoCit9CisKK1BURVNUX0JVSUxEX0hPU1RfRklMRVMgKz0gImNvbmZpZ2RhdGEucG0iCitQVEVTVF9CVUlMRF9IT1NUX1BBVFRFUk4gPSAicGVybF92ZXJzaW9uID0iCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKwkjIFBydW5lIHRoZSBidWlsZCB0cmVlCisJcm0gLWYgJHtCfS9mdXp6LyouKiAke0J9L3Rlc3QvKi4qCisKKwljcCAke1N9L0NvbmZpZ3VyZSAke0J9L2NvbmZpZ2RhdGEucG0gJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAke1N9L2V4dGVybmFsICR7Qn0vdGVzdCAke1N9L3Rlc3QgJHtCfS9mdXp6ICR7U30vdXRpbCAke0J9L3V0aWwgJHtEfSR7UFRFU1RfUEFUSH0KKworCSMgRm9yIHRlc3Rfc2hsaWJsb2FkCisJbG4gLXMgJHtsaWJkaXJ9L2xpYmNyeXB0by5zby4xLjEgJHtEfSR7UFRFU1RfUEFUSH0vCisJbG4gLXMgJHtsaWJkaXJ9L2xpYnNzbC5zby4xLjEgJHtEfSR7UFRFU1RfUEFUSH0vCisKKwlpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L2FwcHMKKwlsbiAtcyAke2JpbmRpcn0vb3BlbnNzbCAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJaW5zdGFsbCAtbTY0NCAke1N9L2FwcHMvKi5wZW0gJHtTfS9hcHBzLyouc3JsICR7U30vYXBwcy9vcGVuc3NsLmNuZiAke0R9JHtQVEVTVF9QQVRIfS9hcHBzCisJaW5zdGFsbCAtbTc1NSAke0J9L2FwcHMvQ0EucGwgJHtEfSR7UFRFU1RfUEFUSH0vYXBwcworCisJaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS9lbmdpbmVzCisJaW5zdGFsbCAtbTc1NSAke0J9L2VuZ2luZXMvb3NzbHRlc3Quc28gJHtEfSR7UFRFU1RfUEFUSH0vZW5naW5lcworfQorCisjIEFkZCB0aGUgb3BlbnNzbC5jbmYgZmlsZSB0byB0aGUgb3BlbnNzbC1jb25mIHBhY2thZ2UuIE1ha2UgdGhlIGxpYmNyeXB0bworIyBwYWNrYWdlIFJSRUNPTU1FTkRTIG9uIHRoaXMgcGFja2FnZS4gVGhpcyB3aWxsIGVuYWJsZSB0aGUgY29uZmlndXJhdGlvbgorIyBmaWxlIHRvIGJlIGluc3RhbGxlZCBmb3IgYm90aCB0aGUgb3BlbnNzbC1iaW4gcGFja2FnZSBhbmQgdGhlIGxpYmNyeXB0bworIyBwYWNrYWdlIHNpbmNlIHRoZSBvcGVuc3NsLWJpbiBwYWNrYWdlIGRlcGVuZHMgb24gdGhlIGxpYmNyeXB0byBwYWNrYWdlLgorCitQQUNLQUdFUyA9KyAibGliY3J5cHRvIGxpYnNzbCBvcGVuc3NsLWNvbmYgJHtQTn0tZW5naW5lcyAke1BOfS1taXNjIgorCitGSUxFU19saWJjcnlwdG8gPSAiJHtsaWJkaXJ9L2xpYmNyeXB0byR7U09MSUJTfSIKK0ZJTEVTX2xpYnNzbCA9ICIke2xpYmRpcn0vbGlic3NsJHtTT0xJQlN9IgorRklMRVNfb3BlbnNzbC1jb25mID0gIiR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mIgorRklMRVNfJHtQTn0tZW5naW5lcyA9ICIke2xpYmRpcn0vZW5naW5lcy0xLjEiCitGSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9zc2wtMS4xL21pc2MiCitGSUxFU18ke1BOfSA9KyAiJHtsaWJkaXJ9L3NzbC0xLjEvKiIKK0ZJTEVTXyR7UE59X2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiICR7U0RLUEFUSE5BVElWRX0vZW52aXJvbm1lbnQtc2V0dXAuZC9vcGVuc3NsLnNoIgorCitDT05GRklMRVNfb3BlbnNzbC1jb25mID0gIiR7c3lzY29uZmRpcn0vc3NsL29wZW5zc2wuY25mIgorCitSUkVDT01NRU5EU19saWJjcnlwdG8gKz0gIm9wZW5zc2wtY29uZiIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJvcGVuc3NsLWJpbiBwZXJsIHBlcmwtbW9kdWxlcyBiYXNoIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK0NWRV9QUk9EVUNUID0gIm9wZW5zc2w6b3BlbnNzbCIKKworIyBPbmx5IGFmZmVjdHMgT3BlblNTTCA+PSAxLjEuMSBpbiBjb21iaW5hdGlvbiB3aXRoIEFwYWNoZSA8IDIuNC4zNworIyBBcGFjaGUgaW4gbWV0YS13ZWJzZXJ2ZXIgaXMgYWxyZWFkeSByZWNlbnQgZW5vdWdoCitDVkVfQ0hFQ0tfV0hJVEVMSVNUICs9ICJDVkUtMjAxOS0wMTkwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHAvMDAwMS1wcHBkLUZpeC1ib3VuZHMtY2hlY2staW4tRUFQLWNvZGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcHBwL3BwcC8wMDAxLXBwcGQtRml4LWJvdW5kcy1jaGVjay1pbi1FQVAtY29kZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iN2JhN2JhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHAvMDAwMS1wcHBkLUZpeC1ib3VuZHMtY2hlY2staW4tRUFQLWNvZGUucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorRnJvbSA4ZDc5NzBiOGYzZGI3MjdmZTc5OGI2NWYzMzc3ZmU2Nzg3NTc1NDI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUGF1bCBNYWNrZXJyYXMgPHBhdWx1c0BvemxhYnMub3JnPgorRGF0ZTogTW9uLCAzIEZlYiAyMDIwIDE1OjUzOjI4ICsxMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHBwcGQ6IEZpeCBib3VuZHMgY2hlY2sgaW4gRUFQIGNvZGUKKworR2l2ZW4gdGhhdCB3ZSBoYXZlIGp1c3QgY2hlY2tlZCB2YWxsZW4gPCBsZW4sIGl0IGNhbiBuZXZlciBiZSB0aGUgY2FzZQordGhhdCB2YWxsZW4gPj0gbGVuICsgc2l6ZW9mKHJob3N0bmFtZSkuICBUaGlzIGZpeGVzIHRoZSBjaGVjayBzbyB3ZQorYWN0dWFsbHkgYXZvaWQgb3ZlcmZsb3dpbmcgdGhlIHJob3N0bmFtZSBhcnJheS4KKworUmVwb3J0ZWQtYnk6IElsamEgVmFuIFNwcnVuZGVsIDxpdmFuc3BydW5kZWxAaW9hY3RpdmUuY29tPgorU2lnbmVkLW9mZi1ieTogUGF1bCBNYWNrZXJyYXMgPHBhdWx1c0BvemxhYnMub3JnPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRodWIuY29tL3BhdWx1c21hY2svcHBwL2NvbW1pdC84ZDc5NzBiOGYzZGI3MjdmZTc5OGI2NWYzMzc3ZmU2Nzg3NTc1NDI2XQorCitDVkU6IENWRS0yMDIwLTg1OTcKKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgcHBwZC9lYXAuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wcHBkL2VhcC5jIGIvcHBwZC9lYXAuYworaW5kZXggOTQ0MDdmNS4uMWI5M2RiMCAxMDA2NDQKKy0tLSBhL3BwcGQvZWFwLmMKKysrKyBiL3BwcGQvZWFwLmMKK0BAIC0xNDIwLDcgKzE0MjAsNyBAQCBpbnQgbGVuOworIAkJfQorIAorIAkJLyogTm90IHNvIGxpa2VseSB0byBoYXBwZW4uICovCistCQlpZiAodmFsbGVuID49IGxlbiArIHNpemVvZiAocmhvc3RuYW1lKSkgeworKwkJaWYgKGxlbiAtIHZhbGxlbiA+PSBzaXplb2YgKHJob3N0bmFtZSkpIHsKKyAJCQlkYmdsb2coIkVBUDogdHJpbW1pbmcgcmVhbGx5IGxvbmcgcGVlciBuYW1lIGRvd24iKTsKKyAJCQlCQ09QWShpbnAgKyB2YWxsZW4sIHJob3N0bmFtZSwgc2l6ZW9mIChyaG9zdG5hbWUpIC0gMSk7CisgCQkJcmhvc3RuYW1lW3NpemVvZiAocmhvc3RuYW1lKSAtIDFdID0gJ1wwJzsKK0BAIC0xODQ2LDcgKzE4NDYsNyBAQCBpbnQgbGVuOworIAkJfQorIAorIAkJLyogTm90IHNvIGxpa2VseSB0byBoYXBwZW4uICovCistCQlpZiAodmFsbGVuID49IGxlbiArIHNpemVvZiAocmhvc3RuYW1lKSkgeworKwkJaWYgKGxlbiAtIHZhbGxlbiA+PSBzaXplb2YgKHJob3N0bmFtZSkpIHsKKyAJCQlkYmdsb2coIkVBUDogdHJpbW1pbmcgcmVhbGx5IGxvbmcgcGVlciBuYW1lIGRvd24iKTsKKyAJCQlCQ09QWShpbnAgKyB2YWxsZW4sIHJob3N0bmFtZSwgc2l6ZW9mIChyaG9zdG5hbWUpIC0gMSk7CisgCQkJcmhvc3RuYW1lW3NpemVvZiAocmhvc3RuYW1lKSAtIDFdID0gJ1wwJzsKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9wcHAvcHBwXzIuNC43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHBfMi40LjcuYmIKaW5kZXggNjQ0Y2RlNC4uNjBjNTZkZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHBfMi40LjcuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3BwcC9wcHBfMi40LjcuYmIKQEAgLTMzLDYgKzMzLDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtcHBwb2UtaW5jbHVkZS1uZXRpbmV0LWluLmgtYmVmb3JlLWxpbnV4LWluLmgucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1wcHAtUmVtb3ZlLXVubmVlZGVkLWluY2x1ZGUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcHBwLTIuNC43LURFUy1vcGVuc3NsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcHBwZC1GaXgtYm91bmRzLWNoZWNrLWluLUVBUC1jb2RlLnBhdGNoIFwKICIKIAogU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIlwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZXNvbHZjb25mL3Jlc29sdmNvbmZfMS43OS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZXNvbHZjb25mL3Jlc29sdmNvbmZfMS43OS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODU1MDE3Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvcmVzb2x2Y29uZi9yZXNvbHZjb25mXzEuNzkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1TVU1NQVJZID0gIm5hbWUgc2VydmVyIGluZm9ybWF0aW9uIGhhbmRsZXIiCi1ERVNDUklQVElPTiA9ICJSZXNvbHZjb25mIGlzIGEgZnJhbWV3b3JrIGZvciBrZWVwaW5nIHRyYWNrIG9mIHRoZSBzeXN0ZW0ncyBcCi1pbmZvcm1hdGlvbiBhYm91dCBjdXJyZW50bHkgYXZhaWxhYmxlIG5hbWVzZXJ2ZXJzLiBJdCBzZXRzIFwKLWl0c2VsZiB1cCBhcyB0aGUgaW50ZXJtZWRpYXJ5IGJldHdlZW4gcHJvZ3JhbXMgdGhhdCBzdXBwbHkgXAotbmFtZXNlcnZlciBpbmZvcm1hdGlvbiBhbmQgcHJvZ3JhbXMgdGhhdCBuZWVkIG5hbWVzZXJ2ZXIgXAotaW5mb3JtYXRpb24uIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM5M2MwNTUwYmQzMTczZjQ1MDRiMmNiZDg5OTFlNTBiIgotQVVUSE9SID0gIlRob21hcyBIb29kIgotSE9NRVBBR0UgPSAiaHR0cDovL3BhY2thZ2VzLmRlYmlhbi5vcmcvcmVzb2x2Y29uZiIKLVJERVBFTkRTXyR7UE59ID0gImJhc2giCi0KLVNSQ19VUkkgPSAiaHR0cDovL3NuYXBzaG90LmRlYmlhbi5vcmcvYXJjaGl2ZS9kZWJpYW4vMjAxNjA1MjBUMDQ0MzQwWi9wb29sL21haW4vci8ke0JQTn0vJHtCUE59XzEuNzkudGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1wYXRoLWZvci1idXN5Ym94LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzk5X3Jlc29sdmNvbmYgXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImFhYjIzODIwMjBmYzUxOGYwNmEwNmU5MjRjNTZkMzAwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhlMjg0M2NkNDE2MmI3MDZmMDQ4MWIzYzI4MTY1NzcyOGNiYzI4MjJlNTBhNjRmZmY3OWI3OWJkOGFhODcwYTAiCi0KLSMgdGhlIHBhY2thZ2UgaXMgdGFrZW4gZnJvbSBzbmFwc2hvdHMuZGViaWFuLm9yZzsgdGhhdCBzb3VyY2UgaXMgc3RhdGljIGFuZCBnb2VzIHN0YWxlCi0jIHNvIHdlIGNoZWNrIHRoZSBsYXRlc3QgdXBzdHJlYW0gZnJvbSBhIGRpcmVjdG9yeSB0aGF0IGRvZXMgZ2V0IHVwZGF0ZWQKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICIke0RFQklBTl9NSVJST1J9L21haW4vci9yZXNvbHZjb25mLyIKLQotaW5oZXJpdCBhbGxhcmNoCi0KLWRvX2NvbXBpbGUgKCkgewotCToKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9Lzk5X3Jlc29sdmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQKLQkJZWNobyAiZCAvcnVuLyR7QlBOfS9pbnRlcmZhY2UgLSAtIC0gLSIgXAotCQkgICAgID4gJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9yZXNvbHZjb25mLmNvbmYKLQlmaQotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9saWJkaXJ9LyR7QlBOfQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59Ci0JbG4gLXNuZiAke2xvY2Fsc3RhdGVkaXJ9L3J1bi8ke0JQTn0gJHtEfSR7c3lzY29uZmRpcn0vJHtCUE59L3J1bgotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0gJHtEfSR7YmFzZV9zYmluZGlyfQotCWluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44ICR7RH0ke2RvY2Rpcn0vJHtQfQotCWNwIC1wUFIgZXRjLyogJHtEfSR7c3lzY29uZmRpcn0vCi0JY2hvd24gLVIgcm9vdDpyb290ICR7RH0ke3N5c2NvbmZkaXJ9LwotCWluc3RhbGwgLW0gMDc1NSBiaW4vcmVzb2x2Y29uZiAke0R9JHtiYXNlX3NiaW5kaXJ9LwotCWluc3RhbGwgLW0gMDc1NSBiaW4vbGlzdC1yZWNvcmRzICR7RH0ke2Jhc2VfbGliZGlyfS8ke0JQTn0KLQlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLXVwLmQKLQlpbnN0YWxsIC1tIDA3NTUgZGViaWFuL3Jlc29sdmNvbmYuMDAwcmVzb2x2Y29uZi5pZi11cCAke0R9LyR7c3lzY29uZmRpcn0vbmV0d29yay9pZi11cC5kLzAwMHJlc29sdmNvbmYKLQlpbnN0YWxsIC1kICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLWRvd24uZAotCWluc3RhbGwgLW0gMDc1NSBkZWJpYW4vcmVzb2x2Y29uZi5yZXNvbHZjb25mLmlmLWRvd24gJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtZG93bi5kL3Jlc29sdmNvbmYKLQlpbnN0YWxsIC1tIDA2NDQgUkVBRE1FICR7RH0ke2RvY2Rpcn0vJHtQfS8KLQlpbnN0YWxsIC1tIDA2NDQgbWFuL3Jlc29sdmNvbmYuOCAke0R9JHttYW5kaXJ9L21hbjgvCi19Ci0KLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0JaWYgWyAteiAiJEQiIF07IHRoZW4KLQkJaWYgY29tbWFuZCAtdiBzeXN0ZW1kLXRtcGZpbGVzID4vZGV2L251bGw7IHRoZW4KLQkJCXN5c3RlbWQtdG1wZmlsZXMgLS1jcmVhdGUgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kL3Jlc29sdmNvbmYuY29uZgotCQllbGlmIFsgLWUgJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggXTsgdGhlbgotCQkJJHtzeXNjb25mZGlyfS9pbml0LmQvcG9wdWxhdGUtdm9sYXRpbGUuc2ggdXBkYXRlCi0JCWZpCi0JZmkKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9saWJkaXJ9LyR7QlBOfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZXNvbHZjb25mL3Jlc29sdmNvbmZfMS44Mi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9yZXNvbHZjb25mL3Jlc29sdmNvbmZfMS44Mi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42Nzk1OTU3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29ubmVjdGl2aXR5L3Jlc29sdmNvbmYvcmVzb2x2Y29uZl8xLjgyLmJiCkBAIC0wLDAgKzEsNjggQEAKK1NVTU1BUlkgPSAibmFtZSBzZXJ2ZXIgaW5mb3JtYXRpb24gaGFuZGxlciIKK0RFU0NSSVBUSU9OID0gIlJlc29sdmNvbmYgaXMgYSBmcmFtZXdvcmsgZm9yIGtlZXBpbmcgdHJhY2sgb2YgdGhlIHN5c3RlbSdzIFwKK2luZm9ybWF0aW9uIGFib3V0IGN1cnJlbnRseSBhdmFpbGFibGUgbmFtZXNlcnZlcnMuIEl0IHNldHMgXAoraXRzZWxmIHVwIGFzIHRoZSBpbnRlcm1lZGlhcnkgYmV0d2VlbiBwcm9ncmFtcyB0aGF0IHN1cHBseSBcCituYW1lc2VydmVyIGluZm9ybWF0aW9uIGFuZCBwcm9ncmFtcyB0aGF0IG5lZWQgbmFtZXNlcnZlciBcCitpbmZvcm1hdGlvbi4iCitTRUNUSU9OID0gImNvbnNvbGUvbmV0d29yayIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzkzYzA1NTBiZDMxNzNmNDUwNGIyY2JkODk5MWU1MGIiCitBVVRIT1IgPSAiVGhvbWFzIEhvb2QiCitIT01FUEFHRSA9ICJodHRwOi8vcGFja2FnZXMuZGViaWFuLm9yZy9yZXNvbHZjb25mIgorUkRFUEVORFNfJHtQTn0gPSAiYmFzaCIKKworU1JDX1VSSSA9ICJnaXQ6Ly9zYWxzYS5kZWJpYW4ub3JnL2RlYmlhbi9yZXNvbHZjb25mLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtcGF0aC1mb3ItYnVzeWJveC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly85OV9yZXNvbHZjb25mIFwKKyAgICAgICAgICAiCisKK1NSQ1JFViA9ICJjYjE5YmJmYmU3ZTUyMTc0MzMyZjY4YmYyZjI5NWIzOWQxMTlmYWQzIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCisjIHRoZSBwYWNrYWdlIGlzIHRha2VuIGZyb20gc25hcHNob3RzLmRlYmlhbi5vcmc7IHRoYXQgc291cmNlIGlzIHN0YXRpYyBhbmQgZ29lcyBzdGFsZQorIyBzbyB3ZSBjaGVjayB0aGUgbGF0ZXN0IHVwc3RyZWFtIGZyb20gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGdldCB1cGRhdGVkCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL3IvcmVzb2x2Y29uZi8iCisKK2luaGVyaXQgYWxsYXJjaAorCitkb19jb21waWxlICgpIHsKKwk6Cit9CisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9yZXNvbHZjb25mICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisJCWVjaG8gImQgL3J1bi8ke0JQTn0vaW50ZXJmYWNlIC0gLSAtIC0iIFwKKwkJICAgICA+ICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvcmVzb2x2Y29uZi5jb25mCisJZmkKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfbGliZGlyfS8ke0JQTn0KKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfQorCWxuIC1zbmYgJHtsb2NhbHN0YXRlZGlyfS9ydW4vJHtCUE59ICR7RH0ke3N5c2NvbmZkaXJ9LyR7QlBOfS9ydW4KKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9ICR7RH0ke2Jhc2Vfc2JpbmRpcn0KKwlpbnN0YWxsIC1kICR7RH0ke21hbmRpcn0vbWFuOCAke0R9JHtkb2NkaXJ9LyR7UH0KKwljcCAtcFBSIGV0Yy8qICR7RH0ke3N5c2NvbmZkaXJ9LworCWNob3duIC1SIHJvb3Q6cm9vdCAke0R9JHtzeXNjb25mZGlyfS8KKwlpbnN0YWxsIC1tIDA3NTUgYmluL3Jlc29sdmNvbmYgJHtEfSR7YmFzZV9zYmluZGlyfS8KKwlpbnN0YWxsIC1tIDA3NTUgYmluL2xpc3QtcmVjb3JkcyAke0R9JHtiYXNlX2xpYmRpcn0vJHtCUE59CisJaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vbmV0d29yay9pZi11cC5kCisJaW5zdGFsbCAtbSAwNzU1IGRlYmlhbi9yZXNvbHZjb25mLjAwMHJlc29sdmNvbmYuaWYtdXAgJHtEfS8ke3N5c2NvbmZkaXJ9L25ldHdvcmsvaWYtdXAuZC8wMDByZXNvbHZjb25mCisJaW5zdGFsbCAtZCAke0R9LyR7c3lzY29uZmRpcn0vbmV0d29yay9pZi1kb3duLmQKKwlpbnN0YWxsIC1tIDA3NTUgZGViaWFuL3Jlc29sdmNvbmYucmVzb2x2Y29uZi5pZi1kb3duICR7RH0vJHtzeXNjb25mZGlyfS9uZXR3b3JrL2lmLWRvd24uZC9yZXNvbHZjb25mCisJaW5zdGFsbCAtbSAwNjQ0IFJFQURNRSAke0R9JHtkb2NkaXJ9LyR7UH0vCisJaW5zdGFsbCAtbSAwNjQ0IG1hbi9yZXNvbHZjb25mLjggJHtEfSR7bWFuZGlyfS9tYW44LworfQorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCWlmIFsgLXogIiREIiBdOyB0aGVuCisJCWlmIGNvbW1hbmQgLXYgc3lzdGVtZC10bXBmaWxlcyA+L2Rldi9udWxsOyB0aGVuCisJCQlzeXN0ZW1kLXRtcGZpbGVzIC0tY3JlYXRlICR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZC9yZXNvbHZjb25mLmNvbmYKKwkJZWxpZiBbIC1lICR7c3lzY29uZmRpcn0vaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIF07IHRoZW4KKwkJCSR7c3lzY29uZmRpcn0vaW5pdC5kL3BvcHVsYXRlLXZvbGF0aWxlLnNoIHVwZGF0ZQorCQlmaQorCWZpCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke2Jhc2VfbGliZGlyfS8ke0JQTn0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvc29jYXQvc29jYXRfMS43LjMuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zb2NhdC9zb2NhdF8xLjcuMy4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZGJiZTVjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zb2NhdC9zb2NhdF8xLjcuMy4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJNdWx0aXB1cnBvc2UgcmVsYXkgZm9yIGJpZGlyZWN0aW9uYWwgZGF0YSB0cmFuc2ZlciIKLURFU0NSSVBUSU9OID0gIlNvY2F0IGlzIGEgcmVsYXkgZm9yIGJpZGlyZWN0aW9uYWwgZGF0YSBcCi10cmFuc2ZlciBiZXR3ZWVuIHR3byBpbmRlcGVuZGVudCBkYXRhIGNoYW5uZWxzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZGVzdC11bnJlYWNoLm9yZy9zb2NhdC8iCi0KLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotCi1ERVBFTkRTID0gIm9wZW5zc2wiCi0KLUxJQ0VOU0UgPSAiR1BMLTIuMC13aXRoLU9wZW5TU0wtZXhjZXB0aW9uIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0yNTc7ZW5kbGluZT0yODc7bWQ1PTMzOGMwNWVhZGQwMTM4NzJhYmIxZDZlMTk4ZTEwYTNmIgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuZGVzdC11bnJlYWNoLm9yZy9zb2NhdC9kb3dubG9hZC9zb2NhdC0ke1BWfS50YXIuYnoyIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImIyYTAzMmE0N2I4Yjg5YTE4NDg1Njk3ZmE5NzUxNTRmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkZDYzZmZlNDk4MTY4YTRhYWM0MWQzMDc1OTRjNTA3NmZmMzA3YWEwYWMwNGIxNDFmOGYxY2VjNjU5NGQwNGEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIgotCi1FWFRSQV9PRUNPTkYgKz0gImFjX2N2X2hhdmVfel9tb2RpZmllcj15ZXMgXAotICAgICAgICAgICAgICAgICBhY19jdl9oZWFkZXJfYnNkX2xpYnV0aWxfaD1ubyBcCi0gICAgICAgICAgICAgICAgIHNjX2N2X3Rlcm1pb3NfaXNwZWVkPW5vIFwKLSAgICAgICAgICAgICAgICAgJHtURVJNQklUU19TSElGVFN9IFwKLSIKLQotVEVSTUJJVFNfU0hJRlRTID89ICJzY19jdl9zeXNfY3JkbHlfc2hpZnQ9OSBcCi0gICAgICAgICAgICAgICAgICAgIHNjX2N2X3N5c190YWJkbHlfc2hpZnQ9MTEgXAotICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfY3NpemVfc2hpZnQ9NCIKLQotVEVSTUJJVFNfU0hJRlRTX3Bvd2VycGMgPSAic2NfY3Zfc3lzX2NyZGx5X3NoaWZ0PTEyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjX2N2X3N5c190YWJkbHlfc2hpZnQ9MTAgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX2NzaXplX3NoaWZ0PTgiCi0KLVRFUk1CSVRTX1NISUZUU19wb3dlcnBjNjQgPSAic2NfY3Zfc3lzX2NyZGx5X3NoaWZ0PTEyIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX3RhYmRseV9zaGlmdD0xMCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNjX2N2X3N5c19jc2l6ZV9zaGlmdD04IgotCi1QQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gInRjcC13cmFwcGVycyByZWFkbGluZSIKLVBBQ0tBR0VDT05GSUcgPz89ICJyZWFkbGluZSIKLVBBQ0tBR0VDT05GSUdbdGNwLXdyYXBwZXJzXSA9ICItLWVuYWJsZS1saWJ3cmFwLC0tZGlzYWJsZS1saWJ3cmFwLHRjcC13cmFwcGVycyIKLVBBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0tZW5hYmxlLXJlYWRsaW5lLC0tZGlzYWJsZS1yZWFkbGluZSxyZWFkbGluZSIKLQotZG9faW5zdGFsbF9wcmVwZW5kICgpIHsKLSAgICBta2RpciAtcCAke0R9JHtiaW5kaXJ9Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9ICR7RH0ke21hbmRpcn0vbWFuMQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvc29jYXQvc29jYXRfMS43LjMuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvbm5lY3Rpdml0eS9zb2NhdC9zb2NhdF8xLjcuMy40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjliMGQ0MDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb25uZWN0aXZpdHkvc29jYXQvc29jYXRfMS43LjMuNC5iYgpAQCAtMCwwICsxLDU0IEBACitTVU1NQVJZID0gIk11bHRpcHVycG9zZSByZWxheSBmb3IgYmlkaXJlY3Rpb25hbCBkYXRhIHRyYW5zZmVyIgorREVTQ1JJUFRJT04gPSAiU29jYXQgaXMgYSByZWxheSBmb3IgYmlkaXJlY3Rpb25hbCBkYXRhIFwKK3RyYW5zZmVyIGJldHdlZW4gdHdvIGluZGVwZW5kZW50IGRhdGEgY2hhbm5lbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5kZXN0LXVucmVhY2gub3JnL3NvY2F0LyIKKworU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0RFUEVORFMgPSAib3BlbnNzbCIKKworTElDRU5TRSA9ICJHUEwtMi4wLXdpdGgtT3BlblNTTC1leGNlcHRpb24iCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9SRUFETUU7YmVnaW5saW5lPTI1NztlbmRsaW5lPTI4NzttZDU9MzM4YzA1ZWFkZDAxMzg3MmFiYjFkNmUxOThlMTBhM2YiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5kZXN0LXVucmVhY2gub3JnL3NvY2F0L2Rvd25sb2FkL3NvY2F0LSR7UFZ9LnRhci5iejIgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiM2NjYTRmOGNkOWQyZDFjYWFiZDljYzA5OTQ1MWJhYzkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTcyMzc0Y2E4NmY2NTQ5OGUyM2UzMjU5YzJlZTFiOGY5ZGJlYjA0ZDEyYzJhNzhjMGM5YjVkMWNiOTdkZmRmYyIKKworaW5oZXJpdCBhdXRvdG9vbHMKKworRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWF1dG9oZWFkZXIiCisKK0VYVFJBX09FQ09ORiArPSAiYWNfY3ZfaGF2ZV96X21vZGlmaWVyPXllcyBcCisgICAgICAgICAgICAgICAgIGFjX2N2X2hlYWRlcl9ic2RfbGlidXRpbF9oPW5vIFwKKyAgICAgICAgICAgICAgICAgc2NfY3ZfdGVybWlvc19pc3BlZWQ9bm8gXAorICAgICAgICAgICAgICAgICAke1RFUk1CSVRTX1NISUZUU30gXAorIgorCitURVJNQklUU19TSElGVFMgPz0gInNjX2N2X3N5c19jcmRseV9zaGlmdD05IFwKKyAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX3RhYmRseV9zaGlmdD0xMSBcCisgICAgICAgICAgICAgICAgICAgIHNjX2N2X3N5c19jc2l6ZV9zaGlmdD00IgorCitURVJNQklUU19TSElGVFNfcG93ZXJwYyA9ICJzY19jdl9zeXNfY3JkbHlfc2hpZnQ9MTIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX3RhYmRseV9zaGlmdD0xMCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfY3NpemVfc2hpZnQ9OCIKKworVEVSTUJJVFNfU0hJRlRTX3Bvd2VycGM2NCA9ICJzY19jdl9zeXNfY3JkbHlfc2hpZnQ9MTIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzY19jdl9zeXNfdGFiZGx5X3NoaWZ0PTEwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NfY3Zfc3lzX2NzaXplX3NoaWZ0PTgiCisKK1BBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAidGNwLXdyYXBwZXJzIHJlYWRsaW5lIgorUEFDS0FHRUNPTkZJRyA/Pz0gInJlYWRsaW5lIgorUEFDS0FHRUNPTkZJR1t0Y3Atd3JhcHBlcnNdID0gIi0tZW5hYmxlLWxpYndyYXAsLS1kaXNhYmxlLWxpYndyYXAsdGNwLXdyYXBwZXJzIgorUEFDS0FHRUNPTkZJR1tyZWFkbGluZV0gPSAiLS1lbmFibGUtcmVhZGxpbmUsLS1kaXNhYmxlLXJlYWRsaW5lLHJlYWRsaW5lIgorCitDRkxBR1MgKz0gIi1mY29tbW9uIgorCitkb19pbnN0YWxsX3ByZXBlbmQgKCkgeworICAgIG1rZGlyIC1wICR7RH0ke2JpbmRpcn0KKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0gJHtEfSR7bWFuZGlyfS9tYW4xCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1maWxlcy9iYXNlLWZpbGVzL2ZzdGFiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvZnN0YWIKaW5kZXggZDc5YTAxNi4uNzBlNDAwZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvZnN0YWIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9iYXNlLWZpbGVzL2Jhc2UtZmlsZXMvZnN0YWIKQEAgLTIsNyArMiw3IEBACiAKIC9kZXYvcm9vdCAgICAgICAgICAgIC8gICAgICAgICAgICAgICAgICAgIGF1dG8gICAgICAgZGVmYXVsdHMgICAgICAgICAgICAgIDEgIDEKIHByb2MgICAgICAgICAgICAgICAgIC9wcm9jICAgICAgICAgICAgICAgIHByb2MgICAgICAgZGVmYXVsdHMgICAgICAgICAgICAgIDAgIDAKLWRldnB0cyAgICAgICAgICAgICAgIC9kZXYvcHRzICAgICAgICAgICAgIGRldnB0cyAgICAgbW9kZT0wNjIwLGdpZD01ICAgICAgIDAgIDAKK2RldnB0cyAgICAgICAgICAgICAgIC9kZXYvcHRzICAgICAgICAgICAgIGRldnB0cyAgICAgbW9kZT0wNjIwLHB0bXhtb2RlPTA2NjYsZ2lkPTUgICAgICAwICAwCiB0bXBmcyAgICAgICAgICAgICAgICAvcnVuICAgICAgICAgICAgICAgICB0bXBmcyAgICAgIG1vZGU9MDc1NSxub2Rldixub3N1aWQsc3RyaWN0YXRpbWUgMCAgMAogdG1wZnMgICAgICAgICAgICAgICAgL3Zhci92b2xhdGlsZSAgICAgICAgdG1wZnMgICAgICBkZWZhdWx0cyAgICAgICAgICAgICAgMCAgMAogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2Jhc2UtcGFzc3dkL2Jhc2UtcGFzc3dkXzMuNS4yOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1wYXNzd2QvYmFzZS1wYXNzd2RfMy41LjI5LmJiCmluZGV4IGQxYWFiMDkuLmQwMWNkN2UgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1wYXNzd2QvYmFzZS1wYXNzd2RfMy41LjI5LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYmFzZS1wYXNzd2QvYmFzZS1wYXNzd2RfMy41LjI5LmJiCkBAIC0xLDcgKzEsNyBAQAogU1VNTUFSWSA9ICJCYXNlIHN5c3RlbSBtYXN0ZXIgcGFzc3dvcmQvZ3JvdXAgZmlsZXMiCiBERVNDUklQVElPTiA9ICJUaGUgbWFzdGVyIGNvcGllcyBvZiB0aGUgdXNlciBkYXRhYmFzZSBmaWxlcyAoL2V0Yy9wYXNzd2QgYW5kIC9ldGMvZ3JvdXApLiAgVGhlIHVwZGF0ZS1wYXNzd2QgdG9vbCBpcyBhbHNvIHByb3ZpZGVkIHRvIGtlZXAgdGhlIHN5c3RlbSBkYXRhYmFzZXMgc3luY2hyb25pemVkIHdpdGggdGhlc2UgbWFzdGVyIGZpbGVzLiIKIFNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIrIgorTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIgogCiBSRUNJUEVfTk9fVVBEQVRFX1JFQVNPTiA9ICJWZXJzaW9uIDMuNS4zOCByZXF1aXJlcyBjZGViY29uZiBmb3IgdXBkYXRlLXBhc3N3ZCB1dGlsaXR5IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3guaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3guaW5jCmluZGV4IGQwOGZhOGQuLjZjZmRjZDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC5pbmMKQEAgLTEsMTMgKzEsMTMgQEAKIFNVTU1BUlkgPSAiVGlueSB2ZXJzaW9ucyBvZiBtYW55IGNvbW1vbiBVTklYIHV0aWxpdGllcyBpbiBhIHNpbmdsZSBzbWFsbCBleGVjdXRhYmxlIgogREVTQ1JJUFRJT04gPSAiQnVzeUJveCBjb21iaW5lcyB0aW55IHZlcnNpb25zIG9mIG1hbnkgY29tbW9uIFVOSVggdXRpbGl0aWVzIGludG8gYSBzaW5nbGUgc21hbGwgZXhlY3V0YWJsZS4gSXQgcHJvdmlkZXMgbWluaW1hbGlzdCByZXBsYWNlbWVudHMgZm9yIG1vc3Qgb2YgdGhlIHV0aWxpdGllcyB5b3UgdXN1YWxseSBmaW5kIGluIEdOVSBmaWxldXRpbHMsIHNoZWxsdXRpbHMsIGV0Yy4gVGhlIHV0aWxpdGllcyBpbiBCdXN5Qm94IGdlbmVyYWxseSBoYXZlIGZld2VyIG9wdGlvbnMgdGhhbiB0aGVpciBmdWxsLWZlYXR1cmVkIEdOVSBjb3VzaW5zOyBob3dldmVyLCB0aGUgb3B0aW9ucyB0aGF0IGFyZSBpbmNsdWRlZCBwcm92aWRlIHRoZSBleHBlY3RlZCBmdW5jdGlvbmFsaXR5IGFuZCBiZWhhdmUgdmVyeSBtdWNoIGxpa2UgdGhlaXIgR05VIGNvdW50ZXJwYXJ0cy4gQnVzeUJveCBwcm92aWRlcyBhIGZhaXJseSBjb21wbGV0ZSBQT1NJWCBlbnZpcm9ubWVudCBmb3IgYW55IHNtYWxsIG9yIGVtYmVkZGVkIHN5c3RlbS4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmJ1c3lib3gubmV0IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuYnVzeWJveC5uZXQiCiBCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5idXN5Ym94Lm5ldC8iCiAKIERFUEVORFMgKz0gImtlcm4tdG9vbHMtbmF0aXZlIHZpcnR1YWwvY3J5cHQiCiAKICMgYnppcDIgYXBwbGV0IGluIGJ1c3lib3ggaXMgYmFzZWQgb24gbGlnaHRseS1tb2RpZmllZCBiemlwMiBzb3VyY2UKICMgdGhlIEdQTCBpcyB2ZXJzaW9uIDIgb25seQotTElDRU5TRSA9ICJHUEx2MiAmIGJ6aXAyIgorTElDRU5TRSA9ICJHUEx2MiAmIGJ6aXAyLTEuMC42IgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZGUxMGRlNDg2NDJhYjc0MzE4ZTg5M2E2MTEwNWFmYmIiCiAKIFNFQ1RJT04gPSAiYmFzZSIKQEAgLTM1NCw3ICszNTQsOSBAQAogCiBkb19pbnN0YWxsX3B0ZXN0ICgpIHsKIAljcCAtciAke0J9L3Rlc3RzdWl0ZSAke0R9JHtQVEVTVF9QQVRIfS8KLQljcCAke0J9Ly5jb25maWcgICAgICAke0R9JHtQVEVTVF9QQVRIfS8KKyAgICAgICAgIyBUaGVzZSBhY2Nlc3MgdGhlIGludGVybmV0IHdoaWNoIGlzIG5vdCBndWFyYW50ZWVkIHRvIHdvcmsgb24gbWFjaGluZXMgcnVubmluZyB0aGUgdGVzdHMKKyAgICAgICAgcm0gLXJmICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzdWl0ZS93Z2V0CisJc29ydCAke0J9Ly5jb25maWcgPiAke0R9JHtQVEVTVF9QQVRIfS8uY29uZmlnCiAJbG4gLXMgL2Jpbi9idXN5Ym94ICAgJHtEfSR7UFRFU1RfUEFUSH0vYnVzeWJveAogfQogCkBAIC00MzEsNiArNDMzLDMyIEBACiAgICAgZC5wcmVwZW5kVmFyKCdwa2dfcG9zdGluc3RfJXMnICUgcGtnLCBwb3N0aW5zdCkKIH0KIAorcGtnX3Bvc3RpbnN0XyR7UE59X3ByZXBlbmQgKCkgeworICAgICAgICAjIE5lZWQgcGF0aCB0byBzYXZlZCB1dGlscywgYnV0IHRoZXkgbWF5IGhhdmUgYmUgcmVtb3ZlZCBvbiB1cGdyYWRlIG9mIGJ1c3lib3gKKyAgICAgICAgIyBPbmx5IHVzZSBzaGVsbCB0byBnZXQgcGF0aHMuIEFsc28gY2FwdHVyZSBpZiBidXN5Ym94IHdhcyBzYXZlZC4KKyAgICAgICAgQlVTWUJPWD0iIgorICAgICAgICBpZiBbICJ4JEQiID0gIngiIF0gOyB0aGVuIAorICAgICAgICAgICBmb3IgYnVzeWJveF9ybWRpciBpbiAvdG1wL2J1c3lib3hybS0qOyBkbworICAgICAgICAgICAgICAgaWYgWyAiJGJ1c3lib3hfcm1kaXIiICE9ICcvdG1wL2J1c3lib3hybS0qJyBdIDsgdGhlbgorICAgICAgICAgICAgICAgICAgZXhwb3J0IFBBVEg9JGJ1c3lib3hfcm1kaXI6JFBBVEgKKyAgICAgICAgICAgICAgICAgIGlmIFsgLWUgJGJ1c3lib3hfcm1kaXIvYnVzeWJveCogXSA7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgQlVTWUJPWD0iJGJ1c3lib3hfcm1kaXIvYnVzeWJveCoiCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgZG9uZQorICAgICAgICBmaQorfQorCitwa2dfcG9zdGluc3RfJHtQTn1fYXBwZW5kICgpIHsKKyAgICAgICAgIyBJZiBidXN5Ym94IGV4aXN0cyBpbiB0aGUgcmVtb3ZlIGRpcmVjdG9yeSBpdCBpcyBiZWNhdXNlIGl0IHdhcyB0aGUgb25seSBzaGVsbCBsZWZ0LgorICAgICAgICBpZiBbICJ4JEQiID0gIngiIF0gOyB0aGVuCisgICAgICAgICAgIGlmIFsgIngkQlVTWUJPWCIgIT0gIngiIF0gOyB0aGVuCisgICAgICAgICAgICAgIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1yZW1vdmUgc2ggJEJVU1lCT1gKKyAgICAgICAgICAgICAgcm0gLWYgJEJVU1lCT1gKKyAgICAgICAgICAgZmkKKyAgICAgICAgZmkKK30gCisKIHBrZ19wcmVybV8ke1BOfSAoKSB7CiAJIyBUaGlzIGlzIHNvIHlvdSBjYW4gbWFrZSBidXN5Ym94IGNvbW1pdCBzdWljaWRlIC0gcmVtb3ZpbmcgYnVzeWJveCB3aXRoIG5vIG90aGVyIHBhY2thZ2VzCiAJIyBwcm92aWRpbmcgaXRzIGZpbGVzLCB0aGlzIHdpbGwgbWFrZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIHdvcmssIGJ1dCB0aGUgdXBkYXRlLXJjLmQgcGFydApAQCAtNDUxLDkgKzQ3OSwyNiBAQAogCWxuIC1zICR7YmFzZV9iaW5kaXJ9L2J1c3lib3ggJHRtcGRpci9ncmVwCiAJbG4gLXMgJHtiYXNlX2JpbmRpcn0vYnVzeWJveCAkdG1wZGlyL3RhaWwKIAlleHBvcnQgUEFUSD0kUEFUSDokdG1wZGlyCisKKyAgICAgICAgIyBJZiBidXN5Ym94IGlzIHRoZSBzaGVsbCwgd2UgbmVlZCB0byBzYXZlIGl0IHNpbmNlIGl0cyB0aGUgbG93ZXN0IHByaW9yaXR5IHNoZWxsCisgICAgICAgICMgUmVnaXN0ZXIgc2F2ZWQgYml0YmFrZSBhcyB0aGUgbG93ZXN0IHByaW9yaXR5IHNoZWxsIHBvc3NpYmxlIGFzIGJhY2sgdXAuCisgICAgICAgIGlmIFsgLW4gIiQocmVhZGxpbmsgLWYgL2Jpbi9zaCB8IGdyZXAgYnVzeWJveCkiIF0gOyB0aGVuCisgICAgICAgICAgIEJVU1lCT1g9JChyZWFkbGluayAtZiAvYmluL3NoKQorICAgICAgICAgICBjcCAkQlVTWUJPWCAkdG1wZGlyLyQoYmFzZW5hbWUgJEJVU1lCT1gpCisgICAgICAgICAgIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgLS1pbnN0YWxsIC9iaW4vc2ggc2ggJHRtcGRpci8kKGJhc2VuYW1lICRCVVNZQk9YKSAxIAorICAgICAgICBmaQogfQogCiBwa2dfcG9zdHJtXyR7UE59ICgpIHsKKyAgICAgICAgIyBBZGQgcGF0aCB0byByZW1vdmUgZGlyIGluIGNhc2Ugd2UgcmVtb3ZlZCBvdXIgb25seSBncmVwCisgICAgICAgIGlmIFsgIngkRCIgPSAieCIgXSA7IHRoZW4KKyAgICAgICAgICAgZm9yIGJ1c3lib3hfcm1kaXIgaW4gL3RtcC9idXN5Ym94cm0tKjsgZG8KKyAgICAgICAgICAgICAgIGlmIFsgIiRidXN5Ym94X3JtZGlyIiAhPSAnL3RtcC9idXN5Ym94cm0tKicgXSA7IHRoZW4KKyAgICAgICAgICAgICAgICAgIGV4cG9ydCBQQVRIPSRidXN5Ym94X3JtZGlyOiRQQVRICisgICAgICAgICAgICAgICBmaQorICAgICAgICAgICBkb25lCisgICAgICAgIGZpCisKIAlpZiBncmVwIC1xICJeJHtiYXNlX2JpbmRpcn0vYmFzaCQiICREJHtzeXNjb25mZGlyfS9idXN5Ym94LmxpbmtzKiAmJiBbICEgLWUgJEQke2Jhc2VfYmluZGlyfS9iYXNoIF07IHRoZW4KIAkJcHJpbnRmICIkKGdyZXAgLXYgIl4ke2Jhc2VfYmluZGlyfS9iYXNoJCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscylcbiIgPiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCiAJZmkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtUmVtb3ZlLXN0aW1lLWZ1bmN0aW9uLWNhbGxzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1SZW1vdmUtc3RpbWUtZnVuY3Rpb24tY2FsbHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWI5NDMyOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtUmVtb3ZlLXN0aW1lLWZ1bmN0aW9uLWNhbGxzLnBhdGNoCkBAIC0wLDAgKzEsODUgQEAKK0Zyb20gZDM1MzliZThmMjdiOGNiZmRmZWU0NjBmZTA4Mjk5MTU4ZjA4YmNkOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KK0RhdGU6IFR1ZSwgMTkgTm92IDIwMTkgMTM6MDY6NDAgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIHN0aW1lKCkgZnVuY3Rpb24gY2FsbHMKKworc3RpbWUoKSBoYXMgYmVlbiBkZXByZWNhdGVkIGluIGdsaWJjIDIuMzEgYW5kIHJlcGxhY2VkIHdpdGgKK2Nsb2NrX3NldHRpbWUoKS4gTGV0J3MgcmVwbGFjZSB0aGUgc3RpbWUoKSBmdW5jdGlvbiBjYWxscyB3aXRoCitjbG9ja19zZXR0aW1lKCkgaW4gcHJlcGVyYXRpb24uCisKK2Z1bmN0aW9uICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb2xkICAgICBuZXcgICBkZWx0YQorcmRhdGVfbWFpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAxOTcgICAgIDIyNCAgICAgKzI3CitjbG9ja19zZXR0aW1lICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSAgICAgIDI3ICAgICArMjcKK2RhdGVfbWFpbiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgOTI2ICAgICA5NDEgICAgICsxNQorc3RpbWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzcgICAgICAgLSAgICAgLTM3CistLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyhhZGQvcmVtb3ZlOiAyLzIgZ3Jvdy9zaHJpbms6IDIvMCB1cC9kb3duOiA2OS8tMzcpICAgICAgICAgICAgIFRvdGFsOiAzMiBieXRlcworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5idXN5Ym94Lm5ldC9idXN5Ym94L2NvbW1pdC8/aWQ9ZDM1MzliZThmMjdiOGNiZmRmZWU0NjBmZTA4Mjk5MTU4ZjA4YmNkOV0gCitTaWduZWQtb2ZmLWJ5OiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitTaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgorLS0tCisgY29yZXV0aWxzL2RhdGUuYyAgICAgICAgIHwgNiArKysrKy0KKyBsaWJiYi9taXNzaW5nX3N5c2NhbGxzLmMgfCA4IC0tLS0tLS0tCisgdXRpbC1saW51eC9yZGF0ZS5jICAgICAgIHwgOCArKysrKystLQorIDMgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCisKKy0tLSBhL2NvcmV1dGlscy9kYXRlLmMKKysrKyBiL2NvcmV1dGlscy9kYXRlLmMKK0BAIC0yNzksNiArMjc5LDkgQEAgaW50IGRhdGVfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYQorIAkJdGltZSgmdHMudHZfc2VjKTsKKyAjZW5kaWYKKyAJfQorKyNpZiAhRU5BQkxFX0ZFQVRVUkVfREFURV9OQU5PCisrCXRzLnR2X25zZWMgPSAwOworKyNlbmRpZgorIAlsb2NhbHRpbWVfcigmdHMudHZfc2VjLCAmdG1fdGltZSk7CisgCisgCS8qIElmIGRhdGUgc3RyaW5nIGlzIGdpdmVuLCB1cGRhdGUgdG1fdGltZSwgYW5kIG1heWJlIHNldCBkYXRlICovCitAQCAtMzAxLDkgKzMwNCwxMCBAQCBpbnQgZGF0ZV9tYWluKGludCBhcmdjIFVOVVNFRF9QQVJBTSwgY2hhCisgCQlpZiAoZGF0ZV9zdHJbMF0gIT0gJ0AnKQorIAkJCXRtX3RpbWUudG1faXNkc3QgPSAtMTsKKyAJCXRzLnR2X3NlYyA9IHZhbGlkYXRlX3RtX3RpbWUoZGF0ZV9zdHIsICZ0bV90aW1lKTsKKysJCXRzLnR2X25zZWMgPSAwOworIAorIAkJLyogaWYgc2V0dGluZyB0aW1lLCBzZXQgaXQgKi8KKy0JCWlmICgob3B0ICYgT1BUX1NFVCkgJiYgc3RpbWUoJnRzLnR2X3NlYykgPCAwKSB7CisrCQlpZiAoKG9wdCAmIE9QVF9TRVQpICYmIGNsb2NrX3NldHRpbWUoQ0xPQ0tfUkVBTFRJTUUsICZ0cykgPCAwKSB7CisgCQkJYmJfcGVycm9yX21zZygiY2FuJ3Qgc2V0IGRhdGUiKTsKKyAJCX0KKyAJfQorLS0tIGEvbGliYmIvbWlzc2luZ19zeXNjYWxscy5jCisrKysgYi9saWJiYi9taXNzaW5nX3N5c2NhbGxzLmMKK0BAIC0xNSwxNCArMTUsNiBAQCBwaWRfdCBnZXRzaWQocGlkX3QgcGlkKQorIAlyZXR1cm4gc3lzY2FsbChfX05SX2dldHNpZCwgcGlkKTsKKyB9CisgCistaW50IHN0aW1lKGNvbnN0IHRpbWVfdCAqdCkKKy17CistCXN0cnVjdCB0aW1ldmFsIHR2OworLQl0di50dl9zZWMgPSAqdDsKKy0JdHYudHZfdXNlYyA9IDA7CistCXJldHVybiBzZXR0aW1lb2ZkYXkoJnR2LCBOVUxMKTsKKy19CistCisgaW50IHNldGhvc3RuYW1lKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBsZW4pCisgeworIAlyZXR1cm4gc3lzY2FsbChfX05SX3NldGhvc3RuYW1lLCBuYW1lLCBsZW4pOworLS0tIGEvdXRpbC1saW51eC9yZGF0ZS5jCisrKysgYi91dGlsLWxpbnV4L3JkYXRlLmMKK0BAIC05NSw5ICs5NSwxMyBAQCBpbnQgcmRhdGVfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoCisgCWlmICghKGZsYWdzICYgMikpIHsgLyogbm8gLXAgKC1zIG1heSBiZSBwcmVzZW50KSAqLworIAkJaWYgKHRpbWUoTlVMTCkgPT0gcmVtb3RlX3RpbWUpCisgCQkJYmJfZXJyb3JfbXNnKCJjdXJyZW50IHRpbWUgbWF0Y2hlcyByZW1vdGUgdGltZSIpOworLQkJZWxzZQorLQkJCWlmIChzdGltZSgmcmVtb3RlX3RpbWUpIDwgMCkKKysJCWVsc2UgeworKwkJCXN0cnVjdCB0aW1lc3BlYyB0czsKKysJCQl0cy50dl9zZWMgPSByZW1vdGVfdGltZTsKKysJCQl0cy50dl9uc2VjID0gMDsKKysJCQlpZiAoY2xvY2tfc2V0dGltZShDTE9DS19SRUFMVElNRSwgJnRzKSA8IDApCisgCQkJCWJiX3BlcnJvcl9tc2dfYW5kX2RpZSgiY2FuJ3Qgc2V0IHRpbWUgb2YgZGF5Iik7CisrCQl9CisgCX0KKyAKKyAJaWYgKGZsYWdzICE9IDEpIC8qIG5vdCBsb25lIC1zICovCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLVJlbW92ZS1zeXNjYWxsLXdyYXBwZXJzLWFyb3VuZC1jbG9ja19nZXR0aW1lLWNsb3Nlcy0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLVJlbW92ZS1zeXNjYWxsLXdyYXBwZXJzLWFyb3VuZC1jbG9ja19nZXR0aW1lLWNsb3Nlcy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGM3ZjliOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtUmVtb3ZlLXN5c2NhbGwtd3JhcHBlcnMtYXJvdW5kLWNsb2NrX2dldHRpbWUtY2xvc2VzLS5wYXRjaApAQCAtMCwwICsxLDEyMCBAQAorRnJvbSBiZTVhNTA1ZDc3MWE3N2M2NDBhY2MzNWNlYWE0NzBjODBlNjJmOTU0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjQgT2N0IDIwMTkgMTY6MjY6NTUgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIHN5c2NhbGwgd3JhcHBlcnMgYXJvdW5kIGNsb2NrX2dldHRpbWUsIGNsb3NlcyAxMjA5MQorCisxMjA5MSAiRGlyZWN0IHVzZSBvZiBfX05SX2Nsb2NrX2dldHRpbWUgaXMgbm90IHRpbWU2NC1zYWZlIi4KKworZnVuY3Rpb24gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvbGQgICAgIG5ldyAgIGRlbHRhCitydW5zdl9tYWluICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTY5OCAgICAxNzEyICAgICArMTQKK3N0YXJ0c2VydmljZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzc4ICAgICAzODMgICAgICArNQorZ2V0X21vbm8gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMzEgICAgICAyNSAgICAgIC02CitkYXRlX21haW4gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDkzMiAgICAgOTI2ICAgICAgLTYKK2dldHRpbWVvZmRheV9ucyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDE3ICAgICAgIC0gICAgIC0xNworLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisoYWRkL3JlbW92ZTogMC8xIGdyb3cvc2hyaW5rOiAyLzIgdXAvZG93bjogMTkvLTI5KSAgICAgICAgICAgIFRvdGFsOiAtMTAgYnl0ZXMKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPWJlNWE1MDVkNzcxYTc3YzY0MGFjYzM1Y2VhYTQ3MGM4MGU2MmY5NTRdCitTaWduZWQtb2ZmLWJ5OiBEZW55cyBWbGFzZW5rbyA8dmRhLmxpbnV4QGdvb2dsZW1haWwuY29tPgorLS0tCisgTWFrZWZpbGUuZmxhZ3MgICB8ICA2ICsrKystLQorIGNvcmV1dGlscy9kYXRlLmMgfCAxNiArKystLS0tLS0tLS0tLS0tCisgbGliYmIvdGltZS5jICAgICB8IDExICstLS0tLS0tLS0tCisgcnVuaXQvcnVuc3YuYyAgICB8IDExICstLS0tLS0tLS0tCisgNCBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQorCistLS0gYS9NYWtlZmlsZS5mbGFncworKysrIGIvTWFrZWZpbGUuZmxhZ3MKK0BAIC0xMjksMTAgKzEyOSwxMiBAQCBlbmRpZgorICMgZmFsbCBiYWNrIHRvIHVzaW5nIGEgdGVtcCBmaWxlOgorIENSWVBUX0FWQUlMQUJMRSA6PSAkKHNoZWxsIGVjaG8gJ2ludCBtYWluKHZvaWQpe3JldHVybiAwO30nID5jcnlwdHRlc3QuYzsgJChDQykgJChDRkxBR1MpIC1sY3J5cHQgLW8gL2Rldi9udWxsIGNyeXB0dGVzdC5jID4vZGV2L251bGwgMj4mMSAmJiBlY2hvICJ5Ijsgcm0gY3J5cHR0ZXN0LmMpCisgaWZlcSAoJChDUllQVF9BVkFJTEFCTEUpLHkpCistTERMSUJTICs9IG0gY3J5cHQKKytMRExJQlMgKz0gbSBydCBjcnlwdAorIGVsc2UKKy1MRExJQlMgKz0gbQorK0xETElCUyArPSBtIHJ0CisgZW5kaWYKKysjIGxpYm0gbWF5IGJlIG5lZWRlZCBmb3IgZGMsIGF3aywgbnRwZAorKyMgbGlicnQgbWF5IGJlIG5lZWRlZCBmb3IgY2xvY2tfZ2V0dGltZSgpCisgCisgIyBsaWJwYW0gbWF5IHVzZSBsaWJwdGhyZWFkLCBsaWJkbCBhbmQvb3IgbGliYXVkaXQuCisgIyBPbiBzb21lIHBsYXRmb3JtcyB0aGF0IHJlcXVpcmVzIGFuIGV4cGxpY2l0IC1scHRocmVhZCwgLWxkbCwgLWxhdWRpdC4KKy0tLSBhL2NvcmV1dGlscy9kYXRlLmMKKysrKyBiL2NvcmV1dGlscy9kYXRlLmMKK0BAIC0zMywxMCArMzMsOSBAQAorIC8vY29uZmlnOglFbmFibGUgb3B0aW9uICgtSSkgdG8gb3V0cHV0IGFuIElTTy04NjAxIGNvbXBsaWFudAorIC8vY29uZmlnOglkYXRlL3RpbWUgc3RyaW5nLgorIC8vY29uZmlnOgorLS8vY29uZmlnOiMgZGVmYXVsdHMgdG8gIm5vIjogc3RhdCdzIG5hbm9zZWNvbmQgZmllbGQgaXMgYSBiaXQgbm9uLXBvcnRhYmxlCisgLy9jb25maWc6Y29uZmlnIEZFQVRVUkVfREFURV9OQU5PCisgLy9jb25maWc6CWJvb2wgIlN1cHBvcnQgJVtudW1dTiBuYW5vc2Vjb25kIGZvcm1hdCBzcGVjaWZpZXIiCistLy9jb25maWc6CWRlZmF1bHQgbiAgIyBzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZSkgb3Igc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWU2NCkKKysvL2NvbmZpZzoJZGVmYXVsdCBuICMgc3RhdCdzIG5hbm9zZWNvbmQgZmllbGQgaXMgYSBiaXQgbm9uLXBvcnRhYmxlCisgLy9jb25maWc6CWRlcGVuZHMgb24gREFURQorIC8vY29uZmlnOglzZWxlY3QgUExBVEZPUk1fTElOVVgKKyAvL2NvbmZpZzoJaGVscAorQEAgLTI3MSwxNyArMjcwLDggQEAgaW50IGRhdGVfbWFpbihpbnQgYXJnYyBVTlVTRURfUEFSQU0sIGNoYQorIAkJICovCisgI2VuZGlmCisgCX0gZWxzZSB7CistI2lmIEVOQUJMRV9GRUFUVVJFX0RBVEVfTkFOTyAmJiBkZWZpbmVkKF9fTlJfY2xvY2tfZ2V0dGltZSkKKy0JCS8qIGxpYmMgaGFzIGluY3JlZGlibHkgbWVzc3kgd2F5IG9mIGRvaW5nIHRoaXMsCistCQkgKiB0eXBpY2FsbHkgcmVxdWlyaW5nIC1scnQuIFdlIGp1c3Qgc2tpcCBhbGwgdGhpcyBtZXNzICovCistCQlzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZSwgQ0xPQ0tfUkVBTFRJTUUsICZ0cyk7CistI2VsaWYgRU5BQkxFX0ZFQVRVUkVfREFURV9OQU5PICYmIF9fVElNRVNJWkUgPT0gNjQKKy0JCS8qIExldCdzIG9ubHkgc3VwcG9ydCB0aGUgNjQgc3VmZml4IHN5c2NhbGxzIGZvciA2NC1iaXQgdGltZV90LgorLQkJICogVGhpcyBzaW1wbGlmaWVzIHRoZSBjb2RlIGZvciB1cyBhcyB3ZSBkb24ndCBuZWVkIHRvIGNvbnZlcnQKKy0JCSAqIGJldHdlZW4gNjQtYml0IGFuZCAzMi1iaXQuIFdlIGFsc28gZG9uJ3QgaGF2ZSBhIHdheSB0bworLQkJICogcmVwb3J0IG92ZXJmbG93IGVycm9ycyBoZXJlLgorLQkJICovCistCQlzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZTY0LCBDTE9DS19SRUFMVElNRSwgJnRzKTsKKysjaWYgRU5BQkxFX0ZFQVRVUkVfREFURV9OQU5PCisrCQljbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCAmdHMpOworICNlbHNlCisgCQl0aW1lKCZ0cy50dl9zZWMpOworICNlbmRpZgorLS0tIGEvbGliYmIvdGltZS5jCisrKysgYi9saWJiYi90aW1lLmMKK0BAIC0yNTMsMTggKzI1Myw5IEBAIGNoYXIqIEZBU1RfRlVOQyBzdHJmdGltZV9ZWVlZTU1EREhITU1TUygKKyAjZGVmaW5lIENMT0NLX01PTk9UT05JQyAxCisgI2VuZGlmCisgCistLyogbGliYyBoYXMgaW5jcmVkaWJseSBtZXNzeSB3YXkgb2YgZG9pbmcgdGhpcywKKy0gKiB0eXBpY2FsbHkgcmVxdWlyaW5nIC1scnQuIFdlIGp1c3Qgc2tpcCBhbGwgdGhpcyBtZXNzICovCisgc3RhdGljIHZvaWQgZ2V0X21vbm8oc3RydWN0IHRpbWVzcGVjICp0cykKKyB7CistI2lmIGRlZmluZWQoX19OUl9jbG9ja19nZXR0aW1lKQorLSAJaWYgKHN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lLCBDTE9DS19NT05PVE9OSUMsIHRzKSkKKy0jZWxpZiBfX1RJTUVTSVpFID09IDY0CistCWlmIChzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZTY0LCBDTE9DS19NT05PVE9OSUMsIHRzKSkKKy0jZWxzZQorLSMgZXJyb3IgIldlIGN1cnJlbnRseSBkb24ndCBzdXBwb3J0IGFyY2hpdGVjdHVyZXMgd2l0aG91dCAiIFwKKy0JInRoZSBfX05SX2Nsb2NrX2dldHRpbWUgc3lzY2FsbCBhbmQgMzItYml0IHRpbWVfdCIKKy0jZW5kaWYKKysJaWYgKGNsb2NrX2dldHRpbWUoQ0xPQ0tfTU9OT1RPTklDLCB0cykpCisgCQliYl9lcnJvcl9tc2dfYW5kX2RpZSgiY2xvY2tfZ2V0dGltZShNT05PVE9OSUMpIGZhaWxlZCIpOworIH0KKyB1bnNpZ25lZCBsb25nIGxvbmcgRkFTVF9GVU5DIG1vbm90b25pY19ucyh2b2lkKQorLS0tIGEvcnVuaXQvcnVuc3YuYworKysrIGIvcnVuaXQvcnVuc3YuYworQEAgLTUxLDE4ICs1MSw5IEBAIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUcKKyAjaWYgRU5BQkxFX01PTk9UT05JQ19TWVNDQUxMCisgI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisgCistLyogbGliYyBoYXMgaW5jcmVkaWJseSBtZXNzeSB3YXkgb2YgZG9pbmcgdGhpcywKKy0gKiB0eXBpY2FsbHkgcmVxdWlyaW5nIC1scnQuIFdlIGp1c3Qgc2tpcCBhbGwgdGhpcyBtZXNzICovCisgc3RhdGljIHZvaWQgZ2V0dGltZW9mZGF5X25zKHN0cnVjdCB0aW1lc3BlYyAqdHMpCisgeworLSNpZiBkZWZpbmVkKF9fTlJfY2xvY2tfZ2V0dGltZSkKKy0Jc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWUsIENMT0NLX1JFQUxUSU1FLCB0cyk7CistI2VsaWYgX19USU1FU0laRSA9PSA2NAorLQlzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZTY0LCBDTE9DS19SRUFMVElNRSwgdHMpOworLSNlbHNlCistIyBlcnJvciAiV2UgY3VycmVudGx5IGRvbid0IHN1cHBvcnQgYXJjaGl0ZWN0dXJlcyB3aXRob3V0ICIgXAorLQkidGhlIF9fTlJfY2xvY2tfZ2V0dGltZSBzeXNjYWxsIGFuZCAzMi1iaXQgdGltZV90IgorLSNlbmRpZgorKwljbG9ja19nZXR0aW1lKENMT0NLX1JFQUxUSU1FLCB0cyk7CisgfQorICNlbHNlCisgc3RhdGljIHZvaWQgZ2V0dGltZW9mZGF5X25zKHN0cnVjdCB0aW1lc3BlYyAqdHMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLWRhdGUtVXNlLTY0LXByZWZpeC1zeXNjYWxsLWlmLXdlLWhhdmUtdG8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLWRhdGUtVXNlLTY0LXByZWZpeC1zeXNjYWxsLWlmLXdlLWhhdmUtdG8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ0NTI2YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtZGF0ZS1Vc2UtNjQtcHJlZml4LXN5c2NhbGwtaWYtd2UtaGF2ZS10by5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIGI3Yjc0NTJmMjkyZjAzZWVmYWZhNmZkMWRhOWJjZmM5MzNkZWUxNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitEYXRlOiBXZWQsIDE4IFNlcCAyMDE5IDA5OjI4OjQ5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGRhdGU6IFVzZSA2NCBwcmVmaXggc3lzY2FsbCBpZiB3ZSBoYXZlIHRvCisKK1NvbWUgMzItYml0IGFyY2hpdGVjdHVyZXMgbm8gbG9uZ2VyIGhhdmUgdGhlIDMyLWJpdCB0aW1lX3Qgc3lzY2FsbHMuCitJbnN0ZWFkIHRoZXkgaGF2ZSBzdWZmaXhlZCBzeXNjYWxscyB0aGF0IHJldHVybnMgYSA2NC1iaXQgdGltZV90LiBJZgordGhlIGFyY2hpdGVjdHVyZSBkb2Vzbid0IGhhdmUgdGhlIG5vbi1zdWZmaXhlZCBzeXNjYWxsIGFuZCBpcyB1c2luZyBhCis2NC1iaXQgdGltZV90IGxldCdzIHVzZSB0aGUgc3VmZml4ZWQgc3lzY2FsbCBpbnN0ZWFkLgorCitUaGlzIGZpeGVzIGJ1aWxkIGlzc3VlcyB3aGVuIGJ1aWxkaW5nIGZvciBSSVNDLVYgMzItYml0IHdpdGggNS4xKyBrZXJuZWwKK2hlYWRlcnMuCisKK0lmIGFuIGFyY2hpdGVjdHVyZSBvbmx5IHN1cHBvcnRzIHRoZSBzdWZmaXhlZCBzeXNjYWxscywgYnV0IGlzIHN0aWxsCit1c2luZyBhIDMyLWJpdCB0aW1lX3QgZmFsbCBiYWNrIHRvIHRoZSBsaWJjIGNhbGwuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9pZD1iN2I3NDUyZjI5MmYwM2VlZmFmYTZmZDFkYTliY2ZjOTMzZGVlMTVhXQorU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KKy0tLQorIGNvcmV1dGlscy9kYXRlLmMgfCAxMSArKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKKy0tLSBhL2NvcmV1dGlscy9kYXRlLmMKKysrKyBiL2NvcmV1dGlscy9kYXRlLmMKK0BAIC0zNiw3ICszNiw3IEBACisgLy9jb25maWc6IyBkZWZhdWx0cyB0byAibm8iOiBzdGF0J3MgbmFub3NlY29uZCBmaWVsZCBpcyBhIGJpdCBub24tcG9ydGFibGUKKyAvL2NvbmZpZzpjb25maWcgRkVBVFVSRV9EQVRFX05BTk8KKyAvL2NvbmZpZzoJYm9vbCAiU3VwcG9ydCAlW251bV1OIG5hbm9zZWNvbmQgZm9ybWF0IHNwZWNpZmllciIKKy0vL2NvbmZpZzoJZGVmYXVsdCBuICAjIHN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lKQorKy8vY29uZmlnOglkZWZhdWx0IG4gICMgc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWUpIG9yIHN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lNjQpCisgLy9jb25maWc6CWRlcGVuZHMgb24gREFURQorIC8vY29uZmlnOglzZWxlY3QgUExBVEZPUk1fTElOVVgKKyAvL2NvbmZpZzoJaGVscAorQEAgLTI3MSwxMCArMjcxLDE3IEBAIGludCBkYXRlX21haW4oaW50IGFyZ2MgVU5VU0VEX1BBUkFNLCBjaGEKKyAJCSAqLworICNlbmRpZgorIAl9IGVsc2UgeworLSNpZiBFTkFCTEVfRkVBVFVSRV9EQVRFX05BTk8KKysjaWYgRU5BQkxFX0ZFQVRVUkVfREFURV9OQU5PICYmIGRlZmluZWQoX19OUl9jbG9ja19nZXR0aW1lKQorIAkJLyogbGliYyBoYXMgaW5jcmVkaWJseSBtZXNzeSB3YXkgb2YgZG9pbmcgdGhpcywKKyAJCSAqIHR5cGljYWxseSByZXF1aXJpbmcgLWxydC4gV2UganVzdCBza2lwIGFsbCB0aGlzIG1lc3MgKi8KKyAJCXN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lLCBDTE9DS19SRUFMVElNRSwgJnRzKTsKKysjZWxpZiBFTkFCTEVfRkVBVFVSRV9EQVRFX05BTk8gJiYgX19USU1FU0laRSA9PSA2NAorKwkJLyogTGV0J3Mgb25seSBzdXBwb3J0IHRoZSA2NCBzdWZmaXggc3lzY2FsbHMgZm9yIDY0LWJpdCB0aW1lX3QuCisrCQkgKiBUaGlzIHNpbXBsaWZpZXMgdGhlIGNvZGUgZm9yIHVzIGFzIHdlIGRvbid0IG5lZWQgdG8gY29udmVydAorKwkJICogYmV0d2VlbiA2NC1iaXQgYW5kIDMyLWJpdC4gV2UgYWxzbyBkb24ndCBoYXZlIGEgd2F5IHRvCisrCQkgKiByZXBvcnQgb3ZlcmZsb3cgZXJyb3JzIGhlcmUuCisrCQkgKi8KKysJCXN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lNjQsIENMT0NLX1JFQUxUSU1FLCAmdHMpOworICNlbHNlCisgCQl0aW1lKCZ0cy50dl9zZWMpOworICNlbmRpZgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1zeXNjdGwtaWdub3JlLUVJTy1vZi1zdGFibGVfc2VjcmV0LWJlbG93LXByb2Mtc3lzLW5lLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMS1zeXNjdGwtaWdub3JlLUVJTy1vZi1zdGFibGVfc2VjcmV0LWJlbG93LXByb2Mtc3lzLW5lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjlmNThlYWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLXN5c2N0bC1pZ25vcmUtRUlPLW9mLXN0YWJsZV9zZWNyZXQtYmVsb3ctcHJvYy1zeXMtbmUucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSAzYmVlMDQ2MGQ3NGJhZDg4ZWNhNjU5MmU2M2NhOTI2OTYxYjQzYjY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCA2IE1hciAyMDIwIDE2OjA5OjI2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHN5c2N0bDogaWdub3JlIEVJTyBvZiBzdGFibGVfc2VjcmV0IGJlbG93CisgL3Byb2Mvc3lzL25ldC9pcHY2L2NvbmYKKworQXZvaWQgY29uZnVzaW5nIG1lc3NhZ2VzIGNhdXNlZCBieSBFSU8gb24gcmVhZGluZworL3Byb2Mvc3lzL25ldC9pcHY2L2NvbmYvKi9zdGFibGVfc2VjcmV0IGlmIHRob3NlIGFyZSBub3Qgc2V0IHlldC4KK01ha2UgaXQgYmVoYXZlIHRoZSBzYW1lIGFzIHByb2Nwcyg+PTMuMy4xMykuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtidXN5Ym94QGJ1c3lib3gubmV0IG1haWxpbmcgbGlzdF0KKworU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgorLS0tCisgcHJvY3BzL3N5c2N0bC5jIHwgOSArKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9wcm9jcHMvc3lzY3RsLmMgYi9wcm9jcHMvc3lzY3RsLmMKK2luZGV4IDZkNzcxODVjYS4uNDJjNTFjYzkxIDEwMDY0NAorLS0tIGEvcHJvY3BzL3N5c2N0bC5jCisrKysgYi9wcm9jcHMvc3lzY3RsLmMKK0BAIC0yMDIsNyArMjAyLDE0IEBAIHN0YXRpYyBpbnQgc3lzY3RsX2FjdF9vbl9zZXR0aW5nKGNoYXIgKnNldHRpbmcpCisgCQl2YWx1ZSA9IGNwdHIgPSB4bWFsbG9jX3JlYWQoZmQsIE5VTEwpOworIAkJY2xvc2UoZmQpOworIAkJaWYgKHZhbHVlID09IE5VTEwpIHsKKy0JCQliYl9wZXJyb3JfbXNnKCJlcnJvciByZWFkaW5nIGtleSAnJXMnIiwgb3V0bmFtZSk7CisrCQkJc3dpdGNoIChlcnJubykgeworKwkJCQljYXNlIEVJTzoKKysJCQkJCS8qIElnbm9yZSBzdGFibGVfc2VjcmV0IGJlbG93IC9wcm9jL3N5cy9uZXQvaXB2Ni9jb25mICovCisrCQkJCQlicmVhazsKKysJCQkJZGVmYXVsdDoKKysJCQkJCWJiX3BlcnJvcl9tc2coImVycm9yIHJlYWRpbmcga2V5ICclcyciLCBvdXRuYW1lKTsKKysJCQkJCWJyZWFrOworKwkJCX0KKyAJCQlyZXR2YWwgPSBFWElUX0ZBSUxVUkU7CisgCQkJZ290byBlbmQ7CisgCQl9CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLXRpbWUtVXNlLTY0LXByZWZpeC1zeXNjYWxsLWlmLXdlLWhhdmUtdG8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAxLXRpbWUtVXNlLTY0LXByZWZpeC1zeXNjYWxsLWlmLXdlLWhhdmUtdG8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNThhNmMwZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9idXN5Ym94LzAwMDEtdGltZS1Vc2UtNjQtcHJlZml4LXN5c2NhbGwtaWYtd2UtaGF2ZS10by5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDkwMmQzOTkyOTIyZmM4ZGI4NDk1ZDVmYjMwYTQ1ODE3MTFiNjBjNjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitEYXRlOiBXZWQsIDE4IFNlcCAyMDE5IDA5OjI4OjUwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHRpbWU6IFVzZSA2NCBwcmVmaXggc3lzY2FsbCBpZiB3ZSBoYXZlIHRvCisKK1NvbWUgMzItYml0IGFyY2hpdGVjdHVyZXMgbm8gbG9uZ2VyIGhhdmUgdGhlIDMyLWJpdCB0aW1lX3Qgc3lzY2FsbHMuCitJbnN0ZWFkIHRoZXkgaGF2ZSBzdWZmaXhlZCBzeXNjYWxscyB0aGF0IHJldHVybnMgYSA2NC1iaXQgdGltZV90LiBJZgordGhlIGFyY2hpdGVjdHVyZSBkb2Vzbid0IGhhdmUgdGhlIG5vbi1zdWZmaXhlZCBzeXNjYWxsIGFuZCBpcyB1c2luZyBhCis2NC1iaXQgdGltZV90IGxldCdzIHVzZSB0aGUgc3VmZml4ZWQgc3lzY2FsbCBpbnN0ZWFkLgorCitUaGlzIGZpeGVzIGJ1aWxkIGlzc3VlcyB3aGVuIGJ1aWxkaW5nIGZvciBSSVNDLVYgMzItYml0IHdpdGggNS4xKyBrZXJuZWwKK2hlYWRlcnMuCisKK0lmIGFuIGFyY2hpdGVjdHVyZSBvbmx5IHN1cHBvcnRzIHRoZSBzdWZmaXhlZCBzeXNjYWxscywgYnV0IGlzIHN0aWxsCit1c2luZyBhIDMyLWJpdCB0aW1lX3QgcmVwb3J0IGEgY29tcGlsYXRpb24gZXJyb3IuIFRoaXMgYXZvaWRzIHVzIGhhdmUgdG8KK2RlYWwgd2l0aCBjb252ZXJ0aW5nIGJldHdlZW4gNjQtYml0IGFuZCAzMi1iaXQgdmFsdWVzLiBUaGVyZSBhcmUKK2N1cnJlbnRseSBubyBhcmNoaXRlY3R1cmVzIHdoZXJlIHRoaXMgaXMgdGhlIGNhc2UuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LmJ1c3lib3gubmV0L2J1c3lib3gvY29tbWl0Lz9pZD05MDJkMzk5MjkyMmZjOGRiODQ5NWQ1ZmIzMGE0NTgxNzExYjYwYzYyXQorU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorU2lnbmVkLW9mZi1ieTogRGVueXMgVmxhc2Vua28gPHZkYS5saW51eEBnb29nbGVtYWlsLmNvbT4KKy0tLQorIGxpYmJiL3RpbWUuYyB8IDcgKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKKworLS0tIGEvbGliYmIvdGltZS5jCisrKysgYi9saWJiYi90aW1lLmMKK0BAIC0yNTcsNyArMjU3LDE0IEBAIGNoYXIqIEZBU1RfRlVOQyBzdHJmdGltZV9ZWVlZTU1EREhITU1TUygKKyAgKiB0eXBpY2FsbHkgcmVxdWlyaW5nIC1scnQuIFdlIGp1c3Qgc2tpcCBhbGwgdGhpcyBtZXNzICovCisgc3RhdGljIHZvaWQgZ2V0X21vbm8oc3RydWN0IHRpbWVzcGVjICp0cykKKyB7CistCWlmIChzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZSwgQ0xPQ0tfTU9OT1RPTklDLCB0cykpCisrI2lmIGRlZmluZWQoX19OUl9jbG9ja19nZXR0aW1lKQorKyAJaWYgKHN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lLCBDTE9DS19NT05PVE9OSUMsIHRzKSkKKysjZWxpZiBfX1RJTUVTSVpFID09IDY0CisrCWlmIChzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZTY0LCBDTE9DS19NT05PVE9OSUMsIHRzKSkKKysjZWxzZQorKyMgZXJyb3IgIldlIGN1cnJlbnRseSBkb24ndCBzdXBwb3J0IGFyY2hpdGVjdHVyZXMgd2l0aG91dCAiIFwKKysJInRoZSBfX05SX2Nsb2NrX2dldHRpbWUgc3lzY2FsbCBhbmQgMzItYml0IHRpbWVfdCIKKysjZW5kaWYKKyAJCWJiX2Vycm9yX21zZ19hbmRfZGllKCJjbG9ja19nZXR0aW1lKE1PTk9UT05JQykgZmFpbGVkIik7CisgfQorIHVuc2lnbmVkIGxvbmcgbG9uZyBGQVNUX0ZVTkMgbW9ub3RvbmljX25zKHZvaWQpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveC8wMDAzLXJ1bnN2LVVzZS02NC1wcmVmaXgtc3lzY2FsbC1pZi13ZS1oYXZlLXRvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMy1ydW5zdi1Vc2UtNjQtcHJlZml4LXN5c2NhbGwtaWYtd2UtaGF2ZS10by5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzYwNTcwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3gvMDAwMy1ydW5zdi1Vc2UtNjQtcHJlZml4LXN5c2NhbGwtaWYtd2UtaGF2ZS10by5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDhjNzQxOTY0OWQ2ZTZmZGE4ZmE3ZDBlODYzMDg0Yzc4YWM3Mjg2MjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpci5mcmFuY2lzQHdkYy5jb20+CitEYXRlOiBXZWQsIDI4IEF1ZyAyMDE5IDEwOjU0OjE1IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMy8zXSBydW5zdjogVXNlIDY0IHByZWZpeCBzeXNjYWxsIGlmIHdlIGhhdmUgdG8KKworU29tZSAzMi1iaXQgYXJjaGl0ZWN0dXJlcyBubyBsb25nZXIgaGF2ZSB0aGUgMzItYml0IHRpbWVfdCBzeXNjYWxscy4KK0luc3RlYWQgdGhleSBoYXZlIHN1ZmZpeGVkIHN5c2NhbGxzIHRoYXQgcmV0dXJucyBhIDY0LWJpdCB0aW1lX3QuIElmCit0aGUgYXJjaGl0ZWN0dXJlIGRvZXNuJ3QgaGF2ZSB0aGUgbm9uLXN1ZmZpeGVkIHN5c2NhbGwgYW5kIGlzIHVzaW5nIGEKKzY0LWJpdCB0aW1lX3QgbGV0J3MgdXNlIHRoZSBzdWZmaXhlZCBzeXNjYWxsIGluc3RlYWQuCisKK1RoaXMgZml4ZXMgYnVpbGQgaXNzdWVzIHdoZW4gYnVpbGRpbmcgZm9yIFJJU0MtViAzMi1iaXQgd2l0aCA1LjErIGtlcm5lbAoraGVhZGVycy4KKworSWYgYW4gYXJjaGl0ZWN0dXJlIG9ubHkgc3VwcG9ydHMgdGhlIHN1ZmZpeGVkIHN5c2NhbGxzLCBidXQgaXMgc3RpbGwKK3VzaW5nIGEgMzItYml0IHRpbWVfdCByZXBvcnQgYSBjb21waWxhdGlvbiBlcnJvci4gVGhpcyBhdm9pZHMgdXMgaGF2ZSB0bworZGVhbCB3aXRoIGNvbnZlcnRpbmcgYmV0d2VlbiA2NC1iaXQgYW5kIDMyLWJpdCB2YWx1ZXMuIFRoZXJlIGFyZQorY3VycmVudGx5IG5vIGFyY2hpdGVjdHVyZXMgd2hlcmUgdGhpcyBpcyB0aGUgY2FzZS4KKworU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuYnVzeWJveC5uZXQvYnVzeWJveC9jb21taXQvP2lkPWFkMjdkNDRlYmU5NTAzMzU2MTZmMzdlMzY4NjM0NjlkYzE4MWI0NTVdCistLS0KKyBydW5pdC9ydW5zdi5jIHwgNyArKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvcnVuaXQvcnVuc3YuYyBiL3J1bml0L3J1bnN2LmMKK2luZGV4IGNjYzc2MmQ3OC4uNzM3OTA5YjBlIDEwMDY0NAorLS0tIGEvcnVuaXQvcnVuc3YuYworKysrIGIvcnVuaXQvcnVuc3YuYworQEAgLTU1LDcgKzU1LDE0IEBAIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICAqIHR5cGljYWxseSByZXF1aXJpbmcgLWxydC4gV2UganVzdCBza2lwIGFsbCB0aGlzIG1lc3MgKi8KKyBzdGF0aWMgdm9pZCBnZXR0aW1lb2ZkYXlfbnMoc3RydWN0IHRpbWVzcGVjICp0cykKKyB7CisrI2lmIGRlZmluZWQoX19OUl9jbG9ja19nZXR0aW1lKQorIAlzeXNjYWxsKF9fTlJfY2xvY2tfZ2V0dGltZSwgQ0xPQ0tfUkVBTFRJTUUsIHRzKTsKKysjZWxpZiBfX1RJTUVTSVpFID09IDY0CisrCXN5c2NhbGwoX19OUl9jbG9ja19nZXR0aW1lNjQsIENMT0NLX1JFQUxUSU1FLCB0cyk7CisrI2Vsc2UKKysjIGVycm9yICJXZSBjdXJyZW50bHkgZG9uJ3Qgc3VwcG9ydCBhcmNoaXRlY3R1cmVzIHdpdGhvdXQgIiBcCisrCSJ0aGUgX19OUl9jbG9ja19nZXR0aW1lIHN5c2NhbGwgYW5kIDMyLWJpdCB0aW1lX3QiCisrI2VuZGlmCisgfQorICNlbHNlCisgc3RhdGljIHZvaWQgZ2V0dGltZW9mZGF5X25zKHN0cnVjdCB0aW1lc3BlYyAqdHMpCistLSAKKzIuMjIuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjMxLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjMxLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0YjFmMmMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4zMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotcmVxdWlyZSBidXN5Ym94LmluYwotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuYnVzeWJveC5uZXQvZG93bmxvYWRzL2J1c3lib3gtJHtQVn0udGFyLmJ6MjtuYW1lPXRhcmJhbGwgXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC11ZGhjcGMtbm9fZGVjb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZmluZC10b3VjaHNjcmVlbi5zaCBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWNyb24gXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1odHRwZCBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXVkaGNwZCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWZhdWx0LnNjcmlwdCBcCi0gICAgICAgICAgIGZpbGU6Ly9zaW1wbGUuc2NyaXB0IFwKLSAgICAgICAgICAgZmlsZTovL2h3Y2xvY2suc2ggXAotICAgICAgICAgICBmaWxlOi8vc3lzbG9nIFwKLSAgICAgICAgICAgZmlsZTovL3N5c2xvZy1zdGFydHVwLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vc3lzbG9nLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1zeXNsb2cuZGVmYXVsdCBcCi0gICAgICAgICAgIGZpbGU6Ly9tZGV2IFwKLSAgICAgICAgICAgZmlsZTovL21kZXYuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9tZGV2LW1vdW50LnNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlZmNvbmZpZyBcCi0gICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXN5c2xvZy5zZXJ2aWNlLmluIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gta2xvZ2Quc2VydmljZS5pbiBcCi0gICAgICAgICAgIGZpbGU6Ly9mYWlsX29uX25vX21lZGlhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9pbmV0ZC5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL2luZXRkIFwKLSAgICAgICAgICAgZmlsZTovL2xvZ2luLXV0aWxpdGllcy5jZmcgXAotICAgICAgICAgICBmaWxlOi8vcmVjb2duaXplX2Nvbm5tYW5kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2J1c3lib3gtY3Jvc3MtbWVudWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1DQy13aGVuLWxpbmtpbmctaW5zdGVhZC1vZi1MRC1hbmQtdXNlLUNGTEFHUy1hbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbW91bnQtdmlhLWxhYmVsLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly9zaGExc3VtLmNmZyBcCi0gICAgICAgICAgIGZpbGU6Ly9zaGEyNTZzdW0uY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL2dldG9wdHMuY2ZnIFwKLSAgICAgICAgICAgZmlsZTovL3Jlc2l6ZS5jZmcgXAotICAgICAgICAgICAke0BbIiIsICJmaWxlOi8vaW5pdC5jZmciXVsoZC5nZXRWYXIoJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXInKSA9PSAnYnVzeWJveCcpXX0gXAotICAgICAgICAgICAke0BbIiIsICJmaWxlOi8vbWRldi5jZmciXVsoZC5nZXRWYXIoJ1ZJUlRVQUwtUlVOVElNRV9kZXZfbWFuYWdlcicpID09ICdidXN5Ym94LW1kZXYnKV19IFwKLSAgICAgICAgICAgZmlsZTovL3N5c2xvZy5jZmcgXAotICAgICAgICAgICBmaWxlOi8vdW5pY29kZS5jZmcgXAotICAgICAgICAgICBmaWxlOi8vcmNTIFwKLSAgICAgICAgICAgZmlsZTovL3JjSyBcCi0gICAgICAgICAgIGZpbGU6Ly9tYWtlZmlsZS1saWJiYi1yYWNlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHN1aXRlLWNoZWNrLXV1ZGVjb2RlLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzdWl0ZS11c2Utd3d3LmV4YW1wbGUub3JnLWZvci13Z2V0LXRlc3QtY2FzZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1kdS1sLXdvcmtzLWZpeC10by11c2UtMTQ1LWluc3RlYWQtb2YtMTQ0LnBhdGNoIFwKLSIKLVNSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL211c2wuY2ZnICIKLQotU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiY2RiYTVkNDQ1OGY5NDRjZWVjNWNkY2Y3YzQ5MTRiNjkiCi1TUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICIwZTQ5MjUzOTJmZDlmMzc0M2NjNTE3ZTAzMWI2OGIwMTJiMjRhNjNiMGNmNmMxZmYwM2NjZTdiYjM4NDZjYzk5IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4zMS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2J1c3lib3hfMS4zMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJiYjFkNTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvYnVzeWJveF8xLjMxLjEuYmIKQEAgLTAsMCArMSw1NSBAQAorcmVxdWlyZSBidXN5Ym94LmluYworCitTUkNfVVJJID0gImh0dHBzOi8vYnVzeWJveC5uZXQvZG93bmxvYWRzL2J1c3lib3gtJHtQVn0udGFyLmJ6MjtuYW1lPXRhcmJhbGwgXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC11ZGhjcGMtbm9fZGVjb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZmluZC10b3VjaHNjcmVlbi5zaCBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LWNyb24gXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1odHRwZCBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXVkaGNwZCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWZhdWx0LnNjcmlwdCBcCisgICAgICAgICAgIGZpbGU6Ly9zaW1wbGUuc2NyaXB0IFwKKyAgICAgICAgICAgZmlsZTovL2h3Y2xvY2suc2ggXAorICAgICAgICAgICBmaWxlOi8vc3lzbG9nIFwKKyAgICAgICAgICAgZmlsZTovL3N5c2xvZy1zdGFydHVwLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vc3lzbG9nLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vYnVzeWJveC1zeXNsb2cuZGVmYXVsdCBcCisgICAgICAgICAgIGZpbGU6Ly9tZGV2IFwKKyAgICAgICAgICAgZmlsZTovL21kZXYuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9tZGV2LW1vdW50LnNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlZmNvbmZpZyBcCisgICAgICAgICAgIGZpbGU6Ly9idXN5Ym94LXN5c2xvZy5zZXJ2aWNlLmluIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gta2xvZ2Quc2VydmljZS5pbiBcCisgICAgICAgICAgIGZpbGU6Ly9mYWlsX29uX25vX21lZGlhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9pbmV0ZC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2luZXRkIFwKKyAgICAgICAgICAgZmlsZTovL2xvZ2luLXV0aWxpdGllcy5jZmcgXAorICAgICAgICAgICBmaWxlOi8vcmVjb2duaXplX2Nvbm5tYW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2J1c3lib3gtY3Jvc3MtbWVudWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1DQy13aGVuLWxpbmtpbmctaW5zdGVhZC1vZi1MRC1hbmQtdXNlLUNGTEFHUy1hbmQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbW91bnQtdmlhLWxhYmVsLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly9zaGExc3VtLmNmZyBcCisgICAgICAgICAgIGZpbGU6Ly9zaGEyNTZzdW0uY2ZnIFwKKyAgICAgICAgICAgZmlsZTovL2dldG9wdHMuY2ZnIFwKKyAgICAgICAgICAgZmlsZTovL3Jlc2l6ZS5jZmcgXAorICAgICAgICAgICAke0BbIiIsICJmaWxlOi8vaW5pdC5jZmciXVsoZC5nZXRWYXIoJ1ZJUlRVQUwtUlVOVElNRV9pbml0X21hbmFnZXInKSA9PSAnYnVzeWJveCcpXX0gXAorICAgICAgICAgICAke0BbIiIsICJmaWxlOi8vbWRldi5jZmciXVsoZC5nZXRWYXIoJ1ZJUlRVQUwtUlVOVElNRV9kZXZfbWFuYWdlcicpID09ICdidXN5Ym94LW1kZXYnKV19IFwKKyAgICAgICAgICAgZmlsZTovL3N5c2xvZy5jZmcgXAorICAgICAgICAgICBmaWxlOi8vdW5pY29kZS5jZmcgXAorICAgICAgICAgICBmaWxlOi8vcmNTIFwKKyAgICAgICAgICAgZmlsZTovL3JjSyBcCisgICAgICAgICAgIGZpbGU6Ly9tYWtlZmlsZS1saWJiYi1yYWNlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHN1aXRlLWNoZWNrLXV1ZGVjb2RlLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzdWl0ZS11c2Utd3d3LmV4YW1wbGUub3JnLWZvci13Z2V0LXRlc3QtY2FzZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1kdS1sLXdvcmtzLWZpeC10by11c2UtMTQ1LWluc3RlYWQtb2YtMTQ0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZGF0ZS1Vc2UtNjQtcHJlZml4LXN5c2NhbGwtaWYtd2UtaGF2ZS10by5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRpbWUtVXNlLTY0LXByZWZpeC1zeXNjYWxsLWlmLXdlLWhhdmUtdG8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1ydW5zdi1Vc2UtNjQtcHJlZml4LXN5c2NhbGwtaWYtd2UtaGF2ZS10by5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1zeXNjYWxsLXdyYXBwZXJzLWFyb3VuZC1jbG9ja19nZXR0aW1lLWNsb3Nlcy0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtc3RpbWUtZnVuY3Rpb24tY2FsbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zeXNjdGwtaWdub3JlLUVJTy1vZi1zdGFibGVfc2VjcmV0LWJlbG93LXByb2Mtc3lzLW5lLnBhdGNoIFwKKyIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZmlsZTovL211c2wuY2ZnICIKKworU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiNzA5MTNlZGFmMjI2M2ExNTczOTNhZjA3NTY1YzE3ZjAiCitTUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICJkMGY5NDBhNzJmNjQ4OTQzYzFmMjIxMWUwZTMxMTczODdjMzFkNzY1MTM3ZDkyYmQ4Mjg0YTNmYjk3NTJhOTk4IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2ZpbGVzL2luaXR0YWIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvaW5pdHRhYgppbmRleCAyYmM4MzFjLi5lOGVjMmFiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvaW5pdHRhYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvaW5pdHRhYgpAQCAtOCwxMSArOCwxNyBAQAogOjpzeXNpbml0Oi9iaW4vbWtkaXIgLXAgL2Rldi9wdHMKIDo6c3lzaW5pdDovYmluL21vdW50IC10IGRldnB0cyBkZXZwdHMgL2Rldi9wdHMKIDo6c3lzaW5pdDovYmluL21vdW50IC1hCi0KKzo6c3lzaW5pdDovc2Jpbi9zd2Fwb24gLWEKK251bGw6OnN5c2luaXQ6L2Jpbi9sbiAtc2YgL3Byb2Mvc2VsZi9mZCAvZGV2L2ZkCitudWxsOjpzeXNpbml0Oi9iaW4vbG4gLXNmIC9wcm9jL3NlbGYvZmQvMCAvZGV2L3N0ZGluCitudWxsOjpzeXNpbml0Oi9iaW4vbG4gLXNmIC9wcm9jL3NlbGYvZmQvMSAvZGV2L3N0ZG91dAorbnVsbDo6c3lzaW5pdDovYmluL2xuIC1zZiAvcHJvYy9zZWxmL2ZkLzIgL2Rldi9zdGRlcnIKKyMgc2V0IGhvc3RuYW1lCitudWxsOjpzeXNpbml0Oi9iaW4vYnVzeWJveCBob3N0bmFtZSAtRiAvZXRjL2hvc3RuYW1lCiA6OnN5c2luaXQ6L2V0Yy9pbml0LmQvcmNTCiAKICMgU3R1ZmYgdG8gZG8gYmVmb3JlIHJlYm9vdGluZwotOjpjdHJsYWx0ZGVsOi9zYmluL3JlYm9vdAorIzo6Y3RybGFsdGRlbDovc2Jpbi9yZWJvb3QKIDo6c2h1dGRvd246L2V0Yy9pbml0LmQvcmNLCiA6OnNodXRkb3duOi9zYmluL3N3YXBvZmYgLWEKIDo6c2h1dGRvd246L2Jpbi91bW91bnQgLWEgLXIKQEAgLTIwLDUgKzI2LDMgQEAKICMgU3R1ZmYgdG8gZG8gd2hlbiByZXN0YXJ0aW5nIHRoZSBpbml0IHByb2Nlc3MKIDo6cmVzdGFydDovc2Jpbi9pbml0CiAKLSMgc2V0IGhvc3RuYW1lCi1udWxsOjpzeXNpbml0Oi9iaW4vYnVzeWJveCBob3N0bmFtZSAtRiAvZXRjL2hvc3RuYW1lCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2ZpbGVzL3J1bi1wdGVzdAppbmRleCBiMTllNWI1Li43Njg3M2M5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvcnVuLXB0ZXN0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvYnVzeWJveC9maWxlcy9ydW4tcHRlc3QKQEAgLTYsNCArNiw0IEBACiBleHBvcnQgU0tJUF9LTk9XTl9CVUdTPTEKIAogY2QgdGVzdHN1aXRlIHx8IGV4aXQgMQotLi9ydW50ZXN0IC12IHwgc2VkIC1yICdzL14oU0tJUFBFRHxVTlRFU1RFRCk6L1NLSVA6LycKK0xBTkc9Qy5VVEYtOCAuL3J1bnRlc3QgLXYgfCBzZWQgLXIgJ3MvXihTS0lQUEVEfFVOVEVTVEVEKTovU0tJUDovJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9idXN5Ym94L2ZpbGVzL3NpbXBsZS5zY3JpcHQgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvc2ltcGxlLnNjcmlwdAppbmRleCA2ZWQwMjkzLi4wMTM0NDA1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvc2ltcGxlLnNjcmlwdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2J1c3lib3gvZmlsZXMvc2ltcGxlLnNjcmlwdApAQCAtMjgsNyArMjgsNyBAQAogCQlmaQogCQlpZiAhIHJvb3RfaXNfbmZzIDsgdGhlbgogICAgICAgICAgICAgICAgICAgICAgICAgaWYgWyAkaGF2ZV9iaW5faXAgLWVxIDEgXTsgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvU0JJTl9ESVIvaXAgYWRkciBmbHVzaCBkZXYgJGludGVyZmFjZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvU0JJTl9ESVIvaXAgLTQgYWRkciBmbHVzaCBkZXYgJGludGVyZmFjZQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvU0JJTl9ESVIvaXAgbGluayBzZXQgZGV2ICRpbnRlcmZhY2UgdXAKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgL1NCSU5fRElSL2lmY29uZmlnICRpbnRlcmZhY2UgMC4wLjAuMApAQCAtNTksNyArNTksNyBAQAogCQkJbWV0cmljPTEwCiAJCQlmb3IgaSBpbiAkcm91dGVyIDsgZG8KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgWyAkaGF2ZV9iaW5faXAgLWVxIDEgXTsgdGhlbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC9TQklOX0RJUi9pcCByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgJGkgbWV0cmljICRtZXRyaWMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvU0JJTl9ESVIvaXAgcm91dGUgYWRkIGRlZmF1bHQgdmlhICRpIG1ldHJpYyAkbWV0cmljIGRldiAkaW50ZXJmYWNlCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAvU0JJTl9ESVIvcm91dGUgYWRkIGRlZmF1bHQgZ3cgJGkgZGV2ICRpbnRlcmZhY2UgbWV0cmljICRtZXRyaWMgMj4vZGV2L251bGwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yLzAwMDEtQ292ZXItdGhlLWVsc2Utd2l0aC1fX0dMSUJDX18ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi8wMDAxLUNvdmVyLXRoZS1lbHNlLXdpdGgtX19HTElCQ19fLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2U0YmYwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yLzAwMDEtQ292ZXItdGhlLWVsc2Utd2l0aC1fX0dMSUJDX18ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIGI2YTU5YjA1ZjFmYTUxNGM2YjM4N2M5NTQ0YmQ2M2IxYmZjZjJlZWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxMyBKYW4gMjAxNiAwNTozODoyOSArMDAwMAotU3ViamVjdDogW1BBVENIXSBDb3ZlciB0aGUgZWxzZSB3aXRoIF9fR0xJQkNfXwotCi1GaXhlcyBidWlsZCBlcnJvcnMgb24gbXVzbC94ODYKLQotfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20KLS9ob21lL3VidW50dS93b3JrL29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3N5c3Jvb3RzL3FlbXV4ODYvdXNyL2luY2x1ZGUvYXNtL3Rlcm1pb3MuaDoxOjAsCi18ICAgICAgICAgICAgICAgICAgZnJvbQotL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvc3lzcm9vdHMvcWVtdXg4Ni91c3IvaW5jbHVkZS9saW51eC90ZXJtaW9zLmg6NSwKLXwgICAgICAgICAgICAgICAgICBmcm9tCi0vaG9tZS91YnVudHUvd29yay9vZS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtbXVzbC93b3JrL2k1ODYtb2UtbGludXgtbXVzbC9jb25zb2xlLXRvb2xzLzAuMy4yLXI4L2NvbnNvbGUtdG9vbHMtMC4zLjIvdnR0b29scy9yZXNpemVjb25zLmM6ODY6Ci18Ci0vaG9tZS91YnVudHUvd29yay9vZS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtbXVzbC9zeXNyb290cy9xZW11eDg2L3Vzci9pbmNsdWRlL2FzbS1nZW5lcmljL3Rlcm1pb3MuaDoxNDo4OgotZXJyb3I6IHJlZGVmaW5pdGlvbiBvZiAnc3RydWN0IHdpbnNpemUnCi18ICBzdHJ1Y3Qgd2luc2l6ZSB7Ci18ICAgICAgICAgXgotfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20KLS9ob21lL3VidW50dS93b3JrL29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3N5c3Jvb3RzL3FlbXV4ODYvdXNyL2luY2x1ZGUvc3lzL2lvY3RsLmg6NzowLAotfCAgICAgICAgICAgICAgICAgIGZyb20KLS9ob21lL3VidW50dS93b3JrL29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3dvcmsvaTU4Ni1vZS1saW51eC1tdXNsL2NvbnNvbGUtdG9vbHMvMC4zLjItcjgvY29uc29sZS10b29scy0wLjMuMi92dHRvb2xzL3Jlc2l6ZWNvbnMuYzo4MToKLXwKLS9ob21lL3VidW50dS93b3JrL29lL29wZW5lbWJlZGRlZC1jb3JlL2J1aWxkL3RtcC1tdXNsL3N5c3Jvb3RzL3FlbXV4ODYvdXNyL2luY2x1ZGUvYml0cy9pb2N0bC5oOjkwOjg6Ci1ub3RlOiBvcmlnaW5hbGx5IGRlZmluZWQgaGVyZQotfCAgc3RydWN0IHdpbnNpemUgewotfCAgICAgICAgIF4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSB2dHRvb2xzL3Jlc2l6ZWNvbnMuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3Z0dG9vbHMvcmVzaXplY29ucy5jIGIvdnR0b29scy9yZXNpemVjb25zLmMKLWluZGV4IGYwYTcwNTUuLmU4NzUzYjEgMTAwNjQ0Ci0tLS0gYS92dHRvb2xzL3Jlc2l6ZWNvbnMuYwotKysrIGIvdnR0b29scy9yZXNpemVjb25zLmMKLUBAIC04MSw3ICs4MSw3IEBACi0gI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgotICNpZiAoX19HTlVfTElCUkFSWV9fID49IDYpCi0gIyBpbmNsdWRlIDxzeXMvcGVybS5oPgotLSNlbHNlCi0rI2VsaWYgZGVmaW5lZCBfX0dMSUJDX18KLSAjIGluY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0gIyBpbmNsdWRlIDxsaW51eC90ZXJtaW9zLmg+Ci0gI2VuZGlmCi0tLSAKLTIuNy4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yLzAwMDEtRml4LWZvcm1hdC1zZWN1cml0eS1jb21waWxhdGlvbi1lcnJvci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yLzAwMDEtRml4LWZvcm1hdC1zZWN1cml0eS1jb21waWxhdGlvbi1lcnJvci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmU3MmVjNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi8wMDAxLUZpeC1mb3JtYXQtc2VjdXJpdHktY29tcGlsYXRpb24tZXJyb3IucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1TdWJqZWN0OiBGaXggJ2Zvcm1hdC1zZWN1cml0eScgY29tcGlsYXRpb24gZXJyb3IuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBrYmR0b29scy9rYmRfbW9kZS5jICAgIHwgNiArKystLS0KLSBrYmR0b29scy9zZXRtZXRhbW9kZS5jIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEva2JkdG9vbHMva2JkX21vZGUuYyBiL2tiZHRvb2xzL2tiZF9tb2RlLmMKLWluZGV4IDAyZGNhMzguLjhkYmNkMzkgMTAwNjQ0Ci0tLS0gYS9rYmR0b29scy9rYmRfbW9kZS5jCi0rKysgYi9rYmR0b29scy9rYmRfbW9kZS5jCi1AQCAtMTIwLDcgKzEyMCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gICAgICAgLyogcmVwb3J0IG1vZGUgKi8KLSAgICAgICBpZiAoaW9jdGwoZmQsIEtER0tCTU9ERSwgJm1vZGUpKSAKLSAJewotLQkgIGZwcmludGYoc3RkZXJyLCBwcm9nbmFtZSk7Ci0rCSAgZnByaW50ZihzdGRlcnIsICIlcyIsIHByb2duYW1lKTsKLSAJICBwZXJyb3IoXygiOiBlcnJvciByZWFkaW5nIGtleWJvYXJkIG1vZGVcbiIpKTsKLSAJICBleGl0KDEpOwotIAl9Ci1AQCAtMTUxLDcgKzE1MSw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gICAgIGtiZF9yZXAucGVyaW9kID0gcmF0ZTsKLSAgICAgaWYgKGlvY3RsKGZkLCBLREtCRFJFUCwgJmtiZF9yZXApKQotICAgICAgIHsKLS0JZnByaW50ZihzdGRlcnIsIHByb2duYW1lKTsKLSsJZnByaW50ZihzdGRlcnIsICIlcyIsIHByb2duYW1lKTsKLSAJcGVycm9yKF8oIjogZXJyb3Igc2V0dGluZyBrZXlib2FyZCByZXBlYXQgbW9kZVxuIikpOwotIAlleGl0KDEpOwotICAgICAgIH0KLUBAIC0xNjAsNyArMTYwLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgIAotICAgaWYgKGlvY3RsKGZkLCBLRFNLQk1PREUsIG1vZGUpKQotICAgICB7Ci0tICAgICAgZnByaW50ZihzdGRlcnIsIHByb2duYW1lKTsKLSsgICAgICBmcHJpbnRmKHN0ZGVyciwgIiVzIiwgcHJvZ25hbWUpOwotICAgICAgIHBlcnJvcihfKCI6IGVycm9yIHNldHRpbmcga2V5Ym9hcmQgbW9kZVxuIikpOwotICAgICAgIGV4aXQoMSk7Ci0gICAgIH0KLWRpZmYgLS1naXQgYS9rYmR0b29scy9zZXRtZXRhbW9kZS5jIGIva2JkdG9vbHMvc2V0bWV0YW1vZGUuYwotaW5kZXggNWJlZDk0NS4uMGJhNzY3NiAxMDA2NDQKLS0tLSBhL2tiZHRvb2xzL3NldG1ldGFtb2RlLmMKLSsrKyBiL2tiZHRvb2xzL3NldG1ldGFtb2RlLmMKLUBAIC00Miw3ICs0Miw3IEBAIHZvaWQgcmVwb3J0KGludCBtZXRhKQotICAgICBkZWZhdWx0OgotICAgICAgIHMgPSBOXygiU3RyYW5nZSBtb2RlIGZvciBNZXRhIGtleT9cbiIpOwotICAgICB9Ci0tICBwcmludGYoXyhzKSk7Ci0rICBwcmludGYoIiVzIiwgXyhzKSk7Ci0gfQotIAotIHN0cnVjdCBtZXRhIAotLS0gCi0yLjguMwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi8wMDAxLWtiZHRvb2xzLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLXVfY2hhci1hbmQtdV9zaG9ydC0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi8wMDAxLWtiZHRvb2xzLUluY2x1ZGUtc3lzLXR5cGVzLmgtZm9yLXVfY2hhci1hbmQtdV9zaG9ydC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY0YjViMDQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvMDAwMS1rYmR0b29scy1JbmNsdWRlLXN5cy10eXBlcy5oLWZvci11X2NoYXItYW5kLXVfc2hvcnQtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotRnJvbSAwZmQ1ZGRhNTFkNjhlMWVjMmE4N2UyN2I1ZWQwZGZmMzUwM2I0NjgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMzEgRGVjIDIwMTUgMDg6MTI6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0ga2JkdG9vbHM6IEluY2x1ZGUgc3lzL3R5cGVzLmggZm9yIHVfY2hhciBhbmQgdV9zaG9ydAotIGRlZmluaXRpb24KLQotb24gbXVzbCB0aGlzIGdldHMgZXhwb3NlZCBzaW5jZSBzeXMvdHlwZXMuaCBpcyBub3QKLWluY2x1ZGVkIHZpYSBzb21lIG90aGVyIGluZGlyZWN0IGluY2x1c2lvbiBhcyBpcyB0aGUgY2FzZSB3aXRoIGdsaWJjCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0ga2JkdG9vbHMvZHVtcGtleXMuYyB8IDEgKwotIGtiZHRvb2xzL2xvYWRrZXlzLnkgfCAxICsKLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEva2JkdG9vbHMvZHVtcGtleXMuYyBiL2tiZHRvb2xzL2R1bXBrZXlzLmMKLWluZGV4IDYxNTlkNDkuLmMxOWZiMjEgMTAwNjQ0Ci0tLS0gYS9rYmR0b29scy9kdW1wa2V5cy5jCi0rKysgYi9rYmR0b29scy9kdW1wa2V5cy5jCi1AQCAtMjYsNiArMjYsNyBAQAotICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzeXNleGl0cy5oPgotICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2tkLmg+Ci0gI2luY2x1ZGUgPGxpbnV4L2tleWJvYXJkLmg+Ci1kaWZmIC0tZ2l0IGEva2JkdG9vbHMvbG9hZGtleXMueSBiL2tiZHRvb2xzL2xvYWRrZXlzLnkKLWluZGV4IGI2YThlMDEuLjQ0NjhmNzcgMTAwNjQ0Ci0tLS0gYS9rYmR0b29scy9sb2Fka2V5cy55Ci0rKysgYi9rYmR0b29scy9sb2Fka2V5cy55Ci1AQCAtNzEsNiArNzEsNyBAQAotICNpbmNsdWRlIDxsaW51eC9rZC5oPgotICNpbmNsdWRlIDxsaW51eC9rZXlib2FyZC5oPgotICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2luY2x1ZGUgPHN5c2V4aXRzLmg+Ci0gI2luY2x1ZGUgPHNpZ25hbC5oPgotLS0gCi0yLjYuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9NYWtldmFycyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL01ha2V2YXJzCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzMjY5MmFiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL01ha2V2YXJzCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotIyBNYWtlZmlsZSB2YXJpYWJsZXMgZm9yIFBPIGRpcmVjdG9yeSBpbiBhbnkgcGFja2FnZSB1c2luZyBHTlUgZ2V0dGV4dC4KLQotIyBVc3VhbGx5IHRoZSBtZXNzYWdlIGRvbWFpbiBpcyB0aGUgc2FtZSBhcyB0aGUgcGFja2FnZSBuYW1lLgotRE9NQUlOID0gJChQQUNLQUdFKQotCi0jIFRoZXNlIHR3byB2YXJpYWJsZXMgZGVwZW5kIG9uIHRoZSBsb2NhdGlvbiBvZiB0aGlzIGRpcmVjdG9yeS4KLXN1YmRpciA9IHBvCi10b3BfYnVpbGRkaXIgPSAuLgotCi0jIFRoZXNlIG9wdGlvbnMgZ2V0IHBhc3NlZCB0byB4Z2V0dGV4dC4KLVhHRVRURVhUX09QVElPTlMgPSAtLWtleXdvcmQ9XyAtLWtleXdvcmQ9Tl8KLQotIyBUaGlzIGlzIHRoZSBjb3B5cmlnaHQgaG9sZGVyIHRoYXQgZ2V0cyBpbnNlcnRlZCBpbnRvIHRoZSBoZWFkZXIgb2YgdGhlCi0jICQoRE9NQUlOKS5wb3QgZmlsZS4gIFNldCB0aGlzIHRvIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG9mIHRoZSBzdXJyb3VuZGluZwotIyBwYWNrYWdlLiAgKE5vdGUgdGhhdCB0aGUgbXNnc3RyIHN0cmluZ3MsIGV4dHJhY3RlZCBmcm9tIHRoZSBwYWNrYWdlJ3MKLSMgc291cmNlcywgYmVsb25nIHRvIHRoZSBjb3B5cmlnaHQgaG9sZGVyIG9mIHRoZSBwYWNrYWdlLikgIFRyYW5zbGF0b3JzIGFyZQotIyBleHBlY3RlZCB0byB0cmFuc2ZlciB0aGUgY29weXJpZ2h0IGZvciB0aGVpciB0cmFuc2xhdGlvbnMgdG8gdGhpcyBwZXJzb24KLSMgb3IgZW50aXR5LCBvciB0byBkaXNjbGFpbSB0aGVpciBjb3B5cmlnaHQuICBUaGUgZW1wdHkgc3RyaW5nIHN0YW5kcyBmb3IKLSMgdGhlIHB1YmxpYyBkb21haW47IGluIHRoaXMgY2FzZSB0aGUgdHJhbnNsYXRvcnMgYXJlIGV4cGVjdGVkIHRvIGRpc2NsYWltCi0jIHRoZWlyIGNvcHlyaWdodC4KLUNPUFlSSUdIVF9IT0xERVIgPSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLQotIyBUaGlzIGlzIHRoZSBlbWFpbCBhZGRyZXNzIG9yIFVSTCB0byB3aGljaCB0aGUgdHJhbnNsYXRvcnMgc2hhbGwgcmVwb3J0Ci0jIGJ1Z3MgaW4gdGhlIHVudHJhbnNsYXRlZCBzdHJpbmdzOgotIyAtIFN0cmluZ3Mgd2hpY2ggYXJlIG5vdCBlbnRpcmUgc2VudGVuY2VzLCBzZWUgdGhlIG1haW50YWluZXIgZ3VpZGVsaW5lcwotIyAgIGluIHRoZSBHTlUgZ2V0dGV4dCBkb2N1bWVudGF0aW9uLCBzZWN0aW9uICdQcmVwYXJpbmcgU3RyaW5ncycuCi0jIC0gU3RyaW5ncyB3aGljaCB1c2UgdW5jbGVhciB0ZXJtcyBvciByZXF1aXJlIGFkZGl0aW9uYWwgY29udGV4dCB0byBiZQotIyAgIHVuZGVyc3Rvb2QuCi0jIC0gU3RyaW5ncyB3aGljaCBtYWtlIGludmFsaWQgYXNzdW1wdGlvbnMgYWJvdXQgbm90YXRpb24gb2YgZGF0ZSwgdGltZSBvcgotIyAgIG1vbmV5LgotIyAtIFBsdXJhbGlzYXRpb24gcHJvYmxlbXMuCi0jIC0gSW5jb3JyZWN0IEVuZ2xpc2ggc3BlbGxpbmcuCi0jIC0gSW5jb3JyZWN0IGZvcm1hdHRpbmcuCi0jIEl0IGNhbiBiZSB5b3VyIGVtYWlsIGFkZHJlc3MsIG9yIGEgbWFpbGluZyBsaXN0IGFkZHJlc3Mgd2hlcmUgdHJhbnNsYXRvcnMKLSMgY2FuIHdyaXRlIHRvIHdpdGhvdXQgYmVpbmcgc3Vic2NyaWJlZCwgb3IgdGhlIFVSTCBvZiBhIHdlYiBwYWdlIHRocm91Z2gKLSMgd2hpY2ggdGhlIHRyYW5zbGF0b3JzIGNhbiBjb250YWN0IHlvdS4KLU1TR0lEX0JVR1NfQUREUkVTUyA9Ci0KLSMgVGhpcyBpcyB0aGUgbGlzdCBvZiBsb2NhbGUgY2F0ZWdvcmllcywgYmV5b25kIExDX01FU1NBR0VTLCBmb3Igd2hpY2ggdGhlCi0jIG1lc3NhZ2UgY2F0YWxvZ3Mgc2hhbGwgYmUgdXNlZC4gIEl0IGlzIHVzdWFsbHkgZW1wdHkuCi1FWFRSQV9MT0NBTEVfQ0FURUdPUklFUyA9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9jb2RlcGFnZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2NvZGVwYWdlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjMjg3MDE0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2NvZGVwYWdlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSMKLSMgUGF0Y2ggbWFuYWdlZCBieSBodHRwOi8vd3d3Lm1uLWxvZ2lzdGlrLmRlL3Vuc3VwcG9ydGVkL3B4YTI1MC9wYXRjaGVyCi0jCi0KLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yL2NvbnRyaWIvY29kZXBhZ2UuY35jb2RlcGFnZQotKysrIGNvbnNvbGUtdG9vbHMtMC4zLjIvY29udHJpYi9jb2RlcGFnZS5jCi1AQCAtMjI5LDcgKzIyOSw3IEBACi0gCSAgcmV0dXJuIDA7Ci0gCi0gICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIlwKLS1XYXJuaW5nOiBDUCBmb3JtYXQgaXMgYSBoYWNrIVxuCi0rV2FybmluZzogQ1AgZm9ybWF0IGlzIGEgaGFjayFcblwKLSAgICAgICAgICBUaGUgZmlsZXMgcHJvZHVjZWQgbWF5IG9yIG1heSBub3QgYmUgdXNhYmxlIVxuIik7Ci0gCi0gCXNwcmludGYob3V0ZmlsZSwgIiVkLmNwIiwgQ1BFbnRyeUhlYWRlci5jb2RlcGFnZSk7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9jb21waWxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvY29tcGlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkzZjUxMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9jb21waWxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTIgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yL2tiZHRvb2xzL3Nob3drZXkuY35jb21waWxlCTE5OTktMDgtMjUgMTc6MjA6MDguMDAwMDAwMDAwIC0wNDAwCi0rKysgY29uc29sZS10b29scy0wLjMuMi9rYmR0b29scy9zaG93a2V5LmMJMjAwNC0wNS0wOSAwMzowMzoyMy4wMDAwMDAwMDAgLTA0MDAKLUBAIC0yNjQsNyArMjY0LDYgQEAKLSAJICBicmVhazsKLSAJY2FzZSBjbWRfa2V5bWFwOgotIAkgIHByaW50ZigiKVxuIik7Ci0tCWRlZmF1bHQ6Ci0gCX0KLSAgICAgfQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvY29uZmlndXJlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvY29uZmlndXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNWMxMDBjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2NvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0tLS0gY29uc29sZS10b29scy0wLjMuMi9jb25maWd1cmUuaW5+Y29uZmlndXJlCi0rKysgY29uc29sZS10b29scy0wLjMuMi9jb25maWd1cmUuaW4KLUBAIC0yLDEzICsyLDE0IEBACi0gZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCi0gCi0gIyBJbml0aWFsaXplCi0tQUNfSU5JVChrYmR0b29scy9sb2Fka2V5cy55KQotK0FDX0lOSVQKLStBQ19DT05GSUdfU1JDRElSKFtrYmR0b29scy9sb2Fka2V5cy55XSkKLSAKLSBkZWZpbmUoY3RfdW5pY29kZWRhdGFfZGVmYXVsdCwvdXNyL3NoYXJlL3VuaWRhdGEvVW5pY29kZURhdGEtMi50eHQpCi0gY3RfbG9jYWxkYXRhZGlyX2RlZmF1bHQ9L3Vzci9sb2NhbC9zaGFyZSAgICAgIyBpZmYgLS1lbmFibGUtbG9jYWxkYXRhZGlyIHdpdGhvdXQgc3BlY2lmaWMgZGlyCi0gCi0gI0FDX0NPTkZJR19BVVhfRElSKGF1dG9jb25mKQotLUFDX0NBTk9OSUNBTF9TWVNURU0KLStBQ19DQU5PTklDQUxfVEFSR0VUKFtdKQotIEFNX0lOSVRfQVVUT01BS0UoY29uc29sZS10b29scywgMC4zLjIpCi0gCi0gIyBEZWZhdWx0cwotQEAgLTI1LDcgKzI2LDYgQEAKLSAjIGkxOG4gc3R1ZmYKLSBBTExfTElOR1VBUz0iY3MgZGUgcnUgZ2EgZnIiCi0gQU1fR05VX0dFVFRFWFQKLS1BQ19PVVRQVVRfQ09NTUFORFMoW3NlZCAtZSAiL1BPVEZJTEVTID0vciBwby9QT1RGSUxFUyIgcG8vTWFrZWZpbGUuaW4gPiBwby9NYWtlZmlsZV0pCi0gCi0gQUNfREVGSU5FX1VOUVVPVEVEKExPQ0FMRURJUiwgIi91c3Ivc2hhcmUvbG9jYWxlIikKLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2ZpeC1saWJjb25zb2xlLWxpbmtpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9maXgtbGliY29uc29sZS1saW5raW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTYxZWI4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL2ZpeC1saWJjb25zb2xlLWxpbmtpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1GaXggdGhlIGZvbGxvd2luZyBlcnJvciBkZXRlY3RlZCB3aXRoIGk1ODYtcG9reW1sbGliMzItbGludXgtZ2NjICh0aGUKLW11bHRpbGliIHg4Ni02NCBsaWIzMiBjb21waWxlcik6Ci0gICAgLi4vbGliL2N0dXRpbHMvLmxpYnMvbGliY3R1dGlscy5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgZ2V0X2tlcm5lbF9zZm0nCi0gICAgY29sbGVjdDI6IGVycm9yOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzCi0KLUl0IHNlZW1zIHRoYXQgbGliY3R1dGlscy5zbyAodGhlIGxpYnJhcnkgdGhhdCB1c2VzIGdldF9rZXJuZWxfc2ZtKSBtdXN0Ci1iZSBzdGF0ZWQgYmVmb3JlIGxpYmNvbnNvbGUuc28gKHRoZSBsaWJyYXJ5IHRoYXQgZXhwb3J0cyB0aGUgZnVuY3Rpb24pIHdoZW4KLXVzaW5nIG11bHRpbGliIGdjYwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KLQotSW5kZXg6IGNvbnNvbGUtdG9vbHMtMC4zLjIvZm9udGZpbGV0b29scy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNvbnNvbGUtdG9vbHMtMC4zLjIub3JpZy9mb250ZmlsZXRvb2xzL01ha2VmaWxlLmFtCi0rKysgY29uc29sZS10b29scy0wLjMuMi9mb250ZmlsZXRvb2xzL01ha2VmaWxlLmFtCi1AQCAtMTAsNSArMTAsNSBAQCBFWFRSQV9ESVNUID0gZm9udHMydmlyZm9udC5jIHZpcmZvbnQuaAotIAotICMgbGliY29uc29sZSBpcyBuZWVkZWQgYnkgY3R1dGlscwotIExEQUREID0gLi4vbGliL2N0bG9jYWwvbGliY3Rsb2NhbC5hIC4uL2xpYi9jZm9udC9saWJjZm9udC5sYSBcCi0tCS4uL2xpYi9jb25zb2xlL2xpYmNvbnNvbGUubGEgXAotLQkuLi9saWIvY3R1dGlscy9saWJjdHV0aWxzLmxhIC4uL2xpYi9nZW5lcmljL2xpYmN0Z2VuZXJpYy5sYQotKwkuLi9saWIvY3R1dGlscy9saWJjdHV0aWxzLmxhIFwKLSsJLi4vbGliL2NvbnNvbGUvbGliY29uc29sZS5sYSAuLi9saWIvZ2VuZXJpYy9saWJjdGdlbmVyaWMubGEKLUluZGV4OiBjb25zb2xlLXRvb2xzLTAuMy4yL3Z0dG9vbHMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yLm9yaWcvdnR0b29scy9NYWtlZmlsZS5hbQotKysrIGNvbnNvbGUtdG9vbHMtMC4zLjIvdnR0b29scy9NYWtlZmlsZS5hbQotQEAgLTcsOSArNyw5IEBAIGJpbl9QUk9HUkFNUyA9IGNodnQgZGVhbGxvY3Z0IHdyaXRldnQgZmcKLSAJdmNzdGltZSB2dC1pcy1VVEY4IG9wZW52dCBAUkVTSVpFQ09OU0AKLSBFWFRSQV9QUk9HUkFNUyA9IHJlc2l6ZWNvbnMKLSAKLS1MREFERCA9IC4uL2xpYi9jdGxvY2FsL2xpYmN0bG9jYWwuYSAuLi9saWIvY29uc29sZS9saWJjb25zb2xlLmxhIFwKLStMREFERCA9IC4uL2xpYi9jdGxvY2FsL2xpYmN0bG9jYWwuYSAuLi9saWIvY3R1dGlscy9saWJjdHV0aWxzLmxhIFwKLSAJLi4vbGliL2Nmb250L2xpYmNmb250LmxhIFwKLS0JLi4vbGliL2N0dXRpbHMvbGliY3R1dGlscy5sYSAuLi9saWIvZ2VuZXJpYy9saWJjdGdlbmVyaWMubGEKLSsJLi4vbGliL2NvbnNvbGUvbGliY29uc29sZS5sYSAuLi9saWIvZ2VuZXJpYy9saWJjdGdlbmVyaWMubGEKLSAKLSB2Y3N0aW1lX0xEQUREID0gLi4vbGliL2N0bG9jYWwvbGliY3Rsb2NhbC5hCi0gc2NyZWVuZHVtcF9MREFERCA9IC4uL2xpYi9jdGxvY2FsL2xpYmN0bG9jYWwuYQotSW5kZXg6IGNvbnNvbGUtdG9vbHMtMC4zLjIva2JkdG9vbHMvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yLm9yaWcva2JkdG9vbHMvTWFrZWZpbGUuYW0KLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL2tiZHRvb2xzL01ha2VmaWxlLmFtCi1AQCAtMTUsOSArMTUsOSBAQCBFWFRSQV9QUk9HUkFNUyA9IGdldGtleWNvZGVzIHNldGtleWNvZGVzCi0gbG9hZGtleXNfU09VUkNFUyA9IGxvYWRrZXlzLnkgYW5hbHl6ZS5sCi0gCi0gWUZMQUdTID0gLWQKLS1MREFERCA9IC4uL2xpYi9jdGxvY2FsL2xpYmN0bG9jYWwuYSAuLi9saWIvY29uc29sZS9saWJjb25zb2xlLmxhIFwKLStMREFERCA9IC4uL2xpYi9jdGxvY2FsL2xpYmN0bG9jYWwuYSAuLi9saWIvY3R1dGlscy9saWJjdHV0aWxzLmxhIFwKLSAJLi4vbGliL2Nmb250L2xpYmNmb250LmxhIFwKLS0JLi4vbGliL2N0dXRpbHMvbGliY3R1dGlscy5sYSAuLi9saWIvZ2VuZXJpYy9saWJjdGdlbmVyaWMubGEKLSsJLi4vbGliL2NvbnNvbGUvbGliY29uc29sZS5sYSAuLi9saWIvZ2VuZXJpYy9saWJjdGdlbmVyaWMubGEKLSAKLSBsb2Fka2V5c19MREFERCA9ICQoTERBREQpIEBMRVhMSUJACi0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9rYmRyYXRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIva2JkcmF0ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM3MGJlOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9rYmRyYXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotUGF0Y2ggZnJvbSBNYXR0aGlhcyBHb2VibCA8b2VAbS5nb2VibC5uZXQ+Ci1BZGRlZCB2aWEgT0UgYnVndHJhY2tlcjogYnVnICM0NzgKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yL2tiZHRvb2xzL2tiZF9tb2RlLmMub3JpZwotKysrIGNvbnNvbGUtdG9vbHMtMC4zLjIva2JkdG9vbHMva2JkX21vZGUuYwotQEAgLTI5LDExICsyOSwxNiBAQAotICAgT1BUKCItdSAtLXVuaWNvZGUgICIsIF8oIlVURi04IG1vZGUgKFVOSUNPREUpIikpOwotICAgT1BUKCItcyAtLXNjYW5jb2RlICIsIF8oInNjYW5jb2RlIG1vZGUgKFJBVykiKSk7Ci0gICBPUFQoIiAgIC0tbW9kZT17OGJpdCxrZXljb2RlLHVuaWNvZGUsc2NhbmNvZGV9ICIsIF8oInNldCBtb2RlIikpOwotKyAgT1BUKCItciAtLXJhdGU9UkFURSAiLCBfKCJzZXQgcmVwZWF0IHJhdGUgKGRlZmF1bHQ6IDMzKSIpKTsKLSsgIE9QVCgiLWQgLS1kZWxheT1ERUxBWSAiLCBfKCJzZXQgcmVwZWF0IGRlbGF5IChkZWZhdWx0OiAyNTApIikpOwotIAotICAgT1BUKCItaCAtLWhlbHAgICAgICIsIEhFTFBERVNDKTsKLSAgIE9QVCgiLVYgLS12ZXJzaW9uICAiLCBWRVJTSU9OREVTQyk7Ci0gfQotIAotK2ludCByYXRlPS0xOwotK2ludCBkZWxheT0tMTsKLSsKLSBzdGF0aWMgaW50IHBhcnNlX2NtZGxpbmUgKGludCBhcmdjLCBjaGFyICphcmd2W10pCi0gewotICAgICBpbnQgbW9kZSA9IC0xOwotQEAgLTQ2LDExICs1MSwxMyBAQAotICAgICAgIHsgIm1vZGUiICAgICAsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnbScgfSwKLSAgICAgICB7ICJzY2FuY29kZSIgLCBub19hcmd1bWVudCwgTlVMTCwgJ3MnIH0sCi0gICAgICAgeyAidW5pY29kZSIgICwgbm9fYXJndW1lbnQsIE5VTEwsICd1JyB9LAotKyAgICAgIHsgInJhdGUiICAgICAsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncicgfSwKLSsgICAgICB7ICJkZWxheSIgICAgLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ2QnIH0sCi0gICAgICAgeyBOVUxMLCAwLCBOVUxMLCAwIH0KLSAgICAgfTsKLSAgICAgaW50IGM7Ci0gCi0tICAgIHdoaWxlICggKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgIlZoYWtzdSIsIGxvbmdfb3B0cywgTlVMTCkpICE9IEVPRikgCi0rICAgIHdoaWxlICggKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgIlZoYWtzdXI6ZDoiLCBsb25nX29wdHMsIE5VTEwpKSAhPSBFT0YpIAotICAgICAgIHN3aXRjaCAoYykgewotICAgICAgIGNhc2UgJ2gnOgotIAl1c2FnZSAoKTsKLUBAIC01OCw2ICs2NSwxNCBAQAotICAgICAgIGNhc2UgJ1YnOgotIAl2ZXJzaW9uICgpOwotIAlleGl0KDApOwotKyAgICAgIGNhc2UgJ3InOgotKwlyYXRlID0gYXRvaShvcHRhcmcpOwotKwltb2RlID0gLTI7Ci0rCWJyZWFrOwotKyAgICAgIGNhc2UgJ2QnOgotKwlkZWxheSA9IGF0b2kob3B0YXJnKTsKLSsJbW9kZSA9IC0yOwotKwlicmVhazsKLSAgICAgICBjYXNlICdhJzoKLSAJbW9kZSA9IEtfWExBVEU7Ci0gCWJyZWFrOwotQEAgLTEyOSw2ICsxNDQsMjAgQEAKLSAgICAgICBleGl0KDApOwotICAgICB9Ci0gICAKLSsgIGlmICggcmF0ZSAhPSAtMSB8fCBkZWxheSAhPSAtMSApCi0rICAgIHsKLSsgICAgc3RydWN0IGtiZF9yZXBlYXQga2JkX3JlcDsKLSsgICAga2JkX3JlcC5kZWxheSA9IGRlbGF5OwotKyAgICBrYmRfcmVwLnBlcmlvZCA9IHJhdGU7Ci0rICAgIGlmIChpb2N0bChmZCwgS0RLQkRSRVAsICZrYmRfcmVwKSkKLSsgICAgICB7Ci0rCWZwcmludGYoc3RkZXJyLCBwcm9nbmFtZSk7Ci0rCXBlcnJvcihfKCI6IGVycm9yIHNldHRpbmcga2V5Ym9hcmQgcmVwZWF0IG1vZGVcbiIpKTsKLSsJZXhpdCgxKTsKLSsgICAgICB9Ci0rICAgIGlmKG1vZGU9PS0yKSBleGl0KDApOwotKyAgICB9Ci0rICAKLSAgIGlmIChpb2N0bChmZCwgS0RTS0JNT0RFLCBtb2RlKSkKLSAgICAgewotICAgICAgIGZwcmludGYoc3RkZXJyLCBwcm9nbmFtZSk7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9sY21lc3NhZ2UubTQgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9sY21lc3NhZ2UubTQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4ZDQ3YTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvbGNtZXNzYWdlLm00CisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotIyBDaGVjayB3aGV0aGVyIExDX01FU1NBR0VTIGlzIGF2YWlsYWJsZSBpbiA8bG9jYWxlLmg+LgotIyBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5NS4KLSMKLSMgVGhpcyBmaWxlIGNhbiBiZSBjb3BpZWQgYW5kIHVzZWQgZnJlZWx5IHdpdGhvdXQgcmVzdHJpY3Rpb25zLiAgSXQgY2FuCi0jIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotIyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50Ci0jIHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0IGZ1bmN0aW9uYWxpdHkuCi0jIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKLSMgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCi0jIGdldHRleHQgcGFja2FnZSBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotIyBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KLQotIyBzZXJpYWwgMgotCi1BQ19ERUZVTihbQU1fTENfTUVTU0FHRVNdLAotICBbaWYgdGVzdCAkYWNfY3ZfaGVhZGVyX2xvY2FsZV9oID0geWVzOyB0aGVuCi0gICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBMQ19NRVNTQUdFU10sIGFtX2N2X3ZhbF9MQ19NRVNTQUdFUywKLSAgICAgIFtBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxvY2FsZS5oPl0sIFtyZXR1cm4gTENfTUVTU0FHRVNdLAotICAgICAgIGFtX2N2X3ZhbF9MQ19NRVNTQUdFUz15ZXMsIGFtX2N2X3ZhbF9MQ19NRVNTQUdFUz1ubyldKQotICAgIGlmIHRlc3QgJGFtX2N2X3ZhbF9MQ19NRVNTQUdFUyA9IHllczsgdGhlbgotICAgICAgQUNfREVGSU5FKEhBVkVfTENfTUVTU0FHRVMsIDEsCi0gICAgICAgIFtEZWZpbmUgaWYgeW91ciA8bG9jYWxlLmg+IGZpbGUgZGVmaW5lcyBMQ19NRVNTQUdFUy5dKQotICAgIGZpCi0gIGZpXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL25vLWRlcC1vbi1saWJmbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL25vLWRlcC1vbi1saWJmbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTY3MzVhNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi9uby1kZXAtb24tbGliZmwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOSArMCwwIEBACi1ObyByZWFzb24gdG8gbGluayB3aXRoIGxpYmZsIHNpbmNlICdsb2Fka2V5cycgaW1wbGVtZW50cwotaXRzIG93biB5eXdyYXAoKS95eWxleCgpIGZ1bmN0aW9ucy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBKYWNvYiBLcm9vbiA8amFjb2Iua3Jvb25AbWlrcm9kaWRha3Quc2U+Ci0KLUluZGV4OiBjb25zb2xlLXRvb2xzLTAuMy4yL2tiZHRvb2xzL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY29uc29sZS10b29scy0wLjMuMi5vcmlnL2tiZHRvb2xzL01ha2VmaWxlLmFtCi0rKysgY29uc29sZS10b29scy0wLjMuMi9rYmR0b29scy9NYWtlZmlsZS5hbQotQEAgLTE5LDggKzE5LDYgQEAgTERBREQgPSAuLi9saWIvY3Rsb2NhbC9saWJjdGxvY2FsLmEgLi4vbAotIAkuLi9saWIvY2ZvbnQvbGliY2ZvbnQubGEgXAotIAkuLi9saWIvY29uc29sZS9saWJjb25zb2xlLmxhIC4uL2xpYi9nZW5lcmljL2xpYmN0Z2VuZXJpYy5sYQotIAotLWxvYWRrZXlzX0xEQUREID0gJChMREFERCkgQExFWExJQkAKLS0KLSBiaW5fU0NSSVBUUyA9IG1rX21vZG1hcAotIAotIG5vaW5zdF9IRUFERVJTID0gbG9hZGtleXMuaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvbm9kb2NzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHMtMC4zLjIvbm9kb2NzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyZWQ2MDkyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL25vZG9jcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyICswLDAgQEAKLVRoZSBkb2NzIG5lZWQgdG9vbHMgd2UgZG9uJ3QgaGF2ZSB0byBidWlsZCBzbyBkaXNhYmxlIHRoZW0uCi0KLUFsc28gcmVtb3ZlIGludGwgc2luY2UgdGhlIE1ha2VmaWxlIGRvZXNuJ3Qgd29yayB3aXRoIDMuODIgYW5kIHdlCi1kb24ndCB3YW50IHRvIGJ1aWxkIGxpYmludGwgYW55d2F5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCi1SUCAyMDEyLzEwLzE3Ci0KLUluZGV4OiBjb25zb2xlLXRvb2xzLTAuMy4yL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY29uc29sZS10b29scy0wLjMuMi5vcmlnL01ha2VmaWxlLmFtCTE5OTktMDQtMTUgMDE6MzM6MjQuMDAwMDAwMDAwICswMDAwCi0rKysgY29uc29sZS10b29scy0wLjMuMi9NYWtlZmlsZS5hbQkyMDEyLTEwLTE3IDExOjQ4OjE0LjEwNzA2OTE0NSArMDAwMAotQEAgLTEsNyArMSw3IEBACi0gIyAtKi0gbWFrZWZpbGUgLSotCi0gQVVUT01BS0VfT1BUSU9OUyA9IGZvcmVpZ24KLSAKLS1TVUJESVJTID0gbGliIGZvbnRmaWxldG9vbHMgdnR0b29scyBrYmR0b29scyBzY3JlZW5mb250dG9vbHMgY29udHJpYiBkb2MgXAotLQljb21wYXQgaW5jbHVkZSBleGFtcGxlcyBwbyBpbnRsCi0rU1VCRElSUyA9IGxpYiBmb250ZmlsZXRvb2xzIHZ0dG9vbHMga2JkdG9vbHMgc2NyZWVuZm9udHRvb2xzIGNvbnRyaWIgXAotKwljb21wYXQgaW5jbHVkZSBleGFtcGxlcyBwbwotIAotIEVYVFJBX0RJU1QgPSBCVUdTIFJFTEVBU0UgQ1JFRElUUyBDT1BZSU5HLmtiZCBsb2NhbC1zY3JpcHRzLyogZGViaWFuLyogKi5sc20KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL3VjbGliYy1maWxlbm8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvbnNvbGUtdG9vbHMvY29uc29sZS10b29scy0wLjMuMi91Y2xpYmMtZmlsZW5vLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYzk1MDY4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzLTAuMy4yL3VjbGliYy1maWxlbm8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1GaXhpbmcgdGhlIGxvY2FsZSBpc3N1ZXMgaXNuJ3QgZW5vdWdoLCBjb25zb2xlLXRvb2xzIGFsc28gZG9lcyBhIGNvdXBsZSBvZgotb3RoZXIgcHJldHR5IHN0dXBpZCB0aGluZ3MgKGxpa2UgRklMRSAqZjsgZi0+X2ZpbGVubyBpbnN0ZWFkIG9mIGZpbGVubyhmKSksCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0tLS0gY29uc29sZS10b29scy0wLjMuMi9saWIvY2ZvbnQvZm9udHN0cnVjdC5jLmFyawkyMDA1LTA1LTIyIDE5OjEyOjM4LjAwMDAwMDAwMCArMDAwMAotKysrIGNvbnNvbGUtdG9vbHMtMC4zLjIvbGliL2Nmb250L2ZvbnRzdHJ1Y3QuYwkyMDA1LTA1LTIyIDE5OjEzOjIzLjAwMDAwMDAwMCArMDAwMAotQEAgLTUwLDggKzUwLDcgQEAKLSAgICAqIGdldCBmaWxlc2l6ZQotICAgICovCi0gICAKLS0gIC8qIEZJWE1FOiBzaG91bGQgbm90IHVzZSBfZmlsZW5vICEgKi8KLS0gIGlmIChmc3RhdChmb250ZmlsZS0+X2ZpbGVubywgJnN0YnVmKSA9PSAtMSkKLSsgIGlmIChmc3RhdChmaWxlbm8oZm9udGZpbGUpLCAmc3RidWYpID09IC0xKQotICAgICBnb3RvIHJzZl9yZXR1cm5fZXJyb3I7Ci0gICAKLSAgIGlmIChTX0lTUkVHKHN0YnVmLnN0X21vZGUpKQotQEAgLTIxMSw4ICsyMTAsNyBAQAotICAgICogZ2V0IGZpbGVzaXplCi0gICAgKi8KLSAgIAotLSAgLyogRklYTUU6IHNob3VsZCBub3QgdXNlIF9maWxlbm8gISAqLwotLSAgaWYgKGZzdGF0KGZvbnRmaWxlLT5fZmlsZW5vLCAmc3RidWYpID09IC0xKQotKyAgaWYgKGZzdGF0KGZpbGVubyhmb250ZmlsZSksICZzdGJ1ZikgPT0gLTEpCi0gICAgIGdvdG8gcmZnX3JldHVybl9lcnJvcjsKLSAgIAotICAgaWYgKFNfSVNSRUcoc3RidWYuc3RfbW9kZSkpCi0tLS0gY29uc29sZS10b29scy0wLjMuMi9saWIvY29uc29sZS9hY20uYy5hcmsJMjAwNS0wNS0yMiAxOToxNzoxNS4wMDAwMDAwMDAgKzAwMDAKLSsrKyBjb25zb2xlLXRvb2xzLTAuMy4yL2xpYi9jb25zb2xlL2FjbS5jCTIwMDUtMDUtMjIgMTk6MTc6MjMuMDAwMDAwMDAwICswMDAwCi1AQCAtMzAsNyArMzAsNyBAQAotICAgbGN0X2Jvb2xlYW4gcGFyc2VfZmFpbGVkID0gRmFsc2U7Ci0gICBsY3RfYm9vbGVhbiBpc191bmljb2RlOwotIAotLSAgaWYgKGZzdGF0KGZwLT5fZmlsZW5vLCAmc3RidWYpKSAKLSsgIGlmIChmc3RhdChmaWxlbm8oZnApLCAmc3RidWYpKSAKLSAgICAgcGVycm9yKF8oIkNhbm5vdCBzdGF0IEFDTSBmaWxlIikpLCBleGl0KDEpOwotIAotICAgLyogZmlyc3QgdHJ5IGEgd2cxNS1jaGFybWFwIChnbGliYykgZmlsZSBmb3JtYXQgKi8KLS0tLSBjb25zb2xlLXRvb2xzLTAuMy4yL2luY2x1ZGUvbGN0L2xvY2FsLmguYXJrCTIwMDUtMDUtMjIgMTk6MDg6NTQuMDAwMDAwMDAwICswMDAwCi0rKysgY29uc29sZS10b29scy0wLjMuMi9pbmNsdWRlL2xjdC9sb2NhbC5oCTIwMDUtMDUtMjIgMTk6MDk6MTIuMDAwMDAwMDAwICswMDAwCi1AQCAtOCw3ICs4LDcgQEAKLSAjaW5jbHVkZSA8bG9jYWxlLmg+Ci0gCi0gCi0tI2lmZGVmIEhBVkVfTE9DQUxFX0gKLSsjaWYgZGVmaW5lZChIQVZFX0xPQ0FMRV9IKSAmJiBkZWZpbmVkKEhBVkVfTElCSU5UTF9IKQotICMgaW5jbHVkZSA8bGliaW50bC5oPgotICMgZGVmaW5lIF8oU3RyaW5nKSBnZXR0ZXh0IChTdHJpbmcpCi0gIyBpZmRlZiBnZXR0ZXh0X25vb3AKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29uc29sZS10b29scy9jb25zb2xlLXRvb2xzXzAuMy4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHNfMC4zLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhNDRmYmUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb25zb2xlLXRvb2xzL2NvbnNvbGUtdG9vbHNfMC4zLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1TVU1NQVJZID0gIkFsbG93cyB5b3UgdG8gc2V0LXVwIGFuZCBtYW5pcHVsYXRlIHRoZSBMaW51eCBjb25zb2xlIgotREVTQ1JJUFRJT04gPSAiUHJvdmlkZXMgdG9vbHMgdGhhdCBlbmFibGUgdGhlIHNldC11cCBhbmQgbWFuaXB1bGF0aW9uIG9mIHRoZSBsaW51eCBjb25zb2xlIGFuZCBjb25zb2xlLWZvbnQgZmlsZXMuIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcua2JkO21kNT05YjJkOTE1MTFkM2Q4MGQ0ZDIwYWM2ZTZiMDEzN2ZlOSIKLURFUEVORFMgPSAiZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgotUFIgPSAicjgiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2xjdC9jb25zb2xlLXRvb2xzLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb2RlcGFnZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY29tcGlsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9rYmRyYXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VjbGliYy1maWxlbm8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbm9kb2NzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1saWJjb25zb2xlLWxpbmtpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbm8tZGVwLW9uLWxpYmZsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEta2JkdG9vbHMtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItdV9jaGFyLWFuZC11X3Nob3J0LS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUNvdmVyLXRoZS1lbHNlLXdpdGgtX19HTElCQ19fLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWZvcm1hdC1zZWN1cml0eS1jb21waWxhdGlvbi1lcnJvci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9sY21lc3NhZ2UubTQgXAotICAgICAgICAgICBmaWxlOi8vTWFrZXZhcnMiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiZjIxNTY0ZmMzOGIzYWY4NTNlZjcyNGJhYmRkYmFjZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlZWE2YjQ0MTY3MmRhY2QyNTEwNzlmYzg1ZWQzMjJlMTk2MjgyZTBlNjZjMTYzMDNlYzY0YzNhMmIxYzEyNmMyIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9sY3QvZmlsZXMvY29uc29sZS10b29scy1kZXZlbC8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvY29uc29sZS10b29scy1kZXZlbC8oP1A8cHZlcj4oXGRcZD9cLikrXGRcZD8pLyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUNGTEFHU19hcHBlbmRfYWFyY2g2NCA9ICIgLURfVVNFX1RFUk1JT1MgIgotCi1BU05FRURFRCA9ICIiCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLQlta2RpciAtcCAke1N9L200Ci0JY3AgJHtXT1JLRElSfS9sY21lc3NhZ2UubTQgJHtTfS9tNC8KLQlybSAtZiAke1N9L2FjaW5jbHVkZS5tNAotCWNwICR7V09SS0RJUn0vTWFrZXZhcnMgJHtTfS9wby8KLX0KLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMzAiCi0KLWJpbmRpcl9wcm9ncyA9ICJjaHZ0IGRlYWxsb2N2dCBmZ2NvbnNvbGUgb3BlbnZ0IgotQUxURVJOQVRJVkVfJHtQTn0gPSAiJHtiaW5kaXJfcHJvZ3N9IgotCi1SREVQRU5EU18ke1BOfSA9ICJiYXNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uNmQ0YTdiMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvY29yZXV0aWxzL2NvcmV1dGlscy9ydW4tcHRlc3QKQEAgLTAsMCArMSwxNyBAQAorIyEvYmluL3NoCisKKyMgcmVtb3ZlIGFueSBzdGFsZSBsb2NrIGZpbGVzIHNvIHRoYXQgdGhlIGNhbGxzIHRvIGdyb3VwYWRkL3VzZXJhZGQgZG9uJ3Qgc3RvcAorIyB0aGUgcHRlc3QgaWYgcmUtdXNpbmcgdGhlIHNhbWUgaW1hZ2UKK3JtIC1yZiAvZXRjL3Bhc3N3ZC5sb2NrIC9ldGMvZ3JvdXAubG9jayAvZXRjL2dzaGFkb3cubG9jaworCitDT1JFVVRJTFNMSUI9QGxpYmRpckAvY29yZXV0aWxzCitMT0c9IiR7Q09SRVVUSUxTTElCfS9wdGVzdC9jb3JldXRpbHNfcHRlc3RfJChkYXRlICslWSVtJWQtJUglTSVTKS5sb2ciCitVU0VSTkFNRT0idGVzdGVyIgorZ3JvdXBhZGQgdWdyb3VwMQorZ3JvdXBhZGQgdWdyb3VwMgordXNlcmFkZCAtRyB1Z3JvdXAxLHVncm91cDIgJFVTRVJOQU1FIHx8IGVjaG8gInVzZXIgJFVTRVJOQU1FIGFscmVhZHkgZXhpc3RzIgorCitzdSB0ZXN0ZXIgLWMgImNkICR7Q09SRVVUSUxTTElCfS9wdGVzdCAmJiBtYWtlIGNoZWNrLVRFU1RTIHRvcF9zcmNkaXI9LiBzcmNkaXI9LiIgMj4mMSB8IHRlZSAtYSAke0xPR30KK3VzZXJkZWwgJFVTRVJOQU1FIAorZ3JvdXBkZWwgdWdyb3VwMQorZ3JvdXBkZWwgdWdyb3VwMgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9jb3JldXRpbHMvY29yZXV0aWxzXzguMzEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4zMS5iYgppbmRleCA1N2IyYzFiLi4yYjE5NmI3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4zMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2NvcmV1dGlscy9jb3JldXRpbHNfOC4zMS5iYgpAQCAtMTgsNiArMTgsNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS11bmFtZS1yZXBvcnQtcHJvY2Vzc29yLWFuZC1oYXJkd2FyZS1jb3JyZWN0bHkucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1scy1vdXRwdXQtcXVvdGluZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxvY2FsLm1rLWZpeC1jcm9zcy1jb21waWxpbmctcHJvYmxlbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAogICAgICAgICAgICIKIAogU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gImZpbGU6Ly9zdHJ0b2RfZml4X2NsYXNoX3dpdGhfc3RydG9sZC5wYXRjaCIKQEAgLTE0MywzICsxNDQsNDcgQEAKIH0KIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitpbmhlcml0IHB0ZXN0CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJiYXNoIGZpbmR1dGlscyBnYXdrIGxpYmVycm9yLXBlcmwgbGlibW9kdWxlLWJ1aWxkLXBlcmwgbWFrZSBwZXJsIHBlcmwtbW9kdWxlLWZpbGUtc3RhdCBweXRob24zLWNvcmUgc2VkIHNoYWRvdyIKKworIyAtZGV2IGF1dG9tYXRpYyBkZXBlbmRlbmNpZXMgZmFpbHMgYXMgd2UgZG9uJ3Qgd2FudCBsaWJtb2R1bGUtYnVpbGQtcGVybC1kZXYsIGl0cyB0b28gaGVhdnkKKyMgbWF5IG5lZWQgdHdlYWtpbmcgaWYgREVQRU5EUyBjaGFuZ2VzCitSUkVDT01NRU5EU19jb3JldXRpbHMtZGV2W25vZGVwcnJlY3NdID0gIjEiCitSUkVDT01NRU5EU19jb3JldXRpbHMtZGV2ID0gImFjbC1kZXYgYXR0ci1kZXYgZ21wLWRldiBsaWJjYXAtZGV2IGJhc2gtZGV2IGZpbmR1dGlscy1kZXYgZ2F3ay1kZXYgc2hhZG93LWRldiIKKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgIGNwIC1yICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgIHNlZCAtaSAncy9naW5zdGFsbC9pbnN0YWxsL2cnICBgZ3JlcCAtUiBnaW5zdGFsbCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyB8IGF3ayAtRjogJ3twcmludCAkMX0nIHwgdW5pcWAKKyAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L2J1aWxkLWF1eAorICAgIGluc3RhbGwgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0vYnVpbGQtYXV4LworICAgIGNwICR7Qn0vTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0vCisgICAgY3AgJHtTfS9pbml0LmNmZyAke0R9JHtQVEVTVF9QQVRIfS8KKyAgICBjcCAtciAke0J9L3NyYyAke0R9JHtQVEVTVF9QQVRIfS8KKyAgICBjcCAtciAke1N9L3NyYy8qLmMgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCisgICAgc2VkIC1pICcvXlZQQVRIL3MvPSAuKiQvPSAuL2cnICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisgICAgc2VkIC1pICcvXlBST0dSQU1TL3MvXi8jL2cnICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisgICAgc2VkIC1pICcvXk1ha2VmaWxlOiAvcy9eLiokL01ha2VmaWxlOi9nJyAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorICAgIHNlZCAtaSAnL15hYnNfc3JjZGlyL3MvPSAuKiQvPSBcJFx7UFdEXH0vZycgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICBzZWQgLWkgJy9eYWJzX3RvcF9idWlsZGRpci9zLz0gLiokLz0gXCRce1BXRFx9L2cnICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisgICAgc2VkIC1pICcvXmFic190b3Bfc3JjZGlyL3MvPSAuKiQvPSBcJFx7UFdEXH0vZycgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICBzZWQgLWkgJy9eYnVpbHRfcHJvZ3JhbXMvcy9naW5zdGFsbC9pbnN0YWxsL2cnICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisgICAgY2htb2QgLVIgNzc3ICR7RH0ke1BURVNUX1BBVEh9CisKKyAgICAjIERpc2FibGUgc3ViY2FzZSBzdHR5LXBhaXJzLnNoLCBpdCB3aWxsIGNhdXNlIHRlc3QgZnJhbWV3b3JrIGhhbmcKKyAgICBzZWQgLWkgJy9zdHR5LXBhaXJzLnNoL2QnICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisKKyAgICAjIERpc2FibGUgc3ViY2FzZSB0YWlsLTIvYXNzZXJ0LnNoIGFzIGl0IGhhcyBpc3N1ZXMgb24gMzItYml0IHN5c3RlbXMKKyAgICBzZWQgLWkgJy9hc3NlcnQuc2gvZCcgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKworICAgICMgVHdlYWsgdGVzdCBkX3R5cGUtY2hlY2sgdG8gdXNlIHB5dGhvbjMgaW5zdGVhZCBvZiBweXRob24KKyAgICBzZWQgLWkgIjFzQC4qQCMhL3Vzci9iaW4vcHl0aG9uM0AiICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2RfdHlwZS1jaGVjaworICAgIGluc3RhbGwgJHtCfS9zcmMvZ2V0bGltaXRzICR7RH0vJHtiaW5kaXJ9CisgICAgCisgICAgIyBoYW5kbGUgbXVsdGlsaWIKKyAgICBzZWQgLWkgczpAbGliZGlyQDoke2xpYmRpcn06ZyAke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QKK30KKworRklMRVNfJHtQTn0tcHRlc3QgKz0gIiR7YmluZGlyfS9nZXRsaW1pdHMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1nbGliXzAuMTEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMtZ2xpYl8wLjExMC5iYgppbmRleCA5YWZiYzJiLi4wYjQ1ODA1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy1nbGliXzAuMTEwLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzLWdsaWJfMC4xMTAuYmIKQEAgLTEsNyArMSw3IEBACiBTVU1NQVJZID0gIkhpZ2ggbGV2ZWwgbGFuZ3VhZ2UgKEdMaWIpIGJpbmRpbmcgZm9yIEQtQnVzIgogREVTQ1JJUFRJT04gPSAiR0xpYiBiaW5kaW5ncyBmb3IgdGhlIEQtQnVzIG1lc3NhZ2UgYnVzIHRoYXQgaW50ZWdyYXRlIFwKIHRoZSBELUJ1cyBsaWJyYXJ5IHdpdGggdGhlIEdMaWIgdGhyZWFkIGFic3RyYWN0aW9uIGFuZCBtYWluIGxvb3AuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvU29mdHdhcmUvZGJ1cyIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9Tb2Z0d2FyZS9kYnVzIgogTElDRU5TRSA9ICJBRkwtMi4xIHwgR1BMdjIrIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Y2Y1YjNhMmY3MDgzNzUwZDUwNDMzMzExNGU3Mzg2NTYgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGJ1cy9kYnVzLWdsaWIuaDtiZWdpbmxpbmU9NztlbmRsaW5lPTIxO21kNT03NzU1YzlkN2FiY2NkNWRiZDI1YTZhOTc0NTM4YmIzYyIKQEAgLTEwLDcgKzEwLDcgQEAKIERFUEVORFMgPSAiZXhwYXQgZ2xpYi0yLjAgdmlydHVhbC9saWJpbnRsIGRidXMtZ2xpYi1uYXRpdmUgZGJ1cyIKIERFUEVORFNfY2xhc3MtbmF0aXZlID0gImdsaWItMi4wLW5hdGl2ZSBkYnVzLW5hdGl2ZSIKIAotU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy1nbGliL2RidXMtZ2xpYi0ke1BWfS50YXIuZ3ogXAorU1JDX1VSSSA9ICJodHRwczovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMtZ2xpYi9kYnVzLWdsaWItJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL25vLWV4YW1wbGVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3Rlc3QtaW5zdGFsbC1tYWtlZmlsZS5wYXRjaCBcCiAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1cy9ydW4tcHRlc3QKaW5kZXggNDg1MzVlMS4uZDNlZWMwOCAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXMvcnVuLXB0ZXN0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzL3J1bi1wdGVzdApAQCAtMTksMTAgKzE5LDEyIEBACiBmb3IgaSBpbiAkZmlsZXMKIGRvCiAgICAgICN0aGVzZSBwcm9ncmFtcyBhcmUgdXNlZCBieSB0ZXN0Y2FzZSB0ZXN0LWJ1cywgZG9uJ3QgcnVuIGhlcmUKKyAgICAgI2FkZGl0aW9uYWxseSwgdGVzdC1uYW1lcyBuZWVkcyB0byBiZSBydW4gdW5kZXIgWAogICAgICBpZiBbICRpID0gInRlc3QvdGVzdC1zZXJ2aWNlIiBdIFwKICAgICAgICAgfHwgWyAkaSA9ICJ0ZXN0L3Rlc3Qtc2hlbGwtc2VydmljZSIgXSBcCiAgICAgICAgIHx8IFsgJGkgPSAidGVzdC90ZXN0LXNlZ2ZhdWx0IiBdIFwKLSAgICAgICAgfHwgWyAkaSA9ICJ0ZXN0L3Rlc3QtYnVzIiBdCisgICAgICAgIHx8IFsgJGkgPSAidGVzdC90ZXN0LWJ1cyIgXSBcCisgICAgICAgIHx8IFsgJGkgPSAidGVzdC90ZXN0LW5hbWVzIiBdCiAgICAgIHRoZW4KICAgICAgICAgIGNvbnRpbnVlCiAgICAgIGZpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEyLjE2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9kYnVzL2RidXNfMS4xMi4xNi5iYgppbmRleCA5NmI1MDM2Li44MmJiNzUzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2RidXMvZGJ1c18xLjEyLjE2LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZGJ1cy9kYnVzXzEuMTIuMTYuYmIKQEAgLTEsNiArMSw2IEBACiBTVU1NQVJZID0gIkQtQnVzIG1lc3NhZ2UgYnVzIgogREVTQ1JJUFRJT04gPSAiRC1CdXMgaXMgYSBtZXNzYWdlIGJ1cyBzeXN0ZW0sIGEgc2ltcGxlIHdheSBmb3IgYXBwbGljYXRpb25zIHRvIHRhbGsgdG8gb25lIGFub3RoZXIuIEluIGFkZGl0aW9uIHRvIGludGVycHJvY2VzcyBjb21tdW5pY2F0aW9uLCBELUJ1cyBoZWxwcyBjb29yZGluYXRlIHByb2Nlc3MgbGlmZWN5Y2xlOyBpdCBtYWtlcyBpdCBzaW1wbGUgYW5kIHJlbGlhYmxlIHRvIGNvZGUgYSBcInNpbmdsZSBpbnN0YW5jZVwiIGFwcGxpY2F0aW9uIG9yIGRhZW1vbiwgYW5kIHRvIGxhdW5jaCBhcHBsaWNhdGlvbnMgYW5kIGRhZW1vbnMgb24gZGVtYW5kIHdoZW4gdGhlaXIgc2VydmljZXMgYXJlIG5lZWRlZC4iCi1IT01FUEFHRSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmciCitIT01FUEFHRSA9ICJodHRwczovL2RidXMuZnJlZWRlc2t0b3Aub3JnIgogU0VDVElPTiA9ICJiYXNlIgogTElDRU5TRSA9ICJBRkwtMi4xIHwgR1BMdjIrIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTBkZGVkM2I1ODE0OGYzZjFmZDgwNGIyNjM1NGFmM2UgXApAQCAtMTIsNyArMTIsNyBAQAogQUxMT1dfRU1QVFlfZGJ1cy1wdGVzdCA9ICIxIgogUkRFUEVORFNfZGJ1cy1wdGVzdF9jbGFzcy10YXJnZXQgPSAiZGJ1cy10ZXN0LXB0ZXN0IgogCi1TUkNfVVJJID0gImh0dHA6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzL2RidXMtJHtQVn0udGFyLmd6IFwKK1NSQ19VUkkgPSAiaHR0cHM6Ly9kYnVzLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy9kYnVzL2RidXMtJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL3RtcGRpci5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9kYnVzLTEuaW5pdCBcCiAgICAgICAgICAgIGZpbGU6Ly9jbGVhci1ndWlkX2Zyb21fc2VydmVyLWlmLXNlbmRfbmVnb3RpYXRlX3VuaXhfZi5wYXRjaCBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2VsbC9lbGxfMC4yNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZWxsL2VsbF8wLjI2LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMWYyNTJjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZWxsL2VsbF8wLjI2LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSAgPSAiRW1iZWRkZWQgTGludXggTGlicmFyeSIKLURFU0NSSVBUSU9OID0gIlRoZSBFbWJlZGRlZCBMaW51eCBMaWJyYXJ5IChFTEwpIHByb3ZpZGVzIGNvcmUsIFwKLWxvdy1sZXZlbCBmdW5jdGlvbmFsaXR5IGZvciBzeXN0ZW0gZGFlbW9ucy4gSXQgdHlwaWNhbGx5IGhhcyBubyBcCi1kZXBlbmRlbmNpZXMgb3RoZXIgdGhhbiB0aGUgTGludXgga2VybmVsLCBDIHN0YW5kYXJkIGxpYnJhcnksIGFuZCBcCi1saWJkbCAoZm9yIGR5bmFtaWMgbGlua2luZykuIFdoaWxlIEVMTCBpcyBkZXNpZ25lZCB0byBiZSBlZmZpY2llbnQgXAotYW5kIGNvbXBhY3QgZW5vdWdoIGZvciB1c2Ugb24gZW1iZWRkZWQgTGludXggcGxhdGZvcm1zLCBpdCBpcyBub3QgXAotbGltaXRlZCB0byByZXNvdXJjZS1jb25zdHJhaW5lZCBzeXN0ZW1zLiIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmI1MDRiNjdjNTAzMzFmYzc4NzM0ZmVkOTBmYjBlMDkiCi0KLURFUEVORFMgPSAiZGJ1cyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9taXJyb3JzLmVkZ2Uua2VybmVsLm9yZy9wdWIvbGludXgvbGlicy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI0NjYwZTI1NTQxMDcxZTkzM2EyYmIwMmVmMmY5NGU3ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ODU1YjRiOGYyNzFiYTZlZTY3ZDg3ZDA5NjViOTc1YTlhOGRiZWFhNjE2NjY1Y2EyMjQ4YWZhM2I1ZmNiYzc3IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0gICAgbWtkaXIgLXAgJHtTfS9idWlsZC1hdXgKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZWxsL2VsbF8wLjMxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9lbGwvZWxsXzAuMzEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRiNzEzMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZWxsL2VsbF8wLjMxLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgID0gIkVtYmVkZGVkIExpbnV4IExpYnJhcnkiCitERVNDUklQVElPTiA9ICJUaGUgRW1iZWRkZWQgTGludXggTGlicmFyeSAoRUxMKSBwcm92aWRlcyBjb3JlLCBcCitsb3ctbGV2ZWwgZnVuY3Rpb25hbGl0eSBmb3Igc3lzdGVtIGRhZW1vbnMuIEl0IHR5cGljYWxseSBoYXMgbm8gXAorZGVwZW5kZW5jaWVzIG90aGVyIHRoYW4gdGhlIExpbnV4IGtlcm5lbCwgQyBzdGFuZGFyZCBsaWJyYXJ5LCBhbmQgXAorbGliZGwgKGZvciBkeW5hbWljIGxpbmtpbmcpLiBXaGlsZSBFTEwgaXMgZGVzaWduZWQgdG8gYmUgZWZmaWNpZW50IFwKK2FuZCBjb21wYWN0IGVub3VnaCBmb3IgdXNlIG9uIGVtYmVkZGVkIExpbnV4IHBsYXRmb3JtcywgaXQgaXMgbm90IFwKK2xpbWl0ZWQgdG8gcmVzb3VyY2UtY29uc3RyYWluZWQgc3lzdGVtcy4iCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFICA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiNTA0YjY3YzUwMzMxZmM3ODczNGZlZDkwZmIwZTA5IgorCitERVBFTkRTID0gImRidXMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitTUkNfVVJJID0gImh0dHBzOi8vbWlycm9ycy5lZGdlLmtlcm5lbC5vcmcvcHViL2xpbnV4L2xpYnMvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiM2Y2NzAyMzBiZTRkODlkNjIxYjA1MDhjNzBiMWQzNmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWU4ODYxNzI3NTQ1MmY5ZjU4NDBiMjM2NWUzM2U2YzdmYjZmYTM0MDVkNDJjYmY5MzY3ZGU2NDJlZThiNjcwMSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgIG1rZGlyIC1wICR7U30vYnVpbGQtYXV4Cit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9jci1zdGF0ZW1lbnQuYy10aW1zb3J0LmgtZml4LWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4xOS44LjEvY3Itc3RhdGVtZW50LmMtdGltc29ydC5oLWZpeC1mb3JtYXR0aW5nLWlzc3Vlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmFmMTYwNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9jci1zdGF0ZW1lbnQuYy10aW1zb3J0LmgtZml4LWZvcm1hdHRpbmctaXNzdWVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSBlNTQ2ZGU2NWEzMzM3ODllODNmNTQ4NTc1Nzk2N2NlZTI5ZWUzNjgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBTdW4sIDE5IEZlYiAyMDE3IDIzOjMyOjQ2IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNyLXN0YXRlbWVudC5jL3RpbXNvcnQuaDogZml4IGZvcm1hdHRpbmcgaXNzdWVzCi0KLUZpeGVkIHdoZW4gY29tcGlsZSB3aXRoICItV2Zvcm1hdCAtV2Zvcm1hdC1zZWN1cml0eSAtV2Vycm9yPWZvcm1hdC1zZWN1cml0eSI6Ci18IGdldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJjcm9jby9jci1zdGF0ZW1lbnQuYzogSW4gZnVuY3Rpb24gJ2NyX3N0YXRlbWVudF9kdW1wX2NoYXJzZXQnOgotfCBnZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGliY3JvY28vY3Itc3RhdGVtZW50LmM6MjY2MToxNzogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi18ICAgICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgc3RyKSA7Ci0KLUFuZDoKLWdldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJ4bWwvdGltc29ydC5oOjMyNjo4MDogd2FybmluZzogZm9ybWF0ICclbHUnIGV4cGVjdHMgYXJndW1lbnQgb2YgdHlwZSAnbG9uZyB1bnNpZ25lZCBpbnQnLCBidXQgYXJndW1lbnQgMyBoYXMgdHlwZSAndW5zaWduZWQgaW50JyBbLVdmb3JtYXQ9XQotICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgYWxsb2NhdGluZyB0ZW1wb3Jhcnkgc3RvcmFnZSBmb3IgdGltIHNvcnQ6IG5lZWQgJWx1IGJ5dGVzIiwgc2l6ZW9mKFNPUlRfVFlQRSkgKiBuZXdfc2l6ZSk7Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIGdldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJjcm9jby9jci1zdGF0ZW1lbnQuYyB8IDEwICsrKysrLS0tLS0KLSBnZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGlieG1sL3RpbXNvcnQuaCAgICAgICAgfCAgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jIGIvZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jCi1pbmRleCA2MTc1MjBmLi4xMDAxMDRiIDEwMDY0NAotLS0tIGEvZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jCi0rKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGliY3JvY28vY3Itc3RhdGVtZW50LmMKLUBAIC0yNjA3LDcgKzI2MDcsNyBAQCBjcl9zdGF0ZW1lbnRfZHVtcF9ydWxlc2V0IChDUlN0YXRlbWVudCAqIGFfdGhpcywgRklMRSAqIGFfZnAsIGdsb25nIGFfaW5kZW50KQotICAgICAgICAgZ19yZXR1cm5faWZfZmFpbCAoYV9mcCAmJiBhX3RoaXMpOwotICAgICAgICAgc3RyID0gY3Jfc3RhdGVtZW50X3J1bGVzZXRfdG9fc3RyaW5nIChhX3RoaXMsIGFfaW5kZW50KTsKLSAgICAgICAgIGlmIChzdHIpIHsKLS0gICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgc3RyKTsKLSsgICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgIiVzIiwgc3RyKTsKLSAgICAgICAgICAgICAgICAgZ19mcmVlIChzdHIpOwotICAgICAgICAgICAgICAgICBzdHIgPSBOVUxMOwotICAgICAgICAgfQotQEAgLTI2NTgsNyArMjY1OCw3IEBAIGNyX3N0YXRlbWVudF9kdW1wX2NoYXJzZXQgKENSU3RhdGVtZW50ICogYV90aGlzLCBGSUxFICogYV9mcCwgZ3Vsb25nIGFfaW5kZW50KQotICAgICAgICAgc3RyID0gY3Jfc3RhdGVtZW50X2NoYXJzZXRfdG9fc3RyaW5nIChhX3RoaXMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGFfaW5kZW50KSA7Ci0gICAgICAgICBpZiAoc3RyKSB7Ci0tICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsIHN0cikgOwotKyAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCAiJXMiLCBzdHIpIDsKLSAgICAgICAgICAgICAgICAgZ19mcmVlIChzdHIpIDsKLSAgICAgICAgICAgICAgICAgc3RyID0gTlVMTCA7Ci0gICAgICAgICB9Ci1AQCAtMjY4NSw3ICsyNjg1LDcgQEAgY3Jfc3RhdGVtZW50X2R1bXBfcGFnZSAoQ1JTdGF0ZW1lbnQgKiBhX3RoaXMsIEZJTEUgKiBhX2ZwLCBndWxvbmcgYV9pbmRlbnQpCi0gCi0gICAgICAgICBzdHIgPSBjcl9zdGF0ZW1lbnRfYXRfcGFnZV9ydWxlX3RvX3N0cmluZyAoYV90aGlzLCBhX2luZGVudCkgOwotICAgICAgICAgaWYgKHN0cikgewotLSAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpOwotKyAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCAiJXMiLCBzdHIpOwotICAgICAgICAgICAgICAgICBnX2ZyZWUgKHN0cikgOwotICAgICAgICAgICAgICAgICBzdHIgPSBOVUxMIDsgCi0gICAgICAgICB9Ci1AQCAtMjcxMSw3ICsyNzExLDcgQEAgY3Jfc3RhdGVtZW50X2R1bXBfbWVkaWFfcnVsZSAoQ1JTdGF0ZW1lbnQgKiBhX3RoaXMsCi0gCi0gICAgICAgICBzdHIgPSBjcl9zdGF0ZW1lbnRfbWVkaWFfcnVsZV90b19zdHJpbmcgKGFfdGhpcywgYV9pbmRlbnQpIDsKLSAgICAgICAgIGlmIChzdHIpIHsKLS0gICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgc3RyKSA7Ci0rICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsICIlcyIsIHN0cikgOwotICAgICAgICAgICAgICAgICBnX2ZyZWUgKHN0cikgOwotICAgICAgICAgICAgICAgICBzdHIgPSBOVUxMIDsKLSAgICAgICAgIH0KLUBAIC0yNzM3LDcgKzI3MzcsNyBAQCBjcl9zdGF0ZW1lbnRfZHVtcF9pbXBvcnRfcnVsZSAoQ1JTdGF0ZW1lbnQgKiBhX3RoaXMsIEZJTEUgKiBhX2ZwLAotIAotICAgICAgICAgc3RyID0gY3Jfc3RhdGVtZW50X2ltcG9ydF9ydWxlX3RvX3N0cmluZyAoYV90aGlzLCBhX2luZGVudCkgOwotICAgICAgICAgaWYgKHN0cikgewotLSAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpIDsKLSsgICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgIiVzIiwgc3RyKSA7Ci0gICAgICAgICAgICAgICAgIGdfZnJlZSAoc3RyKSA7Ci0gICAgICAgICAgICAgICAgIHN0ciA9IE5VTEwgOwotICAgICAgICAgfQotZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJ4bWwvdGltc29ydC5oIGIvZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYnhtbC90aW1zb3J0LmgKLWluZGV4IDc5NWYyNzIuLjQ0MzkxOGEgMTAwNjQ0Ci0tLS0gYS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGlieG1sL3RpbXNvcnQuaAotKysrIGIvZ2V0dGV4dC10b29scy9nbnVsaWItbGliL2xpYnhtbC90aW1zb3J0LmgKLUBAIC0zMjMsNyArMzIzLDcgQEAgc3RhdGljIHZvaWQgVElNX1NPUlRfUkVTSVpFKFRFTVBfU1RPUkFHRV9UICpzdG9yZSwgY29uc3Qgc2l6ZV90IG5ld19zaXplKQotICAgICBTT1JUX1RZUEUgKnRlbXBzdG9yZSA9IChTT1JUX1RZUEUgKilyZWFsbG9jKHN0b3JlLT5zdG9yYWdlLCBuZXdfc2l6ZSAqIHNpemVvZihTT1JUX1RZUEUpKTsKLSAgICAgaWYgKHRlbXBzdG9yZSA9PSBOVUxMKQotICAgICB7Ci0tICAgICAgZnByaW50ZihzdGRlcnIsICJFcnJvciBhbGxvY2F0aW5nIHRlbXBvcmFyeSBzdG9yYWdlIGZvciB0aW0gc29ydDogbmVlZCAlbHUgYnl0ZXMiLCBzaXplb2YoU09SVF9UWVBFKSAqIG5ld19zaXplKTsKLSsgICAgICBmcHJpbnRmKHN0ZGVyciwgIkVycm9yIGFsbG9jYXRpbmcgdGVtcG9yYXJ5IHN0b3JhZ2UgZm9yIHRpbSBzb3J0OiBuZWVkICV6dSBieXRlcyIsIHNpemVvZihTT1JUX1RZUEUpICogbmV3X3NpemUpOwotICAgICAgIGV4aXQoMSk7Ci0gICAgIH0KLSAgICAgc3RvcmUtPnN0b3JhZ2UgPSB0ZW1wc3RvcmU7Ci0tLSAKLTIuMTAuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9maXgtQ1ZFLTIwMTgtMTg3NTEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9maXgtQ1ZFLTIwMTgtMTg3NTEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZkZmUyMDAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4xOS44LjEvZml4LUNWRS0yMDE4LTE4NzUxLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQxICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0LnNhdmFubmFoLmdudS5vcmcvZ2l0d2ViLz9wPWdldHRleHQuZ2l0O2E9Y29tbWl0O2g9ZGNlM2ExNl0KLUNWRTogQ1ZFLTIwMTgtMTg3NTEKLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLUZyb20gZGNlM2ExNmU1ZTkzNjgyNDU3MzVlMjliZjQ5OGRjZDVlM2U0NzRhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERhaWtpIFVlbm8gPHVlbm9AZ251Lm9yZz4KLURhdGU6IFRodSwgMTUgU2VwIDIwMTYgMTM6NTc6MjQgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0geGdldHRleHQ6IEZpeCBjcmFzaCB3aXRoICoucG8gZmlsZSBpbnB1dAotCi1XaGVuIHhnZXR0ZXh0IHdhcyBnaXZlbiB0d28gKi5wbyBmaWxlcyB3aXRoIHRoZSBzYW1lIG1zZ2lkX3BsdXJhbCwgaXQKLWNyYXNoZWQgd2l0aCBkb3VibGUtZnJlZS4gIFByb2JsZW0gcmVwb3J0ZWQgYnkgRGF2bGV0IFBhbmVjaCBpbjoKLWh0dHA6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctZ2V0dGV4dC8yMDE2LTA5L21zZzAwMDAxLmh0bWwKLSogZ2V0dGV4dC10b29scy9zcmMvcG8tZ3JhbS1nZW4ueTogRG9uJ3QgZnJlZSBtc2dpZF9wbHVyYWxmb3JtIGFmdGVyCi1jYWxsaW5nIGRvX2NhbGxiYWNrX21lc3NhZ2UsIGFzc3VtaW5nIHRoYXQgaXQgdGFrZXMgb3duZXJzaGlwLgotKiBnZXR0ZXh0LXRvb2xzL3NyYy9yZWFkLWNhdGFsb2cuYyAoZGVmYXVsdF9hZGRfbWVzc2FnZSk6IEZyZWUKLW1zZ2lkX3BsdXJhbCBhZnRlciBjYWxsaW5nIG1lc3NhZ2VfYWxsb2MuCi0qIGdldHRleHQtdG9vbHMvdGVzdHMveGdldHRleHQtcG8tMjogTmV3IGZpbGUuCi0qIGdldHRleHQtdG9vbHMvdGVzdHMvTWFrZWZpbGUuYW0gKFRFU1RTKTogQWRkIG5ldyB0ZXN0LgotLS0tCi0gZ2V0dGV4dC10b29scy9zcmMvcG8tZ3JhbS1nZW4ueSAgIHwgMTMgKysrKy0tLS0tCi0gZ2V0dGV4dC10b29scy9zcmMvcmVhZC1jYXRhbG9nLmMgIHwgIDIgKysKLSBnZXR0ZXh0LXRvb2xzL3Rlc3RzL01ha2VmaWxlLmFtICAgfCAgMiArLQotIGdldHRleHQtdG9vbHMvdGVzdHMveGdldHRleHQtcG8tMiB8IDU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDQgZmlsZXMgY2hhbmdlZCwgNjMgaW5zZXJ0aW9ucygrKSwgOSBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA3NTUgZ2V0dGV4dC10b29scy90ZXN0cy94Z2V0dGV4dC1wby0yCi0KLWRpZmYgLS1naXQgYS9nZXR0ZXh0LXRvb2xzL3NyYy9wby1ncmFtLWdlbi55IGIvZ2V0dGV4dC10b29scy9zcmMvcG8tZ3JhbS1nZW4ueQotaW5kZXggYmVjZjVlNi4uNDQyOGU3NyAxMDA2NDQKLS0tLSBhL2dldHRleHQtdG9vbHMvc3JjL3BvLWdyYW0tZ2VuLnkKLSsrKyBiL2dldHRleHQtdG9vbHMvc3JjL3BvLWdyYW0tZ2VuLnkKLUBAIC0yMjEsMTQgKzIyMSwxMSBAQCBtZXNzYWdlCi0gICAgICAgICAgICAgICAgICAgY2hlY2tfb2Jzb2xldGUgKCQxLCAkMyk7Ci0gICAgICAgICAgICAgICAgICAgY2hlY2tfb2Jzb2xldGUgKCQxLCAkNCk7Ci0gICAgICAgICAgICAgICAgICAgaWYgKCEkMS5vYnNvbGV0ZSB8fCBwYXNzX29ic29sZXRlX2VudHJpZXMpCi0tICAgICAgICAgICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAgICAgICAgIGRvX2NhbGxiYWNrX21lc3NhZ2UgKCQxLmN0eHQsIHN0cmluZzIsICYkMS5wb3MsICQzLnN0cmluZywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDQucmhzLm1zZ3N0ciwgJDQucmhzLm1zZ3N0cl9sZW4sICYkNC5wb3MsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQxLnByZXZfY3R4dCwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDEucHJldl9pZCwgJDEucHJldl9pZF9wbHVyYWwsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQxLm9ic29sZXRlKTsKLS0gICAgICAgICAgICAgICAgICAgICAgZnJlZSAoJDMuc3RyaW5nKTsKLS0gICAgICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgICAgICAgIGRvX2NhbGxiYWNrX21lc3NhZ2UgKCQxLmN0eHQsIHN0cmluZzIsICYkMS5wb3MsICQzLnN0cmluZywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICQ0LnJocy5tc2dzdHIsICQ0LnJocy5tc2dzdHJfbGVuLCAmJDQucG9zLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDEucHJldl9jdHh0LAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJDEucHJldl9pZCwgJDEucHJldl9pZF9wbHVyYWwsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkMS5vYnNvbGV0ZSk7Ci0gICAgICAgICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgICAgICAgewotICAgICAgICAgICAgICAgICAgICAgICBmcmVlX21lc3NhZ2VfaW50cm8gKCQxKTsKLWRpZmYgLS1naXQgYS9nZXR0ZXh0LXRvb2xzL3NyYy9yZWFkLWNhdGFsb2cuYyBiL2dldHRleHQtdG9vbHMvc3JjL3JlYWQtY2F0YWxvZy5jCi1pbmRleCA1NzFkMThlLi42YWY2ZDIwIDEwMDY0NAotLS0tIGEvZ2V0dGV4dC10b29scy9zcmMvcmVhZC1jYXRhbG9nLmMKLSsrKyBiL2dldHRleHQtdG9vbHMvc3JjL3JlYWQtY2F0YWxvZy5jCi1AQCAtMzk3LDYgKzM5Nyw4IEBAIGRlZmF1bHRfYWRkX21lc3NhZ2UgKGRlZmF1bHRfY2F0YWxvZ19yZWFkZXJfdHkgKnRoaXMsCi0gICAgICAgICAgYXBwcm9wcmlhdGUuICAqLwotICAgICAgIG1wID0gbWVzc2FnZV9hbGxvYyAobXNnY3R4dCwgbXNnaWQsIG1zZ2lkX3BsdXJhbCwgbXNnc3RyLCBtc2dzdHJfbGVuLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgbXNnc3RyX3Bvcyk7Ci0rICAgICAgaWYgKG1zZ2lkX3BsdXJhbCAhPSBOVUxMKQotKyAgICAgICAgZnJlZSAobXNnaWRfcGx1cmFsKTsKLSAgICAgICBtcC0+cHJldl9tc2djdHh0ID0gcHJldl9tc2djdHh0OwotICAgICAgIG1wLT5wcmV2X21zZ2lkID0gcHJldl9tc2dpZDsKLSAgICAgICBtcC0+cHJldl9tc2dpZF9wbHVyYWwgPSBwcmV2X21zZ2lkX3BsdXJhbDsKLWRpZmYgLS1naXQgYS9nZXR0ZXh0LXRvb2xzL3Rlc3RzL01ha2VmaWxlLmFtIGIvZ2V0dGV4dC10b29scy90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggMjNiMDliMS4uMGRmYjRkOCAxMDA2NDQKLS0tLSBhL2dldHRleHQtdG9vbHMvdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBiL2dldHRleHQtdG9vbHMvdGVzdHMvTWFrZWZpbGUuYW0KLUBAIC05NSw3ICs5NSw3IEBAIFRFU1RTID0gZ2V0dGV4dC0xIGdldHRleHQtMiBnZXR0ZXh0LTMgZ2V0dGV4dC00IGdldHRleHQtNSBnZXR0ZXh0LTYgZ2V0dGV4dC03IFwKLSAJeGdldHRleHQtcGVybC0xIHhnZXR0ZXh0LXBlcmwtMiB4Z2V0dGV4dC1wZXJsLTMgeGdldHRleHQtcGVybC00IFwKLSAJeGdldHRleHQtcGVybC01IHhnZXR0ZXh0LXBlcmwtNiB4Z2V0dGV4dC1wZXJsLTcgeGdldHRleHQtcGVybC04IFwKLSAJeGdldHRleHQtcGhwLTEgeGdldHRleHQtcGhwLTIgeGdldHRleHQtcGhwLTMgeGdldHRleHQtcGhwLTQgXAotLQl4Z2V0dGV4dC1wby0xIFwKLSsJeGdldHRleHQtcG8tMSB4Z2V0dGV4dC1wby0yIFwKLSAJeGdldHRleHQtcHJvcGVydGllcy0xIFwKLSAJeGdldHRleHQtcHl0aG9uLTEgeGdldHRleHQtcHl0aG9uLTIgeGdldHRleHQtcHl0aG9uLTMgXAotIAl4Z2V0dGV4dC1weXRob24tNCBcCi1kaWZmIC0tZ2l0IGEvZ2V0dGV4dC10b29scy90ZXN0cy94Z2V0dGV4dC1wby0yIGIvZ2V0dGV4dC10b29scy90ZXN0cy94Z2V0dGV4dC1wby0yCi1uZXcgZmlsZSBtb2RlIDEwMDc1NQotaW5kZXggMDAwMDAwMC4uYzRiZDlkMAotLS0tIC9kZXYvbnVsbAotKysrIGIvZ2V0dGV4dC10b29scy90ZXN0cy94Z2V0dGV4dC1wby0yCi1AQCAtMCwwICsxLDU1IEBACi0rIyEgL2Jpbi9zaAotKy4gIiR7c3JjZGlyPS59L2luaXQuc2giOyBwYXRoX3ByZXBlbmRfIC4gLi4vc3JjCi0rCi0rIyBUZXN0IFBPIGV4dHJhY3RvcnMgd2l0aCBtdWx0aXBsZSBpbnB1dCBmaWxlcy4KLSsKLStjYXQgPDxFT0YgPiB4Zy1wby0yLTEucG8KLSttc2dpZCAiZmlyc3QgbXNnaWQiCi0rbXNnaWRfcGx1cmFsICJmaXJzdCBtc2dpZCAocGx1cmFsKSIKLSttc2dzdHJbMF0gIiIKLSttc2dzdHJbMV0gIiIKLSsKLSttc2dpZCAic2Vjb25kIG1zZ2lkIgotK21zZ2lkX3BsdXJhbCAic2Vjb25kIG1zZ2lkIChwbHVyYWwpIgotK21zZ3N0clswXSAiIgotK21zZ3N0clsxXSAiIgotK0VPRgotKwotK2NhdCA8PEVPRiA+IHhnLXBvLTItMi5wbwotK21zZ2lkICJ0aGlyZCBtc2dpZCIKLSttc2dpZF9wbHVyYWwgInRoaXJkIG1zZ2lkIChwbHVyYWwpIgotK21zZ3N0clswXSAiIgotK21zZ3N0clsxXSAiIgotKwotK21zZ2lkICJzZWNvbmQgbXNnaWQiCi0rbXNnaWRfcGx1cmFsICJzZWNvbmQgbXNnaWQgKHBsdXJhbCkiCi0rbXNnc3RyWzBdICIiCi0rbXNnc3RyWzFdICIiCi0rRU9GCi0rCi0rOiAke1hHRVRURVhUPXhnZXR0ZXh0fQotKyR7WEdFVFRFWFR9IC0tb21pdC1oZWFkZXIgeGctcG8tMi0xLnBvIHhnLXBvLTItMi5wbyAtbyB4Zy1wby0yLnRtcC5wbyB8fCBFeGl0IDEKLStMQ19BTEw9QyB0ciAtZCAnXHInIDwgeGctcG8tMi50bXAucG8gPiB4Zy1wby0yLnBvIHx8IEV4aXQgMQotKwotK2NhdCA8PEVPRiA+IHhnLXBvLTIub2sKLSttc2dpZCAiZmlyc3QgbXNnaWQiCi0rbXNnaWRfcGx1cmFsICJmaXJzdCBtc2dpZCAocGx1cmFsKSIKLSttc2dzdHJbMF0gIiIKLSttc2dzdHJbMV0gIiIKLSsKLSttc2dpZCAic2Vjb25kIG1zZ2lkIgotK21zZ2lkX3BsdXJhbCAic2Vjb25kIG1zZ2lkIChwbHVyYWwpIgotK21zZ3N0clswXSAiIgotK21zZ3N0clsxXSAiIgotKwotK21zZ2lkICJ0aGlyZCBtc2dpZCIKLSttc2dpZF9wbHVyYWwgInRoaXJkIG1zZ2lkIChwbHVyYWwpIgotK21zZ3N0clswXSAiIgotK21zZ3N0clsxXSAiIgotK0VPRgotKwotKzogJHtESUZGPWRpZmZ9Ci0rJHtESUZGfSB4Zy1wby0yLm9rIHhnLXBvLTIucG8KLStyZXN1bHQ9JD8KLSsKLStleGl0ICRyZXN1bHQKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4xOS44LjEvcGFyYWxsZWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9wYXJhbGxlbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzhlMmM5NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9wYXJhbGxlbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLWluc3RhbCBsaWJnZXR0ZXh0bGliLmEgYmVmb3JlIHJlbW92aW5nIGl0Ci0KLUluIGEgbXVsdGlwbGUgam9iIGJ1aWxkLCBNYWtlZmlsZSBjYW4gc2ltdWx0YW5lb3VzbHkKLWJlIGluc3RhbGxpbmcgYW5kIHJlbW92aW5nIGxpYmdldHRleHRsaWIuYS4gIFdlIHNlcmlhbGl6ZQotdGhlIG9wZXJhdGlvbnMuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0KLS0tLSBhL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9NYWtlZmlsZS5hbQotKysrIGIvZ2V0dGV4dC10b29scy9nbnVsaWItbGliL01ha2VmaWxlLmFtCi1AQCAtNTcsNiArNTcsMTAgQEAgZW5kaWYKLSAjIFJ1bGVzIGdlbmVyYXRlZCBhbmQgY29sbGVjdGVkIGJ5IGdudWxpYi10b29sLgotIGluY2x1ZGUgTWFrZWZpbGUuZ251bGliCi0gCi0rIyBkZWZpbmVkIGluIE1ha2VmaWxlLmdudWxpYiBidXQgbWlzc2luZyB0aGlzIGRlcGVuZGVuY3kKLSsjCi0raW5zdGFsbC1leGVjLWNsZWFuOiBpbnN0YWxsLWxpYkxUTElCUkFSSUVTCi0rCi0gIyBXaGljaCBjbGFzc2VzIHRvIGV4cG9ydCBmcm9tIHRoZSBzaGFyZWQgbGlicmFyeS4KLSBNT09QUEZMQUdTICs9IC0tZGxsZXhwb3J0PXN0eWxlZF9vc3RyZWFtCi0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9zZXJpYWwtdGVzdHMtY29uZmlnLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4xOS44LjEvc2VyaWFsLXRlc3RzLWNvbmZpZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzFmZjkxMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9zZXJpYWwtdGVzdHMtY29uZmlnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotRnJvbSBjNGIxZjNhMGM3YjdjNDBiMzQzYmU5Yjk1ZGViODRlMDQ4NTY0M2JlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIkhvbmdqdW4uWWFuZyIgPGhvbmdqdW4ueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAyOCBKdWwgMjAxNiAxMjozNjoxNSArMDgwMAotU3ViamVjdDogW1BBVENIXSBmaXggZm9yIHB0ZXN0Ci0KLUFkZCBzZXJpYWwtdGVzdHMgc3VwcG9ydCwgcHRlc3QgbmVlZCBpdAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICB8IDIgKy0KLSBnZXR0ZXh0LXJ1bnRpbWUvY29uZmlndXJlLmFjIHwgMiArLQotIGdldHRleHQtdG9vbHMvY29uZmlndXJlLmFjICAgfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDVlOTk2ZmEuLjg4MDU4MWYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTIzLDcgKzIzLDcgQEAgQUNfSU5JVChbZ2V0dGV4dF0sCi0gCVtidWctZ251LWdldHRleHRAZ251Lm9yZ10pCi0gQUNfQ09ORklHX1NSQ0RJUihbZ2V0dGV4dC10b29scy9zcmMvbXNnZm10LmNdKQotIEFDX0NPTkZJR19BVVhfRElSKFtidWlsZC1hdXhdKQotLUFNX0lOSVRfQVVUT01BS0UoWzEuMTMgc2lsZW50LXJ1bGVzIHBhcmFsbGVsLXRlc3RzIGRpc3QteHogZGlzdC1semlwXSkKLStBTV9JTklUX0FVVE9NQUtFKFsxLjEzIHNpbGVudC1ydWxlcyBzZXJpYWwtdGVzdHMgZGlzdC14eiBkaXN0LWx6aXBdKQotIAotIGRubCBPdmVycmlkZSBhdXRvbWFrZSdzIHRhciBjb21tYW5kIHVzZWQgZm9yIGNyZWF0aW5nIGRpc3RyaWJ1dGlvbnMuCi0gYW1fX3Rhcj0nJHtBTVRBUn0gY2hvZiAtIC0tb3duZXI9cm9vdCAtLWdyb3VwPXJvb3QgIiQkdGFyZGlyIicKLWRpZmYgLS1naXQgYS9nZXR0ZXh0LXJ1bnRpbWUvY29uZmlndXJlLmFjIGIvZ2V0dGV4dC1ydW50aW1lL2NvbmZpZ3VyZS5hYwotaW5kZXggZTkyOTliNi4uZDRmNTUyOCAxMDA2NDQKLS0tLSBhL2dldHRleHQtcnVudGltZS9jb25maWd1cmUuYWMKLSsrKyBiL2dldHRleHQtcnVudGltZS9jb25maWd1cmUuYWMKLUBAIC0yMiw3ICsyMiw3IEBAIEFDX0lOSVQoW2dldHRleHQtcnVudGltZV0sCi0gCVtidWctZ251LWdldHRleHRAZ251Lm9yZ10pCi0gQUNfQ09ORklHX1NSQ0RJUihbaW50bC9kY2lnZXR0ZXh0LmNdKQotIEFDX0NPTkZJR19BVVhfRElSKFsuLi9idWlsZC1hdXhdKQotLUFNX0lOSVRfQVVUT01BS0UoWzEuMTEuMSBzaWxlbnQtcnVsZXMgcGFyYWxsZWwtdGVzdHNdKQotK0FNX0lOSVRfQVVUT01BS0UoWzEuMTEuMSBzaWxlbnQtcnVsZXMgc2VyaWFsLXRlc3RzXSkKLSBBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmhdKQotIAotIGRubCBJbnN0YWxsYXRpb24gZGlyZWN0b3JpZXMuCi1kaWZmIC0tZ2l0IGEvZ2V0dGV4dC10b29scy9jb25maWd1cmUuYWMgYi9nZXR0ZXh0LXRvb2xzL2NvbmZpZ3VyZS5hYwotaW5kZXggOTIwZWViNi4uYzUwNzQzNCAxMDA2NDQKLS0tLSBhL2dldHRleHQtdG9vbHMvY29uZmlndXJlLmFjCi0rKysgYi9nZXR0ZXh0LXRvb2xzL2NvbmZpZ3VyZS5hYwotQEAgLTIyLDcgKzIyLDcgQEAgQUNfSU5JVChbZ2V0dGV4dC10b29sc10sCi0gCVtidWctZ251LWdldHRleHRAZ251Lm9yZ10pCi0gQUNfQ09ORklHX1NSQ0RJUihbc3JjL21zZ2ZtdC5jXSkKLSBBQ19DT05GSUdfQVVYX0RJUihbLi4vYnVpbGQtYXV4XSkKLS1BTV9JTklUX0FVVE9NQUtFKFsxLjExLjEgc2lsZW50LXJ1bGVzIHBhcmFsbGVsLXRlc3RzXSkKLStBTV9JTklUX0FVVE9NQUtFKFsxLjExLjEgc2lsZW50LXJ1bGVzIHNlcmlhbC10ZXN0c10pCi0gQUNfQ09ORklHX0hFQURFUlMoW2NvbmZpZy5oXSkKLSAKLSBkbmwgSW5zdGFsbGF0aW9uIGRpcmVjdG9yaWVzLgotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS91c2UtcGtnY29uZmlnLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4xOS44LjEvdXNlLXBrZ2NvbmZpZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjE1NmExNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS91c2UtcGtnY29uZmlnLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIxICswLDAgQEAKLUZvciByZWFzb25zIHdoaWNoIEkganVzdCBjYW4ndCBmYXRob20gZ251bGliIGRvZXNuJ3QgdXNlIHRoZSBleHBlY3RlZCB0b29scyB0bwotZmluZCBsaWJyYXJpZXMgYnV0IGJhZGx5IHJlaW52ZW50cyB0aGUgd2hlZWwuICBUaGlzIHdpbGwgdHJpdmlhbGx5IGxlYWQgdG8gaG9zdAotY29udGFtaW5hdGlvbiAoZXhwbGljaXQgc2VhcmNoZXMgb2YgL3Vzci9saWIpIG9yIGluY29ycmVjdCBSUEFUSHMgKGJhZAotY2Fub25pY2FsaXNhdGlvbiByZXN1bHRpbmcgaW4gcmVsYXRpdmUgcGF0aHMpLgotCi1TaW1wbHkgZGVsZXRlIGFsbCB0aGUgY3JhenksIGFuZCByZXBsYWNlIHdpdGggYSBzaW5nbGUgY2FsbCB0byBwa2ctY29uZmlnLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgKHVwc3RyZWFtIHN0aWxsIHJlZnVzZSB0byBjb25zaWRlciBwa2ctY29uZmlnKQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2dudWxpYi1sb2NhbC9tNC9saWJjcm9jby5tNCBiL2dudWxpYi1sb2NhbC9tNC9saWJjcm9jby5tNAotaW5kZXggZjc5ZWE4MmYxLi4xZjY3Mjc0ZGIgMTAwNjQ0Ci0tLS0gYS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJjcm9jby5tNAotKysrIGIvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGliY3JvY28ubTQKLUBAIC04LDYgKzgsNyBAQCBkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0gCi0gQUNfREVGVU4oW2dsX0xJQkNST0NPXSwKLSBbCi0rICBBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKLSAgIGRubCBsaWJjcm9jbyBkZXBlbmRzIG9uIGxpYmdsaWIuCi0gICBBQ19SRVFVSVJFKFtnbF9MSUJHTElCXSkKLSAKLUBAIC0yMyw2NSArMjQsMTAgQEAgQUNfREVGVU4oW2dsX0xJQkNST0NPXSwKLSAgIExUTElCQ1JPQ089Ci0gICBJTkNDUk9DTz0KLSAgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jb191c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgotLSAgICBkbmwgRmlndXJlIG91dCB3aGV0aGVyIHdlIGNhbiB1c2UgYSBwcmVpbnN0YWxsZWQgbGliY3JvY28tMC42LCBvciBoYXZlIHRvCi0tICAgIGRubCB1c2UgdGhlIGluY2x1ZGVkIG9uZS4KLS0gICAgQUNfQ0FDSEVfVkFMKFtnbF9jdl9saWJjcm9jb10sIFsKLS0gICAgICBnbF9jdl9saWJjcm9jbz1ubwotLSAgICAgIGdsX2N2X0xJQkNST0NPPQotLSAgICAgIGdsX2N2X0xUTElCQ1JPQ089Ci0tICAgICAgZ2xfY3ZfSU5DQ1JPQ089Ci0tICAgICAgZ2xfc2F2ZV9MSUJTPSIkTElCUyIKLS0gICAgICBkbmwgU2VhcmNoIGZvciBsaWJjcm9jbyBhbmQgZGVmaW5lIExJQkNST0NPXzBfNiwgTFRMSUJDUk9DT18wXzYgYW5kCi0tICAgICAgZG5sIElOQ0NST0NPXzBfNiBhY2NvcmRpbmdseS4KLS0gICAgICBkbmwgRG9uJ3QgdXNlIGNyb2NvLTAuNi1jb25maWcgbm9yIHBrZy1jb25maWcsIHNpbmNlIGl0IGRvZXNuJ3Qgd29yayB3aGVuCi0tICAgICAgZG5sIGNyb3NzLWNvbXBpbGluZyBvciB3aGVuIHRoZSBDIGNvbXBpbGVyIGluIHVzZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKLS0gICAgICBkbmwgb25lIHRoYXQgYnVpbHQgdGhlIGxpYnJhcnkuCi0tICAgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFtjcm9jby0wLjZdLCBbZ2xpYi0yLjBdKQotLSAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMgJExJQkNST0NPXzBfNiIKLS0gICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYmNyb2NvLWNvbmZpZy5oPl0sCi0tICAgICAgICBbY29uc3QgY2hhciAqdmVyc2lvbiA9IExJQkNST0NPX1ZFUlNJT047IHJldHVybiAhdmVyc2lvbjtdLAotLSAgICAgICAgW2dsX2N2X2xpYmNyb2NvPXllcwotLSAgICAgICAgIGdsX2N2X0xJQkNST0NPPSIkTElCQ1JPQ09fMF82IgotLSAgICAgICAgIGdsX2N2X0xUTElCQ1JPQ089IiRMVExJQkNST0NPXzBfNiIKLS0gICAgICAgIF0pCi0tICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYmNyb2NvIiAhPSB5ZXM7IHRoZW4KLS0gICAgICAgIGdsX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKLS0gICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJElOQ0NST0NPXzBfNiIKLS0gICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGliY3JvY28tY29uZmlnLmg+XSwKLS0gICAgICAgICAgW2NvbnN0IGNoYXIgKnZlcnNpb24gPSBMSUJDUk9DT19WRVJTSU9OOyByZXR1cm4gIXZlcnNpb247XSwKLS0gICAgICAgICAgW2dsX2N2X2xpYmNyb2NvPXllcwotLSAgICAgICAgICAgZ2xfY3ZfTElCQ1JPQ089IiRMSUJDUk9DT18wXzYiCi0tICAgICAgICAgICBnbF9jdl9MVExJQkNST0NPPSIkTFRMSUJDUk9DT18wXzYiCi0tICAgICAgICAgICBnbF9jdl9JTkNDUk9DTz0iJElOQ0NST0NPXzBfNiIKLS0gICAgICAgICAgXSkKLS0gICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jbyIgIT0geWVzOyB0aGVuCi0tICAgICAgICAgIGRubCBPZnRlbiB0aGUgaW5jbHVkZSBmaWxlcyBhcmUgaW5zdGFsbGVkIGluCi0tICAgICAgICAgIGRubCAvdXNyL2luY2x1ZGUvbGliY3JvY28tMC42L2xpYmNyb2NvLgotLSAgICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYmNyb2NvLTAuNi9saWJjcm9jby9saWJjcm9jby1jb25maWcuaD5dLAotLSAgICAgICAgICAgIFtjb25zdCBjaGFyICp2ZXJzaW9uID0gTElCQ1JPQ09fVkVSU0lPTjsgcmV0dXJuICF2ZXJzaW9uO10sCi0tICAgICAgICAgICAgW2dsX0FCU09MVVRFX0hFQURFUihbbGliY3JvY28tMC42L2xpYmNyb2NvL2xpYmNyb2NvLWNvbmZpZy5oXSkKLS0gICAgICAgICAgICAgbGliY3JvY29faW5jbHVkZV9kaXI9YGVjaG8gIiRnbF9jdl9hYnNvbHV0ZV9saWJjcm9jb18wXzZfbGliY3JvY29fbGliY3JvY29fY29uZmlnX2giIHwgc2VkIC1lICdzLC5saWJjcm9jby1jb25maWdcLmgkLCwnYAotLSAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkbGliY3JvY29faW5jbHVkZV9kaXIiOyB0aGVuCi0tICAgICAgICAgICAgICAgZ2xfY3ZfbGliY3JvY289eWVzCi0tICAgICAgICAgICAgICAgZ2xfY3ZfTElCQ1JPQ089IiRMSUJDUk9DT18wXzYiCi0tICAgICAgICAgICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0iJExUTElCQ1JPQ09fMF82IgotLSAgICAgICAgICAgICAgIGdsX2N2X0lOQ0NST0NPPSItSSRsaWJjcm9jb19pbmNsdWRlX2RpciIKLS0gICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICBdKQotLSAgICAgICAgZmkKLS0gICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyIKLS0gICAgICBmaQotLSAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMiCi0tICAgIF0pCi0tICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGxpYmNyb2NvXSkKLS0gICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmNyb2NvXSkKLS0gICAgaWYgdGVzdCAkZ2xfY3ZfbGliY3JvY28gPSB5ZXM7IHRoZW4KLS0gICAgICBMSUJDUk9DTz0iJGdsX2N2X0xJQkNST0NPIgotLSAgICAgIExUTElCQ1JPQ089IiRnbF9jdl9MVExJQkNST0NPIgotLSAgICAgIElOQ0NST0NPPSIkZ2xfY3ZfSU5DQ1JPQ08iCi0tICAgIGVsc2UKLS0gICAgICBnbF9jdl9saWJjcm9jb191c2VfaW5jbHVkZWQ9eWVzCi0tICAgIGZpCi0rICAgIFBLR19DSEVDS19NT0RVTEVTKFtDUk9DT10sIFtsaWJjcm9jby0wLjZdKQotKyAgICBMSUJDUk9DTz0kQ1JPQ09fTElCUwotKyAgICBMVExJQkNST0NPPSRDUk9DT19MSUJTCi0rICAgIElOQ0NST0NPPSRDUk9DT19DRkxBR1MKLSAgIGZpCi0gICBBQ19TVUJTVChbTElCQ1JPQ09dKQotICAgQUNfU1VCU1QoW0xUTElCQ1JPQ09dKQotZGlmZiAtLWdpdCBhL2dudWxpYi1sb2NhbC9tNC9saWJnbGliLm00IGIvZ251bGliLWxvY2FsL200L2xpYmdsaWIubTQKLWluZGV4IDQyZTU1ZTZmZC4uYWIyNWE1YjIyIDEwMDY0NAotLS0tIGEvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGliZ2xpYi5tNAotKysrIGIvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGliZ2xpYi5tNAotQEAgLTgsNiArOCw3IEBAIGRubCBGcm9tIEJydW5vIEhhaWJsZS4KLSAKLSBBQ19ERUZVTihbZ2xfTElCR0xJQl0sCi0gWwotKyAgQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCi0gICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgaW5jbHVkZWQgZ2xpYiBpcyByZXF1ZXN0ZWRdKQotICAgQUNfQVJHX1dJVEgoW2luY2x1ZGVkLWdsaWJdLAotICAgICBbICAtLXdpdGgtaW5jbHVkZWQtZ2xpYiAgICB1c2UgdGhlIGdsaWIyIGluY2x1ZGVkIGhlcmVdLAotQEAgLTIwLDc2ICsyMSwxMCBAQCBBQ19ERUZVTihbZ2xfTElCR0xJQl0sCi0gICBMVExJQkdMSUI9Ci0gICBJTkNHTElCPQotICAgaWYgdGVzdCAiJGdsX2N2X2xpYmdsaWJfdXNlX2luY2x1ZGVkIiAhPSB5ZXM7IHRoZW4KLS0gICAgZG5sIEZpZ3VyZSBvdXQgd2hldGhlciB3ZSBjYW4gdXNlIGEgcHJlaW5zdGFsbGVkIGxpYmdsaWItMi4wLCBvciBoYXZlIHRvIHVzZQotLSAgICBkbmwgdGhlIGluY2x1ZGVkIG9uZS4KLS0gICAgQUNfQ0FDSEVfVkFMKFtnbF9jdl9saWJnbGliXSwgWwotLSAgICAgIGdsX2N2X2xpYmdsaWI9bm8KLS0gICAgICBnbF9jdl9MSUJHTElCPQotLSAgICAgIGdsX2N2X0xUTElCR0xJQj0KLS0gICAgICBnbF9jdl9JTkNHTElCPQotLSAgICAgIGdsX3NhdmVfTElCUz0iJExJQlMiCi0tICAgICAgZG5sIFNlYXJjaCBmb3IgbGliZ2xpYjIgYW5kIGRlZmluZSBMSUJHTElCXzJfMCwgTFRMSUJHTElCXzJfMCBhbmQKLS0gICAgICBkbmwgSU5DR0xJQl8yXzAgYWNjb3JkaW5nbHkuCi0tICAgICAgZG5sIERvbid0IHVzZSBnbGliLWNvbmZpZyBub3IgcGtnLWNvbmZpZywgc2luY2UgaXQgZG9lc24ndCB3b3JrIHdoZW4KLS0gICAgICBkbmwgY3Jvc3MtY29tcGlsaW5nIG9yIHdoZW4gdGhlIEMgY29tcGlsZXIgaW4gdXNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZQotLSAgICAgIGRubCBvbmUgdGhhdCBidWlsdCB0aGUgbGlicmFyeS4KLS0gICAgICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2dsaWItMi4wXSkKLS0gICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTICRMSUJHTElCXzJfMCIKLS0gICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGdsaWIuaD4KLS0jaWZuZGVmIEdfQkVHSU5fREVDTFMKLS1lcnJvciB0aGlzIGdsaWIuaCBpbmNsdWRlcyBhIGdsaWJjb25maWcuaCBmcm9tIGEgZ2xpYiB2ZXJzaW9uIDEueAotLSNlbmRpZgotLV0sCi0tICAgICAgICBbZ19zdHJpbmdfbmV3ICgiZm9vIik7XSwKLS0gICAgICAgIFtnbF9jdl9saWJnbGliPXllcwotLSAgICAgICAgIGdsX2N2X0xJQkdMSUI9IiRMSUJHTElCXzJfMCIKLS0gICAgICAgICBnbF9jdl9MVExJQkdMSUI9IiRMVExJQkdMSUJfMl8wIgotLSAgICAgICAgXSkKLS0gICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliZ2xpYiIgIT0geWVzOyB0aGVuCi0tICAgICAgICBnbF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCi0tICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRJTkNHTElCXzJfMCIKLS0gICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8Z2xpYi5oPgotLSNpZm5kZWYgR19CRUdJTl9ERUNMUwotLWVycm9yIHRoaXMgZ2xpYi5oIGluY2x1ZGVzIGEgZ2xpYmNvbmZpZy5oIGZyb20gYSBnbGliIHZlcnNpb24gMS54Ci0tI2VuZGlmCi0tXSwKLS0gICAgICAgICAgW2dfc3RyaW5nX25ldyAoImZvbyIpO10sCi0tICAgICAgICAgIFtnbF9jdl9saWJnbGliPXllcwotLSAgICAgICAgICAgZ2xfY3ZfTElCR0xJQj0iJExJQkdMSUJfMl8wIgotLSAgICAgICAgICAgZ2xfY3ZfTFRMSUJHTElCPSIkTFRMSUJHTElCXzJfMCIKLS0gICAgICAgICAgIGdsX2N2X0lOQ0dMSUI9IiRJTkNHTElCXzJfMCIKLS0gICAgICAgICAgXSkKLS0gICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJnbGliIiAhPSB5ZXM7IHRoZW4KLS0gICAgICAgICAgZG5sIE9mdGVuIHRoZSBpbmNsdWRlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW4gL3Vzci9pbmNsdWRlL2dsaWItMi4wCi0tICAgICAgICAgIGRubCBhbmQgL3Vzci9saWIvZ2xpYi0yLjAvaW5jbHVkZS4KLS0gICAgICAgICAgaWYgdGVzdCAtbiAiJExJQkdMSUJfMl8wX1BSRUZJWCI7IHRoZW4KLS0gICAgICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MgLUkkTElCR0xJQl8yXzBfUFJFRklYL2luY2x1ZGUvZ2xpYi0yLjAgLUkkTElCR0xJQl8yXzBfUFJFRklYLyRhY2xfbGliZGlyc3RlbS9nbGliLTIuMC9pbmNsdWRlIgotLSAgICAgICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8Z2xpYi5oPgotLSNpZm5kZWYgR19CRUdJTl9ERUNMUwotLWVycm9yIHRoaXMgZ2xpYi5oIGluY2x1ZGVzIGEgZ2xpYmNvbmZpZy5oIGZyb20gYSBnbGliIHZlcnNpb24gMS54Ci0tI2VuZGlmCi0tXSwKLS0gICAgICAgICAgICAgIFtnX3N0cmluZ19uZXcgKCJmb28iKTtdLAotLSAgICAgICAgICAgICAgW2dsX2N2X2xpYmdsaWI9eWVzCi0tICAgICAgICAgICAgICAgZ2xfY3ZfTElCR0xJQj0iJExJQkdMSUJfMl8wIgotLSAgICAgICAgICAgICAgIGdsX2N2X0xUTElCR0xJQj0iJExUTElCR0xJQl8yXzAiCi0tICAgICAgICAgICAgICAgZ2xfY3ZfSU5DR0xJQj0iLUkkTElCR0xJQl8yXzBfUFJFRklYL2luY2x1ZGUvZ2xpYi0yLjAgLUkkTElCR0xJQl8yXzBfUFJFRklYLyRhY2xfbGliZGlyc3RlbS9nbGliLTIuMC9pbmNsdWRlIgotLSAgICAgICAgICAgICAgXSkKLS0gICAgICAgICAgZmkKLS0gICAgICAgIGZpCi0tICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MiCi0tICAgICAgZmkKLS0gICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTIgotLSAgICBdKQotLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBnbGliXSkKLS0gICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmdsaWJdKQotLSAgICBpZiB0ZXN0ICRnbF9jdl9saWJnbGliID0geWVzOyB0aGVuCi0tICAgICAgTElCR0xJQj0iJGdsX2N2X0xJQkdMSUIiCi0tICAgICAgTFRMSUJHTElCPSIkZ2xfY3ZfTFRMSUJHTElCIgotLSAgICAgIElOQ0dMSUI9IiRnbF9jdl9JTkNHTElCIgotLSAgICBlbHNlCi0tICAgICAgZ2xfY3ZfbGliZ2xpYl91c2VfaW5jbHVkZWQ9eWVzCi0tICAgIGZpCi0rICAgIFBLR19DSEVDS19NT0RVTEVTKFtHTElCXSwgW2dsaWItMi4wXSkKLSsgICAgTElCR0xJQj0iJEdMSUJfTElCUyIKLSsgICAgTFRMSUJHTElCPSIkR0xJQl9MSUJTIgotKyAgICBJTkNHTElCPSIkR0xJQl9DRkxBR1MiCi0gICBmaQotICAgQUNfU1VCU1QoW0xJQkdMSUJdKQotICAgQUNfU1VCU1QoW0xUTElCR0xJQl0pCi1kaWZmIC0tZ2l0IGEvZ251bGliLWxvY2FsL200L2xpYnhtbC5tNCBiL2dudWxpYi1sb2NhbC9tNC9saWJ4bWwubTQKLWluZGV4IDQ4MGM3MDBkMi4uY2IzOTMwOWQ1IDEwMDY0NAotLS0tIGEvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGlieG1sLm00Ci0rKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1tNC9saWJ4bWwubTQKLUBAIC04LDYgKzgsNyBAQCBkbmwgRnJvbSBCcnVubyBIYWlibGUuCi0KLSBBQ19ERUZVTihbZ2xfTElCWE1MXSwKLSBbCi0rICBBQ19SRVFVSVJFKFtQS0dfUFJPR19QS0dfQ09ORklHXSkKLSAgIEFDX1JFUVVJUkUoW0FNX0lDT05WX0xJTktdKQotCi0gICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgaW5jbHVkZWQgbGlieG1sIGlzIHJlcXVlc3RlZF0pCi1AQCAtMjIsMTAwICsyMiwxMCBAQCBBQ19ERUZVTihbZ2xfTElCWE1MXSwKLSAgIExUTElCWE1MPQotICAgSU5DWE1MPQotICAgaWYgdGVzdCAiJGdsX2N2X2xpYnhtbF91c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgotLSAgICBkbmwgRmlndXJlIG91dCB3aGV0aGVyIHdlIGNhbiB1c2UgYSBwcmVpbnN0YWxsZWQgbGlieG1sMiwgb3IgaGF2ZSB0byB1c2UKLS0gICAgZG5sIHRoZSBpbmNsdWRlZCBvbmUuCi0tICAgIEFDX0NBQ0hFX1ZBTChbZ2xfY3ZfbGlieG1sXSwgWwotLSAgICAgIGdsX2N2X2xpYnhtbD1ubwotLSAgICAgIGdsX2N2X0xJQlhNTD0KLS0gICAgICBnbF9jdl9MVExJQlhNTD0KLS0gICAgICBnbF9jdl9JTkNYTUw9Ci0tICAgICAgZ2xfc2F2ZV9MSUJTPSIkTElCUyIKLS0gICAgICBMSUJTPSIkTElCUyAkTElCSUNPTlYiCi0tICAgICAgZG5sIFNlYXJjaCBmb3IgbGlieG1sMiBhbmQgZGVmaW5lIExJQlhNTDIsIExUTElCWE1MMiBhbmQgSU5DWE1MMgotLSAgICAgIGRubCBhY2NvcmRpbmdseS4KLS0gICAgICBkbmwgRG9uJ3QgdXNlIHhtbDItY29uZmlnIG5vciBwa2ctY29uZmlnLCBzaW5jZSBpdCBkb2Vzbid0IHdvcmsgd2hlbgotLSAgICAgIGRubCBjcm9zcy1jb21waWxpbmcgb3Igd2hlbiB0aGUgQyBjb21waWxlciBpbiB1c2UgaXMgZGlmZmVyZW50IGZyb20gdGhlCi0tICAgICAgZG5sIG9uZSB0aGF0IGJ1aWx0IHRoZSBsaWJyYXJ5LgotLSAgICAgIGRubCBVc2UgYSB0ZXN0IHByb2dyYW0gdGhhdCB0cmllcyB0byBpbnZva2UgeG1sRnJlZS4gT24gQ3lnd2luIDEuNy54LAotLSAgICAgIGRubCBsaWJ4bWwyIGlzIGJ1aWx0IGluIHN1Y2ggYSB3YXkgdGhhdCB1c2VzIG9mIHhtbEZyZWUgd29yayBmaW5lIHdpdGgKLS0gICAgICBkbmwgLVdsLC0tZW5hYmxlLWF1dG8taW1wb3J0IGJ1dCBsZWFkIHRvIGEgbGluayBlcnJvciB3aXRoCi0tICAgICAgZG5sIC1XbCwtLWRpc2FibGUtYXV0by1pbXBvcnQuCi0tICAgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFt4bWwyXSkKLS0gICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTICRMSUJYTUwyICRMSUJJQ09OViIKLS0gICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYnhtbC94bWx2ZXJzaW9uLmg+Ci0tICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveG1sbWVtb3J5Lmg+Ci0tICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveHBhdGguaD4KLS0gICAgICAgICAgICAgICAgICBdLAotLSAgICAgICAgW3htbENoZWNrVmVyc2lvbiAoMCk7Ci0tICAgICAgICAgeG1sRnJlZSAoKHZvaWQgKikgMCk7Ci0tICAgICAgICAgeG1sWFBhdGhTZXRDb250ZXh0Tm9kZSAoKHZvaWQgKikwLCAodm9pZCAqKTApOwotLSAgICAgICAgXSwKLS0gICAgICAgIFtnbF9jdl9saWJ4bWw9eWVzCi0tICAgICAgICAgZ2xfY3ZfTElCWE1MPSIkTElCWE1MMiAkTElCSUNPTlYiCi0tICAgICAgICAgZ2xfY3ZfTFRMSUJYTUw9IiRMVExJQlhNTDIgJExUTElCSUNPTlYiCi0tICAgICAgICBdKQotLSAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJ4bWwiICE9IHllczsgdGhlbgotLSAgICAgICAgZ2xfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgotLSAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkSU5DWE1MMiIKLS0gICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGlieG1sL3htbHZlcnNpb24uaD4KLS0gICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3htbG1lbW9yeS5oPgotLSAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveHBhdGguaD4KLS0gICAgICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgIFt4bWxDaGVja1ZlcnNpb24gKDApOwotLSAgICAgICAgICAgeG1sRnJlZSAoKHZvaWQgKikgMCk7Ci0tICAgICAgICAgICB4bWxYUGF0aFNldENvbnRleHROb2RlICgodm9pZCAqKTAsICh2b2lkICopMCk7Ci0tICAgICAgICAgIF0sCi0tICAgICAgICAgIFtnbF9jdl9saWJ4bWw9eWVzCi0tICAgICAgICAgICBnbF9jdl9MSUJYTUw9IiRMSUJYTUwyICRMSUJJQ09OViIKLS0gICAgICAgICAgIGdsX2N2X0xUTElCWE1MPSIkTFRMSUJYTUwyICRMVExJQklDT05WIgotLSAgICAgICAgICAgZ2xfY3ZfSU5DWE1MPSIkSU5DWE1MMiIKLS0gICAgICAgICAgXSkKLS0gICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJ4bWwiICE9IHllczsgdGhlbgotLSAgICAgICAgICBkbmwgT2Z0ZW4gdGhlIGluY2x1ZGUgZmlsZXMgYXJlIGluc3RhbGxlZCBpbiAvdXNyL2luY2x1ZGUvbGlieG1sMi4KLS0gICAgICAgICAgZG5sIEluIGxpYnhtbDItMi41LCA8bGlieG1sL3htbHZlcnNpb24uaD4gaXMgc2VsZi1jb250YWluZWQuCi0tICAgICAgICAgIGRubCBJbiBsaWJ4bWwyLTIuNiwgaXQgaW5jbHVkZXMgPGxpYnhtbC94bWxleHBvcnRzLmg+IHdoaWNoIGlzCi0tICAgICAgICAgIGRubCBzZWxmLWNvbnRhaW5lZC4KLS0gICAgICAgICAgbGlieG1sMl9pbmNsdWRlX2Rpcj0KLS0gICAgICAgICAgQUNfVFJZX0NQUChbI2luY2x1ZGUgPGxpYnhtbDIvbGlieG1sL3htbGV4cG9ydHMuaD5dLAotLSAgICAgICAgICAgIFtnbF9BQlNPTFVURV9IRUFERVIoW2xpYnhtbDIvbGlieG1sL3htbGV4cG9ydHMuaF0pCi0tICAgICAgICAgICAgIGxpYnhtbDJfaW5jbHVkZV9kaXI9YGVjaG8gIiRnbF9jdl9hYnNvbHV0ZV9saWJ4bWwyX2xpYnhtbF94bWxleHBvcnRzX2giIHwgc2VkIC1lICdzLC5saWJ4bWwueG1sZXhwb3J0c1wuaCQsLCdgCi0tICAgICAgICAgICAgXSkKLS0gICAgICAgICAgaWYgdGVzdCAteiAiJGxpYnhtbDJfaW5jbHVkZV9kaXIiOyB0aGVuCi0tICAgICAgICAgICAgQUNfVFJZX0NQUChbI2luY2x1ZGUgPGxpYnhtbDIvbGlieG1sL3htbHZlcnNpb24uaD5dLAotLSAgICAgICAgICAgICAgW2dsX0FCU09MVVRFX0hFQURFUihbbGlieG1sMi9saWJ4bWwveG1sdmVyc2lvbi5oXSkKLS0gICAgICAgICAgICAgICBsaWJ4bWwyX2luY2x1ZGVfZGlyPWBlY2hvICIkZ2xfY3ZfYWJzb2x1dGVfbGlieG1sMl9saWJ4bWxfeG1sdmVyc2lvbl9oIiB8IHNlZCAtZSAncywubGlieG1sLnhtbHZlcnNpb25cLmgkLCwnYAotLSAgICAgICAgICAgICAgXSkKLS0gICAgICAgICAgZmkKLS0gICAgICAgICAgaWYgdGVzdCAtbiAiJGxpYnhtbDJfaW5jbHVkZV9kaXIiICYmIHRlc3QgLWQgIiRsaWJ4bWwyX2luY2x1ZGVfZGlyIjsgdGhlbgotLSAgICAgICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyAtSSRsaWJ4bWwyX2luY2x1ZGVfZGlyIgotLSAgICAgICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGlieG1sL3htbHZlcnNpb24uaD4KLS0gICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94bWxtZW1vcnkuaD4KLS0gICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94cGF0aC5oPgotLSAgICAgICAgICAgICAgICAgICAgICAgIF0sCi0tICAgICAgICAgICAgICBbeG1sQ2hlY2tWZXJzaW9uICgwKTsKLS0gICAgICAgICAgICAgICB4bWxGcmVlICgodm9pZCAqKSAwKTsKLS0gICAgICAgICAgICAgICB4bWxYUGF0aFNldENvbnRleHROb2RlICgodm9pZCAqKTAsICh2b2lkICopMCk7Ci0tICAgICAgICAgICAgICBdLAotLSAgICAgICAgICAgICAgW2dsX2N2X2xpYnhtbD15ZXMKLS0gICAgICAgICAgICAgICBnbF9jdl9MSUJYTUw9IiRMSUJYTUwyICRMSUJJQ09OViIKLS0gICAgICAgICAgICAgICBnbF9jdl9MVExJQlhNTD0iJExUTElCWE1MMiAkTFRMSUJJQ09OViIKLS0gICAgICAgICAgICAgICBnbF9jdl9JTkNYTUw9Ii1JJGxpYnhtbDJfaW5jbHVkZV9kaXIiCi0tICAgICAgICAgICAgICBdKQotLSAgICAgICAgICBmaQotLSAgICAgICAgZmkKLS0gICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyIKLS0gICAgICBmaQotLSAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMiCi0tICAgIF0pCi0tICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGxpYnhtbF0pCi0tICAgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJ4bWxdKQotLSAgICBpZiB0ZXN0ICRnbF9jdl9saWJ4bWwgPSB5ZXM7IHRoZW4KLS0gICAgICBMSUJYTUw9IiRnbF9jdl9MSUJYTUwiCi0tICAgICAgTFRMSUJYTUw9IiRnbF9jdl9MVExJQlhNTCIKLS0gICAgICBJTkNYTUw9IiRnbF9jdl9JTkNYTUwiCi0tICAgIGVsc2UKLS0gICAgICBnbF9jdl9saWJ4bWxfdXNlX2luY2x1ZGVkPXllcwotLSAgICBmaQotKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbWE1MXSwgW2xpYnhtbC0yLjBdKQotKyAgICBMSUJYTUw9JFhNTF9MSUJTCi0rICAgIExUTElCWE1MPSRYTUxfTElCUwotKyAgICBJTkNYTUw9JFhNTF9DRkxBR1MKLSAgIGZpCi0gICBBQ19TVUJTVChbTElCWE1MXSkKLSAgIEFDX1NVQlNUKFtMVExJQlhNTF0pCi1kaWZmIC0tZ2l0IGEvZ251bGliLWxvY2FsL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMgYi9nbnVsaWItbG9jYWwvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYwotaW5kZXggODFhNDA3NDY3Li4yMTg1NjUzMjkgMTAwNjQ0Ci0tLS0gYS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jCi0rKysgYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jCi1AQCAtMjUsNCArMjUsNCBAQAotLSNpbmNsdWRlIDxjci1vbS1wYXJzZXIuaD4KLS0jaW5jbHVkZSA8Y3Itc2VsLWVuZy5oPgotLSNpbmNsdWRlIDxjci1zdHlsZS5oPgotLSNpbmNsdWRlIDxjci1yZ2IuaD4KLSsjaW5jbHVkZSA8bGliY3JvY28vY3Itb20tcGFyc2VyLmg+Ci0rI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXNlbC1lbmcuaD4KLSsjaW5jbHVkZSA8bGliY3JvY28vY3Itc3R5bGUuaD4KLSsjaW5jbHVkZSA8bGliY3JvY28vY3ItcmdiLmg+Ci1AQCAtMzEgKzMxIEBACi0tIyBpbmNsdWRlIDxjci1mb250cy5oPgotKyMgaW5jbHVkZSA8bGliY3JvY28vY3ItZm9udHMuaD4KLUBAIC0zMyArMzMgQEAKLS0jaW5jbHVkZSA8Y3Itc3RyaW5nLmg+Ci0rI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXN0cmluZy5oPgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xLzAwMDEtaW5pdC1lbnYuaW4tZG8tbm90LWFkZC1DLUNYWC1wYXJhbWV0ZXJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xLzAwMDEtaW5pdC1lbnYuaW4tZG8tbm90LWFkZC1DLUNYWC1wYXJhbWV0ZXJzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0NWI3NTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvMDAwMS1pbml0LWVudi5pbi1kby1ub3QtYWRkLUMtQ1hYLXBhcmFtZXRlcnMucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSA5YjkxMmE0N2Y3OTBhN2IyODJlYzBjMjI5NWExODhjNWQ4ZmI2YTdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDYgTWFyIDIwMjAgMjE6MDQ6MDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5pdC1lbnYuaW46IGRvIG5vdCBhZGQgQy9DWFggcGFyYW1ldGVycworCitUaGVzZSBhcmUgdGFrZW4gZnJvbSB0aGUgY3Jvc3MgZW52aXJvbm1lbnQgYW5kIGluY2x1ZGUKK3N5c3Jvb3QgcGF0aHMsIHNvIGFyZSBub3QgcmVwcm9kdWNpYmxlLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGdldHRleHQtdG9vbHMvdGVzdHMvaW5pdC1lbnYuaW4gfCA0IC0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvdGVzdHMvaW5pdC1lbnYuaW4gYi9nZXR0ZXh0LXRvb2xzL3Rlc3RzL2luaXQtZW52LmluCitpbmRleCBjYzg0ZmZkLi5iNjljOTkwIDEwMDY0NAorLS0tIGEvZ2V0dGV4dC10b29scy90ZXN0cy9pbml0LWVudi5pbgorKysrIGIvZ2V0dGV4dC10b29scy90ZXN0cy9pbml0LWVudi5pbgorQEAgLTMsMTAgKzMsNiBAQCB0b3BfYnVpbGRkaXI9Li4vLi4KKyAKKyBPQkpFWFQ9IkBPQkpFWFRAIgorIEVYRUVYVD0iQEVYRUVYVEAiCistQ0M9IkBDQ0AiCistQ0ZMQUdTPSJAQ0ZMQUdTQCIKKy1DWFg9IkBDWFhAIgorLUNYWEZMQUdTPSJAQ1hYRkxBR1NAIgorIENQUEZMQUdTPSJAQ1BQRkxBR1NAIgorIExERkxBR1M9IkBMREZMQUdTQCIKKyBMVExJQklOVEw9IkBMVExJQklOVExAIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xLzAwMDEtbXNnbWVyZ2UtRml4LWJlaGF2aW91ci1vZi1mb3ItbXNnZm10LW9uLVBPLWZpbGVzLXdpdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS8wMDAxLW1zZ21lcmdlLUZpeC1iZWhhdmlvdXItb2YtZm9yLW1zZ2ZtdC1vbi1QTy1maWxlcy13aXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjI0NTg4OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS8wMDAxLW1zZ21lcmdlLUZpeC1iZWhhdmlvdXItb2YtZm9yLW1zZ2ZtdC1vbi1QTy1maWxlcy13aXQucGF0Y2gKQEAgLTAsMCArMSw4NyBAQAorRnJvbSA3NWUzMTVmZGVjODJkMWExN2ViY2Q5ZTA3MTJkMTA5MzIzNTc4ZDY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQnJ1bm8gSGFpYmxlIDxicnVub0BjbGlzcC5vcmc+CitEYXRlOiBTdW4sIDE5IE1heSAyMDE5IDExOjEwOjA2ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG1zZ21lcmdlOiBGaXggYmVoYXZpb3VyIG9mIC0tZm9yLW1zZ2ZtdCBvbiBQTyBmaWxlcyB3aXRoIG5vCisgdHJhbnNsYXRpb25zLgorCittc2dtZXJnZTogRml4IGJlaGF2aW91ciBvZiAtLWZvci1tc2dmbXQgb24gUE8gZmlsZXMgd2l0aCBubyB0cmFuc2xhdGlvbnMuCisKK1JlcG9ydGVkIGJ5IERvbiBMYXdyZW5jZSA8ZGxhd3JlbmNlQGllY29rLmNvbT4KK2luIDxodHRwczovL2xpc3RzLmZyZWVkZXNrdG9wLm9yZy9hcmNoaXZlcy9wMTEtZ2x1ZS8yMDE5LU1heS8wMDA3MDAuaHRtbD4KK3ZpYSBEYWlraSBVZW5vCitpbiA8aHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9idWctZ2V0dGV4dC8yMDE5LTA1L21zZzAwMTI0Lmh0bWw+LgorCisqIGdldHRleHQtdG9vbHMvc3JjL21zZ21lcmdlLmMgKG1haW4pOiBUcmVhdCBmb3JjZV9wbyBsaWtlIHRydWUgaWYgZm9yX21zZ2ZtdAoraXMgdHJ1ZS4KKyogZ2V0dGV4dC10b29scy90ZXN0cy9tc2dtZXJnZS0yNjogQWRkIHRlc3Qgb2YgUE8gZmlsZSB3aXRoIG5vIHRyYW5zbGF0aW9ucy4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9naXR3ZWIvP3A9Z2V0dGV4dC5naXQ7YT1jb21taXRkaWZmO2g9MjMzNjQ1MWVkNjhkOTFmZjRiNWFlMWFjYmMxZWNhMzBlNDdhODZhOV0KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnZXR0ZXh0LXRvb2xzL3NyYy9tc2dtZXJnZS5jICAgIHwgIDQgKystLQorIGdldHRleHQtdG9vbHMvdGVzdHMvbXNnbWVyZ2UtMjYgfCAzNiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nZXR0ZXh0LXRvb2xzL3NyYy9tc2dtZXJnZS5jIGIvZ2V0dGV4dC10b29scy9zcmMvbXNnbWVyZ2UuYworaW5kZXggY2Q3NjJjMC4uOTJjOWI3YSAxMDA2NDQKKy0tLSBhL2dldHRleHQtdG9vbHMvc3JjL21zZ21lcmdlLmMKKysrKyBiL2dldHRleHQtdG9vbHMvc3JjL21zZ21lcmdlLmMKK0BAIC01MjAsOCArNTIwLDggQEAgVGhlcmUgaXMgTk8gV0FSUkFOVFksIHRvIHRoZSBleHRlbnQgcGVybWl0dGVkIGJ5IGxhdy5cblwKKyAgIGVsc2UKKyAgICAgeworICAgICAgIC8qIFdyaXRlIHRoZSBtZXJnZWQgbWVzc2FnZSBsaXN0IG91dC4gICovCistICAgICAgbXNnZG9tYWluX2xpc3RfcHJpbnQgKHJlc3VsdCwgb3V0cHV0X2ZpbGUsIG91dHB1dF9zeW50YXgsIGZvcmNlX3BvLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBmYWxzZSk7CisrICAgICAgbXNnZG9tYWluX2xpc3RfcHJpbnQgKHJlc3VsdCwgb3V0cHV0X2ZpbGUsIG91dHB1dF9zeW50YXgsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvcl9tc2dmbXQgfHwgZm9yY2VfcG8sIGZhbHNlKTsKKyAgICAgfQorIAorICAgZXhpdCAoRVhJVF9TVUNDRVNTKTsKK2RpZmYgLS1naXQgYS9nZXR0ZXh0LXRvb2xzL3Rlc3RzL21zZ21lcmdlLTI2IGIvZ2V0dGV4dC10b29scy90ZXN0cy9tc2dtZXJnZS0yNgoraW5kZXggY2QzODYyZS4uYjg2ZjdhMCAxMDA3NTUKKy0tLSBhL2dldHRleHQtdG9vbHMvdGVzdHMvbXNnbWVyZ2UtMjYKKysrKyBiL2dldHRleHQtdG9vbHMvdGVzdHMvbXNnbWVyZ2UtMjYKK0BAIC03Myw3ICs3MywzNyBAQCBtc2dzdHIgIlBhcGF5YSIKKyBFT0YKKyAKKyA6ICR7RElGRj1kaWZmfQorLSR7RElGRn0gbW0tdGVzdDI2Lm9rIG1tLXRlc3QyNi5vdXQKKy1yZXN1bHQ9JD8KKyske0RJRkZ9IG1tLXRlc3QyNi5vayBtbS10ZXN0MjYub3V0IHx8IEV4aXQgMQorIAorLWV4aXQgJHJlc3VsdAorKyMgVGVzdCB3aXRoIGEgUE8gZmlsZSB0aGF0IGhhcyBubyB0cmFuc2xhdGVkIG1lc3NhZ2VzLgorKworK2NhdCA8PFxFT0YgPiBtbS10ZXN0MjZhLmluMQorK21zZ2lkICIiCisrbXNnc3RyICIiCisrIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOFxuIgorKworK21zZ2lkICJIZWxsbyB3b3JsZCIKKyttc2dzdHIgIkhhbGxvIFdlbHQiCisrRU9GCisrCisrY2F0IDw8XEVPRiA+IG1tLXRlc3QyNmEuaW4yCisrbXNnaWQgIiIKKyttc2dzdHIgIiIKKysiQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PUFTQ0lJXG4iCisrCisrbXNnaWQgIkhlbGxvLCB3b3JsZCEiCisrbXNnc3RyICIiCisrRU9GCisrCisrOiAke01TR01FUkdFPW1zZ21lcmdlfQorKyR7TVNHTUVSR0V9IC0tZm9yLW1zZ2ZtdCAtbyBtbS10ZXN0MjZhLnRtcCBtbS10ZXN0MjZhLmluMSBtbS10ZXN0MjZhLmluMiBcCisrICAgIHx8IEV4aXQgMQorK0xDX0FMTD1DIHRyIC1kICdccicgPCBtbS10ZXN0MjZhLnRtcCA+IG1tLXRlc3QyNmEub3V0IHx8IEV4aXQgMQorKworK2NhdCA8PFxFT0YgPiBtbS10ZXN0MjZhLm9rCisrbXNnaWQgIiIKKyttc2dzdHIgIkNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOFxuIgorK0VPRgorKworKzogJHtESUZGPWRpZmZ9CisrJHtESUZGfSBtbS10ZXN0MjZhLm9rIG1tLXRlc3QyNmEub3V0IHx8IEV4aXQgMQorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xLzAwMDEtdGVzdHMtYXV0b3BvaW50LTMtdW5zZXQtTUFLRUZMQUdTLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xLzAwMDEtdGVzdHMtYXV0b3BvaW50LTMtdW5zZXQtTUFLRUZMQUdTLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwYmM2YjkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvMDAwMS10ZXN0cy1hdXRvcG9pbnQtMy11bnNldC1NQUtFRkxBR1MucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSAzOGIyNTZlNWFhN2RmZWI0MmFjZmZkODk1NjVlNTNhMmMwYmFiM2UzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDcgSmFuIDIwMjAgMTY6NDQ6MzggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdHMvYXV0b3BvaW50LTM6IHVuc2V0IE1BS0VGTEFHUworCitUaGlzIGlzIG5lZWRlZCB3aGVuIHJ1bm5pbmcgcHRlc3RzLCBhcyB0aGUgTUFLRUZMQUdTIHZhbHVlIChzZXQgdXAgYnkgcnVuLXB0ZXN0KQoraXMgbWVzc2luZyB1cCB0aGUgdGVzdC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBnZXR0ZXh0LXRvb2xzL3Rlc3RzL2F1dG9wb2ludC0zIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9nZXR0ZXh0LXRvb2xzL3Rlc3RzL2F1dG9wb2ludC0zIGIvZ2V0dGV4dC10b29scy90ZXN0cy9hdXRvcG9pbnQtMworaW5kZXggZTEzNTUyYi4uNTUxODhkZiAxMDA3NTUKKy0tLSBhL2dldHRleHQtdG9vbHMvdGVzdHMvYXV0b3BvaW50LTMKKysrKyBiL2dldHRleHQtdG9vbHMvdGVzdHMvYXV0b3BvaW50LTMKK0BAIC0xMjYsNiArMTI2LDcgQEAgdGVzdCAkPyA9IDAgfHwgeyBjYXQgYXV0b3BvaW50LmVycjsgRXhpdCAxOyB9CisgJHtDT05GSUdfU0hFTEx9IC4vY29uZmlndXJlID4vZGV2L251bGwgMj5hdXRwb2ludC5lcnIKKyB0ZXN0ICQ/ID0gMCB8fCB7IGNhdCBhdXRvcG9pbnQuZXJyOyBFeGl0IDE7IH0KKyAKKyt1bnNldCBNQUtFRkxBR1MKKyAke01BS0V9ID4vZGV2L251bGwgMj5hdXRvcG9pbnQuZXJyCisgdGVzdCAkPyA9IDAgfHwgeyBjYXQgYXV0b3BvaW50LmVycjsgRXhpdCAxOyB9CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjE5LjguMS9hZGQtd2l0aC1iaXNvbmxvY2FsZWRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS9hZGQtd2l0aC1iaXNvbmxvY2FsZWRpci5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4xOS44LjEvYWRkLXdpdGgtYmlzb25sb2NhbGVkaXIucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS9hZGQtd2l0aC1iaXNvbmxvY2FsZWRpci5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL2NyLXN0YXRlbWVudC5jLXRpbXNvcnQuaC1maXgtZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvY3Itc3RhdGVtZW50LmMtdGltc29ydC5oLWZpeC1mb3JtYXR0aW5nLWlzc3Vlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTYxZWQ3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL2NyLXN0YXRlbWVudC5jLXRpbXNvcnQuaC1maXgtZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2gKQEAgLTAsMCArMSw3MSBAQAorRnJvbSBmNjI0NWVmNTUzMGZjMzdhNjI0M2U3OThkZjM0MTYyZmJiZWFiNmYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBTdW4sIDE5IEZlYiAyMDE3IDIzOjMyOjQ2IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNyLXN0YXRlbWVudC5jL3RpbXNvcnQuaDogZml4IGZvcm1hdHRpbmcgaXNzdWVzCisKK0ZpeGVkIHdoZW4gY29tcGlsZSB3aXRoICItV2Zvcm1hdCAtV2Zvcm1hdC1zZWN1cml0eSAtV2Vycm9yPWZvcm1hdC1zZWN1cml0eSI6Cit8IGdldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJjcm9jby9jci1zdGF0ZW1lbnQuYzogSW4gZnVuY3Rpb24gJ2NyX3N0YXRlbWVudF9kdW1wX2NoYXJzZXQnOgorfCBnZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvbGliY3JvY28vY3Itc3RhdGVtZW50LmM6MjY2MToxNzogZXJyb3I6IGZvcm1hdCBub3QgYSBzdHJpbmcgbGl0ZXJhbCBhbmQgbm8gZm9ybWF0IGFyZ3VtZW50cyBbLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCit8ICAgICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgc3RyKSA7CisKK0FuZDoKK2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9saWJ4bWwvdGltc29ydC5oOjMyNjo4MDogd2FybmluZzogZm9ybWF0ICclbHUnIGV4cGVjdHMgYXJndW1lbnQgb2YgdHlwZSAnbG9uZyB1bnNpZ25lZCBpbnQnLCBidXQgYXJndW1lbnQgMyBoYXMgdHlwZSAndW5zaWduZWQgaW50JyBbLVdmb3JtYXQ9XQorICAgICAgIGZwcmludGYoc3RkZXJyLCAiRXJyb3IgYWxsb2NhdGluZyB0ZW1wb3Jhcnkgc3RvcmFnZSBmb3IgdGltIHNvcnQ6IG5lZWQgJWx1IGJ5dGVzIiwgc2l6ZW9mKFNPUlRfVFlQRSkgKiBuZXdfc2l6ZSk7CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KKworLS0tCisgbGlidGV4dHN0eWxlL2xpYi9saWJjcm9jby9jci1zdGF0ZW1lbnQuYyB8IDEwICsrKysrLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGlidGV4dHN0eWxlL2xpYi9saWJjcm9jby9jci1zdGF0ZW1lbnQuYyBiL2xpYnRleHRzdHlsZS9saWIvbGliY3JvY28vY3Itc3RhdGVtZW50LmMKK2luZGV4IDYxNzUyMGYuLjEwMDEwNGIgMTAwNjQ0CistLS0gYS9saWJ0ZXh0c3R5bGUvbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jCisrKysgYi9saWJ0ZXh0c3R5bGUvbGliL2xpYmNyb2NvL2NyLXN0YXRlbWVudC5jCitAQCAtMjYwNyw3ICsyNjA3LDcgQEAgY3Jfc3RhdGVtZW50X2R1bXBfcnVsZXNldCAoQ1JTdGF0ZW1lbnQgKiBhX3RoaXMsIEZJTEUgKiBhX2ZwLCBnbG9uZyBhX2luZGVudCkKKyAgICAgICAgIGdfcmV0dXJuX2lmX2ZhaWwgKGFfZnAgJiYgYV90aGlzKTsKKyAgICAgICAgIHN0ciA9IGNyX3N0YXRlbWVudF9ydWxlc2V0X3RvX3N0cmluZyAoYV90aGlzLCBhX2luZGVudCk7CisgICAgICAgICBpZiAoc3RyKSB7CistICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsIHN0cik7CisrICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsICIlcyIsIHN0cik7CisgICAgICAgICAgICAgICAgIGdfZnJlZSAoc3RyKTsKKyAgICAgICAgICAgICAgICAgc3RyID0gTlVMTDsKKyAgICAgICAgIH0KK0BAIC0yNjU4LDcgKzI2NTgsNyBAQCBjcl9zdGF0ZW1lbnRfZHVtcF9jaGFyc2V0IChDUlN0YXRlbWVudCAqIGFfdGhpcywgRklMRSAqIGFfZnAsIGd1bG9uZyBhX2luZGVudCkKKyAgICAgICAgIHN0ciA9IGNyX3N0YXRlbWVudF9jaGFyc2V0X3RvX3N0cmluZyAoYV90aGlzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhX2luZGVudCkgOworICAgICAgICAgaWYgKHN0cikgeworLSAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCBzdHIpIDsKKysgICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgIiVzIiwgc3RyKSA7CisgICAgICAgICAgICAgICAgIGdfZnJlZSAoc3RyKSA7CisgICAgICAgICAgICAgICAgIHN0ciA9IE5VTEwgOworICAgICAgICAgfQorQEAgLTI2ODUsNyArMjY4NSw3IEBAIGNyX3N0YXRlbWVudF9kdW1wX3BhZ2UgKENSU3RhdGVtZW50ICogYV90aGlzLCBGSUxFICogYV9mcCwgZ3Vsb25nIGFfaW5kZW50KQorIAorICAgICAgICAgc3RyID0gY3Jfc3RhdGVtZW50X2F0X3BhZ2VfcnVsZV90b19zdHJpbmcgKGFfdGhpcywgYV9pbmRlbnQpIDsKKyAgICAgICAgIGlmIChzdHIpIHsKKy0gICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgc3RyKTsKKysgICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgIiVzIiwgc3RyKTsKKyAgICAgICAgICAgICAgICAgZ19mcmVlIChzdHIpIDsKKyAgICAgICAgICAgICAgICAgc3RyID0gTlVMTCA7IAorICAgICAgICAgfQorQEAgLTI3MTEsNyArMjcxMSw3IEBAIGNyX3N0YXRlbWVudF9kdW1wX21lZGlhX3J1bGUgKENSU3RhdGVtZW50ICogYV90aGlzLAorIAorICAgICAgICAgc3RyID0gY3Jfc3RhdGVtZW50X21lZGlhX3J1bGVfdG9fc3RyaW5nIChhX3RoaXMsIGFfaW5kZW50KSA7CisgICAgICAgICBpZiAoc3RyKSB7CistICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsIHN0cikgOworKyAgICAgICAgICAgICAgICBmcHJpbnRmIChhX2ZwLCAiJXMiLCBzdHIpIDsKKyAgICAgICAgICAgICAgICAgZ19mcmVlIChzdHIpIDsKKyAgICAgICAgICAgICAgICAgc3RyID0gTlVMTCA7CisgICAgICAgICB9CitAQCAtMjczNyw3ICsyNzM3LDcgQEAgY3Jfc3RhdGVtZW50X2R1bXBfaW1wb3J0X3J1bGUgKENSU3RhdGVtZW50ICogYV90aGlzLCBGSUxFICogYV9mcCwKKyAKKyAgICAgICAgIHN0ciA9IGNyX3N0YXRlbWVudF9pbXBvcnRfcnVsZV90b19zdHJpbmcgKGFfdGhpcywgYV9pbmRlbnQpIDsKKyAgICAgICAgIGlmIChzdHIpIHsKKy0gICAgICAgICAgICAgICAgZnByaW50ZiAoYV9mcCwgc3RyKSA7CisrICAgICAgICAgICAgICAgIGZwcmludGYgKGFfZnAsICIlcyIsIHN0cikgOworICAgICAgICAgICAgICAgICBnX2ZyZWUgKHN0cikgOworICAgICAgICAgICAgICAgICBzdHIgPSBOVUxMIDsKKyAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS9wYXJhbGxlbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS9wYXJhbGxlbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTZhMzc2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL3BhcmFsbGVsLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gNGEyYTBhOTNiNDY5MDkzYjYwZmZkMGJlYzU1ZDMzZDFlMDNkNDcxMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvZSBTbGF0ZXIgPGpzbGF0ZXJAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgNyBKdW4gMjAxMiAxNjozNzowMSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBpbnN0YWwgbGliZ2V0dGV4dGxpYi5hIGJlZm9yZSByZW1vdmluZyBpdAorCitJbiBhIG11bHRpcGxlIGpvYiBidWlsZCwgTWFrZWZpbGUgY2FuIHNpbXVsdGFuZW91c2x5CitiZSBpbnN0YWxsaW5nIGFuZCByZW1vdmluZyBsaWJnZXR0ZXh0bGliLmEuICBXZSBzZXJpYWxpemUKK3RoZSBvcGVyYXRpb25zLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8anNsYXRlckB3aW5kcml2ZXIuY29tPgorCistLS0KKyBnZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvTWFrZWZpbGUuYW0gfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvTWFrZWZpbGUuYW0gYi9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvTWFrZWZpbGUuYW0KK2luZGV4IDIxMjY2OTkuLmQyZGQ3ZTQgMTAwNjQ0CistLS0gYS9nZXR0ZXh0LXRvb2xzL2dudWxpYi1saWIvTWFrZWZpbGUuYW0KKysrKyBiL2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9NYWtlZmlsZS5hbQorQEAgLTU4LDYgKzU4LDEwIEBAIGVuZGlmCisgIyBSdWxlcyBnZW5lcmF0ZWQgYW5kIGNvbGxlY3RlZCBieSBnbnVsaWItdG9vbC4KKyBpbmNsdWRlIE1ha2VmaWxlLmdudWxpYgorIAorKyMgZGVmaW5lZCBpbiBNYWtlZmlsZS5nbnVsaWIgYnV0IG1pc3NpbmcgdGhpcyBkZXBlbmRlbmN5CisrIworK2luc3RhbGwtZXhlYy1jbGVhbjogaW5zdGFsbC1saWJMVExJQlJBUklFUworKworICMgT1MvMiBkb2VzIG5vdCBzdXBwb3J0IGEgRExMIG5hbWUgbG9uZ2VyIHRoYW4gOCBjaGFyYWN0ZXJzLgorIGlmIE9TMgorIGxpYmdldHRleHRsaWJfbGFfTERGTEFHUyArPSAtb3MyZGxsbmFtZSBndGxpYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4xOS44LjEvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4yMC4xL3J1bi1wdGVzdApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtMC4xOS44LjEvcnVuLXB0ZXN0CnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvcnVuLXB0ZXN0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvc2VyaWFsLXRlc3RzLWNvbmZpZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS9zZXJpYWwtdGVzdHMtY29uZmlnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkzZjdjMDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvc2VyaWFsLXRlc3RzLWNvbmZpZy5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIGVkNjRhNTcyNGVmN2Q2ZWI0ZTlhODc2ZjgxN2VhMjY2YTUzNmUxOTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiSG9uZ2p1bi5ZYW5nIiA8aG9uZ2p1bi55YW5nQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI4IEp1bCAyMDE2IDEyOjM2OjE1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGZpeCBmb3IgcHRlc3QKKworQWRkIHNlcmlhbC10ZXN0cyBzdXBwb3J0LCBwdGVzdCBuZWVkIGl0CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgfCAyICstCisgZ2V0dGV4dC1ydW50aW1lL2NvbmZpZ3VyZS5hYyB8IDIgKy0KKyBnZXR0ZXh0LXRvb2xzL2NvbmZpZ3VyZS5hYyAgIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAzOGRiNmZkLi5mMDE5YWUwIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0yMiw3ICsyMiw3IEBAIEFDX0lOSVQoW2dldHRleHRdLAorIAlbYnVnLWdldHRleHRAZ251Lm9yZ10pCisgQUNfQ09ORklHX1NSQ0RJUihbZ2V0dGV4dC10b29scy9zcmMvbXNnZm10LmNdKQorIEFDX0NPTkZJR19BVVhfRElSKFtidWlsZC1hdXhdKQorLUFNX0lOSVRfQVVUT01BS0UoWzEuMTMgc2lsZW50LXJ1bGVzIHBhcmFsbGVsLXRlc3RzIHRhci11c3Rhcl0pCisrQU1fSU5JVF9BVVRPTUFLRShbMS4xMyBzaWxlbnQtcnVsZXMgc2VyaWFsLXRlc3RzIHRhci11c3Rhcl0pCisgCisgZG5sIE92ZXJyaWRlIGF1dG9tYWtlJ3MgdGFyIGNvbW1hbmQgdXNlZCBmb3IgY3JlYXRpbmcgZGlzdHJpYnV0aW9ucy4KKyBhbV9fdGFyPScke0FNVEFSfSBjaGYgLSAtLWZvcm1hdD11c3RhciAtLW93bmVyPXJvb3QgLS1ncm91cD1yb290ICIkJHRhcmRpciInCitkaWZmIC0tZ2l0IGEvZ2V0dGV4dC1ydW50aW1lL2NvbmZpZ3VyZS5hYyBiL2dldHRleHQtcnVudGltZS9jb25maWd1cmUuYWMKK2luZGV4IGRlMjAzZTcuLjEzOGEwN2YgMTAwNjQ0CistLS0gYS9nZXR0ZXh0LXJ1bnRpbWUvY29uZmlndXJlLmFjCisrKysgYi9nZXR0ZXh0LXJ1bnRpbWUvY29uZmlndXJlLmFjCitAQCAtMjIsNyArMjIsNyBAQCBBQ19JTklUKFtnZXR0ZXh0LXJ1bnRpbWVdLAorIAlbYnVnLWdldHRleHRAZ251Lm9yZ10pCisgQUNfQ09ORklHX1NSQ0RJUihbaW50bC9kY2lnZXR0ZXh0LmNdKQorIEFDX0NPTkZJR19BVVhfRElSKFsuLi9idWlsZC1hdXhdKQorLUFNX0lOSVRfQVVUT01BS0UoWzEuMTEuMSBzaWxlbnQtcnVsZXMgcGFyYWxsZWwtdGVzdHNdKQorK0FNX0lOSVRfQVVUT01BS0UoWzEuMTEuMSBzaWxlbnQtcnVsZXMgc2VyaWFsLXRlc3RzXSkKKyBBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmhdKQorIAorIGRubCBJbnN0YWxsYXRpb24gZGlyZWN0b3JpZXMuCitkaWZmIC0tZ2l0IGEvZ2V0dGV4dC10b29scy9jb25maWd1cmUuYWMgYi9nZXR0ZXh0LXRvb2xzL2NvbmZpZ3VyZS5hYworaW5kZXggY2YxZGQ3My4uYjU0NGQ2ZCAxMDA2NDQKKy0tLSBhL2dldHRleHQtdG9vbHMvY29uZmlndXJlLmFjCisrKysgYi9nZXR0ZXh0LXRvb2xzL2NvbmZpZ3VyZS5hYworQEAgLTIyLDcgKzIyLDcgQEAgQUNfSU5JVChbZ2V0dGV4dC10b29sc10sCisgCVtidWctZ2V0dGV4dEBnbnUub3JnXSkKKyBBQ19DT05GSUdfU1JDRElSKFtzcmMvbXNnZm10LmNdKQorIEFDX0NPTkZJR19BVVhfRElSKFsuLi9idWlsZC1hdXhdKQorLUFNX0lOSVRfQVVUT01BS0UoWzEuMTEuMSBzaWxlbnQtcnVsZXMgcGFyYWxsZWwtdGVzdHNdKQorK0FNX0lOSVRfQVVUT01BS0UoWzEuMTEuMSBzaWxlbnQtcnVsZXMgc2VyaWFsLXRlc3RzXSkKKyBBQ19DT05GSUdfSEVBREVSUyhbY29uZmlnLmhdKQorIAorIGRubCBJbnN0YWxsYXRpb24gZGlyZWN0b3JpZXMuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvdXNlLXBrZ2NvbmZpZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LTAuMjAuMS91c2UtcGtnY29uZmlnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQzZjNmZTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC0wLjIwLjEvdXNlLXBrZ2NvbmZpZy5wYXRjaApAQCAtMCwwICsxLDcxMyBAQAorRnJvbSBlZjQxNGIwNmJlODBjNmY2MDU3MzFhYmM5ZTY3NGUzOTZiODBlYzllIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IFR1ZSwgMjMgSmFuIDIwMTggMDA6NTQ6MTMgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZ2V0dGV4dDogYmVhdCBsaWJyYXJ5IGRldGVjdGlvbiBpbnRvIHNoYXBlCisKK0ZvciByZWFzb25zIHdoaWNoIEkganVzdCBjYW4ndCBmYXRob20gZ251bGliIGRvZXNuJ3QgdXNlIHRoZSBleHBlY3RlZCB0b29scyB0bworZmluZCBsaWJyYXJpZXMgYnV0IGJhZGx5IHJlaW52ZW50cyB0aGUgd2hlZWwuICBUaGlzIHdpbGwgdHJpdmlhbGx5IGxlYWQgdG8gaG9zdAorY29udGFtaW5hdGlvbiAoZXhwbGljaXQgc2VhcmNoZXMgb2YgL3Vzci9saWIpIG9yIGluY29ycmVjdCBSUEFUSHMgKGJhZAorY2Fub25pY2FsaXNhdGlvbiByZXN1bHRpbmcgaW4gcmVsYXRpdmUgcGF0aHMpLgorCitTaW1wbHkgZGVsZXRlIGFsbCB0aGUgY3JhenksIGFuZCByZXBsYWNlIHdpdGggYSBzaW5nbGUgY2FsbCB0byBwa2ctY29uZmlnLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3Vwc3RyZWFtIHN0aWxsIHJlZnVzZSB0byBjb25zaWRlciBwa2ctY29uZmlnXQorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworLS0tCisgZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGlieG1sLm00ICAgICAgICAgICAgIHwgIDk5ICstLS0tLS0tLS0tLS0tLS0tCisgLi4uL2dudWxpYi1sb2NhbC9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jIHwgIDEyICstCisgbGlidGV4dHN0eWxlL2dudWxpYi1sb2NhbC9tNC9saWJjcm9jby5tNCAgICAgIHwgIDk5ICsrKy0tLS0tLS0tLS0tLS0tCisgbGlidGV4dHN0eWxlL2dudWxpYi1sb2NhbC9tNC9saWJnbGliLm00ICAgICAgIHwgMTA0ICsrKy0tLS0tLS0tLS0tLS0tLQorIGxpYnRleHRzdHlsZS9nbnVsaWItbTQvbGliY3JvY28ubTQgICAgICAgICAgICB8ICA5OSArKystLS0tLS0tLS0tLS0tLQorIGxpYnRleHRzdHlsZS9nbnVsaWItbTQvbGliZ2xpYi5tNCAgICAgICAgICAgICB8IDEwNCArKystLS0tLS0tLS0tLS0tLS0KKyBsaWJ0ZXh0c3R5bGUvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0uYyAgICAgICAgfCAgMTIgKy0KKyBsaWJ0ZXh0c3R5bGUvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYyAgICAgfCAgMTIgKy0KKyA4IGZpbGVzIGNoYW5nZWQsIDg3IGluc2VydGlvbnMoKyksIDQ1NCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dldHRleHQtdG9vbHMvZ251bGliLW00L2xpYnhtbC5tNCBiL2dldHRleHQtdG9vbHMvZ251bGliLW00L2xpYnhtbC5tNAoraW5kZXggMDViOTU1MC4uMDMxZWU2NSAxMDA2NDQKKy0tLSBhL2dldHRleHQtdG9vbHMvZ251bGliLW00L2xpYnhtbC5tNAorKysrIGIvZ2V0dGV4dC10b29scy9nbnVsaWItbTQvbGlieG1sLm00CitAQCAtMTMsNiArMTMsNyBAQCBkbmwgZ2xfTElCWE1MKEZPUkNFLUlOQ0xVREVEKQorIGRubCAgIGZvcmNlcyB0aGUgdXNlIG9mIHRoZSBpbmNsdWRlZCBvciBhbiBleHRlcm5hbCBsaWJ4bWwuCisgQUNfREVGVU4oW2dsX0xJQlhNTF0sCisgWworKyAgQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCisgICBBQ19SRVFVSVJFKFtBTV9JQ09OVl9MSU5LXSkKKyAKKyAgIGlmZWxzZShbJDFdLCAsIFsKK0BAIC0zMCwxMDAgKzMxLDEwIEBAIEFDX0RFRlVOKFtnbF9MSUJYTUxdLAorICAgSU5DWE1MPQorICAgaWZlbHNlKFskMV0sIFt5ZXNdLCAsIFsKKyAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYnhtbF91c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgorLSAgICAgIGRubCBGaWd1cmUgb3V0IHdoZXRoZXIgd2UgY2FuIHVzZSBhIHByZWluc3RhbGxlZCBsaWJ4bWwyLCBvciBoYXZlIHRvIHVzZQorLSAgICAgIGRubCB0aGUgaW5jbHVkZWQgb25lLgorLSAgICAgIEFDX0NBQ0hFX1ZBTChbZ2xfY3ZfbGlieG1sXSwgWworLSAgICAgICAgZ2xfY3ZfbGlieG1sPW5vCistICAgICAgICBnbF9jdl9MSUJYTUw9CistICAgICAgICBnbF9jdl9MVExJQlhNTD0KKy0gICAgICAgIGdsX2N2X0lOQ1hNTD0KKy0gICAgICAgIGdsX3NhdmVfTElCUz0iJExJQlMiCistICAgICAgICBMSUJTPSIkTElCUyAkTElCSUNPTlYiCistICAgICAgICBkbmwgU2VhcmNoIGZvciBsaWJ4bWwyIGFuZCBkZWZpbmUgTElCWE1MMiwgTFRMSUJYTUwyIGFuZCBJTkNYTUwyCistICAgICAgICBkbmwgYWNjb3JkaW5nbHkuCistICAgICAgICBkbmwgRG9uJ3QgdXNlIHhtbDItY29uZmlnIG5vciBwa2ctY29uZmlnLCBzaW5jZSBpdCBkb2Vzbid0IHdvcmsgd2hlbgorLSAgICAgICAgZG5sIGNyb3NzLWNvbXBpbGluZyBvciB3aGVuIHRoZSBDIGNvbXBpbGVyIGluIHVzZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKKy0gICAgICAgIGRubCBvbmUgdGhhdCBidWlsdCB0aGUgbGlicmFyeS4KKy0gICAgICAgIGRubCBVc2UgYSB0ZXN0IHByb2dyYW0gdGhhdCB0cmllcyB0byBpbnZva2UgeG1sRnJlZS4gT24gQ3lnd2luIDEuNy54LAorLSAgICAgICAgZG5sIGxpYnhtbDIgaXMgYnVpbHQgaW4gc3VjaCBhIHdheSB0aGF0IHVzZXMgb2YgeG1sRnJlZSB3b3JrIGZpbmUgd2l0aAorLSAgICAgICAgZG5sIC1XbCwtLWVuYWJsZS1hdXRvLWltcG9ydCBidXQgbGVhZCB0byBhIGxpbmsgZXJyb3Igd2l0aAorLSAgICAgICAgZG5sIC1XbCwtLWRpc2FibGUtYXV0by1pbXBvcnQuCistICAgICAgICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW3htbDJdKQorLSAgICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyAkTElCWE1MMiAkTElCSUNPTlYiCistICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYnhtbC94bWx2ZXJzaW9uLmg+CistICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94bWxtZW1vcnkuaD4KKy0gICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3hwYXRoLmg+CistICAgICAgICAgICAgICAgICAgICBdLAorLSAgICAgICAgICBbeG1sQ2hlY2tWZXJzaW9uICgwKTsKKy0gICAgICAgICAgIHhtbEZyZWUgKCh2b2lkICopIDApOworLSAgICAgICAgICAgeG1sWFBhdGhTZXRDb250ZXh0Tm9kZSAoKHZvaWQgKikwLCAodm9pZCAqKTApOworLSAgICAgICAgICBdLAorLSAgICAgICAgICBbZ2xfY3ZfbGlieG1sPXllcworLSAgICAgICAgICAgZ2xfY3ZfTElCWE1MPSIkTElCWE1MMiAkTElCSUNPTlYiCistICAgICAgICAgICBnbF9jdl9MVExJQlhNTD0iJExUTElCWE1MMiAkTFRMSUJJQ09OViIKKy0gICAgICAgICAgXSkKKy0gICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJ4bWwiICE9IHllczsgdGhlbgorLSAgICAgICAgICBnbF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCistICAgICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJElOQ1hNTDIiCistICAgICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGlieG1sL3htbHZlcnNpb24uaD4KKy0gICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveG1sbWVtb3J5Lmg+CistICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8bGlieG1sL3hwYXRoLmg+CistICAgICAgICAgICAgICAgICAgICAgIF0sCistICAgICAgICAgICAgW3htbENoZWNrVmVyc2lvbiAoMCk7CistICAgICAgICAgICAgIHhtbEZyZWUgKCh2b2lkICopIDApOworLSAgICAgICAgICAgICB4bWxYUGF0aFNldENvbnRleHROb2RlICgodm9pZCAqKTAsICh2b2lkICopMCk7CistICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICBbZ2xfY3ZfbGlieG1sPXllcworLSAgICAgICAgICAgICBnbF9jdl9MSUJYTUw9IiRMSUJYTUwyICRMSUJJQ09OViIKKy0gICAgICAgICAgICAgZ2xfY3ZfTFRMSUJYTUw9IiRMVExJQlhNTDIgJExUTElCSUNPTlYiCistICAgICAgICAgICAgIGdsX2N2X0lOQ1hNTD0iJElOQ1hNTDIiCistICAgICAgICAgICAgXSkKKy0gICAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYnhtbCIgIT0geWVzOyB0aGVuCistICAgICAgICAgICAgZG5sIE9mdGVuIHRoZSBpbmNsdWRlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW4gL3Vzci9pbmNsdWRlL2xpYnhtbDIuCistICAgICAgICAgICAgZG5sIEluIGxpYnhtbDItMi41LCA8bGlieG1sL3htbHZlcnNpb24uaD4gaXMgc2VsZi1jb250YWluZWQuCistICAgICAgICAgICAgZG5sIEluIGxpYnhtbDItMi42LCBpdCBpbmNsdWRlcyA8bGlieG1sL3htbGV4cG9ydHMuaD4gd2hpY2ggaXMKKy0gICAgICAgICAgICBkbmwgc2VsZi1jb250YWluZWQuCistICAgICAgICAgICAgbGlieG1sMl9pbmNsdWRlX2Rpcj0KKy0gICAgICAgICAgICBBQ19UUllfQ1BQKFsjaW5jbHVkZSA8bGlieG1sMi9saWJ4bWwveG1sZXhwb3J0cy5oPl0sCistICAgICAgICAgICAgICBbZ2xfQUJTT0xVVEVfSEVBREVSKFtsaWJ4bWwyL2xpYnhtbC94bWxleHBvcnRzLmhdKQorLSAgICAgICAgICAgICAgIGxpYnhtbDJfaW5jbHVkZV9kaXI9YGVjaG8gIiRnbF9jdl9hYnNvbHV0ZV9saWJ4bWwyX2xpYnhtbF94bWxleHBvcnRzX2giIHwgc2VkIC1lICdzLC5saWJ4bWwueG1sZXhwb3J0c1wuaCQsLCdgCistICAgICAgICAgICAgICBdKQorLSAgICAgICAgICAgIGlmIHRlc3QgLXogIiRsaWJ4bWwyX2luY2x1ZGVfZGlyIjsgdGhlbgorLSAgICAgICAgICAgICAgQUNfVFJZX0NQUChbI2luY2x1ZGUgPGxpYnhtbDIvbGlieG1sL3htbHZlcnNpb24uaD5dLAorLSAgICAgICAgICAgICAgICBbZ2xfQUJTT0xVVEVfSEVBREVSKFtsaWJ4bWwyL2xpYnhtbC94bWx2ZXJzaW9uLmhdKQorLSAgICAgICAgICAgICAgICAgbGlieG1sMl9pbmNsdWRlX2Rpcj1gZWNobyAiJGdsX2N2X2Fic29sdXRlX2xpYnhtbDJfbGlieG1sX3htbHZlcnNpb25faCIgfCBzZWQgLWUgJ3MsLmxpYnhtbC54bWx2ZXJzaW9uXC5oJCwsJ2AKKy0gICAgICAgICAgICAgICAgXSkKKy0gICAgICAgICAgICBmaQorLSAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRsaWJ4bWwyX2luY2x1ZGVfZGlyIiAmJiB0ZXN0IC1kICIkbGlieG1sMl9pbmNsdWRlX2RpciI7IHRoZW4KKy0gICAgICAgICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyAtSSRsaWJ4bWwyX2luY2x1ZGVfZGlyIgorLSAgICAgICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJ4bWwveG1sdmVyc2lvbi5oPgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDxsaWJ4bWwveG1sbWVtb3J5Lmg+CistICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPGxpYnhtbC94cGF0aC5oPgorLSAgICAgICAgICAgICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgW3htbENoZWNrVmVyc2lvbiAoMCk7CistICAgICAgICAgICAgICAgICB4bWxGcmVlICgodm9pZCAqKSAwKTsKKy0gICAgICAgICAgICAgICAgIHhtbFhQYXRoU2V0Q29udGV4dE5vZGUgKCh2b2lkICopMCwgKHZvaWQgKikwKTsKKy0gICAgICAgICAgICAgICAgXSwKKy0gICAgICAgICAgICAgICAgW2dsX2N2X2xpYnhtbD15ZXMKKy0gICAgICAgICAgICAgICAgIGdsX2N2X0xJQlhNTD0iJExJQlhNTDIgJExJQklDT05WIgorLSAgICAgICAgICAgICAgICAgZ2xfY3ZfTFRMSUJYTUw9IiRMVExJQlhNTDIgJExUTElCSUNPTlYiCistICAgICAgICAgICAgICAgICBnbF9jdl9JTkNYTUw9Ii1JJGxpYnhtbDJfaW5jbHVkZV9kaXIiCistICAgICAgICAgICAgICAgIF0pCistICAgICAgICAgICAgZmkKKy0gICAgICAgICAgZmkKKy0gICAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIgorLSAgICAgICAgZmkKKy0gICAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMiCistICAgICAgXSkKKy0gICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBsaWJ4bWxdKQorLSAgICAgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJ4bWxdKQorLSAgICAgIGlmIHRlc3QgJGdsX2N2X2xpYnhtbCA9IHllczsgdGhlbgorLSAgICAgICAgTElCWE1MPSIkZ2xfY3ZfTElCWE1MIgorLSAgICAgICAgTFRMSUJYTUw9IiRnbF9jdl9MVExJQlhNTCIKKy0gICAgICAgIElOQ1hNTD0iJGdsX2N2X0lOQ1hNTCIKKy0gICAgICBlbHNlCistICAgICAgICBnbF9jdl9saWJ4bWxfdXNlX2luY2x1ZGVkPXllcworLSAgICAgIGZpCisrICAgICAgUEtHX0NIRUNLX01PRFVMRVMoW1hNTF0sIFtsaWJ4bWwtMi4wXSkKKysgICAgICBMSUJYTUw9JFhNTF9MSUJTCisrICAgICAgTFRMSUJYTUw9JFhNTF9MSUJTCisrICAgICAgSU5DWE1MPSRYTUxfQ0ZMQUdTCisgICAgIGZpCisgICBdKQorICAgQUNfU1VCU1QoW0xJQlhNTF0pCitkaWZmIC0tZ2l0IGEvbGlidGV4dHN0eWxlL2dudWxpYi1sb2NhbC9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jIGIvbGlidGV4dHN0eWxlL2dudWxpYi1sb2NhbC9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jCitpbmRleCAyY2ZkNGE4Li5kNDJjOGI0IDEwMDY0NAorLS0tIGEvbGlidGV4dHN0eWxlL2dudWxpYi1sb2NhbC9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jCisrKysgYi9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMKK0BAIC0yMiwxNSArMjIsMTUgQEAKKyAKKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgCistI2luY2x1ZGUgPGNyLW9tLXBhcnNlci5oPgorLSNpbmNsdWRlIDxjci1zZWwtZW5nLmg+CistI2luY2x1ZGUgPGNyLXN0eWxlLmg+CistI2luY2x1ZGUgPGNyLXJnYi5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1vbS1wYXJzZXIuaD4KKysjaW5jbHVkZSA8bGliY3JvY28vY3Itc2VsLWVuZy5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zdHlsZS5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1yZ2IuaD4KKyAvKiA8Y3ItZm9udHMuaD4gaGFzIGEgYnJva2VuIGRvdWJsZS1pbmNsdXNpb24gZ3VhcmQgaW4gbGliY3JvY28tMC42LjEuICAqLworICNpZm5kZWYgX19DUl9GT05UU19IX18KKy0jIGluY2x1ZGUgPGNyLWZvbnRzLmg+CisrIyBpbmNsdWRlIDxsaWJjcm9jby9jci1mb250cy5oPgorICNlbmRpZgorLSNpbmNsdWRlIDxjci1zdHJpbmcuaD4KKysjaW5jbHVkZSA8bGliY3JvY28vY3Itc3RyaW5nLmg+CisgCisgI2luY2x1ZGUgInRlcm0tb3N0cmVhbS5oIgorICNpbmNsdWRlICJoYXNoLmgiCitkaWZmIC0tZ2l0IGEvbGlidGV4dHN0eWxlL2dudWxpYi1sb2NhbC9tNC9saWJjcm9jby5tNCBiL2xpYnRleHRzdHlsZS9nbnVsaWItbG9jYWwvbTQvbGliY3JvY28ubTQKK2luZGV4IGJjNTNjYzYuLjEwYjI0NTUgMTAwNjQ0CistLS0gYS9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmNyb2NvLm00CisrKysgYi9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmNyb2NvLm00CitAQCAtMSw5OSArMSwzNCBAQAorLSMgbGliY3JvY28ubTQgc2VyaWFsIDMKKy1kbmwgQ29weXJpZ2h0IChDKSAyMDA2LTIwMDcsIDIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyBsaWJjcm9jby5tNCBzZXJpYWwgMiAoZ2V0dGV4dC0wLjE3KQorK2RubCBDb3B5cmlnaHQgKEMpIDIwMDYsIDIwMTUtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyBkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorIAorIGRubCBGcm9tIEJydW5vIEhhaWJsZS4KKyAKKy1kbmwgZ2xfTElCQ1JPQ08KKy1kbmwgICBnaXZlcyB0aGUgdXNlciB0aGUgb3B0aW9uIHRvIGRlY2lkZSB3aGV0aGVyIHRvIHVzZSB0aGUgaW5jbHVkZWQgb3IKKy1kbmwgICBhbiBleHRlcm5hbCBsaWJjcm9jby4KKy1kbmwgZ2xfTElCQ1JPQ08oRk9SQ0UtSU5DTFVERUQpCistZG5sICAgZm9yY2VzIHRoZSB1c2Ugb2YgdGhlIGluY2x1ZGVkIG9yIGFuIGV4dGVybmFsIGxpYmNyb2NvLgorIEFDX0RFRlVOKFtnbF9MSUJDUk9DT10sCisgWworLSAgaWZlbHNlKFskMV0sIFt5ZXNdLCAsIFsKKy0gICAgZG5sIGxpYmNyb2NvIGRlcGVuZHMgb24gbGliZ2xpYi4KKy0gICAgQUNfUkVRVUlSRShbZ2xfTElCR0xJQl0pCistICBdKQorKyAgQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCisrICBkbmwgbGliY3JvY28gZGVwZW5kcyBvbiBsaWJnbGliLgorKyAgQUNfUkVRVUlSRShbZ2xfTElCR0xJQl0pCisgCistICBpZmVsc2UoWyQxXSwgLCBbCistICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBsaWJjcm9jbyBpcyByZXF1ZXN0ZWRdKQorLSAgICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtbGliY3JvY29dLAorLSAgICAgIFsgIC0td2l0aC1pbmNsdWRlZC1saWJjcm9jbyAgdXNlIHRoZSBsaWJjcm9jbyBpbmNsdWRlZCBoZXJlXSwKKy0gICAgICBbZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWQ9JHdpdGh2YWxdLAorLSAgICAgIFtnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZD1ub10pCistICAgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZF0pCistICBdLCBbZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWQ9JDFdKQorKyAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGluY2x1ZGVkIGxpYmNyb2NvIGlzIHJlcXVlc3RlZF0pCisrICBBQ19BUkdfV0lUSChbaW5jbHVkZWQtbGliY3JvY29dLAorKyAgICBbICAtLXdpdGgtaW5jbHVkZWQtbGliY3JvY28gIHVzZSB0aGUgbGliY3JvY28gaW5jbHVkZWQgaGVyZV0sCisrICAgIFtnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZD0kd2l0aHZhbF0sCisrICAgIFtnbF9jdl9saWJjcm9jb19mb3JjZV9pbmNsdWRlZD1ub10pCisrICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWRdKQorIAorICAgZ2xfY3ZfbGliY3JvY29fdXNlX2luY2x1ZGVkPSIkZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWQiCisgICBMSUJDUk9DTz0KKyAgIExUTElCQ1JPQ089CisgICBJTkNDUk9DTz0KKy0gIGlmZWxzZShbJDFdLCBbeWVzXSwgLCBbCistICAgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jb191c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgorLSAgICAgIGRubCBGaWd1cmUgb3V0IHdoZXRoZXIgd2UgY2FuIHVzZSBhIHByZWluc3RhbGxlZCBsaWJjcm9jby0wLjYsIG9yIGhhdmUgdG8KKy0gICAgICBkbmwgdXNlIHRoZSBpbmNsdWRlZCBvbmUuCistICAgICAgQUNfQ0FDSEVfVkFMKFtnbF9jdl9saWJjcm9jb10sIFsKKy0gICAgICAgIGdsX2N2X2xpYmNyb2NvPW5vCistICAgICAgICBnbF9jdl9MSUJDUk9DTz0KKy0gICAgICAgIGdsX2N2X0xUTElCQ1JPQ089CistICAgICAgICBnbF9jdl9JTkNDUk9DTz0KKy0gICAgICAgIGdsX3NhdmVfTElCUz0iJExJQlMiCistICAgICAgICBkbmwgU2VhcmNoIGZvciBsaWJjcm9jbyBhbmQgZGVmaW5lIExJQkNST0NPXzBfNiwgTFRMSUJDUk9DT18wXzYgYW5kCistICAgICAgICBkbmwgSU5DQ1JPQ09fMF82IGFjY29yZGluZ2x5LgorLSAgICAgICAgZG5sIERvbid0IHVzZSBjcm9jby0wLjYtY29uZmlnIG5vciBwa2ctY29uZmlnLCBzaW5jZSBpdCBkb2Vzbid0IHdvcmsgd2hlbgorLSAgICAgICAgZG5sIGNyb3NzLWNvbXBpbGluZyBvciB3aGVuIHRoZSBDIGNvbXBpbGVyIGluIHVzZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKKy0gICAgICAgIGRubCBvbmUgdGhhdCBidWlsdCB0aGUgbGlicmFyeS4KKy0gICAgICAgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbY3JvY28tMC42XSwgW2dsaWItMi4wXSkKKy0gICAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMgJExJQkNST0NPXzBfNiIKKy0gICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGliY3JvY28tY29uZmlnLmg+XSwKKy0gICAgICAgICAgW2NvbnN0IGNoYXIgKnZlcnNpb24gPSBMSUJDUk9DT19WRVJTSU9OOyByZXR1cm4gIXZlcnNpb247XSwKKy0gICAgICAgICAgW2dsX2N2X2xpYmNyb2NvPXllcworLSAgICAgICAgICAgZ2xfY3ZfTElCQ1JPQ089IiRMSUJDUk9DT18wXzYiCistICAgICAgICAgICBnbF9jdl9MVExJQkNST0NPPSIkTFRMSUJDUk9DT18wXzYiCistICAgICAgICAgIF0pCistICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliY3JvY28iICE9IHllczsgdGhlbgorLSAgICAgICAgICBnbF9zYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiCistICAgICAgICAgIENQUEZMQUdTPSIkQ1BQRkxBR1MgJElOQ0NST0NPXzBfNiIKKy0gICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJjcm9jby1jb25maWcuaD5dLAorLSAgICAgICAgICAgIFtjb25zdCBjaGFyICp2ZXJzaW9uID0gTElCQ1JPQ09fVkVSU0lPTjsgcmV0dXJuICF2ZXJzaW9uO10sCistICAgICAgICAgICAgW2dsX2N2X2xpYmNyb2NvPXllcworLSAgICAgICAgICAgICBnbF9jdl9MSUJDUk9DTz0iJExJQkNST0NPXzBfNiIKKy0gICAgICAgICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0iJExUTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgICBnbF9jdl9JTkNDUk9DTz0iJElOQ0NST0NPXzBfNiIKKy0gICAgICAgICAgICBdKQorLSAgICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliY3JvY28iICE9IHllczsgdGhlbgorLSAgICAgICAgICAgIGRubCBPZnRlbiB0aGUgaW5jbHVkZSBmaWxlcyBhcmUgaW5zdGFsbGVkIGluCistICAgICAgICAgICAgZG5sIC91c3IvaW5jbHVkZS9saWJjcm9jby0wLjYvbGliY3JvY28uCistICAgICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxsaWJjcm9jby0wLjYvbGliY3JvY28vbGliY3JvY28tY29uZmlnLmg+XSwKKy0gICAgICAgICAgICAgIFtjb25zdCBjaGFyICp2ZXJzaW9uID0gTElCQ1JPQ09fVkVSU0lPTjsgcmV0dXJuICF2ZXJzaW9uO10sCistICAgICAgICAgICAgICBbZ2xfQUJTT0xVVEVfSEVBREVSKFtsaWJjcm9jby0wLjYvbGliY3JvY28vbGliY3JvY28tY29uZmlnLmhdKQorLSAgICAgICAgICAgICAgIGxpYmNyb2NvX2luY2x1ZGVfZGlyPWBlY2hvICIkZ2xfY3ZfYWJzb2x1dGVfbGliY3JvY29fMF82X2xpYmNyb2NvX2xpYmNyb2NvX2NvbmZpZ19oIiB8IHNlZCAtZSAncywubGliY3JvY28tY29uZmlnXC5oJCwsJ2AKKy0gICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkbGliY3JvY29faW5jbHVkZV9kaXIiOyB0aGVuCistICAgICAgICAgICAgICAgICBnbF9jdl9saWJjcm9jbz15ZXMKKy0gICAgICAgICAgICAgICAgIGdsX2N2X0xJQkNST0NPPSIkTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0iJExUTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgICAgICAgZ2xfY3ZfSU5DQ1JPQ089Ii1JJGxpYmNyb2NvX2luY2x1ZGVfZGlyIgorLSAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICBdKQorLSAgICAgICAgICBmaQorLSAgICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MiCistICAgICAgICBmaQorLSAgICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyIKKy0gICAgICBdKQorLSAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGxpYmNyb2NvXSkKKy0gICAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliY3JvY29dKQorLSAgICAgIGlmIHRlc3QgJGdsX2N2X2xpYmNyb2NvID0geWVzOyB0aGVuCistICAgICAgICBMSUJDUk9DTz0iJGdsX2N2X0xJQkNST0NPIgorLSAgICAgICAgTFRMSUJDUk9DTz0iJGdsX2N2X0xUTElCQ1JPQ08iCistICAgICAgICBJTkNDUk9DTz0iJGdsX2N2X0lOQ0NST0NPIgorLSAgICAgIGVsc2UKKy0gICAgICAgIGdsX2N2X2xpYmNyb2NvX3VzZV9pbmNsdWRlZD15ZXMKKy0gICAgICBmaQorLSAgICBmaQorLSAgXSkKKysgIGlmIHRlc3QgIiRnbF9jdl9saWJjcm9jb191c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgorKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbQ1JPQ09dLCBbbGliY3JvY28tMC42XSkKKysgICAgTElCQ1JPQ089JENST0NPX0xJQlMKKysgICAgTFRMSUJDUk9DTz0kQ1JPQ09fTElCUworKyAgICBJTkNDUk9DTz0kQ1JPQ09fQ0ZMQUdTCisrICBmaQorICAgQUNfU1VCU1QoW0xJQkNST0NPXSkKKyAgIEFDX1NVQlNUKFtMVExJQkNST0NPXSkKKyAgIEFDX1NVQlNUKFtJTkNDUk9DT10pCitkaWZmIC0tZ2l0IGEvbGlidGV4dHN0eWxlL2dudWxpYi1sb2NhbC9tNC9saWJnbGliLm00IGIvbGlidGV4dHN0eWxlL2dudWxpYi1sb2NhbC9tNC9saWJnbGliLm00CitpbmRleCBiZWY2ZmEzLi44ODQxNzU1IDEwMDY0NAorLS0tIGEvbGlidGV4dHN0eWxlL2dudWxpYi1sb2NhbC9tNC9saWJnbGliLm00CisrKysgYi9saWJ0ZXh0c3R5bGUvZ251bGliLWxvY2FsL200L2xpYmdsaWIubTQKK0BAIC0xLDEwNSArMSwzMSBAQAorLSMgbGliZ2xpYi5tNCBzZXJpYWwgNAorLWRubCBDb3B5cmlnaHQgKEMpIDIwMDYtMjAwNywgMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjIGxpYmdsaWIubTQgc2VyaWFsIDMgKGdldHRleHQtMC4xNykKKytkbmwgQ29weXJpZ2h0IChDKSAyMDA2LTIwMDcsIDIwMTUtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KKyBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKKyBkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorIAorIGRubCBGcm9tIEJydW5vIEhhaWJsZS4KKyAKKy1kbmwgZ2xfTElCR0xJQgorLWRubCAgIGdpdmVzIHRoZSB1c2VyIHRoZSBvcHRpb24gdG8gZGVjaWRlIHdoZXRoZXIgdG8gdXNlIHRoZSBpbmNsdWRlZCBvcgorLWRubCAgIGFuIGV4dGVybmFsIGxpYmdsaWIuCistZG5sIGdsX0xJQkdMSUIoRk9SQ0UtSU5DTFVERUQpCistZG5sICAgZm9yY2VzIHRoZSB1c2Ugb2YgdGhlIGluY2x1ZGVkIG9yIGFuIGV4dGVybmFsIGxpYmdsaWIuCisgQUNfREVGVU4oW2dsX0xJQkdMSUJdLAorIFsKKy0gIGlmZWxzZShbJDFdLCAsIFsKKy0gICAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGluY2x1ZGVkIGdsaWIgaXMgcmVxdWVzdGVkXSkKKy0gICAgQUNfQVJHX1dJVEgoW2luY2x1ZGVkLWdsaWJdLAorLSAgICAgIFsgIC0td2l0aC1pbmNsdWRlZC1nbGliICAgIHVzZSB0aGUgZ2xpYjIgaW5jbHVkZWQgaGVyZV0sCistICAgICAgW2dsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWQ9JHdpdGh2YWxdLAorLSAgICAgIFtnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkPW5vXSkKKy0gICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWRdKQorLSAgXSwgW2dsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWQ9JDFdKQorKyAgQUNfUkVRVUlSRShbUEtHX1BST0dfUEtHX0NPTkZJR10pCisrICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgaW5jbHVkZWQgZ2xpYiBpcyByZXF1ZXN0ZWRdKQorKyAgQUNfQVJHX1dJVEgoW2luY2x1ZGVkLWdsaWJdLAorKyAgICBbICAtLXdpdGgtaW5jbHVkZWQtZ2xpYiAgICB1c2UgdGhlIGdsaWIyIGluY2x1ZGVkIGhlcmVdLAorKyAgICBbZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZD0kd2l0aHZhbF0sCisrICAgIFtnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkPW5vXSkKKysgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkXSkKKyAKKyAgIGdsX2N2X2xpYmdsaWJfdXNlX2luY2x1ZGVkPSIkZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZCIKKyAgIExJQkdMSUI9CisgICBMVExJQkdMSUI9CisgICBJTkNHTElCPQorLSAgaWZlbHNlKFskMV0sIFt5ZXNdLCAsIFsKKy0gICAgaWYgdGVzdCAiJGdsX2N2X2xpYmdsaWJfdXNlX2luY2x1ZGVkIiAhPSB5ZXM7IHRoZW4KKy0gICAgICBkbmwgRmlndXJlIG91dCB3aGV0aGVyIHdlIGNhbiB1c2UgYSBwcmVpbnN0YWxsZWQgbGliZ2xpYi0yLjAsIG9yIGhhdmUgdG8gdXNlCistICAgICAgZG5sIHRoZSBpbmNsdWRlZCBvbmUuCistICAgICAgQUNfQ0FDSEVfVkFMKFtnbF9jdl9saWJnbGliXSwgWworLSAgICAgICAgZ2xfY3ZfbGliZ2xpYj1ubworLSAgICAgICAgZ2xfY3ZfTElCR0xJQj0KKy0gICAgICAgIGdsX2N2X0xUTElCR0xJQj0KKy0gICAgICAgIGdsX2N2X0lOQ0dMSUI9CistICAgICAgICBnbF9zYXZlX0xJQlM9IiRMSUJTIgorLSAgICAgICAgZG5sIFNlYXJjaCBmb3IgbGliZ2xpYjIgYW5kIGRlZmluZSBMSUJHTElCXzJfMCwgTFRMSUJHTElCXzJfMCBhbmQKKy0gICAgICAgIGRubCBJTkNHTElCXzJfMCBhY2NvcmRpbmdseS4KKy0gICAgICAgIGRubCBEb24ndCB1c2UgZ2xpYi1jb25maWcgbm9yIHBrZy1jb25maWcsIHNpbmNlIGl0IGRvZXNuJ3Qgd29yayB3aGVuCistICAgICAgICBkbmwgY3Jvc3MtY29tcGlsaW5nIG9yIHdoZW4gdGhlIEMgY29tcGlsZXIgaW4gdXNlIGlzIGRpZmZlcmVudCBmcm9tIHRoZQorLSAgICAgICAgZG5sIG9uZSB0aGF0IGJ1aWx0IHRoZSBsaWJyYXJ5LgorLSAgICAgICAgQUNfTElCX0xJTktGTEFHU19CT0RZKFtnbGliLTIuMF0pCistICAgICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTICRMSUJHTElCXzJfMCIKKy0gICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8Z2xpYi5oPgorLSNpZm5kZWYgR19CRUdJTl9ERUNMUworLWVycm9yIHRoaXMgZ2xpYi5oIGluY2x1ZGVzIGEgZ2xpYmNvbmZpZy5oIGZyb20gYSBnbGliIHZlcnNpb24gMS54CistI2VuZGlmCistXSwKKy0gICAgICAgICAgW2dfc3RyaW5nX25ldyAoImZvbyIpO10sCistICAgICAgICAgIFtnbF9jdl9saWJnbGliPXllcworLSAgICAgICAgICAgZ2xfY3ZfTElCR0xJQj0iJExJQkdMSUJfMl8wIgorLSAgICAgICAgICAgZ2xfY3ZfTFRMSUJHTElCPSIkTFRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgXSkKKy0gICAgICAgIGlmIHRlc3QgIiRnbF9jdl9saWJnbGliIiAhPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgZ2xfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorLSAgICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRJTkNHTElCXzJfMCIKKy0gICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxnbGliLmg+CistI2lmbmRlZiBHX0JFR0lOX0RFQ0xTCistZXJyb3IgdGhpcyBnbGliLmggaW5jbHVkZXMgYSBnbGliY29uZmlnLmggZnJvbSBhIGdsaWIgdmVyc2lvbiAxLngKKy0jZW5kaWYKKy1dLAorLSAgICAgICAgICAgIFtnX3N0cmluZ19uZXcgKCJmb28iKTtdLAorLSAgICAgICAgICAgIFtnbF9jdl9saWJnbGliPXllcworLSAgICAgICAgICAgICBnbF9jdl9MSUJHTElCPSIkTElCR0xJQl8yXzAiCistICAgICAgICAgICAgIGdsX2N2X0xUTElCR0xJQj0iJExUTElCR0xJQl8yXzAiCistICAgICAgICAgICAgIGdsX2N2X0lOQ0dMSUI9IiRJTkNHTElCXzJfMCIKKy0gICAgICAgICAgICBdKQorLSAgICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliZ2xpYiIgIT0geWVzOyB0aGVuCistICAgICAgICAgICAgZG5sIE9mdGVuIHRoZSBpbmNsdWRlIGZpbGVzIGFyZSBpbnN0YWxsZWQgaW4gL3Vzci9pbmNsdWRlL2dsaWItMi4wCistICAgICAgICAgICAgZG5sIGFuZCAvdXNyL2xpYi9nbGliLTIuMC9pbmNsdWRlLgorLSAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRMSUJHTElCXzJfMF9QUkVGSVgiOyB0aGVuCistICAgICAgICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MgLUkkTElCR0xJQl8yXzBfUFJFRklYL2luY2x1ZGUvZ2xpYi0yLjAgLUkkTElCR0xJQl8yXzBfUFJFRklYLyRhY2xfbGliZGlyc3RlbS9nbGliLTIuMC9pbmNsdWRlIgorLSAgICAgICAgICAgICAgQUNfVFJZX0xJTksoWyNpbmNsdWRlIDxnbGliLmg+CistI2lmbmRlZiBHX0JFR0lOX0RFQ0xTCistZXJyb3IgdGhpcyBnbGliLmggaW5jbHVkZXMgYSBnbGliY29uZmlnLmggZnJvbSBhIGdsaWIgdmVyc2lvbiAxLngKKy0jZW5kaWYKKy1dLAorLSAgICAgICAgICAgICAgICBbZ19zdHJpbmdfbmV3ICgiZm9vIik7XSwKKy0gICAgICAgICAgICAgICAgW2dsX2N2X2xpYmdsaWI9eWVzCistICAgICAgICAgICAgICAgICBnbF9jdl9MSUJHTElCPSIkTElCR0xJQl8yXzAiCistICAgICAgICAgICAgICAgICBnbF9jdl9MVExJQkdMSUI9IiRMVExJQkdMSUJfMl8wIgorLSAgICAgICAgICAgICAgICAgZ2xfY3ZfSU5DR0xJQj0iLUkkTElCR0xJQl8yXzBfUFJFRklYL2luY2x1ZGUvZ2xpYi0yLjAgLUkkTElCR0xJQl8yXzBfUFJFRklYLyRhY2xfbGliZGlyc3RlbS9nbGliLTIuMC9pbmNsdWRlIgorLSAgICAgICAgICAgICAgICBdKQorLSAgICAgICAgICAgIGZpCistICAgICAgICAgIGZpCistICAgICAgICAgIENQUEZMQUdTPSIkZ2xfc2F2ZV9DUFBGTEFHUyIKKy0gICAgICAgIGZpCistICAgICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTIgorLSAgICAgIF0pCistICAgICAgQUNfTVNHX0NIRUNLSU5HKFtmb3IgZ2xpYl0pCistICAgICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmdsaWJdKQorLSAgICAgIGlmIHRlc3QgJGdsX2N2X2xpYmdsaWIgPSB5ZXM7IHRoZW4KKy0gICAgICAgIExJQkdMSUI9IiRnbF9jdl9MSUJHTElCIgorLSAgICAgICAgTFRMSUJHTElCPSIkZ2xfY3ZfTFRMSUJHTElCIgorLSAgICAgICAgSU5DR0xJQj0iJGdsX2N2X0lOQ0dMSUIiCistICAgICAgZWxzZQorLSAgICAgICAgZ2xfY3ZfbGliZ2xpYl91c2VfaW5jbHVkZWQ9eWVzCistICAgICAgZmkKKy0gICAgZmkKKy0gIF0pCisrICBpZiB0ZXN0ICIkZ2xfY3ZfbGliZ2xpYl91c2VfaW5jbHVkZWQiICE9IHllczsgdGhlbgorKyAgICBQS0dfQ0hFQ0tfTU9EVUxFUyhbR0xJQl0sIFtnbGliLTIuMF0pCisrICAgIExJQkdMSUI9IiRHTElCX0xJQlMiCisrICAgIExUTElCR0xJQj0iJEdMSUJfTElCUyIKKysgICAgSU5DR0xJQj0iJEdMSUJfQ0ZMQUdTIgorKyAgZmkKKyAgIEFDX1NVQlNUKFtMSUJHTElCXSkKKyAgIEFDX1NVQlNUKFtMVExJQkdMSUJdKQorICAgQUNfU1VCU1QoW0lOQ0dMSUJdKQorZGlmZiAtLWdpdCBhL2xpYnRleHRzdHlsZS9nbnVsaWItbTQvbGliY3JvY28ubTQgYi9saWJ0ZXh0c3R5bGUvZ251bGliLW00L2xpYmNyb2NvLm00CitpbmRleCBiYzUzY2M2Li4xMGIyNDU1IDEwMDY0NAorLS0tIGEvbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJjcm9jby5tNAorKysrIGIvbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJjcm9jby5tNAorQEAgLTEsOTkgKzEsMzQgQEAKKy0jIGxpYmNyb2NvLm00IHNlcmlhbCAzCistZG5sIENvcHlyaWdodCAoQykgMjAwNi0yMDA3LCAyMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgbGliY3JvY28ubTQgc2VyaWFsIDIgKGdldHRleHQtMC4xNykKKytkbmwgQ29weXJpZ2h0IChDKSAyMDA2LCAyMDE1LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisgZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKyAKKyBkbmwgRnJvbSBCcnVubyBIYWlibGUuCisgCistZG5sIGdsX0xJQkNST0NPCistZG5sICAgZ2l2ZXMgdGhlIHVzZXIgdGhlIG9wdGlvbiB0byBkZWNpZGUgd2hldGhlciB0byB1c2UgdGhlIGluY2x1ZGVkIG9yCistZG5sICAgYW4gZXh0ZXJuYWwgbGliY3JvY28uCistZG5sIGdsX0xJQkNST0NPKEZPUkNFLUlOQ0xVREVEKQorLWRubCAgIGZvcmNlcyB0aGUgdXNlIG9mIHRoZSBpbmNsdWRlZCBvciBhbiBleHRlcm5hbCBsaWJjcm9jby4KKyBBQ19ERUZVTihbZ2xfTElCQ1JPQ09dLAorIFsKKy0gIGlmZWxzZShbJDFdLCBbeWVzXSwgLCBbCistICAgIGRubCBsaWJjcm9jbyBkZXBlbmRzIG9uIGxpYmdsaWIuCistICAgIEFDX1JFUVVJUkUoW2dsX0xJQkdMSUJdKQorLSAgXSkKKysgIEFDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUddKQorKyAgZG5sIGxpYmNyb2NvIGRlcGVuZHMgb24gbGliZ2xpYi4KKysgIEFDX1JFUVVJUkUoW2dsX0xJQkdMSUJdKQorIAorLSAgaWZlbHNlKFskMV0sICwgWworLSAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgaW5jbHVkZWQgbGliY3JvY28gaXMgcmVxdWVzdGVkXSkKKy0gICAgQUNfQVJHX1dJVEgoW2luY2x1ZGVkLWxpYmNyb2NvXSwKKy0gICAgICBbICAtLXdpdGgtaW5jbHVkZWQtbGliY3JvY28gIHVzZSB0aGUgbGliY3JvY28gaW5jbHVkZWQgaGVyZV0sCistICAgICAgW2dsX2N2X2xpYmNyb2NvX2ZvcmNlX2luY2x1ZGVkPSR3aXRodmFsXSwKKy0gICAgICBbZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWQ9bm9dKQorLSAgICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWRdKQorLSAgXSwgW2dsX2N2X2xpYmNyb2NvX2ZvcmNlX2luY2x1ZGVkPSQxXSkKKysgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBsaWJjcm9jbyBpcyByZXF1ZXN0ZWRdKQorKyAgQUNfQVJHX1dJVEgoW2luY2x1ZGVkLWxpYmNyb2NvXSwKKysgICAgWyAgLS13aXRoLWluY2x1ZGVkLWxpYmNyb2NvICB1c2UgdGhlIGxpYmNyb2NvIGluY2x1ZGVkIGhlcmVdLAorKyAgICBbZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWQ9JHdpdGh2YWxdLAorKyAgICBbZ2xfY3ZfbGliY3JvY29fZm9yY2VfaW5jbHVkZWQ9bm9dKQorKyAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmNyb2NvX2ZvcmNlX2luY2x1ZGVkXSkKKyAKKyAgIGdsX2N2X2xpYmNyb2NvX3VzZV9pbmNsdWRlZD0iJGdsX2N2X2xpYmNyb2NvX2ZvcmNlX2luY2x1ZGVkIgorICAgTElCQ1JPQ089CisgICBMVExJQkNST0NPPQorICAgSU5DQ1JPQ089CistICBpZmVsc2UoWyQxXSwgW3llc10sICwgWworLSAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliY3JvY29fdXNlX2luY2x1ZGVkIiAhPSB5ZXM7IHRoZW4KKy0gICAgICBkbmwgRmlndXJlIG91dCB3aGV0aGVyIHdlIGNhbiB1c2UgYSBwcmVpbnN0YWxsZWQgbGliY3JvY28tMC42LCBvciBoYXZlIHRvCistICAgICAgZG5sIHVzZSB0aGUgaW5jbHVkZWQgb25lLgorLSAgICAgIEFDX0NBQ0hFX1ZBTChbZ2xfY3ZfbGliY3JvY29dLCBbCistICAgICAgICBnbF9jdl9saWJjcm9jbz1ubworLSAgICAgICAgZ2xfY3ZfTElCQ1JPQ089CistICAgICAgICBnbF9jdl9MVExJQkNST0NPPQorLSAgICAgICAgZ2xfY3ZfSU5DQ1JPQ089CistICAgICAgICBnbF9zYXZlX0xJQlM9IiRMSUJTIgorLSAgICAgICAgZG5sIFNlYXJjaCBmb3IgbGliY3JvY28gYW5kIGRlZmluZSBMSUJDUk9DT18wXzYsIExUTElCQ1JPQ09fMF82IGFuZAorLSAgICAgICAgZG5sIElOQ0NST0NPXzBfNiBhY2NvcmRpbmdseS4KKy0gICAgICAgIGRubCBEb24ndCB1c2UgY3JvY28tMC42LWNvbmZpZyBub3IgcGtnLWNvbmZpZywgc2luY2UgaXQgZG9lc24ndCB3b3JrIHdoZW4KKy0gICAgICAgIGRubCBjcm9zcy1jb21waWxpbmcgb3Igd2hlbiB0aGUgQyBjb21waWxlciBpbiB1c2UgaXMgZGlmZmVyZW50IGZyb20gdGhlCistICAgICAgICBkbmwgb25lIHRoYXQgYnVpbHQgdGhlIGxpYnJhcnkuCistICAgICAgICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoW2Nyb2NvLTAuNl0sIFtnbGliLTIuMF0pCistICAgICAgICBMSUJTPSIkZ2xfc2F2ZV9MSUJTICRMSUJDUk9DT18wXzYiCistICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGxpYmNyb2NvLWNvbmZpZy5oPl0sCistICAgICAgICAgIFtjb25zdCBjaGFyICp2ZXJzaW9uID0gTElCQ1JPQ09fVkVSU0lPTjsgcmV0dXJuICF2ZXJzaW9uO10sCistICAgICAgICAgIFtnbF9jdl9saWJjcm9jbz15ZXMKKy0gICAgICAgICAgIGdsX2N2X0xJQkNST0NPPSIkTElCQ1JPQ09fMF82IgorLSAgICAgICAgICAgZ2xfY3ZfTFRMSUJDUk9DTz0iJExUTElCQ1JPQ09fMF82IgorLSAgICAgICAgICBdKQorLSAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYmNyb2NvIiAhPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgZ2xfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorLSAgICAgICAgICBDUFBGTEFHUz0iJENQUEZMQUdTICRJTkNDUk9DT18wXzYiCistICAgICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGliY3JvY28tY29uZmlnLmg+XSwKKy0gICAgICAgICAgICBbY29uc3QgY2hhciAqdmVyc2lvbiA9IExJQkNST0NPX1ZFUlNJT047IHJldHVybiAhdmVyc2lvbjtdLAorLSAgICAgICAgICAgIFtnbF9jdl9saWJjcm9jbz15ZXMKKy0gICAgICAgICAgICAgZ2xfY3ZfTElCQ1JPQ089IiRMSUJDUk9DT18wXzYiCistICAgICAgICAgICAgIGdsX2N2X0xUTElCQ1JPQ089IiRMVExJQkNST0NPXzBfNiIKKy0gICAgICAgICAgICAgZ2xfY3ZfSU5DQ1JPQ089IiRJTkNDUk9DT18wXzYiCistICAgICAgICAgICAgXSkKKy0gICAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYmNyb2NvIiAhPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgICBkbmwgT2Z0ZW4gdGhlIGluY2x1ZGUgZmlsZXMgYXJlIGluc3RhbGxlZCBpbgorLSAgICAgICAgICAgIGRubCAvdXNyL2luY2x1ZGUvbGliY3JvY28tMC42L2xpYmNyb2NvLgorLSAgICAgICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8bGliY3JvY28tMC42L2xpYmNyb2NvL2xpYmNyb2NvLWNvbmZpZy5oPl0sCistICAgICAgICAgICAgICBbY29uc3QgY2hhciAqdmVyc2lvbiA9IExJQkNST0NPX1ZFUlNJT047IHJldHVybiAhdmVyc2lvbjtdLAorLSAgICAgICAgICAgICAgW2dsX0FCU09MVVRFX0hFQURFUihbbGliY3JvY28tMC42L2xpYmNyb2NvL2xpYmNyb2NvLWNvbmZpZy5oXSkKKy0gICAgICAgICAgICAgICBsaWJjcm9jb19pbmNsdWRlX2Rpcj1gZWNobyAiJGdsX2N2X2Fic29sdXRlX2xpYmNyb2NvXzBfNl9saWJjcm9jb19saWJjcm9jb19jb25maWdfaCIgfCBzZWQgLWUgJ3MsLmxpYmNyb2NvLWNvbmZpZ1wuaCQsLCdgCistICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJGxpYmNyb2NvX2luY2x1ZGVfZGlyIjsgdGhlbgorLSAgICAgICAgICAgICAgICAgZ2xfY3ZfbGliY3JvY289eWVzCistICAgICAgICAgICAgICAgICBnbF9jdl9MSUJDUk9DTz0iJExJQkNST0NPXzBfNiIKKy0gICAgICAgICAgICAgICAgIGdsX2N2X0xUTElCQ1JPQ089IiRMVExJQkNST0NPXzBfNiIKKy0gICAgICAgICAgICAgICAgIGdsX2N2X0lOQ0NST0NPPSItSSRsaWJjcm9jb19pbmNsdWRlX2RpciIKKy0gICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgICAgXSkKKy0gICAgICAgICAgZmkKKy0gICAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIgorLSAgICAgICAgZmkKKy0gICAgICAgIExJQlM9IiRnbF9zYXZlX0xJQlMiCistICAgICAgXSkKKy0gICAgICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBsaWJjcm9jb10pCistICAgICAgQUNfTVNHX1JFU1VMVChbJGdsX2N2X2xpYmNyb2NvXSkKKy0gICAgICBpZiB0ZXN0ICRnbF9jdl9saWJjcm9jbyA9IHllczsgdGhlbgorLSAgICAgICAgTElCQ1JPQ089IiRnbF9jdl9MSUJDUk9DTyIKKy0gICAgICAgIExUTElCQ1JPQ089IiRnbF9jdl9MVExJQkNST0NPIgorLSAgICAgICAgSU5DQ1JPQ089IiRnbF9jdl9JTkNDUk9DTyIKKy0gICAgICBlbHNlCistICAgICAgICBnbF9jdl9saWJjcm9jb191c2VfaW5jbHVkZWQ9eWVzCistICAgICAgZmkKKy0gICAgZmkKKy0gIF0pCisrICBpZiB0ZXN0ICIkZ2xfY3ZfbGliY3JvY29fdXNlX2luY2x1ZGVkIiAhPSB5ZXM7IHRoZW4KKysgICAgUEtHX0NIRUNLX01PRFVMRVMoW0NST0NPXSwgW2xpYmNyb2NvLTAuNl0pCisrICAgIExJQkNST0NPPSRDUk9DT19MSUJTCisrICAgIExUTElCQ1JPQ089JENST0NPX0xJQlMKKysgICAgSU5DQ1JPQ089JENST0NPX0NGTEFHUworKyAgZmkKKyAgIEFDX1NVQlNUKFtMSUJDUk9DT10pCisgICBBQ19TVUJTVChbTFRMSUJDUk9DT10pCisgICBBQ19TVUJTVChbSU5DQ1JPQ09dKQorZGlmZiAtLWdpdCBhL2xpYnRleHRzdHlsZS9nbnVsaWItbTQvbGliZ2xpYi5tNCBiL2xpYnRleHRzdHlsZS9nbnVsaWItbTQvbGliZ2xpYi5tNAoraW5kZXggYmVmNmZhMy4uODg0MTc1NSAxMDA2NDQKKy0tLSBhL2xpYnRleHRzdHlsZS9nbnVsaWItbTQvbGliZ2xpYi5tNAorKysrIGIvbGlidGV4dHN0eWxlL2dudWxpYi1tNC9saWJnbGliLm00CitAQCAtMSwxMDUgKzEsMzEgQEAKKy0jIGxpYmdsaWIubTQgc2VyaWFsIDQKKy1kbmwgQ29weXJpZ2h0IChDKSAyMDA2LTIwMDcsIDIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyBsaWJnbGliLm00IHNlcmlhbCAzIChnZXR0ZXh0LTAuMTcpCisrZG5sIENvcHlyaWdodCAoQykgMjAwNi0yMDA3LCAyMDE1LTIwMTYgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisgZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCisgZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKyAKKyBkbmwgRnJvbSBCcnVubyBIYWlibGUuCisgCistZG5sIGdsX0xJQkdMSUIKKy1kbmwgICBnaXZlcyB0aGUgdXNlciB0aGUgb3B0aW9uIHRvIGRlY2lkZSB3aGV0aGVyIHRvIHVzZSB0aGUgaW5jbHVkZWQgb3IKKy1kbmwgICBhbiBleHRlcm5hbCBsaWJnbGliLgorLWRubCBnbF9MSUJHTElCKEZPUkNFLUlOQ0xVREVEKQorLWRubCAgIGZvcmNlcyB0aGUgdXNlIG9mIHRoZSBpbmNsdWRlZCBvciBhbiBleHRlcm5hbCBsaWJnbGliLgorIEFDX0RFRlVOKFtnbF9MSUJHTElCXSwKKyBbCistICBpZmVsc2UoWyQxXSwgLCBbCistICAgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBpbmNsdWRlZCBnbGliIGlzIHJlcXVlc3RlZF0pCistICAgIEFDX0FSR19XSVRIKFtpbmNsdWRlZC1nbGliXSwKKy0gICAgICBbICAtLXdpdGgtaW5jbHVkZWQtZ2xpYiAgICB1c2UgdGhlIGdsaWIyIGluY2x1ZGVkIGhlcmVdLAorLSAgICAgIFtnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkPSR3aXRodmFsXSwKKy0gICAgICBbZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZD1ub10pCistICAgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkXSkKKy0gIF0sIFtnbF9jdl9saWJnbGliX2ZvcmNlX2luY2x1ZGVkPSQxXSkKKysgIEFDX1JFUVVJUkUoW1BLR19QUk9HX1BLR19DT05GSUddKQorKyAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIGluY2x1ZGVkIGdsaWIgaXMgcmVxdWVzdGVkXSkKKysgIEFDX0FSR19XSVRIKFtpbmNsdWRlZC1nbGliXSwKKysgICAgWyAgLS13aXRoLWluY2x1ZGVkLWdsaWIgICAgdXNlIHRoZSBnbGliMiBpbmNsdWRlZCBoZXJlXSwKKysgICAgW2dsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWQ9JHdpdGh2YWxdLAorKyAgICBbZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZD1ub10pCisrICBBQ19NU0dfUkVTVUxUKFskZ2xfY3ZfbGliZ2xpYl9mb3JjZV9pbmNsdWRlZF0pCisgCisgICBnbF9jdl9saWJnbGliX3VzZV9pbmNsdWRlZD0iJGdsX2N2X2xpYmdsaWJfZm9yY2VfaW5jbHVkZWQiCisgICBMSUJHTElCPQorICAgTFRMSUJHTElCPQorICAgSU5DR0xJQj0KKy0gIGlmZWxzZShbJDFdLCBbeWVzXSwgLCBbCistICAgIGlmIHRlc3QgIiRnbF9jdl9saWJnbGliX3VzZV9pbmNsdWRlZCIgIT0geWVzOyB0aGVuCistICAgICAgZG5sIEZpZ3VyZSBvdXQgd2hldGhlciB3ZSBjYW4gdXNlIGEgcHJlaW5zdGFsbGVkIGxpYmdsaWItMi4wLCBvciBoYXZlIHRvIHVzZQorLSAgICAgIGRubCB0aGUgaW5jbHVkZWQgb25lLgorLSAgICAgIEFDX0NBQ0hFX1ZBTChbZ2xfY3ZfbGliZ2xpYl0sIFsKKy0gICAgICAgIGdsX2N2X2xpYmdsaWI9bm8KKy0gICAgICAgIGdsX2N2X0xJQkdMSUI9CistICAgICAgICBnbF9jdl9MVExJQkdMSUI9CistICAgICAgICBnbF9jdl9JTkNHTElCPQorLSAgICAgICAgZ2xfc2F2ZV9MSUJTPSIkTElCUyIKKy0gICAgICAgIGRubCBTZWFyY2ggZm9yIGxpYmdsaWIyIGFuZCBkZWZpbmUgTElCR0xJQl8yXzAsIExUTElCR0xJQl8yXzAgYW5kCistICAgICAgICBkbmwgSU5DR0xJQl8yXzAgYWNjb3JkaW5nbHkuCistICAgICAgICBkbmwgRG9uJ3QgdXNlIGdsaWItY29uZmlnIG5vciBwa2ctY29uZmlnLCBzaW5jZSBpdCBkb2Vzbid0IHdvcmsgd2hlbgorLSAgICAgICAgZG5sIGNyb3NzLWNvbXBpbGluZyBvciB3aGVuIHRoZSBDIGNvbXBpbGVyIGluIHVzZSBpcyBkaWZmZXJlbnQgZnJvbSB0aGUKKy0gICAgICAgIGRubCBvbmUgdGhhdCBidWlsdCB0aGUgbGlicmFyeS4KKy0gICAgICAgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbZ2xpYi0yLjBdKQorLSAgICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyAkTElCR0xJQl8yXzAiCistICAgICAgICBBQ19UUllfTElOSyhbI2luY2x1ZGUgPGdsaWIuaD4KKy0jaWZuZGVmIEdfQkVHSU5fREVDTFMKKy1lcnJvciB0aGlzIGdsaWIuaCBpbmNsdWRlcyBhIGdsaWJjb25maWcuaCBmcm9tIGEgZ2xpYiB2ZXJzaW9uIDEueAorLSNlbmRpZgorLV0sCistICAgICAgICAgIFtnX3N0cmluZ19uZXcgKCJmb28iKTtdLAorLSAgICAgICAgICBbZ2xfY3ZfbGliZ2xpYj15ZXMKKy0gICAgICAgICAgIGdsX2N2X0xJQkdMSUI9IiRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgIGdsX2N2X0xUTElCR0xJQj0iJExUTElCR0xJQl8yXzAiCistICAgICAgICAgIF0pCistICAgICAgICBpZiB0ZXN0ICIkZ2xfY3ZfbGliZ2xpYiIgIT0geWVzOyB0aGVuCistICAgICAgICAgIGdsX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKy0gICAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkSU5DR0xJQl8yXzAiCistICAgICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8Z2xpYi5oPgorLSNpZm5kZWYgR19CRUdJTl9ERUNMUworLWVycm9yIHRoaXMgZ2xpYi5oIGluY2x1ZGVzIGEgZ2xpYmNvbmZpZy5oIGZyb20gYSBnbGliIHZlcnNpb24gMS54CistI2VuZGlmCistXSwKKy0gICAgICAgICAgICBbZ19zdHJpbmdfbmV3ICgiZm9vIik7XSwKKy0gICAgICAgICAgICBbZ2xfY3ZfbGliZ2xpYj15ZXMKKy0gICAgICAgICAgICAgZ2xfY3ZfTElCR0xJQj0iJExJQkdMSUJfMl8wIgorLSAgICAgICAgICAgICBnbF9jdl9MVExJQkdMSUI9IiRMVExJQkdMSUJfMl8wIgorLSAgICAgICAgICAgICBnbF9jdl9JTkNHTElCPSIkSU5DR0xJQl8yXzAiCistICAgICAgICAgICAgXSkKKy0gICAgICAgICAgaWYgdGVzdCAiJGdsX2N2X2xpYmdsaWIiICE9IHllczsgdGhlbgorLSAgICAgICAgICAgIGRubCBPZnRlbiB0aGUgaW5jbHVkZSBmaWxlcyBhcmUgaW5zdGFsbGVkIGluIC91c3IvaW5jbHVkZS9nbGliLTIuMAorLSAgICAgICAgICAgIGRubCBhbmQgL3Vzci9saWIvZ2xpYi0yLjAvaW5jbHVkZS4KKy0gICAgICAgICAgICBpZiB0ZXN0IC1uICIkTElCR0xJQl8yXzBfUFJFRklYIjsgdGhlbgorLSAgICAgICAgICAgICAgQ1BQRkxBR1M9IiRnbF9zYXZlX0NQUEZMQUdTIC1JJExJQkdMSUJfMl8wX1BSRUZJWC9pbmNsdWRlL2dsaWItMi4wIC1JJExJQkdMSUJfMl8wX1BSRUZJWC8kYWNsX2xpYmRpcnN0ZW0vZ2xpYi0yLjAvaW5jbHVkZSIKKy0gICAgICAgICAgICAgIEFDX1RSWV9MSU5LKFsjaW5jbHVkZSA8Z2xpYi5oPgorLSNpZm5kZWYgR19CRUdJTl9ERUNMUworLWVycm9yIHRoaXMgZ2xpYi5oIGluY2x1ZGVzIGEgZ2xpYmNvbmZpZy5oIGZyb20gYSBnbGliIHZlcnNpb24gMS54CistI2VuZGlmCistXSwKKy0gICAgICAgICAgICAgICAgW2dfc3RyaW5nX25ldyAoImZvbyIpO10sCistICAgICAgICAgICAgICAgIFtnbF9jdl9saWJnbGliPXllcworLSAgICAgICAgICAgICAgICAgZ2xfY3ZfTElCR0xJQj0iJExJQkdMSUJfMl8wIgorLSAgICAgICAgICAgICAgICAgZ2xfY3ZfTFRMSUJHTElCPSIkTFRMSUJHTElCXzJfMCIKKy0gICAgICAgICAgICAgICAgIGdsX2N2X0lOQ0dMSUI9Ii1JJExJQkdMSUJfMl8wX1BSRUZJWC9pbmNsdWRlL2dsaWItMi4wIC1JJExJQkdMSUJfMl8wX1BSRUZJWC8kYWNsX2xpYmRpcnN0ZW0vZ2xpYi0yLjAvaW5jbHVkZSIKKy0gICAgICAgICAgICAgICAgXSkKKy0gICAgICAgICAgICBmaQorLSAgICAgICAgICBmaQorLSAgICAgICAgICBDUFBGTEFHUz0iJGdsX3NhdmVfQ1BQRkxBR1MiCistICAgICAgICBmaQorLSAgICAgICAgTElCUz0iJGdsX3NhdmVfTElCUyIKKy0gICAgICBdKQorLSAgICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGdsaWJdKQorLSAgICAgIEFDX01TR19SRVNVTFQoWyRnbF9jdl9saWJnbGliXSkKKy0gICAgICBpZiB0ZXN0ICRnbF9jdl9saWJnbGliID0geWVzOyB0aGVuCistICAgICAgICBMSUJHTElCPSIkZ2xfY3ZfTElCR0xJQiIKKy0gICAgICAgIExUTElCR0xJQj0iJGdsX2N2X0xUTElCR0xJQiIKKy0gICAgICAgIElOQ0dMSUI9IiRnbF9jdl9JTkNHTElCIgorLSAgICAgIGVsc2UKKy0gICAgICAgIGdsX2N2X2xpYmdsaWJfdXNlX2luY2x1ZGVkPXllcworLSAgICAgIGZpCistICAgIGZpCistICBdKQorKyAgaWYgdGVzdCAiJGdsX2N2X2xpYmdsaWJfdXNlX2luY2x1ZGVkIiAhPSB5ZXM7IHRoZW4KKysgICAgUEtHX0NIRUNLX01PRFVMRVMoW0dMSUJdLCBbZ2xpYi0yLjBdKQorKyAgICBMSUJHTElCPSIkR0xJQl9MSUJTIgorKyAgICBMVExJQkdMSUI9IiRHTElCX0xJQlMiCisrICAgIElOQ0dMSUI9IiRHTElCX0NGTEFHUyIKKysgIGZpCisgICBBQ19TVUJTVChbTElCR0xJQl0pCisgICBBQ19TVUJTVChbTFRMSUJHTElCXSkKKyAgIEFDX1NVQlNUKFtJTkNHTElCXSkKK2RpZmYgLS1naXQgYS9saWJ0ZXh0c3R5bGUvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0uYyBiL2xpYnRleHRzdHlsZS9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5jCitpbmRleCAzNjc1YjVmLi44MTFlNTQ2IDEwMDY0NAorLS0tIGEvbGlidGV4dHN0eWxlL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLmMKKysrKyBiL2xpYnRleHRzdHlsZS9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5jCitAQCAtMjgsMTUgKzI4LDE1IEBACisgCisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorIAorLSNpbmNsdWRlIDxjci1vbS1wYXJzZXIuaD4KKy0jaW5jbHVkZSA8Y3Itc2VsLWVuZy5oPgorLSNpbmNsdWRlIDxjci1zdHlsZS5oPgorLSNpbmNsdWRlIDxjci1yZ2IuaD4KKysjaW5jbHVkZSA8bGliY3JvY28vY3Itb20tcGFyc2VyLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXNlbC1lbmcuaD4KKysjaW5jbHVkZSA8bGliY3JvY28vY3Itc3R5bGUuaD4KKysjaW5jbHVkZSA8bGliY3JvY28vY3ItcmdiLmg+CisgLyogPGNyLWZvbnRzLmg+IGhhcyBhIGJyb2tlbiBkb3VibGUtaW5jbHVzaW9uIGd1YXJkIGluIGxpYmNyb2NvLTAuNi4xLiAgKi8KKyAjaWZuZGVmIF9fQ1JfRk9OVFNfSF9fCistIyBpbmNsdWRlIDxjci1mb250cy5oPgorKyMgaW5jbHVkZSA8bGliY3JvY28vY3ItZm9udHMuaD4KKyAjZW5kaWYKKy0jaW5jbHVkZSA8Y3Itc3RyaW5nLmg+CisrI2luY2x1ZGUgPGxpYmNyb2NvL2NyLXN0cmluZy5oPgorIAorICNpbmNsdWRlICJ0ZXJtLW9zdHJlYW0uaCIKKyAjaW5jbHVkZSAiaGFzaC5oIgorZGlmZiAtLWdpdCBhL2xpYnRleHRzdHlsZS9saWIvdGVybS1zdHlsZWQtb3N0cmVhbS5vby5jIGIvbGlidGV4dHN0eWxlL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMKK2luZGV4IDJjZmQ0YTguLmQ0MmM4YjQgMTAwNjQ0CistLS0gYS9saWJ0ZXh0c3R5bGUvbGliL3Rlcm0tc3R5bGVkLW9zdHJlYW0ub28uYworKysrIGIvbGlidGV4dHN0eWxlL2xpYi90ZXJtLXN0eWxlZC1vc3RyZWFtLm9vLmMKK0BAIC0yMiwxNSArMjIsMTUgQEAKKyAKKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgCistI2luY2x1ZGUgPGNyLW9tLXBhcnNlci5oPgorLSNpbmNsdWRlIDxjci1zZWwtZW5nLmg+CistI2luY2x1ZGUgPGNyLXN0eWxlLmg+CistI2luY2x1ZGUgPGNyLXJnYi5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1vbS1wYXJzZXIuaD4KKysjaW5jbHVkZSA8bGliY3JvY28vY3Itc2VsLWVuZy5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1zdHlsZS5oPgorKyNpbmNsdWRlIDxsaWJjcm9jby9jci1yZ2IuaD4KKyAvKiA8Y3ItZm9udHMuaD4gaGFzIGEgYnJva2VuIGRvdWJsZS1pbmNsdXNpb24gZ3VhcmQgaW4gbGliY3JvY28tMC42LjEuICAqLworICNpZm5kZWYgX19DUl9GT05UU19IX18KKy0jIGluY2x1ZGUgPGNyLWZvbnRzLmg+CisrIyBpbmNsdWRlIDxsaWJjcm9jby9jci1mb250cy5oPgorICNlbmRpZgorLSNpbmNsdWRlIDxjci1zdHJpbmcuaD4KKysjaW5jbHVkZSA8bGliY3JvY28vY3Itc3RyaW5nLmg+CisgCisgI2luY2x1ZGUgInRlcm0tb3N0cmVhbS5oIgorICNpbmNsdWRlICJoYXNoLmgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xLzAwMDEtUEFUQ0gtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvMDAwMS1QQVRDSC1EaXNhYmxlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWVmMmE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvMDAwMS1QQVRDSC1EaXNhYmxlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotW1BBVENIXSBEaXNhYmxlIHRoZSB0ZXN0IHRvIGNvbnZlcnQgZXVjLWpwCi0KLVJlbW92ZSB0aGUgdGVzdCAiVGVzdCBhZ2FpbnN0IEhQLVVYIDExLjExIGJ1ZzoKLU5vIGNvbnZlcnRlciBmcm9tIEVVQy1KUCB0byBVVEYtOCBpcyBwcm92aWRlZCIKLXNpbmNlIHdlIGRvbid0IHN1cHBvcnQgSFAtVVggYW5kIGlmIHRoZSBldWMtanAgaXMgbm90Ci1pbnN0YWxsZWQgb24gdGhlIGhvc3QsIHRoZSBkZXBlbmRlbmNlIHdpbGwgYmUgYnVpbHQgd2l0aG91dAotaWNvbnYgc3VwcG9ydCBhbmQgd2lsbCBjYXVzZSBndWlsZS1uYXRpdmUgYnVpbGRpbmcgZmFpbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogUm95IExpIDxyb25ncWluZy5saUB3aW5kcml2ZXIuY29tPgotLS0tCi0gaWNvbnYubTQgfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvaWNvbnYubTQgYi9pY29udi5tNAotaW5kZXggNGUzNzM2My4uMzVmNTRiZCAxMDA2NDQKLS0tLSBhL2ljb252Lm00Ci0rKysgYi9pY29udi5tNAotQEAgLTE2NSw2ICsxNjUsNyBAQCBBQ19ERUZVTihbQU1fSUNPTlZfTElOS10sCi0gICAgICAgfQotICAgfQotICNlbmRpZgotKyNpZiAwCi0gICAvKiBUZXN0IGFnYWluc3QgSFAtVVggMTEuMTEgYnVnOiBObyBjb252ZXJ0ZXIgZnJvbSBFVUMtSlAgdG8gVVRGLTggaXMKLSAgICAgIHByb3ZpZGVkLiAgKi8KLSAgIGlmICgvKiBUcnkgc3RhbmRhcmRpemVkIG5hbWVzLiAgKi8KLUBAIC0xNzYsNiArMTc3LDcgQEAgQUNfREVGVU4oW0FNX0lDT05WX0xJTktdLAotICAgICAgIC8qIFRyeSBIUC1VWCBuYW1lcy4gICovCi0gICAgICAgJiYgaWNvbnZfb3BlbiAoInV0ZjgiLCAiZXVjSlAiKSA9PSAoaWNvbnZfdCkoLTEpKQotICAgICByZXN1bHQgfD0gMTY7Ci0rI2VuZGlmCi0gICByZXR1cm4gcmVzdWx0OwotIF1dKV0sCi0gICAgICAgICAgIFthbV9jdl9mdW5jX2ljb252X3dvcmtzPXllc10sICwKLS0tIAotMi4wLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS9NYWtlZmlsZS5pbi5pbiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvTWFrZWZpbGUuaW4uaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM4YzI5M2QuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS9NYWtlZmlsZS5pbi5pbgorKysgL2Rldi9udWxsCkBAIC0xLDQ4MyArMCwwIEBACi0jIE1ha2VmaWxlIGZvciBQTyBkaXJlY3RvcnkgaW4gYW55IHBhY2thZ2UgdXNpbmcgR05VIGdldHRleHQuCi0jIENvcHlyaWdodCAoQykgMTk5NS0xOTk3LCAyMDAwLTIwMDcsIDIwMDktMjAxMCBieSBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBnbnUuYWkubWl0LmVkdT4KLSMKLSMgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKLSMgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0Ci0jIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLAotIyB3aXRob3V0IGFueSB3YXJyYW50eS4KLSMKLSMgT3JpZ2luOiBnZXR0ZXh0LTAuMTkuOAotR0VUVEVYVF9NQUNST19WRVJTSU9OID0gMC4xOQotCi1QQUNLQUdFID0gQFBBQ0tBR0VACi1WRVJTSU9OID0gQFZFUlNJT05ACi1QQUNLQUdFX0JVR1JFUE9SVCA9IEBQQUNLQUdFX0JVR1JFUE9SVEAKLQotU0VEID0gQFNFREAKLVNIRUxMID0gL2Jpbi9zaAotQFNFVF9NQUtFQAotCi1zcmNkaXIgPSBAc3JjZGlyQAotdG9wX3NyY2RpciA9IEB0b3Bfc3JjZGlyQAotVlBBVEggPSBAc3JjZGlyQAotCi1wcmVmaXggPSBAcHJlZml4QAotZXhlY19wcmVmaXggPSBAZXhlY19wcmVmaXhACi1kYXRhcm9vdGRpciA9IEBkYXRhcm9vdGRpckAKLWRhdGFkaXIgPSBAZGF0YWRpckAKLWxvY2FsZWRpciA9IEBsb2NhbGVkaXJACi1nZXR0ZXh0c3JjZGlyID0gJChkYXRhZGlyKS9nZXR0ZXh0L3BvCi0KLUlOU1RBTEwgPSBASU5TVEFMTEAKLUlOU1RBTExfREFUQSA9IEBJTlNUQUxMX0RBVEFACi0KLSMgV2UgdXNlICQobWtkaXJfcCkuCi0jIEluIGF1dG9tYWtlIDw9IDEuOS54LCAkKG1rZGlyX3ApIGlzIGRlZmluZWQgZWl0aGVyIGFzICJta2RpciAtcCAtLSIgb3IgYXMKLSMgIiQobWtpbnN0YWxsZGlycykiIG9yIGFzICIkKGluc3RhbGxfc2gpIC1kIi4gRm9yIHRoZXNlIGF1dG9tYWtlIHZlcnNpb25zLAotIyBAaW5zdGFsbF9zaEAgZG9lcyBub3Qgc3RhcnQgd2l0aCAkKFNIRUxMKSwgc28gd2UgYWRkIGl0LgotIyBJbiBhdXRvbWFrZSA+PSAxLjEwLCBAbWtkaXJfcEAgaXMgZGVyaXZlZCBmcm9tICR7TUtESVJfUH0sIHdoaWNoIGlzIGRlZmluZWQKLSMgZWl0aGVyIGFzICIvcGF0aC90by9ta2RpciAtcCIgb3IgIi4uLi9pbnN0YWxsLXNoIC1jIC1kIi4gRm9yIHRoZXNlIGF1dG9tYWtlCi0jIHZlcnNpb25zLCAkKG1raW5zdGFsbGRpcnMpIGFuZCAkKGluc3RhbGxfc2gpIGFyZSB1bnVzZWQuCi1ta2luc3RhbGxkaXJzID0gJChTSEVMTCkgQGluc3RhbGxfc2hAIC1kCi1pbnN0YWxsX3NoID0gJChTSEVMTCkgQGluc3RhbGxfc2hACi1NS0RJUl9QID0gQE1LRElSX1BACi1ta2Rpcl9wID0gQG1rZGlyX3BACi0KLSMgV2hlbiBidWlsZGluZyBnZXR0ZXh0LXRvb2xzLCB3ZSBwcmVmZXIgdG8gdXNlIHRoZSBidWlsdCBwcm9ncmFtcwotIyByYXRoZXIgdGhhbiBpbnN0YWxsZWQgcHJvZ3JhbXMuICBIb3dldmVyLCB3ZSBjYW4ndCBkbyB0aGF0IHdoZW4gd2UKLSMgYXJlIGNyb3NzIGNvbXBpbGluZy4KLUNST1NTX0NPTVBJTElORyA9IEBDUk9TU19DT01QSUxJTkdACi0KLUdNU0dGTVRfID0gQEdNU0dGTVRACi1HTVNHRk1UX25vID0gQEdNU0dGTVRACi1HTVNHRk1UX3llcyA9IEBHTVNHRk1UXzAxNUAKLUdNU0dGTVQgPSAkKEdNU0dGTVRfJChVU0VfTVNHQ1RYVCkpCi1NU0dGTVRfID0gQE1TR0ZNVEAKLU1TR0ZNVF9ubyA9IEBNU0dGTVRACi1NU0dGTVRfeWVzID0gQE1TR0ZNVF8wMTVACi1NU0dGTVQgPSAkKE1TR0ZNVF8kKFVTRV9NU0dDVFhUKSkKLVhHRVRURVhUXyA9IEBYR0VUVEVYVEAKLVhHRVRURVhUX25vID0gQFhHRVRURVhUQAotWEdFVFRFWFRfeWVzID0gQFhHRVRURVhUXzAxNUAKLVhHRVRURVhUID0gJChYR0VUVEVYVF8kKFVTRV9NU0dDVFhUKSkKLU1TR01FUkdFID0gbXNnbWVyZ2UKLU1TR01FUkdFX1VQREFURSA9IEBNU0dNRVJHRUAgLS11cGRhdGUKLU1TR0lOSVQgPSBtc2dpbml0Ci1NU0dDT05WID0gbXNnY29udgotTVNHRklMVEVSID0gbXNnZmlsdGVyCi0KLVBPRklMRVMgPSBAUE9GSUxFU0AKLUdNT0ZJTEVTID0gQEdNT0ZJTEVTQAotVVBEQVRFUE9GSUxFUyA9IEBVUERBVEVQT0ZJTEVTQAotRFVNTVlQT0ZJTEVTID0gQERVTU1ZUE9GSUxFU0AKLURJU1RGSUxFUy5jb21tb24gPSBNYWtlZmlsZS5pbi5pbiByZW1vdmUtcG90Y2RhdGUuc2luIFwKLSQoRElTVEZJTEVTLmNvbW1vbi5leHRyYTEpICQoRElTVEZJTEVTLmNvbW1vbi5leHRyYTIpICQoRElTVEZJTEVTLmNvbW1vbi5leHRyYTMpCi1ESVNURklMRVMgPSAkKERJU1RGSUxFUy5jb21tb24pIE1ha2V2YXJzIFBPVEZJTEVTLmluIFwKLSQoUE9GSUxFUykgJChHTU9GSUxFUykgXAotJChESVNURklMRVMuZXh0cmExKSAkKERJU1RGSUxFUy5leHRyYTIpICQoRElTVEZJTEVTLmV4dHJhMykKLQotUE9URklMRVMgPSBcCi0KLUNBVEFMT0dTID0gQENBVEFMT0dTQAotCi1QT0ZJTEVTREVQU18gPSAkKHNyY2RpcikvJChET01BSU4pLnBvdAotUE9GSUxFU0RFUFNfeWVzID0gJChQT0ZJTEVTREVQU18pCi1QT0ZJTEVTREVQU19ubyA9Ci1QT0ZJTEVTREVQUyA9ICQoUE9GSUxFU0RFUFNfJChQT19ERVBFTkRTX09OX1BPVCkpCi0KLURJU1RGSUxFU0RFUFNfID0gdXBkYXRlLXBvCi1ESVNURklMRVNERVBTX3llcyA9ICQoRElTVEZJTEVTREVQU18pCi1ESVNURklMRVNERVBTX25vID0KLURJU1RGSUxFU0RFUFMgPSAkKERJU1RGSUxFU0RFUFNfJChESVNUX0RFUEVORFNfT05fVVBEQVRFX1BPKSkKLQotIyBNYWtldmFycyBnZXRzIGluc2VydGVkIGhlcmUuIChEb24ndCByZW1vdmUgdGhpcyBsaW5lISkKLQotLlNVRkZJWEVTOgotLlNVRkZJWEVTOiAucG8gLmdtbyAubW8gLnNlZCAuc2luIC5ub3AgLnBvLWNyZWF0ZSAucG8tdXBkYXRlCi0KLS5wby5tbzoKLQlAZWNobyAiJChNU0dGTVQpIC1jIC1vICRAICQ8IjsgXAotCSQoTVNHRk1UKSAtYyAtbyB0LSRAICQ8ICYmIG12IHQtJEAgJEAKLQotLnBvLmdtbzoKLQlAbGFuZz1gZWNobyAkKiB8IHNlZCAtZSAncywuKi8sLCdgOyBcCi0JdGVzdCAiJChzcmNkaXIpIiA9IC4gJiYgY2RjbWQ9IiIgfHwgY2RjbWQ9ImNkICQoc3JjZGlyKSAmJiAiOyBcCi0JZWNobyAiJCR7Y2RjbWR9cm0gLWYgJCR7bGFuZ30uZ21vICYmICQoR01TR0ZNVCkgLWMgLS1zdGF0aXN0aWNzIC0tdmVyYm9zZSAtbyAkJHtsYW5nfS5nbW8gJCR7bGFuZ30ucG8iOyBcCi0JY2QgJChzcmNkaXIpICYmIHJtIC1mICQke2xhbmd9LmdtbyAmJiAkKEdNU0dGTVQpIC1jIC0tc3RhdGlzdGljcyAtLXZlcmJvc2UgLW8gdC0kJHtsYW5nfS5nbW8gJCR7bGFuZ30ucG8gJiYgbXYgdC0kJHtsYW5nfS5nbW8gJCR7bGFuZ30uZ21vCi0KLS5zaW4uc2VkOgotCXNlZCAtZSAnL14jL2QnICQ8ID4gdC0kQAotCW12IHQtJEAgJEAKLQotCi1hbGw6IGFsbC1AVVNFX05MU0AKLQotYWxsLXllczogc3RhbXAtcG8KLWFsbC1ubzoKLQotIyBFbnN1cmUgdGhhdCB0aGUgZ2V0dGV4dCBtYWNyb3MgYW5kIHRoaXMgTWFrZWZpbGUuaW4uaW4gYXJlIGluIHN5bmMuCi1DSEVDS19NQUNST19WRVJTSU9OID0gXAotCXRlc3QgIiQoR0VUVEVYVF9NQUNST19WRVJTSU9OKSIgPSAiQEdFVFRFWFRfTUFDUk9fVkVSU0lPTkAiIFwKLQkgIHx8IHsgZWNobyAiKioqIGVycm9yOiBnZXR0ZXh0IGluZnJhc3RydWN0dXJlIG1pc21hdGNoOiB1c2luZyBhIE1ha2VmaWxlLmluLmluIGZyb20gZ2V0dGV4dCB2ZXJzaW9uICQoR0VUVEVYVF9NQUNST19WRVJTSU9OKSBidXQgdGhlIGF1dG9jb25mIG1hY3JvcyBhcmUgZnJvbSBnZXR0ZXh0IHZlcnNpb24gQEdFVFRFWFRfTUFDUk9fVkVSU0lPTkAiIDE+JjI7IFwKLQkgICAgICAgZXhpdCAxOyBcCi0JICAgICB9Ci0KLSMgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgaXMgb25seSBjcmVhdGVkIHdoZW4gbmVlZGVkLiBXaGVuIHhnZXR0ZXh0IGZpbmRzIG5vCi0jIGludGVybmF0aW9uYWxpemVkIG1lc3NhZ2VzLCBubyAkKHNyY2RpcikvJChET01BSU4pLnBvdCBpcyBjcmVhdGVkIChiZWNhdXNlCi0jIHdlIGRvbid0IHdhbnQgdG8gYm90aGVyIHRyYW5zbGF0b3JzIHdpdGggZW1wdHkgUE9UIGZpbGVzKS4gV2UgYXNzdW1lIHRoYXQKLSMgTElOR1VBUyBpcyBlbXB0eSBpbiB0aGlzIGNhc2UsIGkuZS4gJChQT0ZJTEVTKSBhbmQgJChHTU9GSUxFUykgYXJlIGVtcHR5LgotIyBJbiB0aGlzIGNhc2UsIHN0YW1wLXBvIGlzIGEgbm9wIChpLmUuIGEgcGhvbnkgdGFyZ2V0KS4KLQotIyBzdGFtcC1wbyBpcyBhIHRpbWVzdGFtcCBkZW5vdGluZyB0aGUgbGFzdCB0aW1lIGF0IHdoaWNoIHRoZSBDQVRBTE9HUyBoYXZlCi0jIGJlZW4gbG9vc2VseSB1cGRhdGVkLiBJdHMgcHVycG9zZSBpcyB0aGF0IHdoZW4gYSBkZXZlbG9wZXIgb3IgdHJhbnNsYXRvcgotIyBjaGVja3Mgb3V0IHRoZSBwYWNrYWdlIHZpYSBDVlMsIGFuZCB0aGUgJChET01BSU4pLnBvdCBmaWxlIGlzIG5vdCBpbiBDVlMsCi0jICJtYWtlIiB3aWxsIHVwZGF0ZSB0aGUgJChET01BSU4pLnBvdCBhbmQgdGhlICQoQ0FUQUxPR1MpLCBidXQgc3Vic2VxdWVudAotIyBpbnZvY2F0aW9ucyBvZiAibWFrZSIgd2lsbCBkbyBub3RoaW5nLiBUaGlzIHRpbWVzdGFtcCB3b3VsZCBub3QgYmUgbmVjZXNzYXJ5Ci0jIGlmIHVwZGF0aW5nIHRoZSAkKENBVEFMT0dTKSB3b3VsZCBhbHdheXMgdG91Y2ggdGhlbTsgaG93ZXZlciwgdGhlIHJ1bGUgZm9yCi0jICQoUE9GSUxFUykgaGFzIGJlZW4gZGVzaWduZWQgdG8gbm90IHRvdWNoIGZpbGVzIHRoYXQgZG9uJ3QgbmVlZCB0byBiZQotIyBjaGFuZ2VkLgotc3RhbXAtcG86ICQoc3JjZGlyKS8kKERPTUFJTikucG90Ci0JQCQoQ0hFQ0tfTUFDUk9fVkVSU0lPTikKLQl0ZXN0ICEgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgfHwgXAotCSAgdGVzdCAteiAiJChHTU9GSUxFUykiIHx8ICQoTUFLRSkgJChHTU9GSUxFUykKLQlAdGVzdCAhIC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90IHx8IHsgXAotCSAgZWNobyAidG91Y2ggc3RhbXAtcG8iICYmIFwKLQkgIGVjaG8gdGltZXN0YW1wID4gc3RhbXAtcG9UICYmIFwKLQkgIG12IHN0YW1wLXBvVCBzdGFtcC1wbzsgXAotCX0KLQotIyBOb3RlOiBUYXJnZXQgJ2FsbCcgbXVzdCBub3QgZGVwZW5kIG9uIHRhcmdldCAnJChET01BSU4pLnBvdC11cGRhdGUnLAotIyBvdGhlcndpc2UgcGFja2FnZXMgbGlrZSBHQ0MgY2FuIG5vdCBiZSBidWlsdCBpZiBvbmx5IHBhcnRzIG9mIHRoZSBzb3VyY2UKLSMgaGF2ZSBiZWVuIGRvd25sb2FkZWQuCi0KLSMgVGhpcyB0YXJnZXQgcmVidWlsZHMgJChET01BSU4pLnBvdDsgaXQgaXMgYW4gZXhwZW5zaXZlIG9wZXJhdGlvbi4KLSMgTm90ZSB0aGF0ICQoRE9NQUlOKS5wb3QgaXMgbm90IHRvdWNoZWQgaWYgaXQgZG9lc24ndCBuZWVkIHRvIGJlIGNoYW5nZWQuCi0jIFRoZSBkZXRlcm1pbmF0aW9uIG9mIHdoZXRoZXIgdGhlIHBhY2thZ2UgeHl6IGlzIGEgR05VIG9uZSBpcyBiYXNlZCBvbiB0aGUKLSMgaGV1cmlzdGljIHdoZXRoZXIgc29tZSBmaWxlIGluIHRoZSB0b3AgbGV2ZWwgZGlyZWN0b3J5IG1lbnRpb25zICJHTlUgeHl6Ii4KLSMgSWYgR05VICdmaW5kJyBpcyBhdmFpbGFibGUsIHdlIGF2b2lkIGdyZXBwaW5nIHRocm91Z2ggbW9uc3RlciBmaWxlcy4KLSQoRE9NQUlOKS5wb3QtdXBkYXRlOiAkKFBPVEZJTEVTKSAkKHNyY2RpcikvUE9URklMRVMuaW4gcmVtb3ZlLXBvdGNkYXRlLnNlZAotCXBhY2thZ2VfZ251PSIkKFBBQ0tBR0VfR05VKSI7IFwKLQl0ZXN0IC1uICIkJHBhY2thZ2VfZ251IiB8fCB7IFwKLQkgIGlmIHsgaWYgKExDX0FMTD1DIGZpbmQgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8IGdyZXAgR05VID4vZGV2L251bGw7IHRoZW4gXAotCQkgTENfQUxMPUMgZmluZCAtTCAkKHRvcF9zcmNkaXIpIC1tYXhkZXB0aCAxIC10eXBlIGYgXAotCQkJICAgICAgIC1zaXplIC0xMDAwMDAwMGMgLWV4ZWMgZ3JlcCAnR05VIEBQQUNLQUdFQCcgXAotCQkJICAgICAgIC9kZXYvbnVsbCAne30nICc7JyAyPi9kZXYvbnVsbDsgXAotCSAgICAgICBlbHNlIFwKLQkJIExDX0FMTD1DIGdyZXAgJ0dOVSBAUEFDS0FHRUAnICQodG9wX3NyY2RpcikvKiAyPi9kZXYvbnVsbDsgXAotCSAgICAgICBmaTsgXAotCSAgICAgfSB8IGdyZXAgLXYgJ2xpYnRvb2w6JyA+L2Rldi9udWxsOyB0aGVuIFwKLQkgICAgIHBhY2thZ2VfZ251PXllczsgXAotCSAgIGVsc2UgXAotCSAgICAgcGFja2FnZV9nbnU9bm87IFwKLQkgICBmaTsgXAotCX07IFwKLQlpZiB0ZXN0ICIkJHBhY2thZ2VfZ251IiA9ICJ5ZXMiOyB0aGVuIFwKLQkgIHBhY2thZ2VfcHJlZml4PSdHTlUgJzsgXAotCWVsc2UgXAotCSAgcGFja2FnZV9wcmVmaXg9Jyc7IFwKLQlmaTsgXAotCWlmIHRlc3QgLW4gJyQoTVNHSURfQlVHU19BRERSRVNTKScgfHwgdGVzdCAnJChQQUNLQUdFX0JVR1JFUE9SVCknID0gJ0AnUEFDS0FHRV9CVUdSRVBPUlQnQCc7IHRoZW4gXAotCSAgbXNnaWRfYnVnc19hZGRyZXNzPSckKE1TR0lEX0JVR1NfQUREUkVTUyknOyBcCi0JZWxzZSBcCi0JICBtc2dpZF9idWdzX2FkZHJlc3M9JyQoUEFDS0FHRV9CVUdSRVBPUlQpJzsgXAotCWZpOyBcCi0JY2FzZSBgJChYR0VUVEVYVCkgLS12ZXJzaW9uIHwgc2VkIDFxIHwgc2VkIC1lICdzLF5bXjAtOV0qLCwnYCBpbiBcCi0JICAnJyB8IDAuWzAtOV0gfCAwLlswLTldLiogfCAwLjFbMC01XSB8IDAuMVswLTVdLiogfCAwLjE2IHwgMC4xNi5bMC0xXSopIFwKLQkgICAgJChYR0VUVEVYVCkgLS1kZWZhdWx0LWRvbWFpbj0kKERPTUFJTikgLS1kaXJlY3Rvcnk9JCh0b3Bfc3JjZGlyKSBcCi0JICAgICAgLS1hZGQtY29tbWVudHM9VFJBTlNMQVRPUlM6ICQoWEdFVFRFWFRfT1BUSU9OUykgQFhHRVRURVhUX0VYVFJBX09QVElPTlNAIFwKLQkgICAgICAtLWZpbGVzLWZyb209JChzcmNkaXIpL1BPVEZJTEVTLmluIFwKLQkgICAgICAtLWNvcHlyaWdodC1ob2xkZXI9JyQoQ09QWVJJR0hUX0hPTERFUiknIFwKLQkgICAgICAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0iJCRtc2dpZF9idWdzX2FkZHJlc3MiIFwKLQkgICAgOzsgXAotCSAgKikgXAotCSAgICAkKFhHRVRURVhUKSAtLWRlZmF1bHQtZG9tYWluPSQoRE9NQUlOKSAtLWRpcmVjdG9yeT0kKHRvcF9zcmNkaXIpIFwKLQkgICAgICAtLWFkZC1jb21tZW50cz1UUkFOU0xBVE9SUzogJChYR0VUVEVYVF9PUFRJT05TKSBAWEdFVFRFWFRfRVhUUkFfT1BUSU9OU0AgXAotCSAgICAgIC0tZmlsZXMtZnJvbT0kKHNyY2RpcikvUE9URklMRVMuaW4gXAotCSAgICAgIC0tY29weXJpZ2h0LWhvbGRlcj0nJChDT1BZUklHSFRfSE9MREVSKScgXAotCSAgICAgIC0tcGFja2FnZS1uYW1lPSIkJHtwYWNrYWdlX3ByZWZpeH1AUEFDS0FHRUAiIFwKLQkgICAgICAtLXBhY2thZ2UtdmVyc2lvbj0nQFZFUlNJT05AJyBcCi0JICAgICAgLS1tc2dpZC1idWdzLWFkZHJlc3M9IiQkbXNnaWRfYnVnc19hZGRyZXNzIiBcCi0JICAgIDs7IFwKLQllc2FjCi0JdGVzdCAhIC1mICQoRE9NQUlOKS5wbyB8fCB7IFwKLQkgIGlmIHRlc3QgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QtaGVhZGVyOyB0aGVuIFwKLQkgICAgc2VkIC1lICcxLC9eIyQkL2QnIDwgJChET01BSU4pLnBvID4gJChET01BSU4pLjFwbyAmJiBcCi0JICAgIGNhdCAkKHNyY2RpcikvJChET01BSU4pLnBvdC1oZWFkZXIgJChET01BSU4pLjFwbyA+ICQoRE9NQUlOKS5wbzsgXAotCSAgICBybSAtZiAkKERPTUFJTikuMXBvOyBcCi0JICBmaTsgXAotCSAgaWYgdGVzdCAtZiAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgdGhlbiBcCi0JICAgIHNlZCAtZiByZW1vdmUtcG90Y2RhdGUuc2VkIDwgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgPiAkKERPTUFJTikuMXBvICYmIFwKLQkgICAgc2VkIC1mIHJlbW92ZS1wb3RjZGF0ZS5zZWQgPCAkKERPTUFJTikucG8gPiAkKERPTUFJTikuMnBvICYmIFwKLQkgICAgaWYgY21wICQoRE9NQUlOKS4xcG8gJChET01BSU4pLjJwbyA+L2Rldi9udWxsIDI+JjE7IHRoZW4gXAotCSAgICAgIHJtIC1mICQoRE9NQUlOKS4xcG8gJChET01BSU4pLjJwbyAkKERPTUFJTikucG87IFwKLQkgICAgZWxzZSBcCi0JICAgICAgcm0gLWYgJChET01BSU4pLjFwbyAkKERPTUFJTikuMnBvICQoc3JjZGlyKS8kKERPTUFJTikucG90ICYmIFwKLQkgICAgICBtdiAkKERPTUFJTikucG8gJChzcmNkaXIpLyQoRE9NQUlOKS5wb3Q7IFwKLQkgICAgZmk7IFwKLQkgIGVsc2UgXAotCSAgICBtdiAkKERPTUFJTikucG8gJChzcmNkaXIpLyQoRE9NQUlOKS5wb3Q7IFwKLQkgIGZpOyBcCi0JfQotCi0jIFRoaXMgcnVsZSBoYXMgbm8gZGVwZW5kZW5jaWVzOiB3ZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSAkKERPTUFJTikucG90IGF0Ci0jIGV2ZXJ5ICJtYWtlIiBpbnZvY2F0aW9uLCBvbmx5IGNyZWF0ZSBpdCB3aGVuIGl0IGlzIG1pc3NpbmcuCi0jIE9ubHkgIm1ha2UgJChET01BSU4pLnBvdC11cGRhdGUiIG9yICJtYWtlIGRpc3QiIHdpbGwgZm9yY2UgYW4gdXBkYXRlLgotJChzcmNkaXIpLyQoRE9NQUlOKS5wb3Q6Ci0JJChNQUtFKSAkKERPTUFJTikucG90LXVwZGF0ZQotCi0jIFRoaXMgdGFyZ2V0IHJlYnVpbGRzIGEgUE8gZmlsZSBpZiAkKERPTUFJTikucG90IGhhcyBjaGFuZ2VkLgotIyBOb3RlIHRoYXQgYSBQTyBmaWxlIGlzIG5vdCB0b3VjaGVkIGlmIGl0IGRvZXNuJ3QgbmVlZCB0byBiZSBjaGFuZ2VkLgotJChQT0ZJTEVTKTogJChQT0ZJTEVTREVQUykKLQlAbGFuZz1gZWNobyAkQCB8IHNlZCAtZSAncywuKi8sLCcgLWUgJ3MvXC5wbyQkLy8nYDsgXAotCWlmIHRlc3QgLWYgIiQoc3JjZGlyKS8kJHtsYW5nfS5wbyI7IHRoZW4gXAotCSAgdGVzdCAtZiAkKHNyY2RpcikvJChET01BSU4pLnBvdCB8fCAkKE1BS0UpICQoc3JjZGlyKS8kKERPTUFJTikucG90OyBcCi0JICB0ZXN0ICIkKHNyY2RpcikiID0gLiAmJiBjZGNtZD0iIiB8fCBjZGNtZD0iY2QgJChzcmNkaXIpICYmICI7IFwKLQkgIGVjaG8gIiQke2NkY21kfSQoTVNHTUVSR0VfVVBEQVRFKSAkKE1TR01FUkdFX09QVElPTlMpIC0tbGFuZz0kJHtsYW5nfSAkJHtsYW5nfS5wbyAkKERPTUFJTikucG90IjsgXAotCSAgY2QgJChzcmNkaXIpIFwKLQkgICAgJiYgeyBjYXNlIGAkKE1TR01FUkdFKSAtLXZlcnNpb24gfCBzZWQgMXEgfCBzZWQgLWUgJ3MsXlteMC05XSosLCdgIGluIFwKLQkgICAgICAgICAgICcnIHwgMC5bMC05XSB8IDAuWzAtOV0uKiB8IDAuMVswLTddIHwgMC4xWzAtN10uKikgXAotCSAgICAgICAgICAgICAkKE1TR01FUkdFX1VQREFURSkgJChNU0dNRVJHRV9PUFRJT05TKSAkJHtsYW5nfS5wbyAkKERPTUFJTikucG90OzsgXAotCSAgICAgICAgICAgKikgXAotCSAgICAgICAgICAgICAkKE1TR01FUkdFX1VQREFURSkgJChNU0dNRVJHRV9PUFRJT05TKSAtLWxhbmc9JCR7bGFuZ30gJCR7bGFuZ30ucG8gJChET01BSU4pLnBvdDs7IFwKLQkgICAgICAgICBlc2FjOyBcCi0JICAgICAgIH07IFwKLQllbHNlIFwKLQkgICQoTUFLRSkgJCR7bGFuZ30ucG8tY3JlYXRlOyBcCi0JZmkKLQotCi1pbnN0YWxsOiBpbnN0YWxsLWV4ZWMgaW5zdGFsbC1kYXRhCi1pbnN0YWxsLWV4ZWM6Ci1pbnN0YWxsLWRhdGE6IGluc3RhbGwtZGF0YS1AVVNFX05MU0AKLQlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCi0JICAkKG1rZGlyX3ApICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpOyBcCi0JICBmb3IgZmlsZSBpbiAkKERJU1RGSUxFUy5jb21tb24pIE1ha2V2YXJzLnRlbXBsYXRlOyBkbyBcCi0JICAgICQoSU5TVEFMTF9EQVRBKSAkKHNyY2RpcikvJCRmaWxlIFwKLQkJCSAgICAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKLQkgIGRvbmU7IFwKLQkgIGZvciBmaWxlIGluIE1ha2V2YXJzOyBkbyBcCi0JICAgIHJtIC1mICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAotCSAgZG9uZTsgXAotCWVsc2UgXAotCSAgOiA7IFwKLQlmaQotaW5zdGFsbC1kYXRhLW5vOiBhbGwKLWluc3RhbGwtZGF0YS15ZXM6IGFsbAotCUBjYXRhbG9ncz0nJChDQVRBTE9HUyknOyBcCi0JZm9yIGNhdCBpbiAkJGNhdGFsb2dzOyBkbyBcCi0JICBjYXQ9YGJhc2VuYW1lICQkY2F0YDsgXAotCSAgbGFuZz1gZWNobyAkJGNhdCB8IHNlZCAtZSAncy9cLmdtbyQkLy8nYDsgXAotCSAgZGlyPSQobG9jYWxlZGlyKS8kJGxhbmcvTENfTUVTU0FHRVM7IFwKLQkgICQobWtkaXJfcCkgJChERVNURElSKSQkZGlyOyBcCi0JICBpZiB0ZXN0IC1yICQkY2F0OyB0aGVuIHJlYWxjYXQ9JCRjYXQ7IGVsc2UgcmVhbGNhdD0kKHNyY2RpcikvJCRjYXQ7IGZpOyBcCi0JICAkKElOU1RBTExfREFUQSkgJCRyZWFsY2F0ICQoREVTVERJUikkJGRpci8kKERPTUFJTikubW87IFwKLQkgIGVjaG8gImluc3RhbGxpbmcgJCRyZWFsY2F0IGFzICQoREVTVERJUikkJGRpci8kKERPTUFJTikubW8iOyBcCi0JICBmb3IgbGMgaW4gJycgJChFWFRSQV9MT0NBTEVfQ0FURUdPUklFUyk7IGRvIFwKLQkgICAgaWYgdGVzdCAtbiAiJCRsYyI7IHRoZW4gXAotCSAgICAgIGlmIChjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZyAmJiBMQ19BTEw9QyBscyAtbCAtZCAkJGxjIDI+L2Rldi9udWxsKSB8IGdyZXAgJyAtPiAnID4vZGV2L251bGw7IHRoZW4gXAotCSAgICAgICAgbGluaz1gY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcgJiYgTENfQUxMPUMgbHMgLWwgLWQgJCRsYyB8IHNlZCAtZSAncy9eLiogLT4gLy8nYDsgXAotCSAgICAgICAgbXYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYyAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLm9sZDsgXAotCSAgICAgICAgbWtkaXIgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgXAotCSAgICAgICAgKGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkICYmIFwKLQkgICAgICAgICBmb3IgZmlsZSBpbiAqOyBkbyBcCi0JICAgICAgICAgICBpZiB0ZXN0IC1mICQkZmlsZTsgdGhlbiBcCi0JICAgICAgICAgICAgIGxuIC1zIC4uLyQkbGluay8kJGZpbGUgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kJGZpbGU7IFwKLQkgICAgICAgICAgIGZpOyBcCi0JICAgICAgICAgZG9uZSk7IFwKLQkgICAgICAgIHJtIC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkOyBcCi0JICAgICAgZWxzZSBcCi0JICAgICAgICBpZiB0ZXN0IC1kICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IHRoZW4gXAotCSAgICAgICAgICA6OyBcCi0JICAgICAgICBlbHNlIFwKLQkgICAgICAgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgXAotCSAgICAgICAgICBta2RpciAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCi0JICAgICAgICBmaTsgXAotCSAgICAgIGZpOyBcCi0JICAgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW87IFwKLQkgICAgICBsbiAtcyAuLi9MQ19NRVNTQUdFUy8kKERPTUFJTikubW8gJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW8gMj4vZGV2L251bGwgfHwgXAotCSAgICAgIGxuICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nL0xDX01FU1NBR0VTLyQoRE9NQUlOKS5tbyAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbyAyPi9kZXYvbnVsbCB8fCBcCi0JICAgICAgY3AgLXAgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvTENfTUVTU0FHRVMvJChET01BSU4pLm1vICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vOyBcCi0JICAgICAgZWNobyAiaW5zdGFsbGluZyAkJHJlYWxjYXQgbGluayBhcyAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbyI7IFwKLQkgICAgZmk7IFwKLQkgIGRvbmU7IFwKLQlkb25lCi0KLWluc3RhbGwtc3RyaXA6IGluc3RhbGwKLQotaW5zdGFsbGRpcnM6IGluc3RhbGxkaXJzLWV4ZWMgaW5zdGFsbGRpcnMtZGF0YQotaW5zdGFsbGRpcnMtZXhlYzoKLWluc3RhbGxkaXJzLWRhdGE6IGluc3RhbGxkaXJzLWRhdGEtQFVTRV9OTFNACi0JaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAotCSAgJChta2Rpcl9wKSAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKTsgXAotCWVsc2UgXAotCSAgOiA7IFwKLQlmaQotaW5zdGFsbGRpcnMtZGF0YS1ubzoKLWluc3RhbGxkaXJzLWRhdGEteWVzOgotCUBjYXRhbG9ncz0nJChDQVRBTE9HUyknOyBcCi0JZm9yIGNhdCBpbiAkJGNhdGFsb2dzOyBkbyBcCi0JICBjYXQ9YGJhc2VuYW1lICQkY2F0YDsgXAotCSAgbGFuZz1gZWNobyAkJGNhdCB8IHNlZCAtZSAncy9cLmdtbyQkLy8nYDsgXAotCSAgZGlyPSQobG9jYWxlZGlyKS8kJGxhbmcvTENfTUVTU0FHRVM7IFwKLQkgICQobWtkaXJfcCkgJChERVNURElSKSQkZGlyOyBcCi0JICBmb3IgbGMgaW4gJycgJChFWFRSQV9MT0NBTEVfQ0FURUdPUklFUyk7IGRvIFwKLQkgICAgaWYgdGVzdCAtbiAiJCRsYyI7IHRoZW4gXAotCSAgICAgIGlmIChjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZyAmJiBMQ19BTEw9QyBscyAtbCAtZCAkJGxjIDI+L2Rldi9udWxsKSB8IGdyZXAgJyAtPiAnID4vZGV2L251bGw7IHRoZW4gXAotCSAgICAgICAgbGluaz1gY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcgJiYgTENfQUxMPUMgbHMgLWwgLWQgJCRsYyB8IHNlZCAtZSAncy9eLiogLT4gLy8nYDsgXAotCSAgICAgICAgbXYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYyAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLm9sZDsgXAotCSAgICAgICAgbWtkaXIgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgXAotCSAgICAgICAgKGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkICYmIFwKLQkgICAgICAgICBmb3IgZmlsZSBpbiAqOyBkbyBcCi0JICAgICAgICAgICBpZiB0ZXN0IC1mICQkZmlsZTsgdGhlbiBcCi0JICAgICAgICAgICAgIGxuIC1zIC4uLyQkbGluay8kJGZpbGUgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kJGZpbGU7IFwKLQkgICAgICAgICAgIGZpOyBcCi0JICAgICAgICAgZG9uZSk7IFwKLQkgICAgICAgIHJtIC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkOyBcCi0JICAgICAgZWxzZSBcCi0JICAgICAgICBpZiB0ZXN0IC1kICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IHRoZW4gXAotCSAgICAgICAgICA6OyBcCi0JICAgICAgICBlbHNlIFwKLQkgICAgICAgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgXAotCSAgICAgICAgICBta2RpciAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCi0JICAgICAgICBmaTsgXAotCSAgICAgIGZpOyBcCi0JICAgIGZpOyBcCi0JICBkb25lOyBcCi0JZG9uZQotCi0jIERlZmluZSB0aGlzIGFzIGVtcHR5IHVudGlsIEkgZm91bmQgYSB1c2VmdWwgYXBwbGljYXRpb24uCi1pbnN0YWxsY2hlY2s6Ci0KLXVuaW5zdGFsbDogdW5pbnN0YWxsLWV4ZWMgdW5pbnN0YWxsLWRhdGEKLXVuaW5zdGFsbC1leGVjOgotdW5pbnN0YWxsLWRhdGE6IHVuaW5zdGFsbC1kYXRhLUBVU0VfTkxTQAotCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKLQkgIGZvciBmaWxlIGluICQoRElTVEZJTEVTLmNvbW1vbikgTWFrZXZhcnMudGVtcGxhdGU7IGRvIFwKLQkgICAgcm0gLWYgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCi0JICBkb25lOyBcCi0JZWxzZSBcCi0JICA6IDsgXAotCWZpCi11bmluc3RhbGwtZGF0YS1ubzoKLXVuaW5zdGFsbC1kYXRhLXllczoKLQljYXRhbG9ncz0nJChDQVRBTE9HUyknOyBcCi0JZm9yIGNhdCBpbiAkJGNhdGFsb2dzOyBkbyBcCi0JICBjYXQ9YGJhc2VuYW1lICQkY2F0YDsgXAotCSAgbGFuZz1gZWNobyAkJGNhdCB8IHNlZCAtZSAncy9cLmdtbyQkLy8nYDsgXAotCSAgZm9yIGxjIGluIExDX01FU1NBR0VTICQoRVhUUkFfTE9DQUxFX0NBVEVHT1JJRVMpOyBkbyBcCi0JICAgIHJtIC1mICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vOyBcCi0JICBkb25lOyBcCi0JZG9uZQotCi1jaGVjazogYWxsCi0KLWluZm8gZHZpIHBzIHBkZiBodG1sIHRhZ3MgVEFHUyBjdGFncyBDVEFHUyBJRDoKLQotbW9zdGx5Y2xlYW46Ci0Jcm0gLWYgcmVtb3ZlLXBvdGNkYXRlLnNlZAotCXJtIC1mIHN0YW1wLXBvVAotCXJtIC1mIGNvcmUgY29yZS4qICQoRE9NQUlOKS5wbyAkKERPTUFJTikuMXBvICQoRE9NQUlOKS4ycG8gKi5uZXcucG8KLQlybSAtZnIgKi5vCi0KLWNsZWFuOiBtb3N0bHljbGVhbgotCi1kaXN0Y2xlYW46IGNsZWFuCi0Jcm0gLWYgTWFrZWZpbGUgTWFrZWZpbGUuaW4gUE9URklMRVMgKi5tbwotCi1tYWludGFpbmVyLWNsZWFuOiBkaXN0Y2xlYW4KLQlAZWNobyAiVGhpcyBjb21tYW5kIGlzIGludGVuZGVkIGZvciBtYWludGFpbmVycyB0byB1c2U7IgotCUBlY2hvICJpdCBkZWxldGVzIGZpbGVzIHRoYXQgbWF5IHJlcXVpcmUgc3BlY2lhbCB0b29scyB0byByZWJ1aWxkLiIKLQlybSAtZiBzdGFtcC1wbyAkKEdNT0ZJTEVTKQotCi1kaXN0ZGlyID0gJCh0b3BfYnVpbGRkaXIpLyQoUEFDS0FHRSktJChWRVJTSU9OKS8kKHN1YmRpcikKLWRpc3QgZGlzdGRpcjoKLQl0ZXN0IC16ICIkKERJU1RGSUxFU0RFUFMpIiB8fCAkKE1BS0UpICQoRElTVEZJTEVTREVQUykKLQlAJChNQUtFKSBkaXN0MgotIyBUaGlzIGlzIGEgc2VwYXJhdGUgdGFyZ2V0IGJlY2F1c2UgJ3VwZGF0ZS1wbycgbXVzdCBiZSBleGVjdXRlZCBiZWZvcmUuCi1kaXN0Mjogc3RhbXAtcG8gJChESVNURklMRVMpCi0JZGlzdHM9IiQoRElTVEZJTEVTKSI7IFwKLQlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCi0JICBkaXN0cz0iJCRkaXN0cyBNYWtldmFycy50ZW1wbGF0ZSI7IFwKLQlmaTsgXAotCWlmIHRlc3QgLWYgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3Q7IHRoZW4gXAotCSAgZGlzdHM9IiQkZGlzdHMgJChET01BSU4pLnBvdCBzdGFtcC1wbyI7IFwKLQlmaTsgXAotCWlmIHRlc3QgLWYgJChzcmNkaXIpL0NoYW5nZUxvZzsgdGhlbiBcCi0JICBkaXN0cz0iJCRkaXN0cyBDaGFuZ2VMb2ciOyBcCi0JZmk7IFwKLQlmb3IgaSBpbiAwIDEgMiAzIDQgNSA2IDcgOCA5OyBkbyBcCi0JICBpZiB0ZXN0IC1mICQoc3JjZGlyKS9DaGFuZ2VMb2cuJCRpOyB0aGVuIFwKLQkgICAgZGlzdHM9IiQkZGlzdHMgQ2hhbmdlTG9nLiQkaSI7IFwKLQkgIGZpOyBcCi0JZG9uZTsgXAotCWlmIHRlc3QgLWYgJChzcmNkaXIpL0xJTkdVQVM7IHRoZW4gZGlzdHM9IiQkZGlzdHMgTElOR1VBUyI7IGZpOyBcCi0JZm9yIGZpbGUgaW4gJCRkaXN0czsgZG8gXAotCSAgaWYgdGVzdCAtZiAkJGZpbGU7IHRoZW4gXAotCSAgICBjcCAtcCAkJGZpbGUgJChkaXN0ZGlyKSB8fCBleGl0IDE7IFwKLQkgIGVsc2UgXAotCSAgICBjcCAtcCAkKHNyY2RpcikvJCRmaWxlICQoZGlzdGRpcikgfHwgZXhpdCAxOyBcCi0JICBmaTsgXAotCWRvbmUKLQotdXBkYXRlLXBvOiBNYWtlZmlsZQotCSQoTUFLRSkgJChET01BSU4pLnBvdC11cGRhdGUKLQl0ZXN0IC16ICIkKFVQREFURVBPRklMRVMpIiB8fCAkKE1BS0UpICQoVVBEQVRFUE9GSUxFUykKLQkkKE1BS0UpIHVwZGF0ZS1nbW8KLQotIyBHZW5lcmFsIHJ1bGUgZm9yIGNyZWF0aW5nIFBPIGZpbGVzLgotCi0ubm9wLnBvLWNyZWF0ZToKLQlAbGFuZz1gZWNobyAkQCB8IHNlZCAtZSAncy9cLnBvLWNyZWF0ZSQkLy8nYDsgXAotCWVjaG8gIkZpbGUgJCRsYW5nLnBvIGRvZXMgbm90IGV4aXN0LiBJZiB5b3UgYXJlIGEgdHJhbnNsYXRvciwgeW91IGNhbiBjcmVhdGUgaXQgdGhyb3VnaCAnbXNnaW5pdCcuIiAxPiYyOyBcCi0JZXhpdCAxCi0KLSMgR2VuZXJhbCBydWxlIGZvciB1cGRhdGluZyBQTyBmaWxlcy4KLQotLm5vcC5wby11cGRhdGU6Ci0JQGxhbmc9YGVjaG8gJEAgfCBzZWQgLWUgJ3MvXC5wby11cGRhdGUkJC8vJ2A7IFwKLQlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIiAmJiB0ZXN0ICIkKENST1NTX0NPTVBJTElORykiICE9ICJ5ZXMiOyB0aGVuIFBBVEg9YHB3ZGAvLi4vc3JjOiQkUEFUSDsgZmk7IFwKLQl0bXBkaXI9YHB3ZGA7IFwKLQllY2hvICIkJGxhbmc6IjsgXAotCXRlc3QgIiQoc3JjZGlyKSIgPSAuICYmIGNkY21kPSIiIHx8IGNkY21kPSJjZCAkKHNyY2RpcikgJiYgIjsgXAotCWVjaG8gIiQke2NkY21kfSQoTVNHTUVSR0UpICQoTVNHTUVSR0VfT1BUSU9OUykgLS1sYW5nPSQkbGFuZyAkJGxhbmcucG8gJChET01BSU4pLnBvdCAtbyAkJGxhbmcubmV3LnBvIjsgXAotCWNkICQoc3JjZGlyKTsgXAotCWlmIHsgY2FzZSBgJChNU0dNRVJHRSkgLS12ZXJzaW9uIHwgc2VkIDFxIHwgc2VkIC1lICdzLF5bXjAtOV0qLCwnYCBpbiBcCi0JICAgICAgICcnIHwgMC5bMC05XSB8IDAuWzAtOV0uKiB8IDAuMVswLTddIHwgMC4xWzAtN10uKikgXAotCSAgICAgICAgICQoTVNHTUVSR0UpICQoTVNHTUVSR0VfT1BUSU9OUykgLW8gJCR0bXBkaXIvJCRsYW5nLm5ldy5wbyAkJGxhbmcucG8gJChET01BSU4pLnBvdDs7IFwKLQkgICAgICAgKikgXAotCSAgICAgICAgICQoTVNHTUVSR0UpICQoTVNHTUVSR0VfT1BUSU9OUykgLS1sYW5nPSQkbGFuZyAtbyAkJHRtcGRpci8kJGxhbmcubmV3LnBvICQkbGFuZy5wbyAkKERPTUFJTikucG90OzsgXAotCSAgICAgZXNhYzsgXAotCSAgIH07IHRoZW4gXAotCSAgaWYgY21wICQkbGFuZy5wbyAkJHRtcGRpci8kJGxhbmcubmV3LnBvID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCi0JICAgIHJtIC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG87IFwKLQkgIGVsc2UgXAotCSAgICBpZiBtdiAtZiAkJHRtcGRpci8kJGxhbmcubmV3LnBvICQkbGFuZy5wbzsgdGhlbiBcCi0JICAgICAgOjsgXAotCSAgICBlbHNlIFwKLQkgICAgICBlY2hvICJtc2dtZXJnZSBmb3IgJCRsYW5nLnBvIGZhaWxlZDogY2Fubm90IG1vdmUgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbyB0byAkJGxhbmcucG8iIDE+JjI7IFwKLQkgICAgICBleGl0IDE7IFwKLQkgICAgZmk7IFwKLQkgIGZpOyBcCi0JZWxzZSBcCi0JICBlY2hvICJtc2dtZXJnZSBmb3IgJCRsYW5nLnBvIGZhaWxlZCEiIDE+JjI7IFwKLQkgIHJtIC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG87IFwKLQlmaQotCi0kKERVTU1ZUE9GSUxFUyk6Ci0KLXVwZGF0ZS1nbW86IE1ha2VmaWxlICQoR01PRklMRVMpCi0JQDoKLQotIyBSZWNyZWF0ZSBNYWtlZmlsZSBieSBpbnZva2luZyBjb25maWcuc3RhdHVzLiBFeHBsaWNpdGx5IGludm9rZSB0aGUgc2hlbGwsCi0jIGJlY2F1c2UgZXhlY3V0aW9uIHBlcm1pc3Npb24gYml0cyBtYXkgbm90IHdvcmsgb24gdGhlIGN1cnJlbnQgZmlsZSBzeXN0ZW0uCi0jIFVzZSBAU0hFTExALCB3aGljaCBpcyB0aGUgc2hlbGwgZGV0ZXJtaW5lZCBieSBhdXRvY29uZiBmb3IgdGhlIHVzZSBieSBpdHMKLSMgc2NyaXB0cywgbm90ICQoU0hFTEwpIHdoaWNoIGlzIGhhcmR3aXJlZCB0byAvYmluL3NoIGFuZCBtYXkgYmUgZGVmaWNpZW50LgotTWFrZWZpbGU6IE1ha2VmaWxlLmluLmluIE1ha2V2YXJzICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzIEBQT01BS0VGSUxFREVQU0AKLQljZCAkKHRvcF9idWlsZGRpcikgXAotCSAgJiYgQFNIRUxMQCAuL2NvbmZpZy5zdGF0dXMgJChzdWJkaXIpLyRALmluIHBvLWRpcmVjdG9yaWVzCi0KLWZvcmNlOgotCi0jIFRlbGwgdmVyc2lvbnMgWzMuNTksMy42Mykgb2YgR05VIG1ha2Ugbm90IHRvIGV4cG9ydCBhbGwgdmFyaWFibGVzLgotIyBPdGhlcndpc2UgYSBzeXN0ZW0gbGltaXQgKGZvciBTeXNWIGF0IGxlYXN0KSBtYXkgYmUgZXhjZWVkZWQuCi0uTk9FWFBPUlQ6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL2FjbG9jYWwudGd6IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS9hY2xvY2FsLnRnegpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWIyZDFmNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL2FjbG9jYWwudGd6CisrKyAvZGV2L251bGwKQmluYXJ5IGZpbGVzIGRpZmZlcgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS9jb25maWcucnBhdGggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL2NvbmZpZy5ycGF0aApkZWxldGVkIGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggOTgxODNmZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL2NvbmZpZy5ycGF0aAorKysgL2Rldi9udWxsCkBAIC0xLDY4NCArMCwwIEBACi0jISAvYmluL3NoCi0jIE91dHB1dCBhIHN5c3RlbSBkZXBlbmRlbnQgc2V0IG9mIHZhcmlhYmxlcywgZGVzY3JpYmluZyBob3cgdG8gc2V0IHRoZQotIyBydW4gdGltZSBzZWFyY2ggcGF0aCBvZiBzaGFyZWQgbGlicmFyaWVzIGluIGFuIGV4ZWN1dGFibGUuCi0jCi0jICAgQ29weXJpZ2h0IDE5OTYtMjAxNiBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSMgICBUYWtlbiBmcm9tIEdOVSBsaWJ0b29sLCAyMDAxCi0jICAgT3JpZ2luYWxseSBieSBHb3Jkb24gTWF0emlna2VpdCA8Z29yZEBnbnUuYWkubWl0LmVkdT4sIDE5OTYKLSMKLSMgICBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiBnaXZlcwotIyAgIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAotIyAgIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgotIwotIyBUaGUgZmlyc3QgYXJndW1lbnQgcGFzc2VkIHRvIHRoaXMgZmlsZSBpcyB0aGUgY2Fub25pY2FsIGhvc3Qgc3BlY2lmaWNhdGlvbiwKLSMgICAgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLU9QRVJBVElOR19TWVNURU0KLSMgb3IKLSMgICAgQ1BVX1RZUEUtTUFOVUZBQ1RVUkVSLUtFUk5FTC1PUEVSQVRJTkdfU1lTVEVNCi0jIFRoZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMgQ0MsIEdDQywgTERGTEFHUywgTEQsIHdpdGhfZ251X2xkCi0jIHNob3VsZCBiZSBzZXQgYnkgdGhlIGNhbGxlci4KLSMKLSMgVGhlIHNldCBvZiBkZWZpbmVkIHZhcmlhYmxlcyBpcyBhdCB0aGUgZW5kIG9mIHRoaXMgc2NyaXB0LgotCi0jIEtub3duIGxpbWl0YXRpb25zOgotIyAtIE9uIElSSVggNi41IHdpdGggQ0M9ImNjIiwgdGhlIHJ1biB0aW1lIHNlYXJjaCBwYXRjaCBtdXN0IG5vdCBiZSBsb25nZXIKLSMgICB0aGFuIDI1NiBieXRlcywgb3RoZXJ3aXNlIHRoZSBjb21waWxlciBkcml2ZXIgd2lsbCBkdW1wIGNvcmUuIFRoZSBvbmx5Ci0jICAga25vd24gd29ya2Fyb3VuZCBpcyB0byBjaG9vc2Ugc2hvcnRlciBkaXJlY3RvcnkgbmFtZXMgZm9yIHRoZSBidWlsZAotIyAgIGRpcmVjdG9yeSBhbmQvb3IgdGhlIGluc3RhbGxhdGlvbiBkaXJlY3RvcnkuCi0KLSMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhICcuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotIyB3aGljaCBuZWVkcyAnLmxpYicpLgotbGliZXh0PWEKLXNocmV4dD0uc28KLQotaG9zdD0iJDEiCi1ob3N0X2NwdT1gZWNobyAiJGhvc3QiIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDEvJ2AKLWhvc3RfdmVuZG9yPWBlY2hvICIkaG9zdCIgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMi8nYAotaG9zdF9vcz1gZWNobyAiJGhvc3QiIHwgc2VkICdzL15cKFteLV0qXCktXChbXi1dKlwpLVwoLipcKSQvXDMvJ2AKLQotIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIF9MVF9DQ19CQVNFTkFNRS4KLQotZm9yIGNjX3RlbXAgaW4gJENDIiI7IGRvCi0gIGNhc2UgJGNjX3RlbXAgaW4KLSAgICBjb21waWxlIHwgKltcXC9dY29tcGlsZSB8IGNjYWNoZSB8ICpbXFwvXWNjYWNoZSApIDs7Ci0gICAgZGlzdGNjIHwgKltcXC9dZGlzdGNjIHwgcHVyaWZ5IHwgKltcXC9dcHVyaWZ5ICkgOzsKLSAgICBcLSopIDs7Ci0gICAgKikgYnJlYWs7OwotICBlc2FjCi1kb25lCi1jY19iYXNlbmFtZT1gZWNobyAiJGNjX3RlbXAiIHwgc2VkIC1lICdzJV4uKi8lJSdgCi0KLSMgQ29kZSB0YWtlbiBmcm9tIGxpYnRvb2wubTQncyBfTFRfQ09NUElMRVJfUElDLgotCi13bD0KLWlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gIHdsPSctV2wsJwotZWxzZQotICBjYXNlICIkaG9zdF9vcyIgaW4KLSAgICBhaXgqKQotICAgICAgd2w9Jy1XbCwnCi0gICAgICA7OwotICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBwdzMyKiB8IG9zMiogfCBjZWdjYyopCi0gICAgICA7OwotICAgIGhwdXg5KiB8IGhwdXgxMCogfCBocHV4MTEqKQotICAgICAgd2w9Jy1XbCwnCi0gICAgICA7OwotICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICB3bD0nLVdsLCcKLSAgICAgIDs7Ci0gICAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQotICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgICAgZWNjKikKLSAgICAgICAgICB3bD0nLVdsLCcKLSAgICAgICAgICA7OwotICAgICAgICBpY2MqIHwgaWZvcnQqKQotICAgICAgICAgIHdsPSctV2wsJwotICAgICAgICAgIDs7Ci0gICAgICAgIGxmOTUqKQotICAgICAgICAgIHdsPSctV2wsJwotICAgICAgICAgIDs7Ci0gICAgICAgIG5hZ2ZvciopCi0gICAgICAgICAgd2w9Jy1XbCwtV2wsLCcKLSAgICAgICAgICA7OwotICAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCi0gICAgICAgICAgd2w9Jy1XbCwnCi0gICAgICAgICAgOzsKLSAgICAgICAgY2NjKikKLSAgICAgICAgICB3bD0nLVdsLCcKLSAgICAgICAgICA7OwotICAgICAgICB4bCogfCBiZ3hsKiB8IGJnZiogfCBtcGl4bCopCi0gICAgICAgICAgd2w9Jy1XbCwnCi0gICAgICAgICAgOzsKLSAgICAgICAgY29tbykKLSAgICAgICAgICB3bD0nLWxvcHQ9JwotICAgICAgICAgIDs7Ci0gICAgICAgICopCi0gICAgICAgICAgY2FzZSBgJENDIC1WIDI+JjEgfCBzZWQgNXFgIGluCi0gICAgICAgICAgICAqU3VuXCBGKiB8ICpTdW4qRm9ydHJhbiopCi0gICAgICAgICAgICAgIHdsPQotICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgKlN1blwgQyopCi0gICAgICAgICAgICAgIHdsPSctV2wsJwotICAgICAgICAgICAgICA7OwotICAgICAgICAgIGVzYWMKLSAgICAgICAgICA7OwotICAgICAgZXNhYwotICAgICAgOzsKLSAgICBuZXdzb3M2KQotICAgICAgOzsKLSAgICAqbnRvKiB8ICpxbngqKQotICAgICAgOzsKLSAgICBvc2YzKiB8IG9zZjQqIHwgb3NmNSopCi0gICAgICB3bD0nLVdsLCcKLSAgICAgIDs7Ci0gICAgcmRvcyopCi0gICAgICA7OwotICAgIHNvbGFyaXMqKQotICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotICAgICAgICAgIHdsPSctUW9wdGlvbiBsZCAnCi0gICAgICAgICAgOzsKLSAgICAgICAgKikKLSAgICAgICAgICB3bD0nLVdsLCcKLSAgICAgICAgICA7OwotICAgICAgZXNhYwotICAgICAgOzsKLSAgICBzdW5vczQqKQotICAgICAgd2w9Jy1Rb3B0aW9uIGxkICcKLSAgICAgIDs7Ci0gICAgc3lzdjQgfCBzeXN2NC4ydXcyKiB8IHN5c3Y0LjMqKQotICAgICAgd2w9Jy1XbCwnCi0gICAgICA7OwotICAgIHN5c3Y0Kk1QKikKLSAgICAgIDs7Ci0gICAgc3lzdjUqIHwgdW5peHdhcmUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KiB8IE9wZW5VTklYKikKLSAgICAgIHdsPSctV2wsJwotICAgICAgOzsKLSAgICB1bmljb3MqKQotICAgICAgd2w9Jy1XbCwnCi0gICAgICA7OwotICAgIHV0czQqKQotICAgICAgOzsKLSAgZXNhYwotZmkKLQotIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIF9MVF9MSU5LRVJfU0hMSUJTLgotCi1oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0KLWhhcmRjb2RlX2RpcmVjdD1ubwotaGFyZGNvZGVfbWludXNfTD1ubwotCi1jYXNlICIkaG9zdF9vcyIgaW4KLSAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICMgRklYTUU6IHRoZSBNU1ZDKysgcG9ydCBoYXNuJ3QgYmVlbiB0ZXN0ZWQgaW4gYSBsb29vb25nIHRpbWUKLSAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZwotICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0gICAgICB3aXRoX2dudV9sZD1ubwotICAgIGZpCi0gICAgOzsKLSAgaW50ZXJpeCopCi0gICAgIyB3ZSBqdXN0IGhvcGUvYXNzdW1lIHRoaXMgaXMgZ2NjIGFuZCBub3QgYzg5ICg9IE1TVkMrKykKLSAgICB3aXRoX2dudV9sZD15ZXMKLSAgICA7OwotICBvcGVuYnNkKikKLSAgICB3aXRoX2dudV9sZD1ubwotICAgIDs7Ci1lc2FjCi0KLWxkX3NobGlicz15ZXMKLWlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSB5ZXM7IHRoZW4KLSAgIyBTZXQgc29tZSBkZWZhdWx0cyBmb3IgR05VIGxkIHdpdGggc2hhcmVkIGxpYnJhcnkgc3VwcG9ydC4gVGhlc2UKLSAgIyBhcmUgcmVzZXQgbGF0ZXIgaWYgc2hhcmVkIGxpYnJhcmllcyBhcmUgbm90IHN1cHBvcnRlZC4gUHV0dGluZyB0aGVtCi0gICMgaGVyZSBhbGxvd3MgdGhlbSB0byBiZSBvdmVycmlkZGVuIGlmIG5lY2Vzc2FyeS4KLSAgIyBVbmxpa2UgbGlidG9vbCwgd2UgdXNlIC1ycGF0aCBoZXJlLCBub3QgLS1ycGF0aCwgc2luY2UgdGhlIGRvY3VtZW50ZWQKLSAgIyBvcHRpb24gb2YgR05VIGxkIGlzIGNhbGxlZCAtcnBhdGgsIG5vdCAtLXJwYXRoLgotICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gIGNhc2UgIiRob3N0X29zIiBpbgotICAgIGFpeFszLTldKikKLSAgICAgICMgT24gQUlYL1BQQywgdGhlIEdOVSBsaW5rZXIgaXMgdmVyeSBicm9rZW4KLSAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgIT0gaWE2NDsgdGhlbgotICAgICAgICBsZF9zaGxpYnM9bm8KLSAgICAgIGZpCi0gICAgICA7OwotICAgIGFtaWdhb3MqKQotICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgotICAgICAgICBwb3dlcnBjKQotICAgICAgICAgIDs7Ci0gICAgICAgIG02OGspCi0gICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0gICAgICAgICAgOzsKLSAgICAgIGVzYWMKLSAgICAgIDs7Ci0gICAgYmVvcyopCi0gICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgOgotICAgICAgZWxzZQotICAgICAgICBsZF9zaGxpYnM9bm8KLSAgICAgIGZpCi0gICAgICA7OwotICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0gICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgOgotICAgICAgZWxzZQotICAgICAgICBsZF9zaGxpYnM9bm8KLSAgICAgIGZpCi0gICAgICA7OwotICAgIGhhaWt1KikKLSAgICAgIDs7Ci0gICAgaW50ZXJpeFszLTldKikKLSAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubwotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLSAgICAgIDs7Ci0gICAgZ251KiB8IGxpbnV4KiB8IHRwZiogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCi0gICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgOgotICAgICAgZWxzZQotICAgICAgICBsZF9zaGxpYnM9bm8KLSAgICAgIGZpCi0gICAgICA7OwotICAgIG5ldGJzZCopCi0gICAgICA7OwotICAgIHNvbGFyaXMqKQotICAgICAgaWYgJExEIC12IDI+JjEgfCBncmVwICdCRkQgMlwuOCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICA6Ci0gICAgICBlbHNlCi0gICAgICAgIGxkX3NobGlicz1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KiB8IHVuaXh3YXJlKiB8IE9wZW5VTklYKikKLSAgICAgIGNhc2UgYCRMRCAtdiAyPiYxYCBpbgotICAgICAgICAqXCBbMDFdLiogfCAqXCAyLlswLTldLiogfCAqXCAyLjFbMC01XS4qKQotICAgICAgICAgIGxkX3NobGlicz1ubwotICAgICAgICAgIDs7Ci0gICAgICAgICopCi0gICAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSdgdGVzdCAteiAiJFNDT0FCU1BBVEgiICYmIGVjaG8gJHt3bH0tcnBhdGgsJGxpYmRpcmAnCi0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICAgICAgZmkKLSAgICAgICAgICA7OwotICAgICAgZXNhYwotICAgICAgOzsKLSAgICBzdW5vczQqKQotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgOzsKLSAgICAqKQotICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgIDoKLSAgICAgIGVsc2UKLSAgICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICBmaQotICAgICAgOzsKLSAgZXNhYwotICBpZiB0ZXN0ICIkbGRfc2hsaWJzIiA9IG5vOyB0aGVuCi0gICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAgZmkKLWVsc2UKLSAgY2FzZSAiJGhvc3Rfb3MiIGluCi0gICAgYWl4MyopCi0gICAgICAjIE5vdGU6IHRoaXMgbGlua2VyIGhhcmRjb2RlcyB0aGUgZGlyZWN0b3JpZXMgaW4gTElCUEFUSCBpZiB0aGVyZQotICAgICAgIyBhcmUgbm8gZGlyZWN0b3JpZXMgc3BlY2lmaWVkIGJ5IC1MLgotICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgICMgTmVpdGhlciBkaXJlY3QgaGFyZGNvZGluZyBub3Igc3RhdGljIGxpbmtpbmcgaXMgc3VwcG9ydGVkIHdpdGggYQotICAgICAgICAjIGJyb2tlbiBjb2xsZWN0Mi4KLSAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXVuc3VwcG9ydGVkCi0gICAgICBmaQotICAgICAgOzsKLSAgICBhaXhbNC05XSopCi0gICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotICAgICAgICAjIE9uIElBNjQsIHRoZSBsaW5rZXIgZG9lcyBydW4gdGltZSBsaW5raW5nIGJ5IGRlZmF1bHQsIHNvIHdlIGRvbid0Ci0gICAgICAgICMgaGF2ZSB0byBkbyBhbnl0aGluZyBzcGVjaWFsLgotICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPW5vCi0gICAgICBlbHNlCi0gICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KLSAgICAgICAgIyBUZXN0IGlmIHdlIGFyZSB0cnlpbmcgdG8gdXNlIHJ1biB0aW1lIGxpbmtpbmcgb3Igbm9ybWFsCi0gICAgICAgICMgQUlYIHN0eWxlIGxpbmtpbmcuIElmIC1icnRsIGlzIHNvbWV3aGVyZSBpbiBMREZMQUdTLCB3ZQotICAgICAgICAjIG5lZWQgdG8gZG8gcnVudGltZSBsaW5raW5nLgotICAgICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuWzIzXXxhaXg0LlsyM10uKnxhaXhbNS05XSopCi0gICAgICAgICAgZm9yIGxkX2ZsYWcgaW4gJExERkxBR1M7IGRvCi0gICAgICAgICAgICBpZiAodGVzdCAkbGRfZmxhZyA9ICItYnJ0bCIgfHwgdGVzdCAkbGRfZmxhZyA9ICItV2wsLWJydGwiKTsgdGhlbgotICAgICAgICAgICAgICBhaXhfdXNlX3J1bnRpbWVsaW5raW5nPXllcwotICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgZmkKLSAgICAgICAgICBkb25lCi0gICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgICAgZmkKLSAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JzonCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgICBjYXNlICRob3N0X29zIGluIGFpeDQuWzAxMl18YWl4NC5bMDEyXS4qKQotICAgICAgICAgIGNvbGxlY3QybmFtZT1gJHtDQ30gLXByaW50LXByb2ctbmFtZT1jb2xsZWN0MmAKLSAgICAgICAgICBpZiB0ZXN0IC1mICIkY29sbGVjdDJuYW1lIiAmJiBcCi0gICAgICAgICAgICBzdHJpbmdzICIkY29sbGVjdDJuYW1lIiB8IGdyZXAgcmVzb2x2ZV9saWJfbmFtZSA+L2Rldi9udWxsCi0gICAgICAgICAgdGhlbgotICAgICAgICAgICAgIyBXZSBoYXZlIHJld29ya2VkIGNvbGxlY3QyCi0gICAgICAgICAgICA6Ci0gICAgICAgICAgZWxzZQotICAgICAgICAgICAgIyBXZSBoYXZlIG9sZCBjb2xsZWN0MgotICAgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXVuc3VwcG9ydGVkCi0gICAgICAgICAgICBoYXJkY29kZV9taW51c19MPXllcwotICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0KLSAgICAgICAgICBmaQotICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICAgIGZpCi0gICAgICAjIEJlZ2luIF9MVF9BQ19TWVNfTElCUEFUSF9BSVguCi0gICAgICBlY2hvICdpbnQgbWFpbiAoKSB7IHJldHVybiAwOyB9JyA+IGNvbmZ0ZXN0LmMKLSAgICAgICR7Q0N9ICR7TERGTEFHU30gY29uZnRlc3QuYyAtbyBjb25mdGVzdAotICAgICAgYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QgMj4vZGV2L251bGwgfCBzZWQgLW4gLWUgJy9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsgL14wLyB7IHMvXjAgICpcKC4qXCkkL1wxLzsgcDsgfQotfSdgCi0gICAgICBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0gICAgICAgIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0IDI+L2Rldi9udWxsIHwgc2VkIC1uIC1lICcvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7IC9eMC8geyBzL14wICAqXCguKlwpJC9cMS87IHA7IH0KLX0nYAotICAgICAgZmkKLSAgICAgIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLSAgICAgICAgYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiCi0gICAgICBmaQotICAgICAgcm0gLWYgY29uZnRlc3QuYyBjb25mdGVzdAotICAgICAgIyBFbmQgX0xUX0FDX1NZU19MSUJQQVRIX0FJWC4KLSAgICAgIGlmIHRlc3QgIiRhaXhfdXNlX3J1bnRpbWVsaW5raW5nIiA9IHllczsgdGhlbgotICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgZWxzZQotICAgICAgICBpZiB0ZXN0ICIkaG9zdF9jcHUiID0gaWE2NDsgdGhlbgotICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LVIgJGxpYmRpcjovdXNyL2xpYjovbGliJwotICAgICAgICBlbHNlCi0gICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgZmkKLSAgICAgIGZpCi0gICAgICA7OwotICAgIGFtaWdhb3MqKQotICAgICAgY2FzZSAiJGhvc3RfY3B1IiBpbgotICAgICAgICBwb3dlcnBjKQotICAgICAgICAgIDs7Ci0gICAgICAgIG02OGspCi0gICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0gICAgICAgICAgOzsKLSAgICAgIGVzYWMKLSAgICAgIDs7Ci0gICAgYnNkaVs0NV0qKQotICAgICAgOzsKLSAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZwotICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotICAgICAgbGliZXh0PWxpYgotICAgICAgOzsKLSAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCi0gICAgICBpZiB7IGNhc2UgJGNjX2Jhc2VuYW1lIGluIGlmb3J0KikgdHJ1ZTs7ICopIHRlc3QgIiRHQ0MiID0geWVzOzsgZXNhYzsgfTsgdGhlbgotICAgICAgICA6Ci0gICAgICBlbHNlCi0gICAgICAgIGxkX3NobGlicz1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgZGd1eCopCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCi0gICAgICA7OwotICAgIGZyZWVic2QyLlswMV0qKQotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgIDs7Ci0gICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgOzsKLSAgICBocHV4OSopCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9JGxpYmRpcicKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKLSAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgotICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgIDs7Ci0gICAgaHB1eDEwKikKLSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfStiICR7d2x9JGxpYmRpcicKLSAgICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0gICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKLSAgICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCi0gICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0gICAgICBmaQotICAgICAgOzsKLSAgICBocHV4MTEqKQotICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJwotICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKLSAgICAgICAgY2FzZSAkaG9zdF9jcHUgaW4KLSAgICAgICAgICBocHBhKjY0KnxpYTY0KikKLSAgICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubwotICAgICAgICAgICAgOzsKLSAgICAgICAgICAqKQotICAgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgICAgICAgIyBoYXJkY29kZV9taW51c19MOiBOb3QgcmVhbGx5IGluIHRoZSBzZWFyY2ggUEFUSCwKLSAgICAgICAgICAgICMgYnV0IGFzIHRoZSBkZWZhdWx0IGxvY2F0aW9uIG9mIHRoZSBsaWJyYXJ5LgotICAgICAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKLSAgICAgICAgICAgIDs7Ci0gICAgICAgIGVzYWMKLSAgICAgIGZpCi0gICAgICA7OwotICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKLSAgICAgIDs7Ci0gICAgbmV0YnNkKikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgIDs7Ci0gICAgbmV3c29zNikKLSAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotICAgICAgOzsKLSAgICAqbnRvKiB8ICpxbngqKQotICAgICAgOzsKLSAgICBvcGVuYnNkKikKLSAgICAgIGlmIHRlc3QgLWYgL3Vzci9saWJleGVjL2xkLnNvOyB0aGVuCi0gICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICAgaWYgdGVzdCAteiAiYGVjaG8gX19FTEZfXyB8ICRDQyAtRSAtIHwgZ3JlcCBfX0VMRl9fYCIgfHwgdGVzdCAiJGhvc3Rfb3MtJGhvc3RfY3B1IiA9ICJvcGVuYnNkMi44LXBvd2VycGMiOyB0aGVuCi0gICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLSAgICAgICAgZWxzZQotICAgICAgICAgIGNhc2UgIiRob3N0X29zIiBpbgotICAgICAgICAgICAgb3BlbmJzZFswMV0uKiB8IG9wZW5ic2QyLlswLTddIHwgb3BlbmJzZDIuWzAtN10uKikKLSAgICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgKikKLSAgICAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGgsJGxpYmRpcicKLSAgICAgICAgICAgICAgOzsKLSAgICAgICAgICBlc2FjCi0gICAgICAgIGZpCi0gICAgICBlbHNlCi0gICAgICAgIGxkX3NobGlicz1ubwotICAgICAgZmkKLSAgICAgIDs7Ci0gICAgb3MyKikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0gICAgICA7OwotICAgIG9zZjMqKQotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06Ci0gICAgICA7OwotICAgIG9zZjQqIHwgb3NmNSopCi0gICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICBlbHNlCi0gICAgICAgICMgQm90aCBjYyBhbmQgY3h4IGNvbXBpbGVyIHN1cHBvcnQgLXJwYXRoIGRpcmVjdGx5Ci0gICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1ycGF0aCAkbGliZGlyJwotICAgICAgZmkKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgotICAgICAgOzsKLSAgICBzb2xhcmlzKikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSAgICAgIDs7Ci0gICAgc3Vub3M0KikKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKLSAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCi0gICAgICA7OwotICAgIHN5c3Y0KQotICAgICAgY2FzZSAkaG9zdF92ZW5kb3IgaW4KLSAgICAgICAgc25pKQotICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMgIyBpcyB0aGlzIHJlYWxseSB0cnVlPz8/Ci0gICAgICAgICAgOzsKLSAgICAgICAgc2llbWVucykKLSAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KLSAgICAgICAgICA7OwotICAgICAgICBtb3Rvcm9sYSkKLSAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8gI01vdG9yb2xhIG1hbnVhbCBzYXlzIHllcywgYnV0IG15IHRlc3RzIHNheSB0aGV5IGxpZQotICAgICAgICAgIDs7Ci0gICAgICBlc2FjCi0gICAgICA7OwotICAgIHN5c3Y0LjMqKQotICAgICAgOzsKLSAgICBzeXN2NCpNUCopCi0gICAgICBpZiB0ZXN0IC1kIC91c3IvbmVjOyB0aGVuCi0gICAgICAgIGxkX3NobGlicz15ZXMKLSAgICAgIGZpCi0gICAgICA7OwotICAgIHN5c3Y0KnV3MiogfCBzeXN2NU9wZW5VTklYKiB8IHN5c3Y1VW5peFdhcmU3LlswMV0uWzEwXSogfCB1bml4d2FyZTcqIHwgc2NvMy4ydjUuMC5bMDI0XSopCi0gICAgICA7OwotICAgIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiopCi0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSdgdGVzdCAteiAiJFNDT0FCU1BBVEgiICYmIGVjaG8gJHt3bH0tUiwkbGliZGlyYCcKLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9JzonCi0gICAgICA7OwotICAgIHV0czQqKQotICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJwotICAgICAgOzsKLSAgICAqKQotICAgICAgbGRfc2hsaWJzPW5vCi0gICAgICA7OwotICBlc2FjCi1maQotCi0jIENoZWNrIGR5bmFtaWMgbGlua2VyIGNoYXJhY3RlcmlzdGljcwotIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIF9MVF9TWVNfRFlOQU1JQ19MSU5LRVIuCi0jIFVubGlrZSBsaWJ0b29sLm00LCBoZXJlIHdlIGRvbid0IGNhcmUgYWJvdXQgX2FsbF8gbmFtZXMgb2YgdGhlIGxpYnJhcnksIGJ1dAotIyBvbmx5IGFib3V0IHRoZSBvbmUgdGhlIGxpbmtlciBmaW5kcyB3aGVuIHBhc3NlZCAtbE5BTUUuIFRoaXMgaXMgdGhlIGxhc3QKLSMgZWxlbWVudCBvZiBsaWJyYXJ5X25hbWVzX3NwZWMgaW4gbGlidG9vbC5tNCwgb3IgcG9zc2libHkgdHdvIG9mIHRoZW0gaWYgdGhlCi0jIGxpbmtlciBoYXMgc3BlY2lhbCBzZWFyY2ggcnVsZXMuCi1saWJyYXJ5X25hbWVzX3NwZWM9ICAgICAgIyB0aGUgbGFzdCBlbGVtZW50IG9mIGxpYnJhcnlfbmFtZXNfc3BlYyBpbiBsaWJ0b29sLm00Ci1saWJuYW1lX3NwZWM9J2xpYiRuYW1lJwotY2FzZSAiJGhvc3Rfb3MiIGluCi0gIGFpeDMqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuYScKLSAgICA7OwotICBhaXhbNC05XSopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgYW1pZ2FvcyopCi0gICAgY2FzZSAiJGhvc3RfY3B1IiBpbgotICAgICAgcG93ZXJwYyopCi0gICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JyA7OwotICAgICAgbTY4aykKLSAgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5hJyA7OwotICAgIGVzYWMKLSAgICA7OwotICBiZW9zKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBic2RpWzQ1XSopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgIHNocmV4dD0uZGxsCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYSAkbGlibmFtZS5saWInCi0gICAgOzsKLSAgZGFyd2luKiB8IHJoYXBzb2R5KikKLSAgICBzaHJleHQ9LmR5bGliCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgZGd1eCopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgZnJlZWJzZFsyM10uKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCR2ZXJzdWZmaXgnCi0gICAgOzsKLSAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIGdudSopCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgaGFpa3UqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIGhwdXg5KiB8IGhwdXgxMCogfCBocHV4MTEqKQotICAgIGNhc2UgJGhvc3RfY3B1IGluCi0gICAgICBpYTY0KikKLSAgICAgICAgc2hyZXh0PS5zbwotICAgICAgICA7OwotICAgICAgaHBwYSo2NCopCi0gICAgICAgIHNocmV4dD0uc2wKLSAgICAgICAgOzsKLSAgICAgICopCi0gICAgICAgIHNocmV4dD0uc2wKLSAgICAgICAgOzsKLSAgICBlc2FjCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgaW50ZXJpeFszLTldKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIGNhc2UgIiRob3N0X29zIiBpbgotICAgICAgaXJpeDUqIHwgbm9uc3RvcHV4KikKLSAgICAgICAgbGlic3VmZj0gc2hsaWJzdWZmPQotICAgICAgICA7OwotICAgICAgKikKLSAgICAgICAgY2FzZSAkTEQgaW4KLSAgICAgICAgICAqLTMyfCoiLTMyICJ8Ki1tZWxmMzJic21pcHwqIi1tZWxmMzJic21pcCAiKSBsaWJzdWZmPSBzaGxpYnN1ZmY9IDs7Ci0gICAgICAgICAgKi1uMzJ8KiItbjMyICJ8Ki1tZWxmMzJibWlwbjMyfCoiLW1lbGYzMmJtaXBuMzIgIikgbGlic3VmZj0zMiBzaGxpYnN1ZmY9TjMyIDs7Ci0gICAgICAgICAgKi02NHwqIi02NCAifCotbWVsZjY0Ym1pcHwqIi1tZWxmNjRibWlwICIpIGxpYnN1ZmY9NjQgc2hsaWJzdWZmPTY0IDs7Ci0gICAgICAgICAgKikgbGlic3VmZj0gc2hsaWJzdWZmPSA7OwotICAgICAgICBlc2FjCi0gICAgICAgIDs7Ci0gICAgZXNhYwotICAgIDs7Ci0gIGxpbnV4Km9sZGxkKiB8IGxpbnV4KmFvdXQqIHwgbGludXgqY29mZiopCi0gICAgOzsKLSAgbGludXgqIHwgaypic2QqLWdudSB8IGtvcGVuc29sYXJpcyotZ251KQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIGtuZXRic2QqLWdudSkKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBuZXRic2QqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIG5ld3NvczYpCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCi0gICAgOzsKLSAgKm50byogfCAqcW54KikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBvcGVuYnNkKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCR2ZXJzdWZmaXgnCi0gICAgOzsKLSAgb3MyKikKLSAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotICAgIHNocmV4dD0uZGxsCi0gICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5hJwotICAgIDs7Ci0gIG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICByZG9zKikKLSAgICA7OwotICBzb2xhcmlzKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBzdW5vczQqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JHZlcnN1ZmZpeCcKLSAgICA7OwotICBzeXN2NCB8IHN5c3Y0LjMqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIHN5c3Y0Kk1QKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqIHwgc3lzdjQqdXcyKikKLSAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKLSAgICA7OwotICB0cGYqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci0gIHV0czQqKQotICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JwotICAgIDs7Ci1lc2FjCi0KLXNlZF9xdW90ZV9zdWJzdD0ncy9cKFsiYCRcXF1cKS9cXFwxL2cnCi1lc2NhcGVkX3dsPWBlY2hvICJYJHdsIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi1zaGxpYmV4dD1gZWNobyAiJHNocmV4dCIgfCBzZWQgLWUgJ3MsXlwuLCwnYAotZXNjYXBlZF9saWJuYW1lX3NwZWM9YGVjaG8gIlgkbGlibmFtZV9zcGVjIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi1lc2NhcGVkX2xpYnJhcnlfbmFtZXNfc3BlYz1gZWNobyAiWCRsaWJyYXJ5X25hbWVzX3NwZWMiIHwgc2VkIC1lICdzL15YLy8nIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLWVzY2FwZWRfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz1gZWNobyAiWCRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIiB8IHNlZCAtZSAncy9eWC8vJyAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0KLUxDX0FMTD1DIHNlZCAtZSAncy9eXChbYS16QS1aMC05X10qXCk9L2FjbF9jdl9cMT0vJyA8PEVPRgotCi0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi13bD0iJGVzY2FwZWRfd2wiCi0KLSMgU3RhdGljIGxpYnJhcnkgc3VmZml4IChub3JtYWxseSAiYSIpLgotbGliZXh0PSIkbGliZXh0IgotCi0jIFNoYXJlZCBsaWJyYXJ5IHN1ZmZpeCAobm9ybWFsbHkgInNvIikuCi1zaGxpYmV4dD0iJHNobGliZXh0IgotCi0jIEZvcm1hdCBvZiBsaWJyYXJ5IG5hbWUgcHJlZml4LgotbGlibmFtZV9zcGVjPSIkZXNjYXBlZF9saWJuYW1lX3NwZWMiCi0KLSMgTGlicmFyeSBuYW1lcyB0aGF0IHRoZSBsaW5rZXIgZmluZHMgd2hlbiBwYXNzZWQgLWxOQU1FLgotbGlicmFyeV9uYW1lc19zcGVjPSIkZXNjYXBlZF9saWJyYXJ5X25hbWVzX3NwZWMiCi0KLSMgRmxhZyB0byBoYXJkY29kZSBcJGxpYmRpciBpbnRvIGEgYmluYXJ5IGR1cmluZyBsaW5raW5nLgotIyBUaGlzIG11c3Qgd29yayBldmVuIGlmIFwkbGliZGlyIGRvZXMgbm90IGV4aXN0LgotaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0iJGVzY2FwZWRfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyIKLQotIyBXaGV0aGVyIHdlIG5lZWQgYSBzaW5nbGUgLXJwYXRoIGZsYWcgd2l0aCBhIHNlcGFyYXRlZCBhcmd1bWVudC4KLWhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9IiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIgotCi0jIFNldCB0byB5ZXMgaWYgdXNpbmcgRElSL2xpYk5BTUUuc28gZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvIHRoZQotIyByZXN1bHRpbmcgYmluYXJ5LgotaGFyZGNvZGVfZGlyZWN0PSIkaGFyZGNvZGVfZGlyZWN0IgotCi0jIFNldCB0byB5ZXMgaWYgdXNpbmcgdGhlIC1MRElSIGZsYWcgZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvIHRoZQotIyByZXN1bHRpbmcgYmluYXJ5LgotaGFyZGNvZGVfbWludXNfTD0iJGhhcmRjb2RlX21pbnVzX0wiCi0KLUVPRgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS9yZW1vdmUtcG90Y2RhdGUuc2luIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjE5LjguMS9yZW1vdmUtcG90Y2RhdGUuc2luCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyNDM2YzQ5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4xOS44LjEvcmVtb3ZlLXBvdGNkYXRlLnNpbgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLSMgU2VkIHNjcmlwdCB0aGF0IHJlbW92ZSB0aGUgUE9ULUNyZWF0aW9uLURhdGUgbGluZSBpbiB0aGUgaGVhZGVyIGVudHJ5Ci0jIGZyb20gYSBQT1QgZmlsZS4KLSMKLSMgVGhlIGRpc3RpbmN0aW9uIGJldHdlZW4gdGhlIGZpcnN0IGFuZCB0aGUgZm9sbG93aW5nIG9jY3VycmVuY2VzIG9mIHRoZQotIyBwYXR0ZXJuIGlzIGFjaGlldmVkIGJ5IGxvb2tpbmcgYXQgdGhlIGhvbGQgc3BhY2UuCi0vXiJQT1QtQ3JlYXRpb24tRGF0ZTogLioiJC97Ci14Ci0jIFRlc3QgaWYgdGhlIGhvbGQgc3BhY2UgaXMgZW1wdHkuCi1zL1AvUC8KLXRhCi0jIFllcyBpdCB3YXMgZW1wdHkuIEZpcnN0IG9jY3VycmVuY2UuIFJlbW92ZSB0aGUgbGluZS4KLWcKLWQKLWJiCi06YQotIyBUaGUgaG9sZCBzcGFjZSB3YXMgbm9uZW1wdHkuIEZvbGxvd2luZyBvY2N1cnJlbmNlcy4gRG8gbm90aGluZy4KLXgKLTpiCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL0NPUFlJTkcgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9DT1BZSU5HCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMTkuOC4xL0NPUFlJTkcKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL0NPUFlJTkcKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL01ha2VmaWxlLmluLmluIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvTWFrZWZpbGUuaW4uaW4KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRiNmFkMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL01ha2VmaWxlLmluLmluCkBAIC0wLDAgKzEsNTAzIEBACisjIE1ha2VmaWxlIGZvciBQTyBkaXJlY3RvcnkgaW4gYW55IHBhY2thZ2UgdXNpbmcgR05VIGdldHRleHQuCisjIENvcHlyaWdodCAoQykgMTk5NS0yMDAwIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGdudS5haS5taXQuZWR1PgorIyBDb3B5cmlnaHQgKEMpIDIwMDAtMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyMKKyMgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwKKyMgYXJlIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0CisjIG5vdGljZSBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLAorIyB3aXRob3V0IGFueSB3YXJyYW50eS4KKyMKKyMgT3JpZ2luOiBnZXR0ZXh0LTAuMjAKK0dFVFRFWFRfTUFDUk9fVkVSU0lPTiA9IDAuMjAKKworUEFDS0FHRSA9IEBQQUNLQUdFQAorVkVSU0lPTiA9IEBWRVJTSU9OQAorUEFDS0FHRV9CVUdSRVBPUlQgPSBAUEFDS0FHRV9CVUdSRVBPUlRACisKK1NFRCA9IEBTRURACitTSEVMTCA9IC9iaW4vc2gKK0BTRVRfTUFLRUAKKworc3JjZGlyID0gQHNyY2RpckAKK3RvcF9zcmNkaXIgPSBAdG9wX3NyY2RpckAKK1ZQQVRIID0gQHNyY2RpckAKKworcHJlZml4ID0gQHByZWZpeEAKK2V4ZWNfcHJlZml4ID0gQGV4ZWNfcHJlZml4QAorZGF0YXJvb3RkaXIgPSBAZGF0YXJvb3RkaXJACitkYXRhZGlyID0gQGRhdGFkaXJACitsb2NhbGVkaXIgPSBAbG9jYWxlZGlyQAorZ2V0dGV4dHNyY2RpciA9ICQoZGF0YWRpcikvZ2V0dGV4dC9wbworCitJTlNUQUxMID0gQElOU1RBTExACitJTlNUQUxMX0RBVEEgPSBASU5TVEFMTF9EQVRBQAorCisjIFdlIHVzZSAkKG1rZGlyX3ApLgorIyBJbiBhdXRvbWFrZSA8PSAxLjkueCwgJChta2Rpcl9wKSBpcyBkZWZpbmVkIGVpdGhlciBhcyAibWtkaXIgLXAgLS0iIG9yIGFzCisjICIkKG1raW5zdGFsbGRpcnMpIiBvciBhcyAiJChpbnN0YWxsX3NoKSAtZCIuIEZvciB0aGVzZSBhdXRvbWFrZSB2ZXJzaW9ucywKKyMgQGluc3RhbGxfc2hAIGRvZXMgbm90IHN0YXJ0IHdpdGggJChTSEVMTCksIHNvIHdlIGFkZCBpdC4KKyMgSW4gYXV0b21ha2UgPj0gMS4xMCwgQG1rZGlyX3BAIGlzIGRlcml2ZWQgZnJvbSAke01LRElSX1B9LCB3aGljaCBpcyBkZWZpbmVkCisjIGVpdGhlciBhcyAiL3BhdGgvdG8vbWtkaXIgLXAiIG9yICIuLi4vaW5zdGFsbC1zaCAtYyAtZCIuIEZvciB0aGVzZSBhdXRvbWFrZQorIyB2ZXJzaW9ucywgJChta2luc3RhbGxkaXJzKSBhbmQgJChpbnN0YWxsX3NoKSBhcmUgdW51c2VkLgorbWtpbnN0YWxsZGlycyA9ICQoU0hFTEwpIEBpbnN0YWxsX3NoQCAtZAoraW5zdGFsbF9zaCA9ICQoU0hFTEwpIEBpbnN0YWxsX3NoQAorTUtESVJfUCA9IEBNS0RJUl9QQAorbWtkaXJfcCA9IEBta2Rpcl9wQAorCisjIFdoZW4gYnVpbGRpbmcgZ2V0dGV4dC10b29scywgd2UgcHJlZmVyIHRvIHVzZSB0aGUgYnVpbHQgcHJvZ3JhbXMKKyMgcmF0aGVyIHRoYW4gaW5zdGFsbGVkIHByb2dyYW1zLiAgSG93ZXZlciwgd2UgY2FuJ3QgZG8gdGhhdCB3aGVuIHdlCisjIGFyZSBjcm9zcyBjb21waWxpbmcuCitDUk9TU19DT01QSUxJTkcgPSBAQ1JPU1NfQ09NUElMSU5HQAorCitHTVNHRk1UXyA9IEBHTVNHRk1UQAorR01TR0ZNVF9ubyA9IEBHTVNHRk1UQAorR01TR0ZNVF95ZXMgPSBAR01TR0ZNVF8wMTVACitHTVNHRk1UID0gJChHTVNHRk1UXyQoVVNFX01TR0NUWFQpKQorWEdFVFRFWFRfID0gQFhHRVRURVhUQAorWEdFVFRFWFRfbm8gPSBAWEdFVFRFWFRACitYR0VUVEVYVF95ZXMgPSBAWEdFVFRFWFRfMDE1QAorWEdFVFRFWFQgPSAkKFhHRVRURVhUXyQoVVNFX01TR0NUWFQpKQorTVNHTUVSR0UgPSBATVNHTUVSR0VACitNU0dNRVJHRV9VUERBVEUgPSBATVNHTUVSR0VAIC0tdXBkYXRlCitNU0dNRVJHRV9GT1JfTVNHRk1UX09QVElPTiA9IEBNU0dNRVJHRV9GT1JfTVNHRk1UX09QVElPTkAKK01TR0lOSVQgPSBtc2dpbml0CitNU0dDT05WID0gbXNnY29udgorTVNHRklMVEVSID0gbXNnZmlsdGVyCisKK1BPRklMRVMgPSBAUE9GSUxFU0AKK0dNT0ZJTEVTID0gQEdNT0ZJTEVTQAorVVBEQVRFUE9GSUxFUyA9IEBVUERBVEVQT0ZJTEVTQAorRFVNTVlQT0ZJTEVTID0gQERVTU1ZUE9GSUxFU0AKK0RJU1RGSUxFUy5jb21tb24gPSBNYWtlZmlsZS5pbi5pbiByZW1vdmUtcG90Y2RhdGUuc2luIFwKKyQoRElTVEZJTEVTLmNvbW1vbi5leHRyYTEpICQoRElTVEZJTEVTLmNvbW1vbi5leHRyYTIpICQoRElTVEZJTEVTLmNvbW1vbi5leHRyYTMpCitESVNURklMRVMgPSAkKERJU1RGSUxFUy5jb21tb24pIE1ha2V2YXJzIFBPVEZJTEVTLmluIFwKKyQoUE9GSUxFUykgJChHTU9GSUxFUykgXAorJChESVNURklMRVMuZXh0cmExKSAkKERJU1RGSUxFUy5leHRyYTIpICQoRElTVEZJTEVTLmV4dHJhMykKKworUE9URklMRVMgPSBcCisKK0NBVEFMT0dTID0gQENBVEFMT0dTQAorCitQT0ZJTEVTREVQU18gPSAkKHNyY2RpcikvJChET01BSU4pLnBvdAorUE9GSUxFU0RFUFNfeWVzID0gJChQT0ZJTEVTREVQU18pCitQT0ZJTEVTREVQU19ubyA9CitQT0ZJTEVTREVQUyA9ICQoUE9GSUxFU0RFUFNfJChQT19ERVBFTkRTX09OX1BPVCkpCisKK0RJU1RGSUxFU0RFUFNfID0gdXBkYXRlLXBvCitESVNURklMRVNERVBTX3llcyA9ICQoRElTVEZJTEVTREVQU18pCitESVNURklMRVNERVBTX25vID0KK0RJU1RGSUxFU0RFUFMgPSAkKERJU1RGSUxFU0RFUFNfJChESVNUX0RFUEVORFNfT05fVVBEQVRFX1BPKSkKKworIyBNYWtldmFycyBnZXRzIGluc2VydGVkIGhlcmUuIChEb24ndCByZW1vdmUgdGhpcyBsaW5lISkKKworLlNVRkZJWEVTOgorLlNVRkZJWEVTOiAucG8gLmdtbyAuc2VkIC5zaW4gLm5vcCAucG8tY3JlYXRlIC5wby11cGRhdGUKKworIyBUaGUgLnBvdCBmaWxlLCBzdGFtcC1wbywgLnBvIGZpbGVzLCBhbmQgLmdtbyBmaWxlcyBhcHBlYXIgaW4gcmVsZWFzZSB0YXJiYWxscy4KKyMgVGhlIEdOVSBDb2RpbmcgU3RhbmRhcmRzIHNheSBpbgorIyA8aHR0cHM6Ly93d3cuZ251Lm9yZy9wcmVwL3N0YW5kYXJkcy9odG1sX25vZGUvTWFrZWZpbGUtQmFzaWNzLmh0bWw+OgorIyAgICJHTlUgZGlzdHJpYnV0aW9ucyB1c3VhbGx5IGNvbnRhaW4gc29tZSBmaWxlcyB3aGljaCBhcmUgbm90IHNvdXJjZSBmaWxlcworIyAgICAuLi4gLiBTaW5jZSB0aGVzZSBmaWxlcyBub3JtYWxseSBhcHBlYXIgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnksIHRoZXkKKyMgICAgc2hvdWxkIGFsd2F5cyBhcHBlYXIgaW4gdGhlIHNvdXJjZSBkaXJlY3RvcnksIG5vdCBpbiB0aGUgYnVpbGQgZGlyZWN0b3J5LgorIyAgICBTbyBNYWtlZmlsZSBydWxlcyB0byB1cGRhdGUgdGhlbSBzaG91bGQgcHV0IHRoZSB1cGRhdGVkIGZpbGVzIGluIHRoZQorIyAgICBzb3VyY2UgZGlyZWN0b3J5LiIKKyMgVGhlcmVmb3JlIHdlIHB1dCB0aGVzZSBmaWxlcyBpbiB0aGUgc291cmNlIGRpcmVjdG9yeSwgbm90IHRoZSBidWlsZCBkaXJlY3RvcnkuCisKKyMgRHVyaW5nIC5wbyAtPiAuZ21vIGNvbnZlcnNpb24sIHRha2UgaW50byBhY2NvdW50IHRoZSBtb3N0IHJlY2VudCBjaGFuZ2VzIHRvCisjIHRoZSAucG90IGZpbGUuIFRoaXMgZWxpbWluYXRlcyB0aGUgbmVlZCB0byB1cGRhdGUgdGhlIC5wbyBmaWxlcyB3aGVuIHRoZQorIyAucG90IGZpbGUgaGFzIGNoYW5nZWQsIHdoaWNoIHdvdWxkIGJlIHRyb3VibGVzb21lIGlmIHRoZSAucG8gZmlsZXMgYXJlIHB1dAorIyB1bmRlciB2ZXJzaW9uIGNvbnRyb2wuCisucG8uZ21vOiAkKHNyY2RpcikvJChET01BSU4pLnBvdAorCUBsYW5nPWBlY2hvICQqIHwgc2VkIC1lICdzLC4qLywsJ2A7IFwKKwl0ZXN0ICIkKHNyY2RpcikiID0gLiAmJiBjZGNtZD0iIiB8fCBjZGNtZD0iY2QgJChzcmNkaXIpICYmICI7IFwKKwllY2hvICIkJHtjZGNtZH1ybSAtZiAkJHtsYW5nfS5nbW8gJiYgJChNU0dNRVJHRSkgJChNU0dNRVJHRV9GT1JfTVNHRk1UX09QVElPTikgLW8gJCR7bGFuZ30uMXBvICQke2xhbmd9LnBvICQoRE9NQUlOKS5wb3QgJiYgJChHTVNHRk1UKSAtYyAtLXN0YXRpc3RpY3MgLS12ZXJib3NlIC1vICQke2xhbmd9LmdtbyAkJHtsYW5nfS4xcG8gJiYgcm0gLWYgJCR7bGFuZ30uMXBvIjsgXAorCWNkICQoc3JjZGlyKSAmJiBcCisJcm0gLWYgJCR7bGFuZ30uZ21vICYmIFwKKwkkKE1TR01FUkdFKSAkKE1TR01FUkdFX0ZPUl9NU0dGTVRfT1BUSU9OKSAtbyAkJHtsYW5nfS4xcG8gJCR7bGFuZ30ucG8gJChET01BSU4pLnBvdCAmJiBcCisJJChHTVNHRk1UKSAtYyAtLXN0YXRpc3RpY3MgLS12ZXJib3NlIC1vIHQtJCR7bGFuZ30uZ21vICQke2xhbmd9LjFwbyAmJiBcCisJbXYgdC0kJHtsYW5nfS5nbW8gJCR7bGFuZ30uZ21vICYmIFwKKwlybSAtZiAkJHtsYW5nfS4xcG8KKworLnNpbi5zZWQ6CisJc2VkIC1lICcvXiMvZCcgJDwgPiB0LSRACisJbXYgdC0kQCAkQAorCisKK2FsbDogYWxsLUBVU0VfTkxTQAorCithbGwteWVzOiAkKHNyY2Rpcikvc3RhbXAtcG8KK2FsbC1ubzoKKworIyBFbnN1cmUgdGhhdCB0aGUgZ2V0dGV4dCBtYWNyb3MgYW5kIHRoaXMgTWFrZWZpbGUuaW4uaW4gYXJlIGluIHN5bmMuCitDSEVDS19NQUNST19WRVJTSU9OID0gXAorCXRlc3QgIiQoR0VUVEVYVF9NQUNST19WRVJTSU9OKSIgPSAiQEdFVFRFWFRfTUFDUk9fVkVSU0lPTkAiIFwKKwkgIHx8IHsgZWNobyAiKioqIGVycm9yOiBnZXR0ZXh0IGluZnJhc3RydWN0dXJlIG1pc21hdGNoOiB1c2luZyBhIE1ha2VmaWxlLmluLmluIGZyb20gZ2V0dGV4dCB2ZXJzaW9uICQoR0VUVEVYVF9NQUNST19WRVJTSU9OKSBidXQgdGhlIGF1dG9jb25mIG1hY3JvcyBhcmUgZnJvbSBnZXR0ZXh0IHZlcnNpb24gQEdFVFRFWFRfTUFDUk9fVkVSU0lPTkAiIDE+JjI7IFwKKwkgICAgICAgZXhpdCAxOyBcCisJICAgICB9CisKKyMgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgaXMgb25seSBjcmVhdGVkIHdoZW4gbmVlZGVkLiBXaGVuIHhnZXR0ZXh0IGZpbmRzIG5vCisjIGludGVybmF0aW9uYWxpemVkIG1lc3NhZ2VzLCBubyAkKHNyY2RpcikvJChET01BSU4pLnBvdCBpcyBjcmVhdGVkIChiZWNhdXNlCisjIHdlIGRvbid0IHdhbnQgdG8gYm90aGVyIHRyYW5zbGF0b3JzIHdpdGggZW1wdHkgUE9UIGZpbGVzKS4gV2UgYXNzdW1lIHRoYXQKKyMgTElOR1VBUyBpcyBlbXB0eSBpbiB0aGlzIGNhc2UsIGkuZS4gJChQT0ZJTEVTKSBhbmQgJChHTU9GSUxFUykgYXJlIGVtcHR5LgorIyBJbiB0aGlzIGNhc2UsICQoc3JjZGlyKS9zdGFtcC1wbyBpcyBhIG5vcCAoaS5lLiBhIHBob255IHRhcmdldCkuCisKKyMgJChzcmNkaXIpL3N0YW1wLXBvIGlzIGEgdGltZXN0YW1wIGRlbm90aW5nIHRoZSBsYXN0IHRpbWUgYXQgd2hpY2ggdGhlIENBVEFMT0dTCisjIGhhdmUgYmVlbiBsb29zZWx5IHVwZGF0ZWQuIEl0cyBwdXJwb3NlIGlzIHRoYXQgd2hlbiBhIGRldmVsb3BlciBvciB0cmFuc2xhdG9yCisjIGNoZWNrcyBvdXQgdGhlIHBhY2thZ2UgZnJvbSBhIHZlcnNpb24gY29udHJvbCBzeXN0ZW0sIGFuZCB0aGUgJChET01BSU4pLnBvdAorIyBmaWxlIGlzIG5vdCB1bmRlciB2ZXJzaW9uIGNvbnRyb2wsICJtYWtlIiB3aWxsIHVwZGF0ZSB0aGUgJChET01BSU4pLnBvdCBhbmQKKyMgdGhlICQoQ0FUQUxPR1MpLCBidXQgc3Vic2VxdWVudCBpbnZvY2F0aW9ucyBvZiAibWFrZSIgd2lsbCBkbyBub3RoaW5nLiBUaGlzCisjIHRpbWVzdGFtcCB3b3VsZCBub3QgYmUgbmVjZXNzYXJ5IGlmIHVwZGF0aW5nIHRoZSAkKENBVEFMT0dTKSB3b3VsZCBhbHdheXMKKyMgdG91Y2ggdGhlbTsgaG93ZXZlciwgdGhlIHJ1bGUgZm9yICQoUE9GSUxFUykgaGFzIGJlZW4gZGVzaWduZWQgdG8gbm90IHRvdWNoCisjIGZpbGVzIHRoYXQgZG9uJ3QgbmVlZCB0byBiZSBjaGFuZ2VkLgorJChzcmNkaXIpL3N0YW1wLXBvOiAkKHNyY2RpcikvJChET01BSU4pLnBvdAorCUAkKENIRUNLX01BQ1JPX1ZFUlNJT04pCisJdGVzdCAhIC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90IHx8IFwKKwkgIHRlc3QgLXogIiQoR01PRklMRVMpIiB8fCAkKE1BS0UpICQoR01PRklMRVMpCisJQHRlc3QgISAtZiAkKHNyY2RpcikvJChET01BSU4pLnBvdCB8fCB7IFwKKwkgIGVjaG8gInRvdWNoICQoc3JjZGlyKS9zdGFtcC1wbyIgJiYgXAorCSAgZWNobyB0aW1lc3RhbXAgPiAkKHNyY2Rpcikvc3RhbXAtcG9UICYmIFwKKwkgIG12ICQoc3JjZGlyKS9zdGFtcC1wb1QgJChzcmNkaXIpL3N0YW1wLXBvOyBcCisJfQorCisjIE5vdGU6IFRhcmdldCAnYWxsJyBtdXN0IG5vdCBkZXBlbmQgb24gdGFyZ2V0ICckKERPTUFJTikucG90LXVwZGF0ZScsCisjIG90aGVyd2lzZSBwYWNrYWdlcyBsaWtlIEdDQyBjYW4gbm90IGJlIGJ1aWx0IGlmIG9ubHkgcGFydHMgb2YgdGhlIHNvdXJjZQorIyBoYXZlIGJlZW4gZG93bmxvYWRlZC4KKworIyBUaGlzIHRhcmdldCByZWJ1aWxkcyAkKERPTUFJTikucG90OyBpdCBpcyBhbiBleHBlbnNpdmUgb3BlcmF0aW9uLgorIyBOb3RlIHRoYXQgJChET01BSU4pLnBvdCBpcyBub3QgdG91Y2hlZCBpZiBpdCBkb2Vzbid0IG5lZWQgdG8gYmUgY2hhbmdlZC4KKyMgVGhlIGRldGVybWluYXRpb24gb2Ygd2hldGhlciB0aGUgcGFja2FnZSB4eXogaXMgYSBHTlUgb25lIGlzIGJhc2VkIG9uIHRoZQorIyBoZXVyaXN0aWMgd2hldGhlciBzb21lIGZpbGUgaW4gdGhlIHRvcCBsZXZlbCBkaXJlY3RvcnkgbWVudGlvbnMgIkdOVSB4eXoiLgorIyBJZiBHTlUgJ2ZpbmQnIGlzIGF2YWlsYWJsZSwgd2UgYXZvaWQgZ3JlcHBpbmcgdGhyb3VnaCBtb25zdGVyIGZpbGVzLgorJChET01BSU4pLnBvdC11cGRhdGU6ICQoUE9URklMRVMpICQoc3JjZGlyKS9QT1RGSUxFUy5pbiByZW1vdmUtcG90Y2RhdGUuc2VkCisJcGFja2FnZV9nbnU9IiQoUEFDS0FHRV9HTlUpIjsgXAorCXRlc3QgLW4gIiQkcGFja2FnZV9nbnUiIHx8IHsgXAorCSAgaWYgeyBpZiAoTENfQUxMPUMgZmluZCAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwgZ3JlcCBHTlUgPi9kZXYvbnVsbDsgdGhlbiBcCisJICAgICAgICAgTENfQUxMPUMgZmluZCAtTCAkKHRvcF9zcmNkaXIpIC1tYXhkZXB0aCAxIC10eXBlIGYgLXNpemUgLTEwMDAwMDAwYyAtZXhlYyBncmVwIC1pICdHTlUgQFBBQ0tBR0VAJyAvZGV2L251bGwgJ3t9JyAnOycgMj4vZGV2L251bGw7IFwKKwkgICAgICAgZWxzZSBcCisJICAgICAgICAgTENfQUxMPUMgZ3JlcCAtaSAnR05VIEBQQUNLQUdFQCcgJCh0b3Bfc3JjZGlyKS8qIDI+L2Rldi9udWxsOyBcCisJICAgICAgIGZpOyBcCisJICAgICB9IHwgZ3JlcCAtdiAnbGlidG9vbDonID4vZGV2L251bGw7IHRoZW4gXAorCSAgICAgcGFja2FnZV9nbnU9eWVzOyBcCisJICAgZWxzZSBcCisJICAgICBwYWNrYWdlX2dudT1ubzsgXAorCSAgIGZpOyBcCisJfTsgXAorCWlmIHRlc3QgIiQkcGFja2FnZV9nbnUiID0gInllcyI7IHRoZW4gXAorCSAgcGFja2FnZV9wcmVmaXg9J0dOVSAnOyBcCisJZWxzZSBcCisJICBwYWNrYWdlX3ByZWZpeD0nJzsgXAorCWZpOyBcCisJaWYgdGVzdCAtbiAnJChNU0dJRF9CVUdTX0FERFJFU1MpJyB8fCB0ZXN0ICckKFBBQ0tBR0VfQlVHUkVQT1JUKScgPSAnQCdQQUNLQUdFX0JVR1JFUE9SVCdAJzsgdGhlbiBcCisJICBtc2dpZF9idWdzX2FkZHJlc3M9JyQoTVNHSURfQlVHU19BRERSRVNTKSc7IFwKKwllbHNlIFwKKwkgIG1zZ2lkX2J1Z3NfYWRkcmVzcz0nJChQQUNLQUdFX0JVR1JFUE9SVCknOyBcCisJZmk7IFwKKwljYXNlIGAkKFhHRVRURVhUKSAtLXZlcnNpb24gfCBzZWQgMXEgfCBzZWQgLWUgJ3MsXlteMC05XSosLCdgIGluIFwKKwkgICcnIHwgMC5bMC05XSB8IDAuWzAtOV0uKiB8IDAuMVswLTVdIHwgMC4xWzAtNV0uKiB8IDAuMTYgfCAwLjE2LlswLTFdKikgXAorCSAgICAkKFhHRVRURVhUKSAtLWRlZmF1bHQtZG9tYWluPSQoRE9NQUlOKSAtLWRpcmVjdG9yeT0kKHRvcF9zcmNkaXIpIFwKKwkgICAgICAtLWFkZC1jb21tZW50cz1UUkFOU0xBVE9SUzogXAorCSAgICAgIC0tZmlsZXMtZnJvbT0kKHNyY2RpcikvUE9URklMRVMuaW4gXAorCSAgICAgIC0tY29weXJpZ2h0LWhvbGRlcj0nJChDT1BZUklHSFRfSE9MREVSKScgXAorCSAgICAgIC0tbXNnaWQtYnVncy1hZGRyZXNzPSIkJG1zZ2lkX2J1Z3NfYWRkcmVzcyIgXAorCSAgICAgICQoWEdFVFRFWFRfT1BUSU9OUykgQFhHRVRURVhUX0VYVFJBX09QVElPTlNAIFwKKwkgICAgOzsgXAorCSAgKikgXAorCSAgICAkKFhHRVRURVhUKSAtLWRlZmF1bHQtZG9tYWluPSQoRE9NQUlOKSAtLWRpcmVjdG9yeT0kKHRvcF9zcmNkaXIpIFwKKwkgICAgICAtLWFkZC1jb21tZW50cz1UUkFOU0xBVE9SUzogXAorCSAgICAgIC0tZmlsZXMtZnJvbT0kKHNyY2RpcikvUE9URklMRVMuaW4gXAorCSAgICAgIC0tY29weXJpZ2h0LWhvbGRlcj0nJChDT1BZUklHSFRfSE9MREVSKScgXAorCSAgICAgIC0tcGFja2FnZS1uYW1lPSIkJHtwYWNrYWdlX3ByZWZpeH1AUEFDS0FHRUAiIFwKKwkgICAgICAtLXBhY2thZ2UtdmVyc2lvbj0nQFZFUlNJT05AJyBcCisJICAgICAgLS1tc2dpZC1idWdzLWFkZHJlc3M9IiQkbXNnaWRfYnVnc19hZGRyZXNzIiBcCisJICAgICAgJChYR0VUVEVYVF9PUFRJT05TKSBAWEdFVFRFWFRfRVhUUkFfT1BUSU9OU0AgXAorCSAgICA7OyBcCisJZXNhYworCXRlc3QgISAtZiAkKERPTUFJTikucG8gfHwgeyBcCisJICBpZiB0ZXN0IC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90LWhlYWRlcjsgdGhlbiBcCisJICAgIHNlZCAtZSAnMSwvXiMkJC9kJyA8ICQoRE9NQUlOKS5wbyA+ICQoRE9NQUlOKS4xcG8gJiYgXAorCSAgICBjYXQgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QtaGVhZGVyICQoRE9NQUlOKS4xcG8gPiAkKERPTUFJTikucG8gJiYgXAorCSAgICBybSAtZiAkKERPTUFJTikuMXBvIFwKKwkgICAgfHwgZXhpdCAxOyBcCisJICBmaTsgXAorCSAgaWYgdGVzdCAtZiAkKHNyY2RpcikvJChET01BSU4pLnBvdDsgdGhlbiBcCisJICAgIHNlZCAtZiByZW1vdmUtcG90Y2RhdGUuc2VkIDwgJChzcmNkaXIpLyQoRE9NQUlOKS5wb3QgPiAkKERPTUFJTikuMXBvICYmIFwKKwkgICAgc2VkIC1mIHJlbW92ZS1wb3RjZGF0ZS5zZWQgPCAkKERPTUFJTikucG8gPiAkKERPTUFJTikuMnBvICYmIFwKKwkgICAgaWYgY21wICQoRE9NQUlOKS4xcG8gJChET01BSU4pLjJwbyA+L2Rldi9udWxsIDI+JjE7IHRoZW4gXAorCSAgICAgIHJtIC1mICQoRE9NQUlOKS4xcG8gJChET01BSU4pLjJwbyAkKERPTUFJTikucG87IFwKKwkgICAgZWxzZSBcCisJICAgICAgcm0gLWYgJChET01BSU4pLjFwbyAkKERPTUFJTikuMnBvICQoc3JjZGlyKS8kKERPTUFJTikucG90ICYmIFwKKwkgICAgICBtdiAkKERPTUFJTikucG8gJChzcmNkaXIpLyQoRE9NQUlOKS5wb3Q7IFwKKwkgICAgZmk7IFwKKwkgIGVsc2UgXAorCSAgICBtdiAkKERPTUFJTikucG8gJChzcmNkaXIpLyQoRE9NQUlOKS5wb3Q7IFwKKwkgIGZpOyBcCisJfQorCisjIFRoaXMgcnVsZSBoYXMgbm8gZGVwZW5kZW5jaWVzOiB3ZSBkb24ndCBuZWVkIHRvIHVwZGF0ZSAkKERPTUFJTikucG90IGF0CisjIGV2ZXJ5ICJtYWtlIiBpbnZvY2F0aW9uLCBvbmx5IGNyZWF0ZSBpdCB3aGVuIGl0IGlzIG1pc3NpbmcuCisjIE9ubHkgIm1ha2UgJChET01BSU4pLnBvdC11cGRhdGUiIG9yICJtYWtlIGRpc3QiIHdpbGwgZm9yY2UgYW4gdXBkYXRlLgorJChzcmNkaXIpLyQoRE9NQUlOKS5wb3Q6CisJJChNQUtFKSAkKERPTUFJTikucG90LXVwZGF0ZQorCisjIFRoaXMgdGFyZ2V0IHJlYnVpbGRzIGEgUE8gZmlsZSBpZiAkKERPTUFJTikucG90IGhhcyBjaGFuZ2VkLgorIyBOb3RlIHRoYXQgYSBQTyBmaWxlIGlzIG5vdCB0b3VjaGVkIGlmIGl0IGRvZXNuJ3QgbmVlZCB0byBiZSBjaGFuZ2VkLgorJChQT0ZJTEVTKTogJChQT0ZJTEVTREVQUykKKwlAdGVzdCAtZiAkKHNyY2RpcikvJChET01BSU4pLnBvdCB8fCAkKE1BS0UpICQoc3JjZGlyKS8kKERPTUFJTikucG90CisJQGxhbmc9YGVjaG8gJEAgfCBzZWQgLWUgJ3MsLiovLCwnIC1lICdzL1wucG8kJC8vJ2A7IFwKKwlpZiB0ZXN0IC1mICIkKHNyY2RpcikvJCR7bGFuZ30ucG8iOyB0aGVuIFwKKwkgIHRlc3QgIiQoc3JjZGlyKSIgPSAuICYmIGNkY21kPSIiIHx8IGNkY21kPSJjZCAkKHNyY2RpcikgJiYgIjsgXAorCSAgZWNobyAiJCR7Y2RjbWR9JChNU0dNRVJHRV9VUERBVEUpICQoTVNHTUVSR0VfT1BUSU9OUykgLS1sYW5nPSQke2xhbmd9IC0tcHJldmlvdXMgJCR7bGFuZ30ucG8gJChET01BSU4pLnBvdCI7IFwKKwkgIGNkICQoc3JjZGlyKSBcCisJICAgICYmIHsgY2FzZSBgJChNU0dNRVJHRV9VUERBVEUpIC0tdmVyc2lvbiB8IHNlZCAxcSB8IHNlZCAtZSAncyxeW14wLTldKiwsJ2AgaW4gXAorCSAgICAgICAgICAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtNV0gfCAwLjFbMC01XS4qKSBcCisJICAgICAgICAgICAgICQoTVNHTUVSR0VfVVBEQVRFKSAkKE1TR01FUkdFX09QVElPTlMpICQke2xhbmd9LnBvICQoRE9NQUlOKS5wb3Q7OyBcCisJICAgICAgICAgICAwLjFbNi03XSB8IDAuMVs2LTddLiopIFwKKwkgICAgICAgICAgICAgJChNU0dNRVJHRV9VUERBVEUpICQoTVNHTUVSR0VfT1BUSU9OUykgLS1wcmV2aW91cyAkJHtsYW5nfS5wbyAkKERPTUFJTikucG90OzsgXAorCSAgICAgICAgICAgKikgXAorCSAgICAgICAgICAgICAkKE1TR01FUkdFX1VQREFURSkgJChNU0dNRVJHRV9PUFRJT05TKSAtLWxhbmc9JCR7bGFuZ30gLS1wcmV2aW91cyAkJHtsYW5nfS5wbyAkKERPTUFJTikucG90OzsgXAorCSAgICAgICAgIGVzYWM7IFwKKwkgICAgICAgfTsgXAorCWVsc2UgXAorCSAgJChNQUtFKSAkJHtsYW5nfS5wby1jcmVhdGU7IFwKKwlmaQorCisKK2luc3RhbGw6IGluc3RhbGwtZXhlYyBpbnN0YWxsLWRhdGEKK2luc3RhbGwtZXhlYzoKK2luc3RhbGwtZGF0YTogaW5zdGFsbC1kYXRhLUBVU0VfTkxTQAorCWlmIHRlc3QgIiQoUEFDS0FHRSkiID0gImdldHRleHQtdG9vbHMiOyB0aGVuIFwKKwkgICQobWtkaXJfcCkgJChERVNURElSKSQoZ2V0dGV4dHNyY2Rpcik7IFwKKwkgIGZvciBmaWxlIGluICQoRElTVEZJTEVTLmNvbW1vbikgTWFrZXZhcnMudGVtcGxhdGU7IGRvIFwKKwkgICAgJChJTlNUQUxMX0RBVEEpICQoc3JjZGlyKS8kJGZpbGUgXAorCQkJICAgICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpLyQkZmlsZTsgXAorCSAgZG9uZTsgXAorCSAgZm9yIGZpbGUgaW4gTWFrZXZhcnM7IGRvIFwKKwkgICAgcm0gLWYgJChERVNURElSKSQoZ2V0dGV4dHNyY2RpcikvJCRmaWxlOyBcCisJICBkb25lOyBcCisJZWxzZSBcCisJICA6IDsgXAorCWZpCitpbnN0YWxsLWRhdGEtbm86IGFsbAoraW5zdGFsbC1kYXRhLXllczogYWxsCisJQGNhdGFsb2dzPSckKENBVEFMT0dTKSc7IFwKKwlmb3IgY2F0IGluICQkY2F0YWxvZ3M7IGRvIFwKKwkgIGNhdD1gYmFzZW5hbWUgJCRjYXRgOyBcCisJICBsYW5nPWBlY2hvICQkY2F0IHwgc2VkIC1lICdzL1wuZ21vJCQvLydgOyBcCisJICBkaXI9JChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUzsgXAorCSAgJChta2Rpcl9wKSAkKERFU1RESVIpJCRkaXI7IFwKKwkgIGlmIHRlc3QgLXIgJCRjYXQ7IHRoZW4gcmVhbGNhdD0kJGNhdDsgZWxzZSByZWFsY2F0PSQoc3JjZGlyKS8kJGNhdDsgZmk7IFwKKwkgICQoSU5TVEFMTF9EQVRBKSAkJHJlYWxjYXQgJChERVNURElSKSQkZGlyLyQoRE9NQUlOKS5tbzsgXAorCSAgZWNobyAiaW5zdGFsbGluZyAkJHJlYWxjYXQgYXMgJChERVNURElSKSQkZGlyLyQoRE9NQUlOKS5tbyI7IFwKKwkgIGZvciBsYyBpbiAnJyAkKEVYVFJBX0xPQ0FMRV9DQVRFR09SSUVTKTsgZG8gXAorCSAgICBpZiB0ZXN0IC1uICIkJGxjIjsgdGhlbiBcCisJICAgICAgaWYgKGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nICYmIExDX0FMTD1DIGxzIC1sIC1kICQkbGMgMj4vZGV2L251bGwpIHwgZ3JlcCAnIC0+ICcgPi9kZXYvbnVsbDsgdGhlbiBcCisJICAgICAgICBsaW5rPWBjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZyAmJiBMQ19BTEw9QyBscyAtbCAtZCAkJGxjIHwgc2VkIC1lICdzL14uKiAtPiAvLydgOyBcCisJICAgICAgICBtdiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkOyBcCisJICAgICAgICBta2RpciAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCisJICAgICAgICAoY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQgJiYgXAorCSAgICAgICAgIGZvciBmaWxlIGluICo7IGRvIFwKKwkgICAgICAgICAgIGlmIHRlc3QgLWYgJCRmaWxlOyB0aGVuIFwKKwkgICAgICAgICAgICAgbG4gLXMgLi4vJCRsaW5rLyQkZmlsZSAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQkZmlsZTsgXAorCSAgICAgICAgICAgZmk7IFwKKwkgICAgICAgICBkb25lKTsgXAorCSAgICAgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQ7IFwKKwkgICAgICBlbHNlIFwKKwkgICAgICAgIGlmIHRlc3QgLWQgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgdGhlbiBcCisJICAgICAgICAgIDo7IFwKKwkgICAgICAgIGVsc2UgXAorCSAgICAgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCisJICAgICAgICAgIG1rZGlyICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKKwkgICAgICAgIGZpOyBcCisJICAgICAgZmk7IFwKKwkgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbzsgXAorCSAgICAgIGxuIC1zIC4uL0xDX01FU1NBR0VTLyQoRE9NQUlOKS5tbyAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQoRE9NQUlOKS5tbyAyPi9kZXYvbnVsbCB8fCBcCisJICAgICAgbG4gJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvTENfTUVTU0FHRVMvJChET01BSU4pLm1vICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vIDI+L2Rldi9udWxsIHx8IFwKKwkgICAgICBjcCAtcCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUy8kKERPTUFJTikubW8gJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW87IFwKKwkgICAgICBlY2hvICJpbnN0YWxsaW5nICQkcmVhbGNhdCBsaW5rIGFzICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMvJChET01BSU4pLm1vIjsgXAorCSAgICBmaTsgXAorCSAgZG9uZTsgXAorCWRvbmUKKworaW5zdGFsbC1zdHJpcDogaW5zdGFsbAorCitpbnN0YWxsZGlyczogaW5zdGFsbGRpcnMtZXhlYyBpbnN0YWxsZGlycy1kYXRhCitpbnN0YWxsZGlycy1leGVjOgoraW5zdGFsbGRpcnMtZGF0YTogaW5zdGFsbGRpcnMtZGF0YS1AVVNFX05MU0AKKwlpZiB0ZXN0ICIkKFBBQ0tBR0UpIiA9ICJnZXR0ZXh0LXRvb2xzIjsgdGhlbiBcCisJICAkKG1rZGlyX3ApICQoREVTVERJUikkKGdldHRleHRzcmNkaXIpOyBcCisJZWxzZSBcCisJICA6IDsgXAorCWZpCitpbnN0YWxsZGlycy1kYXRhLW5vOgoraW5zdGFsbGRpcnMtZGF0YS15ZXM6CisJQGNhdGFsb2dzPSckKENBVEFMT0dTKSc7IFwKKwlmb3IgY2F0IGluICQkY2F0YWxvZ3M7IGRvIFwKKwkgIGNhdD1gYmFzZW5hbWUgJCRjYXRgOyBcCisJICBsYW5nPWBlY2hvICQkY2F0IHwgc2VkIC1lICdzL1wuZ21vJCQvLydgOyBcCisJICBkaXI9JChsb2NhbGVkaXIpLyQkbGFuZy9MQ19NRVNTQUdFUzsgXAorCSAgJChta2Rpcl9wKSAkKERFU1RESVIpJCRkaXI7IFwKKwkgIGZvciBsYyBpbiAnJyAkKEVYVFJBX0xPQ0FMRV9DQVRFR09SSUVTKTsgZG8gXAorCSAgICBpZiB0ZXN0IC1uICIkJGxjIjsgdGhlbiBcCisJICAgICAgaWYgKGNkICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nICYmIExDX0FMTD1DIGxzIC1sIC1kICQkbGMgMj4vZGV2L251bGwpIHwgZ3JlcCAnIC0+ICcgPi9kZXYvbnVsbDsgdGhlbiBcCisJICAgICAgICBsaW5rPWBjZCAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZyAmJiBMQ19BTEw9QyBscyAtbCAtZCAkJGxjIHwgc2VkIC1lICdzL14uKiAtPiAvLydgOyBcCisJICAgICAgICBtdiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGMub2xkOyBcCisJICAgICAgICBta2RpciAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCisJICAgICAgICAoY2QgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQgJiYgXAorCSAgICAgICAgIGZvciBmaWxlIGluICo7IGRvIFwKKwkgICAgICAgICAgIGlmIHRlc3QgLWYgJCRmaWxlOyB0aGVuIFwKKwkgICAgICAgICAgICAgbG4gLXMgLi4vJCRsaW5rLyQkZmlsZSAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjLyQkZmlsZTsgXAorCSAgICAgICAgICAgZmk7IFwKKwkgICAgICAgICBkb25lKTsgXAorCSAgICAgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy5vbGQ7IFwKKwkgICAgICBlbHNlIFwKKwkgICAgICAgIGlmIHRlc3QgLWQgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYzsgdGhlbiBcCisJICAgICAgICAgIDo7IFwKKwkgICAgICAgIGVsc2UgXAorCSAgICAgICAgICBybSAtZiAkKERFU1RESVIpJChsb2NhbGVkaXIpLyQkbGFuZy8kJGxjOyBcCisJICAgICAgICAgIG1rZGlyICQoREVTVERJUikkKGxvY2FsZWRpcikvJCRsYW5nLyQkbGM7IFwKKwkgICAgICAgIGZpOyBcCisJICAgICAgZmk7IFwKKwkgICAgZmk7IFwKKwkgIGRvbmU7IFwKKwlkb25lCisKKyMgRGVmaW5lIHRoaXMgYXMgZW1wdHkgdW50aWwgSSBmb3VuZCBhIHVzZWZ1bCBhcHBsaWNhdGlvbi4KK2luc3RhbGxjaGVjazoKKwordW5pbnN0YWxsOiB1bmluc3RhbGwtZXhlYyB1bmluc3RhbGwtZGF0YQordW5pbnN0YWxsLWV4ZWM6Cit1bmluc3RhbGwtZGF0YTogdW5pbnN0YWxsLWRhdGEtQFVTRV9OTFNACisJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAorCSAgZm9yIGZpbGUgaW4gJChESVNURklMRVMuY29tbW9uKSBNYWtldmFycy50ZW1wbGF0ZTsgZG8gXAorCSAgICBybSAtZiAkKERFU1RESVIpJChnZXR0ZXh0c3JjZGlyKS8kJGZpbGU7IFwKKwkgIGRvbmU7IFwKKwllbHNlIFwKKwkgIDogOyBcCisJZmkKK3VuaW5zdGFsbC1kYXRhLW5vOgordW5pbnN0YWxsLWRhdGEteWVzOgorCWNhdGFsb2dzPSckKENBVEFMT0dTKSc7IFwKKwlmb3IgY2F0IGluICQkY2F0YWxvZ3M7IGRvIFwKKwkgIGNhdD1gYmFzZW5hbWUgJCRjYXRgOyBcCisJICBsYW5nPWBlY2hvICQkY2F0IHwgc2VkIC1lICdzL1wuZ21vJCQvLydgOyBcCisJICBmb3IgbGMgaW4gTENfTUVTU0FHRVMgJChFWFRSQV9MT0NBTEVfQ0FURUdPUklFUyk7IGRvIFwKKwkgICAgcm0gLWYgJChERVNURElSKSQobG9jYWxlZGlyKS8kJGxhbmcvJCRsYy8kKERPTUFJTikubW87IFwKKwkgIGRvbmU7IFwKKwlkb25lCisKK2NoZWNrOiBhbGwKKworaW5mbyBkdmkgcHMgcGRmIGh0bWwgdGFncyBUQUdTIGN0YWdzIENUQUdTIElEOgorCitpbnN0YWxsLWR2aSBpbnN0YWxsLXBzIGluc3RhbGwtcGRmIGluc3RhbGwtaHRtbDoKKworbW9zdGx5Y2xlYW46CisJcm0gLWYgcmVtb3ZlLXBvdGNkYXRlLnNlZAorCXJtIC1mICQoc3JjZGlyKS9zdGFtcC1wb1QKKwlybSAtZiBjb3JlIGNvcmUuKiAkKERPTUFJTikucG8gJChET01BSU4pLjFwbyAkKERPTUFJTikuMnBvICoubmV3LnBvCisJcm0gLWZyICoubworCitjbGVhbjogbW9zdGx5Y2xlYW4KKworZGlzdGNsZWFuOiBjbGVhbgorCXJtIC1mIE1ha2VmaWxlIE1ha2VmaWxlLmluIFBPVEZJTEVTCisKK21haW50YWluZXItY2xlYW46IGRpc3RjbGVhbgorCUBlY2hvICJUaGlzIGNvbW1hbmQgaXMgaW50ZW5kZWQgZm9yIG1haW50YWluZXJzIHRvIHVzZTsiCisJQGVjaG8gIml0IGRlbGV0ZXMgZmlsZXMgdGhhdCBtYXkgcmVxdWlyZSBzcGVjaWFsIHRvb2xzIHRvIHJlYnVpbGQuIgorCXJtIC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90ICQoc3JjZGlyKS9zdGFtcC1wbyAkKEdNT0ZJTEVTKQorCitkaXN0ZGlyID0gJCh0b3BfYnVpbGRkaXIpLyQoUEFDS0FHRSktJChWRVJTSU9OKS8kKHN1YmRpcikKK2Rpc3QgZGlzdGRpcjoKKwl0ZXN0IC16ICIkKERJU1RGSUxFU0RFUFMpIiB8fCAkKE1BS0UpICQoRElTVEZJTEVTREVQUykKKwlAJChNQUtFKSBkaXN0MgorIyBUaGlzIGlzIGEgc2VwYXJhdGUgdGFyZ2V0IGJlY2F1c2UgJ3VwZGF0ZS1wbycgbXVzdCBiZSBleGVjdXRlZCBiZWZvcmUuCitkaXN0MjogJChzcmNkaXIpL3N0YW1wLXBvICQoRElTVEZJTEVTKQorCWRpc3RzPSIkKERJU1RGSUxFUykiOyBcCisJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyI7IHRoZW4gXAorCSAgZGlzdHM9IiQkZGlzdHMgTWFrZXZhcnMudGVtcGxhdGUiOyBcCisJZmk7IFwKKwlpZiB0ZXN0IC1mICQoc3JjZGlyKS8kKERPTUFJTikucG90OyB0aGVuIFwKKwkgIGRpc3RzPSIkJGRpc3RzICQoRE9NQUlOKS5wb3Qgc3RhbXAtcG8iOyBcCisJZmk7IFwKKwlpZiB0ZXN0IC1mICQoc3JjZGlyKS9DaGFuZ2VMb2c7IHRoZW4gXAorCSAgZGlzdHM9IiQkZGlzdHMgQ2hhbmdlTG9nIjsgXAorCWZpOyBcCisJZm9yIGkgaW4gMCAxIDIgMyA0IDUgNiA3IDggOTsgZG8gXAorCSAgaWYgdGVzdCAtZiAkKHNyY2RpcikvQ2hhbmdlTG9nLiQkaTsgdGhlbiBcCisJICAgIGRpc3RzPSIkJGRpc3RzIENoYW5nZUxvZy4kJGkiOyBcCisJICBmaTsgXAorCWRvbmU7IFwKKwlpZiB0ZXN0IC1mICQoc3JjZGlyKS9MSU5HVUFTOyB0aGVuIGRpc3RzPSIkJGRpc3RzIExJTkdVQVMiOyBmaTsgXAorCWZvciBmaWxlIGluICQkZGlzdHM7IGRvIFwKKwkgIGlmIHRlc3QgLWYgJCRmaWxlOyB0aGVuIFwKKwkgICAgY3AgLXAgJCRmaWxlICQoZGlzdGRpcikgfHwgZXhpdCAxOyBcCisJICBlbHNlIFwKKwkgICAgY3AgLXAgJChzcmNkaXIpLyQkZmlsZSAkKGRpc3RkaXIpIHx8IGV4aXQgMTsgXAorCSAgZmk7IFwKKwlkb25lCisKK3VwZGF0ZS1wbzogTWFrZWZpbGUKKwkkKE1BS0UpICQoRE9NQUlOKS5wb3QtdXBkYXRlCisJdGVzdCAteiAiJChVUERBVEVQT0ZJTEVTKSIgfHwgJChNQUtFKSAkKFVQREFURVBPRklMRVMpCisJJChNQUtFKSB1cGRhdGUtZ21vCisKKyMgR2VuZXJhbCBydWxlIGZvciBjcmVhdGluZyBQTyBmaWxlcy4KKworLm5vcC5wby1jcmVhdGU6CisJQGxhbmc9YGVjaG8gJEAgfCBzZWQgLWUgJ3MvXC5wby1jcmVhdGUkJC8vJ2A7IFwKKwllY2hvICJGaWxlICQkbGFuZy5wbyBkb2VzIG5vdCBleGlzdC4gSWYgeW91IGFyZSBhIHRyYW5zbGF0b3IsIHlvdSBjYW4gY3JlYXRlIGl0IHRocm91Z2ggJ21zZ2luaXQnLiIgMT4mMjsgXAorCWV4aXQgMQorCisjIEdlbmVyYWwgcnVsZSBmb3IgdXBkYXRpbmcgUE8gZmlsZXMuCisKKy5ub3AucG8tdXBkYXRlOgorCUBsYW5nPWBlY2hvICRAIHwgc2VkIC1lICdzL1wucG8tdXBkYXRlJCQvLydgOyBcCisJaWYgdGVzdCAiJChQQUNLQUdFKSIgPSAiZ2V0dGV4dC10b29scyIgJiYgdGVzdCAiJChDUk9TU19DT01QSUxJTkcpIiAhPSAieWVzIjsgdGhlbiBQQVRIPWBwd2RgLy4uL3NyYzokJFBBVEg7IGZpOyBcCisJdG1wZGlyPWBwd2RgOyBcCisJZWNobyAiJCRsYW5nOiI7IFwKKwl0ZXN0ICIkKHNyY2RpcikiID0gLiAmJiBjZGNtZD0iIiB8fCBjZGNtZD0iY2QgJChzcmNkaXIpICYmICI7IFwKKwllY2hvICIkJHtjZGNtZH0kKE1TR01FUkdFKSAkKE1TR01FUkdFX09QVElPTlMpIC0tbGFuZz0kJGxhbmcgLS1wcmV2aW91cyAkJGxhbmcucG8gJChET01BSU4pLnBvdCAtbyAkJGxhbmcubmV3LnBvIjsgXAorCWNkICQoc3JjZGlyKTsgXAorCWlmIHsgY2FzZSBgJChNU0dNRVJHRSkgLS12ZXJzaW9uIHwgc2VkIDFxIHwgc2VkIC1lICdzLF5bXjAtOV0qLCwnYCBpbiBcCisJICAgICAgICcnIHwgMC5bMC05XSB8IDAuWzAtOV0uKiB8IDAuMVswLTVdIHwgMC4xWzAtNV0uKikgXAorCSAgICAgICAgICQoTVNHTUVSR0UpICQoTVNHTUVSR0VfT1BUSU9OUykgLW8gJCR0bXBkaXIvJCRsYW5nLm5ldy5wbyAkJGxhbmcucG8gJChET01BSU4pLnBvdDs7IFwKKwkgICAgICAgMC4xWzYtN10gfCAwLjFbNi03XS4qKSBcCisJICAgICAgICAgJChNU0dNRVJHRSkgJChNU0dNRVJHRV9PUFRJT05TKSAtLXByZXZpb3VzIC1vICQkdG1wZGlyLyQkbGFuZy5uZXcucG8gJCRsYW5nLnBvICQoRE9NQUlOKS5wb3Q7OyBcCisJICAgICAgICopIFwKKwkgICAgICAgICAkKE1TR01FUkdFKSAkKE1TR01FUkdFX09QVElPTlMpIC0tbGFuZz0kJGxhbmcgLS1wcmV2aW91cyAtbyAkJHRtcGRpci8kJGxhbmcubmV3LnBvICQkbGFuZy5wbyAkKERPTUFJTikucG90OzsgXAorCSAgICAgZXNhYzsgXAorCSAgIH07IHRoZW4gXAorCSAgaWYgY21wICQkbGFuZy5wbyAkJHRtcGRpci8kJGxhbmcubmV3LnBvID4vZGV2L251bGwgMj4mMTsgdGhlbiBcCisJICAgIHJtIC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG87IFwKKwkgIGVsc2UgXAorCSAgICBpZiBtdiAtZiAkJHRtcGRpci8kJGxhbmcubmV3LnBvICQkbGFuZy5wbzsgdGhlbiBcCisJICAgICAgOjsgXAorCSAgICBlbHNlIFwKKwkgICAgICBlY2hvICJtc2dtZXJnZSBmb3IgJCRsYW5nLnBvIGZhaWxlZDogY2Fubm90IG1vdmUgJCR0bXBkaXIvJCRsYW5nLm5ldy5wbyB0byAkJGxhbmcucG8iIDE+JjI7IFwKKwkgICAgICBleGl0IDE7IFwKKwkgICAgZmk7IFwKKwkgIGZpOyBcCisJZWxzZSBcCisJICBlY2hvICJtc2dtZXJnZSBmb3IgJCRsYW5nLnBvIGZhaWxlZCEiIDE+JjI7IFwKKwkgIHJtIC1mICQkdG1wZGlyLyQkbGFuZy5uZXcucG87IFwKKwlmaQorCiskKERVTU1ZUE9GSUxFUyk6CisKK3VwZGF0ZS1nbW86IE1ha2VmaWxlICQoR01PRklMRVMpCisJQDoKKworIyBSZWNyZWF0ZSBNYWtlZmlsZSBieSBpbnZva2luZyBjb25maWcuc3RhdHVzLiBFeHBsaWNpdGx5IGludm9rZSB0aGUgc2hlbGwsCisjIGJlY2F1c2UgZXhlY3V0aW9uIHBlcm1pc3Npb24gYml0cyBtYXkgbm90IHdvcmsgb24gdGhlIGN1cnJlbnQgZmlsZSBzeXN0ZW0uCisjIFVzZSBAU0hFTExALCB3aGljaCBpcyB0aGUgc2hlbGwgZGV0ZXJtaW5lZCBieSBhdXRvY29uZiBmb3IgdGhlIHVzZSBieSBpdHMKKyMgc2NyaXB0cywgbm90ICQoU0hFTEwpIHdoaWNoIGlzIGhhcmR3aXJlZCB0byAvYmluL3NoIGFuZCBtYXkgYmUgZGVmaWNpZW50LgorTWFrZWZpbGU6IE1ha2VmaWxlLmluLmluIE1ha2V2YXJzICQodG9wX2J1aWxkZGlyKS9jb25maWcuc3RhdHVzIEBQT01BS0VGSUxFREVQU0AKKwljZCAkKHRvcF9idWlsZGRpcikgXAorCSAgJiYgQFNIRUxMQCAuL2NvbmZpZy5zdGF0dXMgJChzdWJkaXIpLyRALmluIHBvLWRpcmVjdG9yaWVzCisKK2ZvcmNlOgorCisjIFRlbGwgdmVyc2lvbnMgWzMuNTksMy42Mykgb2YgR05VIG1ha2Ugbm90IHRvIGV4cG9ydCBhbGwgdmFyaWFibGVzLgorIyBPdGhlcndpc2UgYSBzeXN0ZW0gbGltaXQgKGZvciBTeXNWIGF0IGxlYXN0KSBtYXkgYmUgZXhjZWVkZWQuCisuTk9FWFBPUlQ6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2dldHRleHQubTQgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2dldHRleHQubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTc4MzI0MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvZ2V0dGV4dC5tNApAQCAtMCwwICsxLDM4NiBAQAorIyBnZXR0ZXh0Lm00IHNlcmlhbCA3MCAoZ2V0dGV4dC0wLjIwKQorZG5sIENvcHlyaWdodCAoQykgMTk5NS0yMDE0LCAyMDE2LCAyMDE4IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCitkbmwKK2RubCBUaGlzIGZpbGUgY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKK2RubCB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugb3IgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCitkbmwgTGljZW5zZSBidXQgd2hpY2ggc3RpbGwgd2FudCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHTlUgZ2V0dGV4dAorZG5sIGZ1bmN0aW9uYWxpdHkuCitkbmwgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIGNvZGUgb2YgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaXMgY292ZXJlZAorZG5sIGJ5IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIEdOVQorZG5sIGdldHRleHQgcGFja2FnZSBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KK2RubCBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KKworZG5sIEF1dGhvcnM6CitkbmwgICBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5NS0yMDAwLgorZG5sICAgQnJ1bm8gSGFpYmxlIDxoYWlibGVAY2xpc3AuY29ucy5vcmc+LCAyMDAwLTIwMDYsIDIwMDgtMjAxMC4KKworZG5sIE1hY3JvIHRvIGFkZCBmb3IgdXNpbmcgR05VIGdldHRleHQuCisKK2RubCBVc2FnZTogQU1fR05VX0dFVFRFWFQoW0lOVExTWU1CT0xdLCBbTkVFRFNZTUJPTF0sIFtJTlRMRElSXSkuCitkbmwgSU5UTFNZTUJPTCBtdXN0IGJlIG9uZSBvZiAnZXh0ZXJuYWwnLCAndXNlLWxpYnRvb2wnLgorZG5sICAgIElOVExTWU1CT0wgc2hvdWxkIGJlICdleHRlcm5hbCcgZm9yIHBhY2thZ2VzIG90aGVyIHRoYW4gR05VIGdldHRleHQsIGFuZAorZG5sICAgICd1c2UtbGlidG9vbCcgZm9yIHRoZSBwYWNrYWdlcyAnZ2V0dGV4dC1ydW50aW1lJyBhbmQgJ2dldHRleHQtdG9vbHMnLgorZG5sICAgIElmIElOVExTWU1CT0wgaXMgJ3VzZS1saWJ0b29sJywgdGhlbiBhIGxpYnRvb2wgbGlicmFyeQorZG5sICAgICQodG9wX2J1aWxkZGlyKS9pbnRsL2xpYmludGwubGEgd2lsbCBiZSBjcmVhdGVkIChzaGFyZWQgYW5kL29yIHN0YXRpYywKK2RubCAgICBkZXBlbmRpbmcgb24gLS17ZW5hYmxlLGRpc2FibGV9LXtzaGFyZWQsc3RhdGljfSBhbmQgb24gdGhlIHByZXNlbmNlIG9mCitkbmwgICAgQU0tRElTQUJMRS1TSEFSRUQpLgorZG5sIElmIE5FRURTWU1CT0wgaXMgc3BlY2lmaWVkIGFuZCBpcyAnbmVlZC1uZ2V0dGV4dCcsIHRoZW4gR05VIGdldHRleHQKK2RubCAgICBpbXBsZW1lbnRhdGlvbnMgKGluIGxpYmMgb3IgbGliaW50bCkgd2l0aG91dCB0aGUgbmdldHRleHQoKSBmdW5jdGlvbgorZG5sICAgIHdpbGwgYmUgaWdub3JlZC4gIElmIE5FRURTWU1CT0wgaXMgc3BlY2lmaWVkIGFuZCBpcworZG5sICAgICduZWVkLWZvcm1hdHN0cmluZy1tYWNyb3MnLCB0aGVuIEdOVSBnZXR0ZXh0IGltcGxlbWVudGF0aW9ucyB0aGF0IGRvbid0CitkbmwgICAgc3VwcG9ydCB0aGUgSVNPIEMgOTkgPGludHR5cGVzLmg+IGZvcm1hdHN0cmluZyBtYWNyb3Mgd2lsbCBiZSBpZ25vcmVkLgorZG5sIElOVExESVIgaXMgdXNlZCB0byBmaW5kIHRoZSBpbnRsIGxpYnJhcmllcy4gIElmIGVtcHR5LAorZG5sICAgIHRoZSB2YWx1ZSAnJCh0b3BfYnVpbGRkaXIpL2ludGwvJyBpcyB1c2VkLgorZG5sCitkbmwgVGhlIHJlc3VsdCBvZiB0aGUgY29uZmlndXJhdGlvbiBpcyBvbmUgb2YgdGhyZWUgY2FzZXM6CitkbmwgMSkgR05VIGdldHRleHQsIGFzIGluY2x1ZGVkIGluIHRoZSBpbnRsIHN1YmRpcmVjdG9yeSwgd2lsbCBiZSBjb21waWxlZAorZG5sICAgIGFuZCB1c2VkLgorZG5sICAgIENhdGFsb2cgZm9ybWF0OiBHTlUgLS0+IGluc3RhbGwgaW4gJChkYXRhZGlyKQorZG5sICAgIENhdGFsb2cgZXh0ZW5zaW9uOiAubW8gYWZ0ZXIgaW5zdGFsbGF0aW9uLCAuZ21vIGluIHNvdXJjZSB0cmVlCitkbmwgMikgR05VIGdldHRleHQgaGFzIGJlZW4gZm91bmQgaW4gdGhlIHN5c3RlbSdzIEMgbGlicmFyeS4KK2RubCAgICBDYXRhbG9nIGZvcm1hdDogR05VIC0tPiBpbnN0YWxsIGluICQoZGF0YWRpcikKK2RubCAgICBDYXRhbG9nIGV4dGVuc2lvbjogLm1vIGFmdGVyIGluc3RhbGxhdGlvbiwgLmdtbyBpbiBzb3VyY2UgdHJlZQorZG5sIDMpIE5vIGludGVybmF0aW9uYWxpemF0aW9uLCBhbHdheXMgdXNlIEVuZ2xpc2ggbXNnaWQuCitkbmwgICAgQ2F0YWxvZyBmb3JtYXQ6IG5vbmUKK2RubCAgICBDYXRhbG9nIGV4dGVuc2lvbjogbm9uZQorZG5sIElmIElOVExTWU1CT0wgaXMgJ2V4dGVybmFsJywgb25seSBjYXNlcyAyIGFuZCAzIGNhbiBvY2N1ci4KK2RubCBUaGUgdXNlIG9mIC5nbW8gaXMgaGlzdG9yaWNhbCAoaXQgd2FzIG5lZWRlZCB0byBhdm9pZCBvdmVyd3JpdGluZyB0aGUKK2RubCBHTlUgZm9ybWF0IGNhdGFsb2dzIHdoZW4gYnVpbGRpbmcgb24gYSBwbGF0Zm9ybSB3aXRoIGFuIFgvT3BlbiBnZXR0ZXh0KSwKK2RubCBidXQgd2Uga2VlcCBpdCBpbiBvcmRlciBub3QgdG8gZm9yY2UgaXJyZWxldmFudCBmaWxlbmFtZSBjaGFuZ2VzIG9uIHRoZQorZG5sIG1haW50YWluZXJzLgorZG5sCitBQ19ERUZVTihbQU1fR05VX0dFVFRFWFRdLAorWworICBkbmwgQXJndW1lbnQgY2hlY2tpbmcuCisgIGlmZWxzZShbJDFdLCBbXSwgLCBbaWZlbHNlKFskMV0sIFtleHRlcm5hbF0sICwgW2lmZWxzZShbJDFdLCBbdXNlLWxpYnRvb2xdLCAsCisgICAgW2VycnByaW50KFtFUlJPUjogaW52YWxpZCBmaXJzdCBhcmd1bWVudCB0byBBTV9HTlVfR0VUVEVYVAorXSldKV0pXSkKKyAgaWZlbHNlKGlmZWxzZShbJDFdLCBbXSwgW29sZF0pW11pZmVsc2UoWyQxXSwgW25vLWxpYnRvb2xdLCBbb2xkXSksIFtvbGRdLAorICAgIFtlcnJwcmludChbRVJST1I6IFVzZSBvZiBBTV9HTlVfR0VUVEVYVCB3aXRob3V0IFtleHRlcm5hbF0gYXJndW1lbnQgaXMgbm8gbG9uZ2VyIHN1cHBvcnRlZC4KK10pXSkKKyAgaWZlbHNlKFskMl0sIFtdLCAsIFtpZmVsc2UoWyQyXSwgW25lZWQtbmdldHRleHRdLCAsIFtpZmVsc2UoWyQyXSwgW25lZWQtZm9ybWF0c3RyaW5nLW1hY3Jvc10sICwKKyAgICBbZXJycHJpbnQoW0VSUk9SOiBpbnZhbGlkIHNlY29uZCBhcmd1bWVudCB0byBBTV9HTlVfR0VUVEVYVAorXSldKV0pXSkKKyAgZGVmaW5lKFtndF9pbmNsdWRlZF9pbnRsXSwKKyAgICBpZmVsc2UoWyQxXSwgW2V4dGVybmFsXSwgW25vXSwgW3llc10pKQorICBndF9ORUVEU19JTklUCisgIEFNX0dOVV9HRVRURVhUX05FRUQoWyQyXSkKKworICBBQ19SRVFVSVJFKFtBTV9QT19TVUJESVJTXSlkbmwKKyAgaWZlbHNlKGd0X2luY2x1ZGVkX2ludGwsIHllcywgWworICAgIEFDX1JFUVVJUkUoW0FNX0lOVExfU1VCRElSXSlkbmwKKyAgXSkKKworICBkbmwgUHJlcmVxdWlzaXRlcyBvZiBBQ19MSUJfTElOS0ZMQUdTX0JPRFkuCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUkVQQVJFX1BSRUZJWF0pCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9SUEFUSF0pCisKKyAgZG5sIFNvbWV0aW1lcyBsaWJpbnRsIHJlcXVpcmVzIGxpYmljb252LCBzbyBmaXJzdCBzZWFyY2ggZm9yIGxpYmljb252LgorICBkbmwgSWRlYWxseSB3ZSB3b3VsZCBkbyB0aGlzIHNlYXJjaCBvbmx5IGFmdGVyIHRoZQorICBkbmwgICAgICBpZiB0ZXN0ICIkVVNFX05MUyIgPSAieWVzIjsgdGhlbgorICBkbmwgICAgICAgIGlmIHsgZXZhbCAiZ3RfdmFsPVwkJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJjIjsgdGVzdCAiJGd0X3ZhbCIgIT0gInllcyI7IH07IHRoZW4KKyAgZG5sIHRlc3RzLiBCdXQgaWYgY29uZmlndXJlLmluIGludm9rZXMgQU1fSUNPTlYgYWZ0ZXIgQU1fR05VX0dFVFRFWFQKKyAgZG5sIHRoZSBjb25maWd1cmUgc2NyaXB0IHdvdWxkIG5lZWQgdG8gY29udGFpbiB0aGUgc2FtZSBzaGVsbCBjb2RlCisgIGRubCBhZ2Fpbiwgb3V0c2lkZSBhbnkgJ2lmJy4gVGhlcmUgYXJlIHR3byBzb2x1dGlvbnM6CisgIGRubCAtIEludm9rZSBBTV9JQ09OVl9MSU5LRkxBR1NfQk9EWSBoZXJlLCBvdXRzaWRlIGFueSAnaWYnLgorICBkbmwgLSBDb250cm9sIHRoZSBleHBhbnNpb25zIGluIG1vcmUgZGV0YWlsIHVzaW5nIEFDX1BST1ZJREVfSUZFTFNFLgorICBkbmwgU2luY2UgQUNfUFJPVklERV9JRkVMU0UgaXMgbm90IGRvY3VtZW50ZWQsIHdlIGF2b2lkIGl0LgorICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCAsIFsKKyAgICBBQ19SRVFVSVJFKFtBTV9JQ09OVl9MSU5LRkxBR1NfQk9EWV0pCisgIF0pCisKKyAgZG5sIFNvbWV0aW1lcywgb24gTWFjIE9TIFgsIGxpYmludGwgcmVxdWlyZXMgbGlua2luZyB3aXRoIENvcmVGb3VuZGF0aW9uLgorICBndF9JTlRMX01BQ09TWAorCisgIGRubCBTZXQgVVNFX05MUy4KKyAgQUNfUkVRVUlSRShbQU1fTkxTXSkKKworICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCBbCisgICAgQlVJTERfSU5DTFVERURfTElCSU5UTD1ubworICAgIFVTRV9JTkNMVURFRF9MSUJJTlRMPW5vCisgIF0pCisgIExJQklOVEw9CisgIExUTElCSU5UTD0KKyAgUE9TVUI9CisKKyAgZG5sIEFkZCBhIHZlcnNpb24gbnVtYmVyIHRvIHRoZSBjYWNoZSBtYWNyb3MuCisgIGNhc2UgIiAkZ3RfbmVlZHMgIiBpbgorICAgICoiIG5lZWQtZm9ybWF0c3RyaW5nLW1hY3JvcyAiKikgZ3RfYXBpX3ZlcnNpb249MyA7OworICAgICoiIG5lZWQtbmdldHRleHQgIiopIGd0X2FwaV92ZXJzaW9uPTIgOzsKKyAgICAqKSBndF9hcGlfdmVyc2lvbj0xIDs7CisgIGVzYWMKKyAgZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmM9Imd0X2N2X2Z1bmNfZ251Z2V0dGV4dCR7Z3RfYXBpX3ZlcnNpb259X2xpYmMiCisgIGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsPSJndF9jdl9mdW5jX2dudWdldHRleHQke2d0X2FwaV92ZXJzaW9ufV9saWJpbnRsIgorCisgIGRubCBJZiB3ZSB1c2UgTkxTIGZpZ3VyZSBvdXQgd2hhdCBtZXRob2QKKyAgaWYgdGVzdCAiJFVTRV9OTFMiID0gInllcyI7IHRoZW4KKyAgICBndF91c2VfcHJlaW5zdGFsbGVkX2dudWdldHRleHQ9bm8KKyAgICBpZmVsc2UoZ3RfaW5jbHVkZWRfaW50bCwgeWVzLCBbCisgICAgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgaW5jbHVkZWQgZ2V0dGV4dCBpcyByZXF1ZXN0ZWRdKQorICAgICAgQUNfQVJHX1dJVEgoW2luY2x1ZGVkLWdldHRleHRdLAorICAgICAgICBbICAtLXdpdGgtaW5jbHVkZWQtZ2V0dGV4dCB1c2UgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaW5jbHVkZWQgaGVyZV0sCisgICAgICAgIG5sc19jdl9mb3JjZV91c2VfZ251X2dldHRleHQ9JHdpdGh2YWwsCisgICAgICAgIG5sc19jdl9mb3JjZV91c2VfZ251X2dldHRleHQ9bm8pCisgICAgICBBQ19NU0dfUkVTVUxUKFskbmxzX2N2X2ZvcmNlX3VzZV9nbnVfZ2V0dGV4dF0pCisKKyAgICAgIG5sc19jdl91c2VfZ251X2dldHRleHQ9IiRubHNfY3ZfZm9yY2VfdXNlX2dudV9nZXR0ZXh0IgorICAgICAgaWYgdGVzdCAiJG5sc19jdl9mb3JjZV91c2VfZ251X2dldHRleHQiICE9ICJ5ZXMiOyB0aGVuCisgICAgXSkKKyAgICAgICAgZG5sIFVzZXIgZG9lcyBub3QgaW5zaXN0IG9uIHVzaW5nIEdOVSBOTFMgbGlicmFyeS4gIEZpZ3VyZSBvdXQgd2hhdAorICAgICAgICBkbmwgdG8gdXNlLiAgSWYgR05VIGdldHRleHQgaXMgYXZhaWxhYmxlIHdlIHVzZSB0aGlzLiAgRWxzZSB3ZSBoYXZlCisgICAgICAgIGRubCB0byBmYWxsIGJhY2sgdG8gR05VIE5MUyBsaWJyYXJ5LgorCisgICAgICAgIGlmIHRlc3QgJGd0X2FwaV92ZXJzaW9uIC1nZSAzOyB0aGVuCisgICAgICAgICAgZ3RfcmV2aXNpb25fdGVzdF9jb2RlPScKKyNpZm5kZWYgX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04KKyNkZWZpbmUgX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04obWFqb3IpICgobWFqb3IpID09IDAgPyAwIDogLTEpCisjZW5kaWYKK2NoYW5nZXF1b3RlKCwpZG5sCit0eXBlZGVmIGludCBhcnJheSBbMiAqIChfX0dOVV9HRVRURVhUX1NVUFBPUlRFRF9SRVZJU0lPTigwKSA+PSAxKSAtIDFdOworY2hhbmdlcXVvdGUoWyxdKWRubAorJworICAgICAgICBlbHNlCisgICAgICAgICAgZ3RfcmV2aXNpb25fdGVzdF9jb2RlPQorICAgICAgICBmaQorICAgICAgICBpZiB0ZXN0ICRndF9hcGlfdmVyc2lvbiAtZ2UgMjsgdGhlbgorICAgICAgICAgIGd0X2V4cHJlc3Npb25fdGVzdF9jb2RlPScgKyAqIG5nZXR0ZXh0ICgiIiwgIiIsIDApJworICAgICAgICBlbHNlCisgICAgICAgICAgZ3RfZXhwcmVzc2lvbl90ZXN0X2NvZGU9CisgICAgICAgIGZpCisKKyAgICAgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBHTlUgZ2V0dGV4dCBpbiBsaWJjXSwgWyRndF9mdW5jX2dudWdldHRleHRfbGliY10sCisgICAgICAgICBbQUNfTElOS19JRkVMU0UoCisgICAgICAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorICAgICAgICAgICAgICAgW1sKKyNpbmNsdWRlIDxsaWJpbnRsLmg+CisjaWZuZGVmIF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OCitleHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7CitleHRlcm4gaW50ICpfbmxfZG9tYWluX2JpbmRpbmdzOworI2RlZmluZSBfX0dOVV9HRVRURVhUX1NZTUJPTF9FWFBSRVNTSU9OIChfbmxfbXNnX2NhdF9jbnRyICsgKl9ubF9kb21haW5fYmluZGluZ3MpCisjZWxzZQorI2RlZmluZSBfX0dOVV9HRVRURVhUX1NZTUJPTF9FWFBSRVNTSU9OIDAKKyNlbmRpZgorJGd0X3JldmlzaW9uX3Rlc3RfY29kZQorICAgICAgICAgICAgICAgXV0sCisgICAgICAgICAgICAgICBbWworYmluZHRleHRkb21haW4gKCIiLCAiIik7CityZXR1cm4gKiBnZXR0ZXh0ICgiIikkZ3RfZXhwcmVzc2lvbl90ZXN0X2NvZGUgKyBfX0dOVV9HRVRURVhUX1NZTUJPTF9FWFBSRVNTSU9OCisgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgW2V2YWwgIiRndF9mdW5jX2dudWdldHRleHRfbGliYz15ZXMiXSwKKyAgICAgICAgICAgIFtldmFsICIkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmM9bm8iXSldKQorCisgICAgICAgIGlmIHsgZXZhbCAiZ3RfdmFsPVwkJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJjIjsgdGVzdCAiJGd0X3ZhbCIgIT0gInllcyI7IH07IHRoZW4KKyAgICAgICAgICBkbmwgU29tZXRpbWVzIGxpYmludGwgcmVxdWlyZXMgbGliaWNvbnYsIHNvIGZpcnN0IHNlYXJjaCBmb3IgbGliaWNvbnYuCisgICAgICAgICAgaWZlbHNlKGd0X2luY2x1ZGVkX2ludGwsIHllcywgLCBbCisgICAgICAgICAgICBBTV9JQ09OVl9MSU5LCisgICAgICAgICAgXSkKKyAgICAgICAgICBkbmwgU2VhcmNoIGZvciBsaWJpbnRsIGFuZCBkZWZpbmUgTElCSU5UTCwgTFRMSUJJTlRMIGFuZCBJTkNJTlRMCisgICAgICAgICAgZG5sIGFjY29yZGluZ2x5LiBEb24ndCB1c2UgQUNfTElCX0xJTktGTEFHU19CT0RZKFtpbnRsXSxbaWNvbnZdKQorICAgICAgICAgIGRubCBiZWNhdXNlIHRoYXQgd291bGQgYWRkICItbGljb252IiB0byBMSUJJTlRMIGFuZCBMVExJQklOVEwKKyAgICAgICAgICBkbmwgZXZlbiBpZiBsaWJpY29udiBkb2Vzbid0IGV4aXN0LgorICAgICAgICAgIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShbaW50bF0pCisgICAgICAgICAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBHTlUgZ2V0dGV4dCBpbiBsaWJpbnRsXSwKKyAgICAgICAgICAgIFskZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGxdLAorICAgICAgICAgICBbZ3Rfc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorICAgICAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAkSU5DSU5UTCIKKyAgICAgICAgICAgIGd0X3NhdmVfTElCUz0iJExJQlMiCisgICAgICAgICAgICBMSUJTPSIkTElCUyAkTElCSU5UTCIKKyAgICAgICAgICAgIGRubCBOb3cgc2VlIHdoZXRoZXIgbGliaW50bCBleGlzdHMgYW5kIGRvZXMgbm90IGRlcGVuZCBvbiBsaWJpY29udi4KKyAgICAgICAgICAgIEFDX0xJTktfSUZFTFNFKAorICAgICAgICAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorICAgICAgICAgICAgICAgICBbWworI2luY2x1ZGUgPGxpYmludGwuaD4KKyNpZm5kZWYgX19HTlVfR0VUVEVYVF9TVVBQT1JURURfUkVWSVNJT04KK2V4dGVybiBpbnQgX25sX21zZ19jYXRfY250cjsKK2V4dGVybgorI2lmZGVmIF9fY3BsdXNwbHVzCisiQyIKKyNlbmRpZgorY29uc3QgY2hhciAqX25sX2V4cGFuZF9hbGlhcyAoY29uc3QgY2hhciAqKTsKKyNkZWZpbmUgX19HTlVfR0VUVEVYVF9TWU1CT0xfRVhQUkVTU0lPTiAoX25sX21zZ19jYXRfY250ciArICpfbmxfZXhwYW5kX2FsaWFzICgiIikpCisjZWxzZQorI2RlZmluZSBfX0dOVV9HRVRURVhUX1NZTUJPTF9FWFBSRVNTSU9OIDAKKyNlbmRpZgorJGd0X3JldmlzaW9uX3Rlc3RfY29kZQorICAgICAgICAgICAgICAgICBdXSwKKyAgICAgICAgICAgICAgICAgW1sKK2JpbmR0ZXh0ZG9tYWluICgiIiwgIiIpOworcmV0dXJuICogZ2V0dGV4dCAoIiIpJGd0X2V4cHJlc3Npb25fdGVzdF9jb2RlICsgX19HTlVfR0VUVEVYVF9TWU1CT0xfRVhQUkVTU0lPTgorICAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgICBbZXZhbCAiJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsPXllcyJdLAorICAgICAgICAgICAgICBbZXZhbCAiJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJpbnRsPW5vIl0pCisgICAgICAgICAgICBkbmwgTm93IHNlZSB3aGV0aGVyIGxpYmludGwgZXhpc3RzIGFuZCBkZXBlbmRzIG9uIGxpYmljb252LgorICAgICAgICAgICAgaWYgeyBldmFsICJndF92YWw9XCQkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGwiOyB0ZXN0ICIkZ3RfdmFsIiAhPSB5ZXM7IH0gJiYgdGVzdCAtbiAiJExJQklDT05WIjsgdGhlbgorICAgICAgICAgICAgICBMSUJTPSIkTElCUyAkTElCSUNPTlYiCisgICAgICAgICAgICAgIEFDX0xJTktfSUZFTFNFKAorICAgICAgICAgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgICAgICAgICAgW1sKKyNpbmNsdWRlIDxsaWJpbnRsLmg+CisjaWZuZGVmIF9fR05VX0dFVFRFWFRfU1VQUE9SVEVEX1JFVklTSU9OCitleHRlcm4gaW50IF9ubF9tc2dfY2F0X2NudHI7CitleHRlcm4KKyNpZmRlZiBfX2NwbHVzcGx1cworIkMiCisjZW5kaWYKK2NvbnN0IGNoYXIgKl9ubF9leHBhbmRfYWxpYXMgKGNvbnN0IGNoYXIgKik7CisjZGVmaW5lIF9fR05VX0dFVFRFWFRfU1lNQk9MX0VYUFJFU1NJT04gKF9ubF9tc2dfY2F0X2NudHIgKyAqX25sX2V4cGFuZF9hbGlhcyAoIiIpKQorI2Vsc2UKKyNkZWZpbmUgX19HTlVfR0VUVEVYVF9TWU1CT0xfRVhQUkVTU0lPTiAwCisjZW5kaWYKKyRndF9yZXZpc2lvbl90ZXN0X2NvZGUKKyAgICAgICAgICAgICAgICAgICBdXSwKKyAgICAgICAgICAgICAgICAgICBbWworYmluZHRleHRkb21haW4gKCIiLCAiIik7CityZXR1cm4gKiBnZXR0ZXh0ICgiIikkZ3RfZXhwcmVzc2lvbl90ZXN0X2NvZGUgKyBfX0dOVV9HRVRURVhUX1NZTUJPTF9FWFBSRVNTSU9OCisgICAgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICAgICBbTElCSU5UTD0iJExJQklOVEwgJExJQklDT05WIgorICAgICAgICAgICAgICAgICBMVExJQklOVEw9IiRMVExJQklOVEwgJExUTElCSUNPTlYiCisgICAgICAgICAgICAgICAgIGV2YWwgIiRndF9mdW5jX2dudWdldHRleHRfbGliaW50bD15ZXMiCisgICAgICAgICAgICAgICAgXSkKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICBDUFBGTEFHUz0iJGd0X3NhdmVfQ1BQRkxBR1MiCisgICAgICAgICAgICBMSUJTPSIkZ3Rfc2F2ZV9MSUJTIl0pCisgICAgICAgIGZpCisKKyAgICAgICAgZG5sIElmIGFuIGFscmVhZHkgcHJlc2VudCBvciBwcmVpbnN0YWxsZWQgR05VIGdldHRleHQoKSBpcyBmb3VuZCwKKyAgICAgICAgZG5sIHVzZSBpdC4gIEJ1dCBpZiB0aGlzIG1hY3JvIGlzIHVzZWQgaW4gR05VIGdldHRleHQsIGFuZCBHTlUKKyAgICAgICAgZG5sIGdldHRleHQgaXMgYWxyZWFkeSBwcmVpbnN0YWxsZWQgaW4gbGliaW50bCwgd2UgdXBkYXRlIHRoaXMKKyAgICAgICAgZG5sIGxpYmludGwuICAoQ2YuIHRoZSBpbnN0YWxsIHJ1bGUgaW4gaW50bC9NYWtlZmlsZS5pbi4pCisgICAgICAgIGlmIHsgZXZhbCAiZ3RfdmFsPVwkJGd0X2Z1bmNfZ251Z2V0dGV4dF9saWJjIjsgdGVzdCAiJGd0X3ZhbCIgPSAieWVzIjsgfSBcCisgICAgICAgICAgIHx8IHsgeyBldmFsICJndF92YWw9XCQkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGwiOyB0ZXN0ICIkZ3RfdmFsIiA9ICJ5ZXMiOyB9IFwKKyAgICAgICAgICAgICAgICAmJiB0ZXN0ICIkUEFDS0FHRSIgIT0gZ2V0dGV4dC1ydW50aW1lIFwKKyAgICAgICAgICAgICAgICAmJiB0ZXN0ICIkUEFDS0FHRSIgIT0gZ2V0dGV4dC10b29sczsgfTsgdGhlbgorICAgICAgICAgIGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dD15ZXMKKyAgICAgICAgZWxzZQorICAgICAgICAgIGRubCBSZXNldCB0aGUgdmFsdWVzIHNldCBieSBzZWFyY2hpbmcgZm9yIGxpYmludGwuCisgICAgICAgICAgTElCSU5UTD0KKyAgICAgICAgICBMVExJQklOVEw9CisgICAgICAgICAgSU5DSU5UTD0KKyAgICAgICAgZmkKKworICAgIGlmZWxzZShndF9pbmNsdWRlZF9pbnRsLCB5ZXMsIFsKKyAgICAgICAgaWYgdGVzdCAiJGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dCIgIT0gInllcyI7IHRoZW4KKyAgICAgICAgICBkbmwgR05VIGdldHRleHQgaXMgbm90IGZvdW5kIGluIHRoZSBDIGxpYnJhcnkuCisgICAgICAgICAgZG5sIEZhbGwgYmFjayBvbiBpbmNsdWRlZCBHTlUgZ2V0dGV4dCBsaWJyYXJ5LgorICAgICAgICAgIG5sc19jdl91c2VfZ251X2dldHRleHQ9eWVzCisgICAgICAgIGZpCisgICAgICBmaQorCisgICAgICBpZiB0ZXN0ICIkbmxzX2N2X3VzZV9nbnVfZ2V0dGV4dCIgPSAieWVzIjsgdGhlbgorICAgICAgICBkbmwgTWFyayBhY3Rpb25zIHVzZWQgdG8gZ2VuZXJhdGUgR05VIE5MUyBsaWJyYXJ5LgorICAgICAgICBCVUlMRF9JTkNMVURFRF9MSUJJTlRMPXllcworICAgICAgICBVU0VfSU5DTFVERURfTElCSU5UTD15ZXMKKyAgICAgICAgTElCSU5UTD0iaWZlbHNlKFskM10sW10sXCR7dG9wX2J1aWxkZGlyfS9pbnRsLFskM10pL2xpYmludGwubGEgJExJQklDT05WICRMSUJUSFJFQUQiCisgICAgICAgIExUTElCSU5UTD0iaWZlbHNlKFskM10sW10sXCR7dG9wX2J1aWxkZGlyfS9pbnRsLFskM10pL2xpYmludGwubGEgJExUTElCSUNPTlYgJExUTElCVEhSRUFEIgorICAgICAgICBMSUJTPWBlY2hvICIgJExJQlMgIiB8IHNlZCAtZSAncy8gLWxpbnRsIC8gLycgLWUgJ3MvXiAvLycgLWUgJ3MvICQvLydgCisgICAgICBmaQorCisgICAgICBDQVRPQkpFWFQ9CisgICAgICBpZiB0ZXN0ICIkZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0IiA9ICJ5ZXMiIFwKKyAgICAgICAgIHx8IHRlc3QgIiRubHNfY3ZfdXNlX2dudV9nZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgIGRubCBNYXJrIGFjdGlvbnMgdG8gdXNlIEdOVSBnZXR0ZXh0IHRvb2xzLgorICAgICAgICBDQVRPQkpFWFQ9LmdtbworICAgICAgZmkKKyAgICBdKQorCisgICAgaWYgdGVzdCAtbiAiJElOVExfTUFDT1NYX0xJQlMiOyB0aGVuCisgICAgICBpZiB0ZXN0ICIkZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0IiA9ICJ5ZXMiIFwKKyAgICAgICAgIHx8IHRlc3QgIiRubHNfY3ZfdXNlX2dudV9nZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCisgICAgICAgIGRubCBTb21lIGV4dHJhIGZsYWdzIGFyZSBuZWVkZWQgZHVyaW5nIGxpbmtpbmcuCisgICAgICAgIExJQklOVEw9IiRMSUJJTlRMICRJTlRMX01BQ09TWF9MSUJTIgorICAgICAgICBMVExJQklOVEw9IiRMVExJQklOVEwgJElOVExfTUFDT1NYX0xJQlMiCisgICAgICBmaQorICAgIGZpCisKKyAgICBpZiB0ZXN0ICIkZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0IiA9ICJ5ZXMiIFwKKyAgICAgICB8fCB0ZXN0ICIkbmxzX2N2X3VzZV9nbnVfZ2V0dGV4dCIgPSAieWVzIjsgdGhlbgorICAgICAgQUNfREVGSU5FKFtFTkFCTEVfTkxTXSwgWzFdLAorICAgICAgICBbRGVmaW5lIHRvIDEgaWYgdHJhbnNsYXRpb24gb2YgcHJvZ3JhbSBtZXNzYWdlcyB0byB0aGUgdXNlcidzIG5hdGl2ZSBsYW5ndWFnZQorICAgaXMgcmVxdWVzdGVkLl0pCisgICAgZWxzZQorICAgICAgVVNFX05MUz1ubworICAgIGZpCisgIGZpCisKKyAgQUNfTVNHX0NIRUNLSU5HKFt3aGV0aGVyIHRvIHVzZSBOTFNdKQorICBBQ19NU0dfUkVTVUxUKFskVVNFX05MU10pCisgIGlmIHRlc3QgIiRVU0VfTkxTIiA9ICJ5ZXMiOyB0aGVuCisgICAgQUNfTVNHX0NIRUNLSU5HKFt3aGVyZSB0aGUgZ2V0dGV4dCBmdW5jdGlvbiBjb21lcyBmcm9tXSkKKyAgICBpZiB0ZXN0ICIkZ3RfdXNlX3ByZWluc3RhbGxlZF9nbnVnZXR0ZXh0IiA9ICJ5ZXMiOyB0aGVuCisgICAgICBpZiB7IGV2YWwgImd0X3ZhbD1cJCRndF9mdW5jX2dudWdldHRleHRfbGliaW50bCI7IHRlc3QgIiRndF92YWwiID0gInllcyI7IH07IHRoZW4KKyAgICAgICAgZ3Rfc291cmNlPSJleHRlcm5hbCBsaWJpbnRsIgorICAgICAgZWxzZQorICAgICAgICBndF9zb3VyY2U9ImxpYmMiCisgICAgICBmaQorICAgIGVsc2UKKyAgICAgIGd0X3NvdXJjZT0iaW5jbHVkZWQgaW50bCBkaXJlY3RvcnkiCisgICAgZmkKKyAgICBBQ19NU0dfUkVTVUxUKFskZ3Rfc291cmNlXSkKKyAgZmkKKworICBpZiB0ZXN0ICIkVVNFX05MUyIgPSAieWVzIjsgdGhlbgorCisgICAgaWYgdGVzdCAiJGd0X3VzZV9wcmVpbnN0YWxsZWRfZ251Z2V0dGV4dCIgPSAieWVzIjsgdGhlbgorICAgICAgaWYgeyBldmFsICJndF92YWw9XCQkZ3RfZnVuY19nbnVnZXR0ZXh0X2xpYmludGwiOyB0ZXN0ICIkZ3RfdmFsIiA9ICJ5ZXMiOyB9OyB0aGVuCisgICAgICAgIEFDX01TR19DSEVDS0lORyhbaG93IHRvIGxpbmsgd2l0aCBsaWJpbnRsXSkKKyAgICAgICAgQUNfTVNHX1JFU1VMVChbJExJQklOVExdKQorICAgICAgICBBQ19MSUJfQVBQRU5EVE9WQVIoW0NQUEZMQUdTXSwgWyRJTkNJTlRMXSkKKyAgICAgIGZpCisKKyAgICAgIGRubCBGb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4gU29tZSBwYWNrYWdlcyBtYXkgYmUgdXNpbmcgdGhpcy4KKyAgICAgIEFDX0RFRklORShbSEFWRV9HRVRURVhUXSwgWzFdLAorICAgICAgIFtEZWZpbmUgaWYgdGhlIEdOVSBnZXR0ZXh0KCkgZnVuY3Rpb24gaXMgYWxyZWFkeSBwcmVzZW50IG9yIHByZWluc3RhbGxlZC5dKQorICAgICAgQUNfREVGSU5FKFtIQVZFX0RDR0VUVEVYVF0sIFsxXSwKKyAgICAgICBbRGVmaW5lIGlmIHRoZSBHTlUgZGNnZXR0ZXh0KCkgZnVuY3Rpb24gaXMgYWxyZWFkeSBwcmVzZW50IG9yIHByZWluc3RhbGxlZC5dKQorICAgIGZpCisKKyAgICBkbmwgV2UgbmVlZCB0byBwcm9jZXNzIHRoZSBwby8gZGlyZWN0b3J5LgorICAgIFBPU1VCPXBvCisgIGZpCisKKyAgaWZlbHNlKGd0X2luY2x1ZGVkX2ludGwsIHllcywgWworICAgIGRubCBJbiBHTlUgZ2V0dGV4dCB3ZSBoYXZlIHRvIHNldCBCVUlMRF9JTkNMVURFRF9MSUJJTlRMIHRvICd5ZXMnCisgICAgZG5sIGJlY2F1c2Ugc29tZSBvZiB0aGUgdGVzdHN1aXRlIHJlcXVpcmVzIGl0LgorICAgIEJVSUxEX0lOQ0xVREVEX0xJQklOVEw9eWVzCisKKyAgICBkbmwgTWFrZSBhbGwgdmFyaWFibGVzIHdlIHVzZSBrbm93biB0byBhdXRvY29uZi4KKyAgICBBQ19TVUJTVChbQlVJTERfSU5DTFVERURfTElCSU5UTF0pCisgICAgQUNfU1VCU1QoW1VTRV9JTkNMVURFRF9MSUJJTlRMXSkKKyAgICBBQ19TVUJTVChbQ0FUT0JKRVhUXSkKKyAgXSkKKworICBkbmwgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkuIFNvbWUgTWFrZWZpbGVzIG1heSBiZSB1c2luZyB0aGlzLgorICBJTlRMTElCUz0iJExJQklOVEwiCisgIEFDX1NVQlNUKFtJTlRMTElCU10pCisKKyAgZG5sIE1ha2UgYWxsIGRvY3VtZW50ZWQgdmFyaWFibGVzIGtub3duIHRvIGF1dG9jb25mLgorICBBQ19TVUJTVChbTElCSU5UTF0pCisgIEFDX1NVQlNUKFtMVExJQklOVExdKQorICBBQ19TVUJTVChbUE9TVUJdKQorXSkKKworCitkbmwgZ3RfTkVFRFNfSU5JVCBlbnN1cmVzIHRoYXQgdGhlIGd0X25lZWRzIHZhcmlhYmxlIGlzIGluaXRpYWxpemVkLgorbTRfZGVmaW5lKFtndF9ORUVEU19JTklUXSwKK1sKKyAgbTRfZGl2ZXJ0X3RleHQoW0RFRkFVTFRTXSwgW2d0X25lZWRzPV0pCisgIG00X2RlZmluZShbZ3RfTkVFRFNfSU5JVF0sIFtdKQorXSkKKworCitkbmwgVXNhZ2U6IEFNX0dOVV9HRVRURVhUX05FRUQoW05FRURTWU1CT0xdKQorQUNfREVGVU4oW0FNX0dOVV9HRVRURVhUX05FRURdLAorWworICBtNF9kaXZlcnRfdGV4dChbSU5JVF9QUkVQQVJFXSwgW2d0X25lZWRzPSIkZ3RfbmVlZHMgJDEiXSkKK10pCisKKworZG5sIFVzYWdlOiBBTV9HTlVfR0VUVEVYVF9WRVJTSU9OKFtnZXR0ZXh0LXZlcnNpb25dKQorQUNfREVGVU4oW0FNX0dOVV9HRVRURVhUX1ZFUlNJT05dLCBbXSkKKworCitkbmwgVXNhZ2U6IEFNX0dOVV9HRVRURVhUX1JFUVVJUkVfVkVSU0lPTihbZ2V0dGV4dC12ZXJzaW9uXSkKK0FDX0RFRlVOKFtBTV9HTlVfR0VUVEVYVF9SRVFVSVJFX1ZFUlNJT05dLCBbXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvaG9zdC1jcHUtYy1hYmkubTQgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2hvc3QtY3B1LWMtYWJpLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0MDcyOTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2hvc3QtY3B1LWMtYWJpLm00CkBAIC0wLDAgKzEsNjQ0IEBACisjIGhvc3QtY3B1LWMtYWJpLm00IHNlcmlhbCAxMQorZG5sIENvcHlyaWdodCAoQykgMjAwMi0yMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKK2RubCBGcm9tIEJydW5vIEhhaWJsZSBhbmQgU2FtIFN0ZWluZ29sZC4KKworZG5sIFNldHMgdGhlIEhPU1RfQ1BVIHZhcmlhYmxlIHRvIHRoZSBjYW5vbmljYWwgbmFtZSBvZiB0aGUgQ1BVLgorZG5sIFNldHMgdGhlIEhPU1RfQ1BVX0NfQUJJIHZhcmlhYmxlIHRvIHRoZSBjYW5vbmljYWwgbmFtZSBvZiB0aGUgQ1BVIHdpdGggaXRzCitkbmwgQyBsYW5ndWFnZSBBQkkgKGFwcGxpY2F0aW9uIGJpbmFyeSBpbnRlcmZhY2UpLgorZG5sIEFsc28gZGVmaW5lcyBfXyR7SE9TVF9DUFV9X18gYW5kIF9fJHtIT1NUX0NQVV9DX0FCSX1fXyBhcyBDIG1hY3JvcyBpbgorZG5sIGNvbmZpZy5oLgorZG5sCitkbmwgVGhpcyBjYW5vbmljYWwgbmFtZSBjYW4gYmUgdXNlZCB0byBzZWxlY3QgYSBwYXJ0aWN1bGFyIGFzc2VtYmx5IGxhbmd1YWdlCitkbmwgc291cmNlIGZpbGUgdGhhdCB3aWxsIGludGVyb3BlcmF0ZSB3aXRoIEMgY29kZSBvbiB0aGUgZ2l2ZW4gaG9zdC4KK2RubAorZG5sIEZvciBleGFtcGxlOgorZG5sICogJ2kzODYnIGFuZCAnc3BhcmMnIGFyZSBkaWZmZXJlbnQgY2Fub25pY2FsIG5hbWVzLCBiZWNhdXNlIGNvZGUgZm9yIGkzODYKK2RubCAgIHdpbGwgbm90IHJ1biBvbiBTUEFSQyBDUFVzIGFuZCB2aWNlIHZlcnNhLiBUaGV5IGhhdmUgZGlmZmVyZW50CitkbmwgICBpbnN0cnVjdGlvbiBzZXRzLgorZG5sICogJ3NwYXJjJyBhbmQgJ3NwYXJjNjQnIGFyZSBkaWZmZXJlbnQgY2Fub25pY2FsIG5hbWVzLCBiZWNhdXNlIGNvZGUgZm9yCitkbmwgICAnc3BhcmMnIGFuZCBjb2RlIGZvciAnc3BhcmM2NCcgY2Fubm90IGJlIGxpbmtlZCB0b2dldGhlcjogJ3NwYXJjJyBjb2RlCitkbmwgICBjb250YWlucyAzMi1iaXQgaW5zdHJ1Y3Rpb25zLCB3aGVyZWFzICdzcGFyYzY0JyBjb2RlIGNvbnRhaW5zIDY0LWJpdAorZG5sICAgaW5zdHJ1Y3Rpb25zLiBBIHByb2Nlc3Mgb24gYSBTUEFSQyBDUFUgY2FuIGJlIGluIDMyLWJpdCBtb2RlIG9yIGluIDY0LWJpdAorZG5sICAgbW9kZSwgYnV0IG5vdCBib3RoLgorZG5sICogJ21pcHMnIGFuZCAnbWlwc24zMicgYXJlIGRpZmZlcmVudCBjYW5vbmljYWwgbmFtZXMsIGJlY2F1c2UgdGhleSB1c2UKK2RubCAgIGRpZmZlcmVudCBhcmd1bWVudCBwYXNzaW5nIGFuZCByZXR1cm4gY29udmVudGlvbnMgZm9yIEMgZnVuY3Rpb25zLCBhbmQKK2RubCAgIGFsdGhvdWdoIHRoZSBpbnN0cnVjdGlvbiBzZXQgb2YgJ21pcHMnIGlzIGEgbGFyZ2Ugc3Vic2V0IG9mIHRoZQorZG5sICAgaW5zdHJ1Y3Rpb24gc2V0IG9mICdtaXBzbjMyJy4KK2RubCAqICdtaXBzbjMyJyBhbmQgJ21pcHM2NCcgYXJlIGRpZmZlcmVudCBjYW5vbmljYWwgbmFtZXMsIGJlY2F1c2UgdGhleSB1c2UKK2RubCAgIGRpZmZlcmVudCBzaXplcyBmb3IgdGhlIEMgdHlwZXMgbGlrZSAnaW50JyBhbmQgJ3ZvaWQgKicsIGFuZCBhbHRob3VnaAorZG5sICAgdGhlIGluc3RydWN0aW9uIHNldHMgb2YgJ21pcHNuMzInIGFuZCAnbWlwczY0JyBhcmUgdGhlIHNhbWUuCitkbmwgKiBUaGUgc2FtZSBjYW5vbmljYWwgbmFtZSBpcyB1c2VkIGZvciBkaWZmZXJlbnQgZW5kaWFubmVzc2VzLiBZb3UgY2FuCitkbmwgICBkZXRlcm1pbmUgdGhlIGVuZGlhbm5lc3MgdGhyb3VnaCBwcmVwcm9jZXNzb3Igc3ltYm9sczoKK2RubCAgIC0gJ2FybSc6IHRlc3QgX19BUk1FTF9fLgorZG5sICAgLSAnbWlwcycsICdtaXBzbjMyJywgJ21pcHM2NCc6IHRlc3QgX01JUFNFQiB2cy4gX01JUFNFTC4KK2RubCAgIC0gJ3Bvd2VycGM2NCc6IHRlc3QgX0JJR19FTkRJQU4gdnMuIF9MSVRUTEVfRU5ESUFOLgorZG5sICogVGhlIHNhbWUgbmFtZSAnaTM4NicgaXMgdXNlZCBmb3IgQ1BVcyBvZiB0eXBlIGkzODYsIGk0ODYsIGk1ODYKK2RubCAgIChQZW50aXVtKSwgQU1EIEs3LCBQZW50aXVtIElJLCBQZW50aXVtIElWLCBldGMuLCBiZWNhdXNlCitkbmwgICAtIEluc3RydWN0aW9ucyB0aGF0IGRvIG5vdCBleGlzdCBvbiBhbGwgb2YgdGhlc2UgQ1BVcyAoY21weGNoZywKK2RubCAgICAgTU1YLCBTU0UsIFNTRTIsIDNETm93ISBldGMuKSBhcmUgbm90IGZyZXF1ZW50bHkgdXNlZC4gSWYgeW91cgorZG5sICAgICBhc3NlbWJseSBsYW5ndWFnZSBzb3VyY2UgZmlsZXMgdXNlIHN1Y2ggaW5zdHJ1Y3Rpb25zLCB5b3Ugd2lsbAorZG5sICAgICBuZWVkIHRvIG1ha2UgdGhlIGRpc3RpbmN0aW9uLgorZG5sICAgLSBTcGVlZCBvZiBleGVjdXRpb24gb2YgdGhlIGNvbW1vbiBpbnN0cnVjdGlvbiBzZXQgaXMgcmVhc29uYWJsZSBhY3Jvc3MKK2RubCAgICAgdGhlIGVudGlyZSBmYW1pbHkgb2YgQ1BVcy4gSWYgeW91IGhhdmUgYXNzZW1ibHkgbGFuZ3VhZ2Ugc291cmNlIGZpbGVzCitkbmwgICAgIHRoYXQgYXJlIG9wdGltaXplZCBmb3IgcGFydGljdWxhciBDUFUgdHlwZXMgKGxpa2UgR05VIGdtcCBoYXMpLCB5b3UKK2RubCAgICAgd2lsbCBuZWVkIHRvIG1ha2UgdGhlIGRpc3RpbmN0aW9uLgorZG5sICAgU2VlIDxodHRwczovL2VuLndpa2lwZWRpYS5vcmcvd2lraS9YODZfaW5zdHJ1Y3Rpb25fbGlzdGluZ3M+LgorQUNfREVGVU4oW2dsX0hPU1RfQ1BVX0NfQUJJXSwKK1sKKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKQorICBBQ19SRVFVSVJFKFtnbF9DX0FTTV0pCisgIEFDX0NBQ0hFX0NIRUNLKFtob3N0IENQVSBhbmQgQyBBQkldLCBbZ2xfY3ZfaG9zdF9jcHVfY19hYmldLAorICAgIFtjYXNlICIkaG9zdF9jcHUiIGluCisKK2NoYW5nZXF1b3RlKCwpZG5sCisgICAgICAgaVs0NTY3XTg2ICkKK2NoYW5nZXF1b3RlKFssXSlkbmwKKyAgICAgICAgIGdsX2N2X2hvc3RfY3B1X2NfYWJpPWkzODYKKyAgICAgICAgIDs7CisKKyAgICAgICB4ODZfNjQgKQorICAgICAgICAgIyBPbiB4ODZfNjQgc3lzdGVtcywgdGhlIEMgY29tcGlsZXIgbWF5IGJlIGdlbmVyYXRpbmcgY29kZSBpbiBvbmUgb2YKKyAgICAgICAgICMgdGhlc2UgQUJJczoKKyAgICAgICAgICMgLSA2NC1iaXQgaW5zdHJ1Y3Rpb24gc2V0LCA2NC1iaXQgcG9pbnRlcnMsIDY0LWJpdCAnbG9uZyc6IHg4Nl82NC4KKyAgICAgICAgICMgLSA2NC1iaXQgaW5zdHJ1Y3Rpb24gc2V0LCA2NC1iaXQgcG9pbnRlcnMsIDMyLWJpdCAnbG9uZyc6IHg4Nl82NAorICAgICAgICAgIyAgIHdpdGggbmF0aXZlIFdpbmRvd3MgKG1pbmd3LCBNU1ZDKS4KKyAgICAgICAgICMgLSA2NC1iaXQgaW5zdHJ1Y3Rpb24gc2V0LCAzMi1iaXQgcG9pbnRlcnMsIDMyLWJpdCAnbG9uZyc6IHg4Nl82NC14MzIuCisgICAgICAgICAjIC0gMzItYml0IGluc3RydWN0aW9uIHNldCwgMzItYml0IHBvaW50ZXJzLCAzMi1iaXQgJ2xvbmcnOiBpMzg2LgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWYgKGRlZmluZWQgX194ODZfNjRfXyB8fCBkZWZpbmVkIF9fYW1kNjRfXyBcCisgICAgICAgICAgICAgICAgICAgICB8fCBkZWZpbmVkIF9NX1g2NCB8fCBkZWZpbmVkIF9NX0FNRDY0KQorICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICBbQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX0lMUDMyX18gfHwgZGVmaW5lZCBfSUxQMzIKKyAgICAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPXg4Nl82NC14MzJdLAorICAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmk9eDg2XzY0XSldLAorICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmk9aTM4Nl0pCisgICAgICAgICA7OworCitjaGFuZ2VxdW90ZSgsKWRubAorICAgICAgIGFscGhhZXZbNC04XSB8IGFscGhhZXY1NiB8IGFscGhhcGNhNVs2N10gfCBhbHBoYWV2Nls3OF0gKQorY2hhbmdlcXVvdGUoWyxdKWRubAorICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmk9YWxwaGEKKyAgICAgICAgIDs7CisKKyAgICAgICBhcm0qIHwgYWFyY2g2NCApCisgICAgICAgICAjIEFzc3VtZSBhcm0gd2l0aCBFQUJJLgorICAgICAgICAgIyBPbiBhcm02NCBzeXN0ZW1zLCB0aGUgQyBjb21waWxlciBtYXkgYmUgZ2VuZXJhdGluZyBjb2RlIGluIG9uZSBvZgorICAgICAgICAgIyB0aGVzZSBBQklzOgorICAgICAgICAgIyAtIGFhcmNoNjQgaW5zdHJ1Y3Rpb24gc2V0LCA2NC1iaXQgcG9pbnRlcnMsIDY0LWJpdCAnbG9uZyc6IGFybTY0LgorICAgICAgICAgIyAtIGFhcmNoNjQgaW5zdHJ1Y3Rpb24gc2V0LCAzMi1iaXQgcG9pbnRlcnMsIDMyLWJpdCAnbG9uZyc6IGFybTY0LWlscDMyLgorICAgICAgICAgIyAtIDMyLWJpdCBpbnN0cnVjdGlvbiBzZXQsIDMyLWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogYXJtIG9yIGFybWhmLgorICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgW1sjaWZkZWYgX19hYXJjaDY0X18KKyAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgW0FDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX0lMUDMyX18gfHwgZGVmaW5lZCBfSUxQMzIKKyAgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1hcm02NC1pbHAzMl0sCisgICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1hcm02NF0pXSwKKyAgICAgICAgICAgWyMgRG9uJ3QgZGlzdGluZ3Vpc2ggbGl0dGxlLWVuZGlhbiBhbmQgYmlnLWVuZGlhbiBhcm0sIHNpbmNlIHRoZXkKKyAgICAgICAgICAgICMgZG9uJ3QgcmVxdWlyZSBkaWZmZXJlbnQgbWFjaGluZSBjb2RlIGZvciBzaW1wbGUgb3BlcmF0aW9ucyBhbmQKKyAgICAgICAgICAgICMgc2luY2UgdGhlIHVzZXIgY2FuIGRpc3Rpbmd1aXNoIHRoZW0gdGhyb3VnaCB0aGUgcHJlcHJvY2Vzc29yCisgICAgICAgICAgICAjIGRlZmluZXMgX19BUk1FTF9fIHZzLiBfX0FSTUVCX18uCisgICAgICAgICAgICAjIEJ1dCBkaXN0aW5ndWlzaCBhcm0gd2hpY2ggcGFzc2VzIGZsb2F0aW5nLXBvaW50IGFyZ3VtZW50cyBhbmQKKyAgICAgICAgICAgICMgcmV0dXJuIHZhbHVlcyBpbiBpbnRlZ2VyIHJlZ2lzdGVycyAocjAsIHIxLCAuLi4pIC0gdGhpcyBpcworICAgICAgICAgICAgIyBnY2MgLW1mbG9hdC1hYmk9c29mdCBvciBnY2MgLW1mbG9hdC1hYmk9c29mdGZwIC0gZnJvbSBhcm0gd2hpY2gKKyAgICAgICAgICAgICMgcGFzc2VzIHRoZW0gaW4gZmxvYXQgcmVnaXN0ZXJzIChzMCwgczEsIC4uLikgYW5kIGRvdWJsZSByZWdpc3RlcnMKKyAgICAgICAgICAgICMgKGQwLCBkMSwgLi4uKSAtIHRoaXMgaXMgZ2NjIC1tZmxvYXQtYWJpPWhhcmQuIEdDQyA0LjYgb3IgbmV3ZXIKKyAgICAgICAgICAgICMgc2V0cyB0aGUgcHJlcHJvY2Vzc29yIGRlZmluZXMgX19BUk1fUENTIChmb3IgdGhlIGZpcnN0IGNhc2UpIGFuZAorICAgICAgICAgICAgIyBfX0FSTV9QQ1NfVkZQIChmb3IgdGhlIHNlY29uZCBjYXNlKSwgYnV0IG9sZGVyIEdDQyBkb2VzIG5vdC4KKyAgICAgICAgICAgIGVjaG8gJ2RvdWJsZSBkZGQ7IHZvaWQgZnVuYyAoZG91YmxlIGRkKSB7IGRkZCA9IGRkOyB9JyA+IGNvbmZ0ZXN0LmMKKyAgICAgICAgICAgICMgTG9vayBmb3IgYSByZWZlcmVuY2UgdG8gdGhlIHJlZ2lzdGVyIGQwIGluIHRoZSAucyBmaWxlLgorICAgICAgICAgICAgQUNfVFJZX0NPTU1BTkQoJHtDQy1jY30gJENGTEFHUyAkQ1BQRkxBR1MgJGdsX2NfYXNtX29wdCBjb25mdGVzdC5jKSA+L2Rldi9udWxsIDI+JjEKKyAgICAgICAgICAgIGlmIExDX0FMTD1DIGdyZXAgJ2QwLCcgY29uZnRlc3QuJGdsX2FzbWV4dCA+L2Rldi9udWxsOyB0aGVuCisgICAgICAgICAgICAgIGdsX2N2X2hvc3RfY3B1X2NfYWJpPWFybWhmCisgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgIGdsX2N2X2hvc3RfY3B1X2NfYWJpPWFybQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIHJtIC1mIGNvbmZ0ZXN0KgorICAgICAgICAgICBdKQorICAgICAgICAgOzsKKworICAgICAgIGhwcGExLjAgfCBocHBhMS4xIHwgaHBwYTIuMCogfCBocHBhNjQgKQorICAgICAgICAgIyBPbiBocHBhLCB0aGUgQyBjb21waWxlciBtYXkgYmUgZ2VuZXJhdGluZyAzMi1iaXQgY29kZSBvciA2NC1iaXQKKyAgICAgICAgICMgY29kZS4gSW4gdGhlIGxhdHRlciBjYXNlLCBpdCBkZWZpbmVzIF9MUDY0IGFuZCBfX0xQNjRfXy4KKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgIFtbI2lmZGVmIF9fTFA2NF9fCisgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1ocHBhNjRdLAorICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmk9aHBwYV0pCisgICAgICAgICA7OworCisgICAgICAgaWE2NCogKQorICAgICAgICAgIyBPbiBpYTY0IG9uIEhQLVVYLCB0aGUgQyBjb21waWxlciBtYXkgYmUgZ2VuZXJhdGluZyA2NC1iaXQgY29kZSBvcgorICAgICAgICAgIyAzMi1iaXQgY29kZS4gSW4gdGhlIGxhdHRlciBjYXNlLCBpdCBkZWZpbmVzIF9JTFAzMi4KKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgIFtbI2lmZGVmIF9JTFAzMgorICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmk9aWE2NC1pbHAzMl0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1pYTY0XSkKKyAgICAgICAgIDs7CisKKyAgICAgICBtaXBzKiApCisgICAgICAgICAjIFdlIHNob3VsZCBhbHNvIGNoZWNrIGZvciAoX01JUFNfU1pQVFIgPT0gNjQpLCBidXQgZ2NjIGtlZXBzIHRoaXMKKyAgICAgICAgICMgYXQgMzIuCisgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9NSVBTX1NaTE9ORyAmJiAoX01JUFNfU1pMT05HID09IDY0KQorICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmk9bWlwczY0XSwKKyAgICAgICAgICAgWyMgSW4gdGhlIG4zMiBBQkksIF9BQklOMzIgaXMgZGVmaW5lZCwgX0FCSU8zMiBpcyBub3QgZGVmaW5lZCAoYnV0CisgICAgICAgICAgICAjIG1heSBsYXRlciBnZXQgZGVmaW5lZCBieSA8c2dpZGVmcy5oPiksIGFuZCBfTUlQU19TSU0gPT0gX0FCSU4zMi4KKyAgICAgICAgICAgICMgSW4gdGhlIDMyIEFCSSwgX0FCSU8zMiBpcyBkZWZpbmVkLCBfQUJJTjMyIGlzIG5vdCBkZWZpbmVkIChidXQKKyAgICAgICAgICAgICMgbWF5IGxhdGVyIGdldCBkZWZpbmVkIGJ5IDxzZ2lkZWZzLmg+KSwgYW5kIF9NSVBTX1NJTSA9PSBfQUJJTzMyLgorICAgICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgICAgW1sjaWYgKF9NSVBTX1NJTSA9PSBfQUJJTjMyKQorICAgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmk9bWlwc24zMl0sCisgICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1taXBzXSldKQorICAgICAgICAgOzsKKworICAgICAgIHBvd2VycGMqICkKKyAgICAgICAgICMgRGlmZmVyZW50IEFCSXMgYXJlIGluIHVzZSBvbiBBSVggdnMuIE1hYyBPUyBYIHZzLiBMaW51eCwqQlNELgorICAgICAgICAgIyBObyBuZWVkIHRvIGRpc3Rpbmd1aXNoIHRoZW0gaGVyZTsgdGhlIGNhbGxlciBtYXkgZGlzdGluZ3Vpc2gKKyAgICAgICAgICMgdGhlbSBiYXNlZCBvbiB0aGUgT1MuCisgICAgICAgICAjIE9uIHBvd2VycGM2NCBzeXN0ZW1zLCB0aGUgQyBjb21waWxlciBtYXkgc3RpbGwgYmUgZ2VuZXJhdGluZworICAgICAgICAgIyAzMi1iaXQgY29kZS4gQW5kIG9uIHBvd2VycGMtaWJtLWFpeCBzeXN0ZW1zLCB0aGUgQyBjb21waWxlciBtYXkKKyAgICAgICAgICMgYmUgZ2VuZXJhdGluZyA2NC1iaXQgY29kZS4KKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19wb3dlcnBjNjRfXyB8fCBkZWZpbmVkIF9BUkNIX1BQQzY0CisgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgIFsjIE9uIHBvd2VycGM2NCwgdGhlcmUgYXJlIHR3byBBQklzIG9uIExpbnV4OiBUaGUgQUlYIGNvbXBhdGlibGUKKyAgICAgICAgICAgICMgb25lIGFuZCB0aGUgRUxGdjIgb25lLiBUaGUgbGF0dGVyIGRlZmluZXMgX0NBTExfRUxGPTIuCisgICAgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9DQUxMX0VMRiAmJiBfQ0FMTF9FTEYgPT0gMgorICAgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmk9cG93ZXJwYzY0LWVsZnYyXSwKKyAgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPXBvd2VycGM2NF0pCisgICAgICAgICAgIF0sCisgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaT1wb3dlcnBjXSkKKyAgICAgICAgIDs7CisKKyAgICAgICByczYwMDAgKQorICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmk9cG93ZXJwYworICAgICAgICAgOzsKKworICAgICAgIHJpc2N2MzIgfCByaXNjdjY0ICkKKyAgICAgICAgICMgVGhlcmUgYXJlIDIgYXJjaGl0ZWN0dXJlcyAod2l0aCB2YXJpYW50cyk6IHJ2MzIqIGFuZCBydjY0Ki4KKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgIFtbI2lmIF9fcmlzY3ZfeGxlbiA9PSA2NAorICAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgIFtjcHU9cmlzY3Y2NF0sCisgICAgICAgICAgIFtjcHU9cmlzY3YzMl0pCisgICAgICAgICAjIFRoZXJlIGFyZSA2IEFCSXM6IGlscDMyLCBpbHAzMmYsIGlscDMyZCwgbHA2NCwgbHA2NGYsIGxwNjRkLgorICAgICAgICAgIyBTaXplIG9mICdsb25nJyBhbmQgJ3ZvaWQgKic6CisgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9fTFA2NF9fCisgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgW21haW5fYWJpPWxwNjRdLAorICAgICAgICAgICBbbWFpbl9hYmk9aWxwMzJdKQorICAgICAgICAgIyBGbG9hdCBBQklzOgorICAgICAgICAgIyBfX3Jpc2N2X2Zsb2F0X2FiaV9kb3VibGU6CisgICAgICAgICAjICAgJ2Zsb2F0JyBhbmQgJ2RvdWJsZScgYXJlIHBhc3NlZCBpbiBmbG9hdGluZy1wb2ludCByZWdpc3RlcnMuCisgICAgICAgICAjIF9fcmlzY3ZfZmxvYXRfYWJpX3NpbmdsZToKKyAgICAgICAgICMgICAnZmxvYXQnIGFyZSBwYXNzZWQgaW4gZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLgorICAgICAgICAgIyBfX3Jpc2N2X2Zsb2F0X2FiaV9zb2Z0OgorICAgICAgICAgIyAgIE5vIHZhbHVlcyBhcmUgcGFzc2VkIGluIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4KKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19yaXNjdl9mbG9hdF9hYmlfZG91YmxlCisgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgW2Zsb2F0X2FiaT1kXSwKKyAgICAgICAgICAgW0FDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19yaXNjdl9mbG9hdF9hYmlfc2luZ2xlCisgICAgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICAgW2Zsb2F0X2FiaT1mXSwKKyAgICAgICAgICAgICAgW2Zsb2F0X2FiaT0nJ10pCisgICAgICAgICAgIF0pCisgICAgICAgICBnbF9jdl9ob3N0X2NwdV9jX2FiaT0iJHtjcHV9LSR7bWFpbl9hYml9JHtmbG9hdF9hYml9IgorICAgICAgICAgOzsKKworICAgICAgIHMzOTAqICkKKyAgICAgICAgICMgT24gczM5MHgsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIDY0LWJpdCAoPSBzMzkweCkgY29kZQorICAgICAgICAgIyBvciAzMS1iaXQgKD0gczM5MCkgY29kZS4KKyAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19MUDY0X18gfHwgZGVmaW5lZCBfX3MzOTB4X18KKyAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmk9czM5MHhdLAorICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmk9czM5MF0pCisgICAgICAgICA7OworCisgICAgICAgc3BhcmMgfCBzcGFyYzY0ICkKKyAgICAgICAgICMgVWx0cmFTUEFSQ3MgcnVubmluZyBMaW51eCBoYXZlIGB1bmFtZSAtbWAgPSAic3BhcmM2NCIsIGJ1dCB0aGUKKyAgICAgICAgICMgQyBjb21waWxlciBzdGlsbCBnZW5lcmF0ZXMgMzItYml0IGNvZGUuCisgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9fc3BhcmN2OSB8fCBkZWZpbmVkIF9fYXJjaDY0X18KKyAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpPXNwYXJjNjRdLAorICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmk9c3BhcmNdKQorICAgICAgICAgOzsKKworICAgICAgICopCisgICAgICAgICBnbF9jdl9ob3N0X2NwdV9jX2FiaT0iJGhvc3RfY3B1IgorICAgICAgICAgOzsKKyAgICAgZXNhYworICAgIF0pCisKKyAgZG5sIEluIG1vc3QgY2FzZXMsICRIT1NUX0NQVSBhbmQgJEhPU1RfQ1BVX0NfQUJJIGFyZSB0aGUgc2FtZS4KKyAgSE9TVF9DUFU9YGVjaG8gIiRnbF9jdl9ob3N0X2NwdV9jX2FiaSIgfCBzZWQgLWUgJ3MvLS4qLy8nYAorICBIT1NUX0NQVV9DX0FCST0iJGdsX2N2X2hvc3RfY3B1X2NfYWJpIgorICBBQ19TVUJTVChbSE9TVF9DUFVdKQorICBBQ19TVUJTVChbSE9TVF9DUFVfQ19BQkldKQorCisgICMgVGhpcyB3YXMKKyAgIyAgIEFDX0RFRklORV9VTlFVT1RFRChbX18ke0hPU1RfQ1BVfV9fXSkKKyAgIyAgIEFDX0RFRklORV9VTlFVT1RFRChbX18ke0hPU1RfQ1BVX0NfQUJJfV9fXSkKKyAgIyBlYXJsaWVyLCBidXQgS0FJIEMrKyAzLjJkIGRvZXNuJ3QgbGlrZSB0aGlzLgorICBzZWQgLWUgJ3MvLS9fL2cnID4+IGNvbmZkZWZzLmggPDxFT0YKKyNpZm5kZWYgX18ke0hPU1RfQ1BVfV9fCisjZGVmaW5lIF9fJHtIT1NUX0NQVX1fXyAxCisjZW5kaWYKKyNpZm5kZWYgX18ke0hPU1RfQ1BVX0NfQUJJfV9fCisjZGVmaW5lIF9fJHtIT1NUX0NQVV9DX0FCSX1fXyAxCisjZW5kaWYKK0VPRgorICBBSF9UT1AoWy8qIENQVSBhbmQgQyBBQkkgaW5kaWNhdG9yICovCisjaWZuZGVmIF9faTM4Nl9fCisjdW5kZWYgX19pMzg2X18KKyNlbmRpZgorI2lmbmRlZiBfX3g4Nl82NF94MzJfXworI3VuZGVmIF9feDg2XzY0X3gzMl9fCisjZW5kaWYKKyNpZm5kZWYgX194ODZfNjRfXworI3VuZGVmIF9feDg2XzY0X18KKyNlbmRpZgorI2lmbmRlZiBfX2FscGhhX18KKyN1bmRlZiBfX2FscGhhX18KKyNlbmRpZgorI2lmbmRlZiBfX2FybV9fCisjdW5kZWYgX19hcm1fXworI2VuZGlmCisjaWZuZGVmIF9fYXJtaGZfXworI3VuZGVmIF9fYXJtaGZfXworI2VuZGlmCisjaWZuZGVmIF9fYXJtNjRfaWxwMzJfXworI3VuZGVmIF9fYXJtNjRfaWxwMzJfXworI2VuZGlmCisjaWZuZGVmIF9fYXJtNjRfXworI3VuZGVmIF9fYXJtNjRfXworI2VuZGlmCisjaWZuZGVmIF9faHBwYV9fCisjdW5kZWYgX19ocHBhX18KKyNlbmRpZgorI2lmbmRlZiBfX2hwcGE2NF9fCisjdW5kZWYgX19ocHBhNjRfXworI2VuZGlmCisjaWZuZGVmIF9faWE2NF9pbHAzMl9fCisjdW5kZWYgX19pYTY0X2lscDMyX18KKyNlbmRpZgorI2lmbmRlZiBfX2lhNjRfXworI3VuZGVmIF9faWE2NF9fCisjZW5kaWYKKyNpZm5kZWYgX19tNjhrX18KKyN1bmRlZiBfX202OGtfXworI2VuZGlmCisjaWZuZGVmIF9fbWlwc19fCisjdW5kZWYgX19taXBzX18KKyNlbmRpZgorI2lmbmRlZiBfX21pcHNuMzJfXworI3VuZGVmIF9fbWlwc24zMl9fCisjZW5kaWYKKyNpZm5kZWYgX19taXBzNjRfXworI3VuZGVmIF9fbWlwczY0X18KKyNlbmRpZgorI2lmbmRlZiBfX3Bvd2VycGNfXworI3VuZGVmIF9fcG93ZXJwY19fCisjZW5kaWYKKyNpZm5kZWYgX19wb3dlcnBjNjRfXworI3VuZGVmIF9fcG93ZXJwYzY0X18KKyNlbmRpZgorI2lmbmRlZiBfX3Bvd2VycGM2NF9lbGZ2Ml9fCisjdW5kZWYgX19wb3dlcnBjNjRfZWxmdjJfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3YzMl9fCisjdW5kZWYgX19yaXNjdjMyX18KKyNlbmRpZgorI2lmbmRlZiBfX3Jpc2N2NjRfXworI3VuZGVmIF9fcmlzY3Y2NF9fCisjZW5kaWYKKyNpZm5kZWYgX19yaXNjdjMyX2lscDMyX18KKyN1bmRlZiBfX3Jpc2N2MzJfaWxwMzJfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3YzMl9pbHAzMmZfXworI3VuZGVmIF9fcmlzY3YzMl9pbHAzMmZfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3YzMl9pbHAzMmRfXworI3VuZGVmIF9fcmlzY3YzMl9pbHAzMmRfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3Y2NF9pbHAzMl9fCisjdW5kZWYgX19yaXNjdjY0X2lscDMyX18KKyNlbmRpZgorI2lmbmRlZiBfX3Jpc2N2NjRfaWxwMzJmX18KKyN1bmRlZiBfX3Jpc2N2NjRfaWxwMzJmX18KKyNlbmRpZgorI2lmbmRlZiBfX3Jpc2N2NjRfaWxwMzJkX18KKyN1bmRlZiBfX3Jpc2N2NjRfaWxwMzJkX18KKyNlbmRpZgorI2lmbmRlZiBfX3Jpc2N2NjRfbHA2NF9fCisjdW5kZWYgX19yaXNjdjY0X2xwNjRfXworI2VuZGlmCisjaWZuZGVmIF9fcmlzY3Y2NF9scDY0Zl9fCisjdW5kZWYgX19yaXNjdjY0X2xwNjRmX18KKyNlbmRpZgorI2lmbmRlZiBfX3Jpc2N2NjRfbHA2NGRfXworI3VuZGVmIF9fcmlzY3Y2NF9scDY0ZF9fCisjZW5kaWYKKyNpZm5kZWYgX19zMzkwX18KKyN1bmRlZiBfX3MzOTBfXworI2VuZGlmCisjaWZuZGVmIF9fczM5MHhfXworI3VuZGVmIF9fczM5MHhfXworI2VuZGlmCisjaWZuZGVmIF9fc2hfXworI3VuZGVmIF9fc2hfXworI2VuZGlmCisjaWZuZGVmIF9fc3BhcmNfXworI3VuZGVmIF9fc3BhcmNfXworI2VuZGlmCisjaWZuZGVmIF9fc3BhcmM2NF9fCisjdW5kZWYgX19zcGFyYzY0X18KKyNlbmRpZgorXSkKKworXSkKKworCitkbmwgU2V0cyB0aGUgSE9TVF9DUFVfQ19BQklfMzJCSVQgdmFyaWFibGUgdG8gJ3llcycgaWYgdGhlIEMgbGFuZ3VhZ2UgQUJJCitkbmwgKGFwcGxpY2F0aW9uIGJpbmFyeSBpbnRlcmZhY2UpIGlzIGEgMzItYml0IG9uZSwgb3IgdG8gJ25vJyBvdGhlcndpc2UuCitkbmwgVGhpcyBpcyBhIHNpbXBsaWZpZWQgdmFyaWFudCBvZiBnbF9IT1NUX0NQVV9DX0FCSS4KK0FDX0RFRlVOKFtnbF9IT1NUX0NQVV9DX0FCSV8zMkJJVF0sCitbCisgIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkKKyAgQUNfQ0FDSEVfQ0hFQ0soWzMyLWJpdCBob3N0IEMgQUJJXSwgW2dsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0XSwKKyAgICBbaWYgdGVzdCAtbiAiJGdsX2N2X2hvc3RfY3B1X2NfYWJpIjsgdGhlbgorICAgICAgIGNhc2UgIiRnbF9jdl9ob3N0X2NwdV9jX2FiaSIgaW4KKyAgICAgICAgIGkzODYgfCB4ODZfNjQteDMyIHwgYXJtIHwgYXJtaGYgfCBhcm02NC1pbHAzMiB8IGhwcGEgfCBpYTY0LWlscDMyIHwgbWlwcyB8IG1pcHNuMzIgfCBwb3dlcnBjIHwgcmlzY3YqLWlscDMyKiB8IHMzOTAgfCBzcGFyYykKKyAgICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9eWVzIDs7CisgICAgICAgICAqKQorICAgICAgICAgICBnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD1ubyA7OworICAgICAgIGVzYWMKKyAgICAgZWxzZQorICAgICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KKworY2hhbmdlcXVvdGUoLClkbmwKKyAgICAgICAgIGlbNDU2N104NiApCitjaGFuZ2VxdW90ZShbLF0pZG5sCisgICAgICAgICAgIGdsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PXllcworICAgICAgICAgICA7OworCisgICAgICAgICB4ODZfNjQgKQorICAgICAgICAgICAjIE9uIHg4Nl82NCBzeXN0ZW1zLCB0aGUgQyBjb21waWxlciBtYXkgYmUgZ2VuZXJhdGluZyBjb2RlIGluIG9uZSBvZgorICAgICAgICAgICAjIHRoZXNlIEFCSXM6CisgICAgICAgICAgICMgLSA2NC1iaXQgaW5zdHJ1Y3Rpb24gc2V0LCA2NC1iaXQgcG9pbnRlcnMsIDY0LWJpdCAnbG9uZyc6IHg4Nl82NC4KKyAgICAgICAgICAgIyAtIDY0LWJpdCBpbnN0cnVjdGlvbiBzZXQsIDY0LWJpdCBwb2ludGVycywgMzItYml0ICdsb25nJzogeDg2XzY0CisgICAgICAgICAgICMgICB3aXRoIG5hdGl2ZSBXaW5kb3dzIChtaW5ndywgTVNWQykuCisgICAgICAgICAgICMgLSA2NC1iaXQgaW5zdHJ1Y3Rpb24gc2V0LCAzMi1iaXQgcG9pbnRlcnMsIDMyLWJpdCAnbG9uZyc6IHg4Nl82NC14MzIuCisgICAgICAgICAgICMgLSAzMi1iaXQgaW5zdHJ1Y3Rpb24gc2V0LCAzMi1iaXQgcG9pbnRlcnMsIDMyLWJpdCAnbG9uZyc6IGkzODYuCisgICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgICBbWyNpZiAoZGVmaW5lZCBfX3g4Nl82NF9fIHx8IGRlZmluZWQgX19hbWQ2NF9fIFwKKyAgICAgICAgICAgICAgICAgICAgICAgfHwgZGVmaW5lZCBfTV9YNjQgfHwgZGVmaW5lZCBfTV9BTUQ2NCkgXAorICAgICAgICAgICAgICAgICAgICAgICYmICEoZGVmaW5lZCBfX0lMUDMyX18gfHwgZGVmaW5lZCBfSUxQMzIpCisgICAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD1ub10sCisgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PXllc10pCisgICAgICAgICAgIDs7CisKKyAgICAgICAgIGFybSogfCBhYXJjaDY0ICkKKyAgICAgICAgICAgIyBBc3N1bWUgYXJtIHdpdGggRUFCSS4KKyAgICAgICAgICAgIyBPbiBhcm02NCBzeXN0ZW1zLCB0aGUgQyBjb21waWxlciBtYXkgYmUgZ2VuZXJhdGluZyBjb2RlIGluIG9uZSBvZgorICAgICAgICAgICAjIHRoZXNlIEFCSXM6CisgICAgICAgICAgICMgLSBhYXJjaDY0IGluc3RydWN0aW9uIHNldCwgNjQtYml0IHBvaW50ZXJzLCA2NC1iaXQgJ2xvbmcnOiBhcm02NC4KKyAgICAgICAgICAgIyAtIGFhcmNoNjQgaW5zdHJ1Y3Rpb24gc2V0LCAzMi1iaXQgcG9pbnRlcnMsIDMyLWJpdCAnbG9uZyc6IGFybTY0LWlscDMyLgorICAgICAgICAgICAjIC0gMzItYml0IGluc3RydWN0aW9uIHNldCwgMzItYml0IHBvaW50ZXJzLCAzMi1iaXQgJ2xvbmcnOiBhcm0gb3IgYXJtaGYuCisgICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9fYWFyY2g2NF9fICYmICEoZGVmaW5lZCBfX0lMUDMyX18gfHwgZGVmaW5lZCBfSUxQMzIpCisgICAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICBlcnJvciBmYWlsCisgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAgICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD1ub10sCisgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PXllc10pCisgICAgICAgICAgIDs7CisKKyAgICAgICAgIGhwcGExLjAgfCBocHBhMS4xIHwgaHBwYTIuMCogfCBocHBhNjQgKQorICAgICAgICAgICAjIE9uIGhwcGEsIHRoZSBDIGNvbXBpbGVyIG1heSBiZSBnZW5lcmF0aW5nIDMyLWJpdCBjb2RlIG9yIDY0LWJpdAorICAgICAgICAgICAjIGNvZGUuIEluIHRoZSBsYXR0ZXIgY2FzZSwgaXQgZGVmaW5lcyBfTFA2NCBhbmQgX19MUDY0X18uCisgICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgICBbWyNpZmRlZiBfX0xQNjRfXworICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9bm9dLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXNdKQorICAgICAgICAgICA7OworCisgICAgICAgICBpYTY0KiApCisgICAgICAgICAgICMgT24gaWE2NCBvbiBIUC1VWCwgdGhlIEMgY29tcGlsZXIgbWF5IGJlIGdlbmVyYXRpbmcgNjQtYml0IGNvZGUgb3IKKyAgICAgICAgICAgIyAzMi1iaXQgY29kZS4gSW4gdGhlIGxhdHRlciBjYXNlLCBpdCBkZWZpbmVzIF9JTFAzMi4KKyAgICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgIFtbI2lmZGVmIF9JTFAzMgorICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9eWVzXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9bm9dKQorICAgICAgICAgICA7OworCisgICAgICAgICBtaXBzKiApCisgICAgICAgICAgICMgV2Ugc2hvdWxkIGFsc28gY2hlY2sgZm9yIChfTUlQU19TWlBUUiA9PSA2NCksIGJ1dCBnY2Mga2VlcHMgdGhpcworICAgICAgICAgICAjIGF0IDMyLgorICAgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfTUlQU19TWkxPTkcgJiYgKF9NSVBTX1NaTE9ORyA9PSA2NCkKKyAgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PW5vXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9eWVzXSkKKyAgICAgICAgICAgOzsKKworICAgICAgICAgcG93ZXJwYyogKQorICAgICAgICAgICAjIERpZmZlcmVudCBBQklzIGFyZSBpbiB1c2Ugb24gQUlYIHZzLiBNYWMgT1MgWCB2cy4gTGludXgsKkJTRC4KKyAgICAgICAgICAgIyBObyBuZWVkIHRvIGRpc3Rpbmd1aXNoIHRoZW0gaGVyZTsgdGhlIGNhbGxlciBtYXkgZGlzdGluZ3Vpc2gKKyAgICAgICAgICAgIyB0aGVtIGJhc2VkIG9uIHRoZSBPUy4KKyAgICAgICAgICAgIyBPbiBwb3dlcnBjNjQgc3lzdGVtcywgdGhlIEMgY29tcGlsZXIgbWF5IHN0aWxsIGJlIGdlbmVyYXRpbmcKKyAgICAgICAgICAgIyAzMi1iaXQgY29kZS4gQW5kIG9uIHBvd2VycGMtaWJtLWFpeCBzeXN0ZW1zLCB0aGUgQyBjb21waWxlciBtYXkKKyAgICAgICAgICAgIyBiZSBnZW5lcmF0aW5nIDY0LWJpdCBjb2RlLgorICAgICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX3Bvd2VycGM2NF9fIHx8IGRlZmluZWQgX0FSQ0hfUFBDNjQKKyAgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PW5vXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9eWVzXSkKKyAgICAgICAgICAgOzsKKworICAgICAgICAgcnM2MDAwICkKKyAgICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9eWVzCisgICAgICAgICAgIDs7CisKKyAgICAgICAgIHJpc2N2MzIgfCByaXNjdjY0ICkKKyAgICAgICAgICAgIyBUaGVyZSBhcmUgNiBBQklzOiBpbHAzMiwgaWxwMzJmLCBpbHAzMmQsIGxwNjQsIGxwNjRmLCBscDY0ZC4KKyAgICAgICAgICAgIyBTaXplIG9mICdsb25nJyBhbmQgJ3ZvaWQgKic6CisgICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9fTFA2NF9fCisgICAgICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PW5vXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9eWVzXSkKKyAgICAgICAgICAgOzsKKworICAgICAgICAgczM5MCogKQorICAgICAgICAgICAjIE9uIHMzOTB4LCB0aGUgQyBjb21waWxlciBtYXkgYmUgZ2VuZXJhdGluZyA2NC1iaXQgKD0gczM5MHgpIGNvZGUKKyAgICAgICAgICAgIyBvciAzMS1iaXQgKD0gczM5MCkgY29kZS4KKyAgICAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19MUDY0X18gfHwgZGVmaW5lZCBfX3MzOTB4X18KKyAgICAgICAgICAgICAgICAgICAgaW50IG9rOworICAgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9bm9dLAorICAgICAgICAgICAgIFtnbF9jdl9ob3N0X2NwdV9jX2FiaV8zMmJpdD15ZXNdKQorICAgICAgICAgICA7OworCisgICAgICAgICBzcGFyYyB8IHNwYXJjNjQgKQorICAgICAgICAgICAjIFVsdHJhU1BBUkNzIHJ1bm5pbmcgTGludXggaGF2ZSBgdW5hbWUgLW1gID0gInNwYXJjNjQiLCBidXQgdGhlCisgICAgICAgICAgICMgQyBjb21waWxlciBzdGlsbCBnZW5lcmF0ZXMgMzItYml0IGNvZGUuCisgICAgICAgICAgIEFDX0NPTVBJTEVfSUZFTFNFKAorICAgICAgICAgICAgIFtBQ19MQU5HX1NPVVJDRSgKKyAgICAgICAgICAgICAgICBbWyNpZiBkZWZpbmVkIF9fc3BhcmN2OSB8fCBkZWZpbmVkIF9fYXJjaDY0X18KKyAgICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgICAgW2dsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0PW5vXSwKKyAgICAgICAgICAgICBbZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9eWVzXSkKKyAgICAgICAgICAgOzsKKworICAgICAgICAgKikKKyAgICAgICAgICAgZ2xfY3ZfaG9zdF9jcHVfY19hYmlfMzJiaXQ9bm8KKyAgICAgICAgICAgOzsKKyAgICAgICBlc2FjCisgICAgIGZpCisgICAgXSkKKworICBIT1NUX0NQVV9DX0FCSV8zMkJJVD0iJGdsX2N2X2hvc3RfY3B1X2NfYWJpXzMyYml0IgorXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvaWNvbnYubTQgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2ljb252Lm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEyODVlOWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2ljb252Lm00CkBAIC0wLDAgKzEsMjg4IEBACisjIGljb252Lm00IHNlcmlhbCAyMQorZG5sIENvcHlyaWdodCAoQykgMjAwMC0yMDAyLCAyMDA3LTIwMTQsIDIwMTYtMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCitkbmwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKK2RubCBGcm9tIEJydW5vIEhhaWJsZS4KKworQUNfREVGVU4oW0FNX0lDT05WX0xJTktGTEFHU19CT0RZXSwKK1sKKyAgZG5sIFByZXJlcXVpc2l0ZXMgb2YgQUNfTElCX0xJTktGTEFHU19CT0RZLgorICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJFUEFSRV9QUkVGSVhdKQorICBBQ19SRVFVSVJFKFtBQ19MSUJfUlBBVEhdKQorCisgIGRubCBTZWFyY2ggZm9yIGxpYmljb252IGFuZCBkZWZpbmUgTElCSUNPTlYsIExUTElCSUNPTlYgYW5kIElOQ0lDT05WCisgIGRubCBhY2NvcmRpbmdseS4KKyAgQUNfTElCX0xJTktGTEFHU19CT0RZKFtpY29udl0pCitdKQorCitBQ19ERUZVTihbQU1fSUNPTlZfTElOS10sCitbCisgIGRubCBTb21lIHN5c3RlbXMgaGF2ZSBpY29udiBpbiBsaWJjLCBzb21lIGhhdmUgaXQgaW4gbGliaWNvbnYgKE9TRi8xIGFuZAorICBkbmwgdGhvc2Ugd2l0aCB0aGUgc3RhbmRhbG9uZSBwb3J0YWJsZSBHTlUgbGliaWNvbnYgaW5zdGFsbGVkKS4KKyAgQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKSBkbmwgZm9yIGNyb3NzLWNvbXBpbGVzCisKKyAgZG5sIFNlYXJjaCBmb3IgbGliaWNvbnYgYW5kIGRlZmluZSBMSUJJQ09OViwgTFRMSUJJQ09OViBhbmQgSU5DSUNPTlYKKyAgZG5sIGFjY29yZGluZ2x5LgorICBBQ19SRVFVSVJFKFtBTV9JQ09OVl9MSU5LRkxBR1NfQk9EWV0pCisKKyAgZG5sIEFkZCAkSU5DSUNPTlYgdG8gQ1BQRkxBR1MgYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGZvbGxvd2luZyBjaGVja3MsCisgIGRubCBiZWNhdXNlIGlmIHRoZSB1c2VyIGhhcyBpbnN0YWxsZWQgbGliaWNvbnYgYW5kIG5vdCBkaXNhYmxlZCBpdHMgdXNlCisgIGRubCB2aWEgLS13aXRob3V0LWxpYmljb252LXByZWZpeCwgaGUgd2FudHMgdG8gdXNlIGl0LiBUaGUgZmlyc3QKKyAgZG5sIEFDX0xJTktfSUZFTFNFIHdpbGwgdGhlbiBmYWlsLCB0aGUgc2Vjb25kIEFDX0xJTktfSUZFTFNFIHdpbGwgc3VjY2VlZC4KKyAgYW1fc2F2ZV9DUFBGTEFHUz0iJENQUEZMQUdTIgorICBBQ19MSUJfQVBQRU5EVE9WQVIoW0NQUEZMQUdTXSwgWyRJTkNJQ09OVl0pCisKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBpY29udl0sIFthbV9jdl9mdW5jX2ljb252XSwgWworICAgIGFtX2N2X2Z1bmNfaWNvbnY9Im5vLCBjb25zaWRlciBpbnN0YWxsaW5nIEdOVSBsaWJpY29udiIKKyAgICBhbV9jdl9saWJfaWNvbnY9bm8KKyAgICBBQ19MSU5LX0lGRUxTRSgKKyAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICBbWworI2luY2x1ZGUgPHN0ZGxpYi5oPgorI2luY2x1ZGUgPGljb252Lmg+CisgICAgICAgICBdXSwKKyAgICAgICAgIFtbaWNvbnZfdCBjZCA9IGljb252X29wZW4oIiIsIiIpOworICAgICAgICAgICBpY29udihjZCxOVUxMLE5VTEwsTlVMTCxOVUxMKTsKKyAgICAgICAgICAgaWNvbnZfY2xvc2UoY2QpO11dKV0sCisgICAgICBbYW1fY3ZfZnVuY19pY29udj15ZXNdKQorICAgIGlmIHRlc3QgIiRhbV9jdl9mdW5jX2ljb252IiAhPSB5ZXM7IHRoZW4KKyAgICAgIGFtX3NhdmVfTElCUz0iJExJQlMiCisgICAgICBMSUJTPSIkTElCUyAkTElCSUNPTlYiCisgICAgICBBQ19MSU5LX0lGRUxTRSgKKyAgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAgICAgW1sKKyNpbmNsdWRlIDxzdGRsaWIuaD4KKyNpbmNsdWRlIDxpY29udi5oPgorICAgICAgICAgICBdXSwKKyAgICAgICAgICAgW1tpY29udl90IGNkID0gaWNvbnZfb3BlbigiIiwiIik7CisgICAgICAgICAgICAgaWNvbnYoY2QsTlVMTCxOVUxMLE5VTEwsTlVMTCk7CisgICAgICAgICAgICAgaWNvbnZfY2xvc2UoY2QpO11dKV0sCisgICAgICAgIFthbV9jdl9saWJfaWNvbnY9eWVzXQorICAgICAgICBbYW1fY3ZfZnVuY19pY29udj15ZXNdKQorICAgICAgTElCUz0iJGFtX3NhdmVfTElCUyIKKyAgICBmaQorICBdKQorICBpZiB0ZXN0ICIkYW1fY3ZfZnVuY19pY29udiIgPSB5ZXM7IHRoZW4KKyAgICBBQ19DQUNIRV9DSEVDSyhbZm9yIHdvcmtpbmcgaWNvbnZdLCBbYW1fY3ZfZnVuY19pY29udl93b3Jrc10sIFsKKyAgICAgIGRubCBUaGlzIHRlc3RzIGFnYWluc3QgYnVncyBpbiBBSVggNS4xLCBBSVggNi4xLi43LjEsIEhQLVVYIDExLjExLAorICAgICAgZG5sIFNvbGFyaXMgMTAuCisgICAgICBhbV9zYXZlX0xJQlM9IiRMSUJTIgorICAgICAgaWYgdGVzdCAkYW1fY3ZfbGliX2ljb252ID0geWVzOyB0aGVuCisgICAgICAgIExJQlM9IiRMSUJTICRMSUJJQ09OViIKKyAgICAgIGZpCisgICAgICBhbV9jdl9mdW5jX2ljb252X3dvcmtzPW5vCisgICAgICBmb3IgYWNfaWNvbnZfY29uc3QgaW4gJycgJ2NvbnN0JzsgZG8KKyAgICAgICAgQUNfUlVOX0lGRUxTRSgKKyAgICAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorICAgICAgICAgICAgIFtbCisjaW5jbHVkZSA8aWNvbnYuaD4KKyNpbmNsdWRlIDxzdHJpbmcuaD4KKworI2lmbmRlZiBJQ09OVl9DT05TVAorIyBkZWZpbmUgSUNPTlZfQ09OU1QgJGFjX2ljb252X2NvbnN0CisjZW5kaWYKKyAgICAgICAgICAgICBdXSwKKyAgICAgICAgICAgICBbW2ludCByZXN1bHQgPSAwOworICAvKiBUZXN0IGFnYWluc3QgQUlYIDUuMSBidWc6IEZhaWx1cmVzIGFyZSBub3QgZGlzdGluZ3Vpc2hhYmxlIGZyb20gc3VjY2Vzc2Z1bAorICAgICByZXR1cm5zLiAgKi8KKyAgeworICAgIGljb252X3QgY2RfdXRmOF90b184ODU5MSA9IGljb252X29wZW4gKCJJU084ODU5LTEiLCAiVVRGLTgiKTsKKyAgICBpZiAoY2RfdXRmOF90b184ODU5MSAhPSAoaWNvbnZfdCkoLTEpKQorICAgICAgeworICAgICAgICBzdGF0aWMgSUNPTlZfQ09OU1QgY2hhciBpbnB1dFtdID0gIlwzNDJcMjAyXDI1NCI7IC8qIEVVUk8gU0lHTiAqLworICAgICAgICBjaGFyIGJ1ZlsxMF07CisgICAgICAgIElDT05WX0NPTlNUIGNoYXIgKmlucHRyID0gaW5wdXQ7CisgICAgICAgIHNpemVfdCBpbmJ5dGVzbGVmdCA9IHN0cmxlbiAoaW5wdXQpOworICAgICAgICBjaGFyICpvdXRwdHIgPSBidWY7CisgICAgICAgIHNpemVfdCBvdXRieXRlc2xlZnQgPSBzaXplb2YgKGJ1Zik7CisgICAgICAgIHNpemVfdCByZXMgPSBpY29udiAoY2RfdXRmOF90b184ODU5MSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5wdHIsICZpbmJ5dGVzbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHRyLCAmb3V0Ynl0ZXNsZWZ0KTsKKyAgICAgICAgaWYgKHJlcyA9PSAwKQorICAgICAgICAgIHJlc3VsdCB8PSAxOworICAgICAgICBpY29udl9jbG9zZSAoY2RfdXRmOF90b184ODU5MSk7CisgICAgICB9CisgIH0KKyAgLyogVGVzdCBhZ2FpbnN0IFNvbGFyaXMgMTAgYnVnOiBGYWlsdXJlcyBhcmUgbm90IGRpc3Rpbmd1aXNoYWJsZSBmcm9tCisgICAgIHN1Y2Nlc3NmdWwgcmV0dXJucy4gICovCisgIHsKKyAgICBpY29udl90IGNkX2FzY2lpX3RvXzg4NTkxID0gaWNvbnZfb3BlbiAoIklTTzg4NTktMSIsICI2NDYiKTsKKyAgICBpZiAoY2RfYXNjaWlfdG9fODg1OTEgIT0gKGljb252X3QpKC0xKSkKKyAgICAgIHsKKyAgICAgICAgc3RhdGljIElDT05WX0NPTlNUIGNoYXIgaW5wdXRbXSA9ICJcMjYzIjsKKyAgICAgICAgY2hhciBidWZbMTBdOworICAgICAgICBJQ09OVl9DT05TVCBjaGFyICppbnB0ciA9IGlucHV0OworICAgICAgICBzaXplX3QgaW5ieXRlc2xlZnQgPSBzdHJsZW4gKGlucHV0KTsKKyAgICAgICAgY2hhciAqb3V0cHRyID0gYnVmOworICAgICAgICBzaXplX3Qgb3V0Ynl0ZXNsZWZ0ID0gc2l6ZW9mIChidWYpOworICAgICAgICBzaXplX3QgcmVzID0gaWNvbnYgKGNkX2FzY2lpX3RvXzg4NTkxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZpbnB0ciwgJmluYnl0ZXNsZWZ0LAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICZvdXRwdHIsICZvdXRieXRlc2xlZnQpOworICAgICAgICBpZiAocmVzID09IDApCisgICAgICAgICAgcmVzdWx0IHw9IDI7CisgICAgICAgIGljb252X2Nsb3NlIChjZF9hc2NpaV90b184ODU5MSk7CisgICAgICB9CisgIH0KKyAgLyogVGVzdCBhZ2FpbnN0IEFJWCA2LjEuLjcuMSBidWc6IEJ1ZmZlciBvdmVycnVuLiAgKi8KKyAgeworICAgIGljb252X3QgY2RfODg1OTFfdG9fdXRmOCA9IGljb252X29wZW4gKCJVVEYtOCIsICJJU08tODg1OS0xIik7CisgICAgaWYgKGNkXzg4NTkxX3RvX3V0ZjggIT0gKGljb252X3QpKC0xKSkKKyAgICAgIHsKKyAgICAgICAgc3RhdGljIElDT05WX0NPTlNUIGNoYXIgaW5wdXRbXSA9ICJcMzA0IjsKKyAgICAgICAgc3RhdGljIGNoYXIgYnVmWzJdID0geyAoY2hhcikweERFLCAoY2hhcikweEFEIH07CisgICAgICAgIElDT05WX0NPTlNUIGNoYXIgKmlucHRyID0gaW5wdXQ7CisgICAgICAgIHNpemVfdCBpbmJ5dGVzbGVmdCA9IDE7CisgICAgICAgIGNoYXIgKm91dHB0ciA9IGJ1ZjsKKyAgICAgICAgc2l6ZV90IG91dGJ5dGVzbGVmdCA9IDE7CisgICAgICAgIHNpemVfdCByZXMgPSBpY29udiAoY2RfODg1OTFfdG9fdXRmOCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmaW5wdHIsICZpbmJ5dGVzbGVmdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAmb3V0cHRyLCAmb3V0Ynl0ZXNsZWZ0KTsKKyAgICAgICAgaWYgKHJlcyAhPSAoc2l6ZV90KSgtMSkgfHwgb3V0cHRyIC0gYnVmID4gMSB8fCBidWZbMV0gIT0gKGNoYXIpMHhBRCkKKyAgICAgICAgICByZXN1bHQgfD0gNDsKKyAgICAgICAgaWNvbnZfY2xvc2UgKGNkXzg4NTkxX3RvX3V0ZjgpOworICAgICAgfQorICB9CisjaWYgMCAvKiBUaGlzIGJ1ZyBjb3VsZCBiZSB3b3JrZWQgYXJvdW5kIGJ5IHRoZSBjYWxsZXIuICAqLworICAvKiBUZXN0IGFnYWluc3QgSFAtVVggMTEuMTEgYnVnOiBQb3NpdGl2ZSByZXR1cm4gdmFsdWUgaW5zdGVhZCBvZiAwLiAgKi8KKyAgeworICAgIGljb252X3QgY2RfODg1OTFfdG9fdXRmOCA9IGljb252X29wZW4gKCJ1dGY4IiwgImlzbzg4NTkxIik7CisgICAgaWYgKGNkXzg4NTkxX3RvX3V0ZjggIT0gKGljb252X3QpKC0xKSkKKyAgICAgIHsKKyAgICAgICAgc3RhdGljIElDT05WX0NPTlNUIGNoYXIgaW5wdXRbXSA9ICJcMzA0cmdlciBtaXQgYlwzNjZzZW4gQlwzNzRiY2hlbiBvaG5lIEF1Z2VubWFcMzM3IjsKKyAgICAgICAgY2hhciBidWZbNTBdOworICAgICAgICBJQ09OVl9DT05TVCBjaGFyICppbnB0ciA9IGlucHV0OworICAgICAgICBzaXplX3QgaW5ieXRlc2xlZnQgPSBzdHJsZW4gKGlucHV0KTsKKyAgICAgICAgY2hhciAqb3V0cHRyID0gYnVmOworICAgICAgICBzaXplX3Qgb3V0Ynl0ZXNsZWZ0ID0gc2l6ZW9mIChidWYpOworICAgICAgICBzaXplX3QgcmVzID0gaWNvbnYgKGNkXzg4NTkxX3RvX3V0ZjgsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJmlucHRyLCAmaW5ieXRlc2xlZnQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgJm91dHB0ciwgJm91dGJ5dGVzbGVmdCk7CisgICAgICAgIGlmICgoaW50KXJlcyA+IDApCisgICAgICAgICAgcmVzdWx0IHw9IDg7CisgICAgICAgIGljb252X2Nsb3NlIChjZF84ODU5MV90b191dGY4KTsKKyAgICAgIH0KKyAgfQorI2VuZGlmCisgIC8qIFRlc3QgYWdhaW5zdCBIUC1VWCAxMS4xMSBidWc6IE5vIGNvbnZlcnRlciBmcm9tIEVVQy1KUCB0byBVVEYtOCBpcworICAgICBwcm92aWRlZC4gICovCisgIHsKKyAgICAvKiBUcnkgc3RhbmRhcmRpemVkIG5hbWVzLiAgKi8KKyAgICBpY29udl90IGNkMSA9IGljb252X29wZW4gKCJVVEYtOCIsICJFVUMtSlAiKTsKKyAgICAvKiBUcnkgSVJJWCwgT1NGLzEgbmFtZXMuICAqLworICAgIGljb252X3QgY2QyID0gaWNvbnZfb3BlbiAoIlVURi04IiwgImV1Y0pQIik7CisgICAgLyogVHJ5IEFJWCBuYW1lcy4gICovCisgICAgaWNvbnZfdCBjZDMgPSBpY29udl9vcGVuICgiVVRGLTgiLCAiSUJNLWV1Y0pQIik7CisgICAgLyogVHJ5IEhQLVVYIG5hbWVzLiAgKi8KKyAgICBpY29udl90IGNkNCA9IGljb252X29wZW4gKCJ1dGY4IiwgImV1Y0pQIik7CisgICAgaWYgKGNkMSA9PSAoaWNvbnZfdCkoLTEpICYmIGNkMiA9PSAoaWNvbnZfdCkoLTEpCisgICAgICAgICYmIGNkMyA9PSAoaWNvbnZfdCkoLTEpICYmIGNkNCA9PSAoaWNvbnZfdCkoLTEpKQorICAgICAgcmVzdWx0IHw9IDE2OworICAgIGlmIChjZDEgIT0gKGljb252X3QpKC0xKSkKKyAgICAgIGljb252X2Nsb3NlIChjZDEpOworICAgIGlmIChjZDIgIT0gKGljb252X3QpKC0xKSkKKyAgICAgIGljb252X2Nsb3NlIChjZDIpOworICAgIGlmIChjZDMgIT0gKGljb252X3QpKC0xKSkKKyAgICAgIGljb252X2Nsb3NlIChjZDMpOworICAgIGlmIChjZDQgIT0gKGljb252X3QpKC0xKSkKKyAgICAgIGljb252X2Nsb3NlIChjZDQpOworICB9CisgIHJldHVybiByZXN1bHQ7CitdXSldLAorICAgICAgICAgIFthbV9jdl9mdW5jX2ljb252X3dvcmtzPXllc10sICwKKyAgICAgICAgICBbY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgICAgICAgICAgYWl4KiB8IGhwdXgqKSBhbV9jdl9mdW5jX2ljb252X3dvcmtzPSJndWVzc2luZyBubyIgOzsKKyAgICAgICAgICAgICAqKSAgICAgICAgICAgIGFtX2N2X2Z1bmNfaWNvbnZfd29ya3M9Imd1ZXNzaW5nIHllcyIgOzsKKyAgICAgICAgICAgZXNhY10pCisgICAgICAgIHRlc3QgIiRhbV9jdl9mdW5jX2ljb252X3dvcmtzIiA9IG5vIHx8IGJyZWFrCisgICAgICBkb25lCisgICAgICBMSUJTPSIkYW1fc2F2ZV9MSUJTIgorICAgIF0pCisgICAgY2FzZSAiJGFtX2N2X2Z1bmNfaWNvbnZfd29ya3MiIGluCisgICAgICAqbm8pIGFtX2Z1bmNfaWNvbnY9bm8gYW1fY3ZfbGliX2ljb252PW5vIDs7CisgICAgICAqKSAgIGFtX2Z1bmNfaWNvbnY9eWVzIDs7CisgICAgZXNhYworICBlbHNlCisgICAgYW1fZnVuY19pY29udj1ubyBhbV9jdl9saWJfaWNvbnY9bm8KKyAgZmkKKyAgaWYgdGVzdCAiJGFtX2Z1bmNfaWNvbnYiID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKFtIQVZFX0lDT05WXSwgWzFdLAorICAgICAgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgaWNvbnYoKSBmdW5jdGlvbiBhbmQgaXQgd29ya3MuXSkKKyAgZmkKKyAgaWYgdGVzdCAiJGFtX2N2X2xpYl9pY29udiIgPSB5ZXM7IHRoZW4KKyAgICBBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBsaW5rIHdpdGggbGliaWNvbnZdKQorICAgIEFDX01TR19SRVNVTFQoWyRMSUJJQ09OVl0pCisgIGVsc2UKKyAgICBkbmwgSWYgJExJQklDT05WIGRpZG4ndCBsZWFkIHRvIGEgdXNhYmxlIGxpYnJhcnksIHdlIGRvbid0IG5lZWQgJElOQ0lDT05WCisgICAgZG5sIGVpdGhlci4KKyAgICBDUFBGTEFHUz0iJGFtX3NhdmVfQ1BQRkxBR1MiCisgICAgTElCSUNPTlY9CisgICAgTFRMSUJJQ09OVj0KKyAgZmkKKyAgQUNfU1VCU1QoW0xJQklDT05WXSkKKyAgQUNfU1VCU1QoW0xUTElCSUNPTlZdKQorXSkKKworZG5sIERlZmluZSBBTV9JQ09OViB1c2luZyBBQ19ERUZVTl9PTkNFIGZvciBBdXRvY29uZiA+PSAyLjY0LCBpbiBvcmRlciB0bworZG5sIGF2b2lkIHdhcm5pbmdzIGxpa2UKK2RubCAid2FybmluZzogQUNfUkVRVUlSRTogYEFNX0lDT05WJyB3YXMgZXhwYW5kZWQgYmVmb3JlIGl0IHdhcyByZXF1aXJlZCIuCitkbmwgVGhpcyBpcyB0cmlja3kgYmVjYXVzZSBvZiB0aGUgd2F5ICdhY2xvY2FsJyBpcyBpbXBsZW1lbnRlZDoKK2RubCAtIEl0IHJlcXVpcmVzIGRlZmluaW5nIGFuIGF1eGlsaWFyeSBtYWNybyB3aG9zZSBuYW1lIGVuZHMgaW4gQUNfREVGVU4uCitkbmwgICBPdGhlcndpc2UgYWNsb2NhbCdzIGluaXRpYWwgc2NhbiBwYXNzIHdvdWxkIG1pc3MgdGhlIG1hY3JvIGRlZmluaXRpb24uCitkbmwgLSBJdCByZXF1aXJlcyBhIGxpbmUgYnJlYWsgaW5zaWRlIHRoZSBBQ19ERUZVTl9PTkNFIGFuZCBBQ19ERUZVTiBleHBhbnNpb25zLgorZG5sICAgT3RoZXJ3aXNlIGFjbG9jYWwgd291bGQgZW1pdCBtYW55ICJVc2Ugb2YgdW5pbml0aWFsaXplZCB2YWx1ZSAkMSIKK2RubCAgIHdhcm5pbmdzLgorbTRfZGVmaW5lKFtnbF9pY29udl9BQ19ERUZVTl0sCisgIG00X3ZlcnNpb25fcHJlcmVxKFsyLjY0XSwKKyAgICBbW0FDX0RFRlVOX09OQ0UoCisgICAgICAgIFskMV0sIFskMl0pXV0sCisgICAgW200X2lmZGVmKFtnbF8wMEdOVUxJQl0sCisgICAgICAgW1tBQ19ERUZVTl9PTkNFKAorICAgICAgICAgICBbJDFdLCBbJDJdKV1dLAorICAgICAgIFtbQUNfREVGVU4oCisgICAgICAgICAgIFskMV0sIFskMl0pXV0pXSkpCitnbF9pY29udl9BQ19ERUZVTihbQU1fSUNPTlZdLAorWworICBBTV9JQ09OVl9MSU5LCisgIGlmIHRlc3QgIiRhbV9jdl9mdW5jX2ljb252IiA9IHllczsgdGhlbgorICAgIEFDX01TR19DSEVDS0lORyhbZm9yIGljb252IGRlY2xhcmF0aW9uXSkKKyAgICBBQ19DQUNIRV9WQUwoW2FtX2N2X3Byb3RvX2ljb252XSwgWworICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgIFtbCisjaW5jbHVkZSA8c3RkbGliLmg+CisjaW5jbHVkZSA8aWNvbnYuaD4KK2V4dGVybgorI2lmZGVmIF9fY3BsdXNwbHVzCisiQyIKKyNlbmRpZgorI2lmIGRlZmluZWQoX19TVERDX18pIHx8IGRlZmluZWQoX01TQ19WRVIpIHx8IGRlZmluZWQoX19jcGx1c3BsdXMpCitzaXplX3QgaWNvbnYgKGljb252X3QgY2QsIGNoYXIgKiAqaW5idWYsIHNpemVfdCAqaW5ieXRlc2xlZnQsIGNoYXIgKiAqb3V0YnVmLCBzaXplX3QgKm91dGJ5dGVzbGVmdCk7CisjZWxzZQorc2l6ZV90IGljb252KCk7CisjZW5kaWYKKyAgICAgICAgICAgXV0sCisgICAgICAgICAgIFtbXV0pXSwKKyAgICAgICAgW2FtX2N2X3Byb3RvX2ljb252X2FyZzE9IiJdLAorICAgICAgICBbYW1fY3ZfcHJvdG9faWNvbnZfYXJnMT0iY29uc3QiXSkKKyAgICAgIGFtX2N2X3Byb3RvX2ljb252PSJleHRlcm4gc2l6ZV90IGljb252IChpY29udl90IGNkLCAkYW1fY3ZfcHJvdG9faWNvbnZfYXJnMSBjaGFyICogKmluYnVmLCBzaXplX3QgKmluYnl0ZXNsZWZ0LCBjaGFyICogKm91dGJ1Ziwgc2l6ZV90ICpvdXRieXRlc2xlZnQpOyJdKQorICAgIGFtX2N2X3Byb3RvX2ljb252PWBlY2hvICJbJF1hbV9jdl9wcm90b19pY29udiIgfCB0ciAtcyAnICcgfCBzZWQgLWUgJ3MvKCAvKC8nYAorICAgIEFDX01TR19SRVNVTFQoWworICAgICAgICAgJGFtX2N2X3Byb3RvX2ljb252XSkKKyAgZWxzZQorICAgIGRubCBXaGVuIGNvbXBpbGluZyBHTlUgbGliaWNvbnYgb24gYSBzeXN0ZW0gdGhhdCBkb2VzIG5vdCBoYXZlIGljb252IHlldCwKKyAgICBkbmwgcGljayB0aGUgUE9TSVggY29tcGxpYW50IGRlY2xhcmF0aW9uIHdpdGhvdXQgJ2NvbnN0Jy4KKyAgICBhbV9jdl9wcm90b19pY29udl9hcmcxPSIiCisgIGZpCisgIEFDX0RFRklORV9VTlFVT1RFRChbSUNPTlZfQ09OU1RdLCBbJGFtX2N2X3Byb3RvX2ljb252X2FyZzFdLAorICAgIFtEZWZpbmUgYXMgY29uc3QgaWYgdGhlIGRlY2xhcmF0aW9uIG9mIGljb252KCkgbmVlZHMgY29uc3QuXSkKKyAgZG5sIEFsc28gc3Vic3RpdHV0ZSBJQ09OVl9DT05TVCBpbiB0aGUgZ251bGliIGdlbmVyYXRlZCA8aWNvbnYuaD4uCisgIG00X2lmZGVmKFtnbF9JQ09OVl9IX0RFRkFVTFRTXSwKKyAgICBbQUNfUkVRVUlSRShbZ2xfSUNPTlZfSF9ERUZBVUxUU10pCisgICAgIGlmIHRlc3QgLW4gIiRhbV9jdl9wcm90b19pY29udl9hcmcxIjsgdGhlbgorICAgICAgIElDT05WX0NPTlNUPSJjb25zdCIKKyAgICAgZmkKKyAgICBdKQorXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvaW50bG1hY29zeC5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvaW50bG1hY29zeC5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zMGU2ZjUwZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvaW50bG1hY29zeC5tNApAQCAtMCwwICsxLDcyIEBACisjIGludGxtYWNvc3gubTQgc2VyaWFsIDYgKGdldHRleHQtMC4yMCkKK2RubCBDb3B5cmlnaHQgKEMpIDIwMDQtMjAxNCwgMjAxNiwgMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorZG5sCitkbmwgVGhpcyBmaWxlIGNhbiBiZSB1c2VkIGluIHByb2plY3RzIHdoaWNoIGFyZSBub3QgYXZhaWxhYmxlIHVuZGVyCitkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworZG5sIExpY2Vuc2UgYnV0IHdoaWNoIHN0aWxsIHdhbnQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR05VIGdldHRleHQKK2RubCBmdW5jdGlvbmFsaXR5LgorZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKK2RubCBieSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHRoZSByZXN0IG9mIHRoZSBHTlUKK2RubCBnZXR0ZXh0IHBhY2thZ2UgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCitkbmwgVGhleSBhcmUgKm5vdCogaW4gdGhlIHB1YmxpYyBkb21haW4uCisKK2RubCBDaGVja3MgZm9yIHNwZWNpYWwgb3B0aW9ucyBuZWVkZWQgb24gTWFjIE9TIFguCitkbmwgRGVmaW5lcyBJTlRMX01BQ09TWF9MSUJTLgorQUNfREVGVU4oW2d0X0lOVExfTUFDT1NYXSwKK1sKKyAgZG5sIENoZWNrIGZvciBBUEkgaW50cm9kdWNlZCBpbiBNYWMgT1MgWCAxMC40LgorICBBQ19DQUNIRV9DSEVDSyhbZm9yIENGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWVdLAorICAgIFtndF9jdl9mdW5jX0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWVdLAorICAgIFtndF9zYXZlX0xJQlM9IiRMSUJTIgorICAgICBMSUJTPSIkTElCUyAtV2wsLWZyYW1ld29yayAtV2wsQ29yZUZvdW5kYXRpb24iCisgICAgIEFDX0xJTktfSUZFTFNFKAorICAgICAgIFtBQ19MQU5HX1BST0dSQU0oCisgICAgICAgICAgW1sjaW5jbHVkZSA8Q29yZUZvdW5kYXRpb24vQ0ZQcmVmZXJlbmNlcy5oPl1dLAorICAgICAgICAgIFtbQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZShOVUxMLCBOVUxMKV1dKV0sCisgICAgICAgW2d0X2N2X2Z1bmNfQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZT15ZXNdLAorICAgICAgIFtndF9jdl9mdW5jX0NGUHJlZmVyZW5jZXNDb3B5QXBwVmFsdWU9bm9dKQorICAgICBMSUJTPSIkZ3Rfc2F2ZV9MSUJTIl0pCisgIGlmIHRlc3QgJGd0X2N2X2Z1bmNfQ0ZQcmVmZXJlbmNlc0NvcHlBcHBWYWx1ZSA9IHllczsgdGhlbgorICAgIEFDX0RFRklORShbSEFWRV9DRlBSRUZFUkVOQ0VTQ09QWUFQUFZBTFVFXSwgWzFdLAorICAgICAgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBNYWMgT1MgWCBmdW5jdGlvbiBDRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlIGluIHRoZSBDb3JlRm91bmRhdGlvbiBmcmFtZXdvcmsuXSkKKyAgZmkKKyAgZG5sIENoZWNrIGZvciBBUEkgaW50cm9kdWNlZCBpbiBNYWMgT1MgWCAxMC41LgorICBBQ19DQUNIRV9DSEVDSyhbZm9yIENGTG9jYWxlQ29weUN1cnJlbnRdLCBbZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlDdXJyZW50XSwKKyAgICBbZ3Rfc2F2ZV9MSUJTPSIkTElCUyIKKyAgICAgTElCUz0iJExJQlMgLVdsLC1mcmFtZXdvcmsgLVdsLENvcmVGb3VuZGF0aW9uIgorICAgICBBQ19MSU5LX0lGRUxTRSgKKyAgICAgICBbQUNfTEFOR19QUk9HUkFNKAorICAgICAgICAgIFtbI2luY2x1ZGUgPENvcmVGb3VuZGF0aW9uL0NGTG9jYWxlLmg+XV0sCisgICAgICAgICAgW1tDRkxvY2FsZUNvcHlDdXJyZW50KCk7XV0pXSwKKyAgICAgICBbZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlDdXJyZW50PXllc10sCisgICAgICAgW2d0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5Q3VycmVudD1ub10pCisgICAgIExJQlM9IiRndF9zYXZlX0xJQlMiXSkKKyAgaWYgdGVzdCAkZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlDdXJyZW50ID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKFtIQVZFX0NGTE9DQUxFQ09QWUNVUlJFTlRdLCBbMV0sCisgICAgICBbRGVmaW5lIHRvIDEgaWYgeW91IGhhdmUgdGhlIE1hYyBPUyBYIGZ1bmN0aW9uIENGTG9jYWxlQ29weUN1cnJlbnQgaW4gdGhlIENvcmVGb3VuZGF0aW9uIGZyYW1ld29yay5dKQorICBmaQorICBBQ19DQUNIRV9DSEVDSyhbZm9yIENGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlc10sIFtndF9jdl9mdW5jX0NGTG9jYWxlQ29weVByZWZlcnJlZExhbmd1YWdlc10sCisgICAgW2d0X3NhdmVfTElCUz0iJExJQlMiCisgICAgIExJQlM9IiRMSUJTIC1XbCwtZnJhbWV3b3JrIC1XbCxDb3JlRm91bmRhdGlvbiIKKyAgICAgQUNfTElOS19JRkVMU0UoCisgICAgICAgW0FDX0xBTkdfUFJPR1JBTSgKKyAgICAgICAgICBbWyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9DRkxvY2FsZS5oPl1dLAorICAgICAgICAgIFtbQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFuZ3VhZ2VzKCk7XV0pXSwKKyAgICAgICBbZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXM9eWVzXSwKKyAgICAgICBbZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXM9bm9dKQorICAgICBMSUJTPSIkZ3Rfc2F2ZV9MSUJTIl0pCisgIGlmIHRlc3QgJGd0X2N2X2Z1bmNfQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFuZ3VhZ2VzID0geWVzOyB0aGVuCisgICAgQUNfREVGSU5FKFtIQVZFX0NGTE9DQUxFQ09QWVBSRUZFUlJFRExBTkdVQUdFU10sIFsxXSwKKyAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgTWFjIE9TIFggZnVuY3Rpb24gQ0ZMb2NhbGVDb3B5UHJlZmVycmVkTGFuZ3VhZ2VzIGluIHRoZSBDb3JlRm91bmRhdGlvbiBmcmFtZXdvcmsuXSkKKyAgZmkKKyAgSU5UTF9NQUNPU1hfTElCUz0KKyAgaWYgdGVzdCAkZ3RfY3ZfZnVuY19DRlByZWZlcmVuY2VzQ29weUFwcFZhbHVlID0geWVzIFwKKyAgICAgfHwgdGVzdCAkZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlDdXJyZW50ID0geWVzIFwKKyAgICAgfHwgdGVzdCAkZ3RfY3ZfZnVuY19DRkxvY2FsZUNvcHlQcmVmZXJyZWRMYW5ndWFnZXMgPSB5ZXM7IHRoZW4KKyAgICBJTlRMX01BQ09TWF9MSUJTPSItV2wsLWZyYW1ld29yayAtV2wsQ29yZUZvdW5kYXRpb24iCisgIGZpCisgIEFDX1NVQlNUKFtJTlRMX01BQ09TWF9MSUJTXSkKK10pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2xpYi1sZC5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvbGliLWxkLm00Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmExODcxOTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL2xpYi1sZC5tNApAQCAtMCwwICsxLDE2OCBAQAorIyBsaWItbGQubTQgc2VyaWFsIDkKK2RubCBDb3B5cmlnaHQgKEMpIDE5OTYtMjAwMywgMjAwOS0yMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisKK2RubCBTdWJyb3V0aW5lcyBvZiBsaWJ0b29sLm00LAorZG5sIHdpdGggcmVwbGFjZW1lbnRzIHMvXypMVF9QQVRIL0FDX0xJQl9QUk9HLyBhbmQgcy9sdF8vYWNsXy8gdG8gYXZvaWQKK2RubCBjb2xsaXNpb24gd2l0aCBsaWJ0b29sLm00LgorCitkbmwgRnJvbSBsaWJ0b29sLTIuNC4gU2V0cyB0aGUgdmFyaWFibGUgd2l0aF9nbnVfbGQgdG8geWVzIG9yIG5vLgorQUNfREVGVU4oW0FDX0xJQl9QUk9HX0xEX0dOVV0sCitbQUNfQ0FDSEVfQ0hFQ0soW2lmIHRoZSBsaW5rZXIgKCRMRCkgaXMgR05VIGxkXSwgW2FjbF9jdl9wcm9nX2dudV9sZF0sCitbIyBJJ2QgcmF0aGVyIHVzZSAtLXZlcnNpb24gaGVyZSwgYnV0IGFwcGFyZW50bHkgc29tZSBHTlUgbGRzIG9ubHkgYWNjZXB0IC12LgorY2FzZSBgJExEIC12IDI+JjEgPC9kZXYvbnVsbGAgaW4KKypHTlUqIHwgKid3aXRoIEJGRCcqKQorICBhY2xfY3ZfcHJvZ19nbnVfbGQ9eWVzCisgIDs7CisqKQorICBhY2xfY3ZfcHJvZ19nbnVfbGQ9bm8KKyAgOzsKK2VzYWNdKQord2l0aF9nbnVfbGQ9JGFjbF9jdl9wcm9nX2dudV9sZAorXSkKKworZG5sIEZyb20gbGlidG9vbC0yLjQuIFNldHMgdGhlIHZhcmlhYmxlIExELgorQUNfREVGVU4oW0FDX0xJQl9QUk9HX0xEXSwKK1tBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSlkbmwKK0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSlkbmwKKworQUNfQVJHX1dJVEgoW2dudS1sZF0sCisgICAgW0FTX0hFTFBfU1RSSU5HKFstLXdpdGgtZ251LWxkXSwKKyAgICAgICAgW2Fzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub11dKV0sCisgICAgW3Rlc3QgIiR3aXRodmFsIiA9IG5vIHx8IHdpdGhfZ251X2xkPXllc10sCisgICAgW3dpdGhfZ251X2xkPW5vXSlkbmwKKworIyBQcmVwYXJlIFBBVEhfU0VQQVJBVE9SLgorIyBUaGUgdXNlciBpcyBhbHdheXMgcmlnaHQuCitpZiB0ZXN0ICIke1BBVEhfU0VQQVJBVE9SK3NldH0iICE9IHNldDsgdGhlbgorICAjIERldGVybWluZSBQQVRIX1NFUEFSQVRPUiBieSB0cnlpbmcgdG8gZmluZCAvYmluL3NoIGluIGEgUEFUSCB3aGljaAorICAjIGNvbnRhaW5zIG9ubHkgL2Jpbi4gTm90ZSB0aGF0IGtzaCBsb29rcyBhbHNvIGF0IHRoZSBGUEFUSCB2YXJpYWJsZSwKKyAgIyBzbyB3ZSBoYXZlIHRvIHNldCB0aGF0IGFzIHdlbGwgZm9yIHRoZSB0ZXN0LgorICBQQVRIX1NFUEFSQVRPUj06CisgIChQQVRIPScvYmluOy9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICAmJiB7IChQQVRIPScvYmluOi9iaW4nOyBGUEFUSD0kUEFUSDsgc2ggLWMgOikgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICAgICAgICAgfHwgUEFUSF9TRVBBUkFUT1I9JzsnCisgICAgICAgfQorZmkKKworaWYgdGVzdCAtbiAiJExEIjsgdGhlbgorICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBsZF0pCitlbGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgIEFDX01TR19DSEVDS0lORyhbZm9yIGxkIHVzZWQgYnkgJENDXSkKK2VsaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBHTlUgbGRdKQorZWxzZQorICBBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBub24tR05VIGxkXSkKK2ZpCitpZiB0ZXN0IC1uICIkTEQiOyB0aGVuCisgICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0IHdpdGggYSBwYXRoLgorICA6CitlbHNlCisgIEFDX0NBQ0hFX1ZBTChbYWNsX2N2X3BhdGhfTERdLAorICBbCisgICAgYWNsX2N2X3BhdGhfTEQ9ICMgRmluYWwgcmVzdWx0IG9mIHRoaXMgdGVzdAorICAgIGFjX3Byb2c9bGQgIyBQcm9ncmFtIHRvIHNlYXJjaCBpbiAkUEFUSAorICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAjIENoZWNrIGlmIGdjYyAtcHJpbnQtcHJvZy1uYW1lPWxkIGdpdmVzIGEgcGF0aC4KKyAgICAgIGNhc2UgJGhvc3QgaW4KKyAgICAgICAgKi0qLW1pbmd3KikKKyAgICAgICAgICAjIGdjYyBsZWF2ZXMgYSB0cmFpbGluZyBjYXJyaWFnZSByZXR1cm4gd2hpY2ggdXBzZXRzIG1pbmd3CisgICAgICAgICAgYWNsX291dHB1dD1gKCRDQyAtcHJpbnQtcHJvZy1uYW1lPWxkKSAyPiY1IHwgdHIgLWQgJ1wwMTUnYCA7OworICAgICAgICAqKQorICAgICAgICAgIGFjbF9vdXRwdXQ9YCgkQ0MgLXByaW50LXByb2ctbmFtZT1sZCkgMj4mNWAgOzsKKyAgICAgIGVzYWMKKyAgICAgIGNhc2UgJGFjbF9vdXRwdXQgaW4KKyAgICAgICAgIyBBY2NlcHQgYWJzb2x1dGUgcGF0aHMuCisgICAgICAgIFtbXFwvXV0qIHwgPzpbW1xcL11dKikKKyAgICAgICAgICByZV9kaXJlbHQ9Jy9bW14vXV1bW14vXV0qL1wuXC4vJworICAgICAgICAgICMgQ2Fub25pY2FsaXplIHRoZSBwYXRobmFtZSBvZiBsZAorICAgICAgICAgIGFjbF9vdXRwdXQ9YGVjaG8gIiRhY2xfb3V0cHV0IiB8IHNlZCAncyVcXFxcJS8lZydgCisgICAgICAgICAgd2hpbGUgZWNobyAiJGFjbF9vdXRwdXQiIHwgZ3JlcCAiJHJlX2RpcmVsdCIgPiAvZGV2L251bGwgMj4mMTsgZG8KKyAgICAgICAgICAgIGFjbF9vdXRwdXQ9YGVjaG8gJGFjbF9vdXRwdXQgfCBzZWQgInMlJHJlX2RpcmVsdCUvJSJgCisgICAgICAgICAgZG9uZQorICAgICAgICAgICMgR290IHRoZSBwYXRobmFtZS4gTm8gc2VhcmNoIGluIFBBVEggaXMgbmVlZGVkLgorICAgICAgICAgIGFjbF9jdl9wYXRoX0xEPSIkYWNsX291dHB1dCIKKyAgICAgICAgICBhY19wcm9nPQorICAgICAgICAgIDs7CisgICAgICAgICIiKQorICAgICAgICAgICMgSWYgaXQgZmFpbHMsIHRoZW4gcHJldGVuZCB3ZSBhcmVuJ3QgdXNpbmcgR0NDLgorICAgICAgICAgIDs7CisgICAgICAgICopCisgICAgICAgICAgIyBJZiBpdCBpcyByZWxhdGl2ZSwgdGhlbiBzZWFyY2ggZm9yIHRoZSBmaXJzdCBsZCBpbiBQQVRILgorICAgICAgICAgIHdpdGhfZ251X2xkPXVua25vd24KKyAgICAgICAgICA7OworICAgICAgZXNhYworICAgIGZpCisgICAgaWYgdGVzdCAtbiAiJGFjX3Byb2ciOyB0aGVuCisgICAgICAjIFNlYXJjaCBmb3IgJGFjX3Byb2cgaW4gJFBBVEguCisgICAgICBhY2xfc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisgICAgICBmb3IgYWNfZGlyIGluICRQQVRIOyBkbworICAgICAgICBJRlM9IiRhY2xfc2F2ZV9pZnMiCisgICAgICAgIHRlc3QgLXogIiRhY19kaXIiICYmIGFjX2Rpcj0uCisgICAgICAgIGlmIHRlc3QgLWYgIiRhY19kaXIvJGFjX3Byb2ciIHx8IHRlc3QgLWYgIiRhY19kaXIvJGFjX3Byb2ckYWNfZXhlZXh0IjsgdGhlbgorICAgICAgICAgIGFjbF9jdl9wYXRoX0xEPSIkYWNfZGlyLyRhY19wcm9nIgorICAgICAgICAgICMgQ2hlY2sgdG8gc2VlIGlmIHRoZSBwcm9ncmFtIGlzIEdOVSBsZC4gIEknZCByYXRoZXIgdXNlIC0tdmVyc2lvbiwKKyAgICAgICAgICAjIGJ1dCBhcHBhcmVudGx5IHNvbWUgdmFyaWFudHMgb2YgR05VIGxkIG9ubHkgYWNjZXB0IC12LgorICAgICAgICAgICMgQnJlYWsgb25seSBpZiBpdCB3YXMgdGhlIEdOVS9ub24tR05VIGxkIHRoYXQgd2UgcHJlZmVyLgorICAgICAgICAgIGNhc2UgYCIkYWNsX2N2X3BhdGhfTEQiIC12IDI+JjEgPC9kZXYvbnVsbGAgaW4KKyAgICAgICAgICAgICpHTlUqIHwgKid3aXRoIEJGRCcqKQorICAgICAgICAgICAgICB0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IG5vICYmIGJyZWFrCisgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAqKQorICAgICAgICAgICAgICB0ZXN0ICIkd2l0aF9nbnVfbGQiICE9IHllcyAmJiBicmVhaworICAgICAgICAgICAgICA7OworICAgICAgICAgIGVzYWMKKyAgICAgICAgZmkKKyAgICAgIGRvbmUKKyAgICAgIElGUz0iJGFjbF9zYXZlX2lmcyIKKyAgICBmaQorICAgIGNhc2UgJGhvc3QgaW4KKyAgICAgICotKi1haXgqKQorICAgICAgICBBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICBbQUNfTEFOR19TT1VSQ0UoCisgICAgICAgICAgICAgW1sjaWYgZGVmaW5lZCBfX3Bvd2VycGM2NF9fIHx8IGRlZmluZWQgX0FSQ0hfUFBDNjQKKyAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAjZWxzZQorICAgICAgICAgICAgICAgIGVycm9yIGZhaWwKKyAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgIF1dKV0sCisgICAgICAgICAgWyMgVGhlIGNvbXBpbGVyIHByb2R1Y2VzIDY0LWJpdCBjb2RlLiBBZGQgb3B0aW9uICctYjY0JyBzbyB0aGF0IHRoZQorICAgICAgICAgICAjIGxpbmtlciBncm9rcyA2NC1iaXQgb2JqZWN0IGZpbGVzLgorICAgICAgICAgICBjYXNlICIkYWNsX2N2X3BhdGhfTEQgIiBpbgorICAgICAgICAgICAgICoiIC1iNjQgIiopIDs7CisgICAgICAgICAgICAgKikgYWNsX2N2X3BhdGhfTEQ9IiRhY2xfY3ZfcGF0aF9MRCAtYjY0IiA7OworICAgICAgICAgICBlc2FjCisgICAgICAgICAgXSwgW10pCisgICAgICAgIDs7CisgICAgICBzcGFyYzY0LSotbmV0YnNkKikKKyAgICAgICAgQUNfQ09NUElMRV9JRkVMU0UoCisgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgIFtbI2lmIGRlZmluZWQgX19zcGFyY3Y5IHx8IGRlZmluZWQgX19hcmNoNjRfXworICAgICAgICAgICAgICAgIGludCBvazsKKyAgICAgICAgICAgICAgICNlbHNlCisgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgI2VuZGlmCisgICAgICAgICAgICAgXV0pXSwKKyAgICAgICAgICBbXSwKKyAgICAgICAgICBbIyBUaGUgY29tcGlsZXIgcHJvZHVjZXMgMzItYml0IGNvZGUuIEFkZCBvcHRpb24gJy1tIGVsZjMyX3NwYXJjJworICAgICAgICAgICAjIHNvIHRoYXQgdGhlIGxpbmtlciBncm9rcyAzMi1iaXQgb2JqZWN0IGZpbGVzLgorICAgICAgICAgICBjYXNlICIkYWNsX2N2X3BhdGhfTEQgIiBpbgorICAgICAgICAgICAgICoiIC1tIGVsZjMyX3NwYXJjICIqKSA7OworICAgICAgICAgICAgICopIGFjbF9jdl9wYXRoX0xEPSIkYWNsX2N2X3BhdGhfTEQgLW0gZWxmMzJfc3BhcmMiIDs7CisgICAgICAgICAgIGVzYWMKKyAgICAgICAgICBdKQorICAgICAgICA7OworICAgIGVzYWMKKyAgXSkKKyAgTEQ9IiRhY2xfY3ZfcGF0aF9MRCIKK2ZpCitpZiB0ZXN0IC1uICIkTEQiOyB0aGVuCisgIEFDX01TR19SRVNVTFQoWyRMRF0pCitlbHNlCisgIEFDX01TR19SRVNVTFQoW25vXSkKKyAgQUNfTVNHX0VSUk9SKFtubyBhY2NlcHRhYmxlIGxkIGZvdW5kIGluIFwkUEFUSF0pCitmaQorQUNfTElCX1BST0dfTERfR05VCitdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9saWItbGluay5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvbGliLWxpbmsubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGZmMTA3MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvbGliLWxpbmsubTQKQEAgLTAsMCArMSw3NzQgQEAKKyMgbGliLWxpbmsubTQgc2VyaWFsIDI4CitkbmwgQ29weXJpZ2h0IChDKSAyMDAxLTIwMTkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKworZG5sIEZyb20gQnJ1bm8gSGFpYmxlLgorCitBQ19QUkVSRVEoWzIuNjFdKQorCitkbmwgQUNfTElCX0xJTktGTEFHUyhuYW1lIFssIGRlcGVuZGVuY2llc10pIHNlYXJjaGVzIGZvciBsaWJuYW1lIGFuZAorZG5sIHRoZSBsaWJyYXJpZXMgY29ycmVzcG9uZGluZyB0byBleHBsaWNpdCBhbmQgaW1wbGljaXQgZGVwZW5kZW5jaWVzLgorZG5sIFNldHMgYW5kIEFDX1NVQlNUcyB0aGUgTElCJHtOQU1FfSBhbmQgTFRMSUIke05BTUV9IHZhcmlhYmxlcyBhbmQKK2RubCBhdWdtZW50cyB0aGUgQ1BQRkxBR1MgdmFyaWFibGUuCitkbmwgU2V0cyBhbmQgQUNfU1VCU1RzIHRoZSBMSUIke05BTUV9X1BSRUZJWCB2YXJpYWJsZSB0byBub25lbXB0eSBpZiBsaWJuYW1lCitkbmwgd2FzIGZvdW5kIGluICR7TElCJHtOQU1FfV9QUkVGSVh9LyRhY2xfbGliZGlyc3RlbS4KK0FDX0RFRlVOKFtBQ19MSUJfTElOS0ZMQUdTXSwKK1sKKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfUFJFRklYXSkKKyAgQUNfUkVRVUlSRShbQUNfTElCX1JQQVRIXSkKKyAgcHVzaGRlZihbTmFtZV0sW200X3RyYW5zbGl0KFskMV0sWy4vKy1dLCBbX19fX10pXSkKKyAgcHVzaGRlZihbTkFNRV0sW200X3RyYW5zbGl0KFskMV0sW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8rLV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtBQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWl9fX19dKV0pCisgIEFDX0NBQ0hFX0NIRUNLKFtob3cgdG8gbGluayB3aXRoIGxpYltdJDFdLCBbYWNfY3ZfbGliW11OYW1lW11fbGlic10sIFsKKyAgICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoWyQxXSwgWyQyXSkKKyAgICBhY19jdl9saWJbXU5hbWVbXV9saWJzPSIkTElCW11OQU1FIgorICAgIGFjX2N2X2xpYltdTmFtZVtdX2x0bGlicz0iJExUTElCW11OQU1FIgorICAgIGFjX2N2X2xpYltdTmFtZVtdX2NwcGZsYWdzPSIkSU5DW11OQU1FIgorICAgIGFjX2N2X2xpYltdTmFtZVtdX3ByZWZpeD0iJExJQltdTkFNRVtdX1BSRUZJWCIKKyAgXSkKKyAgTElCW11OQU1FPSIkYWNfY3ZfbGliW11OYW1lW11fbGlicyIKKyAgTFRMSUJbXU5BTUU9IiRhY19jdl9saWJbXU5hbWVbXV9sdGxpYnMiCisgIElOQ1tdTkFNRT0iJGFjX2N2X2xpYltdTmFtZVtdX2NwcGZsYWdzIgorICBMSUJbXU5BTUVbXV9QUkVGSVg9IiRhY19jdl9saWJbXU5hbWVbXV9wcmVmaXgiCisgIEFDX0xJQl9BUFBFTkRUT1ZBUihbQ1BQRkxBR1NdLCBbJElOQ11OQU1FKQorICBBQ19TVUJTVChbTElCXU5BTUUpCisgIEFDX1NVQlNUKFtMVExJQl1OQU1FKQorICBBQ19TVUJTVChbTElCXU5BTUVbX1BSRUZJWF0pCisgIGRubCBBbHNvIHNldCBIQVZFX0xJQltdTkFNRSBzbyB0aGF0IEFDX0xJQl9IQVZFX0xJTktGTEFHUyBjYW4gcmV1c2UgdGhlCisgIGRubCByZXN1bHRzIG9mIHRoaXMgc2VhcmNoIHdoZW4gdGhpcyBsaWJyYXJ5IGFwcGVhcnMgYXMgYSBkZXBlbmRlbmN5LgorICBIQVZFX0xJQltdTkFNRT15ZXMKKyAgcG9wZGVmKFtOQU1FXSkKKyAgcG9wZGVmKFtOYW1lXSkKK10pCisKK2RubCBBQ19MSUJfSEFWRV9MSU5LRkxBR1MobmFtZSwgZGVwZW5kZW5jaWVzLCBpbmNsdWRlcywgdGVzdGNvZGUsIFttaXNzaW5nLW1lc3NhZ2VdKQorZG5sIHNlYXJjaGVzIGZvciBsaWJuYW1lIGFuZCB0aGUgbGlicmFyaWVzIGNvcnJlc3BvbmRpbmcgdG8gZXhwbGljaXQgYW5kCitkbmwgaW1wbGljaXQgZGVwZW5kZW5jaWVzLCB0b2dldGhlciB3aXRoIHRoZSBzcGVjaWZpZWQgaW5jbHVkZSBmaWxlcyBhbmQKK2RubCB0aGUgYWJpbGl0eSB0byBjb21waWxlIGFuZCBsaW5rIHRoZSBzcGVjaWZpZWQgdGVzdGNvZGUuIFRoZSBtaXNzaW5nLW1lc3NhZ2UKK2RubCBkZWZhdWx0cyB0byAnbm8nIGFuZCBtYXkgY29udGFpbiBhZGRpdGlvbmFsIGhpbnRzIGZvciB0aGUgdXNlci4KK2RubCBJZiBmb3VuZCwgaXQgc2V0cyBhbmQgQUNfU1VCU1RzIEhBVkVfTElCJHtOQU1FfT15ZXMgYW5kIHRoZSBMSUIke05BTUV9CitkbmwgYW5kIExUTElCJHtOQU1FfSB2YXJpYWJsZXMgYW5kIGF1Z21lbnRzIHRoZSBDUFBGTEFHUyB2YXJpYWJsZSwgYW5kCitkbmwgI2RlZmluZXMgSEFWRV9MSUIke05BTUV9IHRvIDEuIE90aGVyd2lzZSwgaXQgc2V0cyBhbmQgQUNfU1VCU1RzCitkbmwgSEFWRV9MSUIke05BTUV9PW5vIGFuZCBMSUIke05BTUV9IGFuZCBMVExJQiR7TkFNRX0gdG8gZW1wdHkuCitkbmwgU2V0cyBhbmQgQUNfU1VCU1RzIHRoZSBMSUIke05BTUV9X1BSRUZJWCB2YXJpYWJsZSB0byBub25lbXB0eSBpZiBsaWJuYW1lCitkbmwgd2FzIGZvdW5kIGluICR7TElCJHtOQU1FfV9QUkVGSVh9LyRhY2xfbGliZGlyc3RlbS4KK0FDX0RFRlVOKFtBQ19MSUJfSEFWRV9MSU5LRkxBR1NdLAorWworICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJFUEFSRV9QUkVGSVhdKQorICBBQ19SRVFVSVJFKFtBQ19MSUJfUlBBVEhdKQorICBwdXNoZGVmKFtOYW1lXSxbbTRfdHJhbnNsaXQoWyQxXSxbLi8rLV0sIFtfX19fXSldKQorICBwdXNoZGVmKFtOQU1FXSxbbTRfdHJhbnNsaXQoWyQxXSxbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLystXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fX10pXSkKKworICBkbmwgU2VhcmNoIGZvciBsaWJbXU5hbWUgYW5kIGRlZmluZSBMSUJbXU5BTUUsIExUTElCW11OQU1FIGFuZCBJTkNbXU5BTUUKKyAgZG5sIGFjY29yZGluZ2x5LgorICBBQ19MSUJfTElOS0ZMQUdTX0JPRFkoWyQxXSwgWyQyXSkKKworICBkbmwgQWRkICRJTkNbXU5BTUUgdG8gQ1BQRkxBR1MgYmVmb3JlIHBlcmZvcm1pbmcgdGhlIGZvbGxvd2luZyBjaGVja3MsCisgIGRubCBiZWNhdXNlIGlmIHRoZSB1c2VyIGhhcyBpbnN0YWxsZWQgbGliW11OYW1lIGFuZCBub3QgZGlzYWJsZWQgaXRzIHVzZQorICBkbmwgdmlhIC0td2l0aG91dC1saWJbXU5hbWUtcHJlZml4LCBoZSB3YW50cyB0byB1c2UgaXQuCisgIGFjX3NhdmVfQ1BQRkxBR1M9IiRDUFBGTEFHUyIKKyAgQUNfTElCX0FQUEVORFRPVkFSKFtDUFBGTEFHU10sIFskSU5DXU5BTUUpCisKKyAgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBsaWJbXSQxXSwgW2FjX2N2X2xpYltdTmFtZV0sIFsKKyAgICBhY19zYXZlX0xJQlM9IiRMSUJTIgorICAgIGRubCBJZiAkTElCW11OQU1FIGNvbnRhaW5zIHNvbWUgLWwgb3B0aW9ucywgYWRkIGl0IHRvIHRoZSBlbmQgb2YgTElCUywKKyAgICBkbmwgYmVjYXVzZSB0aGVzZSAtbCBvcHRpb25zIG1pZ2h0IHJlcXVpcmUgLUwgb3B0aW9ucyB0aGF0IGFyZSBwcmVzZW50IGluCisgICAgZG5sIExJQlMuIC1sIG9wdGlvbnMgYmVuZWZpdCBvbmx5IGZyb20gdGhlIC1MIG9wdGlvbnMgbGlzdGVkIGJlZm9yZSBpdC4KKyAgICBkbmwgT3RoZXJ3aXNlLCBhZGQgaXQgdG8gdGhlIGZyb250IG9mIExJQlMsIGJlY2F1c2UgaXQgbWF5IGJlIGEgc3RhdGljCisgICAgZG5sIGxpYnJhcnkgdGhhdCBkZXBlbmRzIG9uIGFub3RoZXIgc3RhdGljIGxpYnJhcnkgdGhhdCBpcyBwcmVzZW50IGluIExJQlMuCisgICAgZG5sIFN0YXRpYyBsaWJyYXJpZXMgYmVuZWZpdCBvbmx5IGZyb20gdGhlIHN0YXRpYyBsaWJyYXJpZXMgbGlzdGVkIGFmdGVyCisgICAgZG5sIGl0LgorICAgIGNhc2UgIiAkTElCW11OQU1FIiBpbgorICAgICAgKiIgLWwiKikgTElCUz0iJExJQlMgJExJQltdTkFNRSIgOzsKKyAgICAgICopICAgICAgIExJQlM9IiRMSUJbXU5BTUUgJExJQlMiIDs7CisgICAgZXNhYworICAgIEFDX0xJTktfSUZFTFNFKAorICAgICAgW0FDX0xBTkdfUFJPR1JBTShbWyQzXV0sIFtbJDRdXSldLAorICAgICAgW2FjX2N2X2xpYltdTmFtZT15ZXNdLAorICAgICAgW2FjX2N2X2xpYltdTmFtZT0nbTRfaWYoWyQ1XSwgW10sIFtub10sIFtbJDVdXSknXSkKKyAgICBMSUJTPSIkYWNfc2F2ZV9MSUJTIgorICBdKQorICBpZiB0ZXN0ICIkYWNfY3ZfbGliW11OYW1lIiA9IHllczsgdGhlbgorICAgIEhBVkVfTElCW11OQU1FPXllcworICAgIEFDX0RFRklORShbSEFWRV9MSUJdTkFNRSwgMSwgW0RlZmluZSBpZiB5b3UgaGF2ZSB0aGUgbGliXVskMSBsaWJyYXJ5Ll0pCisgICAgQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gbGluayB3aXRoIGxpYltdJDFdKQorICAgIEFDX01TR19SRVNVTFQoWyRMSUJbXU5BTUVdKQorICBlbHNlCisgICAgSEFWRV9MSUJbXU5BTUU9bm8KKyAgICBkbmwgSWYgJExJQltdTkFNRSBkaWRuJ3QgbGVhZCB0byBhIHVzYWJsZSBsaWJyYXJ5LCB3ZSBkb24ndCBuZWVkCisgICAgZG5sICRJTkNbXU5BTUUgZWl0aGVyLgorICAgIENQUEZMQUdTPSIkYWNfc2F2ZV9DUFBGTEFHUyIKKyAgICBMSUJbXU5BTUU9CisgICAgTFRMSUJbXU5BTUU9CisgICAgTElCW11OQU1FW11fUFJFRklYPQorICBmaQorICBBQ19TVUJTVChbSEFWRV9MSUJdTkFNRSkKKyAgQUNfU1VCU1QoW0xJQl1OQU1FKQorICBBQ19TVUJTVChbTFRMSUJdTkFNRSkKKyAgQUNfU1VCU1QoW0xJQl1OQU1FW19QUkVGSVhdKQorICBwb3BkZWYoW05BTUVdKQorICBwb3BkZWYoW05hbWVdKQorXSkKKworZG5sIERldGVybWluZSB0aGUgcGxhdGZvcm0gZGVwZW5kZW50IHBhcmFtZXRlcnMgbmVlZGVkIHRvIHVzZSBycGF0aDoKK2RubCAgIGFjbF9saWJleHQsCitkbmwgICBhY2xfc2hsaWJleHQsCitkbmwgICBhY2xfbGlibmFtZV9zcGVjLAorZG5sICAgYWNsX2xpYnJhcnlfbmFtZXNfc3BlYywKK2RubCAgIGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLAorZG5sICAgYWNsX2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IsCitkbmwgICBhY2xfaGFyZGNvZGVfZGlyZWN0LAorZG5sICAgYWNsX2hhcmRjb2RlX21pbnVzX0wuCitBQ19ERUZVTihbQUNfTElCX1JQQVRIXSwKK1sKKyAgZG5sIENvbXBsYWluIGlmIGNvbmZpZy5ycGF0aCBpcyBtaXNzaW5nLgorICBBQ19SRVFVSVJFX0FVWF9GSUxFKFtjb25maWcucnBhdGhdKQorICBBQ19SRVFVSVJFKFtBQ19QUk9HX0NDXSkgICAgICAgICAgICAgICAgZG5sIHdlIHVzZSAkQ0MsICRHQ0MsICRMREZMQUdTCisgIEFDX1JFUVVJUkUoW0FDX0xJQl9QUk9HX0xEXSkgICAgICAgICAgICBkbmwgd2UgdXNlICRMRCwgJHdpdGhfZ251X2xkCisgIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkgICAgICAgICBkbmwgd2UgdXNlICRob3N0CisgIEFDX1JFUVVJUkUoW0FDX0NPTkZJR19BVVhfRElSX0RFRkFVTFRdKSBkbmwgd2UgdXNlICRhY19hdXhfZGlyCisgIEFDX0NBQ0hFX0NIRUNLKFtmb3Igc2hhcmVkIGxpYnJhcnkgcnVuIHBhdGggb3JpZ2luXSwgW2FjbF9jdl9ycGF0aF0sIFsKKyAgICBDQz0iJENDIiBHQ0M9IiRHQ0MiIExERkxBR1M9IiRMREZMQUdTIiBMRD0iJExEIiB3aXRoX2dudV9sZD0iJHdpdGhfZ251X2xkIiBcCisgICAgJHtDT05GSUdfU0hFTEwtL2Jpbi9zaH0gIiRhY19hdXhfZGlyL2NvbmZpZy5ycGF0aCIgIiRob3N0IiA+IGNvbmZ0ZXN0LnNoCisgICAgLiAuL2NvbmZ0ZXN0LnNoCisgICAgcm0gLWYgLi9jb25mdGVzdC5zaAorICAgIGFjbF9jdl9ycGF0aD1kb25lCisgIF0pCisgIHdsPSIkYWNsX2N2X3dsIgorICBhY2xfbGliZXh0PSIkYWNsX2N2X2xpYmV4dCIKKyAgYWNsX3NobGliZXh0PSIkYWNsX2N2X3NobGliZXh0IgorICBhY2xfbGlibmFtZV9zcGVjPSIkYWNsX2N2X2xpYm5hbWVfc3BlYyIKKyAgYWNsX2xpYnJhcnlfbmFtZXNfc3BlYz0iJGFjbF9jdl9saWJyYXJ5X25hbWVzX3NwZWMiCisgIGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSIkYWNsX2N2X2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiCisgIGFjbF9oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPSIkYWNsX2N2X2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiCisgIGFjbF9oYXJkY29kZV9kaXJlY3Q9IiRhY2xfY3ZfaGFyZGNvZGVfZGlyZWN0IgorICBhY2xfaGFyZGNvZGVfbWludXNfTD0iJGFjbF9jdl9oYXJkY29kZV9taW51c19MIgorICBkbmwgRGV0ZXJtaW5lIHdoZXRoZXIgdGhlIHVzZXIgd2FudHMgcnBhdGggaGFuZGxpbmcgYXQgYWxsLgorICBBQ19BUkdfRU5BQkxFKFtycGF0aF0sCisgICAgWyAgLS1kaXNhYmxlLXJwYXRoICAgICAgICAgZG8gbm90IGhhcmRjb2RlIHJ1bnRpbWUgbGlicmFyeSBwYXRoc10sCisgICAgOiwgZW5hYmxlX3JwYXRoPXllcykKK10pCisKK2RubCBBQ19MSUJfRlJPTVBBQ0tBR0UobmFtZSwgcGFja2FnZSkKK2RubCBkZWNsYXJlcyB0aGF0IGxpYm5hbWUgY29tZXMgZnJvbSB0aGUgZ2l2ZW4gcGFja2FnZS4gVGhlIGNvbmZpZ3VyZSBmaWxlCitkbmwgd2lsbCB0aGVuIG5vdCBoYXZlIGEgLS13aXRoLWxpYm5hbWUtcHJlZml4IG9wdGlvbiBidXQgYQorZG5sIC0td2l0aC1wYWNrYWdlLXByZWZpeCBvcHRpb24uIFNldmVyYWwgbGlicmFyaWVzIGNhbiBjb21lIGZyb20gdGhlIHNhbWUKK2RubCBwYWNrYWdlLiBUaGlzIGRlY2xhcmF0aW9uIG11c3Qgb2NjdXIgYmVmb3JlIGFuIEFDX0xJQl9MSU5LRkxBR1Mgb3Igc2ltaWxhcgorZG5sIG1hY3JvIGNhbGwgdGhhdCBzZWFyY2hlcyBmb3IgbGlibmFtZS4KK0FDX0RFRlVOKFtBQ19MSUJfRlJPTVBBQ0tBR0VdLAorWworICBwdXNoZGVmKFtOQU1FXSxbbTRfdHJhbnNsaXQoWyQxXSxbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLystXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fX10pXSkKKyAgZGVmaW5lKFthY2xfZnJvbXBhY2thZ2VfXU5BTUUsIFskMl0pCisgIHBvcGRlZihbTkFNRV0pCisgIHB1c2hkZWYoW1BBQ0tdLFskMl0pCisgIHB1c2hkZWYoW1BBQ0tVUF0sW200X3RyYW5zbGl0KFBBQ0ssW2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6Li8rLV0sCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fX10pXSkKKyAgZGVmaW5lKFthY2xfbGlic2lucGFja2FnZV9dUEFDS1VQLAorICAgIG00X2lmZGVmKFthY2xfbGlic2lucGFja2FnZV9dUEFDS1VQLCBbbTRfZGVmbihbYWNsX2xpYnNpbnBhY2thZ2VfXVBBQ0tVUClbLCBdXSwpW2xpYiQxXSkKKyAgcG9wZGVmKFtQQUNLVVBdKQorICBwb3BkZWYoW1BBQ0tdKQorXSkKKworZG5sIEFDX0xJQl9MSU5LRkxBR1NfQk9EWShuYW1lIFssIGRlcGVuZGVuY2llc10pIHNlYXJjaGVzIGZvciBsaWJuYW1lIGFuZAorZG5sIHRoZSBsaWJyYXJpZXMgY29ycmVzcG9uZGluZyB0byBleHBsaWNpdCBhbmQgaW1wbGljaXQgZGVwZW5kZW5jaWVzLgorZG5sIFNldHMgdGhlIExJQiR7TkFNRX0sIExUTElCJHtOQU1FfSBhbmQgSU5DJHtOQU1FfSB2YXJpYWJsZXMuCitkbmwgQWxzbywgc2V0cyB0aGUgTElCJHtOQU1FfV9QUkVGSVggdmFyaWFibGUgdG8gbm9uZW1wdHkgaWYgbGlibmFtZSB3YXMgZm91bmQKK2RubCBpbiAke0xJQiR7TkFNRX1fUFJFRklYfS8kYWNsX2xpYmRpcnN0ZW0uCitBQ19ERUZVTihbQUNfTElCX0xJTktGTEFHU19CT0RZXSwKK1sKKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfTVVMVElMSUJdKQorICBwdXNoZGVmKFtOQU1FXSxbbTRfdHJhbnNsaXQoWyQxXSxbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLystXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaX19fX10pXSkKKyAgcHVzaGRlZihbUEFDS10sW200X2lmZGVmKFthY2xfZnJvbXBhY2thZ2VfXU5BTUUsIFthY2xfZnJvbXBhY2thZ2VfXU5BTUUsIGxpYlskMV0pXSkKKyAgcHVzaGRlZihbUEFDS1VQXSxbbTRfdHJhbnNsaXQoUEFDSyxbYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXouLystXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19fXSldKQorICBwdXNoZGVmKFtQQUNLTElCU10sW200X2lmZGVmKFthY2xfZnJvbXBhY2thZ2VfXU5BTUUsIFthY2xfbGlic2lucGFja2FnZV9dUEFDS1VQLCBsaWJbJDFdKV0pCisgIGRubCBCeSBkZWZhdWx0LCBsb29rIGluICRpbmNsdWRlZGlyIGFuZCAkbGliZGlyLgorICB1c2VfYWRkaXRpb25hbD15ZXMKKyAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFsKKyAgICBldmFsIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj1cIiRpbmNsdWRlZGlyXCIKKyAgICBldmFsIGFkZGl0aW9uYWxfbGliZGlyPVwiJGxpYmRpclwiCisgIF0pCisgIEFDX0FSR19XSVRIKFBBQ0tbLXByZWZpeF0sCitbWyAgLS13aXRoLV1dUEFDS1tbLXByZWZpeFs9RElSXSAgc2VhcmNoIGZvciBdUEFDS0xJQlNbIGluIERJUi9pbmNsdWRlIGFuZCBESVIvbGliCisgIC0td2l0aG91dC1dXVBBQ0tbWy1wcmVmaXggICAgIGRvbid0IHNlYXJjaCBmb3IgXVBBQ0tMSUJTWyBpbiBpbmNsdWRlZGlyIGFuZCBsaWJkaXJdXSwKK1sKKyAgICBpZiB0ZXN0ICJYJHdpdGh2YWwiID0gIlhubyI7IHRoZW4KKyAgICAgIHVzZV9hZGRpdGlvbmFsPW5vCisgICAgZWxzZQorICAgICAgaWYgdGVzdCAiWCR3aXRodmFsIiA9ICJYIjsgdGhlbgorICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoWworICAgICAgICAgIGV2YWwgYWRkaXRpb25hbF9pbmNsdWRlZGlyPVwiJGluY2x1ZGVkaXJcIgorICAgICAgICAgIGV2YWwgYWRkaXRpb25hbF9saWJkaXI9XCIkbGliZGlyXCIKKyAgICAgICAgXSkKKyAgICAgIGVsc2UKKyAgICAgICAgYWRkaXRpb25hbF9pbmNsdWRlZGlyPSIkd2l0aHZhbC9pbmNsdWRlIgorICAgICAgICBhZGRpdGlvbmFsX2xpYmRpcj0iJHdpdGh2YWwvJGFjbF9saWJkaXJzdGVtIgorICAgICAgICBpZiB0ZXN0ICIkYWNsX2xpYmRpcnN0ZW0yIiAhPSAiJGFjbF9saWJkaXJzdGVtIiBcCisgICAgICAgICAgICYmIHRlc3QgISAtZCAiJHdpdGh2YWwvJGFjbF9saWJkaXJzdGVtIjsgdGhlbgorICAgICAgICAgIGFkZGl0aW9uYWxfbGliZGlyPSIkd2l0aHZhbC8kYWNsX2xpYmRpcnN0ZW0yIgorICAgICAgICBmaQorICAgICAgZmkKKyAgICBmaQorXSkKKyAgZG5sIFNlYXJjaCB0aGUgbGlicmFyeSBhbmQgaXRzIGRlcGVuZGVuY2llcyBpbiAkYWRkaXRpb25hbF9saWJkaXIgYW5kCisgIGRubCAkTERGTEFHUy4gVXNpbmcgYnJlYWR0aC1maXJzdC1zZWFjaC4KKyAgTElCW11OQU1FPQorICBMVExJQltdTkFNRT0KKyAgSU5DW11OQU1FPQorICBMSUJbXU5BTUVbXV9QUkVGSVg9CisgIGRubCBIQVZFX0xJQiR7TkFNRX0gaXMgYW4gaW5kaWNhdG9yIHRoYXQgTElCJHtOQU1FfSwgTFRMSUIke05BTUV9IGhhdmUgYmVlbgorICBkbmwgY29tcHV0ZWQuIFNvIGl0IGhhcyB0byBiZSByZXNldCBoZXJlLgorICBIQVZFX0xJQltdTkFNRT0KKyAgcnBhdGhkaXJzPQorICBsdHJwYXRoZGlycz0KKyAgbmFtZXNfYWxyZWFkeV9oYW5kbGVkPQorICBuYW1lc19uZXh0X3JvdW5kPSckMSAkMicKKyAgd2hpbGUgdGVzdCAtbiAiJG5hbWVzX25leHRfcm91bmQiOyBkbworICAgIG5hbWVzX3RoaXNfcm91bmQ9IiRuYW1lc19uZXh0X3JvdW5kIgorICAgIG5hbWVzX25leHRfcm91bmQ9CisgICAgZm9yIG5hbWUgaW4gJG5hbWVzX3RoaXNfcm91bmQ7IGRvCisgICAgICBhbHJlYWR5X2hhbmRsZWQ9CisgICAgICBmb3IgbiBpbiAkbmFtZXNfYWxyZWFkeV9oYW5kbGVkOyBkbworICAgICAgICBpZiB0ZXN0ICIkbiIgPSAiJG5hbWUiOyB0aGVuCisgICAgICAgICAgYWxyZWFkeV9oYW5kbGVkPXllcworICAgICAgICAgIGJyZWFrCisgICAgICAgIGZpCisgICAgICBkb25lCisgICAgICBpZiB0ZXN0IC16ICIkYWxyZWFkeV9oYW5kbGVkIjsgdGhlbgorICAgICAgICBuYW1lc19hbHJlYWR5X2hhbmRsZWQ9IiRuYW1lc19hbHJlYWR5X2hhbmRsZWQgJG5hbWUiCisgICAgICAgIGRubCBTZWUgaWYgaXQgd2FzIGFscmVhZHkgbG9jYXRlZCBieSBhbiBlYXJsaWVyIEFDX0xJQl9MSU5LRkxBR1MKKyAgICAgICAgZG5sIG9yIEFDX0xJQl9IQVZFX0xJTktGTEFHUyBjYWxsLgorICAgICAgICB1cHBlcm5hbWU9YGVjaG8gIiRuYW1lIiB8IHNlZCAtZSAneXxhYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei4vKy18QUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVpfX19ffCdgCisgICAgICAgIGV2YWwgdmFsdWU9XCJcJEhBVkVfTElCJHVwcGVybmFtZVwiCisgICAgICAgIGlmIHRlc3QgLW4gIiR2YWx1ZSI7IHRoZW4KKyAgICAgICAgICBpZiB0ZXN0ICIkdmFsdWUiID0geWVzOyB0aGVuCisgICAgICAgICAgICBldmFsIHZhbHVlPVwiXCRMSUIkdXBwZXJuYW1lXCIKKyAgICAgICAgICAgIHRlc3QgLXogIiR2YWx1ZSIgfHwgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kdmFsdWUiCisgICAgICAgICAgICBldmFsIHZhbHVlPVwiXCRMVExJQiR1cHBlcm5hbWVcIgorICAgICAgICAgICAgdGVzdCAteiAiJHZhbHVlIiB8fCBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfSR2YWx1ZSIKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBkbmwgQW4gZWFybGllciBjYWxsIHRvIEFDX0xJQl9IQVZFX0xJTktGTEFHUyBoYXMgZGV0ZXJtaW5lZAorICAgICAgICAgICAgZG5sIHRoYXQgdGhpcyBsaWJyYXJ5IGRvZXNuJ3QgZXhpc3QuIFNvIGp1c3QgZHJvcCBpdC4KKyAgICAgICAgICAgIDoKKyAgICAgICAgICBmaQorICAgICAgICBlbHNlCisgICAgICAgICAgZG5sIFNlYXJjaCB0aGUgbGlicmFyeSBsaWIkbmFtZSBpbiAkYWRkaXRpb25hbF9saWJkaXIgYW5kICRMREZMQUdTCisgICAgICAgICAgZG5sIGFuZCB0aGUgYWxyZWFkeSBjb25zdHJ1Y3RlZCAkTElCTkFNRS8kTFRMSUJOQU1FLgorICAgICAgICAgIGZvdW5kX2Rpcj0KKyAgICAgICAgICBmb3VuZF9sYT0KKyAgICAgICAgICBmb3VuZF9zbz0KKyAgICAgICAgICBmb3VuZF9hPQorICAgICAgICAgIGV2YWwgbGlibmFtZT1cIiRhY2xfbGlibmFtZV9zcGVjXCIgICAgIyB0eXBpY2FsbHk6IGxpYm5hbWU9bGliJG5hbWUKKyAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX3NobGliZXh0IjsgdGhlbgorICAgICAgICAgICAgc2hyZXh0PSIuJGFjbF9zaGxpYmV4dCIgICAgICAgICAgICAgIyB0eXBpY2FsbHk6IHNocmV4dD0uc28KKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBzaHJleHQ9CisgICAgICAgICAgZmkKKyAgICAgICAgICBpZiB0ZXN0ICR1c2VfYWRkaXRpb25hbCA9IHllczsgdGhlbgorICAgICAgICAgICAgZGlyPSIkYWRkaXRpb25hbF9saWJkaXIiCisgICAgICAgICAgICBkbmwgVGhlIHNhbWUgY29kZSBhcyBpbiB0aGUgbG9vcCBiZWxvdzoKKyAgICAgICAgICAgIGRubCBGaXJzdCBsb29rIGZvciBhIHNoYXJlZCBsaWJyYXJ5LgorICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGFjbF9zaGxpYmV4dCI7IHRoZW4KKyAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZSRzaHJleHQiOyB0aGVuCisgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyLyRsaWJuYW1lJHNocmV4dCIKKyAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRhY2xfbGlicmFyeV9uYW1lc19zcGVjIiA9ICckbGlibmFtZSRzaHJleHQkdmVyc3VmZml4JzsgdGhlbgorICAgICAgICAgICAgICAgICAgdmVyPWAoY2QgIiRkaXIiICYmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmIGluICIkbGlibmFtZSRzaHJleHQiLio7IGRvIGVjaG8gIiRmIjsgZG9uZSBcCisgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAtZSAicyxeJGxpYm5hbWUkc2hyZXh0XFxcXC4sLCIgXAorICAgICAgICAgICAgICAgICAgICAgICAgfCBzb3J0IC10ICcuJyAtbiAtciAtazEsMSAtazIsMiAtazMsMyAtazQsNCAtazUsNSBcCisgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAxcSApIDI+L2Rldi9udWxsYAorICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJHZlciIgJiYgdGVzdCAtZiAiJGRpci8kbGlibmFtZSRzaHJleHQuJHZlciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kbGlibmFtZSRzaHJleHQuJHZlciIKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgZXZhbCBsaWJyYXJ5X25hbWVzPVwiJGFjbF9saWJyYXJ5X25hbWVzX3NwZWNcIgorICAgICAgICAgICAgICAgICAgZm9yIGYgaW4gJGxpYnJhcnlfbmFtZXM7IGRvCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGYiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyLyRmIgorICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgICBkbmwgVGhlbiBsb29rIGZvciBhIHN0YXRpYyBsaWJyYXJ5LgorICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgiOyB0aGVuCisgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUuJGFjbF9saWJleHQiOyB0aGVuCisgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgIGZvdW5kX2E9IiRkaXIvJGxpYm5hbWUuJGFjbF9saWJleHQiCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiICE9ICJYIjsgdGhlbgorICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lLmxhIjsgdGhlbgorICAgICAgICAgICAgICAgIGZvdW5kX2xhPSIkZGlyLyRsaWJuYW1lLmxhIgorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZmkKKyAgICAgICAgICBmaQorICAgICAgICAgIGlmIHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYIjsgdGhlbgorICAgICAgICAgICAgZm9yIHggaW4gJExERkxBR1MgJExUTElCW11OQU1FOyBkbworICAgICAgICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQorICAgICAgICAgICAgICBjYXNlICIkeCIgaW4KKyAgICAgICAgICAgICAgICAtTCopCisgICAgICAgICAgICAgICAgICBkaXI9YGVjaG8gIlgkeCIgfCBzZWQgLWUgJ3MvXlgtTC8vJ2AKKyAgICAgICAgICAgICAgICAgIGRubCBGaXJzdCBsb29rIGZvciBhIHNoYXJlZCBsaWJyYXJ5LgorICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGFjbF9zaGxpYmV4dCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGRpci8kbGlibmFtZSRzaHJleHQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyLyRsaWJuYW1lJHNocmV4dCIKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRhY2xfbGlicmFyeV9uYW1lc19zcGVjIiA9ICckbGlibmFtZSRzaHJleHQkdmVyc3VmZml4JzsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgdmVyPWAoY2QgIiRkaXIiICYmIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvciBmIGluICIkbGlibmFtZSRzaHJleHQiLio7IGRvIGVjaG8gIiRmIjsgZG9uZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAtZSAicyxeJGxpYm5hbWUkc2hyZXh0XFxcXC4sLCIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCBzb3J0IC10ICcuJyAtbiAtciAtazEsMSAtazIsMiAtazMsMyAtazQsNCAtazUsNSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IHNlZCAxcSApIDI+L2Rldi9udWxsYAorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJHZlciIgJiYgdGVzdCAtZiAiJGRpci8kbGlibmFtZSRzaHJleHQuJHZlciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgICAgICAgICAgICBmb3VuZF9zbz0iJGRpci8kbGlibmFtZSRzaHJleHQuJHZlciIKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgICAgZXZhbCBsaWJyYXJ5X25hbWVzPVwiJGFjbF9saWJyYXJ5X25hbWVzX3NwZWNcIgorICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGYgaW4gJGxpYnJhcnlfbmFtZXM7IGRvCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGYiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX3NvPSIkZGlyLyRmIgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBkbmwgVGhlbiBsb29rIGZvciBhIHN0YXRpYyBsaWJyYXJ5LgorICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLWYgIiRkaXIvJGxpYm5hbWUuJGFjbF9saWJleHQiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgZm91bmRfZGlyPSIkZGlyIgorICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2E9IiRkaXIvJGxpYm5hbWUuJGFjbF9saWJleHQiCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiICE9ICJYIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1mICIkZGlyLyRsaWJuYW1lLmxhIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGZvdW5kX2xhPSIkZGlyLyRsaWJuYW1lLmxhIgorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9kaXIiICE9ICJYIjsgdGhlbgorICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBkb25lCisgICAgICAgICAgZmkKKyAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2RpciIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICBkbmwgRm91bmQgdGhlIGxpYnJhcnkuCisgICAgICAgICAgICBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfS1MJGZvdW5kX2RpciAtbCRuYW1lIgorICAgICAgICAgICAgaWYgdGVzdCAiWCRmb3VuZF9zbyIgIT0gIlgiOyB0aGVuCisgICAgICAgICAgICAgIGRubCBMaW5raW5nIHdpdGggYSBzaGFyZWQgbGlicmFyeS4gV2UgYXR0ZW1wdCB0byBoYXJkY29kZSBpdHMKKyAgICAgICAgICAgICAgZG5sIGRpcmVjdG9yeSBpbnRvIHRoZSBleGVjdXRhYmxlJ3MgcnVucGF0aCwgdW5sZXNzIGl0J3MgdGhlCisgICAgICAgICAgICAgIGRubCBzdGFuZGFyZCAvdXNyL2xpYi4KKyAgICAgICAgICAgICAgaWYgdGVzdCAiJGVuYWJsZV9ycGF0aCIgPSBubyBcCisgICAgICAgICAgICAgICAgIHx8IHRlc3QgIlgkZm91bmRfZGlyIiA9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0iIFwKKyAgICAgICAgICAgICAgICAgfHwgdGVzdCAiWCRmb3VuZF9kaXIiID0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbTIiOyB0aGVuCisgICAgICAgICAgICAgICAgZG5sIE5vIGhhcmRjb2RpbmcgaXMgbmVlZGVkLgorICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZvdW5kX3NvIgorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZG5sIFVzZSBhbiBleHBsaWNpdCBvcHRpb24gdG8gaGFyZGNvZGUgRElSIGludG8gdGhlIHJlc3VsdGluZworICAgICAgICAgICAgICAgIGRubCBiaW5hcnkuCisgICAgICAgICAgICAgICAgZG5sIFBvdGVudGlhbGx5IGFkZCBESVIgdG8gbHRycGF0aGRpcnMuCisgICAgICAgICAgICAgICAgZG5sIFRoZSBsdHJwYXRoZGlycyB3aWxsIGJlIGFwcGVuZGVkIHRvICRMVExJQk5BTUUgYXQgdGhlIGVuZC4KKyAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgZm9yIHggaW4gJGx0cnBhdGhkaXJzOyBkbworICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYJGZvdW5kX2RpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgIGx0cnBhdGhkaXJzPSIkbHRycGF0aGRpcnMgJGZvdW5kX2RpciIKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGRubCBUaGUgaGFyZGNvZGluZyBpbnRvICRMSUJOQU1FIGlzIHN5c3RlbSBkZXBlbmRlbnQuCisgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGFjbF9oYXJkY29kZV9kaXJlY3QiID0geWVzOyB0aGVuCisgICAgICAgICAgICAgICAgICBkbmwgVXNpbmcgRElSL2xpYk5BTUUuc28gZHVyaW5nIGxpbmtpbmcgaGFyZGNvZGVzIERJUiBpbnRvIHRoZQorICAgICAgICAgICAgICAgICAgZG5sIHJlc3VsdGluZyBiaW5hcnkuCisgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmb3VuZF9zbyIKKyAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiICYmIHRlc3QgIiRhY2xfaGFyZGNvZGVfbWludXNfTCIgPSBubzsgdGhlbgorICAgICAgICAgICAgICAgICAgICBkbmwgVXNlIGFuIGV4cGxpY2l0IG9wdGlvbiB0byBoYXJkY29kZSBESVIgaW50byB0aGUgcmVzdWx0aW5nCisgICAgICAgICAgICAgICAgICAgIGRubCBiaW5hcnkuCisgICAgICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZvdW5kX3NvIgorICAgICAgICAgICAgICAgICAgICBkbmwgUG90ZW50aWFsbHkgYWRkIERJUiB0byBycGF0aGRpcnMuCisgICAgICAgICAgICAgICAgICAgIGRubCBUaGUgcnBhdGhkaXJzIHdpbGwgYmUgYXBwZW5kZWQgdG8gJExJQk5BTUUgYXQgdGhlIGVuZC4KKyAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkcnBhdGhkaXJzOyBkbworICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRmb3VuZF9kaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBycGF0aGRpcnM9IiRycGF0aGRpcnMgJGZvdW5kX2RpciIKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICAgICAgZG5sIFJlbHkgb24gIi1MJGZvdW5kX2RpciIuCisgICAgICAgICAgICAgICAgICAgIGRubCBCdXQgZG9uJ3QgYWRkIGl0IGlmIGl0J3MgYWxyZWFkeSBjb250YWluZWQgaW4gdGhlIExERkxBR1MKKyAgICAgICAgICAgICAgICAgICAgZG5sIG9yIHRoZSBhbHJlYWR5IGNvbnN0cnVjdGVkICRMSUJOQU1FCisgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJExERkxBR1MgJExJQltdTkFNRTsgZG8KKyAgICAgICAgICAgICAgICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQorICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1MJGZvdW5kX2RpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9LUwkZm91bmRfZGlyIgorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICIkYWNsX2hhcmRjb2RlX21pbnVzX0wiICE9IG5vOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgZG5sIEZJWE1FOiBOb3Qgc3VyZSB3aGV0aGVyIHdlIHNob3VsZCB1c2UKKyAgICAgICAgICAgICAgICAgICAgICBkbmwgIi1MJGZvdW5kX2RpciAtbCRuYW1lIiBvciAiLUwkZm91bmRfZGlyICRmb3VuZF9zbyIKKyAgICAgICAgICAgICAgICAgICAgICBkbmwgaGVyZS4KKyAgICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmb3VuZF9zbyIKKyAgICAgICAgICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICAgICAgICAgIGRubCBXZSBjYW5ub3QgdXNlICRhY2xfaGFyZGNvZGVfcnVucGF0aF92YXIgYW5kIExEX1JVTl9QQVRICisgICAgICAgICAgICAgICAgICAgICAgZG5sIGhlcmUsIGJlY2F1c2UgdGhpcyBkb2Vzbid0IGZpdCBpbiBmbGFncyBwYXNzZWQgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgZG5sIGNvbXBpbGVyLiBTbyBnaXZlIHVwLiBObyBoYXJkY29kaW5nLiBUaGlzIGFmZmVjdHMgb25seQorICAgICAgICAgICAgICAgICAgICAgIGRubCB2ZXJ5IG9sZCBzeXN0ZW1zLgorICAgICAgICAgICAgICAgICAgICAgIGRubCBGSVhNRTogTm90IHN1cmUgd2hldGhlciB3ZSBzaG91bGQgdXNlCisgICAgICAgICAgICAgICAgICAgICAgZG5sICItTCRmb3VuZF9kaXIgLWwkbmFtZSIgb3IgIi1MJGZvdW5kX2RpciAkZm91bmRfc28iCisgICAgICAgICAgICAgICAgICAgICAgZG5sIGhlcmUuCisgICAgICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0tbCRuYW1lIgorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZWxzZQorICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGZvdW5kX2EiICE9ICJYIjsgdGhlbgorICAgICAgICAgICAgICAgIGRubCBMaW5raW5nIHdpdGggYSBzdGF0aWMgbGlicmFyeS4KKyAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfSRmb3VuZF9hIgorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZG5sIFdlIHNob3VsZG4ndCBjb21lIGhlcmUsIGJ1dCBhbnl3YXkgaXQncyBnb29kIHRvIGhhdmUgYQorICAgICAgICAgICAgICAgIGRubCBmYWxsYmFjay4KKyAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfS1MJGZvdW5kX2RpciAtbCRuYW1lIgorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgZmkKKyAgICAgICAgICAgIGRubCBBc3N1bWUgdGhlIGluY2x1ZGUgZmlsZXMgYXJlIG5lYXJieS4KKyAgICAgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0KKyAgICAgICAgICAgIGNhc2UgIiRmb3VuZF9kaXIiIGluCisgICAgICAgICAgICAgICovJGFjbF9saWJkaXJzdGVtIHwgKi8kYWNsX2xpYmRpcnN0ZW0vKQorICAgICAgICAgICAgICAgIGJhc2VkaXI9YGVjaG8gIlgkZm91bmRfZGlyIiB8IHNlZCAtZSAncyxeWCwsJyAtZSAicywvJGFjbF9saWJkaXJzdGVtLyInKiQsLCdgCisgICAgICAgICAgICAgICAgaWYgdGVzdCAiJG5hbWUiID0gJyQxJzsgdGhlbgorICAgICAgICAgICAgICAgICAgTElCW11OQU1FW11fUFJFRklYPSIkYmFzZWRpciIKKyAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0iJGJhc2VkaXIvaW5jbHVkZSIKKyAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAqLyRhY2xfbGliZGlyc3RlbTIgfCAqLyRhY2xfbGliZGlyc3RlbTIvKQorICAgICAgICAgICAgICAgIGJhc2VkaXI9YGVjaG8gIlgkZm91bmRfZGlyIiB8IHNlZCAtZSAncyxeWCwsJyAtZSAicywvJGFjbF9saWJkaXJzdGVtMi8iJyokLCwnYAorICAgICAgICAgICAgICAgIGlmIHRlc3QgIiRuYW1lIiA9ICckMSc7IHRoZW4KKyAgICAgICAgICAgICAgICAgIExJQltdTkFNRVtdX1BSRUZJWD0iJGJhc2VkaXIiCisgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9IiRiYXNlZGlyL2luY2x1ZGUiCisgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgICAgICAgZG5sIFBvdGVudGlhbGx5IGFkZCAkYWRkaXRpb25hbF9pbmNsdWRlZGlyIHRvICRJTkNOQU1FLgorICAgICAgICAgICAgICBkbmwgQnV0IGRvbid0IGFkZCBpdAorICAgICAgICAgICAgICBkbmwgICAxLiBpZiBpdCdzIHRoZSBzdGFuZGFyZCAvdXNyL2luY2x1ZGUsCisgICAgICAgICAgICAgIGRubCAgIDIuIGlmIGl0J3MgL3Vzci9sb2NhbC9pbmNsdWRlIGFuZCB3ZSBhcmUgdXNpbmcgR0NDIG9uIExpbnV4LAorICAgICAgICAgICAgICBkbmwgICAzLiBpZiBpdCdzIGFscmVhZHkgcHJlc2VudCBpbiAkQ1BQRkxBR1Mgb3IgdGhlIGFscmVhZHkKKyAgICAgICAgICAgICAgZG5sICAgICAgY29uc3RydWN0ZWQgJElOQ05BTUUsCisgICAgICAgICAgICAgIGRubCAgIDQuIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYXMgYSBkaXJlY3RvcnkuCisgICAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiAhPSAiWC91c3IvaW5jbHVkZSI7IHRoZW4KKyAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiID0gIlgvdXNyL2xvY2FsL2luY2x1ZGUiOyB0aGVuCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkR0NDIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBjYXNlICRob3N0X29zIGluCisgICAgICAgICAgICAgICAgICAgICAgbGludXgqIHwgZ251KiB8IGsqYnNkKi1nbnUpIGhhdmVpdD15ZXM7OworICAgICAgICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgIGZvciB4IGluICRDUFBGTEFHUyAkSU5DW11OQU1FOyBkbworICAgICAgICAgICAgICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtSSRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9pbmNsdWRlZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgIGRubCBSZWFsbHkgYWRkICRhZGRpdGlvbmFsX2luY2x1ZGVkaXIgdG8gJElOQ05BTUUuCisgICAgICAgICAgICAgICAgICAgICAgSU5DW11OQU1FPSIke0lOQ1tdTkFNRX0ke0lOQ1tdTkFNRTorIH0tSSRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiCisgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgZG5sIExvb2sgZm9yIGRlcGVuZGVuY2llcy4KKyAgICAgICAgICAgIGlmIHRlc3QgLW4gIiRmb3VuZF9sYSI7IHRoZW4KKyAgICAgICAgICAgICAgZG5sIFJlYWQgdGhlIC5sYSBmaWxlLiBJdCBkZWZpbmVzIHRoZSB2YXJpYWJsZXMKKyAgICAgICAgICAgICAgZG5sIGRsbmFtZSwgbGlicmFyeV9uYW1lcywgb2xkX2xpYnJhcnksIGRlcGVuZGVuY3lfbGlicywgY3VycmVudCwKKyAgICAgICAgICAgICAgZG5sIGFnZSwgcmV2aXNpb24sIGluc3RhbGxlZCwgZGxvcGVuLCBkbHByZW9wZW4sIGxpYmRpci4KKyAgICAgICAgICAgICAgc2F2ZV9saWJkaXI9IiRsaWJkaXIiCisgICAgICAgICAgICAgIGNhc2UgIiRmb3VuZF9sYSIgaW4KKyAgICAgICAgICAgICAgICAqLyogfCAqXFwqKSAuICIkZm91bmRfbGEiIDs7CisgICAgICAgICAgICAgICAgKikgLiAiLi8kZm91bmRfbGEiIDs7CisgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICAgbGliZGlyPSIkc2F2ZV9saWJkaXIiCisgICAgICAgICAgICAgIGRubCBXZSB1c2Ugb25seSBkZXBlbmRlbmN5X2xpYnMuCisgICAgICAgICAgICAgIGZvciBkZXAgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKyAgICAgICAgICAgICAgICBjYXNlICIkZGVwIiBpbgorICAgICAgICAgICAgICAgICAgLUwqKQorICAgICAgICAgICAgICAgICAgICBhZGRpdGlvbmFsX2xpYmRpcj1gZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzL15YLUwvLydgCisgICAgICAgICAgICAgICAgICAgIGRubCBQb3RlbnRpYWxseSBhZGQgJGFkZGl0aW9uYWxfbGliZGlyIHRvICRMSUJOQU1FIGFuZCAkTFRMSUJOQU1FLgorICAgICAgICAgICAgICAgICAgICBkbmwgQnV0IGRvbid0IGFkZCBpdAorICAgICAgICAgICAgICAgICAgICBkbmwgICAxLiBpZiBpdCdzIHRoZSBzdGFuZGFyZCAvdXNyL2xpYiwKKyAgICAgICAgICAgICAgICAgICAgZG5sICAgMi4gaWYgaXQncyAvdXNyL2xvY2FsL2xpYiBhbmQgd2UgYXJlIHVzaW5nIEdDQyBvbiBMaW51eCwKKyAgICAgICAgICAgICAgICAgICAgZG5sICAgMy4gaWYgaXQncyBhbHJlYWR5IHByZXNlbnQgaW4gJExERkxBR1Mgb3IgdGhlIGFscmVhZHkKKyAgICAgICAgICAgICAgICAgICAgZG5sICAgICAgY29uc3RydWN0ZWQgJExJQk5BTUUsCisgICAgICAgICAgICAgICAgICAgIGRubCAgIDQuIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYXMgYSBkaXJlY3RvcnkuCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiICE9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgJiYgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgIT0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbTIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PQorICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiID0gIlgvdXNyL2xvY2FsLyRhY2xfbGliZGlyc3RlbSIgXAorICAgICAgICAgICAgICAgICAgICAgICAgIHx8IHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiID0gIlgvdXNyL2xvY2FsLyRhY2xfbGliZGlyc3RlbTIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkR0NDIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICBjYXNlICRob3N0X29zIGluCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGludXgqIHwgZ251KiB8IGsqYnNkKi1nbnUpIGhhdmVpdD15ZXM7OworICAgICAgICAgICAgICAgICAgICAgICAgICBlc2FjCisgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMSUJbXU5BTUU7IGRvCisgICAgICAgICAgICAgICAgICAgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCisgICAgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1MJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD15ZXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRubCBSZWFsbHkgYWRkICRhZGRpdGlvbmFsX2xpYmRpciB0byAkTElCTkFNRS4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfS1MJGFkZGl0aW9uYWxfbGliZGlyIgorICAgICAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICAgICAgICAgIGZvciB4IGluICRMREZMQUdTICRMVExJQltdTkFNRTsgZG8KKyAgICAgICAgICAgICAgICAgICAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYLUwkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC1kICIkYWRkaXRpb25hbF9saWJkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgZG5sIFJlYWxseSBhZGQgJGFkZGl0aW9uYWxfbGliZGlyIHRvICRMVExJQk5BTUUuCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgTFRMSUJbXU5BTUU9IiR7TFRMSUJbXU5BTUV9JHtMVExJQltdTkFNRTorIH0tTCRhZGRpdGlvbmFsX2xpYmRpciIKKyAgICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgOzsKKyAgICAgICAgICAgICAgICAgIC1SKikKKyAgICAgICAgICAgICAgICAgICAgZGlyPWBlY2hvICJYJGRlcCIgfCBzZWQgLWUgJ3MvXlgtUi8vJ2AKKyAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiJGVuYWJsZV9ycGF0aCIgIT0gbm87IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICBkbmwgUG90ZW50aWFsbHkgYWRkIERJUiB0byBycGF0aGRpcnMuCisgICAgICAgICAgICAgICAgICAgICAgZG5sIFRoZSBycGF0aGRpcnMgd2lsbCBiZSBhcHBlbmRlZCB0byAkTElCTkFNRSBhdCB0aGUgZW5kLgorICAgICAgICAgICAgICAgICAgICAgIGhhdmVpdD0KKyAgICAgICAgICAgICAgICAgICAgICBmb3IgeCBpbiAkcnBhdGhkaXJzOyBkbworICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYJGRpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIHJwYXRoZGlycz0iJHJwYXRoZGlycyAkZGlyIgorICAgICAgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgICAgICAgZG5sIFBvdGVudGlhbGx5IGFkZCBESVIgdG8gbHRycGF0aGRpcnMuCisgICAgICAgICAgICAgICAgICAgICAgZG5sIFRoZSBsdHJwYXRoZGlycyB3aWxsIGJlIGFwcGVuZGVkIHRvICRMVExJQk5BTUUgYXQgdGhlIGVuZC4KKyAgICAgICAgICAgICAgICAgICAgICBoYXZlaXQ9CisgICAgICAgICAgICAgICAgICAgICAgZm9yIHggaW4gJGx0cnBhdGhkaXJzOyBkbworICAgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAiWCR4IiA9ICJYJGRpciI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgaGF2ZWl0PXllcworICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhaworICAgICAgICAgICAgICAgICAgICAgICAgZmkKKyAgICAgICAgICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGhhdmVpdCI7IHRoZW4KKyAgICAgICAgICAgICAgICAgICAgICAgIGx0cnBhdGhkaXJzPSIkbHRycGF0aGRpcnMgJGRpciIKKyAgICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICAgICAgICA7OworICAgICAgICAgICAgICAgICAgLWwqKQorICAgICAgICAgICAgICAgICAgICBkbmwgSGFuZGxlIHRoaXMgaW4gdGhlIG5leHQgcm91bmQuCisgICAgICAgICAgICAgICAgICAgIG5hbWVzX25leHRfcm91bmQ9IiRuYW1lc19uZXh0X3JvdW5kICJgZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzL15YLWwvLydgCisgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAqLmxhKQorICAgICAgICAgICAgICAgICAgICBkbmwgSGFuZGxlIHRoaXMgaW4gdGhlIG5leHQgcm91bmQuIFRocm93IGF3YXkgdGhlIC5sYSdzCisgICAgICAgICAgICAgICAgICAgIGRubCBkaXJlY3Rvcnk7IGl0IGlzIGFscmVhZHkgY29udGFpbmVkIGluIGEgcHJlY2VkaW5nIC1MCisgICAgICAgICAgICAgICAgICAgIGRubCBvcHRpb24uCisgICAgICAgICAgICAgICAgICAgIG5hbWVzX25leHRfcm91bmQ9IiRuYW1lc19uZXh0X3JvdW5kICJgZWNobyAiWCRkZXAiIHwgc2VkIC1lICdzLF5YLiovLCwnIC1lICdzLF5saWIsLCcgLWUgJ3MsXC5sYSQsLCdgCisgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgICAgICBkbmwgTW9zdCBsaWtlbHkgYW4gaW1tZWRpYXRlIGxpYnJhcnkgbmFtZS4KKyAgICAgICAgICAgICAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZGVwIgorICAgICAgICAgICAgICAgICAgICBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfSRkZXAiCisgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgZXNhYworICAgICAgICAgICAgICBkb25lCisgICAgICAgICAgICBmaQorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgIGRubCBEaWRuJ3QgZmluZCB0aGUgbGlicmFyeTsgYXNzdW1lIGl0IGlzIGluIHRoZSBzeXN0ZW0gZGlyZWN0b3JpZXMKKyAgICAgICAgICAgIGRubCBrbm93biB0byB0aGUgbGlua2VyIGFuZCBydW50aW1lIGxvYWRlci4gKEFsbCB0aGUgc3lzdGVtCisgICAgICAgICAgICBkbmwgZGlyZWN0b3JpZXMga25vd24gdG8gdGhlIGxpbmtlciBzaG91bGQgYWxzbyBiZSBrbm93biB0byB0aGUKKyAgICAgICAgICAgIGRubCBydW50aW1lIGxvYWRlciwgb3RoZXJ3aXNlIHRoZSBzeXN0ZW0gaXMgc2V2ZXJlbHkgbWlzY29uZmlndXJlZC4pCisgICAgICAgICAgICBMSUJbXU5BTUU9IiR7TElCW11OQU1FfSR7TElCW11OQU1FOisgfS1sJG5hbWUiCisgICAgICAgICAgICBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfS1sJG5hbWUiCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgIGZpCisgICAgZG9uZQorICBkb25lCisgIGlmIHRlc3QgIlgkcnBhdGhkaXJzIiAhPSAiWCI7IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkYWNsX2hhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCisgICAgICBkbmwgV2VpcmQgcGxhdGZvcm06IG9ubHkgdGhlIGxhc3QgLXJwYXRoIG9wdGlvbiBjb3VudHMsIHRoZSB1c2VyIG11c3QKKyAgICAgIGRubCBwYXNzIGFsbCBwYXRoIGVsZW1lbnRzIGluIG9uZSBvcHRpb24uIFdlIGNhbiBhcnJhbmdlIHRoYXQgZm9yIGEKKyAgICAgIGRubCBzaW5nbGUgbGlicmFyeSwgYnV0IG5vdCB3aGVuIG1vcmUgdGhhbiBvbmUgJExJQk5BTUVzIGFyZSB1c2VkLgorICAgICAgYWxsZGlycz0KKyAgICAgIGZvciBmb3VuZF9kaXIgaW4gJHJwYXRoZGlyczsgZG8KKyAgICAgICAgYWxsZGlycz0iJHthbGxkaXJzfSR7YWxsZGlyczorJGFjbF9oYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yfSRmb3VuZF9kaXIiCisgICAgICBkb25lCisgICAgICBkbmwgTm90ZTogYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgdXNlcyAkbGliZGlyIGFuZCAkd2wuCisgICAgICBhY2xfc2F2ZV9saWJkaXI9IiRsaWJkaXIiCisgICAgICBsaWJkaXI9IiRhbGxkaXJzIgorICAgICAgZXZhbCBmbGFnPVwiJGFjbF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAgICAgIGxpYmRpcj0iJGFjbF9zYXZlX2xpYmRpciIKKyAgICAgIExJQltdTkFNRT0iJHtMSUJbXU5BTUV9JHtMSUJbXU5BTUU6KyB9JGZsYWciCisgICAgZWxzZQorICAgICAgZG5sIFRoZSAtcnBhdGggb3B0aW9ucyBhcmUgY3VtdWxhdGl2ZS4KKyAgICAgIGZvciBmb3VuZF9kaXIgaW4gJHJwYXRoZGlyczsgZG8KKyAgICAgICAgYWNsX3NhdmVfbGliZGlyPSIkbGliZGlyIgorICAgICAgICBsaWJkaXI9IiRmb3VuZF9kaXIiCisgICAgICAgIGV2YWwgZmxhZz1cIiRhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgICAgICAgIGxpYmRpcj0iJGFjbF9zYXZlX2xpYmRpciIKKyAgICAgICAgTElCW11OQU1FPSIke0xJQltdTkFNRX0ke0xJQltdTkFNRTorIH0kZmxhZyIKKyAgICAgIGRvbmUKKyAgICBmaQorICBmaQorICBpZiB0ZXN0ICJYJGx0cnBhdGhkaXJzIiAhPSAiWCI7IHRoZW4KKyAgICBkbmwgV2hlbiB1c2luZyBsaWJ0b29sLCB0aGUgb3B0aW9uIHRoYXQgd29ya3MgZm9yIGJvdGggbGlicmFyaWVzIGFuZAorICAgIGRubCBleGVjdXRhYmxlcyBpcyAtUi4gVGhlIC1SIG9wdGlvbnMgYXJlIGN1bXVsYXRpdmUuCisgICAgZm9yIGZvdW5kX2RpciBpbiAkbHRycGF0aGRpcnM7IGRvCisgICAgICBMVExJQltdTkFNRT0iJHtMVExJQltdTkFNRX0ke0xUTElCW11OQU1FOisgfS1SJGZvdW5kX2RpciIKKyAgICBkb25lCisgIGZpCisgIHBvcGRlZihbUEFDS0xJQlNdKQorICBwb3BkZWYoW1BBQ0tVUF0pCisgIHBvcGRlZihbUEFDS10pCisgIHBvcGRlZihbTkFNRV0pCitdKQorCitkbmwgQUNfTElCX0FQUEVORFRPVkFSKFZBUiwgQ09OVEVOVFMpIGFwcGVuZHMgdGhlIGVsZW1lbnRzIG9mIENPTlRFTlRTIHRvIFZBUiwKK2RubCB1bmxlc3MgYWxyZWFkeSBwcmVzZW50IGluIFZBUi4KK2RubCBXb3JrcyBvbmx5IGZvciBDUFBGTEFHUywgbm90IGZvciBMSUIqIHZhcmlhYmxlcyBiZWNhdXNlIHRoYXQgc29tZXRpbWVzCitkbmwgY29udGFpbnMgdHdvIG9yIHRocmVlIGNvbnNlY3V0aXZlIGVsZW1lbnRzIHRoYXQgYmVsb25nIHRvZ2V0aGVyLgorQUNfREVGVU4oW0FDX0xJQl9BUFBFTkRUT1ZBUl0sCitbCisgIGZvciBlbGVtZW50IGluIFskMl07IGRvCisgICAgaGF2ZWl0PQorICAgIGZvciB4IGluICRbJDFdOyBkbworICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFtldmFsIHg9XCIkeFwiXSkKKyAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWCRlbGVtZW50IjsgdGhlbgorICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgIGJyZWFrCisgICAgICBmaQorICAgIGRvbmUKKyAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgWyQxXT0iJHtbJDFdfSR7WyQxXTorIH0kZWxlbWVudCIKKyAgICBmaQorICBkb25lCitdKQorCitkbmwgRm9yIHRob3NlIGNhc2VzIHdoZXJlIGEgdmFyaWFibGUgY29udGFpbnMgc2V2ZXJhbCAtTCBhbmQgLWwgb3B0aW9ucworZG5sIHJlZmVycmluZyB0byB1bmtub3duIGxpYnJhcmllcyBhbmQgZGlyZWN0b3JpZXMsIHRoaXMgbWFjcm8gZGV0ZXJtaW5lcyB0aGUKK2RubCBuZWNlc3NhcnkgYWRkaXRpb25hbCBsaW5rZXIgb3B0aW9ucyBmb3IgdGhlIHJ1bnRpbWUgcGF0aC4KK2RubCBBQ19MSUJfTElOS0ZMQUdTX0ZST01fTElCUyhbTERBRERWQVJdLCBbTElCU1ZBTFVFXSwgW1VTRS1MSUJUT09MXSkKK2RubCBzZXRzIExEQUREVkFSIHRvIGxpbmtlciBvcHRpb25zIG5lZWRlZCB0b2dldGhlciB3aXRoIExJQlNWQUxVRS4KK2RubCBJZiBVU0UtTElCVE9PTCBldmFsdWF0ZXMgdG8gbm9uLWVtcHR5LCBsaW5raW5nIHdpdGggbGlidG9vbCBpcyBhc3N1bWVkLAorZG5sIG90aGVyd2lzZSBsaW5raW5nIHdpdGhvdXQgbGlidG9vbCBpcyBhc3N1bWVkLgorQUNfREVGVU4oW0FDX0xJQl9MSU5LRkxBR1NfRlJPTV9MSUJTXSwKK1sKKyAgQUNfUkVRVUlSRShbQUNfTElCX1JQQVRIXSkKKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfTVVMVElMSUJdKQorICAkMT0KKyAgaWYgdGVzdCAiJGVuYWJsZV9ycGF0aCIgIT0gbm87IHRoZW4KKyAgICBpZiB0ZXN0IC1uICIkYWNsX2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiICYmIHRlc3QgIiRhY2xfaGFyZGNvZGVfbWludXNfTCIgPSBubzsgdGhlbgorICAgICAgZG5sIFVzZSBhbiBleHBsaWNpdCBvcHRpb24gdG8gaGFyZGNvZGUgZGlyZWN0b3JpZXMgaW50byB0aGUgcmVzdWx0aW5nCisgICAgICBkbmwgYmluYXJ5LgorICAgICAgcnBhdGhkaXJzPQorICAgICAgbmV4dD0KKyAgICAgIGZvciBvcHQgaW4gJDI7IGRvCisgICAgICAgIGlmIHRlc3QgLW4gIiRuZXh0IjsgdGhlbgorICAgICAgICAgIGRpcj0iJG5leHQiCisgICAgICAgICAgZG5sIE5vIG5lZWQgdG8gaGFyZGNvZGUgdGhlIHN0YW5kYXJkIC91c3IvbGliLgorICAgICAgICAgIGlmIHRlc3QgIlgkZGlyIiAhPSAiWC91c3IvJGFjbF9saWJkaXJzdGVtIiBcCisgICAgICAgICAgICAgJiYgdGVzdCAiWCRkaXIiICE9ICJYL3Vzci8kYWNsX2xpYmRpcnN0ZW0yIjsgdGhlbgorICAgICAgICAgICAgcnBhdGhkaXJzPSIkcnBhdGhkaXJzICRkaXIiCisgICAgICAgICAgZmkKKyAgICAgICAgICBuZXh0PQorICAgICAgICBlbHNlCisgICAgICAgICAgY2FzZSAkb3B0IGluCisgICAgICAgICAgICAtTCkgbmV4dD15ZXMgOzsKKyAgICAgICAgICAgIC1MKikgZGlyPWBlY2hvICJYJG9wdCIgfCBzZWQgLWUgJ3MsXlgtTCwsJ2AKKyAgICAgICAgICAgICAgICAgZG5sIE5vIG5lZWQgdG8gaGFyZGNvZGUgdGhlIHN0YW5kYXJkIC91c3IvbGliLgorICAgICAgICAgICAgICAgICBpZiB0ZXN0ICJYJGRpciIgIT0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbSIgXAorICAgICAgICAgICAgICAgICAgICAmJiB0ZXN0ICJYJGRpciIgIT0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbTIiOyB0aGVuCisgICAgICAgICAgICAgICAgICAgcnBhdGhkaXJzPSIkcnBhdGhkaXJzICRkaXIiCisgICAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgICAgIG5leHQ9IDs7CisgICAgICAgICAgICAqKSBuZXh0PSA7OworICAgICAgICAgIGVzYWMKKyAgICAgICAgZmkKKyAgICAgIGRvbmUKKyAgICAgIGlmIHRlc3QgIlgkcnBhdGhkaXJzIiAhPSAiWCI7IHRoZW4KKyAgICAgICAgaWYgdGVzdCAtbiAiIiQzIiI7IHRoZW4KKyAgICAgICAgICBkbmwgbGlidG9vbCBpcyB1c2VkIGZvciBsaW5raW5nLiBVc2UgLVIgb3B0aW9ucy4KKyAgICAgICAgICBmb3IgZGlyIGluICRycGF0aGRpcnM7IGRvCisgICAgICAgICAgICAkMT0iJHskMX0keyQxOisgfS1SJGRpciIKKyAgICAgICAgICBkb25lCisgICAgICAgIGVsc2UKKyAgICAgICAgICBkbmwgVGhlIGxpbmtlciBpcyB1c2VkIGZvciBsaW5raW5nIGRpcmVjdGx5LgorICAgICAgICAgIGlmIHRlc3QgLW4gIiRhY2xfaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KKyAgICAgICAgICAgIGRubCBXZWlyZCBwbGF0Zm9ybTogb25seSB0aGUgbGFzdCAtcnBhdGggb3B0aW9uIGNvdW50cywgdGhlIHVzZXIKKyAgICAgICAgICAgIGRubCBtdXN0IHBhc3MgYWxsIHBhdGggZWxlbWVudHMgaW4gb25lIG9wdGlvbi4KKyAgICAgICAgICAgIGFsbGRpcnM9CisgICAgICAgICAgICBmb3IgZGlyIGluICRycGF0aGRpcnM7IGRvCisgICAgICAgICAgICAgIGFsbGRpcnM9IiR7YWxsZGlyc30ke2FsbGRpcnM6KyRhY2xfaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcn0kZGlyIgorICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgYWNsX3NhdmVfbGliZGlyPSIkbGliZGlyIgorICAgICAgICAgICAgbGliZGlyPSIkYWxsZGlycyIKKyAgICAgICAgICAgIGV2YWwgZmxhZz1cIiRhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgICAgICAgICAgICBsaWJkaXI9IiRhY2xfc2F2ZV9saWJkaXIiCisgICAgICAgICAgICAkMT0iJGZsYWciCisgICAgICAgICAgZWxzZQorICAgICAgICAgICAgZG5sIFRoZSAtcnBhdGggb3B0aW9ucyBhcmUgY3VtdWxhdGl2ZS4KKyAgICAgICAgICAgIGZvciBkaXIgaW4gJHJwYXRoZGlyczsgZG8KKyAgICAgICAgICAgICAgYWNsX3NhdmVfbGliZGlyPSIkbGliZGlyIgorICAgICAgICAgICAgICBsaWJkaXI9IiRkaXIiCisgICAgICAgICAgICAgIGV2YWwgZmxhZz1cIiRhY2xfaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgICAgICAgICAgICAgIGxpYmRpcj0iJGFjbF9zYXZlX2xpYmRpciIKKyAgICAgICAgICAgICAgJDE9IiR7JDF9JHskMTorIH0kZmxhZyIKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgZmkKKyAgICBmaQorICBmaQorICBBQ19TVUJTVChbJDFdKQorXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvbGliLXByZWZpeC5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvbGliLXByZWZpeC5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YWRiMTdiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9saWItcHJlZml4Lm00CkBAIC0wLDAgKzEsMjQ5IEBACisjIGxpYi1wcmVmaXgubTQgc2VyaWFsIDE0CitkbmwgQ29weXJpZ2h0IChDKSAyMDAxLTIwMDUsIDIwMDgtMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorCitkbmwgRnJvbSBCcnVubyBIYWlibGUuCisKK2RubCBBQ19MSUJfUFJFRklYIGFkZHMgdG8gdGhlIENQUEZMQUdTIGFuZCBMREZMQUdTIHRoZSBmbGFncyB0aGF0IGFyZSBuZWVkZWQKK2RubCB0byBhY2Nlc3MgcHJldmlvdXNseSBpbnN0YWxsZWQgbGlicmFyaWVzLiBUaGUgYmFzaWMgYXNzdW1wdGlvbiBpcyB0aGF0CitkbmwgYSB1c2VyIHdpbGwgd2FudCBwYWNrYWdlcyB0byB1c2Ugb3RoZXIgcGFja2FnZXMgaGUgcHJldmlvdXNseSBpbnN0YWxsZWQKK2RubCB3aXRoIHRoZSBzYW1lIC0tcHJlZml4IG9wdGlvbi4KK2RubCBUaGlzIG1hY3JvIGlzIG5vdCBuZWVkZWQgaWYgb25seSBBQ19MSUJfTElOS0ZMQUdTIGlzIHVzZWQgdG8gbG9jYXRlCitkbmwgbGlicmFyaWVzLCBidXQgaXMgb3RoZXJ3aXNlIHZlcnkgY29udmVuaWVudC4KK0FDX0RFRlVOKFtBQ19MSUJfUFJFRklYXSwKK1sKKyAgQUNfQkVGT1JFKFskMF0sIFtBQ19MSUJfTElOS0ZMQUdTXSkKKyAgQUNfUkVRVUlSRShbQUNfUFJPR19DQ10pCisgIEFDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9IT1NUXSkKKyAgQUNfUkVRVUlSRShbQUNfTElCX1BSRVBBUkVfTVVMVElMSUJdKQorICBBQ19SRVFVSVJFKFtBQ19MSUJfUFJFUEFSRV9QUkVGSVhdKQorICBkbmwgQnkgZGVmYXVsdCwgbG9vayBpbiAkaW5jbHVkZWRpciBhbmQgJGxpYmRpci4KKyAgdXNlX2FkZGl0aW9uYWw9eWVzCisgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbCisgICAgZXZhbCBhZGRpdGlvbmFsX2luY2x1ZGVkaXI9XCIkaW5jbHVkZWRpclwiCisgICAgZXZhbCBhZGRpdGlvbmFsX2xpYmRpcj1cIiRsaWJkaXJcIgorICBdKQorICBBQ19BUkdfV0lUSChbbGliLXByZWZpeF0sCitbWyAgLS13aXRoLWxpYi1wcmVmaXhbPURJUl0gc2VhcmNoIGZvciBsaWJyYXJpZXMgaW4gRElSL2luY2x1ZGUgYW5kIERJUi9saWIKKyAgLS13aXRob3V0LWxpYi1wcmVmaXggICAgZG9uJ3Qgc2VhcmNoIGZvciBsaWJyYXJpZXMgaW4gaW5jbHVkZWRpciBhbmQgbGliZGlyXV0sCitbCisgICAgaWYgdGVzdCAiWCR3aXRodmFsIiA9ICJYbm8iOyB0aGVuCisgICAgICB1c2VfYWRkaXRpb25hbD1ubworICAgIGVsc2UKKyAgICAgIGlmIHRlc3QgIlgkd2l0aHZhbCIgPSAiWCI7IHRoZW4KKyAgICAgICAgQUNfTElCX1dJVEhfRklOQUxfUFJFRklYKFsKKyAgICAgICAgICBldmFsIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj1cIiRpbmNsdWRlZGlyXCIKKyAgICAgICAgICBldmFsIGFkZGl0aW9uYWxfbGliZGlyPVwiJGxpYmRpclwiCisgICAgICAgIF0pCisgICAgICBlbHNlCisgICAgICAgIGFkZGl0aW9uYWxfaW5jbHVkZWRpcj0iJHdpdGh2YWwvaW5jbHVkZSIKKyAgICAgICAgYWRkaXRpb25hbF9saWJkaXI9IiR3aXRodmFsLyRhY2xfbGliZGlyc3RlbSIKKyAgICAgIGZpCisgICAgZmkKK10pCisgIGlmIHRlc3QgJHVzZV9hZGRpdGlvbmFsID0geWVzOyB0aGVuCisgICAgZG5sIFBvdGVudGlhbGx5IGFkZCAkYWRkaXRpb25hbF9pbmNsdWRlZGlyIHRvICRDUFBGTEFHUy4KKyAgICBkbmwgQnV0IGRvbid0IGFkZCBpdAorICAgIGRubCAgIDEuIGlmIGl0J3MgdGhlIHN0YW5kYXJkIC91c3IvaW5jbHVkZSwKKyAgICBkbmwgICAyLiBpZiBpdCdzIGFscmVhZHkgcHJlc2VudCBpbiAkQ1BQRkxBR1MsCisgICAgZG5sICAgMy4gaWYgaXQncyAvdXNyL2xvY2FsL2luY2x1ZGUgYW5kIHdlIGFyZSB1c2luZyBHQ0Mgb24gTGludXgsCisgICAgZG5sICAgNC4gaWYgaXQgZG9lc24ndCBleGlzdCBhcyBhIGRpcmVjdG9yeS4KKyAgICBpZiB0ZXN0ICJYJGFkZGl0aW9uYWxfaW5jbHVkZWRpciIgIT0gIlgvdXNyL2luY2x1ZGUiOyB0aGVuCisgICAgICBoYXZlaXQ9CisgICAgICBmb3IgeCBpbiAkQ1BQRkxBR1M7IGRvCisgICAgICAgIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbZXZhbCB4PVwiJHhcIl0pCisgICAgICAgIGlmIHRlc3QgIlgkeCIgPSAiWC1JJGFkZGl0aW9uYWxfaW5jbHVkZWRpciI7IHRoZW4KKyAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZmkKKyAgICAgIGRvbmUKKyAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9pbmNsdWRlZGlyIiA9ICJYL3Vzci9sb2NhbC9pbmNsdWRlIjsgdGhlbgorICAgICAgICAgIGlmIHRlc3QgLW4gIiRHQ0MiOyB0aGVuCisgICAgICAgICAgICBjYXNlICRob3N0X29zIGluCisgICAgICAgICAgICAgIGxpbnV4KiB8IGdudSogfCBrKmJzZCotZ251KSBoYXZlaXQ9eWVzOzsKKyAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgICBpZiB0ZXN0IC16ICIkaGF2ZWl0IjsgdGhlbgorICAgICAgICAgIGlmIHRlc3QgLWQgIiRhZGRpdGlvbmFsX2luY2x1ZGVkaXIiOyB0aGVuCisgICAgICAgICAgICBkbmwgUmVhbGx5IGFkZCAkYWRkaXRpb25hbF9pbmNsdWRlZGlyIHRvICRDUFBGTEFHUy4KKyAgICAgICAgICAgIENQUEZMQUdTPSIke0NQUEZMQUdTfSR7Q1BQRkxBR1M6KyB9LUkkYWRkaXRpb25hbF9pbmNsdWRlZGlyIgorICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgICBmaQorICAgIGZpCisgICAgZG5sIFBvdGVudGlhbGx5IGFkZCAkYWRkaXRpb25hbF9saWJkaXIgdG8gJExERkxBR1MuCisgICAgZG5sIEJ1dCBkb24ndCBhZGQgaXQKKyAgICBkbmwgICAxLiBpZiBpdCdzIHRoZSBzdGFuZGFyZCAvdXNyL2xpYiwKKyAgICBkbmwgICAyLiBpZiBpdCdzIGFscmVhZHkgcHJlc2VudCBpbiAkTERGTEFHUywKKyAgICBkbmwgICAzLiBpZiBpdCdzIC91c3IvbG9jYWwvbGliIGFuZCB3ZSBhcmUgdXNpbmcgR0NDIG9uIExpbnV4LAorICAgIGRubCAgIDQuIGlmIGl0IGRvZXNuJ3QgZXhpc3QgYXMgYSBkaXJlY3RvcnkuCisgICAgaWYgdGVzdCAiWCRhZGRpdGlvbmFsX2xpYmRpciIgIT0gIlgvdXNyLyRhY2xfbGliZGlyc3RlbSI7IHRoZW4KKyAgICAgIGhhdmVpdD0KKyAgICAgIGZvciB4IGluICRMREZMQUdTOyBkbworICAgICAgICBBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVgoW2V2YWwgeD1cIiR4XCJdKQorICAgICAgICBpZiB0ZXN0ICJYJHgiID0gIlgtTCRhZGRpdGlvbmFsX2xpYmRpciI7IHRoZW4KKyAgICAgICAgICBoYXZlaXQ9eWVzCisgICAgICAgICAgYnJlYWsKKyAgICAgICAgZmkKKyAgICAgIGRvbmUKKyAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgIGlmIHRlc3QgIlgkYWRkaXRpb25hbF9saWJkaXIiID0gIlgvdXNyL2xvY2FsLyRhY2xfbGliZGlyc3RlbSI7IHRoZW4KKyAgICAgICAgICBpZiB0ZXN0IC1uICIkR0NDIjsgdGhlbgorICAgICAgICAgICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICAgICAgICAgICBsaW51eCopIGhhdmVpdD15ZXM7OworICAgICAgICAgICAgZXNhYworICAgICAgICAgIGZpCisgICAgICAgIGZpCisgICAgICAgIGlmIHRlc3QgLXogIiRoYXZlaXQiOyB0aGVuCisgICAgICAgICAgaWYgdGVzdCAtZCAiJGFkZGl0aW9uYWxfbGliZGlyIjsgdGhlbgorICAgICAgICAgICAgZG5sIFJlYWxseSBhZGQgJGFkZGl0aW9uYWxfbGliZGlyIHRvICRMREZMQUdTLgorICAgICAgICAgICAgTERGTEFHUz0iJHtMREZMQUdTfSR7TERGTEFHUzorIH0tTCRhZGRpdGlvbmFsX2xpYmRpciIKKyAgICAgICAgICBmaQorICAgICAgICBmaQorICAgICAgZmkKKyAgICBmaQorICBmaQorXSkKKworZG5sIEFDX0xJQl9QUkVQQVJFX1BSRUZJWCBjcmVhdGVzIHZhcmlhYmxlcyBhY2xfZmluYWxfcHJlZml4LAorZG5sIGFjbF9maW5hbF9leGVjX3ByZWZpeCwgY29udGFpbmluZyB0aGUgdmFsdWVzIHRvIHdoaWNoICRwcmVmaXggYW5kCitkbmwgJGV4ZWNfcHJlZml4IHdpbGwgZXhwYW5kIGF0IHRoZSBlbmQgb2YgdGhlIGNvbmZpZ3VyZSBzY3JpcHQuCitBQ19ERUZVTihbQUNfTElCX1BSRVBBUkVfUFJFRklYXSwKK1sKKyAgZG5sIFVuZm9ydHVuYXRlbHksIHByZWZpeCBhbmQgZXhlY19wcmVmaXggZ2V0IG9ubHkgZmluYWxseSBkZXRlcm1pbmVkCisgIGRubCBhdCB0aGUgZW5kIG9mIGNvbmZpZ3VyZS4KKyAgaWYgdGVzdCAiWCRwcmVmaXgiID0gIlhOT05FIjsgdGhlbgorICAgIGFjbF9maW5hbF9wcmVmaXg9IiRhY19kZWZhdWx0X3ByZWZpeCIKKyAgZWxzZQorICAgIGFjbF9maW5hbF9wcmVmaXg9IiRwcmVmaXgiCisgIGZpCisgIGlmIHRlc3QgIlgkZXhlY19wcmVmaXgiID0gIlhOT05FIjsgdGhlbgorICAgIGFjbF9maW5hbF9leGVjX3ByZWZpeD0nJHtwcmVmaXh9JworICBlbHNlCisgICAgYWNsX2ZpbmFsX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCisgIGZpCisgIGFjbF9zYXZlX3ByZWZpeD0iJHByZWZpeCIKKyAgcHJlZml4PSIkYWNsX2ZpbmFsX3ByZWZpeCIKKyAgZXZhbCBhY2xfZmluYWxfZXhlY19wcmVmaXg9XCIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4XCIKKyAgcHJlZml4PSIkYWNsX3NhdmVfcHJlZml4IgorXSkKKworZG5sIEFDX0xJQl9XSVRIX0ZJTkFMX1BSRUZJWChbc3RhdGVtZW50XSkgZXZhbHVhdGVzIHN0YXRlbWVudCwgd2l0aCB0aGUKK2RubCB2YXJpYWJsZXMgcHJlZml4IGFuZCBleGVjX3ByZWZpeCBib3VuZCB0byB0aGUgdmFsdWVzIHRoZXkgd2lsbCBoYXZlCitkbmwgYXQgdGhlIGVuZCBvZiB0aGUgY29uZmlndXJlIHNjcmlwdC4KK0FDX0RFRlVOKFtBQ19MSUJfV0lUSF9GSU5BTF9QUkVGSVhdLAorWworICBhY2xfc2F2ZV9wcmVmaXg9IiRwcmVmaXgiCisgIHByZWZpeD0iJGFjbF9maW5hbF9wcmVmaXgiCisgIGFjbF9zYXZlX2V4ZWNfcHJlZml4PSIkZXhlY19wcmVmaXgiCisgIGV4ZWNfcHJlZml4PSIkYWNsX2ZpbmFsX2V4ZWNfcHJlZml4IgorICAkMQorICBleGVjX3ByZWZpeD0iJGFjbF9zYXZlX2V4ZWNfcHJlZml4IgorICBwcmVmaXg9IiRhY2xfc2F2ZV9wcmVmaXgiCitdKQorCitkbmwgQUNfTElCX1BSRVBBUkVfTVVMVElMSUIgY3JlYXRlcworZG5sIC0gYSB2YXJpYWJsZSBhY2xfbGliZGlyc3RlbSwgY29udGFpbmluZyB0aGUgYmFzZW5hbWUgb2YgdGhlIGxpYmRpciwgZWl0aGVyCitkbmwgICAibGliIiBvciAibGliNjQiIG9yICJsaWIvNjQiLAorZG5sIC0gYSB2YXJpYWJsZSBhY2xfbGliZGlyc3RlbTIsIGFzIGEgc2Vjb25kYXJ5IHBvc3NpYmxlIHZhbHVlIGZvcgorZG5sICAgYWNsX2xpYmRpcnN0ZW0sIGVpdGhlciB0aGUgc2FtZSBhcyBhY2xfbGliZGlyc3RlbSBvciAibGliL3NwYXJjdjkiIG9yCitkbmwgICAibGliL2FtZDY0Ii4KK0FDX0RFRlVOKFtBQ19MSUJfUFJFUEFSRV9NVUxUSUxJQl0sCitbCisgIGRubCBUaGVyZSBpcyBubyBmb3JtYWwgc3RhbmRhcmQgcmVnYXJkaW5nIGxpYiBhbmQgbGliNjQuCisgIGRubCBPbiBnbGliYyBzeXN0ZW1zLCB0aGUgY3VycmVudCBwcmFjdGljZSBpcyB0aGF0IG9uIGEgc3lzdGVtIHN1cHBvcnRpbmcKKyAgZG5sIDMyLWJpdCBhbmQgNjQtYml0IGluc3RydWN0aW9uIHNldHMgb3IgQUJJcywgNjQtYml0IGxpYnJhcmllcyBnbyB1bmRlcgorICBkbmwgJHByZWZpeC9saWI2NCBhbmQgMzItYml0IGxpYnJhcmllcyBnbyB1bmRlciAkcHJlZml4L2xpYi4gV2UgZGV0ZXJtaW5lCisgIGRubCB0aGUgY29tcGlsZXIncyBkZWZhdWx0IG1vZGUgYnkgbG9va2luZyBhdCB0aGUgY29tcGlsZXIncyBsaWJyYXJ5IHNlYXJjaAorICBkbmwgcGF0aC4gSWYgYXQgbGVhc3Qgb25lIG9mIGl0cyBlbGVtZW50cyBlbmRzIGluIC9saWI2NCBvciBwb2ludHMgdG8gYQorICBkbmwgZGlyZWN0b3J5IHdob3NlIGFic29sdXRlIHBhdGhuYW1lIGVuZHMgaW4gL2xpYjY0LCB3ZSBhc3N1bWUgYSA2NC1iaXQgQUJJLgorICBkbmwgT3RoZXJ3aXNlIHdlIHVzZSB0aGUgZGVmYXVsdCwgbmFtZWx5ICJsaWIiLgorICBkbmwgT24gU29sYXJpcyBzeXN0ZW1zLCB0aGUgY3VycmVudCBwcmFjdGljZSBpcyB0aGF0IG9uIGEgc3lzdGVtIHN1cHBvcnRpbmcKKyAgZG5sIDMyLWJpdCBhbmQgNjQtYml0IGluc3RydWN0aW9uIHNldHMgb3IgQUJJcywgNjQtYml0IGxpYnJhcmllcyBnbyB1bmRlcgorICBkbmwgJHByZWZpeC9saWIvNjQgKHdoaWNoIGlzIGEgc3ltbGluayB0byBlaXRoZXIgJHByZWZpeC9saWIvc3BhcmN2OSBvcgorICBkbmwgJHByZWZpeC9saWIvYW1kNjQpIGFuZCAzMi1iaXQgbGlicmFyaWVzIGdvIHVuZGVyICRwcmVmaXgvbGliLgorICBBQ19SRVFVSVJFKFtBQ19DQU5PTklDQUxfSE9TVF0pCisgIEFDX1JFUVVJUkUoW2dsX0hPU1RfQ1BVX0NfQUJJXzMyQklUXSkKKworICBjYXNlICIkaG9zdF9vcyIgaW4KKyAgICBzb2xhcmlzKikKKyAgICAgIEFDX0NBQ0hFX0NIRUNLKFtmb3IgNjQtYml0IGhvc3RdLCBbZ2xfY3Zfc29sYXJpc182NGJpdF0sCisgICAgICAgIFtBQ19DT01QSUxFX0lGRUxTRSgKKyAgICAgICAgICAgW0FDX0xBTkdfU09VUkNFKAorICAgICAgICAgICAgICBbWyNpZmRlZiBfTFA2NAorICAgICAgICAgICAgICAgICBpbnQgb2s7CisgICAgICAgICAgICAgICAgI2Vsc2UKKyAgICAgICAgICAgICAgICAgZXJyb3IgZmFpbAorICAgICAgICAgICAgICAgICNlbmRpZgorICAgICAgICAgICAgICBdXSldLAorICAgICAgICAgICBbZ2xfY3Zfc29sYXJpc182NGJpdD15ZXNdLAorICAgICAgICAgICBbZ2xfY3Zfc29sYXJpc182NGJpdD1ub10pCisgICAgICAgIF0pOzsKKyAgZXNhYworCisgIGRubCBBbGxvdyB0aGUgdXNlciB0byBvdmVycmlkZSB0aGUgcmVzdWx0IGJ5IHNldHRpbmcgYWNsX2N2X2xpYmRpcnN0ZW1zLgorICBBQ19DQUNIRV9DSEVDSyhbZm9yIHRoZSBjb21tb24gc3VmZml4ZXMgb2YgZGlyZWN0b3JpZXMgaW4gdGhlIGxpYnJhcnkgc2VhcmNoIHBhdGhdLAorICAgIFthY2xfY3ZfbGliZGlyc3RlbXNdLAorICAgIFthY2xfbGliZGlyc3RlbT1saWIKKyAgICAgYWNsX2xpYmRpcnN0ZW0yPQorICAgICBjYXNlICIkaG9zdF9vcyIgaW4KKyAgICAgICBzb2xhcmlzKikKKyAgICAgICAgIGRubCBTZWUgU29sYXJpcyAxMCBTb2Z0d2FyZSBEZXZlbG9wZXIgQ29sbGVjdGlvbiA+IFNvbGFyaXMgNjQtYml0IERldmVsb3BlcidzIEd1aWRlID4gVGhlIERldmVsb3BtZW50IEVudmlyb25tZW50CisgICAgICAgICBkbmwgPGh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2NkL0UxOTI1My0wMS84MTYtNTEzOC9kZXYtZW52L2luZGV4Lmh0bWw+LgorICAgICAgICAgZG5sICJQb3J0YWJsZSBNYWtlZmlsZXMgc2hvdWxkIHJlZmVyIHRvIGFueSBsaWJyYXJ5IGRpcmVjdG9yaWVzIHVzaW5nIHRoZSA2NCBzeW1ib2xpYyBsaW5rLiIKKyAgICAgICAgIGRubCBCdXQgd2Ugd2FudCB0byByZWNvZ25pemUgdGhlIHNwYXJjdjkgb3IgYW1kNjQgc3ViZGlyZWN0b3J5IGFsc28gaWYgdGhlCisgICAgICAgICBkbmwgc3ltbGluayBpcyBtaXNzaW5nLCBzbyB3ZSBzZXQgYWNsX2xpYmRpcnN0ZW0yIHRvby4KKyAgICAgICAgIGlmIHRlc3QgJGdsX2N2X3NvbGFyaXNfNjRiaXQgPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgYWNsX2xpYmRpcnN0ZW09bGliLzY0CisgICAgICAgICAgIGNhc2UgIiRob3N0X2NwdSIgaW4KKyAgICAgICAgICAgICBzcGFyYyopICAgICAgICBhY2xfbGliZGlyc3RlbTI9bGliL3NwYXJjdjkgOzsKKyAgICAgICAgICAgICBpKjg2IHwgeDg2XzY0KSBhY2xfbGliZGlyc3RlbTI9bGliL2FtZDY0IDs7CisgICAgICAgICAgIGVzYWMKKyAgICAgICAgIGZpCisgICAgICAgICA7OworICAgICAgICopCisgICAgICAgICBkbmwgSWYgJENDIGdlbmVyYXRlcyBjb2RlIGZvciBhIDMyLWJpdCBBQkksIHRoZSBsaWJyYXJpZXMgYXJlCisgICAgICAgICBkbmwgc3VyZWx5IHVuZGVyICRwcmVmaXgvbGliLCBub3QgJHByZWZpeC9saWI2NC4KKyAgICAgICAgIGlmIHRlc3QgIiRIT1NUX0NQVV9DX0FCSV8zMkJJVCIgIT0geWVzOyB0aGVuCisgICAgICAgICAgIGRubCBUaGUgcmVzdWx0IGlzIGEgcHJvcGVydHkgb2YgdGhlIHN5c3RlbS4gSG93ZXZlciwgbm9uLXN5c3RlbQorICAgICAgICAgICBkbmwgY29tcGlsZXJzIHNvbWV0aW1lcyBoYXZlIG9kZCBsaWJyYXJ5IHNlYXJjaCBwYXRocy4gVGhlcmVmb3JlCisgICAgICAgICAgIGRubCBwcmVmZXIgYXNraW5nIC91c3IvYmluL2djYywgaWYgYXZhaWxhYmxlLCByYXRoZXIgdGhhbiAkQ0MuCisgICAgICAgICAgIHNlYXJjaHBhdGg9YChpZiB0ZXN0IC1mIC91c3IvYmluL2djYyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAmJiBMQ19BTEw9QyAvdXNyL2Jpbi9nY2MgLXByaW50LXNlYXJjaC1kaXJzID4vZGV2L251bGwgMj4vZGV2L251bGw7IHRoZW4gXAorICAgICAgICAgICAgICAgICAgICAgICAgICBMQ19BTEw9QyAvdXNyL2Jpbi9nY2MgLXByaW50LXNlYXJjaC1kaXJzOyBcCisgICAgICAgICAgICAgICAgICAgICAgICBlbHNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgTENfQUxMPUMgJENDIC1wcmludC1zZWFyY2gtZGlyczsgXAorICAgICAgICAgICAgICAgICAgICAgICAgZmkpIDI+L2Rldi9udWxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgfCBzZWQgLW4gLWUgJ3MsXmxpYnJhcmllczogLCxwJyB8IHNlZCAtZSAncyxePSwsJ2AKKyAgICAgICAgICAgaWYgdGVzdCAtbiAiJHNlYXJjaHBhdGgiOyB0aGVuCisgICAgICAgICAgICAgYWNsX3NhdmVfSUZTPSIke0lGUz0gCX0iOyBJRlM9IjoiCisgICAgICAgICAgICAgZm9yIHNlYXJjaGRpciBpbiAkc2VhcmNocGF0aDsgZG8KKyAgICAgICAgICAgICAgIGlmIHRlc3QgLWQgIiRzZWFyY2hkaXIiOyB0aGVuCisgICAgICAgICAgICAgICAgIGNhc2UgIiRzZWFyY2hkaXIiIGluCisgICAgICAgICAgICAgICAgICAgKi9saWI2NC8gfCAqL2xpYjY0ICkgYWNsX2xpYmRpcnN0ZW09bGliNjQgOzsKKyAgICAgICAgICAgICAgICAgICAqLy4uLyB8ICovLi4gKQorICAgICAgICAgICAgICAgICAgICAgIyBCZXR0ZXIgaWdub3JlIGRpcmVjdG9yaWVzIG9mIHRoaXMgZm9ybS4gVGhleSBhcmUgbWlzbGVhZGluZy4KKyAgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAgICAgICAgKikgc2VhcmNoZGlyPWBjZCAiJHNlYXJjaGRpciIgJiYgcHdkYAorICAgICAgICAgICAgICAgICAgICAgIGNhc2UgIiRzZWFyY2hkaXIiIGluCisgICAgICAgICAgICAgICAgICAgICAgICAqL2xpYjY0ICkgYWNsX2xpYmRpcnN0ZW09bGliNjQgOzsKKyAgICAgICAgICAgICAgICAgICAgICBlc2FjIDs7CisgICAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgIElGUz0iJGFjbF9zYXZlX0lGUyIKKyAgICAgICAgICAgZmkKKyAgICAgICAgIGZpCisgICAgICAgICA7OworICAgICBlc2FjCisgICAgIHRlc3QgLW4gIiRhY2xfbGliZGlyc3RlbTIiIHx8IGFjbF9saWJkaXJzdGVtMj0iJGFjbF9saWJkaXJzdGVtIgorICAgICBhY2xfY3ZfbGliZGlyc3RlbXM9IiRhY2xfbGliZGlyc3RlbSwkYWNsX2xpYmRpcnN0ZW0yIgorICAgIF0pCisgICMgRGVjb21wb3NlIGFjbF9jdl9saWJkaXJzdGVtcyBpbnRvIGFjbF9saWJkaXJzdGVtIGFuZCBhY2xfbGliZGlyc3RlbTIuCisgIGFjbF9saWJkaXJzdGVtPWBlY2hvICIkYWNsX2N2X2xpYmRpcnN0ZW1zIiB8IHNlZCAtZSAncy8sLiovLydgCisgIGFjbF9saWJkaXJzdGVtMj1gZWNobyAiJGFjbF9jdl9saWJkaXJzdGVtcyIgfCBzZWQgLWUgJy8sL3MvLiosLy8nYAorXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvbmxzLm00IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9ubHMubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjYyZjYxNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvbmxzLm00CkBAIC0wLDAgKzEsMzIgQEAKKyMgbmxzLm00IHNlcmlhbCA1IChnZXR0ZXh0LTAuMTgpCitkbmwgQ29weXJpZ2h0IChDKSAxOTk1LTIwMDMsIDIwMDUtMjAwNiwgMjAwOC0yMDE0LCAyMDE2LCAyMDE5IEZyZWUgU29mdHdhcmUKK2RubCBGb3VuZGF0aW9uLCBJbmMuCitkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KK2RubCBnaXZlcyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LAorZG5sIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KK2RubAorZG5sIFRoaXMgZmlsZSBjYW4gYmUgdXNlZCBpbiBwcm9qZWN0cyB3aGljaCBhcmUgbm90IGF2YWlsYWJsZSB1bmRlcgorZG5sIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBvciB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMKK2RubCBMaWNlbnNlIGJ1dCB3aGljaCBzdGlsbCB3YW50IHRvIHByb3ZpZGUgc3VwcG9ydCBmb3IgdGhlIEdOVSBnZXR0ZXh0CitkbmwgZnVuY3Rpb25hbGl0eS4KK2RubCBQbGVhc2Ugbm90ZSB0aGF0IHRoZSBhY3R1YWwgY29kZSBvZiB0aGUgR05VIGdldHRleHQgbGlicmFyeSBpcyBjb3ZlcmVkCitkbmwgYnkgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljIExpY2Vuc2UsIGFuZCB0aGUgcmVzdCBvZiB0aGUgR05VCitkbmwgZ2V0dGV4dCBwYWNrYWdlIGlzIGNvdmVyZWQgYnkgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgorZG5sIFRoZXkgYXJlICpub3QqIGluIHRoZSBwdWJsaWMgZG9tYWluLgorCitkbmwgQXV0aG9yczoKK2RubCAgIFVscmljaCBEcmVwcGVyIDxkcmVwcGVyQGN5Z251cy5jb20+LCAxOTk1LTIwMDAuCitkbmwgICBCcnVubyBIYWlibGUgPGhhaWJsZUBjbGlzcC5jb25zLm9yZz4sIDIwMDAtMjAwMy4KKworQUNfUFJFUkVRKFsyLjUwXSkKKworQUNfREVGVU4oW0FNX05MU10sCitbCisgIEFDX01TR19DSEVDS0lORyhbd2hldGhlciBOTFMgaXMgcmVxdWVzdGVkXSkKKyAgZG5sIERlZmF1bHQgaXMgZW5hYmxlZCBOTFMKKyAgQUNfQVJHX0VOQUJMRShbbmxzXSwKKyAgICBbICAtLWRpc2FibGUtbmxzICAgICAgICAgICBkbyBub3QgdXNlIE5hdGl2ZSBMYW5ndWFnZSBTdXBwb3J0XSwKKyAgICBVU0VfTkxTPSRlbmFibGV2YWwsIFVTRV9OTFM9eWVzKQorICBBQ19NU0dfUkVTVUxUKFskVVNFX05MU10pCisgIEFDX1NVQlNUKFtVU0VfTkxTXSkKK10pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9hY2xvY2FsL3BvLm00IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9wby5tNApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNDM3OTJkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9wby5tNApAQCAtMCwwICsxLDQ1MCBAQAorIyBwby5tNCBzZXJpYWwgMzAgKGdldHRleHQtMC4yMCkKK2RubCBDb3B5cmlnaHQgKEMpIDE5OTUtMjAxNCwgMjAxNiwgMjAxOC0yMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorZG5sIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCitkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKK2RubCB3aXRoIG9yIHdpdGhvdXQgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCitkbmwKK2RubCBUaGlzIGZpbGUgY2FuIGJlIHVzZWQgaW4gcHJvamVjdHMgd2hpY2ggYXJlIG5vdCBhdmFpbGFibGUgdW5kZXIKK2RubCB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2Ugb3IgdGhlIEdOVSBMaWJyYXJ5IEdlbmVyYWwgUHVibGljCitkbmwgTGljZW5zZSBidXQgd2hpY2ggc3RpbGwgd2FudCB0byBwcm92aWRlIHN1cHBvcnQgZm9yIHRoZSBHTlUgZ2V0dGV4dAorZG5sIGZ1bmN0aW9uYWxpdHkuCitkbmwgUGxlYXNlIG5vdGUgdGhhdCB0aGUgYWN0dWFsIGNvZGUgb2YgdGhlIEdOVSBnZXR0ZXh0IGxpYnJhcnkgaXMgY292ZXJlZAorZG5sIGJ5IHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLCBhbmQgdGhlIHJlc3Qgb2YgdGhlIEdOVQorZG5sIGdldHRleHQgcGFja2FnZSBpcyBjb3ZlcmVkIGJ5IHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZS4KK2RubCBUaGV5IGFyZSAqbm90KiBpbiB0aGUgcHVibGljIGRvbWFpbi4KKworZG5sIEF1dGhvcnM6CitkbmwgICBVbHJpY2ggRHJlcHBlciA8ZHJlcHBlckBjeWdudXMuY29tPiwgMTk5NS0yMDAwLgorZG5sICAgQnJ1bm8gSGFpYmxlIDxoYWlibGVAY2xpc3AuY29ucy5vcmc+LCAyMDAwLTIwMDMuCisKK0FDX1BSRVJFUShbMi42MF0pCisKK2RubCBDaGVja3MgZm9yIGFsbCBwcmVyZXF1aXNpdGVzIG9mIHRoZSBwbyBzdWJkaXJlY3RvcnkuCitBQ19ERUZVTihbQU1fUE9fU1VCRElSU10sCitbCisgIEFDX1JFUVVJUkUoW0FDX1BST0dfTUFLRV9TRVRdKWRubAorICBBQ19SRVFVSVJFKFtBQ19QUk9HX0lOU1RBTExdKWRubAorICBBQ19SRVFVSVJFKFtBQ19QUk9HX01LRElSX1BdKWRubAorICBBQ19SRVFVSVJFKFtBQ19QUk9HX1NFRF0pZG5sCisgIEFDX1JFUVVJUkUoW0FNX05MU10pZG5sCisKKyAgZG5sIFJlbGVhc2UgdmVyc2lvbiBvZiB0aGUgZ2V0dGV4dCBtYWNyb3MuIFRoaXMgaXMgdXNlZCB0byBlbnN1cmUgdGhhdAorICBkbmwgdGhlIGdldHRleHQgbWFjcm9zIGFuZCBwby9NYWtlZmlsZS5pbi5pbiBhcmUgaW4gc3luYy4KKyAgQUNfU1VCU1QoW0dFVFRFWFRfTUFDUk9fVkVSU0lPTl0sIFswLjIwXSkKKworICBkbmwgUGVyZm9ybSB0aGUgZm9sbG93aW5nIHRlc3RzIGFsc28gaWYgLS1kaXNhYmxlLW5scyBoYXMgYmVlbiBnaXZlbiwKKyAgZG5sIGJlY2F1c2UgdGhleSBhcmUgbmVlZGVkIGZvciAibWFrZSBkaXN0IiB0byB3b3JrLgorCisgIGRubCBTZWFyY2ggZm9yIEdOVSBtc2dmbXQgaW4gdGhlIFBBVEguCisgIGRubCBUaGUgZmlyc3QgdGVzdCBleGNsdWRlcyBTb2xhcmlzIG1zZ2ZtdCBhbmQgZWFybHkgR05VIG1zZ2ZtdCB2ZXJzaW9ucy4KKyAgZG5sIFRoZSBzZWNvbmQgdGVzdCBleGNsdWRlcyBGcmVlQlNEIG1zZ2ZtdC4KKyAgQU1fUEFUSF9QUk9HX1dJVEhfVEVTVChNU0dGTVQsIG1zZ2ZtdCwKKyAgICBbJGFjX2Rpci8kYWNfd29yZCAtLXN0YXRpc3RpY3MgL2Rldi9udWxsID4mXUFTX01FU1NBR0VfTE9HX0ZEWyAyPiYxICYmCisgICAgIChpZiAkYWNfZGlyLyRhY193b3JkIC0tc3RhdGlzdGljcyAvZGV2L251bGwgMj4mMSA+L2Rldi9udWxsIHwgZ3JlcCB1c2FnZSA+L2Rldi9udWxsOyB0aGVuIGV4aXQgMTsgZWxzZSBleGl0IDA7IGZpKV0sCisgICAgOikKKyAgQUNfUEFUSF9QUk9HKFtHTVNHRk1UXSwgW2dtc2dmbXRdLCBbJE1TR0ZNVF0pCisKKyAgZG5sIFRlc3Qgd2hldGhlciBpdCBpcyBHTlUgbXNnZm10ID49IDAuMTUuCitjaGFuZ2VxdW90ZSgsKWRubAorICBjYXNlIGAkR01TR0ZNVCAtLXZlcnNpb24gfCBzZWQgMXEgfCBzZWQgLWUgJ3MsXlteMC05XSosLCdgIGluCisgICAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtNF0gfCAwLjFbMC00XS4qKSBHTVNHRk1UXzAxNT06IDs7CisgICAgKikgR01TR0ZNVF8wMTU9JEdNU0dGTVQgOzsKKyAgZXNhYworY2hhbmdlcXVvdGUoWyxdKWRubAorICBBQ19TVUJTVChbR01TR0ZNVF8wMTVdKQorCisgIGRubCBTZWFyY2ggZm9yIEdOVSB4Z2V0dGV4dCAwLjEyIG9yIG5ld2VyIGluIHRoZSBQQVRILgorICBkbmwgVGhlIGZpcnN0IHRlc3QgZXhjbHVkZXMgU29sYXJpcyB4Z2V0dGV4dCBhbmQgZWFybHkgR05VIHhnZXR0ZXh0IHZlcnNpb25zLgorICBkbmwgVGhlIHNlY29uZCB0ZXN0IGV4Y2x1ZGVzIEZyZWVCU0QgeGdldHRleHQuCisgIEFNX1BBVEhfUFJPR19XSVRIX1RFU1QoWEdFVFRFWFQsIHhnZXR0ZXh0LAorICAgIFskYWNfZGlyLyRhY193b3JkIC0tb21pdC1oZWFkZXIgLS1jb3B5cmlnaHQtaG9sZGVyPSAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0gL2Rldi9udWxsID4mXUFTX01FU1NBR0VfTE9HX0ZEWyAyPiYxICYmCisgICAgIChpZiAkYWNfZGlyLyRhY193b3JkIC0tb21pdC1oZWFkZXIgLS1jb3B5cmlnaHQtaG9sZGVyPSAtLW1zZ2lkLWJ1Z3MtYWRkcmVzcz0gL2Rldi9udWxsIDI+JjEgPi9kZXYvbnVsbCB8IGdyZXAgdXNhZ2UgPi9kZXYvbnVsbDsgdGhlbiBleGl0IDE7IGVsc2UgZXhpdCAwOyBmaSldLAorICAgIDopCisgIGRubCBSZW1vdmUgbGVmdG92ZXIgZnJvbSBGcmVlQlNEIHhnZXR0ZXh0IGNhbGwuCisgIHJtIC1mIG1lc3NhZ2VzLnBvCisKKyAgZG5sIFRlc3Qgd2hldGhlciBpdCBpcyBHTlUgeGdldHRleHQgPj0gMC4xNS4KK2NoYW5nZXF1b3RlKCwpZG5sCisgIGNhc2UgYCRYR0VUVEVYVCAtLXZlcnNpb24gfCBzZWQgMXEgfCBzZWQgLWUgJ3MsXlteMC05XSosLCdgIGluCisgICAgJycgfCAwLlswLTldIHwgMC5bMC05XS4qIHwgMC4xWzAtNF0gfCAwLjFbMC00XS4qKSBYR0VUVEVYVF8wMTU9OiA7OworICAgICopIFhHRVRURVhUXzAxNT0kWEdFVFRFWFQgOzsKKyAgZXNhYworY2hhbmdlcXVvdGUoWyxdKWRubAorICBBQ19TVUJTVChbWEdFVFRFWFRfMDE1XSkKKworICBkbmwgU2VhcmNoIGZvciBHTlUgbXNnbWVyZ2UgMC4xMSBvciBuZXdlciBpbiB0aGUgUEFUSC4KKyAgQU1fUEFUSF9QUk9HX1dJVEhfVEVTVChNU0dNRVJHRSwgbXNnbWVyZ2UsCisgICAgWyRhY19kaXIvJGFjX3dvcmQgLS11cGRhdGUgLXEgL2Rldi9udWxsIC9kZXYvbnVsbCA+Jl1BU19NRVNTQUdFX0xPR19GRFsgMj4mMV0sIDopCisKKyAgZG5sIFRlc3Qgd2hldGhlciBpdCBpcyBHTlUgbXNnbWVyZ2UgPj0gMC4yMC4KKyAgaWYgTENfQUxMPUMgJE1TR01FUkdFIC0taGVscCB8IGdyZXAgJyAtLWZvci1tc2dmbXQgJyA+L2Rldi9udWxsOyB0aGVuCisgICAgTVNHTUVSR0VfRk9SX01TR0ZNVF9PUFRJT049Jy0tZm9yLW1zZ2ZtdCcKKyAgZWxzZQorICAgIGRubCBUZXN0IHdoZXRoZXIgaXQgaXMgR05VIG1zZ21lcmdlID49IDAuMTIuCisgICAgaWYgTENfQUxMPUMgJE1TR01FUkdFIC0taGVscCB8IGdyZXAgJyAtLW5vLWZ1enp5LW1hdGNoaW5nICcgPi9kZXYvbnVsbDsgdGhlbgorICAgICAgTVNHTUVSR0VfRk9SX01TR0ZNVF9PUFRJT049Jy0tbm8tZnV6enktbWF0Y2hpbmcgLS1uby1sb2NhdGlvbiAtLXF1aWV0JworICAgIGVsc2UKKyAgICAgIGRubCBXaXRoIHRoZXNlIG9sZCB2ZXJzaW9ucywgJChNU0dNRVJHRSkgJChNU0dNRVJHRV9GT1JfTVNHRk1UX09QVElPTikgaXMKKyAgICAgIGRubCBzbG93LiBCdXQgdGhpcyBpcyBub3QgYSBiaWcgcHJvYmxlbSwgYXMgc3VjaCBvbGQgZ2V0dGV4dCB2ZXJzaW9ucyBhcmUKKyAgICAgIGRubCBoYXJkbHkgaW4gdXNlIGFueSBtb3JlLgorICAgICAgTVNHTUVSR0VfRk9SX01TR0ZNVF9PUFRJT049Jy0tbm8tbG9jYXRpb24gLS1xdWlldCcKKyAgICBmaQorICBmaQorICBBQ19TVUJTVChbTVNHTUVSR0VfRk9SX01TR0ZNVF9PUFRJT05dKQorCisgIGRubCBTdXBwb3J0IGZvciBBTV9YR0VUVEVYVF9PUFRJT04uCisgIHRlc3QgLW4gIiR7WEdFVFRFWFRfRVhUUkFfT1BUSU9OUytzZXR9IiB8fCBYR0VUVEVYVF9FWFRSQV9PUFRJT05TPQorICBBQ19TVUJTVChbWEdFVFRFWFRfRVhUUkFfT1BUSU9OU10pCisKKyAgQUNfQ09ORklHX0NPTU1BTkRTKFtwby1kaXJlY3Rvcmllc10sIFtbCisgICAgZm9yIGFjX2ZpbGUgaW4gJENPTkZJR19GSUxFUzsgZG8KKyAgICAgICMgU3VwcG9ydCAib3V0ZmlsZVs6aW5maWxlWzppbmZpbGUuLi5dXSIKKyAgICAgIGNhc2UgIiRhY19maWxlIiBpbgorICAgICAgICAqOiopIGFjX2ZpbGU9YGVjaG8gIiRhY19maWxlInxzZWQgJ3MlOi4qJSUnYCA7OworICAgICAgZXNhYworICAgICAgIyBQTyBkaXJlY3RvcmllcyBoYXZlIGEgTWFrZWZpbGUuaW4gZ2VuZXJhdGVkIGZyb20gTWFrZWZpbGUuaW4uaW4uCisgICAgICBjYXNlICIkYWNfZmlsZSIgaW4gKi9NYWtlZmlsZS5pbikKKyAgICAgICAgIyBBZGp1c3QgYSByZWxhdGl2ZSBzcmNkaXIuCisgICAgICAgIGFjX2Rpcj1gZWNobyAiJGFjX2ZpbGUifHNlZCAncyUvW14vXVteL10qJCUlJ2AKKyAgICAgICAgYWNfZGlyX3N1ZmZpeD0vYGVjaG8gIiRhY19kaXIifHNlZCAncyVeXC4vJSUnYAorICAgICAgICBhY19kb3RzPWBlY2hvICIkYWNfZGlyX3N1ZmZpeCJ8c2VkICdzJS9bXi9dKiUuLi8lZydgCisgICAgICAgICMgSW4gYXV0b2NvbmYtMi4xMyBpdCBpcyBjYWxsZWQgJGFjX2dpdmVuX3NyY2Rpci4KKyAgICAgICAgIyBJbiBhdXRvY29uZi0yLjUwIGl0IGlzIGNhbGxlZCAkc3JjZGlyLgorICAgICAgICB0ZXN0IC1uICIkYWNfZ2l2ZW5fc3JjZGlyIiB8fCBhY19naXZlbl9zcmNkaXI9IiRzcmNkaXIiCisgICAgICAgIGNhc2UgIiRhY19naXZlbl9zcmNkaXIiIGluCisgICAgICAgICAgLikgIHRvcF9zcmNkaXI9YGVjaG8gJGFjX2RvdHN8c2VkICdzJS8kJSUnYCA7OworICAgICAgICAgIC8qKSB0b3Bfc3JjZGlyPSIkYWNfZ2l2ZW5fc3JjZGlyIiA7OworICAgICAgICAgICopICB0b3Bfc3JjZGlyPSIkYWNfZG90cyRhY19naXZlbl9zcmNkaXIiIDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgIyBUcmVhdCBhIGRpcmVjdG9yeSBhcyBhIFBPIGRpcmVjdG9yeSBpZiBhbmQgb25seSBpZiBpdCBoYXMgYQorICAgICAgICAjIFBPVEZJTEVTLmluIGZpbGUuIFRoaXMgYWxsb3dzIHBhY2thZ2VzIHRvIGhhdmUgbXVsdGlwbGUgUE8KKyAgICAgICAgIyBkaXJlY3RvcmllcyB1bmRlciBkaWZmZXJlbnQgbmFtZXMgb3IgaW4gZGlmZmVyZW50IGxvY2F0aW9ucy4KKyAgICAgICAgaWYgdGVzdCAtZiAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL1BPVEZJTEVTLmluIjsgdGhlbgorICAgICAgICAgIHJtIC1mICIkYWNfZGlyL1BPVEZJTEVTIgorICAgICAgICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBjcmVhdGluZyAkYWNfZGlyL1BPVEZJTEVTIiB8fCBlY2hvICJjcmVhdGluZyAkYWNfZGlyL1BPVEZJTEVTIgorICAgICAgICAgIGd0X3RhYj1gcHJpbnRmICdcdCdgCisgICAgICAgICAgY2F0ICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvUE9URklMRVMuaW4iIHwgc2VkIC1lICIvXiMvZCIgLWUgIi9eWyAke2d0X3RhYn1dKlwkL2QiIC1lICJzLC4qLCAgICAgJHRvcF9zcmNkaXIvJiBcXFxcLCIgfCBzZWQgLWUgIlwkcy9cKC4qXCkgXFxcXC9cMS8iID4gIiRhY19kaXIvUE9URklMRVMiCisgICAgICAgICAgUE9NQUtFRklMRURFUFM9IlBPVEZJTEVTLmluIgorICAgICAgICAgICMgQUxMX0xJTkdVQVMsIFBPRklMRVMsIFVQREFURVBPRklMRVMsIERVTU1ZUE9GSUxFUywgR01PRklMRVMgZGVwZW5kCisgICAgICAgICAgIyBvbiAkYWNfZGlyIGJ1dCBkb24ndCBkZXBlbmQgb24gdXNlci1zcGVjaWZpZWQgY29uZmlndXJhdGlvbgorICAgICAgICAgICMgcGFyYW1ldGVycy4KKyAgICAgICAgICBpZiB0ZXN0IC1mICIkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvTElOR1VBUyI7IHRoZW4KKyAgICAgICAgICAgICMgVGhlIExJTkdVQVMgZmlsZSBjb250YWlucyB0aGUgc2V0IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXMuCisgICAgICAgICAgICBpZiB0ZXN0IC1uICIkT0JTT0xFVEVfQUxMX0xJTkdVQVMiOyB0aGVuCisgICAgICAgICAgICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBzZXR0aW5nIEFMTF9MSU5HVUFTIGluIGNvbmZpZ3VyZS5pbiBpcyBvYnNvbGV0ZSIgfHwgZWNobyAic2V0dGluZyBBTExfTElOR1VBUyBpbiBjb25maWd1cmUuaW4gaXMgb2Jzb2xldGUiCisgICAgICAgICAgICBmaQorICAgICAgICAgICAgQUxMX0xJTkdVQVM9YHNlZCAtZSAiL14jL2QiIC1lICJzLyMuKi8vIiAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL0xJTkdVQVMiYAorICAgICAgICAgICAgUE9NQUtFRklMRURFUFM9IiRQT01BS0VGSUxFREVQUyBMSU5HVUFTIgorICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICMgVGhlIHNldCBvZiBhdmFpbGFibGUgbGFuZ3VhZ2VzIHdhcyBnaXZlbiBpbiBjb25maWd1cmUuaW4uCisgICAgICAgICAgICBBTExfTElOR1VBUz0kT0JTT0xFVEVfQUxMX0xJTkdVQVMKKyAgICAgICAgICBmaQorICAgICAgICAgICMgQ29tcHV0ZSBQT0ZJTEVTCisgICAgICAgICAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQobGFuZykucG8pCisgICAgICAgICAgIyBDb21wdXRlIFVQREFURVBPRklMRVMKKyAgICAgICAgICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKGxhbmcpLnBvLXVwZGF0ZSkKKyAgICAgICAgICAjIENvbXB1dGUgRFVNTVlQT0ZJTEVTCisgICAgICAgICAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChsYW5nKS5ub3ApCisgICAgICAgICAgIyBDb21wdXRlIEdNT0ZJTEVTCisgICAgICAgICAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQobGFuZykuZ21vKQorICAgICAgICAgIGNhc2UgIiRhY19naXZlbl9zcmNkaXIiIGluCisgICAgICAgICAgICAuKSBzcmNkaXJwcmU9IDs7CisgICAgICAgICAgICAqKSBzcmNkaXJwcmU9JyQoc3JjZGlyKS8nIDs7CisgICAgICAgICAgZXNhYworICAgICAgICAgIFBPRklMRVM9CisgICAgICAgICAgVVBEQVRFUE9GSUxFUz0KKyAgICAgICAgICBEVU1NWVBPRklMRVM9CisgICAgICAgICAgR01PRklMRVM9CisgICAgICAgICAgZm9yIGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbworICAgICAgICAgICAgUE9GSUxFUz0iJFBPRklMRVMgJHNyY2RpcnByZSRsYW5nLnBvIgorICAgICAgICAgICAgVVBEQVRFUE9GSUxFUz0iJFVQREFURVBPRklMRVMgJGxhbmcucG8tdXBkYXRlIgorICAgICAgICAgICAgRFVNTVlQT0ZJTEVTPSIkRFVNTVlQT0ZJTEVTICRsYW5nLm5vcCIKKyAgICAgICAgICAgIEdNT0ZJTEVTPSIkR01PRklMRVMgJHNyY2RpcnByZSRsYW5nLmdtbyIKKyAgICAgICAgICBkb25lCisgICAgICAgICAgIyBDQVRBTE9HUyBkZXBlbmRzIG9uIGJvdGggJGFjX2RpciBhbmQgdGhlIHVzZXIncyBMSU5HVUFTCisgICAgICAgICAgIyBlbnZpcm9ubWVudCB2YXJpYWJsZS4KKyAgICAgICAgICBJTlNUX0xJTkdVQVM9CisgICAgICAgICAgaWYgdGVzdCAtbiAiJEFMTF9MSU5HVUFTIjsgdGhlbgorICAgICAgICAgICAgZm9yIHByZXNlbnRsYW5nIGluICRBTExfTElOR1VBUzsgZG8KKyAgICAgICAgICAgICAgdXNlaXQ9bm8KKyAgICAgICAgICAgICAgaWYgdGVzdCAiJVVOU0VUJSIgIT0gIiRMSU5HVUFTIjsgdGhlbgorICAgICAgICAgICAgICAgIGRlc2lyZWRsYW5ndWFnZXM9IiRMSU5HVUFTIgorICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgZGVzaXJlZGxhbmd1YWdlcz0iJEFMTF9MSU5HVUFTIgorICAgICAgICAgICAgICBmaQorICAgICAgICAgICAgICBmb3IgZGVzaXJlZGxhbmcgaW4gJGRlc2lyZWRsYW5ndWFnZXM7IGRvCisgICAgICAgICAgICAgICAgIyBVc2UgdGhlIHByZXNlbnRsYW5nIGNhdGFsb2cgaWYgZGVzaXJlZGxhbmcgaXMKKyAgICAgICAgICAgICAgICAjICAgYS4gZXF1YWwgdG8gcHJlc2VudGxhbmcsIG9yCisgICAgICAgICAgICAgICAgIyAgIGIuIGEgdmFyaWFudCBvZiBwcmVzZW50bGFuZyAoYmVjYXVzZSBpbiB0aGlzIGNhc2UsCisgICAgICAgICAgICAgICAgIyAgICAgIHByZXNlbnRsYW5nIGNhbiBiZSB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIG1lc3NhZ2VzCisgICAgICAgICAgICAgICAgIyAgICAgIHdoaWNoIGFyZSBub3QgdHJhbnNsYXRlZCBpbiB0aGUgZGVzaXJlZGxhbmcgY2F0YWxvZykuCisgICAgICAgICAgICAgICAgY2FzZSAiJGRlc2lyZWRsYW5nIiBpbgorICAgICAgICAgICAgICAgICAgIiRwcmVzZW50bGFuZyIqKSB1c2VpdD15ZXM7OworICAgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgICAgZG9uZQorICAgICAgICAgICAgICBpZiB0ZXN0ICR1c2VpdCA9IHllczsgdGhlbgorICAgICAgICAgICAgICAgIElOU1RfTElOR1VBUz0iJElOU1RfTElOR1VBUyAkcHJlc2VudGxhbmciCisgICAgICAgICAgICAgIGZpCisgICAgICAgICAgICBkb25lCisgICAgICAgICAgZmkKKyAgICAgICAgICBDQVRBTE9HUz0KKyAgICAgICAgICBpZiB0ZXN0IC1uICIkSU5TVF9MSU5HVUFTIjsgdGhlbgorICAgICAgICAgICAgZm9yIGxhbmcgaW4gJElOU1RfTElOR1VBUzsgZG8KKyAgICAgICAgICAgICAgQ0FUQUxPR1M9IiRDQVRBTE9HUyAkbGFuZy5nbW8iCisgICAgICAgICAgICBkb25lCisgICAgICAgICAgZmkKKyAgICAgICAgICB0ZXN0IC1uICIkYXNfbWUiICYmIGVjaG8gIiRhc19tZTogY3JlYXRpbmcgJGFjX2Rpci9NYWtlZmlsZSIgfHwgZWNobyAiY3JlYXRpbmcgJGFjX2Rpci9NYWtlZmlsZSIKKyAgICAgICAgICBzZWQgLWUgIi9eUE9URklMRVMgPS9yICRhY19kaXIvUE9URklMRVMiIC1lICIvXiMgTWFrZXZhcnMvciAkYWNfZ2l2ZW5fc3JjZGlyLyRhY19kaXIvTWFrZXZhcnMiIC1lICJzfEBQT0ZJTEVTQHwkUE9GSUxFU3xnIiAtZSAic3xAVVBEQVRFUE9GSUxFU0B8JFVQREFURVBPRklMRVN8ZyIgLWUgInN8QERVTU1ZUE9GSUxFU0B8JERVTU1ZUE9GSUxFU3xnIiAtZSAic3xAR01PRklMRVNAfCRHTU9GSUxFU3xnIiAtZSAic3xAQ0FUQUxPR1NAfCRDQVRBTE9HU3xnIiAtZSAic3xAUE9NQUtFRklMRURFUFNAfCRQT01BS0VGSUxFREVQU3xnIiAiJGFjX2Rpci9NYWtlZmlsZS5pbiIgPiAiJGFjX2Rpci9NYWtlZmlsZSIKKyAgICAgICAgICBmb3IgZiBpbiAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyIi9SdWxlcy0qOyBkbworICAgICAgICAgICAgaWYgdGVzdCAtZiAiJGYiOyB0aGVuCisgICAgICAgICAgICAgIGNhc2UgIiRmIiBpbgorICAgICAgICAgICAgICAgICoub3JpZyB8ICouYmFrIHwgKn4pIDs7CisgICAgICAgICAgICAgICAgKikgY2F0ICIkZiIgPj4gIiRhY19kaXIvTWFrZWZpbGUiIDs7CisgICAgICAgICAgICAgIGVzYWMKKyAgICAgICAgICAgIGZpCisgICAgICAgICAgZG9uZQorICAgICAgICBmaQorICAgICAgICA7OworICAgICAgZXNhYworICAgIGRvbmVdXSwKKyAgIFsjIENhcHR1cmUgdGhlIHZhbHVlIG9mIG9ic29sZXRlIEFMTF9MSU5HVUFTIGJlY2F1c2Ugd2UgbmVlZCBpdCB0byBjb21wdXRlCisgICAgIyBQT0ZJTEVTLCBVUERBVEVQT0ZJTEVTLCBEVU1NWVBPRklMRVMsIEdNT0ZJTEVTLCBDQVRBTE9HUy4KKyAgICBPQlNPTEVURV9BTExfTElOR1VBUz0iJEFMTF9MSU5HVUFTIgorICAgICMgQ2FwdHVyZSB0aGUgdmFsdWUgb2YgTElOR1VBUyBiZWNhdXNlIHdlIG5lZWQgaXQgdG8gY29tcHV0ZSBDQVRBTE9HUy4KKyAgICBMSU5HVUFTPSIke0xJTkdVQVMtJVVOU0VUJX0iCisgICBdKQorXSkKKworZG5sIFBvc3Rwcm9jZXNzZXMgYSBNYWtlZmlsZSBpbiBhIGRpcmVjdG9yeSBjb250YWluaW5nIFBPIGZpbGVzLgorQUNfREVGVU4oW0FNX1BPU1RQUk9DRVNTX1BPX01BS0VGSUxFXSwKK1sKKyAgIyBXaGVuIHRoaXMgY29kZSBpcyBydW4sIGluIGNvbmZpZy5zdGF0dXMsIHR3byB2YXJpYWJsZXMgaGF2ZSBhbHJlYWR5IGJlZW4KKyAgIyBzZXQ6CisgICMgLSBPQlNPTEVURV9BTExfTElOR1VBUyBpcyB0aGUgdmFsdWUgb2YgTElOR1VBUyBzZXQgaW4gY29uZmlndXJlLmluLAorICAjIC0gTElOR1VBUyBpcyB0aGUgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIExJTkdVQVMgYXQgY29uZmlndXJlCisgICMgICB0aW1lLgorCitjaGFuZ2VxdW90ZSgsKWRubAorICAjIEFkanVzdCBhIHJlbGF0aXZlIHNyY2Rpci4KKyAgYWNfZGlyPWBlY2hvICIkYWNfZmlsZSJ8c2VkICdzJS9bXi9dW14vXSokJSUnYAorICBhY19kaXJfc3VmZml4PS9gZWNobyAiJGFjX2RpciJ8c2VkICdzJV5cLi8lJSdgCisgIGFjX2RvdHM9YGVjaG8gIiRhY19kaXJfc3VmZml4InxzZWQgJ3MlL1teL10qJS4uLyVnJ2AKKyAgIyBJbiBhdXRvY29uZi0yLjEzIGl0IGlzIGNhbGxlZCAkYWNfZ2l2ZW5fc3JjZGlyLgorICAjIEluIGF1dG9jb25mLTIuNTAgaXQgaXMgY2FsbGVkICRzcmNkaXIuCisgIHRlc3QgLW4gIiRhY19naXZlbl9zcmNkaXIiIHx8IGFjX2dpdmVuX3NyY2Rpcj0iJHNyY2RpciIKKyAgY2FzZSAiJGFjX2dpdmVuX3NyY2RpciIgaW4KKyAgICAuKSAgdG9wX3NyY2Rpcj1gZWNobyAkYWNfZG90c3xzZWQgJ3MlLyQlJSdgIDs7CisgICAgLyopIHRvcF9zcmNkaXI9IiRhY19naXZlbl9zcmNkaXIiIDs7CisgICAgKikgIHRvcF9zcmNkaXI9IiRhY19kb3RzJGFjX2dpdmVuX3NyY2RpciIgOzsKKyAgZXNhYworCisgICMgRmluZCBhIHdheSB0byBlY2hvIHN0cmluZ3Mgd2l0aG91dCBpbnRlcnByZXRpbmcgYmFja3NsYXNoLgorICBpZiB0ZXN0ICJYYChlY2hvICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JzsgdGhlbgorICAgIGd0X2VjaG89J2VjaG8nCisgIGVsc2UKKyAgICBpZiB0ZXN0ICJYYChwcmludGYgJyVzXG4nICdcdCcpIDI+L2Rldi9udWxsYCIgPSAnWFx0JzsgdGhlbgorICAgICAgZ3RfZWNobz0ncHJpbnRmICVzXG4nCisgICAgZWxzZQorICAgICAgZWNob19mdW5jICgpIHsKKyAgICAgICAgY2F0IDw8RU9UCiskKgorRU9UCisgICAgICB9CisgICAgICBndF9lY2hvPSdlY2hvX2Z1bmMnCisgICAgZmkKKyAgZmkKKworICAjIEEgc2VkIHNjcmlwdCB0aGF0IGV4dHJhY3RzIHRoZSB2YWx1ZSBvZiBWQVJJQUJMRSBmcm9tIGEgTWFrZWZpbGUuCisgIHRhYj1gcHJpbnRmICdcdCdgCisgIHNlZF94X3ZhcmlhYmxlPScKKyMgVGVzdCBpZiB0aGUgaG9sZCBzcGFjZSBpcyBlbXB0eS4KK3gKK3MvUC9QLworeAordGEKKyMgWWVzIGl0IHdhcyBlbXB0eS4gTG9vayBpZiB3ZSBoYXZlIHRoZSBleHBlY3RlZCB2YXJpYWJsZSBkZWZpbml0aW9uLgorL15bJyIke3RhYn0iJyBdKlZBUklBQkxFWyciJHt0YWJ9IicgXSo9L3sKKyAgIyBTZWVuIHRoZSBmaXJzdCBsaW5lIG9mIHRoZSB2YXJpYWJsZSBkZWZpbml0aW9uLgorICBzL15bJyIke3RhYn0iJyBdKlZBUklBQkxFWyciJHt0YWJ9IicgXSo9Ly8KKyAgYmEKK30KK2JkCis6YQorIyBIZXJlIHdlIGFyZSBwcm9jZXNzaW5nIGEgbGluZSBmcm9tIHRoZSB2YXJpYWJsZSBkZWZpbml0aW9uLgorIyBSZW1vdmUgY29tbWVudCwgbW9yZSBwcmVjaXNlbHkgcmVwbGFjZSBpdCB3aXRoIGEgc3BhY2UuCitzLyMuKiQvIC8KKyMgU2VlIGlmIHRoZSBsaW5lIGVuZHMgaW4gYSBiYWNrc2xhc2guCit0YgorOmIKK3MvXFwkLy8KKyMgUHJpbnQgdGhlIGxpbmUsIHdpdGhvdXQgdGhlIHRyYWlsaW5nIGJhY2tzbGFzaC4KK3AKK3RjCisjIFRoZXJlIHdhcyBubyB0cmFpbGluZyBiYWNrc2xhc2guIFRoZSBlbmQgb2YgdGhlIHZhcmlhYmxlIGRlZmluaXRpb24gaXMKKyMgcmVhY2hlZC4gQ2xlYXIgdGhlIGhvbGQgc3BhY2UuCitzL14uKiQvLworeAorYmQKKzpjCisjIEEgdHJhaWxpbmcgYmFja3NsYXNoIG1lYW5zIHRoYXQgdGhlIHZhcmlhYmxlIGRlZmluaXRpb24gY29udGludWVzIGluIHRoZQorIyBuZXh0IGxpbmUuIFB1dCBhIG5vbmVtcHR5IHN0cmluZyBpbnRvIHRoZSBob2xkIHNwYWNlIHRvIGluZGljYXRlIHRoaXMuCitzL14uKiQvUC8KK3gKKzpkCisnCitjaGFuZ2VxdW90ZShbLF0pZG5sCisKKyAgIyBTZXQgUE9URklMRVMgdG8gdGhlIHZhbHVlIG9mIHRoZSBNYWtlZmlsZSB2YXJpYWJsZSBQT1RGSUxFUy4KKyAgc2VkX3hfUE9URklMRVM9YCRndF9lY2hvICIkc2VkX3hfdmFyaWFibGUiIHwgc2VkIC1lICcvXiAqIy9kJyAtZSAncy9WQVJJQUJMRS9QT1RGSUxFUy9nJ2AKKyAgUE9URklMRVM9YHNlZCAtbiAtZSAiJHNlZF94X1BPVEZJTEVTIiA8ICIkYWNfZmlsZSJgCisgICMgQ29tcHV0ZSBQT1RGSUxFU19ERVBTIGFzCisgICMgICAkKGZvcmVhY2ggZmlsZSwgJChQT1RGSUxFUyksICQodG9wX3NyY2RpcikvJChmaWxlKSkKKyAgUE9URklMRVNfREVQUz0KKyAgZm9yIGZpbGUgaW4gJFBPVEZJTEVTOyBkbworICAgIFBPVEZJTEVTX0RFUFM9IiRQT1RGSUxFU19ERVBTICInJCh0b3Bfc3JjZGlyKS8nIiRmaWxlIgorICBkb25lCisgIFBPTUFLRUZJTEVERVBTPSIiCisKKyAgaWYgdGVzdCAtbiAiJE9CU09MRVRFX0FMTF9MSU5HVUFTIjsgdGhlbgorICAgIHRlc3QgLW4gIiRhc19tZSIgJiYgZWNobyAiJGFzX21lOiBzZXR0aW5nIEFMTF9MSU5HVUFTIGluIGNvbmZpZ3VyZS5pbiBpcyBvYnNvbGV0ZSIgfHwgZWNobyAic2V0dGluZyBBTExfTElOR1VBUyBpbiBjb25maWd1cmUuaW4gaXMgb2Jzb2xldGUiCisgIGZpCisgIGlmIHRlc3QgLWYgIiRhY19naXZlbl9zcmNkaXIvJGFjX2Rpci9MSU5HVUFTIjsgdGhlbgorICAgICMgVGhlIExJTkdVQVMgZmlsZSBjb250YWlucyB0aGUgc2V0IG9mIGF2YWlsYWJsZSBsYW5ndWFnZXMuCisgICAgQUxMX0xJTkdVQVM9YHNlZCAtZSAiL14jL2QiIC1lICJzLyMuKi8vIiAiJGFjX2dpdmVuX3NyY2Rpci8kYWNfZGlyL0xJTkdVQVMiYAorICAgIFBPTUFLRUZJTEVERVBTPSIkUE9NQUtFRklMRURFUFMgTElOR1VBUyIKKyAgZWxzZQorICAgICMgU2V0IEFMTF9MSU5HVUFTIHRvIHRoZSB2YWx1ZSBvZiB0aGUgTWFrZWZpbGUgdmFyaWFibGUgTElOR1VBUy4KKyAgICBzZWRfeF9MSU5HVUFTPWAkZ3RfZWNobyAiJHNlZF94X3ZhcmlhYmxlIiB8IHNlZCAtZSAnL14gKiMvZCcgLWUgJ3MvVkFSSUFCTEUvTElOR1VBUy9nJ2AKKyAgICBBTExfTElOR1VBUz1gc2VkIC1uIC1lICIkc2VkX3hfTElOR1VBUyIgPCAiJGFjX2ZpbGUiYAorICBmaQorICAjIENvbXB1dGUgUE9GSUxFUworICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChsYW5nKS5wbykKKyAgIyBDb21wdXRlIFVQREFURVBPRklMRVMKKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChsYW5nKS5wby11cGRhdGUpCisgICMgQ29tcHV0ZSBEVU1NWVBPRklMRVMKKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChsYW5nKS5ub3ApCisgICMgQ29tcHV0ZSBHTU9GSUxFUworICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChsYW5nKS5nbW8pCisgICMgQ29tcHV0ZSBQUk9QRVJUSUVTRklMRVMKKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQoRE9NQUlOKV8kKGxhbmcpLnByb3BlcnRpZXMpCisgICMgQ29tcHV0ZSBDTEFTU0ZJTEVTCisgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKERPTUFJTilfJChsYW5nKS5jbGFzcykKKyAgIyBDb21wdXRlIFFNRklMRVMKKyAgIyBhcyAgICAgICQoZm9yZWFjaCBsYW5nLCAkKEFMTF9MSU5HVUFTKSwgJChzcmNkaXIpLyQobGFuZykucW0pCisgICMgQ29tcHV0ZSBNU0dGSUxFUworICAjIGFzICAgICAgJChmb3JlYWNoIGxhbmcsICQoQUxMX0xJTkdVQVMpLCAkKHNyY2RpcikvJChmcm9iICQobGFuZykpLm1zZykKKyAgIyBDb21wdXRlIFJFU09VUkNFU0RMTEZJTEVTCisgICMgYXMgICAgICAkKGZvcmVhY2ggbGFuZywgJChBTExfTElOR1VBUyksICQoc3JjZGlyKS8kKGZyb2IgJChsYW5nKSkvJChET01BSU4pLnJlc291cmNlcy5kbGwpCisgIGNhc2UgIiRhY19naXZlbl9zcmNkaXIiIGluCisgICAgLikgc3JjZGlycHJlPSA7OworICAgICopIHNyY2RpcnByZT0nJChzcmNkaXIpLycgOzsKKyAgZXNhYworICBQT0ZJTEVTPQorICBVUERBVEVQT0ZJTEVTPQorICBEVU1NWVBPRklMRVM9CisgIEdNT0ZJTEVTPQorICBQUk9QRVJUSUVTRklMRVM9CisgIENMQVNTRklMRVM9CisgIFFNRklMRVM9CisgIE1TR0ZJTEVTPQorICBSRVNPVVJDRVNETExGSUxFUz0KKyAgZm9yIGxhbmcgaW4gJEFMTF9MSU5HVUFTOyBkbworICAgIFBPRklMRVM9IiRQT0ZJTEVTICRzcmNkaXJwcmUkbGFuZy5wbyIKKyAgICBVUERBVEVQT0ZJTEVTPSIkVVBEQVRFUE9GSUxFUyAkbGFuZy5wby11cGRhdGUiCisgICAgRFVNTVlQT0ZJTEVTPSIkRFVNTVlQT0ZJTEVTICRsYW5nLm5vcCIKKyAgICBHTU9GSUxFUz0iJEdNT0ZJTEVTICRzcmNkaXJwcmUkbGFuZy5nbW8iCisgICAgUFJPUEVSVElFU0ZJTEVTPSIkUFJPUEVSVElFU0ZJTEVTIFwkKHNyY2RpcikvXCQoRE9NQUlOKV8kbGFuZy5wcm9wZXJ0aWVzIgorICAgIENMQVNTRklMRVM9IiRDTEFTU0ZJTEVTIFwkKHNyY2RpcikvXCQoRE9NQUlOKV8kbGFuZy5jbGFzcyIKKyAgICBRTUZJTEVTPSIkUU1GSUxFUyAkc3JjZGlycHJlJGxhbmcucW0iCisgICAgZnJvYmJlZGxhbmc9YGVjaG8gJGxhbmcgfCBzZWQgLWUgJ3MvXC4uKiQvLycgLWUgJ3kvQUJDREVGR0hJSktMTU5PUFFSU1RVVldYWVovYWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXovJ2AKKyAgICBNU0dGSUxFUz0iJE1TR0ZJTEVTICRzcmNkaXJwcmUkZnJvYmJlZGxhbmcubXNnIgorICAgIGZyb2JiZWRsYW5nPWBlY2hvICRsYW5nIHwgc2VkIC1lICdzL18vLS9nJyAtZSAncy9ec3ItQ1Mvc3ItU1AvJyAtZSAncy9AbGF0aW4kLy1MYXRuLycgLWUgJ3MvQGN5cmlsbGljJC8tQ3lybC8nIC1lICdzL15zci1TUCQvc3ItU1AtTGF0bi8nIC1lICdzL151ei1VWiQvdXotVVotTGF0bi8nYAorICAgIFJFU09VUkNFU0RMTEZJTEVTPSIkUkVTT1VSQ0VTRExMRklMRVMgJHNyY2RpcnByZSRmcm9iYmVkbGFuZy9cJChET01BSU4pLnJlc291cmNlcy5kbGwiCisgIGRvbmUKKyAgIyBDQVRBTE9HUyBkZXBlbmRzIG9uIGJvdGggJGFjX2RpciBhbmQgdGhlIHVzZXIncyBMSU5HVUFTCisgICMgZW52aXJvbm1lbnQgdmFyaWFibGUuCisgIElOU1RfTElOR1VBUz0KKyAgaWYgdGVzdCAtbiAiJEFMTF9MSU5HVUFTIjsgdGhlbgorICAgIGZvciBwcmVzZW50bGFuZyBpbiAkQUxMX0xJTkdVQVM7IGRvCisgICAgICB1c2VpdD1ubworICAgICAgaWYgdGVzdCAiJVVOU0VUJSIgIT0gIiRMSU5HVUFTIjsgdGhlbgorICAgICAgICBkZXNpcmVkbGFuZ3VhZ2VzPSIkTElOR1VBUyIKKyAgICAgIGVsc2UKKyAgICAgICAgZGVzaXJlZGxhbmd1YWdlcz0iJEFMTF9MSU5HVUFTIgorICAgICAgZmkKKyAgICAgIGZvciBkZXNpcmVkbGFuZyBpbiAkZGVzaXJlZGxhbmd1YWdlczsgZG8KKyAgICAgICAgIyBVc2UgdGhlIHByZXNlbnRsYW5nIGNhdGFsb2cgaWYgZGVzaXJlZGxhbmcgaXMKKyAgICAgICAgIyAgIGEuIGVxdWFsIHRvIHByZXNlbnRsYW5nLCBvcgorICAgICAgICAjICAgYi4gYSB2YXJpYW50IG9mIHByZXNlbnRsYW5nIChiZWNhdXNlIGluIHRoaXMgY2FzZSwKKyAgICAgICAgIyAgICAgIHByZXNlbnRsYW5nIGNhbiBiZSB1c2VkIGFzIGEgZmFsbGJhY2sgZm9yIG1lc3NhZ2VzCisgICAgICAgICMgICAgICB3aGljaCBhcmUgbm90IHRyYW5zbGF0ZWQgaW4gdGhlIGRlc2lyZWRsYW5nIGNhdGFsb2cpLgorICAgICAgICBjYXNlICIkZGVzaXJlZGxhbmciIGluCisgICAgICAgICAgIiRwcmVzZW50bGFuZyIqKSB1c2VpdD15ZXM7OworICAgICAgICBlc2FjCisgICAgICBkb25lCisgICAgICBpZiB0ZXN0ICR1c2VpdCA9IHllczsgdGhlbgorICAgICAgICBJTlNUX0xJTkdVQVM9IiRJTlNUX0xJTkdVQVMgJHByZXNlbnRsYW5nIgorICAgICAgZmkKKyAgICBkb25lCisgIGZpCisgIENBVEFMT0dTPQorICBKQVZBQ0FUQUxPR1M9CisgIFFUQ0FUQUxPR1M9CisgIFRDTENBVEFMT0dTPQorICBDU0hBUlBDQVRBTE9HUz0KKyAgaWYgdGVzdCAtbiAiJElOU1RfTElOR1VBUyI7IHRoZW4KKyAgICBmb3IgbGFuZyBpbiAkSU5TVF9MSU5HVUFTOyBkbworICAgICAgQ0FUQUxPR1M9IiRDQVRBTE9HUyAkbGFuZy5nbW8iCisgICAgICBKQVZBQ0FUQUxPR1M9IiRKQVZBQ0FUQUxPR1MgXCQoRE9NQUlOKV8kbGFuZy5wcm9wZXJ0aWVzIgorICAgICAgUVRDQVRBTE9HUz0iJFFUQ0FUQUxPR1MgJGxhbmcucW0iCisgICAgICBmcm9iYmVkbGFuZz1gZWNobyAkbGFuZyB8IHNlZCAtZSAncy9cLi4qJC8vJyAtZSAneS9BQkNERUZHSElKS0xNTk9QUVJTVFVWV1hZWi9hYmNkZWZnaGlqa2xtbm9wcXJzdHV2d3h5ei8nYAorICAgICAgVENMQ0FUQUxPR1M9IiRUQ0xDQVRBTE9HUyAkZnJvYmJlZGxhbmcubXNnIgorICAgICAgZnJvYmJlZGxhbmc9YGVjaG8gJGxhbmcgfCBzZWQgLWUgJ3MvXy8tL2cnIC1lICdzL15zci1DUy9zci1TUC8nIC1lICdzL0BsYXRpbiQvLUxhdG4vJyAtZSAncy9AY3lyaWxsaWMkLy1DeXJsLycgLWUgJ3MvXnNyLVNQJC9zci1TUC1MYXRuLycgLWUgJ3MvXnV6LVVaJC91ei1VWi1MYXRuLydgCisgICAgICBDU0hBUlBDQVRBTE9HUz0iJENTSEFSUENBVEFMT0dTICRmcm9iYmVkbGFuZy9cJChET01BSU4pLnJlc291cmNlcy5kbGwiCisgICAgZG9uZQorICBmaQorCisgIHNlZCAtZSAic3xAUE9URklMRVNfREVQU0B8JFBPVEZJTEVTX0RFUFN8ZyIgLWUgInN8QFBPRklMRVNAfCRQT0ZJTEVTfGciIC1lICJzfEBVUERBVEVQT0ZJTEVTQHwkVVBEQVRFUE9GSUxFU3xnIiAtZSAic3xARFVNTVlQT0ZJTEVTQHwkRFVNTVlQT0ZJTEVTfGciIC1lICJzfEBHTU9GSUxFU0B8JEdNT0ZJTEVTfGciIC1lICJzfEBQUk9QRVJUSUVTRklMRVNAfCRQUk9QRVJUSUVTRklMRVN8ZyIgLWUgInN8QENMQVNTRklMRVNAfCRDTEFTU0ZJTEVTfGciIC1lICJzfEBRTUZJTEVTQHwkUU1GSUxFU3xnIiAtZSAic3xATVNHRklMRVNAfCRNU0dGSUxFU3xnIiAtZSAic3xAUkVTT1VSQ0VTRExMRklMRVNAfCRSRVNPVVJDRVNETExGSUxFU3xnIiAtZSAic3xAQ0FUQUxPR1NAfCRDQVRBTE9HU3xnIiAtZSAic3xASkFWQUNBVEFMT0dTQHwkSkFWQUNBVEFMT0dTfGciIC1lICJzfEBRVENBVEFMT0dTQHwkUVRDQVRBTE9HU3xnIiAtZSAic3xAVENMQ0FUQUxPR1NAfCRUQ0xDQVRBTE9HU3xnIiAtZSAic3xAQ1NIQVJQQ0FUQUxPR1NAfCRDU0hBUlBDQVRBTE9HU3xnIiAtZSAncyxeI2Rpc3RkaXI6LGRpc3RkaXI6LCcgPCAiJGFjX2ZpbGUiID4gIiRhY19maWxlLnRtcCIKKyAgdGFiPWBwcmludGYgJ1x0J2AKKyAgaWYgZ3JlcCAtbCAnQFRDTENBVEFMT0dTQCcgIiRhY19maWxlIiA+IC9kZXYvbnVsbDsgdGhlbgorICAgICMgQWRkIGRlcGVuZGVuY2llcyB0aGF0IGNhbm5vdCBiZSBmb3JtdWxhdGVkIGFzIGEgc2ltcGxlIHN1ZmZpeCBydWxlLgorICAgIGZvciBsYW5nIGluICRBTExfTElOR1VBUzsgZG8KKyAgICAgIGZyb2JiZWRsYW5nPWBlY2hvICRsYW5nIHwgc2VkIC1lICdzL1wuLiokLy8nIC1lICd5L0FCQ0RFRkdISUpLTE1OT1BRUlNUVVZXWFlaL2FiY2RlZmdoaWprbG1ub3BxcnN0dXZ3eHl6LydgCisgICAgICBjYXQgPj4gIiRhY19maWxlLnRtcCIgPDxFT0YKKyRmcm9iYmVkbGFuZy5tc2c6ICRsYW5nLnBvCiske3RhYn1AZWNobyAiXCQoTVNHRk1UKSAtYyAtLXRjbCAtZCBcJChzcmNkaXIpIC1sICRsYW5nICRzcmNkaXJwcmUkbGFuZy5wbyI7IFwKKyR7dGFifVwkKE1TR0ZNVCkgLWMgLS10Y2wgLWQgIlwkKHNyY2RpcikiIC1sICRsYW5nICRzcmNkaXJwcmUkbGFuZy5wbyB8fCB7IHJtIC1mICJcJChzcmNkaXIpLyRmcm9iYmVkbGFuZy5tc2ciOyBleGl0IDE7IH0KK0VPRgorICAgIGRvbmUKKyAgZmkKKyAgaWYgZ3JlcCAtbCAnQENTSEFSUENBVEFMT0dTQCcgIiRhY19maWxlIiA+IC9kZXYvbnVsbDsgdGhlbgorICAgICMgQWRkIGRlcGVuZGVuY2llcyB0aGF0IGNhbm5vdCBiZSBmb3JtdWxhdGVkIGFzIGEgc2ltcGxlIHN1ZmZpeCBydWxlLgorICAgIGZvciBsYW5nIGluICRBTExfTElOR1VBUzsgZG8KKyAgICAgIGZyb2JiZWRsYW5nPWBlY2hvICRsYW5nIHwgc2VkIC1lICdzL18vLS9nJyAtZSAncy9ec3ItQ1Mvc3ItU1AvJyAtZSAncy9AbGF0aW4kLy1MYXRuLycgLWUgJ3MvQGN5cmlsbGljJC8tQ3lybC8nIC1lICdzL15zci1TUCQvc3ItU1AtTGF0bi8nIC1lICdzL151ei1VWiQvdXotVVotTGF0bi8nYAorICAgICAgY2F0ID4+ICIkYWNfZmlsZS50bXAiIDw8RU9GCiskZnJvYmJlZGxhbmcvXCQoRE9NQUlOKS5yZXNvdXJjZXMuZGxsOiAkbGFuZy5wbworJHt0YWJ9QGVjaG8gIlwkKE1TR0ZNVCkgLWMgLS1jc2hhcnAgLWQgXCQoc3JjZGlyKSAtbCAkbGFuZyAkc3JjZGlycHJlJGxhbmcucG8gLXIgXCQoRE9NQUlOKSI7IFwKKyR7dGFifVwkKE1TR0ZNVCkgLWMgLS1jc2hhcnAgLWQgIlwkKHNyY2RpcikiIC1sICRsYW5nICRzcmNkaXJwcmUkbGFuZy5wbyAtciAiXCQoRE9NQUlOKSIgfHwgeyBybSAtZiAiXCQoc3JjZGlyKS8kZnJvYmJlZGxhbmcubXNnIjsgZXhpdCAxOyB9CitFT0YKKyAgICBkb25lCisgIGZpCisgIGlmIHRlc3QgLW4gIiRQT01BS0VGSUxFREVQUyI7IHRoZW4KKyAgICBjYXQgPj4gIiRhY19maWxlLnRtcCIgPDxFT0YKK01ha2VmaWxlOiAkUE9NQUtFRklMRURFUFMKK0VPRgorICBmaQorICBtdiAiJGFjX2ZpbGUudG1wIiAiJGFjX2ZpbGUiCitdKQorCitkbmwgSW5pdGlhbGl6ZXMgdGhlIGFjY3VtdWxhdG9yIHVzZWQgYnkgQU1fWEdFVFRFWFRfT1BUSU9OLgorQUNfREVGVU4oW0FNX1hHRVRURVhUX09QVElPTl9JTklUXSwKK1sKKyAgWEdFVFRFWFRfRVhUUkFfT1BUSU9OUz0KK10pCisKK2RubCBSZWdpc3RlcnMgYW4gb3B0aW9uIHRvIGJlIHBhc3NlZCB0byB4Z2V0dGV4dCBpbiB0aGUgcG8gc3ViZGlyZWN0b3J5LgorQUNfREVGVU4oW0FNX1hHRVRURVhUX09QVElPTl0sCitbCisgIEFDX1JFUVVJUkUoW0FNX1hHRVRURVhUX09QVElPTl9JTklUXSkKKyAgWEdFVFRFWFRfRVhUUkFfT1BUSU9OUz0iJFhHRVRURVhUX0VYVFJBX09QVElPTlMgJDEiCitdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvYWNsb2NhbC9wcm9ndGVzdC5tNCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvcHJvZ3Rlc3QubTQKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWYxODZiMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtMC4yMC4xL2FjbG9jYWwvcHJvZ3Rlc3QubTQKQEAgLTAsMCArMSw5MSBAQAorIyBwcm9ndGVzdC5tNCBzZXJpYWwgNyAoZ2V0dGV4dC0wLjE4LjIpCitkbmwgQ29weXJpZ2h0IChDKSAxOTk2LTIwMDMsIDIwMDUsIDIwMDgtMjAxOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KK2RubCBUaGlzIGZpbGUgaXMgZnJlZSBzb2Z0d2FyZTsgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbgorZG5sIGdpdmVzIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsCitkbmwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorZG5sCitkbmwgVGhpcyBmaWxlIGNhbiBiZSB1c2VkIGluIHByb2plY3RzIHdoaWNoIGFyZSBub3QgYXZhaWxhYmxlIHVuZGVyCitkbmwgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIG9yIHRoZSBHTlUgTGlicmFyeSBHZW5lcmFsIFB1YmxpYworZG5sIExpY2Vuc2UgYnV0IHdoaWNoIHN0aWxsIHdhbnQgdG8gcHJvdmlkZSBzdXBwb3J0IGZvciB0aGUgR05VIGdldHRleHQKK2RubCBmdW5jdGlvbmFsaXR5LgorZG5sIFBsZWFzZSBub3RlIHRoYXQgdGhlIGFjdHVhbCBjb2RlIG9mIHRoZSBHTlUgZ2V0dGV4dCBsaWJyYXJ5IGlzIGNvdmVyZWQKK2RubCBieSB0aGUgR05VIExpYnJhcnkgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSwgYW5kIHRoZSByZXN0IG9mIHRoZSBHTlUKK2RubCBnZXR0ZXh0IHBhY2thZ2UgaXMgY292ZXJlZCBieSB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCitkbmwgVGhleSBhcmUgKm5vdCogaW4gdGhlIHB1YmxpYyBkb21haW4uCisKK2RubCBBdXRob3JzOgorZG5sICAgVWxyaWNoIERyZXBwZXIgPGRyZXBwZXJAY3lnbnVzLmNvbT4sIDE5OTYuCisKK0FDX1BSRVJFUShbMi41MF0pCisKKyMgU2VhcmNoIHBhdGggZm9yIGEgcHJvZ3JhbSB3aGljaCBwYXNzZXMgdGhlIGdpdmVuIHRlc3QuCisKK2RubCBBTV9QQVRIX1BST0dfV0lUSF9URVNUKFZBUklBQkxFLCBQUk9HLVRPLUNIRUNLLUZPUiwKK2RubCAgIFRFU1QtUEVSRk9STUVELU9OLUZPVU5EX1BST0dSQU0gWywgVkFMVUUtSUYtTk9ULUZPVU5EIFssIFBBVEhdXSkKK0FDX0RFRlVOKFtBTV9QQVRIX1BST0dfV0lUSF9URVNUXSwKK1sKKyMgUHJlcGFyZSBQQVRIX1NFUEFSQVRPUi4KKyMgVGhlIHVzZXIgaXMgYWx3YXlzIHJpZ2h0LgoraWYgdGVzdCAiJHtQQVRIX1NFUEFSQVRPUitzZXR9IiAhPSBzZXQ7IHRoZW4KKyAgIyBEZXRlcm1pbmUgUEFUSF9TRVBBUkFUT1IgYnkgdHJ5aW5nIHRvIGZpbmQgL2Jpbi9zaCBpbiBhIFBBVEggd2hpY2gKKyAgIyBjb250YWlucyBvbmx5IC9iaW4uIE5vdGUgdGhhdCBrc2ggbG9va3MgYWxzbyBhdCB0aGUgRlBBVEggdmFyaWFibGUsCisgICMgc28gd2UgaGF2ZSB0byBzZXQgdGhhdCBhcyB3ZWxsIGZvciB0aGUgdGVzdC4KKyAgUEFUSF9TRVBBUkFUT1I9OgorICAoUEFUSD0nL2JpbjsvYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSBcCisgICAgJiYgeyAoUEFUSD0nL2JpbjovYmluJzsgRlBBVEg9JFBBVEg7IHNoIC1jIDopID4vZGV2L251bGwgMj4mMSBcCisgICAgICAgICAgIHx8IFBBVEhfU0VQQVJBVE9SPSc7JworICAgICAgIH0KK2ZpCisKKyMgRmluZCBvdXQgaG93IHRvIHRlc3QgZm9yIGV4ZWN1dGFibGUgZmlsZXMuIERvbid0IHVzZSBhIHplcm8tYnl0ZSBmaWxlLAorIyBhcyBzeXN0ZW1zIG1heSB1c2UgbWV0aG9kcyBvdGhlciB0aGFuIG1vZGUgYml0cyB0byBkZXRlcm1pbmUgZXhlY3V0YWJpbGl0eS4KK2NhdCA+Y29uZiQkLmZpbGUgPDxfQVNFT0YKKyMhIC9iaW4vc2gKK2V4aXQgMAorX0FTRU9GCitjaG1vZCAreCBjb25mJCQuZmlsZQoraWYgdGVzdCAteCBjb25mJCQuZmlsZSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKyAgYWNfZXhlY3V0YWJsZV9wPSJ0ZXN0IC14IgorZWxzZQorICBhY19leGVjdXRhYmxlX3A9InRlc3QgLWYiCitmaQorcm0gLWYgY29uZiQkLmZpbGUKKworIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkMiIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCitzZXQgZHVtbXkgJDI7IGFjX3dvcmQ9WyRdMgorQUNfTVNHX0NIRUNLSU5HKFtmb3IgJGFjX3dvcmRdKQorQUNfQ0FDSEVfVkFMKFthY19jdl9wYXRoXyQxXSwKK1tjYXNlICJbJF0kMSIgaW4KKyAgW1tcXC9dXSogfCA/OltbXFwvXV0qKQorICAgIGFjX2N2X3BhdGhfJDE9IlskXSQxIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdCB3aXRoIGEgcGF0aC4KKyAgICA7OworICAqKQorICAgIGFjX3NhdmVfSUZTPSIkSUZTIjsgSUZTPSRQQVRIX1NFUEFSQVRPUgorICAgIGZvciBhY19kaXIgaW4gaWZlbHNlKFskNV0sICwgJFBBVEgsIFskNV0pOyBkbworICAgICAgSUZTPSIkYWNfc2F2ZV9JRlMiCisgICAgICB0ZXN0IC16ICIkYWNfZGlyIiAmJiBhY19kaXI9LgorICAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICAgICAgIGlmICRhY19leGVjdXRhYmxlX3AgIiRhY19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisgICAgICAgICAgZWNobyAiJGFzX21lOiB0cnlpbmcgJGFjX2Rpci8kYWNfd29yZC4uLiIgPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgICAgIGlmIFskM107IHRoZW4KKyAgICAgICAgICAgIGFjX2N2X3BhdGhfJDE9IiRhY19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiCisgICAgICAgICAgICBicmVhayAyCisgICAgICAgICAgZmkKKyAgICAgICAgZmkKKyAgICAgIGRvbmUKKyAgICBkb25lCisgICAgSUZTPSIkYWNfc2F2ZV9JRlMiCitkbmwgSWYgbm8gNHRoIGFyZyBpcyBnaXZlbiwgbGVhdmUgdGhlIGNhY2hlIHZhcmlhYmxlIHVuc2V0LAorZG5sIHNvIEFDX1BBVEhfUFJPR1Mgd2lsbCBrZWVwIGxvb2tpbmcuCitpZmVsc2UoWyQ0XSwgLCAsIFsgIHRlc3QgLXogIlskXWFjX2N2X3BhdGhfJDEiICYmIGFjX2N2X3BhdGhfJDE9IiQ0IgorXSlkbmwKKyAgICA7OworZXNhY10pZG5sCiskMT0iJGFjX2N2X3BhdGhfJDEiCitpZiB0ZXN0IGlmZWxzZShbJDRdLCAsIFstbiAiWyRdJDEiXSwgWyJbJF0kMSIgIT0gIiQ0Il0pOyB0aGVuCisgIEFDX01TR19SRVNVTFQoWyRdWyQxXSkKK2Vsc2UKKyAgQUNfTVNHX1JFU1VMVChbbm9dKQorZmkKK0FDX1NVQlNUKFskMV0pZG5sCitdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvY29uZmlnLnJwYXRoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvY29uZmlnLnJwYXRoCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLmJlMjAyYzEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9jb25maWcucnBhdGgKQEAgLTAsMCArMSw2ODQgQEAKKyMhIC9iaW4vc2gKKyMgT3V0cHV0IGEgc3lzdGVtIGRlcGVuZGVudCBzZXQgb2YgdmFyaWFibGVzLCBkZXNjcmliaW5nIGhvdyB0byBzZXQgdGhlCisjIHJ1biB0aW1lIHNlYXJjaCBwYXRoIG9mIHNoYXJlZCBsaWJyYXJpZXMgaW4gYW4gZXhlY3V0YWJsZS4KKyMKKyMgICBDb3B5cmlnaHQgMTk5Ni0yMDE5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIyAgIFRha2VuIGZyb20gR05VIGxpYnRvb2wsIDIwMDEKKyMgICBPcmlnaW5hbGx5IGJ5IEdvcmRvbiBNYXR6aWdrZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgorIworIyAgIFRoaXMgZmlsZSBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uIGdpdmVzCisjICAgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CisjICAgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCisjCisjIFRoZSBmaXJzdCBhcmd1bWVudCBwYXNzZWQgdG8gdGhpcyBmaWxlIGlzIHRoZSBjYW5vbmljYWwgaG9zdCBzcGVjaWZpY2F0aW9uLAorIyAgICBDUFVfVFlQRS1NQU5VRkFDVFVSRVItT1BFUkFUSU5HX1NZU1RFTQorIyBvcgorIyAgICBDUFVfVFlQRS1NQU5VRkFDVFVSRVItS0VSTkVMLU9QRVJBVElOR19TWVNURU0KKyMgVGhlIGVudmlyb25tZW50IHZhcmlhYmxlcyBDQywgR0NDLCBMREZMQUdTLCBMRCwgd2l0aF9nbnVfbGQKKyMgc2hvdWxkIGJlIHNldCBieSB0aGUgY2FsbGVyLgorIworIyBUaGUgc2V0IG9mIGRlZmluZWQgdmFyaWFibGVzIGlzIGF0IHRoZSBlbmQgb2YgdGhpcyBzY3JpcHQuCisKKyMgS25vd24gbGltaXRhdGlvbnM6CisjIC0gT24gSVJJWCA2LjUgd2l0aCBDQz0iY2MiLCB0aGUgcnVuIHRpbWUgc2VhcmNoIHBhdGNoIG11c3Qgbm90IGJlIGxvbmdlcgorIyAgIHRoYW4gMjU2IGJ5dGVzLCBvdGhlcndpc2UgdGhlIGNvbXBpbGVyIGRyaXZlciB3aWxsIGR1bXAgY29yZS4gVGhlIG9ubHkKKyMgICBrbm93biB3b3JrYXJvdW5kIGlzIHRvIGNob29zZSBzaG9ydGVyIGRpcmVjdG9yeSBuYW1lcyBmb3IgdGhlIGJ1aWxkCisjICAgZGlyZWN0b3J5IGFuZC9vciB0aGUgaW5zdGFsbGF0aW9uIGRpcmVjdG9yeS4KKworIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgJy5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCisjIHdoaWNoIG5lZWRzICcubGliJykuCitsaWJleHQ9YQorc2hyZXh0PS5zbworCitob3N0PSIkMSIKK2hvc3RfY3B1PWBlY2hvICIkaG9zdCIgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMS8nYAoraG9zdF92ZW5kb3I9YGVjaG8gIiRob3N0IiB8IHNlZCAncy9eXChbXi1dKlwpLVwoW14tXSpcKS1cKC4qXCkkL1wyLydgCitob3N0X29zPWBlY2hvICIkaG9zdCIgfCBzZWQgJ3MvXlwoW14tXSpcKS1cKFteLV0qXCktXCguKlwpJC9cMy8nYAorCisjIENvZGUgdGFrZW4gZnJvbSBsaWJ0b29sLm00J3MgX0xUX0NDX0JBU0VOQU1FLgorCitmb3IgY2NfdGVtcCBpbiAkQ0MiIjsgZG8KKyAgY2FzZSAkY2NfdGVtcCBpbgorICAgIGNvbXBpbGUgfCAqW1xcL11jb21waWxlIHwgY2NhY2hlIHwgKltcXC9dY2NhY2hlICkgOzsKKyAgICBkaXN0Y2MgfCAqW1xcL11kaXN0Y2MgfCBwdXJpZnkgfCAqW1xcL11wdXJpZnkgKSA7OworICAgIFwtKikgOzsKKyAgICAqKSBicmVhazs7CisgIGVzYWMKK2RvbmUKK2NjX2Jhc2VuYW1lPWBlY2hvICIkY2NfdGVtcCIgfCBzZWQgLWUgJ3MlXi4qLyUlJ2AKKworIyBDb2RlIHRha2VuIGZyb20gbGlidG9vbC5tNCdzIF9MVF9DT01QSUxFUl9QSUMuCisKK3dsPQoraWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgd2w9Jy1XbCwnCitlbHNlCisgIGNhc2UgIiRob3N0X29zIiBpbgorICAgIGFpeCopCisgICAgICB3bD0nLVdsLCcKKyAgICAgIDs7CisgICAgbWluZ3cqIHwgY3lnd2luKiB8IHB3MzIqIHwgb3MyKiB8IGNlZ2NjKikKKyAgICAgIDs7CisgICAgaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgxMSopCisgICAgICB3bD0nLVdsLCcKKyAgICAgIDs7CisgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgIHdsPSctV2wsJworICAgICAgOzsKKyAgICBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCisgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgICBlY2MqKQorICAgICAgICAgIHdsPSctV2wsJworICAgICAgICAgIDs7CisgICAgICAgIGljYyogfCBpZm9ydCopCisgICAgICAgICAgd2w9Jy1XbCwnCisgICAgICAgICAgOzsKKyAgICAgICAgbGY5NSopCisgICAgICAgICAgd2w9Jy1XbCwnCisgICAgICAgICAgOzsKKyAgICAgICAgbmFnZm9yKikKKyAgICAgICAgICB3bD0nLVdsLC1XbCwsJworICAgICAgICAgIDs7CisgICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICB3bD0nLVdsLCcKKyAgICAgICAgICA7OworICAgICAgICBjY2MqKQorICAgICAgICAgIHdsPSctV2wsJworICAgICAgICAgIDs7CisgICAgICAgIHhsKiB8IGJneGwqIHwgYmdmKiB8IG1waXhsKikKKyAgICAgICAgICB3bD0nLVdsLCcKKyAgICAgICAgICA7OworICAgICAgICBjb21vKQorICAgICAgICAgIHdsPSctbG9wdD0nCisgICAgICAgICAgOzsKKyAgICAgICAgKikKKyAgICAgICAgICBjYXNlIGAkQ0MgLVYgMj4mMSB8IHNlZCA1cWAgaW4KKyAgICAgICAgICAgICpTdW5cIEYqIHwgKlN1bipGb3J0cmFuKikKKyAgICAgICAgICAgICAgd2w9CisgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAqU3VuXCBDKikKKyAgICAgICAgICAgICAgd2w9Jy1XbCwnCisgICAgICAgICAgICAgIDs7CisgICAgICAgICAgZXNhYworICAgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgICA7OworICAgIG5ld3NvczYpCisgICAgICA7OworICAgICpudG8qIHwgKnFueCopCisgICAgICA7OworICAgIG9zZjMqIHwgb3NmNCogfCBvc2Y1KikKKyAgICAgIHdsPSctV2wsJworICAgICAgOzsKKyAgICByZG9zKikKKyAgICAgIDs7CisgICAgc29sYXJpcyopCisgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorICAgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCisgICAgICAgICAgd2w9Jy1Rb3B0aW9uIGxkICcKKyAgICAgICAgICA7OworICAgICAgICAqKQorICAgICAgICAgIHdsPSctV2wsJworICAgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgICA7OworICAgIHN1bm9zNCopCisgICAgICB3bD0nLVFvcHRpb24gbGQgJworICAgICAgOzsKKyAgICBzeXN2NCB8IHN5c3Y0LjJ1dzIqIHwgc3lzdjQuMyopCisgICAgICB3bD0nLVdsLCcKKyAgICAgIDs7CisgICAgc3lzdjQqTVAqKQorICAgICAgOzsKKyAgICBzeXN2NSogfCB1bml4d2FyZSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgT3BlblVOSVgqKQorICAgICAgd2w9Jy1XbCwnCisgICAgICA7OworICAgIHVuaWNvcyopCisgICAgICB3bD0nLVdsLCcKKyAgICAgIDs7CisgICAgdXRzNCopCisgICAgICA7OworICBlc2FjCitmaQorCisjIENvZGUgdGFrZW4gZnJvbSBsaWJ0b29sLm00J3MgX0xUX0xJTktFUl9TSExJQlMuCisKK2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CitoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPQoraGFyZGNvZGVfZGlyZWN0PW5vCitoYXJkY29kZV9taW51c19MPW5vCisKK2Nhc2UgIiRob3N0X29zIiBpbgorICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgIyBGSVhNRTogdGhlIE1TVkMrKyBwb3J0IGhhc24ndCBiZWVuIHRlc3RlZCBpbiBhIGxvb29vbmcgdGltZQorICAgICMgV2hlbiBub3QgdXNpbmcgZ2NjLCB3ZSBjdXJyZW50bHkgYXNzdW1lIHRoYXQgd2UgYXJlIHVzaW5nCisgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKyAgICAgIHdpdGhfZ251X2xkPW5vCisgICAgZmkKKyAgICA7OworICBpbnRlcml4KikKKyAgICAjIHdlIGp1c3QgaG9wZS9hc3N1bWUgdGhpcyBpcyBnY2MgYW5kIG5vdCBjODkgKD0gTVNWQysrKQorICAgIHdpdGhfZ251X2xkPXllcworICAgIDs7CisgIG9wZW5ic2QqKQorICAgIHdpdGhfZ251X2xkPW5vCisgICAgOzsKK2VzYWMKKworbGRfc2hsaWJzPXllcworaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IHllczsgdGhlbgorICAjIFNldCBzb21lIGRlZmF1bHRzIGZvciBHTlUgbGQgd2l0aCBzaGFyZWQgbGlicmFyeSBzdXBwb3J0LiBUaGVzZQorICAjIGFyZSByZXNldCBsYXRlciBpZiBzaGFyZWQgbGlicmFyaWVzIGFyZSBub3Qgc3VwcG9ydGVkLiBQdXR0aW5nIHRoZW0KKyAgIyBoZXJlIGFsbG93cyB0aGVtIHRvIGJlIG92ZXJyaWRkZW4gaWYgbmVjZXNzYXJ5LgorICAjIFVubGlrZSBsaWJ0b29sLCB3ZSB1c2UgLXJwYXRoIGhlcmUsIG5vdCAtLXJwYXRoLCBzaW5jZSB0aGUgZG9jdW1lbnRlZAorICAjIG9wdGlvbiBvZiBHTlUgbGQgaXMgY2FsbGVkIC1ycGF0aCwgbm90IC0tcnBhdGguCisgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgYWl4WzMtOV0qKQorICAgICAgIyBPbiBBSVgvUFBDLCB0aGUgR05VIGxpbmtlciBpcyB2ZXJ5IGJyb2tlbgorICAgICAgaWYgdGVzdCAiJGhvc3RfY3B1IiAhPSBpYTY0OyB0aGVuCisgICAgICAgIGxkX3NobGlicz1ubworICAgICAgZmkKKyAgICAgIDs7CisgICAgYW1pZ2FvcyopCisgICAgICBjYXNlICIkaG9zdF9jcHUiIGluCisgICAgICAgIHBvd2VycGMpCisgICAgICAgICAgOzsKKyAgICAgICAgbTY4aykKKyAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCisgICAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgICAgICA7OworICAgICAgZXNhYworICAgICAgOzsKKyAgICBiZW9zKikKKyAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICA6CisgICAgICBlbHNlCisgICAgICAgIGxkX3NobGlicz1ubworICAgICAgZmkKKyAgICAgIDs7CisgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKKyAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICA6CisgICAgICBlbHNlCisgICAgICAgIGxkX3NobGlicz1ubworICAgICAgZmkKKyAgICAgIDs7CisgICAgaGFpa3UqKQorICAgICAgOzsKKyAgICBpbnRlcml4WzMtOV0qKQorICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCwkbGliZGlyJworICAgICAgOzsKKyAgICBnbnUqIHwgbGludXgqIHwgdHBmKiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSkKKyAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8IGdyZXAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICA6CisgICAgICBlbHNlCisgICAgICAgIGxkX3NobGlicz1ubworICAgICAgZmkKKyAgICAgIDs7CisgICAgbmV0YnNkKikKKyAgICAgIDs7CisgICAgc29sYXJpcyopCisgICAgICBpZiAkTEQgLXYgMj4mMSB8IGdyZXAgJ0JGRCAyXC44JyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgZ3JlcCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgIDoKKyAgICAgIGVsc2UKKyAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICBmaQorICAgICAgOzsKKyAgICBzeXN2NSogfCBzY28zLjJ2NSogfCBzY281djYqIHwgdW5peHdhcmUqIHwgT3BlblVOSVgqKQorICAgICAgY2FzZSBgJExEIC12IDI+JjFgIGluCisgICAgICAgICpcIFswMV0uKiB8ICpcIDIuWzAtOV0uKiB8ICpcIDIuMVswLTVdLiopCisgICAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICAgICAgOzsKKyAgICAgICAgKikKKyAgICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9J2B0ZXN0IC16ICIkU0NPQUJTUEFUSCIgJiYgZWNobyAke3dsfS1ycGF0aCwkbGliZGlyYCcKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgICAgICBmaQorICAgICAgICAgIDs7CisgICAgICBlc2FjCisgICAgICA7OworICAgIHN1bm9zNCopCisgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICA7OworICAgICopCisgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCBncmVwICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgOgorICAgICAgZWxzZQorICAgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIGZpCisgICAgICA7OworICBlc2FjCisgIGlmIHRlc3QgIiRsZF9zaGxpYnMiID0gbm87IHRoZW4KKyAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQorICBmaQorZWxzZQorICBjYXNlICIkaG9zdF9vcyIgaW4KKyAgICBhaXgzKikKKyAgICAgICMgTm90ZTogdGhpcyBsaW5rZXIgaGFyZGNvZGVzIHRoZSBkaXJlY3RvcmllcyBpbiBMSUJQQVRIIGlmIHRoZXJlCisgICAgICAjIGFyZSBubyBkaXJlY3RvcmllcyBzcGVjaWZpZWQgYnkgLUwuCisgICAgICBoYXJkY29kZV9taW51c19MPXllcworICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICAgIyBOZWl0aGVyIGRpcmVjdCBoYXJkY29kaW5nIG5vciBzdGF0aWMgbGlua2luZyBpcyBzdXBwb3J0ZWQgd2l0aCBhCisgICAgICAgICMgYnJva2VuIGNvbGxlY3QyLgorICAgICAgICBoYXJkY29kZV9kaXJlY3Q9dW5zdXBwb3J0ZWQKKyAgICAgIGZpCisgICAgICA7OworICAgIGFpeFs0LTldKikKKyAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisgICAgICAgICMgT24gSUE2NCwgdGhlIGxpbmtlciBkb2VzIHJ1biB0aW1lIGxpbmtpbmcgYnkgZGVmYXVsdCwgc28gd2UgZG9uJ3QKKyAgICAgICAgIyBoYXZlIHRvIGRvIGFueXRoaW5nIHNwZWNpYWwuCisgICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9bm8KKyAgICAgIGVsc2UKKyAgICAgICAgYWl4X3VzZV9ydW50aW1lbGlua2luZz1ubworICAgICAgICAjIFRlc3QgaWYgd2UgYXJlIHRyeWluZyB0byB1c2UgcnVuIHRpbWUgbGlua2luZyBvciBub3JtYWwKKyAgICAgICAgIyBBSVggc3R5bGUgbGlua2luZy4gSWYgLWJydGwgaXMgc29tZXdoZXJlIGluIExERkxBR1MsIHdlCisgICAgICAgICMgbmVlZCB0byBkbyBydW50aW1lIGxpbmtpbmcuCisgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bMjNdfGFpeDQuWzIzXS4qfGFpeFs1LTldKikKKyAgICAgICAgICBmb3IgbGRfZmxhZyBpbiAkTERGTEFHUzsgZG8KKyAgICAgICAgICAgIGlmICh0ZXN0ICRsZF9mbGFnID0gIi1icnRsIiB8fCB0ZXN0ICRsZF9mbGFnID0gIi1XbCwtYnJ0bCIpOyB0aGVuCisgICAgICAgICAgICAgIGFpeF91c2VfcnVudGltZWxpbmtpbmc9eWVzCisgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBmaQorICAgICAgICAgIGRvbmUKKyAgICAgICAgICA7OworICAgICAgICBlc2FjCisgICAgICBmaQorICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0nOicKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgIGNhc2UgJGhvc3Rfb3MgaW4gYWl4NC5bMDEyXXxhaXg0LlswMTJdLiopCisgICAgICAgICAgY29sbGVjdDJuYW1lPWAke0NDfSAtcHJpbnQtcHJvZy1uYW1lPWNvbGxlY3QyYAorICAgICAgICAgIGlmIHRlc3QgLWYgIiRjb2xsZWN0Mm5hbWUiICYmIFwKKyAgICAgICAgICAgIHN0cmluZ3MgIiRjb2xsZWN0Mm5hbWUiIHwgZ3JlcCByZXNvbHZlX2xpYl9uYW1lID4vZGV2L251bGwKKyAgICAgICAgICB0aGVuCisgICAgICAgICAgICAjIFdlIGhhdmUgcmV3b3JrZWQgY29sbGVjdDIKKyAgICAgICAgICAgIDoKKyAgICAgICAgICBlbHNlCisgICAgICAgICAgICAjIFdlIGhhdmUgb2xkIGNvbGxlY3QyCisgICAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9dW5zdXBwb3J0ZWQKKyAgICAgICAgICAgIGhhcmRjb2RlX21pbnVzX0w9eWVzCisgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCisgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPQorICAgICAgICAgIGZpCisgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgZmkKKyAgICAgICMgQmVnaW4gX0xUX0FDX1NZU19MSUJQQVRIX0FJWC4KKyAgICAgIGVjaG8gJ2ludCBtYWluICgpIHsgcmV0dXJuIDA7IH0nID4gY29uZnRlc3QuYworICAgICAgJHtDQ30gJHtMREZMQUdTfSBjb25mdGVzdC5jIC1vIGNvbmZ0ZXN0CisgICAgICBhaXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCAyPi9kZXYvbnVsbCB8IHNlZCAtbiAtZSAnL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geyAvXjAvIHsgcy9eMCAgKlwoLipcKSQvXDEvOyBwOyB9Cit9J2AKKyAgICAgIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKyAgICAgICAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QgMj4vZGV2L251bGwgfCBzZWQgLW4gLWUgJy9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsgL14wLyB7IHMvXjAgICpcKC4qXCkkL1wxLzsgcDsgfQorfSdgCisgICAgICBmaQorICAgICAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorICAgICAgICBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiIKKyAgICAgIGZpCisgICAgICBybSAtZiBjb25mdGVzdC5jIGNvbmZ0ZXN0CisgICAgICAjIEVuZCBfTFRfQUNfU1lTX0xJQlBBVEhfQUlYLgorICAgICAgaWYgdGVzdCAiJGFpeF91c2VfcnVudGltZWxpbmtpbmciID0geWVzOyB0aGVuCisgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICBlbHNlCisgICAgICAgIGlmIHRlc3QgIiRob3N0X2NwdSIgPSBpYTY0OyB0aGVuCisgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tUiAkbGliZGlyOi91c3IvbGliOi9saWInCisgICAgICAgIGVsc2UKKyAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorICAgICAgICBmaQorICAgICAgZmkKKyAgICAgIDs7CisgICAgYW1pZ2FvcyopCisgICAgICBjYXNlICIkaG9zdF9jcHUiIGluCisgICAgICAgIHBvd2VycGMpCisgICAgICAgICAgOzsKKyAgICAgICAgbTY4aykKKyAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCisgICAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgICAgICA7OworICAgICAgZXNhYworICAgICAgOzsKKyAgICBic2RpWzQ1XSopCisgICAgICA7OworICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICMgV2hlbiBub3QgdXNpbmcgZ2NjLCB3ZSBjdXJyZW50bHkgYXNzdW1lIHRoYXQgd2UgYXJlIHVzaW5nCisgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisgICAgICBsaWJleHQ9bGliCisgICAgICA7OworICAgIGRhcndpbiogfCByaGFwc29keSopCisgICAgICBoYXJkY29kZV9kaXJlY3Q9bm8KKyAgICAgIGlmIHsgY2FzZSAkY2NfYmFzZW5hbWUgaW4gaWZvcnQqKSB0cnVlOzsgKikgdGVzdCAiJEdDQyIgPSB5ZXM7OyBlc2FjOyB9OyB0aGVuCisgICAgICAgIDoKKyAgICAgIGVsc2UKKyAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICBmaQorICAgICAgOzsKKyAgICBkZ3V4KikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1MJGxpYmRpcicKKyAgICAgIDs7CisgICAgZnJlZWJzZDIuWzAxXSopCisgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICBoYXJkY29kZV9taW51c19MPXllcworICAgICAgOzsKKyAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICA7OworICAgIGhwdXg5KikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJworICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06CisgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAorICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCisgICAgICBoYXJkY29kZV9taW51c19MPXllcworICAgICAgOzsKKyAgICBocHV4MTAqKQorICAgICAgaWYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCisgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9K2IgJHt3bH0kbGliZGlyJworICAgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKKyAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAorICAgICAgICAjIGJ1dCBhcyB0aGUgZGVmYXVsdCBsb2NhdGlvbiBvZiB0aGUgbGlicmFyeS4KKyAgICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgIGZpCisgICAgICA7OworICAgIGhwdXgxMSopCisgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0rYiAke3dsfSRsaWJkaXInCisgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgorICAgICAgICBjYXNlICRob3N0X2NwdSBpbgorICAgICAgICAgIGhwcGEqNjQqfGlhNjQqKQorICAgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PW5vCisgICAgICAgICAgICA7OworICAgICAgICAgICopCisgICAgICAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgICAgICAjIGhhcmRjb2RlX21pbnVzX0w6IE5vdCByZWFsbHkgaW4gdGhlIHNlYXJjaCBQQVRILAorICAgICAgICAgICAgIyBidXQgYXMgdGhlIGRlZmF1bHQgbG9jYXRpb24gb2YgdGhlIGxpYnJhcnkuCisgICAgICAgICAgICBoYXJkY29kZV9taW51c19MPXllcworICAgICAgICAgICAgOzsKKyAgICAgICAgZXNhYworICAgICAgZmkKKyAgICAgIDs7CisgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3I9OgorICAgICAgOzsKKyAgICBuZXRic2QqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgOzsKKyAgICBuZXdzb3M2KQorICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06CisgICAgICA7OworICAgICpudG8qIHwgKnFueCopCisgICAgICA7OworICAgIG9wZW5ic2QqKQorICAgICAgaWYgdGVzdCAtZiAvdXNyL2xpYmV4ZWMvbGQuc287IHRoZW4KKyAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgICBpZiB0ZXN0IC16ICJgZWNobyBfX0VMRl9fIHwgJENDIC1FIC0gfCBncmVwIF9fRUxGX19gIiB8fCB0ZXN0ICIkaG9zdF9vcy0kaG9zdF9jcHUiID0gIm9wZW5ic2QyLjgtcG93ZXJwYyI7IHRoZW4KKyAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCwkbGliZGlyJworICAgICAgICBlbHNlCisgICAgICAgICAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgICAgICAgICBvcGVuYnNkWzAxXS4qIHwgb3BlbmJzZDIuWzAtN10gfCBvcGVuYnNkMi5bMC03XS4qKQorICAgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAqKQorICAgICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCwkbGliZGlyJworICAgICAgICAgICAgICA7OworICAgICAgICAgIGVzYWMKKyAgICAgICAgZmkKKyAgICAgIGVsc2UKKyAgICAgICAgbGRfc2hsaWJzPW5vCisgICAgICBmaQorICAgICAgOzsKKyAgICBvczIqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgIDs7CisgICAgb3NmMyopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yPToKKyAgICAgIDs7CisgICAgb3NmNCogfCBvc2Y1KikKKyAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgIGVsc2UKKyAgICAgICAgIyBCb3RoIGNjIGFuZCBjeHggY29tcGlsZXIgc3VwcG9ydCAtcnBhdGggZGlyZWN0bHkKKyAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLXJwYXRoICRsaWJkaXInCisgICAgICBmaQorICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj06CisgICAgICA7OworICAgIHNvbGFyaXMqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgOzsKKyAgICBzdW5vczQqKQorICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLUwkbGliZGlyJworICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgaGFyZGNvZGVfbWludXNfTD15ZXMKKyAgICAgIDs7CisgICAgc3lzdjQpCisgICAgICBjYXNlICRob3N0X3ZlbmRvciBpbgorICAgICAgICBzbmkpCisgICAgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcyAjIGlzIHRoaXMgcmVhbGx5IHRydWU/Pz8KKyAgICAgICAgICA7OworICAgICAgICBzaWVtZW5zKQorICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubworICAgICAgICAgIDs7CisgICAgICAgIG1vdG9yb2xhKQorICAgICAgICAgIGhhcmRjb2RlX2RpcmVjdD1ubyAjTW90b3JvbGEgbWFudWFsIHNheXMgeWVzLCBidXQgbXkgdGVzdHMgc2F5IHRoZXkgbGllCisgICAgICAgICAgOzsKKyAgICAgIGVzYWMKKyAgICAgIDs7CisgICAgc3lzdjQuMyopCisgICAgICA7OworICAgIHN5c3Y0Kk1QKikKKyAgICAgIGlmIHRlc3QgLWQgL3Vzci9uZWM7IHRoZW4KKyAgICAgICAgbGRfc2hsaWJzPXllcworICAgICAgZmkKKyAgICAgIDs7CisgICAgc3lzdjQqdXcyKiB8IHN5c3Y1T3BlblVOSVgqIHwgc3lzdjVVbml4V2FyZTcuWzAxXS5bMTBdKiB8IHVuaXh3YXJlNyogfCBzY28zLjJ2NS4wLlswMjRdKikKKyAgICAgIDs7CisgICAgc3lzdjUqIHwgc2NvMy4ydjUqIHwgc2NvNXY2KikKKyAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9J2B0ZXN0IC16ICIkU0NPQUJTUEFUSCIgJiYgZWNobyAke3dsfS1SLCRsaWJkaXJgJworICAgICAgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0nOicKKyAgICAgIDs7CisgICAgdXRzNCopCisgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctTCRsaWJkaXInCisgICAgICA7OworICAgICopCisgICAgICBsZF9zaGxpYnM9bm8KKyAgICAgIDs7CisgIGVzYWMKK2ZpCisKKyMgQ2hlY2sgZHluYW1pYyBsaW5rZXIgY2hhcmFjdGVyaXN0aWNzCisjIENvZGUgdGFrZW4gZnJvbSBsaWJ0b29sLm00J3MgX0xUX1NZU19EWU5BTUlDX0xJTktFUi4KKyMgVW5saWtlIGxpYnRvb2wubTQsIGhlcmUgd2UgZG9uJ3QgY2FyZSBhYm91dCBfYWxsXyBuYW1lcyBvZiB0aGUgbGlicmFyeSwgYnV0CisjIG9ubHkgYWJvdXQgdGhlIG9uZSB0aGUgbGlua2VyIGZpbmRzIHdoZW4gcGFzc2VkIC1sTkFNRS4gVGhpcyBpcyB0aGUgbGFzdAorIyBlbGVtZW50IG9mIGxpYnJhcnlfbmFtZXNfc3BlYyBpbiBsaWJ0b29sLm00LCBvciBwb3NzaWJseSB0d28gb2YgdGhlbSBpZiB0aGUKKyMgbGlua2VyIGhhcyBzcGVjaWFsIHNlYXJjaCBydWxlcy4KK2xpYnJhcnlfbmFtZXNfc3BlYz0gICAgICAjIHRoZSBsYXN0IGVsZW1lbnQgb2YgbGlicmFyeV9uYW1lc19zcGVjIGluIGxpYnRvb2wubTQKK2xpYm5hbWVfc3BlYz0nbGliJG5hbWUnCitjYXNlICIkaG9zdF9vcyIgaW4KKyAgYWl4MyopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5hJworICAgIDs7CisgIGFpeFs0LTldKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBhbWlnYW9zKikKKyAgICBjYXNlICIkaG9zdF9jcHUiIGluCisgICAgICBwb3dlcnBjKikKKyAgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnIDs7CisgICAgICBtNjhrKQorICAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmEnIDs7CisgICAgZXNhYworICAgIDs7CisgIGJlb3MqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGJzZGlbNDVdKikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgc2hyZXh0PS5kbGwKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hICRsaWJuYW1lLmxpYicKKyAgICA7OworICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorICAgIHNocmV4dD0uZHlsaWIKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBkZ3V4KikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBmcmVlYnNkWzIzXS4qKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JHZlcnN1ZmZpeCcKKyAgICA7OworICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgZ251KikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBoYWlrdSopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgaHB1eDkqIHwgaHB1eDEwKiB8IGhwdXgxMSopCisgICAgY2FzZSAkaG9zdF9jcHUgaW4KKyAgICAgIGlhNjQqKQorICAgICAgICBzaHJleHQ9LnNvCisgICAgICAgIDs7CisgICAgICBocHBhKjY0KikKKyAgICAgICAgc2hyZXh0PS5zbAorICAgICAgICA7OworICAgICAgKikKKyAgICAgICAgc2hyZXh0PS5zbAorICAgICAgICA7OworICAgIGVzYWMKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICBpbnRlcml4WzMtOV0qKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgY2FzZSAiJGhvc3Rfb3MiIGluCisgICAgICBpcml4NSogfCBub25zdG9wdXgqKQorICAgICAgICBsaWJzdWZmPSBzaGxpYnN1ZmY9CisgICAgICAgIDs7CisgICAgICAqKQorICAgICAgICBjYXNlICRMRCBpbgorICAgICAgICAgICotMzJ8KiItMzIgInwqLW1lbGYzMmJzbWlwfCoiLW1lbGYzMmJzbWlwICIpIGxpYnN1ZmY9IHNobGlic3VmZj0gOzsKKyAgICAgICAgICAqLW4zMnwqIi1uMzIgInwqLW1lbGYzMmJtaXBuMzJ8KiItbWVsZjMyYm1pcG4zMiAiKSBsaWJzdWZmPTMyIHNobGlic3VmZj1OMzIgOzsKKyAgICAgICAgICAqLTY0fCoiLTY0ICJ8Ki1tZWxmNjRibWlwfCoiLW1lbGY2NGJtaXAgIikgbGlic3VmZj02NCBzaGxpYnN1ZmY9NjQgOzsKKyAgICAgICAgICAqKSBsaWJzdWZmPSBzaGxpYnN1ZmY9IDs7CisgICAgICAgIGVzYWMKKyAgICAgICAgOzsKKyAgICBlc2FjCisgICAgOzsKKyAgbGludXgqb2xkbGQqIHwgbGludXgqYW91dCogfCBsaW51eCpjb2ZmKikKKyAgICA7OworICBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAga25ldGJzZCotZ251KQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIG5ldGJzZCopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgbmV3c29zNikKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lJHNocmV4dCcKKyAgICA7OworICAqbnRvKiB8ICpxbngqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIG9wZW5ic2QqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JHZlcnN1ZmZpeCcKKyAgICA7OworICBvczIqKQorICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisgICAgc2hyZXh0PS5kbGwKKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmEnCisgICAgOzsKKyAgb3NmMyogfCBvc2Y0KiB8IG9zZjUqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIHJkb3MqKQorICAgIDs7CisgIHNvbGFyaXMqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIHN1bm9zNCopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQkdmVyc3VmZml4JworICAgIDs7CisgIHN5c3Y0IHwgc3lzdjQuMyopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgc3lzdjQqTVAqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIHN5c3Y1KiB8IHNjbzMuMnY1KiB8IHNjbzV2NiogfCB1bml4d2FyZSogfCBPcGVuVU5JWCogfCBzeXN2NCp1dzIqKQorICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUkc2hyZXh0JworICAgIDs7CisgIHRwZiopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKKyAgdXRzNCopCisgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZSRzaHJleHQnCisgICAgOzsKK2VzYWMKKworc2VkX3F1b3RlX3N1YnN0PSdzL1woWyJgJFxcXVwpL1xcXDEvZycKK2VzY2FwZWRfd2w9YGVjaG8gIlgkd2wiIHwgc2VkIC1lICdzL15YLy8nIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKK3NobGliZXh0PWBlY2hvICIkc2hyZXh0IiB8IHNlZCAtZSAncyxeXC4sLCdgCitlc2NhcGVkX2xpYm5hbWVfc3BlYz1gZWNobyAiWCRsaWJuYW1lX3NwZWMiIHwgc2VkIC1lICdzL15YLy8nIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKK2VzY2FwZWRfbGlicmFyeV9uYW1lc19zcGVjPWBlY2hvICJYJGxpYnJhcnlfbmFtZXNfc3BlYyIgfCBzZWQgLWUgJ3MvXlgvLycgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorZXNjYXBlZF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPWBlY2hvICJYJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiIHwgc2VkIC1lICdzL15YLy8nIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKworTENfQUxMPUMgc2VkIC1lICdzL15cKFthLXpBLVowLTlfXSpcKT0vYWNsX2N2X1wxPS8nIDw8RU9GCisKKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KK3dsPSIkZXNjYXBlZF93bCIKKworIyBTdGF0aWMgbGlicmFyeSBzdWZmaXggKG5vcm1hbGx5ICJhIikuCitsaWJleHQ9IiRsaWJleHQiCisKKyMgU2hhcmVkIGxpYnJhcnkgc3VmZml4IChub3JtYWxseSAic28iKS4KK3NobGliZXh0PSIkc2hsaWJleHQiCisKKyMgRm9ybWF0IG9mIGxpYnJhcnkgbmFtZSBwcmVmaXguCitsaWJuYW1lX3NwZWM9IiRlc2NhcGVkX2xpYm5hbWVfc3BlYyIKKworIyBMaWJyYXJ5IG5hbWVzIHRoYXQgdGhlIGxpbmtlciBmaW5kcyB3aGVuIHBhc3NlZCAtbE5BTUUuCitsaWJyYXJ5X25hbWVzX3NwZWM9IiRlc2NhcGVkX2xpYnJhcnlfbmFtZXNfc3BlYyIKKworIyBGbGFnIHRvIGhhcmRjb2RlIFwkbGliZGlyIGludG8gYSBiaW5hcnkgZHVyaW5nIGxpbmtpbmcuCisjIFRoaXMgbXVzdCB3b3JrIGV2ZW4gaWYgXCRsaWJkaXIgZG9lcyBub3QgZXhpc3QuCitoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSIkZXNjYXBlZF9oYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIgorCisjIFdoZXRoZXIgd2UgbmVlZCBhIHNpbmdsZSAtcnBhdGggZmxhZyB3aXRoIGEgc2VwYXJhdGVkIGFyZ3VtZW50LgoraGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvcj0iJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiCisKKyMgU2V0IHRvIHllcyBpZiB1c2luZyBESVIvbGliTkFNRS5zbyBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMgRElSIGludG8gdGhlCisjIHJlc3VsdGluZyBiaW5hcnkuCitoYXJkY29kZV9kaXJlY3Q9IiRoYXJkY29kZV9kaXJlY3QiCisKKyMgU2V0IHRvIHllcyBpZiB1c2luZyB0aGUgLUxESVIgZmxhZyBkdXJpbmcgbGlua2luZyBoYXJkY29kZXMgRElSIGludG8gdGhlCisjIHJlc3VsdGluZyBiaW5hcnkuCitoYXJkY29kZV9taW51c19MPSIkaGFyZGNvZGVfbWludXNfTCIKKworRU9GCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLTAuMjAuMS9yZW1vdmUtcG90Y2RhdGUuc2luIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvcmVtb3ZlLXBvdGNkYXRlLnNpbgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YzcwZGZiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC0wLjIwLjEvcmVtb3ZlLXBvdGNkYXRlLnNpbgpAQCAtMCwwICsxLDI1IEBACisjIFNlZCBzY3JpcHQgdGhhdCByZW1vdmVzIHRoZSBQT1QtQ3JlYXRpb24tRGF0ZSBsaW5lIGluIHRoZSBoZWFkZXIgZW50cnkKKyMgZnJvbSBhIFBPVCBmaWxlLgorIworIyBDb3B5cmlnaHQgKEMpIDIwMDIgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisjIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sCisjIGFyZSBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodAorIyBub3RpY2UgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuICBUaGlzIGZpbGUgaXMgb2ZmZXJlZCBhcy1pcywKKyMgd2l0aG91dCBhbnkgd2FycmFudHkuCisjCisjIFRoZSBkaXN0aW5jdGlvbiBiZXR3ZWVuIHRoZSBmaXJzdCBhbmQgdGhlIGZvbGxvd2luZyBvY2N1cnJlbmNlcyBvZiB0aGUKKyMgcGF0dGVybiBpcyBhY2hpZXZlZCBieSBsb29raW5nIGF0IHRoZSBob2xkIHNwYWNlLgorL14iUE9ULUNyZWF0aW9uLURhdGU6IC4qIiQveworeAorIyBUZXN0IGlmIHRoZSBob2xkIHNwYWNlIGlzIGVtcHR5Lgorcy9QL1AvCit0YQorIyBZZXMgaXQgd2FzIGVtcHR5LiBGaXJzdCBvY2N1cnJlbmNlLiBSZW1vdmUgdGhlIGxpbmUuCitnCitkCitiYgorOmEKKyMgVGhlIGhvbGQgc3BhY2Ugd2FzIG5vbmVtcHR5LiBGb2xsb3dpbmcgb2NjdXJyZW5jZXMuIERvIG5vdGhpbmcuCit4Cis6YgorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHQtbWluaW1hbC1uYXRpdmVfMC4xOS44LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZV8wLjE5LjguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZmZjE5OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZV8wLjE5LjguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiTWluaW1hbCBnZXR0ZXh0IGZvciBzdXBwb3J0aW5nIG5hdGl2ZSBhdXRvY29uZi9hdXRvbWFrZSIKLURFU0NSSVBUSU9OID0gIkNvbnRhaW5zIHRoZSBtNCBtYWNyb3Mgc3VmZmljaWVudCB0byBzdXBwb3J0IGJ1aWxkaW5nIFwKLWF1dG9jb25mL2F1dG9tYWtlLiBUaGlzIHByb3ZpZGVzIGEgc2lnbmlmaWNhbnQgYnVpbGQgdGltZSBzcGVlZHVwIGJ5IFwKLXRoZSByZW1vdmFsIG9mIGdldHRleHQtbmF0aXZlIGZyb20gbW9zdCBkZXBlbmRlbmN5IGNoYWlucyAobm93IG9ubHkgXAotbmVlZGVkIGZvciBnZXR0ZXh0IGZvciB0aGUgdGFyZ2V0KS4iCi1TUkNfVVJJID0gImZpbGU6Ly9hY2xvY2FsLnRneiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWcucnBhdGggXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUuaW4uaW4gXAotICAgICAgICAgICBmaWxlOi8vcmVtb3ZlLXBvdGNkYXRlLnNpbiBcCi0gICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtUEFUQ0gtRGlzYWJsZS10aGUtdGVzdC10by1jb252ZXJ0LWV1Yy1qcC5wYXRjaCBcCi0iCi0KLUlOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCi1JTkhJQklUX0FVVE9UT09MU19ERVBTID0gIjEiCi0KLUxJQ0VOU0UgPSAiRlNGLVVubGltaXRlZCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRiZDA5MGEyMGJmY2QxYTE4ZjFmNzk4MzdiNWUzZTkxIgotCi1pbmhlcml0IG5hdGl2ZQotCi1TID0gIiR7V09SS0RJUn0iCi0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vYWNsb2NhbC8KLQljcCAke1dPUktESVJ9LyoubTQgJHtEfSR7ZGF0YWRpcn0vYWNsb2NhbC8KLQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vCi0JY3AgJHtXT1JLRElSfS9jb25maWcucnBhdGggJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC8KLQljcCAke1dPUktESVJ9L01ha2VmaWxlLmluLmluICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vCi0JY3AgJHtXT1JLRElSfS9yZW1vdmUtcG90Y2RhdGUuc2luICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZV8wLjIwLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZV8wLjIwLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2E0ZGNiZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0LW1pbmltYWwtbmF0aXZlXzAuMjAuMS5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIk1pbmltYWwgZ2V0dGV4dCBmb3Igc3VwcG9ydGluZyBuYXRpdmUgYXV0b2NvbmYvYXV0b21ha2UiCitERVNDUklQVElPTiA9ICJDb250YWlucyB0aGUgbTQgbWFjcm9zIHN1ZmZpY2llbnQgdG8gc3VwcG9ydCBidWlsZGluZyBcCithdXRvY29uZi9hdXRvbWFrZS4gVGhpcyBwcm92aWRlcyBhIHNpZ25pZmljYW50IGJ1aWxkIHRpbWUgc3BlZWR1cCBieSBcCit0aGUgcmVtb3ZhbCBvZiBnZXR0ZXh0LW5hdGl2ZSBmcm9tIG1vc3QgZGVwZW5kZW5jeSBjaGFpbnMgKG5vdyBvbmx5IFwKK25lZWRlZCBmb3IgZ2V0dGV4dCBmb3IgdGhlIHRhcmdldCkuIgorU1JDX1VSSSA9ICJmaWxlOi8vYWNsb2NhbC8gXAorICAgICAgICAgICBmaWxlOi8vY29uZmlnLnJwYXRoIFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLmluLmluIFwKKyAgICAgICAgICAgZmlsZTovL3JlbW92ZS1wb3RjZGF0ZS5zaW4gXAorICAgICAgICAgICBmaWxlOi8vQ09QWUlORyBcCisiCisKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCitJTkhJQklUX0FVVE9UT09MU19ERVBTID0gIjEiCisKK0xJQ0VOU0UgPSAiRlNGLVVubGltaXRlZCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRiZDA5MGEyMGJmY2QxYTE4ZjFmNzk4MzdiNWUzZTkxIgorCitpbmhlcml0IG5hdGl2ZQorCitTID0gIiR7V09SS0RJUn0iCisKK2RvX2luc3RhbGwgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vYWNsb2NhbC8KKwljcCAke1dPUktESVJ9L2FjbG9jYWwvKi5tNCAke0R9JHtkYXRhZGlyfS9hY2xvY2FsLworCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC9wby8KKwljcCAke1dPUktESVJ9L2NvbmZpZy5ycGF0aCAke0R9JHtkYXRhZGlyfS9nZXR0ZXh0LworCWNwICR7V09SS0RJUn0vTWFrZWZpbGUuaW4uaW4gJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC9wby8KKwljcCAke1dPUktESVJ9L3JlbW92ZS1wb3RjZGF0ZS5zaW4gJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC9wby8KK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0XzAuMTkuOC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHRfMC4xOS44LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwMTIxYWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nZXR0ZXh0L2dldHRleHRfMC4xOS44LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxODggKzAsMCBAQAotU1VNTUFSWSA9ICJVdGlsaXRpZXMgYW5kIGxpYnJhcmllcyBmb3IgcHJvZHVjaW5nIG11bHRpLWxpbmd1YWwgbWVzc2FnZXMiCi1ERVNDUklQVElPTiA9ICJHTlUgZ2V0dGV4dCBpcyBhIHNldCBvZiB0b29scyB0aGF0IHByb3ZpZGVzIGEgZnJhbWV3b3JrIHRvIGhlbHAgb3RoZXIgcHJvZ3JhbXMgcHJvZHVjZSBtdWx0aS1saW5ndWFsIG1lc3NhZ2VzLiBcCi1UaGVzZSB0b29scyBpbmNsdWRlIGEgc2V0IG9mIGNvbnZlbnRpb25zIGFib3V0IGhvdyBwcm9ncmFtcyBzaG91bGQgYmUgd3JpdHRlbiB0byBzdXBwb3J0IG1lc3NhZ2UgY2F0YWxvZ3MsIGEgZGlyZWN0b3J5IGFuZCBmaWxlIFwKLW5hbWluZyBvcmdhbml6YXRpb24gZm9yIHRoZSBtZXNzYWdlIGNhdGFsb2dzIHRoZW1zZWx2ZXMsIGEgcnVudGltZSBsaWJyYXJ5IHN1cHBvcnRpbmcgdGhlIHJldHJpZXZhbCBvZiB0cmFuc2xhdGVkIG1lc3NhZ2VzLCBhbmQgXAotYSBmZXcgc3RhbmQtYWxvbmUgcHJvZ3JhbXMgdG8gbWFzc2FnZSBpbiB2YXJpb3VzIHdheXMgdGhlIHNldHMgb2YgdHJhbnNsYXRhYmxlIGFuZCBhbHJlYWR5IHRyYW5zbGF0ZWQgc3RyaW5ncy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2V0dGV4dC9nZXR0ZXh0Lmh0bWwiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkdQTHYzKyAmIExHUEwtMi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi0jIEJlY2F1c2UgcG8tZ3JhbS1nZW4ueSBoYXMgYmVlbiBtb2RpZmllZCBieSBmaXgtQ1ZFLTIwMTgtMTg3NTEucGF0Y2gsCi0jIGl0IHJlcXVpcmVzIHlhY2Mgd2hpY2ggcHJvdmlkZWQgYnkgYmlzb24tbmF0aXZlCi0jIFBsZWFzZSByZW1vdmUgYmlzb24tbmF0aXZlIGZyb20gREVQRU5EUyogd2hlbiBuZXh0IHVwZ3JhZGUKLURFUEVORFMgPSAiYmlzb24tbmF0aXZlIGdldHRleHQtbmF0aXZlIHZpcnR1YWwvbGliaWNvbnYiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJiaXNvbi1uYXRpdmUgZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZSIKLVBST1ZJREVTID0gInZpcnR1YWwvbGliaW50bCB2aXJ0dWFsL2dldHRleHQiCi1QUk9WSURFU19jbGFzcy1uYXRpdmUgPSAidmlydHVhbC9nZXR0ZXh0LW5hdGl2ZSIKLVJDT05GTElDVFNfJHtQTn0gPSAicHJveHktbGliaW50bCIKLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nZXR0ZXh0L2dldHRleHQtJHtQVn0udGFyLmd6IFwKLQkgICBmaWxlOi8vcGFyYWxsZWwucGF0Y2ggXAotCSAgIGZpbGU6Ly9hZGQtd2l0aC1iaXNvbmxvY2FsZWRpci5wYXRjaCBcCi0JICAgZmlsZTovL2NyLXN0YXRlbWVudC5jLXRpbXNvcnQuaC1maXgtZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2ggXAotCSAgIGZpbGU6Ly91c2UtcGtnY29uZmlnLnBhdGNoIFwKLQkgICBmaWxlOi8vZml4LUNWRS0yMDE4LTE4NzUxLnBhdGNoIFwKLQkgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLQkgICBmaWxlOi8vc2VyaWFsLXRlc3RzLWNvbmZpZy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5N2UwMzRjZjhjZTViYTczYTI4ZmY2YzNjMDYzODA5MiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJmZjk0MmFmMGU0MzhjZWQ0YThiMGVhNGIwYjZlMGQ2ZDY1NzE1N2M1ZTIzNjRkZTU3YmFhMjc5YzFjMTI1YzQzIgotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIHBrZ2NvbmZpZyBwdGVzdAotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1saXNwZGlyIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWNzaGFycCBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJhc3ByaW50ZiBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1qYXZhIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW5hdGl2ZS1qYXZhIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLW9wZW5tcCBcCi0gICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1hY2wgXAotICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtZW1hY3MgXAotICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtY3ZzIFwKLSAgICAgICAgICAgICAgICAgLS13aXRob3V0LWdpdCBcCi0gICAgICAgICAgICAgICAgIC0tY2FjaGUtZmlsZT0ke0J9L2NvbmZpZy5jYWNoZSBcCi0gICAgICAgICAgICAgICAgIgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIFwKLSAgICAgICAgICAgICAgICAgLS13aXRoLWJpc29ubG9jYWxlZGlyPSR7ZGF0YWRpcn0vbG9jYWxlIFwKLSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImNyb2NvIGdsaWIgbGlieG1sIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiIgotCi1QQUNLQUdFQ09ORklHW2Nyb2NvXSA9ICItLXdpdGhvdXQtaW5jbHVkZWQtbGliY3JvY28sLS13aXRoLWluY2x1ZGVkLWxpYmNyb2NvLGxpYmNyb2NvIgotUEFDS0FHRUNPTkZJR1tnbGliXSA9ICItLXdpdGhvdXQtaW5jbHVkZWQtZ2xpYiwtLXdpdGgtaW5jbHVkZWQtZ2xpYixnbGliLTIuMCIKLVBBQ0tBR0VDT05GSUdbbGlieG1sXSA9ICItLXdpdGhvdXQtaW5jbHVkZWQtbGlieG1sLC0td2l0aC1pbmNsdWRlZC1saWJ4bWwsbGlieG1sMiIKLSMgTmVlZCBwYXRocyBoZXJlIHRvIGF2b2lkIGhvc3QgY29udGFtaW5hdGlvbiBidXQgdGhpcyBjYW4gY2F1c2UgUlBBVEggd2FybmluZ3MKLSMgb3IgcHJvYmxlbXMgaWYgJGxpYmRpciBpc24ndCAkcHJlZml4L2xpYi4KLVBBQ0tBR0VDT05GSUdbbGlidW5pc3RyaW5nXSA9ICItLXdpdGgtbGlidW5pc3RyaW5nLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfS8uLiwtLXdpdGgtaW5jbHVkZWQtbGlidW5pc3RyaW5nLGxpYnVuaXN0cmluZyIKLVBBQ0tBR0VDT05GSUdbbXNnY2F0LWN1cnNlc10gPSAiLS13aXRoLWxpYm5jdXJzZXMtcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9Ly4uLC0tZGlzYWJsZS1jdXJzZXMsbmN1cnNlcywiCi0KLWFjcGF0aHMgPSAnLUkgJHtTfS9nZXR0ZXh0LXJ1bnRpbWUvbTQgXAotICAgICAgICAgICAtSSAke1N9L2dldHRleHQtdG9vbHMvbTQnCi0KLWRvX2luc3RhbGxfYXBwZW5kX2xpYmMtbXVzbCAoKSB7Ci0Jcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCi0Jcm0gLWYgJHtEfSR7aW5jbHVkZWRpcn0vbGliaW50bC5oCi0Jcm0gLWYgJHtEfSR7bGliZGlyfS9saWJpbnRsLmxhCi19Ci0KLSMgdGhlc2UgbGFjayB0aGUgLnggYmVoaW5kIHRoZSAuc28sIGJ1dCBzaG91bGRuJ3QgYmUgaW4gdGhlIC1kZXYgcGFja2FnZQotIyBPdGhlcndpc2UgeW91IGdldCB0aGUgZm9sbG93aW5nIHJlc3VsdHM6Ci0jIDcuNE0gICAgZ2xpYmMvaW1hZ2VzL2VwOTN4eC9BbmdzdHJvbS1jb25zb2xlLWltYWdlLWdsaWJjLWlway0yMDA4LjEtdGVzdC0yMDA4MDEwNC1lcDkzeHgucm9vdGZzLnRhci5negotIyAyNU0gICAgIHVjbGliYy9pbWFnZXMvZXA5M3h4L0FuZ3N0cm9tLWNvbnNvbGUtaW1hZ2UtdWNsaWJjLWlway0yMDA4LjEtdGVzdC0yMDA4MDEwNC1lcDkzeHgucm9vdGZzLnRhci5negotIyBiZWNhdXNlIGdldHRleHQgZGVwZW5kcyBvbiBnZXR0ZXh0LWRldiwgd2hpY2ggcHVsbHMgaW4gbW9yZSAtZGV2IHBhY2thZ2VzOgotIyAxNTIyOCAgIEtpQiAvZXA5M3h4L2xpYnN0ZGMrKy1kZXZfNC4yLjItcjJfZXA5M3h4LmlwawotIyAxMzAwICAgIEtpQiAvZXA5M3h4L3VjbGliYy1kZXZfMC45LjI5LXI4X2VwOTN4eC5pcGsKLSMgMTQwICAgICBLaUIgL2FybXY0dC9nZXR0ZXh0LWRldl8wLjE0LjEtcjZfYXJtdjR0LmlwawotIyA0ICAgICAgIEtpQiAvZXA5M3h4L2xpYmdjYy1zLWRldl80LjIuMi1yMl9lcDkzeHguaXBrCi0KLVBBQ0tBR0VTID0rICJsaWJnZXR0ZXh0bGliIGxpYmdldHRleHRzcmMiCi1GSUxFU19saWJnZXR0ZXh0bGliID0gIiR7bGliZGlyfS9saWJnZXR0ZXh0bGliLSouc28qIgotRklMRVNfbGliZ2V0dGV4dHNyYyA9ICIke2xpYmRpcn0vbGliZ2V0dGV4dHNyYy0qLnNvKiIKLQotUEFDS0FHRVMgPSsgImdldHRleHQtcnVudGltZSBnZXR0ZXh0LXJ1bnRpbWUtZGV2IGdldHRleHQtcnVudGltZS1kb2MiCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vJHtCUE59LyoiCi0KLSMgVGhlIGl0cy9NYWtlZmlsZS5hbSBoYXMgZGVmaW5lZDoKLSMgaXRzZGlyID0gJChwa2dkYXRhZGlyKSQoUEFDS0FHRV9TVUZGSVgpL2l0cwotIyBub3QgaXRzZGlyID0gJChwa2dkYXRhZGlyKSwgc28gdXNlIHdpbGRjYXJkIHRvIG1hdGNoIHRoZSB2ZXJzaW9uLgotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vJHtCUE59LSovKiIKLQotRklMRVNfZ2V0dGV4dC1ydW50aW1lID0gIiR7YmluZGlyfS9nZXR0ZXh0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbmdldHRleHQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9lbnZzdWJzdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2dldHRleHQuc2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJhc3ByaW50Zi5zbyogXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9HTlUuR2V0dGV4dC5kbGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgIgotRklMRVNfZ2V0dGV4dC1ydW50aW1lLWRldiArPSAiJHtsaWJkaXJ9L2xpYmFzcHJpbnRmLmEgXAotICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vYXV0b3NwcmludGYuaCBcCi0gICAgICAgICAgICAgICAgICAgICAiCi1GSUxFU19nZXR0ZXh0LXJ1bnRpbWUtZG9jID0gIiR7bWFuZGlyfS9tYW4xL2dldHRleHQuKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL25nZXR0ZXh0LiogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9lbnZzdWJzdC4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvLiogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMy8qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2dldHRleHQvZ2V0dGV4dC4qIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2dldHRleHQvbmdldHRleHQuKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9nZXR0ZXh0L2VudnN1YnN0LiogXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vZ2V0dGV4dC8qLjMuaHRtbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ2V0dGV4dC9BQk9VVC1OTFMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vZ2V0dGV4dC9jc2hhcnBkb2MvKiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9saWJhc3ByaW50Zi9hdXRvc3ByaW50Zi5odG1sIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmZvZGlyfS9hdXRvc3ByaW50Zi5pbmZvIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vcHJlbG9hZGFibGVfbGliaW50bC5zbwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotCXJtICR7RH0ke2RhdGFkaXJ9L2FjbG9jYWwvKgotCXJtICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvY29uZmlnLnJwYXRoCi0Jcm0gJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC9wby9NYWtlZmlsZS5pbi5pbgotCXJtICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vcmVtb3ZlLXBvdGNkYXRlLnNpbgotCi0gICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vbXNnZm10IFwKLSAgICAgICAgICAgICAgICBHRVRURVhUREFUQURJUj0iJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0LTAuMTkuOC8iCi0KLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgICAgICAgY2QgJHtCfS9nZXR0ZXh0LXRvb2xzL3Rlc3RzLwotICAgICAgICBzZWQgLWkgJy9eYnVpbGR0ZXN0LVRFU1RTOiAvYyBidWlsZHRlc3QtVEVTVFM6ICQoVEVTVFMpICQoY2hlY2tfUFJPR1JBTVMpJyBNYWtlZmlsZQotICAgICAgICBvZV9ydW5tYWtlIGJ1aWxkdGVzdC1URVNUUwotICAgICAgICBjZCAtCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0gICAgaWYgWyAke1BURVNUX0VOQUJMRUR9ID0gIjEiIF07IHRoZW4KLSAgICAgICAgbWtkaXIgLXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKLSAgICAgICAgbWtkaXIgLXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCi0gICAgICAgIG1rZGlyIC1wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3BvCi0gICAgICAgIG1rZGlyIC1wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L21pc2MKLSAgICAgICAgY3AgLXJmICR7U30vZ2V0dGV4dC10b29scy90ZXN0cy8qICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKLSAgICAgICAgY3AgLXJmICR7Qn0vZ2V0dGV4dC10b29scy90ZXN0cy8ubGlicy8qICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKLSAgICAgICAgY3AgLXJmICR7Qn0vZ2V0dGV4dC1ydW50aW1lL2ludGwvLmxpYnMvbGliZ251aW50bC5zby44KiAgICAgICAgICR7RH0ke2xpYmRpcn0vCi0gICAgICAgIGNwIC1yZiAke0J9L2dldHRleHQtdG9vbHMvdGVzdHMvTWFrZWZpbGUgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCi0gICAgICAgIHNlZCAtaSAnL15NYWtlZmlsZTovYyBNYWtlZmlsZTonICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCi0gICAgICAgIHNlZCAtaSAtZSAnczpDT05GSUdfU0hFTEw9Lio6JiBMT0NBTEVfRlI9J2ZyX0ZSLmlzbzg4NTkxJyBMT0NBTEVfRlJfVVRGOD0nZnJfRlIudXRmOCcgTE9DQUxFX0pBPSdqYV9KUC5ldWNqcCc6ZycgXAotICAgICAgICAgICAgLWUgJ3M6bGFuZy1jIGxhbmctYysrOmxhbmctYysrOmcnICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCi0gICAgICAgIGluc3RhbGwgJHtTfS9nZXR0ZXh0LXRvb2xzL3NyYy9tc2d1bmZtdC50Y2wgICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYwotICAgICAgICBpbnN0YWxsICR7U30vZ2V0dGV4dC10b29scy9zcmMvcHJvamVjdC1pZCAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKLSAgICAgICAgaW5zdGFsbCAke0J9L2dldHRleHQtcnVudGltZS9zcmMvZ2V0dGV4dC5zaCAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCi0gICAgICAgIGluc3RhbGwgJHtCfS9nZXR0ZXh0LXJ1bnRpbWUvc3JjL25nZXR0ZXh0ICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYwotICAgICAgICBpbnN0YWxsICR7Qn0vZ2V0dGV4dC1ydW50aW1lL3NyYy9lbnZzdWJzdCAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKLSAgICAgICAgaW5zdGFsbCAke0J9L2dldHRleHQtcnVudGltZS9zcmMvZ2V0dGV4dCAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCi0gICAgICAgIGluc3RhbGwgJHtCfS9nZXR0ZXh0LXRvb2xzL3NyYy8ubGlicy9jbGRyLXBsdXJhbHMgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKLSAgICAgICAgaW5zdGFsbCAke1N9L2dldHRleHQtdG9vbHMvcG8vZ2V0dGV4dC10b29scy5wb3QgJHtEfSR7UFRFU1RfUEFUSH0vcG8KLSAgICAgICAgaW5zdGFsbCAke0J9L2dldHRleHQtdG9vbHMvbWlzYy8qICAgICAgICR7RH0ke1BURVNUX1BBVEh9L21pc2MKLSAgICAgICAgZmluZCAke0R9JHtQVEVTVF9QQVRIfS8gLW5hbWUgIioubyIgLWV4ZWMgcm0ge30gXDsKLSAgICAgICAgY2htb2QgMDc1NSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9sYW5nLXZhbGEgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcGx1cmFsLTEgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMveGdldHRleHQtdGNsLTQgXAotICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3hnZXR0ZXh0LXZhbGEtMSAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMveGdldHRleHQtcG8tMgotICAgIGZpCi19Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiXAotICAgIGdsaWJjLWdjb252LWJpZzUgXAotICAgIGdsaWJjLWNoYXJtYXAtYmlnNSBcCi0gICAgZ2xpYmMtZ2NvbnYtY3AxMjUxIFwKLSAgICBnbGliYy1jaGFybWFwLWNwMTI1MSBcCi0gICAgZ2xpYmMtY2hhcm1hcC1pc28tODg1OS05IFwKLSAgICBnbGliYy1nY29udi1pc284ODU5LTkgXAotICAgIGdsaWJjLWNoYXJtYXAta29pOC1yIFwKLSAgICBnbGliYy1nY29udi1rb2k4LXIgXAotICAgIGdsaWJjLWdjb252LWlzbzg4NTktMiBcCi0gICAgZ2xpYmMtY2hhcm1hcC1pc28tODg1OS0yIFwKLSAgICBnbGliYy1nY29udi1ldWMta3IgXAotICAgIGdsaWJjLWNoYXJtYXAtZXVjLWtyIFwKLSIKLQotSU5TQU5FX1NLSVBfJHtQTn0tcHRlc3QgKz0gImxkZmxhZ3MiCi1JTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAicnBhdGhzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjIwLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dldHRleHQvZ2V0dGV4dF8wLjIwLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODU0OTNlNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2V0dGV4dC9nZXR0ZXh0XzAuMjAuMS5iYgpAQCAtMCwwICsxLDIxMiBAQAorU1VNTUFSWSA9ICJVdGlsaXRpZXMgYW5kIGxpYnJhcmllcyBmb3IgcHJvZHVjaW5nIG11bHRpLWxpbmd1YWwgbWVzc2FnZXMiCitERVNDUklQVElPTiA9ICJHTlUgZ2V0dGV4dCBpcyBhIHNldCBvZiB0b29scyB0aGF0IHByb3ZpZGVzIGEgZnJhbWV3b3JrIHRvIGhlbHAgb3RoZXIgcHJvZ3JhbXMgcHJvZHVjZSBtdWx0aS1saW5ndWFsIG1lc3NhZ2VzLiBcCitUaGVzZSB0b29scyBpbmNsdWRlIGEgc2V0IG9mIGNvbnZlbnRpb25zIGFib3V0IGhvdyBwcm9ncmFtcyBzaG91bGQgYmUgd3JpdHRlbiB0byBzdXBwb3J0IG1lc3NhZ2UgY2F0YWxvZ3MsIGEgZGlyZWN0b3J5IGFuZCBmaWxlIFwKK25hbWluZyBvcmdhbml6YXRpb24gZm9yIHRoZSBtZXNzYWdlIGNhdGFsb2dzIHRoZW1zZWx2ZXMsIGEgcnVudGltZSBsaWJyYXJ5IHN1cHBvcnRpbmcgdGhlIHJldHJpZXZhbCBvZiB0cmFuc2xhdGVkIG1lc3NhZ2VzLCBhbmQgXAorYSBmZXcgc3RhbmQtYWxvbmUgcHJvZ3JhbXMgdG8gbWFzc2FnZSBpbiB2YXJpb3VzIHdheXMgdGhlIHNldHMgb2YgdHJhbnNsYXRhYmxlIGFuZCBhbHJlYWR5IHRyYW5zbGF0ZWQgc3RyaW5ncy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ2V0dGV4dC9nZXR0ZXh0Lmh0bWwiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkdQTHYzKyAmIExHUEwtMi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM2Nzg5NTdiMGM4ZTk2NGFhNmM3MGZkNzc2NDFhNzFlIgorCisjIEJlY2F1c2UgcG8tZ3JhbS1nZW4ueSBoYXMgYmVlbiBtb2RpZmllZCBieSBmaXgtQ1ZFLTIwMTgtMTg3NTEucGF0Y2gsCisjIGl0IHJlcXVpcmVzIHlhY2Mgd2hpY2ggcHJvdmlkZWQgYnkgYmlzb24tbmF0aXZlCisjIFBsZWFzZSByZW1vdmUgYmlzb24tbmF0aXZlIGZyb20gREVQRU5EUyogd2hlbiBuZXh0IHVwZ3JhZGUKK0RFUEVORFMgPSAiYmlzb24tbmF0aXZlIGdldHRleHQtbmF0aXZlIHZpcnR1YWwvbGliaWNvbnYiCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJiaXNvbi1uYXRpdmUgZ2V0dGV4dC1taW5pbWFsLW5hdGl2ZSIKK1BST1ZJREVTID0gInZpcnR1YWwvbGliaW50bCB2aXJ0dWFsL2dldHRleHQiCitQUk9WSURFU19jbGFzcy1uYXRpdmUgPSAidmlydHVhbC9nZXR0ZXh0LW5hdGl2ZSIKK1JDT05GTElDVFNfJHtQTn0gPSAicHJveHktbGliaW50bCIKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nZXR0ZXh0L2dldHRleHQtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3BhcmFsbGVsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FkZC13aXRoLWJpc29ubG9jYWxlZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2NyLXN0YXRlbWVudC5jLXRpbXNvcnQuaC1maXgtZm9ybWF0dGluZy1pc3N1ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vdXNlLXBrZ2NvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vc2VyaWFsLXRlc3RzLWNvbmZpZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1zZ21lcmdlLUZpeC1iZWhhdmlvdXItb2YtZm9yLW1zZ2ZtdC1vbi1QTy1maWxlcy13aXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1hdXRvcG9pbnQtMy11bnNldC1NQUtFRkxBR1MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1pbml0LWVudi5pbi1kby1ub3QtYWRkLUMtQ1hYLXBhcmFtZXRlcnMucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiYmI1YjBjMGNhYTAyODEwNWYzY2ExOTA1ZGRjMzA2ZTIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjY0MTU2MzRjNmU4YzNmYThiNzEzNjI4NzllYzc1NzVlMjdkYTQzZGE1NjJjNzk4YThhMmYyMjNlNmU0N2Y1YyIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBwa2djb25maWcgcHRlc3QKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlzcGRpciBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1jc2hhcnAgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtbGliYXNwcmludGYgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtamF2YSBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uYXRpdmUtamF2YSBcCisgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1vcGVubXAgXAorICAgICAgICAgICAgICAgICAtLWRpc2FibGUtYWNsIFwKKyAgICAgICAgICAgICAgICAgLS13aXRob3V0LWVtYWNzIFwKKyAgICAgICAgICAgICAgICAgLS13aXRob3V0LWN2cyBcCisgICAgICAgICAgICAgICAgIC0td2l0aG91dC1naXQgXAorICAgICAgICAgICAgICAgICAtLWNhY2hlLWZpbGU9JHtCfS9jb25maWcuY2FjaGUgXAorICAgICAgICAgICAgICAgICIKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCisgICAgICAgICAgICAgICAgIC0td2l0aC1iaXNvbmxvY2FsZWRpcj0ke2RhdGFkaXJ9L2xvY2FsZSBcCisgICAgICAgICAgICAgICAgIGd0X2N2X2xvY2FsZV9mcl91dGY4PWZyX0ZSIFwKKyAgICAgICAgICAgICAgICAgZ3RfY3ZfbG9jYWxlX2ZyPWZyX0ZSLklTTy04ODU5LTEgXAorICAgICAgICAgICAgICAgICBndF9jdl9sb2NhbGVfZGVfdXRmOD1kZV9ERSBcCisgICAgICAgICAgICAgICAgIGd0X2N2X2xvY2FsZV9kZT1kZV9ERS5JU08tODg1OS0xIFwKKyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImNyb2NvIGdsaWIgbGlieG1sIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiIgorCitQQUNLQUdFQ09ORklHW2Nyb2NvXSA9ICItLXdpdGhvdXQtaW5jbHVkZWQtbGliY3JvY28sLS13aXRoLWluY2x1ZGVkLWxpYmNyb2NvLGxpYmNyb2NvIgorUEFDS0FHRUNPTkZJR1tnbGliXSA9ICItLXdpdGhvdXQtaW5jbHVkZWQtZ2xpYiwtLXdpdGgtaW5jbHVkZWQtZ2xpYixnbGliLTIuMCIKK1BBQ0tBR0VDT05GSUdbbGlieG1sXSA9ICItLXdpdGhvdXQtaW5jbHVkZWQtbGlieG1sLC0td2l0aC1pbmNsdWRlZC1saWJ4bWwsbGlieG1sMiIKKyMgTmVlZCBwYXRocyBoZXJlIHRvIGF2b2lkIGhvc3QgY29udGFtaW5hdGlvbiBidXQgdGhpcyBjYW4gY2F1c2UgUlBBVEggd2FybmluZ3MKKyMgb3IgcHJvYmxlbXMgaWYgJGxpYmRpciBpc24ndCAkcHJlZml4L2xpYi4KK1BBQ0tBR0VDT05GSUdbbGlidW5pc3RyaW5nXSA9ICItLXdpdGgtbGlidW5pc3RyaW5nLXByZWZpeD0ke1NUQUdJTkdfTElCRElSfS8uLiwtLXdpdGgtaW5jbHVkZWQtbGlidW5pc3RyaW5nLGxpYnVuaXN0cmluZyIKK1BBQ0tBR0VDT05GSUdbbXNnY2F0LWN1cnNlc10gPSAiLS13aXRoLWxpYm5jdXJzZXMtcHJlZml4PSR7U1RBR0lOR19MSUJESVJ9Ly4uLC0tZGlzYWJsZS1jdXJzZXMsbmN1cnNlcywiCisKK2FjcGF0aHMgPSAnLUkgJHtTfS9nZXR0ZXh0LXJ1bnRpbWUvbTQgXAorICAgICAgICAgICAtSSAke1N9L2dldHRleHQtdG9vbHMvbTQnCisKK2RvX2luc3RhbGxfYXBwZW5kX2xpYmMtbXVzbCAoKSB7CisJcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCisJcm0gLWYgJHtEfSR7aW5jbHVkZWRpcn0vbGliaW50bC5oCisJcm0gLWYgJHtEfSR7bGliZGlyfS9saWJpbnRsLmxhCit9CisKKyMgdGhlc2UgbGFjayB0aGUgLnggYmVoaW5kIHRoZSAuc28sIGJ1dCBzaG91bGRuJ3QgYmUgaW4gdGhlIC1kZXYgcGFja2FnZQorIyBPdGhlcndpc2UgeW91IGdldCB0aGUgZm9sbG93aW5nIHJlc3VsdHM6CisjIDcuNE0gICAgZ2xpYmMvaW1hZ2VzL2VwOTN4eC9BbmdzdHJvbS1jb25zb2xlLWltYWdlLWdsaWJjLWlway0yMDA4LjEtdGVzdC0yMDA4MDEwNC1lcDkzeHgucm9vdGZzLnRhci5negorIyAyNU0gICAgIHVjbGliYy9pbWFnZXMvZXA5M3h4L0FuZ3N0cm9tLWNvbnNvbGUtaW1hZ2UtdWNsaWJjLWlway0yMDA4LjEtdGVzdC0yMDA4MDEwNC1lcDkzeHgucm9vdGZzLnRhci5negorIyBiZWNhdXNlIGdldHRleHQgZGVwZW5kcyBvbiBnZXR0ZXh0LWRldiwgd2hpY2ggcHVsbHMgaW4gbW9yZSAtZGV2IHBhY2thZ2VzOgorIyAxNTIyOCAgIEtpQiAvZXA5M3h4L2xpYnN0ZGMrKy1kZXZfNC4yLjItcjJfZXA5M3h4LmlwaworIyAxMzAwICAgIEtpQiAvZXA5M3h4L3VjbGliYy1kZXZfMC45LjI5LXI4X2VwOTN4eC5pcGsKKyMgMTQwICAgICBLaUIgL2FybXY0dC9nZXR0ZXh0LWRldl8wLjE0LjEtcjZfYXJtdjR0LmlwaworIyA0ICAgICAgIEtpQiAvZXA5M3h4L2xpYmdjYy1zLWRldl80LjIuMi1yMl9lcDkzeHguaXBrCisKK1BBQ0tBR0VTID0rICJsaWJnZXR0ZXh0bGliIGxpYmdldHRleHRzcmMiCitGSUxFU19saWJnZXR0ZXh0bGliID0gIiR7bGliZGlyfS9saWJnZXR0ZXh0bGliLSouc28qIgorRklMRVNfbGliZ2V0dGV4dHNyYyA9ICIke2xpYmRpcn0vbGliZ2V0dGV4dHNyYy0qLnNvKiIKKworUEFDS0FHRVMgPSsgImdldHRleHQtcnVudGltZSBnZXR0ZXh0LXJ1bnRpbWUtZGV2IGdldHRleHQtcnVudGltZS1kb2MiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vJHtCUE59LyoiCisKKyMgVGhlIGl0cy9NYWtlZmlsZS5hbSBoYXMgZGVmaW5lZDoKKyMgaXRzZGlyID0gJChwa2dkYXRhZGlyKSQoUEFDS0FHRV9TVUZGSVgpL2l0cworIyBub3QgaXRzZGlyID0gJChwa2dkYXRhZGlyKSwgc28gdXNlIHdpbGRjYXJkIHRvIG1hdGNoIHRoZSB2ZXJzaW9uLgorRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vJHtCUE59LSovKiIKKworRklMRVNfZ2V0dGV4dC1ydW50aW1lID0gIiR7YmluZGlyfS9nZXR0ZXh0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vbmdldHRleHQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9lbnZzdWJzdCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2dldHRleHQuc2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJhc3ByaW50Zi5zbyogXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9HTlUuR2V0dGV4dC5kbGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgIgorRklMRVNfZ2V0dGV4dC1ydW50aW1lLWRldiArPSAiJHtsaWJkaXJ9L2xpYmFzcHJpbnRmLmEgXAorICAgICAgICAgICAgICAgICAgICAgICR7aW5jbHVkZWRpcn0vYXV0b3NwcmludGYuaCBcCisgICAgICAgICAgICAgICAgICAgICAiCitGSUxFU19nZXR0ZXh0LXJ1bnRpbWUtZG9jID0gIiR7bWFuZGlyfS9tYW4xL2dldHRleHQuKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL25nZXR0ZXh0LiogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9lbnZzdWJzdC4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvLiogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMy8qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2dldHRleHQvZ2V0dGV4dC4qIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkb2NkaXJ9L2dldHRleHQvbmdldHRleHQuKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9nZXR0ZXh0L2VudnN1YnN0LiogXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vZ2V0dGV4dC8qLjMuaHRtbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ2V0dGV4dC9BQk9VVC1OTFMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke2RvY2Rpcn0vZ2V0dGV4dC9jc2hhcnBkb2MvKiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZG9jZGlyfS9saWJhc3ByaW50Zi9hdXRvc3ByaW50Zi5odG1sIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtpbmZvZGlyfS9hdXRvc3ByaW50Zi5pbmZvIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIHJtIC1mICR7RH0ke2xpYmRpcn0vcHJlbG9hZGFibGVfbGliaW50bC5zbworfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUgKCkgeworCXJtICR7RH0ke2RhdGFkaXJ9L2FjbG9jYWwvKgorCXJtICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvY29uZmlnLnJwYXRoCisJcm0gJHtEfSR7ZGF0YWRpcn0vZ2V0dGV4dC9wby9NYWtlZmlsZS5pbi5pbgorCXJtICR7RH0ke2RhdGFkaXJ9L2dldHRleHQvcG8vcmVtb3ZlLXBvdGNkYXRlLnNpbgorCisgICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vbXNnZm10IFwKKyAgICAgICAgICAgICAgICBHRVRURVhUREFUQURJUj0iJHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9nZXR0ZXh0LTAuMjAvIgorCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgICAgIGNkICR7Qn0vZ2V0dGV4dC10b29scy90ZXN0cy8KKyAgICAgICAgc2VkIC1pICcvXmJ1aWxkdGVzdC1URVNUUzogL2MgYnVpbGR0ZXN0LVRFU1RTOiAkKFRFU1RTKSAkKGNoZWNrX1BST0dSQU1TKScgTWFrZWZpbGUKKyAgICAgICAgb2VfcnVubWFrZSBidWlsZHRlc3QtVEVTVFMKKyAgICAgICAgY2QgLQorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIGlmIFsgJHtQVEVTVF9FTkFCTEVEfSA9ICIxIiBdOyB0aGVuCisgICAgICAgIG1rZGlyIC1wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgICAgIG1rZGlyIC1wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYworICAgICAgICBta2RpciAtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9wbworICAgICAgICBta2RpciAtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9taXNjCisgICAgICAgIG1rZGlyIC1wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2l0cworICAgICAgICBta2RpciAtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9zdHlsZXMKKyAgICAgICAgbWtkaXIgLXAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vZ251bGliLWxpYgorICAgICAgICBta2RpciAtcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9leGFtcGxlcworICAgICAgICBjcCAtcmYgJHtTfS9nZXR0ZXh0LXRvb2xzL2l0cy8qICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9pdHMKKyAgICAgICAgY3AgLXJmICR7U30vZ2V0dGV4dC10b29scy9zdHlsZXMvKiAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3R5bGVzCisgICAgICAgIGNwIC1yZiAke1N9L2dldHRleHQtdG9vbHMvZ251bGliLWxpYi9nZXR0ZXh0LmggICR7RH0ke1BURVNUX1BBVEh9L2dudWxpYi1saWIKKyAgICAgICAgY3AgLXJmICR7U30vZ2V0dGV4dC10b29scy9leGFtcGxlcy9oZWxsby1jICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vZXhhbXBsZXMKKyAgICAgICAgY3AgLXJmICR7U30vZ2V0dGV4dC10b29scy90ZXN0cy8qICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICAgICAgY3AgLXJmICR7Qn0vZ2V0dGV4dC10b29scy90ZXN0cy8ubGlicy8qICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICAgICAgY3AgLXJmICR7Qn0vZ2V0dGV4dC1ydW50aW1lL2ludGwvLmxpYnMvbGliZ251aW50bC5zby44KiAgICAgICAgICR7RH0ke2xpYmRpcn0vCisgICAgICAgIGNwIC1yZiAke0J9L2dldHRleHQtdG9vbHMvdGVzdHMvTWFrZWZpbGUgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgICAgIGNwIC1yZiAke0J9L2dldHRleHQtdG9vbHMvdGVzdHMvaW5pdC1lbnYgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgICAgIHNlZCAtaSAnL15NYWtlZmlsZTovYyBNYWtlZmlsZTonICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCisgICAgICAgIHNlZCAtaSAtZSAnczpsYW5nLWMgbGFuZy1jKys6bGFuZy1jKys6ZycgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCisgICAgICAgIGluc3RhbGwgJHtTfS9nZXR0ZXh0LXRvb2xzL3NyYy9tc2d1bmZtdC50Y2wgICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYworICAgICAgICBpbnN0YWxsICR7U30vZ2V0dGV4dC10b29scy9zcmMvcHJvamVjdC1pZCAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKKyAgICAgICAgaW5zdGFsbCAke0J9L2dldHRleHQtcnVudGltZS9zcmMvZ2V0dGV4dC5zaCAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCisgICAgICAgIGluc3RhbGwgJHtCfS9nZXR0ZXh0LXJ1bnRpbWUvc3JjL25nZXR0ZXh0ICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3NyYworICAgICAgICBpbnN0YWxsICR7Qn0vZ2V0dGV4dC1ydW50aW1lL3NyYy9lbnZzdWJzdCAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKKyAgICAgICAgaW5zdGFsbCAke0J9L2dldHRleHQtcnVudGltZS9zcmMvZ2V0dGV4dCAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vc3JjCisgICAgICAgIGluc3RhbGwgJHtCfS9nZXR0ZXh0LXRvb2xzL3NyYy8ubGlicy9jbGRyLXBsdXJhbHMgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKKyAgICAgICAgaW5zdGFsbCAke1N9L2dldHRleHQtdG9vbHMvcG8vZ2V0dGV4dC10b29scy5wb3QgJHtEfSR7UFRFU1RfUEFUSH0vcG8KKyAgICAgICAgaW5zdGFsbCAke0J9L2dldHRleHQtdG9vbHMvbWlzYy8qICAgICAgICR7RH0ke1BURVNUX1BBVEh9L21pc2MKKyAgICAgICAgZmluZCAke0R9JHtQVEVTVF9QQVRIfS8gLW5hbWUgIioubyIgLWV4ZWMgcm0ge30gXDsKKyAgICAgICAgY2htb2QgMDc1NSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9sYW5nLXZhbGEgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcGx1cmFsLTEgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMveGdldHRleHQtdGNsLTQgXAorICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3hnZXR0ZXh0LXZhbGEtMSAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMveGdldHRleHQtcG8tMgorICAgIGZpCit9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgorUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiXAorICAgIGdsaWJjLWdjb252LWJpZzUgXAorICAgIGdsaWJjLWNoYXJtYXAtYmlnNSBcCisgICAgZ2xpYmMtZ2NvbnYtY3AxMjUxIFwKKyAgICBnbGliYy1jaGFybWFwLWNwMTI1MSBcCisgICAgZ2xpYmMtY2hhcm1hcC1pc28tODg1OS05IFwKKyAgICBnbGliYy1nY29udi1pc284ODU5LTkgXAorICAgIGdsaWJjLWNoYXJtYXAta29pOC1yIFwKKyAgICBnbGliYy1nY29udi1rb2k4LXIgXAorICAgIGdsaWJjLWdjb252LWlzbzg4NTktMiBcCisgICAgZ2xpYmMtY2hhcm1hcC1pc28tODg1OS0yIFwKKyAgICBnbGliYy1nY29udi1pc284ODU5LTEgXAorICAgIGdsaWJjLWNoYXJtYXAtaXNvLTg4NTktMSBcCisgICAgZ2xpYmMtZ2NvbnYtZXVjLWtyIFwKKyAgICBnbGliYy1jaGFybWFwLWV1Yy1rciBcCisgICAgZ2xpYmMtZ2NvbnYtZXVjLWpwIFwKKyAgICBnbGliYy1jaGFybWFwLWV1Yy1qcCBcCisgICAgbG9jYWxlLWJhc2UtZGUtZGUgXAorICAgIGxvY2FsZS1iYXNlLWZyLWZyIFwKKyIKKworUlJFQ09NTUVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiXAorICAgIGxvY2FsZS1iYXNlLWRlLWRlLmlzby04ODU5LTEgXAorICAgIGxvY2FsZS1iYXNlLWZyLWZyLmlzby04ODU5LTEgXAorIgorCitJTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAibGRmbGFncyIKK0lOU0FORV9TS0lQXyR7UE59LXB0ZXN0ICs9ICJycGF0aHMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAwMS1naW8tdGVzdHMtcmVzb3VyY2VzLmMtY29tbWVudC1vdXQtYS1idWlsZC1ob3N0LW9ubHktLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDAxLWdpby10ZXN0cy1yZXNvdXJjZXMuYy1jb21tZW50LW91dC1hLWJ1aWxkLWhvc3Qtb25seS0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RmZWYxNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAwMS1naW8tdGVzdHMtcmVzb3VyY2VzLmMtY29tbWVudC1vdXQtYS1idWlsZC1ob3N0LW9ubHktLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gNzMwODAzZjJiYzNmMmYxYTc0ZjRkYjgwOWEyMjQwNjZlN2VhZTExNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCA4IEphbiAyMDIwIDE4OjIyOjQ2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGdpby90ZXN0cy9yZXNvdXJjZXMuYzogY29tbWVudCBvdXQgYSBidWlsZCBob3N0LW9ubHkgdGVzdAorCitUaGlzIHRlc3QgcmVxdWlyZXMgYnVpbGRpbmcgcmVzb3VyY2VzIGluIGEgd2F5IHRoYXQgaXMKK25vdCBjcm9zcy1jb21wYXRpYmxlIChoYXJkY29kZXMgbGQgYW5kIG9iamNvcHkpLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGdpby90ZXN0cy9yZXNvdXJjZXMuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2dpby90ZXN0cy9yZXNvdXJjZXMuYyBiL2dpby90ZXN0cy9yZXNvdXJjZXMuYworaW5kZXggYzQ0ZDIxNC4uZTI4OWEwMSAxMDA2NDQKKy0tLSBhL2dpby90ZXN0cy9yZXNvdXJjZXMuYworKysrIGIvZ2lvL3Rlc3RzL3Jlc291cmNlcy5jCitAQCAtOTkzLDcgKzk5Myw3IEBAIG1haW4gKGludCAgIGFyZ2MsCisgICBnX3Rlc3RfYWRkX2Z1bmMgKCIvcmVzb3VyY2UvYXV0b21hdGljIiwgdGVzdF9yZXNvdXJjZV9hdXRvbWF0aWMpOworICAgLyogVGhpcyBvbmx5IHVzZXMgYXV0b21hdGljIHJlc291cmNlcyB0b28sIHNvIGl0IHRlc3RzIHRoZSBjb25zdHJ1Y3RvcnMgYW5kIGRlc3RydWN0b3JzICovCisgICBnX3Rlc3RfYWRkX2Z1bmMgKCIvcmVzb3VyY2UvbW9kdWxlIiwgdGVzdF9yZXNvdXJjZV9tb2R1bGUpOworLSAgZ190ZXN0X2FkZF9mdW5jICgiL3Jlc291cmNlL2JpbmFyeS1saW5rZWQiLCB0ZXN0X3Jlc291cmNlX2JpbmFyeV9saW5rZWQpOworKyAgLyogZ190ZXN0X2FkZF9mdW5jICgiL3Jlc291cmNlL2JpbmFyeS1saW5rZWQiLCB0ZXN0X3Jlc291cmNlX2JpbmFyeV9saW5rZWQpOyAqLworICNlbmRpZgorICAgZ190ZXN0X2FkZF9mdW5jICgiL3Jlc291cmNlL3VyaS9xdWVyeS1pbmZvIiwgdGVzdF91cmlfcXVlcnlfaW5mbyk7CisgICBnX3Rlc3RfYWRkX2Z1bmMgKCIvcmVzb3VyY2UvdXJpL2ZpbGUiLCB0ZXN0X3VyaV9maWxlKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAxMS1HTWFpbkNvbnRleHQtRml4LUdTb3VyY2UtaXRlcmF0b3ItaWYtaXRlcmF0aW9uLWNhbi1tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDExLUdNYWluQ29udGV4dC1GaXgtR1NvdXJjZS1pdGVyYXRvci1pZi1pdGVyYXRpb24tY2FuLW0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzdiNzdkNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAxMS1HTWFpbkNvbnRleHQtRml4LUdTb3VyY2UtaXRlcmF0b3ItaWYtaXRlcmF0aW9uLWNhbi1tLnBhdGNoCkBAIC0wLDAgKzEsNDMgQEAKK0Zyb20gZWYyYmU0Mjk5OGUzZmMxMDI5OTA1NWE1YTAxZjdjNzkxNTM4MTc0YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9TZWJhc3RpYW49MjBEcj1DMz1CNmdlPz0gPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CitEYXRlOiBNb24sIDMgRmViIDIwMjAgMTU6Mzg6MjggKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gR01haW5Db250ZXh0IC0gRml4IEdTb3VyY2UgaXRlcmF0b3IgaWYgaXRlcmF0aW9uIGNhbiBtb2RpZnkKKyB0aGUgbGlzdAorCitXZSBmaXJzdCBoYXZlIHRvIHJlZiB0aGUgbmV4dCBzb3VyY2UgYW5kIHRoZW4gdW5yZWYgdGhlIHByZXZpb3VzIG9uZS4KK1RoaXMgbWlnaHQgYmUgdGhlIGxhc3QgcmVmZXJlbmNlIHRvIHRoZSBwcmV2aW91cyBzb3VyY2UsIGFuZCBmcmVlaW5nIHRoZQorcHJldmlvdXMgc291cmNlIG1pZ2h0IHVucmVmIGFuZCBmcmVlIHRoZSBuZXh0IG9uZSB3aGljaCB3b3VsZCB0aGVuIGxlYXZlCit1c2Ugd2l0aCBhIGRhbmdsaW5nIHBvaW50ZXIgaGVyZS4KKworRml4ZXMgaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dsaWIvaXNzdWVzLzIwMzEKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dsaWIvLS9jb21taXQvYjA2YzQ4ZGU3NTU0NjA3ZmYzZmI1OGQ2YzA1MTBjZmE1MDg4ZTkwOV0KKworLS0tCisgZ2xpYi9nbWFpbi5jIHwgOCArKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nbGliL2dtYWluLmMgYi9nbGliL2dtYWluLmMKK2luZGV4IGFmOTc5YzguLmE5YTI4N2QgMTAwNjQ0CistLS0gYS9nbGliL2dtYWluLmMKKysrKyBiL2dsaWIvZ21haW4uYworQEAgLTk2OSwxMyArOTY5LDE3IEBAIGdfc291cmNlX2l0ZXJfbmV4dCAoR1NvdXJjZUl0ZXIgKml0ZXIsIEdTb3VyY2UgKipzb3VyY2UpCisgICAgKiBHU291cmNlTGlzdCB0byBiZSByZW1vdmVkIGZyb20gc291cmNlX2xpc3RzIChpZiBpdGVyLT5zb3VyY2UgaXMKKyAgICAqIHRoZSBvbmx5IHNvdXJjZSBpbiBpdHMgbGlzdCwgYW5kIGl0IGlzIGRlc3Ryb3llZCksIHNvIHdlIGhhdmUgdG8KKyAgICAqIGtlZXAgaXQgcmVmZmVkIHVudGlsIGFmdGVyIHdlIGFkdmFuY2UgaXRlci0+Y3VycmVudF9saXN0LCBhYm92ZS4KKysgICAqCisrICAgKiBBbHNvIHdlIGZpcnN0IGhhdmUgdG8gcmVmIHRoZSBuZXh0IHNvdXJjZSBiZWZvcmUgdW5yZWZmaW5nIHRoZQorKyAgICogcHJldmlvdXMgb25lIGFzIHVucmVmZmluZyB0aGUgcHJldmlvdXMgc291cmNlIGNhbiBwb3RlbnRpYWxseQorKyAgICogZnJlZSB0aGUgbmV4dCBvbmUuCisgICAgKi8KKysgIGlmIChuZXh0X3NvdXJjZSAmJiBpdGVyLT5tYXlfbW9kaWZ5KQorKyAgICBnX3NvdXJjZV9yZWYgKG5leHRfc291cmNlKTsKKworICAgaWYgKGl0ZXItPnNvdXJjZSAmJiBpdGVyLT5tYXlfbW9kaWZ5KQorICAgICBnX3NvdXJjZV91bnJlZl9pbnRlcm5hbCAoaXRlci0+c291cmNlLCBpdGVyLT5jb250ZXh0LCBUUlVFKTsKKyAgIGl0ZXItPnNvdXJjZSA9IG5leHRfc291cmNlOworLSAgaWYgKGl0ZXItPnNvdXJjZSAmJiBpdGVyLT5tYXlfbW9kaWZ5KQorLSAgICBnX3NvdXJjZV9yZWYgKGl0ZXItPnNvdXJjZSk7CisKKyAgICpzb3VyY2UgPSBpdGVyLT5zb3VyY2U7CisgICByZXR1cm4gKnNvdXJjZSAhPSBOVUxMOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDEyLUdNYWluQ29udGV4dC1GaXgtbWVtb3J5LWxlYWtzLWFuZC1tZW1vcnktY29ycnVwdGlvbi0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMTItR01haW5Db250ZXh0LUZpeC1tZW1vcnktbGVha3MtYW5kLW1lbW9yeS1jb3JydXB0aW9uLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjk3ZDlkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC8wMDEyLUdNYWluQ29udGV4dC1GaXgtbWVtb3J5LWxlYWtzLWFuZC1tZW1vcnktY29ycnVwdGlvbi0ucGF0Y2gKQEAgLTAsMCArMSwxMDkgQEAKK0Zyb20gNjExNDMwYTMyYTQ2ZDBkYzgwNmE4MjkxNjFlMmRjY2Y5YzAxOTZhOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206ID0/VVRGLTg/cT9TZWJhc3RpYW49MjBEcj1DMz1CNmdlPz0gPHNlYmFzdGlhbkBjZW50cmljdWxhci5jb20+CitEYXRlOiBNb24sIDMgRmViIDIwMjAgMTU6MzU6NTEgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gR01haW5Db250ZXh0IC0gRml4IG1lbW9yeSBsZWFrcyBhbmQgbWVtb3J5IGNvcnJ1cHRpb24gd2hlbgorIGZyZWVpbmcgc291cmNlcyB3aGlsZSBmcmVlaW5nIGEgY29udGV4dAorCitJbnN0ZWFkIG9mIGRlc3Ryb3lpbmcgc291cmNlcyBkaXJlY3RseSB3aGlsZSBmcmVlaW5nIHRoZSBjb250ZXh0LCBhbmQKK3BvdGVudGlhbGx5IGZyZWVpbmcgdGhlbSBpZiB0aGlzIHdhcyB0aGUgbGFzdCByZWZlcmVuY2UgdG8gdGhlbSwgY29sbGVjdAorbmV3IHJlZmVyZW5jZXMgb2YgYWxsIHNvdXJjZXMgaW4gYSBzZXBhcmF0ZSBsaXN0IGJlZm9yZSBhbmQgYXQgdGhlIHNhbWUKK3RpbWUgaW52YWxpZGF0ZSB0aGVpciBjb250ZXh0IHNvIHRoYXQgdGhleSBjYW4ndCBhY2Nlc3MgaXQgYW55bW9yZS4gT25seQorb25jZSBhbGwgc291cmNlcyBoYXZlIHRoZWlyIGNvbnRleHQgaW52YWxpZGF0ZWQsIGRlc3Ryb3kgdGhlbSB3aGlsZQorc3RpbGwga2VlcGluZyBhIHJlZmVyZW5jZSB0byB0aGVtLiBPbmNlIGFsbCBzb3VyY2VzIGFyZSBkZXN0cm95ZWQgd2UgZ2V0CityaWQgb2YgdGhlIGFkZGl0aW9uYWwgcmVmZXJlbmNlcyBhbmQgZnJlZSB0aGVtIGlmIG5vdGhpbmcgZWxzZSBrZWVwcyBhCityZWZlcmVuY2UgdG8gdGhlbSBhbnltb3JlLgorCitUaGlzIGZpeGVzIGEgcmVncmVzc2lvbiBpbnRyb2R1Y2VkIGJ5IDI2MDU2NTU4YmUgaW4gMjAxMi4KKworVGhlIHByZXZpb3VzIGNvZGUgdGhhdCBpbnZhbGlkYXRlZCB0aGUgY29udGV4dCBvZiBlYWNoIHNvdXJjZSBhbmQgdGhlbgorZGVzdHJveWVkIGl0IGJlZm9yZSBnb2luZyB0byB0aGUgbmV4dCBzb3VyY2Ugd2l0aG91dCBrZWVwaW5nIGFuCithZGRpdGlvbmFsIHJlZmVyZW5jZSBjYXVzZWQgbWVtb3J5IGxlYWtzIG9yIG1lbW9yeSBjb3JydXB0aW9uIGRlcGVuZGluZworb24gdGhlIG9yZGVyIG9mIHRoZSBzb3VyY2VzIGluIHRoZSBzb3VyY2VzIGxpc3RzLgorCitJZiBhIHNvdXJjZSB3YXMgZGVzdHJveWVkIGl0IG1pZ2h0IGhhcHBlbiB0aGF0IHRoaXMgd2FzIHRoZSBsYXN0CityZWZlcmVuY2UgdG8gdGhpcyBzb3VyY2UsIGFuZCBpdCB3b3VsZCB0aGVuIGJlIGZyZWVkLiBUaGlzIHdvdWxkIGNhdXNlCit0aGUgZmluYWxpemUgZnVuY3Rpb24gdG8gYmUgY2FsbGVkLCB3aGljaCBtaWdodCBkZXN0cm95IGFuZCB1bnJlZgorYW5vdGhlciBzb3VyY2UgYW5kIHBvdGVudGlhbGx5IGZyZWUgaXQuIFRoaXMgb3RoZXIgc291cmNlIHdvdWxkIHRoZW4KK2VpdGhlcgorLSBnbyB0aHJvdWdoIHRoZSBub3JtYWwgZnJlZSBsb2dpYyBhbmQgY2hhbmdlIHRoZSBpbnRlcm4gbGlua2VkIGxpc3QKKyAgYmV0d2VlbiB0aGUgc291cmNlcywgd2hpbGUgb3RoZXIgc291cmNlcyB0aGF0IGFyZSB1bnJlZmZlZCBhcyBwYXJ0IG9mCisgIHRoZSBtYWluIGNvbnRleHQgZnJlZWluZyB3b3VsZCBub3QuIEFzIHN1Y2ggdGhlIGxpc3Qgd291bGQgYmUgaW4gYW4KKyAgaW5jb25zaXN0ZW50IHN0YXRlIGFuZCB3ZSBtaWdodCBkZXJlZmVyZW5jZSBmcmVlZCBtZW1vcnkuCistIGdvIHRocm91Z2ggdGhlIG5vcm1hbCBkZXN0cm95IGFuZCBmcmVlIGxvZ2ljIGJ1dCBiZWNhdXNlIHRoZSBjb250ZXh0CisgIHBvaW50ZXIgd2FzIGFscmVhZHkgaW52YWxpZGF0ZWQgaXQgd291bGQgc2ltcGx5IG1hcmsgdGhlIHNvdXJjZSBhcworICBkZXN0cm95ZWQgd2l0aG91dCBhY3R1YWxseSByZW1vdmluZyBpdCBmcm9tIHRoZSBjb250ZXh0LiBUaGlzIHdvdWxkCisgIHRoZW4gY2F1c2UgYSBtZW1vcnkgbGVhayBiZWNhdXNlIHRoZSByZWZlcmVuY2Ugb3duZWQgYnkgdGhlIGNvbnRleHQgaXMKKyAgbm90IGZyZWVkLgorCitGaXhlcyBodHRwczovL2dpdGh1Yi5jb20vZ3RrLXJzL2dsaWIvaXNzdWVzLzU4MyB3aGlsZSBzdGlsbCBrZWVwaW5nCitodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NjYxNzY3IGZpeGVzLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ2xpYi8tL2NvbW1pdC9hYTIwMTY3ZDQxOWM2NDlmMzRmZWQwNmE5NDYzODkwYjQxYjFlYmEwXQorCistLS0KKyBnbGliL2dtYWluLmMgfCAzNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCAzNCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nbGliL2dtYWluLmMgYi9nbGliL2dtYWluLmMKK2luZGV4IGE5YTI4N2QuLjEwYmEyZjggMTAwNjQ0CistLS0gYS9nbGliL2dtYWluLmMKKysrKyBiL2dsaWIvZ21haW4uYworQEAgLTUzOCw2ICs1MzgsNyBAQCBnX21haW5fY29udGV4dF91bnJlZiAoR01haW5Db250ZXh0ICpjb250ZXh0KQorICAgR1NvdXJjZUl0ZXIgaXRlcjsKKyAgIEdTb3VyY2UgKnNvdXJjZTsKKyAgIEdMaXN0ICpzbF9pdGVyOworKyAgR1NMaXN0ICpzX2l0ZXIsICpyZW1haW5pbmdfc291cmNlcyA9IE5VTEw7CisgICBHU291cmNlTGlzdCAqbGlzdDsKKyAgIGd1aW50IGk7CisKK0BAIC01NTcsMTAgKzU1OCwzMCBAQCBnX21haW5fY29udGV4dF91bnJlZiAoR01haW5Db250ZXh0ICpjb250ZXh0KQorCisgICAvKiBnX3NvdXJjZV9pdGVyX25leHQoKSBhc3N1bWVzIHRoZSBjb250ZXh0IGlzIGxvY2tlZC4gKi8KKyAgIExPQ0tfQ09OVEVYVCAoY29udGV4dCk7CistICBnX3NvdXJjZV9pdGVyX2luaXQgKCZpdGVyLCBjb250ZXh0LCBUUlVFKTsKKysKKysgIC8qIEZpcnN0IGNvbGxlY3QgYWxsIHJlbWFpbmluZyBzb3VyY2VzIGZyb20gdGhlIHNvdXJjZXMgbGlzdHMgYW5kIHN0b3JlIGEKKysgICAqIG5ldyByZWZlcmVuY2UgaW4gYSBzZXBhcmF0ZSBsaXN0LiBBbHNvIHNldCB0aGUgY29udGV4dCBvZiB0aGUgc291cmNlcworKyAgICogdG8gTlVMTCBzbyB0aGF0IHRoZXkgY2FuJ3QgYWNjZXNzIGEgcGFydGlhbGx5IGRlc3Ryb3llZCBjb250ZXh0IGFueW1vcmUuCisrICAgKgorKyAgICogV2UgaGF2ZSB0byBkbyB0aGlzIGZpcnN0IHNvIHRoYXQgd2UgaGF2ZSBhIHN0cm9uZyByZWZlcmVuY2UgdG8gYWxsCisrICAgKiBzb3VyY2VzIGFuZCBkZXN0cm95aW5nIHRoZW0gYmVsb3cgZG9lcyBub3QgYWxzbyBmcmVlIHRoZW0sIGFuZCBzbyB0aGF0CisrICAgKiBub25lIG9mIHRoZSBzb3VyY2VzIGNhbiBhY2Nlc3MgdGhlIGNvbnRleHQgZnJvbSB0aGVpciBmaW5hbGl6ZS9kaXNwb3NlCisrICAgKiBmdW5jdGlvbnMuICovCisrICBnX3NvdXJjZV9pdGVyX2luaXQgKCZpdGVyLCBjb250ZXh0LCBGQUxTRSk7CisgICB3aGlsZSAoZ19zb3VyY2VfaXRlcl9uZXh0ICgmaXRlciwgJnNvdXJjZSkpCisgICAgIHsKKyAgICAgICBzb3VyY2UtPmNvbnRleHQgPSBOVUxMOworKyAgICAgIHJlbWFpbmluZ19zb3VyY2VzID0gZ19zbGlzdF9wcmVwZW5kIChyZW1haW5pbmdfc291cmNlcywgZ19zb3VyY2VfcmVmIChzb3VyY2UpKTsKKysgICAgfQorKyAgZ19zb3VyY2VfaXRlcl9jbGVhciAoJml0ZXIpOworKworKyAgLyogTmV4dCBkZXN0cm95IGFsbCBzb3VyY2VzLiBBcyB3ZSBzdGlsbCBob2xkIGEgcmVmZXJlbmNlIHRvIGFsbCBvZiB0aGVtLAorKyAgICogdGhpcyB3b24ndCBjYXVzZSBhbnkgb2YgdGhlbSB0byBiZSBmcmVlZCB5ZXQgYW5kIGVzcGVjaWFsbHkgcHJldmVudHMgYW55CisrICAgKiBzb3VyY2UgdGhhdCB1bnJlZnMgYW5vdGhlciBzb3VyY2UgZnJvbSBpdHMgZmluYWxpemUgZnVuY3Rpb24gdG8gYmUgZnJlZWQuCisrICAgKi8KKysgIGZvciAoc19pdGVyID0gcmVtYWluaW5nX3NvdXJjZXM7IHNfaXRlcjsgc19pdGVyID0gc19pdGVyLT5uZXh0KQorKyAgICB7CisrICAgICAgc291cmNlID0gc19pdGVyLT5kYXRhOworICAgICAgIGdfc291cmNlX2Rlc3Ryb3lfaW50ZXJuYWwgKHNvdXJjZSwgY29udGV4dCwgVFJVRSk7CisgICAgIH0KKyAgIFVOTE9DS19DT05URVhUIChjb250ZXh0KTsKK0BAIC01ODUsNiArNjA2LDE4IEBAIGdfbWFpbl9jb250ZXh0X3VucmVmIChHTWFpbkNvbnRleHQgKmNvbnRleHQpCisgICBnX2NvbmRfY2xlYXIgKCZjb250ZXh0LT5jb25kKTsKKworICAgZ19mcmVlIChjb250ZXh0KTsKKysKKysgIC8qIEFuZCBub3cgZmluYWxseSBnZXQgcmlkIG9mIG91ciByZWZlcmVuY2VzIHRvIHRoZSBzb3VyY2VzLiBUaGlzIHdpbGwgY2F1c2UKKysgICAqIHRoZW0gdG8gYmUgZnJlZWQgdW5sZXNzIHNvbWV0aGluZyBlbHNlIHN0aWxsIGhhcyBhIHJlZmVyZW5jZSB0byB0aGVtLiBEdWUKKysgICAqIHRvIHNldHRpbmcgdGhlIGNvbnRleHQgcG9pbnRlcnMgaW4gdGhlIHNvdXJjZXMgdG8gTlVMTCBhYm92ZSwgdGhpcyB3b24ndAorKyAgICogZXZlciBhY2Nlc3MgdGhlIGNvbnRleHQgb3IgdGhlIGludGVybmFsIGxpbmtlZCBsaXN0IGluc2lkZSB0aGUgR1NvdXJjZS4KKysgICAqIFdlIGFscmVhZHkgcmVtb3ZlZCB0aGUgc291cmNlcyBjb21wbGV0ZWx5IGZyb20gdGhlIGNvbnRleHQgYWJvdmUuICovCisrICBmb3IgKHNfaXRlciA9IHJlbWFpbmluZ19zb3VyY2VzOyBzX2l0ZXI7IHNfaXRlciA9IHNfaXRlci0+bmV4dCkKKysgICAgeworKyAgICAgIHNvdXJjZSA9IHNfaXRlci0+ZGF0YTsKKysgICAgICBnX3NvdXJjZV91bnJlZl9pbnRlcm5hbCAoc291cmNlLCBOVUxMLCBGQUxTRSk7CisrICAgIH0KKysgIGdfc2xpc3RfZnJlZSAocmVtYWluaW5nX3NvdXJjZXMpOworIH0KKworIC8qIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IG1haW5sb29wL292ZXJmbG93IHRlc3QuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMTMtR01haW5Db250ZXh0LU1vdmUtbXV0ZXgtdW5sb2NraW5nLWluLWRlc3RydWN0b3ItcmlnaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvMDAxMy1HTWFpbkNvbnRleHQtTW92ZS1tdXRleC11bmxvY2tpbmctaW4tZGVzdHJ1Y3Rvci1yaWdoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRjOWU5ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wLzAwMTMtR01haW5Db250ZXh0LU1vdmUtbXV0ZXgtdW5sb2NraW5nLWluLWRlc3RydWN0b3ItcmlnaC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDNlOWQ4NWYxYjc1ZTJiMTA5NmQ5NjQzNTYzZDdkMTczODA3NTJmYzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/U2ViYXN0aWFuPTIwRHI9QzM9QjZnZT89IDxzZWJhc3RpYW5AY2VudHJpY3VsYXIuY29tPgorRGF0ZTogVHVlLCAxMSBGZWIgMjAyMCAwOTozNDozOCArMDIwMAorU3ViamVjdDogW1BBVENIXSBHTWFpbkNvbnRleHQgLSBNb3ZlIG11dGV4IHVubG9ja2luZyBpbiBkZXN0cnVjdG9yIHJpZ2h0CisgYmVmb3JlIGZyZWVpbmcgdGhlIG11dGV4CisKK1RoaXMgZG9lcyBub3QgaGF2ZSBhbnkgYmVoYXZpb3VyIGNoYW5nZXMgYnV0IGlzIGNsZWFuZXIuIFRoZSBtdXRleCBpcworb25seSB1bmxvY2tlZCBub3cgYWZ0ZXIgYWxsIG9wZXJhdGlvbnMgb24gdGhlIGNvbnRleHQgYXJlIGRvbmUgYW5kIHJpZ2h0CitiZWZvcmUgZnJlZWluZyB0aGUgbXV0ZXggYW5kIHRoZSBjb250ZXh0IGl0c2VsZi4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dsaWIvLS9jb21taXQvNzMwYTc1ZmM4ZTgyNzFjMzhmYmQ1MzYzZDFmNzdhMDA4NzZiOWRkY10KKworLS0tCisgZ2xpYi9nbWFpbi5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2xpYi9nbWFpbi5jIGIvZ2xpYi9nbWFpbi5jCitpbmRleCAxMGJhMmY4Li5iMWRmNDcwIDEwMDY0NAorLS0tIGEvZ2xpYi9nbWFpbi5jCisrKysgYi9nbGliL2dtYWluLmMKK0BAIC01ODQsNyArNTg0LDYgQEAgZ19tYWluX2NvbnRleHRfdW5yZWYgKEdNYWluQ29udGV4dCAqY29udGV4dCkKKyAgICAgICBzb3VyY2UgPSBzX2l0ZXItPmRhdGE7CisgICAgICAgZ19zb3VyY2VfZGVzdHJveV9pbnRlcm5hbCAoc291cmNlLCBjb250ZXh0LCBUUlVFKTsKKyAgICAgfQorLSAgVU5MT0NLX0NPTlRFWFQgKGNvbnRleHQpOworCisgICBmb3IgKHNsX2l0ZXIgPSBjb250ZXh0LT5zb3VyY2VfbGlzdHM7IHNsX2l0ZXI7IHNsX2l0ZXIgPSBzbF9pdGVyLT5uZXh0KQorICAgICB7CitAQCAtNTk1LDYgKzU5NCw3IEBAIGdfbWFpbl9jb250ZXh0X3VucmVmIChHTWFpbkNvbnRleHQgKmNvbnRleHQpCisKKyAgIGdfaGFzaF90YWJsZV9kZXN0cm95IChjb250ZXh0LT5zb3VyY2VzKTsKKworKyAgVU5MT0NLX0NPTlRFWFQgKGNvbnRleHQpOworICAgZ19tdXRleF9jbGVhciAoJmNvbnRleHQtPm11dGV4KTsKKworICAgZ19wdHJfYXJyYXlfZnJlZSAoY29udGV4dC0+cGVuZGluZ19kaXNwYXRjaGVzLCBUUlVFKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvRW5hYmxlLW1vcmUtdGVzdHMtd2hpbGUtY3Jvc3MtY29tcGlsaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2gKaW5kZXggZmYyNjI5Zi4uNDg4OTljZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDIzY2QxNTczNTJhYzhhNTNmOTkyZGRjNmQ2ZDAxY2FhZGYxYzc5YmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDAwNjFkNjYwNTdkZmQ3ZTcyNjc3NzJkZjYwYjM2NDc0ZmIxODBlZWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogRGF0ZTogTW9uLCA5IE5vdiAyMDE1IDExOjA3OjI3ICswMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIEVuYWJsZSBtb3JlIHRlc3RzIHdoaWxlIGNyb3NzLWNvbXBpbGluZwpAQCAtMTEsMTQgKzExLDE0IEBACiBTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogCiAtLS0KLSBnaW8vdGVzdHMvbWVzb24uYnVpbGQgfCAyNiArKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKKyBnaW8vdGVzdHMvbWVzb24uYnVpbGQgfCAyNCArKysrKysrKysrKystLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9naW8vdGVzdHMvbWVzb24uYnVpbGQgYi9naW8vdGVzdHMvbWVzb24uYnVpbGQKLWluZGV4IDY1ZjQzZTIuLjAyOGIxOTYgMTAwNjQ0CitpbmRleCAzODJkZmNjLi5jMTcxNzE3IDEwMDY0NAogLS0tIGEvZ2lvL3Rlc3RzL21lc29uLmJ1aWxkCiArKysgYi9naW8vdGVzdHMvbWVzb24uYnVpbGQKLUBAIC0xODUsNyArMTg1LDcgQEAgaWYgaG9zdF9tYWNoaW5lLnN5c3RlbSgpICE9ICd3aW5kb3dzJworQEAgLTE5MSw3ICsxOTEsNyBAQCBpZiBob3N0X21hY2hpbmUuc3lzdGVtKCkgIT0gJ3dpbmRvd3MnCiAgCiAgICAjICBUZXN0IHByb2dyYW1zIHRoYXQgbmVlZCB0byBicmluZyB1cCBhIHNlc3Npb24gYnVzIChyZXF1aXJlcyBkYnVzLWRhZW1vbikKICAgIGhhdmVfZGJ1c19kYWVtb24gPSBmaW5kX3Byb2dyYW0oJ2RidXMtZGFlbW9uJywgcmVxdWlyZWQgOiBmYWxzZSkuZm91bmQoKQpAQCAtMjcsMTIgKzI3LDExIEBACiAgICAgIGFubm90YXRlX2FyZ3MgPSBbCiAgICAgICAgJy0tYW5ub3RhdGUnLCAnb3JnLnByb2plY3QuQmFyJywgJ0tleTEnLCAnVmFsdWUxJywKICAgICAgICAnLS1hbm5vdGF0ZScsICdvcmcucHJvamVjdC5CYXInLCAnb3JnLmd0ay5HREJ1cy5JbnRlcm5hbCcsICdWYWx1ZTInLAotQEAgLTQ1MywxMiArNDUzLDEzIEBAIGlmIGluc3RhbGxlZF90ZXN0c19lbmFibGVkCitAQCAtNDY1LDEyICs0NjUsMTIgQEAgaWYgaW5zdGFsbGVkX3Rlc3RzX2VuYWJsZWQKICAgIGluc3RhbGxfZGF0YSgnc3RhdGljLWxpbmsucHknLCBpbnN0YWxsX2RpciA6IGluc3RhbGxlZF90ZXN0c19leGVjZGlyKQogIGVuZGlmCiAgCiAtaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKLSsjaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKICtpZiBtZXNvbi5pc19jcm9zc19idWlsZCgpCiAgCiAgICBwbHVnaW5fcmVzb3VyY2VzX2MgPSBjdXN0b21fdGFyZ2V0KCdwbHVnaW4tcmVzb3VyY2VzLmMnLApAQCAtNDMsNyArNDIsNyBAQAogICAgICAgICAgICAgICAgICctLXRhcmdldD1AT1VUUFVUQCcsCiAgICAgICAgICAgICAgICAgJy0tc291cmNlZGlyPScgKyBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKICAgICAgICAgICAgICAgICAnLS1nZW5lcmF0ZS1zb3VyY2UnLAotQEAgLTQ4Miw3ICs0ODMsNyBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQorQEAgLTQ5NCw3ICs0OTQsNyBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQogICAgdGVzdF9ncmVzb3VyY2UgPSBjdXN0b21fdGFyZ2V0KCd0ZXN0LmdyZXNvdXJjZScsCiAgICAgIGlucHV0IDogJ3Rlc3QuZ3Jlc291cmNlLnhtbCcsCiAgICAgIG91dHB1dCA6ICd0ZXN0LmdyZXNvdXJjZScsCkBAIC01Miw3ICs1MSw3IEBACiAgICAgICAgICAgICAgICAgJy0tdGFyZ2V0PUBPVVRQVVRAJywKICAgICAgICAgICAgICAgICAnLS1zb3VyY2VkaXI9JyArIG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAogICAgICAgICAgICAgICAgICctLXNvdXJjZWRpcj0nICsgbWVzb24uY3VycmVudF9idWlsZF9kaXIoKSwKLUBAIC00OTMsNyArNDk0LDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKK0BAIC01MDUsNyArNTA1LDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKICAgIHRlc3RfcmVzb3VyY2VzMl9jID0gY3VzdG9tX3RhcmdldCgndGVzdF9yZXNvdXJjZXMyLmMnLAogICAgICBpbnB1dCA6ICd0ZXN0My5ncmVzb3VyY2UueG1sJywKICAgICAgb3V0cHV0IDogJ3Rlc3RfcmVzb3VyY2VzMi5jJywKQEAgLTYxLDcgKzYwLDcgQEAKICAgICAgICAgICAgICAgICAnLS10YXJnZXQ9QE9VVFBVVEAnLAogICAgICAgICAgICAgICAgICctLXNvdXJjZWRpcj0nICsgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCiAgICAgICAgICAgICAgICAgJy0tZ2VuZXJhdGUnLAotQEAgLTUwNCw3ICs1MDUsNyBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQorQEAgLTUxNiw3ICs1MTYsNyBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQogICAgdGVzdF9yZXNvdXJjZXMyX2ggPSBjdXN0b21fdGFyZ2V0KCd0ZXN0X3Jlc291cmNlczIuaCcsCiAgICAgIGlucHV0IDogJ3Rlc3QzLmdyZXNvdXJjZS54bWwnLAogICAgICBvdXRwdXQgOiAndGVzdF9yZXNvdXJjZXMyLmgnLApAQCAtNzAsNyArNjksNyBAQAogICAgICAgICAgICAgICAgICctLXRhcmdldD1AT1VUUFVUQCcsCiAgICAgICAgICAgICAgICAgJy0tc291cmNlZGlyPScgKyBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKICAgICAgICAgICAgICAgICAnLS1nZW5lcmF0ZScsCi1AQCAtNTE2LDcgKzUxNyw3IEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCitAQCAtNTI4LDcgKzUyOCw3IEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCiAgICAgIGlucHV0IDogJ3Rlc3QyLmdyZXNvdXJjZS54bWwnLAogICAgICBkZXBlbmRzIDogYmlnX3Rlc3RfcmVzb3VyY2UsCiAgICAgIG91dHB1dCA6ICd0ZXN0X3Jlc291cmNlcy5jJywKQEAgLTc5LDcgKzc4LDcgQEAKICAgICAgICAgICAgICAgICAnLS10YXJnZXQ9QE9VVFBVVEAnLAogICAgICAgICAgICAgICAgICctLXNvdXJjZWRpcj0nICsgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCiAgICAgICAgICAgICAgICAgJy0tc291cmNlZGlyPScgKyBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAotQEAgLTUyNyw3ICs1MjgsNyBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQorQEAgLTUzOSw3ICs1MzksNyBAQCBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBvciBtZXNvbi5oYXNfZXhlX3dyYXBwZXIoKQogICAgZGlnaXRfdGVzdF9yZXNvdXJjZXNfYyA9IGN1c3RvbV90YXJnZXQoJ2RpZ2l0X3Rlc3RfcmVzb3VyY2VzLmMnLAogICAgICBpbnB1dCA6ICcxMTFfZGlnaXRfdGVzdC5ncmVzb3VyY2UueG1sJywKICAgICAgb3V0cHV0IDogJ2RpZ2l0X3Rlc3RfcmVzb3VyY2VzLmMnLApAQCAtODgsNyArODcsNyBAQAogICAgICAgICAgICAgICAgICctLXRhcmdldD1AT1VUUFVUQCcsCiAgICAgICAgICAgICAgICAgJy0tc291cmNlZGlyPScgKyBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKICAgICAgICAgICAgICAgICAnLS1zb3VyY2VkaXI9JyArIG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCi1AQCAtNTM4LDcgKzUzOSw3IEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCitAQCAtNTUwLDcgKzU1MCw3IEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCiAgICBkaWdpdF90ZXN0X3Jlc291cmNlc19oID0gY3VzdG9tX3RhcmdldCgnZGlnaXRfdGVzdF9yZXNvdXJjZXMuaCcsCiAgICAgIGlucHV0IDogJzExMV9kaWdpdF90ZXN0LmdyZXNvdXJjZS54bWwnLAogICAgICBvdXRwdXQgOiAnZGlnaXRfdGVzdF9yZXNvdXJjZXMuaCcsCkBAIC05NywxMiArOTYsMTEgQEAKICAgICAgICAgICAgICAgICAnLS10YXJnZXQ9QE9VVFBVVEAnLAogICAgICAgICAgICAgICAgICctLXNvdXJjZWRpcj0nICsgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCiAgICAgICAgICAgICAgICAgJy0tZ2VuZXJhdGUnLAotQEAgLTU2NSwxMSArNTY2LDEyIEBAIGlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIG1lc29uLmhhc19leGVfd3JhcHBlcigpCi0gICAjIFN1cHBvcnQgZm9yIC0tYWRkLXN5bWJvbCB3YXMgYWRkZWQgdG8gTExWTSBvYmpjb3B5IGluIDIwMTkKLSAgICMgKGh0dHBzOi8vcmV2aWV3cy5sbHZtLm9yZy9ENTgyMzQpLiBGSVhNRTogVGhpcyB0ZXN0IGNvdWxkIGJlIGVuYWJsZWQgZm9yCitAQCAtNTc5LDExICs1NzksMTEgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKICAgICMgTExWTSBvbmNlIHRoYXQgc3VwcG9ydCBpcyBpbiBhIHN0YWJsZSByZWxlYXNlLgotLSAgaWYgYnVpbGRfbWFjaGluZS5zeXN0ZW0oKSA9PSAnbGludXgnIGFuZCBjYy5nZXRfaWQoKSA9PSAnZ2NjJwotKyAgI2lmIGJ1aWxkX21hY2hpbmUuc3lzdGVtKCkgPT0gJ2xpbnV4JyBhbmQgY2MuZ2V0X2lkKCkgPT0gJ2djYycKKyAgIG9iamNvcHkgPSBmaW5kX3Byb2dyYW0oJ29iamNvcHknLCByZXF1aXJlZCA6IGZhbHNlKQorIAorLSAgaWYgYnVpbGRfbWFjaGluZS5zeXN0ZW0oKSA9PSAnbGludXgnIGFuZCBjYy5nZXRfaWQoKSA9PSAnZ2NjJyBhbmQgb2JqY29weS5mb3VuZCgpCiArICBpZiBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKQogICAgICB0ZXN0X2dyZXNvdXJjZV9iaW5hcnkgPSBjdXN0b21fdGFyZ2V0KCd0ZXN0NS5ncmVzb3VyY2UnLAogICAgICAgIGlucHV0IDogJ3Rlc3Q1LmdyZXNvdXJjZS54bWwnLApAQCAtMTEyLDcgKzExMCw3IEBACiAgICAgICAgICAgICAgICAgICAnLS10YXJnZXQ9QE9VVFBVVEAnLAogICAgICAgICAgICAgICAgICAgJy0tc291cmNlZGlyPScgKyBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSwKICAgICAgICAgICAgICAgICAgICctLXNvdXJjZWRpcj0nICsgbWVzb24uY3VycmVudF9idWlsZF9kaXIoKSwKLUBAIC01ODEsNyArNTgzLDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKK0BAIC01OTUsNyArNTk1LDcgQEAgaWYgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgbWVzb24uaGFzX2V4ZV93cmFwcGVyKCkKICAgICAgdGVzdF9yZXNvdXJjZXNfYmluYXJ5X2MgPSBjdXN0b21fdGFyZ2V0KCd0ZXN0X3Jlc291cmNlc19iaW5hcnkuYycsCiAgICAgICAgaW5wdXQgOiAndGVzdDUuZ3Jlc291cmNlLnhtbCcsCiAgICAgICAgb3V0cHV0IDogJ3Rlc3RfcmVzb3VyY2VzX2JpbmFyeS5jJywKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvZ2xpYi1tZXNvbi5jcm9zcyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvZ2xpYi1tZXNvbi5jcm9zcwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjVkZjQwMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL2dsaWItbWVzb24uY3Jvc3MKKysrIC9kZXYvbnVsbApAQCAtMSw5ICswLDAgQEAKLVtwcm9wZXJ0aWVzXQotaGF2ZV9jOTlfdnNucHJpbnRmID0gdHJ1ZQotaGF2ZV9jOTlfc25wcmludGYgPSB0cnVlCi1oYXZlX3VuaXg5OF9wcmludGYgPSB0cnVlCi12YV92YWxfY29weSA9IHRydWUKLWdyb3dpbmdfc3RhY2sgPSBmYWxzZQotCi1bYmluYXJpZXNdCi1lbnYgPSAiL3Vzci9iaW4vZW52IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9tZXNvbi5jcm9zcy5kL2NvbW1vbiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGQ3YzVmYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24KQEAgLTAsMCArMSwzIEBACitbcHJvcGVydGllc10KKyMgT24gYWxsIGtub3duIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzIHRoZSBzdGFjayBncm93cyBkb3duCitncm93aW5nX3N0YWNrID0gZmFsc2UKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24tZ2xpYmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uLWdsaWJjCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM0NjQ4ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uLWdsaWJjCkBAIC0wLDAgKzEsNSBAQAorW3Byb3BlcnRpZXNdCitoYXZlX2M5OV92c25wcmludGYgPSB0cnVlCitoYXZlX2M5OV9zbnByaW50ZiA9IHRydWUKK2hhdmVfdW5peDk4X3ByaW50ZiA9IHRydWUKK3ZhX3ZhbF9jb3B5ID0gdHJ1ZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9tZXNvbi5jcm9zcy5kL2NvbW1vbi1saW51eCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24tbGludXgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODM1OTZlMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvbWVzb24uY3Jvc3MuZC9jb21tb24tbGludXgKQEAgLTAsMCArMSw1IEBACitbcHJvcGVydGllc10KK2hhdmVfcHJvY19zZWxmX2NtZGxpbmUgPSB0cnVlCisKK1tiaW5hcmllc10KK2VudiA9ICIvdXNyL2Jpbi9lbnYiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uLW1pbmd3IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9tZXNvbi5jcm9zcy5kL2NvbW1vbi1taW5ndwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWY5MTFiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9tZXNvbi5jcm9zcy5kL2NvbW1vbi1taW5ndwpAQCAtMCwwICsxLDYgQEAKK1twcm9wZXJ0aWVzXQoraGF2ZV9jOTlfdnNucHJpbnRmID0gZmFsc2UKK2hhdmVfYzk5X3NucHJpbnRmID0gZmFsc2UKK2hhdmVfdW5peDk4X3ByaW50ZiA9IGZhbHNlCit2YV92YWxfY29weSA9IHRydWUKK2hhdmVfcHJvY19zZWxmX2NtZGxpbmUgPSBmYWxzZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9tZXNvbi5jcm9zcy5kL2NvbW1vbi1tdXNsIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9tZXNvbi5jcm9zcy5kL2NvbW1vbi1tdXNsCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMwNDllNTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL21lc29uLmNyb3NzLmQvY29tbW9uLW11c2wKQEAgLTAsMCArMSw2IEBACitbcHJvcGVydGllc10KK2hhdmVfYzk5X3ZzbnByaW50ZiA9IHRydWUKK2hhdmVfYzk5X3NucHJpbnRmID0gdHJ1ZQoraGF2ZV91bml4OThfcHJpbnRmID0gdHJ1ZQordmFfdmFsX2NvcHkgPSB0cnVlCitoYXZlX3N0cmxjcHkgPSB0cnVlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2gKaW5kZXggN2U5OTI1OC4uZmMzMjBkYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvcmVsb2NhdGUtbW9kdWxlcy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNjMyNWJmNGU4YTJmNTY5YzU1YzhlMWEzNmI5NDM5ZDM1NjZmOThmNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOGM2MjNhY2RiZWEzZWNjMjgxMmJiYWFmY2ZjODkyNzU4ZmE5NzhkYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiBEYXRlOiBGcmksIDExIE1hciAyMDE2IDE1OjM1OjU1ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIGdsaWItMi4wOiByZWxvY2F0ZSB0aGUgR0lPIG1vZHVsZSBkaXJlY3RvcnkgZm9yIG5hdGl2ZSBidWlsZHMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjAvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9ydW4tcHRlc3QKaW5kZXggZmM1MDA4Mi4uN2EyMzFiNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMC9ydW4tcHRlc3QKQEAgLTEsNiArMSw5IEBACiAjISAvYmluL3NoCiAKIHNldCAtZXV4CitpZiBpZCAtdSBnbGliMi10ZXN0OyB0aGVuCisgICB1c2VyZGVsIGdsaWIyLXRlc3QKK2ZpCiB1c2VyYWRkIGdsaWIyLXRlc3QKIHN1IGdsaWIyLXRlc3QgLWMgJ2dub21lLWRlc2t0b3AtdGVzdGluZy1ydW5uZXIgZ2xpYicKIHVzZXJkZWwgZ2xpYjItdGVzdApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLTIuMF8yLjYyLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNjIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjdhMTVhOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNjIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLXJlcXVpcmUgZ2xpYi5pbmMKLQotUEUgPSAiMSIKLQotU0hSVF9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vZ2xpYi8ke1NIUlRfVkVSfS9nbGliLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtREFUQURJUk5BTUUtb24tdWNsaWJjLUxpbnV4LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0VuYWJsZS1tb3JlLXRlc3RzLXdoaWxlLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS10aGUtd2FybmluZy1hYm91dC1kZXByZWNhdGVkLXBhdGhzLWluLXNjaGVtYXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1JbnN0YWxsLWdpby1xdWVyeW1vZHVsZXMtYXMtbGliZXhlY19QUk9HUkFNLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWlnbm9yZS1yZXR1cm4tdmFsdWUtb2Ytd3JpdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1Eby1ub3QtaGFyZGNvZGUtcHl0aG9uLXBhdGgtaW50by12YXJpb3VzLXRvb2xzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtU2V0LWhvc3RfbWFjaGluZS1jb3JyZWN0bHktd2hlbi1idWlsZGluZy13aXRoLW1pbmd3My5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC13cml0ZS1iaW5kaXItaW50by1wa2ctY29uZmlnLWZpbGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWVzb24tUnVuLWF0b21pY3MtdGVzdC1vbi1jbGFuZy1hcy13ZWxsLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9yZWxvY2F0ZS1tb2R1bGVzLnBhdGNoIgotU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vZ2xpYi1tZXNvbi5jcm9zcyIKLQotU1JDX1VSSVttZDVzdW1dID0gImJlZDNhNzAzOTdhMDE5OTY1ZWZhYzBjNDlmOWM4MTY0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY5ODgyNGE0MTNmNzZkZjAzOTczOWMyYTc4ZjQ1YjEwOTM5ZDUyNmFlNzQ5NWJhYjRlNjk0ZTY3MzBkZWIzZjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNjIuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi0yLjBfMi42Mi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0OTYyMzUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWItMi4wXzIuNjIuNC5iYgpAQCAtMCwwICsxLDUzIEBACityZXF1aXJlIGdsaWIuaW5jCisKK1BFID0gIjEiCisKK1NIUlRfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L2dsaWIvJHtTSFJUX1ZFUn0vZ2xpYi0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LURBVEFESVJOQU1FLW9uLXVjbGliYy1MaW51eC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9FbmFibGUtbW9yZS10ZXN0cy13aGlsZS1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtdGhlLXdhcm5pbmctYWJvdXQtZGVwcmVjYXRlZC1wYXRocy1pbi1zY2hlbWFzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtSW5zdGFsbC1naW8tcXVlcnltb2R1bGVzLWFzLWxpYmV4ZWNfUFJPR1JBTS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1pZ25vcmUtcmV0dXJuLXZhbHVlLW9mLXdyaXRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtRG8tbm90LWhhcmRjb2RlLXB5dGhvbi1wYXRoLWludG8tdmFyaW91cy10b29scy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVNldC1ob3N0X21hY2hpbmUtY29ycmVjdGx5LXdoZW4tYnVpbGRpbmctd2l0aC1taW5ndzMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3Qtd3JpdGUtYmluZGlyLWludG8tcGtnLWNvbmZpZy1maWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lc29uLVJ1bi1hdG9taWNzLXRlc3Qtb24tY2xhbmctYXMtd2VsbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdpby10ZXN0cy1yZXNvdXJjZXMuYy1jb21tZW50LW91dC1hLWJ1aWxkLWhvc3Qtb25seS0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1HTWFpbkNvbnRleHQtRml4LUdTb3VyY2UtaXRlcmF0b3ItaWYtaXRlcmF0aW9uLWNhbi1tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItR01haW5Db250ZXh0LUZpeC1tZW1vcnktbGVha3MtYW5kLW1lbW9yeS1jb3JydXB0aW9uLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEzLUdNYWluQ29udGV4dC1Nb3ZlLW11dGV4LXVubG9ja2luZy1pbi1kZXN0cnVjdG9yLXJpZ2gucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZTovL3JlbG9jYXRlLW1vZHVsZXMucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkNTIyMzRlY2JhMTI4OTMyYmVkOTBiYmMzNTUzYmZlNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0Yzg0MDMwZDc3ZmE5NzEyMTM1ZGZhODAzNmFkNjYzOTI1NjU1YWU5NWIxZDE5Mzk5YjYyMDBlODY5OTI1YmJjIgorCisjIEZpbmQgYW55IG1lc29uIGNyb3NzIGZpbGVzIGluIEZJTEVTUEFUSCB0aGF0IGFyZSByZWxldmFudCBmb3IgdGhlIGN1cnJlbnQKKyMgYnVpbGQgKHVzaW5nIHNpdGVpbmZvKSBhbmQgYWRkIHRoZW0gdG8gRVhUUkFfT0VNRVNPTi4KK2luaGVyaXQgc2l0ZWluZm8KK2RlZiBmaW5kX21lc29uX2Nyb3NzX2ZpbGVzKGQpOgorICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZScsIGQpOgorICAgICAgICByZXR1cm4gIiIKKworICAgIGNvcmViYXNlID0gZC5nZXRWYXIoIkNPUkVCQVNFIikKKyAgICBpbXBvcnQgY29sbGVjdGlvbnMKKyAgICBzaXRlZGF0YSA9IHNpdGVpbmZvX2RhdGEoZCkKKyAgICAjIGZpbGVuYW1lIC0+IGZvdW5kCisgICAgZmlsZXMgPSBjb2xsZWN0aW9ucy5PcmRlcmVkRGljdCgpCisgICAgZm9yIHBhdGggaW4gZC5nZXRWYXIoIkZJTEVTUEFUSCIpLnNwbGl0KCI6Iik6CisgICAgICAgIGZvciBlbGVtZW50IGluIHNpdGVkYXRhOgorICAgICAgICAgICAgZmlsZW5hbWUgPSBvcy5wYXRoLm5vcm1wYXRoKG9zLnBhdGguam9pbihwYXRoLCAibWVzb24uY3Jvc3MuZCIsIGVsZW1lbnQpKQorICAgICAgICAgICAgZmlsZXNbZmlsZW5hbWUucmVwbGFjZShjb3JlYmFzZSwgIiR7Q09SRUJBU0V9IildID0gb3MucGF0aC5leGlzdHMoZmlsZW5hbWUpCisKKyAgICBpdGVtcyA9IFsiLS1jcm9zcy1maWxlPSIgKyBrIGZvciBrLHYgaW4gZmlsZXMuaXRlbXMoKSBpZiB2XQorICAgIGQuYXBwZW5kVmFyKCJFWFRSQV9PRU1FU09OIiwgIiAiICsgIiAiLmpvaW4oaXRlbXMpKQorICAgIGl0ZW1zID0gWyIlczolcyIgJSAoaywgIlRydWUiIGlmIHYgZWxzZSAiRmFsc2UiKSBmb3Igayx2IGluIGZpbGVzLml0ZW1zKCldCisgICAgZC5hcHBlbmRWYXJGbGFnKCJkb19jb25maWd1cmUiLCAiZmlsZS1jaGVja3N1bXMiLCAiICIgKyAiICIuam9pbihpdGVtcykpCisKK3B5dGhvbiAoKSB7CisgICAgZmluZF9tZXNvbl9jcm9zc19maWxlcyhkKQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi0yLjAvZ2xpYi5pbmMKaW5kZXggZTgxMWI0Mi4uN2ViZWQwZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLTIuMC9nbGliLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItMi4wL2dsaWIuaW5jCkBAIC00OSw3ICs0OSw2IEBACiBQQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItRGluc3RhbGxlZF90ZXN0cz10cnVlLC1EaW5zdGFsbGVkX3Rlc3RzPWZhbHNlLGRidXMiCiAKIEVYVFJBX09FTUVTT04gPSAiLURkdHJhY2U9ZmFsc2UgLURmYW09ZmFsc2UgLURzeXN0ZW10YXA9ZmFsc2UgLURzZWxpbnV4PWRpc2FibGVkIgotRVhUUkFfT0VNRVNPTl9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAtLWNyb3NzLWZpbGUgJHtXT1JLRElSfS9nbGliLW1lc29uLmNyb3NzIgogCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKIAlzZWQgLWkgLWUgJzFzLCMhLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtTfS9naW8vZ2RidXMtMi4wL2NvZGVnZW4vZ2RidXMtY29kZWdlbi5pbgpAQCAtNTksMTMgKzU4LDE1IEBACiAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ2lvIFwKICAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vKmdpby1xdWVyeW1vZHVsZXMgXAogICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nbGliLTIuMC9zY2hlbWFzIgorCitGSUxFU18ke1BOfS11dGlscyArPSAiJHtiaW5kaXJ9L2dsaWItZ2VubWFyc2hhbCBcCisgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2dsaWItZ2V0dGV4dGl6ZSBcCisgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2dsaWItbWtlbnVtcyBcCisgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2dsaWItY29tcGlsZS1yZXNvdXJjZXMiCisKIEZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dsaWItMi4wL2luY2x1ZGUgXAogICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ2lvL21vZHVsZXMvbGliKiR7U09MSUJTREVWfSBcCiAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9naW8vbW9kdWxlcy8qLmxhIFwKLSAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2dsaWItZ2VubWFyc2hhbCBcCi0gICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9nbGliLWdldHRleHRpemUgXAotICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vZ2xpYi1ta2VudW1zIFwKLSAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2dsaWItY29tcGlsZS1yZXNvdXJjZXMgXAogICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dsaWItMi4wL2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gXAogICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dsaWItMi4wL3NjaGVtYXMvZ3NjaGVtYS5kdGQgXAogICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2dsaWItMi4wL3ZhbGdyaW5kL2dsaWIuc3VwcCBcCkBAIC0xMjcsNiArMTI4LDExIEBACiAJCQlybSAke0R9JHtkYXRhZGlyfS9pbnN0YWxsZWQtdGVzdHMvZ2xpYi9nZGJ1cy1zZXJpYWxpemF0aW9uLnRlc3QKIAkJZmkKIAlmaQorCWlmIFsgLWYgJHtEfSR7ZGF0YWRpcn0vaW5zdGFsbGVkLXRlc3RzL2dsaWIvc3RhdGljLWxpbmsudGVzdCBdOyB0aGVuCisgICAgICAgIGlmIHRlc3QgIngke01MUFJFRklYfSIgIT0gIngiOyB0aGVuCisgICAgICAgICAgICAgICAgbXYgJHtEfSR7ZGF0YWRpcn0vaW5zdGFsbGVkLXRlc3RzL2dsaWIvc3RhdGljLWxpbmsudGVzdCAke0R9JHtkYXRhZGlyfS9pbnN0YWxsZWQtdGVzdHMvZ2xpYi8ke01MUFJFRklYfXN0YXRpYy1saW5rLnRlc3QKKyAgICAgICAgZmkKKwlmaQogfQogCiAjIEFzIHdlIGRvIG5vdCBidWlsZCBweXRob24zIGZvciB3aW5kb3dzLCBtYWtlcyBubyBzZW5zZSB0byBzaGlwIHRoZSBzY3JpcHQgdGhhdCdzIHVzaW5nIGl0CkBAIC0xMzksNiArMTQ1LDggQEAKIAogUkRFUEVORFNfJHtQTn0tY29kZWdlbiArPSAiJHtDT0RFR0VOX1BZVEhPTl9SREVQRU5EU30iCiAKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIke1BOfS11dGlscyIKKwogUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIlwKICAgICAgICAgICAgIGNvcmV1dGlscyBcCiAgICAgICAgICAgICBsaWJnY2MgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNjIuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi1uZXR3b3JraW5nL2dsaWItbmV0d29ya2luZ18yLjYyLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgxZDNmZDQzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYi1uZXR3b3JraW5nL2dsaWItbmV0d29ya2luZ18yLjYyLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIkdMaWIgbmV0d29ya2luZyBleHRlbnNpb25zIgotREVTQ1JJUFRJT04gPSAiZ2xpYi1uZXR3b3JraW5nIGNvbnRhaW5zIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgY2VydGFpbiBHTGliIG5ldHdvcmtpbmcgZmVhdHVyZXMgdGhhdCBjYW5ub3QgYmUgaW1wbGVtZW50ZWQgZGlyZWN0bHkgaW4gR0xpYiBpdHNlbGYgYmVjYXVzZSBvZiB0aGVpciBkZXBlbmRlbmNpZXMuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dsaWItbmV0d29ya2luZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmciCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotU0VDVElPTiA9ICJsaWJzIgotREVQRU5EUyA9ICJnbGliLTIuMCIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNjRjYTFlMWU0M2U2MjNiOTE2MDU5NTg1YmY3ZTQ3NTgiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIzYzU1YWU2NzcxYWQ3YTc5ZmE2MDZhODM0ZjQ2ODZlZDU1NWMyNzc0ZWQ2ZTllY2U2ZjNjMGY2YTNkYWI3MTEwIgotCi1QQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgotCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLURnbnV0bHM9ZW5hYmxlZCwtRGdudXRscz1kaXNhYmxlZCxnbnV0bHMiCi1QQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi1Eb3BlbnNzbD1lbmFibGVkLC1Eb3BlbnNzbD1kaXNhYmxlZCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tsaWJwcm94eV0gPSAiLURsaWJwcm94eT1lbmFibGVkLC1EbGlicHJveHk9ZGlzYWJsZWQsbGlicHJveHkiCi0KLUVYVFJBX09FTUVTT04gPSAiLURnbm9tZV9wcm94eT1kaXNhYmxlZCIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKLWluaGVyaXQgZ25vbWViYXNlIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdpby1tb2R1bGUtY2FjaGUKLQotRklMRVNfJHtQTn0gKz0gIlwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ2lvL21vZHVsZXMvbGliZ2lvKi5zbyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvIFwKLSAgICAgICAgICAgICAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCi0gICAgICAgICAgICAgICAgIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvbGliZ2lvKi5sYSIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dpby9tb2R1bGVzL2xpYmdpbyouYSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWItbmV0d29ya2luZy9nbGliLW5ldHdvcmtpbmdfMi42Mi4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNjIuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lOTU5NmNlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliLW5ldHdvcmtpbmcvZ2xpYi1uZXR3b3JraW5nXzIuNjIuMy5iYgpAQCAtMCwwICsxLDM0IEBACitTVU1NQVJZID0gIkdMaWIgbmV0d29ya2luZyBleHRlbnNpb25zIgorREVTQ1JJUFRJT04gPSAiZ2xpYi1uZXR3b3JraW5nIGNvbnRhaW5zIHRoZSBpbXBsZW1lbnRhdGlvbnMgb2YgY2VydGFpbiBHTGliIG5ldHdvcmtpbmcgZmVhdHVyZXMgdGhhdCBjYW5ub3QgYmUgaW1wbGVtZW50ZWQgZGlyZWN0bHkgaW4gR0xpYiBpdHNlbGYgYmVjYXVzZSBvZiB0aGVpciBkZXBlbmRlbmNpZXMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dsaWItbmV0d29ya2luZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmciCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKKworU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICJnbGliLTIuMCIKKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYTc1OGNhNjJiZDU0OTgyYTc5OGIzOWM3NDRjYmY3ODMiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI4Y2ExZjg2ZjIzYTc2YjVjNzY0MDYyNGY3ZDU0OTA3MDVjNzhlODEzNzVlMTc0MWM5YTFjNDFjZTdmOGY3ZmY3IgorCitQQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgorCitQQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLURnbnV0bHM9ZW5hYmxlZCwtRGdudXRscz1kaXNhYmxlZCxnbnV0bHMiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi1Eb3BlbnNzbD1lbmFibGVkLC1Eb3BlbnNzbD1kaXNhYmxlZCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tsaWJwcm94eV0gPSAiLURsaWJwcm94eT1lbmFibGVkLC1EbGlicHJveHk9ZGlzYWJsZWQsbGlicHJveHkiCisKK0VYVFJBX09FTUVTT04gPSAiLURnbm9tZV9wcm94eT1kaXNhYmxlZCIKKworR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKK2luaGVyaXQgZ25vbWViYXNlIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdpby1tb2R1bGUtY2FjaGUKKworRklMRVNfJHtQTn0gKz0gIlwKKyAgICAgICAgICAgICAgICAke2xpYmRpcn0vZ2lvL21vZHVsZXMvbGliZ2lvKi5zbyBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMvIFwKKyAgICAgICAgICAgICAgICAke3N5c3RlbWRfdXNlcl91bml0ZGlyfSBcCisgICAgICAgICAgICAgICAgIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ2lvL21vZHVsZXMvbGliZ2lvKi5sYSIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dpby9tb2R1bGVzL2xpYmdpbyouYSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2Nyb3NzLWxvY2FsZWRlZi1uYXRpdmVfMi4zMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjMwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyOWNkNDNlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjMwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJDcm9zcyBsb2NhbGUgZ2VuZXJhdGlvbiB0b29sIGZvciBnbGliYyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJjL2xpYmMuaHRtbCIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTC0yLjEiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VTO21kNT1jZmMwZWQ3N2E5ZjYyZmE2MmVkZWQwNDJlYmUzMWQ3MiBcCi0gICAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgZmlsZTovL3Bvc2l4L3J4c3BlbmNlci9DT1BZUklHSFQ7bWQ1PWRjNTQ4NWJiMzk0YTEzYjIzMzJlYzFjNzg1ZjVkODNhIFwKLSAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLXJlcXVpcmUgZ2xpYmMtdmVyc2lvbi5pbmMKLQotIyBUZWxsIGF1dG90b29scyB0aGF0IHdlJ3JlIHdvcmtpbmcgaW4gdGhlIGxvY2FsZWRlZiBkaXJlY3RvcnkKLSMKLUFVVE9UT09MU19TQ1JJUFRfUEFUSCA9ICIke1N9L2xvY2FsZWRlZiIKLQotaW5oZXJpdCBuYXRpdmUKLWluaGVyaXQgYXV0b3Rvb2xzCi0KLUZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9LyR7UE59OiR7RklMRV9ESVJOQU1FfS9nbGliYzoiCi0KLVNSQ19VUkkgPSAiJHtHTElCQ19HSVRfVVJJfTticmFuY2g9JHtTUkNCUkFOQ0h9O25hbWU9Z2xpYmMgXAotICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2tyYWovbG9jYWxlZGVmO2JyYW5jaD1tYXN0ZXI7bmFtZT1sb2NhbGVkZWY7ZGVzdHN1ZmZpeD1naXQvbG9jYWxlZGVmIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTYtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMS1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNC1sb2NhbGVkZWYtYWRkLXRvLWFyY2hpdmUtdXNlcy1hLWhhcmQtY29kZWQtbG9jYWxlLXBhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FkZC1jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYWxsb3ctY29tcGlsZS1zZXBhcmF0ZS1mcm9tLXV0aWwtbGludXgtaGFyZGxpbmsucGF0Y2ggXAotIgotIyBNYWtlcyBmb3IgYSByYXRoZXIgbG9uZyByZXYgKDIyIGNoYXJhY3RlcnMpLCBidXQuLi4KLSMKLVNSQ1JFVl9GT1JNQVQgPSAiZ2xpYmNfbG9jYWxlZGVmIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLWdsaWJjPSR7U30iCi1DRkxBR1MgKz0gIi1mZ251ODktaW5saW5lIC1zdGQ9Z251OTkgLURJU19JTlwoeFwpPScwJyIKLQotZG9faW5zdGFsbCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KLQlpbnN0YWxsIC1tIDA3NTUgJHtCfS9sb2NhbGVkZWYgJHtEfSR7YmluZGlyfS9jcm9zcy1sb2NhbGVkZWYKLQlpbnN0YWxsIC1tIDA3NTUgJHtCfS9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsgJHtEfSR7YmluZGlyfS9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjMxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9jcm9zcy1sb2NhbGVkZWYtbmF0aXZlXzIuMzEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjRkZTU1ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvY3Jvc3MtbG9jYWxlZGVmLW5hdGl2ZV8yLjMxLmJiCkBAIC0wLDAgKzEsNTIgQEAKK1NVTU1BUlkgPSAiQ3Jvc3MgbG9jYWxlIGdlbmVyYXRpb24gdG9vbCBmb3IgZ2xpYmMiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliYy9saWJjLmh0bWwiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEwtMi4xIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFUzttZDU9MTU0MWZkOGY1ZThmMTU3OTUxMmJmMDVmNTMzMzcxYmEgXAorICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgIGZpbGU6Ly9wb3NpeC9yeHNwZW5jZXIvQ09QWVJJR0hUO21kNT1kYzU0ODViYjM5NGExM2IyMzMyZWMxYzc4NWY1ZDgzYSBcCisgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCityZXF1aXJlIGdsaWJjLXZlcnNpb24uaW5jCisKKyMgVGVsbCBhdXRvdG9vbHMgdGhhdCB3ZSdyZSB3b3JraW5nIGluIHRoZSBsb2NhbGVkZWYgZGlyZWN0b3J5CisjCitBVVRPVE9PTFNfU0NSSVBUX1BBVEggPSAiJHtTfS9sb2NhbGVkZWYiCisKK2luaGVyaXQgbmF0aXZlCitpbmhlcml0IGF1dG90b29scworCitGSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS8ke1BOfToke0ZJTEVfRElSTkFNRX0vZ2xpYmM6IgorCitTUkNfVVJJID0gIiR7R0xJQkNfR0lUX1VSSX07YnJhbmNoPSR7U1JDQlJBTkNIfTtuYW1lPWdsaWJjIFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0aHViLmNvbS9rcmFqL2xvY2FsZWRlZjticmFuY2g9bWFzdGVyO25hbWU9bG9jYWxlZGVmO2Rlc3RzdWZmaXg9Z2l0L2xvY2FsZWRlZiBcCisgICAgICAgICAgIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbG9jYWxlZGVmLUFkZC1oYXJkbGluay1yZXNvbHZlci10by1idWlsZC5wYXRjaDtwYXRjaGRpcj1sb2NhbGVkZWYgXAorICAgICAgICAgICBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxvY2FsZWRlZi1BZGQtaGFyZGxpbmstcmVzb2x2ZXItZnJvbS11dGlsLWxpbnV4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbG9jYWxlZGVmLWZpeC11cHMtaGFyZGxpbmstdG8tbWFrZS1pdC1jb21waWxlLnBhdGNoIFwKKyAgICAgICAgICAgXAorICAgICAgICAgICBmaWxlOi8vMDAxOC10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTktUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1Dcm9zcy1idWlsZGluZy1hbmQtdGVzdGluZy1pbnN0cnVjdGlvbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjItZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjMtZWdsaWJjLUZvcndhcmQtcG9ydC1jcm9zcy1sb2NhbGUtZ2VuZXJhdGlvbi1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjQtRGVmaW5lLURVTU1ZX0xPQ0FMRV9ULWlmLW5vdC1kZWZpbmVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjUtbG9jYWxlZGVmLWFkZC10by1hcmNoaXZlLXVzZXMtYS1oYXJkLWNvZGVkLWxvY2FsZS1wYS5wYXRjaCBcCisiCisjIE1ha2VzIGZvciBhIHJhdGhlciBsb25nIHJldiAoMjIgY2hhcmFjdGVycyksIGJ1dC4uLgorIworU1JDUkVWX0ZPUk1BVCA9ICJnbGliY19sb2NhbGVkZWYiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtZ2xpYmM9JHtTfSIKK0NGTEFHUyArPSAiLWZnbnU4OS1pbmxpbmUgLXN0ZD1nbnU5OSAtRElTX0lOXCh4XCk9JzAnIgorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgLW0gMDc1NSAke0J9L2xvY2FsZWRlZiAke0R9JHtiaW5kaXJ9L2Nyb3NzLWxvY2FsZWRlZgorCWluc3RhbGwgLW0gMDc1NSAke0J9L2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluayAke0R9JHtiaW5kaXJ9L2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluaworfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1jb21tb24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1jb21tb24uaW5jCmluZGV4IGZhNDZmZDguLjhkNDEyY2MgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtY29tbW9uLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWNvbW1vbi5pbmMKQEAgLTQsNyArNCw3IEBACiBTRUNUSU9OID0gImxpYnMiCiBMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyLjEiCiAKLUxJQ19GSUxFU19DSEtTVU0gPz0gImZpbGU6Ly9MSUNFTlNFUzttZDU9Y2ZjMGVkNzdhOWY2MmZhNjJlZGVkMDQyZWJlMzFkNzIgXAorTElDX0ZJTEVTX0NIS1NVTSA/PSAiZmlsZTovL0xJQ0VOU0VTO21kNT0xNTQxZmQ4ZjVlOGYxNTc5NTEyYmYwNWY1MzMzNzFiYSBcCiAgICAgICBmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAogICAgICAgZmlsZTovL3Bvc2l4L3J4c3BlbmNlci9DT1BZUklHSFQ7bWQ1PWRjNTQ4NWJiMzk0YTEzYjIzMzJlYzFjNzg1ZjVkODNhIFwKICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCkBAIC0yMiw0ICsyMiw0IEBACiAjCiBDT01QQVRJQkxFX0hPU1RfbGliYy1tdXNsX2NsYXNzLXRhcmdldCA9ICJudWxsIgogCi1QViA9ICIyLjMwIgorUFYgPSAiMi4zMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtbG9jYWxlXzIuMzAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZV8yLjMxLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZV8yLjMwLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLWxvY2FsZV8yLjMxLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLW10cmFjZV8yLjMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1tdHJhY2VfMi4zMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1tdHJhY2VfMi4zMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1tdHJhY2VfMi4zMS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1wYWNrYWdlLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtcGFja2FnZS5pbmMKaW5kZXggOWRkNWEwZC4uMjg1YTlhYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1wYWNrYWdlLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXBhY2thZ2UuaW5jCkBAIC0xLDYgKzEsNiBAQAogSU5ISUJJVF9TWVNST09UX1NUUklQID0gIjEiCiAKLVBBQ0tBR0VTID0gIiR7UE59LWRiZyBjYXRjaHNlZ3Ygc2xuIG5zY2QgbGRkIHR6Y29kZSBnbGliYy10aHJlYWQtZGIgJHtQTn0tcGljIGxpYmNpZG4gbGlibWVtdXNhZ2UgbGlibnNzLWRiIGxpYnNlZ2ZhdWx0ICR7UE59LXBjcHJvZmlsZSBsaWJzb3RydXNzICR7UE59ICR7UE59LXV0aWxzIGdsaWJjLWV4dHJhLW5zcyAke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2ICR7UE59LWRvYyBsZGNvbmZpZyIKK1BBQ0tBR0VTID0gIiR7UE59LWRiZyBjYXRjaHNlZ3Ygc2xuIG5zY2QgbGRjb25maWcgbGRkIHR6Y29kZSBnbGliYy10aHJlYWQtZGIgJHtQTn0tcGljIGxpYmNpZG4gbGlibWVtdXNhZ2UgbGlibnNzLWRiIGxpYnNlZ2ZhdWx0ICR7UE59LXBjcHJvZmlsZSBsaWJzb3RydXNzICR7UE59ICR7UE59LXV0aWxzIGdsaWJjLWV4dHJhLW5zcyAke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2ICR7UE59LWRvYyIKIAogIyBUaGUgbGQuc28gaW4gdGhpcyBnbGliYyBzdXBwb3J0cyB0aGUgR05VX0hBU0gKIFJQUk9WSURFU18ke1BOfSA9ICJlZ2xpYmMgcnRsZChHTlVfSEFTSCkiCkBAIC02NSw5ICs2NSwyMSBAQAogREVTQ1JJUFRJT05fbGlic290cnVzcyA9ICJMaWJyYXJ5IHRvIHN1cHBvcnQgc290cnVzcyB3aGljaCB0cmFjZXMgY2FsbHMgdGhyb3VnaCBQTFRzIgogREVTQ1JJUFRJT05fdHpjb2RlID0gInR6Y29kZSwgdGltZXpvbmUgem9uZWluZm8gdXRpbHMgLS0gemljLCB6ZHVtcCwgdHpzZWxlY3QiCiAKLWluaGVyaXQgbGliYy1jb21tb24gbXVsdGlsaWJfaGVhZGVyCitpbmhlcml0IG11bHRpbGliX2hlYWRlcgogCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Citkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgaW5zdGFsbF9yb290PSR7RH0gaW5zdGFsbAorCWluc3RhbGwgLURtIDA2NDQgJHtXT1JLRElSfS9ldGMvbGQuc28uY29uZiAke0R9LyR7c3lzY29uZmRpcn0vbGQuc28uY29uZgorCWluc3RhbGwgLWQgJHtEfSR7bG9jYWxlZGlyfQorCW1ha2UgLWYgJHtXT1JLRElSfS9nZW5lcmF0ZS1zdXBwb3J0ZWQubWsgSU49IiR7U30vbG9jYWxlZGF0YS9TVVBQT1JURUQiIE9VVD0iJHtXT1JLRElSfS9TVVBQT1JURUQiCisJIyBnZXQgcmlkIG9mIHNvbWUgYnJva2VuIGZpbGVzLi4uCisJZm9yIGkgaW4gJHtHTElCQ19CUk9LRU5fTE9DQUxFU307IGRvCisJCXNlZCAtaSAiLyRpL2QiICR7V09SS0RJUn0vU1VQUE9SVEVECisJZG9uZQorCXJtIC1mICR7RH0ke3N5c2NvbmZkaXJ9L3JwYworCXJtIC1yZiAke0R9JHtkYXRhZGlyfS96b25laW5mbworCXJtIC1yZiAke0R9JHtsaWJleGVjZGlyfS9nZXRjb25mCisKIAlybSAtZiAke0R9JHtzeXNjb25mZGlyfS9sb2NhbHRpbWUKIAogCSMgcmVtb3ZlIGVtcHR5IGdsaWJjIGRpcgpAQCAtNzUsNyArODcsNyBAQAogCQlybWRpciAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9JHtsaWJleGVjZGlyfQogCWZpCiAKLQlvZV9tdWx0aWxpYl9oZWFkZXIgYml0cy9zeXNjYWxsLmggYml0cy9sb25nLWRvdWJsZS5oIGJpdHMvZmxvYXRuLmgKKwlvZV9tdWx0aWxpYl9oZWFkZXIgYml0cy9zeXNjYWxsLmggYml0cy9sb25nLWRvdWJsZS5oIGJpdHMvZmxvYXRuLmggYml0cy9lbmRpYW5uZXNzLmggYml0cy9zdHJ1Y3Rfcndsb2NrLmgKIAogCWlmIFsgLWYgJHtEfSR7YmluZGlyfS9tdHJhY2UgXTsgdGhlbgogCQlzZWQgLWkgLWUgJzFzLCMhLipwZXJsLCMhICR7VVNSQklOUEFUSH0vZW52IHBlcmwsJyAtZSAnMnMsZXhlYy4qcGVybCxleGVjICR7VVNSQklOUEFUSH0vZW52IHBlcmwsJyAke0R9JHtiaW5kaXJ9L210cmFjZQpAQCAtMTA4LDYgKzEyMCwxMSBAQAogCWZpCiB9CiAKK2RlZiBnZXRfbGliY19mcHVfc2V0dGluZyhiYiwgZCk6CisgICAgaWYgZC5nZXRWYXIoJ1RBUkdFVF9GUFUnKSBpbiBbICdzb2Z0JywgJ3BwYy1lZmQnIF06CisgICAgICAgIHJldHVybiAiLS13aXRob3V0LWZwIgorICAgIHJldHVybiAiIgorCiBkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7CiAJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KIAkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCkBAIC0yMTMsNiArMjMwLDggQEAKIAlybSAtcmYgJGNsZWFudXBkaXIke2xpYmRpcn0vZ2NvbnYKIAlybSAtcmYgJGNsZWFudXBkaXIke2xvY2FsZWRpcn0KIAlybSAtcmYgJGNsZWFudXBkaXIke2RhdGFkaXJ9L2xvY2FsZQorCXJtZGlyIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICRjbGVhbnVwZGlyJHtkYXRhZGlyfQorCiAJaWYgWyAiJHtsaWJkaXJ9IiAhPSAiJHtleGVjX3ByZWZpeH0vbGliIiBdICYmIFsgIiR7cm9vdF9wcmVmaXh9L2xpYiIgIT0gIiR7ZXhlY19wcmVmaXh9L2xpYiIgXTsgdGhlbgogCQlpZiBbIC1kICIkY2xlYW51cGRpciR7ZXhlY19wcmVmaXh9L2xpYiIgXTsgdGhlbgogCQkJaWYgWyAteiAiJHtBUkNIX0RZTkFNSUNfTE9BREVSfSIgLW8gXApAQCAtMjMzLDYgKzI1MiwyNSBAQAogCXN0YXNoX2xvY2FsZV9jbGVhbnVwICR7UEtHRH0KIH0KIAorcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIGlmIGQuZ2V0VmFyKCdERUJJQU5fTkFNRVMnKToKKyAgICAgICAgcGtncyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKKyAgICAgICAgYnBuID0gZC5nZXRWYXIoJ0JQTicpCisgICAgICAgIHByZWZpeCA9IGQuZ2V0VmFyKCdNTFBSRUZJWCcpIG9yICIiCisgICAgICAgICMgU2V0IHRoZSBiYXNlIHBhY2thZ2UuLi4KKyAgICAgICAgZC5zZXRWYXIoJ1BLR18nICsgcHJlZml4ICsgYnBuLCBwcmVmaXggKyAnbGliYzYnKQorICAgICAgICBsaWJjcHJlZml4ID0gcHJlZml4ICsgYnBuICsgJy0nCisgICAgICAgIGZvciBwIGluIHBrZ3M6CisgICAgICAgICAgICAjIEFuZCBhbGwgdGhlIHN1YnBhY2thZ2VzLgorICAgICAgICAgICAgaWYgcC5zdGFydHN3aXRoKGxpYmNwcmVmaXgpOgorICAgICAgICAgICAgICAgIHJlbmFtZWQgPSBwLnJlcGxhY2UoYnBuLCAnbGliYzYnLCAxKQorICAgICAgICAgICAgICAgIGQuc2V0VmFyKCdQS0dfJyArIHAsIHJlbmFtZWQpCisgICAgICAgICMgRm9yIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgd2l0aCBvbGQgLWRiZyBwYWNrYWdlCisgICAgICAgIGQuYXBwZW5kVmFyKCdSUFJPVklERVNfJyArIGxpYmNwcmVmaXggKyAnZGJnJywgJyAnICsgcHJlZml4ICsgJ2xpYmMtZGJnJykKKyAgICAgICAgZC5hcHBlbmRWYXIoJ1JDT05GTElDVFNfJyArIGxpYmNwcmVmaXggKyAnZGJnJywgJyAnICsgcHJlZml4ICsgJ2xpYmMtZGJnJykKKyAgICAgICAgZC5hcHBlbmRWYXIoJ1JSRVBMQUNFU18nICsgbGliY3ByZWZpeCArICdkYmcnLCAnICcgKyBwcmVmaXggKyAnbGliYy1kYmcnKQorfQorCiBwa2dfcG9zdGluc3RfbnNjZCAoKSB7CiAJaWYgWyAteiAiJEQiIF07IHRoZW4KIAkJaWYgY29tbWFuZCAtdiBzeXN0ZW1kLXRtcGZpbGVzID4vZGV2L251bGw7IHRoZW4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtc2NyaXB0c18yLjMwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy1zY3JpcHRzXzIuMzEuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtc2NyaXB0c18yLjMwLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXNjcmlwdHNfMi4zMS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy10ZXN0aW5nLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtdGVzdGluZy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhNDJhZTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy10ZXN0aW5nLmluYworKysgL2Rldi9udWxsCkBAIC0xLDk1ICswLDAgQEAKLWRvX2NvbXBpbGVfYXBwZW5kICgpIHsKLQkjIG5vdyBnZW5lcmF0ZSBzY3JpcHQgdG8gZHJpdmUgdGVzdGluZwotCWVjaG8gIiMhL3Vzci9iaW4vZW52IHNoIiA+JHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNldCA+PiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0JIyBwcnVuZSBvdXQgdGhlIHVubmVlZGVkIHZhcnMKLQlzZWQgLWkgLWUgIi9eQkFTSC9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXlVTRVIvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15PUFQvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15ESVJTVEFDSy9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXkVVSUQvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15GVU5DTkFNRS9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXkdST1VQUy9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXkhPU1QvZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15IT01FL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eSUZTL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eTENfQUxML2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eTE9HTkFNRS9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXk1BQ0hUWVBFL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eT1NUWVBFL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eUElQRS9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXlNIRUxML2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eJy9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXlVJRC9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXlRFUk0vZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15QS0dfL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eUE9TSVhMWV8vZCIgJHtCfS8ke0hPU1RfUFJFRklYfXRlc3RnbGliYwotCXNlZCAtaSAtZSAiL15QUElEL2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eUFM0L2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eUS9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXlNITFZML2QiICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLQlzZWQgLWkgLWUgIi9eU1RBR0lORy9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXkxEX0xJQlJBUllfUEFUSC9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0Jc2VkIC1pIC1lICIvXlBTRVVETy9kIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0KLQkjIHBvaW50IHRvIHJlYWwgc3lzcm9vdCBub3QgdGhlIHRvb2xjaGFpbiBib290c3RyYXAgc3lzcm9vdAotCXNlZCAtaSAtZSAicy9cLXRjYm9vdHN0cmFwLy9nIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0KLQkjIHVzZSB0aGUgZmluYWwgY3Jvc3MtZ2NjIHRvIHRlc3Qgc2luY2Ugc29tZSB0ZXN0cyBuZWVkIGxpYnN0ZGMrKwotCXNlZCAtaSAtZSAicy9eUEFUSD0uKlwuZ2NjLWNyb3NzLWluaXRpYWxcOi9QQVRIPS9nIiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjCi0KLQkjIGFwcGVuZCBleGVjdXRpb24gcGFydCBzY3JpcHQKLWNhdCA+PiAke0J9LyR7SE9TVF9QUkVGSVh9dGVzdGdsaWJjIDw8IFNUT1AKLXRhcmdldD0iXCQxIgotaWYgWyAieFwkdGFyZ2V0IiA9ICJ4IiBdCi10aGVuCi0JZWNobyAiUGxlYXNlIHNwZWNpZnkgdGhlIHRhcmdldCBtYWNoaW5lIGFuZCByZW1vdGUgdXNlciBpbiBmb3JtIG9mIHVzZXJAdGFyZ2V0IgotCWV4aXQgMTsKLWZpCi1zc2ggXCR0YXJnZXQgbHMgXCRQV0RcICAyPiYxID4gL2Rldi9udWxsCi1pZiBbICJ4XCQ/IiAhPSAieDAiIF0KLXRoZW4KLQllY2hvICJGYWlsZWQgY29ubmVjdGluZyB0byBcJHRhcmdldCBpdCBjb3VsZCBiZSBiZWNhdXNlIG9mOiIKLQllY2hvICIxLiBZb3UgZG9udCBoYXZlIHBhc3N3b3JkbGVzcyBzc2ggc2V0dXAgdG8gYWNjZXNzIFwkdGFyZ2V0IgotCWVjaG8gIjIuIE5GUyBzaGFyZSBvbiBcJHRhcmdldCBpcyBub3QgbW91bnRlZCBvciBpZiBtb3VudGVkIHRoZW4gbm90IG1hdGNoaW5nIHRoZSBidWlsZCB0cmVlIGxheW91dC4iCi0JZWNobyAiICAgVGhlIHRyZWUgc2hvdWxkIGJlIGFjY2Vzc2libGUgYXQgc2FtZSBsb2NhdGlvbiBvbiBidWlsZCBob3N0IGFuZCB0YXJnZXQiCi0JZWNobyAiICAgWW91IGNhbiBhZGQgbmZzLWNsaWVudCB0byBJTUFHRV9GRUFUVVJFUyB0byBnZXQgdGhlIG5mcyBjbGllbnQgb24gdGFyZ2V0IgotCWVjaG8gIjMuIG5mcyBzZXJ2ZXIgb24gYnVpbGQgaG9zdCBpcyBub3QgcnVubmluZy4iCi0JZWNobyAiICAgUGxlYXNlIG1ha2Ugc3VyZSB0aGF0IHlvdSBoYXZlICdub19yb290X3NxdWFzaCcgYWRkZWQgaW4gL2V0Yy9leHBvcnRzIGlmIHlvdSB3YW50IgotCWVjaG8gIiAgIHRvIHRlc3QgYXMgcm9vdCB1c2VyIG9uIHRhcmdldCAodXN1YWxseSBpdHMgcmVjb21tZW5kZWQgdG8gY3JlYXRlIGEgbm9uIgotCWVjaG8gIiAgIHJvb3QgdXNlci4iCi0JZWNobyAiICAgQXMgYSBzYW5pdHkgY2hlY2sgbWFrZSBzdXJlIHRoYXQgdGFyZ2V0IGNhbiByZWFkL3dyaXRlIHRvIHRoZSBnbGliYyBidWlsZCB0cmVlIgotCWVjaG8gIiAgIFBsZWFzZSByZWZlciB0byAke1N9L0VHTElCQy5jcm9zcy10ZXN0aW5nIGZvciBmdXJ0aGVyIGluc3RydWN0aW9ucyBvbiBzZXR1cCIKLQlleGl0IDEKLWZpCi0JZWNobyAiIyB3ZSB0ZXN0IHVzaW5nIGNyb3NzIGNvbXBpbGVyIGZyb20gcmVhbCBzeXNyb290IHRoZXJlZm9yZSBvdmVycmlkZSB0aGUiID4gJHtCfS9jb25maWdwYXJtcwotCWVjaG8gIiMgZGVmaW5pdGlvbnMgdGhhdCBjb21lIGZyb20gJHtCfS9jb25maWcubWFrZSIgPj4gJHtCfS9jb25maWdwYXJtcwotCWZncmVwIHRjYm9vdHN0cmFwICR7Qn0vY29uZmlnLm1ha2UgPiAke0J9L2NvbmZpZ3Bhcm1zCi0Jc2VkIC1pIC1lICJzL1wtdGNib290c3RyYXAvL2ciICR7Qn0vY29uZmlncGFybXMKLQotIyBnKysgdXNlcyBmbGFnIC1ub3N0ZGluYywgc28gdGhlIGxvY2F0aW9ucyBvZiBzeXN0ZW0gaW5jbHVkZSBoZWFkZXJzIG11c3QgYmUgZXhwbGljaXRseSBzcGVjaWZpZWQKLSMgSWYgdGhlIGxvY2F0aW9ucyBhcmUgbm90IGFscmVhZHkgc3BlY2lmaWVkIGluIGNvbmZpZy5tYWtlLCB0aGVuIHdlIHByb3ZpZGUgdGhlIGZvbGxvd2luZyBsb2NhdGlvbnM6Ci0jICAgIDxzeXNyb290Pi91c3IvaW5jbHVkZS9jKysvPGcrKyB2ZXJzaW9uPgotIyAgICA8c3lzcm9vdD4vdXNyL2luY2x1ZGUvYysrLzxnKysgdmVyc2lvbj4vPG1hY2hpbmU+Ci0KLWN4eGluY2x1ZGVzPVxgY2F0ICR7Qn0vY29uZmlnLm1ha2UgfCBnYXdrICdcJDEgPT0gImMrKy1zeXNpbmNsdWRlcyInIHwgZ2F3ayAtRiI9IiAne3ByaW50IFwkMn0nIHwgc2VkICJzL1sgXHRdXD8vL2ciXGAKLQotaWYgWyAteiAiXCRjeHhpbmNsdWRlcyIgXTsgdGhlbgotICBzeXNyb290PVxgY2F0ICR7Qn0vY29uZmlncGFybXMgfCBzZWQgLW4gIi9DWFgvcCIgfCBzZWQgLWUgInMvXi4qLS1zeXNyb290PS8vIlxgCi0gIGN4eD1cYGNhdCAke0J9L2NvbmZpZ3Bhcm1zIHwgZ2F3ayAnXCQxIH4gL15DWFgvJyB8IGdhd2sgLUYiPSIgJ3twcmludCBcJDJ9JyB8IGdhd2sgJ3twcmludCBcJDF9J1xgCi0gIGN4eG1hY2hpbmU9XGBcJGN4eCAtZHVtcG1hY2hpbmVcYAotICBjeHh2ZXJzaW9uPVxgXCRjeHggLWR1bXB2ZXJzaW9uXGAKLSAgIyBwYXNzIHRoZSBuZXcgdmFsdWUgb2YgYysrLXN5c2luY2x1ZGVzIHZpYSBjb25maWdwYXJtcwotICBlY2hvICIjIGMrKy1zeXNpbmNsdWRlcyBhZGRlZDoiID4+ICR7Qn0vY29uZmlncGFybXMKLSAgZWNobyAiYysrLXN5c2luY2x1ZGVzID0gLWlzeXN0ZW0gXCRzeXNyb290L3Vzci9pbmNsdWRlL2MrKy9cJGN4eHZlcnNpb24gLWlzeXN0ZW0gXCRzeXNyb290L3Vzci9pbmNsdWRlL2MrKy9cJGN4eHZlcnNpb24vXCRjeHhtYWNoaW5lIiA+PiAke0J9L2NvbmZpZ3Bhcm1zCi1maQotCi13cmFwcGVyPSIke1N9L3NjcmlwdHMvY3Jvc3MtdGVzdC1zc2guc2ggXCR0YXJnZXQiCi1sb2NhbGVkZWY9IiR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9jcm9zcy1sb2NhbGVkZWYgLS1saXR0bGUtZW5kaWFuIC0tdWludDMyLWFsaWduPTQiCi1tYWtlIHRlc3RzLWNsZWFuCi1tYWtlIGNyb3NzLWxvY2FsZWRlZj0iXCRsb2NhbGVkZWYiIGNyb3NzLXRlc3Qtd3JhcHBlcj0iXCR3cmFwcGVyIiAtayBjaGVjawotcm0gLXJmICR7Qn0vY29uZmlncGFybXMKLVNUT1AKLQotCWNobW9kICt4ICR7Qn0vJHtIT1NUX1BSRUZJWH10ZXN0Z2xpYmMKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtdGVzdHN1aXRlXzIuMzAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXRlc3RzdWl0ZV8yLjMwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NTdmZDRkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtdGVzdHN1aXRlXzIuMzAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2MCArMCwwIEBACi1yZXF1aXJlIGdsaWJjXyR7UFZ9LmJiCi0KLSMgaGFuZGxlIFBOIGRpZmZlcmVuY2VzCi1GSUxFU0VYVFJBUEFUSFNfcHJlcGVuZCA6PSAiJHtUSElTRElSfS9nbGliYzoiCi0KLSMgc3RyaXAgcHJvdmlkZXMKLVBST1ZJREVTID0gIiIKLSMgc2V0dXAgZGVwZW5kcwotSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiIgotCi1weXRob24gKCkgewotICAgIGxpYmMgPSBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwvbGliYyIpCi0gICAgbGliY2xvY2FsZSA9IGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJjLWxvY2FsZSIpCi0gICAgaWYgbGliYyAhPSAiZ2xpYmMiIG9yIGxpYmNsb2NhbGUgIT0gImdsaWJjLWxvY2FsZSI6Ci0gICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoImdsaWJjLXRlc3RzdWl0ZSByZXF1aXJlcyB0aGF0IHZpcnR1YWwvbGliYyBpcyBnbGliYyIpCi19Ci0KLURFUEVORFMgKz0gImdsaWJjLWxvY2FsZSBsaWJnY2MgZ2NjLXJ1bnRpbWUiCi0KLSMgcmVtb3ZlIHRoZSBpbml0aWFsIGRlcGVuZHMKLURFUEVORFNfcmVtb3ZlID0gImxpYmdjYy1pbml0aWFsIgotCi1pbmhlcml0IHFlbXUKLQotU1JDX1VSSSArPSAiZmlsZTovL2NoZWNrLXRlc3Qtd3JhcHBlciIKLQotREVQRU5EUyArPSAiJHtAJ3FlbXUtbmF0aXZlJyBpZiBkLmdldFZhcignVE9PTENIQUlOX1RFU1RfVEFSR0VUJykgPT0gJ3VzZXInIGVsc2UgJyd9IgotCi1UT09MQ0hBSU5fVEVTVF9UQVJHRVQgPz89ICJ1c2VyIgotVE9PTENIQUlOX1RFU1RfSE9TVCA/Pz0gImxvY2FsaG9zdCIKLVRPT0xDSEFJTl9URVNUX0hPU1RfVVNFUiA/Pz0gInJvb3QiCi1UT09MQ0hBSU5fVEVTVF9IT1NUX1BPUlQgPz89ICIyMjIyIgotCi1kb19jaGVja1tkaXJzXSArPSAiJHtCfSIKLWRvX2NoZWNrW25vc3RhbXBdID0gIjEiCi1kb19jaGVjayAoKSB7Ci0gICAgY2htb2QgMDc1NSAke1dPUktESVJ9L2NoZWNrLXRlc3Qtd3JhcHBlcgotCi0gICAgIyBjbGVhbiBvdXQgcHJldmlvdXMgdGVzdCByZXN1bHRzCi0gICAgb2VfcnVubWFrZSB0ZXN0cy1jbGVhbgotICAgICMgbWFrZWZpbGVzIGRvbid0IGNsZWFuIGVudGlyZWx5IChhbmQgYWxzbyBzb21ldGltZXMgZmFpbHMgZHVlIHRvIHRvbyBtYW55IGFyZ3MpCi0gICAgZmluZCAke0J9IC10eXBlIGYgLW5hbWUgIioub3V0IiAtZGVsZXRlCi0gICAgZmluZCAke0J9IC10eXBlIGYgLW5hbWUgIioudGVzdC1yZXN1bHQiIC1kZWxldGUKLSAgICBmaW5kICR7Qn0vY2F0Z2V0cyAtbmFtZSAiKi5jYXQiIC1kZWxldGUKLSAgICBmaW5kICR7Qn0vY29uZm9ybSAtbmFtZSAic3ltbGlzdC0qIiAtZGVsZXRlCi0gICAgWyAhIC1lICR7Qn0vdGltZXpvbmUvdGVzdGRhdGEgXSB8fCBybSAtcmYgJHtCfS90aW1lem9uZS90ZXN0ZGF0YQotCi0gICAgb2VfcnVubWFrZSAtaSBcCi0gICAgICAgIFFFTVVfU1lTUk9PVD0iJHtSRUNJUEVfU1lTUk9PVH0iIFwKLSAgICAgICAgUUVNVV9PUFRJT05TPSIke0BxZW11X3RhcmdldF9iaW5hcnkoZCl9ICR7UUVNVV9PUFRJT05TfSIgXAotICAgICAgICBTU0hfSE9TVD0iJHtUT09MQ0hBSU5fVEVTVF9IT1NUfSIgXAotICAgICAgICBTU0hfSE9TVF9VU0VSPSIke1RPT0xDSEFJTl9URVNUX0hPU1RfVVNFUn0iIFwKLSAgICAgICAgU1NIX0hPU1RfUE9SVD0iJHtUT09MQ0hBSU5fVEVTVF9IT1NUX1BPUlR9IiBcCi0gICAgICAgIHRlc3Qtd3JhcHBlcj0iJHtXT1JLRElSfS9jaGVjay10ZXN0LXdyYXBwZXIgJHtUT09MQ0hBSU5fVEVTVF9UQVJHRVR9IiBcCi0gICAgICAgIGNoZWNrCi19Ci1hZGR0YXNrIGRvX2NoZWNrIGFmdGVyIGRvX2NvbXBpbGUKLQotaW5oZXJpdCBub3BhY2thZ2VzCi1kZWx0YXNrIGRvX3N0YXNoX2xvY2FsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy10ZXN0c3VpdGVfMi4zMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtdGVzdHN1aXRlXzIuMzEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDg4N2FlZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtdGVzdHN1aXRlXzIuMzEuYmIKQEAgLTAsMCArMSw2MyBAQAorcmVxdWlyZSBnbGliY18ke1BWfS5iYgorCitFWENMVURFX0ZST01fV09STEQgPSAiMSIKKworIyBoYW5kbGUgUE4gZGlmZmVyZW5jZXMKK0ZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke1RISVNESVJ9L2dsaWJjOiIKKworIyBzdHJpcCBwcm92aWRlcworUFJPVklERVMgPSAiIgorIyBzZXR1cCBkZXBlbmRzCitJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIiCisKK3B5dGhvbiAoKSB7CisgICAgbGliYyA9IGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9saWJjIikKKyAgICBsaWJjbG9jYWxlID0gZC5nZXRWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2xpYmMtbG9jYWxlIikKKyAgICBpZiBsaWJjICE9ICJnbGliYyIgb3IgbGliY2xvY2FsZSAhPSAiZ2xpYmMtbG9jYWxlIjoKKyAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiZ2xpYmMtdGVzdHN1aXRlIHJlcXVpcmVzIHRoYXQgdmlydHVhbC9saWJjIGlzIGdsaWJjIikKK30KKworREVQRU5EUyArPSAiZ2xpYmMtbG9jYWxlIGxpYmdjYyBnY2MtcnVudGltZSIKKworIyByZW1vdmUgdGhlIGluaXRpYWwgZGVwZW5kcworREVQRU5EU19yZW1vdmUgPSAibGliZ2NjLWluaXRpYWwiCisKK2luaGVyaXQgcWVtdQorCitTUkNfVVJJICs9ICJmaWxlOi8vY2hlY2stdGVzdC13cmFwcGVyIgorCitERVBFTkRTICs9ICIke0AncWVtdS1uYXRpdmUnIGlmIGQuZ2V0VmFyKCdUT09MQ0hBSU5fVEVTVF9UQVJHRVQnKSA9PSAndXNlcicgZWxzZSAnJ30iCisKK1RPT0xDSEFJTl9URVNUX1RBUkdFVCA/Pz0gInVzZXIiCitUT09MQ0hBSU5fVEVTVF9IT1NUID8/PSAibG9jYWxob3N0IgorVE9PTENIQUlOX1RFU1RfSE9TVF9VU0VSID8/PSAicm9vdCIKK1RPT0xDSEFJTl9URVNUX0hPU1RfUE9SVCA/Pz0gIjIyMjIiCisKK2RvX2NoZWNrW2RpcnNdICs9ICIke0J9IgorZG9fY2hlY2tbbm9zdGFtcF0gPSAiMSIKK2RvX2NoZWNrICgpIHsKKyAgICBjaG1vZCAwNzU1ICR7V09SS0RJUn0vY2hlY2stdGVzdC13cmFwcGVyCisKKyAgICAjIGNsZWFuIG91dCBwcmV2aW91cyB0ZXN0IHJlc3VsdHMKKyAgICBvZV9ydW5tYWtlIHRlc3RzLWNsZWFuCisgICAgIyBtYWtlZmlsZXMgZG9uJ3QgY2xlYW4gZW50aXJlbHkgKGFuZCBhbHNvIHNvbWV0aW1lcyBmYWlscyBkdWUgdG8gdG9vIG1hbnkgYXJncykKKyAgICBmaW5kICR7Qn0gLXR5cGUgZiAtbmFtZSAiKi5vdXQiIC1kZWxldGUKKyAgICBmaW5kICR7Qn0gLXR5cGUgZiAtbmFtZSAiKi50ZXN0LXJlc3VsdCIgLWRlbGV0ZQorICAgIGZpbmQgJHtCfS9jYXRnZXRzIC1uYW1lICIqLmNhdCIgLWRlbGV0ZQorICAgIGZpbmQgJHtCfS9jb25mb3JtIC1uYW1lICJzeW1saXN0LSoiIC1kZWxldGUKKyAgICBbICEgLWUgJHtCfS90aW1lem9uZS90ZXN0ZGF0YSBdIHx8IHJtIC1yZiAke0J9L3RpbWV6b25lL3Rlc3RkYXRhCisKKyAgICBvZV9ydW5tYWtlIC1pIFwKKyAgICAgICAgUUVNVV9TWVNST09UPSIke1JFQ0lQRV9TWVNST09UfSIgXAorICAgICAgICBRRU1VX09QVElPTlM9IiR7QHFlbXVfdGFyZ2V0X2JpbmFyeShkKX0gJHtRRU1VX09QVElPTlN9IiBcCisgICAgICAgIFNTSF9IT1NUPSIke1RPT0xDSEFJTl9URVNUX0hPU1R9IiBcCisgICAgICAgIFNTSF9IT1NUX1VTRVI9IiR7VE9PTENIQUlOX1RFU1RfSE9TVF9VU0VSfSIgXAorICAgICAgICBTU0hfSE9TVF9QT1JUPSIke1RPT0xDSEFJTl9URVNUX0hPU1RfUE9SVH0iIFwKKyAgICAgICAgdGVzdC13cmFwcGVyPSIke1dPUktESVJ9L2NoZWNrLXRlc3Qtd3JhcHBlciAke1RPT0xDSEFJTl9URVNUX1RBUkdFVH0iIFwKKyAgICAgICAgY2hlY2sKK30KK2FkZHRhc2sgZG9fY2hlY2sgYWZ0ZXIgZG9fY29tcGlsZQorCitpbmhlcml0IG5vcGFja2FnZXMKK2RlbHRhc2sgZG9fc3Rhc2hfbG9jYWxlCitkZWx0YXNrIGRvX2luc3RhbGwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtdmVyc2lvbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLXZlcnNpb24uaW5jCmluZGV4IGMxOGM1ODMuLjRjNzJlZWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMtdmVyc2lvbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy12ZXJzaW9uLmluYwpAQCAtMSw2ICsxLDYgQEAKLVNSQ0JSQU5DSCA/PSAicmVsZWFzZS8yLjMwL21hc3RlciIKLVBWID0gIjIuMzAiCi1TUkNSRVZfZ2xpYmMgPz0gImJlOWEzMjhjOTM4MzQ2NDhlMGJlYzEwNmExZjg2MzU3ZDFhOGM3ZTEiCitTUkNCUkFOQ0ggPz0gInJlbGVhc2UvMi4zMS9tYXN0ZXIiCitQViA9ICIyLjMxK2dpdCR7U1JDUFZ9IgorU1JDUkVWX2dsaWJjID89ICI3MWYyYjI0OWEyOGUxN2VhYzBlNDdjNTNhZjQ0ZDVjNWI2NTEwMWFhIgogU1JDUkVWX2xvY2FsZWRlZiA/PSAiY2Q5Zjk1OGM0Yzk0YTYzOGZhN2IyYjRlMjE2MjczNjRmMWExYTY1NSIKIAogR0xJQkNfR0lUX1VSSSA/PSAiZ2l0Oi8vc291cmNld2FyZS5vcmcvZ2l0L2dsaWJjLmdpdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy5pbmMKaW5kZXggZWE5YTA0YS4uMjNhNmNhOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy5pbmMKQEAgLTEsNiArMSw1IEBACiByZXF1aXJlIGdsaWJjLWNvbW1vbi5pbmMKIHJlcXVpcmUgZ2xpYmMtbGQuaW5jCi1yZXF1aXJlIGdsaWJjLXRlc3RpbmcuaW5jCiAKIERFUEVORFMgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z2NjIGxpYmdjYy1pbml0aWFsIGxpbnV4LWxpYmMtaGVhZGVycyIKIApAQCAtMTAsOCArOSwxMSBAQAogCiBMRUFEX1NPTkFNRSA9ICJsaWJjLnNvIgogCisjIG1zZ2ZtdCBjb3VsZCBjb21lIGZyb20gZ2V0dGV4dC1uYXRpdmUgYnV0IHdlIGRvbid0IGRlcGVuZCBvbiB0aGF0IGFuZAorIyBkaXNhYmxlIGZvciByZXByb2R1Y2liaWxpdHkKIENBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICIgXAogICBhY19jdl9wYXRoX0JBU0hfU0hFTEw9JHtiYXNlX2JpbmRpcn0vYmFzaCBcCisgIGFjX2N2X3Byb2dfTVNHRk1UPSBcCiAgIGxpYmNfY3Zfc2xpYmRpcj0ke2Jhc2VfbGliZGlyfSBcCiAgIGxpYmNfY3Zfcm9vdHNiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9IFwKICAgbGliY19jdl9sb2NhbGVkaXI9JHtsb2NhbGVkaXJ9IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1sb2NhbGVkZWYtQWRkLWhhcmRsaW5rLXJlc29sdmVyLWZyb20tdXRpbC1saW51eC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1sb2NhbGVkZWYtQWRkLWhhcmRsaW5rLXJlc29sdmVyLWZyb20tdXRpbC1saW51eC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMDc4NmJlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLWxvY2FsZWRlZi1BZGQtaGFyZGxpbmstcmVzb2x2ZXItZnJvbS11dGlsLWxpbnV4LnBhdGNoCkBAIC0wLDAgKzEsMTEzMCBAQAorRnJvbSAzZGNmMTQ0ZTk5OGFlZDE3YjNmYjk1N2EyNTViMWU5MjNiYTA3ZDcxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFNhdCwgNyBEZWMgMjAxOSAwOTo1OToyMiAtMDgwMAorU3ViamVjdDogW1BBVENIXSBsb2NhbGVkZWY6IEFkZCBoYXJkbGluayByZXNvbHZlciBmcm9tIHV0aWwtbGludXgKKworVGhlIGhhcmQgbGluayByZXNvbHZlciB0aGF0IGlzIGJ1aWx0IGludG8gbG9jYWxlZGVmIGNhbm5vdCBiZSBydW4gaW4KK3BhcmFsbGVsLiAgSXQgd2lsbCBzZWFyY2ggc2libGluZyBkaXJlY3RvcmllcyAod2hpY2ggYXJlIGJlIHByb2Nlc3NlZAoraW4gcGFyYWxsZWwpIGFuZCBwZXJmb3JtIGEgY3JlYXRpb24gb2YgYSAudG1wIGZpbGUgYW5kIHJlbW92ZSB0aGUKK29yaWdpbmFsIGFuZCBtb3ZlIHRoZSAudG1wIGZpbGUgaW4uICBUaGUgcHJvYmxlbSBpcyB0aGF0IGlmIGEgcHJvYmUKK29jY3VycyBhIGhhcmQgbGluayBjYW4gYmUgcmVxdWVzdGVkIHRvIHRoZSBmaWxlIHRoYXQgaXMgYmVpbmcgcmVtb3ZlZC4KK1RoaXMgd2lsbCBsZWFkIHRvIGEgc3RyYXkgY29weSBvciBwb3RlbnRpYWxseSwgb24gYSBsb2FkZWQgc3lzdGVtCitjYXVzZSByYWNlIGNvbmRpdGlvbiB3aGljaCBwc2V1ZG8gY2Fubm90IGRlYWwgd2l0aCwgd2hlcmUgaXQgaXMgbGVmdAord2l0aCBhIGhhcmQgbGluayByZXF1ZXN0IHRvIGEgZmlsZSB0aGF0IG5vIGxvbmdlciBleGlzdHMuICBJbiB0aGlzCitzaXR1YXRpb24gcHN1ZWRvIHdpbGwgaW5oZXJpdCB0aGUgcGVybWlzc2lvbnMgb2Ygd2hhdCBldmVyIHRoZSB0YXJnZXQKK2lub2RlIGhhZCB0byBvZmZlci4KKworSW4gc2hvcnQsIHRoZXJlIGFyZSB0d28gcHJvYmxlbXM6CisKKzEpIFlvdSB3aWxsIGJlIGxlZnQgd2l0aCBzdHJheSBjb3BpZXMgd2hlbiB1c2luZyB0aGUgaGFyZCBsaW5rCityZXNvbHV0aW9uIHRoYXQgaXMgYnVpbHQgaW4gd2hpbGUgcnVubmluZyBpbiBwYXJhbGxlbCB3aXRoCitsb2NhbGVkZWYuCisKKzIpIFdoZW4gcnVubmluZyB1bmRlciBwc2V1ZG8gdGhlIHBvc3NpYmlsaXR5IGV4aXN0cyBmb3IgdWlkL2dpZAorbGVha2FnZSB3aGVuIHRoZSBzb3VyY2UgZmlsZSBpcyByZW1vdmVkIGJlZm9yZSB0aGUgaGFyZCBsaW5rIGNhbgorYmUgY29tcGxldGVkLgorCitUaGUgc29sdXRpb24gaXMgdG8gY2FsbCBsb2NhbGVkZWYgd2l0aCAtLW5vLWhhcmQtbGlua3MgYW5kIHNlcGFyYXRlbHkKK3Byb2Nlc3MgdGhlIGhhcmRsaW5rcyBhdCBhIGxhdGVyIHBvaW50LiAgVG8gZG8gdGhpcyByZXF1aXJlcyB0aGUKK2luY2x1c2lvbiBvZiB0aGUgaGFyZGxpbmsgdXRpbGl0eSBmb3VuZCBpbiBtb2Rlcm4gdmVyc2lvbnMgb2YKK3V0aWwtbGludXguICBNb3N0IGhvc3Qgc3lzdGVtcyBkbyBub3QgaGF2ZSB0aGlzLCBzbyBpdCB3aWxsIGJlCitpbmNsdWRlZCB3aXRoIHRoZSBjcm9zcy1sb2NhbGVkZWYgYmluYXJ5LgorCitbWU9DVE8gIzExMjk5XQorW1lPQ1RPICMxMjQzNF0KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbG9jYWxlL3Byb2dyYW1zL2MuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgNDA3ICsrKysrKysrKysrKysrKysKKyBsb2NhbGUvcHJvZ3JhbXMvY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLmMgfCA1MjggKysrKysrKysrKysrKysrKysrKysrCisgbG9jYWxlL3Byb2dyYW1zL3hhbGxvYy5oICAgICAgICAgICAgICAgICAgIHwgMTI5ICsrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCAxMDY0IGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbG9jYWxlL3Byb2dyYW1zL2MuaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBsb2NhbGUvcHJvZ3JhbXMvY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgbG9jYWxlL3Byb2dyYW1zL3hhbGxvYy5oCisKK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvYy5oIGIvbG9jYWxlL3Byb2dyYW1zL2MuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmQwYTQwMmU5MGUKKy0tLSAvZGV2L251bGwKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9jLmgKK0BAIC0wLDAgKzEsNDA3IEBACisrLyoKKysgKiBGdW5kYW1lbnRhbCBDIGRlZmluaXRpb25zLgorKyAqLworKworKyNpZm5kZWYgVVRJTF9MSU5VWF9DX0gKKysjZGVmaW5lIFVUSUxfTElOVVhfQ19ICisrCisrI2luY2x1ZGUgPGxpbWl0cy5oPgorKyNpbmNsdWRlIDxzdGRkZWYuaD4KKysjaW5jbHVkZSA8c3RkaW50Lmg+CisrI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHVuaXN0ZC5oPgorKyNpbmNsdWRlIDxzdGRhcmcuaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxlcnJuby5oPgorKworKyNpbmNsdWRlIDxhc3NlcnQuaD4KKysKKysjaWZkZWYgSEFWRV9FUlJfSAorKyMgaW5jbHVkZSA8ZXJyLmg+CisrI2VuZGlmCisrCisrI2lmZGVmIEhBVkVfU1lTX1NZU01BQ1JPU19ICisrIyBpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+ICAgICAvKiBmb3IgbWFqb3IsIG1pbm9yICovCisrI2VuZGlmCisrCisrI2lmbmRlZiBMT0dJTl9OQU1FX01BWAorKyMgZGVmaW5lIExPR0lOX05BTUVfTUFYIDI1NgorKyNlbmRpZgorKworKyNpZm5kZWYgTkFNRV9NQVgKKysjIGRlZmluZSBOQU1FX01BWCBQQVRIX01BWAorKyNlbmRpZgorKworKy8qCisrICogX19HTlVDX1BSRVJFUSBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBfX2hhc19hdHRyaWJ1dGUoKSBhbmQKKysgKiBfX2hhc19mZWF0dXJlKCkuIFRoZSBfX2hhcyBtYWNyb3MgYXJlIHN1cHBvcnRlZCBieSBjbGFuZyBhbmQgZ2NjPj01LgorKyAqLworKyNpZm5kZWYgX19HTlVDX1BSRVJFUQorKyMgaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiBkZWZpbmVkIF9fR05VQ19NSU5PUl9fCisrIyAgZGVmaW5lIF9fR05VQ19QUkVSRVEobWFqLCBtaW4pIFwKKysJKChfX0dOVUNfXyA8PCAxNikgKyBfX0dOVUNfTUlOT1JfXyA+PSAoKG1haikgPDwgMTYpICsgKG1pbikpCisrIyBlbHNlCisrIyAgZGVmaW5lIF9fR05VQ19QUkVSRVEobWFqLCBtaW4pIDAKKysjIGVuZGlmCisrI2VuZGlmCisrCisrI2lmZGVmIF9fR05VQ19fCisrCisrLyogJmFbMF0gZGVncmFkZXMgdG8gYSBwb2ludGVyOiBhIGRpZmZlcmVudCB0eXBlIGZyb20gYW4gYXJyYXkgKi8KKysjIGRlZmluZSBfX211c3RfYmVfYXJyYXkoYSkgXAorKwlVTF9CVUlMRF9CVUdfT05fWkVSTyhfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKF9fdHlwZW9mX18oYSksIF9fdHlwZW9mX18oJmFbMF0pKSkKKysKKysjIGRlZmluZSBpZ25vcmVfcmVzdWx0KHgpIF9fZXh0ZW5zaW9uX18gKHsgXAorKwlfX3R5cGVvZl9fKHgpIF9fZHVtbXkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpID0gKHgpOyAodm9pZCkgX19kdW1teTsgXAorK30pCisrCisrI2Vsc2UgLyogIV9fR05VQ19fICovCisrIyBkZWZpbmUgX19tdXN0X2JlX2FycmF5KGEpCTAKKysjIGRlZmluZSBfX2F0dHJpYnV0ZV9fKF9hcmdfKQorKyMgZGVmaW5lIGlnbm9yZV9yZXN1bHQoeCkgKCh2b2lkKSAoeCkpCisrI2VuZGlmIC8qICFfX0dOVUNfXyAqLworKworKy8qCisrICogSXQgZXZhbHVhdGVzIHRvIDEgaWYgdGhlIGF0dHJpYnV0ZS9mZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgY3VycmVudAorKyAqIGNvbXBpbGF0aW9uIHRhcmdlZC4gRmFsbGJhY2sgZm9yIG9sZCBjb21waWxlcnMuCisrICovCisrI2lmbmRlZiBfX2hhc19hdHRyaWJ1dGUKKysgICNkZWZpbmUgX19oYXNfYXR0cmlidXRlKHgpIDAKKysjZW5kaWYKKysKKysjaWZuZGVmIF9faGFzX2ZlYXR1cmUKKysgICNkZWZpbmUgX19oYXNfZmVhdHVyZSh4KSAwCisrI2VuZGlmCisrCisrLyoKKysgKiBGdW5jdGlvbiBhdHRyaWJ1dGVzCisrICovCisrI2lmbmRlZiBfX3VsX2FsbG9jX3NpemUKKysjIGlmIChfX2hhc19hdHRyaWJ1dGUoYWxsb2Nfc2l6ZSkgJiYgX19oYXNfYXR0cmlidXRlKHdhcm5fdW51c2VkX3Jlc3VsdCkpIHx8IF9fR05VQ19QUkVSRVEgKDQsIDMpCisrIyAgZGVmaW5lIF9fdWxfYWxsb2Nfc2l6ZShzKSBfX2F0dHJpYnV0ZV9fKChhbGxvY19zaXplKHMpLCB3YXJuX3VudXNlZF9yZXN1bHQpKQorKyMgZWxzZQorKyMgIGRlZmluZSBfX3VsX2FsbG9jX3NpemUocykKKysjIGVuZGlmCisrI2VuZGlmCisrCisrI2lmbmRlZiBfX3VsX2NhbGxvY19zaXplCisrIyBpZiAoX19oYXNfYXR0cmlidXRlKGFsbG9jX3NpemUpICYmIF9faGFzX2F0dHJpYnV0ZSh3YXJuX3VudXNlZF9yZXN1bHQpKSB8fCBfX0dOVUNfUFJFUkVRICg0LCAzKQorKyMgIGRlZmluZSBfX3VsX2NhbGxvY19zaXplKG4sIHMpIF9fYXR0cmlidXRlX18oKGFsbG9jX3NpemUobiwgcyksIHdhcm5fdW51c2VkX3Jlc3VsdCkpCisrIyBlbHNlCisrIyAgZGVmaW5lIF9fdWxfY2FsbG9jX3NpemUobiwgcykKKysjIGVuZGlmCisrI2VuZGlmCisrCisrI2lmIF9faGFzX2F0dHJpYnV0ZShyZXR1cm5zX25vbm51bGwpIHx8IF9fR05VQ19QUkVSRVEgKDQsIDkpCisrIyBkZWZpbmUgX191bF9yZXR1cm5zX25vbm51bGwgX19hdHRyaWJ1dGVfXygocmV0dXJuc19ub25udWxsKSkKKysjZWxzZQorKyMgZGVmaW5lIF9fdWxfcmV0dXJuc19ub25udWxsCisrI2VuZGlmCisrCisrLyoKKysgKiBGb3JjZSBhIGNvbXBpbGF0aW9uIGVycm9yIGlmIGNvbmRpdGlvbiBpcyB0cnVlLCBidXQgYWxzbyBwcm9kdWNlIGEKKysgKiByZXN1bHQgKG9mIHZhbHVlIDAgYW5kIHR5cGUgc2l6ZV90KSwgc28gdGhlIGV4cHJlc3Npb24gY2FuIGJlIHVzZWQKKysgKiBlLmcuIGluIGEgc3RydWN0dXJlIGluaXRpYWxpemVyIChvciB3aGVyZXZlciBlbHNlIGNvbW1hIGV4cHJlc3Npb25zCisrICogYXJlbid0IHBlcm1pdHRlZCkuCisrICovCisrI2RlZmluZSBVTF9CVUlMRF9CVUdfT05fWkVSTyhlKSBfX2V4dGVuc2lvbl9fIChzaXplb2Yoc3RydWN0IHsgaW50Oi0hIShlKTsgfSkpCisrI2RlZmluZSBCVUlMRF9CVUdfT05fTlVMTChlKSAoKHZvaWQgKilzaXplb2Yoc3RydWN0IHsgaW50Oi0hIShlKTsgfSkpCisrCisrI2lmbmRlZiBBUlJBWV9TSVpFCisrIyBkZWZpbmUgQVJSQVlfU0laRShhcnIpIChzaXplb2YoYXJyKSAvIHNpemVvZigoYXJyKVswXSkgKyBfX211c3RfYmVfYXJyYXkoYXJyKSkKKysjZW5kaWYKKysKKysjaWZuZGVmIFBBVEhfTUFYCisrIyBkZWZpbmUgUEFUSF9NQVggNDA5NgorKyNlbmRpZgorKworKyNpZm5kZWYgVFJVRQorKyMgZGVmaW5lIFRSVUUgMQorKyNlbmRpZgorKworKyNpZm5kZWYgRkFMU0UKKysjIGRlZmluZSBGQUxTRSAwCisrI2VuZGlmCisrCisrI2lmbmRlZiBtaW4KKysjIGRlZmluZSBtaW4oeCwgeSkgX19leHRlbnNpb25fXyAoewkJXAorKwlfX3R5cGVvZl9fKHgpIF9taW4xID0gKHgpOwkJXAorKwlfX3R5cGVvZl9fKHkpIF9taW4yID0gKHkpOwkJXAorKwkodm9pZCkgKCZfbWluMSA9PSAmX21pbjIpOwkJXAorKwlfbWluMSA8IF9taW4yID8gX21pbjEgOiBfbWluMjsgfSkKKysjZW5kaWYKKysKKysjaWZuZGVmIG1heAorKyMgZGVmaW5lIG1heCh4LCB5KSBfX2V4dGVuc2lvbl9fICh7CQlcCisrCV9fdHlwZW9mX18oeCkgX21heDEgPSAoeCk7CQlcCisrCV9fdHlwZW9mX18oeSkgX21heDIgPSAoeSk7CQlcCisrCSh2b2lkKSAoJl9tYXgxID09ICZfbWF4Mik7CQlcCisrCV9tYXgxID4gX21heDIgPyBfbWF4MSA6IF9tYXgyOyB9KQorKyNlbmRpZgorKworKyNpZm5kZWYgY21wX251bWJlcnMKKysjIGRlZmluZSBjbXBfbnVtYmVycyh4LCB5KSBfX2V4dGVuc2lvbl9fICh7CVwKKysJX190eXBlb2ZfXyh4KSBfYSA9ICh4KTsJCQlcCisrCV9fdHlwZW9mX18oeSkgX2IgPSAoeSk7CQkJXAorKwkodm9pZCkgKCZfYSA9PSAmX2IpOwkJCVwKKysJX2EgPT0gX2IgPyAwIDogX2EgPiBfYiA/IDEgOiAtMTsgfSkKKysjZW5kaWYKKysKKysjaWZuZGVmIG9mZnNldG9mCisrI2RlZmluZSBvZmZzZXRvZihUWVBFLCBNRU1CRVIpICgoc2l6ZV90KSAmKChUWVBFICopMCktPk1FTUJFUikKKysjZW5kaWYKKysKKysvKgorKyAqIGNvbnRhaW5lcl9vZiAtIGNhc3QgYSBtZW1iZXIgb2YgYSBzdHJ1Y3R1cmUgb3V0IHRvIHRoZSBjb250YWluaW5nIHN0cnVjdHVyZQorKyAqIEBwdHI6CXRoZSBwb2ludGVyIHRvIHRoZSBtZW1iZXIuCisrICogQHR5cGU6CXRoZSB0eXBlIG9mIHRoZSBjb250YWluZXIgc3RydWN0IHRoaXMgaXMgZW1iZWRkZWQgaW4uCisrICogQG1lbWJlcjoJdGhlIG5hbWUgb2YgdGhlIG1lbWJlciB3aXRoaW4gdGhlIHN0cnVjdC4KKysgKi8KKysjaWZuZGVmIGNvbnRhaW5lcl9vZgorKyNkZWZpbmUgY29udGFpbmVyX29mKHB0ciwgdHlwZSwgbWVtYmVyKSBfX2V4dGVuc2lvbl9fICh7CVwKKysJY29uc3QgX190eXBlb2ZfXyggKCh0eXBlICopMCktPm1lbWJlciApICpfX21wdHIgPSAocHRyKTsgXAorKwkodHlwZSAqKSggKGNoYXIgKilfX21wdHIgLSBvZmZzZXRvZih0eXBlLG1lbWJlcikgKTt9KQorKyNlbmRpZgorKworKyNpZm5kZWYgSEFWRV9QUk9HUkFNX0lOVk9DQVRJT05fU0hPUlRfTkFNRQorKyMgaWZkZWYgSEFWRV9fX1BST0dOQU1FCisrZXh0ZXJuIGNoYXIgKl9fcHJvZ25hbWU7CisrIyAgZGVmaW5lIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lIF9fcHJvZ25hbWUKKysjIGVsc2UKKysjICBpZmRlZiBIQVZFX0dFVEVYRUNOQU1FCisrIyAgIGRlZmluZSBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSBcCisrCQlwcm9nX2ludl9zaF9ubV9mcm9tX2ZpbGUoZ2V0ZXhlY25hbWUoKSwgMCkKKysjICBlbHNlCisrIyAgIGRlZmluZSBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSBcCisrCQlwcm9nX2ludl9zaF9ubV9mcm9tX2ZpbGUoX19GSUxFX18sIDEpCisrIyAgZW5kaWYKKytzdGF0aWMgY2hhciBwcm9nX2ludl9zaF9ubV9idWZbMjU2XTsKKytzdGF0aWMgaW5saW5lIGNoYXIgKgorK3Byb2dfaW52X3NoX25tX2Zyb21fZmlsZShjaGFyICpmLCBjaGFyIHN0cmlwZXh0KQorK3sKKysJY2hhciAqdDsKKysKKysJaWYgKCh0ID0gc3RycmNocihmLCAnLycpKSAhPSBOVUxMKQorKwkJdCsrOworKwllbHNlCisrCQl0ID0gZjsKKysKKysJc3RybmNweShwcm9nX2ludl9zaF9ubV9idWYsIHQsIHNpemVvZihwcm9nX2ludl9zaF9ubV9idWYpIC0gMSk7CisrCXByb2dfaW52X3NoX25tX2J1ZltzaXplb2YocHJvZ19pbnZfc2hfbm1fYnVmKSAtIDFdID0gJ1wwJzsKKysKKysJaWYgKHN0cmlwZXh0ICYmICh0ID0gc3RycmNocihwcm9nX2ludl9zaF9ubV9idWYsICcuJykpICE9IE5VTEwpCisrCQkqdCA9ICdcMCc7CisrCisrCXJldHVybiBwcm9nX2ludl9zaF9ubV9idWY7CisrfQorKyMgZW5kaWYKKysjZW5kaWYKKysKKysKKysjaWZuZGVmIEhBVkVfRVJSX0gKKytzdGF0aWMgaW5saW5lIHZvaWQKKytlcnJtc2coY2hhciBkb2V4aXQsIGludCBleGNvZGUsIGNoYXIgYWRkZXJyLCBjb25zdCBjaGFyICpmbXQsIC4uLikKKyt7CisrCWZwcmludGYoc3RkZXJyLCAiJXM6ICIsIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lKTsKKysJaWYgKGZtdCAhPSBOVUxMKSB7CisrCQl2YV9saXN0IGFyZ3A7CisrCQl2YV9zdGFydChhcmdwLCBmbXQpOworKwkJdmZwcmludGYoc3RkZXJyLCBmbXQsIGFyZ3ApOworKwkJdmFfZW5kKGFyZ3ApOworKwkJaWYgKGFkZGVycikKKysJCQlmcHJpbnRmKHN0ZGVyciwgIjogIik7CisrCX0KKysJaWYgKGFkZGVycikKKysJCWZwcmludGYoc3RkZXJyLCAiJW0iKTsKKysJZnByaW50ZihzdGRlcnIsICJcbiIpOworKwlpZiAoZG9leGl0KQorKwkJZXhpdChleGNvZGUpOworK30KKysKKysjaWZuZGVmIEhBVkVfRVJSCisrIyBkZWZpbmUgZXJyKEUsIEZNVC4uLikgZXJybXNnKDEsIEUsIDEsIEZNVCkKKysjZW5kaWYKKysKKysjaWZuZGVmIEhBVkVfRVJSWAorKyMgZGVmaW5lIGVycngoRSwgRk1ULi4uKSBlcnJtc2coMSwgRSwgMCwgRk1UKQorKyNlbmRpZgorKworKyNpZm5kZWYgSEFWRV9XQVJOCisrIyBkZWZpbmUgd2FybihGTVQuLi4pIGVycm1zZygwLCAwLCAxLCBGTVQpCisrI2VuZGlmCisrCisrI2lmbmRlZiBIQVZFX1dBUk5YCisrIyBkZWZpbmUgd2FybngoRk1ULi4uKSBlcnJtc2coMCwgMCwgMCwgRk1UKQorKyNlbmRpZgorKyNlbmRpZiAvKiAhSEFWRV9FUlJfSCAqLworKworKworKy8qIERvbid0IHVzZSBpbmxpbmUgZnVuY3Rpb24gdG8gYXZvaWQgJyNpbmNsdWRlICJubHMuaCInIGluIGMuaAorKyAqLworKyNkZWZpbmUgZXJydHJ5aGVscChldmFsKSBfX2V4dGVuc2lvbl9fICh7IFwKKysJZnByaW50ZihzdGRlcnIsIF8oIlRyeSAnJXMgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBcCisrCQkJcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUpOyBcCisrCWV4aXQoZXZhbCk7IFwKKyt9KQorKworKy8qIEFmdGVyIGZhaWxlZCBleGVjdnAoKSAqLworKyNkZWZpbmUgRVhfRVhFQ19GQUlMRUQJCTEyNgkvKiBQcm9ncmFtIGxvY2F0ZWQsIGJ1dCBub3QgdXNhYmxlLiAqLworKyNkZWZpbmUgRVhfRVhFQ19FTk9FTlQJCTEyNwkvKiBDb3VsZCBub3QgZmluZCBwcm9ncmFtIHRvIGV4ZWMuICAqLworKyNkZWZpbmUgZXJyZXhlYyhuYW1lKQllcnIoZXJybm8gPT0gRU5PRU5UID8gRVhfRVhFQ19FTk9FTlQgOiBFWF9FWEVDX0ZBSUxFRCwgXAorKwkJCV8oImZhaWxlZCB0byBleGVjdXRlICVzIiksIG5hbWUpCisrCisrCisrc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGludCBpc19wb3dlcl9vZl8yKHVuc2lnbmVkIGxvbmcgbnVtKQorK3sKKysJcmV0dXJuIChudW0gIT0gMCAmJiAoKG51bSAmIChudW0gLSAxKSkgPT0gMCkpOworK30KKysKKysjaWZuZGVmIEhBVkVfTE9GRl9UCisrdHlwZWRlZiBpbnQ2NF90IGxvZmZfdDsKKysjZW5kaWYKKysKKysjaWYgIWRlZmluZWQoSEFWRV9ESVJGRCkgJiYgKCFkZWZpbmVkKEhBVkVfREVDTF9ESVJGRCkgfHwgSEFWRV9ERUNMX0RJUkZEID09IDApICYmIGRlZmluZWQoSEFWRV9ESVJfRERfRkQpCisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorKyNpbmNsdWRlIDxkaXJlbnQuaD4KKytzdGF0aWMgaW5saW5lIGludCBkaXJmZChESVIgKmQpCisreworKwlyZXR1cm4gZC0+ZGRfZmQ7CisrfQorKyNlbmRpZgorKworKy8qCisrICogRmFsbGJhY2sgZGVmaW5lcyBmb3Igb2xkIHZlcnNpb25zIG9mIGdsaWJjCisrICovCisrI2luY2x1ZGUgPGZjbnRsLmg+CisrCisrI2lmZGVmIE9fQ0xPRVhFQworKyNkZWZpbmUgVUxfQ0xPRVhFQ1NUUgkiZSIKKysjZWxzZQorKyNkZWZpbmUgVUxfQ0xPRVhFQ1NUUgkiIgorKyNlbmRpZgorKworKyNpZm5kZWYgT19DTE9FWEVDCisrI2RlZmluZSBPX0NMT0VYRUMgMAorKyNlbmRpZgorKworKyNpZmRlZiBfX0ZyZWVCU0Rfa2VybmVsX18KKysjaWZuZGVmIEZfRFVQRkRfQ0xPRVhFQworKyNkZWZpbmUgRl9EVVBGRF9DTE9FWEVDCTE3CS8qIExpa2UgRl9EVVBGRCwgYnV0IEZEX0NMT0VYRUMgaXMgc2V0ICovCisrI2VuZGlmCisrI2VuZGlmCisrCisrCisrI2lmbmRlZiBBSV9BRERSQ09ORklHCisrI2RlZmluZSBBSV9BRERSQ09ORklHIDB4MDAyMAorKyNlbmRpZgorKworKyNpZm5kZWYgSVVURjgKKysjZGVmaW5lIElVVEY4IDAwNDAwMDAKKysjZW5kaWYKKysKKysvKgorKyAqIE1BWEhPU1ROQU1FTEVOIHJlcGxhY2VtZW50CisrICovCisrc3RhdGljIGlubGluZSBzaXplX3QgZ2V0X2hvc3RuYW1lX21heCh2b2lkKQorK3sKKysJbG9uZyBsZW4gPSBzeXNjb25mKF9TQ19IT1NUX05BTUVfTUFYKTsKKysKKysJaWYgKDAgPCBsZW4pCisrCQlyZXR1cm4gbGVuOworKworKyNpZmRlZiBNQVhIT1NUTkFNRUxFTgorKwlyZXR1cm4gTUFYSE9TVE5BTUVMRU47CisrI2VsaWYgSE9TVF9OQU1FX01BWAorKwlyZXR1cm4gSE9TVF9OQU1FX01BWDsKKysjZW5kaWYKKysJcmV0dXJuIDY0OworK30KKysKKysKKysvKgorKyAqIENvbnN0YW50IHN0cmluZ3MgZm9yIHVzYWdlKCkgZnVuY3Rpb25zLiBGb3IgbW9yZSBpbmZvIHNlZQorKyAqIERvY3VtZW50YXRpb24ve2hvd3RvLXVzYWdlLWZ1bmN0aW9uLnR4dCxib2lsZXJwbGF0ZS5jfQorKyAqLworKyNkZWZpbmUgVVNBR0VfSEVBREVSICAgICAoIlxuVXNhZ2U6XG4iKQorKyNkZWZpbmUgVVNBR0VfT1BUSU9OUyAgICAoIlxuT3B0aW9uczpcbiIpCisrI2RlZmluZSBVU0FHRV9GVU5DVElPTlMgICgiXG5GdW5jdGlvbnM6XG4iKQorKyNkZWZpbmUgVVNBR0VfQ09NTUFORFMgICAoIlxuQ29tbWFuZHM6XG4iKQorKyNkZWZpbmUgVVNBR0VfQ09MVU1OUyAgICAoIlxuQXZhaWxhYmxlIG91dHB1dCBjb2x1bW5zOlxuIikKKysjZGVmaW5lIFVTQUdFX1NFUEFSQVRPUiAgICAiXG4iCisrCisrI2RlZmluZSBVU0FHRV9PUFRTVFJfSEVMUCAgICAgKCJkaXNwbGF5IHRoaXMgaGVscCIpCisrI2RlZmluZSBVU0FHRV9PUFRTVFJfVkVSU0lPTiAgKCJkaXNwbGF5IHZlcnNpb24iKQorKworKyNkZWZpbmUgVVNBR0VfSEVMUF9PUFRJT05TKG1hcmdfZHNjKSBcCisrCQkiJS0iICNtYXJnX2RzYyAicyVzXG4iIFwKKysJCSIlLSIgI21hcmdfZHNjICJzJXNcbiIgXAorKwkJLCAiIC1oLCAtLWhlbHAiLCAgICBVU0FHRV9PUFRTVFJfSEVMUCBcCisrCQksICIgLVYsIC0tdmVyc2lvbiIsIFVTQUdFX09QVFNUUl9WRVJTSU9OCisrCisrI2RlZmluZSBVU0FHRV9NQU5fVEFJTChfbWFuKSAgICgiXG5Gb3IgbW9yZSBkZXRhaWxzIHNlZSAlcy5cbiIpLCBfbWFuCisrCisrI2RlZmluZSBVVElMX0xJTlVYX1ZFUlNJT04gKCIlcyBmcm9tICVzXG4iKSwgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUsIFBBQ0tBR0VfU1RSSU5HCisrCisrI2RlZmluZSBwcmludF92ZXJzaW9uKGV2YWwpIF9fZXh0ZW5zaW9uX18gKHsgXAorKwkJcHJpbnRmKFVUSUxfTElOVVhfVkVSU0lPTik7IFwKKysJCWV4aXQoZXZhbCk7IFwKKyt9KQorKworKy8qCisrICogc2NhbmYgbW9kaWZpZXJzIGZvciAic3RyaW5ncyBhbGxvY2F0aW9uIgorKyAqLworKyNpZmRlZiBIQVZFX1NDQU5GX01TX01PRElGSUVSCisrI2RlZmluZSBVTF9TQ05zQQkiJW1zIgorKyNlbGlmIGRlZmluZWQoSEFWRV9TQ0FORl9BU19NT0RJRklFUikKKysjZGVmaW5lIFVMX1NDTnNBCSIlYXMiCisrI2VuZGlmCisrCisrLyoKKysgKiBzZWVrIHN0dWZmCisrICovCisrI2lmbmRlZiBTRUVLX0RBVEEKKysjIGRlZmluZSBTRUVLX0RBVEEJMworKyNlbmRpZgorKyNpZm5kZWYgU0VFS19IT0xFCisrIyBkZWZpbmUgU0VFS19IT0xFCTQKKysjZW5kaWYKKysKKysKKysvKgorKyAqIE1hY3JvcyB0byBjb252ZXJ0ICNkZWZpbmUnaXRpb25zIHRvIHN0cmluZ3MsIGZvciBleGFtcGxlCisrICogI2RlZmluZSBYWVhYWSA0MgorKyAqIHByaW50ZiAoIiVzPSVzXG4iLCBzdHJpbmdpZnkoWFlYWFkpLCBzdHJpbmdpZnlfdmFsdWUoWFlYWFkpKTsKKysgKi8KKysjZGVmaW5lIHN0cmluZ2lmeV92YWx1ZShzKSBzdHJpbmdpZnkocykKKysjZGVmaW5lIHN0cmluZ2lmeShzKSAjcworKworKy8qCisrICogVUxfQVNBTl9CTEFDS0xJU1QgaXMgYSBtYWNybyB0byB0ZWxsIEFkZHJlc3NTYW5pdGl6ZXIgKGEgY29tcGlsZS10aW1lCisrICogaW5zdHJ1bWVudGF0aW9uIHNoaXBwZWQgd2l0aCBDbGFuZyBhbmQgR0NDKSB0byBub3QgaW5zdHJ1bWVudCB0aGUKKysgKiBhbm5vdGF0ZWQgZnVuY3Rpb24uICBGdXJ0aGVybW9yZSwgaXQgd2lsbCBwcmV2ZW50IHRoZSBjb21waWxlciBmcm9tCisrICogaW5saW5pbmcgdGhlIGZ1bmN0aW9uIGJlY2F1c2UgaW5saW5pbmcgY3VycmVudGx5IGJyZWFrcyB0aGUgYmxhY2tsaXN0aW5nCisrICogbWVjaGFuaXNtIG9mIEFkZHJlc3NTYW5pdGl6ZXIuCisrICovCisrI2lmIF9faGFzX2ZlYXR1cmUoYWRkcmVzc19zYW5pdGl6ZXIpICYmIF9faGFzX2F0dHJpYnV0ZShub19zYW5pdGl6ZV9tZW1vcnkpICYmIF9faGFzX2F0dHJpYnV0ZShub19zYW5pdGl6ZV9hZGRyZXNzKQorKyMgZGVmaW5lIFVMX0FTQU5fQkxBQ0tMSVNUIF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkgX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfbWVtb3J5KSkgX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfYWRkcmVzcykpCisrI2Vsc2UKKysjIGRlZmluZSBVTF9BU0FOX0JMQUNLTElTVAkvKiBub3RoaW5nICovCisrI2VuZGlmCisrCisrLyoKKysgKiBOb3RlIHRoYXQgc3lzY29uZihfU0NfR0VUUFdfUl9TSVpFX01BWCkgcmV0dXJucyAqaW5pdGlhbCogc3VnZ2VzdGVkIHNpemUgZm9yCisrICogcHdkIGJ1ZmZlciBhbmQgaW4gc29tZSBjYXNlcyBpdCBpcyBub3QgbGFyZ2UgZW5vdWdoLiBTZWUgUE9TSVggYW5kCisrICogZ2V0cHduYW1fciBtYW4gcGFnZSBmb3IgbW9yZSBkZXRhaWxzLgorKyAqLworKyNkZWZpbmUgVUxfR0VUUFdfQlVGU0laCSgxNiAqIDEwMjQpCisrCisrLyoKKysgKiBEYXJ3aW4gb3Igb3RoZXIgQlNEcyBtYXkgb25seSBoYXZlIE1BUF9BTk9OLiBUbyBnZXQgaXQgb24gRGFyd2luIHdlIG11c3QKKysgKiBkZWZpbmUgX0RBUldJTl9DX1NPVVJDRSBiZWZvcmUgaW5jbHVkaW5nIHN5cy9tbWFuLmguIFdlIGRvIHRoaXMgaW4gY29uZmlnLmguCisrICovCisrI2lmICFkZWZpbmVkIE1BUF9BTk9OWU1PVVMgJiYgZGVmaW5lZCBNQVBfQU5PTgorKyMgZGVmaW5lIE1BUF9BTk9OWU1PVVMgIChNQVBfQU5PTikKKysjZW5kaWYKKysKKysjZW5kaWYgLyogVVRJTF9MSU5VWF9DX0ggKi8KK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLmMgYi9sb2NhbGUvcHJvZ3JhbXMvY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi42MzYxNTg5NmIwCistLS0gL2Rldi9udWxsCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLmMKK0BAIC0wLDAgKzEsNTI4IEBACisrLyoKKysgKiBoYXJkbGluayAtIGNvbnNvbGlkYXRlIGR1cGxpY2F0ZSBmaWxlcyB2aWEgaGFyZGxpbmtzCisrICoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTggUmVkIEhhdCwgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorKyAqIFdyaXR0ZW4gYnkgSmFrdWIgSmVsaW5layA8amFrdWJAcmVkaGF0LmNvbT4KKysgKgorKyAqIENvcHlyaWdodCAoQykgMjAxOSBLYXJlbCBaYWsgPGt6YWtAcmVkaGF0LmNvbT4KKysgKgorKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKysgKiB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAqIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3b3VsZCBiZSB1c2VmdWwsCisrICogYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCisrICogR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFsb25nCisrICogd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKysgKiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgorKyAqLworKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPGdldG9wdC5oPgorKyNpbmNsdWRlIDxzdGRpby5oPgorKyNpbmNsdWRlIDx1bmlzdGQuaD4KKysjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKysjaW5jbHVkZSA8c3lzL21tYW4uaD4KKysjaW5jbHVkZSA8c3RyaW5nLmg+CisrI2luY2x1ZGUgPGRpcmVudC5oPgorKyNpbmNsdWRlIDxmY250bC5oPgorKyNpbmNsdWRlIDxlcnJuby5oPgorKyNpZmRlZiBIQVZFX1BDUkUKKysjIGRlZmluZSBQQ1JFMl9DT0RFX1VOSVRfV0lEVEggOAorKyMgaW5jbHVkZSA8cGNyZTIuaD4KKysjZW5kaWYKKysKKysjaW5jbHVkZSAiYy5oIgorKyNpbmNsdWRlICJ4YWxsb2MuaCIKKysjaW5jbHVkZSAibmxzLmgiCisrI2luY2x1ZGUgImNsb3Nlc3RyZWFtLmgiCisrCisrI2RlZmluZSBOSEFTSCAgICgxPDwxNykgIC8qIE11c3QgYmUgYSBwb3dlciBvZiAyISAqLworKyNkZWZpbmUgTkJVRiAgICA2NAorKworK3N0cnVjdCBoYXJkbGlua19maWxlOworKworK3N0cnVjdCBoYXJkbGlua19oYXNoIHsKKysJc3RydWN0IGhhcmRsaW5rX2hhc2ggKm5leHQ7CisrCXN0cnVjdCBoYXJkbGlua19maWxlICpjaGFpbjsKKysJb2ZmX3Qgc2l6ZTsKKysJdGltZV90IG10aW1lOworK307CisrCisrc3RydWN0IGhhcmRsaW5rX2RpciB7CisrCXN0cnVjdCBoYXJkbGlua19kaXIgKm5leHQ7CisrCWNoYXIgbmFtZVtdOworK307CisrCisrc3RydWN0IGhhcmRsaW5rX2ZpbGUgeworKwlzdHJ1Y3QgaGFyZGxpbmtfZmlsZSAqbmV4dDsKKysJaW5vX3QgaW5vOworKwlkZXZfdCBkZXY7CisrCXVuc2lnbmVkIGludCBja3N1bTsKKysJY2hhciBuYW1lW107CisrfTsKKysKKytzdHJ1Y3QgaGFyZGxpbmtfZHluc3RyIHsKKysJY2hhciAqYnVmOworKwlzaXplX3QgYWxsb2M7CisrfTsKKysKKytzdHJ1Y3QgaGFyZGxpbmtfY3RsIHsKKysJc3RydWN0IGhhcmRsaW5rX2RpciAqZGlyczsKKysJc3RydWN0IGhhcmRsaW5rX2hhc2ggKmhwc1tOSEFTSF07CisrCWNoYXIgaW9idWYxW0JVRlNJWl07CisrCWNoYXIgaW9idWYyW0JVRlNJWl07CisrCS8qIHN1bW1hcnkgY291bnRlcnMgKi8KKysJdW5zaWduZWQgbG9uZyBsb25nIG5kaXJzOworKwl1bnNpZ25lZCBsb25nIGxvbmcgbm9iamVjdHM7CisrCXVuc2lnbmVkIGxvbmcgbG9uZyBucmVnZmlsZXM7CisrCXVuc2lnbmVkIGxvbmcgbG9uZyBuY29tcDsKKysJdW5zaWduZWQgbG9uZyBsb25nIG5saW5rczsKKysJdW5zaWduZWQgbG9uZyBsb25nIG5zYXZlZDsKKysJLyogY3VycmVudCBkZXZpY2UgKi8KKysJZGV2X3QgZGV2OworKwkvKiBmbGFncyAqLworKwl1bnNpZ25lZCBpbnQgdmVyYm9zZTsKKysJdW5zaWduZWQgaW50CisrCQlub19saW5rOjEsCisrCQljb250ZW50X29ubHk6MSwKKysJCWZvcmNlOjE7CisrfTsKKysvKiBjdGwgaXMgaW4gZ2xvYmFsIHNjb3BlIGR1ZSB1c2UgaW4gYXRleGl0KCkgKi8KKytzdHJ1Y3QgaGFyZGxpbmtfY3RsIGdsb2JhbF9jdGw7CisrCisrX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKQorK3N0YXRpYyBpbmxpbmUgdW5zaWduZWQgaW50IGhhc2gob2ZmX3Qgc2l6ZSwgdGltZV90IG10aW1lKQorK3sKKysJcmV0dXJuIChzaXplIF4gbXRpbWUpICYgKE5IQVNIIC0gMSk7CisrfQorKworK19fYXR0cmlidXRlX18gKChhbHdheXNfaW5saW5lKSkKKytzdGF0aWMgaW5saW5lIGludCBzdGNtcChzdHJ1Y3Qgc3RhdCAqc3QxLCBzdHJ1Y3Qgc3RhdCAqc3QyLCBpbnQgY29udGVudF9zY29wZSkKKyt7CisrCWlmIChjb250ZW50X3Njb3BlKQorKwkJcmV0dXJuIHN0MS0+c3Rfc2l6ZSAhPSBzdDItPnN0X3NpemU7CisrCisrCXJldHVybiBzdDEtPnN0X21vZGUgIT0gc3QyLT5zdF9tb2RlCisrCQl8fCBzdDEtPnN0X3VpZCAhPSBzdDItPnN0X3VpZAorKwkJfHwgc3QxLT5zdF9naWQgIT0gc3QyLT5zdF9naWQKKysJCXx8IHN0MS0+c3Rfc2l6ZSAhPSBzdDItPnN0X3NpemUKKysJCXx8IHN0MS0+c3RfbXRpbWUgIT0gc3QyLT5zdF9tdGltZTsKKyt9CisrCisrc3RhdGljIHZvaWQgcHJpbnRfc3VtbWFyeSh2b2lkKQorK3sKKysJc3RydWN0IGhhcmRsaW5rX2N0bCBjb25zdCAqY29uc3QgY3RsID0gJmdsb2JhbF9jdGw7CisrCisrCWlmICghY3RsLT52ZXJib3NlKQorKwkJcmV0dXJuOworKworKwlpZiAoY3RsLT52ZXJib3NlID4gMSAmJiBjdGwtPm5saW5rcykKKysJCWZwdXRjKCdcbicsIHN0ZG91dCk7CisrCisrCXByaW50ZihfKCJEaXJlY3RvcmllczogICAlOWxsZFxuIiksIGN0bC0+bmRpcnMpOworKwlwcmludGYoXygiT2JqZWN0czogICAgICAgJTlsbGRcbiIpLCBjdGwtPm5vYmplY3RzKTsKKysJcHJpbnRmKF8oIlJlZ3VsYXIgZmlsZXM6ICU5bGxkXG4iKSwgY3RsLT5ucmVnZmlsZXMpOworKwlwcmludGYoXygiQ29tcGFyaXNvbnM6ICAgJTlsbGRcbiIpLCBjdGwtPm5jb21wKTsKKysJcHJpbnRmKCAgIiVzJTlsbGRcbiIsIChjdGwtPm5vX2xpbmsgPworKwkgICAgICAgXygiV291bGQgbGluazogICAgIikgOgorKwkgICAgICAgXygiTGlua2VkOiAgICAgICAgIikpLCBjdGwtPm5saW5rcyk7CisrCXByaW50ZiggICIlcyAlOWxsZFxuIiwgKGN0bC0+bm9fbGluayA/CisrCSAgICAgICBfKCJXb3VsZCBzYXZlOiAgICIpIDoKKysJICAgICAgIF8oIlNhdmVkOiAgICAgICAgIikpLCBjdGwtPm5zYXZlZCk7CisrfQorKworK3N0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpIHVzYWdlKHZvaWQpCisreworKwlmcHV0cyhVU0FHRV9IRUFERVIsIHN0ZG91dCk7CisrCXByaW50ZihfKCIgJXMgW29wdGlvbnNdIGRpcmVjdG9yeS4uLlxuIiksIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lKTsKKysKKysJZnB1dHMoVVNBR0VfU0VQQVJBVE9SLCBzdGRvdXQpOworKwlwdXRzKF8oIkNvbnNvbGlkYXRlIGR1cGxpY2F0ZSBmaWxlcyB1c2luZyBoYXJkbGlua3MuIikpOworKworKwlmcHV0cyhVU0FHRV9PUFRJT05TLCBzdGRvdXQpOworKwlwdXRzKF8oIiAtYywgLS1jb250ZW50ICAgICAgICAgIGNvbXBhcmUgb25seSBjb250ZW50cywgaWdub3JlIHBlcm1pc3Npb24sIGV0Yy4iKSk7CisrCXB1dHMoXygiIC1uLCAtLWRyeS1ydW4gICAgICAgICAgZG9uJ3QgYWN0dWFsbHkgbGluayBhbnl0aGluZyIpKTsKKysJcHV0cyhfKCIgLXYsIC0tdmVyYm9zZSAgICAgICAgICBwcmludCBzdW1tYXJ5IGFmdGVyIGhhcmRsaW5raW5nIikpOworKwlwdXRzKF8oIiAtdnYgICAgICAgICAgICAgICAgICAgIHByaW50IGV2ZXJ5IGhhcmRsaW5rZWQgZmlsZSBhbmQgc3VtbWFyeSIpKTsKKysJcHV0cyhfKCIgLWYsIC0tZm9yY2UgICAgICAgICAgICBmb3JjZSBoYXJkbGlua2luZyBhY3Jvc3MgZmlsZXN5c3RlbXMiKSk7CisrCXB1dHMoXygiIC14LCAtLWV4Y2x1ZGUgPHJlZ2V4PiAgZXhjbHVkZSBmaWxlcyBtYXRjaGluZyBwYXR0ZXJuIikpOworKworKwlmcHV0cyhVU0FHRV9TRVBBUkFUT1IsIHN0ZG91dCk7CisrCXByaW50ZihVU0FHRV9IRUxQX09QVElPTlMoMTYpKTsgLyogY2hhciBvZmZzZXQgdG8gYWxpZ24gb3B0aW9uIGRlc2NyaXB0aW9ucyAqLworKwlwcmludGYoVVNBR0VfTUFOX1RBSUwoImhhcmRsaW5rKDEpIikpOworKwlleGl0KEVYSVRfU1VDQ0VTUyk7CisrfQorKworK19fYXR0cmlidXRlX18gKChhbHdheXNfaW5saW5lKSkKKytzdGF0aWMgaW5saW5lIHNpemVfdCBhZGQyKHNpemVfdCBhLCBzaXplX3QgYikKKyt7CisrCXNpemVfdCBzdW0gPSBhICsgYjsKKysKKysJaWYgKHN1bSA8IGEpCisrCQllcnJ4KEVYSVRfRkFJTFVSRSwgXygiaW50ZWdlciBvdmVyZmxvdyIpKTsKKysJcmV0dXJuIHN1bTsKKyt9CisrCisrX19hdHRyaWJ1dGVfXyAoKGFsd2F5c19pbmxpbmUpKQorK3N0YXRpYyBpbmxpbmUgc2l6ZV90IGFkZDMoc2l6ZV90IGEsIHNpemVfdCBiLCBzaXplX3QgYykKKyt7CisrCXJldHVybiBhZGQyKGFkZDIoYSwgYiksIGMpOworK30KKysKKytzdGF0aWMgdm9pZCBncm93c3RyKHN0cnVjdCBoYXJkbGlua19keW5zdHIgKnN0ciwgc2l6ZV90IG5ld2xlbikKKyt7CisrCWlmIChuZXdsZW4gPCBzdHItPmFsbG9jKQorKwkJcmV0dXJuOworKwlzdHItPmJ1ZiA9IHhyZWFsbG9jKHN0ci0+YnVmLCBzdHItPmFsbG9jID0gYWRkMihuZXdsZW4sIDEpKTsKKyt9CisrCisrc3RhdGljIHZvaWQgcHJvY2Vzc19wYXRoKHN0cnVjdCBoYXJkbGlua19jdGwgKmN0bCwgY29uc3QgY2hhciAqbmFtZSkKKyt7CisrCXN0cnVjdCBzdGF0IHN0LCBzdDIsIHN0MzsKKysJY29uc3Qgc2l6ZV90IG5hbWVsZW4gPSBzdHJsZW4obmFtZSk7CisrCisrCWN0bC0+bm9iamVjdHMrKzsKKysJaWYgKGxzdGF0KG5hbWUsICZzdCkpCisrCQlyZXR1cm47CisrCisrCWlmIChzdC5zdF9kZXYgIT0gY3RsLT5kZXYgJiYgIWN0bC0+Zm9yY2UpIHsKKysJCWlmIChjdGwtPmRldikKKysJCQllcnJ4KEVYSVRfRkFJTFVSRSwKKysJCQkgICAgIF8oIiVzIGlzIG9uIGRpZmZlcmVudCBmaWxlc3lzdGVtIHRoYW4gdGhlIHJlc3QgIgorKwkJCSAgICAgICAiKHVzZSAtZiBvcHRpb24gdG8gb3ZlcnJpZGUpLiIpLCBuYW1lKTsKKysJCWN0bC0+ZGV2ID0gc3Quc3RfZGV2OworKwl9CisrCWlmIChTX0lTRElSKHN0LnN0X21vZGUpKSB7CisrCQlzdHJ1Y3QgaGFyZGxpbmtfZGlyICpkcCA9IHhtYWxsb2MoYWRkMyhzaXplb2YoKmRwKSwgbmFtZWxlbiwgMSkpOworKwkJbWVtY3B5KGRwLT5uYW1lLCBuYW1lLCBuYW1lbGVuICsgMSk7CisrCQlkcC0+bmV4dCA9IGN0bC0+ZGlyczsKKysJCWN0bC0+ZGlycyA9IGRwOworKworKwl9IGVsc2UgaWYgKFNfSVNSRUcoc3Quc3RfbW9kZSkpIHsKKysJCWludCBmZCwgaTsKKysJCXN0cnVjdCBoYXJkbGlua19maWxlICpmcCwgKmZwMjsKKysJCXN0cnVjdCBoYXJkbGlua19oYXNoICpocDsKKysJCWNvbnN0IGNoYXIgKm4xLCAqbjI7CisrCQl1bnNpZ25lZCBpbnQgYnVmW05CVUZdOworKwkJaW50IGNrc3Vtc2l6ZSA9IHNpemVvZihidWYpOworKwkJdW5zaWduZWQgaW50IGNrc3VtOworKwkJdGltZV90IG10aW1lID0gY3RsLT5jb250ZW50X29ubHkgPyAwIDogc3Quc3RfbXRpbWU7CisrCQl1bnNpZ25lZCBpbnQgaHNoID0gaGFzaChzdC5zdF9zaXplLCBtdGltZSk7CisrCQlvZmZfdCBmc2l6ZTsKKysKKysJCWN0bC0+bnJlZ2ZpbGVzKys7CisrCQlpZiAoY3RsLT52ZXJib3NlID4gMSkKKysJCQlwcmludGYoIiVzXG4iLCBuYW1lKTsKKysKKysJCWZkID0gb3BlbihuYW1lLCBPX1JET05MWSk7CisrCQlpZiAoZmQgPCAwKQorKwkJCXJldHVybjsKKysKKysJCWlmICgoc2l6ZV90KXN0LnN0X3NpemUgPCBzaXplb2YoYnVmKSkgeworKwkJCWNrc3Vtc2l6ZSA9IHN0LnN0X3NpemU7CisrCQkJbWVtc2V0KCgoY2hhciAqKWJ1ZikgKyBja3N1bXNpemUsIDAsCisrCQkJICAgICAgIChzaXplb2YoYnVmKSAtIGNrc3Vtc2l6ZSkgJSBzaXplb2YoYnVmWzBdKSk7CisrCQl9CisrCQlpZiAocmVhZChmZCwgYnVmLCBja3N1bXNpemUpICE9IGNrc3Vtc2l6ZSkgeworKwkJCWNsb3NlKGZkKTsKKysJCQlyZXR1cm47CisrCQl9CisrCQlja3N1bXNpemUgPSAoY2tzdW1zaXplICsgc2l6ZW9mKGJ1ZlswXSkgLSAxKSAvIHNpemVvZihidWZbMF0pOworKwkJZm9yIChpID0gMCwgY2tzdW0gPSAwOyBpIDwgY2tzdW1zaXplOyBpKyspIHsKKysJCQlpZiAoY2tzdW0gKyBidWZbaV0gPCBja3N1bSkKKysJCQkJY2tzdW0gKz0gYnVmW2ldICsgMTsKKysJCQllbHNlCisrCQkJCWNrc3VtICs9IGJ1ZltpXTsKKysJCX0KKysJCWZvciAoaHAgPSBjdGwtPmhwc1toc2hdOyBocDsgaHAgPSBocC0+bmV4dCkgeworKwkJCWlmIChocC0+c2l6ZSA9PSBzdC5zdF9zaXplICYmIGhwLT5tdGltZSA9PSBtdGltZSkKKysJCQkJYnJlYWs7CisrCQl9CisrCQlpZiAoIWhwKSB7CisrCQkJaHAgPSB4bWFsbG9jKHNpemVvZigqaHApKTsKKysJCQlocC0+c2l6ZSA9IHN0LnN0X3NpemU7CisrCQkJaHAtPm10aW1lID0gbXRpbWU7CisrCQkJaHAtPmNoYWluID0gTlVMTDsKKysJCQlocC0+bmV4dCA9IGN0bC0+aHBzW2hzaF07CisrCQkJY3RsLT5ocHNbaHNoXSA9IGhwOworKwkJfQorKwkJZm9yIChmcCA9IGhwLT5jaGFpbjsgZnA7IGZwID0gZnAtPm5leHQpIHsKKysJCQlpZiAoZnAtPmNrc3VtID09IGNrc3VtKQorKwkJCQlicmVhazsKKysJCX0KKysJCWZvciAoZnAyID0gZnA7IGZwMiAmJiBmcDItPmNrc3VtID09IGNrc3VtOyBmcDIgPSBmcDItPm5leHQpIHsKKysJCQlpZiAoZnAyLT5pbm8gPT0gc3Quc3RfaW5vICYmIGZwMi0+ZGV2ID09IHN0LnN0X2RldikgeworKwkJCQljbG9zZShmZCk7CisrCQkJCXJldHVybjsKKysJCQl9CisrCQl9CisrCQlmb3IgKGZwMiA9IGZwOyBmcDIgJiYgZnAyLT5ja3N1bSA9PSBja3N1bTsgZnAyID0gZnAyLT5uZXh0KSB7CisrCisrCQkJaWYgKCFsc3RhdChmcDItPm5hbWUsICZzdDIpICYmIFNfSVNSRUcoc3QyLnN0X21vZGUpICYmCisrCQkJICAgICFzdGNtcCgmc3QsICZzdDIsIGN0bC0+Y29udGVudF9vbmx5KSAmJgorKwkJCSAgICBzdDIuc3RfaW5vICE9IHN0LnN0X2lubyAmJgorKwkJCSAgICBzdDIuc3RfZGV2ID09IHN0LnN0X2RldikgeworKworKwkJCQlpbnQgZmQyID0gb3BlbihmcDItPm5hbWUsIE9fUkRPTkxZKTsKKysJCQkJaWYgKGZkMiA8IDApCisrCQkJCQljb250aW51ZTsKKysKKysJCQkJaWYgKGZzdGF0KGZkMiwgJnN0MikgfHwgIVNfSVNSRUcoc3QyLnN0X21vZGUpCisrCQkJCSAgICB8fCBzdDIuc3Rfc2l6ZSA9PSAwKSB7CisrCQkJCQljbG9zZShmZDIpOworKwkJCQkJY29udGludWU7CisrCQkJCX0KKysJCQkJY3RsLT5uY29tcCsrOworKwkJCQlsc2VlayhmZCwgMCwgU0VFS19TRVQpOworKworKwkJCQlmb3IgKGZzaXplID0gc3Quc3Rfc2l6ZTsgZnNpemUgPiAwOworKwkJCQkgICAgIGZzaXplIC09IChvZmZfdClzaXplb2YoY3RsLT5pb2J1ZjEpKSB7CisrCQkJCQlzc2l6ZV90IHhzejsKKysJCQkJCXNzaXplX3QgcnNpemUgPSBmc2l6ZSA+IChzc2l6ZV90KSBzaXplb2YoY3RsLT5pb2J1ZjEpID8KKysJCQkJCQkJKHNzaXplX3QpIHNpemVvZihjdGwtPmlvYnVmMSkgOiBmc2l6ZTsKKysKKysJCQkJCWlmICgoeHN6ID0gcmVhZChmZCwgY3RsLT5pb2J1ZjEsIHJzaXplKSkgIT0gcnNpemUpCisrCQkJCQkJd2FybihfKCJjYW5ub3QgcmVhZCAlcyIpLCBuYW1lKTsKKysJCQkJCWVsc2UgaWYgKCh4c3ogPSByZWFkKGZkMiwgY3RsLT5pb2J1ZjIsIHJzaXplKSkgIT0gcnNpemUpCisrCQkJCQkJd2FybihfKCJjYW5ub3QgcmVhZCAlcyIpLCBmcDItPm5hbWUpOworKworKwkJCQkJaWYgKHhzeiAhPSByc2l6ZSkgeworKwkJCQkJCWNsb3NlKGZkKTsKKysJCQkJCQljbG9zZShmZDIpOworKwkJCQkJCXJldHVybjsKKysJCQkJCX0KKysJCQkJCWlmIChtZW1jbXAoY3RsLT5pb2J1ZjEsIGN0bC0+aW9idWYyLCByc2l6ZSkpCisrCQkJCQkJYnJlYWs7CisrCQkJCX0KKysJCQkJY2xvc2UoZmQyKTsKKysJCQkJaWYgKGZzaXplID4gMCkKKysJCQkJCWNvbnRpbnVlOworKwkJCQlpZiAobHN0YXQobmFtZSwgJnN0MykpIHsKKysJCQkJCXdhcm4oXygiY2Fubm90IHN0YXQgJXMiKSwgbmFtZSk7CisrCQkJCQljbG9zZShmZCk7CisrCQkJCQlyZXR1cm47CisrCQkJCX0KKysJCQkJc3QzLnN0X2F0aW1lID0gc3Quc3RfYXRpbWU7CisrCQkJCWlmIChzdGNtcCgmc3QsICZzdDMsIDApKSB7CisrCQkJCQl3YXJueChfKCJmaWxlICVzIGNoYW5nZWQgdW5kZXJuZWF0aCB1cyIpLCBuYW1lKTsKKysJCQkJCWNsb3NlKGZkKTsKKysJCQkJCXJldHVybjsKKysJCQkJfQorKwkJCQluMSA9IGZwMi0+bmFtZTsKKysJCQkJbjIgPSBuYW1lOworKworKwkJCQlpZiAoIWN0bC0+bm9fbGluaykgeworKwkJCQkJY29uc3QgY2hhciAqc3VmZml4ID0KKysJCQkJCSAgICAiLiQkJF9fX2NsZWFuaXRfX18kJCQiOworKwkJCQkJY29uc3Qgc2l6ZV90IHN1ZmZpeGxlbiA9IHN0cmxlbihzdWZmaXgpOworKwkJCQkJc2l6ZV90IG4ybGVuID0gc3RybGVuKG4yKTsKKysJCQkJCXN0cnVjdCBoYXJkbGlua19keW5zdHIgbmFtMiA9IHsgTlVMTCwgMCB9OworKworKwkJCQkJZ3Jvd3N0cigmbmFtMiwgYWRkMihuMmxlbiwgc3VmZml4bGVuKSk7CisrCQkJCQltZW1jcHkobmFtMi5idWYsIG4yLCBuMmxlbik7CisrCQkJCQltZW1jcHkoJm5hbTIuYnVmW24ybGVuXSwgc3VmZml4LAorKwkJCQkJICAgICAgIHN1ZmZpeGxlbiArIDEpOworKwkJCQkJLyogRmlyc3QgY3JlYXRlIGEgdGVtcG9yYXJ5IGxpbmsgdG8gbjEgdW5kZXIgYSBuZXcgbmFtZSAqLworKwkJCQkJaWYgKGxpbmsobjEsIG5hbTIuYnVmKSkgeworKwkJCQkJCXdhcm4oXygiZmFpbGVkIHRvIGhhcmRsaW5rICVzIHRvICVzIChjcmVhdGUgdGVtcG9yYXJ5IGxpbmsgYXMgJXMgZmFpbGVkKSIpLAorKwkJCQkJCQluMSwgbjIsIG5hbTIuYnVmKTsKKysJCQkJCQlmcmVlKG5hbTIuYnVmKTsKKysJCQkJCQljb250aW51ZTsKKysJCQkJCX0KKysJCQkJCS8qIFRoZW4gcmVuYW1lIGludG8gcGxhY2Ugb3ZlciB0aGUgZXhpc3RpbmcgbjIgKi8KKysJCQkJCWlmIChyZW5hbWUobmFtMi5idWYsIG4yKSkgeworKwkJCQkJCXdhcm4oXygiZmFpbGVkIHRvIGhhcmRsaW5rICVzIHRvICVzIChyZW5hbWUgdGVtcG9yYXJ5IGxpbmsgdG8gJXMgZmFpbGVkKSIpLAorKwkJCQkJCQluMSwgbjIsIG4yKTsKKysJCQkJCQkvKiBTb21ldGhpbmcgd2VudCB3cm9uZywgdHJ5IHRvIHJlbW92ZSB0aGUgbm93IHJlZHVuZGFudCB0ZW1wb3JhcnkgbGluayAqLworKwkJCQkJCWlmICh1bmxpbmsobmFtMi5idWYpKQorKwkJCQkJCQl3YXJuKF8oImZhaWxlZCB0byByZW1vdmUgdGVtcG9yYXJ5IGxpbmsgJXMiKSwgbmFtMi5idWYpOworKwkJCQkJCWZyZWUobmFtMi5idWYpOworKwkJCQkJCWNvbnRpbnVlOworKwkJCQkJfQorKwkJCQkJZnJlZShuYW0yLmJ1Zik7CisrCQkJCX0KKysJCQkJY3RsLT5ubGlua3MrKzsKKysJCQkJaWYgKHN0My5zdF9ubGluayA+IDEpIHsKKysJCQkJCS8qIFdlIGFjdHVhbGx5IGRpZCBub3Qgc2F2ZSBhbnl0aGluZyB0aGlzIHRpbWUsIHNpbmNlIHRoZSBsaW5rIHNlY29uZCBhcmd1bWVudAorKwkJCQkJICAgaGFkIHNvbWUgb3RoZXIgbGlua3MgYXMgd2VsbC4gICovCisrCQkJCQlpZiAoY3RsLT52ZXJib3NlID4gMSkKKysJCQkJCQlwcmludGYoXygiICVzICVzIHRvICVzXG4iKSwKKysJCQkJCQkJKGN0bC0+bm9fbGluayA/IF8oIldvdWxkIGxpbmsiKSA6IF8oIkxpbmtlZCIpKSwKKysJCQkJCQkJbjEsIG4yKTsKKysJCQkJfSBlbHNlIHsKKysJCQkJCWN0bC0+bnNhdmVkICs9ICgoc3Quc3Rfc2l6ZSArIDQwOTUpIC8gNDA5NikgKiA0MDk2OworKwkJCQkJaWYgKGN0bC0+dmVyYm9zZSA+IDEpCisrCQkJCQkJcHJpbnRmKF8oIiAlcyAlcyB0byAlcywgJXMgJWpkXG4iKSwKKysJCQkJCQkJKGN0bC0+bm9fbGluayA/IF8oIldvdWxkIGxpbmsiKSA6IF8oIkxpbmtlZCIpKSwKKysJCQkJCQkJbjEsIG4yLAorKwkJCQkJCQkoY3RsLT5ub19saW5rID8gXygid291bGQgc2F2ZSIpIDogXygic2F2ZWQiKSksCisrCQkJCQkJCShpbnRtYXhfdClzdC5zdF9zaXplKTsKKysJCQkJfQorKwkJCQljbG9zZShmZCk7CisrCQkJCXJldHVybjsKKysJCQl9CisrCQl9CisrCQlmcDIgPSB4bWFsbG9jKGFkZDMoc2l6ZW9mKCpmcDIpLCBuYW1lbGVuLCAxKSk7CisrCQljbG9zZShmZCk7CisrCQlmcDItPmlubyA9IHN0LnN0X2lubzsKKysJCWZwMi0+ZGV2ID0gc3Quc3RfZGV2OworKwkJZnAyLT5ja3N1bSA9IGNrc3VtOworKwkJbWVtY3B5KGZwMi0+bmFtZSwgbmFtZSwgbmFtZWxlbiArIDEpOworKworKwkJaWYgKGZwKSB7CisrCQkJZnAyLT5uZXh0ID0gZnAtPm5leHQ7CisrCQkJZnAtPm5leHQgPSBmcDI7CisrCQl9IGVsc2UgeworKwkJCWZwMi0+bmV4dCA9IGhwLT5jaGFpbjsKKysJCQlocC0+Y2hhaW4gPSBmcDI7CisrCQl9CisrCQlyZXR1cm47CisrCX0KKyt9CisrCisraW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorK3sKKysJaW50IGNoOworKwlpbnQgaTsKKysjaWZkZWYgSEFWRV9QQ1JFCisrCWludCBlcnJvcm51bWJlcjsKKysJUENSRTJfU0laRSBlcnJvcm9mZnNldDsKKysJcGNyZTJfY29kZSAqcmUgPSBOVUxMOworKwlQQ1JFMl9TUFRSIGV4Y2x1ZGVfcGF0dGVybiA9IE5VTEw7CisrCXBjcmUyX21hdGNoX2RhdGEgKm1hdGNoX2RhdGEgPSBOVUxMOworKyNlbmRpZgorKwlzdHJ1Y3QgaGFyZGxpbmtfZHluc3RyIG5hbTEgPSB7IE5VTEwsIDAgfTsKKysJc3RydWN0IGhhcmRsaW5rX2N0bCAqY3RsID0gJmdsb2JhbF9jdGw7CisrCisrCXN0YXRpYyBjb25zdCBzdHJ1Y3Qgb3B0aW9uIGxvbmdvcHRzW10gPSB7CisrCQl7ICJjb250ZW50IiwgICAgbm9fYXJndW1lbnQsIE5VTEwsICdjJyB9LAorKwkJeyAiZHJ5LXJ1biIsICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAnbicgfSwKKysJCXsgImV4Y2x1ZGUiLCAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3gnIH0sCisrCQl7ICJmb3JjZSIsICAgICAgbm9fYXJndW1lbnQsIE5VTEwsICdmJyB9LAorKwkJeyAiaGVscCIsICAgICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAnaCcgfSwKKysJCXsgInZlcmJvc2UiLCAgICBub19hcmd1bWVudCwgTlVMTCwgJ3YnIH0sCisrCQl7ICJ2ZXJzaW9uIiwgICAgbm9fYXJndW1lbnQsIE5VTEwsICdWJyB9LAorKwkJeyBOVUxMLCAwLCBOVUxMLCAwIH0sCisrCX07CisrCisrCXNldGxvY2FsZShMQ19BTEwsICIiKTsKKysJYmluZHRleHRkb21haW4oUEFDS0FHRSwgTE9DQUxFRElSKTsKKysJdGV4dGRvbWFpbihQQUNLQUdFKTsKKysJY2xvc2Vfc3Rkb3V0X2F0ZXhpdCgpOworKworKwl3aGlsZSAoKGNoID0gZ2V0b3B0X2xvbmcoYXJnYywgYXJndiwgImNudmZ4OlZoIiwgbG9uZ29wdHMsIE5VTEwpKSAhPSAtMSkgeworKwkJc3dpdGNoIChjaCkgeworKwkJY2FzZSAnbic6CisrCQkJY3RsLT5ub19saW5rID0gMTsKKysJCQlicmVhazsKKysJCWNhc2UgJ3YnOgorKwkJCWN0bC0+dmVyYm9zZSsrOworKwkJCWJyZWFrOworKwkJY2FzZSAnYyc6CisrCQkJY3RsLT5jb250ZW50X29ubHkgPSAxOworKwkJCWJyZWFrOworKwkJY2FzZSAnZic6CisrCQkJY3RsLT5mb3JjZSA9IDE7CisrCQkJYnJlYWs7CisrCQljYXNlICd4JzoKKysjaWZkZWYgSEFWRV9QQ1JFCisrCQkJZXhjbHVkZV9wYXR0ZXJuID0gKFBDUkUyX1NQVFIpIG9wdGFyZzsKKysjZWxzZQorKwkJCWVycngoRVhJVF9GQUlMVVJFLAorKwkJCSAgICAgXygib3B0aW9uIC0tZXhjbHVkZSBub3Qgc3VwcG9ydGVkIChidWlsdCB3aXRob3V0IHBjcmUyKSIpKTsKKysjZW5kaWYKKysJCQlicmVhazsKKysJCWNhc2UgJ1YnOgorKwkJCXByaW50X3ZlcnNpb24oRVhJVF9TVUNDRVNTKTsKKysJCWNhc2UgJ2gnOgorKwkJCXVzYWdlKCk7CisrCQlkZWZhdWx0OgorKwkJCWVycnRyeWhlbHAoRVhJVF9GQUlMVVJFKTsKKysJCX0KKysJfQorKworKwlpZiAob3B0aW5kID09IGFyZ2MpIHsKKysJCXdhcm54KF8oIm5vIGRpcmVjdG9yeSBzcGVjaWZpZWQiKSk7CisrCQllcnJ0cnloZWxwKEVYSVRfRkFJTFVSRSk7CisrCX0KKysKKysjaWZkZWYgSEFWRV9QQ1JFCisrCWlmIChleGNsdWRlX3BhdHRlcm4pIHsKKysJCXJlID0gcGNyZTJfY29tcGlsZShleGNsdWRlX3BhdHRlcm4sIC8qIHRoZSBwYXR0ZXJuICovCisrCQkJCSAgIFBDUkUyX1pFUk9fVEVSTUlOQVRFRCwgLyogaW5kaWNhdGVzIHBhdHRlcm4gaXMgemVyby10ZXJtaW5hdGUgKi8KKysJCQkJICAgMCwgLyogZGVmYXVsdCBvcHRpb25zICovCisrCQkJCSAgICZlcnJvcm51bWJlciwgJmVycm9yb2Zmc2V0LCBOVUxMKTsgLyogdXNlIGRlZmF1bHQgY29tcGlsZSBjb250ZXh0ICovCisrCQlpZiAoIXJlKSB7CisrCQkJUENSRTJfVUNIQVIgYnVmZmVyWzI1Nl07CisrCQkJcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2UoZXJyb3JudW1iZXIsIGJ1ZmZlciwKKysJCQkJCQlzaXplb2YoYnVmZmVyKSk7CisrCQkJZXJyeChFWElUX0ZBSUxVUkUsIF8oInBhdHRlcm4gZXJyb3IgYXQgb2Zmc2V0ICVkOiAlcyIpLAorKwkJCQkoaW50KWVycm9yb2Zmc2V0LCBidWZmZXIpOworKwkJfQorKwkJbWF0Y2hfZGF0YSA9IHBjcmUyX21hdGNoX2RhdGFfY3JlYXRlX2Zyb21fcGF0dGVybihyZSwgTlVMTCk7CisrCX0KKysjZW5kaWYKKysJYXRleGl0KHByaW50X3N1bW1hcnkpOworKworKwlmb3IgKGkgPSBvcHRpbmQ7IGkgPCBhcmdjOyBpKyspCisrCQlwcm9jZXNzX3BhdGgoY3RsLCBhcmd2W2ldKTsKKysKKysJd2hpbGUgKGN0bC0+ZGlycykgeworKwkJRElSICpkaDsKKysJCXN0cnVjdCBkaXJlbnQgKmRpOworKwkJc3RydWN0IGhhcmRsaW5rX2RpciAqZHAgPSBjdGwtPmRpcnM7CisrCQlzaXplX3QgbmFtMWJhc2VsZW4gPSBzdHJsZW4oZHAtPm5hbWUpOworKworKwkJY3RsLT5kaXJzID0gZHAtPm5leHQ7CisrCQlncm93c3RyKCZuYW0xLCBhZGQyKG5hbTFiYXNlbGVuLCAxKSk7CisrCQltZW1jcHkobmFtMS5idWYsIGRwLT5uYW1lLCBuYW0xYmFzZWxlbik7CisrCQlmcmVlKGRwKTsKKysJCW5hbTEuYnVmW25hbTFiYXNlbGVuKytdID0gJy8nOworKwkJbmFtMS5idWZbbmFtMWJhc2VsZW5dID0gMDsKKysJCWRoID0gb3BlbmRpcihuYW0xLmJ1Zik7CisrCisrCQlpZiAoZGggPT0gTlVMTCkKKysJCQljb250aW51ZTsKKysJCWN0bC0+bmRpcnMrKzsKKysKKysJCXdoaWxlICgoZGkgPSByZWFkZGlyKGRoKSkgIT0gTlVMTCkgeworKwkJCWlmICghZGktPmRfbmFtZVswXSkKKysJCQkJY29udGludWU7CisrCQkJaWYgKGRpLT5kX25hbWVbMF0gPT0gJy4nKSB7CisrCQkJCWlmICghZGktPmRfbmFtZVsxXSB8fCAhc3RyY21wKGRpLT5kX25hbWUsICIuLiIpKQorKwkJCQkJY29udGludWU7CisrCQkJfQorKyNpZmRlZiBIQVZFX1BDUkUKKysJCQlpZiAocmUgJiYgcGNyZTJfbWF0Y2gocmUsIC8qIGNvbXBpbGVkIHJlZ2V4ICovCisrCQkJCQkgICAgICAoUENSRTJfU1BUUikgZGktPmRfbmFtZSwgc3RybGVuKGRpLT5kX25hbWUpLCAwLCAvKiBzdGFydCBhdCBvZmZzZXQgMCAqLworKwkJCQkJICAgICAgMCwgLyogZGVmYXVsdCBvcHRpb25zICovCisrCQkJCQkgICAgICBtYXRjaF9kYXRhLCAvKiBibG9jayBmb3Igc3RvcmluZyB0aGUgcmVzdWx0ICovCisrCQkJCQkgICAgICBOVUxMKSAvKiB1c2UgZGVmYXVsdCBtYXRjaCBjb250ZXh0ICovCisrCQkJICAgID49MCkgeworKwkJCQlpZiAoY3RsLT52ZXJib3NlKSB7CisrCQkJCQluYW0xLmJ1ZltuYW0xYmFzZWxlbl0gPSAwOworKwkJCQkJcHJpbnRmKF8oIlNraXBwaW5nICVzJXNcbiIpLCBuYW0xLmJ1ZiwgZGktPmRfbmFtZSk7CisrCQkJCX0KKysJCQkJY29udGludWU7CisrCQkJfQorKyNlbmRpZgorKwkJCXsKKysJCQkJc2l6ZV90IHN1YmRpcmxlbjsKKysJCQkJZ3Jvd3N0cigmbmFtMSwKKysJCQkJCWFkZDIobmFtMWJhc2VsZW4sIHN1YmRpcmxlbiA9CisrCQkJCQkgICAgIHN0cmxlbihkaS0+ZF9uYW1lKSkpOworKwkJCQltZW1jcHkoJm5hbTEuYnVmW25hbTFiYXNlbGVuXSwgZGktPmRfbmFtZSwKKysJCQkJICAgICAgIGFkZDIoc3ViZGlybGVuLCAxKSk7CisrCQkJfQorKwkJCXByb2Nlc3NfcGF0aChjdGwsIG5hbTEuYnVmKTsKKysJCX0KKysJCWNsb3NlZGlyKGRoKTsKKysJfQorKworKwlyZXR1cm4gMDsKKyt9CitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL3hhbGxvYy5oIGIvbG9jYWxlL3Byb2dyYW1zL3hhbGxvYy5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMDEyOWE4NWUyZQorLS0tIC9kZXYvbnVsbAorKysrIGIvbG9jYWxlL3Byb2dyYW1zL3hhbGxvYy5oCitAQCAtMCwwICsxLDEyOSBAQAorKy8qCisrICogQ29weXJpZ2h0IChDKSAyMDEwIERhdmlkbG9ociBCdWVzbyA8ZGF2ZUBnbnUub3JnPgorKyAqCisrICogVGhpcyBmaWxlIG1heSBiZSByZWRpc3RyaWJ1dGVkIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUKKysgKiBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UuCisrICoKKysgKiBHZW5lcmFsIG1lbW9yeSBhbGxvY2F0aW9uIHdyYXBwZXJzIGZvciBtYWxsb2MsIHJlYWxsb2MsIGNhbGxvYyBhbmQgc3RyZHVwCisrICovCisrCisrI2lmbmRlZiBVVElMX0xJTlVYX1hBTExPQ19ICisrI2RlZmluZSBVVElMX0xJTlVYX1hBTExPQ19ICisrCisrI2luY2x1ZGUgPHN0ZGxpYi5oPgorKyNpbmNsdWRlIDxzdHJpbmcuaD4KKysKKysjaW5jbHVkZSAiYy5oIgorKworKyNpZm5kZWYgWEFMTE9DX0VYSVRfQ09ERQorKyMgZGVmaW5lIFhBTExPQ19FWElUX0NPREUgRVhJVF9GQUlMVVJFCisrI2VuZGlmCisrCisrc3RhdGljIGlubGluZSB2b2lkIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpCisrX19lcnJfb29tKGNvbnN0IGNoYXIgKmZpbGUsIHVuc2lnbmVkIGludCBsaW5lKQorK3sKKysJZXJyKFhBTExPQ19FWElUX0NPREUsICIlczogJXU6IGNhbm5vdCBhbGxvY2F0ZSBtZW1vcnkiLCBmaWxlLCBsaW5lKTsKKyt9CisrCisrI2RlZmluZSBlcnJfb29tKCkJX19lcnJfb29tKF9fRklMRV9fLCBfX0xJTkVfXykKKysKKytzdGF0aWMgaW5saW5lIF9fdWxfYWxsb2Nfc2l6ZSgxKSBfX3VsX3JldHVybnNfbm9ubnVsbAorK3ZvaWQgKnhtYWxsb2MoY29uc3Qgc2l6ZV90IHNpemUpCisreworKyAgICAgICAgdm9pZCAqcmV0ID0gbWFsbG9jKHNpemUpOworKworKyAgICAgICAgaWYgKCFyZXQgJiYgc2l6ZSkKKysgICAgICAgICAgICAgICAgZXJyKFhBTExPQ19FWElUX0NPREUsICJjYW5ub3QgYWxsb2NhdGUgJXp1IGJ5dGVzIiwgc2l6ZSk7CisrICAgICAgICByZXR1cm4gcmV0OworK30KKysKKytzdGF0aWMgaW5saW5lIF9fdWxfYWxsb2Nfc2l6ZSgyKSBfX3VsX3JldHVybnNfbm9ubnVsbAorK3ZvaWQgKnhyZWFsbG9jKHZvaWQgKnB0ciwgY29uc3Qgc2l6ZV90IHNpemUpCisreworKyAgICAgICAgdm9pZCAqcmV0ID0gcmVhbGxvYyhwdHIsIHNpemUpOworKworKyAgICAgICAgaWYgKCFyZXQgJiYgc2l6ZSkKKysgICAgICAgICAgICAgICAgZXJyKFhBTExPQ19FWElUX0NPREUsICJjYW5ub3QgYWxsb2NhdGUgJXp1IGJ5dGVzIiwgc2l6ZSk7CisrICAgICAgICByZXR1cm4gcmV0OworK30KKysKKytzdGF0aWMgaW5saW5lIF9fdWxfY2FsbG9jX3NpemUoMSwgMikgX191bF9yZXR1cm5zX25vbm51bGwKKyt2b2lkICp4Y2FsbG9jKGNvbnN0IHNpemVfdCBuZWxlbXMsIGNvbnN0IHNpemVfdCBzaXplKQorK3sKKysgICAgICAgIHZvaWQgKnJldCA9IGNhbGxvYyhuZWxlbXMsIHNpemUpOworKworKyAgICAgICAgaWYgKCFyZXQgJiYgc2l6ZSAmJiBuZWxlbXMpCisrICAgICAgICAgICAgICAgIGVycihYQUxMT0NfRVhJVF9DT0RFLCAiY2Fubm90IGFsbG9jYXRlICV6dSBieXRlcyIsIHNpemUpOworKyAgICAgICAgcmV0dXJuIHJldDsKKyt9CisrCisrc3RhdGljIGlubGluZSBjaGFyIF9fYXR0cmlidXRlX18oKHdhcm5fdW51c2VkX3Jlc3VsdCkpIF9fdWxfcmV0dXJuc19ub25udWxsCisrKnhzdHJkdXAoY29uc3QgY2hhciAqc3RyKQorK3sKKysgICAgICAgIGNoYXIgKnJldDsKKysKKysgICAgICAgIGlmICghc3RyKQorKyAgICAgICAgICAgICAgICByZXR1cm4gTlVMTDsKKysKKysgICAgICAgIHJldCA9IHN0cmR1cChzdHIpOworKworKyAgICAgICAgaWYgKCFyZXQpCisrICAgICAgICAgICAgICAgIGVycihYQUxMT0NfRVhJVF9DT0RFLCAiY2Fubm90IGR1cGxpY2F0ZSBzdHJpbmciKTsKKysgICAgICAgIHJldHVybiByZXQ7CisrfQorKworK3N0YXRpYyBpbmxpbmUgY2hhciAqIF9fYXR0cmlidXRlX18oKHdhcm5fdW51c2VkX3Jlc3VsdCkpIF9fdWxfcmV0dXJuc19ub25udWxsCisreHN0cm5kdXAoY29uc3QgY2hhciAqc3RyLCBzaXplX3Qgc2l6ZSkKKyt7CisrICAgICAgICBjaGFyICpyZXQ7CisrCisrICAgICAgICBpZiAoIXN0cikKKysgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7CisrCisrICAgICAgICByZXQgPSBzdHJuZHVwKHN0ciwgc2l6ZSk7CisrCisrICAgICAgICBpZiAoIXJldCkKKysgICAgICAgICAgICAgICAgZXJyKFhBTExPQ19FWElUX0NPREUsICJjYW5ub3QgZHVwbGljYXRlIHN0cmluZyIpOworKyAgICAgICAgcmV0dXJuIHJldDsKKyt9CisrCisrCisrc3RhdGljIGlubGluZSBpbnQgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAzKSkpCisrICAgIHhhc3ByaW50ZihjaGFyICoqc3RycCwgY29uc3QgY2hhciAqZm10LCAuLi4pCisreworKwlpbnQgcmV0OworKwl2YV9saXN0IGFyZ3M7CisrCXZhX3N0YXJ0KGFyZ3MsIGZtdCk7CisrCXJldCA9IHZhc3ByaW50ZigmKCpzdHJwKSwgZm10LCBhcmdzKTsKKysJdmFfZW5kKGFyZ3MpOworKwlpZiAocmV0IDwgMCkKKysJCWVycihYQUxMT0NfRVhJVF9DT0RFLCAiY2Fubm90IGFsbG9jYXRlIHN0cmluZyIpOworKwlyZXR1cm4gcmV0OworK30KKysKKytzdGF0aWMgaW5saW5lIGludCAgX19hdHRyaWJ1dGVfXyAoKF9fZm9ybWF0X18ocHJpbnRmLCAyLCAwKSkpCisreHZhc3ByaW50ZihjaGFyICoqc3RycCwgY29uc3QgY2hhciAqZm10LCB2YV9saXN0IGFwKQorK3sKKysJaW50IHJldCA9IHZhc3ByaW50ZigmKCpzdHJwKSwgZm10LCBhcCk7CisrCWlmIChyZXQgPCAwKQorKwkJZXJyKFhBTExPQ19FWElUX0NPREUsICJjYW5ub3QgYWxsb2NhdGUgc3RyaW5nIik7CisrCXJldHVybiByZXQ7CisrfQorKworKworK3N0YXRpYyBpbmxpbmUgY2hhciAqIF9fYXR0cmlidXRlX18oKHdhcm5fdW51c2VkX3Jlc3VsdCkpIHhnZXRob3N0bmFtZSh2b2lkKQorK3sKKysJY2hhciAqbmFtZTsKKysJc2l6ZV90IHN6ID0gZ2V0X2hvc3RuYW1lX21heCgpICsgMTsKKysKKysJbmFtZSA9IHhtYWxsb2Moc2l6ZW9mKGNoYXIpICogc3opOworKworKwlpZiAoZ2V0aG9zdG5hbWUobmFtZSwgc3opICE9IDApIHsKKysJCWZyZWUobmFtZSk7CisrCQlyZXR1cm4gTlVMTDsKKysJfQorKwluYW1lW3N6IC0gMV0gPSAnXDAnOworKwlyZXR1cm4gbmFtZTsKKyt9CisrCisrI2VuZGlmCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbG9jYWxlZGVmLUFkZC1oYXJkbGluay1yZXNvbHZlci10by1idWlsZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMS1sb2NhbGVkZWYtQWRkLWhhcmRsaW5rLXJlc29sdmVyLXRvLWJ1aWxkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2NjUyOTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbG9jYWxlZGVmLUFkZC1oYXJkbGluay1yZXNvbHZlci10by1idWlsZC5wYXRjaApAQCAtMCwwICsxLDUyIEBACitGcm9tIDU2YWUyNjBhYzI0YWRlOTRlMmUwZTc3YzgxNzUxMzEyMzcyZDI1M2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgorRGF0ZTogU2F0LCA3IERlYyAyMDE5IDA5OjU2OjIzIC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGxvY2FsZWRlZjogQWRkIGhhcmRsaW5rIHJlc29sdmVyIHRvIGJ1aWxkCisKK1RoZSBzb3VyY2Vjb2RlIGZvciB0aGlzIGlzIGltcG9ydGVkIGZyb20gdXRpbC1saW51eCBhbmQgaXMga2VwdCB3aXRoCitnbGliYyBzb3VyY2VzCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5pbiB8IDggKysrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCA3N2ZiZGVkLi5hODdlNWIyIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtNDAsNiArNDAsOCBAQCBXQVJORkxBR1MJPSAtV2FsbCAtV25vLWZvcm1hdAorIEZVTExDQwkJPSAkKENDKSAkKENQUEZMQUdTKSAkKENGTEFHUykgXAorIAkJICAkKERFRklORVMpICQoSU5DTFVERVMpICQoV0FSTkZMQUdTKQorIAorK0NST1NTX0xPQ0FMRURFRl9IQVJETElOS19PQkpTID0gY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLm8KKysKKyBMT0NBTEVERUZfT0JKUwk9IGNoYXJtYXAubyBjaGFybWFwLWRpci5vIGxkLWFkZHJlc3MubyBsZC1jb2xsYXRlLm8gXAorIAkJICBsZC1jdHlwZS5vIGxkLWlkZW50aWZpY2F0aW9uLm8gbGQtbWVhc3VyZW1lbnQubyBcCisgCQkgIGxkLW1lc3NhZ2VzLm8gbGQtbW9uZXRhcnkubyBsZC1uYW1lLm8gbGQtbnVtZXJpYy5vIFwKK0BAIC01NCwxMSArNTYsMTQgQEAgTE9DQUxFREVGX09CSlMJPSBjaGFybWFwLm8gY2hhcm1hcC1kaXIubyBsZC1hZGRyZXNzLm8gbGQtY29sbGF0ZS5vIFwKKyAJCSAgYXNwcmludGYubyBnZXRkZWxpbS5vIGxvY2FsZWRlZl9leHRyYS5vIFwKKyAJCSAgb2JzdGFja19wcmludGYubyB2YXNwcmludGYubworIAorLWFsbDoJCWxvY2FsZWRlZiQoRVhFRVhUKQorK2FsbDoJCWxvY2FsZWRlZiQoRVhFRVhUKSBjcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmskKEVYRUVYVCkKKyAKKyBsb2NhbGVkZWYkKEVYRUVYVCk6ICQoTE9DQUxFREVGX09CSlMpCisgCQkkKENDKSAtbyAkQCAkKExPQ0FMRURFRl9PQkpTKSAkKExJQlMpCisgCisrY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rJChFWEVFWFQpOiAkKENST1NTX0xPQ0FMRURFRl9IQVJETElOS19PQkpTKQorKwkJJChDQykgLW8gJEAgJChDUk9TU19MT0NBTEVERUZfSEFSRExJTktfT0JKUykgJChMSUJTKQorKworIGNsZWFuOgorIAkJcm0gLWYgbG9jYWxlJChFWEVFWFQpICQoTE9DQUxFREVGX09CSlMpCisgCitAQCAtNzcsNiArODIsNyBAQCBjbGVhbjoKKyAlLm86ICQoc3JjZGlyKS8lLmMKKyAJCSQoRlVMTENDKSAtYyAtbyAkQCAkPAorIAorK2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5vOiBnbGliYy9sb2NhbGUvcHJvZ3JhbXMvY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLmMKKyBjaGFybWFwLm86IGdsaWJjL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLmMKKyBjaGFybWFwLWRpci5vOiBnbGliYy9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYworIGxkLWFkZHJlc3MubzogZ2xpYmMvbG9jYWxlL3Byb2dyYW1zL2xkLWFkZHJlc3MuYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAxLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDg2ZDFkOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDEtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLUZyb20gZjY5ODRjOTIzYjQxMTU1OTc5NzY0YmZhM2Y0NDYwOTU3MmJlNTQxNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjQ4OjI0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvMjhdIG5hdGl2ZXNkay1nbGliYzogTG9vayBmb3IgaG9zdCBzeXN0ZW0gbGQuc28uY2FjaGUgYXMKLSB3ZWxsCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVRoZSBkZWZhdWx0IGxpYiBzZWFyY2ggcGF0aCBvcmRlciBpczoKLQotICAxKSBMRF9MSUJSQVJZX1BBVEgKLSAgMikgUlBBVEggZnJvbSB0aGUgYmluYXJ5Ci0gIDMpIGxkLnNvLmNhY2hlCi0gIDQpIGRlZmF1bHQgc2VhcmNoIHBhdGhzIGVtYmVkZGVkIGluIHRoZSBsaW5rZXIKLQotRm9yIG5hdGl2ZXNkayBiaW5hcmllcyB3aGljaCBhcmUgYmVpbmcgdXNlZCBhbG9uZ3NpZGUgYmluYXJpZXMgb24gYSBob3N0IHN5c3RlbSwgd2UKLW5lZWQgdGhlIHNlYXJjaCBwYXRocyB0byBmaXJzdGx5IHNlYXJjaCB0aGUgc2hpcHBlZCBuYXRpdmVzZGsgbGlicyBidXQgdGhlbiBhbHNvCi1jb3ZlciB0aGUgaG9zdCBzeXN0ZW0uIEZvciBleGFtcGxlIHdlIHdhbnQgdGhlIGhvc3Qgc3lzdGVtJ3MgbGliR0wgYW5kIHRoaXMgbWF5IGJlCi1pbiBhIG5vbi1zdGFuZGFyZCBsb2NhdGlvbiBsaWtlIC91c3IvbGliL21lc2EuIFRoZSBvbmx5IHBsYWNlIHRoZSBsb2NhdGlvbiBpcyBrbm93Ci1hYm91dCBpcyBpbiB0aGUgbGQuc28uY2FjaGUgb2YgdGhlIGhvc3Qgc3lzdGVtLgotCi1TaW5jZSBuYXRpdmVzZGsgaGFzIGEgc2ltcGxlIHN0cnVjdHVyZSBhbmQgZG9lc24ndCBuZWVkIHRvIHVzZSBhIGNhY2hlIGl0c2VsZiwgd2UKLXJlcHVycG9zZSB0aGUgY2FjaGUgZm9yIHVzZSBhcyBhIGxhc3QgcmVzb3J0IGluIGZpbmRpbmcgaG9zdCBzeXN0ZW0gYmluYXJpZXMuIFRoaXMKLW1lYW5zIHdlIG5lZWQgdG8gc3dpdGNoIHRoZSBvcmRlciBvZiAzIGFuZCA0IGFib3ZlIHRvIG1ha2UgdGhpcyB3b3JrIGVmZmVjdGl2ZWx5LgotCi1SUCAxNC8xMC8yMDEwCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBlbGYvZGwtbG9hZC5jIHwgMTYgKysrKysrKystLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9lbGYvZGwtbG9hZC5jIGIvZWxmL2RsLWxvYWQuYwotaW5kZXggNWFiZWI4NjdmMS4uOTgxYmQ1YjRhZiAxMDA2NDQKLS0tLSBhL2VsZi9kbC1sb2FkLmMKLSsrKyBiL2VsZi9kbC1sb2FkLmMKLUBAIC0yMDgwLDYgKzIwODAsMTQgQEAgX2RsX21hcF9vYmplY3QgKHN0cnVjdCBsaW5rX21hcCAqbG9hZGVyLCBjb25zdCBjaGFyICpuYW1lLAotICAgICAgICAgICAgIH0KLSAgICAgICAgIH0KLSAKLSsgICAgICAvKiB0cnkgdGhlIGRlZmF1bHQgcGF0aC4gICovCi0rICAgICAgaWYgKGZkID09IC0xCi0rCSAgJiYgKChsID0gbG9hZGVyID86IEdMKGRsX25zKVtuc2lkXS5fbnNfbG9hZGVkKSA9PSBOVUxMCi0rCSAgIHx8IF9fYnVpbHRpbl9leHBlY3QgKCEobC0+bF9mbGFnc18xICYgREZfMV9OT0RFRkxJQiksIDEpKQotKwkgJiYgcnRsZF9zZWFyY2hfZGlycy5kaXJzICE9ICh2b2lkICopIC0xKQotKwlmZCA9IG9wZW5fcGF0aCAobmFtZSwgbmFtZWxlbiwgbW9kZSAmIF9fUlRMRF9TRUNVUkUsICZydGxkX3NlYXJjaF9kaXJzLAotKwkJCSZyZWFsbmFtZSwgJmZiLCBsLCBMQV9TRVJfREVGQVVMVCwgJmZvdW5kX290aGVyX2NsYXNzKTsKLSsgICAgICAvKiBGaW5hbGx5IHRyeSBsZC5zby5jYWNoZSAqLwotICNpZmRlZiBVU0VfTERDT05GSUcKLSAgICAgICBpZiAoZmQgPT0gLTEKLSAJICAmJiAoX19nbGliY19saWtlbHkgKChtb2RlICYgX19SVExEX1NFQ1VSRSkgPT0gMCkKLUBAIC0yMTM4LDE0ICsyMTQ2LDYgQEAgX2RsX21hcF9vYmplY3QgKHN0cnVjdCBsaW5rX21hcCAqbG9hZGVyLCBjb25zdCBjaGFyICpuYW1lLAotIAl9Ci0gI2VuZGlmCi0gCi0tICAgICAgLyogRmluYWxseSwgdHJ5IHRoZSBkZWZhdWx0IHBhdGguICAqLwotLSAgICAgIGlmIChmZCA9PSAtMQotLQkgICYmICgobCA9IGxvYWRlciA/OiBHTChkbF9ucylbbnNpZF0uX25zX2xvYWRlZCkgPT0gTlVMTAotLQkgICAgICB8fCBfX2dsaWJjX2xpa2VseSAoIShsLT5sX2ZsYWdzXzEgJiBERl8xX05PREVGTElCKSkpCi0tCSAgJiYgcnRsZF9zZWFyY2hfZGlycy5kaXJzICE9ICh2b2lkICopIC0xKQotLQlmZCA9IG9wZW5fcGF0aCAobmFtZSwgbmFtZWxlbiwgbW9kZSwgJnJ0bGRfc2VhcmNoX2RpcnMsCi0tCQkJJnJlYWxuYW1lLCAmZmIsIGwsIExBX1NFUl9ERUZBVUxULCAmZm91bmRfb3RoZXJfY2xhc3MpOwotLQotICAgICAgIC8qIEFkZCBhbm90aGVyIG5ld2xpbmUgd2hlbiB3ZSBhcmUgdHJhY2luZyB0aGUgbGlicmFyeSBsb2FkaW5nLiAgKi8KLSAgICAgICBpZiAoX19nbGliY191bmxpa2VseSAoR0xSTyhkbF9kZWJ1Z19tYXNrKSAmIERMX0RFQlVHX0xJQlMpKQotIAlfZGxfZGVidWdfcHJpbnRmICgiXG4iKTsKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMi1sb2NhbGVkZWYtZml4LXVwcy1oYXJkbGluay10by1tYWtlLWl0LWNvbXBpbGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbG9jYWxlZGVmLWZpeC11cHMtaGFyZGxpbmstdG8tbWFrZS1pdC1jb21waWxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMjJlMzcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbG9jYWxlZGVmLWZpeC11cHMtaGFyZGxpbmstdG8tbWFrZS1pdC1jb21waWxlLnBhdGNoCkBAIC0wLDAgKzEsMjM4IEBACitGcm9tIGI1MmRiYTE1NTI3MzgwY2MxODYzNWUzNjk2ZTBlZjg3ZWZlZTlhODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgorRGF0ZTogU2F0LCA3IERlYyAyMDE5IDEwOjAxOjM3IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGxvY2FsZWRlZjogZml4LXVwcyBoYXJkbGluayB0byBtYWtlIGl0IGNvbXBpbGUKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxvY2FsZS9wcm9ncmFtcy9jLmggICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCisgbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jIHwgNzkgKysrKysrKysrKystLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwgNDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvYy5oIGIvbG9jYWxlL3Byb2dyYW1zL2MuaAoraW5kZXggZDBhNDAyZTkwZS4uMTgwNGQzMWM3MyAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9jLmgKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9jLmgKK0BAIC0yNDAsNyArMjQwLDcgQEAgZXJybXNnKGNoYXIgZG9leGl0LCBpbnQgZXhjb2RlLCBjaGFyIGFkZGVyciwgY29uc3QgY2hhciAqZm10LCAuLi4pCisgLyogRG9uJ3QgdXNlIGlubGluZSBmdW5jdGlvbiB0byBhdm9pZCAnI2luY2x1ZGUgIm5scy5oIicgaW4gYy5oCisgICovCisgI2RlZmluZSBlcnJ0cnloZWxwKGV2YWwpIF9fZXh0ZW5zaW9uX18gKHsgXAorLQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5ICclcyAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIFwKKysJZnByaW50ZihzdGRlcnIsICgiVHJ5ICclcyAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIFwKKyAJCQlwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7IFwKKyAJZXhpdChldmFsKTsgXAorIH0pCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jIGIvbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jCitpbmRleCA2MzYxNTg5NmIwLi43MjZlNmRkOTQ4IDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLmMKK0BAIC0yMCw2ICsyMCw4IEBACisgICogd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwKKyAgKiA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBLgorICAqLworKworKyN1bmRlZiBIQVZFX1BDUkUKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlIDxnZXRvcHQuaD4KK0BAIC0zOCw4ICs0MCw4IEBACisgCisgI2luY2x1ZGUgImMuaCIKKyAjaW5jbHVkZSAieGFsbG9jLmgiCistI2luY2x1ZGUgIm5scy5oIgorLSNpbmNsdWRlICJjbG9zZXN0cmVhbS5oIgorKy8vI2luY2x1ZGUgIm5scy5oIgorKy8vI2luY2x1ZGUgImNsb3Nlc3RyZWFtLmgiCisgCisgI2RlZmluZSBOSEFTSCAgICgxPDwxNykgIC8qIE11c3QgYmUgYSBwb3dlciBvZiAyISAqLworICNkZWZpbmUgTkJVRiAgICA2NAorQEAgLTEyNCwzMyArMTI2LDMzIEBAIHN0YXRpYyB2b2lkIHByaW50X3N1bW1hcnkodm9pZCkKKyAJaWYgKGN0bC0+dmVyYm9zZSA+IDEgJiYgY3RsLT5ubGlua3MpCisgCQlmcHV0YygnXG4nLCBzdGRvdXQpOworIAorLQlwcmludGYoXygiRGlyZWN0b3JpZXM6ICAgJTlsbGRcbiIpLCBjdGwtPm5kaXJzKTsKKy0JcHJpbnRmKF8oIk9iamVjdHM6ICAgICAgICU5bGxkXG4iKSwgY3RsLT5ub2JqZWN0cyk7CistCXByaW50ZihfKCJSZWd1bGFyIGZpbGVzOiAlOWxsZFxuIiksIGN0bC0+bnJlZ2ZpbGVzKTsKKy0JcHJpbnRmKF8oIkNvbXBhcmlzb25zOiAgICU5bGxkXG4iKSwgY3RsLT5uY29tcCk7CisrCXByaW50ZigoIkRpcmVjdG9yaWVzOiAgICU5bGxkXG4iKSwgY3RsLT5uZGlycyk7CisrCXByaW50ZigoIk9iamVjdHM6ICAgICAgICU5bGxkXG4iKSwgY3RsLT5ub2JqZWN0cyk7CisrCXByaW50ZigoIlJlZ3VsYXIgZmlsZXM6ICU5bGxkXG4iKSwgY3RsLT5ucmVnZmlsZXMpOworKwlwcmludGYoKCJDb21wYXJpc29uczogICAlOWxsZFxuIiksIGN0bC0+bmNvbXApOworIAlwcmludGYoICAiJXMlOWxsZFxuIiwgKGN0bC0+bm9fbGluayA/CistCSAgICAgICBfKCJXb3VsZCBsaW5rOiAgICAiKSA6CistCSAgICAgICBfKCJMaW5rZWQ6ICAgICAgICAiKSksIGN0bC0+bmxpbmtzKTsKKysJICAgICAgICgiV291bGQgbGluazogICAgIikgOgorKwkgICAgICAgKCJMaW5rZWQ6ICAgICAgICAiKSksIGN0bC0+bmxpbmtzKTsKKyAJcHJpbnRmKCAgIiVzICU5bGxkXG4iLCAoY3RsLT5ub19saW5rID8KKy0JICAgICAgIF8oIldvdWxkIHNhdmU6ICAgIikgOgorLQkgICAgICAgXygiU2F2ZWQ6ICAgICAgICAiKSksIGN0bC0+bnNhdmVkKTsKKysJICAgICAgICgiV291bGQgc2F2ZTogICAiKSA6CisrCSAgICAgICAoIlNhdmVkOiAgICAgICAgIikpLCBjdGwtPm5zYXZlZCk7CisgfQorIAorIHN0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18oKF9fbm9yZXR1cm5fXykpIHVzYWdlKHZvaWQpCisgeworIAlmcHV0cyhVU0FHRV9IRUFERVIsIHN0ZG91dCk7CistCXByaW50ZihfKCIgJXMgW29wdGlvbnNdIGRpcmVjdG9yeS4uLlxuIiksIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lKTsKKysJcHJpbnRmKCgiICVzIFtvcHRpb25zXSBkaXJlY3RvcnkuLi5cbiIpLCBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7CisgCisgCWZwdXRzKFVTQUdFX1NFUEFSQVRPUiwgc3Rkb3V0KTsKKy0JcHV0cyhfKCJDb25zb2xpZGF0ZSBkdXBsaWNhdGUgZmlsZXMgdXNpbmcgaGFyZGxpbmtzLiIpKTsKKysJcHV0cygoIkNvbnNvbGlkYXRlIGR1cGxpY2F0ZSBmaWxlcyB1c2luZyBoYXJkbGlua3MuIikpOworIAorIAlmcHV0cyhVU0FHRV9PUFRJT05TLCBzdGRvdXQpOworLQlwdXRzKF8oIiAtYywgLS1jb250ZW50ICAgICAgICAgIGNvbXBhcmUgb25seSBjb250ZW50cywgaWdub3JlIHBlcm1pc3Npb24sIGV0Yy4iKSk7CistCXB1dHMoXygiIC1uLCAtLWRyeS1ydW4gICAgICAgICAgZG9uJ3QgYWN0dWFsbHkgbGluayBhbnl0aGluZyIpKTsKKy0JcHV0cyhfKCIgLXYsIC0tdmVyYm9zZSAgICAgICAgICBwcmludCBzdW1tYXJ5IGFmdGVyIGhhcmRsaW5raW5nIikpOworLQlwdXRzKF8oIiAtdnYgICAgICAgICAgICAgICAgICAgIHByaW50IGV2ZXJ5IGhhcmRsaW5rZWQgZmlsZSBhbmQgc3VtbWFyeSIpKTsKKy0JcHV0cyhfKCIgLWYsIC0tZm9yY2UgICAgICAgICAgICBmb3JjZSBoYXJkbGlua2luZyBhY3Jvc3MgZmlsZXN5c3RlbXMiKSk7CistCXB1dHMoXygiIC14LCAtLWV4Y2x1ZGUgPHJlZ2V4PiAgZXhjbHVkZSBmaWxlcyBtYXRjaGluZyBwYXR0ZXJuIikpOworKwlwdXRzKCgiIC1jLCAtLWNvbnRlbnQgICAgICAgICAgY29tcGFyZSBvbmx5IGNvbnRlbnRzLCBpZ25vcmUgcGVybWlzc2lvbiwgZXRjLiIpKTsKKysJcHV0cygoIiAtbiwgLS1kcnktcnVuICAgICAgICAgIGRvbid0IGFjdHVhbGx5IGxpbmsgYW55dGhpbmciKSk7CisrCXB1dHMoKCIgLXYsIC0tdmVyYm9zZSAgICAgICAgICBwcmludCBzdW1tYXJ5IGFmdGVyIGhhcmRsaW5raW5nIikpOworKwlwdXRzKCgiIC12diAgICAgICAgICAgICAgICAgICAgcHJpbnQgZXZlcnkgaGFyZGxpbmtlZCBmaWxlIGFuZCBzdW1tYXJ5IikpOworKwlwdXRzKCgiIC1mLCAtLWZvcmNlICAgICAgICAgICAgZm9yY2UgaGFyZGxpbmtpbmcgYWNyb3NzIGZpbGVzeXN0ZW1zIikpOworKwlwdXRzKCgiIC14LCAtLWV4Y2x1ZGUgPHJlZ2V4PiAgZXhjbHVkZSBmaWxlcyBtYXRjaGluZyBwYXR0ZXJuIikpOworIAorIAlmcHV0cyhVU0FHRV9TRVBBUkFUT1IsIHN0ZG91dCk7CisgCXByaW50ZihVU0FHRV9IRUxQX09QVElPTlMoMTYpKTsgLyogY2hhciBvZmZzZXQgdG8gYWxpZ24gb3B0aW9uIGRlc2NyaXB0aW9ucyAqLworQEAgLTE2NCw3ICsxNjYsNyBAQCBzdGF0aWMgaW5saW5lIHNpemVfdCBhZGQyKHNpemVfdCBhLCBzaXplX3QgYikKKyAJc2l6ZV90IHN1bSA9IGEgKyBiOworIAorIAlpZiAoc3VtIDwgYSkKKy0JCWVycngoRVhJVF9GQUlMVVJFLCBfKCJpbnRlZ2VyIG92ZXJmbG93IikpOworKwkJZXJyeChFWElUX0ZBSUxVUkUsICgiaW50ZWdlciBvdmVyZmxvdyIpKTsKKyAJcmV0dXJuIHN1bTsKKyB9CisgCitAQCAtMTkzLDcgKzE5NSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfcGF0aChzdHJ1Y3QgaGFyZGxpbmtfY3RsICpjdGwsIGNvbnN0IGNoYXIgKm5hbWUpCisgCWlmIChzdC5zdF9kZXYgIT0gY3RsLT5kZXYgJiYgIWN0bC0+Zm9yY2UpIHsKKyAJCWlmIChjdGwtPmRldikKKyAJCQllcnJ4KEVYSVRfRkFJTFVSRSwKKy0JCQkgICAgIF8oIiVzIGlzIG9uIGRpZmZlcmVudCBmaWxlc3lzdGVtIHRoYW4gdGhlIHJlc3QgIgorKwkJCSAgICAgKCIlcyBpcyBvbiBkaWZmZXJlbnQgZmlsZXN5c3RlbSB0aGFuIHRoZSByZXN0ICIKKyAJCQkgICAgICAgIih1c2UgLWYgb3B0aW9uIHRvIG92ZXJyaWRlKS4iKSwgbmFtZSk7CisgCQljdGwtPmRldiA9IHN0LnN0X2RldjsKKyAJfQorQEAgLTI4Nyw5ICsyODksOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3BhdGgoc3RydWN0IGhhcmRsaW5rX2N0bCAqY3RsLCBjb25zdCBjaGFyICpuYW1lKQorIAkJCQkJCQkoc3NpemVfdCkgc2l6ZW9mKGN0bC0+aW9idWYxKSA6IGZzaXplOworIAorIAkJCQkJaWYgKCh4c3ogPSByZWFkKGZkLCBjdGwtPmlvYnVmMSwgcnNpemUpKSAhPSByc2l6ZSkKKy0JCQkJCQl3YXJuKF8oImNhbm5vdCByZWFkICVzIiksIG5hbWUpOworKwkJCQkJCXdhcm4oKCJjYW5ub3QgcmVhZCAlcyIpLCBuYW1lKTsKKyAJCQkJCWVsc2UgaWYgKCh4c3ogPSByZWFkKGZkMiwgY3RsLT5pb2J1ZjIsIHJzaXplKSkgIT0gcnNpemUpCistCQkJCQkJd2FybihfKCJjYW5ub3QgcmVhZCAlcyIpLCBmcDItPm5hbWUpOworKwkJCQkJCXdhcm4oKCJjYW5ub3QgcmVhZCAlcyIpLCBmcDItPm5hbWUpOworIAorIAkJCQkJaWYgKHhzeiAhPSByc2l6ZSkgeworIAkJCQkJCWNsb3NlKGZkKTsKK0BAIC0zMDMsMTMgKzMwNSwxMyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3BhdGgoc3RydWN0IGhhcmRsaW5rX2N0bCAqY3RsLCBjb25zdCBjaGFyICpuYW1lKQorIAkJCQlpZiAoZnNpemUgPiAwKQorIAkJCQkJY29udGludWU7CisgCQkJCWlmIChsc3RhdChuYW1lLCAmc3QzKSkgeworLQkJCQkJd2FybihfKCJjYW5ub3Qgc3RhdCAlcyIpLCBuYW1lKTsKKysJCQkJCXdhcm4oKCJjYW5ub3Qgc3RhdCAlcyIpLCBuYW1lKTsKKyAJCQkJCWNsb3NlKGZkKTsKKyAJCQkJCXJldHVybjsKKyAJCQkJfQorIAkJCQlzdDMuc3RfYXRpbWUgPSBzdC5zdF9hdGltZTsKKyAJCQkJaWYgKHN0Y21wKCZzdCwgJnN0MywgMCkpIHsKKy0JCQkJCXdhcm54KF8oImZpbGUgJXMgY2hhbmdlZCB1bmRlcm5lYXRoIHVzIiksIG5hbWUpOworKwkJCQkJd2FybngoKCJmaWxlICVzIGNoYW5nZWQgdW5kZXJuZWF0aCB1cyIpLCBuYW1lKTsKKyAJCQkJCWNsb3NlKGZkKTsKKyAJCQkJCXJldHVybjsKKyAJCQkJfQorQEAgLTMyOSwxOCArMzMxLDE4IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfcGF0aChzdHJ1Y3QgaGFyZGxpbmtfY3RsICpjdGwsIGNvbnN0IGNoYXIgKm5hbWUpCisgCQkJCQkgICAgICAgc3VmZml4bGVuICsgMSk7CisgCQkJCQkvKiBGaXJzdCBjcmVhdGUgYSB0ZW1wb3JhcnkgbGluayB0byBuMSB1bmRlciBhIG5ldyBuYW1lICovCisgCQkJCQlpZiAobGluayhuMSwgbmFtMi5idWYpKSB7CistCQkJCQkJd2FybihfKCJmYWlsZWQgdG8gaGFyZGxpbmsgJXMgdG8gJXMgKGNyZWF0ZSB0ZW1wb3JhcnkgbGluayBhcyAlcyBmYWlsZWQpIiksCisrCQkJCQkJd2FybigoImZhaWxlZCB0byBoYXJkbGluayAlcyB0byAlcyAoY3JlYXRlIHRlbXBvcmFyeSBsaW5rIGFzICVzIGZhaWxlZCkiKSwKKyAJCQkJCQkJbjEsIG4yLCBuYW0yLmJ1Zik7CisgCQkJCQkJZnJlZShuYW0yLmJ1Zik7CisgCQkJCQkJY29udGludWU7CisgCQkJCQl9CisgCQkJCQkvKiBUaGVuIHJlbmFtZSBpbnRvIHBsYWNlIG92ZXIgdGhlIGV4aXN0aW5nIG4yICovCisgCQkJCQlpZiAocmVuYW1lKG5hbTIuYnVmLCBuMikpIHsKKy0JCQkJCQl3YXJuKF8oImZhaWxlZCB0byBoYXJkbGluayAlcyB0byAlcyAocmVuYW1lIHRlbXBvcmFyeSBsaW5rIHRvICVzIGZhaWxlZCkiKSwKKysJCQkJCQl3YXJuKCgiZmFpbGVkIHRvIGhhcmRsaW5rICVzIHRvICVzIChyZW5hbWUgdGVtcG9yYXJ5IGxpbmsgdG8gJXMgZmFpbGVkKSIpLAorIAkJCQkJCQluMSwgbjIsIG4yKTsKKyAJCQkJCQkvKiBTb21ldGhpbmcgd2VudCB3cm9uZywgdHJ5IHRvIHJlbW92ZSB0aGUgbm93IHJlZHVuZGFudCB0ZW1wb3JhcnkgbGluayAqLworIAkJCQkJCWlmICh1bmxpbmsobmFtMi5idWYpKQorLQkJCQkJCQl3YXJuKF8oImZhaWxlZCB0byByZW1vdmUgdGVtcG9yYXJ5IGxpbmsgJXMiKSwgbmFtMi5idWYpOworKwkJCQkJCQl3YXJuKCgiZmFpbGVkIHRvIHJlbW92ZSB0ZW1wb3JhcnkgbGluayAlcyIpLCBuYW0yLmJ1Zik7CisgCQkJCQkJZnJlZShuYW0yLmJ1Zik7CisgCQkJCQkJY29udGludWU7CisgCQkJCQl9CitAQCAtMzUxLDE2ICszNTMsMTYgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19wYXRoKHN0cnVjdCBoYXJkbGlua19jdGwgKmN0bCwgY29uc3QgY2hhciAqbmFtZSkKKyAJCQkJCS8qIFdlIGFjdHVhbGx5IGRpZCBub3Qgc2F2ZSBhbnl0aGluZyB0aGlzIHRpbWUsIHNpbmNlIHRoZSBsaW5rIHNlY29uZCBhcmd1bWVudAorIAkJCQkJICAgaGFkIHNvbWUgb3RoZXIgbGlua3MgYXMgd2VsbC4gICovCisgCQkJCQlpZiAoY3RsLT52ZXJib3NlID4gMSkKKy0JCQkJCQlwcmludGYoXygiICVzICVzIHRvICVzXG4iKSwKKy0JCQkJCQkJKGN0bC0+bm9fbGluayA/IF8oIldvdWxkIGxpbmsiKSA6IF8oIkxpbmtlZCIpKSwKKysJCQkJCQlwcmludGYoKCIgJXMgJXMgdG8gJXNcbiIpLAorKwkJCQkJCQkoY3RsLT5ub19saW5rID8gKCJXb3VsZCBsaW5rIikgOiAoIkxpbmtlZCIpKSwKKyAJCQkJCQkJbjEsIG4yKTsKKyAJCQkJfSBlbHNlIHsKKyAJCQkJCWN0bC0+bnNhdmVkICs9ICgoc3Quc3Rfc2l6ZSArIDQwOTUpIC8gNDA5NikgKiA0MDk2OworIAkJCQkJaWYgKGN0bC0+dmVyYm9zZSA+IDEpCistCQkJCQkJcHJpbnRmKF8oIiAlcyAlcyB0byAlcywgJXMgJWpkXG4iKSwKKy0JCQkJCQkJKGN0bC0+bm9fbGluayA/IF8oIldvdWxkIGxpbmsiKSA6IF8oIkxpbmtlZCIpKSwKKysJCQkJCQlwcmludGYoKCIgJXMgJXMgdG8gJXMsICVzICVqZFxuIiksCisrCQkJCQkJCShjdGwtPm5vX2xpbmsgPyAoIldvdWxkIGxpbmsiKSA6ICgiTGlua2VkIikpLAorIAkJCQkJCQluMSwgbjIsCistCQkJCQkJCShjdGwtPm5vX2xpbmsgPyBfKCJ3b3VsZCBzYXZlIikgOiBfKCJzYXZlZCIpKSwKKysJCQkJCQkJKGN0bC0+bm9fbGluayA/ICgid291bGQgc2F2ZSIpIDogKCJzYXZlZCIpKSwKKyAJCQkJCQkJKGludG1heF90KXN0LnN0X3NpemUpOworIAkJCQl9CisgCQkJCWNsb3NlKGZkKTsKK0BAIC00MTAsMTEgKzQxMiw2IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCXsgTlVMTCwgMCwgTlVMTCwgMCB9LAorIAl9OworIAorLQlzZXRsb2NhbGUoTENfQUxMLCAiIik7CistCWJpbmR0ZXh0ZG9tYWluKFBBQ0tBR0UsIExPQ0FMRURJUik7CistCXRleHRkb21haW4oUEFDS0FHRSk7CistCWNsb3NlX3N0ZG91dF9hdGV4aXQoKTsKKy0KKyAJd2hpbGUgKChjaCA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJjbnZmeDpWaCIsIGxvbmdvcHRzLCBOVUxMKSkgIT0gLTEpIHsKKyAJCXN3aXRjaCAoY2gpIHsKKyAJCWNhc2UgJ24nOgorQEAgLTQzNCw3ICs0MzEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJZXhjbHVkZV9wYXR0ZXJuID0gKFBDUkUyX1NQVFIpIG9wdGFyZzsKKyAjZWxzZQorIAkJCWVycngoRVhJVF9GQUlMVVJFLAorLQkJCSAgICAgXygib3B0aW9uIC0tZXhjbHVkZSBub3Qgc3VwcG9ydGVkIChidWlsdCB3aXRob3V0IHBjcmUyKSIpKTsKKysJCQkgICAgICgib3B0aW9uIC0tZXhjbHVkZSBub3Qgc3VwcG9ydGVkIChidWlsdCB3aXRob3V0IHBjcmUyKSIpKTsKKyAjZW5kaWYKKyAJCQlicmVhazsKKyAJCWNhc2UgJ1YnOgorQEAgLTQ0Nyw3ICs0NDQsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCX0KKyAKKyAJaWYgKG9wdGluZCA9PSBhcmdjKSB7CistCQl3YXJueChfKCJubyBkaXJlY3Rvcnkgc3BlY2lmaWVkIikpOworKwkJd2FybngoKCJubyBkaXJlY3Rvcnkgc3BlY2lmaWVkIikpOworIAkJZXJydHJ5aGVscChFWElUX0ZBSUxVUkUpOworIAl9CisgCitAQCAtNDYxLDcgKzQ1OCw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQlQQ1JFMl9VQ0hBUiBidWZmZXJbMjU2XTsKKyAJCQlwY3JlMl9nZXRfZXJyb3JfbWVzc2FnZShlcnJvcm51bWJlciwgYnVmZmVyLAorIAkJCQkJCXNpemVvZihidWZmZXIpKTsKKy0JCQllcnJ4KEVYSVRfRkFJTFVSRSwgXygicGF0dGVybiBlcnJvciBhdCBvZmZzZXQgJWQ6ICVzIiksCisrCQkJZXJyeChFWElUX0ZBSUxVUkUsICgicGF0dGVybiBlcnJvciBhdCBvZmZzZXQgJWQ6ICVzIiksCisgCQkJCShpbnQpZXJyb3JvZmZzZXQsIGJ1ZmZlcik7CisgCQl9CisgCQltYXRjaF9kYXRhID0gcGNyZTJfbWF0Y2hfZGF0YV9jcmVhdGVfZnJvbV9wYXR0ZXJuKHJlLCBOVUxMKTsKK0BAIC01MDYsNyArNTAzLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJCSAgICA+PTApIHsKKyAJCQkJaWYgKGN0bC0+dmVyYm9zZSkgeworIAkJCQkJbmFtMS5idWZbbmFtMWJhc2VsZW5dID0gMDsKKy0JCQkJCXByaW50ZihfKCJTa2lwcGluZyAlcyVzXG4iKSwgbmFtMS5idWYsIGRpLT5kX25hbWUpOworKwkJCQkJcHJpbnRmKCgiU2tpcHBpbmcgJXMlc1xuIiksIG5hbTEuYnVmLCBkaS0+ZF9uYW1lKTsKKyAJCQkJfQorIAkJCQljb250aW51ZTsKKyAJCQl9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzUzMTA4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMi1uYXRpdmVzZGstZ2xpYmMtRml4LWJ1ZmZlci1vdmVycnVuLXdpdGgtYS1yZWxvY2F0ZWQtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSBiOTFjMzIzZDgwOTAzOWJmOWI4YzQ0NTQxODU3OWE4YjVmZTYxYWVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NTA6MDAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMi8yOF0gbmF0aXZlc2RrLWdsaWJjOiBGaXggYnVmZmVyIG92ZXJydW4gd2l0aCBhIHJlbG9jYXRlZAotIFNESwotCi1XaGVuIGxkLWxpbnV4LSouc28uMiBpcyByZWxvY2F0ZWQgdG8gYSBwYXRoIHRoYXQgaXMgbG9uZ2VyIHRoYW4gdGhlCi1vcmlnaW5hbCBmaXhlZCBsb2NhdGlvbiwgdGhlIGR5bmFtaWMgbG9hZGVyIHdpbGwgY3Jhc2ggaW4gb3Blbl9wYXRoCi1iZWNhdXNlIGl0IGltcGxpY2l0bHkgYXNzdW1lcyB0aGF0IG1heF9kaXJuYW1lbGVuIGlzIGEgZml4ZWQgc2l6ZSB0aGF0Ci1uZXZlciBjaGFuZ2VzLgotCi1UaGUgYWxsb2NhdGVkIGJ1ZmZlciB3aWxsIG5vdCBiZSBsYXJnZSBlbm91Z2ggdG8gY29udGFpbiB0aGUgZGlyZWN0b3J5Ci1wYXRoIHN0cmluZyB3aGljaCBpcyBsYXJnZXIgdGhhbiB0aGUgZml4ZWQgbG9jYXRpb24gcHJvdmlkZWQgYXQgYnVpbGQKLXRpbWUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgU0RLIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBKYXNvbiBXZXNzZWwgPGphc29uLndlc3NlbEB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGVsZi9kbC1sb2FkLmMgfCAxMiArKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZWxmL2RsLWxvYWQuYyBiL2VsZi9kbC1sb2FkLmMKLWluZGV4IDk4MWJkNWI0YWYuLmM3YTBmYTU4Y2IgMTAwNjQ0Ci0tLS0gYS9lbGYvZGwtbG9hZC5jCi0rKysgYi9lbGYvZGwtbG9hZC5jCi1AQCAtMTc4MCw3ICsxNzgwLDE5IEBAIG9wZW5fcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgc2l6ZV90IG5hbWVsZW4sIGludCBtb2RlLAotICAgICAgICBnaXZlbiBvbiB0aGUgY29tbWFuZCBsaW5lIHdoZW4gcnRsZCBpcyBydW4gZGlyZWN0bHkuICAqLwotICAgICByZXR1cm4gLTE7Ci0gCi0rICBkbwotKyAgICB7Ci0rICAgICAgc3RydWN0IHJfc2VhcmNoX3BhdGhfZWxlbSAqdGhpc19kaXIgPSAqZGlyczsKLSsgICAgICBpZiAodGhpc19kaXItPmRpcm5hbWVsZW4gPiBtYXhfZGlybmFtZWxlbikKLSsJewotKwkgIG1heF9kaXJuYW1lbGVuID0gdGhpc19kaXItPmRpcm5hbWVsZW47Ci0rCX0KLSsgICAgfQotKyAgd2hpbGUgKCorK2RpcnMgIT0gTlVMTCk7Ci0rCi0gICBidWYgPSBhbGxvY2EgKG1heF9kaXJuYW1lbGVuICsgbWF4X2NhcHN0cmxlbiArIG5hbWVsZW4pOwotKwotKyAgZGlycyA9IHNwcy0+ZGlyczsKLSAgIGRvCi0gICAgIHsKLSAgICAgICBzdHJ1Y3Qgcl9zZWFyY2hfcGF0aF9lbGVtICp0aGlzX2RpciA9ICpkaXJzOwotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAzLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDMtbmF0aXZlc2RrLWdsaWJjLUxvb2stZm9yLWhvc3Qtc3lzdGVtLWxkLnNvLmNhY2hlLWFzLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40Y2RjODM1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAzLW5hdGl2ZXNkay1nbGliYy1Mb29rLWZvci1ob3N0LXN5c3RlbS1sZC5zby5jYWNoZS1hcy0ucGF0Y2gKQEAgLTAsMCArMSw2NSBAQAorRnJvbSA2OTg3YWQxODM3NzBjYjU2NjgwY2NjNGY2ZWEwNjVhMDRmMzFjY2I2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NDg6MjQgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gbmF0aXZlc2RrLWdsaWJjOiBMb29rIGZvciBob3N0IHN5c3RlbSBsZC5zby5jYWNoZSBhcyB3ZWxsCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCisKK1RoZSBkZWZhdWx0IGxpYiBzZWFyY2ggcGF0aCBvcmRlciBpczoKKworICAxKSBMRF9MSUJSQVJZX1BBVEgKKyAgMikgUlBBVEggZnJvbSB0aGUgYmluYXJ5CisgIDMpIGxkLnNvLmNhY2hlCisgIDQpIGRlZmF1bHQgc2VhcmNoIHBhdGhzIGVtYmVkZGVkIGluIHRoZSBsaW5rZXIKKworRm9yIG5hdGl2ZXNkayBiaW5hcmllcyB3aGljaCBhcmUgYmVpbmcgdXNlZCBhbG9uZ3NpZGUgYmluYXJpZXMgb24gYSBob3N0IHN5c3RlbSwgd2UKK25lZWQgdGhlIHNlYXJjaCBwYXRocyB0byBmaXJzdGx5IHNlYXJjaCB0aGUgc2hpcHBlZCBuYXRpdmVzZGsgbGlicyBidXQgdGhlbiBhbHNvCitjb3ZlciB0aGUgaG9zdCBzeXN0ZW0uIEZvciBleGFtcGxlIHdlIHdhbnQgdGhlIGhvc3Qgc3lzdGVtJ3MgbGliR0wgYW5kIHRoaXMgbWF5IGJlCitpbiBhIG5vbi1zdGFuZGFyZCBsb2NhdGlvbiBsaWtlIC91c3IvbGliL21lc2EuIFRoZSBvbmx5IHBsYWNlIHRoZSBsb2NhdGlvbiBpcyBrbm93CithYm91dCBpcyBpbiB0aGUgbGQuc28uY2FjaGUgb2YgdGhlIGhvc3Qgc3lzdGVtLgorCitTaW5jZSBuYXRpdmVzZGsgaGFzIGEgc2ltcGxlIHN0cnVjdHVyZSBhbmQgZG9lc24ndCBuZWVkIHRvIHVzZSBhIGNhY2hlIGl0c2VsZiwgd2UKK3JlcHVycG9zZSB0aGUgY2FjaGUgZm9yIHVzZSBhcyBhIGxhc3QgcmVzb3J0IGluIGZpbmRpbmcgaG9zdCBzeXN0ZW0gYmluYXJpZXMuIFRoaXMKK21lYW5zIHdlIG5lZWQgdG8gc3dpdGNoIHRoZSBvcmRlciBvZiAzIGFuZCA0IGFib3ZlIHRvIG1ha2UgdGhpcyB3b3JrIGVmZmVjdGl2ZWx5LgorCitSUCAxNC8xMC8yMDEwCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBlbGYvZGwtbG9hZC5jIHwgMTYgKysrKysrKystLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9lbGYvZGwtbG9hZC5jIGIvZWxmL2RsLWxvYWQuYworaW5kZXggYTZiODBmOTM5NS4uMzIyNmYyZTUzMSAxMDA2NDQKKy0tLSBhL2VsZi9kbC1sb2FkLmMKKysrKyBiL2VsZi9kbC1sb2FkLmMKK0BAIC0yMDczLDYgKzIwNzMsMTQgQEAgX2RsX21hcF9vYmplY3QgKHN0cnVjdCBsaW5rX21hcCAqbG9hZGVyLCBjb25zdCBjaGFyICpuYW1lLAorICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKyAKKysgICAgICAvKiB0cnkgdGhlIGRlZmF1bHQgcGF0aC4gICovCisrICAgICAgaWYgKGZkID09IC0xCisrCSAgJiYgKChsID0gbG9hZGVyID86IEdMKGRsX25zKVtuc2lkXS5fbnNfbG9hZGVkKSA9PSBOVUxMCisrCSAgIHx8IF9fYnVpbHRpbl9leHBlY3QgKCEobC0+bF9mbGFnc18xICYgREZfMV9OT0RFRkxJQiksIDEpKQorKwkgJiYgcnRsZF9zZWFyY2hfZGlycy5kaXJzICE9ICh2b2lkICopIC0xKQorKwlmZCA9IG9wZW5fcGF0aCAobmFtZSwgbmFtZWxlbiwgbW9kZSAmIF9fUlRMRF9TRUNVUkUsICZydGxkX3NlYXJjaF9kaXJzLAorKwkJCSZyZWFsbmFtZSwgJmZiLCBsLCBMQV9TRVJfREVGQVVMVCwgJmZvdW5kX290aGVyX2NsYXNzKTsKKysgICAgICAvKiBGaW5hbGx5IHRyeSBsZC5zby5jYWNoZSAqLworICNpZmRlZiBVU0VfTERDT05GSUcKKyAgICAgICBpZiAoZmQgPT0gLTEKKyAJICAmJiAoX19nbGliY19saWtlbHkgKChtb2RlICYgX19SVExEX1NFQ1VSRSkgPT0gMCkKK0BAIC0yMTMxLDE0ICsyMTM5LDYgQEAgX2RsX21hcF9vYmplY3QgKHN0cnVjdCBsaW5rX21hcCAqbG9hZGVyLCBjb25zdCBjaGFyICpuYW1lLAorIAl9CisgI2VuZGlmCisgCistICAgICAgLyogRmluYWxseSwgdHJ5IHRoZSBkZWZhdWx0IHBhdGguICAqLworLSAgICAgIGlmIChmZCA9PSAtMQorLQkgICYmICgobCA9IGxvYWRlciA/OiBHTChkbF9ucylbbnNpZF0uX25zX2xvYWRlZCkgPT0gTlVMTAorLQkgICAgICB8fCBfX2dsaWJjX2xpa2VseSAoIShsLT5sX2ZsYWdzXzEgJiBERl8xX05PREVGTElCKSkpCistCSAgJiYgcnRsZF9zZWFyY2hfZGlycy5kaXJzICE9ICh2b2lkICopIC0xKQorLQlmZCA9IG9wZW5fcGF0aCAobmFtZSwgbmFtZWxlbiwgbW9kZSwgJnJ0bGRfc2VhcmNoX2RpcnMsCistCQkJJnJlYWxuYW1lLCAmZmIsIGwsIExBX1NFUl9ERUZBVUxULCAmZm91bmRfb3RoZXJfY2xhc3MpOworLQorICAgICAgIC8qIEFkZCBhbm90aGVyIG5ld2xpbmUgd2hlbiB3ZSBhcmUgdHJhY2luZyB0aGUgbGlicmFyeSBsb2FkaW5nLiAgKi8KKyAgICAgICBpZiAoX19nbGliY191bmxpa2VseSAoR0xSTyhkbF9kZWJ1Z19tYXNrKSAmIERMX0RFQlVHX0xJQlMpKQorIAlfZGxfZGVidWdfcHJpbnRmICgiXG4iKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwMy1uYXRpdmVzZGstZ2xpYmMtUmFpc2UtdGhlLXNpemUtb2YtYXJyYXlzLWNvbnRhaW5pbmctLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ4ZjVhNzguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNDEgKzAsMCBAQAotRnJvbSAzYWNlYjg0ZTJiYzBmNzk2MjA0ZmUwNTliZWVkZTkxMTc5YjFiYzZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NTE6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8yOF0gbmF0aXZlc2RrLWdsaWJjOiBSYWlzZSB0aGUgc2l6ZSBvZiBhcnJheXMgY29udGFpbmluZyBkbAotIHBhdGhzCi0KLVRoaXMgcGF0Y2ggcHV0cyB0aGUgZHluYW1pYyBsb2FkZXIgcGF0aCBpbiB0aGUgYmluYXJpZXMsIFNZU1RFTV9ESVJTIHN0cmluZ3MKLWFuZCBsZW5ndGhzIGFzIHdlbGwgYXMgbGQuc28uY2FjaGUgcGF0aCBpbiB0aGUgZHluYW1pYyBsb2FkZXIgdG8gc3BlY2lmaWMKLXNlY3Rpb25zIGluIG1lbW9yeS4gVGhlIHNlY3Rpb25zIHRoYXQgY29udGFpbiBwYXRocyBoYXZlIGJlZW4gYWxsb2NhdGVkIGEgNDA5NgotYnl0ZSBzZWN0aW9uLCB3aGljaCBpcyB0aGUgbWF4aW11bSBwYXRoIGxlbmd0aCBpbiBsaW51eC4gVGhpcyB3aWxsIGFsbG93IHRoZQotcmVsb2NhdGluZyBzY3JpcHQgdG8gcGFyc2UgdGhlIEVMRiBiaW5hcnksIGRldGVjdCB0aGUgc2VjdGlvbiBhbmQgZWFzaWx5IHJlcGxhY2UKLXRoZSBzdHJpbmdzIGluIGEgY2VydGFpbiBwYXRoLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1NESyBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTGF1cmVudGl1IFBhbGN1IDxsYXVyZW50aXUucGFsY3VAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGVsZi9kbC1jYWNoZS5jICAgICAgICAgICAgIHwgNCArKysrCi0gZWxmL2RsLWxvYWQuYyAgICAgICAgICAgICAgfCA0ICsrLS0KLSBlbGYvaW50ZXJwLmMgICAgICAgICAgICAgICB8IDIgKy0KLSBlbGYvbGRjb25maWcuYyAgICAgICAgICAgICB8IDMgKysrCi0gZWxmL3J0bGQuYyAgICAgICAgICAgICAgICAgfCA1ICsrKy0tCi0gaWNvbnYvZ2NvbnZfY29uZi5jICAgICAgICAgfCAyICstCi0gc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmggfCA0IC0tLS0KLSA3IGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZWxmL2RsLWNhY2hlLmMgYi9lbGYvZGwtY2FjaGUuYwotaW5kZXggZDhkMWUyMzQ0ZS4uZDIyNDdiZmM0ZiAxMDA2NDQKLS0tLSBhL2VsZi9kbC1jYWNoZS5jCi0rKysgYi9lbGYvZGwtY2FjaGUuYwotQEAgLTEzMyw2ICsxMzMsMTAgQEAgZG8JCQkJCQkJCQkgICAgICBcCi0gd2hpbGUgKDApCi0gCi0gCi0rY29uc3QgY2hhciBMRF9TT19DQUNIRVs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5sZHNvY2FjaGUiKSkpID0KLSsJCVNZU0NPTkZESVIgIi9sZC5zby5jYWNoZSI7Ci0rCi0rCi0gaW50Ci0gX2RsX2NhY2hlX2xpYmNtcCAoY29uc3QgY2hhciAqcDEsIGNvbnN0IGNoYXIgKnAyKQotIHsKLWRpZmYgLS1naXQgYS9lbGYvZGwtbG9hZC5jIGIvZWxmL2RsLWxvYWQuYwotaW5kZXggYzdhMGZhNThjYi4uNGI4NzUwNWQ0NSAxMDA2NDQKLS0tLSBhL2VsZi9kbC1sb2FkLmMKLSsrKyBiL2VsZi9kbC1sb2FkLmMKLUBAIC0xMTAsOCArMTEwLDggQEAgc3RhdGljIHNpemVfdCBtYXhfY2Fwc3RybGVuIGF0dHJpYnV0ZV9yZWxybzsKLSAgICBnZW4tdHJ1c3RlZC1kaXJzLmF3ay4gICovCi0gI2luY2x1ZGUgInRydXN0ZWQtZGlycy5oIgotIAotLXN0YXRpYyBjb25zdCBjaGFyIHN5c3RlbV9kaXJzW10gPSBTWVNURU1fRElSUzsKLS1zdGF0aWMgY29uc3Qgc2l6ZV90IHN5c3RlbV9kaXJzX2xlbltdID0KLStzdGF0aWMgY29uc3QgY2hhciBzeXN0ZW1fZGlyc1s0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5zeXNkaXJzIikpKSA9IFNZU1RFTV9ESVJTOwotK3ZvbGF0aWxlIHN0YXRpYyBjb25zdCBzaXplX3Qgc3lzdGVtX2RpcnNfbGVuW10gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuc3lzZGlyc2xlbiIpKSkgPQotIHsKLSAgIFNZU1RFTV9ESVJTX0xFTgotIH07Ci1kaWZmIC0tZ2l0IGEvZWxmL2ludGVycC5jIGIvZWxmL2ludGVycC5jCi1pbmRleCAyNDM4MjlmNWY3Li4wZTc0MjQxNzAzIDEwMDY0NAotLS0tIGEvZWxmL2ludGVycC5jCi0rKysgYi9lbGYvaW50ZXJwLmMKLUBAIC0xOCw1ICsxOCw1IEBACi0gCi0gI2luY2x1ZGUgPHJ1bnRpbWUtbGlua2VyLmg+Ci0gCi0tY29uc3QgY2hhciBfX2ludm9rZV9keW5hbWljX2xpbmtlcl9fW10gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuaW50ZXJwIikpKQotK2NvbnN0IGNoYXIgX19pbnZva2VfZHluYW1pY19saW5rZXJfX1s0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5pbnRlcnAiKSkpCi0gICA9IFJVTlRJTUVfTElOS0VSOwotZGlmZiAtLWdpdCBhL2VsZi9sZGNvbmZpZy5jIGIvZWxmL2xkY29uZmlnLmMKLWluZGV4IDNiYzllNjE4OTEuLjZhMjMwOTY0MzUgMTAwNjQ0Ci0tLS0gYS9lbGYvbGRjb25maWcuYwotKysrIGIvZWxmL2xkY29uZmlnLmMKLUBAIC0xNjgsNiArMTY4LDkgQEAgc3RhdGljIHN0cnVjdCBhcmdwIGFyZ3AgPQotICAgb3B0aW9ucywgcGFyc2Vfb3B0LCBOVUxMLCBkb2MsIE5VTEwsIG1vcmVfaGVscCwgTlVMTAotIH07Ci0gCi0rCi0rZXh0ZXJuIGNvbnN0IGNoYXIgTERfU09fQ0FDSEVbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIubGRzb2NhY2hlIikpKTsKLSsKLSAvKiBDaGVjayBpZiBzdHJpbmcgY29ycmVzcG9uZHMgdG8gYW4gaW1wb3J0YW50IGhhcmR3YXJlIGNhcGFiaWxpdHkgb3IKLSAgICBhIHBsYXRmb3JtLiAgKi8KLSBzdGF0aWMgaW50Ci1kaWZmIC0tZ2l0IGEvZWxmL3J0bGQuYyBiL2VsZi9ydGxkLmMKLWluZGV4IGM5NDkwZmY2OTQuLjM5NjIzNzNlYmIgMTAwNjQ0Ci0tLS0gYS9lbGYvcnRsZC5jCi0rKysgYi9lbGYvcnRsZC5jCi1AQCAtMTczLDYgKzE3Myw3IEBAIGRzb19uYW1lX3ZhbGlkX2Zvcl9zdWlkIChjb25zdCBjaGFyICpwKQotICAgICB9Ci0gICByZXR1cm4gKnAgIT0gJ1wwJzsKLSB9Ci0rZXh0ZXJuIGNvbnN0IGNoYXIgTERfU09fQ0FDSEVbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIubGRzb2NhY2hlIikpKTsKLSAKLSAvKiBMRF9BVURJVCB2YXJpYWJsZSBjb250ZW50cy4gIE11c3QgYmUgcHJvY2Vzc2VkIGJlZm9yZSB0aGUKLSAgICBhdWRpdF9saXN0IGJlbG93LiAgKi8KLUBAIC0xMjIwLDEzICsxMjIxLDEzIEBAIG9mIHRoaXMgaGVscGVyIHByb2dyYW07IGNoYW5jZXMgYXJlIHlvdSBkaWQgbm90IGludGVuZCB0byBydW4gdGhpcyBwcm9ncmFtLlxuXAotICAgLS1saXN0ICAgICAgICAgICAgICAgIGxpc3QgYWxsIGRlcGVuZGVuY2llcyBhbmQgaG93IHRoZXkgYXJlIHJlc29sdmVkXG5cCi0gICAtLXZlcmlmeSAgICAgICAgICAgICAgdmVyaWZ5IHRoYXQgZ2l2ZW4gb2JqZWN0IHJlYWxseSBpcyBhIGR5bmFtaWNhbGx5IGxpbmtlZFxuXAotIAkJCW9iamVjdCB3ZSBjYW4gaGFuZGxlXG5cCi0tICAtLWluaGliaXQtY2FjaGUgICAgICAgRG8gbm90IHVzZSAiIExEX1NPX0NBQ0hFICJcblwKLSsgIC0taW5oaWJpdC1jYWNoZSAgICAgICBEbyBub3QgdXNlICVzXG5cCi0gICAtLWxpYnJhcnktcGF0aCBQQVRIICAgdXNlIGdpdmVuIFBBVEggaW5zdGVhZCBvZiBjb250ZW50IG9mIHRoZSBlbnZpcm9ubWVudFxuXAotIAkJCXZhcmlhYmxlIExEX0xJQlJBUllfUEFUSFxuXAotICAgLS1pbmhpYml0LXJwYXRoIExJU1QgIGlnbm9yZSBSVU5QQVRIIGFuZCBSUEFUSCBpbmZvcm1hdGlvbiBpbiBvYmplY3QgbmFtZXNcblwKLSAJCQlpbiBMSVNUXG5cCi0gICAtLWF1ZGl0IExJU1QgICAgICAgICAgdXNlIG9iamVjdHMgbmFtZWQgaW4gTElTVCBhcyBhdWRpdG9yc1xuXAotLSAgLS1wcmVsb2FkIExJU1QgICAgICAgIHByZWxvYWQgb2JqZWN0cyBuYW1lZCBpbiBMSVNUXG4iKTsKLSsgIC0tcHJlbG9hZCBMSVNUICAgICAgICBwcmVsb2FkIG9iamVjdHMgbmFtZWQgaW4gTElTVFxuIiwgTERfU09fQ0FDSEUpOwotIAotICAgICAgICsrX2RsX3NraXBfYXJnczsKLSAgICAgICAtLV9kbF9hcmdjOwotZGlmZiAtLWdpdCBhL2ljb252L2djb252X2NvbmYuYyBiL2ljb252L2djb252X2NvbmYuYwotaW5kZXggYWU4OTM3Y2JhMC4uZjMyMWVlNDE5ZSAxMDA2NDQKLS0tLSBhL2ljb252L2djb252X2NvbmYuYwotKysrIGIvaWNvbnYvZ2NvbnZfY29uZi5jCi1AQCAtMzYsNyArMzYsNyBAQAotIAotIAotIC8qIFRoaXMgaXMgdGhlIGRlZmF1bHQgcGF0aCB3aGVyZSB3ZSBsb29rIGZvciBtb2R1bGUgbGlzdHMuICAqLwotLXN0YXRpYyBjb25zdCBjaGFyIGRlZmF1bHRfZ2NvbnZfcGF0aFtdID0gR0NPTlZfUEFUSDsKLStzdGF0aWMgY2hhciBkZWZhdWx0X2djb252X3BhdGhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR0NPTlZfUEFUSDsKLSAKLSAvKiBUeXBlIHRvIHJlcHJlc2VudCBzZWFyY2ggcGF0aC4gICovCi0gc3RydWN0IHBhdGhfZWxlbQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oIGIvc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmgKLWluZGV4IGJjOGI0MDMzMWQuLmIwZmRkMjE0NGIgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaAotKysrIGIvc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmgKLUBAIC0yNywxMCArMjcsNiBAQAotICAgKChmbGFncykgPT0gMSB8fCAoZmxhZ3MpID09IF9ETF9DQUNIRV9ERUZBVUxUX0lEKQotICNlbmRpZgotIAotLSNpZm5kZWYgTERfU09fQ0FDSEUKLS0jIGRlZmluZSBMRF9TT19DQUNIRSBTWVNDT05GRElSICIvbGQuc28uY2FjaGUiCi0tI2VuZGlmCi0tCi0gI2lmbmRlZiBhZGRfc3lzdGVtX2RpcgotICMgZGVmaW5lIGFkZF9zeXN0ZW1fZGlyKGRpcikgYWRkX2RpciAoZGlyKQotICNlbmRpZgotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA0LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNDNmMjk0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gZTQxZTA0MjE0OWVhYzM0OWUwOWZhNjI5ZmNhYzRjNjRlNTc0MzIyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE0OjM1OjM1IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMjhdIG5hdGl2ZXNkay1nbGliYzogQWxsb3cgNjQgYml0IGF0b21pY3MgZm9yIHg4NgotCi1UaGUgZml4IGNvbnNpc3Qgb2YgYWxsb3dpbmcgNjRiaXQgYXRvbWljIG9wcyBmb3IgeDg2LgotVGhpcyBzaG91bGQgYmUgc2FmZSBmb3IgaTU4NiBhbmQgbmV3ZXIgQ1BVcy4KLUl0IGFsc28gbWFrZXMgdGhlIHN5bmNocm9uaXphdGlvbiBtb3JlIGVmZmljaWVudC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHN5c2RlcHMveDg2L2F0b21pYy1tYWNoaW5lLmggfCAzICstLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMveDg2L2F0b21pYy1tYWNoaW5lLmggYi9zeXNkZXBzL3g4Ni9hdG9taWMtbWFjaGluZS5oCi1pbmRleCBhYTYwY2E0Y2Q2Li4zZTQyZTAwMTgzIDEwMDY0NAotLS0tIGEvc3lzZGVwcy94ODYvYXRvbWljLW1hY2hpbmUuaAotKysrIGIvc3lzZGVwcy94ODYvYXRvbWljLW1hY2hpbmUuaAotQEAgLTU4LDE1ICs1OCwxNCBAQCB0eXBlZGVmIHVpbnRtYXhfdCB1YXRvbWljX21heF90OwotICNlbmRpZgotIAotICNkZWZpbmUgVVNFX0FUT01JQ19DT01QSUxFUl9CVUlMVElOUwkxCi0rIyBkZWZpbmUgX19IQVZFXzY0Ql9BVE9NSUNTCQkxCi0gCi0gI2lmZGVmIF9feDg2XzY0X18KLS0jIGRlZmluZSBfX0hBVkVfNjRCX0FUT01JQ1MJCTEKLSAjIGRlZmluZSBTUF9SRUcJCQkJInJzcCIKLSAjIGRlZmluZSBTRUdfUkVHCQkJImZzIgotICMgZGVmaW5lIEJSX0NPTlNUUkFJTlQJCQkicSIKLSAjIGRlZmluZSBJQlJfQ09OU1RSQUlOVAkJCSJpcSIKLSAjZWxzZQotLSMgZGVmaW5lIF9fSEFWRV82NEJfQVRPTUlDUwkJMAotICMgZGVmaW5lIFNQX1JFRwkJCQkiZXNwIgotICMgZGVmaW5lIFNFR19SRUcJCQkiZ3MiCi0gIyBkZWZpbmUgQlJfQ09OU1RSQUlOVAkJCSJyIgotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA0LW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MmUxMjg5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA0LW5hdGl2ZXNkay1nbGliYy1GaXgtYnVmZmVyLW92ZXJydW4td2l0aC1hLXJlbG9jYXRlZC0ucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSA3ODA2MzQwYzJhY2NjMmM1MWU3ZTg2MWI2MThjMjlmYjU2MDlhMDA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDE6NTA6MDAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gbmF0aXZlc2RrLWdsaWJjOiBGaXggYnVmZmVyIG92ZXJydW4gd2l0aCBhIHJlbG9jYXRlZCBTREsKKworV2hlbiBsZC1saW51eC0qLnNvLjIgaXMgcmVsb2NhdGVkIHRvIGEgcGF0aCB0aGF0IGlzIGxvbmdlciB0aGFuIHRoZQorb3JpZ2luYWwgZml4ZWQgbG9jYXRpb24sIHRoZSBkeW5hbWljIGxvYWRlciB3aWxsIGNyYXNoIGluIG9wZW5fcGF0aAorYmVjYXVzZSBpdCBpbXBsaWNpdGx5IGFzc3VtZXMgdGhhdCBtYXhfZGlybmFtZWxlbiBpcyBhIGZpeGVkIHNpemUgdGhhdAorbmV2ZXIgY2hhbmdlcy4KKworVGhlIGFsbG9jYXRlZCBidWZmZXIgd2lsbCBub3QgYmUgbGFyZ2UgZW5vdWdoIHRvIGNvbnRhaW4gdGhlIGRpcmVjdG9yeQorcGF0aCBzdHJpbmcgd2hpY2ggaXMgbGFyZ2VyIHRoYW4gdGhlIGZpeGVkIGxvY2F0aW9uIHByb3ZpZGVkIGF0IGJ1aWxkCit0aW1lLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIFNESyBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSmFzb24gV2Vzc2VsIDxqYXNvbi53ZXNzZWxAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBlbGYvZGwtbG9hZC5jIHwgMTIgKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2VsZi9kbC1sb2FkLmMgYi9lbGYvZGwtbG9hZC5jCitpbmRleCAzMjI2ZjJlNTMxLi43Y2I4YTg2ZmFiIDEwMDY0NAorLS0tIGEvZWxmL2RsLWxvYWQuYworKysrIGIvZWxmL2RsLWxvYWQuYworQEAgLTE3NzMsNyArMTc3MywxOSBAQCBvcGVuX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIHNpemVfdCBuYW1lbGVuLCBpbnQgbW9kZSwKKyAgICAgICAgZ2l2ZW4gb24gdGhlIGNvbW1hbmQgbGluZSB3aGVuIHJ0bGQgaXMgcnVuIGRpcmVjdGx5LiAgKi8KKyAgICAgcmV0dXJuIC0xOworIAorKyAgZG8KKysgICAgeworKyAgICAgIHN0cnVjdCByX3NlYXJjaF9wYXRoX2VsZW0gKnRoaXNfZGlyID0gKmRpcnM7CisrICAgICAgaWYgKHRoaXNfZGlyLT5kaXJuYW1lbGVuID4gbWF4X2Rpcm5hbWVsZW4pCisrCXsKKysJICBtYXhfZGlybmFtZWxlbiA9IHRoaXNfZGlyLT5kaXJuYW1lbGVuOworKwl9CisrICAgIH0KKysgIHdoaWxlICgqKytkaXJzICE9IE5VTEwpOworKworICAgYnVmID0gYWxsb2NhIChtYXhfZGlybmFtZWxlbiArIG1heF9jYXBzdHJsZW4gKyBuYW1lbGVuKTsKKysKKysgIGRpcnMgPSBzcHMtPmRpcnM7CisgICBkbworICAgICB7CisgICAgICAgc3RydWN0IHJfc2VhcmNoX3BhdGhfZWxlbSAqdGhpc19kaXIgPSAqZGlyczsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNS1uYXRpdmVzZGstZ2xpYmMtTWFrZS1yZWxvY2F0YWJsZS1pbnN0YWxsLWZvci1sb2NhbGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LW5hdGl2ZXNkay1nbGliYy1NYWtlLXJlbG9jYXRhYmxlLWluc3RhbGwtZm9yLWxvY2FsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhYWQ2MDMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LW5hdGl2ZXNkay1nbGliYy1NYWtlLXJlbG9jYXRhYmxlLWluc3RhbGwtZm9yLWxvY2FsZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIDUwYWIwYjBjMTE2ZjRhZTNkOTc1ZWMxYjE1ZWQ0NTk1ZmQ5MTQ3ZjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAzIEF1ZyAyMDE4IDA5OjU1OjEyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMjhdIG5hdGl2ZXNkay1nbGliYzogTWFrZSByZWxvY2F0YWJsZSBpbnN0YWxsIGZvciBsb2NhbGVzCi0KLVRoZSBnbGliYyBsb2NhbGUgcGF0aCBpcyBoYXJkLWNvZGVkIHRvIHRoZSBpbnN0YWxsIHByZWZpeCwgYnV0IGluIFNES3Mgd2UgbmVlZAotdG8gYmUgYWJsZSB0byByZWxvY2F0ZSB0aGUgYmluYXJpZXMuICBFeHBhbmQgdGhlIHN0cmluZ3MgdG8gNEsgYW5kIHB1dCB0aGVtIGluIGEKLW1hZ2ljIHNlZ21lbnQgdGhhdCB3ZSBjYW4gcmVsb2NhdGUgYXQgaW5zdGFsbCB0aW1lLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgKE9FLXNwZWNpZmljKQotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxvY2FsZS9maW5kbG9jYWxlLmMgIHwgNCArKy0tCi0gbG9jYWxlL2xvYWRhcmNoaXZlLmMgfCAyICstCi0gbG9jYWxlL2xvY2FsZWluZm8uaCAgfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9sb2NhbGUvZmluZGxvY2FsZS5jIGIvbG9jYWxlL2ZpbmRsb2NhbGUuYwotaW5kZXggOWFmNjA1YmQ2NC4uYjJiMGEzZjkzYiAxMDA2NDQKLS0tLSBhL2xvY2FsZS9maW5kbG9jYWxlLmMKLSsrKyBiL2xvY2FsZS9maW5kbG9jYWxlLmMKLUBAIC01Niw3ICs1Niw3IEBAIHN0cnVjdCBfX2xvY2FsZV9kYXRhICpjb25zdCBfbmxfQ1tdIGF0dHJpYnV0ZV9oaWRkZW4gPQotICAgIHdoaWNoIGFyZSBzb21laG93IGFkZHJlc3NlZC4gICovCi0gc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqX25sX2xvY2FsZV9maWxlX2xpc3RbX19MQ19MQVNUXTsKLSAKLS1jb25zdCBjaGFyIF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoW10gYXR0cmlidXRlX2hpZGRlbiA9IENPTVBMT0NBTEVESVI7Ci0rY2hhciBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aFs0MDk2XSBhdHRyaWJ1dGVfaGlkZGVuIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IENPTVBMT0NBTEVESVI7Ci0gCi0gLyogQ2hlY2tzIGlmIHRoZSBuYW1lIGlzIGFjdHVhbGx5IHByZXNlbnQsIHRoYXQgaXMsIG5vdCBOVUxMIGFuZCBub3QKLSAgICBlbXB0eS4gICovCi1AQCAtMTY3LDcgKzE2Nyw3IEBAIF9ubF9maW5kX2xvY2FsZSAoY29uc3QgY2hhciAqbG9jYWxlX3BhdGgsIHNpemVfdCBsb2NhbGVfcGF0aF9sZW4sCi0gCi0gICAgICAgLyogTm90aGluZyBpbiB0aGUgYXJjaGl2ZS4gIFNldCB0aGUgZGVmYXVsdCBwYXRoIHRvIHNlYXJjaCBiZWxvdy4gICovCi0gICAgICAgbG9jYWxlX3BhdGggPSBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aDsKLS0gICAgICBsb2NhbGVfcGF0aF9sZW4gPSBzaXplb2YgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGg7Ci0rICAgICAgbG9jYWxlX3BhdGhfbGVuID0gc3RybGVuKGxvY2FsZV9wYXRoKSArIDE7Ci0gICAgIH0KLSAgIGVsc2UKLSAgICAgLyogV2UgcmVhbGx5IGhhdmUgdG8gbG9hZCBzb21lIGRhdGEuICBGaXJzdCBzZWUgd2hldGhlciB0aGUgbmFtZSBpcwotZGlmZiAtLWdpdCBhL2xvY2FsZS9sb2FkYXJjaGl2ZS5jIGIvbG9jYWxlL2xvYWRhcmNoaXZlLmMKLWluZGV4IDgwM2MxY2YyYTQuLjkwMjNmNDc1YjggMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvbG9hZGFyY2hpdmUuYwotKysrIGIvbG9jYWxlL2xvYWRhcmNoaXZlLmMKLUBAIC00Miw3ICs0Miw3IEBACi0gCi0gCi0gLyogTmFtZSBvZiB0aGUgbG9jYWxlIGFyY2hpdmUgZmlsZS4gICovCi0tc3RhdGljIGNvbnN0IGNoYXIgYXJjaGZuYW1lW10gPSBDT01QTE9DQUxFRElSICIvbG9jYWxlLWFyY2hpdmUiOwotK3N0YXRpYyBjb25zdCBjaGFyIGFyY2hmbmFtZVs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBDT01QTE9DQUxFRElSICIvbG9jYWxlLWFyY2hpdmUiOwotIAotIC8qIFNpemUgb2YgaW5pdGlhbCBtYXBwaW5nIHdpbmRvdywgb3B0aW1hbCBpZiBsYXJnZSBlbm91Z2ggdG8KLSAgICBjb3ZlciB0aGUgaGVhZGVyIHBsdXMgdGhlIGluaXRpYWwgbG9jYWxlLiAgKi8KLWRpZmYgLS1naXQgYS9sb2NhbGUvbG9jYWxlaW5mby5oIGIvbG9jYWxlL2xvY2FsZWluZm8uaAotaW5kZXggN2MxY2MzZWVjYi4uNTNjYjhiZmM1OSAxMDA2NDQKLS0tLSBhL2xvY2FsZS9sb2NhbGVpbmZvLmgKLSsrKyBiL2xvY2FsZS9sb2NhbGVpbmZvLmgKLUBAIC0zMjUsNyArMzI1LDcgQEAgX25sX2xvb2t1cF93b3JkIChsb2NhbGVfdCBsLCBpbnQgY2F0ZWdvcnksIGludCBpdGVtKQotIH0KLSAKLSAvKiBEZWZhdWx0IHNlYXJjaCBwYXRoIGlmIG5vIExPQ1BBVEggZW52aXJvbm1lbnQgdmFyaWFibGUuICAqLwotLWV4dGVybiBjb25zdCBjaGFyIF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoW10gYXR0cmlidXRlX2hpZGRlbjsKLStleHRlcm4gY2hhciBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aFs0MDk2XSBhdHRyaWJ1dGVfaGlkZGVuOwotIAotIC8qIExvYWQgdGhlIGxvY2FsZSBkYXRhIGZvciBDQVRFR09SWSBmcm9tIHRoZSBmaWxlIHNwZWNpZmllZCBieSAqTkFNRS4KLSAgICBJZiAqTkFNRSBpcyAiIiwgdXNlIGVudmlyb25tZW50IHZhcmlhYmxlcyBhcyBzcGVjaWZpZWQgYnkgUE9TSVgsIGFuZAotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDUtbmF0aXZlc2RrLWdsaWJjLVJhaXNlLXRoZS1zaXplLW9mLWFycmF5cy1jb250YWluaW5nLS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yOTRjMmI5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA1LW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2gKQEAgLTAsMCArMSwxMzcgQEAKK0Zyb20gMWI5N2JlZmJlNjkzZWI5M2E3N2I2MDk4ZjZhZTEzOTRhNTM0NjJmNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjUxOjM4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIG5hdGl2ZXNkay1nbGliYzogUmFpc2UgdGhlIHNpemUgb2YgYXJyYXlzIGNvbnRhaW5pbmcgZGwgcGF0aHMKKworVGhpcyBwYXRjaCBwdXRzIHRoZSBkeW5hbWljIGxvYWRlciBwYXRoIGluIHRoZSBiaW5hcmllcywgU1lTVEVNX0RJUlMgc3RyaW5ncworYW5kIGxlbmd0aHMgYXMgd2VsbCBhcyBsZC5zby5jYWNoZSBwYXRoIGluIHRoZSBkeW5hbWljIGxvYWRlciB0byBzcGVjaWZpYworc2VjdGlvbnMgaW4gbWVtb3J5LiBUaGUgc2VjdGlvbnMgdGhhdCBjb250YWluIHBhdGhzIGhhdmUgYmVlbiBhbGxvY2F0ZWQgYSA0MDk2CitieXRlIHNlY3Rpb24sIHdoaWNoIGlzIHRoZSBtYXhpbXVtIHBhdGggbGVuZ3RoIGluIGxpbnV4LiBUaGlzIHdpbGwgYWxsb3cgdGhlCityZWxvY2F0aW5nIHNjcmlwdCB0byBwYXJzZSB0aGUgRUxGIGJpbmFyeSwgZGV0ZWN0IHRoZSBzZWN0aW9uIGFuZCBlYXNpbHkgcmVwbGFjZQordGhlIHN0cmluZ3MgaW4gYSBjZXJ0YWluIHBhdGguCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbU0RLIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBMYXVyZW50aXUgUGFsY3UgPGxhdXJlbnRpdS5wYWxjdUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZWxmL2RsLWNhY2hlLmMgICAgICAgICAgICAgfCA0ICsrKysKKyBlbGYvZGwtbG9hZC5jICAgICAgICAgICAgICB8IDQgKystLQorIGVsZi9pbnRlcnAuYyAgICAgICAgICAgICAgIHwgMiArLQorIGVsZi9sZGNvbmZpZy5jICAgICAgICAgICAgIHwgMyArKysKKyBlbGYvcnRsZC5jICAgICAgICAgICAgICAgICB8IDUgKysrLS0KKyBpY29udi9nY29udl9jb25mLmMgICAgICAgICB8IDIgKy0KKyBzeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaCB8IDQgLS0tLQorIDcgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9lbGYvZGwtY2FjaGUuYyBiL2VsZi9kbC1jYWNoZS5jCitpbmRleCAzZWVkZDlhZmNmLi5lZmRmZTVjYWU3IDEwMDY0NAorLS0tIGEvZWxmL2RsLWNhY2hlLmMKKysrKyBiL2VsZi9kbC1jYWNoZS5jCitAQCAtMTMzLDYgKzEzMywxMCBAQCBkbwkJCQkJCQkJCSAgICAgIFwKKyB3aGlsZSAoMCkKKyAKKyAKKytjb25zdCBjaGFyIExEX1NPX0NBQ0hFWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmxkc29jYWNoZSIpKSkgPQorKwkJU1lTQ09ORkRJUiAiL2xkLnNvLmNhY2hlIjsKKysKKysKKyBpbnQKKyBfZGxfY2FjaGVfbGliY21wIChjb25zdCBjaGFyICpwMSwgY29uc3QgY2hhciAqcDIpCisgeworZGlmZiAtLWdpdCBhL2VsZi9kbC1sb2FkLmMgYi9lbGYvZGwtbG9hZC5jCitpbmRleCA3Y2I4YTg2ZmFiLi5lMzJkNGFhOTM2IDEwMDY0NAorLS0tIGEvZWxmL2RsLWxvYWQuYworKysrIGIvZWxmL2RsLWxvYWQuYworQEAgLTExMCw4ICsxMTAsOCBAQCBzdGF0aWMgc2l6ZV90IG1heF9jYXBzdHJsZW4gYXR0cmlidXRlX3JlbHJvOworICAgIGdlbi10cnVzdGVkLWRpcnMuYXdrLiAgKi8KKyAjaW5jbHVkZSAidHJ1c3RlZC1kaXJzLmgiCisgCistc3RhdGljIGNvbnN0IGNoYXIgc3lzdGVtX2RpcnNbXSA9IFNZU1RFTV9ESVJTOworLXN0YXRpYyBjb25zdCBzaXplX3Qgc3lzdGVtX2RpcnNfbGVuW10gPQorK3N0YXRpYyBjb25zdCBjaGFyIHN5c3RlbV9kaXJzWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLnN5c2RpcnMiKSkpID0gU1lTVEVNX0RJUlM7Cisrdm9sYXRpbGUgc3RhdGljIGNvbnN0IHNpemVfdCBzeXN0ZW1fZGlyc19sZW5bXSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5zeXNkaXJzbGVuIikpKSA9CisgeworICAgU1lTVEVNX0RJUlNfTEVOCisgfTsKK2RpZmYgLS1naXQgYS9lbGYvaW50ZXJwLmMgYi9lbGYvaW50ZXJwLmMKK2luZGV4IDMzMWNjMWRmNDguLjg4NWIyZDk0NzYgMTAwNjQ0CistLS0gYS9lbGYvaW50ZXJwLmMKKysrKyBiL2VsZi9pbnRlcnAuYworQEAgLTE4LDUgKzE4LDUgQEAKKyAKKyAjaW5jbHVkZSA8cnVudGltZS1saW5rZXIuaD4KKyAKKy1jb25zdCBjaGFyIF9faW52b2tlX2R5bmFtaWNfbGlua2VyX19bXSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5pbnRlcnAiKSkpCisrY29uc3QgY2hhciBfX2ludm9rZV9keW5hbWljX2xpbmtlcl9fWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmludGVycCIpKSkKKyAgID0gUlVOVElNRV9MSU5LRVI7CitkaWZmIC0tZ2l0IGEvZWxmL2xkY29uZmlnLmMgYi9lbGYvbGRjb25maWcuYworaW5kZXggNjgxZWQ3ODQ5Ni4uODgzM2VkMGE2YiAxMDA2NDQKKy0tLSBhL2VsZi9sZGNvbmZpZy5jCisrKysgYi9lbGYvbGRjb25maWcuYworQEAgLTE2OCw2ICsxNjgsOSBAQCBzdGF0aWMgc3RydWN0IGFyZ3AgYXJncCA9CisgICBvcHRpb25zLCBwYXJzZV9vcHQsIE5VTEwsIGRvYywgTlVMTCwgbW9yZV9oZWxwLCBOVUxMCisgfTsKKyAKKysKKytleHRlcm4gY29uc3QgY2hhciBMRF9TT19DQUNIRVs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5sZHNvY2FjaGUiKSkpOworKworIC8qIENoZWNrIGlmIHN0cmluZyBjb3JyZXNwb25kcyB0byBhbiBpbXBvcnRhbnQgaGFyZHdhcmUgY2FwYWJpbGl0eSBvcgorICAgIGEgcGxhdGZvcm0uICAqLworIHN0YXRpYyBpbnQKK2RpZmYgLS1naXQgYS9lbGYvcnRsZC5jIGIvZWxmL3J0bGQuYworaW5kZXggNTUzY2ZiZDFiNy4uMzkzNDdjMmMwMyAxMDA2NDQKKy0tLSBhL2VsZi9ydGxkLmMKKysrKyBiL2VsZi9ydGxkLmMKK0BAIC0xNzUsNiArMTc1LDcgQEAgZHNvX25hbWVfdmFsaWRfZm9yX3N1aWQgKGNvbnN0IGNoYXIgKnApCisgICAgIH0KKyAgIHJldHVybiAqcCAhPSAnXDAnOworIH0KKytleHRlcm4gY29uc3QgY2hhciBMRF9TT19DQUNIRVs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5sZHNvY2FjaGUiKSkpOworIAorIC8qIExEX0FVRElUIHZhcmlhYmxlIGNvbnRlbnRzLiAgTXVzdCBiZSBwcm9jZXNzZWQgYmVmb3JlIHRoZQorICAgIGF1ZGl0X2xpc3QgYmVsb3cuICAqLworQEAgLTEyMjIsMTMgKzEyMjMsMTMgQEAgb2YgdGhpcyBoZWxwZXIgcHJvZ3JhbTsgY2hhbmNlcyBhcmUgeW91IGRpZCBub3QgaW50ZW5kIHRvIHJ1biB0aGlzIHByb2dyYW0uXG5cCisgICAtLWxpc3QgICAgICAgICAgICAgICAgbGlzdCBhbGwgZGVwZW5kZW5jaWVzIGFuZCBob3cgdGhleSBhcmUgcmVzb2x2ZWRcblwKKyAgIC0tdmVyaWZ5ICAgICAgICAgICAgICB2ZXJpZnkgdGhhdCBnaXZlbiBvYmplY3QgcmVhbGx5IGlzIGEgZHluYW1pY2FsbHkgbGlua2VkXG5cCisgCQkJb2JqZWN0IHdlIGNhbiBoYW5kbGVcblwKKy0gIC0taW5oaWJpdC1jYWNoZSAgICAgICBEbyBub3QgdXNlICIgTERfU09fQ0FDSEUgIlxuXAorKyAgLS1pbmhpYml0LWNhY2hlICAgICAgIERvIG5vdCB1c2UgJXNcblwKKyAgIC0tbGlicmFyeS1wYXRoIFBBVEggICB1c2UgZ2l2ZW4gUEFUSCBpbnN0ZWFkIG9mIGNvbnRlbnQgb2YgdGhlIGVudmlyb25tZW50XG5cCisgCQkJdmFyaWFibGUgTERfTElCUkFSWV9QQVRIXG5cCisgICAtLWluaGliaXQtcnBhdGggTElTVCAgaWdub3JlIFJVTlBBVEggYW5kIFJQQVRIIGluZm9ybWF0aW9uIGluIG9iamVjdCBuYW1lc1xuXAorIAkJCWluIExJU1RcblwKKyAgIC0tYXVkaXQgTElTVCAgICAgICAgICB1c2Ugb2JqZWN0cyBuYW1lZCBpbiBMSVNUIGFzIGF1ZGl0b3JzXG5cCistICAtLXByZWxvYWQgTElTVCAgICAgICAgcHJlbG9hZCBvYmplY3RzIG5hbWVkIGluIExJU1RcbiIpOworKyAgLS1wcmVsb2FkIExJU1QgICAgICAgIHByZWxvYWQgb2JqZWN0cyBuYW1lZCBpbiBMSVNUXG4iLCBMRF9TT19DQUNIRSk7CisgCisgICAgICAgKytfZGxfc2tpcF9hcmdzOworICAgICAgIC0tX2RsX2FyZ2M7CitkaWZmIC0tZ2l0IGEvaWNvbnYvZ2NvbnZfY29uZi5jIGIvaWNvbnYvZ2NvbnZfY29uZi5jCitpbmRleCA3MzViZDFmMmQ1Li4yNTEwMGJhNjY2IDEwMDY0NAorLS0tIGEvaWNvbnYvZ2NvbnZfY29uZi5jCisrKysgYi9pY29udi9nY29udl9jb25mLmMKK0BAIC0zNiw3ICszNiw3IEBACisgCisgCisgLyogVGhpcyBpcyB0aGUgZGVmYXVsdCBwYXRoIHdoZXJlIHdlIGxvb2sgZm9yIG1vZHVsZSBsaXN0cy4gICovCistc3RhdGljIGNvbnN0IGNoYXIgZGVmYXVsdF9nY29udl9wYXRoW10gPSBHQ09OVl9QQVRIOworK3N0YXRpYyBjaGFyIGRlZmF1bHRfZ2NvbnZfcGF0aFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHQ09OVl9QQVRIOworIAorIC8qIFR5cGUgdG8gcmVwcmVzZW50IHNlYXJjaCBwYXRoLiAgKi8KKyBzdHJ1Y3QgcGF0aF9lbGVtCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9nZW5lcmljL2RsLWNhY2hlLmggYi9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaAoraW5kZXggNmIzMTBlOWUxNS4uMzg3NzMxMWRmNCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvZ2VuZXJpYy9kbC1jYWNoZS5oCisrKysgYi9zeXNkZXBzL2dlbmVyaWMvZGwtY2FjaGUuaAorQEAgLTI3LDEwICsyNyw2IEBACisgICAoKGZsYWdzKSA9PSAxIHx8IChmbGFncykgPT0gX0RMX0NBQ0hFX0RFRkFVTFRfSUQpCisgI2VuZGlmCisgCistI2lmbmRlZiBMRF9TT19DQUNIRQorLSMgZGVmaW5lIExEX1NPX0NBQ0hFIFNZU0NPTkZESVIgIi9sZC5zby5jYWNoZSIKKy0jZW5kaWYKKy0KKyAjaWZuZGVmIGFkZF9zeXN0ZW1fZGlyCisgIyBkZWZpbmUgYWRkX3N5c3RlbV9kaXIoZGlyKSBhZGRfZGlyIChkaXIpCisgI2VuZGlmCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtZnNsLWU1MDAtZTU1MDAtZTY1MDAtNjAzZS1mc3FydC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1ZTFjNTkxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNi1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTU4NCArMCwwIEBACi1Gcm9tIDdjY2NmNWNlYzA5ZjJhNDJjYzNmZTVkODJjZTIxYjczMDkzMzBiMzMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDowMTo1MCArMDAwMAotU3ViamVjdDogW1BBVENIIDA2LzI4XSBmc2wgZTUwMC9lNTUwMC9lNjUwMC82MDNlIGZzcXJ0IGltcGxlbWVudGF0aW9uCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogRWRtYXIgV2llbnNrb3NraSA8ZWRtYXJAZnJlZXNjYWxlLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jICAgfCAxMzQgKysrKysrKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgIHwgMTAxICsrKysrKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgfCAxMzQgKysrKysrKysrKysrKysrKysrCi0gLi4uL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jICAgIHwgMTAxICsrKysrKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyAgfCAxMzQgKysrKysrKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jIHwgMTAxICsrKysrKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyAgfCAxMzQgKysrKysrKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIHwgMTAxICsrKysrKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyAgfCAxMzQgKysrKysrKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jIHwgMTAxICsrKysrKysrKysrKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyAgfCAxMzQgKysrKysrKysrKysrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jIHwgMTAxICsrKysrKysrKysrKysKLSAuLi4vbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcyAgfCAgIDEgKwotIC4uLi9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMgICAgICB8ICAgMiArCi0gLi4uL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcyAgICAgIHwgICAxICsKLSAuLi4vbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMgfCAgIDEgKwotIC4uLi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcyB8ICAgMSArCi0gLi4uL2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzIHwgICAxICsKLSAuLi4vbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMgfCAgIDEgKwotIDE5IGZpbGVzIGNoYW5nZWQsIDE0MTggaW5zZXJ0aW9ucygrKQotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcwotIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMKLSBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotQEAgLTAsMCArMSwxMzQgQEAKLSsvKiBEb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3bzEwOCA9IDMuMjQ1MTg1NTM2NTg0MjY3MjY5ZSszMjsKLStzdGF0aWMgY29uc3QgZmxvYXQgdHdvbTU0ID0gNS41NTExMTUxMjMxMjU3ODI3MDJlLTE3OwotK3N0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotKwotKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKLSsKLSsgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OwotKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5Ci0rCi0rICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCi0rICAgc2ltdWx0YW5lb3VzbHkuICAqLwotKwotKyNpZmRlZiBfX1NURENfXwotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSsjZWxzZQotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChiKQotKyAgICAgZG91YmxlIGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyAgICAgIGRvdWJsZSB5LCBnLCBoLCBkLCByOwotKyAgICAgIGllZWVfZG91YmxlX3NoYXBlX3R5cGUgdTsKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGZlbnZfdCBmZTsKLSsKLSsgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKLSsKLSsgICAgICAgICAgdS52YWx1ZSA9IGI7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbZXN0aW1hdGVdLCAlW3hdXG4iCi0rICAgICAgICAgICAgICAgICAgIDogW2VzdGltYXRlXSAiPWYiICh5KSA6IFt4XSAiZiIgKGIpKTsKLSsKLSsgICAgICAgICAgLyogRm9sbG93aW5nIE11bGxlciBldCBhbCwgcGFnZSAxNjgsIGVxdWF0aW9uIDUuMjAuCi0rCi0rICAgICAgICAgICAgIGggZ29lcyB0byAxLygyKnNxcnQoYikpCi0rICAgICAgICAgICAgIGcgZ29lcyB0byBzcXJ0KGIpLgotKwotKyAgICAgICAgICAgICBXZSBuZWVkIHRocmVlIGl0ZXJhdGlvbnMgdG8gZ2V0IHdpdGhpbiAxdWxwLiAgKi8KLSsKLSsgICAgICAgICAgLyogSW5kaWNhdGUgdGhhdCB0aGVzZSBjYW4gYmUgcGVyZm9ybWVkIHByaW9yIHRvIHRoZSBicmFuY2guICBHQ0MKLSsgICAgICAgICAgICAgaW5zaXN0cyBvbiBzaW5raW5nIHRoZW0gYmVsb3cgdGhlIGJyYW5jaCwgaG93ZXZlcjsgaXQgc2VlbXMgbGlrZQotKyAgICAgICAgICAgICB0aGV5J2QgYmUgYmV0dGVyIGJlZm9yZSB0aGUgYnJhbmNoIHNvIHRoYXQgd2UgY2FuIGNvdmVyIGFueSBsYXRlbmN5Ci0rICAgICAgICAgICAgIGZyb20gc3RvcmluZyB0aGUgYXJndW1lbnQgYW5kIGxvYWRpbmcgaXRzIGhpZ2ggd29yZC4gIE9oIHdlbGwuICAqLwotKwotKyAgICAgICAgICBnID0gYiAqIHk7Ci0rICAgICAgICAgIGggPSAwLjUgKiB5OwotKwotKyAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSsgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotKyAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rCi0rI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgX19hc21fXyAoImZtYWRkICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICAgIF9fcjt9KQotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICAvKiBnIGlzIG5vdyArLy0gMXVscCwgb3IgZXhhY3RseSBlcXVhbCB0bywgdGhlIHNxdWFyZSByb290IG9mIGIuICAqLwotKwotKyAgICAgICAgICAvKiBGaW5hbCByZWZpbmVtZW50LiAgKi8KLSsgICAgICAgICAgZCA9IEZOTVNVQiAoZywgZywgYik7Ci0rCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiBGTUFERCAoZCwgaCwgZyk7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaCAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwotQEAgLTAsMCArMSwxMDEgQEAKLSsvKiBTaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAotKyAgIHNxdWFyZSByb290LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSsjZWxzZQotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChiKQotKyAgICAgZmxvYXQgYjsKLSsjZW5kaWYKLSt7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotKyAgICB7Ci0rI2RlZmluZSBGTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIF9fYXNtX18gKCJmbXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgIF9fcjt9KQotKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGRvdWJsZSB5LCB4OwotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIC8qIENvbXB1dGUgeSA9IDEuNSAqIGIgLSBiLiAgVXNlcyBmZXdlciBjb25zdGFudHMgdGhhbiB5ID0gMC41ICogYi4gICovCi0rICAgICAgICAgIHkgPSBGTVNVQiAodGhyZWVoYWxmLCBiLCBiKTsKLSsKLSsgICAgICAgICAgLyogSW5pdGlhbCBlc3RpbWF0ZS4gICovCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbeF0sICVbYl1cbiIgOiBbeF0gIj1mIiAoeCkgOiBbYl0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEl0ZXJhdGUuICB4X3tuKzF9ID0geF9uICogKDEuNSAtIHkgKiAoeF9uICogeF9uKSkuICAqLwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKwotKyAgICAgICAgICAvKiBBbGwgZG9uZS4gICovCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiB4ICogYjsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgZWxzZSBpZiAoYiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50Ci0rICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KLSsjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCi0rICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKLSsKLSsgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OwotKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKLSsjZW5kaWYKLSsJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7Ci0rICAgICAgYiA9IGFfbmFuLnZhbHVlOwotKyAgICB9Ci0rICByZXR1cm4gZl93YXNoZiAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwotQEAgLTAsMCArMSwxMzQgQEAKLSsvKiBEb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3bzEwOCA9IDMuMjQ1MTg1NTM2NTg0MjY3MjY5ZSszMjsKLStzdGF0aWMgY29uc3QgZmxvYXQgdHdvbTU0ID0gNS41NTExMTUxMjMxMjU3ODI3MDJlLTE3OwotK3N0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotKwotKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKLSsKLSsgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OwotKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5Ci0rCi0rICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCi0rICAgc2ltdWx0YW5lb3VzbHkuICAqLwotKwotKyNpZmRlZiBfX1NURENfXwotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSsjZWxzZQotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChiKQotKyAgICAgZG91YmxlIGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyAgICAgIGRvdWJsZSB5LCBnLCBoLCBkLCByOwotKyAgICAgIGllZWVfZG91YmxlX3NoYXBlX3R5cGUgdTsKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGZlbnZfdCBmZTsKLSsKLSsgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKLSsKLSsgICAgICAgICAgdS52YWx1ZSA9IGI7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbZXN0aW1hdGVdLCAlW3hdXG4iCi0rICAgICAgICAgICAgICAgICAgIDogW2VzdGltYXRlXSAiPWYiICh5KSA6IFt4XSAiZiIgKGIpKTsKLSsKLSsgICAgICAgICAgLyogRm9sbG93aW5nIE11bGxlciBldCBhbCwgcGFnZSAxNjgsIGVxdWF0aW9uIDUuMjAuCi0rCi0rICAgICAgICAgICAgIGggZ29lcyB0byAxLygyKnNxcnQoYikpCi0rICAgICAgICAgICAgIGcgZ29lcyB0byBzcXJ0KGIpLgotKwotKyAgICAgICAgICAgICBXZSBuZWVkIHRocmVlIGl0ZXJhdGlvbnMgdG8gZ2V0IHdpdGhpbiAxdWxwLiAgKi8KLSsKLSsgICAgICAgICAgLyogSW5kaWNhdGUgdGhhdCB0aGVzZSBjYW4gYmUgcGVyZm9ybWVkIHByaW9yIHRvIHRoZSBicmFuY2guICBHQ0MKLSsgICAgICAgICAgICAgaW5zaXN0cyBvbiBzaW5raW5nIHRoZW0gYmVsb3cgdGhlIGJyYW5jaCwgaG93ZXZlcjsgaXQgc2VlbXMgbGlrZQotKyAgICAgICAgICAgICB0aGV5J2QgYmUgYmV0dGVyIGJlZm9yZSB0aGUgYnJhbmNoIHNvIHRoYXQgd2UgY2FuIGNvdmVyIGFueSBsYXRlbmN5Ci0rICAgICAgICAgICAgIGZyb20gc3RvcmluZyB0aGUgYXJndW1lbnQgYW5kIGxvYWRpbmcgaXRzIGhpZ2ggd29yZC4gIE9oIHdlbGwuICAqLwotKwotKyAgICAgICAgICBnID0gYiAqIHk7Ci0rICAgICAgICAgIGggPSAwLjUgKiB5OwotKwotKyAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSsgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotKyAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rCi0rI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgX19hc21fXyAoImZtYWRkICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICAgIF9fcjt9KQotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICAvKiBnIGlzIG5vdyArLy0gMXVscCwgb3IgZXhhY3RseSBlcXVhbCB0bywgdGhlIHNxdWFyZSByb290IG9mIGIuICAqLwotKwotKyAgICAgICAgICAvKiBGaW5hbCByZWZpbmVtZW50LiAgKi8KLSsgICAgICAgICAgZCA9IEZOTVNVQiAoZywgZywgYik7Ci0rCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiBGTUFERCAoZCwgaCwgZyk7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaCAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwotQEAgLTAsMCArMSwxMDEgQEAKLSsvKiBTaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAotKyAgIHNxdWFyZSByb290LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSsjZWxzZQotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChiKQotKyAgICAgZmxvYXQgYjsKLSsjZW5kaWYKLSt7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotKyAgICB7Ci0rI2RlZmluZSBGTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIF9fYXNtX18gKCJmbXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgIF9fcjt9KQotKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGRvdWJsZSB5LCB4OwotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIC8qIENvbXB1dGUgeSA9IDEuNSAqIGIgLSBiLiAgVXNlcyBmZXdlciBjb25zdGFudHMgdGhhbiB5ID0gMC41ICogYi4gICovCi0rICAgICAgICAgIHkgPSBGTVNVQiAodGhyZWVoYWxmLCBiLCBiKTsKLSsKLSsgICAgICAgICAgLyogSW5pdGlhbCBlc3RpbWF0ZS4gICovCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbeF0sICVbYl1cbiIgOiBbeF0gIj1mIiAoeCkgOiBbYl0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEl0ZXJhdGUuICB4X3tuKzF9ID0geF9uICogKDEuNSAtIHkgKiAoeF9uICogeF9uKSkuICAqLwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKwotKyAgICAgICAgICAvKiBBbGwgZG9uZS4gICovCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiB4ICogYjsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgZWxzZSBpZiAoYiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50Ci0rICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KLSsjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCi0rICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKLSsKLSsgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OwotKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKLSsjZW5kaWYKLSsJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7Ci0rICAgICAgYiA9IGFfbmFuLnZhbHVlOwotKyAgICB9Ci0rICByZXR1cm4gZl93YXNoZiAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTAsMCArMSwxMzQgQEAKLSsvKiBEb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3bzEwOCA9IDMuMjQ1MTg1NTM2NTg0MjY3MjY5ZSszMjsKLStzdGF0aWMgY29uc3QgZmxvYXQgdHdvbTU0ID0gNS41NTExMTUxMjMxMjU3ODI3MDJlLTE3OwotK3N0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotKwotKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKLSsKLSsgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OwotKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5Ci0rCi0rICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCi0rICAgc2ltdWx0YW5lb3VzbHkuICAqLwotKwotKyNpZmRlZiBfX1NURENfXwotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSsjZWxzZQotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChiKQotKyAgICAgZG91YmxlIGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyAgICAgIGRvdWJsZSB5LCBnLCBoLCBkLCByOwotKyAgICAgIGllZWVfZG91YmxlX3NoYXBlX3R5cGUgdTsKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGZlbnZfdCBmZTsKLSsKLSsgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKLSsKLSsgICAgICAgICAgdS52YWx1ZSA9IGI7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbZXN0aW1hdGVdLCAlW3hdXG4iCi0rICAgICAgICAgICAgICAgICAgIDogW2VzdGltYXRlXSAiPWYiICh5KSA6IFt4XSAiZiIgKGIpKTsKLSsKLSsgICAgICAgICAgLyogRm9sbG93aW5nIE11bGxlciBldCBhbCwgcGFnZSAxNjgsIGVxdWF0aW9uIDUuMjAuCi0rCi0rICAgICAgICAgICAgIGggZ29lcyB0byAxLygyKnNxcnQoYikpCi0rICAgICAgICAgICAgIGcgZ29lcyB0byBzcXJ0KGIpLgotKwotKyAgICAgICAgICAgICBXZSBuZWVkIHRocmVlIGl0ZXJhdGlvbnMgdG8gZ2V0IHdpdGhpbiAxdWxwLiAgKi8KLSsKLSsgICAgICAgICAgLyogSW5kaWNhdGUgdGhhdCB0aGVzZSBjYW4gYmUgcGVyZm9ybWVkIHByaW9yIHRvIHRoZSBicmFuY2guICBHQ0MKLSsgICAgICAgICAgICAgaW5zaXN0cyBvbiBzaW5raW5nIHRoZW0gYmVsb3cgdGhlIGJyYW5jaCwgaG93ZXZlcjsgaXQgc2VlbXMgbGlrZQotKyAgICAgICAgICAgICB0aGV5J2QgYmUgYmV0dGVyIGJlZm9yZSB0aGUgYnJhbmNoIHNvIHRoYXQgd2UgY2FuIGNvdmVyIGFueSBsYXRlbmN5Ci0rICAgICAgICAgICAgIGZyb20gc3RvcmluZyB0aGUgYXJndW1lbnQgYW5kIGxvYWRpbmcgaXRzIGhpZ2ggd29yZC4gIE9oIHdlbGwuICAqLwotKwotKyAgICAgICAgICBnID0gYiAqIHk7Ci0rICAgICAgICAgIGggPSAwLjUgKiB5OwotKwotKyAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSsgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotKyAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rCi0rI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgX19hc21fXyAoImZtYWRkICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICAgIF9fcjt9KQotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICAvKiBnIGlzIG5vdyArLy0gMXVscCwgb3IgZXhhY3RseSBlcXVhbCB0bywgdGhlIHNxdWFyZSByb290IG9mIGIuICAqLwotKwotKyAgICAgICAgICAvKiBGaW5hbCByZWZpbmVtZW50LiAgKi8KLSsgICAgICAgICAgZCA9IEZOTVNVQiAoZywgZywgYik7Ci0rCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiBGTUFERCAoZCwgaCwgZyk7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaCAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTAsMCArMSwxMDEgQEAKLSsvKiBTaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAotKyAgIHNxdWFyZSByb290LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSsjZWxzZQotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChiKQotKyAgICAgZmxvYXQgYjsKLSsjZW5kaWYKLSt7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotKyAgICB7Ci0rI2RlZmluZSBGTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIF9fYXNtX18gKCJmbXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgIF9fcjt9KQotKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGRvdWJsZSB5LCB4OwotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIC8qIENvbXB1dGUgeSA9IDEuNSAqIGIgLSBiLiAgVXNlcyBmZXdlciBjb25zdGFudHMgdGhhbiB5ID0gMC41ICogYi4gICovCi0rICAgICAgICAgIHkgPSBGTVNVQiAodGhyZWVoYWxmLCBiLCBiKTsKLSsKLSsgICAgICAgICAgLyogSW5pdGlhbCBlc3RpbWF0ZS4gICovCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbeF0sICVbYl1cbiIgOiBbeF0gIj1mIiAoeCkgOiBbYl0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEl0ZXJhdGUuICB4X3tuKzF9ID0geF9uICogKDEuNSAtIHkgKiAoeF9uICogeF9uKSkuICAqLwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKwotKyAgICAgICAgICAvKiBBbGwgZG9uZS4gICovCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiB4ICogYjsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgZWxzZSBpZiAoYiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50Ci0rICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KLSsjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCi0rICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKLSsKLSsgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OwotKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKLSsjZW5kaWYKLSsJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7Ci0rICAgICAgYiA9IGFfbmFuLnZhbHVlOwotKyAgICB9Ci0rICByZXR1cm4gZl93YXNoZiAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTAsMCArMSwxMzQgQEAKLSsvKiBEb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3bzEwOCA9IDMuMjQ1MTg1NTM2NTg0MjY3MjY5ZSszMjsKLStzdGF0aWMgY29uc3QgZmxvYXQgdHdvbTU0ID0gNS41NTExMTUxMjMxMjU3ODI3MDJlLTE3OwotK3N0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotKwotKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKLSsKLSsgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OwotKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5Ci0rCi0rICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCi0rICAgc2ltdWx0YW5lb3VzbHkuICAqLwotKwotKyNpZmRlZiBfX1NURENfXwotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSsjZWxzZQotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChiKQotKyAgICAgZG91YmxlIGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyAgICAgIGRvdWJsZSB5LCBnLCBoLCBkLCByOwotKyAgICAgIGllZWVfZG91YmxlX3NoYXBlX3R5cGUgdTsKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGZlbnZfdCBmZTsKLSsKLSsgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKLSsKLSsgICAgICAgICAgdS52YWx1ZSA9IGI7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbZXN0aW1hdGVdLCAlW3hdXG4iCi0rICAgICAgICAgICAgICAgICAgIDogW2VzdGltYXRlXSAiPWYiICh5KSA6IFt4XSAiZiIgKGIpKTsKLSsKLSsgICAgICAgICAgLyogRm9sbG93aW5nIE11bGxlciBldCBhbCwgcGFnZSAxNjgsIGVxdWF0aW9uIDUuMjAuCi0rCi0rICAgICAgICAgICAgIGggZ29lcyB0byAxLygyKnNxcnQoYikpCi0rICAgICAgICAgICAgIGcgZ29lcyB0byBzcXJ0KGIpLgotKwotKyAgICAgICAgICAgICBXZSBuZWVkIHRocmVlIGl0ZXJhdGlvbnMgdG8gZ2V0IHdpdGhpbiAxdWxwLiAgKi8KLSsKLSsgICAgICAgICAgLyogSW5kaWNhdGUgdGhhdCB0aGVzZSBjYW4gYmUgcGVyZm9ybWVkIHByaW9yIHRvIHRoZSBicmFuY2guICBHQ0MKLSsgICAgICAgICAgICAgaW5zaXN0cyBvbiBzaW5raW5nIHRoZW0gYmVsb3cgdGhlIGJyYW5jaCwgaG93ZXZlcjsgaXQgc2VlbXMgbGlrZQotKyAgICAgICAgICAgICB0aGV5J2QgYmUgYmV0dGVyIGJlZm9yZSB0aGUgYnJhbmNoIHNvIHRoYXQgd2UgY2FuIGNvdmVyIGFueSBsYXRlbmN5Ci0rICAgICAgICAgICAgIGZyb20gc3RvcmluZyB0aGUgYXJndW1lbnQgYW5kIGxvYWRpbmcgaXRzIGhpZ2ggd29yZC4gIE9oIHdlbGwuICAqLwotKwotKyAgICAgICAgICBnID0gYiAqIHk7Ci0rICAgICAgICAgIGggPSAwLjUgKiB5OwotKwotKyAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSsgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotKyAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rCi0rI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgX19hc21fXyAoImZtYWRkICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICAgIF9fcjt9KQotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICAvKiBnIGlzIG5vdyArLy0gMXVscCwgb3IgZXhhY3RseSBlcXVhbCB0bywgdGhlIHNxdWFyZSByb290IG9mIGIuICAqLwotKwotKyAgICAgICAgICAvKiBGaW5hbCByZWZpbmVtZW50LiAgKi8KLSsgICAgICAgICAgZCA9IEZOTVNVQiAoZywgZywgYik7Ci0rCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiBGTUFERCAoZCwgaCwgZyk7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaCAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTAsMCArMSwxMDEgQEAKLSsvKiBTaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAotKyAgIHNxdWFyZSByb290LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSsjZWxzZQotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChiKQotKyAgICAgZmxvYXQgYjsKLSsjZW5kaWYKLSt7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotKyAgICB7Ci0rI2RlZmluZSBGTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIF9fYXNtX18gKCJmbXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgIF9fcjt9KQotKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGRvdWJsZSB5LCB4OwotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIC8qIENvbXB1dGUgeSA9IDEuNSAqIGIgLSBiLiAgVXNlcyBmZXdlciBjb25zdGFudHMgdGhhbiB5ID0gMC41ICogYi4gICovCi0rICAgICAgICAgIHkgPSBGTVNVQiAodGhyZWVoYWxmLCBiLCBiKTsKLSsKLSsgICAgICAgICAgLyogSW5pdGlhbCBlc3RpbWF0ZS4gICovCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbeF0sICVbYl1cbiIgOiBbeF0gIj1mIiAoeCkgOiBbYl0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEl0ZXJhdGUuICB4X3tuKzF9ID0geF9uICogKDEuNSAtIHkgKiAoeF9uICogeF9uKSkuICAqLwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKwotKyAgICAgICAgICAvKiBBbGwgZG9uZS4gICovCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiB4ICogYjsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgZWxzZSBpZiAoYiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50Ci0rICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KLSsjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCi0rICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKLSsKLSsgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OwotKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKLSsjZW5kaWYKLSsJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7Ci0rICAgICAgYiA9IGFfbmFuLnZhbHVlOwotKyAgICB9Ci0rICByZXR1cm4gZl93YXNoZiAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTAsMCArMSwxMzQgQEAKLSsvKiBEb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3bzEwOCA9IDMuMjQ1MTg1NTM2NTg0MjY3MjY5ZSszMjsKLStzdGF0aWMgY29uc3QgZmxvYXQgdHdvbTU0ID0gNS41NTExMTUxMjMxMjU3ODI3MDJlLTE3OwotK3N0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotKwotKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKLSsKLSsgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OwotKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5Ci0rCi0rICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCi0rICAgc2ltdWx0YW5lb3VzbHkuICAqLwotKwotKyNpZmRlZiBfX1NURENfXwotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSsjZWxzZQotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChiKQotKyAgICAgZG91YmxlIGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyAgICAgIGRvdWJsZSB5LCBnLCBoLCBkLCByOwotKyAgICAgIGllZWVfZG91YmxlX3NoYXBlX3R5cGUgdTsKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGZlbnZfdCBmZTsKLSsKLSsgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKLSsKLSsgICAgICAgICAgdS52YWx1ZSA9IGI7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbZXN0aW1hdGVdLCAlW3hdXG4iCi0rICAgICAgICAgICAgICAgICAgIDogW2VzdGltYXRlXSAiPWYiICh5KSA6IFt4XSAiZiIgKGIpKTsKLSsKLSsgICAgICAgICAgLyogRm9sbG93aW5nIE11bGxlciBldCBhbCwgcGFnZSAxNjgsIGVxdWF0aW9uIDUuMjAuCi0rCi0rICAgICAgICAgICAgIGggZ29lcyB0byAxLygyKnNxcnQoYikpCi0rICAgICAgICAgICAgIGcgZ29lcyB0byBzcXJ0KGIpLgotKwotKyAgICAgICAgICAgICBXZSBuZWVkIHRocmVlIGl0ZXJhdGlvbnMgdG8gZ2V0IHdpdGhpbiAxdWxwLiAgKi8KLSsKLSsgICAgICAgICAgLyogSW5kaWNhdGUgdGhhdCB0aGVzZSBjYW4gYmUgcGVyZm9ybWVkIHByaW9yIHRvIHRoZSBicmFuY2guICBHQ0MKLSsgICAgICAgICAgICAgaW5zaXN0cyBvbiBzaW5raW5nIHRoZW0gYmVsb3cgdGhlIGJyYW5jaCwgaG93ZXZlcjsgaXQgc2VlbXMgbGlrZQotKyAgICAgICAgICAgICB0aGV5J2QgYmUgYmV0dGVyIGJlZm9yZSB0aGUgYnJhbmNoIHNvIHRoYXQgd2UgY2FuIGNvdmVyIGFueSBsYXRlbmN5Ci0rICAgICAgICAgICAgIGZyb20gc3RvcmluZyB0aGUgYXJndW1lbnQgYW5kIGxvYWRpbmcgaXRzIGhpZ2ggd29yZC4gIE9oIHdlbGwuICAqLwotKwotKyAgICAgICAgICBnID0gYiAqIHk7Ci0rICAgICAgICAgIGggPSAwLjUgKiB5OwotKwotKyAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSsgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotKyAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rCi0rI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgX19hc21fXyAoImZtYWRkICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICAgIF9fcjt9KQotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICAvKiBnIGlzIG5vdyArLy0gMXVscCwgb3IgZXhhY3RseSBlcXVhbCB0bywgdGhlIHNxdWFyZSByb290IG9mIGIuICAqLwotKwotKyAgICAgICAgICAvKiBGaW5hbCByZWZpbmVtZW50LiAgKi8KLSsgICAgICAgICAgZCA9IEZOTVNVQiAoZywgZywgYik7Ci0rCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiBGTUFERCAoZCwgaCwgZyk7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaCAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTAsMCArMSwxMDEgQEAKLSsvKiBTaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAotKyAgIHNxdWFyZSByb290LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSsjZWxzZQotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChiKQotKyAgICAgZmxvYXQgYjsKLSsjZW5kaWYKLSt7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotKyAgICB7Ci0rI2RlZmluZSBGTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIF9fYXNtX18gKCJmbXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgIF9fcjt9KQotKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGRvdWJsZSB5LCB4OwotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIC8qIENvbXB1dGUgeSA9IDEuNSAqIGIgLSBiLiAgVXNlcyBmZXdlciBjb25zdGFudHMgdGhhbiB5ID0gMC41ICogYi4gICovCi0rICAgICAgICAgIHkgPSBGTVNVQiAodGhyZWVoYWxmLCBiLCBiKTsKLSsKLSsgICAgICAgICAgLyogSW5pdGlhbCBlc3RpbWF0ZS4gICovCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbeF0sICVbYl1cbiIgOiBbeF0gIj1mIiAoeCkgOiBbYl0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEl0ZXJhdGUuICB4X3tuKzF9ID0geF9uICogKDEuNSAtIHkgKiAoeF9uICogeF9uKSkuICAqLwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKwotKyAgICAgICAgICAvKiBBbGwgZG9uZS4gICovCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiB4ICogYjsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgZWxzZSBpZiAoYiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50Ci0rICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KLSsjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCi0rICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKLSsKLSsgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OwotKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKLSsjZW5kaWYKLSsJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7Ci0rICAgICAgYiA9IGFfbmFuLnZhbHVlOwotKyAgICB9Ci0rICByZXR1cm4gZl93YXNoZiAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTAsMCArMSwxMzQgQEAKLSsvKiBEb3VibGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHR3bzEwOCA9IDMuMjQ1MTg1NTM2NTg0MjY3MjY5ZSszMjsKLStzdGF0aWMgY29uc3QgZmxvYXQgdHdvbTU0ID0gNS41NTExMTUxMjMxMjU3ODI3MDJlLTE3OwotK3N0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotKwotKy8qIFRoZSBtZXRob2QgaXMgYmFzZWQgb24gdGhlIGRlc2NyaXB0aW9ucyBpbjoKLSsKLSsgICBfVGhlIEhhbmRib29rIG9mIEZsb2F0aW5nLVBvaW50ZXIgQXJpdGhtZXRpY18gYnkgTXVsbGVyIGV0IGFsLiwgY2hhcHRlciA1OwotKyAgIF9JQS02NCBhbmQgRWxlbWVudGFyeSBGdW5jdGlvbnM6IFNwZWVkIGFuZCBQcmVjaXNpb25fIGJ5IE1hcmtzdGVpbiwgY2hhcHRlciA5Ci0rCi0rICAgV2UgZmluZCB0aGUgYWN0dWFsIHNxdWFyZSByb290IGFuZCBoYWxmIG9mIGl0cyByZWNpcHJvY2FsCi0rICAgc2ltdWx0YW5lb3VzbHkuICAqLwotKwotKyNpZmRlZiBfX1NURENfXwotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSsjZWxzZQotK2RvdWJsZQotK19faWVlZTc1NF9zcXJ0IChiKQotKyAgICAgZG91YmxlIGI7Ci0rI2VuZGlmCi0rewotKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSsgICAgewotKyAgICAgIGRvdWJsZSB5LCBnLCBoLCBkLCByOwotKyAgICAgIGllZWVfZG91YmxlX3NoYXBlX3R5cGUgdTsKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGZlbnZfdCBmZTsKLSsKLSsgICAgICAgICAgZmUgPSBmZWdldGVudl9yZWdpc3RlciAoKTsKLSsKLSsgICAgICAgICAgdS52YWx1ZSA9IGI7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbZXN0aW1hdGVdLCAlW3hdXG4iCi0rICAgICAgICAgICAgICAgICAgIDogW2VzdGltYXRlXSAiPWYiICh5KSA6IFt4XSAiZiIgKGIpKTsKLSsKLSsgICAgICAgICAgLyogRm9sbG93aW5nIE11bGxlciBldCBhbCwgcGFnZSAxNjgsIGVxdWF0aW9uIDUuMjAuCi0rCi0rICAgICAgICAgICAgIGggZ29lcyB0byAxLygyKnNxcnQoYikpCi0rICAgICAgICAgICAgIGcgZ29lcyB0byBzcXJ0KGIpLgotKwotKyAgICAgICAgICAgICBXZSBuZWVkIHRocmVlIGl0ZXJhdGlvbnMgdG8gZ2V0IHdpdGhpbiAxdWxwLiAgKi8KLSsKLSsgICAgICAgICAgLyogSW5kaWNhdGUgdGhhdCB0aGVzZSBjYW4gYmUgcGVyZm9ybWVkIHByaW9yIHRvIHRoZSBicmFuY2guICBHQ0MKLSsgICAgICAgICAgICAgaW5zaXN0cyBvbiBzaW5raW5nIHRoZW0gYmVsb3cgdGhlIGJyYW5jaCwgaG93ZXZlcjsgaXQgc2VlbXMgbGlrZQotKyAgICAgICAgICAgICB0aGV5J2QgYmUgYmV0dGVyIGJlZm9yZSB0aGUgYnJhbmNoIHNvIHRoYXQgd2UgY2FuIGNvdmVyIGFueSBsYXRlbmN5Ci0rICAgICAgICAgICAgIGZyb20gc3RvcmluZyB0aGUgYXJndW1lbnQgYW5kIGxvYWRpbmcgaXRzIGhpZ2ggd29yZC4gIE9oIHdlbGwuICAqLwotKwotKyAgICAgICAgICBnID0gYiAqIHk7Ci0rICAgICAgICAgIGggPSAwLjUgKiB5OwotKwotKyAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSsgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotKyAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rCi0rI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgX19hc21fXyAoImZtYWRkICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAotKyAgICAgICAgICBfX3I7fSkKLSsjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgIF9fYXNtX18gKCJmbm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICAgIF9fcjt9KQotKwotKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKLSsgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKLSsgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKLSsKLSsgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7Ci0rICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7Ci0rICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7Ci0rCi0rICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOwotKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOwotKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOwotKwotKyAgICAgICAgICAvKiBnIGlzIG5vdyArLy0gMXVscCwgb3IgZXhhY3RseSBlcXVhbCB0bywgdGhlIHNxdWFyZSByb290IG9mIGIuICAqLwotKwotKyAgICAgICAgICAvKiBGaW5hbCByZWZpbmVtZW50LiAgKi8KLSsgICAgICAgICAgZCA9IEZOTVNVQiAoZywgZywgYik7Ci0rCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiBGTUFERCAoZCwgaCwgZyk7Ci0rICAgICAgICB9Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGIgPCAwKQotKyAgICB7Ci0rICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAotKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCi0rI2lmZGVmIEZFX0lOVkFMSURfU1FSVAotKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7Ci0rCi0rICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKLSsgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCi0rI2VuZGlmCi0rCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOwotKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKLSsgICAgfQotKyAgcmV0dXJuIGZfd2FzaCAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKLS0tLSAvZGV2L251bGwKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTAsMCArMSwxMDEgQEAKLSsvKiBTaW5nbGUtcHJlY2lzaW9uIGZsb2F0aW5nIHBvaW50IHNxdWFyZSByb290LgotKyAgIENvcHlyaWdodCAoQykgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgPG1hdGguaD4KLSsjaW5jbHVkZSA8bWF0aF9wcml2YXRlLmg+Ci0rI2luY2x1ZGUgPGZlbnZfbGliYy5oPgotKyNpbmNsdWRlIDxpbnR0eXBlcy5oPgotKwotKyNpbmNsdWRlIDxzeXNkZXAuaD4KLSsjaW5jbHVkZSA8bGRzb2RlZnMuaD4KLSsKLStzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfbmFuID0gey53b3JkID0gMHg3ZmMwMDAwMCB9OwotK3N0YXRpYyBjb25zdCBpZWVlX2Zsb2F0X3NoYXBlX3R5cGUgYV9pbmYgPSB7LndvcmQgPSAweDdmODAwMDAwIH07Ci0rc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSsKLSsvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46Ci0rCi0rICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKLSsgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQotKwotKyAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAotKyAgIHNxdWFyZSByb290LiAgKi8KLSsKLSsjaWZkZWYgX19TVERDX18KLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSsjZWxzZQotK2Zsb2F0Ci0rX19pZWVlNzU0X3NxcnRmIChiKQotKyAgICAgZmxvYXQgYjsKLSsjZW5kaWYKLSt7Ci0rICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotKyAgICB7Ci0rI2RlZmluZSBGTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAgIF9fYXNtX18gKCJmbXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKLSsgICAgICAgIF9fcjt9KQotKyNkZWZpbmUgRk5NU1VCKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0rICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICAgXAotKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCi0rICAgICAgICBfX3I7fSkKLSsKLSsgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiAhPSBhX2luZi52YWx1ZSwgMSkpCi0rICAgICAgICB7Ci0rICAgICAgICAgIGRvdWJsZSB5LCB4OwotKyAgICAgICAgICBmZW52X3QgZmU7Ci0rCi0rICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7Ci0rCi0rICAgICAgICAgIHJlbGF4X2ZlbnZfc3RhdGUgKCk7Ci0rCi0rICAgICAgICAgIC8qIENvbXB1dGUgeSA9IDEuNSAqIGIgLSBiLiAgVXNlcyBmZXdlciBjb25zdGFudHMgdGhhbiB5ID0gMC41ICogYi4gICovCi0rICAgICAgICAgIHkgPSBGTVNVQiAodGhyZWVoYWxmLCBiLCBiKTsKLSsKLSsgICAgICAgICAgLyogSW5pdGlhbCBlc3RpbWF0ZS4gICovCi0rICAgICAgICAgIF9fYXNtX18gKCJmcnNxcnRlICVbeF0sICVbYl1cbiIgOiBbeF0gIj1mIiAoeCkgOiBbYl0gImYiIChiKSk7Ci0rCi0rICAgICAgICAgIC8qIEl0ZXJhdGUuICB4X3tuKzF9ID0geF9uICogKDEuNSAtIHkgKiAoeF9uICogeF9uKSkuICAqLwotKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7Ci0rICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKLSsgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOwotKwotKyAgICAgICAgICAvKiBBbGwgZG9uZS4gICovCi0rICAgICAgICAgIGZlc2V0ZW52X3JlZ2lzdGVyIChmZSk7Ci0rICAgICAgICAgIHJldHVybiB4ICogYjsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgZWxzZSBpZiAoYiA8IDApCi0rICAgIHsKLSsgICAgICAvKiBGb3Igc29tZSByZWFzb24sIHNvbWUgUG93ZXJQQzMyIHByb2Nlc3NvcnMgZG9uJ3QgaW1wbGVtZW50Ci0rICAgICAgICAgRkVfSU5WQUxJRF9TUVJULiAgKi8KLSsjaWZkZWYgRkVfSU5WQUxJRF9TUVJUCi0rICAgICAgZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRF9TUVJUKTsKLSsKLSsgICAgICBmZW52X3VuaW9uX3QgdSA9IHsgLmZlbnYgPSBmZWdldGVudl9yZWdpc3RlciAoKSB9OwotKyAgICAgIGlmICgodS5sICYgRkVfSU5WQUxJRCkgPT0gMCkKLSsjZW5kaWYKLSsJZmVyYWlzZWV4Y2VwdCAoRkVfSU5WQUxJRCk7Ci0rICAgICAgYiA9IGFfbmFuLnZhbHVlOwotKyAgICB9Ci0rICByZXR1cm4gZl93YXNoZiAoYik7Ci0rfQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uYjEwM2I0ZGVhNQotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcwotQEAgLTAsMCArMSBAQAotK3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uNjRkYjE3ZmFkYQotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzCi1AQCAtMCwwICsxLDIgQEAKLSsjIGUzMDBjMyBpcyBhIHZhcmlhbnQgb2YgNjAzZSBzbyB1c2UgdGhlIHNhbWUgb3B0aW1pemF0aW9ucyBmb3Igc3FydAotK3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1Ci1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9JbXBsaWVzCi1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uN2VhYzVmY2YwMgotLS0tIC9kZXYvbnVsbAotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9JbXBsaWVzCi1AQCAtMCwwICsxIEBACi0rcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4yNjRiMmE3NzAwCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcwotQEAgLTAsMCArMSBAQAotK3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi5hMjU5MzQ0NjdiCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcwotQEAgLTAsMCArMSBAQAotK3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi5hN2JjODU0YmU4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcwotQEAgLTAsMCArMSBAQAotK3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4wNGZmOGNjMTgxCi0tLS0gL2Rldi9udWxsCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcwotQEAgLTAsMCArMSBAQAotK3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdQotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA2LW5hdGl2ZXNkay1nbGliYy1BbGxvdy02NC1iaXQtYXRvbWljcy1mb3IteDg2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiOGI2YzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDYtbmF0aXZlc2RrLWdsaWJjLUFsbG93LTY0LWJpdC1hdG9taWNzLWZvci14ODYucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSBhNzUyODU3Y2MzNDJlZTUxMzZjOWE1OTMwMzdiNmVlNmZmOGFmOGVlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMzEgRGVjIDIwMTUgMTQ6MzU6MzUgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbmF0aXZlc2RrLWdsaWJjOiBBbGxvdyA2NCBiaXQgYXRvbWljcyBmb3IgeDg2CisKK1RoZSBmaXggY29uc2lzdCBvZiBhbGxvd2luZyA2NGJpdCBhdG9taWMgb3BzIGZvciB4ODYuCitUaGlzIHNob3VsZCBiZSBzYWZlIGZvciBpNTg2IGFuZCBuZXdlciBDUFVzLgorSXQgYWxzbyBtYWtlcyB0aGUgc3luY2hyb25pemF0aW9uIG1vcmUgZWZmaWNpZW50LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy94ODYvYXRvbWljLW1hY2hpbmUuaCB8IDMgKy0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy94ODYvYXRvbWljLW1hY2hpbmUuaCBiL3N5c2RlcHMveDg2L2F0b21pYy1tYWNoaW5lLmgKK2luZGV4IGJiNDk2NDgzNzQuLmFhMDhkM2MwYTcgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3g4Ni9hdG9taWMtbWFjaGluZS5oCisrKysgYi9zeXNkZXBzL3g4Ni9hdG9taWMtbWFjaGluZS5oCitAQCAtNTgsMTUgKzU4LDE0IEBAIHR5cGVkZWYgdWludG1heF90IHVhdG9taWNfbWF4X3Q7CisgI2VuZGlmCisgCisgI2RlZmluZSBVU0VfQVRPTUlDX0NPTVBJTEVSX0JVSUxUSU5TCTEKKysjIGRlZmluZSBfX0hBVkVfNjRCX0FUT01JQ1MJCTEKKyAKKyAjaWZkZWYgX194ODZfNjRfXworLSMgZGVmaW5lIF9fSEFWRV82NEJfQVRPTUlDUwkJMQorICMgZGVmaW5lIFNQX1JFRwkJCQkicnNwIgorICMgZGVmaW5lIFNFR19SRUcJCQkiZnMiCisgIyBkZWZpbmUgQlJfQ09OU1RSQUlOVAkJCSJxIgorICMgZGVmaW5lIElCUl9DT05TVFJBSU5UCQkJImlxIgorICNlbHNlCistIyBkZWZpbmUgX19IQVZFXzY0Ql9BVE9NSUNTCQkwCisgIyBkZWZpbmUgU1BfUkVHCQkJCSJlc3AiCisgIyBkZWZpbmUgU0VHX1JFRwkJCSJncyIKKyAjIGRlZmluZSBCUl9DT05TVFJBSU5UCQkJInIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctbmF0aXZlc2RrLWdsaWJjLU1ha2UtcmVsb2NhdGFibGUtaW5zdGFsbC1mb3ItbG9jYWxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNy1uYXRpdmVzZGstZ2xpYmMtTWFrZS1yZWxvY2F0YWJsZS1pbnN0YWxsLWZvci1sb2NhbGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3Y2QxN2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctbmF0aXZlc2RrLWdsaWJjLU1ha2UtcmVsb2NhdGFibGUtaW5zdGFsbC1mb3ItbG9jYWxlcy5wYXRjaApAQCAtMCwwICsxLDk5IEBACitGcm9tIDNkZjkxZDFkOGI5YzdhMDFiM2VmODEzM2M0ZjliOTc2NDIyN2Q1ODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAzIEF1ZyAyMDE4IDA5OjU1OjEyIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIG5hdGl2ZXNkay1nbGliYzogTWFrZSByZWxvY2F0YWJsZSBpbnN0YWxsIGZvciBsb2NhbGVzCisKK1RoZSBnbGliYyBsb2NhbGUgcGF0aCBpcyBoYXJkLWNvZGVkIHRvIHRoZSBpbnN0YWxsIHByZWZpeCwgYnV0IGluIFNES3Mgd2UgbmVlZAordG8gYmUgYWJsZSB0byByZWxvY2F0ZSB0aGUgYmluYXJpZXMuICBFeHBhbmQgdGhlIHN0cmluZ3MgdG8gNEsgYW5kIHB1dCB0aGVtIGluIGEKK21hZ2ljIHNlZ21lbnQgdGhhdCB3ZSBjYW4gcmVsb2NhdGUgYXQgaW5zdGFsbCB0aW1lLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgKE9FLXNwZWNpZmljKQorCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxvY2FsZS9maW5kbG9jYWxlLmMgIHwgNCArKy0tCisgbG9jYWxlL2xvYWRhcmNoaXZlLmMgfCAyICstCisgbG9jYWxlL2xvY2FsZWluZm8uaCAgfCAyICstCisgMyBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK0luZGV4OiBnaXQvbG9jYWxlL2ZpbmRsb2NhbGUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2xvY2FsZS9maW5kbG9jYWxlLmMKKysrKyBnaXQvbG9jYWxlL2ZpbmRsb2NhbGUuYworQEAgLTU2LDcgKzU2LDcgQEAgc3RydWN0IF9fbG9jYWxlX2RhdGEgKmNvbnN0IF9ubF9DW10gYXR0cgorICAgIHdoaWNoIGFyZSBzb21laG93IGFkZHJlc3NlZC4gICovCisgc3RydWN0IGxvYWRlZF9sMTBuZmlsZSAqX25sX2xvY2FsZV9maWxlX2xpc3RbX19MQ19MQVNUXTsKKyAKKy1jb25zdCBjaGFyIF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoW10gYXR0cmlidXRlX2hpZGRlbiA9IENPTVBMT0NBTEVESVI7CisrY2hhciBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aFs0MDk2XSBhdHRyaWJ1dGVfaGlkZGVuIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IENPTVBMT0NBTEVESVI7CisgCisgLyogQ2hlY2tzIGlmIHRoZSBuYW1lIGlzIGFjdHVhbGx5IHByZXNlbnQsIHRoYXQgaXMsIG5vdCBOVUxMIGFuZCBub3QKKyAgICBlbXB0eS4gICovCitAQCAtMTY2LDcgKzE2Niw3IEBAIF9ubF9maW5kX2xvY2FsZSAoY29uc3QgY2hhciAqbG9jYWxlX3BhdGgKKyAKKyAgICAgICAvKiBOb3RoaW5nIGluIHRoZSBhcmNoaXZlLiAgU2V0IHRoZSBkZWZhdWx0IHBhdGggdG8gc2VhcmNoIGJlbG93LiAgKi8KKyAgICAgICBsb2NhbGVfcGF0aCA9IF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoOworLSAgICAgIGxvY2FsZV9wYXRoX2xlbiA9IHNpemVvZiBfbmxfZGVmYXVsdF9sb2NhbGVfcGF0aDsKKysgICAgICBsb2NhbGVfcGF0aF9sZW4gPSBzdHJsZW4obG9jYWxlX3BhdGgpICsgMTsKKyAgICAgfQorICAgZWxzZQorICAgICAvKiBXZSByZWFsbHkgaGF2ZSB0byBsb2FkIHNvbWUgZGF0YS4gIEZpcnN0IHNlZSB3aGV0aGVyIHRoZSBuYW1lIGlzCitJbmRleDogZ2l0L2xvY2FsZS9sb2FkYXJjaGl2ZS5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvbG9jYWxlL2xvYWRhcmNoaXZlLmMKKysrKyBnaXQvbG9jYWxlL2xvYWRhcmNoaXZlLmMKK0BAIC00Miw3ICs0Miw3IEBACisgCisgCisgLyogTmFtZSBvZiB0aGUgbG9jYWxlIGFyY2hpdmUgZmlsZS4gICovCistc3RhdGljIGNvbnN0IGNoYXIgYXJjaGZuYW1lW10gPSBDT01QTE9DQUxFRElSICIvbG9jYWxlLWFyY2hpdmUiOworK3N0YXRpYyBjb25zdCBjaGFyIGFyY2hmbmFtZVs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBDT01QTE9DQUxFRElSICIvbG9jYWxlLWFyY2hpdmUiOworIAorIC8qIFNpemUgb2YgaW5pdGlhbCBtYXBwaW5nIHdpbmRvdywgb3B0aW1hbCBpZiBsYXJnZSBlbm91Z2ggdG8KKyAgICBjb3ZlciB0aGUgaGVhZGVyIHBsdXMgdGhlIGluaXRpYWwgbG9jYWxlLiAgKi8KK0luZGV4OiBnaXQvbG9jYWxlL2xvY2FsZWluZm8uaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2xvY2FsZS9sb2NhbGVpbmZvLmgKKysrKyBnaXQvbG9jYWxlL2xvY2FsZWluZm8uaAorQEAgLTMzMSw3ICszMzEsNyBAQCBfbmxfbG9va3VwX3dvcmQgKGxvY2FsZV90IGwsIGludCBjYXRlZ29yCisgfQorIAorIC8qIERlZmF1bHQgc2VhcmNoIHBhdGggaWYgbm8gTE9DUEFUSCBlbnZpcm9ubWVudCB2YXJpYWJsZS4gICovCistZXh0ZXJuIGNvbnN0IGNoYXIgX25sX2RlZmF1bHRfbG9jYWxlX3BhdGhbXSBhdHRyaWJ1dGVfaGlkZGVuOworK2V4dGVybiBjaGFyIF9ubF9kZWZhdWx0X2xvY2FsZV9wYXRoWzQwOTZdIGF0dHJpYnV0ZV9oaWRkZW47CisgCisgLyogTG9hZCB0aGUgbG9jYWxlIGRhdGEgZm9yIENBVEVHT1JZIGZyb20gdGhlIGZpbGUgc3BlY2lmaWVkIGJ5ICpOQU1FLgorICAgIElmICpOQU1FIGlzICIiLCB1c2UgZW52aXJvbm1lbnQgdmFyaWFibGVzIGFzIHNwZWNpZmllZCBieSBQT1NJWCwgYW5kCitJbmRleDogZ2l0L2xvY2FsZS9wcm9ncmFtcy9sb2NhbGUuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGUuYworKysrIGdpdC9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlLmMKK0BAIC02MzIsNiArNjMyLDcgQEAgbmFtZWVudGNtcCAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYgorIAkJICAoKGNvbnN0IHN0cnVjdCBuYW1lZW50ICopIGIpLT5uYW1lKTsKKyB9CisgCisrc3RhdGljIGNoYXIgX3dyaXRlX2FyY2hpdmVfbG9jYWxlc19wYXRoWzQwOTZdIGF0dHJpYnV0ZV9oaWRkZW4gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gQVJDSElWRV9OQU1FOworIAorIHN0YXRpYyBpbnQKKyB3cml0ZV9hcmNoaXZlX2xvY2FsZXMgKHZvaWQgKiphbGxfZGF0YXAsIGNoYXIgKmxpbmVidWYpCitAQCAtNjQ1LDcgKzY0Niw3IEBAIHdyaXRlX2FyY2hpdmVfbG9jYWxlcyAodm9pZCAqKmFsbF9kYXRhcCwKKyAgIGludCBmZCwgcmV0ID0gMDsKKyAgIHVpbnQzMl90IGNudDsKKyAKKy0gIGZkID0gb3BlbjY0IChBUkNISVZFX05BTUUsIE9fUkRPTkxZKTsKKysgIGZkID0gb3BlbjY0IChfd3JpdGVfYXJjaGl2ZV9sb2NhbGVzX3BhdGgsIE9fUkRPTkxZKTsKKyAgIGlmIChmZCA8IDApCisgICAgIHJldHVybiAwOworIAorQEAgLTcwMCw4ICs3MDEsOCBAQCB3cml0ZV9hcmNoaXZlX2xvY2FsZXMgKHZvaWQgKiphbGxfZGF0YXAsCisgCSAgaWYgKGNudCkKKyAJICAgIHB1dGNoYXJfdW5sb2NrZWQgKCdcbicpOworIAorLQkgIHByaW50ZiAoImxvY2FsZTogJS0xNS4xNXMgYXJjaGl2ZTogIiBBUkNISVZFX05BTUUgIlxuJXNcbiIsCistCQkgIG5hbWVzW2NudF0ubmFtZSwgbGluZWJ1Zik7CisrCSAgcHJpbnRmICgibG9jYWxlOiAlLTE1LjE1cyBhcmNoaXZlOiAlc1xuJXNcbiIsCisrCQkgIG5hbWVzW2NudF0ubmFtZSwgX3dyaXRlX2FyY2hpdmVfbG9jYWxlc19wYXRoLCBsaW5lYnVmKTsKKyAKKyAJICBsb2NyZWMgPSAoc3RydWN0IGxvY3JlY2VudCAqKSAoYWRkciArIG5hbWVzW2NudF0ubG9jcmVjX29mZnNldCk7CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDctcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNy1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhZTZmYjI2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwNy1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSBkYzcxNWY2YzcwZDAxZTljM2IzMWMxODI1ZmE1YmM0NDc5NjdjODQ3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MTE6MjIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8yOF0gcmVhZGxpYjogQWRkIE9FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUyB0byBrbm93bgotIG5hbWVzCi0KLVRoaXMgYm9sdHMgaW4gYSBob29rIGZvciBPRSB0byBwYXNzIGl0cyBvd24gdmVyc2lvbiBvZiBpbnRlcnByZXRlcgotbmFtZXMgaW50byBnbGliYyBlc3BlY2lhbGx5IGZvciBtdWx0aWxpYiBjYXNlLCB3aGVyZSBpdCBkaWZmZXJzIGZyb20gYW55Ci1vdGhlciBkaXN0cm9zCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IExpYW5oYW8gTHUgPGxpYW5oYW8ubHVAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGVsZi9yZWFkbGliLmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2VsZi9yZWFkbGliLmMgYi9lbGYvcmVhZGxpYi5jCi1pbmRleCBjOTc0M2U2NjkyLi42MzA3ZjkxOGZjIDEwMDY0NAotLS0tIGEvZWxmL3JlYWRsaWIuYwotKysrIGIvZWxmL3JlYWRsaWIuYwotQEAgLTUxLDYgKzUxLDcgQEAgc3RhdGljIHN0cnVjdCBrbm93bl9uYW1lcyBpbnRlcnByZXRlcnNbXSA9Ci0gI2lmZGVmIFNZU0RFUF9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUwotICAgU1lTREVQX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTCi0gI2VuZGlmCi0rICBPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMKLSB9OwotIAotIHN0YXRpYyBzdHJ1Y3Qga25vd25fbmFtZXMga25vd25fbGlic1tdID0KLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LWZzbC1lNTAwLWU1NTAwLWU2NTAwLTYwM2UtZnNxcnQtaW1wbGVtZW50YXRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2RhYzMyNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoCkBAIC0wLDAgKzEsMTU4MSBAQAorRnJvbSA2MWI2Yzk3Mzc4OTdjNTgyOGVmNGI0MDY5OWVlMGE3NGM1NzAwMzRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MDE6NTAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZnNsIGU1MDAvZTU1MDAvZTY1MDAvNjAzZSBmc3FydCBpbXBsZW1lbnRhdGlvbgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEVkbWFyIFdpZW5za29za2kgPGVkbWFyQGZyZWVzY2FsZS5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyAgIHwgMTM0ICsrKysrKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jICB8IDEwMSArKysrKysrKysrKysrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jIHwgMTM0ICsrKysrKysrKysrKysrKysrKworIC4uLi9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyAgICB8IDEwMSArKysrKysrKysrKysrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgIHwgMTM0ICsrKysrKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyB8IDEwMSArKysrKysrKysrKysrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgIHwgMTM0ICsrKysrKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyB8IDEwMSArKysrKysrKysrKysrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgIHwgMTM0ICsrKysrKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyB8IDEwMSArKysrKysrKysrKysrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgIHwgMTM0ICsrKysrKysrKysrKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyB8IDEwMSArKysrKysrKysrKysrCisgLi4uL2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMgIHwgICAxICsKKyAuLi4vcG93ZXJwYy9wb3dlcnBjMzIvZTMwMGMzL2ZwdS9JbXBsaWVzICAgICAgfCAgIDIgKworIC4uLi9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L0ltcGxpZXMgICAgICB8ICAgMSArCisgLi4uL2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzIHwgICAxICsKKyAuLi4vbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMgfCAgIDEgKworIC4uLi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcyB8ICAgMSArCisgLi4uL2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzIHwgICAxICsKKyAxOSBmaWxlcyBjaGFuZ2VkLCAxNDE4IGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcworIGNyZWF0ZSBtb2RlIDEwMDY0NCBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lMzAwYzMvZnB1L0ltcGxpZXMKKyBjcmVhdGUgbW9kZSAxMDA2NDQgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9JbXBsaWVzCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjcxZTUxNmQxYzgKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKK0BAIC0wLDAgKzEsMTM0IEBACisrLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Cisrc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKKytzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKysKKysvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46CisrCisrICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKKysgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQorKworKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAorKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKysKKysjaWZkZWYgX19TVERDX18KKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrI2Vsc2UKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoYikKKysgICAgIGRvdWJsZSBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKKysgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7CisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBmZW52X3QgZmU7CisrCisrICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7CisrCisrICAgICAgICAgIHUudmFsdWUgPSBiOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgorKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7CisrCisrICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgorKworKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQorKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KKysKKysgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCisrCisrICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCisrICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKKysgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQorKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KKysKKysgICAgICAgICAgZyA9IGIgKiB5OworKyAgICAgICAgICBoID0gMC41ICogeTsKKysKKysgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisrICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKysgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKworKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgICBfX3I7fSkKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KKysKKysgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCisrICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOworKworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2ggKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjZmYTA2N2FiZgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKK0BAIC0wLDAgKzEsMTAxIEBACisrLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKKysgICBzcXVhcmUgcm9vdC4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrI2Vsc2UKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoYikKKysgICAgIGZsb2F0IGI7CisrI2VuZGlmCisreworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKysgICAgeworKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICBfX3I7fSkKKysjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBkb3VibGUgeSwgeDsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLworKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7CisrCisrICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysKKysgICAgICAgICAgLyogQWxsIGRvbmUuICAqLworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4geCAqIGI7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKGIgPCAwKQorKyAgICB7CisrICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAorKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCisrI2lmZGVmIEZFX0lOVkFMSURfU1FSVAorKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7CisrCisrICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKKysgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCisrI2VuZGlmCisrCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOworKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKKysgICAgfQorKyAgcmV0dXJuIGZfd2FzaGYgKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi43MWU1MTZkMWM4CistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKK0BAIC0wLDAgKzEsMTM0IEBACisrLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Cisrc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKKytzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKysKKysvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46CisrCisrICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKKysgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQorKworKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAorKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKysKKysjaWZkZWYgX19TVERDX18KKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrI2Vsc2UKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoYikKKysgICAgIGRvdWJsZSBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKKysgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7CisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBmZW52X3QgZmU7CisrCisrICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7CisrCisrICAgICAgICAgIHUudmFsdWUgPSBiOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgorKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7CisrCisrICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgorKworKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQorKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KKysKKysgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCisrCisrICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCisrICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKKysgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQorKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KKysKKysgICAgICAgICAgZyA9IGIgKiB5OworKyAgICAgICAgICBoID0gMC41ICogeTsKKysKKysgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisrICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKysgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKworKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgICBfX3I7fSkKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KKysKKysgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCisrICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOworKworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2ggKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjI2ZmEwNjdhYmYKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKK0BAIC0wLDAgKzEsMTAxIEBACisrLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKKysgICBzcXVhcmUgcm9vdC4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrI2Vsc2UKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoYikKKysgICAgIGZsb2F0IGI7CisrI2VuZGlmCisreworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKysgICAgeworKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICBfX3I7fSkKKysjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBkb3VibGUgeSwgeDsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLworKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7CisrCisrICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysKKysgICAgICAgICAgLyogQWxsIGRvbmUuICAqLworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4geCAqIGI7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKGIgPCAwKQorKyAgICB7CisrICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAorKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCisrI2lmZGVmIEZFX0lOVkFMSURfU1FSVAorKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7CisrCisrICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKKysgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCisrI2VuZGlmCisrCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOworKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKKysgICAgfQorKyAgcmV0dXJuIGZfd2FzaGYgKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKK0BAIC0wLDAgKzEsMTM0IEBACisrLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Cisrc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKKytzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKysKKysvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46CisrCisrICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKKysgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQorKworKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAorKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKysKKysjaWZkZWYgX19TVERDX18KKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrI2Vsc2UKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoYikKKysgICAgIGRvdWJsZSBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKKysgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7CisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBmZW52X3QgZmU7CisrCisrICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7CisrCisrICAgICAgICAgIHUudmFsdWUgPSBiOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgorKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7CisrCisrICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgorKworKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQorKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KKysKKysgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCisrCisrICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCisrICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKKysgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQorKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KKysKKysgICAgICAgICAgZyA9IGIgKiB5OworKyAgICAgICAgICBoID0gMC41ICogeTsKKysKKysgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisrICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKysgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKworKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgICBfX3I7fSkKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KKysKKysgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCisrICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOworKworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2ggKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC0wLDAgKzEsMTAxIEBACisrLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKKysgICBzcXVhcmUgcm9vdC4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrI2Vsc2UKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoYikKKysgICAgIGZsb2F0IGI7CisrI2VuZGlmCisreworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKysgICAgeworKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICBfX3I7fSkKKysjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBkb3VibGUgeSwgeDsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLworKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7CisrCisrICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysKKysgICAgICAgICAgLyogQWxsIGRvbmUuICAqLworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4geCAqIGI7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKGIgPCAwKQorKyAgICB7CisrICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAorKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCisrI2lmZGVmIEZFX0lOVkFMSURfU1FSVAorKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7CisrCisrICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKKysgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCisrI2VuZGlmCisrCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOworKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKKysgICAgfQorKyAgcmV0dXJuIGZfd2FzaGYgKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKK0BAIC0wLDAgKzEsMTM0IEBACisrLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Cisrc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKKytzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKysKKysvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46CisrCisrICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKKysgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQorKworKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAorKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKysKKysjaWZkZWYgX19TVERDX18KKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrI2Vsc2UKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoYikKKysgICAgIGRvdWJsZSBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKKysgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7CisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBmZW52X3QgZmU7CisrCisrICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7CisrCisrICAgICAgICAgIHUudmFsdWUgPSBiOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgorKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7CisrCisrICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgorKworKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQorKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KKysKKysgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCisrCisrICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCisrICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKKysgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQorKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KKysKKysgICAgICAgICAgZyA9IGIgKiB5OworKyAgICAgICAgICBoID0gMC41ICogeTsKKysKKysgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisrICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKysgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKworKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgICBfX3I7fSkKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KKysKKysgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCisrICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOworKworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2ggKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC0wLDAgKzEsMTAxIEBACisrLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKKysgICBzcXVhcmUgcm9vdC4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrI2Vsc2UKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoYikKKysgICAgIGZsb2F0IGI7CisrI2VuZGlmCisreworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKysgICAgeworKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICBfX3I7fSkKKysjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBkb3VibGUgeSwgeDsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLworKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7CisrCisrICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysKKysgICAgICAgICAgLyogQWxsIGRvbmUuICAqLworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4geCAqIGI7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKGIgPCAwKQorKyAgICB7CisrICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAorKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCisrI2lmZGVmIEZFX0lOVkFMSURfU1FSVAorKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7CisrCisrICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKKysgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCisrI2VuZGlmCisrCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOworKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKKysgICAgfQorKyAgcmV0dXJuIGZfd2FzaGYgKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKK0BAIC0wLDAgKzEsMTM0IEBACisrLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Cisrc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKKytzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKysKKysvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46CisrCisrICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKKysgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQorKworKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAorKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKysKKysjaWZkZWYgX19TVERDX18KKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrI2Vsc2UKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoYikKKysgICAgIGRvdWJsZSBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKKysgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7CisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBmZW52X3QgZmU7CisrCisrICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7CisrCisrICAgICAgICAgIHUudmFsdWUgPSBiOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgorKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7CisrCisrICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgorKworKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQorKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KKysKKysgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCisrCisrICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCisrICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKKysgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQorKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KKysKKysgICAgICAgICAgZyA9IGIgKiB5OworKyAgICAgICAgICBoID0gMC41ICogeTsKKysKKysgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisrICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKysgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKworKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgICBfX3I7fSkKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KKysKKysgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCisrICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOworKworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2ggKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC0wLDAgKzEsMTAxIEBACisrLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKKysgICBzcXVhcmUgcm9vdC4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrI2Vsc2UKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoYikKKysgICAgIGZsb2F0IGI7CisrI2VuZGlmCisreworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKysgICAgeworKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICBfX3I7fSkKKysjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBkb3VibGUgeSwgeDsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLworKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7CisrCisrICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysKKysgICAgICAgICAgLyogQWxsIGRvbmUuICAqLworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4geCAqIGI7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKGIgPCAwKQorKyAgICB7CisrICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAorKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCisrI2lmZGVmIEZFX0lOVkFMSURfU1FSVAorKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7CisrCisrICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKKysgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCisrI2VuZGlmCisrCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOworKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKKysgICAgfQorKyAgcmV0dXJuIGZfd2FzaGYgKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uNzFlNTE2ZDFjOAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKK0BAIC0wLDAgKzEsMTM0IEBACisrLyogRG91YmxlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0d28xMDggPSAzLjI0NTE4NTUzNjU4NDI2NzI2OWUrMzI7Cisrc3RhdGljIGNvbnN0IGZsb2F0IHR3b201NCA9IDUuNTUxMTE1MTIzMTI1NzgyNzAyZS0xNzsKKytzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKysKKysvKiBUaGUgbWV0aG9kIGlzIGJhc2VkIG9uIHRoZSBkZXNjcmlwdGlvbnMgaW46CisrCisrICAgX1RoZSBIYW5kYm9vayBvZiBGbG9hdGluZy1Qb2ludGVyIEFyaXRobWV0aWNfIGJ5IE11bGxlciBldCBhbC4sIGNoYXB0ZXIgNTsKKysgICBfSUEtNjQgYW5kIEVsZW1lbnRhcnkgRnVuY3Rpb25zOiBTcGVlZCBhbmQgUHJlY2lzaW9uXyBieSBNYXJrc3RlaW4sIGNoYXB0ZXIgOQorKworKyAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAorKyAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKysKKysjaWZkZWYgX19TVERDX18KKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrI2Vsc2UKKytkb3VibGUKKytfX2llZWU3NTRfc3FydCAoYikKKysgICAgIGRvdWJsZSBiOworKyNlbmRpZgorK3sKKysgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisrICAgIHsKKysgICAgICBkb3VibGUgeSwgZywgaCwgZCwgcjsKKysgICAgICBpZWVlX2RvdWJsZV9zaGFwZV90eXBlIHU7CisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBmZW52X3QgZmU7CisrCisrICAgICAgICAgIGZlID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCk7CisrCisrICAgICAgICAgIHUudmFsdWUgPSBiOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW2VzdGltYXRlXSwgJVt4XVxuIgorKyAgICAgICAgICAgICAgICAgICA6IFtlc3RpbWF0ZV0gIj1mIiAoeSkgOiBbeF0gImYiIChiKSk7CisrCisrICAgICAgICAgIC8qIEZvbGxvd2luZyBNdWxsZXIgZXQgYWwsIHBhZ2UgMTY4LCBlcXVhdGlvbiA1LjIwLgorKworKyAgICAgICAgICAgICBoIGdvZXMgdG8gMS8oMipzcXJ0KGIpKQorKyAgICAgICAgICAgICBnIGdvZXMgdG8gc3FydChiKS4KKysKKysgICAgICAgICAgICAgV2UgbmVlZCB0aHJlZSBpdGVyYXRpb25zIHRvIGdldCB3aXRoaW4gMXVscC4gICovCisrCisrICAgICAgICAgIC8qIEluZGljYXRlIHRoYXQgdGhlc2UgY2FuIGJlIHBlcmZvcm1lZCBwcmlvciB0byB0aGUgYnJhbmNoLiAgR0NDCisrICAgICAgICAgICAgIGluc2lzdHMgb24gc2lua2luZyB0aGVtIGJlbG93IHRoZSBicmFuY2gsIGhvd2V2ZXI7IGl0IHNlZW1zIGxpa2UKKysgICAgICAgICAgICAgdGhleSdkIGJlIGJldHRlciBiZWZvcmUgdGhlIGJyYW5jaCBzbyB0aGF0IHdlIGNhbiBjb3ZlciBhbnkgbGF0ZW5jeQorKyAgICAgICAgICAgICBmcm9tIHN0b3JpbmcgdGhlIGFyZ3VtZW50IGFuZCBsb2FkaW5nIGl0cyBoaWdoIHdvcmQuICBPaCB3ZWxsLiAgKi8KKysKKysgICAgICAgICAgZyA9IGIgKiB5OworKyAgICAgICAgICBoID0gMC41ICogeTsKKysKKysgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisrICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKysgICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKworKyNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgIF9fYXNtX18gKCJmbWFkZCAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgICA6IFtyXSAiPWYiIChfX3IpIDogW2FdICJmIiAoYV8pLCBbY10gImYiIChjXyksIFtiXSAiZiIgKGJfKSk7IFwKKysgICAgICAgICAgX19yO30pCisrI2RlZmluZSBGTk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICBfX2FzbV9fICgiZm5tc3ViICVbcl0sICVbYV0sICVbY10sICVbYl1cbiIgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgICBfX3I7fSkKKysKKysgICAgICAgICAgciA9IEZOTVNVQiAoZywgaCwgaGFsZik7CisrICAgICAgICAgIGcgPSBGTUFERCAoZywgciwgZyk7CisrICAgICAgICAgIGggPSBGTUFERCAoaCwgciwgaCk7CisrCisrICAgICAgICAgIHIgPSBGTk1TVUIgKGcsIGgsIGhhbGYpOworKyAgICAgICAgICBnID0gRk1BREQgKGcsIHIsIGcpOworKyAgICAgICAgICBoID0gRk1BREQgKGgsIHIsIGgpOworKworKyAgICAgICAgICByID0gRk5NU1VCIChnLCBoLCBoYWxmKTsKKysgICAgICAgICAgZyA9IEZNQUREIChnLCByLCBnKTsKKysgICAgICAgICAgaCA9IEZNQUREIChoLCByLCBoKTsKKysKKysgICAgICAgICAgLyogZyBpcyBub3cgKy8tIDF1bHAsIG9yIGV4YWN0bHkgZXF1YWwgdG8sIHRoZSBzcXVhcmUgcm9vdCBvZiBiLiAgKi8KKysKKysgICAgICAgICAgLyogRmluYWwgcmVmaW5lbWVudC4gICovCisrICAgICAgICAgIGQgPSBGTk1TVUIgKGcsIGcsIGIpOworKworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4gRk1BREQgKGQsIGgsIGcpOworKyAgICAgICAgfQorKyAgICB9CisrICBlbHNlIGlmIChiIDwgMCkKKysgICAgeworKyAgICAgIC8qIEZvciBzb21lIHJlYXNvbiwgc29tZSBQb3dlclBDMzIgcHJvY2Vzc29ycyBkb24ndCBpbXBsZW1lbnQKKysgICAgICAgICBGRV9JTlZBTElEX1NRUlQuICAqLworKyNpZmRlZiBGRV9JTlZBTElEX1NRUlQKKysgICAgICBmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEX1NRUlQpOworKworKyAgICAgIGZlbnZfdW5pb25fdCB1ID0geyAuZmVudiA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpIH07CisrICAgICAgaWYgKCh1LmwgJiBGRV9JTlZBTElEKSA9PSAwKQorKyNlbmRpZgorKwlmZXJhaXNlZXhjZXB0IChGRV9JTlZBTElEKTsKKysgICAgICBiID0gYV9uYW4udmFsdWU7CisrICAgIH0KKysgIHJldHVybiBmX3dhc2ggKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi4yNmZhMDY3YWJmCistLS0gL2Rldi9udWxsCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC0wLDAgKzEsMTAxIEBACisrLyogU2luZ2xlLXByZWNpc2lvbiBmbG9hdGluZyBwb2ludCBzcXVhcmUgcm9vdC4KKysgICBDb3B5cmlnaHQgKEMpIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZQorKyAgIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BCisrICAgMDIxMTEtMTMwNyBVU0EuICAqLworKworKyNpbmNsdWRlIDxtYXRoLmg+CisrI2luY2x1ZGUgPG1hdGhfcHJpdmF0ZS5oPgorKyNpbmNsdWRlIDxmZW52X2xpYmMuaD4KKysjaW5jbHVkZSA8aW50dHlwZXMuaD4KKysKKysjaW5jbHVkZSA8c3lzZGVwLmg+CisrI2luY2x1ZGUgPGxkc29kZWZzLmg+CisrCisrc3RhdGljIGNvbnN0IGllZWVfZmxvYXRfc2hhcGVfdHlwZSBhX25hbiA9IHsud29yZCA9IDB4N2ZjMDAwMDAgfTsKKytzdGF0aWMgY29uc3QgaWVlZV9mbG9hdF9zaGFwZV90eXBlIGFfaW5mID0gey53b3JkID0gMHg3ZjgwMDAwMCB9OworK3N0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisrCisrLyogVGhlIG1ldGhvZCBpcyBiYXNlZCBvbiB0aGUgZGVzY3JpcHRpb25zIGluOgorKworKyAgIF9UaGUgSGFuZGJvb2sgb2YgRmxvYXRpbmctUG9pbnRlciBBcml0aG1ldGljXyBieSBNdWxsZXIgZXQgYWwuLCBjaGFwdGVyIDU7CisrICAgX0lBLTY0IGFuZCBFbGVtZW50YXJ5IEZ1bmN0aW9uczogU3BlZWQgYW5kIFByZWNpc2lvbl8gYnkgTWFya3N0ZWluLCBjaGFwdGVyIDkKKysKKysgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKKysgICBzcXVhcmUgcm9vdC4gICovCisrCisrI2lmZGVmIF9fU1REQ19fCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrI2Vsc2UKKytmbG9hdAorK19faWVlZTc1NF9zcXJ0ZiAoYikKKysgICAgIGZsb2F0IGI7CisrI2VuZGlmCisreworKyAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKysgICAgeworKyNkZWZpbmUgRk1TVUIoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgICBfX2FzbV9fICgiZm1zdWIgJVtyXSwgJVthXSwgJVtjXSwgJVtiXVxuIiAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgICAgICAgICAgOiBbcl0gIj1mIiAoX19yKSA6IFthXSAiZiIgKGFfKSwgW2NdICJmIiAoY18pLCBbYl0gImYiIChiXykpOyBcCisrICAgICAgICBfX3I7fSkKKysjZGVmaW5lIEZOTVNVQihhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgICAgICAgX19hc21fXyAoImZubXN1YiAlW3JdLCAlW2FdLCAlW2NdLCAlW2JdXG4iICAgICAgICAgICAgICAgICAgICAgIFwKKysgICAgICAgICAgICAgICAgIDogW3JdICI9ZiIgKF9fcikgOiBbYV0gImYiIChhXyksIFtjXSAiZiIgKGNfKSwgW2JdICJmIiAoYl8pKTsgXAorKyAgICAgICAgX19yO30pCisrCisrICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgIT0gYV9pbmYudmFsdWUsIDEpKQorKyAgICAgICAgeworKyAgICAgICAgICBkb3VibGUgeSwgeDsKKysgICAgICAgICAgZmVudl90IGZlOworKworKyAgICAgICAgICBmZSA9IGZlZ2V0ZW52X3JlZ2lzdGVyICgpOworKworKyAgICAgICAgICByZWxheF9mZW52X3N0YXRlICgpOworKworKyAgICAgICAgICAvKiBDb21wdXRlIHkgPSAxLjUgKiBiIC0gYi4gIFVzZXMgZmV3ZXIgY29uc3RhbnRzIHRoYW4geSA9IDAuNSAqIGIuICAqLworKyAgICAgICAgICB5ID0gRk1TVUIgKHRocmVlaGFsZiwgYiwgYik7CisrCisrICAgICAgICAgIC8qIEluaXRpYWwgZXN0aW1hdGUuICAqLworKyAgICAgICAgICBfX2FzbV9fICgiZnJzcXJ0ZSAlW3hdLCAlW2JdXG4iIDogW3hdICI9ZiIgKHgpIDogW2JdICJmIiAoYikpOworKworKyAgICAgICAgICAvKiBJdGVyYXRlLiAgeF97bisxfSA9IHhfbiAqICgxLjUgLSB5ICogKHhfbiAqIHhfbikpLiAgKi8KKysgICAgICAgICAgeCA9IHggKiBGTk1TVUIgKHksIHggKiB4LCB0aHJlZWhhbGYpOworKyAgICAgICAgICB4ID0geCAqIEZOTVNVQiAoeSwgeCAqIHgsIHRocmVlaGFsZik7CisrICAgICAgICAgIHggPSB4ICogRk5NU1VCICh5LCB4ICogeCwgdGhyZWVoYWxmKTsKKysKKysgICAgICAgICAgLyogQWxsIGRvbmUuICAqLworKyAgICAgICAgICBmZXNldGVudl9yZWdpc3RlciAoZmUpOworKyAgICAgICAgICByZXR1cm4geCAqIGI7CisrICAgICAgICB9CisrICAgIH0KKysgIGVsc2UgaWYgKGIgPCAwKQorKyAgICB7CisrICAgICAgLyogRm9yIHNvbWUgcmVhc29uLCBzb21lIFBvd2VyUEMzMiBwcm9jZXNzb3JzIGRvbid0IGltcGxlbWVudAorKyAgICAgICAgIEZFX0lOVkFMSURfU1FSVC4gICovCisrI2lmZGVmIEZFX0lOVkFMSURfU1FSVAorKyAgICAgIGZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSURfU1FSVCk7CisrCisrICAgICAgZmVudl91bmlvbl90IHUgPSB7IC5mZW52ID0gZmVnZXRlbnZfcmVnaXN0ZXIgKCkgfTsKKysgICAgICBpZiAoKHUubCAmIEZFX0lOVkFMSUQpID09IDApCisrI2VuZGlmCisrCWZlcmFpc2VleGNlcHQgKEZFX0lOVkFMSUQpOworKyAgICAgIGIgPSBhX25hbi52YWx1ZTsKKysgICAgfQorKyAgcmV0dXJuIGZfd2FzaGYgKGIpOworK30KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9JbXBsaWVzIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvSW1wbGllcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmIxMDNiNGRlYTUKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L0ltcGxpZXMKK0BAIC0wLDAgKzEgQEAKKytwb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjY0ZGIxN2ZhZGEKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2UzMDBjMy9mcHUvSW1wbGllcworQEAgLTAsMCArMSwyIEBACisrIyBlMzAwYzMgaXMgYSB2YXJpYW50IG9mIDYwM2Ugc28gdXNlIHRoZSBzYW1lIG9wdGltaXphdGlvbnMgZm9yIHNxcnQKKytwb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjdlYWM1ZmNmMDIKKy0tLSAvZGV2L251bGwKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvSW1wbGllcworQEAgLTAsMCArMSBAQAorK3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9JbXBsaWVzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMjY0YjJhNzcwMAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L0ltcGxpZXMKK0BAIC0wLDAgKzEgQEAKKytwb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9JbXBsaWVzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uYTI1OTM0NDY3YgorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L0ltcGxpZXMKK0BAIC0wLDAgKzEgQEAKKytwb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9JbXBsaWVzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uYTdiYzg1NGJlOAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L0ltcGxpZXMKK0BAIC0wLDAgKzEgQEAKKytwb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvSW1wbGllcyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9JbXBsaWVzCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMDRmZjhjYzE4MQorLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L0ltcGxpZXMKK0BAIC0wLDAgKzEgQEAKKytwb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOC1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiZWQyMDMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDA4LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMDggKzAsMCBAQAotRnJvbSA0MmEwMWM1NTc4NmE5NDcyOTM0ZTEyZTBiZjBjNDA5ODM1NzliNjA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MTU6MDcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwOC8yOF0gcHBjL3NxcnQ6IEZpeCB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3NxcnRfZmluaXRlJwotCi1vbiBwcGMgZml4ZXMgdGhlIGVycm9ycyBsaWtlIGJlbG93Ci18IC4vLmxpYnMvbGlicHVsc2Vjb3JlLTEuMS5zbzogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX19zcXJ0X2Zpbml0ZScKLXwgY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUNoYW5nZUxvZwotCi0yMDEyLTAxLTA2ICBLaGVtIFJhaiAgPHJhai5raGVtQGdtYWlsLmNvbT4KLQotICAgICAgICAqIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYzogQWRkIF9fKl9maW5pdGUgYWxpYXMuCi0gICAgICAgIFJlbW92ZSBjcnVmdC4KLSAgICAgICAgKiBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYzogRGl0dG8uCi0gICAgICAgICogc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYzogRGl0dG8uCi0gICAgICAgICogc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmM6IERpdHRvLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyAgICB8IDcgKy0tLS0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jICAgfCA3ICstLS0tLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgIHwgMSArCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyB8IDEgKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jICAgfCAxICsKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgIHwgMSArCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgICB8IDEgKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyAgfCAxICsKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyAgIHwgNyArLS0tLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jICB8IDcgKy0tLS0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jICAgfCAxICsKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgIHwgMSArCi0gMTIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMjQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYwotaW5kZXggNzFlNTE2ZDFjOC4uMTc5NWZkNmMzZSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKLUBAIC0zOSwxNCArMzksOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSAgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKLSAgICBzaW11bHRhbmVvdXNseS4gICovCi0gCi0tI2lmZGVmIF9fU1REQ19fCi0gZG91YmxlCi0gX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotLSNlbHNlCi0tZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGIpCi0tICAgICBkb3VibGUgYjsKLS0jZW5kaWYKLSB7Ci0gICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotICAgICB7Ci1AQCAtMTMyLDMgKzEyNiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi1pbmRleCAyNmZhMDY3YWJmLi5hOTE3ZjMxM2FiIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi1AQCAtMzcsMTQgKzM3LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSAgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKLSAgICBzcXVhcmUgcm9vdC4gICovCi0gCi0tI2lmZGVmIF9fU1REQ19fCi0gZmxvYXQKLSBfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0tI2Vsc2UKLS1mbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoYikKLS0gICAgIGZsb2F0IGI7Ci0tI2VuZGlmCi0gewotICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSAgICAgewotQEAgLTk5LDMgKzkzLDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLWluZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwotQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCi1AQCAtOTksMyArOTksNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggMjZmYTA2N2FiZi4uOWQxNzUxMjJhOCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtOTksMyArOTksNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IDcxZTUxNmQxYzguLmZjNGE3NDk5MGUgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0xMzIsMyArMTMyLDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggMjZmYTA2N2FiZi4uOWQxNzUxMjJhOCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtOTksMyArOTksNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2hmIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IDcxZTUxNmQxYzguLjE3OTVmZDZjM2UgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKLUBAIC0zOSwxNCArMzksOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSAgICBXZSBmaW5kIHRoZSBhY3R1YWwgc3F1YXJlIHJvb3QgYW5kIGhhbGYgb2YgaXRzIHJlY2lwcm9jYWwKLSAgICBzaW11bHRhbmVvdXNseS4gICovCi0gCi0tI2lmZGVmIF9fU1REQ19fCi0gZG91YmxlCi0gX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotLSNlbHNlCi0tZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGIpCi0tICAgICBkb3VibGUgYjsKLS0jZW5kaWYKLSB7Ci0gICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotICAgICB7Ci1AQCAtMTMyLDMgKzEyNiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDI2ZmEwNjdhYmYuLmE5MTdmMzEzYWIgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTM3LDE0ICszNyw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7Ci0gICAgV2UgZmluZCB0aGUgcmVjaXByb2NhbCBzcXVhcmUgcm9vdCBhbmQgdXNlIHRoYXQgdG8gY29tcHV0ZSB0aGUgYWN0dWFsCi0gICAgc3F1YXJlIHJvb3QuICAqLwotIAotLSNpZmRlZiBfX1NURENfXwotIGZsb2F0Ci0gX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotLSNlbHNlCi0tZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGIpCi0tICAgICBmbG9hdCBiOwotLSNlbmRpZgotIHsKLSAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0gICAgIHsKLUBAIC05OSwzICs5Myw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaCAoYik7Ci0gfQotK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLStzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4YTVkNmQ4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzg3ICswLDAgQEAKLUZyb20gYTBmY2I5MTM1YmM4YzJiOWQ4YTE2MWQxNjZiNmY5ZDU2ZDdhZjI0NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjE2OjM4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMjhdIF9faWVlZTc1NF9zcXJ0eyxmfSBhcmUgbm93IGlubGluZSBmdW5jdGlvbnMgYW5kIGNhbGwKLSBvdXQgX19zbG93IHZlcnNpb25zCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyAgICB8IDEyICsrKysrKysrKystLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jICAgfCAgOCArKysrKysrLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyAgfCAxNCArKysrKysrKysrKy0tLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMgfCAxMiArKysrKysrKysrLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMTQgKysrKysrKysrKystLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMgIHwgMTIgKysrKysrKysrKy0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgICB8ICA4ICsrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jICB8ICA4ICsrKysrKysrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgICB8IDEyICsrKysrKysrKystLQotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyAgfCAgOSArKysrKysrKy0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMTQgKysrKysrKysrKystLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgIHwgMTIgKysrKysrKysrKy0tCi0gMTIgZmlsZXMgY2hhbmdlZCwgMTE0IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMKLWluZGV4IDE3OTVmZDZjM2UuLmRhYTgzZjNmZTggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCi1AQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSAgICBzaW11bHRhbmVvdXNseS4gICovCi0gCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotIHsKLSAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCi0gICAgIHsKLUBAIC03Nyw3ICs3Nyw3IEBAIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSAKLSAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0gICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLS0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSAKLSAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTEyNiw0ICsxMjYsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0Ci0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQotK3sKLSsgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwotaW5kZXggYTkxN2YzMTNhYi4uYjgxMmNmMTcwNSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYwotQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSAgICBzcXVhcmUgcm9vdC4gICovCi0gCi0gZmxvYXQKLS1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0rX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCi0gewotICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSAgICAgewotQEAgLTkzLDQgKzkzLDEwIEBAIF9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLSsjdW5kZWYgX19pZWVlNzU0X3NxcnRmCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCi0rewotKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKLSt9Ci0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwotaW5kZXggZmM0YTc0OTkwZS4uNzAzOGE3MGI0NyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCi1AQCAtNDEsMTAgKzQxLDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotIAotICNpZmRlZiBfX1NURENfXwotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKLSAjZWxzZQotIGRvdWJsZQotLV9faWVlZTc1NF9zcXJ0IChiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGIpCi0gICAgICBkb3VibGUgYjsKLSAjZW5kaWYKLSB7Ci1AQCAtODMsNyArODMsNyBAQCBfX2llZWU3NTRfc3FydCAoYikKLSAKLSAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCi0gICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKLS0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSAKLSAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotQEAgLTEzMiw0ICsxMzIsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLSsKLSsjdW5kZWYgX19pZWVlNzU0X3NxcnQKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCi0rewotKyAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYwotaW5kZXggOWQxNzUxMjJhOC4uMTBkZTFmMGNjMyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKLUBAIC0zOSwxMCArMzksMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSAKLSAjaWZkZWYgX19TVERDX18KLSBmbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSAjZWxzZQotIGZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChiKQotK19fc2xvd19pZWVlNzU0X3NxcnRmIChiKQotICAgICAgZmxvYXQgYjsKLSAjZW5kaWYKLSB7Ci1AQCAtOTksNCArOTksMTIgQEAgX19pZWVlNzU0X3NxcnRmIChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKLSt7Ci0rICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggZmM0YTc0OTkwZS4uNzAzOGE3MGI0NyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSAKLSAjaWZkZWYgX19TVERDX18KLSBkb3VibGUKLS1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0gI2Vsc2UKLSBkb3VibGUKLS1fX2llZWU3NTRfc3FydCAoYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiKQotICAgICAgZG91YmxlIGI7Ci0gI2VuZGlmCi0gewotQEAgLTgzLDcgKzgzLDcgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gCi0gICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLwotICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCi0tICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSsgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0gCi0gI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0xMzIsNCArMTMyLDEyIEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0Ci0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQotK3sKLSsgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCA5ZDE3NTEyMmE4Li4xMGRlMWYwY2MzIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC0zOSwxMCArMzksMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSAKLSAjaWZkZWYgX19TVERDX18KLSBmbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSAjZWxzZQotIGZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChiKQotK19fc2xvd19pZWVlNzU0X3NxcnRmIChiKQotICAgICAgZmxvYXQgYjsKLSAjZW5kaWYKLSB7Ci1AQCAtOTksNCArOTksMTIgQEAgX19pZWVlNzU0X3NxcnRmIChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKLSt7Ci0rICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggZmM0YTc0OTkwZS4uMWMzNDI0NGJkOCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTEzMiw0ICsxMzIsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLSsKLSsjdW5kZWYgX19pZWVlNzU0X3NxcnQKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCi0rewotKyAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLWluZGV4IDlkMTc1MTIyYTguLjgxMjY1MzU1OGYgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYwotQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKLSAgICAgfQotICAgcmV0dXJuIGZfd2FzaGYgKGIpOwotIH0KLSsKLSsjdW5kZWYgX19pZWVlNzU0X3NxcnRmCi0rZmxvYXQKLStfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCi0rewotKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKLSt9Ci0rCi0gc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IDE3OTVmZDZjM2UuLjEzYTgxOTczZTMgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKLUBAIC00MCw3ICs0MCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OwotICAgIHNpbXVsdGFuZW91c2x5LiAgKi8KLSAKLSBkb3VibGUKLS1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0gewotICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKLSAgICAgewotQEAgLTc3LDcgKzc3LDcgQEAgX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotIAotICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotIAotICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1AQCAtMTI2LDQgKzEyNiwxMiBAQCBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0gICAgIH0KLSAgIHJldHVybiBmX3dhc2ggKGIpOwotIH0KLSsKLSsjdW5kZWYgX19pZWVlNzU0X3NxcnQKLStkb3VibGUKLStfX2llZWU3NTRfc3FydCAoZG91YmxlIHgpCi0rewotKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotaW5kZXggYTkxN2YzMTNhYi4uZmFlMmQ4MTIxMCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCi1AQCAtMzgsNyArMzgsNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OwotICAgIHNxdWFyZSByb290LiAgKi8KLSAKLSBmbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSB7Ci0gICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQotICAgICB7Ci1AQCAtOTMsNCArOTMsMTEgQEAgX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKLSt7Ci0rICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotaW5kZXggZmM0YTc0OTkwZS4uNzAzOGE3MGI0NyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYwotQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKLSAKLSAjaWZkZWYgX19TVERDX18KLSBkb3VibGUKLS1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0rX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCi0gI2Vsc2UKLSBkb3VibGUKLS1fX2llZWU3NTRfc3FydCAoYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiKQotICAgICAgZG91YmxlIGI7Ci0gI2VuZGlmCi0gewotQEAgLTgzLDcgKzgzLDcgQEAgX19pZWVlNzU0X3NxcnQgKGIpCi0gCi0gICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLwotICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCi0tICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKLSsgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0gCi0gI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAotICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLUBAIC0xMzIsNCArMTMyLDEyIEBAIF9faWVlZTc1NF9zcXJ0IChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoIChiKTsKLSB9Ci0rCi0rI3VuZGVmIF9faWVlZTc1NF9zcXJ0Ci0rZG91YmxlCi0rX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQotK3sKLSsgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7Ci0rfQotKwotIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCA5ZDE3NTEyMmE4Li4xMGRlMWYwY2MzIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC0zOSwxMCArMzksMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSAKLSAjaWZkZWYgX19TVERDX18KLSBmbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSAjZWxzZQotIGZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChiKQotK19fc2xvd19pZWVlNzU0X3NxcnRmIChiKQotICAgICAgZmxvYXQgYjsKLSAjZW5kaWYKLSB7Ci1AQCAtOTksNCArOTksMTIgQEAgX19pZWVlNzU0X3NxcnRmIChiKQotICAgICB9Ci0gICByZXR1cm4gZl93YXNoZiAoYik7Ci0gfQotKwotKyN1bmRlZiBfX2llZWU3NTRfc3FydGYKLStmbG9hdAotK19faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgeCkKLSt7Ci0rICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydGYgKHgpOwotK30KLSsKLSBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAwOS1yZWFkbGliLUFkZC1PRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMtdG8ta25vd24tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ1NmY5MWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMDktcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDEzYmViMWY0MjhlYzA2Nzc4NTkwYmY1MjZkNmU2NDFmNzNkNWNmNjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxMToyMiArMDAwMAorU3ViamVjdDogW1BBVENIXSByZWFkbGliOiBBZGQgT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTIHRvIGtub3duIG5hbWVzCisKK1RoaXMgYm9sdHMgaW4gYSBob29rIGZvciBPRSB0byBwYXNzIGl0cyBvd24gdmVyc2lvbiBvZiBpbnRlcnByZXRlcgorbmFtZXMgaW50byBnbGliYyBlc3BlY2lhbGx5IGZvciBtdWx0aWxpYiBjYXNlLCB3aGVyZSBpdCBkaWZmZXJzIGZyb20gYW55CitvdGhlciBkaXN0cm9zCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IExpYW5oYW8gTHUgPGxpYW5oYW8ubHVAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGVsZi9yZWFkbGliLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL2VsZi9yZWFkbGliLmMgYi9lbGYvcmVhZGxpYi5jCitpbmRleCA5OTRhNDQyNmExLi5iYWFiZjA5OWIxIDEwMDY0NAorLS0tIGEvZWxmL3JlYWRsaWIuYworKysrIGIvZWxmL3JlYWRsaWIuYworQEAgLTUxLDYgKzUxLDcgQEAgc3RhdGljIHN0cnVjdCBrbm93bl9uYW1lcyBpbnRlcnByZXRlcnNbXSA9CisgI2lmZGVmIFNZU0RFUF9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUworICAgU1lTREVQX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTCisgI2VuZGlmCisrICBPRUNPUkVfS05PV05fSU5URVJQUkVURVJfTkFNRVMKKyB9OworIAorIHN0YXRpYyBzdHJ1Y3Qga25vd25fbmFtZXMga25vd25fbGlic1tdID0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEwLVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExNDBhMTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEwLVF1b3RlLWZyb20tYnVnLTE0NDMtd2hpY2gtZXhwbGFpbnMtd2hhdC10aGUtcGF0Y2gtZG8ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1Gcm9tIDljMWYyMjI5YzQ4YzM3YjM4NjI4YzQ4NWVmMTZlMDFmNjc4MDE2MGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyMDowOSArMDAwMAotU3ViamVjdDogW1BBVENIIDEwLzI4XSBRdW90ZSBmcm9tIGJ1ZyAxNDQzIHdoaWNoIGV4cGxhaW5zIHdoYXQgdGhlIHBhdGNoIGRvZXMKLSA6Ci0KLSAgV2UgYnVpbGQgc29tZSByYW5kb20gcHJvZ3JhbSBhbmQgbGluayBpdCB3aXRoIC1sdXN0LiAgV2hlbiB3ZSBydW4gaXQsCi0gIGl0IGRpZXMgd2l0aCBhIFNJR1NFR1YgYmVmb3JlIHJlYWNoaW5nIG1haW4oKS4KLQotICBMaWJ1c3Quc28gZGVwZW5kcyBvbiBsaWJ1cmN1LWJwLnNvIGZyb20gdGhlIHVzZXJtb2RlLXJjdSBwYWNrYWdlLgotICBBbHRob3VnaCBsaWJ1c3Quc28gaXMgbm90IHByZWxpbmtlZCwgbGlidXJjdS1icC5zbyBJUyBwcmVsaW5rZWQ7IHRoaXMKLSAgaXMgY3JpdGljYWwuCi0KLSAgTGlidXN0LnNvIHVzZXMgYSBUTFMgLyBfX3RocmVhZCB2YXJpYWJsZSB0aGF0IGlzIGRlZmluZWQgaW4gbGlidXJjdS0KLSAgYnAuc28uICBUaGVyZSBhcmUgc3BlY2lhbCBBUk0tc3BlY2lmaWMgcmVsb2NhdGlvbiB0eXBlcyB0aGF0IGFsbG93IHR3bwotICBzaGFyZWQgbGlicmFyaWVzIHRvIHNoYXJlIHRocmVhZC1zcGVjaWZpYyBkYXRhLiAgVGhpcyBpcyBjcml0aWNhbCB0b28uCi0KLSAgT25lIG1vcmUgY3JpdGljYWwgaXNzdWU6IGFsdGhvdWdoIGxpYnVyY3UtYnAuc28gaXMgcHJlbGlua2VkLCB3ZSBjYW4ndAotICBsb2FkIGl0IGF0IGl0cyBwcmVsaW5rZWQgYWRkcmVzcywgYmVjYXVzZSB3ZSBhbHNvIGxpbmsgYWdhaW5zdAotICBsaWJydC5zbywgYW5kIGxpYnJ0LnNvIHVzZXMgdGhhdCBhZGRyZXNzLgotCi0gIFRoZSBkeW5hbWljIGxpbmtlciBpcyBmb3JjZWQgdG8gcmVsaW5rIGxpYnVyY3UtYnAuc28gYXQgYSBkaWZmZXJlbnQKLSAgYWRkcmVzcy4gIEluIHRoZSBjb3Vyc2Ugb2YgcmVsaW5raW5nLCBpdCBwcm9jZXNzZXMgdGhlIHNwZWNpYWwgQVJNCi0gIHJlbG9jYXRpb24gcmVjb3JkIG1lbnRpb25lZCBhYm92ZS4gIFRoZSBwcmVsaW5rZXIgaGFzIGFscmVhZHkgZmlsbGVkCi0gIGluIHRoZSBpbmZvcm1hdGlvbiwgd2hpY2ggaXMgYSBzaG9ydCBvZmZzZXQgaW50byBhIHRhYmxlIG9mIHRocmVhZC0KLSAgc3BlY2lmaWMgZGF0YSB0aGF0IGlzIGFsbG9jYXRlZCBwZXItdGhyZWFkIGZvciBlYWNoIGxpYnJhcnkgdGhhdCB1c2VzCi0gIFRMUy4gIEJlY2F1c2UgdGhlIG5vcm1hbCBiZWhhdmlvciBvZiBhIHJlbG9jYXRpb24gaXMgdG8gYWRkIHRoZSBzeW1ib2wKLSAgdmFsdWUgdG8gYW4gYWRkZW5kIHN0b3JlZCBhdCB0aGUgYWRkcmVzcyBiZWluZyByZWxvY2F0ZWQsIHdlIGVuZCB1cAotICBhZGRpbmcgdGhlIHNob3J0IG9mZnNldCB0byBpdHNlbGYsIGRvdWJsaW5nIGl0LgotCi0gIE5vdyB3ZSBoYXZlIGFuIGF3a3dhcmQgc2l0dWF0aW9uLiAgVGhlIGxpYnVzdC5zbyBsaWJyYXJ5IGRvZXNuJ3Qga25vdwotICBhYm91dCB0aGUgYWRkZW5kLCBzbyBpdHMgVExTIGRhdGEgZm9yIHRoaXMgZWxlbWVudCBpcyBjb3JyZWN0LiAgVGhlCi0gIGxpYnVyY3UtYnAuc28gbGlicmFyeSBoYXMgYSBkaWZmZXJlbnQgb2Zmc2V0IGZvciB0aGUgZWxlbWVudC4gIFdoZW4gd2UKLSAgZ28gdG8gaW5pdGlhbGl6ZSB0aGUgZWxlbWVudCBmb3IgdGhlIGZpcnN0IHRpbWUgaW4gbGlidXJjdS1icC5zbywgd2UKLSAgd3JpdGUgdGhlIGFkZHJlc3Mgb2YgdGhlIHJlc3VsdCBhdCB0aGUgZG91YmxlZCAoYnJva2VuKSBvZmZzZXQuCi0gIExhdGVyLCB3aGVuIHdlIHJlZmVyIHRvIHRoZSBhZGRyZXNzIGZyb20gbGlidXN0LnNvLCB3ZSBjaGVjayB0aGUgdmFsdWUKLSAgYXQgdGhlIGNvcnJlY3Qgb2Zmc2V0LCBidXQgaXQncyBOVUxMLCBzbyB3ZSBlYXQgaG90IFNJR1NFR1YuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWkgRGludSA8YW5kcmVpLmFkcmlhbnguZGludUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oIGIvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oCi1pbmRleCA3YTJmOWQ5Yjc4Li4zNmExZGQxODg4IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oCi0rKysgYi9zeXNkZXBzL2FybS9kbC1tYWNoaW5lLmgKLUBAIC01MTAsNyArNTEwLDcgQEAgZWxmX21hY2hpbmVfcmVsIChzdHJ1Y3QgbGlua19tYXAgKm1hcCwgY29uc3QgRWxmMzJfUmVsICpyZWxvYywKLSAKLSAJY2FzZSBSX0FSTV9UTFNfRFRQT0ZGMzI6Ci0gCSAgaWYgKHN5bSAhPSBOVUxMKQotLQkgICAgKnJlbG9jX2FkZHIgKz0gc3ltLT5zdF92YWx1ZTsKLSsJICAgICpyZWxvY19hZGRyID0gc3ltLT5zdF92YWx1ZTsKLSAJICBicmVhazsKLSAKLSAJY2FzZSBSX0FSTV9UTFNfVFBPRkYzMjoKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEwLXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDE0NDZhYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMC1wcGMtc3FydC1GaXgtdW5kZWZpbmVkLXJlZmVyZW5jZS10by1fX3NxcnRfZmluaXRlLnBhdGNoCkBAIC0wLDAgKzEsMjA1IEBACitGcm9tIDQ0ODNhODMwNzRhMzQwYTkyMWUzMTliODhkNzIxNjZmMThlMGRmMGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxNTowNyArMDAwMAorU3ViamVjdDogW1BBVENIXSBwcGMvc3FydDogRml4IHVuZGVmaW5lZCByZWZlcmVuY2UgdG8gYF9fc3FydF9maW5pdGUnCisKK29uIHBwYyBmaXhlcyB0aGUgZXJyb3JzIGxpa2UgYmVsb3cKK3wgLi8ubGlicy9saWJwdWxzZWNvcmUtMS4xLnNvOiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3NxcnRfZmluaXRlJworfCBjb2xsZWN0MjogbGQgcmV0dXJuZWQgMSBleGl0IHN0YXR1cworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworQ2hhbmdlTG9nCisKKzIwMTItMDEtMDYgIEtoZW0gUmFqICA8cmFqLmtoZW1AZ21haWwuY29tPgorCisgICAgICAgICogc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jOiBBZGQgX18qX2Zpbml0ZSBhbGlhcy4KKyAgICAgICAgUmVtb3ZlIGNydWZ0LgorICAgICAgICAqIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jOiBEaXR0by4KKyAgICAgICAgKiBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jOiBEaXR0by4KKyAgICAgICAgKiBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYzogRGl0dG8uCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jICAgIHwgNyArLS0tLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMgICB8IDcgKy0tLS0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyAgfCAxICsKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIHwgMSArCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgICB8IDEgKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyAgfCAxICsKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyAgIHwgMSArCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEgKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jICAgfCA3ICstLS0tLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgIHwgNyArLS0tLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgICB8IDEgKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyAgfCAxICsKKyAxMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCitpbmRleCA3MWU1MTZkMWM4Li4xNzk1ZmQ2YzNlIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYworQEAgLTM5LDE0ICszOSw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworICAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAorICAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKyAKKy0jaWZkZWYgX19TVERDX18KKyBkb3VibGUKKyBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCistI2Vsc2UKKy1kb3VibGUKKy1fX2llZWU3NTRfc3FydCAoYikKKy0gICAgIGRvdWJsZSBiOworLSNlbmRpZgorIHsKKyAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisgICAgIHsKK0BAIC0xMzIsMyArMTI2LDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDI2ZmEwNjdhYmYuLmE5MTdmMzEzYWIgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKK0BAIC0zNywxNCArMzcsOCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworICAgIFdlIGZpbmQgdGhlIHJlY2lwcm9jYWwgc3F1YXJlIHJvb3QgYW5kIHVzZSB0aGF0IHRvIGNvbXB1dGUgdGhlIGFjdHVhbAorICAgIHNxdWFyZSByb290LiAgKi8KKyAKKy0jaWZkZWYgX19TVERDX18KKyBmbG9hdAorIF9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKy0jZWxzZQorLWZsb2F0CistX19pZWVlNzU0X3NxcnRmIChiKQorLSAgICAgZmxvYXQgYjsKKy0jZW5kaWYKKyB7CisgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorICAgICB7CitAQCAtOTksMyArOTMsNCBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYworaW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydC5jCitAQCAtMTMyLDMgKzEzMiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYworaW5kZXggMjZmYTA2N2FiZi4uOWQxNzUxMjJhOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKK0BAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYworaW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYworQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitpbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworaW5kZXggNzFlNTE2ZDFjOC4uZmM0YTc0OTkwZSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworQEAgLTEzMiwzICsxMzIsNCBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitpbmRleCAyNmZhMDY3YWJmLi45ZDE3NTEyMmE4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC05OSwzICs5OSw0IEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0ZiwgX19zcXJ0Zl9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYworaW5kZXggNzFlNTE2ZDFjOC4uMTc5NWZkNmMzZSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYworQEAgLTM5LDE0ICszOSw4IEBAIHN0YXRpYyBjb25zdCBmbG9hdCBoYWxmID0gMC41OworICAgIFdlIGZpbmQgdGhlIGFjdHVhbCBzcXVhcmUgcm9vdCBhbmQgaGFsZiBvZiBpdHMgcmVjaXByb2NhbAorICAgIHNpbXVsdGFuZW91c2x5LiAgKi8KKyAKKy0jaWZkZWYgX19TVERDX18KKyBkb3VibGUKKyBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCistI2Vsc2UKKy1kb3VibGUKKy1fX2llZWU3NTRfc3FydCAoYikKKy0gICAgIGRvdWJsZSBiOworLSNlbmRpZgorIHsKKyAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisgICAgIHsKK0BAIC0xMzIsMyArMTI2LDQgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2ggKGIpOworIH0KKytzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYworaW5kZXggMjZmYTA2N2FiZi4uYTkxN2YzMTNhYiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMzcsMTQgKzM3LDggQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKyAgICBXZSBmaW5kIHRoZSByZWNpcHJvY2FsIHNxdWFyZSByb290IGFuZCB1c2UgdGhhdCB0byBjb21wdXRlIHRoZSBhY3R1YWwKKyAgICBzcXVhcmUgcm9vdC4gICovCisgCistI2lmZGVmIF9fU1REQ19fCisgZmxvYXQKKyBfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCistI2Vsc2UKKy1mbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoYikKKy0gICAgIGZsb2F0IGI7CistI2VuZGlmCisgeworICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKyAgICAgeworQEAgLTk5LDMgKzkzLDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCitpbmRleCA3MWU1MTZkMWM4Li5mYzRhNzQ5OTBlIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jCitAQCAtMTMyLDMgKzEzMiw0IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9Cisrc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDI2ZmEwNjdhYmYuLjlkMTc1MTIyYTggMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYworQEAgLTk5LDMgKzk5LDQgQEAgX19pZWVlNzU0X3NxcnRmIChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoZiAoYik7CisgfQorK3N0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLV9faWVlZTc1NF9zcXJ0LWYtYXJlLW5vdy1pbmxpbmUtZnVuY3Rpb25zLWFuZC1jYWxsLW8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDUxZjM3MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCkBAIC0wLDAgKzEsMzg0IEBACitGcm9tIDM0N2IyZTMxZDAxMGIwNGM0MmU3ODE1N2EwMjhhYTFkNThmZTBmNWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoxNjozOCArMDAwMAorU3ViamVjdDogW1BBVENIXSBfX2llZWU3NTRfc3FydHssZn0gYXJlIG5vdyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBjYWxsIG91dAorIF9fc2xvdyB2ZXJzaW9ucworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgICAgfCAxMiArKysrKysrKysrLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYyAgIHwgIDggKysrKysrKy0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgIHwgMTQgKysrKysrKysrKystLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jIHwgMTIgKysrKysrKysrKy0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMgICB8IDE0ICsrKysrKysrKysrLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEyICsrKysrKysrKystLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jICAgfCAgOCArKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyAgfCAgOCArKysrKysrKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jICAgfCAxMiArKysrKysrKysrLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgIHwgIDkgKysrKysrKystCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMgICB8IDE0ICsrKysrKysrKysrLS0tCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jICB8IDEyICsrKysrKysrKystLQorIDEyIGZpbGVzIGNoYW5nZWQsIDExNCBpbnNlcnRpb25zKCspLCAyMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydC5jCitpbmRleCAxNzk1ZmQ2YzNlLi5kYWE4M2YzZmU4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnQuYworQEAgLTQwLDcgKzQwLDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisgICAgc2ltdWx0YW5lb3VzbHkuICAqLworIAorIGRvdWJsZQorLV9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyB7CisgICBpZiAoX19idWlsdGluX2V4cGVjdCAoYiA+IDAsIDEpKQorICAgICB7CitAQCAtNzcsNyArNzcsNyBAQCBfX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisgCisgICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCistICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisgCisgI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0BAIC0xMjYsNCArMTI2LDEyIEBAIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydAorK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKKyt7CisrICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvNjAzZS9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKK2luZGV4IGE5MTdmMzEzYWIuLmI4MTJjZjE3MDUgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyLzYwM2UvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi82MDNlL2ZwdS9lX3NxcnRmLmMKK0BAIC0zOCw3ICszOCw3IEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisgICAgc3F1YXJlIHJvb3QuICAqLworIAorIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorIHsKKyAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisgICAgIHsKK0BAIC05Myw0ICs5MywxMCBAQCBfX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9CisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgorK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQorK3sKKysgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7CisrfQorIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKK2luZGV4IGZjNGE3NDk5MGUuLjcwMzhhNzBiNDcgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnQuYworQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKyAKKyAjaWZkZWYgX19TVERDX18KKyBkb3VibGUKKy1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisgI2Vsc2UKKyBkb3VibGUKKy1fX2llZWU3NTRfc3FydCAoYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiKQorICAgICAgZG91YmxlIGI7CisgI2VuZGlmCisgeworQEAgLTgzLDcgKzgzLDcgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgCisgICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCistICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisgCisgI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK0BAIC0xMzIsNCArMTMyLDEyIEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0CisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQorK3sKKysgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTAwbWMvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTUwMG1jL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDlkMTc1MTIyYTguLjEwZGUxZjBjYzMgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1MDBtYy9mcHUvZV9zcXJ0Zi5jCitAQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisgCisgI2lmZGVmIF9fU1REQ19fCisgZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisgI2Vsc2UKKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgIGZsb2F0IGI7CisgI2VuZGlmCisgeworQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnRmCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCisreworKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKK2luZGV4IGZjNGE3NDk5MGUuLjcwMzhhNzBiNDcgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U1NTAwL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0LmMKK0BAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisgCisgI2lmZGVmIF9fU1REQ19fCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorICNlbHNlCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoYikKKyAgICAgIGRvdWJsZSBiOworICNlbmRpZgorIHsKK0BAIC04Myw3ICs4Myw3IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorIAorICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KKyAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQorLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisrICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworIAorICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitAQCAtMTMyLDQgKzEzMiwxMiBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydAorK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKKyt7CisrICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYworaW5kZXggOWQxNzUxMjJhOC4uMTBkZTFmMGNjMyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTU1MDAvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNTUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisgCisgI2lmZGVmIF9fU1REQ19fCisgZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisgI2Vsc2UKKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgIGZsb2F0IGI7CisgI2VuZGlmCisgeworQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnRmCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCisreworKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKK2luZGV4IGZjNGE3NDk5MGUuLjFjMzQyNDRiZDggMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKK0BAIC0xMzIsNCArMTMyLDEyIEBAIF9faWVlZTc1NF9zcXJ0IChiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0CisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQorK3sKKysgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnQsIF9fc3FydF9maW5pdGUpCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitpbmRleCA5ZDE3NTEyMmE4Li44MTI2NTM1NThmIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKK0BAIC05OSw0ICs5OSwxMiBAQCBfX2llZWU3NTRfc3FydGYgKGIpCisgICAgIH0KKyAgIHJldHVybiBmX3dhc2hmIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0ZgorK2Zsb2F0CisrX19pZWVlNzU0X3NxcnRmIChmbG9hdCB4KQorK3sKKysgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoeCk7CisrfQorKworIHN0cm9uZ19hbGlhcyAoX19pZWVlNzU0X3NxcnRmLCBfX3NxcnRmX2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnQuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCitpbmRleCAxNzk1ZmQ2YzNlLi4xM2E4MTk3M2UzIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNTUwMC9mcHUvZV9zcXJ0LmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydC5jCitAQCAtNDAsNyArNDAsNyBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKyAgICBzaW11bHRhbmVvdXNseS4gICovCisgCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorIHsKKyAgIGlmIChfX2J1aWx0aW5fZXhwZWN0IChiID4gMCwgMSkpCisgICAgIHsKK0BAIC03Nyw3ICs3Nyw3IEBAIF9faWVlZTc1NF9zcXJ0IChkb3VibGUgYikKKyAKKyAgICAgICAgICAgLyogSGFuZGxlIHNtYWxsIG51bWJlcnMgYnkgc2NhbGluZy4gICovCisgICAgICAgICAgIGlmIChfX2J1aWx0aW5fZXhwZWN0ICgodS5wYXJ0cy5tc3cgJiAweDdmZjAwMDAwKSA8PSAweDAyMDAwMDAwLCAwKSkKKy0gICAgICAgICAgICByZXR1cm4gX19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworKyAgICAgICAgICAgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKyAKKyAjZGVmaW5lIEZNQUREKGFfLCBjXywgYl8pICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisgICAgICAgICAgICh7IGRvdWJsZSBfX3I7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorQEAgLTEyNiw0ICsxMjYsMTIgQEAgX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorICAgICB9CisgICByZXR1cm4gZl93YXNoIChiKTsKKyB9CisrCisrI3VuZGVmIF9faWVlZTc1NF9zcXJ0CisrZG91YmxlCisrX19pZWVlNzU0X3NxcnQgKGRvdWJsZSB4KQorK3sKKysgIHJldHVybiBfX3Nsb3dfaWVlZTc1NF9zcXJ0ICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydCwgX19zcXJ0X2Zpbml0ZSkKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKK2luZGV4IGE5MTdmMzEzYWIuLmZhZTJkODEyMTAgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U1NTAwL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTU1MDAvZnB1L2Vfc3FydGYuYworQEAgLTM4LDcgKzM4LDcgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKKyAgICBzcXVhcmUgcm9vdC4gICovCisgCisgZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisgeworICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKGIgPiAwLCAxKSkKKyAgICAgeworQEAgLTkzLDQgKzkzLDExIEBAIF9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKysjdW5kZWYgX19pZWVlNzU0X3NxcnRmCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCisreworKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKK2luZGV4IGZjNGE3NDk5MGUuLjcwMzhhNzBiNDcgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L2U2NTAwL2ZwdS9lX3NxcnQuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0LmMKK0BAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7CisgCisgI2lmZGVmIF9fU1REQ19fCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQorICNlbHNlCisgZG91YmxlCistX19pZWVlNzU0X3NxcnQgKGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoYikKKyAgICAgIGRvdWJsZSBiOworICNlbmRpZgorIHsKK0BAIC04Myw3ICs4Myw3IEBAIF9faWVlZTc1NF9zcXJ0IChiKQorIAorICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KKyAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQorLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisrICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OworIAorICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCitAQCAtMTMyLDQgKzEzMiwxMiBAQCBfX2llZWU3NTRfc3FydCAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaCAoYik7CisgfQorKworKyN1bmRlZiBfX2llZWU3NTRfc3FydAorK2RvdWJsZQorK19faWVlZTc1NF9zcXJ0IChkb3VibGUgeCkKKyt7CisrICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKHgpOworK30KKysKKyBzdHJvbmdfYWxpYXMgKF9faWVlZTc1NF9zcXJ0LCBfX3NxcnRfZmluaXRlKQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYworaW5kZXggOWQxNzUxMjJhOC4uMTBkZTFmMGNjMyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvZTY1MDAvZnB1L2Vfc3FydGYuYworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9lNjUwMC9mcHUvZV9zcXJ0Zi5jCitAQCAtMzksMTAgKzM5LDEwIEBAIHN0YXRpYyBjb25zdCBmbG9hdCB0aHJlZWhhbGYgPSAxLjU7CisgCisgI2lmZGVmIF9fU1REQ19fCisgZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisrX19zbG93X2llZWU3NTRfc3FydGYgKGZsb2F0IGIpCisgI2Vsc2UKKyBmbG9hdAorLV9faWVlZTc1NF9zcXJ0ZiAoYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgIGZsb2F0IGI7CisgI2VuZGlmCisgeworQEAgLTk5LDQgKzk5LDEyIEBAIF9faWVlZTc1NF9zcXJ0ZiAoYikKKyAgICAgfQorICAgcmV0dXJuIGZfd2FzaGYgKGIpOworIH0KKysKKysjdW5kZWYgX19pZWVlNzU0X3NxcnRmCisrZmxvYXQKKytfX2llZWU3NTRfc3FydGYgKGZsb2F0IHgpCisreworKyAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnRmICh4KTsKKyt9CisrCisgc3Ryb25nX2FsaWFzIChfX2llZWU3NTRfc3FydGYsIF9fc3FydGZfZmluaXRlKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDExLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjk5MDkyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMS1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gMTcxZDJhZmI5MzA5MTdiMGNmYmU5ZGY3NzA3NzRkYTFjOTJkZDE4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRpbmcgTGl1IDxiMjg0OTVAZnJlZXNjYWxlLmNvbT4KLURhdGU6IFdlZCwgMTkgRGVjIDIwMTIgMDQ6Mzk6NTcgLTA2MDAKLVN1YmplY3Q6IFtQQVRDSCAxMS8yOF0gZWdsaWJjOiBydW4gbGlibS1lcnItdGFiLnBsIHdpdGggc3BlY2lmaWMgZGlycyBpbiAke1N9Ci0KLWxpYm0tZXJyLXRhYi5wbCB3aWxsIHBhcnNlIGFsbCB0aGUgZmlsZXMgbmFtZWQgImxpYm0tdGVzdC11bHBzIgotaW4gdGhlIGdpdmVuIGRpciByZWN1cnNpdmVseS4gVG8gYXZvaWQgcGFyc2luZyB0aGUgb25lIGluCi0ke1N9Ly5wYy8gKGl0IGRvZXMgZXhpc3QgYWZ0ZXIgZWdsaWJjIGFkZHMgYWFyY2g2NCBzdXBwb3J0LAotJHtTfS8ucGMvYWFyY2g2NC0wMDAxLWdsaWJjLWZzZi12MS1lYWY2ZjIwNS5wYXRjaC9wb3J0cy9zeXNkZXBzLwotYWFyY2g2NC9saWJtLXRlc3QtdWxwcyksIHJ1biBsaWJtLWVyci10YWIucGwgd2l0aCBzcGVjaWZpYyBkaXJzCi1pbiAke1N9LgotCi1VcHN0cmVhbS1TdGF0dXM6IGluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBUaW5nIExpdSA8YjI4NDk1QGZyZWVzY2FsZS5jb20+Ci0tLS0KLSBtYW51YWwvTWFrZWZpbGUgfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL21hbnVhbC9NYWtlZmlsZSBiL21hbnVhbC9NYWtlZmlsZQotaW5kZXggNGY3NmVlODVkMi4uMDRiOGM4YzMyMCAxMDA2NDQKLS0tLSBhL21hbnVhbC9NYWtlZmlsZQotKysrIGIvbWFudWFsL01ha2VmaWxlCi1AQCAtMTAzLDcgKzEwMyw4IEBAICQob2JqcGZ4KXN0YW1wLWxpYm0tZXJyOiAkKC4uKW1hdGgvZ2VuLWxpYm0tdGVzdC5weSBcCi0gCQkJICQod2lsZGNhcmQgJChmb3JlYWNoIGRpciwkKHN5c2RpcnMpLFwKLSAJCQkJCQkgICQoZGlyKS9saWJtLXRlc3QtdWxwcykpCi0gCXB3ZD1gcHdkYDsgXAotLQkkKFBZVEhPTikgJDwgLXMgJCRwd2QvLi4gLW0gJChvYmpwZngpbGlibS1lcnItdG1wCi0rCSQoUFlUSE9OKSAkPCAtcyAkJHB3ZC8uLi9wb3J0cyAtbSAkKG9ianBmeClsaWJtLWVyci10bXAKLSsJJChQWVRIT04pICQ8IC1zICQkcHdkLy4uL3N5c2RlcHMgLW0gJChvYmpwZngpbGlibS1lcnItdG1wCi0gCSQobW92ZS1pZi1jaGFuZ2UpICQob2JqcGZ4KWxpYm0tZXJyLXRtcCAkKG9ianBmeClsaWJtLWVyci50ZXhpCi0gCXRvdWNoICRACi0gCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1RdW90ZS1mcm9tLWJ1Zy0xNDQzLXdoaWNoLWV4cGxhaW5zLXdoYXQtdGhlLXBhdGNoLWRvLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmEwYjQ2YzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaApAQCAtMCwwICsxLDU4IEBACitGcm9tIDhjYThlNWNkNzhjYmQzN2E3MTNlMTE4MWY4ZjY2NDFiNTczNTJhYTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyMDowOSArMDAwMAorU3ViamVjdDogW1BBVENIXSBRdW90ZSBmcm9tIGJ1ZyAxNDQzIHdoaWNoIGV4cGxhaW5zIHdoYXQgdGhlIHBhdGNoIGRvZXMgOgorCisgIFdlIGJ1aWxkIHNvbWUgcmFuZG9tIHByb2dyYW0gYW5kIGxpbmsgaXQgd2l0aCAtbHVzdC4gIFdoZW4gd2UgcnVuIGl0LAorICBpdCBkaWVzIHdpdGggYSBTSUdTRUdWIGJlZm9yZSByZWFjaGluZyBtYWluKCkuCisKKyAgTGlidXN0LnNvIGRlcGVuZHMgb24gbGlidXJjdS1icC5zbyBmcm9tIHRoZSB1c2VybW9kZS1yY3UgcGFja2FnZS4KKyAgQWx0aG91Z2ggbGlidXN0LnNvIGlzIG5vdCBwcmVsaW5rZWQsIGxpYnVyY3UtYnAuc28gSVMgcHJlbGlua2VkOyB0aGlzCisgIGlzIGNyaXRpY2FsLgorCisgIExpYnVzdC5zbyB1c2VzIGEgVExTIC8gX190aHJlYWQgdmFyaWFibGUgdGhhdCBpcyBkZWZpbmVkIGluIGxpYnVyY3UtCisgIGJwLnNvLiAgVGhlcmUgYXJlIHNwZWNpYWwgQVJNLXNwZWNpZmljIHJlbG9jYXRpb24gdHlwZXMgdGhhdCBhbGxvdyB0d28KKyAgc2hhcmVkIGxpYnJhcmllcyB0byBzaGFyZSB0aHJlYWQtc3BlY2lmaWMgZGF0YS4gIFRoaXMgaXMgY3JpdGljYWwgdG9vLgorCisgIE9uZSBtb3JlIGNyaXRpY2FsIGlzc3VlOiBhbHRob3VnaCBsaWJ1cmN1LWJwLnNvIGlzIHByZWxpbmtlZCwgd2UgY2FuJ3QKKyAgbG9hZCBpdCBhdCBpdHMgcHJlbGlua2VkIGFkZHJlc3MsIGJlY2F1c2Ugd2UgYWxzbyBsaW5rIGFnYWluc3QKKyAgbGlicnQuc28sIGFuZCBsaWJydC5zbyB1c2VzIHRoYXQgYWRkcmVzcy4KKworICBUaGUgZHluYW1pYyBsaW5rZXIgaXMgZm9yY2VkIHRvIHJlbGluayBsaWJ1cmN1LWJwLnNvIGF0IGEgZGlmZmVyZW50CisgIGFkZHJlc3MuICBJbiB0aGUgY291cnNlIG9mIHJlbGlua2luZywgaXQgcHJvY2Vzc2VzIHRoZSBzcGVjaWFsIEFSTQorICByZWxvY2F0aW9uIHJlY29yZCBtZW50aW9uZWQgYWJvdmUuICBUaGUgcHJlbGlua2VyIGhhcyBhbHJlYWR5IGZpbGxlZAorICBpbiB0aGUgaW5mb3JtYXRpb24sIHdoaWNoIGlzIGEgc2hvcnQgb2Zmc2V0IGludG8gYSB0YWJsZSBvZiB0aHJlYWQtCisgIHNwZWNpZmljIGRhdGEgdGhhdCBpcyBhbGxvY2F0ZWQgcGVyLXRocmVhZCBmb3IgZWFjaCBsaWJyYXJ5IHRoYXQgdXNlcworICBUTFMuICBCZWNhdXNlIHRoZSBub3JtYWwgYmVoYXZpb3Igb2YgYSByZWxvY2F0aW9uIGlzIHRvIGFkZCB0aGUgc3ltYm9sCisgIHZhbHVlIHRvIGFuIGFkZGVuZCBzdG9yZWQgYXQgdGhlIGFkZHJlc3MgYmVpbmcgcmVsb2NhdGVkLCB3ZSBlbmQgdXAKKyAgYWRkaW5nIHRoZSBzaG9ydCBvZmZzZXQgdG8gaXRzZWxmLCBkb3VibGluZyBpdC4KKworICBOb3cgd2UgaGF2ZSBhbiBhd2t3YXJkIHNpdHVhdGlvbi4gIFRoZSBsaWJ1c3Quc28gbGlicmFyeSBkb2Vzbid0IGtub3cKKyAgYWJvdXQgdGhlIGFkZGVuZCwgc28gaXRzIFRMUyBkYXRhIGZvciB0aGlzIGVsZW1lbnQgaXMgY29ycmVjdC4gIFRoZQorICBsaWJ1cmN1LWJwLnNvIGxpYnJhcnkgaGFzIGEgZGlmZmVyZW50IG9mZnNldCBmb3IgdGhlIGVsZW1lbnQuICBXaGVuIHdlCisgIGdvIHRvIGluaXRpYWxpemUgdGhlIGVsZW1lbnQgZm9yIHRoZSBmaXJzdCB0aW1lIGluIGxpYnVyY3UtYnAuc28sIHdlCisgIHdyaXRlIHRoZSBhZGRyZXNzIG9mIHRoZSByZXN1bHQgYXQgdGhlIGRvdWJsZWQgKGJyb2tlbikgb2Zmc2V0LgorICBMYXRlciwgd2hlbiB3ZSByZWZlciB0byB0aGUgYWRkcmVzcyBmcm9tIGxpYnVzdC5zbywgd2UgY2hlY2sgdGhlIHZhbHVlCisgIGF0IHRoZSBjb3JyZWN0IG9mZnNldCwgYnV0IGl0J3MgTlVMTCwgc28gd2UgZWF0IGhvdCBTSUdTRUdWLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQW5kcmVpIERpbnUgPGFuZHJlaS5hZHJpYW54LmRpbnVAaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaCBiL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAoraW5kZXggOTA4NTY3NzliMS4uYTI5YmI4NmM1NiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2RsLW1hY2hpbmUuaAorKysrIGIvc3lzZGVwcy9hcm0vZGwtbWFjaGluZS5oCitAQCAtNTEwLDcgKzUxMCw3IEBAIGVsZl9tYWNoaW5lX3JlbCAoc3RydWN0IGxpbmtfbWFwICptYXAsIGNvbnN0IEVsZjMyX1JlbCAqcmVsb2MsCisgCisgCWNhc2UgUl9BUk1fVExTX0RUUE9GRjMyOgorIAkgIGlmIChzeW0gIT0gTlVMTCkKKy0JICAgICpyZWxvY19hZGRyICs9IHN5bS0+c3RfdmFsdWU7CisrCSAgICAqcmVsb2NfYWRkciA9IHN5bS0+c3RfdmFsdWU7CisgCSAgYnJlYWs7CisgCisgCWNhc2UgUl9BUk1fVExTX1RQT0ZGMzI6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTItX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMjMzZmJlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMi1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotRnJvbSAzNzZiZTdiOTYxNTJlZjUwMWM4Y2Y5NWVkNmRjNTJjMDMxOGJkMjZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6MjQ6NDYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMi8yOF0gX19pZWVlNzU0X3NxcnR7LGZ9IGFyZSBub3cgaW5saW5lIGZ1bmN0aW9ucyBhbmQgY2FsbAotIG91dCBfX3Nsb3cgdmVyc2lvbnMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IGNodW5yb25nIGd1byA8QjQwMjkwQGZyZWVzY2FsZS5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgIHwgNiArKystLS0KLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLWluZGV4IDFjMzQyNDRiZDguLjcwMzhhNzBiNDcgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMKLUBAIC00MSwxMCArNDEsMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IGhhbGYgPSAwLjU7Ci0gCi0gI2lmZGVmIF9fU1REQ19fCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotK19fc2xvd19pZWVlNzU0X3NxcnQgKGRvdWJsZSBiKQotICNlbHNlCi0gZG91YmxlCi0tX19pZWVlNzU0X3NxcnQgKGIpCi0rX19zbG93X2llZWU3NTRfc3FydCAoYikKLSAgICAgIGRvdWJsZSBiOwotICNlbmRpZgotIHsKLUBAIC04Myw3ICs4Myw3IEBAIF9faWVlZTc1NF9zcXJ0IChiKQotIAotICAgICAgICAgICAvKiBIYW5kbGUgc21hbGwgbnVtYmVycyBieSBzY2FsaW5nLiAgKi8KLSAgICAgICAgICAgaWYgKF9fYnVpbHRpbl9leHBlY3QgKCh1LnBhcnRzLm1zdyAmIDB4N2ZmMDAwMDApIDw9IDB4MDIwMDAwMDAsIDApKQotLSAgICAgICAgICAgIHJldHVybiBfX2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7Ci0rICAgICAgICAgICAgcmV0dXJuIF9fc2xvd19pZWVlNzU0X3NxcnQgKGIgKiB0d28xMDgpICogdHdvbTU0OwotIAotICNkZWZpbmUgRk1BREQoYV8sIGNfLCBiXykgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSAgICAgICAgICAgKHsgZG91YmxlIF9fcjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi1pbmRleCA4MTI2NTM1NThmLi4xMGRlMWYwY2MzIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0Zi5jCi0rKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKLUBAIC0zOSwxMCArMzksMTAgQEAgc3RhdGljIGNvbnN0IGZsb2F0IHRocmVlaGFsZiA9IDEuNTsKLSAKLSAjaWZkZWYgX19TVERDX18KLSBmbG9hdAotLV9faWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLStfX3Nsb3dfaWVlZTc1NF9zcXJ0ZiAoZmxvYXQgYikKLSAjZWxzZQotIGZsb2F0Ci0tX19pZWVlNzU0X3NxcnRmIChiKQotK19fc2xvd19pZWVlNzU0X3NxcnRmIChiKQotICAgICAgZmxvYXQgYjsKLSAjZW5kaWYKLSB7Ci0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtZWdsaWJjLXJ1bi1saWJtLWVyci10YWIucGwtd2l0aC1zcGVjaWZpYy1kaXJzLWluLVMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzM2ZGU4YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxMy1lZ2xpYmMtcnVuLWxpYm0tZXJyLXRhYi5wbC13aXRoLXNwZWNpZmljLWRpcnMtaW4tUy5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDIxNTA5NzM1Njc4OTkwNzYwZDVlYmY5ZDBjNjVlZmE0YjUyYjgzOGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaW5nIExpdSA8YjI4NDk1QGZyZWVzY2FsZS5jb20+CitEYXRlOiBXZWQsIDE5IERlYyAyMDEyIDA0OjM5OjU3IC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hdIGVnbGliYzogcnVuIGxpYm0tZXJyLXRhYi5wbCB3aXRoIHNwZWNpZmljIGRpcnMgaW4gJHtTfQorCitsaWJtLWVyci10YWIucGwgd2lsbCBwYXJzZSBhbGwgdGhlIGZpbGVzIG5hbWVkICJsaWJtLXRlc3QtdWxwcyIKK2luIHRoZSBnaXZlbiBkaXIgcmVjdXJzaXZlbHkuIFRvIGF2b2lkIHBhcnNpbmcgdGhlIG9uZSBpbgorJHtTfS8ucGMvIChpdCBkb2VzIGV4aXN0IGFmdGVyIGVnbGliYyBhZGRzIGFhcmNoNjQgc3VwcG9ydCwKKyR7U30vLnBjL2FhcmNoNjQtMDAwMS1nbGliYy1mc2YtdjEtZWFmNmYyMDUucGF0Y2gvcG9ydHMvc3lzZGVwcy8KK2FhcmNoNjQvbGlibS10ZXN0LXVscHMpLCBydW4gbGlibS1lcnItdGFiLnBsIHdpdGggc3BlY2lmaWMgZGlycworaW4gJHtTfS4KKworVXBzdHJlYW0tU3RhdHVzOiBpbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogVGluZyBMaXUgPGIyODQ5NUBmcmVlc2NhbGUuY29tPgorLS0tCisgbWFudWFsL01ha2VmaWxlIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tYW51YWwvTWFrZWZpbGUgYi9tYW51YWwvTWFrZWZpbGUKK2luZGV4IGM2MWUxMWRjZDcuLjVkODU5ZTZmODQgMTAwNjQ0CistLS0gYS9tYW51YWwvTWFrZWZpbGUKKysrKyBiL21hbnVhbC9NYWtlZmlsZQorQEAgLTEwMyw3ICsxMDMsOCBAQCAkKG9ianBmeClzdGFtcC1saWJtLWVycjogJCguLiltYXRoL2dlbi1saWJtLXRlc3QucHkgXAorIAkJCSAkKHdpbGRjYXJkICQoZm9yZWFjaCBkaXIsJChzeXNkaXJzKSxcCisgCQkJCQkJICAkKGRpcikvbGlibS10ZXN0LXVscHMpKQorIAlwd2Q9YHB3ZGA7IFwKKy0JJChQWVRIT04pICQ8IC1zICQkcHdkLy4uIC1tICQob2JqcGZ4KWxpYm0tZXJyLXRtcAorKwkkKFBZVEhPTikgJDwgLXMgJCRwd2QvLi4vcG9ydHMgLW0gJChvYmpwZngpbGlibS1lcnItdG1wCisrCSQoUFlUSE9OKSAkPCAtcyAkJHB3ZC8uLi9zeXNkZXBzIC1tICQob2JqcGZ4KWxpYm0tZXJyLXRtcAorIAkkKG1vdmUtaWYtY2hhbmdlKSAkKG9ianBmeClsaWJtLWVyci10bXAgJChvYmpwZngpbGlibS1lcnIudGV4aQorIAl0b3VjaCAkQAorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDEzLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWJhNTJlNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTMtc3lzZGVwcy1nbnUtY29uZmlndXJlLmFjLWhhbmRsZS1jb3JyZWN0bHktbGliY19jdl9yby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gMWJhNGU5NTc3NDM3NjMyODU2ZDcxOWNiZDVkNjNiNWE3NmNiYjRjNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI3OjEwICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTMvMjhdIHN5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYzogaGFuZGxlIGNvcnJlY3RseQotICRsaWJjX2N2X3Jvb3RzYmluZGlyCi0KLVVwc3RyZWFtLVN0YXR1czpQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHRoaWV1IENyYXBldCA8TWF0dGhpZXUuQ3JhcGV0QGluZ2VuaWNvLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL2dudS9jb25maWd1cmUgICAgfCAyICstCi0gc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9nbnUvY29uZmlndXJlIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlCi1pbmRleCBjMTVkMTA4N2U4Li4zN2NjOTgzZjJhIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9nbnUvY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL2dudS9jb25maWd1cmUKLUBAIC0zMiw2ICszMiw2IEBAIGNhc2UgIiRwcmVmaXgiIGluCi0gICBlbHNlCi0gICAgIGxpYmNfY3ZfbG9jYWxzdGF0ZWRpcj0kbG9jYWxzdGF0ZWRpcgotICAgIGZpCi0tICBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCi0rICB0ZXN0IC1uICIkbGliY19jdl9yb290c2JpbmRpciIgfHwgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgotICAgOzsKLSBlc2FjCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCi1pbmRleCA2MzRmZTRkZTJhLi4zZGIxNjk3ZjRmIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCi0rKysgYi9zeXNkZXBzL2dudS9jb25maWd1cmUuYWMKLUBAIC0yMSw2ICsyMSw2IEBAIGNhc2UgIiRwcmVmaXgiIGluCi0gICBlbHNlCi0gICAgIGxpYmNfY3ZfbG9jYWxzdGF0ZWRpcj0kbG9jYWxzdGF0ZWRpcgotICAgIGZpCi0tICBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCi0rICB0ZXN0IC1uICIkbGliY19jdl9yb290c2JpbmRpciIgfHwgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgotICAgOzsKLSBlc2FjCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQtQWRkLXVudXNlZC1hdHRyaWJ1dGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBhNjAyYmIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE0LUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSBiODQ5OTlkY2Y2NDJiMDdlNmMxNGU2ZmY1MDdiZTE0NzQzMzQ5OTQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6Mjg6NDEgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxNC8yOF0gQWRkIHVudXNlZCBhdHRyaWJ1dGUKLQotSGVscHMgaW4gYXZvaWRpbmcgZ2NjIHdhcm5pbmcgd2hlbiBoZWFkZXIgaXMgaXMgaW5jbHVkZWQgaW4KLWEgc291cmNlIGZpbGUgd2hpY2ggZG9lcyBub3QgdXNlIGJvdGggZnVuY3Rpb25zCi0KLSAgICAgICAgKiBpY29udi9nY29udl9jaGFyc2V0LmggKHN0cmlwKToKLSAgICAgICAgQWRkIHVudXNlZCBhdHRyaWJ1dGUuCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gaWNvbnYvZ2NvbnZfY2hhcnNldC5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvaWNvbnYvZ2NvbnZfY2hhcnNldC5oIGIvaWNvbnYvZ2NvbnZfY2hhcnNldC5oCi1pbmRleCA5MWUwYWQzMTQxLi4yZTk1NDlmZTQ5IDEwMDY0NAotLS0tIGEvaWNvbnYvZ2NvbnZfY2hhcnNldC5oCi0rKysgYi9pY29udi9nY29udl9jaGFyc2V0LmgKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2luY2x1ZGUgPGxvY2FsZS5oPgotIAotIAotLXN0YXRpYyB2b2lkCi0rc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCi0gc3RyaXAgKGNoYXIgKndwLCBjb25zdCBjaGFyICpzKQotIHsKLSAgIGludCBzbGFzaF9jb3VudCA9IDA7Ci0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNC1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU3M2I2NDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTQtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaApAQCAtMCwwICsxLDU4IEBACitGcm9tIGUzM2RlYjExOTczNGVmNDQzZWY0NGM0MmEwMGE1NjlmOTBlMWUxNDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDoyNDo0NiArMDAwMAorU3ViamVjdDogW1BBVENIXSBfX2llZWU3NTRfc3FydHssZn0gYXJlIG5vdyBpbmxpbmUgZnVuY3Rpb25zIGFuZCBjYWxsIG91dAorIF9fc2xvdyB2ZXJzaW9ucworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogY2h1bnJvbmcgZ3VvIDxCNDAyOTBAZnJlZXNjYWxlLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYyAgfCA2ICsrKy0tLQorIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYyB8IDQgKystLQorIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9lNjUwMC9mcHUvZV9zcXJ0LmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworaW5kZXggMWMzNDI0NGJkOC4uNzAzOGE3MGI0NyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydC5jCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnQuYworQEAgLTQxLDEwICs0MSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgaGFsZiA9IDAuNTsKKyAKKyAjaWZkZWYgX19TVERDX18KKyBkb3VibGUKKy1fX2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisrX19zbG93X2llZWU3NTRfc3FydCAoZG91YmxlIGIpCisgI2Vsc2UKKyBkb3VibGUKKy1fX2llZWU3NTRfc3FydCAoYikKKytfX3Nsb3dfaWVlZTc1NF9zcXJ0IChiKQorICAgICAgZG91YmxlIGI7CisgI2VuZGlmCisgeworQEAgLTgzLDcgKzgzLDcgQEAgX19pZWVlNzU0X3NxcnQgKGIpCisgCisgICAgICAgICAgIC8qIEhhbmRsZSBzbWFsbCBudW1iZXJzIGJ5IHNjYWxpbmcuICAqLworICAgICAgICAgICBpZiAoX19idWlsdGluX2V4cGVjdCAoKHUucGFydHMubXN3ICYgMHg3ZmYwMDAwMCkgPD0gMHgwMjAwMDAwMCwgMCkpCistICAgICAgICAgICAgcmV0dXJuIF9faWVlZTc1NF9zcXJ0IChiICogdHdvMTA4KSAqIHR3b201NDsKKysgICAgICAgICAgICByZXR1cm4gX19zbG93X2llZWU3NTRfc3FydCAoYiAqIHR3bzEwOCkgKiB0d29tNTQ7CisgCisgI2RlZmluZSBGTUFERChhXywgY18sIGJfKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgICAoeyBkb3VibGUgX19yOyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKK2luZGV4IDgxMjY1MzU1OGYuLjEwZGUxZjBjYzMgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2U2NTAwL2ZwdS9lX3NxcnRmLmMKKysrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZTY1MDAvZnB1L2Vfc3FydGYuYworQEAgLTM5LDEwICszOSwxMCBAQCBzdGF0aWMgY29uc3QgZmxvYXQgdGhyZWVoYWxmID0gMS41OworIAorICNpZmRlZiBfX1NURENfXworIGZsb2F0CistX19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorK19fc2xvd19pZWVlNzU0X3NxcnRmIChmbG9hdCBiKQorICNlbHNlCisgZmxvYXQKKy1fX2llZWU3NTRfc3FydGYgKGIpCisrX19zbG93X2llZWU3NTRfc3FydGYgKGIpCisgICAgICBmbG9hdCBiOworICNlbmRpZgorIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGNkZDA1NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNS1zeXNkZXBzLWdudS1jb25maWd1cmUuYWMtaGFuZGxlLWNvcnJlY3RseS1saWJjX2N2X3JvLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gYzUwY2FlMzZlOTBjNDE4NDkzMDFhOWE2NjhhZGYzMWU4MWU0M2EwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI3OjEwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHN5c2RlcHMvZ251L2NvbmZpZ3VyZS5hYzogaGFuZGxlIGNvcnJlY3RseQorICRsaWJjX2N2X3Jvb3RzYmluZGlyCisKK1Vwc3RyZWFtLVN0YXR1czpQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hdHRoaWV1IENyYXBldCA8TWF0dGhpZXUuQ3JhcGV0QGluZ2VuaWNvLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL2dudS9jb25maWd1cmUgICAgfCAyICstCisgc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9nbnUvY29uZmlndXJlIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlCitpbmRleCBjMTVkMTA4N2U4Li4zN2NjOTgzZjJhIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9nbnUvY29uZmlndXJlCisrKysgYi9zeXNkZXBzL2dudS9jb25maWd1cmUKK0BAIC0zMiw2ICszMiw2IEBAIGNhc2UgIiRwcmVmaXgiIGluCisgICBlbHNlCisgICAgIGxpYmNfY3ZfbG9jYWxzdGF0ZWRpcj0kbG9jYWxzdGF0ZWRpcgorICAgIGZpCistICBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCisrICB0ZXN0IC1uICIkbGliY19jdl9yb290c2JpbmRpciIgfHwgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgorICAgOzsKKyBlc2FjCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCitpbmRleCA2MzRmZTRkZTJhLi4zZGIxNjk3ZjRmIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9nbnUvY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL2dudS9jb25maWd1cmUuYWMKK0BAIC0yMSw2ICsyMSw2IEBAIGNhc2UgIiRwcmVmaXgiIGluCisgICBlbHNlCisgICAgIGxpYmNfY3ZfbG9jYWxzdGF0ZWRpcj0kbG9jYWxzdGF0ZWRpcgorICAgIGZpCistICBsaWJjX2N2X3Jvb3RzYmluZGlyPS9zYmluCisrICB0ZXN0IC1uICIkbGliY19jdl9yb290c2JpbmRpciIgfHwgbGliY19jdl9yb290c2JpbmRpcj0vc2JpbgorICAgOzsKKyBlc2FjCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTUteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTUteWVzLXdpdGhpbi10aGUtcGF0aC1zZXRzLXdyb25nLWNvbmZpZy12YXJpYWJsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkNjU2MmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE1LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYzICswLDAgQEAKLUZyb20gN2M1N2Y4NGJlZjRhYWZmZTQyMDRhN2EzNTQ0MTFhYjNlYTdlNTI3MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjMxOjA2ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTUvMjhdICd5ZXMnIHdpdGhpbiB0aGUgcGF0aCBzZXRzIHdyb25nIGNvbmZpZyB2YXJpYWJsZXMKLQotSXQgc2VlbXMgdGhhdCB0aGUgJ0FDX0VHUkVQX0NQUCh5ZXMuLi4nIGV4YW1wbGUgaXMgcXVpdGUgcG9wdWxhcgotYnV0IGJlaW5nIHN1Y2ggYSBzaG9ydCB3b3JkIHRvIGdyZXAgaXQgaXMgbGlrZWx5IHRvIHByb2R1Y2UKLWZhbHNlLXBvc2l0aXZlIG1hdGNoZXMgd2l0aCB0aGUgcGF0aCBpdCBpcyBjb25maWd1cmVkIGludG8uCi0KLVRoZSBjaGFuZ2UgaXMgdG8gdXNlIGEgbW9yZSBlbGFib3JhdGVkIHN0cmluZyB0byBncmVwIGZvci4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2xpYmMtYWxwaGFAc291cmNld2FyZS5vcmddCi0KLVNpZ25lZC1vZmYtYnk6IEJlbmphbWluIEVzcXVpdmVsIDxiZW5qYW1pbi5lc3F1aXZlbEBsaW51eC5pbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9hcm0vY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9taXBzL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9uaW9zMi9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUgICAgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMgICAgICAgICAgICAgIHwgNCArKy0tCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlICAgIHwgOCArKysrLS0tLQotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYyB8IDggKysrKy0tLS0KLSAxMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlCi1pbmRleCA1YmQzNTVhNjkxLi4zYmM1NTM3YmMwIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQotQEAgLTE0OCwxMiArMTQ4LDEyIEBAIGVsc2UKLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gI2lmZGVmIF9fQUFSQ0g2NEVCX18KLS0gICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICAgICAgICAgICAgICAgICAgICAgIGlzX2FhcmNoNjRfYmUKLSAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAiaXNfYWFyY2g2NF9iZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfYWFyY2g2NF9iZT15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X2FhcmNoNjRfYmU9bm8KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYwotaW5kZXggNzg1MWRkNGRhYy4uNmU5MjM4MTcxZiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKLSsrKyBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKLUBAIC0xMCw4ICsxMCw4IEBAIEdMSUJDX1BST1ZJREVTIGRubCBTZWUgYWNsb2NhbC5tNCBpbiB0aGUgdG9wIGxldmVsIHNvdXJjZSBkaXJlY3RvcnkuCi0gIyB0aGUgZHluYW1pYyBsaW5rZXIgdmlhICVpZmRlZi4KLSBBQ19DQUNIRV9DSEVDSyhbZm9yIGJpZyBlbmRpYW5dLAotICAgW2xpYmNfY3ZfYWFyY2g2NF9iZV0sCi0tICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fQUFSQ0g2NEVCX18KLS0gICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICBbQUNfRUdSRVBfQ1BQKGlzX2FhcmNoNjRfYmUsWyNpZmRlZiBfX0FBUkNINjRFQl9fCi0rICAgICAgICAgICAgICAgICAgICAgIGlzX2FhcmNoNjRfYmUKLSAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKLSAgIF0sIGxpYmNfY3ZfYWFyY2g2NF9iZT15ZXMsIGxpYmNfY3ZfYWFyY2g2NF9iZT1ubyldKQotIGlmIHRlc3QgJGxpYmNfY3ZfYWFyY2g2NF9iZSA9IHllczsgdGhlbgotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZSBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQotaW5kZXggNDMxZTg0M2IyYi4uZTE1MjQ2MTEzOCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQotKysrIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlCi1AQCAtMTUxLDEyICsxNTEsMTIgQEAgZWxzZQotICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAjaWZkZWYgX19BUk1fUENTX1ZGUAotLQkJICAgICAgeWVzCi0rCQkgICAgICB1c2VfYXJtX3Bjc192ZnAKLSAJCSAgICAgI2VuZGlmCi0gCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgInVzZV9hcm1fcGNzX3ZmcCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfYXJtX3Bjc192ZnA9eWVzCi0gZWxzZQotICAgbGliY19jdl9hcm1fcGNzX3ZmcD1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYwotaW5kZXggOTBjZGQ2OWM3NS4uMDVhMjYyYmEwMCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy9hcm0vY29uZmlndXJlLmFjCi1AQCAtMTUsOCArMTUsOCBAQCBBQ19ERUZJTkUoUElfU1RBVElDX0FORF9ISURERU4pCi0gIyB0aGUgZHluYW1pYyBsaW5rZXIgdmlhICVpZmRlZi4KLSBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIEFSTSBoYXJkLWZsb2F0IEFCSV0sCi0gICBbbGliY19jdl9hcm1fcGNzX3ZmcF0sCi0tICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fQVJNX1BDU19WRlAKLS0JCSAgICAgIHllcwotKyAgW0FDX0VHUkVQX0NQUCh1c2VfYXJtX3Bjc192ZnAsWyNpZmRlZiBfX0FSTV9QQ1NfVkZQCi0rCQkgICAgICB1c2VfYXJtX3Bjc192ZnAKLSAJCSAgICAgI2VuZGlmCi0gICBdLCBsaWJjX2N2X2FybV9wY3NfdmZwPXllcywgbGliY19jdl9hcm1fcGNzX3ZmcD1ubyldKQotIGlmIHRlc3QgJGxpYmNfY3ZfYXJtX3Bjc192ZnAgPSB5ZXM7IHRoZW4KLWRpZmYgLS1naXQgYS9zeXNkZXBzL21pcHMvY29uZmlndXJlIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZQotaW5kZXggNGUxMzI0OGMwMy4uZjE0YWY5NTJkMCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKLUBAIC0xNDMsMTEgKzE0MywxMSBAQCBlbHNlCi0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIGRubAotICNpZmRlZiBfX21pcHNfbmFuMjAwOAotLXllcwotK3VzZV9taXBzX25hbjIwMDgKLSAjZW5kaWYKLSBfQUNFT0YKLSBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8Ci0tICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSsgICRFR1JFUCAidXNlX21pcHNfbmFuMjAwOCIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMKLWluZGV4IGJjYmRhZmZkOWYuLmFkMzA1N2Y0Y2MgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCi0rKysgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCi1AQCAtNiw5ICs2LDkgQEAgZG5sIHBvc2l0aW9uIGluZGVwZW5kZW50IHdheS4KLSBkbmwgQUNfREVGSU5FKFBJX1NUQVRJQ19BTkRfSElEREVOKQotIAotIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgMjAwOCBOYU4gZW5jb2RpbmddLAotLSAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAoeWVzLCBbZG5sCi0rICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh1c2VfbWlwc19uYW4yMDA4LCBbZG5sCi0gI2lmZGVmIF9fbWlwc19uYW4yMDA4Ci0teWVzCi0rdXNlX21pcHNfbmFuMjAwOAotICNlbmRpZl0sIGxpYmNfY3ZfbWlwc19uYW4yMDA4PXllcywgbGliY19jdl9taXBzX25hbjIwMDg9bm8pXSkKLSBpZiB0ZXN0IHgkbGliY19jdl9taXBzX25hbjIwMDggPSB4eWVzOyB0aGVuCi0gICBBQ19ERUZJTkUoSEFWRV9NSVBTX05BTjIwMDgpCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQotaW5kZXggMTRjOGEzYTAxNC4uZGRlMzgxNGVmMiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlCi0rKysgYi9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQotQEAgLTE0MiwxMiArMTQyLDEyIEBAIGVsc2UKLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgICAgICAgICAgICAgICAgICAgICBpc19uaW9zMl9iZQotICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotIAotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJpc19uaW9zMl9iZSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfbmlvczJfYmU9eWVzCi0gZWxzZQotICAgbGliY19jdl9uaW9zMl9iZT1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKLWluZGV4IGYwNWY0MzgwMmIuLmRjODYzOTkwMmQgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKLUBAIC00LDggKzQsOCBAQCBHTElCQ19QUk9WSURFUyBkbmwgU2VlIGFjbG9jYWwubTQgaW4gdGhlIHRvcCBsZXZlbCBzb3VyY2UgZGlyZWN0b3J5LgotICMgTmlvcyBJSSBiaWcgZW5kaWFuIGlzIG5vdCB5ZXQgc3VwcG9ydGVkLgotIEFDX0NBQ0hFX0NIRUNLKFtmb3IgYmlnIGVuZGlhbl0sCi0gICBbbGliY19jdl9uaW9zMl9iZV0sCi0tICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgW0FDX0VHUkVQX0NQUChpc19uaW9zMl9iZSxbI2lmZGVmIF9fbmlvczJfYmlnX2VuZGlhbl9fCi0rICAgICAgICAgICAgICAgICAgICAgIGlzX25pb3MyX2JlCi0gICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICBdLCBsaWJjX2N2X25pb3MyX2JlPXllcywgbGliY19jdl9uaW9zMl9iZT1ubyldKQotIGlmIHRlc3QgJGxpYmNfY3ZfbmlvczJfYmUgPSB5ZXM7IHRoZW4KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZSBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCi1pbmRleCAxZWU3ZjQxYTM2Li43N2UzOGJlYmRlIDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCi1AQCAtNDE0LDExICs0MTQsMTEgQEAgZWxzZQotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSBkbmwKLSAjaWZkZWYgX19taXBzX25hbjIwMDgKLS15ZXMKLSt1c2VfbWlwc19uYW4yMDA4Ci0gI2VuZGlmCi0gX0FDRU9GCi0gaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAotLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0rICAkRUdSRVAgInVzZV9taXBzX25hbjIwMDgiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKLWluZGV4IDkxNDdhYTQ1ODIuLjc4OThlMjQ3MzggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKLUBAIC0xMDUsOSArMTA1LDkgQEAgQUNfQ09NUElMRV9JRkVMU0UoCi0gTElCQ19DT05GSUdfVkFSKFttaXBzLW1vZGUtc3dpdGNoXSxbJHtsaWJjX21pcHNfbW9kZV9zd2l0Y2h9XSkKLSAKLSBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIDIwMDggTmFOIGVuY29kaW5nXSwKLS0gIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHllcywgW2RubAotKyAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAodXNlX21pcHNfbmFuMjAwOCwgW2RubAotICNpZmRlZiBfX21pcHNfbmFuMjAwOAotLXllcwotK3VzZV9taXBzX25hbjIwMDgKLSAjZW5kaWZdLCBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMsIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vKV0pCi0gCi0gbGliY19taXBzX25hbj0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKLWluZGV4IGFlN2YyNTRkYTQuLjg3NDUxOTAwMGIgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZQotQEAgLTE1NSwxMiArMTU1LDEyIEBAIGVsc2UKLSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gI2lmIF9DQUxMX0VMRiA9PSAyCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgICAgICAgICAgICAgICAgICAgICB1c2VfcHBjX2VsZnYyX2FiaQotICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotIAotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJ1c2VfcHBjX2VsZnYyX2FiaSIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKLSAgIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPXllcwotIGVsc2UKLSAgIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPW5vCi1AQCAtMTg4LDEyICsxODgsMTIgQEAgZWxzZQotICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAjaWZkZWYgX0NBTExfRUxGCi0tICAgICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgICAgICAgICAgICAgICAgICAgICAgICBpc19kZWZfY2FsbF9lbGYKLSAgICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgotIAotIF9BQ0VPRgotIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKLS0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgotKyAgJEVHUkVQICJpc19kZWZfY2FsbF9lbGYiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6Ci0gICBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj15ZXMKLSBlbHNlCi0gICBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj1ubwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYwotaW5kZXggZjljYmE2ZTE1ZC4uYjIxZjcyZjFlNCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlLmFjCi1AQCAtNiw4ICs2LDggQEAgTElCQ19TTElCRElSX1JUTERESVIoW2xpYjY0XSwgW2xpYjY0XSkKLSAjIERlZmluZSBkZWZhdWx0LWFiaSBhY2NvcmRpbmcgdG8gY29tcGlsZXIgZmxhZ3MuCi0gQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSBQb3dlclBDNjQgRUxGdjIgQUJJXSwKLSAgIFtsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaV0sCi0tICBbQUNfRUdSRVBfQ1BQKHllcyxbI2lmIF9DQUxMX0VMRiA9PSAyCi0tICAgICAgICAgICAgICAgICAgICAgIHllcwotKyAgW0FDX0VHUkVQX0NQUCh1c2VfcHBjX2VsZnYyX2FiaSxbI2lmIF9DQUxMX0VMRiA9PSAyCi0rICAgICAgICAgICAgICAgICAgICAgIHVzZV9wcGNfZWxmdjJfYWJpCi0gICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICBdLCBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT15ZXMsIGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpPW5vKV0pCi0gaWYgdGVzdCAkbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmkgPSB5ZXM7IHRoZW4KLUBAIC0xOSw4ICsxOSw4IEBAIGVsc2UKLSAgICMgQ29tcGlsZXIgdGhhdCBkbyBub3Qgc3VwcG9ydCBFTEZ2MiBBQkkgZG9lcyBub3QgZGVmaW5lIF9DQUxMX0VMRgotICAgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGRlZmluZXMgX0NBTExfRUxGXSwKLSAgICAgW2xpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmXSwKLS0gICAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfQ0FMTF9FTEYKLS0gICAgICAgICAgICAgICAgICAgICAgICAgeWVzCi0rICAgIFtBQ19FR1JFUF9DUFAoaXNfZGVmX2NhbGxfZWxmLFsjaWZkZWYgX0NBTExfRUxGCi0rICAgICAgICAgICAgICAgICAgICAgICAgIGlzX2RlZl9jYWxsX2VsZgotICAgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCi0gICAgIF0sIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPXllcywgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9bm8pXSkKLSAgIGlmIHRlc3QgJGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmID0gbm87IHRoZW4KLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNi1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NzRlN2MzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LUFkZC11bnVzZWQtYXR0cmlidXRlLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gYzMyMzEyNTc0NDAyMGEyOWY3OWU1MGRjNGQwMjRiNTVjNDgyZWFmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjI4OjQxICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCB1bnVzZWQgYXR0cmlidXRlCisKK0hlbHBzIGluIGF2b2lkaW5nIGdjYyB3YXJuaW5nIHdoZW4gaGVhZGVyIGlzIGlzIGluY2x1ZGVkIGluCithIHNvdXJjZSBmaWxlIHdoaWNoIGRvZXMgbm90IHVzZSBib3RoIGZ1bmN0aW9ucworCisgICAgICAgICogaWNvbnYvZ2NvbnZfY2hhcnNldC5oIChzdHJpcCk6CisgICAgICAgIEFkZCB1bnVzZWQgYXR0cmlidXRlLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGljb252L2djb252X2NoYXJzZXQuaCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2ljb252L2djb252X2NoYXJzZXQuaCBiL2ljb252L2djb252X2NoYXJzZXQuaAoraW5kZXggMzQ4YWNjMDg5Yi4uZmE5MjQ2NWQ4OSAxMDA2NDQKKy0tLSBhL2ljb252L2djb252X2NoYXJzZXQuaAorKysrIGIvaWNvbnYvZ2NvbnZfY2hhcnNldC5oCitAQCAtMjEsNyArMjEsNyBAQAorICNpbmNsdWRlIDxsb2NhbGUuaD4KKyAKKyAKKy1zdGF0aWMgdm9pZAorK3N0YXRpYyB2b2lkIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKQorIHN0cmlwIChjaGFyICp3cCwgY29uc3QgY2hhciAqcykKKyB7CisgICBpbnQgc2xhc2hfY291bnQgPSAwOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE2LXRpbWV6b25lLXJlLXdyaXR0ZW4tdHpzZWxlY3QtYXMtcG9zaXgtc2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGQxY2YzMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTYtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gYTc0ZjMxZWE5ZWRmMTA1ZjFhNmRjMjY0OTdhYTJhMTJhZTczNjY2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjMzOjAzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTYvMjhdIHRpbWV6b25lOiByZS13cml0dGVuIHR6c2VsZWN0IGFzIHBvc2l4IHNoCi0KLVRvIGF2b2lkIHRoZSBiYXNoIGRlcGVuZGVuY3kuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gdGltZXpvbmUvTWFrZWZpbGUgICAgIHwgMiArLQotIHRpbWV6b25lL3R6c2VsZWN0LmtzaCB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3RpbWV6b25lL01ha2VmaWxlIGIvdGltZXpvbmUvTWFrZWZpbGUKLWluZGV4IDQ5M2RlY2E3OTAuLjM2ZTU1OWUxNmMgMTAwNjQ0Ci0tLS0gYS90aW1lem9uZS9NYWtlZmlsZQotKysrIGIvdGltZXpvbmUvTWFrZWZpbGUKLUBAIC0xMjIsNyArMTIyLDcgQEAgJCh0ZXN0ZGF0YSkvWFQlOiB0ZXN0ZGF0YS9YVCUKLSAJY3AgJDwgJEAKLSAKLSAkKG9ianBmeCl0enNlbGVjdDogdHpzZWxlY3Qua3NoICQoY29tbW9uLW9ianBmeCljb25maWcubWFrZQotLQlzZWQgLWUgJ3N8L2Jpbi9iYXNofCQoQkFTSCl8JyBcCi0rCXNlZCAtZSAnc3wvYmluL2Jhc2h8L2Jpbi9zaHwnIFwKLSAJICAgIC1lICdzfFRaRElSPVtefV0qfFRaRElSPSQoem9uZWRpcil8JyBcCi0gCSAgICAtZSAnL1RaVkVSU0lPTj0vc3xzZWVfTWFrZWZpbGV8IiQodmVyc2lvbikifCcgXAotIAkgICAgLWUgJy9QS0dWRVJTSU9OPS9zfD0uKnw9IiQoUEtHVkVSU0lPTikifCcgXAotZGlmZiAtLWdpdCBhL3RpbWV6b25lL3R6c2VsZWN0LmtzaCBiL3RpbWV6b25lL3R6c2VsZWN0LmtzaAotaW5kZXggMThmY2UyN2UyNC4uNzA3NDVmOWQzNiAxMDA3NTUKLS0tLSBhL3RpbWV6b25lL3R6c2VsZWN0LmtzaAotKysrIGIvdGltZXpvbmUvdHpzZWxlY3Qua3NoCi1AQCAtMzQsNyArMzQsNyBAQCBSRVBPUlRfQlVHU19UTz10ekBpYW5hLm9yZwotIAotICMgU3BlY2lmeSBkZWZhdWx0IHZhbHVlcyBmb3IgZW52aXJvbm1lbnQgdmFyaWFibGVzIGlmIHRoZXkgYXJlIHVuc2V0LgotIDogJHtBV0s9YXdrfQotLTogJHtUWkRJUj1gcHdkYH0KLSs6ICR7VFpESVI9JChwd2QpfQotIAotICMgT3V0cHV0IG9uZSBhcmd1bWVudCBhcy1pcyB0byBzdGFuZGFyZCBvdXRwdXQuCi0gIyBTYWZlciB0aGFuICdlY2hvJywgd2hpY2ggY2FuIG1pc2hhbmRsZSAnXCcgb3IgbGVhZGluZyAnLScuCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTctUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNGY4YTEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy1SZW1vdmUtYmFzaC1kZXBlbmRlbmN5LWZvci1uc2NkLWluaXQtc2NyaXB0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotRnJvbSA5NTg4MmI5ODY0ZmYyMGU0NzZkMTVjNjgyNWM4MzcyOGViOTk1OTdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMzEgRGVjIDIwMTUgMTQ6MzM6MDIgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxNy8yOF0gUmVtb3ZlIGJhc2ggZGVwZW5kZW5jeSBmb3IgbnNjZCBpbml0IHNjcmlwdAotCi1UaGUgbnNjZCBpbml0IHNjcmlwdCB1c2VzICMhIC9iaW4vYmFzaCBidXQgb25seSByZWFsbHkgdXNlcyBvbmUgYmFzaGlzbQotKHRyYW5zbGF0ZWQgc3RyaW5ncyksIHNvIHJlbW92ZSB0aGVtIGFuZCBzd2l0Y2ggdGhlIHNoZWxsIHRvICMhL2Jpbi9zaC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbnNjZC9uc2NkLmluaXQgfCAxNCArKysrKysrLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9uc2NkL25zY2QuaW5pdCBiL25zY2QvbnNjZC5pbml0Ci1pbmRleCBhODgyZGE3ZDhiLi5iMDI5ODZlYzE1IDEwMDY0NAotLS0tIGEvbnNjZC9uc2NkLmluaXQKLSsrKyBiL25zY2QvbnNjZC5pbml0Ci1AQCAtMSw0ICsxLDQgQEAKLS0jIS9iaW4vYmFzaAotKyMhL2Jpbi9zaAotICMKLSAjIG5zY2Q6CQlTdGFydHMgdGhlIE5hbWUgU3dpdGNoIENhY2hlIERhZW1vbgotICMKLUBAIC00OSw3ICs0OSw3IEBAIHByb2c9bnNjZAotIHN0YXJ0ICgpIHsKLSAgICAgWyAtZCAvdmFyL3J1bi9uc2NkIF0gfHwgbWtkaXIgL3Zhci9ydW4vbnNjZAotICAgICBbIC1kIC92YXIvZGIvbnNjZCBdIHx8IG1rZGlyIC92YXIvZGIvbnNjZAotLSAgICBlY2hvIC1uICQiU3RhcnRpbmcgJHByb2c6ICIKLSsgICAgZWNobyAtbiAiU3RhcnRpbmcgJHByb2c6ICIKLSAgICAgZGFlbW9uIC91c3Ivc2Jpbi9uc2NkCi0gICAgIFJFVFZBTD0kPwotICAgICBlY2hvCi1AQCAtNTgsNyArNTgsNyBAQCBzdGFydCAoKSB7Ci0gfQotIAotIHN0b3AgKCkgewotLSAgICBlY2hvIC1uICQiU3RvcHBpbmcgJHByb2c6ICIKLSsgICAgZWNobyAtbiAiU3RvcHBpbmcgJHByb2c6ICIKLSAgICAgL3Vzci9zYmluL25zY2QgLUsKLSAgICAgUkVUVkFMPSQ/Ci0gICAgIGlmIFsgJFJFVFZBTCAtZXEgMCBdOyB0aGVuCi1AQCAtNjcsOSArNjcsOSBAQCBzdG9wICgpIHsKLSAJIyBhIG5vbi1wcml2aWxlZ2VkIHVzZXIKLSAJcm0gLWYgL3Zhci9ydW4vbnNjZC9uc2NkLnBpZAotIAlybSAtZiAvdmFyL3J1bi9uc2NkL3NvY2tldAotLSAgICAgICAJc3VjY2VzcyAkIiRwcm9nIHNodXRkb3duIgotKwlzdWNjZXNzICIkcHJvZyBzaHV0ZG93biIKLSAgICAgZWxzZQotLSAgICAgICAJZmFpbHVyZSAkIiRwcm9nIHNodXRkb3duIgotKwlmYWlsdXJlICIkcHJvZyBzaHV0ZG93biIKLSAgICAgZmkKLSAgICAgZWNobwotICAgICByZXR1cm4gJFJFVFZBTAotQEAgLTEwMywxMyArMTAzLDEzIEBAIGNhc2UgIiQxIiBpbgotIAlSRVRWQUw9JD8KLSAJOzsKLSAgICAgZm9yY2UtcmVsb2FkIHwgcmVsb2FkKQotLSAgICAJZWNobyAtbiAkIlJlbG9hZGluZyAkcHJvZzogIgotKwllY2hvIC1uICJSZWxvYWRpbmcgJHByb2c6ICIKLSAJa2lsbHByb2MgL3Vzci9zYmluL25zY2QgLUhVUAotIAlSRVRWQUw9JD8KLSAJZWNobwotIAk7OwotICAgICAqKQotLQllY2hvICQiVXNhZ2U6ICQwIHtzdGFydHxzdG9wfHN0YXR1c3xyZXN0YXJ0fHJlbG9hZHxjb25kcmVzdGFydH0iCi0rCWVjaG8gIlVzYWdlOiAkMCB7c3RhcnR8c3RvcHxzdGF0dXN8cmVzdGFydHxyZWxvYWR8Y29uZHJlc3RhcnR9IgotIAlSRVRWQUw9MQotIAk7OwotIGVzYWMKLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxNy15ZXMtd2l0aGluLXRoZS1wYXRoLXNldHMtd3JvbmctY29uZmlnLXZhcmlhYmxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OTA4OWFmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE3LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoCkBAIC0wLDAgKzEsMjYwIEBACitGcm9tIGM0MjFjZDdlODg1NDk3YTk5MTc5Yjk4MmRjNGEyN2U4NDA1Zjg4NTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDozMTowNiArMDAwMAorU3ViamVjdDogW1BBVENIXSAneWVzJyB3aXRoaW4gdGhlIHBhdGggc2V0cyB3cm9uZyBjb25maWcgdmFyaWFibGVzCisKK0l0IHNlZW1zIHRoYXQgdGhlICdBQ19FR1JFUF9DUFAoeWVzLi4uJyBleGFtcGxlIGlzIHF1aXRlIHBvcHVsYXIKK2J1dCBiZWluZyBzdWNoIGEgc2hvcnQgd29yZCB0byBncmVwIGl0IGlzIGxpa2VseSB0byBwcm9kdWNlCitmYWxzZS1wb3NpdGl2ZSBtYXRjaGVzIHdpdGggdGhlIHBhdGggaXQgaXMgY29uZmlndXJlZCBpbnRvLgorCitUaGUgY2hhbmdlIGlzIHRvIHVzZSBhIG1vcmUgZWxhYm9yYXRlZCBzdHJpbmcgdG8gZ3JlcCBmb3IuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtsaWJjLWFscGhhQHNvdXJjZXdhcmUub3JnXQorCitTaWduZWQtb2ZmLWJ5OiBCZW5qYW1pbiBFc3F1aXZlbCA8YmVuamFtaW4uZXNxdWl2ZWxAbGludXguaW50ZWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHN5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvYXJtL2NvbmZpZ3VyZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvbWlwcy9jb25maWd1cmUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvbmlvczIvY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlICAgICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjICAgICAgICAgICAgICB8IDQgKystLQorIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZSAgICB8IDggKysrKy0tLS0KKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMgfCA4ICsrKystLS0tCisgMTIgZmlsZXMgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMjggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlIGIvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZQoraW5kZXggNWJkMzU1YTY5MS4uM2JjNTUzN2JjMCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUKK0BAIC0xNDgsMTIgKzE0OCwxMiBAQCBlbHNlCisgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworICNpZmRlZiBfX0FBUkNINjRFQl9fCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgICAgICAgICAgICAgICAgICAgICBpc19hYXJjaDY0X2JlCisgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgImlzX2FhcmNoNjRfYmUiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgICBsaWJjX2N2X2FhcmNoNjRfYmU9eWVzCisgZWxzZQorICAgbGliY19jdl9hYXJjaDY0X2JlPW5vCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvYWFyY2g2NC9jb25maWd1cmUuYWMKK2luZGV4IDc4NTFkZDRkYWMuLjZlOTIzODE3MWYgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjCisrKysgYi9zeXNkZXBzL2FhcmNoNjQvY29uZmlndXJlLmFjCitAQCAtMTAsOCArMTAsOCBAQCBHTElCQ19QUk9WSURFUyBkbmwgU2VlIGFjbG9jYWwubTQgaW4gdGhlIHRvcCBsZXZlbCBzb3VyY2UgZGlyZWN0b3J5LgorICMgdGhlIGR5bmFtaWMgbGlua2VyIHZpYSAlaWZkZWYuCisgQUNfQ0FDSEVfQ0hFQ0soW2ZvciBiaWcgZW5kaWFuXSwKKyAgIFtsaWJjX2N2X2FhcmNoNjRfYmVdLAorLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfX0FBUkNINjRFQl9fCistICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgW0FDX0VHUkVQX0NQUChpc19hYXJjaDY0X2JlLFsjaWZkZWYgX19BQVJDSDY0RUJfXworKyAgICAgICAgICAgICAgICAgICAgICBpc19hYXJjaDY0X2JlCisgICAgICAgICAgICAgICAgICAgICAgI2VuZGlmCisgICBdLCBsaWJjX2N2X2FhcmNoNjRfYmU9eWVzLCBsaWJjX2N2X2FhcmNoNjRfYmU9bm8pXSkKKyBpZiB0ZXN0ICRsaWJjX2N2X2FhcmNoNjRfYmUgPSB5ZXM7IHRoZW4KK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9jb25maWd1cmUgYi9zeXNkZXBzL2FybS9jb25maWd1cmUKK2luZGV4IDQzMWU4NDNiMmIuLmUxNTI0NjExMzggMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FybS9jb25maWd1cmUKKysrKyBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZQorQEAgLTE1MSwxMiArMTUxLDEyIEBAIGVsc2UKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgI2lmZGVmIF9fQVJNX1BDU19WRlAKKy0JCSAgICAgIHllcworKwkJICAgICAgdXNlX2FybV9wY3NfdmZwCisgCQkgICAgICNlbmRpZgorIAorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJ1c2VfYXJtX3Bjc192ZnAiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgICBsaWJjX2N2X2FybV9wY3NfdmZwPXllcworIGVsc2UKKyAgIGxpYmNfY3ZfYXJtX3Bjc192ZnA9bm8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMgYi9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMKK2luZGV4IDkwY2RkNjljNzUuLjA1YTI2MmJhMDAgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FybS9jb25maWd1cmUuYWMKKysrKyBiL3N5c2RlcHMvYXJtL2NvbmZpZ3VyZS5hYworQEAgLTE1LDggKzE1LDggQEAgQUNfREVGSU5FKFBJX1NUQVRJQ19BTkRfSElEREVOKQorICMgdGhlIGR5bmFtaWMgbGlua2VyIHZpYSAlaWZkZWYuCisgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSBBUk0gaGFyZC1mbG9hdCBBQkldLAorICAgW2xpYmNfY3ZfYXJtX3Bjc192ZnBdLAorLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfX0FSTV9QQ1NfVkZQCistCQkgICAgICB5ZXMKKysgIFtBQ19FR1JFUF9DUFAodXNlX2FybV9wY3NfdmZwLFsjaWZkZWYgX19BUk1fUENTX1ZGUAorKwkJICAgICAgdXNlX2FybV9wY3NfdmZwCisgCQkgICAgICNlbmRpZgorICAgXSwgbGliY19jdl9hcm1fcGNzX3ZmcD15ZXMsIGxpYmNfY3ZfYXJtX3Bjc192ZnA9bm8pXSkKKyBpZiB0ZXN0ICRsaWJjX2N2X2FybV9wY3NfdmZwID0geWVzOyB0aGVuCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZSBiL3N5c2RlcHMvbWlwcy9jb25maWd1cmUKK2luZGV4IDRlMTMyNDhjMDMuLmYxNGFmOTUyZDAgMTAwNjQ0CistLS0gYS9zeXNkZXBzL21pcHMvY29uZmlndXJlCisrKysgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlCitAQCAtMTQzLDExICsxNDMsMTEgQEAgZWxzZQorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyBkbmwKKyAjaWZkZWYgX19taXBzX25hbjIwMDgKKy15ZXMKKyt1c2VfbWlwc19uYW4yMDA4CisgI2VuZGlmCisgX0FDRU9GCisgaWYgKGV2YWwgIiRhY19jcHAgY29uZnRlc3QuJGFjX2V4dCIpIDI+JjUgfAorLSAgJEVHUkVQICJ5ZXMiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisrICAkRUdSRVAgInVzZV9taXBzX25hbjIwMDgiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgICBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMKKyBlbHNlCisgICBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubworZGlmZiAtLWdpdCBhL3N5c2RlcHMvbWlwcy9jb25maWd1cmUuYWMgYi9zeXNkZXBzL21pcHMvY29uZmlndXJlLmFjCitpbmRleCBiY2JkYWZmZDlmLi5hZDMwNTdmNGNjIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYworKysrIGIvc3lzZGVwcy9taXBzL2NvbmZpZ3VyZS5hYworQEAgLTYsOSArNiw5IEBAIGRubCBwb3NpdGlvbiBpbmRlcGVuZGVudCB3YXkuCisgZG5sIEFDX0RFRklORShQSV9TVEFUSUNfQU5EX0hJRERFTikKKyAKKyBBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgY29tcGlsZXIgaXMgdXNpbmcgdGhlIDIwMDggTmFOIGVuY29kaW5nXSwKKy0gIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHllcywgW2RubAorKyAgbGliY19jdl9taXBzX25hbjIwMDgsIFtBQ19FR1JFUF9DUFAodXNlX21pcHNfbmFuMjAwOCwgW2RubAorICNpZmRlZiBfX21pcHNfbmFuMjAwOAorLXllcworK3VzZV9taXBzX25hbjIwMDgKKyAjZW5kaWZdLCBsaWJjX2N2X21pcHNfbmFuMjAwOD15ZXMsIGxpYmNfY3ZfbWlwc19uYW4yMDA4PW5vKV0pCisgaWYgdGVzdCB4JGxpYmNfY3ZfbWlwc19uYW4yMDA4ID0geHllczsgdGhlbgorICAgQUNfREVGSU5FKEhBVkVfTUlQU19OQU4yMDA4KQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvbmlvczIvY29uZmlndXJlIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUKK2luZGV4IDE0YzhhM2EwMTQuLmRkZTM4MTRlZjIgMTAwNjQ0CistLS0gYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZQorKysrIGIvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUKK0BAIC0xNDIsMTIgKzE0MiwxMiBAQCBlbHNlCisgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworICNpZmRlZiBfX25pb3MyX2JpZ19lbmRpYW5fXworLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKKysgICAgICAgICAgICAgICAgICAgICAgaXNfbmlvczJfYmUKKyAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAiaXNfbmlvczJfYmUiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgICBsaWJjX2N2X25pb3MyX2JlPXllcworIGVsc2UKKyAgIGxpYmNfY3ZfbmlvczJfYmU9bm8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL25pb3MyL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjCitpbmRleCBmMDVmNDM4MDJiLi5kYzg2Mzk5MDJkIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9uaW9zMi9jb25maWd1cmUuYWMKKysrKyBiL3N5c2RlcHMvbmlvczIvY29uZmlndXJlLmFjCitAQCAtNCw4ICs0LDggQEAgR0xJQkNfUFJPVklERVMgZG5sIFNlZSBhY2xvY2FsLm00IGluIHRoZSB0b3AgbGV2ZWwgc291cmNlIGRpcmVjdG9yeS4KKyAjIE5pb3MgSUkgYmlnIGVuZGlhbiBpcyBub3QgeWV0IHN1cHBvcnRlZC4KKyBBQ19DQUNIRV9DSEVDSyhbZm9yIGJpZyBlbmRpYW5dLAorICAgW2xpYmNfY3ZfbmlvczJfYmVdLAorLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZmRlZiBfX25pb3MyX2JpZ19lbmRpYW5fXworLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKKysgIFtBQ19FR1JFUF9DUFAoaXNfbmlvczJfYmUsWyNpZmRlZiBfX25pb3MyX2JpZ19lbmRpYW5fXworKyAgICAgICAgICAgICAgICAgICAgICBpc19uaW9zMl9iZQorICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgXSwgbGliY19jdl9uaW9zMl9iZT15ZXMsIGxpYmNfY3ZfbmlvczJfYmU9bm8pXSkKKyBpZiB0ZXN0ICRsaWJjX2N2X25pb3MyX2JlID0geWVzOyB0aGVuCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZQoraW5kZXggMjVmOThlMGM3Yi4uZTk1YmZhZTM1OSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZQorQEAgLTQxNCwxMSArNDE0LDExIEBAIGVsc2UKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgZG5sCisgI2lmZGVmIF9fbWlwc19uYW4yMDA4CisteWVzCisrdXNlX21pcHNfbmFuMjAwOAorICNlbmRpZgorIF9BQ0VPRgorIGlmIChldmFsICIkYWNfY3BwIGNvbmZ0ZXN0LiRhY19leHQiKSAyPiY1IHwKKy0gICRFR1JFUCAieWVzIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorKyAgJEVHUkVQICJ1c2VfbWlwc19uYW4yMDA4IiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICAgbGliY19jdl9taXBzX25hbjIwMDg9eWVzCisgZWxzZQorICAgbGliY19jdl9taXBzX25hbjIwMDg9bm8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9taXBzL2NvbmZpZ3VyZS5hYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjCitpbmRleCAzZGIxYjMyYjA4Li5mOGNkMzc1ZWJjIDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvbWlwcy9jb25maWd1cmUuYWMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L21pcHMvY29uZmlndXJlLmFjCitAQCAtMTA1LDkgKzEwNSw5IEBAIEFDX0NPTVBJTEVfSUZFTFNFKAorIExJQkNfQ09ORklHX1ZBUihbbWlwcy1tb2RlLXN3aXRjaF0sWyR7bGliY19taXBzX21vZGVfc3dpdGNofV0pCisgCisgQUNfQ0FDSEVfQ0hFQ0soW3doZXRoZXIgdGhlIGNvbXBpbGVyIGlzIHVzaW5nIHRoZSAyMDA4IE5hTiBlbmNvZGluZ10sCistICBsaWJjX2N2X21pcHNfbmFuMjAwOCwgW0FDX0VHUkVQX0NQUCh5ZXMsIFtkbmwKKysgIGxpYmNfY3ZfbWlwc19uYW4yMDA4LCBbQUNfRUdSRVBfQ1BQKHVzZV9taXBzX25hbjIwMDgsIFtkbmwKKyAjaWZkZWYgX19taXBzX25hbjIwMDgKKy15ZXMKKyt1c2VfbWlwc19uYW4yMDA4CisgI2VuZGlmXSwgbGliY19jdl9taXBzX25hbjIwMDg9eWVzLCBsaWJjX2N2X21pcHNfbmFuMjAwOD1ubyldKQorIAorIGxpYmNfbWlwc19uYW49CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlCitpbmRleCBhZTdmMjU0ZGE0Li44NzQ1MTkwMDBiIDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9wb3dlcnBjNjQvY29uZmlndXJlCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUKK0BAIC0xNTUsMTIgKzE1NSwxMiBAQCBlbHNlCisgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworICNpZiBfQ0FMTF9FTEYgPT0gMgorLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKKysgICAgICAgICAgICAgICAgICAgICAgdXNlX3BwY19lbGZ2Ml9hYmkKKyAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAidXNlX3BwY19lbGZ2Ml9hYmkiID4vZGV2L251bGwgMj4mMTsgdGhlbiA6CisgICBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT15ZXMKKyBlbHNlCisgICBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT1ubworQEAgLTE4OCwxMiArMTg4LDEyIEBAIGVsc2UKKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgI2lmZGVmIF9DQUxMX0VMRgorLSAgICAgICAgICAgICAgICAgICAgICAgICB5ZXMKKysgICAgICAgICAgICAgICAgICAgICAgICAgaXNfZGVmX2NhbGxfZWxmCisgICAgICAgICAgICAgICAgICAgICAgICAjZW5kaWYKKyAKKyBfQUNFT0YKKyBpZiAoZXZhbCAiJGFjX2NwcCBjb25mdGVzdC4kYWNfZXh0IikgMj4mNSB8CistICAkRUdSRVAgInllcyIgPi9kZXYvbnVsbCAyPiYxOyB0aGVuIDoKKysgICRFR1JFUCAiaXNfZGVmX2NhbGxfZWxmIiA+L2Rldi9udWxsIDI+JjE7IHRoZW4gOgorICAgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9eWVzCisgZWxzZQorICAgbGliY19jdl9wcGM2NF9kZWZfY2FsbF9lbGY9bm8KK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMKK2luZGV4IGY5Y2JhNmUxNWQuLmIyMWY3MmYxZTQgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL3Bvd2VycGM2NC9jb25maWd1cmUuYWMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvcG93ZXJwYzY0L2NvbmZpZ3VyZS5hYworQEAgLTYsOCArNiw4IEBAIExJQkNfU0xJQkRJUl9SVExERElSKFtsaWI2NF0sIFtsaWI2NF0pCisgIyBEZWZpbmUgZGVmYXVsdC1hYmkgYWNjb3JkaW5nIHRvIGNvbXBpbGVyIGZsYWdzLgorIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBpcyB1c2luZyB0aGUgUG93ZXJQQzY0IEVMRnYyIEFCSV0sCisgICBbbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmldLAorLSAgW0FDX0VHUkVQX0NQUCh5ZXMsWyNpZiBfQ0FMTF9FTEYgPT0gMgorLSAgICAgICAgICAgICAgICAgICAgICB5ZXMKKysgIFtBQ19FR1JFUF9DUFAodXNlX3BwY19lbGZ2Ml9hYmksWyNpZiBfQ0FMTF9FTEYgPT0gMgorKyAgICAgICAgICAgICAgICAgICAgICB1c2VfcHBjX2VsZnYyX2FiaQorICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgXSwgbGliY19jdl9wcGM2NF9lbGZ2Ml9hYmk9eWVzLCBsaWJjX2N2X3BwYzY0X2VsZnYyX2FiaT1ubyldKQorIGlmIHRlc3QgJGxpYmNfY3ZfcHBjNjRfZWxmdjJfYWJpID0geWVzOyB0aGVuCitAQCAtMTksOCArMTksOCBAQCBlbHNlCisgICAjIENvbXBpbGVyIHRoYXQgZG8gbm90IHN1cHBvcnQgRUxGdjIgQUJJIGRvZXMgbm90IGRlZmluZSBfQ0FMTF9FTEYKKyAgIEFDX0NBQ0hFX0NIRUNLKFt3aGV0aGVyIHRoZSBjb21waWxlciBkZWZpbmVzIF9DQUxMX0VMRl0sCisgICAgIFtsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZl0sCistICAgIFtBQ19FR1JFUF9DUFAoeWVzLFsjaWZkZWYgX0NBTExfRUxGCistICAgICAgICAgICAgICAgICAgICAgICAgIHllcworKyAgICBbQUNfRUdSRVBfQ1BQKGlzX2RlZl9jYWxsX2VsZixbI2lmZGVmIF9DQUxMX0VMRgorKyAgICAgICAgICAgICAgICAgICAgICAgICBpc19kZWZfY2FsbF9lbGYKKyAgICAgICAgICAgICAgICAgICAgICAgICNlbmRpZgorICAgICBdLCBsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZj15ZXMsIGxpYmNfY3ZfcHBjNjRfZGVmX2NhbGxfZWxmPW5vKV0pCisgICBpZiB0ZXN0ICRsaWJjX2N2X3BwYzY0X2RlZl9jYWxsX2VsZiA9IG5vOyB0aGVuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiNWVmYzQzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjE5ICswLDAgQEAKLUZyb20gNmI2MDNkMjVjYzU3MjNiYTYzMWRmYzYwYjU0NDc3NGRiMTE0N2Q4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjQyOjU4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTgvMjhdIGVnbGliYzogQ3Jvc3MgYnVpbGRpbmcgYW5kIHRlc3RpbmcgaW5zdHJ1Y3Rpb25zCi0KLVBvcnRlZCBmcm9tIGVnbGliYwotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBHTElCQy5jcm9zcy1idWlsZGluZyB8IDM4MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gR0xJQkMuY3Jvc3MtdGVzdGluZyAgfCAyMDUgKysrKysrKysrKysrKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDU4OCBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IEdMSUJDLmNyb3NzLWJ1aWxkaW5nCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IEdMSUJDLmNyb3NzLXRlc3RpbmcKLQotZGlmZiAtLWdpdCBhL0dMSUJDLmNyb3NzLWJ1aWxkaW5nIGIvR0xJQkMuY3Jvc3MtYnVpbGRpbmcKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi5lNmUwZGExYWFmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9HTElCQy5jcm9zcy1idWlsZGluZwotQEAgLTAsMCArMSwzODMgQEAKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0qLSBtb2RlOiB0ZXh0IC0qLQotKwotKyAgICAgICAgICAgICAgICAgICAgICAgIENyb3NzLUNvbXBpbGluZyBHTElCQwotKyAgICAgICAgICAgICAgICAgIEppbSBCbGFuZHkgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KLSsKLSsKLStJbnRyb2R1Y3Rpb24KLSsKLStNb3N0IEdOVSB0b29scyBoYXZlIGEgc2ltcGxlIGJ1aWxkIHByb2NlZHVyZTogeW91IHJ1biB0aGVpcgotKydjb25maWd1cmUnIHNjcmlwdCwgYW5kIHRoZW4geW91IHJ1biAnbWFrZScuICBVbmZvcnR1bmF0ZWx5LCB0aGUKLStwcm9jZXNzIG9mIGNyb3NzLWNvbXBpbGluZyB0aGUgR05VIEMgbGlicmFyeSBpcyBxdWl0ZSBhIGJpdCBtb3JlCi0raW52b2x2ZWQ6Ci0rCi0rMSkgQnVpbGQgYSBjcm9zcy1jb21waWxlciwgd2l0aCBjZXJ0YWluIGZhY2lsaXRpZXMgZGlzYWJsZWQuCi0rCi0rMikgQ29uZmlndXJlIHRoZSBDIGxpYnJhcnkgdXNpbmcgdGhlIGNvbXBpbGVyIHlvdSBidWlsdCBpbiBzdGVwIDEpLgotKyAgIEJ1aWxkIGEgZmV3IG9mIHRoZSBDIHJ1bi10aW1lIG9iamVjdCBmaWxlcywgYnV0IG5vdCB0aGUgcmVzdCBvZiB0aGUKLSsgICBsaWJyYXJ5LiAgSW5zdGFsbCB0aGUgbGlicmFyeSdzIGhlYWRlciBmaWxlcyBhbmQgdGhlIHJ1bi10aW1lCi0rICAgb2JqZWN0IGZpbGVzLCBhbmQgY3JlYXRlIGEgZHVtbXkgbGliYy5zby4KLSsKLSszKSBCdWlsZCBhIHNlY29uZCBjcm9zcy1jb21waWxlciwgdXNpbmcgdGhlIGhlYWRlciBmaWxlcyBhbmQgb2JqZWN0Ci0rICAgZmlsZXMgeW91IGluc3RhbGxlZCBpbiBzdGVwIDIuCi0rCi0rNCkgQ29uZmlndXJlLCBidWlsZCwgYW5kIGluc3RhbGwgYSBmcmVzaCBDIGxpYnJhcnksIHVzaW5nIHRoZSBjb21waWxlcgotKyAgIGJ1aWx0IGluIHN0ZXAgMy4KLSsKLSs1KSBCdWlsZCBhIHRoaXJkIGNyb3NzLWNvbXBpbGVyLCBiYXNlZCBvbiB0aGUgQyBsaWJyYXJ5IGJ1aWx0IGluIHN0ZXAgNC4KLSsKLStUaGUgcmVhc29uIGZvciB0aGlzIGNvbXBsZXhpdHkgaXMgdGhhdCwgYWx0aG91Z2ggR0NDIGFuZCB0aGUgR05VIEMKLStsaWJyYXJ5IGFyZSBkaXN0cmlidXRlZCBzZXBhcmF0ZWx5LCB0aGV5IGFyZSBub3QgYWN0dWFsbHkgaW5kZXBlbmRlbnQKLStvZiBlYWNoIG90aGVyOiBHQ0MgcmVxdWlyZXMgdGhlIEMgbGlicmFyeSdzIGhlYWRlcnMgYW5kIHNvbWUgb2JqZWN0Ci0rZmlsZXMgdG8gY29tcGlsZSBpdHMgb3duIGxpYnJhcmllcywgd2hpbGUgdGhlIEMgbGlicmFyeSBkZXBlbmRzIG9uCi0rR0NDJ3MgbGlicmFyaWVzLiAgR0xJQkMgaW5jbHVkZXMgZmVhdHVyZXMgYW5kIGJ1ZyBmaXhlcyB0byB0aGUgc3RvY2sKLStHTlUgQyBsaWJyYXJ5IHRoYXQgc2ltcGxpZnkgdGhpcyBwcm9jZXNzLCBidXQgdGhlIGZ1bmRhbWVudGFsCi0raW50ZXJkZXBlbmRlbmN5IHN0YW5kcy4KLSsKLStJbiB0aGlzIGRvY3VtZW50LCB3ZSBleHBsYWluIGhvdyB0byBjcm9zcy1jb21waWxlIGFuIEdMSUJDL0dDQyBwYWlyCi0rZnJvbSBzb3VyY2UuICBPdXIgaW50ZW5kZWQgYXVkaWVuY2UgaXMgZGV2ZWxvcGVycyB3aG8gYXJlIGFscmVhZHkKLStmYW1pbGlhciB3aXRoIHRoZSBHTlUgdG9vbGNoYWluIGFuZCBjb21mb3J0YWJsZSB3b3JraW5nIHdpdGgKLStjcm9zcy1kZXZlbG9wbWVudCB0b29scy4gIFdoaWxlIHdlIGRvIHByZXNlbnQgYSB3b3JrZWQgZXhhbXBsZSB0bwotK2FjY29tcGFueSB0aGUgZXhwbGFuYXRpb24sIGZvciBjbGFyaXR5J3Mgc2FrZSB3ZSBkbyBub3QgY292ZXIgbWFueSBvZgotK3RoZSBvcHRpb25zIGF2YWlsYWJsZSB0byBjcm9zcy10b29sY2hhaW4gdXNlcnMuCi0rCi0rCi0rUHJlcGFyYXRpb24KLSsKLStHTElCQyByZXF1aXJlcyByZWNlbnQgdmVyc2lvbnMgb2YgdGhlIEdOVSBiaW51dGlscywgR0NDLCBhbmQgdGhlCi0rTGludXgga2VybmVsLiAgVGhlIHdlYiBwYWdlIDxodHRwOi8vd3d3LmVnbGliYy5vcmcvcHJlcmVxdWlzaXRlcz4KLStkb2N1bWVudHMgdGhlIGN1cnJlbnQgcmVxdWlyZW1lbnRzLCBhbmQgbGlzdHMgcGF0Y2hlcyBuZWVkZWQgZm9yCi0rY2VydGFpbiB0YXJnZXQgYXJjaGl0ZWN0dXJlcy4gIEFzIG9mIHRoaXMgd3JpdGluZywgdGhlc2UgYnVpbGQKLStpbnN0cnVjdGlvbnMgaGF2ZSBiZWVuIHRlc3RlZCB3aXRoIGJpbnV0aWxzIDIuMjIuNTEsIEdDQyA0LjYuMiwKLSthbmQgTGludXggMy4xLgotKwotK0ZpcnN0LCBsZXQncyBzZXQgc29tZSB2YXJpYWJsZXMsIHRvIHNpbXBsaWZ5IGxhdGVyIGNvbW1hbmRzLiAgV2UnbGwKLStidWlsZCBHTElCQyBhbmQgR0NDIGZvciBhbiBBUk0gdGFyZ2V0LCBrbm93biB0byB0aGUgTGludXgga2VybmVsCi0rYXMgJ2FybScsIGFuZCB3ZSdsbCBkbyB0aGUgYnVpbGQgb24gYW4gSW50ZWwgeDg2XzY0IExpbnV4IGJveDoKLSsKLSsgICAgJCBidWlsZD14ODZfNjQtcGMtbGludXgtZ251Ci0rICAgICQgaG9zdD0kYnVpbGQKLSsgICAgJCB0YXJnZXQ9YXJtLW5vbmUtbGludXgtZ251ZWFiaQotKyAgICAkIGxpbnV4X2FyY2g9YXJtCi0rCi0rV2UncmUgdXNpbmcgdGhlIGFmb3JlbWVudGlvbmVkIHZlcnNpb25zIG9mIEJpbnV0aWxzLCBHQ0MsIGFuZCBMaW51eDoKLSsKLSsgICAgJCBiaW51dGlsc3Y9YmludXRpbHMtMi4yMi41MQotKyAgICAkIGdjY3Y9Z2NjLTQuNi4yCi0rICAgICQgbGludXh2PWxpbnV4LTMuMQotKwotK1dlJ3JlIGNhcnJ5aW5nIG91dCB0aGUgZW50aXJlIHByb2Nlc3MgdW5kZXIgJ34vY3Jvc3MtYnVpbGQnLCB3aGljaAotK2NvbnRhaW5zIHVucGFja2VkIHNvdXJjZSB0cmVlcyBmb3IgYmludXRpbHMsIGdjYywgYW5kIGxpbnV4IGtlcm5lbCwKLSthbG9uZyB3aXRoIEdMSUJDIHN2biB0cnVuayAod2hpY2ggY2FuIGJlIGNoZWNrZWQtb3V0IHdpdGgKLSsnc3ZuIGNvIGh0dHA6Ly93d3cuZWdsaWJjLm9yZy9zdm4vdHJ1bmsgZWdsaWJjJyk6Ci0rCi0rICAgICQgdG9wPSRIT01FL2Nyb3NzLWJ1aWxkLyR0YXJnZXQKLSsgICAgJCBzcmM9JEhPTUUvY3Jvc3MtYnVpbGQvc3JjCi0rICAgICQgbHMgJHNyYwotKyAgICBiaW51dGlscy0yLjIyLjUxICBnbGliYyAgZ2NjLTQuNi4yICBsaW51eC0zLjEKLSsKLStXZSdyZSBnb2luZyB0byBwbGFjZSBvdXIgYnVpbGQgZGlyZWN0b3JpZXMgaW4gYSBzdWJkaXJlY3RvcnkgJ29iaicsCi0rd2UnbGwgaW5zdGFsbCB0aGUgY3Jvc3MtZGV2ZWxvcG1lbnQgdG9vbGNoYWluIGluICd0b29scycsIGFuZCB3ZSdsbAotK3BsYWNlIG91ciBzeXNyb290IChjb250YWluaW5nIGZpbGVzIHRvIGJlIGluc3RhbGxlZCBvbiB0aGUgdGFyZ2V0Ci0rc3lzdGVtKSBpbiAnc3lzcm9vdCc6Ci0rCi0rICAgICQgb2JqPSR0b3Avb2JqCi0rICAgICQgdG9vbHM9JHRvcC90b29scwotKyAgICAkIHN5c3Jvb3Q9JHRvcC9zeXNyb290Ci0rCi0rCi0rQmludXRpbHMKLSsKLStDb25maWd1cmluZyBhbmQgYnVpbGRpbmcgYmludXRpbHMgZm9yIHRoZSB0YXJnZXQgaXMgc3RyYWlnaHRmb3J3YXJkOgotKwotKyAgICAkIG1rZGlyIC1wICRvYmovYmludXRpbHMKLSsgICAgJCBjZCAkb2JqL2JpbnV0aWxzCi0rICAgICQgJHNyYy8kYmludXRpbHN2L2NvbmZpZ3VyZSBcCi0rICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAotKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdAotKyAgICAkIG1ha2UKLSsgICAgJCBtYWtlIGluc3RhbGwKLSsKLSsKLStUaGUgRmlyc3QgR0NDCi0rCi0rRm9yIG91ciB3b3JrLCB3ZSBuZWVkIGEgY3Jvc3MtY29tcGlsZXIgdGFyZ2V0aW5nIGFuIEFSTSBMaW51eAotK3N5c3RlbS4gIEhvd2V2ZXIsIHRoYXQgY29uZmlndXJhdGlvbiBpbmNsdWRlcyB0aGUgc2hhcmVkIGxpYnJhcnkKLSsnbGliZ2NjX3Muc28nLCB3aGljaCBpcyBjb21waWxlZCBhZ2FpbnN0IHRoZSBHTElCQyBoZWFkZXJzICh3aGljaCB3ZQotK2hhdmVuJ3QgaW5zdGFsbGVkIHlldCkgYW5kIGxpbmtlZCBhZ2FpbnN0ICdsaWJjLnNvJyAod2hpY2ggd2UgaGF2ZW4ndAotK2J1aWx0IHlldCkuCi0rCi0rRm9ydHVuYXRlbHksIHRoZXJlIGFyZSBjb25maWd1cmF0aW9uIG9wdGlvbnMgZm9yIEdDQyB3aGljaCB0ZWxsIGl0IG5vdAotK3RvIGJ1aWxkICdsaWJnY2Nfcy5zbycuICBUaGUgJy0td2l0aG91dC1oZWFkZXJzJyBvcHRpb24gaXMgc3VwcG9zZWQgdG8KLSt0YWtlIGNhcmUgb2YgdGhpcywgYnV0IGl0cyBpbXBsZW1lbnRhdGlvbiBpcyBpbmNvbXBsZXRlLCBzbyB5b3UgbXVzdAotK2Fsc28gY29uZmlndXJlIHdpdGggdGhlICctLXdpdGgtbmV3bGliJyBvcHRpb24uICBXaGlsZSAnLS13aXRoLW5ld2xpYicKLSthcHBlYXJzIHRvIG1lYW4gIlVzZSB0aGUgTmV3bGliIEMgbGlicmFyeSIsIGl0cyBlZmZlY3QgaXMgdG8gdGVsbCB0aGUKLStHQ0MgYnVpbGQgbWFjaGluZXJ5LCAiRG9uJ3QgYXNzdW1lIHRoZXJlIGlzIGEgQyBsaWJyYXJ5IGF2YWlsYWJsZS4iCi0rCi0rV2UgYWxzbyBuZWVkIHRvIGRpc2FibGUgc29tZSBvZiB0aGUgbGlicmFyaWVzIHRoYXQgd291bGQgbm9ybWFsbHkgYmUKLStidWlsdCBhbG9uZyB3aXRoIEdDQywgYW5kIHNwZWNpZnkgdGhhdCBvbmx5IHRoZSBjb21waWxlciBmb3IgdGhlIEMKLStsYW5ndWFnZSBpcyBuZWVkZWQuCi0rCi0rU28sIHdlIGNyZWF0ZSBhIGJ1aWxkIGRpcmVjdG9yeSwgY29uZmlndXJlLCBtYWtlLCBhbmQgaW5zdGFsbC4KLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2djYzEKLSsgICAgJCBjZCAkb2JqL2djYzEKLSsgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCi0rICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAotKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAotKyAgICA+ICAgICAtLXdpdGhvdXQtaGVhZGVycyAtLXdpdGgtbmV3bGliIFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLXNoYXJlZCAtLWRpc2FibGUtdGhyZWFkcyAtLWRpc2FibGUtbGlic3NwIFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoIFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLWRlY2ltYWwtZmxvYXQgLS1kaXNhYmxlLWxpYmZmaSBcCi0rICAgID4gICAgIC0tZW5hYmxlLWxhbmd1YWdlcz1jCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCi0rCi0rCi0rTGludXggS2VybmVsIEhlYWRlcnMKLSsKLStUbyBjb25maWd1cmUgR0xJQkMsIHdlIGFsc28gbmVlZCBMaW51eCBrZXJuZWwgaGVhZGVycyBpbiBwbGFjZS4KLStGb3J0dW5hdGVseSwgdGhlIExpbnV4IG1ha2VmaWxlcyBoYXZlIGEgdGFyZ2V0IHRoYXQgaW5zdGFsbHMgdGhlbSBmb3IKLSt1cy4gIFNpbmNlIHRoZSBwcm9jZXNzIGRvZXMgbW9kaWZ5IHRoZSBzb3VyY2UgdHJlZSBhIGJpdCwgd2UgbWFrZSBhCi0rY29weSBmaXJzdDoKLSsKLSsgICAgJCBjcCAtciAkc3JjLyRsaW51eHYgJG9iai9saW51eAotKyAgICAkIGNkICRvYmovbGludXgKLSsKLStOb3cgd2UncmUgcmVhZHkgdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBpbnRvIHRoZSBzeXNyb290OgotKwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBcCi0rICAgID4gbWFrZSBoZWFkZXJzX2luc3RhbGwgXAotKyAgICA+ICAgICAgQVJDSD0kbGludXhfYXJjaCBDUk9TU19DT01QSUxFPSR0YXJnZXQtIFwKLSsgICAgPiAgICAgIElOU1RBTExfSERSX1BBVEg9JHN5c3Jvb3QvdXNyCi0rCi0rCi0rR0xJQkMgSGVhZGVycyBhbmQgUHJlbGltaW5hcnkgT2JqZWN0cwotKwotK1VzaW5nIHRoZSBjcm9zcy1jb21waWxlciB3ZSd2ZSBqdXN0IGJ1aWx0LCB3ZSBjYW4gbm93IGNvbmZpZ3VyZSBHTElCQwotK3dlbGwgZW5vdWdoIHRvIGluc3RhbGwgdGhlIGhlYWRlcnMgYW5kIGJ1aWxkIHRoZSBvYmplY3QgZmlsZXMgdGhhdCB0aGUKLStmdWxsIGNyb3NzLWNvbXBpbGVyIHdpbGwgbmVlZDoKLSsKLSsgICAgJCBta2RpciAtcCAkb2JqL2dsaWJjLWhlYWRlcnMKLSsgICAgJCBjZCAkb2JqL2dsaWJjLWhlYWRlcnMKLSsgICAgJCBCVUlMRF9DQz1nY2MgXAotKyAgICA+IENDPSR0b29scy9iaW4vJHRhcmdldC1nY2MgXAotKyAgICA+IENYWD0kdG9vbHMvYmluLyR0YXJnZXQtZysrIFwKLSsgICAgPiBBUj0kdG9vbHMvYmluLyR0YXJnZXQtYXIgXAotKyAgICA+IFJBTkxJQj0kdG9vbHMvYmluLyR0YXJnZXQtcmFubGliIFwKLSsgICAgPiAkc3JjL2dsaWJjL2xpYmMvY29uZmlndXJlIFwKLSsgICAgPiAgICAgLS1wcmVmaXg9L3VzciBcCi0rICAgID4gICAgIC0td2l0aC1oZWFkZXJzPSRzeXNyb290L3Vzci9pbmNsdWRlIFwKLSsgICAgPiAgICAgLS1idWlsZD0kYnVpbGQgXAotKyAgICA+ICAgICAtLWhvc3Q9JHRhcmdldCBcCi0rICAgID4gICAgIC0tZGlzYWJsZS1wcm9maWxlIC0td2l0aG91dC1nZCAtLXdpdGhvdXQtY3ZzIFwKLSsgICAgPiAgICAgLS1lbmFibGUtYWRkLW9ucz1ucHRsLGxpYmlkbiwuLi9wb3J0cwotKwotK1RoZSBvcHRpb24gJy0tcHJlZml4PS91c3InIG1heSBsb29rIHN0cmFuZ2UsIGJ1dCB5b3Ugc2hvdWxkIG5ldmVyCi0rY29uZmlndXJlIEdMSUJDIHdpdGggYSBwcmVmaXggb3RoZXIgdGhhbiAnL3Vzcic6IGluIHZhcmlvdXMgcGxhY2VzLAotK0dMSUJDJ3MgYnVpbGQgc3lzdGVtIGNoZWNrcyB3aGV0aGVyIHRoZSBwcmVmaXggaXMgJy91c3InLCBhbmQgZG9lcwotK3NwZWNpYWwgaGFuZGxpbmcgb25seSBpZiB0aGF0IGlzIHRoZSBjYXNlLiAgVW5sZXNzIHlvdSB1c2UgdGhpcwotK3ByZWZpeCwgeW91IHdpbGwgZ2V0IGEgc3lzcm9vdCB0aGF0IGRvZXMgbm90IHVzZSB0aGUgc3RhbmRhcmQgTGludXgKLStkaXJlY3RvcnkgbGF5b3V0cyBhbmQgY2Fubm90IGJlIHVzZWQgYXMgYSBiYXNpcyBmb3IgdGhlIHJvb3QKLStmaWxlc3lzdGVtIG9uIHlvdXIgdGFyZ2V0IHN5c3RlbSBjb21wYXRpYmx5IHdpdGggbm9ybWFsIEdMSUJDCi0raW5zdGFsbGF0aW9ucy4KLSsKLStUaGUgJy0td2l0aC1oZWFkZXJzJyBvcHRpb24gdGVsbHMgR0xJQkMgd2hlcmUgdGhlIExpbnV4IGhlYWRlcnMgaGF2ZQotK2JlZW4gaW5zdGFsbGVkLgotKwotK1RoZSAnLS1lbmFibGUtYWRkLW9ucz1ucHRsLGxpYmlkbiwuLi9wb3J0cycgb3B0aW9uIHRlbGxzIEdMSUJDIHRvIGxvb2sKLStmb3IgdGhlIGxpc3RlZCBnbGliYyBhZGQtb25zLiBNb3N0IG5vdGFibHkgdGhlIHBvcnRzIGFkZC1vbiAobG9jYXRlZAotK2p1c3QgYWJvdmUgdGhlIGxpYmMgc291cmNlcyBpbiB0aGUgR0xJQkMgc3ZuIHRyZWUpIGlzIHJlcXVpcmVkIHRvCi0rc3VwcG9ydCBBUk0gdGFyZ2V0cy4KLSsKLStXZSBjYW4gbm93IHVzZSB0aGUgJ2luc3RhbGwtaGVhZGVycycgbWFrZWZpbGUgdGFyZ2V0IHRvIGluc3RhbGwgdGhlCi0raGVhZGVyczoKLSsKLSsgICAgJCBtYWtlIGluc3RhbGwtaGVhZGVycyBpbnN0YWxsX3Jvb3Q9JHN5c3Jvb3QgXAotKyAgICA+ICAgICAgICAgICAgICAgICAgICAgIGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnM9eWVzCi0rCi0rVGhlICdpbnN0YWxsX3Jvb3QnIHZhcmlhYmxlIGluZGljYXRlcyB3aGVyZSB0aGUgZmlsZXMgc2hvdWxkIGFjdHVhbGx5Ci0rYmUgaW5zdGFsbGVkOyBpdHMgdmFsdWUgaXMgdHJlYXRlZCBhcyB0aGUgcGFyZW50IG9mIHRoZSAnLS1wcmVmaXgnCi0rZGlyZWN0b3J5IHdlIHBhc3NlZCB0byB0aGUgY29uZmlndXJlIHNjcmlwdCwgc28gdGhlIGhlYWRlcnMgd2lsbCBnbyBpbgotKyckc3lzcm9vdC91c3IvaW5jbHVkZScuICBUaGUgJ2luc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMnIHZhcmlhYmxlCi0rcmVxdWVzdHMgc3BlY2lhbCBoYW5kbGluZyBmb3IgY2VydGFpbiB0cmlja3kgaGVhZGVyIGZpbGVzLgotKwotK05leHQsIHRoZXJlIGFyZSBhIGZldyBvYmplY3QgZmlsZXMgbmVlZGVkIHRvIGxpbmsgc2hhcmVkIGxpYnJhcmllcywKLSt3aGljaCB3ZSBidWlsZCBhbmQgaW5zdGFsbCBieSBoYW5kOgotKwotKyAgICAkIG1rZGlyIC1wICRzeXNyb290L3Vzci9saWIKLSsgICAgJCBtYWtlIGNzdS9zdWJkaXJfbGliCi0rICAgICQgY3AgY3N1L2NydDEubyBjc3UvY3J0aS5vIGNzdS9jcnRuLm8gJHN5c3Jvb3QvdXNyL2xpYgotKwotK0ZpbmFsbHksICdsaWJnY2Nfcy5zbycgcmVxdWlyZXMgYSAnbGliYy5zbycgdG8gbGluayBhZ2FpbnN0LiAgSG93ZXZlciwKLStzaW5jZSB3ZSB3aWxsIG5ldmVyIGFjdHVhbGx5IGV4ZWN1dGUgaXRzIGNvZGUsIGl0IGRvZXNuJ3QgbWF0dGVyIHdoYXQKLStpdCBjb250YWlucy4gIFNvLCB0cmVhdGluZyAnL2Rldi9udWxsJyBhcyBhIEMgc291cmNlIGZpbGUsIHdlIHByb2R1Y2UKLSthIGR1bW15ICdsaWJjLnNvJyBpbiBvbmUgc3RlcDoKLSsKLSsgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtZ2NjIC1ub3N0ZGxpYiAtbm9zdGFydGZpbGVzIC1zaGFyZWQgLXggYyAvZGV2L251bGwgXAotKyAgICA+ICAgICAgICAgICAgICAgICAgICAgICAgLW8gJHN5c3Jvb3QvdXNyL2xpYi9saWJjLnNvCi0rCi0rCi0rVGhlIFNlY29uZCBHQ0MKLSsKLStXaXRoIHRoZSBHTElCQyBoZWFkZXJzIGFuZCBzZWxlY3RlZCBvYmplY3QgZmlsZXMgaW5zdGFsbGVkLCB3ZSBjYW4KLStub3cgYnVpbGQgYSBHQ0MgdGhhdCBpcyBjYXBhYmxlIG9mIGNvbXBpbGluZyBHTElCQy4gIFdlIGNvbmZpZ3VyZSwKLStidWlsZCwgYW5kIGluc3RhbGwgdGhlIHNlY29uZCBHQ0MsIGFnYWluIGJ1aWxkaW5nIG9ubHkgdGhlIEMgY29tcGlsZXIsCi0rYW5kIGF2b2lkaW5nIGxpYnJhcmllcyB3ZSB3b24ndCB1c2U6Ci0rCi0rICAgICQgbWtkaXIgLXAgJG9iai9nY2MyCi0rICAgICQgY2QgJG9iai9nY2MyCi0rICAgICQgJHNyYy8kZ2Njdi9jb25maWd1cmUgXAotKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKLSsgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKLSsgICAgPiAgICAgLS13aXRoLXN5c3Jvb3Q9JHN5c3Jvb3QgXAotKyAgICA+ICAgICAtLWRpc2FibGUtbGlic3NwIC0tZGlzYWJsZS1saWJnb21wIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLWxpYmZmaSAtLWRpc2FibGUtbGlicXVhZG1hdGggXAotKyAgICA+ICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9YwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbAotKwotKwotK0dMSUJDLCBDb21wbGV0ZQotKwotK1dpdGggdGhlIHNlY29uZCBjb21waWxlciBidWlsdCBhbmQgaW5zdGFsbGVkLCB3ZSdyZSBub3cgcmVhZHkgZm9yIHRoZQotK2Z1bGwgR0xJQkMgYnVpbGQ6Ci0rCi0rICAgICQgbWtkaXIgLXAgJG9iai9nbGliYwotKyAgICAkIGNkICRvYmovZ2xpYmMKLSsgICAgJCBCVUlMRF9DQz1nY2MgXAotKyAgICA+IENDPSR0b29scy9iaW4vJHRhcmdldC1nY2MgXAotKyAgICA+IENYWD0kdG9vbHMvYmluLyR0YXJnZXQtZysrIFwKLSsgICAgPiBBUj0kdG9vbHMvYmluLyR0YXJnZXQtYXIgXAotKyAgICA+IFJBTkxJQj0kdG9vbHMvYmluLyR0YXJnZXQtcmFubGliIFwKLSsgICAgPiAkc3JjL2dsaWJjL2xpYmMvY29uZmlndXJlIFwKLSsgICAgPiAgICAgLS1wcmVmaXg9L3VzciBcCi0rICAgID4gICAgIC0td2l0aC1oZWFkZXJzPSRzeXNyb290L3Vzci9pbmNsdWRlIFwKLSsgICAgPiAgICAgLS13aXRoLWtjb25maWc9JG9iai9saW51eC9zY3JpcHRzL2tjb25maWcgXAotKyAgICA+ICAgICAtLWJ1aWxkPSRidWlsZCBcCi0rICAgID4gICAgIC0taG9zdD0kdGFyZ2V0IFwKLSsgICAgPiAgICAgLS1kaXNhYmxlLXByb2ZpbGUgLS13aXRob3V0LWdkIC0td2l0aG91dC1jdnMgXAotKyAgICA+ICAgICAtLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzCi0rCi0rTm90ZSB0aGUgYWRkaXRpb25hbCAnLS13aXRoLWtjb25maWcnIG9wdGlvbi4gVGhpcyB0ZWxscyBHTElCQyB3aGVyZSB0bwotK2ZpbmQgdGhlIGhvc3QgY29uZmlnIHRvb2xzIHVzZWQgYnkgdGhlIGtlcm5lbCAnbWFrZSBjb25maWcnIGFuZCAnbWFrZQotK21lbnVjb25maWcnLiAgVGhlc2UgdG9vbHMgY2FuIGJlIHJlLXVzZWQgYnkgR0xJQkMgZm9yIGl0cyBvd24gJ21ha2UKLSsqY29uZmlnJyBzdXBwb3J0LCB3aGljaCB3aWxsIGNyZWF0ZSAnb3B0aW9uLWdyb3Vwcy5jb25maWcnIGZvciB5b3UuCi0rQnV0IGZpcnN0IG1ha2Ugc3VyZSB0aG9zZSB0b29scyBoYXZlIGJlZW4gYnVpbHQgYnkgcnVubmluZyBzb21lCi0rZHVtbXkgJ21ha2UgKmNvbmZpZycgY2FsbHMgaW4gdGhlIGtlcm5lbCBkaXJlY3Rvcnk6Ci0rCi0rICAgICQgY2QgJG9iai9saW51eAotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGNvbmZpZyBcCi0rICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIG1lbnVjb25maWcgXAotKyAgICA+ICAgICAgQVJDSD0kbGludXhfYXJjaCBDUk9TU19DT01QSUxFPSR0YXJnZXQtIFwKLSsKLStOb3cgd2UgY2FuIGNvbmZpZ3VyZSBhbmQgYnVpbGQgdGhlIGZ1bGwgR0xJQkM6Ci0rCi0rICAgICQgY2QgJG9iai9nbGliYwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGRlZmNvbmZpZwotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIG1lbnVjb25maWcKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQotKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwgaW5zdGFsbF9yb290PSRzeXNyb290Ci0rCi0rQXQgdGhpcyBwb2ludCwgd2UgaGF2ZSBhIGNvbXBsZXRlIEdMSUJDIGluc3RhbGxhdGlvbiBpbiAnJHN5c3Jvb3QnLAotK3dpdGggaGVhZGVyIGZpbGVzLCBsaWJyYXJ5IGZpbGVzLCBhbmQgbW9zdCBvZiB0aGUgQyBydW50aW1lIHN0YXJ0dXAKLStmaWxlcyBpbiBwbGFjZS4KLSsKLSsKLStUaGUgVGhpcmQgR0NDCi0rCi0rRmluYWxseSwgd2UgcmVjb21waWxlIEdDQyBhZ2FpbnN0IHRoaXMgZnVsbCBpbnN0YWxsYXRpb24sIGVuYWJsaW5nCi0rd2hhdGV2ZXIgbGFuZ3VhZ2VzIGFuZCBsaWJyYXJpZXMgd2Ugd291bGQgbGlrZSB0byB1c2U6Ci0rCi0rICAgICQgbWtkaXIgLXAgJG9iai9nY2MzCi0rICAgICQgY2QgJG9iai9nY2MzCi0rICAgICQgJHNyYy8kZ2Njdi9jb25maWd1cmUgXAotKyAgICA+ICAgICAtLXRhcmdldD0kdGFyZ2V0IFwKLSsgICAgPiAgICAgLS1wcmVmaXg9JHRvb2xzIFwKLSsgICAgPiAgICAgLS13aXRoLXN5c3Jvb3Q9JHN5c3Jvb3QgXAotKyAgICA+ICAgICAtLWVuYWJsZS1fX2N4YV9hdGV4aXQgXAotKyAgICA+ICAgICAtLWRpc2FibGUtbGlic3NwIC0tZGlzYWJsZS1saWJnb21wIC0tZGlzYWJsZS1saWJtdWRmbGFwIFwKLSsgICAgPiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMsYysrCi0rICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKLSsgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCi0rCi0rVGhlICctLWVuYWJsZS1fX2N4YV9hdGV4aXQnIG9wdGlvbiB0ZWxscyBHQ0Mgd2hhdCBzb3J0IG9mIEMrKwotK2Rlc3RydWN0b3Igc3VwcG9ydCB0byBleHBlY3QgZnJvbSB0aGUgQyBsaWJyYXJ5OyBpdCdzIHJlcXVpcmVkIHdpdGgKLStHTElCQy4KLSsKLStBbmQgc2luY2UgR0NDJ3MgaW5zdGFsbGF0aW9uIHByb2Nlc3MgaXNuJ3QgZGVzaWduZWQgdG8gaGVscCBjb25zdHJ1Y3QKLStzeXNyb290IHRyZWVzLCB3ZSBtdXN0IG1hbnVhbGx5IGNvcHkgY2VydGFpbiBsaWJyYXJpZXMgaW50byBwbGFjZSBpbgotK3RoZSBzeXNyb290LgotKwotKyAgICAkIGNwIC1kICR0b29scy8kdGFyZ2V0L2xpYi9saWJnY2Nfcy5zbyogJHN5c3Jvb3QvbGliCi0rICAgICQgY3AgLWQgJHRvb2xzLyR0YXJnZXQvbGliL2xpYnN0ZGMrKy5zbyogJHN5c3Jvb3QvdXNyL2xpYgotKwotKwotK1RyeWluZyBUaGluZ3MgT3V0Ci0rCi0rQXQgdGhpcyBwb2ludCwgJyR0b29scycgY29udGFpbnMgYSBjcm9zcyB0b29sY2hhaW4gcmVhZHkgdG8gdXNlCi0rdGhlIEdMSUJDIGluc3RhbGxhdGlvbiBpbiAnJHN5c3Jvb3QnOgotKwotKyAgICAkIGNhdCA+IGhlbGxvLmMgPDxFT0YKLSsgICAgPiAjaW5jbHVkZSA8c3RkaW8uaD4KLSsgICAgPiBpbnQKLSsgICAgPiBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0rICAgID4gewotKyAgICA+ICAgcHV0cyAoIkhlbGxvLCB3b3JsZCEiKTsKLSsgICAgPiAgIHJldHVybiAwOwotKyAgICA+IH0KLSsgICAgPiBFT0YKLSsgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtZ2NjIC1XYWxsIGhlbGxvLmMgLW8gaGVsbG8KLSsgICAgJCBjYXQgPiBjKystaGVsbG8uY2MgPDxFT0YKLSsgICAgPiAjaW5jbHVkZSA8aW9zdHJlYW0+Ci0rICAgID4gaW50Ci0rICAgID4gbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotKyAgICA+IHsKLSsgICAgPiAgIHN0ZDo6Y291dCA8PCAiSGVsbG8sIEMrKyB3b3JsZCEiIDw8IHN0ZDo6ZW5kbDsKLSsgICAgPiAgIHJldHVybiAwOwotKyAgICA+IH0KLSsgICAgPiBFT0YKLSsgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtZysrIC1XYWxsIGMrKy1oZWxsby5jYyAtbyBjKystaGVsbG8KLSsKLSsKLStXZSBjYW4gdXNlICdyZWFkZWxmJyB0byB2ZXJpZnkgdGhhdCB0aGVzZSBhcmUgaW5kZWVkIGV4ZWN1dGFibGVzIGZvcgotK291ciB0YXJnZXQsIHVzaW5nIG91ciBkeW5hbWljIGxpbmtlcjoKLSsKLSsgICAgJCAkdG9vbHMvYmluLyR0YXJnZXQtcmVhZGVsZiAtaGwgaGVsbG8KLSsgICAgRUxGIEhlYWRlcjoKLSsgICAgLi4uCi0rICAgICAgVHlwZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFWEVDIChFeGVjdXRhYmxlIGZpbGUpCi0rICAgICAgTWFjaGluZTogICAgICAgICAgICAgICAgICAgICAgICAgICBBUk0KLSsKLSsgICAgLi4uCi0rICAgIFByb2dyYW0gSGVhZGVyczoKLSsgICAgICBUeXBlICAgICAgICAgICBPZmZzZXQgICBWaXJ0QWRkciAgIFBoeXNBZGRyICAgRmlsZVNpeiBNZW1TaXogIEZsZyBBbGlnbgotKyAgICAgIFBIRFIgICAgICAgICAgIDB4MDAwMDM0IDB4MTAwMDAwMzQgMHgxMDAwMDAzNCAweDAwMTAwIDB4MDAxMDAgUiBFIDB4NAotKyAgICAgIElOVEVSUCAgICAgICAgIDB4MDAwMTM0IDB4MDAwMDgxMzQgMHgwMDAwODEzNCAweDAwMDEzIDB4MDAwMTMgUiAgIDB4MQotKyAgICAgICAgICBbUmVxdWVzdGluZyBwcm9ncmFtIGludGVycHJldGVyOiAvbGliL2xkLWxpbnV4LnNvLjNdCi0rICAgICAgTE9BRCAgICAgICAgICAgMHgwMDAwMDAgMHgwMDAwODAwMCAweDAwMDA4MDAwIDB4MDA0MmMgMHgwMDQyYyBSIEUgMHg4MDAwCi0rICAgIC4uLgotKwotK0xvb2tpbmcgYXQgdGhlIGR5bmFtaWMgc2VjdGlvbiBvZiB0aGUgaW5zdGFsbGVkICdsaWJnY2Nfcy5zbycsIHdlIHNlZQotK3RoYXQgdGhlICdORUVERUQnIGVudHJ5IGZvciB0aGUgQyBsaWJyYXJ5IGRvZXMgaW5jbHVkZSB0aGUgJy42JwotK3N1ZmZpeCwgaW5kaWNhdGluZyB0aGF0IHdhcyBsaW5rZWQgYWdhaW5zdCBvdXIgZnVsbHkgYnVpbGQgR0xJQkMsIGFuZAotK25vdCBvdXIgZHVtbXkgJ2xpYmMuc28nOgotKwotKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1yZWFkZWxmIC1kICRzeXNyb290L2xpYi9saWJnY2Nfcy5zby4xCi0rICAgIER5bmFtaWMgc2VjdGlvbiBhdCBvZmZzZXQgMHgxMDgzYyBjb250YWlucyAyNCBlbnRyaWVzOgotKyAgICAgIFRhZyAgICAgICAgVHlwZSAgICAgICAgICAgICAgICAgICAgICAgICBOYW1lL1ZhbHVlCi0rICAgICAweDAwMDAwMDAxIChORUVERUQpICAgICAgICAgICAgICAgICAgICAgU2hhcmVkIGxpYnJhcnk6IFtsaWJjLnNvLjZdCi0rICAgICAweDAwMDAwMDBlIChTT05BTUUpICAgICAgICAgICAgICAgICAgICAgTGlicmFyeSBzb25hbWU6IFtsaWJnY2Nfcy5zby4xXQotKyAgICAuLi4KLSsKLSsKLStBbmQgb24gdGhlIHRhcmdldCBtYWNoaW5lLCB3ZSBjYW4gcnVuIG91ciBwcm9ncmFtczoKLSsKLSsgICAgJCAkc3lzcm9vdC9saWIvbGQuc28uMSAtLWxpYnJhcnktcGF0aCAkc3lzcm9vdC9saWI6JHN5c3Jvb3QvdXNyL2xpYiBcCi0rICAgID4gLi9oZWxsbwotKyAgICBIZWxsbywgd29ybGQhCi0rICAgICQgJHN5c3Jvb3QvbGliL2xkLnNvLjEgLS1saWJyYXJ5LXBhdGggJHN5c3Jvb3QvbGliOiRzeXNyb290L3Vzci9saWIgXAotKyAgICA+IC4vYysrLWhlbGxvCi0rICAgIEhlbGxvLCBDKysgd29ybGQhCi1kaWZmIC0tZ2l0IGEvR0xJQkMuY3Jvc3MtdGVzdGluZyBiL0dMSUJDLmNyb3NzLXRlc3RpbmcKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi5iNjdiNDY4NDY2Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9HTElCQy5jcm9zcy10ZXN0aW5nCi1AQCAtMCwwICsxLDIwNSBAQAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIG1vZGU6IHRleHQgLSotCi0rCi0rICAgICAgICAgICAgICAgICAgICAgIENyb3NzLVRlc3RpbmcgV2l0aCBHTElCQwotKyAgICAgICAgICAgICAgICAgIEppbSBCbGFuZHkgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KLSsKLSsKLStJbnRyb2R1Y3Rpb24KLSsKLStEZXZlbG9wZXJzIHdyaXRpbmcgc29mdHdhcmUgZm9yIGVtYmVkZGVkIHN5c3RlbXMgb2Z0ZW4gdXNlIGEgZGVza3RvcAotK29yIG90aGVyIHNpbWlsYXJseSBjYXBhYmxlIGNvbXB1dGVyIGZvciBkZXZlbG9wbWVudCwgYnV0IG5lZWQgdG8gcnVuCi0rdGVzdHMgb24gdGhlIGVtYmVkZGVkIHN5c3RlbSwgb3IgcGVyaGFwcyBvbiBhIHNpbXVsYXRvci4gIFdoZW4KLStjb25maWd1cmVkIGZvciBjcm9zcy1jb21waWxhdGlvbiwgdGhlIHN0b2NrIEdOVSBDIGxpYnJhcnkgc2ltcGx5Ci0rZGlzYWJsZXMgcnVubmluZyB0ZXN0cyBhbHRvZ2V0aGVyOiB0aGUgY29tbWFuZCAnbWFrZSB0ZXN0cycgYnVpbGRzCi0rdGVzdCBwcm9ncmFtcywgYnV0IGRvZXMgbm90IHJ1biB0aGVtLiAgR0xJQkMsIGhvd2V2ZXIsIHByb3ZpZGVzCi0rZmFjaWxpdGllcyBmb3IgY29tcGlsaW5nIHRlc3RzIGFuZCBnZW5lcmF0aW5nIGRhdGEgZmlsZXMgb24gdGhlIGJ1aWxkCi0rc3lzdGVtLCBidXQgcnVubmluZyB0aGUgdGVzdCBwcm9ncmFtcyB0aGVtc2VsdmVzIG9uIGEgcmVtb3RlIHN5c3RlbSBvcgotK3NpbXVsYXRvci4KLSsKLSsKLStUZXN0IGVudmlyb25tZW50IHJlcXVpcmVtZW50cwotKwotK1RoZSB0ZXN0IGVudmlyb25tZW50IG11c3QgbWVldCBjZXJ0YWluIGNvbmRpdGlvbnMgZm9yIEdMSUJDJ3MKLStjcm9zcy10ZXN0aW5nIGZhY2lsaXRpZXMgdG8gd29yazoKLSsKLSstIFNoYXJlZCBmaWxlc3lzdGVtcy4gIFRoZSAnYnVpbGQnIHN5c3RlbSwgb24gd2hpY2ggeW91IGNvbmZpZ3VyZSBhbmQKLSsgIGNvbXBpbGUgR0xJQkMsIGFuZCB0aGUgJ2hvc3QnIHN5c3RlbSwgb24gd2hpY2ggeW91IGludGVuZCB0byBydW4KLSsgIEdMSUJDLCBtdXN0IHNoYXJlIGEgZmlsZXN5c3RlbSBjb250YWluaW5nIHRoZSBHTElCQyBidWlsZCBhbmQKLSsgIHNvdXJjZSB0cmVlcy4gIEZpbGVzIG11c3QgYXBwZWFyIGF0IHRoZSBzYW1lIHBhdGhzIG9uIGJvdGggc3lzdGVtcy4KLSsKLSstIFJlbW90ZS1zaGVsbCBsaWtlIGludm9jYXRpb24uICBUaGVyZSBtdXN0IGJlIGEgd2F5IHRvIHJ1biBhIHByb2dyYW0KLSsgIG9uIHRoZSBob3N0IHN5c3RlbSBmcm9tIHRoZSBidWlsZCBzeXN0ZW0sIHBhc3NpbmcgaXQgcHJvcGVybHkgcXVvdGVkCi0rICBjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBzZXR0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlcywgYW5kCi0rICBpbmhlcml0aW5nIHRoZSBjYWxsZXIncyBzdGFuZGFyZCBpbnB1dCBhbmQgb3V0cHV0LgotKwotKwotK1VzYWdlCi0rCi0rVG8gdXNlIEdMSUJDJ3MgY3Jvc3MtdGVzdGluZyBzdXBwb3J0LCBwcm92aWRlIHZhbHVlcyBmb3IgdGhlCi0rZm9sbG93aW5nIE1ha2UgdmFyaWFibGVzIHdoZW4geW91IGludm9rZSAnbWFrZSc6Ci0rCi0rLSBjcm9zcy10ZXN0LXdyYXBwZXIKLSsKLSsgIFRoaXMgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBjcm9zcy10ZXN0aW5nIHdyYXBwZXIgY29tbWFuZCwgYWxvbmcKLSsgIHdpdGggYW55IGFyZ3VtZW50cy4KLSsKLSstIGNyb3NzLWxvY2FsZWRlZgotKwotKyAgVGhpcyBzaG91bGQgYmUgdGhlIG5hbWUgb2YgYSBjcm9zcy1jYXBhYmxlIGxvY2FsZWRlZiBwcm9ncmFtLCBsaWtlCi0rICB0aGF0IGluY2x1ZGVkIGluIHRoZSBHTElCQyAnbG9jYWxlZGVmJyBtb2R1bGUsIGFsb25nIHdpdGggYW55Ci0rICBhcmd1bWVudHMgbmVlZGVkLgotKwotK1RoZXNlIGFyZSBlYWNoIGV4cGxhaW5lZCBpbiBkZXRhaWwgYmVsb3cuCi0rCi0rCi0rVGhlIENyb3NzLVRlc3RpbmcgV3JhcHBlcgotKwotK1RvIHJ1biB0ZXN0IHByb2dyYW1zIHJlbGlhYmx5LCB0aGUgc3RvY2sgR05VIEMgbGlicmFyeSB0YWtlcyBjYXJlIHRvCi0rZW5zdXJlIHRoYXQgdGVzdCBwcm9ncmFtcyB1c2UgdGhlIG5ld2x5IGNvbXBpbGVkIGR5bmFtaWMgbGlua2VyIGFuZAotK3NoYXJlZCBsaWJyYXJpZXMsIGFuZCBuZXZlciB0aGUgaG9zdCBzeXN0ZW0ncyBpbnN0YWxsZWQgbGlicmFyaWVzLiAgVG8KLSthY2NvbXBsaXNoIHRoaXMsIGl0IHJ1bnMgdGhlIHRlc3RzIGJ5IGV4cGxpY2l0bHkgaW52b2tpbmcgdGhlIGR5bmFtaWMKLStsaW5rZXIgZnJvbSB0aGUgYnVpbGQgdHJlZSwgcGFzc2luZyBpdCBhIGxpc3Qgb2YgYnVpbGQgdHJlZQotK2RpcmVjdG9yaWVzIHRvIHNlYXJjaCBmb3Igc2hhcmVkIGxpYnJhcmllcywgZm9sbG93ZWQgYnkgdGhlIG5hbWUgb2YKLSt0aGUgZXhlY3V0YWJsZSB0byBydW4gYW5kIGl0cyBhcmd1bWVudHMuCi0rCi0rRm9yIGV4YW1wbGUsIHdoZXJlIG9uZSBtaWdodCBub3JtYWxseSBydW4gYSB0ZXN0IHByb2dyYW0gbGlrZSB0aGlzOgotKwotKyAgICAkIC4vdHN0LWZvbyBhcmcxIGFyZzIKLSsKLSt0aGUgR05VIEMgbGlicmFyeSBtaWdodCBydW4gdGhhdCBwcm9ncmFtIGxpa2UgdGhpczoKLSsKLSsgICAgJCAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAotKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKLSsKLSsod2hlcmUgJG9iamRpciBpcyB0aGUgcGF0aCB0byB0aGUgdG9wIG9mIHRoZSBidWlsZCB0cmVlLCBhbmQgdGhlCi0rdHJhaWxpbmcgYmFja3NsYXNoIGluZGljYXRlcyBhIGNvbnRpbnVhdGlvbiBvZiB0aGUgY29tbWFuZCkuICBJbiBvdGhlcgotK3dvcmRzLCBlYWNoIHRlc3QgcHJvZ3JhbSBpbnZvY2F0aW9uIGlzICd3cmFwcGVkIHVwJyBpbnNpZGUgYW4gZXhwbGljaXQKLStpbnZvY2F0aW9uIG9mIHRoZSBkeW5hbWljIGxpbmtlciwgd2hpY2ggbXVzdCBpdHNlbGYgZXhlY3V0ZSB0aGUgdGVzdAotK3Byb2dyYW0sIGhhdmluZyBsb2FkZWQgc2hhcmVkIGxpYnJhcmllcyBmcm9tIHRoZSBhcHByb3ByaWF0ZQotK2RpcmVjdG9yaWVzLgotKwotK1RvIHN1cHBvcnQgY3Jvc3MtdGVzdGluZywgR0xJQkMgYWxsb3dzIHRoZSBkZXZlbG9wZXIgdG8gb3B0aW9uYWxseQotK3NldCB0aGUgJ2Nyb3NzLXRlc3Qtd3JhcHBlcicgTWFrZSB2YXJpYWJsZSB0byBhbm90aGVyIHdyYXBwZXIgY29tbWFuZCwKLSt0byB3aGljaCBpdCBwYXNzZXMgdGhlIGVudGlyZSBkeW5hbWljIGxpbmtlciBpbnZvY2F0aW9uIHNob3duIGFib3ZlIGFzCi0rYXJndW1lbnRzLiAgRm9yIGV4YW1wbGUsIGlmIHRoZSBkZXZlbG9wZXIgc3VwcGxpZXMgYSB3cmFwcGVyIG9mCi0rJ215LXdyYXBwZXIgaG9zdG5hbWUnLCB0aGVuIEdMSUJDIHdvdWxkIHJ1biB0aGUgdGVzdCBhYm92ZSBhcwotK2ZvbGxvd3M6Ci0rCi0rICAgICQgbXktd3JhcHBlciBob3N0bmFtZSBcCi0rICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKLSsgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCi0rCi0rVGhlICdteS13cmFwcGVyJyBjb21tYW5kIGlzIHJlc3BvbnNpYmxlIGZvciBleGVjdXRpbmcgdGhlIGNvbW1hbmQKLStnaXZlbiBvbiB0aGUgaG9zdCBzeXN0ZW0uCi0rCi0rU2luY2UgdGVzdHMgYXJlIHJ1biBpbiB2YXJ5aW5nIGRpcmVjdG9yaWVzLCB0aGUgd3JhcHBlciBzaG91bGQgZWl0aGVyCi0rYmUgaW4geW91ciBjb21tYW5kIHNlYXJjaCBwYXRoLCBvciAnY3Jvc3MtdGVzdC13cmFwcGVyJyBzaG91bGQgZ2l2ZSBhbgotK2Fic29sdXRlIHBhdGggZm9yIHRoZSB3cmFwcGVyLgotKwotK1RoZSB3cmFwcGVyIG11c3QgbWVldCBzZXZlcmFsIHJlcXVpcmVtZW50czoKLSsKLSstIEl0IG11c3QgcHJlc2VydmUgdGhlIGN1cnJlbnQgZGlyZWN0b3J5LiAgQXMgZXhwbGFpbmVkIGFib3ZlLCB0aGUKLSsgIGJ1aWxkIGRpcmVjdG9yeSB0cmVlIG11c3QgYmUgdmlzaWJsZSBvbiBib3RoIHRoZSBidWlsZCBhbmQgaG9zdAotKyAgc3lzdGVtcywgYXQgdGhlIHNhbWUgcGF0aC4gIFRoZSB0ZXN0IHdyYXBwZXIgbXVzdCBlbnN1cmUgdGhhdCB0aGUKLSsgIGN1cnJlbnQgZGlyZWN0b3J5IGl0IGluaGVyaXRzIGlzIGFsc28gaW5oZXJpdGVkIGJ5IHRoZSBkeW5hbWljCi0rICBsaW5rZXIgKGFuZCB0aHVzIHRoZSB0ZXN0IHByb2dyYW0gaXRzZWxmKS4KLSsKLSstIEl0IG11c3QgcHJlc2VydmUgZW52aXJvbm1lbnQgdmFyaWFibGVzJyB2YWx1ZXMuICBNYW55IEdMSUJDIHRlc3RzCi0rICBzZXQgZW52aXJvbm1lbnQgdmFyaWFibGVzIGZvciB0ZXN0IHJ1bnM7IGluIG5hdGl2ZSB0ZXN0aW5nLCBpdAotKyAgaW52b2tlcyBwcm9ncmFtcyBsaWtlIHRoaXM6Ci0rCi0rICAgICQgR0NPTlZfUEFUSD0kb2JqZGlyL2ljb252ZGF0YSBcCi0rICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKLSsgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCi0rCi0rICBXaXRoIHRoZSBjcm9zcy10ZXN0aW5nIHdyYXBwZXIsIHRoYXQgaW52b2NhdGlvbiBiZWNvbWVzOgotKwotKyAgICAkIEdDT05WX1BBVEg9JG9iamRpci9pY29udmRhdGEgXAotKyAgICAgIG15LXdyYXBwZXIgaG9zdG5hbWUgXAotKyAgICAgICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCi0rICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgotKwotKyAgSGVyZSwgJ215LXdyYXBwZXInIG11c3QgZW5zdXJlIHRoYXQgdGhlIHZhbHVlIGl0IHNlZXMgZm9yCi0rICAnR0NPTlZfUEFUSCcgd2lsbCBiZSBzZWVuIGJ5IHRoZSBkeW5hbWljIGxpbmtlciwgYW5kIHRodXMgJ3RzdC1mb28nCi0rICBpdHNlbGYuICAoVGhlIHdyYXBwZXIgc3VwcGxpZWQgd2l0aCBHTElCQyBzaW1wbHkgcHJlc2VydmVzIHRoZQotKyAgdmFsdWVzIG9mICphbGwqIGVudmlyb21lbnQgdmFyaWFibGVzLCB3aXRoIGEgZml4ZWQgc2V0IG9mCi0rICBleGNlcHRpb25zLikKLSsKLSsgIElmIHlvdXIgd3JhcHBlciBpcyBhIHNoZWxsIHNjcmlwdCwgdGFrZSBjYXJlIHRvIGNvcnJlY3RseSBwcm9wYWdhdGUKLSsgIGVudmlyb25tZW50IHZhcmlhYmxlcyB3aG9zZSB2YWx1ZXMgY29udGFpbiBzcGFjZXMgYW5kIHNoZWxsCi0rICBtZXRhY2hhcmFjdGVycy4KLSsKLSstIEl0IG11c3QgcGFzcyB0aGUgY29tbWFuZCdzIGFyZ3VtZW50cywgdW5tb2RpZmllZC4gIFRoZSBhcmd1bWVudHMKLSsgIHNlZW4gYnkgdGhlIHRlc3QgcHJvZ3JhbSBzaG91bGQgYmUgZXhhY3RseSB0aG9zZSBzZWVuIGJ5IHRoZSB3cmFwcGVyCi0rICAoYWZ0ZXIgd2hhdGV2ZXIgYXJndW1lbnRzIGFyZSBnaXZlbiB0byB0aGUgd3JhcHBlciBpdHNlbGYpLiAgVGhlCi0rICBHTElCQyB0ZXN0IGZyYW1ld29yayBwZXJmb3JtcyBhbGwgbmVlZGVkIHNoZWxsIHdvcmQgc3BsaXR0aW5nIGFuZAotKyAgZXhwYW5zaW9uICh3aWxkY2FyZCBleHBhbnNpb24sIHBhcmFtZXRlciBzdWJzdGl0dXRpb24sIGFuZCBzbyBvbikKLSsgIGJlZm9yZSBpbnZva2luZyB0aGUgd3JhcHBlcjsgZnVydGhlciBleHBhbnNpb24gbWF5IGJyZWFrIHRoZSB0ZXN0cy4KLSsKLSsKLStUaGUgJ2Nyb3NzLXRlc3Qtc3NoLnNoJyBzY3JpcHQKLSsKLStJZiB5b3Ugd2FudCB0byB1c2UgJ3NzaCcgKG9yIHNvbWV0aGluZyBzdWZmaWNpZW50bHkgc2ltaWxhcikgdG8gcnVuCi0rdGVzdCBwcm9ncmFtcyBvbiB5b3VyIGhvc3Qgc3lzdGVtLCBHTElCQyBpbmNsdWRlcyBhIHNoZWxsIHNjcmlwdCwKLSsnc2NyaXB0cy9jcm9zcy10ZXN0LXNzaC5zaCcsIHdoaWNoIHlvdSBjYW4gdXNlIGFzIHlvdXIgd3JhcHBlcgotK2NvbW1hbmQuICBUaGlzIHNjcmlwdCB0YWtlcyBjYXJlIG9mIHNldHRpbmcgdGhlIHRlc3QgY29tbWFuZCdzIGN1cnJlbnQKLStkaXJlY3RvcnksIHByb3BhZ2F0aW5nIGVudmlyb25tZW50IHZhcmlhYmxlIHZhbHVlcywgYW5kIGNhcnJ5aW5nCi0rY29tbWFuZC1saW5lIGFyZ3VtZW50cywgYWxsIGFjcm9zcyBhbiAnc3NoJyBjb25uZWN0aW9uLiAgWW91IG1heSBldmVuCi0rc3VwcGx5IGFuIGFsdGVybmF0aXZlIHRvICdzc2gnIG9uIHRoZSBjb21tYW5kIGxpbmUsIGlmIG5lZWRlZC4KLSsKLStGb3IgbW9yZSBkZXRhaWxzLCBwYXNzICdjcm9zcy10ZXN0LXNzaC5zaCcgdGhlICctLWhlbHAnIG9wdGlvbi4KLSsKLSsKLStUaGUgQ3Jvc3MtQ29tcGlsaW5nIExvY2FsZSBEZWZpbml0aW9uIENvbW1hbmQKLSsKLStTb21lIEdMSUJDIHRlc3RzIHJlbHkgb24gbG9jYWxlcyBnZW5lcmF0ZWQgZXNwZWNpYWxseSBmb3IgdGhlIHRlc3QKLStwcm9jZXNzLiAgSW4gYSBuYXRpdmUgY29uZmlndXJhdGlvbiwgdGhlc2UgdGVzdHMgc2ltcGx5IHJ1biB0aGUKLSsnbG9jYWxlZGVmJyBjb21tYW5kIGJ1aWx0IGJ5IHRoZSBub3JtYWwgR0xJQkMgYnVpbGQgcHJvY2VzcywKLSsnbG9jYWxlL2xvY2FsZWRlZicsIHRvIHByb2Nlc3MgYW5kIGluc3RhbGwgdGhlaXIgbG9jYWxlcy4gIEhvd2V2ZXIsIGluCi0rYSBjcm9zcy1jb21waWxpbmcgY29uZmlndXJhdGlvbiwgdGhpcyAnbG9jYWxlZGVmJyBpcyBidWlsdCBmb3IgdGhlCi0raG9zdCBzeXN0ZW0sIG5vdCB0aGUgYnVpbGQgc3lzdGVtLCBhbmQgc2luY2UgaXQgcmVxdWlyZXMgcXVpdGUgYSBiaXQKLStvZiBtZW1vcnkgdG8gcnVuICh3ZSBoYXZlIHNlZW4gaXQgZmFpbCBvbiBzeXN0ZW1zIHdpdGggNjRNaUIgb2YKLSttZW1vcnkpLCBpdCBtYXkgbm90IGJlIHByYWN0aWNhbCB0byBydW4gaXQgb24gdGhlIGhvc3Qgc3lzdGVtLgotKwotK0lmIHNldCwgR0xJQkMgdXNlcyB0aGUgJ2Nyb3NzLWxvY2FsZWRlZicgTWFrZSB2YXJpYWJsZSBhcyB0aGUgY29tbWFuZAotK3RvIHJ1biBvbiB0aGUgYnVpbGQgc3lzdGVtIHRvIHByb2Nlc3MgYW5kIGluc3RhbGwgbG9jYWxlcy4gIFRoZQotK2xvY2FsZWRlZiBwcm9ncmFtIGJ1aWx0IGZyb20gdGhlIEdMSUJDICdsb2NhbGVkZWYnIG1vZHVsZSBpcwotK3N1aXRhYmxlLgotKwotK1RoZSB2YWx1ZSBvZiAnY3Jvc3MtbG9jYWxlZGVmJyBtYXkgYWxzbyBpbmNsdWRlIGNvbW1hbmQtbGluZSBhcmd1bWVudHMKLSt0byBiZSBwYXNzZWQgdG8gdGhlIHByb2dyYW07IGlmIHlvdSBhcmUgdXNpbmcgR0xJQkMncyAnbG9jYWxlZGVmJywKLSt5b3UgbWF5IGluY2x1ZGUgZW5kaWFubmVzcyBhbmQgJ3VpbnQzMl90JyBhbGlnbm1lbnQgYXJndW1lbnRzIGhlcmUuCi0rCi0rCi0rRXhhbXBsZQotKwotK0luIGRldmVsb3BpbmcgR0xJQkMncyBjcm9zcy10ZXN0aW5nIGZhY2lsaXR5LCB3ZSBpbnZva2VkICdtYWtlJyB3aXRoCi0rdGhlIGZvbGxvd2luZyBzY3JpcHQ6Ci0rCi0rICAgICMhL2Jpbi9zaAotKwotKyAgICBzcmNkaXI9Li4uCi0rICAgIHRlc3RfaG9zdG5hbWU9Li4uCi0rICAgIGxvY2FsZWRlZmRpcj0uLi4KLSsgICAgY3Jvc3NfZ3h4PS4uLi1nKysKLSsKLSsgICAgd3JhcHBlcj0iJHNyY2Rpci9zY3JpcHRzL2Nyb3NzLXRlc3Qtc3NoLnNoICR0ZXN0X2hvc3RuYW1lIgotKyAgICBsb2NhbGVkZWY9IiRsb2NhbGVkZWZkaXIvbG9jYWxlZGVmIC0tbGl0dGxlLWVuZGlhbiAtLXVpbnQzMi1hbGlnbj00IgotKwotKyAgICBtYWtlIGNyb3NzLXRlc3Qtd3JhcHBlcj0iJHdyYXBwZXIiIFwKLSsgICAgICAgICBjcm9zcy1sb2NhbGVkZWY9IiRsb2NhbGVkZWYiIFwKLSsgICAgICAgICBDWFg9IiRjcm9zc19neHgiIFwKLSsgICAgICAgICAiJEAiCi0rCi0rCi0rT3RoZXIgQ3Jvc3MtVGVzdGluZyBDb25jZXJucwotKwotK0hlcmUgYXJlIG5vdGVzIG9uIHNvbWUgb3RoZXIgaXNzdWVzIHdoaWNoIHlvdSBtYXkgZW5jb3VudGVyIGluIHJ1bm5pbmcKLSt0aGUgR0xJQkMgdGVzdHMgaW4gYSBjcm9zcy1jb21waWxpbmcgZW52aXJvbm1lbnQ6Ci0rCi0rLSBTb21lIHRlc3RzIHJlcXVpcmUgYSBDKysgY3Jvc3MtY29tcGlsZXI7IHlvdSBzaG91bGQgc2V0IHRoZSAnQ1hYJwotKyAgTWFrZSB2YXJpYWJsZSB0byB0aGUgbmFtZSBvZiBhbiBhcHByb3ByaWF0ZSBjcm9zcy1jb21waWxlci4KLSsKLSstIFNvbWUgdGVzdHMgcmVxdWlyZSBhY2Nlc3MgdG8gbGlic3RkYysrLnNvLjYgYW5kIGxpYmdjY19zLnNvLjE7IHdlCi0rICBzaW1wbHkgcGxhY2UgY29waWVzIG9mIHRoZXNlIGxpYnJhcmllcyBpbiB0aGUgdG9wIEdMSUJDIGJ1aWxkCi0rICBkaXJlY3RvcnkuCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOC10aW1lem9uZS1yZS13cml0dGVuLXR6c2VsZWN0LWFzLXBvc2l4LXNoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIwYjBlZTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTgtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIDIwMjNkODhjMzU1YjhhZjY0NThjOGUzOWNlMzhiNzVjMWNhNGVhMmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDozMzowMyArMDAwMAorU3ViamVjdDogW1BBVENIXSB0aW1lem9uZTogcmUtd3JpdHRlbiB0enNlbGVjdCBhcyBwb3NpeCBzaAorCitUbyBhdm9pZCB0aGUgYmFzaCBkZXBlbmRlbmN5LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHRpbWV6b25lL01ha2VmaWxlICAgICB8IDIgKy0KKyB0aW1lem9uZS90enNlbGVjdC5rc2ggfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90aW1lem9uZS9NYWtlZmlsZSBiL3RpbWV6b25lL01ha2VmaWxlCitpbmRleCA3NWYzOGRmNTI3Li43NGUxYWI3ZmY3IDEwMDY0NAorLS0tIGEvdGltZXpvbmUvTWFrZWZpbGUKKysrKyBiL3RpbWV6b25lL01ha2VmaWxlCitAQCAtMTIyLDcgKzEyMiw3IEBAICQodGVzdGRhdGEpL1hUJTogdGVzdGRhdGEvWFQlCisgCWNwICQ8ICRACisgCisgJChvYmpwZngpdHpzZWxlY3Q6IHR6c2VsZWN0LmtzaCAkKGNvbW1vbi1vYmpwZngpY29uZmlnLm1ha2UKKy0Jc2VkIC1lICdzfC9iaW4vYmFzaHwkKEJBU0gpfCcgXAorKwlzZWQgLWUgJ3N8L2Jpbi9iYXNofC9iaW4vc2h8JyBcCisgCSAgICAtZSAnc3xUWkRJUj1bXn1dKnxUWkRJUj0kKHpvbmVkaXIpfCcgXAorIAkgICAgLWUgJy9UWlZFUlNJT049L3N8c2VlX01ha2VmaWxlfCIkKHZlcnNpb24pInwnIFwKKyAJICAgIC1lICcvUEtHVkVSU0lPTj0vc3w9Lip8PSIkKFBLR1ZFUlNJT04pInwnIFwKK2RpZmYgLS1naXQgYS90aW1lem9uZS90enNlbGVjdC5rc2ggYi90aW1lem9uZS90enNlbGVjdC5rc2gKK2luZGV4IDE4ZmNlMjdlMjQuLjcwNzQ1ZjlkMzYgMTAwNzU1CistLS0gYS90aW1lem9uZS90enNlbGVjdC5rc2gKKysrKyBiL3RpbWV6b25lL3R6c2VsZWN0LmtzaAorQEAgLTM0LDcgKzM0LDcgQEAgUkVQT1JUX0JVR1NfVE89dHpAaWFuYS5vcmcKKyAKKyAjIFNwZWNpZnkgZGVmYXVsdCB2YWx1ZXMgZm9yIGVudmlyb25tZW50IHZhcmlhYmxlcyBpZiB0aGV5IGFyZSB1bnNldC4KKyA6ICR7QVdLPWF3a30KKy06ICR7VFpESVI9YHB3ZGB9CisrOiAke1RaRElSPSQocHdkKX0KKyAKKyAjIE91dHB1dCBvbmUgYXJndW1lbnQgYXMtaXMgdG8gc3RhbmRhcmQgb3V0cHV0LgorICMgU2FmZXIgdGhhbiAnZWNobycsIHdoaWNoIGNhbiBtaXNoYW5kbGUgJ1wnIG9yIGxlYWRpbmcgJy0nLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMTktUmVtb3ZlLWJhc2gtZGVwZW5kZW5jeS1mb3ItbnNjZC1pbml0LXNjcmlwdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYzE1YTUxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2gKQEAgLTAsMCArMSw3MiBAQAorRnJvbSAwNmRhMjBkOWY4OTkwN2U1ZjI3Nzc1MzcyNDRlNjU4OWNhM2M5NzAzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMzEgRGVjIDIwMTUgMTQ6MzM6MDIgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIGJhc2ggZGVwZW5kZW5jeSBmb3IgbnNjZCBpbml0IHNjcmlwdAorCitUaGUgbnNjZCBpbml0IHNjcmlwdCB1c2VzICMhIC9iaW4vYmFzaCBidXQgb25seSByZWFsbHkgdXNlcyBvbmUgYmFzaGlzbQorKHRyYW5zbGF0ZWQgc3RyaW5ncyksIHNvIHJlbW92ZSB0aGVtIGFuZCBzd2l0Y2ggdGhlIHNoZWxsIHRvICMhL2Jpbi9zaC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbnNjZC9uc2NkLmluaXQgfCAxNCArKysrKysrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9uc2NkL25zY2QuaW5pdCBiL25zY2QvbnNjZC5pbml0CitpbmRleCBhODgyZGE3ZDhiLi5iMDI5ODZlYzE1IDEwMDY0NAorLS0tIGEvbnNjZC9uc2NkLmluaXQKKysrKyBiL25zY2QvbnNjZC5pbml0CitAQCAtMSw0ICsxLDQgQEAKKy0jIS9iaW4vYmFzaAorKyMhL2Jpbi9zaAorICMKKyAjIG5zY2Q6CQlTdGFydHMgdGhlIE5hbWUgU3dpdGNoIENhY2hlIERhZW1vbgorICMKK0BAIC00OSw3ICs0OSw3IEBAIHByb2c9bnNjZAorIHN0YXJ0ICgpIHsKKyAgICAgWyAtZCAvdmFyL3J1bi9uc2NkIF0gfHwgbWtkaXIgL3Zhci9ydW4vbnNjZAorICAgICBbIC1kIC92YXIvZGIvbnNjZCBdIHx8IG1rZGlyIC92YXIvZGIvbnNjZAorLSAgICBlY2hvIC1uICQiU3RhcnRpbmcgJHByb2c6ICIKKysgICAgZWNobyAtbiAiU3RhcnRpbmcgJHByb2c6ICIKKyAgICAgZGFlbW9uIC91c3Ivc2Jpbi9uc2NkCisgICAgIFJFVFZBTD0kPworICAgICBlY2hvCitAQCAtNTgsNyArNTgsNyBAQCBzdGFydCAoKSB7CisgfQorIAorIHN0b3AgKCkgeworLSAgICBlY2hvIC1uICQiU3RvcHBpbmcgJHByb2c6ICIKKysgICAgZWNobyAtbiAiU3RvcHBpbmcgJHByb2c6ICIKKyAgICAgL3Vzci9zYmluL25zY2QgLUsKKyAgICAgUkVUVkFMPSQ/CisgICAgIGlmIFsgJFJFVFZBTCAtZXEgMCBdOyB0aGVuCitAQCAtNjcsOSArNjcsOSBAQCBzdG9wICgpIHsKKyAJIyBhIG5vbi1wcml2aWxlZ2VkIHVzZXIKKyAJcm0gLWYgL3Zhci9ydW4vbnNjZC9uc2NkLnBpZAorIAlybSAtZiAvdmFyL3J1bi9uc2NkL3NvY2tldAorLSAgICAgICAJc3VjY2VzcyAkIiRwcm9nIHNodXRkb3duIgorKwlzdWNjZXNzICIkcHJvZyBzaHV0ZG93biIKKyAgICAgZWxzZQorLSAgICAgICAJZmFpbHVyZSAkIiRwcm9nIHNodXRkb3duIgorKwlmYWlsdXJlICIkcHJvZyBzaHV0ZG93biIKKyAgICAgZmkKKyAgICAgZWNobworICAgICByZXR1cm4gJFJFVFZBTAorQEAgLTEwMywxMyArMTAzLDEzIEBAIGNhc2UgIiQxIiBpbgorIAlSRVRWQUw9JD8KKyAJOzsKKyAgICAgZm9yY2UtcmVsb2FkIHwgcmVsb2FkKQorLSAgICAJZWNobyAtbiAkIlJlbG9hZGluZyAkcHJvZzogIgorKwllY2hvIC1uICJSZWxvYWRpbmcgJHByb2c6ICIKKyAJa2lsbHByb2MgL3Vzci9zYmluL25zY2QgLUhVUAorIAlSRVRWQUw9JD8KKyAJZWNobworIAk7OworICAgICAqKQorLQllY2hvICQiVXNhZ2U6ICQwIHtzdGFydHxzdG9wfHN0YXR1c3xyZXN0YXJ0fHJlbG9hZHxjb25kcmVzdGFydH0iCisrCWVjaG8gIlVzYWdlOiAkMCB7c3RhcnR8c3RvcHxzdGF0dXN8cmVzdGFydHxyZWxvYWR8Y29uZHJlc3RhcnR9IgorIAlSRVRWQUw9MQorIAk7OworIGVzYWMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAxOS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzMzNkYjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDE5LWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotRnJvbSAyODY0YWFhZTk4NGQ5NDU0NDVmM2Y3OTg2OWM3MDNlMGI3OTFkZjg4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NDk6MjggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxOS8yOF0gZWdsaWJjOiBIZWxwIGJvb3RzdHJhcCBjcm9zcyB0b29sY2hhaW4KLQotVGFrZW4gZnJvbSBFR0xJQkMsIHIxNDg0ICsgcjE1MjUKLQotICAgICAgICAyMDA3LTAyLTIwICBKaW0gQmxhbmR5ICA8amltYkBjb2Rlc291cmNlcnkuY29tPgotCi0gICAgICAgICAgICAgICAgKiBNYWtlZmlsZSAoaW5zdGFsbC1oZWFkZXJzKTogUHJlc2VydmUgb2xkIGJlaGF2aW9yOiBkZXBlbmQgb24KLSAgICAgICAgICAgICAgICAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmggb25seSBpZiBpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzCi0gICAgICAgICAgICAgICAgaXMgc2V0OyBvdGhlcndpc2UsIHBsYWNlIGdudS9zdHVicy5oIG9uIHRoZSAnaW5zdGFsbC1vdGhlcnMnIGxpc3QuCi0KLSAgICAgICAgMjAwNy0wMi0xNiAgSmltIEJsYW5keSAgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgICAgICAgICAgICAgICogTWFrZWZpbGU6IEFtZW5kIG1ha2UgaW5zdGFsbC1oZWFkZXJzIHRvIGluc3RhbGwgZXZlcnl0aGluZwotICAgICAgICAgICAgICAgIG5lY2Vzc2FyeSBmb3IgYnVpbGRpbmcgYSBjcm9zcy1jb21waWxlci4gIEluc3RhbGwgZ251L3N0dWJzLmggYXMKLSAgICAgICAgICAgICAgICBwYXJ0IG9mICdpbnN0YWxsLWhlYWRlcnMnLCBub3QgJ2luc3RhbGwtb3RoZXJzJy4KLSAgICAgICAgICAgICAgICBJZiBpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzIGlzICd5ZXMnLCBpbnN0YWxsIGEgZHVtbXkgY29weSBvZgotICAgICAgICAgICAgICAgIGdudS9zdHVicy5oLCBpbnN0ZWFkIG9mIGNvbXB1dGluZyB0aGUgcmVhbCB0aGluZy4KLSAgICAgICAgICAgICAgICAqIGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmg6IE5ldyBmaWxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZSAgICAgICAgICAgICAgICAgIHwgMjIgKysrKysrKysrKysrKysrKysrKysrLQotIGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmggfCAxMiArKysrKysrKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaAotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggOWZiZjcwNTIwMC4uNjRiZmQ0NTViYyAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTcwLDkgKzcwLDE4IEBAIHN1YmRpci1kaXJzID0gaW5jbHVkZQotIHZwYXRoICUuaCAkKHN1YmRpci1kaXJzKQotIAotICMgV2hhdCB0byBpbnN0YWxsLgotLWluc3RhbGwtb3RoZXJzID0gJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCi0gaW5zdGFsbC1iaW4tc2NyaXB0ID0KLSAKLSsjIElmIHdlJ3JlIGJvb3RzdHJhcHBpbmcsIGluc3RhbGwgYSBkdW1teSBnbnUvc3R1YnMuaCBhbG9uZyB3aXRoIHRoZQotKyMgb3RoZXIgaGVhZGVycywgc28gJ21ha2UgaW5zdGFsbC1oZWFkZXJzJyBwcm9kdWNlcyBhIHVzZWFibGUgaW5jbHVkZQotKyMgdHJlZS4gIE90aGVyd2lzZSwgaW5zdGFsbCBnbnUvc3R1YnMuaCBsYXRlciwgYWZ0ZXIgdGhlIHJlc3Qgb2YgdGhlCi0rIyBidWlsZCBpcyBkb25lLgotK2lmZXEgKCQoaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycykseWVzKQotK2luc3RhbGwtaGVhZGVyczogJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCi0rZWxzZQotK2luc3RhbGwtb3RoZXJzID0gJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oCi0rZW5kaWYKLSsKLSBpZmVxICh5ZXMsJChidWlsZC1zaGFyZWQpKQotIGhlYWRlcnMgKz0gZ251L2xpYi1uYW1lcy5oCi0gZW5kaWYKLUBAIC0xOTYsNiArMjA1LDE2IEBAIG90aGVyczogJChjb21tb24tb2JqcGZ4KXRlc3RydW4uc2gKLSAKLSBzdWJkaXItc3R1YnMgOj0gJChmb3JlYWNoIGRpciwkKHN1YmRpcnMpLCQoY29tbW9uLW9ianBmeCkkKGRpcikvc3R1YnMpCi0gCi0rIyBnbnUvc3R1YnMuaCBkZXBlbmRzICh2aWEgdGhlIHN1YmRpciAnc3R1YnMnIHRhcmdldHMpIG9uIGFsbCB0aGUgLm8KLSsjIGZpbGVzIGluIEVHTElCQy4gIEZvciBib290c3RyYXBwaW5nIGEgR0NDL0VHTElCQyBwYWlyLCBhbiBlbXB0eQotKyMgZ251L3N0dWJzLmggaXMgZ29vZCBlbm91Z2guCi0raWZlcSAoJChpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzKSx5ZXMpCi0rJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oOiBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oICQoK2ZvcmNlKQotKwkkKG1ha2UtdGFyZ2V0LWRpcmVjdG9yeSkKLSsJJChJTlNUQUxMX0RBVEEpICQ8ICRACi0rCi0raW5zdGFsbGVkLXN0dWJzID0KLStlbHNlCi0gaWZuZGVmIGFiaS12YXJpYW50cwotIGluc3RhbGxlZC1zdHVicyA9ICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaAotIGVsc2UKLUBAIC0yMjIsNiArMjQxLDcgQEAgJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oOiAkKCtmb3JjZSkKLSAKLSBpbnN0YWxsLW90aGVycy1ub3N1YmRpcjogJChpbnN0YWxsZWQtc3R1YnMpCi0gZW5kaWYKLStlbmRpZgotIAotIAotICMgU2luY2Ugc3R1YnMuaCBpcyBuZXZlciBuZWVkZWQgd2hlbiBidWlsZGluZyB0aGUgbGlicmFyeSwgd2Ugc2ltcGxpZnkgdGhlCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaCBiL2luY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwMDAwLi4xZDJiNjY5YWZmCi0tLS0gL2Rldi9udWxsCi0rKysgYi9pbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCi1AQCAtMCwwICsxLDEyIEBACi0rLyogUGxhY2Vob2xkZXIgc3R1YnMuaCBmaWxlIGZvciBib290c3RyYXBwaW5nLgotKwotKyAgIFdoZW4gYm9vdHN0cmFwcGluZyBhIEdDQy9FR0xJQkMgcGFpciwgR0NDIHJlcXVpcmVzIHRoYXQgdGhlIEVHTElCQwotKyAgIGhlYWRlcnMgYmUgaW5zdGFsbGVkLCBidXQgd2UgY2FuJ3QgZnVsbHkgYnVpbGQgRUdMSUJDIHdpdGhvdXQgdGhhdAotKyAgIEdDQy4gIFNvIHdlIHJ1biB0aGUgY29tbWFuZDoKLSsKLSsgICAgICBtYWtlIGluc3RhbGwtaGVhZGVycyBpbnN0YWxsLWJvb3RzdHJhcC1oZWFkZXJzPXllcwotKwotKyAgIHRvIGluc3RhbGwgdGhlIGhlYWRlcnMgR0NDIG5lZWRzLCBidXQgYXZvaWQgYnVpbGRpbmcgY2VydGFpbgotKyAgIGRpZmZpY3VsdCBoZWFkZXJzLiAgVGhlIDxnbnUvc3R1YnMuaD4gaGVhZGVyIGRlcGVuZHMsIHZpYSB0aGUKLSsgICBFR0xJQkMgc3ViZGlyICdzdHVicycgbWFrZSB0YXJnZXRzLCBvbiBldmVyeSAubyBmaWxlIGluIEVHTElCQywgYnV0Ci0rICAgYW4gZW1wdHkgc3R1YnMuaCBsaWtlIHRoaXMgd2lsbCBkbyBmaW5lIGZvciBHQ0MuICAqLwotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIwLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTY1YWQ2NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLUNsZWFyLWNhY2hlLWxpbmVzLW9uLXBwYzh4eC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLUZyb20gZTI2NjcwODZiZjk4NGRlNGQzZjEyMjZiOTQ2Nzc2MWNkNWE0YzM5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDMxIERlYyAyMDE1IDE1OjE1OjA5IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMjAvMjhdIGVnbGliYzogQ2xlYXIgY2FjaGUgbGluZXMgb24gcHBjOHh4Ci0KLTIwMDctMDYtMTMgIE5hdGhhbiBTaWR3ZWxsICA8bmF0aGFuQGNvZGVzb3VyY2VyeS5jb20+Ci0gICAgICAgICAgICBNYXJrIFNoaW53ZWxsICA8c2hpbndlbGxAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jCi0gICAgICAgIChfX2xpYmNfc3RhcnRfbWFpbik6IERldGVjdCA4eHggcGFydHMgYW5kIGNsZWFyCi0gICAgICAgIF9fY2FjaGVfbGluZV9zaXplIGlmIGRldGVjdGVkLgotICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMKLSAgICAgICAgKERMX1BMQVRGT1JNX0FVWFYpOiBMaWtld2lzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jICB8IDE0ICsrKysrKysrKysrKystCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMgfCAxNiArKysrKysrKysrKysrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCAyOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1zeXNkZXAuYyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtc3lzZGVwLmMKLWluZGV4IGIwNGVjYzRhNGMuLjc1YmRhOTcyNDEgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLXN5c2RlcC5jCi1AQCAtMjQsOSArMjQsMjEgQEAgaW50IF9fY2FjaGVfbGluZV9zaXplIGF0dHJpYnV0ZV9oaWRkZW47Ci0gLyogU2NhbiB0aGUgQXV4IFZlY3RvciBmb3IgdGhlICJEYXRhIENhY2hlIEJsb2NrIFNpemUiIGVudHJ5LiAgSWYgZm91bmQKLSAgICB2ZXJpZnkgdGhhdCB0aGUgc3RhdGljIGV4dGVybiBfX2NhY2hlX2xpbmVfc2l6ZSBpcyBkZWZpbmVkIGJ5IGNoZWNraW5nCi0gICAgZm9yIG5vdCBOVUxMLiAgSWYgaXQgaXMgZGVmaW5lZCB0aGVuIGFzc2lnbiB0aGUgY2FjaGUgYmxvY2sgc2l6ZQotLSAgIHZhbHVlIHRvIF9fY2FjaGVfbGluZV9zaXplLiAgKi8KLSsgICB2YWx1ZSB0byBfX2NhY2hlX2xpbmVfc2l6ZS4gIFRoaXMgaXMgdXNlZCBieSBtZW1zZXQgdG8KLSsgICBvcHRpbWl6ZSBzZXR0aW5nIHRvIHplcm8uICBXZSBoYXZlIHRvIGRldGVjdCA4eHggcHJvY2Vzc29ycywgd2hpY2gKLSsgICBoYXZlIGJ1Z2d5IGRjYnogaW1wbGVtZW50YXRpb25zIHRoYXQgY2Fubm90IHJlcG9ydCBwYWdlIGZhdWx0cwotKyAgIGNvcnJlY3RseS4gIFRoYXQgcmVxdWlyZXMgcmVhZGluZyBTUFIsIHdoaWNoIGlzIGEgcHJpdmlsZWdlZAotKyAgIG9wZXJhdGlvbi4gIEZvcnR1bmF0ZWx5IDIuMi4xOCBhbmQgbGF0ZXIgZW11bGF0ZXMgUG93ZXJQQyBtZnNwcgotKyAgIHJlYWRzIGZyb20gdGhlIFBWUiByZWdpc3Rlci4gICAqLwotICNkZWZpbmUgRExfUExBVEZPUk1fQVVYVgkJCQkJCSAgICAgIFwKLSAgICAgICBjYXNlIEFUX0RDQUNIRUJTSVpFOgkJCQkJCSAgICAgIFwKLSsJaWYgKF9fTElOVVhfS0VSTkVMX1ZFUlNJT04gPj0gMHgwMjAyMTgpCQkJCSAgICAgIFwKLSsJICB7CQkJCQkJCQkgICAgICBcCi0rCSAgICB1bnNpZ25lZCBwdnIgPSAwOwkJCQkJCSAgICAgIFwKLSsJICAgIGFzbSAoIm1mc3ByICUwLCAyODciIDogIj1yIiAocHZyKSk7CQkJCSAgICAgIFwKLSsJICAgIGlmICgocHZyICYgMHhmZmZmMDAwMCkgPT0gMHgwMDUwMDAwMCkJCQkgICAgICBcCi0rCSAgICAgIGJyZWFrOwkJCQkJCQkgICAgICBcCi0rCSAgfQkJCQkJCQkJICAgICAgXAotIAlfX2NhY2hlX2xpbmVfc2l6ZSA9IGF2LT5hX3VuLmFfdmFsOwkJCQkgICAgICBcCi0gCWJyZWFrOwotIAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvbGliYy1zdGFydC5jIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKLWluZGV4IDRmZDVmNzA3MDAuLjFhMjFlNDY3NWMgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2xpYmMtc3RhcnQuYwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9saWJjLXN0YXJ0LmMKLUBAIC03MywxMSArNzMsMjUgQEAgX19saWJjX3N0YXJ0X21haW4gKGludCBhcmdjLCBjaGFyICoqYXJndiwKLSAKLSAgIC8qIEluaXRpYWxpemUgdGhlIF9fY2FjaGVfbGluZV9zaXplIHZhcmlhYmxlIGZyb20gdGhlIGF1eCB2ZWN0b3IuICBGb3IgdGhlCi0gICAgICBzdGF0aWMgY2FzZSwgd2UgYWxzbyBuZWVkIF9kbF9od2NhcCwgX2RsX2h3Y2FwMiBhbmQgX2RsX3BsYXRmb3JtLCBzbyB3ZQotLSAgICAgY2FuIGNhbGwgX190Y2JfcGFyc2VfaHdjYXBfYW5kX2NvbnZlcnRfYXRfcGxhdGZvcm0gKCkuICAqLwotKyAgICAgY2FuIGNhbGwgX190Y2JfcGFyc2VfaHdjYXBfYW5kX2NvbnZlcnRfYXRfcGxhdGZvcm0gKCkuCi0rCi0rICAgICBUaGlzIGlzIHVzZWQgYnkgbWVtc2V0IHRvIG9wdGltaXplIHNldHRpbmcgdG8gemVyby4gIFdlIGhhdmUgdG8KLSsgICAgIGRldGVjdCA4eHggcHJvY2Vzc29ycywgd2hpY2ggaGF2ZSBidWdneSBkY2J6IGltcGxlbWVudGF0aW9ucyB0aGF0Ci0rICAgICBjYW5ub3QgcmVwb3J0IHBhZ2UgZmF1bHRzIGNvcnJlY3RseS4gIFRoYXQgcmVxdWlyZXMgcmVhZGluZyBTUFIsCi0rICAgICB3aGljaCBpcyBhIHByaXZpbGVnZWQgb3BlcmF0aW9uLiAgRm9ydHVuYXRlbHkgMi4yLjE4IGFuZCBsYXRlcgotKyAgICAgZW11bGF0ZXMgUG93ZXJQQyBtZnNwciByZWFkcyBmcm9tIHRoZSBQVlIgcmVnaXN0ZXIuICAqLwotICAgZm9yIChFbGZXIChhdXh2X3QpICogYXYgPSBhdXh2ZWM7IGF2LT5hX3R5cGUgIT0gQVRfTlVMTDsgKythdikKLSAgICAgc3dpdGNoIChhdi0+YV90eXBlKQotICAgICAgIHsKLSAgICAgICBjYXNlIEFUX0RDQUNIRUJTSVpFOgotKwlpZiAoX19MSU5VWF9LRVJORUxfVkVSU0lPTiA+PSAweDAyMDIxOCkKLSsJICB7Ci0rCSAgICB1bnNpZ25lZCBwdnIgPSAwOwotKwotKwkgICAgYXNtICgibWZzcHIgJTAsIDI4NyIgOiAiPXIiIChwdnIpIDopOwotKwkgICAgaWYgKChwdnIgJiAweGZmZmYwMDAwKSA9PSAweDAwNTAwMDAwKQotKwkgICAgICBicmVhazsKLSsJICB9Ci0gCV9fY2FjaGVfbGluZV9zaXplID0gYXYtPmFfdW4uYV92YWw7Ci0gCWJyZWFrOwotICNpZm5kZWYgU0hBUkVECi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVkYTU1NjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjAtZWdsaWJjLUNyb3NzLWJ1aWxkaW5nLWFuZC10ZXN0aW5nLWluc3RydWN0aW9ucy5wYXRjaApAQCAtMCwwICsxLDYxNiBAQAorRnJvbSA1NjQxNDUyYTI0Zjc2YzVkYWZhMzc0OWE1NDJmY2FjOTNmNzczOTBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTggTWFyIDIwMTUgMDA6NDI6NTggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZWdsaWJjOiBDcm9zcyBidWlsZGluZyBhbmQgdGVzdGluZyBpbnN0cnVjdGlvbnMKKworUG9ydGVkIGZyb20gZWdsaWJjCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIEdMSUJDLmNyb3NzLWJ1aWxkaW5nIHwgMzgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBHTElCQy5jcm9zcy10ZXN0aW5nICB8IDIwNSArKysrKysrKysrKysrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgNTg4IGluc2VydGlvbnMoKykKKyBjcmVhdGUgbW9kZSAxMDA2NDQgR0xJQkMuY3Jvc3MtYnVpbGRpbmcKKyBjcmVhdGUgbW9kZSAxMDA2NDQgR0xJQkMuY3Jvc3MtdGVzdGluZworCitkaWZmIC0tZ2l0IGEvR0xJQkMuY3Jvc3MtYnVpbGRpbmcgYi9HTElCQy5jcm9zcy1idWlsZGluZworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmU2ZTBkYTFhYWYKKy0tLSAvZGV2L251bGwKKysrKyBiL0dMSUJDLmNyb3NzLWJ1aWxkaW5nCitAQCAtMCwwICsxLDM4MyBAQAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLSotIG1vZGU6IHRleHQgLSotCisrCisrICAgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3MtQ29tcGlsaW5nIEdMSUJDCisrICAgICAgICAgICAgICAgICAgSmltIEJsYW5keSA8amltYkBjb2Rlc291cmNlcnkuY29tPgorKworKworK0ludHJvZHVjdGlvbgorKworK01vc3QgR05VIHRvb2xzIGhhdmUgYSBzaW1wbGUgYnVpbGQgcHJvY2VkdXJlOiB5b3UgcnVuIHRoZWlyCisrJ2NvbmZpZ3VyZScgc2NyaXB0LCBhbmQgdGhlbiB5b3UgcnVuICdtYWtlJy4gIFVuZm9ydHVuYXRlbHksIHRoZQorK3Byb2Nlc3Mgb2YgY3Jvc3MtY29tcGlsaW5nIHRoZSBHTlUgQyBsaWJyYXJ5IGlzIHF1aXRlIGEgYml0IG1vcmUKKytpbnZvbHZlZDoKKysKKysxKSBCdWlsZCBhIGNyb3NzLWNvbXBpbGVyLCB3aXRoIGNlcnRhaW4gZmFjaWxpdGllcyBkaXNhYmxlZC4KKysKKysyKSBDb25maWd1cmUgdGhlIEMgbGlicmFyeSB1c2luZyB0aGUgY29tcGlsZXIgeW91IGJ1aWx0IGluIHN0ZXAgMSkuCisrICAgQnVpbGQgYSBmZXcgb2YgdGhlIEMgcnVuLXRpbWUgb2JqZWN0IGZpbGVzLCBidXQgbm90IHRoZSByZXN0IG9mIHRoZQorKyAgIGxpYnJhcnkuICBJbnN0YWxsIHRoZSBsaWJyYXJ5J3MgaGVhZGVyIGZpbGVzIGFuZCB0aGUgcnVuLXRpbWUKKysgICBvYmplY3QgZmlsZXMsIGFuZCBjcmVhdGUgYSBkdW1teSBsaWJjLnNvLgorKworKzMpIEJ1aWxkIGEgc2Vjb25kIGNyb3NzLWNvbXBpbGVyLCB1c2luZyB0aGUgaGVhZGVyIGZpbGVzIGFuZCBvYmplY3QKKysgICBmaWxlcyB5b3UgaW5zdGFsbGVkIGluIHN0ZXAgMi4KKysKKys0KSBDb25maWd1cmUsIGJ1aWxkLCBhbmQgaW5zdGFsbCBhIGZyZXNoIEMgbGlicmFyeSwgdXNpbmcgdGhlIGNvbXBpbGVyCisrICAgYnVpbHQgaW4gc3RlcCAzLgorKworKzUpIEJ1aWxkIGEgdGhpcmQgY3Jvc3MtY29tcGlsZXIsIGJhc2VkIG9uIHRoZSBDIGxpYnJhcnkgYnVpbHQgaW4gc3RlcCA0LgorKworK1RoZSByZWFzb24gZm9yIHRoaXMgY29tcGxleGl0eSBpcyB0aGF0LCBhbHRob3VnaCBHQ0MgYW5kIHRoZSBHTlUgQworK2xpYnJhcnkgYXJlIGRpc3RyaWJ1dGVkIHNlcGFyYXRlbHksIHRoZXkgYXJlIG5vdCBhY3R1YWxseSBpbmRlcGVuZGVudAorK29mIGVhY2ggb3RoZXI6IEdDQyByZXF1aXJlcyB0aGUgQyBsaWJyYXJ5J3MgaGVhZGVycyBhbmQgc29tZSBvYmplY3QKKytmaWxlcyB0byBjb21waWxlIGl0cyBvd24gbGlicmFyaWVzLCB3aGlsZSB0aGUgQyBsaWJyYXJ5IGRlcGVuZHMgb24KKytHQ0MncyBsaWJyYXJpZXMuICBHTElCQyBpbmNsdWRlcyBmZWF0dXJlcyBhbmQgYnVnIGZpeGVzIHRvIHRoZSBzdG9jaworK0dOVSBDIGxpYnJhcnkgdGhhdCBzaW1wbGlmeSB0aGlzIHByb2Nlc3MsIGJ1dCB0aGUgZnVuZGFtZW50YWwKKytpbnRlcmRlcGVuZGVuY3kgc3RhbmRzLgorKworK0luIHRoaXMgZG9jdW1lbnQsIHdlIGV4cGxhaW4gaG93IHRvIGNyb3NzLWNvbXBpbGUgYW4gR0xJQkMvR0NDIHBhaXIKKytmcm9tIHNvdXJjZS4gIE91ciBpbnRlbmRlZCBhdWRpZW5jZSBpcyBkZXZlbG9wZXJzIHdobyBhcmUgYWxyZWFkeQorK2ZhbWlsaWFyIHdpdGggdGhlIEdOVSB0b29sY2hhaW4gYW5kIGNvbWZvcnRhYmxlIHdvcmtpbmcgd2l0aAorK2Nyb3NzLWRldmVsb3BtZW50IHRvb2xzLiAgV2hpbGUgd2UgZG8gcHJlc2VudCBhIHdvcmtlZCBleGFtcGxlIHRvCisrYWNjb21wYW55IHRoZSBleHBsYW5hdGlvbiwgZm9yIGNsYXJpdHkncyBzYWtlIHdlIGRvIG5vdCBjb3ZlciBtYW55IG9mCisrdGhlIG9wdGlvbnMgYXZhaWxhYmxlIHRvIGNyb3NzLXRvb2xjaGFpbiB1c2Vycy4KKysKKysKKytQcmVwYXJhdGlvbgorKworK0dMSUJDIHJlcXVpcmVzIHJlY2VudCB2ZXJzaW9ucyBvZiB0aGUgR05VIGJpbnV0aWxzLCBHQ0MsIGFuZCB0aGUKKytMaW51eCBrZXJuZWwuICBUaGUgd2ViIHBhZ2UgPGh0dHA6Ly93d3cuZWdsaWJjLm9yZy9wcmVyZXF1aXNpdGVzPgorK2RvY3VtZW50cyB0aGUgY3VycmVudCByZXF1aXJlbWVudHMsIGFuZCBsaXN0cyBwYXRjaGVzIG5lZWRlZCBmb3IKKytjZXJ0YWluIHRhcmdldCBhcmNoaXRlY3R1cmVzLiAgQXMgb2YgdGhpcyB3cml0aW5nLCB0aGVzZSBidWlsZAorK2luc3RydWN0aW9ucyBoYXZlIGJlZW4gdGVzdGVkIHdpdGggYmludXRpbHMgMi4yMi41MSwgR0NDIDQuNi4yLAorK2FuZCBMaW51eCAzLjEuCisrCisrRmlyc3QsIGxldCdzIHNldCBzb21lIHZhcmlhYmxlcywgdG8gc2ltcGxpZnkgbGF0ZXIgY29tbWFuZHMuICBXZSdsbAorK2J1aWxkIEdMSUJDIGFuZCBHQ0MgZm9yIGFuIEFSTSB0YXJnZXQsIGtub3duIHRvIHRoZSBMaW51eCBrZXJuZWwKKythcyAnYXJtJywgYW5kIHdlJ2xsIGRvIHRoZSBidWlsZCBvbiBhbiBJbnRlbCB4ODZfNjQgTGludXggYm94OgorKworKyAgICAkIGJ1aWxkPXg4Nl82NC1wYy1saW51eC1nbnUKKysgICAgJCBob3N0PSRidWlsZAorKyAgICAkIHRhcmdldD1hcm0tbm9uZS1saW51eC1nbnVlYWJpCisrICAgICQgbGludXhfYXJjaD1hcm0KKysKKytXZSdyZSB1c2luZyB0aGUgYWZvcmVtZW50aW9uZWQgdmVyc2lvbnMgb2YgQmludXRpbHMsIEdDQywgYW5kIExpbnV4OgorKworKyAgICAkIGJpbnV0aWxzdj1iaW51dGlscy0yLjIyLjUxCisrICAgICQgZ2Njdj1nY2MtNC42LjIKKysgICAgJCBsaW51eHY9bGludXgtMy4xCisrCisrV2UncmUgY2Fycnlpbmcgb3V0IHRoZSBlbnRpcmUgcHJvY2VzcyB1bmRlciAnfi9jcm9zcy1idWlsZCcsIHdoaWNoCisrY29udGFpbnMgdW5wYWNrZWQgc291cmNlIHRyZWVzIGZvciBiaW51dGlscywgZ2NjLCBhbmQgbGludXgga2VybmVsLAorK2Fsb25nIHdpdGggR0xJQkMgc3ZuIHRydW5rICh3aGljaCBjYW4gYmUgY2hlY2tlZC1vdXQgd2l0aAorKydzdm4gY28gaHR0cDovL3d3dy5lZ2xpYmMub3JnL3N2bi90cnVuayBlZ2xpYmMnKToKKysKKysgICAgJCB0b3A9JEhPTUUvY3Jvc3MtYnVpbGQvJHRhcmdldAorKyAgICAkIHNyYz0kSE9NRS9jcm9zcy1idWlsZC9zcmMKKysgICAgJCBscyAkc3JjCisrICAgIGJpbnV0aWxzLTIuMjIuNTEgIGdsaWJjICBnY2MtNC42LjIgIGxpbnV4LTMuMQorKworK1dlJ3JlIGdvaW5nIHRvIHBsYWNlIG91ciBidWlsZCBkaXJlY3RvcmllcyBpbiBhIHN1YmRpcmVjdG9yeSAnb2JqJywKKyt3ZSdsbCBpbnN0YWxsIHRoZSBjcm9zcy1kZXZlbG9wbWVudCB0b29sY2hhaW4gaW4gJ3Rvb2xzJywgYW5kIHdlJ2xsCisrcGxhY2Ugb3VyIHN5c3Jvb3QgKGNvbnRhaW5pbmcgZmlsZXMgdG8gYmUgaW5zdGFsbGVkIG9uIHRoZSB0YXJnZXQKKytzeXN0ZW0pIGluICdzeXNyb290JzoKKysKKysgICAgJCBvYmo9JHRvcC9vYmoKKysgICAgJCB0b29scz0kdG9wL3Rvb2xzCisrICAgICQgc3lzcm9vdD0kdG9wL3N5c3Jvb3QKKysKKysKKytCaW51dGlscworKworK0NvbmZpZ3VyaW5nIGFuZCBidWlsZGluZyBiaW51dGlscyBmb3IgdGhlIHRhcmdldCBpcyBzdHJhaWdodGZvcndhcmQ6CisrCisrICAgICQgbWtkaXIgLXAgJG9iai9iaW51dGlscworKyAgICAkIGNkICRvYmovYmludXRpbHMKKysgICAgJCAkc3JjLyRiaW51dGlsc3YvY29uZmlndXJlIFwKKysgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCisrICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCisrICAgID4gICAgIC0td2l0aC1zeXNyb290PSRzeXNyb290CisrICAgICQgbWFrZQorKyAgICAkIG1ha2UgaW5zdGFsbAorKworKworK1RoZSBGaXJzdCBHQ0MKKysKKytGb3Igb3VyIHdvcmssIHdlIG5lZWQgYSBjcm9zcy1jb21waWxlciB0YXJnZXRpbmcgYW4gQVJNIExpbnV4Cisrc3lzdGVtLiAgSG93ZXZlciwgdGhhdCBjb25maWd1cmF0aW9uIGluY2x1ZGVzIHRoZSBzaGFyZWQgbGlicmFyeQorKydsaWJnY2Nfcy5zbycsIHdoaWNoIGlzIGNvbXBpbGVkIGFnYWluc3QgdGhlIEdMSUJDIGhlYWRlcnMgKHdoaWNoIHdlCisraGF2ZW4ndCBpbnN0YWxsZWQgeWV0KSBhbmQgbGlua2VkIGFnYWluc3QgJ2xpYmMuc28nICh3aGljaCB3ZSBoYXZlbid0CisrYnVpbHQgeWV0KS4KKysKKytGb3J0dW5hdGVseSwgdGhlcmUgYXJlIGNvbmZpZ3VyYXRpb24gb3B0aW9ucyBmb3IgR0NDIHdoaWNoIHRlbGwgaXQgbm90CisrdG8gYnVpbGQgJ2xpYmdjY19zLnNvJy4gIFRoZSAnLS13aXRob3V0LWhlYWRlcnMnIG9wdGlvbiBpcyBzdXBwb3NlZCB0bworK3Rha2UgY2FyZSBvZiB0aGlzLCBidXQgaXRzIGltcGxlbWVudGF0aW9uIGlzIGluY29tcGxldGUsIHNvIHlvdSBtdXN0CisrYWxzbyBjb25maWd1cmUgd2l0aCB0aGUgJy0td2l0aC1uZXdsaWInIG9wdGlvbi4gIFdoaWxlICctLXdpdGgtbmV3bGliJworK2FwcGVhcnMgdG8gbWVhbiAiVXNlIHRoZSBOZXdsaWIgQyBsaWJyYXJ5IiwgaXRzIGVmZmVjdCBpcyB0byB0ZWxsIHRoZQorK0dDQyBidWlsZCBtYWNoaW5lcnksICJEb24ndCBhc3N1bWUgdGhlcmUgaXMgYSBDIGxpYnJhcnkgYXZhaWxhYmxlLiIKKysKKytXZSBhbHNvIG5lZWQgdG8gZGlzYWJsZSBzb21lIG9mIHRoZSBsaWJyYXJpZXMgdGhhdCB3b3VsZCBub3JtYWxseSBiZQorK2J1aWx0IGFsb25nIHdpdGggR0NDLCBhbmQgc3BlY2lmeSB0aGF0IG9ubHkgdGhlIGNvbXBpbGVyIGZvciB0aGUgQworK2xhbmd1YWdlIGlzIG5lZWRlZC4KKysKKytTbywgd2UgY3JlYXRlIGEgYnVpbGQgZGlyZWN0b3J5LCBjb25maWd1cmUsIG1ha2UsIGFuZCBpbnN0YWxsLgorKworKyAgICAkIG1rZGlyIC1wICRvYmovZ2NjMQorKyAgICAkIGNkICRvYmovZ2NjMQorKyAgICAkICRzcmMvJGdjY3YvY29uZmlndXJlIFwKKysgICAgPiAgICAgLS10YXJnZXQ9JHRhcmdldCBcCisrICAgID4gICAgIC0tcHJlZml4PSR0b29scyBcCisrICAgID4gICAgIC0td2l0aG91dC1oZWFkZXJzIC0td2l0aC1uZXdsaWIgXAorKyAgICA+ICAgICAtLWRpc2FibGUtc2hhcmVkIC0tZGlzYWJsZS10aHJlYWRzIC0tZGlzYWJsZS1saWJzc3AgXAorKyAgICA+ICAgICAtLWRpc2FibGUtbGliZ29tcCAtLWRpc2FibGUtbGlibXVkZmxhcCAtLWRpc2FibGUtbGlicXVhZG1hdGggXAorKyAgICA+ICAgICAtLWRpc2FibGUtZGVjaW1hbC1mbG9hdCAtLWRpc2FibGUtbGliZmZpIFwKKysgICAgPiAgICAgLS1lbmFibGUtbGFuZ3VhZ2VzPWMKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQorKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKKysKKysKKytMaW51eCBLZXJuZWwgSGVhZGVycworKworK1RvIGNvbmZpZ3VyZSBHTElCQywgd2UgYWxzbyBuZWVkIExpbnV4IGtlcm5lbCBoZWFkZXJzIGluIHBsYWNlLgorK0ZvcnR1bmF0ZWx5LCB0aGUgTGludXggbWFrZWZpbGVzIGhhdmUgYSB0YXJnZXQgdGhhdCBpbnN0YWxscyB0aGVtIGZvcgorK3VzLiAgU2luY2UgdGhlIHByb2Nlc3MgZG9lcyBtb2RpZnkgdGhlIHNvdXJjZSB0cmVlIGEgYml0LCB3ZSBtYWtlIGEKKytjb3B5IGZpcnN0OgorKworKyAgICAkIGNwIC1yICRzcmMvJGxpbnV4diAkb2JqL2xpbnV4CisrICAgICQgY2QgJG9iai9saW51eAorKworK05vdyB3ZSdyZSByZWFkeSB0byBpbnN0YWxsIHRoZSBoZWFkZXJzIGludG8gdGhlIHN5c3Jvb3Q6CisrCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIFwKKysgICAgPiBtYWtlIGhlYWRlcnNfaW5zdGFsbCBcCisrICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAorKyAgICA+ICAgICAgSU5TVEFMTF9IRFJfUEFUSD0kc3lzcm9vdC91c3IKKysKKysKKytHTElCQyBIZWFkZXJzIGFuZCBQcmVsaW1pbmFyeSBPYmplY3RzCisrCisrVXNpbmcgdGhlIGNyb3NzLWNvbXBpbGVyIHdlJ3ZlIGp1c3QgYnVpbHQsIHdlIGNhbiBub3cgY29uZmlndXJlIEdMSUJDCisrd2VsbCBlbm91Z2ggdG8gaW5zdGFsbCB0aGUgaGVhZGVycyBhbmQgYnVpbGQgdGhlIG9iamVjdCBmaWxlcyB0aGF0IHRoZQorK2Z1bGwgY3Jvc3MtY29tcGlsZXIgd2lsbCBuZWVkOgorKworKyAgICAkIG1rZGlyIC1wICRvYmovZ2xpYmMtaGVhZGVycworKyAgICAkIGNkICRvYmovZ2xpYmMtaGVhZGVycworKyAgICAkIEJVSUxEX0NDPWdjYyBcCisrICAgID4gQ0M9JHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyBcCisrICAgID4gQ1hYPSR0b29scy9iaW4vJHRhcmdldC1nKysgXAorKyAgICA+IEFSPSR0b29scy9iaW4vJHRhcmdldC1hciBcCisrICAgID4gUkFOTElCPSR0b29scy9iaW4vJHRhcmdldC1yYW5saWIgXAorKyAgICA+ICRzcmMvZ2xpYmMvbGliYy9jb25maWd1cmUgXAorKyAgICA+ICAgICAtLXByZWZpeD0vdXNyIFwKKysgICAgPiAgICAgLS13aXRoLWhlYWRlcnM9JHN5c3Jvb3QvdXNyL2luY2x1ZGUgXAorKyAgICA+ICAgICAtLWJ1aWxkPSRidWlsZCBcCisrICAgID4gICAgIC0taG9zdD0kdGFyZ2V0IFwKKysgICAgPiAgICAgLS1kaXNhYmxlLXByb2ZpbGUgLS13aXRob3V0LWdkIC0td2l0aG91dC1jdnMgXAorKyAgICA+ICAgICAtLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzCisrCisrVGhlIG9wdGlvbiAnLS1wcmVmaXg9L3VzcicgbWF5IGxvb2sgc3RyYW5nZSwgYnV0IHlvdSBzaG91bGQgbmV2ZXIKKytjb25maWd1cmUgR0xJQkMgd2l0aCBhIHByZWZpeCBvdGhlciB0aGFuICcvdXNyJzogaW4gdmFyaW91cyBwbGFjZXMsCisrR0xJQkMncyBidWlsZCBzeXN0ZW0gY2hlY2tzIHdoZXRoZXIgdGhlIHByZWZpeCBpcyAnL3VzcicsIGFuZCBkb2VzCisrc3BlY2lhbCBoYW5kbGluZyBvbmx5IGlmIHRoYXQgaXMgdGhlIGNhc2UuICBVbmxlc3MgeW91IHVzZSB0aGlzCisrcHJlZml4LCB5b3Ugd2lsbCBnZXQgYSBzeXNyb290IHRoYXQgZG9lcyBub3QgdXNlIHRoZSBzdGFuZGFyZCBMaW51eAorK2RpcmVjdG9yeSBsYXlvdXRzIGFuZCBjYW5ub3QgYmUgdXNlZCBhcyBhIGJhc2lzIGZvciB0aGUgcm9vdAorK2ZpbGVzeXN0ZW0gb24geW91ciB0YXJnZXQgc3lzdGVtIGNvbXBhdGlibHkgd2l0aCBub3JtYWwgR0xJQkMKKytpbnN0YWxsYXRpb25zLgorKworK1RoZSAnLS13aXRoLWhlYWRlcnMnIG9wdGlvbiB0ZWxscyBHTElCQyB3aGVyZSB0aGUgTGludXggaGVhZGVycyBoYXZlCisrYmVlbiBpbnN0YWxsZWQuCisrCisrVGhlICctLWVuYWJsZS1hZGQtb25zPW5wdGwsbGliaWRuLC4uL3BvcnRzJyBvcHRpb24gdGVsbHMgR0xJQkMgdG8gbG9vaworK2ZvciB0aGUgbGlzdGVkIGdsaWJjIGFkZC1vbnMuIE1vc3Qgbm90YWJseSB0aGUgcG9ydHMgYWRkLW9uIChsb2NhdGVkCisranVzdCBhYm92ZSB0aGUgbGliYyBzb3VyY2VzIGluIHRoZSBHTElCQyBzdm4gdHJlZSkgaXMgcmVxdWlyZWQgdG8KKytzdXBwb3J0IEFSTSB0YXJnZXRzLgorKworK1dlIGNhbiBub3cgdXNlIHRoZSAnaW5zdGFsbC1oZWFkZXJzJyBtYWtlZmlsZSB0YXJnZXQgdG8gaW5zdGFsbCB0aGUKKytoZWFkZXJzOgorKworKyAgICAkIG1ha2UgaW5zdGFsbC1oZWFkZXJzIGluc3RhbGxfcm9vdD0kc3lzcm9vdCBcCisrICAgID4gICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycz15ZXMKKysKKytUaGUgJ2luc3RhbGxfcm9vdCcgdmFyaWFibGUgaW5kaWNhdGVzIHdoZXJlIHRoZSBmaWxlcyBzaG91bGQgYWN0dWFsbHkKKytiZSBpbnN0YWxsZWQ7IGl0cyB2YWx1ZSBpcyB0cmVhdGVkIGFzIHRoZSBwYXJlbnQgb2YgdGhlICctLXByZWZpeCcKKytkaXJlY3Rvcnkgd2UgcGFzc2VkIHRvIHRoZSBjb25maWd1cmUgc2NyaXB0LCBzbyB0aGUgaGVhZGVycyB3aWxsIGdvIGluCisrJyRzeXNyb290L3Vzci9pbmNsdWRlJy4gIFRoZSAnaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycycgdmFyaWFibGUKKytyZXF1ZXN0cyBzcGVjaWFsIGhhbmRsaW5nIGZvciBjZXJ0YWluIHRyaWNreSBoZWFkZXIgZmlsZXMuCisrCisrTmV4dCwgdGhlcmUgYXJlIGEgZmV3IG9iamVjdCBmaWxlcyBuZWVkZWQgdG8gbGluayBzaGFyZWQgbGlicmFyaWVzLAorK3doaWNoIHdlIGJ1aWxkIGFuZCBpbnN0YWxsIGJ5IGhhbmQ6CisrCisrICAgICQgbWtkaXIgLXAgJHN5c3Jvb3QvdXNyL2xpYgorKyAgICAkIG1ha2UgY3N1L3N1YmRpcl9saWIKKysgICAgJCBjcCBjc3UvY3J0MS5vIGNzdS9jcnRpLm8gY3N1L2NydG4ubyAkc3lzcm9vdC91c3IvbGliCisrCisrRmluYWxseSwgJ2xpYmdjY19zLnNvJyByZXF1aXJlcyBhICdsaWJjLnNvJyB0byBsaW5rIGFnYWluc3QuICBIb3dldmVyLAorK3NpbmNlIHdlIHdpbGwgbmV2ZXIgYWN0dWFsbHkgZXhlY3V0ZSBpdHMgY29kZSwgaXQgZG9lc24ndCBtYXR0ZXIgd2hhdAorK2l0IGNvbnRhaW5zLiAgU28sIHRyZWF0aW5nICcvZGV2L251bGwnIGFzIGEgQyBzb3VyY2UgZmlsZSwgd2UgcHJvZHVjZQorK2EgZHVtbXkgJ2xpYmMuc28nIGluIG9uZSBzdGVwOgorKworKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nY2MgLW5vc3RkbGliIC1ub3N0YXJ0ZmlsZXMgLXNoYXJlZCAteCBjIC9kZXYvbnVsbCBcCisrICAgID4gICAgICAgICAgICAgICAgICAgICAgICAtbyAkc3lzcm9vdC91c3IvbGliL2xpYmMuc28KKysKKysKKytUaGUgU2Vjb25kIEdDQworKworK1dpdGggdGhlIEdMSUJDIGhlYWRlcnMgYW5kIHNlbGVjdGVkIG9iamVjdCBmaWxlcyBpbnN0YWxsZWQsIHdlIGNhbgorK25vdyBidWlsZCBhIEdDQyB0aGF0IGlzIGNhcGFibGUgb2YgY29tcGlsaW5nIEdMSUJDLiAgV2UgY29uZmlndXJlLAorK2J1aWxkLCBhbmQgaW5zdGFsbCB0aGUgc2Vjb25kIEdDQywgYWdhaW4gYnVpbGRpbmcgb25seSB0aGUgQyBjb21waWxlciwKKythbmQgYXZvaWRpbmcgbGlicmFyaWVzIHdlIHdvbid0IHVzZToKKysKKysgICAgJCBta2RpciAtcCAkb2JqL2djYzIKKysgICAgJCBjZCAkb2JqL2djYzIKKysgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCisrICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAorKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdCBcCisrICAgID4gICAgIC0tZGlzYWJsZS1saWJzc3AgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAorKyAgICA+ICAgICAtLWRpc2FibGUtbGliZmZpIC0tZGlzYWJsZS1saWJxdWFkbWF0aCBcCisrICAgID4gICAgIC0tZW5hYmxlLWxhbmd1YWdlcz1jCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZSBpbnN0YWxsCisrCisrCisrR0xJQkMsIENvbXBsZXRlCisrCisrV2l0aCB0aGUgc2Vjb25kIGNvbXBpbGVyIGJ1aWx0IGFuZCBpbnN0YWxsZWQsIHdlJ3JlIG5vdyByZWFkeSBmb3IgdGhlCisrZnVsbCBHTElCQyBidWlsZDoKKysKKysgICAgJCBta2RpciAtcCAkb2JqL2dsaWJjCisrICAgICQgY2QgJG9iai9nbGliYworKyAgICAkIEJVSUxEX0NDPWdjYyBcCisrICAgID4gQ0M9JHRvb2xzL2Jpbi8kdGFyZ2V0LWdjYyBcCisrICAgID4gQ1hYPSR0b29scy9iaW4vJHRhcmdldC1nKysgXAorKyAgICA+IEFSPSR0b29scy9iaW4vJHRhcmdldC1hciBcCisrICAgID4gUkFOTElCPSR0b29scy9iaW4vJHRhcmdldC1yYW5saWIgXAorKyAgICA+ICRzcmMvZ2xpYmMvbGliYy9jb25maWd1cmUgXAorKyAgICA+ICAgICAtLXByZWZpeD0vdXNyIFwKKysgICAgPiAgICAgLS13aXRoLWhlYWRlcnM9JHN5c3Jvb3QvdXNyL2luY2x1ZGUgXAorKyAgICA+ICAgICAtLXdpdGgta2NvbmZpZz0kb2JqL2xpbnV4L3NjcmlwdHMva2NvbmZpZyBcCisrICAgID4gICAgIC0tYnVpbGQ9JGJ1aWxkIFwKKysgICAgPiAgICAgLS1ob3N0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLWRpc2FibGUtcHJvZmlsZSAtLXdpdGhvdXQtZ2QgLS13aXRob3V0LWN2cyBcCisrICAgID4gICAgIC0tZW5hYmxlLWFkZC1vbnM9bnB0bCxsaWJpZG4sLi4vcG9ydHMKKysKKytOb3RlIHRoZSBhZGRpdGlvbmFsICctLXdpdGgta2NvbmZpZycgb3B0aW9uLiBUaGlzIHRlbGxzIEdMSUJDIHdoZXJlIHRvCisrZmluZCB0aGUgaG9zdCBjb25maWcgdG9vbHMgdXNlZCBieSB0aGUga2VybmVsICdtYWtlIGNvbmZpZycgYW5kICdtYWtlCisrbWVudWNvbmZpZycuICBUaGVzZSB0b29scyBjYW4gYmUgcmUtdXNlZCBieSBHTElCQyBmb3IgaXRzIG93biAnbWFrZQorKypjb25maWcnIHN1cHBvcnQsIHdoaWNoIHdpbGwgY3JlYXRlICdvcHRpb24tZ3JvdXBzLmNvbmZpZycgZm9yIHlvdS4KKytCdXQgZmlyc3QgbWFrZSBzdXJlIHRob3NlIHRvb2xzIGhhdmUgYmVlbiBidWlsdCBieSBydW5uaW5nIHNvbWUKKytkdW1teSAnbWFrZSAqY29uZmlnJyBjYWxscyBpbiB0aGUga2VybmVsIGRpcmVjdG9yeToKKysKKysgICAgJCBjZCAkb2JqL2xpbnV4CisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgY29uZmlnIFwKKysgICAgPiAgICAgIEFSQ0g9JGxpbnV4X2FyY2ggQ1JPU1NfQ09NUElMRT0kdGFyZ2V0LSBcCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgbWVudWNvbmZpZyBcCisrICAgID4gICAgICBBUkNIPSRsaW51eF9hcmNoIENST1NTX0NPTVBJTEU9JHRhcmdldC0gXAorKworK05vdyB3ZSBjYW4gY29uZmlndXJlIGFuZCBidWlsZCB0aGUgZnVsbCBHTElCQzoKKysKKysgICAgJCBjZCAkb2JqL2dsaWJjCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgZGVmY29uZmlnCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgbWVudWNvbmZpZworKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlCisrICAgICQgUEFUSD0kdG9vbHMvYmluOiRQQVRIIG1ha2UgaW5zdGFsbCBpbnN0YWxsX3Jvb3Q9JHN5c3Jvb3QKKysKKytBdCB0aGlzIHBvaW50LCB3ZSBoYXZlIGEgY29tcGxldGUgR0xJQkMgaW5zdGFsbGF0aW9uIGluICckc3lzcm9vdCcsCisrd2l0aCBoZWFkZXIgZmlsZXMsIGxpYnJhcnkgZmlsZXMsIGFuZCBtb3N0IG9mIHRoZSBDIHJ1bnRpbWUgc3RhcnR1cAorK2ZpbGVzIGluIHBsYWNlLgorKworKworK1RoZSBUaGlyZCBHQ0MKKysKKytGaW5hbGx5LCB3ZSByZWNvbXBpbGUgR0NDIGFnYWluc3QgdGhpcyBmdWxsIGluc3RhbGxhdGlvbiwgZW5hYmxpbmcKKyt3aGF0ZXZlciBsYW5ndWFnZXMgYW5kIGxpYnJhcmllcyB3ZSB3b3VsZCBsaWtlIHRvIHVzZToKKysKKysgICAgJCBta2RpciAtcCAkb2JqL2djYzMKKysgICAgJCBjZCAkb2JqL2djYzMKKysgICAgJCAkc3JjLyRnY2N2L2NvbmZpZ3VyZSBcCisrICAgID4gICAgIC0tdGFyZ2V0PSR0YXJnZXQgXAorKyAgICA+ICAgICAtLXByZWZpeD0kdG9vbHMgXAorKyAgICA+ICAgICAtLXdpdGgtc3lzcm9vdD0kc3lzcm9vdCBcCisrICAgID4gICAgIC0tZW5hYmxlLV9fY3hhX2F0ZXhpdCBcCisrICAgID4gICAgIC0tZGlzYWJsZS1saWJzc3AgLS1kaXNhYmxlLWxpYmdvbXAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAorKyAgICA+ICAgICAtLWVuYWJsZS1sYW5ndWFnZXM9YyxjKysKKysgICAgJCBQQVRIPSR0b29scy9iaW46JFBBVEggbWFrZQorKyAgICAkIFBBVEg9JHRvb2xzL2JpbjokUEFUSCBtYWtlIGluc3RhbGwKKysKKytUaGUgJy0tZW5hYmxlLV9fY3hhX2F0ZXhpdCcgb3B0aW9uIHRlbGxzIEdDQyB3aGF0IHNvcnQgb2YgQysrCisrZGVzdHJ1Y3RvciBzdXBwb3J0IHRvIGV4cGVjdCBmcm9tIHRoZSBDIGxpYnJhcnk7IGl0J3MgcmVxdWlyZWQgd2l0aAorK0dMSUJDLgorKworK0FuZCBzaW5jZSBHQ0MncyBpbnN0YWxsYXRpb24gcHJvY2VzcyBpc24ndCBkZXNpZ25lZCB0byBoZWxwIGNvbnN0cnVjdAorK3N5c3Jvb3QgdHJlZXMsIHdlIG11c3QgbWFudWFsbHkgY29weSBjZXJ0YWluIGxpYnJhcmllcyBpbnRvIHBsYWNlIGluCisrdGhlIHN5c3Jvb3QuCisrCisrICAgICQgY3AgLWQgJHRvb2xzLyR0YXJnZXQvbGliL2xpYmdjY19zLnNvKiAkc3lzcm9vdC9saWIKKysgICAgJCBjcCAtZCAkdG9vbHMvJHRhcmdldC9saWIvbGlic3RkYysrLnNvKiAkc3lzcm9vdC91c3IvbGliCisrCisrCisrVHJ5aW5nIFRoaW5ncyBPdXQKKysKKytBdCB0aGlzIHBvaW50LCAnJHRvb2xzJyBjb250YWlucyBhIGNyb3NzIHRvb2xjaGFpbiByZWFkeSB0byB1c2UKKyt0aGUgR0xJQkMgaW5zdGFsbGF0aW9uIGluICckc3lzcm9vdCc6CisrCisrICAgICQgY2F0ID4gaGVsbG8uYyA8PEVPRgorKyAgICA+ICNpbmNsdWRlIDxzdGRpby5oPgorKyAgICA+IGludAorKyAgICA+IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKysgICAgPiB7CisrICAgID4gICBwdXRzICgiSGVsbG8sIHdvcmxkISIpOworKyAgICA+ICAgcmV0dXJuIDA7CisrICAgID4gfQorKyAgICA+IEVPRgorKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nY2MgLVdhbGwgaGVsbG8uYyAtbyBoZWxsbworKyAgICAkIGNhdCA+IGMrKy1oZWxsby5jYyA8PEVPRgorKyAgICA+ICNpbmNsdWRlIDxpb3N0cmVhbT4KKysgICAgPiBpbnQKKysgICAgPiBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisrICAgID4geworKyAgICA+ICAgc3RkOjpjb3V0IDw8ICJIZWxsbywgQysrIHdvcmxkISIgPDwgc3RkOjplbmRsOworKyAgICA+ICAgcmV0dXJuIDA7CisrICAgID4gfQorKyAgICA+IEVPRgorKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1nKysgLVdhbGwgYysrLWhlbGxvLmNjIC1vIGMrKy1oZWxsbworKworKworK1dlIGNhbiB1c2UgJ3JlYWRlbGYnIHRvIHZlcmlmeSB0aGF0IHRoZXNlIGFyZSBpbmRlZWQgZXhlY3V0YWJsZXMgZm9yCisrb3VyIHRhcmdldCwgdXNpbmcgb3VyIGR5bmFtaWMgbGlua2VyOgorKworKyAgICAkICR0b29scy9iaW4vJHRhcmdldC1yZWFkZWxmIC1obCBoZWxsbworKyAgICBFTEYgSGVhZGVyOgorKyAgICAuLi4KKysgICAgICBUeXBlOiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVYRUMgKEV4ZWN1dGFibGUgZmlsZSkKKysgICAgICBNYWNoaW5lOiAgICAgICAgICAgICAgICAgICAgICAgICAgIEFSTQorKworKyAgICAuLi4KKysgICAgUHJvZ3JhbSBIZWFkZXJzOgorKyAgICAgIFR5cGUgICAgICAgICAgIE9mZnNldCAgIFZpcnRBZGRyICAgUGh5c0FkZHIgICBGaWxlU2l6IE1lbVNpeiAgRmxnIEFsaWduCisrICAgICAgUEhEUiAgICAgICAgICAgMHgwMDAwMzQgMHgxMDAwMDAzNCAweDEwMDAwMDM0IDB4MDAxMDAgMHgwMDEwMCBSIEUgMHg0CisrICAgICAgSU5URVJQICAgICAgICAgMHgwMDAxMzQgMHgwMDAwODEzNCAweDAwMDA4MTM0IDB4MDAwMTMgMHgwMDAxMyBSICAgMHgxCisrICAgICAgICAgIFtSZXF1ZXN0aW5nIHByb2dyYW0gaW50ZXJwcmV0ZXI6IC9saWIvbGQtbGludXguc28uM10KKysgICAgICBMT0FEICAgICAgICAgICAweDAwMDAwMCAweDAwMDA4MDAwIDB4MDAwMDgwMDAgMHgwMDQyYyAweDAwNDJjIFIgRSAweDgwMDAKKysgICAgLi4uCisrCisrTG9va2luZyBhdCB0aGUgZHluYW1pYyBzZWN0aW9uIG9mIHRoZSBpbnN0YWxsZWQgJ2xpYmdjY19zLnNvJywgd2Ugc2VlCisrdGhhdCB0aGUgJ05FRURFRCcgZW50cnkgZm9yIHRoZSBDIGxpYnJhcnkgZG9lcyBpbmNsdWRlIHRoZSAnLjYnCisrc3VmZml4LCBpbmRpY2F0aW5nIHRoYXQgd2FzIGxpbmtlZCBhZ2FpbnN0IG91ciBmdWxseSBidWlsZCBHTElCQywgYW5kCisrbm90IG91ciBkdW1teSAnbGliYy5zbyc6CisrCisrICAgICQgJHRvb2xzL2Jpbi8kdGFyZ2V0LXJlYWRlbGYgLWQgJHN5c3Jvb3QvbGliL2xpYmdjY19zLnNvLjEKKysgICAgRHluYW1pYyBzZWN0aW9uIGF0IG9mZnNldCAweDEwODNjIGNvbnRhaW5zIDI0IGVudHJpZXM6CisrICAgICAgVGFnICAgICAgICBUeXBlICAgICAgICAgICAgICAgICAgICAgICAgIE5hbWUvVmFsdWUKKysgICAgIDB4MDAwMDAwMDEgKE5FRURFRCkgICAgICAgICAgICAgICAgICAgICBTaGFyZWQgbGlicmFyeTogW2xpYmMuc28uNl0KKysgICAgIDB4MDAwMDAwMGUgKFNPTkFNRSkgICAgICAgICAgICAgICAgICAgICBMaWJyYXJ5IHNvbmFtZTogW2xpYmdjY19zLnNvLjFdCisrICAgIC4uLgorKworKworK0FuZCBvbiB0aGUgdGFyZ2V0IG1hY2hpbmUsIHdlIGNhbiBydW4gb3VyIHByb2dyYW1zOgorKworKyAgICAkICRzeXNyb290L2xpYi9sZC5zby4xIC0tbGlicmFyeS1wYXRoICRzeXNyb290L2xpYjokc3lzcm9vdC91c3IvbGliIFwKKysgICAgPiAuL2hlbGxvCisrICAgIEhlbGxvLCB3b3JsZCEKKysgICAgJCAkc3lzcm9vdC9saWIvbGQuc28uMSAtLWxpYnJhcnktcGF0aCAkc3lzcm9vdC9saWI6JHN5c3Jvb3QvdXNyL2xpYiBcCisrICAgID4gLi9jKystaGVsbG8KKysgICAgSGVsbG8sIEMrKyB3b3JsZCEKK2RpZmYgLS1naXQgYS9HTElCQy5jcm9zcy10ZXN0aW5nIGIvR0xJQkMuY3Jvc3MtdGVzdGluZworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLmI2N2I0Njg0NjYKKy0tLSAvZGV2L251bGwKKysrKyBiL0dMSUJDLmNyb3NzLXRlc3RpbmcKK0BAIC0wLDAgKzEsMjA1IEBACisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtKi0gbW9kZTogdGV4dCAtKi0KKysKKysgICAgICAgICAgICAgICAgICAgICAgQ3Jvc3MtVGVzdGluZyBXaXRoIEdMSUJDCisrICAgICAgICAgICAgICAgICAgSmltIEJsYW5keSA8amltYkBjb2Rlc291cmNlcnkuY29tPgorKworKworK0ludHJvZHVjdGlvbgorKworK0RldmVsb3BlcnMgd3JpdGluZyBzb2Z0d2FyZSBmb3IgZW1iZWRkZWQgc3lzdGVtcyBvZnRlbiB1c2UgYSBkZXNrdG9wCisrb3Igb3RoZXIgc2ltaWxhcmx5IGNhcGFibGUgY29tcHV0ZXIgZm9yIGRldmVsb3BtZW50LCBidXQgbmVlZCB0byBydW4KKyt0ZXN0cyBvbiB0aGUgZW1iZWRkZWQgc3lzdGVtLCBvciBwZXJoYXBzIG9uIGEgc2ltdWxhdG9yLiAgV2hlbgorK2NvbmZpZ3VyZWQgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLCB0aGUgc3RvY2sgR05VIEMgbGlicmFyeSBzaW1wbHkKKytkaXNhYmxlcyBydW5uaW5nIHRlc3RzIGFsdG9nZXRoZXI6IHRoZSBjb21tYW5kICdtYWtlIHRlc3RzJyBidWlsZHMKKyt0ZXN0IHByb2dyYW1zLCBidXQgZG9lcyBub3QgcnVuIHRoZW0uICBHTElCQywgaG93ZXZlciwgcHJvdmlkZXMKKytmYWNpbGl0aWVzIGZvciBjb21waWxpbmcgdGVzdHMgYW5kIGdlbmVyYXRpbmcgZGF0YSBmaWxlcyBvbiB0aGUgYnVpbGQKKytzeXN0ZW0sIGJ1dCBydW5uaW5nIHRoZSB0ZXN0IHByb2dyYW1zIHRoZW1zZWx2ZXMgb24gYSByZW1vdGUgc3lzdGVtIG9yCisrc2ltdWxhdG9yLgorKworKworK1Rlc3QgZW52aXJvbm1lbnQgcmVxdWlyZW1lbnRzCisrCisrVGhlIHRlc3QgZW52aXJvbm1lbnQgbXVzdCBtZWV0IGNlcnRhaW4gY29uZGl0aW9ucyBmb3IgR0xJQkMncworK2Nyb3NzLXRlc3RpbmcgZmFjaWxpdGllcyB0byB3b3JrOgorKworKy0gU2hhcmVkIGZpbGVzeXN0ZW1zLiAgVGhlICdidWlsZCcgc3lzdGVtLCBvbiB3aGljaCB5b3UgY29uZmlndXJlIGFuZAorKyAgY29tcGlsZSBHTElCQywgYW5kIHRoZSAnaG9zdCcgc3lzdGVtLCBvbiB3aGljaCB5b3UgaW50ZW5kIHRvIHJ1bgorKyAgR0xJQkMsIG11c3Qgc2hhcmUgYSBmaWxlc3lzdGVtIGNvbnRhaW5pbmcgdGhlIEdMSUJDIGJ1aWxkIGFuZAorKyAgc291cmNlIHRyZWVzLiAgRmlsZXMgbXVzdCBhcHBlYXIgYXQgdGhlIHNhbWUgcGF0aHMgb24gYm90aCBzeXN0ZW1zLgorKworKy0gUmVtb3RlLXNoZWxsIGxpa2UgaW52b2NhdGlvbi4gIFRoZXJlIG11c3QgYmUgYSB3YXkgdG8gcnVuIGEgcHJvZ3JhbQorKyAgb24gdGhlIGhvc3Qgc3lzdGVtIGZyb20gdGhlIGJ1aWxkIHN5c3RlbSwgcGFzc2luZyBpdCBwcm9wZXJseSBxdW90ZWQKKysgIGNvbW1hbmQtbGluZSBhcmd1bWVudHMsIHNldHRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGVzLCBhbmQKKysgIGluaGVyaXRpbmcgdGhlIGNhbGxlcidzIHN0YW5kYXJkIGlucHV0IGFuZCBvdXRwdXQuCisrCisrCisrVXNhZ2UKKysKKytUbyB1c2UgR0xJQkMncyBjcm9zcy10ZXN0aW5nIHN1cHBvcnQsIHByb3ZpZGUgdmFsdWVzIGZvciB0aGUKKytmb2xsb3dpbmcgTWFrZSB2YXJpYWJsZXMgd2hlbiB5b3UgaW52b2tlICdtYWtlJzoKKysKKystIGNyb3NzLXRlc3Qtd3JhcHBlcgorKworKyAgVGhpcyBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGNyb3NzLXRlc3Rpbmcgd3JhcHBlciBjb21tYW5kLCBhbG9uZworKyAgd2l0aCBhbnkgYXJndW1lbnRzLgorKworKy0gY3Jvc3MtbG9jYWxlZGVmCisrCisrICBUaGlzIHNob3VsZCBiZSB0aGUgbmFtZSBvZiBhIGNyb3NzLWNhcGFibGUgbG9jYWxlZGVmIHByb2dyYW0sIGxpa2UKKysgIHRoYXQgaW5jbHVkZWQgaW4gdGhlIEdMSUJDICdsb2NhbGVkZWYnIG1vZHVsZSwgYWxvbmcgd2l0aCBhbnkKKysgIGFyZ3VtZW50cyBuZWVkZWQuCisrCisrVGhlc2UgYXJlIGVhY2ggZXhwbGFpbmVkIGluIGRldGFpbCBiZWxvdy4KKysKKysKKytUaGUgQ3Jvc3MtVGVzdGluZyBXcmFwcGVyCisrCisrVG8gcnVuIHRlc3QgcHJvZ3JhbXMgcmVsaWFibHksIHRoZSBzdG9jayBHTlUgQyBsaWJyYXJ5IHRha2VzIGNhcmUgdG8KKytlbnN1cmUgdGhhdCB0ZXN0IHByb2dyYW1zIHVzZSB0aGUgbmV3bHkgY29tcGlsZWQgZHluYW1pYyBsaW5rZXIgYW5kCisrc2hhcmVkIGxpYnJhcmllcywgYW5kIG5ldmVyIHRoZSBob3N0IHN5c3RlbSdzIGluc3RhbGxlZCBsaWJyYXJpZXMuICBUbworK2FjY29tcGxpc2ggdGhpcywgaXQgcnVucyB0aGUgdGVzdHMgYnkgZXhwbGljaXRseSBpbnZva2luZyB0aGUgZHluYW1pYworK2xpbmtlciBmcm9tIHRoZSBidWlsZCB0cmVlLCBwYXNzaW5nIGl0IGEgbGlzdCBvZiBidWlsZCB0cmVlCisrZGlyZWN0b3JpZXMgdG8gc2VhcmNoIGZvciBzaGFyZWQgbGlicmFyaWVzLCBmb2xsb3dlZCBieSB0aGUgbmFtZSBvZgorK3RoZSBleGVjdXRhYmxlIHRvIHJ1biBhbmQgaXRzIGFyZ3VtZW50cy4KKysKKytGb3IgZXhhbXBsZSwgd2hlcmUgb25lIG1pZ2h0IG5vcm1hbGx5IHJ1biBhIHRlc3QgcHJvZ3JhbSBsaWtlIHRoaXM6CisrCisrICAgICQgLi90c3QtZm9vIGFyZzEgYXJnMgorKworK3RoZSBHTlUgQyBsaWJyYXJ5IG1pZ2h0IHJ1biB0aGF0IHByb2dyYW0gbGlrZSB0aGlzOgorKworKyAgICAkICRvYmpkaXIvZWxmL2xkLWxpbnV4LnNvLjMgLS1saWJyYXJ5LXBhdGggJG9iamRpciBcCisrICAgICAgLi90c3QtZm9vIGFyZzEgYXJnMgorKworKyh3aGVyZSAkb2JqZGlyIGlzIHRoZSBwYXRoIHRvIHRoZSB0b3Agb2YgdGhlIGJ1aWxkIHRyZWUsIGFuZCB0aGUKKyt0cmFpbGluZyBiYWNrc2xhc2ggaW5kaWNhdGVzIGEgY29udGludWF0aW9uIG9mIHRoZSBjb21tYW5kKS4gIEluIG90aGVyCisrd29yZHMsIGVhY2ggdGVzdCBwcm9ncmFtIGludm9jYXRpb24gaXMgJ3dyYXBwZWQgdXAnIGluc2lkZSBhbiBleHBsaWNpdAorK2ludm9jYXRpb24gb2YgdGhlIGR5bmFtaWMgbGlua2VyLCB3aGljaCBtdXN0IGl0c2VsZiBleGVjdXRlIHRoZSB0ZXN0CisrcHJvZ3JhbSwgaGF2aW5nIGxvYWRlZCBzaGFyZWQgbGlicmFyaWVzIGZyb20gdGhlIGFwcHJvcHJpYXRlCisrZGlyZWN0b3JpZXMuCisrCisrVG8gc3VwcG9ydCBjcm9zcy10ZXN0aW5nLCBHTElCQyBhbGxvd3MgdGhlIGRldmVsb3BlciB0byBvcHRpb25hbGx5Cisrc2V0IHRoZSAnY3Jvc3MtdGVzdC13cmFwcGVyJyBNYWtlIHZhcmlhYmxlIHRvIGFub3RoZXIgd3JhcHBlciBjb21tYW5kLAorK3RvIHdoaWNoIGl0IHBhc3NlcyB0aGUgZW50aXJlIGR5bmFtaWMgbGlua2VyIGludm9jYXRpb24gc2hvd24gYWJvdmUgYXMKKythcmd1bWVudHMuICBGb3IgZXhhbXBsZSwgaWYgdGhlIGRldmVsb3BlciBzdXBwbGllcyBhIHdyYXBwZXIgb2YKKysnbXktd3JhcHBlciBob3N0bmFtZScsIHRoZW4gR0xJQkMgd291bGQgcnVuIHRoZSB0ZXN0IGFib3ZlIGFzCisrZm9sbG93czoKKysKKysgICAgJCBteS13cmFwcGVyIGhvc3RuYW1lIFwKKysgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAorKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKKysKKytUaGUgJ215LXdyYXBwZXInIGNvbW1hbmQgaXMgcmVzcG9uc2libGUgZm9yIGV4ZWN1dGluZyB0aGUgY29tbWFuZAorK2dpdmVuIG9uIHRoZSBob3N0IHN5c3RlbS4KKysKKytTaW5jZSB0ZXN0cyBhcmUgcnVuIGluIHZhcnlpbmcgZGlyZWN0b3JpZXMsIHRoZSB3cmFwcGVyIHNob3VsZCBlaXRoZXIKKytiZSBpbiB5b3VyIGNvbW1hbmQgc2VhcmNoIHBhdGgsIG9yICdjcm9zcy10ZXN0LXdyYXBwZXInIHNob3VsZCBnaXZlIGFuCisrYWJzb2x1dGUgcGF0aCBmb3IgdGhlIHdyYXBwZXIuCisrCisrVGhlIHdyYXBwZXIgbXVzdCBtZWV0IHNldmVyYWwgcmVxdWlyZW1lbnRzOgorKworKy0gSXQgbXVzdCBwcmVzZXJ2ZSB0aGUgY3VycmVudCBkaXJlY3RvcnkuICBBcyBleHBsYWluZWQgYWJvdmUsIHRoZQorKyAgYnVpbGQgZGlyZWN0b3J5IHRyZWUgbXVzdCBiZSB2aXNpYmxlIG9uIGJvdGggdGhlIGJ1aWxkIGFuZCBob3N0CisrICBzeXN0ZW1zLCBhdCB0aGUgc2FtZSBwYXRoLiAgVGhlIHRlc3Qgd3JhcHBlciBtdXN0IGVuc3VyZSB0aGF0IHRoZQorKyAgY3VycmVudCBkaXJlY3RvcnkgaXQgaW5oZXJpdHMgaXMgYWxzbyBpbmhlcml0ZWQgYnkgdGhlIGR5bmFtaWMKKysgIGxpbmtlciAoYW5kIHRodXMgdGhlIHRlc3QgcHJvZ3JhbSBpdHNlbGYpLgorKworKy0gSXQgbXVzdCBwcmVzZXJ2ZSBlbnZpcm9ubWVudCB2YXJpYWJsZXMnIHZhbHVlcy4gIE1hbnkgR0xJQkMgdGVzdHMKKysgIHNldCBlbnZpcm9ubWVudCB2YXJpYWJsZXMgZm9yIHRlc3QgcnVuczsgaW4gbmF0aXZlIHRlc3RpbmcsIGl0CisrICBpbnZva2VzIHByb2dyYW1zIGxpa2UgdGhpczoKKysKKysgICAgJCBHQ09OVl9QQVRIPSRvYmpkaXIvaWNvbnZkYXRhIFwKKysgICAgICAkb2JqZGlyL2VsZi9sZC1saW51eC5zby4zIC0tbGlicmFyeS1wYXRoICRvYmpkaXIgXAorKyAgICAgIC4vdHN0LWZvbyBhcmcxIGFyZzIKKysKKysgIFdpdGggdGhlIGNyb3NzLXRlc3Rpbmcgd3JhcHBlciwgdGhhdCBpbnZvY2F0aW9uIGJlY29tZXM6CisrCisrICAgICQgR0NPTlZfUEFUSD0kb2JqZGlyL2ljb252ZGF0YSBcCisrICAgICAgbXktd3JhcHBlciBob3N0bmFtZSBcCisrICAgICAgJG9iamRpci9lbGYvbGQtbGludXguc28uMyAtLWxpYnJhcnktcGF0aCAkb2JqZGlyIFwKKysgICAgICAuL3RzdC1mb28gYXJnMSBhcmcyCisrCisrICBIZXJlLCAnbXktd3JhcHBlcicgbXVzdCBlbnN1cmUgdGhhdCB0aGUgdmFsdWUgaXQgc2VlcyBmb3IKKysgICdHQ09OVl9QQVRIJyB3aWxsIGJlIHNlZW4gYnkgdGhlIGR5bmFtaWMgbGlua2VyLCBhbmQgdGh1cyAndHN0LWZvbycKKysgIGl0c2VsZi4gIChUaGUgd3JhcHBlciBzdXBwbGllZCB3aXRoIEdMSUJDIHNpbXBseSBwcmVzZXJ2ZXMgdGhlCisrICB2YWx1ZXMgb2YgKmFsbCogZW52aXJvbWVudCB2YXJpYWJsZXMsIHdpdGggYSBmaXhlZCBzZXQgb2YKKysgIGV4Y2VwdGlvbnMuKQorKworKyAgSWYgeW91ciB3cmFwcGVyIGlzIGEgc2hlbGwgc2NyaXB0LCB0YWtlIGNhcmUgdG8gY29ycmVjdGx5IHByb3BhZ2F0ZQorKyAgZW52aXJvbm1lbnQgdmFyaWFibGVzIHdob3NlIHZhbHVlcyBjb250YWluIHNwYWNlcyBhbmQgc2hlbGwKKysgIG1ldGFjaGFyYWN0ZXJzLgorKworKy0gSXQgbXVzdCBwYXNzIHRoZSBjb21tYW5kJ3MgYXJndW1lbnRzLCB1bm1vZGlmaWVkLiAgVGhlIGFyZ3VtZW50cworKyAgc2VlbiBieSB0aGUgdGVzdCBwcm9ncmFtIHNob3VsZCBiZSBleGFjdGx5IHRob3NlIHNlZW4gYnkgdGhlIHdyYXBwZXIKKysgIChhZnRlciB3aGF0ZXZlciBhcmd1bWVudHMgYXJlIGdpdmVuIHRvIHRoZSB3cmFwcGVyIGl0c2VsZikuICBUaGUKKysgIEdMSUJDIHRlc3QgZnJhbWV3b3JrIHBlcmZvcm1zIGFsbCBuZWVkZWQgc2hlbGwgd29yZCBzcGxpdHRpbmcgYW5kCisrICBleHBhbnNpb24gKHdpbGRjYXJkIGV4cGFuc2lvbiwgcGFyYW1ldGVyIHN1YnN0aXR1dGlvbiwgYW5kIHNvIG9uKQorKyAgYmVmb3JlIGludm9raW5nIHRoZSB3cmFwcGVyOyBmdXJ0aGVyIGV4cGFuc2lvbiBtYXkgYnJlYWsgdGhlIHRlc3RzLgorKworKworK1RoZSAnY3Jvc3MtdGVzdC1zc2guc2gnIHNjcmlwdAorKworK0lmIHlvdSB3YW50IHRvIHVzZSAnc3NoJyAob3Igc29tZXRoaW5nIHN1ZmZpY2llbnRseSBzaW1pbGFyKSB0byBydW4KKyt0ZXN0IHByb2dyYW1zIG9uIHlvdXIgaG9zdCBzeXN0ZW0sIEdMSUJDIGluY2x1ZGVzIGEgc2hlbGwgc2NyaXB0LAorKydzY3JpcHRzL2Nyb3NzLXRlc3Qtc3NoLnNoJywgd2hpY2ggeW91IGNhbiB1c2UgYXMgeW91ciB3cmFwcGVyCisrY29tbWFuZC4gIFRoaXMgc2NyaXB0IHRha2VzIGNhcmUgb2Ygc2V0dGluZyB0aGUgdGVzdCBjb21tYW5kJ3MgY3VycmVudAorK2RpcmVjdG9yeSwgcHJvcGFnYXRpbmcgZW52aXJvbm1lbnQgdmFyaWFibGUgdmFsdWVzLCBhbmQgY2FycnlpbmcKKytjb21tYW5kLWxpbmUgYXJndW1lbnRzLCBhbGwgYWNyb3NzIGFuICdzc2gnIGNvbm5lY3Rpb24uICBZb3UgbWF5IGV2ZW4KKytzdXBwbHkgYW4gYWx0ZXJuYXRpdmUgdG8gJ3NzaCcgb24gdGhlIGNvbW1hbmQgbGluZSwgaWYgbmVlZGVkLgorKworK0ZvciBtb3JlIGRldGFpbHMsIHBhc3MgJ2Nyb3NzLXRlc3Qtc3NoLnNoJyB0aGUgJy0taGVscCcgb3B0aW9uLgorKworKworK1RoZSBDcm9zcy1Db21waWxpbmcgTG9jYWxlIERlZmluaXRpb24gQ29tbWFuZAorKworK1NvbWUgR0xJQkMgdGVzdHMgcmVseSBvbiBsb2NhbGVzIGdlbmVyYXRlZCBlc3BlY2lhbGx5IGZvciB0aGUgdGVzdAorK3Byb2Nlc3MuICBJbiBhIG5hdGl2ZSBjb25maWd1cmF0aW9uLCB0aGVzZSB0ZXN0cyBzaW1wbHkgcnVuIHRoZQorKydsb2NhbGVkZWYnIGNvbW1hbmQgYnVpbHQgYnkgdGhlIG5vcm1hbCBHTElCQyBidWlsZCBwcm9jZXNzLAorKydsb2NhbGUvbG9jYWxlZGVmJywgdG8gcHJvY2VzcyBhbmQgaW5zdGFsbCB0aGVpciBsb2NhbGVzLiAgSG93ZXZlciwgaW4KKythIGNyb3NzLWNvbXBpbGluZyBjb25maWd1cmF0aW9uLCB0aGlzICdsb2NhbGVkZWYnIGlzIGJ1aWx0IGZvciB0aGUKKytob3N0IHN5c3RlbSwgbm90IHRoZSBidWlsZCBzeXN0ZW0sIGFuZCBzaW5jZSBpdCByZXF1aXJlcyBxdWl0ZSBhIGJpdAorK29mIG1lbW9yeSB0byBydW4gKHdlIGhhdmUgc2VlbiBpdCBmYWlsIG9uIHN5c3RlbXMgd2l0aCA2NE1pQiBvZgorK21lbW9yeSksIGl0IG1heSBub3QgYmUgcHJhY3RpY2FsIHRvIHJ1biBpdCBvbiB0aGUgaG9zdCBzeXN0ZW0uCisrCisrSWYgc2V0LCBHTElCQyB1c2VzIHRoZSAnY3Jvc3MtbG9jYWxlZGVmJyBNYWtlIHZhcmlhYmxlIGFzIHRoZSBjb21tYW5kCisrdG8gcnVuIG9uIHRoZSBidWlsZCBzeXN0ZW0gdG8gcHJvY2VzcyBhbmQgaW5zdGFsbCBsb2NhbGVzLiAgVGhlCisrbG9jYWxlZGVmIHByb2dyYW0gYnVpbHQgZnJvbSB0aGUgR0xJQkMgJ2xvY2FsZWRlZicgbW9kdWxlIGlzCisrc3VpdGFibGUuCisrCisrVGhlIHZhbHVlIG9mICdjcm9zcy1sb2NhbGVkZWYnIG1heSBhbHNvIGluY2x1ZGUgY29tbWFuZC1saW5lIGFyZ3VtZW50cworK3RvIGJlIHBhc3NlZCB0byB0aGUgcHJvZ3JhbTsgaWYgeW91IGFyZSB1c2luZyBHTElCQydzICdsb2NhbGVkZWYnLAorK3lvdSBtYXkgaW5jbHVkZSBlbmRpYW5uZXNzIGFuZCAndWludDMyX3QnIGFsaWdubWVudCBhcmd1bWVudHMgaGVyZS4KKysKKysKKytFeGFtcGxlCisrCisrSW4gZGV2ZWxvcGluZyBHTElCQydzIGNyb3NzLXRlc3RpbmcgZmFjaWxpdHksIHdlIGludm9rZWQgJ21ha2UnIHdpdGgKKyt0aGUgZm9sbG93aW5nIHNjcmlwdDoKKysKKysgICAgIyEvYmluL3NoCisrCisrICAgIHNyY2Rpcj0uLi4KKysgICAgdGVzdF9ob3N0bmFtZT0uLi4KKysgICAgbG9jYWxlZGVmZGlyPS4uLgorKyAgICBjcm9zc19neHg9Li4uLWcrKworKworKyAgICB3cmFwcGVyPSIkc3JjZGlyL3NjcmlwdHMvY3Jvc3MtdGVzdC1zc2guc2ggJHRlc3RfaG9zdG5hbWUiCisrICAgIGxvY2FsZWRlZj0iJGxvY2FsZWRlZmRpci9sb2NhbGVkZWYgLS1saXR0bGUtZW5kaWFuIC0tdWludDMyLWFsaWduPTQiCisrCisrICAgIG1ha2UgY3Jvc3MtdGVzdC13cmFwcGVyPSIkd3JhcHBlciIgXAorKyAgICAgICAgIGNyb3NzLWxvY2FsZWRlZj0iJGxvY2FsZWRlZiIgXAorKyAgICAgICAgIENYWD0iJGNyb3NzX2d4eCIgXAorKyAgICAgICAgICIkQCIKKysKKysKKytPdGhlciBDcm9zcy1UZXN0aW5nIENvbmNlcm5zCisrCisrSGVyZSBhcmUgbm90ZXMgb24gc29tZSBvdGhlciBpc3N1ZXMgd2hpY2ggeW91IG1heSBlbmNvdW50ZXIgaW4gcnVubmluZworK3RoZSBHTElCQyB0ZXN0cyBpbiBhIGNyb3NzLWNvbXBpbGluZyBlbnZpcm9ubWVudDoKKysKKystIFNvbWUgdGVzdHMgcmVxdWlyZSBhIEMrKyBjcm9zcy1jb21waWxlcjsgeW91IHNob3VsZCBzZXQgdGhlICdDWFgnCisrICBNYWtlIHZhcmlhYmxlIHRvIHRoZSBuYW1lIG9mIGFuIGFwcHJvcHJpYXRlIGNyb3NzLWNvbXBpbGVyLgorKworKy0gU29tZSB0ZXN0cyByZXF1aXJlIGFjY2VzcyB0byBsaWJzdGRjKysuc28uNiBhbmQgbGliZ2NjX3Muc28uMTsgd2UKKysgIHNpbXBseSBwbGFjZSBjb3BpZXMgb2YgdGhlc2UgbGlicmFyaWVzIGluIHRoZSB0b3AgR0xJQkMgYnVpbGQKKysgIGRpcmVjdG9yeS4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIxLWVnbGliYy1IZWxwLWJvb3RzdHJhcC1jcm9zcy10b29sY2hhaW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjM3NGVhNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtSGVscC1ib290c3RyYXAtY3Jvc3MtdG9vbGNoYWluLnBhdGNoCkBAIC0wLDAgKzEsOTcgQEAKK0Zyb20gNmEzMmQ1YmY0MGRlZWU1ZDEyZDI0YzA2ZjNlYTliNTQ3OWMxNjgwMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAwOjQ5OjI4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGVnbGliYzogSGVscCBib290c3RyYXAgY3Jvc3MgdG9vbGNoYWluCisKK1Rha2VuIGZyb20gRUdMSUJDLCByMTQ4NCArIHIxNTI1CisKKyAgICAgICAgMjAwNy0wMi0yMCAgSmltIEJsYW5keSAgPGppbWJAY29kZXNvdXJjZXJ5LmNvbT4KKworICAgICAgICAgICAgICAgICogTWFrZWZpbGUgKGluc3RhbGwtaGVhZGVycyk6IFByZXNlcnZlIG9sZCBiZWhhdmlvcjogZGVwZW5kIG9uCisgICAgICAgICAgICAgICAgJChpbnN0X2luY2x1ZGVkaXIpL2dudS9zdHVicy5oIG9ubHkgaWYgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycworICAgICAgICAgICAgICAgIGlzIHNldDsgb3RoZXJ3aXNlLCBwbGFjZSBnbnUvc3R1YnMuaCBvbiB0aGUgJ2luc3RhbGwtb3RoZXJzJyBsaXN0LgorCisgICAgICAgIDIwMDctMDItMTYgIEppbSBCbGFuZHkgIDxqaW1iQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICAgICAgICAgICAgICAqIE1ha2VmaWxlOiBBbWVuZCBtYWtlIGluc3RhbGwtaGVhZGVycyB0byBpbnN0YWxsIGV2ZXJ5dGhpbmcKKyAgICAgICAgICAgICAgICBuZWNlc3NhcnkgZm9yIGJ1aWxkaW5nIGEgY3Jvc3MtY29tcGlsZXIuICBJbnN0YWxsIGdudS9zdHVicy5oIGFzCisgICAgICAgICAgICAgICAgcGFydCBvZiAnaW5zdGFsbC1oZWFkZXJzJywgbm90ICdpbnN0YWxsLW90aGVycycuCisgICAgICAgICAgICAgICAgSWYgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycyBpcyAneWVzJywgaW5zdGFsbCBhIGR1bW15IGNvcHkgb2YKKyAgICAgICAgICAgICAgICBnbnUvc3R1YnMuaCwgaW5zdGVhZCBvZiBjb21wdXRpbmcgdGhlIHJlYWwgdGhpbmcuCisgICAgICAgICAgICAgICAgKiBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oOiBOZXcgZmlsZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUgICAgICAgICAgICAgICAgICB8IDIyICsrKysrKysrKysrKysrKysrKysrKy0KKyBpbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oIHwgMTIgKysrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmgKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDhmMGE5M2FjZWIuLjhlYmEyM2E4NjggMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC03OSw5ICs3OSwxOCBAQCBzdWJkaXItZGlycyA9IGluY2x1ZGUKKyB2cGF0aCAlLmggJChzdWJkaXItZGlycykKKyAKKyAjIFdoYXQgdG8gaW5zdGFsbC4KKy1pbnN0YWxsLW90aGVycyA9ICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaAorIGluc3RhbGwtYmluLXNjcmlwdCA9CisgCisrIyBJZiB3ZSdyZSBib290c3RyYXBwaW5nLCBpbnN0YWxsIGEgZHVtbXkgZ251L3N0dWJzLmggYWxvbmcgd2l0aCB0aGUKKysjIG90aGVyIGhlYWRlcnMsIHNvICdtYWtlIGluc3RhbGwtaGVhZGVycycgcHJvZHVjZXMgYSB1c2VhYmxlIGluY2x1ZGUKKysjIHRyZWUuICBPdGhlcndpc2UsIGluc3RhbGwgZ251L3N0dWJzLmggbGF0ZXIsIGFmdGVyIHRoZSByZXN0IG9mIHRoZQorKyMgYnVpbGQgaXMgZG9uZS4KKytpZmVxICgkKGluc3RhbGwtYm9vdHN0cmFwLWhlYWRlcnMpLHllcykKKytpbnN0YWxsLWhlYWRlcnM6ICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaAorK2Vsc2UKKytpbnN0YWxsLW90aGVycyA9ICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaAorK2VuZGlmCisrCisgaWZlcSAoeWVzLCQoYnVpbGQtc2hhcmVkKSkKKyBoZWFkZXJzICs9IGdudS9saWItbmFtZXMuaAorIGVuZGlmCitAQCAtNDA3LDYgKzQxNiwxNiBAQCBvdGhlcnM6ICQoY29tbW9uLW9ianBmeCl0ZXN0cnVuLnNoICQoY29tbW9uLW9ianBmeClkZWJ1Z2dsaWJjLnNoCisgCisgc3ViZGlyLXN0dWJzIDo9ICQoZm9yZWFjaCBkaXIsJChzdWJkaXJzKSwkKGNvbW1vbi1vYmpwZngpJChkaXIpL3N0dWJzKQorIAorKyMgZ251L3N0dWJzLmggZGVwZW5kcyAodmlhIHRoZSBzdWJkaXIgJ3N0dWJzJyB0YXJnZXRzKSBvbiBhbGwgdGhlIC5vCisrIyBmaWxlcyBpbiBFR0xJQkMuICBGb3IgYm9vdHN0cmFwcGluZyBhIEdDQy9FR0xJQkMgcGFpciwgYW4gZW1wdHkKKysjIGdudS9zdHVicy5oIGlzIGdvb2QgZW5vdWdoLgorK2lmZXEgKCQoaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycykseWVzKQorKyQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaDogaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaCAkKCtmb3JjZSkKKysJJChtYWtlLXRhcmdldC1kaXJlY3RvcnkpCisrCSQoSU5TVEFMTF9EQVRBKSAkPCAkQAorKworK2luc3RhbGxlZC1zdHVicyA9CisrZWxzZQorIGlmbmRlZiBhYmktdmFyaWFudHMKKyBpbnN0YWxsZWQtc3R1YnMgPSAkKGluc3RfaW5jbHVkZWRpcikvZ251L3N0dWJzLmgKKyBlbHNlCitAQCAtNDMzLDYgKzQ1Miw3IEBAICQoaW5zdF9pbmNsdWRlZGlyKS9nbnUvc3R1YnMuaDogJCgrZm9yY2UpCisgCisgaW5zdGFsbC1vdGhlcnMtbm9zdWJkaXI6ICQoaW5zdGFsbGVkLXN0dWJzKQorIGVuZGlmCisrZW5kaWYKKyAKKyAKKyAjIFNpbmNlIHN0dWJzLmggaXMgbmV2ZXIgbmVlZGVkIHdoZW4gYnVpbGRpbmcgdGhlIGxpYnJhcnksIHdlIHNpbXBsaWZ5IHRoZQorZGlmZiAtLWdpdCBhL2luY2x1ZGUvc3R1YnMtYm9vdHN0cmFwLmggYi9pbmNsdWRlL3N0dWJzLWJvb3RzdHJhcC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAwMC4uMWQyYjY2OWFmZgorLS0tIC9kZXYvbnVsbAorKysrIGIvaW5jbHVkZS9zdHVicy1ib290c3RyYXAuaAorQEAgLTAsMCArMSwxMiBAQAorKy8qIFBsYWNlaG9sZGVyIHN0dWJzLmggZmlsZSBmb3IgYm9vdHN0cmFwcGluZy4KKysKKysgICBXaGVuIGJvb3RzdHJhcHBpbmcgYSBHQ0MvRUdMSUJDIHBhaXIsIEdDQyByZXF1aXJlcyB0aGF0IHRoZSBFR0xJQkMKKysgICBoZWFkZXJzIGJlIGluc3RhbGxlZCwgYnV0IHdlIGNhbid0IGZ1bGx5IGJ1aWxkIEVHTElCQyB3aXRob3V0IHRoYXQKKysgICBHQ0MuICBTbyB3ZSBydW4gdGhlIGNvbW1hbmQ6CisrCisrICAgICAgbWFrZSBpbnN0YWxsLWhlYWRlcnMgaW5zdGFsbC1ib290c3RyYXAtaGVhZGVycz15ZXMKKysKKysgICB0byBpbnN0YWxsIHRoZSBoZWFkZXJzIEdDQyBuZWVkcywgYnV0IGF2b2lkIGJ1aWxkaW5nIGNlcnRhaW4KKysgICBkaWZmaWN1bHQgaGVhZGVycy4gIFRoZSA8Z251L3N0dWJzLmg+IGhlYWRlciBkZXBlbmRzLCB2aWEgdGhlCisrICAgRUdMSUJDIHN1YmRpciAnc3R1YnMnIG1ha2UgdGFyZ2V0cywgb24gZXZlcnkgLm8gZmlsZSBpbiBFR0xJQkMsIGJ1dAorKyAgIGFuIGVtcHR5IHN0dWJzLmggbGlrZSB0aGlzIHdpbGwgZG8gZmluZSBmb3IgR0NDLiAgKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjEtZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3NjU1MWNmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMS1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1Gcm9tIGI3MjkwZTU0YTFiZGE3YTAyMTIxMzE2NTViYzI3OTI2ZmMyMmRlMjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo1NTo1MyArMDAwMAotU3ViamVjdDogW1BBVENIIDIxLzI4XSBlZ2xpYmM6IFJlc29sdmUgX19mcHNjcl92YWx1ZXMgb24gU0g0Ci0KLTIwMTAtMDktMjkgIE5vYnVoaXJvIEl3YW1hdHN1ICA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+Ci0gICAgICAgICAgICBBbmRyZXcgU3R1YmJzICA8YW1zQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICAgICAgUmVzb2x2ZSBTSCdzIF9fZnBzY3JfdmFsdWVzIHRvIHN5bWJvbCBpbiBsaWJjLnNvLgotCi0gICAgICAgICogc3lzZGVwcy9zaC9zaDQvZnB1L2ZwdV9jb250cm9sLmg6IEFkZCBDKysgX19zZXRfZnBzY3IgcHJvdG90eXBlLgotICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zIChHTElCQ18yLjIpOiBBZGQgX19mcHNjcl92YWx1ZXMuCi0gICAgICAgICogc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgKF9fX2Zwc2NyX3ZhbHVlcyk6IE5ldyBjb25zdGFudC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucyB8ICAxICsKLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUyB8IDExICsrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zCi1pbmRleCBlMDkzOGM0MTY1Li5jYTFkN2RhMzM5IDEwMDY0NAotLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMKLSsrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zCi1AQCAtMiw2ICsyLDcgQEAgbGliYyB7Ci0gICBHTElCQ18yLjIgewotICAgICAjIGZ1bmN0aW9ucyB1c2VkIGluIG90aGVyIGxpYnJhcmllcwotICAgICBfX3hzdGF0NjQ7IF9fZnhzdGF0NjQ7IF9fbHhzdGF0NjQ7Ci0rICAgIF9fZnBzY3JfdmFsdWVzOwotIAotICAgICAjIGEqCi0gICAgIGFscGhhc29ydDY0OwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKLWluZGV4IDZjZTM2ZDZkZDUuLjQyNTgxMWNjNzcgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKLUBAIC0zMCwzICszMCwxNCBAQCBFTlRSWSAoX19zeXNjYWxsX2Vycm9yKQotIAotICNkZWZpbmUgX19zeXNjYWxsX2Vycm9yIF9fc3lzY2FsbF9lcnJvcl8xCi0gI2luY2x1ZGUgPHN5c2RlcHMvdW5peC9zaC9zeXNkZXAuUz4KLSsKLSsgICAgICAgLmRhdGEKLSsgICAgICAgLmFsaWduIDMKLSsgICAgICAgLmdsb2JsIF9fX2Zwc2NyX3ZhbHVlcwotKyAgICAgICAudHlwZSBfX19mcHNjcl92YWx1ZXMsIEBvYmplY3QKLSsgICAgICAgLnNpemUgX19fZnBzY3JfdmFsdWVzLCA4Ci0rX19fZnBzY3JfdmFsdWVzOgotKyAgICAgICAubG9uZyAwCi0rICAgICAgIC5sb25nIDB4ODAwMDAKLSt3ZWFrX2FsaWFzIChfX19mcHNjcl92YWx1ZXMsIF9fZnBzY3JfdmFsdWVzKQotKwotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0NjAyMWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIyLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2NiArMCwwIEBACi1Gcm9tIGJlMzgyYjRlMGM2ZGU1MjU3M2Y3ZTAzN2YyZDRmZjliMWI1YmJiNmIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMTozMzo0OSArMDAwMAotU3ViamVjdDogW1BBVENIIDIyLzI4XSBlZ2xpYmM6IEZvcndhcmQgcG9ydCBjcm9zcyBsb2NhbGUgZ2VuZXJhdGlvbiBzdXBwb3J0Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbG9jYWxlL01ha2VmaWxlICAgICAgICAgICAgICAgfCAgMyArLQotIGxvY2FsZS9jYXRuYW1lcy5jICAgICAgICAgICAgIHwgNDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGxvY2FsZS9sb2NhbGVpbmZvLmggICAgICAgICAgIHwgIDIgKy0KLSBsb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYyB8ICA2ICsrKysKLSBsb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jICB8IDE3ICsrKysrLS0tLS0KLSBsb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYyAgICB8IDI3ICsrKysrKysrLS0tLS0tLS0KLSBsb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jICAgICB8IDMxICsrKysrKysrKysrKy0tLS0tLQotIGxvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMgIHwgIDIgKy0KLSBsb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMgICB8ICA4ICsrKysrCi0gbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYyAgICAgfCAgNSArKy0KLSBsb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oICAgICB8IDU5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCi0gbG9jYWxlL3NldGxvY2FsZS5jICAgICAgICAgICAgfCAzMCAtLS0tLS0tLS0tLS0tLS0tLS0KLSAxMiBmaWxlcyBjaGFuZ2VkLCAxNjkgaW5zZXJ0aW9ucygrKSwgNjkgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGxvY2FsZS9jYXRuYW1lcy5jCi0KLWRpZmYgLS1naXQgYS9sb2NhbGUvTWFrZWZpbGUgYi9sb2NhbGUvTWFrZWZpbGUKLWluZGV4IGQ3OGNmOWI4M2EuLmUxNjZmNTI1MmUgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvTWFrZWZpbGUKLSsrKyBiL2xvY2FsZS9NYWtlZmlsZQotQEAgLTI2LDcgKzI2LDggQEAgaGVhZGVycwkJPSBsYW5naW5mby5oIGxvY2FsZS5oIGJpdHMvbG9jYWxlLmggXAotIAkJICBiaXRzL3R5cGVzL2xvY2FsZV90LmggYml0cy90eXBlcy9fX2xvY2FsZV90LmgKLSByb3V0aW5lcwk9IHNldGxvY2FsZSBmaW5kbG9jYWxlIGxvYWRsb2NhbGUgbG9hZGFyY2hpdmUgXAotIAkJICBsb2NhbGVjb252IG5sX2xhbmdpbmZvIG5sX2xhbmdpbmZvX2wgbWJfY3VyX21heCBcCi0tCQkgIG5ld2xvY2FsZSBkdXBsb2NhbGUgZnJlZWxvY2FsZSB1c2Vsb2NhbGUKLSsJCSAgbmV3bG9jYWxlIGR1cGxvY2FsZSBmcmVlbG9jYWxlIHVzZWxvY2FsZSBcCi0rCQkgIGNhdG5hbWVzCi0gdGVzdHMJCT0gdHN0LUMtbG9jYWxlIHRzdC1sb2NuYW1lIHRzdC1kdXBsb2NhbGUKLSBjYXRlZ29yaWVzCT0gY3R5cGUgbWVzc2FnZXMgbW9uZXRhcnkgbnVtZXJpYyB0aW1lIHBhcGVyIG5hbWUgXAotIAkJICBhZGRyZXNzIHRlbGVwaG9uZSBtZWFzdXJlbWVudCBpZGVudGlmaWNhdGlvbiBjb2xsYXRlCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL2NhdG5hbWVzLmMgYi9sb2NhbGUvY2F0bmFtZXMuYwotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjlmYWQzNTdkYjEKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xvY2FsZS9jYXRuYW1lcy5jCi1AQCAtMCwwICsxLDQ4IEBACi0rLyogQ29weXJpZ2h0IChDKSAyMDA2ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KLSsKLSsgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLSsgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCi0rICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0rCi0rICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCi0rICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLSsKLSsgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCi0rICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCi0rICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKLSsgICAwMjExMS0xMzA3IFVTQS4gICovCi0rCi0rI2luY2x1ZGUgImxvY2FsZWluZm8uaCIKLSsKLSsvKiBEZWZpbmUgYW4gYXJyYXkgb2YgY2F0ZWdvcnkgbmFtZXMgKGFsc28gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzKS4gICovCi0rY29uc3QgdW5pb24gY2F0bmFtZXN0cl90IF9ubF9jYXRlZ29yeV9uYW1lcyBhdHRyaWJ1dGVfaGlkZGVuID0KLSsgIHsKLSsgICAgewotKyNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAotKyAgICAgIGNhdGVnb3J5X25hbWUsCi0rI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgotKyN1bmRlZiBERUZJTkVfQ0FURUdPUlkKLSsgICAgfQotKyAgfTsKLSsKLStjb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX2lkeHNbX19MQ19MQVNUXSBhdHRyaWJ1dGVfaGlkZGVuID0KLSsgIHsKLSsjZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKLSsgICAgW2NhdGVnb3J5XSA9IG9mZnNldG9mICh1bmlvbiBjYXRuYW1lc3RyX3QsIENBVE5BTUVNRiAoX19MSU5FX18pKSwKLSsjaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCi0rI3VuZGVmIERFRklORV9DQVRFR09SWQotKyAgfTsKLSsKLSsvKiBBbiBhcnJheSBvZiB0aGVpciBsZW5ndGhzLCBmb3IgY29udmVuaWVuY2UuICAqLwotK2NvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfc2l6ZXNbXSBhdHRyaWJ1dGVfaGlkZGVuID0KLSsgIHsKLSsjZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKLSsgICAgW2NhdGVnb3J5XSA9IHNpemVvZiAoY2F0ZWdvcnlfbmFtZSkgLSAxLAotKyNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKLSsjdW5kZWYJREVGSU5FX0NBVEVHT1JZCi0rICAgIFtMQ19BTExdID0gc2l6ZW9mICgiTENfQUxMIikgLSAxCi0rICB9OwotZGlmZiAtLWdpdCBhL2xvY2FsZS9sb2NhbGVpbmZvLmggYi9sb2NhbGUvbG9jYWxlaW5mby5oCi1pbmRleCA1M2NiOGJmYzU5Li45MmM0NjYyMDBjIDEwMDY0NAotLS0tIGEvbG9jYWxlL2xvY2FsZWluZm8uaAotKysrIGIvbG9jYWxlL2xvY2FsZWluZm8uaAotQEAgLTIyNCw3ICsyMjQsNyBAQCBfX2xpYmNfdHNkX2RlZmluZSAoZXh0ZXJuLCBsb2NhbGVfdCwgTE9DQUxFKQotICAgIHVudXNlZC4gIFdlIGNhbiBtYW5hZ2UgdGhpcyBwbGF5aW5nIHNvbWUgdHJpY2tzIHdpdGggd2VhayByZWZlcmVuY2VzLgotICAgIEJ1dCB3aXRoIHRocmVhZC1sb2NhbCBsb2NhbGUgc2V0dGluZ3MsIGl0IGJlY29tZXMgcXVpdGUgdW5nYWlubHkgdW5sZXNzCi0gICAgd2UgY2FuIHVzZSBfX3RocmVhZCB2YXJpYWJsZXMuICBTbyBvbmx5IGluIHRoYXQgY2FzZSBkbyB3ZSBhdHRlbXB0IHRoaXMuICAqLwotLSNpZm5kZWYgU0hBUkVECi0rI2lmICFkZWZpbmVkIFNIQVJFRCAmJiAhZGVmaW5lZCBJTl9HTElCQ19MT0NBTEVERUYKLSAjIGluY2x1ZGUgPHRscy5oPgotICMgZGVmaW5lIE5MX0NVUlJFTlRfSU5ESVJFQ1QJMQotICNlbmRpZgotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jIGIvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKLWluZGV4IDk0YzEyMmRmNjguLjgwZTUzZTEyYzggMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKLUBAIC0xOCw3ICsxOCw5IEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGZjbnRsLmg+Ci0gI2luY2x1ZGUgPGxpYmludGwuaD4KLSsjaWZuZGVmIE5PX1VOQ09NUFJFU1MKLSAjaW5jbHVkZSA8c3Bhd24uaD4KLSsjZW5kaWYKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotQEAgLTE1NCw2ICsxNTYsNyBAQCBjaGFybWFwX2Nsb3NlZGlyIChDSEFSTUFQX0RJUiAqY2RpcikKLSAgIHJldHVybiBjbG9zZWRpciAoZGlyKTsKLSB9Ci0gCi0rI2lmbmRlZiBOT19VTkNPTVBSRVNTCi0gLyogQ3JlYXRlcyBhIHN1YnByb2Nlc3MgZGVjb21wcmVzc2luZyB0aGUgZ2l2ZW4gcGF0aG5hbWUsIGFuZCByZXR1cm5zCi0gICAgYSBzdHJlYW0gcmVhZGluZyBpdHMgb3V0cHV0ICh0aGUgZGVjb21wcmVzc2VkIGRhdGEpLiAgKi8KLSBzdGF0aWMKLUBAIC0yMDIsNiArMjA1LDcgQEAgZm9wZW5fdW5jb21wcmVzc2VkIChjb25zdCBjaGFyICpwYXRobmFtZSwgY29uc3QgY2hhciAqY29tcHJlc3NvcikKLSAgICAgfQotICAgcmV0dXJuIE5VTEw7Ci0gfQotKyNlbmRpZgotIAotIC8qIE9wZW5zIGEgY2hhcm1hcCBmb3IgcmVhZGluZywgZ2l2ZW4gaXRzIG5hbWUgKG5vdCBhbiBhbGlhcyBuYW1lKS4gICovCi0gRklMRSAqCi1AQCAtMjI0LDYgKzIyOCw3IEBAIGNoYXJtYXBfb3BlbiAoY29uc3QgY2hhciAqZGlyZWN0b3J5LCBjb25zdCBjaGFyICpuYW1lKQotICAgaWYgKHN0cmVhbSAhPSBOVUxMKQotICAgICByZXR1cm4gc3RyZWFtOwotIAotKyNpZm5kZWYgTk9fVU5DT01QUkVTUwotICAgbWVtY3B5IChwLCAiLmd6IiwgNCk7Ci0gICBzdHJlYW0gPSBmb3Blbl91bmNvbXByZXNzZWQgKHBhdGhuYW1lLCAiZ3ppcCIpOwotICAgaWYgKHN0cmVhbSAhPSBOVUxMKQotQEAgLTIzMyw2ICsyMzgsNyBAQCBjaGFybWFwX29wZW4gKGNvbnN0IGNoYXIgKmRpcmVjdG9yeSwgY29uc3QgY2hhciAqbmFtZSkKLSAgIHN0cmVhbSA9IGZvcGVuX3VuY29tcHJlc3NlZCAocGF0aG5hbWUsICJiemlwMiIpOwotICAgaWYgKHN0cmVhbSAhPSBOVUxMKQotICAgICByZXR1cm4gc3RyZWFtOwotKyNlbmRpZgotIAotICAgcmV0dXJuIE5VTEw7Ci0gfQotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jCi1pbmRleCA2YmFhYjZjZmIwLi5iMTJhMmZjZWFiIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYwotQEAgLTM0OSw3ICszNDksNyBAQCBuZXdfZWxlbWVudCAoc3RydWN0IGxvY2FsZV9jb2xsYXRlX3QgKmNvbGxhdGUsIGNvbnN0IGNoYXIgKm1icywgc2l6ZV90IG1ic2xlbiwKLSAgICAgfQotICAgaWYgKHdjcyAhPSBOVUxMKQotICAgICB7Ci0tICAgICAgc2l6ZV90IG53Y3MgPSB3Y3NsZW4gKCh3Y2hhcl90ICopIHdjcyk7Ci0rICAgICAgc2l6ZV90IG53Y3MgPSB3Y3NsZW5fdWludDMyICh3Y3MpOwotICAgICAgIHVpbnQzMl90IHplcm8gPSAwOwotICAgICAgIC8qIEhhbmRsZSA8VTAwMDA+IGFzIGEgc2luZ2xlIGNoYXJhY3Rlci4gICovCi0gICAgICAgaWYgKG53Y3MgPT0gMCkKLUBAIC0xNzcyLDggKzE3NzIsNyBAQCBzeW1ib2wgYCVzJyBoYXMgdGhlIHNhbWUgZW5jb2RpbmcgYXMiKSwgKCplcHRyKS0+bmFtZSk7Ci0gCi0gCSAgICAgIGlmICgoKmVwdHIpLT5ud2NzID09IHJ1bnAtPm53Y3MpCi0gCQl7Ci0tCQkgIGludCBjID0gd21lbWNtcCAoKHdjaGFyX3QgKikgKCplcHRyKS0+d2NzLAotLQkJCQkgICAod2NoYXJfdCAqKSBydW5wLT53Y3MsIHJ1bnAtPm53Y3MpOwotKwkJICBpbnQgYyA9IHdtZW1jbXBfdWludDMyICgoKmVwdHIpLT53Y3MsIHJ1bnAtPndjcywgcnVucC0+bndjcyk7Ci0gCi0gCQkgIGlmIChjID09IDApCi0gCQkgICAgewotQEAgLTIwMDAsOSArMTk5OSw5IEBAIGFkZF90b190YWJsZXdjICh1aW50MzJfdCBjaCwgc3RydWN0IGVsZW1lbnRfdCAqcnVucCkKLSAJICAgICBvbmUgY29uc2VjdXRpdmUgZW50cnkuICAqLwotIAkgIGlmIChydW5wLT53Y25leHQgIT0gTlVMTAotIAkgICAgICAmJiBydW5wLT5ud2NzID09IHJ1bnAtPndjbmV4dC0+bndjcwotLQkgICAgICAmJiB3bWVtY21wICgod2NoYXJfdCAqKSBydW5wLT53Y3MsCi0tCQkJICAod2NoYXJfdCAqKXJ1bnAtPndjbmV4dC0+d2NzLAotLQkJCSAgcnVucC0+bndjcyAtIDEpID09IDAKLSsJICAgICAgJiYgd21lbWNtcF91aW50MzIgKHJ1bnAtPndjcywKLSsJCQkJIHJ1bnAtPndjbmV4dC0+d2NzLAotKwkJCQkgcnVucC0+bndjcyAtIDEpID09IDAKLSAJICAgICAgJiYgKHJ1bnAtPndjc1tydW5wLT5ud2NzIC0gMV0KLSAJCSAgPT0gcnVucC0+d2NuZXh0LT53Y3NbcnVucC0+bndjcyAtIDFdICsgMSkpCi0gCSAgICB7Ci1AQCAtMjAyNiw5ICsyMDI1LDkgQEAgYWRkX3RvX3RhYmxld2MgKHVpbnQzMl90IGNoLCBzdHJ1Y3QgZWxlbWVudF90ICpydW5wKQotIAkJcnVucCA9IHJ1bnAtPndjbmV4dDsKLSAJICAgICAgd2hpbGUgKHJ1bnAtPndjbmV4dCAhPSBOVUxMCi0gCQkgICAgICYmIHJ1bnAtPm53Y3MgPT0gcnVucC0+d2NuZXh0LT5ud2NzCi0tCQkgICAgICYmIHdtZW1jbXAgKCh3Y2hhcl90ICopIHJ1bnAtPndjcywKLS0JCQkJICh3Y2hhcl90ICopcnVucC0+d2NuZXh0LT53Y3MsCi0tCQkJCSBydW5wLT5ud2NzIC0gMSkgPT0gMAotKwkJICAgICAmJiB3bWVtY21wX3VpbnQzMiAocnVucC0+d2NzLAotKwkJCQkJcnVucC0+d2NuZXh0LT53Y3MsCi0rCQkJCQlydW5wLT5ud2NzIC0gMSkgPT0gMAotIAkJICAgICAmJiAocnVucC0+d2NzW3J1bnAtPm53Y3MgLSAxXQotIAkJCSA9PSBydW5wLT53Y25leHQtPndjc1tydW5wLT5ud2NzIC0gMV0gKyAxKSk7Ci0gCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYwotaW5kZXggY2ZjOWM0M2ZkNS4uNjU3MmNjMTk5YyAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYwotQEAgLTkxNSw3ICs5MTUsNyBAQCBjdHlwZV9vdXRwdXQgKHN0cnVjdCBsb2NhbGVkZWZfdCAqbG9jYWxlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAotICAgYWxsb2NhdGVfYXJyYXlzIChjdHlwZSwgY2hhcm1hcCwgY3R5cGUtPnJlcGVydG9pcmUpOwotIAotICAgZGVmYXVsdF9taXNzaW5nX2xlbiA9IChjdHlwZS0+ZGVmYXVsdF9taXNzaW5nCi0tCQkJID8gd2NzbGVuICgod2NoYXJfdCAqKSBjdHlwZS0+ZGVmYXVsdF9taXNzaW5nKQotKwkJCSA/IHdjc2xlbl91aW50MzIgKGN0eXBlLT5kZWZhdWx0X21pc3NpbmcpCi0gCQkJIDogMCk7Ci0gCi0gICBpbml0X2xvY2FsZV9kYXRhICgmZmlsZSwgbmVsZW1zKTsKLUBAIC0xOTI3LDcgKzE5MjcsNyBAQCByZWFkX3RyYW5zbGl0X2VudHJ5IChzdHJ1Y3QgbGluZXJlYWRlciAqbGRmaWxlLCBzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLAotIAkgICAgaWdub3JlID0gMTsKLSAJICBlbHNlCi0gCSAgICAvKiBUaGlzIHZhbHVlIGlzIHVzYWJsZS4gICovCi0tCSAgICBvYnN0YWNrX2dyb3cgKG9iLCB0b193c3RyLCB3Y3NsZW4gKCh3Y2hhcl90ICopIHRvX3dzdHIpICogNCk7Ci0rCSAgICBvYnN0YWNrX2dyb3cgKG9iLCB0b193c3RyLCB3Y3NsZW5fdWludDMyICh0b193c3RyKSAqIDQpOwotIAotIAkgIGZpcnN0ID0gMDsKLSAJfQotQEAgLTI0NjEsOCArMjQ2MSw4IEBAIHdpdGggY2hhcmFjdGVyIGNvZGUgcmFuZ2UgdmFsdWVzIG9uZSBtdXN0IHVzZSB0aGUgYWJzb2x1dGUgZWxsaXBzaXMgYC4uLiciKSk7Ci0gCSAgICB9Ci0gCi0gCWhhbmRsZV90b2tfZGlnaXQ6Ci0tCSAgY2xhc3NfYml0ID0gX0lTd2RpZ2l0OwotLQkgIGNsYXNzMjU2X2JpdCA9IF9JU2RpZ2l0OwotKwkgIGNsYXNzX2JpdCA9IEJJVHcgKHRva19kaWdpdCk7Ci0rCSAgY2xhc3MyNTZfYml0ID0gQklUICh0b2tfZGlnaXQpOwotIAkgIGhhbmRsZV9kaWdpdHMgPSAxOwotIAkgIGdvdG8gcmVhZF9jaGFyY2xhc3M7Ci0gCi1AQCAtMzkwNCw4ICszOTA0LDcgQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAotIAotIAkgIHdoaWxlIChpZHggPCBudW1iZXIpCi0gCSAgICB7Ci0tCSAgICAgIGludCByZXMgPSB3Y3NjbXAgKChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtpZHhdLT5mcm9tLAotLQkJCQkoY29uc3Qgd2NoYXJfdCAqKSBydW5wLT5mcm9tKTsKLSsJICAgICAgaW50IHJlcyA9IHdjc2NtcF91aW50MzIgKHNvcnRlZFtpZHhdLT5mcm9tLCBydW5wLT5mcm9tKTsKLSAJICAgICAgaWYgKHJlcyA9PSAwKQotIAkJewotIAkJICByZXBsYWNlID0gMTsKLUBAIC0zOTQyLDExICszOTQxLDExIEBAIGFsbG9jYXRlX2FycmF5cyAoc3RydWN0IGxvY2FsZV9jdHlwZV90ICpjdHlwZSwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKLSAgICAgICBmb3IgKHNpemVfdCBjbnQgPSAwOyBjbnQgPCBudW1iZXI7ICsrY250KQotIAl7Ci0gCSAgc3RydWN0IHRyYW5zbGl0X3RvX3QgKnNydW5wOwotLQkgIGZyb21fbGVuICs9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2NudF0tPmZyb20pICsgMTsKLSsJICBmcm9tX2xlbiArPSB3Y3NsZW5fdWludDMyIChzb3J0ZWRbY250XS0+ZnJvbSkgKyAxOwotIAkgIHNydW5wID0gc29ydGVkW2NudF0tPnRvOwotIAkgIHdoaWxlIChzcnVucCAhPSBOVUxMKQotIAkgICAgewotLQkgICAgICB0b19sZW4gKz0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzcnVucC0+c3RyKSArIDE7Ci0rCSAgICAgIHRvX2xlbiArPSB3Y3NsZW5fdWludDMyIChzcnVucC0+c3RyKSArIDE7Ci0gCSAgICAgIHNydW5wID0gc3J1bnAtPm5leHQ7Ci0gCSAgICB9Ci0gCSAgLyogUGx1cyBvbmUgZm9yIHRoZSBleHRyYSBOVUwgY2hhcmFjdGVyIG1hcmtpbmcgdGhlIGVuZCBvZgotQEAgLTM5NzAsMTggKzM5NjksMTggQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAotIAkgIGN0eXBlLT50cmFuc2xpdF9mcm9tX2lkeFtjbnRdID0gZnJvbV9sZW47Ci0gCSAgY3R5cGUtPnRyYW5zbGl0X3RvX2lkeFtjbnRdID0gdG9fbGVuOwotIAotLQkgIGxlbiA9IHdjc2xlbiAoKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2NudF0tPmZyb20pICsgMTsKLS0JICB3bWVtY3B5ICgod2NoYXJfdCAqKSAmY3R5cGUtPnRyYW5zbGl0X2Zyb21fdGJsW2Zyb21fbGVuXSwKLS0JCSAgIChjb25zdCB3Y2hhcl90ICopIHNvcnRlZFtjbnRdLT5mcm9tLCBsZW4pOwotKwkgIGxlbiA9IHdjc2xlbl91aW50MzIgKHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7Ci0rCSAgd21lbWNweV91aW50MzIgKCZjdHlwZS0+dHJhbnNsaXRfZnJvbV90YmxbZnJvbV9sZW5dLAotKwkJCSAgc29ydGVkW2NudF0tPmZyb20sIGxlbik7Ci0gCSAgZnJvbV9sZW4gKz0gbGVuOwotIAotIAkgIGN0eXBlLT50cmFuc2xpdF90b19pZHhbY250XSA9IHRvX2xlbjsKLSAJICBzcnVucCA9IHNvcnRlZFtjbnRdLT50bzsKLSAJICB3aGlsZSAoc3J1bnAgIT0gTlVMTCkKLSAJICAgIHsKLS0JICAgICAgbGVuID0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzcnVucC0+c3RyKSArIDE7Ci0tCSAgICAgIHdtZW1jcHkgKCh3Y2hhcl90ICopICZjdHlwZS0+dHJhbnNsaXRfdG9fdGJsW3RvX2xlbl0sCi0tCQkgICAgICAgKGNvbnN0IHdjaGFyX3QgKikgc3J1bnAtPnN0ciwgbGVuKTsKLSsJICAgICAgbGVuID0gd2NzbGVuX3VpbnQzMiAoc3J1bnAtPnN0cikgKyAxOwotKwkgICAgICB3bWVtY3B5X3VpbnQzMiAoJmN0eXBlLT50cmFuc2xpdF90b190YmxbdG9fbGVuXSwKLSsJCQkgICAgICBzcnVucC0+c3RyLCBsZW4pOwotIAkgICAgICB0b19sZW4gKz0gbGVuOwotIAkgICAgICBzcnVucCA9IHNydW5wLT5uZXh0OwotIAkgICAgfQotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jCi1pbmRleCA4ZTk4NDlmZGJhLi4wMjhkM2VmYTlmIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYwotQEAgLTIyMCw4ICsyMjAsMTAgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKTsKLSAJfQotICAgICAgIGVsc2UKLSAJewotKwkgIHN0YXRpYyBjb25zdCB1aW50MzJfdCB3dF9mbXRfYW1wbVtdCi0rCSAgICA9IHsgJyUnLCdJJywnOicsJyUnLCdNJywnOicsJyUnLCdTJywnICcsJyUnLCdwJywwIH07Ci0gCSAgdGltZS0+dF9mbXRfYW1wbSA9ICIlSTolTTolUyAlcCI7Ci0tCSAgdGltZS0+d3RfZm10X2FtcG0gPSAoY29uc3QgdWludDMyX3QgKikgTCIlSTolTTolUyAlcCI7Ci0rCSAgdGltZS0+d3RfZm10X2FtcG0gPSB3dF9mbXRfYW1wbTsKLSAJfQotICAgICB9Ci0gCi1AQCAtMjMxLDcgKzIzMyw3IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIik7Ci0gICAgICAgY29uc3QgaW50IGRheXNfcGVyX21vbnRoWzEyXSA9IHsgMzEsIDI5LCAzMSwgMzAsIDMxLCAzMCwKLSAJCQkJICAgICAgIDMxLCAzMSwgMzAsIDMxICwzMCwgMzEgfTsKLSAgICAgICBzaXplX3QgaWR4OwotLSAgICAgIHdjaGFyX3QgKndzdHI7Ci0rICAgICAgdWludDMyX3QgKndzdHI7Ci0gCi0gICAgICAgdGltZS0+ZXJhX2VudHJpZXMgPQotIAkoc3RydWN0IGVyYV9kYXRhICopIHhtYWxsb2MgKHRpbWUtPm51bV9lcmEKLUBAIC00NTcsMTggKzQ1OSwxOCBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpOwotIAkgICAgfQotIAotIAkgIC8qIE5vdyBnZW5lcmF0ZSB0aGUgd2lkZSBjaGFyYWN0ZXIgbmFtZSBhbmQgZm9ybWF0LiAgKi8KLS0JICB3c3RyID0gd2NzY2hyICgod2NoYXJfdCAqKSB0aW1lLT53ZXJhW2lkeF0sIEwnOicpOy8qIGVuZCBkaXJlY3Rpb24gKi8KLS0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIG9mZnNldCAqLwotLQkgIHdzdHIgPSB3c3RyID8gd2NzY2hyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOwkvKiBlbmQgc3RhcnQgKi8KLS0JICB3c3RyID0gd3N0ciA/IHdjc2NociAod3N0ciArIDEsIEwnOicpIDogTlVMTDsJLyogZW5kIGVuZCAqLwotKwkgIHdzdHIgPSB3Y3NjaHJfdWludDMyICh0aW1lLT53ZXJhW2lkeF0sIEwnOicpOyAvKiBlbmQgZGlyZWN0aW9uICovCi0rCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgb2Zmc2V0ICovCi0rCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHJfdWludDMyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOyAvKiBlbmQgc3RhcnQgKi8KLSsJICB3c3RyID0gd3N0ciA/IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7IC8qIGVuZCBlbmQgKi8KLSAJICBpZiAod3N0ciAhPSBOVUxMKQotIAkgICAgewotLQkgICAgICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLnduYW1lID0gKHVpbnQzMl90ICopIHdzdHIgKyAxOwotLQkgICAgICB3c3RyID0gd2NzY2hyICh3c3RyICsgMSwgTCc6Jyk7CS8qIGVuZCBuYW1lICovCi0rCSAgICAgIHRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud25hbWUgPSB3c3RyICsgMTsKLSsJICAgICAgd3N0ciA9IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKTsgLyogZW5kIG5hbWUgKi8KLSAJICAgICAgaWYgKHdzdHIgIT0gTlVMTCkKLSAJCXsKLSAJCSAgKndzdHIgPSBMJ1wwJzsKLS0JCSAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53Zm9ybWF0ID0gKHVpbnQzMl90ICopIHdzdHIgKyAxOwotKwkJICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLndmb3JtYXQgPSB3c3RyICsgMTsKLSAJCX0KLSAJICAgICAgZWxzZQotIAkJdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53bmFtZSA9Ci1AQCAtNTI3LDcgKzUyOSwxNiBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpOwotICAgaWYgKHRpbWUtPmRhdGVfZm10ID09IE5VTEwpCi0gICAgIHRpbWUtPmRhdGVfZm10ID0gIiVhICViICVlICVIOiVNOiVTICVaICVZIjsKLSAgIGlmICh0aW1lLT53ZGF0ZV9mbXQgPT0gTlVMTCkKLS0gICAgdGltZS0+d2RhdGVfZm10ID0gKGNvbnN0IHVpbnQzMl90ICopIEwiJWEgJWIgJWUgJUg6JU06JVMgJVogJVkiOwotKyAgICB7Ci0rICAgICAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHdkYXRlX2ZtdFtdID0KLSsJeyAnJScsJ2EnLCcgJywKLSsJICAnJScsJ2InLCcgJywKLSsJICAnJScsJ2UnLCcgJywKLSsJICAnJScsJ0gnLCc6JywnJScsJ00nLCc6JywnJScsJ1MnLCcgJywKLSsJICAnJScsJ1onLCcgJywKLSsJICAnJScsJ1knLDAgfTsKLSsgICAgICB0aW1lLT53ZGF0ZV9mbXQgPSB3ZGF0ZV9mbXQ7Ci0rICAgIH0KLSB9Ci0gCi0gCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYyBiL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMKLWluZGV4IGVkM2E5NzMxZDAuLjMxNzhlYTA1N2EgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jCi1AQCAtNTk1LDcgKzU5NSw3IEBAIGdldF9zdHJpbmcgKHN0cnVjdCBsaW5lcmVhZGVyICpsciwgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKLSB7Ci0gICBpbnQgcmV0dXJuX3dpZGVzdHIgPSBsci0+cmV0dXJuX3dpZGVzdHI7Ci0gICBjaGFyICpidWY7Ci0tICB3Y2hhcl90ICpidWYyID0gTlVMTDsKLSsgIHVpbnQzMl90ICpidWYyID0gTlVMTDsKLSAgIHNpemVfdCBidWZhY3Q7Ci0gICBzaXplX3QgYnVmbWF4ID0gNTY7Ci0gCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCi1pbmRleCBiN2JjZWY4MjQ4Li5lZmVjZWQxZTBmIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMKLUBAIC0xMDksNiArMTA5LDcgQEAgdm9pZCAoKmFyZ3BfcHJvZ3JhbV92ZXJzaW9uX2hvb2spIChGSUxFICosIHN0cnVjdCBhcmdwX3N0YXRlICopID0gcHJpbnRfdmVyc2lvbjsKLSAjZGVmaW5lIE9QVF9OT19XQVJOIDQwMgotICNkZWZpbmUgT1BUX1dBUk4gNDAzCi0gI2RlZmluZSBPUFRfTk9fSEFSRF9MSU5LUyA0MDQKLSsjZGVmaW5lIE9QVF9VSU5UMzJfQUxJR04gNDA1Ci0gCi0gLyogRGVmaW5pdGlvbnMgb2YgYXJndW1lbnRzIGZvciBhcmdwIGZ1bmN0aW9ucy4gICovCi0gc3RhdGljIGNvbnN0IHN0cnVjdCBhcmdwX29wdGlvbiBvcHRpb25zW10gPQotQEAgLTE1Myw2ICsxNTQsOCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdGlvbnNbXSA9Ci0gICAgIE5fKCJHZW5lcmF0ZSBsaXR0bGUtZW5kaWFuIG91dHB1dCIpIH0sCi0gICB7ICJiaWctZW5kaWFuIiwgT1BUX0JJR19FTkRJQU4sIE5VTEwsIDAsCi0gICAgIE5fKCJHZW5lcmF0ZSBiaWctZW5kaWFuIG91dHB1dCIpIH0sCi0rICB7ICJ1aW50MzItYWxpZ24iLCBPUFRfVUlOVDMyX0FMSUdOLCAiQUxJR05NRU5UIiwgMCwKLSsgICAgTl8oIlNldCB0aGUgdGFyZ2V0J3MgdWludDMyX3QgYWxpZ25tZW50IGluIGJ5dGVzIChkZWZhdWx0IDQpIikgfSwKLSAgIHsgTlVMTCwgMCwgTlVMTCwgMCwgTlVMTCB9Ci0gfTsKLSAKLUBAIC0yNDIsMTIgKzI0NSwxNCBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotICAgICAgY3R5cGUgbG9jYWxlLiAgKFAxMDAzLjIgNC4zNS41LjIpICAqLwotICAgc2V0bG9jYWxlIChMQ19DVFlQRSwgIlBPU0lYIik7Ci0gCi0rI2lmbmRlZiBOT19TWVNDT05GCi0gICAvKiBMb29rIHdoZXRoZXIgdGhlIHN5c3RlbSByZWFsbHkgYWxsb3dzIGxvY2FsZSBkZWZpbml0aW9ucy4gIFBPU0lYCi0gICAgICBkZWZpbmVzIGVycm9yIGNvZGUgMyBmb3IgdGhpcyBzaXR1YXRpb24gc28gSSB0aGluayBpdCBtdXN0IGJlCi0gICAgICBhIGZhdGFsIGVycm9yIChzZWUgUDEwMDMuMiA0LjM1LjgpLiAgKi8KLSAgIGlmIChzeXNjb25mIChfU0NfMl9MT0NBTEVERUYpIDwgMCkKLSAgICAgcmVjb3JkX2Vycm9yICgzLCAwLCBfKCJcCi0gRkFUQUw6IHN5c3RlbSBkb2VzIG5vdCBkZWZpbmUgYF9QT1NJWDJfTE9DQUxFREVGJyIpKTsKLSsjZW5kaWYKLSAKLSAgIC8qIFByb2Nlc3MgY2hhcm1hcCBmaWxlLiAgKi8KLSAgIGNoYXJtYXAgPSBjaGFybWFwX3JlYWQgKGNoYXJtYXBfZmlsZSwgdmVyYm9zZSwgMSwgYmVfcXVpZXQsIDEpOwotQEAgLTM5OSw2ICs0MDQsOSBAQCBwYXJzZV9vcHQgKGludCBrZXksIGNoYXIgKmFyZywgc3RydWN0IGFyZ3Bfc3RhdGUgKnN0YXRlKQotICAgICAgIC8qIERvIG5vdCBoYXJkIGxpbmsgdG8gb3RoZXIgbG9jYWxlcy4gICovCi0gICAgICAgaGFyZF9saW5rcyA9IGZhbHNlOwotICAgICAgIGJyZWFrOwotKyAgICBjYXNlIE9QVF9VSU5UMzJfQUxJR046Ci0rICAgICAgdWludDMyX2FsaWduX21hc2sgPSBzdHJ0b2wgKGFyZywgTlVMTCwgMCkgLSAxOwotKyAgICAgIGJyZWFrOwotICAgICBjYXNlICdjJzoKLSAgICAgICBmb3JjZV9vdXRwdXQgPSAxOwotICAgICAgIGJyZWFrOwotZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jCi1pbmRleCBlNGJhNDhlOTY4Li5lN2IwZWZlODg3IDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYwotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYwotQEAgLTU0NCw2ICs1NDQsOSBAQCBjb21wYXJlX2ZpbGVzIChjb25zdCBjaGFyICpmaWxlbmFtZTEsIGNvbnN0IGNoYXIgKmZpbGVuYW1lMiwgc2l6ZV90IHNpemUsCi0gICAgbWFjaGluZSBydW5uaW5nIGxvY2FsZWRlZi4gICovCi0gYm9vbCBzd2FwX2VuZGlhbm5lc3NfcDsKLSAKLSsvKiBUaGUgdGFyZ2V0J3MgdmFsdWUgb2YgX19hbGlnbl9fKHVpbnQzMl90KSAtIDEuICAqLwotK3Vuc2lnbmVkIGludCB1aW50MzJfYWxpZ25fbWFzayA9IDM7Ci0rCi0gLyogV2hlbiBjYWxsZWQgb3V0c2lkZSBhIHN0YXJ0X2xvY2FsZV9zdHJ1Y3R1cmUvZW5kX2xvY2FsZV9zdHJ1Y3R1cmUKLSAgICBvciBzdGFydF9sb2NhbGVfcHJlbHVkZS9lbmRfbG9jYWxlX3ByZWx1ZGUgYmxvY2ssIHJlY29yZCB0aGF0IHRoZQotICAgIG5leHQgYnl0ZSBpbiBGSUxFJ3Mgb2JzdGFjayB3aWxsIGJlIHRoZSBmaXJzdCBieXRlIG9mIGEgbmV3IGVsZW1lbnQuCi1AQCAtNjIxLDcgKzYyNCw3IEBAIGFkZF9sb2NhbGVfc3RyaW5nIChzdHJ1Y3QgbG9jYWxlX2ZpbGUgKmZpbGUsIGNvbnN0IGNoYXIgKnN0cmluZykKLSB2b2lkCi0gYWRkX2xvY2FsZV93c3RyaW5nIChzdHJ1Y3QgbG9jYWxlX2ZpbGUgKmZpbGUsIGNvbnN0IHVpbnQzMl90ICpzdHJpbmcpCi0gewotLSAgYWRkX2xvY2FsZV91aW50MzJfYXJyYXkgKGZpbGUsIHN0cmluZywgd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzdHJpbmcpICsgMSk7Ci0rICBhZGRfbG9jYWxlX3VpbnQzMl9hcnJheSAoZmlsZSwgc3RyaW5nLCB3Y3NsZW5fdWludDMyIChzdHJpbmcpICsgMSk7Ci0gfQotIAotIC8qIFJlY29yZCB0aGF0IEZJTEUncyBuZXh0IGVsZW1lbnQgaXMgdGhlIDMyLWJpdCBpbnRlZ2VyIFZBTFVFLiAgKi8KLWRpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaAotaW5kZXggYzA2M2ZjMDk3ZC4uNGU3NDY1ZTU1YSAxMDA2NDQKLS0tLSBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmgKLUBAIC03MSw2ICs3MSw4IEBAIGV4dGVybiB2b2lkIHdyaXRlX2FsbF9jYXRlZ29yaWVzIChzdHJ1Y3QgbG9jYWxlZGVmX3QgKmRlZmluaXRpb25zLAotIAotIGV4dGVybiBib29sIHN3YXBfZW5kaWFubmVzc19wOwotIAotK2V4dGVybiB1bnNpZ25lZCBpbnQgdWludDMyX2FsaWduX21hc2s7Ci0rCi0gLyogQ2hhbmdlIHRoZSBvdXRwdXQgdG8gYmUgYmlnLWVuZGlhbiBpZiBCSUdfRU5ESUFOIGlzIHRydWUgYW5kCi0gICAgbGl0dGxlLWVuZGlhbiBvdGhlcndpc2UuICAqLwotIHN0YXRpYyBpbmxpbmUgdm9pZAotQEAgLTg5LDcgKzkxLDggQEAgbWF5YmVfc3dhcF91aW50MzIgKHVpbnQzMl90IHZhbHVlKQotIH0KLSAKLSAvKiBMaWtld2lzZSwgYnV0IG11bmdlIGFuIGFycmF5IG9mIE4gdWludDMyX3RzIHN0YXJ0aW5nIGF0IEFSUkFZLiAgKi8KLS1zdGF0aWMgaW5saW5lIHZvaWQKLStzdGF0aWMgdm9pZAotK19fYXR0cmlidXRlX18gKCh1bnVzZWQpKQotIG1heWJlX3N3YXBfdWludDMyX2FycmF5ICh1aW50MzJfdCAqYXJyYXksIHNpemVfdCBuKQotIHsKLSAgIGlmIChzd2FwX2VuZGlhbm5lc3NfcCkKLUBAIC05OSw3ICsxMDIsOCBAQCBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSAodWludDMyX3QgKmFycmF5LCBzaXplX3QgbikKLSAKLSAvKiBMaWtlIG1heWJlX3N3YXBfdWludDMyX2FycmF5LCBidXQgdGhlIGFycmF5IG9mIE4gZWxlbWVudHMgaXMgYXQKLSAgICB0aGUgZW5kIG9mIE9CU1RBQ0sncyBjdXJyZW50IG9iamVjdC4gICovCi0tc3RhdGljIGlubGluZSB2b2lkCi0rc3RhdGljIHZvaWQKLStfX2F0dHJpYnV0ZV9fICgodW51c2VkKSkKLSBtYXliZV9zd2FwX3VpbnQzMl9vYnN0YWNrIChzdHJ1Y3Qgb2JzdGFjayAqb2JzdGFjaywgc2l6ZV90IG4pCi0gewotICAgbWF5YmVfc3dhcF91aW50MzJfYXJyYXkgKCh1aW50MzJfdCAqKSBvYnN0YWNrX25leHRfZnJlZSAob2JzdGFjaykgLSBuLCBuKTsKLUBAIC0yNzYsNCArMjgwLDU1IEBAIGV4dGVybiB2b2lkIGlkZW50aWZpY2F0aW9uX291dHB1dCAoc3RydWN0IGxvY2FsZWRlZl90ICpsb2NhbGUsCi0gCQkJCSAgIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCi0gCQkJCSAgIGNvbnN0IGNoYXIgKm91dHB1dF9wYXRoKTsKLSAKLStzdGF0aWMgc2l6ZV90IHdjc2xlbl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzdHIpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKLStzdGF0aWMgdWludDMyX3QgKiB3bWVtY3B5X3VpbnQzMiAodWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Ci0rc3RhdGljIHVpbnQzMl90ICogd2NzY2hyX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMsIHVpbnQzMl90IGNoKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Ci0rc3RhdGljIGludCB3Y3NjbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOwotK3N0YXRpYyBpbnQgd21lbWNtcF91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOwotKwotK3N0YXRpYyBzaXplX3QKLSt3Y3NsZW5fdWludDMyIChjb25zdCB1aW50MzJfdCAqc3RyKQotK3sKLSsgIHNpemVfdCBsZW4gPSAwOwotKyAgd2hpbGUgKHN0cltsZW5dICE9IDApCi0rICAgIGxlbisrOwotKyAgcmV0dXJuIGxlbjsKLSt9Ci0rCi0rc3RhdGljICBpbnQKLSt3bWVtY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKQotK3sKLSsgIHdoaWxlIChuLS0gIT0gMCkKLSsgICAgewotKyAgICAgIGludCBkaWZmID0gKnMxKysgLSAqczIrKzsKLSsgICAgICBpZiAoZGlmZiAhPSAwKQotKwlyZXR1cm4gZGlmZjsKLSsgICAgfQotKyAgcmV0dXJuIDA7Ci0rfQotKwotK3N0YXRpYyBpbnQKLSt3Y3NjbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMikKLSt7Ci0rICB3aGlsZSAoKnMxICE9IDAgJiYgKnMxID09ICpzMikKLSsgICAgczErKywgczIrKzsKLSsgIHJldHVybiAqczEgLSAqczI7Ci0rfQotKwotK3N0YXRpYyB1aW50MzJfdCAqCi0rd21lbWNweV91aW50MzIgKHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyLCBzaXplX3QgbikKLSt7Ci0rICByZXR1cm4gbWVtY3B5IChzMSwgczIsIG4gKiBzaXplb2YgKHVpbnQzMl90KSk7Ci0rfQotKwotK3N0YXRpYyB1aW50MzJfdCAqCi0rd2NzY2hyX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMsIHVpbnQzMl90IGNoKQotK3sKLSsgIGRvCi0rICAgIGlmICgqcyA9PSBjaCkKLSsgICAgICByZXR1cm4gKHVpbnQzMl90ICopIHM7Ci0rICB3aGlsZSAoKnMrKyAhPSAwKTsKLSsgIHJldHVybiAwOwotK30KLSsKLSAjZW5kaWYgLyogbG9jZmlsZS5oICovCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3NldGxvY2FsZS5jIGIvbG9jYWxlL3NldGxvY2FsZS5jCi1pbmRleCA5YmQzNTQ1NGI5Li4yYTY3ZGM2NTg5IDEwMDY0NAotLS0tIGEvbG9jYWxlL3NldGxvY2FsZS5jCi0rKysgYi9sb2NhbGUvc2V0bG9jYWxlLmMKLUBAIC02NCwzNiArNjQsNiBAQCBzdGF0aWMgY2hhciAqY29uc3QgX25sX2N1cnJlbnRfdXNlZFtdID0KLSAjZW5kaWYKLSAKLSAKLS0vKiBEZWZpbmUgYW4gYXJyYXkgb2YgY2F0ZWdvcnkgbmFtZXMgKGFsc28gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzKS4gICovCi0tY29uc3QgdW5pb24gY2F0bmFtZXN0cl90IF9ubF9jYXRlZ29yeV9uYW1lcyBhdHRyaWJ1dGVfaGlkZGVuID0KLS0gIHsKLS0gICAgewotLSNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAotLSAgICAgIGNhdGVnb3J5X25hbWUsCi0tI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgotLSN1bmRlZiBERUZJTkVfQ0FURUdPUlkKLS0gICAgfQotLSAgfTsKLS0KLS1jb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX2lkeHNbX19MQ19MQVNUXSBhdHRyaWJ1dGVfaGlkZGVuID0KLS0gIHsKLS0jZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKLS0gICAgW2NhdGVnb3J5XSA9IG9mZnNldG9mICh1bmlvbiBjYXRuYW1lc3RyX3QsIENBVE5BTUVNRiAoX19MSU5FX18pKSwKLS0jaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCi0tI3VuZGVmIERFRklORV9DQVRFR09SWQotLSAgfTsKLS0KLS0vKiBBbiBhcnJheSBvZiB0aGVpciBsZW5ndGhzLCBmb3IgY29udmVuaWVuY2UuICAqLwotLWNvbnN0IHVpbnQ4X3QgX25sX2NhdGVnb3J5X25hbWVfc2l6ZXNbXSBhdHRyaWJ1dGVfaGlkZGVuID0KLS0gIHsKLS0jZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKLS0gICAgW2NhdGVnb3J5XSA9IHNpemVvZiAoY2F0ZWdvcnlfbmFtZSkgLSAxLAotLSNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKLS0jdW5kZWYJREVGSU5FX0NBVEVHT1JZCi0tICAgIFtMQ19BTExdID0gc2l6ZW9mICgiTENfQUxMIikgLSAxCi0tICB9OwotLQotLQotICNpZmRlZiBOTF9DVVJSRU5UX0lORElSRUNUCi0gIyBkZWZpbmUgV0VBS19QT1NUTE9BRChwb3N0bG9hZCkgd2Vha19leHRlcm4gKHBvc3Rsb2FkKQotICNlbHNlCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjItZWdsaWJjLVJlc29sdmUtX19mcHNjcl92YWx1ZXMtb24tU0g0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIyLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTUwM2M4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIyLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIDI1YzIxODU3YTNmYzBlYjI2ODMxNjE2YmE4OGE2OTZkZDMxZWNiYTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxOCBNYXIgMjAxNSAwMDo1NTo1MyArMDAwMAorU3ViamVjdDogW1BBVENIXSBlZ2xpYmM6IFJlc29sdmUgX19mcHNjcl92YWx1ZXMgb24gU0g0CisKKzIwMTAtMDktMjkgIE5vYnVoaXJvIEl3YW1hdHN1ICA8aXdhbWF0c3VAbmlnYXVyaS5vcmc+CisgICAgICAgICAgICBBbmRyZXcgU3R1YmJzICA8YW1zQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICAgICAgUmVzb2x2ZSBTSCdzIF9fZnBzY3JfdmFsdWVzIHRvIHN5bWJvbCBpbiBsaWJjLnNvLgorCisgICAgICAgICogc3lzZGVwcy9zaC9zaDQvZnB1L2ZwdV9jb250cm9sLmg6IEFkZCBDKysgX19zZXRfZnBzY3IgcHJvdG90eXBlLgorICAgICAgICAqIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zIChHTElCQ18yLjIpOiBBZGQgX19mcHNjcl92YWx1ZXMuCisgICAgICAgICogc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMgKF9fX2Zwc2NyX3ZhbHVlcyk6IE5ldyBjb25zdGFudC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucyB8ICAxICsKKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUyB8IDExICsrKysrKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9WZXJzaW9ucyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zCitpbmRleCBlMDkzOGM0MTY1Li5jYTFkN2RhMzM5IDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvVmVyc2lvbnMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL1ZlcnNpb25zCitAQCAtMiw2ICsyLDcgQEAgbGliYyB7CisgICBHTElCQ18yLjIgeworICAgICAjIGZ1bmN0aW9ucyB1c2VkIGluIG90aGVyIGxpYnJhcmllcworICAgICBfX3hzdGF0NjQ7IF9fZnhzdGF0NjQ7IF9fbHhzdGF0NjQ7CisrICAgIF9fZnBzY3JfdmFsdWVzOworIAorICAgICAjIGEqCisgICAgIGFscGhhc29ydDY0OworZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3NoL3N5c2RlcC5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKK2luZGV4IDg1ZmYzZjkwMGUuLjc3NDNiOGQ1N2EgMTAwNjQ0CistLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9zaC9zeXNkZXAuUworKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvc2gvc3lzZGVwLlMKK0BAIC0zMCwzICszMCwxNCBAQCBFTlRSWSAoX19zeXNjYWxsX2Vycm9yKQorIAorICNkZWZpbmUgX19zeXNjYWxsX2Vycm9yIF9fc3lzY2FsbF9lcnJvcl8xCisgI2luY2x1ZGUgPHN5c2RlcHMvdW5peC9zaC9zeXNkZXAuUz4KKysKKysgICAgICAgLmRhdGEKKysgICAgICAgLmFsaWduIDMKKysgICAgICAgLmdsb2JsIF9fX2Zwc2NyX3ZhbHVlcworKyAgICAgICAudHlwZSBfX19mcHNjcl92YWx1ZXMsIEBvYmplY3QKKysgICAgICAgLnNpemUgX19fZnBzY3JfdmFsdWVzLCA4CisrX19fZnBzY3JfdmFsdWVzOgorKyAgICAgICAubG9uZyAwCisrICAgICAgIC5sb25nIDB4ODAwMDAKKyt3ZWFrX2FsaWFzIChfX19mcHNjcl92YWx1ZXMsIF9fZnBzY3JfdmFsdWVzKQorKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3NjY3ZGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gYWZhOGQ2ZmFlZGRlYjgwYWNhMzE4YjMzZWRmNDlkOWY4Y2U2NTc2MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIwIEFwciAyMDE2IDIxOjExOjAwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMjMvMjhdIERlZmluZSBEVU1NWV9MT0NBTEVfVCBpZiBub3QgZGVmaW5lZAotCi1UaGlzIGlzIGEgaGFjayB0byBmaXggYnVpbGRpbmcgdGhlIGxvY2FsZSBiaXRzIG9uIGFuIG9sZGVyCi1DZW50T3MgNS5YIG1hY2hpbmUKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvdGhlcl0KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxvY2FsZS9wcm9ncmFtcy9jb25maWcuaCB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oIGIvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCi1pbmRleCBhMWU2ZTBlYzNjLi43Zjc1NTI4ZWFlIDEwMDY0NAotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKLUBAIC0xOSw2ICsxOSw5IEBACi0gI2lmbmRlZiBfTERfQ09ORklHX0gKLSAjZGVmaW5lIF9MRF9DT05GSUdfSAkxCi0gCi0rI2lmbmRlZiBEVU1NWV9MT0NBTEVfVAotKyNkZWZpbmUgRFVNTVlfTE9DQUxFX1QKLSsjZW5kaWYKLSAvKiBVc2UgdGhlIGludGVybmFsIHRleHRkb21haW4gdXNlZCBmb3IgbGliYyBtZXNzYWdlcy4gICovCi0gI2RlZmluZSBQQUNLQUdFIF9saWJjX2ludGxfZG9tYWlubmFtZQotICNpZm5kZWYgVkVSU0lPTgotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDIzLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMy1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWE5MGYyMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyMy1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSw1NjAgQEAKK0Zyb20gMzAwMDgzMjdhYWRmMGM3NzVlNjQ0YmIzODdkN2MyNTk1MmVkMDViNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE4IE1hciAyMDE1IDAxOjMzOjQ5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGVnbGliYzogRm9yd2FyZCBwb3J0IGNyb3NzIGxvY2FsZSBnZW5lcmF0aW9uIHN1cHBvcnQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsb2NhbGUvTWFrZWZpbGUgICAgICAgICAgICAgICB8ICAzICstCisgbG9jYWxlL2NhdG5hbWVzLmMgICAgICAgICAgICAgfCA0NiArKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBsb2NhbGUvbG9jYWxlaW5mby5oICAgICAgICAgICB8ICAyICstCisgbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMgfCAgNiArKysrCisgbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYyAgfCAxNyArKysrKy0tLS0tCisgbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMgICAgfCAyNyArKysrKysrKy0tLS0tLS0tCisgbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYyAgICAgfCAzMSArKysrKysrKysrKystLS0tLS0KKyBsb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jICB8ICAyICstCisgbG9jYWxlL3Byb2dyYW1zL2xvY2FsZWRlZi5jICAgfCAgOCArKysrKworIGxvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMgICAgIHwgIDUgKystCisgbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaCAgICAgfCA1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLQorIGxvY2FsZS9zZXRsb2NhbGUuYyAgICAgICAgICAgIHwgMjkgLS0tLS0tLS0tLS0tLS0tLS0KKyAxMiBmaWxlcyBjaGFuZ2VkLCAxNjcgaW5zZXJ0aW9ucygrKSwgNjggZGVsZXRpb25zKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGxvY2FsZS9jYXRuYW1lcy5jCisKK2RpZmYgLS1naXQgYS9sb2NhbGUvTWFrZWZpbGUgYi9sb2NhbGUvTWFrZWZpbGUKK2luZGV4IGM5Njk0ZTIzNmUuLmJhNzEwNWZhZDYgMTAwNjQ0CistLS0gYS9sb2NhbGUvTWFrZWZpbGUKKysrKyBiL2xvY2FsZS9NYWtlZmlsZQorQEAgLTI2LDcgKzI2LDggQEAgaGVhZGVycwkJPSBsYW5naW5mby5oIGxvY2FsZS5oIGJpdHMvbG9jYWxlLmggXAorIAkJICBiaXRzL3R5cGVzL2xvY2FsZV90LmggYml0cy90eXBlcy9fX2xvY2FsZV90LmgKKyByb3V0aW5lcwk9IHNldGxvY2FsZSBmaW5kbG9jYWxlIGxvYWRsb2NhbGUgbG9hZGFyY2hpdmUgXAorIAkJICBsb2NhbGVjb252IG5sX2xhbmdpbmZvIG5sX2xhbmdpbmZvX2wgbWJfY3VyX21heCBcCistCQkgIG5ld2xvY2FsZSBkdXBsb2NhbGUgZnJlZWxvY2FsZSB1c2Vsb2NhbGUKKysJCSAgbmV3bG9jYWxlIGR1cGxvY2FsZSBmcmVlbG9jYWxlIHVzZWxvY2FsZSBcCisrCQkgIGNhdG5hbWVzCisgdGVzdHMJCT0gdHN0LUMtbG9jYWxlIHRzdC1sb2NuYW1lIHRzdC1kdXBsb2NhbGUKKyBjYXRlZ29yaWVzCT0gY3R5cGUgbWVzc2FnZXMgbW9uZXRhcnkgbnVtZXJpYyB0aW1lIHBhcGVyIG5hbWUgXAorIAkJICBhZGRyZXNzIHRlbGVwaG9uZSBtZWFzdXJlbWVudCBpZGVudGlmaWNhdGlvbiBjb2xsYXRlCitkaWZmIC0tZ2l0IGEvbG9jYWxlL2NhdG5hbWVzLmMgYi9sb2NhbGUvY2F0bmFtZXMuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjUzOGYzZjVlZGIKKy0tLSAvZGV2L251bGwKKysrKyBiL2xvY2FsZS9jYXRuYW1lcy5jCitAQCAtMCwwICsxLDQ2IEBACisrLyogQ29weXJpZ2h0IChDKSAyMDA2ICBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysgICBUaGlzIGZpbGUgaXMgcGFydCBvZiB0aGUgR05VIEMgTGlicmFyeS4KKysKKysgICBUaGUgR05VIEMgTGlicmFyeSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKKysgICBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyCisrICAgdmVyc2lvbiAyLjEgb2YgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKysgICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUgR05VCisrICAgTGVzc2VyIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysKKysgICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgTGVzc2VyIEdlbmVyYWwgUHVibGljCisrICAgTGljZW5zZSBhbG9uZyB3aXRoIHRoZSBHTlUgQyBMaWJyYXJ5OyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlCisrICAgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEKKysgICAwMjExMS0xMzA3IFVTQS4gICovCisrCisrI2luY2x1ZGUgImxvY2FsZWluZm8uaCIKKysKKysvKiBEZWZpbmUgYW4gYXJyYXkgb2YgY2F0ZWdvcnkgbmFtZXMgKGFsc28gdGhlIGVudmlyb25tZW50IHZhcmlhYmxlIG5hbWVzKS4gICovCisrY29uc3Qgc3RydWN0IGNhdG5hbWVzdHJfdCBfbmxfY2F0ZWdvcnlfbmFtZXMgYXR0cmlidXRlX2hpZGRlbiA9CisrICB7CisrI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCisrICAgIGNhdGVnb3J5X25hbWUsCisrI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgorKyN1bmRlZiBERUZJTkVfQ0FURUdPUlkKKysgIH07CisrCisrY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9pZHhzW19fTENfTEFTVF0gYXR0cmlidXRlX2hpZGRlbiA9CisrICB7CisrI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCisrICAgIFtjYXRlZ29yeV0gPSBvZmZzZXRvZiAoc3RydWN0IGNhdG5hbWVzdHJfdCwgQ0FUTkFNRU1GIChfX0xJTkVfXykpLAorKyNpbmNsdWRlICJjYXRlZ29yaWVzLmRlZiIKKysjdW5kZWYgREVGSU5FX0NBVEVHT1JZCisrICB9OworKworKy8qIEFuIGFycmF5IG9mIHRoZWlyIGxlbmd0aHMsIGZvciBjb252ZW5pZW5jZS4gICovCisrY29uc3QgdWludDhfdCBfbmxfY2F0ZWdvcnlfbmFtZV9zaXplc1tdIGF0dHJpYnV0ZV9oaWRkZW4gPQorKyAgeworKyNkZWZpbmUgREVGSU5FX0NBVEVHT1JZKGNhdGVnb3J5LCBjYXRlZ29yeV9uYW1lLCBpdGVtcywgYSkgXAorKyAgICBbY2F0ZWdvcnldID0gc2l6ZW9mIChjYXRlZ29yeV9uYW1lKSAtIDEsCisrI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgorKyN1bmRlZglERUZJTkVfQ0FURUdPUlkKKysgICAgW0xDX0FMTF0gPSBzaXplb2YgKCJMQ19BTEwiKSAtIDEKKysgIH07CitkaWZmIC0tZ2l0IGEvbG9jYWxlL2xvY2FsZWluZm8uaCBiL2xvY2FsZS9sb2NhbGVpbmZvLmgKK2luZGV4IGZkYzI4M2M2OWEuLjRlZWVkMzVmOTAgMTAwNjQ0CistLS0gYS9sb2NhbGUvbG9jYWxlaW5mby5oCisrKysgYi9sb2NhbGUvbG9jYWxlaW5mby5oCitAQCAtMjMwLDcgKzIzMCw3IEBAIF9fbGliY190c2RfZGVmaW5lIChleHRlcm4sIGxvY2FsZV90LCBMT0NBTEUpCisgICAgdW51c2VkLiAgV2UgY2FuIG1hbmFnZSB0aGlzIHBsYXlpbmcgc29tZSB0cmlja3Mgd2l0aCB3ZWFrIHJlZmVyZW5jZXMuCisgICAgQnV0IHdpdGggdGhyZWFkLWxvY2FsIGxvY2FsZSBzZXR0aW5ncywgaXQgYmVjb21lcyBxdWl0ZSB1bmdhaW5seSB1bmxlc3MKKyAgICB3ZSBjYW4gdXNlIF9fdGhyZWFkIHZhcmlhYmxlcy4gIFNvIG9ubHkgaW4gdGhhdCBjYXNlIGRvIHdlIGF0dGVtcHQgdGhpcy4gICovCistI2lmbmRlZiBTSEFSRUQKKysjaWYgIWRlZmluZWQgU0hBUkVEICYmICFkZWZpbmVkIElOX0dMSUJDX0xPQ0FMRURFRgorICMgaW5jbHVkZSA8dGxzLmg+CisgIyBkZWZpbmUgTkxfQ1VSUkVOVF9JTkRJUkVDVAkxCisgI2VuZGlmCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMgYi9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYworaW5kZXggMWE1MjZhMjQwZC4uMGZiMmRhZjkzNiAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9jaGFybWFwLWRpci5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC1kaXIuYworQEAgLTE4LDcgKzE4LDkgQEAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8ZmNudGwuaD4KKyAjaW5jbHVkZSA8bGliaW50bC5oPgorKyNpZm5kZWYgTk9fVU5DT01QUkVTUworICNpbmNsdWRlIDxzcGF3bi5oPgorKyNlbmRpZgorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzdGRsaWIuaD4KKyAjaW5jbHVkZSA8c3RyaW5nLmg+CitAQCAtMTU0LDYgKzE1Niw3IEBAIGNoYXJtYXBfY2xvc2VkaXIgKENIQVJNQVBfRElSICpjZGlyKQorICAgcmV0dXJuIGNsb3NlZGlyIChkaXIpOworIH0KKyAKKysjaWZuZGVmIE5PX1VOQ09NUFJFU1MKKyAvKiBDcmVhdGVzIGEgc3VicHJvY2VzcyBkZWNvbXByZXNzaW5nIHRoZSBnaXZlbiBwYXRobmFtZSwgYW5kIHJldHVybnMKKyAgICBhIHN0cmVhbSByZWFkaW5nIGl0cyBvdXRwdXQgKHRoZSBkZWNvbXByZXNzZWQgZGF0YSkuICAqLworIHN0YXRpYworQEAgLTIwMiw2ICsyMDUsNyBAQCBmb3Blbl91bmNvbXByZXNzZWQgKGNvbnN0IGNoYXIgKnBhdGhuYW1lLCBjb25zdCBjaGFyICpjb21wcmVzc29yKQorICAgICB9CisgICByZXR1cm4gTlVMTDsKKyB9CisrI2VuZGlmCisgCisgLyogT3BlbnMgYSBjaGFybWFwIGZvciByZWFkaW5nLCBnaXZlbiBpdHMgbmFtZSAobm90IGFuIGFsaWFzIG5hbWUpLiAgKi8KKyBGSUxFICoKK0BAIC0yMjQsNiArMjI4LDcgQEAgY2hhcm1hcF9vcGVuIChjb25zdCBjaGFyICpkaXJlY3RvcnksIGNvbnN0IGNoYXIgKm5hbWUpCisgICBpZiAoc3RyZWFtICE9IE5VTEwpCisgICAgIHJldHVybiBzdHJlYW07CisgCisrI2lmbmRlZiBOT19VTkNPTVBSRVNTCisgICBtZW1jcHkgKHAsICIuZ3oiLCA0KTsKKyAgIHN0cmVhbSA9IGZvcGVuX3VuY29tcHJlc3NlZCAocGF0aG5hbWUsICJnemlwIik7CisgICBpZiAoc3RyZWFtICE9IE5VTEwpCitAQCAtMjMzLDYgKzIzOCw3IEBAIGNoYXJtYXBfb3BlbiAoY29uc3QgY2hhciAqZGlyZWN0b3J5LCBjb25zdCBjaGFyICpuYW1lKQorICAgc3RyZWFtID0gZm9wZW5fdW5jb21wcmVzc2VkIChwYXRobmFtZSwgImJ6aXAyIik7CisgICBpZiAoc3RyZWFtICE9IE5VTEwpCisgICAgIHJldHVybiBzdHJlYW07CisrI2VuZGlmCisgCisgICByZXR1cm4gTlVMTDsKKyB9CitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xkLWNvbGxhdGUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sZC1jb2xsYXRlLmMKK2luZGV4IGZlYjFhMTEyNTguLjVhOGU1MjI0NzAgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtY29sbGF0ZS5jCitAQCAtMzQ5LDcgKzM0OSw3IEBAIG5ld19lbGVtZW50IChzdHJ1Y3QgbG9jYWxlX2NvbGxhdGVfdCAqY29sbGF0ZSwgY29uc3QgY2hhciAqbWJzLCBzaXplX3QgbWJzbGVuLAorICAgICB9CisgICBpZiAod2NzICE9IE5VTEwpCisgICAgIHsKKy0gICAgICBzaXplX3QgbndjcyA9IHdjc2xlbiAoKHdjaGFyX3QgKikgd2NzKTsKKysgICAgICBzaXplX3QgbndjcyA9IHdjc2xlbl91aW50MzIgKHdjcyk7CisgICAgICAgdWludDMyX3QgemVybyA9IDA7CisgICAgICAgLyogSGFuZGxlIDxVMDAwMD4gYXMgYSBzaW5nbGUgY2hhcmFjdGVyLiAgKi8KKyAgICAgICBpZiAobndjcyA9PSAwKQorQEAgLTE3NzIsOCArMTc3Miw3IEBAIHN5bWJvbCBgJXMnIGhhcyB0aGUgc2FtZSBlbmNvZGluZyBhcyIpLCAoKmVwdHIpLT5uYW1lKTsKKyAKKyAJICAgICAgaWYgKCgqZXB0ciktPm53Y3MgPT0gcnVucC0+bndjcykKKyAJCXsKKy0JCSAgaW50IGMgPSB3bWVtY21wICgod2NoYXJfdCAqKSAoKmVwdHIpLT53Y3MsCistCQkJCSAgICh3Y2hhcl90ICopIHJ1bnAtPndjcywgcnVucC0+bndjcyk7CisrCQkgIGludCBjID0gd21lbWNtcF91aW50MzIgKCgqZXB0ciktPndjcywgcnVucC0+d2NzLCBydW5wLT5ud2NzKTsKKyAKKyAJCSAgaWYgKGMgPT0gMCkKKyAJCSAgICB7CitAQCAtMjAwMCw5ICsxOTk5LDkgQEAgYWRkX3RvX3RhYmxld2MgKHVpbnQzMl90IGNoLCBzdHJ1Y3QgZWxlbWVudF90ICpydW5wKQorIAkgICAgIG9uZSBjb25zZWN1dGl2ZSBlbnRyeS4gICovCisgCSAgaWYgKHJ1bnAtPndjbmV4dCAhPSBOVUxMCisgCSAgICAgICYmIHJ1bnAtPm53Y3MgPT0gcnVucC0+d2NuZXh0LT5ud2NzCistCSAgICAgICYmIHdtZW1jbXAgKCh3Y2hhcl90ICopIHJ1bnAtPndjcywKKy0JCQkgICh3Y2hhcl90ICopcnVucC0+d2NuZXh0LT53Y3MsCistCQkJICBydW5wLT5ud2NzIC0gMSkgPT0gMAorKwkgICAgICAmJiB3bWVtY21wX3VpbnQzMiAocnVucC0+d2NzLAorKwkJCQkgcnVucC0+d2NuZXh0LT53Y3MsCisrCQkJCSBydW5wLT5ud2NzIC0gMSkgPT0gMAorIAkgICAgICAmJiAocnVucC0+d2NzW3J1bnAtPm53Y3MgLSAxXQorIAkJICA9PSBydW5wLT53Y25leHQtPndjc1tydW5wLT5ud2NzIC0gMV0gKyAxKSkKKyAJICAgIHsKK0BAIC0yMDI2LDkgKzIwMjUsOSBAQCBhZGRfdG9fdGFibGV3YyAodWludDMyX3QgY2gsIHN0cnVjdCBlbGVtZW50X3QgKnJ1bnApCisgCQlydW5wID0gcnVucC0+d2NuZXh0OworIAkgICAgICB3aGlsZSAocnVucC0+d2NuZXh0ICE9IE5VTEwKKyAJCSAgICAgJiYgcnVucC0+bndjcyA9PSBydW5wLT53Y25leHQtPm53Y3MKKy0JCSAgICAgJiYgd21lbWNtcCAoKHdjaGFyX3QgKikgcnVucC0+d2NzLAorLQkJCQkgKHdjaGFyX3QgKilydW5wLT53Y25leHQtPndjcywKKy0JCQkJIHJ1bnAtPm53Y3MgLSAxKSA9PSAwCisrCQkgICAgICYmIHdtZW1jbXBfdWludDMyIChydW5wLT53Y3MsCisrCQkJCQlydW5wLT53Y25leHQtPndjcywKKysJCQkJCXJ1bnAtPm53Y3MgLSAxKSA9PSAwCisgCQkgICAgICYmIChydW5wLT53Y3NbcnVucC0+bndjcyAtIDFdCisgCQkJID09IHJ1bnAtPndjbmV4dC0+d2NzW3J1bnAtPm53Y3MgLSAxXSArIDEpKTsKKyAKK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGQtY3R5cGUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jCitpbmRleCAzMzI4MDkzZDBlLi5kNThmYjBmNGI3IDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xkLWN0eXBlLmMKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9sZC1jdHlwZS5jCitAQCAtOTE1LDcgKzkxNSw3IEBAIGN0eXBlX291dHB1dCAoc3RydWN0IGxvY2FsZWRlZl90ICpsb2NhbGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCisgICBhbGxvY2F0ZV9hcnJheXMgKGN0eXBlLCBjaGFybWFwLCBjdHlwZS0+cmVwZXJ0b2lyZSk7CisgCisgICBkZWZhdWx0X21pc3NpbmdfbGVuID0gKGN0eXBlLT5kZWZhdWx0X21pc3NpbmcKKy0JCQkgPyB3Y3NsZW4gKCh3Y2hhcl90ICopIGN0eXBlLT5kZWZhdWx0X21pc3NpbmcpCisrCQkJID8gd2NzbGVuX3VpbnQzMiAoY3R5cGUtPmRlZmF1bHRfbWlzc2luZykKKyAJCQkgOiAwKTsKKyAKKyAgIGluaXRfbG9jYWxlX2RhdGEgKCZmaWxlLCBuZWxlbXMpOworQEAgLTE5MjcsNyArMTkyNyw3IEBAIHJlYWRfdHJhbnNsaXRfZW50cnkgKHN0cnVjdCBsaW5lcmVhZGVyICpsZGZpbGUsIHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsCisgCSAgICBpZ25vcmUgPSAxOworIAkgIGVsc2UKKyAJICAgIC8qIFRoaXMgdmFsdWUgaXMgdXNhYmxlLiAgKi8KKy0JICAgIG9ic3RhY2tfZ3JvdyAob2IsIHRvX3dzdHIsIHdjc2xlbiAoKHdjaGFyX3QgKikgdG9fd3N0cikgKiA0KTsKKysJICAgIG9ic3RhY2tfZ3JvdyAob2IsIHRvX3dzdHIsIHdjc2xlbl91aW50MzIgKHRvX3dzdHIpICogNCk7CisgCisgCSAgZmlyc3QgPSAwOworIAl9CitAQCAtMjQ2MSw4ICsyNDYxLDggQEAgd2l0aCBjaGFyYWN0ZXIgY29kZSByYW5nZSB2YWx1ZXMgb25lIG11c3QgdXNlIHRoZSBhYnNvbHV0ZSBlbGxpcHNpcyBgLi4uJyIpKTsKKyAJICAgIH0KKyAKKyAJaGFuZGxlX3Rva19kaWdpdDoKKy0JICBjbGFzc19iaXQgPSBfSVN3ZGlnaXQ7CistCSAgY2xhc3MyNTZfYml0ID0gX0lTZGlnaXQ7CisrCSAgY2xhc3NfYml0ID0gQklUdyAodG9rX2RpZ2l0KTsKKysJICBjbGFzczI1Nl9iaXQgPSBCSVQgKHRva19kaWdpdCk7CisgCSAgaGFuZGxlX2RpZ2l0cyA9IDE7CisgCSAgZ290byByZWFkX2NoYXJjbGFzczsKKyAKK0BAIC0zOTA0LDggKzM5MDQsNyBAQCBhbGxvY2F0ZV9hcnJheXMgKHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCisgCisgCSAgd2hpbGUgKGlkeCA8IG51bWJlcikKKyAJICAgIHsKKy0JICAgICAgaW50IHJlcyA9IHdjc2NtcCAoKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2lkeF0tPmZyb20sCistCQkJCShjb25zdCB3Y2hhcl90ICopIHJ1bnAtPmZyb20pOworKwkgICAgICBpbnQgcmVzID0gd2NzY21wX3VpbnQzMiAoc29ydGVkW2lkeF0tPmZyb20sIHJ1bnAtPmZyb20pOworIAkgICAgICBpZiAocmVzID09IDApCisgCQl7CisgCQkgIHJlcGxhY2UgPSAxOworQEAgLTM5NDIsMTEgKzM5NDEsMTEgQEAgYWxsb2NhdGVfYXJyYXlzIChzdHJ1Y3QgbG9jYWxlX2N0eXBlX3QgKmN0eXBlLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorICAgICAgIGZvciAoc2l6ZV90IGNudCA9IDA7IGNudCA8IG51bWJlcjsgKytjbnQpCisgCXsKKyAJICBzdHJ1Y3QgdHJhbnNsaXRfdG9fdCAqc3J1bnA7CistCSAgZnJvbV9sZW4gKz0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzb3J0ZWRbY250XS0+ZnJvbSkgKyAxOworKwkgIGZyb21fbGVuICs9IHdjc2xlbl91aW50MzIgKHNvcnRlZFtjbnRdLT5mcm9tKSArIDE7CisgCSAgc3J1bnAgPSBzb3J0ZWRbY250XS0+dG87CisgCSAgd2hpbGUgKHNydW5wICE9IE5VTEwpCisgCSAgICB7CistCSAgICAgIHRvX2xlbiArPSB3Y3NsZW4gKChjb25zdCB3Y2hhcl90ICopIHNydW5wLT5zdHIpICsgMTsKKysJICAgICAgdG9fbGVuICs9IHdjc2xlbl91aW50MzIgKHNydW5wLT5zdHIpICsgMTsKKyAJICAgICAgc3J1bnAgPSBzcnVucC0+bmV4dDsKKyAJICAgIH0KKyAJICAvKiBQbHVzIG9uZSBmb3IgdGhlIGV4dHJhIE5VTCBjaGFyYWN0ZXIgbWFya2luZyB0aGUgZW5kIG9mCitAQCAtMzk3MCwxOCArMzk2OSwxOCBAQCBhbGxvY2F0ZV9hcnJheXMgKHN0cnVjdCBsb2NhbGVfY3R5cGVfdCAqY3R5cGUsIGNvbnN0IHN0cnVjdCBjaGFybWFwX3QgKmNoYXJtYXAsCisgCSAgY3R5cGUtPnRyYW5zbGl0X2Zyb21faWR4W2NudF0gPSBmcm9tX2xlbjsKKyAJICBjdHlwZS0+dHJhbnNsaXRfdG9faWR4W2NudF0gPSB0b19sZW47CisgCistCSAgbGVuID0gd2NzbGVuICgoY29uc3Qgd2NoYXJfdCAqKSBzb3J0ZWRbY250XS0+ZnJvbSkgKyAxOworLQkgIHdtZW1jcHkgKCh3Y2hhcl90ICopICZjdHlwZS0+dHJhbnNsaXRfZnJvbV90YmxbZnJvbV9sZW5dLAorLQkJICAgKGNvbnN0IHdjaGFyX3QgKikgc29ydGVkW2NudF0tPmZyb20sIGxlbik7CisrCSAgbGVuID0gd2NzbGVuX3VpbnQzMiAoc29ydGVkW2NudF0tPmZyb20pICsgMTsKKysJICB3bWVtY3B5X3VpbnQzMiAoJmN0eXBlLT50cmFuc2xpdF9mcm9tX3RibFtmcm9tX2xlbl0sCisrCQkJICBzb3J0ZWRbY250XS0+ZnJvbSwgbGVuKTsKKyAJICBmcm9tX2xlbiArPSBsZW47CisgCisgCSAgY3R5cGUtPnRyYW5zbGl0X3RvX2lkeFtjbnRdID0gdG9fbGVuOworIAkgIHNydW5wID0gc29ydGVkW2NudF0tPnRvOworIAkgIHdoaWxlIChzcnVucCAhPSBOVUxMKQorIAkgICAgeworLQkgICAgICBsZW4gPSB3Y3NsZW4gKChjb25zdCB3Y2hhcl90ICopIHNydW5wLT5zdHIpICsgMTsKKy0JICAgICAgd21lbWNweSAoKHdjaGFyX3QgKikgJmN0eXBlLT50cmFuc2xpdF90b190YmxbdG9fbGVuXSwKKy0JCSAgICAgICAoY29uc3Qgd2NoYXJfdCAqKSBzcnVucC0+c3RyLCBsZW4pOworKwkgICAgICBsZW4gPSB3Y3NsZW5fdWludDMyIChzcnVucC0+c3RyKSArIDE7CisrCSAgICAgIHdtZW1jcHlfdWludDMyICgmY3R5cGUtPnRyYW5zbGl0X3RvX3RibFt0b19sZW5dLAorKwkJCSAgICAgIHNydW5wLT5zdHIsIGxlbik7CisgCSAgICAgIHRvX2xlbiArPSBsZW47CisgCSAgICAgIHNydW5wID0gc3J1bnAtPm5leHQ7CisgCSAgICB9CitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xkLXRpbWUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sZC10aW1lLmMKK2luZGV4IGY3ZGI4NzNhZGIuLmZlYzM3NzNjOWQgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbGQtdGltZS5jCitAQCAtMjIwLDggKzIyMCwxMCBAQCBObyBkZWZpbml0aW9uIGZvciAlcyBjYXRlZ29yeSBmb3VuZCIpLCAiTENfVElNRSIpOworIAl9CisgICAgICAgZWxzZQorIAl7CisrCSAgc3RhdGljIGNvbnN0IHVpbnQzMl90IHd0X2ZtdF9hbXBtW10KKysJICAgID0geyAnJScsJ0knLCc6JywnJScsJ00nLCc6JywnJScsJ1MnLCcgJywnJScsJ3AnLDAgfTsKKyAJICB0aW1lLT50X2ZtdF9hbXBtID0gIiVJOiVNOiVTICVwIjsKKy0JICB0aW1lLT53dF9mbXRfYW1wbSA9IChjb25zdCB1aW50MzJfdCAqKSBMIiVJOiVNOiVTICVwIjsKKysJICB0aW1lLT53dF9mbXRfYW1wbSA9IHd0X2ZtdF9hbXBtOworIAl9CisgICAgIH0KKyAKK0BAIC0yMzEsNyArMjMzLDcgQEAgTm8gZGVmaW5pdGlvbiBmb3IgJXMgY2F0ZWdvcnkgZm91bmQiKSwgIkxDX1RJTUUiKTsKKyAgICAgICBjb25zdCBpbnQgZGF5c19wZXJfbW9udGhbMTJdID0geyAzMSwgMjksIDMxLCAzMCwgMzEsIDMwLAorIAkJCQkgICAgICAgMzEsIDMxLCAzMCwgMzEgLDMwLCAzMSB9OworICAgICAgIHNpemVfdCBpZHg7CistICAgICAgd2NoYXJfdCAqd3N0cjsKKysgICAgICB1aW50MzJfdCAqd3N0cjsKKyAKKyAgICAgICB0aW1lLT5lcmFfZW50cmllcyA9CisgCShzdHJ1Y3QgZXJhX2RhdGEgKikgeG1hbGxvYyAodGltZS0+bnVtX2VyYQorQEAgLTQ1NywxOCArNDU5LDE4IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIik7CisgCSAgICB9CisgCisgCSAgLyogTm93IGdlbmVyYXRlIHRoZSB3aWRlIGNoYXJhY3RlciBuYW1lIGFuZCBmb3JtYXQuICAqLworLQkgIHdzdHIgPSB3Y3NjaHIgKCh3Y2hhcl90ICopIHRpbWUtPndlcmFbaWR4XSwgTCc6Jyk7LyogZW5kIGRpcmVjdGlvbiAqLworLQkgIHdzdHIgPSB3c3RyID8gd2NzY2hyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOwkvKiBlbmQgb2Zmc2V0ICovCistCSAgd3N0ciA9IHdzdHIgPyB3Y3NjaHIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7CS8qIGVuZCBzdGFydCAqLworLQkgIHdzdHIgPSB3c3RyID8gd2NzY2hyICh3c3RyICsgMSwgTCc6JykgOiBOVUxMOwkvKiBlbmQgZW5kICovCisrCSAgd3N0ciA9IHdjc2Nocl91aW50MzIgKHRpbWUtPndlcmFbaWR4XSwgTCc6Jyk7IC8qIGVuZCBkaXJlY3Rpb24gKi8KKysJICB3c3RyID0gd3N0ciA/IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7IC8qIGVuZCBvZmZzZXQgKi8KKysJICB3c3RyID0gd3N0ciA/IHdjc2Nocl91aW50MzIgKHdzdHIgKyAxLCBMJzonKSA6IE5VTEw7IC8qIGVuZCBzdGFydCAqLworKwkgIHdzdHIgPSB3c3RyID8gd2NzY2hyX3VpbnQzMiAod3N0ciArIDEsIEwnOicpIDogTlVMTDsgLyogZW5kIGVuZCAqLworIAkgIGlmICh3c3RyICE9IE5VTEwpCisgCSAgICB7CistCSAgICAgIHRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud25hbWUgPSAodWludDMyX3QgKikgd3N0ciArIDE7CistCSAgICAgIHdzdHIgPSB3Y3NjaHIgKHdzdHIgKyAxLCBMJzonKTsJLyogZW5kIG5hbWUgKi8KKysJICAgICAgdGltZS0+ZXJhX2VudHJpZXNbaWR4XS53bmFtZSA9IHdzdHIgKyAxOworKwkgICAgICB3c3RyID0gd2NzY2hyX3VpbnQzMiAod3N0ciArIDEsIEwnOicpOyAvKiBlbmQgbmFtZSAqLworIAkgICAgICBpZiAod3N0ciAhPSBOVUxMKQorIAkJeworIAkJICAqd3N0ciA9IEwnXDAnOworLQkJICB0aW1lLT5lcmFfZW50cmllc1tpZHhdLndmb3JtYXQgPSAodWludDMyX3QgKikgd3N0ciArIDE7CisrCQkgIHRpbWUtPmVyYV9lbnRyaWVzW2lkeF0ud2Zvcm1hdCA9IHdzdHIgKyAxOworIAkJfQorIAkgICAgICBlbHNlCisgCQl0aW1lLT5lcmFfZW50cmllc1tpZHhdLnduYW1lID0KK0BAIC01MjcsNyArNTI5LDE2IEBAIE5vIGRlZmluaXRpb24gZm9yICVzIGNhdGVnb3J5IGZvdW5kIiksICJMQ19USU1FIik7CisgICBpZiAodGltZS0+ZGF0ZV9mbXQgPT0gTlVMTCkKKyAgICAgdGltZS0+ZGF0ZV9mbXQgPSAiJWEgJWIgJWUgJUg6JU06JVMgJVogJVkiOworICAgaWYgKHRpbWUtPndkYXRlX2ZtdCA9PSBOVUxMKQorLSAgICB0aW1lLT53ZGF0ZV9mbXQgPSAoY29uc3QgdWludDMyX3QgKikgTCIlYSAlYiAlZSAlSDolTTolUyAlWiAlWSI7CisrICAgIHsKKysgICAgICBzdGF0aWMgY29uc3QgdWludDMyX3Qgd2RhdGVfZm10W10gPQorKwl7ICclJywnYScsJyAnLAorKwkgICclJywnYicsJyAnLAorKwkgICclJywnZScsJyAnLAorKwkgICclJywnSCcsJzonLCclJywnTScsJzonLCclJywnUycsJyAnLAorKwkgICclJywnWicsJyAnLAorKwkgICclJywnWScsMCB9OworKyAgICAgIHRpbWUtPndkYXRlX2ZtdCA9IHdkYXRlX2ZtdDsKKysgICAgfQorIH0KKyAKKyAKK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbGluZXJlYWRlci5jIGIvbG9jYWxlL3Byb2dyYW1zL2xpbmVyZWFkZXIuYworaW5kZXggN2ViZDkzMzgwMS4uNTc1Mzc1MDc1NiAxMDA2NDQKKy0tLSBhL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9saW5lcmVhZGVyLmMKK0BAIC01OTUsNyArNTk1LDcgQEAgZ2V0X3N0cmluZyAoc3RydWN0IGxpbmVyZWFkZXIgKmxyLCBjb25zdCBzdHJ1Y3QgY2hhcm1hcF90ICpjaGFybWFwLAorIHsKKyAgIGludCByZXR1cm5fd2lkZXN0ciA9IGxyLT5yZXR1cm5fd2lkZXN0cjsKKyAgIGNoYXIgKmJ1ZjsKKy0gIHdjaGFyX3QgKmJ1ZjIgPSBOVUxMOworKyAgdWludDMyX3QgKmJ1ZjIgPSBOVUxMOworICAgc2l6ZV90IGJ1ZmFjdDsKKyAgIHNpemVfdCBidWZtYXggPSA1NjsKKyAKK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMKK2luZGV4IGRiYmIwMTQ1YzAuLjA5N2E4YjYxOTMgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbG9jYWxlZGVmLmMKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NhbGVkZWYuYworQEAgLTEwOSw2ICsxMDksNyBAQCB2b2lkICgqYXJncF9wcm9ncmFtX3ZlcnNpb25faG9vaykgKEZJTEUgKiwgc3RydWN0IGFyZ3Bfc3RhdGUgKikgPSBwcmludF92ZXJzaW9uOworICNkZWZpbmUgT1BUX05PX1dBUk4gNDAyCisgI2RlZmluZSBPUFRfV0FSTiA0MDMKKyAjZGVmaW5lIE9QVF9OT19IQVJEX0xJTktTIDQwNAorKyNkZWZpbmUgT1BUX1VJTlQzMl9BTElHTiA0MDUKKyAKKyAvKiBEZWZpbml0aW9ucyBvZiBhcmd1bWVudHMgZm9yIGFyZ3AgZnVuY3Rpb25zLiAgKi8KKyBzdGF0aWMgY29uc3Qgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdGlvbnNbXSA9CitAQCAtMTUzLDYgKzE1NCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgYXJncF9vcHRpb24gb3B0aW9uc1tdID0KKyAgICAgTl8oIkdlbmVyYXRlIGxpdHRsZS1lbmRpYW4gb3V0cHV0IikgfSwKKyAgIHsgImJpZy1lbmRpYW4iLCBPUFRfQklHX0VORElBTiwgTlVMTCwgMCwKKyAgICAgTl8oIkdlbmVyYXRlIGJpZy1lbmRpYW4gb3V0cHV0IikgfSwKKysgIHsgInVpbnQzMi1hbGlnbiIsIE9QVF9VSU5UMzJfQUxJR04sICJBTElHTk1FTlQiLCAwLAorKyAgICBOXygiU2V0IHRoZSB0YXJnZXQncyB1aW50MzJfdCBhbGlnbm1lbnQgaW4gYnl0ZXMgKGRlZmF1bHQgNCkiKSB9LAorICAgeyBOVUxMLCAwLCBOVUxMLCAwLCBOVUxMIH0KKyB9OworIAorQEAgLTI0MiwxMiArMjQ1LDE0IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCisgICAgICBjdHlwZSBsb2NhbGUuICAoUDEwMDMuMiA0LjM1LjUuMikgICovCisgICBzZXRsb2NhbGUgKExDX0NUWVBFLCAiUE9TSVgiKTsKKyAKKysjaWZuZGVmIE5PX1NZU0NPTkYKKyAgIC8qIExvb2sgd2hldGhlciB0aGUgc3lzdGVtIHJlYWxseSBhbGxvd3MgbG9jYWxlIGRlZmluaXRpb25zLiAgUE9TSVgKKyAgICAgIGRlZmluZXMgZXJyb3IgY29kZSAzIGZvciB0aGlzIHNpdHVhdGlvbiBzbyBJIHRoaW5rIGl0IG11c3QgYmUKKyAgICAgIGEgZmF0YWwgZXJyb3IgKHNlZSBQMTAwMy4yIDQuMzUuOCkuICAqLworICAgaWYgKHN5c2NvbmYgKF9TQ18yX0xPQ0FMRURFRikgPCAwKQorICAgICByZWNvcmRfZXJyb3IgKDMsIDAsIF8oIlwKKyBGQVRBTDogc3lzdGVtIGRvZXMgbm90IGRlZmluZSBgX1BPU0lYMl9MT0NBTEVERUYnIikpOworKyNlbmRpZgorIAorICAgLyogUHJvY2VzcyBjaGFybWFwIGZpbGUuICAqLworICAgY2hhcm1hcCA9IGNoYXJtYXBfcmVhZCAoY2hhcm1hcF9maWxlLCB2ZXJib3NlLCAxLCBiZV9xdWlldCwgMSk7CitAQCAtMzk5LDYgKzQwNCw5IEBAIHBhcnNlX29wdCAoaW50IGtleSwgY2hhciAqYXJnLCBzdHJ1Y3QgYXJncF9zdGF0ZSAqc3RhdGUpCisgICAgICAgLyogRG8gbm90IGhhcmQgbGluayB0byBvdGhlciBsb2NhbGVzLiAgKi8KKyAgICAgICBoYXJkX2xpbmtzID0gZmFsc2U7CisgICAgICAgYnJlYWs7CisrICAgIGNhc2UgT1BUX1VJTlQzMl9BTElHTjoKKysgICAgICB1aW50MzJfYWxpZ25fbWFzayA9IHN0cnRvbCAoYXJnLCBOVUxMLCAwKSAtIDE7CisrICAgICAgYnJlYWs7CisgICAgIGNhc2UgJ2MnOgorICAgICAgIGZvcmNlX291dHB1dCA9IDE7CisgICAgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmMKK2luZGV4IGViMmY0NjM0ZGEuLmQzODcxNDczMjMgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5jCitAQCAtNTQ0LDYgKzU0NCw5IEBAIGNvbXBhcmVfZmlsZXMgKGNvbnN0IGNoYXIgKmZpbGVuYW1lMSwgY29uc3QgY2hhciAqZmlsZW5hbWUyLCBzaXplX3Qgc2l6ZSwKKyAgICBtYWNoaW5lIHJ1bm5pbmcgbG9jYWxlZGVmLiAgKi8KKyBib29sIHN3YXBfZW5kaWFubmVzc19wOworIAorKy8qIFRoZSB0YXJnZXQncyB2YWx1ZSBvZiBfX2FsaWduX18odWludDMyX3QpIC0gMS4gICovCisrdW5zaWduZWQgaW50IHVpbnQzMl9hbGlnbl9tYXNrID0gMzsKKysKKyAvKiBXaGVuIGNhbGxlZCBvdXRzaWRlIGEgc3RhcnRfbG9jYWxlX3N0cnVjdHVyZS9lbmRfbG9jYWxlX3N0cnVjdHVyZQorICAgIG9yIHN0YXJ0X2xvY2FsZV9wcmVsdWRlL2VuZF9sb2NhbGVfcHJlbHVkZSBibG9jaywgcmVjb3JkIHRoYXQgdGhlCisgICAgbmV4dCBieXRlIGluIEZJTEUncyBvYnN0YWNrIHdpbGwgYmUgdGhlIGZpcnN0IGJ5dGUgb2YgYSBuZXcgZWxlbWVudC4KK0BAIC02MjEsNyArNjI0LDcgQEAgYWRkX2xvY2FsZV9zdHJpbmcgKHN0cnVjdCBsb2NhbGVfZmlsZSAqZmlsZSwgY29uc3QgY2hhciAqc3RyaW5nKQorIHZvaWQKKyBhZGRfbG9jYWxlX3dzdHJpbmcgKHN0cnVjdCBsb2NhbGVfZmlsZSAqZmlsZSwgY29uc3QgdWludDMyX3QgKnN0cmluZykKKyB7CistICBhZGRfbG9jYWxlX3VpbnQzMl9hcnJheSAoZmlsZSwgc3RyaW5nLCB3Y3NsZW4gKChjb25zdCB3Y2hhcl90ICopIHN0cmluZykgKyAxKTsKKysgIGFkZF9sb2NhbGVfdWludDMyX2FycmF5IChmaWxlLCBzdHJpbmcsIHdjc2xlbl91aW50MzIgKHN0cmluZykgKyAxKTsKKyB9CisgCisgLyogUmVjb3JkIHRoYXQgRklMRSdzIG5leHQgZWxlbWVudCBpcyB0aGUgMzItYml0IGludGVnZXIgVkFMVUUuICAqLworZGlmZiAtLWdpdCBhL2xvY2FsZS9wcm9ncmFtcy9sb2NmaWxlLmggYi9sb2NhbGUvcHJvZ3JhbXMvbG9jZmlsZS5oCitpbmRleCA3ZWExMDAzOGI0Li4wODg4YzA5NzYyIDEwMDY0NAorLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaAorKysrIGIvbG9jYWxlL3Byb2dyYW1zL2xvY2ZpbGUuaAorQEAgLTcxLDYgKzcxLDggQEAgZXh0ZXJuIHZvaWQgd3JpdGVfYWxsX2NhdGVnb3JpZXMgKHN0cnVjdCBsb2NhbGVkZWZfdCAqZGVmaW5pdGlvbnMsCisgCisgZXh0ZXJuIGJvb2wgc3dhcF9lbmRpYW5uZXNzX3A7CisgCisrZXh0ZXJuIHVuc2lnbmVkIGludCB1aW50MzJfYWxpZ25fbWFzazsKKysKKyAvKiBDaGFuZ2UgdGhlIG91dHB1dCB0byBiZSBiaWctZW5kaWFuIGlmIEJJR19FTkRJQU4gaXMgdHJ1ZSBhbmQKKyAgICBsaXR0bGUtZW5kaWFuIG90aGVyd2lzZS4gICovCisgc3RhdGljIGlubGluZSB2b2lkCitAQCAtODksNyArOTEsOCBAQCBtYXliZV9zd2FwX3VpbnQzMiAodWludDMyX3QgdmFsdWUpCisgfQorIAorIC8qIExpa2V3aXNlLCBidXQgbXVuZ2UgYW4gYXJyYXkgb2YgTiB1aW50MzJfdHMgc3RhcnRpbmcgYXQgQVJSQVkuICAqLworLXN0YXRpYyBpbmxpbmUgdm9pZAorK3N0YXRpYyB2b2lkCisrX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpCisgbWF5YmVfc3dhcF91aW50MzJfYXJyYXkgKHVpbnQzMl90ICphcnJheSwgc2l6ZV90IG4pCisgeworICAgaWYgKHN3YXBfZW5kaWFubmVzc19wKQorQEAgLTk5LDcgKzEwMiw4IEBAIG1heWJlX3N3YXBfdWludDMyX2FycmF5ICh1aW50MzJfdCAqYXJyYXksIHNpemVfdCBuKQorIAorIC8qIExpa2UgbWF5YmVfc3dhcF91aW50MzJfYXJyYXksIGJ1dCB0aGUgYXJyYXkgb2YgTiBlbGVtZW50cyBpcyBhdAorICAgIHRoZSBlbmQgb2YgT0JTVEFDSydzIGN1cnJlbnQgb2JqZWN0LiAgKi8KKy1zdGF0aWMgaW5saW5lIHZvaWQKKytzdGF0aWMgdm9pZAorK19fYXR0cmlidXRlX18gKCh1bnVzZWQpKQorIG1heWJlX3N3YXBfdWludDMyX29ic3RhY2sgKHN0cnVjdCBvYnN0YWNrICpvYnN0YWNrLCBzaXplX3QgbikKKyB7CisgICBtYXliZV9zd2FwX3VpbnQzMl9hcnJheSAoKHVpbnQzMl90ICopIG9ic3RhY2tfbmV4dF9mcmVlIChvYnN0YWNrKSAtIG4sIG4pOworQEAgLTI3Niw0ICsyODAsNTUgQEAgZXh0ZXJuIHZvaWQgaWRlbnRpZmljYXRpb25fb3V0cHV0IChzdHJ1Y3QgbG9jYWxlZGVmX3QgKmxvY2FsZSwKKyAJCQkJICAgY29uc3Qgc3RydWN0IGNoYXJtYXBfdCAqY2hhcm1hcCwKKyAJCQkJICAgY29uc3QgY2hhciAqb3V0cHV0X3BhdGgpOworIAorK3N0YXRpYyBzaXplX3Qgd2NzbGVuX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnN0cikgX19hdHRyaWJ1dGVfXyAoKHVudXNlZCkpOworK3N0YXRpYyB1aW50MzJfdCAqIHdtZW1jcHlfdWludDMyICh1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMiwgc2l6ZV90IG4pIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKKytzdGF0aWMgdWludDMyX3QgKiB3Y3NjaHJfdWludDMyIChjb25zdCB1aW50MzJfdCAqcywgdWludDMyX3QgY2gpIF9fYXR0cmlidXRlX18gKCh1bnVzZWQpKTsKKytzdGF0aWMgaW50IHdjc2NtcF91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7Cisrc3RhdGljIGludCB3bWVtY21wX3VpbnQzMiAoY29uc3QgdWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKSBfX2F0dHJpYnV0ZV9fICgodW51c2VkKSk7CisrCisrc3RhdGljIHNpemVfdAorK3djc2xlbl91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzdHIpCisreworKyAgc2l6ZV90IGxlbiA9IDA7CisrICB3aGlsZSAoc3RyW2xlbl0gIT0gMCkKKysgICAgbGVuKys7CisrICByZXR1cm4gbGVuOworK30KKysKKytzdGF0aWMgIGludAorK3dtZW1jbXBfdWludDMyIChjb25zdCB1aW50MzJfdCAqczEsIGNvbnN0IHVpbnQzMl90ICpzMiwgc2l6ZV90IG4pCisreworKyAgd2hpbGUgKG4tLSAhPSAwKQorKyAgICB7CisrICAgICAgaW50IGRpZmYgPSAqczErKyAtICpzMisrOworKyAgICAgIGlmIChkaWZmICE9IDApCisrCXJldHVybiBkaWZmOworKyAgICB9CisrICByZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGludAorK3djc2NtcF91aW50MzIgKGNvbnN0IHVpbnQzMl90ICpzMSwgY29uc3QgdWludDMyX3QgKnMyKQorK3sKKysgIHdoaWxlICgqczEgIT0gMCAmJiAqczEgPT0gKnMyKQorKyAgICBzMSsrLCBzMisrOworKyAgcmV0dXJuICpzMSAtICpzMjsKKyt9CisrCisrc3RhdGljIHVpbnQzMl90ICoKKyt3bWVtY3B5X3VpbnQzMiAodWludDMyX3QgKnMxLCBjb25zdCB1aW50MzJfdCAqczIsIHNpemVfdCBuKQorK3sKKysgIHJldHVybiBtZW1jcHkgKHMxLCBzMiwgbiAqIHNpemVvZiAodWludDMyX3QpKTsKKyt9CisrCisrc3RhdGljIHVpbnQzMl90ICoKKyt3Y3NjaHJfdWludDMyIChjb25zdCB1aW50MzJfdCAqcywgdWludDMyX3QgY2gpCisreworKyAgZG8KKysgICAgaWYgKCpzID09IGNoKQorKyAgICAgIHJldHVybiAodWludDMyX3QgKikgczsKKysgIHdoaWxlICgqcysrICE9IDApOworKyAgcmV0dXJuIDA7CisrfQorKworICNlbmRpZiAvKiBsb2NmaWxlLmggKi8KK2RpZmYgLS1naXQgYS9sb2NhbGUvc2V0bG9jYWxlLmMgYi9sb2NhbGUvc2V0bG9jYWxlLmMKK2luZGV4IDAzMGYxNzI3YmQuLjA5NmQ4ZWQ4OTUgMTAwNjQ0CistLS0gYS9sb2NhbGUvc2V0bG9jYWxlLmMKKysrKyBiL2xvY2FsZS9zZXRsb2NhbGUuYworQEAgLTYzLDM1ICs2Myw2IEBAIHN0YXRpYyBjaGFyICpjb25zdCBfbmxfY3VycmVudF91c2VkW10gPQorIAorICNlbmRpZgorIAorLQorLS8qIERlZmluZSBhbiBhcnJheSBvZiBjYXRlZ29yeSBuYW1lcyAoYWxzbyB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUgbmFtZXMpLiAgKi8KKy1jb25zdCBzdHJ1Y3QgY2F0bmFtZXN0cl90IF9ubF9jYXRlZ29yeV9uYW1lcyBhdHRyaWJ1dGVfaGlkZGVuID0KKy0gIHsKKy0jZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKKy0gICAgY2F0ZWdvcnlfbmFtZSwKKy0jaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCistI3VuZGVmIERFRklORV9DQVRFR09SWQorLSAgfTsKKy0KKy1jb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX2lkeHNbX19MQ19MQVNUXSBhdHRyaWJ1dGVfaGlkZGVuID0KKy0gIHsKKy0jZGVmaW5lIERFRklORV9DQVRFR09SWShjYXRlZ29yeSwgY2F0ZWdvcnlfbmFtZSwgaXRlbXMsIGEpIFwKKy0gICAgW2NhdGVnb3J5XSA9IG9mZnNldG9mIChzdHJ1Y3QgY2F0bmFtZXN0cl90LCBDQVROQU1FTUYgKF9fTElORV9fKSksCistI2luY2x1ZGUgImNhdGVnb3JpZXMuZGVmIgorLSN1bmRlZiBERUZJTkVfQ0FURUdPUlkKKy0gIH07CistCistLyogQW4gYXJyYXkgb2YgdGhlaXIgbGVuZ3RocywgZm9yIGNvbnZlbmllbmNlLiAgKi8KKy1jb25zdCB1aW50OF90IF9ubF9jYXRlZ29yeV9uYW1lX3NpemVzW10gYXR0cmlidXRlX2hpZGRlbiA9CistICB7CistI2RlZmluZSBERUZJTkVfQ0FURUdPUlkoY2F0ZWdvcnksIGNhdGVnb3J5X25hbWUsIGl0ZW1zLCBhKSBcCistICAgIFtjYXRlZ29yeV0gPSBzaXplb2YgKGNhdGVnb3J5X25hbWUpIC0gMSwKKy0jaW5jbHVkZSAiY2F0ZWdvcmllcy5kZWYiCistI3VuZGVmCURFRklORV9DQVRFR09SWQorLSAgICBbTENfQUxMXSA9IHNpemVvZiAoIkxDX0FMTCIpIC0gMQorLSAgfTsKKy0KKy0KKyAjaWZkZWYgTkxfQ1VSUkVOVF9JTkRJUkVDVAorICMgZGVmaW5lIFdFQUtfUE9TVExPQUQocG9zdGxvYWQpIHdlYWtfZXh0ZXJuIChwb3N0bG9hZCkKKyAjZWxzZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI0LURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVlNDYwZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSAwNjdmNzFhMzgxY2U2NjI2ZWYxMTc5YmUzZGQ5MGM0ZWQyYWE1MmZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjAgQXByIDIwMTYgMjE6MTE6MDAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gRGVmaW5lIERVTU1ZX0xPQ0FMRV9UIGlmIG5vdCBkZWZpbmVkCisKK1RoaXMgaXMgYSBoYWNrIHRvIGZpeCBidWlsZGluZyB0aGUgbG9jYWxlIGJpdHMgb24gYW4gb2xkZXIKK0NlbnRPcyA1LlggbWFjaGluZQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW290aGVyXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbG9jYWxlL3Byb2dyYW1zL2NvbmZpZy5oIHwgMyArKysKKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmggYi9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKK2luZGV4IGQ3NmQ5ZjdlOGIuLjkyYjU2ZDdkZjMgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvY29uZmlnLmgKKysrKyBiL2xvY2FsZS9wcm9ncmFtcy9jb25maWcuaAorQEAgLTE5LDYgKzE5LDkgQEAKKyAjaWZuZGVmIF9MRF9DT05GSUdfSAorICNkZWZpbmUgX0xEX0NPTkZJR19ICTEKKyAKKysjaWZuZGVmIERVTU1ZX0xPQ0FMRV9UCisrI2RlZmluZSBEVU1NWV9MT0NBTEVfVAorKyNlbmRpZgorIC8qIFVzZSB0aGUgaW50ZXJuYWwgdGV4dGRvbWFpbiB1c2VkIGZvciBsaWJjIG1lc3NhZ2VzLiAgKi8KKyAjZGVmaW5lIFBBQ0tBR0UgX2xpYmNfaW50bF9kb21haW5uYW1lCisgI2lmbmRlZiBWRVJTSU9OCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjQtbG9jYWxlZGVmLWFkZC10by1hcmNoaXZlLXVzZXMtYS1oYXJkLWNvZGVkLWxvY2FsZS1wYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1sb2NhbGVkZWYtYWRkLXRvLWFyY2hpdmUtdXNlcy1hLWhhcmQtY29kZWQtbG9jYWxlLXBhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjhlNGY0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNC1sb2NhbGVkZWYtYWRkLXRvLWFyY2hpdmUtdXNlcy1hLWhhcmQtY29kZWQtbG9jYWxlLXBhLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODQgKzAsMCBAQAotRnJvbSBjMTNlMThhZGI2MzRhNmZkNTkxMjkxNTBhYjdmOTQ2OGY2NGRjOTMxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMyBBdWcgMjAxOCAwOTo0MjowNiAtMDcwMAotU3ViamVjdDogW1BBVENIIDI0LzI4XSBsb2NhbGVkZWYgLS1hZGQtdG8tYXJjaGl2ZSB1c2VzIGEgaGFyZC1jb2RlZCBsb2NhbGUKLSBwYXRoCi0KLWl0IGRvZXNuJ3QgZXhpc3QgaW4gbm9ybWFsIHVzZSwgYW5kIHRoZXJlJ3Mgbm8gd2F5IHRvIHBhc3MgYW4KLWFsdGVybmF0aXZlIGZpbGVuYW1lLgotCi1BZGQgYSBmYWxsYmFjayBvZiAkTE9DQUxFQVJDSElWRSBmcm9tIHRoZSBlbnZpcm9ubWVudCwgYW5kIGFsbG93Ci1jcmVhdGlvbiBvZiBuZXcgbG9jYWxlIGFyY2hpdmVzIHRoYXQgYXJlIG5vdCB0aGUgc3lzdGVtIGFyY2hpdmUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSAoT0Utc3BlY2lmaWMpCi0KLVNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbG9jYWxlL3Byb2dyYW1zL2xvY2FyY2hpdmUuYyB8IDM1ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FyY2hpdmUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMKLWluZGV4IGU2MzEwYjE4YmUuLmY1NGE3NmVhZGUgMTAwNjQ0Ci0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbG9jYXJjaGl2ZS5jCi0rKysgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYXJjaGl2ZS5jCi1AQCAtMzQwLDEyICszNDAsMjQgQEAgZW5sYXJnZV9hcmNoaXZlIChzdHJ1Y3QgbG9jYXJoYW5kbGUgKmFoLCBjb25zdCBzdHJ1Y3QgbG9jYXJoZWFkICpoZWFkKQotICAgc3RydWN0IG5hbWVoYXNoZW50ICpvbGRuYW1laGFzaHRhYjsKLSAgIHN0cnVjdCBsb2NhcmhhbmRsZSBuZXdfYWg7Ci0gICBzaXplX3QgcHJlZml4X2xlbiA9IG91dHB1dF9wcmVmaXggPyBzdHJsZW4gKG91dHB1dF9wcmVmaXgpIDogMDsKLS0gIGNoYXIgYXJjaGl2ZWZuYW1lW3ByZWZpeF9sZW4gKyBzaXplb2YgKEFSQ0hJVkVfTkFNRSldOwotLSAgY2hhciBmbmFtZVtwcmVmaXhfbGVuICsgc2l6ZW9mIChBUkNISVZFX05BTUUpICsgc2l6ZW9mICgiLlhYWFhYWCIpIC0gMV07Ci0rICBjaGFyICphcmNoaXZlZm5hbWU7Ci0rICBjaGFyICpmbmFtZTsKLSsgIGNoYXIgKmVudmFyY2hpdmUgPSBnZXRlbnYoIkxPQ0FMRUFSQ0hJVkUiKTsKLSAKLS0gIGlmIChvdXRwdXRfcHJlZml4KQotLSAgICBtZW1jcHkgKGFyY2hpdmVmbmFtZSwgb3V0cHV0X3ByZWZpeCwgcHJlZml4X2xlbik7Ci0tICBzdHJjcHkgKGFyY2hpdmVmbmFtZSArIHByZWZpeF9sZW4sIEFSQ0hJVkVfTkFNRSk7Ci0rICBpZiAoZW52YXJjaGl2ZSAhPSBOVUxMKQotKyAgICB7Ci0rICAgICAgYXJjaGl2ZWZuYW1lID0geG1hbGxvYyhzdHJsZW4oZW52YXJjaGl2ZSkgKyAxKTsKLSsgICAgICBmbmFtZSA9IHhtYWxsb2Moc3RybGVuKGVudmFyY2hpdmUpICsgc2l6ZW9mICgiLlhYWFhYWCIpKTsKLSsgICAgICBzdHJjcHkgKGFyY2hpdmVmbmFtZSwgZW52YXJjaGl2ZSk7Ci0rICAgIH0KLSsgIGVsc2UKLSsgICAgewotKyAgICAgIGFyY2hpdmVmbmFtZSA9IHhtYWxsb2MocHJlZml4X2xlbiArIHNpemVvZiAoQVJDSElWRV9OQU1FKSk7Ci0rICAgICAgZm5hbWUgPSB4bWFsbG9jKHByZWZpeF9sZW4gKyBzaXplb2YgKEFSQ0hJVkVfTkFNRSkgKyBzaXplb2YgKCIuWFhYWFhYIikgLSAxKTsKLSsgICAgICBpZiAob3V0cHV0X3ByZWZpeCkKLSsgICAgICAgIG1lbWNweSAoYXJjaGl2ZWZuYW1lLCBvdXRwdXRfcHJlZml4LCBwcmVmaXhfbGVuKTsKLSsgICAgICBzdHJjcHkgKGFyY2hpdmVmbmFtZSArIHByZWZpeF9sZW4sIEFSQ0hJVkVfTkFNRSk7Ci0rICAgIH0KLSAgIHN0cmNweSAoc3RwY3B5IChmbmFtZSwgYXJjaGl2ZWZuYW1lKSwgIi5YWFhYWFgiKTsKLSAKLSAgIC8qIE5vdCBhbGwgb2YgdGhlIG9sZCBmaWxlIGhhcyB0byBiZSBtYXBwZWQuICBDaGFuZ2UgdGhpcyBub3cgdGhpcwotQEAgLTU2OSwxMCArNTgxLDEzIEBAIG9wZW5fYXJjaGl2ZSAoc3RydWN0IGxvY2FyaGFuZGxlICphaCwgYm9vbCByZWFkb25seSkKLSAgIC8qIElmIGFoIGhhcyBhIG5vbi1OVUxMIGZuYW1lIG9wZW4gdGhhdCBvdGhlcndpc2Ugb3BlbiB0aGUgZGVmYXVsdC4gICovCi0gICBpZiAoYXJjaGl2ZWZuYW1lID09IE5VTEwpCi0gICAgIHsKLS0gICAgICBhcmNoaXZlZm5hbWUgPSBkZWZhdWx0X2ZuYW1lOwotLSAgICAgIGlmIChvdXRwdXRfcHJlZml4KQotLSAgICAgICAgbWVtY3B5IChkZWZhdWx0X2ZuYW1lLCBvdXRwdXRfcHJlZml4LCBwcmVmaXhfbGVuKTsKLS0gICAgICBzdHJjcHkgKGRlZmF1bHRfZm5hbWUgKyBwcmVmaXhfbGVuLCBBUkNISVZFX05BTUUpOwotKyAgICAgIGFyY2hpdmVmbmFtZSA9IGdldGVudigiTE9DQUxFQVJDSElWRSIpOwotKyAgICAgIGlmIChhcmNoaXZlZm5hbWUgPT0gTlVMTCkgewotKyAgICAgICAgICAgICAgYXJjaGl2ZWZuYW1lID0gZGVmYXVsdF9mbmFtZTsKLSsgICAgICAgICAgICAgIGlmIChvdXRwdXRfcHJlZml4KQotKyAgICAgICAgICAgICAgICBtZW1jcHkgKGRlZmF1bHRfZm5hbWUsIG91dHB1dF9wcmVmaXgsIHByZWZpeF9sZW4pOwotKyAgICAgICAgICAgICAgc3RyY3B5IChkZWZhdWx0X2ZuYW1lICsgcHJlZml4X2xlbiwgQVJDSElWRV9OQU1FKTsKLSsgICAgICB9Ci0gICAgIH0KLSAKLSAgIHdoaWxlICgxKQotQEAgLTU4NSw3ICs2MDAsNyBAQCBvcGVuX2FyY2hpdmUgKHN0cnVjdCBsb2NhcmhhbmRsZSAqYWgsIGJvb2wgcmVhZG9ubHkpCi0gCSAgICAgdGhlIGRlZmF1bHQgbG9jYWxlIGFyY2hpdmUgd2UgaWdub3JlIHRoZSBmYWlsdXJlIGFuZAotIAkgICAgIGxpc3QgYW4gZW1wdHkgYXJjaGl2ZSwgb3RoZXJ3aXNlIHdlIHByaW50IGFuIGVycm9yCi0gCSAgICAgYW5kIGV4aXQuICAqLwotLQkgIGlmIChlcnJubyA9PSBFTk9FTlQgJiYgYXJjaGl2ZWZuYW1lID09IGRlZmF1bHRfZm5hbWUpCi0rCSAgaWYgKGVycm5vID09IEVOT0VOVCkKLSAJICAgIHsKLSAJICAgICAgaWYgKHJlYWRvbmx5KQotIAkJewotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI1LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjUtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzZhOWViMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjUtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLUZyb20gN2M5ZWJlOTY2YmI5N2RkMTRkZTU3MTk5MDViNjEzMTEyMTFhZTNjOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMTggQXVnIDIwMTYgMTQ6MDc6NTggLTA1MDAKLVN1YmplY3Q6IFtQQVRDSCAyNS8yOF0gZWxmL2RsLWRlcHMuYzogTWFrZSBfZGxfYnVpbGRfbG9jYWxfc2NvcGUgYnJlYWR0aCBmaXJzdAotCi1BY2NvcmRpbmcgdG8gdGhlIEVMRiBzcGVjaWZpY2F0aW9uOgotCi1XaGVuIHJlc29sdmluZyBzeW1ib2xpYyByZWZlcmVuY2VzLCB0aGUgZHluYW1pYyBsaW5rZXIgZXhhbWluZXMgdGhlIHN5bWJvbAotdGFibGVzIHdpdGggYSBicmVhZHRoLWZpcnN0IHNlYXJjaC4KLQotVGhpcyBmdW5jdGlvbiB3YXMgdXNpbmcgYSBkZXB0aCBmaXJzdCBzZWFyY2guICBCeSBkb2luZyBzbyB0aGUgY29uZmxpY3QKLXJlc29sdXRpb24gcmVwb3J0ZWQgdG8gdGhlIHByZWxpbmtlciAod2hlbiBMRF9UUkFDRV9QUkVMSU5LSU5HPTEgaXMgc2V0KQotd2FzIGluY29ycmVjdC4gIFRoaXMgY2F1c2VkIHByb2JsZW1zIHdoZW4gdGhlaXIgd2VyZSB2YXJpb3VzIGNpcmN1bGFyCi1kZXBlbmRlbmNpZXMgYmV0d2VlbiBsaWJyYXJpZXMuICBUaGUgcHJvYmxlbSB1c3VhbGx5IG1hbmlmZXN0ZWQgaXRzZWxmIGJ5Ci10aGUgd3JvbmcgSUZVTkMgYmVpbmcgZXhlY3V0ZWQuCi0KLVtCWiMgMjA0ODhdCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtsaWJjLWFscGhhXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBlbGYvZGwtZGVwcy5jIHwgMTQgKysrKysrKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2VsZi9kbC1kZXBzLmMgYi9lbGYvZGwtZGVwcy5jCi1pbmRleCBlMTJjMzUzMTU4Li45MjM0ZGFhYzA1IDEwMDY0NAotLS0tIGEvZWxmL2RsLWRlcHMuYwotKysrIGIvZWxmL2RsLWRlcHMuYwotQEAgLTczLDEzICs3MywxOSBAQCBfZGxfYnVpbGRfbG9jYWxfc2NvcGUgKHN0cnVjdCBsaW5rX21hcCAqKmxpc3QsIHN0cnVjdCBsaW5rX21hcCAqbWFwKQotIHsKLSAgIHN0cnVjdCBsaW5rX21hcCAqKnAgPSBsaXN0OwotICAgc3RydWN0IGxpbmtfbWFwICoqcTsKLSsgIHN0cnVjdCBsaW5rX21hcCAqKnI7Ci0gCi0gICAqcCsrID0gbWFwOwotICAgbWFwLT5sX3Jlc2VydmVkID0gMTsKLS0gIGlmIChtYXAtPmxfaW5pdGZpbmkpCi0tICAgIGZvciAocSA9IG1hcC0+bF9pbml0ZmluaSArIDE7ICpxOyArK3EpCi0tICAgICAgaWYgKCEgKCpxKS0+bF9yZXNlcnZlZCkKLS0JcCArPSBfZGxfYnVpbGRfbG9jYWxfc2NvcGUgKHAsICpxKTsKLSsKLSsgIGZvciAociA9IGxpc3Q7IHIgPCBwOyArK3IpCi0rICAgIGlmICgoKnIpLT5sX2luaXRmaW5pKQotKyAgICAgIGZvciAocSA9ICgqciktPmxfaW5pdGZpbmkgKyAxOyAqcTsgKytxKQotKwlpZiAoISAoKnEpLT5sX3Jlc2VydmVkKQotKwkgIHsKLSsJICAgICpwKysgPSAqcTsKLSsJICAgICgqcSktPmxfcmVzZXJ2ZWQgPSAxOwotKwkgIH0KLSAgIHJldHVybiBwIC0gbGlzdDsKLSB9Ci0gCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjUtbG9jYWxlZGVmLWFkZC10by1hcmNoaXZlLXVzZXMtYS1oYXJkLWNvZGVkLWxvY2FsZS1wYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNS1sb2NhbGVkZWYtYWRkLXRvLWFyY2hpdmUtdXNlcy1hLWhhcmQtY29kZWQtbG9jYWxlLXBhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU0M2Y2NWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjUtbG9jYWxlZGVmLWFkZC10by1hcmNoaXZlLXVzZXMtYS1oYXJkLWNvZGVkLWxvY2FsZS1wYS5wYXRjaApAQCAtMCwwICsxLDgwIEBACitGcm9tIDhmNGIwYmFjODVkMTRiMTg0ZTA4ODQ4YjAyZGUzZjMwNzc1ZjA1YjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAzIEF1ZyAyMDE4IDA5OjQyOjA2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGxvY2FsZWRlZiAtLWFkZC10by1hcmNoaXZlIHVzZXMgYSBoYXJkLWNvZGVkIGxvY2FsZSBwYXRoCisKK2l0IGRvZXNuJ3QgZXhpc3QgaW4gbm9ybWFsIHVzZSwgYW5kIHRoZXJlJ3Mgbm8gd2F5IHRvIHBhc3MgYW4KK2FsdGVybmF0aXZlIGZpbGVuYW1lLgorCitBZGQgYSBmYWxsYmFjayBvZiAkTE9DQUxFQVJDSElWRSBmcm9tIHRoZSBlbnZpcm9ubWVudCwgYW5kIGFsbG93CitjcmVhdGlvbiBvZiBuZXcgbG9jYWxlIGFyY2hpdmVzIHRoYXQgYXJlIG5vdCB0aGUgc3lzdGVtIGFyY2hpdmUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSAoT0Utc3BlY2lmaWMpCisKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbG9jYWxlL3Byb2dyYW1zL2xvY2FyY2hpdmUuYyB8IDM1ICsrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDI1IGluc2VydGlvbnMoKyksIDEwIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbG9jYWxlL3Byb2dyYW1zL2xvY2FyY2hpdmUuYyBiL2xvY2FsZS9wcm9ncmFtcy9sb2NhcmNoaXZlLmMKK2luZGV4IGRjY2FmMDRlM2IuLmFlMGI3ZmUxNTUgMTAwNjQ0CistLS0gYS9sb2NhbGUvcHJvZ3JhbXMvbG9jYXJjaGl2ZS5jCisrKysgYi9sb2NhbGUvcHJvZ3JhbXMvbG9jYXJjaGl2ZS5jCitAQCAtMzQwLDEyICszNDAsMjQgQEAgZW5sYXJnZV9hcmNoaXZlIChzdHJ1Y3QgbG9jYXJoYW5kbGUgKmFoLCBjb25zdCBzdHJ1Y3QgbG9jYXJoZWFkICpoZWFkKQorICAgc3RydWN0IG5hbWVoYXNoZW50ICpvbGRuYW1laGFzaHRhYjsKKyAgIHN0cnVjdCBsb2NhcmhhbmRsZSBuZXdfYWg7CisgICBzaXplX3QgcHJlZml4X2xlbiA9IG91dHB1dF9wcmVmaXggPyBzdHJsZW4gKG91dHB1dF9wcmVmaXgpIDogMDsKKy0gIGNoYXIgYXJjaGl2ZWZuYW1lW3ByZWZpeF9sZW4gKyBzaXplb2YgKEFSQ0hJVkVfTkFNRSldOworLSAgY2hhciBmbmFtZVtwcmVmaXhfbGVuICsgc2l6ZW9mIChBUkNISVZFX05BTUUpICsgc2l6ZW9mICgiLlhYWFhYWCIpIC0gMV07CisrICBjaGFyICphcmNoaXZlZm5hbWU7CisrICBjaGFyICpmbmFtZTsKKysgIGNoYXIgKmVudmFyY2hpdmUgPSBnZXRlbnYoIkxPQ0FMRUFSQ0hJVkUiKTsKKyAKKy0gIGlmIChvdXRwdXRfcHJlZml4KQorLSAgICBtZW1jcHkgKGFyY2hpdmVmbmFtZSwgb3V0cHV0X3ByZWZpeCwgcHJlZml4X2xlbik7CistICBzdHJjcHkgKGFyY2hpdmVmbmFtZSArIHByZWZpeF9sZW4sIEFSQ0hJVkVfTkFNRSk7CisrICBpZiAoZW52YXJjaGl2ZSAhPSBOVUxMKQorKyAgICB7CisrICAgICAgYXJjaGl2ZWZuYW1lID0geG1hbGxvYyhzdHJsZW4oZW52YXJjaGl2ZSkgKyAxKTsKKysgICAgICBmbmFtZSA9IHhtYWxsb2Moc3RybGVuKGVudmFyY2hpdmUpICsgc2l6ZW9mICgiLlhYWFhYWCIpKTsKKysgICAgICBzdHJjcHkgKGFyY2hpdmVmbmFtZSwgZW52YXJjaGl2ZSk7CisrICAgIH0KKysgIGVsc2UKKysgICAgeworKyAgICAgIGFyY2hpdmVmbmFtZSA9IHhtYWxsb2MocHJlZml4X2xlbiArIHNpemVvZiAoQVJDSElWRV9OQU1FKSk7CisrICAgICAgZm5hbWUgPSB4bWFsbG9jKHByZWZpeF9sZW4gKyBzaXplb2YgKEFSQ0hJVkVfTkFNRSkgKyBzaXplb2YgKCIuWFhYWFhYIikgLSAxKTsKKysgICAgICBpZiAob3V0cHV0X3ByZWZpeCkKKysgICAgICAgIG1lbWNweSAoYXJjaGl2ZWZuYW1lLCBvdXRwdXRfcHJlZml4LCBwcmVmaXhfbGVuKTsKKysgICAgICBzdHJjcHkgKGFyY2hpdmVmbmFtZSArIHByZWZpeF9sZW4sIEFSQ0hJVkVfTkFNRSk7CisrICAgIH0KKyAgIHN0cmNweSAoc3RwY3B5IChmbmFtZSwgYXJjaGl2ZWZuYW1lKSwgIi5YWFhYWFgiKTsKKyAKKyAgIC8qIE5vdCBhbGwgb2YgdGhlIG9sZCBmaWxlIGhhcyB0byBiZSBtYXBwZWQuICBDaGFuZ2UgdGhpcyBub3cgdGhpcworQEAgLTU2OSwxMCArNTgxLDEzIEBAIG9wZW5fYXJjaGl2ZSAoc3RydWN0IGxvY2FyaGFuZGxlICphaCwgYm9vbCByZWFkb25seSkKKyAgIC8qIElmIGFoIGhhcyBhIG5vbi1OVUxMIGZuYW1lIG9wZW4gdGhhdCBvdGhlcndpc2Ugb3BlbiB0aGUgZGVmYXVsdC4gICovCisgICBpZiAoYXJjaGl2ZWZuYW1lID09IE5VTEwpCisgICAgIHsKKy0gICAgICBhcmNoaXZlZm5hbWUgPSBkZWZhdWx0X2ZuYW1lOworLSAgICAgIGlmIChvdXRwdXRfcHJlZml4KQorLSAgICAgICAgbWVtY3B5IChkZWZhdWx0X2ZuYW1lLCBvdXRwdXRfcHJlZml4LCBwcmVmaXhfbGVuKTsKKy0gICAgICBzdHJjcHkgKGRlZmF1bHRfZm5hbWUgKyBwcmVmaXhfbGVuLCBBUkNISVZFX05BTUUpOworKyAgICAgIGFyY2hpdmVmbmFtZSA9IGdldGVudigiTE9DQUxFQVJDSElWRSIpOworKyAgICAgIGlmIChhcmNoaXZlZm5hbWUgPT0gTlVMTCkgeworKyAgICAgICAgICAgICAgYXJjaGl2ZWZuYW1lID0gZGVmYXVsdF9mbmFtZTsKKysgICAgICAgICAgICAgIGlmIChvdXRwdXRfcHJlZml4KQorKyAgICAgICAgICAgICAgICBtZW1jcHkgKGRlZmF1bHRfZm5hbWUsIG91dHB1dF9wcmVmaXgsIHByZWZpeF9sZW4pOworKyAgICAgICAgICAgICAgc3RyY3B5IChkZWZhdWx0X2ZuYW1lICsgcHJlZml4X2xlbiwgQVJDSElWRV9OQU1FKTsKKysgICAgICB9CisgICAgIH0KKyAKKyAgIHdoaWxlICgxKQorQEAgLTU4NSw3ICs2MDAsNyBAQCBvcGVuX2FyY2hpdmUgKHN0cnVjdCBsb2NhcmhhbmRsZSAqYWgsIGJvb2wgcmVhZG9ubHkpCisgCSAgICAgdGhlIGRlZmF1bHQgbG9jYWxlIGFyY2hpdmUgd2UgaWdub3JlIHRoZSBmYWlsdXJlIGFuZAorIAkgICAgIGxpc3QgYW4gZW1wdHkgYXJjaGl2ZSwgb3RoZXJ3aXNlIHdlIHByaW50IGFuIGVycm9yCisgCSAgICAgYW5kIGV4aXQuICAqLworLQkgIGlmIChlcnJubyA9PSBFTk9FTlQgJiYgYXJjaGl2ZWZuYW1lID09IGRlZmF1bHRfZm5hbWUpCisrCSAgaWYgKGVycm5vID09IEVOT0VOVCkKKyAJICAgIHsKKyAJICAgICAgaWYgKHJlYWRvbmx5KQorIAkJewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjYtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjZlZTQwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LWVsZi1kbC1kZXBzLmMtTWFrZS1fZGxfYnVpbGRfbG9jYWxfc2NvcGUtYnJlYWR0aC1maXIucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSAxZGFkNzQ2Y2U5MzkyOGE1N2IyZmU2MThjNzQ3MjJmNzEwNzUxODI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxOCBBdWcgMjAxNiAxNDowNzo1OCAtMDUwMAorU3ViamVjdDogW1BBVENIXSBlbGYvZGwtZGVwcy5jOiBNYWtlIF9kbF9idWlsZF9sb2NhbF9zY29wZSBicmVhZHRoIGZpcnN0CisKK0FjY29yZGluZyB0byB0aGUgRUxGIHNwZWNpZmljYXRpb246CisKK1doZW4gcmVzb2x2aW5nIHN5bWJvbGljIHJlZmVyZW5jZXMsIHRoZSBkeW5hbWljIGxpbmtlciBleGFtaW5lcyB0aGUgc3ltYm9sCit0YWJsZXMgd2l0aCBhIGJyZWFkdGgtZmlyc3Qgc2VhcmNoLgorCitUaGlzIGZ1bmN0aW9uIHdhcyB1c2luZyBhIGRlcHRoIGZpcnN0IHNlYXJjaC4gIEJ5IGRvaW5nIHNvIHRoZSBjb25mbGljdAorcmVzb2x1dGlvbiByZXBvcnRlZCB0byB0aGUgcHJlbGlua2VyICh3aGVuIExEX1RSQUNFX1BSRUxJTktJTkc9MSBpcyBzZXQpCit3YXMgaW5jb3JyZWN0LiAgVGhpcyBjYXVzZWQgcHJvYmxlbXMgd2hlbiB0aGVpciB3ZXJlIHZhcmlvdXMgY2lyY3VsYXIKK2RlcGVuZGVuY2llcyBiZXR3ZWVuIGxpYnJhcmllcy4gIFRoZSBwcm9ibGVtIHVzdWFsbHkgbWFuaWZlc3RlZCBpdHNlbGYgYnkKK3RoZSB3cm9uZyBJRlVOQyBiZWluZyBleGVjdXRlZC4KKworW0JaIyAyMDQ4OF0KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2xpYmMtYWxwaGFdCisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KKy0tLQorIGVsZi9kbC1kZXBzLmMgfCAxNCArKysrKysrKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZWxmL2RsLWRlcHMuYyBiL2VsZi9kbC1kZXBzLmMKK2luZGV4IDUxMDNhOGExMTEuLjU0Y2Q4MGFhZmYgMTAwNjQ0CistLS0gYS9lbGYvZGwtZGVwcy5jCisrKysgYi9lbGYvZGwtZGVwcy5jCitAQCAtNzMsMTMgKzczLDE5IEBAIF9kbF9idWlsZF9sb2NhbF9zY29wZSAoc3RydWN0IGxpbmtfbWFwICoqbGlzdCwgc3RydWN0IGxpbmtfbWFwICptYXApCisgeworICAgc3RydWN0IGxpbmtfbWFwICoqcCA9IGxpc3Q7CisgICBzdHJ1Y3QgbGlua19tYXAgKipxOworKyAgc3RydWN0IGxpbmtfbWFwICoqcjsKKyAKKyAgICpwKysgPSBtYXA7CisgICBtYXAtPmxfcmVzZXJ2ZWQgPSAxOworLSAgaWYgKG1hcC0+bF9pbml0ZmluaSkKKy0gICAgZm9yIChxID0gbWFwLT5sX2luaXRmaW5pICsgMTsgKnE7ICsrcSkKKy0gICAgICBpZiAoISAoKnEpLT5sX3Jlc2VydmVkKQorLQlwICs9IF9kbF9idWlsZF9sb2NhbF9zY29wZSAocCwgKnEpOworKworKyAgZm9yIChyID0gbGlzdDsgciA8IHA7ICsrcikKKysgICAgaWYgKCgqciktPmxfaW5pdGZpbmkpCisrICAgICAgZm9yIChxID0gKCpyKS0+bF9pbml0ZmluaSArIDE7ICpxOyArK3EpCisrCWlmICghICgqcSktPmxfcmVzZXJ2ZWQpCisrCSAgeworKwkgICAgKnArKyA9ICpxOworKwkgICAgKCpxKS0+bF9yZXNlcnZlZCA9IDE7CisrCSAgfQorICAgcmV0dXJuIHAgLSBsaXN0OworIH0KKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNi1pbnRsLUVtaXQtbm8tbGluZXMtaW4tYmlzb24tZ2VuZXJhdGVkLWZpbGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LWludGwtRW1pdC1uby1saW5lcy1pbi1iaXNvbi1nZW5lcmF0ZWQtZmlsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc1ODllMTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI2LWludGwtRW1pdC1uby1saW5lcy1pbi1iaXNvbi1nZW5lcmF0ZWQtZmlsZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGFhNWM3NThmYmI3ZGJiMDI2ZGYzM2ZjNmJkYzA1NTQ4NTQ3YmRiMTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAzIEF1ZyAyMDE4IDA5OjQ0OjAwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMjYvMjhdIGludGw6IEVtaXQgbm8gbGluZXMgaW4gYmlzb24gZ2VuZXJhdGVkIGZpbGVzCi0KLUltcHJvdmUgcmVwcm9kdWNpYmlsaXR5OgotRG8gbm90IHB1dCBhbnkgI2xpbmUgcHJlcHJvY2Vzc29yIGNvbW1hbmRzIGluIGJpc29uIGdlbmVyYXRlZCBmaWxlcy4KLVRoZXNlIGxpbmVzIGNvbnRhaW4gYWJzb2x1dGUgcGF0aHMgY29udGFpbmluZyBmaWxlIGxvY2F0aW9ucyBvbgotdGhlIGhvc3QgYnVpbGQgbWFjaGluZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gaW50bC9NYWtlZmlsZSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2ludGwvTWFrZWZpbGUgYi9pbnRsL01ha2VmaWxlCi1pbmRleCA5ZWVhOGQ1N2UzLi42MjdkY2U0Y2YxIDEwMDY0NAotLS0tIGEvaW50bC9NYWtlZmlsZQotKysrIGIvaW50bC9NYWtlZmlsZQotQEAgLTE1NSw3ICsxNTUsNyBAQCAkKG9ianBmeCl0c3QtZ2V0dGV4dDYub3V0OiAkKG9ianBmeCl0c3QtZ2V0dGV4dC5vdXQKLSAKLSBDUFBGTEFHUyArPSAtRCdMT0NBTEVESVI9IiQobG9jYWxlZGlyKSInIFwKLSAJICAgIC1EJ0xPQ0FMRV9BTElBU19QQVRIPSIkKGxvY2FsZWRpcikiJwotLUJJU09ORkxBR1MgPSAtLXlhY2MgLS1uYW1lLXByZWZpeD1fX2dldHRleHQgLS1vdXRwdXQKLStCSVNPTkZMQUdTID0gLS15YWNjIC0tbm8tbGluZXMgLS1uYW1lLXByZWZpeD1fX2dldHRleHQgLS1vdXRwdXQKLSAKLSAkKGluc3RfbG9jYWxlZGlyKS9sb2NhbGUuYWxpYXM6IGxvY2FsZS5hbGlhcyAkKCtmb3JjZSkKLSAJJChkby1pbnN0YWxsKQotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI3LWluamVjdC1maWxlLWFzc2VtYmx5LWRpcmVjdGl2ZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctaW5qZWN0LWZpbGUtYXNzZW1ibHktZGlyZWN0aXZlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGMyMDVhOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctaW5qZWN0LWZpbGUtYXNzZW1ibHktZGlyZWN0aXZlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwNCArMCwwIEBACi1Gcm9tIGZlY2Q5ODA0MGEyYWUxYmM1OTQzYTQwYTE2MjNkNzZhNjk2ZTA3ODUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVGh1LCAyOSBOb3YgMjAxOCAxNzoyOTozNSAtMDgwMAotU3ViamVjdDogW1BBVENIIDI3LzI4XSBpbmplY3QgZmlsZSBhc3NlbWJseSBkaXJlY3RpdmVzCi0KLUN1cnJlbnRseSwgbm9uLUlBIGJ1aWxkcyBhcmUgbm90IHJlcHJvZHVjaWJpbGUgc2luY2UgYnVpbGQgcGF0aHMgYXJlCi1iZWluZyBpbmplY3RlZCBpbnRvIHRoZSBkZWJ1ZyBzeW1ib2xzLiBUaGVzZSBhcmUgY29taW5nIGZyb20gdGhlIHVzZSBvZgotLlMgYXNzZW1ibGVyIGZpbGVzIGR1cmluZyB0aGUgZ2xpYmMgYnVpbGQuIE5vIFNUVF9GSUxFIHNlY3Rpb24gaXMgYWRkZWQKLWR1cmluZyB0aGUgYXNzZW1ibHkgYnV0IHdoZW4gbGlua2luZywgbGQgZGVjaWRlcyB0byBhZGQgb25lIHRvIGFpZAotZGVidWdnaW5nIGFuZCBlbnN1cmUgcmVmZXJlbmNlcyBiZXR3ZWVuIHRoZSBkaWZmZXJlbnQgb2JqZWN0IGZpbGVzIGl0cwotbGlua2luZyByZW1haW4gY2xlYXIuCi0KLVdlIGNhbiBhdm9pZCB0aGlzIGJ5IGluamVjdGluZyBhIGZpbGUgaGVhZGVyIGludG8gdGhlIGFzc2VtYmxlciBmaWxlcwotYWhlYWQgb2YgdGltZSwgY2hvb3NpbmcgYSBmaWxlbmFtZSB3aGljaCBkb2VzIG5vdCBjb250YWluIGJ1aWxkIHN5c3RlbQotcGF0aHMuCi0KLVRoaXMgaXMgYSBiaXQgb2YgYSB3b3JrYXJvdW5kL2hhY2sgYnV0IGRvZXMgc2lnbmlmaWNhbnRseSByZWR1Y2UgdGhlCi1idWlsZCBzeXN0ZW0gcmVmZXJlbmNlcyBpbiB0YXJnZXQgYmluYXJpZXMgZm9yIHRoZSBub24tSUEgYXJjaGl0ZWN0dXJlcwotd2hpY2ggdXNlIC5TIGZpbGVzLgotCi1SUAotMjAxOC8xMC8zCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gY3N1L2FiaS1ub3RlLlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvYWFyY2g2NC9jcnRpLlMgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL2FhcmNoNjQvY3J0bi5TICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9hYXJjaDY0L2RsLXRsc2Rlc2MuUyAgICAgICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvYWFyY2g2NC9kbC10cmFtcG9saW5lLlMgICAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL2FhcmNoNjQvc3RhcnQuUyAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9hcm0vYWJpLW5vdGUuUyAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvYXJtL2NydGkuUyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL2FybS9jcnRuLlMgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9hcm0vZGwtdGxzZGVzYy5TICAgICAgICAgICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvYXJtL2RsLXRyYW1wb2xpbmUuUyAgICAgICAgICAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL2FybS9zdGFydC5TICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9taXBzL3N0YXJ0LlMgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZGwtc3RhcnQuUyAgICAgICAgICB8IDIgKysKLSBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL3N0YXJ0LlMgICAgICAgICAgICAgfCAyICsrCi0gc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9zdGFydC5TICAgICAgICAgICAgIHwgMiArKwotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FhcmNoNjQvX19yZWFkX3RwLlMgICB8IDIgKysKLSBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vYWVhYmlfcmVhZF90cC5TICAgfCAyICsrCi0gc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2xpYmMtZG8tc3lzY2FsbC5TIHwgMiArKwotIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtYnJrLlMgICAgICB8IDIgKysKLSAyMCBmaWxlcyBjaGFuZ2VkLCA0MCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jc3UvYWJpLW5vdGUuUyBiL2NzdS9hYmktbm90ZS5TCi1pbmRleCBmYTFmMDE0YTg4Li4wOTg3MzEzNjJhIDEwMDY0NAotLS0tIGEvY3N1L2FiaS1ub3RlLlMKLSsrKyBiL2NzdS9hYmktbm90ZS5TCi1AQCAtNTYsNiArNTYsOCBAQCBvZmZzZXQJbGVuZ3RoCWNvbnRlbnRzCi0gI2luY2x1ZGUgPGNvbmZpZy5oPgotICNpbmNsdWRlIDxhYmktdGFnLmg+CQkvKiBPUy1zcGVjaWZpYyBBQkkgdGFnIHZhbHVlICovCi0gCi0rCS5maWxlICJhYmktbm90ZS5TIgotKwotIC8qIFRoZSBsaW5rZXIgKEdOVSBsZCAyLjggYW5kIGxhdGVyKSByZWNvZ25pemVzIGFuIGFsbG9jYXRlZCBzZWN0aW9uIHdob3NlCi0gICAgbmFtZSBiZWdpbnMgd2l0aCBgLm5vdGUnIGFuZCBjcmVhdGVzIGEgUFRfTk9URSBwcm9ncmFtIGhlYWRlciBlbnRyeQotICAgIHBvaW50aW5nIGF0IGl0LiAqLwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9jcnRpLlMgYi9zeXNkZXBzL2FhcmNoNjQvY3J0aS5TCi1pbmRleCBkNGU3ZGZjZjVjLi5lMDIxOGRmMzBjIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2NydGkuUwotKysrIGIvc3lzZGVwcy9hYXJjaDY0L2NydGkuUwotQEAgLTUwLDYgKzUwLDggQEAKLSAjIGRlZmluZSBQUkVJTklUX0ZVTkNUSU9OX1dFQUsgMQotICNlbmRpZgotIAotKyAgICAuZmlsZSAiY3J0aS5TIgotKwotICNpZiBQUkVJTklUX0ZVTkNUSU9OX1dFQUsKLSAJd2Vha19leHRlcm4gKFBSRUlOSVRfRlVOQ1RJT04pCi0gI2Vsc2UKLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvY3J0bi5TIGIvc3lzZGVwcy9hYXJjaDY0L2NydG4uUwotaW5kZXggMzYzZjc1MjQ2MC4uMmZiMDZmYmE2MiAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYWFyY2g2NC9jcnRuLlMKLSsrKyBiL3N5c2RlcHMvYWFyY2g2NC9jcnRuLlMKLUBAIC0zNyw2ICszNyw4IEBACi0gLyogY3J0bi5TIHB1dHMgZnVuY3Rpb24gZXBpbG9ndWVzIGluIHRoZSAuaW5pdCBhbmQgLmZpbmkgc2VjdGlvbnMKLSAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9sb2d1ZXMgaW4gY3J0aS5TLiAqLwotIAotKwkuZmlsZSAiY3J0bi5TIgotKwotIAkuc2VjdGlvbiAuaW5pdCwiYXgiLCVwcm9nYml0cwotIAlsZHAJeDI5LCB4MzAsIFtzcF0sIDE2Ci0gCVJFVAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9kbC10bHNkZXNjLlMgYi9zeXNkZXBzL2FhcmNoNjQvZGwtdGxzZGVzYy5TCi1pbmRleCA0YWJlNmI4MmEzLi44YzQ0YjJmZjhhIDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2RsLXRsc2Rlc2MuUwotKysrIGIvc3lzZGVwcy9hYXJjaDY0L2RsLXRsc2Rlc2MuUwotQEAgLTIyLDYgKzIyLDggQEAKLSAjaW5jbHVkZSA8dGxzLmg+Ci0gI2luY2x1ZGUgInRsc2Rlc2MuaCIKLSAKLSsJLmZpbGUgImRsLXRsc2Rlc2MuUyIKLSsKLSAjZGVmaW5lIE5TQVZFRFFSRUdQQUlSUwkxNgotICNkZWZpbmUgU0FWRV9RX1JFR0lTVEVSUwkJCQlcCi0gCXN0cAlxMCwgcTEsCVtzcCwgIy0zMipOU0FWRURRUkVHUEFJUlNdITsJXAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9kbC10cmFtcG9saW5lLlMgYi9zeXNkZXBzL2FhcmNoNjQvZGwtdHJhbXBvbGluZS5TCi1pbmRleCAxOWIxMTdlOGY5Li4zOGM3OGI1NDA5IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2RsLXRyYW1wb2xpbmUuUwotKysrIGIvc3lzZGVwcy9hYXJjaDY0L2RsLXRyYW1wb2xpbmUuUwotQEAgLTIxLDYgKzIxLDggQEAKLSAKLSAjaW5jbHVkZSAiZGwtbGluay5oIgotIAotKwkuZmlsZSAiZGwtdHJhbXBvbGluZS5TIgotKwotICNkZWZpbmUgaXAwIHgxNgotICNkZWZpbmUgaXAwbCBQVFJfUkVHICgxNikKLSAjZGVmaW5lIGlwMSB4MTcKLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FhcmNoNjQvc3RhcnQuUyBiL3N5c2RlcHMvYWFyY2g2NC9zdGFydC5TCi1pbmRleCBmNWU5YjljMjIzLi5hZTNlMjJhNmE1IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hYXJjaDY0L3N0YXJ0LlMKLSsrKyBiL3N5c2RlcHMvYWFyY2g2NC9zdGFydC5TCi1AQCAtMTgsNiArMTgsOCBAQAotIAotICNpbmNsdWRlIDxzeXNkZXAuaD4KLSAKLSsJLmZpbGUgInN0YXJ0LlMiCi0rCi0gLyogVGhpcyBpcyB0aGUgY2Fub25pY2FsIGVudHJ5IHBvaW50LCB1c3VhbGx5IHRoZSBmaXJzdCB0aGluZyBpbiB0aGUgdGV4dAotICAgIHNlZ21lbnQuCi0gCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vYWJpLW5vdGUuUyBiL3N5c2RlcHMvYXJtL2FiaS1ub3RlLlMKLWluZGV4IDA3YmQ0YzQ2MTkuLjcyMTNiMTZmMjcgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FybS9hYmktbm90ZS5TCi0rKysgYi9zeXNkZXBzL2FybS9hYmktbm90ZS5TCi1AQCAtMSwzICsxLDUgQEAKLSsJLmZpbGUgImFiaS1ub3RlLlMiCi0rCi0gLyogVGFnX0FCSV9hbGlnbjhfcHJlc2VydmVkOiBUaGlzIGNvZGUgcHJlc2VydmVzIDgtYnl0ZQotICAgIGFsaWdubWVudCBpbiBhbnkgY2FsbGVlLiAgKi8KLSAJLmVhYmlfYXR0cmlidXRlIDI1LCAxCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vY3J0aS5TIGIvc3lzZGVwcy9hcm0vY3J0aS5TCi1pbmRleCAyNmRiYmE2NmEzLi5kZDg0ZWNkNTY2IDEwMDY0NAotLS0tIGEvc3lzZGVwcy9hcm0vY3J0aS5TCi0rKysgYi9zeXNkZXBzL2FybS9jcnRpLlMKLUBAIC01Nyw2ICs1Nyw4IEBACi0gCS5oaWRkZW4gUFJFSU5JVF9GVU5DVElPTgotICNlbmRpZgotIAotKyAgICAuZmlsZSAiY3J0aS5TIgotKwotICNpZiBQUkVJTklUX0ZVTkNUSU9OX1dFQUsKLSAJLnAyYWxpZ24gMgotIAkudHlwZSBjYWxsX3dlYWtfZm4sICVmdW5jdGlvbgotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2NydG4uUyBiL3N5c2RlcHMvYXJtL2NydG4uUwotaW5kZXggOGY5MWM4ZDg4Yi4uYTg3ZmU0OWUwNyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYXJtL2NydG4uUwotKysrIGIvc3lzZGVwcy9hcm0vY3J0bi5TCi1AQCAtMzcsNiArMzcsOCBAQAotICNkZWZpbmUgTk9fVEhVTUIKLSAjaW5jbHVkZSA8c3lzZGVwLmg+Ci0gCi0rICAgIC5maWxlICJjcnRuLlMiCi0rCi0gLyogY3J0bi5TIHB1dHMgZnVuY3Rpb24gZXBpbG9ndWVzIGluIHRoZSAuaW5pdCBhbmQgLmZpbmkgc2VjdGlvbnMKLSAgICBjb3JyZXNwb25kaW5nIHRvIHRoZSBwcm9sb2d1ZXMgaW4gY3J0aS5TLiAqLwotIAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2RsLXRsc2Rlc2MuUyBiL3N5c2RlcHMvYXJtL2RsLXRsc2Rlc2MuUwotaW5kZXggYTkyOTM0MGI0Mi4uYjcyNGM5Nzc2ZCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYXJtL2RsLXRsc2Rlc2MuUwotKysrIGIvc3lzZGVwcy9hcm0vZGwtdGxzZGVzYy5TCi1AQCAtMjEsNiArMjEsOCBAQAotICNpbmNsdWRlIDx0bHMuaD4KLSAjaW5jbHVkZSAidGxzZGVzYy5oIgotIAotKwkuZmlsZSAiZGwtdGxzZGVzYy5TIgotKwotIAkudGV4dAotIAlAIGVtaXQgZGVidWcgaW5mb3JtYXRpb24gd2l0aCBjZmkKLSAJQCB1c2UgYXJtLXNwZWNpZmljIHBzZXVkb3MgZm9yIHVud2luZGluZyBpdHNlbGYKLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9kbC10cmFtcG9saW5lLlMgYi9zeXNkZXBzL2FybS9kbC10cmFtcG9saW5lLlMKLWluZGV4IDMyNWNmY2QyY2UuLjRiZmRjYmNlNTEgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL2FybS9kbC10cmFtcG9saW5lLlMKLSsrKyBiL3N5c2RlcHMvYXJtL2RsLXRyYW1wb2xpbmUuUwotQEAgLTIxLDYgKzIxLDggQEAKLSAjaW5jbHVkZSA8c3lzZGVwLmg+Ci0gI2luY2x1ZGUgPGxpYmMtc3ltYm9scy5oPgotIAotKwkuZmlsZSAiZGwtdHJhbXBvbGluZS5TIgotKwotIAkudGV4dAotIAkuZ2xvYmwgX2RsX3J1bnRpbWVfcmVzb2x2ZQotIAkudHlwZSBfZGxfcnVudGltZV9yZXNvbHZlLCAjZnVuY3Rpb24KLWRpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9zdGFydC5TIGIvc3lzZGVwcy9hcm0vc3RhcnQuUwotaW5kZXggYTA1ZjhhNDY1MS4uMmY0Mzc0ZmNhYSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvYXJtL3N0YXJ0LlMKLSsrKyBiL3N5c2RlcHMvYXJtL3N0YXJ0LlMKLUBAIC01Nyw2ICs1Nyw4IEBACi0gCQkJCQlOVUxMCi0gKi8KLSAKLSsJLmZpbGUgInN0YXJ0LlMiCi0rCi0gLyogVGFnX0FCSV9hbGlnbjhfcHJlc2VydmVkOiBUaGlzIGNvZGUgcHJlc2VydmVzIDgtYnl0ZQotICAgIGFsaWdubWVudCBpbiBhbnkgY2FsbGVlLiAgKi8KLSAJLmVhYmlfYXR0cmlidXRlIDI1LCAxCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy9taXBzL3N0YXJ0LlMgYi9zeXNkZXBzL21pcHMvc3RhcnQuUwotaW5kZXggODYzOGU1YjU0NS4uOTNmNjU2NGFlYyAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvbWlwcy9zdGFydC5TCi0rKysgYi9zeXNkZXBzL21pcHMvc3RhcnQuUwotQEAgLTM4LDYgKzM4LDggQEAKLSAjaW5jbHVkZSA8c2dpZGVmcy5oPgotICNpbmNsdWRlIDxzeXMvYXNtLmg+Ci0gCi0rCS5maWxlICJzdGFydC5TIgotKwotICNpZm5kZWYgRU5UUllfUE9JTlQKLSAjZXJyb3IgRU5UUllfUE9JTlQgbmVlZHMgdG8gYmUgZGVmaW5lZCBmb3Igc3RhcnQuUyBvbiBNSVBTL0VMRi4KLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2RsLXN0YXJ0LlMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2RsLXN0YXJ0LlMKLWluZGV4IDk5YTEwZDY0M2EuLmU0N2ZjMGQyNDUgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL2RsLXN0YXJ0LlMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZGwtc3RhcnQuUwotQEAgLTE4LDYgKzE4LDggQEAKLSAKLSAjaW5jbHVkZSA8c3lzZGVwLmg+Ci0gCi0rCS5maWxlICJkbC1zdGFydC5TIgotKwotIC8qIEluaXRpYWwgZW50cnkgcG9pbnQgY29kZSBmb3IgdGhlIGR5bmFtaWMgbGlua2VyLgotICAgIFRoZSBDIGZ1bmN0aW9uIGBfZGxfc3RhcnQnIGlzIHRoZSByZWFsIGVudHJ5IHBvaW50OwotICAgIGl0cyByZXR1cm4gdmFsdWUgaXMgdGhlIHVzZXIgcHJvZ3JhbSdzIGVudHJ5IHBvaW50LgkqLwotZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvc3RhcnQuUyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvc3RhcnQuUwotaW5kZXggMTcyZmI1YTU2Yi4uZWYxNDcxYjg2MSAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvc3RhcnQuUwotKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9zdGFydC5TCi1AQCAtMzUsNiArMzUsOCBAQAotIAotICNpbmNsdWRlIDxzeXNkZXAuaD4KLSAKLSsJLmZpbGUgInN0YXJ0LlMiCi0rCi0gLyogV2UgZG8gbm90IHdhbnQgLmVoX2ZyYW1lIGluZm8gZm9yIGNydDEubyBzaW5jZSBjcnQxLm8gaXMgbGlua2VkCi0gICAgYmVmb3JlIGNydGJlZ2luLm8sIHRoZSBmaWxlIGRlZmluaW5nIF9fRUhfRlJBTUVfQkVHSU5fXy4gICovCi0gI3VuZGVmIGNmaV9zdGFydHByb2MKLWRpZmYgLS1naXQgYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L3N0YXJ0LlMgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L3N0YXJ0LlMKLWluZGV4IDU1ZmFlNjhhZDYuLjBjYjYwOGZlMGYgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L3N0YXJ0LlMKLSsrKyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvc3RhcnQuUwotQEAgLTM1LDYgKzM1LDggQEAKLSAKLSAjaW5jbHVkZSA8c3lzZGVwLmg+Ci0gCi0rCS5maWxlICJzdGFydC5TIgotKwotIC8qIFdlIGRvIG5vdCB3YW50IC5laF9mcmFtZSBpbmZvIGZvciBjcnQxLm8gc2luY2UgY3J0MS5vIGlzIGxpbmtlZAotICAgIGJlZm9yZSBjcnRiZWdpbi5vLCB0aGUgZmlsZSBkZWZpbmluZyBfX0VIX0ZSQU1FX0JFR0lOX18uICAqLwotICN1bmRlZiBjZmlfc3RhcnRwcm9jCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYWFyY2g2NC9fX3JlYWRfdHAuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FhcmNoNjQvX19yZWFkX3RwLlMKLWluZGV4IDMwYTI5YjlmYjAuLjA3ODkyYjM4M2YgMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hYXJjaDY0L19fcmVhZF90cC5TCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hYXJjaDY0L19fcmVhZF90cC5TCi1AQCAtMTgsNiArMTgsOCBAQAotIAotICNpbmNsdWRlIDxzeXNkZXAuaD4KLSAKLSsJLmZpbGUgIl9fcmVhZF90cC5TIgotKwotIAkuaGlkZGVuIF9fcmVhZF90cAotIEVOVFJZIChfX3JlYWRfdHApCi0gCW1ycwl4MCwgdHBpZHJfZWwwCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2FlYWJpX3JlYWRfdHAuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9hZWFiaV9yZWFkX3RwLlMKLWluZGV4IGY2NGM0ZmZlOGEuLjJkYTMxNWFiMDggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vYWVhYmlfcmVhZF90cC5TCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vYWVhYmlfcmVhZF90cC5TCi1AQCAtMzksNiArMzksOCBAQAotICAgIGEgbm9ybWFsIGZ1bmN0aW9uIGNhbGwpIGluIGEgaGlnaCBwYWdlIG9mIG1lbW9yeTsgdGFpbCBjYWxsIHRvIHRoZQotICAgIGhlbHBlci4gICovCi0gCi0rCS5maWxlICJhZWFiaV9yZWFkX3RwLlMiCi0rCi0gCS5oaWRkZW4gX19hZWFiaV9yZWFkX3RwCi0gRU5UUlkgKF9fYWVhYmlfcmVhZF90cCkKLSAjaWZkZWYgQVJDSF9IQVNfSEFSRF9UUAotZGlmZiAtLWdpdCBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9saWJjLWRvLXN5c2NhbGwuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9saWJjLWRvLXN5c2NhbGwuUwotaW5kZXggMGI2MjM3YWM1NS4uOGNkYTQ5MWMyOCAxMDA2NDQKLS0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9saWJjLWRvLXN5c2NhbGwuUwotKysrIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2xpYmMtZG8tc3lzY2FsbC5TCi1AQCAtMjcsNiArMjcsOCBAQAotICAgIEFSTSB1bndpbmQgdGFibGVzIGZvciByZWdpc3RlciB0byByZWdpc3RlciBtb3ZlcywgdGhlIGFjdHVhbCBvcGNvZGVzCi0gICAgYXJlIG5vdCBkZWZpbmVkLiAgKi8KLSAKLSsgICAgICAuZmlsZSAibGliYy1kby1zeXNjYWxsLlMiCi0rCi0gI2lmIGRlZmluZWQoX190aHVtYl9fKQotIAkudGh1bWIKLSAJLnN5bnRheCB1bmlmaWVkCi1kaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1icmsuUyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtYnJrLlMKLWluZGV4IGVlYjk2NTQ0ZTMuLmRhMTgyYjI4ZjggMTAwNjQ0Ci0tLS0gYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLWJyay5TCi0rKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLWJyay5TCi1AQCAtMSArMSwzIEBACi0rCS5maWxlICJkbC1icmsuUyIKLSsKLSAjaW5jbHVkZSA8YnJrLlM+Ci0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctaW50bC1FbWl0LW5vLWxpbmVzLWluLWJpc29uLWdlbmVyYXRlZC1maWxlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyNy1pbnRsLUVtaXQtbm8tbGluZXMtaW4tYmlzb24tZ2VuZXJhdGVkLWZpbGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjMzE3ZDUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjctaW50bC1FbWl0LW5vLWxpbmVzLWluLWJpc29uLWdlbmVyYXRlZC1maWxlcy5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDNjOGQ5ZWFlODNhYjRmMTY3N2FmYzliMzc5Zjk3MTE0ZTg1MDMzNjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAzIEF1ZyAyMDE4IDA5OjQ0OjAwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIGludGw6IEVtaXQgbm8gbGluZXMgaW4gYmlzb24gZ2VuZXJhdGVkIGZpbGVzCisKK0ltcHJvdmUgcmVwcm9kdWNpYmlsaXR5OgorRG8gbm90IHB1dCBhbnkgI2xpbmUgcHJlcHJvY2Vzc29yIGNvbW1hbmRzIGluIGJpc29uIGdlbmVyYXRlZCBmaWxlcy4KK1RoZXNlIGxpbmVzIGNvbnRhaW4gYWJzb2x1dGUgcGF0aHMgY29udGFpbmluZyBmaWxlIGxvY2F0aW9ucyBvbgordGhlIGhvc3QgYnVpbGQgbWFjaGluZS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgaW50bC9NYWtlZmlsZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2ludGwvTWFrZWZpbGUgYi9pbnRsL01ha2VmaWxlCitpbmRleCBjZTMwNzI0MjBmLi41ODQ1Nzg0MGQ5IDEwMDY0NAorLS0tIGEvaW50bC9NYWtlZmlsZQorKysrIGIvaW50bC9NYWtlZmlsZQorQEAgLTE1NSw3ICsxNTUsNyBAQCAkKG9ianBmeCl0c3QtZ2V0dGV4dDYub3V0OiAkKG9ianBmeCl0c3QtZ2V0dGV4dC5vdXQKKyAKKyBDUFBGTEFHUyArPSAtRCdMT0NBTEVESVI9IiQobG9jYWxlZGlyKSInIFwKKyAJICAgIC1EJ0xPQ0FMRV9BTElBU19QQVRIPSIkKGxvY2FsZWRpcikiJworLUJJU09ORkxBR1MgPSAtLXlhY2MgLS1uYW1lLXByZWZpeD1fX2dldHRleHQgLS1vdXRwdXQKKytCSVNPTkZMQUdTID0gLS15YWNjIC0tbm8tbGluZXMgLS1uYW1lLXByZWZpeD1fX2dldHRleHQgLS1vdXRwdXQKKyAKKyAkKGluc3RfbG9jYWxlZGlyKS9sb2NhbGUuYWxpYXM6IGxvY2FsZS5hbGlhcyAkKCtmb3JjZSkKKyAJJChkby1pbnN0YWxsKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LWluamVjdC1maWxlLWFzc2VtYmx5LWRpcmVjdGl2ZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjgtaW5qZWN0LWZpbGUtYXNzZW1ibHktZGlyZWN0aXZlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMWEwMzBkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LWluamVjdC1maWxlLWFzc2VtYmx5LWRpcmVjdGl2ZXMucGF0Y2gKQEAgLTAsMCArMSwzMDEgQEAKK0Zyb20gNDIwNDU0ZjcwOThiNTQ0NTczMGNhYTg1NWMzN2I4MTQzYmZjY2MxYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDI5IE5vdiAyMDE4IDE3OjI5OjM1IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGluamVjdCBmaWxlIGFzc2VtYmx5IGRpcmVjdGl2ZXMKKworQ3VycmVudGx5LCBub24tSUEgYnVpbGRzIGFyZSBub3QgcmVwcm9kdWNpYmlsZSBzaW5jZSBidWlsZCBwYXRocyBhcmUKK2JlaW5nIGluamVjdGVkIGludG8gdGhlIGRlYnVnIHN5bWJvbHMuIFRoZXNlIGFyZSBjb21pbmcgZnJvbSB0aGUgdXNlIG9mCisuUyBhc3NlbWJsZXIgZmlsZXMgZHVyaW5nIHRoZSBnbGliYyBidWlsZC4gTm8gU1RUX0ZJTEUgc2VjdGlvbiBpcyBhZGRlZAorZHVyaW5nIHRoZSBhc3NlbWJseSBidXQgd2hlbiBsaW5raW5nLCBsZCBkZWNpZGVzIHRvIGFkZCBvbmUgdG8gYWlkCitkZWJ1Z2dpbmcgYW5kIGVuc3VyZSByZWZlcmVuY2VzIGJldHdlZW4gdGhlIGRpZmZlcmVudCBvYmplY3QgZmlsZXMgaXRzCitsaW5raW5nIHJlbWFpbiBjbGVhci4KKworV2UgY2FuIGF2b2lkIHRoaXMgYnkgaW5qZWN0aW5nIGEgZmlsZSBoZWFkZXIgaW50byB0aGUgYXNzZW1ibGVyIGZpbGVzCithaGVhZCBvZiB0aW1lLCBjaG9vc2luZyBhIGZpbGVuYW1lIHdoaWNoIGRvZXMgbm90IGNvbnRhaW4gYnVpbGQgc3lzdGVtCitwYXRocy4KKworVGhpcyBpcyBhIGJpdCBvZiBhIHdvcmthcm91bmQvaGFjayBidXQgZG9lcyBzaWduaWZpY2FudGx5IHJlZHVjZSB0aGUKK2J1aWxkIHN5c3RlbSByZWZlcmVuY2VzIGluIHRhcmdldCBiaW5hcmllcyBmb3IgdGhlIG5vbi1JQSBhcmNoaXRlY3R1cmVzCit3aGljaCB1c2UgLlMgZmlsZXMuCisKK1JQCisyMDE4LzEwLzMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBjc3UvYWJpLW5vdGUuUyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9hYXJjaDY0L2NydGkuUyAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvYWFyY2g2NC9jcnRuLlMgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL2FhcmNoNjQvZGwtdGxzZGVzYy5TICAgICAgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9hYXJjaDY0L2RsLXRyYW1wb2xpbmUuUyAgICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvYWFyY2g2NC9zdGFydC5TICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL2FybS9hYmktbm90ZS5TICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9hcm0vY3J0aS5TICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvYXJtL2NydG4uUyAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL2FybS9kbC10bHNkZXNjLlMgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9hcm0vZGwtdHJhbXBvbGluZS5TICAgICAgICAgICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvYXJtL3N0YXJ0LlMgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL21pcHMvc3RhcnQuUyAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9kbC1zdGFydC5TICAgICAgICAgIHwgMiArKworIHN5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvc3RhcnQuUyAgICAgICAgICAgICB8IDIgKysKKyBzeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzY0L3N0YXJ0LlMgICAgICAgICAgICAgfCAyICsrCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvYWFyY2g2NC9fX3JlYWRfdHAuUyAgIHwgMiArKworIHN5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9hZWFiaV9yZWFkX3RwLlMgICB8IDIgKysKKyBzeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vbGliYy1kby1zeXNjYWxsLlMgfCAyICsrCisgc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1icmsuUyAgICAgIHwgMiArKworIDIwIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NzdS9hYmktbm90ZS5TIGIvY3N1L2FiaS1ub3RlLlMKK2luZGV4IDJiNGI1Zjg4MjQuLjk2NDg0MzAxNmMgMTAwNjQ0CistLS0gYS9jc3UvYWJpLW5vdGUuUworKysrIGIvY3N1L2FiaS1ub3RlLlMKK0BAIC01Niw2ICs1Niw4IEBAIG9mZnNldAlsZW5ndGgJY29udGVudHMKKyAjaW5jbHVkZSA8Y29uZmlnLmg+CisgI2luY2x1ZGUgPGFiaS10YWcuaD4JCS8qIE9TLXNwZWNpZmljIEFCSSB0YWcgdmFsdWUgKi8KKyAKKysJLmZpbGUgImFiaS1ub3RlLlMiCisrCisgLyogVGhlIGxpbmtlciAoR05VIGxkIDIuOCBhbmQgbGF0ZXIpIHJlY29nbml6ZXMgYW4gYWxsb2NhdGVkIHNlY3Rpb24gd2hvc2UKKyAgICBuYW1lIGJlZ2lucyB3aXRoIGAubm90ZScgYW5kIGNyZWF0ZXMgYSBQVF9OT1RFIHByb2dyYW0gaGVhZGVyIGVudHJ5CisgICAgcG9pbnRpbmcgYXQgaXQuICovCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2NydGkuUyBiL3N5c2RlcHMvYWFyY2g2NC9jcnRpLlMKK2luZGV4IDE3MjhlYWMzN2EuLjc2YThhYjU5MGIgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FhcmNoNjQvY3J0aS5TCisrKysgYi9zeXNkZXBzL2FhcmNoNjQvY3J0aS5TCitAQCAtNTAsNiArNTAsOCBAQAorICMgZGVmaW5lIFBSRUlOSVRfRlVOQ1RJT05fV0VBSyAxCisgI2VuZGlmCisgCisrICAgIC5maWxlICJjcnRpLlMiCisrCisgI2lmIFBSRUlOSVRfRlVOQ1RJT05fV0VBSworIAl3ZWFrX2V4dGVybiAoUFJFSU5JVF9GVU5DVElPTikKKyAjZWxzZQorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9jcnRuLlMgYi9zeXNkZXBzL2FhcmNoNjQvY3J0bi5TCitpbmRleCBjM2U5N2NjNDQ5Li5mYzJlNWMyZGY4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hYXJjaDY0L2NydG4uUworKysrIGIvc3lzZGVwcy9hYXJjaDY0L2NydG4uUworQEAgLTM3LDYgKzM3LDggQEAKKyAvKiBjcnRuLlMgcHV0cyBmdW5jdGlvbiBlcGlsb2d1ZXMgaW4gdGhlIC5pbml0IGFuZCAuZmluaSBzZWN0aW9ucworICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb2xvZ3VlcyBpbiBjcnRpLlMuICovCisgCisrCS5maWxlICJjcnRuLlMiCisrCisgCS5zZWN0aW9uIC5pbml0LCJheCIsJXByb2diaXRzCisgCWxkcAl4MjksIHgzMCwgW3NwXSwgMTYKKyAJUkVUCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2RsLXRsc2Rlc2MuUyBiL3N5c2RlcHMvYWFyY2g2NC9kbC10bHNkZXNjLlMKK2luZGV4IDU1N2FkMWQ1MDUuLjE5NGE4NTMxZGEgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FhcmNoNjQvZGwtdGxzZGVzYy5TCisrKysgYi9zeXNkZXBzL2FhcmNoNjQvZGwtdGxzZGVzYy5TCitAQCAtMjIsNiArMjIsOCBAQAorICNpbmNsdWRlIDx0bHMuaD4KKyAjaW5jbHVkZSAidGxzZGVzYy5oIgorIAorKwkuZmlsZSAiZGwtdGxzZGVzYy5TIgorKworICNkZWZpbmUgTlNBVkVEUVJFR1BBSVJTCTE2CisgI2RlZmluZSBTQVZFX1FfUkVHSVNURVJTCQkJCVwKKyAJc3RwCXEwLCBxMSwJW3NwLCAjLTMyKk5TQVZFRFFSRUdQQUlSU10hOwlcCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hYXJjaDY0L2RsLXRyYW1wb2xpbmUuUyBiL3N5c2RlcHMvYWFyY2g2NC9kbC10cmFtcG9saW5lLlMKK2luZGV4IDk0ZTk2NWMwOTYuLmJhMTg3NDJmM2UgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FhcmNoNjQvZGwtdHJhbXBvbGluZS5TCisrKysgYi9zeXNkZXBzL2FhcmNoNjQvZGwtdHJhbXBvbGluZS5TCitAQCAtMjEsNiArMjEsOCBAQAorIAorICNpbmNsdWRlICJkbC1saW5rLmgiCisgCisrCS5maWxlICJkbC10cmFtcG9saW5lLlMiCisrCisgI2RlZmluZSBpcDAgeDE2CisgI2RlZmluZSBpcDBsIFBUUl9SRUcgKDE2KQorICNkZWZpbmUgaXAxIHgxNworZGlmZiAtLWdpdCBhL3N5c2RlcHMvYWFyY2g2NC9zdGFydC5TIGIvc3lzZGVwcy9hYXJjaDY0L3N0YXJ0LlMKK2luZGV4IGQ5NmNmNTdlMmQuLjA3YTUyMzk3OGEgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FhcmNoNjQvc3RhcnQuUworKysrIGIvc3lzZGVwcy9hYXJjaDY0L3N0YXJ0LlMKK0BAIC0xOCw2ICsxOCw4IEBACisgCisgI2luY2x1ZGUgPHN5c2RlcC5oPgorIAorKwkuZmlsZSAic3RhcnQuUyIKKysKKyAvKiBUaGlzIGlzIHRoZSBjYW5vbmljYWwgZW50cnkgcG9pbnQsIHVzdWFsbHkgdGhlIGZpcnN0IHRoaW5nIGluIHRoZSB0ZXh0CisgICAgc2VnbWVudC4KKyAKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9hYmktbm90ZS5TIGIvc3lzZGVwcy9hcm0vYWJpLW5vdGUuUworaW5kZXggMDdiZDRjNDYxOS4uNzIxM2IxNmYyNyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2FiaS1ub3RlLlMKKysrKyBiL3N5c2RlcHMvYXJtL2FiaS1ub3RlLlMKK0BAIC0xLDMgKzEsNSBAQAorKwkuZmlsZSAiYWJpLW5vdGUuUyIKKysKKyAvKiBUYWdfQUJJX2FsaWduOF9wcmVzZXJ2ZWQ6IFRoaXMgY29kZSBwcmVzZXJ2ZXMgOC1ieXRlCisgICAgYWxpZ25tZW50IGluIGFueSBjYWxsZWUuICAqLworIAkuZWFiaV9hdHRyaWJ1dGUgMjUsIDEKK2RpZmYgLS1naXQgYS9zeXNkZXBzL2FybS9jcnRpLlMgYi9zeXNkZXBzL2FybS9jcnRpLlMKK2luZGV4IDgxNjk3ODMyNjcuLmY1NmUwYzg1YTYgMTAwNjQ0CistLS0gYS9zeXNkZXBzL2FybS9jcnRpLlMKKysrKyBiL3N5c2RlcHMvYXJtL2NydGkuUworQEAgLTU3LDYgKzU3LDggQEAKKyAJLmhpZGRlbiBQUkVJTklUX0ZVTkNUSU9OCisgI2VuZGlmCisgCisrICAgIC5maWxlICJjcnRpLlMiCisrCisgI2lmIFBSRUlOSVRfRlVOQ1RJT05fV0VBSworIAkucDJhbGlnbiAyCisgCS50eXBlIGNhbGxfd2Vha19mbiwgJWZ1bmN0aW9uCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vY3J0bi5TIGIvc3lzZGVwcy9hcm0vY3J0bi5TCitpbmRleCBkNjBmOWYwNWRlLi4xZTEwZWM0MzlmIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hcm0vY3J0bi5TCisrKysgYi9zeXNkZXBzL2FybS9jcnRuLlMKK0BAIC0zNyw2ICszNyw4IEBACisgI2RlZmluZSBOT19USFVNQgorICNpbmNsdWRlIDxzeXNkZXAuaD4KKyAKKysgICAgLmZpbGUgImNydG4uUyIKKysKKyAvKiBjcnRuLlMgcHV0cyBmdW5jdGlvbiBlcGlsb2d1ZXMgaW4gdGhlIC5pbml0IGFuZCAuZmluaSBzZWN0aW9ucworICAgIGNvcnJlc3BvbmRpbmcgdG8gdGhlIHByb2xvZ3VlcyBpbiBjcnRpLlMuICovCisgCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9hcm0vZGwtdGxzZGVzYy5TIGIvc3lzZGVwcy9hcm0vZGwtdGxzZGVzYy5TCitpbmRleCA4NDE1ZTQ3NjA3Li4yOWMyY2I4MTI4IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hcm0vZGwtdGxzZGVzYy5TCisrKysgYi9zeXNkZXBzL2FybS9kbC10bHNkZXNjLlMKK0BAIC0yMSw2ICsyMSw4IEBACisgI2luY2x1ZGUgPHRscy5oPgorICNpbmNsdWRlICJ0bHNkZXNjLmgiCisgCisrCS5maWxlICJkbC10bHNkZXNjLlMiCisrCisgCS50ZXh0CisgCUAgZW1pdCBkZWJ1ZyBpbmZvcm1hdGlvbiB3aXRoIGNmaQorIAlAIHVzZSBhcm0tc3BlY2lmaWMgcHNldWRvcyBmb3IgdW53aW5kaW5nIGl0c2VsZgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL2RsLXRyYW1wb2xpbmUuUyBiL3N5c2RlcHMvYXJtL2RsLXRyYW1wb2xpbmUuUworaW5kZXggYTIwYmFmNTU1ZS4uMmRkM2JlZjA0ZSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvYXJtL2RsLXRyYW1wb2xpbmUuUworKysrIGIvc3lzZGVwcy9hcm0vZGwtdHJhbXBvbGluZS5TCitAQCAtMjEsNiArMjEsOCBAQAorICNpbmNsdWRlIDxzeXNkZXAuaD4KKyAjaW5jbHVkZSA8bGliYy1zeW1ib2xzLmg+CisgCisrCS5maWxlICJkbC10cmFtcG9saW5lLlMiCisrCisgCS50ZXh0CisgCS5nbG9ibCBfZGxfcnVudGltZV9yZXNvbHZlCisgCS50eXBlIF9kbF9ydW50aW1lX3Jlc29sdmUsICNmdW5jdGlvbgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvYXJtL3N0YXJ0LlMgYi9zeXNkZXBzL2FybS9zdGFydC5TCitpbmRleCAyZmY1NjE3OWQyLi5jMTE4MDQ2ZWM2IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9hcm0vc3RhcnQuUworKysrIGIvc3lzZGVwcy9hcm0vc3RhcnQuUworQEAgLTU3LDYgKzU3LDggQEAKKyAJCQkJCU5VTEwKKyAqLworIAorKwkuZmlsZSAic3RhcnQuUyIKKysKKyAvKiBUYWdfQUJJX2FsaWduOF9wcmVzZXJ2ZWQ6IFRoaXMgY29kZSBwcmVzZXJ2ZXMgOC1ieXRlCisgICAgYWxpZ25tZW50IGluIGFueSBjYWxsZWUuICAqLworIAkuZWFiaV9hdHRyaWJ1dGUgMjUsIDEKK2RpZmYgLS1naXQgYS9zeXNkZXBzL21pcHMvc3RhcnQuUyBiL3N5c2RlcHMvbWlwcy9zdGFydC5TCitpbmRleCBmYWJjODA4MGRmLi44M2M2YjkxZDdkIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9taXBzL3N0YXJ0LlMKKysrKyBiL3N5c2RlcHMvbWlwcy9zdGFydC5TCitAQCAtMzgsNiArMzgsOCBAQAorICNpbmNsdWRlIDxzZ2lkZWZzLmg+CisgI2luY2x1ZGUgPHN5cy9hc20uaD4KKyAKKysJLmZpbGUgInN0YXJ0LlMiCisrCisgI2lmbmRlZiBFTlRSWV9QT0lOVAorICNlcnJvciBFTlRSWV9QT0lOVCBuZWVkcyB0byBiZSBkZWZpbmVkIGZvciBzdGFydC5TIG9uIE1JUFMvRUxGLgorICNlbmRpZgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZGwtc3RhcnQuUyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZGwtc3RhcnQuUworaW5kZXggYzE1MjQyZDNiYy4uNmNhMjc3MTVhNCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjMzIvZGwtc3RhcnQuUworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9kbC1zdGFydC5TCitAQCAtMTgsNiArMTgsOCBAQAorIAorICNpbmNsdWRlIDxzeXNkZXAuaD4KKyAKKysJLmZpbGUgImRsLXN0YXJ0LlMiCisrCisgLyogSW5pdGlhbCBlbnRyeSBwb2ludCBjb2RlIGZvciB0aGUgZHluYW1pYyBsaW5rZXIuCisgICAgVGhlIEMgZnVuY3Rpb24gYF9kbF9zdGFydCcgaXMgdGhlIHJlYWwgZW50cnkgcG9pbnQ7CisgICAgaXRzIHJldHVybiB2YWx1ZSBpcyB0aGUgdXNlciBwcm9ncmFtJ3MgZW50cnkgcG9pbnQuCSovCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9zdGFydC5TIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9zdGFydC5TCitpbmRleCBiN2I5YTEzM2EyLi44ZGY3MTRmODFhIDEwMDY0NAorLS0tIGEvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGMzMi9zdGFydC5TCisrKysgYi9zeXNkZXBzL3Bvd2VycGMvcG93ZXJwYzMyL3N0YXJ0LlMKK0BAIC0zNSw2ICszNSw4IEBACisgCisgI2luY2x1ZGUgPHN5c2RlcC5oPgorIAorKwkuZmlsZSAic3RhcnQuUyIKKysKKyAvKiBXZSBkbyBub3Qgd2FudCAuZWhfZnJhbWUgaW5mbyBmb3IgY3J0MS5vIHNpbmNlIGNydDEubyBpcyBsaW5rZWQKKyAgICBiZWZvcmUgY3J0YmVnaW4ubywgdGhlIGZpbGUgZGVmaW5pbmcgX19FSF9GUkFNRV9CRUdJTl9fLiAgKi8KKyAjdW5kZWYgY2ZpX3N0YXJ0cHJvYworZGlmZiAtLWdpdCBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvc3RhcnQuUyBiL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvc3RhcnQuUworaW5kZXggOTRiZjc3MWU4My4uY2ZmYjk5NTAwYSAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvcG93ZXJwYy9wb3dlcnBjNjQvc3RhcnQuUworKysrIGIvc3lzZGVwcy9wb3dlcnBjL3Bvd2VycGM2NC9zdGFydC5TCitAQCAtMzUsNiArMzUsOCBAQAorIAorICNpbmNsdWRlIDxzeXNkZXAuaD4KKyAKKysJLmZpbGUgInN0YXJ0LlMiCisrCisgLyogV2UgZG8gbm90IHdhbnQgLmVoX2ZyYW1lIGluZm8gZm9yIGNydDEubyBzaW5jZSBjcnQxLm8gaXMgbGlua2VkCisgICAgYmVmb3JlIGNydGJlZ2luLm8sIHRoZSBmaWxlIGRlZmluaW5nIF9fRUhfRlJBTUVfQkVHSU5fXy4gICovCisgI3VuZGVmIGNmaV9zdGFydHByb2MKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hYXJjaDY0L19fcmVhZF90cC5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYWFyY2g2NC9fX3JlYWRfdHAuUworaW5kZXggMTJlMTEzMWZlNy4uNzY3ZTBkMDQzYiAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FhcmNoNjQvX19yZWFkX3RwLlMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FhcmNoNjQvX19yZWFkX3RwLlMKK0BAIC0xOCw2ICsxOCw4IEBACisgCisgI2luY2x1ZGUgPHN5c2RlcC5oPgorIAorKwkuZmlsZSAiX19yZWFkX3RwLlMiCisrCisgCS5oaWRkZW4gX19yZWFkX3RwCisgRU5UUlkgKF9fcmVhZF90cCkKKyAJbXJzCXgwLCB0cGlkcl9lbDAKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vYWVhYmlfcmVhZF90cC5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2FlYWJpX3JlYWRfdHAuUworaW5kZXggM2IwZDYxMTAzOS4uNGE3ZTQ3NmMzNyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9hZWFiaV9yZWFkX3RwLlMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L2FybS9hZWFiaV9yZWFkX3RwLlMKK0BAIC0zOSw2ICszOSw4IEBACisgICAgYSBub3JtYWwgZnVuY3Rpb24gY2FsbCkgaW4gYSBoaWdoIHBhZ2Ugb2YgbWVtb3J5OyB0YWlsIGNhbGwgdG8gdGhlCisgICAgaGVscGVyLiAgKi8KKyAKKysJLmZpbGUgImFlYWJpX3JlYWRfdHAuUyIKKysKKyAJLmhpZGRlbiBfX2FlYWJpX3JlYWRfdHAKKyBFTlRSWSAoX19hZWFiaV9yZWFkX3RwKQorICNpZmRlZiBBUkNIX0hBU19IQVJEX1RQCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2xpYmMtZG8tc3lzY2FsbC5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2xpYmMtZG8tc3lzY2FsbC5TCitpbmRleCBmYjVlMGM3ZDk3Li5iZDA3YmRiMzhiIDEwMDY0NAorLS0tIGEvc3lzZGVwcy91bml4L3N5c3YvbGludXgvYXJtL2xpYmMtZG8tc3lzY2FsbC5TCisrKysgYi9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9hcm0vbGliYy1kby1zeXNjYWxsLlMKK0BAIC0yNyw2ICsyNyw4IEBACisgICAgQVJNIHVud2luZCB0YWJsZXMgZm9yIHJlZ2lzdGVyIHRvIHJlZ2lzdGVyIG1vdmVzLCB0aGUgYWN0dWFsIG9wY29kZXMKKyAgICBhcmUgbm90IGRlZmluZWQuICAqLworIAorKyAgICAgIC5maWxlICJsaWJjLWRvLXN5c2NhbGwuUyIKKysKKyAjaWYgZGVmaW5lZChfX3RodW1iX18pCisgCS50aHVtYgorIAkuc3ludGF4IHVuaWZpZWQKK2RpZmYgLS1naXQgYS9zeXNkZXBzL3VuaXgvc3lzdi9saW51eC9wb3dlcnBjL2RsLWJyay5TIGIvc3lzZGVwcy91bml4L3N5c3YvbGludXgvcG93ZXJwYy9kbC1icmsuUworaW5kZXggZWViOTY1NDRlMy4uZGExODJiMjhmOCAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtYnJrLlMKKysrKyBiL3N5c2RlcHMvdW5peC9zeXN2L2xpbnV4L3Bvd2VycGMvZGwtYnJrLlMKK0BAIC0xICsxLDMgQEAKKysJLmZpbGUgImRsLWJyay5TIgorKworICNpbmNsdWRlIDxicmsuUz4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOC1sb2NhbGUtcHJldmVudC1tYXliZS11bmluaXRpYWxpemVkLWVycm9ycy13aXRoLU9zLUJaLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LWxvY2FsZS1wcmV2ZW50LW1heWJlLXVuaW5pdGlhbGl6ZWQtZXJyb3JzLXdpdGgtT3MtQloucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjNDkwNjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy8wMDI4LWxvY2FsZS1wcmV2ZW50LW1heWJlLXVuaW5pdGlhbGl6ZWQtZXJyb3JzLXdpdGgtT3MtQloucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1Gcm9tIGQ5MzQ3ODhlMzIyMWMyOGM5YTE4OTIyMzVjYmU0Y2ZkMWIyOGNlZDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXJ0aW4gSmFuc2EgPG1hcnRpbi5qYW5zYUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDE3IERlYyAyMDE4IDIxOjM2OjE4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjgvMjhdIGxvY2FsZTogcHJldmVudCBtYXliZS11bmluaXRpYWxpemVkIGVycm9ycyB3aXRoIC1PcyBbQloKLSAjMTk0NDRdCi0KLUZpeGVzIGZvbGxvd2luZyBlcnJvciB3aGVuIGJ1aWxkaW5nIGZvciBhYXJjaDY0IHdpdGggLU9zOgotfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gc3RyY29sbF9sLmM6NDM6Ci18IHN0cmNvbGxfbC5jOiBJbiBmdW5jdGlvbiAnX19zdHJjb2xsX2wnOgotfCAuLi9sb2NhbGUvd2VpZ2h0Lmg6MzE6MjY6IGVycm9yOiAnc2VxMi5iYWNrX3VzJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24gWy1XZXJyb3I9bWF5YmUtdW5pbml0aWFsaXplZF0KLXwgICAgaW50X2Zhc3QzMl90IGkgPSB0YWJsZVsqKCpjcHApKytdOwotfCAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fgotfCBzdHJjb2xsX2wuYzozMDQ6MTg6IG5vdGU6ICdzZXEyLmJhY2tfdXMnIHdhcyBkZWNsYXJlZCBoZXJlCi18ICAgIGNvbGxfc2VxIHNlcTEsIHNlcTI7Ci18ICAgICAgICAgICAgICAgICAgIF5+fn4KLXwgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHN0cmNvbGxfbC5jOjQzOgotfCAuLi9sb2NhbGUvd2VpZ2h0Lmg6MzE6MjY6IGVycm9yOiAnc2VxMS5iYWNrX3VzJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24gWy1XZXJyb3I9bWF5YmUtdW5pbml0aWFsaXplZF0KLXwgICAgaW50X2Zhc3QzMl90IGkgPSB0YWJsZVsqKCpjcHApKytdOwotfCAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fgotfCBzdHJjb2xsX2wuYzozMDQ6MTI6IG5vdGU6ICdzZXExLmJhY2tfdXMnIHdhcyBkZWNsYXJlZCBoZXJlCi18ICAgIGNvbGxfc2VxIHNlcTEsIHNlcTI7Ci18ICAgICAgICAgICAgIF5+fn4KLQotICAgICAgICBQYXJ0aWFsIGZpeCBmb3IgW0JaICMxOTQ0NF0KLSAgICAgICAgKiBsb2NhbGUvd2VpZ2h0Lmg6IEZpeCBidWlsZCB3aXRoIC1Pcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcGF0Y2gvMTAxNDc2Nl0KLQotU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxvY2FsZS93ZWlnaHQuaCB8IDcgKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xvY2FsZS93ZWlnaHQuaCBiL2xvY2FsZS93ZWlnaHQuaAotaW5kZXggN2NhODE0OThiMi4uZDYwOGNhNzBiYiAxMDA2NDQKLS0tLSBhL2xvY2FsZS93ZWlnaHQuaAotKysrIGIvbG9jYWxlL3dlaWdodC5oCi1AQCAtMjgsNyArMjgsMTQgQEAgZmluZGlkeCAoY29uc3QgaW50MzJfdCAqdGFibGUsCi0gCSBjb25zdCB1bnNpZ25lZCBjaGFyICpleHRyYSwKLSAJIGNvbnN0IHVuc2lnbmVkIGNoYXIgKipjcHAsIHNpemVfdCBsZW4pCi0gewotKyAgLyogV2l0aCBHQ0MgOCB3aGVuIGNvbXBpbGluZyB3aXRoIC1PcyB0aGUgY29tcGlsZXIgd2FybnMgdGhhdAotKyAgICAgc2VxMS5iYWNrX3VzIGFuZCBzZXEyLmJhY2tfdXMgbWlnaHQgYmUgdXNlZCB1bmluaXRpYWxpemVkLgotKyAgICAgVGhpcyB1bmluaXRpYWxpemVkIHVzZSBpcyBpbXBvc3NpYmxlIGZvciB0aGUgc2FtZSByZWFzb24KLSsgICAgIGFzIGRlc2NyaWJlZCBpbiBjb21tZW50cyBpbiBsb2NhbGUvd2VpZ2h0d2MuaC4gICovCi0rICBESUFHX1BVU0hfTkVFRFNfQ09NTUVOVDsKLSsgIERJQUdfSUdOT1JFX09zX05FRURTX0NPTU1FTlQgKDgsICItV21heWJlLXVuaW5pdGlhbGl6ZWQiKTsKLSAgIGludF9mYXN0MzJfdCBpID0gdGFibGVbKigqY3BwKSsrXTsKLSsgIERJQUdfUE9QX05FRURTX0NPTU1FTlQ7Ci0gICBjb25zdCB1bnNpZ25lZCBjaGFyICpjcDsKLSAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzcmM7Ci0gCi0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjktbG9jYWxlLXByZXZlbnQtbWF5YmUtdW5pbml0aWFsaXplZC1lcnJvcnMtd2l0aC1Pcy1CWi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAyOS1sb2NhbGUtcHJldmVudC1tYXliZS11bmluaXRpYWxpemVkLWVycm9ycy13aXRoLU9zLUJaLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM4YzM1OWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMjktbG9jYWxlLXByZXZlbnQtbWF5YmUtdW5pbml0aWFsaXplZC1lcnJvcnMtd2l0aC1Pcy1CWi5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIDY2OTYzYWQ4M2JkZDNiMDc1MDA2ZGRjYTlkZmUzNTdhZWQxODFkNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXJ0aW4gSmFuc2EgPG1hcnRpbi5qYW5zYUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDE3IERlYyAyMDE4IDIxOjM2OjE4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGxvY2FsZTogcHJldmVudCBtYXliZS11bmluaXRpYWxpemVkIGVycm9ycyB3aXRoIC1PcyBbQloKKyAjMTk0NDRdCisKK0ZpeGVzIGZvbGxvd2luZyBlcnJvciB3aGVuIGJ1aWxkaW5nIGZvciBhYXJjaDY0IHdpdGggLU9zOgorfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gc3RyY29sbF9sLmM6NDM6Cit8IHN0cmNvbGxfbC5jOiBJbiBmdW5jdGlvbiAnX19zdHJjb2xsX2wnOgorfCAuLi9sb2NhbGUvd2VpZ2h0Lmg6MzE6MjY6IGVycm9yOiAnc2VxMi5iYWNrX3VzJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24gWy1XZXJyb3I9bWF5YmUtdW5pbml0aWFsaXplZF0KK3wgICAgaW50X2Zhc3QzMl90IGkgPSB0YWJsZVsqKCpjcHApKytdOworfCAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fgorfCBzdHJjb2xsX2wuYzozMDQ6MTg6IG5vdGU6ICdzZXEyLmJhY2tfdXMnIHdhcyBkZWNsYXJlZCBoZXJlCit8ICAgIGNvbGxfc2VxIHNlcTEsIHNlcTI7Cit8ICAgICAgICAgICAgICAgICAgIF5+fn4KK3wgSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHN0cmNvbGxfbC5jOjQzOgorfCAuLi9sb2NhbGUvd2VpZ2h0Lmg6MzE6MjY6IGVycm9yOiAnc2VxMS5iYWNrX3VzJyBtYXkgYmUgdXNlZCB1bmluaXRpYWxpemVkIGluIHRoaXMgZnVuY3Rpb24gWy1XZXJyb3I9bWF5YmUtdW5pbml0aWFsaXplZF0KK3wgICAgaW50X2Zhc3QzMl90IGkgPSB0YWJsZVsqKCpjcHApKytdOworfCAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fgorfCBzdHJjb2xsX2wuYzozMDQ6MTI6IG5vdGU6ICdzZXExLmJhY2tfdXMnIHdhcyBkZWNsYXJlZCBoZXJlCit8ICAgIGNvbGxfc2VxIHNlcTEsIHNlcTI7Cit8ICAgICAgICAgICAgIF5+fn4KKworICAgICAgICBQYXJ0aWFsIGZpeCBmb3IgW0JaICMxOTQ0NF0KKyAgICAgICAgKiBsb2NhbGUvd2VpZ2h0Lmg6IEZpeCBidWlsZCB3aXRoIC1Pcy4KKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vcGF0Y2h3b3JrLm96bGFicy5vcmcvcGF0Y2gvMTAxNDc2Nl0KKworU2lnbmVkLW9mZi1ieTogTWFydGluIEphbnNhIDxNYXJ0aW4uSmFuc2FAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxvY2FsZS93ZWlnaHQuaCB8IDcgKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2xvY2FsZS93ZWlnaHQuaCBiL2xvY2FsZS93ZWlnaHQuaAoraW5kZXggZTA3MTI1M2Y4NS4uMjg4OWMzOTVmMSAxMDA2NDQKKy0tLSBhL2xvY2FsZS93ZWlnaHQuaAorKysrIGIvbG9jYWxlL3dlaWdodC5oCitAQCAtMjgsNyArMjgsMTQgQEAgZmluZGlkeCAoY29uc3QgaW50MzJfdCAqdGFibGUsCisgCSBjb25zdCB1bnNpZ25lZCBjaGFyICpleHRyYSwKKyAJIGNvbnN0IHVuc2lnbmVkIGNoYXIgKipjcHAsIHNpemVfdCBsZW4pCisgeworKyAgLyogV2l0aCBHQ0MgOCB3aGVuIGNvbXBpbGluZyB3aXRoIC1PcyB0aGUgY29tcGlsZXIgd2FybnMgdGhhdAorKyAgICAgc2VxMS5iYWNrX3VzIGFuZCBzZXEyLmJhY2tfdXMgbWlnaHQgYmUgdXNlZCB1bmluaXRpYWxpemVkLgorKyAgICAgVGhpcyB1bmluaXRpYWxpemVkIHVzZSBpcyBpbXBvc3NpYmxlIGZvciB0aGUgc2FtZSByZWFzb24KKysgICAgIGFzIGRlc2NyaWJlZCBpbiBjb21tZW50cyBpbiBsb2NhbGUvd2VpZ2h0d2MuaC4gICovCisrICBESUFHX1BVU0hfTkVFRFNfQ09NTUVOVDsKKysgIERJQUdfSUdOT1JFX09zX05FRURTX0NPTU1FTlQgKDgsICItV21heWJlLXVuaW5pdGlhbGl6ZWQiKTsKKyAgIGludF9mYXN0MzJfdCBpID0gdGFibGVbKigqY3BwKSsrXTsKKysgIERJQUdfUE9QX05FRURTX0NPTU1FTlQ7CisgICBjb25zdCB1bnNpZ25lZCBjaGFyICpjcDsKKyAgIGNvbnN0IHVuc2lnbmVkIGNoYXIgKnVzcmM7CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzAtSW1wcm92ZS1JRlVOQy1jaGVjay1CWi0yNTUwNi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMC1JbXByb3ZlLUlGVU5DLWNoZWNrLUJaLTI1NTA2LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjYjM5OGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzAtSW1wcm92ZS1JRlVOQy1jaGVjay1CWi0yNTUwNi5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitGcm9tIDg3YTY5OGEyMTY0NmI3ZWU2MjA5MjNlZjVmZmE5NzM1NDcxYThkZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGYW5ncnVpIFNvbmcgPG1hc2tyYXlAZ29vZ2xlLmNvbT4KK0RhdGU6IFR1ZSwgNCBGZWIgMjAyMCAyMTo1NTo0NCAtMDgwMAorU3ViamVjdDogW1BBVENIXSBJbXByb3ZlIElGVU5DIGNoZWNrIFtCWiAjMjU1MDZdCisKK0dOVSBsZCdzIFJJU0NWIHBvcnQgZG9lcyBub3Qgc3VwcG9ydCBJRlVOQy4gbGQgLW5vLXBpZSBwcm9kdWNlcyBubworcmVsb2NhdGlvbiBhbmQgdGhlIHRlc3QgcGFzc2VkIGluY29ycmVjdGx5LiBCZSBtb3JlIHJpZ2lkIGJ5IHRlc3RpbmcKK0lSRUxBVElWRSBleHBsaWNpdGx5LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC9naXR3ZWIuY2dpP3A9Z2xpYmMuZ2l0O2g9ODdhNjk4YTIxNjQ2YjdlZTYyMDkyM2VmNWZmYTk3MzU0NzFhOGRkZF0KK1Rlc3RlZC1ieTogQXVyZWxpZW4gSmFybm8gPGF1cmVsaWVuQGF1cmVsMzIubmV0PgorUmV2aWV3ZWQtYnk6IEFkaGVtZXJ2YWwgWmFuZWxsYSA8YWRoZW1lcnZhbC56YW5lbGxhQGxpbmFyby5vcmc+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlICAgIHwgMiArLQorIGNvbmZpZ3VyZS5hYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggYjk1OWQyZDk4OC4uM2I5OGVjMzEyZiAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNDAzNSw3ICs0MDM1LDcgQEAgaWYgJHtDQy1jY30gJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgXAorIAkgICAgLW8gY29uZnRlc3QgY29uZnRlc3QuUyAxPiY1IDI+JjU7IHRoZW4KKyAgICMgRG8gYSBsaW5rIHRvIHNlZSBpZiB0aGUgYmFja2VuZCBzdXBwb3J0cyBJRlVOQyByZWxvY3MuCisgICAkUkVBREVMRiAtciBjb25mdGVzdCAxPiY1CistICBMQ19BTEw9QyAkUkVBREVMRiAtciBjb25mdGVzdCB8IGdyZXAgJ25vIHJlbG9jYXRpb25zJyA+L2Rldi9udWxsIHx8IHsKKysgIExDX0FMTD1DICRSRUFERUxGIC1XciBjb25mdGVzdCB8IGdyZXAgLXEgJ0lSRUxBVElWRVx8Ul9TUEFSQ19KTVBfSVJFTCcgJiYgeworICAgICBsaWJjX2N2X2xkX2dudV9pbmRpcmVjdF9mdW5jdGlvbj15ZXMKKyAgIH0KKyBmaQorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNDliOTAwYzFlZC4uZTIwMDM0ZjMwMSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjQ5LDcgKzY0OSw3IEBAIGlmICR7Q0MtY2N9ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIFwKKyAJICAgIC1vIGNvbmZ0ZXN0IGNvbmZ0ZXN0LlMgMT4mQVNfTUVTU0FHRV9MT0dfRkQgMj4mQVNfTUVTU0FHRV9MT0dfRkQ7IHRoZW4KKyAgICMgRG8gYSBsaW5rIHRvIHNlZSBpZiB0aGUgYmFja2VuZCBzdXBwb3J0cyBJRlVOQyByZWxvY3MuCisgICAkUkVBREVMRiAtciBjb25mdGVzdCAxPiZBU19NRVNTQUdFX0xPR19GRAorLSAgTENfQUxMPUMgJFJFQURFTEYgLXIgY29uZnRlc3QgfCBncmVwICdubyByZWxvY2F0aW9ucycgPi9kZXYvbnVsbCB8fCB7CisrICBMQ19BTEw9QyAkUkVBREVMRiAtV3IgY29uZnRlc3QgfCBncmVwIC1xICdJUkVMQVRJVkVcfFJfU1BBUkNfSk1QX0lSRUwnICYmIHsKKyAgICAgbGliY19jdl9sZF9nbnVfaW5kaXJlY3RfZnVuY3Rpb249eWVzCisgICB9CisgZmkKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvMDAzMS1GaXgtYnVpbGQtd2l0aC1HQ0MtMTAtd2hlbi1sb25nLWRvdWJsZS1kb3VibGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzEtRml4LWJ1aWxkLXdpdGgtR0NDLTEwLXdoZW4tbG9uZy1kb3VibGUtZG91YmxlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyNjIyOTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjLzAwMzEtRml4LWJ1aWxkLXdpdGgtR0NDLTEwLXdoZW4tbG9uZy1kb3VibGUtZG91YmxlLnBhdGNoCkBAIC0wLDAgKzEsMTcwIEBACitGcm9tIDQ5MzQ4YmVhZmU5YmExNTBjOWJkNDg1OTViM2YzNzIyOTliZGRiYjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb3NlcGggTXllcnMgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgorRGF0ZTogVHVlLCAxNyBNYXIgMjAyMCAyMjo1Nzo0MiArMDAwMAorU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBHQ0MgMTAgd2hlbiBsb25nIGRvdWJsZSA9IGRvdWJsZS4KKworT24gcGxhdGZvcm1zIHdoZXJlIGxvbmcgZG91YmxlIGhhcyB0aGUgc2FtZSBBQkkgYXMgZG91YmxlLCBnbGliYworZGVmaW5lcyBsb25nIGRvdWJsZSBmdW5jdGlvbnMgYXMgYWxpYXNlcyBmb3IgdGhlIGNvcnJlc3BvbmRpbmcgZG91YmxlCitmdW5jdGlvbnMuICBUaGUgZGVjbGFyYXRpb25zIG9mIHRob3NlIGZ1bmN0aW9ucyBpbiA8bWF0aC5oPiBhcmUKK2Rpc2FibGVkIHRvIGF2b2lkIHByb2JsZW1zIHdpdGggYWxpYXNlcyBoYXZpbmcgaW5jb21wYXRpYmxlIHR5cGVzLCBidXQKK0dDQyAxMCBub3cgZ2l2ZXMgZXJyb3JzIGZvciBpbmNvbXBhdGlibGUgdHlwZXMgd2hlbiB0aGUgbG9uZyBkb3VibGUKK2Z1bmN0aW9uIGlzIGtub3duIHRvIEdDQyBhcyBhIGJ1aWx0LWluIGZ1bmN0aW9uLCBub3QganVzdCB3aGVuIHRoZXJlCitpcyBhbiBpbmNvbXBhdGlibGUgaGVhZGVyIGRlY2xhcmF0aW9uLgorCitUaGlzIHBhdGNoIGZpeGVzIHRob3NlIGVycm9ycyBieSB1c2luZyBhcHByb3ByaWF0ZQorLWZuby1idWlsdGluLTxmdW5jdGlvbj4gb3B0aW9ucyB0byBjb21waWxlIHRoZSBkb3VibGUgZnVuY3Rpb25zLiAgVGhlCitsaXN0IG9mIENGTEFHUy0qIHNldHRpbmdzIGlzIGFuIGFwcHJvcHJpYXRlbHkgYWRhcHRlZCB2ZXJzaW9uIG9mIHRoYXQKK2luIHN5c2RlcHMvaWVlZTc1NC9sZGJsLW9wdC9NYWtlZmlsZSB1c2VkIHRoZXJlIGZvciBidWlsZGluZyBubGRibC0qLmMKK2ZpbGVzOyBpbiBwYXJ0aWN1bGFyLCB0aGUgb3B0aW9ucyBhcmUgdXNlZCBldmVuIGlmIEdDQyBkb2VzIG5vdAorY3VycmVudGx5IGhhdmUgYSBidWlsdC1pbiBmdW5jdGlvbiBvZiBhIGdpdmVuIGZ1bmN0aW9uLCBzbyB0aGF0IGFkZGluZworc3VjaCBhIGJ1aWx0LWluIGZ1bmN0aW9uIGluIGZ1dHVyZSB3aWxsIG5vdCBicmVhayB0aGUgZ2xpYmMgYnVpbGQuCitUaHVzLCB2YXJpb3VzIG9mIHRoZSBDRkxBR1MtKiBzZXR0aW5ncyBhcmUgb25seSBmb3IgZnV0dXJlLXByb29maW5nCithbmQgbWF5IG5vdCBjdXJyZW50bHkgYmUgbmVlZGVkIChhbmQgaXQncyBwb3NzaWJsZSBzb21lIGNvdWxkIGJlCitpcnJlbGV2YW50IGZvciBvdGhlciByZWFzb25zKS4KKworVGVzdGVkIHdpdGggYnVpbGQtbWFueS1nbGliY3MucHkgZm9yIGFybS1saW51eC1nbnVlYWJpIChjb21waWxlcnMgYW5kCitnbGliY3MgYnVpbGRzKSwgd2hlcmUgaXQgZml4ZXMgdGhlIGJ1aWxkIHRoYXQgcHJldmlvdXNseSBmYWlsZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPWdsaWJjLmdpdDthPWNvbW1pdDtoPTQ5MzQ4YmVhZmU5YmExNTBjOWJkNDg1OTViM2YzNzIyOTliZGRiYjBdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0KKyBtYXRoL01ha2VmaWxlIHwgMTIyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEyMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9tYXRoL01ha2VmaWxlIGIvbWF0aC9NYWtlZmlsZQoraW5kZXggODRhOGI5NGM3NC4uMGE1YTQwNDMwZSAxMDA2NDQKKy0tLSBhL21hdGgvTWFrZWZpbGUKKysrKyBiL21hdGgvTWFrZWZpbGUKK0BAIC02NTAsNiArNjUwLDEyOCBAQCBpZm5lcSAoJChsb25nLWRvdWJsZS1mY3RzKSx5ZXMpCisgIyBXZSB3b24ndCBjb21waWxlIHRoZSBgbG9uZyBkb3VibGUnIGNvZGUgYXQgYWxsLiAgVGVsbCB0aGUgYGRvdWJsZScgY29kZQorICMgdG8gZGVmaW5lIGFsaWFzZXMgZm9yIHRoZSBgRlVOQ2wnIG5hbWVzLgorIG1hdGgtQ1BQRkxBR1MgKz0gLUROT19MT05HX0RPVUJMRQorKyMgR0NDIDEwIGRpYWdub3NlcyBhbGlhc2VzIHdpdGggdHlwZXMgY29uZmxpY3Rpbmcgd2l0aCBidWlsdC1pbgorKyMgZnVuY3Rpb25zLgorK0NGTEFHUy13X2Fjb3MuYyArPSAtZm5vLWJ1aWx0aW4tYWNvc2wKKytDRkxBR1Mtd19hY29zaC5jICs9IC1mbm8tYnVpbHRpbi1hY29zaGwKKytDRkxBR1Mtd19hc2luLmMgKz0gLWZuby1idWlsdGluLWFzaW5sCisrQ0ZMQUdTLXNfYXNpbmguYyArPSAtZm5vLWJ1aWx0aW4tYXNpbmhsCisrQ0ZMQUdTLXNfYXRhbi5jICs9IC1mbm8tYnVpbHRpbi1hdGFubAorK0NGTEFHUy13X2F0YW4yLmMgKz0gLWZuby1idWlsdGluLWF0YW4ybAorK0NGTEFHUy13X2F0YW5oLmMgKz0gLWZuby1idWlsdGluLWF0YW5obAorK0NGTEFHUy1zX2NhYnMuYyArPSAtZm5vLWJ1aWx0aW4tY2Fic2wKKytDRkxBR1Mtc19jYWNvcy5jICs9IC1mbm8tYnVpbHRpbi1jYWNvc2wKKytDRkxBR1Mtc19jYWNvc2guYyArPSAtZm5vLWJ1aWx0aW4tY2Fjb3NobAorK0NGTEFHUy1zX2Nhbm9uaWNhbGl6ZS5jICs9IC1mbm8tYnVpbHRpbi1jYW5vbmljYWxpemVsCisrQ0ZMQUdTLXNfY2FyZy5jICs9IC1mbm8tYnVpbHRpbi1jYXJnbAorK0NGTEFHUy1zX2Nhc2luLmMgKz0gLWZuby1idWlsdGluLWNhc2lubAorK0NGTEFHUy1zX2Nhc2luaC5jICs9IC1mbm8tYnVpbHRpbi1jYXNpbmhsCisrQ0ZMQUdTLXNfY2F0YW4uYyArPSAtZm5vLWJ1aWx0aW4tY2F0YW5sCisrQ0ZMQUdTLXNfY2F0YW5oLmMgKz0gLWZuby1idWlsdGluLWNhdGFuaGwKKytDRkxBR1Mtc19jYnJ0LmMgKz0gLWZuby1idWlsdGluLWNicnRsCisrQ0ZMQUdTLXNfY2Nvcy5jICs9IC1mbm8tYnVpbHRpbi1jY29zbAorK0NGTEFHUy1zX2Njb3NoLmMgKz0gLWZuby1idWlsdGluLWNjb3NobAorK0NGTEFHUy1zX2NlaWwuYyArPSAtZm5vLWJ1aWx0aW4tY2VpbGwKKytDRkxBR1Mtc19jZXhwLmMgKz0gLWZuby1idWlsdGluLWNleHBsCisrQ0ZMQUdTLXNfY2ltYWcuYyArPSAtZm5vLWJ1aWx0aW4tY2ltYWdsCisrQ0ZMQUdTLXNfY2xvZy5jICs9IC1mbm8tYnVpbHRpbi1jbG9nbAorK0NGTEFHUy1zX2Nsb2cxMC5jICs9IC1mbm8tYnVpbHRpbi1jbG9nMTBsCisrQ0ZMQUdTLXNfY29uai5jICs9IC1mbm8tYnVpbHRpbi1jb25qbAorK0NGTEFHUy1zX2NvcHlzaWduLmMgKz0gLWZuby1idWlsdGluLWNvcHlzaWdubAorK0NGTEFHUy1zX2Nvcy5jICs9IC1mbm8tYnVpbHRpbi1jb3NsCisrQ0ZMQUdTLXdfY29zaC5jICs9IC1mbm8tYnVpbHRpbi1jb3NobAorK0NGTEFHUy1zX2Nwb3cuYyArPSAtZm5vLWJ1aWx0aW4tY3Bvd2wKKytDRkxBR1Mtc19jcHJvai5jICs9IC1mbm8tYnVpbHRpbi1jcHJvamwKKytDRkxBR1Mtc19jcmVhbC5jICs9IC1mbm8tYnVpbHRpbi1jcmVhbGwKKytDRkxBR1Mtc19jc2luLmMgKz0gLWZuby1idWlsdGluLWNzaW5sCisrQ0ZMQUdTLXNfY3NpbmguYyArPSAtZm5vLWJ1aWx0aW4tY3NpbmhsCisrQ0ZMQUdTLXNfY3NxcnQuYyArPSAtZm5vLWJ1aWx0aW4tY3NxcnRsCisrQ0ZMQUdTLXNfY3Rhbi5jICs9IC1mbm8tYnVpbHRpbi1jdGFubAorK0NGTEFHUy1zX2N0YW5oLmMgKz0gLWZuby1idWlsdGluLWN0YW5obAorK0NGTEFHUy1zX2RhZGQuYyArPSAtZm5vLWJ1aWx0aW4tZGFkZGwKKytDRkxBR1Mtc19kZGl2LmMgKz0gLWZuby1idWlsdGluLWRkaXZsCisrQ0ZMQUdTLXNfZG11bC5jICs9IC1mbm8tYnVpbHRpbi1kbXVsbAorK0NGTEFHUy1zX2RzdWIuYyArPSAtZm5vLWJ1aWx0aW4tZHN1YmwKKytDRkxBR1Mtc19lcmYuYyArPSAtZm5vLWJ1aWx0aW4tZXJmbAorK0NGTEFHUy1zX2VyZmMuYyArPSAtZm5vLWJ1aWx0aW4tZXJmY2wKKytDRkxBR1MtZV9leHAuYyArPSAtZm5vLWJ1aWx0aW4tZXhwbAorK0NGTEFHUy13X2V4cDEwLmMgKz0gLWZuby1idWlsdGluLWV4cDEwbAorK0NGTEFHUy1lX2V4cDIuYyArPSAtZm5vLWJ1aWx0aW4tZXhwMmwKKytDRkxBR1Mtc19leHBtMS5jICs9IC1mbm8tYnVpbHRpbi1leHBtMWwKKytDRkxBR1Mtc19mYWJzLmMgKz0gLWZuby1idWlsdGluLWZhYnNsCisrQ0ZMQUdTLXNfZmFkZC5jICs9IC1mbm8tYnVpbHRpbi1mYWRkbAorK0NGTEFHUy1zX2ZkaW0uYyArPSAtZm5vLWJ1aWx0aW4tZmRpbWwKKytDRkxBR1Mtc19mZGl2LmMgKz0gLWZuby1idWlsdGluLWZkaXZsCisrQ0ZMQUdTLXNfZmluaXRlLmMgKz0gLWZuby1idWlsdGluLWZpbml0ZWwKKytDRkxBR1Mtc19mbG9vci5jICs9IC1mbm8tYnVpbHRpbi1mbG9vcmwKKytDRkxBR1Mtc19mbWEuYyArPSAtZm5vLWJ1aWx0aW4tZm1hbAorK0NGTEFHUy1zX2ZtYXguYyArPSAtZm5vLWJ1aWx0aW4tZm1heGwKKytDRkxBR1Mtc19mbWF4bWFnLmMgKz0gLWZuby1idWlsdGluLWZtYXhtYWdsCisrQ0ZMQUdTLXNfZm1pbi5jICs9IC1mbm8tYnVpbHRpbi1mbWlubAorK0NGTEFHUy1zX2ZtaW5tYWcuYyArPSAtZm5vLWJ1aWx0aW4tZm1pbm1hZ2wKKytDRkxBR1Mtd19mbW9kLmMgKz0gLWZuby1idWlsdGluLWZtb2RsCisrQ0ZMQUdTLXNfZm11bC5jICs9IC1mbm8tYnVpbHRpbi1mbXVsbAorK0NGTEFHUy1zX2ZyZXhwLmMgKz0gLWZuby1idWlsdGluLWZyZXhwbAorK0NGTEFHUy1zX2Zyb21mcC5jICs9IC1mbm8tYnVpbHRpbi1mcm9tZnBsCisrQ0ZMQUdTLXNfZnJvbWZweC5jICs9IC1mbm8tYnVpbHRpbi1mcm9tZnB4bAorK0NGTEFHUy1zX2ZzdWIuYyArPSAtZm5vLWJ1aWx0aW4tZnN1YmwKKytDRkxBR1Mtc19nYW1tYS5jICs9IC1mbm8tYnVpbHRpbi1nYW1tYWwKKytDRkxBR1Mtc19nZXRwYXlsb2FkLmMgKz0gLWZuby1idWlsdGluLWdldHBheWxvYWRsCisrQ0ZMQUdTLXdfaHlwb3QuYyArPSAtZm5vLWJ1aWx0aW4taHlwb3RsCisrQ0ZMQUdTLXdfaWxvZ2IuYyArPSAtZm5vLWJ1aWx0aW4taWxvZ2JsCisrQ0ZMQUdTLXNfaXNpbmYuYyArPSAtZm5vLWJ1aWx0aW4taXNpbmZsCisrQ0ZMQUdTLXNfaXNuYW4uYyArPSAtZm5vLWJ1aWx0aW4taXNuYW5sCisrQ0ZMQUdTLXdfajAuYyArPSAtZm5vLWJ1aWx0aW4tajBsCisrQ0ZMQUdTLXdfajEuYyArPSAtZm5vLWJ1aWx0aW4tajFsCisrQ0ZMQUdTLXdfam4uYyArPSAtZm5vLWJ1aWx0aW4tam5sCisrQ0ZMQUdTLXNfbGRleHAuYyArPSAtZm5vLWJ1aWx0aW4tbGRleHBsCisrQ0ZMQUdTLXdfbGdhbW1hLmMgKz0gLWZuby1idWlsdGluLWxnYW1tYWwKKytDRkxBR1Mtd19sZ2FtbWFfci5jICs9IC1mbm8tYnVpbHRpbi1sZ2FtbWFsX3IKKytDRkxBR1Mtd19sbG9nYi5jICs9IC1mbm8tYnVpbHRpbi1sbG9nYmwKKytDRkxBR1Mtc19sbHJpbnQuYyArPSAtZm5vLWJ1aWx0aW4tbGxyaW50bAorK0NGTEFHUy1zX2xscm91bmQuYyArPSAtZm5vLWJ1aWx0aW4tbGxyb3VuZGwKKytDRkxBR1MtZV9sb2cuYyArPSAtZm5vLWJ1aWx0aW4tbG9nbAorK0NGTEFHUy13X2xvZzEwLmMgKz0gLWZuby1idWlsdGluLWxvZzEwbAorK0NGTEFHUy13X2xvZzFwLmMgKz0gLWZuby1idWlsdGluLWxvZzFwbAorK0NGTEFHUy1lX2xvZzIuYyArPSAtZm5vLWJ1aWx0aW4tbG9nMmwKKytDRkxBR1Mtc19sb2diLmMgKz0gLWZuby1idWlsdGluLWxvZ2JsCisrQ0ZMQUdTLXNfbHJpbnQuYyArPSAtZm5vLWJ1aWx0aW4tbHJpbnRsCisrQ0ZMQUdTLXNfbHJvdW5kLmMgKz0gLWZuby1idWlsdGluLWxyb3VuZGwKKytDRkxBR1Mtc19tb2RmLmMgKz0gLWZuby1idWlsdGluLW1vZGZsCisrQ0ZMQUdTLXNfbmFuLmMgKz0gLWZuby1idWlsdGluLW5hbmwKKytDRkxBR1Mtc19uZWFyYnlpbnQuYyArPSAtZm5vLWJ1aWx0aW4tbmVhcmJ5aW50bAorK0NGTEFHUy1zX25leHRhZnRlci5jICs9IC1mbm8tYnVpbHRpbi1uZXh0YWZ0ZXJsCisrQ0ZMQUdTLXNfbmV4dGRvd24uYyArPSAtZm5vLWJ1aWx0aW4tbmV4dGRvd25sCisrQ0ZMQUdTLXNfbmV4dHRvd2FyZC5jICs9IC1mbm8tYnVpbHRpbi1uZXh0dG93YXJkIC1mbm8tYnVpbHRpbi1uZXh0dG93YXJkbAorK0NGTEFHUy1zX25leHR0b3dhcmRmLmMgKz0gLWZuby1idWlsdGluLW5leHR0b3dhcmRmCisrQ0ZMQUdTLXNfbmV4dHVwLmMgKz0gLWZuby1idWlsdGluLW5leHR1cGwKKytDRkxBR1MtZV9wb3cuYyArPSAtZm5vLWJ1aWx0aW4tcG93bAorK0NGTEFHUy13X3JlbWFpbmRlci5jICs9IC1mbm8tYnVpbHRpbi1yZW1haW5kZXJsIC1mbm8tYnVpbHRpbi1kcmVtbAorK0NGTEFHUy1zX3JlbXF1by5jICs9IC1mbm8tYnVpbHRpbi1yZW1xdW9sCisrQ0ZMQUdTLXNfcmludC5jICs9IC1mbm8tYnVpbHRpbi1yaW50bAorK0NGTEFHUy1zX3JvdW5kLmMgKz0gLWZuby1idWlsdGluLXJvdW5kbAorK0NGTEFHUy1zX3JvdW5kZXZlbi5jICs9IC1mbm8tYnVpbHRpbi1yb3VuZGV2ZW5sCisrQ0ZMQUdTLXdfc2NhbGIuYyArPSAtZm5vLWJ1aWx0aW4tc2NhbGJsCisrQ0ZMQUdTLXdfc2NhbGJsbi5jICs9IC1mbm8tYnVpbHRpbi1zY2FsYmxubAorK0NGTEFHUy1zX3NjYWxibi5jICs9IC1mbm8tYnVpbHRpbi1zY2FsYm5sCisrQ0ZMQUdTLXNfc2V0cGF5bG9hZC5jICs9IC1mbm8tYnVpbHRpbi1zZXRwYXlsb2FkbAorK0NGTEFHUy1zX3NldHBheWxvYWRzaWcuYyArPSAtZm5vLWJ1aWx0aW4tc2V0cGF5bG9hZHNpZ2wKKytDRkxBR1Mtc19zaWduaWZpY2FuZC5jICs9IC1mbm8tYnVpbHRpbi1zaWduaWZpY2FuZGwKKytDRkxBR1Mtc19zaW4uYyArPSAtZm5vLWJ1aWx0aW4tc2lubAorK0NGTEFHUy1zX3NpbmNvcy5jICs9IC1mbm8tYnVpbHRpbi1zaW5jb3NsCisrQ0ZMQUdTLXdfc2luaC5jICs9IC1mbm8tYnVpbHRpbi1zaW5obAorK0NGTEFHUy13X3NxcnQuYyArPSAtZm5vLWJ1aWx0aW4tc3FydGwKKytDRkxBR1Mtc190YW4uYyArPSAtZm5vLWJ1aWx0aW4tdGFubAorK0NGTEFHUy1zX3RhbmguYyArPSAtZm5vLWJ1aWx0aW4tdGFuaGwKKytDRkxBR1Mtd190Z2FtbWEuYyArPSAtZm5vLWJ1aWx0aW4tdGdhbW1hbAorK0NGTEFHUy1zX3RvdGFsb3JkZXIuYyArPSAtZm5vLWJ1aWx0aW4tdG90YWxvcmRlcmwKKytDRkxBR1Mtc190b3RhbG9yZGVybWFnLmMgKz0gLWZuby1idWlsdGluLXRvdGFsb3JkZXJtYWdsCisrQ0ZMQUdTLXNfdHJ1bmMuYyArPSAtZm5vLWJ1aWx0aW4tdHJ1bmNsCisrQ0ZMQUdTLXNfdWZyb21mcC5jICs9IC1mbm8tYnVpbHRpbi11ZnJvbWZwbAorK0NGTEFHUy1zX3Vmcm9tZnB4LmMgKz0gLWZuby1idWlsdGluLXVmcm9tZnB4bAorK0NGTEFHUy1zX3kwLmMgKz0gLWZuby1idWlsdGluLXkwbAorK0NGTEFHUy1zX3kxLmMgKz0gLWZuby1idWlsdGluLXkxbAorK0NGTEFHUy1zX3luLmMgKz0gLWZuby1idWlsdGluLXlubAorIGVuZGlmCisgCisgIyBUaGVzZSBmaWxlcyBxdWlldCBzTmFOcyBpbiBhIHdheSB0aGF0IGlzIG9wdGltaXplZCBhd2F5IHdpdGhvdXQKKy0tIAorMi4yNi4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvQ1ZFLTIwMjAtMTAwMjkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDIwLTEwMDI5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIyYTE1ZjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjL0NWRS0yMDIwLTEwMDI5LnBhdGNoCkBAIC0wLDAgKzEsMTI4IEBACitGcm9tIGNlMjY1ZWM1YmMyNWVjMzVmYmE1MzgwN2FiYWMxYjBjODQ2OTg5NWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb3NlcGggTXllcnMgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgorRGF0ZTogV2VkLCAxMiBGZWIgMjAyMCAyMzozMTo1NiArMDAwMAorU3ViamVjdDogW1BBVENIXSBBdm9pZCBsZGJsLTk2IHN0YWNrIGNvcnJ1cHRpb24gZnJvbSByYW5nZSByZWR1Y3Rpb24gb2YKKworIHBzZXVkby16ZXJvIChidWcgMjU0ODcpLgorCitCdWcgMjU0ODcgcmVwb3J0cyBzdGFjayBjb3JydXB0aW9uIGluIGxkYmwtOTYgc2lubCBvbiBhIHBzZXVkby16ZXJvCithcmd1bWVudCAoYW4gcmVwcmVzZW50YXRpb24gd2hlcmUgYWxsIHRoZSBzaWduaWZpY2FuZCBiaXRzLCBpbmNsdWRpbmcKK3RoZSBleHBsaWNpdCBoaWdoIGJpdCwgYXJlIHplcm8sIGJ1dCB0aGUgZXhwb25lbnQgaXMgbm90IHplcm8sIHdoaWNoCitpcyBub3QgYSB2YWxpZCByZXByZXNlbnRhdGlvbiBmb3IgdGhlIGxvbmcgZG91YmxlIHR5cGUpLgorCitBbHRob3VnaCB0aGlzIGlzIG5vdCBhIHZhbGlkIGxvbmcgZG91YmxlIHJlcHJlc2VudGF0aW9uLCBleGlzdGluZworcHJhY3RpY2UgaW4gdGhpcyBhcmVhIChzZWUgYnVnIDQ1ODYsIG9yaWdpbmFsbHkgbWFya2VkIGludmFsaWQgYnV0CitzdWJzZXF1ZW50bHkgZml4ZWQpIGlzIHRoYXQgd2Ugc3RpbGwgc2VlayB0byBhdm9pZCBpbnZhbGlkIG1lbW9yeQorYWNjZXNzZXMgYXMgYSByZXN1bHQsIGluIGNhc2Ugb2YgcHJvZ3JhbXMgdGhhdCB0cmVhdCBhcmJpdHJhcnkgYmluYXJ5CitkYXRhIGFzIGxvbmcgZG91YmxlIHJlcHJlc2VudGF0aW9ucywgYWx0aG91Z2ggdGhlIGludmFsaWQKK3JlcHJlc2VudGF0aW9ucyBvZiB0aGUgbGRibC05NiBmb3JtYXQgZG8gbm90IG5lZWQgdG8gYmUgY29uc2lzdGVudGx5CitoYW5kbGVkIHRoZSBzYW1lIGFzIGFueSBwYXJ0aWN1bGFyIHZhbGlkIHJlcHJlc2VudGF0aW9uLgorCitUaGlzIHBhdGNoIG1ha2VzIHRoZSByYW5nZSByZWR1Y3Rpb24gZGV0ZWN0IHBzZXVkby16ZXJvIGFuZCB1bm5vcm1hbAorcmVwcmVzZW50YXRpb25zIHRoYXQgd291bGQgb3RoZXJ3aXNlIGdvIHRvIF9fa2VybmVsX3JlbV9waW8yLCBhbmQKK3JldHVybnMgYSBOYU4gZm9yIHRoZW0gaW5zdGVhZCBvZiBjb250aW51aW5nIHdpdGggdGhlIHJhbmdlIHJlZHVjdGlvbgorcHJvY2Vzcy4gIChQc2V1ZG8temVybyBhbmQgdW5ub3JtYWwgcmVwcmVzZW50YXRpb25zIHdob3NlIHVuYmlhc2VkCitleHBvbmVudCBpcyBsZXNzIHRoYW4gLTEgaGF2ZSBhbHJlYWR5IGJlZW4gc2FmZWx5IHJldHVybmVkIGZyb20gdGhlCitmdW5jdGlvbiBiZWZvcmUgdGhpcyBwb2ludCB3aXRob3V0IGdvaW5nIHRocm91Z2ggdGhlIHJlc3Qgb2YgcmFuZ2UKK3JlZHVjdGlvbi4pICBQc2V1ZG8temVybyByZXByZXNlbnRhdGlvbnMgd291bGQgcHJldmlvdXNseSByZXN1bHQgaW4KK3RoZSB2YWx1ZSBwYXNzZWQgdG8gX19rZXJuZWxfcmVtX3BpbzIgYmVpbmcgYWxsLXplcm8sIHdoaWNoIGlzCitkZWZpbml0ZWx5IHVuc2FmZTsgdW5ub3JtYWwgcmVwcmVzZW50YXRpb25zIHdvdWxkIHByZXZpb3VzbHkgcmVzdWx0IGluCithIHZhbHVlIHBhc3NlZCB3aG9zZSBoaWdoIGJpdCBpcyB6ZXJvLCB3aGljaCBtaWdodCB3ZWxsIGJlIHVuc2FmZQorc2luY2UgdGhhdCBpcyBub3QgYSBmb3JtIG9mIGlucHV0IGV4cGVjdGVkIGJ5IF9fa2VybmVsX3JlbV9waW8yLgorCitUZXN0ZWQgZm9yIHg4Nl82NC4KKworQ1ZFOiBDVkUtMjAyMC0xMDAyOQorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvZ2l0d2ViLmNnaT9wPWdsaWJjLmdpdDsKK2E9cGF0Y2g7aD05MzMzNDk4Nzk0Y2RlMWQ1Y2NhNTE4YmFkZjc5NTMzYTI0MTE0YjZmXQorU2lnbmVkLW9mZi1ieTogWmhpeGlvbmcgQ2hpIDx6aGl4aW9uZy5jaGlAd2luZHJpdmVyLmNvbT4KKworLS0tCisgc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvTWFrZWZpbGUgICAgICAgICAgIHwgIDMgKystCisgc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvZV9yZW1fcGlvMmwuYyAgICAgIHwgMTIgKysrKysrKysrCisgc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvdGVzdC1zaW5sLXBzZXVkby5jIHwgNDEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCA1NSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L3Rlc3Qtc2lubC1wc2V1ZG8uYworCitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvTWFrZWZpbGUgYi9zeXNkZXBzL2llZWU3NTQvbGRibC05Ni9NYWtlZmlsZQoraW5kZXggYjEwMzI1NC4uMDUyYzFjNyAxMDA2NDQKKy0tLSBhL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L01ha2VmaWxlCisrKysgYi9zeXNkZXBzL2llZWU3NTQvbGRibC05Ni9NYWtlZmlsZQorQEAgLTE3LDUgKzE3LDYgQEAKKyAjIDxodHRwczovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCisgCisgaWZlcSAoJChzdWJkaXIpLG1hdGgpCistdGVzdHMgKz0gdGVzdC1jYW5vbmljYWwtbGRibC05NiB0ZXN0LXRvdGFsb3JkZXJsLWxkYmwtOTYKKyt0ZXN0cyArPSB0ZXN0LWNhbm9uaWNhbC1sZGJsLTk2IHRlc3QtdG90YWxvcmRlcmwtbGRibC05NiB0ZXN0LXNpbmwtcHNldWRvCisrQ0ZMQUdTLXRlc3Qtc2lubC1wc2V1ZG8uYyArPSAtZnN0YWNrLXByb3RlY3Rvci1hbGwKKyBlbmRpZgorZGlmZiAtLWdpdCBhL3N5c2RlcHMvaWVlZTc1NC9sZGJsLTk2L2VfcmVtX3BpbzJsLmMgYi9zeXNkZXBzL2llZWU3NTQvbGRibC05Ni9lX3JlbV9waW8ybC5jCitpbmRleCA4MDVkZTIyLi4xYWVjY2I0IDEwMDY0NAorLS0tIGEvc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvZV9yZW1fcGlvMmwuYworKysrIGIvc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvZV9yZW1fcGlvMmwuYworQEAgLTIxMCw2ICsyMTAsMTggQEAgX19pZWVlNzU0X3JlbV9waW8ybCAobG9uZyBkb3VibGUgeCwgbG9uZyBkb3VibGUgKnkpCisgICAgICAgcmV0dXJuIDA7CisgICAgIH0KKyAKKysgIGlmICgoaTAgJiAweDgwMDAwMDAwKSA9PSAwKQorKyAgICB7CisrICAgICAgLyogUHNldWRvLXplcm8gYW5kIHVubm9ybWFsIHJlcHJlc2VudGF0aW9ucyBhcmUgbm90IHZhbGlkCisrCSByZXByZXNlbnRhdGlvbnMgb2YgbG9uZyBkb3VibGUuICBXZSBuZWVkIHRvIGF2b2lkIHN0YWNrCisrCSBjb3JydXB0aW9uIGluIF9fa2VybmVsX3JlbV9waW8yLCB3aGljaCBleHBlY3RzIGlucHV0IGluIGEKKysJIHBhcnRpY3VsYXIgbm9ybWFsIGZvcm0sIGJ1dCB0aG9zZSByZXByZXNlbnRhdGlvbnMgZG8gbm90IG5lZWQKKysJIHRvIGJlIGNvbnNpc3RlbnRseSBoYW5kbGVkIGxpa2UgYW55IHBhcnRpY3VsYXIgZmxvYXRpbmctcG9pbnQKKysJIHZhbHVlLiAgKi8KKysgICAgICB5WzFdID0geVswXSA9IF9fYnVpbHRpbl9uYW5sICgiIik7CisrICAgICAgcmV0dXJuIDA7CisrICAgIH0KKysKKyAgIC8qIFNwbGl0IHRoZSA2NCBiaXRzIG9mIHRoZSBtYW50aXNzYSBpbnRvIHRocmVlIDI0LWJpdCBpbnRlZ2VycworICAgICAgc3RvcmVkIGluIGEgZG91YmxlIGFycmF5LiAgKi8KKyAgIGV4cCA9IGowIC0gMjM7CitkaWZmIC0tZ2l0IGEvc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvdGVzdC1zaW5sLXBzZXVkby5jIGIvc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvdGVzdC1zaW5sLXBzZXVkby5jCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uZjU5Yjk3NworLS0tIC9kZXYvbnVsbAorKysrIGIvc3lzZGVwcy9pZWVlNzU0L2xkYmwtOTYvdGVzdC1zaW5sLXBzZXVkby5jCitAQCAtMCwwICsxLDQxIEBACisrLyogVGVzdCBzaW5sIGZvciBwc2V1ZG8temVyb3MgYW5kIHVubm9ybWFscyBmb3IgbGRibC05NiAoYnVnIDI1NDg3KS4KKysgICBDb3B5cmlnaHQgKEMpIDIwMjAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgdGhlIEdOVSBDIExpYnJhcnkuCisrCisrICAgVGhlIEdOVSBDIExpYnJhcnkgaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCisrICAgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlcgorKyAgIHZlcnNpb24gMi4xIG9mIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorKworKyAgIFRoZSBHTlUgQyBMaWJyYXJ5IGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlIEdOVQorKyAgIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrCisrICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYworKyAgIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGUgR05VIEMgTGlicmFyeTsgaWYgbm90LCBzZWUKKysgICA8aHR0cHM6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LiAgKi8KKysKKysjaW5jbHVkZSA8bWF0aC5oPgorKyNpbmNsdWRlIDxtYXRoX2xkYmwuaD4KKysjaW5jbHVkZSA8c3RkaW50Lmg+CisrCisrc3RhdGljIGludAorK2RvX3Rlc3QgKHZvaWQpCisreworKyAgZm9yIChpbnQgaSA9IDA7IGkgPCA2NDsgaSsrKQorKyAgICB7CisrICAgICAgdWludDY0X3Qgc2lnID0gaSA9PSA2MyA/IDAgOiAxVUxMIDw8IGk7CisrICAgICAgbG9uZyBkb3VibGUgbGQ7CisrICAgICAgU0VUX0xET1VCTEVfV09SRFMgKGxkLCAweDQxNDEsCisrCQkJIHNpZyA+PiAzMiwgc2lnICYgMHhmZmZmZmZmZlVMTCk7CisrICAgICAgLyogVGhlIHJlcXVpcmVtZW50IGlzIHRoYXQgbm8gc3RhY2sgb3ZlcmZsb3cgb2NjdXJzIHdoZW4gdGhlCisrCSBwc2V1ZG8temVybyBvciB1bm5vcm1hbCBnb2VzIHRocm91Z2ggcmFuZ2UgcmVkdWN0aW9uLiAgKi8KKysgICAgICB2b2xhdGlsZSBsb25nIGRvdWJsZSBsZHI7CisrICAgICAgbGRyID0gc2lubCAobGQpOworKyAgICAgICh2b2lkKSBsZHI7CisrICAgIH0KKysgIHJldHVybiAwOworK30KKysKKysjaW5jbHVkZSA8c3VwcG9ydC90ZXN0LWRyaXZlci5jPgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9hZGQtY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9hZGQtY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDcxMTIxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvYWRkLWNyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMTUgKzAsMCBAQAotLS0tCi0gbG9jYWxlL3Byb2dyYW1zL2MuaCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDQwNyArKysrKysrKysrKysrKysrKysrKysrCi0gbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jIHwgIDUyOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGxvY2FsZS9wcm9ncmFtcy94YWxsb2MuaCAgICAgICAgICAgICAgICAgICB8ICAxMjkgKysrKysrKwotIGxvY2FsZWRlZi9NYWtlZmlsZS5pbiAgICAgICAgICAgICAgICAgICAgICB8ICAgIDggCi0gNCBmaWxlcyBjaGFuZ2VkLCAxMDcxIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotLS0tIC9kZXYvbnVsbAotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jCi1AQCAtMCwwICsxLDUyOCBAQAotKy8qCi0rICogaGFyZGxpbmsgLSBjb25zb2xpZGF0ZSBkdXBsaWNhdGUgZmlsZXMgdmlhIGhhcmRsaW5rcwotKyAqCi0rICogQ29weXJpZ2h0IChDKSAyMDE4IFJlZCBIYXQsIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSsgKiBXcml0dGVuIGJ5IEpha3ViIEplbGluZWsgPGpha3ViQHJlZGhhdC5jb20+Ci0rICoKLSsgKiBDb3B5cmlnaHQgKEMpIDIwMTkgS2FyZWwgWmFrIDxremFrQHJlZGhhdC5jb20+Ci0rICoKLSsgKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQotKyAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rICogdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKLSsgKiAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotKyAqCi0rICogVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd291bGQgYmUgdXNlZnVsLAotKyAqIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rICogTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotKyAqIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0rICoKLSsgKiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhbG9uZwotKyAqIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4sCi0rICogNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQS4KLSsgKi8KLSsjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxnZXRvcHQuaD4KLSsjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgPHN5cy9zdGF0Lmg+Ci0rI2luY2x1ZGUgPHN5cy9tbWFuLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxkaXJlbnQuaD4KLSsjaW5jbHVkZSA8ZmNudGwuaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSsjaWZkZWYgSEFWRV9QQ1JFCi0rIyBkZWZpbmUgUENSRTJfQ09ERV9VTklUX1dJRFRIIDgKLSsjIGluY2x1ZGUgPHBjcmUyLmg+Ci0rI2VuZGlmCi0rCi0rI2luY2x1ZGUgImMuaCIKLSsjaW5jbHVkZSAieGFsbG9jLmgiCi0rI2luY2x1ZGUgIm5scy5oIgotKyNpbmNsdWRlICJjbG9zZXN0cmVhbS5oIgotKwotKyNkZWZpbmUgTkhBU0ggICAoMTw8MTcpICAvKiBNdXN0IGJlIGEgcG93ZXIgb2YgMiEgKi8KLSsjZGVmaW5lIE5CVUYgICAgNjQKLSsKLStzdHJ1Y3QgaGFyZGxpbmtfZmlsZTsKLSsKLStzdHJ1Y3QgaGFyZGxpbmtfaGFzaCB7Ci0rCXN0cnVjdCBoYXJkbGlua19oYXNoICpuZXh0OwotKwlzdHJ1Y3QgaGFyZGxpbmtfZmlsZSAqY2hhaW47Ci0rCW9mZl90IHNpemU7Ci0rCXRpbWVfdCBtdGltZTsKLSt9OwotKwotK3N0cnVjdCBoYXJkbGlua19kaXIgewotKwlzdHJ1Y3QgaGFyZGxpbmtfZGlyICpuZXh0OwotKwljaGFyIG5hbWVbXTsKLSt9OwotKwotK3N0cnVjdCBoYXJkbGlua19maWxlIHsKLSsJc3RydWN0IGhhcmRsaW5rX2ZpbGUgKm5leHQ7Ci0rCWlub190IGlubzsKLSsJZGV2X3QgZGV2OwotKwl1bnNpZ25lZCBpbnQgY2tzdW07Ci0rCWNoYXIgbmFtZVtdOwotK307Ci0rCi0rc3RydWN0IGhhcmRsaW5rX2R5bnN0ciB7Ci0rCWNoYXIgKmJ1ZjsKLSsJc2l6ZV90IGFsbG9jOwotK307Ci0rCi0rc3RydWN0IGhhcmRsaW5rX2N0bCB7Ci0rCXN0cnVjdCBoYXJkbGlua19kaXIgKmRpcnM7Ci0rCXN0cnVjdCBoYXJkbGlua19oYXNoICpocHNbTkhBU0hdOwotKwljaGFyIGlvYnVmMVtCVUZTSVpdOwotKwljaGFyIGlvYnVmMltCVUZTSVpdOwotKwkvKiBzdW1tYXJ5IGNvdW50ZXJzICovCi0rCXVuc2lnbmVkIGxvbmcgbG9uZyBuZGlyczsKLSsJdW5zaWduZWQgbG9uZyBsb25nIG5vYmplY3RzOwotKwl1bnNpZ25lZCBsb25nIGxvbmcgbnJlZ2ZpbGVzOwotKwl1bnNpZ25lZCBsb25nIGxvbmcgbmNvbXA7Ci0rCXVuc2lnbmVkIGxvbmcgbG9uZyBubGlua3M7Ci0rCXVuc2lnbmVkIGxvbmcgbG9uZyBuc2F2ZWQ7Ci0rCS8qIGN1cnJlbnQgZGV2aWNlICovCi0rCWRldl90IGRldjsKLSsJLyogZmxhZ3MgKi8KLSsJdW5zaWduZWQgaW50IHZlcmJvc2U7Ci0rCXVuc2lnbmVkIGludAotKwkJbm9fbGluazoxLAotKwkJY29udGVudF9vbmx5OjEsCi0rCQlmb3JjZToxOwotK307Ci0rLyogY3RsIGlzIGluIGdsb2JhbCBzY29wZSBkdWUgdXNlIGluIGF0ZXhpdCgpICovCi0rc3RydWN0IGhhcmRsaW5rX2N0bCBnbG9iYWxfY3RsOwotKwotK19fYXR0cmlidXRlX18gKChhbHdheXNfaW5saW5lKSkKLStzdGF0aWMgaW5saW5lIHVuc2lnbmVkIGludCBoYXNoKG9mZl90IHNpemUsIHRpbWVfdCBtdGltZSkKLSt7Ci0rCXJldHVybiAoc2l6ZSBeIG10aW1lKSAmIChOSEFTSCAtIDEpOwotK30KLSsKLStfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lubGluZSkpCi0rc3RhdGljIGlubGluZSBpbnQgc3RjbXAoc3RydWN0IHN0YXQgKnN0MSwgc3RydWN0IHN0YXQgKnN0MiwgaW50IGNvbnRlbnRfc2NvcGUpCi0rewotKwlpZiAoY29udGVudF9zY29wZSkKLSsJCXJldHVybiBzdDEtPnN0X3NpemUgIT0gc3QyLT5zdF9zaXplOwotKwotKwlyZXR1cm4gc3QxLT5zdF9tb2RlICE9IHN0Mi0+c3RfbW9kZQotKwkJfHwgc3QxLT5zdF91aWQgIT0gc3QyLT5zdF91aWQKLSsJCXx8IHN0MS0+c3RfZ2lkICE9IHN0Mi0+c3RfZ2lkCi0rCQl8fCBzdDEtPnN0X3NpemUgIT0gc3QyLT5zdF9zaXplCi0rCQl8fCBzdDEtPnN0X210aW1lICE9IHN0Mi0+c3RfbXRpbWU7Ci0rfQotKwotK3N0YXRpYyB2b2lkIHByaW50X3N1bW1hcnkodm9pZCkKLSt7Ci0rCXN0cnVjdCBoYXJkbGlua19jdGwgY29uc3QgKmNvbnN0IGN0bCA9ICZnbG9iYWxfY3RsOwotKwotKwlpZiAoIWN0bC0+dmVyYm9zZSkKLSsJCXJldHVybjsKLSsKLSsJaWYgKGN0bC0+dmVyYm9zZSA+IDEgJiYgY3RsLT5ubGlua3MpCi0rCQlmcHV0YygnXG4nLCBzdGRvdXQpOwotKwotKwlwcmludGYoXygiRGlyZWN0b3JpZXM6ICAgJTlsbGRcbiIpLCBjdGwtPm5kaXJzKTsKLSsJcHJpbnRmKF8oIk9iamVjdHM6ICAgICAgICU5bGxkXG4iKSwgY3RsLT5ub2JqZWN0cyk7Ci0rCXByaW50ZihfKCJSZWd1bGFyIGZpbGVzOiAlOWxsZFxuIiksIGN0bC0+bnJlZ2ZpbGVzKTsKLSsJcHJpbnRmKF8oIkNvbXBhcmlzb25zOiAgICU5bGxkXG4iKSwgY3RsLT5uY29tcCk7Ci0rCXByaW50ZiggICIlcyU5bGxkXG4iLCAoY3RsLT5ub19saW5rID8KLSsJICAgICAgIF8oIldvdWxkIGxpbms6ICAgICIpIDoKLSsJICAgICAgIF8oIkxpbmtlZDogICAgICAgICIpKSwgY3RsLT5ubGlua3MpOwotKwlwcmludGYoICAiJXMgJTlsbGRcbiIsIChjdGwtPm5vX2xpbmsgPwotKwkgICAgICAgXygiV291bGQgc2F2ZTogICAiKSA6Ci0rCSAgICAgICBfKCJTYXZlZDogICAgICAgICIpKSwgY3RsLT5uc2F2ZWQpOwotK30KLSsKLStzdGF0aWMgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKSB1c2FnZSh2b2lkKQotK3sKLSsJZnB1dHMoVVNBR0VfSEVBREVSLCBzdGRvdXQpOwotKwlwcmludGYoXygiICVzIFtvcHRpb25zXSBkaXJlY3RvcnkuLi5cbiIpLCBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7Ci0rCi0rCWZwdXRzKFVTQUdFX1NFUEFSQVRPUiwgc3Rkb3V0KTsKLSsJcHV0cyhfKCJDb25zb2xpZGF0ZSBkdXBsaWNhdGUgZmlsZXMgdXNpbmcgaGFyZGxpbmtzLiIpKTsKLSsKLSsJZnB1dHMoVVNBR0VfT1BUSU9OUywgc3Rkb3V0KTsKLSsJcHV0cyhfKCIgLWMsIC0tY29udGVudCAgICAgICAgICBjb21wYXJlIG9ubHkgY29udGVudHMsIGlnbm9yZSBwZXJtaXNzaW9uLCBldGMuIikpOwotKwlwdXRzKF8oIiAtbiwgLS1kcnktcnVuICAgICAgICAgIGRvbid0IGFjdHVhbGx5IGxpbmsgYW55dGhpbmciKSk7Ci0rCXB1dHMoXygiIC12LCAtLXZlcmJvc2UgICAgICAgICAgcHJpbnQgc3VtbWFyeSBhZnRlciBoYXJkbGlua2luZyIpKTsKLSsJcHV0cyhfKCIgLXZ2ICAgICAgICAgICAgICAgICAgICBwcmludCBldmVyeSBoYXJkbGlua2VkIGZpbGUgYW5kIHN1bW1hcnkiKSk7Ci0rCXB1dHMoXygiIC1mLCAtLWZvcmNlICAgICAgICAgICAgZm9yY2UgaGFyZGxpbmtpbmcgYWNyb3NzIGZpbGVzeXN0ZW1zIikpOwotKwlwdXRzKF8oIiAteCwgLS1leGNsdWRlIDxyZWdleD4gIGV4Y2x1ZGUgZmlsZXMgbWF0Y2hpbmcgcGF0dGVybiIpKTsKLSsKLSsJZnB1dHMoVVNBR0VfU0VQQVJBVE9SLCBzdGRvdXQpOwotKwlwcmludGYoVVNBR0VfSEVMUF9PUFRJT05TKDE2KSk7IC8qIGNoYXIgb2Zmc2V0IHRvIGFsaWduIG9wdGlvbiBkZXNjcmlwdGlvbnMgKi8KLSsJcHJpbnRmKFVTQUdFX01BTl9UQUlMKCJoYXJkbGluaygxKSIpKTsKLSsJZXhpdChFWElUX1NVQ0NFU1MpOwotK30KLSsKLStfX2F0dHJpYnV0ZV9fICgoYWx3YXlzX2lubGluZSkpCi0rc3RhdGljIGlubGluZSBzaXplX3QgYWRkMihzaXplX3QgYSwgc2l6ZV90IGIpCi0rewotKwlzaXplX3Qgc3VtID0gYSArIGI7Ci0rCi0rCWlmIChzdW0gPCBhKQotKwkJZXJyeChFWElUX0ZBSUxVUkUsIF8oImludGVnZXIgb3ZlcmZsb3ciKSk7Ci0rCXJldHVybiBzdW07Ci0rfQotKwotK19fYXR0cmlidXRlX18gKChhbHdheXNfaW5saW5lKSkKLStzdGF0aWMgaW5saW5lIHNpemVfdCBhZGQzKHNpemVfdCBhLCBzaXplX3QgYiwgc2l6ZV90IGMpCi0rewotKwlyZXR1cm4gYWRkMihhZGQyKGEsIGIpLCBjKTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgZ3Jvd3N0cihzdHJ1Y3QgaGFyZGxpbmtfZHluc3RyICpzdHIsIHNpemVfdCBuZXdsZW4pCi0rewotKwlpZiAobmV3bGVuIDwgc3RyLT5hbGxvYykKLSsJCXJldHVybjsKLSsJc3RyLT5idWYgPSB4cmVhbGxvYyhzdHItPmJ1Ziwgc3RyLT5hbGxvYyA9IGFkZDIobmV3bGVuLCAxKSk7Ci0rfQotKwotK3N0YXRpYyB2b2lkIHByb2Nlc3NfcGF0aChzdHJ1Y3QgaGFyZGxpbmtfY3RsICpjdGwsIGNvbnN0IGNoYXIgKm5hbWUpCi0rewotKwlzdHJ1Y3Qgc3RhdCBzdCwgc3QyLCBzdDM7Ci0rCWNvbnN0IHNpemVfdCBuYW1lbGVuID0gc3RybGVuKG5hbWUpOwotKwotKwljdGwtPm5vYmplY3RzKys7Ci0rCWlmIChsc3RhdChuYW1lLCAmc3QpKQotKwkJcmV0dXJuOwotKwotKwlpZiAoc3Quc3RfZGV2ICE9IGN0bC0+ZGV2ICYmICFjdGwtPmZvcmNlKSB7Ci0rCQlpZiAoY3RsLT5kZXYpCi0rCQkJZXJyeChFWElUX0ZBSUxVUkUsCi0rCQkJICAgICBfKCIlcyBpcyBvbiBkaWZmZXJlbnQgZmlsZXN5c3RlbSB0aGFuIHRoZSByZXN0ICIKLSsJCQkgICAgICAgIih1c2UgLWYgb3B0aW9uIHRvIG92ZXJyaWRlKS4iKSwgbmFtZSk7Ci0rCQljdGwtPmRldiA9IHN0LnN0X2RldjsKLSsJfQotKwlpZiAoU19JU0RJUihzdC5zdF9tb2RlKSkgewotKwkJc3RydWN0IGhhcmRsaW5rX2RpciAqZHAgPSB4bWFsbG9jKGFkZDMoc2l6ZW9mKCpkcCksIG5hbWVsZW4sIDEpKTsKLSsJCW1lbWNweShkcC0+bmFtZSwgbmFtZSwgbmFtZWxlbiArIDEpOwotKwkJZHAtPm5leHQgPSBjdGwtPmRpcnM7Ci0rCQljdGwtPmRpcnMgPSBkcDsKLSsKLSsJfSBlbHNlIGlmIChTX0lTUkVHKHN0LnN0X21vZGUpKSB7Ci0rCQlpbnQgZmQsIGk7Ci0rCQlzdHJ1Y3QgaGFyZGxpbmtfZmlsZSAqZnAsICpmcDI7Ci0rCQlzdHJ1Y3QgaGFyZGxpbmtfaGFzaCAqaHA7Ci0rCQljb25zdCBjaGFyICpuMSwgKm4yOwotKwkJdW5zaWduZWQgaW50IGJ1ZltOQlVGXTsKLSsJCWludCBja3N1bXNpemUgPSBzaXplb2YoYnVmKTsKLSsJCXVuc2lnbmVkIGludCBja3N1bTsKLSsJCXRpbWVfdCBtdGltZSA9IGN0bC0+Y29udGVudF9vbmx5ID8gMCA6IHN0LnN0X210aW1lOwotKwkJdW5zaWduZWQgaW50IGhzaCA9IGhhc2goc3Quc3Rfc2l6ZSwgbXRpbWUpOwotKwkJb2ZmX3QgZnNpemU7Ci0rCi0rCQljdGwtPm5yZWdmaWxlcysrOwotKwkJaWYgKGN0bC0+dmVyYm9zZSA+IDEpCi0rCQkJcHJpbnRmKCIlc1xuIiwgbmFtZSk7Ci0rCi0rCQlmZCA9IG9wZW4obmFtZSwgT19SRE9OTFkpOwotKwkJaWYgKGZkIDwgMCkKLSsJCQlyZXR1cm47Ci0rCi0rCQlpZiAoKHNpemVfdClzdC5zdF9zaXplIDwgc2l6ZW9mKGJ1ZikpIHsKLSsJCQlja3N1bXNpemUgPSBzdC5zdF9zaXplOwotKwkJCW1lbXNldCgoKGNoYXIgKilidWYpICsgY2tzdW1zaXplLCAwLAotKwkJCSAgICAgICAoc2l6ZW9mKGJ1ZikgLSBja3N1bXNpemUpICUgc2l6ZW9mKGJ1ZlswXSkpOwotKwkJfQotKwkJaWYgKHJlYWQoZmQsIGJ1ZiwgY2tzdW1zaXplKSAhPSBja3N1bXNpemUpIHsKLSsJCQljbG9zZShmZCk7Ci0rCQkJcmV0dXJuOwotKwkJfQotKwkJY2tzdW1zaXplID0gKGNrc3Vtc2l6ZSArIHNpemVvZihidWZbMF0pIC0gMSkgLyBzaXplb2YoYnVmWzBdKTsKLSsJCWZvciAoaSA9IDAsIGNrc3VtID0gMDsgaSA8IGNrc3Vtc2l6ZTsgaSsrKSB7Ci0rCQkJaWYgKGNrc3VtICsgYnVmW2ldIDwgY2tzdW0pCi0rCQkJCWNrc3VtICs9IGJ1ZltpXSArIDE7Ci0rCQkJZWxzZQotKwkJCQlja3N1bSArPSBidWZbaV07Ci0rCQl9Ci0rCQlmb3IgKGhwID0gY3RsLT5ocHNbaHNoXTsgaHA7IGhwID0gaHAtPm5leHQpIHsKLSsJCQlpZiAoaHAtPnNpemUgPT0gc3Quc3Rfc2l6ZSAmJiBocC0+bXRpbWUgPT0gbXRpbWUpCi0rCQkJCWJyZWFrOwotKwkJfQotKwkJaWYgKCFocCkgewotKwkJCWhwID0geG1hbGxvYyhzaXplb2YoKmhwKSk7Ci0rCQkJaHAtPnNpemUgPSBzdC5zdF9zaXplOwotKwkJCWhwLT5tdGltZSA9IG10aW1lOwotKwkJCWhwLT5jaGFpbiA9IE5VTEw7Ci0rCQkJaHAtPm5leHQgPSBjdGwtPmhwc1toc2hdOwotKwkJCWN0bC0+aHBzW2hzaF0gPSBocDsKLSsJCX0KLSsJCWZvciAoZnAgPSBocC0+Y2hhaW47IGZwOyBmcCA9IGZwLT5uZXh0KSB7Ci0rCQkJaWYgKGZwLT5ja3N1bSA9PSBja3N1bSkKLSsJCQkJYnJlYWs7Ci0rCQl9Ci0rCQlmb3IgKGZwMiA9IGZwOyBmcDIgJiYgZnAyLT5ja3N1bSA9PSBja3N1bTsgZnAyID0gZnAyLT5uZXh0KSB7Ci0rCQkJaWYgKGZwMi0+aW5vID09IHN0LnN0X2lubyAmJiBmcDItPmRldiA9PSBzdC5zdF9kZXYpIHsKLSsJCQkJY2xvc2UoZmQpOwotKwkJCQlyZXR1cm47Ci0rCQkJfQotKwkJfQotKwkJZm9yIChmcDIgPSBmcDsgZnAyICYmIGZwMi0+Y2tzdW0gPT0gY2tzdW07IGZwMiA9IGZwMi0+bmV4dCkgewotKwotKwkJCWlmICghbHN0YXQoZnAyLT5uYW1lLCAmc3QyKSAmJiBTX0lTUkVHKHN0Mi5zdF9tb2RlKSAmJgotKwkJCSAgICAhc3RjbXAoJnN0LCAmc3QyLCBjdGwtPmNvbnRlbnRfb25seSkgJiYKLSsJCQkgICAgc3QyLnN0X2lubyAhPSBzdC5zdF9pbm8gJiYKLSsJCQkgICAgc3QyLnN0X2RldiA9PSBzdC5zdF9kZXYpIHsKLSsKLSsJCQkJaW50IGZkMiA9IG9wZW4oZnAyLT5uYW1lLCBPX1JET05MWSk7Ci0rCQkJCWlmIChmZDIgPCAwKQotKwkJCQkJY29udGludWU7Ci0rCi0rCQkJCWlmIChmc3RhdChmZDIsICZzdDIpIHx8ICFTX0lTUkVHKHN0Mi5zdF9tb2RlKQotKwkJCQkgICAgfHwgc3QyLnN0X3NpemUgPT0gMCkgewotKwkJCQkJY2xvc2UoZmQyKTsKLSsJCQkJCWNvbnRpbnVlOwotKwkJCQl9Ci0rCQkJCWN0bC0+bmNvbXArKzsKLSsJCQkJbHNlZWsoZmQsIDAsIFNFRUtfU0VUKTsKLSsKLSsJCQkJZm9yIChmc2l6ZSA9IHN0LnN0X3NpemU7IGZzaXplID4gMDsKLSsJCQkJICAgICBmc2l6ZSAtPSAob2ZmX3Qpc2l6ZW9mKGN0bC0+aW9idWYxKSkgewotKwkJCQkJc3NpemVfdCB4c3o7Ci0rCQkJCQlzc2l6ZV90IHJzaXplID0gZnNpemUgPiAoc3NpemVfdCkgc2l6ZW9mKGN0bC0+aW9idWYxKSA/Ci0rCQkJCQkJCShzc2l6ZV90KSBzaXplb2YoY3RsLT5pb2J1ZjEpIDogZnNpemU7Ci0rCi0rCQkJCQlpZiAoKHhzeiA9IHJlYWQoZmQsIGN0bC0+aW9idWYxLCByc2l6ZSkpICE9IHJzaXplKQotKwkJCQkJCXdhcm4oXygiY2Fubm90IHJlYWQgJXMiKSwgbmFtZSk7Ci0rCQkJCQllbHNlIGlmICgoeHN6ID0gcmVhZChmZDIsIGN0bC0+aW9idWYyLCByc2l6ZSkpICE9IHJzaXplKQotKwkJCQkJCXdhcm4oXygiY2Fubm90IHJlYWQgJXMiKSwgZnAyLT5uYW1lKTsKLSsKLSsJCQkJCWlmICh4c3ogIT0gcnNpemUpIHsKLSsJCQkJCQljbG9zZShmZCk7Ci0rCQkJCQkJY2xvc2UoZmQyKTsKLSsJCQkJCQlyZXR1cm47Ci0rCQkJCQl9Ci0rCQkJCQlpZiAobWVtY21wKGN0bC0+aW9idWYxLCBjdGwtPmlvYnVmMiwgcnNpemUpKQotKwkJCQkJCWJyZWFrOwotKwkJCQl9Ci0rCQkJCWNsb3NlKGZkMik7Ci0rCQkJCWlmIChmc2l6ZSA+IDApCi0rCQkJCQljb250aW51ZTsKLSsJCQkJaWYgKGxzdGF0KG5hbWUsICZzdDMpKSB7Ci0rCQkJCQl3YXJuKF8oImNhbm5vdCBzdGF0ICVzIiksIG5hbWUpOwotKwkJCQkJY2xvc2UoZmQpOwotKwkJCQkJcmV0dXJuOwotKwkJCQl9Ci0rCQkJCXN0My5zdF9hdGltZSA9IHN0LnN0X2F0aW1lOwotKwkJCQlpZiAoc3RjbXAoJnN0LCAmc3QzLCAwKSkgewotKwkJCQkJd2FybngoXygiZmlsZSAlcyBjaGFuZ2VkIHVuZGVybmVhdGggdXMiKSwgbmFtZSk7Ci0rCQkJCQljbG9zZShmZCk7Ci0rCQkJCQlyZXR1cm47Ci0rCQkJCX0KLSsJCQkJbjEgPSBmcDItPm5hbWU7Ci0rCQkJCW4yID0gbmFtZTsKLSsKLSsJCQkJaWYgKCFjdGwtPm5vX2xpbmspIHsKLSsJCQkJCWNvbnN0IGNoYXIgKnN1ZmZpeCA9Ci0rCQkJCQkgICAgIi4kJCRfX19jbGVhbml0X19fJCQkIjsKLSsJCQkJCWNvbnN0IHNpemVfdCBzdWZmaXhsZW4gPSBzdHJsZW4oc3VmZml4KTsKLSsJCQkJCXNpemVfdCBuMmxlbiA9IHN0cmxlbihuMik7Ci0rCQkJCQlzdHJ1Y3QgaGFyZGxpbmtfZHluc3RyIG5hbTIgPSB7IE5VTEwsIDAgfTsKLSsKLSsJCQkJCWdyb3dzdHIoJm5hbTIsIGFkZDIobjJsZW4sIHN1ZmZpeGxlbikpOwotKwkJCQkJbWVtY3B5KG5hbTIuYnVmLCBuMiwgbjJsZW4pOwotKwkJCQkJbWVtY3B5KCZuYW0yLmJ1ZltuMmxlbl0sIHN1ZmZpeCwKLSsJCQkJCSAgICAgICBzdWZmaXhsZW4gKyAxKTsKLSsJCQkJCS8qIEZpcnN0IGNyZWF0ZSBhIHRlbXBvcmFyeSBsaW5rIHRvIG4xIHVuZGVyIGEgbmV3IG5hbWUgKi8KLSsJCQkJCWlmIChsaW5rKG4xLCBuYW0yLmJ1ZikpIHsKLSsJCQkJCQl3YXJuKF8oImZhaWxlZCB0byBoYXJkbGluayAlcyB0byAlcyAoY3JlYXRlIHRlbXBvcmFyeSBsaW5rIGFzICVzIGZhaWxlZCkiKSwKLSsJCQkJCQkJbjEsIG4yLCBuYW0yLmJ1Zik7Ci0rCQkJCQkJZnJlZShuYW0yLmJ1Zik7Ci0rCQkJCQkJY29udGludWU7Ci0rCQkJCQl9Ci0rCQkJCQkvKiBUaGVuIHJlbmFtZSBpbnRvIHBsYWNlIG92ZXIgdGhlIGV4aXN0aW5nIG4yICovCi0rCQkJCQlpZiAocmVuYW1lKG5hbTIuYnVmLCBuMikpIHsKLSsJCQkJCQl3YXJuKF8oImZhaWxlZCB0byBoYXJkbGluayAlcyB0byAlcyAocmVuYW1lIHRlbXBvcmFyeSBsaW5rIHRvICVzIGZhaWxlZCkiKSwKLSsJCQkJCQkJbjEsIG4yLCBuMik7Ci0rCQkJCQkJLyogU29tZXRoaW5nIHdlbnQgd3JvbmcsIHRyeSB0byByZW1vdmUgdGhlIG5vdyByZWR1bmRhbnQgdGVtcG9yYXJ5IGxpbmsgKi8KLSsJCQkJCQlpZiAodW5saW5rKG5hbTIuYnVmKSkKLSsJCQkJCQkJd2FybihfKCJmYWlsZWQgdG8gcmVtb3ZlIHRlbXBvcmFyeSBsaW5rICVzIiksIG5hbTIuYnVmKTsKLSsJCQkJCQlmcmVlKG5hbTIuYnVmKTsKLSsJCQkJCQljb250aW51ZTsKLSsJCQkJCX0KLSsJCQkJCWZyZWUobmFtMi5idWYpOwotKwkJCQl9Ci0rCQkJCWN0bC0+bmxpbmtzKys7Ci0rCQkJCWlmIChzdDMuc3RfbmxpbmsgPiAxKSB7Ci0rCQkJCQkvKiBXZSBhY3R1YWxseSBkaWQgbm90IHNhdmUgYW55dGhpbmcgdGhpcyB0aW1lLCBzaW5jZSB0aGUgbGluayBzZWNvbmQgYXJndW1lbnQKLSsJCQkJCSAgIGhhZCBzb21lIG90aGVyIGxpbmtzIGFzIHdlbGwuICAqLwotKwkJCQkJaWYgKGN0bC0+dmVyYm9zZSA+IDEpCi0rCQkJCQkJcHJpbnRmKF8oIiAlcyAlcyB0byAlc1xuIiksCi0rCQkJCQkJCShjdGwtPm5vX2xpbmsgPyBfKCJXb3VsZCBsaW5rIikgOiBfKCJMaW5rZWQiKSksCi0rCQkJCQkJCW4xLCBuMik7Ci0rCQkJCX0gZWxzZSB7Ci0rCQkJCQljdGwtPm5zYXZlZCArPSAoKHN0LnN0X3NpemUgKyA0MDk1KSAvIDQwOTYpICogNDA5NjsKLSsJCQkJCWlmIChjdGwtPnZlcmJvc2UgPiAxKQotKwkJCQkJCXByaW50ZihfKCIgJXMgJXMgdG8gJXMsICVzICVqZFxuIiksCi0rCQkJCQkJCShjdGwtPm5vX2xpbmsgPyBfKCJXb3VsZCBsaW5rIikgOiBfKCJMaW5rZWQiKSksCi0rCQkJCQkJCW4xLCBuMiwKLSsJCQkJCQkJKGN0bC0+bm9fbGluayA/IF8oIndvdWxkIHNhdmUiKSA6IF8oInNhdmVkIikpLAotKwkJCQkJCQkoaW50bWF4X3Qpc3Quc3Rfc2l6ZSk7Ci0rCQkJCX0KLSsJCQkJY2xvc2UoZmQpOwotKwkJCQlyZXR1cm47Ci0rCQkJfQotKwkJfQotKwkJZnAyID0geG1hbGxvYyhhZGQzKHNpemVvZigqZnAyKSwgbmFtZWxlbiwgMSkpOwotKwkJY2xvc2UoZmQpOwotKwkJZnAyLT5pbm8gPSBzdC5zdF9pbm87Ci0rCQlmcDItPmRldiA9IHN0LnN0X2RldjsKLSsJCWZwMi0+Y2tzdW0gPSBja3N1bTsKLSsJCW1lbWNweShmcDItPm5hbWUsIG5hbWUsIG5hbWVsZW4gKyAxKTsKLSsKLSsJCWlmIChmcCkgewotKwkJCWZwMi0+bmV4dCA9IGZwLT5uZXh0OwotKwkJCWZwLT5uZXh0ID0gZnAyOwotKwkJfSBlbHNlIHsKLSsJCQlmcDItPm5leHQgPSBocC0+Y2hhaW47Ci0rCQkJaHAtPmNoYWluID0gZnAyOwotKwkJfQotKwkJcmV0dXJuOwotKwl9Ci0rfQotKwotK2ludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSt7Ci0rCWludCBjaDsKLSsJaW50IGk7Ci0rI2lmZGVmIEhBVkVfUENSRQotKwlpbnQgZXJyb3JudW1iZXI7Ci0rCVBDUkUyX1NJWkUgZXJyb3JvZmZzZXQ7Ci0rCXBjcmUyX2NvZGUgKnJlID0gTlVMTDsKLSsJUENSRTJfU1BUUiBleGNsdWRlX3BhdHRlcm4gPSBOVUxMOwotKwlwY3JlMl9tYXRjaF9kYXRhICptYXRjaF9kYXRhID0gTlVMTDsKLSsjZW5kaWYKLSsJc3RydWN0IGhhcmRsaW5rX2R5bnN0ciBuYW0xID0geyBOVUxMLCAwIH07Ci0rCXN0cnVjdCBoYXJkbGlua19jdGwgKmN0bCA9ICZnbG9iYWxfY3RsOwotKwotKwlzdGF0aWMgY29uc3Qgc3RydWN0IG9wdGlvbiBsb25nb3B0c1tdID0gewotKwkJeyAiY29udGVudCIsICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAnYycgfSwKLSsJCXsgImRyeS1ydW4iLCAgICBub19hcmd1bWVudCwgTlVMTCwgJ24nIH0sCi0rCQl7ICJleGNsdWRlIiwgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd4JyB9LAotKwkJeyAiZm9yY2UiLCAgICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAnZicgfSwKLSsJCXsgImhlbHAiLCAgICAgICBub19hcmd1bWVudCwgTlVMTCwgJ2gnIH0sCi0rCQl7ICJ2ZXJib3NlIiwgICAgbm9fYXJndW1lbnQsIE5VTEwsICd2JyB9LAotKwkJeyAidmVyc2lvbiIsICAgIG5vX2FyZ3VtZW50LCBOVUxMLCAnVicgfSwKLSsJCXsgTlVMTCwgMCwgTlVMTCwgMCB9LAotKwl9OwotKwotKwlzZXRsb2NhbGUoTENfQUxMLCAiIik7Ci0rCWJpbmR0ZXh0ZG9tYWluKFBBQ0tBR0UsIExPQ0FMRURJUik7Ci0rCXRleHRkb21haW4oUEFDS0FHRSk7Ci0rCWNsb3NlX3N0ZG91dF9hdGV4aXQoKTsKLSsKLSsJd2hpbGUgKChjaCA9IGdldG9wdF9sb25nKGFyZ2MsIGFyZ3YsICJjbnZmeDpWaCIsIGxvbmdvcHRzLCBOVUxMKSkgIT0gLTEpIHsKLSsJCXN3aXRjaCAoY2gpIHsKLSsJCWNhc2UgJ24nOgotKwkJCWN0bC0+bm9fbGluayA9IDE7Ci0rCQkJYnJlYWs7Ci0rCQljYXNlICd2JzoKLSsJCQljdGwtPnZlcmJvc2UrKzsKLSsJCQlicmVhazsKLSsJCWNhc2UgJ2MnOgotKwkJCWN0bC0+Y29udGVudF9vbmx5ID0gMTsKLSsJCQlicmVhazsKLSsJCWNhc2UgJ2YnOgotKwkJCWN0bC0+Zm9yY2UgPSAxOwotKwkJCWJyZWFrOwotKwkJY2FzZSAneCc6Ci0rI2lmZGVmIEhBVkVfUENSRQotKwkJCWV4Y2x1ZGVfcGF0dGVybiA9IChQQ1JFMl9TUFRSKSBvcHRhcmc7Ci0rI2Vsc2UKLSsJCQllcnJ4KEVYSVRfRkFJTFVSRSwKLSsJCQkgICAgIF8oIm9wdGlvbiAtLWV4Y2x1ZGUgbm90IHN1cHBvcnRlZCAoYnVpbHQgd2l0aG91dCBwY3JlMikiKSk7Ci0rI2VuZGlmCi0rCQkJYnJlYWs7Ci0rCQljYXNlICdWJzoKLSsJCQlwcmludF92ZXJzaW9uKEVYSVRfU1VDQ0VTUyk7Ci0rCQljYXNlICdoJzoKLSsJCQl1c2FnZSgpOwotKwkJZGVmYXVsdDoKLSsJCQllcnJ0cnloZWxwKEVYSVRfRkFJTFVSRSk7Ci0rCQl9Ci0rCX0KLSsKLSsJaWYgKG9wdGluZCA9PSBhcmdjKSB7Ci0rCQl3YXJueChfKCJubyBkaXJlY3Rvcnkgc3BlY2lmaWVkIikpOwotKwkJZXJydHJ5aGVscChFWElUX0ZBSUxVUkUpOwotKwl9Ci0rCi0rI2lmZGVmIEhBVkVfUENSRQotKwlpZiAoZXhjbHVkZV9wYXR0ZXJuKSB7Ci0rCQlyZSA9IHBjcmUyX2NvbXBpbGUoZXhjbHVkZV9wYXR0ZXJuLCAvKiB0aGUgcGF0dGVybiAqLwotKwkJCQkgICBQQ1JFMl9aRVJPX1RFUk1JTkFURUQsIC8qIGluZGljYXRlcyBwYXR0ZXJuIGlzIHplcm8tdGVybWluYXRlICovCi0rCQkJCSAgIDAsIC8qIGRlZmF1bHQgb3B0aW9ucyAqLwotKwkJCQkgICAmZXJyb3JudW1iZXIsICZlcnJvcm9mZnNldCwgTlVMTCk7IC8qIHVzZSBkZWZhdWx0IGNvbXBpbGUgY29udGV4dCAqLwotKwkJaWYgKCFyZSkgewotKwkJCVBDUkUyX1VDSEFSIGJ1ZmZlclsyNTZdOwotKwkJCXBjcmUyX2dldF9lcnJvcl9tZXNzYWdlKGVycm9ybnVtYmVyLCBidWZmZXIsCi0rCQkJCQkJc2l6ZW9mKGJ1ZmZlcikpOwotKwkJCWVycngoRVhJVF9GQUlMVVJFLCBfKCJwYXR0ZXJuIGVycm9yIGF0IG9mZnNldCAlZDogJXMiKSwKLSsJCQkJKGludCllcnJvcm9mZnNldCwgYnVmZmVyKTsKLSsJCX0KLSsJCW1hdGNoX2RhdGEgPSBwY3JlMl9tYXRjaF9kYXRhX2NyZWF0ZV9mcm9tX3BhdHRlcm4ocmUsIE5VTEwpOwotKwl9Ci0rI2VuZGlmCi0rCWF0ZXhpdChwcmludF9zdW1tYXJ5KTsKLSsKLSsJZm9yIChpID0gb3B0aW5kOyBpIDwgYXJnYzsgaSsrKQotKwkJcHJvY2Vzc19wYXRoKGN0bCwgYXJndltpXSk7Ci0rCi0rCXdoaWxlIChjdGwtPmRpcnMpIHsKLSsJCURJUiAqZGg7Ci0rCQlzdHJ1Y3QgZGlyZW50ICpkaTsKLSsJCXN0cnVjdCBoYXJkbGlua19kaXIgKmRwID0gY3RsLT5kaXJzOwotKwkJc2l6ZV90IG5hbTFiYXNlbGVuID0gc3RybGVuKGRwLT5uYW1lKTsKLSsKLSsJCWN0bC0+ZGlycyA9IGRwLT5uZXh0OwotKwkJZ3Jvd3N0cigmbmFtMSwgYWRkMihuYW0xYmFzZWxlbiwgMSkpOwotKwkJbWVtY3B5KG5hbTEuYnVmLCBkcC0+bmFtZSwgbmFtMWJhc2VsZW4pOwotKwkJZnJlZShkcCk7Ci0rCQluYW0xLmJ1ZltuYW0xYmFzZWxlbisrXSA9ICcvJzsKLSsJCW5hbTEuYnVmW25hbTFiYXNlbGVuXSA9IDA7Ci0rCQlkaCA9IG9wZW5kaXIobmFtMS5idWYpOwotKwotKwkJaWYgKGRoID09IE5VTEwpCi0rCQkJY29udGludWU7Ci0rCQljdGwtPm5kaXJzKys7Ci0rCi0rCQl3aGlsZSAoKGRpID0gcmVhZGRpcihkaCkpICE9IE5VTEwpIHsKLSsJCQlpZiAoIWRpLT5kX25hbWVbMF0pCi0rCQkJCWNvbnRpbnVlOwotKwkJCWlmIChkaS0+ZF9uYW1lWzBdID09ICcuJykgewotKwkJCQlpZiAoIWRpLT5kX25hbWVbMV0gfHwgIXN0cmNtcChkaS0+ZF9uYW1lLCAiLi4iKSkKLSsJCQkJCWNvbnRpbnVlOwotKwkJCX0KLSsjaWZkZWYgSEFWRV9QQ1JFCi0rCQkJaWYgKHJlICYmIHBjcmUyX21hdGNoKHJlLCAvKiBjb21waWxlZCByZWdleCAqLwotKwkJCQkJICAgICAgKFBDUkUyX1NQVFIpIGRpLT5kX25hbWUsIHN0cmxlbihkaS0+ZF9uYW1lKSwgMCwgLyogc3RhcnQgYXQgb2Zmc2V0IDAgKi8KLSsJCQkJCSAgICAgIDAsIC8qIGRlZmF1bHQgb3B0aW9ucyAqLwotKwkJCQkJICAgICAgbWF0Y2hfZGF0YSwgLyogYmxvY2sgZm9yIHN0b3JpbmcgdGhlIHJlc3VsdCAqLwotKwkJCQkJICAgICAgTlVMTCkgLyogdXNlIGRlZmF1bHQgbWF0Y2ggY29udGV4dCAqLwotKwkJCSAgICA+PTApIHsKLSsJCQkJaWYgKGN0bC0+dmVyYm9zZSkgewotKwkJCQkJbmFtMS5idWZbbmFtMWJhc2VsZW5dID0gMDsKLSsJCQkJCXByaW50ZihfKCJTa2lwcGluZyAlcyVzXG4iKSwgbmFtMS5idWYsIGRpLT5kX25hbWUpOwotKwkJCQl9Ci0rCQkJCWNvbnRpbnVlOwotKwkJCX0KLSsjZW5kaWYKLSsJCQl7Ci0rCQkJCXNpemVfdCBzdWJkaXJsZW47Ci0rCQkJCWdyb3dzdHIoJm5hbTEsCi0rCQkJCQlhZGQyKG5hbTFiYXNlbGVuLCBzdWJkaXJsZW4gPQotKwkJCQkJICAgICBzdHJsZW4oZGktPmRfbmFtZSkpKTsKLSsJCQkJbWVtY3B5KCZuYW0xLmJ1ZltuYW0xYmFzZWxlbl0sIGRpLT5kX25hbWUsCi0rCQkJCSAgICAgICBhZGQyKHN1YmRpcmxlbiwgMSkpOwotKwkJCX0KLSsJCQlwcm9jZXNzX3BhdGgoY3RsLCBuYW0xLmJ1Zik7Ci0rCQl9Ci0rCQljbG9zZWRpcihkaCk7Ci0rCX0KLSsKLSsJcmV0dXJuIDA7Ci0rfQotLS0tIGEvbG9jYWxlZGVmL01ha2VmaWxlLmluCi0rKysgYi9sb2NhbGVkZWYvTWFrZWZpbGUuaW4KLUBAIC00MCw2ICs0MCw4IEBAIFdBUk5GTEFHUwk9IC1XYWxsIC1Xbm8tZm9ybWF0Ci0gRlVMTENDCQk9ICQoQ0MpICQoQ1BQRkxBR1MpICQoQ0ZMQUdTKSBcCi0gCQkgICQoREVGSU5FUykgJChJTkNMVURFUykgJChXQVJORkxBR1MpCi0gCi0rQ1JPU1NfTE9DQUxFREVGX0hBUkRMSU5LX09CSlMgPSBjcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsubwotKwotIExPQ0FMRURFRl9PQkpTCT0gY2hhcm1hcC5vIGNoYXJtYXAtZGlyLm8gbGQtYWRkcmVzcy5vIGxkLWNvbGxhdGUubyBcCi0gCQkgIGxkLWN0eXBlLm8gbGQtaWRlbnRpZmljYXRpb24ubyBsZC1tZWFzdXJlbWVudC5vIFwKLSAJCSAgbGQtbWVzc2FnZXMubyBsZC1tb25ldGFyeS5vIGxkLW5hbWUubyBsZC1udW1lcmljLm8gXAotQEAgLTU0LDExICs1NiwxNCBAQCBMT0NBTEVERUZfT0JKUwk9IGNoYXJtYXAubyBjaGFybWFwLWRpci5vCi0gCQkgIGFzcHJpbnRmLm8gZ2V0ZGVsaW0ubyBsb2NhbGVkZWZfZXh0cmEubyBcCi0gCQkgIG9ic3RhY2tfcHJpbnRmLm8gdmFzcHJpbnRmLm8KLSAKLS1hbGw6CQlsb2NhbGVkZWYkKEVYRUVYVCkKLSthbGw6CQlsb2NhbGVkZWYkKEVYRUVYVCkgY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rJChFWEVFWFQpCi0gCi0gbG9jYWxlZGVmJChFWEVFWFQpOiAkKExPQ0FMRURFRl9PQkpTKQotIAkJJChDQykgLW8gJEAgJChMT0NBTEVERUZfT0JKUykgJChMSUJTKQotIAotK2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluayQoRVhFRVhUKTogJChDUk9TU19MT0NBTEVERUZfSEFSRExJTktfT0JKUykKLSsJCSQoQ0MpIC1vICRAICQoQ1JPU1NfTE9DQUxFREVGX0hBUkRMSU5LX09CSlMpICQoTElCUykKLSsKLSBjbGVhbjoKLSAJCXJtIC1mIGxvY2FsZSQoRVhFRVhUKSAkKExPQ0FMRURFRl9PQkpTKQotIAotQEAgLTc3LDYgKzgyLDcgQEAgY2xlYW46Ci0gJS5vOiAkKHNyY2RpcikvJS5jCi0gCQkkKEZVTExDQykgLWMgLW8gJEAgJDwKLSAKLStjcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsubzogZ2xpYmMvbG9jYWxlL3Byb2dyYW1zL2Nyb3NzLWxvY2FsZWRlZi1oYXJkbGluay5jCi0gY2hhcm1hcC5vOiBnbGliYy9sb2NhbGUvcHJvZ3JhbXMvY2hhcm1hcC5jCi0gY2hhcm1hcC1kaXIubzogZ2xpYmMvbG9jYWxlL3Byb2dyYW1zL2NoYXJtYXAtZGlyLmMKLSBsZC1hZGRyZXNzLm86IGdsaWJjL2xvY2FsZS9wcm9ncmFtcy9sZC1hZGRyZXNzLmMKLS0tLSAvZGV2L251bGwKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9jLmgKLUBAIC0wLDAgKzEsNDA3IEBACi0rLyoKLSsgKiBGdW5kYW1lbnRhbCBDIGRlZmluaXRpb25zLgotKyAqLwotKwotKyNpZm5kZWYgVVRJTF9MSU5VWF9DX0gKLSsjZGVmaW5lIFVUSUxfTElOVVhfQ19ICi0rCi0rI2luY2x1ZGUgPGxpbWl0cy5oPgotKyNpbmNsdWRlIDxzdGRkZWYuaD4KLSsjaW5jbHVkZSA8c3RkaW50Lmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNpbmNsdWRlIDxzdGRhcmcuaD4KLSsjaW5jbHVkZSA8c3RkbGliLmg+Ci0rI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotKwotKyNpbmNsdWRlIDxhc3NlcnQuaD4KLSsKLSsjaWZkZWYgSEFWRV9FUlJfSAotKyMgaW5jbHVkZSA8ZXJyLmg+Ci0rI2VuZGlmCi0rCi0rI2lmZGVmIEhBVkVfU1lTX1NZU01BQ1JPU19ICi0rIyBpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+ICAgICAvKiBmb3IgbWFqb3IsIG1pbm9yICovCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBMT0dJTl9OQU1FX01BWAotKyMgZGVmaW5lIExPR0lOX05BTUVfTUFYIDI1NgotKyNlbmRpZgotKwotKyNpZm5kZWYgTkFNRV9NQVgKLSsjIGRlZmluZSBOQU1FX01BWCBQQVRIX01BWAotKyNlbmRpZgotKwotKy8qCi0rICogX19HTlVDX1BSRVJFUSBpcyBkZXByZWNhdGVkIGluIGZhdm91ciBvZiBfX2hhc19hdHRyaWJ1dGUoKSBhbmQKLSsgKiBfX2hhc19mZWF0dXJlKCkuIFRoZSBfX2hhcyBtYWNyb3MgYXJlIHN1cHBvcnRlZCBieSBjbGFuZyBhbmQgZ2NjPj01LgotKyAqLwotKyNpZm5kZWYgX19HTlVDX1BSRVJFUQotKyMgaWYgZGVmaW5lZCBfX0dOVUNfXyAmJiBkZWZpbmVkIF9fR05VQ19NSU5PUl9fCi0rIyAgZGVmaW5lIF9fR05VQ19QUkVSRVEobWFqLCBtaW4pIFwKLSsJKChfX0dOVUNfXyA8PCAxNikgKyBfX0dOVUNfTUlOT1JfXyA+PSAoKG1haikgPDwgMTYpICsgKG1pbikpCi0rIyBlbHNlCi0rIyAgZGVmaW5lIF9fR05VQ19QUkVSRVEobWFqLCBtaW4pIDAKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rI2lmZGVmIF9fR05VQ19fCi0rCi0rLyogJmFbMF0gZGVncmFkZXMgdG8gYSBwb2ludGVyOiBhIGRpZmZlcmVudCB0eXBlIGZyb20gYW4gYXJyYXkgKi8KLSsjIGRlZmluZSBfX211c3RfYmVfYXJyYXkoYSkgXAotKwlVTF9CVUlMRF9CVUdfT05fWkVSTyhfX2J1aWx0aW5fdHlwZXNfY29tcGF0aWJsZV9wKF9fdHlwZW9mX18oYSksIF9fdHlwZW9mX18oJmFbMF0pKSkKLSsKLSsjIGRlZmluZSBpZ25vcmVfcmVzdWx0KHgpIF9fZXh0ZW5zaW9uX18gKHsgXAotKwlfX3R5cGVvZl9fKHgpIF9fZHVtbXkgX19hdHRyaWJ1dGVfXygoX191bnVzZWRfXykpID0gKHgpOyAodm9pZCkgX19kdW1teTsgXAotK30pCi0rCi0rI2Vsc2UgLyogIV9fR05VQ19fICovCi0rIyBkZWZpbmUgX19tdXN0X2JlX2FycmF5KGEpCTAKLSsjIGRlZmluZSBfX2F0dHJpYnV0ZV9fKF9hcmdfKQotKyMgZGVmaW5lIGlnbm9yZV9yZXN1bHQoeCkgKCh2b2lkKSAoeCkpCi0rI2VuZGlmIC8qICFfX0dOVUNfXyAqLwotKwotKy8qCi0rICogSXQgZXZhbHVhdGVzIHRvIDEgaWYgdGhlIGF0dHJpYnV0ZS9mZWF0dXJlIGlzIHN1cHBvcnRlZCBieSB0aGUgY3VycmVudAotKyAqIGNvbXBpbGF0aW9uIHRhcmdlZC4gRmFsbGJhY2sgZm9yIG9sZCBjb21waWxlcnMuCi0rICovCi0rI2lmbmRlZiBfX2hhc19hdHRyaWJ1dGUKLSsgICNkZWZpbmUgX19oYXNfYXR0cmlidXRlKHgpIDAKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIF9faGFzX2ZlYXR1cmUKLSsgICNkZWZpbmUgX19oYXNfZmVhdHVyZSh4KSAwCi0rI2VuZGlmCi0rCi0rLyoKLSsgKiBGdW5jdGlvbiBhdHRyaWJ1dGVzCi0rICovCi0rI2lmbmRlZiBfX3VsX2FsbG9jX3NpemUKLSsjIGlmIChfX2hhc19hdHRyaWJ1dGUoYWxsb2Nfc2l6ZSkgJiYgX19oYXNfYXR0cmlidXRlKHdhcm5fdW51c2VkX3Jlc3VsdCkpIHx8IF9fR05VQ19QUkVSRVEgKDQsIDMpCi0rIyAgZGVmaW5lIF9fdWxfYWxsb2Nfc2l6ZShzKSBfX2F0dHJpYnV0ZV9fKChhbGxvY19zaXplKHMpLCB3YXJuX3VudXNlZF9yZXN1bHQpKQotKyMgZWxzZQotKyMgIGRlZmluZSBfX3VsX2FsbG9jX3NpemUocykKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBfX3VsX2NhbGxvY19zaXplCi0rIyBpZiAoX19oYXNfYXR0cmlidXRlKGFsbG9jX3NpemUpICYmIF9faGFzX2F0dHJpYnV0ZSh3YXJuX3VudXNlZF9yZXN1bHQpKSB8fCBfX0dOVUNfUFJFUkVRICg0LCAzKQotKyMgIGRlZmluZSBfX3VsX2NhbGxvY19zaXplKG4sIHMpIF9fYXR0cmlidXRlX18oKGFsbG9jX3NpemUobiwgcyksIHdhcm5fdW51c2VkX3Jlc3VsdCkpCi0rIyBlbHNlCi0rIyAgZGVmaW5lIF9fdWxfY2FsbG9jX3NpemUobiwgcykKLSsjIGVuZGlmCi0rI2VuZGlmCi0rCi0rI2lmIF9faGFzX2F0dHJpYnV0ZShyZXR1cm5zX25vbm51bGwpIHx8IF9fR05VQ19QUkVSRVEgKDQsIDkpCi0rIyBkZWZpbmUgX191bF9yZXR1cm5zX25vbm51bGwgX19hdHRyaWJ1dGVfXygocmV0dXJuc19ub25udWxsKSkKLSsjZWxzZQotKyMgZGVmaW5lIF9fdWxfcmV0dXJuc19ub25udWxsCi0rI2VuZGlmCi0rCi0rLyoKLSsgKiBGb3JjZSBhIGNvbXBpbGF0aW9uIGVycm9yIGlmIGNvbmRpdGlvbiBpcyB0cnVlLCBidXQgYWxzbyBwcm9kdWNlIGEKLSsgKiByZXN1bHQgKG9mIHZhbHVlIDAgYW5kIHR5cGUgc2l6ZV90KSwgc28gdGhlIGV4cHJlc3Npb24gY2FuIGJlIHVzZWQKLSsgKiBlLmcuIGluIGEgc3RydWN0dXJlIGluaXRpYWxpemVyIChvciB3aGVyZXZlciBlbHNlIGNvbW1hIGV4cHJlc3Npb25zCi0rICogYXJlbid0IHBlcm1pdHRlZCkuCi0rICovCi0rI2RlZmluZSBVTF9CVUlMRF9CVUdfT05fWkVSTyhlKSBfX2V4dGVuc2lvbl9fIChzaXplb2Yoc3RydWN0IHsgaW50Oi0hIShlKTsgfSkpCi0rI2RlZmluZSBCVUlMRF9CVUdfT05fTlVMTChlKSAoKHZvaWQgKilzaXplb2Yoc3RydWN0IHsgaW50Oi0hIShlKTsgfSkpCi0rCi0rI2lmbmRlZiBBUlJBWV9TSVpFCi0rIyBkZWZpbmUgQVJSQVlfU0laRShhcnIpIChzaXplb2YoYXJyKSAvIHNpemVvZigoYXJyKVswXSkgKyBfX211c3RfYmVfYXJyYXkoYXJyKSkKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIFBBVEhfTUFYCi0rIyBkZWZpbmUgUEFUSF9NQVggNDA5NgotKyNlbmRpZgotKwotKyNpZm5kZWYgVFJVRQotKyMgZGVmaW5lIFRSVUUgMQotKyNlbmRpZgotKwotKyNpZm5kZWYgRkFMU0UKLSsjIGRlZmluZSBGQUxTRSAwCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBtaW4KLSsjIGRlZmluZSBtaW4oeCwgeSkgX19leHRlbnNpb25fXyAoewkJXAotKwlfX3R5cGVvZl9fKHgpIF9taW4xID0gKHgpOwkJXAotKwlfX3R5cGVvZl9fKHkpIF9taW4yID0gKHkpOwkJXAotKwkodm9pZCkgKCZfbWluMSA9PSAmX21pbjIpOwkJXAotKwlfbWluMSA8IF9taW4yID8gX21pbjEgOiBfbWluMjsgfSkKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIG1heAotKyMgZGVmaW5lIG1heCh4LCB5KSBfX2V4dGVuc2lvbl9fICh7CQlcCi0rCV9fdHlwZW9mX18oeCkgX21heDEgPSAoeCk7CQlcCi0rCV9fdHlwZW9mX18oeSkgX21heDIgPSAoeSk7CQlcCi0rCSh2b2lkKSAoJl9tYXgxID09ICZfbWF4Mik7CQlcCi0rCV9tYXgxID4gX21heDIgPyBfbWF4MSA6IF9tYXgyOyB9KQotKyNlbmRpZgotKwotKyNpZm5kZWYgY21wX251bWJlcnMKLSsjIGRlZmluZSBjbXBfbnVtYmVycyh4LCB5KSBfX2V4dGVuc2lvbl9fICh7CVwKLSsJX190eXBlb2ZfXyh4KSBfYSA9ICh4KTsJCQlcCi0rCV9fdHlwZW9mX18oeSkgX2IgPSAoeSk7CQkJXAotKwkodm9pZCkgKCZfYSA9PSAmX2IpOwkJCVwKLSsJX2EgPT0gX2IgPyAwIDogX2EgPiBfYiA/IDEgOiAtMTsgfSkKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIG9mZnNldG9mCi0rI2RlZmluZSBvZmZzZXRvZihUWVBFLCBNRU1CRVIpICgoc2l6ZV90KSAmKChUWVBFICopMCktPk1FTUJFUikKLSsjZW5kaWYKLSsKLSsvKgotKyAqIGNvbnRhaW5lcl9vZiAtIGNhc3QgYSBtZW1iZXIgb2YgYSBzdHJ1Y3R1cmUgb3V0IHRvIHRoZSBjb250YWluaW5nIHN0cnVjdHVyZQotKyAqIEBwdHI6CXRoZSBwb2ludGVyIHRvIHRoZSBtZW1iZXIuCi0rICogQHR5cGU6CXRoZSB0eXBlIG9mIHRoZSBjb250YWluZXIgc3RydWN0IHRoaXMgaXMgZW1iZWRkZWQgaW4uCi0rICogQG1lbWJlcjoJdGhlIG5hbWUgb2YgdGhlIG1lbWJlciB3aXRoaW4gdGhlIHN0cnVjdC4KLSsgKi8KLSsjaWZuZGVmIGNvbnRhaW5lcl9vZgotKyNkZWZpbmUgY29udGFpbmVyX29mKHB0ciwgdHlwZSwgbWVtYmVyKSBfX2V4dGVuc2lvbl9fICh7CVwKLSsJY29uc3QgX190eXBlb2ZfXyggKCh0eXBlICopMCktPm1lbWJlciApICpfX21wdHIgPSAocHRyKTsgXAotKwkodHlwZSAqKSggKGNoYXIgKilfX21wdHIgLSBvZmZzZXRvZih0eXBlLG1lbWJlcikgKTt9KQotKyNlbmRpZgotKwotKyNpZm5kZWYgSEFWRV9QUk9HUkFNX0lOVk9DQVRJT05fU0hPUlRfTkFNRQotKyMgaWZkZWYgSEFWRV9fX1BST0dOQU1FCi0rZXh0ZXJuIGNoYXIgKl9fcHJvZ25hbWU7Ci0rIyAgZGVmaW5lIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lIF9fcHJvZ25hbWUKLSsjIGVsc2UKLSsjICBpZmRlZiBIQVZFX0dFVEVYRUNOQU1FCi0rIyAgIGRlZmluZSBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSBcCi0rCQlwcm9nX2ludl9zaF9ubV9mcm9tX2ZpbGUoZ2V0ZXhlY25hbWUoKSwgMCkKLSsjICBlbHNlCi0rIyAgIGRlZmluZSBwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSBcCi0rCQlwcm9nX2ludl9zaF9ubV9mcm9tX2ZpbGUoX19GSUxFX18sIDEpCi0rIyAgZW5kaWYKLStzdGF0aWMgY2hhciBwcm9nX2ludl9zaF9ubV9idWZbMjU2XTsKLStzdGF0aWMgaW5saW5lIGNoYXIgKgotK3Byb2dfaW52X3NoX25tX2Zyb21fZmlsZShjaGFyICpmLCBjaGFyIHN0cmlwZXh0KQotK3sKLSsJY2hhciAqdDsKLSsKLSsJaWYgKCh0ID0gc3RycmNocihmLCAnLycpKSAhPSBOVUxMKQotKwkJdCsrOwotKwllbHNlCi0rCQl0ID0gZjsKLSsKLSsJc3RybmNweShwcm9nX2ludl9zaF9ubV9idWYsIHQsIHNpemVvZihwcm9nX2ludl9zaF9ubV9idWYpIC0gMSk7Ci0rCXByb2dfaW52X3NoX25tX2J1ZltzaXplb2YocHJvZ19pbnZfc2hfbm1fYnVmKSAtIDFdID0gJ1wwJzsKLSsKLSsJaWYgKHN0cmlwZXh0ICYmICh0ID0gc3RycmNocihwcm9nX2ludl9zaF9ubV9idWYsICcuJykpICE9IE5VTEwpCi0rCQkqdCA9ICdcMCc7Ci0rCi0rCXJldHVybiBwcm9nX2ludl9zaF9ubV9idWY7Ci0rfQotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsKLSsjaWZuZGVmIEhBVkVfRVJSX0gKLStzdGF0aWMgaW5saW5lIHZvaWQKLStlcnJtc2coY2hhciBkb2V4aXQsIGludCBleGNvZGUsIGNoYXIgYWRkZXJyLCBjb25zdCBjaGFyICpmbXQsIC4uLikKLSt7Ci0rCWZwcmludGYoc3RkZXJyLCAiJXM6ICIsIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lKTsKLSsJaWYgKGZtdCAhPSBOVUxMKSB7Ci0rCQl2YV9saXN0IGFyZ3A7Ci0rCQl2YV9zdGFydChhcmdwLCBmbXQpOwotKwkJdmZwcmludGYoc3RkZXJyLCBmbXQsIGFyZ3ApOwotKwkJdmFfZW5kKGFyZ3ApOwotKwkJaWYgKGFkZGVycikKLSsJCQlmcHJpbnRmKHN0ZGVyciwgIjogIik7Ci0rCX0KLSsJaWYgKGFkZGVycikKLSsJCWZwcmludGYoc3RkZXJyLCAiJW0iKTsKLSsJZnByaW50ZihzdGRlcnIsICJcbiIpOwotKwlpZiAoZG9leGl0KQotKwkJZXhpdChleGNvZGUpOwotK30KLSsKLSsjaWZuZGVmIEhBVkVfRVJSCi0rIyBkZWZpbmUgZXJyKEUsIEZNVC4uLikgZXJybXNnKDEsIEUsIDEsIEZNVCkKLSsjZW5kaWYKLSsKLSsjaWZuZGVmIEhBVkVfRVJSWAotKyMgZGVmaW5lIGVycngoRSwgRk1ULi4uKSBlcnJtc2coMSwgRSwgMCwgRk1UKQotKyNlbmRpZgotKwotKyNpZm5kZWYgSEFWRV9XQVJOCi0rIyBkZWZpbmUgd2FybihGTVQuLi4pIGVycm1zZygwLCAwLCAxLCBGTVQpCi0rI2VuZGlmCi0rCi0rI2lmbmRlZiBIQVZFX1dBUk5YCi0rIyBkZWZpbmUgd2FybngoRk1ULi4uKSBlcnJtc2coMCwgMCwgMCwgRk1UKQotKyNlbmRpZgotKyNlbmRpZiAvKiAhSEFWRV9FUlJfSCAqLwotKwotKwotKy8qIERvbid0IHVzZSBpbmxpbmUgZnVuY3Rpb24gdG8gYXZvaWQgJyNpbmNsdWRlICJubHMuaCInIGluIGMuaAotKyAqLwotKyNkZWZpbmUgZXJydHJ5aGVscChldmFsKSBfX2V4dGVuc2lvbl9fICh7IFwKLSsJZnByaW50ZihzdGRlcnIsIF8oIlRyeSAnJXMgLS1oZWxwJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi5cbiIpLCBcCi0rCQkJcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUpOyBcCi0rCWV4aXQoZXZhbCk7IFwKLSt9KQotKwotKy8qIEFmdGVyIGZhaWxlZCBleGVjdnAoKSAqLwotKyNkZWZpbmUgRVhfRVhFQ19GQUlMRUQJCTEyNgkvKiBQcm9ncmFtIGxvY2F0ZWQsIGJ1dCBub3QgdXNhYmxlLiAqLwotKyNkZWZpbmUgRVhfRVhFQ19FTk9FTlQJCTEyNwkvKiBDb3VsZCBub3QgZmluZCBwcm9ncmFtIHRvIGV4ZWMuICAqLwotKyNkZWZpbmUgZXJyZXhlYyhuYW1lKQllcnIoZXJybm8gPT0gRU5PRU5UID8gRVhfRVhFQ19FTk9FTlQgOiBFWF9FWEVDX0ZBSUxFRCwgXAotKwkJCV8oImZhaWxlZCB0byBleGVjdXRlICVzIiksIG5hbWUpCi0rCi0rCi0rc3RhdGljIGlubGluZSBfX2F0dHJpYnV0ZV9fKChjb25zdCkpIGludCBpc19wb3dlcl9vZl8yKHVuc2lnbmVkIGxvbmcgbnVtKQotK3sKLSsJcmV0dXJuIChudW0gIT0gMCAmJiAoKG51bSAmIChudW0gLSAxKSkgPT0gMCkpOwotK30KLSsKLSsjaWZuZGVmIEhBVkVfTE9GRl9UCi0rdHlwZWRlZiBpbnQ2NF90IGxvZmZfdDsKLSsjZW5kaWYKLSsKLSsjaWYgIWRlZmluZWQoSEFWRV9ESVJGRCkgJiYgKCFkZWZpbmVkKEhBVkVfREVDTF9ESVJGRCkgfHwgSEFWRV9ERUNMX0RJUkZEID09IDApICYmIGRlZmluZWQoSEFWRV9ESVJfRERfRkQpCi0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxkaXJlbnQuaD4KLStzdGF0aWMgaW5saW5lIGludCBkaXJmZChESVIgKmQpCi0rewotKwlyZXR1cm4gZC0+ZGRfZmQ7Ci0rfQotKyNlbmRpZgotKwotKy8qCi0rICogRmFsbGJhY2sgZGVmaW5lcyBmb3Igb2xkIHZlcnNpb25zIG9mIGdsaWJjCi0rICovCi0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0rCi0rI2lmZGVmIE9fQ0xPRVhFQwotKyNkZWZpbmUgVUxfQ0xPRVhFQ1NUUgkiZSIKLSsjZWxzZQotKyNkZWZpbmUgVUxfQ0xPRVhFQ1NUUgkiIgotKyNlbmRpZgotKwotKyNpZm5kZWYgT19DTE9FWEVDCi0rI2RlZmluZSBPX0NMT0VYRUMgMAotKyNlbmRpZgotKwotKyNpZmRlZiBfX0ZyZWVCU0Rfa2VybmVsX18KLSsjaWZuZGVmIEZfRFVQRkRfQ0xPRVhFQwotKyNkZWZpbmUgRl9EVVBGRF9DTE9FWEVDCTE3CS8qIExpa2UgRl9EVVBGRCwgYnV0IEZEX0NMT0VYRUMgaXMgc2V0ICovCi0rI2VuZGlmCi0rI2VuZGlmCi0rCi0rCi0rI2lmbmRlZiBBSV9BRERSQ09ORklHCi0rI2RlZmluZSBBSV9BRERSQ09ORklHIDB4MDAyMAotKyNlbmRpZgotKwotKyNpZm5kZWYgSVVURjgKLSsjZGVmaW5lIElVVEY4IDAwNDAwMDAKLSsjZW5kaWYKLSsKLSsvKgotKyAqIE1BWEhPU1ROQU1FTEVOIHJlcGxhY2VtZW50Ci0rICovCi0rc3RhdGljIGlubGluZSBzaXplX3QgZ2V0X2hvc3RuYW1lX21heCh2b2lkKQotK3sKLSsJbG9uZyBsZW4gPSBzeXNjb25mKF9TQ19IT1NUX05BTUVfTUFYKTsKLSsKLSsJaWYgKDAgPCBsZW4pCi0rCQlyZXR1cm4gbGVuOwotKwotKyNpZmRlZiBNQVhIT1NUTkFNRUxFTgotKwlyZXR1cm4gTUFYSE9TVE5BTUVMRU47Ci0rI2VsaWYgSE9TVF9OQU1FX01BWAotKwlyZXR1cm4gSE9TVF9OQU1FX01BWDsKLSsjZW5kaWYKLSsJcmV0dXJuIDY0OwotK30KLSsKLSsKLSsvKgotKyAqIENvbnN0YW50IHN0cmluZ3MgZm9yIHVzYWdlKCkgZnVuY3Rpb25zLiBGb3IgbW9yZSBpbmZvIHNlZQotKyAqIERvY3VtZW50YXRpb24ve2hvd3RvLXVzYWdlLWZ1bmN0aW9uLnR4dCxib2lsZXJwbGF0ZS5jfQotKyAqLwotKyNkZWZpbmUgVVNBR0VfSEVBREVSICAgICAoIlxuVXNhZ2U6XG4iKQotKyNkZWZpbmUgVVNBR0VfT1BUSU9OUyAgICAoIlxuT3B0aW9uczpcbiIpCi0rI2RlZmluZSBVU0FHRV9GVU5DVElPTlMgICgiXG5GdW5jdGlvbnM6XG4iKQotKyNkZWZpbmUgVVNBR0VfQ09NTUFORFMgICAoIlxuQ29tbWFuZHM6XG4iKQotKyNkZWZpbmUgVVNBR0VfQ09MVU1OUyAgICAoIlxuQXZhaWxhYmxlIG91dHB1dCBjb2x1bW5zOlxuIikKLSsjZGVmaW5lIFVTQUdFX1NFUEFSQVRPUiAgICAiXG4iCi0rCi0rI2RlZmluZSBVU0FHRV9PUFRTVFJfSEVMUCAgICAgKCJkaXNwbGF5IHRoaXMgaGVscCIpCi0rI2RlZmluZSBVU0FHRV9PUFRTVFJfVkVSU0lPTiAgKCJkaXNwbGF5IHZlcnNpb24iKQotKwotKyNkZWZpbmUgVVNBR0VfSEVMUF9PUFRJT05TKG1hcmdfZHNjKSBcCi0rCQkiJS0iICNtYXJnX2RzYyAicyVzXG4iIFwKLSsJCSIlLSIgI21hcmdfZHNjICJzJXNcbiIgXAotKwkJLCAiIC1oLCAtLWhlbHAiLCAgICBVU0FHRV9PUFRTVFJfSEVMUCBcCi0rCQksICIgLVYsIC0tdmVyc2lvbiIsIFVTQUdFX09QVFNUUl9WRVJTSU9OCi0rCi0rI2RlZmluZSBVU0FHRV9NQU5fVEFJTChfbWFuKSAgICgiXG5Gb3IgbW9yZSBkZXRhaWxzIHNlZSAlcy5cbiIpLCBfbWFuCi0rCi0rI2RlZmluZSBVVElMX0xJTlVYX1ZFUlNJT04gKCIlcyBmcm9tICVzXG4iKSwgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUsIFBBQ0tBR0VfU1RSSU5HCi0rCi0rI2RlZmluZSBwcmludF92ZXJzaW9uKGV2YWwpIF9fZXh0ZW5zaW9uX18gKHsgXAotKwkJcHJpbnRmKFVUSUxfTElOVVhfVkVSU0lPTik7IFwKLSsJCWV4aXQoZXZhbCk7IFwKLSt9KQotKwotKy8qCi0rICogc2NhbmYgbW9kaWZpZXJzIGZvciAic3RyaW5ncyBhbGxvY2F0aW9uIgotKyAqLwotKyNpZmRlZiBIQVZFX1NDQU5GX01TX01PRElGSUVSCi0rI2RlZmluZSBVTF9TQ05zQQkiJW1zIgotKyNlbGlmIGRlZmluZWQoSEFWRV9TQ0FORl9BU19NT0RJRklFUikKLSsjZGVmaW5lIFVMX1NDTnNBCSIlYXMiCi0rI2VuZGlmCi0rCi0rLyoKLSsgKiBzZWVrIHN0dWZmCi0rICovCi0rI2lmbmRlZiBTRUVLX0RBVEEKLSsjIGRlZmluZSBTRUVLX0RBVEEJMwotKyNlbmRpZgotKyNpZm5kZWYgU0VFS19IT0xFCi0rIyBkZWZpbmUgU0VFS19IT0xFCTQKLSsjZW5kaWYKLSsKLSsKLSsvKgotKyAqIE1hY3JvcyB0byBjb252ZXJ0ICNkZWZpbmUnaXRpb25zIHRvIHN0cmluZ3MsIGZvciBleGFtcGxlCi0rICogI2RlZmluZSBYWVhYWSA0MgotKyAqIHByaW50ZiAoIiVzPSVzXG4iLCBzdHJpbmdpZnkoWFlYWFkpLCBzdHJpbmdpZnlfdmFsdWUoWFlYWFkpKTsKLSsgKi8KLSsjZGVmaW5lIHN0cmluZ2lmeV92YWx1ZShzKSBzdHJpbmdpZnkocykKLSsjZGVmaW5lIHN0cmluZ2lmeShzKSAjcwotKwotKy8qCi0rICogVUxfQVNBTl9CTEFDS0xJU1QgaXMgYSBtYWNybyB0byB0ZWxsIEFkZHJlc3NTYW5pdGl6ZXIgKGEgY29tcGlsZS10aW1lCi0rICogaW5zdHJ1bWVudGF0aW9uIHNoaXBwZWQgd2l0aCBDbGFuZyBhbmQgR0NDKSB0byBub3QgaW5zdHJ1bWVudCB0aGUKLSsgKiBhbm5vdGF0ZWQgZnVuY3Rpb24uICBGdXJ0aGVybW9yZSwgaXQgd2lsbCBwcmV2ZW50IHRoZSBjb21waWxlciBmcm9tCi0rICogaW5saW5pbmcgdGhlIGZ1bmN0aW9uIGJlY2F1c2UgaW5saW5pbmcgY3VycmVudGx5IGJyZWFrcyB0aGUgYmxhY2tsaXN0aW5nCi0rICogbWVjaGFuaXNtIG9mIEFkZHJlc3NTYW5pdGl6ZXIuCi0rICovCi0rI2lmIF9faGFzX2ZlYXR1cmUoYWRkcmVzc19zYW5pdGl6ZXIpICYmIF9faGFzX2F0dHJpYnV0ZShub19zYW5pdGl6ZV9tZW1vcnkpICYmIF9faGFzX2F0dHJpYnV0ZShub19zYW5pdGl6ZV9hZGRyZXNzKQotKyMgZGVmaW5lIFVMX0FTQU5fQkxBQ0tMSVNUIF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkgX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfbWVtb3J5KSkgX19hdHRyaWJ1dGVfXygobm9fc2FuaXRpemVfYWRkcmVzcykpCi0rI2Vsc2UKLSsjIGRlZmluZSBVTF9BU0FOX0JMQUNLTElTVAkvKiBub3RoaW5nICovCi0rI2VuZGlmCi0rCi0rLyoKLSsgKiBOb3RlIHRoYXQgc3lzY29uZihfU0NfR0VUUFdfUl9TSVpFX01BWCkgcmV0dXJucyAqaW5pdGlhbCogc3VnZ2VzdGVkIHNpemUgZm9yCi0rICogcHdkIGJ1ZmZlciBhbmQgaW4gc29tZSBjYXNlcyBpdCBpcyBub3QgbGFyZ2UgZW5vdWdoLiBTZWUgUE9TSVggYW5kCi0rICogZ2V0cHduYW1fciBtYW4gcGFnZSBmb3IgbW9yZSBkZXRhaWxzLgotKyAqLwotKyNkZWZpbmUgVUxfR0VUUFdfQlVGU0laCSgxNiAqIDEwMjQpCi0rCi0rLyoKLSsgKiBEYXJ3aW4gb3Igb3RoZXIgQlNEcyBtYXkgb25seSBoYXZlIE1BUF9BTk9OLiBUbyBnZXQgaXQgb24gRGFyd2luIHdlIG11c3QKLSsgKiBkZWZpbmUgX0RBUldJTl9DX1NPVVJDRSBiZWZvcmUgaW5jbHVkaW5nIHN5cy9tbWFuLmguIFdlIGRvIHRoaXMgaW4gY29uZmlnLmguCi0rICovCi0rI2lmICFkZWZpbmVkIE1BUF9BTk9OWU1PVVMgJiYgZGVmaW5lZCBNQVBfQU5PTgotKyMgZGVmaW5lIE1BUF9BTk9OWU1PVVMgIChNQVBfQU5PTikKLSsjZW5kaWYKLSsKLSsjZW5kaWYgLyogVVRJTF9MSU5VWF9DX0ggKi8KLS0tLSAvZGV2L251bGwKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy94YWxsb2MuaAotQEAgLTAsMCArMSwxMjkgQEAKLSsvKgotKyAqIENvcHlyaWdodCAoQykgMjAxMCBEYXZpZGxvaHIgQnVlc28gPGRhdmVAZ251Lm9yZz4KLSsgKgotKyAqIFRoaXMgZmlsZSBtYXkgYmUgcmVkaXN0cmlidXRlZCB1bmRlciB0aGUgdGVybXMgb2YgdGhlCi0rICogR05VIExlc3NlciBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlLgotKyAqCi0rICogR2VuZXJhbCBtZW1vcnkgYWxsb2NhdGlvbiB3cmFwcGVycyBmb3IgbWFsbG9jLCByZWFsbG9jLCBjYWxsb2MgYW5kIHN0cmR1cAotKyAqLwotKwotKyNpZm5kZWYgVVRJTF9MSU5VWF9YQUxMT0NfSAotKyNkZWZpbmUgVVRJTF9MSU5VWF9YQUxMT0NfSAotKwotKyNpbmNsdWRlIDxzdGRsaWIuaD4KLSsjaW5jbHVkZSA8c3RyaW5nLmg+Ci0rCi0rI2luY2x1ZGUgImMuaCIKLSsKLSsjaWZuZGVmIFhBTExPQ19FWElUX0NPREUKLSsjIGRlZmluZSBYQUxMT0NfRVhJVF9DT0RFIEVYSVRfRkFJTFVSRQotKyNlbmRpZgotKwotK3N0YXRpYyBpbmxpbmUgdm9pZCBfX2F0dHJpYnV0ZV9fKChfX25vcmV0dXJuX18pKQotK19fZXJyX29vbShjb25zdCBjaGFyICpmaWxlLCB1bnNpZ25lZCBpbnQgbGluZSkKLSt7Ci0rCWVycihYQUxMT0NfRVhJVF9DT0RFLCAiJXM6ICV1OiBjYW5ub3QgYWxsb2NhdGUgbWVtb3J5IiwgZmlsZSwgbGluZSk7Ci0rfQotKwotKyNkZWZpbmUgZXJyX29vbSgpCV9fZXJyX29vbShfX0ZJTEVfXywgX19MSU5FX18pCi0rCi0rc3RhdGljIGlubGluZSBfX3VsX2FsbG9jX3NpemUoMSkgX191bF9yZXR1cm5zX25vbm51bGwKLSt2b2lkICp4bWFsbG9jKGNvbnN0IHNpemVfdCBzaXplKQotK3sKLSsgICAgICAgIHZvaWQgKnJldCA9IG1hbGxvYyhzaXplKTsKLSsKLSsgICAgICAgIGlmICghcmV0ICYmIHNpemUpCi0rICAgICAgICAgICAgICAgIGVycihYQUxMT0NfRVhJVF9DT0RFLCAiY2Fubm90IGFsbG9jYXRlICV6dSBieXRlcyIsIHNpemUpOwotKyAgICAgICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSBfX3VsX2FsbG9jX3NpemUoMikgX191bF9yZXR1cm5zX25vbm51bGwKLSt2b2lkICp4cmVhbGxvYyh2b2lkICpwdHIsIGNvbnN0IHNpemVfdCBzaXplKQotK3sKLSsgICAgICAgIHZvaWQgKnJldCA9IHJlYWxsb2MocHRyLCBzaXplKTsKLSsKLSsgICAgICAgIGlmICghcmV0ICYmIHNpemUpCi0rICAgICAgICAgICAgICAgIGVycihYQUxMT0NfRVhJVF9DT0RFLCAiY2Fubm90IGFsbG9jYXRlICV6dSBieXRlcyIsIHNpemUpOwotKyAgICAgICAgcmV0dXJuIHJldDsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSBfX3VsX2NhbGxvY19zaXplKDEsIDIpIF9fdWxfcmV0dXJuc19ub25udWxsCi0rdm9pZCAqeGNhbGxvYyhjb25zdCBzaXplX3QgbmVsZW1zLCBjb25zdCBzaXplX3Qgc2l6ZSkKLSt7Ci0rICAgICAgICB2b2lkICpyZXQgPSBjYWxsb2MobmVsZW1zLCBzaXplKTsKLSsKLSsgICAgICAgIGlmICghcmV0ICYmIHNpemUgJiYgbmVsZW1zKQotKyAgICAgICAgICAgICAgICBlcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBhbGxvY2F0ZSAlenUgYnl0ZXMiLCBzaXplKTsKLSsgICAgICAgIHJldHVybiByZXQ7Ci0rfQotKwotK3N0YXRpYyBpbmxpbmUgY2hhciBfX2F0dHJpYnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQpKSBfX3VsX3JldHVybnNfbm9ubnVsbAotKyp4c3RyZHVwKGNvbnN0IGNoYXIgKnN0cikKLSt7Ci0rICAgICAgICBjaGFyICpyZXQ7Ci0rCi0rICAgICAgICBpZiAoIXN0cikKLSsgICAgICAgICAgICAgICAgcmV0dXJuIE5VTEw7Ci0rCi0rICAgICAgICByZXQgPSBzdHJkdXAoc3RyKTsKLSsKLSsgICAgICAgIGlmICghcmV0KQotKyAgICAgICAgICAgICAgICBlcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBkdXBsaWNhdGUgc3RyaW5nIik7Ci0rICAgICAgICByZXR1cm4gcmV0OwotK30KLSsKLStzdGF0aWMgaW5saW5lIGNoYXIgKiBfX2F0dHJpYnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQpKSBfX3VsX3JldHVybnNfbm9ubnVsbAotK3hzdHJuZHVwKGNvbnN0IGNoYXIgKnN0ciwgc2l6ZV90IHNpemUpCi0rewotKyAgICAgICAgY2hhciAqcmV0OwotKwotKyAgICAgICAgaWYgKCFzdHIpCi0rICAgICAgICAgICAgICAgIHJldHVybiBOVUxMOwotKwotKyAgICAgICAgcmV0ID0gc3RybmR1cChzdHIsIHNpemUpOwotKwotKyAgICAgICAgaWYgKCFyZXQpCi0rICAgICAgICAgICAgICAgIGVycihYQUxMT0NfRVhJVF9DT0RFLCAiY2Fubm90IGR1cGxpY2F0ZSBzdHJpbmciKTsKLSsgICAgICAgIHJldHVybiByZXQ7Ci0rfQotKwotKwotK3N0YXRpYyBpbmxpbmUgaW50IF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMykpKQotKyAgICB4YXNwcmludGYoY2hhciAqKnN0cnAsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotK3sKLSsJaW50IHJldDsKLSsJdmFfbGlzdCBhcmdzOwotKwl2YV9zdGFydChhcmdzLCBmbXQpOwotKwlyZXQgPSB2YXNwcmludGYoJigqc3RycCksIGZtdCwgYXJncyk7Ci0rCXZhX2VuZChhcmdzKTsKLSsJaWYgKHJldCA8IDApCi0rCQllcnIoWEFMTE9DX0VYSVRfQ09ERSwgImNhbm5vdCBhbGxvY2F0ZSBzdHJpbmciKTsKLSsJcmV0dXJuIHJldDsKLSt9Ci0rCi0rc3RhdGljIGlubGluZSBpbnQgIF9fYXR0cmlidXRlX18gKChfX2Zvcm1hdF9fKHByaW50ZiwgMiwgMCkpKQotK3h2YXNwcmludGYoY2hhciAqKnN0cnAsIGNvbnN0IGNoYXIgKmZtdCwgdmFfbGlzdCBhcCkKLSt7Ci0rCWludCByZXQgPSB2YXNwcmludGYoJigqc3RycCksIGZtdCwgYXApOwotKwlpZiAocmV0IDwgMCkKLSsJCWVycihYQUxMT0NfRVhJVF9DT0RFLCAiY2Fubm90IGFsbG9jYXRlIHN0cmluZyIpOwotKwlyZXR1cm4gcmV0OwotK30KLSsKLSsKLStzdGF0aWMgaW5saW5lIGNoYXIgKiBfX2F0dHJpYnV0ZV9fKCh3YXJuX3VudXNlZF9yZXN1bHQpKSB4Z2V0aG9zdG5hbWUodm9pZCkKLSt7Ci0rCWNoYXIgKm5hbWU7Ci0rCXNpemVfdCBzeiA9IGdldF9ob3N0bmFtZV9tYXgoKSArIDE7Ci0rCi0rCW5hbWUgPSB4bWFsbG9jKHNpemVvZihjaGFyKSAqIHN6KTsKLSsKLSsJaWYgKGdldGhvc3RuYW1lKG5hbWUsIHN6KSAhPSAwKSB7Ci0rCQlmcmVlKG5hbWUpOwotKwkJcmV0dXJuIE5VTEw7Ci0rCX0KLSsJbmFtZVtzeiAtIDFdID0gJ1wwJzsKLSsJcmV0dXJuIG5hbWU7Ci0rfQotKwotKyNlbmRpZgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9hbGxvdy1jb21waWxlLXNlcGFyYXRlLWZyb20tdXRpbC1saW51eC1oYXJkbGluay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvZ2xpYmMvZ2xpYmMvYWxsb3ctY29tcGlsZS1zZXBhcmF0ZS1mcm9tLXV0aWwtbGludXgtaGFyZGxpbmsucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDExNDhlYmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliYy9hbGxvdy1jb21waWxlLXNlcGFyYXRlLWZyb20tdXRpbC1saW51eC1oYXJkbGluay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyNiArMCwwIEBACi0tLS0KLSBsb2NhbGUvcHJvZ3JhbXMvYy5oICAgICAgICAgICAgICAgICAgICAgICAgfCAgICAyIAotIGxvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYyB8ICAgNzkgKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQotCi0tLS0gYS9sb2NhbGUvcHJvZ3JhbXMvY3Jvc3MtbG9jYWxlZGVmLWhhcmRsaW5rLmMKLSsrKyBiL2xvY2FsZS9wcm9ncmFtcy9jcm9zcy1sb2NhbGVkZWYtaGFyZGxpbmsuYwotQEAgLTIwLDYgKzIwLDggQEAKLSAgKiB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuLAotICAqIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EuCi0gICovCi0rCi0rI3VuZGVmIEhBVkVfUENSRQotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPGdldG9wdC5oPgotQEAgLTM4LDggKzQwLDggQEAKLSAKLSAjaW5jbHVkZSAiYy5oIgotICNpbmNsdWRlICJ4YWxsb2MuaCIKLS0jaW5jbHVkZSAibmxzLmgiCi0tI2luY2x1ZGUgImNsb3Nlc3RyZWFtLmgiCi0rLy8jaW5jbHVkZSAibmxzLmgiCi0rLy8jaW5jbHVkZSAiY2xvc2VzdHJlYW0uaCIKLSAKLSAjZGVmaW5lIE5IQVNIICAgKDE8PDE3KSAgLyogTXVzdCBiZSBhIHBvd2VyIG9mIDIhICovCi0gI2RlZmluZSBOQlVGICAgIDY0Ci1AQCAtMTI0LDMzICsxMjYsMzMgQEAgc3RhdGljIHZvaWQgcHJpbnRfc3VtbWFyeSh2b2lkKQotIAlpZiAoY3RsLT52ZXJib3NlID4gMSAmJiBjdGwtPm5saW5rcykKLSAJCWZwdXRjKCdcbicsIHN0ZG91dCk7Ci0gCi0tCXByaW50ZihfKCJEaXJlY3RvcmllczogICAlOWxsZFxuIiksIGN0bC0+bmRpcnMpOwotLQlwcmludGYoXygiT2JqZWN0czogICAgICAgJTlsbGRcbiIpLCBjdGwtPm5vYmplY3RzKTsKLS0JcHJpbnRmKF8oIlJlZ3VsYXIgZmlsZXM6ICU5bGxkXG4iKSwgY3RsLT5ucmVnZmlsZXMpOwotLQlwcmludGYoXygiQ29tcGFyaXNvbnM6ICAgJTlsbGRcbiIpLCBjdGwtPm5jb21wKTsKLSsJcHJpbnRmKCgiRGlyZWN0b3JpZXM6ICAgJTlsbGRcbiIpLCBjdGwtPm5kaXJzKTsKLSsJcHJpbnRmKCgiT2JqZWN0czogICAgICAgJTlsbGRcbiIpLCBjdGwtPm5vYmplY3RzKTsKLSsJcHJpbnRmKCgiUmVndWxhciBmaWxlczogJTlsbGRcbiIpLCBjdGwtPm5yZWdmaWxlcyk7Ci0rCXByaW50ZigoIkNvbXBhcmlzb25zOiAgICU5bGxkXG4iKSwgY3RsLT5uY29tcCk7Ci0gCXByaW50ZiggICIlcyU5bGxkXG4iLCAoY3RsLT5ub19saW5rID8KLS0JICAgICAgIF8oIldvdWxkIGxpbms6ICAgICIpIDoKLS0JICAgICAgIF8oIkxpbmtlZDogICAgICAgICIpKSwgY3RsLT5ubGlua3MpOwotKwkgICAgICAgKCJXb3VsZCBsaW5rOiAgICAiKSA6Ci0rCSAgICAgICAoIkxpbmtlZDogICAgICAgICIpKSwgY3RsLT5ubGlua3MpOwotIAlwcmludGYoICAiJXMgJTlsbGRcbiIsIChjdGwtPm5vX2xpbmsgPwotLQkgICAgICAgXygiV291bGQgc2F2ZTogICAiKSA6Ci0tCSAgICAgICBfKCJTYXZlZDogICAgICAgICIpKSwgY3RsLT5uc2F2ZWQpOwotKwkgICAgICAgKCJXb3VsZCBzYXZlOiAgICIpIDoKLSsJICAgICAgICgiU2F2ZWQ6ICAgICAgICAiKSksIGN0bC0+bnNhdmVkKTsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgX19hdHRyaWJ1dGVfXygoX19ub3JldHVybl9fKSkgdXNhZ2Uodm9pZCkKLSB7Ci0gCWZwdXRzKFVTQUdFX0hFQURFUiwgc3Rkb3V0KTsKLS0JcHJpbnRmKF8oIiAlcyBbb3B0aW9uc10gZGlyZWN0b3J5Li4uXG4iKSwgcHJvZ3JhbV9pbnZvY2F0aW9uX3Nob3J0X25hbWUpOwotKwlwcmludGYoKCIgJXMgW29wdGlvbnNdIGRpcmVjdG9yeS4uLlxuIiksIHByb2dyYW1faW52b2NhdGlvbl9zaG9ydF9uYW1lKTsKLSAKLSAJZnB1dHMoVVNBR0VfU0VQQVJBVE9SLCBzdGRvdXQpOwotLQlwdXRzKF8oIkNvbnNvbGlkYXRlIGR1cGxpY2F0ZSBmaWxlcyB1c2luZyBoYXJkbGlua3MuIikpOwotKwlwdXRzKCgiQ29uc29saWRhdGUgZHVwbGljYXRlIGZpbGVzIHVzaW5nIGhhcmRsaW5rcy4iKSk7Ci0gCi0gCWZwdXRzKFVTQUdFX09QVElPTlMsIHN0ZG91dCk7Ci0tCXB1dHMoXygiIC1jLCAtLWNvbnRlbnQgICAgICAgICAgY29tcGFyZSBvbmx5IGNvbnRlbnRzLCBpZ25vcmUgcGVybWlzc2lvbiwgZXRjLiIpKTsKLS0JcHV0cyhfKCIgLW4sIC0tZHJ5LXJ1biAgICAgICAgICBkb24ndCBhY3R1YWxseSBsaW5rIGFueXRoaW5nIikpOwotLQlwdXRzKF8oIiAtdiwgLS12ZXJib3NlICAgICAgICAgIHByaW50IHN1bW1hcnkgYWZ0ZXIgaGFyZGxpbmtpbmciKSk7Ci0tCXB1dHMoXygiIC12diAgICAgICAgICAgICAgICAgICAgcHJpbnQgZXZlcnkgaGFyZGxpbmtlZCBmaWxlIGFuZCBzdW1tYXJ5IikpOwotLQlwdXRzKF8oIiAtZiwgLS1mb3JjZSAgICAgICAgICAgIGZvcmNlIGhhcmRsaW5raW5nIGFjcm9zcyBmaWxlc3lzdGVtcyIpKTsKLS0JcHV0cyhfKCIgLXgsIC0tZXhjbHVkZSA8cmVnZXg+ICBleGNsdWRlIGZpbGVzIG1hdGNoaW5nIHBhdHRlcm4iKSk7Ci0rCXB1dHMoKCIgLWMsIC0tY29udGVudCAgICAgICAgICBjb21wYXJlIG9ubHkgY29udGVudHMsIGlnbm9yZSBwZXJtaXNzaW9uLCBldGMuIikpOwotKwlwdXRzKCgiIC1uLCAtLWRyeS1ydW4gICAgICAgICAgZG9uJ3QgYWN0dWFsbHkgbGluayBhbnl0aGluZyIpKTsKLSsJcHV0cygoIiAtdiwgLS12ZXJib3NlICAgICAgICAgIHByaW50IHN1bW1hcnkgYWZ0ZXIgaGFyZGxpbmtpbmciKSk7Ci0rCXB1dHMoKCIgLXZ2ICAgICAgICAgICAgICAgICAgICBwcmludCBldmVyeSBoYXJkbGlua2VkIGZpbGUgYW5kIHN1bW1hcnkiKSk7Ci0rCXB1dHMoKCIgLWYsIC0tZm9yY2UgICAgICAgICAgICBmb3JjZSBoYXJkbGlua2luZyBhY3Jvc3MgZmlsZXN5c3RlbXMiKSk7Ci0rCXB1dHMoKCIgLXgsIC0tZXhjbHVkZSA8cmVnZXg+ICBleGNsdWRlIGZpbGVzIG1hdGNoaW5nIHBhdHRlcm4iKSk7Ci0gCi0gCWZwdXRzKFVTQUdFX1NFUEFSQVRPUiwgc3Rkb3V0KTsKLSAJcHJpbnRmKFVTQUdFX0hFTFBfT1BUSU9OUygxNikpOyAvKiBjaGFyIG9mZnNldCB0byBhbGlnbiBvcHRpb24gZGVzY3JpcHRpb25zICovCi1AQCAtMTY0LDcgKzE2Niw3IEBAIHN0YXRpYyBpbmxpbmUgc2l6ZV90IGFkZDIoc2l6ZV90IGEsIHNpemUKLSAJc2l6ZV90IHN1bSA9IGEgKyBiOwotIAotIAlpZiAoc3VtIDwgYSkKLS0JCWVycngoRVhJVF9GQUlMVVJFLCBfKCJpbnRlZ2VyIG92ZXJmbG93IikpOwotKwkJZXJyeChFWElUX0ZBSUxVUkUsICgiaW50ZWdlciBvdmVyZmxvdyIpKTsKLSAJcmV0dXJuIHN1bTsKLSB9Ci0gCi1AQCAtMTkzLDcgKzE5NSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfcGF0aChzdHJ1Y3QgaGFyZGxpbmsKLSAJaWYgKHN0LnN0X2RldiAhPSBjdGwtPmRldiAmJiAhY3RsLT5mb3JjZSkgewotIAkJaWYgKGN0bC0+ZGV2KQotIAkJCWVycngoRVhJVF9GQUlMVVJFLAotLQkJCSAgICAgXygiJXMgaXMgb24gZGlmZmVyZW50IGZpbGVzeXN0ZW0gdGhhbiB0aGUgcmVzdCAiCi0rCQkJICAgICAoIiVzIGlzIG9uIGRpZmZlcmVudCBmaWxlc3lzdGVtIHRoYW4gdGhlIHJlc3QgIgotIAkJCSAgICAgICAiKHVzZSAtZiBvcHRpb24gdG8gb3ZlcnJpZGUpLiIpLCBuYW1lKTsKLSAJCWN0bC0+ZGV2ID0gc3Quc3RfZGV2OwotIAl9Ci1AQCAtMjg3LDkgKzI4OSw5IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfcGF0aChzdHJ1Y3QgaGFyZGxpbmsKLSAJCQkJCQkJKHNzaXplX3QpIHNpemVvZihjdGwtPmlvYnVmMSkgOiBmc2l6ZTsKLSAKLSAJCQkJCWlmICgoeHN6ID0gcmVhZChmZCwgY3RsLT5pb2J1ZjEsIHJzaXplKSkgIT0gcnNpemUpCi0tCQkJCQkJd2FybihfKCJjYW5ub3QgcmVhZCAlcyIpLCBuYW1lKTsKLSsJCQkJCQl3YXJuKCgiY2Fubm90IHJlYWQgJXMiKSwgbmFtZSk7Ci0gCQkJCQllbHNlIGlmICgoeHN6ID0gcmVhZChmZDIsIGN0bC0+aW9idWYyLCByc2l6ZSkpICE9IHJzaXplKQotLQkJCQkJCXdhcm4oXygiY2Fubm90IHJlYWQgJXMiKSwgZnAyLT5uYW1lKTsKLSsJCQkJCQl3YXJuKCgiY2Fubm90IHJlYWQgJXMiKSwgZnAyLT5uYW1lKTsKLSAKLSAJCQkJCWlmICh4c3ogIT0gcnNpemUpIHsKLSAJCQkJCQljbG9zZShmZCk7Ci1AQCAtMzAzLDEzICszMDUsMTMgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19wYXRoKHN0cnVjdCBoYXJkbGluawotIAkJCQlpZiAoZnNpemUgPiAwKQotIAkJCQkJY29udGludWU7Ci0gCQkJCWlmIChsc3RhdChuYW1lLCAmc3QzKSkgewotLQkJCQkJd2FybihfKCJjYW5ub3Qgc3RhdCAlcyIpLCBuYW1lKTsKLSsJCQkJCXdhcm4oKCJjYW5ub3Qgc3RhdCAlcyIpLCBuYW1lKTsKLSAJCQkJCWNsb3NlKGZkKTsKLSAJCQkJCXJldHVybjsKLSAJCQkJfQotIAkJCQlzdDMuc3RfYXRpbWUgPSBzdC5zdF9hdGltZTsKLSAJCQkJaWYgKHN0Y21wKCZzdCwgJnN0MywgMCkpIHsKLS0JCQkJCXdhcm54KF8oImZpbGUgJXMgY2hhbmdlZCB1bmRlcm5lYXRoIHVzIiksIG5hbWUpOwotKwkJCQkJd2FybngoKCJmaWxlICVzIGNoYW5nZWQgdW5kZXJuZWF0aCB1cyIpLCBuYW1lKTsKLSAJCQkJCWNsb3NlKGZkKTsKLSAJCQkJCXJldHVybjsKLSAJCQkJfQotQEAgLTMyOSwxOCArMzMxLDE4IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfcGF0aChzdHJ1Y3QgaGFyZGxpbmsKLSAJCQkJCSAgICAgICBzdWZmaXhsZW4gKyAxKTsKLSAJCQkJCS8qIEZpcnN0IGNyZWF0ZSBhIHRlbXBvcmFyeSBsaW5rIHRvIG4xIHVuZGVyIGEgbmV3IG5hbWUgKi8KLSAJCQkJCWlmIChsaW5rKG4xLCBuYW0yLmJ1ZikpIHsKLS0JCQkJCQl3YXJuKF8oImZhaWxlZCB0byBoYXJkbGluayAlcyB0byAlcyAoY3JlYXRlIHRlbXBvcmFyeSBsaW5rIGFzICVzIGZhaWxlZCkiKSwKLSsJCQkJCQl3YXJuKCgiZmFpbGVkIHRvIGhhcmRsaW5rICVzIHRvICVzIChjcmVhdGUgdGVtcG9yYXJ5IGxpbmsgYXMgJXMgZmFpbGVkKSIpLAotIAkJCQkJCQluMSwgbjIsIG5hbTIuYnVmKTsKLSAJCQkJCQlmcmVlKG5hbTIuYnVmKTsKLSAJCQkJCQljb250aW51ZTsKLSAJCQkJCX0KLSAJCQkJCS8qIFRoZW4gcmVuYW1lIGludG8gcGxhY2Ugb3ZlciB0aGUgZXhpc3RpbmcgbjIgKi8KLSAJCQkJCWlmIChyZW5hbWUobmFtMi5idWYsIG4yKSkgewotLQkJCQkJCXdhcm4oXygiZmFpbGVkIHRvIGhhcmRsaW5rICVzIHRvICVzIChyZW5hbWUgdGVtcG9yYXJ5IGxpbmsgdG8gJXMgZmFpbGVkKSIpLAotKwkJCQkJCXdhcm4oKCJmYWlsZWQgdG8gaGFyZGxpbmsgJXMgdG8gJXMgKHJlbmFtZSB0ZW1wb3JhcnkgbGluayB0byAlcyBmYWlsZWQpIiksCi0gCQkJCQkJCW4xLCBuMiwgbjIpOwotIAkJCQkJCS8qIFNvbWV0aGluZyB3ZW50IHdyb25nLCB0cnkgdG8gcmVtb3ZlIHRoZSBub3cgcmVkdW5kYW50IHRlbXBvcmFyeSBsaW5rICovCi0gCQkJCQkJaWYgKHVubGluayhuYW0yLmJ1ZikpCi0tCQkJCQkJCXdhcm4oXygiZmFpbGVkIHRvIHJlbW92ZSB0ZW1wb3JhcnkgbGluayAlcyIpLCBuYW0yLmJ1Zik7Ci0rCQkJCQkJCXdhcm4oKCJmYWlsZWQgdG8gcmVtb3ZlIHRlbXBvcmFyeSBsaW5rICVzIiksIG5hbTIuYnVmKTsKLSAJCQkJCQlmcmVlKG5hbTIuYnVmKTsKLSAJCQkJCQljb250aW51ZTsKLSAJCQkJCX0KLUBAIC0zNTEsMTYgKzM1MywxNiBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX3BhdGgoc3RydWN0IGhhcmRsaW5rCi0gCQkJCQkvKiBXZSBhY3R1YWxseSBkaWQgbm90IHNhdmUgYW55dGhpbmcgdGhpcyB0aW1lLCBzaW5jZSB0aGUgbGluayBzZWNvbmQgYXJndW1lbnQKLSAJCQkJCSAgIGhhZCBzb21lIG90aGVyIGxpbmtzIGFzIHdlbGwuICAqLwotIAkJCQkJaWYgKGN0bC0+dmVyYm9zZSA+IDEpCi0tCQkJCQkJcHJpbnRmKF8oIiAlcyAlcyB0byAlc1xuIiksCi0tCQkJCQkJCShjdGwtPm5vX2xpbmsgPyBfKCJXb3VsZCBsaW5rIikgOiBfKCJMaW5rZWQiKSksCi0rCQkJCQkJcHJpbnRmKCgiICVzICVzIHRvICVzXG4iKSwKLSsJCQkJCQkJKGN0bC0+bm9fbGluayA/ICgiV291bGQgbGluayIpIDogKCJMaW5rZWQiKSksCi0gCQkJCQkJCW4xLCBuMik7Ci0gCQkJCX0gZWxzZSB7Ci0gCQkJCQljdGwtPm5zYXZlZCArPSAoKHN0LnN0X3NpemUgKyA0MDk1KSAvIDQwOTYpICogNDA5NjsKLSAJCQkJCWlmIChjdGwtPnZlcmJvc2UgPiAxKQotLQkJCQkJCXByaW50ZihfKCIgJXMgJXMgdG8gJXMsICVzICVqZFxuIiksCi0tCQkJCQkJCShjdGwtPm5vX2xpbmsgPyBfKCJXb3VsZCBsaW5rIikgOiBfKCJMaW5rZWQiKSksCi0rCQkJCQkJcHJpbnRmKCgiICVzICVzIHRvICVzLCAlcyAlamRcbiIpLAotKwkJCQkJCQkoY3RsLT5ub19saW5rID8gKCJXb3VsZCBsaW5rIikgOiAoIkxpbmtlZCIpKSwKLSAJCQkJCQkJbjEsIG4yLAotLQkJCQkJCQkoY3RsLT5ub19saW5rID8gXygid291bGQgc2F2ZSIpIDogXygic2F2ZWQiKSksCi0rCQkJCQkJCShjdGwtPm5vX2xpbmsgPyAoIndvdWxkIHNhdmUiKSA6ICgic2F2ZWQiKSksCi0gCQkJCQkJCShpbnRtYXhfdClzdC5zdF9zaXplKTsKLSAJCQkJfQotIAkJCQljbG9zZShmZCk7Ci1AQCAtNDEwLDExICs0MTIsNiBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQl7IE5VTEwsIDAsIE5VTEwsIDAgfSwKLSAJfTsKLSAKLS0Jc2V0bG9jYWxlKExDX0FMTCwgIiIpOwotLQliaW5kdGV4dGRvbWFpbihQQUNLQUdFLCBMT0NBTEVESVIpOwotLQl0ZXh0ZG9tYWluKFBBQ0tBR0UpOwotLQljbG9zZV9zdGRvdXRfYXRleGl0KCk7Ci0tCi0gCXdoaWxlICgoY2ggPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAiY252Zng6VmgiLCBsb25nb3B0cywgTlVMTCkpICE9IC0xKSB7Ci0gCQlzd2l0Y2ggKGNoKSB7Ci0gCQljYXNlICduJzoKLUBAIC00MzQsNyArNDMxLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCWV4Y2x1ZGVfcGF0dGVybiA9IChQQ1JFMl9TUFRSKSBvcHRhcmc7Ci0gI2Vsc2UKLSAJCQllcnJ4KEVYSVRfRkFJTFVSRSwKLS0JCQkgICAgIF8oIm9wdGlvbiAtLWV4Y2x1ZGUgbm90IHN1cHBvcnRlZCAoYnVpbHQgd2l0aG91dCBwY3JlMikiKSk7Ci0rCQkJICAgICAoIm9wdGlvbiAtLWV4Y2x1ZGUgbm90IHN1cHBvcnRlZCAoYnVpbHQgd2l0aG91dCBwY3JlMikiKSk7Ci0gI2VuZGlmCi0gCQkJYnJlYWs7Ci0gCQljYXNlICdWJzoKLUBAIC00NDcsNyArNDQ0LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAl9Ci0gCi0gCWlmIChvcHRpbmQgPT0gYXJnYykgewotLQkJd2FybngoXygibm8gZGlyZWN0b3J5IHNwZWNpZmllZCIpKTsKLSsJCXdhcm54KCgibm8gZGlyZWN0b3J5IHNwZWNpZmllZCIpKTsKLSAJCWVycnRyeWhlbHAoRVhJVF9GQUlMVVJFKTsKLSAJfQotIAotQEAgLTQ2MSw3ICs0NTgsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQkJUENSRTJfVUNIQVIgYnVmZmVyWzI1Nl07Ci0gCQkJcGNyZTJfZ2V0X2Vycm9yX21lc3NhZ2UoZXJyb3JudW1iZXIsIGJ1ZmZlciwKLSAJCQkJCQlzaXplb2YoYnVmZmVyKSk7Ci0tCQkJZXJyeChFWElUX0ZBSUxVUkUsIF8oInBhdHRlcm4gZXJyb3IgYXQgb2Zmc2V0ICVkOiAlcyIpLAotKwkJCWVycngoRVhJVF9GQUlMVVJFLCAoInBhdHRlcm4gZXJyb3IgYXQgb2Zmc2V0ICVkOiAlcyIpLAotIAkJCQkoaW50KWVycm9yb2Zmc2V0LCBidWZmZXIpOwotIAkJfQotIAkJbWF0Y2hfZGF0YSA9IHBjcmUyX21hdGNoX2RhdGFfY3JlYXRlX2Zyb21fcGF0dGVybihyZSwgTlVMTCk7Ci1AQCAtNTA2LDcgKzUwMyw3IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCQkgICAgPj0wKSB7Ci0gCQkJCWlmIChjdGwtPnZlcmJvc2UpIHsKLSAJCQkJCW5hbTEuYnVmW25hbTFiYXNlbGVuXSA9IDA7Ci0tCQkJCQlwcmludGYoXygiU2tpcHBpbmcgJXMlc1xuIiksIG5hbTEuYnVmLCBkaS0+ZF9uYW1lKTsKLSsJCQkJCXByaW50ZigoIlNraXBwaW5nICVzJXNcbiIpLCBuYW0xLmJ1ZiwgZGktPmRfbmFtZSk7Ci0gCQkJCX0KLSAJCQkJY29udGludWU7Ci0gCQkJfQotLS0tIGEvbG9jYWxlL3Byb2dyYW1zL2MuaAotKysrIGIvbG9jYWxlL3Byb2dyYW1zL2MuaAotQEAgLTI0MCw3ICsyNDAsNyBAQCBlcnJtc2coY2hhciBkb2V4aXQsIGludCBleGNvZGUsIGNoYXIgYWRkCi0gLyogRG9uJ3QgdXNlIGlubGluZSBmdW5jdGlvbiB0byBhdm9pZCAnI2luY2x1ZGUgIm5scy5oIicgaW4gYy5oCi0gICovCi0gI2RlZmluZSBlcnJ0cnloZWxwKGV2YWwpIF9fZXh0ZW5zaW9uX18gKHsgXAotLQlmcHJpbnRmKHN0ZGVyciwgXygiVHJ5ICclcyAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIFwKLSsJZnByaW50ZihzdGRlcnIsICgiVHJ5ICclcyAtLWhlbHAnIGZvciBtb3JlIGluZm9ybWF0aW9uLlxuIiksIFwKLSAJCQlwcm9ncmFtX2ludm9jYXRpb25fc2hvcnRfbmFtZSk7IFwKLSAJZXhpdChldmFsKTsgXAotIH0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMzAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMzAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYWRkMzMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliY18yLjMwLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLXJlcXVpcmUgZ2xpYmMuaW5jCi1yZXF1aXJlIGdsaWJjLXZlcnNpb24uaW5jCi0KLURFUEVORFMgKz0gImdwZXJmLW5hdGl2ZSBiaXNvbi1uYXRpdmUgbWFrZS1uYXRpdmUiCi0KLU5BVElWRVNES0ZJWEVTID89ICIiCi1OQVRJVkVTREtGSVhFU19jbGFzcy1uYXRpdmVzZGsgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA1LW5hdGl2ZXNkay1nbGliYy1NYWtlLXJlbG9jYXRhYmxlLWluc3RhbGwtZm9yLWxvY2FsZXMucGF0Y2ggXAotIgotCi1TUkNfVVJJID0gICIke0dMSUJDX0dJVF9VUkl9O2JyYW5jaD0ke1NSQ0JSQU5DSH07bmFtZT1nbGliYyBcCi0gICAgICAgICAgIGZpbGU6Ly9ldGMvbGQuc28uY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly9nZW5lcmF0ZS1zdXBwb3J0ZWQubWsgXAotICAgICAgICAgICBmaWxlOi8vbWFrZWRicy5zaCBcCi0gICAgICAgICAgIFwKLSAgICAgICAgICAgJHtOQVRJVkVTREtGSVhFU30gXAotICAgICAgICAgICBmaWxlOi8vMDAwNi1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDctcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDExLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEzLXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNC1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE1LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTYtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE3LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxOC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTktZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIwLWVnbGliYy1DbGVhci1jYWNoZS1saW5lcy1vbi1wcGM4eHgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMS1lZ2xpYmMtUmVzb2x2ZS1fX2Zwc2NyX3ZhbHVlcy1vbi1TSDQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMi1lZ2xpYmMtRm9yd2FyZC1wb3J0LWNyb3NzLWxvY2FsZS1nZW5lcmF0aW9uLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMy1EZWZpbmUtRFVNTVlfTE9DQUxFX1QtaWYtbm90LWRlZmluZWQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNC1sb2NhbGVkZWYtYWRkLXRvLWFyY2hpdmUtdXNlcy1hLWhhcmQtY29kZWQtbG9jYWxlLXBhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjUtZWxmLWRsLWRlcHMuYy1NYWtlLV9kbF9idWlsZF9sb2NhbF9zY29wZS1icmVhZHRoLWZpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI2LWludGwtRW1pdC1uby1saW5lcy1pbi1iaXNvbi1nZW5lcmF0ZWQtZmlsZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNy1pbmplY3QtZmlsZS1hc3NlbWJseS1kaXJlY3RpdmVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjgtbG9jYWxlLXByZXZlbnQtbWF5YmUtdW5pbml0aWFsaXplZC1lcnJvcnMtd2l0aC1Pcy1CWi5wYXRjaCBcCi0gICAgICAgICAgICIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi1CID0gIiR7V09SS0RJUn0vYnVpbGQtJHtUQVJHRVRfU1lTfSIKLQotUEFDS0FHRVNfRFlOQU1JQyA9ICIiCi0KLSMgdGhlIC1pc3lzdGVtIGluIGJpdGJha2UuY29uZiBzY3Jld3MgdXAgZ2xpYmMgZG9fc3RhZ2UKLUJVSUxEX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IgotVEFSR0VUX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtpbmNsdWRlZGlyfSIKLQotR0xJQkNfQlJPS0VOX0xPQ0FMRVMgPSAiIgotCi1HTElCQ1BJRSA/Pz0gIiIKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWtlcm5lbD0ke09MREVTVF9LRVJORUx9IFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtcHJvZmlsZSBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRlYnVnIC0td2l0aG91dC1nZCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtY2xvY2FsZT1nbnUgXAotICAgICAgICAgICAgICAgIC0td2l0aC1oZWFkZXJzPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc2VsaW51eCBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtdHVuYWJsZXMgXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWJpbmQtbm93IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1zdGFjay1wcm90ZWN0b3I9c3Ryb25nIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1zdGFja2d1YXJkLXJhbmRvbWl6YXRpb24gXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1jcnlwdCBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWRlZmF1bHQtbGluayBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtbnNjZCBcCi0gICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdTRUxFQ1RFRF9PUFRJTUlaQVRJT04nLCAnLU8wIC1PZycsICctLWRpc2FibGUtd2Vycm9yJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgJHtHTElCQ1BJRX0gXAotICAgICAgICAgICAgICAgICR7R0xJQkNfRVhUUkFfT0VDT05GfSIKLQotRVhUUkFfT0VDT05GICs9ICIke0BnZXRfbGliY19mcHVfc2V0dGluZyhiYiwgZCl9IgotCi1kb19wYXRjaF9hcHBlbmQoKSB7Ci0gICAgYmIuYnVpbGQuZXhlY19mdW5jKCdkb19maXhfcmVhZGxpYl9jJywgZCkKLX0KLQotZG9fZml4X3JlYWRsaWJfYyAoKSB7Ci0Jc2VkIC1pIC1lICdzI09FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUyMke0VHTElCQ19LTk9XTl9JTlRFUlBSRVRFUl9OQU1FU30jJyAke1N9L2VsZi9yZWFkbGliLmMKLX0KLQotZG9fY29uZmlndXJlICgpIHsKLSMgb3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiB0byBhdm9pZCB0aGUgYXV0b2NvbmYvYXV0b21ha2UvYWNsb2NhbC9hdXRvaGVhZGVyCi0jIGNhbGxzIGZvciBub3cKLSMgZG9uJ3QgcGFzcyBDUFBGTEFHUyBpbnRvIGNvbmZpZ3VyZSwgc2luY2UgaXQgdXBzZXRzIHRoZSBrZXJuZWwtaGVhZGVycwotIyB2ZXJzaW9uIGNoZWNrIGFuZCBkb2Vzbid0IHJlYWxseSBoZWxwIHdpdGggYW55dGhpbmcKLSAgICAgICAgKGNkICR7U30gJiYgZ251LWNvbmZpZ2l6ZSkgfHwgZGllICJmYWlsdXJlIGluIHJ1bm5pbmcgZ251LWNvbmZpZ2l6ZSIKLSAgICAgICAgZmluZCAke1N9IC1uYW1lICJjb25maWd1cmUiIHwgeGFyZ3MgdG91Y2gKLSAgICAgICAgQ1BQRkxBR1M9IiIgb2VfcnVuY29uZgotfQotCi1kb19jb21waWxlICgpIHsKLQkjIC1XbCwtcnBhdGgtbGluayA8c3RhZ2luZz4vbGliIGluIExERkxBR1MgY2FuIGNhdXNlIGJyZWFrYWdlIGlmIGFub3RoZXIgZ2xpYmMgaXMgaW4gc3RhZ2luZwotCUxERkxBR1M9Ii1mdXNlLWxkPWJmZCIKLQliYXNlX2RvX2NvbXBpbGUKLQllY2hvICJBZGp1c3QgbGRkIHNjcmlwdCIKLQlpZiBbIC1uICIke1JUTERMSVNUfSIgXQotCXRoZW4KLQkJcHJldnJ0bGQ9YGNhdCAke0J9L2VsZi9sZGQgfCBncmVwICJeUlRMRExJU1Q9IiB8IHNlZCAncyNeUlRMRExJU1Q9Ilw/XChbXiJdKlwpIlw/JCNcMSMnYAotCQkjIHJlbW92ZSBkdXBsaWNhdGUgZW50cmllcwotCQluZXdydGxkPWBlY2hvICQocHJpbnRmICclc1xuJyAke3ByZXZydGxkfSAke1JUTERMSVNUfSB8IExDX0FMTD1DIHNvcnQgLXUpYAotCQllY2hvICJsZGQgXCIke3ByZXZydGxkfSAke1JUTERMSVNUfVwiIC0+IFwiJHtuZXdydGxkfVwiIgotCQlzZWQgLWkgJHtCfS9lbGYvbGRkIC1lICJzI15SVExETElTVD0uKlwkI1JUTERMSVNUPVwiJHtuZXdydGxkfVwiIyIKLQlmaQotfQotCi1yZXF1aXJlIGdsaWJjLXBhY2thZ2UuaW5jCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliY18yLjMxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9nbGliYy9nbGliY18yLjMxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2MDVmZDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2dsaWJjL2dsaWJjXzIuMzEuYmIKQEAgLTAsMCArMSwxMTMgQEAKK3JlcXVpcmUgZ2xpYmMuaW5jCityZXF1aXJlIGdsaWJjLXZlcnNpb24uaW5jCisKK0RFUEVORFMgKz0gImdwZXJmLW5hdGl2ZSBiaXNvbi1uYXRpdmUgbWFrZS1uYXRpdmUiCisKK05BVElWRVNES0ZJWEVTID89ICIiCitOQVRJVkVTREtGSVhFU19jbGFzcy1uYXRpdmVzZGsgPSAiXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1uYXRpdmVzZGstZ2xpYmMtTG9vay1mb3ItaG9zdC1zeXN0ZW0tbGQuc28uY2FjaGUtYXMtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtbmF0aXZlc2RrLWdsaWJjLUZpeC1idWZmZXItb3ZlcnJ1bi13aXRoLWEtcmVsb2NhdGVkLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LW5hdGl2ZXNkay1nbGliYy1SYWlzZS10aGUtc2l6ZS1vZi1hcnJheXMtY29udGFpbmluZy0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1uYXRpdmVzZGstZ2xpYmMtQWxsb3ctNjQtYml0LWF0b21pY3MtZm9yLXg4Ni5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LW5hdGl2ZXNkay1nbGliYy1NYWtlLXJlbG9jYXRhYmxlLWluc3RhbGwtZm9yLWxvY2FsZXMucGF0Y2ggXAorIgorCitTUkNfVVJJID0gICIke0dMSUJDX0dJVF9VUkl9O2JyYW5jaD0ke1NSQ0JSQU5DSH07bmFtZT1nbGliYyBcCisgICAgICAgICAgIGZpbGU6Ly9ldGMvbGQuc28uY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly9nZW5lcmF0ZS1zdXBwb3J0ZWQubWsgXAorICAgICAgICAgICBmaWxlOi8vbWFrZWRicy5zaCBcCisgICAgICAgICAgIFwKKyAgICAgICAgICAgJHtOQVRJVkVTREtGSVhFU30gXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1mc2wtZTUwMC1lNTUwMC1lNjUwMC02MDNlLWZzcXJ0LWltcGxlbWVudGF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktcmVhZGxpYi1BZGQtT0VDT1JFX0tOT1dOX0lOVEVSUFJFVEVSX05BTUVTLXRvLWtub3duLS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEwLXBwYy1zcXJ0LUZpeC11bmRlZmluZWQtcmVmZXJlbmNlLXRvLV9fc3FydF9maW5pdGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1fX2llZWU3NTRfc3FydC1mLWFyZS1ub3ctaW5saW5lLWZ1bmN0aW9ucy1hbmQtY2FsbC1vLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTItUXVvdGUtZnJvbS1idWctMTQ0My13aGljaC1leHBsYWlucy13aGF0LXRoZS1wYXRjaC1kby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDEzLWVnbGliYy1ydW4tbGlibS1lcnItdGFiLnBsLXdpdGgtc3BlY2lmaWMtZGlycy1pbi1TLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTQtX19pZWVlNzU0X3NxcnQtZi1hcmUtbm93LWlubGluZS1mdW5jdGlvbnMtYW5kLWNhbGwtby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE1LXN5c2RlcHMtZ251LWNvbmZpZ3VyZS5hYy1oYW5kbGUtY29ycmVjdGx5LWxpYmNfY3Zfcm8ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNi1BZGQtdW51c2VkLWF0dHJpYnV0ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE3LXllcy13aXRoaW4tdGhlLXBhdGgtc2V0cy13cm9uZy1jb25maWctdmFyaWFibGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTgtdGltZXpvbmUtcmUtd3JpdHRlbi10enNlbGVjdC1hcy1wb3NpeC1zaC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE5LVJlbW92ZS1iYXNoLWRlcGVuZGVuY3ktZm9yLW5zY2QtaW5pdC1zY3JpcHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1lZ2xpYmMtQ3Jvc3MtYnVpbGRpbmctYW5kLXRlc3RpbmctaW5zdHJ1Y3Rpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjEtZWdsaWJjLUhlbHAtYm9vdHN0cmFwLWNyb3NzLXRvb2xjaGFpbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIyLWVnbGliYy1SZXNvbHZlLV9fZnBzY3JfdmFsdWVzLW9uLVNINC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIzLWVnbGliYy1Gb3J3YXJkLXBvcnQtY3Jvc3MtbG9jYWxlLWdlbmVyYXRpb24tc3VwcG9ydC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI0LURlZmluZS1EVU1NWV9MT0NBTEVfVC1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI1LWxvY2FsZWRlZi1hZGQtdG8tYXJjaGl2ZS11c2VzLWEtaGFyZC1jb2RlZC1sb2NhbGUtcGEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNi1lbGYtZGwtZGVwcy5jLU1ha2UtX2RsX2J1aWxkX2xvY2FsX3Njb3BlLWJyZWFkdGgtZmlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjctaW50bC1FbWl0LW5vLWxpbmVzLWluLWJpc29uLWdlbmVyYXRlZC1maWxlcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI4LWluamVjdC1maWxlLWFzc2VtYmx5LWRpcmVjdGl2ZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyOS1sb2NhbGUtcHJldmVudC1tYXliZS11bmluaXRpYWxpemVkLWVycm9ycy13aXRoLU9zLUJaLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDIwLTEwMDI5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzAtSW1wcm92ZS1JRlVOQy1jaGVjay1CWi0yNTUwNi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDMxLUZpeC1idWlsZC13aXRoLUdDQy0xMC13aGVuLWxvbmctZG91YmxlLWRvdWJsZS5wYXRjaCBcCisgICAgICAgICAgICIKK1MgPSAiJHtXT1JLRElSfS9naXQiCitCID0gIiR7V09SS0RJUn0vYnVpbGQtJHtUQVJHRVRfU1lTfSIKKworUEFDS0FHRVNfRFlOQU1JQyA9ICIiCisKKyMgdGhlIC1pc3lzdGVtIGluIGJpdGJha2UuY29uZiBzY3Jld3MgdXAgZ2xpYmMgZG9fc3RhZ2UKK0JVSUxEX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IgorVEFSR0VUX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtpbmNsdWRlZGlyfSIKKworR0xJQkNfQlJPS0VOX0xPQ0FMRVMgPSAiIgorCitHTElCQ1BJRSA/Pz0gIiIKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWtlcm5lbD0ke09MREVTVF9LRVJORUx9IFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtcHJvZmlsZSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRlYnVnIC0td2l0aG91dC1nZCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtY2xvY2FsZT1nbnUgXAorICAgICAgICAgICAgICAgIC0td2l0aC1oZWFkZXJzPSR7U1RBR0lOR19JTkNESVJ9IFwKKyAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc2VsaW51eCBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtdHVuYWJsZXMgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWJpbmQtbm93IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1zdGFjay1wcm90ZWN0b3I9c3Ryb25nIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1zdGFja2d1YXJkLXJhbmRvbWl6YXRpb24gXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1jcnlwdCBcCisgICAgICAgICAgICAgICAgLS13aXRoLWRlZmF1bHQtbGluayBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtbnNjZCBcCisgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdTRUxFQ1RFRF9PUFRJTUlaQVRJT04nLCAnLU8wIC1PZycsICctLWRpc2FibGUtd2Vycm9yJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgJHtHTElCQ1BJRX0gXAorICAgICAgICAgICAgICAgICR7R0xJQkNfRVhUUkFfT0VDT05GfSIKKworRVhUUkFfT0VDT05GICs9ICIke0BnZXRfbGliY19mcHVfc2V0dGluZyhiYiwgZCl9IgorCitkb19wYXRjaF9hcHBlbmQoKSB7CisgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdkb19maXhfcmVhZGxpYl9jJywgZCkKK30KKworZG9fZml4X3JlYWRsaWJfYyAoKSB7CisJc2VkIC1pIC1lICdzI09FQ09SRV9LTk9XTl9JTlRFUlBSRVRFUl9OQU1FUyMke0VHTElCQ19LTk9XTl9JTlRFUlBSRVRFUl9OQU1FU30jJyAke1N9L2VsZi9yZWFkbGliLmMKK30KKworZG9fY29uZmlndXJlICgpIHsKKyMgb3ZlcnJpZGUgdGhpcyBmdW5jdGlvbiB0byBhdm9pZCB0aGUgYXV0b2NvbmYvYXV0b21ha2UvYWNsb2NhbC9hdXRvaGVhZGVyCisjIGNhbGxzIGZvciBub3cKKyMgZG9uJ3QgcGFzcyBDUFBGTEFHUyBpbnRvIGNvbmZpZ3VyZSwgc2luY2UgaXQgdXBzZXRzIHRoZSBrZXJuZWwtaGVhZGVycworIyB2ZXJzaW9uIGNoZWNrIGFuZCBkb2Vzbid0IHJlYWxseSBoZWxwIHdpdGggYW55dGhpbmcKKyAgICAgICAgKGNkICR7U30gJiYgZ251LWNvbmZpZ2l6ZSkgfHwgZGllICJmYWlsdXJlIGluIHJ1bm5pbmcgZ251LWNvbmZpZ2l6ZSIKKyAgICAgICAgZmluZCAke1N9IC1uYW1lICJjb25maWd1cmUiIHwgeGFyZ3MgdG91Y2gKKyAgICAgICAgQ1BQRkxBR1M9IiIgb2VfcnVuY29uZgorfQorCitMREZMQUdTICs9ICItZnVzZS1sZD1iZmQiCitkb19jb21waWxlICgpIHsKKwliYXNlX2RvX2NvbXBpbGUKKwllY2hvICJBZGp1c3QgbGRkIHNjcmlwdCIKKwlpZiBbIC1uICIke1JUTERMSVNUfSIgXQorCXRoZW4KKwkJcHJldnJ0bGQ9YGNhdCAke0J9L2VsZi9sZGQgfCBncmVwICJeUlRMRExJU1Q9IiB8IHNlZCAncyNeUlRMRExJU1Q9Ilw/XChbXiJdKlwpIlw/JCNcMSMnYAorCQkjIHJlbW92ZSBkdXBsaWNhdGUgZW50cmllcworCQluZXdydGxkPWBlY2hvICQocHJpbnRmICclc1xuJyAke3ByZXZydGxkfSAke1JUTERMSVNUfSB8IExDX0FMTD1DIHNvcnQgLXUpYAorCQllY2hvICJsZGQgXCIke3ByZXZydGxkfSAke1JUTERMSVNUfVwiIC0+IFwiJHtuZXdydGxkfVwiIgorCQlzZWQgLWkgJHtCfS9lbGYvbGRkIC1lICJzI15SVExETElTVD0uKlwkI1JUTERMSVNUPVwiJHtuZXdydGxkfVwiIyIKKwlmaQorfQorCityZXF1aXJlIGdsaWJjLXBhY2thZ2UuaW5jCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy8wMDAxLU1ha2VmaWxlLWRvLW5vdC11c2UtZHBrZy1mb3ItZGV0ZXJtaW5pbmctT1MtdHlwZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvMDAwMS1NYWtlZmlsZS1kby1ub3QtdXNlLWRwa2ctZm9yLWRldGVybWluaW5nLU9TLXR5cGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTdjOGQwNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvMDAwMS1NYWtlZmlsZS1kby1ub3QtdXNlLWRwa2ctZm9yLWRldGVybWluaW5nLU9TLXR5cGUucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAorRnJvbSA3YWNlMDY1NmJkMzI1ZjllNzc0OWYyY2RlNjQxZWRkYzA1N2JjOThhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDkgSmFuIDIwMjAgMTU6Mzg6MDYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGU6IGRvIG5vdCB1c2UgZHBrZyBmb3IgZGV0ZXJtaW5pbmcgT1MgdHlwZQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIE1ha2VmaWxlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQoraW5kZXggMGNlMmZhMy4uNzM5YWVmMiAxMDA2NDQKKy0tLSBhL01ha2VmaWxlCisrKysgYi9NYWtlZmlsZQorQEAgLTEsNiArMSw2IEBACisgVkVSU0lPTiA/PSAwLjgKKyBDRkxBR1MgPz0gLVdhbGwgLVcgLVduby11bnVzZWQtcGFyYW1ldGVyIC1nIC1PMgorLUFSQ0ggOj0gJChzaGVsbCBkcGtnLWFyY2hpdGVjdHVyZSAtcURFQl9IT1NUX0FSQ0hfT1MpCisrQVJDSCA6PSBsaW51eAorIAorIEJBU0VESVIgPz0gJChERVNURElSKQorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pZnVwZG93bi9maWxlcy9pbmV0LTYtLmRlZm4tZml4LWludmVydGVkLWNoZWNrcy1mb3ItbG9vcGJhY2sucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2ZpbGVzL2luZXQtNi0uZGVmbi1maXgtaW52ZXJ0ZWQtY2hlY2tzLWZvci1sb29wYmFjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWIwZDUxZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2ZpbGVzL2luZXQtNi0uZGVmbi1maXgtaW52ZXJ0ZWQtY2hlY2tzLWZvci1sb29wYmFjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwMyArMCwwIEBACi1Gcm9tIDZmY2U5OWM5ZTQyY2JhY2RlMTg1NTQ3M2I3NDVjYTFmZGVkM2ZiZjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiTWF4aW4gQi4gSm9obiIgPG1heGluLmpvaG5AaW50ZWwuY29tPgotRGF0ZTogV2VkLCAyMSBEZWMgMjAxNiAxNTozMjowNyArMDIwMAotU3ViamVjdDogW1BBVENIIDIvMl0gaW5ldFs2XS5kZWZuOiBmaXggaW52ZXJ0ZWQgY2hlY2tzIGZvciBsb29wYmFjawotCi1Db21wYXJlZCB0byB0aGUgaHVyZCBsaW5rLmRlZm4gZm9yIGxvb3BiYWNrLCB3ZSBzZWUgdGhlc2UKLWFyZSBpbnZlcnRlZCwgbWVhbmluZyB0aGF0IHlvdSB3b3VsZCBvbmx5IGJlIGFibGUgdG8gY29uZmlndXJlCi1hIGxvb3BiYWNrIGRldmljZSB0aGF0IHdhcyBfbm90XyBuYW1lZCAibG8iICh1bmxpa2VseSB0byBleGlzdCkuCi0KLVRoZSByZXN1bHQgd2FzIHRoYXQgd2UnZCB1cGRhdGUgL3J1bi9uZXR3b3JrL2lmc3RhdGUgZm9yICJsbyIKLWJ1dCBuZXZlciBhY3R1YWxseSBkbyBhbnl0aGluZyBmb3IgdXAvZG93biwgYXMgc2hvd24gYmVsb3c6Ci0KLXJvb3RAbG9jYWxob3N0On4jIGlmY29uZmlnIC1zCi1JZmFjZSAgIE1UVSBNZXQgICBSWC1PSyBSWC1FUlIgUlgtRFJQIFJYLU9WUiAgVFgtT0sgVFgtRVJSIFRYLURSUCBUWC1PVlIgRmxnCi1ldGgwICAgICAgIDE1MDAgMCAgIDc3MzYzMjkgICAgICAwICAgMjAxNiAwIDUyODk0MjIgICAgICAwICAgICAgMCAgICAgIDAgQk1SVQotbG8gICAgICAgIDY1NTM2IDAgICAgICAgIDE4ICAgICAgMCAgICAgIDAgMCAgICAgIDE4ICAgICAgMCAgICAgIDAgICAgICAwIExSVQotcm9vdEBsb2NhbGhvc3Q6fiMgaWZkb3duIGxvCi1yb290QGxvY2FsaG9zdDp+IyBlY2hvICQ/Ci0wCi1yb290QGxvY2FsaG9zdDp+IyBpZmNvbmZpZyAtcwotSWZhY2UgICBNVFUgTWV0ICAgUlgtT0sgUlgtRVJSIFJYLURSUCAgUlgtT1ZSICAgIFRYLU9LIFRYLUVSUiBUWC1EUlAgVFgtT1ZSIEZsZwotZXRoMCAgICAgICAxNTAwIDAgICA3NzM2NDA2ICAgICAgMCAgMjAxNiAwICAgNTI4OTQ1NSAgICAgIDAgICAgICAwICAgICAgMCBCTVJVCi1sbyAgICAgICAgNjU1MzYgMCAgICAgICAgMTggICAgICAwICAgMCAwICAgICAgICAgICAgMTggICAgMCAgICAwICAgIDAgICAgIExSVQotcm9vdEBsb2NhbGhvc3Q6fiMgaWZjb25maWcgbG8gZG93bgotcm9vdEBsb2NhbGhvc3Q6fiMgaWZjb25maWcgLXMKLUlmYWNlICAgTVRVIE1ldCAgIFJYLU9LIFJYLUVSUiBSWC1EUlAgUlgtT1ZSICAgIFRYLU9LIFRYLUVSUiBUWC1EUlAgVFgtT1ZSIEZsZwotZXRoMCAgICAgICAxNTAwIDAgICA3NzM2NDc0IDAgICAyMDE2IDAgICAgICAgNTI4OTQ4MSAgICAgIDAgICAgIDAgICAgICAwIEJNUlUKLXJvb3RAbG9jYWxob3N0On4jCi0KLUFsc28gcmV2ZXJ0ZWQgdGhlIGNvbW1pdDoKLWNvbW1pdCA4MGI4Nzg0OTc2NjNkYWUwOGY3MGI0ZDNjZmZlMTI3YjU3YTNjZmMKLXdoaWNoIHVzZXMgYWJzb2x1dGUgcGF0aHMgdG8gYmluYXJpZXMgY2FsbGVkIGJ5IGlmdXAvaWZkb3duLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBQYXVsIEdvcnRtYWtlciA8cGF1bC5nb3J0bWFrZXJAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1heGluIEIuIEpvaG4gPG1heGluLmpvaG5AaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gaW5ldC5kZWZuIHwgMTM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA2NyBpbnNlcnRpb25zKCspLCA2NyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2luZXQuZGVmbiBiL2luZXQuZGVmbgotaW5kZXggMTgyYjU2Yi4uMzEwNjdiYyAxMDA2NDQKLS0tLSBhL2luZXQuZGVmbgotKysrIGIvaW5ldC5kZWZuCi1AQCAtNiwxMCArNiwxMCBAQCBtZXRob2QgbG9vcGJhY2sKLSAgICAgVGhpcyBtZXRob2QgbWF5IGJlIHVzZWQgdG8gZGVmaW5lIHRoZSBJUHY0IGxvb3BiYWNrIGludGVyZmFjZS4KLSAKLSAgIHVwCi0tICAgIC9iaW4vaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgdXAgaWYgKCFpZmFjZV9pc19sbygpKQotKyAgICBpcCBsaW5rIHNldCBkZXYgJWlmYWNlJSB1cCBpZiAoIWlmYWNlX2lzX2xvKCkpCi0gCi0gICBkb3duCi0tICAgIC9iaW4vaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgZG93biBpZiAoIWlmYWNlX2lzX2xvKCkpCi0rICAgIGlwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGRvd24gaWYgKCFpZmFjZV9pc19sbygpKQotIAotIG1ldGhvZCBzdGF0aWMKLSAgIGRlc2NyaXB0aW9uCi1AQCAtMzYsMTcgKzM2LDE3IEBAIG1ldGhvZCBzdGF0aWMKLSAgICAgYnJvYWRjYXN0IGNvbXB1dGVfdjRfYnJvYWRjYXN0Ci0gCi0gICB1cAotLSAgICAvYmluL2lwIGFkZHIgYWRkICVhZGRyZXNzJVtbLyVuZXRtYXNrJV1dIFtbYnJvYWRjYXN0ICVicm9hZGNhc3QlXV0gXAotKyAgICBpcCBhZGRyIGFkZCAlYWRkcmVzcyVbWy8lbmV0bWFzayVdXSBbW2Jyb2FkY2FzdCAlYnJvYWRjYXN0JV1dIFwKLSAJW1twZWVyICVwb2ludG9wb2ludCVdXSBbW3Njb3BlICVzY29wZSVdXSBkZXYgJWlmYWNlJSBsYWJlbCAlaWZhY2UlCi0tICAgIC9iaW4vaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgW1ttdHUgJW10dSVdXSBbW2FkZHJlc3MgJWh3YWRkcmVzcyVdXSB1cAotKyAgICBpcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBbW210dSAlbXR1JV1dIFtbYWRkcmVzcyAlaHdhZGRyZXNzJV1dIHVwCi0gCi0tICAgIFtbIC9iaW4vaXAgcm91dGUgYWRkIGRlZmF1bHQgdmlhICVnYXRld2F5JSBbW21ldHJpYyAlbWV0cmljJV1dIGRldiAlaWZhY2UlIG9ubGluayBdXQotKyAgICBbWyBpcCByb3V0ZSBhZGQgZGVmYXVsdCB2aWEgJWdhdGV3YXklIFtbbWV0cmljICVtZXRyaWMlXV0gZGV2ICVpZmFjZSUgb25saW5rIF1dCi0gCi0gICBkb3duCi0tICAgIFtbIC9iaW4vaXAgcm91dGUgZGVsIGRlZmF1bHQgdmlhICVnYXRld2F5JSBbW21ldHJpYyAlbWV0cmljJV1dIGRldiAlaWZhY2UlIDI+JjEgMT4vZGV2L251bGwgfHwgdHJ1ZSBdXQotLSAgICAvYmluL2lwIGFkZHIgZGVsICVhZGRyZXNzJVtbLyVuZXRtYXNrJV1dIFtbYnJvYWRjYXN0ICVicm9hZGNhc3QlXV0gXAotKyAgICBbWyBpcCByb3V0ZSBkZWwgZGVmYXVsdCB2aWEgJWdhdGV3YXklIFtbbWV0cmljICVtZXRyaWMlXV0gZGV2ICVpZmFjZSUgMj4mMSAxPi9kZXYvbnVsbCB8fCB0cnVlIF1dCi0rICAgIGlwIGFkZHIgZGVsICVhZGRyZXNzJVtbLyVuZXRtYXNrJV1dIFtbYnJvYWRjYXN0ICVicm9hZGNhc3QlXV0gXAotIAlbW3BlZXIgJXBvaW50b3BvaW50JV1dIFtbc2NvcGUgJXNjb3BlJV1dIGRldiAlaWZhY2UlIGxhYmVsICVpZmFjZSUKLS0gICAgL2Jpbi9pcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBkb3duIFwKLSsgICAgaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgZG93biBcCi0gCQlpZiAoaWZhY2VfaXNfbGluaygpKQotIAotIG1ldGhvZCBtYW51YWwKLUBAIC02MywxMiArNjMsMTIgQEAgbWV0aG9kIG1hbnVhbAotICAgICBod2FkZHJlc3MgY2xlYW51cF9od2FkZHJlc3MKLSAKLSAgIHVwCi0tICAgIFtbL2Jpbi9pcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBtdHUgJW10dSVdXQotLSAgICBbWy9iaW4vaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgYWRkcmVzcyAlaHdhZGRyZXNzJV1dCi0tICAgIC9iaW4vaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgdXAgMj4vZGV2L251bGwgfHwgdHJ1ZQotKyAgICBbW2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIG10dSAlbXR1JV1dCi0rICAgIFtbaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgYWRkcmVzcyAlaHdhZGRyZXNzJV1dCi0rICAgIGlwIGxpbmsgc2V0IGRldiAlaWZhY2UlIHVwIDI+L2Rldi9udWxsIHx8IHRydWUKLSAKLSAgIGRvd24KLS0gICAgL2Jpbi9pcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBkb3duIDI+L2Rldi9udWxsIHx8IHRydWUgXAotKyAgICBpcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBkb3duIDI+L2Rldi9udWxsIHx8IHRydWUgXAotICAgICAgICAgaWYgKGlmYWNlX2lzX2xpbmsoKSAmJiAhZG9fYWxsKQotIAotIG1ldGhvZCBkaGNwCi1AQCAtOTMsMzMgKzkzLDMzIEBAIG1ldGhvZCBkaGNwCi0gICAgIGh3YWRkcmVzcyBjbGVhbnVwX2h3YWRkcmVzcwotIAotICAgdXAKLS0gICAgW1svYmluL2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGFkZHJlc3MgJWh3YWRkcmVzcyVdXQotLSAgICAvc2Jpbi9kaGNsaWVudCAtNCAtdiAtcGYgL3J1bi9kaGNsaWVudC4laWZhY2UlLnBpZCAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC4laWZhY2UlLmxlYXNlcyAtSSAtZGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudDYuJWlmYWNlJS5sZWFzZXMgJWlmYWNlJSBcCi0rICAgIFtbaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgYWRkcmVzcyAlaHdhZGRyZXNzJV1dCi0rICAgIGRoY2xpZW50IC00IC12IC1wZiAvcnVuL2RoY2xpZW50LiVpZmFjZSUucGlkIC1sZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50LiVpZmFjZSUubGVhc2VzIC1JIC1kZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50Ni4laWZhY2UlLmxlYXNlcyAlaWZhY2UlIFwKLSAJW1stZSBJRl9NRVRSSUM9JW1ldHJpYyVdXSBcCi0gICAgICAgICBpZiAoZXhlY2FibGUoIi9zYmluL2RoY2xpZW50IikpCi0tICAgIC9zYmluL3B1bXAgLWkgJWlmYWNlJSBbWy1oICVob3N0bmFtZSVdXSBbWy1sICVsZWFzZWhvdXJzJV1dIFwKLSsgICAgcHVtcCAtaSAlaWZhY2UlIFtbLWggJWhvc3RuYW1lJV1dIFtbLWwgJWxlYXNlaG91cnMlXV0gXAotICAgICAgICAgZWxzaWYgKGV4ZWNhYmxlKCIvc2Jpbi9wdW1wIikpCi0tICAgIC9zYmluL3VkaGNwYyAtbiAtcCAvcnVuL3VkaGNwYy4laWZhY2UlLnBpZCAtaSAlaWZhY2UlIFtbLXggaG9zdG5hbWU6JWhvc3RuYW1lJV1dIFwKLSsgICAgdWRoY3BjIC1uIC1wIC9ydW4vdWRoY3BjLiVpZmFjZSUucGlkIC1pICVpZmFjZSUgW1steCBob3N0bmFtZTolaG9zdG5hbWUlXV0gXAotICAgICAgICAgZWxzaWYgKGV4ZWNhYmxlKCIvc2Jpbi91ZGhjcGMiKSkKLS0gICAgL3NiaW4vZGhjcGNkIFtbLWggJWhvc3RuYW1lJV1dIFtbLWkgJXZlbmRvciVdXSBbWy1JICVjbGllbnQlXV0gXAotKyAgICBkaGNwY2QgW1staCAlaG9zdG5hbWUlXV0gW1staSAldmVuZG9yJV1dIFtbLUkgJWNsaWVudCVdXSBcCi0gICAgICAgICAgICBbWy1sICVsZWFzZXRpbWUlXV0gW1stbSAlbWV0cmljJV1dICVpZmFjZSUgXAotICAgICAgICAgZWxzaWYgKGV4ZWNhYmxlKCIvc2Jpbi9kaGNwY2QiKSkKLSAgICAgZWNobyAnTm8gREhDUCBjbGllbnQgc29mdHdhcmUgZm91bmQhJyA+L2Rldi9zdGRlcnI7IGZhbHNlIFwKLSAgICAgICAgIGVsc2lmICgxKQotIAotICAgZG93bgotLSAgICAvc2Jpbi9kaGNsaWVudCAtNCAtdiAtciAtcGYgL3J1bi9kaGNsaWVudC4laWZhY2UlLnBpZCAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC4laWZhY2UlLmxlYXNlcyAtSSAtZGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudDYuJWlmYWNlJS5sZWFzZXMgJWlmYWNlJSBcCi0rICAgIGRoY2xpZW50IC00IC12IC1yIC1wZiAvcnVuL2RoY2xpZW50LiVpZmFjZSUucGlkIC1sZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50LiVpZmFjZSUubGVhc2VzIC1JIC1kZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50Ni4laWZhY2UlLmxlYXNlcyAlaWZhY2UlIFwKLSAgICAgICAgIGlmIChleGVjYWJsZSgiL3NiaW4vZGhjbGllbnQiKSkKLS0gICAgL3NiaW4vcHVtcCAtaSAlaWZhY2UlIC1yIFwKLSsgICAgcHVtcCAtaSAlaWZhY2UlIC1yIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vcHVtcCIpKQotICAgICBpZiB0ZXN0IC1mIC9ydW4vdWRoY3BjLiVpZmFjZSUucGlkOyB0aGVuIGtpbGwgLVVTUjIgJCgvYmluL2NhdCAvcnVuL3VkaGNwYy4laWZhY2UlLnBpZCk7IGtpbGwgLVRFUk0gJCgvYmluL2NhdCAvcnVuL3VkaGNwYy4laWZhY2UlLnBpZCk7IGZpIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vdWRoY3BjIikpCi0tICAgIC9zYmluL2RoY3BjZCAtayAlaWZhY2UlIFwKLSsgICAgZGhjcGNkIC1rICVpZmFjZSUgXAotICAgICAgICAgZWxzaWYgKGV4ZWNhYmxlKCIvc2Jpbi9kaGNwY2QiKSkKLSAgICAgZWNobyAnTm8gREhDUCBjbGllbnQgc29mdHdhcmUgZm91bmQhJyA+L2Rldi9zdGRlcnI7IGZhbHNlIFwKLSAgICAgICAgIGVsc2lmICgxKQotIAotLSAgICAvYmluL2lwIGxpbmsgc2V0IGRldiAlaWZhY2UlIGRvd24gXAotKyAgICBpcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBkb3duIFwKLSAJCWlmIChpZmFjZV9pc19saW5rKCkpCi0gCi0gbWV0aG9kIGJvb3RwCi1AQCAtMTM0LDExICsxMzQsMTEgQEAgbWV0aG9kIGJvb3RwCi0gICAgICAgICAgICAgICAgICAgICAgIHdoYXRldmVyIGl0IHJlYWxseSBpcy4KLSAKLSAgIHVwCi0tICAgIC9zYmluL2Jvb3RwYyBbWy0tYm9vdGZpbGUgJWJvb3RmaWxlJV1dIC0tZGV2ICVpZmFjZSUgW1stLXNlcnZlciAlc2VydmVyJV1dIFwKLSsgICAgYm9vdHBjIFtbLS1ib290ZmlsZSAlYm9vdGZpbGUlXV0gLS1kZXYgJWlmYWNlJSBbWy0tc2VydmVyICVzZXJ2ZXIlXV0gXAotICAgICAgICAgICAgW1stLWh3YWRkciAlaHdhZGRyJV1dIC0tcmV0dXJuaWZmYWlsIC0tc2VydmVyYmNhc3QKLSAKLSAgIGRvd24KLS0gICAgL2Jpbi9pcCBsaW5rIHNldCBkZXYgJWlmYWNlJSBkb3duIFwKLSsgICAgaXAgbGluayBzZXQgZGV2ICVpZmFjZSUgZG93biBcCi0gICAgICAgICBpZiAoaWZhY2VfaXNfbGluaygpKQotIAotIG1ldGhvZCB0dW5uZWwKLUBAIC0xNTgsMTMgKzE1OCwxMyBAQCBtZXRob2QgdHVubmVsCi0gICAgIHR0bCB0aW1lICAgICAgICAgICAgICAtLSBUVEwgc2V0dGluZwotICAgICBtdHUgc2l6ZSAgICAgICAgICAgICAgLS0gTVRVIHNpemUKLSAgIHVwCi0tICAgIC9iaW4vaXAgdHVubmVsIGFkZCAlaWZhY2UlIG1vZGUgJW1vZGUlIHJlbW90ZSAlZW5kcG9pbnQlIFtbbG9jYWwgJWxvY2FsJV1dIFwKLSsgICAgaXAgdHVubmVsIGFkZCAlaWZhY2UlIG1vZGUgJW1vZGUlIHJlbW90ZSAlZW5kcG9pbnQlIFtbbG9jYWwgJWxvY2FsJV1dIFwKLSAgICAgICAgW1t0dGwgJXR0bCVdXQotLSAgICAvYmluL2lwIGxpbmsgc2V0ICVpZmFjZSUgdXAgW1ttdHUgJW10dSVdXQotLSAgICAvYmluL2lwIGFkZHIgYWRkICVhZGRyZXNzJS8lbmV0bWFzayUgZGV2ICVpZmFjZSUgW1twZWVyICVkc3RhZGRyJV1dCi0tICAgIFtbIC9iaW4vaXAgcm91dGUgYWRkIGRlZmF1bHQgdmlhICVnYXRld2F5JSBbW21ldHJpYyAlbWV0cmljJV1dIGRldiAlaWZhY2UlIG9ubGluayBdXQotKyAgICBpcCBsaW5rIHNldCAlaWZhY2UlIHVwIFtbbXR1ICVtdHUlXV0KLSsgICAgaXAgYWRkciBhZGQgJWFkZHJlc3MlLyVuZXRtYXNrJSBkZXYgJWlmYWNlJSBbW3BlZXIgJWRzdGFkZHIlXV0KLSsgICAgW1sgaXAgcm91dGUgYWRkIGRlZmF1bHQgdmlhICVnYXRld2F5JSBbW21ldHJpYyAlbWV0cmljJV1dIGRldiAlaWZhY2UlIG9ubGluayBdXQotICAgZG93bgotLSAgICAvYmluL2lwIHR1bm5lbCBkZWwgJWlmYWNlJQotKyAgICBpcCB0dW5uZWwgZGVsICVpZmFjZSUKLSAKLSBtZXRob2QgcHBwCi0gICBkZXNjcmlwdGlvbgotQEAgLTE3NSw5ICsxNzUsOSBAQCBtZXRob2QgcHBwCi0gICAgIHVuaXQgbnVtYmVyICAgIC0tIFVzZSAvbnVtYmVyLyBhcyB0aGUgcHBwIHVuaXQgbnVtYmVyLgotICAgICBvcHRpb25zIHN0cmluZyAtLSBQYXNzIC9zdHJpbmcvIGFzIGFkZGl0aW9uYWwgb3B0aW9ucyB0byBwb24uCi0gICB1cAotLSAgICAvdXNyL2Jpbi9wb24gW1slcHJvdmlkZXIlXV0gW1t1bml0ICV1bml0JV1dIFtbJW9wdGlvbnMlXV0KLSsgICAgcG9uIFtbJXByb3ZpZGVyJV1dIFtbdW5pdCAldW5pdCVdXSBbWyVvcHRpb25zJV1dCi0gICBkb3duCi0tICAgIC91c3IvYmluL3BvZmYgW1slcHJvdmlkZXIlXV0KLSsgICAgcG9mZiBbWyVwcm92aWRlciVdXQotIAotIG1ldGhvZCB3dmRpYWwKLSAgIGRlc2NyaXB0aW9uCi1AQCAtMTg2LDEwICsxODYsMTAgQEAgbWV0aG9kIHd2ZGlhbAotICAgb3B0aW9ucwotICAgICBwcm92aWRlciBuYW1lICAtLSBVc2UgL25hbWUvIGFzIHRoZSBwcm92aWRlciAoZnJvbSAvZXRjL3d2ZGlhbC5jb25mKS4KLSAgIHVwCi0tICAgIC9zYmluL3N0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLXggL3Vzci9iaW4vd3ZkaWFsIFwKLSsgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAteCAvdXNyL2Jpbi93dmRpYWwgXAotICAgICAgICAgICAgICAgICAgICAgICAtcCAvcnVuL3d2ZGlhbC4laWZhY2UlLnBpZCAtYiAtbSAtLSBbWyAlcHJvdmlkZXIlIF1dCi0gICBkb3duCi0tICAgIC9zYmluL3N0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAteCAvdXNyL2Jpbi93dmRpYWwgXAotKyAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLXggL3Vzci9iaW4vd3ZkaWFsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLXAgL3J1bi93dmRpYWwuJWlmYWNlJS5waWQgLXMgMgotIAotIAotQEAgLTIwMCw5ICsyMDAsOSBAQCBtZXRob2QgaXB2NGxsCi0gICAgIGtub3duIGFzIEFQSVBBIG9yIElQQUMsIGFuZCBvZnRlbiBjb2xsb3F1aWFsbHkgcmVmZXJyZWQgdG8KLSAgICAgYXMgIlplcm9jb25mIGFkZHJlc3MiLgotICAgdXAKLS0gICAgL3Vzci9zYmluL2F2YWhpLWF1dG9pcGQgLUQgJWlmYWNlJQotKyAgICBhdmFoaS1hdXRvaXBkIC1EICVpZmFjZSUKLSAgIGRvd24KLS0gICAgL3Vzci9zYmluL2F2YWhpLWF1dG9pcGQgLS1raWxsICVpZmFjZSUKLSsgICAgYXZhaGktYXV0b2lwZCAtLWtpbGwgJWlmYWNlJQotIAotIGFyY2hpdGVjdHVyZSBrZnJlZWJzZAotIAotQEAgLTIxMSwxMSArMjExLDExIEBAIG1ldGhvZCBsb29wYmFjawotICAgICBUaGlzIG1ldGhvZCBtYXkgYmUgdXNlZCB0byBkZWZpbmUgdGhlIElQdjQgbG9vcGJhY2sgaW50ZXJmYWNlLgotIAotICAgdXAKLS0gICAgL3NiaW4vaWZjb25maWcgJWlmYWNlJSAxMjcuMC4wLjEgdXAgXAotKyAgICBpZmNvbmZpZyAlaWZhY2UlIDEyNy4wLjAuMSB1cCBcCi0gCWlmICghaWZhY2VfaXNfbG8oKSkKLSAKLSAgIGRvd24KLS0gICAgL3NiaW4vaWZjb25maWcgJWlmYWNlJSBkb3duIFwKLSsgICAgaWZjb25maWcgJWlmYWNlJSBkb3duIFwKLSAJaWYgKCFpZmFjZV9pc19sbygpKQotIAotIG1ldGhvZCBzdGF0aWMKLUBAIC0yMzgsMTUgKzIzOCwxNSBAQCBtZXRob2Qgc3RhdGljCi0gICAgIGh3YWRkcmVzcyBjbGVhbnVwX2h3YWRkcmVzcwotIAotICAgdXAKLS0gICAgW1sgL3NiaW4vaWZjb25maWcgJWlmYWNlJSBsaW5rICVod2FkZHJlc3MlXV0KLS0gICAgL3NiaW4vaWZjb25maWcgJWlmYWNlJSAlYWRkcmVzcyUgW1tuZXRtYXNrICVuZXRtYXNrJV1dIFtbYnJvYWRjYXN0ICVicm9hZGNhc3QlXV0gXAotKyAgICBbWyBpZmNvbmZpZyAlaWZhY2UlIGxpbmsgJWh3YWRkcmVzcyVdXQotKyAgICBpZmNvbmZpZyAlaWZhY2UlICVhZGRyZXNzJSBbW25ldG1hc2sgJW5ldG1hc2slXV0gW1ticm9hZGNhc3QgJWJyb2FkY2FzdCVdXSBcCi0gCVtbcG9pbnRvcG9pbnQgJXBvaW50b3BvaW50JV1dIFtbbWVkaWEgJW1lZGlhJV1dIFtbbXR1ICVtdHUlXV0gXAotIAl1cAotLSAgICBbWyAvc2Jpbi9yb3V0ZSBhZGQgZGVmYXVsdCAlZ2F0ZXdheSUgXV0KLSsgICAgW1sgcm91dGUgYWRkIGRlZmF1bHQgJWdhdGV3YXklIF1dCi0gCi0gICBkb3duCi0tICAgIFtbIC9zYmluL3JvdXRlIGRlbCBkZWZhdWx0ICVnYXRld2F5JSAyPiYxIDE+L2Rldi9udWxsIHx8IHRydWUgXV0KLS0gICAgL3NiaW4vaWZjb25maWcgJWlmYWNlJSBkb3duCi0rICAgIFtbIHJvdXRlIGRlbCBkZWZhdWx0ICVnYXRld2F5JSAyPiYxIDE+L2Rldi9udWxsIHx8IHRydWUgXV0KLSsgICAgaWZjb25maWcgJWlmYWNlJSBkb3duCi0gCi0gbWV0aG9kIG1hbnVhbAotICAgZGVzY3JpcHRpb24KLUBAIC0yNzksMzAgKzI3OSwzMCBAQCBtZXRob2QgZGhjcAotICAgICBod2FkZHJlc3MgY2xlYW51cF9od2FkZHJlc3MKLSAKLSAgIHVwCi0tICAgIFtbL3NiaW4vaWZjb25maWcgJWlmYWNlJSBsaW5rICVod2FkZHJlc3MlXV0KLS0gICAgL3NiaW4vZGhjbGllbnQgLTQgLXYgLXBmIC9ydW4vZGhjbGllbnQuJWlmYWNlJS5waWQgLWxmIC92YXIvbGliL2RoY3AvZGhjbGllbnQuJWlmYWNlJS5sZWFzZXMgLUkgLWRmIC92YXIvbGliL2RoY3AvZGhjbGllbnQ2LiVpZmFjZSUubGVhc2VzICVpZmFjZSUgXAotKyAgICBbW2lmY29uZmlnICVpZmFjZSUgbGluayAlaHdhZGRyZXNzJV1dCi0rICAgIGRoY2xpZW50IC00IC12IC1wZiAvcnVuL2RoY2xpZW50LiVpZmFjZSUucGlkIC1sZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50LiVpZmFjZSUubGVhc2VzIC1JIC1kZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50Ni4laWZhY2UlLmxlYXNlcyAlaWZhY2UlIFwKLSAJW1stZSBJRl9NRVRSSUM9JW1ldHJpYyVdXSBcCi0gICAgICAgICBpZiAoZXhlY2FibGUoIi9zYmluL2RoY2xpZW50IikpCi0tICAgIC9zYmluL3VkaGNwYyAtbiAtcCAvcnVuL3VkaGNwYy4laWZhY2UlLnBpZCAtaSAlaWZhY2UlIFtbLUggJWhvc3RuYW1lJV1dIFwKLSsgICAgdWRoY3BjIC1uIC1wIC9ydW4vdWRoY3BjLiVpZmFjZSUucGlkIC1pICVpZmFjZSUgW1stSCAlaG9zdG5hbWUlXV0gXAotICAgICAgICAgICAgW1stYyAlY2xpZW50JV1dIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vdWRoY3BjIikpCi0tICAgIC9zYmluL2RoY3BjZCBbWy1oICVob3N0bmFtZSVdXSBbWy1pICV2ZW5kb3IlXV0gW1stSSAlY2xpZW50JV1dIFwKLSsgICAgZGhjcGNkIFtbLWggJWhvc3RuYW1lJV1dIFtbLWkgJXZlbmRvciVdXSBbWy1JICVjbGllbnQlXV0gXAotICAgICAgICAgICAgW1stbCAlbGVhc2V0aW1lJV1dICVpZmFjZSUgXAotICAgICAgICAgZWxzaWYgKGV4ZWNhYmxlKCIvc2Jpbi9kaGNwY2QiKSkKLSAgICAgZWNobyAnTm8gREhDUCBjbGllbnQgc29mdHdhcmUgZm91bmQhJyA+L2Rldi9zdGRlcnI7IGZhbHNlIFwKLSAgICAgICAgIGVsc2lmICgxKQotIAotICAgZG93bgotLSAgICAvc2Jpbi9kaGNsaWVudCAtNCAtdiAtciAtcGYgL3J1bi9kaGNsaWVudC4laWZhY2UlLnBpZCAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC4laWZhY2UlLmxlYXNlcyAtSSAtZGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudDYuJWlmYWNlJS5sZWFzZXMgJWlmYWNlJSBcCi0rICAgIGRoY2xpZW50IC00IC12IC1yIC1wZiAvcnVuL2RoY2xpZW50LiVpZmFjZSUucGlkIC1sZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50LiVpZmFjZSUubGVhc2VzIC1JIC1kZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50Ni4laWZhY2UlLmxlYXNlcyAlaWZhY2UlIFwKLSAgICAgICAgIGlmIChleGVjYWJsZSgiL3NiaW4vZGhjbGllbnQiKSkKLSAgICAgaWYgdGVzdCAtZiAvcnVuL3VkaGNwYy4laWZhY2UlLnBpZDsgdGhlbiBraWxsIC1VU1IyICQoL2Jpbi9jYXQgL3J1bi91ZGhjcGMuJWlmYWNlJS5waWQpOyBraWxsIC1URVJNICQoL2Jpbi9jYXQgL3J1bi91ZGhjcGMuJWlmYWNlJS5waWQpOyBmaSBcCi0gICAgICAgICBlbHNpZiAoZXhlY2FibGUoIi9zYmluL3VkaGNwYyIpKQotLSAgICAvc2Jpbi9kaGNwY2QgLWsgJWlmYWNlJSBcCi0rICAgIGRoY3BjZCAtayAlaWZhY2UlIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vZGhjcGNkIikpCi0gICAgIGVjaG8gJ05vIERIQ1AgY2xpZW50IHNvZnR3YXJlIGZvdW5kIScgPi9kZXYvc3RkZXJyOyBmYWxzZSBcCi0gICAgICAgICBlbHNpZiAoMSkKLSAKLS0gICAgL3NiaW4vaWZjb25maWcgJWlmYWNlJSBkb3duCi0rICAgIGlmY29uZmlnICVpZmFjZSUgZG93bgotIAotIG1ldGhvZCBib290cAotICAgZGVzY3JpcHRpb24KLUBAIC0zMTYsMTEgKzMxNiwxMSBAQCBtZXRob2QgYm9vdHAKLSAgICAgICAgICAgICAgICAgICAgICAgd2hhdGV2ZXIgaXQgcmVhbGx5IGlzLgotIAotICAgdXAKLS0gICAgL3NiaW4vYm9vdHBjIFtbLS1ib290ZmlsZSAlYm9vdGZpbGUlXV0gLS1kZXYgJWlmYWNlJSBbWy0tc2VydmVyICVzZXJ2ZXIlXV0gXAotKyAgICBib290cGMgW1stLWJvb3RmaWxlICVib290ZmlsZSVdXSAtLWRldiAlaWZhY2UlIFtbLS1zZXJ2ZXIgJXNlcnZlciVdXSBcCi0gICAgICAgICAgICBbWy0taHdhZGRyICVod2FkZHIlXV0gLS1yZXR1cm5pZmZhaWwgLS1zZXJ2ZXJiY2FzdAotIAotICAgZG93bgotLSAgICAvc2Jpbi9pZmNvbmZpZyAlaWZhY2UlIGRvd24KLSsgICAgaWZjb25maWcgJWlmYWNlJSBkb3duCi0gCi0gbWV0aG9kIHBwcAotICAgZGVzY3JpcHRpb24KLUBAIC0zMzEsOSArMzMxLDkgQEAgbWV0aG9kIHBwcAotICAgICB1bml0IG51bWJlciAgICAtLSBVc2UgL251bWJlci8gYXMgdGhlIHBwcCB1bml0IG51bWJlci4KLSAgICAgb3B0aW9ucyBzdHJpbmcgLS0gUGFzcyAvc3RyaW5nLyBhcyBhZGRpdGlvbmFsIG9wdGlvbnMgdG8gcG9uLgotICAgdXAKLS0gICAgL3Vzci9iaW4vcG9uIFtbJXByb3ZpZGVyJV1dIFtbdW5pdCAldW5pdCVdXSBbWyVvcHRpb25zJV1dCi0rICAgIHBvbiBbWyVwcm92aWRlciVdXSBbW3VuaXQgJXVuaXQlXV0gW1slb3B0aW9ucyVdXQotICAgZG93bgotLSAgICAvdXNyL2Jpbi9wb2ZmIFtbJXByb3ZpZGVyJV1dCi0rICAgIHBvZmYgW1slcHJvdmlkZXIlXV0KLSAKLSBtZXRob2Qgd3ZkaWFsCi0gICBkZXNjcmlwdGlvbgotQEAgLTM0MiwxMCArMzQyLDEwIEBAIG1ldGhvZCB3dmRpYWwKLSAgIG9wdGlvbnMKLSAgICAgcHJvdmlkZXIgbmFtZSAgLS0gVXNlIC9uYW1lLyBhcyB0aGUgcHJvdmlkZXIgKGZyb20gL2V0Yy93dmRpYWwuY29uZikuCi0gICB1cAotLSAgICAvc2Jpbi9zdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC14IC91c3IvYmluL3d2ZGlhbCBcCi0rICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLXggL3Vzci9iaW4vd3ZkaWFsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgLXAgL3J1bi93dmRpYWwuJWlmYWNlJS5waWQgLWIgLW0gLS0gW1sgJXByb3ZpZGVyJSBdXQotICAgZG93bgotLSAgICAvc2Jpbi9zdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLXggL3Vzci9iaW4vd3ZkaWFsIFwKLSsgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC14IC91c3IvYmluL3d2ZGlhbCBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1wIC9ydW4vd3ZkaWFsLiVpZmFjZSUucGlkIC1zIDIKLSAKLSAKLUBAIC0zNTYsOSArMzU2LDkgQEAgbWV0aG9kIGlwdjRsbAotICAgICBrbm93biBhcyBBUElQQSBvciBJUEFDLCBhbmQgb2Z0ZW4gY29sbG9xdWlhbGx5IHJlZmVycmVkIHRvCi0gICAgIGFzICJaZXJvY29uZiBhZGRyZXNzIi4KLSAgIHVwCi0tICAgIC91c3Ivc2Jpbi9hdmFoaS1hdXRvaXBkIC1EICVpZmFjZSUKLSsgICAgYXZhaGktYXV0b2lwZCAtRCAlaWZhY2UlCi0gICBkb3duCi0tICAgIC91c3Ivc2Jpbi9hdmFoaS1hdXRvaXBkIC0ta2lsbCAlaWZhY2UlCi0rICAgIGF2YWhpLWF1dG9pcGQgLS1raWxsICVpZmFjZSUKLSBhcmNoaXRlY3R1cmUgaHVyZAotIAotIG1ldGhvZCBsb29wYmFjawotQEAgLTQzMiwyMyArNDMyLDIzIEBAIG1ldGhvZCBkaGNwCi0gCi0gICB1cAotICAgICBbW1dhcm5pbmc6IE9wdGlvbiBod2FkZHJlc3M6ICVod2FkZHJlc3MlIG5vdCB5ZXQgc3VwcG9ydGVkXV0KLS0gICAgL3NiaW4vZGhjbGllbnQgLTQgLXYgLXBmIC9ydW4vZGhjbGllbnQuJWlmYWNlLy8vLiUucGlkIC1sZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50LiVpZmFjZS8vLy4lLmxlYXNlcyAtSSAtZGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudDYuJWlmYWNlLy8vLiUubGVhc2VzICVpZmFjZSUgXAotKyAgICBkaGNsaWVudCAtNCAtdiAtcGYgL3J1bi9kaGNsaWVudC4laWZhY2UvLy8uJS5waWQgLWxmIC92YXIvbGliL2RoY3AvZGhjbGllbnQuJWlmYWNlLy8vLiUubGVhc2VzIC1JIC1kZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50Ni4laWZhY2UvLy8uJS5sZWFzZXMgJWlmYWNlJSBcCi0gICAgICAgICBpZiAoZXhlY2FibGUoIi9zYmluL2RoY2xpZW50IikpCi0tICAgIC9zYmluL3VkaGNwYyAtbiAtcCAvcnVuL3VkaGNwYy4laWZhY2UvLy8uJS5waWQgLWkgJWlmYWNlJSBbWy1IICVob3N0bmFtZSVdXSBcCi0rICAgIHVkaGNwYyAtbiAtcCAvcnVuL3VkaGNwYy4laWZhY2UvLy8uJS5waWQgLWkgJWlmYWNlJSBbWy1IICVob3N0bmFtZSVdXSBcCi0gICAgICAgICAgICBbWy1jICVjbGllbnQlXV0gXAotICAgICAgICAgZWxzaWYgKGV4ZWNhYmxlKCIvc2Jpbi91ZGhjcGMiKSkKLS0gICAgL3NiaW4vZGhjcGNkIFtbLWggJWhvc3RuYW1lJV1dIFtbLWkgJXZlbmRvciVdXSBbWy1JICVjbGllbnQlXV0gXAotKyAgICBkaGNwY2QgW1staCAlaG9zdG5hbWUlXV0gW1staSAldmVuZG9yJV1dIFtbLUkgJWNsaWVudCVdXSBcCi0gICAgICAgICAgICBbWy1sICVsZWFzZXRpbWUlXV0gJWlmYWNlJSBcCi0gICAgICAgICBlbHNpZiAoZXhlY2FibGUoIi9zYmluL2RoY3BjZCIpKQotICAgICBlY2hvICdObyBESENQIGNsaWVudCBzb2Z0d2FyZSBmb3VuZCEnID4vZGV2L3N0ZGVycjsgZmFsc2UgXAotICAgICAgICAgZWxzaWYgKDEpCi0gCi0gICBkb3duCi0tICAgIC9zYmluL2RoY2xpZW50IC00IC12IC1yIC1wZiAvcnVuL2RoY2xpZW50LiVpZmFjZS8vLy4lLnBpZCAtbGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudC4laWZhY2UvLy8uJS5sZWFzZXMgLUkgLWRmIC92YXIvbGliL2RoY3AvZGhjbGllbnQ2LiVpZmFjZS8vLy4lLmxlYXNlcyAlaWZhY2UlIFwKLSsgICAgZGhjbGllbnQgLTQgLXYgLXIgLXBmIC9ydW4vZGhjbGllbnQuJWlmYWNlLy8vLiUucGlkIC1sZiAvdmFyL2xpYi9kaGNwL2RoY2xpZW50LiVpZmFjZS8vLy4lLmxlYXNlcyAtSSAtZGYgL3Zhci9saWIvZGhjcC9kaGNsaWVudDYuJWlmYWNlLy8vLiUubGVhc2VzICVpZmFjZSUgXAotICAgICAgICAgaWYgKGV4ZWNhYmxlKCIvc2Jpbi9kaGNsaWVudCIpKQotICAgICBpZiB0ZXN0IC1mIC9ydW4vdWRoY3BjLiVpZmFjZS8vLy4lLnBpZDsgdGhlbiBraWxsIC1VU1IyICQoL2Jpbi9jYXQgL3J1bi91ZGhjcGMuJWlmYWNlLy8vLiUucGlkKTsga2lsbCAtVEVSTSAkKC9iaW4vY2F0IC9ydW4vdWRoY3BjLiVpZmFjZS8vLy4lLnBpZCk7IGZpIFwKLSAgICAgICAgIGVsc2lmIChleGVjYWJsZSgiL3NiaW4vdWRoY3BjIikpCi0tICAgIC9zYmluL2RoY3BjZCAtayAlaWZhY2UlIFwKLSsgICAgZGhjcGNkIC1rICVpZmFjZSUgXAotICAgICAgICAgZWxzaWYgKGV4ZWNhYmxlKCIvc2Jpbi9kaGNwY2QiKSkKLSAgICAgZWNobyAnTm8gREhDUCBjbGllbnQgc29mdHdhcmUgZm91bmQhJyA+L2Rldi9zdGRlcnI7IGZhbHNlIFwKLSAgICAgICAgIGVsc2lmICgxKQotQEAgLTQ4Miw5ICs0ODIsOSBAQCBtZXRob2QgcHBwCi0gICAgIHVuaXQgbnVtYmVyICAgIC0tIFVzZSAvbnVtYmVyLyBhcyB0aGUgcHBwIHVuaXQgbnVtYmVyLgotICAgICBvcHRpb25zIHN0cmluZyAtLSBQYXNzIC9zdHJpbmcvIGFzIGFkZGl0aW9uYWwgb3B0aW9ucyB0byBwb24uCi0gICB1cAotLSAgICAvdXNyL2Jpbi9wb24gW1slcHJvdmlkZXIlXV0gW1t1bml0ICV1bml0JV1dIFtbJW9wdGlvbnMlXV0KLSsgICAgcG9uIFtbJXByb3ZpZGVyJV1dIFtbdW5pdCAldW5pdCVdXSBbWyVvcHRpb25zJV1dCi0gICBkb3duCi0tICAgIC91c3IvYmluL3BvZmYgW1slcHJvdmlkZXIlXV0KLSsgICAgcG9mZiBbWyVwcm92aWRlciVdXQotIAotIG1ldGhvZCB3dmRpYWwKLSAgIGRlc2NyaXB0aW9uCi1AQCAtNDkzLDEwICs0OTMsMTAgQEAgbWV0aG9kIHd2ZGlhbAotICAgb3B0aW9ucwotICAgICBwcm92aWRlciBuYW1lICAtLSBVc2UgL25hbWUvIGFzIHRoZSBwcm92aWRlciAoZnJvbSAvZXRjL3d2ZGlhbC5jb25mKS4KLSAgIHVwCi0tICAgIC9zYmluL3N0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLXggL3Vzci9iaW4vd3ZkaWFsIFwKLSsgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAteCAvdXNyL2Jpbi93dmRpYWwgXAotICAgICAgICAgICAgICAgICAgICAgICAtcCAvcnVuL3d2ZGlhbC4laWZhY2UvLy8uJS5waWQgLWIgLW0gLS0gW1sgJXByb3ZpZGVyJSBdXQotICAgZG93bgotLSAgICAvc2Jpbi9zdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLXggL3Vzci9iaW4vd3ZkaWFsIFwKLSsgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC14IC91c3IvYmluL3d2ZGlhbCBcCi0gICAgICAgICAgICAgICAgICAgICAgIC1wIC9ydW4vd3ZkaWFsLiVpZmFjZS8vLy4lLnBpZCAtcyAyCi0gCi0gCi1AQCAtNTA3LDYgKzUwNyw2IEBAIG1ldGhvZCBpcHY0bGwKLSAgICAga25vd24gYXMgQVBJUEEgb3IgSVBBQywgYW5kIG9mdGVuIGNvbGxvcXVpYWxseSByZWZlcnJlZCB0bwotICAgICBhcyAiWmVyb2NvbmYgYWRkcmVzcyIuCi0gICB1cAotLSAgICAvdXNyL3NiaW4vYXZhaGktYXV0b2lwZCAtRCAlaWZhY2UlCi0rICAgIGF2YWhpLWF1dG9pcGQgLUQgJWlmYWNlJQotICAgZG93bgotLSAgICAvdXNyL3NiaW4vYXZhaGktYXV0b2lwZCAtLWtpbGwgJWlmYWNlJQotKyAgICBhdmFoaS1hdXRvaXBkIC0ta2lsbCAlaWZhY2UlCi0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2ZpbGVzL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg2OTQwNDIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2ZpbGVzL3J1bi1wdGVzdApAQCAtMCwwICsxLDQgQEAKKyMhL2Jpbi9zaAorCitDVVJESVI9JChkaXJuYW1lIGByZWFkbGluayAtZiAkMGApCitjZCAkQ1VSRElSL3Rlc3RzICYmIC4vdGVzdGJ1aWxkLWxpbnV4CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2ZpbGVzL3R3ZWFrLXB0ZXN0LXNjcmlwdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vZmlsZXMvdHdlYWstcHRlc3Qtc2NyaXB0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3NjAwY2YKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2ZpbGVzL3R3ZWFrLXB0ZXN0LXNjcmlwdC5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitUd2VhayB0ZXN0cyBvZiBpZnVwZG93biB0byBtYWtlIGl0IHdvcmsgd2l0aCBvZS1jb3JlIHB0ZXN0IGZyYW1ld29yay4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KKworZGlmZiAtLWdpdCBhL3Rlc3RzL3Rlc3RidWlsZC1saW51eCBiL3Rlc3RzL3Rlc3RidWlsZC1saW51eAoraW5kZXggMTE4MWVhMC4uZDVjMTgxNCAxMDA3NTUKKy0tLSBhL3Rlc3RzL3Rlc3RidWlsZC1saW51eAorKysrIGIvdGVzdHMvdGVzdGJ1aWxkLWxpbnV4CitAQCAtMSw2ICsxLDcgQEAKKyAjIS9iaW4vc2ggLWUKKyAKKy1kaXI9dGVzdHMvbGludXgKKytjdXJkaXI9JChkaXJuYW1lIGByZWFkbGluayAtZiAkMGApCisrZGlyPSRjdXJkaXIvbGludXgKKyAKKyByZXN1bHQ9dHJ1ZQorIGZvciB0ZXN0IGluIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDE4OyBkbworQEAgLTEyLDcgKzEzLDcgQEAgZm9yIHRlc3QgaW4gMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTg7IGRvCisgICAgICAgICBlY2hvICJUZXN0Y2FzZSAkdGVzdDogJGFyZ3MiCisgCisgCWV4aXRjb2RlPTAKKy0gICAgICAgIC4vaWZ1cCAtdiAtLW5vLWFjdC1jb21tYW5kcyAtLWZvcmNlIC1pICRkaXIvdGVzdGNhc2UuJHRlc3QgLS1zdGF0ZS1kaXI9JGRpci9zdGF0ZS4kdGVzdCAkYXJncyBcCisrICAgICAgICBpZnVwIC12IC0tbm8tYWN0LWNvbW1hbmRzIC0tZm9yY2UgLWkgJGRpci90ZXN0Y2FzZS4kdGVzdCAtLXN0YXRlLWRpcj0kZGlyL3N0YXRlLiR0ZXN0ICRhcmdzIFwKKyAgICAgICAgICAgICAgICAgPiRkaXIvdXAtcmVzLW91dC4kdGVzdCAyPiRkaXIvdXAtcmVzLWVyci4kdGVzdCB8fCBleGl0Y29kZT0kPworIAorICAgICAgICAgKGVjaG8gImV4aXQgY29kZTogJGV4aXRjb2RlIjsKK0BAIC0yMCw3ICsyMSw3IEBAIGZvciB0ZXN0IGluIDEgMiAzIDQgNSA2IDcgOCA5IDEwIDExIDEyIDEzIDE0IDE1IDE2IDE3IDE4OyBkbworICAgICAgICAgIGVjaG8gIj09PT1zdGRlcnI9PT09IjsgY2F0ICRkaXIvdXAtcmVzLWVyci4kdGVzdCkgPiAkZGlyL3VwLXJlcy4kdGVzdAorIAorIAlleGl0Y29kZT0wCistICAgICAgICAuL2lmZG93biAtdiAtLW5vLWFjdC1jb21tYW5kcyAtLWZvcmNlIC1pICRkaXIvdGVzdGNhc2UuJHRlc3QgLS1zdGF0ZS1kaXI9JGRpci9zdGF0ZS4kdGVzdCAkYXJncyBcCisrICAgICAgICBpZmRvd24gLXYgLS1uby1hY3QtY29tbWFuZHMgLS1mb3JjZSAtaSAkZGlyL3Rlc3RjYXNlLiR0ZXN0IC0tc3RhdGUtZGlyPSRkaXIvc3RhdGUuJHRlc3QgJGFyZ3MgXAorICAgICAgICAgICAgICAgID4kZGlyL2Rvd24tcmVzLW91dC4kdGVzdCAyPiRkaXIvZG93bi1yZXMtZXJyLiR0ZXN0IHx8IGV4aXRjb2RlPSQ/CisgCisgICAgICAgICAoZWNobyAiZXhpdCBjb2RlOiAkZXhpdGNvZGUiOworQEAgLTI4LDkgKzI5LDkgQEAgZm9yIHRlc3QgaW4gMSAyIDMgNCA1IDYgNyA4IDkgMTAgMTEgMTIgMTMgMTQgMTUgMTYgMTcgMTg7IGRvCisgICAgICAgICAgZWNobyAiPT09PXN0ZGVycj09PT0iOyBjYXQgJGRpci9kb3duLXJlcy1lcnIuJHRlc3QpID4gJGRpci9kb3duLXJlcy4kdGVzdAorIAorICAgICAgICAgaWYgZGlmZiAtdWIgJGRpci91cC4kdGVzdCAkZGlyL3VwLXJlcy4kdGVzdCAmJiBkaWZmIC11YiAkZGlyL2Rvd24uJHRlc3QgJGRpci9kb3duLXJlcy4kdGVzdDsgdGhlbgorLSAgICAgICAgICAgICAgICBlY2hvICIob2theSkiCisrICAgICAgICAgICAgICAgIGVjaG8gIlBBU1M6ICR0ZXN0IgorICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICBlY2hvICIoZmFpbGVkKSIKKysgICAgICAgICAgICAgICAgZWNobyAiRkFJTDogJHRlc3QiCisgICAgICAgICAgICAgICAgIHJlc3VsdD1mYWxzZQorICAgICAgICAgZmkKKyAgICAgICAgIGVjaG8gIj09PT09PT09PT0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2lmdXBkb3duXzAuOC4yMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vaWZ1cGRvd25fMC44LjIyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZDA5ODllLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vaWZ1cGRvd25fMC44LjIyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotU1VNTUFSWSA9ICJpZnVwZG93bjogYmFzaWMgaWZ1cCBhbmQgaWZkb3duIHVzZWQgYnkgaW5pdHNjcmlwdHMiCi1ERVNDUklQVElPTiA9ICJIaWdoIGxldmVsIHRvb2xzIHRvIGNvbmZpZ3VyZSBuZXR3b3JrIGludGVyZmFjZXMgXAotVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSB0b29scyBpZnVwIGFuZCBpZmRvd24gd2hpY2ggbWF5IGJlIHVzZWQgdG8gXAotY29uZmlndXJlIChvciwgcmVzcGVjdGl2ZWx5LCBkZWNvbmZpZ3VyZSkgbmV0d29yayBpbnRlcmZhY2VzLCBiYXNlZCBvbiBcCi10aGUgZmlsZSAvZXRjL25ldHdvcmsvaW50ZXJmYWNlcy4iCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vc2Fsc2EuZGViaWFuLm9yZy9kZWJpYW4vaWZ1cGRvd24uZ2l0O3Byb3RvY29sPWh0dHBzIFwKLQkgICBmaWxlOi8vZGVmbjItYy1tYW4tZG9uLXQtcmVseS1vbi1kcGtnLWFyY2hpdGVjdHVyZS10by1zZXQtYS5wYXRjaCBcCi0JICAgZmlsZTovL2luZXQtNi0uZGVmbi1maXgtaW52ZXJ0ZWQtY2hlY2tzLWZvci1sb29wYmFjay5wYXRjaCBcCi0JICAgZmlsZTovLzk5X25ldHdvcmsgXAotCSAgIGZpbGU6Ly8wMDAxLURlZmluZS1GTk1fRVhUTUFUQ0gtZm9yLW11c2wucGF0Y2ggXAotCSAgIgotU1JDUkVWID0gImFiNWEwZjQ2NGU1M2UxNzIzMTZhNWNhOGI1ZGNkYzQ5ZTg4NDg5OTkiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLWRvX2NvbXBpbGUgKCkgewotCWNobW9kIGErcnggKi5wbCAqLnNoCi0Jb2VfcnVubWFrZSAnQ0M9JHtDQ30nICJDRkxBR1M9JHtDRkxBR1N9IC1XYWxsIC1XIC1EJ0lGVVBET1dOX1ZFUlNJT049XCIke1BWfVwiJyIKLX0KLQotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjggXAotCQkgICR7RH0ke21hbmRpcn0vbWFuNSBcCi0JCSAgJHtEfSR7YmFzZV9zYmluZGlyfQotCi0JIyBJZiB2b2xhdGlsZXMgYXJlIHVzZWQsIHRoZW4gd2UnbGwgYWxzbyBuZWVkIC9ydW4vbmV0d29yayB0aGVyZSB0b28uCi0JaW5zdGFsbCAtZCAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9Lzk5X25ldHdvcmsgJHtEfS9ldGMvZGVmYXVsdC92b2xhdGlsZXMKLQotCWluc3RhbGwgLW0gMDc1NSBpZnVwICR7RH0ke2Jhc2Vfc2JpbmRpcn0vCi0JbG4gJHtEfSR7YmFzZV9zYmluZGlyfS9pZnVwICR7RH0ke2Jhc2Vfc2JpbmRpcn0vaWZkb3duCi0JaW5zdGFsbCAtbSAwNjQ0IGlmdXAuOCAke0R9JHttYW5kaXJ9L21hbjgKLQlpbnN0YWxsIC1tIDA2NDQgaW50ZXJmYWNlcy41ICR7RH0ke21hbmRpcn0vbWFuNQotCWNkICR7RH0ke21hbmRpcn0vbWFuOCAmJiBsbiAtcyBpZnVwLjggaWZkb3duLjgKLX0KLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAiaWZ1cCBpZmRvd24iCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtpZnVwXSA9ICIke2Jhc2Vfc2JpbmRpcn0vaWZ1cCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtpZmRvd25dID0gIiR7YmFzZV9zYmluZGlyfS9pZmRvd24iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2lmdXBkb3duXzAuOC4zNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaWZ1cGRvd24vaWZ1cGRvd25fMC44LjM1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzY2I5NzEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2lmdXBkb3duL2lmdXBkb3duXzAuOC4zNS5iYgpAQCAtMCwwICsxLDU1IEBACitTVU1NQVJZID0gImlmdXBkb3duOiBiYXNpYyBpZnVwIGFuZCBpZmRvd24gdXNlZCBieSBpbml0c2NyaXB0cyIKK0RFU0NSSVBUSU9OID0gIkhpZ2ggbGV2ZWwgdG9vbHMgdG8gY29uZmlndXJlIG5ldHdvcmsgaW50ZXJmYWNlcyBcCitUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIHRvb2xzIGlmdXAgYW5kIGlmZG93biB3aGljaCBtYXkgYmUgdXNlZCB0byBcCitjb25maWd1cmUgKG9yLCByZXNwZWN0aXZlbHksIGRlY29uZmlndXJlKSBuZXR3b3JrIGludGVyZmFjZXMsIGJhc2VkIG9uIFwKK3RoZSBmaWxlIC9ldGMvbmV0d29yay9pbnRlcmZhY2VzLiIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9zYWxzYS5kZWJpYW4ub3JnL2RlYmlhbi9pZnVwZG93bi5naXQ7cHJvdG9jb2w9aHR0cHMgXAorICAgICAgICAgICBmaWxlOi8vZGVmbjItYy1tYW4tZG9uLXQtcmVseS1vbi1kcGtnLWFyY2hpdGVjdHVyZS10by1zZXQtYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly85OV9uZXR3b3JrIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRGVmaW5lLUZOTV9FWFRNQVRDSC1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLWRvLW5vdC11c2UtZHBrZy1mb3ItZGV0ZXJtaW5pbmctT1MtdHlwZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3B0ZXN0JywgJ2ZpbGU6Ly90d2Vhay1wdGVzdC1zY3JpcHQucGF0Y2gnLCAnJywgZCl9IFwKKyAgICAgICAgICAgIgorU1JDUkVWID0gIjRhZjc2MzE4Y2ZjNTdmOGU0YTQ0ZDM1NzEwNDE4ODY2NjIxM2JkNGIiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKKworaW5oZXJpdCBwdGVzdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK2RvX2NvbXBpbGUgKCkgeworCWNobW9kIGErcnggKi5wbCAqLnNoCisJb2VfcnVubWFrZSAnQ0M9JHtDQ30nICJDRkxBR1M9JHtDRkxBR1N9IC1XYWxsIC1XIC1EJ0lGVVBET1dOX1ZFUlNJT049XCIke1BWfVwiJyIKK30KKworZG9faW5zdGFsbCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHttYW5kaXJ9L21hbjggXAorCQkgICR7RH0ke21hbmRpcn0vbWFuNSBcCisJCSAgJHtEfSR7YmFzZV9zYmluZGlyfQorCisJIyBJZiB2b2xhdGlsZXMgYXJlIHVzZWQsIHRoZW4gd2UnbGwgYWxzbyBuZWVkIC9ydW4vbmV0d29yayB0aGVyZSB0b28uCisJaW5zdGFsbCAtZCAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9Lzk5X25ldHdvcmsgJHtEfS9ldGMvZGVmYXVsdC92b2xhdGlsZXMKKworCWluc3RhbGwgLW0gMDc1NSBpZnVwICR7RH0ke2Jhc2Vfc2JpbmRpcn0vCisJbG4gJHtEfSR7YmFzZV9zYmluZGlyfS9pZnVwICR7RH0ke2Jhc2Vfc2JpbmRpcn0vaWZkb3duCisJaW5zdGFsbCAtbSAwNjQ0IGlmdXAuOCAke0R9JHttYW5kaXJ9L21hbjgKKwlpbnN0YWxsIC1tIDA2NDQgaW50ZXJmYWNlcy41ICR7RH0ke21hbmRpcn0vbWFuNQorCWNkICR7RH0ke21hbmRpcn0vbWFuOCAmJiBsbiAtcyBpZnVwLjggaWZkb3duLjgKK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICAgaW5zdGFsbCAtZCAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgIGNwIC1yICR7U30vdGVzdHMvdGVzdGJ1aWxkLWxpbnV4ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLworICAgIGNwIC1yICR7U30vdGVzdHMvbGludXggJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvCit9CisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gImlmdXAgaWZkb3duIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaWZ1cF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2lmdXAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaWZkb3duXSA9ICIke2Jhc2Vfc2JpbmRpcn0vaWZkb3duIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE1LjAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW1hZ2VzL2J1aWxkLWFwcGxpYW5jZS1pbWFnZV8xNS4wLjAuYmIKaW5kZXggMWQ3NGVlNS4uYzkzNjdkZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbWFnZXMvYnVpbGQtYXBwbGlhbmNlLWltYWdlXzE1LjAuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2ltYWdlcy9idWlsZC1hcHBsaWFuY2UtaW1hZ2VfMTUuMC4wLmJiCkBAIC0yNCw3ICsyNCw3IEBACiAKIGluaGVyaXQgY29yZS1pbWFnZSBtb2R1bGUtYmFzZSBzZXR1cHRvb2xzMwogCi1TUkNSRVYgPz0gIjgxODE2ODFiMzNkYTI3MmZlZjgzMjc2MTA0ZDVjN2E5M2Y4NGRhNDYiCitTUkNSRVYgPz0gIjMzOTAzOTMyYWQ4N2JmYThlOGJmN2JhZjIyNTY3ODE3MTQ5OTNiNzkiCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3Bva3kgXAogICAgICAgICAgICBmaWxlOi8vWW9jdG9fQnVpbGRfQXBwbGlhbmNlLnZteCBcCiAgICAgICAgICAgIGZpbGU6Ly9Zb2N0b19CdWlsZF9BcHBsaWFuY2Uudm14ZiBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay91ZGV2IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9pbml0cmRzY3JpcHRzL2luaXRyYW1mcy1mcmFtZXdvcmsvdWRldgppbmRleCA4NzU1MWZmLi40ODk4Yjg5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2luaXRyZHNjcmlwdHMvaW5pdHJhbWZzLWZyYW1ld29yay91ZGV2CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvaW5pdHJkc2NyaXB0cy9pbml0cmFtZnMtZnJhbWV3b3JrL3VkZXYKQEAgLTQxLDYgKzQxLDkgQEAKIAlta2RpciAtcCAvcnVuCiAJbWtkaXIgLXAgL3Zhci9ydW4KIAorCSMgV29ya2Fyb3VuZCBpZiBjb25zb2xlPW51bGwsIHN5c3RlbWQtdWRldmQgbmVlZHMgdmFsaWQgc3RkaW4sIHN0ZG91dCBhbmQgc3RkZXJyIHRvIHdvcmsKKwlzaCAtYyAiZXhlYyA0PCAvZGV2L2NvbnNvbGUiIHx8IHsgZXhlYyAwPiAvZGV2L251bGw7IGV4ZWMgMT4gL2Rldi9udWxsOyBleGVjIDI+IC9kZXYvbnVsbDsgfQorCiAJJF9VREVWX0RBRU1PTiAtLWRhZW1vbgogCXVkZXZhZG0gdHJpZ2dlciAtLWFjdGlvbj1hZGQKIAl1ZGV2YWRtIHNldHRsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkLzAwMDEtVXNlLURBVEFESVItYW5kLWFwcGVuZC1pMzg2LXRvLWZpeC1saWJrYmRmaWxlLXRlc3QwOC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC8wMDAxLVVzZS1EQVRBRElSLWFuZC1hcHBlbmQtaTM4Ni10by1maXgtbGlia2JkZmlsZS10ZXN0MDgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGM1MjM2MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZC8wMDAxLVVzZS1EQVRBRElSLWFuZC1hcHBlbmQtaTM4Ni10by1maXgtbGlia2JkZmlsZS10ZXN0MDgucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSA0YzEyZjc2ZjQxNzdjZmQ1NjBjZjcwOGExNjc3NGViZmFkYmQ0MWE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIk1pbmdkZSAoTWF0dGhldykgWmVuZyIgPG1hdHRoZXcuemVuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyMiBKYW4gMjAyMCAxMTowMjoxNyAtMDUwMAorU3ViamVjdDogW1BBVENIXSBVc2UgREFUQURJUiBhbmQgYXBwZW5kIGkzODYgdG8gZml4IGxpYmtiZGZpbGUtdGVzdDA4IHB0ZXN0CisgZmFpbHVyZQorCitSZXBsYWNlIEFCU19EQVRBRElSIHdpdGggREFUQURJUiBhbmQgYXBwZW5kIGkzODYgdG8gZGlycGF0aC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworVGhpcyBPRSBzcGVjaWZpYyBwYXRjaCBhcHBsaWVzIHRvIGtiZCB2Mi4yLjAgZm9yIG5vdywgdGhlIHVwc3RyZWFtCittYWRlIGRyYXN0aWMgY2hhbmdlcyBzaW5jZSB2Mi4yLjAsIGluIGZhY3QgdGhleSBnb3QgcmlkIG9mIEFCU19EQVRBRElSCitpbiBjb21taXQgNWI2ZGY1YyBhbG9uZyB3aXRoIGEgc2VyaWVzIG9mIG90aGVyIGNvbW1pdHMgd2hpY2ggbWF5IG9yCittYXkgbm90IGZpeCB0aGlzIGlzc3VlLiBXZSB3aWxsIGZpbmQgb3V0IGluIGZ1dHVyZSByZWxlYXNlcy4KKworU2lnbmVkLW9mZi1ieTogTWF0dGhldyBaZW5nPE1hdHRoZXcuWmVuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgdGVzdHMvbGlia2JkZmlsZS10ZXN0MDguYyB8IDYgKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL2xpYmtiZGZpbGUtdGVzdDA4LmMgYi90ZXN0cy9saWJrYmRmaWxlLXRlc3QwOC5jCitpbmRleCBiZjQxNzA3Li41ZTI4N2YxIDEwMDY0NAorLS0tIGEvdGVzdHMvbGlia2JkZmlsZS10ZXN0MDguYworKysrIGIvdGVzdHMvbGlia2JkZmlsZS10ZXN0MDguYworQEAgLTE0LDE0ICsxNCwxNCBAQCBtYWluKGludCBfX2F0dHJpYnV0ZV9fKCh1bnVzZWQpKSBhcmdjLCBjaGFyICoqYXJndikKKyAJaWYgKCFmcCkKKyAJCWtiZF9lcnJvcihFWElUX0ZBSUxVUkUsIDAsICJ1bmFibGUgdG8gY3JlYXRlIGtiZGZpbGUiKTsKKworLQljb25zdCBjaGFyICpjb25zdCBkaXJwYXRoW10gID0geyAiIiwgREFUQURJUiAiL2ZpbmRmaWxlL3Rlc3RfMC9rZXltYXBzLyoqIiwgMCB9OworKwljb25zdCBjaGFyICpjb25zdCBkaXJwYXRoW10gID0geyAiIiwgREFUQURJUiAiL2ZpbmRmaWxlL3Rlc3RfMC9rZXltYXBzL2kzODYvKioiLCAwIH07CisgCWNvbnN0IGNoYXIgKmNvbnN0IHN1ZmZpeGVzW10gPSB7ICIiLCAiLm1hcCIsICIua21hcCIsIDAgfTsKKworLQljb25zdCBjaGFyICpleHBlY3QgPSBBQlNfREFUQURJUiAiL2ZpbmRmaWxlL3Rlc3RfMC9rZXltYXBzL2kzODYvcXdlcnR5L3Rlc3QwLm1hcCI7CisrCWNvbnN0IGNoYXIgKmV4cGVjdCA9IERBVEFESVIgIi9maW5kZmlsZS90ZXN0XzAva2V5bWFwcy9pMzg2L3F3ZXJ0eS90ZXN0MC5tYXAiOworCisgCWludCByYyA9IDA7CisKKy0JcmMgPSBrYmRmaWxlX2ZpbmQoKGNoYXIgKikoQUJTX0RBVEFESVIgIi9maW5kZmlsZS90ZXN0XzAva2V5bWFwcy9pMzg2L3F3ZXJ0eS90ZXN0MCIpLCAoY2hhciAqKikgZGlycGF0aCwgKGNoYXIgKiopIHN1ZmZpeGVzLCBmcCk7CisrCXJjID0ga2JkZmlsZV9maW5kKChjaGFyICopInRlc3QwIiwgKGNoYXIgKiopIGRpcnBhdGgsIChjaGFyICoqKSBzdWZmaXhlcywgZnApOworCisgCWlmIChyYyAhPSAwKQorIAkJa2JkX2Vycm9yKEVYSVRfRkFJTFVSRSwgMCwgInVuYWJsZSB0byBmaW5kIGZpbGUiKTsKKy0tCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkLzAwMDEtYW5hbHl6ZS5sLWFkZC1taXNzaW5nLXN0cmluZy1mb3JtYXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmQvMDAwMS1hbmFseXplLmwtYWRkLW1pc3Npbmctc3RyaW5nLWZvcm1hdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OTE2ZmQ5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkLzAwMDEtYW5hbHl6ZS5sLWFkZC1taXNzaW5nLXN0cmluZy1mb3JtYXQucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorRnJvbSBkYzZiZjJhZTA4MzVjNjU2OWIyNzBlOGUxZjI2YTMxNzNmMzkyN2Q5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDQgRGVjIDIwMTkgMTM6MTQ6MDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gYW5hbHl6ZS5sOiBhZGQgbWlzc2luZyBzdHJpbmcgZm9ybWF0CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGVnaW9udXMva2JkL3B1bGwvMzVdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9saWJrZXltYXAvYW5hbHl6ZS5sIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2xpYmtleW1hcC9hbmFseXplLmwgYi9zcmMvbGlia2V5bWFwL2FuYWx5emUubAoraW5kZXggZTMyYWNlNi4uZGU2MmY0NiAxMDA2NDQKKy0tLSBhL3NyYy9saWJrZXltYXAvYW5hbHl6ZS5sCisrKysgYi9zcmMvbGlia2V5bWFwL2FuYWx5emUubAorQEAgLTQ2Myw3ICs0NjMsNyBAQCBUbyAgICAgICAgICAgICAgICAgICAgICB0b3xUb3xUTworIAorIAkJCQkJc3RyZXJyb3JfcihlcnJubywgYnVmLCBzaXplb2YoYnVmKSk7CisgCistCQkJCQlFUlIoeXlleHRyYSwgYnVmKTsKKysJCQkJCUVSUih5eWV4dHJhLCAiJXMiLCBidWYpOworIAkJCQkJcmV0dXJuKEVSUk9SKTsKKyAJCQkJfQorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkL2ZpeF9jZmxhZ3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmQvZml4X2NmbGFncy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNzIyMDk2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkL2ZpeF9jZmxhZ3MucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorV2UgbmVlZCB0byBlbnN1cmUgb3VyIENGTEFHUyBhcmUgcHJlc2VydmVkIGFzIHdlbGwgYXMgd2hhdGV2ZXIgdHdlYWsgY29uZmlndXJlCit0cmllcyB0byBtYWtlLiBXaXRob3V0IHRoZXNlLCB0aGUgZGVidWcgcHJlZml4IGNoYW5nZXMgZ2V0IGxvc3QgYW5kIHdlIGxvc2UKK2J1aWxkIHJlcHJvZHVjaWJpbGl0eSwgbGlrZWx5IHdpdGggb3RoZXIgc2lkZSBlZmZlY3RzLgorCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworMjAyMC8xLzI3CisKK0luZGV4OiBrYmQtMi4yLjAvY29uZmlndXJlLmFjCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0ga2JkLTIuMi4wLm9yaWcvY29uZmlndXJlLmFjCisrKysga2JkLTIuMi4wL2NvbmZpZ3VyZS5hYworQEAgLTcyLDkgKzcyLDkgQEAgaWYgdGVzdCAiJGVuYWJsZV9jb2RlX2NvdmVyYWdlIiA9IHllczsgdAorIGZpCisgCisgY2FzZSAiJEdDQywkYWNfY3ZfcHJvZ19jY19nIiBpbgorLQl5ZXMseWVzKSBDRkxBR1M9Ii1nICRDQ19PX0xFVkVMICRGT1JUSUZZX1NPVVJDRSIgOzsKKy0JeWVzLCkgICAgQ0ZMQUdTPSIkQ0NfT19MRVZFTCAkRk9SVElGWV9TT1VSQ0UiIDs7CistCSAgICx5ZXMpIENGTEFHUz0iLWciIDs7CisrCXllcyx5ZXMpIENGTEFHUz0iLWcgJENDX09fTEVWRUwgJEZPUlRJRllfU09VUkNFICRDRkxBR1MiIDs7CisrCXllcywpICAgIENGTEFHUz0iJENDX09fTEVWRUwgJEZPUlRJRllfU09VUkNFICRDRkxBR1MiIDs7CisrCSAgICx5ZXMpIENGTEFHUz0iLWcgJENGTEFHUyIgOzsKKyBlc2FjCisgCisgQ0NfQ0hFQ0tfQ0ZMQUdTX0FQUEVORChbXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkL3NldC1wcm9wZXItcGF0aC1vZi1yZXNvdXJjZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmQvc2V0LXByb3Blci1wYXRoLW9mLXJlc291cmNlcy5wYXRjaAppbmRleCBhOWEzYWI4Li40YjFlNWI4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmQvc2V0LXByb3Blci1wYXRoLW9mLXJlc291cmNlcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2tiZC9rYmQvc2V0LXByb3Blci1wYXRoLW9mLXJlc291cmNlcy5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gY2IzYWY4ZmIwNzJmODk5OWRiYjUxNjBiZGM5NWExMDJiMDJmZDM3YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAzMCBTZXAgMjAxNiAxNjo0OTo1NSArMDgwMAorU3ViamVjdDogW1BBVENIXSBrYmQ6IGNyZWF0ZSBwdGVzdCBzdWItcGFja2FnZQorCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQogCiBrYmQgaXMgb3V0IG9mIHNvdXJjZSBidWlsdCwgdGhlbiB0aGUgdmFsdWUgb2YgJChzcmNkaXIpIGlzIHJlbGF0aXZlIHBhdGggb2YKQEAgLTEzLDM4ICsxOCw2MSBAQAogCiBTaWduZWQtb2ZmLWJ5OiBLYWkgS2FuZyA8a2FpLmthbmdAd2luZHJpdmVyLmNvbT4KIAotSW5kZXg6IGtiZC0yLjAuNC90ZXN0cy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGtiZC0yLjAuNC5vcmlnL3Rlc3RzL01ha2VmaWxlLmFtCi0rKysga2JkLTIuMC40L3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMSw3ICsxLDcgQEAKLSBBTV9DUFBGTEFHUyA9IFwKLSAJLUkkKHNyY2RpcikvLi4vc3JjL2xpYmtleW1hcCBcCistLS0KKyB0ZXN0cy9NYWtlZmlsZS5hbSAgICAgICAgICAgfCA0ICsrLS0KKyB0ZXN0cy9hbHQtaXMtbWV0YS5pbiAgICAgICAgfCAyICstCisgdGVzdHMvZHVtcGtleXMtYmtleW1hcC5pbiAgIHwgNCArKy0tCisgdGVzdHMvZHVtcGtleXMtZnVsbHRhYmxlLmluIHwgMiArLQorIHRlc3RzL2R1bXBrZXlzLW1rdGFibGUuaW4gICB8IDQgKystLQorIDUgZmlsZXMgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggOGQwYWI2OS4uNTE0N2MyOCAxMDA2NDQKKy0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCisrKysgYi90ZXN0cy9NYWtlZmlsZS5hbQorQEAgLTcsOCArNyw4IEBAIEFNX0NQUEZMQUdTID0gXAogIAktSSQoYnVpbGRkaXIpLy4uL3NyYy9saWJrZXltYXAgXAotLQktRERBVEFESVI9XCIkKHNyY2RpcilcIiAtREJVSUxERElSPVwiJChidWlsZGRpcilcIgotKwktRERBVEFESVI9XCIuXCIgLURCVUlMRERJUj1cIiQoYnVpbGRkaXIpXCIKKyAJLUkkKHNyY2RpcikvLi4vc3JjL2xpYmtiZGZpbGUgXAorIAktSSQoYnVpbGRkaXIpLy4uL3NyYy9saWJrYmRmaWxlIFwKKy0JLUREQVRBRElSPVwiJChzcmNkaXIpXCIgXAorLQktREFCU19EQVRBRElSPVwiJChyZWFscGF0aCAkKHNyY2RpcikpXCIgXAorKwktRERBVEFESVI9XCIuXCIgXAorKwktREFCU19EQVRBRElSPVwiL3Vzci9saWIva2JkL3B0ZXN0L3Rlc3RzXCIgXAorIAktREJVSUxERElSPVwiJChidWlsZGRpcilcIgogIAotIEFNX0NGTEFHUyA9ICQoQ0hFQ0tfQ0ZMQUdTKQotIExEQUREICA9ICQodG9wX2J1aWxkZGlyKS9zcmMvbGlia2V5bWFwL2xpYmtleW1hcC5sYSAkKENIRUNLX0xJQlMpIEBJTlRMTElCU0AKLUluZGV4OiBrYmQtMi4wLjQvdGVzdHMvYWx0LWlzLW1ldGEuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBrYmQtMi4wLjQub3JpZy90ZXN0cy9hbHQtaXMtbWV0YS5pbgotKysrIGtiZC0yLjAuNC90ZXN0cy9hbHQtaXMtbWV0YS5pbgotQEAgLTcsOCArNyw4IEBAIGNkICIkY3dkIgorIEFNX0NGTEFHUyA9ICQoQ0hFQ0tfQ0ZMQUdTKSAkKENPREVfQ09WRVJBR0VfQ0ZMQUdTKQorZGlmZiAtLWdpdCBhL3Rlc3RzL2FsdC1pcy1tZXRhLmluIGIvdGVzdHMvYWx0LWlzLW1ldGEuaW4KK2luZGV4IDNhMTQ0MWYuLmQ4MjlmMmUgMTAwNzU1CistLS0gYS90ZXN0cy9hbHQtaXMtbWV0YS5pbgorKysrIGIvdGVzdHMvYWx0LWlzLW1ldGEuaW4KK0BAIC03LDcgKzcsNyBAQCBjZCAiJGN3ZCIKICByYz0wCiAgdGVtcD0iJChta3RlbXAgIkBCVUlMRERJUkAvdGVtcC5YWFhYWFhYWFgiKSIKICAKLS0uL2xpYmtleW1hcC1zaG93bWFwcyAiQERBVEFESVJAIi9hbHQtaXMtbWV0YS5tYXAgPiAiJHRlbXAiIHx8IHJjPSQ/Ci0tY21wIC1zICJAREFUQURJUkAvL2FsdC1pcy1tZXRhLm91dHB1dCIgIiR0ZW1wIiB8fCByYz0kPwotKy4vbGlia2V5bWFwLXNob3dtYXBzIC4vYWx0LWlzLW1ldGEubWFwID4gIiR0ZW1wIiB8fCByYz0kPwotK2NtcCAtcyAiLi9hbHQtaXMtbWV0YS5vdXRwdXQiICIkdGVtcCIgfHwgcmM9JD8KKy1kYXRhZGlyPSJAREFUQURJUkAvZGF0YS9hbHQtaXMtbWV0YSIKKytkYXRhZGlyPSIuL2RhdGEvYWx0LWlzLW1ldGEiCisgCisgLi9saWJrZXltYXAtc2hvd21hcHMgIiRkYXRhZGlyIi9hbHQtaXMtbWV0YS5tYXAgPiAiJHRlbXAiIHx8IHJjPSQ/CisgY21wIC1zICIkZGF0YWRpci9hbHQtaXMtbWV0YS5vdXRwdXQiICIkdGVtcCIgfHwgcmM9JD8KK2RpZmYgLS1naXQgYS90ZXN0cy9kdW1wa2V5cy1ia2V5bWFwLmluIGIvdGVzdHMvZHVtcGtleXMtYmtleW1hcC5pbgoraW5kZXggMDNkNGNhMi4uZDFkMGUyNiAxMDA3NTUKKy0tLSBhL3Rlc3RzL2R1bXBrZXlzLWJrZXltYXAuaW4KKysrKyBiL3Rlc3RzL2R1bXBrZXlzLWJrZXltYXAuaW4KK0BAIC05LDggKzksOCBAQCB0ZW1wPSIkKG1rdGVtcCAiQEJVSUxERElSQC90ZW1wLlhYWFhYWFhYWCIpIgorIAorIGRhdGFkaXI9IkBEQVRBRElSQCIKKyAKKy0uL2xpYmtleW1hcC1ia2V5bWFwICIkZGF0YWRpci8iLi4vZGF0YS9rZXltYXBzL2kzODYvcXdlcnR5L2RlZmtleW1hcC5tYXAgPiAiJHRlbXAiIHx8IHJjPSQ/CistY21wIC1zICIkZGF0YWRpci9kYXRhL2R1bXBrZXlzLWJrZXltYXAvYmtleW1hcC5iaW4iICIkdGVtcCIgfHwgcmM9JD8KKysuL2xpYmtleW1hcC1ia2V5bWFwIC4uL2RhdGEva2V5bWFwcy9pMzg2L3F3ZXJ0eS9kZWZrZXltYXAubWFwID4gIiR0ZW1wIiB8fCByYz0kPworK2NtcCAtcyAiLi9kYXRhL2R1bXBrZXlzLWJrZXltYXAvYmtleW1hcC5iaW4iICIkdGVtcCIgfHwgcmM9JD8KICAKICBpZiBbICIkcmMiICE9IDAgXTsgdGhlbgogIAlwcmludGYgJ2ZhaWxlZFxuJwotSW5kZXg6IGtiZC0yLjAuNC90ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBrYmQtMi4wLjQub3JpZy90ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4KLSsrKyBrYmQtMi4wLjQvdGVzdHMvZHVtcGtleXMtZnVsbHRhYmxlLmluCitkaWZmIC0tZ2l0IGEvdGVzdHMvZHVtcGtleXMtZnVsbHRhYmxlLmluIGIvdGVzdHMvZHVtcGtleXMtZnVsbHRhYmxlLmluCitpbmRleCBhM2E1ZWNlLi42N2E3M2VmIDEwMDc1NQorLS0tIGEvdGVzdHMvZHVtcGtleXMtZnVsbHRhYmxlLmluCisrKysgYi90ZXN0cy9kdW1wa2V5cy1mdWxsdGFibGUuaW4KIEBAIC01LDcgKzUsNyBAQCBjd2Q9IiQocmVhZGxpbmsgLWV2ICIkezAlLyp9IikiCiAgY2QgIiRjd2QiCiAgCkBAIC01NCwzICs4MiwxOCBAQAogIAogIGNoZWNrX2tleW1hcCgpIHsKICAJbG9jYWwga21hcCB0ZW1wIHJjCitkaWZmIC0tZ2l0IGEvdGVzdHMvZHVtcGtleXMtbWt0YWJsZS5pbiBiL3Rlc3RzL2R1bXBrZXlzLW1rdGFibGUuaW4KK2luZGV4IDBmMTdjNDAuLjdlNTE2MWQgMTAwNzU1CistLS0gYS90ZXN0cy9kdW1wa2V5cy1ta3RhYmxlLmluCisrKysgYi90ZXN0cy9kdW1wa2V5cy1ta3RhYmxlLmluCitAQCAtNyw4ICs3LDggQEAgY2QgIiRjd2QiCisgcmM9MAorIHRlbXA9IiQobWt0ZW1wICJAQlVJTERESVJAL3RlbXAuWFhYWFhYWFhYIikiCisgCistLi9saWJrZXltYXAtbWt0YWJsZSAiQERBVEFESVJALyIuLi9kYXRhL2tleW1hcHMvaTM4Ni9xd2VydHkvZGVma2V5bWFwLm1hcCA+ICIkdGVtcCIgfHwgcmM9JD8KKy1jbXAgLXMgIkBEQVRBRElSQC9kYXRhL2R1bXBrZXlzLW1rdGFibGUvZGVma2V5bWFwLmMiICIkdGVtcCIgfHwgcmM9JD8KKysuL2xpYmtleW1hcC1ta3RhYmxlIC4uL2RhdGEva2V5bWFwcy9pMzg2L3F3ZXJ0eS9kZWZrZXltYXAubWFwID4gIiR0ZW1wIiB8fCByYz0kPworK2NtcCAtcyAiLi9kYXRhL2R1bXBrZXlzLW1rdGFibGUvZGVma2V5bWFwLmMiICIkdGVtcCIgfHwgcmM9JD8KKyAKKyBpZiBbICIkcmMiICE9IDAgXTsgdGhlbgorIAlwcmludGYgJ2ZhaWxlZFxuJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkXzIuMC40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkXzIuMC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YWYzMjU2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjAuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLVNVTU1BUlkgPSAiS2V5dGFibGUgZmlsZXMgYW5kIGtleWJvYXJkIHV0aWxpdGllcyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cua2JkLXByb2plY3Qub3JnLyIKLSMgZXZlcnl0aGluZyBtaW51cyBjb25zb2xlLWZvbnRzIGlzIEdQTHYyKwotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hNWZjYzM2MTIxZDkzZTFmNjlkOTZhMzEzMDc4YzhiNSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwdGVzdCBwa2djb25maWcKLQotUlJFUExBQ0VTXyR7UE59ID0gImNvbnNvbGUtdG9vbHMiCi1SUFJPVklERVNfJHtQTn0gPSAiY29uc29sZS10b29scyIKLVJDT05GTElDVFNfJHtQTn0gPSAiY29uc29sZS10b29scyIKLQotU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L3V0aWxzLyR7QlBOfS8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwdGVzdCcsICdmaWxlOi8vc2V0LXByb3Blci1wYXRoLW9mLXJlc291cmNlcy5wYXRjaCcsICcnLCBkKX0gXAotICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImMxNjM1YTVhODNiNjNhY2E3Zjk3YTNlYWIzOWViYWE2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjVmZDkwYWY2YmViMjI1YTliYjliOWZiNDE0YzA5MGZiYTUzYzlhNTU3OTNlMTcyZjUwOGNkNDM2NTJlNTlhODgiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJ3Rlc3RzJywnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRUNPTkZJR1twYW1dID0gIi0tZW5hYmxlLXZsb2NrLCAtLWRpc2FibGUtdmxvY2ssIGxpYnBhbSwiCi1QQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItLWVuYWJsZS10ZXN0cywgLS1kaXNhYmxlLXRlc3RzLCBsaWJjaGVjayIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgICBvZV9ydW5tYWtlIC1DICR7Qn0vdGVzdHMgZHVtcGtleXMtZnVsbHRhYmxlIGFsdC1pcy1tZXRhCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0gICAgaW5zdGFsbCAtRCAke0J9L3Rlc3RzL01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCi0gICAgc2VkIC1pIC1lICcvTWFrZWZpbGU6LywvXiQvZCcgLWUgJy8lOiAlLmluLywvXiQvZCcgXAotCS1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIFwKLQktZSAnczoke0RFQlVHX1BSRUZJWF9NQVB9OjpnJyBcCi0JLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLQktZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKLQktZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAotCS1lICdzOiR7U30vY29uZmlnL21pc3Npbmc6OmcnIFwKLQktZSAnczoke1dPUktESVJ9OjpnJyBcCi0JLWUgJy9saWJrZXltYXBfLipfU09VUkNFUyA9L2QnIC1lICcvJChFWEVFWFQpOi8sL14kL2QnICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCi0KLSAgICBmaW5kICR7Qn0vdGVzdHMgLWV4ZWN1dGFibGUgLWV4ZWMgaW5zdGFsbCB7fSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyBcOwotICAgIGZpbmQgJHtTfS90ZXN0cyBcKCAtbmFtZSBcKi5tYXAgLW8gLW5hbWUgXCouYmluIC1vIC1uYW1lIFwqLm91dHB1dCBcKSAtZXhlYyBpbnN0YWxsIHt9ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzIFw7Ci0KLSAgICBpbnN0YWxsIC1EIC1tIDc1NSAke1N9L2NvbmZpZy90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfS9jb25maWcvdGVzdC1kcml2ZXIKLX0KLQotUEFDS0FHRVMgKz0gIiR7UE59LWNvbnNvbGVmb250cyAke1BOfS1rZXltYXBzICR7UE59LXVuaW1hcHMgJHtQTn0tY29uc29sZXRyYW5zIgotCi1GSUxFU18ke1BOfS1jb25zb2xlZm9udHMgPSAiJHtkYXRhZGlyfS9jb25zb2xlZm9udHMiCi1GSUxFU18ke1BOfS1jb25zb2xldHJhbnMgPSAiJHtkYXRhZGlyfS9jb25zb2xldHJhbnMiCi1GSUxFU18ke1BOfS1rZXltYXBzID0gIiR7ZGF0YWRpcn0va2V5bWFwcyIKLUZJTEVTXyR7UE59LXVuaW1hcHMgPSAiJHtkYXRhZGlyfS91bmltYXBzIgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCA9ICJtYWtlIgotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiY2h2dCBkZWFsbG9jdnQgZmdjb25zb2xlIG9wZW52dCBzaG93a2V5IgotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUva2JkL2tiZF8yLjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTcwMGZmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9rYmQva2JkXzIuMi4wLmJiCkBAIC0wLDAgKzEsNzIgQEAKK1NVTU1BUlkgPSAiS2V5dGFibGUgZmlsZXMgYW5kIGtleWJvYXJkIHV0aWxpdGllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cua2JkLXByb2plY3Qub3JnLyIKKyMgZXZlcnl0aGluZyBtaW51cyBjb25zb2xlLWZvbnRzIGlzIEdQTHYyKworTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04OTJmNTY5YTU1NWJhOWMwN2E1NjhhN2MwYzRmYTYzYSIKKworaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwdGVzdCBwa2djb25maWcKKworREVQRU5EUyArPSAiZmxleC1uYXRpdmUiCisKK1JSRVBMQUNFU18ke1BOfSA9ICJjb25zb2xlLXRvb2xzIgorUlBST1ZJREVTXyR7UE59ID0gImNvbnNvbGUtdG9vbHMiCitSQ09ORkxJQ1RTXyR7UE59ID0gImNvbnNvbGUtdG9vbHMiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC91dGlscy8ke0JQTn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncHRlc3QnLCAnZmlsZTovL3NldC1wcm9wZXItcGF0aC1vZi1yZXNvdXJjZXMucGF0Y2gnLCAnJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYW5hbHl6ZS5sLWFkZC1taXNzaW5nLXN0cmluZy1mb3JtYXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtREFUQURJUi1hbmQtYXBwZW5kLWkzODYtdG8tZml4LWxpYmtiZGZpbGUtdGVzdDA4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeF9jZmxhZ3MucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMWQ3YWUwYjVmYjg3NWRjMDgyNzMxZTA5Y2QwYzhiYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyMWExYmM1ZjZmYjNiMThjZTlmZGQ3MTdlNDUzMzM2ODA2MGEzMTgyYTM5YzcxNTVlYWY3ZWMwZjVmODNlOWY3IgorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0gXAorICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICd0ZXN0cycsJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICItLWVuYWJsZS12bG9jaywgLS1kaXNhYmxlLXZsb2NrLCBsaWJwYW0sIgorUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLS1lbmFibGUtdGVzdHMsIC0tZGlzYWJsZS10ZXN0cywgbGliY2hlY2siCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisgICAgb2VfcnVubWFrZSAtQyAke0J9L3Rlc3RzIGFsdC1pcy1tZXRhIGR1bXBrZXlzLWJrZXltYXAgZHVtcGtleXMtZnVsbHRhYmxlIGR1bXBrZXlzLW1rdGFibGUKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICBpbnN0YWxsIC1EICR7Qn0vdGVzdHMvTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUKKyAgICBzZWQgLWkgLWUgJy9NYWtlZmlsZTovLC9eJC9kJyAtZSAnLyU6ICUuaW4vLC9eJC9kJyBcCisJLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgXAorCS1lICdzOiR7REVCVUdfUFJFRklYX01BUH06OmcnIFwKKwktZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAorCS1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCS1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCisJLWUgJ3M6JHtTfS9jb25maWcvbWlzc2luZzo6ZycgXAorCS1lICdzOiR7V09SS0RJUn06OmcnIFwKKwktZSAnL15saWIuKl9TT1VSQ0VTID0vZCcgLWUgJy8kKEVYRUVYVCk6LywvXiQvZCcgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUKKworICAgIGZpbmQgJHtCfS90ZXN0cyAtZXhlY3V0YWJsZSAtZXhlYyBpbnN0YWxsIHt9ICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzIFw7CisgICAgY3AgLXJmICR7U30vdGVzdHMvZGF0YSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cworICAgIGNwIC1yZiAke1N9L3Rlc3RzL2ZpbmRmaWxlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisgICAgY3AgLXJmICR7U30vZGF0YSAke0R9JHtQVEVTVF9QQVRIfQorCisgICAgaW5zdGFsbCAtRCAtbSA3NTUgJHtTfS9jb25maWcvdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0vY29uZmlnL3Rlc3QtZHJpdmVyCit9CisKK1BBQ0tBR0VTICs9ICIke1BOfS1jb25zb2xlZm9udHMgJHtQTn0ta2V5bWFwcyAke1BOfS11bmltYXBzICR7UE59LWNvbnNvbGV0cmFucyIKKworRklMRVNfJHtQTn0tY29uc29sZWZvbnRzID0gIiR7ZGF0YWRpcn0vY29uc29sZWZvbnRzIgorRklMRVNfJHtQTn0tY29uc29sZXRyYW5zID0gIiR7ZGF0YWRpcn0vY29uc29sZXRyYW5zIgorRklMRVNfJHtQTn0ta2V5bWFwcyA9ICIke2RhdGFkaXJ9L2tleW1hcHMiCitGSUxFU18ke1BOfS11bmltYXBzID0gIiR7ZGF0YWRpcn0vdW5pbWFwcyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAibWFrZSIKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImNodnQgZGVhbGxvY3Z0IGZnY29uc29sZSBvcGVudnQgc2hvd2tleSBcCisgICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICd2bG9jaycsJycsIGQpfSIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHQtY29tcGF0XzQuNC4xNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdC1jb21wYXRfNC40LjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhNzRlYjEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHQtY29tcGF0XzQuNC4xNS5iYgpAQCAtMCwwICsxLDE4IEBACisjCisjIFRoaXMgcHJvdmlkZXMgbGliY3J5cHRvLnNvLjEgd2hpY2ggY29udGFpbnMgb2Jzb2xldGUgQVBJcywgbmVlZGVkIGZvciB1bmluYXRpdmUgaW4gcGFydGljdWxhcgorIworCityZXF1aXJlIGxpYnhjcnlwdC5pbmMKKworUFJPVklERVMgPSAiIgorQVVUT19MSUJOQU1FX1BLR1MgPSAiIgorRVhDTFVERV9GUk9NX1dPUkxEID0gIjEiCisKK0FQSSA9ICItLWVuYWJsZS1vYnNvbGV0ZS1hcGkiCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlybSAtcmYgJHtEfSR7aW5jbHVkZWRpcn0KKwlybSAtcmYgJHtEfSR7bGliZGlyfS9wa2djb25maWcKKwlybSAtcmYgJHtEfSR7ZGF0YWRpcn0KK30KKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0LWNvbXBhdF80LjQuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdC1jb21wYXRfNC40LjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViYzQ2NDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0LWNvbXBhdF80LjQuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLSMKLSMgVGhpcyBwcm92aWRlcyBsaWJjcnlwdG8uc28uMSB3aGljaCBjb250YWlucyBvYnNvbGV0ZSBBUElzLCBuZWVkZWQgZm9yIHVuaW5hdGl2ZSBpbiBwYXJ0aWN1bGFyCi0jCi0KLXJlcXVpcmUgbGlieGNyeXB0XyR7UFZ9LmJiCi0KLVBST1ZJREVTID0gIiIKLUFVVE9fTElCTkFNRV9QS0dTID0gIiIKLUVYQ0xVREVfRlJPTV9XT1JMRCA9ICIxIgotCi1BUEkgPSAiLS1lbmFibGUtb2Jzb2xldGUtYXBpIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0Jcm0gLXJmICR7RH0ke2luY2x1ZGVkaXJ9Ci0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnCi0Jcm0gLXJmICR7RH0ke2RhdGFkaXJ9Ci19Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHQuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlZTEzNjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhjcnlwdC9saWJ4Y3J5cHQuaW5jCkBAIC0wLDAgKzEsMzUgQEAKK1NVTU1BUlkgPSAiRXh0ZW5kZWQgY3J5cHRvZ3JhcGhpYyBsaWJyYXJ5IChmcm9tIGdsaWJjKSIKK0RFU0NSSVBUSU9OID0gIkZvcmtlZCBjb2RlIGZyb20gZ2xpYmMgbGliYXJ5IHRvIGV4dHJhY3Qgb25seSBjcnlwdG8gcGFydC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYmVzc2VyODIvbGlieGNyeXB0IgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPz0gImZpbGU6Ly9MSUNFTlNJTkc7bWQ1PTNiYjY2MTRjZjU4ODBjYmYxYjlkYmQ5ZTNkMTQ1ZTJjIFwKKyAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2Jlc3NlcjgyL2xpYnhjcnlwdC5naXQ7YnJhbmNoPSR7U1JDQlJBTkNIfSIKK1NSQ1JFViA9ICI4MjM0MzdkMDE1Y2Q0YWI0ZDEwMGVkMjA1ZjIxODY4MWIwM2FlNDVjIgorU1JDQlJBTkNIID89ICJkZXZlbG9wIgorCitQUk9WSURFUyA9ICJ2aXJ0dWFsL2NyeXB0IgorCitGSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliY3J5cHQqLnNvLiogXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmNyeXB0LSouc28gXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm93Y3J5cHQqLnNvLiogXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm93Y3J5cHQtKi5zbyBcCisiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK0JVSUxEX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IgorVEFSR0VUX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtpbmNsdWRlZGlyfSAtV25vLWVycm9yIgorQ1BQRkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgLVduby1lcnJvciIKKworQ0ZMQUdTICs9ICItZmNvbW1vbiIKKworQVBJID0gIi0tZGlzYWJsZS1vYnNvbGV0ZS1hcGkiCitFWFRSQV9PRUNPTkYgKz0gIiR7QVBJfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0XzQuNC4xNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjQuMTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzlkYmEyZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjQuMTUuYmIKQEAgLTAsMCArMSwyIEBACityZXF1aXJlIGxpYnhjcnlwdC5pbmMKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0XzQuNC44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4Y3J5cHQvbGlieGNyeXB0XzQuNC44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzg3ZjY5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieGNyeXB0L2xpYnhjcnlwdF80LjQuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiRXh0ZW5kZWQgY3J5cHRvZ3JhcGhpYyBsaWJyYXJ5IChmcm9tIGdsaWJjKSIKLURFU0NSSVBUSU9OID0gIkZvcmtlZCBjb2RlIGZyb20gZ2xpYmMgbGliYXJ5IHRvIGV4dHJhY3Qgb25seSBjcnlwdG8gcGFydC4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vYmVzc2VyODIvbGlieGNyeXB0IgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPz0gImZpbGU6Ly9MSUNFTlNJTkc7bWQ1PTNiYjY2MTRjZjU4ODBjYmYxYjlkYmQ5ZTNkMTQ1ZTJjIFwKLSAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2Jlc3NlcjgyL2xpYnhjcnlwdC5naXQ7YnJhbmNoPSR7U1JDQlJBTkNIfSIKLVNSQ1JFViA9ICJhY2Q4NDk5N2E1YThiMmJhZGQyOGI3MGE2NDJhYmVlMTEyNzJmYWQyIgotU1JDQlJBTkNIID89ICJkZXZlbG9wIgotCi1QUk9WSURFUyA9ICJ2aXJ0dWFsL2NyeXB0IgotCi1GSUxFU18ke1BOfSA9ICIke2xpYmRpcn0vbGliY3J5cHQqLnNvLiogXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYmNyeXB0LSouc28gXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm93Y3J5cHQqLnNvLiogXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYm93Y3J5cHQtKi5zbyBcCi0iCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLUJVSUxEX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9IgotVEFSR0VUX0NQUEZMQUdTID0gIi1JJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtpbmNsdWRlZGlyfSAtV25vLWVycm9yIgotQ1BQRkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgLVduby1lcnJvciIKLQotQVBJID0gIi0tZGlzYWJsZS1vYnNvbGV0ZS1hcGkiCi1FWFRSQV9PRUNPTkYgKz0gIiR7QVBJfSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyLzAwMDEtTWFrZS1wdGVzdC1ydW4tdGhlLXB5dGhvbi10ZXN0cy1pZi1weXRob24taXMtZW5hYmxlZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvMDAwMS1NYWtlLXB0ZXN0LXJ1bi10aGUtcHl0aG9uLXRlc3RzLWlmLXB5dGhvbi1pcy1lbmFibGVkLnBhdGNoCmluZGV4IDJiOTJkYmMuLjVlOWEwYTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvMDAwMS1NYWtlLXB0ZXN0LXJ1bi10aGUtcHl0aG9uLXRlc3RzLWlmLXB5dGhvbi1pcy1lbmFibGVkLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvMDAwMS1NYWtlLXB0ZXN0LXJ1bi10aGUtcHl0aG9uLXRlc3RzLWlmLXB5dGhvbi1pcy1lbmFibGVkLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA3OGRiZDRjMDlkNjE3YTljYjczMGQ3OTZmOTRlZTRkOTM4NDBkM2NjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyYjVmYjQxNmFhMjc1ZmQyYTE3YTAxMzlhMmY3ODM5OThiY2I0MmNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwa2pAYXhpcy5jb20+CiBEYXRlOiBGcmksIDkgSnVuIDIwMTcgMTc6NTA6NDYgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gTWFrZSBwdGVzdCBydW4gdGhlIHB5dGhvbiB0ZXN0cyBpZiBweXRob24gaXMgZW5hYmxlZApAQCAtOCwxOCArOCwxOSBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQogU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+CisKIC0tLQogIE1ha2VmaWxlLmFtICAgICAgICAgICAgICAgICAgfCAgMiArLQogIHB5dGhvbi9NYWtlZmlsZS5hbSAgICAgICAgICAgfCAgOSArKysrKysrKysKLSBweXRob24vdGVzdHMvTWFrZWZpbGUuYW0gICAgIHwgMTIgKysrKysrKysrKy0tCisgcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtICAgICB8IDEwICsrKysrKysrKysKICBweXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5IHwgIDIgKy0KLSA0IGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisgNCBmaWxlcyBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCi1JbmRleDogbGlieG1sMi0yLjkuNy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYnhtbDItMi45Ljcub3JpZy9NYWtlZmlsZS5hbQotKysrIGxpYnhtbDItMi45LjcvTWFrZWZpbGUuYW0KLUBAIC0yMDcsOSArMjA3LDkgQEAgaW5zdGFsbC1wdGVzdDoKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCBhZTYyMjc0Li5iZDFlNDI1IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMjAzLDkgKzIwMyw5IEBAIGluc3RhbGwtcHRlc3Q6CiAgCWluc3RhbGwgJChjaGVja19QUk9HUkFNUykgJChERVNURElSKSkKICAJY3AgLXIgJChzcmNkaXIpL3Rlc3QgJChERVNURElSKQogIAljcCAtciAkKHNyY2RpcikvcmVzdWx0ICQoREVTVERJUikKQEAgLTMwLDExICszMSwxMSBAQAogIAogIHJ1bnRlc3RzOiBydW50ZXN0JChFWEVFWFQpIHRlc3RyZWN1cnNlJChFWEVFWFQpIHRlc3RhcGkkKEVYRUVYVCkgXAogICAgICAgICAgICB0ZXN0Y2hhciQoRVhFRVhUKSB0ZXN0ZGljdCQoRVhFRVhUKSBydW54bWxjb25mJChFWEVFWFQpCi1JbmRleDogbGlieG1sMi0yLjkuNy9weXRob24vTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBsaWJ4bWwyLTIuOS43Lm9yaWcvcHl0aG9uL01ha2VmaWxlLmFtCi0rKysgbGlieG1sMi0yLjkuNy9weXRob24vTWFrZWZpbGUuYW0KLUBAIC00OCw3ICs0OCwxNiBAQCBHRU5FUkFURUQgPSBsaWJ4bWwyY2xhc3MucHkgbGlieG1sMmNsYXNzCitkaWZmIC0tZ2l0IGEvcHl0aG9uL01ha2VmaWxlLmFtIGIvcHl0aG9uL01ha2VmaWxlLmFtCitpbmRleCAzNGFlZDk2Li5iYTNlYzZhIDEwMDY0NAorLS0tIGEvcHl0aG9uL01ha2VmaWxlLmFtCisrKysgYi9weXRob24vTWFrZWZpbGUuYW0KK0BAIC00OCw3ICs0OCwxNiBAQCBHRU5FUkFURUQgPSBsaWJ4bWwyY2xhc3MucHkgbGlieG1sMmNsYXNzLnR4dCAkKEJVSUxUX1NPVVJDRVMpCiAgCiAgJChHRU5FUkFURUQpOiAkKHNyY2RpcikvZ2VuZXJhdG9yLnB5ICQoQVBJX0RFU0MpCiAgCSQoUFlUSE9OKSAkKHNyY2RpcikvZ2VuZXJhdG9yLnB5ICQoc3JjZGlyKQpAQCAtNTEsMTAgKzUyLDEwIEBACiArLlBIT05ZOiB0ZXN0cyB0ZXN0CiAgdGVzdHMgdGVzdDogYWxsCiAgCWNkIHRlc3RzICYmICQoTUFLRSkgdGVzdHMKLUluZGV4OiBsaWJ4bWwyLTIuOS43L3B5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpYnhtbDItMi45Ljcub3JpZy9weXRob24vdGVzdHMvTWFrZWZpbGUuYW0KLSsrKyBsaWJ4bWwyLTIuOS43L3B5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbQorZGlmZiAtLWdpdCBhL3B5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbSBiL3B5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbQoraW5kZXggMjI3ZTI0ZC4uMDIxYmIyOSAxMDA2NDQKKy0tLSBhL3B5dGhvbi90ZXN0cy9NYWtlZmlsZS5hbQorKysrIGIvcHl0aG9uL3Rlc3RzL01ha2VmaWxlLmFtCiBAQCAtNTksNiArNTksMTEgQEAgWE1MUz0JCVwKICBDTEVBTkZJTEVTID0gY29yZSB0bXAueG1sICoucHljCiAgCkBAIC02NywyNCArNjgsMjUgQEAKICB0ZXN0czogJChQWVRFU1RTKQogIAlAZm9yIGYgaW4gJChYTUxTKSA7IGRvIHRlc3QgLWYgJCRmIHx8ICQoTE5fUykgJChzcmNkaXIpLyQkZiAuIDsgZG9uZQogIAlAZWNobyAiIyMgcnVubmluZyBQeXRob24gcmVncmVzc2lvbiB0ZXN0cyIKLUBAIC02OCw4ICs3MywxMSBAQCB0ZXN0czogJChQWVRFU1RTKQotIAkgICBleHBvcnQgTERfTElCUkFSWV9QQVRIOyBcCi0gCSAgIGZvciB0ZXN0IGluICQoUFlURVNUUykgOyBcCi0gCSAgIGRvIGxvZz1gJChQWVRIT04pICQoc3JjZGlyKS8kJHRlc3RgIDsgXAotLQkgICBpZiBbICJgZWNobyAkJGxvZyB8IGdyZXAgT0tgIiA9ICIiIF0gOyB0aGVuIFwKLS0JICAgZWNobyAiLS0gJCR0ZXN0IiA7IGVjaG8gIiQkbG9nIiA7IGZpIDsgZG9uZSkKLSsJICAgaWYgWyAiYGVjaG8gJCRsb2cgfCBncmVwIE9LYCIgXTsgdGhlbiBcCi0rCSAgIGVjaG8gIlBBU1M6ICQkdGVzdCI7IGVsc2UgXAotKwkgICBlY2hvICIkJGxvZyI7IGVjaG8gIkZBSUw6ICQkdGVzdCI7IGZpOyBkb25lKQorQEAgLTcwLDkgKzc1LDE0IEBAIHRlc3RzOiAkKFBZVEVTVFMpCisgCSAgICBpZiBbICIkJD8iIC1uZSAwIF0gOyB0aGVuIFwKKyAJICAgICAgZWNobyAiLS0gJCR0ZXN0IiA7IFwKKyAJICAgICAgZWNobyAiJCRsb2ciIDsgXAorKyAgICAgICAgICAgICAgZWNobyAiRkFJTDogJCR0ZXN0IjsgXAorIAkgICAgICBleGl0IDEgOyBcCisrICAgICAgICAgICAgZWxzZSBcCisrICAgICAgICAgICAgICBlY2hvICJQQVNTOiAkJHRlc3QiOyBcCisgCSAgICBmaSA7IFwKKyAJICBkb25lKQogIGVsc2UKICtpbnN0YWxsLXB0ZXN0OgogKwogIHRlc3RzOgogIGVuZGlmCi1JbmRleDogbGlieG1sMi0yLjkuNy9weXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbGlieG1sMi0yLjkuNy5vcmlnL3B5dGhvbi90ZXN0cy90c3RMYXN0RXJyb3IucHkKLSsrKyBsaWJ4bWwyLTIuOS43L3B5dGhvbi90ZXN0cy90c3RMYXN0RXJyb3IucHkKK2RpZmYgLS1naXQgYS9weXRob24vdGVzdHMvdHN0TGFzdEVycm9yLnB5IGIvcHl0aG9uL3Rlc3RzL3RzdExhc3RFcnJvci5weQoraW5kZXggODFkMGFjYy4uMTYyYzhkYiAxMDA3NTUKKy0tLSBhL3B5dGhvbi90ZXN0cy90c3RMYXN0RXJyb3IucHkKKysrKyBiL3B5dGhvbi90ZXN0cy90c3RMYXN0RXJyb3IucHkKIEBAIC0yNSw3ICsyNSw3IEBAIGNsYXNzIFRlc3RDYXNlKHVuaXR0ZXN0LlRlc3RDYXNlKToKICAgICAgICAgIHdoZW4gdGhlIGV4Y2VwdGlvbiBpcyByYWlzZWQsIGNoZWNrIHRoZSBsaWJ4bWwyLmxhc3RFcnJvciBmb3IKICAgICAgICAgIGV4cGVjdGVkIHZhbHVlcy4iIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDIvQ1ZFLTIwMTktMjAzODgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL0NWRS0yMDE5LTIwMzg4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4ZWI2NWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL0NWRS0yMDE5LTIwMzg4LnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gN2ZmY2Q0NGQ3ZTZjNDY3MDRmOGFmMDMyMWQ5MzE0Y2QyNmUwZTE4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFpoaXBlbmcgWGllIDx4aWV6aGlwZW5nMUBodWF3ZWkuY29tPgorRGF0ZTogVHVlLCAyMCBBdWcgMjAxOSAxNjozMzowNiArMDgwMAorU3ViamVjdDogW1BBVENIXSBGaXggbWVtb3J5IGxlYWsgaW4geG1sU2NoZW1hVmFsaWRhdGVTdHJlYW0KKworV2hlbiBjdHh0LT5zY2hlbWEgaXMgTlVMTCwgeG1sU2NoZW1hU0FYUGx1Zy0+eG1sU2NoZW1hUHJlUnVuCithbGxvYyBhIG5ldyBzY2hlbWEgZm9yIGN0eHQtPnNjaGVtYSBhbmQgc2V0IHZjdHh0LT54c2lBc3NlbWJsZQordG8gMS4gVGhlbiB4bWxTY2hlbWFWU3RhcnQtPnhtbFNjaGVtYVByZVJ1biBpbml0aWFsaXplCit2Y3R4dC0+eHNpQXNzZW1ibGUgdG8gMCBhZ2FpbiB3aGljaCBjYXVzZSB0aGUgYWxsb2NlZCBzY2hlbWEKK2NhbiBub3QgYmUgZnJlZWQgYW55bW9yZS4KKworRm91bmQgd2l0aCBsaWJGdXp6ZXIuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9saWJ4bWwyL2NvbW1pdC83ZmZjZDQ0ZDdlNmM0NjcwNGY4YWYwMzIxZDkzMTRjZDI2ZTBlMThhXQorQ1ZFOiBDVkUtMjAxOS0yMDM4OAorCitTaWduZWQtb2ZmLWJ5OiBaaGlwZW5nIFhpZSA8eGllemhpcGVuZzFAaHVhd2VpLmNvbT4KK1NpZ25lZC1vZmYtYnk6IExlZSBDaGVlIFlhbmcgPGNoZWUueWFuZy5sZWVAaW50ZWwuY29tPgorLS0tCisgeG1sc2NoZW1hcy5jIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3htbHNjaGVtYXMuYyBiL3htbHNjaGVtYXMuYworaW5kZXggMzAxYzg0NDkuLjM5ZDkyMTgyIDEwMDY0NAorLS0tIGEveG1sc2NoZW1hcy5jCisrKysgYi94bWxzY2hlbWFzLmMKK0BAIC0yODA5MCw3ICsyODA5MCw2IEBAIHhtbFNjaGVtYVByZVJ1bih4bWxTY2hlbWFWYWxpZEN0eHRQdHIgdmN0eHQpIHsKKyAgICAgdmN0eHQtPm5iZXJyb3JzID0gMDsKKyAgICAgdmN0eHQtPmRlcHRoID0gLTE7CisgICAgIHZjdHh0LT5za2lwRGVwdGggPSAtMTsKKy0gICAgdmN0eHQtPnhzaUFzc2VtYmxlID0gMDsKKyAgICAgdmN0eHQtPmhhc0tleXJlZnMgPSAwOworICNpZmRlZiBFTkFCTEVfSURDX05PREVfVEFCTEVTX1RFU1QKKyAgICAgdmN0eHQtPmNyZWF0ZUlEQ05vZGVUYWJsZXMgPSAxOworLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9DVkUtMjAyMC03NTk1LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMi9DVkUtMjAyMC03NTk1LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZhY2ZlZmQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL2xpYnhtbC9saWJ4bWwyL0NWRS0yMDIwLTc1OTUucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSAwZTFhNDljODkwNzY0NWQyZTE1NWYwZDg5ZDRkOTg5NWFjNTExMmI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogWmhpcGVuZyBYaWUgPHhpZXpoaXBlbmcxQGh1YXdlaS5jb20+CitEYXRlOiBUaHUsIDEyIERlYyAyMDE5IDE3OjMwOjU1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBpbmZpbml0ZSBsb29wIGluIHhtbFN0cmluZ0xlbkRlY29kZUVudGl0aWVzCisKK1doZW4gY3R4dC0+aW5zdGF0ZSA9PSBYTUxfUEFSU0VSX0VPRix4bWxQYXJzZVN0cmluZ0VudGl0eVJlZgorcmV0dXJuIE5VTEwgd2hpY2ggY2F1c2UgYSBpbmZpbml0ZSBsb29wIGluIHhtbFN0cmluZ0xlbkRlY29kZUVudGl0aWVzCisKK0ZvdW5kIHdpdGggbGliRnV6emVyLgorCitTaWduZWQtb2ZmLWJ5OiBaaGlwZW5nIFhpZSA8eGllemhpcGVuZzFAaHVhd2VpLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2xpYnhtbDIvY29tbWl0LzBlMWE0OWM4OTA3Nl0KK0NWRTogQ1ZFLTIwMjAtNzU5NQorU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4gCistLS0KKyBwYXJzZXIuYyB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcGFyc2VyLmMgYi9wYXJzZXIuYworaW5kZXggZDFjMzE5NjMuLmEzNGJiNmNkIDEwMDY0NAorLS0tIGEvcGFyc2VyLmMKKysrKyBiL3BhcnNlci5jCitAQCAtMjY0Niw3ICsyNjQ2LDggQEAgeG1sU3RyaW5nTGVuRGVjb2RlRW50aXRpZXMoeG1sUGFyc2VyQ3R4dFB0ciBjdHh0LCBjb25zdCB4bWxDaGFyICpzdHIsIGludCBsZW4sCisgICAgIGVsc2UKKyAgICAgICAgIGMgPSAwOworICAgICB3aGlsZSAoKGMgIT0gMCkgJiYgKGMgIT0gZW5kKSAmJiAvKiBub24gaW5wdXQgY29uc3VtaW5nIGxvb3AgKi8KKy0JICAgKGMgIT0gZW5kMikgJiYgKGMgIT0gZW5kMykpIHsKKysgICAgICAgICAgIChjICE9IGVuZDIpICYmIChjICE9IGVuZDMpICYmCisrICAgICAgICAgICAoY3R4dC0+aW5zdGF0ZSAhPSBYTUxfUEFSU0VSX0VPRikpIHsKKyAKKyAJaWYgKGMgPT0gMCkgYnJlYWs7CisgICAgICAgICBpZiAoKGMgPT0gJyYnKSAmJiAoc3RyWzFdID09ICcjJykpIHsKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjEwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDk3YWNlYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjEwLmJiCkBAIC0wLDAgKzEsMTEyIEBACitTVU1NQVJZID0gIlhNTCBDIFBhcnNlciBMaWJyYXJ5IGFuZCBUb29sa2l0IgorREVTQ1JJUFRJT04gPSAiVGhlIFhNTCBQYXJzZXIgTGlicmFyeSBhbGxvd3MgZm9yIG1hbmlwdWxhdGlvbiBvZiBYTUwgZmlsZXMuICBMaWJ4bWwyIGV4cG9ydHMgUHVzaCBhbmQgUHVsbCB0eXBlIHBhcnNlciBpbnRlcmZhY2VzIGZvciBib3RoIFhNTCBhbmQgSFRNTC4gIEl0IGNhbiBkbyBEVEQgdmFsaWRhdGlvbiBhdCBwYXJzZSB0aW1lLCBvbiBhIHBhcnNlZCBkb2N1bWVudCBpbnN0YW5jZSBvciB3aXRoIGFuIGFyYml0cmFyeSBEVEQuICBMaWJ4bWwyIGluY2x1ZGVzIGNvbXBsZXRlIFhQYXRoLCBYUG9pbnRlciBhbmQgWGluY2x1ZGUgaW1wbGVtZW50YXRpb25zLiAgSXQgYWxzbyBoYXMgYSBTQVggbGlrZSBpbnRlcmZhY2UsIHdoaWNoIGlzIGRlc2lnbmVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBFeHBhdC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnhtbHNvZnQub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PWxpYnhtbDIiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NvcHlyaWdodDttZDU9MjA0NDQxN2UyZTUwMDZiNjVhOGI5MDY3YjY4M2ZjZjEgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaGFzaC5jO2JlZ2lubGluZT02O2VuZGxpbmU9MTU7bWQ1PTk2ZjcyOTY2MDVlYWU4MDc2NzBmYjA4OTQ3ODI5OTY5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpc3QuYztiZWdpbmxpbmU9NDtlbmRsaW5lPTEzO21kNT1jZGJmYTNkZWU1MWMwOTllZGIwNGUzOWY3NjJlZTkwNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90cmlvLmM7YmVnaW5saW5lPTU7ZW5kbGluZT0xNDttZDU9NmMwMjU3NTNjODZkOTU4NzIyZWM3NmU5NGNhZTkzMmUiCisKK0RFUEVORFMgPSAiemxpYiB2aXJ0dWFsL2xpYmljb252IgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cueG1sc29mdC5vcmcvc291cmNlcy9saWJ4bWwyLSR7UFZ9LnRhci5nejtuYW1lPWxpYnRhciBcCisgICAgICAgICAgIGh0dHA6Ly93d3cudzMub3JnL1hNTC9UZXN0L3htbHRzMjAwODA4MjcudGFyLmd6O3N1YmRpcj0ke0JQfTtuYW1lPXRlc3R0YXIgXAorICAgICAgICAgICBmaWxlOi8vbGlieG1sLTY0Yml0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bnRlc3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3B5dGhvbi1zaXRlcGFja2FnZXMtZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpYnhtbC1tNC11c2UtcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1wdGVzdC1ydW4tdGhlLXB5dGhvbi10ZXN0cy1pZi1weXRob24taXMtZW5hYmxlZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXgtZXhlY3V0aW9uLW9mLXB0ZXN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAyMC03NTk1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTIwMzg4LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW2xpYnRhci5tZDVzdW1dID0gIjEwOTQyYTFkYzIzMTM3YThhYTA3ZjA2MzljYmZlY2U1IgorU1JDX1VSSVtsaWJ0YXIuc2hhMjU2c3VtXSA9ICJhYWZlZTE5M2ZmYjhmZTBjODJkNGFmZWY2ZWY5MTk3MmNiYWY1ZmVlYTEwMGVkYzJmMjYyNzUwNjExYjRiZTFmIgorU1JDX1VSSVt0ZXN0dGFyLm1kNXN1bV0gPSAiYWUzZDFlYmUwMDBhMzk3MmFmYTEwNGNhN2YwZTFiNGEiCitTUkNfVVJJW3Rlc3R0YXIuc2hhMjU2c3VtXSA9ICI5NjE1MTY4NWNlYzk5N2UxZjlmMzM4N2UzNjI2ZDYxZTYyODRkNGQ2ZTY2ZTBlNDQwYzIwOTI4NmMwM2U5Y2M3IgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3htbDItY29uZmlnIgorCitQQUNLQUdFQ09ORklHID8/PSAicHl0aG9uIFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IFwKKyIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLXdpdGgtcHl0aG9uPSR7UFlUSE9OfSwtLXdpdGhvdXQtcHl0aG9uLHB5dGhvbjMiCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgYmluY29uZmlnLWRpc2FibGVkIHB0ZXN0IGZlYXR1cmVzX2NoZWNrCisKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3B5dGhvbjNuYXRpdmUnLCAnJywgZCl9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdsaWJnY2MgcHl0aG9uMy1jb3JlIHB5dGhvbjMtbG9nZ2luZyBweXRob24zLXNoZWxsICBweXRob24zLXN0cmluZ29sZCBweXRob24zLXRocmVhZGluZyBweXRob24zLXVuaXR0ZXN0ICR7UE59LXB5dGhvbicsICcnLCBkKX0iCisKK1JERVBFTkRTXyR7UE59LXB5dGhvbiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3B5dGhvbjMtY29yZScsICcnLCBkKX0iCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy1nY29udi1lYmNkaWMtdXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsaWJjLWdjb252LWlibTExNDEgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsaWJjLWdjb252LWlzbzg4NTktNSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2xpYmMtZ2NvbnYtZXVjLWpwIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb2NhbGUtYmFzZS1lbi11cyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKKworZXhwb3J0IFBZVEhPTl9TSVRFX1BBQ0tBR0VTPSIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfSIKKworIyBXQVJOSU5HOiB6bGliIGlzIHJlcXVpcmVkIGZvciBSUE0gdXNlCitFWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWRlYnVnIC0td2l0aG91dC1sZWdhY3kgLS13aXRoLWNhdGFsb2cgLS13aXRob3V0LWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLWZleGNlcHRpb25zIgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQtbGVnYWN5IC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLXdpdGhvdXQtbGVnYWN5IC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC16bGliIgorRVhUUkFfT0VDT05GX2xpbnV4c3RkYmFzZSA9ICItLXdpdGgtZGVidWcgLS13aXRoLWxlZ2FjeSAtLXdpdGgtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgICMgYXV0b25hbWVyIHdvdWxkIGNhbGwgdGhpcyBsaWJ4bWwyLTIsIGJ1dCB3ZSBkb24ndCB3YW50IHRoYXQKKyAgICBpZiBkLmdldFZhcignREVCSUFOX05BTUVTJyk6CisgICAgICAgIGQuc2V0VmFyKCdQS0dfbGlieG1sMicsICcke01MUFJFRklYfWxpYnhtbDInKQorfQorCitQQUNLQUdFX0JFRk9SRV9QTiArPSAiJHtQTn0tdXRpbHMiCitQQUNLQUdFUyArPSAiJHtQTn0tcHl0aG9uIgorCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyouYSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3htbDJDb25mLnNoICR7bGliZGlyfS9jbWFrZS8qIgorRklMRVNfJHtQTn0tdXRpbHMgPSAiJHtiaW5kaXJ9LyoiCitGSUxFU18ke1BOfS1weXRob24gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwkjIGV4ZWN1dGFibGVzIHRha2UgbG9uZ2VyIHRvIHBhY2thZ2U6IHRoZXNlIHNob3VsZCBub3QgYmUgZXhlY3V0YWJsZQorCWZpbmQgJHtTfS94bWxjb25mLyAtdHlwZSBmIC1leGVjIGNobW9kIC14IHt9IFwrCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSBjaGVjay1hbQorfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKwljcCAtciAke1N9L3htbGNvbmYgJHtEfSR7UFRFU1RfUEFUSH0KKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgZCl9IiBdOyB0aGVuCisJCXNlZCAtaSAtZSAnc3xeXChQWVRIT04gPSBcKS4qfFwxJHtVU1JCSU5QQVRIfS8ke1BZVEhPTl9QTn18JyBcCisJCSAgICAke0R9JHtQVEVTVF9QQVRIfS9weXRob24vdGVzdHMvTWFrZWZpbGUKKwkJZ3JlcCAtbHJaICcjIS91c3IvYmluL3B5dGhvbicgJHtEfSR7UFRFU1RfUEFUSH0vcHl0aG9uIHwKKwkJCXhhcmdzIC0wIHNlZCAtaSAtZSAnc3wvdXNyL2Jpbi9weXRob258JHtVU1JCSU5QQVRIfS8ke1BZVEhPTl9QTn18JworCWZpCisJI1JlbW92ZSBidWlsZCBob3N0IHJlZmVyZW5jZXMgZnJvbSB2YXJpb3VzIE1ha2VmaWxlcworCWZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKKwkgICAgc2VkIC1pIFwKKwkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisJICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisJICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorCSAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKwkgICAgLWUgJy9eUkVMREFURS9kJyBcCisJICAgIHt9ICsKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKwkjIERvY3MgYXJlIG5vdCBuZWVkZWQgaW4gdGhlIG5hdGl2ZSBjYXNlCisJcm0gJHtEfSR7ZGF0YWRpcn0vZ3RrLWRvYyAtcmYKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbGlieG1sL2xpYnhtbDJfMi45LjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhN2UwOTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9saWJ4bWwvbGlieG1sMl8yLjkuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExMCArMCwwIEBACi1TVU1NQVJZID0gIlhNTCBDIFBhcnNlciBMaWJyYXJ5IGFuZCBUb29sa2l0IgotREVTQ1JJUFRJT04gPSAiVGhlIFhNTCBQYXJzZXIgTGlicmFyeSBhbGxvd3MgZm9yIG1hbmlwdWxhdGlvbiBvZiBYTUwgZmlsZXMuICBMaWJ4bWwyIGV4cG9ydHMgUHVzaCBhbmQgUHVsbCB0eXBlIHBhcnNlciBpbnRlcmZhY2VzIGZvciBib3RoIFhNTCBhbmQgSFRNTC4gIEl0IGNhbiBkbyBEVEQgdmFsaWRhdGlvbiBhdCBwYXJzZSB0aW1lLCBvbiBhIHBhcnNlZCBkb2N1bWVudCBpbnN0YW5jZSBvciB3aXRoIGFuIGFyYml0cmFyeSBEVEQuICBMaWJ4bWwyIGluY2x1ZGVzIGNvbXBsZXRlIFhQYXRoLCBYUG9pbnRlciBhbmQgWGluY2x1ZGUgaW1wbGVtZW50YXRpb25zLiAgSXQgYWxzbyBoYXMgYSBTQVggbGlrZSBpbnRlcmZhY2UsIHdoaWNoIGlzIGRlc2lnbmVkIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBFeHBhdC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnhtbHNvZnQub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PWxpYnhtbDIiCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NvcHlyaWdodDttZDU9MjA0NDQxN2UyZTUwMDZiNjVhOGI5MDY3YjY4M2ZjZjEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaGFzaC5jO2JlZ2lubGluZT02O2VuZGxpbmU9MTU7bWQ1PTk2ZjcyOTY2MDVlYWU4MDc2NzBmYjA4OTQ3ODI5OTY5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpc3QuYztiZWdpbmxpbmU9NDtlbmRsaW5lPTEzO21kNT1jZGJmYTNkZWU1MWMwOTllZGIwNGUzOWY3NjJlZTkwNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90cmlvLmM7YmVnaW5saW5lPTU7ZW5kbGluZT0xNDttZDU9NmMwMjU3NTNjODZkOTU4NzIyZWM3NmU5NGNhZTkzMmUiCi0KLURFUEVORFMgPSAiemxpYiB2aXJ0dWFsL2xpYmljb252IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cueG1sc29mdC5vcmcvc291cmNlcy9saWJ4bWwyLSR7UFZ9LnRhci5nejtuYW1lPWxpYnRhciBcCi0gICAgICAgICAgIGh0dHA6Ly93d3cudzMub3JnL1hNTC9UZXN0L3htbHRzMjAwODA4MjcudGFyLmd6O3N1YmRpcj0ke0JQfTtuYW1lPXRlc3R0YXIgXAotICAgICAgICAgICBmaWxlOi8vbGlieG1sLTY0Yml0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bnRlc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3B5dGhvbi1zaXRlcGFja2FnZXMtZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2xpYnhtbC1tNC11c2UtcGtnY29uZmlnLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1wdGVzdC1ydW4tdGhlLXB5dGhvbi10ZXN0cy1pZi1weXRob24taXMtZW5hYmxlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtZXhlY3V0aW9uLW9mLXB0ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVtsaWJ0YXIubWQ1c3VtXSA9ICJjMDRhNWEwYTA0MmVhYTE1N2U4ZThjOWVhYmU3NmJkNiIKLVNSQ19VUklbbGlidGFyLnNoYTI1NnN1bV0gPSAiOTRmYjcwODkwMTQzZTNjNjU0OWYyNjVjZWU5M2VjMDY0YzgwYTg0YzQyYWQwZjIzZTg1ZWUxZmQ2NTQwYTg3MSIKLVNSQ19VUklbdGVzdHRhci5tZDVzdW1dID0gImFlM2QxZWJlMDAwYTM5NzJhZmExMDRjYTdmMGUxYjRhIgotU1JDX1VSSVt0ZXN0dGFyLnNoYTI1NnN1bV0gPSAiOTYxNTE2ODVjZWM5OTdlMWY5ZjMzODdlMzYyNmQ2MWU2Mjg0ZDRkNmU2NmUwZTQ0MGMyMDkyODZjMDNlOWNjNyIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS94bWwyLWNvbmZpZyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbiBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCi0iCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLS13aXRoLXB5dGhvbj0ke1BZVEhPTn0sLS13aXRob3V0LXB5dGhvbixweXRob24zIgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZy1kaXNhYmxlZCBwdGVzdCBmZWF0dXJlc19jaGVjawotCi1pbmhlcml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24zbmF0aXZlJywgJycsIGQpfQotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAnbGliZ2NjIHB5dGhvbjMtY29yZSBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1zaGVsbCAgcHl0aG9uMy1zdHJpbmdvbGQgcHl0aG9uMy10aHJlYWRpbmcgcHl0aG9uMy11bml0dGVzdCAke1BOfS1weXRob24nLCAnJywgZCl9IgotCi1SREVQRU5EU18ke1BOfS1weXRob24gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICdweXRob24zLWNvcmUnLCAnJywgZCl9IgotCi1SREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtZ2NvbnYtZWJjZGljLXVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbGliYy1nY29udi1pYm0xMTQxIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnbGliYy1nY29udi1pc284ODU5LTUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdsaWJjLWdjb252LWV1Yy1qcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9jYWxlLWJhc2UtZW4tdXMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi0KLWV4cG9ydCBQWVRIT05fU0lURV9QQUNLQUdFUz0iJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0iCi0KLSMgV0FSTklORzogemxpYiBpcyByZXF1aXJlZCBmb3IgUlBNIHVzZQotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1kZWJ1ZyAtLXdpdGhvdXQtbGVnYWN5IC0td2l0aC1jYXRhbG9nIC0td2l0aG91dC1kb2Nib29rIC0td2l0aC1jMTRuIC0td2l0aG91dC1sem1hIC0td2l0aC1mZXhjZXB0aW9ucyIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmVzZGsgPSAiLS13aXRob3V0LWxlZ2FjeSAtLXdpdGhvdXQtZG9jYm9vayAtLXdpdGgtYzE0biAtLXdpdGhvdXQtbHptYSAtLXdpdGgtemxpYiIKLUVYVFJBX09FQ09ORl9saW51eHN0ZGJhc2UgPSAiLS13aXRoLWRlYnVnIC0td2l0aC1sZWdhY3kgLS13aXRoLWRvY2Jvb2sgLS13aXRoLWMxNG4gLS13aXRob3V0LWx6bWEgLS13aXRoLXpsaWIiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICAjIGF1dG9uYW1lciB3b3VsZCBjYWxsIHRoaXMgbGlieG1sMi0yLCBidXQgd2UgZG9uJ3Qgd2FudCB0aGF0Ci0gICAgaWYgZC5nZXRWYXIoJ0RFQklBTl9OQU1FUycpOgotICAgICAgICBkLnNldFZhcignUEtHX2xpYnhtbDInLCAnJHtNTFBSRUZJWH1saWJ4bWwyJykKLX0KLQotUEFDS0FHRV9CRUZPUkVfUE4gKz0gIiR7UE59LXV0aWxzIgotUEFDS0FHRVMgKz0gIiR7UE59LXB5dGhvbiIKLQotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEiCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS94bWwyQ29uZi5zaCAke2xpYmRpcn0vY21ha2UvKiIKLUZJTEVTXyR7UE59LXV0aWxzID0gIiR7YmluZGlyfS8qIgotRklMRVNfJHtQTn0tcHl0aG9uID0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JIyBleGVjdXRhYmxlcyB0YWtlIGxvbmdlciB0byBwYWNrYWdlOiB0aGVzZSBzaG91bGQgbm90IGJlIGV4ZWN1dGFibGUKLQlmaW5kICR7U30veG1sY29uZi8gLXR5cGUgZiAtZXhlYyBjaG1vZCAteCB7fSBcKwotfQotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgY2hlY2stYW0KLX0KLQotZG9faW5zdGFsbF9wdGVzdCAoKSB7Ci0JY3AgLXIgJHtTfS94bWxjb25mICR7RH0ke1BURVNUX1BBVEh9Ci0JaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsIGQpfSIgXTsgdGhlbgotCQlzZWQgLWkgLWUgJ3N8XlwoUFlUSE9OID0gXCkuKnxcMSR7VVNSQklOUEFUSH0vJHtQWVRIT05fUE59fCcgXAotCQkgICAgJHtEfSR7UFRFU1RfUEFUSH0vcHl0aG9uL3Rlc3RzL01ha2VmaWxlCi0JCWdyZXAgLWxyWiAnIyEvdXNyL2Jpbi9weXRob24nICR7RH0ke1BURVNUX1BBVEh9L3B5dGhvbiB8Ci0JCQl4YXJncyAtMCBzZWQgLWkgLWUgJ3N8L3Vzci9iaW4vcHl0aG9ufCR7VVNSQklOUEFUSH0vJHtQWVRIT05fUE59fCcKLQlmaQotCSNSZW1vdmUgYnVpbGQgaG9zdCByZWZlcmVuY2VzIGZyb20gdmFyaW91cyBNYWtlZmlsZXMKLQlmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCi0JICAgIHNlZCAtaSBcCi0JICAgIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKLQkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAotCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAotCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKLQkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKLQkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCi0JICAgIC1lICcvXlJFTERBVEUvZCcgXAotCSAgICB7fSArCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7Ci0JIyBEb2NzIGFyZSBub3QgbmVlZGVkIGluIHRoZSBuYXRpdmUgY2FzZQotCXJtICR7RH0ke2RhdGFkaXJ9L2d0ay1kb2MgLXJmCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9idWlsZHRvb2xzLWV4dGVuZGVkLXRhcmJhbGwuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvYnVpbGR0b29scy1leHRlbmRlZC10YXJiYWxsLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMmQwMTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvYnVpbGR0b29scy1leHRlbmRlZC10YXJiYWxsLmJiCkBAIC0wLDAgKzEsMzYgQEAKK3JlcXVpcmUgcmVjaXBlcy1jb3JlL21ldGEvYnVpbGR0b29scy10YXJiYWxsLmJiCisKK0RFU0NSSVBUSU9OID0gIlNESyB0eXBlIHRhcmdldCBmb3IgYnVpbGRpbmcgYSBzdGFuZGFsb25lIHRhcmJhbGwgY29udGFpbmluZyBidWlsZC1lc3NlbnRpYWxzLCBweXRob24zLCBjaHJwYXRoLCBcCisgICAgICAgICAgICAgICBtYWtlLCBnaXQgYW5kIHRhci4gVGhlIHRhcmJhbGwgY2FuIGJlIHVzZWQgdG8gcnVuIGJpdGJha2UgYnVpbGRzIG9uIHN5c3RlbXMgd2hpY2ggZG9uJ3QgbWVldCB0aGUgXAorICAgICAgICAgICAgICAgdXN1YWwgdmVyc2lvbiByZXF1aXJlbWVudHMgYW5kIGhhdmUgYW5jaWVudCBjb21waWxlcnMuIgorU1VNTUFSWSA9ICJTdGFuZGFsb25lIHRhcmJhbGwgZm9yIHJ1bm5pbmcgYnVpbGRzIG9uIHN5c3RlbXMgd2l0aCBpbmFkZXF1YXRlIHNvZnR3YXJlIGFuZCBhbmNpZW50IGNvbXBpbGVycyIKK0xJQ0VOU0UgPSAiTUlUIgorCisjIEFkZCBuYXRpdmVzZGsgZXF1aXZhbGVudCBvZiBidWlsZC1lc3NlbnRpYWxzCitUT09MQ0hBSU5fSE9TVF9UQVNLICs9ICJcCisgICAgbmF0aXZlc2RrLWF1dG9tYWtlIFwKKyAgICBuYXRpdmVzZGstYXV0b2NvbmYgXAorICAgIG5hdGl2ZXNkay1iaW51dGlscyBcCisgICAgbmF0aXZlc2RrLWJpbnV0aWxzLXN5bWxpbmtzIFwKKyAgICBuYXRpdmVzZGstY3BwIFwKKyAgICBuYXRpdmVzZGstY3BwLXN5bWxpbmtzIFwKKyAgICBuYXRpdmVzZGstZ2NjIFwKKyAgICBuYXRpdmVzZGstZ2NjLXN5bWxpbmtzIFwKKyAgICBuYXRpdmVzZGstZysrIFwKKyAgICBuYXRpdmVzZGstZysrLXN5bWxpbmtzIFwKKyAgICBuYXRpdmVzZGstZ2V0dGV4dCBcCisgICAgbmF0aXZlc2RrLWxpYmF0b21pYyBcCisgICAgbmF0aXZlc2RrLWxpYmdjYyBcCisgICAgbmF0aXZlc2RrLWxpYmdvbXAtZGV2IFwKKyAgICBuYXRpdmVzZGstbGlic3RkYysrIFwKKyAgICBuYXRpdmVzZGstbGlic3RkYysrLWRldiBcCisgICAgbmF0aXZlc2RrLWxpYnN0ZGMrKy1zdGF0aWNkZXYgXAorICAgIG5hdGl2ZXNkay1saWJ0b29sIFwKKyAgICBuYXRpdmVzZGstcGtnY29uZmlnIFwKKyAgICBuYXRpdmVzZGstZ2xpYmMtdXRpbHMgXAorICAgIG5hdGl2ZXNkay1saWJ4Y3J5cHQtZGV2IFwKKyAgICAiCisKK1RPT0xDSEFJTl9PVVRQVVROQU1FID0gIiR7U0RLX0FSQ0h9LWJ1aWxkdG9vbHMtZXh0ZW5kZWQtbmF0aXZlc2RrLXN0YW5kYWxvbmUtJHtESVNUUk9fVkVSU0lPTn0iCisKK1NES19USVRMRSA9ICJFeHRlbmRlZCBCdWlsZCB0b29scyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9idWlsZHRvb2xzLXRhcmJhbGwuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvYnVpbGR0b29scy10YXJiYWxsLmJiCmluZGV4IDljNWMyY2MuLmM0OTgwMmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9idWlsZHRvb2xzLXRhcmJhbGwuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2J1aWxkdG9vbHMtdGFyYmFsbC5iYgpAQCAtMjUsNiArMjUsOCBAQAogICAgIG5hdGl2ZXNkay10ZXhpbmZvIFwKICAgICBuYXRpdmVzZGstbGlibnNzLW5pcyBcCiAgICAgbmF0aXZlc2RrLXJwY3N2Yy1wcm90byBcCisgICAgbmF0aXZlc2RrLXBhdGNoIFwKKyAgICBuYXRpdmVzZGstbXRvb2xzIFwKICAgICAiCiAKIE1VTFRJTUFDSF9UQVJHRVRfU1lTID0gIiR7U0RLX0FSQ0h9LW5hdGl2ZXNkayR7U0RLX1ZFTkRPUn0tJHtTREtfT1N9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2N2ZS11cGRhdGUtZGItbmF0aXZlLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2N2ZS11cGRhdGUtZGItbmF0aXZlLmJiCmluZGV4IGRiMWQ2OWEuLmYyN2FkZTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9jdmUtdXBkYXRlLWRiLW5hdGl2ZS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvY3ZlLXVwZGF0ZS1kYi1uYXRpdmUuYmIKQEAgLTEzLDggKzEzLDE1IEBACiBkZWx0YXNrIGRvX3BvcHVsYXRlX3N5c3Jvb3QKIAogcHl0aG9uICgpIHsKLSAgICBpZiBub3QgZC5nZXRWYXIoIkNWRV9DSEVDS19EQl9GSUxFIik6CisgICAgY3ZlX2NoZWNrX2RiX2ZpbGUgPSBkLmdldFZhcigiQ1ZFX0NIRUNLX0RCX0ZJTEUiKQorICAgIGlmIG5vdCBjdmVfY2hlY2tfZGJfZmlsZToKICAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiU2tpcCByZWNpcGUgd2hlbiBjdmUtY2hlY2sgY2xhc3MgaXMgbm90IGxvYWRlZC4iKQorCisgICAgaWYgb3MucGF0aC5leGlzdHMoIiVzLWpvdXJuYWwiICUgY3ZlX2NoZWNrX2RiX2ZpbGUgKToKKyAgICAgICAgb3MucmVtb3ZlKCIlcy1qb3VybmFsIiAlIGN2ZV9jaGVja19kYl9maWxlKQorCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGN2ZV9jaGVja19kYl9maWxlKToKKyAgICAgICAgICAgIG9zLnJlbW92ZShjdmVfY2hlY2tfZGJfZmlsZSkKIH0KIAogcHl0aG9uIGRvX3BvcHVsYXRlX2N2ZV9kYigpIHsKQEAgLTI3LDcgKzM0LDcgQEAKIAogICAgIGJiLnV0aWxzLmV4cG9ydF9wcm94aWVzKGQpCiAKLSAgICBCQVNFX1VSTCA9ICJodHRwczovL252ZC5uaXN0Lmdvdi9mZWVkcy9qc29uL2N2ZS8xLjAvbnZkY3ZlLTEuMC0iCisgICAgQkFTRV9VUkwgPSAiaHR0cHM6Ly9udmQubmlzdC5nb3YvZmVlZHMvanNvbi9jdmUvMS4xL252ZGN2ZS0xLjEtIgogICAgIFlFQVJfU1RBUlQgPSAyMDAyCiAKICAgICBkYl9maWxlID0gZC5nZXRWYXIoIkNWRV9DSEVDS19EQl9GSUxFIikKQEAgLTU5LDcgKzY2LDEzIEBACiAgICAgICAgIGpzb25fdXJsID0geWVhcl91cmwgKyAiLmpzb24uZ3oiCiAKICAgICAgICAgIyBSZXRyaWV2ZSBtZXRhIGxhc3QgbW9kaWZpZWQgZGF0ZQotICAgICAgICByZXNwb25zZSA9IHVybGxpYi5yZXF1ZXN0LnVybG9wZW4obWV0YV91cmwpCisgICAgICAgIHRyeToKKyAgICAgICAgICAgIHJlc3BvbnNlID0gdXJsbGliLnJlcXVlc3QudXJsb3BlbihtZXRhX3VybCkKKyAgICAgICAgZXhjZXB0IHVybGxpYi5lcnJvci5VUkxFcnJvciBhcyBlOgorICAgICAgICAgICAgY3ZlX2Yud3JpdGUoJ1dhcm5pbmc6IENWRSBkYiB1cGRhdGUgZXJyb3IsIFVuYWJsZSB0byBmZXRjaCBDVkUgZGF0YS5cblxuJykKKyAgICAgICAgICAgIGJiLndhcm4oIkZhaWxlZCB0byBmZXRjaCBDVkUgZGF0YSAoJXMpIiAlIGUucmVhc29uKQorICAgICAgICAgICAgcmV0dXJuCisKICAgICAgICAgaWYgcmVzcG9uc2U6CiAgICAgICAgICAgICBmb3IgbCBpbiByZXNwb25zZS5yZWFkKCkuZGVjb2RlKCJ1dGYtOCIpLnNwbGl0bGluZXMoKToKICAgICAgICAgICAgICAgICBrZXksIHZhbHVlID0gbC5zcGxpdCgiOiIsIDEpCkBAIC0xMjIsOSArMTM1LDEyIEBACiAgICAgICAgICAgICBwcm9kdWN0ID0gY3BlMjNbNF0KICAgICAgICAgICAgIHZlcnNpb24gPSBjcGUyM1s1XQogCi0gICAgICAgICAgICBpZiB2ZXJzaW9uICE9ICcqJzoKKyAgICAgICAgICAgIGlmIHZlcnNpb24gIT0gJyonIGFuZCB2ZXJzaW9uICE9ICctJzoKICAgICAgICAgICAgICAgICAjIFZlcnNpb24gaXMgZGVmaW5lZCwgdGhpcyBpcyBhICc9JyBtYXRjaAogICAgICAgICAgICAgICAgIHlpZWxkIFtjdmVJZCwgdmVuZG9yLCBwcm9kdWN0LCB2ZXJzaW9uLCAnPScsICcnLCAnJ10KKyAgICAgICAgICAgIGVsaWYgdmVyc2lvbiA9PSAnLSc6CisgICAgICAgICAgICAgICAgIyBubyB2ZXJzaW9uIGluZm9ybWF0aW9uIGlzIGF2YWlsYWJsZQorICAgICAgICAgICAgICAgIHlpZWxkIFtjdmVJZCwgdmVuZG9yLCBwcm9kdWN0LCB2ZXJzaW9uLCAnJywgJycsICcnXQogICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAjIFBhcnNlIHN0YXJ0IHZlcnNpb24sIGVuZCB2ZXJzaW9uIGFuZCBvcGVyYXRvcnMKICAgICAgICAgICAgICAgICBvcF9zdGFydCA9ICcnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvZHVtbXktc2RrLXBhY2thZ2UuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL2R1bW15LXNkay1wYWNrYWdlLmluYwppbmRleCA0ZDY1MzcwLi5iZWRkZTI5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvZHVtbXktc2RrLXBhY2thZ2UuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9kdW1teS1zZGstcGFja2FnZS5pbmMKQEAgLTE2LDExICsxNiwxNiBAQAogQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKIAogUFJbdmFyZGVwc10gKz0gIkRVTU1ZUFJPVklERVMiCitQUlt2YXJkZXBzXSArPSAiRFVNTVlQUk9WSURFU19QQUNLQUdFUyIKKworRFVNTVlQUk9WSURFU19QQUNLQUdFUyA/Pz0gIiIKK0RVTU1ZUFJPVklERVNfUEFDS0FHRVNfTVVMVElMSUIgPSAiJHtAJyAnLmpvaW4oW211bHRpbGliX3BrZ19leHRlbmQoZCwgcGtnKSBmb3IgcGtnIGluIGQuZ2V0VmFyKCdEVU1NWVBST1ZJREVTX1BBQ0tBR0VTJykuc3BsaXQoKV0pfSIKK0RVTU1ZUFJPVklERVMgKz0gIiR7RFVNTVlQUk9WSURFU19QQUNLQUdFU19NVUxUSUxJQn0iCiAKIHB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgewogICAgIHAgPSBkLmdldFZhcigiUE4iKQogICAgIGQuYXBwZW5kVmFyKCJSUFJPVklERVNfJXMiICUgcCwgIiR7RFVNTVlQUk9WSURFU30iKQogICAgIGQuYXBwZW5kVmFyKCJSQ09ORkxJQ1RTXyVzIiAlIHAsICIke0RVTU1ZUFJPVklERVN9IikKLSAgICBkLmFwcGVuZFZhcigiUlJFUExBQ0VTXyVzIiAlIHAsICIke0RVTU1ZUFJPVklERVN9IikKKyAgICBkLmFwcGVuZFZhcigiUlJFUExBQ0VTXyVzIiAlIHAsICIke0RVTU1ZUFJPVklERVNfUEFDS0FHRVNfTVVMVElMSUJ9IikKIH0KIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtZXh0c2RrLXRvb2xjaGFpbi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9tZXRhLWV4dHNkay10b29sY2hhaW4uYmIKaW5kZXggMjM1ZDZlYy4uMGRmNjgxYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL21ldGEtZXh0c2RrLXRvb2xjaGFpbi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbWV0YS1leHRzZGstdG9vbGNoYWluLmJiCkBAIC0xNiw2ICsxNiw5IEBACiBTU1RBVEVUQVNLUyArPSAiZG9fbG9ja2VkX3NpZ3MiCiBkb19sb2NrZWRfc2lnc1tzc3RhdGUtaW5wdXRkaXJzXSA9ICIke0xPQ0tFRF9TSUdTX0lORElSfSIKIGRvX2xvY2tlZF9zaWdzW3NzdGF0ZS1vdXRwdXRkaXJzXSA9ICIke1NUQUdJTkdfRElSfS8ke1BBQ0tBR0VfQVJDSH0vJHtQTn0vbG9ja2VkLXNpZ3MiCisjIElmIGEgdGFza2hhc2ggY2hhbmdlcyB3ZSBuZWVkIHRvIHVzZSB0aGUgbGF0ZXN0IGhhc2ggY2hhbmdlcy4gV2l0aCB1bmloYXNoIHdlIG1heSBub3QgcmVidWlsZC4KKyMgZVNESyB3aGljaCB1c2VzIHRoaXMgaXMgbm9zdGFtcCBhbnl3YXkKK2RvX2xvY2tlZF9zaWdzW25vc3RhbXBdID0gIjEiCiAKIHB5dGhvbiBkb19sb2NrZWRfc2lncygpIHsKICAgICBpbXBvcnQgb2UuY29weV9idWlsZHN5c3RlbQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL25hdGl2ZXNkay1idWlsZHRvb2xzLXBlcmwtZHVtbXkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbmF0aXZlc2RrLWJ1aWxkdG9vbHMtcGVybC1kdW1teS5iYgppbmRleCA2YTg3NDhhLi5jZmE0MWM0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbmF0aXZlc2RrLWJ1aWxkdG9vbHMtcGVybC1kdW1teS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbmF0aXZlc2RrLWJ1aWxkdG9vbHMtcGVybC1kdW1teS5iYgpAQCAtMSw2ICsxLDYgQEAKIERVTU1ZQVJDSCA9ICJidWlsZHRvb2xzLWR1bW15LSR7U0RLUEtHU1VGRklYfSIKIAotRFVNTVlQUk9WSURFUyA9ICJcCitEVU1NWVBST1ZJREVTX1BBQ0tBR0VTID0gIlwKICAgICBuYXRpdmVzZGstcGVybCBcCiAgICAgbmF0aXZlc2RrLWxpYnhtbC1wYXJzZXItcGVybCBcCiAgICAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWJ5dGVzIFwKQEAgLTE1LDEyICsxNSwxOCBAQAogICAgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1maWxlLWZpbmQgXAogICAgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1maWxlLWdsb2IgXAogICAgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1maWxlLXBhdGggXAorICAgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1maWxlLXNwZWMgXAogICAgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1maWxlLXN0YXQgXAogICAgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyBcCiAgICAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLWlvLWZpbGUgXAorICAgIG5hdGl2ZXNkay1wZXJsLW1vZHVsZS1vdmVybG9hZGluZyBcCiAgICAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLXBvc2l4IFwKICAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtdGhyZWFkLXF1ZXVlIFwKICAgICBuYXRpdmVzZGstcGVybC1tb2R1bGUtdGhyZWFkcyBcCisgICAgbmF0aXZlc2RrLXBlcmwtbW9kdWxlLXdhcm5pbmdzIFwKKyIKKworRFVNTVlQUk9WSURFUyA9ICJcCiAgICAgL3Vzci9iaW4vcGVybCBcCiAgICAgIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvbmF0aXZlc2RrLXNkay1wcm92aWRlcy1kdW1teS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9uYXRpdmVzZGstc2RrLXByb3ZpZGVzLWR1bW15LmJiCmluZGV4IGI4OTFlZmEuLjI5ZjRkZDMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9uYXRpdmVzZGstc2RrLXByb3ZpZGVzLWR1bW15LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9uYXRpdmVzZGstc2RrLXByb3ZpZGVzLWR1bW15LmJiCkBAIC0xLDEwICsxLDEzIEBACiBEVU1NWUFSQ0ggPSAic2RrLXByb3ZpZGVzLWR1bW15LSR7U0RLUEtHU1VGRklYfSIKIAorRFVNTVlQUk9WSURFU19QQUNLQUdFUyA9ICJcCisgICAgcGtnY29uZmlnIFwKKyIKKwogIyBBZGQgL2Jpbi9zaD8KIERVTU1ZUFJPVklERVMgPSAiXAogICAgIC9iaW4vYmFzaCBcCiAgICAgL3Vzci9iaW4vZW52IFwKLSAgICBwa2djb25maWcgXAogICAgIGxpYkdMLnNvKCkoNjRiaXQpIFwKICAgICBsaWJHTC5zbyBcCiAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvcGFja2FnZS1pbmRleC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9wYWNrYWdlLWluZGV4LmJiCmluZGV4IGE0MTIzYjcuLjk4YzViY2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9wYWNrYWdlLWluZGV4LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS9wYWNrYWdlLWluZGV4LmJiCkBAIC0xMiw2ICsxMiw3IEBACiBkZWx0YXNrIGRvX2NvbmZpZ3VyZQogZGVsdGFzayBkb19jb21waWxlCiBkZWx0YXNrIGRvX2luc3RhbGwKK2RlbHRhc2sgZG9fcG9wdWxhdGVfbGljCiBkZWx0YXNrIGRvX3BvcHVsYXRlX3N5c3Jvb3QKIAogZG9fcGFja2FnZV9pbmRleFtub3N0YW1wXSA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3RhcmdldC1zZGstcHJvdmlkZXMtZHVtbXkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdGFyZ2V0LXNkay1wcm92aWRlcy1kdW1teS5iYgppbmRleCA4N2I4YmZhLi5lM2JlZWI3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdGFyZ2V0LXNkay1wcm92aWRlcy1kdW1teS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvdGFyZ2V0LXNkay1wcm92aWRlcy1kdW1teS5iYgpAQCAtNDgsNyArNDgsNiBAQAogIgogCiBEVU1NWVBST1ZJREVTID0gIlwKLSAgICAke0AnICcuam9pbihbbXVsdGlsaWJfcGtnX2V4dGVuZChkLCBwa2cpIGZvciBwa2cgaW4gZC5nZXRWYXIoJ0RVTU1ZUFJPVklERVNfUEFDS0FHRVMnKS5zcGxpdCgpXSl9IFwKICAgICAvYmluL3NoIFwKICAgICAvYmluL2Jhc2ggXAogICAgIC91c3IvYmluL2VudiBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvd2ljLXRvb2xzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tZXRhL3dpYy10b29scy5iYgppbmRleCAwOWViNDA5Li44YWViOTQyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL21ldGEvd2ljLXRvb2xzLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbWV0YS93aWMtdG9vbHMuYmIKQEAgLTYsNyArNiw3IEBACiAgICAgICAgICAgIHBhcnRlZC1uYXRpdmUgc3lzbGludXgtbmF0aXZlIGdwdGZkaXNrLW5hdGl2ZSBkb3Nmc3Rvb2xzLW5hdGl2ZSBcCiAgICAgICAgICAgIG10b29scy1uYXRpdmUgYm1hcC10b29scy1uYXRpdmUgZ3J1Yi1lZmktbmF0aXZlIGNkcnRvb2xzLW5hdGl2ZSBcCiAgICAgICAgICAgIGJ0cmZzLXRvb2xzLW5hdGl2ZSBzcXVhc2hmcy10b29scy1uYXRpdmUgcHNldWRvLW5hdGl2ZSBcCi0gICAgICAgICAgIGUyZnNwcm9ncy1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUgXAorICAgICAgICAgICBlMmZzcHJvZ3MtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIHRhci1uYXRpdmVcCiAgICAgICAgICAgICIKIERFUEVORFNfYXBwZW5kX3g4NiA9ICIgc3lzbGludXggZ3J1Yi1lZmkgc3lzdGVtZC1ib290IgogREVQRU5EU19hcHBlbmRfeDg2LTY0ID0gIiBzeXNsaW51eCBncnViLWVmaSBzeXN0ZW1kLWJvb3QiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvMDAwMS1SZW1vdmUtdXNpbmctLmVuZC1kaXJlY3RpdmUtd2l0aC1jbGFuZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC8wMDAxLVJlbW92ZS11c2luZy0uZW5kLWRpcmVjdGl2ZS13aXRoLWNsYW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJlNzljYjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvMDAwMS1SZW1vdmUtdXNpbmctLmVuZC1kaXJlY3RpdmUtd2l0aC1jbGFuZy5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIGI2NzMyZjY4ODQ4ZWNjOGZmMDEwNTRiZjdhZWE3MGEyNDFjMzcxMTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxMCBBcHIgMjAyMCAxMToyMzozOSAtMDcwMAorU3ViamVjdDogW1BBVENIXSBSZW1vdmUgdXNpbmcgLmVuZCBkaXJlY3RpdmUgd2l0aCBjbGFuZworCitDbGFuZyBkb2VzIG5vdCBzdXBwb3J0IHRoaXMgYXNtIGRpcmVjdGl2ZQorRml4ZXMgSXNzdWUgIzE5CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20va2FuaWluaS9saWJ1Y29udGV4dC9wdWxsLzIwXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGFyY2gvY29tbW9uL2NvbW1vbi1kZWZzLmggfCA1ICsrKystCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvYXJjaC9jb21tb24vY29tbW9uLWRlZnMuaCBiL2FyY2gvY29tbW9uL2NvbW1vbi1kZWZzLmgKK2luZGV4IGJmMmZiOGMuLjYxODExNmIgMTAwNjQ0CistLS0gYS9hcmNoL2NvbW1vbi9jb21tb24tZGVmcy5oCisrKysgYi9hcmNoL2NvbW1vbi9jb21tb24tZGVmcy5oCitAQCAtMjgsMTAgKzI4LDEzIEBACisgCUVOVChfX3Byb2MpCQkJCQlcCisgX19wcm9jOgkJCQkJCQlcCisgCVNFVFVQX0ZSQU1FKF9fcHJvYykKKy0KKysjaWZkZWYgX19jbGFuZ19fCisrI2RlZmluZSBFTkQoX19wcm9jKQorKyNlbHNlCisgI2RlZmluZSBFTkQoX19wcm9jKQkJCQkJXAorIAkuZW5kCV9fcHJvYzsJCQkJCVwKKyAJLnNpemUJX19wcm9jLC4tX19wcm9jOworKyNlbmRpZgorIAorICNkZWZpbmUgQUxJQVMoX19hbGlhcywgX19yZWFsKQkJCQlcCisgCS53ZWFrCV9fYWxpYXM7CQkJCVwKKy0tIAorMi4yNi4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9saWJ1Y29udGV4dF9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbGlidWNvbnRleHRfZ2l0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVjOTg4ZjEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbGlidWNvbnRleHRfZ2l0LmJiCkBAIC0wLDAgKzEsNjMgQEAKKyMgQ29weXJpZ2h0IChDKSAyMDE5IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisjIFJlbGVhc2VkIHVuZGVyIHRoZSBNSVQgbGljZW5zZSAoc2VlIENPUFlJTkcuTUlUIGZvciB0aGUgdGVybXMpCisKK1NVTU1BUlkgPSAidWNvbnRleHQgaW1wbGVtZW50YXRpb24gZmVhdHVyaW5nIGdsaWJjLWNvbXBhdGlibGUgQUJJIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2thbmlpbmkvbGlidWNvbnRleHQiCitMSUNFTlNFID0gIklTQyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTZlZWQwMWZhMGU2NzNjNzZmNWE1NzE1NDM4ZjY1YjFkIgorU0VDVElPTiA9ICJsaWJzIgorREVQRU5EUyA9ICIiCisKK1BWID0gIjAuMTArJHtTUkNQVn0iCitTUkNSRVYgPSAiMTlmYTFiYmZjMjZlZmI5MjE0N2I1ZTg1Y2MwY2EwMmEwZTgzNzU2MSIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9rYW5paW5pL2xpYnVjb250ZXh0IFwKKyIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworQ09NUEFUSUJMRV9IT1NUID0gIi4qLW11c2wuKiIKKwordmFsaWRfYXJjaHMgPSAiIFwKKyAgICB4ODYgeDg2XzY0ICBcCisgICAgcHBjIHBwYzY0ICAgXAorICAgIG1pcHMgbWlwczY0IFwKKyAgICBhcm0gYWFyY2g2NCBcCisgICAgczM5MHggICAgICAgXAorIgorCitkZWYgbWFwX2tlcm5lbF9hcmNoKGEsIGQpOgorICAgIGltcG9ydCByZQorCisgICAgdmFsaWRfYXJjaHMgPSBkLmdldFZhcigndmFsaWRfYXJjaHMnKS5zcGxpdCgpCisKKyAgICBpZiBhIGluIHZhbGlkX2FyY2hzOiAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gYQorICAgIGVsaWYgcmUubWF0Y2goJyhpLjg2fGF0aGxvbikkJywgYSk6ICAgICAgICAgICAgIHJldHVybiAneDg2JworICAgIGVsaWYgcmUubWF0Y2goJ3g4Ni42NCQnLCBhKTogICAgICAgICAgICAgICAgICAgIHJldHVybiAneDg2XzY0JworICAgIGVsaWYgcmUubWF0Y2goJ2FybWViJCcsIGEpOiAgICAgICAgICAgICAgICAgICAgIHJldHVybiAnYXJtJworICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjQkJywgYSk6ICAgICAgICAgICAgICAgICAgIHJldHVybiAnYWFyY2g2NCcKKyAgICBlbGlmIHJlLm1hdGNoKCdhYXJjaDY0X2JlJCcsIGEpOiAgICAgICAgICAgICAgICByZXR1cm4gJ2FhcmNoNjQnCisgICAgZWxpZiByZS5tYXRjaCgnYWFyY2g2NF9pbHAzMiQnLCBhKTogICAgICAgICAgICAgcmV0dXJuICdhYXJjaDY0JworICAgIGVsaWYgcmUubWF0Y2goJ2FhcmNoNjRfYmVfaWxwMzIkJywgYSk6ICAgICAgICAgIHJldHVybiAnYWFyY2g2NCcKKyAgICBlbGlmIHJlLm1hdGNoKCdtaXBzKGlzYXwpKDMyfCkocjZ8KShlbHwpJCcsIGEpOiByZXR1cm4gJ21pcHMnCisgICAgZWxpZiByZS5tYXRjaCgnbWlwcyhpc2F8KTY0KHI2fCkoZWx8KSQnLCBhKTogICAgcmV0dXJuICdtaXBzNjQnCisgICAgZWxpZiByZS5tYXRjaCgncChwY3xvd2VycGMpJywgYSk6ICAgICAgICAgICAgICAgcmV0dXJuICdwcGMnCisgICAgZWxpZiByZS5tYXRjaCgncChwYzY0fG93ZXJwYzY0KScsIGEpOiAgICAgICAgICAgcmV0dXJuICdwcGM2NCcKKyAgICBlbGlmIHJlLm1hdGNoKCdyaXNjdjY0JCcsIGEpOiAgICAgICAgICAgICAgICAgICByZXR1cm4gJ3Jpc2N2NjQnCisgICAgZWxzZToKKyAgICAgICAgaWYgbm90IGQuZ2V0VmFyKCJUQVJHRVRfT1MiKS5zdGFydHN3aXRoKCJsaW51eCIpOgorICAgICAgICAgICAgcmV0dXJuIGEKKyAgICAgICAgYmIuZXJyb3IoImNhbm5vdCBtYXAgJyVzJyB0byBhIGxpbnV4IGtlcm5lbCBhcmNoaXRlY3R1cmUiICUgYSkKKworZXhwb3J0IEFSQ0ggPSAiJHtAbWFwX2tlcm5lbF9hcmNoKGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcpLCBkKX0iCisKK0NGTEFHUyArPSAiLUlhcmNoLyR7QVJDSH0gLUlhcmNoL2NvbW1vbiIKKworRVhUUkFfT0VNQUtFID0gIkNGTEFHUz0nJHtDRkxBR1N9JyBMREZMQUdTPScke0xERkxBR1N9JyBMSUJESVI9JyR7YmFzZV9saWJkaXJ9JyIKKworZG9fY29tcGlsZSgpIHsKKyAgICBvZV9ydW5tYWtlIEFSQ0g9JHtBUkNIfQorfQorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgQVJDSD0iJHtBUkNIfSIgREVTVERJUj0iJHtEfSIgaW5zdGFsbAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2wuaW5jCmluZGV4IDA2ODNiZjguLmJkY2U0MTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC5pbmMKQEAgLTksNyArOSw3IEBACiBIT01FUEFHRSA9ICJodHRwOi8vd3d3Lm11c2wtbGliYy5vcmcvIgogTElDRU5TRSA9ICJNSVQiCiBTRUNUSU9OID0gImxpYnMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZUklHSFQ7bWQ1PWQwZmUyYmUxN2JjNDVmZjRhNDJhZGUxYzEzZWQ2MzQwIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWVJJR0hUO21kNT1mOTVlZTg0OGEwOGFkMjUzYzA0NzIzZGEwMGNlZGIwMSIKIAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKIApAQCAtMjUsMyArMjUsNyBAQAogQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCiBBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKIAorIyBFbmFibGUgb3V0IG9mIHRyZWUgYnVpbGQKK0IgPSAiJHtXT1JLRElSfS9idWlsZCIKKworZG9fY29uZmlndXJlW2NsZWFuZGlyc10gPSAiJHtCfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLzAwMDEtcmlzY3YtRGVmaW5lLXNpZ2NvbnRleHQtYWdhaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbC8wMDAxLXJpc2N2LURlZmluZS1zaWdjb250ZXh0LWFnYWluLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmY2IzMjRlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsLzAwMDEtcmlzY3YtRGVmaW5lLXNpZ2NvbnRleHQtYWdhaW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1jb21taXQgYTA5OTNmOGYwZjE2MTQyM2VjZGNiNzU0ZjI4MmZmZDJmZTQ3YTdiNQotQXV0aG9yOiBSaWNoIEZlbGtlciA8ZGFsaWFzQGFlcmlmYWwuY3g+Ci1EYXRlOiAgIFdlZCBPY3QgMiAwOToyODowMyAyMDE5IC0wNDAwCi0KLSAgICByZWludHJvZHVjZSByaXNjdjY0IHN0cnVjdCBzaWdjb250ZXh0Ci0gICAgCi0gICAgY29tbWl0IGFiM2ViODlhOGI4MzM1M2NkYWFiMTJlZDAxN2E2N2E3NzMwZjkwZTkgcmVtb3ZlZCBpdCBhcyBwYXJ0IG9mCi0gICAgY29ycmVjdGluZyB0aGUgbWNvbnRleHRfdCBkZWZpbml0aW9uLCBidXQgdGhlcmUgaXMgc3RpbGwgY29kZSB1c2luZwotICAgIHN0cnVjdCBzaWdjb250ZXh0IGFuZCBleHBlY3RpbmcgdGhlIG1lbWJlciBuYW1lcyBwcmVzZW50IGluIGl0LCBtb3N0Ci0gICAgbm90YWJseSBsaWJnY2NfZWguIGFsbW9zdCBhbGwgc3VjaCB1c2FnZSBpcyBpbmNvcnJlY3QsIGJ1dCBicmluZyBiYWNrCi0gICAgc3RydWN0IHNpZ2NvbnRleHQgYXQgbGVhc3QgZm9yIG5vdyBzbyBhcyBub3QgdG8gaW50cm9kdWNlIHJlZ3Jlc3Npb25zLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1kaWZmIC0tZ2l0IGEvYXJjaC9yaXNjdjY0L2JpdHMvc2lnbmFsLmggYi9hcmNoL3Jpc2N2NjQvYml0cy9zaWduYWwuaAotaW5kZXggMDNmZTQ4YzEuLjJmZjRiZTMwIDEwMDY0NAotLS0tIGEvYXJjaC9yaXNjdjY0L2JpdHMvc2lnbmFsLmgKLSsrKyBiL2FyY2gvcmlzY3Y2NC9iaXRzL3NpZ25hbC5oCi1AQCAtNiwxMiArNiw2IEBACi0gIyBkZWZpbmUgU0lHU1RLU1ogODE5MgotICNlbmRpZgotIAotLSNpZiBkZWZpbmVkKF9HTlVfU09VUkNFKSB8fCBkZWZpbmVkKF9CU0RfU09VUkNFKQotLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBncmVnX3Q7Ci0tdHlwZWRlZiB1bnNpZ25lZCBsb25nIGdyZWdzZXRfdFszMl07Ci0tdHlwZWRlZiB1bmlvbiBfX3Jpc2N2X21jX2ZwX3N0YXRlIGZwcmVnc2V0X3Q7Ci0tI2VuZGlmCi0tCi0gdHlwZWRlZiB1bnNpZ25lZCBsb25nIF9fcmlzY3ZfbWNfZ3Bfc3RhdGVbMzJdOwotIAotIHN0cnVjdCBfX3Jpc2N2X21jX2ZfZXh0X3N0YXRlIHsKLUBAIC00MSw2ICszNSwxNiBAQCB0eXBlZGVmIHN0cnVjdCBtY29udGV4dF90IHsKLSAJdW5pb24gX19yaXNjdl9tY19mcF9zdGF0ZSBfX2ZwcmVnczsKLSB9IG1jb250ZXh0X3Q7Ci0gCi0rI2lmIGRlZmluZWQoX0dOVV9TT1VSQ0UpIHx8IGRlZmluZWQoX0JTRF9TT1VSQ0UpCi0rdHlwZWRlZiB1bnNpZ25lZCBsb25nIGdyZWdfdDsKLSt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgZ3JlZ3NldF90WzMyXTsKLSt0eXBlZGVmIHVuaW9uIF9fcmlzY3ZfbWNfZnBfc3RhdGUgZnByZWdzZXRfdDsKLStzdHJ1Y3Qgc2lnY29udGV4dCB7Ci0rCWdyZWdzZXRfdCBncmVnczsKLSsJZnByZWdzZXRfdCBmcHJlZ3M7Ci0rfTsKLSsjZW5kaWYKLSsKLSBzdHJ1Y3Qgc2lnYWx0c3RhY2sgewotIAl2b2lkICpzc19zcDsKLSAJaW50IHNzX2ZsYWdzOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9tdXNsL211c2xfZ2l0LmJiCmluZGV4IGFhY2ZmNzkuLjgyMzc5ZmQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbXVzbC9tdXNsX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL211c2wvbXVzbF9naXQuYmIKQEAgLTQsOSArNCw5IEBACiByZXF1aXJlIG11c2wuaW5jCiBpbmhlcml0IGxpbnV4bG9hZGVyCiAKLVNSQ1JFViA9ICIyYzI0NzdkYTlhNTUzYzBiOWIyZmExODA3M2E1ZGNkYmU2ZDM5NWFmIgorU1JDUkVWID0gIjA0MGMxZDE2YjQ2OGM1MGMwNGZjOTRlZGZmNTIxZjE2Mzc3MDgzMjgiCiAKLUJBU0VWRVIgPSAiMS4xLjIzIgorQkFTRVZFUiA9ICIxLjIuMCIKIAogUFYgPSAiJHtCQVNFVkVSfStnaXQke1NSQ1BWfSIKIApAQCAtMTUsNyArMTUsNiBAQAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQubXVzbC1saWJjLm9yZy9tdXNsIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1keW5hbWljLWxpbmtlci1hLXJlbGF0aXZlLXN5bWxpbmstdG8tbGliYy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWxkc28tVXNlLXN5c2xpYmRpci1hbmQtbGliZGlyLWFzLWRlZmF1bHQtcGF0aGVzLXRvLWwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1yaXNjdi1EZWZpbmUtc2lnY29udGV4dC1hZ2Fpbi5wYXRjaCBcCiAgICAgICAgICAgIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpAQCAtMzAsNiArMjksNyBAQAogICAgICAgICAgICBsaWJzc3Atbm9uc2hhcmVkIFwKICAgICAgICAgICAiCiBHTElCQ19MRFNPID0gIiR7QGdldF9nbGliY19sb2FkZXIoZCl9IgorTVVTTF9MRFNPX0FSQ0ggPSAiJHtAZ2V0X211c2xfbG9hZGVyX2FyY2goZCl9IgogCiBleHBvcnQgQ1JPU1NfQ09NUElMRT0iJHtUQVJHRVRfUFJFRklYfSIKIApAQCAtNDksNyArNDksNyBAQAogICAgIC0tYmluZGlyPSR7YmluZGlyfSBcCiAgICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKICAgICAtLWluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfSBcCi0gICAgLS1zeXNsaWJkaXI9JHtiYXNlX2xpYmRpcn0gXAorICAgIC0tc3lzbGliZGlyPS9saWIgXAogIgogCiBkb19jb25maWd1cmUoKSB7CkBAIC02MiwzMiArNjIsMjggQEAKIAogZG9faW5zdGFsbCgpIHsKIAlvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0nJHtEfScKLQotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfQorCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyfSAke0R9JHtiYXNlX2xpYmRpcn0gJHtEfSR7c3lzY29uZmRpcn0KKyAgICAgICAgZWNobyAiJHtiYXNlX2xpYmRpcn0iID4gJHtEfSR7c3lzY29uZmRpcn0vbGQtbXVzbC0ke01VU0xfTERTT19BUkNIfS5wYXRoCisgICAgICAgIGVjaG8gIiR7bGliZGlyfSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vbGQtbXVzbC0ke01VU0xfTERTT19BUkNIfS5wYXRoCiAJcm0gLWYgJHtEfSR7YmluZGlyfS9sZGQgJHtEfSR7R0xJQkNfTERTT30KIAlsbnIgJHtEfSR7bGliZGlyfS9saWJjLnNvICR7RH0ke2JpbmRpcn0vbGRkCiAJbG5yICR7RH0ke2xpYmRpcn0vbGliYy5zbyAke0R9JHtHTElCQ19MRFNPfQotCWZvciBsIGluIGNyeXB0IGRsIG0gcHRocmVhZCByZXNvbHYgcnQgdXRpbCB4bmV0Ci0JZG8KLQkJbG4gLXNmIGxpYmMuc28gJHtEfSR7bGliZGlyfS9saWIkbC5zbwotCWRvbmUKLQlmb3IgaSBpbiBsaWJjLnNvLjYgbGliY3J5cHQuc28uMSBsaWJkbC5zby4yIGxpYm0uc28uNiBsaWJwdGhyZWFkLnNvLjAgbGlicmVzb2x2LnNvLjIgbGlicnQuc28uMSBsaWJ1dGlsLnNvLjE7IGRvCi0JCWxuIC1zZiBsaWJjLnNvICR7RH0ke2xpYmRpcn0vJGkKLQlkb25lCiB9CiAKIFBBQ0tBR0VTID0rICIke1BOfS1nbGliYy1jb21wYXQiCiAKLUZJTEVTXyR7UE59LWdsaWJjLWNvbXBhdCArPSAiXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJjLnNvLjYgJHtsaWJkaXJ9L2xpYmNyeXB0LnNvLjEgXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJkbC5zby4yICR7bGliZGlyfS9saWJtLnNvLjYgXAotICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJwdGhyZWFkLnNvLjAgJHtsaWJkaXJ9L2xpYnJlc29sdi5zby4yIFwKLSAgICAgICAgICAgICAgICAke2xpYmRpcn0vbGlicnQuc28uMSAke2xpYmRpcn0vbGlidXRpbC5zby4xIFwKLSAgICAgICAgICAgICAgICAke0dMSUJDX0xEU099IFwKLSAgICAgICAgICAgICAgICAiCitGSUxFU18ke1BOfSArPSAiL2xpYi9sZC1tdXNsLSR7TVVTTF9MRFNPX0FSQ0h9LnNvLjEgJHtzeXNjb25mZGlyfS9sZC1tdXNsLSR7TVVTTF9MRFNPX0FSQ0h9LnBhdGgiCitGSUxFU18ke1BOfS1nbGliYy1jb21wYXQgKz0gIiR7R0xJQkNfTERTT30iCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgPSAiJHtsaWJkaXJ9L2xpYmMuYSIKK0ZJTEVTXyR7UE59LWRldiA9KyAiJHtsaWJkaXJ9L2xpYmNyeXB0LmEgJHtsaWJkaXJ9L2xpYmRsLmEgJHtsaWJkaXJ9L2xpYm0uYSBcCisgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJwdGhyZWFkLmEgJHtsaWJkaXJ9L2xpYnJlc29sdi5hIFwKKyAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L2xpYnJ0LmEgJHtsaWJkaXJ9L2xpYnV0aWwuYSAke2xpYmRpcn0vbGlieG5ldC5hIFwKKyAgICAgICAgICAgICAgICAgICAiCiAKIFJERVBFTkRTXyR7UE59LWRldiArPSAibGludXgtbGliYy1oZWFkZXJzLWRldiBic2QtaGVhZGVycy1kZXYgbGlic3NwLW5vbnNoYXJlZC1zdGF0aWNkZXYiCiBSUFJPVklERVNfJHtQTn0tZGV2ICs9ICJsaWJjLWRldiB2aXJ0dWFsLWxpYmMtZGV2IgogUlBST1ZJREVTXyR7UE59ICs9ICJsZGQgbGlic2VnZmF1bHQgcnRsZChHTlVfSEFTSCkiCiAKIExFQURfU09OQU1FID0gImxpYmMuc28iCitJTlNBTkVfU0tJUF8ke1BOfS1kZXYgPSAic3RhdGljZGV2IgorSU5TQU5FX1NLSVBfJHtQTn0gPSAibGliZGlyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL2ZpbGVzLzAwMDEtbmN1cnNlcy1zZWxlY3RpdmUtYmFja3BvcnQtb2YtMjAxOTEwMTItcGF0Y2gucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMS1uY3Vyc2VzLXNlbGVjdGl2ZS1iYWNrcG9ydC1vZi0yMDE5MTAxMi1wYXRjaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzg3MGM0Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvZmlsZXMvMDAwMS1uY3Vyc2VzLXNlbGVjdGl2ZS1iYWNrcG9ydC1vZi0yMDE5MTAxMi1wYXRjaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2OSArMCwwIEBACi1Gcm9tIDA2NGI3N2YxNzMzMzdhYTc5MGYxY2VjMGQ3NDFiZmJjNjFhMzNkMzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUcmV2b3IgR2FtYmxpbiA8dHJldm9yLmdhbWJsaW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgMTggT2N0IDIwMTkgMDk6NTc6NDMgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gbmN1cnNlczogc2VsZWN0aXZlIGJhY2twb3J0IG9mIDIwMTkxMDEyIHBhdGNoCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc2Fsc2EuZGViaWFuLm9yZy9kZWJpYW4vbmN1cnNlcy9jb21taXQvMjQzOTA4YjFlM2Q4MV0KLQotQ29udGVudHMgb2YgdGhlIHVwc3RyZWFtIHBhdGNoIHRoYXQgYXJlIG5vdCBhcHBsaWVkIHRvIGNvbXBfaGFzaC5jLCAKLXBhcnNlX2VudHJ5LmMsIG9yIGR1bXBfZW50cnkuYyBoYXZlIGJlZW4gb21pdHRlZC4KLQotQ1ZFOiBDVkUtMjAxOS0xNzU5NAotQ1ZFOiBDVkUtMjAxOS0xNzU5NQotCi1TaWduZWQtb2ZmLWJ5OiBUcmV2b3IgR2FtYmxpbiAgPHRyZXZvci5nYW1ibGluQHdpbmRyaXZlci5jb20+Ci0KLS0tLQotIG5jdXJzZXMvdGluZm8vY29tcF9oYXNoLmMgICB8IDE0ICsrKysrKysrKystLS0tCi0gbmN1cnNlcy90aW5mby9wYXJzZV9lbnRyeS5jIHwgMzIgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KLSBwcm9ncy9kdW1wX2VudHJ5LmMgICAgICAgICAgfCAgNyArKysrLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vY29tcF9oYXNoLmMgYi9uY3Vyc2VzL3RpbmZvL2NvbXBfaGFzaC5jCi1pbmRleCAyMWYxNjVjYS4uYTYyZDM4ZjkgMTAwNjQ0Ci0tLS0gYS9uY3Vyc2VzL3RpbmZvL2NvbXBfaGFzaC5jCi0rKysgYi9uY3Vyc2VzL3RpbmZvL2NvbXBfaGFzaC5jCi1AQCAtNDQsNyArNDQsNyBAQAotICNpbmNsdWRlIDx0aWMuaD4KLSAjaW5jbHVkZSA8aGFzaHNpemUuaD4KLSAKLS1NT0RVTEVfSUQoIiRJZDogY29tcF9oYXNoLmMsdiAxLjQ5IDIwMTkvMDMvMTAgMDA6MDY6NDggdG9tIEV4cCAkIikKLStNT0RVTEVfSUQoIiRJZDogY29tcF9oYXNoLmMsdiAxLjUxIDIwMTkvMTAvMTIgMTY6MzI6MTMgdG9tIEV4cCAkIikKLSAKLSAvKgotICAqIEZpbmRzIHRoZSBlbnRyeSBmb3IgdGhlIGdpdmVuIHN0cmluZyBpbiB0aGUgaGFzaCB0YWJsZSBpZiBwcmVzZW50LgotQEAgLTYzLDcgKzYzLDkgQEAgX25jX2ZpbmRfZW50cnkoY29uc3QgY2hhciAqc3RyaW5nLAotIAotICAgICBoYXNodmFsdWUgPSBkYXRhLT5oYXNoX29mKHN0cmluZyk7Ci0gCi0tICAgIGlmIChkYXRhLT50YWJsZV9kYXRhW2hhc2h2YWx1ZV0gPj0gMCkgewotKyAgICBpZiAoaGFzaHZhbHVlID49IDAKLSsJJiYgKHVuc2lnbmVkKSBoYXNodmFsdWUgPCBkYXRhLT50YWJsZV9zaXplCi0rCSYmIGRhdGEtPnRhYmxlX2RhdGFbaGFzaHZhbHVlXSA+PSAwKSB7Ci0gCi0gCXJlYWxfdGFibGUgPSBfbmNfZ2V0X3RhYmxlKHRlcm1jYXApOwotIAlwdHIgPSByZWFsX3RhYmxlICsgZGF0YS0+dGFibGVfZGF0YVtoYXNodmFsdWVdOwotQEAgLTk2LDcgKzk4LDkgQEAgX25jX2ZpbmRfdHlwZV9lbnRyeShjb25zdCBjaGFyICpzdHJpbmcsCi0gICAgIGNvbnN0IEhhc2hEYXRhICpkYXRhID0gX25jX2dldF9oYXNoX2luZm8odGVybWNhcCk7Ci0gICAgIGludCBoYXNodmFsdWUgPSBkYXRhLT5oYXNoX29mKHN0cmluZyk7Ci0gCi0tICAgIGlmIChkYXRhLT50YWJsZV9kYXRhW2hhc2h2YWx1ZV0gPj0gMCkgewotKyAgICBpZiAoaGFzaHZhbHVlID49IDAKLSsJJiYgKHVuc2lnbmVkKSBoYXNodmFsdWUgPCBkYXRhLT50YWJsZV9zaXplCi0rCSYmIGRhdGEtPnRhYmxlX2RhdGFbaGFzaHZhbHVlXSA+PSAwKSB7Ci0gCWNvbnN0IHN0cnVjdCBuYW1lX3RhYmxlX2VudHJ5ICpjb25zdCB0YWJsZSA9IF9uY19nZXRfdGFibGUodGVybWNhcCk7Ci0gCi0gCXB0ciA9IHRhYmxlICsgZGF0YS0+dGFibGVfZGF0YVtoYXNodmFsdWVdOwotQEAgLTEyNCw3ICsxMjgsOSBAQCBfbmNfZmluZF91c2VyX2VudHJ5KGNvbnN0IGNoYXIgKnN0cmluZykKLSAKLSAgICAgaGFzaHZhbHVlID0gZGF0YS0+aGFzaF9vZihzdHJpbmcpOwotIAotLSAgICBpZiAoZGF0YS0+dGFibGVfZGF0YVtoYXNodmFsdWVdID49IDApIHsKLSsgICAgaWYgKGhhc2h2YWx1ZSA+PSAwCi0rCSYmICh1bnNpZ25lZCkgaGFzaHZhbHVlIDwgZGF0YS0+dGFibGVfc2l6ZQotKwkmJiBkYXRhLT50YWJsZV9kYXRhW2hhc2h2YWx1ZV0gPj0gMCkgewotIAotIAlyZWFsX3RhYmxlID0gX25jX2dldF91c2VyZGVmc190YWJsZSgpOwotIAlwdHIgPSByZWFsX3RhYmxlICsgZGF0YS0+dGFibGVfZGF0YVtoYXNodmFsdWVdOwotZGlmZiAtLWdpdCBhL25jdXJzZXMvdGluZm8vcGFyc2VfZW50cnkuYyBiL25jdXJzZXMvdGluZm8vcGFyc2VfZW50cnkuYwotaW5kZXggZjhjY2E4YjUuLjA2NDM3NmM1IDEwMDY0NAotLS0tIGEvbmN1cnNlcy90aW5mby9wYXJzZV9lbnRyeS5jCi0rKysgYi9uY3Vyc2VzL3RpbmZvL3BhcnNlX2VudHJ5LmMKLUBAIC00Nyw3ICs0Nyw3IEBACi0gI2luY2x1ZGUgPGN0eXBlLmg+Ci0gI2luY2x1ZGUgPHRpYy5oPgotIAotLU1PRFVMRV9JRCgiJElkOiBwYXJzZV9lbnRyeS5jLHYgMS45NyAyMDE5LzA4LzAzIDIzOjEwOjM4IHRvbSBFeHAgJCIpCi0rTU9EVUxFX0lEKCIkSWQ6IHBhcnNlX2VudHJ5LmMsdiAxLjk4IDIwMTkvMTAvMTIgMDA6NTA6MzEgdG9tIEV4cCAkIikKLSAKLSAjaWZkZWYgTElOVAotIHN0YXRpYyBzaG9ydCBjb25zdCBwYXJhbWV0cml6ZWRbXSA9Ci1AQCAtNjU0LDEyICs2NTQsMTIgQEAgX25jX2NhcGNtcChjb25zdCBjaGFyICpzLCBjb25zdCBjaGFyICp0KQotIH0KLSAKLSBzdGF0aWMgdm9pZAotLWFwcGVuZF9hY3MwKHN0cmluZ19kZXNjICogZHN0LCBpbnQgY29kZSwgaW50IHNyYykKLSthcHBlbmRfYWNzMChzdHJpbmdfZGVzYyAqIGRzdCwgaW50IGNvZGUsIGNoYXIgKnNyYywgc2l6ZV90IG9mZikKLSB7Ci0tICAgIGlmIChzcmMgIT0gMCkgewotKyAgICBpZiAoc3JjICE9IDAgJiYgb2ZmIDwgc3RybGVuKHNyYykpIHsKLSAJY2hhciB0ZW1wWzNdOwotIAl0ZW1wWzBdID0gKGNoYXIpIGNvZGU7Ci0tCXRlbXBbMV0gPSAoY2hhcikgc3JjOwotKwl0ZW1wWzFdID0gc3JjW29mZl07Ci0gCXRlbXBbMl0gPSAwOwotIAlfbmNfc2FmZV9zdHJjYXQoZHN0LCB0ZW1wKTsKLSAgICAgfQotQEAgLTY2OSw3ICs2NjksNyBAQCBzdGF0aWMgdm9pZAotIGFwcGVuZF9hY3Moc3RyaW5nX2Rlc2MgKiBkc3QsIGludCBjb2RlLCBjaGFyICpzcmMpCi0gewotICAgICBpZiAoVkFMSURfU1RSSU5HKHNyYykgJiYgc3RybGVuKHNyYykgPT0gMSkgewotLQlhcHBlbmRfYWNzMChkc3QsIGNvZGUsICpzcmMpOwotKwlhcHBlbmRfYWNzMChkc3QsIGNvZGUsIHNyYywgMCk7Ci0gICAgIH0KLSB9Ci0gCi1AQCAtMTAzOCwxNyArMTAzOCwxNyBAQCBwb3N0cHJvY2Vzc190ZXJtaW5mbyhURVJNVFlQRTIgKnRwKQotIAlfbmNfc3RyX2luaXQoJnJlc3VsdCwgYnVmMiwgc2l6ZW9mKGJ1ZjIpKTsKLSAJX25jX3NhZmVfc3RyY2F0KCZyZXN1bHQsIGFjc19jaGFycyk7Ci0gCi0tCWFwcGVuZF9hY3MwKCZyZXN1bHQsICdsJywgYm94X2NoYXJzXzFbMF0pOwkvKiBBQ1NfVUxDT1JORVIgKi8KLS0JYXBwZW5kX2FjczAoJnJlc3VsdCwgJ3EnLCBib3hfY2hhcnNfMVsxXSk7CS8qIEFDU19ITElORSAqLwotLQlhcHBlbmRfYWNzMCgmcmVzdWx0LCAnaycsIGJveF9jaGFyc18xWzJdKTsJLyogQUNTX1VSQ09STkVSICovCi0tCWFwcGVuZF9hY3MwKCZyZXN1bHQsICd4JywgYm94X2NoYXJzXzFbM10pOwkvKiBBQ1NfVkxJTkUgKi8KLS0JYXBwZW5kX2FjczAoJnJlc3VsdCwgJ2onLCBib3hfY2hhcnNfMVs0XSk7CS8qIEFDU19MUkNPUk5FUiAqLwotLQlhcHBlbmRfYWNzMCgmcmVzdWx0LCAnbScsIGJveF9jaGFyc18xWzVdKTsJLyogQUNTX0xMQ09STkVSICovCi0tCWFwcGVuZF9hY3MwKCZyZXN1bHQsICd3JywgYm94X2NoYXJzXzFbNl0pOwkvKiBBQ1NfVFRFRSAqLwotLQlhcHBlbmRfYWNzMCgmcmVzdWx0LCAndScsIGJveF9jaGFyc18xWzddKTsJLyogQUNTX1JURUUgKi8KLS0JYXBwZW5kX2FjczAoJnJlc3VsdCwgJ3YnLCBib3hfY2hhcnNfMVs4XSk7CS8qIEFDU19CVEVFICovCi0tCWFwcGVuZF9hY3MwKCZyZXN1bHQsICd0JywgYm94X2NoYXJzXzFbOV0pOwkvKiBBQ1NfTFRFRSAqLwotLQlhcHBlbmRfYWNzMCgmcmVzdWx0LCAnbicsIGJveF9jaGFyc18xWzEwXSk7CS8qIEFDU19QTFVTICovCi0rCWFwcGVuZF9hY3MwKCZyZXN1bHQsICdsJywgYm94X2NoYXJzXzEsIDApOwkvKiBBQ1NfVUxDT1JORVIgKi8KLSsJYXBwZW5kX2FjczAoJnJlc3VsdCwgJ3EnLCBib3hfY2hhcnNfMSwgMSk7CS8qIEFDU19ITElORSAqLwotKwlhcHBlbmRfYWNzMCgmcmVzdWx0LCAnaycsIGJveF9jaGFyc18xLCAyKTsJLyogQUNTX1VSQ09STkVSICovCi0rCWFwcGVuZF9hY3MwKCZyZXN1bHQsICd4JywgYm94X2NoYXJzXzEsIDMpOwkvKiBBQ1NfVkxJTkUgKi8KLSsJYXBwZW5kX2FjczAoJnJlc3VsdCwgJ2onLCBib3hfY2hhcnNfMSwgNCk7CS8qIEFDU19MUkNPUk5FUiAqLwotKwlhcHBlbmRfYWNzMCgmcmVzdWx0LCAnbScsIGJveF9jaGFyc18xLCA1KTsJLyogQUNTX0xMQ09STkVSICovCi0rCWFwcGVuZF9hY3MwKCZyZXN1bHQsICd3JywgYm94X2NoYXJzXzEsIDYpOwkvKiBBQ1NfVFRFRSAqLwotKwlhcHBlbmRfYWNzMCgmcmVzdWx0LCAndScsIGJveF9jaGFyc18xLCA3KTsJLyogQUNTX1JURUUgKi8KLSsJYXBwZW5kX2FjczAoJnJlc3VsdCwgJ3YnLCBib3hfY2hhcnNfMSwgOCk7CS8qIEFDU19CVEVFICovCi0rCWFwcGVuZF9hY3MwKCZyZXN1bHQsICd0JywgYm94X2NoYXJzXzEsIDkpOwkvKiBBQ1NfTFRFRSAqLwotKwlhcHBlbmRfYWNzMCgmcmVzdWx0LCAnbicsIGJveF9jaGFyc18xLCAxMCk7CS8qIEFDU19QTFVTICovCi0gCi0gCWlmIChidWYyWzBdKSB7Ci0gCSAgICBhY3NfY2hhcnMgPSBfbmNfc2F2ZV9zdHIoYnVmMik7Ci1kaWZmIC0tZ2l0IGEvcHJvZ3MvZHVtcF9lbnRyeS5jIGIvcHJvZ3MvZHVtcF9lbnRyeS5jCi1pbmRleCBkMGU0MjBlYy4uOGE0NzA4NGEgMTAwNjQ0Ci0tLS0gYS9wcm9ncy9kdW1wX2VudHJ5LmMKLSsrKyBiL3Byb2dzL2R1bXBfZW50cnkuYwotQEAgLTM5LDcgKzM5LDcgQEAKLSAjaW5jbHVkZSAidGVybXNvcnQuYyIJCS8qIHRoaXMgQyBmaWxlIGlzIGdlbmVyYXRlZCAqLwotICNpbmNsdWRlIDxwYXJhbWV0cml6ZWQuaD4JLyogc28gaXMgdGhpcyAqLwotIAotLU1PRFVMRV9JRCgiJElkOiBkdW1wX2VudHJ5LmMsdiAxLjE3MyAyMDE5LzA1LzExIDIxOjAyOjI0IHRvbSBFeHAgJCIpCi0rTU9EVUxFX0lEKCIkSWQ6IGR1bXBfZW50cnkuYyx2IDEuMTc1IDIwMTkvMTAvMTIgMTU6NTk6MDcgdG9tIEV4cCAkIikKLSAKLSAjZGVmaW5lIERJU0NBUkQoc3RyaW5nKSBzdHJpbmcgPSBBQlNFTlRfU1RSSU5HCi0gI2RlZmluZSBQUklOVEYgKHZvaWQpIHByaW50ZgotQEAgLTExMzYsNyArMTEzNiw4IEBAIGZtdF9lbnRyeShURVJNVFlQRTIgKnR0ZXJtLAotIAkJCQkqZCsrID0gJ1xcJzsKLSAJCQkJKmQgPSAnOic7Ci0gCQkJICAgIH0gZWxzZSBpZiAoKmQgPT0gJ1xcJykgewotLQkJCQkqKytkID0gKnMrKzsKLSsJCQkJaWYgKCgqKytkID0gKnMrKykgPT0gJ1wwJykKLSsJCQkJICAgIGJyZWFrOwotIAkJCSAgICB9Ci0gCQkJICAgIGQrKzsKLSAJCQkgICAgKmQgPSAnXDAnOwotQEAgLTEzOTYsNyArMTM5Nyw3IEBAIG9uZV9vbmVfbWFwcGluZyhjb25zdCBjaGFyICptYXBwaW5nKQotIAotICAgICBpZiAoVkFMSURfU1RSSU5HKG1hcHBpbmcpKSB7Ci0gCWludCBuID0gMDsKLS0Jd2hpbGUgKG1hcHBpbmdbbl0gIT0gJ1wwJykgewotKwl3aGlsZSAobWFwcGluZ1tuXSAhPSAnXDAnICYmIG1hcHBpbmdbbiArIDFdICE9ICdcMCcpIHsKLSAJICAgIGlmIChpc0xpbmUobWFwcGluZ1tuXSkgJiYKLSAJCW1hcHBpbmdbbl0gIT0gbWFwcGluZ1tuICsgMV0pIHsKLSAJCXJlc3VsdCA9IEZBTFNFOwotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXMuaW5jCmluZGV4IDVmMmNjMzUuLjQxNTZiZjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlcy5pbmMKQEAgLTIsNyArMiw3IEBACiBERVNDUklQVElPTiA9ICJTVnI0IGFuZCBYU0ktQ3Vyc2VzIGNvbXBhdGlibGUgY3Vyc2VzIGxpYnJhcnkgYW5kIHRlcm1pbmZvIHRvb2xzIGluY2x1ZGluZyB0aWMsIGluZm9jbXAsIGNhcHRvaW5mby4gU3VwcG9ydHMgY29sb3IsIG11bHRpcGxlIGhpZ2hsaWdodHMsIGZvcm1zLWRyYXdpbmcgY2hhcmFjdGVycywgYW5kIGF1dG9tYXRpYyByZWNvZ25pdGlvbiBvZiBrZXlwYWQgYW5kIGZ1bmN0aW9uLWtleSBzZXF1ZW5jZXMuIEV4dGVuc2lvbnMgaW5jbHVkZSByZXNpemFibGUgd2luZG93cyBhbmQgbW91c2Ugc3VwcG9ydCBvbiBib3RoIHh0ZXJtIGFuZCBMaW51eCBjb25zb2xlIHVzaW5nIHRoZSBncG0gbGlicmFyeS4iCiBIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbmN1cnNlcy9uY3Vyc2VzLmh0bWwiCiBMSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL25jdXJzZXMvYmFzZS92ZXJzaW9uLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNzttZDU9Y2JjMTgwYThjNDRjYTY0MmU5N2MzNTQ1MmZhYjVmNjYiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9uY3Vyc2VzL2Jhc2UvdmVyc2lvbi5jO2JlZ2lubGluZT0xO2VuZGxpbmU9Mjc7bWQ1PTU1MjZmMmYzYTI5ZWRjOTU1MzhiMzY4YTQ3NzFlZGRhIgogU0VDVElPTiA9ICJsaWJzIgogREVQRU5EUyA9ICJuY3Vyc2VzLW5hdGl2ZSIKIERFUEVORFNfY2xhc3MtbmF0aXZlID0gIiIKQEAgLTg3LDYgKzg3LDcgQEAKIAkgICAgICAgIC0tZGlzYWJsZS1ycGF0aC1oYWNrIFwKIAkJJHtFWENPTkZJR19BUkdTfSBcCiAJICAgICAgICAtLXdpdGgtbWFucGFnZS1mb3JtYXQ9bm9ybWFsIFwKKwkgICAgICAgIC0td2l0aG91dC1tYW5wYWdlLXJlbmFtZXMgXAogCSAgICAgICAgLS1kaXNhYmxlLXN0cmlwcGluZyBcCiAJICAgICAgICAiJEAiIHx8IHJldHVybiAxCiAJY2QgLi4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMSsyMDE5MDgwMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmN1cnNlcy9uY3Vyc2VzXzYuMSsyMDE5MDgwMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTYzOGEzNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjErMjAxOTA4MDMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1yZXF1aXJlIG5jdXJzZXMuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXRpYy1oYW5nLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS1yZXByb2R1Y2libGUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2NvbmZpZy5jYWNoZSBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1uY3Vyc2VzLXNlbGVjdGl2ZS1iYWNrcG9ydC1vZi0yMDE5MTAxMi1wYXRjaC5wYXRjaCBcCi0iCi0jIGNvbW1pdCBpZCBjb3JyZXNwb25kcyB0byB0aGUgcmV2aXNpb24gaW4gcGFja2FnZSB2ZXJzaW9uCi1TUkNSRVYgPSAiM2M5YjI2NzdjOTZjNjQ1NDk2OTk3MzIxYmYyZmU0NjVhNWU3ZTIxZiIKLVMgPSAiJHtXT1JLRElSfS9naXQiCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1hYmktdmVyc2lvbj01IC0tY2FjaGUtZmlsZT0ke0J9L2NvbmZpZy5jYWNoZSIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKFwrXGQrKSopIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uY3Vyc2VzL25jdXJzZXNfNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyM2U2ODUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25jdXJzZXMvbmN1cnNlc182LjIuYmIKQEAgLTAsMCArMSwxNCBAQAorcmVxdWlyZSBuY3Vyc2VzLmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS10aWMtaGFuZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS1yZXByb2R1Y2libGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY29uZmlnLmNhY2hlIFwKKyAgICAgICAgICAgIgorIyBjb21taXQgaWQgY29ycmVzcG9uZHMgdG8gdGhlIHJldmlzaW9uIGluIHBhY2thZ2UgdmVyc2lvbgorU1JDUkVWID0gImE2NjkwMTNjZDVlOWQ2NDM0ZTUzMDEzNDhlYTUxYmFmMzA2YzkzYzQiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorRVhUUkFfT0VDT05GICs9ICItLXdpdGgtYWJpLXZlcnNpb249NSAtLWNhY2hlLWZpbGU9JHtCfS9jb25maWcuY2FjaGUiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKyhcK1xkKykqKSIKKworIyBUaGlzIGlzIG5lZWRlZCB3aGVuIHVzaW5nIHBhdGNobGV2ZWwgdmVyc2lvbnMgbGlrZSA2LjErMjAxODEwMTMKKyNDVkVfVkVSU0lPTiA9ICIke0BkLmdldFZhcigiUFYiKS5zcGxpdCgnKycpWzBdfS4ke0BkLmdldFZhcigiUFYiKS5zcGxpdCgnKycpWzFdfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV0YmFzZS9uZXRiYXNlL25ldGJhc2UtYWRkLXJwY2JpbmQtYXMtYW4tYWxpYXMtdG8tc3VucnBjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXRiYXNlL25ldGJhc2UvbmV0YmFzZS1hZGQtcnBjYmluZC1hcy1hbi1hbGlhcy10by1zdW5ycGMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3YmEyZjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXRiYXNlL25ldGJhc2UvbmV0YmFzZS1hZGQtcnBjYmluZC1hcy1hbi1hbGlhcy10by1zdW5ycGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIDUyZDQ2YzRkMWZiZDRjODhkNjljMmZjZjc4MzdiMmYyYmE3ZWY2ZjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiTWF4aW4gQi4gSm9obiIgPG1heGluLmpvaG5AaW50ZWwuY29tPgotRGF0ZTogVGh1LCAxMiBKYW4gMjAxNyAxNjo1MDo1OCArMDIwMAotU3ViamVjdDogW1BBVENIXSBuZXRiYXNlOiBhZGQgcnBjYmluZCBhcyBhbiBhbGlhcyB0byBzdW5ycGMKLQotdGhlIHBhdGNoIGNvbWVzIGZyb206Ci1odHRwczovL2J1Z3MuYXJjaGxpbnV4Lm9yZy90YXNrLzIwMjczCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBMaSBXYW5nIDxsaS53YW5nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLQotLS0tCi0gZXRjLXJwYyAgICAgIHwgMiArLQotIGV0Yy1zZXJ2aWNlcyB8IDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZXRjLXJwYyBiL2V0Yy1ycGMKLWluZGV4IDFiMzA2MjUuLjlhOWE4MWEgMTAwNjQ0Ci0tLS0gYS9ldGMtcnBjCi0rKysgYi9ldGMtcnBjCi1AQCAtMSw3ICsxLDcgQEAKLSAjIFRoaXMgZmlsZSBjb250YWlucyB1c2VyIHJlYWRhYmxlIG5hbWVzIHRoYXQgY2FuIGJlIHVzZWQgaW4gcGxhY2Ugb2YgcnBjCi0gIyBwcm9ncmFtIG51bWJlcnMuCi0gCi0tcG9ydG1hcHBlcgkxMDAwMDAJcG9ydG1hcCBzdW5ycGMKLStwb3J0bWFwcGVyCTEwMDAwMAlwb3J0bWFwIHN1bnJwYyBycGNiaW5kCi0gcnN0YXRkCQkxMDAwMDEJcnN0YXQgcnN0YXRfc3ZjIHJ1cCBwZXJmbWV0ZXIKLSBydXNlcnNkCQkxMDAwMDIJcnVzZXJzCi0gbmZzCQkxMDAwMDMJbmZzcHJvZwotZGlmZiAtLWdpdCBhL2V0Yy1zZXJ2aWNlcyBiL2V0Yy1zZXJ2aWNlcwotaW5kZXggZmE3YWUyNC4uMTBiYTJiYyAxMDA2NDQKLS0tLSBhL2V0Yy1zZXJ2aWNlcwotKysrIGIvZXRjLXNlcnZpY2VzCi1AQCAtNTEsOCArNTEsOCBAQCBrZXJiZXJvcwk4OC91ZHAJCWtlcmJlcm9zNSBrcmI1IGtlcmJlcm9zLXNlYwkjIEtlcmJlcm9zIHY1Ci0gaXNvLXRzYXAJMTAyL3RjcAkJdHNhcAkJIyBwYXJ0IG9mIElTT0RFCi0gYWNyLW5lbWEJMTA0L3RjcAkJZGljb20JCSMgRGlnaXRhbCBJbWFnLiAmIENvbW0uIDMwMAotIHBvcDMJCTExMC90Y3AJCXBvcC0zCQkjIFBPUCB2ZXJzaW9uIDMKLS1zdW5ycGMJCTExMS90Y3AJCXBvcnRtYXBwZXIJIyBSUEMgNC4wIHBvcnRtYXBwZXIKLS1zdW5ycGMJCTExMS91ZHAJCXBvcnRtYXBwZXIKLStzdW5ycGMJCTExMS90Y3AJCXBvcnRtYXBwZXIgcnBjYmluZCAjIFJQQyA0LjAgcG9ydG1hcHBlcgotK3N1bnJwYwkJMTExL3VkcAkJcG9ydG1hcHBlciBycGNiaW5kCi0gYXV0aAkJMTEzL3RjcAkJYXV0aGVudGljYXRpb24gdGFwIGlkZW50Ci0gc2Z0cAkJMTE1L3RjcAotIG5udHAJCTExOS90Y3AJCXJlYWRuZXdzIHVudHAJIyBVU0VORVQgTmV3cyBUcmFuc2ZlciBQcm90b2NvbApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXRiYXNlL25ldGJhc2VfNS42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXRiYXNlL25ldGJhc2VfNS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYWE0OTcxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV0YmFzZS9uZXRiYXNlXzUuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiQmFzaWMgVENQL0lQIG5ldHdvcmtpbmcgc3VwcG9ydCIKLURFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgbmVjZXNzYXJ5IGluZnJhc3RydWN0dXJlIGZvciBiYXNpYyBUQ1AvSVAgYmFzZWQgbmV0d29ya2luZyIKLUhPTUVQQUdFID0gImh0dHA6Ly9wYWNrYWdlcy5kZWJpYW4ub3JnL25ldGJhc2UiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZGViaWFuL2NvcHlyaWdodDttZDU9M2RkNjE5MmQzMDZmNTgyZGVlNzY4N2RhM2Q4NzQ4YWIiCi1QRSA9ICIxIgotCi1TUkNfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9uLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL25ldGJhc2UtYWRkLXJwY2JpbmQtYXMtYW4tYWxpYXMtdG8tc3VucnBjLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2FkMTU2MjcyYzVhNDJmNDljNzMzODZmZjM5Yzg2MjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWQ5M2EwOTlkZWIyODg2OWI3MzA2ZTkxNDcwMGZhZmJkMjkzYjU1YmRiNWRmMDVhNWFhNmVmZmQwYWY1OTMwYyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9uL25ldGJhc2UvIgotZG9faW5zdGFsbCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9LyR7bWFuZGlyfS9tYW44ICR7RH0ke3N5c2NvbmZkaXJ9Ci0JaW5zdGFsbCAtbSAwNjQ0IGV0Yy1ycGMgJHtEfSR7c3lzY29uZmRpcn0vcnBjCi0JaW5zdGFsbCAtbSAwNjQ0IGV0Yy1wcm90b2NvbHMgJHtEfSR7c3lzY29uZmRpcn0vcHJvdG9jb2xzCi0JaW5zdGFsbCAtbSAwNjQ0IGV0Yy1zZXJ2aWNlcyAke0R9JHtzeXNjb25mZGlyfS9zZXJ2aWNlcwotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXRiYXNlL25ldGJhc2VfNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXRiYXNlL25ldGJhc2VfNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjMDA0OWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ldGJhc2UvbmV0YmFzZV82LjEuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJCYXNpYyBUQ1AvSVAgbmV0d29ya2luZyBzdXBwb3J0IgorREVTQ1JJUFRJT04gPSAiVGhpcyBwYWNrYWdlIHByb3ZpZGVzIHRoZSBuZWNlc3NhcnkgaW5mcmFzdHJ1Y3R1cmUgZm9yIGJhc2ljIFRDUC9JUCBiYXNlZCBuZXR3b3JraW5nIgorSE9NRVBBR0UgPSAiaHR0cDovL3BhY2thZ2VzLmRlYmlhbi5vcmcvbmV0YmFzZSIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT0zZGQ2MTkyZDMwNmY1ODJkZWU3Njg3ZGEzZDg3NDhhYiIKK1BFID0gIjEiCisKK1NSQ19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL24vJHtCUE59LyR7QlBOfV8ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlNTg3MWEzYTVjODM5MDU1N2I4MDMzY2YxOTMxNmE1NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwODRkNzQzYmQ4NGQ0ZDkzODBiYWM0YzcxYzUxZTU3NDA2ZGNlNDRmNWE2OTI4OWJiODIzYzkwM2U5YjAzNWQ4IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL24vbmV0YmFzZS8iCitkb19pbnN0YWxsICgpIHsKKwlpbnN0YWxsIC1kICR7RH0vJHttYW5kaXJ9L21hbjggJHtEfSR7c3lzY29uZmRpcn0KKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9ldGMvcnBjICR7RH0ke3N5c2NvbmZkaXJ9L3JwYworCWluc3RhbGwgLW0gMDY0NCAke1N9L2V0Yy9wcm90b2NvbHMgJHtEfSR7c3lzY29uZmRpcn0vcHJvdG9jb2xzCisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vZXRjL3NlcnZpY2VzICR7RH0ke3N5c2NvbmZkaXJ9L3NlcnZpY2VzCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9saWJnbG9zc18zLjEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL2xpYmdsb3NzXzMuMy4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9saWJnbG9zc18zLjEuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbGliZ2xvc3NfMy4zLjAuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL25ld2xpYi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9uZXdsaWIuaW5jCmluZGV4IDJmMDU1M2IuLjk2ZTIzMGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL25ld2xpYi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbmV3bGliLmluYwpAQCAtMywyMSArMywyMCBAQAogREVTQ1JJUFRJT04gPSAiQyBsaWJyYXJ5IGludGVuZGVkIGZvciB1c2Ugb24gZW1iZWRkZWQgc3lzdGVtcy4gSXQgaXMgYSBjb25nbG9tZXJhdGlvbiBvZiBzZXZlcmFsIGxpYnJhcnkgcGFydHMsIGFsbCB1bmRlciBmcmVlIHNvZnR3YXJlIGxpY2Vuc2VzIHRoYXQgbWFrZSB0aGVtIGVhc2lseSB1c2FibGUgb24gZW1iZWRkZWQgcHJvZHVjdHMuIgogU0VDVElPTiA9ICJsaWJzIgogCi1MSUNFTlNFID0gIkdQTHYyICYgTEdQTHYzICYgR1BMdjMgJiBMR1BMdjIgJiBCU0QtMi1DbGF1c2UiCitMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYzICYgR1BMdjMgJiBMR1BMdjIgJiBCU0QtMi1DbGF1c2UgJiB0Y2wiCiBMSUNfRklMRVNfQ0hLU1VNID0gIiBcCiAJCWZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCiAJCWZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKIAkJZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0JCWZpbGU6Ly9DT1BZSU5HLkxJQkdMT1NTO21kNT03M2Y1Yzk4Nzc5YWVhN2RiYTRhNmM5NGE3NGFiMGFlMiBcCisJCWZpbGU6Ly9DT1BZSU5HLkxJQkdMT1NTO21kNT01NGI3NzhkNTg1NDQzY2Q3ZmJmYTFiNDdjYmQ2M2E4OSBcCiAJCWZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotCQlmaWxlOi8vQ09QWUlORy5ORVdMSUI7bWQ1PTEwMGQ0NzBhZjU0ZTJkMWQ3OWZiZDg0OThhMzJmZjI2IFwKKwkJZmlsZTovL0NPUFlJTkcuTkVXTElCO21kNT1hYzE3YzY4NzUxYWFkN2E1Mjk4Y2UzZjI0OTEyMTA3MCBcCiAJCWZpbGU6Ly9uZXdsaWIvbGliYy9wb3NpeC9DT1BZUklHSFQ7bWQ1PTEwMzQ2OGZmMTk4MmJlODQwZmRmNGVlOWY4YjUxYmJmIFwKIAkJZmlsZTovL25ld2xpYi9saWJjL3N5cy9saW51eC9saW51eHRocmVhZHMvTElDRU5TRTttZDU9NzM2NDAyMDdmYmM3OWIxOThjN2ZmZDRhZDRkOTdhYTAgXAogCQkiCiAKIFNSQ19VUkkgPSAiaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9wdWIvbmV3bGliL25ld2xpYi0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiZjg0MjYzYjdkNTI0ZGY5MmE5YzlmYjMwYjc5ZTAxMzQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmI0ZmExY2MyMWU5MDYwNzE5MjA4MzAwYTYxNDIwZTQwODlkNmRlNmVmNTljZjUzM2I1N2ZlNzQ4MDFkMTAyYSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1OGRkOWUzZWFlZGY1MTkzNjBkOTJkODQyMDVjM2RlZWYwYjNmYzI4NjY4NWQxYzU2MmUyNDU5MTRlZjcyYzY2IgogCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgogREVQRU5EUyA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MiCkBAIC00Miw2ICs0MSw3IEBACiAJCS0td2l0aC1nbnUtYXMgXAogCQktLXdpdGgtZ251LWxkIFwKIAkJLS1kaXNhYmxlLW11bHRpbGliIFwKKwkJLS1kaXNhYmxlLW5ld2xpYi1zdXBwbGllZC1zeXNjYWxscyBcCiAJCSIKIAogZG9fY29uZmlndXJlW2NsZWFuZGlyc10gPSAiJHtCfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL25ld2xpYl8zLjEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvbmV3bGliL25ld2xpYl8zLjMuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9uZXdsaWIvbmV3bGliXzMuMS4wLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL25ld2xpYi9uZXdsaWJfMy4zLjAuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDEtb3ZtZi11cGRhdGUtcGF0aC10by1uYXRpdmUtQmFzZVRvb2xzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMS1vdm1mLXVwZGF0ZS1wYXRoLXRvLW5hdGl2ZS1CYXNlVG9vbHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmVjYjIzYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDEtb3ZtZi11cGRhdGUtcGF0aC10by1uYXRpdmUtQmFzZVRvb2xzLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gMGE4MzYyY2ZiOWYwMDg3MGQ3MDY4NzQ3NTY2NWIxMzFkZDgyYzk0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY2FyZG8gTmVyaSA8cmljYXJkby5uZXJpLWNhbGRlcm9uQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IFRodSwgOSBKdW4gMjAxNiAwMjoyMzowMSAtMDcwMAorU3ViamVjdDogW1BBVENIIDEvNV0gb3ZtZjogdXBkYXRlIHBhdGggdG8gbmF0aXZlIEJhc2VUb29scworCitCYXNlVG9vbHMgaXMgYSBzZXQgb2YgdXRpbGl0aWVzIHRvIGJ1aWxkIEVESy1iYXNlZCBmaXJtd2FyZS4gVGhlc2UgdXRpbGl0aWVzCithcmUgdXNlZCBkdXJpbmcgdGhlIGJ1aWxkIHByb2Nlc3MuIFRodXMsIHRoZXkgbmVlZCB0byBiZSBidWlsdCBuYXRpdmVseS4KK1doZW4gY3Jvc3MtY29tcGlsaW5nLCB3ZSBuZWVkIHRvIHByb3ZpZGUgYSBwYXRoIHRvIHRoZSBsb2NhdGlvbiBvZiB0aGVzZQordG9vbHMuIFRoZSBCQkFLRV9FREtfVE9PTFNfUEFUSCBzdHJpbmcgaXMgdXNlZCBhcyBhIHBhdHRlcm4gdG8gYmUgcmVwbGFjZWQKK3dpdGggdGhlIGFwcHJvcHJpYXRlIGxvY2F0aW9uIGJlZm9yZSBidWlsZGluZy4KKworU2lnbmVkLW9mZi1ieTogUmljYXJkbyBOZXJpIDxyaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKy0tLQorIE92bWZQa2cvYnVpbGQuc2ggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9Pdm1mUGtnL2J1aWxkLnNoIGIvT3ZtZlBrZy9idWlsZC5zaAoraW5kZXggOTFiMTQ0MmFkZS4uMTg1OGRhZTMxYSAxMDA3NTUKKy0tLSBhL092bWZQa2cvYnVpbGQuc2gKKysrKyBiL092bWZQa2cvYnVpbGQuc2gKK0BAIC0yNCw3ICsyNCw3IEBAIHRoZW4KKyAjIHRoaXMgYXNzdW1lcyBzdm4gcHVsbHMgaGF2ZSB0aGUgc2FtZSByb290IGRpcgorICMgIGV4cG9ydCBFREtfVE9PTFNfUEFUSD1gcHdkYC8uLi9CYXNlVG9vbHMKKyAjIFRoaXMgdmVyc2lvbiBpcyBmb3IgdGhlIHRvb2xzIHNvdXJjZSBpbiBlZGsyCistICBleHBvcnQgRURLX1RPT0xTX1BBVEg9YHB3ZGAvQmFzZVRvb2xzCisrICBleHBvcnQgRURLX1RPT0xTX1BBVEg9QkJBS0VfRURLX1RPT0xTX1BBVEgvQmFzZVRvb2xzCisgICBlY2hvICRFREtfVE9PTFNfUEFUSAorICAgc291cmNlIGVka3NldHVwLnNoIEJhc2VUb29scworIGVsc2UKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDItQmFzZVRvb2xzLW1ha2VmaWxlLWFkanVzdC10by1idWlsZC1pbi11bmRlci1iaXRiYWtlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMi1CYXNlVG9vbHMtbWFrZWZpbGUtYWRqdXN0LXRvLWJ1aWxkLWluLXVuZGVyLWJpdGJha2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM3ZWQwMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDItQmFzZVRvb2xzLW1ha2VmaWxlLWFkanVzdC10by1idWlsZC1pbi11bmRlci1iaXRiYWtlLnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gYThiY2VhZWMxYjE2ZmZmYmY2ODEwZGYwNTUwM2Q4YWU5MDkyYjczNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY2FyZG8gTmVyaSA8cmljYXJkby5uZXJpLWNhbGRlcm9uQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IEZyaSwgMjYgSnVsIDIwMTkgMTc6MzQ6MjYgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAyLzVdIEJhc2VUb29sczogbWFrZWZpbGU6IGFkanVzdCB0byBidWlsZCBpbiB1bmRlciBiaXRiYWtlCisKK1ByZXBlbmQgdGhlIGJ1aWxkIGZsYWdzIHdpdGggdGhvc2Ugb2YgYml0YmFrZS4gVGhpcyBpcyB0byBidWlsZAordXNpbmcgdGhlIGJpdGJha2UgbmF0aXZlIHN5c3Jvb3QgaW5jbHVkZSBhbmQgbGlicmFyeSBkaXJlY3Rvcmllcy4KKworU2lnbmVkLW9mZi1ieTogUmljYXJkbyBOZXJpIDxyaWNhcmRvLm5lcmlAbGludXguaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKy0tLQorIEJhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZXMvaGVhZGVyLm1ha2VmaWxlIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZSBiL0Jhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZXMvaGVhZGVyLm1ha2VmaWxlCitpbmRleCA0ZTliMzZkOThiLi5lYjAzZWUzM2ZhIDEwMDY0NAorLS0tIGEvQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUKKysrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZXMvaGVhZGVyLm1ha2VmaWxlCitAQCAtNjIsMjMgKzYyLDIzIEBAICQoZXJyb3IgQmFkIEhPU1RfQVJDSCkKKyBlbmRpZg0KKyANCisgSU5DTFVERSA9ICQoVE9PTF9JTkNMVURFKSAtSSAkKE1BS0VST09UKSAtSSAkKE1BS0VST09UKS9JbmNsdWRlL0NvbW1vbiAtSSAkKE1BS0VST09UKS9JbmNsdWRlLyAtSSAkKE1BS0VST09UKS9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQgLUkgJChNQUtFUk9PVCkvQ29tbW9uLyAtSSAuLiAtSSAuICQoQVJDSF9JTkNMVURFKQ0KKy1CVUlMRF9DUFBGTEFHUyA9ICQoSU5DTFVERSkNCisrQlVJTERfQ1BQRkxBR1MgKz0gJChJTkNMVURFKQ0KKyANCisgIyBrZWVwIEVYVFJBX09QVEZMQUdTIGxhc3QNCisgQlVJTERfT1BURkxBR1MgPSAtTzIgJChFWFRSQV9PUFRGTEFHUykNCisgDQorIGlmZXEgKCQoREFSV0lOKSxEYXJ3aW4pDQorICMgYXNzdW1lIGNsYW5nIG9yIGNsYW5nIGNvbXBhdGlibGUgZmxhZ3Mgb24gT1MgWA0KKy1CVUlMRF9DRkxBR1MgPSAtTUQgLWZzaG9ydC13Y2hhciAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIFwNCisrQlVJTERfQ0ZMQUdTICs9IC1NRCAtZnNob3J0LXdjaGFyIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgXA0KKyAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIC1Xbm8tc2VsZi1hc3NpZ24gLVduby11bnVzZWQtcmVzdWx0IC1ub3N0ZGxpYiAtZw0KKyBlbHNlDQorLUJVSUxEX0NGTEFHUyA9IC1NRCAtZnNob3J0LXdjaGFyIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1md3JhcHYgXA0KKytCVUlMRF9DRkxBR1MgKz0gLU1EIC1mc2hvcnQtd2NoYXIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLWZ3cmFwdiBcDQorIC1mbm8tZGVsZXRlLW51bGwtcG9pbnRlci1jaGVja3MgLVdhbGwgLVdlcnJvciBcDQorIC1Xbm8tZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnMgLVduby1zdHJpbmdvcC10cnVuY2F0aW9uIC1Xbm8tcmVzdHJpY3QgXA0KKyAtV25vLXVudXNlZC1yZXN1bHQgLW5vc3RkbGliIC1nDQorIGVuZGlmDQorLUJVSUxEX0xGTEFHUyA9DQorLUJVSUxEX0NYWEZMQUdTID0gLVduby11bnVzZWQtcmVzdWx0DQorK0JVSUxEX0xGTEFHUyA9ICQoTERGTEFHUykNCisrQlVJTERfQ1hYRkxBR1MgKz0gLVduby11bnVzZWQtcmVzdWx0DQorIA0KKyBpZmVxICgkKEhPU1RfQVJDSCksIElBMzIpDQorICMNCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAyLW92bWYtdXBkYXRlLXBhdGgtdG8tbmF0aXZlLUJhc2VUb29scy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDItb3ZtZi11cGRhdGUtcGF0aC10by1uYXRpdmUtQmFzZVRvb2xzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGFlNWQ0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDItb3ZtZi11cGRhdGUtcGF0aC10by1uYXRpdmUtQmFzZVRvb2xzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSA5ZTYzMmUzZjllZGQwOTYzMmNjODc3ZGZmNmVhNTc2MDhmOTc5YWFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUmljYXJkbyBOZXJpIDxyaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwuY29tPgotRGF0ZTogVGh1LCA5IEp1biAyMDE2IDAyOjIzOjAxIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIG92bWY6IHVwZGF0ZSBwYXRoIHRvIG5hdGl2ZSBCYXNlVG9vbHMKLQotQmFzZVRvb2xzIGlzIGEgc2V0IG9mIHV0aWxpdGllcyB0byBidWlsZCBFREstYmFzZWQgZmlybXdhcmUuIFRoZXNlIHV0aWxpdGllcwotYXJlIHVzZWQgZHVyaW5nIHRoZSBidWlsZCBwcm9jZXNzLiBUaHVzLCB0aGV5IG5lZWQgdG8gYmUgYnVpbHQgbmF0aXZlbHkuCi1XaGVuIGNyb3NzLWNvbXBpbGluZywgd2UgbmVlZCB0byBwcm92aWRlIGEgcGF0aCB0byB0aGUgbG9jYXRpb24gb2YgdGhlc2UKLXRvb2xzLiBUaGUgQkJBS0VfRURLX1RPT0xTX1BBVEggc3RyaW5nIGlzIHVzZWQgYXMgYSBwYXR0ZXJuIHRvIGJlIHJlcGxhY2VkCi13aXRoIHRoZSBhcHByb3ByaWF0ZSBsb2NhdGlvbiBiZWZvcmUgYnVpbGRpbmcuCi0KLVNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gTmVyaSA8cmljYXJkby5uZXJpLWNhbGRlcm9uQGxpbnV4LmludGVsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gT3ZtZlBrZy9idWlsZC5zaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL092bWZQa2cvYnVpbGQuc2ggYi9Pdm1mUGtnL2J1aWxkLnNoCi1pbmRleCBlYjVlYjczLi45MDU4ZmNhIDEwMDc1NQotLS0tIGEvT3ZtZlBrZy9idWlsZC5zaAotKysrIGIvT3ZtZlBrZy9idWlsZC5zaAotQEAgLTMwLDcgKzMwLDcgQEAgdGhlbgotICMgdGhpcyBhc3N1bWVzIHN2biBwdWxscyBoYXZlIHRoZSBzYW1lIHJvb3QgZGlyCi0gIyAgZXhwb3J0IEVES19UT09MU19QQVRIPWBwd2RgLy4uL0Jhc2VUb29scwotICMgVGhpcyB2ZXJzaW9uIGlzIGZvciB0aGUgdG9vbHMgc291cmNlIGluIGVkazIKLS0gIGV4cG9ydCBFREtfVE9PTFNfUEFUSD1gcHdkYC9CYXNlVG9vbHMKLSsgIGV4cG9ydCBFREtfVE9PTFNfUEFUSD1CQkFLRV9FREtfVE9PTFNfUEFUSC9CYXNlVG9vbHMKLSAgIGVjaG8gJEVES19UT09MU19QQVRICi0gICBzb3VyY2UgZWRrc2V0dXAuc2ggQmFzZVRvb2xzCi0gZWxzZQotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDAzLUJhc2VUb29scy1tYWtlZmlsZS1hZGp1c3QtdG8tYnVpbGQtaW4tdW5kZXItYml0YmFrZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDMtQmFzZVRvb2xzLW1ha2VmaWxlLWFkanVzdC10by1idWlsZC1pbi11bmRlci1iaXRiYWtlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNzBiMGFjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDMtQmFzZVRvb2xzLW1ha2VmaWxlLWFkanVzdC10by1idWlsZC1pbi11bmRlci1iaXRiYWtlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSAyMzIwNjUwYzZkMzgxYjkxNGZlOTFiMmRlZGFhNTg3MDI3OWE4YmNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUmljYXJkbyBOZXJpIDxyaWNhcmRvLm5lcmktY2FsZGVyb25AbGludXguaW50ZWwuY29tPgotRGF0ZTogRnJpLCAyNiBKdWwgMjAxOSAxNzozNDoyNiAtMDQwMAotU3ViamVjdDogW1BBVENIXSBCYXNlVG9vbHM6IG1ha2VmaWxlOiBhZGp1c3QgdG8gYnVpbGQgaW4gdW5kZXIgYml0YmFrZQotCi1QcmVwZW5kIHRoZSBidWlsZCBmbGFncyB3aXRoIHRob3NlIG9mIGJpdGJha2UuIFRoaXMgaXMgdG8gYnVpbGQKLXVzaW5nIHRoZSBiaXRiYWtlIG5hdGl2ZSBzeXNyb290IGluY2x1ZGUgYW5kIGxpYnJhcnkgZGlyZWN0b3JpZXMuCi0KLVNpZ25lZC1vZmYtYnk6IFJpY2FyZG8gTmVyaSA8cmljYXJkby5uZXJpQGxpbnV4LmludGVsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gQmFzZVRvb2xzL1NvdXJjZS9DL01ha2VmaWxlcy9oZWFkZXIubWFrZWZpbGUgfCAxMCArKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdpdC9CYXNlVG9vbHMvU291cmNlL0MvTWFrZWZpbGVzL2hlYWRlci5tYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL0Jhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZXMvaGVhZGVyLm1ha2VmaWxlCi0rKysgZ2l0L0Jhc2VUb29scy9Tb3VyY2UvQy9NYWtlZmlsZXMvaGVhZGVyLm1ha2VmaWxlCi1AQCAtNjIsMjMgKzYyLDIzIEBAICQoZXJyb3IgQmFkIEhPU1RfQVJDSCkKLSBlbmRpZg0KLSANCi0gSU5DTFVERSA9ICQoVE9PTF9JTkNMVURFKSAtSSAkKE1BS0VST09UKSAtSSAkKE1BS0VST09UKS9JbmNsdWRlL0NvbW1vbiAtSSAkKE1BS0VST09UKS9JbmNsdWRlLyAtSSAkKE1BS0VST09UKS9JbmNsdWRlL0luZHVzdHJ5U3RhbmRhcmQgLUkgJChNQUtFUk9PVCkvQ29tbW9uLyAtSSAuLiAtSSAuICQoQVJDSF9JTkNMVURFKSANCi0tQlVJTERfQ1BQRkxBR1MgPSAkKElOQ0xVREUpDQotK0JVSUxEX0NQUEZMQUdTICs9ICQoSU5DTFVERSkNCi0gDQotICMga2VlcCBFWFRSQV9PUFRGTEFHUyBsYXN0DQotIEJVSUxEX09QVEZMQUdTID0gLU8yICQoRVhUUkFfT1BURkxBR1MpDQotIA0KLSBpZmVxICgkKERBUldJTiksRGFyd2luKQ0KLSAjIGFzc3VtZSBjbGFuZyBvciBjbGFuZyBjb21wYXRpYmxlIGZsYWdzIG9uIE9TIFgNCi0tQlVJTERfQ0ZMQUdTID0gLU1EIC1mc2hvcnQtd2NoYXIgLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciBcDQotK0JVSUxEX0NGTEFHUyArPSAtTUQgLWZzaG9ydC13Y2hhciAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIFwNCi0gLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyAtV25vLXNlbGYtYXNzaWduIC1Xbm8tdW51c2VkLXJlc3VsdCAtbm9zdGRsaWIgLWcNCi0gZWxzZQ0KLS1CVUlMRF9DRkxBR1MgPSAtTUQgLWZzaG9ydC13Y2hhciAtZm5vLXN0cmljdC1hbGlhc2luZyAtZndyYXB2IFwNCi0rQlVJTERfQ0ZMQUdTICs9IC1NRCAtZnNob3J0LXdjaGFyIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1md3JhcHYgXA0KLSAtZm5vLWRlbGV0ZS1udWxsLXBvaW50ZXItY2hlY2tzIC1XYWxsIC1XZXJyb3IgXA0KLSAtV25vLWRlcHJlY2F0ZWQtZGVjbGFyYXRpb25zIC1Xbm8tc3RyaW5nb3AtdHJ1bmNhdGlvbiAtV25vLXJlc3RyaWN0IFwNCi0gLVduby11bnVzZWQtcmVzdWx0IC1ub3N0ZGxpYiAtZw0KLSBlbmRpZg0KLS1CVUlMRF9MRkxBR1MgPQ0KLS1CVUlMRF9DWFhGTEFHUyA9IC1Xbm8tdW51c2VkLXJlc3VsdA0KLStCVUlMRF9MRkxBR1MgPSAkKExERkxBR1MpDQotK0JVSUxEX0NYWEZMQUdTICs9IC1Xbm8tdW51c2VkLXJlc3VsdA0KLSANCi0gaWZlcSAoJChIT1NUX0FSQ0gpLCBJQTMyKQ0KLSAjDQotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwMy1vdm1mLWVuYWJsZS1sb25nLXBhdGgtZmlsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDMtb3ZtZi1lbmFibGUtbG9uZy1wYXRoLWZpbGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWIxZTdkYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDMtb3ZtZi1lbmFibGUtbG9uZy1wYXRoLWZpbGUucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA2MGE1Zjk1M2Y3NDdlMWU5ZTA1YTQwMTU3YjY1MWNiYThlYTU3YjkxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMTEgU2VwIDIwMTcgMDI6MjE6NTUgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzVdIG92bWY6IGVuYWJsZSBsb25nIHBhdGggZmlsZQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+CisKKy0tLQorIEJhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vQ29tbW9uTGliLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oIGIvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuaAoraW5kZXggZTFjY2U5ODVmNy4uZDY3ZDAzYzcwYyAxMDA2NDQKKy0tLSBhL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vQ29tbW9uTGliLmgKKysrKyBiL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vQ29tbW9uTGliLmgKK0BAIC0xNCw3ICsxNCw3IEBAIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBCU0QtMi1DbGF1c2UtUGF0ZW50CisgI2luY2x1ZGUgPGFzc2VydC5oPg0KKyAjZGVmaW5lIFBSSU5URURfR1VJRF9CVUZGRVJfU0laRSAgMzcgIC8vIGluY2x1ZGluZyBudWxsLXRlcm1pbmF0aW9uDQorIA0KKy0jZGVmaW5lIE1BWF9MT05HX0ZJTEVfUEFUSCA1MDANCisrI2RlZmluZSBNQVhfTE9OR19GSUxFX1BBVEggMTAyMw0KKyANCisgI2RlZmluZSBNQVhfVUlOVDY0ICgoVUlOVDY0KTB4RkZGRkZGRkZGRkZGRkZGRlVMTCkNCisgI2RlZmluZSBNQVhfVUlOVDMyICgoVUlOVDMyKTB4RkZGRkZGRkYpDQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwNC1vdm1mLVVwZGF0ZS10by1sYXRlc3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi8wMDA0LW92bWYtVXBkYXRlLXRvLWxhdGVzdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMTBhMzlkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwNC1vdm1mLVVwZGF0ZS10by1sYXRlc3QucGF0Y2gKQEAgLTAsMCArMSw0NiBAQAorRnJvbSA5NGVmZjMxNmIzMWI0ZDAzNDhhZjI4Yzc3YmU1YzAwYmMwOWZlOGU3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU3RldmUgTGFuZ2FzZWsgPHN0ZXZlLmxhbmdhc2VrQHVidW50dS5jb20+CitEYXRlOiBTYXQsIDEwIEp1biAyMDE3IDAxOjM5OjM2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggNC81XSBvdm1mOiBVcGRhdGUgdG8gbGF0ZXN0CisKK0Rlc2NyaXB0aW9uOiBwYXNzIC1mbm8tc3RhY2stcHJvdGVjdG9yIHRvIGFsbCBHQ0MgdG9vbGNoYWlucworIFRoZSB1cHN0cmVhbSBidWlsZCBydWxlcyBpbmV4cGxpY2FibHkgcGFzcyAtZm5vLXN0YWNrLXByb3RlY3RvciBvbmx5Cisgd2hlbiBidWlsZGluZyBmb3IgaTM4NiBhbmQgYW1kNjQuICBBZGQgdGhpcyBlc3NlbnRpYWwgYXJndW1lbnQgdG8gdGhlCisgZ2VuZXJpYyBydWxlcyBmb3IgZ2NjIDQuNCBhbmQgbGF0ZXIuCitMYXN0LVVwZGF0ZWQ6IDIwMTYtMDQtMTIKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCistLS0KKyBCYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUgfCA4ICsrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZSBiL0Jhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZQoraW5kZXggY2EwYjEyMmRiYi4uYjAwNjZjMmFiOCAxMDA3NTUKKy0tLSBhL0Jhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZQorKysrIGIvQmFzZVRvb2xzL0NvbmYvdG9vbHNfZGVmLnRlbXBsYXRlCitAQCAtMTk0MSwxMCArMTk0MSwxMCBAQCBERUZJTkUgR0NDX1g2NF9SQ19GTEFHUyAgICAgICAgICAgID0gLUkgYmluYXJ5IC1PIGVsZjY0LXg4Ni02NCAgICAgICAgLUIgaTM4NgorIERFRklORSBHQ0NfQVJNX1JDX0ZMQUdTICAgICAgICAgICAgPSAtSSBiaW5hcnkgLU8gZWxmMzItbGl0dGxlYXJtICAgICAtQiBhcm0gICAgIC0tcmVuYW1lLXNlY3Rpb24gLmRhdGE9LmhpaQ0KKyBERUZJTkUgR0NDX0FBUkNINjRfUkNfRkxBR1MgICAgICAgID0gLUkgYmluYXJ5IC1PIGVsZjY0LWxpdHRsZWFhcmNoNjQgLUIgYWFyY2g2NCAtLXJlbmFtZS1zZWN0aW9uIC5kYXRhPS5oaWkNCisgDQorLURFRklORSBHQ0M0OF9BTExfQ0NfRkxBR1MgICAgICAgICAgICA9IC1nIC1mc2hvcnQtd2NoYXIgLWZuby1idWlsdGluIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgLVduby1hcnJheS1ib3VuZHMgLWZmdW5jdGlvbi1zZWN0aW9ucyAtZmRhdGEtc2VjdGlvbnMgLWluY2x1ZGUgQXV0b0dlbi5oIC1mbm8tY29tbW9uIC1EU1RSSU5HX0FSUkFZX05BTUU9JChCQVNFX05BTUUpU3RyaW5ncw0KKytERUZJTkUgR0NDNDhfQUxMX0NDX0ZMQUdTICAgICAgICAgICAgPSAtZyAtZnNob3J0LXdjaGFyIC1mbm8tYnVpbHRpbiAtZm5vLXN0cmljdC1hbGlhc2luZyAtV2FsbCAtV2Vycm9yIC1Xbm8tYXJyYXktYm91bmRzIC1mZnVuY3Rpb24tc2VjdGlvbnMgLWZkYXRhLXNlY3Rpb25zIC1mbm8tc3RhY2stcHJvdGVjdG9yIC1pbmNsdWRlIEF1dG9HZW4uaCAtZm5vLWNvbW1vbiAtRFNUUklOR19BUlJBWV9OQU1FPSQoQkFTRV9OQU1FKVN0cmluZ3MNCisgREVGSU5FIEdDQzQ4X0lBMzJfWDY0X0RMSU5LX0NPTU1PTiAgID0gLW5vc3RkbGliIC1XbCwtbiwtcSwtLWdjLXNlY3Rpb25zIC16IGNvbW1vbi1wYWdlLXNpemU9MHgyMA0KKy1ERUZJTkUgR0NDNDhfSUEzMl9DQ19GTEFHUyAgICAgICAgICAgPSBERUYoR0NDNDhfQUxMX0NDX0ZMQUdTKSAtbTMyIC1tYXJjaD1pNTg2IC1tYWxpZ24tZG91YmxlIC1mbm8tc3RhY2stcHJvdGVjdG9yIC1EIEVGSTMyIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLVduby1hZGRyZXNzDQorLURFRklORSBHQ0M0OF9YNjRfQ0NfRkxBR1MgICAgICAgICAgICA9IERFRihHQ0M0OF9BTExfQ0NfRkxBR1MpIC1tNjQgLWZuby1zdGFjay1wcm90ZWN0b3IgIi1ERUZJQVBJPV9fYXR0cmlidXRlX18oKG1zX2FiaSkpIiAtbWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyAtbW5vLXJlZC16b25lIC1Xbm8tYWRkcmVzcyAtbWNtb2RlbD1zbWFsbCAtZnBpZSAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIC1Xbm8tYWRkcmVzcw0KKytERUZJTkUgR0NDNDhfSUEzMl9DQ19GTEFHUyAgICAgICAgICAgPSBERUYoR0NDNDhfQUxMX0NDX0ZMQUdTKSAtbTMyIC1tYXJjaD1pNTg2IC1tYWxpZ24tZG91YmxlIC1EIEVGSTMyIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLVduby1hZGRyZXNzDQorK0RFRklORSBHQ0M0OF9YNjRfQ0NfRkxBR1MgICAgICAgICAgICA9IERFRihHQ0M0OF9BTExfQ0NfRkxBR1MpIC1tNjQgIi1ERUZJQVBJPV9fYXR0cmlidXRlX18oKG1zX2FiaSkpIiAtbWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyAtbW5vLXJlZC16b25lIC1Xbm8tYWRkcmVzcyAtbWNtb2RlbD1zbWFsbCAtZnBpZSAtZm5vLWFzeW5jaHJvbm91cy11bndpbmQtdGFibGVzIC1Xbm8tYWRkcmVzcw0KKyBERUZJTkUgR0NDNDhfSUEzMl9YNjRfQVNMRExJTktfRkxBR1MgPSBERUYoR0NDNDhfSUEzMl9YNjRfRExJTktfQ09NTU9OKSAtV2wsLS1lbnRyeSxSZWZlcmVuY2VBY3BpVGFibGUgLXUgUmVmZXJlbmNlQWNwaVRhYmxlDQorIERFRklORSBHQ0M0OF9JQTMyX1g2NF9ETElOS19GTEFHUyAgICA9IERFRihHQ0M0OF9JQTMyX1g2NF9ETElOS19DT01NT04pIC1XbCwtLWVudHJ5LCQoSU1BR0VfRU5UUllfUE9JTlQpIC11ICQoSU1BR0VfRU5UUllfUE9JTlQpIC1XbCwtTWFwLCQoREVTVF9ESVJfREVCVUcpLyQoQkFTRV9OQU1FKS5tYXAsLS13aG9sZS1hcmNoaXZlDQorIERFRklORSBHQ0M0OF9JQTMyX0RMSU5LMl9GTEFHUyAgICAgICA9IC1XbCwtLWRlZnN5bT1QRUNPRkZfSEVBREVSX1NJWkU9MHgyMjAgREVGKEdDQ19ETElOSzJfRkxBR1NfQ09NTU9OKQ0KK0BAIC0xOTUzLDcgKzE5NTMsNyBAQCBERUZJTkUgR0NDNDhfWDY0X0RMSU5LMl9GTEFHUyAgICAgICAgPSAtV2wsLS1kZWZzeW09UEVDT0ZGX0hFQURFUl9TSVpFPTB4MjI4IERFRgorIERFRklORSBHQ0M0OF9BU01fRkxBR1MgICAgICAgICAgICAgICA9IERFRihHQ0NfQVNNX0ZMQUdTKQ0KKyBERUZJTkUgR0NDNDhfQVJNX0FTTV9GTEFHUyAgICAgICAgICAgPSAkKEFSQ0hBU01fRkxBR1MpICQoUExBVEZPUk1fRkxBR1MpIERFRihHQ0NfQVNNX0ZMQUdTKSAtbWxpdHRsZS1lbmRpYW4NCisgREVGSU5FIEdDQzQ4X0FBUkNINjRfQVNNX0ZMQUdTICAgICAgID0gJChBUkNIQVNNX0ZMQUdTKSAkKFBMQVRGT1JNX0ZMQUdTKSBERUYoR0NDX0FTTV9GTEFHUykgLW1saXR0bGUtZW5kaWFuDQorLURFRklORSBHQ0M0OF9BUk1fQ0NfRkxBR1MgICAgICAgICAgICA9ICQoQVJDSENDX0ZMQUdTKSAkKFBMQVRGT1JNX0ZMQUdTKSBERUYoR0NDX0FSTV9DQ19GTEFHUykgLWZzdGFjay1wcm90ZWN0b3IgLW13b3JkLXJlbG9jYXRpb25zDQorK0RFRklORSBHQ0M0OF9BUk1fQ0NfRkxBR1MgICAgICAgICAgICA9ICQoQVJDSENDX0ZMQUdTKSAkKFBMQVRGT1JNX0ZMQUdTKSBERUYoR0NDX0FSTV9DQ19GTEFHUykgLW13b3JkLXJlbG9jYXRpb25zDQorIERFRklORSBHQ0M0OF9BUk1fQ0NfWElQRkxBR1MgICAgICAgICA9IERFRihHQ0NfQVJNX0NDX1hJUEZMQUdTKQ0KKyBERUZJTkUgR0NDNDhfQUFSQ0g2NF9DQ19GTEFHUyAgICAgICAgPSAkKEFSQ0hDQ19GTEFHUykgJChQTEFURk9STV9GTEFHUykgLW1jbW9kZWw9bGFyZ2UgREVGKEdDQ19BQVJDSDY0X0NDX0ZMQUdTKQ0KKyBERUZJTkUgR0NDNDhfQUFSQ0g2NF9DQ19YSVBGTEFHUyAgICAgPSBERUYoR0NDX0FBUkNINjRfQ0NfWElQRkxBR1MpDQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwNC1vdm1mLWVuYWJsZS1sb25nLXBhdGgtZmlsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mLzAwMDQtb3ZtZi1lbmFibGUtbG9uZy1wYXRoLWZpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5NTRmYmUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvMDAwNC1vdm1mLWVuYWJsZS1sb25nLXBhdGgtZmlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLUZyb20gMDMyZmM2YjFmNzY5MWJkNTM3ZmQyYTZiZDEzODIxZmNmM2M0NWU2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDExIFNlcCAyMDE3IDAyOjIxOjU1IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0hdIG92bWY6IGVuYWJsZSBsb25nIHBhdGggZmlsZQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IERlbmdrZSBEdSA8ZGVuZ2tlLmR1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBCYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvQmFzZVRvb2xzL1NvdXJjZS9DL0NvbW1vbi9Db21tb25MaWIuaCBiL0Jhc2VUb29scy9Tb3VyY2UvQy9Db21tb24vQ29tbW9uTGliLmgKLWluZGV4IDIwNDFiODllMmQuLjgxMTZhYTJlMzUgMTAwNjQ0Ci0tLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oCi0rKysgYi9CYXNlVG9vbHMvU291cmNlL0MvQ29tbW9uL0NvbW1vbkxpYi5oCi1AQCAtMjIgKzIyIEBAIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuCi0tI2RlZmluZSBNQVhfTE9OR19GSUxFX1BBVEggNTAwDQotKyNkZWZpbmUgTUFYX0xPTkdfRklMRV9QQVRIIDEwMjMNCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi9WZnJDb21waWxlLWluY3JlYXNlLXBhdGgtbGVuZ3RoLWxpbWl0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWYvVmZyQ29tcGlsZS1pbmNyZWFzZS1wYXRoLWxlbmd0aC1saW1pdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmIxMmQ4Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi9WZnJDb21waWxlLWluY3JlYXNlLXBhdGgtbGVuZ3RoLWxpbWl0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSBjNzcyMmQxMGM3YmNmNmJlMGFkY2Y1NGFiYjFkNDA2NTk5ZGQ3OTE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotRGF0ZTogRnJpLCAyNCBGZWIgMjAxNyAwMTo0MDowMiArMDEwMAotU3ViamVjdDogW1BBVENIXSBWZnJDb21waWxlOiBpbmNyZWFzZSBwYXRoIGxlbmd0aCBsaW1pdAotCi1UaGUgVmZyQ29tcGlsZSB0b29sIGhhcyBhIGhhcmQtY29kZWQgbWF4aW11bSBsZW5ndGggZm9yIHBhdGggbmFtZXMKLXdoaWNoIHR1cm5lZCBvdXQgdG8gYmUgdG9vIHNtYWxsIGJ5IGFyb3VuZCAyMCBjaGFyYWN0ZXJzIGluIHRoZSBZb2N0bwotYXV0b2J1aWxkZXIgc2V0dXAuIEluY3JlYXNpbmcgdGhlIG1heGltdW0gYnkgYSBmYWN0b3Igb2YgNCBpcwotcmVsYXRpdmVseSBlYXN5IGFuZCBtYWtlcyB0aGUgcHJvYmxlbSBsZXNzIGxpa2VseS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBQYXRyaWNrIE9obHkgPHBhdHJpY2sub2hseUBpbnRlbC5jb20+Ci0tLS0KLSBCYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9FZmlWZnIuaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL0Jhc2VUb29scy9Tb3VyY2UvQy9WZnJDb21waWxlL0VmaVZmci5oIGIvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvRWZpVmZyLmgKLWluZGV4IGQxODc5MDIuLjlhZDRhN2IgMTAwNjQ0Ci0tLS0gYS9CYXNlVG9vbHMvU291cmNlL0MvVmZyQ29tcGlsZS9FZmlWZnIuaAotKysrIGIvQmFzZVRvb2xzL1NvdXJjZS9DL1ZmckNvbXBpbGUvRWZpVmZyLmgKLUBAIC0xOSw3ICsxOSw3IEBAIFdJVEhPVVQgV0FSUkFOVElFUyBPUiBSRVBSRVNFTlRBVElPTlMgT0YgQU5ZIEtJTkQsIEVJVEhFUiBFWFBSRVNTIE9SIElNUExJRUQuCi0gI2luY2x1ZGUgIkNvbW1vbi9VZWZpSW50ZXJuYWxGb3JtUmVwcmVzZW50YXRpb24uaCINCi0gI2luY2x1ZGUgIkNvbW1vbi9NZGVNb2R1bGVIaWkuaCINCi0gDQotLSNkZWZpbmUgTUFYX1BBVEggICAgICAgICAgICAgICAgIDI1NQ0KLSsjZGVmaW5lIE1BWF9QQVRIICAgICAgICAgICAgICAgICAxMDIzDQotICNkZWZpbmUgTUFYX1ZGUl9MSU5FX0xFTiAgICAgICAgIDQwOTYNCi0gDQotICNkZWZpbmUgRUZJX0lGUl9NQVhfTEVOR1RIICAgICAgIDB4RkYNCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mL25vLXN0YWNrLXByb3RlY3Rvci1hbGwtYXJjaHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZi9uby1zdGFjay1wcm90ZWN0b3ItYWxsLWFyY2hzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjY1MzQ4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mL25vLXN0YWNrLXByb3RlY3Rvci1hbGwtYXJjaHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1BdXRob3I6IFN0ZXZlIExhbmdhc2VrIDxzdGV2ZS5sYW5nYXNla0B1YnVudHUuY29tPgotRGVzY3JpcHRpb246IHBhc3MgLWZuby1zdGFjay1wcm90ZWN0b3IgdG8gYWxsIEdDQyB0b29sY2hhaW5zCi0gVGhlIHVwc3RyZWFtIGJ1aWxkIHJ1bGVzIGluZXhwbGljYWJseSBwYXNzIC1mbm8tc3RhY2stcHJvdGVjdG9yIG9ubHkKLSB3aGVuIGJ1aWxkaW5nIGZvciBpMzg2IGFuZCBhbWQ2NC4gIEFkZCB0aGlzIGVzc2VudGlhbCBhcmd1bWVudCB0byB0aGUKLSBnZW5lcmljIHJ1bGVzIGZvciBnY2MgNC40IGFuZCBsYXRlci4KLUxhc3QtVXBkYXRlZDogMjAxNi0wNC0xMgotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1JbmRleDogZ2l0L0Jhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdpdC5vcmlnL0Jhc2VUb29scy9Db25mL3Rvb2xzX2RlZi50ZW1wbGF0ZQotKysrIGdpdC9CYXNlVG9vbHMvQ29uZi90b29sc19kZWYudGVtcGxhdGUKLUBAIC0xNzM2LDEwICsxNzM2LDEwIEBAIERFRklORSBHQ0NfWDY0X1JDX0ZMQUdTICAgICAgICAgICAgPSAtSSBiaW5hcnkgLU8gZWxmNjQteDg2LTY0ICAgICAgICAtQiBpMzg2Ci0gREVGSU5FIEdDQ19BUk1fUkNfRkxBR1MgICAgICAgICAgICA9IC1JIGJpbmFyeSAtTyBlbGYzMi1saXR0bGVhcm0gICAgIC1CIGFybSAgICAgLS1yZW5hbWUtc2VjdGlvbiAuZGF0YT0uaGlpDQotIERFRklORSBHQ0NfQUFSQ0g2NF9SQ19GTEFHUyAgICAgICAgPSAtSSBiaW5hcnkgLU8gZWxmNjQtbGl0dGxlYWFyY2g2NCAtQiBhYXJjaDY0IC0tcmVuYW1lLXNlY3Rpb24gLmRhdGE9LmhpaQ0KLSANCi0tREVGSU5FIEdDQzQ4X0FMTF9DQ19GTEFHUyAgICAgICAgICAgID0gLWcgLWZzaG9ydC13Y2hhciAtZm5vLWJ1aWx0aW4gLWZuby1zdHJpY3QtYWxpYXNpbmcgLVdhbGwgLVdlcnJvciAtV25vLWFycmF5LWJvdW5kcyAtZmZ1bmN0aW9uLXNlY3Rpb25zIC1mZGF0YS1zZWN0aW9ucyAtaW5jbHVkZSBBdXRvR2VuLmggLWZuby1jb21tb24gLURTVFJJTkdfQVJSQVlfTkFNRT0kKEJBU0VfTkFNRSlTdHJpbmdzDQotK0RFRklORSBHQ0M0OF9BTExfQ0NfRkxBR1MgICAgICAgICAgICA9IC1nIC1mc2hvcnQtd2NoYXIgLWZuby1idWlsdGluIC1mbm8tc3RyaWN0LWFsaWFzaW5nIC1XYWxsIC1XZXJyb3IgLVduby1hcnJheS1ib3VuZHMgLWZmdW5jdGlvbi1zZWN0aW9ucyAtZmRhdGEtc2VjdGlvbnMgLWZuby1zdGFjay1wcm90ZWN0b3IgLWluY2x1ZGUgQXV0b0dlbi5oIC1mbm8tY29tbW9uIC1EU1RSSU5HX0FSUkFZX05BTUU9JChCQVNFX05BTUUpU3RyaW5ncw0KLSBERUZJTkUgR0NDNDhfSUEzMl9YNjRfRExJTktfQ09NTU9OICAgPSAtbm9zdGRsaWIgLVdsLC1uLC1xLC0tZ2Mtc2VjdGlvbnMgLXogY29tbW9uLXBhZ2Utc2l6ZT0weDIwDQotLURFRklORSBHQ0M0OF9JQTMyX0NDX0ZMQUdTICAgICAgICAgICA9IERFRihHQ0M0OF9BTExfQ0NfRkxBR1MpIC1tMzIgLW1hcmNoPWk1ODYgLW1hbGlnbi1kb3VibGUgLWZuby1zdGFjay1wcm90ZWN0b3IgLUQgRUZJMzIgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyAtV25vLWFkZHJlc3MNCi0tREVGSU5FIEdDQzQ4X1g2NF9DQ19GTEFHUyAgICAgICAgICAgID0gREVGKEdDQzQ4X0FMTF9DQ19GTEFHUykgLW02NCAtZm5vLXN0YWNrLXByb3RlY3RvciAiLURFRklBUEk9X19hdHRyaWJ1dGVfXygobXNfYWJpKSkiIC1tYWNjdW11bGF0ZS1vdXRnb2luZy1hcmdzIC1tbm8tcmVkLXpvbmUgLVduby1hZGRyZXNzIC1tY21vZGVsPXNtYWxsIC1mcGllIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLVduby1hZGRyZXNzDQotK0RFRklORSBHQ0M0OF9JQTMyX0NDX0ZMQUdTICAgICAgICAgICA9IERFRihHQ0M0OF9BTExfQ0NfRkxBR1MpIC1tMzIgLW1hcmNoPWk1ODYgLW1hbGlnbi1kb3VibGUgLUQgRUZJMzIgLWZuby1hc3luY2hyb25vdXMtdW53aW5kLXRhYmxlcyAtV25vLWFkZHJlc3MNCi0rREVGSU5FIEdDQzQ4X1g2NF9DQ19GTEFHUyAgICAgICAgICAgID0gREVGKEdDQzQ4X0FMTF9DQ19GTEFHUykgLW02NCAiLURFRklBUEk9X19hdHRyaWJ1dGVfXygobXNfYWJpKSkiIC1tYWNjdW11bGF0ZS1vdXRnb2luZy1hcmdzIC1tbm8tcmVkLXpvbmUgLVduby1hZGRyZXNzIC1tY21vZGVsPXNtYWxsIC1mcGllIC1mbm8tYXN5bmNocm9ub3VzLXVud2luZC10YWJsZXMgLVduby1hZGRyZXNzDQotIERFRklORSBHQ0M0OF9JQTMyX1g2NF9BU0xETElOS19GTEFHUyA9IERFRihHQ0M0OF9JQTMyX1g2NF9ETElOS19DT01NT04pIC1XbCwtLWVudHJ5LFJlZmVyZW5jZUFjcGlUYWJsZSAtdSBSZWZlcmVuY2VBY3BpVGFibGUNCi0gREVGSU5FIEdDQzQ4X0lBMzJfWDY0X0RMSU5LX0ZMQUdTICAgID0gREVGKEdDQzQ4X0lBMzJfWDY0X0RMSU5LX0NPTU1PTikgLVdsLC0tZW50cnksJChJTUFHRV9FTlRSWV9QT0lOVCkgLXUgJChJTUFHRV9FTlRSWV9QT0lOVCkgLVdsLC1NYXAsJChERVNUX0RJUl9ERUJVRykvJChCQVNFX05BTUUpLm1hcCwtLXdob2xlLWFyY2hpdmUNCi0gREVGSU5FIEdDQzQ4X0lBMzJfRExJTksyX0ZMQUdTICAgICAgID0gLVdsLC0tZGVmc3ltPVBFQ09GRl9IRUFERVJfU0laRT0weDIyMCBERUYoR0NDX0RMSU5LMl9GTEFHU19DT01NT04pDQotQEAgLTE3NDgsNyArMTc0OCw3IEBAIERFRklORSBHQ0M0OF9YNjRfRExJTksyX0ZMQUdTICAgICAgICA9IC1XbCwtLWRlZnN5bT1QRUNPRkZfSEVBREVSX1NJWkU9MHgyMjggREVGCi0gREVGSU5FIEdDQzQ4X0FTTV9GTEFHUyAgICAgICAgICAgICAgID0gREVGKEdDQ19BU01fRkxBR1MpDQotIERFRklORSBHQ0M0OF9BUk1fQVNNX0ZMQUdTICAgICAgICAgICA9ICQoQVJDSEFTTV9GTEFHUykgJChQTEFURk9STV9GTEFHUykgREVGKEdDQ19BU01fRkxBR1MpIC1tbGl0dGxlLWVuZGlhbg0KLSBERUZJTkUgR0NDNDhfQUFSQ0g2NF9BU01fRkxBR1MgICAgICAgPSAkKEFSQ0hBU01fRkxBR1MpICQoUExBVEZPUk1fRkxBR1MpIERFRihHQ0NfQVNNX0ZMQUdTKSAtbWxpdHRsZS1lbmRpYW4NCi0tREVGSU5FIEdDQzQ4X0FSTV9DQ19GTEFHUyAgICAgICAgICAgID0gJChBUkNIQ0NfRkxBR1MpICQoUExBVEZPUk1fRkxBR1MpIERFRihHQ0NfQVJNX0NDX0ZMQUdTKSAtZnN0YWNrLXByb3RlY3RvciAtbXdvcmQtcmVsb2NhdGlvbnMNCi0rREVGSU5FIEdDQzQ4X0FSTV9DQ19GTEFHUyAgICAgICAgICAgID0gJChBUkNIQ0NfRkxBR1MpICQoUExBVEZPUk1fRkxBR1MpIERFRihHQ0NfQVJNX0NDX0ZMQUdTKSAtbXdvcmQtcmVsb2NhdGlvbnMNCi0gREVGSU5FIEdDQzQ4X0FSTV9DQ19YSVBGTEFHUyAgICAgICAgID0gREVGKEdDQ19BUk1fQ0NfWElQRkxBR1MpDQotIERFRklORSBHQ0M0OF9BQVJDSDY0X0NDX0ZMQUdTICAgICAgICA9ICQoQVJDSENDX0ZMQUdTKSAkKFBMQVRGT1JNX0ZMQUdTKSAtbWNtb2RlbD1sYXJnZSBERUYoR0NDX0FBUkNINjRfQ0NfRkxBR1MpDQotIERFRklORSBHQ0M0OF9BQVJDSDY0X0NDX1hJUEZMQUdTICAgICA9IERFRihHQ0NfQUFSQ0g2NF9DQ19YSVBGTEFHUykNCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZl9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL292bWYvb3ZtZl9naXQuYmIKaW5kZXggZmYyYjJhNS4uOTY2N2ZhMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9vdm1mL292bWZfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvb3ZtZi9vdm1mX2dpdC5iYgpAQCAtMTMsMTQgKzEzLDE0IEBACiBQQUNLQUdFQ09ORklHW3NlY3VyZWJvb3RdID0gIiwsLCIKIAogU1JDX1VSSSA9ICJnaXRzbTovL2dpdGh1Yi5jb20vdGlhbm9jb3JlL2VkazIuZ2l0O2JyYW5jaD1tYXN0ZXI7cHJvdG9jb2w9Z2l0IFwKLQlmaWxlOi8vMDAwMi1vdm1mLXVwZGF0ZS1wYXRoLXRvLW5hdGl2ZS1CYXNlVG9vbHMucGF0Y2ggXAotCWZpbGU6Ly8wMDAzLUJhc2VUb29scy1tYWtlZmlsZS1hZGp1c3QtdG8tYnVpbGQtaW4tdW5kZXItYml0YmFrZS5wYXRjaCBcCi0JZmlsZTovLzAwMDQtb3ZtZi1lbmFibGUtbG9uZy1wYXRoLWZpbGUucGF0Y2ggXAotCWZpbGU6Ly9uby1zdGFjay1wcm90ZWN0b3ItYWxsLWFyY2hzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtb3ZtZi11cGRhdGUtcGF0aC10by1uYXRpdmUtQmFzZVRvb2xzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItQmFzZVRvb2xzLW1ha2VmaWxlLWFkanVzdC10by1idWlsZC1pbi11bmRlci1iaXRiYWtlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtb3ZtZi1lbmFibGUtbG9uZy1wYXRoLWZpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1vdm1mLVVwZGF0ZS10by1sYXRlc3QucGF0Y2ggXAogICAgICAgICAiCiAKLVBWID0gImVkazItc3RhYmxlMjAxOTA1IgotU1JDUkVWPSIyMGQyZTVhMTI1ZTM0ZmM4NTAxMDI2NjEzYTcxNTQ5YjJhMWEzZTU0IgorUFYgPSAiZWRrMi1zdGFibGUyMDE5MTEiCitTUkNSRVYgPSAiYmQ4NWJmNTRjMjY4MjA0YzdhNjk4YTk2ZjNjY2Q5NmNkNzc5NTJjZCIKIFVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPmVkazItc3RhYmxlLiopIgogCiBpbmhlcml0IGRlcGxveQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXNkay5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS1zZGsuYmIKaW5kZXggODg1NGVjNC4uMDNmYTUyOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1jb3JlLXNkay5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtc2RrLmJiCkBAIC0xNiw3ICsxNiw2IEBACiAgICAgY29yZXV0aWxzIFwKICAgICBjY2FjaGUgXAogICAgIGRpZmZ1dGlscyBcCi0gICAgaW50bHRvb2wgXAogICAgIHBlcmwtbW9kdWxlLXJlIFwKICAgICBwZXJsLW1vZHVsZS10ZXh0LXdyYXAgXAogICAgIGZpbmR1dGlscyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWNvcmUtdG9vbHMtcHJvZmlsZS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy1wcm9maWxlLmJiCmluZGV4IDNmZDQyM2MuLmFjMTgwYjUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy1wcm9maWxlLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtY29yZS10b29scy1wcm9maWxlLmJiCkBAIC0xMCw3ICsxMCw3IEBACiAKIGluaGVyaXQgcGFja2FnZWdyb3VwCiAKLVBST0ZJTEVfVE9PTFNfWCA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdzeXNwcm9mJywgJycsIGQpfSIKK1BST0ZJTEVfVE9PTFNfWCA9ICIiCiAjIHN5c3Byb2YgZG9lc24ndCBzdXBwb3J0IGFhcmNoNjQgYW5kIG5pb3MyCiBQUk9GSUxFX1RPT0xTX1hfYWFyY2g2NCA9ICIiCiBQUk9GSUxFX1RPT0xTX1hfbmlvczIgPSAiIgpAQCAtNDYsNiArNDYsNyBAQAogTFRUTkdNT0RVTEVTX2FyYyA9ICIiCiAKIEJBQkVMVFJBQ0UgPSAiYmFiZWx0cmFjZSIKK0JBQkVMVFJBQ0UyID0gImJhYmVsdHJhY2UyIgogCiAjIHZhbGdyaW5kIGRvZXMgbm90IHdvcmsgb24gdGhlIGZvbGxvd2luZyBjb25maWd1cmF0aW9ucy9hcmNoaXRlY3R1cmVzCiAKQEAgLTY5LDYgKzcwLDcgQEAKICAgICAke0xUVE5HVE9PTFN9IFwKICAgICAke0xUVE5HTU9EVUxFU30gXAogICAgICR7QkFCRUxUUkFDRX0gXAorICAgICR7QkFCRUxUUkFDRTJ9IFwKICAgICAke1NZU1RFTVRBUH0gXAogICAgICR7VkFMR1JJTkR9IFwKICAgICAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLWdvLXNkay10YXJnZXQuYmIKaW5kZXggNWFmYjQ5MC4uOWE1MmIwNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1nby1zZGstdGFyZ2V0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtZ28tc2RrLXRhcmdldC5iYgpAQCAtMyw5ICszLDEwIEBACiBpbmhlcml0IHBhY2thZ2Vncm91cCBnb2FyY2gKIAogUkRFUEVORFNfJHtQTn0gPSAiIFwKKyAgICBnbyBcCiAgICAgZ28tcnVudGltZSBcCiAgICAgZ28tcnVudGltZS1kZXYgXAogICAgIGdvLXJ1bnRpbWUtc3RhdGljZGV2IFwKICIKIAotQ09NUEFUSUJMRV9IT1NUID0gIl4oPyFyaXNjdjY0KS4qIgorQ09NUEFUSUJMRV9IT1NUID0gIl4oPyFyaXNjdjMyKS4qIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcGFja2FnZWdyb3Vwcy9wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQuYmIKaW5kZXggMGFhYjIzZS4uOWE3MGIxOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wYWNrYWdlZ3JvdXBzL3BhY2thZ2Vncm91cC1zZWxmLWhvc3RlZC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BhY2thZ2Vncm91cHMvcGFja2FnZWdyb3VwLXNlbGYtaG9zdGVkLmJiCkBAIC03NSw3ICs3NSw2IEBACiAgICAgZysrLXN5bWxpbmtzIFwKICAgICBnY2MgXAogICAgIGdjYy1zeW1saW5rcyBcCi0gICAgaW50bHRvb2wgXAogICAgIGxkZCBcCiAgICAgbGVzcyBcCiAgICAgbGlic3RkYysrIFwKQEAgLTEwOSw3ICsxMDgsNiBAQAogCiBSREVQRU5EU19wYWNrYWdlZ3JvdXAtc2VsZi1ob3N0ZWQtZXh0ZW5kZWQgPSAiXAogICAgIGJ6aXAyIFwKLSAgICBjaGtjb25maWcgXAogICAgIGNocnBhdGggXAogICAgIGNwaW8gXAogICAgIGN1cmwgXApAQCAtMTUzLDggKzE1MSw2IEBACiAgICAgcGVybC1taXNjIFwKICAgICBwZXJsLW1vZHVsZXMgXAogICAgIHBlcmwtcG9kIFwKLSAgICBweXRob24gXAotICAgIHB5dGhvbi1tb2R1bGVzIFwKICAgICBweXRob24zIFwKICAgICBweXRob24zLW1vZHVsZXMgXAogICAgIHB5dGhvbjMtZ2l0IFwKQEAgLTE2OCw3ICsxNjQsNiBAQAogICAgIHN5c3N0YXQgXAogICAgIHRhciBcCiAgICAgdGNsIFwKLSAgICB0ZXhpMmh0bWwgXAogICAgIHRleGluZm8gXAogICAgIHVuemlwIFwKICAgICB1c2J1dGlscyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvZmlsZXMvcHNwbGFzaC1pbml0IGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtaW5pdAppbmRleCA0YmVlODY2Li5mNThlMDQzIDEwMDc1NQotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvZmlsZXMvcHNwbGFzaC1pbml0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9maWxlcy9wc3BsYXNoLWluaXQKQEAgLTIzLDEwICsyMywxMCBAQAogICAgICAgICBlc2FjCiBkb25lCiAKLWV4cG9ydCBUTVBESVI9L21udC8ucHNwbGFzaAotWyAtZCAkVE1QRElSIF0gfHwgbWtkaXIgLXAgJFRNUERJUgotaWYgISBtb3VudHBvaW50IC1xICRUTVBESVI7IHRoZW4KLQltb3VudCB0bXBmcyAtdCB0bXBmcyAkVE1QRElSIC1vLHNpemU9NDBrCitleHBvcnQgUFNQTEFTSF9GSUZPX0RJUj0vbW50Ly5wc3BsYXNoCitbIC1kICRQU1BMQVNIX0ZJRk9fRElSIF0gfHwgbWtkaXIgLXAgJFBTUExBU0hfRklGT19ESVIKK2lmICEgbW91bnRwb2ludCAtcSAkUFNQTEFTSF9GSUZPX0RJUjsgdGhlbgorCW1vdW50IHRtcGZzIC10IHRtcGZzICRQU1BMQVNIX0ZJRk9fRElSIC1vLHNpemU9NDBrCiBmaQogCiByb3RhdGlvbj0wCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvZmlsZXMvcHNwbGFzaC1zdGFydC5zZXJ2aWNlIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtc3RhcnQuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNmMyYmIzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtc3RhcnQuc2VydmljZQpAQCAtMCwwICsxLDEyIEBACitbVW5pdF0KK0Rlc2NyaXB0aW9uPVN0YXJ0IHBzcGxhc2ggYm9vdCBzcGxhc2ggc2NyZWVuCitEZWZhdWx0RGVwZW5kZW5jaWVzPW5vCitSZXF1aXJlc01vdW50c0Zvcj0vcnVuCisKK1tTZXJ2aWNlXQorVHlwZT1ub3RpZnkKK0V4ZWNTdGFydD0vdXNyL2Jpbi9wc3BsYXNoCitSZW1haW5BZnRlckV4aXQ9eWVzCisKK1tJbnN0YWxsXQorV2FudGVkQnk9c3lzaW5pdC50YXJnZXQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9maWxlcy9wc3BsYXNoLXN5c3RlbWQuc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9maWxlcy9wc3BsYXNoLXN5c3RlbWQuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wODIyMDdmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL2ZpbGVzL3BzcGxhc2gtc3lzdGVtZC5zZXJ2aWNlCkBAIC0wLDAgKzEsMTMgQEAKK1tVbml0XQorRGVzY3JpcHRpb249U3RhcnQgcHNwbGFzaC1zeXN0ZW1kIHByb2dyZXNzIGNvbW11bmljYXRpb24gaGVscGVyCitEZWZhdWx0RGVwZW5kZW5jaWVzPW5vCitBZnRlcj1wc3BsYXNoLXN0YXJ0LnNlcnZpY2UKK1JlcXVpcmVzPXBzcGxhc2gtc3RhcnQuc2VydmljZQorUmVxdWlyZXNNb3VudHNGb3I9L3J1bgorCitbU2VydmljZV0KK0V4ZWNTdGFydD0vdXNyL2Jpbi9wc3BsYXNoLXN5c3RlbWQKK1JlbWFpbkFmdGVyRXhpdD15ZXMKKworW0luc3RhbGxdCitXYW50ZWRCeT1zeXNpbml0LnRhcmdldApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9wc3BsYXNoL3BzcGxhc2hfZ2l0LmJiCmluZGV4IDU2NzM0YzEuLjIyYzcxZjAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcHNwbGFzaC9wc3BsYXNoX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3BzcGxhc2gvcHNwbGFzaF9naXQuYmIKQEAgLTMsMTQgKzMsMTcgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL3BzcGxhc2giCiBTRUNUSU9OID0gImJhc2UiCiBMSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BzcGxhc2guaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE2O21kNT04NDBmYjIzNTZiMTBhODViZWQ3OGRkMDlkYzc3NDVjNiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3BzcGxhc2guaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTg7bWQ1PThmMjMyYzFlOTU5MjllYWNhYjM3ZjAwOTAwNTgwMjI0IgorREVQRU5EUyA9ICJnZGstcGl4YnVmLW5hdGl2ZSIKIAotU1JDUkVWID0gIjIwMTVmNzA3M2U5OGRkOTU2MmRiMDkzNmEyNTRhZjVlZjU2MzU2Y2YiCitTUkNSRVYgPSAiMGE5MDJmN2NkODc1Y2NmMDE4NDU2NDUxYmUzNjlmMDVmYTU1Zjk2MiIKIFBWID0gIjAuMStnaXQke1NSQ1BWfSIKIFBSID0gInIxNSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy8ke0JQTn0gXAogICAgICAgICAgICBmaWxlOi8vcHNwbGFzaC1pbml0IFwKKyAgICAgICAgICAgZmlsZTovL3BzcGxhc2gtc3RhcnQuc2VydmljZSBcCisgICAgICAgICAgIGZpbGU6Ly9wc3BsYXNoLXN5c3RlbWQuc2VydmljZSBcCiAgICAgICAgICAgICR7U1BMQVNIX0lNQUdFU30iCiBVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKQEAgLTIxLDcgKzI0LDYgQEAKICAgICBzcGxhc2hmaWxlcyA9IGQuZ2V0VmFyKCdTUExBU0hfSU1BR0VTJykuc3BsaXQoKQogICAgIHBrZ3MgPSBbXQogICAgIGxvY2FscGF0aHMgPSBbXQotICAgIGhhc3BuZyA9IEZhbHNlCiAgICAgZm9yIHVyaSBpbiBzcGxhc2hmaWxlczoKICAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoMi5GZXRjaChbdXJpXSwgZCkKICAgICAgICAgZmxvY2FsID0gb3MucGF0aC5iYXNlbmFtZShmZXRjaGVyLmxvY2FscGF0aCh1cmkpKQpAQCAtMzksMTcgKzQxLDEyIEBACiAgICAgICAgICAgICBiYi5mYXRhbCgiVGhlIG91dHB1dCBuYW1lICclcycgZGVyaXZlZCBmcm9tIHRoZSBVUkkgJXMgaXMgbm90IHZhbGlkLCBwbGVhc2Ugc3BlY2lmeSB0aGUgb3V0c3VmZml4IHBhcmFtZXRlciIgJSAob3V0bmFtZSwgdXJpKSkKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHBrZ3MuYXBwZW5kKG91dG5hbWUpCi0gICAgICAgIGlmIGZsb2NhbC5lbmRzd2l0aCgiLnBuZyIpOgotICAgICAgICAgICAgaGFzcG5nID0gVHJ1ZQogICAgICAgICBsb2NhbHBhdGhzLmFwcGVuZChmbG9jYWwpCiAKICAgICAjIFNldCB0aGVzZSBzbyB0aGF0IHdlIGhhdmUgbGVzcyB3b3JrIHRvIGRvIGluIGRvX2NvbXBpbGUgYW5kIGRvX2luc3RhbGxfYXBwZW5kCiAgICAgZC5zZXRWYXIoIlNQTEFTSF9JTlNUQUxMIiwgIiAiLmpvaW4ocGtncykpCiAgICAgZC5zZXRWYXIoIlNQTEFTSF9MT0NBTFBBVEhTIiwgIiAiLmpvaW4obG9jYWxwYXRocykpCiAKLSAgICBpZiBoYXNwbmc6Ci0gICAgICAgIGQuYXBwZW5kVmFyKCJERVBFTkRTIiwgIiBnZGstcGl4YnVmLW5hdGl2ZSIpCi0KICAgICBkLnByZXBlbmRWYXIoIlBBQ0tBR0VTIiwgIiVzICIgJSAoIiAiLmpvaW4ocGtncykpKQogICAgIG1scHJlZml4ID0gZC5nZXRWYXIoJ01MUFJFRklYJykgb3IgJycKICAgICBwbiA9IGQuZ2V0VmFyKCdQTicpIG9yICcnCkBAIC02Niw3ICs2MywxMSBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgc3lzdGVtZAorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKKworUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItLXdpdGgtc3lzdGVtZCwtLXdpdGhvdXQtc3lzdGVtZCxzeXN0ZW1kIgogCiBBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbcHNwbGFzaF0gPSAiJHtiaW5kaXJ9L3BzcGxhc2giCkBAIC03OCw3ICs3OSw3IEBACiAgICAgIyBCdWlsZCBhIHNlcGFyYXRlIGV4ZWN1dGFibGUgZm9yIGVhY2ggc3BsYXNoIGltYWdlCiAgICAgd29ya2RpciA9IGQuZ2V0VmFyKCdXT1JLRElSJykKICAgICBjb252ZXJ0c2NyaXB0ID0gIiVzL21ha2UtaW1hZ2UtaGVhZGVyLnNoIiAlIGQuZ2V0VmFyKCdTJykKLSAgICBkZXN0ZmlsZSA9ICIlcy9wc3BsYXNoLXBva3ktaW1nLmgiICUgZC5nZXRWYXIoJ1MnKQorICAgIGRlc3RmaWxlID0gIiVzL3BzcGxhc2gtcG9reS1pbWcuaCIgJSBkLmdldFZhcignQicpCiAgICAgbG9jYWxmaWxlcyA9IGQuZ2V0VmFyKCdTUExBU0hfTE9DQUxQQVRIUycpLnNwbGl0KCkKICAgICBvdXRwdXRmaWxlcyA9IGQuZ2V0VmFyKCdTUExBU0hfSU5TVEFMTCcpLnNwbGl0KCkKICAgICBmb3IgbG9jYWxmaWxlLCBvdXRwdXRmaWxlIGluIHppcChsb2NhbGZpbGVzLCBvdXRwdXRmaWxlcyk6CkBAIC05Nyw4ICs5OCwxNyBAQAogfQogCiBkb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC8KLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9wc3BsYXNoLWluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3BzcGxhc2guc2gKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCisJCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L3BzcGxhc2gtaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcHNwbGFzaC5zaAorCWZpCisKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJCWluc3RhbGwgLW0gNjQ0ICR7V09SS0RJUn0vcHNwbGFzaC1zdGFydC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3BzcGxhc2gtc3lzdGVtZC5zZXJ2aWNlICR7RH0vJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWZpCisKIAlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0KIAlmb3IgaSBpbiAke1NQTEFTSF9JTlNUQUxMfSA7IGRvCiAJCWluc3RhbGwgLW0gMDc1NSAkaSAke0R9JHtiaW5kaXJ9LyRpCkBAIC0xMDYsMTUgKzExNiw4IEBACiAJcm0gLWYgJHtEfSR7YmluZGlyfS9wc3BsYXNoCiB9CiAKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCcke1BOfScsJycsZCl9IgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzeXN0ZW1kJywgJ3BzcGxhc2gtc3RhcnQuc2VydmljZSBwc3BsYXNoLXN5c3RlbWQuc2VydmljZScsICcnLCBkKX0iCisKIElOSVRTQ1JJUFRfTkFNRSA9ICJwc3BsYXNoLnNoIgogSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMCBTIC4gc3RvcCAyMCAwIDEgNiAuIgotCi1QQUNLQUdFX1dSSVRFX0RFUFNfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3N5c3RlbWQtc3lzdGVtY3RsLW5hdGl2ZScsJycsZCl9IgotcGtnX3Bvc3RpbnN0XyR7UE59ICgpIHsKLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCi0JCWlmIFsgLW4gIiREIiBdOyB0aGVuCi0JCQlPUFRTPSItLXJvb3Q9JEQiCi0JCWZpCi0JCXN5c3RlbWN0bCAkT1BUUyBtYXNrIHBzcGxhc2guc2VydmljZQotCWZpCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3JlYWRsaW5lL3JlYWRsaW5lLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcmVhZGxpbmUvcmVhZGxpbmUuaW5jCmluZGV4IDA3ZjU0YTcuLjA1MmUyZDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcmVhZGxpbmUvcmVhZGxpbmUuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvcmVhZGxpbmUvcmVhZGxpbmUuaW5jCkBAIC00NCw3ICs0NCwxMyBAQAogCiBDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vaW5wdXRyYyIKIAoraW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJoaXN0b3J5LjMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaGlzdG9yeS4zXSA9ICIke21hbmRpcn0vbWFuMy9oaXN0b3J5LjMiCisKICMgT3BlblN1c2UgaW5qZWN0cyB2ZXJzaW9ucyBpbnRvIGxpYnJlYWRsaW5lIGxlYWRpbmcgdG8gY29uZmljaXRzIGJldHdlZW4gb3VyIG5hdGl2ZSBvbmUgYW5kIHRoZWlycwogIyBzZWUgdGhlaXIgc3BlYyBmaWxlIGZvciB3aGVyZSB0aGlzIGlzIGluamVjdGVkLiBFeHRyYSB2ZXJzaW9uaW5nIGlzIGhhcm1sZXNzIHNvIHdlIGp1c3QgZG8gdGhlIHNhbWUuCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9ybC1uYXRpdmUubWFwIgotTERGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtV2wsLS12ZXJzaW9uLXNjcmlwdD0ke1dPUktESVJ9L3JsLW5hdGl2ZS5tYXAiClwgTm8gbmV3bGluZSBhdCBlbmQgb2YgZmlsZQorTERGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtV2wsLS12ZXJzaW9uLXNjcmlwdD0ke1dPUktESVJ9L3JsLW5hdGl2ZS5tYXAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1ib290XzI0My5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3RfMjQzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1MTVhYmMyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3RfMjQzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzAgKzAsMCBAQAotcmVxdWlyZSBzeXN0ZW1kLmluYwotRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vc3lzdGVtZDoiCi0KLXJlcXVpcmUgY29uZi9pbWFnZS11ZWZpLmNvbmYKLQotREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgbGliY2FwIHV0aWwtbGludXggZ251LWVmaSBncGVyZi1uYXRpdmUiCi0KLSMgTk9URTogVGhlc2UgdGhyZWUgcGF0Y2hlcyBhcmUgaW4gdGhlb3J5IG5vdCBuZWVkZWQsIGJ1dCB3ZSBoYXZlbid0Ci0jICAgICAgIGZpZ3VyZWQgb3V0IGhvdyB0byBjb3JyZWN0bHkgcGFzcyBlZmktY2MgcGFyYW1ldGVyIGlmIGl0J3MgYW4gYXJyYXkuCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1SZXZlcnQtbWVzb24tdXNlLWFuLWFycmF5LW9wdGlvbi1mb3ItZWZpLWNjLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJldmVydC1tZXNvbi1wcmludC1FRkktQ0MtY29uZmlndXJhdGlvbi1uaWNlbHkucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LXRvLXJ1bi1lZmlfY2MtYW5kLWVmaV9sZC1jb3JyZWN0bHktd2hlbi1jcm9zcy1jby5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1tZXNvbi1BZGQtRGVmaS1vYmpjb3B5LW9wdGlvbi10by1zcGVjaWZ5LW9iamNvcHkucGF0Y2ggXAotICAgICAgICAgICAgIgotCi1pbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBnZXR0ZXh0Ci1pbmhlcml0IGRlcGxveQotCi1FRklfQ0MgPz0gIiR7Q0N9IgotRVhUUkFfT0VNRVNPTiArPSAiLURlZmk9dHJ1ZSBcCi0gICAgICAgICAgICAgICAgICAtRGdudS1lZmk9dHJ1ZSBcCi0gICAgICAgICAgICAgICAgICAtRGVmaS1pbmNsdWRlZGlyPSR7U1RBR0lOR19JTkNESVJ9L2VmaSBcCi0gICAgICAgICAgICAgICAgICAtRGVmaS1sZHNkaXI9JHtTVEFHSU5HX0xJQkRJUn0gXAotICAgICAgICAgICAgICAgICAgLURlZmktbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKLSAgICAgICAgICAgICAgICAgIC1EbWFuPWZhbHNlIFwKLSAgICAgICAgICAgICAgICAgIC1EZWZpLWNjPScke0VGSV9DQ30nIFwKLSAgICAgICAgICAgICAgICAgIC1EZWZpLWxkPScke0xEfScgXAotICAgICAgICAgICAgICAgICAgLURlZmktb2JqY29weT0nJHtPQkpDT1BZfScgXAotICAgICAgICAgICAgICAgICAgIgotCi0jIGluc3RhbGwgdG8gdGhlIGltYWdlIGFzIGJvb3QqLmVmaSBpZiBpdHMgdGhlIEVGSV9QUk9WSURFUiwKLSMgb3RoZXJ3aXNlIGluc3RhbGwgYXMgdGhlIGZ1bGwgbmFtZS4KLSMgVGhpcyBhbGxvd3MgbXVsdGlwbGUgYm9vdGxvYWRlcnMgdG8gY29leGlzdCBpbiBhIHNpbmdsZSBpbWFnZS4KLXB5dGhvbiBfX2Fub255bW91cyAoKSB7Ci0gICAgaW1wb3J0IHJlCi0gICAgdGFyZ2V0ID0gZC5nZXRWYXIoJ1RBUkdFVF9BUkNIJykKLSAgICBwcmVmaXggPSAiIiBpZiBkLmdldFZhcignRUZJX1BST1ZJREVSJykgPT0gInN5c3RlbWQtYm9vdCIgZWxzZSAic3lzdGVtZC0iCi0gICAgc3lzdGVtZGltYWdlID0gcHJlZml4ICsgZC5nZXRWYXIoIkVGSV9CT09UX0lNQUdFIikKLSAgICBkLnNldFZhcigiU1lTVEVNRF9CT09UX0lNQUdFIiwgc3lzdGVtZGltYWdlKQotICAgIHByZWZpeCA9ICJzeXN0ZW1kLSIgaWYgcHJlZml4ID09ICIiIGVsc2UgIiIKLSAgICBkLnNldFZhcigiU1lTVEVNRF9CT09UX0lNQUdFX1BSRUZJWCIsIHByZWZpeCkKLX0KLQotRklMRVNfJHtQTn0gPSAiJHtFRklfRklMRVNfUEFUSH0vJHtTWVNURU1EX0JPT1RfSU1BR0V9IgotCi1SREVQRU5EU18ke1BOfSArPSAidmlydHVhbC9zeXN0ZW1kLWJvb3Rjb25mIgotCi0jIEltcG9ydGVkIGZyb20gdGhlIG9sZCBndW1taWJvb3QgcmVjaXBlCi1UVU5FX0NDQVJHU19yZW1vdmUgPSAiLW1mcG1hdGg9c3NlIgotQ09NUEFUSUJMRV9IT1NUID0gIih4ODZfNjQuKnxpLjg2LiopLWxpbnV4IgotQ09NUEFUSUJMRV9IT1NUX3g4Ni14MzIgPSAibnVsbCIKLQotZG9fY29tcGlsZSgpIHsKLQlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9ImlhMzIiCi0JaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgXTsgdGhlbgotCQlTWVNURU1EX0JPT1RfRUZJX0FSQ0g9Ing2NCIKLQlmaQotCi0JbmluamEgc3JjL2Jvb3QvZWZpLyR7U1lTVEVNRF9CT09UX0lNQUdFX1BSRUZJWH0ke1NZU1RFTURfQk9PVF9JTUFHRX0KLX0KLQotZG9faW5zdGFsbCgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke0VGSV9GSUxFU19QQVRIfQotCWluc3RhbGwgJHtCfS9zcmMvYm9vdC9lZmkvc3lzdGVtZC1ib290Ki5lZmkgJHtEfSR7RUZJX0ZJTEVTX1BBVEh9LyR7U1lTVEVNRF9CT09UX0lNQUdFfQotfQotCi1kb19kZXBsb3kgKCkgewotCWluc3RhbGwgJHtCfS9zcmMvYm9vdC9lZmkvc3lzdGVtZC1ib290Ki5lZmkgJHtERVBMT1lESVJ9Ci19Ci1hZGR0YXNrIGRlcGxveSBiZWZvcmUgZG9fYnVpbGQgYWZ0ZXIgZG9fY29tcGlsZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtYm9vdF8yNDUuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3RfMjQ1LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjkyYzYzOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWJvb3RfMjQ1LjUuYmIKQEAgLTAsMCArMSw3MCBAQAorcmVxdWlyZSBzeXN0ZW1kLmluYworRklMRVNFWFRSQVBBVEhTID0uICIke0ZJTEVfRElSTkFNRX0vc3lzdGVtZDoiCisKK3JlcXVpcmUgY29uZi9pbWFnZS11ZWZpLmNvbmYKKworREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgbGliY2FwIHV0aWwtbGludXggZ251LWVmaSBncGVyZi1uYXRpdmUiCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIGdldHRleHQKK2luaGVyaXQgZGVwbG95CisKK0xERkxBR1NfcHJlcGVuZCA9ICIke0AgIiAiLmpvaW4oZC5nZXRWYXIoJ0xEJykuc3BsaXQoKVsxOl0pfSAiCisKK2RvX3dyaXRlX2NvbmZpZ1t2YXJkZXBzXSArPSAiQ0MgT0JKQ09QWSIKK2RvX3dyaXRlX2NvbmZpZ19hcHBlbmQoKSB7CisgICAgY2F0ID4ke1dPUktESVJ9L21lc29uLSR7UE59LmNyb3NzIDw8RU9GCitbYmluYXJpZXNdCitlZmlfY2MgPSAke0BtZXNvbl9hcnJheSgnQ0MnLCBkKX0KK29iamNvcHkgPSAke0BtZXNvbl9hcnJheSgnT0JKQ09QWScsIGQpfQorRU9GCit9CisKK0VYVFJBX09FTUVTT04gKz0gIi1EZWZpPXRydWUgXAorICAgICAgICAgICAgICAgICAgLURnbnUtZWZpPXRydWUgXAorICAgICAgICAgICAgICAgICAgLURlZmktaW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfS9lZmkgXAorICAgICAgICAgICAgICAgICAgLURlZmktbGliZGlyPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgICAgICAgICAgICAgICAgIC1EZWZpLWxkPSR7QCBkLmdldFZhcignTEQnKS5zcGxpdCgpWzBdfSBcCisgICAgICAgICAgICAgICAgICAtRG1hbj1mYWxzZSBcCisgICAgICAgICAgICAgICAgICAtLWNyb3NzLWZpbGUgJHtXT1JLRElSfS9tZXNvbi0ke1BOfS5jcm9zcyBcCisgICAgICAgICAgICAgICAgICAiCisKKyMgaW5zdGFsbCB0byB0aGUgaW1hZ2UgYXMgYm9vdCouZWZpIGlmIGl0cyB0aGUgRUZJX1BST1ZJREVSLAorIyBvdGhlcndpc2UgaW5zdGFsbCBhcyB0aGUgZnVsbCBuYW1lLgorIyBUaGlzIGFsbG93cyBtdWx0aXBsZSBib290bG9hZGVycyB0byBjb2V4aXN0IGluIGEgc2luZ2xlIGltYWdlLgorcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKKyAgICBpbXBvcnQgcmUKKyAgICB0YXJnZXQgPSBkLmdldFZhcignVEFSR0VUX0FSQ0gnKQorICAgIHByZWZpeCA9ICIiIGlmIGQuZ2V0VmFyKCdFRklfUFJPVklERVInKSA9PSAic3lzdGVtZC1ib290IiBlbHNlICJzeXN0ZW1kLSIKKyAgICBzeXN0ZW1kaW1hZ2UgPSBwcmVmaXggKyBkLmdldFZhcigiRUZJX0JPT1RfSU1BR0UiKQorICAgIGQuc2V0VmFyKCJTWVNURU1EX0JPT1RfSU1BR0UiLCBzeXN0ZW1kaW1hZ2UpCisgICAgcHJlZml4ID0gInN5c3RlbWQtIiBpZiBwcmVmaXggPT0gIiIgZWxzZSAiIgorICAgIGQuc2V0VmFyKCJTWVNURU1EX0JPT1RfSU1BR0VfUFJFRklYIiwgcHJlZml4KQorfQorCitGSUxFU18ke1BOfSA9ICIke0VGSV9GSUxFU19QQVRIfS8ke1NZU1RFTURfQk9PVF9JTUFHRX0iCisKK1JERVBFTkRTXyR7UE59ICs9ICJ2aXJ0dWFsL3N5c3RlbWQtYm9vdGNvbmYiCisKKyMgSW1wb3J0ZWQgZnJvbSB0aGUgb2xkIGd1bW1pYm9vdCByZWNpcGUKK1RVTkVfQ0NBUkdTX3JlbW92ZSA9ICItbWZwbWF0aD1zc2UiCitDT01QQVRJQkxFX0hPU1QgPSAiKHg4Nl82NC4qfGkuODYuKiktbGludXgiCitDT01QQVRJQkxFX0hPU1RfeDg2LXgzMiA9ICJudWxsIgorCitkb19jb21waWxlKCkgeworCVNZU1RFTURfQk9PVF9FRklfQVJDSD0iaWEzMiIKKwlpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiBdOyB0aGVuCisJCVNZU1RFTURfQk9PVF9FRklfQVJDSD0ieDY0IgorCWZpCisKKwluaW5qYSBzcmMvYm9vdC9lZmkvJHtTWVNURU1EX0JPT1RfSU1BR0VfUFJFRklYfSR7U1lTVEVNRF9CT09UX0lNQUdFfQorfQorCitkb19pbnN0YWxsKCkgeworCWluc3RhbGwgLWQgJHtEfSR7RUZJX0ZJTEVTX1BBVEh9CisJaW5zdGFsbCAke0J9L3NyYy9ib290L2VmaS9zeXN0ZW1kLWJvb3QqLmVmaSAke0R9JHtFRklfRklMRVNfUEFUSH0vJHtTWVNURU1EX0JPT1RfSU1BR0V9Cit9CisKK2RvX2RlcGxveSAoKSB7CisJaW5zdGFsbCAke0J9L3NyYy9ib290L2VmaS9zeXN0ZW1kLWJvb3QqLmVmaSAke0RFUExPWURJUn0KK30KK2FkZHRhc2sgZGVwbG95IGJlZm9yZSBkb19idWlsZCBhZnRlciBkb19jb21waWxlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1jb21wYXQtdW5pdHMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1jb21wYXQtdW5pdHMuYmIKaW5kZXggZmFhNDI4Yi4uMzYxZGMxYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29tcGF0LXVuaXRzLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLWNvbXBhdC11bml0cy5iYgpAQCAtMTAsNiArMTAsOCBAQAogCiBpbmhlcml0IGZlYXR1cmVzX2NoZWNrCiAKK0lOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCisKIEFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCiAKIFJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29uZl8yNDMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1jb25mXzI0NS41LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1jb25mXzI0My5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtY29uZl8yNDUuNS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc3lzdGVtY3RsL3N5c3RlbWN0bCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLXN5c3RlbWN0bC9zeXN0ZW1jdGwKaW5kZXggZWJhYzg2My4uOTkwZGUxYSAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQtc3lzdGVtY3RsL3N5c3RlbWN0bAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC1zeXN0ZW1jdGwvc3lzdGVtY3RsCkBAIC0xNzIsNyArMTcyLDcgQEAKICAgICBkZWYgX3BhdGhfZm9yX3VuaXQoc2VsZiwgdW5pdCk6CiAgICAgICAgIGZvciBsb2NhdGlvbiBpbiBsb2NhdGlvbnM6CiAgICAgICAgICAgICBwYXRoID0gc2VsZi5yb290IC8gbG9jYXRpb24gLyAic3lzdGVtIiAvIHVuaXQKLSAgICAgICAgICAgIGlmIHBhdGguZXhpc3RzKCk6CisgICAgICAgICAgICBpZiBwYXRoLmV4aXN0cygpIG9yIHBhdGguaXNfc3ltbGluaygpOgogICAgICAgICAgICAgICAgIHJldHVybiBwYXRoCiAKICAgICAgICAgcmFpc2UgU3lzdGVtZFVuaXROb3RGb3VuZEVycm9yKHNlbGYucm9vdCwgdW5pdCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLmluYwppbmRleCA3ZjNhNTljLi4wZjgyNTgwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQuaW5jCkBAIC0xNCwxMCArMTQsOCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5HUEwyO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLkxHUEwyLjE7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgogCi1TUkNSRVYgPSAiZWZiNTM2ZDBjYmUyZTU4ZjgwZTUwMWQxOTk5OTkyOGM3NWUwOGY2YSIKLVNSQ0JSQU5DSCA9ICJ2MjQzLXN0YWJsZSIKK1NSQ1JFViA9ICI5YTUwNmI3ZTkyOTFkOTk3YTkyMGFmOWFjMjk5ZTdiODM0MzY4MTE5IgorU1JDQlJBTkNIID0gInYyNDUtc3RhYmxlIgogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC1zdGFibGUuZ2l0O3Byb3RvY29sPWdpdDticmFuY2g9JHtTUkNCUkFOQ0h9IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgotCi1QVl9hcHBlbmQgPSAiKyR7U1JDUFZ9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1GaXgtdG8tcnVuLWVmaV9jYy1hbmQtZWZpX2xkLWNvcnJlY3RseS13aGVuLWNyb3NzLWNvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1GaXgtdG8tcnVuLWVmaV9jYy1hbmQtZWZpX2xkLWNvcnJlY3RseS13aGVuLWNyb3NzLWNvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMmUxOWJhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtRml4LXRvLXJ1bi1lZmlfY2MtYW5kLWVmaV9sZC1jb3JyZWN0bHktd2hlbi1jcm9zcy1jby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYyICswLDAgQEAKLUZyb20gNTI3NDEzZWMyNDM1NjRhODlmZmFhZDYzNjhkNDQ2ZGU0NDQxNTk3MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFR1ZSwgMjcgRmViIDIwMTggMjE6NDI6MjMgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IHRvIHJ1biBlZmlfY2MgYW5kIGVmaV9sZCBjb3JyZWN0bHkgd2hlbiBjcm9zcy1jb21waWxpbmcKLQotV2hlbiBjcm9zcy1jb21waWxpbmcsIGVmaV9jYyBhbmQgZWZpX2xkIG1heSB0YWtlIHRoZSBmb3JtIG9mCi0neHh4LWdjYyAtLXN5c3Jvb3Q9eHh4JywgYW5kIHRoaXMgd291bGQgY2F1c2UgcnVuX2NvbW1hbmQgYW5kCi10aGUgYWxpa2UgZmFpbC4KLQotRml4IHRvIHNwbGl0IHRoZW0gdG8gbWFrZSBjb21tYW5kcyBydW4gY29ycmVjdGx5LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkIHwgMTYgKysrKysrKysrKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkIGIvc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkCi1pbmRleCA5OTJhM2JhNGMuLjlmOWVjNDkxMSAxMDA2NDQKLS0tLSBhL3NyYy9ib290L2VmaS9tZXNvbi5idWlsZAotKysrIGIvc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkCi1AQCAtMTU3LDcgKzE1Nyw3IEBAIGlmIGhhdmVfZ251X2VmaQotICAgICAgICAgICAgICAgICBvX2ZpbGUgPSBjdXN0b21fdGFyZ2V0KGZpbGUgKyAnLm8nLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0IDogZmlsZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQgOiBmaWxlICsgJy5vJywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIDogW2VmaV9jYywgJy1jJywgJ0BJTlBVVEAnLCAnLW8nLCAnQE9VVFBVVEAnXQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgOiBlZmlfY2Muc3BsaXQoKSArIFsnLWMnLCAnQElOUFVUQCcsICctbycsICdAT1VUUFVUQCddCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgY29tcGlsZV9hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZF9maWxlcyA6IGVmaV9oZWFkZXJzKQotICAgICAgICAgICAgICAgICBpZiAoY29tbW9uX3NvdXJjZXMgKyBzeXN0ZW1kX2Jvb3Rfc291cmNlcykuY29udGFpbnMoZmlsZSkKLUBAIC0xNjgsNyArMTY4LDE3IEBAIGlmIGhhdmVfZ251X2VmaQotICAgICAgICAgICAgICAgICBlbmRpZgotICAgICAgICAgZW5kZm9yZWFjaAotIAotLSAgICAgICAgbGliZ2NjX2ZpbGVfbmFtZSA9IHJ1bl9jb21tYW5kKGVmaV9jYywgJy1wcmludC1saWJnY2MtZmlsZS1uYW1lJykuc3Rkb3V0KCkuc3RyaXAoKQotKyAgICAgICAgZmluZF9saWJnY2NfY21kX2FsbCA9IGVmaV9jYyArICcgLXByaW50LWxpYmdjYy1maWxlLW5hbWUnCi0rICAgICAgICBmaW5kX2xpYmdjY19jbWQgPSBmaW5kX2xpYmdjY19jbWRfYWxsLnNwbGl0KClbMF0KLSsgICAgICAgIGZpbmRfbGliZ2NjX2FyZ3MgPSBbXQotKyAgICAgICAgY21kX2FyZ3NfYWxsID0gZmluZF9saWJnY2NfY21kX2FsbC5zcGxpdCgpCi0rICAgICAgICBmb3JlYWNoIGFyZyA6IGNtZF9hcmdzX2FsbAotKyAgICAgICAgICAgICAgICBpZiBhcmcgIT0gZmluZF9saWJnY2NfY21kCi0rICAgICAgICAgICAgICAgICAgICAgICAgZmluZF9saWJnY2NfYXJncyArPSBhcmcKLSsgICAgICAgICAgICAgICAgZW5kaWYKLSsgICAgICAgIGVuZGZvcmVhY2gKLSsKLSsgICAgICAgIGxpYmdjY19maWxlX25hbWUgPSBydW5fY29tbWFuZChmaW5kX2xpYmdjY19jbWQsIGZpbmRfbGliZ2NjX2FyZ3MpLnN0ZG91dCgpLnN0cmlwKCkKLSAgICAgICAgIHN5c3RlbWRfYm9vdF9lZmlfbmFtZSA9ICdzeXN0ZW1kLWJvb3RAMEAuZWZpJy5mb3JtYXQoRUZJX01BQ0hJTkVfVFlQRV9OQU1FKQotICAgICAgICAgc3R1Yl9lZmlfbmFtZSA9ICdsaW51eEAwQC5lZmkuc3R1YicuZm9ybWF0KEVGSV9NQUNISU5FX1RZUEVfTkFNRSkKLSAgICAgICAgIG5vX3VuZGVmaW5lZF9zeW1ib2xzID0gZmluZF9wcm9ncmFtKCduby11bmRlZmluZWQtc3ltYm9scy5zaCcpCi1AQCAtMTc5LDcgKzE4OSw3IEBAIGlmIGhhdmVfZ251X2VmaQotICAgICAgICAgICAgICAgICAgICAgICAgIHR1cGxlWzBdLAotICAgICAgICAgICAgICAgICAgICAgICAgIGlucHV0IDogdHVwbGVbMl0sCi0gICAgICAgICAgICAgICAgICAgICAgICAgb3V0cHV0IDogdHVwbGVbMF0sCi0tICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZCA6IFtlZmlfbGQsICctbycsICdAT1VUUFVUQCddICsKLSsgICAgICAgICAgICAgICAgICAgICAgICBjb21tYW5kIDogZWZpX2xkLnNwbGl0KCkgKyBbJy1vJywgJ0BPVVRQVVRAJ10gKwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBlZmlfbGRmbGFncyArIHR1cGxlWzJdICsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWyctbGVmaScsICctbGdudWVmaScsIGxpYmdjY19maWxlX25hbWVdKQotIAotLS0gCi0yLjEzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1IYW5kbGUtbWlzc2luZy1nc2hhZG93LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1IYW5kbGUtbWlzc2luZy1nc2hhZG93LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2YTU5N2QKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLUhhbmRsZS1taXNzaW5nLWdzaGFkb3cucGF0Y2gKQEAgLTAsMCArMSwxNzEgQEAKK0Zyb20gZWY5NTgwZWExZTJmMWU1N2FmM2M3ZGNiMGVjMzkyYmE4ZGJiNWM4ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS2llcm5hbiA8YWxleC5raWVybmFuQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTAgTWFyIDIwMjAgMTE6MDU6MjAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gSGFuZGxlIG1pc3NpbmcgZ3NoYWRvdworCitnc2hhZG93IHVzYWdlIGlzIG5vdyBwcmVzZW50IGluIHRoZSB1c2VyZGIgY29kZS4gTWFzayBhbGwgdXNlcyBvZiBpdCB0bworYWxsb3cgY29tcGlsYXRpb24gb24gbXVzbAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4IEtpZXJuYW4gPGFsZXgua2llcm5hbkBnbWFpbC5jb20+CistLS0KKyBzcmMvc2hhcmVkL2dyb3VwLXJlY29yZC1uc3MuYyB8IDIwICsrKysrKysrKysrKysrKysrKysrCisgc3JjL3NoYXJlZC9ncm91cC1yZWNvcmQtbnNzLmggfCAgNCArKysrCisgc3JjL3NoYXJlZC91c2VyZGIuYyAgICAgICAgICAgfCAgNiArKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDMwIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvZ3JvdXAtcmVjb3JkLW5zcy5jIGIvc3JjL3NoYXJlZC9ncm91cC1yZWNvcmQtbnNzLmMKK2luZGV4IDc3OTI0ZjFjNDA2Ny4uYzY0NDkwMjUzZmYzIDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC9ncm91cC1yZWNvcmQtbnNzLmMKKysrKyBiL3NyYy9zaGFyZWQvZ3JvdXAtcmVjb3JkLW5zcy5jCitAQCAtMTksOCArMTksMTAgQEAgaW50IG5zc19ncm91cF90b19ncm91cF9yZWNvcmQoCisgICAgICAgICBpZiAoaXNlbXB0eShncnAtPmdyX25hbWUpKQorICAgICAgICAgICAgICAgICByZXR1cm4gLUVJTlZBTDsKKyAKKysjaWYgRU5BQkxFX0dTSEFET1cKKyAgICAgICAgIGlmIChzZ3JwICYmICFzdHJlcV9wdHIoc2dycC0+c2dfbmFtcCwgZ3JwLT5ncl9uYW1lKSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIC1FSU5WQUw7CisrI2VuZGlmCisgCisgICAgICAgICBnID0gZ3JvdXBfcmVjb3JkX25ldygpOworICAgICAgICAgaWYgKCFnKQorQEAgLTM2LDYgKzM4LDcgQEAgaW50IG5zc19ncm91cF90b19ncm91cF9yZWNvcmQoCisgCisgICAgICAgICBnLT5naWQgPSBncnAtPmdyX2dpZDsKKyAKKysjaWYgRU5BQkxFX0dTSEFET1cKKyAgICAgICAgIGlmIChzZ3JwKSB7CisgICAgICAgICAgICAgICAgIGlmIChoYXNoZWRfcGFzc3dvcmRfdmFsaWQoc2dycC0+c2dfcGFzc3dkKSkgeworICAgICAgICAgICAgICAgICAgICAgICAgIGctPmhhc2hlZF9wYXNzd29yZCA9IHN0cnZfbmV3KHNncnAtPnNnX3Bhc3N3ZCk7CitAQCAtNTEsNiArNTQsNyBAQCBpbnQgbnNzX2dyb3VwX3RvX2dyb3VwX3JlY29yZCgKKyAgICAgICAgICAgICAgICAgaWYgKCFnLT5hZG1pbmlzdHJhdG9ycykKKyAgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKKyAgICAgICAgIH0KKysjZW5kaWYKKyAKKyAgICAgICAgIHIgPSBqc29uX2J1aWxkKCZnLT5qc29uLCBKU09OX0JVSUxEX09CSkVDVCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBKU09OX0JVSUxEX1BBSVIoImdyb3VwTmFtZSIsIEpTT05fQlVJTERfU1RSSU5HKGctPmdyb3VwX25hbWUpKSwKK0BAIC03Niw2ICs4MCw3IEBAIGludCBuc3Nfc2dycF9mb3JfZ3JvdXAoY29uc3Qgc3RydWN0IGdyb3VwICpncnAsIHN0cnVjdCBzZ3JwICpyZXRfc2dycCwgY2hhciAqKnJlCisgICAgICAgICBhc3NlcnQocmV0X3NncnApOworICAgICAgICAgYXNzZXJ0KHJldF9idWZmZXIpOworIAorKyNpZiBFTkFCTEVfR1NIQURPVworICAgICAgICAgZm9yICg7OykgeworICAgICAgICAgICAgICAgICBfY2xlYW51cF9mcmVlXyBjaGFyICpidWYgPSBOVUxMOworICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2dycCBzZ3JwLCAqcmVzdWx0OworQEAgLTEwNCw2ICsxMDksOSBAQCBpbnQgbnNzX3NncnBfZm9yX2dyb3VwKGNvbnN0IHN0cnVjdCBncm91cCAqZ3JwLCBzdHJ1Y3Qgc2dycCAqcmV0X3NncnAsIGNoYXIgKipyZQorICAgICAgICAgICAgICAgICBidWZsZW4gKj0gMjsKKyAgICAgICAgICAgICAgICAgYnVmID0gbWZyZWUoYnVmKTsKKyAgICAgICAgIH0KKysjZWxzZQorKyAgICAgICAgcmV0dXJuIC1FU1JDSDsKKysjZW5kaWYKKyB9CisgCisgaW50IG5zc19ncm91cF9yZWNvcmRfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lLCBHcm91cFJlY29yZCAqKnJldCkgeworQEAgLTExMSw3ICsxMTksOSBAQCBpbnQgbnNzX2dyb3VwX3JlY29yZF9ieV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUsIEdyb3VwUmVjb3JkICoqcmV0KSB7CisgICAgICAgICBzdHJ1Y3QgZ3JvdXAgZ3JwLCAqcmVzdWx0OworICAgICAgICAgYm9vbCBpbmNvbXBsZXRlID0gZmFsc2U7CisgICAgICAgICBzaXplX3QgYnVmbGVuID0gNDA5NjsKKysjaWYgRU5BQkxFX0dTSEFET1cKKyAgICAgICAgIHN0cnVjdCBzZ3JwIHNncnA7CisrI2VuZGlmCisgICAgICAgICBpbnQgcjsKKyAKKyAgICAgICAgIGFzc2VydChuYW1lKTsKK0BAIC0xNDEsNiArMTUxLDcgQEAgaW50IG5zc19ncm91cF9yZWNvcmRfYnlfbmFtZShjb25zdCBjaGFyICpuYW1lLCBHcm91cFJlY29yZCAqKnJldCkgeworICAgICAgICAgICAgICAgICBidWYgPSBtZnJlZShidWYpOworICAgICAgICAgfQorIAorKyNpZiBFTkFCTEVfR1NIQURPVworICAgICAgICAgciA9IG5zc19zZ3JwX2Zvcl9ncm91cChyZXN1bHQsICZzZ3JwLCAmc2J1Zik7CisgICAgICAgICBpZiAociA8IDApIHsKKyAgICAgICAgICAgICAgICAgbG9nX2RlYnVnX2Vycm5vKHIsICJGYWlsZWQgdG8gZG8gc2hhZG93IGxvb2t1cCBmb3IgZ3JvdXAgJXMsIGlnbm9yaW5nOiAlbSIsIHJlc3VsdC0+Z3JfbmFtZSk7CitAQCAtMTQ4LDYgKzE1OSw5IEBAIGludCBuc3NfZ3JvdXBfcmVjb3JkX2J5X25hbWUoY29uc3QgY2hhciAqbmFtZSwgR3JvdXBSZWNvcmQgKipyZXQpIHsKKyAgICAgICAgIH0KKyAKKyAgICAgICAgIHIgPSBuc3NfZ3JvdXBfdG9fZ3JvdXBfcmVjb3JkKHJlc3VsdCwgciA+PSAwID8gJnNncnAgOiBOVUxMLCByZXQpOworKyNlbHNlCisrICAgICAgICByID0gbnNzX2dyb3VwX3RvX2dyb3VwX3JlY29yZChyZXN1bHQsIE5VTEwsIHJldCk7CisrI2VuZGlmCisgICAgICAgICBpZiAociA8IDApCisgICAgICAgICAgICAgICAgIHJldHVybiByOworIAorQEAgLTE2MCw3ICsxNzQsOSBAQCBpbnQgbnNzX2dyb3VwX3JlY29yZF9ieV9naWQoZ2lkX3QgZ2lkLCBHcm91cFJlY29yZCAqKnJldCkgeworICAgICAgICAgc3RydWN0IGdyb3VwIGdycCwgKnJlc3VsdDsKKyAgICAgICAgIGJvb2wgaW5jb21wbGV0ZSA9IGZhbHNlOworICAgICAgICAgc2l6ZV90IGJ1ZmxlbiA9IDQwOTY7CisrI2lmIEVOQUJMRV9HU0hBRE9XCisgICAgICAgICBzdHJ1Y3Qgc2dycCBzZ3JwOworKyNlbmRpZgorICAgICAgICAgaW50IHI7CisgCisgICAgICAgICBhc3NlcnQocmV0KTsKK0BAIC0xODgsNiArMjA0LDcgQEAgaW50IG5zc19ncm91cF9yZWNvcmRfYnlfZ2lkKGdpZF90IGdpZCwgR3JvdXBSZWNvcmQgKipyZXQpIHsKKyAgICAgICAgICAgICAgICAgYnVmID0gbWZyZWUoYnVmKTsKKyAgICAgICAgIH0KKyAKKysjaWYgRU5BQkxFX0dTSEFET1cKKyAgICAgICAgIHIgPSBuc3Nfc2dycF9mb3JfZ3JvdXAocmVzdWx0LCAmc2dycCwgJnNidWYpOworICAgICAgICAgaWYgKHIgPCAwKSB7CisgICAgICAgICAgICAgICAgIGxvZ19kZWJ1Z19lcnJubyhyLCAiRmFpbGVkIHRvIGRvIHNoYWRvdyBsb29rdXAgZm9yIGdyb3VwICVzLCBpZ25vcmluZzogJW0iLCByZXN1bHQtPmdyX25hbWUpOworQEAgLTE5NSw2ICsyMTIsOSBAQCBpbnQgbnNzX2dyb3VwX3JlY29yZF9ieV9naWQoZ2lkX3QgZ2lkLCBHcm91cFJlY29yZCAqKnJldCkgeworICAgICAgICAgfQorIAorICAgICAgICAgciA9IG5zc19ncm91cF90b19ncm91cF9yZWNvcmQocmVzdWx0LCByID49IDAgPyAmc2dycCA6IE5VTEwsIHJldCk7CisrI2Vsc2UKKysgICAgICAgIHIgPSBuc3NfZ3JvdXBfdG9fZ3JvdXBfcmVjb3JkKHJlc3VsdCwgTlVMTCwgcmV0KTsKKysjZW5kaWYKKyAgICAgICAgIGlmIChyIDwgMCkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisgCitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9ncm91cC1yZWNvcmQtbnNzLmggYi9zcmMvc2hhcmVkL2dyb3VwLXJlY29yZC1uc3MuaAoraW5kZXggMzhiMjk5NTE3OGZmLi5kN2Q5NWM0NGNmMTEgMTAwNjQ0CistLS0gYS9zcmMvc2hhcmVkL2dyb3VwLXJlY29yZC1uc3MuaAorKysrIGIvc3JjL3NoYXJlZC9ncm91cC1yZWNvcmQtbnNzLmgKK0BAIC0yLDcgKzIsMTEgQEAKKyAjcHJhZ21hIG9uY2UKKyAKKyAjaW5jbHVkZSA8Z3JwLmg+CisrI2lmIEVOQUJMRV9HU0hBRE9XCisgI2luY2x1ZGUgPGdzaGFkb3cuaD4KKysjZWxzZQorK3N0cnVjdCBzZ3JwOworKyNlbmRpZgorIAorICNpbmNsdWRlICJncm91cC1yZWNvcmQuaCIKKyAKK2RpZmYgLS1naXQgYS9zcmMvc2hhcmVkL3VzZXJkYi5jIGIvc3JjL3NoYXJlZC91c2VyZGIuYworaW5kZXggOTJmODc5Njc2OGQ3Li41ZDkxMjg2MmY4NWMgMTAwNjQ0CistLS0gYS9zcmMvc2hhcmVkL3VzZXJkYi5jCisrKysgYi9zcmMvc2hhcmVkL3VzZXJkYi5jCitAQCAtOTI0LDEzICs5MjQsMTYgQEAgaW50IGdyb3VwZGJfaXRlcmF0b3JfZ2V0KFVzZXJEQkl0ZXJhdG9yICppdGVyYXRvciwgR3JvdXBSZWNvcmQgKipyZXQpIHsKKyAgICAgICAgICAgICAgICAgaWYgKGdyKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgX2NsZWFudXBfZnJlZV8gY2hhciAqYnVmZmVyID0gTlVMTDsKKyAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGluY29tcGxldGUgPSBmYWxzZTsKKysjaWYgRU5BQkxFX0dTSEFET1cKKyAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3Qgc2dycCBzZ3JwOworKyNlbmRpZgorIAorICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChzdHJlcV9wdHIoZ3ItPmdyX25hbWUsICJyb290IikpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpdGVyYXRvci0+c3ludGhlc2l6ZV9yb290ID0gZmFsc2U7CisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGdyLT5ncl9naWQgPT0gR0lEX05PQk9EWSkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGl0ZXJhdG9yLT5zeW50aGVzaXplX25vYm9keSA9IGZhbHNlOworIAorKyNpZiBFTkFCTEVfR1NIQURPVworICAgICAgICAgICAgICAgICAgICAgICAgIHIgPSBuc3Nfc2dycF9mb3JfZ3JvdXAoZ3IsICZzZ3JwLCAmYnVmZmVyKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19kZWJ1Z19lcnJubyhyLCAiRmFpbGVkIHRvIGFjcXVpcmUgc2hhZG93IGVudHJ5IGZvciBncm91cCAlcywgaWdub3Jpbmc6ICVtIiwgZ3ItPmdyX25hbWUpOworQEAgLTkzOCw2ICs5NDEsOSBAQCBpbnQgZ3JvdXBkYl9pdGVyYXRvcl9nZXQoVXNlckRCSXRlcmF0b3IgKml0ZXJhdG9yLCBHcm91cFJlY29yZCAqKnJldCkgeworICAgICAgICAgICAgICAgICAgICAgICAgIH0KKyAKKyAgICAgICAgICAgICAgICAgICAgICAgICByID0gbnNzX2dyb3VwX3RvX2dyb3VwX3JlY29yZChnciwgciA+PSAwID8gJnNncnAgOiBOVUxMLCByZXQpOworKyNlbHNlCisrICAgICAgICAgICAgICAgICAgICAgICAgciA9IG5zc19ncm91cF90b19ncm91cF9yZWNvcmQoZ3IsIE5VTEwsIHJldCk7CisrI2VuZGlmCisgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CisgCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVJldmVydC1tZXNvbi1wcmludC1FRkktQ0MtY29uZmlndXJhdGlvbi1uaWNlbHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVJldmVydC1tZXNvbi1wcmludC1FRkktQ0MtY29uZmlndXJhdGlvbi1uaWNlbHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVkMTRlMjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1SZXZlcnQtbWVzb24tcHJpbnQtRUZJLUNDLWNvbmZpZ3VyYXRpb24tbmljZWx5LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSAwYmY1MzBhYWMxNTI2MzA1MDA5MzlkYjMxZjk4ZDkzMzE1OGZkYWJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAyNiBGZWIgMjAxOSAxNDoyNzo0OSArMDgwMAotU3ViamVjdDogW1BBVENIXSBSZXZlcnQgIm1lc29uOiBwcmludCBFRkkgQ0MgY29uZmlndXJhdGlvbiBuaWNlbHkiCi0KLVRoaXMgcmV2ZXJ0cyBjb21taXQgYzUxMmRmYjlhYzk0OGRkYjFjZWQwZGFiMDdiOWRhYzg4YjE5ODI5My4KLQotVGhpcyBwYXRjaCBpcyBoZXJlIGJlY2F1c2Ugd2UgaGF2ZW4ndCBmaWd1cmVkIG91dCBob3cgdG8gcGFzcwotcGFyYW1ldGVyIHRvIGVmaS1jYyBpZiBpdCdzIGFuIGFycmF5IGluIHN5c3RlbWQtYm9vdCByZWNpcGUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIG1lc29uLmJ1aWxkIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggNzBmYjIxOC4uMzBkZjgzNCAxMDA2NDQKLS0tLSBhL21lc29uLmJ1aWxkCi0rKysgYi9tZXNvbi5idWlsZAotQEAgLTMxMzgsNyArMzEzOCw3IEBAIGlmIGNvbmYuZ2V0KCdFTkFCTEVfRUZJJykgPT0gMQotICAgICAgICAgaWYgaGF2ZV9nbnVfZWZpCi0gICAgICAgICAgICAgICAgIHN0YXR1cyArPSBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgJ0VGSSBtYWNoaW5lIHR5cGU6ICAgICAgICAgICAgICAgICAgQDBAJy5mb3JtYXQoRUZJX01BQ0hJTkVfVFlQRV9OQU1FKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAnRUZJIENDICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMEAnLmZvcm1hdCgnICcuam9pbihlZmlfY2MpKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAnRUZJIENDICAgICAgICAgICAgICAgICAgICAgICAgICAgICBAMEAnLmZvcm1hdChlZmlfY2MpLAotICAgICAgICAgICAgICAgICAgICAgICAgICdFRkkgbGliIGRpcmVjdG9yeTogICAgICAgICAgICAgICAgIEAwQCcuZm9ybWF0KGVmaV9saWJkaXIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICdFRkkgbGRzIGRpcmVjdG9yeTogICAgICAgICAgICAgICAgIEAwQCcuZm9ybWF0KGVmaV9sZHNkaXIpLAotICAgICAgICAgICAgICAgICAgICAgICAgICdFRkkgaW5jbHVkZSBkaXJlY3Rvcnk6ICAgICAgICAgICAgIEAwQCcuZm9ybWF0KGVmaV9pbmNkaXIpXQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVJldmVydC1tZXNvbi11c2UtYW4tYXJyYXktb3B0aW9uLWZvci1lZmktY2MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLVJldmVydC1tZXNvbi11c2UtYW4tYXJyYXktb3B0aW9uLWZvci1lZmktY2MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBkMmViZjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1SZXZlcnQtbWVzb24tdXNlLWFuLWFycmF5LW9wdGlvbi1mb3ItZWZpLWNjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotRnJvbSAwMDMwZGNiYWMxYTkxNzdlZjdhMjhhZjIwOWFjNjcxNDliODk5ZjVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAyNiBGZWIgMjAxOSAxNDoxNzoyNSArMDgwMAotU3ViamVjdDogW1BBVENIXSBSZXZlcnQgIm1lc29uOiB1c2UgYW4gYXJyYXkgb3B0aW9uIGZvciBlZmktY2MiCi0KLVRoaXMgcmV2ZXJ0cyBjb21taXQgNTk1MzQzZmI0Yzk5YzI2NzlkMzQ3ZWY3YzE5ZGViZmJmZWQ2MzQyZS4KLQotVGhpcyBwYXRjaCBpcyBoZXJlIGJlY2F1c2Ugd2UgaGF2ZW4ndCBmaWd1cmVkIG91dCBob3cgdG8gcGFzcwotcGFyYW1ldGVyIHRvIGVmaS1jYyBpZiBpdCdzIGFuIGFycmF5IGluIHN5c3RlbWQtYm9vdCByZWNpcGUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLS0tLQotIG1lc29uX29wdGlvbnMudHh0ICAgICAgICB8ICAyICstCi0gc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkIHwgMTEgKysrKysrLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKLWluZGV4IDA0NGJiNzkuLjNkMjhiZmQgMTAwNjQ0Ci0tLS0gYS9tZXNvbl9vcHRpb25zLnR4dAotKysrIGIvbWVzb25fb3B0aW9ucy50eHQKLUBAIC0yOTIsNyArMjkyLDcgQEAgb3B0aW9uKCdkYnVzJywgdHlwZSA6ICdjb21ibycsIGNob2ljZXMgOiBbJ2F1dG8nLCAndHJ1ZScsICdmYWxzZSddLAotIAotIG9wdGlvbignZ251LWVmaScsIHR5cGUgOiAnY29tYm8nLCBjaG9pY2VzIDogWydhdXRvJywgJ3RydWUnLCAnZmFsc2UnXSwKLSAgICAgICAgZGVzY3JpcHRpb24gOiAnZ251LWVmaSBzdXBwb3J0IGZvciBzZC1ib290JykKLS1vcHRpb24oJ2VmaS1jYycsIHR5cGUgOiAnYXJyYXknLAotK29wdGlvbignZWZpLWNjJywgdHlwZSA6ICdzdHJpbmcnLAotICAgICAgICBkZXNjcmlwdGlvbiA6ICd0aGUgY29tcGlsZXIgdG8gdXNlIGZvciBFRkkgbW9kdWxlcycpCi0gb3B0aW9uKCdlZmktbGQnLCB0eXBlIDogJ3N0cmluZycsCi0gICAgICAgIGRlc2NyaXB0aW9uIDogJ3RoZSBsaW5rZXIgdG8gdXNlIGZvciBFRkkgbW9kdWxlcycpCi1kaWZmIC0tZ2l0IGEvc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkIGIvc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkCi1pbmRleCAyMTQwMTUxLi5kOGRiM2ExIDEwMDY0NAotLS0tIGEvc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkCi0rKysgYi9zcmMvYm9vdC9lZmkvbWVzb24uYnVpbGQKLUBAIC0zNCw4ICszNCw4IEBAIHN0dWJfc291cmNlcyA9ICcnJwotIAotIGlmIGNvbmYuZ2V0KCdFTkFCTEVfRUZJJykgPT0gMSBhbmQgZ2V0X29wdGlvbignZ251LWVmaScpICE9ICdmYWxzZScKLSAgICAgICAgIGVmaV9jYyA9IGdldF9vcHRpb24oJ2VmaS1jYycpCi0tICAgICAgICBpZiBlZmlfY2MubGVuZ3RoKCkgPT0gMAotLSAgICAgICAgICAgICAgICBlZmlfY2MgPSBjYy5jbWRfYXJyYXkoKQotKyAgICAgICAgaWYgZWZpX2NjID09ICcnCi0rICAgICAgICAgICAgICAgIGVmaV9jYyA9ICcgJy5qb2luKGNjLmNtZF9hcnJheSgpKQotICAgICAgICAgZW5kaWYKLSAgICAgICAgIGVmaV9sZCA9IGdldF9vcHRpb24oJ2VmaS1sZCcpCi0gICAgICAgICBpZiBlZmlfbGQgPT0gJycKLUBAIC01Nyw3ICs1Nyw4IEBAIGlmIGNvbmYuZ2V0KCdFTkFCTEVfRUZJJykgPT0gMSBhbmQgZ2V0X29wdGlvbignZ251LWVmaScpICE9ICdmYWxzZScKLSAKLSAgICAgICAgIGVmaV9saWJkaXIgPSBnZXRfb3B0aW9uKCdlZmktbGliZGlyJykKLSAgICAgICAgIGlmIGVmaV9saWJkaXIgPT0gJycKLS0gICAgICAgICAgICAgICAgcmV0ID0gcnVuX2NvbW1hbmQoZWZpX2NjICsgWyctcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5J10pCi0rICAgICAgICAgICAgICAgIGNtZCA9ICdjZCAvdXNyL2xpYi8kKEAwQCAtcHJpbnQtbXVsdGktb3MtZGlyZWN0b3J5KSAmJiBwd2QnLmZvcm1hdChlZmlfY2MpCi0rICAgICAgICAgICAgICAgIHJldCA9IHJ1bl9jb21tYW5kKCdzaCcsICctYycsIGNtZCkKLSAgICAgICAgICAgICAgICAgaWYgcmV0LnJldHVybmNvZGUoKSA9PSAwCi0gICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCA9IGpvaW5fcGF0aHMoJy91c3IvbGliJywgcmV0LnN0ZG91dCgpLnN0cmlwKCkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmV0ID0gcnVuX2NvbW1hbmQoJ3JlYWxwYXRoJywgJy1lJywgcGF0aCkKLUBAIC0xNTIsNyArMTUzLDcgQEAgaWYgaGF2ZV9nbnVfZWZpCi0gICAgICAgICAgICAgICAgIG9fZmlsZSA9IGN1c3RvbV90YXJnZXQoZmlsZSArICcubycsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5wdXQgOiBmaWxlLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG91dHB1dCA6IGZpbGUgKyAnLm8nLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgOiBlZmlfY2MgKyBbJy1jJywgJ0BJTlBVVEAnLCAnLW8nLCAnQE9VVFBVVEAnXQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbW1hbmQgOiBbZWZpX2NjLCAnLWMnLCAnQElOUFVUQCcsICctbycsICdAT1VUUFVUQCddCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICsgY29tcGlsZV9hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZF9maWxlcyA6IGVmaV9oZWFkZXJzKQotICAgICAgICAgICAgICAgICBpZiAoY29tbW9uX3NvdXJjZXMgKyBzeXN0ZW1kX2Jvb3Rfc291cmNlcykuY29udGFpbnMoZmlsZSkKLUBAIC0xNjMsNyArMTY0LDcgQEAgaWYgaGF2ZV9nbnVfZWZpCi0gICAgICAgICAgICAgICAgIGVuZGlmCi0gICAgICAgICBlbmRmb3JlYWNoCi0gCi0tICAgICAgICBsaWJnY2NfZmlsZV9uYW1lID0gcnVuX2NvbW1hbmQoZWZpX2NjICsgWyctcHJpbnQtbGliZ2NjLWZpbGUtbmFtZSddKS5zdGRvdXQoKS5zdHJpcCgpCi0rICAgICAgICBsaWJnY2NfZmlsZV9uYW1lID0gcnVuX2NvbW1hbmQoZWZpX2NjLCAnLXByaW50LWxpYmdjYy1maWxlLW5hbWUnKS5zdGRvdXQoKS5zdHJpcCgpCi0gICAgICAgICBzeXN0ZW1kX2Jvb3RfZWZpX25hbWUgPSAnc3lzdGVtZC1ib290QDBALmVmaScuZm9ybWF0KEVGSV9NQUNISU5FX1RZUEVfTkFNRSkKLSAgICAgICAgIHN0dWJfZWZpX25hbWUgPSAnbGludXhAMEAuZWZpLnN0dWInLmZvcm1hdChFRklfTUFDSElORV9UWVBFX05BTUUpCi0gICAgICAgICBub191bmRlZmluZWRfc3ltYm9scyA9IGZpbmRfcHJvZ3JhbSgnbm8tdW5kZWZpbmVkLXN5bWJvbHMuc2gnKQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2gKaW5kZXggNzNlNjVmZi4uZDA5ODA4NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1iaW5mbXQtRG9uLXQtaW5zdGFsbC1kZXBlbmRlbmN5LWxpbmtzLWF0LWluc3RhbGwtdGltLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtYmluZm10LURvbi10LWluc3RhbGwtZGVwZW5kZW5jeS1saW5rcy1hdC1pbnN0YWxsLXRpbS5wYXRjaApAQCAtMSw4ICsxLDggQEAKLUZyb20gOTgyNTRlNDc5OGU3OWQ1MmFjNmI1NjI2MTZjZDI0NDEyMGY2ZTIzOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZTljOTkzODE2MDc3YzFhZTY3ZDI1ZDQ2NGYyZWNlMmEwOTBmMzBiOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IFRodSwgMjEgRmViIDIwMTkgMTY6MjM6MjQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzVdIGJpbmZtdDogRG9uJ3QgaW5zdGFsbCBkZXBlbmRlbmN5IGxpbmtzIGF0IGluc3RhbGwgdGltZSAKLSBmb3IgdGhlIGJpbmZtdCBzZXJ2aWNlcworU3ViamVjdDogW1BBVENIXSBiaW5mbXQ6IERvbid0IGluc3RhbGwgZGVwZW5kZW5jeSBsaW5rcyBhdCBpbnN0YWxsIHRpbWUgZm9yCisgdGhlIGJpbmZtdCBzZXJ2aWNlcwogCiB1c2UgW0luc3RhbGxdIGJsb2NrcyBzbyB0aGF0IHRoZXkgZ2V0IGNyZWF0ZWQgd2hlbiB0aGUgc2VydmljZSBpcyBlbmFibGVkCiBsaWtlIGEgdHJhZGl0aW9uYWwgc2VydmljZS4KQEAgLTE4LDYgKzE4LDcgQEAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIFtyZWJhc2VkIGZvciBzeXN0ZW1kIDI0M10KIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KKwogLS0tCiAgdW5pdHMvbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgICAgICAgIHwgNiArKy0tLS0KICB1bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQgfCAzICsrKwpAQCAtMjUsMTAgKzI2LDEwIEBACiAgMyBmaWxlcyBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS91bml0cy9tZXNvbi5idWlsZCBiL3VuaXRzL21lc29uLmJ1aWxkCi1pbmRleCBlMWVlOWY4NmMzLi42YmI3NzcxYjM2IDEwMDY0NAoraW5kZXggZWE5MWYwY2M5ZWE3Li4yNTE4NmY4OGRmZWIgMTAwNjQ0CiAtLS0gYS91bml0cy9tZXNvbi5idWlsZAogKysrIGIvdW5pdHMvbWVzb24uYnVpbGQKLUBAIC00Niw4ICs0Niw3IEBAIHVuaXRzID0gWworQEAgLTUyLDggKzUyLDcgQEAgdW5pdHMgPSBbCiAgICAgICAgICBbJ3Bvd2Vyb2ZmLnRhcmdldCcsICAgICAgICAgICAgICAgICAgICAgJycsCiAgICAgICAgICAgJ3J1bmxldmVsMC50YXJnZXQnXSwKICAgICAgICAgIFsncHJpbnRlci50YXJnZXQnLCAgICAgICAgICAgICAgICAgICAgICAnJ10sCkBAIC0zOCwxOCArMzksMTggQEAKICAgICAgICAgIFsncHJvYy1zeXMtZnMtYmluZm10X21pc2MubW91bnQnLCAgICAgICAnRU5BQkxFX0JJTkZNVCddLAogICAgICAgICAgWydyZWJvb3QudGFyZ2V0JywgICAgICAgICAgICAgICAgICAgICAgICcnLAogICAgICAgICAgICdydW5sZXZlbDYudGFyZ2V0IGN0cmwtYWx0LWRlbC50YXJnZXQnXSwKLUBAIC0xMzAsOCArMTI5LDcgQEAgaW5fdW5pdHMgPSBbCi0gICAgICAgICBbJ3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUuc2VydmljZScsICcnXSwKLSAgICAgICAgIFsnc3lzdGVtZC1hc2stcGFzc3dvcmQtd2FsbC5zZXJ2aWNlJywgICAgJyddLAorQEAgLTE2MSw4ICsxNjAsNyBAQCBpbl91bml0cyA9IFsKKyAgICAgICAgIFsncmMtbG9jYWwuc2VydmljZScsICAgICAgICAgICAgICAgICAgICAgJ0hBVkVfU1lTVl9DT01QQVQnXSwKKyAgICAgICAgIFsncmVzY3VlLnNlcnZpY2UnLCAgICAgICAgICAgICAgICAgICAgICAgJyddLAogICAgICAgICAgWydzeXN0ZW1kLWJhY2tsaWdodEAuc2VydmljZScsICAgICAgICAgICAnRU5BQkxFX0JBQ0tMSUdIVCddLAogLSAgICAgICAgWydzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlJywgICAgICAgICAgICAgICAnRU5BQkxFX0JJTkZNVCcsCiAtICAgICAgICAgJ3N5c2luaXQudGFyZ2V0LndhbnRzLyddLAogKyAgICAgICAgWydzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlJywgICAgICAgICAgICAgICAnRU5BQkxFX0JJTkZNVCddLAogICAgICAgICAgWydzeXN0ZW1kLWJsZXNzLWJvb3Quc2VydmljZScsICAgICAgICAgICAnRU5BQkxFX0VGSSBIQVZFX0JMS0lEJ10sCiAgICAgICAgICBbJ3N5c3RlbWQtYm9vdC1jaGVjay1uby1mYWlsdXJlcy5zZXJ2aWNlJywgJyddLAotICAgICAgICAgWydzeXN0ZW1kLWJvb3Qtc3lzdGVtLXRva2VuLnNlcnZpY2UnLCAgICAnRU5BQkxFX0VGSScsCisgICAgICAgICBbJ3N5c3RlbWQtY29yZWR1bXBALnNlcnZpY2UnLCAgICAgICAgICAgICdFTkFCTEVfQ09SRURVTVAnXSwKIGRpZmYgLS1naXQgYS91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQgYi91bml0cy9wcm9jLXN5cy1mcy1iaW5mbXRfbWlzYy5hdXRvbW91bnQKLWluZGV4IDMwYTZiYzk5MTguLjQyMzFmM2I3MGYgMTAwNjQ0CitpbmRleCAzMGE2YmM5OTE4NDQuLjQyMzFmM2I3MGZlOSAxMDA2NDQKIC0tLSBhL3VuaXRzL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAogKysrIGIvdW5pdHMvcHJvYy1zeXMtZnMtYmluZm10X21pc2MuYXV0b21vdW50CiBAQCAtMTgsMyArMTgsNiBAQCBDb25kaXRpb25QYXRoSXNSZWFkV3JpdGU9L3Byb2Mvc3lzLwpAQCAtNjAsNyArNjEsNyBAQAogK1tJbnN0YWxsXQogK1dhbnRlZEJ5PXN5c2luaXQudGFyZ2V0CiBkaWZmIC0tZ2l0IGEvdW5pdHMvc3lzdGVtZC1iaW5mbXQuc2VydmljZS5pbiBiL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4KLWluZGV4IGU5NDBjN2M5YWQuLjZiZTdmNWNjOWIgMTAwNjQ0CitpbmRleCAwYzBmMjY0NTFiNjcuLjc2M2M0YzQ2NmMxNiAxMDA2NDQKIC0tLSBhL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4KICsrKyBiL3VuaXRzL3N5c3RlbWQtYmluZm10LnNlcnZpY2UuaW4KIEBAIC0xNCw2ICsxNCw3IEBAIERvY3VtZW50YXRpb249aHR0cHM6Ly93d3cua2VybmVsLm9yZy9kb2MvaHRtbC9sYXRlc3QvYWRtaW4tZ3VpZGUvYmluZm10LW1pc2MuaHRtCkBAIC02OSw5ICs3MCw5IEBACiAgQ29uZmxpY3RzPXNodXRkb3duLnRhcmdldAogK1dhbnRzPXByb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAogIEFmdGVyPXByb2Mtc3lzLWZzLWJpbmZtdF9taXNjLmF1dG9tb3VudAorIEFmdGVyPXByb2Mtc3lzLWZzLWJpbmZtdF9taXNjLm1vdW50CiAgQmVmb3JlPXN5c2luaXQudGFyZ2V0IHNodXRkb3duLnRhcmdldAotIENvbmRpdGlvblBhdGhJc1JlYWRXcml0ZT0vcHJvYy9zeXMvCi1AQCAtMjgsMyArMjksNiBAQCBUeXBlPW9uZXNob3QKK0BAIC0yOSwzICszMCw2IEBAIFR5cGU9b25lc2hvdAogIFJlbWFpbkFmdGVyRXhpdD15ZXMKICBFeGVjU3RhcnQ9QHJvb3RsaWJleGVjZGlyQC9zeXN0ZW1kLWJpbmZtdAogIFRpbWVvdXRTZWM9OTBzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWRvLW5vdC1kaXNhYmxlLWJ1ZmZlci1pbi13cml0aW5nLWZpbGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1kby1ub3QtZGlzYWJsZS1idWZmZXItaW4td3JpdGluZy1maWxlcy5wYXRjaAppbmRleCAyZjRkYWY4Li40ZWVlYzdiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLWRvLW5vdC1kaXNhYmxlLWJ1ZmZlci1pbi13cml0aW5nLWZpbGVzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtZG8tbm90LWRpc2FibGUtYnVmZmVyLWluLXdyaXRpbmctZmlsZXMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDg1ZTNjMzA0NjU2MmVjMjRmYzJmMDllYmZkMDhiZjlmMTY4MDkxZDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGY5MmZkN2U3N2VkNWFhYjJkZGEwMWEyMGU2ODkxYzM3ZjA5NDE1ZDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBGcmksIDEgTWFyIDIwMTkgMTU6MjI6MTUgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gZG8gbm90IGRpc2FibGUgYnVmZmVyIGluIHdyaXRpbmcgZmlsZXMKQEAgLTE4LDggKzE4LDkgQEAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgogW3JlYmFzZWQgZm9yIHN5c3RlbWQgMjQzXQogU2lnbmVkLW9mZi1ieTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgorCiAtLS0KLSBzcmMvYmFzaWMvY2dyb3VwLXV0aWwuYyAgICAgICAgICAgICAgICAgfCAxNCArKysrKysrLS0tLS0tLQorIHNyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jICAgICAgICAgICAgICAgICB8IDEwICsrKysrLS0tLS0KICBzcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYyAgICAgICAgICAgICAgICAgfCAgNCArKy0tCiAgc3JjL2Jhc2ljL3NtYWNrLXV0aWwuYyAgICAgICAgICAgICAgICAgIHwgIDIgKy0KICBzcmMvYmFzaWMvdXRpbC5jICAgICAgICAgICAgICAgICAgICAgICAgfCAgMiArLQpAQCAtMzEsMjcgKzMyLDE5IEBACiAgc3JjL2xvZ2luL2xvZ2luZC1kYnVzLmMgICAgICAgICAgICAgICAgIHwgIDIgKy0KICBzcmMvbnNwYXduL25zcGF3bi1jZ3JvdXAuYyAgICAgICAgICAgICAgfCAgMiArLQogIHNyYy9uc3Bhd24vbnNwYXduLmMgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrKy0tLQorIHNyYy9zaGFyZWQvY2dyb3VwLXNldHVwLmMgICAgICAgICAgICAgICB8ICA0ICsrLS0KICBzcmMvc2hhcmVkL3N5c2N0bC11dGlsLmMgICAgICAgICAgICAgICAgfCAgMiArLQotIHNyYy9zbGVlcC9zbGVlcC5jICAgICAgICAgICAgICAgICAgICAgICB8IDEwICsrKysrLS0tLS0KKyBzcmMvc2xlZXAvc2xlZXAuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgOCArKysrLS0tLQogIHNyYy91ZGV2L3VkZXZhZG0tdHJpZ2dlci5jICAgICAgICAgICAgICB8ICAyICstCiAgc3JjL3VkZXYvdWRldmQuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKy0KICBzcmMvdmNvbnNvbGUvdmNvbnNvbGUtc2V0dXAuYyAgICAgICAgICAgfCAgMiArLQotIDE3IGZpbGVzIGNoYW5nZWQsIDM2IGluc2VydGlvbnMoKyksIDM2IGRlbGV0aW9ucygtKQorIDE4IGZpbGVzIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKyksIDM1IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2Nncm91cC11dGlsLmMgYi9zcmMvYmFzaWMvY2dyb3VwLXV0aWwuYwotaW5kZXggN2I1ODM5Y2NkNi4uMThmNmU4ZmZjOCAxMDA2NDQKK2luZGV4IGE1MTQxZjRjYmVkZC4uMDRjMDZlN2E1NWNiIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL2Nncm91cC11dGlsLmMKICsrKyBiL3NyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jCi1AQCAtODYwLDcgKzg2MCw3IEBAIGludCBjZ19hdHRhY2goY29uc3QgY2hhciAqY29udHJvbGxlciwgY29uc3QgY2hhciAqcGF0aCwgcGlkX3QgcGlkKSB7Ci0gCi0gICAgICAgICB4c3ByaW50ZihjLCBQSURfRk1UICJcbiIsIHBpZCk7Ci0gCi0tICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoZnMsIGMsIFdSSVRFX1NUUklOR19GSUxFX0RJU0FCTEVfQlVGRkVSKTsKLSsgICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfZmlsZShmcywgYywgMCk7Ci0gICAgICAgICBpZiAociA8IDApCi0gICAgICAgICAgICAgICAgIHJldHVybiByOwotIAotQEAgLTExNDIsNyArMTE0Miw3IEBAIGludCBjZ19pbnN0YWxsX3JlbGVhc2VfYWdlbnQoY29uc3QgY2hhciAqY29udHJvbGxlciwgY29uc3QgY2hhciAqYWdlbnQpIHsKK0BAIC03MzksNyArNzM5LDcgQEAgaW50IGNnX2luc3RhbGxfcmVsZWFzZV9hZ2VudChjb25zdCBjaGFyICpjb250cm9sbGVyLCBjb25zdCBjaGFyICphZ2VudCkgewogIAogICAgICAgICAgc2MgPSBzdHJzdHJpcChjb250ZW50cyk7CiAgICAgICAgICBpZiAoaXNlbXB0eShzYykpIHsKQEAgLTYwLDcgKzUzLDcgQEAKICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByOwogICAgICAgICAgfSBlbHNlIGlmICghcGF0aF9lcXVhbChzYywgYWdlbnQpKQotQEAgLTExNjAsNyArMTE2MCw3IEBAIGludCBjZ19pbnN0YWxsX3JlbGVhc2VfYWdlbnQoY29uc3QgY2hhciAqY29udHJvbGxlciwgY29uc3QgY2hhciAqYWdlbnQpIHsKK0BAIC03NTcsNyArNzU3LDcgQEAgaW50IGNnX2luc3RhbGxfcmVsZWFzZV9hZ2VudChjb25zdCBjaGFyICpjb250cm9sbGVyLCBjb25zdCBjaGFyICphZ2VudCkgewogIAogICAgICAgICAgc2MgPSBzdHJzdHJpcChjb250ZW50cyk7CiAgICAgICAgICBpZiAoc3RyZXEoc2MsICIwIikpIHsKQEAgLTY5LDcgKzYyLDcgQEAKICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiByOwogIAotQEAgLTExODcsNyArMTE4Nyw3IEBAIGludCBjZ191bmluc3RhbGxfcmVsZWFzZV9hZ2VudChjb25zdCBjaGFyICpjb250cm9sbGVyKSB7CitAQCAtNzg0LDcgKzc4NCw3IEBAIGludCBjZ191bmluc3RhbGxfcmVsZWFzZV9hZ2VudChjb25zdCBjaGFyICpjb250cm9sbGVyKSB7CiAgICAgICAgICBpZiAociA8IDApCiAgICAgICAgICAgICAgICAgIHJldHVybiByOwogIApAQCAtNzgsNyArNzEsNyBAQAogICAgICAgICAgaWYgKHIgPCAwKQogICAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAKLUBAIC0xMTk3LDcgKzExOTcsNyBAQCBpbnQgY2dfdW5pbnN0YWxsX3JlbGVhc2VfYWdlbnQoY29uc3QgY2hhciAqY29udHJvbGxlcikgeworQEAgLTc5NCw3ICs3OTQsNyBAQCBpbnQgY2dfdW5pbnN0YWxsX3JlbGVhc2VfYWdlbnQoY29uc3QgY2hhciAqY29udHJvbGxlcikgewogICAgICAgICAgaWYgKHIgPCAwKQogICAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAKQEAgLTg3LDcgKzgwLDcgQEAKICAgICAgICAgIGlmIChyIDwgMCkKICAgICAgICAgICAgICAgICAgcmV0dXJuIHI7CiAgCi1AQCAtMjA1Myw3ICsyMDUzLDcgQEAgaW50IGNnX3NldF9hdHRyaWJ1dGUoY29uc3QgY2hhciAqY29udHJvbGxlciwgY29uc3QgY2hhciAqcGF0aCwgY29uc3QgY2hhciAqYXR0cmkKK0BAIC0xNjUwLDcgKzE2NTAsNyBAQCBpbnQgY2dfc2V0X2F0dHJpYnV0ZShjb25zdCBjaGFyICpjb250cm9sbGVyLCBjb25zdCBjaGFyICpwYXRoLCBjb25zdCBjaGFyICphdHRyaQogICAgICAgICAgaWYgKHIgPCAwKQogICAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAKQEAgLTk2LDE3ICs4OSw4IEBACiAgfQogIAogIGludCBjZ19nZXRfYXR0cmlidXRlKGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIsIGNvbnN0IGNoYXIgKnBhdGgsIGNvbnN0IGNoYXIgKmF0dHJpYnV0ZSwgY2hhciAqKnJldCkgewotQEAgLTI2OTcsNyArMjY5Nyw3IEBAIGludCBjZ19lbmFibGVfZXZlcnl3aGVyZSgKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19kZWJ1Z19lcnJubyhlcnJubywgIkZhaWxlZCB0byBvcGVuIGNncm91cC5zdWJ0cmVlX2NvbnRyb2wgZmlsZSBvZiAlczogJW0iLCBwKTsKLSAgICAgICAgICAgICAgICAgICAgICAgICB9Ci0gCi0tICAgICAgICAgICAgICAgICAgICAgICAgciA9IHdyaXRlX3N0cmluZ19zdHJlYW0oZiwgcywgV1JJVEVfU1RSSU5HX0ZJTEVfRElTQUJMRV9CVUZGRVIpOwotKyAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfc3RyZWFtKGYsIHMsIDApOwotICAgICAgICAgICAgICAgICAgICAgICAgIGlmIChyIDwgMCkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2RlYnVnX2Vycm5vKHIsICJGYWlsZWQgdG8gJXMgY29udHJvbGxlciAlcyBmb3IgJXMgKCVzKTogJW0iLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEZMQUdTX1NFVChtYXNrLCBiaXQpID8gImVuYWJsZSIgOiAiZGlzYWJsZSIsIG4sIHAsIGZzKTsKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYyBiL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jCi1pbmRleCA0MmNlNTNkNWFhLi41NzUxMjUzMmE2IDEwMDY0NAoraW5kZXggZGE3ZTgzNmYxNDNlLi4yMTM4ZjIwYmNjMDMgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYwogKysrIGIvc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMKIEBAIC04NiwxMyArODYsMTMgQEAgaW50IHByb2Nmc190YXNrc19zZXRfbGltaXQodWludDY0X3QgbGltaXQpIHsKQEAgLTEyNiwxMCArMTEwLDEwIEBACiAgICAgICAgICAgICAgICAgIHVpbnQ2NF90IHRocmVhZHNfbWF4OwogIAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9zbWFjay11dGlsLmMgYi9zcmMvYmFzaWMvc21hY2stdXRpbC5jCi1pbmRleCAxMjNkMDBlMTNlLi5lN2VhNzhmMzQ5IDEwMDY0NAoraW5kZXggZGE5YTIxMzlkMzFhLi41ZTkxZjViOGY1ZDkgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvc21hY2stdXRpbC5jCiArKysgYi9zcmMvYmFzaWMvc21hY2stdXRpbC5jCi1AQCAtMTE1LDcgKzExNSw3IEBAIGludCBtYWNfc21hY2tfYXBwbHlfcGlkKHBpZF90IHBpZCwgY29uc3QgY2hhciAqbGFiZWwpIHsKK0BAIC0xMTQsNyArMTE0LDcgQEAgaW50IG1hY19zbWFja19hcHBseV9waWQocGlkX3QgcGlkLCBjb25zdCBjaGFyICpsYWJlbCkgewogICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAKICAgICAgICAgIHAgPSBwcm9jZnNfZmlsZV9hbGxvY2EocGlkLCAiYXR0ci9jdXJyZW50Iik7CkBAIC0xMzksMTAgKzEyMywxMCBAQAogICAgICAgICAgICAgICAgICByZXR1cm4gcjsKICAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvdXRpbC5jIGIvc3JjL2Jhc2ljL3V0aWwuYwotaW5kZXggOTNkNjEwYmM5OC4uOTdkY2E2NGY3MyAxMDA2NDQKK2luZGV4IDJiM2IzOTE4YTMyZi4uYWZmOGQwZmNkNDczIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3V0aWwuYwogKysrIGIvc3JjL2Jhc2ljL3V0aWwuYwotQEAgLTI5NCw3ICsyOTQsNyBAQCB2b2lkIGRpc2FibGVfY29yZWR1bXBzKHZvaWQpIHsKK0BAIC0yNjcsNyArMjY3LDcgQEAgdm9pZCBkaXNhYmxlX2NvcmVkdW1wcyh2b2lkKSB7CiAgICAgICAgICBpZiAoZGV0ZWN0X2NvbnRhaW5lcigpID4gMCkKICAgICAgICAgICAgICAgICAgcmV0dXJuOwogIApAQCAtMTUyLDEwICsxMzYsMTAgQEAKICAgICAgICAgICAgICAgICAgbG9nX2RlYnVnX2Vycm5vKHIsICJGYWlsZWQgdG8gdHVybiBvZmYgY29yZWR1bXBzLCBpZ25vcmluZzogJW0iKTsKICB9CiBkaWZmIC0tZ2l0IGEvc3JjL2JpbmZtdC9iaW5mbXQuYyBiL3NyYy9iaW5mbXQvYmluZm10LmMKLWluZGV4IGFhOWQ4MTFmMmUuLjhjN2YyZGFlN2EgMTAwNjQ0CitpbmRleCA3ZmY4NDRjNzhjM2EuLjVjNTcyMWQ3YzJmNyAxMDA2NDQKIC0tLSBhL3NyYy9iaW5mbXQvYmluZm10LmMKICsrKyBiL3NyYy9iaW5mbXQvYmluZm10LmMKLUBAIC00OCw3ICs0OCw3IEBAIHN0YXRpYyBpbnQgZGVsZXRlX3J1bGUoY29uc3QgY2hhciAqcnVsZSkgeworQEAgLTQ3LDcgKzQ3LDcgQEAgc3RhdGljIGludCBkZWxldGVfcnVsZShjb25zdCBjaGFyICpydWxlKSB7CiAgICAgICAgICBpZiAoIWZuKQogICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX29vbSgpOwogIApAQCAtMTY0LDcgKzE0OCw3IEBACiAgfQogIAogIHN0YXRpYyBpbnQgYXBwbHlfcnVsZShjb25zdCBjaGFyICpydWxlKSB7Ci1AQCAtNTYsNyArNTYsNyBAQCBzdGF0aWMgaW50IGFwcGx5X3J1bGUoY29uc3QgY2hhciAqcnVsZSkgeworQEAgLTU1LDcgKzU1LDcgQEAgc3RhdGljIGludCBhcHBseV9ydWxlKGNvbnN0IGNoYXIgKnJ1bGUpIHsKICAKICAgICAgICAgICh2b2lkKSBkZWxldGVfcnVsZShydWxlKTsKICAKQEAgLTE3Myw3ICsxNTcsNyBAQAogICAgICAgICAgaWYgKHIgPCAwKQogICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2Vycm9yX2Vycm5vKHIsICJGYWlsZWQgdG8gYWRkIGJpbmFyeSBmb3JtYXQ6ICVtIik7CiAgCi1AQCAtMjEzLDcgKzIxMyw3IEBAIHN0YXRpYyBpbnQgcnVuKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKK0BAIC0yMTIsNyArMjEyLDcgQEAgc3RhdGljIGludCBydW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgewogICAgICAgICAgICAgICAgICB9CiAgCiAgICAgICAgICAgICAgICAgIC8qIEZsdXNoIG91dCBhbGwgcnVsZXMgKi8KQEAgLTE4MywxMCArMTY3LDEwIEBACiAgICAgICAgICAgICAgICAgIFNUUlZfRk9SRUFDSChmLCBmaWxlcykgewogICAgICAgICAgICAgICAgICAgICAgICAgIGsgPSBhcHBseV9maWxlKCpmLCB0cnVlKTsKIGRpZmYgLS1naXQgYS9zcmMvY29yZS9tYWluLmMgYi9zcmMvY29yZS9tYWluLmMKLWluZGV4IGJjY2U3MTc4YTguLjQxOTljZWRhYjkgMTAwNjQ0CitpbmRleCAzYzZiNjZlODljOGUuLmMzOWViZTU2YTViMyAxMDA2NDQKIC0tLSBhL3NyYy9jb3JlL21haW4uYwogKysrIGIvc3JjL2NvcmUvbWFpbi5jCi1AQCAtMTI4NSw3ICsxMjg1LDcgQEAgc3RhdGljIGludCBidW1wX3VuaXhfbWF4X2RncmFtX3FsZW4odm9pZCkgeworQEAgLTEzMTIsNyArMTMxMiw3IEBAIHN0YXRpYyBpbnQgYnVtcF91bml4X21heF9kZ3JhbV9xbGVuKHZvaWQpIHsKICAgICAgICAgIGlmICh2ID49IERFRkFVTFRfVU5JWF9NQVhfREdSQU1fUUxFTikKICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgCkBAIC0xOTUsNyArMTc5LDcgQEAKICAgICAgICAgIGlmIChyIDwgMCkKICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19mdWxsX2Vycm5vKElOX1NFVChyLCAtRVJPRlMsIC1FUEVSTSwgLUVBQ0NFUykgPyBMT0dfREVCVUcgOiBMT0dfV0FSTklORywgciwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJGYWlsZWQgdG8gYnVtcCBBRl9VTklYIGRhdGFncmFtIHF1ZXVlIGxlbmd0aCwgaWdub3Jpbmc6ICVtIik7Ci1AQCAtMTUwOSw3ICsxNTA5LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZV9jb3JlX3BhdHRlcm4oYm9vbCBza2lwX3NldHVwKSB7CitAQCAtMTUzNiw3ICsxNTM2LDcgQEAgc3RhdGljIHZvaWQgaW5pdGlhbGl6ZV9jb3JlX3BhdHRlcm4oYm9vbCBza2lwX3NldHVwKSB7CiAgICAgICAgICBpZiAoZ2V0cGlkX2NhY2hlZCgpICE9IDEpCiAgICAgICAgICAgICAgICAgIHJldHVybjsKICAKQEAgLTIwNSw3ICsxODksNyBAQAogICAgICAgICAgICAgICAgICBsb2dfd2FybmluZ19lcnJubyhyLCAiRmFpbGVkIHRvIHdyaXRlICclcycgdG8gL3Byb2Mvc3lzL2tlcm5lbC9jb3JlX3BhdHRlcm4sIGlnbm9yaW5nOiAlbSIsIGFyZ19lYXJseV9jb3JlX3BhdHRlcm4pOwogIH0KIGRpZmYgLS1naXQgYS9zcmMvY29yZS9zbWFjay1zZXR1cC5jIGIvc3JjL2NvcmUvc21hY2stc2V0dXAuYwotaW5kZXggYjk1ZTYyMzlkNC4uZmRiZGFhYWNjYiAxMDA2NDQKK2luZGV4IDQ0MjczOTdmMjcxNS4uOGFlYjVjODI5NTEzIDEwMDY0NAogLS0tIGEvc3JjL2NvcmUvc21hY2stc2V0dXAuYwogKysrIGIvc3JjL2NvcmUvc21hY2stc2V0dXAuYwogQEAgLTMyNSwxNyArMzI1LDE3IEBAIGludCBtYWNfc21hY2tfc2V0dXAoYm9vbCAqbG9hZGVkX3BvbGljeSkgewpAQCAtMjMxLDcgKzIxNSw3IEBACiAgICAgICAgICAgICAgICAgIGxvZ193YXJuaW5nX2Vycm5vKHIsICJGYWlsZWQgdG8gc2V0IFNNQUNLIG5ldGxhYmVsIHJ1bGUgXCIxMjcuMC4wLjEgLUNJUFNPXCI6ICVtIik7CiAgI2VuZGlmCiBkaWZmIC0tZ2l0IGEvc3JjL2hpYmVybmF0ZS1yZXN1bWUvaGliZXJuYXRlLXJlc3VtZS5jIGIvc3JjL2hpYmVybmF0ZS1yZXN1bWUvaGliZXJuYXRlLXJlc3VtZS5jCi1pbmRleCAxN2U3Y2QxYTAwLi44N2E3NjY3NzE2IDEwMDY0NAoraW5kZXggMTdlN2NkMWEwMDliLi44N2E3NjY3NzE2NjMgMTAwNjQ0CiAtLS0gYS9zcmMvaGliZXJuYXRlLXJlc3VtZS9oaWJlcm5hdGUtcmVzdW1lLmMKICsrKyBiL3NyYy9oaWJlcm5hdGUtcmVzdW1lL2hpYmVybmF0ZS1yZXN1bWUuYwogQEAgLTQ1LDcgKzQ1LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgewpAQCAtMjQ0LDcgKzIyOCw3IEBACiAgICAgICAgICAgICAgICAgIGxvZ19lcnJvcl9lcnJubyhyLCAiRmFpbGVkIHRvIHdyaXRlICclcycgdG8gL3N5cy9wb3dlci9yZXN1bWU6ICVtIiwgbWFqb3JfbWlub3IpOwogICAgICAgICAgICAgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOwogZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLWRldmljZS9zZC1kZXZpY2UuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLWRldmljZS9zZC1kZXZpY2UuYwotaW5kZXggYzRhN2YyZjNkMy4uYmNhYzc1ODI4NCAxMDA2NDQKK2luZGV4IDFmMjQ1MWY4ZTFiNC4uM2Y2NzZlYzI4NDFhIDEwMDY0NAogLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtZGV2aWNlL3NkLWRldmljZS5jCiArKysgYi9zcmMvbGlic3lzdGVtZC9zZC1kZXZpY2Uvc2QtZGV2aWNlLmMKIEBAIC0xODQ5LDcgKzE4NDksNyBAQCBfcHVibGljXyBpbnQgc2RfZGV2aWNlX3NldF9zeXNhdHRyX3ZhbHVlKHNkX2RldmljZSAqZGV2aWNlLCBjb25zdCBjaGFyICpzeXNhdHRyLApAQCAtMjU3LDEwICsyNDEsMTAgQEAKICAgICAgICAgICAgICAgICAgaWYgKHIgPT0gLUVMT09QKQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRUlOVkFMOwogZGlmZiAtLWdpdCBhL3NyYy9sb2dpbi9sb2dpbmQtZGJ1cy5jIGIvc3JjL2xvZ2luL2xvZ2luZC1kYnVzLmMKLWluZGV4IDMwYjlhNjYzMzQuLmNjMWQ1Nzc5MzMgMTAwNjQ0CitpbmRleCA1MmE3ZWEzYzc3ZTkuLjk3MDNkZTBkYWJlZSAxMDA2NDQKIC0tLSBhL3NyYy9sb2dpbi9sb2dpbmQtZGJ1cy5jCiArKysgYi9zcmMvbG9naW4vbG9naW5kLWRidXMuYwotQEAgLTEzMjUsNyArMTMyNSw3IEBAIHN0YXRpYyBpbnQgdHJpZ2dlcl9kZXZpY2UoTWFuYWdlciAqbSwgc2RfZGV2aWNlICpkKSB7CitAQCAtMTMzOSw3ICsxMzM5LDcgQEAgc3RhdGljIGludCB0cmlnZ2VyX2RldmljZShNYW5hZ2VyICptLCBzZF9kZXZpY2UgKmQpIHsKICAgICAgICAgICAgICAgICAgaWYgKCF0KQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PTUVNOwogIApAQCAtMjcwLDEwICsyNTQsMTAgQEAKICAKICAgICAgICAgIHJldHVybiAwOwogZGlmZiAtLWdpdCBhL3NyYy9uc3Bhd24vbnNwYXduLWNncm91cC5jIGIvc3JjL25zcGF3bi9uc3Bhd24tY2dyb3VwLmMKLWluZGV4IDA0NjJiNDY0MTMuLjdjNTNkNDE0ODMgMTAwNjQ0CitpbmRleCBmNTA0OGQ5NDczY2IuLmI2MzgzYWI1Yzk3ZSAxMDA2NDQKIC0tLSBhL3NyYy9uc3Bhd24vbnNwYXduLWNncm91cC5jCiArKysgYi9zcmMvbnNwYXduL25zcGF3bi1jZ3JvdXAuYwotQEAgLTEyMyw3ICsxMjMsNyBAQCBpbnQgc3luY19jZ3JvdXAocGlkX3QgcGlkLCBDR3JvdXBVbmlmaWVkIHVuaWZpZWRfcmVxdWVzdGVkLCB1aWRfdCB1aWRfc2hpZnQpIHsKK0BAIC0xMjQsNyArMTI0LDcgQEAgaW50IHN5bmNfY2dyb3VwKHBpZF90IHBpZCwgQ0dyb3VwVW5pZmllZCB1bmlmaWVkX3JlcXVlc3RlZCwgdWlkX3QgdWlkX3NoaWZ0KSB7CiAgICAgICAgICBmbiA9IHN0cmpvaW5hKHRyZWUsIGNncm91cCwgIi9jZ3JvdXAucHJvY3MiKTsKICAKICAgICAgICAgIHNwcmludGYocGlkX3N0cmluZywgUElEX0ZNVCwgcGlkKTsKQEAgLTI4MywxMCArMjY3LDEwIEBACiAgICAgICAgICAgICAgICAgIGxvZ19lcnJvcl9lcnJubyhyLCAiRmFpbGVkIHRvIG1vdmUgcHJvY2VzczogJW0iKTsKICAgICAgICAgICAgICAgICAgZ290byBmaW5pc2g7CiBkaWZmIC0tZ2l0IGEvc3JjL25zcGF3bi9uc3Bhd24uYyBiL3NyYy9uc3Bhd24vbnNwYXduLmMKLWluZGV4IDJhZWM4MDQxZjAuLjg0MTU0MmYyZjMgMTAwNjQ0CitpbmRleCA3MzRkZWUxMTMwZTAuLjcxYWRkOWEwNTVkMiAxMDA2NDQKIC0tLSBhL3NyYy9uc3Bhd24vbnNwYXduLmMKICsrKyBiL3NyYy9uc3Bhd24vbnNwYXduLmMKLUBAIC0yMzU3LDcgKzIzNTcsNyBAQCBzdGF0aWMgaW50IHJlc2V0X2F1ZGl0X2xvZ2ludWlkKHZvaWQpIHsKK0BAIC0yNDQwLDcgKzI0NDAsNyBAQCBzdGF0aWMgaW50IHJlc2V0X2F1ZGl0X2xvZ2ludWlkKHZvaWQpIHsKICAgICAgICAgIGlmIChzdHJlcShwLCAiNDI5NDk2NzI5NSIpKQogICAgICAgICAgICAgICAgICByZXR1cm4gMDsKICAKQEAgLTI5NSw3ICsyNzksNyBAQAogICAgICAgICAgaWYgKHIgPCAwKSB7CiAgICAgICAgICAgICAgICAgIGxvZ19lcnJvcl9lcnJubyhyLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkZhaWxlZCB0byByZXNldCBhdWRpdCBsb2dpbiBVSUQuIFRoaXMgcHJvYmFibHkgbWVhbnMgdGhhdCB5b3VyIGtlcm5lbCBpcyB0b29cbiIKLUBAIC0zNTY2LDEzICszNTY2LDEzIEBAIHN0YXRpYyBpbnQgc2V0dXBfdWlkX21hcChwaWRfdCBwaWQpIHsKK0BAIC0zNjY1LDEzICszNjY1LDEzIEBAIHN0YXRpYyBpbnQgc2V0dXBfdWlkX21hcChwaWRfdCBwaWQpIHsKICAKICAgICAgICAgIHhzcHJpbnRmKHVpZF9tYXAsICIvcHJvYy8iIFBJRF9GTVQgIi91aWRfbWFwIiwgcGlkKTsKICAgICAgICAgIHhzcHJpbnRmKGxpbmUsIFVJRF9GTVQgIiAiIFVJRF9GTVQgIiAiIFVJRF9GTVQgIlxuIiwgMCwgYXJnX3VpZF9zaGlmdCwgYXJnX3VpZF9yYW5nZSk7CkBAIC0zMTEsMTEgKzI5NSwzMyBAQAogICAgICAgICAgaWYgKHIgPCAwKQogICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2Vycm9yX2Vycm5vKHIsICJGYWlsZWQgdG8gd3JpdGUgR0lEIG1hcDogJW0iKTsKICAKK2RpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2Nncm91cC1zZXR1cC5jIGIvc3JjL3NoYXJlZC9jZ3JvdXAtc2V0dXAuYworaW5kZXggZTgzOThjYmRlNWJhLi5iYTY4MmVjMGM5ZTcgMTAwNjQ0CistLS0gYS9zcmMvc2hhcmVkL2Nncm91cC1zZXR1cC5jCisrKysgYi9zcmMvc2hhcmVkL2Nncm91cC1zZXR1cC5jCitAQCAtMjY3LDcgKzI2Nyw3IEBAIGludCBjZ19hdHRhY2goY29uc3QgY2hhciAqY29udHJvbGxlciwgY29uc3QgY2hhciAqcGF0aCwgcGlkX3QgcGlkKSB7CisgCisgICAgICAgICB4c3ByaW50ZihjLCBQSURfRk1UICJcbiIsIHBpZCk7CisgCistICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoZnMsIGMsIFdSSVRFX1NUUklOR19GSUxFX0RJU0FCTEVfQlVGRkVSKTsKKysgICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfZmlsZShmcywgYywgMCk7CisgICAgICAgICBpZiAociA8IDApCisgICAgICAgICAgICAgICAgIHJldHVybiByOworIAorQEAgLTgxNyw3ICs4MTcsNyBAQCBpbnQgY2dfZW5hYmxlX2V2ZXJ5d2hlcmUoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZGVidWdfZXJybm8oZXJybm8sICJGYWlsZWQgdG8gb3BlbiBjZ3JvdXAuc3VidHJlZV9jb250cm9sIGZpbGUgb2YgJXM6ICVtIiwgcCk7CisgICAgICAgICAgICAgICAgICAgICAgICAgfQorIAorLSAgICAgICAgICAgICAgICAgICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfc3RyZWFtKGYsIHMsIFdSSVRFX1NUUklOR19GSUxFX0RJU0FCTEVfQlVGRkVSKTsKKysgICAgICAgICAgICAgICAgICAgICAgICByID0gd3JpdGVfc3RyaW5nX3N0cmVhbShmLCBzLCAwKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBpZiAociA8IDApIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ19kZWJ1Z19lcnJubyhyLCAiRmFpbGVkIHRvICVzIGNvbnRyb2xsZXIgJXMgZm9yICVzICglcyk6ICVtIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBGTEFHU19TRVQobWFzaywgYml0KSA/ICJlbmFibGUiIDogImRpc2FibGUiLCBuLCBwLCBmcyk7CiBkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9zeXNjdGwtdXRpbC5jIGIvc3JjL3NoYXJlZC9zeXNjdGwtdXRpbC5jCi1pbmRleCA5M2JkY2YxMWJmLi42OGNkZGI3YTlmIDEwMDY0NAoraW5kZXggODU0M2RiZDJkMDVmLi43NjE2MjU5OTgxN2UgMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL3N5c2N0bC11dGlsLmMKICsrKyBiL3NyYy9zaGFyZWQvc3lzY3RsLXV0aWwuYwotQEAgLTg4LDcgKzg4LDcgQEAgaW50IHN5c2N0bF93cml0ZV9pcF9wcm9wZXJ0eShpbnQgYWYsIGNvbnN0IGNoYXIgKmlmbmFtZSwgY29uc3QgY2hhciAqcHJvcGVydHksIGMKK0BAIC05Myw3ICs5Myw3IEBAIGludCBzeXNjdGxfd3JpdGVfaXBfcHJvcGVydHkoaW50IGFmLCBjb25zdCBjaGFyICppZm5hbWUsIGNvbnN0IGNoYXIgKnByb3BlcnR5LCBjCiAgCiAgICAgICAgICBsb2dfZGVidWcoIlNldHRpbmcgJyVzJyB0byAnJXMnIiwgcCwgdmFsdWUpOwogIApAQCAtMzI1LDM2ICszMzEsMjggQEAKICAKICBpbnQgc3lzY3RsX3JlYWQoY29uc3QgY2hhciAqcHJvcGVydHksIGNoYXIgKipjb250ZW50KSB7CiBkaWZmIC0tZ2l0IGEvc3JjL3NsZWVwL3NsZWVwLmMgYi9zcmMvc2xlZXAvc2xlZXAuYwotaW5kZXggYjlmZTk2NjM1ZC4uZjE2OGQ3Zjg5MCAxMDA2NDQKK2luZGV4IGZiZmRkYzAyNjJmYy4uN2NjMjkwMjE1NGU5IDEwMDY0NAogLS0tIGEvc3JjL3NsZWVwL3NsZWVwLmMKICsrKyBiL3NyYy9zbGVlcC9zbGVlcC5jCi1AQCAtNTQsNyArNTQsNyBAQCBzdGF0aWMgaW50IHdyaXRlX2hpYmVybmF0ZV9sb2NhdGlvbl9pbmZvKHZvaWQpIHsKK0BAIC00Nyw3ICs0Nyw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfaGliZXJuYXRlX2xvY2F0aW9uX2luZm8oY29uc3QgSGliZXJuYXRlTG9jYXRpb24gKmhpYmVybmF0ZV9sb2NhCisgICAgICAgICBhc3NlcnQoaGliZXJuYXRlX2xvY2F0aW9uLT5zd2FwKTsKICAKLSAgICAgICAgIC8qIGlmIGl0J3MgYSBzd2FwIHBhcnRpdGlvbiwgd2UganVzdCB3cml0ZSB0aGUgZGlzayB0byAvc3lzL3Bvd2VyL3Jlc3VtZSAqLwotICAgICAgICAgaWYgKHN0cmVxKHR5cGUsICJwYXJ0aXRpb24iKSkgewotLSAgICAgICAgICAgICAgICByID0gd3JpdGVfc3RyaW5nX2ZpbGUoIi9zeXMvcG93ZXIvcmVzdW1lIiwgZGV2aWNlLCBXUklURV9TVFJJTkdfRklMRV9ESVNBQkxFX0JVRkZFUik7Ci0rICAgICAgICAgICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfZmlsZSgiL3N5cy9wb3dlci9yZXN1bWUiLCBkZXZpY2UsIDApOwotICAgICAgICAgICAgICAgICBpZiAociA8IDApCi0gICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19kZWJ1Z19lcnJubyhyLCAiRmFpbGVkIHRvIHdyaXRlIHBhcnRpdGlvbiBkZXZpY2UgdG8gL3N5cy9wb3dlci9yZXN1bWU6ICVtIik7CisgICAgICAgICB4c3ByaW50ZihyZXN1bWVfc3RyLCAiJXU6JXUiLCBtYWpvcihoaWJlcm5hdGVfbG9jYXRpb24tPmRldm5vKSwgbWlub3IoaGliZXJuYXRlX2xvY2F0aW9uLT5kZXZubykpOworLSAgICAgICAgciA9IHdyaXRlX3N0cmluZ19maWxlKCIvc3lzL3Bvd2VyL3Jlc3VtZSIsIHJlc3VtZV9zdHIsIFdSSVRFX1NUUklOR19GSUxFX0RJU0FCTEVfQlVGRkVSKTsKKysgICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfZmlsZSgiL3N5cy9wb3dlci9yZXN1bWUiLCByZXN1bWVfc3RyLCAwKTsKKyAgICAgICAgIGlmIChyIDwgMCkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19kZWJ1Z19lcnJubyhyLCAiRmFpbGVkIHRvIHdyaXRlIHBhcnRpdGlvbiBkZXZpY2UgdG8gL3N5cy9wb3dlci9yZXN1bWUgZm9yICclcyc6ICclcyc6ICVtIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoaWJlcm5hdGVfbG9jYXRpb24tPnN3YXAtPmRldmljZSwgcmVzdW1lX3N0cik7CitAQCAtNzQsNyArNzQsNyBAQCBzdGF0aWMgaW50IHdyaXRlX2hpYmVybmF0ZV9sb2NhdGlvbl9pbmZvKGNvbnN0IEhpYmVybmF0ZUxvY2F0aW9uICpoaWJlcm5hdGVfbG9jYQorICAgICAgICAgfQogIAotQEAgLTk4LDE0ICs5OCwxNCBAQCBzdGF0aWMgaW50IHdyaXRlX2hpYmVybmF0ZV9sb2NhdGlvbl9pbmZvKHZvaWQpIHsKLSAKLSAgICAgICAgIG9mZnNldCA9IGZpZW1hcC0+Zm1fZXh0ZW50c1swXS5mZV9waHlzaWNhbCAvIHBhZ2Vfc2l6ZSgpOwotICAgICAgICAgeHNwcmludGYob2Zmc2V0X3N0ciwgIiUiIFBSSXU2NCwgb2Zmc2V0KTsKKyAgICAgICAgIHhzcHJpbnRmKG9mZnNldF9zdHIsICIlIiBQUkl1NjQsIGhpYmVybmF0ZV9sb2NhdGlvbi0+b2Zmc2V0KTsKIC0gICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfZmlsZSgiL3N5cy9wb3dlci9yZXN1bWVfb2Zmc2V0Iiwgb2Zmc2V0X3N0ciwgV1JJVEVfU1RSSU5HX0ZJTEVfRElTQUJMRV9CVUZGRVIpOwogKyAgICAgICAgciA9IHdyaXRlX3N0cmluZ19maWxlKCIvc3lzL3Bvd2VyL3Jlc3VtZV9vZmZzZXQiLCBvZmZzZXRfc3RyLCAwKTsKICAgICAgICAgIGlmIChyIDwgMCkKLSAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19kZWJ1Z19lcnJubyhyLCAiRmFpbGVkIHRvIHdyaXRlIG9mZnNldCAnJXMnOiAlbSIsIG9mZnNldF9zdHIpOwotIAotICAgICAgICAgbG9nX2RlYnVnKCJXcm90ZSBjYWxjdWxhdGVkIHJlc3VtZV9vZmZzZXQgdmFsdWUgdG8gL3N5cy9wb3dlci9yZXN1bWVfb2Zmc2V0OiAlcyIsIG9mZnNldF9zdHIpOwotIAotICAgICAgICAgeHNwcmludGYoZGV2aWNlX3N0ciwgIiVseCIsICh1bnNpZ25lZCBsb25nKXN0Yi5zdF9kZXYpOwotLSAgICAgICAgciA9IHdyaXRlX3N0cmluZ19maWxlKCIvc3lzL3Bvd2VyL3Jlc3VtZSIsIGRldmljZV9zdHIsIFdSSVRFX1NUUklOR19GSUxFX0RJU0FCTEVfQlVGRkVSKTsKLSsgICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfZmlsZSgiL3N5cy9wb3dlci9yZXN1bWUiLCBkZXZpY2Vfc3RyLCAwKTsKLSAgICAgICAgIGlmIChyIDwgMCkKLSAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19kZWJ1Z19lcnJubyhyLCAiRmFpbGVkIHRvIHdyaXRlIGRldmljZSAnJXMnOiAlbSIsIGRldmljZV9zdHIpOwotIAotQEAgLTEyMSw3ICsxMjEsNyBAQCBzdGF0aWMgaW50IHdyaXRlX21vZGUoY2hhciAqKm1vZGVzKSB7CisgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZGVidWdfZXJybm8ociwgIkZhaWxlZCB0byB3cml0ZSBzd2FwIGZpbGUgb2Zmc2V0IHRvIC9zeXMvcG93ZXIvcmVzdW1lX29mZnNldCBmb3IgJyVzJzogJyVzJzogJW0iLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGhpYmVybmF0ZV9sb2NhdGlvbi0+c3dhcC0+ZGV2aWNlLCBvZmZzZXRfc3RyKTsKK0BAIC05MSw3ICs5MSw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfbW9kZShjaGFyICoqbW9kZXMpIHsKICAgICAgICAgIFNUUlZfRk9SRUFDSChtb2RlLCBtb2RlcykgewogICAgICAgICAgICAgICAgICBpbnQgazsKICAKQEAgLTM2Myw3ICszNjEsNyBAQAogICAgICAgICAgICAgICAgICBpZiAoayA+PSAwKQogICAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiAwOwogIAotQEAgLTE0MCw3ICsxNDAsNyBAQCBzdGF0aWMgaW50IHdyaXRlX3N0YXRlKEZJTEUgKipmLCBjaGFyICoqc3RhdGVzKSB7CitAQCAtMTEwLDcgKzExMCw3IEBAIHN0YXRpYyBpbnQgd3JpdGVfc3RhdGUoRklMRSAqKmYsIGNoYXIgKipzdGF0ZXMpIHsKICAgICAgICAgIFNUUlZfRk9SRUFDSChzdGF0ZSwgc3RhdGVzKSB7CiAgICAgICAgICAgICAgICAgIGludCBrOwogIApAQCAtMzczLDcgKzM3MSw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICAgIGxvZ19kZWJ1Z19lcnJubyhrLCAiRmFpbGVkIHRvIHdyaXRlICclcycgdG8gL3N5cy9wb3dlci9zdGF0ZTogJW0iLCAqc3RhdGUpOwogZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXZhZG0tdHJpZ2dlci5jIGIvc3JjL3VkZXYvdWRldmFkbS10cmlnZ2VyLmMKLWluZGV4IDc3ZDk1ZTUxM2YuLjI1Y2U0YWJmYjEgMTAwNjQ0CitpbmRleCA2MGM2OGI1MDI5Y2YuLmZkY2EwM2QzZDQyYyAxMDA2NDQKIC0tLSBhL3NyYy91ZGV2L3VkZXZhZG0tdHJpZ2dlci5jCiArKysgYi9zcmMvdWRldi91ZGV2YWRtLXRyaWdnZXIuYwogQEAgLTQzLDcgKzQzLDcgQEAgc3RhdGljIGludCBleGVjX2xpc3Qoc2RfZGV2aWNlX2VudW1lcmF0b3IgKmUsIGNvbnN0IGNoYXIgKmFjdGlvbiwgU2V0ICpzZXR0bGVfc2UKQEAgLTM4MywxMyArMzgxLDEzIEBACiAtICAgICAgICAgICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfZmlsZShmaWxlbmFtZSwgYWN0aW9uLCBXUklURV9TVFJJTkdfRklMRV9ESVNBQkxFX0JVRkZFUik7CiArICAgICAgICAgICAgICAgIHIgPSB3cml0ZV9zdHJpbmdfZmlsZShmaWxlbmFtZSwgYWN0aW9uLCAwKTsKICAgICAgICAgICAgICAgICAgaWYgKHIgPCAwKSB7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgbG9nX2Z1bGxfZXJybm8ociA9PSAtRU5PRU5UID8gTE9HX0RFQlVHIDogTE9HX0VSUiwgciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRmFpbGVkIHRvIHdyaXRlICclcycgdG8gJyVzJzogJW0iLCBhY3Rpb24sIGZpbGVuYW1lKTsKKyAgICAgICAgICAgICAgICAgICAgICAgICBib29sIGlnbm9yZSA9IElOX1NFVChyLCAtRU5PRU5ULCAtRUFDQ0VTLCAtRU5PREVWLCAtRVJPRlMpOworIAogZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXZkLmMgYi9zcmMvdWRldi91ZGV2ZC5jCi1pbmRleCBjYjUxMjMwNDJhLi5lYTMwOWE5ZTdmIDEwMDY0NAoraW5kZXggY2E2NTQ3NGYyNzYzLi4zODc4MDY4MTQzMWEgMTAwNjQ0CiAtLS0gYS9zcmMvdWRldi91ZGV2ZC5jCiArKysgYi9zcmMvdWRldi91ZGV2ZC5jCi1AQCAtMTExMyw3ICsxMTEzLDcgQEAgc3RhdGljIGludCBzeW50aGVzaXplX2NoYW5nZV9vbmUoc2RfZGV2aWNlICpkZXYsIGNvbnN0IGNoYXIgKnN5c3BhdGgpIHsKK0BAIC0xMDg5LDcgKzEwODksNyBAQCBzdGF0aWMgaW50IHN5bnRoZXNpemVfY2hhbmdlX29uZShzZF9kZXZpY2UgKmRldiwgY29uc3QgY2hhciAqc3lzcGF0aCkgewogIAogICAgICAgICAgZmlsZW5hbWUgPSBzdHJqb2luYShzeXNwYXRoLCAiL3VldmVudCIpOwogICAgICAgICAgbG9nX2RldmljZV9kZWJ1ZyhkZXYsICJkZXZpY2UgaXMgY2xvc2VkLCBzeW50aGVzaXNpbmcgJ2NoYW5nZScgb24gJXMiLCBzeXNwYXRoKTsKQEAgLTM5OSwxMCArMzk3LDEwIEBACiAgICAgICAgICAgICAgICAgIHJldHVybiBsb2dfZGV2aWNlX2RlYnVnX2Vycm5vKGRldiwgciwgIkZhaWxlZCB0byB3cml0ZSAnY2hhbmdlJyB0byAlczogJW0iLCBmaWxlbmFtZSk7CiAgICAgICAgICByZXR1cm4gMDsKIGRpZmYgLS1naXQgYS9zcmMvdmNvbnNvbGUvdmNvbnNvbGUtc2V0dXAuYyBiL3NyYy92Y29uc29sZS92Y29uc29sZS1zZXR1cC5jCi1pbmRleCA3NWQwNTJhZTcwLi41YTE1YzkzOWQ4IDEwMDY0NAoraW5kZXggOWQ3MDYwODVmYjQ3Li4zMGRjZmE4NmY0ZDAgMTAwNjQ0CiAtLS0gYS9zcmMvdmNvbnNvbGUvdmNvbnNvbGUtc2V0dXAuYwogKysrIGIvc3JjL3Zjb25zb2xlL3Zjb25zb2xlLXNldHVwLmMKLUBAIC0xMTcsNyArMTE3LDcgQEAgc3RhdGljIGludCB0b2dnbGVfdXRmOF92Yyhjb25zdCBjaGFyICpuYW1lLCBpbnQgZmQsIGJvb2wgdXRmOCkgeworQEAgLTExNiw3ICsxMTYsNyBAQCBzdGF0aWMgaW50IHRvZ2dsZV91dGY4X3ZjKGNvbnN0IGNoYXIgKm5hbWUsIGludCBmZCwgYm9vbCB1dGY4KSB7CiAgc3RhdGljIGludCB0b2dnbGVfdXRmOF9zeXNmcyhib29sIHV0ZjgpIHsKICAgICAgICAgIGludCByOwogIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1tZXNvbi1BZGQtRGVmaS1vYmpjb3B5LW9wdGlvbi10by1zcGVjaWZ5LW9iamNvcHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLW1lc29uLUFkZC1EZWZpLW9iamNvcHktb3B0aW9uLXRvLXNwZWNpZnktb2JqY29weS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggN2Q3NjRiNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLW1lc29uLUFkZC1EZWZpLW9iamNvcHktb3B0aW9uLXRvLXNwZWNpZnktb2JqY29weS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gM2YzN2FkNWUwODNkY2FkNTFjMjFjMTA1MGIyODI5YjcwZDI0MGI1MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDYgQXVnIDIwMTkgMDM6MTA6MjAgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gbWVzb246IEFkZCAtRGVmaS1vYmpjb3B5IG9wdGlvbiB0byBzcGVjaWZ5IG9iamNvcHkKLQotVGhpcyBoZWxwcyBpbiBjcm9zcyBjb21waWxpbmcgZm9yIHg4NiB0YXJnZXQgb24gYSBhYXJjaDY0IGhvc3QgZS5nLgotRml4ZXMKLVRPUERJUi9idWlsZC90bXAvaG9zdHRvb2xzL29iamNvcHk6c3JjL2Jvb3QvZWZpL3N5c3RlbWRfYm9vdC5zbzogSW52YWxpZCBiZmQgdGFyZ2V0Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIG1lc29uX29wdGlvbnMudHh0ICAgICAgICB8IDIgKysKLSBzcmMvYm9vdC9lZmkvbWVzb24uYnVpbGQgfCA1ICsrKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKLWluZGV4IGQ0ZWMzN2RkYTIuLmRjMWM5NmUxMTIgMTAwNjQ0Ci0tLS0gYS9tZXNvbl9vcHRpb25zLnR4dAotKysrIGIvbWVzb25fb3B0aW9ucy50eHQKLUBAIC0yOTYsNiArMjk2LDggQEAgb3B0aW9uKCdlZmktY2MnLCB0eXBlIDogJ2FycmF5JywKLSAgICAgICAgZGVzY3JpcHRpb24gOiAndGhlIGNvbXBpbGVyIHRvIHVzZSBmb3IgRUZJIG1vZHVsZXMnKQotIG9wdGlvbignZWZpLWxkJywgdHlwZSA6ICdzdHJpbmcnLAotICAgICAgICBkZXNjcmlwdGlvbiA6ICd0aGUgbGlua2VyIHRvIHVzZSBmb3IgRUZJIG1vZHVsZXMnKQotK29wdGlvbignZWZpLW9iamNvcHknLCB0eXBlIDogJ3N0cmluZycsCi0rICAgICAgIGRlc2NyaXB0aW9uIDogJ3RoZSBvYmpjb3B5IHRvIHVzZSBmb3IgRUZJJykKLSBvcHRpb24oJ2VmaS1saWJkaXInLCB0eXBlIDogJ3N0cmluZycsCi0gICAgICAgIGRlc2NyaXB0aW9uIDogJ3BhdGggdG8gdGhlIEVGSSBsaWIgZGlyZWN0b3J5JykKLSBvcHRpb24oJ2VmaS1sZHNkaXInLCB0eXBlIDogJ3N0cmluZycsCi1kaWZmIC0tZ2l0IGEvc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkIGIvc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkCi1pbmRleCAwYWUzMTkxNjM1Li41YTcxMzdiYzg0IDEwMDY0NAotLS0tIGEvc3JjL2Jvb3QvZWZpL21lc29uLmJ1aWxkCi0rKysgYi9zcmMvYm9vdC9lZmkvbWVzb24uYnVpbGQKLUBAIC04OCw3ICs4OCwxMCBAQCBpZiBoYXZlX2dudV9lZmkKLSAgICAgICAgICAgICAgICAgb3V0cHV0IDogJ2VmaV9jb25maWcuaCcsCi0gICAgICAgICAgICAgICAgIGNvbmZpZ3VyYXRpb24gOiBlZmlfY29uZikKLSAKLS0gICAgICAgIG9iamNvcHkgPSBmaW5kX3Byb2dyYW0oJ29iamNvcHknKQotKyAgICAgICAgb2JqY29weSA9IGdldF9vcHRpb24oJ2VmaS1vYmpjb3B5JykKLSsgICAgICAgIGlmIG9iamNvcHkgPT0gJycKLSsgICAgICAgICAgICAgICAgb2JqY29weSA9IGZpbmRfcHJvZ3JhbSgnb2JqY29weScsIHJlcXVpcmVkOiB0cnVlKQotKyAgICAgICAgZW5kaWYKLSAKLSAgICAgICAgIGVmaV9sZHNkaXIgPSBnZXRfb3B0aW9uKCdlZmktbGRzZGlyJykKLSAgICAgICAgIGFyY2hfbGRzID0gJ2VsZl9AMEBfZWZpLmxkcycuZm9ybWF0KGdudV9lZmlfcGF0aF9hcmNoKQotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1wc3RvcmUtZml4LXVzZS1hZnRlci1mcmVlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMS1wc3RvcmUtZml4LXVzZS1hZnRlci1mcmVlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZDE0N2ExLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtcHN0b3JlLWZpeC11c2UtYWZ0ZXItZnJlZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gMWIzMTU2ZWRkMjkxZTA4ODJkODBhNjk1ZDAzNWRkMzA1MjEzNDVkMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1pY2hhZWwgT2xicmljaCA8bS5vbGJyaWNoQHBlbmd1dHJvbml4LmRlPgotRGF0ZTogRnJpLCA2IFNlcCAyMDE5IDE1OjA0OjAxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHBzdG9yZTogZml4IHVzZSBhZnRlciBmcmVlCi0KLVRoZSBtZW1vcnkgaXMgc3RpbGwgbmVlZGVkIGluIHRoZSBzZF9qb3VybmFsX3NlbmR2KCkgYWZ0ZXIgdGhlICdpZicgYmxvY2suCi0KLShjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDFlMTlmNWFjMGQ2ODBhNjNlY2NhZTdlZjFmYzZjZTIyNWRjYTBiYmYpCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogWW9uZ3hpbiBMaXUgPHlvbmd4aW4ubGl1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvcHN0b3JlL3BzdG9yZS5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3BzdG9yZS9wc3RvcmUuYyBiL3NyYy9wc3RvcmUvcHN0b3JlLmMKLWluZGV4IGM3NjBiM2U4OTkuLjhmZmU1MjM4MzAgMTAwNjQ0Ci0tLS0gYS9zcmMvcHN0b3JlL3BzdG9yZS5jCi0rKysgYi9zcmMvcHN0b3JlL3BzdG9yZS5jCi1AQCAtMTE3LDYgKzExNyw3IEBAIHN0YXRpYyBpbnQgY29tcGFyZV9wc3RvcmVfZW50cmllcyhjb25zdCB2b2lkICpfYSwgY29uc3Qgdm9pZCAqX2IpIHsKLSAKLSBzdGF0aWMgaW50IG1vdmVfZmlsZShQU3RvcmVFbnRyeSAqcGUsIGNvbnN0IGNoYXIgKnN1YmRpcikgewotICAgICAgICAgX2NsZWFudXBfZnJlZV8gY2hhciAqaWZkX3BhdGggPSBOVUxMLCAqb2ZkX3BhdGggPSBOVUxMOwotKyAgICAgICAgX2NsZWFudXBfZnJlZV8gdm9pZCAqZmllbGQgPSBOVUxMOwotICAgICAgICAgY29uc3QgY2hhciAqc3VmZml4LCAqbWVzc2FnZTsKLSAgICAgICAgIHN0cnVjdCBpb3ZlYyBpb3ZlY1syXTsKLSAgICAgICAgIGludCBuX2lvdmVjID0gMCwgcjsKLUBAIC0xMzgsNyArMTM5LDYgQEAgc3RhdGljIGludCBtb3ZlX2ZpbGUoUFN0b3JlRW50cnkgKnBlLCBjb25zdCBjaGFyICpzdWJkaXIpIHsKLSAgICAgICAgIGlvdmVjW25faW92ZWMrK10gPSBJT1ZFQ19NQUtFX1NUUklORyhtZXNzYWdlKTsKLSAKLSAgICAgICAgIGlmIChwZS0+Y29udGVudF9zaXplID4gMCkgewotLSAgICAgICAgICAgICAgICBfY2xlYW51cF9mcmVlXyB2b2lkICpmaWVsZCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgIHNpemVfdCBmaWVsZF9zaXplOwotIAotICAgICAgICAgICAgICAgICBmaWVsZF9zaXplID0gc3RybGVuKCJGSUxFPSIpICsgcGUtPmNvbnRlbnRfc2l6ZTsKLS0tIAotMi4xNC40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtdW5pdC1maWxlLmMtY29uc2lkZXItc3ltbGluay1vbi1maWxlc3lzdGVtcy1saWtlLU5GUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDEtdW5pdC1maWxlLmMtY29uc2lkZXItc3ltbGluay1vbi1maWxlc3lzdGVtcy1saWtlLU5GUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmEyMGEwYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAxLXVuaXQtZmlsZS5jLWNvbnNpZGVyLXN5bWxpbmstb24tZmlsZXN5c3RlbXMtbGlrZS1ORlMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIGQwMTIyYzA3N2QyZDhmZDBmZDI5YjQ2M2M1MDFlN2RkZjkxNzdmZjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUdWUsIDI0IFNlcCAyMDE5IDE3OjA0OjUwICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHVuaXQtZmlsZS5jOiBjb25zaWRlciBzeW1saW5rIG9uIGZpbGVzeXN0ZW1zIGxpa2UgTkZTCi0KLVNvbWUgZmlsZXN5c3RlbXMgZG8gbm90IGZ1bGx5IHN1cHBvcnQgcmVhZGRpciwgYWNjb3JkaW5nIHRvIHRoZSBtYW51YWwsCi1zbyB3ZSBzaG91bGQgYWxzbyBjb25zaWRlciBEVF9VTktOT1dOIHRvIGNvcnJlY3RseSBoYW5kbGUgc3ltbGlua3MuCi0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvcHVsbC8xMzYzN10KLS0tLQotIHNyYy9zaGFyZWQvdW5pdC1maWxlLmMgfCA2ICsrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvdW5pdC1maWxlLmMgYi9zcmMvc2hhcmVkL3VuaXQtZmlsZS5jCi1pbmRleCA0YTVmMjNlNmMxLi44MzczMTAzMDAwIDEwMDY0NAotLS0tIGEvc3JjL3NoYXJlZC91bml0LWZpbGUuYwotKysrIGIvc3JjL3NoYXJlZC91bml0LWZpbGUuYwotQEAgLTI0Nyw2ICsyNDcsNyBAQCBpbnQgdW5pdF9maWxlX2J1aWxkX25hbWVfbWFwKAotICAgICAgICAgICAgICAgICAgICAgICAgIF9jbGVhbnVwX2ZyZWVfIGNoYXIgKl9maWxlbmFtZV9mcmVlID0gTlVMTCwgKnNpbXBsaWZpZWQgPSBOVUxMOwotICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN1ZmZpeCwgKmRzdCA9IE5VTEw7Ci0gICAgICAgICAgICAgICAgICAgICAgICAgYm9vbCB2YWxpZF91bml0X25hbWU7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgc3RydWN0IHN0YXQgc2I7Ci0gCi0gICAgICAgICAgICAgICAgICAgICAgICAgdmFsaWRfdW5pdF9uYW1lID0gdW5pdF9uYW1lX2lzX3ZhbGlkKGRlLT5kX25hbWUsIFVOSVRfTkFNRV9BTlkpOwotIAotQEAgLTI3OSw3ICsyODAsMTAgQEAgaW50IHVuaXRfZmlsZV9idWlsZF9uYW1lX21hcCgKLSAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoaGFzaG1hcF9jb250YWlucyhpZHMsIGRlLT5kX25hbWUpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29udGludWU7Ci0gCi0tICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlLT5kX3R5cGUgPT0gRFRfTE5LKSB7Ci0rICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGRlLT5kX3R5cGUgPT0gRFRfTE5LIHx8Ci0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIChkZS0+ZF90eXBlID09IERUX1VOS05PV04gJiYKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxzdGF0KGZpbGVuYW1lLCAmc2IpID09IDAgJiYKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzYi5zdF9tb2RlICYgU19JRk1UKSA9PSBTX0lGTE5LKSkgewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogV2UgZG9uJ3QgZXhwbGljaXRseSBjaGVjayBmb3IgYWxpYXMgbG9vcHMgaGVyZS4gdW5pdF9pZHNfbWFwX2dldCgpIHdoaWNoCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKiBsaW1pdHMgdGhlIG51bWJlciBvZiBob3BzIHNob3VsZCBiZSB1c2VkIHRvIGFjY2VzcyB0aGUgbWFwLiAqLwotIAotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2gKaW5kZXggYzYyMTNhYi4uYTVlNDFiZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1kb24tdC11c2UtZ2xpYmMtc3BlY2lmaWMtcXNvcnRfci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLWRvbi10LXVzZS1nbGliYy1zcGVjaWZpYy1xc29ydF9yLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAxZWI4NDUzNGRlYTA1ZDQxYWZlZDFkODk4Y2JhMjEyYWQ3ZDMxMGRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzZWIxMmE2YmEwYmNlMTQ5NzE3ZWFhYmViMTUwNWQzNzliM2Q3MDVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyNSBGZWIgMjAxOSAxMzo0MTo0MSArMDgwMAotU3ViamVjdDogW1BBVENIIDAyLzI0XSBkb24ndCB1c2UgZ2xpYmMtc3BlY2lmaWMgcXNvcnRfcgorU3ViamVjdDogW1BBVENIXSBkb24ndCB1c2UgZ2xpYmMtc3BlY2lmaWMgcXNvcnRfcgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCiAKQEAgLTEwLDE0ICsxMCwxNSBAQAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogW1JlYmFzZWQgZm9yIHYyNDJdCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KKwogLS0tCi0gc3JjL2Jhc2ljL3NvcnQtdXRpbC5oICAgICAgICAgICAgICB8IDE0IC0tLS0tLS0tLS0tLS0tCi0gc3JjL2xpYnN5c3RlbWQvc2QtaHdkYi9od2RiLXV0aWwuYyB8IDE5ICsrKysrKysrKysrKysrLS0tLS0KLSBzcmMvc2hhcmVkL2Zvcm1hdC10YWJsZS5jICAgICAgICAgIHwgMzYgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tCisgc3JjL2Jhc2ljL3NvcnQtdXRpbC5oICAgICAgICAgICAgICB8IDE0IC0tLS0tLS0tLS0tLQorIHNyYy9saWJzeXN0ZW1kL3NkLWh3ZGIvaHdkYi11dGlsLmMgfCAxOSArKysrKysrKysrKy0tLS0tCisgc3JjL3NoYXJlZC9mb3JtYXQtdGFibGUuYyAgICAgICAgICB8IDM2ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLQogIDMgZmlsZXMgY2hhbmdlZCwgMzggaW5zZXJ0aW9ucygrKSwgMzEgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvc29ydC11dGlsLmggYi9zcmMvYmFzaWMvc29ydC11dGlsLmgKLWluZGV4IGUwMjlmODY0NmUuLjI3ZDY4YjM0MWMgMTAwNjQ0CitpbmRleCBlMDI5Zjg2NDZlYjAuLjI3ZDY4YjM0MWNmMyAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9zb3J0LXV0aWwuaAogKysrIGIvc3JjL2Jhc2ljL3NvcnQtdXRpbC5oCiBAQCAtNTQsMTcgKzU0LDMgQEAgc3RhdGljIGlubGluZSB2b2lkIHFzb3J0X3NhZmUodm9pZCAqYmFzZSwgc2l6ZV90IG5tZW1iLCBzaXplX3Qgc2l6ZSwgX19jb21wYXJfZm4KQEAgLTM5LDcgKzQwLDcgQEAKIC0gICAgICAgICAgICAgICAgcXNvcnRfcl9zYWZlKChwKSwgKG4pLCBzaXplb2YoKHApWzBdKSwgKF9fY29tcGFyX2RfZm5fdCkgX2Z1bmNfLCB1c2VyZGF0YSk7IFwKIC0gICAgICAgIH0pCiBkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtaHdkYi9od2RiLXV0aWwuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLWh3ZGIvaHdkYi11dGlsLmMKLWluZGV4IGM4MzU3NWM3YzguLjcyZjhmM2EwNTAgMTAwNjQ0CitpbmRleCBkNzkwZThmZDBiMTkuLjQyZTBmZDdjOWIzYyAxMDA2NDQKIC0tLSBhL3NyYy9saWJzeXN0ZW1kL3NkLWh3ZGIvaHdkYi11dGlsLmMKICsrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLWh3ZGIvaHdkYi11dGlsLmMKIEBAIC0xMjgsOSArMTI4LDEzIEBAIHN0YXRpYyB2b2lkIHRyaWVfZnJlZShzdHJ1Y3QgdHJpZSAqdHJpZSkgewpAQCAtODMsMTAgKzg0LDEwIEBACiAgfQogIAogZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvZm9ybWF0LXRhYmxlLmMgYi9zcmMvc2hhcmVkL2Zvcm1hdC10YWJsZS5jCi1pbmRleCBhNWMwYTk5YjA4Li5kNTk1Y2JlMzcyIDEwMDY0NAoraW5kZXggNDI1MDEzMDQ2NDkxLi4zM2MxYzVhMTJkNDMgMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL2Zvcm1hdC10YWJsZS5jCiArKysgYi9zcmMvc2hhcmVkL2Zvcm1hdC10YWJsZS5jCi1AQCAtODUwLDMxICs4NTAsMzMgQEAgc3RhdGljIGludCBjZWxsX2RhdGFfY29tcGFyZShUYWJsZURhdGEgKmEsIHNpemVfdCBpbmRleF9hLCBUYWJsZURhdGEgKmIsIHNpemVfdAorQEAgLTExNjQsMzEgKzExNjQsMzMgQEAgc3RhdGljIGludCBjZWxsX2RhdGFfY29tcGFyZShUYWJsZURhdGEgKmEsIHNpemVfdCBpbmRleF9hLCBUYWJsZURhdGEgKmIsIHNpemVfdAogICAgICAgICAgcmV0dXJuIENNUChpbmRleF9hLCBpbmRleF9iKTsKICB9CiAgCkBAIC0xMzAsNyArMTMxLDcgQEAKICAgICAgICAgIH0KICAKICAgICAgICAgIC8qIE9yZGVyIGlkZW50aWNhbCBsaW5lcyBieSB0aGUgb3JkZXIgdGhlcmUgd2VyZSBvcmlnaW5hbGx5IGFkZGVkIGluICovCi1AQCAtMTEwNyw3ICsxMTA5LDEyIEBAIGludCB0YWJsZV9wcmludChUYWJsZSAqdCwgRklMRSAqZikgeworQEAgLTE2OTAsNyArMTY5MiwxMiBAQCBpbnQgdGFibGVfcHJpbnQoVGFibGUgKnQsIEZJTEUgKmYpIHsKICAgICAgICAgICAgICAgICAgZm9yIChpID0gMDsgaSA8IG5fcm93czsgaSsrKQogICAgICAgICAgICAgICAgICAgICAgICAgIHNvcnRlZFtpXSA9IGkgKiB0LT5uX2NvbHVtbnM7CiAgCkBAIC0xNDQsNyArMTQ1LDcgQEAKICAgICAgICAgIH0KICAKICAgICAgICAgIGlmICh0LT5kaXNwbGF5X21hcCkKLUBAIC0xNTM0LDcgKzE1NDEsMTIgQEAgaW50IHRhYmxlX3RvX2pzb24oVGFibGUgKnQsIEpzb25WYXJpYW50ICoqcmV0KSB7CitAQCAtMjIzNiw3ICsyMjQzLDEyIEBAIGludCB0YWJsZV90b19qc29uKFRhYmxlICp0LCBKc29uVmFyaWFudCAqKnJldCkgewogICAgICAgICAgICAgICAgICBmb3IgKGkgPSAwOyBpIDwgbl9yb3dzOyBpKyspCiAgICAgICAgICAgICAgICAgICAgICAgICAgc29ydGVkW2ldID0gaSAqIHQtPm5fY29sdW1uczsKICAKQEAgLTE1OCw2ICsxNTksMyBAQAogICAgICAgICAgfQogIAogICAgICAgICAgaWYgKHQtPmRpc3BsYXlfbWFwKQotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1zcmMtbG9naW4tYnJpZ2h0bmVzcy5jLWluY2x1ZGUtc3lzLXdhaXQuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItc3JjLWxvZ2luLWJyaWdodG5lc3MuYy1pbmNsdWRlLXN5cy13YWl0LmgucGF0Y2gKaW5kZXggZGNhZTY2OC4uYmE3NDI0ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMi1zcmMtbG9naW4tYnJpZ2h0bmVzcy5jLWluY2x1ZGUtc3lzLXdhaXQuaC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXNyYy1sb2dpbi1icmlnaHRuZXNzLmMtaW5jbHVkZS1zeXMtd2FpdC5oLnBhdGNoCkBAIC0xLDQgKzEsNyBAQAotSW5jbHVkZSBzeXMvd2FpdC5oCitGcm9tIDEwNjkyMjMzNWVjNTAyYmNiNDQ1MWM1NGE4OWJlNDlmODhmYTU0ZGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+CitEYXRlOiBGcmksIDEzIFNlcCAyMDE5IDE5OjI2OjI3IC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIEluY2x1ZGUgc3lzL3dhaXQuaAogCiBGaXhlczoKIHNyYy9sb2dpbi9sb2dpbmQtYnJpZ2h0bmVzcy5jOjE1ODo4NTogZXJyb3I6ICdXRVhJVEVEJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiAnV0lGRVhJVEVEJz8KQEAgLTgsMTIgKzExLDEzIEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgorCiAtLS0KICBzcmMvbG9naW4vbG9naW5kLWJyaWdodG5lc3MuYyB8IDEgKwogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2xvZ2luL2xvZ2luZC1icmlnaHRuZXNzLmMgYi9zcmMvbG9naW4vbG9naW5kLWJyaWdodG5lc3MuYwotaW5kZXggOGRmYTk3ZDdhZS4uYmRkZDRhMjcyNyAxMDA2NDQKK2luZGV4IDNmNGI2NWUxZmRmMS4uNWFmN2UzZDVjZTNmIDEwMDY0NAogLS0tIGEvc3JjL2xvZ2luL2xvZ2luZC1icmlnaHRuZXNzLmMKICsrKyBiL3NyYy9sb2dpbi9sb2dpbmQtYnJpZ2h0bmVzcy5jCiBAQCAtMSw1ICsxLDYgQEAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDItdXNlLWxuci13cmFwcGVyLWluc3RlYWQtb2YtbG9va2luZy1mb3ItcmVsYXRpdmUtb3B0aS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDlhMzM0ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAyLXVzZS1sbnItd3JhcHBlci1pbnN0ZWFkLW9mLWxvb2tpbmctZm9yLXJlbGF0aXZlLW9wdGkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MyArMCwwIEBACi1Gcm9tIGJkYmFmZTE4YzNiZjk5YjNiNjkxY2Q1MmI5Y2NmZjYwZjMxMzg5MmQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDI3IEp1biAyMDE4IDE2OjA5OjI0ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMi81XSB1c2UgbG5yIHdyYXBwZXIgaW5zdGVhZCBvZiBsb29raW5nIGZvciAtLXJlbGF0aXZlIG9wdGlvbgotIGZvciBsbgotCi1SZW1vdmUgZmlsZSBtYW51YWxseSB0byBhdm9pZCB0aGUgJ0ZpbGUgRXhpc3RzJyBlcnJvciB3aGVuIGNyZWF0aW5nCi1zeW1saW5rLiBUaGlzIGlzIGJlY2F1c2UgdGhlIG9yaWdpbmFsICdsbicgY29tbWFuZCB1c2VzICctZicgb3B0aW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLVNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotW3JlYmFzZWQgZm9yIHN5c3RlbWQgMjQzXQotU2lnbmVkLW9mZi1ieTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgotLS0tCi0gbWVzb24uYnVpbGQgICAgICAgICAgICAgICAgIHwgNCAtLS0tCi0gdG9vbHMvbWVzb24tbWFrZS1zeW1saW5rLnNoIHwgMyArKy0KLSB1bml0cy9tZXNvbi1hZGQtd2FudHMuc2ggICAgfCA3ICsrKysrKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IGU1Y2ViMWUxNjkuLjc5Yjc2MmZhZWIgMTAwNjQ0Ci0tLS0gYS9tZXNvbi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQKLUBAIC01NzksMTAgKzU3OSw2IEBAIGVuZGZvcmVhY2gKLSAKLSBjb25mLnNldF9xdW90ZWQoJ1RFTElOSVQnLCBnZXRfb3B0aW9uKCd0ZWxpbml0LXBhdGgnKSkKLSAKLS1pZiBydW5fY29tbWFuZCgnbG4nLCAnLS1yZWxhdGl2ZScsICctLWhlbHAnKS5yZXR1cm5jb2RlKCkgIT0gMAotLSAgICAgICAgZXJyb3IoJ2xuIGRvZXMgbm90IHN1cHBvcnQgLS1yZWxhdGl2ZSAoYWRkZWQgaW4gY29yZXV0aWxzIDguMTYpJykKLS1lbmRpZgotLQotICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotIAotIGdwZXJmID0gZmluZF9wcm9ncmFtKCdncGVyZicpCi1kaWZmIC0tZ2l0IGEvdG9vbHMvbWVzb24tbWFrZS1zeW1saW5rLnNoIGIvdG9vbHMvbWVzb24tbWFrZS1zeW1saW5rLnNoCi1pbmRleCBkYTBkMTNhMzQxLi45MGJjMGE5M2MyIDEwMDc1NQotLS0tIGEvdG9vbHMvbWVzb24tbWFrZS1zeW1saW5rLnNoCi0rKysgYi90b29scy9tZXNvbi1tYWtlLXN5bWxpbmsuc2gKLUBAIC04LDUgKzgsNiBAQCBta2RpciAtdnAgIiQoZGlybmFtZSAiJHtERVNURElSOi19JDIiKSIKLSBpZiBbICIkKGRpcm5hbWUgJDEpIiA9IC4gXTsgdGhlbgotICAgICBsbiAtdmZzIC1UICIkMSIgIiR7REVTVERJUjotfSQyIgotIGVsc2UKLS0gICAgbG4gLXZmcyAtVCAtLXJlbGF0aXZlICIke0RFU1RESVI6LX0kMSIgIiR7REVTVERJUjotfSQyIgotKyAgICBybSAtZiAiJHtERVNURElSOi19JDIiCi0rICAgIGxuciAiJHtERVNURElSOi19JDEiICIke0RFU1RESVI6LX0kMiIKLSBmaQotZGlmZiAtLWdpdCBhL3VuaXRzL21lc29uLWFkZC13YW50cy5zaCBiL3VuaXRzL21lc29uLWFkZC13YW50cy5zaAotaW5kZXggYTQ4M2Q3NWI4Ni4uM2MwMWM1MjNmMSAxMDA3NTUKLS0tLSBhL3VuaXRzL21lc29uLWFkZC13YW50cy5zaAotKysrIGIvdW5pdHMvbWVzb24tYWRkLXdhbnRzLnNoCi1AQCAtMjUsNCArMjUsOSBAQCBjYXNlICIkdGFyZ2V0IiBpbgotICAgICAgICAgOzsKLSBlc2FjCi0gCi0tbG4gLXZmcyAtLXJlbGF0aXZlICIkdW5pdHBhdGgiICIkZGlyIgotK2lmIFsgLWQgIiRkaXIiIF07IHRoZW4KLSsgICAgICAgIHJtIC1mICIkZGlyLyR1bml0IgotKyAgICAgICAgbG5yICIkdW5pdHBhdGgiICIkZGlyLyR1bml0IgotK2Vsc2UKLSsgICAgICAgIGxuciAiJHVuaXRwYXRoIiAiJGRpciIKLStmaQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaAppbmRleCA2Njk1ZDU2Li5jNjIwNDc4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLWltcGxtZW50LXN5c3RlbWQtc3lzdi1pbnN0YWxsLWZvci1PRS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNDc4NjQ5ODkzODhiY2QwNGQ2NDdlY2Y2MThhZDdlMjYwMzk5ZGJiNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZjkwNzg1MDFhMTQ5NWM5OTkxNDMxZDE0MzVkMDgxY2QyZTgzMDMyOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTYXQsIDUgU2VwIDIwMTUgMDY6MzE6NDcgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAzLzVdIGltcGxtZW50IHN5c3RlbWQtc3lzdi1pbnN0YWxsIGZvciBPRQorU3ViamVjdDogW1BBVENIXSBpbXBsbWVudCBzeXN0ZW1kLXN5c3YtaW5zdGFsbCBmb3IgT0UKIAogVXNlIHVwZGF0ZS1yYy5kIGZvciBlbmFibGluZy9kaXNhYmxpbmcgYW5kIHN0YXR1cyBjb21tYW5kCiB0byBjaGVjayB0aGUgc3RhdHVzIG9mIHRoZSBzeXN2IHNlcnZpY2UKQEAgLTksMTIgKzksMTMgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UtU3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHNyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04gfCA2ICsrKy0tLQogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvc3lzdGVtY3RsL3N5c3RlbWQtc3lzdi1pbnN0YWxsLlNLRUxFVE9OIGIvc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTgotaW5kZXggOGMxNmNmOS4uOWYwNzhhMSAxMDA3NTUKK2luZGV4IDhjMTZjZjk5OTEzZi4uOWYwNzhhMTIxNDY5IDEwMDc1NQogLS0tIGEvc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTgogKysrIGIvc3JjL3N5c3RlbWN0bC9zeXN0ZW1kLXN5c3YtaW5zdGFsbC5TS0VMRVRPTgogQEAgLTMyLDE3ICszMiwxNyBAQCBjYXNlICIkMSIgaW4KQEAgLTM4LDYgKzM5LDMgQEAKICAgICAgICAgIDs7CiAgICAgICopCiAgICAgICAgICB1c2FnZSA7OwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLW1pc3NpbmdfdHlwZS5oLWFkZC1fX2NvbXBhcmVfZm5fdC1hbmQtY29tcGFyaXNvbl9mbl8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLW1pc3NpbmdfdHlwZS5oLWFkZC1fX2NvbXBhcmVfZm5fdC1hbmQtY29tcGFyaXNvbl9mbl8ucGF0Y2gKaW5kZXggMmUzOWY3YS4uMTQwNDg5NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1taXNzaW5nX3R5cGUuaC1hZGQtX19jb21wYXJlX2ZuX3QtYW5kLWNvbXBhcmlzb25fZm5fLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDMtbWlzc2luZ190eXBlLmgtYWRkLV9fY29tcGFyZV9mbl90LWFuZC1jb21wYXJpc29uX2ZuXy5wYXRjaApAQCAtMSwyNCArMSwyOCBAQAotRnJvbSBhOTQyMWQ1NTEwMmZjODRmNzdmN2MyMWEyNDc5ZmNkMDA2NTJiODk2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAyMzNkZTg3MmI5YjAzM2VjODQyYzIxMzUxNTJkMmUwMDZhYzQ0YzE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyNSBGZWIgMjAxOSAxMzo1NToxMiArMDgwMAotU3ViamVjdDogW1BBVENIIDAzLzI0XSBtaXNzaW5nX3R5cGUuaDogYWRkIF9fY29tcGFyZV9mbl90IGFuZCBjb21wYXJpc29uX2ZuX3QKK1N1YmplY3Q6IFtQQVRDSF0gbWlzc2luZ190eXBlLmg6IGFkZCBfX2NvbXBhcmVfZm5fdCBhbmQgY29tcGFyaXNvbl9mbl90CiAKIE1ha2UgaXQgd29yayB3aXRoIG11c2wgd2hlcmUgY29tcGFyaXNvbl9mbl90IGFuZCBfX2NvbXBhcmVfZm5fdAogaXMgbm90IHByb3ZpZGVkLgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCiAKK1NpZ25lZC1vZmYtYnk6IEFsZXggS2llcm5hbiA8YWxleC5raWVybmFuQGdtYWlsLmNvbT4KK1tSZWJhc2VkIGZvciB2MjQ0XQogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogW1JlYmFzZWQgZm9yIHYyNDJdCiBTaWduZWQtb2ZmLWJ5OiBBbmRyZWogVmFsZWsgPGFuZHJlai52YWxla0BzaWVtZW5zLmNvbT4KKwogLS0tCiAgc3JjL2Jhc2ljL21pc3NpbmdfdHlwZS5oIHwgOSArKysrKysrKysKICBzcmMvYmFzaWMvc29ydC11dGlsLmggICAgfCAxICsKKyBzcmMvY29yZS9rbW9kLXNldHVwLmMgICAgfCAxICsKICBzcmMvam91cm5hbC9jYXRhbG9nLmMgICAgfCAxICsKLSAzIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKykKKyA0IGZpbGVzIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nX3R5cGUuaCBiL3NyYy9iYXNpYy9taXNzaW5nX3R5cGUuaAotaW5kZXggYmY4YTZjYWExYi4uMjEzNGZlNTA5NSAxMDA2NDQKK2luZGV4IGJmOGE2Y2FhMWI0Ni4uYzQ4N2U2NWU3YmRlIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmdfdHlwZS5oCiArKysgYi9zcmMvYmFzaWMvbWlzc2luZ190eXBlLmgKIEBAIC0xMCwzICsxMCwxMiBAQApAQCAtMzUsMjkgKzM5LDM4IEBACiArdHlwZWRlZiBpbnQgKCpfX2NvbXBhcl9mbl90KShjb25zdCB2b2lkICosIGNvbnN0IHZvaWQgKik7CiArI2VuZGlmCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3NvcnQtdXRpbC5oIGIvc3JjL2Jhc2ljL3NvcnQtdXRpbC5oCi1pbmRleCBlMDI5Zjg2Li43MjQ3ZDQwIDEwMDY0NAoraW5kZXggMjdkNjhiMzQxY2YzLi4zMDdlYTRhYzBlOGUgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvc29ydC11dGlsLmgKICsrKyBiL3NyYy9iYXNpYy9zb3J0LXV0aWwuaAogQEAgLTQsNiArNCw3IEBACiAgI2luY2x1ZGUgPHN0ZGxpYi5oPgogIAogICNpbmNsdWRlICJtYWNyby5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3NpbmdfdHlwZS5oIgogIAogIHZvaWQgKnhic2VhcmNoX3IoY29uc3Qgdm9pZCAqa2V5LCBjb25zdCB2b2lkICpiYXNlLCBzaXplX3Qgbm1lbWIsIHNpemVfdCBzaXplLAogICAgICAgICAgICAgICAgICAgX19jb21wYXJfZF9mbl90IGNvbXBhciwgdm9pZCAqYXJnKTsKK2RpZmYgLS1naXQgYS9zcmMvY29yZS9rbW9kLXNldHVwLmMgYi9zcmMvY29yZS9rbW9kLXNldHVwLmMKK2luZGV4IDEyODY3NDMyNzM2Mi4uMDljY2Q2MTNlMzJjIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUva21vZC1zZXR1cC5jCisrKysgYi9zcmMvY29yZS9rbW9kLXNldHVwLmMKK0BAIC0xMCw2ICsxMCw3IEBACisgI2luY2x1ZGUgImttb2Qtc2V0dXAuaCIKKyAjaW5jbHVkZSAibWFjcm8uaCIKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZ190eXBlLmgiCisgCisgI2lmIEhBVkVfS01PRAorICNpbmNsdWRlICJtb2R1bGUtdXRpbC5oIgogZGlmZiAtLWdpdCBhL3NyYy9qb3VybmFsL2NhdGFsb2cuYyBiL3NyYy9qb3VybmFsL2NhdGFsb2cuYwotaW5kZXggN2JlZmZjMWUxYS4uNDgxOGEyZTVjYyAxMDA2NDQKK2luZGV4IDcwYjJjOGI0NmM0ZS4uZDU3NGE2NDU4NmYxIDEwMDY0NAogLS0tIGEvc3JjL2pvdXJuYWwvY2F0YWxvZy5jCiArKysgYi9zcmMvam91cm5hbC9jYXRhbG9nLmMKLUBAIC0yOSw2ICsyOSw3IEBACitAQCAtMjgsNiArMjgsNyBAQAogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgogICNpbmNsdWRlICJzdHJ2LmgiCiAgI2luY2x1ZGUgInRtcGZpbGUtdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3NpbmdfdHlwZS5oIgogIAogIGNvbnN0IGNoYXIgKiBjb25zdCBjYXRhbG9nX2ZpbGVfZGlyc1tdID0gewogICAgICAgICAgIi91c3IvbG9jYWwvbGliL3N5c3RlbWQvY2F0YWxvZy8iLAotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwMy1zcmMtYmFzaWMtY29weS5jLWluY2x1ZGUtc2lnbmFsLmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLXNyYy1iYXNpYy1jb3B5LmMtaW5jbHVkZS1zaWduYWwuaC5wYXRjaAppbmRleCA3ZWUwZDQ4Li41MzhhOTljIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLXNyYy1iYXNpYy1jb3B5LmMtaW5jbHVkZS1zaWduYWwuaC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDAzLXNyYy1iYXNpYy1jb3B5LmMtaW5jbHVkZS1zaWduYWwuaC5wYXRjaApAQCAtMSw0ICsxLDcgQEAKLUluY2x1ZGUgc2lnbmFsLmgKK0Zyb20gMDgyZDJlYjJhNjU1MjU4OTBhOTEzNzIzNzY0ZTY3YTM2ZWU3NTM4NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KK0RhdGU6IEZyaSwgMTMgU2VwIDIwMTkgMTk6MjY6MjcgLTA0MDAKK1N1YmplY3Q6IFtQQVRDSF0gSW5jbHVkZSBzaWduYWwuaAogCiBGaXhlcyBzZXZlcmFsIHNpZ25hbCBzZXQgcmVsYXRlZCBlcnJvcnM6CiBzcmMvYmFzaWMvY29weS5jOjkyOjE5OiBlcnJvcjogaW1wbGljaXQgZGVjbGFyYXRpb24gb2YgZnVuY3Rpb24gJ3NpZ2VtcHR5c2V0JyBbLVdlcnJvcj1pbXBsaWNpdC1mdW5jdGlvbi1kZWNsYXJhdGlvbl0KQEAgLTksMTcgKzEyLDE4IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgorCiAtLS0KICBzcmMvYmFzaWMvY29weS5jIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvY29weS5jIGIvc3JjL2Jhc2ljL2NvcHkuYwotaW5kZXggY2EzMTFlMDIxZS4uM2NmN2ZjMTY5NyAxMDA2NDQKK2luZGV4IDkwMjg4NjhmNjk2ZC4uNTE2ODU4NmZhNTIyIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL2NvcHkuYwogKysrIGIvc3JjL2Jhc2ljL2NvcHkuYwotQEAgLTEyLDYgKzEyLDcgQEAKK0BAIC04LDYgKzgsNyBAQAorICNpbmNsdWRlIDxzeXMvc2VuZGZpbGUuaD4KICAjaW5jbHVkZSA8c3lzL3hhdHRyLmg+Ci0gI2luY2x1ZGUgPHRpbWUuaD4KICAjaW5jbHVkZSA8dW5pc3RkLmg+CiArI2luY2x1ZGUgPHNpZ25hbC5oPgogIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtYWRkLWZhbGxiYWNrLXBhcnNlX3ByaW50Zl9mb3JtYXQtaW1wbGVtZW50YXRpb24ucGF0Y2gKaW5kZXggYTJhYWQ0MC4uMGRlYTkzMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA0LWFkZC1mYWxsYmFjay1wYXJzZV9wcmludGZfZm9ybWF0LWltcGxlbWVudGF0aW9uLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA3YmNmM2IxNjY2OTQwOTA0OTdhMGFjZDJjNTI5OWU0ZTA0ZmNjOWI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4YWYxNjhjZWZjYTAxZjhmMmRhMzM2ZjFjODI2MjBjMjg0ZGM3NGYyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyNSBGZWIgMjAxOSAxNDowNDoyMSArMDgwMAotU3ViamVjdDogW1BBVENIIDA0LzI0XSBhZGQgZmFsbGJhY2sgcGFyc2VfcHJpbnRmX2Zvcm1hdCBpbXBsZW1lbnRhdGlvbgorU3ViamVjdDogW1BBVENIXSBhZGQgZmFsbGJhY2sgcGFyc2VfcHJpbnRmX2Zvcm1hdCBpbXBsZW1lbnRhdGlvbgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCiAKQEAgLTEwLDExICsxMCwxMiBAQAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogW3JlYmFzZWQgZm9yIHN5c3RlbWQgMjQzXQogU2lnbmVkLW9mZi1ieTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgorCiAtLS0KICBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgIHwgICAxICsKICBzcmMvYmFzaWMvbWVzb24uYnVpbGQgICAgICAgICAgIHwgICA1ICsKLSBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jIHwgMjczICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oIHwgIDU3ICsrKysrKysrKworIHNyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmMgfCAyNzMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyBzcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oIHwgIDU3ICsrKysrKysKICBzcmMvYmFzaWMvc3RkaW8tdXRpbC5oICAgICAgICAgIHwgICAyICstCiAgc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMgICAgICB8ICAgMiArLQogIDYgZmlsZXMgY2hhbmdlZCwgMzM4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCkBAIC0yMiwxMCArMjMsMTAgQEAKICBjcmVhdGUgbW9kZSAxMDA2NDQgc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuaAogCiBkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggNzliNzYyZmFlYi4uN2Y4YzY3OTQxMSAxMDA2NDQKK2luZGV4IGZjMjE2ZDIyZGEyNC4uYTI1OTk2ODAzZDY0IDEwMDY0NAogLS0tIGEvbWVzb24uYnVpbGQKICsrKyBiL21lc29uLmJ1aWxkCi1AQCAtNjEzLDYgKzYxMyw3IEBAIGVuZGlmCitAQCAtNjQwLDYgKzY0MCw3IEBAIGVuZGlmCiAgZm9yZWFjaCBoZWFkZXIgOiBbJ2NyeXB0LmgnLAogICAgICAgICAgICAgICAgICAgICdsaW51eC9tZW1mZC5oJywKICAgICAgICAgICAgICAgICAgICAnbGludXgvdm1fc29ja2V0cy5oJywKQEAgLTM0LDEwICszNSwxMCBAQAogICAgICAgICAgICAgICAgICAgICd2YWxncmluZC9tZW1jaGVjay5oJywKICAgICAgICAgICAgICAgICAgICAndmFsZ3JpbmQvdmFsZ3JpbmQuaCcsCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL21lc29uLmJ1aWxkIGIvc3JjL2Jhc2ljL21lc29uLmJ1aWxkCi1pbmRleCBkNmNhZjI4ZjE0Li4zMmMxYWNmMzQ5IDEwMDY0NAoraW5kZXggY2NiMjJlMTU5NTA1Li4yNWM3N2VhNmJjMGUgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvbWVzb24uYnVpbGQKICsrKyBiL3NyYy9iYXNpYy9tZXNvbi5idWlsZAotQEAgLTMxMiw2ICszMTIsMTEgQEAgZm9yZWFjaCBpdGVtIDogW1snYWYnLCAgICAgYWZfbGlzdF90eHQsICAgICAnYWYnLCAgICAgICAgICcnXSwKK0BAIC0zMTMsNiArMzEzLDExIEBAIGZvcmVhY2ggaXRlbSA6IFtbJ2FmJywgICAgIGFmX2xpc3RfdHh0LCAgICAgJ2FmJywgICAgICAgICAnJ10sCiAgZW5kZm9yZWFjaAogIAogIGJhc2ljX3NvdXJjZXMgKz0gZ2VuZXJhdGVkX2dwZXJmX2hlYWRlcnMKQEAgLTUxLDcgKzUyLDcgQEAKICAgICAgICAgICdnY3J5cHQtdXRpbC5oJykKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jIGIvc3JjL2Jhc2ljL3BhcnNlLXByaW50Zi1mb3JtYXQuYwogbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAwMDAuLjQ5NDM3ZTU0NDUKK2luZGV4IDAwMDAwMDAwMDAwMC4uNDk0MzdlNTQ0NTQwCiAtLS0gL2Rldi9udWxsCiArKysgYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5jCiBAQCAtMCwwICsxLDI3MyBAQApAQCAtMzMwLDcgKzMzMSw3IEBACiArfQogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmggYi9zcmMvYmFzaWMvcGFyc2UtcHJpbnRmLWZvcm1hdC5oCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uNDdiZTc1MjJkNworaW5kZXggMDAwMDAwMDAwMDAwLi40N2JlNzUyMmQ3ZmEKIC0tLSAvZGV2L251bGwKICsrKyBiL3NyYy9iYXNpYy9wYXJzZS1wcmludGYtZm9ybWF0LmgKIEBAIC0wLDAgKzEsNTcgQEAKQEAgLTM5Miw3ICszOTMsNyBAQAogKwogKyNlbmRpZiAvKiBIQVZFX1BSSU5URl9IICovCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3N0ZGlvLXV0aWwuaCBiL3NyYy9iYXNpYy9zdGRpby11dGlsLmgKLWluZGV4IGMzYjk0NDhkNGYuLjI5MzdhYTEzYjEgMTAwNjQ0CitpbmRleCBjM2I5NDQ4ZDRmNGYuLjI5MzdhYTEzYjE3OCAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9zdGRpby11dGlsLmgKICsrKyBiL3NyYy9iYXNpYy9zdGRpby11dGlsLmgKIEBAIC0xLDEzICsxLDEzIEBACkBAIC00MTEsNyArNDEyLDcgQEAKICAjZGVmaW5lIHNucHJpbnRmX29rKGJ1ZiwgbGVuLCBmbXQsIC4uLikgXAogICAgICAgICAgKChzaXplX3QpIHNucHJpbnRmKGJ1ZiwgbGVuLCBmbXQsIF9fVkFfQVJHU19fKSA8IChsZW4pKQogZGlmZiAtLWdpdCBhL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jIGIvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKLWluZGV4IDVlZjExZmExYTQuLjYzODRhYjYyMGMgMTAwNjQ0CitpbmRleCA5MTJlY2VmNzNjY2UuLjQzZWQ3NTZiZGE1MyAxMDA2NDQKIC0tLSBhL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCiArKysgYi9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYwogQEAgLTIsNyArMiw2IEBACkBAIC00MjAsOSArNDIxLDkgQEAKICAjaW5jbHVkZSA8ZmNudGwuaD4KIC0jaW5jbHVkZSA8cHJpbnRmLmg+CiAgI2luY2x1ZGUgPHN0ZGRlZi5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+CiAgI2luY2x1ZGUgPHN5cy91bi5oPgotQEAgLTIxLDYgKzIwLDcgQEAKKyAjaW5jbHVkZSA8dW5pc3RkLmg+CitAQCAtMjAsNiArMTksNyBAQAogICNpbmNsdWRlICJzdGRpby11dGlsLmgiCiAgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCiAgI2luY2x1ZGUgInRtcGZpbGUtdXRpbC5oIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY5YzU5OTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1ydWxlcy13aGl0ZWxpc3QtaGQtZGV2aWNlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLUZyb20gZGMwYTZhOWZlNGRhOTczOGVmYWJhOTQyMjMzYWQzOWRhNjI1YTkxOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjEgRmViIDIwMTkgMTY6Mjg6MjEgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCA0LzVdIHJ1bGVzOiB3aGl0ZWxpc3QgaGQqIGRldmljZXMKLQotcWVtdSBieSBkZWZhdWx0IGVtdWxhdGVzIElERSBhbmQgdGhlIGxpbnV4LXlvY3RvIGtlcm5lbChzKSB1c2UKLUNPTkZJR19JREUgaW5zdGVhZCBvZiB0aGUgbW9yZSBtb2Rlcm4gbGlic2F0YSwgc28gZGlza3MgYXBwZWFyIGFzCi0vZGV2L2hkKi4gUGF0Y2ggcmVqZWN0ZWQgdXBzdHJlYW0gYmVjYXVzZSBDT05GSUdfSURFIGlzIGRlcHJlY2F0ZWQuCi0KLVVwc3RyZWFtLVN0YXR1czogRGVuaWVkIFtodHRwczovL2dpdGh1Yi5jb20vc3lzdGVtZC9zeXN0ZW1kL3B1bGwvMTI3Nl0KLQotU2lnbmVkLW9mZi1ieTogUGF0cmljayBPaGx5IDxwYXRyaWNrLm9obHlAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVtyZWJhc2VkIGZvciBzeXN0ZW1kIDI0MV0KLVNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KLVtyZWJhc2VkIGZvciBzeXN0ZW1kIDI0M10KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KLS0tLQotIHJ1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3J1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcyBiL3J1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcwotaW5kZXggNzgwMmIxYzk0Zi4uYzA1MzRhZTI2YSAxMDA2NDQKLS0tLSBhL3J1bGVzLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcwotKysrIGIvcnVsZXMvNjAtcGVyc2lzdGVudC1zdG9yYWdlLnJ1bGVzCi1AQCAtNyw3ICs3LDcgQEAgQUNUSU9OPT0icmVtb3ZlIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLSBFTlZ7VURFVl9ESVNBQkxFX1BFUlNJU1RFTlRfU1RPUkFHRV9SVUxFU19GTEFHfT09IjEiLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgotIAotIFNVQlNZU1RFTSE9ImJsb2NrIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKLS1LRVJORUwhPSJsb29wKnxtbWNibGsqWzAtOV18bXNibGsqWzAtOV18bXNwYmxrKlswLTldfG52bWUqfHNkKnxzcip8dmQqfHh2ZCp8YmNhY2hlKnxjY2lzcyp8ZGFzZCp8dWJkKnx1YmkqfHNjbSp8cG1lbSp8bmJkKnx6ZCoiLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgotK0tFUk5FTCE9Imxvb3AqfG1tY2JsaypbMC05XXxtc2JsaypbMC05XXxtc3BibGsqWzAtOV18bnZtZSp8c2QqfHNyKnx2ZCp8eHZkKnxiY2FjaGUqfGNjaXNzKnxkYXNkKnx1YmQqfHViaSp8c2NtKnxwbWVtKnxuYmQqfHpkKnxoZCoiLCBHT1RPPSJwZXJzaXN0ZW50X3N0b3JhZ2VfZW5kIgotIAotICMgaWdub3JlIHBhcnRpdGlvbnMgdGhhdCBzcGFuIHRoZSBlbnRpcmUgZGlzawotIFRFU1Q9PSJ3aG9sZV9kaXNrIiwgR09UTz0icGVyc2lzdGVudF9zdG9yYWdlX2VuZCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDQtc3JjLXNoYXJlZC1jcHUtc2V0LXV0aWwuaC1hZGQtX19jcHVfbWFzay1kZWZpbml0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1zcmMtc2hhcmVkLWNwdS1zZXQtdXRpbC5oLWFkZC1fX2NwdV9tYXNrLWRlZmluaXRpb24ucGF0Y2gKaW5kZXggMGY3NWU4Yy4uZDM5NDQ0NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1zcmMtc2hhcmVkLWNwdS1zZXQtdXRpbC5oLWFkZC1fX2NwdV9tYXNrLWRlZmluaXRpb24ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNC1zcmMtc2hhcmVkLWNwdS1zZXQtdXRpbC5oLWFkZC1fX2NwdV9tYXNrLWRlZmluaXRpb24ucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1IYW5kbGUgX19jcHVfbWFzayB1c2FnZQorRnJvbSBkYmU4YjNlZTQ1NTgwZGVmZWVmY2FjOTI5Yjg5N2M1NDM3ZmZjNTBiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgorRGF0ZTogRnJpLCAxMyBTZXAgMjAxOSAxOToyNjoyNyAtMDQwMAorU3ViamVjdDogW1BBVENIXSBIYW5kbGUgX19jcHVfbWFzayB1c2FnZQogCiBGaXhlcyBlcnJvcnM6CiAKQEAgLTE1LDEzICsxOCwxNCBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+CisKIC0tLQogIHNyYy9zaGFyZWQvY3B1LXNldC11dGlsLmggfCAyICsrCiAgc3JjL3Rlc3QvdGVzdC1zaXplb2YuYyAgICB8IDIgKy0KICAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9jcHUtc2V0LXV0aWwuaCBiL3NyYy9zaGFyZWQvY3B1LXNldC11dGlsLmgKLWluZGV4IDI3ODEyZGZkNTkuLmY2OThmOWRmODMgMTAwNjQ0CitpbmRleCAyNzgxMmRmZDU5MjMuLjBhYjQwNzMxZWE5MyAxMDA2NDQKIC0tLSBhL3NyYy9zaGFyZWQvY3B1LXNldC11dGlsLmgKICsrKyBiL3NyYy9zaGFyZWQvY3B1LXNldC11dGlsLmgKIEBAIC02LDYgKzYsOCBAQApAQCAtMzQsNyArMzgsNyBAQAogIHR5cGVkZWYgc3RydWN0IENQVVNldCB7CiAgICAgICAgICBjcHVfc2V0X3QgKnNldDsKIGRpZmYgLS1naXQgYS9zcmMvdGVzdC90ZXN0LXNpemVvZi5jIGIvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYwotaW5kZXggYTcxMGRiNTM3MC4uZDE2MDFhZDkyOSAxMDA2NDQKK2luZGV4IGM2NTA2MmQyNTYyYy4uOGI2ZWVmYTljZGFlIDEwMDY0NAogLS0tIGEvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYwogKysrIGIvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYwogQEAgLTEsNiArMSw1IEBACkBAIC00Myw4ICs0Nyw4IEBACiAtI2luY2x1ZGUgPHNjaGVkLmg+CiAgI2luY2x1ZGUgPHN0ZGlvLmg+CiAgI2luY2x1ZGUgPHN0cmluZy5oPgotIAotQEAgLTgsNiArNyw3IEBACisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorQEAgLTEwLDYgKzksNyBAQAogICNpbmNsdWRlIDxmbG9hdC5oPgogIAogICNpbmNsdWRlICJ0aW1lLXV0aWwuaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtcnVsZXMtd2F0Y2gtbWV0YWRhdGEtY2hhbmdlcy1pbi1pZGUtZGV2aWNlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtcnVsZXMtd2F0Y2gtbWV0YWRhdGEtY2hhbmdlcy1pbi1pZGUtZGV2aWNlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTYxNzViNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LXJ1bGVzLXdhdGNoLW1ldGFkYXRhLWNoYW5nZXMtaW4taWRlLWRldmljZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIGQxYmNjYzcyMWRkOGY0M2ZlZTI5YzVkZjBlOWI3ODM0NWU2OWY0YjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDIxIEZlYiAyMDE5IDE2OjM4OjM4ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggNS81XSBydWxlczogd2F0Y2ggbWV0YWRhdGEgY2hhbmdlcyBpbiBpZGUgZGV2aWNlcwotCi1Gb3JtYXR0aW5nIElERSBzdG9yYWdlIGRvZXMgbm90IHRyaWdnZXIgImNoYW5nZSIgdWV2ZW50cy4gQXMgYSByZXN1bHQKLWNsaWVudHMgdXNpbmcgdWRldiBBUEkgZG9uJ3QgZ2V0IGFueSB1cGRhdGVzIGFmdGVyd2FyZHMgYW5kIGdldCBvdXRkYXRlZAotaW5mb3JtYXRpb24gYWJvdXQgdGhlIGRldmljZS4KLS4uLgotcm9vdEBxZW11eDg2LTY0On4jIG1rZnMuZXh0NCAtRiAvZGV2L2hkYTEKLUNyZWF0aW5nIGZpbGVzeXN0ZW0gd2l0aCAyNjIxNDQgNGsgYmxvY2tzIGFuZCA2NTUzNiBpbm9kZXMKLUZpbGVzeXN0ZW0gVVVJRDogOTg3OTFlYjItMmJmMy00N2FkLWI0ZDgtNGNmN2U5MTRlZWUyCi0KLXJvb3RAcWVtdXg4Ni02NDp+IyBscyAvZGV2L2Rpc2svYnktdXVpZC85ODc5MWViMi0yYmYzLTQ3YWQtYjRkOC00Y2Y3ZTkxNGVlZTIKLWxzOiBjYW5ub3QgYWNjZXNzICcvZGV2L2Rpc2svYnktdXVpZC85ODc5MWViMi0yYmYzLTQ3YWQtYjRkOC00Y2Y3ZTkxNGVlZTInOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0uLi4KLUluY2x1ZGUgaGQqIGluIGEgbWF0Y2ggZm9yIHdhdGNoIG9wdGlvbiBhc3NpZ25tZW50LgotCi1VcHN0cmVhbS1TdGF0dXM6IERlbmllZAotCi1xZW11IGJ5IGRlZmF1bHQgZW11bGF0ZXMgSURFIGFuZCB0aGUgbGludXgteW9jdG8ga2VybmVsKHMpIHVzZQotQ09ORklHX0lERSBpbnN0ZWFkIG9mIHRoZSBtb3JlIG1vZGVybiBsaWJzYXRhLCBzbyBkaXNrcyBhcHBlYXIgYXMKLS9kZXYvaGQqLiBBIHNpbWlsYXIgcGF0Y2ggcmVqZWN0ZWQgYnkgdXBzdHJlYW0gYmVjYXVzZSBDT05GSUdfSURFCi1pcyBkZXByZWNhdGVkLgotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1bcmViYXNlZCBmb3Igc3lzdGVtZCAyNDFdCi1TaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+Ci1bcmViYXNlZCBmb3Igc3lzdGVtZCAyNDNdCi1TaWduZWQtb2ZmLWJ5OiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+Ci0tLS0KLSBydWxlcy82MC1ibG9jay5ydWxlcyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3J1bGVzLzYwLWJsb2NrLnJ1bGVzIGIvcnVsZXMvNjAtYmxvY2sucnVsZXMKLWluZGV4IDMxMzRhYjk5NWUuLmNkNzJhNDk0YTEgMTAwNjQ0Ci0tLS0gYS9ydWxlcy82MC1ibG9jay5ydWxlcwotKysrIGIvcnVsZXMvNjAtYmxvY2sucnVsZXMKLUBAIC05LDUgKzksNSBAQCBBQ1RJT049PSJjaGFuZ2UiLCBTVUJTWVNURU09PSJzY3NpIiwgRU5We0RFVlRZUEV9PT0ic2NzaV9kZXZpY2UiLCBURVNUPT0iYmxvY2siLAotIAotICMgd2F0Y2ggbWV0YWRhdGEgY2hhbmdlcywgY2F1c2VkIGJ5IHRvb2xzIGNsb3NpbmcgdGhlIGRldmljZSBub2RlIHdoaWNoIHdhcyBvcGVuZWQgZm9yIHdyaXRpbmcKLSBBQ1RJT04hPSJyZW1vdmUiLCBTVUJTWVNURU09PSJibG9jayIsIFwKLS0gIEtFUk5FTD09Imxvb3AqfG1tY2JsaypbMC05XXxtc2JsaypbMC05XXxtc3BibGsqWzAtOV18bnZtZSp8c2QqfHZkKnx4dmQqfGJjYWNoZSp8Y2Npc3MqfGRhc2QqfHViZCp8dWJpKnxzY20qfHBtZW0qfG5iZCp8emQqIiwgXAotKyAgS0VSTkVMPT0ibG9vcCp8bW1jYmxrKlswLTldfG1zYmxrKlswLTldfG1zcGJsaypbMC05XXxudm1lKnxzZCp8dmQqfHh2ZCp8YmNhY2hlKnxjY2lzcyp8ZGFzZCp8dWJkKnx1YmkqfHNjbSp8cG1lbSp8bmJkKnx6ZCp8aGQqIiwgXAotICAgT1BUSU9OUys9IndhdGNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNS1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNS1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoCmluZGV4IGFkZmMzYjcuLmNhNGYwZDUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDUtc3JjLWJhc2ljLW1pc3NpbmcuaC1jaGVjay1mb3ItbWlzc2luZy1zdHJuZHVwYS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA1LXNyYy1iYXNpYy1taXNzaW5nLmgtY2hlY2stZm9yLW1pc3Npbmctc3RybmR1cGEucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDM5OWZkM2VkYTMwNDU2MzZhNzBkYTQzOGEwZmQxNDA2Y2MzMzJlZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDg1ZGNhYWQ4ZjM4NTIxZWMzZGM1ODA3OTQwNzJiNjAxOTAwZWVkODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBNb24sIDI1IEZlYiAyMDE5IDE0OjE4OjIxICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMjRdIHNyYy9iYXNpYy9taXNzaW5nLmg6IGNoZWNrIGZvciBtaXNzaW5nIHN0cm5kdXBhCitTdWJqZWN0OiBbUEFUQ0hdIHNyYy9iYXNpYy9taXNzaW5nLmg6IGNoZWNrIGZvciBtaXNzaW5nIHN0cm5kdXBhCiAKIGluY2x1ZGUgbWlzc2luZy5oICBmb3IgZGVmaW5pdGlvbiBvZiBzdHJuZHVwYQogCkBAIC0xMywyOCArMTMsNDggQEAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlaiBWYWxlayA8YW5kcmVqLnZhbGVrQHNpZW1lbnMuY29tPgogW3JlYmFzZWQgZm9yIHN5c3RlbWQgMjQzXQogU2lnbmVkLW9mZi1ieTogU2NvdHQgTXVycmF5IDxzY290dC5tdXJyYXlAa29uc3Vsa28uY29tPgorU2lnbmVkLW9mZi1ieTogQWxleCBLaWVybmFuIDxhbGV4LmtpZXJuYW5AZ21haWwuY29tPgorW3JlYmFzZWQgZm9yIHN5c3RlbWQgMjQ0XQorCiAtLS0KICBtZXNvbi5idWlsZCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL2JhY2tsaWdodC9iYWNrbGlnaHQuYyAgICAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9iYXNpYy9jZ3JvdXAtdXRpbC5jICAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvYmFzaWMvZW52LXV0aWwuYyAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL2Jhc2ljL2xvZy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9iYXNpYy9taXNzaW5nX3N0ZGxpYi5oICAgICAgICAgICAgICAgICB8IDEyICsrKysrKysrKysrKwogIHNyYy9iYXNpYy9ta2Rpci5jICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvYmFzaWMvcGFyc2UtdXRpbC5jICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL2Jhc2ljL3Byb2MtY21kbGluZS5jICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9iYXNpYy9wcm9jZnMtdXRpbC5jICAgICAgICAgICAgICAgICAgICB8ICAxICsKKyBzcmMvYmFzaWMvc2VsaW51eC11dGlsLmMgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL2Jhc2ljL3RpbWUtdXRpbC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9ib290L2JsZXNzLWJvb3QuYyAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKICBzcmMvY29yZS9kYnVzLWNncm91cC5jICAgICAgICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL2NvcmUvZGJ1cy1leGVjdXRlLmMgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9jb3JlL2RidXMtdXRpbC5jICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKKyBzcmMvY29yZS9leGVjdXRlLmMgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL2NvcmUva21vZC1zZXR1cC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9jb3JlL3NlcnZpY2UuYyAgICAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKKyBzcmMvY29yZWR1bXAvY29yZWR1bXAtdmFjdXVtLmMgICAgICAgICAgICAgfCAgMSArCisgc3JjL2pvdXJuYWwtcmVtb3RlL2pvdXJuYWwtcmVtb3RlLW1haW4uYyAgIHwgIDEgKwogIHNyYy9qb3VybmFsL2pvdXJuYWxjdGwuYyAgICAgICAgICAgICAgICAgICB8ICAxICsKKyBzcmMvam91cm5hbC9zZC1qb3VybmFsLmMgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1tZXNzYWdlLmMgICAgICAgIHwgIDEgKwogIHNyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtb2JqZWN0cy5jICAgICAgICB8ICAxICsKKyBzcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLXNvY2tldC5jICAgICAgICAgfCAgMSArCisgc3JjL2xpYnN5c3RlbWQvc2QtYnVzL3NkLWJ1cy5jICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9saWJzeXN0ZW1kL3NkLWJ1cy90ZXN0LWJ1cy1iZW5jaG1hcmsuYyB8ICAxICsKICBzcmMvbG9jYWxlL2tleW1hcC11dGlsLmMgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL2xvZ2luL3BhbV9zeXN0ZW1kLmMgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9uZXR3b3JrL2dlbmVyYXRvci9uZXR3b3JrLWdlbmVyYXRvci5jICB8ICAxICsKICBzcmMvbnNwYXduL25zcGF3bi1zZXR0aW5ncy5jICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL25zcy1teW1hY2hpbmVzL25zcy1teW1hY2hpbmVzLmMgICAgICAgIHwgIDEgKworIHNyYy9wb3J0YWJsZS9wb3J0YWJsZS5jICAgICAgICAgICAgICAgICAgICB8ICAxICsKKyBzcmMvcmVzb2x2ZS9yZXNvbHZlY3RsLmMgICAgICAgICAgICAgICAgICAgfCAgMSArCisgc3JjL3NoYXJlZC9idXMtdW5pdC1wcm9jcy5jICAgICAgICAgICAgICAgIHwgIDEgKworIHNyYy9zaGFyZWQvYnVzLXVuaXQtdXRpbC5jICAgICAgICAgICAgICAgICB8ICAxICsKKyBzcmMvc2hhcmVkL2J1cy11dGlsLmMgICAgICAgICAgICAgICAgICAgICAgfCAgMSArCiAgc3JjL3NoYXJlZC9kbnMtZG9tYWluLmMgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy9zaGFyZWQvam91cm5hbC1pbXBvcnRlci5jICAgICAgICAgICAgICB8ICAxICsKICBzcmMvc2hhcmVkL2xvZ3Mtc2hvdy5jICAgICAgICAgICAgICAgICAgICAgfCAgMSArCkBAIC00Niw0NiArNjYsNzAgQEAKICBzcmMvdWRldi91ZGV2LWJ1aWx0aW4tcGF0aF9pZC5jICAgICAgICAgICAgfCAgMSArCiAgc3JjL3VkZXYvdWRldi1ldmVudC5jICAgICAgICAgICAgICAgICAgICAgIHwgIDEgKwogIHNyYy91ZGV2L3VkZXYtcnVsZXMuYyAgICAgICAgICAgICAgICAgICAgICB8ICAxICsKLSAzMiBmaWxlcyBjaGFuZ2VkLCA0MyBpbnNlcnRpb25zKCspCisgNDkgZmlsZXMgY2hhbmdlZCwgNjAgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggN2Y4YzY3OTQxMS4uODFjMDYxYjc2OCAxMDA2NDQKK2luZGV4IGEyNTk5NjgwM2Q2NC4uNzJiMzA1YjVhYjU4IDEwMDY0NAogLS0tIGEvbWVzb24uYnVpbGQKICsrKyBiL21lc29uLmJ1aWxkCi1AQCAtNTA2LDYgKzUwNiw3IEBAIGZvcmVhY2ggaWRlbnQgOiBbCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPHVuaXN0ZC5oPicnJ10sCi0gICAgICAgICBbJ2dldF9tZW1wb2xpY3knLCAgICAgJycnI2luY2x1ZGUgPHN0ZGxpYi5oPgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDx1bmlzdGQuaD4nJyddLAorQEAgLTUyOSw2ICs1MjksNyBAQCBmb3JlYWNoIGlkZW50IDogWworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjaW5jbHVkZSA8c2lnbmFsLmg+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgI2luY2x1ZGUgPHN5cy93YWl0Lmg+JycnXSwKICsgICAgICAgIFsnc3RybmR1cGEnICwgICAgICAgICAnJycjaW5jbHVkZSA8c3RyaW5nLmg+JycnXSwKICBdCiAgCiAgICAgICAgICBoYXZlID0gY2MuaGFzX2Z1bmN0aW9uKGlkZW50WzBdLCBwcmVmaXggOiBpZGVudFsxXSwgYXJncyA6ICctRF9HTlVfU09VUkNFJykKIGRpZmYgLS1naXQgYS9zcmMvYmFja2xpZ2h0L2JhY2tsaWdodC5jIGIvc3JjL2JhY2tsaWdodC9iYWNrbGlnaHQuYwotaW5kZXggZGZkNjgwNTM5OC4uYzJiMmFjZTZlYyAxMDA2NDQKK2luZGV4IDA0ODQ0MTQyOTAyNS4uMDFkNzRlYTBlZDRlIDEwMDY0NAogLS0tIGEvc3JjL2JhY2tsaWdodC9iYWNrbGlnaHQuYwogKysrIGIvc3JjL2JhY2tsaWdodC9iYWNrbGlnaHQuYwogQEAgLTE3LDYgKzE3LDcgQEAKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKICAjaW5jbHVkZSAic3Rydi5oIgogICNpbmNsdWRlICJ1dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBzdGF0aWMgaW50IGZpbmRfcGNpX29yX3BsYXRmb3JtX3BhcmVudChzZF9kZXZpY2UgKmRldmljZSwgc2RfZGV2aWNlICoqcmV0KSB7CiAgICAgICAgICBjb25zdCBjaGFyICpzdWJzeXN0ZW0sICpzeXNuYW1lLCAqdmFsdWU7CitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL2Nncm91cC11dGlsLmMgYi9zcmMvYmFzaWMvY2dyb3VwLXV0aWwuYworaW5kZXggNTRmYzZlY2Y4YjIwLi5hNTE0MWY0Y2JlZGQgMTAwNjQ0CistLS0gYS9zcmMvYmFzaWMvY2dyb3VwLXV0aWwuYworKysrIGIvc3JjL2Jhc2ljL2Nncm91cC11dGlsLmMKK0BAIC0zNyw2ICszNyw3IEBACisgI2luY2x1ZGUgInN0cnYuaCIKKyAjaW5jbHVkZSAidW5pdC1uYW1lLmgiCisgI2luY2x1ZGUgInVzZXItdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorIHN0YXRpYyBpbnQgY2dfZW51bWVyYXRlX2l0ZW1zKGNvbnN0IGNoYXIgKmNvbnRyb2xsZXIsIGNvbnN0IGNoYXIgKnBhdGgsIEZJTEUgKipfZiwgY29uc3QgY2hhciAqaXRlbSkgeworICAgICAgICAgX2NsZWFudXBfZnJlZV8gY2hhciAqZnMgPSBOVUxMOwogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9lbnYtdXRpbC5jIGIvc3JjL2Jhc2ljL2Vudi11dGlsLmMKLWluZGV4IGE2NTAzY2YyYjYuLmNlZWY5YTYyYzggMTAwNjQ0CitpbmRleCBiOGRjOTg5MTVmODEuLjUwNDliMzc1OTRiYyAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9lbnYtdXRpbC5jCiArKysgYi9zcmMvYmFzaWMvZW52LXV0aWwuYwotQEAgLTE2LDYgKzE2LDcgQEAKK0BAIC0xNSw2ICsxNSw3IEBACiAgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCiAgI2luY2x1ZGUgInN0cnYuaCIKICAjaW5jbHVkZSAidXRmOC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgI2RlZmluZSBWQUxJRF9DSEFSU19FTlZfTkFNRSAgICAgICAgICAgICAgICAgICAgXAogICAgICAgICAgRElHSVRTIExFVFRFUlMgICAgICAgICAgICAgICAgICAgICAgICAgIFwKK2RpZmYgLS1naXQgYS9zcmMvYmFzaWMvbG9nLmMgYi9zcmMvYmFzaWMvbG9nLmMKK2luZGV4IDE3NTU3ZTE4NDRiMi4uNmNlYzRkMzI0YWFiIDEwMDY0NAorLS0tIGEvc3JjL2Jhc2ljL2xvZy5jCisrKysgYi9zcmMvYmFzaWMvbG9nLmMKK0BAIC0zNCw2ICszNCw3IEBACisgI2luY2x1ZGUgInRlcm1pbmFsLXV0aWwuaCIKKyAjaW5jbHVkZSAidGltZS11dGlsLmgiCisgI2luY2x1ZGUgInV0ZjguaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyAjZGVmaW5lIFNOREJVRl9TSVpFICg4KjEwMjQqMTAyNCkKKyAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZ19zdGRsaWIuaCBiL3NyYy9iYXNpYy9taXNzaW5nX3N0ZGxpYi5oCi1pbmRleCAxODhhOGQ0NDA2Li4xZTE2ZWMyODdhIDEwMDY0NAoraW5kZXggMTg4YThkNDQwNjZhLi4xZTE2ZWMyODdhYWQgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvbWlzc2luZ19zdGRsaWIuaAogKysrIGIvc3JjL2Jhc2ljL21pc3Npbmdfc3RkbGliLmgKIEBAIC0xMSwzICsxMSwxNSBAQApAQCAtMTA1LDMzOCArMTQ5LDUxOCBAQAogKyAgfSkKICsjZW5kaWYKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWtkaXIuYyBiL3NyYy9iYXNpYy9ta2Rpci5jCi1pbmRleCA2YjgyZWFiNjQwLi41MWM2Yjc4NjE1IDEwMDY0NAoraW5kZXggZmE2ODJkNGM0MzhlLi4zNzkwMjU1MTQ5MGEgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvbWtkaXIuYwogKysrIGIvc3JjL2Jhc2ljL21rZGlyLmMKLUBAIC0xNCw2ICsxNCw3IEBACitAQCAtMTMsNiArMTMsNyBAQAogICNpbmNsdWRlICJzdGF0LXV0aWwuaCIKICAjaW5jbHVkZSAic3RkaW8tdXRpbC5oIgogICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIGludCBta2Rpcl9zYWZlX2ludGVybmFsKGNvbnN0IGNoYXIgKnBhdGgsIG1vZGVfdCBtb2RlLCB1aWRfdCB1aWQsIGdpZF90IGdpZCwgTWtkaXJGbGFncyBmbGFncywgbWtkaXJfZnVuY190IF9ta2RpcikgewogICAgICAgICAgc3RydWN0IHN0YXQgc3Q7CiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3BhcnNlLXV0aWwuYyBiL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKLWluZGV4IDExNWExNDk0YTIuLjA3YTM0YmZkNTMgMTAwNjQ0CitpbmRleCBlMDA5NGIwZjM3MGEuLjAwZGE2NTE4MTI0YiAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKICsrKyBiL3NyYy9iYXNpYy9wYXJzZS11dGlsLmMKLUBAIC0yMCw2ICsyMCw3IEBACitAQCAtMTgsNiArMTgsNyBAQAogICNpbmNsdWRlICJwcm9jZXNzLXV0aWwuaCIKICAjaW5jbHVkZSAic3RhdC11dGlsLmgiCiAgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBpbnQgcGFyc2VfYm9vbGVhbihjb25zdCBjaGFyICp2KSB7CiAgICAgICAgICBpZiAoIXYpCiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3Byb2MtY21kbGluZS5jIGIvc3JjL2Jhc2ljL3Byb2MtY21kbGluZS5jCi1pbmRleCAwOTE2OWNmOTYzLi5mNDExYmE4OTdmIDEwMDY0NAoraW5kZXggMWFmNTg3MTdjNjg2Li5jMTAyMGY0NjExZDQgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvcHJvYy1jbWRsaW5lLmMKICsrKyBiL3NyYy9iYXNpYy9wcm9jLWNtZGxpbmUuYwogQEAgLTE1LDYgKzE1LDcgQEAKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKICAjaW5jbHVkZSAidXRpbC5oIgogICNpbmNsdWRlICJ2aXJ0LmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBpbnQgcHJvY19jbWRsaW5lKGNoYXIgKipyZXQpIHsKICAgICAgICAgIGNvbnN0IGNoYXIgKmU7CiBkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMgYi9zcmMvYmFzaWMvcHJvY2ZzLXV0aWwuYwotaW5kZXggN2FhZjk1YmZjZS4uNDJjZTUzZDVhYSAxMDA2NDQKK2luZGV4IDdhYWY5NWJmY2VkMi4uZGE3ZTgzNmYxNDNlIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3Byb2Nmcy11dGlsLmMKICsrKyBiL3NyYy9iYXNpYy9wcm9jZnMtdXRpbC5jCiBAQCAtMTEsNiArMTEsNyBAQAogICNpbmNsdWRlICJwcm9jZnMtdXRpbC5oIgogICNpbmNsdWRlICJzdGRpby11dGlsLmgiCiAgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBpbnQgcHJvY2ZzX3Rhc2tzX2dldF9saW1pdCh1aW50NjRfdCAqcmV0KSB7CiAgICAgICAgICBfY2xlYW51cF9mcmVlXyBjaGFyICp2YWx1ZSA9IE5VTEw7CitkaWZmIC0tZ2l0IGEvc3JjL2Jhc2ljL3NlbGludXgtdXRpbC5jIGIvc3JjL2Jhc2ljL3NlbGludXgtdXRpbC5jCitpbmRleCAxMDk1Y2I0MjZjY2UuLjgwNmVmNGJkOTdhOSAxMDA2NDQKKy0tLSBhL3NyYy9iYXNpYy9zZWxpbnV4LXV0aWwuYworKysrIGIvc3JjL2Jhc2ljL3NlbGludXgtdXRpbC5jCitAQCAtMjYsNiArMjYsNyBAQAorICNpbmNsdWRlICJzZWxpbnV4LXV0aWwuaCIKKyAjaW5jbHVkZSAic3RkaW8tdXRpbC5oIgorICNpbmNsdWRlICJ0aW1lLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyAjaWYgSEFWRV9TRUxJTlVYCisgREVGSU5FX1RSSVZJQUxfQ0xFQU5VUF9GVU5DKGNvbnRleHRfdCwgY29udGV4dF9mcmVlKTsKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvdGltZS11dGlsLmMgYi9zcmMvYmFzaWMvdGltZS11dGlsLmMKLWluZGV4IDMwMThlODFhY2IuLjRlMmIzYjY2YzEgMTAwNjQ0CitpbmRleCAxMDU1ODRlMmU3MmYuLmViMGJlZDQ3ZGFjMyAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy90aW1lLXV0aWwuYwogKysrIGIvc3JjL2Jhc2ljL3RpbWUtdXRpbC5jCi1AQCAtMjgsNiArMjgsNyBAQAorQEAgLTI2LDYgKzI2LDcgQEAKICAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKICAjaW5jbHVkZSAic3Rydi5oIgogICNpbmNsdWRlICJ0aW1lLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIHN0YXRpYyBjbG9ja2lkX3QgbWFwX2Nsb2NrX2lkKGNsb2NraWRfdCBjKSB7CiAgCitkaWZmIC0tZ2l0IGEvc3JjL2Jvb3QvYmxlc3MtYm9vdC5jIGIvc3JjL2Jvb3QvYmxlc3MtYm9vdC5jCitpbmRleCBiOTZlMWY5MjdmZmYuLmNiYTk3OWJhY2EzZSAxMDA2NDQKKy0tLSBhL3NyYy9ib290L2JsZXNzLWJvb3QuYworKysrIGIvc3JjL2Jvb3QvYmxlc3MtYm9vdC5jCitAQCAtMTgsNiArMTgsNyBAQAorICNpbmNsdWRlICJ1dGlsLmgiCisgI2luY2x1ZGUgInZlcmJzLmgiCisgI2luY2x1ZGUgInZpcnQuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyBzdGF0aWMgY2hhciAqKmFyZ19wYXRoID0gTlVMTDsKKyAKIGRpZmYgLS1naXQgYS9zcmMvY29yZS9kYnVzLWNncm91cC5jIGIvc3JjL2NvcmUvZGJ1cy1jZ3JvdXAuYwotaW5kZXggMmYyMzEzYzU5OS4uYzk5MzdmOWQ2MiAxMDA2NDQKK2luZGV4IDI3ZGM5ZTQzYzNlMi4uYjFhODMwMjM2MDBiIDEwMDY0NAogLS0tIGEvc3JjL2NvcmUvZGJ1cy1jZ3JvdXAuYwogKysrIGIvc3JjL2NvcmUvZGJ1cy1jZ3JvdXAuYwogQEAgLTE1LDYgKzE1LDcgQEAKICAjaW5jbHVkZSAiZmlsZWlvLmgiCiAgI2luY2x1ZGUgImxpbWl0cy11dGlsLmgiCiAgI2luY2x1ZGUgInBhdGgtdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCi0gc3RhdGljIEJVU19ERUZJTkVfUFJPUEVSVFlfR0VUX0VOVU0ocHJvcGVydHlfZ2V0X2Nncm91cF9kZXZpY2VfcG9saWN5LCBjZ3JvdXBfZGV2aWNlX3BvbGljeSwgQ0dyb3VwRGV2aWNlUG9saWN5KTsKKyBCVVNfREVGSU5FX1BST1BFUlRZX0dFVChidXNfcHJvcGVydHlfZ2V0X3Rhc2tzX21heCwgInQiLCBUYXNrc01heCwgdGFza3NfbWF4X3Jlc29sdmUpOwogIAorZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2RidXMtZXhlY3V0ZS5jIGIvc3JjL2NvcmUvZGJ1cy1leGVjdXRlLmMKK2luZGV4IGQ4YmEzZTVkOTI0MS4uNzI5ZTEzZmRhNjRjIDEwMDY0NAorLS0tIGEvc3JjL2NvcmUvZGJ1cy1leGVjdXRlLmMKKysrKyBiL3NyYy9jb3JlL2RidXMtZXhlY3V0ZS5jCitAQCAtNDEsNiArNDEsNyBAQAorICNpbmNsdWRlICJ1bml0LXByaW50Zi5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKyAjaW5jbHVkZSAidXRmOC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorIEJVU19ERUZJTkVfUFJPUEVSVFlfR0VUX0VOVU0oYnVzX3Byb3BlcnR5X2dldF9leGVjX291dHB1dCwgZXhlY19vdXRwdXQsIEV4ZWNPdXRwdXQpOworIHN0YXRpYyBCVVNfREVGSU5FX1BST1BFUlRZX0dFVF9FTlVNKHByb3BlcnR5X2dldF9leGVjX2lucHV0LCBleGVjX2lucHV0LCBFeGVjSW5wdXQpOwogZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2RidXMtdXRpbC5jIGIvc3JjL2NvcmUvZGJ1cy11dGlsLmMKLWluZGV4IDc4NjJiZWFhY2IuLjE5ZjY5NjhjZmUgMTAwNjQ0CitpbmRleCA3ODYyYmVhYWNiNmQuLjNiMWVhNTNhNWYwZCAxMDA2NDQKIC0tLSBhL3NyYy9jb3JlL2RidXMtdXRpbC5jCiArKysgYi9zcmMvY29yZS9kYnVzLXV0aWwuYwogQEAgLTcsNiArNyw3IEBACiAgI2luY2x1ZGUgInVuaXQtcHJpbnRmLmgiCiAgI2luY2x1ZGUgInVzZXItdXRpbC5oIgogICNpbmNsdWRlICJ1bml0LmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBpbnQgYnVzX3Byb3BlcnR5X2dldF90cmlnZ2VyZWRfdW5pdCgKICAgICAgICAgICAgICAgICAgc2RfYnVzICpidXMsCitkaWZmIC0tZ2l0IGEvc3JjL2NvcmUvZXhlY3V0ZS5jIGIvc3JjL2NvcmUvZXhlY3V0ZS5jCitpbmRleCA4OWRiZjZmYmQyYzEuLjk3NjJkYzU3NDQzYyAxMDA2NDQKKy0tLSBhL3NyYy9jb3JlL2V4ZWN1dGUuYworKysrIGIvc3JjL2NvcmUvZXhlY3V0ZS5jCitAQCAtODgsNiArODgsNyBAQAorICNpbmNsdWRlICJ1bml0LmgiCisgI2luY2x1ZGUgInVzZXItdXRpbC5oIgorICNpbmNsdWRlICJ1dG1wLXd0bXAuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyAjZGVmaW5lIElETEVfVElNRU9VVF9VU0VDICg1KlVTRUNfUEVSX1NFQykKKyAjZGVmaW5lIElETEVfVElNRU9VVDJfVVNFQyAoMSpVU0VDX1BFUl9TRUMpCiBkaWZmIC0tZ2l0IGEvc3JjL2NvcmUva21vZC1zZXR1cC5jIGIvc3JjL2NvcmUva21vZC1zZXR1cC5jCi1pbmRleCBhOTFjZmViYzY3Li5hNDU5NjEwMTNmIDEwMDY0NAoraW5kZXggMDljY2Q2MTNlMzJjLi5mNGU2NGZhMjgzZTkgMTAwNjQ0CiAtLS0gYS9zcmMvY29yZS9rbW9kLXNldHVwLmMKICsrKyBiL3NyYy9jb3JlL2ttb2Qtc2V0dXAuYwogQEAgLTExLDYgKzExLDcgQEAKLSAjaW5jbHVkZSAia21vZC1zZXR1cC5oIgogICNpbmNsdWRlICJtYWNyby5oIgogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisgI2luY2x1ZGUgIm1pc3NpbmdfdHlwZS5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogICNpZiBIQVZFX0tNT0QKLSAjaW5jbHVkZSA8bGlia21vZC5oPgorICNpbmNsdWRlICJtb2R1bGUtdXRpbC5oIgogZGlmZiAtLWdpdCBhL3NyYy9jb3JlL3NlcnZpY2UuYyBiL3NyYy9jb3JlL3NlcnZpY2UuYwotaW5kZXggNzNiM2M5YzMxNi4uZWY3NGYwMGEwOCAxMDA2NDQKK2luZGV4IDE3ZjI3YTRhYmNlMy4uZTVkY2M1MzJkMGNlIDEwMDY0NAogLS0tIGEvc3JjL2NvcmUvc2VydmljZS5jCiArKysgYi9zcmMvY29yZS9zZXJ2aWNlLmMKLUBAIC00Myw2ICs0Myw3IEBACitAQCAtNDEsNiArNDEsNyBAQAogICNpbmNsdWRlICJ1bml0LmgiCiAgI2luY2x1ZGUgInV0ZjguaCIKICAjaW5jbHVkZSAidXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgc3RhdGljIGNvbnN0IFVuaXRBY3RpdmVTdGF0ZSBzdGF0ZV90cmFuc2xhdGlvbl90YWJsZVtfU0VSVklDRV9TVEFURV9NQVhdID0gewogICAgICAgICAgW1NFUlZJQ0VfREVBRF0gPSBVTklUX0lOQUNUSVZFLAorZGlmZiAtLWdpdCBhL3NyYy9jb3JlZHVtcC9jb3JlZHVtcC12YWN1dW0uYyBiL3NyYy9jb3JlZHVtcC9jb3JlZHVtcC12YWN1dW0uYworaW5kZXggMzU4ODVkZmI0N2M0Li5iYjlmMDY2MGE2YTAgMTAwNjQ0CistLS0gYS9zcmMvY29yZWR1bXAvY29yZWR1bXAtdmFjdXVtLmMKKysrKyBiL3NyYy9jb3JlZHVtcC9jb3JlZHVtcC12YWN1dW0uYworQEAgLTE2LDYgKzE2LDcgQEAKKyAjaW5jbHVkZSAic3RyaW5nLXV0aWwuaCIKKyAjaW5jbHVkZSAidGltZS11dGlsLmgiCisgI2luY2x1ZGUgInVzZXItdXRpbC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorICNkZWZpbmUgREVGQVVMVF9NQVhfVVNFX0xPV0VSICh1aW50NjRfdCkgKDFVTEwqMTAyNFVMTCoxMDI0VUxMKSAgICAgICAgICAgLyogMSBNaUIgKi8KKyAjZGVmaW5lIERFRkFVTFRfTUFYX1VTRV9VUFBFUiAodWludDY0X3QpICg0VUxMKjEwMjRVTEwqMTAyNFVMTCoxMDI0VUxMKSAgIC8qIDQgR2lCICovCitkaWZmIC0tZ2l0IGEvc3JjL2pvdXJuYWwtcmVtb3RlL2pvdXJuYWwtcmVtb3RlLW1haW4uYyBiL3NyYy9qb3VybmFsLXJlbW90ZS9qb3VybmFsLXJlbW90ZS1tYWluLmMKK2luZGV4IDg4ZTQyZDNhOTg0Yi4uMGYwODM3NmU1Mzk5IDEwMDY0NAorLS0tIGEvc3JjL2pvdXJuYWwtcmVtb3RlL2pvdXJuYWwtcmVtb3RlLW1haW4uYworKysrIGIvc3JjL2pvdXJuYWwtcmVtb3RlL2pvdXJuYWwtcmVtb3RlLW1haW4uYworQEAgLTIyLDYgKzIyLDcgQEAKKyAjaW5jbHVkZSAic3RhdC11dGlsLmgiCisgI2luY2x1ZGUgInN0cmluZy10YWJsZS5oIgorICNpbmNsdWRlICJzdHJ2LmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgI2RlZmluZSBQUklWX0tFWV9GSUxFIENFUlRJRklDQVRFX1JPT1QgIi9wcml2YXRlL2pvdXJuYWwtcmVtb3RlLnBlbSIKKyAjZGVmaW5lIENFUlRfRklMRSAgICAgQ0VSVElGSUNBVEVfUk9PVCAiL2NlcnRzL2pvdXJuYWwtcmVtb3RlLnBlbSIKIGRpZmYgLS1naXQgYS9zcmMvam91cm5hbC9qb3VybmFsY3RsLmMgYi9zcmMvam91cm5hbC9qb3VybmFsY3RsLmMKLWluZGV4IDZkNmJiMWNmNjMuLjY2NjYzNDlhMzUgMTAwNjQ0CitpbmRleCBlNWZlZWM4M2JjZTYuLmMzYWVjMWUyMTlkNyAxMDA2NDQKIC0tLSBhL3NyYy9qb3VybmFsL2pvdXJuYWxjdGwuYwogKysrIGIvc3JjL2pvdXJuYWwvam91cm5hbGN0bC5jCi1AQCAtNzAsNiArNzAsNyBAQAorQEAgLTY5LDYgKzY5LDcgQEAKICAjaW5jbHVkZSAidW5pdC1uYW1lLmgiCiAgI2luY2x1ZGUgInVzZXItdXRpbC5oIgogICNpbmNsdWRlICJ2YXJsaW5rLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICAjZGVmaW5lIERFRkFVTFRfRlNTX0lOVEVSVkFMX1VTRUMgKDE1KlVTRUNfUEVSX01JTlVURSkKKyAjZGVmaW5lIFBST0NFU1NfSU5PVElGWV9JTlRFUlZBTCAxMDI0ICAgLyogRXZlcnkgMSwwMjQgbWVzc2FnZXMgcHJvY2Vzc2VkICovCitkaWZmIC0tZ2l0IGEvc3JjL2pvdXJuYWwvc2Qtam91cm5hbC5jIGIvc3JjL2pvdXJuYWwvc2Qtam91cm5hbC5jCitpbmRleCAzZmE5OGRmZGEyMzcuLmU2NTVkNzdlNzE0YSAxMDA2NDQKKy0tLSBhL3NyYy9qb3VybmFsL3NkLWpvdXJuYWwuYworKysrIGIvc3JjL2pvdXJuYWwvc2Qtam91cm5hbC5jCitAQCAtNDAsNiArNDAsNyBAQAorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorICNpbmNsdWRlICJzdHJ2LmgiCisgI2luY2x1ZGUgInN5c2xvZy11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgI2RlZmluZSBKT1VSTkFMX0ZJTEVTX01BWCA3MTY4CiAgCiBkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1tZXNzYWdlLmMgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLW1lc3NhZ2UuYwotaW5kZXggZWIwMjllNDQ1My4uZjMxZmU5ZDVhOCAxMDA2NDQKK2luZGV4IDczMTI3ZGZlMDI1My4uY2M4NjM1ZGVhNTkxIDEwMDY0NAogLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1tZXNzYWdlLmMKICsrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtbWVzc2FnZS5jCiBAQCAtMjEsNiArMjEsNyBAQAogICNpbmNsdWRlICJzdHJ2LmgiCiAgI2luY2x1ZGUgInRpbWUtdXRpbC5oIgogICNpbmNsdWRlICJ1dGY4LmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBzdGF0aWMgaW50IG1lc3NhZ2VfYXBwZW5kX2Jhc2ljKHNkX2J1c19tZXNzYWdlICptLCBjaGFyIHR5cGUsIGNvbnN0IHZvaWQgKnAsIGNvbnN0IHZvaWQgKipzdG9yZWQpOwogIAogZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtb2JqZWN0cy5jIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1vYmplY3RzLmMKLWluZGV4IGFlNjQzY2FjYzcuLjFiNzUyMjcxYTUgMTAwNjQ0CitpbmRleCA2ZDE0MDM0OGVjNGMuLjkxMjZiODgwMWJjNSAxMDA2NDQKIC0tLSBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtb2JqZWN0cy5jCiArKysgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLW9iamVjdHMuYwogQEAgLTEzLDYgKzEzLDcgQEAKICAjaW5jbHVkZSAic2V0LmgiCiAgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCiAgI2luY2x1ZGUgInN0cnYuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIHN0YXRpYyBpbnQgbm9kZV92dGFibGVfZ2V0X3VzZXJkYXRhKAogICAgICAgICAgICAgICAgICBzZF9idXMgKmJ1cywKK2RpZmYgLS1naXQgYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLXNvY2tldC5jIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1zb2NrZXQuYworaW5kZXggMThkMzBkMDEwYTIwLi5iZTJhYjcwM2Y4ZWQgMTAwNjQ0CistLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLXNvY2tldC5jCisrKysgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLXNvY2tldC5jCitAQCAtMjgsNiArMjgsNyBAQAorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKyAjaW5jbHVkZSAidXRmOC5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorICNkZWZpbmUgU05EQlVGX1NJWkUgKDgqMTAyNCoxMDI0KQorIAorZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9zZC1idXMuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9zZC1idXMuYworaW5kZXggN2FkMDM2ODBmNDhkLi5iOWQyMTgxZTQ5MTAgMTAwNjQ0CistLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvc2QtYnVzLmMKKysrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9zZC1idXMuYworQEAgLTQxLDYgKzQxLDcgQEAKKyAjaW5jbHVkZSAicHJvY2Vzcy11dGlsLmgiCisgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCisgI2luY2x1ZGUgInN0cnYuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyAjZGVmaW5lIGxvZ19kZWJ1Z19idXNfbWVzc2FnZShtKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorICAgICAgICAgZG8geyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCiBkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL3Rlc3QtYnVzLWJlbmNobWFyay5jIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL3Rlc3QtYnVzLWJlbmNobWFyay5jCi1pbmRleCA4ZGUwYTg1OWVlLi40ZmQwYTJlNjkyIDEwMDY0NAoraW5kZXggOGRlMGE4NTllZTk0Li41ODA0NGI2YmE5MDggMTAwNjQ0CiAtLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvdGVzdC1idXMtYmVuY2htYXJrLmMKICsrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy90ZXN0LWJ1cy1iZW5jaG1hcmsuYwogQEAgLTE0LDYgKzE0LDcgQEAKICAjaW5jbHVkZSAibWlzc2luZ19yZXNvdXJjZS5oIgogICNpbmNsdWRlICJ0aW1lLXV0aWwuaCIKICAjaW5jbHVkZSAidXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgI2RlZmluZSBNQVhfU0laRSAoMioxMDI0KjEwMjQpCiAgCiBkaWZmIC0tZ2l0IGEvc3JjL2xvY2FsZS9rZXltYXAtdXRpbC5jIGIvc3JjL2xvY2FsZS9rZXltYXAtdXRpbC5jCi1pbmRleCBmOGMzNmM5NGY1Li40MWY1NjA2YWVhIDEwMDY0NAoraW5kZXggMzA2NjlhOTM1OWU1Li42NTQ0YjM3MjIwOTkgMTAwNjQ0CiAtLS0gYS9zcmMvbG9jYWxlL2tleW1hcC11dGlsLmMKICsrKyBiL3NyYy9sb2NhbGUva2V5bWFwLXV0aWwuYwotQEAgLTIyLDYgKzIyLDcgQEAKK0BAIC0yMSw2ICsyMSw3IEBACiAgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCiAgI2luY2x1ZGUgInN0cnYuaCIKICAjaW5jbHVkZSAidG1wZmlsZS11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBzdGF0aWMgYm9vbCBzdGFydHN3aXRoX2NvbW1hKGNvbnN0IGNoYXIgKnMsIGNvbnN0IGNoYXIgKnByZWZpeCkgewogICAgICAgICAgcyA9IHN0YXJ0c3dpdGgocywgcHJlZml4KTsKIGRpZmYgLS1naXQgYS9zcmMvbG9naW4vcGFtX3N5c3RlbWQuYyBiL3NyYy9sb2dpbi9wYW1fc3lzdGVtZC5jCi1pbmRleCAzZjc2MmNiYmMzLi4wMDVjZmVhNjU4IDEwMDY0NAoraW5kZXggODRiZWEyMWFiN2JlLi40OTcyMGM3Zjc0MmUgMTAwNjQ0CiAtLS0gYS9zcmMvbG9naW4vcGFtX3N5c3RlbWQuYwogKysrIGIvc3JjL2xvZ2luL3BhbV9zeXN0ZW1kLmMKLUBAIC0yOCw2ICsyOCw3IEBACi0gI2luY2x1ZGUgImhvc3RuYW1lLXV0aWwuaCIKK0BAIC0zMSw2ICszMSw3IEBACisgI2luY2x1ZGUgImxvY2FsZS11dGlsLmgiCiAgI2luY2x1ZGUgImxvZ2luLXV0aWwuaCIKICAjaW5jbHVkZSAibWFjcm8uaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorICNpbmNsdWRlICJwYW0tdXRpbC5oIgogICNpbmNsdWRlICJwYXJzZS11dGlsLmgiCiAgI2luY2x1ZGUgInBhdGgtdXRpbC5oIgotICNpbmNsdWRlICJwcm9jZXNzLXV0aWwuaCIKIGRpZmYgLS1naXQgYS9zcmMvbmV0d29yay9nZW5lcmF0b3IvbmV0d29yay1nZW5lcmF0b3IuYyBiL3NyYy9uZXR3b3JrL2dlbmVyYXRvci9uZXR3b3JrLWdlbmVyYXRvci5jCi1pbmRleCAwYjVhZjMzNTY2Li45YzgwOGNkMDE0IDEwMDY0NAoraW5kZXggYmVkMWU0MjY5N2M0Li5lNDg0N2MyYmVlYTIgMTAwNjQ0CiAtLS0gYS9zcmMvbmV0d29yay9nZW5lcmF0b3IvbmV0d29yay1nZW5lcmF0b3IuYwogKysrIGIvc3JjL25ldHdvcmsvZ2VuZXJhdG9yL25ldHdvcmstZ2VuZXJhdG9yLmMKIEBAIC0xMyw2ICsxMyw3IEBACiAgI2luY2x1ZGUgInN0cmluZy10YWJsZS5oIgogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgogICNpbmNsdWRlICJzdHJ2LmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICAvKgogICAgIyAubmV0d29yawogZGlmZiAtLWdpdCBhL3NyYy9uc3Bhd24vbnNwYXduLXNldHRpbmdzLmMgYi9zcmMvbnNwYXduL25zcGF3bi1zZXR0aW5ncy5jCi1pbmRleCAzYTk5NzM2ODEzLi4yNzlmZWE0ZDg4IDEwMDY0NAoraW5kZXggNWZiNWI0OWJiY2MzLi43ODVjY2MyZGEzMDcgMTAwNjQ0CiAtLS0gYS9zcmMvbnNwYXduL25zcGF3bi1zZXR0aW5ncy5jCiArKysgYi9zcmMvbnNwYXduL25zcGF3bi1zZXR0aW5ncy5jCiBAQCAtMTYsNiArMTYsNyBAQAogICNpbmNsdWRlICJzdHJ2LmgiCiAgI2luY2x1ZGUgInVzZXItdXRpbC5oIgogICNpbmNsdWRlICJ1dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBTZXR0aW5ncyAqc2V0dGluZ3NfbmV3KHZvaWQpIHsKICAgICAgICAgIFNldHRpbmdzICpzOworZGlmZiAtLWdpdCBhL3NyYy9uc3MtbXltYWNoaW5lcy9uc3MtbXltYWNoaW5lcy5jIGIvc3JjL25zcy1teW1hY2hpbmVzL25zcy1teW1hY2hpbmVzLmMKK2luZGV4IDM2NDM1NmRhNTYyMi4uNDdkNGVhNDRlNDBmIDEwMDY0NAorLS0tIGEvc3JjL25zcy1teW1hY2hpbmVzL25zcy1teW1hY2hpbmVzLmMKKysrKyBiL3NyYy9uc3MtbXltYWNoaW5lcy9uc3MtbXltYWNoaW5lcy5jCitAQCAtMTksNiArMTksNyBAQAorICNpbmNsdWRlICJzaWduYWwtdXRpbC5oIgorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyBOU1NfR0VUSE9TVEJZTkFNRV9QUk9UT1RZUEVTKG15bWFjaGluZXMpOworIE5TU19HRVRQV19QUk9UT1RZUEVTKG15bWFjaGluZXMpOworZGlmZiAtLWdpdCBhL3NyYy9wb3J0YWJsZS9wb3J0YWJsZS5jIGIvc3JjL3BvcnRhYmxlL3BvcnRhYmxlLmMKK2luZGV4IGUxODgyNmFiMjY4NS4uZDlmNGI4MWQ4OTM3IDEwMDY0NAorLS0tIGEvc3JjL3BvcnRhYmxlL3BvcnRhYmxlLmMKKysrKyBiL3NyYy9wb3J0YWJsZS9wb3J0YWJsZS5jCitAQCAtMzEsNiArMzEsNyBAQAorICNpbmNsdWRlICJzdHJ2LmgiCisgI2luY2x1ZGUgInRtcGZpbGUtdXRpbC5oIgorICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKKyAKKyBzdGF0aWMgY29uc3QgY2hhciBwcm9maWxlX2RpcnNbXSA9IENPTkZfUEFUSFNfTlVMU1RSKCJzeXN0ZW1kL3BvcnRhYmxlL3Byb2ZpbGUiKTsKKyAKK2RpZmYgLS1naXQgYS9zcmMvcmVzb2x2ZS9yZXNvbHZlY3RsLmMgYi9zcmMvcmVzb2x2ZS9yZXNvbHZlY3RsLmMKK2luZGV4IGYyMGU4YzQ0YjhiYy4uOWY2YzRlOGY0OWE3IDEwMDY0NAorLS0tIGEvc3JjL3Jlc29sdmUvcmVzb2x2ZWN0bC5jCisrKysgYi9zcmMvcmVzb2x2ZS9yZXNvbHZlY3RsLmMKK0BAIC0zMyw2ICszMyw3IEBACisgI2luY2x1ZGUgInN0cnYuaCIKKyAjaW5jbHVkZSAidGVybWluYWwtdXRpbC5oIgorICNpbmNsdWRlICJ2ZXJicy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgorIAorIHN0YXRpYyBpbnQgYXJnX2ZhbWlseSA9IEFGX1VOU1BFQzsKKyBzdGF0aWMgaW50IGFyZ19pZmluZGV4ID0gMDsKK2RpZmYgLS1naXQgYS9zcmMvc2hhcmVkL2J1cy11bml0LXByb2NzLmMgYi9zcmMvc2hhcmVkL2J1cy11bml0LXByb2NzLmMKK2luZGV4IGIyMWZlMzkzMjY1Zi4uYWYyNjQwMDA1YzFkIDEwMDY0NAorLS0tIGEvc3JjL3NoYXJlZC9idXMtdW5pdC1wcm9jcy5jCisrKysgYi9zcmMvc2hhcmVkL2J1cy11bml0LXByb2NzLmMKK0BAIC0xMCw2ICsxMCw3IEBACisgI2luY2x1ZGUgInNvcnQtdXRpbC5oIgorICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgorICNpbmNsdWRlICJ0ZXJtaW5hbC11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgc3RydWN0IENHcm91cEluZm8geworICAgICAgICAgY2hhciAqY2dyb3VwX3BhdGg7CitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9idXMtdW5pdC11dGlsLmMgYi9zcmMvc2hhcmVkL2J1cy11bml0LXV0aWwuYworaW5kZXggMjhkODU5NDRhOGE3Li40NzQzYTg0YTQxN2UgMTAwNjQ0CistLS0gYS9zcmMvc2hhcmVkL2J1cy11bml0LXV0aWwuYworKysrIGIvc3JjL3NoYXJlZC9idXMtdW5pdC11dGlsLmMKK0BAIC0zNCw2ICszNCw3IEBACisgI2luY2x1ZGUgInVuaXQtZGVmLmgiCisgI2luY2x1ZGUgInVzZXItdXRpbC5oIgorICNpbmNsdWRlICJ1dGY4LmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgaW50IGJ1c19wYXJzZV91bml0X2luZm8oc2RfYnVzX21lc3NhZ2UgKm1lc3NhZ2UsIFVuaXRJbmZvICp1KSB7CisgICAgICAgICBhc3NlcnQobWVzc2FnZSk7CitkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9idXMtdXRpbC5jIGIvc3JjL3NoYXJlZC9idXMtdXRpbC5jCitpbmRleCA4ZTZhNmUyY2UyZGUuLjBjYmY0YjE5OTdkZiAxMDA2NDQKKy0tLSBhL3NyYy9zaGFyZWQvYnVzLXV0aWwuYworKysrIGIvc3JjL3NoYXJlZC9idXMtdXRpbC5jCitAQCAtMzAsNiArMzAsNyBAQAorICNpbmNsdWRlICJzdGRpby11dGlsLmgiCisgI2luY2x1ZGUgInN0cnYuaCIKKyAjaW5jbHVkZSAidXNlci11dGlsLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCisgCisgc3RhdGljIGludCBuYW1lX293bmVyX2NoYW5nZV9jYWxsYmFjayhzZF9idXNfbWVzc2FnZSAqbSwgdm9pZCAqdXNlcmRhdGEsIHNkX2J1c19lcnJvciAqcmV0X2Vycm9yKSB7CisgICAgICAgICBzZF9ldmVudCAqZSA9IHVzZXJkYXRhOwogZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvZG5zLWRvbWFpbi5jIGIvc3JjL3NoYXJlZC9kbnMtZG9tYWluLmMKLWluZGV4IGY2MmFkMGEwZjUuLmYxYTI3ZTE1OGQgMTAwNjQ0CitpbmRleCBiODEyNjY1MzE1ZjYuLjhlNjhmN2Y4ZmM2YyAxMDA2NDQKIC0tLSBhL3NyYy9zaGFyZWQvZG5zLWRvbWFpbi5jCiArKysgYi9zcmMvc2hhcmVkL2Rucy1kb21haW4uYwotQEAgLTI0LDYgKzI0LDcgQEAKK0BAIC0yMyw2ICsyMyw3IEBACiAgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCiAgI2luY2x1ZGUgInN0cnYuaCIKICAjaW5jbHVkZSAidXRmOC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgaW50IGRuc19sYWJlbF91bmVzY2FwZShjb25zdCBjaGFyICoqbmFtZSwgY2hhciAqZGVzdCwgc2l6ZV90IHN6LCBETlNMYWJlbEZsYWdzIGZsYWdzKSB7CiAgICAgICAgICBjb25zdCBjaGFyICpuOwogZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvam91cm5hbC1pbXBvcnRlci5jIGIvc3JjL3NoYXJlZC9qb3VybmFsLWltcG9ydGVyLmMKLWluZGV4IDdjNGZjNzAyMWQuLmE2ZmYyMjE0ZGYgMTAwNjQ0CitpbmRleCA3YzRmYzcwMjFkZWMuLjNmYmFmNWE2Mzk2OSAxMDA2NDQKIC0tLSBhL3NyYy9zaGFyZWQvam91cm5hbC1pbXBvcnRlci5jCiArKysgYi9zcmMvc2hhcmVkL2pvdXJuYWwtaW1wb3J0ZXIuYwogQEAgLTE0LDYgKzE0LDcgQEAKICAjaW5jbHVkZSAicGFyc2UtdXRpbC5oIgogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgogICNpbmNsdWRlICJ1bmFsaWduZWQuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIGVudW0gewogICAgICAgICAgSU1QT1JURVJfU1RBVEVfTElORSA9IDAsICAgIC8qIHdhaXRpbmcgdG8gcmVhZCwgb3IgcmVhZGluZyBsaW5lICovCiBkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9sb2dzLXNob3cuYyBiL3NyYy9zaGFyZWQvbG9ncy1zaG93LmMKLWluZGV4IGI2MTVjNzBkZmYuLjc1YjI2ZTljMjEgMTAwNjQ0CitpbmRleCAyYmZkMGI2MGMyNmIuLjZhMWJiM2EwNzYwZiAxMDA2NDQKIC0tLSBhL3NyYy9zaGFyZWQvbG9ncy1zaG93LmMKICsrKyBiL3NyYy9zaGFyZWQvbG9ncy1zaG93LmMKIEBAIC0zOSw2ICszOSw3IEBACiAgI2luY2x1ZGUgInRpbWUtdXRpbC5oIgogICNpbmNsdWRlICJ1dGY4LmgiCiAgI2luY2x1ZGUgInV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIC8qIHVwIHRvIHRocmVlIGxpbmVzIChlYWNoIHVwIHRvIDEwMCBjaGFyYWN0ZXJzKSBvciAzMDAgY2hhcmFjdGVycywgd2hpY2hldmVyIGlzIGxlc3MgKi8KICAjZGVmaW5lIFBSSU5UX0xJTkVfVEhSRVNIT0xEIDMKIGRpZmYgLS1naXQgYS9zcmMvc2hhcmVkL3BhZ2VyLmMgYi9zcmMvc2hhcmVkL3BhZ2VyLmMKLWluZGV4IDdjMjBiMTAwYjQuLmU0MjA5ZDNhOTUgMTAwNjQ0CitpbmRleCAxZmU5ZGIxNzkxNzYuLjY3OTU0YjVjYWI5MyAxMDA2NDQKIC0tLSBhL3NyYy9zaGFyZWQvcGFnZXIuYwogKysrIGIvc3JjL3NoYXJlZC9wYWdlci5jCi1AQCAtMjUsNiArMjUsNyBAQAorQEAgLTIzLDYgKzIzLDcgQEAKICAjaW5jbHVkZSAic3Rydi5oIgogICNpbmNsdWRlICJ0ZXJtaW5hbC11dGlsLmgiCiAgI2luY2x1ZGUgInV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIHN0YXRpYyBwaWRfdCBwYWdlcl9waWQgPSAwOwogIAogZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvcGF0aC1sb29rdXAuYyBiL3NyYy9zaGFyZWQvcGF0aC1sb29rdXAuYwotaW5kZXggNmJmMGZmMDMxNi4uZjZjODAwOWNkMiAxMDA2NDQKK2luZGV4IDViMTYyMDk3NDUzNi4uMGU3Y2QxYzJhZjEyIDEwMDY0NAogLS0tIGEvc3JjL3NoYXJlZC9wYXRoLWxvb2t1cC5jCiArKysgYi9zcmMvc2hhcmVkL3BhdGgtbG9va3VwLmMKLUBAIC0yMCw2ICsyMCw3IEBACitAQCAtMTksNiArMTksNyBAQAogICNpbmNsdWRlICJ0bXBmaWxlLXV0aWwuaCIKICAjaW5jbHVkZSAidXNlci11dGlsLmgiCiAgI2luY2x1ZGUgInV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIGludCB4ZGdfdXNlcl9ydW50aW1lX2RpcihjaGFyICoqcmV0LCBjb25zdCBjaGFyICpzdWZmaXgpIHsKICAgICAgICAgIGNvbnN0IGNoYXIgKmU7CiBkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC91aWQtcmFuZ2UuYyBiL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKLWluZGV4IDdjYjdkOGE0NzcuLjhiMTJiOTEwODQgMTAwNjQ0CitpbmRleCA3Y2I3ZDhhNDc3ZTkuLjhlN2Q3ZjllN2NhNiAxMDA2NDQKIC0tLSBhL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKICsrKyBiL3NyYy9zaGFyZWQvdWlkLXJhbmdlLmMKIEBAIC05LDYgKzksNyBAQAogICNpbmNsdWRlICJzb3J0LXV0aWwuaCIKICAjaW5jbHVkZSAidWlkLXJhbmdlLmgiCiAgI2luY2x1ZGUgInVzZXItdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgc3RhdGljIGJvb2wgdWlkX3JhbmdlX2ludGVyc2VjdChVaWRSYW5nZSAqcmFuZ2UsIHVpZF90IHN0YXJ0LCB1aWRfdCBucikgewogICAgICAgICAgYXNzZXJ0KHJhbmdlKTsKIGRpZmYgLS1naXQgYS9zcmMvc29ja2V0LXByb3h5L3NvY2tldC1wcm94eWQuYyBiL3NyYy9zb2NrZXQtcHJveHkvc29ja2V0LXByb3h5ZC5jCi1pbmRleCBhYmJiYzlmMmQ2Li42MTc5YjU4NTFlIDEwMDY0NAoraW5kZXggMmVlNmZjMmYwYTZhLi40YTk5MzRmOWMxNGQgMTAwNjQ0CiAtLS0gYS9zcmMvc29ja2V0LXByb3h5L3NvY2tldC1wcm94eWQuYwogKysrIGIvc3JjL3NvY2tldC1wcm94eS9zb2NrZXQtcHJveHlkLmMKLUBAIC0yOCw2ICsyOCw3IEBACitAQCAtMjYsNiArMjYsNyBAQAogICNpbmNsdWRlICJzb2NrZXQtdXRpbC5oIgogICNpbmNsdWRlICJzdHJpbmctdXRpbC5oIgogICNpbmNsdWRlICJ1dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICAjZGVmaW5lIEJVRkZFUl9TSVpFICgyNTYgKiAxMDI0KQogIAogZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Rlc3QtaGV4ZGVjb2N0LmMgYi9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jCi1pbmRleCA1MjIxNzQyOWIxLi5hMDVlNzc4MmY2IDEwMDY0NAoraW5kZXggNTIyMTc0MjliMTU0Li43MDcwOGRlZGYzMTggMTAwNjQ0CiAtLS0gYS9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jCiArKysgYi9zcmMvdGVzdC90ZXN0LWhleGRlY29jdC5jCiBAQCAtNiw2ICs2LDcgQEAKICAjaW5jbHVkZSAiaGV4ZGVjb2N0LmgiCiAgI2luY2x1ZGUgIm1hY3JvLmgiCiAgI2luY2x1ZGUgInN0cmluZy11dGlsLmgiCi0rI2luY2x1ZGUgIm1pc3NpbmcuaCIKKysjaW5jbHVkZSAibWlzc2luZ19zdGRsaWIuaCIKICAKICBzdGF0aWMgdm9pZCB0ZXN0X2hleGNoYXIodm9pZCkgewogICAgICAgICAgYXNzZXJ0X3NlKGhleGNoYXIoMHhhKSA9PSAnYScpOwogZGlmZiAtLWdpdCBhL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1wYXRoX2lkLmMgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tcGF0aF9pZC5jCi1pbmRleCBlOGYxY2UxMzU0Li44NjkzY2IwMmE0IDEwMDY0NAoraW5kZXggY2EzOGY1NjA4NzkxLi45ZDhjZjRkMjgwN2IgMTAwNjQ0CiAtLS0gYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tcGF0aF9pZC5jCiArKysgYi9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tcGF0aF9pZC5jCi1AQCAtMjMsNiArMjMsNyBAQAorQEAgLTIyLDYgKzIyLDcgQEAKICAjaW5jbHVkZSAic3Rydi5oIgogICNpbmNsdWRlICJzeXNleGl0cy5oIgogICNpbmNsdWRlICJ1ZGV2LWJ1aWx0aW4uaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorKyNpbmNsdWRlICJtaXNzaW5nX3N0ZGxpYi5oIgogIAogIF9wcmludGZfKDIsMykKICBzdGF0aWMgdm9pZCBwYXRoX3ByZXBlbmQoY2hhciAqKnBhdGgsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKSB7CiBkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1ldmVudC5jIGIvc3JjL3VkZXYvdWRldi1ldmVudC5jCi1pbmRleCA4Y2ZhMmNkZjIzLi5iMDY3MGM3N2VjIDEwMDY0NAoraW5kZXggZWI1MTEzOWU1MTljLi45NzdjYzE2ZTlkN2MgMTAwNjQ0CiAtLS0gYS9zcmMvdWRldi91ZGV2LWV2ZW50LmMKICsrKyBiL3NyYy91ZGV2L3VkZXYtZXZlbnQuYwotQEAgLTM1LDYgKzM1LDcgQEAKK0BAIC0zNCw2ICszNCw3IEBACiAgI2luY2x1ZGUgInVkZXYtdXRpbC5oIgogICNpbmNsdWRlICJ1ZGV2LXdhdGNoLmgiCiAgI2luY2x1ZGUgInVzZXItdXRpbC5oIgotKyNpbmNsdWRlICJtaXNzaW5nLmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgdHlwZWRlZiBzdHJ1Y3QgU3Bhd24gewogICAgICAgICAgc2RfZGV2aWNlICpkZXZpY2U7CiBkaWZmIC0tZ2l0IGEvc3JjL3VkZXYvdWRldi1ydWxlcy5jIGIvc3JjL3VkZXYvdWRldi1ydWxlcy5jCi1pbmRleCAxNjQyZjEwNTM1Li5mZTJhYTc1NDc4IDEwMDY0NAoraW5kZXggYjliMzUwZDFlZjdhLi4yYzExNGNjNzc1NzIgMTAwNjQ0CiAtLS0gYS9zcmMvdWRldi91ZGV2LXJ1bGVzLmMKICsrKyBiL3NyYy91ZGV2L3VkZXYtcnVsZXMuYwotQEAgLTI4LDYgKzI4LDcgQEAKLSAjaW5jbHVkZSAidWRldi1ldmVudC5oIgorQEAgLTMwLDYgKzMwLDcgQEAKICAjaW5jbHVkZSAidWRldi1ydWxlcy5oIgogICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKLSsjaW5jbHVkZSAibWlzc2luZy5oIgorICNpbmNsdWRlICJ2aXJ0LmgiCisrI2luY2x1ZGUgIm1pc3Npbmdfc3RkbGliLmgiCiAgCiAgI2RlZmluZSBSVUxFU19ESVJTIChjb25zdCBjaGFyKiBjb25zdCopIENPTkZfUEFUSFNfU1RSVigidWRldi9ydWxlcy5kIikKICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA2LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoCmluZGV4IDZkNzNkNzEuLjkxNDJkN2IgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDYtSW5jbHVkZS1uZXRpbmV0LWlmX2V0aGVyLmgucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNi1JbmNsdWRlLW5ldGluZXQtaWZfZXRoZXIuaC5wYXRjaApAQCAtMSw0ICsxLDcgQEAKLUluY2x1ZGUgbmV0aW5ldC9pZl9ldGhlci5oCitGcm9tIDQ3ODE4MDUyMTIxZDEzNTYzMmY1ZTQ2YzM2OWUzZTQ3MDZhMGY5ZTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVGh1LCAyNiBPY3QgMjAxNyAyMjoxMDo0MiAtMDcwMAorU3ViamVjdDogW1BBVENIXSBJbmNsdWRlIG5ldGluZXQvaWZfZXRoZXIuaAogCiBGaXhlcwogL3BhdGgvdG8vc3lzdGVtZC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9uZXRpbmV0L2lmX2V0aGVyLmg6MTAxOjg6IGVycm9yOiByZWRlZmluaXRpb24gb2YgJ3N0cnVjdCBldGhoZHInCkBAIC0yNiwxMSArMjksMTUgQEAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIFtyZWJhc2VkIGZvciBzeXN0ZW1kIDI0M10KIFNpZ25lZC1vZmYtYnk6IFNjb3R0IE11cnJheSA8c2NvdHQubXVycmF5QGtvbnN1bGtvLmNvbT4KKwogLS0tCiAgc3JjL2xpYnN5c3RlbWQtbmV0d29yay9zZC1kaGNwNi1jbGllbnQuYyAgfCAxIC0KICBzcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYyB8IDEgKwogIHNyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jICAgICAgICAgICAgICAgIHwgMSArCisgc3JjL25ldHdvcmsvbmV0ZGV2L2JvbmQuYyAgICAgICAgICAgICAgICAgfCAxICsKKyBzcmMvbmV0d29yay9uZXRkZXYvYnJpZGdlLmMgICAgICAgICAgICAgICB8IDEgKwogIHNyYy9uZXR3b3JrL25ldGRldi9tYWNzZWMuYyAgICAgICAgICAgICAgIHwgMSArCisgc3JjL25ldHdvcmsvbmV0ZGV2L25ldGRldi1ncGVyZi5ncGVyZiAgICAgfCAxICsKICBzcmMvbmV0d29yay9uZXRkZXYvbmV0ZGV2LmMgICAgICAgICAgICAgICB8IDEgKwogIHNyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jICAgICAgICAgICAgIHwgMSArCiAgc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcC1jb21tb24uYyAgICAgICAgfCAxICsKQEAgLTM4LDI2ICs0NSwyNyBAQAogIHNyYy9uZXR3b3JrL25ldHdvcmtkLWRoY3A2LmMgICAgICAgICAgICAgIHwgMiArLQogIHNyYy9uZXR3b3JrL25ldHdvcmtkLWxpbmsuYyAgICAgICAgICAgICAgIHwgMiArLQogIHNyYy9uZXR3b3JrL25ldHdvcmtkLW5ldHdvcmsuYyAgICAgICAgICAgIHwgMSArCisgc3JjL25ldHdvcmsvdGVzdC1uZXR3b3JrLXRhYmxlcy5jICAgICAgICAgfCAxICsKICBzcmMvc2hhcmVkL2V0aHRvb2wtdXRpbC5jICAgICAgICAgICAgICAgICB8IDEgKwogIHNyYy9zaGFyZWQvZXRodG9vbC11dGlsLmggICAgICAgICAgICAgICAgIHwgMSArCiAgc3JjL3VkZXYvbmV0L2xpbmstY29uZmlnLmMgICAgICAgICAgICAgICAgfCAxICsKICBzcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYyAgICB8IDEgKwotIDE1IGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisgMTkgZmlsZXMgY2hhbmdlZCwgMTggaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kLW5ldHdvcmsvc2QtZGhjcDYtY2xpZW50LmMgYi9zcmMvbGlic3lzdGVtZC1uZXR3b3JrL3NkLWRoY3A2LWNsaWVudC5jCi1pbmRleCBkN2E1MzQ5YzcwLi42OGI0MWRmYjZjIDEwMDY0NAoraW5kZXggZWFjMmU3MjVjY2U3Li4xYmVhZTdiYTkxY2MgMTAwNjQ0CiAtLS0gYS9zcmMvbGlic3lzdGVtZC1uZXR3b3JrL3NkLWRoY3A2LWNsaWVudC5jCiArKysgYi9zcmMvbGlic3lzdGVtZC1uZXR3b3JrL3NkLWRoY3A2LWNsaWVudC5jCi1AQCAtNiw3ICs2LDYgQEAKK0BAIC01LDcgKzUsNiBAQAorIAogICNpbmNsdWRlIDxlcnJuby5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KICAjaW5jbHVkZSA8c3lzL2lvY3RsLmg+CiAtI2luY2x1ZGUgPGxpbnV4L2lmX2FycC5oPgogICNpbmNsdWRlIDxsaW51eC9pZl9pbmZpbmliYW5kLmg+CiAgCiAgI2luY2x1ZGUgInNkLWRoY3A2LWNsaWVudC5oIgogZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jIGIvc3JjL2xpYnN5c3RlbWQvc2QtbmV0bGluay9uZXRsaW5rLXR5cGVzLmMKLWluZGV4IGRlOWI4YjIxYWIuLmY2NGY2NTAwZjcgMTAwNjQ0CitpbmRleCBlMzUxMjdhNGNkMmUuLjRmNmFkOWVmNTg4NiAxMDA2NDQKIC0tLSBhL3NyYy9saWJzeXN0ZW1kL3NkLW5ldGxpbmsvbmV0bGluay10eXBlcy5jCiArKysgYi9zcmMvbGlic3lzdGVtZC9zZC1uZXRsaW5rL25ldGxpbmstdHlwZXMuYwogQEAgLTMsNiArMyw3IEBACkBAIC02OSwxOSArNzcsNDEgQEAKICAjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgogICNpbmNsdWRlIDxsaW51eC9ydG5ldGxpbmsuaD4KIGRpZmYgLS1naXQgYS9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYyBiL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jCi1pbmRleCAwZDU4YjVlYjhiLi4wMTA5M2MxZjYyIDEwMDY0NAoraW5kZXggYTI5OTA0NTJhZjE3Li41YWYzNTA4ODNjMjggMTAwNjQ0CiAtLS0gYS9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYwogKysrIGIvc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMKLUBAIC00LDYgKzQsNyBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KK0BAIC0zLDYgKzMsNyBAQAorICNpbmNsdWRlIDxlcnJuby5oPgogICNpbmNsdWRlIDxzeXMvbW91bnQuaD4KICAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KICsjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgogIAogIC8qIFdoZW4gd2UgaW5jbHVkZSBsaWJnZW4uaCBiZWNhdXNlIHdlIG5lZWQgZGlybmFtZSgpIHdlIGltbWVkaWF0ZWx5CiAgICogdW5kZWZpbmUgYmFzZW5hbWUoKSBzaW5jZSBsaWJnZW4uaCBkZWZpbmVzIGl0IGFzIGEgbWFjcm8gdG8gdGhlIFBPU0lYCitkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0ZGV2L2JvbmQuYyBiL3NyYy9uZXR3b3JrL25ldGRldi9ib25kLmMKK2luZGV4IDhkZjM5ZTM1ODQzZi4uOGQ2OTc4OTRmOTcwIDEwMDY0NAorLS0tIGEvc3JjL25ldHdvcmsvbmV0ZGV2L2JvbmQuYworKysrIGIvc3JjL25ldHdvcmsvbmV0ZGV2L2JvbmQuYworQEAgLTEsNSArMSw2IEBACisgLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExHUEwtMi4xKyAqLworIAorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKKyAjaW5jbHVkZSAiYm9uZC5oIgorICNpbmNsdWRlICJjb25mLXBhcnNlci5oIgorZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldGRldi9icmlkZ2UuYyBiL3NyYy9uZXR3b3JrL25ldGRldi9icmlkZ2UuYworaW5kZXggNmI4Zjk5NDQ2MTJlLi43ZjgxZWMyNWM0MDcgMTAwNjQ0CistLS0gYS9zcmMvbmV0d29yay9uZXRkZXYvYnJpZGdlLmMKKysrKyBiL3NyYy9uZXR3b3JrL25ldGRldi9icmlkZ2UuYworQEAgLTEsNSArMSw2IEBACisgLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IExHUEwtMi4xKyAqLworIAorKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CisgI2luY2x1ZGUgPG5ldC9pZi5oPgorIAorICNpbmNsdWRlICJicmlkZ2UuaCIKIGRpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXRkZXYvbWFjc2VjLmMgYi9zcmMvbmV0d29yay9uZXRkZXYvbWFjc2VjLmMKLWluZGV4IGNmMjgxZTc1YTYuLjI2OWRjNjE4ZmYgMTAwNjQ0CitpbmRleCA3ZDFmZWMzYWZlNmQuLmU5NDhhMzM1MzM2ZCAxMDA2NDQKIC0tLSBhL3NyYy9uZXR3b3JrL25ldGRldi9tYWNzZWMuYwogKysrIGIvc3JjL25ldHdvcmsvbmV0ZGV2L21hY3NlYy5jCiBAQCAtMSw1ICsxLDYgQEAKQEAgLTkxLDggKzEyMSwyMCBAQAogICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiAgI2luY2x1ZGUgPGxpbnV4L2lmX2V0aGVyLmg+CiAgI2luY2x1ZGUgPGxpbnV4L2lmX21hY3NlYy5oPgorZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldGRldi9uZXRkZXYtZ3BlcmYuZ3BlcmYgYi9zcmMvbmV0d29yay9uZXRkZXYvbmV0ZGV2LWdwZXJmLmdwZXJmCitpbmRleCAwOWE1ZjQ4MjJlMDMuLjg3MzI5OWIxZjk4YSAxMDA2NDQKKy0tLSBhL3NyYy9uZXR3b3JrL25ldGRldi9uZXRkZXYtZ3BlcmYuZ3BlcmYKKysrKyBiL3NyYy9uZXR3b3JrL25ldGRldi9uZXRkZXYtZ3BlcmYuZ3BlcmYKK0BAIC0yLDYgKzIsNyBAQAorICNpZiBfX0dOVUNfXyA+PSA3CisgX1ByYWdtYSgiR0NDIGRpYWdub3N0aWMgaWdub3JlZCBcIi1XaW1wbGljaXQtZmFsbHRocm91Z2hcIiIpCisgI2VuZGlmCisrI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSA8c3RkZGVmLmg+CisgI2luY2x1ZGUgImJvbmQuaCIKKyAjaW5jbHVkZSAiYnJpZGdlLmgiCiBkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0ZGV2L25ldGRldi5jIGIvc3JjL25ldHdvcmsvbmV0ZGV2L25ldGRldi5jCi1pbmRleCA3NzM1YjQ1NWI3Li5lZDRlZGE0YTQ0IDEwMDY0NAoraW5kZXggZjgxMjFhNDhlZDkyLi40MzdmNDExYzYxZTggMTAwNjQ0CiAtLS0gYS9zcmMvbmV0d29yay9uZXRkZXYvbmV0ZGV2LmMKICsrKyBiL3NyYy9uZXR3b3JrL25ldGRldi9uZXRkZXYuYwogQEAgLTEsNSArMSw2IEBACkBAIC0xMDMsNyArMTQ1LDcgQEAKICAjaW5jbHVkZSA8bmV0aW5ldC9pbi5oPgogIAogZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtYnJ2bGFuLmMKLWluZGV4IGMzYzVkNTM1YWMuLmViZWE0MDhjODkgMTAwNjQ0CitpbmRleCA0MWYwOTI4N2YyYjcuLmI2N2NlNGZjODg0NCAxMDA2NDQKIC0tLSBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWJydmxhbi5jCiArKysgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1icnZsYW4uYwogQEAgLTQsNiArNCw3IEBACkBAIC0xMTUsMzMgKzE1NywzNCBAQAogICNpbmNsdWRlIDxzdGRib29sLmg+CiAgCiBkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0d29ya2QtZGhjcC1jb21tb24uYyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWRoY3AtY29tbW9uLmMKLWluZGV4IDYyNmI5NzU4MzkuLjQyZmU5MmYzMjAgMTAwNjQ0CitpbmRleCA4NjY0ZDhjZGMwZDQuLmU5ZjkxZjc0YzFhMSAxMDA2NDQKIC0tLSBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWRoY3AtY29tbW9uLmMKICsrKyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLWRoY3AtY29tbW9uLmMKLUBAIC0xLDYgKzEsNyBAQAotIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMSsgKi8KLSAKK0BAIC00LDYgKzQsNyBAQAorICNpbmNsdWRlICJlc2NhcGUuaCIKKyAjaW5jbHVkZSAiaW4tYWRkci11dGlsLmgiCiAgI2luY2x1ZGUgIm5ldHdvcmtkLWRoY3AtY29tbW9uLmgiCiArI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KICAjaW5jbHVkZSAibmV0d29ya2QtbmV0d29yay5oIgogICNpbmNsdWRlICJwYXJzZS11dGlsLmgiCiAgI2luY2x1ZGUgInN0cmluZy10YWJsZS5oIgogZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWRoY3A0LmMgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwNC5jCi1pbmRleCA2NjI3NzBiNTBlLi5jNmFiNjJhOTRkIDEwMDY0NAoraW5kZXggMTNlM2UzMmY0MGU4Li41Mzk0Mzk5YzkxNTAgMTAwNjQ0CiAtLS0gYS9zcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwNC5jCiArKysgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwNC5jCi1AQCAtMSw4ICsxLDggQEAKK0BAIC0xLDkgKzEsOSBAQAogIC8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBMR1BMLTIuMSsgKi8KICAKICsjaW5jbHVkZSA8bmV0aW5ldC9pZl9ldGhlci5oPgogICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CisgI2luY2x1ZGUgPG5ldGluZXQvaXAuaD4KICAjaW5jbHVkZSA8bGludXgvaWYuaD4KIC0jaW5jbHVkZSA8bGludXgvaWZfYXJwLmg+CiAgCiAgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKLSAjaW5jbHVkZSAiaG9zdG5hbWUtdXRpbC5oIgorICNpbmNsdWRlICJkaGNwLWNsaWVudC1pbnRlcm5hbC5oIgogZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWRoY3A2LmMgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwNi5jCi1pbmRleCA4YWQ3MzZhODJiLi5mNDFiNGQ4MzRlIDEwMDY0NAoraW5kZXggNzMwNDI3MGM2MGIxLi4wOTkwNjRmNjQ3MTUgMTAwNjQ0CiAtLS0gYS9zcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwNi5jCiArKysgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1kaGNwNi5jCiBAQCAtMyw5ICszLDkgQEAKQEAgLTE1Niw3ICsxOTksNyBAQAogIAogICNpbmNsdWRlICJzZC1kaGNwNi1jbGllbnQuaCIKIGRpZmYgLS1naXQgYS9zcmMvbmV0d29yay9uZXR3b3JrZC1saW5rLmMgYi9zcmMvbmV0d29yay9uZXR3b3JrZC1saW5rLmMKLWluZGV4IGY1YmI3ODg5MGEuLmYxM2EzNmI3OTEgMTAwNjQ0CitpbmRleCA5OWQ0YjI5YzMxZWMuLmU4YjQ2N2Q2YWMwOSAxMDA2NDQKIC0tLSBhL3NyYy9uZXR3b3JrL25ldHdvcmtkLWxpbmsuYwogKysrIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtbGluay5jCiBAQCAtMSw4ICsxLDggQEAKQEAgLTE3MCw3ICsyMTMsNyBAQAogIAogICNpbmNsdWRlICJhbGxvYy11dGlsLmgiCiBkaWZmIC0tZ2l0IGEvc3JjL25ldHdvcmsvbmV0d29ya2QtbmV0d29yay5jIGIvc3JjL25ldHdvcmsvbmV0d29ya2QtbmV0d29yay5jCi1pbmRleCAyYjhkMGViMmZiLi4yZjc5ZWYyNWNkIDEwMDY0NAoraW5kZXggMmU3MTZiMjkxZTk3Li41NmYxOGNlYTU3ZmUgMTAwNjQ0CiAtLS0gYS9zcmMvbmV0d29yay9uZXR3b3JrZC1uZXR3b3JrLmMKICsrKyBiL3NyYy9uZXR3b3JrL25ldHdvcmtkLW5ldHdvcmsuYwogQEAgLTEsNSArMSw2IEBACkBAIC0xODAsOCArMjIzLDE3IEBACiAgI2luY2x1ZGUgPG5ldC9pZi5oPgogICNpbmNsdWRlIDxuZXRpbmV0L2luLmg+CiAgI2luY2x1ZGUgPGxpbnV4L25ldGRldmljZS5oPgorZGlmZiAtLWdpdCBhL3NyYy9uZXR3b3JrL3Rlc3QtbmV0d29yay10YWJsZXMuYyBiL3NyYy9uZXR3b3JrL3Rlc3QtbmV0d29yay10YWJsZXMuYworaW5kZXggMjViOTM5NjM5Nzc1Li41MzBlNDkyODgzNWMgMTAwNjQ0CistLS0gYS9zcmMvbmV0d29yay90ZXN0LW5ldHdvcmstdGFibGVzLmMKKysrKyBiL3NyYy9uZXR3b3JrL3Rlc3QtbmV0d29yay10YWJsZXMuYworQEAgLTEsMyArMSw0IEBACisrI2luY2x1ZGUgPG5ldGluZXQvaWZfZXRoZXIuaD4KKyAjaW5jbHVkZSAiYm9uZC5oIgorICNpbmNsdWRlICJkaGNwNi1pbnRlcm5hbC5oIgorICNpbmNsdWRlICJkaGNwNi1wcm90b2NvbC5oIgogZGlmZiAtLWdpdCBhL3NyYy9zaGFyZWQvZXRodG9vbC11dGlsLmMgYi9zcmMvc2hhcmVkL2V0aHRvb2wtdXRpbC5jCi1pbmRleCBiMDk2MWRmNzJlLi41M2ZjYmJkODRiIDEwMDY0NAoraW5kZXggMDBhNzFkNjRhNjM4Li40NTkzZTg5MTIwYjggMTAwNjQ0CiAtLS0gYS9zcmMvc2hhcmVkL2V0aHRvb2wtdXRpbC5jCiArKysgYi9zcmMvc2hhcmVkL2V0aHRvb2wtdXRpbC5jCiBAQCAtMSw1ICsxLDYgQEAKQEAgLTE5MiwxOSArMjQ0LDE5IEBACiAgI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgogICNpbmNsdWRlIDxsaW51eC9ldGh0b29sLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9ldGh0b29sLXV0aWwuaCBiL3NyYy9zaGFyZWQvZXRodG9vbC11dGlsLmgKLWluZGV4IDhiMzJiMjQzZjMuLjI2MmI4MTk5NzYgMTAwNjQ0CitpbmRleCBjMWQ1ZDc1OTBlZjkuLmIzZTAxOGJmNzZlOSAxMDA2NDQKIC0tLSBhL3NyYy9zaGFyZWQvZXRodG9vbC11dGlsLmgKICsrKyBiL3NyYy9zaGFyZWQvZXRodG9vbC11dGlsLmgKLUBAIC0yLDYgKzIsNyBAQAotICNwcmFnbWEgb25jZQorQEAgLTMsNiArMyw3IEBACiAgCiAgI2luY2x1ZGUgPG1hY3JvLmg+CisgI2luY2x1ZGUgPG5ldC9ldGhlcm5ldC5oPgogKyNpbmNsdWRlIDxuZXRpbmV0L2lmX2V0aGVyLmg+CiAgI2luY2x1ZGUgPGxpbnV4L2V0aHRvb2wuaD4KICAKICAjaW5jbHVkZSAiY29uZi1wYXJzZXIuaCIKIGRpZmYgLS1naXQgYS9zcmMvdWRldi9uZXQvbGluay1jb25maWcuYyBiL3NyYy91ZGV2L25ldC9saW5rLWNvbmZpZy5jCi1pbmRleCBkNDRhZjY0ZDVlLi5mZDA1MmYxNTkxIDEwMDY0NAoraW5kZXggMDMzMmU5OTI2OWM5Li5mZjNhZWFkNGE3NzkgMTAwNjQ0CiAtLS0gYS9zcmMvdWRldi9uZXQvbGluay1jb25maWcuYwogKysrIGIvc3JjL3VkZXYvbmV0L2xpbmstY29uZmlnLmMKIEBAIC0xLDUgKzEsNiBAQApAQCAtMjE1LDcgKzI2Nyw3IEBACiAgI2luY2x1ZGUgPG5ldGluZXQvZXRoZXIuaD4KICAKIGRpZmYgLS1naXQgYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYyBiL3NyYy91ZGV2L3VkZXYtYnVpbHRpbi1uZXRfc2V0dXBfbGluay5jCi1pbmRleCBlZTNjYTlmYTM4Li45YWE0ZTgyODc0IDEwMDY0NAoraW5kZXggZWUzY2E5ZmEzODQ2Li45YWE0ZTgyODc0MWYgMTAwNjQ0CiAtLS0gYS9zcmMvdWRldi91ZGV2LWJ1aWx0aW4tbmV0X3NldHVwX2xpbmsuYwogKysrIGIvc3JjL3VkZXYvdWRldi1idWlsdGluLW5ldF9zZXR1cF9saW5rLmMKIEBAIC0xLDUgKzEsNiBAQApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwNy1kb24tdC1mYWlsLWlmLUdMT0JfQlJBQ0UtYW5kLUdMT0JfQUxURElSRlVOQy1pcy1ub3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LWRvbi10LWZhaWwtaWYtR0xPQl9CUkFDRS1hbmQtR0xPQl9BTFRESVJGVU5DLWlzLW5vdC5wYXRjaAppbmRleCAzNGY3ZjVmLi41ODBjNDlmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LWRvbi10LWZhaWwtaWYtR0xPQl9CUkFDRS1hbmQtR0xPQl9BTFRESVJGVU5DLWlzLW5vdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA3LWRvbi10LWZhaWwtaWYtR0xPQl9CUkFDRS1hbmQtR0xPQl9BTFRESVJGVU5DLWlzLW5vdC5wYXRjaApAQCAtMSw4ICsxLDcgQEAKLUZyb20gZjhhMjM5YjE4MjE1OGNhMGE1MzdiYTA1M2NiMGU2YmFkOWMzYTJmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzdmOTg3MjdmMWQxOWE4ZmIzMjdiNTVjOTJmMWE5ZWU3Yjg1OWU5ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMjUgRmViIDIwMTkgMTQ6NTY6MjEgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwNy8yNF0gZG9uJ3QgZmFpbCBpZiBHTE9CX0JSQUNFIGFuZCBHTE9CX0FMVERJUkZVTkMgaXMgbm90IAotIGRlZmluZWQKK1N1YmplY3Q6IFtQQVRDSF0gZG9uJ3QgZmFpbCBpZiBHTE9CX0JSQUNFIGFuZCBHTE9CX0FMVERJUkZVTkMgaXMgbm90IGRlZmluZWQKIAogSWYgdGhlIHN0YW5kYXJkIGxpYnJhcnkgZG9lc24ndCBwcm92aWRlIGJyYWNlCiBleHBhbnNpb24gdXNlcnMganVzdCB3b24ndCBnZXQgaXQuCkBAIC0xNyw2ICsxNiw3IEBACiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBbcmViYXNlZCBmb3Igc3lzdGVtZCAyNDNdCiBTaWduZWQtb2ZmLWJ5OiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+CisKIC0tLQogIHNyYy9iYXNpYy9nbG9iLXV0aWwuYyAgICAgfCAxMiArKysrKysrKysrKysKICBzcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jIHwgMTYgKysrKysrKysrKysrKysrKwpAQCAtMjQsMTAgKzI0LDEwIEBACiAgMyBmaWxlcyBjaGFuZ2VkLCAzOCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvZ2xvYi11dGlsLmMgYi9zcmMvYmFzaWMvZ2xvYi11dGlsLmMKLWluZGV4IGIzMzVhZjhkOTcuLjJjZGZjMTFmMTYgMTAwNjQ0CitpbmRleCBlM2FhNmMyZTE1MmIuLjM4MDcwYjc5YzgzYSAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9nbG9iLXV0aWwuYwogKysrIGIvc3JjL2Jhc2ljL2dsb2ItdXRpbC5jCi1AQCAtMTQsNiArMTQsMTIgQEAKK0BAIC0xMiw2ICsxMiwxMiBAQAogICNpbmNsdWRlICJwYXRoLXV0aWwuaCIKICAjaW5jbHVkZSAic3Rydi5oIgogIApAQCAtNDAsNyArNDAsNyBAQAogIHN0YXRpYyB2b2lkIGNsb3NlZGlyX3dyYXBwZXIodm9pZCogdikgewogICAgICAgICAgKHZvaWQpIGNsb3NlZGlyKHYpOwogIH0KLUBAIC0yMSw2ICsyNyw3IEBAIHN0YXRpYyB2b2lkIGNsb3NlZGlyX3dyYXBwZXIodm9pZCogdikgeworQEAgLTE5LDYgKzI1LDcgQEAgc3RhdGljIHZvaWQgY2xvc2VkaXJfd3JhcHBlcih2b2lkKiB2KSB7CiAgaW50IHNhZmVfZ2xvYihjb25zdCBjaGFyICpwYXRoLCBpbnQgZmxhZ3MsIGdsb2JfdCAqcGdsb2IpIHsKICAgICAgICAgIGludCBrOwogIApAQCAtNDgsNyArNDgsNyBAQAogICAgICAgICAgLyogV2Ugd2FudCB0byBzZXQgR0xPQl9BTFRESVJGVU5DIG91cnNlbHZlcywgZG9uJ3QgYWxsb3cgaXQgdG8gYmUgc2V0LiAqLwogICAgICAgICAgYXNzZXJ0KCEoZmxhZ3MgJiBHTE9CX0FMVERJUkZVTkMpKTsKICAKLUBAIC0zNCw5ICs0MSwxNCBAQCBpbnQgc2FmZV9nbG9iKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmbGFncywgZ2xvYl90ICpwZ2xvYikgeworQEAgLTMyLDkgKzM5LDE0IEBAIGludCBzYWZlX2dsb2IoY29uc3QgY2hhciAqcGF0aCwgaW50IGZsYWdzLCBnbG9iX3QgKnBnbG9iKSB7CiAgICAgICAgICAgICAgICAgIHBnbG9iLT5nbF9sc3RhdCA9IGxzdGF0OwogICAgICAgICAgaWYgKCFwZ2xvYi0+Z2xfc3RhdCkKICAgICAgICAgICAgICAgICAgcGdsb2ItPmdsX3N0YXQgPSBzdGF0OwpAQCAtNjQsMTAgKzY0LDEwIEBACiAgICAgICAgICAgICAgICAgIHJldHVybiAtRU5PRU5UOwogICAgICAgICAgaWYgKGsgPT0gR0xPQl9OT1NQQUNFKQogZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Rlc3QtZ2xvYi11dGlsLmMgYi9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jCi1pbmRleCBiNGY0MTQ0NWZlLi5mMGQ0NzRlZDE0IDEwMDY0NAoraW5kZXggNjY3ZDE1MzM1ZmJmLi43NmE4NDQ0M2FhY2YgMTAwNjQ0CiAtLS0gYS9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jCiArKysgYi9zcmMvdGVzdC90ZXN0LWdsb2ItdXRpbC5jCi1AQCAtMTMsNiArMTMsMTIgQEAKK0BAIC0xMiw2ICsxMiwxMiBAQAogICNpbmNsdWRlICJybS1yZi5oIgogICNpbmNsdWRlICJ0bXBmaWxlLXV0aWwuaCIKICAKQEAgLTgwLDcgKzgwLDcgQEAKICBzdGF0aWMgdm9pZCB0ZXN0X2dsb2JfZXhpc3RzKHZvaWQpIHsKICAgICAgICAgIGNoYXIgbmFtZVtdID0gIi90bXAvdGVzdC1nbG9iX2V4aXN0cy5YWFhYWFgiOwogICAgICAgICAgaW50IGZkID0gLTE7Ci1AQCAtNDAsMTEgKzQ2LDEzIEBAIHN0YXRpYyB2b2lkIHRlc3RfZ2xvYl9ub19kb3Qodm9pZCkgeworQEAgLTM5LDExICs0NSwxMyBAQCBzdGF0aWMgdm9pZCB0ZXN0X2dsb2Jfbm9fZG90KHZvaWQpIHsKICAgICAgICAgIGNvbnN0IGNoYXIgKmZuOwogIAogICAgICAgICAgX2NsZWFudXBfZ2xvYmZyZWVfIGdsb2JfdCBnID0gewpAQCAtOTQsNyArOTQsNyBAQAogICAgICAgICAgfTsKICAKICAgICAgICAgIGludCByOwotQEAgLTUyLDExICs2MCwxOSBAQCBzdGF0aWMgdm9pZCB0ZXN0X2dsb2Jfbm9fZG90KHZvaWQpIHsKK0BAIC01MSwxMSArNTksMTkgQEAgc3RhdGljIHZvaWQgdGVzdF9nbG9iX25vX2RvdCh2b2lkKSB7CiAgICAgICAgICBhc3NlcnRfc2UobWtkdGVtcCh0ZW1wbGF0ZSkpOwogIAogICAgICAgICAgZm4gPSBzdHJqb2luYSh0ZW1wbGF0ZSwgIi8qIik7CkBAIC0xMTUsMTAgKzExNSwxMCBAQAogIAogICAgICAgICAgKHZvaWQpIHJtX3JmKHRlbXBsYXRlLCBSRU1PVkVfUk9PVHxSRU1PVkVfUEhZU0lDQUwpOwogZGlmZiAtLWdpdCBhL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jIGIvc3JjL3RtcGZpbGVzL3RtcGZpbGVzLmMKLWluZGV4IDNjMzA2MTJhZjEuLjE0YmM0MjgwODUgMTAwNjQ0CitpbmRleCAxOTNlZDBiYzc4MWIuLjJmOTRmZDJlZmQ4ZiAxMDA2NDQKIC0tLSBhL3NyYy90bXBmaWxlcy90bXBmaWxlcy5jCiArKysgYi9zcmMvdG1wZmlsZXMvdG1wZmlsZXMuYwotQEAgLTYzLDYgKzYzLDEyIEBACitAQCAtNTgsNiArNTgsMTIgQEAKICAjaW5jbHVkZSAidW1hc2stdXRpbC5oIgogICNpbmNsdWRlICJ1c2VyLXV0aWwuaCIKICAKQEAgLTEzMSw3ICsxMzEsNyBAQAogIC8qIFRoaXMgcmVhZHMgYWxsIGZpbGVzIGxpc3RlZCBpbiAvZXRjL3RtcGZpbGVzLmQvPyouY29uZiBhbmQgY3JlYXRlcwogICAqIHRoZW0gaW4gdGhlIGZpbGUgc3lzdGVtLiBUaGlzIGlzIGludGVuZGVkIHRvIGJlIHVzZWQgdG8gY3JlYXRlCiAgICogcHJvcGVybHkgb3duZWQgZGlyZWN0b3JpZXMgYmVuZWF0aCAvdG1wLCAvdmFyL3RtcCwgL3J1biwgd2hpY2ggYXJlCi1AQCAtMTg1Myw3ICsxODU5LDkgQEAgZmluaXNoOgorQEAgLTE4NTAsNyArMTg1Niw5IEBAIGZpbmlzaDoKICAKICBzdGF0aWMgaW50IGdsb2JfaXRlbShJdGVtICppLCBhY3Rpb25fdCBhY3Rpb24pIHsKICAgICAgICAgIF9jbGVhbnVwX2dsb2JmcmVlXyBnbG9iX3QgZyA9IHsKQEAgLTE0MSw3ICsxNDEsNyBAQAogICAgICAgICAgfTsKICAgICAgICAgIGludCByID0gMCwgazsKICAgICAgICAgIGNoYXIgKipmbjsKLUBAIC0xODczLDcgKzE4ODEsOSBAQCBzdGF0aWMgaW50IGdsb2JfaXRlbShJdGVtICppLCBhY3Rpb25fdCBhY3Rpb24pIHsKK0BAIC0xODcwLDcgKzE4NzgsOSBAQCBzdGF0aWMgaW50IGdsb2JfaXRlbShJdGVtICppLCBhY3Rpb25fdCBhY3Rpb24pIHsKICAKICBzdGF0aWMgaW50IGdsb2JfaXRlbV9yZWN1cnNpdmVseShJdGVtICppLCBmZGFjdGlvbl90IGFjdGlvbikgewogICAgICAgICAgX2NsZWFudXBfZ2xvYmZyZWVfIGdsb2JfdCBnID0gewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1hZGQtbWlzc2luZy1GVFdfLW1hY3Jvcy1mb3ItbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMDgtYWRkLW1pc3NpbmctRlRXXy1tYWNyb3MtZm9yLW11c2wucGF0Y2gKaW5kZXggZDVmMjM0OS4uMWY2MTg5MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAwOC1hZGQtbWlzc2luZy1GVFdfLW1hY3Jvcy1mb3ItbXVzbC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDA4LWFkZC1taXNzaW5nLUZUV18tbWFjcm9zLWZvci1tdXNsLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA2Y2QxN2M3NTNkMmMwYTkwZmM3OTFmNjliYmM2OTRjYmM4NTU2YTRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA3YzQ0MGNmYzUzYWE1MmM5ZGM5MWMzYThjMTA1YmNmMzE0YzUzYWY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyNSBGZWIgMjAxOSAxNTowMDowNiArMDgwMAotU3ViamVjdDogW1BBVENIIDA4LzI0XSBhZGQgbWlzc2luZyBGVFdfIG1hY3JvcyBmb3IgbXVzbAorU3ViamVjdDogW1BBVENIXSBhZGQgbWlzc2luZyBGVFdfIG1hY3JvcyBmb3IgbXVzbAogCiBUaGlzIGlzIHRvIGF2b2lkIGJ1aWxkIGZhaWx1cmVzIGxpa2UgYmVsb3cgZm9yIG11c2wuCiAKQEAgLTEwLDEyICsxMCwxMyBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNyYy9iYXNpYy9taXNzaW5nX3R5cGUuaCB8IDIwICsrKysrKysrKysrKysrKysrKysrCiAgMSBmaWxlIGNoYW5nZWQsIDIwIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9taXNzaW5nX3R5cGUuaCBiL3NyYy9iYXNpYy9taXNzaW5nX3R5cGUuaAotaW5kZXggYzQ4N2U2NS4uMjM2MDJlYiAxMDA2NDQKK2luZGV4IGM0ODdlNjVlN2JkZS4uMjM2MDJlYmJkNTMzIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmdfdHlwZS5oCiArKysgYi9zcmMvYmFzaWMvbWlzc2luZ190eXBlLmgKIEBAIC0xOSwzICsxOSwyMyBAQCB0eXBlZGVmIGludCAoKmNvbXBhcmlzb25fZm5fdCkoY29uc3Qgdm9pZCAqLCBjb25zdCB2b2lkICopOwpAQCAtNDIsNiArNDMsMyBAQAogKyNpZm5kZWYgRlRXX1NLSVBfU0lCTElOR1MKICsjZGVmaW5lIEZUV19TS0lQX1NJQkxJTkdTIDMKICsjZW5kaWYKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC1maXgtbWlzc2luZy1vZi1fX3JlZ2lzdGVyX2F0Zm9yay1mb3Itbm9uLWdsaWJjLWJ1aWxkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMC1maXgtbWlzc2luZy1vZi1fX3JlZ2lzdGVyX2F0Zm9yay1mb3Itbm9uLWdsaWJjLWJ1aWxkLnBhdGNoCmluZGV4IDhiYWNkMDIuLjVlZTUwMWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTAtZml4LW1pc3Npbmctb2YtX19yZWdpc3Rlcl9hdGZvcmstZm9yLW5vbi1nbGliYy1idWlsZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDEwLWZpeC1taXNzaW5nLW9mLV9fcmVnaXN0ZXJfYXRmb3JrLWZvci1ub24tZ2xpYmMtYnVpbGQucGF0Y2gKQEAgLTEsMjAgKzEsMjEgQEAKLUZyb20gZjFmNGI0Zjk2ODRmZWQxODViZmE4YjllZDQwOWNkZjI0MTY1N2U5OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZWVkNzQyN2RiOThjYzAxZGI3ZTliMzQ3OTY1NWQ2OGIwNDRiYzg1YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IE1vbiwgMjUgRmViIDIwMTkgMTU6MDM6NDcgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8yNF0gZml4IG1pc3Npbmcgb2YgX19yZWdpc3Rlcl9hdGZvcmsgZm9yIG5vbi1nbGliYyBidWlsZHMKK1N1YmplY3Q6IFtQQVRDSF0gZml4IG1pc3Npbmcgb2YgX19yZWdpc3Rlcl9hdGZvcmsgZm9yIG5vbi1nbGliYyBidWlsZHMKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyB8IDcgKysrKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyBiL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYwotaW5kZXggNzhjZTQzYi4uYWVjMmRhZiAxMDA2NDQKK2luZGV4IDVkZTM2NmY4MzBlOC4uNjQ0ZjUzYWVlMDA1IDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCiArKysgYi9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKLUBAIC0yMiw2ICsyMiw5IEBACitAQCAtMTgsNiArMTgsOSBAQAogICNpZiBIQVZFX1ZBTEdSSU5EX1ZBTEdSSU5EX0gKICAjaW5jbHVkZSA8dmFsZ3JpbmQvdmFsZ3JpbmQuaD4KICAjZW5kaWYKQEAgLTI0LDcgKzI1LDcgQEAKICAKICAjaW5jbHVkZSAiYWxsb2MtdXRpbC5oIgogICNpbmNsdWRlICJhcmNoaXRlY3R1cmUuaCIKLUBAIC0xMTYwLDExICsxMTYzLDE1IEBAIHZvaWQgcmVzZXRfY2FjaGVkX3BpZCh2b2lkKSB7CitAQCAtMTExNiwxMSArMTExOSwxNSBAQCB2b2lkIHJlc2V0X2NhY2hlZF9waWQodm9pZCkgewogICAgICAgICAgY2FjaGVkX3BpZCA9IENBQ0hFRF9QSURfVU5TRVQ7CiAgfQogIApAQCAtNDAsNiArNDEsMyBAQAogIAogIHBpZF90IGdldHBpZF9jYWNoZWQodm9pZCkgewogICAgICAgICAgc3RhdGljIGJvb2wgaW5zdGFsbGVkID0gZmFsc2U7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTEtVXNlLXVpbnRtYXhfdC1mb3ItaGFuZGxpbmctcmxpbV90LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMS1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2gKaW5kZXggZDZlZGE5Yy4uZTVkOTUxNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMS1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxMS1Vc2UtdWludG1heF90LWZvci1oYW5kbGluZy1ybGltX3QucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIGUzZjg0N2JkMDMzOGQyN2FmZjMzMzViNDI2NjFkOGE0YjY2Yjk2NWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDRhYTkxMzQ3YWU5NzUwNTFkYmU0ZGQyZjk4YTFmNGY0NTlmMjYwNGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBNb24sIDI1IEZlYiAyMDE5IDE1OjEyOjQxICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTEvMjRdIFVzZSB1aW50bWF4X3QgZm9yIGhhbmRsaW5nIHJsaW1fdAorU3ViamVjdDogW1BBVENIXSBVc2UgdWludG1heF90IGZvciBoYW5kbGluZyBybGltX3QKIAogUFJJdXszMiw2NH0gaXMgbm90IHJpZ2h0IGZvcm1hdCB0byByZXByZXNlbnQgcmxpbV90IHR5cGUKIHRoZXJlZm9yZSB1c2UgJWp1IGFuZCB0eXBlY2FzdCB0aGUgcmxpbV90IHZhcmlhYmxlcyB0bwpAQCAtMjAsNiArMjAsNyBAQAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIFtSZWJhc2VkIGZvciB2MjQxXQogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBzcmMvYmFzaWMvZm9ybWF0LXV0aWwuaCB8ICA4ICstLS0tLS0tCiAgc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMgfCAxMCArKysrKy0tLS0tCkBAIC0yNywxMCArMjgsMTAgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMTQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvZm9ybWF0LXV0aWwuaCBiL3NyYy9iYXNpYy9mb3JtYXQtdXRpbC5oCi1pbmRleCBkZWNlNWQzLi5kYmI4N2JjIDEwMDY0NAoraW5kZXggYzQ3ZmE3NmVhOGZmLi4xNGE3OGQ5ZjVmZDAgMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvZm9ybWF0LXV0aWwuaAogKysrIGIvc3JjL2Jhc2ljL2Zvcm1hdC11dGlsLmgKLUBAIC00MiwxMyArNDIsNyBAQAorQEAgLTMyLDEzICszMiw3IEBAIGFzc2VydF9jYyhzaXplb2YoZ2lkX3QpID09IHNpemVvZih1aW50MzJfdCkpOwogICMgIGRlZmluZSBQUklfVElNRVggImxpIgogICNlbmRpZgogIApAQCAtNDYsMTAgKzQ3LDEwIEBACiAgI2lmIFNJWkVPRl9ERVZfVCA9PSA4CiAgIyAgZGVmaW5lIERFVl9GTVQgIiUiIFBSSXU2NAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jIGIvc3JjL2Jhc2ljL3JsaW1pdC11dGlsLmMKLWluZGV4IDc0YjNhMDIuLmIwMmMwM2MgMTAwNjQ0CitpbmRleCAyZGMxM2VhYmMzMGQuLjA2MzNjYzY3ZjQxNyAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9ybGltaXQtdXRpbC5jCiArKysgYi9zcmMvYmFzaWMvcmxpbWl0LXV0aWwuYwotQEAgLTMwNywxMyArMzA3LDEzIEBAIGludCBybGltaXRfZm9ybWF0KGNvbnN0IHN0cnVjdCBybGltaXQgKnJsLCBjaGFyICoqcmV0KSB7CitAQCAtMzA2LDEzICszMDYsMTMgQEAgaW50IHJsaW1pdF9mb3JtYXQoY29uc3Qgc3RydWN0IHJsaW1pdCAqcmwsIGNoYXIgKipyZXQpIHsKICAgICAgICAgIGlmIChybC0+cmxpbV9jdXIgPj0gUkxJTV9JTkZJTklUWSAmJiBybC0+cmxpbV9tYXggPj0gUkxJTV9JTkZJTklUWSkKICAgICAgICAgICAgICAgICAgcyA9IHN0cmR1cCgiaW5maW5pdHkiKTsKICAgICAgICAgIGVsc2UgaWYgKHJsLT5ybGltX2N1ciA+PSBSTElNX0lORklOSVRZKQpAQCAtNjcsNyArNjgsNyBAQAogIAogICAgICAgICAgaWYgKCFzKQogICAgICAgICAgICAgICAgICByZXR1cm4gLUVOT01FTTsKLUBAIC00MDQsNyArNDA0LDcgQEAgaW50IHJsaW1pdF9ub2ZpbGVfc2FmZSh2b2lkKSB7CitAQCAtNDAzLDcgKzQwMyw3IEBAIGludCBybGltaXRfbm9maWxlX3NhZmUodm9pZCkgewogIAogICAgICAgICAgcmwucmxpbV9jdXIgPSBGRF9TRVRTSVpFOwogICAgICAgICAgaWYgKHNldHJsaW1pdChSTElNSVRfTk9GSUxFLCAmcmwpIDwgMCkKQEAgLTc3LDEwICs3OCwxMCBAQAogICAgICAgICAgcmV0dXJuIDE7CiAgfQogZGlmZiAtLWdpdCBhL3NyYy9jb3JlL2V4ZWN1dGUuYyBiL3NyYy9jb3JlL2V4ZWN1dGUuYwotaW5kZXggYTcwODIzMS4uZTJiODc0OCAxMDA2NDQKK2luZGV4IDk3NjJkYzU3NDQzYy4uNGEzNDIxYmIzZWU2IDEwMDY0NAogLS0tIGEvc3JjL2NvcmUvZXhlY3V0ZS5jCiArKysgYi9zcmMvY29yZS9leGVjdXRlLmMKLUBAIC00MjIwLDkgKzQyMjAsOSBAQCB2b2lkIGV4ZWNfY29udGV4dF9kdW1wKGNvbnN0IEV4ZWNDb250ZXh0ICpjLCBGSUxFKiBmLCBjb25zdCBjaGFyICpwcmVmaXgpIHsKK0BAIC00NTY3LDkgKzQ1NjcsOSBAQCB2b2lkIGV4ZWNfY29udGV4dF9kdW1wKGNvbnN0IEV4ZWNDb250ZXh0ICpjLCBGSUxFKiBmLCBjb25zdCBjaGFyICpwcmVmaXgpIHsKICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBSTElNX05MSU1JVFM7IGkrKykKICAgICAgICAgICAgICAgICAgaWYgKGMtPnJsaW1pdFtpXSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGZwcmludGYoZiwgIiVzTGltaXQlczogIiBSTElNX0ZNVCAiXG4iLApAQCAtOTIsNiArOTMsMyBAQAogICAgICAgICAgICAgICAgICB9CiAgCiAgICAgICAgICBpZiAoYy0+aW9wcmlvX3NldCkgewotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE0LXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE0LXRlc3Qtc2l6ZW9mLmMtRGlzYWJsZS10ZXN0cy1mb3ItbWlzc2luZy10eXBlZGVmcy1pbi0ucGF0Y2gKaW5kZXggOTE0NTg5ZC4uMDQ5MDk2ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNC10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTQtdGVzdC1zaXplb2YuYy1EaXNhYmxlLXRlc3RzLWZvci1taXNzaW5nLXR5cGVkZWZzLWluLS5wYXRjaApAQCAtMSwyMiArMSwyMiBAQAotRnJvbSBkM2Q2NWQ0MDM2NjcwY2JkNTEyOWZlNTVjMDljYTM5MTI4NmVmNGIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2MmZhYzVlM2ZmMGZjY2QzMjljZGM0OTYwNTI1OGI2ZDBlNTczYTNlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogV2VkLCAyOCBGZWIgMjAxOCAyMToyNToyMiAtMDgwMAotU3ViamVjdDogW1BBVENIIDE0LzI0XSB0ZXN0LXNpemVvZi5jOiBEaXNhYmxlIHRlc3RzIGZvciBtaXNzaW5nIHR5cGVkZWZzIGluCi0gbXVzbAorU3ViamVjdDogW1BBVENIXSB0ZXN0LXNpemVvZi5jOiBEaXNhYmxlIHRlc3RzIGZvciBtaXNzaW5nIHR5cGVkZWZzIGluIG11c2wKIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFttdXNsIHNwZWNpZmljXQogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBzcmMvdGVzdC90ZXN0LXNpemVvZi5jIHwgNCArKysrCiAgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL3Rlc3QvdGVzdC1zaXplb2YuYyBiL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKLWluZGV4IDM1YjA4NzYuLmU3OGU3Y2EgMTAwNjQ0CitpbmRleCAxMDIwZTBjYjMxNTMuLmM2NTA2MmQyNTYyYyAxMDA2NDQKIC0tLSBhL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKICsrKyBiL3NyYy90ZXN0L3Rlc3Qtc2l6ZW9mLmMKLUBAIC00MSw4ICs0MSwxMCBAQCBpbnQgbWFpbih2b2lkKSB7CitAQCAtNDQsOCArNDQsMTAgQEAgaW50IG1haW4odm9pZCkgewogICAgICAgICAgaW5mbyh1bnNpZ25lZCk7CiAgICAgICAgICBpbmZvKGxvbmcgdW5zaWduZWQpOwogICAgICAgICAgaW5mbyhsb25nIGxvbmcgdW5zaWduZWQpOwpAQCAtMjcsNyArMjcsNyBAQAogIAogICAgICAgICAgaW5mbyhmbG9hdCk7CiAgICAgICAgICBpbmZvKGRvdWJsZSk7Ci1AQCAtNjAsNyArNjIsOSBAQCBpbnQgbWFpbih2b2lkKSB7CitAQCAtNjMsNyArNjUsOSBAQCBpbnQgbWFpbih2b2lkKSB7CiAgICAgICAgICBpbmZvKHNzaXplX3QpOwogICAgICAgICAgaW5mbyh0aW1lX3QpOwogICAgICAgICAgaW5mbyh1c2VjX3QpOwpAQCAtMzcsNiArMzcsMyBAQAogICAgICAgICAgaW5mbyhwaWRfdCk7CiAgICAgICAgICBpbmZvKHVpZF90KTsKICAgICAgICAgIGluZm8oZ2lkX3QpOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE1LWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoCmluZGV4IGZkNDA3ZjYuLmVmZWVmMDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTUtZG9uLXQtcGFzcy1BVF9TWU1MSU5LX05PRk9MTE9XLWZsYWctdG8tZmFjY2Vzc2F0LnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA0OGM2MjhmNTMyZjYwMjVjMmQxNjQ2YjY4MTljZDgxZWI3ODlkN2ZiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBlNmY4NzEwNzhkOGQ2ZjA3NmM4NGY5MDhmYTU3YWYxNTQxN2FiODdkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KIERhdGU6IFR1ZSwgMTAgT2N0IDIwMTcgMTQ6MzM6MzAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxNS8yNF0gZG9uJ3QgcGFzcyBBVF9TWU1MSU5LX05PRk9MTE9XIGZsYWcgdG8gZmFjY2Vzc2F0KCkKK1N1YmplY3Q6IFtQQVRDSF0gZG9uJ3QgcGFzcyBBVF9TWU1MSU5LX05PRk9MTE9XIGZsYWcgdG8gZmFjY2Vzc2F0KCkKIAogQXZvaWQgdXNpbmcgQVRfU1lNTElOS19OT0ZPTExPVyBmbGFnLiBJdCBkb2Vzbid0IHNlZW0gbGlrZSB0aGUgcmlnaHQKIHRoaW5nIHRvIGRvIGFuZCBpdCdzIG5vdCBwb3J0YWJsZSAobm90IHN1cHBvcnRlZCBieSBtdXNsKS4gU2VlOgpAQCAtMjUsMTYgKzI1LDE3IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+CisKIC0tLQogIHNyYy9iYXNpYy9mcy11dGlsLmggICAgICAgICAgfCAyMiArKysrKysrKysrKysrKysrKysrKystCiAgc3JjL3NoYXJlZC9iYXNlLWZpbGVzeXN0ZW0uYyB8ICA2ICsrKy0tLQogIDIgZmlsZXMgY2hhbmdlZCwgMjQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9mcy11dGlsLmggYi9zcmMvYmFzaWMvZnMtdXRpbC5oCi1pbmRleCA3YWQwMzBiLi5kNGNiMWU5IDEwMDY0NAoraW5kZXggNzhkNjhiZTlmZDg1Li5jNWRjODRkNDE4NjggMTAwNjQ0CiAtLS0gYS9zcmMvYmFzaWMvZnMtdXRpbC5oCiArKysgYi9zcmMvYmFzaWMvZnMtdXRpbC5oCi1AQCAtMzIsNyArMzIsMjcgQEAgaW50IGZjaG1vZF9vcGF0aChpbnQgZmQsIG1vZGVfdCBtKTsKK0BAIC00MCw3ICs0MCwyNyBAQCBpbnQgZmNobW9kX29wYXRoKGludCBmZCwgbW9kZV90IG0pOwogIAogIGludCBmZF93YXJuX3Blcm1pc3Npb25zKGNvbnN0IGNoYXIgKnBhdGgsIGludCBmZCk7CiAgCkBAIC02NCwxMCArNjUsMTAgQEAKICBpbnQgdG91Y2hfZmlsZShjb25zdCBjaGFyICpwYXRoLCBib29sIHBhcmVudHMsIHVzZWNfdCBzdGFtcCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQsIG1vZGVfdCBtb2RlKTsKICBpbnQgdG91Y2goY29uc3QgY2hhciAqcGF0aCk7CiBkaWZmIC0tZ2l0IGEvc3JjL3NoYXJlZC9iYXNlLWZpbGVzeXN0ZW0uYyBiL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMKLWluZGV4IDg5ZDdhN2QuLjM0YjRhZDUgMTAwNjQ0CitpbmRleCA2NTc0MDdkYTJkMzcuLmZiZDU3ODJkODRmYyAxMDA2NDQKIC0tLSBhL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMKICsrKyBiL3NyYy9zaGFyZWQvYmFzZS1maWxlc3lzdGVtLmMKLUBAIC01Myw3ICs1Myw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7CitAQCAtNTQsNyArNTQsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgewogICAgICAgICAgICAgICAgICByZXR1cm4gbG9nX2Vycm9yX2Vycm5vKGVycm5vLCAiRmFpbGVkIHRvIG9wZW4gcm9vdCBmaWxlIHN5c3RlbTogJW0iKTsKICAKICAgICAgICAgIGZvciAoaSA9IDA7IGkgPCBFTEVNRU5UU09GKHRhYmxlKTsgaSArKykgewpAQCAtNzYsNyArNzcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogIAogICAgICAgICAgICAgICAgICBpZiAodGFibGVbaV0udGFyZ2V0KSB7Ci1AQCAtNjEsNyArNjEsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgeworQEAgLTYyLDcgKzYyLDcgQEAgaW50IGJhc2VfZmlsZXN5c3RlbV9jcmVhdGUoY29uc3QgY2hhciAqcm9vdCwgdWlkX3QgdWlkLCBnaWRfdCBnaWQpIHsKICAKICAgICAgICAgICAgICAgICAgICAgICAgICAvKiBjaGVjayBpZiBvbmUgb2YgdGhlIHRhcmdldHMgZXhpc3RzICovCiAgICAgICAgICAgICAgICAgICAgICAgICAgTlVMU1RSX0ZPUkVBQ0gocywgdGFibGVbaV0udGFyZ2V0KSB7CkBAIC04NSw3ICs4Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogIAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLyogY2hlY2sgaWYgYSBzcGVjaWZpYyBmaWxlIGV4aXN0cyBhdCB0aGUgdGFyZ2V0IHBhdGggKi8KLUBAIC03Miw3ICs3Miw3IEBAIGludCBiYXNlX2ZpbGVzeXN0ZW1fY3JlYXRlKGNvbnN0IGNoYXIgKnJvb3QsIHVpZF90IHVpZCwgZ2lkX3QgZ2lkKSB7CitAQCAtNzMsNyArNzMsNyBAQCBpbnQgYmFzZV9maWxlc3lzdGVtX2NyZWF0ZShjb25zdCBjaGFyICpyb290LCB1aWRfdCB1aWQsIGdpZF90IGdpZCkgewogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiAoIXApCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIGxvZ19vb20oKTsKICAKQEAgLTk0LDYgKzk1LDMgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIH0KICAKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNi1EZWZpbmUtZ2xpYmMtY29tcGF0aWJsZS1iYXNlbmFtZS1mb3Itbm9uLWdsaWJjLXN5c3RlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNi1EZWZpbmUtZ2xpYmMtY29tcGF0aWJsZS1iYXNlbmFtZS1mb3Itbm9uLWdsaWJjLXN5c3RlLnBhdGNoCmluZGV4IGQ1NTY1NjkuLjE5YTNlZWYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTYtRGVmaW5lLWdsaWJjLWNvbXBhdGlibGUtYmFzZW5hbWUtZm9yLW5vbi1nbGliYy1zeXN0ZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE2LURlZmluZS1nbGliYy1jb21wYXRpYmxlLWJhc2VuYW1lLWZvci1ub24tZ2xpYmMtc3lzdGUucGF0Y2gKQEAgLTEsOCArMSw3IEBACi1Gcm9tIGFmNzZjOTczZTQxOTI5MzYwYTZlMDIxZjJmZjlhN2ZjMWQ3OTk0ZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGVjMzM1ZWYzYmI5MDNhN2VhZjA1NDEwM2NjNTE0MTFlNzFlNjQ0OGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogU3VuLCAyNyBNYXkgMjAxOCAwODozNjo0NCAtMDcwMAotU3ViamVjdDogW1BBVENIIDE2LzI0XSBEZWZpbmUgZ2xpYmMgY29tcGF0aWJsZSBiYXNlbmFtZSgpIGZvciBub24tZ2xpYmMKLSBzeXN0ZW1zCitTdWJqZWN0OiBbUEFUQ0hdIERlZmluZSBnbGliYyBjb21wYXRpYmxlIGJhc2VuYW1lKCkgZm9yIG5vbi1nbGliYyBzeXN0ZW1zCiAKIEZpeGVzIGJ1aWxkcyB3aXRoIG11c2wsIGV2ZW4gdGhvdWdoIHN5c3RlbWQgaXMgYWRhbWFudCBhYm91dAogdXNpbmcgbm9uLXBvc2l4IGJhc2VuYW1lIGltcGxlbWVudGF0aW9uLCB3ZSBoYXZlIGEgd2F5IG91dApAQCAtMTAsMjUgKzksMjQgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKwogLS0tCi0gc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisgc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMgYi9zcmMvbWFjaGluZS9tYWNoaW5lLWRidXMuYwotaW5kZXggN2E1NThkZi4uZWNhN2Q0YiAxMDA2NDQKK2luZGV4IDc2MGNjYjQ0NWNkMC4uMGRmMjBmMzg2NGIzIDEwMDY0NAogLS0tIGEvc3JjL21hY2hpbmUvbWFjaGluZS1kYnVzLmMKICsrKyBiL3NyYy9tYWNoaW5lL21hY2hpbmUtZGJ1cy5jCi1AQCAtMTEsNiArMTEsMTAgQEAKK0BAIC0xMSw2ICsxMSwxMSBAQAogICNpbmNsdWRlIDxsaWJnZW4uaD4KICAjdW5kZWYgYmFzZW5hbWUKICAKICsjaWYgIWRlZmluZWQoX19HTElCQ19fKQorKyNpbmNsdWRlIDxzdHJpbmcuaD4KICsjZGVmaW5lIGJhc2VuYW1lKHNyYykgKHN0cnJjaHIoc3JjLCcvJykgPyBzdHJyY2hyKHNyYywnLycpKzEgOiBzcmMpCiArI2VuZGlmCiArCiAgI2luY2x1ZGUgImFsbG9jLXV0aWwuaCIKICAjaW5jbHVkZSAiYnVzLWNvbW1vbi1lcnJvcnMuaCIKICAjaW5jbHVkZSAiYnVzLWludGVybmFsLmgiCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctRG8tbm90LWRpc2FibGUtYnVmZmVyaW5nLXdoZW4td3JpdGluZy10by1vb21fc2NvcmVfYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTctRG8tbm90LWRpc2FibGUtYnVmZmVyaW5nLXdoZW4td3JpdGluZy10by1vb21fc2NvcmVfYS5wYXRjaAppbmRleCAyNGUyNGU4Li4xOTM0Yjc4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE3LURvLW5vdC1kaXNhYmxlLWJ1ZmZlcmluZy13aGVuLXdyaXRpbmctdG8tb29tX3Njb3JlX2EucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxNy1Eby1ub3QtZGlzYWJsZS1idWZmZXJpbmctd2hlbi13cml0aW5nLXRvLW9vbV9zY29yZV9hLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBjN2E0ZWZiOGJjY2I1MmUxNzE0YzE1MTkyOWMyM2UxMmJkZTU5YjgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiYjI4YTljODcwYmI0N2RjZGIxY2NlYmFhOGUzYTVhODY3MzBhMjQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogV2VkLCA0IEp1bCAyMDE4IDE1OjAwOjQ0ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTcvMjRdIERvIG5vdCBkaXNhYmxlIGJ1ZmZlcmluZyB3aGVuIHdyaXRpbmcgdG8gb29tX3Njb3JlX2FkagorU3ViamVjdDogW1BBVENIXSBEbyBub3QgZGlzYWJsZSBidWZmZXJpbmcgd2hlbiB3cml0aW5nIHRvIG9vbV9zY29yZV9hZGoKIAogT24gbXVzbCwgZGlzYWJsaW5nIGJ1ZmZlcmluZyB3aGVuIHdyaXRpbmcgdG8gb29tX3Njb3JlX2FkaiB3aWxsCiBjYXVzZSB0aGUgZm9sbG93aW5nIGVycm9yLgpAQCAtMTksMTUgKzE5LDE2IEBACiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBbcmViYXNlZCBmb3Igc3lzdGVtZCAyNDNdCiBTaWduZWQtb2ZmLWJ5OiBTY290dCBNdXJyYXkgPHNjb3R0Lm11cnJheUBrb25zdWxrby5jb20+CisKIC0tLQogIHNyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYyBiL3NyYy9iYXNpYy9wcm9jZXNzLXV0aWwuYwotaW5kZXggYjFjMDhmY2FkZS4uMGE3YTFmN2Q4OSAxMDA2NDQKK2luZGV4IDY0NGY1M2FlZTAwNS4uYWNhZjEzNTkxMzk2IDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL3Byb2Nlc3MtdXRpbC5jCiArKysgYi9zcmMvYmFzaWMvcHJvY2Vzcy11dGlsLmMKLUBAIC0xNDc0LDcgKzE0NzQsNyBAQCBpbnQgc2V0X29vbV9zY29yZV9hZGp1c3QoaW50IHZhbHVlKSB7CitAQCAtMTUwMCw3ICsxNTAwLDcgQEAgaW50IHNldF9vb21fc2NvcmVfYWRqdXN0KGludCB2YWx1ZSkgewogICAgICAgICAgc3ByaW50Zih0LCAiJWkiLCB2YWx1ZSk7CiAgCiAgICAgICAgICByZXR1cm4gd3JpdGVfc3RyaW5nX2ZpbGUoIi9wcm9jL3NlbGYvb29tX3Njb3JlX2FkaiIsIHQsCkBAIC0zNSw0ICszNiw0IEBACiArICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgV1JJVEVfU1RSSU5HX0ZJTEVfVkVSSUZZX09OX0ZBSUxVUkUpOwogIH0KICAKLSBzdGF0aWMgY29uc3QgY2hhciAqY29uc3QgaW9wcmlvX2NsYXNzX3RhYmxlW10gPSB7CisgaW50IHBpZGZkX2dldF9waWQoaW50IGZkLCBwaWRfdCAqcmV0KSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE4LWRpc3Rpbmd1aXNoLVhTSS1jb21wbGlhbnQtc3RyZXJyb3Jfci1mcm9tLUdOVS1zcGVjaWYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE4LWRpc3Rpbmd1aXNoLVhTSS1jb21wbGlhbnQtc3RyZXJyb3Jfci1mcm9tLUdOVS1zcGVjaWYucGF0Y2gKaW5kZXggNTkwMTc3Mi4uODRhNDkyZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAxOC1kaXN0aW5ndWlzaC1YU0ktY29tcGxpYW50LXN0cmVycm9yX3ItZnJvbS1HTlUtc3BlY2lmLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTgtZGlzdGluZ3Vpc2gtWFNJLWNvbXBsaWFudC1zdHJlcnJvcl9yLWZyb20tR05VLXNwZWNpZi5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gZmZmYjI4MTA2MTFiNGEyNmY1YzZjMDk1ODA5M2I1YjNiN2Q0Y2Q5OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDkzODcwNTQ1NGNmNDZjZmU4ZGVhYzhjZTQ1N2Q1ZDI0MzJjYmVhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KIERhdGU6IFR1ZSwgMTAgSnVsIDIwMTggMTU6NDA6MTcgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxOC8yNF0gZGlzdGluZ3Vpc2ggWFNJLWNvbXBsaWFudCBzdHJlcnJvcl9yIGZyb20gR05VLXNwZWNpZmkKK1N1YmplY3Q6IFtQQVRDSF0gZGlzdGluZ3Vpc2ggWFNJLWNvbXBsaWFudCBzdHJlcnJvcl9yIGZyb20gR05VLXNwZWNpZmkKICBzdHJlcnJvcl9yCiAKIFhTSS1jb21wbGlhbnQgc3RyZXJyb3JfciBhbmQgR05VLXNwZWNpZmkgc3RyZXJyb3JfciBhcmUgZGlmZmVyZW50LgpAQCAtMTgsMTYgKzE4LDE3IEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKwogLS0tCiAgc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMgICAgICAgIHwgNSArKysrKwogIHNyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYyB8IDUgKysrKysKICAyIGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jIGIvc3JjL2pvdXJuYWwvam91cm5hbC1zZW5kLmMKLWluZGV4IDNmZWE5MTIuLjRmMWU1OTIgMTAwNjQ0CitpbmRleCA0M2VkNzU2YmRhNTMuLjIyN2VhNjRkYmI0OCAxMDA2NDQKIC0tLSBhL3NyYy9qb3VybmFsL2pvdXJuYWwtc2VuZC5jCiArKysgYi9zcmMvam91cm5hbC9qb3VybmFsLXNlbmQuYwotQEAgLTMzNyw3ICszMzcsMTIgQEAgc3RhdGljIGludCBmaWxsX2lvdmVjX3BlcnJvcl9hbmRfc2VuZChjb25zdCBjaGFyICptZXNzYWdlLCBpbnQgc2tpcCwgc3RydWN0IGlvdmUKK0BAIC0zMzYsNyArMzM2LDEyIEBAIHN0YXRpYyBpbnQgZmlsbF9pb3ZlY19wZXJyb3JfYW5kX3NlbmQoY29uc3QgY2hhciAqbWVzc2FnZSwgaW50IHNraXAsIHN0cnVjdCBpb3ZlCiAgICAgICAgICAgICAgICAgIGNoYXIqIGo7CiAgCiAgICAgICAgICAgICAgICAgIGVycm5vID0gMDsKQEAgLTQxLDcgKzQyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFyIGVycm9yW1NUUkxFTigiRVJSTk89IikgKyBERUNJTUFMX1NUUl9NQVgoaW50KSArIDFdOwogIAogZGlmZiAtLWdpdCBhL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYwotaW5kZXggZGM5NTIzNy4uYmRkYTMwZiAxMDA2NDQKK2luZGV4IGY3NjBmMGZkZDIxYy4uMjhhNTE1OWM0NDgwIDEwMDY0NAogLS0tIGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jCiArKysgYi9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMKIEBAIC0zNzksNyArMzc5LDEyIEBAIHN0YXRpYyB2b2lkIGJ1c19lcnJvcl9zdHJlcnJvcihzZF9idXNfZXJyb3IgKmUsIGludCBlcnJvcikgewpAQCAtNTcsNiArNTgsMyBAQAogICAgICAgICAgICAgICAgICBpZiAoZXJybm8gPT0gRVJBTkdFIHx8IHN0cmxlbih4KSA+PSBrIC0gMSkgewogICAgICAgICAgICAgICAgICAgICAgICAgIGZyZWUobSk7CiAgICAgICAgICAgICAgICAgICAgICAgICAgayAqPSAyOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDE5LUhpZGUtX19zdGFydF9CVVNfRVJST1JfTUFQLWFuZC1fX3N0b3BfQlVTX0VSUk9SX01BUC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTktSGlkZS1fX3N0YXJ0X0JVU19FUlJPUl9NQVAtYW5kLV9fc3RvcF9CVVNfRVJST1JfTUFQLnBhdGNoCmluZGV4IDM1Y2M2NmYuLjNiODA2NDYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTktSGlkZS1fX3N0YXJ0X0JVU19FUlJPUl9NQVAtYW5kLV9fc3RvcF9CVVNfRVJST1JfTUFQLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMTktSGlkZS1fX3N0YXJ0X0JVU19FUlJPUl9NQVAtYW5kLV9fc3RvcF9CVVNfRVJST1JfTUFQLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSA5NjlhYjllNjgyNDlmZDM4M2Y0YjUxM2IxYzkzMDZiZGFjNGFlOWIyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxYzRjNzNhN2NjMGZiNTllYjY4YWI3MDY5OWY3ZjUxYWY1YzE2M2IyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyNSBGZWIgMjAxOSAxNToxODowMCArMDgwMAotU3ViamVjdDogW1BBVENIIDE5LzI0XSBIaWRlIF9fc3RhcnRfQlVTX0VSUk9SX01BUCBhbmQgX19zdG9wX0JVU19FUlJPUl9NQVAKK1N1YmplY3Q6IFtQQVRDSF0gSGlkZSBfX3N0YXJ0X0JVU19FUlJPUl9NQVAgYW5kIF9fc3RvcF9CVVNfRVJST1JfTUFQCiAKIGZvciBjdXJyZW50bHkgdW5rbm93biByZWFzb25zIHRoZXkgZ2V0IGV4cG9ydGVkIHRvIHRoZSBzaGFyZWQgbGlicmllcwogZXZlbiB3aXRob3V0IGJlaW5nIGxpc3RlZCBpbiB0aGUgc3ltIGZpbGUKQEAgLTExLDEyICsxMSwxMyBAQAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIFtSZWJhc2VkIGZvciB2MjQxXQogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBzcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMgfCA0ICsrLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jIGIvc3JjL2xpYnN5c3RlbWQvc2QtYnVzL2J1cy1lcnJvci5jCi1pbmRleCBiZGRhMzBmLi5lMjE4NTNjIDEwMDY0NAoraW5kZXggMjhhNTE1OWM0NDgwLi45NjJhNGRlMTBjNTYgMTAwNjQ0CiAtLS0gYS9zcmMvbGlic3lzdGVtZC9zZC1idXMvYnVzLWVycm9yLmMKICsrKyBiL3NyYy9saWJzeXN0ZW1kL3NkLWJ1cy9idXMtZXJyb3IuYwogQEAgLTU0LDggKzU0LDggQEAgQlVTX0VSUk9SX01BUF9FTEZfUkVHSVNURVIgY29uc3Qgc2RfYnVzX2Vycm9yX21hcCBidXNfc3RhbmRhcmRfZXJyb3JzW10gPSB7CkBAIC0zMCw2ICszMSwzIEBACiAgCiAgLyogQWRkaXRpb25hbCBtYXBzIHJlZ2lzdGVyZWQgd2l0aCBzZF9idXNfZXJyb3JfYWRkX21hcCgpIGFyZSBpbiB0aGlzCiAgICogTlVMTCB0ZXJtaW5hdGVkIGFycmF5ICovCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjAtbWlzc2luZ190eXBlLmgtYWRkLV9fY29tcGFyX2RfZm5fdC1kZWZpbml0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMC1taXNzaW5nX3R5cGUuaC1hZGQtX19jb21wYXJfZF9mbl90LWRlZmluaXRpb24ucGF0Y2gKaW5kZXggNzUzZDUxMS4uZGI0MDQxYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMC1taXNzaW5nX3R5cGUuaC1hZGQtX19jb21wYXJfZF9mbl90LWRlZmluaXRpb24ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMC1taXNzaW5nX3R5cGUuaC1hZGQtX19jb21wYXJfZF9mbl90LWRlZmluaXRpb24ucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDc1YzA2ZTNlMmE0NzYwYjM2ZmZmZDk1Y2RmNTUzNWI4YWQ3M2M0ODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDgzMDNkNDljYWJhZjNhYjg4OTBiYTFkMjY2OTcyYzcyMWRmZTZlZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBNb24sIDI1IEZlYiAyMDE5IDE1OjI3OjU0ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMjAvMjRdIG1pc3NpbmdfdHlwZS5oOiBhZGQgX19jb21wYXJfZF9mbl90IGRlZmluaXRpb24KK1N1YmplY3Q6IFtQQVRDSF0gbWlzc2luZ190eXBlLmg6IGFkZCBfX2NvbXBhcl9kX2ZuX3QgZGVmaW5pdGlvbgogCiBGaXggdGhlIGZvbGxvd2luZyBjb21waWxlIGZhaWx1cmU6CiBzcmMvYmFzaWMvdXRpbC5oOjcxOjE4OiBlcnJvcjogdW5rbm93biB0eXBlIG5hbWUgJ19fY29tcGFyX2RfZm5fdCc7IGRpZCB5b3UgbWVhbiAnX19jb21wYXJfZm5fdCc/CkBAIC05LDEyICs5LDEzIEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKwogLS0tCiAgc3JjL2Jhc2ljL21pc3NpbmdfdHlwZS5oIHwgMSArCiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZ190eXBlLmggYi9zcmMvYmFzaWMvbWlzc2luZ190eXBlLmgKLWluZGV4IDdkN2MxZTQuLjg1OTAyYWIgMTAwNjQ0CitpbmRleCAyMzYwMmViYmQ1MzMuLjkxN2QzMTRhODFiZiAxMDA2NDQKIC0tLSBhL3NyYy9iYXNpYy9taXNzaW5nX3R5cGUuaAogKysrIGIvc3JjL2Jhc2ljL21pc3NpbmdfdHlwZS5oCiBAQCAtMTMsNiArMTMsNyBAQApAQCAtMjUsNiArMjYsMyBAQAogICNlbmRpZgogIAogICNpZm5kZWYgX19DT01QQVJfRk5fVAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIxLWF2b2lkLXJlZGVmaW5pdGlvbi1vZi1wcmN0bF9tbV9tYXAtc3RydWN0dXJlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyMS1hdm9pZC1yZWRlZmluaXRpb24tb2YtcHJjdGxfbW1fbWFwLXN0cnVjdHVyZS5wYXRjaAppbmRleCBjZGRkZjgzLi43ZGFjYzM2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZC8wMDIxLWF2b2lkLXJlZGVmaW5pdGlvbi1vZi1wcmN0bF9tbV9tYXAtc3RydWN0dXJlLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjEtYXZvaWQtcmVkZWZpbml0aW9uLW9mLXByY3RsX21tX21hcC1zdHJ1Y3R1cmUucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDNmYmY2MWQ1NGI4MmZjOWJmMjFkODAzOWJmZDg5ZGM5ZWZjNWJiY2QgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDYzNjRmZjU1MzQ2NzhjMTU4YTdmYjhkNGU1MGQwYTZjZTcyYzFhZDggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBNb24sIDI1IEZlYiAyMDE5IDE1OjQ0OjU0ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMjEvMjRdIGF2b2lkIHJlZGVmaW5pdGlvbiBvZiBwcmN0bF9tbV9tYXAgc3RydWN0dXJlCitTdWJqZWN0OiBbUEFUQ0hdIGF2b2lkIHJlZGVmaW5pdGlvbiBvZiBwcmN0bF9tbV9tYXAgc3RydWN0dXJlCiAKIEZpeCB0aGUgZm9sbG93aW5nIGNvbXBpbGUgZmFpbHVyZToKIGVycm9yOiByZWRlZmluaXRpb24gb2YgJ3N0cnVjdCBwcmN0bF9tbV9tYXAnCkBAIC05LDEyICs5LDEzIEBACiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW211c2wgc3BlY2lmaWNdCiAKIFNpZ25lZC1vZmYtYnk6IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KKwogLS0tCiAgc3JjL2Jhc2ljL21pc3NpbmdfcHJjdGwuaCB8IDIgKysKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zcmMvYmFzaWMvbWlzc2luZ19wcmN0bC5oIGIvc3JjL2Jhc2ljL21pc3NpbmdfcHJjdGwuaAotaW5kZXggZjgwY2QxNy4uNDdlNDg5MyAxMDA2NDQKK2luZGV4IGY4MGNkMTdmMzQ2Yi4uNDdlNDg5MzU0MDUzIDEwMDY0NAogLS0tIGEvc3JjL2Jhc2ljL21pc3NpbmdfcHJjdGwuaAogKysrIGIvc3JjL2Jhc2ljL21pc3NpbmdfcHJjdGwuaAogQEAgLTEsNyArMSw5IEBACkBAIC0yNyw2ICsyOCwzIEBACiAgCiAgLyogNTgzMTkwNTdiNzg0NzY2N2YwYzk1ODViOWRlMGU4OTMyYjBmZGIwOCAoNC4zKSAqLwogICNpZm5kZWYgUFJfQ0FQX0FNQklFTlQKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdGVtZC9zeXN0ZW1kLzAwMjQtdGVzdC1qc29uLmMtZGVmaW5lLU1fUElsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNC10ZXN0LWpzb24uYy1kZWZpbmUtTV9QSWwucGF0Y2gKaW5kZXggMGU1NjI5ZC4uODBiZWFkYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNC10ZXN0LWpzb24uYy1kZWZpbmUtTV9QSWwucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWQvMDAyNC10ZXN0LWpzb24uYy1kZWZpbmUtTV9QSWwucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDkwMjQxMmMyNzFlMGM1ZDljYjkzYjEwZWMwZmI1YjExOWIzOTM0NzQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGEwNWNjNWZiM2RjMGU1MTY4MmM0MDE5NjI4NWNkZGEzNGVjOTA3ODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CiBEYXRlOiBNb24sIDI1IEZlYiAyMDE5IDE2OjUzOjA2ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMjQvMjRdIHRlc3QtanNvbi5jOiBkZWZpbmUgTV9QSWwKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdC1qc29uLmM6IGRlZmluZSBNX1BJbAogCiBGaXggdGhlIGZvbGxvd2luZyBjb21waWxlIGZhaWx1cmU6CiBzcmMvdGVzdC90ZXN0LWpzb24uYzozMDU6NTA6IGVycm9yOiAnTV9QSWwnIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKTsgZGlkIHlvdSBtZWFuICdNX1BJJz8KQEAgLTksMTUgKzksMTYgQEAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbbXVzbCBzcGVjaWZpY10KIAogU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBzcmMvdGVzdC90ZXN0LWpzb24uYyB8IDQgKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NyYy90ZXN0L3Rlc3QtanNvbi5jIGIvc3JjL3Rlc3QvdGVzdC1qc29uLmMKLWluZGV4IDliOGEyYTkuLmVmYzc0NmMgMTAwNjQ0CitpbmRleCBhNjYxMzA0M2I5MjQuLmNhODIzZWE3OWYwNSAxMDA2NDQKIC0tLSBhL3NyYy90ZXN0L3Rlc3QtanNvbi5jCiArKysgYi9zcmMvdGVzdC90ZXN0LWpzb24uYwotQEAgLTExLDYgKzExLDEwIEBACitAQCAtMTIsNiArMTIsMTAgQEAKICAjaW5jbHVkZSAidGVzdHMuaCIKICAjaW5jbHVkZSAidXRpbC5oIgogIApAQCAtMjgsNiArMjksMyBAQAogIHN0YXRpYyB2b2lkIHRlc3RfdG9rZW5pemVyKGNvbnN0IGNoYXIgKmRhdGEsIC4uLikgewogICAgICAgICAgdW5zaWduZWQgbGluZSA9IDAsIGNvbHVtbiA9IDA7CiAgICAgICAgICB2b2lkICpzdGF0ZSA9IE5VTEw7Ci0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yNDMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yNDMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzMWQwYjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjQzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjgzICswLDAgQEAKLXJlcXVpcmUgc3lzdGVtZC5pbmMKLQotUFJPVklERVMgPSAidWRldiIKLQotUEUgPSAiMSIKLQotREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgZ3BlcmYtbmF0aXZlIGxpYmNhcCB1dGlsLWxpbnV4IgotCi1TRUNUSU9OID0gImJhc2Uvc2hlbGwiCi0KLWluaGVyaXQgdXNlcmFkZCBwa2djb25maWcgbWVzb24gcGVybG5hdGl2ZSB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHFlbXUgc3lzdGVtZCBnZXR0ZXh0IGJhc2gtY29tcGxldGlvbiBtYW5wYWdlcyBmZWF0dXJlc19jaGVjawotCi0jIEFzIHRoaXMgcmVjaXBlIGJ1aWxkcyB1ZGV2LCByZXNwZWN0IHN5c3RlbWQgYmVpbmcgaW4gRElTVFJPX0ZFQVRVUkVTIHNvCi0jIHRoYXQgd2UgZG9uJ3QgYnVpbGQgYm90aCB1ZGV2IGFuZCBzeXN0ZW1kIGluIHdvcmxkIGJ1aWxkcy4KLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vdG91Y2hzY3JlZW4ucnVsZXMgXAotICAgICAgICAgICBmaWxlOi8vMDAtY3JlYXRlLXZvbGF0aWxlLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi11c2UtbG5yLXdyYXBwZXItaW5zdGVhZC1vZi1sb29raW5nLWZvci1yZWxhdGl2ZS1vcHRpLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtaW1wbG1lbnQtc3lzdGVtZC1zeXN2LWluc3RhbGwtZm9yLU9FLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtcnVsZXMtd2hpdGVsaXN0LWhkLWRldmljZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1ydWxlcy13YXRjaC1tZXRhZGF0YS1jaGFuZ2VzLWluLWlkZS1kZXZpY2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdW5pdC1maWxlLmMtY29uc2lkZXItc3ltbGluay1vbi1maWxlc3lzdGVtcy1saWtlLU5GUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly85OS1kZWZhdWx0LnByZXNldCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXBzdG9yZS1maXgtdXNlLWFmdGVyLWZyZWUucGF0Y2ggXAotICAgICAgICAgICAiCi0KLSMgcGF0Y2hlcyBuZWVkZWQgYnkgbXVzbAotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiAke1NSQ19VUklfTVVTTH0iCi1TUkNfVVJJX01VU0wgPSAiXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDItZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDMtbWlzc2luZ190eXBlLmgtYWRkLV9fY29tcGFyZV9mbl90LWFuZC1jb21wYXJpc29uX2ZuXy5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAwNC1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAwNS1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA2LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA3LWRvbi10LWZhaWwtaWYtR0xPQl9CUkFDRS1hbmQtR0xPQl9BTFRESVJGVU5DLWlzLW5vdC5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAwOC1hZGQtbWlzc2luZy1GVFdfLW1hY3Jvcy1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAxMC1maXgtbWlzc2luZy1vZi1fX3JlZ2lzdGVyX2F0Zm9yay1mb3Itbm9uLWdsaWJjLWJ1aWxkLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDExLVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAxNC10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDE1LWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAxNi1EZWZpbmUtZ2xpYmMtY29tcGF0aWJsZS1iYXNlbmFtZS1mb3Itbm9uLWdsaWJjLXN5c3RlLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDE3LURvLW5vdC1kaXNhYmxlLWJ1ZmZlcmluZy13aGVuLXdyaXRpbmctdG8tb29tX3Njb3JlX2EucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMTgtZGlzdGluZ3Vpc2gtWFNJLWNvbXBsaWFudC1zdHJlcnJvcl9yLWZyb20tR05VLXNwZWNpZi5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAxOS1IaWRlLV9fc3RhcnRfQlVTX0VSUk9SX01BUC1hbmQtX19zdG9wX0JVU19FUlJPUl9NQVAucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMjAtbWlzc2luZ190eXBlLmgtYWRkLV9fY29tcGFyX2RfZm5fdC1kZWZpbml0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDIxLWF2b2lkLXJlZGVmaW5pdGlvbi1vZi1wcmN0bF9tbV9tYXAtc3RydWN0dXJlLnBhdGNoIFwKLSAgICAgICAgICAgICAgIGZpbGU6Ly8wMDI0LXRlc3QtanNvbi5jLWRlZmluZS1NX1BJbC5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAwMS1kby1ub3QtZGlzYWJsZS1idWZmZXItaW4td3JpdGluZy1maWxlcy5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAwMi1zcmMtbG9naW4tYnJpZ2h0bmVzcy5jLWluY2x1ZGUtc3lzLXdhaXQuaC5wYXRjaCBcCi0gICAgICAgICAgICAgICBmaWxlOi8vMDAwMy1zcmMtYmFzaWMtY29weS5jLWluY2x1ZGUtc2lnbmFsLmgucGF0Y2ggXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDQtc3JjLXNoYXJlZC1jcHUtc2V0LXV0aWwuaC1hZGQtX19jcHVfbWFzay1kZWZpbml0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgICAgICIKLQotUEFNX1BMVUdJTlMgPSAiIFwKLSAgICBwYW0tcGx1Z2luLXVuaXggXAotICAgIHBhbS1wbHVnaW4tbG9naW51aWQgXAotICAgIHBhbS1wbHVnaW4ta2V5aW5pdCBcCi0iCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIgXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2VmaSBsZGNvbmZpZyBwYW0gc2VsaW51eCB1c3JtZXJnZSBwb2xraXQnLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2lmaScsICdyZmtpbGwnLCAnJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4a2Jjb21tb24nLCAnJywgZCl9IFwKLSAgICBhY2wgXAotICAgIGJhY2tsaWdodCBcCi0gICAgYmluZm10IFwKLSAgICBnc2hhZG93IFwKLSAgICBoaWJlcm5hdGUgXAotICAgIGhvc3RuYW1lZCBcCi0gICAgaWRuIFwKLSAgICBpbWEgXAotICAgIGttb2QgXAotICAgIGxvY2FsZWQgXAotICAgIGxvZ2luZCBcCi0gICAgbWFjaGluZWQgXAotICAgIG15aG9zdG5hbWUgXAotICAgIG5ldHdvcmtkIFwKLSAgICBuc3MgXAotICAgIG5zcy1teW1hY2hpbmVzIFwKLSAgICBuc3MtcmVzb2x2ZSBcCi0gICAgcXVvdGFjaGVjayBcCi0gICAgcmFuZG9tc2VlZCBcCi0gICAgcmVzb2x2ZWQgXAotICAgIHNldC10aW1lLWVwb2NoIFwKLSAgICBzbWFjayBcCi0gICAgc3lzdXNlcnMgXAotICAgIHRpbWVkYXRlZCBcCi0gICAgdGltZXN5bmNkIFwKLSAgICB1dG1wIFwKLSAgICB2Y29uc29sZSBcCi0gICAgeHogXAotIgotCi1QQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAiIFwKLSAgICBnc2hhZG93IFwKLSAgICBpZG4gXAotICAgIGxvY2FsZWQgXAotICAgIG15aG9zdG5hbWUgXAotICAgIG5zcyBcCi0gICAgbnNzLW15bWFjaGluZXMgXAotICAgIG5zcy1yZXNvbHZlIFwKLSAgICByZXNvbHZlZCBcCi0gICAgc21hY2sgXAotICAgIHN5c3VzZXJzIFwKLSAgICB1dG1wIFwKLSIKLQotIyBVc2UgdGhlIHVwc3RyZWFtIHN5c3RlbWQgc2VyaWFsLWdldHR5QC5zZXJ2aWNlIGFuZCByZWx5IG9uCi0jIHN5c3RlbWQtZ2V0dHktZ2VuZXJhdG9yIGluc3RlYWQgb2YgdXNpbmcgdGhlIE9FLWNvcmUgc3BlY2lmaWMKLSMgc3lzdGVtZC1zZXJpYWxnZXR0eS5iYiAtIG5vdCBlbmFibGVkIGJ5IGRlZmF1bHQuCi1QQUNLQUdFQ09ORklHW3NlcmlhbC1nZXR0eS1nZW5lcmF0b3JdID0gIiIKLQotUEFDS0FHRUNPTkZJR1thY2xdID0gIi1EYWNsPXRydWUsLURhY2w9ZmFsc2UsYWNsIgotUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLURhdWRpdD10cnVlLC1EYXVkaXQ9ZmFsc2UsYXVkaXQiCi1QQUNLQUdFQ09ORklHW2JhY2tsaWdodF0gPSAiLURiYWNrbGlnaHQ9dHJ1ZSwtRGJhY2tsaWdodD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbYmluZm10XSA9ICItRGJpbmZtdD10cnVlLC1EYmluZm10PWZhbHNlIgotUEFDS0FHRUNPTkZJR1tiemlwMl0gPSAiLURiemlwMj10cnVlLC1EYnppcDI9ZmFsc2UsYnppcDIiCi1QQUNLQUdFQ09ORklHW2Nncm91cHYyXSA9ICItRGRlZmF1bHQtaGllcmFyY2h5PXVuaWZpZWQsLURkZWZhdWx0LWhpZXJhcmNoeT1oeWJyaWQiCi1QQUNLQUdFQ09ORklHW2NvcmVkdW1wXSA9ICItRGNvcmVkdW1wPXRydWUsLURjb3JlZHVtcD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbY3J5cHRzZXR1cF0gPSAiLURsaWJjcnlwdHNldHVwPXRydWUsLURsaWJjcnlwdHNldHVwPWZhbHNlLGNyeXB0c2V0dXAiCi1QQUNLQUdFQ09ORklHW2RidXNdID0gIi1EZGJ1cz10cnVlLC1EZGJ1cz1mYWxzZSxkYnVzIgotUEFDS0FHRUNPTkZJR1tlZmldID0gIi1EZWZpPXRydWUsLURlZmk9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2dudS1lZmldID0gIi1EZ251LWVmaT10cnVlIC1EZWZpLWxpYmRpcj0ke1NUQUdJTkdfTElCRElSfSAtRGVmaS1pbmNsdWRlZGlyPSR7U1RBR0lOR19JTkNESVJ9L2VmaSwtRGdudS1lZmk9ZmFsc2UsZ251LWVmaSIKLVBBQ0tBR0VDT05GSUdbZWxmdXRpbHNdID0gIi1EZWxmdXRpbHM9dHJ1ZSwtRGVsZnV0aWxzPWZhbHNlLGVsZnV0aWxzIgotUEFDS0FHRUNPTkZJR1tmaXJzdGJvb3RdID0gIi1EZmlyc3Rib290PXRydWUsLURmaXJzdGJvb3Q9ZmFsc2UiCi0jIFNpZ24gdGhlIGpvdXJuYWwgZm9yIGFudGktdGFtcGVyaW5nCi1QQUNLQUdFQ09ORklHW2djcnlwdF0gPSAiLURnY3J5cHQ9dHJ1ZSwtRGdjcnlwdD1mYWxzZSxsaWJnY3J5cHQiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLURnbnV0bHM9dHJ1ZSwtRGdudXRscz1mYWxzZSxnbnV0bHMiCi1QQUNLQUdFQ09ORklHW2dzaGFkb3ddID0gIi1EZ3NoYWRvdz10cnVlLC1EZ3NoYWRvdz1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbaGliZXJuYXRlXSA9ICItRGhpYmVybmF0ZT10cnVlLC1EaGliZXJuYXRlPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tob3N0bmFtZWRdID0gIi1EaG9zdG5hbWVkPXRydWUsLURob3N0bmFtZWQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2lkbl0gPSAiLURpZG49dHJ1ZSwtRGlkbj1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbaW1hXSA9ICItRGltYT10cnVlLC1EaW1hPWZhbHNlIgotIyBpbXBvcnRkIHJlcXVpcmVzIGN1cmwveHovemxpYi9iemlwMi9nY3J5cHQKLVBBQ0tBR0VDT05GSUdbaW1wb3J0ZF0gPSAiLURpbXBvcnRkPXRydWUsLURpbXBvcnRkPWZhbHNlIgotIyBVcGRhdGUgTkFUIGZpcmV3YWxsIHJ1bGVzCi1QQUNLQUdFQ09ORklHW2lwdGNdID0gIi1EbGliaXB0Yz10cnVlLC1EbGliaXB0Yz1mYWxzZSxpcHRhYmxlcyIKLVBBQ0tBR0VDT05GSUdbam91cm5hbC11cGxvYWRdID0gIi1EbGliY3VybD10cnVlLC1EbGliY3VybD1mYWxzZSxjdXJsIgotUEFDS0FHRUNPTkZJR1trbW9kXSA9ICItRGttb2Q9dHJ1ZSwtRGttb2Q9ZmFsc2Usa21vZCIKLVBBQ0tBR0VDT05GSUdbbGRjb25maWddID0gIi1EbGRjb25maWc9dHJ1ZSwtRGxkY29uZmlnPWZhbHNlLCxsZGNvbmZpZyIKLVBBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItRGxpYmlkbj10cnVlLC1EbGliaWRuPWZhbHNlLGxpYmlkbiIKLVBBQ0tBR0VDT05GSUdbbG9jYWxlZF0gPSAiLURsb2NhbGVkPXRydWUsLURsb2NhbGVkPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tsb2dpbmRdID0gIi1EbG9naW5kPXRydWUsLURsb2dpbmQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2x6NF0gPSAiLURsejQ9dHJ1ZSwtRGx6ND1mYWxzZSxsejQiCi1QQUNLQUdFQ09ORklHW21hY2hpbmVkXSA9ICItRG1hY2hpbmVkPXRydWUsLURtYWNoaW5lZD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi1EbWFuPXRydWUsLURtYW49ZmFsc2UsbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbbWljcm9odHRwZF0gPSAiLURtaWNyb2h0dHBkPXRydWUsLURtaWNyb2h0dHBkPWZhbHNlLGxpYm1pY3JvaHR0cGQiCi1QQUNLQUdFQ09ORklHW215aG9zdG5hbWVdID0gIi1EbnNzLW15aG9zdG5hbWU9dHJ1ZSwtRG5zcy1teWhvc3RuYW1lPWZhbHNlLCxsaWJuc3MtbXlob3N0bmFtZSIKLVBBQ0tBR0VDT05GSUdbbmV0d29ya2RdID0gIi1EbmV0d29ya2Q9dHJ1ZSwtRG5ldHdvcmtkPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tuc3NdID0gIi1EbnNzLXN5c3RlbWQ9dHJ1ZSwtRG5zcy1zeXN0ZW1kPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tuc3MtbXltYWNoaW5lc10gPSAiLURuc3MtbXltYWNoaW5lcz10cnVlLC1EbnNzLW15bWFjaGluZXM9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW25zcy1yZXNvbHZlXSA9ICItRG5zcy1yZXNvbHZlPXRydWUsLURuc3MtcmVzb2x2ZT1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLURvcGVuc3NsPXRydWUsLURvcGVuc3NsPWZhbHNlLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLURwYW09dHJ1ZSwtRHBhbT1mYWxzZSxsaWJwYW0sJHtQQU1fUExVR0lOU30iCi1QQUNLQUdFQ09ORklHW3BjcmUyXSA9ICItRHBjcmUyPXRydWUsLURwY3JlMj1mYWxzZSxsaWJwY3JlMiIKLVBBQ0tBR0VDT05GSUdbcG9sa2l0XSA9ICItRHBvbGtpdD10cnVlLC1EcG9sa2l0PWZhbHNlIgotUEFDS0FHRUNPTkZJR1twb3J0YWJsZWRdID0gIi1EcG9ydGFibGVkPXRydWUsLURwb3J0YWJsZWQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3FyZW5jb2RlXSA9ICItRHFyZW5jb2RlPXRydWUsLURxcmVuY29kZT1mYWxzZSxxcmVuY29kZSIKLVBBQ0tBR0VDT05GSUdbcXVvdGFjaGVja10gPSAiLURxdW90YWNoZWNrPXRydWUsLURxdW90YWNoZWNrPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tyYW5kb21zZWVkXSA9ICItRHJhbmRvbXNlZWQ9dHJ1ZSwtRHJhbmRvbXNlZWQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3Jlc29sdmVkXSA9ICItRHJlc29sdmU9dHJ1ZSwtRHJlc29sdmU9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3Jma2lsbF0gPSAiLURyZmtpbGw9dHJ1ZSwtRHJma2lsbD1mYWxzZSIKLSMgbGlic2VjY29tcCBpcyBmb3VuZCBpbiBtZXRhLXNlY3VyaXR5Ci1QQUNLQUdFQ09ORklHW3NlY2NvbXBdID0gIi1Ec2VjY29tcD10cnVlLC1Ec2VjY29tcD1mYWxzZSxsaWJzZWNjb21wIgotUEFDS0FHRUNPTkZJR1tzZWxpbnV4XSA9ICItRHNlbGludXg9dHJ1ZSwtRHNlbGludXg9ZmFsc2UsbGlic2VsaW51eCxpbml0c2NyaXB0cy1zdXNoZWxsIgotUEFDS0FHRUNPTkZJR1tzbWFja10gPSAiLURzbWFjaz10cnVlLC1Ec21hY2s9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3N5c3VzZXJzXSA9ICItRHN5c3VzZXJzPXRydWUsLURzeXN1c2Vycz1mYWxzZSIKLSMgV2hlbiBlbmFibGVkIHVzZSByZXByb2R1Y2JsZSBidWlsZCB0aW1lc3RhbXAgaWYgc2V0IGFzIHRpbWUgZXBvY2gsCi0jIG9yIGJ1aWxkIHRpbWUgaWYgbm90LiBXaGVuIGRpc2FibGVkLCB0aW1lIGVwb2NoIGlzIHVuc2V0LgotZGVmIGJ1aWxkX2Vwb2NoKGQpOgotICAgIGVwb2NoID0gZC5nZXRWYXIoJ1NPVVJDRV9EQVRFX0VQT0NIJykgb3IgIi0xIgotICAgIHJldHVybiAnLUR0aW1lLWVwb2NoPSVkJyAlIGludChlcG9jaCkKLVBBQ0tBR0VDT05GSUdbc2V0LXRpbWUtZXBvY2hdID0gIiR7QGJ1aWxkX2Vwb2NoKGQpfSwtRHRpbWUtZXBvY2g9MCIKLVBBQ0tBR0VDT05GSUdbdGltZWRhdGVkXSA9ICItRHRpbWVkYXRlZD10cnVlLC1EdGltZWRhdGVkPWZhbHNlIgotUEFDS0FHRUNPTkZJR1t0aW1lc3luY2RdID0gIi1EdGltZXN5bmNkPXRydWUsLUR0aW1lc3luY2Q9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3Vzcm1lcmdlXSA9ICItRHNwbGl0LXVzcj1mYWxzZSwtRHNwbGl0LXVzcj10cnVlIgotUEFDS0FHRUNPTkZJR1tzYmlubWVyZ2VdID0gIi1Ec3BsaXQtYmluPWZhbHNlLC1Ec3BsaXQtYmluPXRydWUiCi1QQUNLQUdFQ09ORklHW3V0bXBdID0gIi1EdXRtcD10cnVlLC1EdXRtcD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi1EVkFMR1JJTkQ9MSwsdmFsZ3JpbmQiCi1QQUNLQUdFQ09ORklHW3Zjb25zb2xlXSA9ICItRHZjb25zb2xlPXRydWUsLUR2Y29uc29sZT1mYWxzZSwsJHtQTn0tdmNvbnNvbGUtc2V0dXAiCi0jIFZlcmlmeSBrZXltYXBzIG9uIGxvY2FsZSBjaGFuZ2UKLVBBQ0tBR0VDT05GSUdbeGtiY29tbW9uXSA9ICItRHhrYmNvbW1vbj10cnVlLC1EeGtiY29tbW9uPWZhbHNlLGxpYnhrYmNvbW1vbiIKLVBBQ0tBR0VDT05GSUdbeHpdID0gIi1EeHo9dHJ1ZSwtRHh6PWZhbHNlLHh6IgotUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItRHpsaWI9dHJ1ZSwtRHpsaWI9ZmFsc2UsemxpYiIKLQotIyBIZWxwZXIgdmFyaWFibGVzIHRvIGNsYXJpZnkgbG9jYXRpb25zLiAgVGhpcyBtaXJyb3JzIHRoZSBsb2dpYyBpbiBzeXN0ZW1kJ3MKLSMgYnVpbGQgc3lzdGVtLgotcm9vdHByZWZpeCA/PSAiJHtyb290X3ByZWZpeH0iCi1yb290bGliZGlyID89ICIke2Jhc2VfbGliZGlyfSIKLXJvb3RsaWJleGVjZGlyID0gIiR7cm9vdHByZWZpeH0vbGliIgotCi0jIFRoaXMgbGlua3MgdWRldiBzdGF0aWNhbGx5IHdpdGggc3lzdGVtZCBoZWxwZXIgbGlicmFyeS4KLSMgT3RoZXJ3aXNlIHVkZXYgcGFja2FnZSB3b3VsZCBkZXBlbmQgb24gc3lzdGVtZCBwYWNrYWdlICh3aGljaCBoYXMgdGhlIG5lZWRlZCBzaGFyZWQgbGlicmFyeSksCi0jIGFuZCBhbHdheXMgcHVsbCBpdCBpbnRvIGltYWdlcy4KLUVYVFJBX09FTUVTT04gKz0gIi1EbGluay11ZGV2LXNoYXJlZD1mYWxzZSIKLQotRVhUUkFfT0VNRVNPTiArPSAiLURub2JvZHktdXNlcj1ub2JvZHkgXAotICAgICAgICAgICAgICAgICAgLURub2JvZHktZ3JvdXA9bm9ib2R5IFwKLSAgICAgICAgICAgICAgICAgIC1Ecm9vdGxpYmRpcj0ke3Jvb3RsaWJkaXJ9IFwKLSAgICAgICAgICAgICAgICAgIC1Ecm9vdHByZWZpeD0ke3Jvb3RwcmVmaXh9IFwKLSAgICAgICAgICAgICAgICAgIC1Ec3lzdnJjbmQtcGF0aD0ke3N5c2NvbmZkaXJ9IFwKLSAgICAgICAgICAgICAgICAgIC1EZGVmYXVsdC1sb2NhbGU9QyBcCi0gICAgICAgICAgICAgICAgICAiCi0KLSMgSGFyZGNvZGUgdGFyZ2V0IGJpbmFyeSBwYXRocyB0byBhdm9pZCB1c2luZyBwYXRocyBmcm9tIHN5c3Jvb3QKLUVYVFJBX09FTUVTT04gKz0gIi1Ea2V4ZWMtcGF0aD0ke3NiaW5kaXJ9L2tleGVjIFwKLSAgICAgICAgICAgICAgICAgIC1Ea21vZC1wYXRoPSR7YmFzZV9iaW5kaXJ9L2ttb2QgXAotICAgICAgICAgICAgICAgICAgLURtb3VudC1wYXRoPSR7YmFzZV9iaW5kaXJ9L21vdW50IFwKLSAgICAgICAgICAgICAgICAgIC1EcXVvdGFjaGVjay1wYXRoPSR7c2JpbmRpcn0vcXVvdGFjaGVjayBcCi0gICAgICAgICAgICAgICAgICAtRHF1b3Rhb24tcGF0aD0ke3NiaW5kaXJ9L3F1b3Rhb24gXAotICAgICAgICAgICAgICAgICAgLURzdWxvZ2luLXBhdGg9JHtiYXNlX3NiaW5kaXJ9L3N1bG9naW4gXAotICAgICAgICAgICAgICAgICAgLURub2xvZ2luLXBhdGg9JHtiYXNlX3NiaW5kaXJ9L25vbG9naW4gXAotICAgICAgICAgICAgICAgICAgLUR1bW91bnQtcGF0aD0ke2Jhc2VfYmluZGlyfS91bW91bnQiCi0KLWRvX2luc3RhbGwoKSB7Ci0JbWVzb25fZG9faW5zdGFsbAotCWluc3RhbGwgLWQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yJywgJ2ZhbHNlJywgJ3RydWUnLCBkKX07IHRoZW4KLQkJIyBQcm92aWRlZCBieSBhIHNlcGFyYXRlIHJlY2lwZQotCQlybSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zZXJpYWwtZ2V0dHkqIC1mCi0JZmkKLQotCSMgUHJvdmlkZSBzdXBwb3J0IGZvciBpbml0cmFtZnMKLQlbICEgLWUgJHtEfS9pbml0IF0gJiYgbG4gLXMgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kICR7RH0vaW5pdAotCVsgISAtZSAke0R9LyR7YmFzZV9zYmluZGlyfS91ZGV2ZCBdICYmIGxuIC1zICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCAke0R9LyR7YmFzZV9zYmluZGlyfS91ZGV2ZAotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vKi5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCi0KLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLwotCi0JaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZAotCQlzZWQgLWkgcyVAVURFVkRAJSR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKLQlmaQotCi0JY2hvd24gcm9vdDpzeXN0ZW1kLWpvdXJuYWwgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9qb3VybmFsCi0KLQkjIERlbGV0ZSBqb3VybmFsIFJFQURNRSwgYXMgbG9nIGNhbiBiZSBzeW1saW5rZWQgaW5zaWRlIHZvbGF0aWxlLgotCXJtIC1mICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvUkVBRE1FCi0KLQkjIGpvdXJuYWwtcmVtb3RlIGNyZWF0ZXMgdGhpcyBhdCBzdGFydAotCXJtIC1yZiAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nL2pvdXJuYWwvcmVtb3RlCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2dyYXBoaWNhbC50YXJnZXQud2FudHMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9wb3dlcm9mZi50YXJnZXQud2FudHMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3JlYm9vdC50YXJnZXQud2FudHMKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMKLQotCSMgQ3JlYXRlIHN5bWxpbmtzIGZvciBzeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd1dG1wJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ncmFwaGljYWwudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Bvd2Vyb2ZmLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKLQkJbG4gLXNmIC4uL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9yZWJvb3QudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQotCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Jlc2N1ZS50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCi0JZmkKLQotCSMgdGhpcyBmaWxlIGlzIG5lZWRlZCB0byBleGlzdCBpZiBuZXR3b3JrZCBpcyBkaXNhYmxlZCBidXQgdGltZXN5bmNkIGlzIHN0aWxsIGluIHVzZSBzaW5jZSB0aW1lc3luY2QgY2hlY2tzIGl0Ci0JIyBmb3IgZXhpc3RlbmNlIGVsc2UgaXQgZmFpbHMKLQlpZiBbIC1zICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYgXTsgdGhlbgotCQkke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICduZXR3b3JrZCcsICc6JywgJ3NlZCAtaSAtZSAiXCRhZCAvcnVuL3N5c3RlbWQvbmV0aWYvbGlua3MgMDc1NSByb290IHJvb3QgLSIgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZicsIGQpfQotCWZpCi0JaWYgISAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZXNvbHZlZCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCWVjaG8gJ0whICR7c3lzY29uZmRpcn0vcmVzb2x2LmNvbmYgLSAtIC0gLSAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mJyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9ldGMuY29uZgotCQllY2hvICdkIC9ydW4vc3lzdGVtZC9yZXNvbHZlIDA3NTUgcm9vdCByb290IC0nID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZgotCQllY2hvICdmIC9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mIDA2NDQgcm9vdCByb290JyA+PiR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXN0ZW1kLmNvbmYKLQkJbG4gLXMgLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAke0R9JHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kCi0JZWxzZQotCQlzZWQgLWkgLWUgInMlXkwhIC9ldGMvcmVzb2x2LmNvbmYuKiQlTCEgL2V0Yy9yZXNvbHYuY29uZiAtIC0gLSAtIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYlZyIgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL2V0Yy5jb25mCi0JCWxuIC1zIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZAotCWZpCi0JaW5zdGFsbCAtRG0gMDc1NSAke1N9L3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW1kLXN5c3YtaW5zdGFsbAotCi0JIyBJZiBwb2xraXQgaXMgc2V0dXAgZml4dXAgcGVybWlzc2lvbnMgYW5kIG93bmVyc2hpcAotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BvbGtpdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0JCWlmIFsgLWQgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZCBdOyB0aGVuCi0JCQljaG1vZCA3MDAgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZAotCQkJY2hvd24gcG9sa2l0ZDpyb290ICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQKLQkJZmkKLQlmaQotCi0JIyBjcmVhdGUgbGluayBmb3IgZXhpc3RpbmcgdWRldiBydWxlcwotCWxuIC1zICR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0gJHtEfSR7YmFzZV9zYmluZGlyfS91ZGV2YWRtCi0KLQkjIGR1cGxpY2F0ZSB1ZGV2YWRtIGZvciBwb3N0aW5zdCBzY3JpcHQKLQlpbnN0YWxsIC1kICR7RH0ke2xpYmV4ZWNkaXJ9Ci0JbG4gJHtEfSR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0gJHtEfSR7bGliZXhlY2Rpcn0vJHtNTFBSRUZJWH11ZGV2YWRtCi0KLQkjIGluc3RhbGwgZGVmYXVsdCBwb2xpY3kgZm9yIHByZXNldHMKLQkjIGh0dHBzOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL3N5c3RlbWQvUHJlc2V0LyNob3d0bwotCWluc3RhbGwgLURtIDA2NDQgJHtXT1JLRElSfS85OS1kZWZhdWx0LnByZXNldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS1wcmVzZXQvOTktZGVmYXVsdC5wcmVzZXQKLQotICAgICMgV2UgdXNlIHBhY2thZ2UgcG9zdGluc3RzIGZvciB0aGUgaHdkYiB1cGRhdGUsIGFzIHRoZSB1cGRhdGUgc2VydmljZSBpcwotICAgICMgZWFzaWx5IHRyaWdnZXJlZCBmb3Igbm8gcmVhc29uIGFuZCB3aWxsIHNsb3cgZG93biBib290cy4KLSAgICBmaW5kICR7RH0gLW5hbWUgc3lzdGVtZC1od2RiLXVwZGF0ZS5zZXJ2aWNlIC1kZWxldGUKLX0KLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCl7Ci0gICAgc3lzdGVtZGxpYmRpciA9IGQuZ2V0VmFyKCJyb290bGliZGlyIikKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBzeXN0ZW1kbGliZGlyLCAnXmxpYiguKilcLnNvXC4qJywgJ2xpYiVzJywgJ1N5c3RlbWQgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCi19Ci1QQUNLQUdFU19EWU5BTUlDICs9ICJebGliKHVkZXZ8c3lzdGVtZHxuc3MpLioiCi0KLVBBQ0tBR0VTID0rICJcCi0gICAgJHtQTn0tZ3VpIFwKLSAgICAke1BOfS12Y29uc29sZS1zZXR1cCBcCi0gICAgJHtQTn0taW5pdHJhbWZzIFwKLSAgICAke1BOfS1hbmFseXplIFwKLSAgICAke1BOfS1rZXJuZWwtaW5zdGFsbCBcCi0gICAgJHtQTn0tcnBtLW1hY3JvcyBcCi0gICAgJHtQTn0tYmluZm10IFwKLSAgICAke1BOfS16c2gtY29tcGxldGlvbiBcCi0gICAgJHtQTn0tY29udGFpbmVyIFwKLSAgICAke1BOfS1qb3VybmFsLWdhdGV3YXlkIFwKLSAgICAke1BOfS1qb3VybmFsLXVwbG9hZCBcCi0gICAgJHtQTn0tam91cm5hbC1yZW1vdGUgXAotICAgICR7UE59LWV4dHJhLXV0aWxzIFwKLSIKLQotU1VNTUFSWV8ke1BOfS1jb250YWluZXIgPSAiVG9vbHMgZm9yIGNvbnRhaW5lcnMgYW5kIFZNcyIKLURFU0NSSVBUSU9OXyR7UE59LWNvbnRhaW5lciA9ICJTeXN0ZW1kIHRvb2xzIHRvIHNwYXduIGFuZCBtYW5hZ2UgY29udGFpbmVycyBhbmQgdmlydHVhbCBtYWNoaW5lcy4iCi0KLVNVTU1BUllfJHtQTn0tam91cm5hbC1nYXRld2F5ZCA9ICJIVFRQIHNlcnZlciBmb3Igam91cm5hbCBldmVudHMiCi1ERVNDUklQVElPTl8ke1BOfS1qb3VybmFsLWdhdGV3YXlkID0gInN5c3RlbWQtam91cm5hbC1nYXRld2F5ZCBzZXJ2ZXMgam91cm5hbCBldmVudHMgb3ZlciB0aGUgbmV0d29yay4gQ2xpZW50cyBtdXN0IGNvbm5lY3QgdXNpbmcgSFRUUC4gVGhlIHNlcnZlciBsaXN0ZW5zIG9uIHBvcnQgMTk1MzEgYnkgZGVmYXVsdC4iCi0KLVNVTU1BUllfJHtQTn0tam91cm5hbC11cGxvYWQgPSAiU2VuZCBqb3VybmFsIG1lc3NhZ2VzIG92ZXIgdGhlIG5ldHdvcmsiCi1ERVNDUklQVElPTl8ke1BOfS1qb3VybmFsLXVwbG9hZCA9ICJzeXN0ZW1kLWpvdXJuYWwtdXBsb2FkIHVwbG9hZHMgam91cm5hbCBlbnRyaWVzIHRvIGEgc3BlY2lmaWVkIFVSTC4iCi0KLVNVTU1BUllfJHtQTn0tam91cm5hbC1yZW1vdGUgPSAiUmVjZWl2ZSBqb3VybmFsIG1lc3NhZ2VzIG92ZXIgdGhlIG5ldHdvcmsiCi1ERVNDUklQVElPTl8ke1BOfS1qb3VybmFsLXJlbW90ZSA9ICJzeXN0ZW1kLWpvdXJuYWwtcmVtb3RlIGlzIGEgY29tbWFuZCB0byByZWNlaXZlIHNlcmlhbGl6ZWQgam91cm5hbCBldmVudHMgYW5kIHN0b3JlIHRoZW0gdG8gam91cm5hbCBmaWxlcy4iCi0KLVNZU1RFTURfUEFDS0FHRVMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmluZm10JywgJyR7UE59LWJpbmZtdCcsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdtaWNyb2h0dHBkJywgJyR7UE59LWpvdXJuYWwtZ2F0ZXdheWQnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICcke1BOfS1qb3VybmFsLXJlbW90ZScsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdqb3VybmFsLXVwbG9hZCcsICcke1BOfS1qb3VybmFsLXVwbG9hZCcsICcnLCBkKX0gXAotIgotU1lTVEVNRF9TRVJWSUNFXyR7UE59LWJpbmZtdCA9ICJzeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59ICR7UE59LWV4dHJhLXV0aWxzIFwKLSAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICcke1BOfS1qb3VybmFsLWdhdGV3YXknLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICcke1BOfS1qb3VybmFsLXJlbW90ZScsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdqb3VybmFsLXVwbG9hZCcsICcke1BOfS1qb3VybmFsLXVwbG9hZCcsICcnLCBkKX0gXAotIgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLXIgc3lzdGVtZC1qb3VybmFsIgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnY29yZWR1bXAnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWNvcmVkdW1wOycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICduZXR3b3JrZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtbmV0d29yazsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncG9sa2l0JywgJy0tc3lzdGVtIC0tbm8tY3JlYXRlLWhvbWUgLS11c2VyLWdyb3VwIC0taG9tZS1kaXIgJHtzeXNjb25mZGlyfS9wb2xraXQtMSBwb2xraXRkOycsICcnLCBkKX0iCi1VU0VSQUREX1BBUkFNXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZXNvbHZlZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtcmVzb2x2ZTsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGltZXN5bmNkJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC10aW1lc3luYzsnLCAnJywgZCl9IgotVVNFUkFERF9QQVJBTV8ke1BOfS1leHRyYS11dGlscyA9ICItLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtYnVzLXByb3h5IgotVVNFUkFERF9QQVJBTV8ke1BOfS1qb3VybmFsLWdhdGV3YXkgPSAiLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheSIKLVVTRVJBRERfUEFSQU1fJHtQTn0tam91cm5hbC1yZW1vdGUgPSAiLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtcmVtb3RlIgotVVNFUkFERF9QQVJBTV8ke1BOfS1qb3VybmFsLXVwbG9hZCA9ICItLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtam91cm5hbC11cGxvYWQiCi0KLUZJTEVTXyR7UE59LWFuYWx5emUgPSAiJHtiaW5kaXJ9L3N5c3RlbWQtYW5hbHl6ZSIKLQotRklMRVNfJHtQTn0taW5pdHJhbWZzID0gIi9pbml0IgotUkRFUEVORFNfJHtQTn0taW5pdHJhbWZzID0gIiR7UE59IgotCi1GSUxFU18ke1BOfS1ndWkgPSAiJHtiaW5kaXJ9L3N5c3RlbWFkbSIKLQotRklMRVNfJHtQTn0tdmNvbnNvbGUtc2V0dXAgPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXZjb25zb2xlLXNldHVwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzaW5pdC50YXJnZXQud2FudHMvc3lzdGVtZC12Y29uc29sZS1zZXR1cC5zZXJ2aWNlIgotCi1SREVQRU5EU18ke1BOfS1rZXJuZWwtaW5zdGFsbCArPSAiYmFzaCIKLUZJTEVTXyR7UE59LWtlcm5lbC1pbnN0YWxsID0gIiR7YmluZGlyfS9rZXJuZWwtaW5zdGFsbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2tlcm5lbC8gXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2tlcm5lbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLUZJTEVTXyR7UE59LXJwbS1tYWNyb3MgPSAiJHtleGVjX3ByZWZpeH0vbGliL3JwbSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1GSUxFU18ke1BOfS16c2gtY29tcGxldGlvbiA9ICIke2RhdGFkaXJ9L3pzaC9zaXRlLWZ1bmN0aW9ucyIKLQotRklMRVNfJHtQTn0tYmluZm10ID0gIiR7c3lzY29uZmRpcn0vYmluZm10LmQvIFwKLSAgICAgICAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvYmluZm10LmQgXAotICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1iaW5mbXQgXAotICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcHJvYy1zeXMtZnMtYmluZm10X21pc2MuKiBcCi0gICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJpbmZtdC5zZXJ2aWNlIgotUlJFQ09NTUVORFNfJHtQTn0tYmluZm10ID0gImtlcm5lbC1tb2R1bGUtYmluZm10LW1pc2MiCi0KLVJSRUNPTU1FTkRTXyR7UE59LXZjb25zb2xlLXNldHVwID0gImtiZCBrYmQtY29uc29sZWZvbnRzIGtiZC1rZXltYXBzIgotCi0KLUZJTEVTXyR7UE59LWpvdXJuYWwtZ2F0ZXdheWQgPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3N5c3RlbWQtam91cm5hbC1nYXRld2F5ZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQuc29ja2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zb2NrZXRzLnRhcmdldC53YW50cy9zeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQuc29ja2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9zeXN0ZW1kL2dhdGV3YXlkL2Jyb3dzZS5odG1sIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tam91cm5hbC1nYXRld2F5ZCA9ICJzeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQuc29ja2V0IgotCi1GSUxFU18ke1BOfS1qb3VybmFsLXVwbG9hZCA9ICIke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC11cGxvYWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWpvdXJuYWwtdXBsb2FkLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2pvdXJuYWwtdXBsb2FkLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0tam91cm5hbC11cGxvYWQgPSAic3lzdGVtZC1qb3VybmFsLXVwbG9hZC5zZXJ2aWNlIgotCi1GSUxFU18ke1BOfS1qb3VybmFsLXJlbW90ZSA9ICIke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtam91cm5hbC1yZW1vdGUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2pvdXJuYWwtcmVtb3RlLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWpvdXJuYWwtcmVtb3RlLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWpvdXJuYWwtcmVtb3RlLnNvY2tldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICIKLVNZU1RFTURfU0VSVklDRV8ke1BOfS1yZW1vdGUgPSAic3lzdGVtZC1qb3VybmFsLXJlbW90ZS5zb2NrZXQiCi0KLQotRklMRVNfJHtQTn0tY29udGFpbmVyID0gIiR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL21hY2hpbmVzLnRhcmdldCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vbWFjaGluZWN0bCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtbnNwYXduIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kL2ltcG9ydC1wdWJyaW5nLmdwZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmJ1c25hbWUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9jYWwtZnMudGFyZ2V0LndhbnRzL3Zhci1saWItbWFjaGluZXMubW91bnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWFjaGluZXMudGFyZ2V0LndhbnRzL3Zhci1saWItbWFjaGluZXMubW91bnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vcmVtb3RlLWZzLnRhcmdldC53YW50cy92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21hY2hpbmUuc2xpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWFjaGluZXMudGFyZ2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmJ1c25hbWUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmJ1c25hbWUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1pbXBvcnRkLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1tYWNoaW5lZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2RidXMtb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vdmFyLWxpYi1tYWNoaW5lcy5tb3VudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWltcG9ydCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWltcG9ydGQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1tYWNoaW5lZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXB1bGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQtbnNwYXduLmNvbmYgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1uc3Bhd25ALnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJuc3NfbXltYWNoaW5lcy5zby4yIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5jb25mIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuY29uZiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMS9hY3Rpb25zL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLnBvbGljeSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMS9hY3Rpb25zL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5wb2xpY3kgXAotICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1SUkVDT01NRU5EU18ke1BOfS1jb250YWluZXIgKz0gIlwKLSAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1qb3VybmFsLXVwbG9hZCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tam91cm5hbC1yZW1vdGUgXAotICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWpvdXJuYWwtZ2F0ZXdheWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgIgotCi1GSUxFU18ke1BOfS1leHRyYS11dGlscyA9ICJcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWVzY2FwZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWluaGliaXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtZGV0ZWN0LXZpcnQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtcGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1ydW4gXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2F0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWRlbHRhIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNnbHMgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2d0b3AgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtc3RkaW8tYnJpZGdlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtYXNrLXBhc3N3b3JkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtdHR5LWFzay1wYXNzd29yZC1hZ2VudCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcmVzb2x2ZS1ob3N0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1hYy1wb3dlciBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYWN0aXZhdGUgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWJ1cy1wcm94eWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJ1cy1wcm94eWQuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYnVzLXByb3h5ZC5zb2NrZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXNvY2tldC1wcm94eWQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXJlcGx5LXBhc3N3b3JkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1zbGVlcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbS1zbGVlcCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaGliZXJuYXRlLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWh5YnJpZC1zbGVlcC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1zdXNwZW5kLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zbGVlcC50YXJnZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWluaXRjdGwgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWluaXRjdGwuc2VydmljZSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaW5pdGN0bC5zb2NrZXQgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zb2NrZXRzLnRhcmdldC53YW50cy9zeXN0ZW1kLWluaXRjdGwuc29ja2V0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtLWdlbmVyYXRvcnMvc3lzdGVtZC1ncHQtYXV0by1nZW5lcmF0b3IgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWNncm91cHMtYWdlbnQgXAotIgotCi1DT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2NvcmVkdW1wLmNvbmYgXAotCSR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mIFwKLQkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvbG9naW5kLmNvbmYgXAotCSR7c3lzY29uZmRpcn0vc3lzdGVtZC9zeXN0ZW0uY29uZiBcCi0JJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3VzZXIuY29uZiBcCi0JJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3Jlc29sdmVkLmNvbmYgXAotCSR7c3lzY29uZmRpcn0vc3lzdGVtZC90aW1lc3luY2QuY29uZiBcCi0iCi0KLUZJTEVTXyR7UE59ID0gIiAke2Jhc2VfYmluZGlyfS8qIFwKLSAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24gXAotICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9oYWx0IFwKLSAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vcG93ZXJvZmYgXAotICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9ydW5sZXZlbCBcCi0gICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3RlbGluaXQgXAotICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS9yZXNvbHZjb25mIFwKLSAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vcmVib290IFwKLSAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vaW5pdCBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc2VydmljZXMgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS1zZXJ2aWNlcyBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMSBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke0JQTn0gXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZmFjdG9yeSBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9kYnVzLTEvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L21vZHVsZXMtbG9hZC5kLyBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9wYW0uZC8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzY3RsLmQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3hkZy8gXAotICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL1JFQURNRSBcCi0gICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIFwKLSAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L1gxMS94aW5pdC94aW5pdHJjLmQvKiBcCi0gICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC8qIFwKLSAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vKiBcCi0gICAgICAgICAgICAgICAgJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5zbyBcCi0gICAgICAgICAgICAgICAgL2Nncm91cCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQqIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vYnVzY3RsIFwKLSAgICAgICAgICAgICAgICAke2JpbmRpcn0vY29yZWR1bXBjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9sb2NhbGVjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9ob3N0bmFtZWN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3Jlc29sdmVjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS90aW1lZGF0ZWN0bCBcCi0gICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2Jvb3RjdGwgXAotICAgICAgICAgICAgICAgICR7YmluZGlyfS9rZXJuZWwtaW5zdGFsbCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvKi5jb25mIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzdGVtZCBcCi0gICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL21vZHVsZXMtbG9hZC5kIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzY3RsLmQgXAotICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9zeXN1c2Vycy5kIFwKLSAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvZW52aXJvbm1lbnQuZCBcCi0gICAgICAgICAgICAgICAgJHtsb2NhbHN0YXRlZGlyfSBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvNzAtdWFjY2Vzcy5ydWxlcyBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvNzEtc2VhdC5ydWxlcyBcCi0gICAgICAgICAgICAgICAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2L3J1bGVzLmQvNzMtc2VhdC1sYXRlLnJ1bGVzIFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L3VkZXYvcnVsZXMuZC85OS1zeXN0ZW1kLnJ1bGVzIFwKLSAgICAgICAgICAgICAgICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L21vZHByb2JlLmQvc3lzdGVtZC5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AudGltZWRhdGUxLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5sb2NhbGUxLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5uZXR3b3JrMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AucmVzb2x2ZTEuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnN5c3RlbWQxLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5ob3N0bmFtZTEuY29uZiBcCi0gICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmxvZ2luMS5jb25mIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AudGltZXN5bmMxLmNvbmYgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5wb3J0YWJsZTEuY29uZiBcCi0gICAgICAgICAgICAgICAiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5sYSAke2RhdGFkaXJ9L2RidXMtMS9pbnRlcmZhY2VzLyAke3N5c2NvbmZkaXJ9L3JwbS9tYWNyb3Muc3lzdGVtZCIKLQotUkRFUEVORFNfJHtQTn0gKz0gImttb2QgZGJ1cyB1dGlsLWxpbnV4LW1vdW50IHV0aWwtbGludXgtdW1vdW50IHVkZXYgKD0gJHtFWFRFTkRQS0dWfSkgdXRpbC1saW51eC1hZ2V0dHkgdXRpbC1saW51eC1mc2NrIgotUkRFUEVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlcmlhbC1nZXR0eS1nZW5lcmF0b3InLCAnJywgJ3N5c3RlbWQtc2VyaWFsZ2V0dHknLCBkKX0iCi1SREVQRU5EU18ke1BOfSArPSAidm9sYXRpbGUtYmluZHMgdXBkYXRlLXJjLmQiCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJzeXN0ZW1kLWV4dHJhLXV0aWxzIFwKLSAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1kLWNvbXBhdC11bml0cyB1ZGV2LWh3ZGIgXAotICAgICAgICAgICAgICAgICAgICAgIGUyZnNwcm9ncy1lMmZzY2sgXAotICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtYXV0b2ZzNCBrZXJuZWwtbW9kdWxlLXVuaXgga2VybmVsLW1vZHVsZS1pcHY2IFwKLSAgICAgICAgICAgICAgICAgICAgICBvcy1yZWxlYXNlIFwKLSAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1kLWNvbmYgXAotIgotCi1JTlNBTkVfU0tJUF8ke1BOfSArPSAiZGV2LXNvIGxpYmRpciIKLUlOU0FORV9TS0lQXyR7UE59LWRiZyArPSAibGliZGlyIgotSU5TQU5FX1NLSVBfJHtQTn0tZG9jICs9ICIgbGliZGlyIgotCi1QQUNLQUdFUyA9KyAidWRldiB1ZGV2LWh3ZGIiCi0KLVJQUk9WSURFU191ZGV2ID0gImhvdHBsdWciCi0KLVJERVBFTkRTX3VkZXYtaHdkYiArPSAidWRldiIKLQotRklMRVNfdWRldiArPSAiJHtiYXNlX3NiaW5kaXJ9L3VkZXZkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvbmV0d29yay85OS1kZWZhdWx0LmxpbmsgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXVkZXZkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvYWNjZWxlcm9tZXRlciBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2F0YV9pZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2Nkcm9tX2lkIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvY29sbGVjdCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2ZpbmRrZXlib2FyZHMgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXlib2FyZC1mb3JjZS1yZWxlYXNlLnNoIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvbXRkX3Byb2JlIFwKLSAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvc2NzaV9pZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3Y0bF9pZCBcCi0gICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleW1hcHMgXAotICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLyoucnVsZXMgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS91ZGV2IFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQgXAotICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qdWRldiogXAotICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS8qLndhbnRzLyp1ZGV2KiBcCi0gICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS91ZGV2YWRtIFwKLSAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS91ZGV2YWRtIFwKLSAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0vJHtNTFBSRUZJWH11ZGV2YWRtIFwKLSAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uL2NvbXBsZXRpb25zL3VkZXZhZG0gXAotICAgICAgICAgICAgICAiCi0KLUZJTEVTX3VkZXYtaHdkYiA9ICIke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2h3ZGIuZCIKLQotUkNPTkZMSUNUU18ke1BOfSA9ICJ0aW55LWluaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAncmVzb2x2Y29uZicsICcnLCBkKX0iCi0KLUlOSVRTQ1JJUFRfUEFDS0FHRVMgPSAidWRldiIKLUlOSVRTQ1JJUFRfTkFNRV91ZGV2ID0gInN5c3RlbWQtdWRldmQiCi1JTklUU0NSSVBUX1BBUkFNU191ZGV2ID0gInN0YXJ0IDAzIFMgLiIKLQotcHl0aG9uIF9fYW5vbnltb3VzKCkgewotICAgIGlmIG5vdCBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICBkLnNldFZhcigiSU5ISUJJVF9VUERBVEVSQ0RfQkJDTEFTUyIsICIxIikKLX0KLQotcHl0aG9uIGRvX3dhcm5fbXVzbCgpIHsKLSAgICBpZiBkLmdldFZhcignVENMSUJDJykgPT0gIm11c2wiOgotICAgICAgICBiYi53YXJuKCJVc2luZyBzeXN0ZW1kIHdpdGggbXVzbCBpcyBub3QgcmVjb21tZW5kZWQgc2luY2UgaXQgaXMgbm90IHN1cHBvcnRlZCB1cHN0cmVhbSBhbmQgc29tZSBwYXRjaGVzIGFyZSBrbm93biB0byBiZSBwcm9ibGVtYXRpYy4iKQotfQotYWRkdGFzayB3YXJuX211c2wgYmVmb3JlIGRvX2NvbmZpZ3VyZQotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJoYWx0IHJlYm9vdCBzaHV0ZG93biBwb3dlcm9mZiBydW5sZXZlbCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZXNvbHZlZCcsICdyZXNvbHYtY29uZicsICcnLCBkKX0iCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtyZXNvbHYtY29uZl0gPSAiJHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Jlc29sdi1jb25mXSA9ICIke3N5c2NvbmZkaXJ9L3Jlc29sdi5jb25mIgotQUxURVJOQVRJVkVfUFJJT1JJVFlbcmVzb2x2LWNvbmZdID89ICI1MCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW2hhbHRdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtoYWx0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaGFsdCIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW2hhbHRdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtyZWJvb3RdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtyZWJvb3RdID0gIiR7YmFzZV9zYmluZGlyfS9yZWJvb3QiCi1BTFRFUk5BVElWRV9QUklPUklUWVtyZWJvb3RdID89ICIzMDAiCi0KLUFMVEVSTkFUSVZFX1RBUkdFVFtzaHV0ZG93bl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3NodXRkb3duXSA9ICIke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24iCi1BTFRFUk5BVElWRV9QUklPUklUWVtzaHV0ZG93bl0gPz0gIjMwMCIKLQotQUxURVJOQVRJVkVfVEFSR0VUW3Bvd2Vyb2ZmXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcG93ZXJvZmZdID0gIiR7YmFzZV9zYmluZGlyfS9wb3dlcm9mZiIKLUFMVEVSTkFUSVZFX1BSSU9SSVRZW3Bvd2Vyb2ZmXSA/PSAiMzAwIgotCi1BTFRFUk5BVElWRV9UQVJHRVRbcnVubGV2ZWxdID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtydW5sZXZlbF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3J1bmxldmVsIgotQUxURVJOQVRJVkVfUFJJT1JJVFlbcnVubGV2ZWxdID89ICIzMDAiCi0KLXBrZ19wb3N0aW5zdF8ke1BOfV9saWJjLWdsaWJjICgpIHsKLQlzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxteWhvc3RuYW1lXD4vLycgXAotCQktZSAncy9cKF5ob3N0czouKlwpXChcPGZpbGVzXD5cKVwoLipcKVwoXDxkbnNcPlwpXCguKlwpL1wxXDIgbXlob3N0bmFtZSBcM1w0XDUvJyBcCi0JCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCi19Ci0KLXBrZ19wcmVybV8ke1BOfV9saWJjLWdsaWJjICgpIHsKLQlzZWQgLWUgJy9eaG9zdHM6L3MvXHMqXDxteWhvc3RuYW1lXD4vLycgXAotCQktZSAnL15ob3N0czovcy9ccypteWhvc3RuYW1lLy8nIFwKLQkJLWkgJEQke3N5c2NvbmZkaXJ9L25zc3dpdGNoLmNvbmYKLX0KLQotUEFDS0FHRV9XUklURV9ERVBTICs9ICJxZW11LW5hdGl2ZSIKLXBrZ19wb3N0aW5zdF91ZGV2LWh3ZGIgKCkgewotCWlmIHRlc3QgLW4gIiREIjsgdGhlbgotCQkkSU5URVJDRVBUX0RJUi9wb3N0aW5zdF9pbnRlcmNlcHQgdXBkYXRlX3VkZXZfaHdkYiAke1BLR30gbWxwcmVmaXg9JHtNTFBSRUZJWH0gYmlucHJlZml4PSR7TUxQUkVGSVh9Ci0JZWxzZQotCQl1ZGV2YWRtIGh3ZGIgLS11cGRhdGUKLQlmaQotfQotCi1wa2dfcHJlcm1fdWRldi1od2RiICgpIHsKLQlybSAtZiAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjQ1LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3RlbWQvc3lzdGVtZF8yNDUuNS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2U0MjIwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN0ZW1kL3N5c3RlbWRfMjQ1LjUuYmIKQEAgLTAsMCArMSw3MTUgQEAKK3JlcXVpcmUgc3lzdGVtZC5pbmMKKworUFJPVklERVMgPSAidWRldiIKKworUEUgPSAiMSIKKworREVQRU5EUyA9ICJpbnRsdG9vbC1uYXRpdmUgZ3BlcmYtbmF0aXZlIGxpYmNhcCB1dGlsLWxpbnV4IgorCitTRUNUSU9OID0gImJhc2Uvc2hlbGwiCisKK2luaGVyaXQgdXNlcmFkZCBwa2djb25maWcgbWVzb24gcGVybG5hdGl2ZSB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHFlbXUgc3lzdGVtZCBnZXR0ZXh0IGJhc2gtY29tcGxldGlvbiBtYW5wYWdlcyBmZWF0dXJlc19jaGVjaworCisjIEFzIHRoaXMgcmVjaXBlIGJ1aWxkcyB1ZGV2LCByZXNwZWN0IHN5c3RlbWQgYmVpbmcgaW4gRElTVFJPX0ZFQVRVUkVTIHNvCisjIHRoYXQgd2UgZG9uJ3QgYnVpbGQgYm90aCB1ZGV2IGFuZCBzeXN0ZW1kIGluIHdvcmxkIGJ1aWxkcy4KK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJzeXN0ZW1kIgorCitTUkNfVVJJICs9ICJmaWxlOi8vdG91Y2hzY3JlZW4ucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vMDAtY3JlYXRlLXZvbGF0aWxlLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly85OS1kZWZhdWx0LnByZXNldCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJpbmZtdC1Eb24tdC1pbnN0YWxsLWRlcGVuZGVuY3ktbGlua3MtYXQtaW5zdGFsbC10aW0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1pbXBsbWVudC1zeXN0ZW1kLXN5c3YtaW5zdGFsbC1mb3ItT0UucGF0Y2ggXAorICAgICAgICAgICAiCisKKyMgcGF0Y2hlcyBuZWVkZWQgYnkgbXVzbAorU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiAke1NSQ19VUklfTVVTTH0iCitTUkNfVVJJX01VU0wgPSAiXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDItZG9uLXQtdXNlLWdsaWJjLXNwZWNpZmljLXFzb3J0X3IucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDMtbWlzc2luZ190eXBlLmgtYWRkLV9fY29tcGFyZV9mbl90LWFuZC1jb21wYXJpc29uX2ZuXy5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwNC1hZGQtZmFsbGJhY2stcGFyc2VfcHJpbnRmX2Zvcm1hdC1pbXBsZW1lbnRhdGlvbi5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwNS1zcmMtYmFzaWMtbWlzc2luZy5oLWNoZWNrLWZvci1taXNzaW5nLXN0cm5kdXBhLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA2LUluY2x1ZGUtbmV0aW5ldC1pZl9ldGhlci5oLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDA3LWRvbi10LWZhaWwtaWYtR0xPQl9CUkFDRS1hbmQtR0xPQl9BTFRESVJGVU5DLWlzLW5vdC5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwOC1hZGQtbWlzc2luZy1GVFdfLW1hY3Jvcy1mb3ItbXVzbC5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAxMC1maXgtbWlzc2luZy1vZi1fX3JlZ2lzdGVyX2F0Zm9yay1mb3Itbm9uLWdsaWJjLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDExLVVzZS11aW50bWF4X3QtZm9yLWhhbmRsaW5nLXJsaW1fdC5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAxNC10ZXN0LXNpemVvZi5jLURpc2FibGUtdGVzdHMtZm9yLW1pc3NpbmctdHlwZWRlZnMtaW4tLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDE1LWRvbi10LXBhc3MtQVRfU1lNTElOS19OT0ZPTExPVy1mbGFnLXRvLWZhY2Nlc3NhdC5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAxNi1EZWZpbmUtZ2xpYmMtY29tcGF0aWJsZS1iYXNlbmFtZS1mb3Itbm9uLWdsaWJjLXN5c3RlLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDE3LURvLW5vdC1kaXNhYmxlLWJ1ZmZlcmluZy13aGVuLXdyaXRpbmctdG8tb29tX3Njb3JlX2EucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMTgtZGlzdGluZ3Vpc2gtWFNJLWNvbXBsaWFudC1zdHJlcnJvcl9yLWZyb20tR05VLXNwZWNpZi5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAxOS1IaWRlLV9fc3RhcnRfQlVTX0VSUk9SX01BUC1hbmQtX19zdG9wX0JVU19FUlJPUl9NQVAucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMjAtbWlzc2luZ190eXBlLmgtYWRkLV9fY29tcGFyX2RfZm5fdC1kZWZpbml0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDIxLWF2b2lkLXJlZGVmaW5pdGlvbi1vZi1wcmN0bF9tbV9tYXAtc3RydWN0dXJlLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDI0LXRlc3QtanNvbi5jLWRlZmluZS1NX1BJbC5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwMS1kby1ub3QtZGlzYWJsZS1idWZmZXItaW4td3JpdGluZy1maWxlcy5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwMi1zcmMtbG9naW4tYnJpZ2h0bmVzcy5jLWluY2x1ZGUtc3lzLXdhaXQuaC5wYXRjaCBcCisgICAgICAgICAgICAgICBmaWxlOi8vMDAwMy1zcmMtYmFzaWMtY29weS5jLWluY2x1ZGUtc2lnbmFsLmgucGF0Y2ggXAorICAgICAgICAgICAgICAgZmlsZTovLzAwMDQtc3JjLXNoYXJlZC1jcHUtc2V0LXV0aWwuaC1hZGQtX19jcHVfbWFzay1kZWZpbml0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUhhbmRsZS1taXNzaW5nLWdzaGFkb3cucGF0Y2ggXAorICAgICAgICAgICAgICAgIgorCitQQU1fUExVR0lOUyA9ICIgXAorICAgIHBhbS1wbHVnaW4tdW5peCBcCisgICAgcGFtLXBsdWdpbi1sb2dpbnVpZCBcCisgICAgcGFtLXBsdWdpbi1rZXlpbml0IFwKKyIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIGF1ZGl0IGVmaSBsZGNvbmZpZyBwYW0gc2VsaW51eCBzbWFjayB1c3JtZXJnZSBwb2xraXQnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2lmaScsICdyZmtpbGwnLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4a2Jjb21tb24nLCAnJywgZCl9IFwKKyAgICBiYWNrbGlnaHQgXAorICAgIGJpbmZtdCBcCisgICAgZ3NoYWRvdyBcCisgICAgaGliZXJuYXRlIFwKKyAgICBob3N0bmFtZWQgXAorICAgIGlkbiBcCisgICAgaW1hIFwKKyAgICBrbW9kIFwKKyAgICBsb2NhbGVkIFwKKyAgICBsb2dpbmQgXAorICAgIG1hY2hpbmVkIFwKKyAgICBteWhvc3RuYW1lIFwKKyAgICBuZXR3b3JrZCBcCisgICAgbnNzIFwKKyAgICBuc3MtbXltYWNoaW5lcyBcCisgICAgbnNzLXJlc29sdmUgXAorICAgIHF1b3RhY2hlY2sgXAorICAgIHJhbmRvbXNlZWQgXAorICAgIHJlc29sdmVkIFwKKyAgICBzZXQtdGltZS1lcG9jaCBcCisgICAgc3lzdXNlcnMgXAorICAgIHN5c3Zpbml0IFwKKyAgICB0aW1lZGF0ZWQgXAorICAgIHRpbWVzeW5jZCBcCisgICAgdXNlcmRiIFwKKyAgICB1dG1wIFwKKyAgICB2Y29uc29sZSBcCisgICAgeHogXAorIgorCitQQUNLQUdFQ09ORklHX3JlbW92ZV9saWJjLW11c2wgPSAiIFwKKyAgICBnc2hhZG93IFwKKyAgICBpZG4gXAorICAgIGxvY2FsZWQgXAorICAgIG15aG9zdG5hbWUgXAorICAgIG5zcyBcCisgICAgbnNzLW15bWFjaGluZXMgXAorICAgIG5zcy1yZXNvbHZlIFwKKyAgICBzeXN1c2VycyBcCisgICAgdXNlcmRiIFwKKyAgICB1dG1wIFwKKyIKKworQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiIC1EX19VQVBJX0RFRl9FVEhIRFI9MCAiCisKKyMgVXNlIHRoZSB1cHN0cmVhbSBzeXN0ZW1kIHNlcmlhbC1nZXR0eUAuc2VydmljZSBhbmQgcmVseSBvbgorIyBzeXN0ZW1kLWdldHR5LWdlbmVyYXRvciBpbnN0ZWFkIG9mIHVzaW5nIHRoZSBPRS1jb3JlIHNwZWNpZmljCisjIHN5c3RlbWQtc2VyaWFsZ2V0dHkuYmIgLSBub3QgZW5hYmxlZCBieSBkZWZhdWx0LgorUEFDS0FHRUNPTkZJR1tzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yXSA9ICIiCisKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItRGFjbD10cnVlLC1EYWNsPWZhbHNlLGFjbCIKK1BBQ0tBR0VDT05GSUdbYXVkaXRdID0gIi1EYXVkaXQ9dHJ1ZSwtRGF1ZGl0PWZhbHNlLGF1ZGl0IgorUEFDS0FHRUNPTkZJR1tiYWNrbGlnaHRdID0gIi1EYmFja2xpZ2h0PXRydWUsLURiYWNrbGlnaHQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2JpbmZtdF0gPSAiLURiaW5mbXQ9dHJ1ZSwtRGJpbmZtdD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbYnppcDJdID0gIi1EYnppcDI9dHJ1ZSwtRGJ6aXAyPWZhbHNlLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1tjZ3JvdXB2Ml0gPSAiLURkZWZhdWx0LWhpZXJhcmNoeT11bmlmaWVkLC1EZGVmYXVsdC1oaWVyYXJjaHk9aHlicmlkIgorUEFDS0FHRUNPTkZJR1tjb3JlZHVtcF0gPSAiLURjb3JlZHVtcD10cnVlLC1EY29yZWR1bXA9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2NyeXB0c2V0dXBdID0gIi1EbGliY3J5cHRzZXR1cD10cnVlLC1EbGliY3J5cHRzZXR1cD1mYWxzZSxjcnlwdHNldHVwIgorUEFDS0FHRUNPTkZJR1tkYnVzXSA9ICItRGRidXM9dHJ1ZSwtRGRidXM9ZmFsc2UsZGJ1cyIKK1BBQ0tBR0VDT05GSUdbZWZpXSA9ICItRGVmaT10cnVlLC1EZWZpPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tnbnUtZWZpXSA9ICItRGdudS1lZmk9dHJ1ZSAtRGVmaS1saWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0gLURlZmktaW5jbHVkZWRpcj0ke1NUQUdJTkdfSU5DRElSfS9lZmksLURnbnUtZWZpPWZhbHNlLGdudS1lZmkiCitQQUNLQUdFQ09ORklHW2VsZnV0aWxzXSA9ICItRGVsZnV0aWxzPXRydWUsLURlbGZ1dGlscz1mYWxzZSxlbGZ1dGlscyIKK1BBQ0tBR0VDT05GSUdbZmlyc3Rib290XSA9ICItRGZpcnN0Ym9vdD10cnVlLC1EZmlyc3Rib290PWZhbHNlIgorIyBTaWduIHRoZSBqb3VybmFsIGZvciBhbnRpLXRhbXBlcmluZworUEFDS0FHRUNPTkZJR1tnY3J5cHRdID0gIi1EZ2NyeXB0PXRydWUsLURnY3J5cHQ9ZmFsc2UsbGliZ2NyeXB0IgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi1EZ251dGxzPXRydWUsLURnbnV0bHM9ZmFsc2UsZ251dGxzIgorUEFDS0FHRUNPTkZJR1tnc2hhZG93XSA9ICItRGdzaGFkb3c9dHJ1ZSwtRGdzaGFkb3c9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2hpYmVybmF0ZV0gPSAiLURoaWJlcm5hdGU9dHJ1ZSwtRGhpYmVybmF0ZT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbaG9zdG5hbWVkXSA9ICItRGhvc3RuYW1lZD10cnVlLC1EaG9zdG5hbWVkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tpZG5dID0gIi1EaWRuPXRydWUsLURpZG49ZmFsc2UiCitQQUNLQUdFQ09ORklHW2ltYV0gPSAiLURpbWE9dHJ1ZSwtRGltYT1mYWxzZSIKKyMgaW1wb3J0ZCByZXF1aXJlcyBjdXJsL3h6L3psaWIvYnppcDIvZ2NyeXB0CitQQUNLQUdFQ09ORklHW2ltcG9ydGRdID0gIi1EaW1wb3J0ZD10cnVlLC1EaW1wb3J0ZD1mYWxzZSIKKyMgVXBkYXRlIE5BVCBmaXJld2FsbCBydWxlcworUEFDS0FHRUNPTkZJR1tpcHRjXSA9ICItRGxpYmlwdGM9dHJ1ZSwtRGxpYmlwdGM9ZmFsc2UsaXB0YWJsZXMiCitQQUNLQUdFQ09ORklHW2pvdXJuYWwtdXBsb2FkXSA9ICItRGxpYmN1cmw9dHJ1ZSwtRGxpYmN1cmw9ZmFsc2UsY3VybCIKK1BBQ0tBR0VDT05GSUdba21vZF0gPSAiLURrbW9kPXRydWUsLURrbW9kPWZhbHNlLGttb2QiCitQQUNLQUdFQ09ORklHW2xkY29uZmlnXSA9ICItRGxkY29uZmlnPXRydWUsLURsZGNvbmZpZz1mYWxzZSwsbGRjb25maWciCitQQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLURsaWJpZG49dHJ1ZSwtRGxpYmlkbj1mYWxzZSxsaWJpZG4iCitQQUNLQUdFQ09ORklHW2xpYmlkbjJdID0gIi1EbGliaWRuMj10cnVlLC1EbGliaWRuMj1mYWxzZSxsaWJpZG4yIgorUEFDS0FHRUNPTkZJR1tsb2NhbGVkXSA9ICItRGxvY2FsZWQ9dHJ1ZSwtRGxvY2FsZWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2xvZ2luZF0gPSAiLURsb2dpbmQ9dHJ1ZSwtRGxvZ2luZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbHo0XSA9ICItRGx6ND10cnVlLC1EbHo0PWZhbHNlLGx6NCIKK1BBQ0tBR0VDT05GSUdbbWFjaGluZWRdID0gIi1EbWFjaGluZWQ9dHJ1ZSwtRG1hY2hpbmVkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLURtYW49dHJ1ZSwtRG1hbj1mYWxzZSxsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUgZG9jYm9vay14bWwtZHRkNC1uYXRpdmUgZG9jYm9vay14c2wtc3R5bGVzaGVldHMtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1ttaWNyb2h0dHBkXSA9ICItRG1pY3JvaHR0cGQ9dHJ1ZSwtRG1pY3JvaHR0cGQ9ZmFsc2UsbGlibWljcm9odHRwZCIKK1BBQ0tBR0VDT05GSUdbbXlob3N0bmFtZV0gPSAiLURuc3MtbXlob3N0bmFtZT10cnVlLC1EbnNzLW15aG9zdG5hbWU9ZmFsc2UsLGxpYm5zcy1teWhvc3RuYW1lIgorUEFDS0FHRUNPTkZJR1tuZXR3b3JrZF0gPSAiLURuZXR3b3JrZD10cnVlLC1EbmV0d29ya2Q9ZmFsc2UiCitQQUNLQUdFQ09ORklHW25zc10gPSAiLURuc3Mtc3lzdGVtZD10cnVlLC1EbnNzLXN5c3RlbWQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW25zcy1teW1hY2hpbmVzXSA9ICItRG5zcy1teW1hY2hpbmVzPXRydWUsLURuc3MtbXltYWNoaW5lcz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbbnNzLXJlc29sdmVdID0gIi1EbnNzLXJlc29sdmU9dHJ1ZSwtRG5zcy1yZXNvbHZlPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItRG9wZW5zc2w9dHJ1ZSwtRG9wZW5zc2w9ZmFsc2Usb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICItRHBhbT10cnVlLC1EcGFtPWZhbHNlLGxpYnBhbSwke1BBTV9QTFVHSU5TfSIKK1BBQ0tBR0VDT05GSUdbcGNyZTJdID0gIi1EcGNyZTI9dHJ1ZSwtRHBjcmUyPWZhbHNlLGxpYnBjcmUyIgorUEFDS0FHRUNPTkZJR1twb2xraXRdID0gIi1EcG9sa2l0PXRydWUsLURwb2xraXQ9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3BvcnRhYmxlZF0gPSAiLURwb3J0YWJsZWQ9dHJ1ZSwtRHBvcnRhYmxlZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbcXJlbmNvZGVdID0gIi1EcXJlbmNvZGU9dHJ1ZSwtRHFyZW5jb2RlPWZhbHNlLHFyZW5jb2RlIgorUEFDS0FHRUNPTkZJR1txdW90YWNoZWNrXSA9ICItRHF1b3RhY2hlY2s9dHJ1ZSwtRHF1b3RhY2hlY2s9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3JhbmRvbXNlZWRdID0gIi1EcmFuZG9tc2VlZD10cnVlLC1EcmFuZG9tc2VlZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbcmVzb2x2ZWRdID0gIi1EcmVzb2x2ZT10cnVlLC1EcmVzb2x2ZT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbcmZraWxsXSA9ICItRHJma2lsbD10cnVlLC1EcmZraWxsPWZhbHNlIgorIyBsaWJzZWNjb21wIGlzIGZvdW5kIGluIG1ldGEtc2VjdXJpdHkKK1BBQ0tBR0VDT05GSUdbc2VjY29tcF0gPSAiLURzZWNjb21wPXRydWUsLURzZWNjb21wPWZhbHNlLGxpYnNlY2NvbXAiCitQQUNLQUdFQ09ORklHW3NlbGludXhdID0gIi1Ec2VsaW51eD10cnVlLC1Ec2VsaW51eD1mYWxzZSxsaWJzZWxpbnV4LGluaXRzY3JpcHRzLXN1c2hlbGwiCitQQUNLQUdFQ09ORklHW3NtYWNrXSA9ICItRHNtYWNrPXRydWUsLURzbWFjaz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbc3lzdXNlcnNdID0gIi1Ec3lzdXNlcnM9dHJ1ZSwtRHN5c3VzZXJzPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tzeXN2aW5pdF0gPSAiLURzeXN2aW5pdC1wYXRoPSR7c3lzY29uZmRpcn0vaW5pdC5kIC1Ec3lzdnJjbmQtcGF0aD0ke3N5c2NvbmZkaXJ9LC1Ec3lzdmluaXQtcGF0aD0gLURzeXN2cmNuZC1wYXRoPSwsc3lzdGVtZC1jb21wYXQtdW5pdHMgdXBkYXRlLXJjLmQiCisjIFdoZW4gZW5hYmxlZCB1c2UgcmVwcm9kdWNibGUgYnVpbGQgdGltZXN0YW1wIGlmIHNldCBhcyB0aW1lIGVwb2NoLAorIyBvciBidWlsZCB0aW1lIGlmIG5vdC4gV2hlbiBkaXNhYmxlZCwgdGltZSBlcG9jaCBpcyB1bnNldC4KK2RlZiBidWlsZF9lcG9jaChkKToKKyAgICBlcG9jaCA9IGQuZ2V0VmFyKCdTT1VSQ0VfREFURV9FUE9DSCcpIG9yICItMSIKKyAgICByZXR1cm4gJy1EdGltZS1lcG9jaD0lZCcgJSBpbnQoZXBvY2gpCitQQUNLQUdFQ09ORklHW3NldC10aW1lLWVwb2NoXSA9ICIke0BidWlsZF9lcG9jaChkKX0sLUR0aW1lLWVwb2NoPTAiCitQQUNLQUdFQ09ORklHW3RpbWVkYXRlZF0gPSAiLUR0aW1lZGF0ZWQ9dHJ1ZSwtRHRpbWVkYXRlZD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdGltZXN5bmNkXSA9ICItRHRpbWVzeW5jZD10cnVlLC1EdGltZXN5bmNkPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t1c3JtZXJnZV0gPSAiLURzcGxpdC11c3I9ZmFsc2UsLURzcGxpdC11c3I9dHJ1ZSIKK1BBQ0tBR0VDT05GSUdbc2Jpbm1lcmdlXSA9ICItRHNwbGl0LWJpbj1mYWxzZSwtRHNwbGl0LWJpbj10cnVlIgorUEFDS0FHRUNPTkZJR1t1c2VyZGJdID0gIi1EdXNlcmRiPXRydWUsLUR1c2VyZGI9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3V0bXBdID0gIi1EdXRtcD10cnVlLC1EdXRtcD1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi1EVkFMR1JJTkQ9MSwsdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW3Zjb25zb2xlXSA9ICItRHZjb25zb2xlPXRydWUsLUR2Y29uc29sZT1mYWxzZSwsJHtQTn0tdmNvbnNvbGUtc2V0dXAiCisjIFZlcmlmeSBrZXltYXBzIG9uIGxvY2FsZSBjaGFuZ2UKK1BBQ0tBR0VDT05GSUdbeGtiY29tbW9uXSA9ICItRHhrYmNvbW1vbj10cnVlLC1EeGtiY29tbW9uPWZhbHNlLGxpYnhrYmNvbW1vbiIKK1BBQ0tBR0VDT05GSUdbeHpdID0gIi1EeHo9dHJ1ZSwtRHh6PWZhbHNlLHh6IgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItRHpsaWI9dHJ1ZSwtRHpsaWI9ZmFsc2UsemxpYiIKKworIyBIZWxwZXIgdmFyaWFibGVzIHRvIGNsYXJpZnkgbG9jYXRpb25zLiAgVGhpcyBtaXJyb3JzIHRoZSBsb2dpYyBpbiBzeXN0ZW1kJ3MKKyMgYnVpbGQgc3lzdGVtLgorcm9vdHByZWZpeCA/PSAiJHtyb290X3ByZWZpeH0iCityb290bGliZGlyID89ICIke2Jhc2VfbGliZGlyfSIKK3Jvb3RsaWJleGVjZGlyID0gIiR7cm9vdHByZWZpeH0vbGliIgorCisjIFRoaXMgbGlua3MgdWRldiBzdGF0aWNhbGx5IHdpdGggc3lzdGVtZCBoZWxwZXIgbGlicmFyeS4KKyMgT3RoZXJ3aXNlIHVkZXYgcGFja2FnZSB3b3VsZCBkZXBlbmQgb24gc3lzdGVtZCBwYWNrYWdlICh3aGljaCBoYXMgdGhlIG5lZWRlZCBzaGFyZWQgbGlicmFyeSksCisjIGFuZCBhbHdheXMgcHVsbCBpdCBpbnRvIGltYWdlcy4KK0VYVFJBX09FTUVTT04gKz0gIi1EbGluay11ZGV2LXNoYXJlZD1mYWxzZSIKKworRVhUUkFfT0VNRVNPTiArPSAiLURub2JvZHktdXNlcj1ub2JvZHkgXAorICAgICAgICAgICAgICAgICAgLURub2JvZHktZ3JvdXA9bm9ib2R5IFwKKyAgICAgICAgICAgICAgICAgIC1Ecm9vdGxpYmRpcj0ke3Jvb3RsaWJkaXJ9IFwKKyAgICAgICAgICAgICAgICAgIC1Ecm9vdHByZWZpeD0ke3Jvb3RwcmVmaXh9IFwKKyAgICAgICAgICAgICAgICAgIC1EZGVmYXVsdC1sb2NhbGU9QyBcCisgICAgICAgICAgICAgICAgICAiCisKKyMgSGFyZGNvZGUgdGFyZ2V0IGJpbmFyeSBwYXRocyB0byBhdm9pZCB1c2luZyBwYXRocyBmcm9tIHN5c3Jvb3QKK0VYVFJBX09FTUVTT04gKz0gIi1Ea2V4ZWMtcGF0aD0ke3NiaW5kaXJ9L2tleGVjIFwKKyAgICAgICAgICAgICAgICAgIC1Ea21vZC1wYXRoPSR7YmFzZV9iaW5kaXJ9L2ttb2QgXAorICAgICAgICAgICAgICAgICAgLURtb3VudC1wYXRoPSR7YmFzZV9iaW5kaXJ9L21vdW50IFwKKyAgICAgICAgICAgICAgICAgIC1EcXVvdGFjaGVjay1wYXRoPSR7c2JpbmRpcn0vcXVvdGFjaGVjayBcCisgICAgICAgICAgICAgICAgICAtRHF1b3Rhb24tcGF0aD0ke3NiaW5kaXJ9L3F1b3Rhb24gXAorICAgICAgICAgICAgICAgICAgLURzdWxvZ2luLXBhdGg9JHtiYXNlX3NiaW5kaXJ9L3N1bG9naW4gXAorICAgICAgICAgICAgICAgICAgLURub2xvZ2luLXBhdGg9JHtiYXNlX3NiaW5kaXJ9L25vbG9naW4gXAorICAgICAgICAgICAgICAgICAgLUR1bW91bnQtcGF0aD0ke2Jhc2VfYmluZGlyfS91bW91bnQiCisKK2RvX2luc3RhbGwoKSB7CisJbWVzb25fZG9faW5zdGFsbAorCWluc3RhbGwgLWQgJHtEfS8ke2Jhc2Vfc2JpbmRpcn0KKwlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzZXJpYWwtZ2V0dHktZ2VuZXJhdG9yJywgJ2ZhbHNlJywgJ3RydWUnLCBkKX07IHRoZW4KKwkJIyBQcm92aWRlZCBieSBhIHNlcGFyYXRlIHJlY2lwZQorCQlybSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zZXJpYWwtZ2V0dHkqIC1mCisJZmkKKworCSMgUHJvdmlkZSBzdXBwb3J0IGZvciBpbml0cmFtZnMKKwlbICEgLWUgJHtEfS9pbml0IF0gJiYgbG4gLXMgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kICR7RH0vaW5pdAorCVsgISAtZSAke0R9LyR7YmFzZV9zYmluZGlyfS91ZGV2ZCBdICYmIGxuIC1zICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCAke0R9LyR7YmFzZV9zYmluZGlyfS91ZGV2ZAorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kCisJaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vKi5ydWxlcyAke0R9JHtzeXNjb25mZGlyfS91ZGV2L3J1bGVzLmQvCisKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8wMC1jcmVhdGUtdm9sYXRpbGUuY29uZiAke0R9JHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLworCisJaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3Zpbml0JywndHJ1ZScsJ2ZhbHNlJyxkKX07IHRoZW4KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwkJaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvc3lzdGVtZC11ZGV2ZAorCQlzZWQgLWkgcyVAVURFVkRAJSR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCUgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c3RlbWQtdWRldmQKKwkJaW5zdGFsbCAtRG0gMDc1NSAke1N9L3NyYy9zeXN0ZW1jdGwvc3lzdGVtZC1zeXN2LWluc3RhbGwuU0tFTEVUT04gJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW1kLXN5c3YtaW5zdGFsbAorCWZpCisKKwljaG93biByb290OnN5c3RlbWQtam91cm5hbCAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nL2pvdXJuYWwKKworCSMgRGVsZXRlIGpvdXJuYWwgUkVBRE1FLCBhcyBsb2cgY2FuIGJlIHN5bWxpbmtlZCBpbnNpZGUgdm9sYXRpbGUuCisJcm0gLWYgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L2xvZy9SRUFETUUKKworCSMgam91cm5hbC1yZW1vdGUgY3JlYXRlcyB0aGlzIGF0IHN0YXJ0CisJcm0gLXJmICR7RH0vJHtsb2NhbHN0YXRlZGlyfS9sb2cvam91cm5hbC9yZW1vdGUKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vZ3JhcGhpY2FsLnRhcmdldC53YW50cworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMKKwlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Bvd2Vyb2ZmLnRhcmdldC53YW50cworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVib290LnRhcmdldC53YW50cworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVzY3VlLnRhcmdldC53YW50cworCisJIyBDcmVhdGUgc3ltbGlua3MgZm9yIHN5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3V0bXAnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2dyYXBoaWNhbC50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbXVsdGktdXNlci50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcG93ZXJvZmYudGFyZ2V0LndhbnRzL3N5c3RlbWQtdXBkYXRlLXV0bXAtcnVubGV2ZWwuc2VydmljZQorCQlsbiAtc2YgLi4vc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3JlYm9vdC50YXJnZXQud2FudHMvc3lzdGVtZC11cGRhdGUtdXRtcC1ydW5sZXZlbC5zZXJ2aWNlCisJCWxuIC1zZiAuLi9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmVzY3VlLnRhcmdldC53YW50cy9zeXN0ZW1kLXVwZGF0ZS11dG1wLXJ1bmxldmVsLnNlcnZpY2UKKwlmaQorCisJIyB0aGlzIGZpbGUgaXMgbmVlZGVkIHRvIGV4aXN0IGlmIG5ldHdvcmtkIGlzIGRpc2FibGVkIGJ1dCB0aW1lc3luY2QgaXMgc3RpbGwgaW4gdXNlIHNpbmNlIHRpbWVzeW5jZCBjaGVja3MgaXQKKwkjIGZvciBleGlzdGVuY2UgZWxzZSBpdCBmYWlscworCWlmIFsgLXMgJHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZiBdOyB0aGVuCisJCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25ldHdvcmtkJywgJzonLCAnc2VkIC1pIC1lICJcJGFkIC9ydW4vc3lzdGVtZC9uZXRpZi9saW5rcyAwNzU1IHJvb3Qgcm9vdCAtIiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mJywgZCl9CisJZmkKKwlpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJZWNobyAnTCEgJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZiAtIC0gLSAtIC4uL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYnID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL2V0Yy5jb25mCisJCWVjaG8gJ2QgL3J1bi9zeXN0ZW1kL3Jlc29sdmUgMDc1NSByb290IHJvb3QgLScgPj4ke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lzdGVtZC5jb25mCisJCWVjaG8gJ2YgL3J1bi9zeXN0ZW1kL3Jlc29sdmUvcmVzb2x2LmNvbmYgMDY0NCByb290IHJvb3QnID4+JHtEfSR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQuY29uZgorCQlsbiAtcyAuLi9ydW4vc3lzdGVtZC9yZXNvbHZlL3Jlc29sdi5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3Jlc29sdi1jb25mLnN5c3RlbWQKKwllbHNlCisJCXNlZCAtaSAtZSAicyVeTCEgL2V0Yy9yZXNvbHYuY29uZi4qJCVMISAvZXRjL3Jlc29sdi5jb25mIC0gLSAtIC0gLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiVnIiAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvZXRjLmNvbmYKKwkJbG4gLXMgLi4vcnVuL3N5c3RlbWQvcmVzb2x2ZS9yZXNvbHYuY29uZiAke0R9JHtzeXNjb25mZGlyfS9yZXNvbHYtY29uZi5zeXN0ZW1kCisJZmkKKwlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdmYWxzZScsICd0cnVlJywgZCl9OyB0aGVuCisJCXJtICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC94MTEuY29uZgorCQlybSAtciAke0R9JHtzeXNjb25mZGlyfS9YMTEKKwlmaQorCisJIyBJZiBwb2xraXQgaXMgc2V0dXAgZml4dXAgcGVybWlzc2lvbnMgYW5kIG93bmVyc2hpcAorCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BvbGtpdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCWlmIFsgLWQgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZCBdOyB0aGVuCisJCQljaG1vZCA3MDAgJHtEfSR7ZGF0YWRpcn0vcG9sa2l0LTEvcnVsZXMuZAorCQkJY2hvd24gcG9sa2l0ZDpyb290ICR7RH0ke2RhdGFkaXJ9L3BvbGtpdC0xL3J1bGVzLmQKKwkJZmkKKwlmaQorCisJIyBjcmVhdGUgbGluayBmb3IgZXhpc3RpbmcgdWRldiBydWxlcworCWxuIC1zICR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0gJHtEfSR7YmFzZV9zYmluZGlyfS91ZGV2YWRtCisKKwkjIGR1cGxpY2F0ZSB1ZGV2YWRtIGZvciBwb3N0aW5zdCBzY3JpcHQKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmV4ZWNkaXJ9CisJbG4gJHtEfSR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0gJHtEfSR7bGliZXhlY2Rpcn0vJHtNTFBSRUZJWH11ZGV2YWRtCisKKwkjIGluc3RhbGwgZGVmYXVsdCBwb2xpY3kgZm9yIHByZXNldHMKKwkjIGh0dHBzOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL3N5c3RlbWQvUHJlc2V0LyNob3d0bworCWluc3RhbGwgLURtIDA2NDQgJHtXT1JLRElSfS85OS1kZWZhdWx0LnByZXNldCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS1wcmVzZXQvOTktZGVmYXVsdC5wcmVzZXQKK30KKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCl7CisgICAgc3lzdGVtZGxpYmRpciA9IGQuZ2V0VmFyKCJyb290bGliZGlyIikKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBzeXN0ZW1kbGliZGlyLCAnXmxpYiguKilcLnNvXC4qJywgJ2xpYiVzJywgJ1N5c3RlbWQgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCit9CitQQUNLQUdFU19EWU5BTUlDICs9ICJebGliKHVkZXZ8c3lzdGVtZHxuc3MpLioiCisKK1BBQ0tBR0VfQkVGT1JFX1BOID0gIlwKKyAgICAke1BOfS1ndWkgXAorICAgICR7UE59LXZjb25zb2xlLXNldHVwIFwKKyAgICAke1BOfS1pbml0cmFtZnMgXAorICAgICR7UE59LWFuYWx5emUgXAorICAgICR7UE59LWtlcm5lbC1pbnN0YWxsIFwKKyAgICAke1BOfS1ycG0tbWFjcm9zIFwKKyAgICAke1BOfS1iaW5mbXQgXAorICAgICR7UE59LXpzaC1jb21wbGV0aW9uIFwKKyAgICAke1BOfS1jb250YWluZXIgXAorICAgICR7UE59LWpvdXJuYWwtZ2F0ZXdheWQgXAorICAgICR7UE59LWpvdXJuYWwtdXBsb2FkIFwKKyAgICAke1BOfS1qb3VybmFsLXJlbW90ZSBcCisgICAgJHtQTn0tZXh0cmEtdXRpbHMgXAorICAgIHVkZXYgXAorICAgIHVkZXYtaHdkYiBcCisiCisKK1NVTU1BUllfJHtQTn0tY29udGFpbmVyID0gIlRvb2xzIGZvciBjb250YWluZXJzIGFuZCBWTXMiCitERVNDUklQVElPTl8ke1BOfS1jb250YWluZXIgPSAiU3lzdGVtZCB0b29scyB0byBzcGF3biBhbmQgbWFuYWdlIGNvbnRhaW5lcnMgYW5kIHZpcnR1YWwgbWFjaGluZXMuIgorCitTVU1NQVJZXyR7UE59LWpvdXJuYWwtZ2F0ZXdheWQgPSAiSFRUUCBzZXJ2ZXIgZm9yIGpvdXJuYWwgZXZlbnRzIgorREVTQ1JJUFRJT05fJHtQTn0tam91cm5hbC1nYXRld2F5ZCA9ICJzeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQgc2VydmVzIGpvdXJuYWwgZXZlbnRzIG92ZXIgdGhlIG5ldHdvcmsuIENsaWVudHMgbXVzdCBjb25uZWN0IHVzaW5nIEhUVFAuIFRoZSBzZXJ2ZXIgbGlzdGVucyBvbiBwb3J0IDE5NTMxIGJ5IGRlZmF1bHQuIgorCitTVU1NQVJZXyR7UE59LWpvdXJuYWwtdXBsb2FkID0gIlNlbmQgam91cm5hbCBtZXNzYWdlcyBvdmVyIHRoZSBuZXR3b3JrIgorREVTQ1JJUFRJT05fJHtQTn0tam91cm5hbC11cGxvYWQgPSAic3lzdGVtZC1qb3VybmFsLXVwbG9hZCB1cGxvYWRzIGpvdXJuYWwgZW50cmllcyB0byBhIHNwZWNpZmllZCBVUkwuIgorCitTVU1NQVJZXyR7UE59LWpvdXJuYWwtcmVtb3RlID0gIlJlY2VpdmUgam91cm5hbCBtZXNzYWdlcyBvdmVyIHRoZSBuZXR3b3JrIgorREVTQ1JJUFRJT05fJHtQTn0tam91cm5hbC1yZW1vdGUgPSAic3lzdGVtZC1qb3VybmFsLXJlbW90ZSBpcyBhIGNvbW1hbmQgdG8gcmVjZWl2ZSBzZXJpYWxpemVkIGpvdXJuYWwgZXZlbnRzIGFuZCBzdG9yZSB0aGVtIHRvIGpvdXJuYWwgZmlsZXMuIgorCitTWVNURU1EX1BBQ0tBR0VTID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JpbmZtdCcsICcke1BOfS1iaW5mbXQnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbWljcm9odHRwZCcsICcke1BOfS1qb3VybmFsLWdhdGV3YXlkJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnJHtQTn0tam91cm5hbC1yZW1vdGUnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnam91cm5hbC11cGxvYWQnLCAnJHtQTn0tam91cm5hbC11cGxvYWQnLCAnJywgZCl9IFwKKyIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1iaW5mbXQgPSAic3lzdGVtZC1iaW5mbXQuc2VydmljZSIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSAke1BOfS1leHRyYS11dGlscyBcCisgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnJHtQTn0tam91cm5hbC1nYXRld2F5JywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ21pY3JvaHR0cGQnLCAnJHtQTn0tam91cm5hbC1yZW1vdGUnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnam91cm5hbC11cGxvYWQnLCAnJHtQTn0tam91cm5hbC11cGxvYWQnLCAnJywgZCl9IFwKKyIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi1yIHN5c3RlbWQtam91cm5hbCIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2NvcmVkdW1wJywgJy0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1jb3JlZHVtcDsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnbmV0d29ya2QnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLW5ldHdvcms7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BvbGtpdCcsICctLXN5c3RlbSAtLW5vLWNyZWF0ZS1ob21lIC0tdXNlci1ncm91cCAtLWhvbWUtZGlyICR7c3lzY29uZmRpcn0vcG9sa2l0LTEgcG9sa2l0ZDsnLCAnJywgZCl9IgorVVNFUkFERF9QQVJBTV8ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAnLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLXJlc29sdmU7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RpbWVzeW5jZCcsICctLXN5c3RlbSAtZCAvIC1NIC0tc2hlbGwgL2Jpbi9ub2xvZ2luIHN5c3RlbWQtdGltZXN5bmM7JywgJycsIGQpfSIKK1VTRVJBRERfUEFSQU1fJHtQTn0tZXh0cmEtdXRpbHMgPSAiLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWJ1cy1wcm94eSIKK1VTRVJBRERfUEFSQU1fJHtQTn0tam91cm5hbC1nYXRld2F5ID0gIi0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLWdhdGV3YXkiCitVU0VSQUREX1BBUkFNXyR7UE59LWpvdXJuYWwtcmVtb3RlID0gIi0tc3lzdGVtIC1kIC8gLU0gLS1zaGVsbCAvYmluL25vbG9naW4gc3lzdGVtZC1qb3VybmFsLXJlbW90ZSIKK1VTRVJBRERfUEFSQU1fJHtQTn0tam91cm5hbC11cGxvYWQgPSAiLS1zeXN0ZW0gLWQgLyAtTSAtLXNoZWxsIC9iaW4vbm9sb2dpbiBzeXN0ZW1kLWpvdXJuYWwtdXBsb2FkIgorCitGSUxFU18ke1BOfS1hbmFseXplID0gIiR7YmluZGlyfS9zeXN0ZW1kLWFuYWx5emUiCisKK0ZJTEVTXyR7UE59LWluaXRyYW1mcyA9ICIvaW5pdCIKK1JERVBFTkRTXyR7UE59LWluaXRyYW1mcyA9ICIke1BOfSIKKworRklMRVNfJHtQTn0tZ3VpID0gIiR7YmluZGlyfS9zeXN0ZW1hZG0iCisKK0ZJTEVTXyR7UE59LXZjb25zb2xlLXNldHVwID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC12Y29uc29sZS1zZXR1cCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtdmNvbnNvbGUtc2V0dXAuc2VydmljZSIKKworUkRFUEVORFNfJHtQTn0ta2VybmVsLWluc3RhbGwgKz0gImJhc2giCitGSUxFU18ke1BOfS1rZXJuZWwtaW5zdGFsbCA9ICIke2JpbmRpcn0va2VybmVsLWluc3RhbGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9rZXJuZWwvIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9rZXJuZWwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCitGSUxFU18ke1BOfS1ycG0tbWFjcm9zID0gIiR7ZXhlY19wcmVmaXh9L2xpYi9ycG0gXAorICAgICAgICAgICAgICAgICAgICAgICAgICIKKworRklMRVNfJHtQTn0tenNoLWNvbXBsZXRpb24gPSAiJHtkYXRhZGlyfS96c2gvc2l0ZS1mdW5jdGlvbnMiCisKK0ZJTEVTXyR7UE59LWJpbmZtdCA9ICIke3N5c2NvbmZkaXJ9L2JpbmZtdC5kLyBcCisgICAgICAgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2JpbmZtdC5kIFwKKyAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYmluZm10IFwKKyAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3Byb2Mtc3lzLWZzLWJpbmZtdF9taXNjLiogXAorICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1iaW5mbXQuc2VydmljZSIKK1JSRUNPTU1FTkRTXyR7UE59LWJpbmZtdCA9ICJrZXJuZWwtbW9kdWxlLWJpbmZtdC1taXNjIgorCitSUkVDT01NRU5EU18ke1BOfS12Y29uc29sZS1zZXR1cCA9ICJrYmQga2JkLWNvbnNvbGVmb250cyBrYmQta2V5bWFwcyIKKworCitGSUxFU18ke1BOfS1qb3VybmFsLWdhdGV3YXlkID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9zeXN0ZW1kLWpvdXJuYWwtZ2F0ZXdheWQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkLnNvY2tldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc29ja2V0cy50YXJnZXQud2FudHMvc3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkLnNvY2tldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vc3lzdGVtZC9nYXRld2F5ZC9icm93c2UuaHRtbCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWpvdXJuYWwtZ2F0ZXdheWQgPSAic3lzdGVtZC1qb3VybmFsLWdhdGV3YXlkLnNvY2tldCIKKworRklMRVNfJHtQTn0tam91cm5hbC11cGxvYWQgPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtdXBsb2FkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1qb3VybmFsLXVwbG9hZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsLXVwbG9hZC5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59LWpvdXJuYWwtdXBsb2FkID0gInN5c3RlbWQtam91cm5hbC11cGxvYWQuc2VydmljZSIKKworRklMRVNfJHtQTn0tam91cm5hbC1yZW1vdGUgPSAiJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWpvdXJuYWwtcmVtb3RlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsLXJlbW90ZS5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1qb3VybmFsLXJlbW90ZS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1qb3VybmFsLXJlbW90ZS5zb2NrZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tam91cm5hbC1yZW1vdGUgPSAic3lzdGVtZC1qb3VybmFsLXJlbW90ZS5zb2NrZXQiCisKKworRklMRVNfJHtQTn0tY29udGFpbmVyID0gIiR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c3RlbWQvc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL21hY2hpbmVzLnRhcmdldCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vbWFjaGluZWN0bCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtbnNwYXduIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke25vbmFyY2hfbGliZGlyfS9zeXN0ZW1kL2ltcG9ydC1wdWJyaW5nLmdwZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuYnVzbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9idXNuYW1lcy50YXJnZXQud2FudHMvb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmJ1c25hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbG9jYWwtZnMudGFyZ2V0LndhbnRzL3Zhci1saWItbWFjaGluZXMubW91bnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWFjaGluZXMudGFyZ2V0LndhbnRzL3Zhci1saWItbWFjaGluZXMubW91bnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vcmVtb3RlLWZzLnRhcmdldC53YW50cy92YXItbGliLW1hY2hpbmVzLm1vdW50IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L21hY2hpbmUuc2xpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vbWFjaGluZXMudGFyZ2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLmJ1c25hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLmJ1c25hbWUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1pbXBvcnRkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1tYWNoaW5lZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2RidXMtb3JnLmZyZWVkZXNrdG9wLm1hY2hpbmUxLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vdmFyLWxpYi1tYWNoaW5lcy5tb3VudCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWltcG9ydCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWltcG9ydGQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1tYWNoaW5lZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXB1bGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kL3N5c3RlbWQtbnNwYXduLmNvbmYgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vc3lzdGVtZC1uc3Bhd25ALnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJuc3NfbXltYWNoaW5lcy5zby4yIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMvb3JnLmZyZWVkZXNrdG9wLmltcG9ydDEuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLXNlcnZpY2VzL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AuaW1wb3J0MS5jb25mIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AubWFjaGluZTEuY29uZiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMS9hY3Rpb25zL29yZy5mcmVlZGVza3RvcC5pbXBvcnQxLnBvbGljeSBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9wb2xraXQtMS9hY3Rpb25zL29yZy5mcmVlZGVza3RvcC5tYWNoaW5lMS5wb2xpY3kgXAorICAgICAgICAgICAgICAgICAgICAgICAgIgorCitSUkVDT01NRU5EU18ke1BOfS1jb250YWluZXIgKz0gIlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1qb3VybmFsLXVwbG9hZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tam91cm5hbC1yZW1vdGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWpvdXJuYWwtZ2F0ZXdheWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgIgorCitGSUxFU18ke1BOfS1leHRyYS11dGlscyA9ICJcCisgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWVzY2FwZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2Jhc2VfYmluZGlyfS9zeXN0ZW1kLWluaGliaXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtZGV0ZWN0LXZpcnQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtcGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke2JpbmRpcn0vc3lzdGVtZC1ydW4gXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2F0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWRlbHRhIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kLWNnbHMgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtY2d0b3AgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L3N5c3RlbWQtc3RkaW8tYnJpZGdlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtYXNrLXBhc3N3b3JkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3N5c3RlbWQtdHR5LWFzay1wYXNzd29yZC1hZ2VudCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUucGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLWNvbnNvbGUucGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c2luaXQudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL211bHRpLXVzZXIudGFyZ2V0LndhbnRzL3N5c3RlbWQtYXNrLXBhc3N3b3JkLXdhbGwucGF0aCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtcmVzb2x2ZS1ob3N0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1hYy1wb3dlciBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbWQtYWN0aXZhdGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWJ1cy1wcm94eWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWJ1cy1wcm94eWQuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtYnVzLXByb3h5ZC5zb2NrZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXNvY2tldC1wcm94eWQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLXJlcGx5LXBhc3N3b3JkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC1zbGVlcCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL3N5c3RlbS1zbGVlcCBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaGliZXJuYXRlLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWh5YnJpZC1zbGVlcC5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vc3lzdGVtZC1zdXNwZW5kLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zbGVlcC50YXJnZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWluaXRjdGwgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zeXN0ZW1kLWluaXRjdGwuc2VydmljZSBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaW5pdGN0bC5zb2NrZXQgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9zb2NrZXRzLnRhcmdldC53YW50cy9zeXN0ZW1kLWluaXRjdGwuc29ja2V0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtLWdlbmVyYXRvcnMvc3lzdGVtZC1ncHQtYXV0by1nZW5lcmF0b3IgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vc3lzdGVtZC9zeXN0ZW1kLWNncm91cHMtYWdlbnQgXAorIgorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9zeXN0ZW1kL2NvcmVkdW1wLmNvbmYgXAorCSR7c3lzY29uZmRpcn0vc3lzdGVtZC9qb3VybmFsZC5jb25mIFwKKwkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvbG9naW5kLmNvbmYgXAorCSR7c3lzY29uZmRpcn0vc3lzdGVtZC9uZXR3b3JrZC5jb25mIFwKKwkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvcHN0b3JlLmNvbmYgXAorCSR7c3lzY29uZmRpcn0vc3lzdGVtZC9yZXNvbHZlZC5jb25mIFwKKwkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvc2xlZXAuY29uZiBcCisJJHtzeXNjb25mZGlyfS9zeXN0ZW1kL3N5c3RlbS5jb25mIFwKKwkke3N5c2NvbmZkaXJ9L3N5c3RlbWQvdGltZXN5bmNkLmNvbmYgXAorCSR7c3lzY29uZmRpcn0vc3lzdGVtZC91c2VyLmNvbmYgXAorIgorCitGSUxFU18ke1BOfSA9ICIgJHtiYXNlX2JpbmRpcn0vKiBcCisgICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duIFwKKyAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vaGFsdCBcCisgICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3Bvd2Vyb2ZmIFwKKyAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vcnVubGV2ZWwgXAorICAgICAgICAgICAgICAgICR7YmFzZV9zYmluZGlyfS90ZWxpbml0IFwKKyAgICAgICAgICAgICAgICAke2Jhc2Vfc2JpbmRpcn0vcmVzb2x2Y29uZiBcCisgICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3JlYm9vdCBcCisgICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L2luaXQgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3NlcnZpY2VzIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vcG9sa2l0LTEgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vJHtCUE59IFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2ZhY3RvcnkgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vZGJ1cy0xLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9tb2R1bGVzLWxvYWQuZC8gXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcGFtLmQvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2N0bC5kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9zeXN0ZW1kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS90bXBmaWxlcy5kLyBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS94ZGcvIFwKKyAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9SRUFETUUgXAorICAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZCBcCisgICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9YMTEveGluaXQveGluaXRyYy5kLyogXAorICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvKiBcCisgICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9LyogXAorICAgICAgICAgICAgICAgICR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Lyouc28gXAorICAgICAgICAgICAgICAgIC9jZ3JvdXAgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9zeXN0ZW1kKiBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2J1c2N0bCBcCisgICAgICAgICAgICAgICAgJHtiaW5kaXJ9L2NvcmVkdW1wY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vbG9jYWxlY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vaG9zdG5hbWVjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9yZXNvbHZlY3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0vdGltZWRhdGVjdGwgXAorICAgICAgICAgICAgICAgICR7YmluZGlyfS9ib290Y3RsIFwKKyAgICAgICAgICAgICAgICAke2JpbmRpcn0va2VybmVsLWluc3RhbGwgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi90bXBmaWxlcy5kLyouY29uZiBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c3RlbWQgXAorICAgICAgICAgICAgICAgICR7ZXhlY19wcmVmaXh9L2xpYi9tb2R1bGVzLWxvYWQuZCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL3N5c2N0bC5kIFwKKyAgICAgICAgICAgICAgICAke2V4ZWNfcHJlZml4fS9saWIvc3lzdXNlcnMuZCBcCisgICAgICAgICAgICAgICAgJHtleGVjX3ByZWZpeH0vbGliL2Vudmlyb25tZW50LmQgXAorICAgICAgICAgICAgICAgICR7bG9jYWxzdGF0ZWRpcn0gXAorICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC83MC11YWNjZXNzLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNzEtc2VhdC5ydWxlcyBcCisgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzczLXNlYXQtbGF0ZS5ydWxlcyBcCisgICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzk5LXN5c3RlbWQucnVsZXMgXAorICAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L21vZHByb2JlLmQvc3lzdGVtZC5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AudGltZWRhdGUxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5sb2NhbGUxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5uZXR3b3JrMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AucmVzb2x2ZTEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLnN5c3RlbWQxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5ob3N0bmFtZTEuY29uZiBcCisgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQvb3JnLmZyZWVkZXNrdG9wLmxvZ2luMS5jb25mIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0uZC9vcmcuZnJlZWRlc2t0b3AudGltZXN5bmMxLmNvbmYgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL3N5c3RlbS5kL29yZy5mcmVlZGVza3RvcC5wb3J0YWJsZTEuY29uZiBcCisgICAgICAgICAgICAgICAiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5sYSAke2RhdGFkaXJ9L2RidXMtMS9pbnRlcmZhY2VzLyAke3N5c2NvbmZkaXJ9L3JwbS9tYWNyb3Muc3lzdGVtZCIKKworUkRFUEVORFNfJHtQTn0gKz0gImttb2QgZGJ1cyB1dGlsLWxpbnV4LW1vdW50IHV0aWwtbGludXgtdW1vdW50IHVkZXYgKD0gJHtFWFRFTkRQS0dWfSkgdXRpbC1saW51eC1hZ2V0dHkgdXRpbC1saW51eC1mc2NrIgorUkRFUEVORFNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3NlcmlhbC1nZXR0eS1nZW5lcmF0b3InLCAnJywgJ3N5c3RlbWQtc2VyaWFsZ2V0dHknLCBkKX0iCitSREVQRU5EU18ke1BOfSArPSAidm9sYXRpbGUtYmluZHMiCisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICJzeXN0ZW1kLWV4dHJhLXV0aWxzIFwKKyAgICAgICAgICAgICAgICAgICAgICB1ZGV2LWh3ZGIgXAorICAgICAgICAgICAgICAgICAgICAgIGUyZnNwcm9ncy1lMmZzY2sgXAorICAgICAgICAgICAgICAgICAgICAgIGtlcm5lbC1tb2R1bGUtYXV0b2ZzNCBrZXJuZWwtbW9kdWxlLXVuaXgga2VybmVsLW1vZHVsZS1pcHY2IGtlcm5lbC1tb2R1bGUtc2NoLWZxLWNvZGVsIFwKKyAgICAgICAgICAgICAgICAgICAgICBvcy1yZWxlYXNlIFwKKyAgICAgICAgICAgICAgICAgICAgICBzeXN0ZW1kLWNvbmYgXAorIgorCitJTlNBTkVfU0tJUF8ke1BOfSArPSAiZGV2LXNvIGxpYmRpciIKK0lOU0FORV9TS0lQXyR7UE59LWRiZyArPSAibGliZGlyIgorSU5TQU5FX1NLSVBfJHtQTn0tZG9jICs9ICIgbGliZGlyIgorCitSUFJPVklERVNfdWRldiA9ICJob3RwbHVnIgorCitSREVQRU5EU191ZGV2LWh3ZGIgKz0gInVkZXYiCisKK0ZJTEVTX3VkZXYgKz0gIiR7YmFzZV9zYmluZGlyfS91ZGV2ZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS9zeXN0ZW1kL25ldHdvcmsvOTktZGVmYXVsdC5saW5rIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3N5c3RlbWQvc3lzdGVtZC11ZGV2ZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2FjY2VsZXJvbWV0ZXIgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9hdGFfaWQgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9jZHJvbV9pZCBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2NvbGxlY3QgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9maWRvX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvZmluZGtleWJvYXJkcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L2tleWJvYXJkLWZvcmNlLXJlbGVhc2Uuc2ggXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9rZXltYXAgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9tdGRfcHJvYmUgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9zY3NpX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvdjRsX2lkIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYva2V5bWFwcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNTAtdWRldi1kZWZhdWx0LnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1hdXRvc3VzcGVuZC1jaHJvbWl1bW9zLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1ibG9jay5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjAtY2Ryb21faWQucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzYwLWRybS5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjAtZXZkZXYucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzYwLWZpZG8taWQucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzYwLWlucHV0LWlkLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1wZXJzaXN0ZW50LWFsc2EucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzYwLXBlcnNpc3RlbnQtaW5wdXQucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzYwLXBlcnNpc3RlbnQtc3RvcmFnZS5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjAtcGVyc2lzdGVudC1zdG9yYWdlLXRhcGUucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzYwLXBlcnNpc3RlbnQtdjRsLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82MC1zZW5zb3IucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzYwLXNlcmlhbC5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNjEtYXV0b3N1c3BlbmQtbWFudWFsLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC82NC1idHJmcy5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNzAtam95c3RpY2sucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzcwLW1vdXNlLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC83MC1wb3dlci1zd2l0Y2gucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzcwLXRvdWNocGFkLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvcnVsZXMuZC83NS1uZXQtZGVzY3JpcHRpb24ucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzc1LXByb2JlX210ZC5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvNzgtc291bmQtY2FyZC5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvODAtZHJpdmVycy5ydWxlcyBcCisgICAgICAgICAgICAgICAke3Jvb3RsaWJleGVjZGlyfS91ZGV2L3J1bGVzLmQvODAtbmV0LXNldHVwLWxpbmsucnVsZXMgXAorICAgICAgICAgICAgICAgJHtyb290bGliZXhlY2Rpcn0vdWRldi9ydWxlcy5kLzkwLXZjb25zb2xlLnJ1bGVzIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vdWRldiBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXN0ZW1kLXVkZXZkIFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKnVkZXYqIFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vKi53YW50cy8qdWRldiogXAorICAgICAgICAgICAgICAgJHtiYXNlX2JpbmRpcn0vc3lzdGVtZC1od2RiIFwKKyAgICAgICAgICAgICAgICR7YmFzZV9iaW5kaXJ9L3VkZXZhZG0gXAorICAgICAgICAgICAgICAgJHtiYXNlX3NiaW5kaXJ9L3VkZXZhZG0gXAorICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS8ke01MUFJFRklYfXVkZXZhZG0gXAorICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMvdWRldmFkbSBcCisgICAgICAgICAgICAgICAke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL3N5c3RlbWQtaHdkYi11cGRhdGUuc2VydmljZSBcCisgICAgICAgICAgICAgICIKKworRklMRVNfdWRldi1od2RiID0gIiR7cm9vdGxpYmV4ZWNkaXJ9L3VkZXYvaHdkYi5kIFwKKyAgICAgICAgICAgICAgICAgICAiCisKK1JDT05GTElDVFNfJHtQTn0gPSAidGlueS1pbml0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3Jlc29sdmVkJywgJ3Jlc29sdmNvbmYnLCAnJywgZCl9IgorCitJTklUU0NSSVBUX1BBQ0tBR0VTID0gInVkZXYiCitJTklUU0NSSVBUX05BTUVfdWRldiA9ICJzeXN0ZW1kLXVkZXZkIgorSU5JVFNDUklQVF9QQVJBTVNfdWRldiA9ICJzdGFydCAwMyBTIC4iCisKK3B5dGhvbiBfX2Fub255bW91cygpIHsKKyAgICBpZiBub3QgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgZC5zZXRWYXIoIklOSElCSVRfVVBEQVRFUkNEX0JCQ0xBU1MiLCAiMSIpCit9CisKK3B5dGhvbiBkb193YXJuX211c2woKSB7CisgICAgaWYgZC5nZXRWYXIoJ1RDTElCQycpID09ICJtdXNsIjoKKyAgICAgICAgYmIud2FybigiVXNpbmcgc3lzdGVtZCB3aXRoIG11c2wgaXMgbm90IHJlY29tbWVuZGVkIHNpbmNlIGl0IGlzIG5vdCBzdXBwb3J0ZWQgdXBzdHJlYW0gYW5kIHNvbWUgcGF0Y2hlcyBhcmUga25vd24gdG8gYmUgcHJvYmxlbWF0aWMuIikKK30KK2FkZHRhc2sgd2Fybl9tdXNsIGJlZm9yZSBkb19jb25maWd1cmUKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiaGFsdCByZWJvb3Qgc2h1dGRvd24gcG93ZXJvZmYgcnVubGV2ZWwgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncmVzb2x2ZWQnLCAncmVzb2x2LWNvbmYnLCAnJywgZCl9IgorCitBTFRFUk5BVElWRV9UQVJHRVRbcmVzb2x2LWNvbmZdID0gIiR7c3lzY29uZmRpcn0vcmVzb2x2LWNvbmYuc3lzdGVtZCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZXNvbHYtY29uZl0gPSAiJHtzeXNjb25mZGlyfS9yZXNvbHYuY29uZiIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3Jlc29sdi1jb25mXSA/PSAiNTAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtoYWx0XSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaGFsdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2hhbHQiCitBTFRFUk5BVElWRV9QUklPUklUWVtoYWx0XSA/PSAiMzAwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbcmVib290XSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcmVib290XSA9ICIke2Jhc2Vfc2JpbmRpcn0vcmVib290IgorQUxURVJOQVRJVkVfUFJJT1JJVFlbcmVib290XSA/PSAiMzAwIgorCitBTFRFUk5BVElWRV9UQVJHRVRbc2h1dGRvd25dID0gIiR7YmFzZV9iaW5kaXJ9L3N5c3RlbWN0bCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzaHV0ZG93bl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duIgorQUxURVJOQVRJVkVfUFJJT1JJVFlbc2h1dGRvd25dID89ICIzMDAiCisKK0FMVEVSTkFUSVZFX1RBUkdFVFtwb3dlcm9mZl0gPSAiJHtiYXNlX2JpbmRpcn0vc3lzdGVtY3RsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3Bvd2Vyb2ZmXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcG93ZXJvZmYiCitBTFRFUk5BVElWRV9QUklPUklUWVtwb3dlcm9mZl0gPz0gIjMwMCIKKworQUxURVJOQVRJVkVfVEFSR0VUW3J1bmxldmVsXSA9ICIke2Jhc2VfYmluZGlyfS9zeXN0ZW1jdGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcnVubGV2ZWxdID0gIiR7YmFzZV9zYmluZGlyfS9ydW5sZXZlbCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3J1bmxldmVsXSA/PSAiMzAwIgorCitwa2dfcG9zdGluc3RfJHtQTn1fbGliYy1nbGliYyAoKSB7CisJc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bXlob3N0bmFtZVw+Ly8nIFwKKwkJLWUgJ3MvXCheaG9zdHM6LipcKVwoXDxmaWxlc1w+XClcKC4qXClcKFw8ZG5zXD5cKVwoLipcKS9cMVwyIG15aG9zdG5hbWUgXDNcNFw1LycgXAorCQktaSAkRCR7c3lzY29uZmRpcn0vbnNzd2l0Y2guY29uZgorfQorCitwa2dfcHJlcm1fJHtQTn1fbGliYy1nbGliYyAoKSB7CisJc2VkIC1lICcvXmhvc3RzOi9zL1xzKlw8bXlob3N0bmFtZVw+Ly8nIFwKKwkJLWUgJy9eaG9zdHM6L3MvXHMqbXlob3N0bmFtZS8vJyBcCisJCS1pICREJHtzeXNjb25mZGlyfS9uc3N3aXRjaC5jb25mCit9CisKK1BBQ0tBR0VfV1JJVEVfREVQUyArPSAicWVtdS1uYXRpdmUiCitwa2dfcG9zdGluc3RfdWRldi1od2RiICgpIHsKKwlpZiB0ZXN0IC1uICIkRCI7IHRoZW4KKwkJJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IHVwZGF0ZV91ZGV2X2h3ZGIgJHtQS0d9IG1scHJlZml4PSR7TUxQUkVGSVh9IGJpbnByZWZpeD0ke01MUFJFRklYfSByb290bGliZXhlY2Rpcj0iJHtyb290bGliZXhlY2Rpcn0iIFBSRUZFUlJFRF9QUk9WSURFUl91ZGV2PSIke1BSRUZFUlJFRF9QUk9WSURFUl91ZGV2fSIKKwllbHNlCisJCXVkZXZhZG0gaHdkYiAtLXVwZGF0ZQorCWZpCit9CisKK3BrZ19wcmVybV91ZGV2LWh3ZGIgKCkgeworCXJtIC1mICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0LzAwMDEtVGhpcy1maXhlcy1hbi1pc3N1ZS10aGF0LWNsYW5nLXJlcG9ydHMtYWJvdXQtbXV0bGlwbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvMDAwMS1UaGlzLWZpeGVzLWFuLWlzc3VlLXRoYXQtY2xhbmctcmVwb3J0cy1hYm91dC1tdXRsaXBsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMzVjMTVjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvMDAwMS1UaGlzLWZpeGVzLWFuLWlzc3VlLXRoYXQtY2xhbmctcmVwb3J0cy1hYm91dC1tdXRsaXBsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotRnJvbSAzNmFjOTdiZmU1MTc5NzQ1ODQ0MmE2MDM1MjE5YTUwNGE0MmU3MDNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjEgQXVnIDIwMTUgMTA6NTY6NDAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gVGhpcyBmaXhlcyBhbiBpc3N1ZSB0aGF0IGNsYW5nIHJlcG9ydHMgYWJvdXQgbXV0bGlwbGUgb3V0cHV0Ci0gZmlsZXMKLQotSXNzdWUgaXMgdGhhdCB3ZSBhcmUgcGFzc2luZyAuaCBmaWxlIHRvIGxpbmsgc3RlcCBhcyBzZWVuIGJlbG93LgotCi18IGFybS1vZS1saW51eC1nbnVlYWJpLWNsYW5nICAtbWFyY2g9YXJtdjctYSAtbXRodW1iICAtbWZsb2F0LWFiaT1oYXJkCi0tbWZwdT1uZW9uLXZmcHY0IC1tdHVuZT1jb3J0ZXgtYTcgLURfX2V4dGVybl9hbHdheXNfaW5saW5lPWlubGluZQotLW5vLWludGVncmF0ZWQtYXMKLS0tc3lzcm9vdD0vbW50L2hvbWUva3Jhai93b3JrL2FuZ3N0cm9tL3NvdXJjZXMvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLWdsaWJjL3N5c3Jvb3RzL3Jhc3BiZXJyeXBpMgotLVdsLC1PMSAtV2wsLS1oYXNoLXN0eWxlPWdudSAtV2wsLS1hcy1uZWVkZWQgIGhhbHQubyBpZmRvd24ubyBoZGRvd24ubwotdXRtcC5vIHJlYm9vdC5oICAgLW8gaGFsdAotfCBjbGFuZy0zLjc6IGVycm9yOiBjYW5ub3Qgc3BlY2lmeSAtbyB3aGVuIGdlbmVyYXRpbmcgbXVsdGlwbGUgb3V0cHV0Ci1maWxlcwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9NYWtlZmlsZSB8IDYgKysrLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZSBiL3NyYy9NYWtlZmlsZQotaW5kZXggZTc3ZWQ1Zi4uYTZmOWY0MCAxMDA2NDQKLS0tLSBhL3NyYy9NYWtlZmlsZQotKysrIGIvc3JjL01ha2VmaWxlCi1AQCAtMTAzLDkgKzEwMyw5IEBAIGFsbDoJCSQoQklOKSAkKFNCSU4pICQoVVNSQklOKQotIGluaXQ6CQlMRExJQlMgKz0gJChJTklUTElCUykgJChTVEFUSUMpCi0gaW5pdDoJCWluaXQubyBpbml0X3V0bXAubwotIAotLWhhbHQ6CQloYWx0Lm8gaWZkb3duLm8gaGRkb3duLm8gdXRtcC5vIHJlYm9vdC5oCi0raGFsdDoJCWhhbHQubyBpZmRvd24ubyBoZGRvd24ubyB1dG1wLm8KLSAKLS1sYXN0OgkJbGFzdC5vIG9sZHV0bXAuaAotK2xhc3Q6CQlsYXN0Lm8KLSAKLSBtZXNnOgkJbWVzZy5vCi0gCi1AQCAtMTIwLDcgKzEyMCw3IEBAIHN1bG9naW46CXN1bG9naW4ubwotIAotIHdhbGw6CQlkb3dhbGwubyB3YWxsLm8KLSAKLS1zaHV0ZG93bjoJZG93YWxsLm8gc2h1dGRvd24ubyB1dG1wLm8gcmVib290LmgKLStzaHV0ZG93bjoJZG93YWxsLm8gc2h1dGRvd24ubyB1dG1wLm8KLSAKLSBib290bG9nZDoJTERMSUJTICs9IC1sdXRpbAotIGJvb3Rsb2dkOglib290bG9nZC5vCi0tLSAKLTIuMS40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvMDAwMS1pbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWlub3ItZGVmaW5lcy1pbi1nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbmVzLWluLWcucGF0Y2gKaW5kZXggZTEzYWM5ZC4uNjBmYmQ4NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbmVzLWluLWcucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC8wMDAxLWluY2x1ZGUtc3lzLXN5c21hY3Jvcy5oLWZvci1tYWpvci1taW5vci1kZWZpbmVzLWluLWcucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDNjMjlhODZmMzUxZWE0ODI3ZGM0NDViYjhlNmNiNzc0NTQzYzliZTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGM3MTBhM2FjY2QxZmFiZGI2NzEyNzRlMWE0NTg0MDUyODJkNTFlMGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCA2IEF1ZyAyMDE4IDE1OjM4OjU4IC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3lzL3N5c21hY3Jvcy5oIGZvciBtYWpvci9taW5vciBkZWZpbml0aW9ucwpAQCAtMTMsMTAgKzEzLDEwIEBACiAgMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NyYy9ib290bG9nZC5jIGIvc3JjL2Jvb3Rsb2dkLmMKLWluZGV4IDU3MGQzODIuLjY4ZDYyZjMgMTAwNjQ0CitpbmRleCA3ODdkYjg3Li44YjA3OTAzIDEwMDY0NAogLS0tIGEvc3JjL2Jvb3Rsb2dkLmMKICsrKyBiL3NyYy9ib290bG9nZC5jCi1AQCAtMzUsNiArMzUsNyBAQAorQEAgLTI5LDYgKzI5LDcgQEAKICAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CiAgI2luY2x1ZGUgPHN5cy90aW1lLmg+CiAgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CkBAIC0yNSw3ICsyNSw3IEBACiAgI2luY2x1ZGUgPHN5cy91dHNuYW1lLmg+CiAgI2luY2x1ZGUgPHRpbWUuaD4KIGRpZmYgLS1naXQgYS9zcmMvbW91bnRwb2ludC5jIGIvc3JjL21vdW50cG9pbnQuYwotaW5kZXggOWUzZGQ5Yy4uOTFmNzRlZCAxMDA2NDQKK2luZGV4IDVmMjA1MjIuLjk0ZGY3YTEgMTAwNjQ0CiAtLS0gYS9zcmMvbW91bnRwb2ludC5jCiArKysgYi9zcmMvbW91bnRwb2ludC5jCiBAQCAtMjUsNiArMjUsNyBAQApAQCAtMzcsNyArMzcsNyBAQAogICNpbmNsdWRlIDxzdGRsaWIuaD4KICAjaW5jbHVkZSA8c3RyaW5nLmg+CiBkaWZmIC0tZ2l0IGEvc3JjL3NodXRkb3duLmMgYi9zcmMvc2h1dGRvd24uYwotaW5kZXggN2U5OTdkYS4uMTdkZTU4ZCAxMDA2NDQKK2luZGV4IGI3NDRhMmMuLjQwYjdmYWYgMTAwNjQ0CiAtLS0gYS9zcmMvc2h1dGRvd24uYwogKysrIGIvc3JjL3NodXRkb3duLmMKIEBAIC00MCw2ICs0MCw3IEBACkBAIC00Niw1ICs0Niw1IEBACiAgI2luY2x1ZGUgPHN5cy9zdGF0Lmg+CiArI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4KICAjaW5jbHVkZSA8c3lzL3dhaXQuaD4KLSAjaW5jbHVkZSA8dGltZS5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KKyAjaWZkZWYgX19saW51eF9fCisgI2luY2x1ZGUgPHN5cy9zeXNtYWNyb3MuaD4gICAvKiBicm91Z2h0IGluIG15IExGUyBwYXRjaCAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9jcnlwdC1saWIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0L2NyeXB0LWxpYi5wYXRjaAppbmRleCA3YjM0MjkwLi5iZDQ0NDRiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0L2NyeXB0LWxpYi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0L2NyeXB0LWxpYi5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gNzI3NjI3NWQ5YTA4ZDVhZTI2OGZiMjYzMDI3YmJjNjBiYzBhYjJlOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplZmYgRGlrZSA8amRpa2VAeDg2XzY0LnVzZXItbW9kZS1saW51eC5vcmc+CitEYXRlOiBXZWQsIDE0IEp1bCAyMDEwIDE0OjM1OjUyIC0wNDAwCitTdWJqZWN0OiBbUEFUQ0hdIHN5c3Zpbml0IC0gUmVtb3ZlIHN1bG9naW4gZGVwZW5kZW5jeSBvbiAvdXNyL2xpYiovbGliY3J5cHQuYQorCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCiAKICMgVGhlIHNyYyBNYWtlZmlsZSB3YXMgY2hlY2tpbmcgZm9yIGxpYmNyeXB0LmEgb24gdGhlIGhvc3QsIG5vdCBpbiB0aGUKQEAgLTUsMjEgKzEwLDI3IEBACiAjIGFuZCB1c2VzIGl0IGlmIGl0J3MgdGhlcmUuCiAjIC0gamRpa2VAbGludXguaW50ZWwuY29tCiAKLUluZGV4OiBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9NYWtlZmlsZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN5c3Zpbml0LTIuODhkc2Yub3JpZy9zcmMvTWFrZWZpbGUKLSsrKyBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9NYWtlZmlsZQotQEAgLTg1LDkgKzg1LDEzIEBAIGVsc2UKKy0tLQorIHNyYy9NYWtlZmlsZSB8IDkgKystLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZSBiL3NyYy9NYWtlZmlsZQoraW5kZXggMTM4MGQ3Zi4uNjI4ZTc3ZiAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZQorKysrIGIvc3JjL01ha2VmaWxlCitAQCAtOTcsMTMgKzk3LDggQEAgZWxzZQogIGVuZGlmCiAgCiAgIyBBZGRpdGlvbmFsIGxpYnMgZm9yIEdOVSBsaWJjLgorLWlmbmVxICgkKHdpbGRjYXJkIC91c3IvbGliKi9saWJjcnlwdC4qKSwpCistICBTVUxPR0lOTElCUwkrPSAtbGNyeXB0CistZW5kaWYKKy0KKy0jIEFkZGl0aW9uYWwgbGlicyBmb3IgR05VIGxpYmMgLyBtdWx0aWFyY2ggb24gRGViaWFuIGJhc2VkIHN5c3RlbXMuCistaWZuZXEgKCQod2lsZGNhcmQgL3Vzci9saWIvKi9saWJjcnlwdC4qKSwpCistICBTVUxPR0lOTElCUwkrPSAtbGNyeXB0CiAraWZuZXEgKCQoTENSWVBUKSwpCiArICBTVUxPR0lOTElCUwkrPSAkKExDUllQVCkKLStlbHNlCi0gaWZuZXEgKCQod2lsZGNhcmQgL3Vzci9saWIqL2xpYmNyeXB0LmEpLCkKLSAgIFNVTE9HSU5MSUJTCSs9IC1sY3J5cHQKICBlbmRpZgotK2VuZGlmCiAgCiAgYWxsOgkJJChCSU4pICQoU0JJTikgJChVU1JCSU4pCi0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0L2luc3RhbGwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0L2luc3RhbGwucGF0Y2gKaW5kZXggNmM0MjI1YS4uMjkzMGZiMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9pbnN0YWxsLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvaW5zdGFsbC5wYXRjaApAQCAtMSwxMCArMSwxOSBAQAorRnJvbSBiNmNjNjZhYjI0NWNlYjZiY2EwMTE2ZGZmN2E0MWY2ZDc2NzdiOTZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUWluZyBIZSA8cWluZy5oZUBpbnRlbC5jb20+CitEYXRlOiBGcmksIDE4IEp1biAyMDEwIDA5OjQwOjMwICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHN5c3Zpbml0OiB1cGdyYWRlIHRvIHZlcnNpb24gMi44OGRzZgorCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAorLS0tCisgc3JjL01ha2VmaWxlIHwgNTMgKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAyMyBkZWxldGlvbnMoLSkKKwogZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZSBiL3NyYy9NYWtlZmlsZQotaW5kZXggZTJiODAyOC4uM2UxMWU5MiAxMDA2NDQKK2luZGV4IDlmOWYwOWUuLjEzODBkN2YgMTAwNjQ0CiAtLS0gYS9zcmMvTWFrZWZpbGUKICsrKyBiL3NyYy9NYWtlZmlsZQotQEAgLTY1LDcgKzY1LDE0IEBAIGVsc2UKK0BAIC03Nyw3ICs3NywxNCBAQCBlbHNlCiAgICBJTlNUQUxMX0RBVEEJPSBpbnN0YWxsIC1tIDY0NAogIGVuZGlmCiAgSU5TVEFMTF9ESVIJPSBpbnN0YWxsIC1tIDc1NSAtZApAQCAtMjAsMTAgKzI5LDEwIEBACiAgCiAgaWZlcSAoJChXSVRIX1NFTElOVVgpLHllcykKICAgIFNFTElOVVhfREVGCT0gIC1EV0lUSF9TRUxJTlVYCi1AQCAtMTM4LDM5ICsxNDUsMzkgQEAgY2xvYmJlcjoJY2xlYW5vYmpzCitAQCAtMTg5LDQyICsxOTYsNDIgQEAgY2xvYmJlcjoJY2xlYW5vYmpzCiAgZGlzdGNsZWFuOgljbG9iYmVyCiAgCi0gaW5zdGFsbDoKKyBpbnN0YWxsOglhbGwKIC0JCSQoSU5TVEFMTF9ESVIpICQoUk9PVCkvYmluLyAkKFJPT1QpL3NiaW4vCiAtCQkkKElOU1RBTExfRElSKSAkKFJPT1QpL3Vzci9iaW4vCiArCQkkKElOU1RBTExfRElSKSAkKFJPT1QpJChiYXNlX2JpbmRpcikvICQoUk9PVCkkKGJhc2Vfc2JpbmRpcikvCkBAIC00MCwxNiArNDksMTQgQEAKIC0JCQkkKElOU1RBTExfRVhFQykgJCRpICQoUk9PVCkvdXNyL2Jpbi8gOyBcCiArCQkJJChJTlNUQUxMX0VYRUMpICQkaSAkKFJPT1QpJChiaW5kaXIpLyA7IFwKICAJCWRvbmUKLS0JCSMgJChJTlNUQUxMX0RJUikgJChST09UKS9ldGMvCi0tCQkjICQoSU5TVEFMTF9FWEVDKSBpbml0c2NyaXB0LnNhbXBsZSAkKFJPT1QpL2V0Yy8KKyAJCSMgJChJTlNUQUxMX0RJUikgJChST09UKS9ldGMvCisgCQkjICQoSU5TVEFMTF9FWEVDKSAuLi9kb2MvaW5pdHNjcmlwdC5zYW1wbGUgJChST09UKS9ldGMvCiAtCQlsbiAtc2YgaGFsdCAkKFJPT1QpL3NiaW4vcmVib290CiAtCQlsbiAtc2YgaGFsdCAkKFJPT1QpL3NiaW4vcG93ZXJvZmYKIC0JCWxuIC1zZiBpbml0ICQoUk9PVCkvc2Jpbi90ZWxpbml0CiAtCQlsbiAtc2YgL3NiaW4va2lsbGFsbDUgJChST09UKS9iaW4vcGlkb2YKIC0JCWlmIFsgISAtZiAkKFJPT1QpL3Vzci9iaW4vbGFzdGIgXTsgdGhlbiBcCiAtCQkJbG4gLXNmIGxhc3QgJChST09UKS91c3IvYmluL2xhc3RiOyBcCi0rCQkjICQoSU5TVEFMTF9ESVIpICQoUk9PVCkkKHN5c2NvbmZkaXIpLwotKwkJIyAkKElOU1RBTExfRVhFQykgaW5pdHNjcmlwdC5zYW1wbGUgJChST09UKSQoc3lzY29uZmRpcikvCiArCQlsbiAtc2YgaGFsdCAkKFJPT1QpJChiYXNlX3NiaW5kaXIpL3JlYm9vdAogKwkJbG4gLXNmIGhhbHQgJChST09UKSQoYmFzZV9zYmluZGlyKS9wb3dlcm9mZgogKwkJbG4gLXNmIGluaXQgJChST09UKSQoYmFzZV9zYmluZGlyKS90ZWxpbml0CkBAIC02NywxNyArNzQsMjMgQEAKICsJCSQoSU5TVEFMTF9ESVIpICQoUk9PVCkkKG1hbmRpcikvbWFuMS8KICsJCSQoSU5TVEFMTF9ESVIpICQoUk9PVCkkKG1hbmRpcikvbWFuNS8KICsJCSQoSU5TVEFMTF9ESVIpICQoUk9PVCkkKG1hbmRpcikvbWFuOC8KLSAJCWZvciBpIGluICQoTUFOMSk7IGRvIFwKLS0JCQkkKElOU1RBTExfREFUQSkgLi4vbWFuLyQkaSAkKFJPT1QpJChNQU5ESVIpL21hbjEvOyBcCi0rCQkJJChJTlNUQUxMX0RBVEEpIC4uL21hbi8kJGkgJChST09UKSQobWFuZGlyKS9tYW4xLzsgXAorIAkJZm9yIG1hbiBpbiAkKE1BTjEpOyBkbyBcCistCQkJJChJTlNUQUxMX0RBVEEpIC4uL21hbi8kJG1hbiAkKFJPT1QpJChNQU5ESVIpL21hbjEvOyBcCistCQkJc2VkIC1pICIxeyAkKE1BTkRCKTsgfSIgJChST09UKSQoTUFORElSKS9tYW4xLyQkbWFuIDsgXAorKwkJCSQoSU5TVEFMTF9EQVRBKSAuLi9tYW4vJCRtYW4gJChST09UKSQobWFuZGlyKS9tYW4xLzsgXAorKwkJCXNlZCAtaSAiMXsgJChNQU5EQik7IH0iICQoUk9PVCkkKG1hbmRpcikvbWFuMS8kJG1hbiA7IFwKICAJCWRvbmUKLSAJCWZvciBpIGluICQoTUFONSk7IGRvIFwKLS0JCQkkKElOU1RBTExfREFUQSkgLi4vbWFuLyQkaSAkKFJPT1QpJChNQU5ESVIpL21hbjUvOyBcCi0rCQkJJChJTlNUQUxMX0RBVEEpIC4uL21hbi8kJGkgJChST09UKSQobWFuZGlyKS9tYW41LzsgXAorIAkJZm9yIG1hbiBpbiAkKE1BTjUpOyBkbyBcCistCQkJJChJTlNUQUxMX0RBVEEpIC4uL21hbi8kJG1hbiAkKFJPT1QpJChNQU5ESVIpL21hbjUvOyBcCistCQkJc2VkIC1pICIxeyAkKE1BTkRCKTsgfSIgJChST09UKSQoTUFORElSKS9tYW41LyQkbWFuIDsgXAorKwkJCSQoSU5TVEFMTF9EQVRBKSAuLi9tYW4vJCRtYW4gJChST09UKSQobWFuZGlyKS9tYW41LzsgXAorKwkJCXNlZCAtaSAiMXsgJChNQU5EQik7IH0iICQoUk9PVCkkKG1hbmRpcikvbWFuNS8kJG1hbiA7IFwKICAJCWRvbmUKLSAJCWZvciBpIGluICQoTUFOOCk7IGRvIFwKLS0JCQkkKElOU1RBTExfREFUQSkgLi4vbWFuLyQkaSAkKFJPT1QpJChNQU5ESVIpL21hbjgvOyBcCi0rCQkJJChJTlNUQUxMX0RBVEEpIC4uL21hbi8kJGkgJChST09UKSQobWFuZGlyKS9tYW44LzsgXAorIAkJZm9yIG1hbiBpbiAkKE1BTjgpOyBkbyBcCistCQkJJChJTlNUQUxMX0RBVEEpIC4uL21hbi8kJG1hbiAkKFJPT1QpJChNQU5ESVIpL21hbjgvOyBcCistCQkJc2VkIC1pICIxeyAkKE1BTkRCKTsgfSIgJChST09UKSQoTUFORElSKS9tYW44LyQkbWFuIDsgXAorKwkJCSQoSU5TVEFMTF9EQVRBKSAuLi9tYW4vJCRtYW4gJChST09UKSQobWFuZGlyKS9tYW44LzsgXAorKwkJCXNlZCAtaSAiMXsgJChNQU5EQik7IH0iICQoUk9PVCkkKG1hbmRpcikvbWFuOC8kJG1hbiA7IFwKICAJCWRvbmUKICBpZmVxICgkKFJPT1QpLCkKICAJCSMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvcGlkb2YtYWRkLW0tb3B0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9waWRvZi1hZGQtbS1vcHRpb24ucGF0Y2gKaW5kZXggNWI1ZGZkYy4uNDk0YWEwZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9waWRvZi1hZGQtbS1vcHRpb24ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9waWRvZi1hZGQtbS1vcHRpb24ucGF0Y2gKQEAgLTEsNCArMSw3IEBACi1waWRvZjogYWRkIC1tIG9wdGlvbgorRnJvbSA2YzQ5MGVhNjU3OWExMzJmYWJiN2RiZDI1Mzg3YmI1MjFmODIwMzcxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAyNCBKdWwgMjAxMyAxNzowNzoyMiArMDgwMAorU3ViamVjdDogW1BBVENIXSBwaWRvZjogYWRkIC1tIG9wdGlvbgogCiBXaGVuIHVzZWQgd2l0aCAtbywgd2lsbCBhbHNvIG9taXQgYW55IHByb2Nlc3NlcyB0aGF0IGhhdmUgdGhlIHNhbWUKIGFyZ3ZbMF0gYW5kIGFyZ3ZbMV0gYXMgYW55IGV4cGxpY2l0bHkgb21pdHRlZCBwcm9jZXNzIGlkcy4gVGhpcyBjYW4gYmUKQEAgLTExLDIzICsxNCwyNSBAQAogSW1wb3J0ZWQgcGF0Y2ggZnJvbTogaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL2F0dGFjaG1lbnQuY2dpP2lkPTY1ODE2NgogCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKIC0tLQotIG1hbi9waWRvZi44ICAgIHwgIDYgKysrKysrCi0gc3JjL2tpbGxhbGw1LmMgfCA2MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tCisgbWFuL3BpZG9mLjggICAgfCAgNiArKysrKworIHNyYy9raWxsYWxsNS5jIHwgNjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0KICAyIGZpbGVzIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9tYW4vcGlkb2YuOCBiL21hbi9waWRvZi44CitpbmRleCBlYmU1ZjU1Li4yZmRjNGQzIDEwMDY0NAogLS0tIGEvbWFuL3BpZG9mLjgKICsrKyBiL21hbi9waWRvZi44Ci1AQCAtMjQsNiArMjQsNyBAQCBwaWRvZiAtLSBmaW5kIHRoZSBwcm9jZXNzIElEIG9mIGEgcnVubmluZyBwcm9ncmFtLgotIC5SQiBbIFwtYyBdCitAQCAtMjUsNiArMjUsNyBAQCBwaWRvZiAtLSBmaW5kIHRoZSBwcm9jZXNzIElEIG9mIGEgcnVubmluZyBwcm9ncmFtLgogIC5SQiBbIFwtbiBdCiAgLlJCIFsgXC14IF0KKyAuUkIgWyBcLXogXQogKy5SQiBbIFwtbSBdCiAgLlJCIFsgXC1vCi0gLklSIG9taXRwaWRbLG9taXRwaWQuLl0gXQorIC5JUiBvbWl0cGlkWyxvbWl0cGlkLi4uXSBdCiAgLlJCIFsgXC1vCi1AQCAtNjMsNiArNjQsMTEgQEAgc2hlbGxzIHJ1bm5pbmcgdGhlIG5hbWVkIHNjcmlwdHMuCitAQCAtNzYsNiArNzcsMTEgQEAgaXMgc2hvd24uIFRoZSBkZWZhdWx0IHNlcGFyYXRvciBpcyBhIHNwYWNlLgogIFRlbGxzIFxmSXBpZG9mXGZQIHRvIG9taXQgcHJvY2Vzc2VzIHdpdGggdGhhdCBwcm9jZXNzIGlkLiBUaGUgc3BlY2lhbAogIHBpZCBcZkIlUFBJRFxmUCBjYW4gYmUgdXNlZCB0byBuYW1lIHRoZSBwYXJlbnQgcHJvY2VzcyBvZiB0aGUgXGZJcGlkb2ZcZlAKICBwcm9ncmFtLCBpbiBvdGhlciB3b3JkcyB0aGUgY2FsbGluZyBzaGVsbCBvciBzaGVsbCBzY3JpcHQuCkBAIC00MCwxMCArNDUsMTAgQEAKICAuVFAKICAuQiAwCiBkaWZmIC0tZ2l0IGEvc3JjL2tpbGxhbGw1LmMgYi9zcmMva2lsbGFsbDUuYwotaW5kZXggNTkzN2Q5OC4uZTczODg1ZSAxMDA2NDQKK2luZGV4IDhiNWNiMzguLmE2NjQ5NTQgMTAwNjQ0CiAtLS0gYS9zcmMva2lsbGFsbDUuYwogKysrIGIvc3JjL2tpbGxhbGw1LmMKLUBAIC0xMTgsNiArMTE4LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgX3NfbmZzCitAQCAtMTI2LDYgKzEyNiw3IEBAIHR5cGVkZWYgc3RydWN0IF9zX25mcwogIAogIC8qIExpc3Qgb2YgcHJvY2Vzc2VzLiAqLwogIFBST0MgKnBsaXN0OwpAQCAtNTEsNyArNTYsNyBAQAogIAogIC8qIExpc3Qgb2YgcHJvY2Vzc2VzIHRvIG9taXQuICovCiAgT01JVCAqb21pdDsKLUBAIC0zNDUsNiArMzQ2LDIwIEBAIHN0YXRpYyB2b2lkIGNsZWFyX21udCh2b2lkKQorQEAgLTM2MSw2ICszNjIsMjAgQEAgc3RhdGljIHZvaWQgY2xlYXJfbW50KHZvaWQpCiAgCX0KICB9CiAgCkBAIC03MCw5ICs3NSw5IEBACiArfQogKwogIC8qCi0gICogICAgIENoZWNrIGlmIHBhdGggaXMgaWEgc2hhZG93IG9mZiBhIE5GUyBwYXJ0aXRpb24uCisgICogICAgIENoZWNrIGlmIHBhdGggaXMgYSBzaGFkb3cgb2ZmIGEgTkZTIHBhcnRpdGlvbi4KICAgKi8KLUBAIC00NTIsNiArNDY3LDcgQEAgaW50IHJlYWRwcm9jKGludCBkb19zdGF0KQorQEAgLTQ4Niw2ICs1MDEsNyBAQCBpbnQgcmVhZHByb2MoaW50IGRvX3N0YXQpCiAgCURJUgkJKmRpcjsKICAJRklMRQkJKmZwOwogIAlQUk9DCQkqcCwgKm47CkBAIC04MCw3ICs4NSw3IEBACiAgCXN0cnVjdCBkaXJlbnQJKmQ7CiAgCXN0cnVjdCBzdGF0CXN0OwogIAljaGFyCQlwYXRoW1BBVEhfTUFYKzFdOwotQEAgLTYyNCw2ICs2NDAsMTcgQEAgaW50IHJlYWRwcm9jKGludCBkb19zdGF0KQorQEAgLTczMyw2ICs3NDksMTcgQEAgaW50IHJlYWRwcm9jKGludCBkb19zdGF0KQogIAkJcC0+bmV4dCA9IHBsaXN0OwogIAkJcGxpc3QgPSBwOwogIAkJcC0+cGlkID0gcGlkOwpAQCAtOTgsNyArMTAzLDcgQEAKICAJfQogIAljbG9zZWRpcihkaXIpOwogIAotQEAgLTgxMyw2ICs4NDAsMjYgQEAgUElEUV9IRUFEICpwaWRvZihjaGFyICpwcm9nKQorQEAgLTk0NCw2ICs5NzEsMjYgQEAgUElEUV9IRUFEICpwaWRvZihjaGFyICpwcm9nKQogIAlyZXR1cm4gcTsKICB9CiAgCkBAIC0xMjUsNDIgKzEzMCw0MiBAQAogIC8qIEdpdmUgdXNhZ2UgbWVzc2FnZSBhbmQgZXhpdC4gKi8KICB2b2lkIHVzYWdlKHZvaWQpCiAgewotQEAgLTg0NSw2ICs4OTIsNyBAQCB2b2lkIG5zeXNsb2coaW50IHByaSwgY2hhciAqZm10LCAuLi4pCi0gI2RlZmluZSBQSURPRl9TSU5HTEUJMHgwMQorQEAgLTk5NCw2ICsxMDQxLDcgQEAgdm9pZCBuc3lzbG9nKGludCBwcmksIGNoYXIgKmZtdCwgLi4uKQogICNkZWZpbmUgUElET0ZfT01JVAkweDAyCiAgI2RlZmluZSBQSURPRl9ORVRGUwkweDA0CisgI2RlZmluZSBQSURPRl9RVUlFVCAgICAgMHgwOAogKyNkZWZpbmUgUElET0ZfT01JVF9PTUlUX01BVENIRVMJMHgwOAogIAogIC8qCiAgICoJUGlkb2YgZnVuY3Rpb25hbGl0eS4KLUBAIC04NjEsNiArOTA5LDcgQEAgaW50IG1haW5fcGlkb2YoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAlzdHJ1Y3Qgc3RhdAlzdDsKK0BAIC0xMDExLDYgKzEwNTksNyBAQCBpbnQgbWFpbl9waWRvZihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgCWNoYXIJCXRtcFs1MTJdOworICAgICAgICAgY2hhciAgICAgICAgICAgIHNlcCA9ICcgJzsKICAKICsJb2xpc3QgPSAoUFJPQyopMDsKICAJb21pdCA9IChPTUlUKikwOwogIAlubGlzdCA9IChORlMqKTA7CiAgCW9wdGVyciA9IDA7Ci1AQCAtODY4LDcgKzkxNyw3IEBAIGludCBtYWluX3BpZG9mKGludCBhcmdjLCBjaGFyICoqYXJndikKK0BAIC0xMDE4LDcgKzEwNjcsNyBAQCBpbnQgbWFpbl9waWRvZihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgCWlmICgodG9rZW4gPSBnZXRlbnYoIlBJRE9GX05FVEZTIikpICYmIChzdHJjbXAodG9rZW4sIm5vIikgIT0gMCkpCiAgCQlmbGFncyB8PSBQSURPRl9ORVRGUzsKICAKLS0Jd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYyxhcmd2LCJoY286c3huIikpICE9IEVPRikgc3dpdGNoIChvcHQpIHsKLSsJd2hpbGUgKChvcHQgPSBnZXRvcHQoYXJnYyxhcmd2LCJoY21vOnN4biIpKSAhPSBFT0YpIHN3aXRjaCAob3B0KSB7CistCXdoaWxlICgob3B0ID0gZ2V0b3B0KGFyZ2MsYXJndiwicWhjbzpkOnN4em4iKSkgIT0gRU9GKSBzd2l0Y2ggKG9wdCkgeworKwl3aGlsZSAoKG9wdCA9IGdldG9wdChhcmdjLGFyZ3YsInFoY21vOmQ6c3h6biIpKSAhPSBFT0YpIHN3aXRjaCAob3B0KSB7CiAgCQljYXNlICc/JzoKICAJCQluc3lzbG9nKExPR19FUlIsImludmFsaWQgb3B0aW9ucyBvbiBjb21tYW5kIGxpbmUhXG4iKTsKICAJCQljbG9zZWxvZygpOwotQEAgLTkwNyw2ICs5NTYsOSBAQCBpbnQgbWFpbl9waWRvZihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQljYXNlICd4JzoKLSAJCQlzY3JpcHRzX3RvbysrOwotIAkJCWJyZWFrOworQEAgLTEwNjksNiArMTExOCw5IEBAIGludCBtYWluX3BpZG9mKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAgICAgICAgICAgICAgICAgY2FzZSAneic6CisgICAgICAgICAgICAgICAgICAgICAgICAgbGlzdF9kel9wcm9jZXNzZXMgPSBUUlVFOworICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrOwogKwkJY2FzZSAnbSc6CiArCQkJZmxhZ3MgfD0gUElET0ZfT01JVF9PTUlUX01BVENIRVM7CiArCQkJYnJlYWs7CiAgCQljYXNlICduJzoKICAJCQlmbGFncyB8PSBQSURPRl9ORVRGUzsKICAJCQlicmVhazsKLUBAIC05MzgsMTAgKzk5MCwxMyBAQCBpbnQgbWFpbl9waWRvZihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtMTEwMCwxMCArMTE1MiwxMyBAQCBpbnQgbWFpbl9waWRvZihpbnQgYXJnYywgY2hhciAqKmFyZ3YpCiAgCQkJcGlkX3Qgc3BpZCA9IDA7CiAgCQkJd2hpbGUgKChwID0gZ2V0X25leHRfZnJvbV9waWRfcShxKSkpIHsKICAJCQkJaWYgKChmbGFncyAmIFBJRE9GX09NSVQpICYmIG9taXQpIHsKQEAgLTE3NiwxNCArMTgxLDExIEBACiAgCQkJCQl9CiAgCiAgCQkJCQkvKgotQEAgLTk3Nyw2ICsxMDMyLDcgQEAgaW50IG1haW5fcGlkb2YoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAlpZiAoIWZpcnN0KQorQEAgLTExNDUsNiArMTIwMCw3IEBAIGludCBtYWluX3BpZG9mKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJCXByaW50ZigiXG4iKTsKKyAgICAgICAgIH0KICAKICsJY2xlYXJfb21pdCgpOwogIAljbGVhcl9tbnQoKTsKICAKICAJY2xvc2Vsb2coKTsKLS0tIAotMS44LjEuMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0L3JlYWxwYXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdC9yZWFscGF0aC5wYXRjaAppbmRleCA1ZTBkY2EzLi44NTlmZDhiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0L3JlYWxwYXRoLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXQvcmVhbHBhdGgucGF0Y2gKQEAgLTEsNCArMSw4IEBACi1GaXggYnVpbGQgb24gbXVzbCB1c2UgcmVhbHBhdGgoKSBBUEkgaXRzIGF2YWlsYWJsZSBvbiBhbGwgbGliY3MKK0Zyb20gZWIxNThjOTdmMTlkNDczZDAxYmVmZTk2MzU5YTdmOTNhZTgzNDUxNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDE5IE5vdiAyMDE1IDAwOjEwOjAzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBidWlsZCBvbiBtdXNsIHVzZSByZWFscGF0aCgpIEFQSSBpdHMgYXZhaWxhYmxlIG9uIGFsbAorIGxpYmNzCiAKIHJlYWxwYXRoKCkgQVBJIGRvZXNudCB3b3JrIG9uIHN5c3RlbXMgd2l0aCBQQVRIX01BWCBzZXQgdG8gYmUgdW5saW1pdGVkIGUuZy4gR05VL0h1cmQKIEhvd2V2ZXIgZm9yIExpbnV4IGl0IHNob3VsZCBhbHdheXMgd29yawpAQCAtNyw1MiArMTEsMTcgQEAKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIAotSW5kZXg6IHN5c3Zpbml0LTIuODhkc2Yvc3JjL2lmZG93bi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3lzdmluaXQtMi44OGRzZi5vcmlnL3NyYy9pZmRvd24uYwkyMDEwLTAzLTIzIDA3OjM3OjAxLjAwMDAwMDAwMCAtMDcwMAotKysrIHN5c3Zpbml0LTIuODhkc2Yvc3JjL2lmZG93bi5jCTIwMTQtMDQtMDIgMDA6NDM6NDMuNjc1NDM3MDI5IC0wNzAwCi1AQCAtMjYsMTEgKzI2LDExIEBACi0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotICNpbmNsdWRlIDx0aW1lLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotKyNpbmNsdWRlIDxlcnJuby5oPgotIAotICNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KLSAjaW5jbHVkZSA8c3lzL3NvY2tldC5oPgotICNpbmNsdWRlIDxzeXMvdGltZS5oPgotLSNpbmNsdWRlIDxzeXMvZXJybm8uaD4KLSAKLSAjaW5jbHVkZSA8bmV0L2lmLmg+Ci0gI2luY2x1ZGUgPG5ldGluZXQvaW4uaD4KLUluZGV4OiBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9pbml0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzeXN2aW5pdC0yLjg4ZHNmLm9yaWcvc3JjL2luaXQuYwkyMDE0LTA0LTAyIDAwOjQyOjEwLjQ4ODc3MDE2MiAtMDcwMAotKysrIHN5c3Zpbml0LTIuODhkc2Yvc3JjL2luaXQuYwkyMDE0LTA0LTAyIDAwOjQyOjU5LjQzMjEwMzgyMyAtMDcwMAotQEAgLTQ5LDYgKzQ5LDcgQEAKLSAjaW5jbHVkZSA8dXRtcC5oPgotICNpbmNsdWRlIDxjdHlwZS5oPgotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSsjaW5jbHVkZSA8c3lzL3R0eWRlZmF1bHRzLmg+Ci0gI2luY2x1ZGUgPHN5cy9zeXNsb2cuaD4KLSAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KLSAKLUluZGV4OiBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9tb3VudHBvaW50LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzeXN2aW5pdC0yLjg4ZHNmLm9yaWcvc3JjL21vdW50cG9pbnQuYwkyMDA5LTA5LTEwIDAxOjI4OjQ5LjAwMDAwMDAwMCAtMDcwMAotKysrIHN5c3Zpbml0LTIuODhkc2Yvc3JjL21vdW50cG9pbnQuYwkyMDE0LTA0LTAyIDAwOjQ0OjE4LjI0ODc3MDk0MiAtMDcwMAotQEAgLTIzLDYgKzIzLDcgQEAKLSAgKgkJRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQotICAqLwotIAotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotSW5kZXg6IHN5c3Zpbml0LTIuODhkc2Yvc3JjL2tpbGxhbGw1LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzeXN2aW5pdC0yLjg4ZHNmLm9yaWcvc3JjL2tpbGxhbGw1LmMJMjAxNC0wMy0yNiAwMDo0OTo1Mi45ODI2NjgwNzQgLTA3MDAKLSsrKyBzeXN2aW5pdC0yLjg4ZHNmL3NyYy9raWxsYWxsNS5jCTIwMTQtMDQtMDIgMDA6NDY6NDUuODM4NzcxNjUzIC0wNzAwCi1AQCAtODQ2LDkgKzg0Niw5IEBACistLS0KKyBzcmMva2lsbGFsbDUuYyAgIHwgNCArKy0tCisgc3JjL21vdW50cG9pbnQuYyB8IDEgKworIHNyYy93YWxsLmMgICAgICAgfCAxICsKKyAzIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9raWxsYWxsNS5jIGIvc3JjL2tpbGxhbGw1LmMKK2luZGV4IGE2NjQ5NTQuLjk3OTg0MjMgMTAwNjQ0CistLS0gYS9zcmMva2lsbGFsbDUuYworKysrIGIvc3JjL2tpbGxhbGw1LmMKK0BAIC05NzcsOSArOTc3LDkgQEAgaW50IG1hdGNoZXMoUFJPQyAqbywgUFJPQyAqcCkKICAJY2hhciAqb2FyZ3YxLCAqcGFyZ3YxOwogIAlpZiAoKG8tPmFyZ3YwICYmIHAtPmFyZ3YwICYmICFzdHJjbXAoby0+YXJndjAscC0+YXJndjApKSkgewogIAkJaWYgKG8tPmFyZ3YxICYmIHAtPmFyZ3YxKSB7CkBAIC02NCwxNCArMzMsMjYgQEAKICAJCQkJcGFyZ3YxID0gc3RyZHVwKHAtPmFyZ3YxKTsKICAJCQlpZiAoISBzdHJjbXAob2FyZ3YxLCBwYXJndjEpKSB7CiAgCQkJCXJldCA9IDE7Ci1JbmRleDogc3lzdmluaXQtMi44OGRzZi9zcmMvd2FsbC5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3lzdmluaXQtMi44OGRzZi5vcmlnL3NyYy93YWxsLmMJMjAwOS0xMS0yMiAxNDowNTo1My4wMDAwMDAwMDAgLTA4MDAKLSsrKyBzeXN2aW5pdC0yLjg4ZHNmL3NyYy93YWxsLmMJMjAxNC0wNC0wMiAwMDo0OToxNS4yNTg3NzIyMTcgLTA3MDAKLUBAIC0yOSw2ICsyOSw3IEBACitkaWZmIC0tZ2l0IGEvc3JjL21vdW50cG9pbnQuYyBiL3NyYy9tb3VudHBvaW50LmMKK2luZGV4IGIyNDMzNWUuLjVmMjA1MjIgMTAwNjQ0CistLS0gYS9zcmMvbW91bnRwb2ludC5jCisrKysgYi9zcmMvbW91bnRwb2ludC5jCitAQCAtMjMsNiArMjMsNyBAQAorICAqCQlGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgICovCisgCisrI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorICNpbmNsdWRlIDxzeXMvc3RhdC5oPgogICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CitkaWZmIC0tZ2l0IGEvc3JjL3dhbGwuYyBiL3NyYy93YWxsLmMKK2luZGV4IGQzYTJjNzAuLjAwODI2ZTkgMTAwNjQ0CistLS0gYS9zcmMvd2FsbC5jCisrKysgYi9zcmMvd2FsbC5jCitAQCAtMzAsNiArMzAsNyBAQAogICNpbmNsdWRlIDxwd2QuaD4KICAjaW5jbHVkZSA8c3lzbG9nLmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgogKyNpbmNsdWRlIDx0aW1lLmg+CiAgI2luY2x1ZGUgImluaXQuaCIKICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXRfMi44OGRzZi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXRfMi44OGRzZi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGZkNmRmOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3N5c3Zpbml0L3N5c3Zpbml0XzIuODhkc2YuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMTAgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0tViBsaWtlIGluaXQiCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgaXMgcmVxdWlyZWQgdG8gYm9vdCBpbiBtb3N0IGNvbmZpZ3VyYXRpb25zLiAgSXQgcHJvdmlkZXMgdGhlIC9zYmluL2luaXQgcHJvZ3JhbS4gIFRoaXMgaXMgdGhlIGZpcnN0IHByb2Nlc3Mgc3RhcnRlZCBvbiBib290LCBhbmQgdGhlIGxhc3QgcHJvY2VzcyB0ZXJtaW5hdGVkIGJlZm9yZSB0aGUgc3lzdGVtIGhhbHRzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9zYXZhbm5haC5ub25nbnUub3JnL3Byb2plY3RzL3N5c3Zpbml0LyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWVJJR0hUO2VuZGxpbmU9MTU7bWQ1PTM0OWM4NzJlMDA2NjE1NWUxODE4Yjc4NjkzODg3NmE0IgotUFIgPSAicjE0IgotCi1SREVQRU5EU18ke1BOfSA9ICIke1BOfS1pbml0dGFiIgotCi1TUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vc3lzdmluaXQvc3lzdmluaXQtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9pbnN0YWxsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NyeXB0LWxpYi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9waWRvZi1hZGQtbS1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1UaGlzLWZpeGVzLWFuLWlzc3VlLXRoYXQtY2xhbmctcmVwb3J0cy1hYm91dC1tdXRsaXBsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlYWxwYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluZXMtaW4tZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9yY1MtZGVmYXVsdCBcCi0gICAgICAgICAgIGZpbGU6Ly9yYyBcCi0gICAgICAgICAgIGZpbGU6Ly9yY1MgXAotICAgICAgICAgICBmaWxlOi8vYm9vdGxvZ2QuaW5pdCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMV9ib290bG9nZCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2ZWRhOGE5N2I4NmUwYTZmNTlkYWJiZjI1MjAyYWE2ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MGJiYzhjMWUxNzkyMDU2ZTIzNzYxZDIyOTYwYjMwYmIxM2VjY2MyY2FiZmY4YzczMTBhMDFmNGQ1ZGYxNTE5IgotCi1TID0gIiR7V09SS0RJUn0vc3lzdmluaXQtJHtQVn0iCi1CID0gIiR7U30vc3JjIgotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMgZmVhdHVyZXNfY2hlY2sKLURFUEVORFNfYXBwZW5kID0gIiB1cGRhdGUtcmMuZC1uYXRpdmUgYmFzZS1wYXNzd2QgdmlydHVhbC9jcnlwdCIKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInN5c3Zpbml0IgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJpbml0IG1vdW50cG9pbnQgaGFsdCByZWJvb3QgcnVubGV2ZWwgc2h1dGRvd24gcG93ZXJvZmYgbGFzdCBsYXN0YiBtZXNnIHV0bXBkdW1wIHdhbGwiCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjIwMCIKLQotQUxURVJOQVRJVkVfTElOS19OQU1FW2luaXRdID0gIiR7YmFzZV9zYmluZGlyfS9pbml0IgotQUxURVJOQVRJVkVfUFJJT1JJVFlbaW5pdF0gPSAiNTAiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVttb3VudHBvaW50XSA9ICIke2Jhc2VfYmluZGlyfS9tb3VudHBvaW50IgotQUxURVJOQVRJVkVfUFJJT1JJVFlbbW91bnRwb2ludF0gPSAiMjAiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtoYWx0XSA9ICIke2Jhc2Vfc2JpbmRpcn0vaGFsdCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtyZWJvb3RdID0gIiR7YmFzZV9zYmluZGlyfS9yZWJvb3QiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcnVubGV2ZWxdID0gIiR7YmFzZV9zYmluZGlyfS9ydW5sZXZlbCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzaHV0ZG93bl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Bvd2Vyb2ZmXSA9ICIke2Jhc2Vfc2JpbmRpcn0vcG93ZXJvZmYiCi0KLUFMVEVSTkFUSVZFXyR7UE59LXBpZG9mID0gInBpZG9mIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3BpZG9mXSA9ICIke2Jhc2VfYmluZGlyfS9waWRvZiIKLQotQUxURVJOQVRJVkVfJHtQTn0tc3Vsb2dpbiA9ICJzdWxvZ2luIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3N1bG9naW5dID0gIiR7YmFzZV9zYmluZGlyfS9zdWxvZ2luIgotCi1BTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAibW91bnRwb2ludC4xIGxhc3QuMSBsYXN0Yi4xIG1lc2cuMSB3YWxsLjEgc3Vsb2dpbi44IHV0bXBkdW1wLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtsYXN0LjFdID0gIiR7bWFuZGlyfS9tYW4xL2xhc3QuMSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtsYXN0Yi4xXSA9ICIke21hbmRpcn0vbWFuMS9sYXN0Yi4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW21lc2cuMV0gPSAiJHttYW5kaXJ9L21hbjEvbWVzZy4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW21vdW50cG9pbnQuMV0gPSAiJHttYW5kaXJ9L21hbjEvbW91bnRwb2ludC4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3N1bG9naW4uOF0gPSAiJHttYW5kaXJ9L21hbjgvc3Vsb2dpbi44IgotQUxURVJOQVRJVkVfTElOS19OQU1FW3V0bXBkdW1wLjFdID0gIiR7bWFuZGlyfS9tYW4xL3V0bXBkdW1wLjEiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbd2FsbC4xXSA9ICIke21hbmRpcn0vbWFuMS93YWxsLjEiCi0KLVBBQ0tBR0VTID0rICJzeXN2aW5pdC1waWRvZiBzeXN2aW5pdC1zdWxvZ2luIgotRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9zYmluZGlyfS8qICR7YmFzZV9iaW5kaXJ9LyoiCi1GSUxFU19zeXN2aW5pdC1waWRvZiA9ICIke2Jhc2VfYmluZGlyfS9waWRvZi5zeXN2aW5pdCAke2Jhc2Vfc2JpbmRpcn0va2lsbGFsbDUiCi1GSUxFU19zeXN2aW5pdC1zdWxvZ2luID0gIiR7YmFzZV9zYmluZGlyfS9zdWxvZ2luLnN5c3Zpbml0IgotCi1SREVQRU5EU18ke1BOfSArPSAic3lzdmluaXQtcGlkb2YgaW5pdGQtZnVuY3Rpb25zIgotCi1DRkxBR1NfcHJlcGVuZCA9ICItRF9HTlVfU09VUkNFICIKLWV4cG9ydCBMQ1JZUFQgPSAiLWxjcnlwdCIKLUVYVFJBX09FTUFLRSArPSAiJ2Jhc2VfYmluZGlyPSR7YmFzZV9iaW5kaXJ9JyBcCi0JCSAnYmFzZV9zYmluZGlyPSR7YmFzZV9zYmluZGlyfScgXAotCQkgJ2JpbmRpcj0ke2JpbmRpcn0nIFwKLQkJICdzYmluZGlyPSR7c2JpbmRpcn0nIFwKLQkJICdzeXNjb25mZGlyPSR7c3lzY29uZmRpcn0nIFwKLQkJICdpbmNsdWRlZGlyPSR7aW5jbHVkZWRpcn0nIFwKLQkJICdtYW5kaXI9JHttYW5kaXJ9JyIKLQotZG9faW5zdGFsbCAoKSB7Ci0Jb2VfcnVubWFrZSAnUk9PVD0ke0R9JyBpbnN0YWxsCi0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9IFwKLQkJICAgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdCBcCi0JCSAgICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWZvciBsZXZlbCBpbiBTIDAgMSAyIDMgNCA1IDY7IGRvCi0JCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vcmMkbGV2ZWwuZAotCWRvbmUKLQotCWluc3RhbGwgLW0gMDY0NCAgICAke1dPUktESVJ9L3JjUy1kZWZhdWx0CSR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvcmNTCi0JaW5zdGFsbCAtbSAwNzU1ICAgICR7V09SS0RJUn0vcmMJCSR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAotCWluc3RhbGwgLW0gMDc1NSAgICAke1dPUktESVJ9L3JjUwkJJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JaW5zdGFsbCAtbSAwNzU1ICAgICR7V09SS0RJUn0vYm9vdGxvZ2QuaW5pdCAgICAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Jvb3Rsb2dkCi0JbG4gLXNmIGJvb3Rsb2dkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zdG9wLWJvb3Rsb2dkCi0KLQl1cGRhdGUtcmMuZCAtciAke0R9IGJvb3Rsb2dkIHN0YXJ0IDA3IFMgLgotCXVwZGF0ZS1yYy5kIC1yICR7RH0gc3RvcC1ib290bG9nZCBzdGFydCA5OSAyIDMgNCA1IC4KLQotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMKLQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS8wMV9ib290bG9nZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcwotCi0JY2hvd24gcm9vdDpzaHV0ZG93biAke0R9JHtiYXNlX3NiaW5kaXJ9L2hhbHQgJHtEfSR7YmFzZV9zYmluZGlyfS9zaHV0ZG93bgotCWNobW9kIG8teCx1K3MgJHtEfSR7YmFzZV9zYmluZGlyfS9oYWx0ICR7RH0ke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24KLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXRfMi45Ni5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvc3lzdmluaXQvc3lzdmluaXRfMi45Ni5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMmI4NWVkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS9zeXN2aW5pdC9zeXN2aW5pdF8yLjk2LmJiCkBAIC0wLDAgKzEsMTE0IEBACitTVU1NQVJZID0gIlN5c3RlbS1WIGxpa2UgaW5pdCIKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBpcyByZXF1aXJlZCB0byBib290IGluIG1vc3QgY29uZmlndXJhdGlvbnMuICBJdCBwcm92aWRlcyB0aGUgL3NiaW4vaW5pdCBwcm9ncmFtLiAgVGhpcyBpcyB0aGUgZmlyc3QgcHJvY2VzcyBzdGFydGVkIG9uIGJvb3QsIGFuZCB0aGUgbGFzdCBwcm9jZXNzIHRlcm1pbmF0ZWQgYmVmb3JlIHRoZSBzeXN0ZW0gaGFsdHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3NhdmFubmFoLm5vbmdudS5vcmcvcHJvamVjdHMvc3lzdmluaXQvIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZUklHSFQ7ZW5kbGluZT0xNTttZDU9YTFkM2IzNTI2NTAxZDM1NDZkNTMwYmJlNmFiNmNkYmUgXAorICAgICAgICAgICAgICAgICAgICAiCisKK1JERVBFTkRTXyR7UE59ID0gIiR7UE59LWluaXR0YWIiCisKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9zeXN2aW5pdC9zeXN2aW5pdC0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vaW5zdGFsbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9jcnlwdC1saWIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcGlkb2YtYWRkLW0tb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlYWxwYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1pbm9yLWRlZmluZXMtaW4tZy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9yY1MtZGVmYXVsdCBcCisgICAgICAgICAgIGZpbGU6Ly9yYyBcCisgICAgICAgICAgIGZpbGU6Ly9yY1MgXAorICAgICAgICAgICBmaWxlOi8vYm9vdGxvZ2QuaW5pdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMV9ib290bG9nZCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICI0OGNlYmZmZWJmMmE5NmFiMDliZWMxNGJmOTk3NjAxNiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyYTJlMjZiNzJhYTIzNWEyM2FiMWM4NDcxMDA1Zjg5MDMwOWNlMTE5NmM4M2ZiYzk0MTNjNTdiOWFiNjJiNTg3IgorCitTID0gIiR7V09SS0RJUn0vc3lzdmluaXQtJHtQVn0iCitCID0gIiR7U30vc3JjIgorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMgZmVhdHVyZXNfY2hlY2sKK0RFUEVORFNfYXBwZW5kID0gIiB1cGRhdGUtcmMuZC1uYXRpdmUgYmFzZS1wYXNzd2QgdmlydHVhbC9jcnlwdCIKK2RvX3BhY2thZ2Vfc2V0c2NlbmVbZGVwZW5kc10gPSAiJHtNTFBSRUZJWH1iYXNlLXBhc3N3ZDpkb19wb3B1bGF0ZV9zeXNyb290IgorCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAic3lzdmluaXQiCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImluaXQgbW91bnRwb2ludCBoYWx0IHJlYm9vdCBydW5sZXZlbCBzaHV0ZG93biBwb3dlcm9mZiBsYXN0IGxhc3RiIG1lc2cgdXRtcGR1bXAgd2FsbCIKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMjAwIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaW5pdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L2luaXQiCitBTFRFUk5BVElWRV9QUklPUklUWVtpbml0XSA9ICI1MCIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW21vdW50cG9pbnRdID0gIiR7YmFzZV9iaW5kaXJ9L21vdW50cG9pbnQiCitBTFRFUk5BVElWRV9QUklPUklUWVttb3VudHBvaW50XSA9ICIyMCIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2hhbHRdID0gIiR7YmFzZV9zYmluZGlyfS9oYWx0IgorQUxURVJOQVRJVkVfTElOS19OQU1FW3JlYm9vdF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3JlYm9vdCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtydW5sZXZlbF0gPSAiJHtiYXNlX3NiaW5kaXJ9L3J1bmxldmVsIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NodXRkb3duXSA9ICIke2Jhc2Vfc2JpbmRpcn0vc2h1dGRvd24iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcG93ZXJvZmZdID0gIiR7YmFzZV9zYmluZGlyfS9wb3dlcm9mZiIKKworQUxURVJOQVRJVkVfJHtQTn0tcGlkb2YgPSAicGlkb2YiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcGlkb2ZdID0gIiR7YmFzZV9iaW5kaXJ9L3BpZG9mIgorCitBTFRFUk5BVElWRV8ke1BOfS1zdWxvZ2luID0gInN1bG9naW4iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc3Vsb2dpbl0gPSAiJHtiYXNlX3NiaW5kaXJ9L3N1bG9naW4iCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJtb3VudHBvaW50LjEgbGFzdC4xIGxhc3RiLjEgbWVzZy4xIHdhbGwuMSBzdWxvZ2luLjggdXRtcGR1bXAuMSIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2xhc3QuMV0gPSAiJHttYW5kaXJ9L21hbjEvbGFzdC4xIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2xhc3RiLjFdID0gIiR7bWFuZGlyfS9tYW4xL2xhc3RiLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbWVzZy4xXSA9ICIke21hbmRpcn0vbWFuMS9tZXNnLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbbW91bnRwb2ludC4xXSA9ICIke21hbmRpcn0vbWFuMS9tb3VudHBvaW50LjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc3Vsb2dpbi44XSA9ICIke21hbmRpcn0vbWFuOC9zdWxvZ2luLjgiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdXRtcGR1bXAuMV0gPSAiJHttYW5kaXJ9L21hbjEvdXRtcGR1bXAuMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt3YWxsLjFdID0gIiR7bWFuZGlyfS9tYW4xL3dhbGwuMSIKKworUEFDS0FHRVMgPSsgInN5c3Zpbml0LXBpZG9mIHN5c3Zpbml0LXN1bG9naW4iCitGSUxFU18ke1BOfSArPSAiJHtiYXNlX3NiaW5kaXJ9LyogJHtiYXNlX2JpbmRpcn0vKiIKK0ZJTEVTX3N5c3Zpbml0LXBpZG9mID0gIiR7YmFzZV9iaW5kaXJ9L3BpZG9mLnN5c3Zpbml0ICR7YmFzZV9zYmluZGlyfS9raWxsYWxsNSIKK0ZJTEVTX3N5c3Zpbml0LXN1bG9naW4gPSAiJHtiYXNlX3NiaW5kaXJ9L3N1bG9naW4uc3lzdmluaXQiCisKK1JERVBFTkRTXyR7UE59ICs9ICJzeXN2aW5pdC1waWRvZiBpbml0ZC1mdW5jdGlvbnMgYmFzZS1wYXNzd2QiCisKK0NGTEFHU19wcmVwZW5kID0gIi1EX0dOVV9TT1VSQ0UgIgorZXhwb3J0IExDUllQVCA9ICItbGNyeXB0IgorRVhUUkFfT0VNQUtFICs9ICInYmFzZV9iaW5kaXI9JHtiYXNlX2JpbmRpcn0nIFwKKwkJICdiYXNlX3NiaW5kaXI9JHtiYXNlX3NiaW5kaXJ9JyBcCisJCSAnYmluZGlyPSR7YmluZGlyfScgXAorCQkgJ3NiaW5kaXI9JHtzYmluZGlyfScgXAorCQkgJ3N5c2NvbmZkaXI9JHtzeXNjb25mZGlyfScgXAorCQkgJ2luY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfScgXAorCQkgJ21hbmRpcj0ke21hbmRpcn0nIFwKKyAgICAgICAgICAgICAgICAgTU5UUE9JTlQ9eWVzIgorCitkb19pbnN0YWxsICgpIHsKKwlvZV9ydW5tYWtlICdST09UPSR7RH0nIGluc3RhbGwKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0gXAorCQkgICAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0IFwKKwkJICAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJZm9yIGxldmVsIGluIFMgMCAxIDIgMyA0IDUgNjsgZG8KKwkJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9yYyRsZXZlbC5kCisJZG9uZQorCisJaW5zdGFsbCAtbSAwNjQ0ICAgICR7V09SS0RJUn0vcmNTLWRlZmF1bHQJJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC9yY1MKKwlpbnN0YWxsIC1tIDA3NTUgICAgJHtXT1JLRElSfS9yYwkJJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCisJaW5zdGFsbCAtbSAwNzU1ICAgICR7V09SS0RJUn0vcmNTCQkke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwlpbnN0YWxsIC1tIDA3NTUgICAgJHtXT1JLRElSfS9ib290bG9nZC5pbml0ICAgICAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvYm9vdGxvZ2QKKwlsbiAtc2YgYm9vdGxvZ2QgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N0b3AtYm9vdGxvZ2QKKworCXVwZGF0ZS1yYy5kIC1yICR7RH0gYm9vdGxvZ2Qgc3RhcnQgMDcgUyAuCisJdXBkYXRlLXJjLmQgLXIgJHtEfSBzdG9wLWJvb3Rsb2dkIHN0YXJ0IDk5IDIgMyA0IDUgLgorCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3ZvbGF0aWxlcworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9LzAxX2Jvb3Rsb2dkICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisKKwljaG93biByb290OnNodXRkb3duICR7RH0ke2Jhc2Vfc2JpbmRpcn0vaGFsdCAke0R9JHtiYXNlX3NiaW5kaXJ9L3NodXRkb3duCisJY2htb2Qgby14LHUrcyAke0R9JHtiYXNlX3NiaW5kaXJ9L2hhbHQgJHtEfSR7YmFzZV9zYmluZGlyfS9zaHV0ZG93bgorCisgICAgICAgICMgQWxyZWFkeSBwcm92aWRlZCBieSBlMmZzcHJvZ3M7IHN5c3Zpbml0J3MgdmVyc2lvbiBpcyBhIGNvcHkgZnJvbSB0aGVyZQorICAgICAgICBybSAke0R9JHtiYXNlX3NiaW5kaXJ9L2xvZ3NhdmUKKyAgICAgICAgcm0gJHtEfSR7bWFuZGlyfS9tYW44L2xvZ3NhdmUuOAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwODcyOWUxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdWRldi9ldWRldl8zLjIuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLVNVTU1BUlkgPSAiZXVkZXYgaXMgYSBmb3JrIG9mIHN5c3RlbWQncyB1ZGV2IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdlbnRvby5vcmcvd2lraS9FdWRldiIKLUxJQ0VOU0UgPSAiR1BMdjIuMCsgJiBMR1BMLTIuMSsiCi1MSUNFTlNFX2xpYnVkZXYgPSAiTEdQTC0yLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGdwZXJmLW5hdGl2ZSBrbW9kIGxpYnhzbHQtbmF0aXZlIHV0aWwtbGludXgiCi0KLVBST1ZJREVTID0gInVkZXYiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rldi5nZW50b28ub3JnL35ibHVlbmVzcy8ke0JQTn0vJHtCUH0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMTQtUmV2ZXJ0LXJ1bGVzLXJlbW92ZS1maXJtd2FyZS1sb2FkaW5nLXJ1bGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL1JldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGV2ZnMtdWRldi5ydWxlcyBcCi0gICAgICAgICAgIGZpbGU6Ly9pbml0IFwKLSAgICAgICAgICAgZmlsZTovL2xpbmtzLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vbG9jYWwucnVsZXMgXAotICAgICAgICAgICBmaWxlOi8vcGVybWlzc2lvbnMucnVsZXMgXAotICAgICAgICAgICBmaWxlOi8vcnVuLnJ1bGVzIFwKLSAgICAgICAgICAgZmlsZTovL3VkZXYucnVsZXMgXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiY2UxNjZiM2ZkZDkxMGMyYTRhODQwMzc4ZjQ4ZmVkYWYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjFlNDk0OGU5ZTUxMjcxYzNjY2UyYmI1MzExYTMwYjIwNmRkMDNlZjAxMTA2MmU2YzYyN2ZiMDA3ZTQzZjZiOCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgcWVtdSBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKLQotQ09ORkxJQ1RfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gXAotICAgIC0td2l0aC1yb290bGliZGlyPSR7YmFzZV9saWJkaXJ9IFwKLSAgICAtLXdpdGgtcm9vdGxpYmV4ZWNkaXI9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2IFwKLSAgICAtLXdpdGgtcm9vdHByZWZpeD0gXAotIgotCi1QQUNLQUdFQ09ORklHID8/PSAiaHdkYiIKLVBBQ0tBR0VDT05GSUdbaHdkYl0gPSAiLS1lbmFibGUtaHdkYiwtLWRpc2FibGUtaHdkYiIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC91ZGV2Ci0Jc2VkIC1pIHMlQFVERVZEQCUke2Jhc2Vfc2JpbmRpcn0vdWRldmQlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC91ZGV2Ci0KLQlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZAotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xvY2FsLnJ1bGVzICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC9sb2NhbC5ydWxlcwotCi0JIyBVc2UgY2xhc3NpYyBuZXR3b3JrIGludGVyZmFjZSBuYW1pbmcgc2NoZW1lCi0JdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLzgwLW5ldC1uYW1lLXNsb3QucnVsZXMKLQotCSMgaGlkMmhjaSBoYXMgbW92ZWQgdG8gYmx1ZXo0LiByZW1vdmVkIGluIHVkZXYgYXMgb2YgdmVyc2lvbiAxNjkKLQlybSAtZiAke0R9JHtiYXNlX2xpYmRpcn0vdWRldi9oaWQyaGNpCi0KLQkjIGR1cGxpY2F0ZSB1ZGV2YWRtIGZvciBwb3N0aW5zdCBzY3JpcHQKLQlpbnN0YWxsIC1kICR7RH0ke2xpYmV4ZWNkaXJ9Ci0JbG4gJHtEfSR7YmluZGlyfS91ZGV2YWRtICR7RH0ke2xpYmV4ZWNkaXJ9LyR7TUxQUkVGSVh9dWRldmFkbQotfQotCi1kb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKLQkjIFJlbW92ZSByZWZlcmVuY2VzIHRvIGJ1aWxkbWFjaGluZQotCXNlZCAtaSAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKLQkJJHtCfS9zcmMvdWRldi9rZXlib2FyZC1rZXlzLWZyb20tbmFtZS5oCi19Ci0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJ1ZGV2IgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMDQgUyAuIgotCi1QQUNLQUdFUyA9KyAibGlidWRldiIKLVBBQ0tBR0VTID0rICJldWRldi1od2RiIgotCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmV4ZWNkaXJ9ICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldiAke2JpbmRpcn0vdWRldmFkbSIKLUZJTEVTXyR7UE59LWRldiA9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZy91ZGV2LnBjIFwKLSAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2xpYnVkZXYuaCAke2xpYmRpcn0vbGlidWRldi5zbyBcCi0gICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS91ZGV2LmggJHtsaWJkaXJ9L2xpYnVkZXYubGEgXAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJ1ZGV2LmEgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJ1ZGV2LnBjIgotRklMRVNfbGlidWRldiA9ICIke2Jhc2VfbGliZGlyfS9saWJ1ZGV2LnNvLioiCi1GSUxFU19ldWRldi1od2RiID0gIiR7c3lzY29uZmRpcn0vdWRldi9od2RiLmQiCi0KLVJERVBFTkRTX2V1ZGV2LWh3ZGIgKz0gImV1ZGV2IgotCi1SUFJPVklERVNfJHtQTn0gPSAiaG90cGx1ZyB1ZGV2IgotUlBST1ZJREVTX2V1ZGV2LWh3ZGIgKz0gInVkZXYtaHdkYiIKLQotUEFDS0FHRV9XUklURV9ERVBTICs9ICJxZW11LW5hdGl2ZSIKLXBrZ19wb3N0aW5zdF9ldWRldi1od2RiICgpIHsKLSAgICBpZiB0ZXN0IC1uICIkRCI7IHRoZW4KLSAgICAgICAgJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IHVwZGF0ZV91ZGV2X2h3ZGIgJHtQS0d9IG1scHJlZml4PSR7TUxQUkVGSVh9IGJpbnByZWZpeD0ke01MUFJFRklYfQotICAgIGVsc2UKLSAgICAgICAgdWRldmFkbSBod2RiIC0tdXBkYXRlCi0gICAgZmkKLX0KLQotcGtnX3ByZXJtX2V1ZGV2LWh3ZGIgKCkgewotICAgICAgICBybSAtZiAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91ZGV2L2V1ZGV2XzMuMi45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5NmY4Y2IKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3VkZXYvZXVkZXZfMy4yLjkuYmIKQEAgLTAsMCArMSw5NiBAQAorU1VNTUFSWSA9ICJldWRldiBpcyBhIGZvcmsgb2Ygc3lzdGVtZCdzIHVkZXYiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ2VudG9vLm9yZy93aWtpL0V1ZGV2IgorTElDRU5TRSA9ICJHUEx2Mi4wKyAmIExHUEwtMi4xKyIKK0xJQ0VOU0VfbGlidWRldiA9ICJMR1BMLTIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKKworREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgZ3BlcmYtbmF0aXZlIGttb2QgbGlieHNsdC1uYXRpdmUgdXRpbC1saW51eCIKKworUFJPVklERVMgPSAidWRldiIKKworU1JDX1VSSSA9ICJodHRwczovL2Rldi5nZW50b28ub3JnL35ibHVlbmVzcy8ke0JQTn0vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMTQtUmV2ZXJ0LXJ1bGVzLXJlbW92ZS1maXJtd2FyZS1sb2FkaW5nLXJ1bGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL1JldmVydC11ZGV2LXJlbW92ZS11c2Vyc3BhY2UtZmlybXdhcmUtbG9hZGluZy1zdXBwb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGV2ZnMtdWRldi5ydWxlcyBcCisgICAgICAgICAgIGZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgZmlsZTovL2xpbmtzLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vbG9jYWwucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vcGVybWlzc2lvbnMucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vcnVuLnJ1bGVzIFwKKyAgICAgICAgICAgZmlsZTovL3VkZXYucnVsZXMgXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZGVkZmIxOTY0ZjYwOThmZTkzMjBkZTgyNzk1NzMzMWYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODk2MTg2MTkwODRhMTllMTQ1MWQzNzNjNDNmMTQxYjQ2OWM5ZmQwOTc2Nzk3M2Q3M2RkMjY4YjkyMDc0ZDRmYyIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgcWVtdSBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKKworQ09ORkxJQ1RfRElTVFJPX0ZFQVRVUkVTID0gInN5c3RlbWQiCisKK0VYVFJBX09FQ09ORiA9ICIgXAorICAgIC0tc2JpbmRpcj0ke2Jhc2Vfc2JpbmRpcn0gXAorICAgIC0td2l0aC1yb290bGliZGlyPSR7YmFzZV9saWJkaXJ9IFwKKyAgICAtLXdpdGgtcm9vdGxpYmV4ZWNkaXI9JHtub25hcmNoX2Jhc2VfbGliZGlyfS91ZGV2IFwKKyAgICAtLXdpdGgtcm9vdHByZWZpeD0gXAorIgorCitQQUNLQUdFQ09ORklHID8/PSAiaHdkYiIKK1BBQ0tBR0VDT05GSUdbaHdkYl0gPSAiLS1lbmFibGUtaHdkYiwtLWRpc2FibGUtaHdkYiIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC91ZGV2CisJc2VkIC1pIHMlQFVERVZEQCUke2Jhc2Vfc2JpbmRpcn0vdWRldmQlICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC91ZGV2CisKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xvY2FsLnJ1bGVzICR7RH0ke3N5c2NvbmZkaXJ9L3VkZXYvcnVsZXMuZC9sb2NhbC5ydWxlcworCisJIyBVc2UgY2xhc3NpYyBuZXR3b3JrIGludGVyZmFjZSBuYW1pbmcgc2NoZW1lCisJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vdWRldi9ydWxlcy5kLzgwLW5ldC1uYW1lLXNsb3QucnVsZXMKKworCSMgaGlkMmhjaSBoYXMgbW92ZWQgdG8gYmx1ZXo0LiByZW1vdmVkIGluIHVkZXYgYXMgb2YgdmVyc2lvbiAxNjkKKwlybSAtZiAke0R9JHtiYXNlX2xpYmRpcn0vdWRldi9oaWQyaGNpCisKKwkjIGR1cGxpY2F0ZSB1ZGV2YWRtIGZvciBwb3N0aW5zdCBzY3JpcHQKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmV4ZWNkaXJ9CisJbG4gJHtEfSR7YmluZGlyfS91ZGV2YWRtICR7RH0ke2xpYmV4ZWNkaXJ9LyR7TUxQUkVGSVh9dWRldmFkbQorfQorCitkb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKKwkjIFJlbW92ZSByZWZlcmVuY2VzIHRvIGJ1aWxkbWFjaGluZQorCXNlZCAtaSAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKwkJJHtCfS9zcmMvdWRldi9rZXlib2FyZC1rZXlzLWZyb20tbmFtZS5oCit9CisKK0lOSVRTQ1JJUFRfTkFNRSA9ICJ1ZGV2IgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMDQgUyAuIgorCitQQUNLQUdFUyA9KyAibGlidWRldiIKK1BBQ0tBR0VTID0rICJldWRldi1od2RiIgorCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmV4ZWNkaXJ9ICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vdWRldiAke2JpbmRpcn0vdWRldmFkbSIKK0ZJTEVTXyR7UE59LWRldiA9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZy91ZGV2LnBjIFwKKyAgICAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9L2xpYnVkZXYuaCAke2xpYmRpcn0vbGlidWRldi5zbyBcCisgICAgICAgICAgICAgICAgICAgJHtpbmNsdWRlZGlyfS91ZGV2LmggJHtsaWJkaXJ9L2xpYnVkZXYubGEgXAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9saWJ1ZGV2LmEgJHtsaWJkaXJ9L3BrZ2NvbmZpZy9saWJ1ZGV2LnBjIgorRklMRVNfbGlidWRldiA9ICIke2Jhc2VfbGliZGlyfS9saWJ1ZGV2LnNvLioiCitGSUxFU19ldWRldi1od2RiID0gIiR7c3lzY29uZmRpcn0vdWRldi9od2RiLmQiCisKK1JERVBFTkRTX2V1ZGV2LWh3ZGIgKz0gImV1ZGV2IgorCitSUFJPVklERVNfJHtQTn0gPSAiaG90cGx1ZyB1ZGV2IgorUlBST1ZJREVTX2V1ZGV2LWh3ZGIgKz0gInVkZXYtaHdkYiIKKworUEFDS0FHRV9XUklURV9ERVBTICs9ICJxZW11LW5hdGl2ZSIKK3BrZ19wb3N0aW5zdF9ldWRldi1od2RiICgpIHsKKyAgICBpZiB0ZXN0IC1uICIkRCI7IHRoZW4KKyAgICAgICAgJElOVEVSQ0VQVF9ESVIvcG9zdGluc3RfaW50ZXJjZXB0IHVwZGF0ZV91ZGV2X2h3ZGIgJHtQS0d9IG1scHJlZml4PSR7TUxQUkVGSVh9IGJpbnByZWZpeD0ke01MUFJFRklYfQorICAgIGVsc2UKKyAgICAgICAgdWRldmFkbSBod2RiIC0tdXBkYXRlCisgICAgZmkKK30KKworcGtnX3ByZXJtX2V1ZGV2LWh3ZGIgKCkgeworICAgICAgICBybSAtZiAkRCR7c3lzY29uZmRpcn0vdWRldi9od2RiLmJpbgorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXguaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXguaW5jCmluZGV4IDFmYTgyMzYuLjA1NjY1NjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC5pbmMKQEAgLTgsNyArOCw3IEBACiAKIExJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErICYgQlNELTMtQ2xhdXNlICYgQlNELTQtQ2xhdXNlIgogCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUubGljZW5zaW5nO21kNT05NzJhMTM0ZjFlMTRiMmIwNjBlMzY1ZGYyZmFiMDA5OSBcCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9SRUFETUUubGljZW5zaW5nO21kNT0wZmQ1YzA1MGM2MTg3ZDJiZjBhNDQ5MmI3ZjRlMzNkYSBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9Eb2N1bWVudGF0aW9uL2xpY2Vuc2VzL0NPUFlJTkcuR1BMLTIuMC1vci1sYXRlcjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vRG9jdW1lbnRhdGlvbi9saWNlbnNlcy9DT1BZSU5HLkxHUEwtMi4xLW9yLWxhdGVyO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCkBAIC0xMDUsNyArMTA1LDEzIEBACiBFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgLS1lbmFibGUtc2V0cHJpdiIKIEVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLXdpdGhvdXQtY2FwLW5nIC0tZGlzYWJsZS1zZXRwcml2IgogRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC0td2l0aG91dC1jYXAtbmcgLS1kaXNhYmxlLXNldHByaXYiCitFWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLWRpc2FibGUtaHdjbG9jay1ncGx2MyIKIAorIyBlbmFibGUgcGNyZTIgZm9yIG5hdGl2ZS9uYXRpdmVzZGsgdG8gbWF0Y2ggaG9zdCBkaXN0cm9zCisjIHRoaXMgaGVscHMgdG8ga2VlcCBzYW1lIGV4cGVjdGF0aW9ucyB3aGVuIHVzaW5nIHRoZSBTREsgb3IKKyMgYnVpbGQgaG9zdCB2ZXJzaW9ucyBkdXJpbmcgZGV2ZWxvcG1lbnQKKyMKK1BBQ0tBR0VDT05GSUcgPz0gInBjcmUyIgogUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIKICMgaW5oZXJpdCBtYW5wYWdlcyByZXF1aXJlcyB0aGlzIHRvIGJlIHByZXNlbnQsIGhvd2V2ZXIgdXRpbC1saW51eCBkb2VzIG5vdCBoYXZlIAogIyBjb25maWd1cmF0aW9uIG9wdGlvbnMsIGFuZCBpbnN0YWxscyBtYW5wYWdlcyBhbHdheXMKQEAgLTExNyw2ICsxMjMsOCBAQAogUEFDS0FHRUNPTkZJR1tweWxpYm1vdW50XSA9ICItLXdpdGgtcHl0aG9uPTMgLS1lbmFibGUtcHlsaWJtb3VudCwtLXdpdGhvdXQtcHl0aG9uIC0tZGlzYWJsZS1weWxpYm1vdW50LHB5dGhvbjMiCiAjIFJlYWRsaW5lIHN1cHBvcnQKIFBBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIi0td2l0aC1yZWFkbGluZSwtLXdpdGhvdXQtcmVhZGxpbmUscmVhZGxpbmUiCisjIFBDUkUgc3VwcG9ydCBpbiBoYXJkbGluaworUEFDS0FHRUNPTkZJR1twY3JlMl0gPSAiLCxsaWJwY3JlMiIKIAogRVhUUkFfT0VNQUtFID0gIkFSQ0g9JHtUQVJHRVRfQVJDSH0gQ1BVPSBDUFVPUFQ9ICdPUFQ9JHtDRkxBR1N9JyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvMDAwMS1od2Nsb2NrLWZpeC1mb3ItZ2xpYmMtMi4zMS1zZXR0aW1lb2ZkYXkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC8wMDAxLWh3Y2xvY2stZml4LWZvci1nbGliYy0yLjMxLXNldHRpbWVvZmRheS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNjcyYzM1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvMDAwMS1od2Nsb2NrLWZpeC1mb3ItZ2xpYmMtMi4zMS1zZXR0aW1lb2ZkYXkucGF0Y2gKQEAgLTAsMCArMSwxMTIgQEAKK0Zyb20gZWU4NWQzOTY3ZWEwOWIyMTVmY2VhNWVmZGQ5MGJiYmY1ZTc0YTY4MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEthcmVsIFphayA8a3pha0ByZWRoYXQuY29tPgorRGF0ZTogV2VkLCAxOSBGZWIgMjAyMCAxNTo1MDo0NyArMDEwMAorU3ViamVjdDogW1BBVENIXSBod2Nsb2NrOiBmaXggZm9yIGdsaWJjIDIuMzEgc2V0dGltZW9mZGF5KCkKKworZ2xpYmMgYW5ub3VuY2U6CisgIC4uLiBzZXR0aW1lb2ZkYXkgY2FuIG5vIGxvbmdlciBiZSB1c2VkIHRvIHNldCB0aGUgdGltZSBhbmQgdGhlIG9mZnNldAorICBzaW11bHRhbmVvdXNseS4gSWYgYm90aCBvZiBpdHMgdHdvIGFyZ3VtZW50cyBhcmUgbm9uLW51bGwsIHRoZSBjYWxsCisgIHdpbGwgZmFpbCAoc2V0dGluZyBlcnJubyB0byBFSU5WQUwpLgorCitJdCBtZWFucyB3ZSBuZWVkIHRvIGNhbGwgc2V0dGltZW9mZGF5KE5VTEwsIHR6KSBhbmQgc2V0dGltZW9mZGF5KHR2LCBOVUxMKS4KKworVW5mb3J0dW5hdGVseSwgc2V0dGltZW9mZGF5KE5VTEwsIHR6KSBoYXMgdmVyeSBzcGVjaWFsIHdhcnAtY2xvY2sKK3NlbWFudGljIGlmIHVzZWQgYXMgdGhlIHZlcnkgZmlyc3Qgc2V0dGltZW9mZGF5KCkgY2FsbC4gSXQgbWVhbnMgd2UKK2hhdmUgdG8gYmUgc3VyZSB0aGF0IHdlIGRvIG5vdCB0b3VjaCB3YXJwLWNsb2NrIGlmIHdlIG5lZWQgb25seSBuZWVkCit0byBtb2RpZnkgc3lzdGVtIFRaLiBTbywgbGV0J3MgYWx3YXlzIGNhbGwgc2V0dGltZW9mZGF5KE5VTEwsIDApCitiZWZvcmUgc2V0dGltZW9mZGF5KE5VTEwsIHR6KSBmb3IgVVRDIHJ0YyBtb2RlIHdoZW4gbW9kaWZ5IHN5c3RlbSBUWi4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2thcmVsemFrL3V0aWwtbGludXgvY29tbWl0L2VlODVkMzk2N2VhMDliMjE1ZmNlYTVlZmRkOTBiYmJmNWU3NGE2ODFdCisKK0NDOiBKIFdpbGxpYW0gUGlnZ290dCA8ZWxzZWlmdGhlbkBnbXguY29tPgorU2lnbmVkLW9mZi1ieTogS2FyZWwgWmFrIDxremFrQHJlZGhhdC5jb20+CitBZGRyZXNzZXM6IGh0dHBzOi8vZ2l0aHViLmNvbS9rYXJlbHphay91dGlsLWxpbnV4L2lzc3Vlcy85NTcKK1NpZ25lZC1vZmYtYnk6IExpd2VpIFNvbmcgPGxpd2VpLnNvbmdAd2luZHJpdmVyLmNvbT4KKy0tLQorIHN5cy11dGlscy9od2Nsb2NrLmMgfCA0OSArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgMjEgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zeXMtdXRpbHMvaHdjbG9jay5jIGIvc3lzLXV0aWxzL2h3Y2xvY2suYworaW5kZXggZTczNmRhNzE3OWY4Li4xNjU3NmJjMTg2ZmYgMTAwNjQ0CistLS0gYS9zeXMtdXRpbHMvaHdjbG9jay5jCisrKysgYi9zeXMtdXRpbHMvaHdjbG9jay5jCitAQCAtNjU4LDYgKzY1OCw5IEBAIGRpc3BsYXlfdGltZShzdHJ1Y3QgdGltZXZhbCBod2N0aW1lKQorICAqIFBDSUw6IHBlcnNpc3RlbnRfY2xvY2tfaXNfbG9jYWwsIHNldHMgdGhlICIxMSBtaW51dGUgbW9kZSIgdGltZXNjYWxlLgorICAqIGZpcnN0dGltZTogbG9ja3MgdGhlIHdhcnBfY2xvY2sgZnVuY3Rpb24gKGluaXRpYWxpemVkIHRvIDEgYXQgYm9vdCkuCisgICoKKysgKiBOb3RlIHRoYXQgdmVyeSBmaXJzdCBzZXR0aW1lb2ZkYXkoTlVMTCwgdHopIG1vZGlmaWVzIHdhcnAtY2xvY2sgYXMgd2VsbCBhcworKyAqIHN5c3RlbSBUWi4KKysgKgorICAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rCisgICogfCAgb3AgICAgIHwgUlRDIHNjYWxlIHwgc2V0dGltZW9mZGF5IGNhbGxzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwKKyAgKiB8LS0tLS0tLS0tfC0tLS0tLS0tLS0tfC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tfAorQEAgLTY3NSw0MSArNjc4LDQ1IEBAIHNldF9zeXN0ZW1fY2xvY2soY29uc3Qgc3RydWN0IGh3Y2xvY2tfY29udHJvbCAqY3RsLAorIAlzdHJ1Y3QgdG0gYnJva2VuOworIAlpbnQgbWludXRlc3dlc3Q7CisgCWludCByYyA9IDA7CistCWNvbnN0IHN0cnVjdCB0aW1lem9uZSB0el91dGMgPSB7IDAgfTsKKyAKKyAJbG9jYWx0aW1lX3IoJm5ld3RpbWUudHZfc2VjLCAmYnJva2VuKTsKKyAJbWludXRlc3dlc3QgPSAtZ2V0X2dtdG9mZigmYnJva2VuKSAvIDYwOworIAorIAlpZiAoY3RsLT52ZXJib3NlKSB7CistCQlpZiAoY3RsLT5oY3Rvc3lzICYmICFjdGwtPnVuaXZlcnNhbCkKKy0JCQlwcmludGYoXygiQ2FsbGluZyBzZXR0aW1lb2ZkYXkoTlVMTCwgJWQpIHRvIHNldCAiCistCQkJCSAicGVyc2lzdGVudF9jbG9ja19pc19sb2NhbC5cbiIpLCBtaW51dGVzd2VzdCk7CistCQlpZiAoY3RsLT5zeXN0eiAmJiBjdGwtPnVuaXZlcnNhbCkKKysJCWlmIChjdGwtPnVuaXZlcnNhbCkKKyAJCQlwdXRzKF8oIkNhbGxpbmcgc2V0dGltZW9mZGF5KE5VTEwsIDApICIKKy0JCQkJInRvIGxvY2sgdGhlIHdhcnAgZnVuY3Rpb24uIikpOworKwkJCSAgICAgICAidG8gbG9jayB0aGUgd2FycCBmdW5jdGlvbi4iKSk7CisrCQllbHNlCisrCQkJcHJpbnRmKF8oIkNhbGxpbmcgc2V0dGltZW9mZGF5KE5VTEwsICVkKSB0byBzZXQgIgorKwkJCQkgInBlcnNpc3RlbnRfY2xvY2tfaXNfbG9jYWwgYW5kICIKKysJCQkJICJ0aGUga2VybmVsIHRpbWV6b25lLlxuIiksIG1pbnV0ZXN3ZXN0KTsKKysKKysJCWlmIChjdGwtPnVuaXZlcnNhbCAmJiBtaW51dGVzd2VzdCkKKysJCQlwcmludGYoXygiQ2FsbGluZyBzZXR0aW1lb2ZkYXkoTlVMTCwgJWQpIHRvIHNldCAiCisrCQkJCSAidGhlIGtlcm5lbCB0aW1lem9uZS5cbiIpLCBtaW51dGVzd2VzdCk7CisrCisgCQlpZiAoY3RsLT5oY3Rvc3lzKQorLQkJCXByaW50ZihfKCJDYWxsaW5nIHNldHRpbWVvZmRheSglbGQuJTA2bGQsICVkKVxuIiksCistCQkJICAgICAgIG5ld3RpbWUudHZfc2VjLCBuZXd0aW1lLnR2X3VzZWMsIG1pbnV0ZXN3ZXN0KTsKKy0JCWVsc2UgeworLQkJCXByaW50ZihfKCJDYWxsaW5nIHNldHRpbWVvZmRheShOVUxMLCAlZCkgIiksIG1pbnV0ZXN3ZXN0KTsKKy0JCQlpZiAoY3RsLT51bml2ZXJzYWwpCistCQkJCSBwdXRzKF8oInRvIHNldCB0aGUga2VybmVsIHRpbWV6b25lLiIpKTsKKy0JCQllbHNlCistCQkJCSBwdXRzKF8oInRvIHdhcnAgU3lzdGVtIHRpbWUuIikpOworLQkJfQorKwkJCXByaW50ZihfKCJDYWxsaW5nIHNldHRpbWVvZmRheSglbGQuJTA2bGQsIDApIHRvIHNldCAiCisrCQkJICAgICAgICAgInRoZSBrZXJuZWwgdGltZS5cbiIpLCBuZXd0aW1lLnR2X3NlYywgbmV3dGltZS50dl91c2VjKTsKKyAJfQorIAorIAlpZiAoIWN0bC0+dGVzdGluZykgeworKwkJY29uc3Qgc3RydWN0IHRpbWV6b25lIHR6X3V0YyA9IHsgMCB9OworIAkJY29uc3Qgc3RydWN0IHRpbWV6b25lIHR6ID0geyBtaW51dGVzd2VzdCB9OworIAorLQkJaWYgKGN0bC0+aGN0b3N5cyAmJiAhY3RsLT51bml2ZXJzYWwpCS8qIHNldCBQQ0lMICovCisrCQkvKiB3YXJwLWNsb2NrICovCisrCQlpZiAoY3RsLT51bml2ZXJzYWwpCisrCQkJcmMgPSBzZXR0aW1lb2ZkYXkoTlVMTCwgJnR6X3V0Yyk7IC8qIGxvY2sgdG8gVVRDICovCisrCQllbHNlCisrCQkJcmMgPSBzZXR0aW1lb2ZkYXkoTlVMTCwgJnR6KTsgICAgIC8qIHNldCBQQ0lMIGFuZCBUWiAqLworKworKwkJLyogc2V0IHRpbWV6b25lICovCisrCQlpZiAoIXJjICYmIGN0bC0+dW5pdmVyc2FsICYmIG1pbnV0ZXN3ZXN0KQorIAkJCXJjID0gc2V0dGltZW9mZGF5KE5VTEwsICZ0eik7CistCQlpZiAoY3RsLT5zeXN0eiAmJiBjdGwtPnVuaXZlcnNhbCkJLyogbG9jayB3YXJwX2Nsb2NrICovCistCQkJcmMgPSBzZXR0aW1lb2ZkYXkoTlVMTCwgJnR6X3V0Yyk7CisrCisrCQkvKiBzZXQgdGltZSAqLworIAkJaWYgKCFyYyAmJiBjdGwtPmhjdG9zeXMpCistCQkJcmMgPSBzZXR0aW1lb2ZkYXkoJm5ld3RpbWUsICZ0eik7CistCQllbHNlIGlmICghcmMpCistCQkJcmMgPSBzZXR0aW1lb2ZkYXkoTlVMTCwgJnR6KTsKKysJCQlyYyA9IHNldHRpbWVvZmRheSgmbmV3dGltZSwgTlVMTCk7CisgCisgCQlpZiAocmMpIHsKKyAJCQl3YXJuKF8oInNldHRpbWVvZmRheSgpIGZhaWxlZCIpKTsKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LzAwMDEtbGliZmRpc2stc2NyaXB0LWFjY2VwdC1zZWN0b3Itc2l6ZS1pZ25vcmUtdW5rbm93bi1oZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWNvcmUvdXRpbC1saW51eC91dGlsLWxpbnV4LzAwMDEtbGliZmRpc2stc2NyaXB0LWFjY2VwdC1zZWN0b3Itc2l6ZS1pZ25vcmUtdW5rbm93bi1oZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTFmNzBiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvMDAwMS1saWJmZGlzay1zY3JpcHQtYWNjZXB0LXNlY3Rvci1zaXplLWlnbm9yZS11bmtub3duLWhlLnBhdGNoCkBAIC0wLDAgKzEsMTM3IEBACitGcm9tIDAwZTUzZjE3Yzg0NjJjYjM0ZWNlMDhjYzEwZGI2MGE3ZGEyOWEzMDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLYXJlbCBaYWsgPGt6YWtAcmVkaGF0LmNvbT4KK0RhdGU6IFR1ZSwgNCBGZWIgMjAyMCAxNToxMToxOSArMDEwMAorU3ViamVjdDogW1BBVENIXSBsaWJmZGlzazogKHNjcmlwdCkgYWNjZXB0IHNlY3Rvci1zaXplLCBpZ25vcmUgdW5rbm93biBoZWFkZXJzCisKKy0gYWRkIHNlY3Rvci1zaXplIGJldHdlZW4gc3VwcG9ydGVkIGhlYWRlcnMgKGFscmVhZHkgaW4gLS1kdW1wIG91dHB1dCkKKworLSByZXBvcnQgdW5rbm93biBoZWFkZXJzIGJ5IC1FTk9UU1VQCisKKy0gaWdub3JlIEVOT1RTVVAgaW4gc2ZkaXNrIChidXQgcHJpbnQgd2FybmluZykgYW5kIGluIGZkaXNrX3NjcmlwdF9yZWFkX2ZpbGUoKQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20va2FyZWx6YWsvdXRpbC1saW51eC9jb21taXQvMDBlNTNmMTdjODQ2MmNiMzRlY2UwOGNjMTBkYjYwYTdkYTI5YTMwNV0KKworQWRkcmVzc2VzOiBodHRwczovL2dpdGh1Yi5jb20va2FyZWx6YWsvdXRpbC1saW51eC9pc3N1ZXMvOTQ5CitTaWduZWQtb2ZmLWJ5OiBLYXJlbCBaYWsgPGt6YWtAcmVkaGF0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IFBpZXJyZS1KZWFuIFRleGllciA8cGp0ZXhpZXJAa29uY2VwdG8uaW8+CistLS0KKyBkaXNrLXV0aWxzL3NmZGlzay5jICAgfCAgNiArKysrKy0KKyBsaWJmZGlzay9zcmMvc2NyaXB0LmMgfCA0OSArKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAzMSBpbnNlcnRpb25zKCspLCAyNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Rpc2stdXRpbHMvc2ZkaXNrLmMgYi9kaXNrLXV0aWxzL3NmZGlzay5jCitpbmRleCBiYjZlMWM2Li5jMGJlYTcwIDEwMDY0NAorLS0tIGEvZGlzay11dGlscy9zZmRpc2suYworKysrIGIvZGlzay11dGlscy9zZmRpc2suYworQEAgLTE3ODIsNyArMTc4MiwxMSBAQCBzdGF0aWMgaW50IGNvbW1hbmRfZmRpc2soc3RydWN0IHNmZGlzayAqc2YsIGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCX0KKyAKKyAJCXJjID0gZmRpc2tfc2NyaXB0X3JlYWRfbGluZShkcCwgc3RkaW4sIGJ1Ziwgc2l6ZW9mKGJ1ZikpOworLQkJaWYgKHJjIDwgMCkgeworKwkJaWYgKHJjID09IC1FTk9UU1VQKSB7CisrCQkJYnVmW3NpemVvZihidWYpIC0gMV0gPSAnXDAnOworKwkJCWZkaXNrX3dhcm54KHNmLT5jeHQsIF8oIlVua25vd24gc2NyaXB0IGhlYWRlciAnJXMnIC0tIGlnbm9yZS4iKSwgYnVmKTsKKysJCQljb250aW51ZTsKKysJCX0gZWxzZSBpZiAocmMgPCAwKSB7CisgCQkJREJHKFBBUlNFLCB1bF9kZWJ1Zygic2NyaXB0IHBhcnNpbmcgZmFpbGVkLCB0cnlpbmcgc2ZkaXNrIHNwZWNpZmljIGNvbW1hbmRzIikpOworIAkJCWJ1ZltzaXplb2YoYnVmKSAtIDFdID0gJ1wwJzsKKyAJCQlyYyA9IGxvb3BfY29udHJvbF9jb21tYW5kcyhzZiwgZHAsIGJ1Zik7CitkaWZmIC0tZ2l0IGEvbGliZmRpc2svc3JjL3NjcmlwdC5jIGIvbGliZmRpc2svc3JjL3NjcmlwdC5jCitpbmRleCBhMjE3NzFiLi5kM2U2N2ZhIDEwMDY0NAorLS0tIGEvbGliZmRpc2svc3JjL3NjcmlwdC5jCisrKysgYi9saWJmZGlzay9zcmMvc2NyaXB0LmMKK0BAIC04MDUsOCArODA1LDEyIEBAIHN0YXRpYyBpbmxpbmUgaW50IGlzX2hlYWRlcl9saW5lKGNvbnN0IGNoYXIgKnMpCisgLyogcGFyc2VzICI8bmFtZT46IHZhbHVlIiwgbm90ZSBtb2RpZmllcyBAcyovCisgc3RhdGljIGludCBwYXJzZV9saW5lX2hlYWRlcihzdHJ1Y3QgZmRpc2tfc2NyaXB0ICpkcCwgY2hhciAqcykKKyB7CistCWludCByYyA9IC1FSU5WQUw7CisrCXNpemVfdCBpOworIAljaGFyICpuYW1lLCAqdmFsdWU7CisrCXN0YXRpYyBjb25zdCBjaGFyICpzdXBwb3J0ZWRbXSA9IHsKKysJCSJsYWJlbCIsICJ1bml0IiwgImxhYmVsLWlkIiwgImRldmljZSIsICJncmFpbiIsCisrCQkiZmlyc3QtbGJhIiwgImxhc3QtbGJhIiwgInRhYmxlLWxlbmd0aCIsICJzZWN0b3Itc2l6ZSIKKysJfTsKKyAKKyAJREJHKFNDUklQVCwgdWxfZGVidWdvYmooZHAsICIgICBwYXJzZSBoZWFkZXIgJyVzJyIsIHMpKTsKKyAKK0BAIC04MTYsNyArODIwLDcgQEAgc3RhdGljIGludCBwYXJzZV9saW5lX2hlYWRlcihzdHJ1Y3QgZmRpc2tfc2NyaXB0ICpkcCwgY2hhciAqcykKKyAJbmFtZSA9IHM7CisgCXZhbHVlID0gc3RyY2hyKHMsICc6Jyk7CisgCWlmICghdmFsdWUpCistCQlnb3RvIGRvbmU7CisrCQlyZXR1cm4gLUVJTlZBTDsKKyAJKnZhbHVlID0gJ1wwJzsKKyAJdmFsdWUrKzsKKyAKK0BAIC04MjUsMzIgKzgyOSwzMCBAQCBzdGF0aWMgaW50IHBhcnNlX2xpbmVfaGVhZGVyKHN0cnVjdCBmZGlza19zY3JpcHQgKmRwLCBjaGFyICpzKQorIAlsdHJpbV93aGl0ZXNwYWNlKCh1bnNpZ25lZCBjaGFyICopIHZhbHVlKTsKKyAJcnRyaW1fd2hpdGVzcGFjZSgodW5zaWduZWQgY2hhciAqKSB2YWx1ZSk7CisgCisrCWlmICghKm5hbWUgfHwgISp2YWx1ZSkKKysJCXJldHVybiAtRUlOVkFMOworKworKwkvKiBjaGVjayBoZWFkZXIgbmFtZSAqLworKwlmb3IgKGkgPSAwOyBpIDwgQVJSQVlfU0laRShzdXBwb3J0ZWQpOyBpKyspIHsKKysJCWlmIChzdHJjbXAobmFtZSwgc3VwcG9ydGVkW2ldKSA9PSAwKQorKwkJCWJyZWFrOworKwl9CisrCWlmIChpID09IEFSUkFZX1NJWkUoc3VwcG9ydGVkKSkKKysJCXJldHVybiAtRU5PVFNVUDsKKysKKysJLyogaGVhZGVyIHNwZWNpZmljIGFjdGlvbnMgKi8KKyAJaWYgKHN0cmNtcChuYW1lLCAibGFiZWwiKSA9PSAwKSB7CisgCQlpZiAoZHAtPmN4dCAmJiAhZmRpc2tfZ2V0X2xhYmVsKGRwLT5jeHQsIHZhbHVlKSkKKy0JCQlnb3RvIGRvbmU7CQkJLyogdW5rbm93biBsYWJlbCBuYW1lICovCisrCQkJcmV0dXJuIC1FSU5WQUw7CQkJLyogdW5rbm93biBsYWJlbCBuYW1lICovCisgCQlkcC0+Zm9yY2VfbGFiZWwgPSAxOworKworIAl9IGVsc2UgaWYgKHN0cmNtcChuYW1lLCAidW5pdCIpID09IDApIHsKKyAJCWlmIChzdHJjbXAodmFsdWUsICJzZWN0b3JzIikgIT0gMCkKKy0JCQlnb3RvIGRvbmU7CQkJLyogb25seSAic2VjdG9ycyIgc3VwcG9ydGVkICovCistCX0gZWxzZSBpZiAoc3RyY21wKG5hbWUsICJsYWJlbC1pZCIpID09IDAKKy0JCSAgIHx8IHN0cmNtcChuYW1lLCAiZGV2aWNlIikgPT0gMAorLQkJICAgfHwgc3RyY21wKG5hbWUsICJncmFpbiIpID09IDAKKy0JCSAgIHx8IHN0cmNtcChuYW1lLCAiZmlyc3QtbGJhIikgPT0gMAorLQkJICAgfHwgc3RyY21wKG5hbWUsICJsYXN0LWxiYSIpID09IDAKKy0JCSAgIHx8IHN0cmNtcChuYW1lLCAidGFibGUtbGVuZ3RoIikgPT0gMCkgeworLQkJOwkJCQkJLyogd2hhdGV2ZXIgaXMgcG9zc2libGUgKi8KKy0JfSBlbHNlCistCQlnb3RvIGRvbmU7CQkJCS8qIHVua25vd24gaGVhZGVyICovCisrCQkJcmV0dXJuIC1FSU5WQUw7CQkJLyogb25seSAic2VjdG9ycyIgc3VwcG9ydGVkICovCisgCistCWlmICgqbmFtZSAmJiAqdmFsdWUpCistCQlyYyA9IGZkaXNrX3NjcmlwdF9zZXRfaGVhZGVyKGRwLCBuYW1lLCB2YWx1ZSk7CistZG9uZToKKy0JaWYgKHJjKQorLQkJREJHKFNDUklQVCwgdWxfZGVidWdvYmooZHAsICJoZWFkZXIgcGFyc2UgZXJyb3I6ICIKKy0JCQkJIltyYz0lZCwgbmFtZT0nJXMnLCB2YWx1ZT0nJXMnXSIsCistCQkJCXJjLCBuYW1lLCB2YWx1ZSkpOworLQlyZXR1cm4gcmM7CisrCX0KKyAKKysJcmV0dXJuIGZkaXNrX3NjcmlwdF9zZXRfaGVhZGVyKGRwLCBuYW1lLCB2YWx1ZSk7CisgfQorIAorIC8qIHJldHVybnMgemVybyB0ZXJtaW5hdGVkIHN0cmluZyB3aXRoIG5leHQgdG9rZW4gYW5kIEBzdHIgaXMgdXBkYXRlZCAqLworQEAgLTEzNjMsNyArMTM2NSw4IEBAIGludCBmZGlza19zY3JpcHRfc2V0X2ZnZXRzKHN0cnVjdCBmZGlza19zY3JpcHQgKmRwLAorICAqCisgICogUmVhZHMgbmV4dCBsaW5lIGludG8gZHVtcC4KKyAgKgorLSAqIFJldHVybnM6IDAgb24gc3VjY2VzcywgPDAgb24gZXJyb3IsIDEgd2hlbiBub3RoaW5nIHRvIHJlYWQuCisrICogUmV0dXJuczogMCBvbiBzdWNjZXNzLCA8MCBvbiBlcnJvciwgMSB3aGVuIG5vdGhpbmcgdG8gcmVhZC4gRm9yIHVua25vd24gaGVhZGVycworKyAqICAgICAgICAgIHJldHVybnMgLUVOT1RTVVAsIGl0J3MgdXN1YWxseSBzYWZlIHRvIGlnbm9yZSB0aGlzIGVycm9yLgorICAqLworIGludCBmZGlza19zY3JpcHRfcmVhZF9saW5lKHN0cnVjdCBmZGlza19zY3JpcHQgKmRwLCBGSUxFICpmLCBjaGFyICpidWYsIHNpemVfdCBidWZzeikKKyB7CitAQCAtMTQyOCw3ICsxNDMxLDcgQEAgaW50IGZkaXNrX3NjcmlwdF9yZWFkX2ZpbGUoc3RydWN0IGZkaXNrX3NjcmlwdCAqZHAsIEZJTEUgKmYpCisgCisgCXdoaWxlICghZmVvZihmKSkgeworIAkJcmMgPSBmZGlza19zY3JpcHRfcmVhZF9saW5lKGRwLCBmLCBidWYsIHNpemVvZihidWYpKTsKKy0JCWlmIChyYykKKysJCWlmIChyYyAmJiByYyAhPSAtRU5PVFNVUCkKKyAJCQlicmVhazsKKyAJfQorIAorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC8wMDAxLWxzYmxrLWZvcmNlLXRvLXByaW50LVBLTkFNRS1mb3ItcGFydGl0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXgvMDAwMS1sc2Jsay1mb3JjZS10by1wcmludC1QS05BTUUtZm9yLXBhcnRpdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ0YzE0OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eC8wMDAxLWxzYmxrLWZvcmNlLXRvLXByaW50LVBLTkFNRS1mb3ItcGFydGl0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSBlM2JiOWJmYjc2YzE3YjFkMDU4MTQ0MzZjZWQ2MmMwNWM0MDExZjQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2FyZWwgWmFrIDxremFrQHJlZGhhdC5jb20+Ci1EYXRlOiBUaHUsIDI3IEp1biAyMDE5IDA5OjIyOjE4ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGxzYmxrOiBmb3JjZSB0byBwcmludCBQS05BTUUgZm9yIHBhcnRpdGlvbgotCi1QS05BTUUgKHBhcmVudCBrZXJuZWwgZGV2aWNlIG5hbWUpIGlzIGJhc2VkIG9uIHByaW50ZWQgdHJlZSBhY2NvcmRpbmcKLXRvIHBhcmVudCAtPiBjaGlsZCByZWxhdGlvbnNoaXAuIFRoZSB0cmVlIGlzIG9wdGlvbmFsIGFuZCBub3QgcHJpbnRlZAotaWYgcGFydGl0aW9uIHNwZWNpZmllZCAoLmUuZyAibHNibGsgLW8rUEtOQU1FIC9kZXYvc2RhMSIpLCBidXQgb2xkCi12ZXJzaW9ucyBwcmludCB0aGUgUEtOQU1FIGFsc28gaW4gdGhpcyBjYXNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20va2FyZWx6YWsvdXRpbC1saW51eC9jb21taXQvZTNiYjliZmI3NmMxN2IxZDA1ODE0NDM2Y2VkNjJjMDVjNDAxMWY0OF0KLQotQWRkcmVzc2VzOiBodHRwczovL2dpdGh1Yi5jb20va2FyZWx6YWsvdXRpbC1saW51eC9pc3N1ZXMvODEzCi1TaWduZWQtb2ZmLWJ5OiBLYXJlbCBaYWsgPGt6YWtAcmVkaGF0LmNvbT4KLVNpZ25lZC1vZmYtYnk6IExpd2VpIFNvbmcgPGxpd2VpLnNvbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIG1pc2MtdXRpbHMvbHNibGsuYyB8IDMgKysrCi0gMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbWlzYy11dGlscy9sc2Jsay5jIGIvbWlzYy11dGlscy9sc2Jsay5jCi1pbmRleCBlOTVhZjdhZjAyNTYuLjNjZTZkYTczMDI2NCAxMDA2NDQKLS0tLSBhL21pc2MtdXRpbHMvbHNibGsuYwotKysrIGIvbWlzYy11dGlscy9sc2Jsay5jCi1AQCAtMTAxOSw2ICsxMDE5LDkgQEAgc3RhdGljIHZvaWQgZGV2aWNlX3RvX3Njb2xzKAotIAlEQkcoREVWLCB1bF9kZWJ1Z29iaihkZXYsICJhZGQgJyVzJyB0byBzY29scyIsIGRldi0+bmFtZSkpOwotIAlPTl9EQkcoREVWLCBpZiAodWxfcGF0aF9pc29wZW5fZGlyZmQoZGV2LT5zeXNmcykpIHVsX2RlYnVnb2JqKGRldiwgIiAlcyAtLS0+IGlzIG9wZW4hIiwgZGV2LT5uYW1lKSk7Ci0gCi0rCWlmICghcGFyZW50ICYmIGRldi0+d2hvbGVkaXNrKQotKwkJcGFyZW50ID0gZGV2LT53aG9sZWRpc2s7Ci0rCi0gCS8qIERvIG5vdCBwcmludCBkZXZpY2UgbW9yZSB0aGFuIG9uZSBpbiAtLWxpc3QgbW9kZSAqLwotIAlpZiAoIShsc2Jsay0+ZmxhZ3MgJiBMU0JMS19UUkVFKSAmJiBkZXYtPmlzX3ByaW50ZWQpCi0gCQlyZXR1cm47Ci0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjM0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4zNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTljMmQ4MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjM0LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTMgKzAsMCBAQAotcmVxdWlyZSB1dGlsLWxpbnV4LmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vY29uZmlndXJlLXNiaW5kaXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bnVzZXIucGFtZCBcCi0gICAgICAgICAgICBmaWxlOi8vcnVudXNlci1sLnBhbWQgXAotICAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICAgZmlsZTovL2Rpc3BsYXlfdGVzdG5hbWVfZm9yX3N1YnRlc3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWxzYmxrLWZvcmNlLXRvLXByaW50LVBLTkFNRS1mb3ItcGFydGl0aW9uLnBhdGNoIFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhNzhjYmVhZWQ5YzM5MDk0Yjk2YTQ4YmE4Zjg5MWQ1MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NDNmOWQwYzcyNTJiNmRiMjQ2YjY1OWMxZTFjZTBiZDQ1ZDhkNDUwOGI0ZGZhNDI3YmJiNGEzZTliOWY2MmI1IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4zNS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtY29yZS91dGlsLWxpbnV4L3V0aWwtbGludXhfMi4zNS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUxOTY0YzkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1jb3JlL3V0aWwtbGludXgvdXRpbC1saW51eF8yLjM1LjEuYmIKQEAgLTAsMCArMSwxNCBAQAorcmVxdWlyZSB1dGlsLWxpbnV4LmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vY29uZmlndXJlLXNiaW5kaXIucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL3J1bnVzZXIucGFtZCBcCisgICAgICAgICAgICBmaWxlOi8vcnVudXNlci1sLnBhbWQgXAorICAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICAgZmlsZTovL2Rpc3BsYXlfdGVzdG5hbWVfZm9yX3N1YnRlc3QucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWh3Y2xvY2stZml4LWZvci1nbGliYy0yLjMxLXNldHRpbWVvZmRheS5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJmZGlzay1zY3JpcHQtYWNjZXB0LXNlY3Rvci1zaXplLWlnbm9yZS11bmtub3duLWhlLnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ZjY0ODgyZjYzMTIyNWYwMjk1Y2EwNTA4MGNlZTFiZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkOWRlM2VkZDI4NzM2NmNkOTA4ZTc3Njc3NTE0YjkzODdiMjJiYzdiODhmNDViODNlMTkyMmMzNTk3ZjFkN2Y5IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2FwdC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LmluYwppbmRleCA1MGM0ZDg0Li4xM2Y1OTY5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvYXB0LmluYwpAQCAtMjYsNyArMjYsNyBAQAogIyBzbyB3ZSBjaGVjayB0aGUgbGF0ZXN0IHVwc3RyZWFtIGZyb20gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGdldCB1cGRhdGVkCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2EvYXB0LyIKIAotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB1c2VyYWRkCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHVzZXJhZGQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCiAKIEVYVFJBX0FVVE9SRUNPTkYgPSAiLS1leGNsdWRlPWF1dG9wb2ludCxhdXRvaGVhZGVyIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvZmlsZXMvYXB0LmNvbmYgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hcHQvZmlsZXMvYXB0LmNvbmYKaW5kZXggMDMzNTEzNS4uYzk1YTViMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYXB0L2ZpbGVzL2FwdC5jb25mCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2FwdC9maWxlcy9hcHQuY29uZgpAQCAtMzksNCArMzksNCBAQAogICB9OwogfTsKIAotRFBrZzo6T3B0aW9ucyB7Ii0tcm9vdD0jUk9PVEZTIyI7Ii0tYWRtaW5kaXI9I1JPT1RGUyMvdmFyL2xpYi9kcGtnIjsiLS1mb3JjZS1hbGwiOyItLW5vLWRlYnNpZyJ9OworRFBrZzo6T3B0aW9ucyB7Ii0tcm9vdD0jUk9PVEZTIyI7Ii0tYWRtaW5kaXI9I1JPT1RGUyMvdmFyL2xpYi9kcGtnIjsiLS1mb3JjZS1hbGwiOyItLW5vLWZvcmNlLW92ZXJ3cml0ZSI7Ii0tbm8tZGVic2lnIn07CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9hdXRvY29uZi1hcmNoaXZlL2F1dG9jb25mLWFyY2hpdmVfMjAxOS4wMS4wNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLWFyY2hpdmUvYXV0b2NvbmYtYXJjaGl2ZV8yMDE5LjAxLjA2LmJiCmluZGV4IDk4NWEyNTQuLjEzNTkzZDcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLWFyY2hpdmUvYXV0b2NvbmYtYXJjaGl2ZV8yMDE5LjAxLjA2LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2F1dG9jb25mLWFyY2hpdmUvYXV0b2NvbmYtYXJjaGl2ZV8yMDE5LjAxLjA2LmJiCkBAIC05LDcgKzksNyBAQAogU1JDX1VSSVttZDVzdW1dID0gImQ0NjQxM2M4YjAwYTEyNWIxNTI5YmFlMzg1YmJlYzU1IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjE3MTk1YzgzMzA5OGRhNzlkZTU3NzhlZTkwOTQ4ZjRjNWQ5MGVkMWEwY2Y4MzkxYjRhYjM0OGUyZWM1MTFlM2YiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIGFsbGFyY2gKK2luaGVyaXQgYXV0b3Rvb2xzIGFsbGFyY2ggdGV4aW5mbwogCiBQQUNLQUdFUyA9ICIke1BOfSAke1BOfS1kb2MiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLTIuMzIuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4zMi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0OWMzZTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4zMi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw1OSArMCwwIEBACi1MSUNfRklMRVNfQ0hLU1VNPSJcCi0gICAgZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzRcCi0gICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKLSAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNlwKLSAgICBmaWxlOi8vZ2FzL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyXAotICAgIGZpbGU6Ly9pbmNsdWRlL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKLSAgICBmaWxlOi8vbGliaWJlcnR5L0NPUFlJTkcuTElCO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljN1wKLSAgICBmaWxlOi8vYmZkL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0XAotICAgICIKLQotZGVmIGJpbnV0aWxzX2JyYW5jaF92ZXJzaW9uKGQpOgotICAgIHB2c3BsaXQgPSBkLmdldFZhcignUFYnKS5zcGxpdCgnLicpCi0gICAgcmV0dXJuIHB2c3BsaXRbMF0gKyAiXyIgKyBwdnNwbGl0WzFdCi0KLSMgV2hlbiB1cGdyYWRpbmcgdG8gMi4zMywgcGxlYXNlIG1ha2Ugc3VyZSB0aGVyZSBpcyBubyB0cmFpbGluZyAuMCwgc28KLSMgdGhhdCB1cHN0cmVhbSB2ZXJzaW9uIGNoZWNrIGNhbiB3b3JrIGNvcnJlY3RseS4KLVBWID0gIjIuMzIuMCIKLUNWRV9WRVJTSU9OID0gIjIuMzIiCi1CSU5VUFYgPSAiJHtAYmludXRpbHNfYnJhbmNoX3ZlcnNpb24oZCl9IgotI0JSQU5DSCA9ICJiaW51dGlscy0ke0JJTlVQVn0tYnJhbmNoIgotQlJBTkNIID89ICJiaW51dGlscy0yXzMyLWJyYW5jaCIKLQotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiYmludXRpbHMtKD9QPHB2ZXI+XGQrXyhcZF8/KSopIgotCi1TUkNSRVYgPz0gImI4YzFmNjA4ZGI5ZWYzZWRkNDgzZDIxYTkyMWQxZmJlZGM3MWRmNmYiCi1CSU5VVElMU19HSVRfVVJJID89ICJnaXQ6Ly9zb3VyY2V3YXJlLm9yZy9naXQvYmludXRpbHMtZ2RiLmdpdDticmFuY2g9JHtCUkFOQ0h9O3Byb3RvY29sPWdpdCIKLVNSQ19VUkkgPSAiXAotICAgICAke0JJTlVUSUxTX0dJVF9VUkl9IFwKLSAgICAgZmlsZTovLzAwMDMtY29uZmlndXJlLXdpZGVuLXRoZS1yZWdleHAtZm9yLVNILWFyY2hpdGVjdHVyZXMucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwNC1Qb2ludC1zY3JpcHRzLWxvY2F0aW9uLXRvLWxpYmRpci5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2ggXAotICAgICBmaWxlOi8vMDAwNy1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMDgtd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDA5LUZpeC1ycGF0aC1pbi1saWJ0b29sLXdoZW4tc3lzcm9vdC1pcy1lbmFibGVkLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTAtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxMS1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoIFwKLSAgICAgZmlsZTovLzAwMTItZml4LXRoZS1pbmNvcnJlY3QtYXNzZW1ibGluZy1mb3ItcHBjLXdhaXQtbW5lbW9uaWMucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxMy1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaCBcCi0gICAgIGZpbGU6Ly8wMDE0LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2ggXAotICAgICBmaWxlOi8vMDAxNS1iaW51dGlscy1lbmFibGUteDg2XzY0LXBlcC1mb3ItcHJvZHVjaW5nLUVGSS1iaW5hcmllLnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE5LTkwNzQucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTktOTA3NS5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOS05MDc2LnBhdGNoIFwKLSAgICAgZmlsZTovL0NWRS0yMDE5LTkwNzcucGF0Y2ggXAotICAgICBmaWxlOi8vQ1ZFLTIwMTktOTA3MS5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOS0xMjk3Mi5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOS0xNDI1MC5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOS0xNDQ0NC5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOS0xNzQ1MC5wYXRjaCBcCi0gICAgIGZpbGU6Ly9DVkUtMjAxOS0xNzQ1MS5wYXRjaCBcCi0iCi1TICA9ICIke1dPUktESVJ9L2dpdCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotICAgICAgICBybSAtcmYgJHtTfS9nZGIgJHtTfS9saWJkZWNudW1iZXIgJHtTfS9yZWFkbGluZSAke1N9L3NpbQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4zNC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy0yLjM0LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NmEzODUwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtMi4zNC5pbmMKQEAgLTAsMCArMSw0NiBAQAorTElDX0ZJTEVTX0NIS1NVTT0iXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MlwKKyAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0XAorICAgIGZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCisgICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjZcCisgICAgZmlsZTovL2dhcy9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICBmaWxlOi8vaW5jbHVkZS9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MlwKKyAgICBmaWxlOi8vaW5jbHVkZS9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDRcCisgICAgZmlsZTovL2xpYmliZXJ0eS9DT1BZSU5HLkxJQjttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzdcCisgICAgZmlsZTovL2JmZC9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNFwKKyAgICAiCisKK2RlZiBiaW51dGlsc19icmFuY2hfdmVyc2lvbihkKToKKyAgICBwdnNwbGl0ID0gZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKQorICAgIHJldHVybiBwdnNwbGl0WzBdICsgIl8iICsgcHZzcGxpdFsxXQorCisjIFdoZW4gdXBncmFkaW5nIHRvIDIuMzUsIHBsZWFzZSBtYWtlIHN1cmUgdGhlcmUgaXMgbm8gdHJhaWxpbmcgLjAsIHNvCisjIHRoYXQgdXBzdHJlYW0gdmVyc2lvbiBjaGVjayBjYW4gd29yayBjb3JyZWN0bHkuCitQViA9ICIyLjM0IgorQ1ZFX1ZFUlNJT04gPSAiMi4zNCIKK0JJTlVQViA9ICIke0BiaW51dGlsc19icmFuY2hfdmVyc2lvbihkKX0iCisjQlJBTkNIID0gImJpbnV0aWxzLSR7QklOVVBWfS1icmFuY2giCitCUkFOQ0ggPz0gImJpbnV0aWxzLTJfMzQtYnJhbmNoIgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJiaW51dGlscy0oP1A8cHZlcj5cZCtfKFxkXz8pKikiCisKK1NSQ1JFViA/PSAiZDRiNTA5OTliM2IyODdiNWY5ODRhZGUyZjg3MzRhYThjOTM1OTQ0MCIKK0JJTlVUSUxTX0dJVF9VUkkgPz0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9iaW51dGlscy1nZGIuZ2l0O2JyYW5jaD0ke0JSQU5DSH07cHJvdG9jb2w9Z2l0IgorU1JDX1VSSSA9ICJcCisgICAgICR7QklOVVRJTFNfR0lUX1VSSX0gXAorICAgICBmaWxlOi8vMDAwNC1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA1LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMDYtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA3LVVzZS1saWJ0b29sLTIuNC5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2ggXAorICAgICBmaWxlOi8vMDAwOS13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2ggXAorICAgICBmaWxlOi8vMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDE0LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoIFwKKyAgICAgZmlsZTovLzAwMTUtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaCBcCisgICAgIGZpbGU6Ly8wMDE2LUNoZWNrLWZvci1jbGFuZy1iZWZvcmUtY2hlY2tpbmctZ2NjLXZlcnNpb24ucGF0Y2ggXAorICAgICBmaWxlOi8vQ1ZFLTIwMjAtMDU1MS5wYXRjaCBcCisiCitTICA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLWNhbmFkaWFuXzIuMzIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjM0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjMyLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy1jYW5hZGlhbl8yLjM0LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy10ZXN0c3VpdGVfMi4zMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzLXRlc3RzdWl0ZV8yLjM0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zcy10ZXN0c3VpdGVfMi4zMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3MtdGVzdHN1aXRlXzIuMzQuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLWNyb3NzXzIuMzIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc18yLjM0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc18yLjMyLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc18yLjM0LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy1jcm9zc3Nka18yLjMyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NzZGtfMi4zNC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NzZGtfMi4zMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMtY3Jvc3NzZGtfMi4zNC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMuaW5jCmluZGV4IDBmYjZjYWUuLmU5M2NkNTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy5pbmMKQEAgLTEzLDE3ICsxMywxMiBAQAogCiBERVBFTkRTID0gImZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSB6bGliLW5hdGl2ZSBnbnUtY29uZmlnLW5hdGl2ZSBhdXRvY29uZi1uYXRpdmUiCiAKLSMKLSMgd2UgbmVlZCBjaHJwYXRoID4gMC4xNCBhbmQgc29tZSBkaXN0cm9zIGxpa2UgY2VudG9zIDcgc3RpbGwgaGF2ZSBvbGRlciBjaHJwYXRoCi0jCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGNocnBhdGgtcmVwbGFjZW1lbnQtbmF0aXZlIgotRVhUUkFOQVRJVkVQQVRIX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGNocnBhdGgtbmF0aXZlIgotCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IG11bHRpbGliX2hlYWRlciB0ZXhpbmZvCiAKIEZJTEVTXyR7UE59ID0gIiBcCiAJJHtiaW5kaXJ9LyR7VEFSR0VUX1BSRUZJWH0qIFwKLQkke2xpYmRpcn0vbGliKi0qLnNvIFwKKwkke2xpYmRpcn0vbGliKi5zby4qIFwKKwkke2xpYmRpcn0vbGliKi0ke1BWfSouc28gXAogCSR7cHJlZml4fS8ke1RBUkdFVF9TWVN9L2Jpbi8qIFwKICAgICAgICAgJHtiaW5kaXJ9L2VtYmVkc3B1IgogCkBAIC0zMyw2ICsyOCw4IEBACiAJJHtpbmNsdWRlZGlyfSBcCiAJJHtsaWJkaXJ9LyoubGEgXAogCSR7bGliZGlyfS9saWJiZmQuc28gXAorCSR7bGliZGlyfS9saWJjdGYuc28gXAorCSR7bGliZGlyfS9saWJjdGYtbm9iZmQuc28gXAogCSR7bGliZGlyfS9saWJvcGNvZGVzLnNvIgogCiAjIFJhdGhlciB0aGFuIGR1cGxpY2F0aW5nIG11bHRpcGxlIGVudHJpZXMgZm9yIHRoZXNlLCBtYWtlIG9uZQpAQCAtNDAsNiArMzcsOCBAQAogCiBMREdPTERfQUxUUyA/PSAibGQuZ29sZCBkd3AiCiBMREdPTERfQUxUU19yaXNjdjY0ID0gIiIKK0xER09MRF9BTFRTX3Jpc2N2MzIgPSAiIgorTERHT0xEX0FMVFNfbGliYy1nbGliY19taXBzYXJjaCA9ICIiCiAKIFVTRV9BTFRFUk5BVElWRVNfRk9SID0gIiBcCiAJYWRkcjJsaW5lIFwKQEAgLTc2LDEzICs3NSwyNSBAQAogICAgICAgICAgICAgICAgIC0tZGlzYWJsZS13ZXJyb3IgXAogICAgICAgICAgICAgICAgIC0tZW5hYmxlLWRldGVybWluaXN0aWMtYXJjaGl2ZXMgXAogICAgICAgICAgICAgICAgIC0tZW5hYmxlLXBsdWdpbnMgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nZGIgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1nZGJzZXJ2ZXIgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJkZWNudW1iZXIgXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1yZWFkbGluZSBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXNpbSBcCiAgICAgICAgICAgICAgICAgJHtMREdPTER9IFwKKyAgICAgICAgICAgICAgICAke0VYVFJBX1RBUkdFVFN9IFwKICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ211bHRpYXJjaCcsICctLWVuYWJsZS02NC1iaXQtYmZkJywgJycsIGQpfSIKIAorRVhUUkFfVEFSR0VUUyA9ICIiCitFWFRSQV9UQVJHRVRTX3g4Ni02NCA9ICIgLS1lbmFibGUtdGFyZ2V0cz14ODZfNjQtcGUseDg2XzY0LXBlcCAiCitFWFRSQV9UQVJHRVRTX2NsYXNzLW5hdGl2ZSA9ICIiCisKIExER09MRF9jbGFzcy1uYXRpdmUgPSAiIgogTERHT0xEX2NsYXNzLWNyb3Nzc2RrID0gIiIKK0xER09MRF9saWJjLWdsaWJjX21pcHNhcmNoID0gIiIKIExER09MRCA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgJy0tZW5hYmxlLWdvbGQ9ZGVmYXVsdCAtLWVuYWJsZS10aHJlYWRzJywgJy0tZW5hYmxlLWdvbGQgLS1lbmFibGUtbGQ9ZGVmYXVsdCAtLWVuYWJsZS10aHJlYWRzJywgZCl9IgogCisKICMgVGhpcyBpcyBuZWNlc3NhcnkgZHVlIHRvIGEgYnVnIGluIHRoZSBiaW51dGlscyBNYWtlZmlsZXMKICMgRVhUUkFfT0VNQUtFID0gImNvbmZpZ3VyZS1idWlsZC1saWJpYmVydHkgYWxsIgogCkBAIC0xMTAsNyArMTIxLDggQEAKIE1VTFRJQVJDSCA6PSAiJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJtdWx0aWFyY2giLCAieWVzIiwgIm5vIiwgZCl9IgogZG9fY29uZmlndXJlW3ZhcmRlcHNdICs9ICJNVUxUSUFSQ0giCiBkb19jb25maWd1cmUgKCkgewotCShjZCAke1N9OyBnbnUtY29uZmlnaXplKSB8fCBkaWUgIkZhaWxlZCB0byBydW4gZ251LWNvbmZpZ2l6ZSIKKwkoY2QgJHtTfSAmJiBnbnUtY29uZmlnaXplKQorCiAJb2VfcnVuY29uZgogIwogIyBtdXN0IHByaW1lIGNvbmZpZy5jYWNoZSB0byBlbnN1cmUgdGhlIGJ1aWxkIG9mIGxpYmliZXJ0eQpAQCAtMTIxLDEwICsxMzMsNiBAQAogCWRvbmUKIH0KIAotZG9fY29tcGlsZV9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotCWNocnBhdGggLWQgJHtCfS9iaW51dGlscy9lbGZlZGl0Ci0JY2hycGF0aCAtZCAke0J9L2JpbnV0aWxzL3JlYWRlbGYKLX0KIGRvX2luc3RhbGwgKCkgewogCWF1dG90b29sc19kb19pbnN0YWxsCiAKQEAgLTE0NCw2ICsxNTIsMTEgQEAKIAlpbnN0YWxsIC1tIDY0NCAke1N9L2luY2x1ZGUvYW5zaWRlY2wuaCAke0R9JHtpbmNsdWRlZGlyfQogCWluc3RhbGwgLW0gNjQ0ICR7U30vaW5jbHVkZS9saWJpYmVydHkuaCAke0R9JHtpbmNsdWRlZGlyfQogCisJIyBpbnNhbGwgcGljIHZlcnNpb24gb2YgbGliaWJlcnR5IGlmIGF2YWlsYWJsZQorICAgICAgICBpZiBbIC1lICR7Qn0vbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYSBdOyB0aGVuCisJCWluc3RhbGwgLURtIDA2NDQgJHtCfS9saWJpYmVydHkvcGljL2xpYmliZXJ0eS5hICR7RH0ke2xpYmRpcn0vbGliaWJlcnR5LmEKKwlmaQorCiAJY2QgJHtEfSR7YmluZGlyfQogCiAJIyBTeW1saW5rcyBmb3IgZWFzZSBvZiBydW5uaW5nIHRoZXNlIG9uIHRoZSBuYXRpdmUgdGFyZ2V0CkBAIC0xNTYsNiArMTY5LDggQEAKIAlkb25lCiAKIAlvZV9tdWx0aWxpYl9oZWFkZXIgYmZkLmgKKyAgICAgICAgIyBiZmRfc3RkaW50LmggZW5jb2RlcyB0aGUgY29tcGlsZXIgbmFtZSBpbiB0aGUgaGVhZGVyCisgICAgICAgIHNlZCAtaSAke0R9JHtpbmNsdWRlZGlyfS9iZmRfc3RkaW50LmggLWUgInMsJHtUQVJHRVRfUFJFRklYfSwsIgogfQogCiBpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKQEAgLTE2MywzICsxNzgsOCBAQAogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgogCiBBTFRFUk5BVElWRV8ke1BOfV9jbGFzcy10YXJnZXQgPSAiJHtVU0VfQUxURVJOQVRJVkVTX0ZPUn0iCisKK3B5dGhvbiAoKSB7CisgICAgaWYgYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdsZC1pcy1nb2xkJywgVHJ1ZSwgRmFsc2UsIGQpIGFuZCBiYi51dGlscy5jb250YWluc19hbnkoJ1RBUkdFVF9BUkNIJywgJ3Jpc2N2MzIgcmlzY3Y2NCcsIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgYmIuZmF0YWwoIkdvbGQgbGlua2VyIGRvZXMgbm90IF95ZXRfIHN1cHBvcnQgUklTQy1WIGFyY2hpdGVjdHVyZSBwbGVhc2UgcmVtb3ZlIGxkLWlzLWdvbGQgZnJvbSBESVNUUk9fRkVBVFVSRVMiKQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMS1iaW51dGlscy1jcm9zc3Nkay1HZW5lcmF0ZS1yZWxvY2F0YWJsZS1TREtzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMS1iaW51dGlscy1jcm9zc3Nkay1HZW5lcmF0ZS1yZWxvY2F0YWJsZS1TREtzLnBhdGNoCmluZGV4IDY1ODFiYWQuLjE0ZTg0MjEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDEtYmludXRpbHMtY3Jvc3NzZGstR2VuZXJhdGUtcmVsb2NhdGFibGUtU0RLcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAxLWJpbnV0aWxzLWNyb3Nzc2RrLUdlbmVyYXRlLXJlbG9jYXRhYmxlLVNES3MucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDViY2Q4ODRmOGFmNTEwNmQwZmEzODBjNDJjZmZlMDdmM2M5OTNlZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGIwNWYwYmUxM2FhZGYwYjI2YTBiMzlkZmU3ZGFmMmM0N2EzMDAzMzggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjU4OjU0ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvMTVdIGJpbnV0aWxzLWNyb3Nzc2RrOiBHZW5lcmF0ZSByZWxvY2F0YWJsZSBTREtzCitTdWJqZWN0OiBbUEFUQ0hdIGJpbnV0aWxzLWNyb3Nzc2RrOiBHZW5lcmF0ZSByZWxvY2F0YWJsZSBTREtzCiAKIFRoaXMgcGF0Y2ggd2lsbCBtb2RpZnkgdGhlIEVMRiBsaW5rZXIgc2NyaXB0cyBzbyB0aGF0IHRoZSBjcm9zc3NkawogbGlua2VyIHdpbGwgZ2VuZXJhdGUgYmluYXJpZXMgd2l0aCBhIDQwOTYgYnl0ZXMgUFRfSU5URVJQIHNlY3Rpb24uIFdoZW4gdGhlIGJpbmFyaWVzCkBAIC0xOCwzNSArMTgsMzUgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2xkL2dlbnNjcmlwdHMuc2ggYi9sZC9nZW5zY3JpcHRzLnNoCi1pbmRleCA3N2RkYmJjOGY4Li5kNzg5ZTc3OTQzIDEwMDc1NQoraW5kZXggMDMzOTJkMjY1Yy4uNDM1Njg5ZWExNCAxMDA3NTUKIC0tLSBhL2xkL2dlbnNjcmlwdHMuc2gKICsrKyBiL2xkL2dlbnNjcmlwdHMuc2gKLUBAIC0zMTAsNiArMzEwLDcgQEAgREFUQV9BTElHTk1FTlRfdT0iJHtEQVRBX0FMSUdOTUVOVF91LSR7REFUQV9BTElHTk1FTlRfcn19IgorQEAgLTMwNCw2ICszMDQsNyBAQCBEQVRBX0FMSUdOTUVOVF91PSIke0RBVEFfQUxJR05NRU5UX3UtJHtEQVRBX0FMSUdOTUVOVF9yfX0iCiAgTERfRkxBRz1yCiAgREFUQV9BTElHTk1FTlQ9JHtEQVRBX0FMSUdOTUVOVF9yfQogIERFRkFVTFRfREFUQV9BTElHTk1FTlQ9IkFMSUdOKCR7U0VHTUVOVF9TSVpFfSkiCiArUEFSVElBTF9MSU5LSU5HPSIgIgotICggZWNobyAiLyogU2NyaXB0IGZvciBsZCAtcjogbGluayB3aXRob3V0IHJlbG9jYXRpb24gKi8iCi0gICAuICR7Q1VTVE9NSVpFUl9TQ1JJUFR9Ci0gICAuICR7c3JjZGlyfS9zY3JpcHR0ZW1wbC8ke1NDUklQVF9OQU1FfS5zYwotQEAgLTMxOCwxMCArMzE5LDEyIEBAIERFRkFVTFRfREFUQV9BTElHTk1FTlQ9IkFMSUdOKCR7U0VHTUVOVF9TSVpFfSkiCisgKCBlY2hvICIvKiBTY3JpcHQgZm9yIC1yICovIgorICAgc291cmNlX3NoICR7Q1VTVE9NSVpFUl9TQ1JJUFR9CisgICBzb3VyY2Vfc2ggJHtzcmNkaXJ9L3NjcmlwdHRlbXBsLyR7U0NSSVBUX05BTUV9LnNjCitAQCAtMzEyLDEwICszMTMsMTIgQEAgREVGQVVMVF9EQVRBX0FMSUdOTUVOVD0iQUxJR04oJHtTRUdNRU5UX1NJWkV9KSIKICBMRF9GTEFHPXUKICBEQVRBX0FMSUdOTUVOVD0ke0RBVEFfQUxJR05NRU5UX3V9CiAgQ09OU1RSVUNUSU5HPSIgIgogK1BBUlRJQUxfTElOS0lORz0iICIKLSAoIGVjaG8gIi8qIFNjcmlwdCBmb3IgbGQgLVVyOiBsaW5rIHcvb3V0IHJlbG9jYXRpb24sIGRvIGNyZWF0ZSBjb25zdHJ1Y3RvcnMgKi8iCi0gICAuICR7Q1VTVE9NSVpFUl9TQ1JJUFR9Ci0gICAuICR7c3JjZGlyfS9zY3JpcHR0ZW1wbC8ke1NDUklQVF9OQU1FfS5zYworICggZWNobyAiLyogU2NyaXB0IGZvciAtVXIgKi8iCisgICBzb3VyY2Vfc2ggJHtDVVNUT01JWkVSX1NDUklQVH0KKyAgIHNvdXJjZV9zaCAke3NyY2Rpcn0vc2NyaXB0dGVtcGwvJHtTQ1JJUFRfTkFNRX0uc2MKICApIHwgc2VkIC1lICcvXiAqJC9kO3MvWwkgXSokLy8nID4gbGRzY3JpcHRzLyR7RU1VTEFUSU9OX05BTUV9Lnh1CiArdW5zZXQgUEFSVElBTF9MSU5LSU5HCiAgCiAgREFUQV9BTElHTk1FTlQ9JHtEQVRBX0FMSUdOTUVOVF99CiAgUkVMT0NBVElORz0iICIKIGRpZmYgLS1naXQgYS9sZC9zY3JpcHR0ZW1wbC9lbGYuc2MgYi9sZC9zY3JpcHR0ZW1wbC9lbGYuc2MKLWluZGV4IGJkNzU4NDEyMGUuLjhiYmUwNTJkNGIgMTAwNjQ0CitpbmRleCAwYjhiMzJhNDQwLi5lZTZiNzEwNzVkIDEwMDY0NAogLS0tIGEvbGQvc2NyaXB0dGVtcGwvZWxmLnNjCiArKysgYi9sZC9zY3JpcHR0ZW1wbC9lbGYuc2MKLUBAIC0xMzksOCArMTM5LDggQEAgaWYgdGVzdCAteiAiJERBVEFfU0VHTUVOVF9BTElHTiI7IHRoZW4KK0BAIC0xNDAsOCArMTQwLDggQEAgaWYgdGVzdCAteiAiJERBVEFfU0VHTUVOVF9BTElHTiI7IHRoZW4KICAgICAgREFUQV9TRUdNRU5UX1JFTFJPX0VORD0iLiA9IERBVEFfU0VHTUVOVF9SRUxST19FTkQgKCR7U0VQQVJBVEVfR09UUExULTB9LCAuKTsiCiAgICBmaQogIGZpCkBAIC01Nyw2ICs1NywzIEBACiAgZmkKICBpZiB0ZXN0IC16ICIkUExUIjsgdGhlbgogICAgSVBMVD0iLmlwbHQgICAgICAgICAke1JFTE9DQVRJTkctMH0gOiB7ICooLmlwbHQpIH0iCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAyLWJpbnV0aWxzLWNyb3NzLURvLW5vdC1nZW5lcmF0ZS1saW5rZXItc2NyaXB0LWRpcmVjdG8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAyLWJpbnV0aWxzLWNyb3NzLURvLW5vdC1nZW5lcmF0ZS1saW5rZXItc2NyaXB0LWRpcmVjdG8ucGF0Y2gKaW5kZXggMzI1MzdkNC4uOTFkZTk0YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMi1iaW51dGlscy1jcm9zcy1Eby1ub3QtZ2VuZXJhdGUtbGlua2VyLXNjcmlwdC1kaXJlY3RvLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDItYmludXRpbHMtY3Jvc3MtRG8tbm90LWdlbmVyYXRlLWxpbmtlci1zY3JpcHQtZGlyZWN0by5wYXRjaApAQCAtMSw4ICsxLDcgQEAKLUZyb20gMTE5Mjc5MTM1NjBmYzVhNWQ1MWFmM2JjNWViOGFkNjJhODZjOTg0MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNmQ3OWY4MTMzNmU3Y2JlNzI3YjVhNTExMzRmNWQzMTRhNDU1Mzc5ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBNb24sIDYgTWFyIDIwMTcgMjM6Mzc6MDUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAwMi8xNV0gYmludXRpbHMtY3Jvc3M6IERvIG5vdCBnZW5lcmF0ZSBsaW5rZXIgc2NyaXB0Ci0gZGlyZWN0b3JpZXMKK1N1YmplY3Q6IFtQQVRDSF0gYmludXRpbHMtY3Jvc3M6IERvIG5vdCBnZW5lcmF0ZSBsaW5rZXIgc2NyaXB0IGRpcmVjdG9yaWVzCiAKIFdlIGRvbid0IHBsYWNlIHRhcmdldCBsaWJyYXJpZXMgd2l0aGluICR7ZXhlY19wcmVmaXh9LCB3ZSdkIGFsd2F5cyBwbGFjZSB0aGVzZQogd2l0aGluIHRoZSB0YXJnZXQgc3lzcm9vdCB3aXRoaW4gdGhlIHN0YW5kYXJkIGxpYnJhcnkgZGlyZWN0b3JpZXMuIFdvcnNlLCB0aGUKQEAgLTIzLDEwICsyMiwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCAyNSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2xkL2dlbnNjcmlwdHMuc2ggYi9sZC9nZW5zY3JpcHRzLnNoCi1pbmRleCBkNzg5ZTc3OTQzLi4xNDRlMmU4NzM2IDEwMDc1NQoraW5kZXggNDM1Njg5ZWExNC4uY2ZmOGExNDY3ZiAxMDA3NTUKIC0tLSBhL2xkL2dlbnNjcmlwdHMuc2gKICsrKyBiL2xkL2dlbnNjcmlwdHMuc2gKLUBAIC0yMjAsMzEgKzIyMCw2IEBAIGFwcGVuZF90b19saWJfcGF0aCgpCitAQCAtMjM1LDMxICsyMzUsNiBAQCBhcHBlbmRfdG9fbGliX3BhdGgoKQogICAgZmkKICB9CiAgCkBAIC01OCw2ICs1NywzIEBACiAgaWYgWyAieCR7TElCX1BBVEh9IiA9ICJ4IiBdICYmIFsgIngke1VTRV9MSUJQQVRIfSIgPSB4eWVzIF0gOyB0aGVuCiAgICBsaWJzPSR7TkFUSVZFX0xJQl9ESVJTfQogICAgaWYgWyAieCR7TkFUSVZFfSIgPSAieHllcyIgXSA7IHRoZW4KLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtYmludXRpbHMtbmF0aXZlc2RrLVNlYXJjaC1mb3ItYWx0ZXJuYXRpdmUtbGQuc28uY29uZi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDMtYmludXRpbHMtbmF0aXZlc2RrLVNlYXJjaC1mb3ItYWx0ZXJuYXRpdmUtbGQuc28uY29uZi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YjRkNzNkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMy1iaW51dGlscy1uYXRpdmVzZGstU2VhcmNoLWZvci1hbHRlcm5hdGl2ZS1sZC5zby5jb25mLnBhdGNoCkBAIC0wLDAgKzEsOTUgQEAKK0Zyb20gZDA1N2IyMTVmMTE0ZjYxNThiNDAxMGFiNDRhMTljYWU5ZGNjODM4NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorRGF0ZTogV2VkLCAxOSBGZWIgMjAyMCAwOTo1MToxNiAtMDgwMAorU3ViamVjdDogW1BBVENIXSBiaW51dGlscy1uYXRpdmVzZGs6IFNlYXJjaCBmb3IgYWx0ZXJuYXRpdmUgbGQuc28uY29uZiBpbiBTREsKKyBpbnN0YWxsYXRpb24KKworV2UgbmVlZCBiaW51dGlscyB0byBsb29rIGF0IG91ciBsZC5zby5jb25mIGZpbGUgd2l0aGluIHRoZSBTREsgdG8gZW5zdXJlCit3ZSBzZWFyY2ggdGhlIFNESydzIGxpYmRpcnMgYXMgd2VsbCBhcyB0aG9zZSBmcm9tIHRoZSBob3N0IHN5c3RlbS4KKworV2UgdGhlcmVmb3JlIHBhc3MgaW4gdGhlIGRpcmVjdG9yeSB0byB0aGUgY29kZSB1c2luZyBhIGRlZmluZSwgdGhlbiBhZGQKK2l0IHRvIGEgc2VjdGlvbiB3ZSByZWxvY2F0ZSBpbiBhIHNpbWlsYXIgd2F5IHRvIHRoZSB3YXkgd2UgcmVsb2NhdGUgdGhlCitnY2MgaW50ZXJuYWwgcGF0aHMuIFRoaXMgZW5zdXJlcyB0aGF0IGxkIHdvcmtzIGNvcnJlY3RseSBpbiBvdXIgYnVpbGR0b29scwordGFyYmFsbC4KKworU3RhbmRhcmQgc3lzcm9vdCByZWxvY2F0aW9uIGRvZXNuJ3Qgd29yayBzaW5jZSB3ZSdyZSBub3QgaW4gYSBzeXNyb290LAord2Ugd2FudCB0byB1c2UgYm90aCB0aGUgaG9zdCBzeXN0ZW0gYW5kIFNESyBsaWJzLgorCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KKzIwMjAvMS8xNworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpYyB0d2Vha10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxkL01ha2VmaWxlLmFtIHwgMyArKy0KKyBsZC9NYWtlZmlsZS5pbiB8IDMgKystCisgbGQvbGRlbGYuYyAgICAgfCAyICstCisgbGQvbGRtYWluLmMgICAgfCAxICsKKyBsZC9sZG1haW4uaCAgICB8IDEgKworIDUgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGQvTWFrZWZpbGUuYW0gYi9sZC9NYWtlZmlsZS5hbQoraW5kZXggNGE5Yjg0MDRiNy4uMWMxMzJkM2NlNCAxMDA2NDQKKy0tLSBhL2xkL01ha2VmaWxlLmFtCisrKysgYi9sZC9NYWtlZmlsZS5hbQorQEAgLTQyLDcgKzQyLDggQEAgWkxJQklOQyA9IEB6bGliaW5jQAorIAorIEVMRl9DTEZBR1M9LURFTEZfTElTVF9PUFRJT05TPUBlbGZfbGlzdF9vcHRpb25zQCBcCisgCSAgIC1ERUxGX1NITElCX0xJU1RfT1BUSU9OUz1AZWxmX3NobGliX2xpc3Rfb3B0aW9uc0AgXAorLQkgICAtREVMRl9QTFRfVU5XSU5EX0xJU1RfT1BUSU9OUz1AZWxmX3BsdF91bndpbmRfbGlzdF9vcHRpb25zQAorKwkgICAtREVMRl9QTFRfVU5XSU5EX0xJU1RfT1BUSU9OUz1AZWxmX3BsdF91bndpbmRfbGlzdF9vcHRpb25zQCBcCisrICAgICAgICAgICAtRFNZU0NPTkZESVI9IlwiJChzeXNjb25mZGlyKVwiIgorIFdBUk5fQ0ZMQUdTID0gQFdBUk5fQ0ZMQUdTQAorIE5PX1dFUlJPUiA9IEBOT19XRVJST1JACisgQU1fQ0ZMQUdTID0gJChXQVJOX0NGTEFHUykgJChFTEZfQ0xGQUdTKQorZGlmZiAtLWdpdCBhL2xkL01ha2VmaWxlLmluIGIvbGQvTWFrZWZpbGUuaW4KK2luZGV4IDQ2ZDliMTQwNzcuLmU0NTNiYzFiMzMgMTAwNjQ0CistLS0gYS9sZC9NYWtlZmlsZS5pbgorKysrIGIvbGQvTWFrZWZpbGUuaW4KK0BAIC01NTUsNyArNTU1LDggQEAgWkxJQiA9IEB6bGliZGlyQCAtbHoKKyBaTElCSU5DID0gQHpsaWJpbmNACisgRUxGX0NMRkFHUyA9IC1ERUxGX0xJU1RfT1BUSU9OUz1AZWxmX2xpc3Rfb3B0aW9uc0AgXAorIAkgICAtREVMRl9TSExJQl9MSVNUX09QVElPTlM9QGVsZl9zaGxpYl9saXN0X29wdGlvbnNAIFwKKy0JICAgLURFTEZfUExUX1VOV0lORF9MSVNUX09QVElPTlM9QGVsZl9wbHRfdW53aW5kX2xpc3Rfb3B0aW9uc0AKKysJICAgLURFTEZfUExUX1VOV0lORF9MSVNUX09QVElPTlM9QGVsZl9wbHRfdW53aW5kX2xpc3Rfb3B0aW9uc0AgXAorKyAgICAgICAgICAgLURTWVNDT05GRElSPSJcIiQoc3lzY29uZmRpcilcIiIKKyAKKyBBTV9DRkxBR1MgPSAkKFdBUk5fQ0ZMQUdTKSAkKEVMRl9DTEZBR1MpCisgQEVOQUJMRV9QTFVHSU5TX0ZBTFNFQFBMVUdJTl9DID0gCitkaWZmIC0tZ2l0IGEvbGQvbGRlbGYuYyBiL2xkL2xkZWxmLmMKK2luZGV4IDJlMjdjZjQ4YTguLmEwOTVkNmFhYzUgMTAwNjQ0CistLS0gYS9sZC9sZGVsZi5jCisrKysgYi9sZC9sZGVsZi5jCitAQCAtOTA3LDcgKzkwNyw3IEBAIGxkZWxmX2NoZWNrX2xkX3NvX2NvbmYgKGNvbnN0IHN0cnVjdCBiZmRfbGlua19uZWVkZWRfbGlzdCAqbCwgaW50IGZvcmNlLAorIAorICAgICAgIGluZm8ucGF0aCA9IE5VTEw7CisgICAgICAgaW5mby5sZW4gPSBpbmZvLmFsbG9jID0gMDsKKy0gICAgICB0bXBwYXRoID0gY29uY2F0IChsZF9zeXNyb290LCBwcmVmaXgsICIvZXRjL2xkLnNvLmNvbmYiLAorKyAgICAgIHRtcHBhdGggPSBjb25jYXQgKGxkX3N5c2NvbmZkaXIsICIvbGQuc28uY29uZiIsCisgCQkJKGNvbnN0IGNoYXIgKikgTlVMTCk7CisgICAgICAgaWYgKCFsZGVsZl9wYXJzZV9sZF9zb19jb25mICgmaW5mbywgdG1wcGF0aCkpCisgCXsKK2RpZmYgLS1naXQgYS9sZC9sZG1haW4uYyBiL2xkL2xkbWFpbi5jCitpbmRleCBjNGFmMTBmNGU5Li5kYTFhZDE3NzYzIDEwMDY0NAorLS0tIGEvbGQvbGRtYWluLmMKKysrKyBiL2xkL2xkbWFpbi5jCitAQCAtNjksNiArNjksNyBAQCBjaGFyICpwcm9ncmFtX25hbWU7CisgCisgLyogVGhlIHByZWZpeCBmb3Igc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXMuICAqLworIGNvbnN0IGNoYXIgKmxkX3N5c3Jvb3Q7CisrY2hhciBsZF9zeXNjb25mZGlyWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNZU0NPTkZESVI7CisgCisgLyogVGhlIGNhbm9uaWNhbCByZXByZXNlbnRhdGlvbiBvZiBsZF9zeXNyb290LiAgKi8KKyBjaGFyICpsZF9jYW5vbl9zeXNyb290OworZGlmZiAtLWdpdCBhL2xkL2xkbWFpbi5oIGIvbGQvbGRtYWluLmgKK2luZGV4IDBmMDU4MjFkMWUuLjU0YzM2YTk0Y2UgMTAwNjQ0CistLS0gYS9sZC9sZG1haW4uaAorKysrIGIvbGQvbGRtYWluLmgKK0BAIC0yMyw2ICsyMyw3IEBACisgCisgZXh0ZXJuIGNoYXIgKnByb2dyYW1fbmFtZTsKKyBleHRlcm4gY29uc3QgY2hhciAqbGRfc3lzcm9vdDsKKytleHRlcm4gY2hhciBsZF9zeXNjb25mZGlyWzQwOTZdOworIGV4dGVybiBjaGFyICpsZF9jYW5vbl9zeXNyb290OworIGV4dGVybiBpbnQgbGRfY2Fub25fc3lzcm9vdF9sZW47CisgZXh0ZXJuIEZJTEUgKnNhdmVkX3NjcmlwdF9oYW5kbGU7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwMy1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTMwMTM4Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDAzLWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSBkYTM5MzlkZTZmYjM2ZGEyYzY0ODRmMTRmMDhhMzdiZTE5NWQ5ZGMzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTowNzozMyArMDAwMAotU3ViamVjdDogW1BBVENIIDAzLzE1XSBjb25maWd1cmU6IHdpZGVuIHRoZSByZWdleHAgZm9yIFNIIGFyY2hpdGVjdHVyZXMKLQotZ3Byb2YgbmVlZHMgdG8ga25vdyBhYm91dCB1Y2xpYmMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBjb25maWd1cmUgICAgICAgfCAyICstCi0gZ3Byb2YvY29uZmlndXJlIHwgNSArKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IDM3NDc2NDU5NjEuLjc4YjUyNDAxMDEgMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTM4NjEsNyArMzg2MSw3IEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4KLSAgIG52cHR4Ki0qLSopCi0gICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyB0YXJnZXQtbGlic3NwIHRhcmdldC1saWJzdGRjKystdjMgdGFyZ2V0LWxpYm9iamMiCi0gICAgIDs7Ci0tICBzaC0qLSopCi0rICBzaCotKi0qIHwgc2g2NC0qLSopCi0gICAgIGNhc2UgIiR7dGFyZ2V0fSIgaW4KLSAgICAgICBzaCotKi1lbGYpCi0gICAgICAgICAgOzsKLWRpZmYgLS1naXQgYS9ncHJvZi9jb25maWd1cmUgYi9ncHJvZi9jb25maWd1cmUKLWluZGV4IGY4NGVmYWJhMjAuLmFiMzJiYWIyYjYgMTAwNzU1Ci0tLS0gYS9ncHJvZi9jb25maWd1cmUKLSsrKyBiL2dwcm9mL2NvbmZpZ3VyZQotQEAgLTYxNjIsNiArNjE2MiwxMSBAQCBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCi0gICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAotICAgOzsKLSAKLStsaW51eC11Y2xpYmMqKQotKyAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLSsgIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPWBlY2hvIC9saWIvbGlidUNsaWJjLSouc29gCi0rICA7OwotKwotIG5ldGJzZCopCi0gICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPiAvZGV2L251bGw7IHRoZW4KLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYlteL10rKFwuc29cLlswLTldK1wuWzAtOV0rfF9waWNcLmEpJCcKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA0LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOGUzNTIyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDQtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIGZjMWZmODYwZmQ4OGZhMmQwNTg0YmQxOTE4MWM4ODBhNzYzMzFhOGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjA5OjU4ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDQvMTVdIFBvaW50IHNjcmlwdHMgbG9jYXRpb24gdG8gbGliZGlyCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGViaWFuIHBhdGNoXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGQvTWFrZWZpbGUuYW0gfCAyICstCi0gbGQvTWFrZWZpbGUuaW4gfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9sZC9NYWtlZmlsZS5hbSBiL2xkL01ha2VmaWxlLmFtCi1pbmRleCBjMmM3OThiNGZlLi5kN2ZhZjE5MjcxIDEwMDY0NAotLS0tIGEvbGQvTWFrZWZpbGUuYW0KLSsrKyBiL2xkL01ha2VmaWxlLmFtCi1AQCAtNTcsNyArNTcsNyBAQCBlbmRpZgotICMgV2UgcHV0IHRoZSBzY3JpcHRzIGluIHRoZSBkaXJlY3RvcnkgJChzY3JpcHRkaXIpL2xkc2NyaXB0cy4KLSAjIFdlIGNhbid0IHB1dCB0aGUgc2NyaXB0cyBpbiAkKGRhdGFkaXIpIGJlY2F1c2UgdGhlIFNFQVJDSF9ESVIKLSAjIGRpcmVjdGl2ZXMgbmVlZCB0byBiZSBkaWZmZXJlbnQgZm9yIG5hdGl2ZSBhbmQgY3Jvc3MgbGlua2Vycy4KLS1zY3JpcHRkaXIgPSAkKHRvb2xkaXIpL2xpYgotK3NjcmlwdGRpciA9ICQobGliZGlyKQotIAotIEVNVUwgPSBARU1VTEAKLSBFTVVMQVRJT05fT0ZJTEVTID0gQEVNVUxBVElPTl9PRklMRVNACi1kaWZmIC0tZ2l0IGEvbGQvTWFrZWZpbGUuaW4gYi9sZC9NYWtlZmlsZS5pbgotaW5kZXggZmM2ODdmYzUxNi4uOGIxNGY1MjM2YyAxMDA2NDQKLS0tLSBhL2xkL01ha2VmaWxlLmluCi0rKysgYi9sZC9NYWtlZmlsZS5pbgotQEAgLTU2Myw3ICs1NjMsNyBAQCBBTV9DRkxBR1MgPSAkKFdBUk5fQ0ZMQUdTKSAkKEVMRl9DTEZBR1MpCi0gIyBXZSBwdXQgdGhlIHNjcmlwdHMgaW4gdGhlIGRpcmVjdG9yeSAkKHNjcmlwdGRpcikvbGRzY3JpcHRzLgotICMgV2UgY2FuJ3QgcHV0IHRoZSBzY3JpcHRzIGluICQoZGF0YWRpcikgYmVjYXVzZSB0aGUgU0VBUkNIX0RJUgotICMgZGlyZWN0aXZlcyBuZWVkIHRvIGJlIGRpZmZlcmVudCBmb3IgbmF0aXZlIGFuZCBjcm9zcyBsaW5rZXJzLgotLXNjcmlwdGRpciA9ICQodG9vbGRpcikvbGliCi0rc2NyaXB0ZGlyID0gJChsaWJkaXIpCi0gQkFTRURJUiA9ICQoc3JjZGlyKS8uLgotIEJGRERJUiA9ICQoQkFTRURJUikvYmZkCi0gSU5DRElSID0gJChCQVNFRElSKS9pbmNsdWRlCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA0LWNvbmZpZ3VyZS13aWRlbi10aGUtcmVnZXhwLWZvci1TSC1hcmNoaXRlY3R1cmVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNC1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMTBhMTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNC1jb25maWd1cmUtd2lkZW4tdGhlLXJlZ2V4cC1mb3ItU0gtYXJjaGl0ZWN0dXJlcy5wYXRjaApAQCAtMCwwICsxLDQxIEBACitGcm9tIGY3YWQ4YTQ0YzEwZjAxZTAzNjgwZjA5M2ZkN2FmNzFjOWY1ZTg2MDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjA3OjMzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogd2lkZW4gdGhlIHJlZ2V4cCBmb3IgU0ggYXJjaGl0ZWN0dXJlcworCitncHJvZiBuZWVkcyB0byBrbm93IGFib3V0IHVjbGliYworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZSAgICB8IDIgKy0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IDkxZGM0MmY2YzcuLjdjMWI3NDdlN2MgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTM5MTUsNyArMzkxNSw3IEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4KKyAgIG52cHR4Ki0qLSopCisgICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyB0YXJnZXQtbGlic3NwIHRhcmdldC1saWJzdGRjKystdjMgdGFyZ2V0LWxpYm9iamMiCisgICAgIDs7CistICBzaC0qLSopCisrICBzaCotKi0qIHwgc2g2NC0qLSopCisgICAgIGNhc2UgIiR7dGFyZ2V0fSIgaW4KKyAgICAgICBzaCotKi1lbGYpCisgICAgICAgICAgOzsKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDRiZDg2OWE2M2EuLjcxODdiMzRkZmMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTExNTksNyArMTE1OSw3IEBAIGNhc2UgIiR7dGFyZ2V0fSIgaW4KKyAgIG52cHR4Ki0qLSopCisgICAgIG5vY29uZmlnZGlycz0iJG5vY29uZmlnZGlycyB0YXJnZXQtbGlic3NwIHRhcmdldC1saWJzdGRjKystdjMgdGFyZ2V0LWxpYm9iamMiCisgICAgIDs7CistICBzaC0qLSopCisrICBzaCotKi0qIHwgc2g2NC0qLSopCisgICAgIGNhc2UgIiR7dGFyZ2V0fSIgaW4KKyAgICAgICBzaCotKi1lbGYpCisgICAgICAgICAgOzsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWJhZDUzMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LU9ubHktZ2VuZXJhdGUtYW4tUlBBVEgtZW50cnktaWYtTERfUlVOX1BBVEgtaXMtbm90LWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1Gcm9tIDY2ODYxYmZmMzg5NDM0ZTM0NTRjNzY1MGVlMjlmYWRlN2ExY2M1ZWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyIE1hciAyMDE1IDAxOjI3OjE3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMTVdIE9ubHkgZ2VuZXJhdGUgYW4gUlBBVEggZW50cnkgaWYgTERfUlVOX1BBVEggaXMgbm90Ci0gZW1wdHkKLQotZm9yIGNhc2VzIHdoZXJlIC1ycGF0aCBpc24ndCBzcGVjaWZpZWQuIGRlYmlhbiAoIzE1MTAyNCkKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IENocmlzIENoaW1lbGlzIDxjaHJpc0BkZWJpYW4ub3JnPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxkL2VtdWx0ZW1wbC9lbGYzMi5lbSB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbSBiL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbQotaW5kZXggZjRmN2FkNmI0ZS4uY2ZkNzg3ZmYyOCAxMDA2NDQKLS0tLSBhL2xkL2VtdWx0ZW1wbC9lbGYzMi5lbQotKysrIGIvbGQvZW11bHRlbXBsL2VsZjMyLmVtCi1AQCAtMTQ3MSw2ICsxNDcxLDggQEAgZnJhZ21lbnQgPDxFT0YKLSAJICAgICAgJiYgY29tbWFuZF9saW5lLnJwYXRoID09IE5VTEwpCi0gCSAgICB7Ci0gCSAgICAgIHBhdGggPSAoY29uc3QgY2hhciAqKSBnZXRlbnYgKCJMRF9SVU5fUEFUSCIpOwotKwkgICAgICBpZiAoKHBhdGgpICYmIChzdHJsZW4gKHBhdGgpID09IDApKQotKwkJICBwYXRoID0gTlVMTDsKLSAJICAgICAgaWYgKHBhdGgKLSAJCSAgJiYgZ2xkJHtFTVVMQVRJT05fTkFNRX1fc2VhcmNoX25lZWRlZCAocGF0aCwgJm4sIGZvcmNlKSkKLSAJCWJyZWFrOwotQEAgLTE3NDYsNiArMTc0OCw4IEBAIGdsZCR7RU1VTEFUSU9OX05BTUV9X2JlZm9yZV9hbGxvY2F0aW9uICh2b2lkKQotICAgcnBhdGggPSBjb21tYW5kX2xpbmUucnBhdGg7Ci0gICBpZiAocnBhdGggPT0gTlVMTCkKLSAgICAgcnBhdGggPSAoY29uc3QgY2hhciAqKSBnZXRlbnYgKCJMRF9SVU5fUEFUSCIpOwotKyAgaWYgKChycGF0aCkgJiYgKHN0cmxlbiAocnBhdGgpID09IDApKQotKyAgICBycGF0aCA9IE5VTEw7Ci0gCi0gICBmb3IgKGFiZmQgPSBsaW5rX2luZm8uaW5wdXRfYmZkczsgYWJmZDsgYWJmZCA9IGFiZmQtPmxpbmsubmV4dCkKLSAgICAgaWYgKGJmZF9nZXRfZmxhdm91ciAoYWJmZCkgPT0gYmZkX3RhcmdldF9lbGZfZmxhdm91cikKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDUtUG9pbnQtc2NyaXB0cy1sb2NhdGlvbi10by1saWJkaXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiYTBiYTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA1LVBvaW50LXNjcmlwdHMtbG9jYXRpb24tdG8tbGliZGlyLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gMDhiMDg4YjdkZDNkOTcwN2VkNjY5NDhhNzI3MWZmYjQzOGVlZGRmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6MDk6NTggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gUG9pbnQgc2NyaXB0cyBsb2NhdGlvbiB0byBsaWJkaXIKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkZWJpYW4gcGF0Y2hdCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsZC9NYWtlZmlsZS5hbSB8IDIgKy0KKyBsZC9NYWtlZmlsZS5pbiB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xkL01ha2VmaWxlLmFtIGIvbGQvTWFrZWZpbGUuYW0KK2luZGV4IDFjMTMyZDNjZTQuLjhkODJjZjJlMTYgMTAwNjQ0CistLS0gYS9sZC9NYWtlZmlsZS5hbQorKysrIGIvbGQvTWFrZWZpbGUuYW0KK0BAIC02NCw3ICs2NCw3IEBAIGVuZGlmCisgIyBXZSBwdXQgdGhlIHNjcmlwdHMgaW4gdGhlIGRpcmVjdG9yeSAkKHNjcmlwdGRpcikvbGRzY3JpcHRzLgorICMgV2UgY2FuJ3QgcHV0IHRoZSBzY3JpcHRzIGluICQoZGF0YWRpcikgYmVjYXVzZSB0aGUgU0VBUkNIX0RJUgorICMgZGlyZWN0aXZlcyBuZWVkIHRvIGJlIGRpZmZlcmVudCBmb3IgbmF0aXZlIGFuZCBjcm9zcyBsaW5rZXJzLgorLXNjcmlwdGRpciA9ICQodG9vbGRpcikvbGliCisrc2NyaXB0ZGlyID0gJChsaWJkaXIpCisgCisgRU1VTCA9IEBFTVVMQAorIEVNVUxBVElPTl9PRklMRVMgPSBARU1VTEFUSU9OX09GSUxFU0AKK2RpZmYgLS1naXQgYS9sZC9NYWtlZmlsZS5pbiBiL2xkL01ha2VmaWxlLmluCitpbmRleCBlNDUzYmMxYjMzLi4yZGNkNzJmODA5IDEwMDY0NAorLS0tIGEvbGQvTWFrZWZpbGUuaW4KKysrKyBiL2xkL01ha2VmaWxlLmluCitAQCAtNTczLDcgKzU3Myw3IEBAIEFNX0NGTEFHUyA9ICQoV0FSTl9DRkxBR1MpICQoRUxGX0NMRkFHUykKKyAjIFdlIHB1dCB0aGUgc2NyaXB0cyBpbiB0aGUgZGlyZWN0b3J5ICQoc2NyaXB0ZGlyKS9sZHNjcmlwdHMuCisgIyBXZSBjYW4ndCBwdXQgdGhlIHNjcmlwdHMgaW4gJChkYXRhZGlyKSBiZWNhdXNlIHRoZSBTRUFSQ0hfRElSCisgIyBkaXJlY3RpdmVzIG5lZWQgdG8gYmUgZGlmZmVyZW50IGZvciBuYXRpdmUgYW5kIGNyb3NzIGxpbmtlcnMuCistc2NyaXB0ZGlyID0gJCh0b29sZGlyKS9saWIKKytzY3JpcHRkaXIgPSAkKGxpYmRpcikKKyBCQVNFRElSID0gJChzcmNkaXIpLy4uCisgQkZERElSID0gJChCQVNFRElSKS9iZmQKKyBJTkNESVIgPSAkKEJBU0VESVIpL2luY2x1ZGUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDYtT25seS1nZW5lcmF0ZS1hbi1SUEFUSC1lbnRyeS1pZi1MRF9SVU5fUEFUSC1pcy1ub3QtZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTIwNzI5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Pbmx5LWdlbmVyYXRlLWFuLVJQQVRILWVudHJ5LWlmLUxEX1JVTl9QQVRILWlzLW5vdC1lLnBhdGNoCkBAIC0wLDAgKzEsMzcgQEAKK0Zyb20gMTM3OTE2MzZhYmY1MThmMGRiMjA5ZGM1MWMyOTQ0NWQ4MDQyMWYyZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6Mjc6MTcgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gT25seSBnZW5lcmF0ZSBhbiBSUEFUSCBlbnRyeSBpZiBMRF9SVU5fUEFUSCBpcyBub3QgZW1wdHkKKworZm9yIGNhc2VzIHdoZXJlIC1ycGF0aCBpc24ndCBzcGVjaWZpZWQuIGRlYmlhbiAoIzE1MTAyNCkKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENocmlzIENoaW1lbGlzIDxjaHJpc0BkZWJpYW4ub3JnPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxkL2xkZWxmLmMgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9sZC9sZGVsZi5jIGIvbGQvbGRlbGYuYworaW5kZXggYTA5NWQ2YWFjNS4uYTI0NTVhODc5MyAxMDA2NDQKKy0tLSBhL2xkL2xkZWxmLmMKKysrKyBiL2xkL2xkZWxmLmMKK0BAIC0xMjI5LDYgKzEyMjksOCBAQCBsZGVsZl9hZnRlcl9vcGVuIChpbnQgdXNlX2xpYnBhdGgsIGludCBuYXRpdmUsIGludCBpc19saW51eCwgaW50IGlzX2ZyZWVic2QsCisgCQkgICYmIGNvbW1hbmRfbGluZS5ycGF0aCA9PSBOVUxMKQorIAkJeworIAkJICBwYXRoID0gKGNvbnN0IGNoYXIgKikgZ2V0ZW52ICgiTERfUlVOX1BBVEgiKTsKKysJCSAgaWYgKChwYXRoKSAmJiAoc3RybGVuIChwYXRoKSA9PSAwKSkKKysJCSAgICAgIHBhdGggPSBOVUxMOworIAkJICBpZiAocGF0aAorIAkJICAgICAgJiYgbGRlbGZfc2VhcmNoX25lZWRlZCAocGF0aCwgJm4sIGZvcmNlLAorIAkJCQkJICAgICAgaXNfbGludXgsIGVsZnNpemUpKQorQEAgLTE1NzMsNiArMTU3NSw4IEBAIGxkZWxmX2JlZm9yZV9hbGxvY2F0aW9uIChjaGFyICphdWRpdCwgY2hhciAqZGVwYXVkaXQsCisgICBycGF0aCA9IGNvbW1hbmRfbGluZS5ycGF0aDsKKyAgIGlmIChycGF0aCA9PSBOVUxMKQorICAgICBycGF0aCA9IChjb25zdCBjaGFyICopIGdldGVudiAoIkxEX1JVTl9QQVRIIik7CisrICBpZiAoKHJwYXRoKSAmJiAoc3RybGVuIChycGF0aCkgPT0gMCkpCisrICAgIHJwYXRoID0gTlVMTDsKKyAKKyAgIGZvciAoYWJmZCA9IGxpbmtfaW5mby5pbnB1dF9iZmRzOyBhYmZkOyBhYmZkID0gYWJmZC0+bGluay5uZXh0KQorICAgICBpZiAoYmZkX2dldF9mbGF2b3VyIChhYmZkKSA9PSBiZmRfdGFyZ2V0X2VsZl9mbGF2b3VyKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNi1Vc2UtbGlidG9vbC0yLjQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjBjNGQyNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA2LVVzZS1saWJ0b29sLTIuNC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxMjUyICswLDAgQEAKLUZyb20gNDE4NTI3YTI5NzFkNGU3N2E4NzA4NTQwMDM5NzA5MGQ4OWZjNWM5NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTdW4sIDE0IEZlYiAyMDE2IDE3OjA0OjA3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMTVdIFVzZSBsaWJ0b29sIDIuNAotCi1nZXQgbGlidG9vbCBzeXNyb290IHN1cHBvcnQKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBiZmQvY29uZmlndXJlICAgICAgICB8IDEzMjIgKysrKysrKysrKysrKystLS0tLQotIGJmZC9jb25maWd1cmUuYWMgICAgIHwgICAgMiArLQotIGJpbnV0aWxzL2NvbmZpZ3VyZSAgIHwgMTMyMCArKysrKysrKysrKysrKy0tLS0tCi0gZ2FzL2NvbmZpZ3VyZSAgICAgICAgfCAxMzIwICsrKysrKysrKysrKysrLS0tLS0KLSBncHJvZi9jb25maWd1cmUgICAgICB8IDEzMjEgKysrKysrKysrKysrKystLS0tLQotIGxkL2NvbmZpZ3VyZSAgICAgICAgIHwgMTY5NSArKysrKysrKysrKysrKysrKystLS0tLS0KLSBsaWJ0b29sLm00ICAgICAgICAgICB8IDEwODAgKysrKysrKysrKystLS0tLQotIGx0bWFpbi5zaCAgICAgICAgICAgIHwgMjkyNSArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSBsdG9wdGlvbnMubTQgICAgICAgICB8ICAgIDIgKy0KLSBsdHZlcnNpb24ubTQgICAgICAgICB8ICAgMTIgKy0KLSBsdH5vYnNvbGV0ZS5tNCAgICAgICB8ICAgIDIgKy0KLSBvcGNvZGVzL2NvbmZpZ3VyZSAgICB8IDEzMjIgKysrKysrKysrKysrKystLS0tLQotIG9wY29kZXMvY29uZmlndXJlLmFjIHwgICAgMiArLQotIHpsaWIvY29uZmlndXJlICAgICAgIHwgMTMyMCArKysrKysrKysrKysrKy0tLS0tCi0gMTQgZmlsZXMgY2hhbmdlZCwgOTk0MCBpbnNlcnRpb25zKCspLCAzNzA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZ3VyZSBiL2JmZC9jb25maWd1cmUKLWluZGV4IDE3OTYwNjg0ZjguLjkyNWZiNDAxZjIgMTAwNzU1Ci0tLS0gYS9iZmQvY29uZmlndXJlCi0rKysgYi9iZmQvY29uZmlndXJlCi1AQCAtNzA0LDYgKzcwNCw5IEBAIE9UT09MCi0gTElQTwotIE5NRURJVAotIERTWU1VVElMCi0rTUFOSUZFU1RfVE9PTAotK2FjX2N0X0FSCi0rRExMVE9PTAotIE9CSkRVTVAKLSBMTl9TCi0gTk0KLUBAIC04MjIsNiArODI1LDcgQEAgZW5hYmxlX3N0YXRpYwotIHdpdGhfcGljCi0gZW5hYmxlX2Zhc3RfaW5zdGFsbAotIHdpdGhfZ251X2xkCi0rd2l0aF9saWJ0b29sX3N5c3Jvb3QKLSBlbmFibGVfbGlidG9vbF9sb2NrCi0gZW5hYmxlX3BsdWdpbnMKLSBlbmFibGVfbGFyZ2VmaWxlCi1AQCAtMTUwNCw2ICsxNTA4LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCi0gICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCi0rICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgotICAgLS13aXRoLW1tYXAgICAgICAgICAgICAgdHJ5IHVzaW5nIG1tYXAgZm9yIEJGRCBpbnB1dCBmaWxlcyBpZiBhdmFpbGFibGUKLSAgIC0td2l0aC1zZXBhcmF0ZS1kZWJ1Zy1kaXI9RElSCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBMb29rIGZvciBnbG9iYWwgc2VwYXJhdGUgZGVidWcgaW5mbyBpbiBESVIKLUBAIC01NjkzLDggKzU2OTksOCBAQCBlc2FjCi0gCi0gCi0gCi0tbWFjcm9fdmVyc2lvbj0nMi4yLjdhJwotLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCi0rbWFjcm9fdmVyc2lvbj0nMi40JwotK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCi0gCi0gCi0gCi1AQCAtNTczNCw3ICs1NzQwLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQotICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgotLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0raWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0gICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLSAgIEVDSE89J3ByaW50IC1yIC0tJwotIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNjQyMCw4ICs2NDI2LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKLSAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwotIHhzaV9zaGVsbD1ubwotICggX2x0X2R1bW15PSJhL2IvYyIKLS0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0tICAgICAgPSBjLGEvYiwsIFwKLSsgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0rICAgICAgPSBjLGEvYixiL2MsIFwKLSAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAotICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTY0NzAsNiArNjQ3Niw4MCBAQCBlc2FjCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKi0qLWN5Z3dpbiogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKLSsgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjQ4Niw2ICs2NTY2LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCi0gZXNhYwotIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSBjYXNlICRob3N0X29zIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCi0rICAgIGZpCi0rICAgIDs7Ci0gICBkYXJ3aW4qKQotICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC02NjU0LDcgKzY3MzksOCBAQCBtaW5ndyogfCBwdzMyKikKLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCi0gICBlbHNlCi0tICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JwotKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCi0rICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICAgZmkKLSAgIDs7Ci1AQCAtNjgwOCw2ICs2ODk0LDIxIEBAIGVzYWMKLSBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQotICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNjgyMSwxMSArNjkyMiwxNjQgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKLSskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCi0rICAgIERMTFRPT0w9ImZhbHNlIgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAotKyAgZmkKLStlbHNlCi0rICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQotK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKLSsKLStjYXNlICRob3N0X29zIGluCi0rY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAotKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAotKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCi0rICAqLS1pZGVudGlmeS1zdHJpY3QqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKLSsgICAgOzsKLSsgICopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjawotKyAgICA7OwotKyAgZXNhYwotKyAgOzsKLSsqKQotKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCi0rICA7OwotK2VzYWMKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotKyAgZG8KLSsgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjg0MSw3ICs3MDk1LDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgotKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjg2MSwxMSArNzExNSwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0gCi0rICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKLSsgIGRvbmUKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgotK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KLSAgIGFjX2N0X0FSPSRBUgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotK2RvCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02ODgxLDcgKzcxMzksNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNjkwMCw2ICs3MTU4LDEwIEBAIGVsc2UKLSAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0rCi0rICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCi0rZG9uZQotKwotICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCi0gICAgIEFSPSJmYWxzZSIKLSAgIGVsc2UKLUBAIC02OTExLDE2ICs3MTczLDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OwotIGVzYWMKLSAgICAgQVI9JGFjX2N0X0FSCi0gICBmaQotLWVsc2UKLS0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKLSBmaQotIAotLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLS10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotKzogJHtBUj1hcn0KLSs6ICR7QVJfRkxBR1M9Y3J1fQotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubwotKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSAKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKLSsgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKLSsgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgotKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgotKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKLSsJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCi0rICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQotIAotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0gCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9Ci0gCi0raWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQotK2Vsc2UKLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQotK2ZpCi0gCi0gCi0gCi1AQCAtNzI2Miw4ICs3NTgwLDggQEAgZXNhYwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gCi0gIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotIAotICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotIG9wdF9jcj0KLUBAIC03Mjk5LDYgKzc2MTcsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0gICBlbHNlCi0gICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0gICBmaQotKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgotIAotICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gICBwaXBlX3dvcmtzPW5vCi1AQCAtNzM0MCw2ICs3NjU5LDE4IEBAIF9MVF9FT0YKLSAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgewotICNlbmRpZgotQEAgLTczNTEsNyArNzY4Miw3IEBAIF9MVF9FT0YKLSAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKLSAKLSAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi0tY29uc3Qgc3RydWN0IHsKLStMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgICAgICAgKmFkZHJlc3M7Ci0gfQotQEAgLTczNzcsOCArNzcwOCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gX0xUX0VPRgotIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCi0gCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0tCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLS0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSsJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUwotKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCi0gCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgotIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTczODgsOCArNzcxOSw4IEBAIF9MVF9FT0YKLSAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQotIAlmaQotQEAgLTc0MjYsNiArNzc1NywxNiBAQCBlbHNlCi0gJGFzX2VjaG8gIm9rIiA+JjY7IH0KLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStmaQotKwotKwotKwotKwotIAotIAotIAotQEAgLTc0NDIsNiArNzc4Myw0NSBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7Ci0rZWxzZQotKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KLStmaQotKwotKwotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1Ci0rJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKLSsgICA7OwotK2VzYWMKLSsKLSsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKLSskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQotIAotIAotIAotQEAgLTc2NTMsNiArODAzMywxMjMgQEAgZXNhYwotIAotIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIAotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgotKyAgICBNQU5JRkVTVF9UT09MPSI6IgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAotKyAgZmkKLStlbHNlCi0rICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKLSsgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCi0rICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKLSsgIGZpCi0rICBybSAtZiBjb25mdGVzdCoKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9Ci0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rCi0rCi0rCi0rCi0rCi0gCi0gICBjYXNlICRob3N0X29zIGluCi0gICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtODIxNiw2ICs4NzEzLDggQEAgX0xUX0VPRgotICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQotICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKLSAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1Ci0rICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKLSsgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgotIGludCBtYWluKCkgeyByZXR1cm4gMDt9Ci0gX0xUX0VPRgotQEAgLTgzODAsNyArODg3OSw4IEBAIGZpCi0gTElCVE9PTF9ERVBTPSIkbHRtYWluIgotIAotICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCi0tTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi0rTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJwotK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKLSAKLSAKLSAKLUBAIC04NDY5LDcgKzg5NjksNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTg3NjcsOCArOTI2Nyw2IEBAIGZpCi0gbHRfcHJvZ19jb21waWxlcl9waWM9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODkzNCw2ICs5NDMyLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKLSAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJwotKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKLSsJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtODk5Niw3ICs5NTAwLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCi0gICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTkwNTMsMTMgKzk1NTcsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgotICAgICA7OwotIGVzYWMKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLS0KLS0KLS0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYwotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtOTEyMCw2ICs5NjI4LDExIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtOTQ3MCw3ICs5OTgzLDggQEAgX0xUX0VPRgotICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCi0gICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLS0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtOTU2OSwxMiArMTAwODMsMTIgQEAgX0xUX0VPRgotIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCi0tCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0rCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KLSAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0tCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0gCSAgZmkKLSAJICA7OwotIAllc2FjCi1AQCAtOTU4OCw4ICsxMDEwMiw4IEBAIF9MVF9FT0YKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGZpCi0gICAgICAgOzsKLSAKLUBAIC05NjA3LDggKzEwMTIxLDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTk2NTQsOCArMTAxNjgsOCBAQCBfTFRfRU9GCi0gCi0gICAgICopCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTc4NSw3ICsxMDI5OSwxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05Nzk4LDIyICsxMDMxOCwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtOTgyNSw3ICsxMDM1MiwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJZWxzZQotIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTgzOCwyMiArMTAzNzEsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC05ODk4LDIwICsxMDQzOCw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0tICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotLSAgICAgIGxpYmV4dD1saWIKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLS0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKLS0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLS0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0tICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLS0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0tICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0tICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotKyAgICAgIGNsKikKLSsJIyBOYXRpdmUgTVNWQwotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCi0rCWZpbGVfbGlzdF9zcGVjPSdAJwotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBlbHNlCi0rCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGZpfgotKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLSsJICBsaW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCi0rCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rCSMgRG9uJ3QgdXNlIHJhbmxpYgotKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCi0rCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgKikKLSsJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkgICAgICA7OwotKwkgIGVzYWN+Ci0rCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICBmaScKLSsJOzsKLSsgICAgICAqKQotKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSsJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLSsJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLSsJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwk7OwotKyAgICAgIGVzYWMKLSAgICAgICA7OwotIAotICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTk5NzIsNyArMTA1NTUsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC05OTgwLDcgKzEwNTYzLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXg5KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGZpCi1AQCAtOTk5Niw3ICsxMDU3OSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4MTAqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0gICAgICAgZmkKLUBAIC0xMDAyMCwxMCArMTA2MDMsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAlpYTY0KikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCSopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC0xMDEwMiwyMyArMTA2ODUsMzYgQEAgZmkKLSAKLSAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKLSAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAotIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLS0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KLSsJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0rCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSsJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS1pbnQgZm9vKHZvaWQpIHt9Ci0raW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLS0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLS0KLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcwotK2Vsc2UKLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9Ci0rCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJZmkKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTEwMjAzLDcgKzEwNzk5LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtMTAyMjIsOSArMTA4MTgsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJd2xhcmM9JyR7d2x9JwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gICAgICAgZWxzZQotIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KLSAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtMTA4MDAsOCArMTEzOTYsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTA4MzQsMTMgKzExNDMxLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCi0rICAgICAgOzsKLSsgICAgY3lnd2luKikKLSsgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCi0rICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCi0rICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgotKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC0xMDkzMiw3ICsxMTU4Nyw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0xMTcyOCw3ICsxMjM4Myw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDExNzMxICJjb25maWd1cmUiCi0rI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMTc3MiwxMCArMTI0MjcsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMTgzNCw3ICsxMjQ4OSw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDExODM3ICJjb25maWd1cmUiCi0rI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMTg3OCwxMCArMTI1MzMsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xNDUyNSw3ICsxNTE4MCw3IEBAIFNIQVJFRF9MREZMQUdTPQotIGlmIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9ICJ5ZXMiOyB0aGVuCi0gICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAotICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCi0tICAgIFNIQVJFRF9MSUJBREQ9Ii1MYHB3ZGAvLi4vbGliaWJlcnR5L3BpYyAtbGliZXJ0eSIKLSsgICAgU0hBUkVEX0xJQkFERD0iYHB3ZGAvLi4vbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYSIKLSAgIGZpCi0gCi0gIyBNb3JlIGhhY2tzIHRvIGJ1aWxkIERMTHMgb24gV2luZG93cy4KLUBAIC0xNzE0MiwxMyArMTc3OTcsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSthcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNzE2MywxNCArMTc4MjUsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTcyMDMsMTIgKzE3ODY4LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCi0gaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE3MjYzLDggKzE3OTI4LDEzIEBAIHJlbG9hZF9mbGFnIFwKLSBPQkpEVU1QIFwKLSBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCi0gZmlsZV9tYWdpY19jbWQgXAotK2ZpbGVfbWFnaWNfZ2xvYiBcCi0rd2FudF9ub2Nhc2VnbG9iIFwKLStETExUT09MIFwKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCi0gQVIgXAotIEFSX0ZMQUdTIFwKLSthcmNoaXZlcl9saXN0X3NwZWMgXAotIFNUUklQIFwKLSBSQU5MSUIgXAotIENDIFwKLUBAIC0xNzI3NCwxMiArMTc5NDQsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKLStubV9maWxlX2xpc3Rfc3BlYyBcCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAotLWx0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKLStsdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAotIG5lZWRfbG9ja3MgXAotK01BTklGRVNUX1RPT0wgXAotIERTWU1VVElMIFwKLSBOTUVESVQgXAotIExJUE8gXAotQEAgLTE3Mjk1LDcgKzE3OTY3LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAotIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAotLWZpeF9zcmNmaWxlX3BhdGggXAotIGV4Y2x1ZGVfZXhwc3ltcyBcCi0gaW5jbHVkZV9leHBzeW1zIFwKLSBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTczMzEsNiArMTgwMDIsNyBAQCBtb2R1bGVfY21kcyBcCi0gbW9kdWxlX2V4cHN5bV9jbWRzIFwKLSBleHBvcnRfc3ltYm9sc19jbWRzIFwKLSBwcmVsaW5rX2NtZHMgXAotK3Bvc3RsaW5rX2NtZHMgXAotIHBvc3RpbnN0YWxsX2NtZHMgXAotIHBvc3R1bmluc3RhbGxfY21kcyBcCi0gZmluaXNoX2NtZHMgXAotQEAgLTE4MTE5LDcgKzE4NzkxLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAotICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgotICMKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xODIyMiwxOSArMTg4OTUsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCi0gIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgotIE5MMlNQPSRsdF9sdF9OTDJTUAotIAotKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0rCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0rCi0gIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KLSBPQkpEVU1QPSRsdF9PQkpEVU1QCi0gCi0gIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKLSAKLS0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgotKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKLSAKLSsjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCi0rCi0rIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKLSsKLSsjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgotK0RMTFRPT0w9JGx0X0RMTFRPT0wKLSsKLSsjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rCi0gIyBUaGUgYXJjaGl2ZXIuCi0gQVI9JGx0X0FSCi0rCi0rIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KLSBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKLSAKLSsjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KLSthcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYwotKwotICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCi0gU1RSSVA9JGx0X1NUUklQCi0gCi1AQCAtMTgyNjQsNiArMTg5NjAsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKLSAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgotIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAotIAotKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgotK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYwotKwotKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCi0rbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAotKwotICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgotIG9iamRpcj0kb2JqZGlyCi0gCi1AQCAtMTgyNzMsNiArMTg5NzUsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAotICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/Ci0gbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwotIAotKyMgTWFuaWZlc3QgdG9vbC4KLStNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCi0rCi0gIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgotIERTWU1VVElMPSRsdF9EU1lNVVRJTAotIAotQEAgLTE4Mzg3LDEyICsxOTA5MiwxMiBAQCB3aXRoX2djYz0kR0NDCi0gIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgotIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKLSAKLS0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0td2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLS0KLSAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KLSBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKLSAKLSsjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0rd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLSsKLSAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCi0gbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKLSAKLUBAIC0xODQ3OSw5ICsxOTE4NCw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKLSAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KLSBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCi0gCi0tIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgotLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKLS0KLSAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwotIAotQEAgLTE4NDk3LDYgKzE5MTk5LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKLSAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgotIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCi0gCi0rIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgotK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKLSsKLSAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KLSBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKLSAKLUBAIC0xODUyOSwyMTAgKzE5MjM0LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKLSAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KLSAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCi0gICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIGNhc2UgJHhzaV9zaGVsbCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0tIyBjYWxsOgotLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0tIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0tIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0tIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0tIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0tICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Ci0tfQotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQotLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0tICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCi0tfQotLQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICBjYXNlICR7Mn0gaW4KLS0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLS0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotLSAgZXNhYwotLX0KLS0KLS0jIHNlZCBzY3JpcHRzOgotLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCi0tbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJwotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCi0tICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotLX0KLS0KLS1fTFRfRU9GCi0tZXNhYwotLQotLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMSs9XCQyIgotLX0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMT1cJCQxXCQyIgotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICBlc2FjCi0tCi0tCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0rICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0rICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotKwotKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKLStmdW5jX2Rpcm5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKLStmdW5jX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCi0rZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKLStmdW5jX3N0cmlwbmFtZSAoKVwKLSt7XAotK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKLStcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCi0rZnVuY19zcGxpdF9sb25nX29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCi0rZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCi0rZnVuY19sbzJvICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAotK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKLStmdW5jX3hmb3JtICgpXAotK3tcCi0rICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKLStmdW5jX2FyaXRoICgpXAotK3tcCi0rICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCi0rZnVuY19sZW4gKClcCi0re1wKLSsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotK2ZpCi0rCi0raWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCi0rZnVuY19hcHBlbmQgKClcCi0re1wKLSsgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCi0rZnVuY19hcHBlbmRfcXVvdGVkICgpXAotK3tcCi0rXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKLStcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStlbHNlCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZmkKLSsKLStpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQotK2ZpCi0rCi0rCi0rICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQotICAgY2htb2QgK3ggIiRvZmlsZSIKLSAKLWRpZmYgLS1naXQgYS9iZmQvY29uZmlndXJlLmFjIGIvYmZkL2NvbmZpZ3VyZS5hYwotaW5kZXggZWRhMzhlYTA4Ni4uN2NkZjljODE0NiAxMDA2NDQKLS0tLSBhL2JmZC9jb25maWd1cmUuYWMKLSsrKyBiL2JmZC9jb25maWd1cmUuYWMKLUBAIC0yOTMsNyArMjkzLDcgQEAgY2hhbmdlcXVvdGUoLClkbmwKLSAgIHg9YHNlZCAtbiAtZSAncy9eWyAJXSpQSUNGTEFHWyAJXSo9WyAJXSovL3AnIDwgLi4vbGliaWJlcnR5L01ha2VmaWxlIHwgc2VkIC1uICckcCdgCi0gY2hhbmdlcXVvdGUoWyxdKWRubAotICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCi0tICAgIFNIQVJFRF9MSUJBREQ9Ii1MYHB3ZGAvLi4vbGliaWJlcnR5L3BpYyAtbGliZXJ0eSIKLSsgICAgU0hBUkVEX0xJQkFERD0iYHB3ZGAvLi4vbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYSIKLSAgIGZpCi0gCi0gIyBNb3JlIGhhY2tzIHRvIGJ1aWxkIERMTHMgb24gV2luZG93cy4KLWRpZmYgLS1naXQgYS9iaW51dGlscy9jb25maWd1cmUgYi9iaW51dGlscy9jb25maWd1cmUKLWluZGV4IDM4MTI4ZTE0NmQuLmM3NGY3OTc5OTYgMTAwNzU1Ci0tLS0gYS9iaW51dGlscy9jb25maWd1cmUKLSsrKyBiL2JpbnV0aWxzL2NvbmZpZ3VyZQotQEAgLTY4OSw4ICs2ODksMTEgQEAgT1RPT0wKLSBMSVBPCi0gTk1FRElUCi0gRFNZTVVUSUwKLStNQU5JRkVTVF9UT09MCi0gUkFOTElCCi0rYWNfY3RfQVIKLSBBUgotK0RMTFRPT0wKLSBPQkpEVU1QCi0gTE5fUwotIE5NCi1AQCAtODA3LDYgKzgxMCw3IEBAIGVuYWJsZV9zdGF0aWMKLSB3aXRoX3BpYwotIGVuYWJsZV9mYXN0X2luc3RhbGwKLSB3aXRoX2dudV9sZAotK3dpdGhfbGlidG9vbF9zeXNyb290Ci0gZW5hYmxlX2xpYnRvb2xfbG9jawotIGVuYWJsZV9wbHVnaW5zCi0gZW5hYmxlX2xhcmdlZmlsZQotQEAgLTE0ODMsNiArMTQ4Nyw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQotICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQotKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKLSsgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KLSAgIC0td2l0aC1zeXN0ZW0temxpYiAgICAgIHVzZSBpbnN0YWxsZWQgbGliegotICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIGRlZmF1bHQ9bm8KLSAgIC0td2l0aC1saWJpY29udi1wcmVmaXhbPURJUl0gIHNlYXJjaCBmb3IgbGliaWNvbnYgaW4gRElSL2luY2x1ZGUgYW5kIERJUi9saWIKLUBAIC01NDU3LDggKzU0NjMsOCBAQCBlc2FjCi0gCi0gCi0gCi0tbWFjcm9fdmVyc2lvbj0nMi4yLjdhJwotLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCi0rbWFjcm9fdmVyc2lvbj0nMi40JwotK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCi0gCi0gCi0gCi1AQCAtNTQ5OCw3ICs1NTA0LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQotICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgotLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0raWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCi0gICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLSAgIEVDSE89J3ByaW50IC1yIC0tJwotIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi1AQCAtNjE4NCw4ICs2MTkwLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKLSAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwotIHhzaV9zaGVsbD1ubwotICggX2x0X2R1bW15PSJhL2IvYyIKLS0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0tICAgICAgPSBjLGEvYiwsIFwKLSsgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0rICAgICAgPSBjLGEvYixiL2MsIFwKLSAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAotICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTYyMzQsNiArNjI0MCw4MCBAQCBlc2FjCi0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKi0qLWN5Z3dpbiogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgICAgKi0qLWN5Z3dpbiogKQotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgICAgICA7OwotKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKLSsgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCi0rY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgZXNhYwotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9Ci0gaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjI1MCw2ICs2MzMwLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCi0gZXNhYwotIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLSBjYXNlICRob3N0X29zIGluCi0rICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgotKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCi0rICAgIGZpCi0rICAgIDs7Ci0gICBkYXJ3aW4qKQotICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKLUBAIC02NDE4LDcgKzY1MDMsOCBAQCBtaW5ndyogfCBwdzMyKikKLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCi0gICBlbHNlCi0tICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JwotKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCi0rICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKLSAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJwotICAgZmkKLSAgIDs7Ci1AQCAtNjU3Miw2ICs2NjU4LDIxIEBAIGVzYWMKLSBmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQotICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQotKwotK2ZpbGVfbWFnaWNfZ2xvYj0KLSt3YW50X25vY2FzZWdsb2I9bm8KLStpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgotKyAgY2FzZSAkaG9zdF9vcyBpbgotKyAgbWluZ3cqIHwgcHczMiopCi0rICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KLSsgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCi0rICAgIGVsc2UKLSsgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAotKyAgICBmaQotKyAgICA7OwotKyAgZXNhYwotK2ZpCi0rCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi1AQCAtNjU4Nyw5ICs2Njg4LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCi0raWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQotKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgotKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KLSsgICAgRExMVE9PTD0iZmFsc2UiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCi0rICBmaQotK2Vsc2UKLSsgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Ci0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotKwotKwotKwotKwotKwotKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rICBkbwotKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02NjA1LDcgKzY4NTksNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCi0rICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02NjI1LDExICs2ODc5LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSAKLSsgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhawotKyAgZG9uZQotIGZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCi0raWYgdGVzdCAteiAiJEFSIjsgdGhlbgotICAgYWNfY3RfQVI9JEFSCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rZG8KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTY2NDUsNyArNjkwMyw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02NjY0LDYgKzY5MjIsMTAgQEAgZWxzZQotICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSsKLSsgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKLStkb25lCi0rCi0gICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KLSAgICAgQVI9ImZhbHNlIgotICAgZWxzZQotQEAgLTY2NzUsMTIgKzY5MzcsMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0gZXNhYwotICAgICBBUj0kYWNfY3RfQVIKLSAgIGZpCi0tZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotIGZpCi0gCi0tdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0gCi0gCi0gCi1AQCAtNjY5Miw2ICs2OTUyLDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0gCi0gCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLStpbnQKLSttYWluICgpCi0rewotKwotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JwotKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0rCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KLSsKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0gICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCi1AQCAtNzAyNiw4ICs3MzQ0LDggQEAgZXNhYwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gCi0gIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotIAotICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotIG9wdF9jcj0KLUBAIC03MDYzLDYgKzczODEsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0gICBlbHNlCi0gICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0gICBmaQotKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgotIAotICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gICBwaXBlX3dvcmtzPW5vCi1AQCAtNzEwNCw2ICs3NDIzLDE4IEBAIF9MVF9FT0YKLSAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2VsaWYgZGVmaW5lZChfX29zZl9fKQotKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLwotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCi0rI2Vsc2UKLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgewotICNlbmRpZgotQEAgLTcxMTUsNyArNzQ0Niw3IEBAIF9MVF9FT0YKLSAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKLSAKLSAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi0tY29uc3Qgc3RydWN0IHsKLStMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgewotICAgY29uc3QgY2hhciAqbmFtZTsKLSAgIHZvaWQgICAgICAgKmFkZHJlc3M7Ci0gfQotQEAgLTcxNDEsOCArNzQ3Miw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gX0xUX0VPRgotIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCi0gCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0tCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLS0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSsJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUwotKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCi0gCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgotIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQotQEAgLTcxNTIsOCArNzQ4Myw4IEBAIF9MVF9FT0YKLSAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgotIAkgICAgcGlwZV93b3Jrcz15ZXMKLSAJICBmaQotLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCi0tCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0rCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKLSsJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKLSAJZWxzZQotIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQotIAlmaQotQEAgLTcxOTAsNiArNzUyMSwyMSBAQCBlbHNlCi0gJGFzX2VjaG8gIm9rIiA+JjY7IH0KLSBmaQotIAotKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgotK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCi0rICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKLStmaQotKwotKwotKwotKwotKwotKwotKwotKwotKwotIAotIAotIAotQEAgLTcyMDYsNiArNzU1Miw0MCBAQCBmaQotIAotIAotIAotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9Ci0rCi0rIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7Ci0rZWxzZQotKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KLStmaQotKwotKwotK2x0X3N5c3Jvb3Q9Ci0rY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAotKyB5ZXMpCi0rICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSsgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCi0rICAgZmkKLSsgICA7OyAjKAotKyAvKikKLSsgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKLSsgICA7OyAjKAotKyBub3wnJykKLSsgICA7OyAjKAotKyAqKQotKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1Ci0rJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KLSsgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKLSsgICA7OwotK2VzYWMKLSsKLSsgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKLSskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQotIAotIAotIAotQEAgLTc0MTcsNiArNzc5NywxMjMgQEAgZXNhYwotIAotIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgotIAotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgotKyAgICBNQU5JRkVTVF9UT09MPSI6IgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAotKyAgZmkKLStlbHNlCi0rICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KLSsgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKLSsgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiY1Ci0rICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCi0rICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKLSsgIGZpCi0rICBybSAtZiBjb25mdGVzdCoKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9Ci0raWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KLSsgIE1BTklGRVNUX1RPT0w9OgotK2ZpCi0rCi0rCi0rCi0rCi0rCi0gCi0gICBjYXNlICRob3N0X29zIGluCi0gICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCi1AQCAtNzk4MCw2ICs4NDc3LDggQEAgX0xUX0VPRgotICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQotICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKLSAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1Ci0rICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKLSsgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgotIGludCBtYWluKCkgeyByZXR1cm4gMDt9Ci0gX0xUX0VPRgotQEAgLTgxNzUsNyArODY3NCw4IEBAIGZpCi0gTElCVE9PTF9ERVBTPSIkbHRtYWluIgotIAotICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCi0tTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi0rTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJwotK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKLSAKLSAKLSAKLUBAIC04MjY0LDcgKzg3NjQsNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTg1NjIsOCArOTA2Miw2IEBAIGZpCi0gbHRfcHJvZ19jb21waWxlcl9waWM9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtODcyOSw2ICs5MjI3LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKLSAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJwotKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKLSsJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtODc5MSw3ICs5Mjk1LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCi0gICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTg4NDgsMTMgKzkzNTIsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgotICAgICA7OwotIGVzYWMKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLS0KLS0KLS0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYwotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtODkxNSw2ICs5NDIzLDExIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtOTI2NSw3ICs5Nzc4LDggQEAgX0xUX0VPRgotICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0gICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCi0gICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLS0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotIAotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtOTM2NCwxMiArOTg3OCwxMiBAQCBfTFRfRU9GCi0gCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCi0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKLS0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSsJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0gCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgotIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLS0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0rCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSAJICBmaQotIAkgIDs7Ci0gCWVzYWMKLUBAIC05MzgzLDggKzk4OTcsOCBAQCBfTFRfRU9GCi0gCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtOTQwMiw4ICs5OTE2LDggQEAgX0xUX0VPRgotIAotIF9MVF9FT0YKLSAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTk0NDksOCArOTk2Myw4IEBAIF9MVF9FT0YKLSAKLSAgICAgKikKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05NTgwLDcgKzEwMDk0LDEzIEBAIF9MVF9FT0YKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKLSAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTk1OTMsMjIgKzEwMTEzLDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC05NjIwLDcgKzEwMTQ3LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAllbHNlCi0gCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAJICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05NjMzLDIyICsxMDE2NiwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTk2OTMsMjAgKzEwMjMzLDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLS0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0tICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLS0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0rICAgICAgY2wqKQotKwkjIE5hdGl2ZSBNU1ZDCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKLSsJZmlsZV9saXN0X3NwZWM9J0AnCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGVsc2UKLSsJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZml+Ci0rCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgIGxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KLSsJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsJIyBEb24ndCB1c2UgcmFubGliCi0rCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAqKQotKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIDs7Ci0rCSAgZXNhY34KLSsJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgIGZpJwotKwk7OwotKyAgICAgICopCi0rCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0rCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rCTs7Ci0rICAgICAgZXNhYwotICAgICAgIDs7Ci0gCi0gICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtOTc2Nyw3ICsxMDM1MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTk3NzUsNyArMTAzNTgsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDkqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZmkKLUBAIC05NzkxLDcgKzEwMzc0LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXgxMCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKLSAgICAgICBmaQotQEAgLTk4MTUsMTAgKzEwMzk4LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJaWE2NCopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAkqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWVzYWMKLSAgICAgICBlbHNlCi1AQCAtOTg5NywyMyArMTA0ODAsMzYgQEAgZmkKLSAKLSAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKLSAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAotIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgotLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLS0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KLSsJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0rCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKLSsJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLS1pbnQgZm9vKHZvaWQpIHt9Ci0raW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLS0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLS0KLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcwotK2Vsc2UKLSsgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9Ci0rCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KLSsgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJZmkKLSAgICAgICBlbHNlCi0gCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotQEAgLTk5OTgsNyArMTA1OTQsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICAgZWxzZQotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC0xMDAxNyw5ICsxMDYxMyw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC0xMDU5NSw4ICsxMTE5MSw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMDYyOSwxMyArMTEyMjYsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTEwNzI3LDcgKzExMzgyLDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTExNTIzLDcgKzEyMTc4LDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tI2xpbmUgMTE1MjYgImNvbmZpZ3VyZSIKLSsjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTExNTY3LDEwICsxMjIyMiwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExNjI5LDcgKzEyMjg0LDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tI2xpbmUgMTE2MzIgImNvbmZpZ3VyZSIKLSsjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTExNjczLDEwICsxMjMyOCwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTE1OTM2LDEzICsxNjU5MSwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1OTU3LDE0ICsxNjYxOSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNTk5NywxMiArMTY2NjIsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKLSBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTYwNTcsOCArMTY3MjIsMTMgQEAgcmVsb2FkX2ZsYWcgXAotIE9CSkRVTVAgXAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKLSBmaWxlX21hZ2ljX2NtZCBcCi0rZmlsZV9tYWdpY19nbG9iIFwKLSt3YW50X25vY2FzZWdsb2IgXAotK0RMTFRPT0wgXAotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKLSBBUiBcCi0gQVJfRkxBR1MgXAotK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCi0gU1RSSVAgXAotIFJBTkxJQiBcCi0gQ0MgXAotQEAgLTE2MDY4LDEyICsxNjczOCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAotK25tX2ZpbGVfbGlzdF9zcGVjIFwKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCi0tbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9waWMgXAotK2x0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCi0gbmVlZF9sb2NrcyBcCi0rTUFOSUZFU1RfVE9PTCBcCi0gRFNZTVVUSUwgXAotIE5NRURJVCBcCi0gTElQTyBcCi1AQCAtMTYwODksNyArMTY3NjEsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCi0gaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCi0tZml4X3NyY2ZpbGVfcGF0aCBcCi0gZXhjbHVkZV9leHBzeW1zIFwKLSBpbmNsdWRlX2V4cHN5bXMgXAotIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xNjEyNSw2ICsxNjc5Niw3IEBAIG1vZHVsZV9jbWRzIFwKLSBtb2R1bGVfZXhwc3ltX2NtZHMgXAotIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAotIHByZWxpbmtfY21kcyBcCi0rcG9zdGxpbmtfY21kcyBcCi0gcG9zdGluc3RhbGxfY21kcyBcCi0gcG9zdHVuaW5zdGFsbF9jbWRzIFwKLSBmaW5pc2hfY21kcyBcCi1AQCAtMTY4OTEsNyArMTc1NjMsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8Ci0gIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCi0gIwotICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0tIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsjICAgICAgICAgICAgICAgICBJbmMuCi0gIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKLSAjCi0gIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE2OTk0LDE5ICsxNzY2Nyw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKLSAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCi0gTkwyU1A9JGx0X2x0X05MMlNQCi0gCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSsKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSsKLSAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgotIE9CSkRVTVA9JGx0X09CSkRVTVAKLSAKLSAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAotIAotLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCi0rIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAotIAotKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKLSsKLSsjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgotKwotKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCi0rRExMVE9PTD0kbHRfRExMVE9PTAotKwotKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsKLSAjIFRoZSBhcmNoaXZlci4KLSBBUj0kbHRfQVIKLSsKLSsjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgotIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUwotIAotKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgotK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCi0rCi0gIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KLSBTVFJJUD0kbHRfU1RSSVAKLSAKLUBAIC0xNzAzNiw2ICsxNzczMiwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcwotICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCi0gZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4Ci0gCi0rIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCi0rbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCi0rCi0rIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KLStsdF9zeXNyb290PSRsdF9zeXNyb290Ci0rCi0gIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCi0gb2JqZGlyPSRvYmpkaXIKLSAKLUBAIC0xNzA0NSw2ICsxNzc0Nyw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECi0gIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KLSBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCi0gCi0rIyBNYW5pZmVzdCB0b29sLgotK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKLSsKLSAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCi0gRFNZTVVUSUw9JGx0X0RTWU1VVElMCi0gCi1AQCAtMTcxNTksMTIgKzE3ODY0LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKLSAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCi0gbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwotIAotLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLS13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotLQotICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYwotIAotKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLSt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotKwotICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KLSBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwotIAotQEAgLTE3MjUxLDkgKzE3OTU2LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAotICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgotIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKLSAKLS0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi0tZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAotLQotICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgotIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCi0gCi1AQCAtMTcyNjksNiArMTc5NzEsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwotICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCi0gcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKLSAKLSsjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCi0rcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcwotKwotICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgotIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwotIAotQEAgLTE3MzAxLDIxMCArMTgwMDYsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgotICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KLSAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0tICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgY2FzZSAkeHNpX3NoZWxsIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLS0jIGNhbGw6Ci0tIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLS0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLS0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLS0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0tIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0tZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLS0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLS19Ci0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0tICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLS0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLS19Ci0tCi0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsyfSBpbgotLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0tICBlc2FjCi0tfQotLQotLSMgc2VkIHNjcmlwdHM6Ci0tbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKLS1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCi0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0tfQotLQotLV9MVF9FT0YKLS1lc2FjCi0tCi0tY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxKz1cJDIiCi0tfQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxPVwkJDFcJDIiCi0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCi0rICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAotK2Z1bmNfZGlybmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAotK2Z1bmNfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKLStmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAotK2Z1bmNfc3RyaXBuYW1lICgpXAotK3tcCi0rXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAotK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKLStmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKLStmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKLStmdW5jX2xvMm8gKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCi0rXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAotK2Z1bmNfeGZvcm0gKClcCi0re1wKLSsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAotK2Z1bmNfYXJpdGggKClcCi0re1wKLSsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKLStmdW5jX2xlbiAoKVwKLSt7XAotKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rZmkKLSsKLStpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKLStmdW5jX2FwcGVuZCAoKVwKLSt7XAotKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKLStmdW5jX2FwcGVuZF9xdW90ZWQgKClcCi0re1wKLStcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAotK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2Vsc2UKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStmaQotKwotK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9Ci0rZmkKLSsKLSsKLSsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0gICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCi0gICBjaG1vZCAreCAiJG9maWxlIgotIAotZGlmZiAtLWdpdCBhL2dhcy9jb25maWd1cmUgYi9nYXMvY29uZmlndXJlCi1pbmRleCA2NGRlOWYxOWRhLi5hODJmZGU3ZmE4IDEwMDc1NQotLS0tIGEvZ2FzL2NvbmZpZ3VyZQotKysrIGIvZ2FzL2NvbmZpZ3VyZQotQEAgLTY4MSw4ICs2ODEsMTEgQEAgT1RPT0wKLSBMSVBPCi0gTk1FRElUCi0gRFNZTVVUSUwKLStNQU5JRkVTVF9UT09MCi0gUkFOTElCCi0rYWNfY3RfQVIKLSBBUgotK0RMTFRPT0wKLSBPQkpEVU1QCi0gTE5fUwotIE5NCi1AQCAtNzk5LDYgKzgwMiw3IEBAIGVuYWJsZV9zdGF0aWMKLSB3aXRoX3BpYwotIGVuYWJsZV9mYXN0X2luc3RhbGwKLSB3aXRoX2dudV9sZAotK3dpdGhfbGlidG9vbF9zeXNyb290Ci0gZW5hYmxlX2xpYnRvb2xfbG9jawotIGVuYWJsZV9wbHVnaW5zCi0gZW5hYmxlX2xhcmdlZmlsZQotQEAgLTE0ODcsNiArMTQ5MSw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQotICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQotKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKLSsgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KLSAgIC0td2l0aC1jcHU9Q1BVICAgICAgICAgIGRlZmF1bHQgY3B1IHZhcmlhbnQgaXMgQ1BVIChjdXJyZW50bHkgb25seSBzdXBwb3J0ZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG9uIEFSQykKLSAgIC0td2l0aC1zeXN0ZW0temxpYiAgICAgIHVzZSBpbnN0YWxsZWQgbGliegotQEAgLTUyNzQsOCArNTI4MCw4IEBAIGVzYWMKLSAKLSAKLSAKLS1tYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLSttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSAKLSAKLSAKLUBAIC01MzE1LDcgKzUzMjEsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9Ci0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC02MDAxLDggKzYwMDcsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNjA1MSw2ICs2MDU3LDgwIEBAIGVzYWMKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02MDY3LDYgKzYxNDcsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTYyMzUsNyArNjMyMCw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC02Mzg5LDYgKzY0NzUsMjEgQEAgZXNhYwotIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1Ci0gJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9Ci0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCi0rICAgIGZpCi0rICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKLSB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC02NDA0LDkgKzY1MDUsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdF9ETExUT09MPSRETExUT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgotKyAgICBETExUT09MPSJmYWxzZSIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKLSsgIGZpCi0rZWxzZQotKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCi0rCi0rY2FzZSAkaG9zdF9vcyBpbgotK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKLSsgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKLSsgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgotKyAgKi0taWRlbnRpZnktc3RyaWN0KikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCi0rICAgIDs7Ci0rICAqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKLSsgICAgOzsKLSsgIGVzYWMKLSsgIDs7Ci0rKikKLSsgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgotKyAgOzsKLStlc2FjCi0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLSsgIGRvCi0rICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTY0MjIsNyArNjY3Niw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTY0NDIsMTEgKzY2OTYsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotIAotKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCi0rICBkb25lCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KLStpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCi0gICBhY19jdF9BUj0kQVIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLStkbwotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNjQ2Miw3ICs2NzIwLDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTY0ODEsNiArNjczOSwxMCBAQCBlbHNlCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotKwotKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhawotK2RvbmUKLSsKLSAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgotICAgICBBUj0iZmFsc2UiCi0gICBlbHNlCi1AQCAtNjQ5MiwxMiArNjc1NCwxMCBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKLSBlc2FjCi0gICAgIEFSPSRhY19jdF9BUgotICAgZmkKLS1lbHNlCi0tICBBUj0iJGFjX2N2X3Byb2dfQVIiCi0gZmkKLSAKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLSAKLSAKLSAKLUBAIC02NTA5LDYgKzY3NjksNjQgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KLSsgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotK2ludAotK21haW4gKCkKLSt7Ci0rCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCi0rICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KLSsJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KLSsJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCi0rCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgotKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSsKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotKwotK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KLStlbHNlCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKLStmaQotKwotKwotKwotKwotKwotKwotKwotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1zdHJpcCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0gc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9c3RyaXA7IGFjX3dvcmQ9JDIKLUBAIC02ODQzLDggKzcxNjEsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTY4ODAsNiArNzE5OCw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC02OTIxLDYgKzcyNDAsMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtNjkzMiw3ICs3MjYzLDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtNjk1OCw4ICs3Mjg5LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCi0gCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNjk2OSw4ICs3MzAwLDggQEAgX0xUX0VPRgotICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1Ci0gCWZpCi1AQCAtNzAwNyw2ICs3MzM4LDIxIEBAIGVsc2UKLSAkYXNfZWNobyAib2siID4mNjsgfQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gCi1AQCAtNzAyMyw2ICs3MzY5LDQwIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKLStlbHNlCi0rICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubwotK2ZpCi0rCi0rCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKLSskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQotKyAgIDs7Ci0rZXNhYwotKwotKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQotKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0gCi0gCi0gCi1AQCAtNzIzNCw2ICs3NjE0LDEyMyBAQCBlc2FjCi0gCi0gbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCi0gCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCi0rICAgIE1BTklGRVNUX1RPT0w9IjoiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCi0rICBmaQotK2Vsc2UKLSsgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0KgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KLStpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgotKyAgTUFOSUZFU1RfVE9PTD06Ci0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC03Nzk3LDYgKzgyOTQsOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1Ci0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQotICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1Ci0gICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCi0gaW50IG1haW4oKSB7IHJldHVybiAwO30KLSBfTFRfRU9GCi1AQCAtNzk5Miw3ICs4NDkxLDggQEAgZmkKLSBMSUJUT09MX0RFUFM9IiRsdG1haW4iCi0gCi0gIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KLS1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKLStMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCi0rTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgotIAotIAotIAotQEAgLTgwODEsNyArODU4MSw3IEBAIGFpeDMqKQotIGVzYWMKLSAKLSAjIEdsb2JhbCB2YXJpYWJsZXM6Ci0tb2ZpbGU9bGlidG9vbAotK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAotIGNhbl9idWlsZF9zaGFyZWQ9eWVzCi0gCi0gIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtODM3OSw4ICs4ODc5LDYgQEAgZmkKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KLSAKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLS0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAotICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC04NTQ2LDYgKzkwNDQsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwotIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCi0gCTs7Ci0rICAgICAgbmFnZm9yKikKLSsJIyBOQUcgRm9ydHJhbiBjb21waWxlcgotKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCi0rCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJwotKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0rCTs7Ci0gICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQotICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKLSAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04NjA4LDcgKzkxMTIsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKLSAgICAgICAqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtODY2NSwxMyArOTE2OSwxNyBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCi0gICAgIDs7Ci0gZXNhYwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQotLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotLQotLQotLQotLQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0rbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04NzMyLDYgKzkyNDAsMTEgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC05MDgyLDcgKzk1OTUsOCBAQCBfTFRfRU9GCi0gICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KLSAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCi0gCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC05MTgxLDEyICs5Njk1LDEyIEBAIF9MVF9FT0YKLSAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCi0gCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTkyMDAsOCArOTcxNCw4IEBAIF9MVF9FT0YKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGZpCi0gICAgICAgOzsKLSAKLUBAIC05MjE5LDggKzk3MzMsOCBAQCBfTFRfRU9GCi0gCi0gX0xUX0VPRgotICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTI2Niw4ICs5NzgwLDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTkzOTcsNyArOTkxMSwxMyBAQCBfTFRfRU9GCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCi0gICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KLSAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KLS0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC05NDEwLDIyICs5OTMwLDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC05NDM3LDcgKzk5NjQsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTk0NTAsMjIgKzk5ODMsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLUBAIC05NTEwLDIwICsxMDA1MCw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0tICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotLSAgICAgIGxpYmV4dD1saWIKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLS0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKLS0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLS0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0tICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLS0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0tICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0tICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotKyAgICAgIGNsKikKLSsJIyBOYXRpdmUgTVNWQwotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCi0rCWZpbGVfbGlzdF9zcGVjPSdAJwotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBlbHNlCi0rCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGZpfgotKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLSsJICBsaW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCi0rCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rCSMgRG9uJ3QgdXNlIHJhbmxpYgotKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCi0rCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgKikKLSsJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkgICAgICA7OwotKwkgIGVzYWN+Ci0rCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICBmaScKLSsJOzsKLSsgICAgICAqKQotKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSsJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLSsJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLSsJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwk7OwotKyAgICAgIGVzYWMKLSAgICAgICA7OwotIAotICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTk1ODQsNyArMTAxNjcsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgotICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCi0gICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcwotICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KLUBAIC05NTkyLDcgKzEwMTc1LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXg5KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGZpCi1AQCAtOTYwOCw3ICsxMDE5MSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4MTAqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0gICAgICAgZmkKLUBAIC05NjMyLDEwICsxMDIxNSwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWlhNjQqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJKikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTk3MTQsMjMgKzEwMjk3LDM2IEBAIGZpCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0taW50IGZvbyh2b2lkKSB7fQotK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKLStlbHNlCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubwotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC05ODE1LDcgKzEwNDExLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJwotICAgICAgIGVsc2UKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCi1AQCAtOTgzNCw5ICsxMDQzMCw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC0xMDQxMiw4ICsxMTAwOCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xMDQ0NiwxMyArMTEwNDMsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTEwNTQ0LDcgKzExMTk5LDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTExMzQwLDcgKzExOTk1LDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tI2xpbmUgMTEzNDMgImNvbmZpZ3VyZSIKLSsjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTExMzg0LDEwICsxMjAzOSwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTExNDQ2LDcgKzEyMTAxLDcgQEAgZWxzZQotICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgotICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KLSAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCi0tI2xpbmUgMTE0NDkgImNvbmZpZ3VyZSIKLSsjbGluZSAkTElORU5PICJjb25maWd1cmUiCi0gI2luY2x1ZGUgImNvbmZkZWZzLmgiCi0gCi0gI2lmIEhBVkVfRExGQ05fSAotQEAgLTExNDkwLDEwICsxMjE0NSwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTE1ODk2LDEzICsxNjU1MSwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE1OTE3LDE0ICsxNjU3OSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xNTk1NywxMiArMTY2MjIsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKLSBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTYwMTcsOCArMTY2ODIsMTMgQEAgcmVsb2FkX2ZsYWcgXAotIE9CSkRVTVAgXAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKLSBmaWxlX21hZ2ljX2NtZCBcCi0rZmlsZV9tYWdpY19nbG9iIFwKLSt3YW50X25vY2FzZWdsb2IgXAotK0RMTFRPT0wgXAotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKLSBBUiBcCi0gQVJfRkxBR1MgXAotK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCi0gU1RSSVAgXAotIFJBTkxJQiBcCi0gQ0MgXAotQEAgLTE2MDI4LDEyICsxNjY5OCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAotK25tX2ZpbGVfbGlzdF9zcGVjIFwKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCi0tbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9waWMgXAotK2x0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCi0gbmVlZF9sb2NrcyBcCi0rTUFOSUZFU1RfVE9PTCBcCi0gRFNZTVVUSUwgXAotIE5NRURJVCBcCi0gTElQTyBcCi1AQCAtMTYwNDksNyArMTY3MjEsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCi0gaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCi0tZml4X3NyY2ZpbGVfcGF0aCBcCi0gZXhjbHVkZV9leHBzeW1zIFwKLSBpbmNsdWRlX2V4cHN5bXMgXAotIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xNjA4NSw2ICsxNjc1Niw3IEBAIG1vZHVsZV9jbWRzIFwKLSBtb2R1bGVfZXhwc3ltX2NtZHMgXAotIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAotIHByZWxpbmtfY21kcyBcCi0rcG9zdGxpbmtfY21kcyBcCi0gcG9zdGluc3RhbGxfY21kcyBcCi0gcG9zdHVuaW5zdGFsbF9jbWRzIFwKLSBmaW5pc2hfY21kcyBcCi1AQCAtMTY4NTgsNyArMTc1MzAsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8Ci0gIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCi0gIwotICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0tIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsjICAgICAgICAgICAgICAgICBJbmMuCi0gIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKLSAjCi0gIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE2OTYxLDE5ICsxNzYzNCw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKLSAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCi0gTkwyU1A9JGx0X2x0X05MMlNQCi0gCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSsKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSsKLSAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgotIE9CSkRVTVA9JGx0X09CSkRVTVAKLSAKLSAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAotIAotLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCi0rIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAotIAotKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKLSsKLSsjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgotKwotKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCi0rRExMVE9PTD0kbHRfRExMVE9PTAotKwotKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsKLSAjIFRoZSBhcmNoaXZlci4KLSBBUj0kbHRfQVIKLSsKLSsjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgotIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUwotIAotKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgotK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCi0rCi0gIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KLSBTVFJJUD0kbHRfU1RSSVAKLSAKLUBAIC0xNzAwMyw2ICsxNzY5OSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcwotICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCi0gZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4Ci0gCi0rIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCi0rbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCi0rCi0rIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KLStsdF9zeXNyb290PSRsdF9zeXNyb290Ci0rCi0gIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCi0gb2JqZGlyPSRvYmpkaXIKLSAKLUBAIC0xNzAxMiw2ICsxNzcxNCw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECi0gIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KLSBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCi0gCi0rIyBNYW5pZmVzdCB0b29sLgotK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKLSsKLSAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCi0gRFNZTVVUSUw9JGx0X0RTWU1VVElMCi0gCi1AQCAtMTcxMjYsMTIgKzE3ODMxLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKLSAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCi0gbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwotIAotLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLS13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotLQotICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYwotIAotKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLSt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotKwotICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KLSBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwotIAotQEAgLTE3MjE4LDkgKzE3OTIzLDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAotICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgotIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKLSAKLS0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi0tZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAotLQotICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgotIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCi0gCi1AQCAtMTcyMzYsNiArMTc5MzgsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwotICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCi0gcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKLSAKLSsjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCi0rcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcwotKwotICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgotIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwotIAotQEAgLTE3MjY4LDIxMCArMTc5NzMsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgotICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KLSAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0tICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgY2FzZSAkeHNpX3NoZWxsIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLS0jIGNhbGw6Ci0tIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLS0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLS0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLS0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0tIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0tZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLS0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLS19Ci0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0tICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLS0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLS19Ci0tCi0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsyfSBpbgotLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0tICBlc2FjCi0tfQotLQotLSMgc2VkIHNjcmlwdHM6Ci0tbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKLS1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCi0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0tfQotLQotLV9MVF9FT0YKLS1lc2FjCi0tCi0tY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxKz1cJDIiCi0tfQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxPVwkJDFcJDIiCi0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCi0rICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAotK2Z1bmNfZGlybmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAotK2Z1bmNfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKLStmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAotK2Z1bmNfc3RyaXBuYW1lICgpXAotK3tcCi0rXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAotK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKLStmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKLStmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKLStmdW5jX2xvMm8gKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCi0rXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAotK2Z1bmNfeGZvcm0gKClcCi0re1wKLSsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAotK2Z1bmNfYXJpdGggKClcCi0re1wKLSsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKLStmdW5jX2xlbiAoKVwKLSt7XAotKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rZmkKLSsKLStpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKLStmdW5jX2FwcGVuZCAoKVwKLSt7XAotKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKLStmdW5jX2FwcGVuZF9xdW90ZWQgKClcCi0re1wKLStcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAotK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2Vsc2UKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStmaQotKwotK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9Ci0rZmkKLSsKLSsKLSsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0gICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCi0gICBjaG1vZCAreCAiJG9maWxlIgotIAotZGlmZiAtLWdpdCBhL2dwcm9mL2NvbmZpZ3VyZSBiL2dwcm9mL2NvbmZpZ3VyZQotaW5kZXggYWIzMmJhYjJiNi4uNTExOWM2MDE5ZiAxMDA3NTUKLS0tLSBhL2dwcm9mL2NvbmZpZ3VyZQotKysrIGIvZ3Byb2YvY29uZmlndXJlCi1AQCAtNjYyLDggKzY2MiwxMSBAQCBPVE9PTAotIExJUE8KLSBOTUVESVQKLSBEU1lNVVRJTAotK01BTklGRVNUX1RPT0wKLSBSQU5MSUIKLSthY19jdF9BUgotIEFSCi0rRExMVE9PTAotIE9CSkRVTVAKLSBMTl9TCi0gTk0KLUBAIC03ODAsNiArNzgzLDcgQEAgZW5hYmxlX3N0YXRpYwotIHdpdGhfcGljCi0gZW5hYmxlX2Zhc3RfaW5zdGFsbAotIHdpdGhfZ251X2xkCi0rd2l0aF9saWJ0b29sX3N5c3Jvb3QKLSBlbmFibGVfbGlidG9vbF9sb2NrCi0gZW5hYmxlX3BsdWdpbnMKLSBlbmFibGVfbGFyZ2VmaWxlCi1AQCAtMTQ0Miw2ICsxNDQ2LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCi0gICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCi0rICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgotIAotIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgotICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCi1AQCAtNTEyNCw4ICs1MTMwLDggQEAgZXNhYwotIAotIAotIAotLW1hY3JvX3ZlcnNpb249JzIuMi43YScKLS1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JwotK21hY3JvX3ZlcnNpb249JzIuNCcKLSttYWNyb19yZXZpc2lvbj0nMS4zMjkzJwotIAotIAotIAotQEAgLTUxNjUsNyArNTE3MSw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KLSAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KLS1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi0gICBFQ0hPPSdwcmludCAtciAtLScKLSBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTU4NTEsOCArNTg1Nyw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7Ci0gIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKLSB4c2lfc2hlbGw9bm8KLSAoIF9sdF9kdW1teT0iYS9iL2MiCi0tICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotLSAgICAgID0gYyxhL2IsLCBcCi0rICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotKyAgICAgID0gYyxhL2IsYi9jLCBcCi0gICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKLSAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKLSAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC01OTAxLDYgKzU5MDcsODAgQEAgZXNhYwotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICotKi1jeWd3aW4qICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCi0rICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl90b190b29sX2ZpbGVfY21kK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotK2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTU5MTcsNiArNTk5NywxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgotIGVzYWMKLSByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi0gY2FzZSAkaG9zdF9vcyBpbgotKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSsgICAgICByZWxvYWRfY21kcz1mYWxzZQotKyAgICBmaQotKyAgICA7OwotICAgZGFyd2luKikKLSAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNjA4NSw3ICs2MTcwLDggQEAgbWluZ3cqIHwgcHczMiopCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICAgZWxzZQotLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKLSsgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgotKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKLSAgIGZpCi0gICA7OwotQEAgLTYxNjIsMTEgKzYyNDgsNiBAQCBsaW51eCogfCBrKmJzZCotZ251IHwga29wZW5zb2xhcmlzKi1nbnUpCi0gICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD1wYXNzX2FsbAotICAgOzsKLSAKLS1saW51eC11Y2xpYmMqKQotLSAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9cGFzc19hbGwKLS0gIGx0X2N2X2ZpbGVfbWFnaWNfdGVzdF9maWxlPWBlY2hvIC9saWIvbGlidUNsaWJjLSouc29gCi0tICA7OwotLQotIG5ldGJzZCopCi0gICBpZiBlY2hvIF9fRUxGX18gfCAkQ0MgLUUgLSB8ICRHUkVQIF9fRUxGX18gPiAvZGV2L251bGw7IHRoZW4KLSAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J21hdGNoX3BhdHRlcm4gL2xpYlteL10rKFwuc29cLlswLTldK1wuWzAtOV0rfF9waWNcLmEpJCcKLUBAIC02MjQ0LDYgKzYzMjUsMjEgQEAgZXNhYwotIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1Ci0gJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9Ci0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCi0rICAgIGZpCi0rICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKLSB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC02MjU3LDExICs2MzUzLDE2NCBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSAKLSAKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCi0raWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQotKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgotKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgeyB0ZXN0IC1mICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiAmJiAkYXNfdGVzdF94ICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgfTsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KLSsgICAgRExMVE9PTD0iZmFsc2UiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCi0rICBmaQotK2Vsc2UKLSsgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgdGVzdCAiJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Ci0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotKwotKwotKwotKwotKwotKwotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgIGZvciBhY19wcm9nIGluIGFyCi0rICBkbwotKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02Mjc2LDggKzY1MjUsOCBAQCBkbwotICAgSUZTPSRhc19zYXZlX0lGUwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0tICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02Mjk3LDExICs2NTQ2LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSAKLSsgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhawotKyAgZG9uZQotIGZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCi0raWYgdGVzdCAteiAiJEFSIjsgdGhlbgotICAgYWNfY3RfQVI9JEFSCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rZG8KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTYzMzYsNiArNjU4OSwxMCBAQCBlbHNlCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotKwotKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhawotK2RvbmUKLSsKLSAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgotICAgICBBUj0iZmFsc2UiCi0gICBlbHNlCi1AQCAtNjM0NywxNiArNjYwNCw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKLSBlc2FjCi0gICAgIEFSPSRhY19jdF9BUgotICAgZmkKLS1lbHNlCi0tICBBUj0iJGFjX2N2X3Byb2dfQVIiCi0gZmkKLSAKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfYXJfYXRfZmlsZStzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KLSsgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotK2ludAotK21haW4gKCkKLSt7Ci0gCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCi0rICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KLSsJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KLSsJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCi0rCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgotKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSAKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotIAotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotIAotK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KLStlbHNlCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKLStmaQotIAotIAotIAotQEAgLTY2OTgsOCArNzAxMSw4IEBAIGVzYWMKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgotIAotICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLSAKLSAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KLSBvcHRfY3I9Ci1AQCAtNjczNSw2ICs3MDQ4LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwotICAgZWxzZQotICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgotICAgZmkKLSsgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKLSAKLSAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgotICAgcGlwZV93b3Jrcz1ubwotQEAgLTY3NzYsNiArNzA5MCwxOCBAQCBfTFRfRU9GCi0gICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKLSsvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbHNlCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLUBAIC02Nzg3LDcgKzcxMTMsNyBAQCBfTFRfRU9GCi0gCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0Ci0gCi0gLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotLWNvbnN0IHN0cnVjdCB7Ci0rTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICB2b2lkICAgICAgICphZGRyZXNzOwotIH0KLUBAIC02ODEzLDggKzcxMzksOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotIF9MVF9FT0YKLSAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgotIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0tCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKLSsJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgotIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKLSAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKLUBAIC02ODI0LDggKzcxNTAsOCBAQCBfTFRfRU9GCi0gICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAJICAgIHBpcGVfd29ya3M9eWVzCi0gCSAgZmkKLS0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgotLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCi0rCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCi0gCWVsc2UKLSAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKLSAJZmkKLUBAIC02ODYyLDYgKzcxODgsMTggQEAgZWxzZQotICRhc19lY2hvICJvayIgPiY2OyB9Ci0gZmkKLSAKLSsjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KLStpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZmkKLSsKLSsKLSsKLSsKLSsKLSsKLSAKLSAKLSAKLUBAIC02ODc4LDYgKzcyMTYsNDMgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQotKwotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OwotK2Vsc2UKLSsgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCi0rZmkKLSsKLSsKLStsdF9zeXNyb290PQotK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKLSsgeWVzKQotKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAotKyAgIGZpCi0rICAgOzsgIygKLSsgLyopCi0rICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0rICAgOzsgIygKLSsgbm98JycpCi0rICAgOzsgIygKLSsgKikKLSsgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQotKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9Ci0rICAgYXNfZm5fZXJyb3IgIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1Ci0rICAgOzsKLStlc2FjCi0rCi0rIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1Ci0rJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KLSAKLSAKLSAKLUBAIC03MDg5LDYgKzc0NjQsMTIzIEBAIGVzYWMKLSAKLSBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKLSAKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IG10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiB7IHRlc3QgLWYgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiICYmICRhc190ZXN0X3ggIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB9OyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KLSsgICAgTUFOSUZFU1RfVE9PTD0iOiIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKLSsgIGZpCi0rZWxzZQotKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10Ci0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmIHRlc3QgIiR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCi0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1Ci0rICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0Ci0rICBjYXQgY29uZnRlc3QuZXJyID4mNQotKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCi0rICBmaQotKyAgcm0gLWYgY29uZnRlc3QqCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQotK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCi0rICBNQU5JRkVTVF9UT09MPToKLStmaQotKwotKwotKwotKwotKwotIAotICAgY2FzZSAkaG9zdF9vcyBpbgotICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTc2NTIsNiArODE0NCw4IEBAIF9MVF9FT0YKLSAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKLSAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1Ci0gICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQotKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1Ci0rICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKLSAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKLSBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQotIF9MVF9FT0YKLUBAIC03ODQ3LDcgKzgzNDEsOCBAQCBmaQotIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKLSAKLSAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwotK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKLStMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCi0gCi0gCi0gCi1AQCAtNzkzNiw3ICs4NDMxLDcgQEAgYWl4MyopCi0gZXNhYwotIAotICMgR2xvYmFsIHZhcmlhYmxlczoKLS1vZmlsZT1saWJ0b29sCi0rb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCi0gY2FuX2J1aWxkX3NoYXJlZD15ZXMKLSAKLSAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC04MjM0LDggKzg3MjksNiBAQCBmaQotIGx0X3Byb2dfY29tcGlsZXJfcGljPQotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQotIAotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCi0gICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTg0MDEsNiArODg5NCwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCi0gCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKLSAJOzsKLSsgICAgICBuYWdmb3IqKQotKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCi0rCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKLSsJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCi0rCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSsJOzsKLSAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCi0gICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAotIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTg0NjMsNyArODk2Miw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKLSsgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwotICAgICAgICopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKLUBAIC04NTIwLDEzICs5MDE5LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKLSAgICAgOzsKLSBlc2FjCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0tJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0tCi0tCi0tCi0tCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLStsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKLSAKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTg1ODcsNiArOTA5MCwxMSBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotKwotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0gIwotQEAgLTg5MzcsNyArOTQ0NSw4IEBAIF9MVF9FT0YKLSAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwotICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0tICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKLSAKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTkwMzYsMTIgKzk1NDUsMTIgQEAgX0xUX0VPRgotIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCi0tCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0rCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KLSAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0tCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0gCSAgZmkKLSAJICA7OwotIAllc2FjCi1AQCAtOTA1NSw4ICs5NTY0LDggQEAgX0xUX0VPRgotIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCi0gCXdsYXJjPQotICAgICAgIGVsc2UKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZmkKLSAgICAgICA7OwotIAotQEAgLTkwNzQsOCArOTU4Myw4IEBAIF9MVF9FT0YKLSAKLSBfTFRfRU9GCi0gICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05MTIxLDggKzk2MzAsOCBAQCBfTFRfRU9GCi0gCi0gICAgICopCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTI1Miw3ICs5NzYxLDEzIEBAIF9MVF9FT0YKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKLSAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aF8rc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTkyNjUsMjIgKzk3ODAsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTkyOTIsNyArOTgxNCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJZWxzZQotIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoXytzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTMwNSwyMiArOTgzMywyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTkzNjUsMjAgKzk5MDAsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLS0gICAgICBsaWJleHQ9bGliCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0tICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0tICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0tICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLS0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotKwlmaWxlX2xpc3Rfc3BlYz0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05NDM5LDcgKzEwMDE3LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTQ0Nyw3ICsxMDAyNSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4OSopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBmaQotQEAgLTk0NjMsNyArMTAwNDEsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtOTQ4NywxMCArMTAwNjUsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAlpYTY0KikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCSopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC05NTY5LDIzICsxMDE0NywzNiBAQCBmaQotIAotICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAotIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCi0gCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0tICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgotKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KLStpZiB0ZXN0ICIke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSsJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotLWludCBmb28odm9pZCkge30KLStpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9Ci0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCi0rZWxzZQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtOTY3MCw3ICsxMDI2MSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTk2ODksOSArMTAyODAsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJd2xhcmM9JyR7d2x9JwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gICAgICAgZWxzZQotIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KLSAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtMTAyNjcsOCArMTA4NTgsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTAzMDEsMTMgKzEwODkzLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCi0rICAgICAgOzsKLSsgICAgY3lnd2luKikKLSsgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCi0rICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCi0rICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgotKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC0xMDM5OSw3ICsxMTA0OSw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0xMTIzOSwxMCArMTE4ODksMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMTM0NSwxMCArMTE5OTUsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMzMxNCwxMyArMTM5NjQsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSthcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzMzNSwxNCArMTM5OTIsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTMzNzUsMTIgKzE0MDM1LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCi0gaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEzNDM1LDggKzE0MDk1LDEzIEBAIHJlbG9hZF9mbGFnIFwKLSBPQkpEVU1QIFwKLSBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCi0gZmlsZV9tYWdpY19jbWQgXAotK2ZpbGVfbWFnaWNfZ2xvYiBcCi0rd2FudF9ub2Nhc2VnbG9iIFwKLStETExUT09MIFwKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCi0gQVIgXAotIEFSX0ZMQUdTIFwKLSthcmNoaXZlcl9saXN0X3NwZWMgXAotIFNUUklQIFwKLSBSQU5MSUIgXAotIENDIFwKLUBAIC0xMzQ0NiwxMiArMTQxMTEsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKLStubV9maWxlX2xpc3Rfc3BlYyBcCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAotLWx0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKLStsdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAotIG5lZWRfbG9ja3MgXAotK01BTklGRVNUX1RPT0wgXAotIERTWU1VVElMIFwKLSBOTUVESVQgXAotIExJUE8gXAotQEAgLTEzNDY3LDcgKzE0MTM0LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAotIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAotLWZpeF9zcmNmaWxlX3BhdGggXAotIGV4Y2x1ZGVfZXhwc3ltcyBcCi0gaW5jbHVkZV9leHBzeW1zIFwKLSBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTM1MDMsNiArMTQxNjksNyBAQCBtb2R1bGVfY21kcyBcCi0gbW9kdWxlX2V4cHN5bV9jbWRzIFwKLSBleHBvcnRfc3ltYm9sc19jbWRzIFwKLSBwcmVsaW5rX2NtZHMgXAotK3Bvc3RsaW5rX2NtZHMgXAotIHBvc3RpbnN0YWxsX2NtZHMgXAotIHBvc3R1bmluc3RhbGxfY21kcyBcCi0gZmluaXNoX2NtZHMgXAotQEAgLTE0MjY4LDcgKzE0OTM1LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAotICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgotICMKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xNDM3MSwxOSArMTUwMzksNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCi0gIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgotIE5MMlNQPSRsdF9sdF9OTDJTUAotIAotKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0rCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0rCi0gIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KLSBPQkpEVU1QPSRsdF9PQkpEVU1QCi0gCi0gIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKLSAKLS0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgotKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKLSAKLSsjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCi0rCi0rIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKLSsKLSsjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgotK0RMTFRPT0w9JGx0X0RMTFRPT0wKLSsKLSsjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rCi0gIyBUaGUgYXJjaGl2ZXIuCi0gQVI9JGx0X0FSCi0rCi0rIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KLSBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKLSAKLSsjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KLSthcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYwotKwotICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCi0gU1RSSVA9JGx0X1NUUklQCi0gCi1AQCAtMTQ0MTMsNiArMTUxMDQsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKLSAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgotIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAotIAotKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgotK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYwotKwotKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCi0rbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAotKwotICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgotIG9iamRpcj0kb2JqZGlyCi0gCi1AQCAtMTQ0MjIsNiArMTUxMTksOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAotICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/Ci0gbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwotIAotKyMgTWFuaWZlc3QgdG9vbC4KLStNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCi0rCi0gIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgotIERTWU1VVElMPSRsdF9EU1lNVVRJTAotIAotQEAgLTE0NTM2LDEyICsxNTIzNiwxMiBAQCB3aXRoX2djYz0kR0NDCi0gIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgotIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKLSAKLS0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0td2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLS0KLSAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KLSBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKLSAKLSsjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0rd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLSsKLSAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCi0gbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKLSAKLUBAIC0xNDYyOCw5ICsxNTMyOCw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKLSAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KLSBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCi0gCi0tIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgotLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKLS0KLSAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwotIAotQEAgLTE0NjQ2LDYgKzE1MzQzLDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKLSAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgotIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCi0gCi0rIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgotK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKLSsKLSAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KLSBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKLSAKLUBAIC0xNDY3OCwyMTAgKzE1Mzc4LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKLSAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KLSAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCi0gICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIGNhc2UgJHhzaV9zaGVsbCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0tIyBjYWxsOgotLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0tIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0tIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0tIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0tIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0tICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Ci0tfQotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQotLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0tICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCi0tfQotLQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICBjYXNlICR7Mn0gaW4KLS0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLS0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotLSAgZXNhYwotLX0KLS0KLS0jIHNlZCBzY3JpcHRzOgotLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCi0tbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJwotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCi0tICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotLX0KLS0KLS1fTFRfRU9GCi0tZXNhYwotLQotLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMSs9XCQyIgotLX0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMT1cJCQxXCQyIgotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICBlc2FjCi0tCi0tCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0rICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0rICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotKwotKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKLStmdW5jX2Rpcm5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKLStmdW5jX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCi0rZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKLStmdW5jX3N0cmlwbmFtZSAoKVwKLSt7XAotK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKLStcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCi0rZnVuY19zcGxpdF9sb25nX29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCi0rZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCi0rZnVuY19sbzJvICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAotK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKLStmdW5jX3hmb3JtICgpXAotK3tcCi0rICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKLStmdW5jX2FyaXRoICgpXAotK3tcCi0rICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCi0rZnVuY19sZW4gKClcCi0re1wKLSsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotK2ZpCi0rCi0raWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCi0rZnVuY19hcHBlbmQgKClcCi0re1wKLSsgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCi0rZnVuY19hcHBlbmRfcXVvdGVkICgpXAotK3tcCi0rXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKLStcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStlbHNlCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZmkKLSsKLStpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQotK2ZpCi0rCi0rCi0rICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQotICAgY2htb2QgK3ggIiRvZmlsZSIKLSAKLWRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUgYi9sZC9jb25maWd1cmUKLWluZGV4IGJjMDllN2VmODEuLjQzYzM5MWMyYjMgMTAwNzU1Ci0tLS0gYS9sZC9jb25maWd1cmUKLSsrKyBiL2xkL2NvbmZpZ3VyZQotQEAgLTY4Nyw4ICs2ODcsMTEgQEAgT1RPT0wKLSBMSVBPCi0gTk1FRElUCi0gRFNZTVVUSUwKLStNQU5JRkVTVF9UT09MCi0gUkFOTElCCi0rYWNfY3RfQVIKLSBBUgotK0RMTFRPT0wKLSBPQkpEVU1QCi0gTE5fUwotIE5NCi1AQCAtODE1LDYgKzgxOCw3IEBAIGVuYWJsZV9zdGF0aWMKLSB3aXRoX3BpYwotIGVuYWJsZV9mYXN0X2luc3RhbGwKLSB3aXRoX2dudV9sZAotK3dpdGhfbGlidG9vbF9zeXNyb290Ci0gZW5hYmxlX2xpYnRvb2xfbG9jawotIGVuYWJsZV9wbHVnaW5zCi0gZW5hYmxlX2xhcmdlZmlsZQotQEAgLTE1MDcsNiArMTUxMSw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQotICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQotKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKLSsgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KLSAgIC0td2l0aC1saWItcGF0aD1kaXIxOmRpcjIuLi4gIHNldCBkZWZhdWx0IExJQl9QQVRICi0gICAtLXdpdGgtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciB1c3IvbGliIGV0IGFsIHdpdGhpbiBESVIuCi0gCi1AQCAtNTk1OSw4ICs1OTY1LDggQEAgZXNhYwotIAotIAotIAotLW1hY3JvX3ZlcnNpb249JzIuMi43YScKLS1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JwotK21hY3JvX3ZlcnNpb249JzIuNCcKLSttYWNyb19yZXZpc2lvbj0nMS4zMjkzJwotIAotIAotIAotQEAgLTYwMDAsNyArNjAwNiw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KLSAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KLS1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi0gICBFQ0hPPSdwcmludCAtciAtLScKLSBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTY2ODYsOCArNjY5Miw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7Ci0gIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKLSB4c2lfc2hlbGw9bm8KLSAoIF9sdF9kdW1teT0iYS9iL2MiCi0tICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotLSAgICAgID0gYyxhL2IsLCBcCi0rICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotKyAgICAgID0gYyxhL2IsYi9jLCBcCi0gICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKLSAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKLSAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC02NzM2LDYgKzY3NDIsODAgQEAgZXNhYwotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICotKi1jeWd3aW4qICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCi0rICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotK2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTY3NTIsNiArNjgzMiwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgotIGVzYWMKLSByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi0gY2FzZSAkaG9zdF9vcyBpbgotKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSsgICAgICByZWxvYWRfY21kcz1mYWxzZQotKyAgICBmaQotKyAgICA7OwotICAgZGFyd2luKikKLSAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNjkyMCw3ICs3MDA1LDggQEAgbWluZ3cqIHwgcHczMiopCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICAgZWxzZQotLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKLSsgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgotKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKLSAgIGZpCi0gICA7OwotQEAgLTcwNzQsNiArNzE2MCwyMSBAQCBlc2FjCi0gZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKLSAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KLSsKLStmaWxlX21hZ2ljX2dsb2I9Ci0rd2FudF9ub2Nhc2VnbG9iPW5vCi0raWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KLSsgIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIG1pbmd3KiB8IHB3MzIqKQotKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcwotKyAgICBlbHNlCi0rICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKLSsgICAgZmkKLSsgICAgOzsKLSsgIGVzYWMKLStmaQotKwotIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAotIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTcwODksOSArNzE5MCwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKLSskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0raWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgotK2Vsc2UKLSthc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCi0rZm9yIGFzX2RpciBpbiAkUEFUSAotK2RvCi0rICBJRlM9JGFzX3NhdmVfSUZTCi0rICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSsgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCi0rICAgIERMTFRPT0w9ImZhbHNlIgotKyAgZWxzZQotKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCi0reWVzOikKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQotK2FjX3Rvb2xfd2FybmVkPXllcyA7OwotK2VzYWMKLSsgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAotKyAgZmkKLStlbHNlCi0rICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgotK2ZpCi0rCi0rdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQotK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKLSsKLStjYXNlICRob3N0X29zIGluCi0rY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAotKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAotKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCi0rICAqLS1pZGVudGlmeS1zdHJpY3QqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKLSsgICAgOzsKLSsgICopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjawotKyAgICA7OwotKyAgZXNhYwotKyAgOzsKLSsqKQotKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCi0rICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCi0rICA7OwotK2VzYWMKLSsKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotKyAgZG8KLSsgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNzEwNyw3ICs3MzYxLDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgotKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNzEyNywxMSArNzM4MSwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0gCi0rICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKLSsgIGRvbmUKLSBmaQotLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgotK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KLSAgIGFjX2N0X0FSPSRBUgotLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCi0rICBmb3IgYWNfcHJvZyBpbiBhcgotK2RvCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC03MTQ3LDcgKzc0MDUsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKLSAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0gICAgIGJyZWFrIDIKLSAgIGZpCi1AQCAtNzE2Niw2ICs3NDI0LDEwIEBAIGVsc2UKLSAkYXNfZWNobyAibm8iID4mNjsgfQotIGZpCi0gCi0rCi0rICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCi0rZG9uZQotKwotICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCi0gICAgIEFSPSJmYWxzZSIKLSAgIGVsc2UKLUBAIC03MTc3LDEyICs3NDM5LDEyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OwotIGVzYWMKLSAgICAgQVI9JGFjX2N0X0FSCi0gICBmaQotLWVsc2UKLS0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKLSBmaQotIAotLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKLS10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotKzogJHtBUj1hcn0KLSs6ICR7QVJfRkxBR1M9Y3J1fQotKwotKwotIAotIAotIAotQEAgLTcxOTIsNiArNzQ1NCw2MiBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubwotKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsvKiBlbmQgY29uZmRlZnMuaC4gICovCi0rCi0raW50Ci0rbWFpbiAoKQotK3sKLSsKLSsgIDsKLSsgIHJldHVybiAwOwotK30KLStfQUNFT0YKLStpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6Ci0rICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKLSsgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKLSsgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgotKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgotKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKLSsJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCi0rICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAotKyAgICAgICAgZmkKLSsgICAgICBmaQotKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQotKwotK2ZpCi0rcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0Ci0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9Ci0rCi0raWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQotK2Vsc2UKLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQotK2ZpCi0rCi0rCi0rCi0rCi0rCi0gCi0gCi0gaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotQEAgLTc1MjgsOCArNzg0Niw4IEBAIGVzYWMKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgotIAotICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLSAKLSAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KLSBvcHRfY3I9Ci1AQCAtNzU2NSw2ICs3ODgzLDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwotICAgZWxzZQotICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgotICAgZmkKLSsgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKLSAKLSAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgotICAgcGlwZV93b3Jrcz1ubwotQEAgLTc2MDYsNiArNzkyNSwxOCBAQCBfTFRfRU9GCi0gICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKLSsvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbHNlCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLUBAIC03NjE3LDcgKzc5NDgsNyBAQCBfTFRfRU9GCi0gCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0Ci0gCi0gLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotLWNvbnN0IHN0cnVjdCB7Ci0rTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICB2b2lkICAgICAgICphZGRyZXNzOwotIH0KLUBAIC03NjQzLDggKzc5NzQsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotIF9MVF9FT0YKLSAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgotIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0tCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKLSsJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgotIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKLSAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKLUBAIC03NjU0LDggKzc5ODUsOCBAQCBfTFRfRU9GCi0gICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAJICAgIHBpcGVfd29ya3M9eWVzCi0gCSAgZmkKLS0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgotLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCi0rCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCi0gCWVsc2UKLSAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKLSAJZmkKLUBAIC03NjkyLDYgKzgwMjMsMTkgQEAgZWxzZQotICRhc19lY2hvICJvayIgPiY2OyB9Ci0gZmkKLSAKLSsjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KLStpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZmkKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSAKLSAKLSAKLUBAIC03NzA4LDYgKzgwNTIsNDIgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQotKwotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OwotK2Vsc2UKLSsgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCi0rZmkKLSsKLSsKLStsdF9zeXNyb290PQotK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKLSsgeWVzKQotKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAotKyAgIGZpCi0rICAgOzsgIygKLSsgLyopCi0rICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0rICAgOzsgIygKLSsgbm98JycpCi0rICAgOzsgIygKLSsgKikKLSsgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQotKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9Ci0rICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1Ci0rICAgOzsKLStlc2FjCi0rCi0rIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1Ci0rJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KLSAKLSAKLSAKLUBAIC03OTE5LDYgKzgyOTksMTIzIEBAIGVzYWMKLSAKLSBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKLSAKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IG10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KLSsgICAgTUFOSUZFU1RfVE9PTD0iOiIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKLSsgIGZpCi0rZWxzZQotKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10Ci0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCi0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1Ci0rICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0Ci0rICBjYXQgY29uZnRlc3QuZXJyID4mNQotKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCi0rICBmaQotKyAgcm0gLWYgY29uZnRlc3QqCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQotK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCi0rICBNQU5JRkVTVF9UT09MPToKLStmaQotKwotKwotKwotKwotKwotIAotICAgY2FzZSAkaG9zdF9vcyBpbgotICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTg0ODIsNiArODk3OSw4IEBAIF9MVF9FT0YKLSAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKLSAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1Ci0gICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQotKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1Ci0rICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKLSAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKLSBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQotIF9MVF9FT0YKLUBAIC04NTUwLDYgKzkwNDksMTYgQEAgZG9uZQotIAotIAotIAotK2Z1bmNfc3RyaXBuYW1lX2NuZiAoKQotK3sKLSsgIGNhc2UgJHsyfSBpbgotKyAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLSsgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLSsgIGVzYWMKLSt9ICMgZnVuY19zdHJpcG5hbWVfY25mCi0rCi0rCi0rCi0gCi0gCi0gIyBTZXQgb3B0aW9ucwotQEAgLTg2NzgsNyArOTE4Nyw4IEBAIGZpCi0gTElCVE9PTF9ERVBTPSIkbHRtYWluIgotIAotICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCi0tTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCi0rTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJwotK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKLSAKLSAKLSAKLUBAIC04NzY3LDcgKzkyNzcsNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTkwNjUsOCArOTU3NSw2IEBAIGZpCi0gbHRfcHJvZ19jb21waWxlcl9waWM9Ci0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCi1AQCAtOTIzMiw2ICs5NzQwLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKLSAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJwotIAk7OwotKyAgICAgIG5hZ2ZvciopCi0rCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKLSsJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJwotKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKLSsJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotKwk7OwotICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKLSAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCi0gCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCi1AQCAtOTI5NCw3ICs5ODA4LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCi0gICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJwotICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQotKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7Ci0gICAgICAgKikKLSAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OwotQEAgLTkzNTEsMTMgKzk4NjUsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgotICAgICA7OwotIGVzYWMKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLS0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLS0KLS0KLS0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYwotIAotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCi1AQCAtOTQxOCw2ICs5OTM2LDExIEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLSAjCi1AQCAtOTc2OCw3ICsxMDI5MSw4IEBAIF9MVF9FT0YKLSAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwotICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0tICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKLSAKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTk4NjcsMTIgKzEwMzkxLDEyIEBAIF9MVF9FT0YKLSAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCi0gCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTk4ODYsOCArMTA0MTAsOCBAQCBfTFRfRU9GCi0gCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKLSAJd2xhcmM9Ci0gICAgICAgZWxzZQotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBmaQotICAgICAgIDs7Ci0gCi1AQCAtOTkwNSw4ICsxMDQyOSw4IEBAIF9MVF9FT0YKLSAKLSBfTFRfRU9GCi0gICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC05OTUyLDggKzEwNDc2LDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTEwMDgzLDcgKzEwNjA3LDEzIEBAIF9MVF9FT0YKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKLSAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTEwMDk2LDIyICsxMDYyNiwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtMTAxMjMsNyArMTA2NjAsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTEwMTM2LDIyICsxMDY3OSwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKLSsgIGZpCi0rCi0rZmkKLSsKLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KLStmaQotIAotIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAotQEAgLTEwMTk1LDIxICsxMDc0NSw2NCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAjIFdoZW4gbm90IHVzaW5nIGdjYywgd2UgY3VycmVudGx5IGFzc3VtZSB0aGF0IHdlIGFyZSB1c2luZwotICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotLSAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLS0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0tICAgICAgbGliZXh0PWxpYgotLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgotLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0tICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLS0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgotLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLS0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLS0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKyAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotKwlmaWxlX2xpc3Rfc3BlYz0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC0xMDI3MCw3ICsxMDg2Myw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTEwMjc4LDcgKzEwODcxLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgIGhwdXg5KikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGZpCi1AQCAtMTAyOTQsNyArMTA4ODcsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtMTAzMTgsMTAgKzEwOTExLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJaWE2NCopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAkqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWVzYWMKLSAgICAgICBlbHNlCi1AQCAtMTA0MDAsMjMgKzEwOTkzLDM2IEBAIGZpCi0gCi0gICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCi0rCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0rCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0taW50IGZvbyh2b2lkKSB7fQotK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKLStlbHNlCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubwotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC0xMDUwMSw3ICsxMTEwNyw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTEwNTIwLDkgKzExMTI2LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCXdsYXJjPScke3dsfScKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KLS0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJwotICAgICAgIGVsc2UKLSAJY2FzZSBgJENDIC1WIDI+JjFgIGluCi0gCSoiQ29tcGlsZXJzIDUuMCIqKQotQEAgLTExMDk4LDggKzExNzA0LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgbmVlZF92ZXJzaW9uPW5vCi0gICBuZWVkX2xpYl9wcmVmaXg9bm8KLSAKLS0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgotLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKLSsgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KLSsgIHllcywqKQotKyAgICAjIGdjYwotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJwotICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0gICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotQEAgLTExMTMyLDEzICsxMTczOSw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgIDs7Ci0gICAgIGVzYWMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSsgICAgOzsKLSsKLSsgICosY2wqKQotKyAgICAjIE5hdGl2ZSBNU1ZDCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSsgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCi0rCi0rICAgIGNhc2UgJGJ1aWxkX29zIGluCi0rICAgIG1pbmd3KikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ci0rICAgICAgbHRfc2F2ZV9pZnM9JElGUwotKyAgICAgIElGUz0nOycKLSsgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCi0rICAgICAgZG8KLSsgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCi0rICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKLSsgICAgICBkb25lCi0rICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KLSsgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICBmaQotKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQotKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKLSsgICAgICA7OwotKyAgICBlc2FjCi0rCi0rICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSsgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0rICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+Ci0rICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0rICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwotKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+Ci0rICAgICAgICRSTSBcJGRscGF0aCcKLSsgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCi0gICAgIDs7Ci0gCi0gICAqKQotKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAgIDs7Ci0gICBlc2FjCi0tICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCi0gICBzaGxpYnBhdGhfdmFyPVBBVEgKLSAgIDs7Ci1AQCAtMTEyMzAsNyArMTE4OTUsNyBAQCBoYWlrdSopCi0gICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJwotICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKLSAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLS0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCi0rICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKLSAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKLSAgIDs7Ci0gCi1AQCAtMTIwMjYsNyArMTI2OTEsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMjAyOSAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTIwNzAsMTAgKzEyNzM1LDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTIxMzIsNyArMTI3OTcsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS0jbGluZSAxMjEzNSAiY29uZmlndXJlIgotKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTIxNzYsMTAgKzEyODQxLDEwIEBAIGVsc2UKLSAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCi0gICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLwotICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQotLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0raW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotICNlbmRpZgotIAotLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQotK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQotIGludCBtYWluICgpCi0gewotICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7Ci1AQCAtMTI1NzEsNiArMTMyMzYsNyBAQCAkUk0gLXIgY29uZnRlc3QqCi0gCi0gICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotICAgbHRfc2F2ZV9DQz0kQ0MKLSsgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAgIGx0X3NhdmVfTEQ9JExECi0gICBsdF9zYXZlX0dDQz0kR0NDCi0gICBHQ0M9JEdYWAotQEAgLTEyNTg4LDYgKzEzMjU0LDcgQEAgJFJNIC1yIGNvbmZ0ZXN0KgotICAgZmkKLSAgIHRlc3QgLXogIiR7TERDWFgrc2V0fSIgfHwgTEQ9JExEQ1hYCi0gICBDQz0ke0NYWC0iYysrIn0KLSsgIENGTEFHUz0kQ1hYRkxBR1MKLSAgIGNvbXBpbGVyPSRDQwotICAgY29tcGlsZXJfQ1hYPSRDQwotICAgZm9yIGNjX3RlbXAgaW4gJGNvbXBpbGVyIiI7IGRvCi1AQCAtMTI4NzAsNyArMTM1MzcsMTMgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWUKLSAgICAgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPSctYmVyb2snCi0gICAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbiBlbXB0eQotICAgICAgICAgICAjIGV4ZWN1dGFibGUuCi0tICAgICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSsgICAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF9fQ1hYKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSAKLSBpbnQKLUBAIC0xMjg4MywyMiArMTM1NTYsMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2N4eF90cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotIAotLWx0X2FpeF9saWJwYXRoX3NlZD0nCi0tICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLS0JL14wLyB7Ci0tCSAgICBzL14wICAqXCguKlwpJC9cMS8KLS0JICAgIHAKLS0JfQotLSAgICB9JwotLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCi0tICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS1maQotKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKLSsgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0rCSAgL14wLyB7Ci0rCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCi0rCSAgICAgIHAKLSsJICB9Ci0rICAgICAgfScKLSsgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpCi0gZmkKLSBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKLS1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoX19DWFgKLStmaQotIAotICAgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAKLUBAIC0xMjkxMSw3ICsxMzU5MSwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAgICAgZWxzZQotIAkgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rCSAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiAke2x0X2N2X2FpeF9saWJwYXRoX19DWFgrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTEyOTI0LDIyICsxMzYxMCwyOSBAQCBtYWluICgpCi0gX0FDRU9GCi0gaWYgYWNfZm5fY3h4X3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KLSsgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoX19DWFgiOyB0aGVuCi0rICAgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWAotK2ZpCi0gCi0gCSAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAJICAgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtMTI5ODIsMjkgKzEzNjc1LDc1IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotICAgICAgICAgOzsKLSAKLSAgICAgICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0tICAgICAgICAjIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgQ1hYKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKLS0gICAgICAgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nLUwkbGliZGlyJwotLSAgICAgICAgZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjX0NYWD0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKLS0gICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD11bnN1cHBvcnRlZAotLSAgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD1ubwotLSAgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9eWVzCi0tCi0tICAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0tICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLS0gICAgICAgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQotLSAgICAgICAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgotLSAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLS0JICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLS0gICAgICAgICAgZWxzZQotLQkgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0tCSAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotLSAgICAgICAgICBmaX4KLS0gICAgICAgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotLSAgICAgICAgZWxzZQotLSAgICAgICAgICBsZF9zaGxpYnNfQ1hYPW5vCi0tICAgICAgICBmaQotLSAgICAgICAgOzsKLSsJY2FzZSAkR1hYLCRjY19iYXNlbmFtZSBpbgotKwksY2wqIHwgbm8sY2wqKQotKwkgICMgTmF0aXZlIE1TVkMKLSsJICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0rCSAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSsJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nICcKLSsJICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9dW5zdXBwb3J0ZWQKLSsJICBhbHdheXNfZXhwb3J0X3N5bWJvbHNfQ1hYPXllcwotKwkgIGZpbGVfbGlzdF9zcGVjX0NYWD0nQCcKLSsJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwkgIGxpYmV4dD1saWIKLSsJICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJICBzaHJleHRfY21kcz0iLmRsbCIKLSsJICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCSAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCSAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0rCSAgICAgICRTRUQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgICAgZWxzZQotKwkgICAgICAkU0VEIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICAgIGZpfgotKwkgICAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgotKwkgICAgbGlua25hbWVzPScKLSsJICAjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCi0rCSAgIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsIENYWCk9J3RydWUnCi0rCSAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lc19DWFg9eWVzCi0rCSAgIyBEb24ndCB1c2UgcmFubGliCi0rCSAgb2xkX3Bvc3RpbnN0YWxsX2NtZHNfQ1hYPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJICBwb3N0bGlua19jbWRzX0NYWD0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICAgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAgICopCi0rCQlsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCQlsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkJOzsKLSsJICAgIGVzYWN+Ci0rCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGx0X291dHB1dGZpbGUifgotKwkgICAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgICBmaScKLSsJICA7OwotKwkqKQotKwkgICMgZysrCi0rCSAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsIENYWCkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCi0rCSAgIyBhcyB0aGVyZSBpcyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLSsJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWD0nLUwkbGliZGlyJwotKwkgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCi0rCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPXVuc3VwcG9ydGVkCi0rCSAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD1ubwotKwkgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNfQ1hYPXllcwotKwotKwkgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KLSsJICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLSsJICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKLSsJICAgICMgaXMgRVhQT1JUUyksIHVzZSBpdCBhcyBpczsgb3RoZXJ3aXNlLCBwcmVwZW5kLi4uCi0rCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgICAgY3AgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotKwkgICAgZWxzZQotKwkgICAgICBlY2hvIEVYUE9SVFMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSsJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLSsJICAgIGZpfgotKwkgICAgJENDIC1zaGFyZWQgLW5vc3RkbGliICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotKwkgIGVsc2UKLSsJICAgIGxkX3NobGlic19DWFg9bm8KLSsJICBmaQotKwkgIDs7Ci0rCWVzYWMKLSsJOzsKLSAgICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotIAotIAotQEAgLTEzMTEwLDcgKzEzODQ5LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgICAgICAgOzsKLSAgICAgICAgICAgKikKLSAgICAgICAgICAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotLSAgICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0rICAgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgICAgICAgZWxzZQotICAgICAgICAgICAgICAgIyBGSVhNRTogaW5zZXJ0IHByb3BlciBDKysgbGlicmFyeSBzdXBwb3J0Ci0gICAgICAgICAgICAgICBsZF9zaGxpYnNfQ1hYPW5vCi1AQCAtMTMxODEsMTAgKzEzOTIwLDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgICAgICAgICAgIDs7Ci0gCSAgICAgICAgICBpYTY0KikKLS0JICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgICAgICAgICAgICA7OwotIAkgICAgICAgICAgKikKLS0JICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSAJICAgICAgICAgICAgOzsKLSAJICAgICAgICBlc2FjCi0gCSAgICAgIGZpCi1AQCAtMTMyMjUsOSArMTM5NjQsOSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAgICAgKikKLSAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi0gCSAgICAgIGlmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkgICAgICBlbHNlCi0tCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJwotKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgIC1vICRsaWInCi0gCSAgICAgIGZpCi0gCSAgICBmaQotIAkgICAgbGlua19hbGxfZGVwbGlic19DWFg9eWVzCi1AQCAtMTMyOTcsMjAgKzE0MDM2LDIwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgICAgICBwcmVsaW5rX2NtZHNfQ1hYPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotIAkJcm0gLXJmICR0cGxkaXJ+Ci0gCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRvYmpzICRsaWJvYmpzICRjb21waWxlX2RlcGxpYnN+Ci0tCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCInCi0rCQljb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAiJwotIAkgICAgICBvbGRfYXJjaGl2ZV9jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2xkb2JqcyRvbGRfZGVwbGlic34KLS0JCSRBUiAkQVJfRkxBR1MgJG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGB+Ci0rCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYH4KLSAJCSRSQU5MSUIgJG9sZGxpYicKLSAJICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+Ci0tCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwotKwkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCBzb3J0IHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCi0gCSAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSd0cGxkaXI9VGVtcGxhdGUuZGlyfgotIAkJcm0gLXJmICR0cGxkaXJ+Ci0gCQkkQ0MgLS1wcmVsaW5rX29iamVjdHMgLS1pbnN0YW50aWF0aW9uX2RpciAkdHBsZGlyICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkY29udmVuaWVuY2UgJHBvc3RkZXBfb2JqZWN0c34KLS0JCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgJE5MMlNQYCAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gCSAgICAgIDs7Ci0gCSAgICAqKSAjIFZlcnNpb24gNiBhbmQgYWJvdmUgdXNlIHdlYWsgc3ltYm9scwotIAkgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKLUBAIC0xMzUwNSw3ICsxNDI0NCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkJICA7OwotIAkgICAgICAgICopCi0tCSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJCSAgOzsKLSAJICAgICAgZXNhYwotIAotQEAgLTEzNTUxLDcgKzE0MjkwLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICAgc29sYXJpcyopCi0gICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgICAgICBDQyopCi0rICAgICAgICAgIENDKiB8IHN1bkNDKikKLSAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKLSAgICAgICAgICAgICBhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFg9eWVzCi0gCSAgICBub191bmRlZmluZWRfZmxhZ19DWFg9JyAtemRlZnMnCi1AQCAtMTM1OTIsOSArMTQzMzEsOSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotIAkgICAgICBub191bmRlZmluZWRfZmxhZ19DWFg9JyAke3dsfS16ICR7d2x9ZGVmcycKLSAJICAgICAgaWYgJENDIC0tdmVyc2lvbiB8ICRHUkVQIC12ICdeMlwuNycgPiAvZGV2L251bGw7IHRoZW4KLS0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJwotKwkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJwotIAkgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCQkgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAKLSAJICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCi0gCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCi1AQCAtMTM3MjksNiArMTQ0NjgsMTMgQEAgcHJpdmF0ZToKLSB9OwotIF9MVF9FT0YKLSAKLSsKLStfbHRfbGliZGVwc19zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0rY2FzZSAiJENDICRDRkxBR1MgIiBpbiAjKAotKypcIC1mbHRvKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8tbHRvIiA7OwotKypcIC1md2hvcHIqXCAqKSBDRkxBR1M9IiRDRkxBR1MgLWZuby13aG9wciIgOzsKLStlc2FjCi0rCi0gaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1Ci0gICAoZXZhbCAkYWNfY29tcGlsZSkgMj4mNQotICAgYWNfc3RhdHVzPSQ/Ci1AQCAtMTM3NDIsNyArMTQ0ODgsNyBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKLSAgIHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmU9bm8KLSAKLSAgIGZvciBwIGluIGBldmFsICIkb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQiYDsgZG8KLS0gICAgY2FzZSAkcCBpbgotKyAgICBjYXNlICR7cHJldn0ke3B9IGluCi0gCi0gICAgIC1MKiB8IC1SKiB8IC1sKikKLSAgICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KLUBAIC0xMzc1MSwxMyArMTQ0OTcsMjIgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1Ci0gICAgICAgICAgIHRlc3QgJHAgPSAiLVIiOyB0aGVuCi0gCSBwcmV2PSRwCi0gCSBjb250aW51ZQotLSAgICAgICBlbHNlCi0tCSBwcmV2PQotICAgICAgICBmaQotIAotKyAgICAgICAjIEV4cGFuZCB0aGUgc3lzcm9vdCB0byBlYXNlIGV4dHJhY3RpbmcgdGhlIGRpcmVjdG9yaWVzIGxhdGVyLgotKyAgICAgICBpZiB0ZXN0IC16ICIkcHJldiI7IHRoZW4KLSsgICAgICAgICBjYXNlICRwIGluCi0rICAgICAgICAgLUwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1MJyAnJyAiJHAiOyBwcmV2PS1MOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKLSsgICAgICAgICAtUiopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLVInICcnICIkcCI7IHByZXY9LVI7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwotKyAgICAgICAgIC1sKikgZnVuY19zdHJpcG5hbWVfY25mICctbCcgJycgIiRwIjsgcHJldj0tbDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7Ci0rICAgICAgICAgZXNhYwotKyAgICAgICBmaQotKyAgICAgICBjYXNlICRwIGluCi0rICAgICAgID0qKSBmdW5jX3N0cmlwbmFtZV9jbmYgJz0nICcnICIkcCI7IHA9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7Ci0rICAgICAgIGVzYWMKLSAgICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KLS0JIGNhc2UgJHAgaW4KLS0JIC1MKiB8IC1SKikKLSsJIGNhc2UgJHtwcmV2fSBpbgotKwkgLUwgfCAtUikKLSAJICAgIyBJbnRlcm5hbCBjb21waWxlciBsaWJyYXJ5IHBhdGhzIHNob3VsZCBjb21lIGFmdGVyIHRob3NlCi0gCSAgICMgcHJvdmlkZWQgdGhlIHVzZXIuICBUaGUgcG9zdGRlcHMgYWxyZWFkeSBjb21lIGFmdGVyIHRoZQotIAkgICAjIHVzZXIgc3VwcGxpZWQgbGlicyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgdGhlbS4KLUBAIC0xMzc3Nyw4ICsxNDUzMiwxMCBAQCBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfY29tcGlsZVwiIjsgfSA+JjUKLSAJICAgcG9zdGRlcHNfQ1hYPSIke3Bvc3RkZXBzX0NYWH0gJHtwcmV2fSR7cH0iCi0gCSBmaQotICAgICAgICBmaQotKyAgICAgICBwcmV2PQotICAgICAgICA7OwotIAotKyAgICAqLmx0by4kb2JqZXh0KSA7OyAjIElnbm9yZSBHQ0MgTFRPIG9iamVjdHMKLSAgICAgKi4kb2JqZXh0KQotICAgICAgICAjIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSB0ZXN0IG9iamVjdCBmaWxlIG9ubHkgc2hvd3MgdXAKLSAgICAgICAgIyBvbmNlIGluIHRoZSBjb21waWxlciBvdXRwdXQuCi1AQCAtMTM4MTQsNiArMTQ1NzEsNyBAQCBlbHNlCi0gZmkKLSAKLSAkUk0gLWYgY29uZmVzdC4kb2JqZXh0Ci0rQ0ZMQUdTPSRfbHRfbGliZGVwc19zYXZlX0NGTEFHUwotIAotICMgUE9SVE1FOiBvdmVycmlkZSBhYm92ZSB0ZXN0IG9uIHN5c3RlbXMgd2hlcmUgaXQgaXMgYnJva2VuCi0gY2FzZSAkaG9zdF9vcyBpbgotQEAgLTEzODQ5LDcgKzE0NjA3LDcgQEAgbGludXgqKQotIAotIHNvbGFyaXMqKQotICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gIENDKikKLSsgIENDKiB8IHN1bkNDKikKLSAgICAgIyBUaGUgbW9yZSBzdGFuZGFyZHMtY29uZm9ybWluZyBzdGxwb3J0NCBsaWJyYXJ5IGlzCi0gICAgICMgaW5jb21wYXRpYmxlIHdpdGggdGhlIENzdGQgbGlicmFyeS4gQXZvaWQgc3BlY2lmeWluZwotICAgICAjIGl0IGlmIGl0J3MgaW4gQ1hYRkxBR1MuIElnbm9yZSBsaWJDcnVuIGFzCi1AQCAtMTM5MTQsOCArMTQ2NzIsNiBAQCBmaQotIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0KLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9Ci0gCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0tJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAKLSAgICMgQysrIHNwZWNpZmljIGNhc2VzIGZvciBwaWMsIHN0YXRpYywgd2wsIGV0Yy4KLSAgIGlmIHRlc3QgIiRHWFgiID0geWVzOyB0aGVuCi1AQCAtMTQwMjAsNiArMTQ3NzYsMTEgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJICA7OwotIAllc2FjCi0gCTs7Ci0rICAgICAgbWluZ3cqIHwgY3lnd2luKiB8IG9zMiogfCBwdzMyKiB8IGNlZ2NjKikKLSsJIyBUaGlzIGhhY2sgaXMgc28gdGhhdCB0aGUgc291cmNlIGZpbGUgY2FuIHRlbGwgd2hldGhlciBpdCBpcyBiZWluZwotKwkjIGJ1aWx0IGZvciBpbmNsdXNpb24gaW4gYSBkbGwgKGFuZCBzaG91bGQgZXhwb3J0IHN5bWJvbHMgZm9yIGV4YW1wbGUpLgotKwlsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9Jy1ERExMX0VYUE9SVCcKLSsJOzsKLSAgICAgICBkZ3V4KikKLSAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAJICBlYysrKikKLUBAIC0xNDE3Miw3ICsxNDkzMyw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCTs7Ci0gICAgICAgc29sYXJpcyopCi0gCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tCSAgQ0MqKQotKwkgIENDKiB8IHN1bkNDKikKLSAJICAgICMgU3VuIEMrKyA0LjIsIDUueCBhbmQgQ2VudGVybGluZSBDKysKLSAJICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nLUtQSUMnCi0gCSAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFg9Jy1Cc3RhdGljJwotQEAgLTE0MjM3LDEwICsxNDk5OCwxNyBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0iJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCAtRFBJQyIKLSAgICAgOzsKLSBlc2FjCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgiID4mNQotLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjY7IH0KLS0KLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYPSRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgPiY2OyB9Ci0rbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFgKLSAKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTE0Mjk4LDYgKzE1MDY2LDggQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC0xNDQ3NSw2ICsxNTI0NSw3IEBAIGZpCi0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0gCi0gICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgZXhjbHVkZV9leHBzeW1zX0NYWD0nX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJwotICAgY2FzZSAkaG9zdF9vcyBpbgotICAgYWl4WzQtOV0qKQotICAgICAjIElmIHdlJ3JlIHVzaW5nIEdOVSBubSwgdGhlbiB3ZSBkb24ndCB3YW50IHRoZSAiLUMiIG9wdGlvbi4KLUBAIC0xNDQ4OSwxNSArMTUyNjAsMjAgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWUKLSAgICAgOzsKLSAgIHB3MzIqKQotICAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0iJGx0ZGxsX2NtZHMiCi0tICA7OwotKyAgICA7OwotICAgY3lnd2luKiB8IG1pbmd3KiB8IGNlZ2NjKikKLS0gICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvOy9eLipbIF1fX25tX18vcy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotLSAgOzsKLSsgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgY2wqKSA7OwotKyAgICAqKQotKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zX0NYWD0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJwotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSAgICopCi0gICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0tICA7OwotKyAgICA7OwotICAgZXNhYwotLSAgZXhjbHVkZV9leHBzeW1zX0NYWD0nX0dMT0JBTF9PRkZTRVRfVEFCTEVffF9HTE9CQUxfX0ZbSURdXy4qJwotIAotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbGRfc2hsaWJzX0NYWCIgPiY1Ci0gJGFzX2VjaG8gIiRsZF9zaGxpYnNfQ1hYIiA+JjY7IH0KLUBAIC0xNDc2MCw4ICsxNTUzNiw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0xNDc5MywxMyArMTU1NzAsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0rICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJwotKwotKyAgICBjYXNlICRidWlsZF9vcyBpbgotKyAgICBtaW5ndyopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQotKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKLSsgICAgICBJRlM9JzsnCi0rICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgotKyAgICAgIGRvCi0rICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgotKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCi0rICAgICAgZG9uZQotKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKLSsgICAgICA7OwotKyAgICBjeWd3aW4qKQotKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KLSsgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKLSsgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCi0rICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgICA7OwotICAgZXNhYwotLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgotICAgc2hsaWJwYXRoX3Zhcj1QQVRICi0gICA7OwotQEAgLTE0ODkwLDcgKzE1NzI1LDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTE1MzQ5LDYgKzE2MTg0LDcgQEAgZmkKLSAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgotIAotICAgQ0M9JGx0X3NhdmVfQ0MKLSsgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKLSAgIExEQ1hYPSRMRAotICAgTEQ9JGx0X3NhdmVfTEQKLSAgIEdDQz0kbHRfc2F2ZV9HQ0MKLUBAIC0xODQ0NCwxMyArMTkyODAsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSthcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xODQ2NSwxNCArMTkzMDgsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTg1MDUsMTIgKzE5MzUxLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCi0gaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTE4NTQ5LDggKzE5Mzk1LDggQEAgb2xkX2FyY2hpdmVfY21kc19DWFg9J2AkRUNITyAiJG9sZF9hcmNoaXZlX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGUKLSBjb21waWxlcl9DWFg9J2AkRUNITyAiJGNvbXBpbGVyX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gR0NDX0NYWD0nYCRFQ0hPICIkR0NDX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZ19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWx0X3Byb2dfY29tcGlsZXJfd2xfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3Byb2dfY29tcGlsZXJfd2xfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWD0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX29fQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFg9J2AkRUNITyAiJGFyY2hpdmVfY21kc19uZWVkX2xjX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTg1NzcsMTIgKzE5NDIzLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXJfQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWCIgfCAkU0VEICIkZGVsYXlfCi0gaGFyZGNvZGVfYXV0b21hdGljX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5oZXJpdF9ycGF0aF9DWFg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGhfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsaW5rX2FsbF9kZXBsaWJzX0NYWD0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlic19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWZpeF9zcmNmaWxlX3BhdGhfQ1hYPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleGNsdWRlX2V4cHN5bXNfQ1hYPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmNsdWRlX2V4cHN5bXNfQ1hYPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBwcmVsaW5rX2NtZHNfQ1hYPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStwb3N0bGlua19jbWRzX0NYWD0nYCRFQ0hPICIkcG9zdGxpbmtfY21kc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbGlzdF9zcGVjX0NYWD0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBoYXJkY29kZV9hY3Rpb25fQ1hYPSdgJEVDSE8gIiRoYXJkY29kZV9hY3Rpb25fQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBjb21waWxlcl9saWJfc2VhcmNoX2RpcnNfQ1hYPSdgJEVDSE8gIiRjb21waWxlcl9saWJfc2VhcmNoX2RpcnNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xODYyMCw4ICsxOTQ2NiwxMyBAQCByZWxvYWRfZmxhZyBcCi0gT0JKRFVNUCBcCi0gZGVwbGlic19jaGVja19tZXRob2QgXAotIGZpbGVfbWFnaWNfY21kIFwKLStmaWxlX21hZ2ljX2dsb2IgXAotK3dhbnRfbm9jYXNlZ2xvYiBcCi0rRExMVE9PTCBcCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAotIEFSIFwKLSBBUl9GTEFHUyBcCi0rYXJjaGl2ZXJfbGlzdF9zcGVjIFwKLSBTVFJJUCBcCi0gUkFOTElCIFwKLSBDQyBcCi1AQCAtMTg2MzEsMTIgKzE5NDgyLDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCi0rbm1fZmlsZV9saXN0X3NwZWMgXAotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCi0rbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKLSBuZWVkX2xvY2tzIFwKLStNQU5JRkVTVF9UT09MIFwKLSBEU1lNVVRJTCBcCi0gTk1FRElUIFwKLSBMSVBPIFwKLUBAIC0xODY1Miw3ICsxOTUwNSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKLSBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKLS1maXhfc3JjZmlsZV9wYXRoIFwKLSBleGNsdWRlX2V4cHN5bXMgXAotIGluY2x1ZGVfZXhwc3ltcyBcCi0gZmlsZV9saXN0X3NwZWMgXAotQEAgLTE4Njc0LDggKzE5NTI2LDggQEAgTERfQ1hYIFwKLSByZWxvYWRfZmxhZ19DWFggXAotIGNvbXBpbGVyX0NYWCBcCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYIFwKLS1sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCBcCi0gbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIFwKLStsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWCBcCi0gbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYIFwKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfb19DWFggXAotIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFggXAotQEAgLTE4Njg3LDcgKzE5NTM5LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYIFwKLSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX0NYWCBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZF9DWFggXAotIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3JfQ1hYIFwKLS1maXhfc3JjZmlsZV9wYXRoX0NYWCBcCi0gZXhjbHVkZV9leHBzeW1zX0NYWCBcCi0gaW5jbHVkZV9leHBzeW1zX0NYWCBcCi0gZmlsZV9saXN0X3NwZWNfQ1hYIFwKLUBAIC0xODcyMSw2ICsxOTU3Miw3IEBAIG1vZHVsZV9jbWRzIFwKLSBtb2R1bGVfZXhwc3ltX2NtZHMgXAotIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAotIHByZWxpbmtfY21kcyBcCi0rcG9zdGxpbmtfY21kcyBcCi0gcG9zdGluc3RhbGxfY21kcyBcCi0gcG9zdHVuaW5zdGFsbF9jbWRzIFwKLSBmaW5pc2hfY21kcyBcCi1AQCAtMTg3MzUsNyArMTk1ODcsOCBAQCBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWCBcCi0gbW9kdWxlX2NtZHNfQ1hYIFwKLSBtb2R1bGVfZXhwc3ltX2NtZHNfQ1hYIFwKLSBleHBvcnRfc3ltYm9sc19jbWRzX0NYWCBcCi0tcHJlbGlua19jbWRzX0NYWDsgZG8KLStwcmVsaW5rX2NtZHNfQ1hYIFwKLStwb3N0bGlua19jbWRzX0NYWDsgZG8KLSAgICAgY2FzZSBcYGV2YWwgXFxcXFwkRUNITyBcXFxcIiJcXFxcXCRcJHZhciJcXFxcIlxgIGluCi0gICAgICpbXFxcXFxcXGBcXCJcXFwkXSopCi0gICAgICAgZXZhbCAibHRfXCR2YXI9XFxcXFxcIlxcXGBcXFwkRUNITyBcXCJcXFwkXCR2YXJcXCIgfCBcXFwkU0VEIC1lIFxcIlxcXCRkb3VibGVfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJHNlZF9xdW90ZV9zdWJzdFxcIiAtZSBcXCJcXFwkZGVsYXlfdmFyaWFibGVfc3Vic3RcXCJcXFxgXFxcXFxcIiIKLUBAIC0xOTUzOSw3ICsyMDM5Miw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKLSAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KLSAjCi0gIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKLS0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAotKyMgICAgICAgICAgICAgICAgIEluYy4KLSAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgotICMKLSAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCi1AQCAtMTk2NDIsMTkgKzIwNDk2LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAotICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KLSBOTDJTUD0kbHRfbHRfTkwyU1AKLSAKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCi0rdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAotKwotKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotKwotICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCi0gT0JKRFVNUD0kbHRfT0JKRFVNUAotIAotICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCi0gZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCi0gCi0tIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KLSsjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0gZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCi0gCi0rIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLStmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgotKwotKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCi0rCi0rIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KLStETExUT09MPSRsdF9ETExUT09MCi0rCi0rIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAotKwotICMgVGhlIGFyY2hpdmVyLgotIEFSPSRsdF9BUgotKwotKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCi0gQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCi0gCi0rIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCi0rYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKLSsKLSAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgotIFNUUklQPSRsdF9TVFJJUAotIAotQEAgLTE5Njg0LDYgKzIwNTYxLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCi0gIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KLSBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKLSAKLSsjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KLStubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKLSsKLSsjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgotK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKLSsKLSAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KLSBvYmpkaXI9JG9iamRpcgotIAotQEAgLTE5NjkzLDYgKzIwNTc2LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKLSAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPwotIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKLSAKLSsjIE1hbmlmZXN0IHRvb2wuCi0rTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAotKwotICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KLSBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKLSAKLUBAIC0xOTgwNywxMiArMjA2OTMsMTIgQEAgd2l0aF9nY2M9JEdDQwotICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KLSBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0tCi0gIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCi0gcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCi0gCi0rIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCi0gCi1AQCAtMTk4OTksOSArMjA3ODUsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCi0gIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCi0gbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicwotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCi0tCi0gIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKLSAKLUBAIC0xOTkxNyw2ICsyMDgwMCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcwotIAotKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KLStwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCi0rCi0gIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCi0gZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCi0gCi1AQCAtMTk5NjMsMjEwICsyMDg0OSwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCi0gICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCi0gICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQotICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KLS0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBjYXNlICR4c2lfc2hlbGwgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgotLSMgY2FsbDoKLS0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAotLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAotLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgotLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQotLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KLS0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KLS1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0tICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKLS0gIGVzYWMKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQotLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQotLX0KLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19Ci0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OwotLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbwotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAotLX0KLS0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQotLWZ1bmNfc3RyaXBuYW1lICgpCi0tewotLSAgY2FzZSAkezJ9IGluCi0tICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0tICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKLS0gIGVzYWMKLS19Ci0tCi0tIyBzZWQgc2NyaXB0czoKLS1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJwotLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKLS0KLS0jIGZ1bmNfb3B0X3NwbGl0Ci0tZnVuY19vcHRfc3BsaXQgKCkKLS17Ci0tICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAotLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAotLX0KLS0KLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKLS19Ci0tCi0tX0xUX0VPRgotLWVzYWMKLS0KLS1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KLS0gIHllcykKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDErPVwkMiIKLS19Ci0tX0xUX0VPRgotLSAgICA7OwotLSAgKikKLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLS0KLS0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotLWZ1bmNfYXBwZW5kICgpCi0tewotLSAgZXZhbCAiJDE9XCQkMVwkMiIKLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgZXNhYwotLQotLQotLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsKLSsgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCi0rZnVuY19kaXJuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCi0rZnVuY19iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAotK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCi0rZnVuY19zdHJpcG5hbWUgKClcCi0re1wKLStcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCi0rXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAotK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKLStcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAotK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAotK2Z1bmNfbG8ybyAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKLStcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAotK1wgICAgZXNhY1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCi0rZnVuY194Zm9ybSAoKVwKLSt7XAotKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCi0rZnVuY19hcml0aCAoKVwKLSt7XAotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAotK2Z1bmNfbGVuICgpXAotK3tcCi0rICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLStmaQotKwotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAotK2Z1bmNfYXBwZW5kICgpXAotK3tcCi0rICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAotK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKLSt7XAotK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCi0rXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZWxzZQotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2ZpCi0rCi0raWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KLStmaQotKwotKwotKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKLSAgIGNobW9kICt4ICIkb2ZpbGUiCi0gCi1AQCAtMjAxOTQsMTIgKzIxMDM5LDEyIEBAIHdpdGhfZ2NjPSRHQ0NfQ1hYCi0gIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgotIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYCi0gCi0tIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgotLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWAotLQotICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpY19DWFgKLSAKLSsjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0rd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2xfQ1hYCi0rCi0gIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgotIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWAotIAotQEAgLTIwMjg2LDkgKzIxMTMxLDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aF9DWFgKLSAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KLSBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzX0NYWAotIAotLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KLS1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoX0NYWAotLQotICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgotIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWAotIAotQEAgLTIwMzA0LDYgKzIxMTQ2LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXNfQ1hYCi0gIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KLSBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kc19DWFgKLSAKLSsjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCi0rcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kc19DWFgKLSsKLSAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KLSBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWNfQ1hYCi0gCi1kaWZmIC0tZ2l0IGEvbGlidG9vbC5tNCBiL2xpYnRvb2wubTQKLWluZGV4IDQzNDUzMDA1OWYuLmU0NWZkYzY5OTggMTAwNjQ0Ci0tLS0gYS9saWJ0b29sLm00Ci0rKysgYi9saWJ0b29sLm00Ci1AQCAtMSw3ICsxLDggQEAKLSAjIGxpYnRvb2wubTQgLSBDb25maWd1cmUgbGlidG9vbCBmb3IgdGhlIGhvc3Qgc3lzdGVtLiAtKi1BdXRvY29uZi0qLQotICMKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKLUBAIC0xMCw3ICsxMSw4IEBACi0gCi0gbTRfZGVmaW5lKFtfTFRfQ09QWUlOR10sIFtkbmwKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0zNyw3ICszOSw3IEBAIG00X2RlZmluZShbX0xUX0NPUFlJTkddLCBbZG5sCi0gIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KLSBdKQotIAotLSMgc2VyaWFsIDU2IExUX0lOSVQKLSsjIHNlcmlhbCA1NyBMVF9JTklUCi0gCi0gCi0gIyBMVF9QUkVSRVEoVkVSU0lPTikKLUBAIC05Miw3ICs5NCw4IEBAIF9MVF9TRVRfT1BUSU9OUyhbJDBdLCBbJDFdKQotIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKLSAKLSAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwotK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKLStMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCi0gQUNfU1VCU1QoTElCVE9PTClkbmwKLSAKLSBfTFRfU0VUVVAKLUBAIC0xNjYsMTAgKzE2OSwxMyBAQCBfTFRfREVDTChbXSwgW2V4ZWV4dF0sIFswXSwgW0V4ZWN1dGFibGUgZmlsZSBzdWZmaXggKG5vcm1hbGx5ICIiKV0pZG5sCi0gZG5sCi0gbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTXSlkbmwKLSttNF9yZXF1aXJlKFtfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OU10pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0NNRF9SRUxPQURdKWRubAotIG00X3JlcXVpcmUoW19MVF9DSEVDS19NQUdJQ19NRVRIT0RdKWRubAotK200X3JlcXVpcmUoW19MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfQ01EX09MRF9BUkNISVZFXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfQ01EX0dMT0JBTF9TWU1CT0xTXSlkbmwKLSttNF9yZXF1aXJlKFtfTFRfV0lUSF9TWVNST09UXSlkbmwKLSAKLSBfTFRfQ09ORklHX0xJQlRPT0xfSU5JVChbCi0gIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHdoaWNoIGFsbG93IG91cgotQEAgLTE5OSw3ICsyMDUsNyBAQCBhaXgzKikKLSBlc2FjCi0gCi0gIyBHbG9iYWwgdmFyaWFibGVzOgotLW9maWxlPWxpYnRvb2wKLStvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKLSBjYW5fYnVpbGRfc2hhcmVkPXllcwotIAotICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAotQEAgLTYzMiw3ICs2MzgsNyBAQCBtNF9pZnNldChbQUNfUEFDS0FHRV9OQU1FXSwgW0FDX1BBQ0tBR0VfTkFNRSBdKWNvbmZpZy5sdFtdZG5sCi0gbTRfaWZzZXQoW0FDX1BBQ0tBR0VfVkVSU0lPTl0sIFsgQUNfUEFDS0FHRV9WRVJTSU9OXSkKLSBjb25maWd1cmVkIGJ5ICRbMF0sIGdlbmVyYXRlZCBieSBtNF9QQUNLQUdFX1NUUklORy4KLSAKLS1Db3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgotIFRoaXMgY29uZmlnLmx0IHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCi0gZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuIgotIAotQEAgLTc0NiwxNSArNzUyLDEyIEBAIF9MVF9FT0YKLSAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KLSAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCi0gICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLSsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0gCi0tICBfTFRfUFJPR19YU0lfU0hFTExGTlMKLSsgIF9MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlMKLSAKLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0gICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCi0gICBjaG1vZCAreCAiJG9maWxlIgotIF0sCi1AQCAtOTgwLDYgKzk4Myw4IEBAIF9MVF9FT0YKLSAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JkFTX01FU1NBR0VfTE9HX0ZECi0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mQVNfTUVTU0FHRV9MT0dfRkQKLSAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiZBU19NRVNTQUdFX0xPR19GRAotKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiZBU19NRVNTQUdFX0xPR19GRAotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiZBU19NRVNTQUdFX0xPR19GRAotICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgotIGludCBtYWluKCkgeyByZXR1cm4gMDt9Ci0gX0xUX0VPRgotQEAgLTEwNjksMzAgKzEwNzQsNDEgQEAgbTRfZGVmdW4oW19MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTXSwKLSAgIGZpCi0gXSkKLSAKLS0jIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCi0tIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKyMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoW1RBR05BTUVdKQotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotICMgTGlua3MgYSBtaW5pbWFsIHByb2dyYW0gYW5kIGNoZWNrcyB0aGUgZXhlY3V0YWJsZQotICMgZm9yIHRoZSBzeXN0ZW0gZGVmYXVsdCBoYXJkY29kZWQgbGlicmFyeSBwYXRoLiBJbiBtb3N0IGNhc2VzLAotICMgdGhpcyBpcyAvdXNyL2xpYjovbGliLCBidXQgd2hlbiB0aGUgTVBJIGNvbXBpbGVycyBhcmUgdXNlZAotICMgdGhlIGxvY2F0aW9uIG9mIHRoZSBjb21tdW5pY2F0aW9uIGFuZCBNUEkgbGlicyBhcmUgaW5jbHVkZWQgdG9vLgotICMgSWYgd2UgZG9uJ3QgZmluZCBhbnl0aGluZywgdXNlIHRoZSBkZWZhdWx0IGxpYnJhcnkgcGF0aCBhY2NvcmRpbmcKLSAjIHRvIHRoZSBhaXggbGQgbWFudWFsLgotKyMgU3RvcmUgdGhlIHJlc3VsdHMgZnJvbSB0aGUgZGlmZmVyZW50IGNvbXBpbGVycyBmb3IgZWFjaCBUQUdOQU1FLgotKyMgQWxsb3cgdG8gb3ZlcnJpZGUgdGhlbSBmb3IgYWxsIHRhZ3MgdGhyb3VnaCBsdF9jdl9haXhfbGlicGF0aC4KLSBtNF9kZWZ1bihbX0xUX1NZU19NT0RVTEVfUEFUSF9BSVhdLAotIFttNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAotLUFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbQUNfTEFOR19QUk9HUkFNXSldLFsKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmldLFtdKQotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotK2lmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KLSsgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAotK2Vsc2UKLSsgIEFDX0NBQ0hFX1ZBTChbX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSldLAotKyAgW0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU1dLFsKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nWwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9XScKLSsgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pIjsgdGhlbgotKyAgICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLSsgIGZpXSxbXSkKLSsgIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKSI7IHRoZW4KLSsgICAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9Ii91c3IvbGliOi9saWIiCi0rICBmaQotKyAgXSkKLSsgIGFpeF9saWJwYXRoPSRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKQotK2ZpCi0gXSkjIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCi0gCi0gCi1AQCAtMTExNyw3ICsxMTMzLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KLSAKLSBBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBwcmludCBzdHJpbmdzXSkKLSAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KLS1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi0gICBFQ0hPPSdwcmludCAtciAtLScKLSBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTExNjEsNiArMTE3NywzOSBAQCBfTFRfREVDTChbXSwgW0VDSE9dLCBbMV0sIFtBbiBlY2hvIHByb2dyYW0gdGhhdCBwcm90ZWN0cyBiYWNrc2xhc2hlc10pCi0gXSkjIF9MVF9QUk9HX0VDSE9fQkFDS1NMQVNICi0gCi0gCi0rIyBfTFRfV0lUSF9TWVNST09UCi0rIyAtLS0tLS0tLS0tLS0tLS0tCi0rQUNfREVGVU4oW19MVF9XSVRIX1NZU1JPT1RdLAotK1tBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzeXNyb290XSkKLStBQ19BUkdfV0lUSChbbGlidG9vbC1zeXNyb290XSwKLStbICAtLXdpdGgtbGlidG9vbC1zeXNyb290Wz1ESVJdIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCi0rICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuXSwKLStbXSwgW3dpdGhfbGlidG9vbF9zeXNyb290PW5vXSkKLSsKLStkbmwgbHRfc3lzcm9vdCB3aWxsIGFsd2F5cyBiZSBwYXNzZWQgdW5xdW90ZWQuICBXZSBxdW90ZSBpdCBoZXJlCi0rZG5sIGluIGNhc2UgdGhlIHVzZXIgcGFzc2VkIGEgZGlyZWN0b3J5IG5hbWUuCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgQUNfTVNHX1JFU1VMVChbJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH1dKQotKyAgIEFDX01TR19FUlJPUihbVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLl0pCi0rICAgOzsKLStlc2FjCi0rCi0rIEFDX01TR19SRVNVTFQoWyR7bHRfc3lzcm9vdDotbm99XSkKLStfTFRfREVDTChbXSwgW2x0X3N5c3Jvb3RdLCBbMF0sIFtUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIF1kbmwKLStbZGVwZW5kZW50IGxpYnJhcmllcywgYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC5dKV0pCi0rCi0gIyBfTFRfRU5BQkxFX0xPQ0sKLSAjIC0tLS0tLS0tLS0tLS0tLQotIG00X2RlZnVuKFtfTFRfRU5BQkxFX0xPQ0tdLAotQEAgLTEzMjAsMTQgKzEzNjksNDcgQEAgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCi0gXSkjIF9MVF9FTkFCTEVfTE9DSwotIAotIAotKyMgX0xUX1BST0dfQVIKLSsjIC0tLS0tLS0tLS0tCi0rbTRfZGVmdW4oW19MVF9QUk9HX0FSXSwKLStbQUNfQ0hFQ0tfVE9PTFMoQVIsIFthcl0sIGZhbHNlKQotKzogJHtBUj1hcn0KLSs6ICR7QVJfRkxBR1M9Y3J1fQotK19MVF9ERUNMKFtdLCBbQVJdLCBbMV0sIFtUaGUgYXJjaGl2ZXJdKQotK19MVF9ERUNMKFtdLCBbQVJfRkxBR1NdLCBbMV0sIFtGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZV0pCi0rCi0rQUNfQ0FDSEVfQ0hFQ0soW2ZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0XSwgW2x0X2N2X2FyX2F0X2ZpbGVdLAotKyAgW2x0X2N2X2FyX2F0X2ZpbGU9bm8KLSsgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNXSwKLSsgICAgIFtlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKLSsgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mQVNfTUVTU0FHRV9MT0dfRkQnCi0rICAgICAgQUNfVFJZX0VWQUwoW2x0X2FyX3RyeV0pCi0rICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KLSsJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KLSsJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCi0rCUFDX1RSWV9FVkFMKFtsdF9hcl90cnldKQotKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgotKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSsgICAgIF0pCi0rICBdKQotKwotK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KLStlbHNlCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKLStmaQotK19MVF9ERUNMKFtdLCBbYXJjaGl2ZXJfbGlzdF9zcGVjXSwgWzFdLAotKyAgW0hvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlcl0pCi0rXSkjIF9MVF9QUk9HX0FSCi0rCi0rCi0gIyBfTFRfQ01EX09MRF9BUkNISVZFCi0gIyAtLS0tLS0tLS0tLS0tLS0tLS0tCi0gbTRfZGVmdW4oW19MVF9DTURfT0xEX0FSQ0hJVkVdLAotLVtBQ19DSEVDS19UT09MKEFSLCBhciwgZmFsc2UpCi0tdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0tX0xUX0RFQ0woW10sIFtBUl0sIFsxXSwgW1RoZSBhcmNoaXZlcl0pCi0tX0xUX0RFQ0woW10sIFtBUl9GTEFHU10sIFsxXSkKLStbX0xUX1BST0dfQVIKLSAKLSBBQ19DSEVDS19UT09MKFNUUklQLCBzdHJpcCwgOikKLSB0ZXN0IC16ICIkU1RSSVAiICYmIFNUUklQPToKLUBAIC0xNjIzLDcgKzE3MDUsNyBAQCBlbHNlCi0gICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCi0gICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgotICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKLS1bI2xpbmUgX19vbGluZV9fICJjb25maWd1cmUiCi0rWyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKLSAjaW5jbHVkZSAiY29uZmRlZnMuaCIKLSAKLSAjaWYgSEFWRV9ETEZDTl9ICi1AQCAtMTY2NywxMCArMTc0OSwxMCBAQCBlbHNlCi0gLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAotICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KLSAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKLS12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOwotK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLSAjZW5kaWYKLSAKLS12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KLStpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KLSBpbnQgbWFpbiAoKQotIHsKLSAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOwotQEAgLTIyMTAsOCArMjI5Miw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC0yMjQ0LDEzICsyMzI3LDcxIEBAIG00X2lmKFskMV0sIFtdLFsKLSAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSAgICAgICA7OwotICAgICBlc2FjCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0rICAgIDs7Ci0rCi0rICAqLGNsKikKLSsgICAgIyBOYXRpdmUgTVNWQwotKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJwotKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSsgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCi0rCi0rICAgIGNhc2UgJGJ1aWxkX29zIGluCi0rICAgIG1pbmd3KikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ci0rICAgICAgbHRfc2F2ZV9pZnM9JElGUwotKyAgICAgIElGUz0nOycKLSsgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCi0rICAgICAgZG8KLSsgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCi0rICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKLSsgICAgICBkb25lCi0rICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW1thLXpBLVpdXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCi0rICAgICAgOzsKLSsgICAgY3lnd2luKikKLSsgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCi0rICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCi0rICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgotKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IFskR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGxdOyB0aGVuCi0rICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCi0rICAgICAgZmkKLSsgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKLSsgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCi0rICAgICAgOzsKLSsgICAgZXNhYwotKwotKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCi0rICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgotKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgotKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgotKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKLSsgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgotKyAgICAgICAkUk0gXCRkbHBhdGgnCi0rICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJwotICAgICA7OwotIAotICAgKikKLSsgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAgIDs7Ci0gICBlc2FjCi0tICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCi0gICBzaGxpYnBhdGhfdmFyPVBBVEgKLSAgIDs7Ci1AQCAtMjM0Miw3ICsyNDgzLDcgQEAgaGFpa3UqKQotICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKLSAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICi0gICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0tICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJwotKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCi0gICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCi0gICA7OwotIAotQEAgLTI5NTAsNiArMzA5MSwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgotIGVzYWMKLSByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi0gY2FzZSAkaG9zdF9vcyBpbgotKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSsgICAgICByZWxvYWRfY21kcz1mYWxzZQotKyAgICBmaQotKyAgICA7OwotICAgZGFyd2luKikKLSAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtMzAxNiw3ICszMTYyLDggQEAgbWluZ3cqIHwgcHczMiopCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICAgZWxzZQotLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKLSsgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgotKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKLSAgIGZpCi0gICA7OwotQEAgLTMxNjcsNiArMzMxNCwyMSBAQCB0cGYqKQotICAgOzsKLSBlc2FjCi0gXSkKLSsKLStmaWxlX21hZ2ljX2dsb2I9Ci0rd2FudF9ub2Nhc2VnbG9iPW5vCi0raWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KLSsgIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIG1pbmd3KiB8IHB3MzIqKQotKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcwotKyAgICBlbHNlCi0rICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bW1wxXV1cL1tbXDFdXVwvZzsvZyJgCi0rICAgIGZpCi0rICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKLSB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC0zMTc0LDcgKzMzMzYsMTEgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCi0gX0xUX0RFQ0woW10sIFtkZXBsaWJzX2NoZWNrX21ldGhvZF0sIFsxXSwKLSAgICAgW01ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzXSkKLSBfTFRfREVDTChbXSwgW2ZpbGVfbWFnaWNfY21kXSwgWzFdLAotLSAgICBbQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyJdKQotKyAgICBbQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIl0pCi0rX0xUX0RFQ0woW10sIFtmaWxlX21hZ2ljX2dsb2JdLCBbMV0sCi0rICAgIFtIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIl0pCi0rX0xUX0RFQ0woW10sIFt3YW50X25vY2FzZWdsb2JdLCBbMV0sCi0rICAgIFtGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQotIF0pIyBfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9ECi0gCi0gCi1AQCAtMzI3Nyw2ICszNDQzLDY3IEBAIGRubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKLSBkbmwgQUNfREVGVU4oW0FNX1BST0dfTk1dLCBbXSkKLSBkbmwgQUNfREVGVU4oW0FDX1BST0dfTk1dLCBbXSkKLSAKLSsjIF9MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCCi0rIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKyMgaG93IHRvIGRldGVybWluZSB0aGUgbmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkKLSsjIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIGxpbmsgbGlicmFyeS4KLSsjICAtLSBQT1JUTUUgZmlsbCBpbiB3aXRoIHRoZSBkeW5hbWljIGxpYnJhcnkgY2hhcmFjdGVyaXN0aWNzCi0rbTRfZGVmdW4oW19MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCXSwKLStbbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKQotK200X3JlcXVpcmUoW19MVF9ERUNMX09CSkRVTVBdKQotK200X3JlcXVpcmUoW19MVF9ERUNMX0RMTFRPT0xdKQotK0FDX0NBQ0hFX0NIRUNLKFtob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzXSwKLStsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCwKLStbbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCi0rCi0rY2FzZSAkaG9zdF9vcyBpbgotK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKLSsgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKLSsgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgotKyAgKi0taWRlbnRpZnktc3RyaWN0KikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCi0rICAgIDs7Ci0rICAqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKLSsgICAgOzsKLSsgIGVzYWMKLSsgIDs7Ci0rKikKLSsgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgotKyAgOzsKLStlc2FjCi0rXSkKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCi0rCi0rX0xUX0RFQ0woW10sIFtzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZF0sIFsxXSwKLSsgICAgW0NvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXNdKQotK10pIyBfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQgotKwotKwotKyMgX0xUX1BBVEhfTUFOSUZFU1RfVE9PTAotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKyMgbG9jYXRlIHRoZSBtYW5pZmVzdCB0b29sCi0rbTRfZGVmdW4oW19MVF9QQVRIX01BTklGRVNUX1RPT0xdLAotK1tBQ19DSEVDS19UT09MKE1BTklGRVNUX1RPT0wsIG10LCA6KQotK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10Ci0rQUNfQ0FDSEVfQ0hFQ0soW2lmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbF0sIFtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2xdLAotKyAgW2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mQVNfTUVTU0FHRV9MT0dfRkQKLSsgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKLSsgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAotKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCi0rICBmaQotKyAgcm0gLWYgY29uZnRlc3QqXSkKLStpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgotKyAgTUFOSUZFU1RfVE9PTD06Ci0rZmkKLStfTFRfREVDTChbXSwgW01BTklGRVNUX1RPT0xdLCBbMV0sIFtNYW5pZmVzdCB0b29sXSlkbmwKLStdKSMgX0xUX1BBVEhfTUFOSUZFU1RfVE9PTAotKwotIAotICMgTFRfTElCX00KLSAjIC0tLS0tLS0tCi1AQCAtMzQwMyw4ICszNjMwLDggQEAgZXNhYwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCi0gCi0gIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKGxpYltbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKVtbIF1dKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKVtbIF1dKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChsaWJbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotIAotICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgotIG9wdF9jcj0KLUBAIC0zNDQwLDYgKzM2NjcsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCi0gICBlbHNlCi0gICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbWwkgXV1cKCRzeW1jb2RlJHN5bWNvZGUqXClbWwkgXV1bWwkgXV0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCi0gICBmaQotKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgotIAotICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCi0gICBwaXBlX3dvcmtzPW5vCi1AQCAtMzQ3Myw2ICszNzAxLDE4IEBAIF9MVF9FT0YKLSAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAotKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLwotKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCi0rLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCi0rICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLwotKyMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVAotKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKLSsvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KLSsjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVCBjb25zdAotKyNlbmRpZgotKwotICNpZmRlZiBfX2NwbHVzcGx1cwotIGV4dGVybiAiQyIgewotICNlbmRpZgotQEAgLTM0ODQsNyArMzcyNCw3IEBAIF9MVF9FT0YKLSAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKLSAKLSAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCi0tY29uc3Qgc3RydWN0IHsKLStMVEAmdEBfRExTWU1fQ09OU1Qgc3RydWN0IHsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICB2b2lkICAgICAgICphZGRyZXNzOwotIH0KLUBAIC0zNTEwLDE1ICszNzUwLDE1IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gX0xUX0VPRgotIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCi0gCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0Ci0tCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKLS0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKLSsJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUwotKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUwotIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCi0gCSAgQ0ZMQUdTPSIkQ0ZMQUdTJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKSIKLSAJICBpZiBBQ19UUllfRVZBTChhY19saW5rKSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiZBU19NRVNTQUdFX0xPR19GRAotIAlmaQotQEAgLTM1NTEsNiArMzc5MSwxMyBAQCBlbHNlCi0gICBBQ19NU0dfUkVTVUxUKG9rKQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tbQF1dRklMRScgPi9kZXYvbnVsbDsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZmkKLSsKLSBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF9waXBlXSwgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGVdLCBbMV0sCi0gICAgIFtUYWtlIHRoZSBvdXRwdXQgb2Ygbm0gYW5kIHByb2R1Y2UgYSBsaXN0aW5nIG9mIHJhdyBzeW1ib2xzIGFuZCBDIG5hbWVzXSkKLSBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF90b19jZGVjbF0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbF0sIFsxXSwKLUBAIC0zNTYxLDYgKzM4MDgsOCBAQCBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc10sCi0gX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeF0sCi0gICAgIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4XSwgWzFdLAotICAgICBbVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWRdKQotK19MVF9ERUNMKFtdLCBbbm1fZmlsZV9saXN0X3NwZWNdLCBbMV0sCi0rICAgIFtTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yICROTV0pCi0gXSkgIyBfTFRfQ01EX0dMT0JBTF9TWU1CT0xTCi0gCi0gCi1AQCAtMzU3Miw3ICszODIxLDYgQEAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9Ci0gX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQotIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0KLSAKLS1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDXSkKLSBtNF9pZihbJDFdLCBbQ1hYXSwgWwotICAgIyBDKysgc3BlY2lmaWMgY2FzZXMgZm9yIHBpYywgc3RhdGljLCB3bCwgZXRjLgotICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLUBAIC0zNjc4LDYgKzM5MjYsMTIgQEAgbTRfaWYoWyQxXSwgW0NYWF0sIFsKLSAJICA7OwotIAllc2FjCi0gCTs7Ci0rICAgICAgbWluZ3cqIHwgY3lnd2luKiB8IG9zMiogfCBwdzMyKiB8IGNlZ2NjKikKLSsJIyBUaGlzIGhhY2sgaXMgc28gdGhhdCB0aGUgc291cmNlIGZpbGUgY2FuIHRlbGwgd2hldGhlciBpdCBpcyBiZWluZwotKwkjIGJ1aWx0IGZvciBpbmNsdXNpb24gaW4gYSBkbGwgKGFuZCBzaG91bGQgZXhwb3J0IHN5bWJvbHMgZm9yIGV4YW1wbGUpLgotKwltNF9pZihbJDFdLCBbR0NKXSwgW10sCi0rCSAgW19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLURETExfRVhQT1JUJ10pCi0rCTs7Ci0gICAgICAgZGd1eCopCi0gCWNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gCSAgZWMrKyopCi1AQCAtMzgzMCw3ICs0MDg0LDcgQEAgbTRfaWYoWyQxXSwgW0NYWF0sIFsKLSAJOzsKLSAgICAgICBzb2xhcmlzKikKLSAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0JICBDQyopCi0rCSAgQ0MqIHwgc3VuQ0MqKQotIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKwotIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKLSAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi1AQCAtNDA1Myw2ICs0MzA3LDEyIEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCi0gCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLS1zaGFyZWQnCi0gCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLS1zdGF0aWMnCi0gCTs7Ci0rICAgICAgbmFnZm9yKikKLSsJIyBOQUcgRm9ydHJhbiBjb21waWxlcgotKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLC1XbCwsJwotKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1QSUMnCi0rCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCi0rCTs7Ci0gICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQotICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKLSAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC00MTE1LDcgKzQzNzUsNyBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWwotICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCi0gICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKLSAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKLSsgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCi0gCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctUW9wdGlvbiBsZCAnOzsKLSAgICAgICAqKQotIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCc7OwotQEAgLTQxNzIsOSArNDQzMiwxMSBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0iJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKUAmdEBtNF9pZihbJDFdLFtdLFsgLURQSUNdLFttNF9pZihbJDFdLFtDWFhdLFsgLURQSUNdLFtdKV0pIgotICAgICA7OwotIGVzYWMKLS1BQ19NU0dfUkVTVUxUKFskX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpXSkKLS1fTFRfVEFHREVDTChbd2xdLCBbbHRfcHJvZ19jb21waWxlcl93bF0sIFsxXSwKLS0JW0hvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXJdKQotKwotK0FDX0NBQ0hFX0NIRUNLKFtmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQ10sCi0rICBbX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpXSwKLSsgIFtfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9JF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKV0pCi0rX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSRfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljLCAkMSkKLSAKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTQxOTMsNiArNDQ1NSw4IEBAIGZpCi0gX0xUX1RBR0RFQ0woW3BpY19mbGFnXSwgW2x0X3Byb2dfY29tcGlsZXJfcGljXSwgWzFdLAotIAlbQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzXSkKLSAKLStfTFRfVEFHREVDTChbd2xdLCBbbHRfcHJvZ19jb21waWxlcl93bF0sIFsxXSwKLSsJW0hvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXJdKQotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0gIwotQEAgLTQyMTMsNiArNDQ3Nyw3IEBAIF9MVF9UQUdERUNMKFtsaW5rX3N0YXRpY19mbGFnXSwgW2x0X3Byb2dfY29tcGlsZXJfc3RhdGljXSwgWzFdLAotIG00X2RlZnVuKFtfTFRfTElOS0VSX1NITElCU10sCi0gW0FDX1JFUVVJUkUoW0xUX1BBVEhfTERdKWRubAotIEFDX1JFUVVJUkUoW0xUX1BBVEhfTk1dKWRubAotK200X3JlcXVpcmUoW19MVF9QQVRIX01BTklGRVNUX1RPT0xdKWRubAotIG00X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAotIG00X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKLSBtNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAotQEAgLTQyMjEsNiArNDQ4Niw3IEBAIG00X3JlcXVpcmUoW19MVF9UQUdfQ09NUElMRVJdKWRubAotIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzXSkKLSBtNF9pZihbJDFdLCBbQ1hYXSwgWwotICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionXQotICAgY2FzZSAkaG9zdF9vcyBpbgotICAgYWl4W1s0LTldXSopCi0gICAgICMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHdlIGRvbid0IHdhbnQgdGhlICItQyIgb3B0aW9uLgotQEAgLTQyMzUsMTUgKzQ1MDEsMjAgQEAgbTRfaWYoWyQxXSwgW0NYWF0sIFsKLSAgICAgOzsKLSAgIHB3MzIqKQotICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0iJGx0ZGxsX2NtZHMiCi0tICA7OwotKyAgICA7OwotICAgY3lnd2luKiB8IG1pbmd3KiB8IGNlZ2NjKikKLS0gICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87L14uKltbIF1dX19ubV9fL3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotLSAgOzsKLSsgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgY2wqKSA7OwotKyAgICAqKQotKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvO3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnXQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSAgICopCi0gICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0tICA7OwotKyAgICA7OwotICAgZXNhYwotLSAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKiddCi0gXSwgWwotICAgcnVucGF0aF92YXI9Ci0gICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9Ci1AQCAtNDQxMSw3ICs0NjgyLDggQEAgX0xUX0VPRgotICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAotICAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KLSAgICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKLS0gICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltbQUlUV11dW1sgXV0vcy8uKltbIF1dLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87cy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZSddCi0gCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi1AQCAtNDUxMCwxMiArNDc4MiwxMiBAQCBfTFRfRU9GCi0gCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotIAkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPQotIAkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPSctcnBhdGggJGxpYmRpcicKLS0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0rCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCi0gCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLS0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0rCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSAJICBmaQotIAkgIDs7Ci0gCWVzYWMKLUBAIC00NTI5LDggKzQ4MDEsOCBAQCBfTFRfRU9GCi0gCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCi0gCXdsYXJjPQotICAgICAgIGVsc2UKLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGZpCi0gICAgICAgOzsKLSAKLUBAIC00NTQ4LDggKzQ4MjAsOCBAQCBfTFRfRU9GCi0gCi0gX0xUX0VPRgotICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0gICAgICAgZmkKLUBAIC00NTk1LDggKzQ4NjcsOCBAQCBfTFRfRU9GCi0gCi0gICAgICopCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCi0gICAgICAgZmkKLUBAIC00NzI2LDcgKzQ5OTgsNyBAQCBfTFRfRU9GCi0gCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJwotICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAotKyAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKLSAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi0gICAgICAgZWxzZQotQEAgLTQ3MzcsNyArNTAwOSw3IEBAIF9MVF9FT0YKLSAJZWxzZQotIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAotKwkgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKLSAJIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi0gCSAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgotQEAgLTQ3ODEsMjAgKzUwNTMsNjMgQEAgX0xUX0VPRgotICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCi0gICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0tICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCi0tICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLS0gICAgICBsaWJleHQ9bGliCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0tICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0tICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotLSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0tICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCi0tICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLS0gICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotLSAgICAgIF9MVF9UQUdWQVIoZml4X3NyY2ZpbGVfcGF0aCwgJDEpPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKLS0gICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKLSsgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotKyAgICAgIGNsKikKLSsJIyBOYXRpdmUgTVNWQwotKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKLSsJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0rCV9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCi0rCV9MVF9UQUdWQVIoZmlsZV9saXN0X3NwZWMsICQxKT0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBlbHNlCi0rCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGZpfgotKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLSsJICBsaW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCi0rCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCi0rCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotKwlfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltbQUlUV11dW1sgXV0vcy8uKltbIF1dLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rCSMgRG9uJ3QgdXNlIHJhbmxpYgotKwlfTFRfVEFHVkFSKG9sZF9wb3N0aW5zdGFsbF9jbWRzLCAkMSk9J2NobW9kIDY0NCAkb2xkbGliJwotKwlfTFRfVEFHVkFSKHBvc3RsaW5rX2NtZHMsICQxKT0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+Ci0rCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgotKwkgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAqKQotKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCi0rCSAgICAgIDs7Ci0rCSAgZXNhY34KLSsJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgotKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOwotKwkgIGZpJwotKwk7OwotKyAgICAgICopCi0rCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgotKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKLSsJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotKwlfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKLSsJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLSsJX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0rCTs7Ci0rICAgICAgZXNhYwotICAgICAgIDs7Ci0gCi0gICAgIGRhcndpbiogfCByaGFwc29keSopCi1AQCAtNDgyOCw3ICs1MTQzLDcgQEAgX0xUX0VPRgotIAotICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLS0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKLSAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcwotICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCi1AQCAtNDgzNiw3ICs1MTUxLDcgQEAgX0xUX0VPRgotIAotICAgICBocHV4OSopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCi0gICAgICAgZWxzZQotIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBmaQotQEAgLTQ4NTIsNyArNTE2Nyw3IEBAIF9MVF9FT0YKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgZWxzZQotIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtNDg3NiwxMCArNTE5MSwxMCBAQCBfTFRfRU9GCi0gCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJaWE2NCopCi0tCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCSopCi0tCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAllc2FjCi0gICAgICAgZWxzZQotQEAgLTQ5MjYsMTYgKzUyNDEsMzEgQEAgX0xUX0VPRgotIAotICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90Ci0gCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKLSAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KLS0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCi0tICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCi0tICAgICAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW2ludCBmb28odm9pZCkge31dKV0sCi0tICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tICAgICAgICApCi0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgotKwlBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbF0sCi0rCSAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sXSwKLSsJICBbc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSsJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotKwkgICBBQ19MSU5LX0lGRUxTRSgKLSsJICAgICBbQUNfTEFOR19TT1VSQ0UoCi0rCSAgICAgICAgW0FDX0xBTkdfQ0FTRShbQ10sIFtbaW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfV1dLAotKwkJCSAgICAgIFtDKytdLCBbW2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH1dXSwKLSsJCQkgICAgICBbRm9ydHJhbiA3N10sIFtbCi0rICAgICAgc3Vicm91dGluZSBmb28KLSsgICAgICBlbmRdXSwKLSsJCQkgICAgICBbRm9ydHJhbl0sIFtbCi0rICAgICAgc3Vicm91dGluZSBmb28KLSsgICAgICBlbmRdXSldKV0sCi0rCSAgICAgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXNdLAotKwkgICAgICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm9dKQotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyJdKQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC01MDIwLDcgKzUzNTAsNyBAQCBfTFRfRU9GCi0gICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZwotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC01MDM5LDkgKzUzNjksOSBAQCBfTFRfRU9GCi0gICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXogZGVmcycKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAl3bGFyYz0nJHt3bH0nCi0tCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAgICAgICBlbHNlCi0gCWNhc2UgYCRDQyAtViAyPiYxYCBpbgotIAkqIkNvbXBpbGVycyA1LjAiKikKLUBAIC01MzEzLDggKzU2NDMsNiBAQCBfTFRfVEFHREVDTChbXSwgW2luaGVyaXRfcnBhdGhdLCBbMF0sCi0gICAgIHRvIHJ1bnRpbWUgcGF0aCBsaXN0XSkKLSBfTFRfVEFHREVDTChbXSwgW2xpbmtfYWxsX2RlcGxpYnNdLCBbMF0sCi0gICAgIFtXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXNdKQotLV9MVF9UQUdERUNMKFtdLCBbZml4X3NyY2ZpbGVfcGF0aF0sIFsxXSwKLS0gICAgW0ZpeCB0aGUgc2hlbGwgdmFyaWFibGUgJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlcl0pCi0gX0xUX1RBR0RFQ0woW10sIFthbHdheXNfZXhwb3J0X3N5bWJvbHNdLCBbMF0sCi0gICAgIFtTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWRdKQotIF9MVF9UQUdERUNMKFtdLCBbZXhwb3J0X3N5bWJvbHNfY21kc10sIFsyXSwKLUBAIC01MzI1LDYgKzU2NTMsOCBAQCBfTFRfVEFHREVDTChbXSwgW2luY2x1ZGVfZXhwc3ltc10sIFsxXSwKLSAgICAgW1N5bWJvbHMgdGhhdCBtdXN0IGFsd2F5cyBiZSBleHBvcnRlZF0pCi0gX0xUX1RBR0RFQ0woW10sIFtwcmVsaW5rX2NtZHNdLCBbMl0sCi0gICAgIFtDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlc10pCi0rX0xUX1RBR0RFQ0woW10sIFtwb3N0bGlua19jbWRzXSwgWzJdLAotKyAgICBbQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtc10pCi0gX0xUX1RBR0RFQ0woW10sIFtmaWxlX2xpc3Rfc3BlY10sIFsxXSwKLSAgICAgW1NwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlc10pCi0gZG5sIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCi1AQCAtNTQyNiw2ICs1NzU2LDcgQEAgQ0M9IiRsdF9zYXZlX0NDIgotIG00X2RlZnVuKFtfTFRfTEFOR19DWFhfQ09ORklHXSwKLSBbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCi0gbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAotK200X3JlcXVpcmUoW19MVF9QQVRIX01BTklGRVNUX1RPT0xdKWRubAotIGlmIHRlc3QgLW4gIiRDWFgiICYmICggdGVzdCAiWCRDWFgiICE9ICJYbm8iICYmCi0gICAgICggKHRlc3QgIlgkQ1hYIiA9ICJYZysrIiAmJiBgZysrIC12ID4vZGV2L251bGwgMj4mMWAgKSB8fAotICAgICAodGVzdCAiWCRDWFgiICE9ICJYZysrIikpKSA7IHRoZW4KLUBAIC01NDg3LDYgKzU4MTgsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotIAotICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLSAgIGx0X3NhdmVfQ0M9JENDCi0rICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gICBsdF9zYXZlX0xEPSRMRAotICAgbHRfc2F2ZV9HQ0M9JEdDQwotICAgR0NDPSRHWFgKLUBAIC01NTA0LDYgKzU4MzYsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotICAgZmkKLSAgIHRlc3QgLXogIiR7TERDWFgrc2V0fSIgfHwgTEQ9JExEQ1hYCi0gICBDQz0ke0NYWC0iYysrIn0KLSsgIENGTEFHUz0kQ1hYRkxBR1MKLSAgIGNvbXBpbGVyPSRDQwotICAgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwotICAgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQotQEAgLTU2NjcsNyArNjAwMCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gICAgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJwotICAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4gZW1wdHkKLSAgICAgICAgICAgIyBleGVjdXRhYmxlLgotLSAgICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAotKyAgICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQotICAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKLSAKLSAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCi1AQCAtNTY3OSw3ICs2MDEyLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAgICAgICAgICAgZWxzZQotIAkgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gCSAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tCSAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAotKwkgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKLSAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKLSAJICAgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KLUBAIC01NzIxLDI5ICs2MDU0LDc1IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gICAgICAgICA7OwotIAotICAgICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLS0gICAgICAgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCi0tICAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKLS0gICAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCi0tICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLS0gICAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KLS0gICAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcwotLQotLSAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0tICAgICAgICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKLS0gICAgICAgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KLS0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCi0tCSAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0tICAgICAgICAgIGVsc2UKLS0JICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotLQkgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKLS0gICAgICAgICAgZml+Ci0tICAgICAgICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLS0gICAgICAgIGVsc2UKLS0gICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotLSAgICAgICAgZmkKLS0gICAgICAgIDs7Ci0rCWNhc2UgJEdYWCwkY2NfYmFzZW5hbWUgaW4KLSsJLGNsKiB8IG5vLGNsKikKLSsJICAjIE5hdGl2ZSBNU1ZDCi0rCSAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcwotKwkgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCi0rCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCi0rCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCi0rCSAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT15ZXMKLSsJICBfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9J0AnCi0rCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJICBsaWJleHQ9bGliCi0rCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCSAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgICAkU0VEIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICAgIGVsc2UKLSsJICAgICAgJFNFRCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgICBmaX4KLSsJICAgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLSsJICAgIGxpbmtuYW1lcz0nCi0rCSAgIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkgICMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCi0rCSAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0rCSAgIyBEb24ndCB1c2UgcmFubGliCi0rCSAgX0xUX1RBR1ZBUihvbGRfcG9zdGluc3RhbGxfY21kcywgJDEpPSdjaG1vZCA2NDQgJG9sZGxpYicKLSsJICBfTFRfVEFHVkFSKHBvc3RsaW5rX2NtZHMsICQxKT0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgotKwkgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICAgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICAgKi5leGV8Ki5FWEUpIDs7Ci0rCSAgICAgICopCi0rCQlsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCi0rCQlsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkJOzsKLSsJICAgIGVzYWN+Ci0rCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGx0X291dHB1dGZpbGUifgotKwkgICAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKLSsJICAgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgICBmaScKLSsJICA7OwotKwkqKQotKwkgICMgZysrCi0rCSAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKLSsJICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCi0rCSAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKLSsJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKLSsJICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCi0rCSAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCi0rCi0rCSAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotKwkgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQotKwkgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KLSsJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7Ci0rCSAgICBlbHNlCi0rCSAgICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotKwkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOwotKwkgICAgZml+Ci0rCSAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCi0rCSAgZWxzZQotKwkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotKwkgIGZpCi0rCSAgOzsKLSsJZXNhYwotKwk7OwotICAgICAgIGRhcndpbiogfCByaGFwc29keSopCi0gICAgICAgICBfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFUygkMSkKLSAJOzsKLUBAIC01ODE4LDcgKzYxOTcsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotICAgICAgICAgICAgIDs7Ci0gICAgICAgICAgICopCi0gICAgICAgICAgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KLS0gICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKyAgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgICAgICAgIGVsc2UKLSAgICAgICAgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAotICAgICAgICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubwotQEAgLTU4ODksMTAgKzYyNjgsMTAgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgICAgICAgICAgICA7OwotIAkgICAgICAgICAgaWE2NCopCi0tCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSsJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKLSAJICAgICAgICAgICAgOzsKLSAJICAgICAgICAgICopCi0tCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgICAgICAgICAgIDs7Ci0gCSAgICAgICAgZXNhYwotIAkgICAgICBmaQotQEAgLTU5MzMsOSArNjMxMiw5IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCi0gICAgICAgICAgICopCi0gCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgotIAkgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJICAgICAgZWxzZQotLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgLW8gJGxpYicKLSsJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJwotIAkgICAgICBmaQotIAkgICAgZmkKLSAJICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcwotQEAgLTYwMDUsMjAgKzYzODQsMjAgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAJICAgICAgX0xUX1RBR1ZBUihwcmVsaW5rX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2JqcyAkbGlib2JqcyAkY29tcGlsZV9kZXBsaWJzfgotLQkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAiJwotKwkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgIicKLSAJICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0gCQlybSAtcmYgJHRwbGRpcn4KLSAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9sZG9ianMkb2xkX2RlcGxpYnN+Ci0tCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgfgotKwkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGB+Ci0gCQkkUkFOTElCICRvbGRsaWInCi0gCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+Ci0gCQlybSAtcmYgJHRwbGRpcn4KLSAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgotLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKLSsJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJwotIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KLSAJCXJtIC1yZiAkdHBsZGlyfgotIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+Ci0tCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotIAkgICAgICA7OwotIAkgICAgKikgIyBWZXJzaW9uIDYgYW5kIGFib3ZlIHVzZSB3ZWFrIHN5bWJvbHMKLSAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCi1AQCAtNjIxMyw3ICs2NTkyLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAJICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJCSAgOzsKLSAJICAgICAgICAqKQotLQkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCQkgIDs7Ci0gCSAgICAgIGVzYWMKLSAKLUBAIC02MjU5LDcgKzY2MzgsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgotIAotICAgICAgIHNvbGFyaXMqKQotICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICAgICAgQ0MqKQotKyAgICAgICAgICBDQyogfCBzdW5DQyopCi0gCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCi0gICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywkMSk9eWVzCi0gCSAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtemRlZnMnCi1AQCAtNjMwMCw5ICs2Njc5LDkgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotIAkgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS16ICR7d2x9ZGVmcycKLSAJICAgICAgaWYgJENDIC0tdmVyc2lvbiB8ICRHUkVQIC12ICdeMlwuNycgPiAvZGV2L251bGw7IHRoZW4KLS0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJwotKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJwotIAkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+Ci0tCQkgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSsJCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKLSAKLSAJICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCi0gCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCi1AQCAtNjQzMSw2ICs2ODEwLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KLSAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgotIAotICAgQ0M9JGx0X3NhdmVfQ0MKLSsgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKLSAgIExEQ1hYPSRMRAotICAgTEQ9JGx0X3NhdmVfTEQKLSAgIEdDQz0kbHRfc2F2ZV9HQ0MKLUBAIC02NDQ1LDYgKzY4MjUsMjkgQEAgQUNfTEFOR19QT1AKLSBdKSMgX0xUX0xBTkdfQ1hYX0NPTkZJRwotIAotIAotKyMgX0xUX0ZVTkNfU1RSSVBOQU1FX0NORgotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKyMgZnVuY19zdHJpcG5hbWVfY25mIHByZWZpeCBzdWZmaXggbmFtZQotKyMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0rIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLSsjIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLSsjIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0rIwotKyMgVGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8gdGhlIChub24tWFNJKSB2ZXJzaW9uIG9mIGZ1bmNfc3RyaXBuYW1lLAotKyMgZXhjZXB0IHRoaXMgb25lIGNhbiBiZSB1c2VkIGJ5IG00IGNvZGUgdGhhdCBtYXkgYmUgZXhlY3V0ZWQgYnkgY29uZmlndXJlLAotKyMgcmF0aGVyIHRoYW4gdGhlIGxpYnRvb2wgc2NyaXB0LgotK200X2RlZnVuKFtfTFRfRlVOQ19TVFJJUE5BTUVfQ05GXSxbZG5sCi0rQUNfUkVRVUlSRShbX0xUX0RFQ0xfU0VEXSkKLStBQ19SRVFVSVJFKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0pCi0rZnVuY19zdHJpcG5hbWVfY25mICgpCi0rewotKyAgY2FzZSAkezJ9IGluCi0rICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotKyAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotKyAgZXNhYwotK30gIyBmdW5jX3N0cmlwbmFtZV9jbmYKLStdKSMgX0xUX0ZVTkNfU1RSSVBOQU1FX0NORgotKwotICMgX0xUX1NZU19ISURERU5fTElCREVQUyhbVEFHTkFNRV0pCi0gIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAjIEZpZ3VyZSBvdXQgImhpZGRlbiIgbGlicmFyeSBkZXBlbmRlbmNpZXMgZnJvbSB2ZXJib3NlCi1AQCAtNjQ1Myw2ICs2ODU2LDcgQEAgQUNfTEFOR19QT1AKLSAjIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KLSBtNF9kZWZ1bihbX0xUX1NZU19ISURERU5fTElCREVQU10sCi0gW200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAotK0FDX1JFUVVJUkUoW19MVF9GVU5DX1NUUklQTkFNRV9DTkZdKWRubAotICMgRGVwZW5kZW5jaWVzIHRvIHBsYWNlIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG9iamVjdCBiZWluZyBsaW5rZWQ6Ci0gX0xUX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpPQotIF9MVF9UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSk9Ci1AQCAtNjUwMyw2ICs2OTA3LDEzIEBAIHB1YmxpYyBjbGFzcyBmb28gewotIH07Ci0gX0xUX0VPRgotIF0pCi0rCi0rX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1M9JENGTEFHUwotK2Nhc2UgIiRDQyAkQ0ZMQUdTICIgaW4gIygKLSsqXCAtZmx0bypcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLWx0byIgOzsKLSsqXCAtZndob3ByKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8td2hvcHIiIDs7Ci0rZXNhYwotKwotIGRubCBQYXJzZSB0aGUgY29tcGlsZXIgb3V0cHV0IGFuZCBleHRyYWN0IHRoZSBuZWNlc3NhcnkKLSBkbmwgb2JqZWN0cywgbGlicmFyaWVzIGFuZCBsaWJyYXJ5IGZsYWdzLgotIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCi1AQCAtNjUxNCw3ICs2OTI1LDcgQEAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KLSAgIHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmU9bm8KLSAKLSAgIGZvciBwIGluIGBldmFsICIkb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQiYDsgZG8KLS0gICAgY2FzZSAkcCBpbgotKyAgICBjYXNlICR7cHJldn0ke3B9IGluCi0gCi0gICAgIC1MKiB8IC1SKiB8IC1sKikKLSAgICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KLUBAIC02NTIzLDEzICs2OTM0LDIyIEBAIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCi0gICAgICAgICAgIHRlc3QgJHAgPSAiLVIiOyB0aGVuCi0gCSBwcmV2PSRwCi0gCSBjb250aW51ZQotLSAgICAgICBlbHNlCi0tCSBwcmV2PQotICAgICAgICBmaQotIAotKyAgICAgICAjIEV4cGFuZCB0aGUgc3lzcm9vdCB0byBlYXNlIGV4dHJhY3RpbmcgdGhlIGRpcmVjdG9yaWVzIGxhdGVyLgotKyAgICAgICBpZiB0ZXN0IC16ICIkcHJldiI7IHRoZW4KLSsgICAgICAgICBjYXNlICRwIGluCi0rICAgICAgICAgLUwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1MJyAnJyAiJHAiOyBwcmV2PS1MOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKLSsgICAgICAgICAtUiopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLVInICcnICIkcCI7IHByZXY9LVI7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OwotKyAgICAgICAgIC1sKikgZnVuY19zdHJpcG5hbWVfY25mICctbCcgJycgIiRwIjsgcHJldj0tbDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7Ci0rICAgICAgICAgZXNhYwotKyAgICAgICBmaQotKyAgICAgICBjYXNlICRwIGluCi0rICAgICAgID0qKSBmdW5jX3N0cmlwbmFtZV9jbmYgJz0nICcnICIkcCI7IHA9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7Ci0rICAgICAgIGVzYWMKLSAgICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KLS0JIGNhc2UgJHAgaW4KLS0JIC1MKiB8IC1SKikKLSsJIGNhc2UgJHtwcmV2fSBpbgotKwkgLUwgfCAtUikKLSAJICAgIyBJbnRlcm5hbCBjb21waWxlciBsaWJyYXJ5IHBhdGhzIHNob3VsZCBjb21lIGFmdGVyIHRob3NlCi0gCSAgICMgcHJvdmlkZWQgdGhlIHVzZXIuICBUaGUgcG9zdGRlcHMgYWxyZWFkeSBjb21lIGFmdGVyIHRoZQotIAkgICAjIHVzZXIgc3VwcGxpZWQgbGlicyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgdGhlbS4KLUBAIC02NTQ5LDggKzY5NjksMTAgQEAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KLSAJICAgX0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpPSIke19MVF9UQUdWQVIocG9zdGRlcHMsICQxKX0gJHtwcmV2fSR7cH0iCi0gCSBmaQotICAgICAgICBmaQotKyAgICAgICBwcmV2PQotICAgICAgICA7OwotIAotKyAgICAqLmx0by4kb2JqZXh0KSA7OyAjIElnbm9yZSBHQ0MgTFRPIG9iamVjdHMKLSAgICAgKi4kb2JqZXh0KQotICAgICAgICAjIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSB0ZXN0IG9iamVjdCBmaWxlIG9ubHkgc2hvd3MgdXAKLSAgICAgICAgIyBvbmNlIGluIHRoZSBjb21waWxlciBvdXRwdXQuCi1AQCAtNjU4Niw2ICs3MDA4LDcgQEAgZWxzZQotIGZpCi0gCi0gJFJNIC1mIGNvbmZlc3QuJG9iamV4dAotK0NGTEFHUz0kX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1MKLSAKLSAjIFBPUlRNRTogb3ZlcnJpZGUgYWJvdmUgdGVzdCBvbiBzeXN0ZW1zIHdoZXJlIGl0IGlzIGJyb2tlbgotIG00X2lmKFskMV0sIFtDWFhdLAotQEAgLTY2MjIsNyArNzA0NSw3IEBAIGxpbnV4KikKLSAKLSBzb2xhcmlzKikKLSAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0tICBDQyopCi0rICBDQyogfCBzdW5DQyopCi0gICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcwotICAgICAjIGluY29tcGF0aWJsZSB3aXRoIHRoZSBDc3RkIGxpYnJhcnkuIEF2b2lkIHNwZWNpZnlpbmcKLSAgICAgIyBpdCBpZiBpdCdzIGluIENYWEZMQUdTLiBJZ25vcmUgbGliQ3J1biBhcwotQEAgLTY3MzUsNyArNzE1OCw5IEBAIGlmIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllczsgdGhlbgotICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLSAgIGx0X3NhdmVfQ0M9IiRDQyIKLSAgIGx0X3NhdmVfR0NDPSRHQ0MKLSsgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAgIENDPSR7Rjc3LSJmNzcifQotKyAgQ0ZMQUdTPSRGRkxBR1MKLSAgIGNvbXBpbGVyPSRDQwotICAgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwotICAgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQotQEAgLTY3ODksNiArNzIxNCw3IEBAIGlmIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllczsgdGhlbgotIAotICAgR0NDPSRsdF9zYXZlX0dDQwotICAgQ0M9IiRsdF9zYXZlX0NDIgotKyAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCi0gZmkgIyB0ZXN0ICIkX2x0X2Rpc2FibGVfRjc3IiAhPSB5ZXMKLSAKLSBBQ19MQU5HX1BPUAotQEAgLTY4NjUsNyArNzI5MSw5IEBAIGlmIHRlc3QgIiRfbHRfZGlzYWJsZV9GQyIgIT0geWVzOyB0aGVuCi0gICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgotICAgbHRfc2F2ZV9DQz0iJENDIgotICAgbHRfc2F2ZV9HQ0M9JEdDQwotKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwotICAgQ0M9JHtGQy0iZjk1In0KLSsgIENGTEFHUz0kRkNGTEFHUwotICAgY29tcGlsZXI9JENDCi0gICBHQ0M9JGFjX2N2X2ZjX2NvbXBpbGVyX2dudQotIAotQEAgLTY5MjEsNyArNzM0OSw4IEBAIGlmIHRlc3QgIiRfbHRfZGlzYWJsZV9GQyIgIT0geWVzOyB0aGVuCi0gICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKLSAKLSAgIEdDQz0kbHRfc2F2ZV9HQ0MKLS0gIENDPSIkbHRfc2F2ZV9DQyIKLSsgIENDPSRsdF9zYXZlX0NDCi0rICBDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCi0gZmkgIyB0ZXN0ICIkX2x0X2Rpc2FibGVfRkMiICE9IHllcwotIAotIEFDX0xBTkdfUE9QCi1AQCAtNjk1OCwxMCArNzM4NywxMiBAQCBfTFRfQ09NUElMRVJfQk9JTEVSUExBVEUKLSBfTFRfTElOS0VSX0JPSUxFUlBMQVRFCi0gCi0gIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLS1sdF9zYXZlX0NDPSIkQ0MiCi0rbHRfc2F2ZV9DQz0kQ0MKLStsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gbHRfc2F2ZV9HQ0M9JEdDQwotIEdDQz15ZXMKLSBDQz0ke0dDSi0iZ2NqIn0KLStDRkxBR1M9JEdDSkZMQUdTCi0gY29tcGlsZXI9JENDCi0gX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQwotIF9MVF9UQUdWQVIoTEQsICQxKT0iJExEIgotQEAgLTY5OTIsNyArNzQyMyw4IEBAIGZpCi0gQUNfTEFOR19SRVNUT1JFCi0gCi0gR0NDPSRsdF9zYXZlX0dDQwotLUNDPSIkbHRfc2F2ZV9DQyIKLStDQz0kbHRfc2F2ZV9DQwotK0NGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKLSBdKSMgX0xUX0xBTkdfR0NKX0NPTkZJRwotIAotIAotQEAgLTcwMjcsOSArNzQ1OSwxMSBAQCBfTFRfTElOS0VSX0JPSUxFUlBMQVRFCi0gCi0gIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KLSBsdF9zYXZlX0NDPSIkQ0MiCi0rbHRfc2F2ZV9DRkxBR1M9JENGTEFHUwotIGx0X3NhdmVfR0NDPSRHQ0MKLSBHQ0M9Ci0gQ0M9JHtSQy0id2luZHJlcyJ9Ci0rQ0ZMQUdTPQotIGNvbXBpbGVyPSRDQwotIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKLSBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCi1AQCAtNzA0Miw3ICs3NDc2LDggQEAgZmkKLSAKLSBHQ0M9JGx0X3NhdmVfR0NDCi0gQUNfTEFOR19SRVNUT1JFCi0tQ0M9IiRsdF9zYXZlX0NDIgotK0NDPSRsdF9zYXZlX0NDCi0rQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUwotIF0pIyBfTFRfTEFOR19SQ19DT05GSUcKLSAKLSAKLUBAIC03MTAxLDYgKzc1MzYsMTUgQEAgX0xUX0RFQ0woW10sIFtPQkpEVU1QXSwgWzFdLCBbQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXJdKQotIEFDX1NVQlNUKFtPQkpEVU1QXSkKLSBdKQotIAotKyMgX0xUX0RFQ0xfRExMVE9PTAotKyMgLS0tLS0tLS0tLS0tLS0tLQotKyMgRW5zdXJlIERMTFRPT0wgdmFyaWFibGUgaXMgc2V0LgotK200X2RlZnVuKFtfTFRfREVDTF9ETExUT09MXSwKLStbQUNfQ0hFQ0tfVE9PTChETExUT09MLCBkbGx0b29sLCBmYWxzZSkKLSt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi0rX0xUX0RFQ0woW10sIFtETExUT09MXSwgWzFdLCBbRExMIGNyZWF0aW9uIHByb2dyYW1dKQotK0FDX1NVQlNUKFtETExUT09MXSkKLStdKQotIAotICMgX0xUX0RFQ0xfU0VECi0gIyAtLS0tLS0tLS0tLS0KLUBAIC03MTk0LDggKzc2MzgsOCBAQCBtNF9kZWZ1bihbX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTXSwKLSAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcwotIHhzaV9zaGVsbD1ubwotICggX2x0X2R1bW15PSJhL2IvYyIKLS0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0tICAgICAgPSBjLGEvYiwsIFwKLSsgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCi0rICAgICAgPSBjLGEvYixiL2MsIFwKLSAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAotICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAotICAgJiYgeHNpX3NoZWxsPXllcwotQEAgLTcyMzQsMjA2ICs3Njc4LDE2MiBAQCBfTFRfREVDTChbTkwyU1BdLCBbbHRfTkwyU1BdLCBbMV0sIFt0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzXSlkbmwKLSBdKSMgX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTCi0gCi0gCi0tIyBfTFRfUFJPR19YU0lfU0hFTExGTlMKLS0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQotLSMgQm91cm5lIGFuZCBYU0kgY29tcGF0aWJsZSB2YXJpYW50cyBvZiBzb21lIHVzZWZ1bCBzaGVsbCBmdW5jdGlvbnMuCi0tbTRfZGVmdW4oW19MVF9QUk9HX1hTSV9TSEVMTEZOU10sCi0tW2Nhc2UgJHhzaV9zaGVsbCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0tIyBjYWxsOgotLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0tIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0tIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0tIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0tIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0tICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Ci0tfQotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQotLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0tICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICRbKl0gKSkKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLS19Ci0rIyBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFIChGVU5DTkFNRSwgUkVQTEFDRU1FTlQtQk9EWSkKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKyMgSW4gYCRjZmdmaWxlJywgbG9vayBmb3IgZnVuY3Rpb24gRlVOQ05BTUUgZGVsaW1pdGVkIGJ5IGBeRlVOQ05BTUUgKCkkJyBhbmQKLSsjICdefSBGVU5DTkFNRSAnLCBhbmQgcmVwbGFjZSBpdHMgYm9keSB3aXRoIFJFUExBQ0VNRU5ULUJPRFkuCi0rbTRfZGVmdW4oW19MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0VdLAotK1tkbmwgewotK3NlZCAtZSAnL14kMSAoKSQvLC9efSAjICQxIC9jXAotKyQxICgpXAotK3tcCi0rbTRfYnBhdHN1YnN0cyhbJDJdLCBbJF0sIFtcXF0sIFteXChbCSBdXCldLCBbXFxcMV0pCi0rfSAjIEV4dGVuZGVkLXNoZWxsICQxIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rXSkKLSAKLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KLS0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKLSAKLS0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0tIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tZnVuY19kaXJuYW1lICgpCi0tewotLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLS0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKLS0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0tICBlbHNlCi0tICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLS0gIGZpCi0tfQotKyMgX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOUwotKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotKyMgUmVwbGFjZSBleGlzdGluZyBwb3J0YWJsZSBpbXBsZW1lbnRhdGlvbnMgb2Ygc2V2ZXJhbCBzaGVsbCBmdW5jdGlvbnMgd2l0aAotKyMgZXF1aXZhbGVudCBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbnMgd2hlcmUgdGhvc2UgZmVhdHVyZXMgYXJlIGF2YWlsYWJsZS4uCi0rbTRfZGVmdW4oW19MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlNdLAotK1tpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCi0rICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Rpcm5hbWVdLCBbZG5sCi0rICAgIGNhc2UgJHsxfSBpbgotKyAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7Ci0rICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotKyAgICBlc2FjXSkKLSsKLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYmFzZW5hbWVdLCBbZG5sCi0rICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJdKQotKwotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZV0sIFtkbmwKLSsgICAgY2FzZSAkezF9IGluCi0rICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLSsgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0rICAgIGVzYWMKLSsgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99Il0pCi0gCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCi0tfQotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zdHJpcG5hbWVdLCBbZG5sCi0rICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLSsgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgotKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifV0pCi0gCi0tZG5sIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUKLS1kbmwgQSBwb3J0YWJsZSB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24gaXMgYWxyZWFkeSBkZWZpbmVkIGluIGdlbmVyYWwubTRzaAotLWRubCBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciBpdCBoZXJlLgotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zcGxpdF9sb25nX29wdF0sIFtkbmwKLSsgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9Ci0rICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1dKQotIAotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICBjYXNlICR7Mn0gaW4KLS0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLS0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotLSAgZXNhYwotLX0KLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3BsaXRfc2hvcnRfb3B0XSwgW2RubAotKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fQotKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XSkKLSAKLS0jIHNlZCBzY3JpcHRzOgotLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtbXj1dXSpcKT0uKi9cMS87cScKLS1teV9zZWRfbG9uZ19hcmc9JzFzL14tW1tePV1dKj0vLycKLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfbG8yb10sIFtkbmwKLSsgICAgY2FzZSAkezF9IGluCi0rICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLSsgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKLSsgICAgZXNhY10pCi0gCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0tfQotKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY194Zm9ybV0sIFsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb10pCi0gCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAotLX0KLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXJpdGhdLCBbICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkWypdICkpXSkKLSAKLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLltbXi5dXSokLy5sby8nYAotLX0KLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfbGVuXSwgWyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1dKQotK2ZpCi0gCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJFtAXSJgCi0tfQotK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXBwZW5kXSwgWyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXSkKLSAKLS0jIGZ1bmNfbGVuIHN0cmluZwotLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KLS1mdW5jX2xlbiAoKQotLXsKLS0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJFsxXSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotLX0KLSsgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXBwZW5kX3F1b3RlZF0sIFtkbmwKLSsgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSIKLStkbmwgbTQgZXhwYW5zaW9uIHR1cm5zIFxcXFwgaW50byBcXCwgYW5kIHRoZW4gdGhlIHNoZWxsIGV2YWwgdHVybnMgdGhhdCBpbnRvIFwKLSsgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJdKQotIAotLV9MVF9FT0YKLS1lc2FjCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbW2EtekEtWl9dXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStlbHNlCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW1thLXpBLVpfXV1cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStmaQotIAotLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCi0rICBBQ19NU0dfV0FSTihbVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZV0pCi0rZmkKLStdKQotIAotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkWzFdKz1cJFsyXSIKLS19Ci0tX0xUX0VPRgotKyMgX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlMKLSsjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0rIyBEZXRlcm1pbmUgd2hpY2ggZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHNob3VsZCBiZSB1c2VkIGJ5Ci0rIyBmdW5jX3RvX2hvc3RfZmlsZSAoYW5kLCBpbXBsaWNpdGx5LCBieSBmdW5jX3RvX2hvc3RfcGF0aCkuICBUaGVzZSBhcmUgbmVlZGVkCi0rIyBmb3IgY2VydGFpbiBjcm9zcy1jb21waWxlIGNvbmZpZ3VyYXRpb25zIGFuZCBuYXRpdmUgbWluZ3cuCi0rbTRfZGVmdW4oW19MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TXSwKLStbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAotK0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9CVUlMRF0pZG5sCi0rQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXRdKQotK0FDX0NBQ0hFX1ZBTChsdF9jdl90b19ob3N0X2ZpbGVfY21kLAotK1tjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSAgICAgOzsKLS0gICopCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiRbMV09XCQkWzFdXCRbMl0iCi0tfQotLQotLV9MVF9FT0YKLSsgICotKi1jeWd3aW4qICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSAgICAgOzsKLS0gIGVzYWMKLSsgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCi0rICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICA7OwotK2VzYWMKLStdKQotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLStBQ19NU0dfUkVTVUxUKFskbHRfY3ZfdG9faG9zdF9maWxlX2NtZF0pCi0rX0xUX0RFQ0woW3RvX2hvc3RfZmlsZV9jbWRdLCBbbHRfY3ZfdG9faG9zdF9maWxlX2NtZF0sCi0rICAgICAgICAgWzBdLCBbY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXRdKWRubAotKwotK0FDX01TR19DSEVDS0lORyhbaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdF0pCi0rQUNfQ0FDSEVfVkFMKGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQsCi0rWyNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotIF0pCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK0FDX01TR19SRVNVTFQoWyRsdF9jdl90b190b29sX2ZpbGVfY21kXSkKLStfTFRfREVDTChbdG9fdG9vbF9maWxlX2NtZF0sIFtsdF9jdl90b190b29sX2ZpbGVfY21kXSwKLSsgICAgICAgICBbMF0sIFtjb252ZXJ0ICRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0XSlkbmwKLStdKSMgX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlMKLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDk1MDNlYzg1ZDcuLjcwZTg1NmUwNjUgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTEsMTAgKzEsOSBAQAotLSMgR2VuZXJhdGVkIGZyb20gbHRtYWluLm00c2guCi0gCi0tIyBsaWJ0b29sIChHTlUgbGlidG9vbCAxLjMxMzQgMjAwOS0xMS0yOSkgMi4yLjdhCi0rIyBsaWJ0b29sIChHTlUgbGlidG9vbCkgMi40Ci0gIyBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0IDxnb3JkQGdudS5haS5taXQuZWR1PiwgMTk5NgotIAotICMgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LCAyMDA2LAotLSMgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0gIyBUaGlzIGlzIGZyZWUgc29mdHdhcmU7IHNlZSB0aGUgc291cmNlIGZvciBjb3B5aW5nIGNvbmRpdGlvbnMuICBUaGVyZSBpcyBOTwotICMgd2FycmFudHk7IG5vdCBldmVuIGZvciBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuCi0gCi1AQCAtMzgsNyArMzcsNiBAQAotICMgICAtbiwgLS1kcnktcnVuICAgICAgICAgICAgZGlzcGxheSBjb21tYW5kcyB3aXRob3V0IG1vZGlmeWluZyBhbnkgZmlsZXMKLSAjICAgICAgIC0tZmVhdHVyZXMgICAgICAgICAgIGRpc3BsYXkgYmFzaWMgY29uZmlndXJhdGlvbiBpbmZvcm1hdGlvbiBhbmQgZXhpdAotICMgICAgICAgLS1tb2RlPU1PREUgICAgICAgICAgdXNlIG9wZXJhdGlvbiBtb2RlIE1PREUKLS0jICAgICAgIC0tbm8tZmluaXNoICAgICAgICAgIGxldCBpbnN0YWxsIG1vZGUgYXZvaWQgZmluaXNoIGNvbW1hbmRzCi0gIyAgICAgICAtLXByZXNlcnZlLWR1cC1kZXBzICBkb24ndCByZW1vdmUgZHVwbGljYXRlIGRlcGVuZGVuY3kgbGlicmFyaWVzCi0gIyAgICAgICAtLXF1aWV0LCAtLXNpbGVudCAgICBkb24ndCBwcmludCBpbmZvcm1hdGlvbmFsIG1lc3NhZ2VzCi0gIyAgICAgICAtLW5vLXF1aWV0LCAtLW5vLXNpbGVudAotQEAgLTcxLDE3ICs2OSwxOSBAQAotICMgICAgICAgICBjb21waWxlcjoJCSRMVENDCi0gIyAgICAgICAgIGNvbXBpbGVyIGZsYWdzOgkJJExUQ0ZMQUdTCi0gIyAgICAgICAgIGxpbmtlcjoJCSRMRCAoZ251PyAkd2l0aF9nbnVfbGQpCi0tIyAgICAgICAgICRwcm9nbmFtZToJKEdOVSBsaWJ0b29sIDEuMzEzNCAyMDA5LTExLTI5KSAyLjIuN2EKLSsjICAgICAgICAgJHByb2duYW1lOgkoR05VIGxpYnRvb2wpIDIuNAotICMgICAgICAgICBhdXRvbWFrZToJJGF1dG9tYWtlX3ZlcnNpb24KLSAjICAgICAgICAgYXV0b2NvbmY6CSRhdXRvY29uZl92ZXJzaW9uCi0gIwotICMgUmVwb3J0IGJ1Z3MgdG8gPGJ1Zy1saWJ0b29sQGdudS5vcmc+LgotKyMgR05VIGxpYnRvb2wgaG9tZSBwYWdlOiA8aHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnRvb2wvPi4KLSsjIEdlbmVyYWwgaGVscCB1c2luZyBHTlUgc29mdHdhcmU6IDxodHRwOi8vd3d3LmdudS5vcmcvZ2V0aGVscC8+LgotIAotIFBST0dSQU09bGlidG9vbAotIFBBQ0tBR0U9bGlidG9vbAotLVZFUlNJT049Mi4yLjdhCi0tVElNRVNUQU1QPSIgMS4zMTM0IDIwMDktMTEtMjkiCi0tcGFja2FnZV9yZXZpc2lvbj0xLjMxMzQKLStWRVJTSU9OPTIuNAotK1RJTUVTVEFNUD0iIgotK3BhY2thZ2VfcmV2aXNpb249MS4zMjkzCi0gCi0gIyBCZSBCb3VybmUgY29tcGF0aWJsZQotIGlmIHRlc3QgLW4gIiR7WlNIX1ZFUlNJT04rc2V0fSIgJiYgKGVtdWxhdGUgc2gpID4vZGV2L251bGwgMj4mMTsgdGhlbgotQEAgLTEwNiw5ICsxMDYsNiBAQCBfTFRFQ0hPX0VPRicKLSB9Ci0gCi0gIyBOTFMgbnVpc2FuY2VzOiBXZSBzYXZlIHRoZSBvbGQgdmFsdWVzIHRvIHJlc3RvcmUgZHVyaW5nIGV4ZWN1dGUgbW9kZS4KLS0jIE9ubHkgc2V0IExBTkcgYW5kIExDX0FMTCB0byBDIGlmIGFscmVhZHkgc2V0LgotLSMgVGhlc2UgbXVzdCBub3QgYmUgc2V0IHVuY29uZGl0aW9uYWxseSBiZWNhdXNlIG5vdCBhbGwgc3lzdGVtcyB1bmRlcnN0YW5kCi0tIyBlLmcuIExBTkc9QyAobm90YWJseSBTQ08pLgotIGx0X3VzZXJfbG9jYWxlPQotIGx0X3NhZmVfbG9jYWxlPQotIGZvciBsdF92YXIgaW4gTEFORyBMQU5HVUFHRSBMQ19BTEwgTENfQ1RZUEUgTENfQ09MTEFURSBMQ19NRVNTQUdFUwotQEAgLTEyMSwxNSArMTE4LDEzIEBAIGRvCi0gCSAgbHRfc2FmZV9sb2NhbGU9XCIkbHRfdmFyPUM7IFwkbHRfc2FmZV9sb2NhbGVcIgotIAlmaSIKLSBkb25lCi0rTENfQUxMPUMKLStMQU5HVUFHRT1DCi0rZXhwb3J0IExBTkdVQUdFIExDX0FMTAotIAotICRsdF91bnNldCBDRFBBVEgKLSAKLSAKLS0KLS0KLS0KLS0KLS0KLSAjIFdvcmsgYXJvdW5kIGJhY2t3YXJkIGNvbXBhdGliaWxpdHkgaXNzdWUgb24gSVJJWCA2LjUuIE9uIElSSVggNi40Kywgc2gKLSAjIGlzIGtzaCBidXQgd2hlbiB0aGUgc2hlbGwgaXMgaW52b2tlZCBhcyAic2giIGFuZCB0aGUgY3VycmVudCB2YWx1ZSBvZgotICMgdGhlIF9YUEcgZW52aXJvbm1lbnQgdmFyaWFibGUgaXMgbm90IGVxdWFsIHRvIDEgKG9uZSksIHRoZSBzcGVjaWFsCi1AQCAtMTQwLDcgKzEzNSw3IEBAIHByb2dwYXRoPSIkMCIKLSAKLSAKLSA6ICR7Q1A9ImNwIC1mIn0KLS06ICR7RUNITz0kYXNfZWNob30KLSt0ZXN0ICIke0VDSE8rc2V0fSIgPSBzZXQgfHwgRUNITz0ke2FzX2VjaG8tJ3ByaW50ZiAlc1xuJ30KLSA6ICR7RUdSRVA9Ii9iaW4vZ3JlcCAtRSJ9Ci0gOiAke0ZHUkVQPSIvYmluL2dyZXAgLUYifQotIDogJHtHUkVQPSIvYmluL2dyZXAifQotQEAgLTE0OSw3ICsxNDQsNyBAQCBwcm9ncGF0aD0iJDAiCi0gOiAke01LRElSPSJta2RpciJ9Ci0gOiAke01WPSJtdiAtZiJ9Ci0gOiAke1JNPSJybSAtZiJ9Ci0tOiAke1NFRD0iL21vdW50L2VuZG9yL3dpbGRlbmh1L2xvY2FsLXg4Nl82NC9iaW4vc2VkIn0KLSs6ICR7U0VEPSIvYmluL3NlZCJ9Ci0gOiAke1NIRUxMPSIke0NPTkZJR19TSEVMTC0vYmluL3NofSJ9Ci0gOiAke1hzZWQ9IiRTRUQgLWUgMXMvXlgvLyJ9Ci0gCi1AQCAtMTY5LDYgKzE2NCwyNyBAQCBJRlM9IiAJJGx0X25sIgotIGRpcm5hbWU9InMsL1teL10qJCwsIgotIGJhc2VuYW1lPSJzLF4uKi8sLCIKLSAKLSsjIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLSsjIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCi0rIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0rZnVuY19kaXJuYW1lICgpCi0rewotKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0rICAgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCi0rICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLSsgICAgZWxzZQotKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKLSsgICAgZmkKLSt9ICMgZnVuY19kaXJuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKwotKyMgZnVuY19iYXNlbmFtZSBmaWxlCi0rZnVuY19iYXNlbmFtZSAoKQotK3sKLSsgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCi0rfSAjIGZ1bmNfYmFzZW5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotICMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLSAjIGNhbGw6Ci1AQCAtMTgzLDE3ICsxOTksMzEgQEAgYmFzZW5hbWU9InMsXi4qLywsIgotICMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLSB7Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkYmFzZW5hbWUiYAotLX0KLSsgICAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KLSsgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAtZSAiJGRpcm5hbWUiYAotKyAgICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCi0rICAgIGVsc2UKLSsgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0rICAgIGZpCi0rICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkYmFzZW5hbWUiYAotK30gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKwotKyMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0rIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLSsjIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotKyMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotKyMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLSsjIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi0rZnVuY19zdHJpcG5hbWUgKCkKLSt7Ci0rICAgIGNhc2UgJHsyfSBpbgotKyAgICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7Ci0rICAgICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotKyAgICBlc2FjCi0rfSAjIGZ1bmNfc3RyaXBuYW1lIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotIAotLSMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLgotIAotICMgVGhlc2UgU0VEIHNjcmlwdHMgcHJlc3VwcG9zZSBhbiBhYnNvbHV0ZSBwYXRoIHdpdGggYSB0cmFpbGluZyBzbGFzaC4KLSBwYXRoY2FyPSdzLF4vXChbXi9dKlwpLiokLFwxLCcKLUBAIC0zNzYsNiArNDA2LDE1IEBAIHNlZF9xdW90ZV9zdWJzdD0ncy9cKFtgIiRcXF1cKS9cXFwxL2cnCi0gIyBTYW1lIGFzIGFib3ZlLCBidXQgZG8gbm90IHF1b3RlIHZhcmlhYmxlIHJlZmVyZW5jZXMuCi0gZG91YmxlX3F1b3RlX3N1YnN0PSdzL1woWyJgXFxdXCkvXFxcMS9nJwotIAotKyMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IHR1cm5zIGEgc3RyaW5nIGludG8gYSByZWdleCBtYXRjaGluZyBmb3IgdGhlCi0rIyBzdHJpbmcgbGl0ZXJhbGx5LgotK3NlZF9tYWtlX2xpdGVyYWxfcmVnZXg9J3MsW10uW14kXFwqXC9dLFxcJixnJwotKwotKyMgU2VkIHN1YnN0aXR1dGlvbiB0aGF0IGNvbnZlcnRzIGEgdzMyIGZpbGUgbmFtZSBvciBwYXRoCi0rIyB3aGljaCBjb250YWlucyBmb3J3YXJkIHNsYXNoZXMsIGludG8gb25lIHRoYXQgY29udGFpbnMKLSsjIChlc2NhcGVkKSBiYWNrc2xhc2hlcy4gIEEgdmVyeSBuYWl2ZSBpbXBsZW1lbnRhdGlvbi4KLStsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCi0rCi0gIyBSZS1gXCcgcGFyYW1ldGVyIGV4cGFuc2lvbnMgaW4gb3V0cHV0IG9mIGRvdWJsZV9xdW90ZV9zdWJzdCB0aGF0IHdlcmUKLSAjIGBcJy1lZCBpbiBpbnB1dCB0byB0aGUgc2FtZS4gIElmIGFuIG9kZCBudW1iZXIgb2YgYFwnIHByZWNlZGVkIGEgJyQnCi0gIyBpbiBpbnB1dCB0byBkb3VibGVfcXVvdGVfc3Vic3QsIHRoYXQgJyQnIHdhcyBwcm90ZWN0ZWQgZnJvbSBleHBhbnNpb24uCi1AQCAtNDA0LDcgKzQ0Myw3IEBAIG9wdF93YXJuaW5nPToKLSAjIG5hbWUgaWYgaXQgaGFzIGJlZW4gc2V0IHlldC4KLSBmdW5jX2VjaG8gKCkKLSB7Ci0tICAgICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6ICQqIgotKyAgICAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfSQqIgotIH0KLSAKLSAjIGZ1bmNfdmVyYm9zZSBhcmcuLi4KLUBAIC00MzAsMTQgKzQ2OSwxNCBAQCBmdW5jX2VjaG9fYWxsICgpCi0gIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgotIGZ1bmNfZXJyb3IgKCkKLSB7Ci0tICAgICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6ICIkezErIiRAIn0gMT4mMgotKyAgICAkRUNITyAiJHByb2duYW1lOiAke29wdF9tb2RlKyRvcHRfbW9kZTogfSIkezErIiRAIn0gMT4mMgotIH0KLSAKLSAjIGZ1bmNfd2FybmluZyBhcmcuLi4KLSAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIHdhcm5pbmcgbWVzc2FnZSB0byBzdGFuZGFyZCBlcnJvci4KLSBmdW5jX3dhcm5pbmcgKCkKLSB7Ci0tICAgICRvcHRfd2FybmluZyAmJiAkRUNITyAiJHByb2duYW1lJHttb2RlKzogfSRtb2RlOiB3YXJuaW5nOiAiJHsxKyIkQCJ9IDE+JjIKLSsgICAgJG9wdF93YXJuaW5nICYmICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9d2FybmluZzogIiR7MSsiJEAifSAxPiYyCi0gCi0gICAgICMgYmFzaCBidWcgYWdhaW46Ci0gICAgIDoKLUBAIC02NTYsMTkgKzY5NSwzNSBAQCBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgKCkKLSAgICAgZmkKLSB9Ci0gCi0tCi0tCi0rIyBmdW5jX3RyX3NoCi0rIyBUdXJuICQxIGludG8gYSBzdHJpbmcgc3VpdGFibGUgZm9yIGEgc2hlbGwgdmFyaWFibGUgbmFtZS4KLSsjIFJlc3VsdCBpcyBzdG9yZWQgaW4gJGZ1bmNfdHJfc2hfcmVzdWx0LiAgQWxsIGNoYXJhY3RlcnMKLSsjIG5vdCBpbiB0aGUgc2V0IGEtekEtWjAtOV8gYXJlIHJlcGxhY2VkIHdpdGggJ18nLiBGdXJ0aGVyLAotKyMgaWYgJDEgYmVnaW5zIHdpdGggYSBkaWdpdCwgYSAnXycgaXMgcHJlcGVuZGVkIGFzIHdlbGwuCi0rZnVuY190cl9zaCAoKQotK3sKLSsgIGNhc2UgJDEgaW4KLSsgIFswLTldKiB8ICpbIWEtekEtWjAtOV9dKikKLSsgICAgZnVuY190cl9zaF9yZXN1bHQ9YCRFQ0hPICIkMSIgfCAkU0VEICdzL15cKFswLTldXCkvX1wxLzsgcy9bXmEtekEtWjAtOV9dL18vZydgCi0rICAgIDs7Ci0rICAqICkKLSsgICAgZnVuY190cl9zaF9yZXN1bHQ9JDEKLSsgICAgOzsKLSsgIGVzYWMKLSt9Ci0gCi0gCi0gIyBmdW5jX3ZlcnNpb24KLSAjIEVjaG8gdmVyc2lvbiBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KLSBmdW5jX3ZlcnNpb24gKCkKLSB7Ci0rICAgICRvcHRfZGVidWcKLSsKLSAgICAgJFNFRCAtbiAnLyhDKS8hYiBnbwotIAk6bW9yZQotIAkvXC4vIXsKLSAJICBOCi0tCSAgcy9cbiMgLy8KLSsJICBzL1xuIyAvIC8KLSAJICBiIG1vcmUKLSAJfQotIAk6Z28KLUBAIC02ODUsNyArNzQwLDkgQEAgZnVuY192ZXJzaW9uICgpCi0gIyBFY2hvIHNob3J0IGhlbHAgbWVzc2FnZSB0byBzdGFuZGFyZCBvdXRwdXQgYW5kIGV4aXQuCi0gZnVuY191c2FnZSAoKQotIHsKLS0gICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sL14jICAqLWgvIHsKLSsgICAgJG9wdF9kZWJ1ZwotKwotKyAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvXiMgICouKi0taGVscC8gewotICAgICAgICAgcy9eIyAvLwotIAlzL14jICokLy8KLSAJcy9cJHByb2duYW1lLyckcHJvZ25hbWUnLwotQEAgLTcwMSw3ICs3NTgsMTAgQEAgZnVuY191c2FnZSAoKQotICMgdW5sZXNzICdub2V4aXQnIGlzIHBhc3NlZCBhcyBhcmd1bWVudC4KLSBmdW5jX2hlbHAgKCkKLSB7Ci0rICAgICRvcHRfZGVidWcKLSsKLSAgICAgJFNFRCAtbiAnL14jIFVzYWdlOi8sLyMgUmVwb3J0IGJ1Z3MgdG8vIHsKLSsJOnByaW50Ci0gICAgICAgICBzL14jIC8vCi0gCXMvXiMgKiQvLwotIAlzKlwkcHJvZ25hbWUqJyRwcm9nbmFtZScqCi1AQCAtNzE0LDcgKzc3NCwxMSBAQCBmdW5jX2hlbHAgKCkKLSAJcy9cJGF1dG9tYWtlX3ZlcnNpb24vJyJgKGF1dG9tYWtlIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgIicvCi0gCXMvXCRhdXRvY29uZl92ZXJzaW9uLyciYChhdXRvY29uZiAtLXZlcnNpb24pIDI+L2Rldi9udWxsIHwkU0VEIDFxYCInLwotIAlwCi0tICAgICB9JyA8ICIkcHJvZ3BhdGgiCi0rCWQKLSsgICAgIH0KLSsgICAgIC9eIyAuKiBob21lIHBhZ2U6L2IgcHJpbnQKLSsgICAgIC9eIyBHZW5lcmFsIGhlbHAgdXNpbmcvYiBwcmludAotKyAgICAgJyA8ICIkcHJvZ3BhdGgiCi0gICAgIHJldD0kPwotICAgICBpZiB0ZXN0IC16ICIkMSI7IHRoZW4KLSAgICAgICBleGl0ICRyZXQKLUBAIC03MjYsMTIgKzc5MCwzOSBAQCBmdW5jX2hlbHAgKCkKLSAjIGV4aXRfY21kLgotIGZ1bmNfbWlzc2luZ19hcmcgKCkKLSB7Ci0tICAgIGZ1bmNfZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgZm9yICQxIgotKyAgICAkb3B0X2RlYnVnCi0rCi0rICAgIGZ1bmNfZXJyb3IgIm1pc3NpbmcgYXJndW1lbnQgZm9yICQxLiIKLSAgICAgZXhpdF9jbWQ9ZXhpdAotIH0KLSAKLS1leGl0X2NtZD06Ci0gCi0rIyBmdW5jX3NwbGl0X3Nob3J0X29wdCBzaG9ydG9wdAotKyMgU2V0IGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWUgYW5kIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyBzaGVsbAotKyMgdmFyaWFibGVzIGFmdGVyIHNwbGl0dGluZyBTSE9SVE9QVCBhZnRlciB0aGUgMm5kIGNoYXJhY3Rlci4KLStmdW5jX3NwbGl0X3Nob3J0X29wdCAoKQotK3sKLSsgICAgbXlfc2VkX3Nob3J0X29wdD0nMXMvXlwoLi5cKS4qJC9cMS87cScKLSsgICAgbXlfc2VkX3Nob3J0X3Jlc3Q9JzFzL14uLlwoLipcKSQvXDEvO3EnCi0rCi0rICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX3Nob3J0X29wdCJgCi0rICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfc2hvcnRfcmVzdCJgCi0rfSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKwotKyMgZnVuY19zcGxpdF9sb25nX29wdCBsb25nb3B0Ci0rIyBTZXQgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lIGFuZCBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZyBzaGVsbAotKyMgdmFyaWFibGVzIGFmdGVyIHNwbGl0dGluZyBMT05HT1BUIGF0IHRoZSBgPScgc2lnbi4KLStmdW5jX3NwbGl0X2xvbmdfb3B0ICgpCi0rewotKyAgICBteV9zZWRfbG9uZ19vcHQ9JzFzL15cKC0tW149XSpcKT0uKi9cMS87cScKLSsgICAgbXlfc2VkX2xvbmdfYXJnPScxcy9eLS1bXj1dKj0vLycKLSsKLSsgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCi0rICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0rfSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rZXhpdF9jbWQ9OgotIAotIAotIAotQEAgLTc0MSwyNiArODMyLDY0IEBAIG1hZ2ljPSIlJSVNQUdJQyB2YXJpYWJsZSUlJSIKLSBtYWdpY19leGU9IiUlJU1BR0lDIEVYRSB2YXJpYWJsZSUlJSIKLSAKLSAjIEdsb2JhbCB2YXJpYWJsZXMuCi0tIyAkbW9kZSBpcyB1bnNldAotIG5vbm9wdD0KLS1leGVjdXRlX2RsZmlsZXM9Ci0gcHJlc2VydmVfYXJncz0KLSBsbzJvPSJzL1xcLmxvXCQvLiR7b2JqZXh0fS8iCi0gbzJsbz0icy9cXC4ke29iamV4dH1cJC8ubG8vIgotIGV4dHJhY3RlZF9hcmNoaXZlcz0KLSBleHRyYWN0ZWRfc2VyaWFsPTAKLSAKLS1vcHRfZHJ5X3J1bj1mYWxzZQotLW9wdF9maW5pc2g9OgotLW9wdF9kdXBsaWNhdGVfZGVwcz1mYWxzZQotLW9wdF9zaWxlbnQ9ZmFsc2UKLS1vcHRfZGVidWc9OgotLQotICMgSWYgdGhpcyB2YXJpYWJsZSBpcyBzZXQgaW4gYW55IG9mIHRoZSBhY3Rpb25zLCB0aGUgY29tbWFuZCBpbiBpdAotICMgd2lsbCBiZSBleGVjZWQgYXQgdGhlIGVuZC4gIFRoaXMgcHJldmVudHMgaGVyZS1kb2N1bWVudHMgZnJvbSBiZWluZwotICMgbGVmdCBvdmVyIGJ5IHNoZWxscy4KLSBleGVjX2NtZD0KLSAKLSsjIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQotKyMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgotK2Z1bmNfYXBwZW5kICgpCi0rewotKyAgICBldmFsICIkezF9PVwkJHsxfVwkezJ9IgotK30gIyBmdW5jX2FwcGVuZCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsjIGZ1bmNfYXBwZW5kX3F1b3RlZCB2YXIgdmFsdWUKLSsjIFF1b3RlIFZBTFVFIGFuZCBhcHBlbmQgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIsIHNlcGFyYXRlZAotKyMgYnkgYSBzcGFjZS4KLStmdW5jX2FwcGVuZF9xdW90ZWQgKCkKLSt7Ci0rICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iCi0rICAgIGV2YWwgIiR7MX09XCQkezF9XFwgXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSt9ICMgZnVuY19hcHBlbmRfcXVvdGVkIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKwotKyMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLStmdW5jX2FyaXRoICgpCi0rewotKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJHtAfSJgCi0rfSAjIGZ1bmNfYXJpdGggbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0rIyBmdW5jX2xlbiBzdHJpbmcKLSsjIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0rZnVuY19sZW4gKCkKLSt7Ci0rICAgIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJHsxfSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotK30gIyBmdW5jX2xlbiBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KLSsKLSsKLSsjIGZ1bmNfbG8ybyBvYmplY3QKLStmdW5jX2xvMm8gKCkKLSt7Ci0rICAgIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLSt9ICMgZnVuY19sbzJvIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgotKwotKwotKyMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0rZnVuY194Zm9ybSAoKQotK3sKLSsgICAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCi0rfSAjIGZ1bmNfeGZvcm0gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCi0rCi0rCi0gIyBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gYXJnLi4uCi0gIyBFY2hvIHByb2dyYW0gbmFtZSBwcmVmaXhlZCBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLCBmb2xsb3dlZCBieQotICMgYSBjb25maWd1cmF0aW9uIGZhaWx1cmUgaGludCwgYW5kIGV4aXQuCi1AQCAtODUwLDEzMCArOTc5LDIwNCBAQCBmdW5jX2VuYWJsZV90YWcgKCkKLSAgIGVzYWMKLSB9Ci0gCi0tIyBQYXJzZSBvcHRpb25zIG9uY2UsIHRob3JvdWdobHkuICBUaGlzIGNvbWVzIGFzIHNvb24gYXMgcG9zc2libGUgaW4KLS0jIHRoZSBzY3JpcHQgdG8gbWFrZSB0aGluZ3MgbGlrZSBgbGlidG9vbCAtLXZlcnNpb24nIGhhcHBlbiBxdWlja2x5LgotKyMgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCi0rIyBFbnN1cmUgdGhhdCB3ZSBhcmUgdXNpbmcgbTQgbWFjcm9zLCBhbmQgbGlidG9vbCBzY3JpcHQgZnJvbSB0aGUgc2FtZQotKyMgcmVsZWFzZSBvZiBsaWJ0b29sLgotK2Z1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaCAoKQotIHsKLSsgIGlmIHRlc3QgIiRwYWNrYWdlX3JldmlzaW9uIiAhPSAiJG1hY3JvX3JldmlzaW9uIjsgdGhlbgotKyAgICBpZiB0ZXN0ICIkVkVSU0lPTiIgIT0gIiRtYWNyb192ZXJzaW9uIjsgdGhlbgotKyAgICAgIGlmIHRlc3QgLXogIiRtYWNyb192ZXJzaW9uIjsgdGhlbgotKyAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKLSskcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCBidXQgdGhlCi0rJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tIGFuIG9sZGVyIHJlbGVhc2UuCi0rJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgotKyRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KLStfTFRfRU9GCi0rICAgICAgZWxzZQotKyAgICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKLSskcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCBidXQgdGhlCi0rJHByb2duYW1lOiBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tICRQQUNLQUdFICRtYWNyb192ZXJzaW9uLgotKyRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gJFBBQ0tBR0UgJFZFUlNJT04KLSskcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCi0rX0xUX0VPRgotKyAgICAgIGZpCi0rICAgIGVsc2UKLSsgICAgICBjYXQgPiYyIDw8X0xUX0VPRgotKyRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uLAotKyRwcm9nbmFtZTogYnV0IHRoZSBkZWZpbml0aW9uIG9mIHRoaXMgTFRfSU5JVCBjb21lcyBmcm9tIHJldmlzaW9uICRtYWNyb19yZXZpc2lvbi4KLSskcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tIHJldmlzaW9uICRwYWNrYWdlX3JldmlzaW9uCi0rJHByb2duYW1lOiBvZiAkUEFDS0FHRSAkVkVSU0lPTiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgotK19MVF9FT0YKLSsgICAgZmkKLSAKLS0gICMgU2hvcnRoYW5kIGZvciAtLW1vZGU9Zm9vLCBvbmx5IHZhbGlkIGFzIHRoZSBmaXJzdCBhcmd1bWVudAotLSAgY2FzZSAkMSBpbgotLSAgY2xlYW58Y2xlYXxjbGV8Y2wpCi0tICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNsZWFuICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIGNvbXBpbGV8Y29tcGlsfGNvbXBpfGNvbXB8Y29tfGNvfGMpCi0tICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGNvbXBpbGUgJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgZXhlY3V0ZXxleGVjdXR8ZXhlY3V8ZXhlY3xleGV8ZXh8ZSkKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZXhlY3V0ZSAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICBmaW5pc2h8ZmluaXN8ZmluaXxmaW58Zml8ZikKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgZmluaXNoICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIGluc3RhbGx8aW5zdGFsfGluc3RhfGluc3R8aW5zfGlufGkpCi0tICAgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAotLSAgICA7OwotLSAgbGlua3xsaW58bGl8bCkKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgbGluayAkezErIiRAIn07IHNoaWZ0Ci0tICAgIDs7Ci0tICB1bmluc3RhbGx8dW5pbnN0YWx8dW5pbnN0YXx1bmluc3R8dW5pbnN8dW5pbnx1bml8dW58dSkKLS0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgdW5pbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKLS0gICAgOzsKLS0gIGVzYWMKLSsgICAgZXhpdCAkRVhJVF9NSVNNQVRDSAotKyAgZmkKLSt9Ci0rCi0rCi0rIyBTaG9ydGhhbmQgZm9yIC0tbW9kZT1mb28sIG9ubHkgdmFsaWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50Ci0rY2FzZSAkMSBpbgotK2NsZWFufGNsZWF8Y2xlfGNsKQotKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY2xlYW4gJHsxKyIkQCJ9OyBzaGlmdAotKyAgOzsKLStjb21waWxlfGNvbXBpbHxjb21waXxjb21wfGNvbXxjb3xjKQotKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY29tcGlsZSAkezErIiRAIn07IHNoaWZ0Ci0rICA7OwotK2V4ZWN1dGV8ZXhlY3V0fGV4ZWN1fGV4ZWN8ZXhlfGV4fGUpCi0rICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBleGVjdXRlICR7MSsiJEAifTsgc2hpZnQKLSsgIDs7Ci0rZmluaXNofGZpbmlzfGZpbml8ZmlufGZpfGYpCi0rICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAotKyAgOzsKLStpbnN0YWxsfGluc3RhbHxpbnN0YXxpbnN0fGluc3xpbnxpKQotKyAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0Ci0rICA7OwotK2xpbmt8bGlufGxpfGwpCi0rICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBsaW5rICR7MSsiJEAifTsgc2hpZnQKLSsgIDs7Ci0rdW5pbnN0YWxsfHVuaW5zdGFsfHVuaW5zdGF8dW5pbnN0fHVuaW5zfHVuaW58dW5pfHVufHUpCi0rICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSB1bmluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAotKyAgOzsKLStlc2FjCi0gCi0tICAjIFBhcnNlIG5vbi1tb2RlIHNwZWNpZmljIGFyZ3VtZW50czoKLS0gIHdoaWxlIHRlc3QgIiQjIiAtZ3QgMDsgZG8KLSsKLSsKLSsjIE9wdGlvbiBkZWZhdWx0czoKLStvcHRfZGVidWc9OgotK29wdF9kcnlfcnVuPWZhbHNlCi0rb3B0X2NvbmZpZz1mYWxzZQotK29wdF9wcmVzZXJ2ZV9kdXBfZGVwcz1mYWxzZQotK29wdF9mZWF0dXJlcz1mYWxzZQotK29wdF9maW5pc2g9ZmFsc2UKLStvcHRfaGVscD1mYWxzZQotK29wdF9oZWxwX2FsbD1mYWxzZQotK29wdF9zaWxlbnQ9OgotK29wdF92ZXJib3NlPToKLStvcHRfc2lsZW50PWZhbHNlCi0rb3B0X3ZlcmJvc2U9ZmFsc2UKLSsKLSsKLSsjIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbiB0aGUKLSsjIHNjcmlwdCB0byBtYWtlIHRoaW5ncyBsaWtlIGAtLXZlcnNpb24nIGhhcHBlbiBhcyBxdWlja2x5IGFzIHdlIGNhbi4KLSt7Ci0rICAjIHRoaXMganVzdCBlYXNlcyBleGl0IGhhbmRsaW5nCi0rICB3aGlsZSB0ZXN0ICQjIC1ndCAwOyBkbwotICAgICBvcHQ9IiQxIgotICAgICBzaGlmdAotLQotICAgICBjYXNlICRvcHQgaW4KLS0gICAgICAtLWNvbmZpZykJCWZ1bmNfY29uZmlnCQkJCQk7OwotLQotLSAgICAgIC0tZGVidWcpCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgotKyAgICAgIC0tZGVidWd8LXgpCW9wdF9kZWJ1Zz0nc2V0IC14JwotIAkJCWZ1bmNfZWNobyAiZW5hYmxpbmcgc2hlbGwgdHJhY2UgbW9kZSIKLS0JCQlvcHRfZGVidWc9J3NldCAteCcKLSAJCQkkb3B0X2RlYnVnCi0gCQkJOzsKLS0KLS0gICAgICAtZGxvcGVuKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCi0tCQkJZXhlY3V0ZV9kbGZpbGVzPSIkZXhlY3V0ZV9kbGZpbGVzICQxIgotLQkJCXNoaWZ0Ci0rICAgICAgLS1kcnktcnVufC0tZHJ5cnVufC1uKQotKwkJCW9wdF9kcnlfcnVuPToKLSAJCQk7OwotLQotLSAgICAgIC0tZHJ5LXJ1biB8IC1uKQlvcHRfZHJ5X3J1bj06CQkJCQk7OwotLSAgICAgIC0tZmVhdHVyZXMpICAgICAgIGZ1bmNfZmVhdHVyZXMJCQkJCTs7Ci0tICAgICAgLS1maW5pc2gpCQltb2RlPSJmaW5pc2giCQkJCQk7OwotLSAgICAgIC0tbm8tZmluaXNoKQlvcHRfZmluaXNoPWZhbHNlCQkJCTs7Ci0tCi0tICAgICAgLS1tb2RlKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCi0tCQkJY2FzZSAkMSBpbgotLQkJCSAgIyBWYWxpZCBtb2RlIGFyZ3VtZW50czoKLS0JCQkgIGNsZWFuKQk7OwotLQkJCSAgY29tcGlsZSkJOzsKLS0JCQkgIGV4ZWN1dGUpCTs7Ci0tCQkJICBmaW5pc2gpCTs7Ci0tCQkJICBpbnN0YWxsKQk7OwotLQkJCSAgbGluaykJCTs7Ci0tCQkJICByZWxpbmspCTs7Ci0tCQkJICB1bmluc3RhbGwpCTs7Ci0tCi0tCQkJICAjIENhdGNoIGFueXRoaW5nIGVsc2UgYXMgYW4gZXJyb3IKLS0JCQkgICopIGZ1bmNfZXJyb3IgImludmFsaWQgYXJndW1lbnQgZm9yICRvcHQiCi0tCQkJICAgICBleGl0X2NtZD1leGl0Ci0tCQkJICAgICBicmVhawotLQkJCSAgICAgOzsKLS0JCSAgICAgICAgZXNhYwotLQotLQkJCW1vZGU9IiQxIgotKyAgICAgIC0tY29uZmlnKQotKwkJCW9wdF9jb25maWc9OgotK2Z1bmNfY29uZmlnCi0rCQkJOzsKLSsgICAgICAtLWRsb3BlbnwtZGxvcGVuKQotKwkJCW9wdGFyZz0iJDEiCi0rCQkJb3B0X2Rsb3Blbj0iJHtvcHRfZGxvcGVuKyRvcHRfZGxvcGVuCi0rfSRvcHRhcmciCi0gCQkJc2hpZnQKLSAJCQk7OwotLQotICAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMpCi0tCQkJb3B0X2R1cGxpY2F0ZV9kZXBzPToJCQkJOzsKLS0KLS0gICAgICAtLXF1aWV0fC0tc2lsZW50KQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgotLQkJCW9wdF9zaWxlbnQ9OgotLQkJCW9wdF92ZXJib3NlPWZhbHNlCi0rCQkJb3B0X3ByZXNlcnZlX2R1cF9kZXBzPToKLSAJCQk7OwotLQotLSAgICAgIC0tbm8tcXVpZXR8LS1uby1zaWxlbnQpCi0tCQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKLS0JCQlvcHRfc2lsZW50PWZhbHNlCi0rICAgICAgLS1mZWF0dXJlcykKLSsJCQlvcHRfZmVhdHVyZXM9OgotK2Z1bmNfZmVhdHVyZXMKLSAJCQk7OwotLQotLSAgICAgIC0tdmVyYm9zZXwgLXYpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCi0rICAgICAgLS1maW5pc2gpCi0rCQkJb3B0X2ZpbmlzaD06Ci0rc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAotKwkJCTs7Ci0rICAgICAgLS1oZWxwKQotKwkJCW9wdF9oZWxwPToKLSsJCQk7OwotKyAgICAgIC0taGVscC1hbGwpCi0rCQkJb3B0X2hlbHBfYWxsPToKLStvcHRfaGVscD0nOiBoZWxwLWFsbCcKLSsJCQk7OwotKyAgICAgIC0tbW9kZSkKLSsJCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKLSsJCQlvcHRhcmc9IiQxIgotKwkJCW9wdF9tb2RlPSIkb3B0YXJnIgotK2Nhc2UgJG9wdGFyZyBpbgotKyAgIyBWYWxpZCBtb2RlIGFyZ3VtZW50czoKLSsgIGNsZWFufGNvbXBpbGV8ZXhlY3V0ZXxmaW5pc2h8aW5zdGFsbHxsaW5rfHJlbGlua3x1bmluc3RhbGwpIDs7Ci0rCi0rICAjIENhdGNoIGFueXRoaW5nIGVsc2UgYXMgYW4gZXJyb3IKLSsgICopIGZ1bmNfZXJyb3IgImludmFsaWQgYXJndW1lbnQgZm9yICRvcHQiCi0rICAgICBleGl0X2NtZD1leGl0Ci0rICAgICBicmVhawotKyAgICAgOzsKLStlc2FjCi0rCQkJc2hpZnQKLSsJCQk7OwotKyAgICAgIC0tbm8tc2lsZW50fC0tbm8tcXVpZXQpCi0gCQkJb3B0X3NpbGVudD1mYWxzZQotLQkJCW9wdF92ZXJib3NlPToKLStmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKLSAJCQk7OwotLQotLSAgICAgIC0tbm8tdmVyYm9zZSkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKLSsgICAgICAtLW5vLXZlcmJvc2UpCi0gCQkJb3B0X3ZlcmJvc2U9ZmFsc2UKLStmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKLSAJCQk7OwotLQotLSAgICAgIC0tdGFnKQkJdGVzdCAiJCMiIC1lcSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgIiRvcHQiICYmIGJyZWFrCi0tCQkJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCAkMSIKLS0JCQlmdW5jX2VuYWJsZV90YWcgIiQxIgkjIHRhZ25hbWUgaXMgc2V0IGhlcmUKLSsgICAgICAtLXNpbGVudHwtLXF1aWV0KQotKwkJCW9wdF9zaWxlbnQ9OgotK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgotKyAgICAgICAgb3B0X3ZlcmJvc2U9ZmFsc2UKLSsJCQk7OwotKyAgICAgIC0tdmVyYm9zZXwtdikKLSsJCQlvcHRfdmVyYm9zZT06Ci0rZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCi0rb3B0X3NpbGVudD1mYWxzZQotKwkJCTs7Ci0rICAgICAgLS10YWcpCi0rCQkJdGVzdCAkIyA9IDAgJiYgZnVuY19taXNzaW5nX2FyZyAkb3B0ICYmIGJyZWFrCi0rCQkJb3B0YXJnPSIkMSIKLSsJCQlvcHRfdGFnPSIkb3B0YXJnIgotK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0ICRvcHRhcmciCi0rZnVuY19lbmFibGVfdGFnICIkb3B0YXJnIgotIAkJCXNoaWZ0Ci0gCQkJOzsKLSAKLSsgICAgICAtXD98LWgpCQlmdW5jX3VzYWdlCQkJCTs7Ci0rICAgICAgLS1oZWxwKQkJZnVuY19oZWxwCQkJCTs7Ci0rICAgICAgLS12ZXJzaW9uKQlmdW5jX3ZlcnNpb24JCQkJOzsKLSsKLSAgICAgICAjIFNlcGFyYXRlIG9wdGFyZ3MgdG8gbG9uZyBvcHRpb25zOgotLSAgICAgIC1kbG9wZW49KnwtLW1vZGU9KnwtLXRhZz0qKQotLQkJCWZ1bmNfb3B0X3NwbGl0ICIkb3B0IgotLQkJCXNldCBkdW1teSAiJGZ1bmNfb3B0X3NwbGl0X29wdCIgIiRmdW5jX29wdF9zcGxpdF9hcmciICR7MSsiJEAifQotKyAgICAgIC0tKj0qKQotKwkJCWZ1bmNfc3BsaXRfbG9uZ19vcHQgIiRvcHQiCi0rCQkJc2V0IGR1bW15ICIkZnVuY19zcGxpdF9sb25nX29wdF9uYW1lIiAiJGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnIiAkezErIiRAIn0KLSAJCQlzaGlmdAotIAkJCTs7Ci0gCi0tICAgICAgLVw/fC1oKQkJZnVuY191c2FnZQkJCQkJOzsKLS0gICAgICAtLWhlbHApCQlvcHRfaGVscD06CQkJCQk7OwotLSAgICAgIC0taGVscC1hbGwpCW9wdF9oZWxwPSc6IGhlbHAtYWxsJwkJCQk7OwotLSAgICAgIC0tdmVyc2lvbikJZnVuY192ZXJzaW9uCQkJCQk7OwotLQotLSAgICAgIC0qKQkJZnVuY19mYXRhbF9oZWxwICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgJG9wdCciCTs7Ci0tCi0tICAgICAgKikJCW5vbm9wdD0iJG9wdCIKLS0JCQlicmVhawotKyAgICAgICMgU2VwYXJhdGUgbm9uLWFyZ3VtZW50IHNob3J0IG9wdGlvbnM6Ci0rICAgICAgLVw/KnwtaCp8LW4qfC12KikKLSsJCQlmdW5jX3NwbGl0X3Nob3J0X29wdCAiJG9wdCIKLSsJCQlzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lIiAiLSRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmciICR7MSsiJEAifQotKwkJCXNoaWZ0Ci0gCQkJOzsKLSsKLSsgICAgICAtLSkJCWJyZWFrCQkJCQk7OwotKyAgICAgIC0qKQkJZnVuY19mYXRhbF9oZWxwICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgJG9wdCciIDs7Ci0rICAgICAgKikJCXNldCBkdW1teSAiJG9wdCIgJHsxKyIkQCJ9OwlzaGlmdDsgYnJlYWsgIDs7Ci0gICAgIGVzYWMKLSAgIGRvbmUKLSAKLSsgICMgVmFsaWRhdGUgb3B0aW9uczoKLSsKLSsgICMgc2F2ZSBmaXJzdCBub24tb3B0aW9uIGFyZ3VtZW50Ci0rICBpZiB0ZXN0ICIkIyIgLWd0IDA7IHRoZW4KLSsgICAgbm9ub3B0PSIkb3B0IgotKyAgICBzaGlmdAotKyAgZmkKLSsKLSsgICMgcHJlc2VydmUgLS1kZWJ1ZwotKyAgdGVzdCAiJG9wdF9kZWJ1ZyIgPSA6IHx8IGZ1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAtLWRlYnVnIgotIAotICAgY2FzZSAkaG9zdCBpbgotICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqcHczMiogfCAqY2VnY2MqIHwgKnNvbGFyaXMyKiApCi1AQCAtOTgxLDgyICsxMTg0LDQ0IEBAIGZ1bmNfZW5hYmxlX3RhZyAoKQotICAgICAgIG9wdF9kdXBsaWNhdGVfY29tcGlsZXJfZ2VuZXJhdGVkX2RlcHM9OgotICAgICAgIDs7Ci0gICAgICopCi0tICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz0kb3B0X2R1cGxpY2F0ZV9kZXBzCi0rICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz0kb3B0X3ByZXNlcnZlX2R1cF9kZXBzCi0gICAgICAgOzsKLSAgIGVzYWMKLSAKLS0gICMgSGF2aW5nIHdhcm5lZCBhYm91dCBhbGwgbWlzLXNwZWNpZmllZCBvcHRpb25zLCBiYWlsIG91dCBpZgotLSAgIyBhbnl0aGluZyB3YXMgd3JvbmcuCi0tICAkZXhpdF9jbWQgJEVYSVRfRkFJTFVSRQotLX0KLSsgICRvcHRfaGVscCB8fCB7Ci0rICAgICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKLSsgICAgZnVuY19jaGVja192ZXJzaW9uX21hdGNoCi0gCi0tIyBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKLS0jIEVuc3VyZSB0aGF0IHdlIGFyZSB1c2luZyBtNCBtYWNyb3MsIGFuZCBsaWJ0b29sIHNjcmlwdCBmcm9tIHRoZSBzYW1lCi0tIyByZWxlYXNlIG9mIGxpYnRvb2wuCi0tZnVuY19jaGVja192ZXJzaW9uX21hdGNoICgpCi0tewotLSAgaWYgdGVzdCAiJHBhY2thZ2VfcmV2aXNpb24iICE9ICIkbWFjcm9fcmV2aXNpb24iOyB0aGVuCi0tICAgIGlmIHRlc3QgIiRWRVJTSU9OIiAhPSAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCi0tICAgICAgaWYgdGVzdCAteiAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCi0tICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgotLSRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKLS0kcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gYW4gb2xkZXIgcmVsZWFzZS4KLS0kcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCi0tJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgotLV9MVF9FT0YKLS0gICAgICBlbHNlCi0tICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgotLSRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKLS0kcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gJFBBQ0tBR0UgJG1hY3JvX3ZlcnNpb24uCi0tJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgotLSRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KLS1fTFRfRU9GCi0tICAgICAgZmkKLS0gICAgZWxzZQotLSAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCi0tJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24sCi0tJHByb2duYW1lOiBidXQgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gcmV2aXNpb24gJG1hY3JvX3JldmlzaW9uLgotLSRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24KLS0kcHJvZ25hbWU6IG9mICRQQUNLQUdFICRWRVJTSU9OIGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCi0tX0xUX0VPRgotKyAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiAhPSB5ZXM7IHRoZW4KLSsgICAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gIm5vdCBjb25maWd1cmVkIHRvIGJ1aWxkIGFueSBraW5kIG9mIGxpYnJhcnkiCi0gICAgIGZpCi0gCi0tICAgIGV4aXQgJEVYSVRfTUlTTUFUQ0gKLS0gIGZpCi0tfQotLQotKyAgICAjIERhcndpbiBzdWNrcwotKyAgICBldmFsIHN0ZF9zaHJleHQ9XCIkc2hyZXh0X2NtZHNcIgotIAotLSMjIC0tLS0tLS0tLS0tICMjCi0tIyMgICAgTWFpbi4gICAgIyMKLS0jIyAtLS0tLS0tLS0tLSAjIwotLQotLSRvcHRfaGVscCB8fCB7Ci0tICAjIFNhbml0eSBjaGVja3MgZmlyc3Q6Ci0tICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKLS0KLS0gIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiICE9IHllczsgdGhlbgotLSAgICBmdW5jX2ZhdGFsX2NvbmZpZ3VyYXRpb24gIm5vdCBjb25maWd1cmVkIHRvIGJ1aWxkIGFueSBraW5kIG9mIGxpYnJhcnkiCi0tICBmaQotKyAgICAjIE9ubHkgZXhlY3V0ZSBtb2RlIGlzIGFsbG93ZWQgdG8gaGF2ZSAtZGxvcGVuIGZsYWdzLgotKyAgICBpZiB0ZXN0IC1uICIkb3B0X2Rsb3BlbiIgJiYgdGVzdCAiJG9wdF9tb2RlIiAhPSBleGVjdXRlOyB0aGVuCi0rICAgICAgZnVuY19lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbiBcYC1kbG9wZW4nIgotKyAgICAgICRFQ0hPICIkaGVscCIgMT4mMgotKyAgICAgIGV4aXQgJEVYSVRfRkFJTFVSRQotKyAgICBmaQotIAotLSAgdGVzdCAteiAiJG1vZGUiICYmIGZ1bmNfZmF0YWxfZXJyb3IgImVycm9yOiB5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERS4iCi0rICAgICMgQ2hhbmdlIHRoZSBoZWxwIG1lc3NhZ2UgdG8gYSBtb2RlLXNwZWNpZmljIG9uZS4KLSsgICAgZ2VuZXJpY19oZWxwPSIkaGVscCIKLSsgICAgaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCAtLW1vZGU9JG9wdF9tb2RlJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCi0rICB9Ci0gCi0gCi0tICAjIERhcndpbiBzdWNrcwotLSAgZXZhbCAic3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiIgotKyAgIyBCYWlsIGlmIHRoZSBvcHRpb25zIHdlcmUgc2NyZXdlZAotKyAgJGV4aXRfY21kICRFWElUX0ZBSUxVUkUKLSt9Ci0gCi0gCi0tICAjIE9ubHkgZXhlY3V0ZSBtb2RlIGlzIGFsbG93ZWQgdG8gaGF2ZSAtZGxvcGVuIGZsYWdzLgotLSAgaWYgdGVzdCAtbiAiJGV4ZWN1dGVfZGxmaWxlcyIgJiYgdGVzdCAiJG1vZGUiICE9IGV4ZWN1dGU7IHRoZW4KLS0gICAgZnVuY19lcnJvciAidW5yZWNvZ25pemVkIG9wdGlvbiBcYC1kbG9wZW4nIgotLSAgICAkRUNITyAiJGhlbHAiIDE+JjIKLS0gICAgZXhpdCAkRVhJVF9GQUlMVVJFCi0tICBmaQotIAotLSAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgotLSAgZ2VuZXJpY19oZWxwPSIkaGVscCIKLS0gIGhlbHA9IlRyeSBcYCRwcm9nbmFtZSAtLWhlbHAgLS1tb2RlPSRtb2RlJyBmb3IgbW9yZSBpbmZvcm1hdGlvbi4iCi0tfQotIAotKyMjIC0tLS0tLS0tLS0tICMjCi0rIyMgICAgTWFpbi4gICAgIyMKLSsjIyAtLS0tLS0tLS0tLSAjIwotIAotICMgZnVuY19sYWxpYl9wIGZpbGUKLSAjIFRydWUgaWZmIEZJTEUgaXMgYSBsaWJ0b29sIGAubGEnIGxpYnJhcnkgb3IgYC5sbycgb2JqZWN0IGZpbGUuCi1AQCAtMTEyMSwxMiArMTI4Niw5IEBAIGZ1bmNfbHR3cmFwcGVyX2V4ZWN1dGFibGVfcCAoKQotICMgdGVtcG9yYXJ5IGx0d3JhcHBlcl9zY3JpcHQuCi0gZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZSAoKQotIHsKLS0gICAgZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiIKLS0gICAgaWYgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICIkMSI7IHRoZW4KLS0JZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAiJDEiICIiICIuIgotLQlmdW5jX3N0cmlwbmFtZSAnJyAnLmV4ZScgIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0JZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0LyRvYmpkaXIvJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9X2x0c2h3cmFwcGVyIgotLSAgICBmaQotKyAgICBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkMSIgIiIgIi4iCi0rICAgIGZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotKyAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIiCi0gfQotIAotICMgZnVuY19sdHdyYXBwZXJfcCBmaWxlCi1AQCAtMTE0OSw3ICsxMzExLDcgQEAgZnVuY19leGVjdXRlX2NtZHMgKCkKLSAgICAgc2F2ZV9pZnM9JElGUzsgSUZTPSd+JwotICAgICBmb3IgY21kIGluICQxOyBkbwotICAgICAgIElGUz0kc2F2ZV9pZnMKLS0gICAgICBldmFsICJjbWQ9XCIkY21kXCIiCi0rICAgICAgZXZhbCBjbWQ9XCIkY21kXCIKLSAgICAgICBmdW5jX3Nob3dfZXZhbCAiJGNtZCIgIiR7Mi06fSIKLSAgICAgZG9uZQotICAgICBJRlM9JHNhdmVfaWZzCi1AQCAtMTE3Miw2ICsxMzM0LDM3IEBAIGZ1bmNfc291cmNlICgpCi0gfQotIAotIAotKyMgZnVuY19yZXNvbHZlX3N5c3Jvb3QgUEFUSAotKyMgUmVwbGFjZSBhIGxlYWRpbmcgPSBpbiBQQVRIIHdpdGggYSBzeXNyb290LiAgU3RvcmUgdGhlIHJlc3VsdCBpbnRvCi0rIyBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKLStmdW5jX3Jlc29sdmVfc3lzcm9vdCAoKQotK3sKLSsgIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdD0kMQotKyAgY2FzZSAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IGluCi0rICA9KikKLSsgICAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotKyAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQ9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rICAgIDs7Ci0rICBlc2FjCi0rfQotKwotKyMgZnVuY19yZXBsYWNlX3N5c3Jvb3QgUEFUSAotKyMgSWYgUEFUSCBiZWdpbnMgd2l0aCB0aGUgc3lzcm9vdCwgcmVwbGFjZSBpdCB3aXRoID0gYW5kCi0rIyBzdG9yZSB0aGUgcmVzdWx0IGludG8gZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0LgotK2Z1bmNfcmVwbGFjZV9zeXNyb290ICgpCi0rewotKyAgY2FzZSAiJGx0X3N5c3Jvb3Q6JDEiIGluCi0rICA/KjoiJGx0X3N5c3Jvb3QiKikKLSsgICAgZnVuY19zdHJpcG5hbWUgIiRsdF9zeXNyb290IiAnJyAiJDEiCi0rICAgIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdD0iPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rICAgIDs7Ci0rICAqKQotKyAgICAjIEluY2x1ZGluZyBubyBzeXNyb290LgotKyAgICBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQ9JDEKLSsgICAgOzsKLSsgIGVzYWMKLSt9Ci0rCi0gIyBmdW5jX2luZmVyX3RhZyBhcmcKLSAjIEluZmVyIHRhZ2dlZCBjb25maWd1cmF0aW9uIHRvIHVzZSBpZiBhbnkgYXJlIGF2YWlsYWJsZSBhbmQKLSAjIGlmIG9uZSB3YXNuJ3QgY2hvc2VuIHZpYSB0aGUgIi0tdGFnIiBjb21tYW5kIGxpbmUgb3B0aW9uLgotQEAgLTExODQsOCArMTM3Nyw3IEBAIGZ1bmNfaW5mZXJfdGFnICgpCi0gICAgIGlmIHRlc3QgLW4gIiRhdmFpbGFibGVfdGFncyIgJiYgdGVzdCAteiAiJHRhZ25hbWUiOyB0aGVuCi0gICAgICAgQ0NfcXVvdGVkPQotICAgICAgIGZvciBhcmcgaW4gJENDOyBkbwotLSAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKLS0JQ0NfcXVvdGVkPSIkQ0NfcXVvdGVkICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJZnVuY19hcHBlbmRfcXVvdGVkIENDX3F1b3RlZCAiJGFyZyIKLSAgICAgICBkb25lCi0gICAgICAgQ0NfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDYAotICAgICAgIENDX3F1b3RlZF9leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NfcXVvdGVkYAotQEAgLTEyMDQsOCArMTM5Niw3IEBAIGZ1bmNfaW5mZXJfdGFnICgpCi0gCSAgICBDQ19xdW90ZWQ9Ci0gCSAgICBmb3IgYXJnIGluICRDQzsgZG8KLSAJICAgICAgIyBEb3VibGUtcXVvdGUgYXJncyBjb250YWluaW5nIG90aGVyIHNoZWxsIG1ldGFjaGFyYWN0ZXJzLgotLQkgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotLQkgICAgICBDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwkgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgQ0NfcXVvdGVkICIkYXJnIgotIAkgICAgZG9uZQotIAkgICAgQ0NfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDYAotIAkgICAgQ0NfcXVvdGVkX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ19xdW90ZWRgCi1AQCAtMTI3NCw2ICsxNDY1LDQ4NiBAQCBFT0YKLSAgICAgfQotIH0KLSAKLSsKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgRklMRSBOQU1FIEFORCBQQVRIIENPTlZFUlNJT04gSEVMUEVSIEZVTkNUSU9OUyAjCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSsKLSsjIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgQVJHCi0rIyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBmaWxlIG5hbWUgY29udmVyc2lvbiBmdW5jdGlvbnMgd2hlbiAkYnVpbGQgaXMgKm5peCwKLSsjIGFuZCAkaG9zdCBpcyBtaW5ndywgY3lnd2luLCBvciBzb21lIG90aGVyIHczMiBlbnZpcm9ubWVudC4gUmVsaWVzIG9uIGEKLSsjIGNvcnJlY3RseSBjb25maWd1cmVkIHdpbmUgZW52aXJvbm1lbnQgYXZhaWxhYmxlLCB3aXRoIHRoZSB3aW5lcGF0aCBwcm9ncmFtCi0rIyBpbiAkYnVpbGQncyAkUEFUSC4KLSsjCi0rIyBBUkcgaXMgdGhlICRidWlsZCBmaWxlIG5hbWUgdG8gYmUgY29udmVydGVkIHRvIHczMiBmb3JtYXQuCi0rIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluICRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCwgYW5kIHdpbGwKLSsjIGJlIGVtcHR5IG9uIGVycm9yIChvciB3aGVuIEFSRyBpcyBlbXB0eSkKLStmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgICMgVW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lcyBub3QgZXhpdCB3aXRoIGEgbm9uLXplcm8gZXJyb3IgY29kZSwgc28gd2UKLSsgICAgIyBhcmUgZm9yY2VkIHRvIGNoZWNrIHRoZSBjb250ZW50cyBvZiBzdGRvdXQuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUKLSsgICAgIyBjb21tYW5kIGlzIG5vdCBmb3VuZCwgdGhlIHNoZWxsIHdpbGwgc2V0IGFuIGV4aXQgY29kZSBvZiAxMjcgYW5kIHByaW50Ci0rICAgICMgKmFuIGVycm9yIG1lc3NhZ2UqIHRvIHN0ZG91dC4gU28gd2UgbXVzdCBjaGVjayBmb3IgYm90aCBlcnJvciBjb2RlIG9mCi0rICAgICMgemVybyBBTkQgbm9uLWVtcHR5IHN0ZG91dCwgd2hpY2ggZXhwbGFpbnMgdGhlIG9kZCBjb25zdHJ1Y3Rpb246Ci0rICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wPWB3aW5lcGF0aCAtdyAiJDEiIDI+L2Rldi9udWxsYAotKyAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcH0iOyB0aGVuCi0rICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9YCRFQ0hPICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXAiIHwKLSsgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLSsgICAgZWxzZQotKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0PQotKyAgICBmaQotKyAgZmkKLSt9Ci0rIyBlbmQ6IGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgQVJHCi0rIyBIZWxwZXIgZnVuY3Rpb24gdXNlZCBieSBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb25zIHdoZW4gJGJ1aWxkIGlzICpuaXgsIGFuZAotKyMgJGhvc3QgaXMgbWluZ3csIGN5Z3dpbiwgb3Igc29tZSBvdGhlciB3MzIgZW52aXJvbm1lbnQuIFJlbGllcyBvbiBhIGNvcnJlY3RseQotKyMgY29uZmlndXJlZCB3aW5lIGVudmlyb25tZW50IGF2YWlsYWJsZSwgd2l0aCB0aGUgd2luZXBhdGggcHJvZ3JhbSBpbiAkYnVpbGQncwotKyMgJFBBVEguIEFzc3VtZXMgQVJHIGhhcyBubyBsZWFkaW5nIG9yIHRyYWlsaW5nIHBhdGggc2VwYXJhdG9yIGNoYXJhY3RlcnMuCi0rIwotKyMgQVJHIGlzIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0byB3aW4zMi4KLSsjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0LgotKyMgVW5jb252ZXJ0aWJsZSBmaWxlIChkaXJlY3RvcnkpIG5hbWVzIGluIEFSRyBhcmUgc2tpcHBlZDsgaWYgbm8gZGlyZWN0b3J5IG5hbWVzCi0rIyBhcmUgY29udmVydGlibGUsIHRoZW4gdGhlIHJlc3VsdCBtYXkgYmUgZW1wdHkuCi0rZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgICMgdW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lc24ndCBjb252ZXJ0IHBhdGhzLCBvbmx5IGZpbGUgbmFtZXMKLSsgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0PSIiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgb2xkSUZTPSRJRlMKLSsgICAgSUZTPToKLSsgICAgZm9yIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfZiBpbiAkMTsgZG8KLSsgICAgICBJRlM9JG9sZElGUwotKyAgICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX2YiCi0rICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IiA7IHRoZW4KLSsgICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCI7IHRoZW4KLSsgICAgICAgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKLSsgICAgICAgIGVsc2UKLSsgICAgICAgICAgZnVuY19hcHBlbmQgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQgIjskZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgIGRvbmUKLSsgICAgSUZTPSRvbGRJRlMKLSsgIGZpCi0rfQotKyMgZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2N5Z3BhdGggQVJHUy4uLgotKyMgV3JhcHBlciBhcm91bmQgY2FsbGluZyB0aGUgY3lncGF0aCBwcm9ncmFtIHZpYSBMVF9DWUdQQVRILiBUaGlzIGlzIHVzZWQgd2hlbgotKyMgd2hlbiAoMSkgJGJ1aWxkIGlzICpuaXggYW5kIEN5Z3dpbiBpcyBob3N0ZWQgdmlhIGEgd2luZSBlbnZpcm9ubWVudDsgb3IgKDIpCi0rIyAkYnVpbGQgaXMgTVNZUyBhbmQgJGhvc3QgaXMgQ3lnd2luLCBvciAoMykgJGJ1aWxkIGlzIEN5Z3dpbi4gSW4gY2FzZSAoMSkgb3IKLSsjICgyKSwgcmV0dXJucyB0aGUgQ3lnd2luIGZpbGUgbmFtZSBvciBwYXRoIGluIGZ1bmNfY3lncGF0aF9yZXN1bHQgKGlucHV0Ci0rIyBmaWxlIG5hbWUgb3IgcGF0aCBpcyBhc3N1bWVkIHRvIGJlIGluIHczMiBmb3JtYXQsIGFzIHByZXZpb3VzbHkgY29udmVydGVkCi0rIyBmcm9tICRidWlsZCdzICpuaXggb3IgTVNZUyBmb3JtYXQpLiBJbiBjYXNlICgzKSwgcmV0dXJucyB0aGUgdzMyIGZpbGUgbmFtZQotKyMgb3IgcGF0aCBpbiBmdW5jX2N5Z3BhdGhfcmVzdWx0IChpbnB1dCBmaWxlIG5hbWUgb3IgcGF0aCBpcyBhc3N1bWVkIHRvIGJlIGluCi0rIyBDeWd3aW4gZm9ybWF0KS4gUmV0dXJucyBhbiBlbXB0eSBzdHJpbmcgb24gZXJyb3IuCi0rIwotKyMgQVJHUyBhcmUgcGFzc2VkIHRvIGN5Z3BhdGgsIHdpdGggdGhlIGxhc3Qgb25lIGJlaW5nIHRoZSBmaWxlIG5hbWUgb3IgcGF0aCB0bwotKyMgYmUgY29udmVydGVkLgotKyMKLSsjIFNwZWNpZnkgdGhlIGFic29sdXRlICpuaXggKG9yIHczMikgbmFtZSB0byBjeWdwYXRoIGluIHRoZSBMVF9DWUdQQVRICi0rIyBlbnZpcm9ubWVudCB2YXJpYWJsZTsgZG8gbm90IHB1dCBpdCBpbiAkUEFUSC4KLStmdW5jX2N5Z3BhdGggKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBpZiB0ZXN0IC1uICIkTFRfQ1lHUEFUSCIgJiYgdGVzdCAtZiAiJExUX0NZR1BBVEgiOyB0aGVuCi0rICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9YCRMVF9DWUdQQVRIICIkQCIgMj4vZGV2L251bGxgCi0rICAgIGlmIHRlc3QgIiQ/IiAtbmUgMDsgdGhlbgotKyAgICAgICMgb24gZmFpbHVyZSwgZW5zdXJlIHJlc3VsdCBpcyBlbXB0eQotKyAgICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9Ci0rICAgIGZpCi0rICBlbHNlCi0rICAgIGZ1bmNfY3lncGF0aF9yZXN1bHQ9Ci0rICAgIGZ1bmNfZXJyb3IgIkxUX0NZR1BBVEggaXMgZW1wdHkgb3Igc3BlY2lmaWVzIG5vbi1leGlzdGVudCBmaWxlOiBcYCRMVF9DWUdQQVRIJyIKLSsgIGZpCi0rfQotKyNlbmQ6IGZ1bmNfY3lncGF0aAotKwotKwotKyMgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgQVJHCi0rIyBDb252ZXJ0IGZpbGUgbmFtZSBvciBwYXRoIEFSRyBmcm9tIE1TWVMgZm9ybWF0IHRvIHczMiBmb3JtYXQuICBSZXR1cm4KLSsjIHJlc3VsdCBpbiBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICAjIGF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQKLSsgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdD1gKCBjbWQgLy9jIGVjaG8gIiQxIiApIDI+L2Rldi9udWxsIHwKLSsgICAgJFNFRCAtZSAncy9bIF0qJC8vJyAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotK30KLSsjZW5kOiBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMgotKwotKwotKyMgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgQVJHMSBBUkcyCi0rIyBWZXJpZnkgdGhhdCBBUkcxIChhIGZpbGUgbmFtZSBpbiAkYnVpbGQgZm9ybWF0KSB3YXMgY29udmVydGVkIHRvICRob3N0Ci0rIyBmb3JtYXQgaW4gQVJHMi4gT3RoZXJ3aXNlLCBlbWl0IGFuIGVycm9yIG1lc3NhZ2UsIGJ1dCBjb250aW51ZSAocmVzZXR0aW5nCi0rIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQgdG8gQVJHMSkuCi0rZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBpZiB0ZXN0IC16ICIkMiIgJiYgdGVzdCAtbiAiJDEiIDsgdGhlbgotKyAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvc3QgZmlsZSBuYW1lIGNvcnJlc3BvbmRpbmcgdG8iCi0rICAgIGZ1bmNfZXJyb3IgIiAgXGAkMSciCi0rICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgotKyAgICAjIEZhbGxiYWNrOgotKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgotKyAgZmkKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIEZST01fUEFUSFNFUCBUT19QQVRIU0VQIEZST01fUEFUSCBUT19QQVRICi0rIyBWZXJpZnkgdGhhdCBGUk9NX1BBVEggKGEgcGF0aCBpbiAkYnVpbGQgZm9ybWF0KSB3YXMgY29udmVydGVkIHRvICRob3N0Ci0rIyBmb3JtYXQgaW4gVE9fUEFUSC4gT3RoZXJ3aXNlLCBlbWl0IGFuIGVycm9yIG1lc3NhZ2UsIGJ1dCBjb250aW51ZSwgcmVzZXR0aW5nCi0rIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQgdG8gYSBzaW1wbGlzdGljIGZhbGxiYWNrIHZhbHVlIChzZWUgYmVsb3cpLgotK2Z1bmNfY29udmVydF9wYXRoX2NoZWNrICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgaWYgdGVzdCAteiAiJDQiICYmIHRlc3QgLW4gIiQzIjsgdGhlbgotKyAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBob3N0IHBhdGggY29ycmVzcG9uZGluZyB0byIKLSsgICAgZnVuY19lcnJvciAiICBcYCQzJyIKLSsgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCi0rICAgICMgRmFsbGJhY2suICBUaGlzIGlzIGEgZGVsaWJlcmF0ZWx5IHNpbXBsaXN0aWMgImNvbnZlcnNpb24iIGFuZAotKyAgICAjIHNob3VsZCBub3QgYmUgImltcHJvdmVkIi4gIFNlZSBsaWJ0b29sLmluZm8uCi0rICAgIGlmIHRlc3QgIngkMSIgIT0gIngkMiI7IHRoZW4KLSsgICAgICBsdF9yZXBsYWNlX3BhdGhzZXBfY2hhcnM9InN8JDF8JDJ8ZyIKLSsgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YGVjaG8gIiQzIiB8Ci0rICAgICAgICAkU0VEIC1lICIkbHRfcmVwbGFjZV9wYXRoc2VwX2NoYXJzImAKLSsgICAgZWxzZQotKyAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDMiCi0rICAgIGZpCi0rICBmaQotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjawotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwIEZST05UUEFUIEJBQ0tQQVQgUkVQTCBPUklHCi0rIyBNb2RpZmllcyBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQgYnkgcHJlcGVuZGluZyBSRVBMIGlmIE9SSUcgbWF0Y2hlcyBGUk9OVFBBVAotKyMgYW5kIGFwcGVuZGluZyBSRVBMIGlmIE9SSUcgbWF0Y2hlcyBCQUNLUEFULgotK2Z1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGNhc2UgJDQgaW4KLSsgICQxICkgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMyRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0rICAgIDs7Ci0rICBlc2FjCi0rICBjYXNlICQ0IGluCi0rICAkMiApIGZ1bmNfYXBwZW5kIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCAiJDMiCi0rICAgIDs7Ci0rICBlc2FjCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcAotKwotKwotKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyAkYnVpbGQgdG8gJGhvc3QgRklMRSBOQU1FIENPTlZFUlNJT04gRlVOQ1RJT05TICMKLSsjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIwotKyMgaW52b2tlZCB2aWEgYCR0b19ob3N0X2ZpbGVfY21kIEFSRycKLSsjCi0rIyBJbiBlYWNoIGNhc2UsIEFSRyBpcyB0aGUgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgdG8gJGhvc3QgZm9ybWF0LgotKyMgUmVzdWx0IHdpbGwgYmUgYXZhaWxhYmxlIGluICRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rCi0rCi0rIyBmdW5jX3RvX2hvc3RfZmlsZSBBUkcKLSsjIENvbnZlcnRzIHRoZSBmaWxlIG5hbWUgQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuIFJldHVybiByZXN1bHQKLSsjIGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX3RvX2hvc3RfZmlsZSAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgICR0b19ob3N0X2ZpbGVfY21kICIkMSIKLSt9Ci0rIyBlbmQgZnVuY190b19ob3N0X2ZpbGUKLSsKLSsKLSsjIGZ1bmNfdG9fdG9vbF9maWxlIEFSRyBMQVpZCi0rIyBjb252ZXJ0cyB0aGUgZmlsZSBuYW1lIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gdG9vbGNoYWluIGZvcm1hdC4gUmV0dXJuCi0rIyByZXN1bHQgaW4gZnVuY190b190b29sX2ZpbGVfcmVzdWx0LiAgSWYgdGhlIGNvbnZlcnNpb24gaW4gdXNlIGlzIGxpc3RlZAotKyMgaW4gKHRoZSBjb21tYSBzZXBhcmF0ZWQpIExBWlksIG5vIGNvbnZlcnNpb24gdGFrZXMgcGxhY2UuCi0rZnVuY190b190b29sX2ZpbGUgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBjYXNlICwkMiwgaW4KLSsgICAgKiwiJHRvX3Rvb2xfZmlsZV9jbWQiLCopCi0rICAgICAgZnVuY190b190b29sX2ZpbGVfcmVzdWx0PSQxCi0rICAgICAgOzsKLSsgICAgKikKLSsgICAgICAkdG9fdG9vbF9maWxlX2NtZCAiJDEiCi0rICAgICAgZnVuY190b190b29sX2ZpbGVfcmVzdWx0PSRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQKLSsgICAgICA7OwotKyAgZXNhYwotK30KLSsjIGVuZCBmdW5jX3RvX3Rvb2xfZmlsZQotKwotKwotKyMgZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCBBUkcKLSsjIENvcHkgQVJHIHRvIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfZmlsZV9ub29wICgpCi0rewotKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKwotKwotKyMgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgQVJHCi0rIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAobWluZ3cpIE1TWVMgdG8gKG1pbmd3KSB3MzIgZm9ybWF0OyBhdXRvbWF0aWMKLSsjIGNvbnZlcnNpb24gdG8gdzMyIGlzIG5vdCBhdmFpbGFibGUgaW5zaWRlIHRoZSBjd3JhcHBlci4gIFJldHVybnMgcmVzdWx0IGluCi0rIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkMSIKLSsgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgotKyAgZmkKLSsgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyIEFSRwotKyMgQ29udmVydCBmaWxlIG5hbWUgQVJHIGZyb20gQ3lnd2luIHRvIHczMiBmb3JtYXQuICBSZXR1cm5zIHJlc3VsdCBpbgotKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgotK2Z1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgotKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCi0rICAgICMgYmVjYXVzZSAkYnVpbGQgaXMgY3lnd2luLCB3ZSBjYWxsICJ0aGUiIGN5Z3BhdGggaW4gJFBBVEg7IG5vIG5lZWQgdG8gdXNlCi0rICAgICMgTFRfQ1lHUEFUSCBpbiB0aGlzIGNhc2UuCi0rICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD1gY3lncGF0aCAtbSAiJDEiYAotKyAgZmkKLSsgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9maWxlX25peF90b193MzIgQVJHCi0rIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAqbml4IHRvIHczMiBmb3JtYXQuICBSZXF1aXJlcyBhIHdpbmUgZW52aXJvbm1lbnQKLSsjIGFuZCBhIHdvcmtpbmcgd2luZXBhdGguIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyICIkMSIKLSsgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiCi0rICBmaQotKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgotKwotKwotKyMgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4gQVJHCi0rIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSBNU1lTIHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBMVF9DWUdQQVRIIHNldC4KLSsjIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiQxIgotKyAgICBmdW5jX2N5Z3BhdGggLXUgIiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCi0rICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJGZ1bmNfY3lncGF0aF9yZXN1bHQiCi0rICBmaQotKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KLSsKLSsKLSsjIGZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4gQVJHCi0rIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSAqbml4IHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBDeWd3aW4gaW5zdGFsbGVkCi0rIyBpbiBhIHdpbmUgZW52aXJvbm1lbnQsIHdvcmtpbmcgd2luZXBhdGgsIGFuZCBMVF9DWUdQQVRIIHNldC4gIFJldHVybnMgcmVzdWx0Ci0rIyBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgIyBjb252ZXJ0IGZyb20gKm5peCB0byB3MzIsIHRoZW4gdXNlIGN5Z3BhdGggdG8gY29udmVydCBmcm9tIHczMiB0byBjeWd3aW4uCi0rICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiQxIgotKyAgICBmdW5jX2N5Z3BhdGggLXUgIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKLSsgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKLSsgIGZpCi0rICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rCi0rCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyAkYnVpbGQgdG8gJGhvc3QgUEFUSCBDT05WRVJTSU9OIEZVTkNUSU9OUyAjCi0rIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCi0rIyBpbnZva2VkIHZpYSBgJHRvX2hvc3RfcGF0aF9jbWQgQVJHJwotKyMKLSsjIEluIGVhY2ggY2FzZSwgQVJHIGlzIHRoZSBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCB0byAkaG9zdCBmb3JtYXQuCi0rIyBUaGUgcmVzdWx0IHdpbGwgYmUgYXZhaWxhYmxlIGluICRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCi0rIwotKyMgUGF0aCBzZXBhcmF0b3JzIGFyZSBhbHNvIGNvbnZlcnRlZCBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiAgSWYKLSsjIEFSRyBiZWdpbnMgb3IgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVyLCBpdCBpcyBwcmVzZXJ2ZWQgKGJ1dAotKyMgY29udmVydGVkIHRvICRob3N0IGZvcm1hdCkgb24gb3V0cHV0LgotKyMKLSsjIEFsbCBwYXRoIGNvbnZlcnNpb24gZnVuY3Rpb25zIGFyZSBuYW1lZCB1c2luZyB0aGUgZm9sbG93aW5nIGNvbnZlbnRpb246Ci0rIyAgIGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9uICAgIDogZnVuY19jb252ZXJ0X2ZpbGVfWF90b19ZICgpCi0rIyAgIHBhdGggY29udmVyc2lvbiBmdW5jdGlvbiAgICAgICAgIDogZnVuY19jb252ZXJ0X3BhdGhfWF90b19ZICgpCi0rIyB3aGVyZSwgZm9yIGFueSBnaXZlbiAkYnVpbGQvJGhvc3QgY29tYmluYXRpb24gdGhlICdYX3RvX1knIHZhbHVlIGlzIHRoZQotKyMgc2FtZS4gIElmIGNvbnZlcnNpb24gZnVuY3Rpb25zIGFyZSBhZGRlZCBmb3IgbmV3ICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbnMsCi0rIyB0aGUgdHdvIG5ldyBmdW5jdGlvbnMgbXVzdCBmb2xsb3cgdGhpcyBwYXR0ZXJuLCBvciBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAotKyMgd2lsbCBicmVhay4KLSsKLSsKLSsjIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCi0rIyBFbnN1cmVzIHRoYXQgZnVuY3Rpb24gInBvaW50ZXIiIHZhcmlhYmxlICR0b19ob3N0X3BhdGhfY21kIGlzIHNldCB0byB0aGUKLSsjIGFwcHJvcHJpYXRlIHZhbHVlLCBiYXNlZCBvbiB0aGUgdmFsdWUgb2YgJHRvX2hvc3RfZmlsZV9jbWQuCi0rdG9faG9zdF9wYXRoX2NtZD0KLStmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZCAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGlmIHRlc3QgLXogIiR0b19ob3N0X3BhdGhfY21kIjsgdGhlbgotKyAgICBmdW5jX3N0cmlwbmFtZSAnZnVuY19jb252ZXJ0X2ZpbGVfJyAnJyAiJHRvX2hvc3RfZmlsZV9jbWQiCi0rICAgIHRvX2hvc3RfcGF0aF9jbWQ9ImZ1bmNfY29udmVydF9wYXRoXyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fSIKLSsgIGZpCi0rfQotKwotKwotKyMgZnVuY190b19ob3N0X3BhdGggQVJHCi0rIyBDb252ZXJ0cyB0aGUgcGF0aCBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gUmV0dXJuIHJlc3VsdAotKyMgaW4gZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgotK2Z1bmNfdG9faG9zdF9wYXRoICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKLSsgICR0b19ob3N0X3BhdGhfY21kICIkMSIKLSt9Ci0rIyBlbmQgZnVuY190b19ob3N0X3BhdGgKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9wYXRoX25vb3AgQVJHCi0rIyBDb3B5IEFSRyB0byBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X3BhdGhfbm9vcCAoKQotK3sKLSsgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25vb3AKLSsKLSsKLSsjIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyIEFSRwotKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIChtaW5ndykgTVNZUyB0byAobWluZ3cpIHczMiBmb3JtYXQ7IGF1dG9tYXRpYwotKyMgY29udmVyc2lvbiB0byB3MzIgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgdGhlIGN3cmFwcGVyLiAgUmV0dXJucyByZXN1bHQgaW4KLSsjIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tIEFSRy4gIE1TWVMKLSsgICAgIyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZTsgY3lncGF0aCB0dXJucyB0aGVtIGludG8gJy47JyBhbmQgJzsuJzsKLSsgICAgIyBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCi0rICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCi0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCi0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAotKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKLSsgIGZpCi0rfQotKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyIEFSRwotKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIEN5Z3dpbiB0byB3MzIgZm9ybWF0LiAgUmV0dXJucyByZXN1bHQgaW4KLSsjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLSsgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgotKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKLSsgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gY3lncGF0aCAtbSAtcCAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiYAotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCi0rICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgotKyAgZmkKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfY3lnd2luX3RvX3czMgotKwotKwotKyMgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMiBBUkcKLSsjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAqbml4IHRvIHczMiBmb3JtYXQuICBSZXF1aXJlcyBhIHdpbmUgZW52aXJvbm1lbnQgYW5kCi0rIyBhIHdvcmtpbmcgd2luZXBhdGguICBSZXR1cm5zIHJlc3VsdCBpbiBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX3czMiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6Ci0rICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCi0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKyAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQiCi0rICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKLSsgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCi0rICBmaQotK30KLSsjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyCi0rCi0rCi0rIyBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbiBBUkcKLSsjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSBNU1lTIHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBMVF9DWUdQQVRIIHNldC4KLSsjIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KLStmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgIyBTZWUgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzI6Ci0rICAgIGZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCi0rICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCi0rICAgIGZ1bmNfY3lncGF0aCAtdSAtcCAiJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiA6IFwKLSsgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiIDogIiQxIgotKyAgZmkKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b19jeWd3aW4KLSsKLSsKLSsjIGZ1bmNfY29udmVydF9wYXRoX25peF90b19jeWd3aW4gQVJHCi0rIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKm5peCB0byBDeWd3aW4gZm9ybWF0LiAgUmVxdWlyZXMgQ3lnd2luIGluc3RhbGxlZCBpbiBhCi0rIyBhIHdpbmUgZW52aXJvbm1lbnQsIHdvcmtpbmcgd2luZXBhdGgsIGFuZCBMVF9DWUdQQVRIIHNldC4gIFJldHVybnMgcmVzdWx0IGluCi0rIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCi0rZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbiAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0rICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLSsgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tCi0rICAgICMgQVJHLiBtc3lzIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlLCBjeWdwYXRoIHR1cm5zIHRoZW0KLSsgICAgIyBpbnRvICcuOycgYW5kICc7LicsIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KLSsgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgotKyAgICBmdW5jX2N5Z3BhdGggLXUgLXAgIiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCIKLSsgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKLSsgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiA6IFwKLSsgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgotKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiIDogIiQxIgotKyAgZmkKLSt9Ci0rIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbgotKwotKwotICMgZnVuY19tb2RlX2NvbXBpbGUgYXJnLi4uCi0gZnVuY19tb2RlX2NvbXBpbGUgKCkKLSB7Ci1AQCAtMTMxNCwxMiArMTk4NSwxMiBAQCBmdW5jX21vZGVfY29tcGlsZSAoKQotIAkgIDs7Ci0gCi0gCS1waWUgfCAtZnBpZSB8IC1mUElFKQotLSAgICAgICAgICBwaWVfZmxhZz0iJHBpZV9mbGFnICRhcmciCi0rICAgICAgICAgIGZ1bmNfYXBwZW5kIHBpZV9mbGFnICIgJGFyZyIKLSAJICBjb250aW51ZQotIAkgIDs7Ci0gCi0gCS1zaGFyZWQgfCAtc3RhdGljIHwgLXByZWZlci1waWMgfCAtcHJlZmVyLW5vbi1waWMpCi0tCSAgbGF0ZXI9IiRsYXRlciAkYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGxhdGVyICIgJGFyZyIKLSAJICBjb250aW51ZQotIAkgIDs7Ci0gCi1AQCAtMTM0MCwxNSArMjAxMSwxNCBAQCBmdW5jX21vZGVfY29tcGlsZSAoKQotIAkgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPScsJwotIAkgIGZvciBhcmcgaW4gJGFyZ3M7IGRvCi0gCSAgICBJRlM9IiRzYXZlX2lmcyIKLS0JICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0tCSAgICBsYXN0YXJnPSIkbGFzdGFyZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCSAgICBmdW5jX2FwcGVuZF9xdW90ZWQgbGFzdGFyZyAiJGFyZyIKLSAJICBkb25lCi0gCSAgSUZTPSIkc2F2ZV9pZnMiCi0gCSAgZnVuY19zdHJpcG5hbWUgJyAnICcnICIkbGFzdGFyZyIKLSAJICBsYXN0YXJnPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSAKLSAJICAjIEFkZCB0aGUgYXJndW1lbnRzIHRvIGJhc2VfY29tcGlsZS4KLS0JICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGxhc3RhcmciCi0rCSAgZnVuY19hcHBlbmQgYmFzZV9jb21waWxlICIgJGxhc3RhcmciCi0gCSAgY29udGludWUKLSAJICA7OwotIAotQEAgLTEzNjQsOCArMjAzNCw3IEBAIGZ1bmNfbW9kZV9jb21waWxlICgpCi0gICAgICAgZXNhYyAgICAjICBjYXNlICRhcmdfbW9kZQotIAotICAgICAgICMgQWVzdGhldGljYWxseSBxdW90ZSB0aGUgcHJldmlvdXMgYXJndW1lbnQuCi0tICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGxhc3RhcmciCi0tICAgICAgYmFzZV9jb21waWxlPSIkYmFzZV9jb21waWxlICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsgICAgICBmdW5jX2FwcGVuZF9xdW90ZWQgYmFzZV9jb21waWxlICIkbGFzdGFyZyIKLSAgICAgZG9uZSAjIGZvciBhcmcKLSAKLSAgICAgY2FzZSAkYXJnX21vZGUgaW4KLUBAIC0xNDk2LDE3ICsyMTY1LDE2IEBAIGNvbXBpbGVyLiIKLSAJJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAotIAlleGl0ICRFWElUX0ZBSUxVUkUKLSAgICAgICBmaQotLSAgICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRvdXRwdXRfb2JqIgotKyAgICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkb3V0cHV0X29iaiIKLSAgICAgICAkRUNITyAiJHNyY2ZpbGUiID4gIiRsb2NrZmlsZSIKLSAgICAgZmkKLSAKLSAgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdAotLSAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkbG9ja2ZpbGUiCi0rICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkbG9ja2ZpbGUiCi0gICAgIHRyYXAgJyRvcHRfZHJ5X3J1biB8fCAkUk0gJHJlbW92ZWxpc3Q7IGV4aXQgJEVYSVRfRkFJTFVSRScgMSAyIDE1Ci0gCi0tICAgIGlmIHRlc3QgLW4gIiRmaXhfc3JjZmlsZV9wYXRoIjsgdGhlbgotLSAgICAgIGV2YWwgInNyY2ZpbGU9XCIkZml4X3NyY2ZpbGVfcGF0aFwiIgotLSAgICBmaQotKyAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJHNyY2ZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgIHNyY2ZpbGU9JGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAotICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkc3JjZmlsZSIKLSAgICAgcXNyY2ZpbGU9JGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0Ci0gCi1AQCAtMTUyNiw3ICsyMTk0LDcgQEAgY29tcGlsZXIuIgotIAotICAgICAgIGlmIHRlc3QgLXogIiRvdXRwdXRfb2JqIjsgdGhlbgotIAkjIFBsYWNlIFBJQyBvYmplY3RzIGluICRvYmpkaXIKLS0JY29tbWFuZD0iJGNvbW1hbmQgLW8gJGxvYmoiCi0rCWZ1bmNfYXBwZW5kIGNvbW1hbmQgIiAtbyAkbG9iaiIKLSAgICAgICBmaQotIAotICAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiCVwKLUBAIC0xNTczLDExICsyMjQxLDExIEBAIGNvbXBpbGVyLiIKLSAJY29tbWFuZD0iJGJhc2VfY29tcGlsZSAkcXNyY2ZpbGUgJHBpY19mbGFnIgotICAgICAgIGZpCi0gICAgICAgaWYgdGVzdCAiJGNvbXBpbGVyX2NfbyIgPSB5ZXM7IHRoZW4KLS0JY29tbWFuZD0iJGNvbW1hbmQgLW8gJG9iaiIKLSsJZnVuY19hcHBlbmQgY29tbWFuZCAiIC1vICRvYmoiCi0gICAgICAgZmkKLSAKLSAgICAgICAjIFN1cHByZXNzIGNvbXBpbGVyIG91dHB1dCBpZiB3ZSBhbHJlYWR5IGRpZCBhIFBJQyBjb21waWxhdGlvbi4KLS0gICAgICBjb21tYW5kPSIkY29tbWFuZCRzdXBwcmVzc19vdXRwdXQiCi0rICAgICAgZnVuY19hcHBlbmQgY29tbWFuZCAiJHN1cHByZXNzX291dHB1dCIKLSAgICAgICBmdW5jX3Nob3dfZXZhbF9sb2NhbGUgIiRjb21tYW5kIiBcCi0gICAgICAgICAnJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJwotIAotQEAgLTE2MjIsMTMgKzIyOTAsMTMgQEAgY29tcGlsZXIuIgotIH0KLSAKLSAkb3B0X2hlbHAgfHwgewotLSAgdGVzdCAiJG1vZGUiID0gY29tcGlsZSAmJiBmdW5jX21vZGVfY29tcGlsZSAkezErIiRAIn0KLSsgIHRlc3QgIiRvcHRfbW9kZSIgPSBjb21waWxlICYmIGZ1bmNfbW9kZV9jb21waWxlICR7MSsiJEAifQotIH0KLSAKLSBmdW5jX21vZGVfaGVscCAoKQotIHsKLSAgICAgIyBXZSBuZWVkIHRvIGRpc3BsYXkgaGVscCBmb3IgZWFjaCBvZiB0aGUgbW9kZXMuCi0tICAgIGNhc2UgJG1vZGUgaW4KLSsgICAgY2FzZSAkb3B0X21vZGUgaW4KLSAgICAgICAiIikKLSAgICAgICAgICMgR2VuZXJpYyBoZWxwIGlzIGV4dHJhY3RlZCBmcm9tIHRoZSB1c2FnZSBjb21tZW50cwotICAgICAgICAgIyBhdCB0aGUgc3RhcnQgb2YgdGhpcyBmaWxlLgotQEAgLTE2NTksOCArMjMyNyw4IEBAIFRoaXMgbW9kZSBhY2NlcHRzIHRoZSBmb2xsb3dpbmcgYWRkaXRpb25hbCBvcHRpb25zOgotIAotICAgLW8gT1VUUFVULUZJTEUgICAgc2V0IHRoZSBvdXRwdXQgZmlsZSBuYW1lIHRvIE9VVFBVVC1GSUxFCi0gICAtbm8tc3VwcHJlc3MgICAgICBkbyBub3Qgc3VwcHJlc3MgY29tcGlsZXIgb3V0cHV0IGZvciBtdWx0aXBsZSBwYXNzZXMKLS0gIC1wcmVmZXItcGljICAgICAgIHRyeSB0byBidWlsZGluZyBQSUMgb2JqZWN0cyBvbmx5Ci0tICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGRpbmcgbm9uLVBJQyBvYmplY3RzIG9ubHkKLSsgIC1wcmVmZXItcGljICAgICAgIHRyeSB0byBidWlsZCBQSUMgb2JqZWN0cyBvbmx5Ci0rICAtcHJlZmVyLW5vbi1waWMgICB0cnkgdG8gYnVpbGQgbm9uLVBJQyBvYmplY3RzIG9ubHkKLSAgIC1zaGFyZWQgICAgICAgICAgIGRvIG5vdCBidWlsZCBhIFxgLm8nIGZpbGUgc3VpdGFibGUgZm9yIHN0YXRpYyBsaW5raW5nCi0gICAtc3RhdGljICAgICAgICAgICBvbmx5IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKLSAgIC1XYyxGTEFHICAgICAgICAgIHBhc3MgRkxBRyBkaXJlY3RseSB0byB0aGUgY29tcGlsZXIKLUBAIC0xODA0LDcgKzI0NzIsNyBAQCBPdGhlcndpc2UsIG9ubHkgRklMRSBpdHNlbGYgaXMgZGVsZXRlZCB1c2luZyBSTS4iCi0gICAgICAgICA7OwotIAotICAgICAgICopCi0tICAgICAgICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciCi0rICAgICAgICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkb3B0X21vZGUnIgotICAgICAgICAgOzsKLSAgICAgZXNhYwotIAotQEAgLTE4MTksMTMgKzI0ODcsMTMgQEAgaWYgJG9wdF9oZWxwOyB0aGVuCi0gICBlbHNlCi0gICAgIHsKLSAgICAgICBmdW5jX2hlbHAgbm9leGl0Ci0tICAgICAgZm9yIG1vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbwotKyAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCi0gCWZ1bmNfbW9kZV9oZWxwCi0gICAgICAgZG9uZQotICAgICB9IHwgc2VkIC1uICcxcDsgMiwkcy9eVXNhZ2U6LyAgb3I6IC9wJwotICAgICB7Ci0gICAgICAgZnVuY19oZWxwIG5vZXhpdAotLSAgICAgIGZvciBtb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KLSsgICAgICBmb3Igb3B0X21vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbwotIAllY2hvCi0gCWZ1bmNfbW9kZV9oZWxwCi0gICAgICAgZG9uZQotQEAgLTE4NTQsMTMgKzI1MjIsMTYgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKLSAgICAgICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYSBDT01NQU5EIgotIAotICAgICAjIEhhbmRsZSAtZGxvcGVuIGZsYWdzIGltbWVkaWF0ZWx5LgotLSAgICBmb3IgZmlsZSBpbiAkZXhlY3V0ZV9kbGZpbGVzOyBkbwotKyAgICBmb3IgZmlsZSBpbiAkb3B0X2Rsb3BlbjsgZG8KLSAgICAgICB0ZXN0IC1mICIkZmlsZSIgXAotIAl8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIGZpbGUiCi0gCi0gICAgICAgZGlyPQotICAgICAgIGNhc2UgJGZpbGUgaW4KLSAgICAgICAqLmxhKQotKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZpbGUiCi0rCWZpbGU9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAotKwotIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgotIAlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAotIAkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi1AQCAtMTg4Miw3ICsyNTUzLDcgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKLSAJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLSAKLSAJaWYgdGVzdCAtZiAiJGRpci8kb2JqZGlyLyRkbG5hbWUiOyB0aGVuCi0tCSAgZGlyPSIkZGlyLyRvYmpkaXIiCi0rCSAgZnVuY19hcHBlbmQgZGlyICIvJG9iamRpciIKLSAJZWxzZQotIAkgIGlmIHRlc3QgISAtZiAiJGRpci8kZGxuYW1lIjsgdGhlbgotIAkgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgXGAkZGxuYW1lJyBpbiBcYCRkaXInIG9yIFxgJGRpci8kb2JqZGlyJyIKLUBAIC0xOTA3LDEwICsyNTc4LDEwIEBAIGZ1bmNfbW9kZV9leGVjdXRlICgpCi0gICAgICAgdGVzdCAtbiAiJGFic2RpciIgJiYgZGlyPSIkYWJzZGlyIgotIAotICAgICAgICMgTm93IGFkZCB0aGUgZGlyZWN0b3J5IHRvIHNobGlicGF0aF92YXIuCi0tICAgICAgaWYgZXZhbCB0ZXN0IC16IFwiXCQkc2hsaWJwYXRoX3ZhclwiOyB0aGVuCi0tCWV2YWwgJHNobGlicGF0aF92YXI9XCRkaXIKLSsgICAgICBpZiBldmFsICJ0ZXN0IC16IFwiXCQkc2hsaWJwYXRoX3ZhclwiIjsgdGhlbgotKwlldmFsICIkc2hsaWJwYXRoX3Zhcj1cIlwkZGlyXCIiCi0gICAgICAgZWxzZQotLQlldmFsICRzaGxpYnBhdGhfdmFyPVwkZGlyOlwkJHNobGlicGF0aF92YXIKLSsJZXZhbCAiJHNobGlicGF0aF92YXI9XCJcJGRpcjpcJCRzaGxpYnBhdGhfdmFyXCIiCi0gICAgICAgZmkKLSAgICAgZG9uZQotIAotQEAgLTE5MzksOCArMjYxMCw3IEBAIGZ1bmNfbW9kZV9leGVjdXRlICgpCi0gCTs7Ci0gICAgICAgZXNhYwotICAgICAgICMgUXVvdGUgYXJndW1lbnRzICh0byBwcmVzZXJ2ZSBzaGVsbCBtZXRhY2hhcmFjdGVycykuCi0tICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZpbGUiCi0tICAgICAgYXJncz0iJGFyZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKyAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBhcmdzICIkZmlsZSIKLSAgICAgZG9uZQotIAotICAgICBpZiB0ZXN0ICJYJG9wdF9kcnlfcnVuIiA9IFhmYWxzZTsgdGhlbgotQEAgLTE5NzIsMjIgKzI2NDIsNTkgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKLSAgICAgZmkKLSB9Ci0gCi0tdGVzdCAiJG1vZGUiID0gZXhlY3V0ZSAmJiBmdW5jX21vZGVfZXhlY3V0ZSAkezErIiRAIn0KLSt0ZXN0ICIkb3B0X21vZGUiID0gZXhlY3V0ZSAmJiBmdW5jX21vZGVfZXhlY3V0ZSAkezErIiRAIn0KLSAKLSAKLSAjIGZ1bmNfbW9kZV9maW5pc2ggYXJnLi4uCi0gZnVuY19tb2RlX2ZpbmlzaCAoKQotIHsKLSAgICAgJG9wdF9kZWJ1ZwotLSAgICBsaWJkaXJzPSIkbm9ub3B0IgotKyAgICBsaWJzPQotKyAgICBsaWJkaXJzPQotICAgICBhZG1pbmNtZHM9Ci0gCi0tICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCi0tICAgICAgZm9yIGRpcgotLSAgICAgIGRvCi0tCWxpYmRpcnM9IiRsaWJkaXJzICRkaXIiCi0tICAgICAgZG9uZQotKyAgICBmb3Igb3B0IGluICIkbm9ub3B0IiAkezErIiRAIn0KLSsgICAgZG8KLSsgICAgICBpZiB0ZXN0IC1kICIkb3B0IjsgdGhlbgotKwlmdW5jX2FwcGVuZCBsaWJkaXJzICIgJG9wdCIKLSAKLSsgICAgICBlbGlmIHRlc3QgLWYgIiRvcHQiOyB0aGVuCi0rCWlmIGZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRvcHQiOyB0aGVuCi0rCSAgZnVuY19hcHBlbmQgbGlicyAiICRvcHQiCi0rCWVsc2UKLSsJICBmdW5jX3dhcm5pbmcgIlxgJG9wdCcgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotKwlmaQotKwotKyAgICAgIGVsc2UKLSsJZnVuY19mYXRhbF9lcnJvciAiaW52YWxpZCBhcmd1bWVudCBcYCRvcHQnIgotKyAgICAgIGZpCi0rICAgIGRvbmUKLSsKLSsgICAgaWYgdGVzdCAtbiAiJGxpYnMiOyB0aGVuCi0rICAgICAgaWYgdGVzdCAtbiAiJGx0X3N5c3Jvb3QiOyB0aGVuCi0rICAgICAgICBzeXNyb290X3JlZ2V4PWAkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJHNlZF9tYWtlX2xpdGVyYWxfcmVnZXgiYAotKyAgICAgICAgc3lzcm9vdF9jbWQ9InMvXChbICddXCkkc3lzcm9vdF9yZWdleC9cMS9nOyIKLSsgICAgICBlbHNlCi0rICAgICAgICBzeXNyb290X2NtZD0KLSsgICAgICBmaQotKwotKyAgICAgICMgUmVtb3ZlIHN5c3Jvb3QgcmVmZXJlbmNlcwotKyAgICAgIGlmICRvcHRfZHJ5X3J1bjsgdGhlbgotKyAgICAgICAgZm9yIGxpYiBpbiAkbGliczsgZG8KLSsgICAgICAgICAgZWNobyAicmVtb3ZpbmcgcmVmZXJlbmNlcyB0byAkbHRfc3lzcm9vdCBhbmQgXGA9JyBwcmVmaXhlcyBmcm9tICRsaWIiCi0rICAgICAgICBkb25lCi0rICAgICAgZWxzZQotKyAgICAgICAgdG1wZGlyPWBmdW5jX21rdGVtcGRpcmAKLSsgICAgICAgIGZvciBsaWIgaW4gJGxpYnM7IGRvCi0rCSAgc2VkIC1lICIke3N5c3Jvb3RfY21kfSBzL1woWyAnXS1bTFJdXCk9L1wxL2c7IHMvXChbICddXCk9L1wxL2ciICRsaWIgXAotKwkgICAgPiAkdG1wZGlyL3RtcC1sYQotKwkgIG12IC1mICR0bXBkaXIvdG1wLWxhICRsaWIKLSsJZG9uZQotKyAgICAgICAgJHtSTX1yICIkdG1wZGlyIgotKyAgICAgIGZpCi0rICAgIGZpCi0rCi0rICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCi0gICAgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KLSAJaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzIjsgdGhlbgotIAkgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBmaW5pc2ggY29tbWFuZHMuCi1AQCAtMTk5Nyw3ICsyNzA0LDcgQEAgZnVuY19tb2RlX2ZpbmlzaCAoKQotIAlpZiB0ZXN0IC1uICIkZmluaXNoX2V2YWwiOyB0aGVuCi0gCSAgIyBEbyB0aGUgc2luZ2xlIGZpbmlzaF9ldmFsLgotIAkgIGV2YWwgY21kcz1cIiRmaW5pc2hfZXZhbFwiCi0tCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiRjbWRzIiB8fCBhZG1pbmNtZHM9IiRhZG1pbmNtZHMKLSsJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJGNtZHMiIHx8IGZ1bmNfYXBwZW5kIGFkbWluY21kcyAiCi0gICAgICAgICRjbWRzIgotIAlmaQotICAgICAgIGRvbmUKLUBAIC0yMDA2LDUzICsyNzEzLDU1IEBAIGZ1bmNfbW9kZV9maW5pc2ggKCkKLSAgICAgIyBFeGl0IGhlcmUgaWYgdGhleSB3YW50ZWQgc2lsZW50IG1vZGUuCi0gICAgICRvcHRfc2lsZW50ICYmIGV4aXQgJEVYSVRfU1VDQ0VTUwotIAotLSAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgotLSAgICBlY2hvICJMaWJyYXJpZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbjoiCi0tICAgIGZvciBsaWJkaXIgaW4gJGxpYmRpcnM7IGRvCi0tICAgICAgJEVDSE8gIiAgICRsaWJkaXIiCi0tICAgIGRvbmUKLS0gICAgZWNobwotLSAgICBlY2hvICJJZiB5b3UgZXZlciBoYXBwZW4gdG8gd2FudCB0byBsaW5rIGFnYWluc3QgaW5zdGFsbGVkIGxpYnJhcmllcyIKLS0gICAgZWNobyAiaW4gYSBnaXZlbiBkaXJlY3RvcnksIExJQkRJUiwgeW91IG11c3QgZWl0aGVyIHVzZSBsaWJ0b29sLCBhbmQiCi0tICAgIGVjaG8gInNwZWNpZnkgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGxpYnJhcnksIG9yIHVzZSB0aGUgXGAtTExJQkRJUiciCi0tICAgIGVjaG8gImZsYWcgZHVyaW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKLS0gICAgaWYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiOyB0aGVuCi0tICAgICAgZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRzaGxpYnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKLS0gICAgICBlY2hvICIgICAgIGR1cmluZyBleGVjdXRpb24iCi0tICAgIGZpCi0tICAgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KLS0gICAgICBlY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKLS0gICAgICBlY2hvICIgICAgIGR1cmluZyBsaW5raW5nIgotLSAgICBmaQotLSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KLS0gICAgICBsaWJkaXI9TElCRElSCi0tICAgICAgZXZhbCAiZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCi0rICAgIGlmIHRlc3QgLW4gIiRmaW5pc2hfY21kcyRmaW5pc2hfZXZhbCIgJiYgdGVzdCAtbiAiJGxpYmRpcnMiOyB0aGVuCi0rICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLSsgICAgICBlY2hvICJMaWJyYXJpZXMgaGF2ZSBiZWVuIGluc3RhbGxlZCBpbjoiCi0rICAgICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KLSsJJEVDSE8gIiAgICRsaWJkaXIiCi0rICAgICAgZG9uZQotKyAgICAgIGVjaG8KLSsgICAgICBlY2hvICJJZiB5b3UgZXZlciBoYXBwZW4gdG8gd2FudCB0byBsaW5rIGFnYWluc3QgaW5zdGFsbGVkIGxpYnJhcmllcyIKLSsgICAgICBlY2hvICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKLSsgICAgICBlY2hvICJzcGVjaWZ5IHRoZSBmdWxsIHBhdGhuYW1lIG9mIHRoZSBsaWJyYXJ5LCBvciB1c2UgdGhlIFxgLUxMSUJESVInIgotKyAgICAgIGVjaG8gImZsYWcgZHVyaW5nIGxpbmtpbmcgYW5kIGRvIGF0IGxlYXN0IG9uZSBvZiB0aGUgZm9sbG93aW5nOiIKLSsgICAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KLSsJZWNobyAiICAgLSBhZGQgTElCRElSIHRvIHRoZSBcYCRzaGxpYnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKLSsJZWNobyAiICAgICBkdXJpbmcgZXhlY3V0aW9uIgotKyAgICAgIGZpCi0rICAgICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotKwllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHJ1bnBhdGhfdmFyJyBlbnZpcm9ubWVudCB2YXJpYWJsZSIKLSsJZWNobyAiICAgICBkdXJpbmcgbGlua2luZyIKLSsgICAgICBmaQotKyAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgotKwlsaWJkaXI9TElCRElSCi0rCWV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSAKLS0gICAgICAkRUNITyAiICAgLSB1c2UgdGhlIFxgJGZsYWcnIGxpbmtlciBmbGFnIgotLSAgICBmaQotLSAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgotLSAgICAgICRFQ0hPICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBydW4gdGhlc2UgY29tbWFuZHM6JGFkbWluY21kcyIKLS0gICAgZmkKLS0gICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KLS0gICAgICBlY2hvICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhZGQgTElCRElSIHRvIFxgL2V0Yy9sZC5zby5jb25mJyIKLS0gICAgZmkKLS0gICAgZWNobwotKwkkRUNITyAiICAgLSB1c2UgdGhlIFxgJGZsYWcnIGxpbmtlciBmbGFnIgotKyAgICAgIGZpCi0rICAgICAgaWYgdGVzdCAtbiAiJGFkbWluY21kcyI7IHRoZW4KLSsJJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgotKyAgICAgIGZpCi0rICAgICAgaWYgdGVzdCAtZiAvZXRjL2xkLnNvLmNvbmY7IHRoZW4KLSsJZWNobyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgYWRkIExJQkRJUiB0byBcYC9ldGMvbGQuc28uY29uZiciCi0rICAgICAgZmkKLSsgICAgICBlY2hvCi0gCi0tICAgIGVjaG8gIlNlZSBhbnkgb3BlcmF0aW5nIHN5c3RlbSBkb2N1bWVudGF0aW9uIGFib3V0IHNoYXJlZCBsaWJyYXJpZXMgZm9yIgotLSAgICBjYXNlICRob3N0IGluCi0tICAgICAgc29sYXJpczIuWzY3ODldfHNvbGFyaXMyLjFbMC05XSkKLS0gICAgICAgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpLCBjcmxlKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwiCi0tCWVjaG8gInBhZ2VzLiIKLS0JOzsKLS0gICAgICAqKQotLSAgICAgICAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCBwYWdlcy4iCi0tICAgICAgICA7OwotLSAgICBlc2FjCi0tICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCi0rICAgICAgZWNobyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCi0rICAgICAgY2FzZSAkaG9zdCBpbgotKwlzb2xhcmlzMi5bNjc4OV18c29sYXJpczIuMVswLTldKQotKwkgIGVjaG8gIm1vcmUgaW5mb3JtYXRpb24sIHN1Y2ggYXMgdGhlIGxkKDEpLCBjcmxlKDEpIGFuZCBsZC5zbyg4KSBtYW51YWwiCi0rCSAgZWNobyAicGFnZXMuIgotKwkgIDs7Ci0rCSopCi0rCSAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCBwYWdlcy4iCi0rCSAgOzsKLSsgICAgICBlc2FjCi0rICAgICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKLSsgICAgZmkKLSAgICAgZXhpdCAkRVhJVF9TVUNDRVNTCi0gfQotIAotLXRlc3QgIiRtb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQotK3Rlc3QgIiRvcHRfbW9kZSIgPSBmaW5pc2ggJiYgZnVuY19tb2RlX2ZpbmlzaCAkezErIiRAIn0KLSAKLSAKLSAjIGZ1bmNfbW9kZV9pbnN0YWxsIGFyZy4uLgotQEAgLTIwNzcsNyArMjc4Niw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gICAgICMgVGhlIHJlYWwgZmlyc3QgYXJndW1lbnQgc2hvdWxkIGJlIHRoZSBuYW1lIG9mIHRoZSBpbnN0YWxsYXRpb24gcHJvZ3JhbS4KLSAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIGl0LgotICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotLSAgICBpbnN0YWxsX3Byb2c9IiRpbnN0YWxsX3Byb2ckZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfcHJvZyAiJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotICAgICBpbnN0YWxsX3NoYXJlZF9wcm9nPSRpbnN0YWxsX3Byb2cKLSAgICAgY2FzZSAiICRpbnN0YWxsX3Byb2cgIiBpbgotICAgICAgICpbXFxcIC9dY3BcICopIGluc3RhbGxfY3A9OiA7OwotQEAgLTIwOTcsNyArMjgwNiw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gICAgIGRvCi0gICAgICAgYXJnMj0KLSAgICAgICBpZiB0ZXN0IC1uICIkZGVzdCI7IHRoZW4KLS0JZmlsZXM9IiRmaWxlcyAkZGVzdCIKLSsJZnVuY19hcHBlbmQgZmlsZXMgIiAkZGVzdCIKLSAJZGVzdD0kYXJnCi0gCWNvbnRpbnVlCi0gICAgICAgZmkKLUBAIC0yMTM1LDExICsyODQ0LDExIEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gCi0gICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIHRoZSBhcmd1bWVudC4KLSAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgotLSAgICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rICAgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9wcm9nICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotICAgICAgIGlmIHRlc3QgLW4gIiRhcmcyIjsgdGhlbgotIAlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnMiIKLSAgICAgICBmaQotLSAgICAgIGluc3RhbGxfc2hhcmVkX3Byb2c9IiRpbnN0YWxsX3NoYXJlZF9wcm9nICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsgICAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3NoYXJlZF9wcm9nICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotICAgICBkb25lCi0gCi0gICAgIHRlc3QgLXogIiRpbnN0YWxsX3Byb2ciICYmIFwKLUBAIC0yMTUxLDcgKzI4NjAsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQotICAgICBpZiB0ZXN0IC1uICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIiAmJiAkbm9fbW9kZTsgdGhlbgotICAgICAgIGlmICRpbnN0YWxsX2NwOyB0aGVuIDo7IGVsc2UKLSAJZnVuY19xdW90ZV9mb3JfZXZhbCAiJGluc3RhbGxfb3ZlcnJpZGVfbW9kZSIKLS0JaW5zdGFsbF9zaGFyZWRfcHJvZz0iJGluc3RhbGxfc2hhcmVkX3Byb2cgLW0gJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwlmdW5jX2FwcGVuZCBpbnN0YWxsX3NoYXJlZF9wcm9nICIgLW0gJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotICAgICAgIGZpCi0gICAgIGZpCi0gCi1AQCAtMjIwOSwxMCArMjkxOCwxMyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQotICAgICAgIGNhc2UgJGZpbGUgaW4KLSAgICAgICAqLiRsaWJleHQpCi0gCSMgRG8gdGhlIHN0YXRpYyBsaWJyYXJpZXMgbGF0ZXIuCi0tCXN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRmaWxlIgotKwlmdW5jX2FwcGVuZCBzdGF0aWNsaWJzICIgJGZpbGUiCi0gCTs7Ci0gCi0gICAgICAgKi5sYSkKLSsJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmaWxlIgotKwlmaWxlPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKLSsKLSAJIyBDaGVjayB0byBzZWUgdGhhdCB0aGlzIHJlYWxseSBpcyBhIGxpYnRvb2wgYXJjaGl2ZS4KLSAJZnVuY19sYWxpYl91bnNhZmVfcCAiJGZpbGUiIFwKLSAJICB8fCBmdW5jX2ZhdGFsX2hlbHAgIlxgJGZpbGUnIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLUBAIC0yMjI2LDIzICsyOTM4LDMwIEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gCWlmIHRlc3QgIlgkZGVzdGRpciIgPSAiWCRsaWJkaXIiOyB0aGVuCi0gCSAgY2FzZSAiJGN1cnJlbnRfbGliZGlycyAiIGluCi0gCSAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAqKSBjdXJyZW50X2xpYmRpcnM9IiRjdXJyZW50X2xpYmRpcnMgJGxpYmRpciIgOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBjdXJyZW50X2xpYmRpcnMgIiAkbGliZGlyIiA7OwotIAkgIGVzYWMKLSAJZWxzZQotIAkgICMgTm90ZSB0aGUgbGliZGlyIGFzIGEgZnV0dXJlIGxpYmRpci4KLSAJICBjYXNlICIkZnV0dXJlX2xpYmRpcnMgIiBpbgotIAkgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgKikgZnV0dXJlX2xpYmRpcnM9IiRmdXR1cmVfbGliZGlycyAkbGliZGlyIiA7OwotKwkgICopIGZ1bmNfYXBwZW5kIGZ1dHVyZV9saWJkaXJzICIgJGxpYmRpciIgOzsKLSAJICBlc2FjCi0gCWZpCi0gCi0gCWZ1bmNfZGlybmFtZSAiJGZpbGUiICIvIiAiIgotIAlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgotLQlkaXI9IiRkaXIkb2JqZGlyIgotKwlmdW5jX2FwcGVuZCBkaXIgIiRvYmpkaXIiCi0gCi0gCWlmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KLSsgICAgICAjIFN0cmlwIGFueSB0cmFpbGluZyBzbGFzaCBmcm9tIHRoZSBkZXN0aW5hdGlvbi4KLSsgICAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLycgIiRsaWJkaXIiCi0rICAgICAgZGVzdGxpYmRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0rCi0rICAgICAgZnVuY19zdHJpcG5hbWUgJycgJy8nICIkZGVzdGRpciIKLSsgICAgICBzX2Rlc3RkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotKwotIAkgICMgRGV0ZXJtaW5lIHRoZSBwcmVmaXggdGhlIHVzZXIgaGFzIGFwcGxpZWQgdG8gb3VyIGZ1dHVyZSBkaXIuCi0tCSAgaW5zdF9wcmVmaXhfZGlyPWAkRUNITyAiJGRlc3RkaXIiIHwgJFNFRCAtZSAicyUkbGliZGlyXCQlJSJgCi0rCSAgaW5zdF9wcmVmaXhfZGlyPWAkRUNITyAiWCRzX2Rlc3RkaXIiIHwgJFhzZWQgLWUgInMlJGRlc3RsaWJkaXJcJCUlImAKLSAKLSAJICAjIERvbid0IGFsbG93IHRoZSB1c2VyIHRvIHBsYWNlIHVzIG91dHNpZGUgb2Ygb3VyIGV4cGVjdGVkCi0gCSAgIyBsb2NhdGlvbiBiL2MgdGhpcyBwcmV2ZW50cyBmaW5kaW5nIGRlcGVuZGVudCBsaWJyYXJpZXMgdGhhdAotQEAgLTIzMTUsNyArMzAzNCw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCi0gCWZ1bmNfc2hvd19ldmFsICIkaW5zdGFsbF9wcm9nICRpbnN0bmFtZSAkZGVzdGRpci8kbmFtZSIgJ2V4aXQgJD8nCi0gCi0gCSMgTWF5YmUgaW5zdGFsbCB0aGUgc3RhdGljIGxpYnJhcnksIHRvby4KLS0JdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBzdGF0aWNsaWJzPSIkc3RhdGljbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKLSsJdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBmdW5jX2FwcGVuZCBzdGF0aWNsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCi0gCTs7Ci0gCi0gICAgICAgKi5sbykKLUBAIC0yNTAzLDcgKzMyMjIsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQotICAgICB0ZXN0IC1uICIkZnV0dXJlX2xpYmRpcnMiICYmIFwKLSAgICAgICBmdW5jX3dhcm5pbmcgInJlbWVtYmVyIHRvIHJ1biBcYCRwcm9nbmFtZSAtLWZpbmlzaCRmdXR1cmVfbGliZGlycyciCi0gCi0tICAgIGlmIHRlc3QgLW4gIiRjdXJyZW50X2xpYmRpcnMiICYmICRvcHRfZmluaXNoOyB0aGVuCi0rICAgIGlmIHRlc3QgLW4gIiRjdXJyZW50X2xpYmRpcnMiOyB0aGVuCi0gICAgICAgIyBNYXliZSBqdXN0IGRvIGEgZHJ5IHJ1bi4KLSAgICAgICAkb3B0X2RyeV9ydW4gJiYgY3VycmVudF9saWJkaXJzPSIgLW4kY3VycmVudF9saWJkaXJzIgotICAgICAgIGV4ZWNfY21kPSckU0hFTEwgJHByb2dwYXRoICRwcmVzZXJ2ZV9hcmdzIC0tZmluaXNoJGN1cnJlbnRfbGliZGlycycKLUBAIC0yNTEyLDcgKzMyMzEsNyBAQCBmdW5jX21vZGVfaW5zdGFsbCAoKQotICAgICBmaQotIH0KLSAKLS10ZXN0ICIkbW9kZSIgPSBpbnN0YWxsICYmIGZ1bmNfbW9kZV9pbnN0YWxsICR7MSsiJEAifQotK3Rlc3QgIiRvcHRfbW9kZSIgPSBpbnN0YWxsICYmIGZ1bmNfbW9kZV9pbnN0YWxsICR7MSsiJEAifQotIAotIAotICMgZnVuY19nZW5lcmF0ZV9kbHN5bXMgb3V0cHV0bmFtZSBvcmlnaW5hdG9yIHBpY19wCi1AQCAtMjU1OSw2ICszMjc4LDE4IEBAIGV4dGVybiBcIkNcIiB7Ci0gI3ByYWdtYSBHQ0MgZGlhZ25vc3RpYyBpZ25vcmVkIFwiLVdzdHJpY3QtcHJvdG90eXBlc1wiCi0gI2VuZGlmCi0gCi0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gLyogRXh0ZXJuYWwgc3ltYm9sIGRlY2xhcmF0aW9ucyBmb3IgdGhlIGNvbXBpbGVyLiAqL1wKLSAiCi0gCi1AQCAtMjU3MCwyMSArMzMwMSwyMiBAQCBleHRlcm4gXCJDXCIgewotIAkgICMgQWRkIG91ciBvd24gcHJvZ3JhbSBvYmplY3RzIHRvIHRoZSBzeW1ib2wgbGlzdC4KLSAJICBwcm9nZmlsZXM9YCRFQ0hPICIkb2JqcyRvbGRfZGVwbGlicyIgfCAkU1AyTkwgfCAkU0VEICIkbG8ybyIgfCAkTkwyU1BgCi0gCSAgZm9yIHByb2dmaWxlIGluICRwcm9nZmlsZXM7IGRvCi0tCSAgICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJHByb2dmaWxlJyIKLS0JICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkTk0gJHByb2dmaWxlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKLSsJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkcHJvZ2ZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rCSAgICBmdW5jX3ZlcmJvc2UgImV4dHJhY3RpbmcgZ2xvYmFsIEMgc3ltYm9scyBmcm9tIFxgJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCciCi0rCSAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJE5NICRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgotIAkgIGRvbmUKLSAKLSAJICBpZiB0ZXN0IC1uICIkZXhjbHVkZV9leHBzeW1zIjsgdGhlbgotIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKLS0JICAgICAgJEVHUkVQIC12ICIgKCRleGNsdWRlX2V4cHN5bXMpJCIgIiRubGlzdCIgPiAiJG5saXN0IlQKLS0JICAgICAgJE1WICIkbmxpc3QiVCAiJG5saXN0IgotKwkgICAgICBldmFsICckRUdSRVAgLXYgIiAoJGV4Y2x1ZGVfZXhwc3ltcykkIiAiJG5saXN0IiA+ICIkbmxpc3QiVCcKLSsJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKLSAJICAgIH0KLSAJICBmaQotIAotIAkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9sc19yZWdleCI7IHRoZW4KLSAJICAgICRvcHRfZHJ5X3J1biB8fCB7Ci0tCSAgICAgICRFR1JFUCAtZSAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAiJG5saXN0IiA+ICIkbmxpc3QiVAotLQkgICAgICAkTVYgIiRubGlzdCJUICIkbmxpc3QiCi0rCSAgICAgIGV2YWwgJyRFR1JFUCAtZSAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IiAiJG5saXN0IiA+ICIkbmxpc3QiVCcKLSsJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKLSAJICAgIH0KLSAJICBmaQotIAotQEAgLTI1OTMsMjMgKzMzMjUsMjMgQEAgZXh0ZXJuIFwiQ1wiIHsKLSAJICAgIGV4cG9ydF9zeW1ib2xzPSIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiCi0gCSAgICAkb3B0X2RyeV9ydW4gfHwgewotIAkgICAgICAkUk0gJGV4cG9ydF9zeW1ib2xzCi0tCSAgICAgICR7U0VEfSAtbiAtZSAnL146IEBQUk9HUkFNQCAkL2QnIC1lICdzL14uKiBcKC4qXCkkL1wxL3AnIDwgIiRubGlzdCIgPiAiJGV4cG9ydF9zeW1ib2xzIgotKwkgICAgICBldmFsICIke1NFRH0gLW4gLWUgJy9eOiBAUFJPR1JBTUAgJC9kJyAtZSAncy9eLiogXCguKlwpJC9cMS9wJyAiJzwgIiRubGlzdCIgPiAiJGV4cG9ydF9zeW1ib2xzIicKLSAJICAgICAgY2FzZSAkaG9zdCBpbgotIAkgICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKLS0gICAgICAgICAgICAgICAgZWNobyBFWFBPUlRTID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKLS0gICAgICAgICAgICAgICAgY2F0ICIkZXhwb3J0X3N5bWJvbHMiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiCi0rICAgICAgICAgICAgICAgIGV2YWwgImVjaG8gRVhQT1JUUyAiJz4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCi0rICAgICAgICAgICAgICAgIGV2YWwgJ2NhdCAiJGV4cG9ydF9zeW1ib2xzIiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKLSAJICAgICAgICA7OwotIAkgICAgICBlc2FjCi0gCSAgICB9Ci0gCSAgZWxzZQotIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKLS0JICAgICAgJHtTRUR9IC1lICdzL1woW10uWypeJF1cKS9cXFwxL2cnIC1lICdzL14vIC8nIC1lICdzLyQvJC8nIDwgIiRleHBvcnRfc3ltYm9scyIgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIgotLQkgICAgICAkR1JFUCAtZiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIiA8ICIkbmxpc3QiID4gIiRubGlzdCJUCi0tCSAgICAgICRNViAiJG5saXN0IlQgIiRubGlzdCIKLSsJICAgICAgZXZhbCAiJHtTRUR9IC1lICdzL1woW10uWypeJF1cKS9cXFxcXDEvZycgLWUgJ3MvXi8gLycgLWUgJ3MvJC8kLyciJyA8ICIkZXhwb3J0X3N5bWJvbHMiID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCInCi0rCSAgICAgIGV2YWwgJyRHUkVQIC1mICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlQnCi0rCSAgICAgIGV2YWwgJyRNViAiJG5saXN0IlQgIiRubGlzdCInCi0gCSAgICAgIGNhc2UgJGhvc3QgaW4KLSAJICAgICAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKLS0JICAgICAgICAgIGVjaG8gRVhQT1JUUyA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiCi0tCSAgICAgICAgICBjYXQgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKLSsJICAgICAgICAgIGV2YWwgImVjaG8gRVhQT1JUUyAiJz4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCi0rCSAgICAgICAgICBldmFsICdjYXQgIiRubGlzdCIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiInCi0gCSAgICAgICAgICA7OwotIAkgICAgICBlc2FjCi0gCSAgICB9Ci1AQCAtMjYyMCwxMCArMzM1Miw1MiBAQCBleHRlcm4gXCJDXCIgewotIAkgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkZGxwcmVmaWxlJyIKLSAJICBmdW5jX2Jhc2VuYW1lICIkZGxwcmVmaWxlIgotIAkgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0JICAkb3B0X2RyeV9ydW4gfHwgewotLQkgICAgJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IgotLQkgICAgZXZhbCAiJE5NICRkbHByZWZpbGUgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgotLQkgIH0KLSsgICAgICAgICAgY2FzZSAkaG9zdCBpbgotKwkgICAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCi0rCSAgICAgICMgaWYgYW4gaW1wb3J0IGxpYnJhcnksIHdlIG5lZWQgdG8gb2J0YWluIGRsbmFtZQotKwkgICAgICBpZiBmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCAiJGRscHJlZmlsZSI7IHRoZW4KLSsJICAgICAgICBmdW5jX3RyX3NoICIkZGxwcmVmaWxlIgotKwkgICAgICAgIGV2YWwgImN1cnJfbGFmaWxlPVwkbGliZmlsZV8kZnVuY190cl9zaF9yZXN1bHQiCi0rCSAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9IiIKLSsJICAgICAgICBpZiB0ZXN0IC1uICIkY3Vycl9sYWZpbGUiICYmIGZ1bmNfbGFsaWJfcCAiJGN1cnJfbGFmaWxlIjsgdGhlbgotKwkgICAgICAgICAgIyBVc2Ugc3Vic2hlbGwsIHRvIGF2b2lkIGNsb2JiZXJpbmcgY3VycmVudCB2YXJpYWJsZSB2YWx1ZXMKLSsJICAgICAgICAgIGRscHJlZmlsZV9kbG5hbWU9YHNvdXJjZSAiJGN1cnJfbGFmaWxlIiAmJiBlY2hvICIkZGxuYW1lImAKLSsJICAgICAgICAgIGlmIHRlc3QgLW4gIiRkbHByZWZpbGVfZGxuYW1lIiA7IHRoZW4KLSsJICAgICAgICAgICAgZnVuY19iYXNlbmFtZSAiJGRscHJlZmlsZV9kbG5hbWUiCi0rCSAgICAgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0rCSAgICAgICAgICBlbHNlCi0rCSAgICAgICAgICAgICMgbm8gbGFmaWxlLiB1c2VyIGV4cGxpY2l0bHkgcmVxdWVzdGVkIC1kbHByZW9wZW4gPGltcG9ydCBsaWJyYXJ5Pi4KLSsJICAgICAgICAgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kICIkZGxwcmVmaWxlIgotKwkgICAgICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0kc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKLSsJICAgICAgICAgIGZpCi0rCSAgICAgICAgZmkKLSsJICAgICAgICAkb3B0X2RyeV9ydW4gfHwgewotKwkgICAgICAgICAgaWYgdGVzdCAtbiAiJGRscHJlZmlsZV9kbGJhc2VuYW1lIiA7IHRoZW4KLSsJICAgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJGRscHJlZmlsZV9kbGJhc2VuYW1lIiA+PiAiJG5saXN0IicKLSsJICAgICAgICAgIGVsc2UKLSsJICAgICAgICAgICAgZnVuY193YXJuaW5nICJDb3VsZCBub3QgY29tcHV0ZSBETEwgbmFtZSBmcm9tICRuYW1lIgotKwkgICAgICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJwotKwkgICAgICAgICAgZmkKLSsJICAgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKwkgICAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8Ci0rCSAgICAgICAgICAgICRTRUQgLWUgJy9JIF9faW1wL2QnIC1lICdzL0kgX19ubV8vRCAvO3MvX25tX18vLycgPj4gJyRubGlzdCciCi0rCSAgICAgICAgfQotKwkgICAgICBlbHNlICMgbm90IGFuIGltcG9ydCBsaWIKLSsJICAgICAgICAkb3B0X2RyeV9ydW4gfHwgewotKwkgICAgICAgICAgZXZhbCAnJEVDSE8gIjogJG5hbWUgIiA+PiAiJG5saXN0IicKLSsJICAgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKwkgICAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKLSsJICAgICAgICB9Ci0rCSAgICAgIGZpCi0rCSAgICA7OwotKwkgICAgKikKLSsJICAgICAgJG9wdF9kcnlfcnVuIHx8IHsKLSsJICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJwotKwkgICAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkZGxwcmVmaWxlIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKwkgICAgICAgIGV2YWwgIiROTSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCi0rCSAgICAgIH0KLSsJICAgIDs7Ci0rICAgICAgICAgIGVzYWMKLSAJZG9uZQotIAotIAkkb3B0X2RyeV9ydW4gfHwgewotQEAgLTI2NjEsMjYgKzM0MzUsOSBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAqYWRkcmVzczsKLSB9IGx0X2Rsc3ltbGlzdDsKLS0iCi0tCSAgY2FzZSAkaG9zdCBpbgotLQkgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQotLQkgICAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKLS0vKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlCi0tICAgcnVudGltZSByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24KLS0gICBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8iCi0tCSAgICBsdF9kbHN5bV9jb25zdD0gOzsKLS0JICAqb3NmNSopCi0tCSAgICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAotLS8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEgKi8iCi0tCSAgICBsdF9kbHN5bV9jb25zdD0gOzsKLS0JICAqKQotLQkgICAgbHRfZGxzeW1fY29uc3Q9Y29uc3QgOzsKLS0JICBlc2FjCi0tCi0tCSAgZWNobyA+PiAiJG91dHB1dF9vYmpkaXIvJG15X2Rsc3ltcyIgIlwKLS1leHRlcm4gJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAotK2V4dGVybiBMVF9ETFNZTV9DT05TVCBsdF9kbHN5bWxpc3QKLSBsdF8ke215X3ByZWZpeH1fTFRYX3ByZWxvYWRlZF9zeW1ib2xzW107Ci0tJGx0X2Rsc3ltX2NvbnN0IGx0X2Rsc3ltbGlzdAotK0xUX0RMU1lNX0NPTlNUIGx0X2Rsc3ltbGlzdAotIGx0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHNbXSA9Ci0ge1wKLSAgIHsgXCIkbXlfb3JpZ2luYXRvclwiLCAodm9pZCAqKSAwIH0sIgotQEAgLTI3MzYsNyArMzQ5Myw3IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7Ci0gCWZvciBhcmcgaW4gJExUQ0ZMQUdTOyBkbwotIAkgIGNhc2UgJGFyZyBpbgotIAkgIC1waWUgfCAtZnBpZSB8IC1mUElFKSA7OwotLQkgICopIHN5bXRhYl9jZmxhZ3M9IiRzeW10YWJfY2ZsYWdzICRhcmciIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgc3ltdGFiX2NmbGFncyAiICRhcmciIDs7Ci0gCSAgZXNhYwotIAlkb25lCi0gCi1AQCAtMjc5Niw5ICszNTUzLDExIEBAIGZ1bmNfd2luMzJfbGliaWQgKCkKLSAgICAgd2luMzJfbGliaWRfdHlwZT0ieDg2IGFyY2hpdmUgaW1wb3J0IgotICAgICA7OwotICAgKmFyXCBhcmNoaXZlKikgIyBjb3VsZCBiZSBhbiBpbXBvcnQsIG9yIHN0YXRpYwotLSAgICBpZiAkT0JKRFVNUCAtZiAiJDEiIHwgJFNFRCAtZSAnMTBxJyAyPi9kZXYvbnVsbCB8Ci0tICAgICAgICRFR1JFUCAnZmlsZSBmb3JtYXQgKHBlLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScgPi9kZXYvbnVsbDsgdGhlbgotLSAgICAgIHdpbjMyX25tcmVzPWAkTk0gLWYgcG9zaXggLUEgIiQxIiB8Ci0rICAgICMgS2VlcCB0aGUgZWdyZXAgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9ELgotKyAgICBpZiBldmFsICRPQkpEVU1QIC1mICQxIHwgJFNFRCAtZSAnMTBxJyAyPi9kZXYvbnVsbCB8Ci0rICAgICAgICRFR1JFUCAnZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJyA+L2Rldi9udWxsOyB0aGVuCi0rICAgICAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgIHdpbjMyX25tcmVzPWBldmFsICROTSAtZiBwb3NpeCAtQSBcIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIiB8Ci0gCSRTRUQgLW4gLWUgJwotIAkgICAgMSwxMDB7Ci0gCQkvIEkgL3sKLUBAIC0yODI3LDYgKzM1ODYsMTMxIEBAIGZ1bmNfd2luMzJfbGliaWQgKCkKLSAgICRFQ0hPICIkd2luMzJfbGliaWRfdHlwZSIKLSB9Ci0gCi0rIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIgQVJHCi0rIwotKyMgUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUKLSsjIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAotKyMgaW1wb3J0IGxpYnJhcnkgQVJHLgotKyMgSW52b2tlZCBieSBldmFsJ2luZyB0aGUgbGlidG9vbCB2YXJpYWJsZQotKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluIHRoZSB2YXJpYWJsZQotKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0Ci0rZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YCRETExUT09MIC0taWRlbnRpZnktc3RyaWN0IC0taWRlbnRpZnkgIiQxImAKLSt9Ci0rCi0rIyBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSBTRUNUSU9OX05BTUUgTElCTkFNRXMKLSsjCi0rIyBUaGUgaXMgdGhlIGNvcmUgb2YgYSBmYWxsYmFjayBpbXBsZW1lbnRhdGlvbiBvZiBhCi0rIyBwbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZSBuYW1lIG9mIHRoZQotKyMgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkIGltcG9ydCBsaWJyYXJ5IExJQk5BTUUuCi0rIwotKyMgU0VDVElPTl9OQU1FIGlzIGVpdGhlciAuaWRhdGEkNiBvciAuaWRhdGEkNywgZGVwZW5kaW5nCi0rIyBvbiB0aGUgcGxhdGZvcm0gYW5kIGNvbXBpbGVyIHRoYXQgY3JlYXRlZCB0aGUgaW1wbGliLgotKyMKLSsjIEVjaG9zIHRoZSBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZQotKyMgc3BlY2lmaWVkIGltcG9ydCBsaWJyYXJ5LgotK2Z1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgbWF0Y2hfbGl0ZXJhbD1gJEVDSE8gIiQxIiB8ICRTRUQgIiRzZWRfbWFrZV9saXRlcmFsX3JlZ2V4ImAKLSsgICRPQkpEVU1QIC1zIC0tc2VjdGlvbiAiJDEiICIkMiIgMj4vZGV2L251bGwgfAotKyAgICAkU0VEICcvXkNvbnRlbnRzIG9mIHNlY3Rpb24gJyIkbWF0Y2hfbGl0ZXJhbCInOi97Ci0rICAgICAgIyBQbGFjZSBtYXJrZXIgYXQgYmVnaW5uaW5nIG9mIGFyY2hpdmUgbWVtYmVyIGRsbG5hbWUgc2VjdGlvbgotKyAgICAgIHMvLiovPT09PU1BUks9PT09LwotKyAgICAgIHAKLSsgICAgICBkCi0rICAgIH0KLSsgICAgIyBUaGVzZSBsaW5lcyBjYW4gc29tZXRpbWVzIGJlIGxvbmdlciB0aGFuIDQzIGNoYXJhY3RlcnMsIGJ1dAotKyAgICAjIGFyZSBhbHdheXMgdW5pbnRlcmVzdGluZwotKyAgICAvOlsJIF0qZmlsZSBmb3JtYXQgcGVbaV1ceywxXH0tL2QKLSsgICAgL15JbiBhcmNoaXZlIFteOl0qOi9kCi0rICAgICMgRW5zdXJlIG1hcmtlciBpcyBwcmludGVkCi0rICAgIC9ePT09PU1BUks9PT09L3AKLSsgICAgIyBSZW1vdmUgYWxsIGxpbmVzIHdpdGggbGVzcyB0aGFuIDQzIGNoYXJhY3RlcnMKLSsgICAgL14uXHs0M1x9LyFkCi0rICAgICMgRnJvbSByZW1haW5pbmcgbGluZXMsIHJlbW92ZSBmaXJzdCA0MyBjaGFyYWN0ZXJzCi0rICAgIHMvXi5cezQzXH0vLycgfAotKyAgICAkU0VEIC1uICcKLSsgICAgICAjIEpvaW4gbWFya2VyIGFuZCBhbGwgbGluZXMgdW50aWwgbmV4dCBtYXJrZXIgaW50byBhIHNpbmdsZSBsaW5lCi0rICAgICAgL149PT09TUFSSz09PT0vIGIgcGFyYQotKyAgICAgIEgKLSsgICAgICAkIGIgcGFyYQotKyAgICAgIGIKLSsgICAgICA6cGFyYQotKyAgICAgIHgKLSsgICAgICBzL1xuLy9nCi0rICAgICAgIyBSZW1vdmUgdGhlIG1hcmtlcgotKyAgICAgIHMvXj09PT1NQVJLPT09PS8vCi0rICAgICAgIyBSZW1vdmUgdHJhaWxpbmcgZG90cyBhbmQgd2hpdGVzcGFjZQotKyAgICAgIHMvW1wuIFx0XSokLy8KLSsgICAgICAjIFByaW50Ci0rICAgICAgLy4vcCcgfAotKyAgICAjIHdlIG5vdyBoYXZlIGEgbGlzdCwgb25lIGVudHJ5IHBlciBsaW5lLCBvZiB0aGUgc3RyaW5naWZpZWQKLSsgICAgIyBjb250ZW50cyBvZiB0aGUgYXBwcm9wcmlhdGUgc2VjdGlvbiBvZiBhbGwgbWVtYmVycyBvZiB0aGUKLSsgICAgIyBhcmNoaXZlIHdoaWNoIHBvc3Nlc3MgdGhhdCBzZWN0aW9uLiBIZXVyaXN0aWM6IGVsaW1pbmF0ZQotKyAgICAjIGFsbCB0aG9zZSB3aGljaCBoYXZlIGEgZmlyc3Qgb3Igc2Vjb25kIGNoYXJhY3RlciB0aGF0IGlzCi0rICAgICMgYSAnLicgKHRoYXQgaXMsIG9iamR1bXAncyByZXByZXNlbnRhdGlvbiBvZiBhbiB1bnByaW50YWJsZQotKyAgICAjIGNoYXJhY3Rlci4pIFRoaXMgc2hvdWxkIHdvcmsgZm9yIGFsbCBhcmNoaXZlcyB3aXRoIGxlc3MgdGhhbgotKyAgICAjIDB4MzAyZiBleHBvcnRzIC0tIGJ1dCB3aWxsIGZhaWwgZm9yIERMTHMgd2hvc2UgbmFtZSBhY3R1YWxseQotKyAgICAjIGJlZ2lucyB3aXRoIGEgbGl0ZXJhbCAnLicgb3IgYSBzaW5nbGUgY2hhcmFjdGVyIGZvbGxvd2VkIGJ5Ci0rICAgICMgYSAnLicuCi0rICAgICMKLSsgICAgIyBPZiB0aG9zZSB0aGF0IHJlbWFpbiwgcHJpbnQgdGhlIGZpcnN0IG9uZS4KLSsgICAgJFNFRCAtZSAnL15cLi9kOy9eLlwuL2Q7cScKLSt9Ci0rCi0rIyBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wIEFSRwotKyMgVGhpcyBwcmVkaWNhdGUgcmV0dXJucyB3aXRoIHplcm8gc3RhdHVzIChUUlVFKSBpZgotKyMgQVJHIGlzIGEgR05VL2JpbnV0aWxzLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCi0rIyB3aXRoIG5vbnplcm8gc3RhdHVzIChGQUxTRSkgb3RoZXJ3aXNlLgotK2Z1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgKCkKLSt7Ci0rICAkb3B0X2RlYnVnCi0rICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl90bXA9YCROTSAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgfCBldmFsICIkZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRFR1JFUCAnIChfaGVhZF9bQS1aYS16MC05X10rX1thZF1sKnxbQS1aYS16MC05X10rX1thZF1sKl9pbmFtZSkkJ2AKLSsgIHRlc3QgLW4gIiRmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl90bXAiCi0rfQotKwotKyMgZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wIEFSRwotKyMgVGhpcyBwcmVkaWNhdGUgcmV0dXJucyB3aXRoIHplcm8gc3RhdHVzIChUUlVFKSBpZgotKyMgQVJHIGlzIGFuIE1TLXN0eWxlIGltcG9ydCBsaWJyYXJ5LiBSZXR1cm5zCi0rIyB3aXRoIG5vbnplcm8gc3RhdHVzIChGQUxTRSkgb3RoZXJ3aXNlLgotK2Z1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAoKQotK3sKLSsgICRvcHRfZGVidWcKLSsgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfdG1wPWAkTk0gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiIHwgZXZhbCAiJGdsb2JhbF9zeW1ib2xfcGlwZSIgfCAkR1JFUCAnX05VTExfSU1QT1JUX0RFU0NSSVBUT1InYAotKyAgdGVzdCAtbiAiJGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfdG1wIgotK30KLSsKLSsjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjayBBUkcKLSsjIFBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlCi0rIyBuYW1lIG9mIHRoZSBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQKLSsjIGltcG9ydCBsaWJyYXJ5IEFSRy4KLSsjCi0rIyBUaGlzIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIGlzIGZvciB1c2Ugd2hlbiAkRExMVE9PTAotKyMgZG9lcyBub3Qgc3VwcG9ydCB0aGUgLS1pZGVudGlmeS1zdHJpY3Qgb3B0aW9uLgotKyMgSW52b2tlZCBieSBldmFsJ2luZyB0aGUgbGlidG9vbCB2YXJpYWJsZQotKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rIyBSZXN1bHQgaXMgYXZhaWxhYmxlIGluIHRoZSB2YXJpYWJsZQotKyMgICAgJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0Ci0rZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrICgpCi0rewotKyAgJG9wdF9kZWJ1ZwotKyAgaWYgZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCAiJDEiIDsgdGhlbgotKyAgICAjIGJpbnV0aWxzIGltcG9ydCBsaWJyYXJ5Ci0rICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAnLmlkYXRhJDcnICIkMSJgCi0rICBlbGlmIGZ1bmNfY3lnbWluZ19tc19pbXBsaWJfcCAiJDEiIDsgdGhlbgotKyAgICAjIG1zLWdlbmVyYXRlZCBpbXBvcnQgbGlicmFyeQotKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgJy5pZGF0YSQ2JyAiJDEiYAotKyAgZWxzZQotKyAgICAjIHVua25vd24KLSsgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9IiIKLSsgIGZpCi0rfQotIAotIAotICMgZnVuY19leHRyYWN0X2FuX2FyY2hpdmUgZGlyIG9sZGxpYgotQEAgLTI5MTcsNyArMzgwMSw3IEBAIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAoKQotIAkgICAgZGFyd2luX2ZpbGU9Ci0gCSAgICBkYXJ3aW5fZmlsZXM9Ci0gCSAgICBmb3IgZGFyd2luX2ZpbGUgaW4gJGRhcndpbl9maWxlbGlzdDsgZG8KLS0JICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCAkTkwyU1BgCi0rCSAgICAgIGRhcndpbl9maWxlcz1gZmluZCB1bmZhdC0kJCAtbmFtZSAkZGFyd2luX2ZpbGUgLXByaW50IHwgc29ydCB8ICROTDJTUGAKLSAJICAgICAgJExJUE8gLWNyZWF0ZSAtb3V0cHV0ICIkZGFyd2luX2ZpbGUiICRkYXJ3aW5fZmlsZXMKLSAJICAgIGRvbmUgIyAkZGFyd2luX2ZpbGVsaXN0Ci0gCSAgICAkUk0gLXJmIHVuZmF0LSQkCi1AQCAtMjkzMiw3ICszODE2LDcgQEAgZnVuY19leHRyYWN0X2FyY2hpdmVzICgpCi0gICAgICAgICBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSAiJG15X3hkaXIiICIkbXlfeGFicyIKLSAJOzsKLSAgICAgICBlc2FjCi0tICAgICAgbXlfb2xkb2Jqcz0iJG15X29sZG9ianMgImBmaW5kICRteV94ZGlyIC1uYW1lIFwqLiRvYmpleHQgLXByaW50IC1vIC1uYW1lIFwqLmxvIC1wcmludCB8ICROTDJTUGAKLSsgICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgc29ydCB8ICROTDJTUGAKLSAgICAgZG9uZQotIAotICAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0PSIkbXlfb2xkb2JqcyIKLUBAIC0zMDE0LDcgKzM4OTgsMTEwIEBAIGZ1bmNfZmFsbGJhY2tfZWNobyAoKQotIF9MVEVDSE9fRU9GJwotIH0KLSAgICAgRUNITz1cIiRxRUNIT1wiCi0tICBmaVwKLSsgIGZpCi0rCi0rIyBWZXJ5IGJhc2ljIG9wdGlvbiBwYXJzaW5nLiBUaGVzZSBvcHRpb25zIGFyZSAoYSkgc3BlY2lmaWMgdG8KLSsjIHRoZSBsaWJ0b29sIHdyYXBwZXIsIChiKSBhcmUgaWRlbnRpY2FsIGJldHdlZW4gdGhlIHdyYXBwZXIKLSsjIC9zY3JpcHQvIGFuZCB0aGUgd3JhcHBlciAvZXhlY3V0YWJsZS8gd2hpY2ggaXMgdXNlZCBvbmx5IG9uCi0rIyB3aW5kb3dzIHBsYXRmb3JtcywgYW5kIChjKSBhbGwgYmVnaW4gd2l0aCB0aGUgc3RyaW5nICItLWx0LSIKLSsjIChhcHBsaWNhdGlvbiBwcm9ncmFtcyBhcmUgdW5saWtlbHkgdG8gaGF2ZSBvcHRpb25zIHdoaWNoIG1hdGNoCi0rIyB0aGlzIHBhdHRlcm4pLgotKyMKLSsjIFRoZXJlIGFyZSBvbmx5IHR3byBzdXBwb3J0ZWQgb3B0aW9uczogLS1sdC1kZWJ1ZyBhbmQKLSsjIC0tbHQtZHVtcC1zY3JpcHQuIFRoZXJlIGlzLCBkZWxpYmVyYXRlbHksIG5vIC0tbHQtaGVscC4KLSsjCi0rIyBUaGUgZmlyc3QgYXJndW1lbnQgdG8gdGhpcyBwYXJzaW5nIGZ1bmN0aW9uIHNob3VsZCBiZSB0aGUKLSsjIHNjcmlwdCdzICQwIHZhbHVlLCBmb2xsb3dlZCBieSAiJEAiLgotK2x0X29wdGlvbl9kZWJ1Zz0KLStmdW5jX3BhcnNlX2x0X29wdGlvbnMgKCkKLSt7Ci0rICBsdF9zY3JpcHRfYXJnMD1cJDAKLSsgIHNoaWZ0Ci0rICBmb3IgbHRfb3B0Ci0rICBkbwotKyAgICBjYXNlIFwiXCRsdF9vcHRcIiBpbgotKyAgICAtLWx0LWRlYnVnKSBsdF9vcHRpb25fZGVidWc9MSA7OwotKyAgICAtLWx0LWR1bXAtc2NyaXB0KQotKyAgICAgICAgbHRfZHVtcF9EPVxgXCRFQ0hPIFwiWFwkbHRfc2NyaXB0X2FyZzBcIiB8ICRTRUQgLWUgJ3MvXlgvLycgLWUgJ3MlL1teL10qJCUlJ1xgCi0rICAgICAgICB0ZXN0IFwiWFwkbHRfZHVtcF9EXCIgPSBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgJiYgbHRfZHVtcF9EPS4KLSsgICAgICAgIGx0X2R1bXBfRj1cYFwkRUNITyBcIlhcJGx0X3NjcmlwdF9hcmcwXCIgfCAkU0VEIC1lICdzL15YLy8nIC1lICdzJV4uKi8lJSdcYAotKyAgICAgICAgY2F0IFwiXCRsdF9kdW1wX0QvXCRsdF9kdW1wX0ZcIgotKyAgICAgICAgZXhpdCAwCi0rICAgICAgOzsKLSsgICAgLS1sdC0qKQotKyAgICAgICAgXCRFQ0hPIFwiVW5yZWNvZ25pemVkIC0tbHQtIG9wdGlvbjogJ1wkbHRfb3B0J1wiIDE+JjIKLSsgICAgICAgIGV4aXQgMQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsgIGRvbmUKLSsKLSsgICMgUHJpbnQgdGhlIGRlYnVnIGJhbm5lciBpbW1lZGlhdGVseToKLSsgIGlmIHRlc3QgLW4gXCJcJGx0X29wdGlvbl9kZWJ1Z1wiOyB0aGVuCi0rICAgIGVjaG8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBsaWJ0b29sIHdyYXBwZXIgKEdOVSAkUEFDS0FHRSRUSU1FU1RBTVApICRWRVJTSU9OXCIgMT4mMgotKyAgZmkKLSt9Ci0rCi0rIyBVc2VkIHdoZW4gLS1sdC1kZWJ1Zy4gUHJpbnRzIGl0cyBhcmd1bWVudHMgdG8gc3Rkb3V0Ci0rIyAocmVkaXJlY3Rpb24gaXMgdGhlIHJlc3BvbnNpYmlsaXR5IG9mIHRoZSBjYWxsZXIpCi0rZnVuY19sdF9kdW1wX2FyZ3MgKCkKLSt7Ci0rICBsdF9kdW1wX2FyZ3NfTj0xOwotKyAgZm9yIGx0X2FyZwotKyAgZG8KLSsgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndltcJGx0X2R1bXBfYXJnc19OXTogXCRsdF9hcmdcIgotKyAgICBsdF9kdW1wX2FyZ3NfTj1cYGV4cHIgXCRsdF9kdW1wX2FyZ3NfTiArIDFcYAotKyAgZG9uZQotK30KLSsKLSsjIENvcmUgZnVuY3Rpb24gZm9yIGxhdW5jaGluZyB0aGUgdGFyZ2V0IGFwcGxpY2F0aW9uCi0rZnVuY19leGVjX3Byb2dyYW1fY29yZSAoKQotK3sKLSsiCi0rICBjYXNlICRob3N0IGluCi0rICAjIEJhY2tzbGFzaGVzIHNlcGFyYXRlIGRpcmVjdG9yaWVzIG9uIHBsYWluIHdpbmRvd3MKLSsgICotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCi0rICAgICRFQ0hPICJcCi0rICAgICAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KLSsgICAgICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbMF06IFwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiAxPiYyCi0rICAgICAgICBmdW5jX2x0X2R1bXBfYXJncyBcJHsxK1wiXCRAXCJ9IDE+JjIKLSsgICAgICBmaQotKyAgICAgIGV4ZWMgXCJcJHByb2dkaXJcXFxcXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQotKyIKLSsgICAgOzsKLSsKLSsgICopCi0rICAgICRFQ0hPICJcCi0rICAgICAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KLSsgICAgICAgIFwkRUNITyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IG5ld2FyZ3ZbMF06IFwkcHJvZ2Rpci9cJHByb2dyYW1cIiAxPiYyCi0rICAgICAgICBmdW5jX2x0X2R1bXBfYXJncyBcJHsxK1wiXCRAXCJ9IDE+JjIKLSsgICAgICBmaQotKyAgICAgIGV4ZWMgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQotKyIKLSsgICAgOzsKLSsgIGVzYWMKLSsgICRFQ0hPICJcCi0rICAgICAgXCRFQ0hPIFwiXCQwOiBjYW5ub3QgZXhlYyBcJHByb2dyYW0gXCQqXCIgMT4mMgotKyAgICAgIGV4aXQgMQotK30KLSsKLSsjIEEgZnVuY3Rpb24gdG8gZW5jYXBzdWxhdGUgbGF1bmNoaW5nIHRoZSB0YXJnZXQgYXBwbGljYXRpb24KLSsjIFN0cmlwcyBvcHRpb25zIGluIHRoZSAtLWx0LSogbmFtZXNwYWNlIGZyb20gXCRAIGFuZAotKyMgbGF1bmNoZXMgdGFyZ2V0IGFwcGxpY2F0aW9uIHdpdGggdGhlIHJlbWFpbmluZyBhcmd1bWVudHMuCi0rZnVuY19leGVjX3Byb2dyYW0gKCkKLSt7Ci0rICBmb3IgbHRfd3JfYXJnCi0rICBkbwotKyAgICBjYXNlIFwkbHRfd3JfYXJnIGluCi0rICAgIC0tbHQtKikgOzsKLSsgICAgKikgc2V0IHggXCJcJEBcIiBcIlwkbHRfd3JfYXJnXCI7IHNoaWZ0OzsKLSsgICAgZXNhYwotKyAgICBzaGlmdAotKyAgZG9uZQotKyAgZnVuY19leGVjX3Byb2dyYW1fY29yZSBcJHsxK1wiXCRAXCJ9Ci0rfQotKwotKyAgIyBQYXJzZSBvcHRpb25zCi0rICBmdW5jX3BhcnNlX2x0X29wdGlvbnMgXCJcJDBcIiBcJHsxK1wiXCRAXCJ9Ci0gCi0gICAjIEZpbmQgdGhlIGRpcmVjdG9yeSB0aGF0IHRoaXMgc2NyaXB0IGxpdmVzIGluLgotICAgdGhpc2Rpcj1cYFwkRUNITyBcIlwkZmlsZVwiIHwgJFNFRCAncyUvW14vXSokJSUnXGAKLUBAIC0zMDc4LDcgKzQwNjUsNyBAQCBfTFRFQ0hPX0VPRicKLSAKLSAgICAgIyByZWxpbmsgZXhlY3V0YWJsZSBpZiBuZWNlc3NhcnkKLSAgICAgaWYgdGVzdCAtbiBcIlwkcmVsaW5rX2NvbW1hbmRcIjsgdGhlbgotLSAgICAgIGlmIHJlbGlua19jb21tYW5kX291dHB1dD1cYGV2YWwgXCJcJHJlbGlua19jb21tYW5kXCIgMj4mMVxgOyB0aGVuIDoKLSsgICAgICBpZiByZWxpbmtfY29tbWFuZF9vdXRwdXQ9XGBldmFsIFwkcmVsaW5rX2NvbW1hbmQgMj4mMVxgOyB0aGVuIDoKLSAgICAgICBlbHNlCi0gCSRFQ0hPIFwiXCRyZWxpbmtfY29tbWFuZF9vdXRwdXRcIiA+JjIKLSAJJFJNIFwiXCRwcm9nZGlyL1wkZmlsZVwiCi1AQCAtMzEwMiw2ICs0MDg5LDE4IEBAIF9MVEVDSE9fRU9GJwotIAotICAgaWYgdGVzdCAtZiBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIjsgdGhlbiIKLSAKLSsJIyBmaXh1cCB0aGUgZGxsIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4KLSsJIwotKwkjIEZpeCB0aGUgRExMIHNlYXJjaHBhdGggaWYgd2UgbmVlZCB0by4gIERvIHRoaXMgYmVmb3JlIHByZXBlbmRpbmcKLSsJIyB0byBzaGxpYnBhdGgsIGJlY2F1c2Ugb24gV2luZG93cywgYm90aCBhcmUgUEFUSCBhbmQgdW5pbnN0YWxsZWQKLSsJIyBsaWJyYXJpZXMgbXVzdCBjb21lIGZpcnN0LgotKwlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KLSsJICAkRUNITyAiXAotKyAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAotKyAgICBQQVRIPSRkbGxzZWFyY2hwYXRoOlwkUEFUSAotKyIKLSsJZmkKLSsKLSAJIyBFeHBvcnQgb3VyIHNobGlicGF0aF92YXIgaWYgd2UgaGF2ZSBvbmUuCi0gCWlmIHRlc3QgIiRzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGgiID0geWVzICYmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIiAmJiB0ZXN0IC1uICIkdGVtcF9ycGF0aCI7IHRoZW4KLSAJICAkRUNITyAiXAotQEAgLTMxMTYsMzUgKzQxMTUsMTAgQEAgX0xURUNIT19FT0YnCi0gIgotIAlmaQotIAotLQkjIGZpeHVwIHRoZSBkbGwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLgotLQlpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KLS0JICAkRUNITyAiXAotLSAgICAjIEFkZCB0aGUgZGxsIHNlYXJjaCBwYXRoIGNvbXBvbmVudHMgdG8gdGhlIGV4ZWN1dGFibGUgUEFUSAotLSAgICBQQVRIPSRkbGxzZWFyY2hwYXRoOlwkUEFUSAotLSIKLS0JZmkKLS0KLSAJJEVDSE8gIlwKLSAgICAgaWYgdGVzdCBcIlwkbGlidG9vbF9leGVjdXRlX21hZ2ljXCIgIT0gXCIkbWFnaWNcIjsgdGhlbgotICAgICAgICMgUnVuIHRoZSBhY3R1YWwgcHJvZ3JhbSB3aXRoIG91ciBhcmd1bWVudHMuCi0tIgotLQljYXNlICRob3N0IGluCi0tCSMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cwotLQkqLSotbWluZ3cgfCAqLSotb3MyKiB8ICotY2VnY2MqKQotLQkgICRFQ0hPICJcCi0tICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9Ci0tIgotLQkgIDs7Ci0tCi0tCSopCi0tCSAgJEVDSE8gIlwKLS0gICAgICBleGVjIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KLS0iCi0tCSAgOzsKLS0JZXNhYwotLQkkRUNITyAiXAotLSAgICAgIFwkRUNITyBcIlwkMDogY2Fubm90IGV4ZWMgXCRwcm9ncmFtIFwkKlwiIDE+JjIKLS0gICAgICBleGl0IDEKLSsgICAgICBmdW5jX2V4ZWNfcHJvZ3JhbSBcJHsxK1wiXCRAXCJ9Ci0gICAgIGZpCi0gICBlbHNlCi0gICAgICMgVGhlIHByb2dyYW0gZG9lc24ndCBleGlzdC4KLUBAIC0zMTU4LDE2NiArNDEzMiw2IEBAIGZpXAotIH0KLSAKLSAKLS0jIGZ1bmNfdG9faG9zdF9wYXRoIGFyZwotLSMKLS0jIENvbnZlcnQgcGF0aHMgdG8gaG9zdCBmb3JtYXQgd2hlbiB1c2VkIHdpdGggYnVpbGQgdG9vbHMuCi0tIyBJbnRlbmRlZCBmb3IgdXNlIHdpdGggIm5hdGl2ZSIgbWluZ3cgKHdoZXJlIGxpYnRvb2wgaXRzZWxmCi0tIyBpcyBydW5uaW5nIHVuZGVyIHRoZSBtc3lzIHNoZWxsKSwgb3IgaW4gdGhlIGZvbGxvd2luZyBjcm9zcy0KLS0jIGJ1aWxkIGVudmlyb25tZW50czoKLS0jICAgICRidWlsZCAgICAgICAgICAkaG9zdAotLSMgICAgbWluZ3cgKG1zeXMpICAgIG1pbmd3ICBbZS5nLiBuYXRpdmVdCi0tIyAgICBjeWd3aW4gICAgICAgICAgbWluZ3cKLS0jICAgICpuaXggKyB3aW5lICAgICBtaW5ndwotLSMgd2hlcmUgd2luZSBpcyBlcXVpcHBlZCB3aXRoIHRoZSBgd2luZXBhdGgnIGV4ZWN1dGFibGUuCi0tIyBJbiB0aGUgbmF0aXZlIG1pbmd3IGNhc2UsIHRoZSAobXN5cykgc2hlbGwgYXV0b21hdGljYWxseQotLSMgY29udmVydHMgcGF0aHMgZm9yIGFueSBub24tbXN5cyBhcHBsaWNhdGlvbnMgaXQgbGF1bmNoZXMsCi0tIyBidXQgdGhhdCBmYWNpbGl0eSBpc24ndCBhdmFpbGFibGUgZnJvbSBpbnNpZGUgdGhlIGN3cmFwcGVyLgotLSMgU2ltaWxhciBhY2NvbW1vZGF0aW9ucyBhcmUgbmVjZXNzYXJ5IGZvciAkaG9zdCBtaW5ndyBhbmQKLS0jICRidWlsZCBjeWd3aW4uICBDYWxsaW5nIHRoaXMgZnVuY3Rpb24gZG9lcyBubyBoYXJtIGZvciBvdGhlcgotLSMgJGhvc3QvJGJ1aWxkIGNvbWJpbmF0aW9ucyBub3QgbGlzdGVkIGFib3ZlLgotLSMKLS0jIEFSRyBpcyB0aGUgcGF0aCAob24gJGJ1aWxkKSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KLS0jIHRoZSBwcm9wZXIgcmVwcmVzZW50YXRpb24gZm9yICRob3N0LiBUaGUgcmVzdWx0IGlzIHN0b3JlZAotLSMgaW4gJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KLS1mdW5jX3RvX2hvc3RfcGF0aCAoKQotLXsKLS0gIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD0iJDEiCi0tICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLS0gICAgY2FzZSAkaG9zdCBpbgotLSAgICAgICptaW5ndyogKQotLSAgICAgICAgbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJwotLSAgICAgICAgY2FzZSAkYnVpbGQgaW4KLS0gICAgICAgICAgKm1pbmd3KiApICMgYWN0dWFsbHksIG1zeXMKLS0gICAgICAgICAgICAjIGF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQKLS0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YCggY21kIC8vYyBlY2hvICIkMSIgKSAyPi9kZXYvbnVsbCB8Ci0tICAgICAgICAgICAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgICAgKmN5Z3dpbiogKQotLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gY3lncGF0aCAtdyAiJDEiIHwKLS0JICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICAgICogKQotLSAgICAgICAgICAgICMgVW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lcyBub3QgZXhpdCB3aXRoIGEgbm9uLXplcm8KLS0gICAgICAgICAgICAjIGVycm9yIGNvZGUsIHNvIHdlIGFyZSBmb3JjZWQgdG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mCi0tICAgICAgICAgICAgIyBzdGRvdXQuIE9uIHRoZSBvdGhlciBoYW5kLCBpZiB0aGUgY29tbWFuZCBpcyBub3QKLS0gICAgICAgICAgICAjIGZvdW5kLCB0aGUgc2hlbGwgd2lsbCBzZXQgYW4gZXhpdCBjb2RlIG9mIDEyNyBhbmQgcHJpbnQKLS0gICAgICAgICAgICAjICphbiBlcnJvciBtZXNzYWdlKiB0byBzdGRvdXQuIFNvIHdlIG11c3QgY2hlY2sgZm9yIGJvdGgKLS0gICAgICAgICAgICAjIGVycm9yIGNvZGUgb2YgemVybyBBTkQgbm9uLWVtcHR5IHN0ZG91dCwgd2hpY2ggZXhwbGFpbnMKLS0gICAgICAgICAgICAjIHRoZSBvZGQgY29uc3RydWN0aW9uOgotLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3RtcDE9YHdpbmVwYXRoIC13ICIkMSIgMj4vZGV2L251bGxgCi0tICAgICAgICAgICAgaWYgdGVzdCAiJD8iIC1lcSAwICYmIHRlc3QgLW4gIiR7ZnVuY190b19ob3N0X3BhdGhfdG1wMX0iOyB0aGVuCi0tICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9YCRFQ0hPICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgfAotLSAgICAgICAgICAgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCi0tICAgICAgICAgICAgZWxzZQotLSAgICAgICAgICAgICAgIyBBbGxvdyB3YXJuaW5nIGJlbG93LgotLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PQotLSAgICAgICAgICAgIGZpCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgIGVzYWMKLS0gICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiIDsgdGhlbgotLSAgICAgICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgotLSAgICAgICAgICBmdW5jX2Vycm9yICIgIFxgJDEnIgotLSAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKLS0gICAgICAgICAgIyBGYWxsYmFjazoKLS0gICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKLS0gICAgICAgIGZpCi0tICAgICAgICA7OwotLSAgICBlc2FjCi0tICBmaQotLX0KLS0jIGVuZDogZnVuY190b19ob3N0X3BhdGgKLS0KLS0jIGZ1bmNfdG9faG9zdF9wYXRobGlzdCBhcmcKLS0jCi0tIyBDb252ZXJ0IHBhdGhsaXN0cyB0byBob3N0IGZvcm1hdCB3aGVuIHVzZWQgd2l0aCBidWlsZCB0b29scy4KLS0jIFNlZSBmdW5jX3RvX2hvc3RfcGF0aCgpLCBhYm92ZS4gVGhpcyBmdW5jdGlvbiBzdXBwb3J0cyB0aGUKLS0jIGZvbGxvd2luZyAkYnVpbGQvJGhvc3QgY29tYmluYXRpb25zIChidXQgZG9lcyBubyBoYXJtIGZvcgotLSMgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgaGVyZSk6Ci0tIyAgICAkYnVpbGQgICAgICAgICAgJGhvc3QKLS0jICAgIG1pbmd3IChtc3lzKSAgICBtaW5ndyAgW2UuZy4gbmF0aXZlXQotLSMgICAgY3lnd2luICAgICAgICAgIG1pbmd3Ci0tIyAgICAqbml4ICsgd2luZSAgICAgbWluZ3cKLS0jCi0tIyBQYXRoIHNlcGFyYXRvcnMgYXJlIGFsc28gY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0bwotLSMgJGhvc3QgZm9ybWF0LiBJZiBBUkcgYmVnaW5zIG9yIGVuZHMgd2l0aCBhIHBhdGggc2VwYXJhdG9yCi0tIyBjaGFyYWN0ZXIsIGl0IGlzIHByZXNlcnZlZCAoYnV0IGNvbnZlcnRlZCB0byAkaG9zdCBmb3JtYXQpCi0tIyBvbiBvdXRwdXQuCi0tIwotLSMgQVJHIGlzIGEgcGF0aGxpc3QgKG9uICRidWlsZCkgdGhhdCBzaG91bGQgYmUgY29udmVydGVkIHRvCi0tIyB0aGUgcHJvcGVyIHJlcHJlc2VudGF0aW9uIG9uICRob3N0LiBUaGUgcmVzdWx0IGlzIHN0b3JlZAotLSMgaW4gJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQuCi0tZnVuY190b19ob3N0X3BhdGhsaXN0ICgpCi0tewotLSAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJDEiCi0tICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KLS0gICAgY2FzZSAkaG9zdCBpbgotLSAgICAgICptaW5ndyogKQotLSAgICAgICAgbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeT0nc3xcXFxcKnxcXHxnO3N8L3xcXHxnO3N8XFx8XFxcXHxnJwotLSAgICAgICAgIyBSZW1vdmUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycyBmcm9tCi0tICAgICAgICAjIEFSRy4gbXN5cyBiZWhhdmlvciBpcyBpbmNvbnNpc3RlbnQgaGVyZSwgY3lncGF0aCB0dXJucyB0aGVtCi0tICAgICAgICAjIGludG8gJy47JyBhbmQgJzsuJywgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgotLQlmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgotLSAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDE9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotLSAgICAgICAgY2FzZSAkYnVpbGQgaW4KLS0gICAgICAgICAgKm1pbmd3KiApICMgQWN0dWFsbHksIG1zeXMuCi0tICAgICAgICAgICAgIyBBd2t3YXJkOiBjbWQgYXBwZW5kcyBzcGFjZXMgdG8gcmVzdWx0LgotLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YAotLQkgICAgICAoIGNtZCAvL2MgZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIiApIDI+L2Rldi9udWxsIHwKLS0JICAgICAgJFNFRCAtZSAncy9bIF0qJC8vJyAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAotLSAgICAgICAgICAgIDs7Ci0tICAgICAgICAgICpjeWd3aW4qICkKLS0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBjeWdwYXRoIC13IC1wICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiIHwKLS0gICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgICAqICkKLS0gICAgICAgICAgICAjIHVuZm9ydHVuYXRlbHksIHdpbmVwYXRoIGRvZXNuJ3QgY29udmVydCBwYXRobGlzdHMKLS0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIiCi0tICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUz0kSUZTCi0tICAgICAgICAgICAgSUZTPToKLS0gICAgICAgICAgICBmb3IgZnVuY190b19ob3N0X3BhdGhsaXN0X2YgaW4gJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIDsgZG8KLS0gICAgICAgICAgICAgIElGUz0kZnVuY190b19ob3N0X3BhdGhsaXN0X29sZElGUwotLSAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIiA7IHRoZW4KLS0gICAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiIKLS0gICAgICAgICAgICAgICAgaWYgdGVzdCAtbiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCi0tICAgICAgICAgICAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiIDsgdGhlbgotLSAgICAgICAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLS0gICAgICAgICAgICAgICAgICBlbHNlCi0tICAgICAgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0ICI7JGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKLS0gICAgICAgICAgICAgICAgICBmaQotLSAgICAgICAgICAgICAgICBmaQotLSAgICAgICAgICAgICAgZmkKLS0gICAgICAgICAgICBkb25lCi0tICAgICAgICAgICAgSUZTPSRmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTCi0tICAgICAgICAgICAgOzsKLS0gICAgICAgIGVzYWMKLS0gICAgICAgIGlmIHRlc3QgLXogIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsgdGhlbgotLSAgICAgICAgICBmdW5jX2Vycm9yICJDb3VsZCBub3QgZGV0ZXJtaW5lIHRoZSBob3N0IHBhdGgocykgY29ycmVzcG9uZGluZyB0byIKLS0gICAgICAgICAgZnVuY19lcnJvciAiICBcYCQxJyIKLS0gICAgICAgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCi0tICAgICAgICAgICMgRmFsbGJhY2suIFRoaXMgbWF5IGJyZWFrIGlmICQxIGNvbnRhaW5zIERPUy1zdHlsZSBkcml2ZQotLSAgICAgICAgICAjIHNwZWNpZmljYXRpb25zLiBUaGUgZml4IGlzIG5vdCB0byBjb21wbGljYXRlIHRoZSBleHByZXNzaW9uCi0tICAgICAgICAgICMgYmVsb3csIGJ1dCBmb3IgdGhlIHVzZXIgdG8gcHJvdmlkZSBhIHdvcmtpbmcgd2luZSBpbnN0YWxsYXRpb24KLS0gICAgICAgICAgIyB3aXRoIHdpbmVwYXRoIHNvIHRoYXQgcGF0aCB0cmFuc2xhdGlvbiBpbiB0aGUgY3Jvc3MtdG8tbWluZ3cKLS0gICAgICAgICAgIyBjYXNlIHdvcmtzIHByb3Blcmx5LgotLSAgICAgICAgICBsdF9yZXBsYWNlX3BhdGhzZXBfbml4X3RvX2Rvcz0ic3w6fDt8ZyIKLS0gICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gZWNobyAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF90bXAxIiB8XAotLSAgICAgICAgICAgICRTRUQgLWUgIiRsdF9yZXBsYWNlX3BhdGhzZXBfbml4X3RvX2RvcyJgCi0tICAgICAgICBmaQotLSAgICAgICAgIyBOb3csIGFkZCB0aGUgbGVhZGluZyBhbmQgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3JzIGJhY2sKLS0gICAgICAgIGNhc2UgIiQxIiBpbgotLSAgICAgICAgICA6KiApIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IjskZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgZXNhYwotLSAgICAgICAgY2FzZSAiJDEiIGluCi0tICAgICAgICAgICo6ICkgZnVuY19hcHBlbmQgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCAiOyIKLS0gICAgICAgICAgICA7OwotLSAgICAgICAgZXNhYwotLSAgICAgICAgOzsKLS0gICAgZXNhYwotLSAgZmkKLS19Ci0tIyBlbmQ6IGZ1bmNfdG9faG9zdF9wYXRobGlzdAotLQotICMgZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYwotICMgZW1pdCB0aGUgc291cmNlIGNvZGUgZm9yIGEgd3JhcHBlciBleGVjdXRhYmxlIG9uIHN0ZG91dAotICMgTXVzdCBPTkxZIGJlIGNhbGxlZCBmcm9tIHdpdGhpbiBmdW5jX21vZGVfbGluayBiZWNhdXNlCi1AQCAtMzMzNCwxMCArNDE0OCw2IEBAIGZ1bmNfZW1pdF9jd3JhcHBlcmV4ZV9zcmMgKCkKLSAKLSAgICBUaGlzIHdyYXBwZXIgZXhlY3V0YWJsZSBzaG91bGQgbmV2ZXIgYmUgbW92ZWQgb3V0IG9mIHRoZSBidWlsZCBkaXJlY3RvcnkuCi0gICAgSWYgaXQgaXMsIGl0IHdpbGwgbm90IG9wZXJhdGUgY29ycmVjdGx5LgotLQotLSAgIEN1cnJlbnRseSwgaXQgc2ltcGx5IGV4ZWNzIHRoZSB3cmFwcGVyICpzY3JpcHQqICIkU0hFTEwgJG91dHB1dCIsCi0tICAgYnV0IGNvdWxkIGV2ZW50dWFsbHkgYWJzb3JiIGFsbCBvZiB0aGUgc2NyaXB0cyBmdW5jdGlvbmFsaXR5IGFuZAotLSAgIGV4ZWMgJG9iamRpci8kb3V0cHV0bmFtZSBkaXJlY3RseS4KLSAqLwotIEVPRgotIAkgICAgY2F0IDw8IkVPRiIKLUBAIC0zNDYyLDIyICs0MjcyLDEzIEBAIGludCBzZXRlbnYgKGNvbnN0IGNoYXIgKiwgY29uc3QgY2hhciAqLCBpbnQpOwotICAgaWYgKHN0YWxlKSB7IGZyZWUgKCh2b2lkICopIHN0YWxlKTsgc3RhbGUgPSAwOyB9IFwKLSB9IHdoaWxlICgwKQotIAotLSN1bmRlZiBMVFdSQVBQRVJfREVCVUdQUklOVEYKLS0jaWYgZGVmaW5lZCBMVF9ERUJVR1dSQVBQRVIKLS0jIGRlZmluZSBMVFdSQVBQRVJfREVCVUdQUklOVEYoYXJncykgbHR3cmFwcGVyX2RlYnVncHJpbnRmIGFyZ3MKLS1zdGF0aWMgdm9pZAotLWx0d3JhcHBlcl9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZm10LCAuLi4pCi0tewotLSAgICB2YV9saXN0IGFyZ3M7Ci0tICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOwotLSAgICAodm9pZCkgdmZwcmludGYgKHN0ZGVyciwgZm10LCBhcmdzKTsKLS0gICAgdmFfZW5kIChhcmdzKTsKLS19Ci0rI2lmIGRlZmluZWQoTFRfREVCVUdXUkFQUEVSKQotK3N0YXRpYyBpbnQgbHRfZGVidWcgPSAxOwotICNlbHNlCi0tIyBkZWZpbmUgTFRXUkFQUEVSX0RFQlVHUFJJTlRGKGFyZ3MpCi0rc3RhdGljIGludCBsdF9kZWJ1ZyA9IDA7Ci0gI2VuZGlmCi0gCi0tY29uc3QgY2hhciAqcHJvZ3JhbV9uYW1lID0gTlVMTDsKLStjb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSAibGlidG9vbC13cmFwcGVyIjsgLyogaW4gY2FzZSB4c3RyZHVwIGZhaWxzICovCi0gCi0gdm9pZCAqeG1hbGxvYyAoc2l6ZV90IG51bSk7Ci0gY2hhciAqeHN0cmR1cCAoY29uc3QgY2hhciAqc3RyaW5nKTsKLUBAIC0zNDg3LDcgKzQyODgsMTAgQEAgY2hhciAqY2hhc2Vfc3ltbGlua3MgKGNvbnN0IGNoYXIgKnBhdGhzcGVjKTsKLSBpbnQgbWFrZV9leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKLSBpbnQgY2hlY2tfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCk7Ci0gY2hhciAqc3RyZW5kemFwIChjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnBhdCk7Ci0tdm9pZCBsdF9mYXRhbCAoY29uc3QgY2hhciAqbWVzc2FnZSwgLi4uKTsKLSt2b2lkIGx0X2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZm10LCAuLi4pOwotK3ZvaWQgbHRfZmF0YWwgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pOwotK3N0YXRpYyBjb25zdCBjaGFyICpub25udWxsIChjb25zdCBjaGFyICpzKTsKLStzdGF0aWMgY29uc3QgY2hhciAqbm9uZW1wdHkgKGNvbnN0IGNoYXIgKnMpOwotIHZvaWQgbHRfc2V0ZW52IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7Ci0gY2hhciAqbHRfZXh0ZW5kX3N0ciAoY29uc3QgY2hhciAqb3JpZ192YWx1ZSwgY29uc3QgY2hhciAqYWRkLCBpbnQgdG9fZW5kKTsKLSB2b2lkIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpOwotQEAgLTM0OTcsMTQgKzQzMDEsMTQgQEAgdm9pZCBsdF9kdW1wX3NjcmlwdCAoRklMRSAqZik7Ci0gRU9GCi0gCi0gCSAgICBjYXQgPDxFT0YKLS1jb25zdCBjaGFyICogTUFHSUNfRVhFID0gIiRtYWdpY19leGUiOwotK3ZvbGF0aWxlIGNvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7Ci0gY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBUk5BTUUgPSAiJHNobGlicGF0aF92YXIiOwotIEVPRgotIAotIAkgICAgaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLW4gIiR0ZW1wX3JwYXRoIjsgdGhlbgotLSAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0ICIkdGVtcF9ycGF0aCIKLSsgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkdGVtcF9ycGF0aCIKLSAJICAgICAgY2F0IDw8RU9GCi0tY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOwotK2NvbnN0IGNoYXIgKiBMSUJfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiOwotIEVPRgotIAkgICAgZWxzZQotIAkgICAgICBjYXQgPDwiRU9GIgotQEAgLTM1MTMsMTAgKzQzMTcsMTAgQEAgRU9GCi0gCSAgICBmaQotIAotIAkgICAgaWYgdGVzdCAtbiAiJGRsbHNlYXJjaHBhdGgiOyB0aGVuCi0tICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgIiRkbGxzZWFyY2hwYXRoOiIKLSsgICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoICIkZGxsc2VhcmNocGF0aDoiCi0gCSAgICAgIGNhdCA8PEVPRgotIGNvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQVJOQU1FID0gIlBBVEgiOwotLWNvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IjsKLStjb25zdCBjaGFyICogRVhFX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IjsKLSBFT0YKLSAJICAgIGVsc2UKLSAJICAgICAgY2F0IDw8IkVPRiIKLUBAIC0zNTM5LDEyICs0MzQzLDEwIEBAIEVPRgotIAkgICAgY2F0IDw8IkVPRiIKLSAKLSAjZGVmaW5lIExUV1JBUFBFUl9PUFRJT05fUFJFRklYICAgICAgICAgIi0tbHQtIgotLSNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIICA1Ci0gCi0tc3RhdGljIGNvbnN0IHNpemVfdCBvcHRfcHJlZml4X2xlbiAgICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVhfTEVOR1RIOwotIHN0YXRpYyBjb25zdCBjaGFyICpsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYOwotLQotIHN0YXRpYyBjb25zdCBjaGFyICpkdW1wc2NyaXB0X29wdCAgICAgICA9IExUV1JBUFBFUl9PUFRJT05fUFJFRklYICJkdW1wLXNjcmlwdCI7Ci0rc3RhdGljIGNvbnN0IGNoYXIgKmRlYnVnX29wdCAgICAgICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImRlYnVnIjsKLSAKLSBpbnQKLSBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQotQEAgLTM1NjEsMTAgKzQzNjMsMTMgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAgIGludCBpOwotIAotICAgcHJvZ3JhbV9uYW1lID0gKGNoYXIgKikgeHN0cmR1cCAoYmFzZV9uYW1lIChhcmd2WzBdKSk7Ci0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGFyZ3ZbMF0gICAgICA6ICVzXG4iLCBhcmd2WzBdKSk7Ci0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIHByb2dyYW1fbmFtZSA6ICVzXG4iLCBwcm9ncmFtX25hbWUpKTsKLSsgIG5ld2FyZ3ogPSBYTUFMTE9DIChjaGFyICosIGFyZ2MgKyAxKTsKLSAKLS0gIC8qIHZlcnkgc2ltcGxlIGFyZyBwYXJzaW5nOyBkb24ndCB3YW50IHRvIHJlbHkgb24gZ2V0b3B0ICovCi0rICAvKiB2ZXJ5IHNpbXBsZSBhcmcgcGFyc2luZzsgZG9uJ3Qgd2FudCB0byByZWx5IG9uIGdldG9wdAotKyAgICogYWxzbywgY29weSBhbGwgbm9uIGN3cmFwcGVyIG9wdGlvbnMgdG8gbmV3YXJneiwgZXhjZXB0Ci0rICAgKiBhcmd6WzBdLCB3aGljaCBpcyBoYW5kbGVkIGRpZmZlcmVudGx5Ci0rICAgKi8KLSsgIG5ld2FyZ2M9MDsKLSAgIGZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspCi0gICAgIHsKLSAgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBkdW1wc2NyaXB0X29wdCkgPT0gMCkKLUBAIC0zNTgxLDIxICs0Mzg2LDU0IEBAIEVPRgotIAkgIGx0X2R1bXBfc2NyaXB0IChzdGRvdXQpOwotIAkgIHJldHVybiAwOwotIAl9Ci0rICAgICAgaWYgKHN0cmNtcCAoYXJndltpXSwgZGVidWdfb3B0KSA9PSAwKQotKwl7Ci0rICAgICAgICAgIGx0X2RlYnVnID0gMTsKLSsgICAgICAgICAgY29udGludWU7Ci0rCX0KLSsgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCkgPT0gMCkKLSsgICAgICAgIHsKLSsgICAgICAgICAgLyogaG93ZXZlciwgaWYgdGhlcmUgaXMgYW4gb3B0aW9uIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAotKyAgICAgICAgICAgICBuYW1lc3BhY2UsIGJ1dCBpdCBpcyBub3Qgb25lIG9mIHRoZSBvbmVzIHdlIGtub3cgYWJvdXQgYW5kCi0rICAgICAgICAgICAgIGhhdmUgYWxyZWFkeSBkZWFsdCB3aXRoLCBhYm92ZSAoaW5sdWRpbmcgZHVtcC1zY3JpcHQpLCB0aGVuCi0rICAgICAgICAgICAgIHJlcG9ydCBhbiBlcnJvci4gT3RoZXJ3aXNlLCB0YXJnZXRzIG1pZ2h0IGJlZ2luIHRvIGJlbGlldmUKLSsgICAgICAgICAgICAgdGhleSBhcmUgYWxsb3dlZCB0byB1c2Ugb3B0aW9ucyBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKLSsgICAgICAgICAgICAgbmFtZXNwYWNlLiBUaGUgZmlyc3QgdGltZSBhbnkgdXNlciBjb21wbGFpbnMgYWJvdXQgdGhpcywgd2UnbGwKLSsgICAgICAgICAgICAgbmVlZCB0byBtYWtlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYIGEgY29uZmlndXJlLXRpbWUgb3B0aW9uCi0rICAgICAgICAgICAgIG9yIGEgY29uZmlndXJlLmFjLXNldHRhYmxlIHZhbHVlLgotKyAgICAgICAgICAgKi8KLSsgICAgICAgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsJCSAgICAidW5yZWNvZ25pemVkICVzIG9wdGlvbjogJyVzJyIsCi0rICAgICAgICAgICAgICAgICAgICBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgYXJndltpXSk7Ci0rICAgICAgICB9Ci0rICAgICAgLyogb3RoZXJ3aXNlIC4uLiAqLwotKyAgICAgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IHhzdHJkdXAgKGFyZ3ZbaV0pOwotICAgICB9Ci0rICBuZXdhcmd6WysrbmV3YXJnY10gPSBOVUxMOwotKwotK0VPRgotKwkgICAgY2F0IDw8RU9GCi0rICAvKiBUaGUgR05VIGJhbm5lciBtdXN0IGJlIHRoZSBmaXJzdCBub24tZXJyb3IgZGVidWcgbWVzc2FnZSAqLwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgImxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT05cbiIpOwotK0VPRgotKwkgICAgY2F0IDw8IkVPRiIKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIobWFpbikgYXJndlswXTogJXNcbiIsIGFyZ3ZbMF0pOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBwcm9ncmFtX25hbWU6ICVzXG4iLCBwcm9ncmFtX25hbWUpOwotIAotLSAgbmV3YXJneiA9IFhNQUxMT0MgKGNoYXIgKiwgYXJnYyArIDEpOwotICAgdG1wX3BhdGhzcGVjID0gZmluZF9leGVjdXRhYmxlIChhcmd2WzBdKTsKLSAgIGlmICh0bXBfcGF0aHNwZWMgPT0gTlVMTCkKLS0gICAgbHRfZmF0YWwgKCJDb3VsZG4ndCBmaW5kICVzIiwgYXJndlswXSk7Ci0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYmVmb3JlIHN5bWxpbmsgY2hhc2UpIGF0IDogJXNcbiIsCi0tCQkJICB0bXBfcGF0aHNwZWMpKTsKLSsgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgImNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCi0rICAgICAgICAgICAgICAgICAgIihtYWluKSBmb3VuZCBleGUgKGJlZm9yZSBzeW1saW5rIGNoYXNlKSBhdDogJXNcbiIsCi0rCQkgIHRtcF9wYXRoc3BlYyk7Ci0gCi0gICBhY3R1YWxfY3dyYXBwZXJfcGF0aCA9IGNoYXNlX3N5bWxpbmtzICh0bXBfcGF0aHNwZWMpOwotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBmb3VuZCBleGUgKGFmdGVyIHN5bWxpbmsgY2hhc2UpIGF0IDogJXNcbiIsCi0tCQkJICBhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKLSsgICAgICAgICAgICAgICAgICAiKG1haW4pIGZvdW5kIGV4ZSAoYWZ0ZXIgc3ltbGluayBjaGFzZSkgYXQ6ICVzXG4iLAotKwkJICBhY3R1YWxfY3dyYXBwZXJfcGF0aCk7Ci0gICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKLSAKLS0gIGFjdHVhbF9jd3JhcHBlcl9uYW1lID0geHN0cmR1cCggYmFzZV9uYW1lIChhY3R1YWxfY3dyYXBwZXJfcGF0aCkpOwotKyAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB4c3RyZHVwIChiYXNlX25hbWUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7Ci0gICBzdHJlbmR6YXAgKGFjdHVhbF9jd3JhcHBlcl9wYXRoLCBhY3R1YWxfY3dyYXBwZXJfbmFtZSk7Ci0gCi0gICAvKiB3cmFwcGVyIG5hbWUgdHJhbnNmb3JtcyAqLwotQEAgLTM2MTMsOCArNDQ1MSw5IEBAIEVPRgotICAgdGFyZ2V0X25hbWUgPSB0bXBfcGF0aHNwZWM7Ci0gICB0bXBfcGF0aHNwZWMgPSAwOwotIAotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWluKSBsaWJ0b29sIHRhcmdldCBuYW1lOiAlc1xuIiwKLS0JCQkgIHRhcmdldF9uYW1lKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAiKG1haW4pIGxpYnRvb2wgdGFyZ2V0IG5hbWU6ICVzXG4iLAotKwkJICB0YXJnZXRfbmFtZSk7Ci0gRU9GCi0gCi0gCSAgICBjYXQgPDxFT0YKLUBAIC0zNjY0LDM1ICs0NTAzLDE5IEBAIEVPRgotIAotICAgbHRfc2V0ZW52ICgiQklOX1NIIiwgInhwZzQiKTsgLyogZm9yIFRydTY0ICovCi0gICBsdF9zZXRlbnYgKCJEVUFMQ0FTRSIsICIxIik7ICAvKiBmb3IgTVNLIHNoICovCi0tICBsdF91cGRhdGVfbGliX3BhdGggKExJQl9QQVRIX1ZBUk5BTUUsIExJQl9QQVRIX1ZBTFVFKTsKLSsgIC8qIFVwZGF0ZSB0aGUgRExMIHNlYXJjaHBhdGguICBFWEVfUEFUSF9WQUxVRSAoJGRsbHNlYXJjaHBhdGgpIG11c3QKLSsgICAgIGJlIHByZXBlbmRlZCBiZWZvcmUgKHRoYXQgaXMsIGFwcGVhciBhZnRlcikgTElCX1BBVEhfVkFMVUUgKCR0ZW1wX3JwYXRoKQotKyAgICAgYmVjYXVzZSBvbiBXaW5kb3dzLCBib3RoICpfVkFSTkFNRXMgYXJlIFBBVEggYnV0IHVuaW5zdGFsbGVkCi0rICAgICBsaWJyYXJpZXMgbXVzdCBjb21lIGZpcnN0LiAqLwotICAgbHRfdXBkYXRlX2V4ZV9wYXRoIChFWEVfUEFUSF9WQVJOQU1FLCBFWEVfUEFUSF9WQUxVRSk7Ci0rICBsdF91cGRhdGVfbGliX3BhdGggKExJQl9QQVRIX1ZBUk5BTUUsIExJQl9QQVRIX1ZBTFVFKTsKLSAKLS0gIG5ld2FyZ2M9MDsKLS0gIGZvciAoaSA9IDE7IGkgPCBhcmdjOyBpKyspCi0tICAgIHsKLS0gICAgICBpZiAoc3RybmNtcCAoYXJndltpXSwgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIG9wdF9wcmVmaXhfbGVuKSA9PSAwKQotLSAgICAgICAgewotLSAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCi0tICAgICAgICAgICAgIG5hbWVzcGFjZSwgYnV0IGl0IGlzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2Uga25vdyBhYm91dCBhbmQKLS0gICAgICAgICAgICAgaGF2ZSBhbHJlYWR5IGRlYWx0IHdpdGgsIGFib3ZlIChpbmx1ZGluZyBkdW1wLXNjcmlwdCksIHRoZW4KLS0gICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQotLSAgICAgICAgICAgICB0aGV5IGFyZSBhbGxvd2VkIHRvIHVzZSBvcHRpb25zIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAotLSAgICAgICAgICAgICBuYW1lc3BhY2UuIFRoZSBmaXJzdCB0aW1lIGFueSB1c2VyIGNvbXBsYWlucyBhYm91dCB0aGlzLCB3ZSdsbAotLSAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KLS0gICAgICAgICAgICAgb3IgYSBjb25maWd1cmUuYWMtc2V0dGFibGUgdmFsdWUuCi0tICAgICAgICAgICAqLwotLSAgICAgICAgICBsdF9mYXRhbCAoIlVucmVjb2duaXplZCBvcHRpb24gaW4gJXMgbmFtZXNwYWNlOiAnJXMnIiwKLS0gICAgICAgICAgICAgICAgICAgIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBhcmd2W2ldKTsKLS0gICAgICAgIH0KLS0gICAgICAvKiBvdGhlcndpc2UgLi4uICovCi0tICAgICAgbmV3YXJnelsrK25ld2FyZ2NdID0geHN0cmR1cCAoYXJndltpXSk7Ci0tICAgIH0KLS0gIG5ld2FyZ3pbKytuZXdhcmdjXSA9IE5VTEw7Ci0tCi0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgICAgICgoIihtYWluKSBsdF9hcmd2X3plcm8gOiAlc1xuIiwgKGx0X2FyZ3ZfemVybyA/IGx0X2FyZ3ZfemVybyA6ICI8TlVMTD4iKSkpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBsdF9hcmd2X3plcm86ICVzXG4iLAotKwkJICBub25udWxsIChsdF9hcmd2X3plcm8pKTsKLSAgIGZvciAoaSA9IDA7IGkgPCBuZXdhcmdjOyBpKyspCi0gICAgIHsKLS0gICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIG5ld2FyZ3pbJWRdICAgOiAlc1xuIiwgaSwgKG5ld2FyZ3pbaV0gPyBuZXdhcmd6W2ldIDogIjxOVUxMPiIpKSk7Ci0rICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBuZXdhcmd6WyVkXTogJXNcbiIsCi0rCQkgICAgICBpLCBub25udWxsIChuZXdhcmd6W2ldKSk7Ci0gICAgIH0KLSAKLSBFT0YKLUBAIC0zNzA2LDcgKzQ1MjksOSBAQCBFT0YKLSAgIGlmIChydmFsID09IC0xKQotICAgICB7Ci0gICAgICAgLyogZmFpbGVkIHRvIHN0YXJ0IHByb2Nlc3MgKi8KLS0gICAgICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0IFwiJXNcIjogZXJybm8gPSAlZFxuIiwgbHRfYXJndl96ZXJvLCBlcnJubykpOwotKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICAgICAiKG1haW4pIGZhaWxlZCB0byBsYXVuY2ggdGFyZ2V0IFwiJXNcIjogJXNcbiIsCi0rCQkgICAgICBsdF9hcmd2X3plcm8sIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKLSAgICAgICByZXR1cm4gMTI3OwotICAgICB9Ci0gICByZXR1cm4gcnZhbDsKLUBAIC0zNzI4LDcgKzQ1NTMsNyBAQCB4bWFsbG9jIChzaXplX3QgbnVtKQotIHsKLSAgIHZvaWQgKnAgPSAodm9pZCAqKSBtYWxsb2MgKG51bSk7Ci0gICBpZiAoIXApCi0tICAgIGx0X2ZhdGFsICgiTWVtb3J5IGV4aGF1c3RlZCIpOwotKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAibWVtb3J5IGV4aGF1c3RlZCIpOwotIAotICAgcmV0dXJuIHA7Ci0gfQotQEAgLTM3NjIsOCArNDU4Nyw4IEBAIGNoZWNrX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpCi0gewotICAgc3RydWN0IHN0YXQgc3Q7Ci0gCi0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGNoZWNrX2V4ZWN1dGFibGUpICA6ICVzXG4iLAotLQkJCSAgcGF0aCA/ICgqcGF0aCA/IHBhdGggOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKGNoZWNrX2V4ZWN1dGFibGUpOiAlc1xuIiwKLSsgICAgICAgICAgICAgICAgICBub25lbXB0eSAocGF0aCkpOwotICAgaWYgKCghcGF0aCkgfHwgKCEqcGF0aCkpCi0gICAgIHJldHVybiAwOwotIAotQEAgLTM3ODAsOCArNDYwNSw4IEBAIG1ha2VfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCkKLSAgIGludCBydmFsID0gMDsKLSAgIHN0cnVjdCBzdGF0IHN0OwotIAotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihtYWtlX2V4ZWN1dGFibGUpICAgOiAlc1xuIiwKLS0JCQkgIHBhdGggPyAoKnBhdGggPyBwYXRoIDogIkVNUFRZISIpIDogIk5VTEwhIikpOwotKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWtlX2V4ZWN1dGFibGUpOiAlc1xuIiwKLSsgICAgICAgICAgICAgICAgICBub25lbXB0eSAocGF0aCkpOwotICAgaWYgKCghcGF0aCkgfHwgKCEqcGF0aCkpCi0gICAgIHJldHVybiAwOwotIAotQEAgLTM4MDcsOCArNDYzMiw4IEBAIGZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqd3JhcHBlcikKLSAgIGludCB0bXBfbGVuOwotICAgY2hhciAqY29uY2F0X25hbWU7Ci0gCi0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGZpbmRfZXhlY3V0YWJsZSkgICA6ICVzXG4iLAotLQkJCSAgd3JhcHBlciA/ICgqd3JhcHBlciA/IHdyYXBwZXIgOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKGZpbmRfZXhlY3V0YWJsZSk6ICVzXG4iLAotKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5ICh3cmFwcGVyKSk7Ci0gCi0gICBpZiAoKHdyYXBwZXIgPT0gTlVMTCkgfHwgKCp3cmFwcGVyID09ICdcMCcpKQotICAgICByZXR1cm4gTlVMTDsKLUBAIC0zODYxLDcgKzQ2ODYsOCBAQCBmaW5kX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKndyYXBwZXIpCi0gCQl7Ci0gCQkgIC8qIGVtcHR5IHBhdGg6IGN1cnJlbnQgZGlyZWN0b3J5ICovCi0gCQkgIGlmIChnZXRjd2QgKHRtcCwgTFRfUEFUSE1BWCkgPT0gTlVMTCkKLS0JCSAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKLSsJCSAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiZ2V0Y3dkIGZhaWxlZDogJXMiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKLSAJCSAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKLSAJCSAgY29uY2F0X25hbWUgPQotIAkJICAgIFhNQUxMT0MgKGNoYXIsIHRtcF9sZW4gKyAxICsgc3RybGVuICh3cmFwcGVyKSArIDEpOwotQEAgLTM4ODYsNyArNDcxMiw4IEBAIGZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqd3JhcHBlcikKLSAgICAgfQotICAgLyogUmVsYXRpdmUgcGF0aCB8IG5vdCBmb3VuZCBpbiBwYXRoOiBwcmVwZW5kIGN3ZCAqLwotICAgaWYgKGdldGN3ZCAodG1wLCBMVF9QQVRITUFYKSA9PSBOVUxMKQotLSAgICBsdF9mYXRhbCAoImdldGN3ZCBmYWlsZWQiKTsKLSsgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywgImdldGN3ZCBmYWlsZWQ6ICVzIiwKLSsgICAgICAgICAgICAgIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKLSAgIHRtcF9sZW4gPSBzdHJsZW4gKHRtcCk7Ci0gICBjb25jYXRfbmFtZSA9IFhNQUxMT0MgKGNoYXIsIHRtcF9sZW4gKyAxICsgc3RybGVuICh3cmFwcGVyKSArIDEpOwotICAgbWVtY3B5IChjb25jYXRfbmFtZSwgdG1wLCB0bXBfbGVuKTsKLUBAIC0zOTEyLDggKzQ3MzksOSBAQCBjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpCi0gICBpbnQgaGFzX3N5bWxpbmtzID0gMDsKLSAgIHdoaWxlIChzdHJsZW4gKHRtcF9wYXRoc3BlYykgJiYgIWhhc19zeW1saW5rcykKLSAgICAgewotLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCJjaGVja2luZyBwYXRoIGNvbXBvbmVudCBmb3Igc3ltbGlua3M6ICVzXG4iLAotLQkJCSAgICAgIHRtcF9wYXRoc3BlYykpOwotKyAgICAgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICAgICAiY2hlY2tpbmcgcGF0aCBjb21wb25lbnQgZm9yIHN5bWxpbmtzOiAlc1xuIiwKLSsJCSAgICAgIHRtcF9wYXRoc3BlYyk7Ci0gICAgICAgaWYgKGxzdGF0ICh0bXBfcGF0aHNwZWMsICZzKSA9PSAwKQotIAl7Ci0gCSAgaWYgKFNfSVNMTksgKHMuc3RfbW9kZSkgIT0gMCkKLUBAIC0zOTM1LDggKzQ3NjMsOSBAQCBjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpCi0gCX0KLSAgICAgICBlbHNlCi0gCXsKLS0JICBjaGFyICplcnJzdHIgPSBzdHJlcnJvciAoZXJybm8pOwotLQkgIGx0X2ZhdGFsICgiRXJyb3IgYWNjZXNzaW5nIGZpbGUgJXMgKCVzKSIsIHRtcF9wYXRoc3BlYywgZXJyc3RyKTsKLSsJICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAgICJlcnJvciBhY2Nlc3NpbmcgZmlsZSBcIiVzXCI6ICVzIiwKLSsJCSAgICB0bXBfcGF0aHNwZWMsIG5vbm51bGwgKHN0cmVycm9yIChlcnJubykpKTsKLSAJfQotICAgICB9Ci0gICBYRlJFRSAodG1wX3BhdGhzcGVjKTsKLUBAIC0zOTQ5LDcgKzQ3NzgsOCBAQCBjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpCi0gICB0bXBfcGF0aHNwZWMgPSByZWFscGF0aCAocGF0aHNwZWMsIGJ1Zik7Ci0gICBpZiAodG1wX3BhdGhzcGVjID09IDApCi0gICAgIHsKLS0gICAgICBsdF9mYXRhbCAoIkNvdWxkIG5vdCBmb2xsb3cgc3ltbGlua3MgZm9yICVzIiwgcGF0aHNwZWMpOwotKyAgICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkiY291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7Ci0gICAgIH0KLSAgIHJldHVybiB4c3RyZHVwICh0bXBfcGF0aHNwZWMpOwotICNlbmRpZgotQEAgLTM5NzUsMTEgKzQ4MDUsMjUgQEAgc3RyZW5kemFwIChjaGFyICpzdHIsIGNvbnN0IGNoYXIgKnBhdCkKLSAgIHJldHVybiBzdHI7Ci0gfQotIAotK3ZvaWQKLStsdF9kZWJ1Z3ByaW50ZiAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKmZtdCwgLi4uKQotK3sKLSsgIHZhX2xpc3QgYXJnczsKLSsgIGlmIChsdF9kZWJ1ZykKLSsgICAgewotKyAgICAgICh2b2lkKSBmcHJpbnRmIChzdGRlcnIsICIlczolczolZDogIiwgcHJvZ3JhbV9uYW1lLCBmaWxlLCBsaW5lKTsKLSsgICAgICB2YV9zdGFydCAoYXJncywgZm10KTsKLSsgICAgICAodm9pZCkgdmZwcmludGYgKHN0ZGVyciwgZm10LCBhcmdzKTsKLSsgICAgICB2YV9lbmQgKGFyZ3MpOwotKyAgICB9Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0tbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICptb2RlLAotK2x0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqZmlsZSwKLSsJICAgICAgIGludCBsaW5lLCBjb25zdCBjaGFyICptb2RlLAotIAkgICAgICAgY29uc3QgY2hhciAqbWVzc2FnZSwgdmFfbGlzdCBhcCkKLSB7Ci0tICBmcHJpbnRmIChzdGRlcnIsICIlczogJXM6ICIsIHByb2dyYW1fbmFtZSwgbW9kZSk7Ci0rICBmcHJpbnRmIChzdGRlcnIsICIlczolczolZDogJXM6ICIsIHByb2dyYW1fbmFtZSwgZmlsZSwgbGluZSwgbW9kZSk7Ci0gICB2ZnByaW50ZiAoc3RkZXJyLCBtZXNzYWdlLCBhcCk7Ci0gICBmcHJpbnRmIChzdGRlcnIsICIuXG4iKTsKLSAKLUBAIC0zOTg4LDIwICs0ODMyLDMyIEBAIGx0X2Vycm9yX2NvcmUgKGludCBleGl0X3N0YXR1cywgY29uc3QgY2hhciAqbW9kZSwKLSB9Ci0gCi0gdm9pZAotLWx0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pCi0rbHRfZmF0YWwgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pCi0gewotICAgdmFfbGlzdCBhcDsKLSAgIHZhX3N0YXJ0IChhcCwgbWVzc2FnZSk7Ci0tICBsdF9lcnJvcl9jb3JlIChFWElUX0ZBSUxVUkUsICJGQVRBTCIsIG1lc3NhZ2UsIGFwKTsKLSsgIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgZmlsZSwgbGluZSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOwotICAgdmFfZW5kIChhcCk7Ci0gfQotIAotK3N0YXRpYyBjb25zdCBjaGFyICoKLStub25udWxsIChjb25zdCBjaGFyICpzKQotK3sKLSsgIHJldHVybiBzID8gcyA6ICIobnVsbCkiOwotK30KLSsKLStzdGF0aWMgY29uc3QgY2hhciAqCi0rbm9uZW1wdHkgKGNvbnN0IGNoYXIgKnMpCi0rewotKyAgcmV0dXJuIChzICYmICEqcykgPyAiKGVtcHR5KSIgOiBub25udWxsIChzKTsKLSt9Ci0rCi0gdm9pZAotIGx0X3NldGVudiAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCi0gewotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICIobHRfc2V0ZW52KSBzZXR0aW5nICclcycgdG8gJyVzJ1xuIiwKLSsgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKLSAgIHsKLSAjaWZkZWYgSEFWRV9TRVRFTlYKLSAgICAgLyogYWx3YXlzIG1ha2UgYSBjb3B5LCBmb3IgY29uc2lzdGVuY3kgd2l0aCAhSEFWRV9TRVRFTlYgKi8KLUBAIC00MDQ5LDkgKzQ5MDUsOSBAQCBsdF9leHRlbmRfc3RyIChjb25zdCBjaGFyICpvcmlnX3ZhbHVlLCBjb25zdCBjaGFyICphZGQsIGludCB0b19lbmQpCi0gdm9pZAotIGx0X3VwZGF0ZV9leGVfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgY29uc3QgY2hhciAqdmFsdWUpCi0gewotLSAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoIihsdF91cGRhdGVfZXhlX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIChuYW1lID8gbmFtZSA6ICI8TlVMTD4iKSwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICh2YWx1ZSA/IHZhbHVlIDogIjxOVUxMPiIpKSk7Ci0rICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAotKwkJICAiKGx0X3VwZGF0ZV9leGVfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAotKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOwotIAotICAgaWYgKG5hbWUgJiYgKm5hbWUgJiYgdmFsdWUgJiYgKnZhbHVlKQotICAgICB7Ci1AQCAtNDA3MCw5ICs0OTI2LDkgQEAgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKLSB2b2lkCi0gbHRfdXBkYXRlX2xpYl9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKLSB7Ci0tICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9saWJfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKLSsgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCi0rCQkgICIobHRfdXBkYXRlX2xpYl9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCi0rICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7Ci0gCi0gICBpZiAobmFtZSAmJiAqbmFtZSAmJiB2YWx1ZSAmJiAqdmFsdWUpCi0gICAgIHsKLUBAIC00MjIyLDcgKzUwNzgsNyBAQCBFT0YKLSBmdW5jX3dpbjMyX2ltcG9ydF9saWJfcCAoKQotIHsKLSAgICAgJG9wdF9kZWJ1ZwotLSAgICBjYXNlIGBldmFsICIkZmlsZV9tYWdpY19jbWQgXCJcJDFcIiAyPi9kZXYvbnVsbCIgfCAkU0VEIC1lIDEwcWAgaW4KLSsgICAgY2FzZSBgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJDFcIiAyPi9kZXYvbnVsbCB8ICRTRUQgLWUgMTBxYCBpbgotICAgICAqaW1wb3J0KikgOiA7OwotICAgICAqKSBmYWxzZSA7OwotICAgICBlc2FjCi1AQCAtNDQwMSw5ICs1MjU3LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIDs7Ci0gCSAgKikKLSAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KLS0JICAgICAgZGxmaWxlcz0iJGRsZmlsZXMgJGFyZyIKLSsJICAgICAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRhcmciCi0gCSAgICBlbHNlCi0tCSAgICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRhcmciCi0rCSAgICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkYXJnIgotIAkgICAgZmkKLSAJICAgIHByZXY9Ci0gCSAgICBjb250aW51ZQotQEAgLTQ0MjcsNyArNTI4Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAqLSotZGFyd2luKikKLSAJICAgICAgY2FzZSAiJGRlcGxpYnMgIiBpbgotIAkJKiIgJHFhcmcubHRmcmFtZXdvcmsgIiopIDs7Ci0tCQkqKSBkZXBsaWJzPSIkZGVwbGlicyAkcWFyZy5sdGZyYW1ld29yayIgIyB0aGlzIGlzIGZpeGVkIGxhdGVyCi0rCQkqKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJHFhcmcubHRmcmFtZXdvcmsiICMgdGhpcyBpcyBmaXhlZCBsYXRlcgotIAkJICAgOzsKLSAJICAgICAgZXNhYwotIAkgICAgICA7OwotQEAgLTQ0NDYsNyArNTMwMiw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBtb3JlYXJncz0KLSAJICAgIGZvciBmaWwgaW4gYGNhdCAiJHNhdmVfYXJnImAKLSAJICAgIGRvCi0tIwkgICAgICBtb3JlYXJncz0iJG1vcmVhcmdzICRmaWwiCi0rIwkgICAgICBmdW5jX2FwcGVuZCBtb3JlYXJncyAiICRmaWwiCi0gCSAgICAgIGFyZz0kZmlsCi0gCSAgICAgICMgQSBsaWJ0b29sLWNvbnRyb2xsZWQgb2JqZWN0LgotIAotQEAgLTQ0NzUsNyArNTMzMSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCi0gCQkgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KLSAJCSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCi0tCQkgICAgICBkbGZpbGVzPSIkZGxmaWxlcyAkcGljX29iamVjdCIKLSsJCSAgICAgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkcGljX29iamVjdCIKLSAJCSAgICAgIHByZXY9Ci0gCQkgICAgICBjb250aW51ZQotIAkJICAgIGVsc2UKLUBAIC00NDg3LDcgKzUzNDMsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkJICAjIENIRUNLIE1FOiAgSSB0aGluayBJIGJ1c3RlZCB0aGlzLiAgLU9zc2FtYQotIAkJICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCi0gCQkgICAgIyBQcmVsb2FkIHRoZSBvbGQtc3R5bGUgb2JqZWN0LgotLQkJICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRwaWNfb2JqZWN0IgotKwkJICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkcGljX29iamVjdCIKLSAJCSAgICBwcmV2PQotIAkJICBmaQotIAotQEAgLTQ1NTcsMTIgKzU0MTMsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBpZiB0ZXN0ICIkcHJldiIgPSBycGF0aDsgdGhlbgotIAkgICAgY2FzZSAiJHJwYXRoICIgaW4KLSAJICAgICoiICRhcmcgIiopIDs7Ci0tCSAgICAqKSBycGF0aD0iJHJwYXRoICRhcmciIDs7Ci0rCSAgICAqKSBmdW5jX2FwcGVuZCBycGF0aCAiICRhcmciIDs7Ci0gCSAgICBlc2FjCi0gCSAgZWxzZQotIAkgICAgY2FzZSAiJHhycGF0aCAiIGluCi0gCSAgICAqIiAkYXJnICIqKSA7OwotLQkgICAgKikgeHJwYXRoPSIkeHJwYXRoICRhcmciIDs7Ci0rCSAgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkYXJnIiA7OwotIAkgICAgZXNhYwotIAkgIGZpCi0gCSAgcHJldj0KLUBAIC00NTc0LDI4ICs1NDMwLDI4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgY29udGludWUKLSAJICA7OwotIAl3ZWFrKQotLQkgIHdlYWtfbGlicz0iJHdlYWtfbGlicyAkYXJnIgotKwkgIGZ1bmNfYXBwZW5kIHdlYWtfbGlicyAiICRhcmciCi0gCSAgcHJldj0KLSAJICBjb250aW51ZQotIAkgIDs7Ci0gCXhjY2xpbmtlcikKLS0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCi0tCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKLSsJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkcWFyZyIKLSsJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRxYXJnIgotIAkgIHByZXY9Ci0gCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHFhcmciCi0gCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRxYXJnIgotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLSAJeGNvbXBpbGVyKQotLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHFhcmciCi0rCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkcWFyZyIKLSAJICBwcmV2PQotIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRxYXJnIgotIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkcWFyZyIKLSAJICBjb250aW51ZQotIAkgIDs7Ci0gCXhsaW5rZXIpCi0tCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRxYXJnIgotLQkgIGNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJHdsJHFhcmciCi0rCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJHFhcmciCi0rCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkd2wkcWFyZyIKLSAJICBwcmV2PQotIAkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICR3bCRxYXJnIgotIAkgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkd2wkcWFyZyIKLUBAIC00Njg2LDE1ICs1NTQyLDE2IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCTs7Ci0gCi0gICAgICAgLUwqKQotLQlmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkYXJnIgotLQlkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotLQlpZiB0ZXN0IC16ICIkZGlyIjsgdGhlbgotKwlmdW5jX3N0cmlwbmFtZSAiLUwiICcnICIkYXJnIgotKwlpZiB0ZXN0IC16ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IjsgdGhlbgotIAkgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgotIAkgICAgZnVuY19mYXRhbF9lcnJvciAicmVxdWlyZSBubyBzcGFjZSBiZXR3ZWVuIFxgLUwnIGFuZCBcYCQxJyIKLSAJICBlbHNlCi0gCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJuZWVkIHBhdGggZm9yIFxgLUwnIG9wdGlvbiIKLSAJICBmaQotIAlmaQotKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJZGlyPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKLSAJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCi0gCWNhc2UgJGRpciBpbgotIAlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIDs7Ci1AQCAtNDcwNiwxMCArNTU2MywxNiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIDs7Ci0gCWVzYWMKLSAJY2FzZSAiJGRlcGxpYnMgIiBpbgotLQkqIiAtTCRkaXIgIiopIDs7Ci0rCSoiIC1MJGRpciAiKiB8ICoiICRhcmcgIiopCi0rCSAgIyBXaWxsIG9ubHkgaGFwcGVuIGZvciBhYnNvbHV0ZSBvciBzeXNyb290IGFyZ3VtZW50cwotKwkgIDs7Ci0gCSopCi0tCSAgZGVwbGlicz0iJGRlcGxpYnMgLUwkZGlyIgotLQkgIGxpYl9zZWFyY2hfcGF0aD0iJGxpYl9zZWFyY2hfcGF0aCAkZGlyIgotKwkgICMgUHJlc2VydmUgc3lzcm9vdCwgYnV0IG5ldmVyIGluY2x1ZGUgcmVsYXRpdmUgZGlyZWN0b3JpZXMKLSsJICBjYXNlICRkaXIgaW4KLSsJICAgIFtcXC9dKiB8IFtBLVphLXpdOltcXC9dKiB8ID0qKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGFyZyIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAtTCRkaXIiIDs7Ci0rCSAgZXNhYwotKwkgIGZ1bmNfYXBwZW5kIGxpYl9zZWFyY2hfcGF0aCAiICRkaXIiCi0gCSAgOzsKLSAJZXNhYwotIAljYXNlICRob3N0IGluCi1AQCAtNDcxOCwxMiArNTU4MSwxMiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgotIAkgICoiOiRkaXI6IiopIDs7Ci0gCSAgOjopIGRsbHNlYXJjaHBhdGg9JGRpcjs7Ci0tCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGRpciI7OwotKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokZGlyIjs7Ci0gCSAgZXNhYwotIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgotIAkgICoiOiR0ZXN0YmluZGlyOiIqKSA7OwotIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKLS0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokdGVzdGJpbmRpciI7OwotKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokdGVzdGJpbmRpciI7OwotIAkgIGVzYWMKLSAJICA7OwotIAllc2FjCi1AQCAtNDc0Nyw3ICs1NjEwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIDs7Ci0gCSAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQotIAkgICAgIyBSaGFwc29keSBDIGFuZCBtYXRoIGxpYnJhcmllcyBhcmUgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKLS0JICAgIGRlcGxpYnM9IiRkZXBsaWJzIFN5c3RlbS5sdGZyYW1ld29yayIKLSsJICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiBTeXN0ZW0ubHRmcmFtZXdvcmsiCi0gCSAgICBjb250aW51ZQotIAkgICAgOzsKLSAJICAqLSotc2NvMy4ydjUqIHwgKi0qLXNjbzV2NiopCi1AQCAtNDc1OCw5ICs1NjIxLDYgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICMgQ29tcGlsZXIgaW5zZXJ0cyBsaWJjIGluIHRoZSBjb3JyZWN0IHBsYWNlIGZvciB0aHJlYWRzIHRvIHdvcmsKLSAJICAgIHRlc3QgIlgkYXJnIiA9ICJYLWxjIiAmJiBjb250aW51ZQotIAkgICAgOzsKLS0JICAqLSotbGludXgqKQotLQkgICAgdGVzdCAiWCRhcmciID0gIlgtbGMiICYmIGNvbnRpbnVlCi0tCSAgICA7OwotIAkgIGVzYWMKLSAJZWxpZiB0ZXN0ICJYJGFyZyIgPSAiWC1sY19yIjsgdGhlbgotIAkgY2FzZSAkaG9zdCBpbgotQEAgLTQ3NzAsNyArNTYzMCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgIDs7Ci0gCSBlc2FjCi0gCWZpCi0tCWRlcGxpYnM9IiRkZXBsaWJzICRhcmciCi0rCWZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIgotIAljb250aW51ZQotIAk7OwotIAotQEAgLTQ3ODIsOCArNTY0Miw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gICAgICAgIyBUcnU2NCBVTklYIHVzZXMgLW1vZGVsIFthcmddIHRvIGRldGVybWluZSB0aGUgbGF5b3V0IG9mIEMrKwotICAgICAgICMgY2xhc3NlcywgbmFtZSBtYW5nbGluZywgYW5kIGV4Y2VwdGlvbiBoYW5kbGluZy4KLSAgICAgICAjIERhcndpbiB1c2VzIHRoZSAtYXJjaCBmbGFnIHRvIGRldGVybWluZSBvdXRwdXQgYXJjaGl0ZWN0dXJlLgotLSAgICAgIC1tb2RlbHwtYXJjaHwtaXN5c3Jvb3QpCi0tCWNvbXBpbGVyX2ZsYWdzPSIkY29tcGlsZXJfZmxhZ3MgJGFyZyIKLSsgICAgICAtbW9kZWx8LWFyY2h8LWlzeXNyb290fC0tc3lzcm9vdCkKLSsJZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgotIAlmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgotIAlmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKLSAJcHJldj14Y29tcGlsZXIKLUBAIC00NzkxLDEyICs1NjUxLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCTs7Ci0gCi0gICAgICAgLW10fC1tdGhyZWFkc3wta3RocmVhZHwtS3RocmVhZHwtcHRocmVhZHwtcHRocmVhZHN8LS10aHJlYWQtc2FmZXwtdGhyZWFkcykKLS0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgotKwlmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCi0gCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCi0gCWZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgotIAljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgotIAkgICAgKiIgJGFyZyAiKikgOzsKLS0JICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRhcmciIDs7Ci0rCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkYXJnIiA7OwotIAllc2FjCi0gCWNvbnRpbnVlCi0gCTs7Ci1AQCAtNDg2MywxMyArNTcyMywxNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KLSAJY2FzZSAkZGlyIGluCi0gCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKLSsJPSopCi0rCSAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkZGlyIgotKwkgIGRpcj0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsJICA7OwotIAkqKQotIAkgIGZ1bmNfZmF0YWxfZXJyb3IgIm9ubHkgYWJzb2x1dGUgcnVuLXBhdGhzIGFyZSBhbGxvd2VkIgotIAkgIDs7Ci0gCWVzYWMKLSAJY2FzZSAiJHhycGF0aCAiIGluCi0gCSoiICRkaXIgIiopIDs7Ci0tCSopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OwotKwkqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkZGlyIiA7OwotIAllc2FjCi0gCWNvbnRpbnVlCi0gCTs7Ci1AQCAtNDkyMiw4ICs1Nzg2LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCi0gCSAgSUZTPSIkc2F2ZV9pZnMiCi0gICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmbGFnIgotLQkgIGFyZz0iJGFyZyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0tCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCSAgZnVuY19hcHBlbmQgYXJnICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotIAlkb25lCi0gCUlGUz0iJHNhdmVfaWZzIgotIAlmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRhcmciCi1AQCAtNDkzOCw5ICs1ODAyLDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJZm9yIGZsYWcgaW4gJGFyZ3M7IGRvCi0gCSAgSUZTPSIkc2F2ZV9pZnMiCi0gICAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRmbGFnIgotLQkgIGFyZz0iJGFyZyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0tCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0tCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSsJICBmdW5jX2FwcGVuZCBhcmcgIiAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkd2wkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCi0rCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotIAlkb25lCi0gCUlGUz0iJHNhdmVfaWZzIgotIAlmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRhcmciCi1AQCAtNDk2OCwyNCArNTgzMiwyNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAlhcmc9IiRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKLSAJOzsKLSAKLS0gICAgICAjIC02NCwgLW1pcHNbMC05XSBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFNHSSBjb21waWxlcgotLSAgICAgICMgLXJbMC05XVswLTldKiBzcGVjaWZpZXMgdGhlIHByb2Nlc3NvciBvbiB0aGUgU0dJIGNvbXBpbGVyCi0tICAgICAgIyAteGFyY2g9KiwgLXh0YXJnZXQ9KiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIFN1biBjb21waWxlcgotLSAgICAgICMgK0RBKiwgK0REKiBlbmFibGUgNjQtYml0IG1vZGUgb24gdGhlIEhQIGNvbXBpbGVyCi0tICAgICAgIyAtcSogcGFzcyB0aHJvdWdoIGNvbXBpbGVyIGFyZ3MgZm9yIHRoZSBJQk0gY29tcGlsZXIKLS0gICAgICAjIC1tKiwgLXRbNDVdKiwgLXR4c2NhbGUqIHBhc3MgdGhyb3VnaCBhcmNoaXRlY3R1cmUtc3BlY2lmaWMKLS0gICAgICAjIGNvbXBpbGVyIGFyZ3MgZm9yIEdDQwotLSAgICAgICMgLUYvcGF0aCBnaXZlcyBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KLS0gICAgICAjIC1wLCAtcGcsIC0tY292ZXJhZ2UsIC1mcHJvZmlsZS0qIHBhc3MgdGhyb3VnaCBwcm9maWxpbmcgZmxhZyBmb3IgR0NDCi0tICAgICAgIyBAZmlsZSBHQ0MgcmVzcG9uc2UgZmlsZXMKLS0gICAgICAjIC10cD0qIFBvcnRsYW5kIHBnY2MgdGFyZ2V0IHByb2Nlc3NvciBzZWxlY3Rpb24KLSsgICAgICAjIEZsYWdzIHRvIGJlIHBhc3NlZCB0aHJvdWdoIHVuY2hhbmdlZCwgd2l0aCByYXRpb25hbGU6Ci0rICAgICAgIyAtNjQsIC1taXBzWzAtOV0gICAgICBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBTR0kgY29tcGlsZXIKLSsgICAgICAjIC1yWzAtOV1bMC05XSogICAgICAgIHNwZWNpZnkgcHJvY2Vzc29yIGZvciB0aGUgU0dJIGNvbXBpbGVyCi0rICAgICAgIyAteGFyY2g9KiwgLXh0YXJnZXQ9KiBlbmFibGUgNjQtYml0IG1vZGUgZm9yIHRoZSBTdW4gY29tcGlsZXIKLSsgICAgICAjICtEQSosICtERCogICAgICAgICAgIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIEhQIGNvbXBpbGVyCi0rICAgICAgIyAtcSogICAgICAgICAgICAgICAgICBjb21waWxlciBhcmdzIGZvciB0aGUgSUJNIGNvbXBpbGVyCi0rICAgICAgIyAtbSosIC10WzQ1XSosIC10eHNjYWxlKiBhcmNoaXRlY3R1cmUtc3BlY2lmaWMgZmxhZ3MgZm9yIEdDQwotKyAgICAgICMgLUYvcGF0aCAgICAgICAgICAgICAgcGF0aCB0byB1bmluc3RhbGxlZCBmcmFtZXdvcmtzLCBnY2Mgb24gZGFyd2luCi0rICAgICAgIyAtcCwgLXBnLCAtLWNvdmVyYWdlLCAtZnByb2ZpbGUtKiAgcHJvZmlsaW5nIGZsYWdzIGZvciBHQ0MKLSsgICAgICAjIEBmaWxlICAgICAgICAgICAgICAgIEdDQyByZXNwb25zZSBmaWxlcwotKyAgICAgICMgLXRwPSogICAgICAgICAgICAgICAgUG9ydGxhbmQgcGdjYyB0YXJnZXQgcHJvY2Vzc29yIHNlbGVjdGlvbgotKyAgICAgICMgLS1zeXNyb290PSogICAgICAgICAgZm9yIHN5c3Jvb3Qgc3VwcG9ydAotKyAgICAgICMgLU8qLCAtZmx0byosIC1md2hvcHIqLCAtZnVzZS1saW5rZXItcGx1Z2luIEdDQyBsaW5rLXRpbWUgb3B0aW1pemF0aW9uCi0gICAgICAgLTY0fC1taXBzWzAtOV18LXJbMC05XVswLTldKnwteGFyY2g9KnwteHRhcmdldD0qfCtEQSp8K0REKnwtcSp8LW0qfCBcCi0tICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqfC10cD0qKQotKyAgICAgIC10WzQ1XSp8LXR4c2NhbGUqfC1wfC1wZ3wtLWNvdmVyYWdlfC1mcHJvZmlsZS0qfC1GKnxAKnwtdHA9KnwtLXN5c3Jvb3Q9KnwgXAotKyAgICAgIC1PKnwtZmx0byp8LWZ3aG9wcip8LWZ1c2UtbGlua2VyLXBsdWdpbikKLSAgICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCi0gCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgotICAgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKLSAgICAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgotLSAgICAgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgotKyAgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkYXJnIgotICAgICAgICAgY29udGludWUKLSAgICAgICAgIDs7Ci0gCi1AQCAtNDk5Nyw3ICs1ODY0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAKLSAgICAgICAqLiRvYmpleHQpCi0gCSMgQSBzdGFuZGFyZCBvYmplY3QuCi0tCW9ianM9IiRvYmpzICRhcmciCi0rCWZ1bmNfYXBwZW5kIG9ianMgIiAkYXJnIgotIAk7OwotIAotICAgICAgICoubG8pCi1AQCAtNTAyOCw3ICs1ODk1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAKLSAJICAgIGlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KLSAJICAgICAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiA9IHllczsgdGhlbgotLQkJZGxmaWxlcz0iJGRsZmlsZXMgJHBpY19vYmplY3QiCi0rCQlmdW5jX2FwcGVuZCBkbGZpbGVzICIgJHBpY19vYmplY3QiCi0gCQlwcmV2PQotIAkJY29udGludWUKLSAJICAgICAgZWxzZQotQEAgLTUwNDAsNyArNTkwNyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAjIENIRUNLIE1FOiAgSSB0aGluayBJIGJ1c3RlZCB0aGlzLiAgLU9zc2FtYQotIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgotIAkgICAgICAjIFByZWxvYWQgdGhlIG9sZC1zdHlsZSBvYmplY3QuCi0tCSAgICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRwaWNfb2JqZWN0IgotKwkgICAgICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJHBpY19vYmplY3QiCi0gCSAgICAgIHByZXY9Ci0gCSAgICBmaQotIAotQEAgLTUwODUsMjQgKzU5NTIsMjUgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAKLSAgICAgICAqLiRsaWJleHQpCi0gCSMgQW4gYXJjaGl2ZS4KLS0JZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKLS0Jb2xkX2RlcGxpYnM9IiRvbGRfZGVwbGlicyAkYXJnIgotKwlmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGFyZyIKLSsJZnVuY19hcHBlbmQgb2xkX2RlcGxpYnMgIiAkYXJnIgotIAljb250aW51ZQotIAk7OwotIAotICAgICAgICoubGEpCi0gCSMgQSBsaWJ0b29sLWNvbnRyb2xsZWQgbGlicmFyeS4KLSAKLSsJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRhcmciCi0gCWlmIHRlc3QgIiRwcmV2IiA9IGRsZmlsZXM7IHRoZW4KLSAJICAjIFRoaXMgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRsb3Blbi4KLS0JICBkbGZpbGVzPSIkZGxmaWxlcyAkYXJnIgotKwkgIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgotIAkgIHByZXY9Ci0gCWVsaWYgdGVzdCAiJHByZXYiID0gZGxwcmVmaWxlczsgdGhlbgotIAkgICMgVGhlIGxpYnJhcnkgd2FzIHNwZWNpZmllZCB3aXRoIC1kbHByZW9wZW4uCi0tCSAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKLSsJICBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKLSAJICBwcmV2PQotIAllbHNlCi0tCSAgZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKLSsJICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKLSAJZmkKLSAJY29udGludWUKLSAJOzsKLUBAIC01MTI3LDcgKzU5OTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgIGZ1bmNfZmF0YWxfaGVscCAidGhlIFxgJHByZXZhcmcnIG9wdGlvbiByZXF1aXJlcyBhbiBhcmd1bWVudCIKLSAKLSAgICAgaWYgdGVzdCAiJGV4cG9ydF9keW5hbWljIiA9IHllcyAmJiB0ZXN0IC1uICIkZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjIjsgdGhlbgotLSAgICAgIGV2YWwgImFyZz1cIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWNcIiIKLSsgICAgICBldmFsIGFyZz1cIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWNcIgotICAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCi0gICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCi0gICAgIGZpCi1AQCAtNTE0NCwxMSArNjAxMiwxMyBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICBlbHNlCi0gICAgICAgc2hsaWJfc2VhcmNoX3BhdGg9Ci0gICAgIGZpCi0tICAgIGV2YWwgInN5c19saWJfc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjXCIiCi0tICAgIGV2YWwgInN5c19saWJfZGxzZWFyY2hfcGF0aD1cIiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlY1wiIgotKyAgICBldmFsIHN5c19saWJfc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjXCIKLSsgICAgZXZhbCBzeXNfbGliX2Rsc2VhcmNoX3BhdGg9XCIkc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWNcIgotIAotICAgICBmdW5jX2Rpcm5hbWUgIiRvdXRwdXQiICIvIiAiIgotICAgICBvdXRwdXRfb2JqZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCRvYmpkaXIiCi0rICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8iCi0rICAgIHRvb2xfb3V0cHV0X29iamRpcj0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0Ci0gICAgICMgQ3JlYXRlIHRoZSBvYmplY3QgZGlyZWN0b3J5LgotICAgICBmdW5jX21rZGlyX3AgIiRvdXRwdXRfb2JqZGlyIgotIAotQEAgLTUxNjksMTIgKzYwMzksMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgIyBGaW5kIGFsbCBpbnRlcmRlcGVuZGVudCBkZXBsaWJzIGJ5IHNlYXJjaGluZyBmb3IgbGlicmFyaWVzCi0gICAgICMgdGhhdCBhcmUgbGlua2VkIG1vcmUgdGhhbiBvbmNlIChlLmcuIC1sYSAtbGIgLWxhKQotICAgICBmb3IgZGVwbGliIGluICRkZXBsaWJzOyBkbwotLSAgICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCi0rICAgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KLSAJY2FzZSAiJGxpYnMgIiBpbgotLQkqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7Ci0rCSoiICRkZXBsaWIgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGRlcGxpYiIgOzsKLSAJZXNhYwotICAgICAgIGZpCi0tICAgICAgbGlicz0iJGxpYnMgJGRlcGxpYiIKLSsgICAgICBmdW5jX2FwcGVuZCBsaWJzICIgJGRlcGxpYiIKLSAgICAgZG9uZQotIAotICAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliOyB0aGVuCi1AQCAtNTE4Nyw5ICs2MDU3LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICBpZiAkb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwczsgdGhlbgotIAlmb3IgcHJlX3Bvc3RfZGVwIGluICRwcmVkZXBzICRwb3N0ZGVwczsgZG8KLSAJICBjYXNlICIkcHJlX3Bvc3RfZGVwcyAiIGluCi0tCSAgKiIgJHByZV9wb3N0X2RlcCAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkcHJlX3Bvc3RfZGVwcyIgOzsKLSsJICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRwcmVfcG9zdF9kZXBzIiA7OwotIAkgIGVzYWMKLS0JICBwcmVfcG9zdF9kZXBzPSIkcHJlX3Bvc3RfZGVwcyAkcHJlX3Bvc3RfZGVwIgotKwkgIGZ1bmNfYXBwZW5kIHByZV9wb3N0X2RlcHMgIiAkcHJlX3Bvc3RfZGVwIgotIAlkb25lCi0gICAgICAgZmkKLSAgICAgICBwcmVfcG9zdF9kZXBzPQotQEAgLTUyNTYsOCArNjEyNiw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCWZvciBsaWIgaW4gJGRscHJlZmlsZXM7IGRvCi0gCSAgIyBJZ25vcmUgbm9uLWxpYnRvb2wtbGlicwotIAkgIGRlcGVuZGVuY3lfbGlicz0KLSsJICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGxpYiIKLSAJICBjYXNlICRsaWIgaW4KLS0JICAqLmxhKQlmdW5jX3NvdXJjZSAiJGxpYiIgOzsKLSsJICAqLmxhKQlmdW5jX3NvdXJjZSAiJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIgOzsKLSAJICBlc2FjCi0gCi0gCSAgIyBDb2xsZWN0IHByZW9wZW5lZCBsaWJ0b29sIGRlcGxpYnMsIGV4Y2VwdCBhbnkgdGhpcyBsaWJyYXJ5Ci1AQCAtNTI2Nyw3ICs2MTM4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAgICAgICAgICAgICBkZXBsaWJfYmFzZT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKLSAJICAgIGNhc2UgIiAkd2Vha19saWJzICIgaW4KLSAJICAgICoiICRkZXBsaWJfYmFzZSAiKikgOzsKLS0JICAgICopIGRlcGxpYnM9IiRkZXBsaWJzICRkZXBsaWIiIDs7Ci0rCSAgICAqKSBmdW5jX2FwcGVuZCBkZXBsaWJzICIgJGRlcGxpYiIgOzsKLSAJICAgIGVzYWMKLSAJICBkb25lCi0gCWRvbmUKLUBAIC01Mjg4LDExICs2MTU5LDExIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKLSAJICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCi0gCSAgZWxzZQotLQkgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkZGVwbGliIgotKwkgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkZGVwbGliIgotIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiA7IHRoZW4KLSAJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCi0gCQkgICAgKiIgJGRlcGxpYiAiKikgOzsKLS0JCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZGVwbGliIiA7OwotKwkJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRkZXBsaWIiIDs7Ci0gCQllc2FjCi0gCSAgICBmaQotIAkgIGZpCi1AQCAtNTM3Nyw3ICs2MjQ4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWIgOyB0aGVuCi0gCQljYXNlICIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgotIAkJICAgICoiICRkZXBsaWIgIiopIDs7Ci0tCQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGRlcGxpYiIgOzsKLSsJCSAgICAqICkgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkZGVwbGliIiA7OwotIAkJZXNhYwotIAkgICAgZmkKLSAJICBmaQotQEAgLTUzOTAsNyArNjI2MSw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICB0ZXN0ICIkcGFzcyIgPSBjb252ICYmIGNvbnRpbnVlCi0gCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKLSAJICAgIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCi0tCSAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKLSAJICAgIDs7Ci0gCSAgcHJvZykKLSAJICAgIGlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KLUBAIC01NDA0LDcgKzYyNzYsOCBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgICBmaW5hbGl6ZV9kZXBsaWJzPSIkZGVwbGliICRmaW5hbGl6ZV9kZXBsaWJzIgotIAkgICAgZmkKLSAJICAgIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCi0tCSAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKLSAJICAgIDs7Ci0gCSAgKikKLSAJICAgIGZ1bmNfd2FybmluZyAiXGAtTCcgaXMgaWdub3JlZCBmb3IgYXJjaGl2ZXMvb2JqZWN0cyIKLUBAIC01NDE1LDE3ICs2Mjg4LDIxIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCS1SKikKLSAJICBpZiB0ZXN0ICIkcGFzcyIgPSBsaW5rOyB0aGVuCi0gCSAgICBmdW5jX3N0cmlwbmFtZSAnLVInICcnICIkZGVwbGliIgotLQkgICAgZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKLSsJICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgotKwkgICAgZGlyPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKLSAJICAgICMgTWFrZSBzdXJlIHRoZSB4cnBhdGggY29udGFpbnMgb25seSB1bmlxdWUgZGlyZWN0b3JpZXMuCi0gCSAgICBjYXNlICIkeHJwYXRoICIgaW4KLSAJICAgICoiICRkaXIgIiopIDs7Ci0tCSAgICAqKSB4cnBhdGg9IiR4cnBhdGggJGRpciIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRkaXIiIDs7Ci0gCSAgICBlc2FjCi0gCSAgZmkKLSAJICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgotIAkgIGNvbnRpbnVlCi0gCSAgOzsKLS0JKi5sYSkgbGliPSIkZGVwbGliIiA7OwotKwkqLmxhKQotKwkgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgotKwkgIGxpYj0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0Ci0rCSAgOzsKLSAJKi4kbGliZXh0KQotIAkgIGlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KLSAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCi1AQCAtNTQ4OCwxMSArNjM2NSwxMSBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgaWYgdGVzdCAiJHBhc3MiID0gZGxwcmVvcGVuIHx8IHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgIT0geWVzIHx8IHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0gbm87IHRoZW4KLSAJICAgICAgIyBJZiB0aGVyZSBpcyBubyBkbG9wZW4gc3VwcG9ydCBvciB3ZSdyZSBsaW5raW5nIHN0YXRpY2FsbHksCi0gCSAgICAgICMgd2UgbmVlZCB0byBwcmVsb2FkLgotLQkgICAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGVwbGliIgotKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRlcGxpYiIKLSAJICAgICAgY29tcGlsZV9kZXBsaWJzPSIkZGVwbGliICRjb21waWxlX2RlcGxpYnMiCi0gCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCi0gCSAgICBlbHNlCi0tCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRkZXBsaWIiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkZGVwbGliIgotIAkgICAgZmkKLSAJICBmaQotIAkgIGNvbnRpbnVlCi1AQCAtNTUzOCw3ICs2NDE1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBmb3IgdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyBpbiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZ3M7IGRvCi0gCSAgICBjYXNlICIgJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KLSAJICAgICAgKiIgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWcgIiopIDs7Ci0tCSAgICAgICopIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJHRtcF9pbmhlcml0ZWRfbGlua2VyX2ZsYWciOzsKLSsJICAgICAgKikgZnVuY19hcHBlbmQgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyI7OwotIAkgICAgZXNhYwotIAkgIGRvbmUKLSAJZmkKLUBAIC01NTQ2LDggKzY0MjMsOCBAQCBmdW5jX21vZGVfbGluayAoKQotIAlpZiB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gImxpYixsaW5rIiB8fAotIAkgICB0ZXN0ICIkbGlua21vZGUsJHBhc3MiID0gInByb2csc2NhbiIgfHwKLSAJICAgeyB0ZXN0ICIkbGlua21vZGUiICE9IHByb2cgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWI7IH07IHRoZW4KLS0JICB0ZXN0IC1uICIkZGxvcGVuIiAmJiBkbGZpbGVzPSIkZGxmaWxlcyAkZGxvcGVuIgotLQkgIHRlc3QgLW4gIiRkbHByZW9wZW4iICYmIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRkbHByZW9wZW4iCi0rCSAgdGVzdCAtbiAiJGRsb3BlbiIgJiYgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRkbG9wZW4iCi0rCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRkbHByZW9wZW4iCi0gCWZpCi0gCi0gCWlmIHRlc3QgIiRwYXNzIiA9IGNvbnY7IHRoZW4KLUBAIC01NTU4LDIwICs2NDM1LDIwIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIgotIAkgICAgZmkKLSAJICAgICMgSXQgaXMgYSBsaWJ0b29sIGNvbnZlbmllbmNlIGxpYnJhcnksIHNvIGFkZCBpbiBpdHMgb2JqZWN0cy4KLS0JICAgIGNvbnZlbmllbmNlPSIkY29udmVuaWVuY2UgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgotLQkgICAgb2xkX2NvbnZlbmllbmNlPSIkb2xkX2NvbnZlbmllbmNlICRsYWRpci8kb2JqZGlyLyRvbGRfbGlicmFyeSIKLSsJICAgIGZ1bmNfYXBwZW5kIGNvbnZlbmllbmNlICIgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgotKwkgICAgZnVuY19hcHBlbmQgb2xkX2NvbnZlbmllbmNlICIgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgotIAkgIGVsaWYgdGVzdCAiJGxpbmttb2RlIiAhPSBwcm9nICYmIHRlc3QgIiRsaW5rbW9kZSIgIT0gbGliOyB0aGVuCi0gCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIGNvbnZlbmllbmNlIGxpYnJhcnkiCi0gCSAgZmkKLSAJICB0bXBfbGlicz0KLSAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCi0gCSAgICBkZXBsaWJzPSIkZGVwbGliICRkZXBsaWJzIgotLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KLSsJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCi0gCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCi0tCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKLSsJICAgICAgKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICBmaQotLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgotKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIgotIAkgIGRvbmUKLSAJICBjb250aW51ZQotIAlmaSAjICRwYXNzID0gY29udgotQEAgLTU1NzksOSArNjQ1NiwxNSBAQCBmdW5jX21vZGVfbGluayAoKQotIAotIAkjIEdldCB0aGUgbmFtZSBvZiB0aGUgbGlicmFyeSB3ZSBsaW5rIGFnYWluc3QuCi0gCWxpbmtsaWI9Ci0tCWZvciBsIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8KLS0JICBsaW5rbGliPSIkbCIKLS0JZG9uZQotKwlpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmCi0rCSAgIHsgdGVzdCAiJHByZWZlcl9zdGF0aWNfbGlicyIgPSB5ZXMgfHwKLSsJICAgICB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzLCRpbnN0YWxsZWQiID0gImJ1aWx0LG5vIjsgfTsgdGhlbgotKwkgIGxpbmtsaWI9JG9sZF9saWJyYXJ5Ci0rCWVsc2UKLSsJICBmb3IgbCBpbiAkb2xkX2xpYnJhcnkgJGxpYnJhcnlfbmFtZXM7IGRvCi0rCSAgICBsaW5rbGliPSIkbCIKLSsJICBkb25lCi0rCWZpCi0gCWlmIHRlc3QgLXogIiRsaW5rbGliIjsgdGhlbgotIAkgIGZ1bmNfZmF0YWxfZXJyb3IgImNhbm5vdCBmaW5kIG5hbWUgb2YgbGluayBsaWJyYXJ5IGZvciBcYCRsaWInIgotIAlmaQotQEAgLTU1OTgsOSArNjQ4MSw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAjIHN0YXRpY2FsbHksIHdlIG5lZWQgdG8gcHJlbG9hZC4gIFdlIGFsc28gbmVlZCB0byBwcmVsb2FkIGFueQotIAkgICAgIyBkZXBlbmRlbnQgbGlicmFyaWVzIHNvIGxpYmx0ZGwncyBkZXBsaWIgcHJlbG9hZGVyIGRvZXNuJ3QKLSAJICAgICMgYm9tYiBvdXQgaW4gdGhlIGxvYWQgZGVwbGlicyBwaGFzZS4KLS0JICAgIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRsaWIgJGRlcGVuZGVuY3lfbGlicyIKLSsJICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkbGliICRkZXBlbmRlbmN5X2xpYnMiCi0gCSAgZWxzZQotLQkgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYiIKLSsJICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkbGliIgotIAkgIGZpCi0gCSAgY29udGludWUKLSAJZmkgIyAkcGFzcyA9IGRsb3BlbgotQEAgLTU2MjIsMTQgKzY1MDUsMTQgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAKLSAJIyBGaW5kIHRoZSByZWxldmFudCBvYmplY3QgZGlyZWN0b3J5IGFuZCBsaWJyYXJ5IG5hbWUuCi0gCWlmIHRlc3QgIlgkaW5zdGFsbGVkIiA9IFh5ZXM7IHRoZW4KLS0JICBpZiB0ZXN0ICEgLWYgIiRsaWJkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCi0rCSAgaWYgdGVzdCAhIC1mICIkbHRfc3lzcm9vdCRsaWJkaXIvJGxpbmtsaWIiICYmIHRlc3QgLWYgIiRhYnNfbGFkaXIvJGxpbmtsaWIiOyB0aGVuCi0gCSAgICBmdW5jX3dhcm5pbmcgImxpYnJhcnkgXGAkbGliJyB3YXMgbW92ZWQuIgotIAkgICAgZGlyPSIkbGFkaXIiCi0gCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCi0gCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCi0gCSAgZWxzZQotLQkgICAgZGlyPSIkbGliZGlyIgotLQkgICAgYWJzZGlyPSIkbGliZGlyIgotKwkgICAgZGlyPSIkbHRfc3lzcm9vdCRsaWJkaXIiCi0rCSAgICBhYnNkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKLSAJICBmaQotIAkgIHRlc3QgIlgkaGFyZGNvZGVfYXV0b21hdGljIiA9IFh5ZXMgJiYgYXZvaWR0ZW1wcnBhdGg9eWVzCi0gCWVsc2UKLUBAIC01NjM3LDEyICs2NTIwLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBkaXI9IiRsYWRpciIKLSAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKLSAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKLS0JICAgIG5vdGluc3RfcGF0aD0iJG5vdGluc3RfcGF0aCAkYWJzX2xhZGlyIgotKwkgICAgZnVuY19hcHBlbmQgbm90aW5zdF9wYXRoICIgJGFic19sYWRpciIKLSAJICBlbHNlCi0gCSAgICBkaXI9IiRsYWRpci8kb2JqZGlyIgotIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyLyRvYmpkaXIiCi0gCSAgICAjIFJlbW92ZSB0aGlzIHNlYXJjaCBwYXRoIGxhdGVyCi0tCSAgICBub3RpbnN0X3BhdGg9IiRub3RpbnN0X3BhdGggJGFic19sYWRpciIKLSsJICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfcGF0aCAiICRhYnNfbGFkaXIiCi0gCSAgZmkKLSAJZmkgIyAkaW5zdGFsbGVkID0geWVzCi0gCWZ1bmNfc3RyaXBuYW1lICdsaWInICcubGEnICIkbGFuYW1lIgotQEAgLTU2NTMsMjAgKzY1MzYsNDYgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBpZiB0ZXN0IC16ICIkbGliZGlyIiAmJiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgotIAkgICAgZnVuY19mYXRhbF9lcnJvciAib25seSBsaWJyYXJpZXMgbWF5IC1kbHByZW9wZW4gYSBjb252ZW5pZW5jZSBsaWJyYXJ5OiBcYCRsaWInIgotIAkgIGZpCi0tCSAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28gdGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCi0tCSAgIyBhcmUgcmVxdWlyZWQgdG8gbGluaykuCi0tCSAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgotLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kb2xkX2xpYnJhcnkiCi0tCSAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKLS0JICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgotLQkgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAotLQkJZGxwcmVjb252ZW5pZW5jZWxpYnM9IiRkbHByZWNvbnZlbmllbmNlbGlicyAkZGlyLyRvbGRfbGlicmFyeSIKLS0JICAjIE90aGVyd2lzZSwgdXNlIHRoZSBkbG5hbWUsIHNvIHRoYXQgbHRfZGxvcGVuIGZpbmRzIGl0LgotLQkgIGVsaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KLS0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJGRsbmFtZSIKLS0JICBlbHNlCi0tCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRsaW5rbGliIgotLQkgIGZpCi0rCSAgY2FzZSAiJGhvc3QiIGluCi0rCSAgICAjIHNwZWNpYWwgaGFuZGxpbmcgZm9yIHBsYXRmb3JtcyB3aXRoIFBFLURMTHMuCi0rCSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKLSsJICAgICAgIyBMaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGxpbmsgYWdhaW5zdCBzaGFyZWQgbGlicmFyeSBpZiBib3RoCi0rCSAgICAgICMgc3RhdGljIGFuZCBzaGFyZWQgYXJlIHByZXNlbnQuICBUaGVyZWZvcmUsIGVuc3VyZSB3ZSBleHRyYWN0Ci0rCSAgICAgICMgc3ltYm9scyBmcm9tIHRoZSBpbXBvcnQgbGlicmFyeSBpZiBhIHNoYXJlZCBsaWJyYXJ5IGlzIHByZXNlbnQKLSsJICAgICAgIyAob3RoZXJ3aXNlLCB0aGUgZGxvcGVuIG1vZHVsZSBuYW1lIHdpbGwgYmUgaW5jb3JyZWN0KS4gIFdlIGRvCi0rCSAgICAgICMgdGhpcyBieSBwdXR0aW5nIHRoZSBpbXBvcnQgbGlicmFyeSBuYW1lIGludG8gJG5ld2RscHJlZmlsZXMuCi0rCSAgICAgICMgV2UgcmVjb3ZlciB0aGUgZGxvcGVuIG1vZHVsZSBuYW1lIGJ5ICdzYXZpbmcnIHRoZSBsYSBmaWxlCi0rCSAgICAgICMgbmFtZSBpbiBhIHNwZWNpYWwgcHVycG9zZSB2YXJpYWJsZSwgYW5kIChsYXRlcikgZXh0cmFjdGluZyB0aGUKLSsJICAgICAgIyBkbG5hbWUgZnJvbSB0aGUgbGEgZmlsZS4KLSsJICAgICAgaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KLSsJICAgICAgICBmdW5jX3RyX3NoICIkZGlyLyRsaW5rbGliIgotKwkgICAgICAgIGV2YWwgImxpYmZpbGVfJGZ1bmNfdHJfc2hfcmVzdWx0PVwkYWJzX2xhZGlyL1wkbGFuYW1lIgotKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRsaW5rbGliIgotKwkgICAgICBlbHNlCi0rCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJG9sZF9saWJyYXJ5IgotKwkgICAgICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjawotKwkgICAgICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgotKwkgICAgICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKLSsJICAgICAgICAgIGZ1bmNfYXBwZW5kIGRscHJlY29udmVuaWVuY2VsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCi0rCSAgICAgIGZpCi0rCSAgICA7OwotKwkgICAgKiApCi0rCSAgICAgICMgUHJlZmVyIHVzaW5nIGEgc3RhdGljIGxpYnJhcnkgKHNvIHRoYXQgbm8gc2lsbHkgX0RZTkFNSUMgc3ltYm9scwotKwkgICAgICAjIGFyZSByZXF1aXJlZCB0byBsaW5rKS4KLSsJICAgICAgaWYgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IjsgdGhlbgotKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRvbGRfbGlicmFyeSIKLSsJICAgICAgICAjIEtlZXAgYSBsaXN0IG9mIHByZW9wZW5lZCBjb252ZW5pZW5jZSBsaWJyYXJpZXMgdG8gY2hlY2sKLSsJICAgICAgICAjIHRoYXQgdGhleSBhcmUgYmVpbmcgdXNlZCBjb3JyZWN0bHkgaW4gdGhlIGxpbmsgcGFzcy4KLSsJICAgICAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0rCSAgICAgICAgICBmdW5jX2FwcGVuZCBkbHByZWNvbnZlbmllbmNlbGlicyAiICRkaXIvJG9sZF9saWJyYXJ5IgotKwkgICAgICAjIE90aGVyd2lzZSwgdXNlIHRoZSBkbG5hbWUsIHNvIHRoYXQgbHRfZGxvcGVuIGZpbmRzIGl0LgotKwkgICAgICBlbGlmIHRlc3QgLW4gIiRkbG5hbWUiOyB0aGVuCi0rCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGRsbmFtZSIKLSsJICAgICAgZWxzZQotKwkgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGlyLyRsaW5rbGliIgotKwkgICAgICBmaQotKwkgICAgOzsKLSsJICBlc2FjCi0gCWZpICMgJHBhc3MgPSBkbHByZW9wZW4KLSAKLSAJaWYgdGVzdCAteiAiJGxpYmRpciI7IHRoZW4KLUBAIC01Njg0LDcgKzY1OTMsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAotIAotIAlpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyAmJiB0ZXN0ICIkcGFzcyIgIT0gbGluazsgdGhlbgotLQkgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkbGFkaXIiCi0rCSAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGxhZGlyIgotIAkgIGRlcGxpYnM9IiRsaWIgJGRlcGxpYnMiCi0gCi0gCSAgbGlua2FsbGRlcGxpYnM9bm8KLUBAIC01Njk3LDcgKzY2MDYsOCBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KLSAJICAgIGNhc2UgJGRlcGxpYiBpbgotIAkgICAgLUwqKSBmdW5jX3N0cmlwbmFtZSAnLUwnICcnICIkZGVwbGliIgotLQkgICAgICAgICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJICAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCSAgICAgICAgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCi0gCQkgOzsKLSAJICAgIGVzYWMKLSAJICAgICMgTmVlZCB0byBsaW5rIGFnYWluc3QgYWxsIGRlcGVuZGVuY3lfbGlicz8KLUBAIC01NzA4LDEyICs2NjE4LDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgICMgb3IvYW5kIGxpbmsgYWdhaW5zdCBzdGF0aWMgbGlicmFyaWVzCi0gCSAgICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgotIAkgICAgZmkKLS0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCi0rCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgotIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgotLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7Ci0rCSAgICAgICoiICRkZXBsaWIgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGRlcGxpYiIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLS0JICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKLSsJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIKLSAJICBkb25lICMgZm9yIGRlcGxpYgotIAkgIGNvbnRpbnVlCi0gCWZpICMgJGxpbmttb2RlID0gcHJvZy4uLgotQEAgLTU3MjgsNyArNjYzOCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgICMgTWFrZSBzdXJlIHRoZSBycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KLSAJICAgICAgY2FzZSAiJHRlbXBfcnBhdGg6IiBpbgotIAkgICAgICAqIiRhYnNkaXI6IiopIDs7Ci0tCSAgICAgICopIHRlbXBfcnBhdGg9IiR0ZW1wX3JwYXRoJGFic2RpcjoiIDs7Ci0rCSAgICAgICopIGZ1bmNfYXBwZW5kIHRlbXBfcnBhdGggIiRhYnNkaXI6IiA7OwotIAkgICAgICBlc2FjCi0gCSAgICBmaQotIAotQEAgLTU3NDAsNyArNjY1MCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAqKQotIAkgICAgICBjYXNlICIkY29tcGlsZV9ycGF0aCAiIGluCi0gCSAgICAgICoiICRhYnNkaXIgIiopIDs7Ci0tCSAgICAgICopIGNvbXBpbGVfcnBhdGg9IiRjb21waWxlX3JwYXRoICRhYnNkaXIiCi0rCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfcnBhdGggIiAkYWJzZGlyIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICAgIDs7Ci0gCSAgICBlc2FjCi1AQCAtNTc0OSw3ICs2NjU5LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICopCi0gCSAgICAgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCi0gCSAgICAgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgICAgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIKLSsJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICAgIDs7Ci0gCSAgICBlc2FjCi1AQCAtNTc3NCwxMiArNjY4NCwxMiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgIGNhc2UgJGhvc3QgaW4KLSAJICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqKQotIAkgICAgICAjIE5vIHBvaW50IGluIHJlbGlua2luZyBETExzIGJlY2F1c2UgcGF0aHMgYXJlIG5vdCBlbmNvZGVkCi0tCSAgICAgIG5vdGluc3RfZGVwbGlicz0iJG5vdGluc3RfZGVwbGlicyAkbGliIgotKwkgICAgICBmdW5jX2FwcGVuZCBub3RpbnN0X2RlcGxpYnMgIiAkbGliIgotIAkgICAgICBuZWVkX3JlbGluaz1ubwotIAkgICAgOzsKLSAJICAqKQotIAkgICAgaWYgdGVzdCAiJGluc3RhbGxlZCIgPSBubzsgdGhlbgotLQkgICAgICBub3RpbnN0X2RlcGxpYnM9IiRub3RpbnN0X2RlcGxpYnMgJGxpYiIKLSsJICAgICAgZnVuY19hcHBlbmQgbm90aW5zdF9kZXBsaWJzICIgJGxpYiIKLSAJICAgICAgbmVlZF9yZWxpbms9eWVzCi0gCSAgICBmaQotIAkgICAgOzsKLUBAIC01ODE0LDcgKzY3MjQsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgKikKLSAJICAgICAgY2FzZSAiJGNvbXBpbGVfcnBhdGggIiBpbgotIAkgICAgICAqIiAkYWJzZGlyICIqKSA7OwotLQkgICAgICAqKSBjb21waWxlX3JwYXRoPSIkY29tcGlsZV9ycGF0aCAkYWJzZGlyIgotKwkgICAgICAqKSBmdW5jX2FwcGVuZCBjb21waWxlX3JwYXRoICIgJGFic2RpciIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgICA7OwotIAkgICAgZXNhYwotQEAgLTU4MjMsNyArNjczMyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAqKQotIAkgICAgICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgotIAkgICAgICAqIiAkbGliZGlyICIqKSA7OwotLQkgICAgICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiCi0rCSAgICAgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgICA7OwotIAkgICAgZXNhYwotQEAgLTU4MzUsNyArNjc0NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBzaGlmdAotIAkgICAgcmVhbG5hbWU9IiQxIgotIAkgICAgc2hpZnQKLS0JICAgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCi0rCSAgICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKLSAJICAgICMgdXNlIGRsbmFtZSBpZiB3ZSBnb3QgaXQuIGl0J3MgcGVyZmVjdGx5IGdvb2QsIG5vPwotIAkgICAgaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KLSAJICAgICAgc29uYW1lPSIkZGxuYW1lIgotQEAgLTU4NDgsNyArNjc1OCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCQl2ZXJzdWZmaXg9Ii0kbWFqb3IiCi0gCQk7OwotIAkgICAgICBlc2FjCi0tCSAgICAgIGV2YWwgInNvbmFtZT1cIiRzb25hbWVfc3BlY1wiIgotKwkgICAgICBldmFsIHNvbmFtZT1cIiRzb25hbWVfc3BlY1wiCi0gCSAgICBlbHNlCi0gCSAgICAgIHNvbmFtZT0iJHJlYWxuYW1lIgotIAkgICAgZmkKLUBAIC01ODc3LDcgKzY3ODcsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgbGlua2xpYj0kbmV3bGliCi0gCSAgZmkgIyB0ZXN0IC1uICIkb2xkX2FyY2hpdmVfZnJvbV9leHBzeW1zX2NtZHMiCi0gCi0tCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG1vZGUiICE9IHJlbGluazsgdGhlbgotKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rOyB0aGVuCi0gCSAgICBhZGRfc2hsaWJwYXRoPQotIAkgICAgYWRkX2Rpcj0KLSAJICAgIGFkZD0KLUBAIC01OTMzLDcgKzY4NDMsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkJaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KLSAJCSAgY2FzZSAkbGliZGlyIGluCi0gCQkgICAgW1xcL10qKQotLQkJICAgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKLSsJCSAgICAgIGZ1bmNfYXBwZW5kIGFkZF9kaXIgIiAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgotIAkJICAgICAgOzsKLSAJCSAgZXNhYwotIAkJZmkKLUBAIC01OTU1LDcgKzY4NjUsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgaWYgdGVzdCAtbiAiJGFkZF9zaGxpYnBhdGgiOyB0aGVuCi0gCSAgICAgIGNhc2UgOiRjb21waWxlX3NobGlicGF0aDogaW4KLSAJICAgICAgKiI6JGFkZF9zaGxpYnBhdGg6IiopIDs7Ci0tCSAgICAgICopIGNvbXBpbGVfc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkYWRkX3NobGlicGF0aDoiIDs7Ci0rCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfc2hsaWJwYXRoICIkYWRkX3NobGlicGF0aDoiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0gCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZzsgdGhlbgotQEAgLTU5NjksMTMgKzY4NzksMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJCSB0ZXN0ICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgPSB5ZXM7IHRoZW4KLSAJCWNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCi0gCQkqIjokbGliZGlyOiIqKSA7OwotLQkJKikgZmluYWxpemVfc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoJGxpYmRpcjoiIDs7Ci0rCQkqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9zaGxpYnBhdGggIiRsaWJkaXI6IiA7OwotIAkJZXNhYwotIAkgICAgICBmaQotIAkgICAgZmkKLSAJICBmaQotIAotLQkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgotKwkgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KLSAJICAgIGFkZF9zaGxpYnBhdGg9Ci0gCSAgICBhZGRfZGlyPQotIAkgICAgYWRkPQotQEAgLTU5ODksNyArNjg5OSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgotIAkgICAgICBjYXNlIDokZmluYWxpemVfc2hsaWJwYXRoOiBpbgotIAkgICAgICAqIjokbGliZGlyOiIqKSA7OwotLQkgICAgICAqKSBmaW5hbGl6ZV9zaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgkbGliZGlyOiIgOzsKLSsJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfc2hsaWJwYXRoICIkbGliZGlyOiIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgICBhZGQ9Ii1sJG5hbWUiCi0gCSAgICBlbGlmIHRlc3QgIiRoYXJkY29kZV9hdXRvbWF0aWMiID0geWVzOyB0aGVuCi1AQCAtNjAwMSwxMiArNjkxMSwxMiBAQCBmdW5jX21vZGVfbGluayAoKQotIAkgICAgICBmaQotIAkgICAgZWxzZQotIAkgICAgICAjIFdlIGNhbm5vdCBzZWVtIHRvIGhhcmRjb2RlIGl0LCBndWVzcyB3ZSdsbCBmYWtlIGl0LgotLQkgICAgICBhZGRfZGlyPSItTCRsaWJkaXIiCi0rCSAgICAgIGFkZF9kaXI9Ii1MJGx0X3N5c3Jvb3QkbGliZGlyIgotIAkgICAgICAjIFRyeSBsb29raW5nIGZpcnN0IGluIHRoZSBsb2NhdGlvbiB3ZSdyZSBiZWluZyBpbnN0YWxsZWQgdG8uCi0gCSAgICAgIGlmIHRlc3QgLW4gIiRpbnN0X3ByZWZpeF9kaXIiOyB0aGVuCi0gCQljYXNlICRsaWJkaXIgaW4KLSAJCSAgW1xcL10qKQotLQkJICAgIGFkZF9kaXI9IiRhZGRfZGlyIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCi0rCQkgICAgZnVuY19hcHBlbmQgYWRkX2RpciAiIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCi0gCQkgICAgOzsKLSAJCWVzYWMKLSAJICAgICAgZmkKLUBAIC02MDgzLDI3ICs2OTkzLDMzIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgICAgICAgdGVtcF94cnBhdGg9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotIAkJICAgY2FzZSAiICR4cnBhdGggIiBpbgotIAkJICAgKiIgJHRlbXBfeHJwYXRoICIqKSA7OwotLQkJICAgKikgeHJwYXRoPSIkeHJwYXRoICR0ZW1wX3hycGF0aCI7OwotKwkJICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJHRlbXBfeHJwYXRoIjs7Ci0gCQkgICBlc2FjOzsKLS0JICAgICAgKikgdGVtcF9kZXBsaWJzPSIkdGVtcF9kZXBsaWJzICRsaWJkaXIiOzsKLSsJICAgICAgKikgZnVuY19hcHBlbmQgdGVtcF9kZXBsaWJzICIgJGxpYmRpciI7OwotIAkgICAgICBlc2FjCi0gCSAgICBkb25lCi0gCSAgICBkZXBlbmRlbmN5X2xpYnM9IiR0ZW1wX2RlcGxpYnMiCi0gCSAgZmkKLSAKLS0JICBuZXdsaWJfc2VhcmNoX3BhdGg9IiRuZXdsaWJfc2VhcmNoX3BhdGggJGFic2RpciIKLSsJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkYWJzZGlyIgotIAkgICMgTGluayBhZ2FpbnN0IHRoaXMgbGlicmFyeQotIAkgIHRlc3QgIiRsaW5rX3N0YXRpYyIgPSBubyAmJiBuZXdkZXBlbmRlbmN5X2xpYnM9IiRhYnNfbGFkaXIvJGxhbmFtZSAkbmV3ZGVwZW5kZW5jeV9saWJzIgotIAkgICMgLi4uIGFuZCBpdHMgZGVwZW5kZW5jeV9saWJzCi0gCSAgdG1wX2xpYnM9Ci0gCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbwotIAkgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCi0tCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgotKwkgICAgY2FzZSAkZGVwbGliIGluCi0rICAgICAgICAgICAgICAtTCopIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCi0rICAgICAgICAgICAgICAgICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0Ijs7Ci0rICAgICAgICAgICAgICAqKSBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIgOzsKLSsgICAgICAgICAgICBlc2FjCi0rCSAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgotIAkgICAgICBjYXNlICIkdG1wX2xpYnMgIiBpbgotLQkgICAgICAqIiAkZGVwbGliICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRkZXBsaWIiIDs7Ci0rCSAgICAgICoiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQgIiopCi0rICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIgOzsKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLS0JICAgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIKLSsJICAgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKLSAJICBkb25lCi0gCi0gCSAgaWYgdGVzdCAiJGxpbmtfYWxsX2RlcGxpYnMiICE9IG5vOyB0aGVuCi1AQCAtNjExMyw4ICs3MDI5LDEwIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICAgIGNhc2UgJGRlcGxpYiBpbgotIAkgICAgICAtTCopIHBhdGg9IiRkZXBsaWIiIDs7Ci0gCSAgICAgICoubGEpCi0rCSAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCi0rCSAgICAgICAgZGVwbGliPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKLSAJICAgICAgICBmdW5jX2Rpcm5hbWUgIiRkZXBsaWIiICIiICIuIgotLQkJZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLSsJCWRpcj0kZnVuY19kaXJuYW1lX3Jlc3VsdAotIAkJIyBXZSBuZWVkIGFuIGFic29sdXRlIHBhdGguCi0gCQljYXNlICRkaXIgaW4KLSAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzZGlyPSIkZGlyIiA7OwotQEAgLTYxMzAsNyArNzA0OCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCQljYXNlICRob3N0IGluCi0gCQkqLSotZGFyd2luKikKLSAJCSAgZGVwZGVwbD0KLS0JCSAgZGVwbGlicmFyeV9uYW1lcz1gJHtTRUR9IC1uIC1lICdzL15saWJyYXJ5X25hbWVzPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKLSsJCSAgZXZhbCBkZXBsaWJyYXJ5X25hbWVzPWAke1NFRH0gLW4gLWUgJ3MvXmxpYnJhcnlfbmFtZXM9XCguKlwpJC9cMS9wJyAkZGVwbGliYAotIAkJICBpZiB0ZXN0IC1uICIkZGVwbGlicmFyeV9uYW1lcyIgOyB0aGVuCi0gCQkgICAgZm9yIHRtcCBpbiAkZGVwbGlicmFyeV9uYW1lcyA7IGRvCi0gCQkgICAgICBkZXBkZXBsPSR0bXAKLUBAIC02MTQxLDggKzcwNTksOCBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkZGFyd2luX2luc3RhbGxfbmFtZSI7IHRoZW4KLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGRhcndpbl9pbnN0YWxsX25hbWU9YCR7T1RPT0w2NH0gLUwgJGRlcGRlcGwgIHwgYXdrICd7aWYgKE5SID09IDIpIHtwcmludCAkMTtleGl0fX0nYAotICAgICAgICAgICAgICAgICAgICAgICBmaQotLQkJICAgICAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAke3dsfS1keWxpYl9maWxlICR7d2x9JHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgotLQkJICAgICAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzIC1keWxpYl9maWxlICR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKLSsJCSAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHt3bH0tZHlsaWJfZmlsZSAke3dsfSR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKLSsJCSAgICAgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiIC1keWxpYl9maWxlICR7ZGFyd2luX2luc3RhbGxfbmFtZX06JHtkZXBkZXBsfSIKLSAJCSAgICAgIHBhdGg9Ci0gCQkgICAgZmkKLSAJCSAgZmkKLUBAIC02MTUyLDcgKzcwNzAsNyBAQCBmdW5jX21vZGVfbGluayAoKQotIAkJICA7OwotIAkJZXNhYwotIAkJZWxzZQotLQkJICBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKLSsJCSAgZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKLSAJCSAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAotIAkJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotIAkJICB0ZXN0ICIkYWJzZGlyIiAhPSAiJGxpYmRpciIgJiYgXAotQEAgLTYxOTIsNyArNzExMCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgZm9yIGRpciBpbiAkbmV3bGliX3NlYXJjaF9wYXRoOyBkbwotIAkgICAgY2FzZSAiJGxpYl9zZWFyY2hfcGF0aCAiIGluCi0gCSAgICAqIiAkZGlyICIqKSA7OwotLQkgICAgKikgbGliX3NlYXJjaF9wYXRoPSIkbGliX3NlYXJjaF9wYXRoICRkaXIiIDs7Ci0rCSAgICAqKSBmdW5jX2FwcGVuZCBsaWJfc2VhcmNoX3BhdGggIiAkZGlyIiA7OwotIAkgICAgZXNhYwotIAkgIGRvbmUKLSAJICBuZXdsaWJfc2VhcmNoX3BhdGg9Ci1AQCAtNjIwNSw3ICs3MTIzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJZmkKLSAJZm9yIHZhciBpbiAkdmFycyBkZXBlbmRlbmN5X2xpYnM7IGRvCi0gCSAgIyBBZGQgbGlicmFyaWVzIHRvICR2YXIgaW4gcmV2ZXJzZSBvcmRlcgotLQkgIGV2YWwgdG1wX2xpYnM9XCQkdmFyCi0rCSAgZXZhbCB0bXBfbGlicz1cIlwkJHZhclwiCi0gCSAgbmV3X2xpYnM9Ci0gCSAgZm9yIGRlcGxpYiBpbiAkdG1wX2xpYnM7IGRvCi0gCSAgICAjIEZJWE1FOiBQZWRhbnRpY2FsbHksIHRoaXMgaXMgdGhlIHJpZ2h0IHRoaW5nIHRvIGRvLCBzbwotQEAgLTYyNTAsMTMgKzcxNjgsMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIC1MKikKLSAJICAgICAgY2FzZSAiICR0bXBfbGlicyAiIGluCi0gCSAgICAgICoiICRkZXBsaWIgIiopIDs7Ci0tCSAgICAgICopIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIgOzsKLSsJICAgICAgKikgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIiA7OwotIAkgICAgICBlc2FjCi0gCSAgICAgIDs7Ci0tCSAgICAqKSB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiIDs7Ci0rCSAgICAqKSBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiIDs7Ci0gCSAgICBlc2FjCi0gCSAgZG9uZQotLQkgIGV2YWwgJHZhcj1cJHRtcF9saWJzCi0rCSAgZXZhbCAkdmFyPVwiJHRtcF9saWJzXCIKLSAJZG9uZSAjIGZvciB2YXIKLSAgICAgICBmaQotICAgICAgICMgTGFzdCBzdGVwOiByZW1vdmUgcnVudGltZSBsaWJzIGZyb20gZGVwZW5kZW5jeV9saWJzCi1AQCAtNjI2OSw3ICs3MTg3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICA7OwotIAllc2FjCi0gCWlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KLS0JICB0bXBfbGlicz0iJHRtcF9saWJzICRpIgotKwkgIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGkiCi0gCWZpCi0gICAgICAgZG9uZQotICAgICAgIGRlcGVuZGVuY3lfbGlicz0kdG1wX2xpYnMKLUBAIC02MzEwLDcgKzcyMjgsNyBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgICMgTm93IHNldCB0aGUgdmFyaWFibGVzIGZvciBidWlsZGluZyBvbGQgbGlicmFyaWVzLgotICAgICAgIGJ1aWxkX2xpYnRvb2xfbGlicz1ubwotICAgICAgIG9sZGxpYnM9IiRvdXRwdXQiCi0tICAgICAgb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMiCi0rICAgICAgZnVuY19hcHBlbmQgb2JqcyAiJG9sZF9kZXBsaWJzIgotICAgICAgIDs7Ci0gCi0gICAgIGxpYikKLUBAIC02MzE5LDggKzcyMzcsOCBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgIGxpYiopCi0gCWZ1bmNfc3RyaXBuYW1lICdsaWInICcubGEnICIkb3V0cHV0bmFtZSIKLSAJbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0tCWV2YWwgInNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIiIKLS0JZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKLSsJZXZhbCBzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIKLSsJZXZhbCBsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiCi0gCTs7Ci0gICAgICAgKikKLSAJdGVzdCAiJG1vZHVsZSIgPSBubyAmJiBcCi1AQCAtNjMzMCw4ICs3MjQ4LDggQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAjIEFkZCB0aGUgImxpYiIgcHJlZml4IGZvciBtb2R1bGVzIGlmIHJlcXVpcmVkCi0gCSAgZnVuY19zdHJpcG5hbWUgJycgJy5sYScgIiRvdXRwdXRuYW1lIgotIAkgIG5hbWU9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAotLQkgIGV2YWwgInNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIiIKLS0JICBldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgotKwkgIGV2YWwgc2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiCi0rCSAgZXZhbCBsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiCi0gCWVsc2UKLSAJICBmdW5jX3N0cmlwbmFtZSAnJyAnLmxhJyAiJG91dHB1dG5hbWUiCi0gCSAgbGlibmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci1AQCAtNjM0Niw3ICs3MjY0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICBlY2hvCi0gCSAgJEVDSE8gIioqKiBXYXJuaW5nOiBMaW5raW5nIHRoZSBzaGFyZWQgbGlicmFyeSAkb3V0cHV0IGFnYWluc3QgdGhlIG5vbi1saWJ0b29sIgotIAkgICRFQ0hPICIqKiogb2JqZWN0cyAkb2JqcyBpcyBub3QgcG9ydGFibGUhIgotLQkgIGxpYm9ianM9IiRsaWJvYmpzICRvYmpzIgotKwkgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkb2JqcyIKLSAJZmkKLSAgICAgICBmaQotIAotQEAgLTY1NDQsNyArNzQ2Miw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgZG9uZQotIAotIAkgICMgTWFrZSBleGVjdXRhYmxlcyBkZXBlbmQgb24gb3VyIGN1cnJlbnQgdmVyc2lvbi4KLS0JICB2ZXJzdHJpbmc9IiR2ZXJzdHJpbmc6JHtjdXJyZW50fS4wIgotKwkgIGZ1bmNfYXBwZW5kIHZlcnN0cmluZyAiOiR7Y3VycmVudH0uMCIKLSAJICA7OwotIAotIAlxbngpCi1AQCAtNjYxMiwxMCArNzUzMCwxMCBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgIGZpCi0gCi0gICAgICAgZnVuY19nZW5lcmF0ZV9kbHN5bXMgIiRsaWJuYW1lIiAiJGxpYm5hbWUiICJ5ZXMiCi0tICAgICAgbGlib2Jqcz0iJGxpYm9ianMgJHN5bWZpbGVvYmoiCi0rICAgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRzeW1maWxlb2JqIgotICAgICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9Ci0gCi0tICAgICAgaWYgdGVzdCAiJG1vZGUiICE9IHJlbGluazsgdGhlbgotKyAgICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rOyB0aGVuCi0gCSMgUmVtb3ZlIG91ciBvdXRwdXRzLCBidXQgZG9uJ3QgcmVtb3ZlIG9iamVjdCBmaWxlcyBzaW5jZSB0aGV5Ci0gCSMgbWF5IGhhdmUgYmVlbiBjcmVhdGVkIHdoZW4gY29tcGlsaW5nIFBJQyBvYmplY3RzLgotIAlyZW1vdmVsaXN0PQotQEAgLTY2MzEsNyArNzU0OSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCQkgICBjb250aW51ZQotIAkJIGZpCi0gCSAgICAgICBmaQotLQkgICAgICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJHAiCi0rCSAgICAgICBmdW5jX2FwcGVuZCByZW1vdmVsaXN0ICIgJHAiCi0gCSAgICAgICA7OwotIAkgICAgKikgOzsKLSAJICBlc2FjCi1AQCAtNjY0Miw3ICs3NTYwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAKLSAgICAgICAjIE5vdyBzZXQgdGhlIHZhcmlhYmxlcyBmb3IgYnVpbGRpbmcgb2xkIGxpYnJhcmllcy4KLSAgICAgICBpZiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiID0geWVzICYmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IGNvbnZlbmllbmNlIDsgdGhlbgotLQlvbGRsaWJzPSIkb2xkbGlicyAkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgotKwlmdW5jX2FwcGVuZCBvbGRsaWJzICIgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuJGxpYmV4dCIKLSAKLSAJIyBUcmFuc2Zvcm0gLmxvIGZpbGVzIHRvIC5vIGZpbGVzLgotIAlvbGRvYmpzPSIkb2JqcyAiYCRFQ0hPICIkbGlib2JqcyIgfCAkU1AyTkwgfCAkU0VEICIvXC4ke2xpYmV4dH0kL2Q7ICRsbzJvIiB8ICROTDJTUGAKLUBAIC02NjU5LDEwICs3NTc3LDExIEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSMgSWYgdGhlIHVzZXIgc3BlY2lmaWVkIGFueSBycGF0aCBmbGFncywgdGhlbiBhZGQgdGhlbS4KLSAJdGVtcF94cnBhdGg9Ci0gCWZvciBsaWJkaXIgaW4gJHhycGF0aDsgZG8KLS0JICB0ZW1wX3hycGF0aD0iJHRlbXBfeHJwYXRoIC1SJGxpYmRpciIKLSsJICBmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKLSsJICBmdW5jX2FwcGVuZCB0ZW1wX3hycGF0aCAiIC1SJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKLSAJICBjYXNlICIkZmluYWxpemVfcnBhdGggIiBpbgotIAkgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIiA7OwotKwkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3JwYXRoICIgJGxpYmRpciIgOzsKLSAJICBlc2FjCi0gCWRvbmUKLSAJaWYgdGVzdCAiJGhhcmRjb2RlX2ludG9fbGlicyIgIT0geWVzIHx8IHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXM7IHRoZW4KLUBAIC02Njc2LDcgKzc1OTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgIGZvciBsaWIgaW4gJG9sZF9kbGZpbGVzOyBkbwotIAljYXNlICIgJGRscHJlZmlsZXMgJGRsZmlsZXMgIiBpbgotIAkqIiAkbGliICIqKSA7OwotLQkqKSBkbGZpbGVzPSIkZGxmaWxlcyAkbGliIiA7OwotKwkqKSBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGxpYiIgOzsKLSAJZXNhYwotICAgICAgIGRvbmUKLSAKLUBAIC02Njg2LDcgKzc2MDUsNyBAQCBmdW5jX21vZGVfbGluayAoKQotICAgICAgIGZvciBsaWIgaW4gJG9sZF9kbHByZWZpbGVzOyBkbwotIAljYXNlICIkZGxwcmVmaWxlcyAiIGluCi0gCSoiICRsaWIgIiopIDs7Ci0tCSopIGRscHJlZmlsZXM9IiRkbHByZWZpbGVzICRsaWIiIDs7Ci0rCSopIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkbGliIiA7OwotIAllc2FjCi0gICAgICAgZG9uZQotIAotQEAgLTY2OTgsNyArNzYxNyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgICA7OwotIAkgICotKi1yaGFwc29keSogfCAqLSotZGFyd2luMS5bMDEyXSkKLSAJICAgICMgUmhhcHNvZHkgQyBsaWJyYXJ5IGlzIGluIHRoZSBTeXN0ZW0gZnJhbWV3b3JrCi0tCSAgICBkZXBsaWJzPSIkZGVwbGlicyBTeXN0ZW0ubHRmcmFtZXdvcmsiCi0rCSAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgU3lzdGVtLmx0ZnJhbWV3b3JrIgotIAkgICAgOzsKLSAJICAqLSotbmV0YnNkKikKLSAJICAgICMgRG9uJ3QgbGluayB3aXRoIGxpYmMgdW50aWwgdGhlIGEub3V0IGxkLnNvIGlzIGZpeGVkLgotQEAgLTY3MTUsNyArNzYzNCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCi0gCSAgKikKLSAJICAgICMgQWRkIGxpYmMgdG8gZGVwbGlicyBvbiBhbGwgb3RoZXIgc3lzdGVtcyBpZiBuZWNlc3NhcnkuCi0gCSAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9uZWVkX2xjIiA9ICJ5ZXMiOyB0aGVuCi0tCSAgICAgIGRlcGxpYnM9IiRkZXBsaWJzIC1sYyIKLSsJICAgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1sYyIKLSAJICAgIGZpCi0gCSAgICA7OwotIAkgIGVzYWMKLUBAIC02NzY0LDE4ICs3NjgzLDE4IEBAIEVPRgotIAkJaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgotIAkJICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KLSAJCSAgKiIgJGkgIiopCi0tCQkgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCi0rCQkgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgotIAkJICAgIGk9IiIKLSAJCSAgICA7OwotIAkJICBlc2FjCi0gCQlmaQotIAkJaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgotLQkJICBldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgotLQkJICBldmFsICJkZXBsaWJfbWF0Y2hlcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIiIKLSsJCSAgbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCi0rCQkgIGRlcGxpYl9tYXRjaGVzPWBldmFsICJcXCRFQ0hPIFwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiImAKLSAJCSAgc2V0IGR1bW15ICRkZXBsaWJfbWF0Y2hlczsgc2hpZnQKLSAJCSAgZGVwbGliX21hdGNoPSQxCi0gCQkgIGlmIHRlc3QgYGV4cHIgIiRsZGRfb3V0cHV0IiA6ICIuKiRkZXBsaWJfbWF0Y2giYCAtbmUgMCA7IHRoZW4KLS0JCSAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKLSsJCSAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCi0gCQkgIGVsc2UKLSAJCSAgICBkcm9wcGVkZGVwcz15ZXMKLSAJCSAgICBlY2hvCi1AQCAtNjc4OSw3ICs3NzA4LDcgQEAgRU9GCi0gCQlmaQotIAkJOzsKLSAJICAgICAgKikKLS0JCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgotKwkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgotIAkJOzsKLSAJICAgICAgZXNhYwotIAkgICAgZG9uZQotQEAgLTY4MDcsMTggKzc3MjYsMTggQEAgRU9GCi0gCQkgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KLSAJCSAgICBjYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KLSAJCSAgICAqIiAkaSAiKikKLS0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgotKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgotIAkJICAgICAgaT0iIgotIAkJICAgICAgOzsKLSAJCSAgICBlc2FjCi0gCQkgIGZpCi0gCQkgIGlmIHRlc3QgLW4gIiRpIiA7IHRoZW4KLS0JCSAgICBldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgotLQkJICAgIGV2YWwgImRlcGxpYl9tYXRjaGVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiIgotKwkJICAgIGxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAotKwkJICAgIGRlcGxpYl9tYXRjaGVzPWBldmFsICJcXCRFQ0hPIFwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiImAKLSAJCSAgICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzOyBzaGlmdAotIAkJICAgIGRlcGxpYl9tYXRjaD0kMQotIAkJICAgIGlmIHRlc3QgYGV4cHIgIiRsZGRfb3V0cHV0IiA6ICIuKiRkZXBsaWJfbWF0Y2giYCAtbmUgMCA7IHRoZW4KLS0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgotKwkJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgotIAkJICAgIGVsc2UKLSAJCSAgICAgIGRyb3BwZWRkZXBzPXllcwotIAkJICAgICAgZWNobwotQEAgLTY4NDAsNyArNzc1OSw3IEBAIEVPRgotIAkJZmkKLSAJCTs7Ci0gCSAgICAgICopCi0tCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKLSsJCWZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKLSAJCTs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGRvbmUKLUBAIC02ODU3LDE1ICs3Nzc2LDI3IEBAIEVPRgotIAkgICAgICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCi0gCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KLSAJCSoiICRhX2RlcGxpYiAiKikKLS0JCSAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgotKwkJICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgotIAkJICBhX2RlcGxpYj0iIgotIAkJICA7OwotIAkJZXNhYwotIAkgICAgICBmaQotIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgotLQkJZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKLSsJCWxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAotKwkJaWYgdGVzdCAtbiAiJGZpbGVfbWFnaWNfZ2xvYiI7IHRoZW4KLSsJCSAgbGlibmFtZWdsb2I9YGZ1bmNfZWNob19hbGwgIiRsaWJuYW1lIiB8ICRTRUQgLWUgJGZpbGVfbWFnaWNfZ2xvYmAKLSsJCWVsc2UKLSsJCSAgbGlibmFtZWdsb2I9JGxpYm5hbWUKLSsJCWZpCi0rCQl0ZXN0ICIkd2FudF9ub2Nhc2VnbG9iIiA9IHllcyAmJiBub2Nhc2VnbG9iPWBzaG9wdCAtcCBub2Nhc2VnbG9iYAotIAkJZm9yIGkgaW4gJGxpYl9zZWFyY2hfcGF0aCAkc3lzX2xpYl9zZWFyY2hfcGF0aCAkc2hsaWJfc2VhcmNoX3BhdGg7IGRvCi0tCQkgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZVsuLV0qIDI+L2Rldi9udWxsYAotKwkJICBpZiB0ZXN0ICIkd2FudF9ub2Nhc2VnbG9iIiA9IHllczsgdGhlbgotKwkJICAgIHNob3B0IC1zIG5vY2FzZWdsb2IKLSsJCSAgICBwb3RlbnRpYWxfbGlicz1gbHMgJGkvJGxpYm5hbWVnbG9iWy4tXSogMj4vZGV2L251bGxgCi0rCQkgICAgJG5vY2FzZWdsb2IKLSsJCSAgZWxzZQotKwkJICAgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZWdsb2JbLi1dKiAyPi9kZXYvbnVsbGAKLSsJCSAgZmkKLSAJCSAgZm9yIHBvdGVudF9saWIgaW4gJHBvdGVudGlhbF9saWJzOyBkbwotIAkJICAgICAgIyBGb2xsb3cgc29mdCBsaW5rcy4KLSAJCSAgICAgIGlmIGxzIC1sTGQgIiRwb3RlbnRfbGliIiAyPi9kZXYvbnVsbCB8Ci1AQCAtNjg4NSwxMCArNzgxNiwxMCBAQCBFT0YKLSAJCQkqKSBwb3RsaWI9YCRFQ0hPICIkcG90bGliIiB8ICRTRUQgJ3MsW14vXSokLCwnYCIkcG90bGlibGluayI7OwotIAkJCWVzYWMKLSAJCSAgICAgIGRvbmUKLS0JCSAgICAgIGlmIGV2YWwgIiRmaWxlX21hZ2ljX2NtZCBcIlwkcG90bGliXCIiIDI+L2Rldi9udWxsIHwKLSsJCSAgICAgIGlmIGV2YWwgJGZpbGVfbWFnaWNfY21kIFwiXCRwb3RsaWJcIiAyPi9kZXYvbnVsbCB8Ci0gCQkJICRTRUQgLWUgMTBxIHwKLSAJCQkgJEVHUkVQICIkZmlsZV9tYWdpY19yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KLS0JCQluZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCi0rCQkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKLSAJCQlhX2RlcGxpYj0iIgotIAkJCWJyZWFrIDIKLSAJCSAgICAgIGZpCi1AQCAtNjkxMyw3ICs3ODQ0LDcgQEAgRU9GCi0gCSAgICAgIDs7Ci0gCSAgICAqKQotIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgotLQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCi0gCSAgICAgIDs7Ci0gCSAgICBlc2FjCi0gCSAgZG9uZSAjIEdvbmUgdGhyb3VnaCBhbGwgZGVwbGlicy4KLUBAIC02OTI5LDIwICs3ODYwLDIwIEBAIEVPRgotIAkgICAgICBpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCi0gCQljYXNlICIgJHByZWRlcHMgJHBvc3RkZXBzICIgaW4KLSAJCSoiICRhX2RlcGxpYiAiKikKLS0JCSAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgotKwkJICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgotIAkJICBhX2RlcGxpYj0iIgotIAkJICA7OwotIAkJZXNhYwotIAkgICAgICBmaQotIAkgICAgICBpZiB0ZXN0IC1uICIkYV9kZXBsaWIiIDsgdGhlbgotLQkJZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKLSsJCWxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAotIAkJZm9yIGkgaW4gJGxpYl9zZWFyY2hfcGF0aCAkc3lzX2xpYl9zZWFyY2hfcGF0aCAkc2hsaWJfc2VhcmNoX3BhdGg7IGRvCi0gCQkgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZVsuLV0qIDI+L2Rldi9udWxsYAotIAkJICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCi0gCQkgICAgcG90bGliPSIkcG90ZW50X2xpYiIgIyBzZWUgc3ltbGluay1jaGVjayBhYm92ZSBpbiBmaWxlX21hZ2ljIHRlc3QKLSAJCSAgICBpZiBldmFsICJcJEVDSE8gXCIkcG90ZW50X2xpYlwiIiAyPi9kZXYvbnVsbCB8ICRTRUQgMTBxIHwgXAotIAkJICAgICAgICRFR1JFUCAiJG1hdGNoX3BhdHRlcm5fcmVnZXgiID4gL2Rldi9udWxsOyB0aGVuCi0tCQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCi0rCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgotIAkJICAgICAgYV9kZXBsaWI9IiIKLSAJCSAgICAgIGJyZWFrIDIKLSAJCSAgICBmaQotQEAgLTY5NjcsNyArNzg5OCw3IEBAIEVPRgotIAkgICAgICA7OwotIAkgICAgKikKLSAJICAgICAgIyBBZGQgYSAtTCBhcmd1bWVudC4KLS0JICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGFfZGVwbGliIgotKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgotIAkgICAgICA7OwotIAkgICAgZXNhYwotIAkgIGRvbmUgIyBHb25lIHRocm91Z2ggYWxsIGRlcGxpYnMuCi1AQCAtNzA3MSw3ICs4MDAyLDcgQEAgRU9GCi0gCSopCi0gCSAgY2FzZSAiICRkZXBsaWJzICIgaW4KLSAJICAqIiAtTCRwYXRoLyRvYmpkaXIgIiopCi0tCSAgICBuZXdfbGlicz0iJG5ld19saWJzIC1MJHBhdGgvJG9iamRpciIgOzsKLSsJICAgIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgLUwkcGF0aC8kb2JqZGlyIiA7OwotIAkgIGVzYWMKLSAJICA7OwotIAllc2FjCi1AQCAtNzA4MSwxMCArODAxMiwxMCBAQCBFT0YKLSAJLUwqKQotIAkgIGNhc2UgIiAkbmV3X2xpYnMgIiBpbgotIAkgICoiICRkZXBsaWIgIiopIDs7Ci0tCSAgKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OwotKwkgICopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKLSAJICBlc2FjCi0gCSAgOzsKLS0JKikgbmV3X2xpYnM9IiRuZXdfbGlicyAkZGVwbGliIiA7OwotKwkqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7Ci0gCWVzYWMKLSAgICAgICBkb25lCi0gICAgICAgZGVwbGlicz0iJG5ld19saWJzIgotQEAgLTcxMDEsMTAgKzgwMzIsMTIgQEAgRU9GCi0gCSAgaGFyZGNvZGVfbGliZGlycz0KLSAJICBkZXBfcnBhdGg9Ci0gCSAgcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCIKLS0JICB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKLSsJICB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBycGF0aD0iJGNvbXBpbGVfcnBhdGgkcnBhdGgiCi0gCSAgZm9yIGxpYmRpciBpbiAkcnBhdGg7IGRvCi0gCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KLSAJICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCi0rCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKLSsJCWxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0Ci0gCQlpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KLSAJCSAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKLSAJCWVsc2UKLUBAIC03MTEzLDE4ICs4MDQ2LDE4IEBAIEVPRgotIAkJICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCi0gCQkgICAgOzsKLSAJCSAgKikKLS0JCSAgICBoYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKLSsJCSAgICBmdW5jX2FwcGVuZCBoYXJkY29kZV9saWJkaXJzICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCi0gCQkgICAgOzsKLSAJCSAgZXNhYwotIAkJZmkKLSAJICAgICAgZWxzZQotLQkJZXZhbCAiZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCi0tCQlkZXBfcnBhdGg9IiRkZXBfcnBhdGggJGZsYWciCi0rCQlldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0rCQlmdW5jX2FwcGVuZCBkZXBfcnBhdGggIiAkZmxhZyIKLSAJICAgICAgZmkKLSAJICAgIGVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotIAkgICAgICBjYXNlICIkcGVybV9ycGF0aCAiIGluCi0gCSAgICAgICoiICRsaWJkaXIgIiopIDs7Ci0tCSAgICAgICopIHBlcm1fcnBhdGg9IiRwZXJtX3JwYXRoICRsaWJkaXIiIDs7Ci0rCSAgICAgICopIGZ1bmNfYXBwZWQgcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0gCSAgZG9uZQotQEAgLTcxMzMsNDAgKzgwNjYsMzggQEAgRU9GCi0gCSAgICAgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCi0gCSAgICBsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgotIAkgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQiOyB0aGVuCi0tCSAgICAgIGV2YWwgImRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkXCIiCi0rCSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRcIgotIAkgICAgZWxzZQotLQkgICAgICBldmFsICJkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgotKwkgICAgICBldmFsIGRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSAJICAgIGZpCi0gCSAgZmkKLSAJICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiICYmIHRlc3QgLW4gIiRwZXJtX3JwYXRoIjsgdGhlbgotIAkgICAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KLSAJICAgIHJwYXRoPQotIAkgICAgZm9yIGRpciBpbiAkcGVybV9ycGF0aDsgZG8KLS0JICAgICAgcnBhdGg9IiRycGF0aCRkaXI6IgotKwkgICAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCi0gCSAgICBkb25lCi0tCSAgICBldmFsICRydW5wYXRoX3Zhcj1cJHJwYXRoXCQkcnVucGF0aF92YXIKLS0JICAgIGV4cG9ydCAkcnVucGF0aF92YXIKLSsJICAgIGV2YWwgIiRydW5wYXRoX3Zhcj0nJHJwYXRoXCQkcnVucGF0aF92YXInOyBleHBvcnQgJHJ1bnBhdGhfdmFyIgotIAkgIGZpCi0gCSAgdGVzdCAtbiAiJGRlcF9ycGF0aCIgJiYgZGVwbGlicz0iJGRlcF9ycGF0aCAkZGVwbGlicyIKLSAJZmkKLSAKLSAJc2hsaWJwYXRoPSIkZmluYWxpemVfc2hsaWJwYXRoIgotLQl0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rICYmIHNobGlicGF0aD0iJGNvbXBpbGVfc2hsaWJwYXRoJHNobGlicGF0aCIKLSsJdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkc2hsaWJwYXRoIgotIAlpZiB0ZXN0IC1uICIkc2hsaWJwYXRoIjsgdGhlbgotLQkgIGV2YWwgJHNobGlicGF0aF92YXI9XCRzaGxpYnBhdGhcJCRzaGxpYnBhdGhfdmFyCi0tCSAgZXhwb3J0ICRzaGxpYnBhdGhfdmFyCi0rCSAgZXZhbCAiJHNobGlicGF0aF92YXI9JyRzaGxpYnBhdGhcJCRzaGxpYnBhdGhfdmFyJzsgZXhwb3J0ICRzaGxpYnBhdGhfdmFyIgotIAlmaQotIAotIAkjIEdldCB0aGUgcmVhbCBhbmQgbGluayBuYW1lcyBvZiB0aGUgbGlicmFyeS4KLS0JZXZhbCAic2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiIgotLQlldmFsICJsaWJyYXJ5X25hbWVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiIgotKwlldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgotKwlldmFsIGxpYnJhcnlfbmFtZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIKLSAJc2V0IGR1bW15ICRsaWJyYXJ5X25hbWVzCi0gCXNoaWZ0Ci0gCXJlYWxuYW1lPSIkMSIKLSAJc2hpZnQKLSAKLSAJaWYgdGVzdCAtbiAiJHNvbmFtZV9zcGVjIjsgdGhlbgotLQkgIGV2YWwgInNvbmFtZT1cIiRzb25hbWVfc3BlY1wiIgotKwkgIGV2YWwgc29uYW1lPVwiJHNvbmFtZV9zcGVjXCIKLSAJZWxzZQotIAkgIHNvbmFtZT0iJHJlYWxuYW1lIgotIAlmaQotQEAgLTcxNzgsNyArODEwOSw3IEBAIEVPRgotIAlsaW5rbmFtZXM9Ci0gCWZvciBsaW5rCi0gCWRvCi0tCSAgbGlua25hbWVzPSIkbGlua25hbWVzICRsaW5rIgotKwkgIGZ1bmNfYXBwZW5kIGxpbmtuYW1lcyAiICRsaW5rIgotIAlkb25lCi0gCi0gCSMgVXNlIHN0YW5kYXJkIG9iamVjdHMgaWYgdGhleSBhcmUgcGljCi1AQCAtNzE4OSw3ICs4MTIwLDcgQEAgRU9GCi0gCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KLSAJICAkb3B0X2RyeV9ydW4gfHwgY3AgIiRleHBvcnRfc3ltYm9scyIgIiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnVleHAiCi0gCSAgZXhwb3J0X3N5bWJvbHM9IiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnVleHAiCi0tCSAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMiCi0rCSAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMiCi0gCWZpCi0gCi0gCW9yaWdfZXhwb3J0X3N5bWJvbHM9Ci1AQCAtNzIyMCwxMyArODE1MSw0NSBAQCBFT0YKLSAJICAgICRvcHRfZHJ5X3J1biB8fCAkUk0gJGV4cG9ydF9zeW1ib2xzCi0gCSAgICBjbWRzPSRleHBvcnRfc3ltYm9sc19jbWRzCi0gCSAgICBzYXZlX2lmcz0iJElGUyI7IElGUz0nficKLS0JICAgIGZvciBjbWQgaW4gJGNtZHM7IGRvCi0rCSAgICBmb3IgY21kMSBpbiAkY21kczsgZG8KLSAJICAgICAgSUZTPSIkc2F2ZV9pZnMiCi0tCSAgICAgIGV2YWwgImNtZD1cIiRjbWRcIiIKLS0JICAgICAgZnVuY19sZW4gIiAkY21kIgotLQkgICAgICBsZW49JGZ1bmNfbGVuX3Jlc3VsdAotLQkgICAgICBpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KLSsJICAgICAgIyBUYWtlIHRoZSBub3JtYWwgYnJhbmNoIGlmIHRoZSBubV9maWxlX2xpc3Rfc3BlYyBicmFuY2gKLSsJICAgICAgIyBkb2Vzbid0IHdvcmsgb3IgaWYgdG9vbCBjb252ZXJzaW9uIGlzIG5vdCBuZWVkZWQuCi0rCSAgICAgIGNhc2UgJG5tX2ZpbGVfbGlzdF9zcGVjfiR0b190b29sX2ZpbGVfY21kIGluCi0rCQkqfmZ1bmNfY29udmVydF9maWxlX25vb3AgfCAqfmZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyIHwgfiopCi0rCQkgIHRyeV9ub3JtYWxfYnJhbmNoPXllcwotKwkJICBldmFsIGNtZD1cIiRjbWQxXCIKLSsJCSAgZnVuY19sZW4gIiAkY21kIgotKwkJICBsZW49JGZ1bmNfbGVuX3Jlc3VsdAotKwkJICA7OwotKwkJKikKLSsJCSAgdHJ5X25vcm1hbF9icmFuY2g9bm8KLSsJCSAgOzsKLSsJICAgICAgZXNhYwotKwkgICAgICBpZiB0ZXN0ICIkdHJ5X25vcm1hbF9icmFuY2giID0geWVzIFwKLSsJCSAmJiB7IHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiBcCi0rCQkgICAgICB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgfQotKwkgICAgICB0aGVuCi0rCQlmdW5jX3Nob3dfZXZhbCAiJGNtZCIgJ2V4aXQgJD8nCi0rCQlza2lwcGVkX2V4cG9ydD1mYWxzZQotKwkgICAgICBlbGlmIHRlc3QgLW4gIiRubV9maWxlX2xpc3Rfc3BlYyI7IHRoZW4KLSsJCWZ1bmNfYmFzZW5hbWUgIiRvdXRwdXQiCi0rCQlvdXRwdXRfbGE9JGZ1bmNfYmFzZW5hbWVfcmVzdWx0Ci0rCQlzYXZlX2xpYm9ianM9JGxpYm9ianMKLSsJCXNhdmVfb3V0cHV0PSRvdXRwdXQKLSsJCW91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5ubQotKwkJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCi0rCQlsaWJvYmpzPSRubV9maWxlX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKLSsJCWZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKLSsJCWZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgJE5NIGlucHV0IGZpbGUgbGlzdDogJG91dHB1dCIKLSsJCWZvciBvYmogaW4gJHNhdmVfbGlib2JqczsgZG8KLSsJCSAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCi0rCQkgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgotKwkJZG9uZSA+ICIkb3V0cHV0IgotKwkJZXZhbCBjbWQ9XCIkY21kMVwiCi0gCQlmdW5jX3Nob3dfZXZhbCAiJGNtZCIgJ2V4aXQgJD8nCi0rCQlvdXRwdXQ9JHNhdmVfb3V0cHV0Ci0rCQlsaWJvYmpzPSRzYXZlX2xpYm9ianMKLSAJCXNraXBwZWRfZXhwb3J0PWZhbHNlCi0gCSAgICAgIGVsc2UKLSAJCSMgVGhlIGNvbW1hbmQgbGluZSBpcyB0b28gbG9uZyB0byBleGVjdXRlIGluIG9uZSBzdGVwLgotQEAgLTcyNDgsNyArODIxMSw3IEBAIEVPRgotIAlpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRpbmNsdWRlX2V4cHN5bXMiOyB0aGVuCi0gCSAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCi0gCSAgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiICYmIHRtcF9leHBvcnRfc3ltYm9scz0iJG9yaWdfZXhwb3J0X3N5bWJvbHMiCi0tCSAgJG9wdF9kcnlfcnVuIHx8ICRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTUDJOTCA+PiAiJHRtcF9leHBvcnRfc3ltYm9scyIKLSsJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKLSAJZmkKLSAKLSAJaWYgdGVzdCAiWCRza2lwcGVkX2V4cG9ydCIgIT0gIlg6IiAmJiB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyI7IHRoZW4KLUBAIC03MjYwLDcgKzgyMjMsNyBAQCBFT0YKLSAJICAjIGdsb2JhbCB2YXJpYWJsZXMuIGpvaW4oMSkgd291bGQgYmUgbmljZSBoZXJlLCBidXQgdW5mb3J0dW5hdGVseQotIAkgICMgaXNuJ3QgYSBibGVzc2VkIHRvb2wuCi0gCSAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWUgJy9bICxdREFUQS8hZDtzLFwoLipcKVwoWyBcLF0uKlwpLHN8XlwxJHxcMVwyfCwnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyCi0tCSAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgotKwkgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKLSAJICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYKLSAJICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scwotIAlmaQotQEAgLTcyNzAsNyArODIzMyw3IEBAIEVPRgotIAkgIGNhc2UgIiAkY29udmVuaWVuY2UgIiBpbgotIAkgICoiICR0ZXN0X2RlcGxpYiAiKikgOzsKLSAJICAqKQotLQkgICAgdG1wX2RlcGxpYnM9IiR0bXBfZGVwbGlicyAkdGVzdF9kZXBsaWIiCi0rCSAgICBmdW5jX2FwcGVuZCB0bXBfZGVwbGlicyAiICR0ZXN0X2RlcGxpYiIKLSAJICAgIDs7Ci0gCSAgZXNhYwotIAlkb25lCi1AQCAtNzI4Niw0MyArODI0OSw0MyBAQCBFT0YKLSAJICBmaQotIAkgIGlmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KLSAJICAgIHNhdmVfbGlib2Jqcz0kbGlib2JqcwotLQkgICAgZXZhbCAibGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIiIKLSsJICAgIGV2YWwgbGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgotIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KLSAJICBlbHNlCi0gCSAgICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotLQkgICAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCi0rCSAgICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgotIAotIAkgICAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCi0tCSAgICBsaWJvYmpzPSIkbGlib2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSsJICAgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSAJICAgIHRlc3QgIlgkbGlib2JqcyIgPSAiWCAiICYmIGxpYm9ianM9Ci0gCSAgZmkKLSAJZmkKLSAKLSAJaWYgdGVzdCAiJHRocmVhZF9zYWZlIiA9IHllcyAmJiB0ZXN0IC1uICIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjIjsgdGhlbgotLQkgIGV2YWwgImZsYWc9XCIkdGhyZWFkX3NhZmVfZmxhZ19zcGVjXCIiCi0tCSAgbGlua2VyX2ZsYWdzPSIkbGlua2VyX2ZsYWdzICRmbGFnIgotKwkgIGV2YWwgZmxhZz1cIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWNcIgotKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRmbGFnIgotIAlmaQotIAotIAkjIE1ha2UgYSBiYWNrdXAgb2YgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgd2hlbiByZWxpbmtpbmcKLS0JaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCi0tCSAgJG9wdF9kcnlfcnVuIHx8IChjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1VICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1VKSB8fCBleGl0ICQ/Ci0rCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KLSsJICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVUgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVUpJyB8fCBleGl0ICQ/Ci0gCWZpCi0gCi0gCSMgRG8gZWFjaCBvZiB0aGUgYXJjaGl2ZSBjb21tYW5kcy4KLSAJaWYgdGVzdCAiJG1vZHVsZSIgPSB5ZXMgJiYgdGVzdCAtbiAiJG1vZHVsZV9jbWRzIiA7IHRoZW4KLSAJICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRtb2R1bGVfZXhwc3ltX2NtZHMiOyB0aGVuCi0tCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkbW9kdWxlX2V4cHN5bV9jbWRzXCIiCi0rCSAgICBldmFsIHRlc3RfY21kcz1cIiRtb2R1bGVfZXhwc3ltX2NtZHNcIgotIAkgICAgY21kcz0kbW9kdWxlX2V4cHN5bV9jbWRzCi0gCSAgZWxzZQotLQkgICAgZXZhbCAidGVzdF9jbWRzPVwiJG1vZHVsZV9jbWRzXCIiCi0rCSAgICBldmFsIHRlc3RfY21kcz1cIiRtb2R1bGVfY21kc1wiCi0gCSAgICBjbWRzPSRtb2R1bGVfY21kcwotIAkgIGZpCi0gCWVsc2UKLSAJICBpZiB0ZXN0IC1uICIkZXhwb3J0X3N5bWJvbHMiICYmIHRlc3QgLW4gIiRhcmNoaXZlX2V4cHN5bV9jbWRzIjsgdGhlbgotLQkgICAgZXZhbCAidGVzdF9jbWRzPVwiJGFyY2hpdmVfZXhwc3ltX2NtZHNcIiIKLSsJICAgIGV2YWwgdGVzdF9jbWRzPVwiJGFyY2hpdmVfZXhwc3ltX2NtZHNcIgotIAkgICAgY21kcz0kYXJjaGl2ZV9leHBzeW1fY21kcwotIAkgIGVsc2UKLS0JICAgIGV2YWwgInRlc3RfY21kcz1cIiRhcmNoaXZlX2NtZHNcIiIKLSsJICAgIGV2YWwgdGVzdF9jbWRzPVwiJGFyY2hpdmVfY21kc1wiCi0gCSAgICBjbWRzPSRhcmNoaXZlX2NtZHMKLSAJICBmaQotIAlmaQotQEAgLTczNjYsMTAgKzgzMjksMTMgQEAgRU9GCi0gCSAgICBlY2hvICdJTlBVVCAoJyA+ICRvdXRwdXQKLSAJICAgIGZvciBvYmogaW4gJHNhdmVfbGlib2JqcwotIAkgICAgZG8KLS0JICAgICAgJEVDSE8gIiRvYmoiID4+ICRvdXRwdXQKLSsJICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCi0rCSAgICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiA+PiAkb3V0cHV0Ci0gCSAgICBkb25lCi0gCSAgICBlY2hvICcpJyA+PiAkb3V0cHV0Ci0tCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCi0rCSAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCi0rCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKLSsJICAgIG91dHB1dD0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0Ci0gCSAgZWxpZiB0ZXN0IC1uICIkc2F2ZV9saWJvYmpzIiAmJiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgIlgkZmlsZV9saXN0X3NwZWMiICE9IFg7IHRoZW4KLSAJICAgIG91dHB1dD0ke291dHB1dF9vYmpkaXJ9LyR7b3V0cHV0X2xhfS5sbmsKLSAJICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgbGlua2VyIGlucHV0IGZpbGUgbGlzdDogJG91dHB1dCIKLUBAIC03MzgzLDE1ICs4MzQ5LDE3IEBAIEVPRgotIAkgICAgZmkKLSAJICAgIGZvciBvYmoKLSAJICAgIGRvCi0tCSAgICAgICRFQ0hPICIkb2JqIiA+PiAkb3V0cHV0Ci0rCSAgICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb2JqIgotKwkgICAgICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgPj4gJG91dHB1dAotIAkgICAgZG9uZQotLQkgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkb3V0cHV0IgotLQkgICAgb3V0cHV0PSRmaXJzdG9ialwiJGZpbGVfbGlzdF9zcGVjJG91dHB1dFwiCi0rCSAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRvdXRwdXQiCi0rCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKLSsJICAgIG91dHB1dD0kZmlyc3RvYmpcIiRmaWxlX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHRcIgotIAkgIGVsc2UKLSAJICAgIGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiOyB0aGVuCi0gCSAgICAgIGZ1bmNfdmVyYm9zZSAiY3JlYXRpbmcgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMuLi4iCi0gCSAgICAgIG91dHB1dD0kb3V0cHV0X29iamRpci8kb3V0cHV0X2xhLSR7a30uJG9iamV4dAotLQkgICAgICBldmFsICJ0ZXN0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIiIKLSsJICAgICAgZXZhbCB0ZXN0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIgotIAkgICAgICBmdW5jX2xlbiAiICR0ZXN0X2NtZHMiCi0gCSAgICAgIGxlbjA9JGZ1bmNfbGVuX3Jlc3VsdAotIAkgICAgICBsZW49JGxlbjAKLUBAIC03NDExLDEyICs4Mzc5LDEyIEBAIEVPRgotIAkJICBpZiB0ZXN0ICIkayIgLWVxIDEgOyB0aGVuCi0gCQkgICAgIyBUaGUgZmlyc3QgZmlsZSBkb2Vzbid0IGhhdmUgYSBwcmV2aW91cyBjb21tYW5kIHRvIGFkZC4KLSAJCSAgICByZWxvYWRfb2Jqcz0kb2JqbGlzdAotLQkJICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIiCi0rCQkgICAgZXZhbCBjb25jYXRfY21kcz1cIiRyZWxvYWRfY21kc1wiCi0gCQkgIGVsc2UKLSAJCSAgICAjIEFsbCBzdWJzZXF1ZW50IHJlbG9hZGFibGUgb2JqZWN0IGZpbGVzIHdpbGwgbGluayBpbgotIAkJICAgICMgdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCi0gCQkgICAgcmVsb2FkX29ianM9IiRvYmpsaXN0ICRsYXN0X3JvYmoiCi0tCQkgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRyZWxvYWRfY21kc35cJFJNICRsYXN0X3JvYmpcIiIKLSsJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc34kcmVsb2FkX2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIKLSAJCSAgZmkKLSAJCSAgbGFzdF9yb2JqPSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0Ci0gCQkgIGZ1bmNfYXJpdGggJGsgKyAxCi1AQCAtNzQzMywxMSArODQwMSwxMSBAQCBFT0YKLSAJICAgICAgIyBmaWxlcyB3aWxsIGxpbmsgaW4gdGhlIGxhc3Qgb25lIGNyZWF0ZWQuCi0gCSAgICAgIHRlc3QgLXogIiRjb25jYXRfY21kcyIgfHwgY29uY2F0X2NtZHM9JGNvbmNhdF9jbWRzfgotIAkgICAgICByZWxvYWRfb2Jqcz0iJG9iamxpc3QgJGxhc3Rfcm9iaiIKLS0JICAgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kcmVsb2FkX2NtZHNcIiIKLSsJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRyZWxvYWRfY21kc1wiCi0gCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCi0tCSAgICAgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc31+XCRSTSAkbGFzdF9yb2JqXCIiCi0rCSAgICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfX5cJFJNICRsYXN0X3JvYmpcIgotIAkgICAgICBmaQotLQkgICAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKLSAKLSAJICAgIGVsc2UKLSAJICAgICAgb3V0cHV0PQotQEAgLTc0NTAsOSArODQxOCw5IEBAIEVPRgotIAkgICAgICBsaWJvYmpzPSRvdXRwdXQKLSAJICAgICAgIyBBcHBlbmQgdGhlIGNvbW1hbmQgdG8gY3JlYXRlIHRoZSBleHBvcnQgZmlsZS4KLSAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+Ci0tCSAgICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kcyRleHBvcnRfc3ltYm9sc19jbWRzXCIiCi0rCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzJGV4cG9ydF9zeW1ib2xzX2NtZHNcIgotIAkgICAgICBpZiB0ZXN0IC1uICIkbGFzdF9yb2JqIjsgdGhlbgotLQkJZXZhbCAiY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiIgotKwkJZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIKLSAJICAgICAgZmkKLSAJICAgIGZpCi0gCi1AQCAtNzQ3MSw3ICs4NDM5LDcgQEAgRU9GCi0gCQlsdF9leGl0PSQ/Ci0gCi0gCQkjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKLS0JCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgotKwkJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgotIAkJICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAotIAkJICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCi0gCQkgICAgJE1WICIke3JlYWxuYW1lfVUiICIkcmVhbG5hbWUiICkKLUBAIC03NDkyLDcgKzg0NjAsNyBAQCBFT0YKLSAJICAgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KLSAJICAgICAgdG1wX2V4cG9ydF9zeW1ib2xzPSIkZXhwb3J0X3N5bWJvbHMiCi0gCSAgICAgIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIiAmJiB0bXBfZXhwb3J0X3N5bWJvbHM9IiRvcmlnX2V4cG9ydF9zeW1ib2xzIgotLQkgICAgICAkb3B0X2RyeV9ydW4gfHwgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIgotKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAnJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIicKLSAJICAgIGZpCi0gCi0gCSAgICBpZiB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyI7IHRoZW4KLUBAIC03NTA0LDcgKzg0NzIsNyBAQCBFT0YKLSAJICAgICAgIyBnbG9iYWwgdmFyaWFibGVzLiBqb2luKDEpIHdvdWxkIGJlIG5pY2UgaGVyZSwgYnV0IHVuZm9ydHVuYXRlbHkKLSAJICAgICAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KLSAJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWUgJy9bICxdREFUQS8hZDtzLFwoLipcKVwoWyBcLF0uKlwpLHN8XlwxJHxcMVwyfCwnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyCi0tCSAgICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJGV4cG9ydF9zeW1ib2xzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciIKLSsJICAgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgotIAkgICAgICBleHBvcnRfc3ltYm9scz0kb3V0cHV0X29iamRpci8kbGlibmFtZS5kZWYKLSAJICAgICAgJG9wdF9kcnlfcnVuIHx8ICRTRUQgLWYgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIDwgJG9yaWdfZXhwb3J0X3N5bWJvbHMgPiAkZXhwb3J0X3N5bWJvbHMKLSAJICAgIGZpCi1AQCAtNzUxNSw3ICs4NDgzLDcgQEAgRU9GCi0gCSAgb3V0cHV0PSRzYXZlX291dHB1dAotIAotIAkgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSIgJiYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgotLQkgICAgZXZhbCAibGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIiIKLSsJICAgIGV2YWwgbGlib2Jqcz1cIlwkbGlib2JqcyAkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgotIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KLSAJICBmaQotIAkgICMgRXhwYW5kIHRoZSBsaWJyYXJ5IGxpbmtpbmcgY29tbWFuZHMgYWdhaW4gdG8gcmVzZXQgdGhlCi1AQCAtNzUzOSwyMyArODUwNywyMyBAQCBFT0YKLSAKLSAJaWYgdGVzdCAtbiAiJGRlbGZpbGVzIjsgdGhlbgotIAkgICMgQXBwZW5kIHRoZSBjb21tYW5kIHRvIHJlbW92ZSB0ZW1wb3JhcnkgZmlsZXMgdG8gJGNtZHMuCi0tCSAgZXZhbCAiY21kcz1cIlwkY21kc35cJFJNICRkZWxmaWxlc1wiIgotKwkgIGV2YWwgY21kcz1cIlwkY21kc35cJFJNICRkZWxmaWxlc1wiCi0gCWZpCi0gCi0gCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcwotIAlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KLSAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgotKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCi0gCi0gCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKLS0JICBsaWJvYmpzPSIkbGlib2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSsJICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCi0gCSAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KLSAJZmkKLSAKLSAJc2F2ZV9pZnM9IiRJRlMiOyBJRlM9J34nCi0gCWZvciBjbWQgaW4gJGNtZHM7IGRvCi0gCSAgSUZTPSIkc2F2ZV9pZnMiCi0tCSAgZXZhbCAiY21kPVwiJGNtZFwiIgotKwkgIGV2YWwgY21kPVwiJGNtZFwiCi0gCSAgJG9wdF9zaWxlbnQgfHwgewotIAkgICAgZnVuY19xdW90ZV9mb3JfZXhwYW5kICIkY21kIgotIAkgICAgZXZhbCAiZnVuY19lY2hvICRmdW5jX3F1b3RlX2Zvcl9leHBhbmRfcmVzdWx0IgotQEAgLTc1NjQsNyArODUzMiw3IEBAIEVPRgotIAkgICAgbHRfZXhpdD0kPwotIAotIAkgICAgIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0Ci0tCSAgICBpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KLSsJICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgPSByZWxpbms7IHRoZW4KLSAJICAgICAgKCBjZCAiJG91dHB1dF9vYmpkaXIiICYmIFwKLSAJICAgICAgICAkUk0gIiR7cmVhbG5hbWV9VCIgJiYgXAotIAkJJE1WICIke3JlYWxuYW1lfVUiICIkcmVhbG5hbWUiICkKLUBAIC03NTc2LDggKzg1NDQsOCBAQCBFT0YKLSAJSUZTPSIkc2F2ZV9pZnMiCi0gCi0gCSMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAotLQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KLS0JICAkb3B0X2RyeV9ydW4gfHwgKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVQgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVQgJiYgJE1WICR7cmVhbG5hbWV9VSAkcmVhbG5hbWUpIHx8IGV4aXQgJD8KLSsJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgotKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VCAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VCAmJiAkTVYgJHtyZWFsbmFtZX1VICRyZWFsbmFtZSknIHx8IGV4aXQgJD8KLSAKLSAJICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCi0gCSAgICBpZiB0ZXN0IC16ICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCi1AQCAtNzY1NiwxNyArODYyNCwyMCBAQCBFT0YKLSAKLSAgICAgICBpZiB0ZXN0IC1uICIkY29udmVuaWVuY2UiOyB0aGVuCi0gCWlmIHRlc3QgLW4gIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KLS0JICBldmFsICJ0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncz1cIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiIgotKwkgIGV2YWwgdG1wX3dob2xlX2FyY2hpdmVfZmxhZ3M9XCIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWNcIgotIAkgIHJlbG9hZF9jb252X29ianM9JHJlbG9hZF9vYmpzXCBgJEVDSE8gIiR0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncyIgfCAkU0VEICdzfCx8IHxnJ2AKLSAJZWxzZQotIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvYmp9eCIKLS0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKLSsJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgotIAotIAkgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlcyAkZ2VudG9wICRjb252ZW5pZW5jZQotIAkgIHJlbG9hZF9jb252X29ianM9IiRyZWxvYWRfb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSAJZmkKLSAgICAgICBmaQotIAotKyAgICAgICMgSWYgd2UncmUgbm90IGJ1aWxkaW5nIHNoYXJlZCwgd2UgbmVlZCB0byB1c2Ugbm9uX3BpY19vYmpzCi0rICAgICAgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIGxpYm9ianM9IiRub25fcGljX29iamVjdHMiCi0rCi0gICAgICAgIyBDcmVhdGUgdGhlIG9sZC1zdHlsZSBvYmplY3QuCi0gICAgICAgcmVsb2FkX29ianM9IiRvYmpzJG9sZF9kZXBsaWJzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiR7bGliZXh0fSQvZDsgL1wubGliJC9kOyAkbG8ybyIgfCAkTkwyU1BgIiAkcmVsb2FkX2NvbnZfb2JqcyIgIyMjIHRlc3RzdWl0ZTogc2tpcCBuZXN0ZWQgcXVvdGluZyB0ZXN0Ci0gCi1AQCAtNzY5MCw3ICs4NjYxLDcgQEAgRU9GCi0gCSMgQ3JlYXRlIGFuIGludmFsaWQgbGlidG9vbCBvYmplY3QgaWYgbm8gUElDLCBzbyB0aGF0IHdlIGRvbid0Ci0gCSMgYWNjaWRlbnRhbGx5IGxpbmsgaXQgaW50byBhIHByb2dyYW0uCi0gCSMgJHNob3cgImVjaG8gdGltZXN0YW1wID4gJGxpYm9iaiIKLS0JIyAkb3B0X2RyeV9ydW4gfHwgZWNobyB0aW1lc3RhbXAgPiAkbGlib2JqIHx8IGV4aXQgJD8KLSsJIyAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiZWNobyB0aW1lc3RhbXAgPiAkbGlib2JqIiB8fCBleGl0ICQ/Ci0gCWV4aXQgJEVYSVRfU1VDQ0VTUwotICAgICAgIGZpCi0gCi1AQCAtNzc0MCw4ICs4NzExLDggQEAgRU9GCi0gCWlmIHRlc3QgIiR0YWduYW1lIiA9IENYWCA7IHRoZW4KLSAJICBjYXNlICR7TUFDT1NYX0RFUExPWU1FTlRfVEFSR0VULTEwLjB9IGluCi0gCSAgICAxMC5bMDEyM10pCi0tCSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAke3dsfS1iaW5kX2F0X2xvYWQiCi0tCSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICR7d2x9LWJpbmRfYXRfbG9hZCIKLSsJICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHt3bH0tYmluZF9hdF9sb2FkIgotKwkgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHt3bH0tYmluZF9hdF9sb2FkIgotIAkgICAgOzsKLSAJICBlc2FjCi0gCWZpCi1AQCAtNzc2MSw3ICs4NzMyLDcgQEAgRU9GCi0gCSopCi0gCSAgY2FzZSAiICRjb21waWxlX2RlcGxpYnMgIiBpbgotIAkgICoiIC1MJHBhdGgvJG9iamRpciAiKikKLS0JICAgIG5ld19saWJzPSIkbmV3X2xpYnMgLUwkcGF0aC8kb2JqZGlyIiA7OwotKwkgICAgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAtTCRwYXRoLyRvYmpkaXIiIDs7Ci0gCSAgZXNhYwotIAkgIDs7Ci0gCWVzYWMKLUBAIC03NzcxLDE3ICs4NzQyLDE3IEBAIEVPRgotIAktTCopCi0gCSAgY2FzZSAiICRuZXdfbGlicyAiIGluCi0gCSAgKiIgJGRlcGxpYiAiKikgOzsKLS0JICAqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OwotIAkgIGVzYWMKLSAJICA7OwotLQkqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7Ci0rCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKLSAJZXNhYwotICAgICAgIGRvbmUKLSAgICAgICBjb21waWxlX2RlcGxpYnM9IiRuZXdfbGlicyIKLSAKLSAKLS0gICAgICBjb21waWxlX2NvbW1hbmQ9IiRjb21waWxlX2NvbW1hbmQgJGNvbXBpbGVfZGVwbGlicyIKLS0gICAgICBmaW5hbGl6ZV9jb21tYW5kPSIkZmluYWxpemVfY29tbWFuZCAkZmluYWxpemVfZGVwbGlicyIKLSsgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkY29tcGlsZV9kZXBsaWJzIgotKyAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkZmluYWxpemVfZGVwbGlicyIKLSAKLSAgICAgICBpZiB0ZXN0IC1uICIkcnBhdGgkeHJwYXRoIjsgdGhlbgotIAkjIElmIHRoZSB1c2VyIHNwZWNpZmllZCBhbnkgcnBhdGggZmxhZ3MsIHRoZW4gYWRkIHRoZW0uCi1AQCAtNzc4OSw3ICs4NzYwLDcgQEAgRU9GCi0gCSAgIyBUaGlzIGlzIHRoZSBtYWdpYyB0byB1c2UgLXJwYXRoLgotIAkgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCi0gCSAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OwotIAkgIGVzYWMKLSAJZG9uZQotICAgICAgIGZpCi1AQCAtNzgwOCwxOCArODc3OSwxOCBAQCBFT0YKLSAJICAgICAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQotIAkJOzsKLSAJICAgICAgKikKLS0JCWhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgotKwkJZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgotIAkJOzsKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLSAJICBlbHNlCi0tCSAgICBldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKLS0JICAgIHJwYXRoPSIkcnBhdGggJGZsYWciCi0rCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0rCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgotIAkgIGZpCi0gCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgotIAkgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KLSAJICAqIiAkbGliZGlyICIqKSA7OwotLQkgICopIHBlcm1fcnBhdGg9IiRwZXJtX3JwYXRoICRsaWJkaXIiIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7Ci0gCSAgZXNhYwotIAlmaQotIAljYXNlICRob3N0IGluCi1AQCAtNzgyOCwxMiArODc5OSwxMiBAQCBFT0YKLSAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KLSAJICAqIjokbGliZGlyOiIqKSA7OwotIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSRsaWJkaXI7OwotLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiRsaWJkaXIiOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JGxpYmRpciI7OwotIAkgIGVzYWMKLSAJICBjYXNlIDokZGxsc2VhcmNocGF0aDogaW4KLSAJICAqIjokdGVzdGJpbmRpcjoiKikgOzsKLSAJICA6OikgZGxsc2VhcmNocGF0aD0kdGVzdGJpbmRpcjs7Ci0tCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JHRlc3RiaW5kaXIiOzsKLSsJICAqKSBmdW5jX2FwcGVuZCBkbGxzZWFyY2hwYXRoICI6JHRlc3RiaW5kaXIiOzsKLSAJICBlc2FjCi0gCSAgOzsKLSAJZXNhYwotQEAgLTc4NDIsNyArODgxMyw3IEBAIEVPRgotICAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiAmJgotIAkgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCi0gCWxpYmRpcj0iJGhhcmRjb2RlX2xpYmRpcnMiCi0tCWV2YWwgInJwYXRoPVwiICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCi0rCWV2YWwgcnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotICAgICAgIGZpCi0gICAgICAgY29tcGlsZV9ycGF0aD0iJHJwYXRoIgotIAotQEAgLTc4NTksMTggKzg4MzAsMTggQEAgRU9GCi0gCSAgICAgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKLSAJCTs7Ci0gCSAgICAgICopCi0tCQloYXJkY29kZV9saWJkaXJzPSIkaGFyZGNvZGVfbGliZGlycyRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKLSsJCWZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKLSAJCTs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0gCSAgZWxzZQotLQkgICAgZXZhbCAiZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCi0tCSAgICBycGF0aD0iJHJwYXRoICRmbGFnIgotKwkgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKLSAJICBmaQotIAllbGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciI7IHRoZW4KLSAJICBjYXNlICIkZmluYWxpemVfcGVybV9ycGF0aCAiIGluCi0gCSAgKiIgJGxpYmRpciAiKikgOzsKLS0JICAqKSBmaW5hbGl6ZV9wZXJtX3JwYXRoPSIkZmluYWxpemVfcGVybV9ycGF0aCAkbGliZGlyIiA7OwotKwkgICopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3Blcm1fcnBhdGggIiAkbGliZGlyIiA7OwotIAkgIGVzYWMKLSAJZmkKLSAgICAgICBkb25lCi1AQCAtNzg3OCw3ICs4ODQ5LDcgQEAgRU9GCi0gICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiICYmCi0gCSB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KLSAJbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKLS0JZXZhbCAicnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKLSsJZXZhbCBycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0gICAgICAgZmkKLSAgICAgICBmaW5hbGl6ZV9ycGF0aD0iJHJwYXRoIgotIAotQEAgLTc5MjEsNiArODg5MiwxMiBAQCBFT0YKLSAJZXhpdF9zdGF0dXM9MAotIAlmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXRfc3RhdHVzPSQ/JwotIAotKwlpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KLSsJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKLSsJICBwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dCInJWcnIC1lICdzJUBUT09MX09VVFBVVEAlJyIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiclZydgCi0rCSAgZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKLSsJZmkKLSsKLSAJIyBEZWxldGUgdGhlIGdlbmVyYXRlZCBmaWxlcy4KLSAJaWYgdGVzdCAtZiAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IjsgdGhlbgotIAkgIGZ1bmNfc2hvd19ldmFsICckUk0gIiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX1TLiR7b2JqZXh0fSInCi1AQCAtNzk0Myw3ICs4OTIwLDcgQEAgRU9GCi0gCSAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KLSAJICBycGF0aD0KLSAJICBmb3IgZGlyIGluICRwZXJtX3JwYXRoOyBkbwotLQkgICAgcnBhdGg9IiRycGF0aCRkaXI6IgotKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgotIAkgIGRvbmUKLSAJICBjb21waWxlX3Zhcj0iJHJ1bnBhdGhfdmFyPVwiJHJwYXRoXCQkcnVucGF0aF92YXJcIiAiCi0gCWZpCi1AQCAtNzk1MSw3ICs4OTI4LDcgQEAgRU9GCi0gCSAgIyBXZSBzaG91bGQgc2V0IHRoZSBydW5wYXRoX3Zhci4KLSAJICBycGF0aD0KLSAJICBmb3IgZGlyIGluICRmaW5hbGl6ZV9wZXJtX3JwYXRoOyBkbwotLQkgICAgcnBhdGg9IiRycGF0aCRkaXI6IgotKwkgICAgZnVuY19hcHBlbmQgcnBhdGggIiRkaXI6IgotIAkgIGRvbmUKLSAJICBmaW5hbGl6ZV92YXI9IiRydW5wYXRoX3Zhcj1cIiRycGF0aFwkJHJ1bnBhdGhfdmFyXCIgIgotIAlmaQotQEAgLTc5NjYsNiArODk0MywxMyBAQCBFT0YKLSAJJG9wdF9kcnlfcnVuIHx8ICRSTSAkb3V0cHV0Ci0gCSMgTGluayB0aGUgZXhlY3V0YWJsZSBhbmQgZXhpdAotIAlmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXQgJD8nCi0rCi0rCWlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgotKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgotKwkgIHBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKLSsJICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JwotKwlmaQotKwotIAlleGl0ICRFWElUX1NVQ0NFU1MKLSAgICAgICBmaQotIAotQEAgLTc5OTksNiArODk4MywxMiBAQCBFT0YKLSAKLSAgICAgICBmdW5jX3Nob3dfZXZhbCAiJGxpbmtfY29tbWFuZCIgJ2V4aXQgJD8nCi0gCi0rICAgICAgaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCi0rCWZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZSIKLSsJcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKLSsJZnVuY19leGVjdXRlX2NtZHMgIiRwb3N0bGlua19jbWRzIiAnZXhpdCAkPycKLSsgICAgICBmaQotKwotICAgICAgICMgTm93IGNyZWF0ZSB0aGUgd3JhcHBlciBzY3JpcHQuCi0gICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyAkb3V0cHV0IgotIAotQEAgLTgwOTYsNyArOTA4Niw3IEBAIEVPRgotIAllbHNlCi0gCSAgb2xkb2Jqcz0iJG9sZF9kZXBsaWJzICRub25fcGljX29iamVjdHMiCi0gCSAgaWYgdGVzdCAiJHByZWxvYWQiID0geWVzICYmIHRlc3QgLWYgIiRzeW1maWxlb2JqIjsgdGhlbgotLQkgICAgb2xkb2Jqcz0iJG9sZG9ianMgJHN5bWZpbGVvYmoiCi0rCSAgICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJHN5bWZpbGVvYmoiCi0gCSAgZmkKLSAJZmkKLSAJYWRkbGlicz0iJG9sZF9jb252ZW5pZW5jZSIKLUBAIC04MTA0LDEwICs5MDk0LDEwIEBAIEVPRgotIAotICAgICAgIGlmIHRlc3QgLW4gIiRhZGRsaWJzIjsgdGhlbgotIAlnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotLQlnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKLSsJZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKLSAKLSAJZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGFkZGxpYnMKLS0Jb2xkb2Jqcz0iJG9sZG9ianMgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCi0rCWZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSAgICAgICBmaQotIAotICAgICAgICMgRG8gZWFjaCBjb21tYW5kIGluIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgotQEAgLTgxMTgsMTAgKzkxMDgsMTAgQEAgRU9GCi0gCSMgQWRkIGFueSBvYmplY3RzIGZyb20gcHJlbG9hZGVkIGNvbnZlbmllbmNlIGxpYnJhcmllcwotIAlpZiB0ZXN0IC1uICIkZGxwcmVmaWxlcyI7IHRoZW4KLSAJICBnZW50b3A9IiRvdXRwdXRfb2JqZGlyLyR7b3V0cHV0bmFtZX14IgotLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgotKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCi0gCi0gCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGRscHJlZmlsZXMKLS0JICBvbGRvYmpzPSIkb2xkb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKLSsJICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQiCi0gCWZpCi0gCi0gCSMgUE9TSVggZGVtYW5kcyBubyBwYXRocyB0byBiZSBlbmNvZGVkIGluIGFyY2hpdmVzLiAgV2UgaGF2ZQotQEAgLTgxMzksNyArOTEyOSw3IEBAIEVPRgotIAllbHNlCi0gCSAgZWNobyAiY29weWluZyBzZWxlY3RlZCBvYmplY3QgZmlsZXMgdG8gYXZvaWQgYmFzZW5hbWUgY29uZmxpY3RzLi4uIgotIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCi0tCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCi0rCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKLSAJICBmdW5jX21rZGlyX3AgIiRnZW50b3AiCi0gCSAgc2F2ZV9vbGRvYmpzPSRvbGRvYmpzCi0gCSAgb2xkb2Jqcz0KLUBAIC04MTYzLDE4ICs5MTUzLDI4IEBAIEVPRgotIAkJZXNhYwotIAkgICAgICBkb25lCi0gCSAgICAgIGZ1bmNfc2hvd19ldmFsICJsbiAkb2JqICRnZW50b3AvJG5ld29iaiB8fCBjcCAkb2JqICRnZW50b3AvJG5ld29iaiIKLS0JICAgICAgb2xkb2Jqcz0iJG9sZG9ianMgJGdlbnRvcC8kbmV3b2JqIgotKwkgICAgICBmdW5jX2FwcGVuZCBvbGRvYmpzICIgJGdlbnRvcC8kbmV3b2JqIgotIAkgICAgICA7OwotLQkgICAgKikgb2xkb2Jqcz0iJG9sZG9ianMgJG9iaiIgOzsKLSsJICAgICopIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkb2JqIiA7OwotIAkgICAgZXNhYwotIAkgIGRvbmUKLSAJZmkKLS0JZXZhbCAiY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIiCi0rCWV2YWwgY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIKLSAKLSAJZnVuY19sZW4gIiAkY21kcyIKLSAJbGVuPSRmdW5jX2xlbl9yZXN1bHQKLSAJaWYgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB0aGVuCi0gCSAgY21kcz0kb2xkX2FyY2hpdmVfY21kcwotKwllbGlmIHRlc3QgLW4gIiRhcmNoaXZlcl9saXN0X3NwZWMiOyB0aGVuCi0rCSAgZnVuY192ZXJib3NlICJ1c2luZyBjb21tYW5kIGZpbGUgYXJjaGl2ZSBsaW5raW5nLi4uIgotKwkgIGZvciBvYmogaW4gJG9sZG9ianMKLSsJICBkbwotKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCi0rCSAgICAkRUNITyAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKLSsJICBkb25lID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUubGliY21kCi0rCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmxpYmNtZCIKLSsJICBvbGRvYmpzPSIgJGFyY2hpdmVyX2xpc3Rfc3BlYyRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCi0rCSAgY21kcz0kb2xkX2FyY2hpdmVfY21kcwotIAllbHNlCi0gCSAgIyB0aGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGxpbmsgaW4gb25lIHN0ZXAsIGxpbmsgaW4gcGFydHMKLSAJICBmdW5jX3ZlcmJvc2UgInVzaW5nIHBpZWNld2lzZSBhcmNoaXZlIGxpbmtpbmcuLi4iCi1AQCAtODE4OSw3ICs5MTg5LDcgQEAgRU9GCi0gCSAgZG8KLSAJICAgIGxhc3Rfb2xkb2JqPSRvYmoKLSAJICBkb25lCi0tCSAgZXZhbCAidGVzdF9jbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIiIKLSsJICBldmFsIHRlc3RfY21kcz1cIiRvbGRfYXJjaGl2ZV9jbWRzXCIKLSAJICBmdW5jX2xlbiAiICR0ZXN0X2NtZHMiCi0gCSAgbGVuMD0kZnVuY19sZW5fcmVzdWx0Ci0gCSAgbGVuPSRsZW4wCi1AQCAtODIwOCw3ICs5MjA4LDcgQEAgRU9GCi0gCQlSQU5MSUI9JHNhdmVfUkFOTElCCi0gCSAgICAgIGZpCi0gCSAgICAgIHRlc3QgLXogIiRjb25jYXRfY21kcyIgfHwgY29uY2F0X2NtZHM9JGNvbmNhdF9jbWRzfgotLQkgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRvbGRfYXJjaGl2ZV9jbWRzXCIiCi0rCSAgICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJHtjb25jYXRfY21kc30kb2xkX2FyY2hpdmVfY21kc1wiCi0gCSAgICAgIG9iamxpc3Q9Ci0gCSAgICAgIGxlbj0kbGVuMAotIAkgICAgZmkKLUBAIC04MjE2LDkgKzkyMTYsOSBAQCBFT0YKLSAJICBSQU5MSUI9JHNhdmVfUkFOTElCCi0gCSAgb2xkb2Jqcz0kb2JqbGlzdAotIAkgIGlmIHRlc3QgIlgkb2xkb2JqcyIgPSAiWCIgOyB0aGVuCi0tCSAgICBldmFsICJjbWRzPVwiXCRjb25jYXRfY21kc1wiIgotKwkgICAgZXZhbCBjbWRzPVwiXCRjb25jYXRfY21kc1wiCi0gCSAgZWxzZQotLQkgICAgZXZhbCAiY21kcz1cIlwkY29uY2F0X2NtZHN+XCRvbGRfYXJjaGl2ZV9jbWRzXCIiCi0rCSAgICBldmFsIGNtZHM9XCJcJGNvbmNhdF9jbWRzflwkb2xkX2FyY2hpdmVfY21kc1wiCi0gCSAgZmkKLSAJZmkKLSAgICAgICBmaQotQEAgLTgyNjgsMTIgKzkyNjgsMjMgQEAgRU9GCi0gCSAgICAgICoubGEpCi0gCQlmdW5jX2Jhc2VuYW1lICIkZGVwbGliIgotIAkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgotLQkJbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCi0rCQlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKLSsJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHRgCi0gCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCi0gCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGRlcGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgotLQkJbmV3ZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzICRsaWJkaXIvJG5hbWUiCi0rCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKLSsJCTs7Ci0rCSAgICAgIC1MKikKLSsJCWZ1bmNfc3RyaXBuYW1lIC1MICcnICIkZGVwbGliIgotKwkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCi0rCQlmdW5jX2FwcGVuZCBuZXdkZXBlbmRlbmN5X2xpYnMgIiAtTCRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQiCi0gCQk7OwotLQkgICAgICAqKSBuZXdkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMgJGRlcGxpYiIgOzsKLSsJICAgICAgLVIqKQotKwkJZnVuY19zdHJpcG5hbWUgLVIgJycgIiRkZXBsaWIiCi0rCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKLSsJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiIC1SJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKLSsJCTs7Ci0rCSAgICAgICopIGZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiICRkZXBsaWIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGRvbmUKLSAJICAgIGRlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyIKLUBAIC04Mjg0LDEyICs5Mjk1LDE0IEBAIEVPRgotIAkgICAgICAqLmxhKQotIAkgICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRsaWIiCi0gCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tCQlsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGxpYmAKLSsJCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkbGliIgotKwkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdGAKLSsKLSAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKLSAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCi0tCQluZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliZGlyLyRuYW1lIgotKwkJZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgotIAkJOzsKLS0JICAgICAgKikgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGxpYiIgOzsKLSsJICAgICAgKikgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRsaWIiIDs7Ci0gCSAgICAgIGVzYWMKLSAJICAgIGRvbmUKLSAJICAgIGRsZmlsZXM9IiRuZXdkbGZpbGVzIgotQEAgLTgzMDMsMTAgKzkzMTYsMTEgQEAgRU9GCi0gCQkjIHRoZSBsaWJyYXJ5OgotIAkJZnVuY19iYXNlbmFtZSAiJGxpYiIKLSAJCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0JCWxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAotKwkJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRsaWIiCi0rCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0YAotIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAotIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKLS0JCW5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRsaWJkaXIvJG5hbWUiCi0rCQlmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCi0gCQk7OwotIAkgICAgICBlc2FjCi0gCSAgICBkb25lCi1AQCAtODMxOCw3ICs5MzMyLDcgQEAgRU9GCi0gCQlbXFwvXSogfCBbQS1aYS16XTpbXFwvXSopIGFicz0iJGxpYiIgOzsKLSAJCSopIGFicz1gcHdkYCIvJGxpYiIgOzsKLSAJICAgICAgZXNhYwotLQkgICAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkYWJzIgotKwkgICAgICBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGFicyIKLSAJICAgIGRvbmUKLSAJICAgIGRsZmlsZXM9IiRuZXdkbGZpbGVzIgotIAkgICAgbmV3ZGxwcmVmaWxlcz0KLUBAIC04MzI3LDcgKzkzNDEsNyBAQCBFT0YKLSAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OwotIAkJKikgYWJzPWBwd2RgIi8kbGliIiA7OwotIAkgICAgICBlc2FjCi0tCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRhYnMiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkYWJzIgotIAkgICAgZG9uZQotIAkgICAgZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMiCi0gCSAgZmkKLUBAIC04NDEyLDcgKzk0MjYsNyBAQCByZWxpbmtfY29tbWFuZD1cIiRyZWxpbmtfY29tbWFuZFwiIgotICAgICBleGl0ICRFWElUX1NVQ0NFU1MKLSB9Ci0gCi0teyB0ZXN0ICIkbW9kZSIgPSBsaW5rIHx8IHRlc3QgIiRtb2RlIiA9IHJlbGluazsgfSAmJgotK3sgdGVzdCAiJG9wdF9tb2RlIiA9IGxpbmsgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgfSAmJgotICAgICBmdW5jX21vZGVfbGluayAkezErIiRAIn0KLSAKLSAKLUBAIC04NDMyLDkgKzk0NDYsOSBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gICAgIGZvciBhcmcKLSAgICAgZG8KLSAgICAgICBjYXNlICRhcmcgaW4KLS0gICAgICAtZikgUk09IiRSTSAkYXJnIjsgcm1mb3JjZT15ZXMgOzsKLS0gICAgICAtKikgUk09IiRSTSAkYXJnIiA7OwotLSAgICAgICopIGZpbGVzPSIkZmlsZXMgJGFyZyIgOzsKLSsgICAgICAtZikgZnVuY19hcHBlbmQgUk0gIiAkYXJnIjsgcm1mb3JjZT15ZXMgOzsKLSsgICAgICAtKikgZnVuY19hcHBlbmQgUk0gIiAkYXJnIiA7OwotKyAgICAgICopIGZ1bmNfYXBwZW5kIGZpbGVzICIgJGFyZyIgOzsKLSAgICAgICBlc2FjCi0gICAgIGRvbmUKLSAKLUBAIC04NDQzLDI0ICs5NDU3LDIzIEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAKLSAgICAgcm1kaXJzPQotIAotLSAgICBvcmlnb2JqZGlyPSIkb2JqZGlyIgotICAgICBmb3IgZmlsZSBpbiAkZmlsZXM7IGRvCi0gICAgICAgZnVuY19kaXJuYW1lICIkZmlsZSIgIiIgIi4iCi0gICAgICAgZGlyPSIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLSAgICAgICBpZiB0ZXN0ICJYJGRpciIgPSBYLjsgdGhlbgotLQlvYmpkaXI9IiRvcmlnb2JqZGlyIgotKwlvZGlyPSIkb2JqZGlyIgotICAgICAgIGVsc2UKLS0Jb2JqZGlyPSIkZGlyLyRvcmlnb2JqZGlyIgotKwlvZGlyPSIkZGlyLyRvYmpkaXIiCi0gICAgICAgZmkKLSAgICAgICBmdW5jX2Jhc2VuYW1lICIkZmlsZSIKLSAgICAgICBuYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tICAgICAgdGVzdCAiJG1vZGUiID0gdW5pbnN0YWxsICYmIG9iamRpcj0iJGRpciIKLSsgICAgICB0ZXN0ICIkb3B0X21vZGUiID0gdW5pbnN0YWxsICYmIG9kaXI9IiRkaXIiCi0gCi0tICAgICAgIyBSZW1lbWJlciBvYmpkaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcwotLSAgICAgIGlmIHRlc3QgIiRtb2RlIiA9IGNsZWFuOyB0aGVuCi0rICAgICAgIyBSZW1lbWJlciBvZGlyIGZvciByZW1vdmFsIGxhdGVyLCBiZWluZyBjYXJlZnVsIHRvIGF2b2lkIGR1cGxpY2F0ZXMKLSsgICAgICBpZiB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW47IHRoZW4KLSAJY2FzZSAiICRybWRpcnMgIiBpbgotLQkgICoiICRvYmpkaXIgIiopIDs7Ci0tCSAgKikgcm1kaXJzPSIkcm1kaXJzICRvYmpkaXIiIDs7Ci0rCSAgKiIgJG9kaXIgIiopIDs7Ci0rCSAgKikgZnVuY19hcHBlbmQgcm1kaXJzICIgJG9kaXIiIDs7Ci0gCWVzYWMKLSAgICAgICBmaQotIAotQEAgLTg0ODYsMTggKzk0OTksMTcgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotIAotIAkgICMgRGVsZXRlIHRoZSBsaWJ0b29sIGxpYnJhcmllcyBhbmQgc3ltbGlua3MuCi0gCSAgZm9yIG4gaW4gJGxpYnJhcnlfbmFtZXM7IGRvCi0tCSAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuIgotKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuIgotIAkgIGRvbmUKLS0JICB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG9sZF9saWJyYXJ5IgotKwkgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRvbGRfbGlicmFyeSIKLSAKLS0JICBjYXNlICIkbW9kZSIgaW4KLSsJICBjYXNlICIkb3B0X21vZGUiIGluCi0gCSAgY2xlYW4pCi0tCSAgICBjYXNlICIgICRsaWJyYXJ5X25hbWVzICIgaW4KLS0JICAgICMgIiAgIiBpbiB0aGUgYmVnaW5uaW5nIGNhdGNoZXMgZW1wdHkgJGRsbmFtZQotKwkgICAgY2FzZSAiICRsaWJyYXJ5X25hbWVzICIgaW4KLSAJICAgICoiICRkbG5hbWUgIiopIDs7Ci0tCSAgICAqKSBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRkbG5hbWUiIDs7Ci0rCSAgICAqKSB0ZXN0IC1uICIkZGxuYW1lIiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJGRsbmFtZSIgOzsKLSAJICAgIGVzYWMKLS0JICAgIHRlc3QgLW4gIiRsaWJkaXIiICYmIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG5hbWUgJG9iamRpci8ke25hbWV9aSIKLSsJICAgIHRlc3QgLW4gIiRsaWJkaXIiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbmFtZSAkb2Rpci8ke25hbWV9aSIKLSAJICAgIDs7Ci0gCSAgdW5pbnN0YWxsKQotIAkgICAgaWYgdGVzdCAtbiAiJGxpYnJhcnlfbmFtZXMiOyB0aGVuCi1AQCAtODUyNSwxOSArOTUzNywxOSBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gCSAgIyBBZGQgUElDIG9iamVjdCB0byB0aGUgbGlzdCBvZiBmaWxlcyB0byByZW1vdmUuCi0gCSAgaWYgdGVzdCAtbiAiJHBpY19vYmplY3QiICYmCi0gCSAgICAgdGVzdCAiJHBpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KLS0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRkaXIvJHBpY19vYmplY3QiCi0rCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGRpci8kcGljX29iamVjdCIKLSAJICBmaQotIAotIAkgICMgQWRkIG5vbi1QSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KLSAJICBpZiB0ZXN0IC1uICIkbm9uX3BpY19vYmplY3QiICYmCi0gCSAgICAgdGVzdCAiJG5vbl9waWNfb2JqZWN0IiAhPSBub25lOyB0aGVuCi0tCSAgICBybWZpbGVzPSIkcm1maWxlcyAkZGlyLyRub25fcGljX29iamVjdCIKLSsJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZGlyLyRub25fcGljX29iamVjdCIKLSAJICBmaQotIAlmaQotIAk7OwotIAotICAgICAgICopCi0tCWlmIHRlc3QgIiRtb2RlIiA9IGNsZWFuIDsgdGhlbgotKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gY2xlYW4gOyB0aGVuCi0gCSAgbm9leGVuYW1lPSRuYW1lCi0gCSAgY2FzZSAkZmlsZSBpbgotIAkgICouZXhlKQotQEAgLTg1NDcsNyArOTU1OSw3IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAJICAgIG5vZXhlbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0gCSAgICAjICRmaWxlIHdpdGggLmV4ZSBoYXMgYWxyZWFkeSBiZWVuIGFkZGVkIHRvIHJtZmlsZXMsCi0gCSAgICAjIGFkZCAkZmlsZSB3aXRob3V0IC5leGUKLS0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRmaWxlIgotKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRmaWxlIgotIAkgICAgOzsKLSAJICBlc2FjCi0gCSAgIyBEbyBhIHRlc3QgdG8gc2VlIGlmIHRoaXMgaXMgYSBsaWJ0b29sIHByb2dyYW0uCi1AQCAtODU1Niw3ICs5NTY4LDcgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQotIAkgICAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICIkZmlsZSIKLSAJICAgICAgcmVsaW5rX2NvbW1hbmQ9Ci0gCSAgICAgIGZ1bmNfc291cmNlICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdAotLQkgICAgICBybWZpbGVzPSIkcm1maWxlcyAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZnVuY19sdHdyYXBwZXJfc2NyaXB0bmFtZV9yZXN1bHQiCi0gCSAgICBlbHNlCi0gCSAgICAgIHJlbGlua19jb21tYW5kPQotIAkgICAgICBmdW5jX3NvdXJjZSAkZGlyLyRub2V4ZW5hbWUKLUBAIC04NTY0LDEyICs5NTc2LDEyIEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKLSAKLSAJICAgICMgbm90ZSAkbmFtZSBzdGlsbCBjb250YWlucyAuZXhlIGlmIGl0IHdhcyBpbiAkZmlsZSBvcmlnaW5hbGx5Ci0gCSAgICAjIGFzIGRvZXMgdGhlIHZlcnNpb24gb2YgJGZpbGUgdGhhdCB3YXMgYWRkZWQgaW50byAkcm1maWxlcwotLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbmFtZSAkb2JqZGlyLyR7bmFtZX1TLiR7b2JqZXh0fSIKLSsJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kbmFtZSAkb2Rpci8ke25hbWV9Uy4ke29iamV4dH0iCi0gCSAgICBpZiB0ZXN0ICIkZmFzdF9pbnN0YWxsIiA9IHllcyAmJiB0ZXN0IC1uICIkcmVsaW5rX2NvbW1hbmQiOyB0aGVuCi0tCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvbHQtJG5hbWUiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci9sdC0kbmFtZSIKLSAJICAgIGZpCi0gCSAgICBpZiB0ZXN0ICJYJG5vZXhlbmFtZSIgIT0gIlgkbmFtZSIgOyB0aGVuCi0tCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvbHQtJHtub2V4ZW5hbWV9LmMiCi0rCSAgICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci9sdC0ke25vZXhlbmFtZX0uYyIKLSAJICAgIGZpCi0gCSAgZmkKLSAJZmkKLUBAIC04NTc3LDcgKzk1ODksNiBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gICAgICAgZXNhYwotICAgICAgIGZ1bmNfc2hvd19ldmFsICIkUk0gJHJtZmlsZXMiICdleGl0X3N0YXR1cz0xJwotICAgICBkb25lCi0tICAgIG9iamRpcj0iJG9yaWdvYmpkaXIiCi0gCi0gICAgICMgVHJ5IHRvIHJlbW92ZSB0aGUgJHtvYmpkaXJ9cyBpbiB0aGUgZGlyZWN0b3JpZXMgd2hlcmUgd2UgZGVsZXRlZCBmaWxlcwotICAgICBmb3IgZGlyIGluICRybWRpcnM7IGRvCi1AQCAtODU4OSwxNiArOTYwMCwxNiBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCi0gICAgIGV4aXQgJGV4aXRfc3RhdHVzCi0gfQotIAotLXsgdGVzdCAiJG1vZGUiID0gdW5pbnN0YWxsIHx8IHRlc3QgIiRtb2RlIiA9IGNsZWFuOyB9ICYmCi0reyB0ZXN0ICIkb3B0X21vZGUiID0gdW5pbnN0YWxsIHx8IHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbjsgfSAmJgotICAgICBmdW5jX21vZGVfdW5pbnN0YWxsICR7MSsiJEAifQotIAotLXRlc3QgLXogIiRtb2RlIiAmJiB7Ci0rdGVzdCAteiAiJG9wdF9tb2RlIiAmJiB7Ci0gICBoZWxwPSIkZ2VuZXJpY19oZWxwIgotICAgZnVuY19mYXRhbF9oZWxwICJ5b3UgbXVzdCBzcGVjaWZ5IGEgTU9ERSIKLSB9Ci0gCi0gdGVzdCAteiAiJGV4ZWNfY21kIiAmJiBcCi0tICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkbW9kZSciCi0rICBmdW5jX2ZhdGFsX2hlbHAgImludmFsaWQgb3BlcmF0aW9uIG1vZGUgXGAkb3B0X21vZGUnIgotIAotIGlmIHRlc3QgLW4gIiRleGVjX2NtZCI7IHRoZW4KLSAgIGV2YWwgZXhlYyAiJGV4ZWNfY21kIgotZGlmZiAtLWdpdCBhL2x0b3B0aW9ucy5tNCBiL2x0b3B0aW9ucy5tNAotaW5kZXggNWVmMTJjZWQyYS4uMTdjZmQ1MWMwYiAxMDA2NDQKLS0tLSBhL2x0b3B0aW9ucy5tNAotKysrIGIvbHRvcHRpb25zLm00Ci1AQCAtOCw3ICs4LDcgQEAKLSAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAotICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0gCi0tIyBzZXJpYWwgNiBsdG9wdGlvbnMubTQKLSsjIHNlcmlhbCA3IGx0b3B0aW9ucy5tNAotIAotICMgVGhpcyBpcyB0byBoZWxwIGFjbG9jYWwgZmluZCB0aGVzZSBtYWNyb3MsIGFzIGl0IGNhbid0IHNlZSBtNF9kZWZpbmUuCi0gQUNfREVGVU4oW0xUT1BUSU9OU19WRVJTSU9OXSwgW200X2lmKFsxXSldKQotZGlmZiAtLWdpdCBhL2x0dmVyc2lvbi5tNCBiL2x0dmVyc2lvbi5tNAotaW5kZXggYmY4N2Y3NzEzMi4uOWM3YjVkNDExOCAxMDA2NDQKLS0tLSBhL2x0dmVyc2lvbi5tNAotKysrIGIvbHR2ZXJzaW9uLm00Ci1AQCAtNywxNyArNywxNyBAQAotICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0Ci0gIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KLSAKLS0jIEdlbmVyYXRlZCBmcm9tIGx0dmVyc2lvbi5pbi4KLSsjIEBjb25maWd1cmVfaW5wdXRACi0gCi0tIyBzZXJpYWwgMzEzNCBsdHZlcnNpb24ubTQKLSsjIHNlcmlhbCAzMjkzIGx0dmVyc2lvbi5tNAotICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wKLSAKLS1tNF9kZWZpbmUoW0xUX1BBQ0tBR0VfVkVSU0lPTl0sIFsyLjIuN2FdKQotLW00X2RlZmluZShbTFRfUEFDS0FHRV9SRVZJU0lPTl0sIFsxLjMxMzRdKQotK200X2RlZmluZShbTFRfUEFDS0FHRV9WRVJTSU9OXSwgWzIuNF0pCi0rbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1JFVklTSU9OXSwgWzEuMzI5M10pCi0gCi0gQUNfREVGVU4oW0xUVkVSU0lPTl9WRVJTSU9OXSwKLS1bbWFjcm9fdmVyc2lvbj0nMi4yLjdhJwotLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCi0rW21hY3JvX3ZlcnNpb249JzIuNCcKLSttYWNyb19yZXZpc2lvbj0nMS4zMjkzJwotIF9MVF9ERUNMKCwgbWFjcm9fdmVyc2lvbiwgMCwgW1doaWNoIHJlbGVhc2Ugb2YgbGlidG9vbC5tNCB3YXMgdXNlZD9dKQotIF9MVF9ERUNMKCwgbWFjcm9fcmV2aXNpb24sIDApCi0gXSkKLWRpZmYgLS1naXQgYS9sdH5vYnNvbGV0ZS5tNCBiL2x0fm9ic29sZXRlLm00Ci1pbmRleCBiZjkyYjVlMDc5Li5jNTczZGE5MGM1IDEwMDY0NAotLS0tIGEvbHR+b2Jzb2xldGUubTQKLSsrKyBiL2x0fm9ic29sZXRlLm00Ci1AQCAtNyw3ICs3LDcgQEAKLSAjIHVubGltaXRlZCBwZXJtaXNzaW9uIHRvIGNvcHkgYW5kL29yIGRpc3RyaWJ1dGUgaXQsIHdpdGggb3Igd2l0aG91dAotICMgbW9kaWZpY2F0aW9ucywgYXMgbG9uZyBhcyB0aGlzIG5vdGljZSBpcyBwcmVzZXJ2ZWQuCi0gCi0tIyBzZXJpYWwgNCBsdH5vYnNvbGV0ZS5tNAotKyMgc2VyaWFsIDUgbHR+b2Jzb2xldGUubTQKLSAKLSAjIFRoZXNlIGV4aXN0IGVudGlyZWx5IHRvIGZvb2wgYWNsb2NhbCB3aGVuIGJvb3RzdHJhcHBpbmcgbGlidG9vbC4KLSAjCi1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9jb25maWd1cmUgYi9vcGNvZGVzL2NvbmZpZ3VyZQotaW5kZXggODUzODQ5ZWU1OC4uNWY3NGVjZjdkYSAxMDA3NTUKLS0tLSBhL29wY29kZXMvY29uZmlndXJlCi0rKysgYi9vcGNvZGVzL2NvbmZpZ3VyZQotQEAgLTY4MCw2ICs2ODAsOSBAQCBPVE9PTAotIExJUE8KLSBOTUVESVQKLSBEU1lNVVRJTAotK01BTklGRVNUX1RPT0wKLSthY19jdF9BUgotK0RMTFRPT0wKLSBPQkpEVU1QCi0gTE5fUwotIE5NCi1AQCAtNzk4LDYgKzgwMSw3IEBAIGVuYWJsZV9zdGF0aWMKLSB3aXRoX3BpYwotIGVuYWJsZV9mYXN0X2luc3RhbGwKLSB3aXRoX2dudV9sZAotK3dpdGhfbGlidG9vbF9zeXNyb290Ci0gZW5hYmxlX2xpYnRvb2xfbG9jawotIGVuYWJsZV90YXJnZXRzCi0gZW5hYmxlX3dlcnJvcgotQEAgLTE0NjIsNiArMTQ2Niw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgotICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQotICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQotKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKLSsgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KLSAKLSBTb21lIGluZmx1ZW50aWFsIGVudmlyb25tZW50IHZhcmlhYmxlczoKLSAgIENDICAgICAgICAgIEMgY29tcGlsZXIgY29tbWFuZAotQEAgLTU0MDMsOCArNTQwOSw4IEBAIGVzYWMKLSAKLSAKLSAKLS1tYWNyb192ZXJzaW9uPScyLjIuN2EnCi0tbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKLSttYWNyb192ZXJzaW9uPScyLjQnCi0rbWFjcm9fcmV2aXNpb249JzEuMzI5MycKLSAKLSAKLSAKLUBAIC01NDQ0LDcgKzU0NTAsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9Ci0gIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCi0taWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLStpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKLSAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotICAgRUNITz0ncHJpbnQgLXIgLS0nCi0gZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KLUBAIC02MTMwLDggKzYxMzYsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OwotICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCi0geHNpX3NoZWxsPW5vCi0gKCBfbHRfZHVtbXk9ImEvYi9jIgotLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLS0gICAgICA9IGMsYS9iLCwgXAotKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKLSsgICAgICA9IGMsYS9iLGIvYywgXAotICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCi0gICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCi0gICAmJiB4c2lfc2hlbGw9eWVzCi1AQCAtNjE4MCw2ICs2MTg2LDgwIEBAIGVzYWMKLSAKLSAKLSAKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgY2FzZSAkaG9zdCBpbgotKyAgKi0qLW1pbmd3KiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqLSotY3lnd2luKiApCi0rICAgIGNhc2UgJGJ1aWxkIGluCi0rICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cwotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgotKyAgICAgICAgOzsKLSsgICAgICAqLSotY3lnd2luKiApCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgICAgIDs7Ci0rICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAotKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQotKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KLStsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKLStjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICBlc2FjCi0rICAgIDs7Ci0rZXNhYwotKwotK2ZpCi0rCi0rdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KLSsKLSsKLSsKLSsKLSsKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KLSBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02MTk2LDYgKzYyNzYsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KLSBlc2FjCi0gcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCi0rICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKLSsgICAgZmkKLSsgICAgOzsKLSAgIGRhcndpbiopCi0gICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0gICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJwotQEAgLTYzNjQsNyArNjQ0OSw4IEBAIG1pbmd3KiB8IHB3MzIqKQotICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKLSAgIGVsc2UKLS0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCi0rICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KLSsgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJwotICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCi0gICBmaQotICAgOzsKLUBAIC02NTE4LDYgKzY2MDQsMjEgQEAgZXNhYwotIGZpCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1Ci0gJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9Ci0rCi0rZmlsZV9tYWdpY19nbG9iPQotK3dhbnRfbm9jYXNlZ2xvYj1ubwotK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCi0rICBjYXNlICRob3N0X29zIGluCi0rICBtaW5ndyogfCBwdzMyKikKLSsgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgotKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKLSsgICAgZWxzZQotKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCi0rICAgIGZpCi0rICAgIDs7Ci0rICBlc2FjCi0rZmkKLSsKLSBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKLSB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLUBAIC02NTMxLDExICs2NjMyLDE2NCBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSAKLSAKLSBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCi0raWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQotKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgotKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KLSsgICAgRExMVE9PTD0iZmFsc2UiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCi0rICBmaQotK2Vsc2UKLSsgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJwotKwotK2Nhc2UgJGhvc3Rfb3MgaW4KLStjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0rICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCi0rICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCi0rICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KLSsgICotLWlkZW50aWZ5LXN0cmljdCopCi0rICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgotKyAgICA7OwotKyAgKikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCi0rICAgIDs7Ci0rICBlc2FjCi0rICA7OwotKyopCi0rICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKLSsgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKLSsgIDs7Ci0rZXNhYwotKwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Ci0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITwotKwotKwotKwotKwotKwotKwotKwotK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLSsgIGZvciBhY19wcm9nIGluIGFyCi0rICBkbwotKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9Ci0gaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKLUBAIC02NTUxLDcgKzY4MDUsNyBAQCBkbwotICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0gICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0tICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCi0rICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02NTcxLDExICs2ODI1LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSAKLSsgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhawotKyAgZG9uZQotIGZpCi0taWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCi0raWYgdGVzdCAteiAiJEFSIjsgdGhlbgotICAgYWNfY3RfQVI9JEFSCi0tICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLS1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKLSsgIGZvciBhY19wcm9nIGluIGFyCi0rZG8KLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTY1OTEsNyArNjg0OSw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgotICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSAgICAgYnJlYWsgMgotICAgZmkKLUBAIC02NjEwLDYgKzY4NjgsMTAgQEAgZWxzZQotICRhc19lY2hvICJubyIgPiY2OyB9Ci0gZmkKLSAKLSsKLSsgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKLStkb25lCi0rCi0gICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KLSAgICAgQVI9ImZhbHNlIgotICAgZWxzZQotQEAgLTY2MjEsMTYgKzY4ODMsNzIgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0gZXNhYwotICAgICBBUj0kYWNfY3RfQVIKLSAgIGZpCi0tZWxzZQotLSAgQVI9IiRhY19jdl9wcm9nX0FSIgotIGZpCi0gCi0tdGVzdCAteiAiJEFSIiAmJiBBUj1hcgotLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1Ci0rOiAke0FSPWFyfQotKzogJHtBUl9GTEFHUz1jcnV9Ci0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBsdF9jdl9hcl9hdF9maWxlPW5vCi0rICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KLSsKLStpbnQKLSttYWluICgpCi0rewotIAotKyAgOwotKyAgcmV0dXJuIDA7Ci0rfQotK19BQ0VPRgotK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKLSsgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAotKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JwotKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCi0rCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCi0rCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQotKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQotKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQotKyAgYWNfc3RhdHVzPSQ/Ci0rICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKLSsgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KLSsJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KLSsgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACi0rICAgICAgICBmaQotKyAgICAgIGZpCi0rICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCi0gCi0rZmkKLStybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKLSAKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KLSAKLStpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9Ci0rZWxzZQotKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCi0rZmkKLSAKLSAKLSAKLUBAIC02OTcyLDggKzcyOTAsOCBAQCBlc2FjCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKLSAKLSAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKLS1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgotK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0gCi0gIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCi0gb3B0X2NyPQotQEAgLTcwMDksNiArNzMyNyw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KLSAgIGVsc2UKLSAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKLSAgIGZpCi0rICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCi0gCi0gICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KLSAgIHBpcGVfd29ya3M9bm8KLUBAIC03MDUwLDYgKzczNjksMTggQEAgX0xUX0VPRgotICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgotIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0Ci0rLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCi0rI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKLSsvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKLSsgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxpZiBkZWZpbmVkKF9fb3NmX18pCi0rLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKLSsjZWxzZQotKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0Ci0rI2VuZGlmCi0rCi0gI2lmZGVmIF9fY3BsdXNwbHVzCi0gZXh0ZXJuICJDIiB7Ci0gI2VuZGlmCi1AQCAtNzA2MSw3ICs3MzkyLDcgQEAgX0xUX0VPRgotIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAotIAotIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KLS1jb25zdCBzdHJ1Y3QgewotK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7Ci0gICBjb25zdCBjaGFyICpuYW1lOwotICAgdm9pZCAgICAgICAqYWRkcmVzczsKLSB9Ci1AQCAtNzA4Nyw4ICs3NDE4LDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKLSBfTFRfRU9GCi0gCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KLSAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKLS0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgotLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgotKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCi0gCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKLSAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCi0gCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1Ci1AQCAtNzA5OCw4ICs3NDI5LDggQEAgX0xUX0VPRgotICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCi0gCSAgICBwaXBlX3dvcmtzPXllcwotIAkgIGZpCi0tCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKLS0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKLSsJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUwotKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUwotIAllbHNlCi0gCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1Ci0gCWZpCi1AQCAtNzEzNiw2ICs3NDY3LDE2IEBAIGVsc2UKLSAkYXNfZWNobyAib2siID4mNjsgfQotIGZpCi0gCi0rIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCi0raWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KLSsgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJwotK2ZpCi0rCi0rCi0rCi0rCi0gCi0gCi0gCi1AQCAtNzE1Miw2ICs3NDkzLDQ1IEBAIGZpCi0gCi0gCi0gCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KLSsKLSsjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCi0raWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6Ci0rICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKLStlbHNlCi0rICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubwotK2ZpCi0rCi0rCi0rbHRfc3lzcm9vdD0KLStjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCi0rIHllcykKLSsgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKLSsgICBmaQotKyAgIDs7ICMoCi0rIC8qKQotKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAotKyAgIDs7ICMoCi0rIG5vfCcnKQotKyAgIDs7ICMoCi0rICopCi0rICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKLSskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQotKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQotKyAgIDs7Ci0rZXNhYwotKwotKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQotKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9Ci0gCi0gCi0gCi1AQCAtNzM2Myw2ICs3NzQzLDEyMyBAQCBlc2FjCi0gCi0gbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCi0gCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKwotK2ZpCi0raWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLStpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCi0rZWxzZQotK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKLStmb3IgYXNfZGlyIGluICRQQVRICi0rZG8KLSsgIElGUz0kYXNfc2F2ZV9JRlMKLSsgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0rICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLSthY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKLStpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCi0rICAgIE1BTklGRVNUX1RPT0w9IjoiCi0rICBlbHNlCi0rICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KLSt5ZXM6KQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9Ci0rYWNfdG9vbF93YXJuZWQ9eWVzIDs7Ci0rZXNhYwotKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCi0rICBmaQotK2Vsc2UKLSsgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCi0rZmkKLSsKLSt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubwotKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQotKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAotKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKLSsgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KLSsgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcwotKyAgZmkKLSsgIHJtIC1mIGNvbmZ0ZXN0KgotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KLStpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgotKyAgTUFOSUZFU1RfVE9PTD06Ci0rZmkKLSsKLSsKLSsKLSsKLSsKLSAKLSAgIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKLUBAIC03OTI2LDYgKzg0MjMsOCBAQCBfTFRfRU9GCi0gICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1Ci0gICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQotICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKLSsgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQotKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1Ci0gICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCi0gaW50IG1haW4oKSB7IHJldHVybiAwO30KLSBfTFRfRU9GCi1AQCAtODA5MSw3ICs4NTkwLDggQEAgZmkKLSBMSUJUT09MX0RFUFM9IiRsdG1haW4iCi0gCi0gIyBBbHdheXMgdXNlIG91ciBvd24gbGlidG9vbC4KLS1MSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpcikvbGlidG9vbCcKLStMSUJUT09MPSckKFNIRUxMKSAkKHRvcF9idWlsZGRpciknCi0rTElCVE9PTD0iJExJQlRPT0wvJHtob3N0X2FsaWFzfS1saWJ0b29sIgotIAotIAotIAotQEAgLTgxODAsNyArODY4MCw3IEBAIGFpeDMqKQotIGVzYWMKLSAKLSAjIEdsb2JhbCB2YXJpYWJsZXM6Ci0tb2ZpbGU9bGlidG9vbAotK29maWxlPSR7aG9zdF9hbGlhc30tbGlidG9vbAotIGNhbl9idWlsZF9zaGFyZWQ9eWVzCi0gCi0gIyBBbGwga25vd24gbGlua2VycyByZXF1aXJlIGEgYC5hJyBhcmNoaXZlIGZvciBzdGF0aWMgbGlua2luZyAoZXhjZXB0IE1TVkMsCi1AQCAtODQ3OCw4ICs4OTc4LDYgQEAgZmkKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0KLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0KLSAKLS17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKLS0kYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAotICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCcKLUBAIC04NjQ1LDYgKzkxNDMsMTIgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLSAJbHRfcHJvZ19jb21waWxlcl9waWM9Jy0tc2hhcmVkJwotIAlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLS1zdGF0aWMnCi0gCTs7Ci0rICAgICAgbmFnZm9yKikKLSsJIyBOQUcgRm9ydHJhbiBjb21waWxlcgotKwlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsLVdsLCwnCi0rCWx0X3Byb2dfY29tcGlsZXJfcGljPSctUElDJwotKwlsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0rCTs7Ci0gICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQotICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKLSAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKLUBAIC04NzA3LDcgKzkyMTEsNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSctS1BJQycKLSAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nLUJzdGF0aWMnCi0gICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLS0gICAgICBmNzcqIHwgZjkwKiB8IGY5NSopCi0rICAgICAgZjc3KiB8IGY5MCogfCBmOTUqIHwgc3VuZjc3KiB8IHN1bmY5MCogfCBzdW5mOTUqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctUW9wdGlvbiBsZCAnOzsKLSAgICAgICAqKQotIAlsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJzs7Ci1AQCAtODc2NCwxMyArOTI2OCwxNyBAQCBjYXNlICRob3N0X29zIGluCi0gICAgIGx0X3Byb2dfY29tcGlsZXJfcGljPSIkbHRfcHJvZ19jb21waWxlcl9waWMgLURQSUMiCi0gICAgIDs7Ci0gZXNhYwotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNQotLSRhc19lY2hvICIkbHRfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQotLQotLQotLQotLQotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljPSRsdF9wcm9nX2NvbXBpbGVyX3BpYwotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0rbHRfcHJvZ19jb21waWxlcl9waWM9JGx0X2N2X3Byb2dfY29tcGlsZXJfcGljCi0gCi0gIwotICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KLUBAIC04ODMxLDYgKzkzMzksMTEgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSsKLSsKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIHN0YXRpYyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotICMKLUBAIC05MTgxLDcgKzk2OTQsOCBAQCBfTFRfRU9GCi0gICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KLSAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCi0gCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgotICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKLUBAIC05MjgwLDEyICs5Nzk0LDEyIEBAIF9MVF9FT0YKLSAJICB3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYz0nLS13aG9sZS1hcmNoaXZlJGNvbnZlbmllbmNlIC0tbm8td2hvbGUtYXJjaGl2ZScKLSAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPQotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQ9Jy1ycGF0aCAkbGliZGlyJwotLQkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotKwkgIGFyY2hpdmVfY21kcz0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKLSAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCi0gCSAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotIAkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzIHwgc2VkIC1lICJzL1woLipcKS9cMTsvIiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgotLQkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKLSsJICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotIAkgIGZpCi0gCSAgOzsKLSAJZXNhYwotQEAgLTkyOTksOCArOTgxMyw4IEBAIF9MVF9FT0YKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJwotIAl3bGFyYz0KLSAgICAgICBlbHNlCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGZpCi0gICAgICAgOzsKLSAKLUBAIC05MzE4LDggKzk4MzIsOCBAQCBfTFRfRU9GCi0gCi0gX0xUX0VPRgotICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtOTM2NSw4ICs5ODc5LDggQEAgX0xUX0VPRgotIAotICAgICAqKQotICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZWxzZQotIAlsZF9zaGxpYnM9bm8KLSAgICAgICBmaQotQEAgLTk0OTYsNyArMTAwMTAsMTMgQEAgX0xUX0VPRgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJwotICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCi0gICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCi0tICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKLStlbHNlCi0rICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0gCi0gaW50Ci1AQCAtOTUwOSwyMiArMTAwMjksMjkgQEAgbWFpbiAoKQotIF9BQ0VPRgotIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKLSAKLS1sdF9haXhfbGlicGF0aF9zZWQ9JwotLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7Ci0tCS9eMC8gewotLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCi0tCSAgICBwCi0tCX0KLS0gICAgfScKLS1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKLS0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgotLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tZmkKLSsgIGx0X2FpeF9saWJwYXRoX3NlZD0nCi0rICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotKwkgIC9eMC8gewotKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLwotKwkgICAgICBwCi0rCSAgfQotKyAgICAgIH0nCi0rICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0rICBmaQotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0taWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0rICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgotKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCi0rICBmaQotKwotK2ZpCi0rCi0rICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCi0rZmkKLSAKLSAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCi0gICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgotQEAgLTk1MzYsNyArMTAwNjMsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotIAotIGludAotQEAgLTk1NDksMjIgKzEwMDgyLDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtOTYwOSwyMCArMTAxNDksNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KLSAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCi0gICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KLS0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLS0gICAgICBsaWJleHQ9bGliCi0tICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0tICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCi0tICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0tICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLS0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJwotLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0tICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJwotLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0rICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSsgICAgICBjbCopCi0rCSMgTmF0aXZlIE1TVkMKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcwotKwlmaWxlX2xpc3Rfc3BlYz0nQCcKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KLSsJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7Ci0rCSAgZWxzZQotKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBmaX4KLSsJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+Ci0rCSAgbGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgotKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKwkjIERvbid0IHVzZSByYW5saWIKLSsJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJwotKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+Ci0rCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KLSsJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCi0rCSAgICAqLmV4ZXwqLkVYRSkgOzsKLSsJICAgICopCi0rCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKLSsJICAgICAgOzsKLSsJICBlc2FjfgotKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCi0rCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOwotKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7Ci0rCSAgZmknCi0rCTs7Ci0rICAgICAgKikKLSsJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCi0rCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0rCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCi0rCWxpYmV4dD1saWIKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCi0rCXNocmV4dF9jbWRzPSIuZGxsIgotKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0rCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCi0rCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCi0rCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0rCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCi0rCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKLSsJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsJOzsKLSsgICAgICBlc2FjCi0gICAgICAgOzsKLSAKLSAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKLUBAIC05NjgzLDcgKzEwMjY2LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCi0gICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KLSAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQotLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJwotICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKLSAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCi1AQCAtOTY5MSw3ICsxMDI3NCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4OSopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBmaQotQEAgLTk3MDcsNyArMTAyOTAsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAKLSAgICAgaHB1eDEwKikKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJwotICAgICAgIGZpCi1AQCAtOTczMSwxMCArMTAzMTQsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAlpYTY0KikKLS0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCSopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJZXNhYwotICAgICAgIGVsc2UKLUBAIC05ODEzLDIzICsxMDM5NiwzNiBAQCBmaQotIAotICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAotIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCi0gCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0tICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAotKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgotKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSsJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0gLyogZW5kIGNvbmZkZWZzLmguICAqLwotLWludCBmb28odm9pZCkge30KLStpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9Ci0gX0FDRU9GCi0gaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgotLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotLQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCi0rZWxzZQotKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLSsgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KLSsJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgotKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlmaQotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi1AQCAtOTkxNCw3ICsxMDUxMCw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKLSAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0gCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKLSAgICAgICBlbHNlCi0gCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJwotQEAgLTk5MzMsOSArMTA1MjksOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJd2xhcmM9JyR7d2x9JwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gICAgICAgZWxzZQotIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KLSAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtMTA1MTEsOCArMTExMDcsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICBuZWVkX3ZlcnNpb249bm8KLSAgIG5lZWRfbGliX3ByZWZpeD1ubwotIAotLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCi0tICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQotKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgotKyAgeWVzLCopCi0rICAgICMgZ2NjCi0gICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCi0gICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci1AQCAtMTA1NDUsMTMgKzExMTQyLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCi0gICAgICAgOzsKLSAgICAgZXNhYwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotKyAgICA7OwotKwotKyAgKixjbCopCi0rICAgICMgTmF0aXZlIE1TVkMKLSsgICAgbGlibmFtZV9zcGVjPSckbmFtZScKLSsgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKLSsKLSsgICAgY2FzZSAkYnVpbGRfb3MgaW4KLSsgICAgbWluZ3cqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KLSsgICAgICBsdF9zYXZlX2lmcz0kSUZTCi0rICAgICAgSUZTPSc7JwotKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKLSsgICAgICBkbwotKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KLSsgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgotKyAgICAgIGRvbmUKLSsgICAgICBJRlM9JGx0X3NhdmVfaWZzCi0rICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCi0rICAgICAgOzsKLSsgICAgY3lnd2luKikKLSsgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCi0rICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCi0rICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIDs7Ci0rICAgICopCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgotKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgotKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCi0rICAgICAgZWxzZQotKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAotKyAgICAgIGZpCi0rICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCi0rICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQotKyAgICAgIDs7Ci0rICAgIGVzYWMKLSsKLSsgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLSsgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KLSsgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KLSsgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCi0rICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+Ci0rICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KLSsgICAgICAgJFJNIFwkZGxwYXRoJwotKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKLSAgICAgOzsKLSAKLSAgICopCi0rICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgotICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSAgICAgOzsKLSAgIGVzYWMKLS0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KLSAgIHNobGlicGF0aF92YXI9UEFUSAotICAgOzsKLUBAIC0xMDY0Myw3ICsxMTI5OCw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0xMTQzOSw3ICsxMjA5NCw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDExNDQyICJjb25maWd1cmUiCi0rI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMTQ4MywxMCArMTIxMzgsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMTU0NSw3ICsxMjIwMCw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDExNTQ4ICJjb25maWd1cmUiCi0rI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMTU4OSwxMCArMTIyNDQsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMjc3OSw3ICsxMzQzNCw3IEBAIGlmIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9ICJ5ZXMiOyB0aGVuCi0gIyBzaW5jZSBsaWJiZmQgbWF5IG5vdCBwdWxsIGluIHRoZSBlbnRpcmV0eSBvZiBsaWJpYmVydHkuCi0gICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAotICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCi0tICAgIFNIQVJFRF9MSUJBREQ9Ii1MYHB3ZGAvLi4vbGliaWJlcnR5L3BpYyAtbGliZXJ0eSIKLSsgICAgU0hBUkVEX0xJQkFERD0iYHB3ZGAvLi4vbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYSIKLSAgIGZpCi0gCi0gICBjYXNlICIke2hvc3R9IiBpbgotQEAgLTEzNzU2LDEzICsxNDQxMSwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEzNzc3LDE0ICsxNDQzOSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLS1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMzgxNywxMiArMTQ0ODIsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKLSBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTM4NzcsOCArMTQ1NDIsMTMgQEAgcmVsb2FkX2ZsYWcgXAotIE9CSkRVTVAgXAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKLSBmaWxlX21hZ2ljX2NtZCBcCi0rZmlsZV9tYWdpY19nbG9iIFwKLSt3YW50X25vY2FzZWdsb2IgXAotK0RMTFRPT0wgXAotK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKLSBBUiBcCi0gQVJfRkxBR1MgXAotK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCi0gU1RSSVAgXAotIFJBTkxJQiBcCi0gQ0MgXAotQEAgLTEzODg4LDEyICsxNDU1OCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAotK25tX2ZpbGVfbGlzdF9zcGVjIFwKLSBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCi0tbHRfcHJvZ19jb21waWxlcl93bCBcCi0gbHRfcHJvZ19jb21waWxlcl9waWMgXAotK2x0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKLSBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCi0gbmVlZF9sb2NrcyBcCi0rTUFOSUZFU1RfVE9PTCBcCi0gRFNZTVVUSUwgXAotIE5NRURJVCBcCi0gTElQTyBcCi1AQCAtMTM5MDksNyArMTQ1ODEsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCi0gaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCi0gaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCi0tZml4X3NyY2ZpbGVfcGF0aCBcCi0gZXhjbHVkZV9leHBzeW1zIFwKLSBpbmNsdWRlX2V4cHN5bXMgXAotIGZpbGVfbGlzdF9zcGVjIFwKLUBAIC0xMzk0NSw2ICsxNDYxNiw3IEBAIG1vZHVsZV9jbWRzIFwKLSBtb2R1bGVfZXhwc3ltX2NtZHMgXAotIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAotIHByZWxpbmtfY21kcyBcCi0rcG9zdGxpbmtfY21kcyBcCi0gcG9zdGluc3RhbGxfY21kcyBcCi0gcG9zdHVuaW5zdGFsbF9jbWRzIFwKLSBmaW5pc2hfY21kcyBcCi1AQCAtMTQ3MTAsNyArMTUzODIsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8Ci0gIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCi0gIwotICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCi0tIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSsjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKLSsjICAgICAgICAgICAgICAgICBJbmMuCi0gIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKLSAjCi0gIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgotQEAgLTE0ODEzLDE5ICsxNTQ4Niw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKLSAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCi0gTkwyU1A9JGx0X2x0X05MMlNQCi0gCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSsKLSsjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgotK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKLSsKLSAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgotIE9CSkRVTVA9JGx0X09CSkRVTVAKLSAKLSAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAotIAotLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCi0rIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAotIAotKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKLSsKLSsjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgotKwotKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCi0rRExMVE9PTD0kbHRfRExMVE9PTAotKwotKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSsKLSAjIFRoZSBhcmNoaXZlci4KLSBBUj0kbHRfQVIKLSsKLSsjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgotIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUwotIAotKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgotK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCi0rCi0gIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KLSBTVFJJUD0kbHRfU1RSSVAKLSAKLUBAIC0xNDg1NSw2ICsxNTU1MSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcwotICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCi0gZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4Ci0gCi0rIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCi0rbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCi0rCi0rIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KLStsdF9zeXNyb290PSRsdF9zeXNyb290Ci0rCi0gIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCi0gb2JqZGlyPSRvYmpkaXIKLSAKLUBAIC0xNDg2NCw2ICsxNTU2Niw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECi0gIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KLSBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCi0gCi0rIyBNYW5pZmVzdCB0b29sLgotK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKLSsKLSAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCi0gRFNZTVVUSUw9JGx0X0RTWU1VVElMCi0gCi1AQCAtMTQ5NzgsMTIgKzE1NjgzLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKLSAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCi0gbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZwotIAotLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLS13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotLQotICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgotIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYwotIAotKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KLSt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAotKwotICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KLSBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYwotIAotQEAgLTE1MDcwLDkgKzE1Nzc1LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAotICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgotIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKLSAKLS0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCi0tZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAotLQotICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgotIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCi0gCi1AQCAtMTUwODgsNiArMTU3OTAsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcwotICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCi0gcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKLSAKLSsjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCi0rcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcwotKwotICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgotIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYwotIAotQEAgLTE1MTIwLDIxMCArMTU4MjUsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgotICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgotICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KLSAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/Ci0tICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAotLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotLQotLSAgY2FzZSAkeHNpX3NoZWxsIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY19iYXNlbmFtZSBmaWxlCi0tZnVuY19iYXNlbmFtZSAoKQotLXsKLS0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKLS19Ci0tCi0tIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KLS0jIGNhbGw6Ci0tIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKLS0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKLS0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKLS0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KLS0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKLS0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKLS0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCi0tIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCi0tZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsxfSBpbgotLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OwotLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7Ci0tICBlc2FjCi0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKLS0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9Ci0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KLS19Ci0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9Ci0tICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKLS0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7Ci0tICBlc2FjCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KLS19Ci0tCi0tIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgotLWZ1bmNfYXJpdGggKCkKLS17Ci0tICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KLS19Ci0tCi0tX0xUX0VPRgotLSAgICA7OwotLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50Ci0tIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAotLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgotLWZ1bmNfZGlybmFtZSAoKQotLXsKLS0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCi0tICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCi0tICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgotLSAgZWxzZQotLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCi0tICBmaQotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKLS19Ci0tCi0tCi0tIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKLS0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgotLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCi0tIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCi0tIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgotLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKLS1mdW5jX3N0cmlwbmFtZSAoKQotLXsKLS0gIGNhc2UgJHsyfSBpbgotLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OwotLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7Ci0tICBlc2FjCi0tfQotLQotLSMgc2VkIHNjcmlwdHM6Ci0tbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKLS1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCi0tCi0tIyBmdW5jX29wdF9zcGxpdAotLWZ1bmNfb3B0X3NwbGl0ICgpCi0tewotLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKLS0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCi0tfQotLQotLSMgZnVuY19sbzJvIG9iamVjdAotLWZ1bmNfbG8ybyAoKQotLXsKLS0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKLS19Ci0tCi0tIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKLS1mdW5jX3hmb3JtICgpCi0tewotLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKLS19Ci0tCi0tIyBmdW5jX2xlbiBzdHJpbmcKLS0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCi0tZnVuY19sZW4gKCkKLS17Ci0tICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCi0tfQotLQotLV9MVF9FT0YKLS1lc2FjCi0tCi0tY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCi0tICB5ZXMpCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxKz1cJDIiCi0tfQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopCi0tICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCi0tCi0tIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKLS0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KLS1mdW5jX2FwcGVuZCAoKQotLXsKLS0gIGV2YWwgIiQxPVwkJDFcJDIiCi0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gIGVzYWMKLS0KLS0KLS0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKLSsgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLSsgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0rCi0rICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAotK2Z1bmNfZGlybmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAotK2Z1bmNfYmFzZW5hbWUgKClcCi0re1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKLStmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAotK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAotK1wgICAgZXNhY1wKLStcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAotK2Z1bmNfc3RyaXBuYW1lICgpXAotK3tcCi0rXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAotK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKLStmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAotK3tcCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCi0rXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKLStmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCi0rXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKLStmdW5jX2xvMm8gKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCi0rXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKLStcICAgIGVzYWNcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAotK2Z1bmNfeGZvcm0gKClcCi0re1wKLSsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAotK2Z1bmNfYXJpdGggKClcCi0re1wKLSsgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKLStmdW5jX2xlbiAoKVwKLSt7XAotKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rZmkKLSsKLStpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCi0rICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKLStmdW5jX2FwcGVuZCAoKVwKLSt7XAotKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKLStmdW5jX2FwcGVuZF9xdW90ZWQgKClcCi0re1wKLStcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAotK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JwotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCi0rICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotK2Vsc2UKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCi0rICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStmaQotKwotK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9Ci0rZmkKLSsKLSsKLSsgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0gICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCi0gICBjaG1vZCAreCAiJG9maWxlIgotIAotZGlmZiAtLWdpdCBhL29wY29kZXMvY29uZmlndXJlLmFjIGIvb3Bjb2Rlcy9jb25maWd1cmUuYWMKLWluZGV4IDRlYjE5MDA1ZTguLjE5YTU3NjA4YjkgMTAwNjQ0Ci0tLS0gYS9vcGNvZGVzL2NvbmZpZ3VyZS5hYwotKysrIGIvb3Bjb2Rlcy9jb25maWd1cmUuYWMKLUBAIC0xNzAsNyArMTcwLDcgQEAgY2hhbmdlcXVvdGUoLClkbmwKLSAgIHg9YHNlZCAtbiAtZSAncy9eWyAJXSpQSUNGTEFHWyAJXSo9WyAJXSovL3AnIDwgLi4vbGliaWJlcnR5L01ha2VmaWxlIHwgc2VkIC1uICckcCdgCi0gY2hhbmdlcXVvdGUoWyxdKWRubAotICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCi0tICAgIFNIQVJFRF9MSUJBREQ9Ii1MYHB3ZGAvLi4vbGliaWJlcnR5L3BpYyAtbGliZXJ0eSIKLSsgICAgU0hBUkVEX0xJQkFERD0iYHB3ZGAvLi4vbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYSIKLSAgIGZpCi0gCi0gICBjYXNlICIke2hvc3R9IiBpbgotZGlmZiAtLWdpdCBhL3psaWIvY29uZmlndXJlIGIvemxpYi9jb25maWd1cmUKLWluZGV4IDA0MWNiZGJmNzEuLjE5ZDYwNWZjODUgMTAwNzU1Ci0tLS0gYS96bGliL2NvbmZpZ3VyZQotKysrIGIvemxpYi9jb25maWd1cmUKLUBAIC02NDYsOCArNjQ2LDExIEBAIE9UT09MCi0gTElQTwotIE5NRURJVAotIERTWU1VVElMCi0rTUFOSUZFU1RfVE9PTAotIFJBTkxJQgotK2FjX2N0X0FSCi0gQVIKLStETExUT09MCi0gT0JKRFVNUAotIExOX1MKLSBOTQotQEAgLTc3NCw2ICs3NzcsNyBAQCBlbmFibGVfc3RhdGljCi0gd2l0aF9waWMKLSBlbmFibGVfZmFzdF9pbnN0YWxsCi0gd2l0aF9nbnVfbGQKLSt3aXRoX2xpYnRvb2xfc3lzcm9vdAotIGVuYWJsZV9saWJ0b29sX2xvY2sKLSBlbmFibGVfaG9zdF9zaGFyZWQKLSAnCi1AQCAtMTQyOCw2ICsxNDMyLDggQEAgT3B0aW9uYWwgUGFja2FnZXM6Ci0gICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCi0gICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCi0rICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgotKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgotIAotIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgotICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCi1AQCAtNDE0Nyw4ICs0MTUzLDggQEAgZXNhYwotIAotIAotIAotLW1hY3JvX3ZlcnNpb249JzIuMi43YScKLS1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JwotK21hY3JvX3ZlcnNpb249JzIuNCcKLSttYWNyb19yZXZpc2lvbj0nMS4zMjkzJwotIAotIAotIAotQEAgLTQxODgsNyArNDE5NCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KLSAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KLS1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAotICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCi0gICBFQ0hPPSdwcmludCAtciAtLScKLSBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgotQEAgLTUwMDQsOCArNTAxMCw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7Ci0gIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKLSB4c2lfc2hlbGw9bm8KLSAoIF9sdF9kdW1teT0iYS9iL2MiCi0tICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotLSAgICAgID0gYyxhL2IsLCBcCi0rICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAotKyAgICAgID0gYyxhL2IsYi9jLCBcCi0gICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKLSAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKLSAgICYmIHhzaV9zaGVsbD15ZXMKLUBAIC01MDU0LDYgKzUwNjAsODAgQEAgZXNhYwotIAotIAotIAotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBjYXNlICRob3N0IGluCi0rICAqLSotbWluZ3cqICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICotKi1jeWd3aW4qICkKLSsgICAgY2FzZSAkYnVpbGQgaW4KLSsgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCi0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCi0rICAgICAgICA7OwotKyAgICAgICotKi1jeWd3aW4qICkKLSsgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICAgICAgOzsKLSsgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4Ci0rICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLSsgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCi0rICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotKyAgICA7OwotK2VzYWMKLSsKLStmaQotKwotK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9Ci0rCi0rCi0rCi0rCi0rCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9Ci0raWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAotK2Nhc2UgJGhvc3QgaW4KLSsgICotKi1taW5ndyogKQotKyAgICBjYXNlICRidWlsZCBpbgotKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKLSsgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKLSsgICAgICAgIDs7Ci0rICAgIGVzYWMKLSsgICAgOzsKLStlc2FjCi0rCi0rZmkKLSsKLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQotKwotKwotKwotKwotKwotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQotIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTUwNzAsNiArNTE1MCwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgotIGVzYWMKLSByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi0gY2FzZSAkaG9zdF9vcyBpbgotKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQotKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KLSsgICAgICByZWxvYWRfY21kcz1mYWxzZQotKyAgICBmaQotKyAgICA7OwotICAgZGFyd2luKikKLSAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCi1AQCAtNTIzOCw3ICs1MzIzLDggQEAgbWluZ3cqIHwgcHczMiopCi0gICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJwotICAgZWxzZQotLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKLSsgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgotKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCi0gICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKLSAgIGZpCi0gICA7OwotQEAgLTUzOTIsNiArNTQ3OCwyMSBAQCBlc2FjCi0gZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKLSAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KLSsKLStmaWxlX21hZ2ljX2dsb2I9Ci0rd2FudF9ub2Nhc2VnbG9iPW5vCi0raWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KLSsgIGNhc2UgJGhvc3Rfb3MgaW4KLSsgIG1pbmd3KiB8IHB3MzIqKQotKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCi0rICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcwotKyAgICBlbHNlCi0rICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKLSsgICAgZmkKLSsgICAgOzsKLSsgIGVzYWMKLStmaQotKwotIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAotIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAotIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotQEAgLTU0MDUsMTEgKzU1MDYsMTY1IEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgotIAotIAotIAotKwotKwotKwotKwotKwotKwotKwotKwotKwotKwotIAotIAotIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0tc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKLSsgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KLStzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgotKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKLSsgICAgYnJlYWsgMgotKyAgZmkKLStkb25lCi0rICBkb25lCi0rSUZTPSRhc19zYXZlX0lGUwotKwotK2ZpCi0rZmkKLStETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKLStpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1Ci0rJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KLStlbHNlCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQotKyRhc19lY2hvICJubyIgPiY2OyB9Ci0rZmkKLSsKLSsKLStmaQotK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdF9ETExUT09MPSRETExUT09MCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCi0raWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQotKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgotKyAgICBETExUT09MPSJmYWxzZSIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKLSsgIGZpCi0rZWxzZQotKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCi0rCi0rY2FzZSAkaG9zdF9vcyBpbgotK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSsgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKLSsgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKLSsgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgotKyAgKi0taWRlbnRpZnktc3RyaWN0KikKLSsgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCi0rICAgIDs7Ci0rICAqKQotKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKLSsgICAgOzsKLSsgIGVzYWMKLSsgIDs7Ci0rKikKLSsgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgotKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgotKyAgOzsKLStlc2FjCi0rCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKLSt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0rCi0raWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLSsgIGRvCi0rICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKLSAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KLSBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgotQEAgLTU0MjUsNyArNTY4MCw3IEBAIGRvCi0gICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgotICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KLSAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KLS0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKLSsgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTU0NDUsMTEgKzU3MDAsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotIAotKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCi0rICBkb25lCi0gZmkKLS1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KLStpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCi0gICBhY19jdF9BUj0kQVIKLS0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgotKyAgZm9yIGFjX3Byb2cgaW4gYXIKLStkbwotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCi0geyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6Ci1AQCAtNTQ2NSw3ICs1NzI0LDcgQEAgZG8KLSAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCi0gICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbwotICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgotLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKLSsgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCi0gICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotICAgICBicmVhayAyCi0gICBmaQotQEAgLTU0ODQsNiArNTc0MywxMCBAQCBlbHNlCi0gJGFzX2VjaG8gIm5vIiA+JjY7IH0KLSBmaQotIAotKwotKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhawotK2RvbmUKLSsKLSAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgotICAgICBBUj0iZmFsc2UiCi0gICBlbHNlCi1AQCAtNTQ5NSwxNiArNTc1OCw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKLSBlc2FjCi0gICAgIEFSPSRhY19jdF9BUgotICAgZmkKLS1lbHNlCi0tICBBUj0iJGFjX2N2X3Byb2dfQVIiCi0gZmkKLSAKLS10ZXN0IC16ICIkQVIiICYmIEFSPWFyCi0tdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKLSs6ICR7QVI9YXJ9Ci0rOiAke0FSX0ZMQUdTPWNydX0KLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6Ci0rICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgotK2Vsc2UKLSsgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KLSsgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0Ci0rLyogZW5kIGNvbmZkZWZzLmguICAqLwotKwotK2ludAotK21haW4gKCkKLSt7Ci0gCi0rICA7Ci0rICByZXR1cm4gMDsKLSt9Ci0rX0FDRU9GCi0raWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgotKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0Ci0rICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCi0rICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKLSsgIChldmFsICRsdF9hcl90cnkpIDI+JjUKLSsgIGFjX3N0YXR1cz0kPwotKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1Ci0rICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9Ci0rICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KLSsJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KLSsJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCi0rCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1Ci0rICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1Ci0rICBhY19zdGF0dXM9JD8KLSsgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQotKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQotKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgotKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKLSsgICAgICAgIGZpCi0rICAgICAgZmkKLSsgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKLSAKLStmaQotK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAotIAotK2ZpCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQotIAotK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KLSsgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KLStlbHNlCi0rICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKLStmaQotIAotIAotIAotQEAgLTU4NDYsOCArNjE2NSw4IEBAIGVzYWMKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgotIAotICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcwotLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0tbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCi0rbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLStsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKLSAKLSAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KLSBvcHRfY3I9Ci1AQCAtNTg4Myw2ICs2MjAyLDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbwotICAgZWxzZQotICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgotICAgZmkKLSsgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKLSAKLSAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgotICAgcGlwZV93b3Jrcz1ubwotQEAgLTU5MjQsNiArNjI0NCwxOCBAQCBfTFRfRU9GCi0gICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KLSAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCi0gCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKLSsvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KLSsjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQotKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQotKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKLSsvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KLSsjIGRlZmluZSBMVF9ETFNZTV9DT05TVAotKyNlbHNlCi0rIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKLSsjZW5kaWYKLSsKLSAjaWZkZWYgX19jcGx1c3BsdXMKLSBleHRlcm4gIkMiIHsKLSAjZW5kaWYKLUBAIC01OTM1LDcgKzYyNjcsNyBAQCBfTFRfRU9GCi0gCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0Ci0gCi0gLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLwotLWNvbnN0IHN0cnVjdCB7Ci0rTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKLSAgIGNvbnN0IGNoYXIgKm5hbWU7Ci0gICB2b2lkICAgICAgICphZGRyZXNzOwotIH0KLUBAIC01OTYxLDggKzYyOTMsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgewotIF9MVF9FT0YKLSAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgotIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAotLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCi0tCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCi0rCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKLSsJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKLSAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgotIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKLSAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKLUBAIC01OTcyLDggKzYzMDQsOCBAQCBfTFRfRU9GCi0gICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KLSAJICAgIHBpcGVfd29ya3M9eWVzCi0gCSAgZmkKLS0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgotLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgotKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCi0rCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCi0gCWVsc2UKLSAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKLSAJZmkKLUBAIC02MDEwLDYgKzYzNDIsMTkgQEAgZWxzZQotICRhc19lY2hvICJvayIgPiY2OyB9Ci0gZmkKLSAKLSsjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KLStpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgotKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCi0rZmkKLSsKLSsKLSsKLSsKLSsKLSsKLSsKLSAKLSAKLSAKLUBAIC02MDI3LDYgKzYzNzIsNDEgQEAgZmkKLSAKLSAKLSAKLSsKLSsKLSsKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKLSskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQotKwotKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OwotK2Vsc2UKLSsgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCi0rZmkKLSsKLSsKLStsdF9zeXNyb290PQotK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKLSsgeWVzKQotKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0rICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAotKyAgIGZpCi0rICAgOzsgIygKLSsgLyopCi0rICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCi0rICAgOzsgIygKLSsgbm98JycpCi0rICAgOzsgIygKLSsgKikKLSsgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQotKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9Ci0rICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1Ci0rICAgOzsKLStlc2FjCi0rCi0rIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1Ci0rJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KLSAKLSAKLSAKLUBAIC02MjQxLDYgKzY2MjEsMTIzIEBAIGVzYWMKLSAKLSBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKLSAKLStpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCi0rICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgotK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKLSsgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1Ci0rICAgIGJyZWFrIDIKLSsgIGZpCi0rZG9uZQotKyAgZG9uZQotK0lGUz0kYXNfc2F2ZV9JRlMKLSsKLStmaQotK2ZpCi0rTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCi0raWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCi0rICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQotKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9Ci0rZWxzZQotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKLSskYXNfZWNobyAibm8iID4mNjsgfQotK2ZpCi0rCi0rCi0rZmkKLStpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAotKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCi0rc2V0IGR1bW15IG10OyBhY193b3JkPSQyCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQotK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCi0rICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KLStlbHNlCi0rYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgotK2ZvciBhc19kaXIgaW4gJFBBVEgKLStkbwotKyAgSUZTPSRhc19zYXZlX0lGUwotKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KLSsgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCi0rICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCi0rICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCi0rICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQotKyAgICBicmVhayAyCi0rICBmaQotK2RvbmUKLSsgIGRvbmUKLStJRlM9JGFzX3NhdmVfSUZTCi0rCi0rZmkKLStmaQotK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAotK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKLSskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQotK2Vsc2UKLSsgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1Ci0rJGFzX2VjaG8gIm5vIiA+JjY7IH0KLStmaQotKwotKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KLSsgICAgTUFOSUZFU1RfVE9PTD0iOiIKLSsgIGVsc2UKLSsgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgotK3llczopCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQotKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KLSthY190b29sX3dhcm5lZD15ZXMgOzsKLStlc2FjCi0rICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKLSsgIGZpCi0rZWxzZQotKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKLStmaQotKwotK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10Ci0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQotK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCi0rICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1Ci0rICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0Ci0rICBjYXQgY29uZnRlc3QuZXJyID4mNQotKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgotKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCi0rICBmaQotKyAgcm0gLWYgY29uZnRlc3QqCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1Ci0rJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQotK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCi0rICBNQU5JRkVTVF9UT09MPToKLStmaQotKwotKwotKwotKwotKwotIAotICAgY2FzZSAkaG9zdF9vcyBpbgotICAgICByaGFwc29keSogfCBkYXJ3aW4qKQotQEAgLTY4MDcsNiArNzMwNCw4IEBAIF9MVF9FT0YKLSAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKLSAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1Ci0gICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQotKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1Ci0rICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKLSAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKLSBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQotIF9MVF9FT0YKLUBAIC03MjY5LDcgKzc3NjgsOCBAQCBmaQotIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKLSAKLSAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgotLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJwotK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKLStMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCi0gCi0gCi0gCi1AQCAtNzM1OCw3ICs3ODU4LDcgQEAgYWl4MyopCi0gZXNhYwotIAotICMgR2xvYmFsIHZhcmlhYmxlczoKLS1vZmlsZT1saWJ0b29sCi0rb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCi0gY2FuX2J1aWxkX3NoYXJlZD15ZXMKLSAKLSAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKLUBAIC03NjU2LDggKzgxNTYsNiBAQCBmaQotIGx0X3Byb2dfY29tcGlsZXJfcGljPQotIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQotIAotLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQotLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gCi0gICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgotICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJwotQEAgLTc4MjMsNiArODMyMSwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQotIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCi0gCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKLSAJOzsKLSsgICAgICBuYWdmb3IqKQotKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCi0rCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKLSsJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCi0rCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSsJOzsKLSAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCi0gICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAotIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQotQEAgLTc4ODUsNyArODM4OSw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9Ci0gICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJwotICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKLSAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKLSsgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OwotICAgICAgICopCi0gCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKLUBAIC03OTQyLDEzICs4NDQ2LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KLSAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKLSAgICAgOzsKLSBlc2FjCi0teyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1Ci0tJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9Ci0tCi0tCi0tCi0tCi0gCi0reyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1Ci0rJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCi0rZmkKLSt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKLSskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KLStsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKLSAKLSAjCi0gIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgotQEAgLTgwMDksNiArODUxNywxMSBAQCBmaQotIAotIAotIAotKwotKwotKwotKwotKwotICMKLSAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCi0gIwotQEAgLTgzNTksNyArODg3Miw4IEBAIF9MVF9FT0YKLSAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubwotICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCi0tICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJwotKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKLSsgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKLSAKLSAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCi0gICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJwotQEAgLTg0NTgsMTIgKzg5NzIsMTIgQEAgX0xUX0VPRgotIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJwotIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Ci0gCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCi0tCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCi0rCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJwotIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KLSAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0gCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KLSAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+Ci0tCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJwotKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCi0gCSAgZmkKLSAJICA7OwotIAllc2FjCi1AQCAtODQ3Nyw4ICs4OTkxLDggQEAgX0xUX0VPRgotIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCi0gCXdsYXJjPQotICAgICAgIGVsc2UKLS0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLS0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0gICAgICAgZmkKLSAgICAgICA7OwotIAotQEAgLTg0OTYsOCArOTAxMCw4IEBAIF9MVF9FT0YKLSAKLSBfTFRfRU9GCi0gICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0tCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKLSsJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJwotICAgICAgIGVsc2UKLSAJbGRfc2hsaWJzPW5vCi0gICAgICAgZmkKLUBAIC04NTQzLDggKzkwNTcsOCBAQCBfTFRfRU9GCi0gCi0gICAgICopCi0gICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJwotLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCi0rCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLSAgICAgICBlbHNlCi0gCWxkX3NobGlicz1ubwotICAgICAgIGZpCi1AQCAtODY3NCw3ICs5MTg4LDEzIEBAIF9MVF9FT0YKLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKLSAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgotLSAgICAgICAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgotKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IHgkZ2NjX25vX2xpbmsgPSB4eWVzOyB0aGVuCi0gICBhc19mbl9lcnJvciAkPyAiTGluayB0ZXN0cyBhcmUgbm90IGFsbG93ZWQgYWZ0ZXIgR0NDX05PX0VYRUNVVEFCTEVTLiIgIiRMSU5FTk8iIDUKLSBmaQotIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLUBAIC04NjkwLDIyICs5MjEwLDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKLUBAIC04NzE3LDcgKzkyNDQsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCi0gCWVsc2UKLSAJICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgotIAkgIyBlbXB0eSBleGVjdXRhYmxlLgotLQkgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgotKwkgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCi0rZWxzZQotKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgotKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKLStlbHNlCi0rICBpZiB0ZXN0IHgkZ2NjX25vX2xpbmsgPSB4eWVzOyB0aGVuCi0gICBhc19mbl9lcnJvciAkPyAiTGluayB0ZXN0cyBhcmUgbm90IGFsbG93ZWQgYWZ0ZXIgR0NDX05PX0VYRUNVVEFCTEVTLiIgIiRMSU5FTk8iIDUKLSBmaQotIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLUBAIC04NzMzLDIyICs5MjY2LDI5IEBAIG1haW4gKCkKLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0gCi0tbHRfYWl4X2xpYnBhdGhfc2VkPScKLS0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8gewotLQkvXjAvIHsKLS0JICAgIHMvXjAgICpcKC4qXCkkL1wxLwotLQkgICAgcAotLQl9Ci0tICAgIH0nCi0tYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCi0tIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KLS0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotLWZpCi0rICBsdF9haXhfbGlicGF0aF9zZWQ9JwotKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKLSsJICAvXjAvIHsKLSsJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KLSsJICAgICAgcAotKwkgIH0KLSsgICAgICB9JwotKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAotKyAgZmkKLSBmaQotIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAotICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAotLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KLSsgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgotKyAgZmkKLSsKLStmaQotKwotKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXwotK2ZpCi0gCi0gCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgotIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCi1AQCAtODc5MywyMCArOTMzMyw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKLSAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgotICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKLSAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgotLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCi0tICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotLSAgICAgIGxpYmV4dD1saWIKLS0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLS0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKLS0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCi0tICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLS0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgotLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCi0tICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLS0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCi0tICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCi0tICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKLSsgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotKyAgICAgIGNsKikKLSsJIyBOYXRpdmUgTVNWQwotKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJwotKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAotKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCi0rCWZpbGVfbGlzdF9zcGVjPSdAJwotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgotKwlsaWJleHQ9bGliCi0rCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgotKwlzaHJleHRfY21kcz0iLmRsbCIKLSsJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgotKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JwotKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgotKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKLSsJICBlbHNlCi0rCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOwotKwkgIGZpfgotKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KLSsJICBsaW5rbmFtZXM9JwotKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCi0rCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCi0rCSMgRG9uJ3QgdXNlIHJhbmxpYgotKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCi0rCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KLSsJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgotKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KLSsJICAgICouZXhlfCouRVhFKSA7OwotKwkgICAgKikKLSsJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgotKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgotKwkgICAgICA7OwotKwkgIGVzYWN+Ci0rCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KLSsJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7Ci0rCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKLSsJICBmaScKLSsJOzsKLSsgICAgICAqKQotKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSsJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKLSsJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKLSsJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KLSsJbGliZXh0PWxpYgotKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KLSsJc2hyZXh0X2NtZHM9Ii5kbGwiCi0rCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKLSsJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KLSsJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKLSsJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KLSsJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJwotKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcwotKwk7OwotKyAgICAgIGVzYWMKLSAgICAgICA7OwotIAotICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQotQEAgLTg4NjcsNyArOTQ1MCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCi0gICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKLS0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKLSAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCi0gICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubwotQEAgLTg4NzUsNyArOTQ1OCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4OSopCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLS0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJwotICAgICAgIGVsc2UKLSAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKLSAgICAgICBmaQotQEAgLTg4OTEsNyArOTQ3NCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAotICAgICBocHV4MTAqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCi0gICAgICAgZmkKLUBAIC04OTE1LDEwICs5NDk4LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQotIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCi0gCSAgOzsKLSAJaWE2NCopCi0tCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJICA7OwotIAkqKQotLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSsJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotIAkgIDs7Ci0gCWVzYWMKLSAgICAgICBlbHNlCi1AQCAtODk5NywyNiArOTU4MCwzOSBAQCBmaQotIAotICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQotICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCi0tCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCi0rCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAotIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCi0gCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCi0tICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgotLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotLSAgICAgICAgaWYgdGVzdCB4JGdjY19ub19saW5rID0geHllczsgdGhlbgotKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgotKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KLStpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKLSsgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2Ci0rZWxzZQotKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKLSsJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgotKwkgICBpZiB0ZXN0IHgkZ2NjX25vX2xpbmsgPSB4eWVzOyB0aGVuCi0gICBhc19mbl9lcnJvciAkPyAiTGluayB0ZXN0cyBhcmUgbm90IGFsbG93ZWQgYWZ0ZXIgR0NDX05PX0VYRUNVVEFCTEVTLiIgIiRMSU5FTk8iIDUKLSBmaQotIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKLSAvKiBlbmQgY29uZmRlZnMuaC4gICovCi0taW50IGZvbyh2b2lkKSB7fQotK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KLSBfQUNFT0YKLSBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6Ci0tICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0tCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKLStlbHNlCi0rICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubwotIGZpCi0gcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCi0gICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0Ci0tICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgotKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKLStmaQotK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQotKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQotKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCi0rICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCi0rCWZpCi0gICAgICAgZWxzZQotIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKLUBAIC05MTAxLDcgKzk2OTcsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKLSsJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJwotIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCi0gICAgICAgZWxzZQotIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKLUBAIC05MTIwLDkgKzk3MTYsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKLSAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCi0gICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KLSAJd2xhcmM9JyR7d2x9JwotLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJwotKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKLSAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgotLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0rCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCi0gICAgICAgZWxzZQotIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KLSAJKiJDb21waWxlcnMgNS4wIiopCi1AQCAtOTY5OCw4ICsxMDI5NCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKLSAgIG5lZWRfdmVyc2lvbj1ubwotICAgbmVlZF9saWJfcHJlZml4PW5vCi0gCi0tICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KLS0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCi0rICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCi0rICB5ZXMsKikKLSsgICAgIyBnY2MKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKLSAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcwotICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KLUBAIC05NzMyLDEzICsxMDMyOSw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCi0gICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JwotICAgICAgIDs7Ci0gICAgIGVzYWMKLSsgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKLSsgICAgOzsKLSsKLSsgICosY2wqKQotKyAgICAjIE5hdGl2ZSBNU1ZDCi0rICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCi0rICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKLSsgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCi0rCi0rICAgIGNhc2UgJGJ1aWxkX29zIGluCi0rICAgIG1pbmd3KikKLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9Ci0rICAgICAgbHRfc2F2ZV9pZnM9JElGUwotKyAgICAgIElGUz0nOycKLSsgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCi0rICAgICAgZG8KLSsgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKLSsgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCi0rICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKLSsgICAgICBkb25lCi0rICAgICAgSUZTPSRsdF9zYXZlX2lmcwotKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAotKyAgICAgIDs7Ci0rICAgIGN5Z3dpbiopCi0rICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQotKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcwotKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KLSsgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCi0rICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICA7OwotKyAgICAqKQotKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKLSsgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KLSsgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCi0rICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAotKyAgICAgIGVsc2UKLSsgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKLSsgICAgICBmaQotKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQotKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKLSsgICAgICA7OwotKyAgICBlc2FjCi0rCi0rICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKLSsgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+Ci0rICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KLSsgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+Ci0rICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+Ci0rICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJwotKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgotKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+Ci0rICAgICAgICRSTSBcJGRscGF0aCcKLSsgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCi0gICAgIDs7Ci0gCi0gICAqKQotKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKLSAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCi0rICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCi0gICAgIDs7Ci0gICBlc2FjCi0tICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJwotICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCi0gICBzaGxpYnBhdGhfdmFyPVBBVEgKLSAgIDs7Ci1AQCAtOTgzMCw3ICsxMDQ4NSw3IEBAIGhhaWt1KikKLSAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCi0gICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAotICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcwotLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKLSsgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJwotICAgaGFyZGNvZGVfaW50b19saWJzPXllcwotICAgOzsKLSAKLUBAIC0xMDY0NCw3ICsxMTI5OSw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDEwNjQ3ICJjb25maWd1cmUiCi0rI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMDY4OCwxMCArMTEzNDMsMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMDc1MCw3ICsxMTQwNSw3IEBAIGVsc2UKLSAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKLSAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCi0gICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgotLSNsaW5lIDEwNzUzICJjb25maWd1cmUiCi0rI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgotICNpbmNsdWRlICJjb25mZGVmcy5oIgotIAotICNpZiBIQVZFX0RMRkNOX0gKLUBAIC0xMDc5NCwxMCArMTE0NDksMTAgQEAgZWxzZQotIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKLSAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCi0gI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCi0tdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKLStpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7Ci0gI2VuZGlmCi0gCi0tdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9Ci0raW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9Ci0gaW50IG1haW4gKCkKLSB7Ci0gICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKLUBAIC0xMjI2NywxMyArMTI5MjIsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSthcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLUBAIC0xMjI4OCwxNCArMTI5NTAsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0tbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0rTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi1AQCAtMTIzMjgsMTIgKzEyOTkzLDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCi0gaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLStwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKLSBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCi0gbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJwotQEAgLTEyMzg4LDggKzEzMDUzLDEzIEBAIHJlbG9hZF9mbGFnIFwKLSBPQkpEVU1QIFwKLSBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCi0gZmlsZV9tYWdpY19jbWQgXAotK2ZpbGVfbWFnaWNfZ2xvYiBcCi0rd2FudF9ub2Nhc2VnbG9iIFwKLStETExUT09MIFwKLStzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCi0gQVIgXAotIEFSX0ZMQUdTIFwKLSthcmNoaXZlcl9saXN0X3NwZWMgXAotIFNUUklQIFwKLSBSQU5MSUIgXAotIENDIFwKLUBAIC0xMjM5OSwxMiArMTMwNjksMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCi0gbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAotIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKLSBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKLStubV9maWxlX2xpc3Rfc3BlYyBcCi0gbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAotLWx0X3Byb2dfY29tcGlsZXJfd2wgXAotIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKLStsdF9wcm9nX2NvbXBpbGVyX3dsIFwKLSBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCi0gbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAotIG5lZWRfbG9ja3MgXAotK01BTklGRVNUX1RPT0wgXAotIERTWU1VVElMIFwKLSBOTUVESVQgXAotIExJUE8gXAotQEAgLTEyNDIwLDcgKzEzMDkyLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAotIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAotIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAotLWZpeF9zcmNmaWxlX3BhdGggXAotIGV4Y2x1ZGVfZXhwc3ltcyBcCi0gaW5jbHVkZV9leHBzeW1zIFwKLSBmaWxlX2xpc3Rfc3BlYyBcCi1AQCAtMTI0NTYsNiArMTMxMjcsNyBAQCBtb2R1bGVfY21kcyBcCi0gbW9kdWxlX2V4cHN5bV9jbWRzIFwKLSBleHBvcnRfc3ltYm9sc19jbWRzIFwKLSBwcmVsaW5rX2NtZHMgXAotK3Bvc3RsaW5rX2NtZHMgXAotIHBvc3RpbnN0YWxsX2NtZHMgXAotIHBvc3R1bmluc3RhbGxfY21kcyBcCi0gZmluaXNoX2NtZHMgXAotQEAgLTEzMDU0LDcgKzEzNzI2LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAotICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgotICMKLSAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAotLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCi0rIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCi0rIyAgICAgICAgICAgICAgICAgSW5jLgotICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2Ci0gIwotICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KLUBAIC0xMzE1NywxOSArMTM4MzAsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCi0gIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgotIE5MMlNQPSRsdF9sdF9OTDJTUAotIAotKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KLSt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCi0rCi0rIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KLSt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCi0rCi0gIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KLSBPQkpEVU1QPSRsdF9PQkpEVU1QCi0gCi0gIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KLSBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKLSAKLS0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgotKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KLSBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKLSAKLSsjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgotK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCi0rCi0rIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCi0rd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKLSsKLSsjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgotK0RMTFRPT0w9JGx0X0RMTFRPT0wKLSsKLSsjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCi0rc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCi0rCi0gIyBUaGUgYXJjaGl2ZXIuCi0gQVI9JGx0X0FSCi0rCi0rIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KLSBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKLSAKLSsjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KLSthcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYwotKwotICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCi0gU1RSSVA9JGx0X1NUUklQCi0gCi1AQCAtMTMxOTksNiArMTM4OTUsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKLSAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgotIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAotIAotKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgotK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYwotKwotKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCi0rbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAotKwotICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgotIG9iamRpcj0kb2JqZGlyCi0gCi1AQCAtMTMyMDgsNiArMTM5MTAsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAotICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/Ci0gbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcwotIAotKyMgTWFuaWZlc3QgdG9vbC4KLStNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCi0rCi0gIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgotIERTWU1VVElMPSRsdF9EU1lNVVRJTAotIAotQEAgLTEzMzIyLDEyICsxNDAyNywxMiBAQCB3aXRoX2djYz0kR0NDCi0gIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgotIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKLSAKLS0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0td2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLS0KLSAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KLSBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKLSAKLSsjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCi0rd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKLSsKLSAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCi0gbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKLSAKLUBAIC0xMzQxNCw5ICsxNDExOSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKLSAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KLSBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCi0gCi0tIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgotLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKLS0KLSAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KLSBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scwotIAotQEAgLTEzNDMyLDYgKzE0MTM0LDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKLSAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgotIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCi0gCi0rIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgotK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKLSsKLSAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KLSBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKLSAKLUBAIC0xMzQ2NCwyMTAgKzE0MTY5LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKLSAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KLSAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCi0gICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPwotLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKLS0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKLS0KLS0gIGNhc2UgJHhzaV9zaGVsbCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfYmFzZW5hbWUgZmlsZQotLWZ1bmNfYmFzZW5hbWUgKCkKLS17Ci0tICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCi0tfQotLQotLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKLS0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCi0tIyBjYWxsOgotLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCi0tIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0Ci0tIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCi0tIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCi0tIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCi0tIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCi0tIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bwotLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgotLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKLS17Ci0tICBjYXNlICR7MX0gaW4KLS0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKLS0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OwotLSAgZXNhYwotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgotLX0KLS0KLS0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQotLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCi0tIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKLS0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKLS0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCi0tICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCi0tICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQotLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KLS0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9Ci0tfQotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQotLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KLS19Ci0tCi0tIyBmdW5jX2xvMm8gb2JqZWN0Ci0tZnVuY19sbzJvICgpCi0tewotLSAgY2FzZSAkezF9IGluCi0tICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7Ci0tICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OwotLSAgZXNhYwotLX0KLS0KLS0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQotLWZ1bmNfeGZvcm0gKCkKLS17Ci0tICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCi0tfQotLQotLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KLS1mdW5jX2FyaXRoICgpCi0tewotLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9Ci0tfQotLQotLV9MVF9FT0YKLS0gICAgOzsKLS0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAotLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKLS0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KLS1mdW5jX2Rpcm5hbWUgKCkKLS17Ci0tICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgotLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAotLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKLS0gIGVsc2UKLS0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgotLSAgZmkKLS19Ci0tCi0tIyBmdW5jX2Jhc2VuYW1lIGZpbGUKLS1mdW5jX2Jhc2VuYW1lICgpCi0tewotLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCi0tfQotLQotLQotLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCi0tIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KLS0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAotLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZwotLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KLS0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCi0tZnVuY19zdHJpcG5hbWUgKCkKLS17Ci0tICBjYXNlICR7Mn0gaW4KLS0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKLS0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OwotLSAgZXNhYwotLX0KLS0KLS0jIHNlZCBzY3JpcHRzOgotLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCi0tbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJwotLQotLSMgZnVuY19vcHRfc3BsaXQKLS1mdW5jX29wdF9zcGxpdCAoKQotLXsKLS0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCi0tICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAotLX0KLS0KLS0jIGZ1bmNfbG8ybyBvYmplY3QKLS1mdW5jX2xvMm8gKCkKLS17Ci0tICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCi0tfQotLQotLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCi0tZnVuY194Zm9ybSAoKQotLXsKLS0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAotLX0KLS0KLS0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCi0tZnVuY19hcml0aCAoKQotLXsKLS0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCi0tfQotLQotLSMgZnVuY19sZW4gc3RyaW5nCi0tIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgotLWZ1bmNfbGVuICgpCi0tewotLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAotLX0KLS0KLS1fTFRfRU9GCi0tZXNhYwotLQotLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgotLSAgeWVzKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMSs9XCQyIgotLX0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICAqKQotLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgotLQotLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCi0tIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCi0tZnVuY19hcHBlbmQgKCkKLS17Ci0tICBldmFsICIkMT1cJCQxXCQyIgotLX0KLS0KLS1fTFRfRU9GCi0tICAgIDs7Ci0tICBlc2FjCi0tCi0tCi0tICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0tICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCi0tCi0tICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8Ci0rICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCi0rICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQotKwotKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKLStmdW5jX2Rpcm5hbWUgKClcCi0re1wKLStcICAgIGNhc2UgJHsxfSBpblwKLStcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCi0rXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKLStmdW5jX2Jhc2VuYW1lICgpXAotK3tcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCi0rZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKLSt7XAotK1wgICAgY2FzZSAkezF9IGluXAotK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKLStcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKLStcICAgIGVzYWNcCi0rXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKLStmdW5jX3N0cmlwbmFtZSAoKVwKLSt7XAotK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKLStcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCi0rXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKLStcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAotK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKLSsgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAotKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rCi0rCi0rICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCi0rZnVuY19zcGxpdF9sb25nX29wdCAoKVwKLSt7XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAotK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCi0rZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCi0re1wKLStcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAotK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCi0rZnVuY19sbzJvICgpXAotK3tcCi0rXCAgICBjYXNlICR7MX0gaW5cCi0rXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAotK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCi0rXCAgICBlc2FjXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKLStmdW5jX3hmb3JtICgpXAotK3tcCi0rICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCi0rfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKLStmdW5jX2FyaXRoICgpXAotK3tcCi0rICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotKwotKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCi0rZnVuY19sZW4gKClcCi0re1wKLSsgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCi0rICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgotKwotK2ZpCi0rCi0raWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgotKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCi0rZnVuY19hcHBlbmQgKClcCi0re1wKLSsgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKLSt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCi0rZnVuY19hcHBlbmRfcXVvdGVkICgpXAotK3tcCi0rXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKLStcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAotK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAotKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCi0rdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLSsKLSsKLSsgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKLSsgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAotKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKLSsgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQotKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKLStlbHNlCi0rICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQotKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKLSsgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCi0rICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKLSsgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06Ci0rZmkKLSsKLStpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgotKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKLSskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQotK2ZpCi0rCi0rCi0rICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAotICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQotICAgY2htb2QgK3ggIiRvZmlsZSIKLSAKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDctVXNlLWxpYnRvb2wtMi40LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1Vc2UtbGlidG9vbC0yLjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODlkYTYyZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDctVXNlLWxpYnRvb2wtMi40LnBhdGNoCkBAIC0wLDAgKzEsMjEyMzQgQEAKK0Zyb20gYjhmYWZkOGNlNmM0N2M5YTU1MWVkNzk2MTc2ZDg4NGEzNDkzMDA4NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDE0IEZlYiAyMDE2IDE3OjA0OjA3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMDcvMTVdIFVzZSBsaWJ0b29sIDIuNAorCitnZXQgbGlidG9vbCBzeXNyb290IHN1cHBvcnQKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBiZmQvY29uZmlndXJlICAgICAgfCAxMzIyICsrKysrKysrKysrKysrKy0tLS0tCisgYmZkL2NvbmZpZ3VyZS5hYyAgIHwgICAgMiArLQorIGJpbnV0aWxzL2NvbmZpZ3VyZSB8IDEzMjAgKysrKysrKysrKysrKysrLS0tLS0KKyBnYXMvY29uZmlndXJlICAgICAgfCAxMzIwICsrKysrKysrKysrKysrKy0tLS0tCisgZ3Byb2YvY29uZmlndXJlICAgIHwgMTMyMCArKysrKysrKysrKysrKystLS0tLQorIGxkL2NvbmZpZ3VyZSAgICAgICB8IDE2OTUgKysrKysrKysrKysrKysrKysrLS0tLS0tLQorIGxpYmN0Zi9jb25maWd1cmUgICB8IDEzMTkgKysrKysrKysrKysrKysrLS0tLS0KKyBsaWJ0b29sLm00ICAgICAgICAgfCAxMDgwICsrKysrKysrKysrLS0tLS0KKyBsdG1haW4uc2ggICAgICAgICAgfCAyOTI1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tCisgbHRvcHRpb25zLm00ICAgICAgIHwgICAgMiArLQorIGx0dmVyc2lvbi5tNCAgICAgICB8ICAgMTIgKy0KKyBsdH5vYnNvbGV0ZS5tNCAgICAgfCAgICAyICstCisgb3Bjb2Rlcy9jb25maWd1cmUgIHwgMTMyMCArKysrKysrKysrKysrKystLS0tLQorIDEzIGZpbGVzIGNoYW5nZWQsIDk5MzkgaW5zZXJ0aW9ucygrKSwgMzcwMCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JmZC9jb25maWd1cmUgYi9iZmQvY29uZmlndXJlCitpbmRleCBiYzU3NmI3ODk0YS4uY2QwMzY2MzgwODEgMTAwNzU1CistLS0gYS9iZmQvY29uZmlndXJlCisrKysgYi9iZmQvY29uZmlndXJlCitAQCAtNzA0LDYgKzcwNCw5IEBAIE9UT09MCisgTElQTworIE5NRURJVAorIERTWU1VVElMCisrTUFOSUZFU1RfVE9PTAorK2FjX2N0X0FSCisrRExMVE9PTAorIE9CSkRVTVAKKyBMTl9TCisgTk0KK0BAIC04MjIsNiArODI1LDcgQEAgZW5hYmxlX3N0YXRpYworIHdpdGhfcGljCisgZW5hYmxlX2Zhc3RfaW5zdGFsbAorIHdpdGhfZ251X2xkCisrd2l0aF9saWJ0b29sX3N5c3Jvb3QKKyBlbmFibGVfbGlidG9vbF9sb2NrCisgZW5hYmxlX3BsdWdpbnMKKyBlbmFibGVfbGFyZ2VmaWxlCitAQCAtMTUwNCw2ICsxNTA4LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CisgICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCisgICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCisrICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgorICAgLS13aXRoLW1tYXAgICAgICAgICAgICAgdHJ5IHVzaW5nIG1tYXAgZm9yIEJGRCBpbnB1dCBmaWxlcyBpZiBhdmFpbGFibGUKKyAgIC0td2l0aC1zZXBhcmF0ZS1kZWJ1Zy1kaXI9RElSCisgICAgICAgICAgICAgICAgICAgICAgICAgICBMb29rIGZvciBnbG9iYWwgc2VwYXJhdGUgZGVidWcgaW5mbyBpbiBESVIKK0BAIC01NjkzLDggKzU2OTksOCBAQCBlc2FjCisgCisgCisgCistbWFjcm9fdmVyc2lvbj0nMi4yLjdhJworLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCisrbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgCisgCisgCitAQCAtNTczNCw3ICs1NzQwLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQorICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgorLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgIEVDSE89J3ByaW50IC1yIC0tJworIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCitAQCAtNjQyMCw4ICs2NDI2LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKKyAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworIHhzaV9zaGVsbD1ubworICggX2x0X2R1bW15PSJhL2IvYyIKKy0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCistICAgICAgPSBjLGEvYiwsIFwKKysgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisrICAgICAgPSBjLGEvYixiL2MsIFwKKyAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAgJiYgeHNpX3NoZWxsPXllcworQEAgLTY0NzAsNiArNjQ3Niw4MCBAQCBlc2FjCisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CisgaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjQ4Niw2ICs2NTY2LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgZXNhYworIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyBjYXNlICRob3N0X29zIGluCisrICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisrICAgIGZpCisrICAgIDs7CisgICBkYXJ3aW4qKQorICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK0BAIC02NjU0LDcgKzY3MzksOCBAQCBtaW5ndyogfCBwdzMyKikKKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgICBlbHNlCistICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisrICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICAgZmkKKyAgIDs7CitAQCAtNjgwOCw2ICs2ODk0LDIxIEBAIGVzYWMKKyBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQorICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjgyMSwxMSArNjkyMiwxNjQgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisgCisgCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKKyskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCisrICAgIERMTFRPT0w9ImZhbHNlIgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAorKyAgZmkKKytlbHNlCisrICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgorK2ZpCisrCisrdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQorK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKysKKytjYXNlICRob3N0X29zIGluCisrY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisrICAqLS1pZGVudGlmeS1zdHJpY3QqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKysgICAgOzsKKysgICopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworKyAgICA7OworKyAgZXNhYworKyAgOzsKKysqKQorKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisrICA7OworK2VzYWMKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKysKKysKKysKKysKKysKKysKKysKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICBmb3IgYWNfcHJvZyBpbiBhcgorKyAgZG8KKysgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjg0MSw3ICs3MDk1LDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgorKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjg2MSwxMSArNzExNSwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisgCisrICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKysgIGRvbmUKKyBmaQorLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgorK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgIGFjX2N0X0FSPSRBUgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorK2RvCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02ODgxLDcgKzcxMzksNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjkwMCw2ICs3MTU4LDEwIEBAIGVsc2UKKyAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisrCisrICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCisrZG9uZQorKworICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgIEFSPSJmYWxzZSIKKyAgIGVsc2UKK0BAIC02OTExLDE2ICs3MTczLDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworIGVzYWMKKyAgICAgQVI9JGFjX2N0X0FSCisgICBmaQorLWVsc2UKKy0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKKyBmaQorIAorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorKzogJHtBUj1hcn0KKys6ICR7QVJfRkxBR1M9Y3J1fQorKworKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubworKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrCisraW50CisrbWFpbiAoKQorK3sKKyAKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKysgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKKysgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKysJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisrICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorKyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorIAorK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9CisgCisraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorK2Vsc2UKKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorK2ZpCisgCisgCisgCitAQCAtNzI2Miw4ICs3NTgwLDggQEAgZXNhYworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCisgCisgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorIAorICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorIG9wdF9jcj0KK0BAIC03Mjk5LDYgKzc2MTcsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCisgICBlbHNlCisgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCisgICBmaQorKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgorIAorICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCisgICBwaXBlX3dvcmtzPW5vCitAQCAtNzM0MCw2ICs3NjU5LDE4IEBAIF9MVF9FT0YKKyAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisrLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisrICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorKyNlbmRpZgorKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorQEAgLTczNTEsNyArNzY4Miw3IEBAIF9MVF9FT0YKKyAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAKKyAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCistY29uc3Qgc3RydWN0IHsKKytMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgICAgICAgKmFkZHJlc3M7CisgfQorQEAgLTczNzcsOCArNzcwOCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgX0xUX0VPRgorIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCisgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CistCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKy0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKysJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUworIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCisgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgorIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQorQEAgLTczODgsOCArNzcxOSw4IEBAIF9MVF9FT0YKKyAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQorIAlmaQorQEAgLTc0MjYsNiArNzc1NywxNiBAQCBlbHNlCisgJGFzX2VjaG8gIm9rIiA+JjY7IH0KKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytmaQorKworKworKworKworIAorIAorIAorQEAgLTc0NDIsNiArNzc4Myw0NSBAQCBmaQorIAorIAorIAorKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CisrCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7CisrZWxzZQorKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KKytmaQorKworKworK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CisrJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KKysgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICA7OworK2VzYWMKKysKKysgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKKyskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorIAorIAorIAorQEAgLTc2NTMsNiArODAzMywxMjMgQEAgZXNhYworIAorIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIAorK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgorKyAgICBNQU5JRkVTVF9UT09MPSI6IgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAorKyAgZmkKKytlbHNlCisrICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgorK2ZpCisrCisrdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKKysgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKysgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisrICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisrICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKysgIGZpCisrICBybSAtZiBjb25mdGVzdCoKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9CisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrCisrCisrCisrCisrCisgCisgICBjYXNlICRob3N0X29zIGluCisgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCitAQCAtODIxNiw2ICs4NzEzLDggQEAgX0xUX0VPRgorICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CisrICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTgzODAsNyArODg3OSw4IEBAIGZpCisgTElCVE9PTF9ERVBTPSIkbHRtYWluIgorIAorICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCistTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCisrTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJworK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKKyAKKyAKKyAKK0BAIC04NDY5LDcgKzg5NjksNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTg3NjcsOCArOTI2Nyw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWM9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCitAQCAtODkzNCw2ICs5NDMyLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKKyAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKysJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtODk5Niw3ICs5NTAwLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OworQEAgLTkwNTMsMTMgKzk1NTcsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKy0KKy0KKy0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYworIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtOTEyMCw2ICs5NjI4LDExIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtOTQ3MCw3ICs5OTgzLDggQEAgX0xUX0VPRgorICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCisgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKy0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtOTU2OSwxMiArMTAwODMsMTIgQEAgX0xUX0VPRgorIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJworIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCistCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisrCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtOTU4OCw4ICsxMDEwMiw4IEBAIF9MVF9FT0YKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLUJzaGFyZWFibGUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtbyAkbGliJworIAl3bGFyYz0KKyAgICAgICBlbHNlCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGZpCisgICAgICAgOzsKKyAKK0BAIC05NjA3LDggKzEwMTIxLDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTk2NTQsOCArMTAxNjgsOCBAQCBfTFRfRU9GCisgCisgICAgICopCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTc4NSw3ICsxMDI5OSwxMyBAQCBfTFRfRU9GCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCisgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05Nzk4LDIyICsxMDMxOCwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtOTgyNSw3ICsxMDM1MiwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJZWxzZQorIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTgzOCwyMiArMTAzNzEsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKK0BAIC05ODk4LDIwICsxMDQzOCw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCistICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorLSAgICAgIGxpYmV4dD1saWIKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKy0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKKy0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKy0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCistICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKy0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCistICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCistICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICAgIGNsKikKKysJIyBOYXRpdmUgTVNWQworKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCisrCWZpbGVfbGlzdF9zcGVjPSdAJworKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBlbHNlCisrCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGZpfgorKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICBsaW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrCSMgRG9uJ3QgdXNlIHJhbmxpYgorKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCisrCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICouZXhlfCouRVhFKSA7OworKwkgICAgKikKKysJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkgICAgICA7OworKwkgIGVzYWN+CisrCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICBmaScKKysJOzsKKysgICAgICAqKQorKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKysJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKysJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKysJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwk7OworKyAgICAgIGVzYWMKKyAgICAgICA7OworIAorICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorQEAgLTk5NzIsNyArMTA1NTUsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KK0BAIC05OTgwLDcgKzEwNTYzLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXg5KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGZpCitAQCAtOTk5Niw3ICsxMDU3OSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4MTAqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICAgZmkKK0BAIC0xMDAyMCwxMCArMTA2MDMsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAlpYTY0KikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCSopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJZXNhYworICAgICAgIGVsc2UKK0BAIC0xMDEwMiwyMyArMTA2ODUsMzYgQEAgZmkKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKyAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgorLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKysJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisrCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKysJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy1pbnQgZm9vKHZvaWQpIHt9CisraW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKy0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKy0KKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcworK2Vsc2UKKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9CisrCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKysgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJZmkKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworQEAgLTEwMjAzLDcgKzEwNzk5LDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgIGVsc2UKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCitAQCAtMTAyMjIsOSArMTA4MTgsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJd2xhcmM9JyR7d2x9JworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgZWxzZQorIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KKyAJKiJDb21waWxlcnMgNS4wIiopCitAQCAtMTA4MDAsOCArMTEzOTYsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMTA4MzQsMTMgKzExNDMxLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0xMDkzMiw3ICsxMTU4Nyw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0xMTcyOCw3ICsxMjM4Myw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExNzMxICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTc3MiwxMCArMTI0MjcsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMTgzNCw3ICsxMjQ4OSw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExODM3ICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTg3OCwxMCArMTI1MzMsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xNDU1NCw3ICsxNTIwOSw3IEBAIFNIQVJFRF9MREZMQUdTPQorIGlmIHRlc3QgIiRlbmFibGVfc2hhcmVkIiA9ICJ5ZXMiOyB0aGVuCisgICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAorICAgaWYgdGVzdCAtbiAiJHgiOyB0aGVuCistICAgIFNIQVJFRF9MSUJBREQ9Ii1MYHB3ZGAvLi4vbGliaWJlcnR5L3BpYyAtbGliZXJ0eSIKKysgICAgU0hBUkVEX0xJQkFERD0iYHB3ZGAvLi4vbGliaWJlcnR5L3BpYy9saWJpYmVydHkuYSIKKyAgIGZpCisgCisgICBjYXNlICIke2hvc3R9IiBpbgorQEAgLTE3MTc2LDEzICsxNzgzMSwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE3MTk3LDE0ICsxNzg1OSwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNzIzNywxMiArMTc5MDIsMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKKyBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTcyOTcsOCArMTc5NjIsMTMgQEAgcmVsb2FkX2ZsYWcgXAorIE9CSkRVTVAgXAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKKyBmaWxlX21hZ2ljX2NtZCBcCisrZmlsZV9tYWdpY19nbG9iIFwKKyt3YW50X25vY2FzZWdsb2IgXAorK0RMTFRPT0wgXAorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKKyBBUiBcCisgQVJfRkxBR1MgXAorK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCisgU1RSSVAgXAorIFJBTkxJQiBcCisgQ0MgXAorQEAgLTE3MzA4LDEyICsxNzk3OCwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAorK25tX2ZpbGVfbGlzdF9zcGVjIFwKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCistbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9waWMgXAorK2x0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCisgbmVlZF9sb2NrcyBcCisrTUFOSUZFU1RfVE9PTCBcCisgRFNZTVVUSUwgXAorIE5NRURJVCBcCisgTElQTyBcCitAQCAtMTczMjksNyArMTgwMDEsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCisgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCistZml4X3NyY2ZpbGVfcGF0aCBcCisgZXhjbHVkZV9leHBzeW1zIFwKKyBpbmNsdWRlX2V4cHN5bXMgXAorIGZpbGVfbGlzdF9zcGVjIFwKK0BAIC0xNzM2NSw2ICsxODAzNiw3IEBAIG1vZHVsZV9jbWRzIFwKKyBtb2R1bGVfZXhwc3ltX2NtZHMgXAorIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAorIHByZWxpbmtfY21kcyBcCisrcG9zdGxpbmtfY21kcyBcCisgcG9zdGluc3RhbGxfY21kcyBcCisgcG9zdHVuaW5zdGFsbF9jbWRzIFwKKyBmaW5pc2hfY21kcyBcCitAQCAtMTgxNTMsNyArMTg4MjUsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CisgIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCisgIworICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCistIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysjICAgICAgICAgICAgICAgICBJbmMuCisgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKyAjCisgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgorQEAgLTE4MjU2LDE5ICsxODkyOSw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKKyAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCisgTkwyU1A9JGx0X2x0X05MMlNQCisgCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgorK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKysKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgorK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKysKKyAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgorIE9CSkRVTVA9JGx0X09CSkRVTVAKKyAKKyAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAorIAorLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCisrIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAorIAorKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKKysKKysjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgorKworKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCisrRExMVE9PTD0kbHRfRExMVE9PTAorKworKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKysKKyAjIFRoZSBhcmNoaXZlci4KKyBBUj0kbHRfQVIKKysKKysjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgorIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUworIAorKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgorK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCisrCisgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KKyBTVFJJUD0kbHRfU1RSSVAKKyAKK0BAIC0xODI5OCw2ICsxODk5NCwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCisgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CisgCisrIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCisrbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCisrCisrIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KKytsdF9zeXNyb290PSRsdF9zeXNyb290CisrCisgIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCisgb2JqZGlyPSRvYmpkaXIKKyAKK0BAIC0xODMwNyw2ICsxOTAwOSw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECisgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KKyBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCisgCisrIyBNYW5pZmVzdCB0b29sLgorK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKKysKKyAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCisgRFNZTVVUSUw9JGx0X0RTWU1VVElMCisgCitAQCAtMTg0MjEsMTIgKzE5MTI2LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKKyAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCisgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZworIAorLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKy13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorLQorICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgorIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYworIAorKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKyt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorKworICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KKyBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYworIAorQEAgLTE4NTEzLDkgKzE5MjE4LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgorIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKKyAKKy0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCistZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAorLQorICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgorIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCisgCitAQCAtMTg1MzEsNiArMTkyMzMsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCisgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKKyAKKysjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCisrcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcworKworICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgorIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYworIAorQEAgLTE4NTYzLDIxMCArMTkyNjgsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgorICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KKyAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CistICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgY2FzZSAkeHNpX3NoZWxsIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKy0jIGNhbGw6CistIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKKy0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKy0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKy0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKKy0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCistIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCistZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKy0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KKy19CistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9CistICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKy0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CistICBlc2FjCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCistICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCistICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorLSAgZWxzZQorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCistICBmaQorLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKy19CistCistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsyfSBpbgorLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CistICBlc2FjCistfQorLQorLSMgc2VkIHNjcmlwdHM6CistbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKKy1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCistfQorLQorLV9MVF9FT0YKKy1lc2FjCistCistY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxKz1cJDIiCistfQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxPVwkJDFcJDIiCistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gIGVzYWMKKy0KKy0KKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKysgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKysgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisrCisrICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAorK2Z1bmNfZGlybmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAorK2Z1bmNfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKKytmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAorK2Z1bmNfc3RyaXBuYW1lICgpXAorK3tcCisrXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAorK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKKytmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKKytmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKKytmdW5jX2xvMm8gKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCisrXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAorK2Z1bmNfeGZvcm0gKClcCisre1wKKysgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAorK2Z1bmNfYXJpdGggKClcCisre1wKKysgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKKytmdW5jX2xlbiAoKVwKKyt7XAorKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrZmkKKysKKytpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKKytmdW5jX2FwcGVuZCAoKVwKKyt7XAorKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKKytmdW5jX2FwcGVuZF9xdW90ZWQgKClcCisre1wKKytcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAorK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JworKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2Vsc2UKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytmaQorKworK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9CisrZmkKKysKKysKKysgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCisgICBjaG1vZCAreCAiJG9maWxlIgorIAorZGlmZiAtLWdpdCBhL2JmZC9jb25maWd1cmUuYWMgYi9iZmQvY29uZmlndXJlLmFjCitpbmRleCBjNWJmYmQ1ZDEyOS4uZTY2NmIxY2MxMDYgMTAwNjQ0CistLS0gYS9iZmQvY29uZmlndXJlLmFjCisrKysgYi9iZmQvY29uZmlndXJlLmFjCitAQCAtMjkwLDcgKzI5MCw3IEBAIGNoYW5nZXF1b3RlKCwpZG5sCisgICB4PWBzZWQgLW4gLWUgJ3MvXlsgCV0qUElDRkxBR1sgCV0qPVsgCV0qLy9wJyA8IC4uL2xpYmliZXJ0eS9NYWtlZmlsZSB8IHNlZCAtbiAnJHAnYAorIGNoYW5nZXF1b3RlKFssXSlkbmwKKyAgIGlmIHRlc3QgLW4gIiR4IjsgdGhlbgorLSAgICBTSEFSRURfTElCQUREPSItTGBwd2RgLy4uL2xpYmliZXJ0eS9waWMgLWxpYmVydHkiCisrICAgIFNIQVJFRF9MSUJBREQ9ImBwd2RgLy4uL2xpYmliZXJ0eS9waWMvbGliaWJlcnR5LmEiCisgICBmaQorIAorICAgY2FzZSAiJHtob3N0fSIgaW4KK2RpZmYgLS1naXQgYS9iaW51dGlscy9jb25maWd1cmUgYi9iaW51dGlscy9jb25maWd1cmUKK2luZGV4IGE4ZGZkNGJkNjhjLi44MjMxNjQ5Njk1MyAxMDA3NTUKKy0tLSBhL2JpbnV0aWxzL2NvbmZpZ3VyZQorKysrIGIvYmludXRpbHMvY29uZmlndXJlCitAQCAtNjkwLDggKzY5MCwxMSBAQCBPVE9PTAorIExJUE8KKyBOTUVESVQKKyBEU1lNVVRJTAorK01BTklGRVNUX1RPT0wKKyBSQU5MSUIKKythY19jdF9BUgorIEFSCisrRExMVE9PTAorIE9CSkRVTVAKKyBMTl9TCisgTk0KK0BAIC04MDgsNiArODExLDcgQEAgZW5hYmxlX3N0YXRpYworIHdpdGhfcGljCisgZW5hYmxlX2Zhc3RfaW5zdGFsbAorIHdpdGhfZ251X2xkCisrd2l0aF9saWJ0b29sX3N5c3Jvb3QKKyBlbmFibGVfbGlidG9vbF9sb2NrCisgZW5hYmxlX3BsdWdpbnMKKyBlbmFibGVfbGFyZ2VmaWxlCitAQCAtMTQ4NSw2ICsxNDg5LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CisgICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCisgICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCisrICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgorICAgLS13aXRoLWRlYnVnaW5mb2QgICAgICAgRW5hYmxlIGRlYnVnaW5mbyBsb29rdXBzIHdpdGggZGVidWdpbmZvZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgKGF1dG8veWVzL25vKQorICAgLS13aXRoLXN5c3RlbS16bGliICAgICAgdXNlIGluc3RhbGxlZCBsaWJ6CitAQCAtNTQ2MSw4ICs1NDY3LDggQEAgZXNhYworIAorIAorIAorLW1hY3JvX3ZlcnNpb249JzIuMi43YScKKy1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JworK21hY3JvX3ZlcnNpb249JzIuNCcKKyttYWNyb19yZXZpc2lvbj0nMS4zMjkzJworIAorIAorIAorQEAgLTU1MDIsNyArNTUwOCw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KKyAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KKy1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgICBFQ0hPPSdwcmludCAtciAtLScKKyBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorQEAgLTYxODgsOCArNjE5NCw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CisgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKKyB4c2lfc2hlbGw9bm8KKyAoIF9sdF9kdW1teT0iYS9iL2MiCistICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorLSAgICAgID0gYyxhL2IsLCBcCisrICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorKyAgICAgID0gYyxhL2IsYi9jLCBcCisgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICYmIHhzaV9zaGVsbD15ZXMKK0BAIC02MjM4LDYgKzYyNDQsODAgQEAgZXNhYworIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICotKi1jeWd3aW4qICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisrICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQorIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTYyNTQsNiArNjMzNCwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGVzYWMKKyByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgY2FzZSAkaG9zdF9vcyBpbgorKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKysgICAgICByZWxvYWRfY21kcz1mYWxzZQorKyAgICBmaQorKyAgICA7OworICAgZGFyd2luKikKKyAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCitAQCAtNjQyMiw3ICs2NTA3LDggQEAgbWluZ3cqIHwgcHczMiopCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICAgZWxzZQorLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKysgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKKyAgIGZpCisgICA7OworQEAgLTY1NzYsNiArNjY2MiwyMSBAQCBlc2FjCisgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKKyAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KKysKKytmaWxlX21hZ2ljX2dsb2I9Cisrd2FudF9ub2Nhc2VnbG9iPW5vCisraWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKysgIGNhc2UgJGhvc3Rfb3MgaW4KKysgIG1pbmd3KiB8IHB3MzIqKQorKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworKyAgICBlbHNlCisrICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTY1OTEsOSArNjY5MiwxNjIgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKKyskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCisrICAgIERMTFRPT0w9ImZhbHNlIgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAorKyAgZmkKKytlbHNlCisrICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgorK2ZpCisrCisrdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQorK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKysKKytjYXNlICRob3N0X29zIGluCisrY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisrICAqLS1pZGVudGlmeS1zdHJpY3QqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKysgICAgOzsKKysgICopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworKyAgICA7OworKyAgZXNhYworKyAgOzsKKysqKQorKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisrICA7OworK2VzYWMKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKysKKysKKysKKysKKysKKysKKysKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9YXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorKyAgZG8KKysgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjYwOSw3ICs2ODYzLDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgorKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjYyOSwxMSArNjg4MywxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisgCisrICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKysgIGRvbmUKKyBmaQorLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgorK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgIGFjX2N0X0FSPSRBUgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorK2RvCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02NjQ5LDcgKzY5MDcsNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjY2OCw2ICs2OTI2LDEwIEBAIGVsc2UKKyAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisrCisrICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCisrZG9uZQorKworICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgIEFSPSJmYWxzZSIKKyAgIGVsc2UKK0BAIC02Njc5LDEyICs2OTQxLDEwIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworIGVzYWMKKyAgICAgQVI9JGFjX2N0X0FSCisgICBmaQorLWVsc2UKKy0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKKyBmaQorIAorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorKzogJHtBUj1hcn0KKys6ICR7QVJfRkxBR1M9Y3J1fQorIAorIAorIAorQEAgLTY2OTYsNiArNjk1Niw2NCBAQCB0ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubworKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrCisraW50CisrbWFpbiAoKQorK3sKKysKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKysgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKKysgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKysJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisrICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorKyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorKworK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9CisrCisraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorK2Vsc2UKKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorK2ZpCisrCisrCisrCisrCisrCisrCisrCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fXN0cmlwIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKyBzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1zdHJpcDsgYWNfd29yZD0kMgorQEAgLTcwMzAsOCArNzM0OCw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtNzA2Nyw2ICs3Mzg1LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTcxMDgsNiArNzQyNywxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC03MTE5LDcgKzc0NTAsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICAgICAgICphZGRyZXNzOworIH0KK0BAIC03MTQ1LDggKzc0NzYsOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKKyAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKK0BAIC03MTU2LDggKzc0ODcsOCBAQCBfTFRfRU9GCisgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKKyAJZmkKK0BAIC03MTk0LDYgKzc1MjUsMjEgQEAgZWxzZQorICRhc19lY2hvICJvayIgPiY2OyB9CisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZmkKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyAKKyAKKyAKK0BAIC03MjEwLDYgKzc1NTYsNDAgQEAgZmkKKyAKKyAKKyAKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OworK2Vsc2UKKysgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCisrZmkKKysKKysKKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQorKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9CisrICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgOzsKKytlc2FjCisrCisrIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CisrJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKyAKKyAKKyAKK0BAIC03NDIxLDYgKzc4MDEsMTIzIEBAIGVzYWMKKyAKKyBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyAKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IG10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKysgICAgTUFOSUZFU1RfVE9PTD0iOiIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKysgIGZpCisrZWxzZQorKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mNQorKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisrICBmaQorKyAgcm0gLWYgY29uZnRlc3QqCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorKworKworKworKworKworIAorICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICByaGFwc29keSogfCBkYXJ3aW4qKQorQEAgLTc5ODQsNiArODQ4MSw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisrICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC04MTc5LDcgKzg2NzgsOCBAQCBmaQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgCisgCisgCitAQCAtODI2OCw3ICs4NzY4LDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC04NTY2LDggKzkwNjYsNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljPQorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQorIAorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworQEAgLTg3MzMsNiArOTIzMSwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCisgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKKyAJOzsKKysgICAgICBuYWdmb3IqKQorKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisrCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKKysJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCisrCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKysJOzsKKyAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorQEAgLTg3OTUsNyArOTI5OSw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKyAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKysgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OworICAgICAgICopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKK0BAIC04ODUyLDEzICs5MzU2LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CistJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CistCistCistCistCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKytsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTg5MTksNiArOTQyNywxMSBAQCBmaQorIAorIAorIAorKworKworKworKworKworICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTkyNjksNyArOTc4Miw4IEBAIF9MVF9FT0YKKyAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubworICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCistICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKKyAKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTkzNjgsMTIgKzk4ODIsMTIgQEAgX0xUX0VPRgorIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJworIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCistCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisrCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtOTM4Nyw4ICs5OTAxLDggQEAgX0xUX0VPRgorIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCisgCXdsYXJjPQorICAgICAgIGVsc2UKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZmkKKyAgICAgICA7OworIAorQEAgLTk0MDYsOCArOTkyMCw4IEBAIF9MVF9FT0YKKyAKKyBfTFRfRU9GCisgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05NDUzLDggKzk5NjcsOCBAQCBfTFRfRU9GCisgCisgICAgICopCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTU4NCw3ICsxMDA5OCwxMyBAQCBfTFRfRU9GCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCisgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05NTk3LDIyICsxMDExNywyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtOTYyNCw3ICsxMDE1MSwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJZWxzZQorIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTYzNywyMiArMTAxNzAsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKK0BAIC05Njk3LDIwICsxMDIzNyw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCistICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorLSAgICAgIGxpYmV4dD1saWIKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKy0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKKy0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKy0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCistICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKy0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCistICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCistICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICAgIGNsKikKKysJIyBOYXRpdmUgTVNWQworKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCisrCWZpbGVfbGlzdF9zcGVjPSdAJworKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBlbHNlCisrCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGZpfgorKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICBsaW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrCSMgRG9uJ3QgdXNlIHJhbmxpYgorKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCisrCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICouZXhlfCouRVhFKSA7OworKwkgICAgKikKKysJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkgICAgICA7OworKwkgIGVzYWN+CisrCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICBmaScKKysJOzsKKysgICAgICAqKQorKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKysJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKysJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKysJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwk7OworKyAgICAgIGVzYWMKKyAgICAgICA7OworIAorICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorQEAgLTk3NzEsNyArMTAzNTQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KK0BAIC05Nzc5LDcgKzEwMzYyLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXg5KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGZpCitAQCAtOTc5NSw3ICsxMDM3OCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4MTAqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICAgZmkKK0BAIC05ODE5LDEwICsxMDQwMiwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJKikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAllc2FjCisgICAgICAgZWxzZQorQEAgLTk5MDEsMjMgKzEwNDg0LDM2IEBAIGZpCisgCisgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CisgCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKKyAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KKy0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCistICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisrCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisrCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCistaW50IGZvbyh2b2lkKSB7fQorK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CistICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCistCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKKytlbHNlCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubworIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQorKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCisrICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWZpCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKK0BAIC0xMDAwMiw3ICsxMDU5OCw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTEwMDIxLDkgKzEwNjE3LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTEwNTk5LDggKzExMTk1LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTEwNjMzLDEzICsxMTIzMCw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMTA3MzEsNyArMTEzODYsNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTE1MjcsNyArMTIxODIsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTUzMCAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTE1NzEsMTAgKzEyMjI2LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTE2MzMsNyArMTIyODgsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTYzNiAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTE2NzcsMTAgKzEyMzMyLDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTYwMjQsMTMgKzE2Njc5LDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTYwNDUsMTQgKzE2NzA3LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE2MDg1LDEyICsxNjc1MCwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNjE0NSw4ICsxNjgxMCwxMyBAQCByZWxvYWRfZmxhZyBcCisgT0JKRFVNUCBcCisgZGVwbGlic19jaGVja19tZXRob2QgXAorIGZpbGVfbWFnaWNfY21kIFwKKytmaWxlX21hZ2ljX2dsb2IgXAorK3dhbnRfbm9jYXNlZ2xvYiBcCisrRExMVE9PTCBcCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAorIEFSIFwKKyBBUl9GTEFHUyBcCisrYXJjaGl2ZXJfbGlzdF9zcGVjIFwKKyBTVFJJUCBcCisgUkFOTElCIFwKKyBDQyBcCitAQCAtMTYxNTYsMTIgKzE2ODI2LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCisrbm1fZmlsZV9saXN0X3NwZWMgXAorIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCisrbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAorIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKKyBuZWVkX2xvY2tzIFwKKytNQU5JRkVTVF9UT09MIFwKKyBEU1lNVVRJTCBcCisgTk1FRElUIFwKKyBMSVBPIFwKK0BAIC0xNjE3Nyw3ICsxNjg0OSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKKyBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKKy1maXhfc3JjZmlsZV9wYXRoIFwKKyBleGNsdWRlX2V4cHN5bXMgXAorIGluY2x1ZGVfZXhwc3ltcyBcCisgZmlsZV9saXN0X3NwZWMgXAorQEAgLTE2MjEzLDYgKzE2ODg0LDcgQEAgbW9kdWxlX2NtZHMgXAorIG1vZHVsZV9leHBzeW1fY21kcyBcCisgZXhwb3J0X3N5bWJvbHNfY21kcyBcCisgcHJlbGlua19jbWRzIFwKKytwb3N0bGlua19jbWRzIFwKKyBwb3N0aW5zdGFsbF9jbWRzIFwKKyBwb3N0dW5pbnN0YWxsX2NtZHMgXAorIGZpbmlzaF9jbWRzIFwKK0BAIC0xNjk3OSw3ICsxNzY1MSw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKKyAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMTcwODIsMTkgKzE3NzU1LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KKyBOTDJTUD0kbHRfbHRfTkwyU1AKKyAKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorKworKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorKworICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCisgT0JKRFVNUD0kbHRfT0JKRFVNUAorIAorICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgCistIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KKysjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisgZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCisgCisrIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKytmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgorKworKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCisrCisrIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KKytETExUT09MPSRsdF9ETExUT09MCisrCisrIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorKworICMgVGhlIGFyY2hpdmVyLgorIEFSPSRsdF9BUgorKworKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCisgQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCisgCisrIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKKysKKyAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgorIFNUUklQPSRsdF9TVFJJUAorIAorQEAgLTE3MTI0LDYgKzE3ODIwLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCisgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KKyBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKKyAKKysjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KKytubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKKysKKysjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKKysKKyAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KKyBvYmpkaXI9JG9iamRpcgorIAorQEAgLTE3MTMzLDYgKzE3ODM1LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKKyAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPworIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKKyAKKysjIE1hbmlmZXN0IHRvb2wuCisrTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAorKworICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KKyBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKKyAKK0BAIC0xNzI0NywxMiArMTc5NTIsMTIgQEAgd2l0aF9nY2M9JEdDQworICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KKyBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCistCisgIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCisgcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCisgCisrIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCisgCitAQCAtMTczMzksOSArMTgwNDQsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCisgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCisgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicworIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCistCisgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKKyAKK0BAIC0xNzM1Nyw2ICsxODA1OSw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcworIAorKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KKytwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCisrCisgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCisgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCisgCitAQCAtMTczODksMjEwICsxODA5NCwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBjYXNlICR4c2lfc2hlbGwgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorLSMgY2FsbDoKKy0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAorLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQorLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKy0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKy1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorLX0KKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19CistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorLX0KKy0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgY2FzZSAkezJ9IGluCistICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CistICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKy0gIGVzYWMKKy19CistCistIyBzZWQgc2NyaXB0czoKKy1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKy19CistCistX0xUX0VPRgorLWVzYWMKKy0KKy1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDErPVwkMiIKKy19CistX0xUX0VPRgorLSAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDE9XCQkMVwkMiIKKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgZXNhYworLQorLQorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysKKysgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCisrZnVuY19kaXJuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCisrZnVuY19iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAorK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCisrZnVuY19zdHJpcG5hbWUgKClcCisre1wKKytcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCisrXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAorK2Z1bmNfbG8ybyAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKKytcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCisrZnVuY194Zm9ybSAoKVwKKyt7XAorKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCisrZnVuY19hcml0aCAoKVwKKyt7XAorKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAorK2Z1bmNfbGVuICgpXAorK3tcCisrICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKytmaQorKworK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAorK2Z1bmNfYXBwZW5kICgpXAorK3tcCisrICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKKyt7XAorK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCisrXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZWxzZQorKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisrCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KKytmaQorKworKworKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKKyAgIGNobW9kICt4ICIkb2ZpbGUiCisgCitkaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZ3VyZSBiL2dhcy9jb25maWd1cmUKK2luZGV4IDYwYzFhMDU1YWUyLi4wZTBjZTRjMGUyMyAxMDA3NTUKKy0tLSBhL2dhcy9jb25maWd1cmUKKysrKyBiL2dhcy9jb25maWd1cmUKK0BAIC02ODEsOCArNjgxLDExIEBAIE9UT09MCisgTElQTworIE5NRURJVAorIERTWU1VVElMCisrTUFOSUZFU1RfVE9PTAorIFJBTkxJQgorK2FjX2N0X0FSCisgQVIKKytETExUT09MCisgT0JKRFVNUAorIExOX1MKKyBOTQorQEAgLTc5OSw2ICs4MDIsNyBAQCBlbmFibGVfc3RhdGljCisgd2l0aF9waWMKKyBlbmFibGVfZmFzdF9pbnN0YWxsCisgd2l0aF9nbnVfbGQKKyt3aXRoX2xpYnRvb2xfc3lzcm9vdAorIGVuYWJsZV9saWJ0b29sX2xvY2sKKyBlbmFibGVfcGx1Z2lucworIGVuYWJsZV9sYXJnZWZpbGUKK0BAIC0xNDkwLDYgKzE0OTQsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KKyAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KKysgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCisrICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCisgICAtLXdpdGgtY3B1PUNQVSAgICAgICAgICBkZWZhdWx0IGNwdSB2YXJpYW50IGlzIENQVSAoY3VycmVudGx5IG9ubHkgc3VwcG9ydGVkCisgICAgICAgICAgICAgICAgICAgICAgICAgICBvbiBBUkMpCisgICAtLXdpdGgtc3lzdGVtLXpsaWIgICAgICB1c2UgaW5zdGFsbGVkIGxpYnoKK0BAIC01Mjc3LDggKzUyODMsOCBAQCBlc2FjCisgCisgCisgCistbWFjcm9fdmVyc2lvbj0nMi4yLjdhJworLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCisrbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgCisgCisgCitAQCAtNTMxOCw3ICs1MzI0LDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQorICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgorLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgIEVDSE89J3ByaW50IC1yIC0tJworIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCitAQCAtNjAwNCw4ICs2MDEwLDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKKyAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworIHhzaV9zaGVsbD1ubworICggX2x0X2R1bW15PSJhL2IvYyIKKy0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCistICAgICAgPSBjLGEvYiwsIFwKKysgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisrICAgICAgPSBjLGEvYixiL2MsIFwKKyAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAgJiYgeHNpX3NoZWxsPXllcworQEAgLTYwNTQsNiArNjA2MCw4MCBAQCBlc2FjCisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CisgaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjA3MCw2ICs2MTUwLDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgZXNhYworIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyBjYXNlICRob3N0X29zIGluCisrICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisrICAgIGZpCisrICAgIDs7CisgICBkYXJ3aW4qKQorICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK0BAIC02MjM4LDcgKzYzMjMsOCBAQCBtaW5ndyogfCBwdzMyKikKKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgICBlbHNlCistICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisrICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICAgZmkKKyAgIDs7CitAQCAtNjM5Miw2ICs2NDc4LDIxIEBAIGVzYWMKKyBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQorICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjQwNyw5ICs2NTA4LDE2MiBAQCB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19ETExUT09MPSIkRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX0RMTFRPT0w9IiR7YWNfdG9vbF9wcmVmaXh9ZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrRExMVE9PTD0kYWNfY3ZfcHJvZ19ETExUT09MCisraWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJERMTFRPT0wiID4mNQorKyRhc19lY2hvICIkRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19ETExUT09MIjsgdGhlbgorKyAgYWNfY3RfRExMVE9PTD0kRExMVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJkbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgZGxsdG9vbDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfRExMVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSIkYWNfY3RfRExMVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9ImRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X0RMTFRPT0w9JGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9ETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9ETExUT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X0RMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9ETExUT09MIiA9IHg7IHRoZW4KKysgICAgRExMVE9PTD0iZmFsc2UiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBETExUT09MPSRhY19jdF9ETExUT09MCisrICBmaQorK2Vsc2UKKysgIERMTFRPT0w9IiRhY19jdl9wcm9nX0RMTFRPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSd1bmtub3duJworKworK2Nhc2UgJGhvc3Rfb3MgaW4KKytjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAjIHR3byBkaWZmZXJlbnQgc2hlbGwgZnVuY3Rpb25zIGRlZmluZWQgaW4gbHRtYWluLnNoCisrICAjIGRlY2lkZSB3aGljaCB0byB1c2UgYmFzZWQgb24gY2FwYWJpbGl0aWVzIG9mICRETExUT09MCisrICBjYXNlIGAkRExMVE9PTCAtLWhlbHAgMj4mMWAgaW4KKysgICotLWlkZW50aWZ5LXN0cmljdCopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYgorKyAgICA7OworKyAgKikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrCisrICAgIDs7CisrICBlc2FjCisrICA7OworKyopCisrICAjIGZhbGxiYWNrOiBhc3N1bWUgbGlua2xpYiBJUyBzaGFyZWRsaWIKKysgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSIkRUNITyIKKysgIDs7CisrZXNhYworKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgPiY2OyB9Cisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrdGVzdCAteiAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiAmJiBzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kRUNITworKworKworKworKworKworKworKworIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrICBkbworKyAgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY190b29sX3ByZWZpeCRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgJHthY19jdl9wcm9nX0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02NDI1LDcgKzY2NzksNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfQVI9IiR7YWNfdG9vbF9wcmVmaXh9YXIiCisrICAgIGFjX2N2X3Byb2dfQVI9IiRhY190b29sX3ByZWZpeCRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02NDQ1LDExICs2Njk5LDE1IEBAICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKyAKKysgICAgdGVzdCAtbiAiJEFSIiAmJiBicmVhaworKyAgZG9uZQorIGZpCistaWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfQVIiOyB0aGVuCisraWYgdGVzdCAteiAiJEFSIjsgdGhlbgorICAgYWNfY3RfQVI9JEFSCistICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgYXI7IGFjX3dvcmQ9JDIKKysgIGZvciBhY19wcm9nIGluIGFyCisrZG8KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfYWNfY3RfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY0NjUsNyArNjcyMyw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iYXIiCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9IiRhY19wcm9nIgorICAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKyAgICAgYnJlYWsgMgorICAgZmkKK0BAIC02NDg0LDYgKzY3NDIsMTAgQEAgZWxzZQorICRhc19lY2hvICJubyIgPiY2OyB9CisgZmkKKyAKKysKKysgIHRlc3QgLW4gIiRhY19jdF9BUiIgJiYgYnJlYWsKKytkb25lCisrCisgICBpZiB0ZXN0ICJ4JGFjX2N0X0FSIiA9IHg7IHRoZW4KKyAgICAgQVI9ImZhbHNlIgorICAgZWxzZQorQEAgLTY0OTUsMTIgKzY3NTcsMTAgQEAgYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisgZXNhYworICAgICBBUj0kYWNfY3RfQVIKKyAgIGZpCistZWxzZQorLSAgQVI9IiRhY19jdl9wcm9nX0FSIgorIGZpCisgCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisrOiAke0FSPWFyfQorKzogJHtBUl9GTEFHUz1jcnV9CisgCisgCisgCitAQCAtNjUxMiw2ICs2NzcyLDY0IEBAIHRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X2FyX2F0X2ZpbGUrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9hcl9hdF9maWxlPW5vCisrICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKy8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKysKKytpbnQKKyttYWluICgpCisreworKworKyAgOworKyAgcmV0dXJuIDA7CisrfQorK19BQ0VPRgorK2lmIGFjX2ZuX2NfdHJ5X2NvbXBpbGUgIiRMSU5FTk8iOyB0aGVuIDoKKysgIGVjaG8gY29uZnRlc3QuJGFjX29iamV4dCA+IGNvbmZ0ZXN0LmxzdAorKyAgICAgIGx0X2FyX3RyeT0nJEFSICRBUl9GTEFHUyBsaWJjb25mdGVzdC5hIEBjb25mdGVzdC5sc3QgPiY1JworKyAgICAgIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKyAgICAgIGlmIHRlc3QgIiRhY19zdGF0dXMiIC1lcSAwOyB0aGVuCisrCSMgRW5zdXJlIHRoZSBhcmNoaXZlciBmYWlscyB1cG9uIGJvZ3VzIGZpbGUgbmFtZXMuCisrCXJtIC1mIGNvbmZ0ZXN0LiRhY19vYmpleHQgbGliY29uZnRlc3QuYQorKwl7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysJaWYgdGVzdCAiJGFjX3N0YXR1cyIgLW5lIDA7IHRoZW4KKysgICAgICAgICAgbHRfY3ZfYXJfYXRfZmlsZT1ACisrICAgICAgICBmaQorKyAgICAgIGZpCisrICAgICAgcm0gLWYgY29uZnRlc3QuKiBsaWJjb25mdGVzdC5hCisrCisrZmkKKytybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0ZXN0LiRhY19leHQKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfYXJfYXRfZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9hcl9hdF9maWxlIiA+JjY7IH0KKysKKytpZiB0ZXN0ICJ4JGx0X2N2X2FyX2F0X2ZpbGUiID0geG5vOyB0aGVuCisrICBhcmNoaXZlcl9saXN0X3NwZWM9CisrZWxzZQorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9jdl9hcl9hdF9maWxlCisrZmkKKysKKysKKysKKysKKysKKysKKysKKyBpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisgICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9c3RyaXAiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorIHNldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fXN0cmlwOyBhY193b3JkPSQyCitAQCAtNjg0Niw4ICs3MTY0LDggQEAgZXNhYworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCisgCisgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorIAorICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorIG9wdF9jcj0KK0BAIC02ODgzLDYgKzcyMDEsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCisgICBlbHNlCisgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCisgICBmaQorKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgorIAorICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCisgICBwaXBlX3dvcmtzPW5vCitAQCAtNjkyNCw2ICs3MjQzLDE4IEBAIF9MVF9FT0YKKyAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisrLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisrICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorKyNlbmRpZgorKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorQEAgLTY5MzUsNyArNzI2Niw3IEBAIF9MVF9FT0YKKyAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAKKyAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCistY29uc3Qgc3RydWN0IHsKKytMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgICAgICAgKmFkZHJlc3M7CisgfQorQEAgLTY5NjEsOCArNzI5Miw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgX0xUX0VPRgorIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCisgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CistCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKy0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKysJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUworIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCisgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgorIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQorQEAgLTY5NzIsOCArNzMwMyw4IEBAIF9MVF9FT0YKKyAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQorIAlmaQorQEAgLTcwMTAsNiArNzM0MSwyMSBAQCBlbHNlCisgJGFzX2VjaG8gIm9rIiA+JjY7IH0KKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytmaQorKworKworKworKworKworKworKworKworKworIAorIAorIAorQEAgLTcwMjYsNiArNzM3Miw0MCBAQCBmaQorIAorIAorIAorKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CisrCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7CisrZWxzZQorKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KKytmaQorKworKworK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CisrJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KKysgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICA7OworK2VzYWMKKysKKysgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKKyskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorIAorIAorIAorQEAgLTcyMzcsNiArNzYxNywxMjMgQEAgZXNhYworIAorIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIAorK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgorKyAgICBNQU5JRkVTVF9UT09MPSI6IgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAorKyAgZmkKKytlbHNlCisrICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgorK2ZpCisrCisrdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKKysgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKysgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisrICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisrICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKysgIGZpCisrICBybSAtZiBjb25mdGVzdCoKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9CisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrCisrCisrCisrCisrCisgCisgICBjYXNlICRob3N0X29zIGluCisgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCitAQCAtNzgwMCw2ICs4Mjk3LDggQEAgX0xUX0VPRgorICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CisrICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTc5OTUsNyArODQ5NCw4IEBAIGZpCisgTElCVE9PTF9ERVBTPSIkbHRtYWluIgorIAorICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCistTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCisrTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJworK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKKyAKKyAKKyAKK0BAIC04MDg0LDcgKzg1ODQsNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTgzODIsOCArODg4Miw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWM9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCitAQCAtODU0OSw2ICs5MDQ3LDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKKyAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKysJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtODYxMSw3ICs5MTE1LDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OworQEAgLTg2NjgsMTMgKzkxNzIsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKy0KKy0KKy0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYworIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtODczNSw2ICs5MjQzLDExIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtOTA4NSw3ICs5NTk4LDggQEAgX0xUX0VPRgorICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCisgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKy0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtOTE4NCwxMiArOTY5OCwxMiBAQCBfTFRfRU9GCisgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKKy0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKysJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKy0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisrCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAJICBmaQorIAkgIDs7CisgCWVzYWMKK0BAIC05MjAzLDggKzk3MTcsOCBAQCBfTFRfRU9GCisgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtOTIyMiw4ICs5NzM2LDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTkyNjksOCArOTc4Myw4IEBAIF9MVF9FT0YKKyAKKyAgICAgKikKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05NDAwLDcgKzk5MTQsMTMgQEAgX0xUX0VPRgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTQxMywyMiArOTkzMywyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtOTQ0MCw3ICs5OTY3LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAllbHNlCisgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05NDUzLDIyICs5OTg2LDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgCSBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCitAQCAtOTUxMywyMCArMTAwNTMsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC05NTg3LDcgKzEwMTcwLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCitAQCAtOTU5NSw3ICsxMDE3OCw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTk2MTEsNyArMTAxOTQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtOTYzNSwxMCArMTAyMTgsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAlpYTY0KikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCSopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJZXNhYworICAgICAgIGVsc2UKK0BAIC05NzE3LDIzICsxMDMwMCwzNiBAQCBmaQorIAorICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKysJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28odm9pZCkge30KKytpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCisrZWxzZQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtOTgxOCw3ICsxMDQxNCw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTk4MzcsOSArMTA0MzMsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJd2xhcmM9JyR7d2x9JworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgZWxzZQorIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KKyAJKiJDb21waWxlcnMgNS4wIiopCitAQCAtMTA0MTUsOCArMTEwMTEsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMTA0NDksMTMgKzExMDQ2LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0xMDU0Nyw3ICsxMTIwMiw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0xMTM0Myw3ICsxMTk5OCw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExMzQ2ICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTM4NywxMCArMTIwNDIsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMTQ0OSw3ICsxMjEwNCw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExNDUyICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTQ5MywxMCArMTIxNDgsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xNTkyOCwxMyArMTY1ODMsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNTk0OSwxNCArMTY2MTEsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTU5ODksMTIgKzE2NjU0LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE2MDQ5LDggKzE2NzE0LDEzIEBAIHJlbG9hZF9mbGFnIFwKKyBPQkpEVU1QIFwKKyBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCisgZmlsZV9tYWdpY19jbWQgXAorK2ZpbGVfbWFnaWNfZ2xvYiBcCisrd2FudF9ub2Nhc2VnbG9iIFwKKytETExUT09MIFwKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCisgQVIgXAorIEFSX0ZMQUdTIFwKKythcmNoaXZlcl9saXN0X3NwZWMgXAorIFNUUklQIFwKKyBSQU5MSUIgXAorIENDIFwKK0BAIC0xNjA2MCwxMiArMTY3MzAsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKKytubV9maWxlX2xpc3Rfc3BlYyBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAorLWx0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAorIG5lZWRfbG9ja3MgXAorK01BTklGRVNUX1RPT0wgXAorIERTWU1VVElMIFwKKyBOTUVESVQgXAorIExJUE8gXAorQEAgLTE2MDgxLDcgKzE2NzUzLDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAorLWZpeF9zcmNmaWxlX3BhdGggXAorIGV4Y2x1ZGVfZXhwc3ltcyBcCisgaW5jbHVkZV9leHBzeW1zIFwKKyBmaWxlX2xpc3Rfc3BlYyBcCitAQCAtMTYxMTcsNiArMTY3ODgsNyBAQCBtb2R1bGVfY21kcyBcCisgbW9kdWxlX2V4cHN5bV9jbWRzIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzIFwKKyBwcmVsaW5rX2NtZHMgXAorK3Bvc3RsaW5rX2NtZHMgXAorIHBvc3RpbnN0YWxsX2NtZHMgXAorIHBvc3R1bmluc3RhbGxfY21kcyBcCisgZmluaXNoX2NtZHMgXAorQEAgLTE2ODkwLDcgKzE3NTYyLDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0xNjk5MywxOSArMTc2NjYsNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCisgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgorIE5MMlNQPSRsdF9sdF9OTDJTUAorIAorKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrCisgIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KKyBPQkpEVU1QPSRsdF9PQkpEVU1QCisgCisgIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKKyAKKy0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKKyAKKysjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisrCisrIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKysKKysjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorK0RMTFRPT0w9JGx0X0RMTFRPT0wKKysKKysjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrCisgIyBUaGUgYXJjaGl2ZXIuCisgQVI9JGx0X0FSCisrCisrIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KKyBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKKyAKKysjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KKythcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworKworICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCisgU1RSSVA9JGx0X1NUUklQCisgCitAQCAtMTcwMzUsNiArMTc3MzEsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKKyAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgorIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAorIAorKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworKworKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCisrbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorKworICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgorIG9iamRpcj0kb2JqZGlyCisgCitAQCAtMTcwNDQsNiArMTc3NDYsOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CisgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcworIAorKyMgTWFuaWZlc3QgdG9vbC4KKytNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisrCisgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgorIERTWU1VVElMPSRsdF9EU1lNVVRJTAorIAorQEAgLTE3MTU4LDEyICsxNzg2MywxMiBAQCB3aXRoX2djYz0kR0NDCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKKyAKK0BAIC0xNzI1MCw5ICsxNzk1NSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scworIAorQEAgLTE3MjY4LDYgKzE3OTcwLDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKKyAKK0BAIC0xNzMwMCwyMTAgKzE4MDA1LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIGNhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorLQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKy0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJworLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKy0KKy1fTFRfRU9GCistZXNhYworLQorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMSs9XCQyIgorLX0KKy1fTFRfRU9GCistICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMT1cJCQxXCQyIgorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICBlc2FjCistCistCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKworKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKKytmdW5jX2Rpcm5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKKytmdW5jX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCisrZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKKytmdW5jX3N0cmlwbmFtZSAoKVwKKyt7XAorK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKKytcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCisrZnVuY19zcGxpdF9sb25nX29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCisrZnVuY19sbzJvICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKKytmdW5jX3hmb3JtICgpXAorK3tcCisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKKytmdW5jX2FyaXRoICgpXAorK3tcCisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCisrZnVuY19sZW4gKClcCisre1wKKysgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworK2ZpCisrCisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCisrZnVuY19hcHBlbmQgKClcCisre1wKKysgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCisrZnVuY19hcHBlbmRfcXVvdGVkICgpXAorK3tcCisrXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKKytcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKysKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorK2ZpCisrCisrCisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyAKK2RpZmYgLS1naXQgYS9ncHJvZi9jb25maWd1cmUgYi9ncHJvZi9jb25maWd1cmUKK2luZGV4IGMyMzY5MmU1YzNkLi45ZjkzNmE1YjAzZCAxMDA3NTUKKy0tLSBhL2dwcm9mL2NvbmZpZ3VyZQorKysrIGIvZ3Byb2YvY29uZmlndXJlCitAQCAtNjYyLDggKzY2MiwxMSBAQCBPVE9PTAorIExJUE8KKyBOTUVESVQKKyBEU1lNVVRJTAorK01BTklGRVNUX1RPT0wKKyBSQU5MSUIKKythY19jdF9BUgorIEFSCisrRExMVE9PTAorIE9CSkRVTVAKKyBMTl9TCisgTk0KK0BAIC03ODAsNiArNzgzLDcgQEAgZW5hYmxlX3N0YXRpYworIHdpdGhfcGljCisgZW5hYmxlX2Zhc3RfaW5zdGFsbAorIHdpdGhfZ251X2xkCisrd2l0aF9saWJ0b29sX3N5c3Jvb3QKKyBlbmFibGVfbGlidG9vbF9sb2NrCisgZW5hYmxlX3BsdWdpbnMKKyBlbmFibGVfbGFyZ2VmaWxlCitAQCAtMTQ0Miw2ICsxNDQ2LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CisgICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCisgICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCisrICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgorIAorIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgorICAgQ0MgICAgICAgICAgQyBjb21waWxlciBjb21tYW5kCitAQCAtNTEyNCw4ICs1MTMwLDggQEAgZXNhYworIAorIAorIAorLW1hY3JvX3ZlcnNpb249JzIuMi43YScKKy1tYWNyb19yZXZpc2lvbj0nMS4zMTM0JworK21hY3JvX3ZlcnNpb249JzIuNCcKKyttYWNyb19yZXZpc2lvbj0nMS4zMjkzJworIAorIAorIAorQEAgLTUxNjUsNyArNTE3MSw3IEBAIEVDSE89JEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MuLi4gIiA+JjY7IH0KKyAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KKy1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgICBFQ0hPPSdwcmludCAtciAtLScKKyBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorQEAgLTU4NTEsOCArNTg1Nyw4IEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlIHNoZWxsIHVuZGVyc3RhbmRzIHNvbWUgWFNJIGNvbnN0cnVjdHMuLi4gIiA+JjY7CisgIyBUcnkgc29tZSBYU0kgZmVhdHVyZXMKKyB4c2lfc2hlbGw9bm8KKyAoIF9sdF9kdW1teT0iYS9iL2MiCistICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwiJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorLSAgICAgID0gYyxhL2IsLCBcCisrICB0ZXN0ICIke19sdF9kdW1teSMjKi99LCR7X2x0X2R1bW15JS8qfSwke19sdF9kdW1teSM/P30iJHtfbHRfZHVtbXklIiRfbHRfZHVtbXkifSwgXAorKyAgICAgID0gYyxhL2IsYi9jLCBcCisgICAgICYmIGV2YWwgJ3Rlc3QgJCgoIDEgKyAxICkpIC1lcSAyIFwKKyAgICAgJiYgdGVzdCAiJHsjX2x0X2R1bW15fSIgLWVxIDUnICkgPi9kZXYvbnVsbCAyPiYxIFwKKyAgICYmIHhzaV9zaGVsbD15ZXMKK0BAIC01OTAxLDYgKzU5MDcsODAgQEAgZXNhYworIAorIAorIAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICotKi1jeWd3aW4qICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKysgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisrICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byB0b29sY2hhaW4gZm9ybWF0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl90b190b29sX2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgI2Fzc3VtZSBvcmRpbmFyeSBjcm9zcyB0b29scywgb3IgbmF0aXZlIGJ1aWxkLgorK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorK2Nhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcyIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRMRCBvcHRpb24gdG8gcmVsb2FkIG9iamVjdCBmaWxlcy4uLiAiID4mNjsgfQorIGlmICR7bHRfY3ZfbGRfcmVsb2FkX2ZsYWcrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTU5MTcsNiArNTk5NywxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGVzYWMKKyByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgY2FzZSAkaG9zdF9vcyBpbgorKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKysgICAgICByZWxvYWRfY21kcz1mYWxzZQorKyAgICBmaQorKyAgICA7OworICAgZGFyd2luKikKKyAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCitAQCAtNjA4NSw3ICs2MTcwLDggQEAgbWluZ3cqIHwgcHczMiopCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICAgZWxzZQorLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKysgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKKyAgIGZpCisgICA7OworQEAgLTYyMzksNiArNjMyNSwyMSBAQCBlc2FjCisgZmkKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjUKKyAkYXNfZWNobyAiJGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kIiA+JjY7IH0KKysKKytmaWxlX21hZ2ljX2dsb2I9Cisrd2FudF9ub2Nhc2VnbG9iPW5vCisraWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKysgIGNhc2UgJGhvc3Rfb3MgaW4KKysgIG1pbmd3KiB8IHB3MzIqKQorKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworKyAgICBlbHNlCisrICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bXDFdXC9bXDFdXC9nOy9nImAKKysgICAgZmkKKysgICAgOzsKKysgIGVzYWMKKytmaQorKworIGZpbGVfbWFnaWNfY21kPSRsdF9jdl9maWxlX21hZ2ljX2NtZAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZAorIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorQEAgLTYyNTIsMTEgKzYzNTMsMTY0IEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorIAorIAorIAorKworKworKworKworKworKworKworKworKworKworIAorIAorIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1hciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9YXI7IGFjX3dvcmQ9JDIKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCisrICBhY19jdF9ETExUT09MPSRETExUT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgorKyAgICBETExUT09MPSJmYWxzZSIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKKysgIGZpCisrZWxzZQorKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCisrCisrY2FzZSAkaG9zdF9vcyBpbgorK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKKysgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKysgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgorKyAgKi0taWRlbnRpZnktc3RyaWN0KikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisrICAgIDs7CisrICAqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKysgICAgOzsKKysgIGVzYWMKKysgIDs7CisrKikKKysgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorKyAgOzsKKytlc2FjCisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKyt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCisrCisrCisrCisrCisrCisrCisrCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKysgIGRvCisrICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTYyNzIsNyArNjUyNiw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKKysgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTYyOTIsMTEgKzY1NDYsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorIAorKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCisrICBkb25lCisgZmkKKy1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KKytpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCisgICBhY19jdF9BUj0kQVIKKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKytkbworKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjMxMiw3ICs2NTcwLDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKKysgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTYzMzEsNiArNjU4OSwxMCBAQCBlbHNlCisgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorKworKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhaworK2RvbmUKKysKKyAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgorICAgICBBUj0iZmFsc2UiCisgICBlbHNlCitAQCAtNjM0MiwxNiArNjYwNCw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKKyBlc2FjCisgICAgIEFSPSRhY19jdF9BUgorICAgZmkKKy1lbHNlCistICBBUj0iJGFjX2N2X3Byb2dfQVIiCisgZmkKKyAKKy10ZXN0IC16ICIkQVIiICYmIEFSPWFyCistdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKys6ICR7QVI9YXJ9CisrOiAke0FSX0ZMQUdTPWNydX0KKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KKysgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKworK2ludAorK21haW4gKCkKKyt7CisgCisrICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisrICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCisrICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKysJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KKysJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisrCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgorKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKysgICAgICAgIGZpCisrICAgICAgZmkKKysgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKyAKKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorIAorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQorIAorK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KKytlbHNlCisrICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKKytmaQorIAorIAorIAorQEAgLTY2OTMsOCArNzAxMSw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtNjczMCw2ICs3MDQ4LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTY3NzEsNiArNzA5MCwxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC02NzgyLDcgKzcxMTMsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICAgICAgICphZGRyZXNzOworIH0KK0BAIC02ODA4LDggKzcxMzksOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKKyAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKK0BAIC02ODE5LDggKzcxNTAsOCBAQCBfTFRfRU9GCisgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKKyAJZmkKK0BAIC02ODU3LDYgKzcxODgsMjAgQEAgZWxzZQorICRhc19lY2hvICJvayIgPiY2OyB9CisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZmkKKysKKysKKysKKysKKysKKysKKysKKysKKyAKKyAKKyAKK0BAIC02ODczLDYgKzcyMTgsNDEgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OworK2Vsc2UKKysgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCisrZmkKKysKKysKKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQorKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9CisrICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgOzsKKytlc2FjCisrCisrIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CisrJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKyAKKyAKKyAKK0BAIC03MDg0LDYgKzc0NjQsMTIzIEBAIGVzYWMKKyAKKyBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyAKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IG10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKysgICAgTUFOSUZFU1RfVE9PTD0iOiIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKysgIGZpCisrZWxzZQorKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mNQorKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisrICBmaQorKyAgcm0gLWYgY29uZnRlc3QqCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorKworKworKworKworKworIAorICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICByaGFwc29keSogfCBkYXJ3aW4qKQorQEAgLTc2NDcsNiArODE0NCw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisrICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC03ODQyLDcgKzgzNDEsOCBAQCBmaQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgCisgCisgCitAQCAtNzkzMSw3ICs4NDMxLDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC04MjI5LDggKzg3MjksNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljPQorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQorIAorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworQEAgLTgzOTYsNiArODg5NCwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCisgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKKyAJOzsKKysgICAgICBuYWdmb3IqKQorKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisrCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKKysJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCisrCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKysJOzsKKyAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorQEAgLTg0NTgsNyArODk2Miw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKyAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKysgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OworICAgICAgICopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKK0BAIC04NTE1LDEzICs5MDE5LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CistJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CistCistCistCistCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKytsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTg1ODIsNiArOTA5MCwxMSBAQCBmaQorIAorIAorIAorKworKworKworKworKworICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTg5MzIsNyArOTQ0NSw4IEBAIF9MVF9FT0YKKyAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubworICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCistICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKKyAKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTkwMzEsMTIgKzk1NDUsMTIgQEAgX0xUX0VPRgorIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJworIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCistCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisrCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtOTA1MCw4ICs5NTY0LDggQEAgX0xUX0VPRgorIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCisgCXdsYXJjPQorICAgICAgIGVsc2UKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZmkKKyAgICAgICA7OworIAorQEAgLTkwNjksOCArOTU4Myw4IEBAIF9MVF9FT0YKKyAKKyBfTFRfRU9GCisgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05MTE2LDggKzk2MzAsOCBAQCBfTFRfRU9GCisgCisgICAgICopCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTI0Nyw3ICs5NzYxLDEzIEBAIF9MVF9FT0YKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKKyAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTkyNjAsMjIgKzk3ODAsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTkyODcsNyArOTgxNCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJZWxzZQorIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTMwMCwyMiArOTgzMywyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorQEAgLTkzNjAsMjAgKzk5MDAsNjMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBNaWNyb3NvZnQgVmlzdWFsIEMrKy4KKyAgICAgICAjIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsIGFzIHRoZXJlIGlzCisgICAgICAgIyBubyBzZWFyY2ggcGF0aCBmb3IgRExMcy4KKy0gICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworLSAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCistICAgICAgIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKy0gICAgICBvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworLSAgICAgICMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCistICAgICAgb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIGZpeF9zcmNmaWxlX3BhdGg9J2BjeWdwYXRoIC13ICIkc3JjZmlsZSJgJworLSAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgICBjbCopCisrCSMgTmF0aXZlIE1TVkMKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJYWx3YXlzX2V4cG9ydF9zeW1ib2xzPXllcworKwlmaWxlX2xpc3Rfc3BlYz0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgLVdsLC1kbGx+bGlua25hbWVzPScKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0naWYgdGVzdCAieGAkU0VEIDFxICRleHBvcnRfc3ltYm9sc2AiID0geEVYUE9SVFM7IHRoZW4KKysJICAgIHNlZCAtbiAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIC1lICcxXFxcIXAnIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZWxzZQorKwkgICAgc2VkIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBmaX4KKysJICAkQ0MgLW8gJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzICJAJHRvb2xfb3V0cHV0X29iamRpciRzb25hbWUuZXhwIiAtV2wsLURMTCwtSU1QTElCOiIkdG9vbF9vdXRwdXRfb2JqZGlyJGxpYm5hbWUuZGxsLmxpYiJ+CisrCSAgbGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkjIF9MVF9UQUdWQVIob2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcywgKT0ndHJ1ZScKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEsREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKwkjIERvbid0IHVzZSByYW5saWIKKysJb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2NobW9kIDY0NCAkb2xkbGliJworKwlwb3N0bGlua19jbWRzPSdsdF9vdXRwdXRmaWxlPSJAT1VUUFVUQCJ+CisrCSAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAqLmV4ZXwqLkVYRSkgOzsKKysJICAgICopCisrCSAgICAgIGx0X291dHB1dGZpbGU9IiRsdF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJICAgICAgOzsKKysJICBlc2FjfgorKwkgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAkTUFOSUZFU1RfVE9PTCAtbWFuaWZlc3QgIiRsdF90b29sX291dHB1dGZpbGUubWFuaWZlc3QiIC1vdXRwdXRyZXNvdXJjZToiJGx0X3Rvb2xfb3V0cHV0ZmlsZSIgfHwgZXhpdCAxOworKwkgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgZmknCisrCTs7CisrICAgICAgKikKKysJIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRsaWIgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzIGBmdW5jX2VjaG9fYWxsICIkZGVwbGlicyIgfCAkU0VEICdcJydzLyAtbGMkLy8nXCcnYCAtbGluayAtZGxsfmxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCisrCW9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCisrCSMgRklYTUU6IFNob3VsZCBsZXQgdGhlIHVzZXIgc3BlY2lmeSB0aGUgbGliIHByb2dyYW0uCisrCW9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysJOzsKKysgICAgICBlc2FjCisgICAgICAgOzsKKyAKKyAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKK0BAIC05NDM0LDcgKzEwMDE3LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgICMgRnJlZUJTRCAzIGFuZCBncmVhdGVyIHVzZXMgZ2NjIC1zaGFyZWQgdG8gZG8gc2hhcmVkIGxpYnJhcmllcy4KKyAgICAgZnJlZWJzZCogfCBkcmFnb25mbHkqKQorLSAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nLVIkbGliZGlyJworICAgICAgIGhhcmRjb2RlX2RpcmVjdD15ZXMKKyAgICAgICBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPW5vCitAQCAtOTQ0Miw3ICsxMDAyNSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTk0NTgsNyArMTAwNDEsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtOTQ4MiwxMCArMTAwNjUsMTAgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfStoICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAlpYTY0KikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCSopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJZXNhYworICAgICAgIGVsc2UKK0BAIC05NTY0LDIzICsxMDE0NywzNiBAQCBmaQorIAorICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKysJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28odm9pZCkge30KKytpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCisrZWxzZQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtOTY2NSw3ICsxMDI2MSw3IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBvc2Y0KiB8IG9zZjUqKQkjIGFzIG9zZjMqIHdpdGggdGhlIGFkZGl0aW9uIG9mIC1tc3ltIGZsYWcKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgLWV4cGVjdF91bnJlc29sdmVkIFwqJworQEAgLTk2ODQsOSArMTAyODAsOSBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgICBub191bmRlZmluZWRfZmxhZz0nIC16IGRlZnMnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJd2xhcmM9JyR7d2x9JworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkgICRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LU0gJHt3bH0kbGliLmV4cCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgICAgICAgZWxzZQorIAljYXNlIGAkQ0MgLVYgMj4mMWAgaW4KKyAJKiJDb21waWxlcnMgNS4wIiopCitAQCAtMTAyNjIsOCArMTA4NTgsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMTAyOTYsMTMgKzEwODkzLDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0xMDM5NCw3ICsxMTA0OSw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0xMTE5MCw3ICsxMTg0NSw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExMTkzICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTIzNCwxMCArMTE4ODksMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMTI5Niw3ICsxMTk1MSw3IEBAIGVsc2UKKyAgIGx0X2RsdW5rbm93bj0wOyBsdF9kbG5vX3VzY29yZT0xOyBsdF9kbG5lZWRfdXNjb3JlPTIKKyAgIGx0X3N0YXR1cz0kbHRfZGx1bmtub3duCisgICBjYXQgPiBjb25mdGVzdC4kYWNfZXh0IDw8X0xUX0VPRgorLSNsaW5lIDExMjk5ICJjb25maWd1cmUiCisrI2xpbmUgJExJTkVOTyAiY29uZmlndXJlIgorICNpbmNsdWRlICJjb25mZGVmcy5oIgorIAorICNpZiBIQVZFX0RMRkNOX0gKK0BAIC0xMTM0MCwxMCArMTE5OTUsMTAgQEAgZWxzZQorIC8qIFdoZW4gLWZ2aXNiaWxpdHk9aGlkZGVuIGlzIHVzZWQsIGFzc3VtZSB0aGUgY29kZSBoYXMgYmVlbiBhbm5vdGF0ZWQKKyAgICBjb3JyZXNwb25kaW5nbHkgZm9yIHRoZSBzeW1ib2xzIG5lZWRlZC4gICovCisgI2lmIGRlZmluZWQoX19HTlVDX18pICYmICgoKF9fR05VQ19fID09IDMpICYmIChfX0dOVUNfTUlOT1JfXyA+PSAzKSkgfHwgKF9fR05VQ19fID4gMykpCistdm9pZCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKytpbnQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisgI2VuZGlmCisgCistdm9pZCBmbm9yZCAoKSB7IGludCBpPTQyOyB9CisraW50IGZub3JkICgpIHsgcmV0dXJuIDQyOyB9CisgaW50IG1haW4gKCkKKyB7CisgICB2b2lkICpzZWxmID0gZGxvcGVuICgwLCBMVF9ETEdMT0JBTHxMVF9ETExBWllfT1JfTk9XKTsKK0BAIC0xMzMwOSwxMyArMTM5NjQsMjAgQEAgZXhlZXh0PSdgJEVDSE8gIiRleGVleHQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Vuc2V0PSdgJEVDSE8gIiRsdF91bnNldCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfU1AyTkw9J2AkRUNITyAiJGx0X1NQMk5MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9OTDJTUD0nYCRFQ0hPICIkbHRfTkwyU1AiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQ9J2AkRUNITyAiJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9mbGFnPSdgJEVDSE8gIiRyZWxvYWRfZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2NtZHM9J2AkRUNITyAiJHJlbG9hZF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBPQkpEVU1QPSdgJEVDSE8gIiRPQkpEVU1QIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0nYCRFQ0hPICIkZGVwbGlic19jaGVja19tZXRob2QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbWFnaWNfY21kPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrZmlsZV9tYWdpY19nbG9iPSdgJEVDSE8gIiRmaWxlX21hZ2ljX2dsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3dhbnRfbm9jYXNlZ2xvYj0nYCRFQ0hPICIkd2FudF9ub2Nhc2VnbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytETExUT09MPSdgJEVDSE8gIiRETExUT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0nYCRFQ0hPICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSPSdgJEVDSE8gIiRBUiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVJfRkxBR1M9J2AkRUNITyAiJEFSX0ZMQUdTIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKythcmNoaXZlcl9saXN0X3NwZWM9J2AkRUNITyAiJGFyY2hpdmVyX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgU1RSSVA9J2AkRUNITyAiJFNUUklQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBSQU5MSUI9J2AkRUNITyAiJFJBTkxJQiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2xkX3Bvc3RpbnN0YWxsX2NtZHM9J2AkRUNITyAiJG9sZF9wb3N0aW5zdGFsbF9jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMzMzMCwxNCArMTM5OTIsMTcgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSIgfCAkU0VEICIkZGUKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbm1fZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJG5tX2ZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9zeXNyb290PSdgJEVDSE8gIiRsdF9zeXNyb290IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvYmpkaXI9J2AkRUNITyAiJG9iamRpciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTUFHSUNfQ01EPSdgJEVDSE8gIiRNQUdJQ19DTUQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9waWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vPSdgJEVDSE8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9sb2Nrcz0nYCRFQ0hPICIkbmVlZF9sb2NrcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrTUFOSUZFU1RfVE9PTD0nYCRFQ0hPICIkTUFOSUZFU1RfVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgRFNZTVVUSUw9J2AkRUNITyAiJERTWU1VVElMIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBOTUVESVQ9J2AkRUNITyAiJE5NRURJVCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTElQTz0nYCRFQ0hPICIkTElQTyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTMzNzAsMTIgKzE0MDM1LDEyIEBAIGhhcmRjb2RlX3NobGlicGF0aF92YXI9J2AkRUNITyAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xCisgaGFyZGNvZGVfYXV0b21hdGljPSdgJEVDSE8gIiRoYXJkY29kZV9hdXRvbWF0aWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGg9J2AkRUNITyAiJGluaGVyaXRfcnBhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGxpbmtfYWxsX2RlcGxpYnM9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWZpeF9zcmNmaWxlX3BhdGg9J2AkRUNITyAiJGZpeF9zcmNmaWxlX3BhdGgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9scz0nYCRFQ0hPICIkYWx3YXlzX2V4cG9ydF9zeW1ib2xzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleHBvcnRfc3ltYm9sc19jbWRzPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBleGNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGV4Y2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHByZWxpbmtfY21kcz0nYCRFQ0hPICIkcHJlbGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytwb3N0bGlua19jbWRzPSdgJEVDSE8gIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rPSdgJEVDSE8gIiR2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluayIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbmVlZF9saWJfcHJlZml4PSdgJEVDSE8gIiRuZWVkX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTEzNDMwLDggKzE0MDk1LDEzIEBAIHJlbG9hZF9mbGFnIFwKKyBPQkpEVU1QIFwKKyBkZXBsaWJzX2NoZWNrX21ldGhvZCBcCisgZmlsZV9tYWdpY19jbWQgXAorK2ZpbGVfbWFnaWNfZ2xvYiBcCisrd2FudF9ub2Nhc2VnbG9iIFwKKytETExUT09MIFwKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCBcCisgQVIgXAorIEFSX0ZMQUdTIFwKKythcmNoaXZlcl9saXN0X3NwZWMgXAorIFNUUklQIFwKKyBSQU5MSUIgXAorIENDIFwKK0BAIC0xMzQ0MSwxMiArMTQxMTEsMTQgQEAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2wgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IFwKKytubV9maWxlX2xpc3Rfc3BlYyBcCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcgXAorLWx0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfcGljIFwKKytsdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX28gXAorIG5lZWRfbG9ja3MgXAorK01BTklGRVNUX1RPT0wgXAorIERTWU1VVElMIFwKKyBOTUVESVQgXAorIExJUE8gXAorQEAgLTEzNDYyLDcgKzE0MTM0LDYgQEAgbm9fdW5kZWZpbmVkX2ZsYWcgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMgXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGQgXAorIGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IgXAorLWZpeF9zcmNmaWxlX3BhdGggXAorIGV4Y2x1ZGVfZXhwc3ltcyBcCisgaW5jbHVkZV9leHBzeW1zIFwKKyBmaWxlX2xpc3Rfc3BlYyBcCitAQCAtMTM0OTgsNiArMTQxNjksNyBAQCBtb2R1bGVfY21kcyBcCisgbW9kdWxlX2V4cHN5bV9jbWRzIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzIFwKKyBwcmVsaW5rX2NtZHMgXAorK3Bvc3RsaW5rX2NtZHMgXAorIHBvc3RpbnN0YWxsX2NtZHMgXAorIHBvc3R1bmluc3RhbGxfY21kcyBcCisgZmluaXNoX2NtZHMgXAorQEAgLTE0MjYzLDcgKzE0OTM1LDggQEAgJGFzX2VjaG8gWCIkZmlsZSIgfAorICMgTk9URTogQ2hhbmdlcyBtYWRlIHRvIHRoaXMgZmlsZSB3aWxsIGJlIGxvc3Q6IGxvb2sgYXQgbHRtYWluLnNoLgorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0xNDM2NiwxOSArMTUwMzksNDIgQEAgU1AyTkw9JGx0X2x0X1NQMk5MCisgIyB0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzLgorIE5MMlNQPSRsdF9sdF9OTDJTUAorIAorKyMgY29udmVydCBcJGJ1aWxkIGZpbGUgbmFtZXMgdG8gXCRob3N0IGZvcm1hdC4KKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisrCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4KKyt0b190b29sX2ZpbGVfY21kPSRsdF9jdl90b190b29sX2ZpbGVfY21kCisrCisgIyBBbiBvYmplY3Qgc3ltYm9sIGR1bXBlci4KKyBPQkpEVU1QPSRsdF9PQkpEVU1QCisgCisgIyBNZXRob2QgdG8gY2hlY2sgd2hldGhlciBkZXBlbmRlbnQgbGlicmFyaWVzIGFyZSBzaGFyZWQgb2JqZWN0cy4KKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfZGVwbGlic19jaGVja19tZXRob2QKKyAKKy0jIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPT0gImZpbGVfbWFnaWMiLgorKyMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyBmaWxlX21hZ2ljX2NtZD0kbHRfZmlsZV9tYWdpY19jbWQKKyAKKysjIEhvdyB0byBmaW5kIHBvdGVudGlhbCBmaWxlcyB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK2ZpbGVfbWFnaWNfZ2xvYj0kbHRfZmlsZV9tYWdpY19nbG9iCisrCisrIyBGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrd2FudF9ub2Nhc2VnbG9iPSRsdF93YW50X25vY2FzZWdsb2IKKysKKysjIERMTCBjcmVhdGlvbiBwcm9ncmFtLgorK0RMTFRPT0w9JGx0X0RMTFRPT0wKKysKKysjIENvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXMuCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JGx0X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kCisrCisgIyBUaGUgYXJjaGl2ZXIuCisgQVI9JGx0X0FSCisrCisrIyBGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZS4KKyBBUl9GTEFHUz0kbHRfQVJfRkxBR1MKKyAKKysjIEhvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlci4KKythcmNoaXZlcl9saXN0X3NwZWM9JGx0X2FyY2hpdmVyX2xpc3Rfc3BlYworKworICMgQSBzeW1ib2wgc3RyaXBwaW5nIHByb2dyYW0uCisgU1RSSVA9JGx0X1NUUklQCisgCitAQCAtMTQ0MDgsNiArMTUxMDQsMTIgQEAgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MKKyAjIFRyYW5zZm9ybSB0aGUgb3V0cHV0IG9mIG5tIGluIGEgQyBuYW1lIGFkZHJlc3MgcGFpciB3aGVuIGxpYiBwcmVmaXggaXMgbmVlZGVkLgorIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0kbHRfbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeAorIAorKyMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzIGZvciBcJE5NLgorK25tX2ZpbGVfbGlzdF9zcGVjPSRsdF9ubV9maWxlX2xpc3Rfc3BlYworKworKyMgVGhlIHJvb3Qgd2hlcmUgdG8gc2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzLGFuZCBpbiB3aGljaCBvdXIgbGlicmFyaWVzIHNob3VsZCBiZSBpbnN0YWxsZWQuCisrbHRfc3lzcm9vdD0kbHRfc3lzcm9vdAorKworICMgVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeSB0aGF0IGNvbnRhaW5zIHRlbXBvcmFyeSBsaWJ0b29sIGZpbGVzLgorIG9iamRpcj0kb2JqZGlyCisgCitAQCAtMTQ0MTcsNiArMTUxMTksOSBAQCBNQUdJQ19DTUQ9JE1BR0lDX0NNRAorICMgTXVzdCB3ZSBsb2NrIGZpbGVzIHdoZW4gZG9pbmcgY29tcGlsYXRpb24/CisgbmVlZF9sb2Nrcz0kbHRfbmVlZF9sb2NrcworIAorKyMgTWFuaWZlc3QgdG9vbC4KKytNQU5JRkVTVF9UT09MPSRsdF9NQU5JRkVTVF9UT09MCisrCisgIyBUb29sIHRvIG1hbmlwdWxhdGUgYXJjaGl2ZWQgRFdBUkYgZGVidWcgc3ltYm9sIGZpbGVzIG9uIE1hYyBPUyBYLgorIERTWU1VVElMPSRsdF9EU1lNVVRJTAorIAorQEAgLTE0NTMxLDEyICsxNTIzNiwxMiBAQCB3aXRoX2djYz0kR0NDCisgIyBDb21waWxlciBmbGFnIHRvIHR1cm4gb2ZmIGJ1aWx0aW4gZnVuY3Rpb25zLgorIG5vX2J1aWx0aW5fZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcKKyAKKy0jIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCistd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWMKKyAKKysjIEhvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXIuCisrd2w9JGx0X2x0X3Byb2dfY29tcGlsZXJfd2wKKysKKyAjIENvbXBpbGVyIGZsYWcgdG8gcHJldmVudCBkeW5hbWljIGxpbmtpbmcuCisgbGlua19zdGF0aWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9zdGF0aWMKKyAKK0BAIC0xNDYyMyw5ICsxNTMyOCw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGgKKyAjIFdoZXRoZXIgbGlidG9vbCBtdXN0IGxpbmsgYSBwcm9ncmFtIGFnYWluc3QgYWxsIGl0cyBkZXBlbmRlbmN5IGxpYnJhcmllcy4KKyBsaW5rX2FsbF9kZXBsaWJzPSRsaW5rX2FsbF9kZXBsaWJzCisgCistIyBGaXggdGhlIHNoZWxsIHZhcmlhYmxlIFwkc3JjZmlsZSBmb3IgdGhlIGNvbXBpbGVyLgorLWZpeF9zcmNmaWxlX3BhdGg9JGx0X2ZpeF9zcmNmaWxlX3BhdGgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9scworIAorQEAgLTE0NjQxLDYgKzE1MzQzLDkgQEAgaW5jbHVkZV9leHBzeW1zPSRsdF9pbmNsdWRlX2V4cHN5bXMKKyAjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgbGlua2luZyBwcm9ncmFtcyAoYWdhaW5zdCBsaWJyYXJpZXMpIHdpdGggdGVtcGxhdGVzLgorIHByZWxpbmtfY21kcz0kbHRfcHJlbGlua19jbWRzCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHMKKysKKyAjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcy4KKyBmaWxlX2xpc3Rfc3BlYz0kbHRfZmlsZV9saXN0X3NwZWMKKyAKK0BAIC0xNDY3MywyMTAgKzE1Mzc4LDE2OSBAQCBsdG1haW49IiRhY19hdXhfZGlyL2x0bWFpbi5zaCIKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIGNhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PSR7IzF9CistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopICMgQm91cm5lIGNvbXBhdGlibGUgZnVuY3Rpb25zLgorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorLSAgZnVuY19kaXJuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGRpcm5hbWUiYAorLSAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKy0gIGVsc2UKKy0gICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorLSAgZmkKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorLQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKy0KKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtePV0qXCk9LiovXDEvO3EnCistbXlfc2VkX2xvbmdfYXJnPScxcy9eLVtePV0qPS8vJworLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX29wdCJgCistICBmdW5jX29wdF9zcGxpdF9hcmc9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19hcmciYAorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBmdW5jX2xvMm9fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbG8ybyJgCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICdzL1wuW14uXSokLy5sby8nYAorLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIkQCJgCistfQorLQorLSMgZnVuY19sZW4gc3RyaW5nCistIyBTVFJJTkcgbWF5IG5vdCBzdGFydCB3aXRoIGEgaHlwaGVuLgorLWZ1bmNfbGVuICgpCisteworLSAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkMSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKy0KKy1fTFRfRU9GCistZXNhYworLQorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMSs9XCQyIgorLX0KKy1fTFRfRU9GCistICAgIDs7CistICAqKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkMT1cJCQxXCQyIgorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICBlc2FjCistCistCistICBzZWQgLW4gJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvLCRwJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisrICBzZWQgJyRxJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCisrICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorKworKyAgaWYgdGVzdCB4IiR4c2lfc2hlbGwiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZSAvY1wKKytmdW5jX2Rpcm5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19iYXNlbmFtZSAvY1wKKytmdW5jX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgL2NcCisrZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrXCAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zdHJpcG5hbWUgKCkkLywvXn0gIyBmdW5jX3N0cmlwbmFtZSAvY1wKKytmdW5jX3N0cmlwbmFtZSAoKVwKKyt7XAorK1wgICAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZVwKKytcICAgICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC5cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3RyaXBuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9sb25nX29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfbG9uZ19vcHQgL2NcCisrZnVuY19zcGxpdF9sb25nX29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9XAorK1wgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9JHsxIyo9fVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9sb25nX29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfc2hvcnRfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgL2NcCisrZnVuY19zcGxpdF9zaG9ydF9vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZz0kezEjPz99XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT0kezElIiRmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmcifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zcGxpdF9zaG9ydF9vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xvMm8gKCkkLywvXn0gIyBmdW5jX2xvMm8gL2NcCisrZnVuY19sbzJvICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7XAorK1wgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOztcCisrXCAgICBlc2FjXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xvMm8gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3hmb3JtICgpJC8sL159ICMgZnVuY194Zm9ybSAvY1wKKytmdW5jX3hmb3JtICgpXAorK3tcCisrICAgIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG9cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfeGZvcm0gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FyaXRoICgpJC8sL159ICMgZnVuY19hcml0aCAvY1wKKytmdW5jX2FyaXRoICgpXAorK3tcCisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcml0aCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbGVuICgpJC8sL159ICMgZnVuY19sZW4gL2NcCisrZnVuY19sZW4gKClcCisre1wKKysgICAgZnVuY19sZW5fcmVzdWx0PSR7IzF9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2xlbiBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworK2ZpCisrCisraWYgdGVzdCB4IiRsdF9zaGVsbF9hcHBlbmQiID0geHllczsgdGhlbgorKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kICgpJC8sL159ICMgZnVuY19hcHBlbmQgL2NcCisrZnVuY19hcHBlbmQgKClcCisre1wKKysgICAgZXZhbCAiJHsxfSs9XFwkezJ9IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZF9xdW90ZWQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZF9xdW90ZWQgL2NcCisrZnVuY19hcHBlbmRfcXVvdGVkICgpXAorK3tcCisrXCAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkezJ9IlwKKytcICAgIGV2YWwgIiR7MX0rPVxcXFwgXFwkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZF9xdW90ZWQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCB3aGVyZSBwb3NzaWJsZSBieSBkaXJlY3QgdXNlIG9mICcrPScKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMT0iJFwxJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZmkKKysKKytpZiB0ZXN0IHgiJF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWwiID0geCI6IjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiBVbmFibGUgdG8gc3Vic3RpdHV0ZSBleHRlbmRlZCBzaGVsbCBmdW5jdGlvbnMgaW4gJG9maWxlIiA+JjI7fQorK2ZpCisrCisrCisrICAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorICAgICAocm0gLWYgIiRvZmlsZSIgJiYgY3AgIiRjZmdmaWxlIiAiJG9maWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUiKQorICAgY2htb2QgK3ggIiRvZmlsZSIKKyAKK2RpZmYgLS1naXQgYS9sZC9jb25maWd1cmUgYi9sZC9jb25maWd1cmUKK2luZGV4IDgxMTEzNGE1MDNiLi5mNDMyZjQ2MzdkMCAxMDA3NTUKKy0tLSBhL2xkL2NvbmZpZ3VyZQorKysrIGIvbGQvY29uZmlndXJlCitAQCAtNjkxLDggKzY5MSwxMSBAQCBPVE9PTAorIExJUE8KKyBOTUVESVQKKyBEU1lNVVRJTAorK01BTklGRVNUX1RPT0wKKyBSQU5MSUIKKythY19jdF9BUgorIEFSCisrRExMVE9PTAorIE9CSkRVTVAKKyBMTl9TCisgTk0KK0BAIC04MTksNiArODIyLDcgQEAgZW5hYmxlX3N0YXRpYworIHdpdGhfcGljCisgZW5hYmxlX2Zhc3RfaW5zdGFsbAorIHdpdGhfZ251X2xkCisrd2l0aF9saWJ0b29sX3N5c3Jvb3QKKyBlbmFibGVfbGlidG9vbF9sb2NrCisgZW5hYmxlX3BsdWdpbnMKKyBlbmFibGVfbGFyZ2VmaWxlCitAQCAtMTUxMiw2ICsxNTE2LDggQEAgT3B0aW9uYWwgUGFja2FnZXM6CisgICAtLXdpdGgtcGljICAgICAgICAgICAgICB0cnkgdG8gdXNlIG9ubHkgUElDL25vbi1QSUMgb2JqZWN0cyBbZGVmYXVsdD11c2UKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGJvdGhdCisgICAtLXdpdGgtZ251LWxkICAgICAgICAgICBhc3N1bWUgdGhlIEMgY29tcGlsZXIgdXNlcyBHTlUgbGQgW2RlZmF1bHQ9bm9dCisrICAtLXdpdGgtbGlidG9vbC1zeXNyb290PURJUiBTZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMgd2l0aGluIERJUgorKyAgICAgICAgICAgICAgICAgICAgICAgIChvciB0aGUgY29tcGlsZXIncyBzeXNyb290IGlmIG5vdCBzcGVjaWZpZWQpLgorICAgLS13aXRoLWxpYi1wYXRoPWRpcjE6ZGlyMi4uLiAgc2V0IGRlZmF1bHQgTElCX1BBVEgKKyAgIC0td2l0aC1zeXNyb290PURJUiBTZWFyY2ggZm9yIHVzci9saWIgZXQgYWwgd2l0aGluIERJUi4KKyAgIC0td2l0aC1zeXN0ZW0temxpYiAgICAgIHVzZSBpbnN0YWxsZWQgbGliegorQEAgLTU5NjUsOCArNTk3MSw4IEBAIGVzYWMKKyAKKyAKKyAKKy1tYWNyb192ZXJzaW9uPScyLjIuN2EnCistbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKKyttYWNyb192ZXJzaW9uPScyLjQnCisrbWFjcm9fcmV2aXNpb249JzEuMzI5MycKKyAKKyAKKyAKK0BAIC02MDA2LDcgKzYwMTIsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CisgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCistaWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKytpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICAgRUNITz0ncHJpbnQgLXIgLS0nCisgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KK0BAIC02NjkyLDggKzY2OTgsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCisgeHNpX3NoZWxsPW5vCisgKCBfbHRfZHVtbXk9ImEvYi9jIgorLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKy0gICAgICA9IGMsYS9iLCwgXAorKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKysgICAgICA9IGMsYS9iLGIvYywgXAorICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCisgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCisgICAmJiB4c2lfc2hlbGw9eWVzCitAQCAtNjc0Miw2ICs2NzQ4LDgwIEBAIGVzYWMKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqLSotY3lnd2luKiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KKytsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKytjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KKyBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02NzU4LDYgKzY4MzgsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBlc2FjCisgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworIGNhc2UgJGhvc3Rfb3MgaW4KKysgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKysgICAgZmkKKysgICAgOzsKKyAgIGRhcndpbiopCisgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworQEAgLTY5MjYsNyArNzAxMSw4IEBAIG1pbmd3KiB8IHB3MzIqKQorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKKyAgIGVsc2UKKy0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisrICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKysgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgICBmaQorICAgOzsKK0BAIC03MDgwLDYgKzcxNjYsMjEgQEAgZXNhYworIGZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CisgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CisrCisrZmlsZV9tYWdpY19nbG9iPQorK3dhbnRfbm9jYXNlZ2xvYj1ubworK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisrICBjYXNlICRob3N0X29zIGluCisrICBtaW5ndyogfCBwdzMyKikKKysgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKysgICAgZWxzZQorKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCisrICAgIGZpCisrICAgIDs7CisrICBlc2FjCisrZmkKKysKKyBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKKyB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KK0BAIC03MDk1LDkgKzcxOTYsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorIAorIAorIAorKworKworKworKworKworKworKworKworKworKworK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCisrICBhY19jdF9ETExUT09MPSRETExUT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgorKyAgICBETExUT09MPSJmYWxzZSIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKKysgIGZpCisrZWxzZQorKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCisrCisrY2FzZSAkaG9zdF9vcyBpbgorK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKKysgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKysgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgorKyAgKi0taWRlbnRpZnktc3RyaWN0KikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisrICAgIDs7CisrICAqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKysgICAgOzsKKysgIGVzYWMKKysgIDs7CisrKikKKysgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorKyAgOzsKKytlc2FjCisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKyt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCisrCisrCisrCisrCisrCisrCisrCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKysgIGRvCisrICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTcxMTMsNyArNzM2Nyw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKKysgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTcxMzMsMTEgKzczODcsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorIAorKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCisrICBkb25lCisgZmkKKy1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KKytpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCisgICBhY19jdF9BUj0kQVIKKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKytkbworKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNzE1Myw3ICs3NDExLDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKKysgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTcxNzIsNiArNzQzMCwxMCBAQCBlbHNlCisgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorKworKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhaworK2RvbmUKKysKKyAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgorICAgICBBUj0iZmFsc2UiCisgICBlbHNlCitAQCAtNzE4MywxMiArNzQ0NSwxMiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKKyBlc2FjCisgICAgIEFSPSRhY19jdF9BUgorICAgZmkKKy1lbHNlCistICBBUj0iJGFjX2N2X3Byb2dfQVIiCisgZmkKKyAKKy10ZXN0IC16ICIkQVIiICYmIEFSPWFyCistdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKys6ICR7QVI9YXJ9CisrOiAke0FSX0ZMQUdTPWNydX0KKysKKysKKyAKKyAKKyAKK0BAIC03MTk4LDYgKzc0NjAsNjIgQEAgdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KKysgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKworK2ludAorK21haW4gKCkKKyt7CisrCisrICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisrICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCisrICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKysJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KKysJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisrCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgorKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKysgICAgICAgIGZpCisrICAgICAgZmkKKysgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKysKKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorKworK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQorKworK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KKytlbHNlCisrICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKKytmaQorKworKworKworKworKworIAorIAorIGlmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KK0BAIC03NTM0LDggKzc4NTIsOCBAQCBlc2FjCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9InNlZCAtbiAtZSAncy9eVCAuKiBcKC4qXCkkL2V4dGVybiBpbnQgXDEoKTsvcCcgLWUgJ3MvXiRzeW1jb2RlKiAuKiBcKC4qXCkkL2V4dGVybiBjaGFyIFwxOy9wJyIKKyAKKyAjIFRyYW5zZm9ybSBhbiBleHRyYWN0ZWQgc3ltYm9sIGxpbmUgaW50byBzeW1ib2wgbmFtZSBhbmQgc3ltYm9sIGFkZHJlc3MKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisgCisgIyBIYW5kbGUgQ1JMRiBpbiBtaW5ndyB0b29sIGNoYWluCisgb3B0X2NyPQorQEAgLTc1NzEsNiArNzg4OSw3IEBAIGZvciBhY19zeW1wcmZ4IGluICIiICJfIjsgZG8KKyAgIGVsc2UKKyAgICAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0ic2VkIC1uIC1lICdzL14uKlsJIF1cKCRzeW1jb2RlJHN5bWNvZGUqXClbCSBdWwkgXSokYWNfc3ltcHJmeCRzeW1wYXQkb3B0X2NyJC8kc3lteGZybS9wJyIKKyAgIGZpCisrICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZSB8IHNlZCAnLyBfX2dudV9sdG8vZCciCisgCisgICAjIENoZWNrIHRvIHNlZSB0aGF0IHRoZSBwaXBlIHdvcmtzIGNvcnJlY3RseS4KKyAgIHBpcGVfd29ya3M9bm8KK0BAIC03NjEyLDYgKzc5MzEsMTggQEAgX0xUX0VPRgorICAgICAgIGlmICRHUkVQICcgbm1fdGVzdF92YXIkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCWlmICRHUkVQICcgbm1fdGVzdF9mdW5jJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAkgIGNhdCA8PF9MVF9FT0YgPiBjb25mdGVzdC4kYWNfZXh0CisrLyogS2VlcCB0aGlzIGNvZGUgaW4gc3luYyBiZXR3ZWVuIGxpYnRvb2wubTQsIGx0bWFpbiwgbHRfc3lzdGVtLmgsIGFuZCB0ZXN0cy4gICovCisrI2lmIGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fQ1lHV0lOX18pIHx8IGRlZmluZWQoX1dJTjMyX1dDRSkKKysvKiBEQVRBIGltcG9ydHMgZnJvbSBETExzIG9uIFdJTjMyIGNvbid0IGJlIGNvbnN0LCBiZWNhdXNlIHJ1bnRpbWUKKysgICByZWxvY2F0aW9ucyBhcmUgcGVyZm9ybWVkIC0tIHNlZSBsZCdzIGRvY3VtZW50YXRpb24gb24gcHNldWRvLXJlbG9jcy4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxpZiBkZWZpbmVkKF9fb3NmX18pCisrLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YS4gICovCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QKKysjZWxzZQorKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUIGNvbnN0CisrI2VuZGlmCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgZXh0ZXJuICJDIiB7CisgI2VuZGlmCitAQCAtNzYyMyw3ICs3OTU0LDcgQEAgX0xUX0VPRgorIAkgIGNhdCA8PF9MVF9FT0YgPj4gY29uZnRlc3QuJGFjX2V4dAorIAorIC8qIFRoZSBtYXBwaW5nIGJldHdlZW4gc3ltYm9sIG5hbWVzIGFuZCBzeW1ib2xzLiAgKi8KKy1jb25zdCBzdHJ1Y3QgeworK0xUX0RMU1lNX0NPTlNUIHN0cnVjdCB7CisgICBjb25zdCBjaGFyICpuYW1lOworICAgdm9pZCAgICAgICAqYWRkcmVzczsKKyB9CitAQCAtNzY0OSw4ICs3OTgwLDggQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyBfTFRfRU9GCisgCSAgIyBOb3cgdHJ5IGxpbmtpbmcgdGhlIHR3byBmaWxlcy4KKyAJICBtdiBjb25mdGVzdC4kYWNfb2JqZXh0IGNvbmZ0c3RtLiRhY19vYmpleHQKKy0JICBsdF9zYXZlX0xJQlM9IiRMSUJTIgorLQkgIGx0X3NhdmVfQ0ZMQUdTPSIkQ0ZMQUdTIgorKwkgIGx0X2dsb2JzeW1fc2F2ZV9MSUJTPSRMSUJTCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgCSAgTElCUz0iY29uZnRzdG0uJGFjX29iamV4dCIKKyAJICBDRkxBR1M9IiRDRkxBR1MkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciCisgCSAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2xpbmtcIiI7IH0gPiY1CitAQCAtNzY2MCw4ICs3OTkxLDggQEAgX0xUX0VPRgorICAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCisgCSAgICBwaXBlX3dvcmtzPXllcworIAkgIGZpCistCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKKy0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKysJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUworKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUworIAllbHNlCisgCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiY1CisgCWZpCitAQCAtNzY5OCw2ICs4MDI5LDE5IEBAIGVsc2UKKyAkYXNfZWNobyAib2siID4mNjsgfQorIGZpCisgCisrIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCisraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tAXUZJTEUnID4vZGV2L251bGw7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2ZpCisrCisrCisrCisrCisrCisrCisrCisgCisgCisgCitAQCAtNzcxNCw2ICs4MDU4LDQyIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3Igc3lzcm9vdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yIHN5c3Jvb3QuLi4gIiA+JjY7IH0KKysKKysjIENoZWNrIHdoZXRoZXIgLS13aXRoLWxpYnRvb2wtc3lzcm9vdCB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdCtzZXR9IiA9IHNldDsgdGhlbiA6CisrICB3aXRodmFsPSR3aXRoX2xpYnRvb2xfc3lzcm9vdDsKKytlbHNlCisrICB3aXRoX2xpYnRvb2xfc3lzcm9vdD1ubworK2ZpCisrCisrCisrbHRfc3lzcm9vdD0KKytjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCisrIHllcykKKysgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKKysgICBmaQorKyAgIDs7ICMoCisrIC8qKQorKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorKyAgIDs7ICMoCisrIG5vfCcnKQorKyAgIDs7ICMoCisrICopCisrICAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjUKKyskYXNfZWNobyAiJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNjsgfQorKyAgIGFzX2ZuX2Vycm9yICQ/ICJUaGUgc3lzcm9vdCBtdXN0IGJlIGFuIGFic29sdXRlIHBhdGguIiAiJExJTkVOTyIgNQorKyAgIDs7CisrZXNhYworKworKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHtsdF9zeXNyb290Oi1ub30iID4mNQorKyRhc19lY2hvICIke2x0X3N5c3Jvb3Q6LW5vfSIgPiY2OyB9CisgCisgCisgCitAQCAtNzkyNSw2ICs4MzA1LDEyMyBAQCBlc2FjCisgCisgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCisgCisraWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fW10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1tdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIkTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiR7YWNfdG9vbF9wcmVmaXh9bXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRNQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRNQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJE1BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N0X01BTklGRVNUX1RPT0w9JE1BTklGRVNUX1RPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAibXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBtdDsgYWNfd29yZD0kMgorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKytpZiAke2FjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGlmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgIyBMZXQgdGhlIHVzZXIgb3ZlcnJpZGUgdGhlIHRlc3QuCisrZWxzZQorK2FzX3NhdmVfSUZTPSRJRlM7IElGUz0kUEFUSF9TRVBBUkFUT1IKKytmb3IgYXNfZGlyIGluICRQQVRICisrZG8KKysgIElGUz0kYXNfc2F2ZV9JRlMKKysgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisrICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworKyAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorKyAgICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9Im10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9NQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPSB4OyB0aGVuCisrICAgIE1BTklGRVNUX1RPT0w9IjoiCisrICBlbHNlCisrICAgIGNhc2UgJGNyb3NzX2NvbXBpbGluZzokYWNfdG9vbF93YXJuZWQgaW4KKyt5ZXM6KQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjUKKyskYXNfZWNobyAiJGFzX21lOiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mMjt9CisrYWNfdG9vbF93YXJuZWQ9eWVzIDs7CisrZXNhYworKyAgICBNQU5JRkVTVF9UT09MPSRhY19jdF9NQU5JRkVTVF9UT09MCisrICBmaQorK2Vsc2UKKysgIE1BTklGRVNUX1RPT0w9IiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiCisrZmkKKysKKyt0ZXN0IC16ICIkTUFOSUZFU1RfVE9PTCIgJiYgTUFOSUZFU1RfVE9PTD1tdAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubworKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mNQorKyAgJE1BTklGRVNUX1RPT0wgJy0/JyAyPmNvbmZ0ZXN0LmVyciA+IGNvbmZ0ZXN0Lm91dAorKyAgY2F0IGNvbmZ0ZXN0LmVyciA+JjUKKysgIGlmICRHUkVQICdNYW5pZmVzdCBUb29sJyBjb25mdGVzdC5vdXQgPiAvZGV2L251bGw7IHRoZW4KKysgICAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPXllcworKyAgZmkKKysgIHJtIC1mIGNvbmZ0ZXN0KgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjY7IH0KKytpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorKyAgTUFOSUZFU1RfVE9PTD06CisrZmkKKysKKysKKysKKysKKysKKyAKKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgcmhhcHNvZHkqIHwgZGFyd2luKikKK0BAIC04NDg4LDYgKzg5ODUsOCBAQCBfTFRfRU9GCisgICAgICAgJExUQ0MgJExUQ0ZMQUdTIC1jIC1vIGNvbmZ0ZXN0Lm8gY29uZnRlc3QuYyAyPiY1CisgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mNQorICAgICAgICRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIDI+JjUKKysgICAgICBlY2hvICIkUkFOTElCIGxpYmNvbmZ0ZXN0LmEiID4mNQorKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiY1CisgICAgICAgY2F0ID4gY29uZnRlc3QuYyA8PCBfTFRfRU9GCisgaW50IG1haW4oKSB7IHJldHVybiAwO30KKyBfTFRfRU9GCitAQCAtODU1Niw2ICs5MDU1LDE2IEBAIGRvbmUKKyAKKyAKKyAKKytmdW5jX3N0cmlwbmFtZV9jbmYgKCkKKyt7CisrICBjYXNlICR7Mn0gaW4KKysgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CisrICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CisrICBlc2FjCisrfSAjIGZ1bmNfc3RyaXBuYW1lX2NuZgorKworKworKworIAorIAorICMgU2V0IG9wdGlvbnMKK0BAIC04Njg0LDcgKzkxOTMsOCBAQCBmaQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgCisgCisgCitAQCAtODc3Myw3ICs5MjgzLDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC05MDcxLDggKzk1ODEsNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljPQorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQorIAorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworQEAgLTkyMzgsNiArOTc0NiwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCisgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKKyAJOzsKKysgICAgICBuYWdmb3IqKQorKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisrCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKKysJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCisrCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKysJOzsKKyAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorQEAgLTkzMDAsNyArOTgxNCw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKyAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKysgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OworICAgICAgICopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKK0BAIC05MzU3LDEzICs5ODcxLDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CistJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CistCistCistCistCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKytsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTk0MjQsNiArOTk0MiwxMSBAQCBmaQorIAorIAorIAorKworKworKworKworKworICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTk3NzQsNyArMTAyOTcsOCBAQCBfTFRfRU9GCisgICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKyAgICAgICBhbHdheXNfZXhwb3J0X3N5bWJvbHM9bm8KKyAgICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworLSAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLztzL14uKlsgXV9fbm1fX1woW14gXSpcKVsgXVteIF0qL1wxIERBVEEvOy9eSVsgXS9kOy9eW0FJVFddWyBdL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhjbHVkZV9leHBzeW1zPSdbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnCisgCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKK0BAIC05ODczLDEyICsxMDM5NywxMiBAQCBfTFRfRU9GCisgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKKy0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKysJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKy0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisrCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAJICBmaQorIAkgIDs7CisgCWVzYWMKK0BAIC05ODkyLDggKzEwNDE2LDggQEAgX0xUX0VPRgorIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCisgCXdsYXJjPQorICAgICAgIGVsc2UKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZmkKKyAgICAgICA7OworIAorQEAgLTk5MTEsOCArMTA0MzUsOCBAQCBfTFRfRU9GCisgCisgX0xUX0VPRgorICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTk1OCw4ICsxMDQ4Miw4IEBAIF9MVF9FT0YKKyAKKyAgICAgKikKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC0xMDA4OSw3ICsxMDYxMywxMyBAQCBfTFRfRU9GCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCisgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC0xMDEwMiwyMiArMTA2MzIsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAgICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAnIlwke3dsfSRub19lbnRyeV9mbGFnIicgJGNvbXBpbGVyX2ZsYWdzIGBpZiB0ZXN0ICJ4JHthbGxvd191bmRlZmluZWRfZmxhZ30iICE9ICJ4IjsgdGhlbiBmdW5jX2VjaG9fYWxsICIke3dsfSR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IjsgZWxzZSA6OyBmaWAgJyJcJHt3bH0kZXhwX3N5bV9mbGFnOlwkZXhwb3J0X3N5bWJvbHMgJHNoYXJlZF9mbGFnIgorQEAgLTEwMTI5LDcgKzEwNjY2LDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAllbHNlCisgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC0xMDE0MiwyMiArMTA2ODUsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKK0BAIC0xMDIwMSwyMSArMTA3NTEsNjQgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgIyBXaGVuIG5vdCB1c2luZyBnY2MsIHdlIGN1cnJlbnRseSBhc3N1bWUgdGhhdCB3ZSBhcmUgdXNpbmcKKyAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKy0gICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCistICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorLSAgICAgIGxpYmV4dD1saWIKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKy0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKKy0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKy0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCistICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKy0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCistICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCistICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgICAgY2wqKQorKwkjIE5hdGl2ZSBNU1ZDCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKKysJZmlsZV9saXN0X3NwZWM9J0AnCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGVsc2UKKysJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZml+CisrCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgIGxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKysJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysJIyBEb24ndCB1c2UgcmFubGliCisrCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisrCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorKwkgICAgKi5leGV8Ki5FWEUpIDs7CisrCSAgICAqKQorKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIDs7CisrCSAgZXNhY34KKysJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKysJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworKwkgIGZpJworKwk7OworKyAgICAgICopCisrCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgorKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCTs7CisrICAgICAgZXNhYworICAgICAgIDs7CisgCisgICAgIGRhcndpbiogfCByaGFwc29keSopCitAQCAtMTAyNzYsNyArMTA4NjksNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KK0BAIC0xMDI4NCw3ICsxMDg3Nyw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTEwMzAwLDcgKzEwODkzLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXgxMCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgICBmaQorQEAgLTEwMzI0LDEwICsxMDkxNywxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJKikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAllc2FjCisgICAgICAgZWxzZQorQEAgLTEwNDA2LDIzICsxMDk5OSwzNiBAQCBmaQorIAorICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAkjIFRyeSB0byB1c2UgdGhlIC1leHBvcnRlZF9zeW1ib2wgbGQgb3B0aW9uLCBpZiBpdCBkb2VzIG5vdAorIAkjIHdvcmssIGFzc3VtZSB0aGF0IC1leHBvcnRzX2ZpbGUgZG9lcyBub3Qgd29yayBlaXRoZXIgYW5kCisgCSMgaW1wbGljaXRseSBleHBvcnQgYWxsIHN5bWJvbHMuCistICAgICAgICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorLSAgICAgICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorKwl7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRob3N0X29zIGxpbmtlciBhY2NlcHRzIC1leHBvcnRlZF9zeW1ib2wuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKysJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorKwkgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworLWludCBmb28odm9pZCkge30KKytpbnQgZm9vICh2b2lkKSB7IHJldHVybiAwOyB9CisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorLSAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworLQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9eWVzCisrZWxzZQorKyAgbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm8KKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLSAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKysgICAgICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA+JjY7IH0KKysJaWYgdGVzdCAiJGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sIiA9IHllczsgdGhlbgorKyAgICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1leHBvcnRzX2ZpbGUgJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCitAQCAtMTA1MDcsNyArMTExMTMsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICAgZWxzZQorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKK0BAIC0xMDUyNiw5ICsxMTEzMiw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAl3bGFyYz0nJHt3bH0nCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICBlbHNlCisgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgorIAkqIkNvbXBpbGVycyA1LjAiKikKK0BAIC0xMTEwNCw4ICsxMTcxMCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIG5lZWRfdmVyc2lvbj1ubworICAgbmVlZF9saWJfcHJlZml4PW5vCisgCistICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KKy0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisrICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisrICB5ZXMsKikKKysgICAgIyBnY2MKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KK0BAIC0xMTEzOCwxMyArMTE3NDUsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgICA7OworICAgICBlc2FjCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisrICAgIDs7CisrCisrICAqLGNsKikKKysgICAgIyBOYXRpdmUgTVNWQworKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKysgICAgICBlbHNlCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgZmkKKysgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKysgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisrICAgICAgOzsKKysgICAgZXNhYworKworKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisrICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKysgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorKyAgICAgICAkUk0gXCRkbHBhdGgnCisrICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJworICAgICA7OworIAorICAgKikKKysgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTExMjM2LDcgKzExOTAxLDcgQEAgaGFpa3UqKQorICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCistICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJworKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCisgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICA7OworIAorQEAgLTEyMDMyLDcgKzEyNjk3LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTIwMzUgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTEyMDc2LDEwICsxMjc0MSwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTEyMTM4LDcgKzEyODAzLDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTIxNDEgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTEyMTgyLDEwICsxMjg0NywxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTEyNTc3LDYgKzEzMjQyLDcgQEAgJFJNIC1yIGNvbmZ0ZXN0KgorIAorICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KKyAgIGx0X3NhdmVfQ0M9JENDCisrICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgICBsdF9zYXZlX0xEPSRMRAorICAgbHRfc2F2ZV9HQ0M9JEdDQworICAgR0NDPSRHWFgKK0BAIC0xMjU5NCw2ICsxMzI2MCw3IEBAICRSTSAtciBjb25mdGVzdCoKKyAgIGZpCisgICB0ZXN0IC16ICIke0xEQ1hYK3NldH0iIHx8IExEPSRMRENYWAorICAgQ0M9JHtDWFgtImMrKyJ9CisrICBDRkxBR1M9JENYWEZMQUdTCisgICBjb21waWxlcj0kQ0MKKyAgIGNvbXBpbGVyX0NYWD0kQ0MKKyAgIGZvciBjY190ZW1wIGluICRjb21waWxlciIiOyBkbworQEAgLTEyODc2LDcgKzEzNTQzLDEzIEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllCisgICAgICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD0nLWJlcm9rJworICAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4gZW1wdHkKKyAgICAgICAgICAgIyBleGVjdXRhYmxlLgorLSAgICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrICAgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtMTI4ODksMjIgKzEzNTYyLDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jeHhfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoX19DWFgiOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF9fQ1hYCisrZmkKKyAKKyAgICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCitAQCAtMTI5MTcsNyArMTM1OTcsMTMgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgICAgIGVsc2UKKyAJICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorIAkgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLQkgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKwkgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF9fQ1hYKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC0xMjkzMCwyMiArMTM2MTYsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2N4eF90cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoX19DWFg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWCI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfX0NYWD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF9fQ1hYIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF9fQ1hYPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoX19DWFgKKytmaQorIAorIAkgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorQEAgLTEyOTg4LDI5ICsxMzY4MSw3NSBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAgIDs7CisgCisgICAgICAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorLSAgICAgICAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsIENYWCkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCistICAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9Jy1MJGxpYmRpcicKKy0gICAgICAgIGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY19DWFg9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCistICAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZ19DWFg9dW5zdXBwb3J0ZWQKKy0gICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFg9bm8KKy0gICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNfQ1hYPXllcworLQorLSAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorLSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCistICAgICAgICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKKy0gICAgICAgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KKy0gICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCistCSAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CistICAgICAgICAgIGVsc2UKKy0JICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworLQkgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKy0gICAgICAgICAgZml+CistICAgICAgICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAgbGRfc2hsaWJzX0NYWD1ubworLSAgICAgICAgZmkKKy0gICAgICAgIDs7CisrCWNhc2UgJEdYWCwkY2NfYmFzZW5hbWUgaW4KKysJLGNsKiB8IG5vLGNsKikKKysJICAjIE5hdGl2ZSBNU1ZDCisrCSAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworKwkgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisrCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9JyAnCisrCSAgYWxsb3dfdW5kZWZpbmVkX2ZsYWdfQ1hYPXVuc3VwcG9ydGVkCisrCSAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzX0NYWD15ZXMKKysJICBmaWxlX2xpc3Rfc3BlY19DWFg9J0AnCisrCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJICBsaWJleHQ9bGliCisrCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCSAgc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwkgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwkgIGFyY2hpdmVfZXhwc3ltX2NtZHNfQ1hYPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgICAkU0VEIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICAgIGVsc2UKKysJICAgICAgJFNFRCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgICBmaX4KKysJICAgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICAgIGxpbmtuYW1lcz0nCisrCSAgIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkgICMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCBDWFgpPSd0cnVlJworKwkgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXNfQ1hYPXllcworKwkgICMgRG9uJ3QgdXNlIHJhbmxpYgorKwkgIG9sZF9wb3N0aW5zdGFsbF9jbWRzX0NYWD0nY2htb2QgNjQ0ICRvbGRsaWInCisrCSAgcG9zdGxpbmtfY21kc19DWFg9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisrCSAgICBjYXNlICRsdF9vdXRwdXRmaWxlIGluCisrCSAgICAgICouZXhlfCouRVhFKSA7OworKwkgICAgICAqKQorKwkJbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkJbHRfdG9vbF9vdXRwdXRmaWxlPSIkbHRfdG9vbF9vdXRwdXRmaWxlLmV4ZSIKKysJCTs7CisrCSAgICBlc2FjfgorKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRsdF9vdXRwdXRmaWxlIn4KKysJICAgIGlmIHRlc3QgIiRNQU5JRkVTVF9UT09MIiAhPSAiOiIgJiYgdGVzdCAtZiAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOyB0aGVuCisrCSAgICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworKwkgICAgZmknCisrCSAgOzsKKysJKikKKysJICAjIGcrKworKwkgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCBDWFgpIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLAorKwkgICMgYXMgdGhlcmUgaXMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisrCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFg9Jy1MJGxpYmRpcicKKysJICBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYPScke3dsfS0tZXhwb3J0LWFsbC1zeW1ib2xzJworKwkgIGFsbG93X3VuZGVmaW5lZF9mbGFnX0NYWD11bnN1cHBvcnRlZAorKwkgIGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFg9bm8KKysJICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzX0NYWD15ZXMKKysKKysJICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisrCSAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisrCSAgICAjIElmIHRoZSBleHBvcnQtc3ltYm9scyBmaWxlIGFscmVhZHkgaXMgYSAuZGVmIGZpbGUgKDFzdCBsaW5lCisrCSAgICAjIGlzIEVYUE9SVFMpLCB1c2UgaXQgYXMgaXM7IG90aGVyd2lzZSwgcHJlcGVuZC4uLgorKwkgICAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFg9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICAgIGNwICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKysJICAgIGVsc2UKKysJICAgICAgZWNobyBFWFBPUlRTID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisrCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgPj4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisrCSAgICBmaX4KKysJICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKysJICBlbHNlCisrCSAgICBsZF9zaGxpYnNfQ1hYPW5vCisrCSAgZmkKKysJICA7OworKwllc2FjCisrCTs7CisgICAgICAgZGFyd2luKiB8IHJoYXBzb2R5KikKKyAKKyAKK0BAIC0xMzExNiw3ICsxMzg1NSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICAgICAgIDs7CisgICAgICAgICAgICopCisgICAgICAgICAgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKyAgICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorICAgICAgICAgICAgICAgbGRfc2hsaWJzX0NYWD1ubworQEAgLTEzMTg3LDEwICsxMzkyNiwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworIAkgICAgICAgICAgICA7OworIAkgICAgICAgICAgaWE2NCopCistCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKysJICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKyAJICAgICAgICAgICAgOzsKKyAJICAgICAgICAgICopCistCSAgICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworKwkgICAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgICAgICAgICAgIDs7CisgCSAgICAgICAgZXNhYworIAkgICAgICBmaQorQEAgLTEzMjMxLDkgKzEzOTcwLDkgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgICAgICAgICAgICopCisgCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorIAkgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJICAgICAgZWxzZQorLQkgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgLW8gJGxpYicKKysJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJworIAkgICAgICBmaQorIAkgICAgZmkKKyAJICAgIGxpbmtfYWxsX2RlcGxpYnNfQ1hYPXllcworQEAgLTEzMzAzLDIwICsxNDA0MiwyMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICAgICAgcHJlbGlua19jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2JqcyAkbGlib2JqcyAkY29tcGlsZV9kZXBsaWJzfgorLQkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAiJworKwkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgIicKKyAJICAgICAgb2xkX2FyY2hpdmVfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisgCQlybSAtcmYgJHRwbGRpcn4KKyAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9sZG9ianMkb2xkX2RlcGxpYnN+CistCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgfgorKwkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGB+CisgCQkkUkFOTElCICRvbGRsaWInCisgCSAgICAgIGFyY2hpdmVfY21kc19DWFg9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisgCQlybSAtcmYgJHRwbGRpcn4KKyAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgorLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKKysJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworIAkgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+CistCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworIAkgICAgICA7OworIAkgICAgKikgIyBWZXJzaW9uIDYgYW5kIGFib3ZlIHVzZSB3ZWFrIHN5bWJvbHMKKyAJICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCitAQCAtMTM1MTEsNyArMTQyNTAsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICAgICAgICAgIGFyY2hpdmVfY21kc19DWFg9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJCSAgOzsKKyAJICAgICAgICAqKQorLQkgICAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCSAgICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCQkgIDs7CisgCSAgICAgIGVzYWMKKyAKK0BAIC0xMzU1Nyw3ICsxNDI5Niw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICAgIHNvbGFyaXMqKQorICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICAgICAgQ0MqKQorKyAgICAgICAgICBDQyogfCBzdW5DQyopCisgCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCisgICAgICAgICAgICAgYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYPXllcworIAkgICAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYPScgLXpkZWZzJworQEAgLTEzNTk4LDkgKzE0MzM3LDkgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKyAJICAgICAgbm9fdW5kZWZpbmVkX2ZsYWdfQ1hYPScgJHt3bH0teiAke3dsfWRlZnMnCisgCSAgICAgIGlmICRDQyAtLXZlcnNpb24gfCAkR1JFUCAtdiAnXjJcLjcnID4gL2Rldi9udWxsOyB0aGVuCistCSAgICAgICAgYXJjaGl2ZV9jbWRzX0NYWD0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKKysJICAgICAgICBhcmNoaXZlX2NtZHNfQ1hYPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRMREZMQUdTICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1oICR3bCRzb25hbWUgLW8gJGxpYicKKyAJICAgICAgICBhcmNoaXZlX2V4cHN5bV9jbWRzX0NYWD0nZWNobyAieyBnbG9iYWw6IiA+ICRsaWIuZXhwfmNhdCAkZXhwb3J0X3N5bWJvbHMgfCAkU0VEIC1lICJzL1woLipcKS9cMTsvIiA+PiAkbGliLmV4cH5lY2hvICJsb2NhbDogKjsgfTsiID4+ICRsaWIuZXhwfgorLQkJICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisrCQkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJHt3bH0tTSAkd2wkbGliLmV4cCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFnc34kUk0gJGxpYi5leHAnCisgCisgCSAgICAgICAgIyBDb21tYW5kcyB0byBtYWtlIGNvbXBpbGVyIHByb2R1Y2UgdmVyYm9zZSBvdXRwdXQgdGhhdCBsaXN0cworIAkgICAgICAgICMgd2hhdCAiaGlkZGVuIiBsaWJyYXJpZXMsIG9iamVjdCBmaWxlcyBhbmQgZmxhZ3MgYXJlIHVzZWQgd2hlbgorQEAgLTEzNzM1LDYgKzE0NDc0LDEzIEBAIHByaXZhdGU6CisgfTsKKyBfTFRfRU9GCisgCisrCisrX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1M9JENGTEFHUworK2Nhc2UgIiRDQyAkQ0ZMQUdTICIgaW4gIygKKysqXCAtZmx0bypcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLWx0byIgOzsKKysqXCAtZndob3ByKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8td2hvcHIiIDs7CisrZXNhYworKworIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQorICAgKGV2YWwgJGFjX2NvbXBpbGUpIDI+JjUKKyAgIGFjX3N0YXR1cz0kPworQEAgLTEzNzQ4LDcgKzE0NDk0LDcgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CisgICBwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lPW5vCisgCisgICBmb3IgcCBpbiBgZXZhbCAiJG91dHB1dF92ZXJib3NlX2xpbmtfY21kImA7IGRvCistICAgIGNhc2UgJHAgaW4KKysgICAgY2FzZSAke3ByZXZ9JHtwfSBpbgorIAorICAgICAtTCogfCAtUiogfCAtbCopCisgICAgICAgICMgU29tZSBjb21waWxlcnMgcGxhY2Ugc3BhY2UgYmV0d2VlbiAiLXtMLFJ9IiBhbmQgdGhlIHBhdGguCitAQCAtMTM3NTcsMTMgKzE0NTAzLDIyIEBAIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19jb21waWxlXCIiOyB9ID4mNQorICAgICAgICAgICB0ZXN0ICRwID0gIi1SIjsgdGhlbgorIAkgcHJldj0kcAorIAkgY29udGludWUKKy0gICAgICAgZWxzZQorLQkgcHJldj0KKyAgICAgICAgZmkKKyAKKysgICAgICAgIyBFeHBhbmQgdGhlIHN5c3Jvb3QgdG8gZWFzZSBleHRyYWN0aW5nIHRoZSBkaXJlY3RvcmllcyBsYXRlci4KKysgICAgICAgaWYgdGVzdCAteiAiJHByZXYiOyB0aGVuCisrICAgICAgICAgY2FzZSAkcCBpbgorKyAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWVfY25mICctTCcgJycgIiRwIjsgcHJldj0tTDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisrICAgICAgICAgLVIqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1SJyAnJyAiJHAiOyBwcmV2PS1SOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKysgICAgICAgICAtbCopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLWwnICcnICIkcCI7IHByZXY9LWw7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworKyAgICAgICAgIGVzYWMKKysgICAgICAgZmkKKysgICAgICAgY2FzZSAkcCBpbgorKyAgICAgICA9KikgZnVuY19zdHJpcG5hbWVfY25mICc9JyAnJyAiJHAiOyBwPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworKyAgICAgICBlc2FjCisgICAgICAgIGlmIHRlc3QgIiRwcmVfdGVzdF9vYmplY3RfZGVwc19kb25lIiA9IG5vOyB0aGVuCistCSBjYXNlICRwIGluCistCSAtTCogfCAtUiopCisrCSBjYXNlICR7cHJldn0gaW4KKysJIC1MIHwgLVIpCisgCSAgICMgSW50ZXJuYWwgY29tcGlsZXIgbGlicmFyeSBwYXRocyBzaG91bGQgY29tZSBhZnRlciB0aG9zZQorIAkgICAjIHByb3ZpZGVkIHRoZSB1c2VyLiAgVGhlIHBvc3RkZXBzIGFscmVhZHkgY29tZSBhZnRlciB0aGUKKyAJICAgIyB1c2VyIHN1cHBsaWVkIGxpYnMgc28gdGhlcmUgaXMgbm8gbmVlZCB0byBwcm9jZXNzIHRoZW0uCitAQCAtMTM3ODMsOCArMTQ1MzgsMTAgQEAgaWYgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGFjX2NvbXBpbGVcIiI7IH0gPiY1CisgCSAgIHBvc3RkZXBzX0NYWD0iJHtwb3N0ZGVwc19DWFh9ICR7cHJldn0ke3B9IgorIAkgZmkKKyAgICAgICAgZmkKKysgICAgICAgcHJldj0KKyAgICAgICAgOzsKKyAKKysgICAgKi5sdG8uJG9iamV4dCkgOzsgIyBJZ25vcmUgR0NDIExUTyBvYmplY3RzCisgICAgICouJG9iamV4dCkKKyAgICAgICAgIyBUaGlzIGFzc3VtZXMgdGhhdCB0aGUgdGVzdCBvYmplY3QgZmlsZSBvbmx5IHNob3dzIHVwCisgICAgICAgICMgb25jZSBpbiB0aGUgY29tcGlsZXIgb3V0cHV0LgorQEAgLTEzODIwLDYgKzE0NTc3LDcgQEAgZWxzZQorIGZpCisgCisgJFJNIC1mIGNvbmZlc3QuJG9iamV4dAorK0NGTEFHUz0kX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1MKKyAKKyAjIFBPUlRNRTogb3ZlcnJpZGUgYWJvdmUgdGVzdCBvbiBzeXN0ZW1zIHdoZXJlIGl0IGlzIGJyb2tlbgorIGNhc2UgJGhvc3Rfb3MgaW4KK0BAIC0xMzg1NSw3ICsxNDYxMyw3IEBAIGxpbnV4KikKKyAKKyBzb2xhcmlzKikKKyAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICBDQyopCisrICBDQyogfCBzdW5DQyopCisgICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcworICAgICAjIGluY29tcGF0aWJsZSB3aXRoIHRoZSBDc3RkIGxpYnJhcnkuIEF2b2lkIHNwZWNpZnlpbmcKKyAgICAgIyBpdCBpZiBpdCdzIGluIENYWEZMQUdTLiBJZ25vcmUgbGliQ3J1biBhcworQEAgLTEzOTIwLDggKzE0Njc4LDYgQEAgZmkKKyBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPQorIAorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCisgICAjIEMrKyBzcGVjaWZpYyBjYXNlcyBmb3IgcGljLCBzdGF0aWMsIHdsLCBldGMuCisgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorQEAgLTE0MDI2LDYgKzE0NzgyLDExIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCSAgOzsKKyAJZXNhYworIAk7OworKyAgICAgIG1pbmd3KiB8IGN5Z3dpbiogfCBvczIqIHwgcHczMiogfCBjZWdjYyopCisrCSMgVGhpcyBoYWNrIGlzIHNvIHRoYXQgdGhlIHNvdXJjZSBmaWxlIGNhbiB0ZWxsIHdoZXRoZXIgaXQgaXMgYmVpbmcKKysJIyBidWlsdCBmb3IgaW5jbHVzaW9uIGluIGEgZGxsIChhbmQgc2hvdWxkIGV4cG9ydCBzeW1ib2xzIGZvciBleGFtcGxlKS4KKysJbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYPSctRERMTF9FWFBPUlQnCisrCTs7CisgICAgICAgZGd1eCopCisgCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisgCSAgZWMrKyopCitAQCAtMTQxNzgsNyArMTQ5MzksNyBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAk7OworICAgICAgIHNvbGFyaXMqKQorIAljYXNlICRjY19iYXNlbmFtZSBpbgorLQkgIENDKikKKysJICBDQyogfCBzdW5DQyopCisgCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCisgCSAgICBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9Jy1LUElDJworIAkgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYPSctQnN0YXRpYycKK0BAIC0xNDI0MywxMCArMTUwMDQsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFg9IiRsdF9wcm9nX2NvbXBpbGVyX3BpY19DWFggLURQSUMiCisgICAgIDs7CisgZXNhYworLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgPiY2OyB9CistCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWD0kbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljX0NYWCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpY19DWFgiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWNfQ1hYCisgCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBQSUMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KK0BAIC0xNDMwNCw2ICsxNTA3Miw4IEBAIGZpCisgCisgCisgCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtMTQ0ODEsNiArMTUyNTEsNyBAQCBmaQorICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllcy4uLiAiID4mNjsgfQorIAorICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgIGV4Y2x1ZGVfZXhwc3ltc19DWFg9J19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKicKKyAgIGNhc2UgJGhvc3Rfb3MgaW4KKyAgIGFpeFs0LTldKikKKyAgICAgIyBJZiB3ZSdyZSB1c2luZyBHTlUgbm0sIHRoZW4gd2UgZG9uJ3Qgd2FudCB0aGUgIi1DIiBvcHRpb24uCitAQCAtMTQ0OTUsMTUgKzE1MjY2LDIwIEBAICRhc19lY2hvX24gImNoZWNraW5nIHdoZXRoZXIgdGhlICRjb21waWxlciBsaW5rZXIgKCRMRCkgc3VwcG9ydHMgc2hhcmVkIGxpYnJhcmllCisgICAgIDs7CisgICBwdzMyKikKKyAgICAgZXhwb3J0X3N5bWJvbHNfY21kc19DWFg9IiRsdGRsbF9jbWRzIgorLSAgOzsKKysgICAgOzsKKyAgIGN5Z3dpbiogfCBtaW5ndyogfCBjZWdjYyopCistICAgIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLzsvXi4qWyBdX19ubV9fL3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKy0gIDs7CisrICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgIGNsKikgOzsKKysgICAgKikKKysgICAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltc19DWFg9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKKysgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisgICAqKQorICAgICBleHBvcnRfc3ltYm9sc19jbWRzX0NYWD0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEICdcJydzLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworLSAgOzsKKysgICAgOzsKKyAgIGVzYWMKKy0gIGV4Y2x1ZGVfZXhwc3ltc19DWFg9J19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKicKKyAKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGxkX3NobGlic19DWFgiID4mNQorICRhc19lY2hvICIkbGRfc2hsaWJzX0NYWCIgPiY2OyB9CitAQCAtMTQ3NjYsOCArMTU1NDIsOSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICBuZWVkX3ZlcnNpb249bm8KKyAgIG5lZWRfbGliX3ByZWZpeD1ubworIAorLSAgY2FzZSAkR0NDLCRob3N0X29zIGluCistICB5ZXMsY3lnd2luKiB8IHllcyxtaW5ndyogfCB5ZXMscHczMiogfCB5ZXMsY2VnY2MqKQorKyAgY2FzZSAkR0NDLCRjY19iYXNlbmFtZSBpbgorKyAgeWVzLCopCisrICAgICMgZ2NjCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJGxpYm5hbWUuZGxsLmEnCisgICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKyAgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CitAQCAtMTQ3OTksMTMgKzE1NTc2LDcxIEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisgICAgICAgOzsKKyAgICAgZXNhYworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworKyAgICA7OworKworKyAgKixjbCopCisrICAgICMgTmF0aXZlIE1TVkMKKysgICAgbGlibmFtZV9zcGVjPSckbmFtZScKKysgICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworKyAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX0uZGxsLmxpYicKKysKKysgICAgY2FzZSAkYnVpbGRfb3MgaW4KKysgICAgbWluZ3cqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0KKysgICAgICBsdF9zYXZlX2lmcz0kSUZTCisrICAgICAgSUZTPSc7JworKyAgICAgIGZvciBsdF9wYXRoIGluICRMSUIKKysgICAgICBkbworKyAgICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICAgIyBMZXQgRE9TIHZhcmlhYmxlIGV4cGFuc2lvbiBwcmludCB0aGUgc2hvcnQgOC4zIHN0eWxlIGZpbGUgbmFtZS4KKysgICAgICAgIGx0X3BhdGg9YGNkICIkbHRfcGF0aCIgMj4vZGV2L251bGwgJiYgY21kIC8vQyAiZm9yICVpIGluICgiLiIpIGRvIEBlY2hvICV+c2kiYAorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjICRsdF9wYXRoIgorKyAgICAgIGRvbmUKKysgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgIyBDb252ZXJ0IHRvIE1TWVMgc3R5bGUuCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCBzZWQgLWUgJ3N8XFxcXHwvfGcnIC1lICdzfCBcXChbYS16QS1aXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRHUkVQICc7W2MtekMtWl06LycgPi9kZXYvbnVsbDsgdGhlbgorKyAgICAgICAgIyBJdCBpcyBtb3N0IHByb2JhYmx5IGEgV2luZG93cyBmb3JtYXQgUEFUSC4KKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAncy87LyAvZydgCisrICAgICAgZWxzZQorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIGZpCisrICAgICAgIyBGSVhNRTogZmluZCB0aGUgc2hvcnQgbmFtZSBvciB0aGUgcGF0aCBjb21wb25lbnRzLCBhcyBzcGFjZXMgYXJlCisrICAgICAgIyBjb21tb24uIChlLmcuICJQcm9ncmFtIEZpbGVzIiAtPiAiUFJPR1JBfjEiKQorKyAgICAgIDs7CisrICAgIGVzYWMKKysKKysgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworKyAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KKysgICAgICBkbHBhdGg9YCRTSEVMTCAyPiYxIC1jICdcJycuICRkaXIvJ1wnJ1wke2Jhc2VfZmlsZX0nXCcnaTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRsZGlyPSRkZXN0ZGlyL2BkaXJuYW1lIFwkZGxwYXRoYH4KKysgICAgICB0ZXN0IC1kIFwkZGxkaXIgfHwgbWtkaXIgLXAgXCRkbGRpcn4KKysgICAgICAkaW5zdGFsbF9wcm9nICRkaXIvJGRsbmFtZSBcJGRsZGlyLyRkbG5hbWUnCisrICAgIHBvc3R1bmluc3RhbGxfY21kcz0nZGxkbGw9YCRTSEVMTCAyPiYxIC1jICdcJycuICRmaWxlOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxwYXRoPSRkaXIvXCRkbGRsbH4KKysgICAgICAgJFJNIFwkZGxwYXRoJworKyAgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsaW5rLmV4ZScKKyAgICAgOzsKKyAKKyAgICopCisrICAgICMgQXNzdW1lIE1TVkMgd3JhcHBlcgorICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyR7bGlibmFtZX1gZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9ICRsaWJuYW1lLmxpYicKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICAgOzsKKyAgIGVzYWMKKy0gIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAjIEZJWE1FOiBmaXJzdCB3ZSBzaG91bGQgc2VhcmNoIC4gYW5kIHRoZSBkaXJlY3RvcnkgdGhlIGV4ZWN1dGFibGUgaXMgaW4KKyAgIHNobGlicGF0aF92YXI9UEFUSAorICAgOzsKK0BAIC0xNDg5Niw3ICsxNTczMSw3IEBAIGhhaWt1KikKKyAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9JHtyZWxlYXNlfSR7c2hhcmVkX2V4dH0kbWFqb3InCisgICBzaGxpYnBhdGhfdmFyPUxJQlJBUllfUEFUSAorICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworLSAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L2Jlb3Mvc3lzdGVtL2xpYicKKysgIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9zeXN0ZW0vbGliJworICAgaGFyZGNvZGVfaW50b19saWJzPXllcworICAgOzsKKyAKK0BAIC0xNTM1NSw2ICsxNjE5MCw3IEBAIGZpCisgICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKKyAKKyAgIENDPSRsdF9zYXZlX0NDCisrICBDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCisgICBMRENYWD0kTEQKKyAgIExEPSRsdF9zYXZlX0xECisgICBHQ0M9JGx0X3NhdmVfR0NDCitAQCAtMTg0NzcsMTMgKzE5MzEzLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTg0OTgsMTQgKzE5MzQxLDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE4NTM4LDEyICsxOTM4NCwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xODU4Miw4ICsxOTQyOCw4IEBAIG9sZF9hcmNoaXZlX2NtZHNfQ1hYPSdgJEVDSE8gIiRvbGRfYXJjaGl2ZV9jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlCisgY29tcGlsZXJfQ1hYPSdgJEVDSE8gIiRjb21waWxlcl9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEdDQ19DWFg9J2AkRUNITyAiJEdDQ19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWdfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bF9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9wcm9nX2NvbXBpbGVyX3dsX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bF9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9zdGF0aWNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfb19DWFg9J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgYXJjaGl2ZV9jbWRzX25lZWRfbGNfQ1hYPSdgJEVDSE8gIiRhcmNoaXZlX2NtZHNfbmVlZF9sY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE4NjEwLDEyICsxOTQ1NiwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcl9DWFgiIHwgJFNFRCAiJGRlbGF5XworIGhhcmRjb2RlX2F1dG9tYXRpY19DWFg9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpY19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluaGVyaXRfcnBhdGhfQ1hYPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbGlua19hbGxfZGVwbGlic19DWFg9J2AkRUNITyAiJGxpbmtfYWxsX2RlcGxpYnNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1maXhfc3JjZmlsZV9wYXRoX0NYWD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aF9DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFg9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4cG9ydF9zeW1ib2xzX2NtZHNfQ1hYPSdgJEVDSE8gIiRleHBvcnRfc3ltYm9sc19jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhjbHVkZV9leHBzeW1zX0NYWD0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5jbHVkZV9leHBzeW1zX0NYWD0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcHJlbGlua19jbWRzX0NYWD0nYCRFQ0hPICIkcHJlbGlua19jbWRzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrcG9zdGxpbmtfY21kc19DWFg9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHNfQ1hYIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX2xpc3Rfc3BlY19DWFg9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaGFyZGNvZGVfYWN0aW9uX0NYWD0nYCRFQ0hPICIkaGFyZGNvZGVfYWN0aW9uX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzX0NYWD0nYCRFQ0hPICIkY29tcGlsZXJfbGliX3NlYXJjaF9kaXJzX0NYWCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTg2NTMsOCArMTk0OTksMTMgQEAgcmVsb2FkX2ZsYWcgXAorIE9CSkRVTVAgXAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKKyBmaWxlX21hZ2ljX2NtZCBcCisrZmlsZV9tYWdpY19nbG9iIFwKKyt3YW50X25vY2FzZWdsb2IgXAorK0RMTFRPT0wgXAorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKKyBBUiBcCisgQVJfRkxBR1MgXAorK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCisgU1RSSVAgXAorIFJBTkxJQiBcCisgQ0MgXAorQEAgLTE4NjY0LDEyICsxOTUxNSwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAorK25tX2ZpbGVfbGlzdF9zcGVjIFwKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCistbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9waWMgXAorK2x0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCisgbmVlZF9sb2NrcyBcCisrTUFOSUZFU1RfVE9PTCBcCisgRFNZTVVUSUwgXAorIE5NRURJVCBcCisgTElQTyBcCitAQCAtMTg2ODUsNyArMTk1MzgsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCisgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCistZml4X3NyY2ZpbGVfcGF0aCBcCisgZXhjbHVkZV9leHBzeW1zIFwKKyBpbmNsdWRlX2V4cHN5bXMgXAorIGZpbGVfbGlzdF9zcGVjIFwKK0BAIC0xODcwNyw4ICsxOTU1OSw4IEBAIExEX0NYWCBcCisgcmVsb2FkX2ZsYWdfQ1hYIFwKKyBjb21waWxlcl9DWFggXAorIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWCBcCistbHRfcHJvZ19jb21waWxlcl93bF9DWFggXAorIGx0X3Byb2dfY29tcGlsZXJfcGljX0NYWCBcCisrbHRfcHJvZ19jb21waWxlcl93bF9DWFggXAorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljX0NYWCBcCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX29fQ1hYIFwKKyBleHBvcnRfZHluYW1pY19mbGFnX3NwZWNfQ1hYIFwKK0BAIC0xODcyMCw3ICsxOTU3Miw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnX0NYWCBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19DWFggXAorIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRfQ1hYIFwKKyBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yX0NYWCBcCistZml4X3NyY2ZpbGVfcGF0aF9DWFggXAorIGV4Y2x1ZGVfZXhwc3ltc19DWFggXAorIGluY2x1ZGVfZXhwc3ltc19DWFggXAorIGZpbGVfbGlzdF9zcGVjX0NYWCBcCitAQCAtMTg3NTQsNiArMTk2MDUsNyBAQCBtb2R1bGVfY21kcyBcCisgbW9kdWxlX2V4cHN5bV9jbWRzIFwKKyBleHBvcnRfc3ltYm9sc19jbWRzIFwKKyBwcmVsaW5rX2NtZHMgXAorK3Bvc3RsaW5rX2NtZHMgXAorIHBvc3RpbnN0YWxsX2NtZHMgXAorIHBvc3R1bmluc3RhbGxfY21kcyBcCisgZmluaXNoX2NtZHMgXAorQEAgLTE4NzY4LDcgKzE5NjIwLDggQEAgYXJjaGl2ZV9leHBzeW1fY21kc19DWFggXAorIG1vZHVsZV9jbWRzX0NYWCBcCisgbW9kdWxlX2V4cHN5bV9jbWRzX0NYWCBcCisgZXhwb3J0X3N5bWJvbHNfY21kc19DWFggXAorLXByZWxpbmtfY21kc19DWFg7IGRvCisrcHJlbGlua19jbWRzX0NYWCBcCisrcG9zdGxpbmtfY21kc19DWFg7IGRvCisgICAgIGNhc2UgXGBldmFsIFxcXFxcJEVDSE8gXFxcXCIiXFxcXFwkXCR2YXIiXFxcXCJcYCBpbgorICAgICAqW1xcXFxcXFxgXFwiXFxcJF0qKQorICAgICAgIGV2YWwgImx0X1wkdmFyPVxcXFxcXCJcXFxgXFxcJEVDSE8gXFwiXFxcJFwkdmFyXFwiIHwgXFxcJFNFRCAtZSBcXCJcXFwkZG91YmxlX3F1b3RlX3N1YnN0XFwiIC1lIFxcIlxcXCRzZWRfcXVvdGVfc3Vic3RcXCIgLWUgXFwiXFxcJGRlbGF5X3ZhcmlhYmxlX3N1YnN0XFwiXFxcYFxcXFxcXCIiCitAQCAtMTk1MzMsNyArMjAzODYsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CisgIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCisgIworICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCistIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysjICAgICAgICAgICAgICAgICBJbmMuCisgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKyAjCisgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgorQEAgLTE5NjM2LDE5ICsyMDQ5MCw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKKyAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCisgTkwyU1A9JGx0X2x0X05MMlNQCisgCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgorK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKysKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgorK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKysKKyAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgorIE9CSkRVTVA9JGx0X09CSkRVTVAKKyAKKyAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAorIAorLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCisrIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAorIAorKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKKysKKysjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgorKworKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCisrRExMVE9PTD0kbHRfRExMVE9PTAorKworKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKysKKyAjIFRoZSBhcmNoaXZlci4KKyBBUj0kbHRfQVIKKysKKysjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgorIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUworIAorKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgorK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCisrCisgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KKyBTVFJJUD0kbHRfU1RSSVAKKyAKK0BAIC0xOTY3OCw2ICsyMDU1NSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCisgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CisgCisrIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCisrbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCisrCisrIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KKytsdF9zeXNyb290PSRsdF9zeXNyb290CisrCisgIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCisgb2JqZGlyPSRvYmpkaXIKKyAKK0BAIC0xOTY4Nyw2ICsyMDU3MCw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECisgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KKyBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCisgCisrIyBNYW5pZmVzdCB0b29sLgorK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKKysKKyAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCisgRFNZTVVUSUw9JGx0X0RTWU1VVElMCisgCitAQCAtMTk4MDEsMTIgKzIwNjg3LDEyIEBAIHdpdGhfZ2NjPSRHQ0MKKyAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCisgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZworIAorLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKy13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorLQorICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgorIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYworIAorKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKyt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorKworICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KKyBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYworIAorQEAgLTE5ODkzLDkgKzIwNzc5LDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgorIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKKyAKKy0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCistZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAorLQorICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgorIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCisgCitAQCAtMTk5MTEsNiArMjA3OTQsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCisgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKKyAKKysjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCisrcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcworKworICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgorIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYworIAorQEAgLTE5OTU3LDIxMCArMjA4NDMsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgorICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KKyAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CistICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgY2FzZSAkeHNpX3NoZWxsIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKy0jIGNhbGw6CistIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKKy0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKy0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKy0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKKy0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCistIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCistZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKy0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KKy19CistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9CistICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKy0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CistICBlc2FjCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCistICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCistICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorLSAgZWxzZQorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCistICBmaQorLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKy19CistCistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsyfSBpbgorLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CistICBlc2FjCistfQorLQorLSMgc2VkIHNjcmlwdHM6CistbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKKy1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCistfQorLQorLV9MVF9FT0YKKy1lc2FjCistCistY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxKz1cJDIiCistfQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxPVwkJDFcJDIiCistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gIGVzYWMKKy0KKy0KKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKysgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKysgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisrCisrICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAorK2Z1bmNfZGlybmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAorK2Z1bmNfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKKytmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAorK2Z1bmNfc3RyaXBuYW1lICgpXAorK3tcCisrXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAorK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKKytmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKKytmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKKytmdW5jX2xvMm8gKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCisrXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAorK2Z1bmNfeGZvcm0gKClcCisre1wKKysgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAorK2Z1bmNfYXJpdGggKClcCisre1wKKysgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKKytmdW5jX2xlbiAoKVwKKyt7XAorKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrZmkKKysKKytpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKKytmdW5jX2FwcGVuZCAoKVwKKyt7XAorKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKKytmdW5jX2FwcGVuZF9xdW90ZWQgKClcCisre1wKKytcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAorK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JworKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2Vsc2UKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytmaQorKworK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9CisrZmkKKysKKysKKysgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCisgICBjaG1vZCAreCAiJG9maWxlIgorIAorQEAgLTIwMTg4LDEyICsyMTAzMywxMiBAQCB3aXRoX2djYz0kR0NDX0NYWAorICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KKyBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnX0NYWAorIAorLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKy13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bF9DWFgKKy0KKyAjIEFkZGl0aW9uYWwgY29tcGlsZXIgZmxhZ3MgZm9yIGJ1aWxkaW5nIGxpYnJhcnkgb2JqZWN0cy4KKyBwaWNfZmxhZz0kbHRfbHRfcHJvZ19jb21waWxlcl9waWNfQ1hYCisgCisrIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsX0NYWAorKworICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KKyBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpY19DWFgKKyAKK0BAIC0yMDI4MCw5ICsyMTEyNSw2IEBAIGluaGVyaXRfcnBhdGg9JGluaGVyaXRfcnBhdGhfQ1hYCisgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCisgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlic19DWFgKKyAKKy0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCistZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aF9DWFgKKy0KKyAjIFNldCB0byAieWVzIiBpZiBleHBvcnRlZCBzeW1ib2xzIGFyZSByZXF1aXJlZC4KKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9JGFsd2F5c19leHBvcnRfc3ltYm9sc19DWFgKKyAKK0BAIC0yMDI5OCw2ICsyMTE0MCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zX0NYWAorICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCisgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHNfQ1hYCisgCisrIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGZpbmlzaGluZyBsaW5raW5nIHByb2dyYW1zLgorK3Bvc3RsaW5rX2NtZHM9JGx0X3Bvc3RsaW5rX2NtZHNfQ1hYCisrCisgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCisgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjX0NYWAorIAorZGlmZiAtLWdpdCBhL2xpYmN0Zi9jb25maWd1cmUgYi9saWJjdGYvY29uZmlndXJlCitpbmRleCBlNTQ5M2IzMTY5MS4uOTk3N2U0ZjdhNDIgMTAwNzU1CistLS0gYS9saWJjdGYvY29uZmlndXJlCisrKysgYi9saWJjdGYvY29uZmlndXJlCitAQCAtNjYzLDYgKzY2Myw4IEBAIE9UT09MCisgTElQTworIE5NRURJVAorIERTWU1VVElMCisrTUFOSUZFU1RfVE9PTAorK0RMTFRPT0wKKyBPQkpEVU1QCisgTE5fUworIE5NCitAQCAtNzc4LDYgKzc4MCw3IEBAIGVuYWJsZV9zdGF0aWMKKyB3aXRoX3BpYworIGVuYWJsZV9mYXN0X2luc3RhbGwKKyB3aXRoX2dudV9sZAorK3dpdGhfbGlidG9vbF9zeXNyb290CisgZW5hYmxlX2xpYnRvb2xfbG9jaworIGVuYWJsZV9sYXJnZWZpbGUKKyBlbmFibGVfd2Vycm9yX2Fsd2F5cworQEAgLTE0MzYsNiArMTQzOSw4IEBAIE9wdGlvbmFsIFBhY2thZ2VzOgorICAgLS13aXRoLXBpYyAgICAgICAgICAgICAgdHJ5IHRvIHVzZSBvbmx5IFBJQy9ub24tUElDIG9iamVjdHMgW2RlZmF1bHQ9dXNlCisgICAgICAgICAgICAgICAgICAgICAgICAgICBib3RoXQorICAgLS13aXRoLWdudS1sZCAgICAgICAgICAgYXNzdW1lIHRoZSBDIGNvbXBpbGVyIHVzZXMgR05VIGxkIFtkZWZhdWx0PW5vXQorKyAgLS13aXRoLWxpYnRvb2wtc3lzcm9vdD1ESVIgU2VhcmNoIGZvciBkZXBlbmRlbnQgbGlicmFyaWVzIHdpdGhpbiBESVIKKysgICAgICAgICAgICAgICAgICAgICAgICAob3IgdGhlIGNvbXBpbGVyJ3Mgc3lzcm9vdCBpZiBub3Qgc3BlY2lmaWVkKS4KKyAgIC0td2l0aC1zeXN0ZW0temxpYiAgICAgIHVzZSBpbnN0YWxsZWQgbGliegorIAorIFNvbWUgaW5mbHVlbnRpYWwgZW52aXJvbm1lbnQgdmFyaWFibGVzOgorQEAgLTUzMjQsOCArNTMyOSw4IEBAIGVzYWMKKyAKKyAKKyAKKy1tYWNyb192ZXJzaW9uPScyLjIuN2EnCistbWFjcm9fcmV2aXNpb249JzEuMzEzNCcKKyttYWNyb192ZXJzaW9uPScyLjQnCisrbWFjcm9fcmV2aXNpb249JzEuMzI5MycKKyAKKyAKKyAKK0BAIC01NDM2LDcgKzU0NDEsNyBAQCBFQ0hPPSRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8kRUNITworIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIHByaW50IHN0cmluZ3MiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzLi4uICIgPiY2OyB9CisgIyBUZXN0IHByaW50IGZpcnN0LCBiZWNhdXNlIGl0IHdpbGwgYmUgYSBidWlsdGluIGlmIHByZXNlbnQuCistaWYgdGVzdCAiWGBwcmludCAtciAtLSAtbiAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKytpZiB0ZXN0ICJYYCggcHJpbnQgLXIgLS0gLW4gKSAyPi9kZXYvbnVsbGAiID0gWC1uICYmIFwKKyAgICB0ZXN0ICJYYHByaW50IC1yIC0tICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorICAgRUNITz0ncHJpbnQgLXIgLS0nCisgZWxpZiB0ZXN0ICJYYHByaW50ZiAlcyAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KK0BAIC02MTIyLDggKzYxMjcsOCBAQCAkYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSBzaGVsbCB1bmRlcnN0YW5kcyBzb21lIFhTSSBjb25zdHJ1Y3RzLi4uICIgPiY2OworICMgVHJ5IHNvbWUgWFNJIGZlYXR1cmVzCisgeHNpX3NoZWxsPW5vCisgKCBfbHRfZHVtbXk9ImEvYi9jIgorLSAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sIiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKy0gICAgICA9IGMsYS9iLCwgXAorKyAgdGVzdCAiJHtfbHRfZHVtbXkjIyovfSwke19sdF9kdW1teSUvKn0sJHtfbHRfZHVtbXkjPz99IiR7X2x0X2R1bW15JSIkX2x0X2R1bW15In0sIFwKKysgICAgICA9IGMsYS9iLGIvYywgXAorICAgICAmJiBldmFsICd0ZXN0ICQoKCAxICsgMSApKSAtZXEgMiBcCisgICAgICYmIHRlc3QgIiR7I19sdF9kdW1teX0iIC1lcSA1JyApID4vZGV2L251bGwgMj4mMSBcCisgICAmJiB4c2lfc2hlbGw9eWVzCitAQCAtNjE3Miw2ICs2MTc3LDgwIEBAIGVzYWMKKyAKKyAKKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gJGhvc3QgZm9ybWF0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl90b19ob3N0X2ZpbGVfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqLSotY3lnd2luKiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgICAqLSotY3lnd2luKiApCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgICAgIDs7CisrICAgICAgKiApICMgb3RoZXJ3aXNlLCBhc3N1bWUgKm5peAorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrICAqICkgIyB1bmhhbmRsZWQgaG9zdHMgKGFuZCAibm9ybWFsIiBuYXRpdmUgYnVpbGRzKQorKyAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKysgICAgOzsKKytlc2FjCisrCisrZmkKKysKKyt0b19ob3N0X2ZpbGVfY21kPSRsdF9jdl90b19ob3N0X2ZpbGVfY21kCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQiID4mNjsgfQorKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfdG9fdG9vbF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgICNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KKytsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKytjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkTEQgb3B0aW9uIHRvIHJlbG9hZCBvYmplY3QgZmlsZXMuLi4gIiA+JjY7IH0KKyBpZiAke2x0X2N2X2xkX3JlbG9hZF9mbGFnKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02MTg4LDYgKzYyNjcsMTEgQEAgY2FzZSAkcmVsb2FkX2ZsYWcgaW4KKyBlc2FjCisgcmVsb2FkX2NtZHM9JyRMRCRyZWxvYWRfZmxhZyAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworIGNhc2UgJGhvc3Rfb3MgaW4KKysgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICAgaWYgdGVzdCAiJEdDQyIgIT0geWVzOyB0aGVuCisrICAgICAgcmVsb2FkX2NtZHM9ZmFsc2UKKysgICAgZmkKKysgICAgOzsKKyAgIGRhcndpbiopCisgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgICAgcmVsb2FkX2NtZHM9JyRMVENDICRMVENGTEFHUyAtbm9zdGRsaWIgJHt3bH0tciAtbyAkb3V0cHV0JHJlbG9hZF9vYmpzJworQEAgLTYzNTYsNyArNjQ0MCw4IEBAIG1pbmd3KiB8IHB3MzIqKQorICAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBeeDg2IGFyY2hpdmUgaW1wb3J0fF54ODYgRExMJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nZnVuY193aW4zMl9saWJpZCcKKyAgIGVsc2UKKy0gICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgcGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT8nCisrICAgICMgS2VlcCB0aGlzIHBhdHRlcm4gaW4gc3luYyB3aXRoIHRoZSBvbmUgaW4gZnVuY193aW4zMl9saWJpZC4KKysgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgZmlsZSBmb3JtYXQgKHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJworICAgICBsdF9jdl9maWxlX21hZ2ljX2NtZD0nJE9CSkRVTVAgLWYnCisgICBmaQorICAgOzsKK0BAIC02NTEwLDYgKzY1OTUsMjEgQEAgZXNhYworIGZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY1CisgJGFzX2VjaG8gIiRsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZCIgPiY2OyB9CisrCisrZmlsZV9tYWdpY19nbG9iPQorK3dhbnRfbm9jYXNlZ2xvYj1ubworK2lmIHRlc3QgIiRidWlsZCIgPSAiJGhvc3QiOyB0aGVuCisrICBjYXNlICRob3N0X29zIGluCisrICBtaW5ndyogfCBwdzMyKikKKysgICAgaWYgKCBzaG9wdCB8IGdyZXAgbm9jYXNlZ2xvYiApID4vZGV2L251bGwgMj4mMTsgdGhlbgorKyAgICAgIHdhbnRfbm9jYXNlZ2xvYj15ZXMKKysgICAgZWxzZQorKyAgICAgIGZpbGVfbWFnaWNfZ2xvYj1gZWNobyBhQWJCY0NkRGVFZkZnR2hIaUlqSmtLbExtTW5Ob09wUHFRclJzU3RUdVV2VndXeFh5WXpaIHwgJFNFRCAtZSAicy9cKC4uXCkvc1wvW1wxXVwvW1wxXVwvZzsvZyJgCisrICAgIGZpCisrICAgIDs7CisrICBlc2FjCisrZmkKKysKKyBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKKyB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KK0BAIC02NTI1LDkgKzY2MjUsMTYyIEBAIHRlc3QgLXogIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgJiYgZGVwbGlic19jaGVja19tZXRob2Q9dW5rbm93bgorIAorIAorIAorKworKworKworKworKworKworKworKworKworKworK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1kbGx0b29sIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1kbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJERMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX0RMTFRPT0w9IiRETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfRExMVE9PTD0iJHthY190b29sX3ByZWZpeH1kbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytETExUT09MPSRhY19jdl9wcm9nX0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX0RMTFRPT0wiOyB0aGVuCisrICBhY19jdF9ETExUT09MPSRETExUT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgImRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSBkbGx0b29sOyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9ETExUT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0w9IiRhY19jdF9ETExUT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iZGxsdG9vbCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfRExMVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X0RMTFRPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X0RMTFRPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfRExMVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X0RMTFRPT0wiID0geDsgdGhlbgorKyAgICBETExUT09MPSJmYWxzZSIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIERMTFRPT0w9JGFjX2N0X0RMTFRPT0wKKysgIGZpCisrZWxzZQorKyAgRExMVE9PTD0iJGFjX2N2X3Byb2dfRExMVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRETExUT09MIiAmJiBETExUT09MPWRsbHRvb2wKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBhc3NvY2lhdGUgcnVudGltZSBhbmQgbGluayBsaWJyYXJpZXMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCisrCisrY2FzZSAkaG9zdF9vcyBpbgorK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKKysgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKysgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgorKyAgKi0taWRlbnRpZnktc3RyaWN0KikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisrICAgIDs7CisrICAqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKysgICAgOzsKKysgIGVzYWMKKysgIDs7CisrKikKKysgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorKyAgOzsKKytlc2FjCisrCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiA+JjY7IH0KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKyt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCisrCisrCisrCisrCisrCisrCisrCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKysgIGRvCisrICAgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZzsgYWNfd29yZD0kMgorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRhY193b3JkIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGFjX3dvcmQuLi4gIiA+JjY7IH0KKyBpZiAke2FjX2N2X3Byb2dfQVIrOn0gZmFsc2U7IHRoZW4gOgorQEAgLTY1NDMsNyArNjc5Niw3IEBAIGRvCisgICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorICAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKyAgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKy0gICAgYWNfY3ZfcHJvZ19BUj0iJHthY190b29sX3ByZWZpeH1hciIKKysgICAgYWNfY3ZfcHJvZ19BUj0iJGFjX3Rvb2xfcHJlZml4JGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY1NjMsMTEgKzY4MTYsMTUgQEAgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorIAorKyAgICB0ZXN0IC1uICIkQVIiICYmIGJyZWFrCisrICBkb25lCisgZmkKKy1pZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19BUiI7IHRoZW4KKytpZiB0ZXN0IC16ICIkQVIiOyB0aGVuCisgICBhY19jdF9BUj0kQVIKKy0gICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiYXIiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorLXNldCBkdW1teSBhcjsgYWNfd29yZD0kMgorKyAgZm9yIGFjX3Byb2cgaW4gYXIKKytkbworKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmICR7YWNfY3ZfcHJvZ19hY19jdF9BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjU4Myw3ICs2ODQwLDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSJhciIKKysgICAgYWNfY3ZfcHJvZ19hY19jdF9BUj0iJGFjX3Byb2ciCisgICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorICAgICBicmVhayAyCisgICBmaQorQEAgLTY2MDIsNiArNjg1OSwxMCBAQCBlbHNlCisgJGFzX2VjaG8gIm5vIiA+JjY7IH0KKyBmaQorIAorKworKyAgdGVzdCAtbiAiJGFjX2N0X0FSIiAmJiBicmVhaworK2RvbmUKKysKKyAgIGlmIHRlc3QgIngkYWNfY3RfQVIiID0geDsgdGhlbgorICAgICBBUj0iZmFsc2UiCisgICBlbHNlCitAQCAtNjYxMywxNiArNjg3NCw3MiBAQCBhY190b29sX3dhcm5lZD15ZXMgOzsKKyBlc2FjCisgICAgIEFSPSRhY19jdF9BUgorICAgZmkKKy1lbHNlCistICBBUj0iJGFjX2N2X3Byb2dfQVIiCisgZmkKKyAKKy10ZXN0IC16ICIkQVIiICYmIEFSPWFyCistdGVzdCAteiAiJEFSX0ZMQUdTIiAmJiBBUl9GTEFHUz1jcnUKKys6ICR7QVI9YXJ9CisrOiAke0FSX0ZMQUdTPWNydX0KKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgYXJjaGl2ZXIgQEZJTEUgc3VwcG9ydC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfYXJfYXRfZmlsZSs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGx0X2N2X2FyX2F0X2ZpbGU9bm8KKysgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrLyogZW5kIGNvbmZkZWZzLmguICAqLworKworK2ludAorK21haW4gKCkKKyt7CisgCisrICA7CisrICByZXR1cm4gMDsKKyt9CisrX0FDRU9GCisraWYgYWNfZm5fY190cnlfY29tcGlsZSAiJExJTkVOTyI7IHRoZW4gOgorKyAgZWNobyBjb25mdGVzdC4kYWNfb2JqZXh0ID4gY29uZnRlc3QubHN0CisrICAgICAgbHRfYXJfdHJ5PSckQVIgJEFSX0ZMQUdTIGxpYmNvbmZ0ZXN0LmEgQGNvbmZ0ZXN0LmxzdCA+JjUnCisrICAgICAgeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKysJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KKysJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisrCXsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRsdF9hcl90cnlcIiI7IH0gPiY1CisrICAoZXZhbCAkbHRfYXJfdHJ5KSAyPiY1CisrICBhY19zdGF0dXM9JD8KKysgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFwkPyA9ICRhY19zdGF0dXMiID4mNQorKyAgdGVzdCAkYWNfc3RhdHVzID0gMDsgfQorKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgorKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKysgICAgICAgIGZpCisrICAgICAgZmkKKysgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKyAKKytmaQorK3JtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRlc3QuJGFjX2V4dAorIAorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9hcl9hdF9maWxlIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X2FyX2F0X2ZpbGUiID4mNjsgfQorIAorK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KKytlbHNlCisrICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKKytmaQorIAorIAorIAorQEAgLTY5NjQsOCArNzI4MSw4IEBAIGVzYWMKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbD0ic2VkIC1uIC1lICdzL15UIC4qIFwoLipcKSQvZXh0ZXJuIGludCBcMSgpOy9wJyAtZSAncy9eJHN5bWNvZGUqIC4qIFwoLipcKSQvZXh0ZXJuIGNoYXIgXDE7L3AnIgorIAorICMgVHJhbnNmb3JtIGFuIGV4dHJhY3RlZCBzeW1ib2wgbGluZSBpbnRvIHN5bWJvbCBuYW1lIGFuZCBzeW1ib2wgYWRkcmVzcworLWx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeD0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKGxpYlteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwoW14gXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpWyBdKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKyAKKyAjIEhhbmRsZSBDUkxGIGluIG1pbmd3IHRvb2wgY2hhaW4KKyBvcHRfY3I9CitAQCAtNzAwMSw2ICs3MzE4LDcgQEAgZm9yIGFjX3N5bXByZnggaW4gIiIgIl8iOyBkbworICAgZWxzZQorICAgICBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSJzZWQgLW4gLWUgJ3MvXi4qWwkgXVwoJHN5bWNvZGUkc3ltY29kZSpcKVsJIF1bCSBdKiRhY19zeW1wcmZ4JHN5bXBhdCRvcHRfY3IkLyRzeW14ZnJtL3AnIgorICAgZmkKKysgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9IiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIHwgc2VkICcvIF9fZ251X2x0by9kJyIKKyAKKyAgICMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhlIHBpcGUgd29ya3MgY29ycmVjdGx5LgorICAgcGlwZV93b3Jrcz1ubworQEAgLTcwNDIsNiArNzM2MCwxOCBAQCBfTFRfRU9GCisgICAgICAgaWYgJEdSRVAgJyBubV90ZXN0X3ZhciQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJaWYgJEdSRVAgJyBubV90ZXN0X2Z1bmMkJyAiJG5saXN0IiA+L2Rldi9udWxsOyB0aGVuCisgCSAgY2F0IDw8X0xUX0VPRiA+IGNvbmZ0ZXN0LiRhY19leHQKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAjaWZkZWYgX19jcGx1c3BsdXMKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKK0BAIC03MDUzLDcgKzczODMsNyBAQCBfTFRfRU9GCisgCSAgY2F0IDw8X0xUX0VPRiA+PiBjb25mdGVzdC4kYWNfZXh0CisgCisgLyogVGhlIG1hcHBpbmcgYmV0d2VlbiBzeW1ib2wgbmFtZXMgYW5kIHN5bWJvbHMuICAqLworLWNvbnN0IHN0cnVjdCB7CisrTFRfRExTWU1fQ09OU1Qgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICAgICAgICphZGRyZXNzOworIH0KK0BAIC03MDc5LDggKzc0MDksOCBAQCBzdGF0aWMgY29uc3Qgdm9pZCAqbHRfcHJlbG9hZGVkX3NldHVwKCkgeworIF9MVF9FT0YKKyAJICAjIE5vdyB0cnkgbGlua2luZyB0aGUgdHdvIGZpbGVzLgorIAkgIG12IGNvbmZ0ZXN0LiRhY19vYmpleHQgY29uZnRzdG0uJGFjX29iamV4dAorLQkgIGx0X3NhdmVfTElCUz0iJExJQlMiCistCSAgbHRfc2F2ZV9DRkxBR1M9IiRDRkxBR1MiCisrCSAgbHRfZ2xvYnN5bV9zYXZlX0xJQlM9JExJQlMKKysJICBsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAJICBMSUJTPSJjb25mdHN0bS4kYWNfb2JqZXh0IgorIAkgIENGTEFHUz0iJENGTEFHUyRsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyIKKyAJICBpZiB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkYWNfbGlua1wiIjsgfSA+JjUKK0BAIC03MDkwLDggKzc0MjAsOCBAQCBfTFRfRU9GCisgICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9ICYmIHRlc3QgLXMgY29uZnRlc3Qke2FjX2V4ZWV4dH07IHRoZW4KKyAJICAgIHBpcGVfd29ya3M9eWVzCisgCSAgZmkKKy0JICBMSUJTPSIkbHRfc2F2ZV9MSUJTIgorLQkgIENGTEFHUz0iJGx0X3NhdmVfQ0ZMQUdTIgorKwkgIExJQlM9JGx0X2dsb2JzeW1fc2F2ZV9MSUJTCisrCSAgQ0ZMQUdTPSRsdF9nbG9ic3ltX3NhdmVfQ0ZMQUdTCisgCWVsc2UKKyAJICBlY2hvICJjYW5ub3QgZmluZCBubV90ZXN0X2Z1bmMgaW4gJG5saXN0IiA+JjUKKyAJZmkKK0BAIC03MTI4LDYgKzc0NTgsMTYgQEAgZWxzZQorICRhc19lY2hvICJvayIgPiY2OyB9CisgZmkKKyAKKysjIFJlc3BvbnNlIGZpbGUgc3VwcG9ydC4KKytpZiB0ZXN0ICIkbHRfY3Zfbm1faW50ZXJmYWNlIiA9ICJNUyBkdW1wYmluIjsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZWxpZiAkTk0gLS1oZWxwIDI+L2Rldi9udWxsIHwgZ3JlcCAnW0BdRklMRScgPi9kZXYvbnVsbDsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZmkKKysKKysKKysKKysKKyAKKyAKKyAKK0BAIC03MTQ0LDYgKzc0ODQsNDUgQEAgZmkKKyAKKyAKKyAKKysKKysKKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciBzeXNyb290IiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3Igc3lzcm9vdC4uLiAiID4mNjsgfQorKworKyMgQ2hlY2sgd2hldGhlciAtLXdpdGgtbGlidG9vbC1zeXNyb290IHdhcyBnaXZlbi4KKytpZiB0ZXN0ICIke3dpdGhfbGlidG9vbF9zeXNyb290K3NldH0iID0gc2V0OyB0aGVuIDoKKysgIHdpdGh2YWw9JHdpdGhfbGlidG9vbF9zeXNyb290OworK2Vsc2UKKysgIHdpdGhfbGlidG9vbF9zeXNyb290PW5vCisrZmkKKysKKysKKytsdF9zeXNyb290PQorK2Nhc2UgJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0gaW4gIygKKysgeWVzKQorKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisrICAgICBsdF9zeXNyb290PWAkQ0MgLS1wcmludC1zeXNyb290IDI+L2Rldi9udWxsYAorKyAgIGZpCisrICAgOzsgIygKKysgLyopCisrICAgbHRfc3lzcm9vdD1gZWNobyAiJHdpdGhfbGlidG9vbF9zeXNyb290IiB8IHNlZCAtZSAiJHNlZF9xdW90ZV9zdWJzdCJgCisrICAgOzsgIygKKysgbm98JycpCisrICAgOzsgIygKKysgKikKKysgICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH0iID4mNQorKyRhc19lY2hvICIke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY2OyB9CisrICAgYXNfZm5fZXJyb3IgJD8gIlRoZSBzeXNyb290IG11c3QgYmUgYW4gYWJzb2x1dGUgcGF0aC4iICIkTElORU5PIiA1CisrICAgOzsKKytlc2FjCisrCisrIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke2x0X3N5c3Jvb3Q6LW5vfSIgPiY1CisrJGFzX2VjaG8gIiR7bHRfc3lzcm9vdDotbm99IiA+JjY7IH0KKyAKKyAKKyAKK0BAIC03MzU1LDYgKzc3MzQsMTIzIEBAIGVzYWMKKyAKKyBuZWVkX2xvY2tzPSIkZW5hYmxlX2xpYnRvb2xfbG9jayIKKyAKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiR7YWNfdG9vbF9wcmVmaXh9bXQiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fW10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX01BTklGRVNUX1RPT0w9IiRNQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJHthY190b29sX3ByZWZpeH1tdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJE1BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJE1BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrCisrZmkKKytpZiB0ZXN0IC16ICIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgYWNfY3RfTUFOSUZFU1RfVE9PTD0kTUFOSUZFU1RfVE9PTAorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJtdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IG10OyBhY193b3JkPSQyCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorK2lmICR7YWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgaWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0w9IiRhY19jdF9NQU5JRkVTVF9UT09MIiAjIExldCB0aGUgdXNlciBvdmVycmlkZSB0aGUgdGVzdC4KKytlbHNlCisrYXNfc2F2ZV9JRlM9JElGUzsgSUZTPSRQQVRIX1NFUEFSQVRPUgorK2ZvciBhc19kaXIgaW4gJFBBVEgKKytkbworKyAgSUZTPSRhc19zYXZlX0lGUworKyAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKysgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisrICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCisrICAgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0ibXQiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK2FjX2N0X01BTklGRVNUX1RPT0w9JGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTAorK2lmIHRlc3QgLW4gIiRhY19jdF9NQU5JRkVTVF9UT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRhY19jdF9NQU5JRkVTVF9UT09MIiA+JjUKKyskYXNfZWNobyAiJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKyAgaWYgdGVzdCAieCRhY19jdF9NQU5JRkVTVF9UT09MIiA9IHg7IHRoZW4KKysgICAgTUFOSUZFU1RfVE9PTD0iOiIKKysgIGVsc2UKKysgICAgY2FzZSAkY3Jvc3NfY29tcGlsaW5nOiRhY190b29sX3dhcm5lZCBpbgorK3llczopCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBXQVJOSU5HOiB1c2luZyBjcm9zcyB0b29scyBub3QgcHJlZml4ZWQgd2l0aCBob3N0IHRyaXBsZXQiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiYyO30KKythY190b29sX3dhcm5lZD15ZXMgOzsKKytlc2FjCisrICAgIE1BTklGRVNUX1RPT0w9JGFjX2N0X01BTklGRVNUX1RPT0wKKysgIGZpCisrZWxzZQorKyAgTUFOSUZFU1RfVE9PTD0iJGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTCIKKytmaQorKworK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBpZiAkTUFOSUZFU1RfVE9PTCBpcyBhIG1hbmlmZXN0IHRvb2wiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfcGF0aF9tYWluZmVzdF90b29sKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sPW5vCisrICBlY2hvICIkYXNfbWU6JExJTkVOTzogJE1BTklGRVNUX1RPT0wgJy0/JyIgPiY1CisrICAkTUFOSUZFU1RfVE9PTCAnLT8nIDI+Y29uZnRlc3QuZXJyID4gY29uZnRlc3Qub3V0CisrICBjYXQgY29uZnRlc3QuZXJyID4mNQorKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisrICBmaQorKyAgcm0gLWYgY29uZnRlc3QqCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiID4mNjsgfQorK2lmIHRlc3QgIngkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiAhPSB4eWVzOyB0aGVuCisrICBNQU5JRkVTVF9UT09MPToKKytmaQorKworKworKworKworKworIAorICAgY2FzZSAkaG9zdF9vcyBpbgorICAgICByaGFwc29keSogfCBkYXJ3aW4qKQorQEAgLTc5MTgsNiArODQxNCw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JjUKKyAgICAgICBlY2hvICIkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyIgPiY1CisgICAgICAgJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8gMj4mNQorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiY1CisrICAgICAgJFJBTkxJQiBsaWJjb25mdGVzdC5hIDI+JjUKKyAgICAgICBjYXQgPiBjb25mdGVzdC5jIDw8IF9MVF9FT0YKKyBpbnQgbWFpbigpIHsgcmV0dXJuIDA7fQorIF9MVF9FT0YKK0BAIC04MDgzLDcgKzg1ODEsOCBAQCBmaQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgCisgCisgCitAQCAtODE3Miw3ICs4NjcxLDcgQEAgYWl4MyopCisgZXNhYworIAorICMgR2xvYmFsIHZhcmlhYmxlczoKKy1vZmlsZT1saWJ0b29sCisrb2ZpbGU9JHtob3N0X2FsaWFzfS1saWJ0b29sCisgY2FuX2J1aWxkX3NoYXJlZD15ZXMKKyAKKyAjIEFsbCBrbm93biBsaW5rZXJzIHJlcXVpcmUgYSBgLmEnIGFyY2hpdmUgZm9yIHN0YXRpYyBsaW5raW5nIChleGNlcHQgTVNWQywKK0BAIC04NDcwLDggKzg5NjksNiBAQCBmaQorIGx0X3Byb2dfY29tcGlsZXJfcGljPQorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPQorIAorLXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMiID4mNQorLSRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCisgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3dsPSctV2wsJworQEAgLTg2MzcsNiArOTEzNCwxMiBAQCAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorIAlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLS1zaGFyZWQnCisgCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctLXN0YXRpYycKKyAJOzsKKysgICAgICBuYWdmb3IqKQorKwkjIE5BRyBGb3J0cmFuIGNvbXBpbGVyCisrCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwtV2wsLCcKKysJbHRfcHJvZ19jb21waWxlcl9waWM9Jy1QSUMnCisrCWx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKysJOzsKKyAgICAgICBwZ2NjKiB8IHBnZjc3KiB8IHBnZjkwKiB8IHBnZjk1KiB8IHBnZm9ydHJhbiopCisgICAgICAgICAjIFBvcnRsYW5kIEdyb3VwIGNvbXBpbGVycyAoKm5vdCogdGhlIFBlbnRpdW0gZ2NjIGNvbXBpbGVyLAorIAkjIHdoaWNoIGxvb2tzIHRvIGJlIGEgZGVhZCBwcm9qZWN0KQorQEAgLTg2OTksNyArOTIwMiw3IEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgICAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9Jy1LUElDJworICAgICAgIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSctQnN0YXRpYycKKyAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKysgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1Rb3B0aW9uIGxkICc7OworICAgICAgICopCisgCWx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnOzsKK0BAIC04NzU2LDEzICs5MjU5LDE3IEBAIGNhc2UgJGhvc3Rfb3MgaW4KKyAgICAgbHRfcHJvZ19jb21waWxlcl9waWM9IiRsdF9wcm9nX2NvbXBpbGVyX3BpYyAtRFBJQyIKKyAgICAgOzsKKyBlc2FjCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY1CistJGFzX2VjaG8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgPiY2OyB9CistCistCistCistCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3Byb2dfY29tcGlsZXJfcGljKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfcHJvZ19jb21waWxlcl9waWM9JGx0X3Byb2dfY29tcGlsZXJfcGljCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKytsdF9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfY3ZfcHJvZ19jb21waWxlcl9waWMKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTg4MjMsNiArOTMzMCwxMSBAQCBmaQorIAorIAorIAorKworKworKworKworKworICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTkxNzMsNyArOTY4NSw4IEBAIF9MVF9FT0YKKyAgICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorICAgICAgIGFsd2F5c19leHBvcnRfc3ltYm9scz1ubworICAgICAgIGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCistICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS8nXCcnIHwgJFNFRCAtZSAnXCcnL15bQUlUV11bIF0vcy8uKlsgXS8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxIERBVEEvO3MvXi4qWyBdX19ubV9fXChbXiBdKlwpWyBdW14gXSovXDEgREFUQS87L15JWyBdL2Q7L15bQUlUV11bIF0vcy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgICAgICBleGNsdWRlX2V4cHN5bXM9J1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZScKKyAKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnYXV0by1pbXBvcnQnID4gL2Rldi9udWxsOyB0aGVuCisgICAgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworQEAgLTkyNzIsMTIgKzk3ODUsMTIgQEAgX0xUX0VPRgorIAkgIHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJworIAkgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9CisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZD0nLXJwYXRoICRsaWJkaXInCistCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisrCSAgYXJjaGl2ZV9jbWRzPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtbyAkbGliJworIAkgIGlmIHRlc3QgIngkc3VwcG9ydHNfYW5vbl92ZXJzaW9uaW5nIiA9IHh5ZXM7IHRoZW4KKyAJICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CisgCSAgICAgIGNhdCAkZXhwb3J0X3N5bWJvbHMgfCBzZWQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgZWNobyAibG9jYWw6ICo7IH07IiA+PiAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXJ+CistCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLXZlcnNpb24tc2NyaXB0ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlciAtbyAkbGliJworKwkgICAgICAkTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisgCSAgZmkKKyAJICA7OworIAllc2FjCitAQCAtOTI5MSw4ICs5ODA0LDggQEAgX0xUX0VPRgorIAlhcmNoaXZlX2NtZHM9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCisgCXdsYXJjPQorICAgICAgIGVsc2UKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZmkKKyAgICAgICA7OworIAorQEAgLTkzMTAsOCArOTgyMyw4IEBAIF9MVF9FT0YKKyAKKyBfTFRfRU9GCisgICAgICAgZWxpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05MzU3LDggKzk4NzAsOCBAQCBfTFRfRU9GCisgCisgICAgICopCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBlbHNlCisgCWxkX3NobGlicz1ubworICAgICAgIGZpCitAQCAtOTQ4OCw3ICsxMDAwMSwxMyBAQCBfTFRfRU9GCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPSctYmVyb2snCisgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAgICAgICAgICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysgICAgICAgIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05NTAxLDIyICsxMDAyMCwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorICAgICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtOTUyOCw3ICsxMDA1NCwxMyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJZWxzZQorIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSBpZiB0ZXN0ICIke2x0X2N2X2FpeF9saWJwYXRoK3NldH0iID0gc2V0OyB0aGVuCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGgKKytlbHNlCisrICBpZiAke2x0X2N2X2FpeF9saWJwYXRoXys6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCisgCisgaW50CitAQCAtOTU0MSwyMiArMTAwNzMsMjkgQEAgbWFpbiAoKQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKyAKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmkKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nCisrICAgICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworKwkgIC9eMC8geworKwkgICAgICBzL14wICAqXChbXiBdKlwpICokL1wxLworKwkgICAgICBwCisrCSAgfQorKyAgICAgIH0nCisrICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICAjIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCisrICBmaQorIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisrICBpZiB0ZXN0IC16ICIkbHRfY3ZfYWl4X2xpYnBhdGhfIjsgdGhlbgorKyAgICBsdF9jdl9haXhfbGlicGF0aF89Ii91c3IvbGliOi9saWIiCisrICBmaQorKworK2ZpCisrCisrICBhaXhfbGlicGF0aD0kbHRfY3ZfYWl4X2xpYnBhdGhfCisrZmkKKyAKKyAJIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyR7d2x9LWJsaWJwYXRoOiRsaWJkaXI6JyIkYWl4X2xpYnBhdGgiCisgCSAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKK0BAIC05NjAxLDIwICsxMDE0MCw2MyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAgICAgICAjIE1pY3Jvc29mdCBWaXN1YWwgQysrLgorICAgICAgICMgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywgYXMgdGhlcmUgaXMKKyAgICAgICAjIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCistICAgICAgYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorLSAgICAgIGxpYmV4dD1saWIKKy0gICAgICAjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKy0gICAgICBzaHJleHRfY21kcz0iLmRsbCIKKy0gICAgICAjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKy0gICAgICAjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorLSAgICAgIG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHM9J3RydWUnCistICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKy0gICAgICBvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCistICAgICAgZml4X3NyY2ZpbGVfcGF0aD0nYGN5Z3BhdGggLXcgIiRzcmNmaWxlImAnCistICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKysgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICAgIGNsKikKKysJIyBOYXRpdmUgTVNWQworKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwlhbHdheXNfZXhwb3J0X3N5bWJvbHM9eWVzCisrCWZpbGVfbGlzdF9zcGVjPSdAJworKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBlbHNlCisrCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGZpfgorKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICBsaW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCApPSd0cnVlJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwlleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrCSMgRG9uJ3QgdXNlIHJhbmxpYgorKwlvbGRfcG9zdGluc3RhbGxfY21kcz0nY2htb2QgNjQ0ICRvbGRsaWInCisrCXBvc3RsaW5rX2NtZHM9J2x0X291dHB1dGZpbGU9IkBPVVRQVVRAIn4KKysJICBsdF90b29sX291dHB1dGZpbGU9IkBUT09MX09VVFBVVEAifgorKwkgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICouZXhlfCouRVhFKSA7OworKwkgICAgKikKKysJICAgICAgbHRfb3V0cHV0ZmlsZT0iJGx0X291dHB1dGZpbGUuZXhlIgorKwkgICAgICBsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkgICAgICA7OworKwkgIGVzYWN+CisrCSAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICRNQU5JRkVTVF9UT09MIC1tYW5pZmVzdCAiJGx0X3Rvb2xfb3V0cHV0ZmlsZS5tYW5pZmVzdCIgLW91dHB1dHJlc291cmNlOiIkbHRfdG9vbF9vdXRwdXRmaWxlIiB8fCBleGl0IDE7CisrCSAgICAkUk0gIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsKKysJICBmaScKKysJOzsKKysgICAgICAqKQorKwkjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKysJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKysJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9dW5zdXBwb3J0ZWQKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJYXJjaGl2ZV9jbWRzPSckQ0MgLW8gJGxpYiAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgYGZ1bmNfZWNob19hbGwgIiRkZXBsaWJzIiB8ICRTRUQgJ1wnJ3MvIC1sYyQvLydcJydgIC1saW5rIC1kbGx+bGlua25hbWVzPScKKysJIyBUaGUgbGlua2VyIHdpbGwgYXV0b21hdGljYWxseSBidWlsZCBhIC5saWIgZmlsZSBpZiB3ZSBidWlsZCBhIERMTC4KKysJb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKysJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKysJb2xkX2FyY2hpdmVfY21kcz0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworKwllbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKwk7OworKyAgICAgIGVzYWMKKyAgICAgICA7OworIAorICAgICBkYXJ3aW4qIHwgcmhhcHNvZHkqKQorQEAgLTk2NzUsNyArMTAyNTcsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgIyBGcmVlQlNEIDMgYW5kIGdyZWF0ZXIgdXNlcyBnY2MgLXNoYXJlZCB0byBkbyBzaGFyZWQgbGlicmFyaWVzLgorICAgICBmcmVlYnNkKiB8IGRyYWdvbmZseSopCistICAgICAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysgICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPSctUiRsaWJkaXInCisgICAgICAgaGFyZGNvZGVfZGlyZWN0PXllcworICAgICAgIGhhcmRjb2RlX3NobGlicGF0aF92YXI9bm8KK0BAIC05NjgzLDcgKzEwMjY1LDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXg5KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisrCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRMRCAtYiArYiAkaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgIGZpCitAQCAtOTY5OSw3ICsxMDI4MSw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICBocHV4MTAqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRMRCAtYiAraCAkc29uYW1lICtiICRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MnCisgICAgICAgZmkKK0BAIC05NzIzLDEwICsxMDMwNSwxMCBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWlhNjQqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJKikKKy0JICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAllc2FjCisgICAgICAgZWxzZQorQEAgLTk4MDUsMjMgKzEwMzg3LDM2IEBAIGZpCisgCisgICAgIGlyaXg1KiB8IGlyaXg2KiB8IG5vbnN0b3B1eCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CisgCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKKyAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KKy0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCistICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCistICAgICAgICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisrCSMgVGhpcyBzaG91bGQgYmUgdGhlIHNhbWUgZm9yIGFsbCBsYW5ndWFnZXMsIHNvIG5vIHBlci10YWcgY2FjaGUgdmFyaWFibGUuCisrCXsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBzYXZlX0xERkxBR1M9IiRMREZMQUdTIgorKwkgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCisrCSAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKyAvKiBlbmQgY29uZmRlZnMuaC4gICovCistaW50IGZvbyh2b2lkKSB7fQorK2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH0KKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CistICBhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCistCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXMKKytlbHNlCisrICBsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD1ubworIGZpCisgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIGNvbmZ0ZXN0JGFjX2V4ZWV4dCBjb25mdGVzdC4kYWNfZXh0CistICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyIKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID4mNjsgfQorKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCisrICAgICAgICAgIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWZpCisgICAgICAgZWxzZQorIAlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKK0BAIC05OTA2LDcgKzEwNTAxLDcgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCWFsbG93X3VuZGVmaW5lZF9mbGFnPScgJHt3bH0tZXhwZWN0X3VucmVzb2x2ZWQgJHt3bH1cKicKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tcnBhdGggJHt3bH0kbGliZGlyJworICAgICAgIGVsc2UKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAtZXhwZWN0X3VucmVzb2x2ZWQgXConCitAQCAtOTkyNSw5ICsxMDUyMCw5IEBAIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICAgIG5vX3VuZGVmaW5lZF9mbGFnPScgLXogZGVmcycKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAl3bGFyYz0nJHt3bH0nCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAlhcmNoaXZlX2V4cHN5bV9jbWRzPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICBlbHNlCisgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgorIAkqIkNvbXBpbGVycyA1LjAiKikKK0BAIC0xMDUwMyw4ICsxMTA5OCw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIG5lZWRfdmVyc2lvbj1ubworICAgbmVlZF9saWJfcHJlZml4PW5vCisgCistICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KKy0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisrICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisrICB5ZXMsKikKKysgICAgIyBnY2MKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KK0BAIC0xMDUzNywxMyArMTExMzMsNzEgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nYGVjaG8gJHtsaWJuYW1lfSB8IHNlZCAtZSAncy9ebGliL3B3LydgYGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgICA7OworICAgICBlc2FjCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisrICAgIDs7CisrCisrICAqLGNsKikKKysgICAgIyBOYXRpdmUgTVNWQworKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0nCisrICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfS5kbGwubGliJworKworKyAgICBjYXNlICRidWlsZF9vcyBpbgorKyAgICBtaW5ndyopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPQorKyAgICAgIGx0X3NhdmVfaWZzPSRJRlMKKysgICAgICBJRlM9JzsnCisrICAgICAgZm9yIGx0X3BhdGggaW4gJExJQgorKyAgICAgIGRvCisrICAgICAgICBJRlM9JGx0X3NhdmVfaWZzCisrICAgICAgICAjIExldCBET1MgdmFyaWFibGUgZXhwYW5zaW9uIHByaW50IHRoZSBzaG9ydCA4LjMgc3R5bGUgZmlsZSBuYW1lLgorKyAgICAgICAgbHRfcGF0aD1gY2QgIiRsdF9wYXRoIiAyPi9kZXYvbnVsbCAmJiBjbWQgLy9DICJmb3IgJWkgaW4gKCIuIikgZG8gQGVjaG8gJX5zaSJgCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMgJGx0X3BhdGgiCisrICAgICAgZG9uZQorKyAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAjIENvbnZlcnQgdG8gTVNZUyBzdHlsZS4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IHNlZCAtZSAnc3xcXFxcfC98ZycgLWUgJ3N8IFxcKFthLXpBLVpdXFwpOnwgL1xcMXxnJyAtZSAnc3xeIHx8J2AKKysgICAgICA7OworKyAgICBjeWd3aW4qKQorKyAgICAgICMgQ29udmVydCB0byB1bml4IGZvcm0sIHRoZW4gdG8gZG9zIGZvcm0sIHRoZW4gYmFjayB0byB1bml4IGZvcm0KKysgICAgICAjIGJ1dCB0aGlzIHRpbWUgZG9zIHN0eWxlIChubyBzcGFjZXMhKSBzbyB0aGF0IHRoZSB1bml4IGZvcm0gbG9va3MKKysgICAgICAjIGxpa2UgL2N5Z2RyaXZlL2MvUFJPR1JBfjE6L2N5Z2RyLi4uCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRMSUIiYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS1kb3MgIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIDI+L2Rldi9udWxsYAorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgOzsKKysgICAgKikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9IiRMSUIiCisrICAgICAgaWYgJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJEdSRVAgJztbYy16Qy1aXTovJyA+L2Rldi9udWxsOyB0aGVuCisrICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKysgICAgICBlbHNlCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgZmkKKysgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKysgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisrICAgICAgOzsKKysgICAgZXNhYworKworKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisrICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKysgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorKyAgICAgICAkUk0gXCRkbHBhdGgnCisrICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJworICAgICA7OworIAorICAgKikKKysgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1suXS8tL2cnYCR7dmVyc3VmZml4fSR7c2hhcmVkX2V4dH0gJGxpYm5hbWUubGliJworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgICA7OworICAgZXNhYworLSAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKyAgICMgRklYTUU6IGZpcnN0IHdlIHNob3VsZCBzZWFyY2ggLiBhbmQgdGhlIGRpcmVjdG9yeSB0aGUgZXhlY3V0YWJsZSBpcyBpbgorICAgc2hsaWJwYXRoX3Zhcj1QQVRICisgICA7OworQEAgLTEwNjM1LDcgKzExMjg5LDcgQEAgaGFpa3UqKQorICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCistICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJworKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCisgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICA7OworIAorQEAgLTExNDMxLDcgKzEyMDg1LDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTE0MzQgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExNDc1LDEwICsxMjEyOSwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTExNTM3LDcgKzEyMTkxLDcgQEAgZWxzZQorICAgbHRfZGx1bmtub3duPTA7IGx0X2Rsbm9fdXNjb3JlPTE7IGx0X2RsbmVlZF91c2NvcmU9MgorICAgbHRfc3RhdHVzPSRsdF9kbHVua25vd24KKyAgIGNhdCA+IGNvbmZ0ZXN0LiRhY19leHQgPDxfTFRfRU9GCistI2xpbmUgMTE1NDAgImNvbmZpZ3VyZSIKKysjbGluZSAkTElORU5PICJjb25maWd1cmUiCisgI2luY2x1ZGUgImNvbmZkZWZzLmgiCisgCisgI2lmIEhBVkVfRExGQ05fSAorQEAgLTExNTgxLDEwICsxMjIzNSwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTEzOTk0LDEzICsxNDY0OCwyMCBAQCBleGVleHQ9J2AkRUNITyAiJGV4ZWV4dCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfdW5zZXQ9J2AkRUNITyAiJGx0X3Vuc2V0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9TUDJOTD0nYCRFQ0hPICIkbHRfU1AyTkwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X05MMlNQPSdgJEVDSE8gIiRsdF9OTDJTUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9faG9zdF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD0nYCRFQ0hPICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcmVsb2FkX2ZsYWc9J2AkRUNITyAiJHJlbG9hZF9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfY21kcz0nYCRFQ0hPICIkcmVsb2FkX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE9CSkRVTVA9J2AkRUNITyAiJE9CSkRVTVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSdgJEVDSE8gIiRkZXBsaWJzX2NoZWNrX21ldGhvZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9tYWdpY19jbWQ9J2AkRUNITyAiJGZpbGVfbWFnaWNfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytmaWxlX21hZ2ljX2dsb2I9J2AkRUNITyAiJGZpbGVfbWFnaWNfZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrd2FudF9ub2Nhc2VnbG9iPSdgJEVDSE8gIiR3YW50X25vY2FzZWdsb2IiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK0RMTFRPT0w9J2AkRUNITyAiJERMTFRPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSdgJEVDSE8gIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgQVI9J2AkRUNITyAiJEFSIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUl9GTEFHUz0nYCRFQ0hPICIkQVJfRkxBR1MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2FyY2hpdmVyX2xpc3Rfc3BlYz0nYCRFQ0hPICIkYXJjaGl2ZXJfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBTVFJJUD0nYCRFQ0hPICIkU1RSSVAiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFJBTkxJQj0nYCRFQ0hPICIkUkFOTElCIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBvbGRfcG9zdGluc3RhbGxfY21kcz0nYCRFQ0hPICIkb2xkX3Bvc3RpbnN0YWxsX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTE0MDE1LDE0ICsxNDY3NiwxNyBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRTRUQgIiRkZQorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSdgJEVDSE8gIiRsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytubV9maWxlX2xpc3Rfc3BlYz0nYCRFQ0hPICIkbm1fZmlsZV9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3N5c3Jvb3Q9J2AkRUNITyAiJGx0X3N5c3Jvb3QiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9iamRpcj0nYCRFQ0hPICIkb2JqZGlyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBNQUdJQ19DTUQ9J2AkRUNITyAiJE1BR0lDX0NNRCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWc9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1sdF9wcm9nX2NvbXBpbGVyX3dsPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3dsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9waWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2x0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfY3ZfcHJvZ19jb21waWxlcl9jX289J2AkRUNITyAiJGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xvY2tzPSdgJEVDSE8gIiRuZWVkX2xvY2tzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytNQU5JRkVTVF9UT09MPSdgJEVDSE8gIiRNQU5JRkVTVF9UT09MIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBEU1lNVVRJTD0nYCRFQ0hPICIkRFNZTVVUSUwiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE5NRURJVD0nYCRFQ0hPICIkTk1FRElUIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBMSVBPPSdgJEVDSE8gIiRMSVBPIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xNDA1NSwxMiArMTQ3MTksMTIgQEAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj0nYCRFQ0hPICIkaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3EKKyBoYXJkY29kZV9hdXRvbWF0aWM9J2AkRUNITyAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgaW5oZXJpdF9ycGF0aD0nYCRFQ0hPICIkaW5oZXJpdF9ycGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbGlua19hbGxfZGVwbGlicz0nYCRFQ0hPICIkbGlua19hbGxfZGVwbGlicyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCistZml4X3NyY2ZpbGVfcGF0aD0nYCRFQ0hPICIkZml4X3NyY2ZpbGVfcGF0aCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSdgJEVDSE8gIiRhbHdheXNfZXhwb3J0X3N5bWJvbHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4cG9ydF9zeW1ib2xzX2NtZHM9J2AkRUNITyAiJGV4cG9ydF9zeW1ib2xzX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGV4Y2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkZXhjbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmNsdWRlX2V4cHN5bXM9J2AkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgcHJlbGlua19jbWRzPSdgJEVDSE8gIiRwcmVsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK3Bvc3RsaW5rX2NtZHM9J2AkRUNITyAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRmaWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbms9J2AkRUNITyAiJHZhcmlhYmxlc19zYXZlZF9mb3JfcmVsaW5rIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBuZWVkX2xpYl9wcmVmaXg9J2AkRUNITyAiJG5lZWRfbGliX3ByZWZpeCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTQxMTUsOCArMTQ3NzksMTMgQEAgcmVsb2FkX2ZsYWcgXAorIE9CSkRVTVAgXAorIGRlcGxpYnNfY2hlY2tfbWV0aG9kIFwKKyBmaWxlX21hZ2ljX2NtZCBcCisrZmlsZV9tYWdpY19nbG9iIFwKKyt3YW50X25vY2FzZWdsb2IgXAorK0RMTFRPT0wgXAorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIFwKKyBBUiBcCisgQVJfRkxBR1MgXAorK2FyY2hpdmVyX2xpc3Rfc3BlYyBcCisgU1RSSVAgXAorIFJBTkxJQiBcCisgQ0MgXAorQEAgLTE0MTI2LDEyICsxNDc5NSwxNCBAQCBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF9waXBlIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbCBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXggXAorK25tX2ZpbGVfbGlzdF9zcGVjIFwKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZyBcCistbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9waWMgXAorK2x0X3Byb2dfY29tcGlsZXJfd2wgXAorIGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIFwKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2NfbyBcCisgbmVlZF9sb2NrcyBcCisrTUFOSUZFU1RfVE9PTCBcCisgRFNZTVVUSUwgXAorIE5NRURJVCBcCisgTElQTyBcCitAQCAtMTQxNDcsNyArMTQ4MTgsNiBAQCBub191bmRlZmluZWRfZmxhZyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyBcCisgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCBcCisgaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciBcCistZml4X3NyY2ZpbGVfcGF0aCBcCisgZXhjbHVkZV9leHBzeW1zIFwKKyBpbmNsdWRlX2V4cHN5bXMgXAorIGZpbGVfbGlzdF9zcGVjIFwKK0BAIC0xNDE4Myw2ICsxNDg1Myw3IEBAIG1vZHVsZV9jbWRzIFwKKyBtb2R1bGVfZXhwc3ltX2NtZHMgXAorIGV4cG9ydF9zeW1ib2xzX2NtZHMgXAorIHByZWxpbmtfY21kcyBcCisrcG9zdGxpbmtfY21kcyBcCisgcG9zdGluc3RhbGxfY21kcyBcCisgcG9zdHVuaW5zdGFsbF9jbWRzIFwKKyBmaW5pc2hfY21kcyBcCitAQCAtMTQ5MzksNyArMTU2MTAsOCBAQCAkYXNfZWNobyBYIiRmaWxlIiB8CisgIyBOT1RFOiBDaGFuZ2VzIG1hZGUgdG8gdGhpcyBmaWxlIHdpbGwgYmUgbG9zdDogbG9vayBhdCBsdG1haW4uc2guCisgIworICMgICBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsCistIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKysjICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5LCAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwKKysjICAgICAgICAgICAgICAgICBJbmMuCisgIyAgIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQsIDE5OTYKKyAjCisgIyAgIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIEdOVSBMaWJ0b29sLgorQEAgLTE1MDQyLDE5ICsxNTcxNCw0MiBAQCBTUDJOTD0kbHRfbHRfU1AyTkwKKyAjIHR1cm4gbmV3bGluZXMgaW50byBzcGFjZXMuCisgTkwyU1A9JGx0X2x0X05MMlNQCisgCisrIyBjb252ZXJ0IFwkYnVpbGQgZmlsZSBuYW1lcyB0byBcJGhvc3QgZm9ybWF0LgorK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKysKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0LgorK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKysKKyAjIEFuIG9iamVjdCBzeW1ib2wgZHVtcGVyLgorIE9CSkRVTVA9JGx0X09CSkRVTVAKKyAKKyAjIE1ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzLgorIGRlcGxpYnNfY2hlY2tfbWV0aG9kPSRsdF9kZXBsaWJzX2NoZWNrX21ldGhvZAorIAorLSMgQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyIuCisrIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorIGZpbGVfbWFnaWNfY21kPSRsdF9maWxlX21hZ2ljX2NtZAorIAorKyMgSG93IHRvIGZpbmQgcG90ZW50aWFsIGZpbGVzIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisrZmlsZV9tYWdpY19nbG9iPSRsdF9maWxlX21hZ2ljX2dsb2IKKysKKysjIEZpbmQgcG90ZW50aWFsIGZpbGVzIHVzaW5nIG5vY2FzZWdsb2Igd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKyt3YW50X25vY2FzZWdsb2I9JGx0X3dhbnRfbm9jYXNlZ2xvYgorKworKyMgRExMIGNyZWF0aW9uIHByb2dyYW0uCisrRExMVE9PTD0kbHRfRExMVE9PTAorKworKyMgQ29tbWFuZCB0byBhc3NvY2lhdGUgc2hhcmVkIGFuZCBsaW5rIGxpYnJhcmllcy4KKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKysKKyAjIFRoZSBhcmNoaXZlci4KKyBBUj0kbHRfQVIKKysKKysjIEZsYWdzIHRvIGNyZWF0ZSBhbiBhcmNoaXZlLgorIEFSX0ZMQUdTPSRsdF9BUl9GTEFHUworIAorKyMgSG93IHRvIGZlZWQgYSBmaWxlIGxpc3RpbmcgdG8gdGhlIGFyY2hpdmVyLgorK2FyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfYXJjaGl2ZXJfbGlzdF9zcGVjCisrCisgIyBBIHN5bWJvbCBzdHJpcHBpbmcgcHJvZ3JhbS4KKyBTVFJJUD0kbHRfU1RSSVAKKyAKK0BAIC0xNTA4NCw2ICsxNTc3OSwxMiBAQCBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzPSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcworICMgVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWQuCisgZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSRsdF9sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4CisgCisrIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yIFwkTk0uCisrbm1fZmlsZV9saXN0X3NwZWM9JGx0X25tX2ZpbGVfbGlzdF9zcGVjCisrCisrIyBUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIGRlcGVuZGVudCBsaWJyYXJpZXMsYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC4KKytsdF9zeXNyb290PSRsdF9zeXNyb290CisrCisgIyBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5IHRoYXQgY29udGFpbnMgdGVtcG9yYXJ5IGxpYnRvb2wgZmlsZXMuCisgb2JqZGlyPSRvYmpkaXIKKyAKK0BAIC0xNTA5Myw2ICsxNTc5NCw5IEBAIE1BR0lDX0NNRD0kTUFHSUNfQ01ECisgIyBNdXN0IHdlIGxvY2sgZmlsZXMgd2hlbiBkb2luZyBjb21waWxhdGlvbj8KKyBuZWVkX2xvY2tzPSRsdF9uZWVkX2xvY2tzCisgCisrIyBNYW5pZmVzdCB0b29sLgorK01BTklGRVNUX1RPT0w9JGx0X01BTklGRVNUX1RPT0wKKysKKyAjIFRvb2wgdG8gbWFuaXB1bGF0ZSBhcmNoaXZlZCBEV0FSRiBkZWJ1ZyBzeW1ib2wgZmlsZXMgb24gTWFjIE9TIFguCisgRFNZTVVUSUw9JGx0X0RTWU1VVElMCisgCitAQCAtMTUyMDcsMTIgKzE1OTExLDEyIEBAIHdpdGhfZ2NjPSRHQ0MKKyAjIENvbXBpbGVyIGZsYWcgdG8gdHVybiBvZmYgYnVpbHRpbiBmdW5jdGlvbnMuCisgbm9fYnVpbHRpbl9mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZworIAorLSMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKy13bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorLQorICMgQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzLgorIHBpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3BpYworIAorKyMgSG93IHRvIHBhc3MgYSBsaW5rZXIgZmxhZyB0aHJvdWdoIHRoZSBjb21waWxlci4KKyt3bD0kbHRfbHRfcHJvZ19jb21waWxlcl93bAorKworICMgQ29tcGlsZXIgZmxhZyB0byBwcmV2ZW50IGR5bmFtaWMgbGlua2luZy4KKyBsaW5rX3N0YXRpY19mbGFnPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3N0YXRpYworIAorQEAgLTE1Mjk5LDkgKzE2MDAzLDYgQEAgaW5oZXJpdF9ycGF0aD0kaW5oZXJpdF9ycGF0aAorICMgV2hldGhlciBsaWJ0b29sIG11c3QgbGluayBhIHByb2dyYW0gYWdhaW5zdCBhbGwgaXRzIGRlcGVuZGVuY3kgbGlicmFyaWVzLgorIGxpbmtfYWxsX2RlcGxpYnM9JGxpbmtfYWxsX2RlcGxpYnMKKyAKKy0jIEZpeCB0aGUgc2hlbGwgdmFyaWFibGUgXCRzcmNmaWxlIGZvciB0aGUgY29tcGlsZXIuCistZml4X3NyY2ZpbGVfcGF0aD0kbHRfZml4X3NyY2ZpbGVfcGF0aAorLQorICMgU2V0IHRvICJ5ZXMiIGlmIGV4cG9ydGVkIHN5bWJvbHMgYXJlIHJlcXVpcmVkLgorIGFsd2F5c19leHBvcnRfc3ltYm9scz0kYWx3YXlzX2V4cG9ydF9zeW1ib2xzCisgCitAQCAtMTUzMTcsNiArMTYwMTgsOSBAQCBpbmNsdWRlX2V4cHN5bXM9JGx0X2luY2x1ZGVfZXhwc3ltcworICMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBsaW5raW5nIHByb2dyYW1zIChhZ2FpbnN0IGxpYnJhcmllcykgd2l0aCB0ZW1wbGF0ZXMuCisgcHJlbGlua19jbWRzPSRsdF9wcmVsaW5rX2NtZHMKKyAKKysjIENvbW1hbmRzIG5lY2Vzc2FyeSBmb3IgZmluaXNoaW5nIGxpbmtpbmcgcHJvZ3JhbXMuCisrcG9zdGxpbmtfY21kcz0kbHRfcG9zdGxpbmtfY21kcworKworICMgU3BlY2lmeSBmaWxlbmFtZSBjb250YWluaW5nIGlucHV0IGZpbGVzLgorIGZpbGVfbGlzdF9zcGVjPSRsdF9maWxlX2xpc3Rfc3BlYworIAorQEAgLTE1MzQ5LDIxMCArMTYwNTMsMTY5IEBAIGx0bWFpbj0iJGFjX2F1eF9kaXIvbHRtYWluLnNoIgorICAgIyBpZiBmaW5kcyBtaXhlZCBDUi9MRiBhbmQgTEYtb25seSBsaW5lcy4gIFNpbmNlIHNlZCBvcGVyYXRlcyBpbgorICAgIyB0ZXh0IG1vZGUsIGl0IHByb3Blcmx5IGNvbnZlcnRzIGxpbmVzIHRvIENSL0xGLiAgVGhpcyBiYXNoIHByb2JsZW0KKyAgICMgaXMgcmVwb3J0ZWRseSBmaXhlZCwgYnV0IHdoeSBub3QgcnVuIG9uIG9sZCB2ZXJzaW9ucyB0b28/CistICBzZWQgJy9eIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUvcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgY2FzZSAkeHNpX3NoZWxsIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgcGVyZm9ybSBmdW5jX2Jhc2VuYW1lIGFuZCBmdW5jX2Rpcm5hbWUgaW4gYSBzaW5nbGUgZnVuY3Rpb24KKy0jIGNhbGw6CistIyAgIGRpcm5hbWU6ICBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwKKy0jICAgICAgICAgICAgIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwgb3RoZXJ3aXNlIHNldCByZXN1bHQKKy0jICAgICAgICAgICAgIHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVybmVkIGluICIkZnVuY19kaXJuYW1lX3Jlc3VsdCIKKy0jICAgYmFzZW5hbWU6IENvbXB1dGUgZmlsZW5hbWUgb2YgRklMRS4KKy0jICAgICAgICAgICAgIHZhbHVlIHJldHVuZWQgaW4gIiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0jIEltcGxlbWVudGF0aW9uIG11c3QgYmUga2VwdCBzeW5jaHJvbml6ZWQgd2l0aCBmdW5jX2Rpcm5hbWUKKy0jIGFuZCBmdW5jX2Jhc2VuYW1lLiBGb3IgZWZmaWNpZW5jeSwgd2UgZG8gbm90IGRlbGVnYXRlIHRvCistIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCistZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7OworLSAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CistICBlc2FjCistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKy0gICMgcG9zaXRpb25hbCBwYXJhbWV0ZXJzLCBzbyBhc3NpZ24gb25lIHRvIG9yZGluYXJ5IHBhcmFtZXRlciBmaXJzdC4KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0JSIkezJ9In0KKy19CistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PSR7MSUlPSp9CistICBmdW5jX29wdF9zcGxpdF9hcmc9JHsxIyo9fQorLX0KKy0KKy0jIGZ1bmNfbG8ybyBvYmplY3QKKy1mdW5jX2xvMm8gKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKy0gICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7CistICBlc2FjCistfQorLQorLSMgZnVuY194Zm9ybSBsaWJvYmotb3Itc291cmNlCistZnVuY194Zm9ybSAoKQorLXsKKy0gIGZ1bmNfeGZvcm1fcmVzdWx0PSR7MSUuKn0ubG8KKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSkKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgKikgIyBCb3VybmUgY29tcGF0aWJsZSBmdW5jdGlvbnMuCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2Rpcm5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBDb21wdXRlIHRoZSBkaXJuYW1lIG9mIEZJTEUuICBJZiBub25lbXB0eSwgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LAorLSMgb3RoZXJ3aXNlIHNldCByZXN1bHQgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLWZ1bmNfZGlybmFtZSAoKQorLXsKKy0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCistICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkZGlybmFtZSJgCistICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorLSAgZWxzZQorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCistICBmaQorLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKy19CistCistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLSMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKKy1mdW5jX3N0cmlwbmFtZSAoKQorLXsKKy0gIGNhc2UgJHsyfSBpbgorLSAgICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworLSAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CistICBlc2FjCistfQorLQorLSMgc2VkIHNjcmlwdHM6CistbXlfc2VkX2xvbmdfb3B0PScxcy9eXCgtW149XSpcKT0uKi9cMS87cScKKy1teV9zZWRfbG9uZ19hcmc9JzFzL14tW149XSo9Ly8nCistCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGZ1bmNfbG8yb19yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRsbzJvImAKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgJ3MvXC5bXi5dKiQvLmxvLydgCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9YGV4cHIgIiRAImAKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9YGV4cHIgIiQxIiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCistfQorLQorLV9MVF9FT0YKKy1lc2FjCistCistY2FzZSAkbHRfc2hlbGxfYXBwZW5kIGluCistICB5ZXMpCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxKz1cJDIiCistfQorLV9MVF9FT0YKKy0gICAgOzsKKy0gICopCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiQxPVwkJDFcJDIiCistfQorLQorLV9MVF9FT0YKKy0gICAgOzsKKy0gIGVzYWMKKy0KKy0KKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKysgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKysgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisrCisrICBpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19kaXJuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lIC9jXAorK2Z1bmNfZGlybmFtZSAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLyopIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7MSUvKn0kezJ9IiA7O1wKKytcICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Jhc2VuYW1lIC9jXAorK2Z1bmNfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpJC8sL159ICMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAvY1wKKytmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKytcICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3N0cmlwbmFtZSAoKSQvLC9efSAjIGZ1bmNfc3RyaXBuYW1lIC9jXAorK2Z1bmNfc3RyaXBuYW1lICgpXAorK3tcCisrXCAgICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlXAorK1wgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LlwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0kezN9XAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In1cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19zdHJpcG5hbWUgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X2xvbmdfb3B0ICgpJC8sL159ICMgZnVuY19zcGxpdF9sb25nX29wdCAvY1wKKytmdW5jX3NwbGl0X2xvbmdfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9JHsxJSU9Kn1cCisrXCAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X2FyZz0kezEjKj19XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X2xvbmdfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19zcGxpdF9zaG9ydF9vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X3Nob3J0X29wdCAvY1wKKytmdW5jX3NwbGl0X3Nob3J0X29wdCAoKVwKKyt7XAorK1wgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPSR7MSM/P31cCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3NwbGl0X3Nob3J0X29wdCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfbG8ybyAoKSQvLC9efSAjIGZ1bmNfbG8ybyAvY1wKKytmdW5jX2xvMm8gKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOztcCisrXCAgICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7O1wKKytcICAgIGVzYWNcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbG8ybyBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfeGZvcm0gKCkkLywvXn0gIyBmdW5jX3hmb3JtIC9jXAorK2Z1bmNfeGZvcm0gKClcCisre1wKKysgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY194Zm9ybSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXJpdGggKCkkLywvXn0gIyBmdW5jX2FyaXRoIC9jXAorK2Z1bmNfYXJpdGggKClcCisre1wKKysgICAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICQqICkpXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FyaXRoIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sZW4gKCkkLywvXn0gIyBmdW5jX2xlbiAvY1wKKytmdW5jX2xlbiAoKVwKKyt7XAorKyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfbGVuIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrZmkKKysKKytpZiB0ZXN0IHgiJGx0X3NoZWxsX2FwcGVuZCIgPSB4eWVzOyB0aGVuCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmQgKCkkLywvXn0gIyBmdW5jX2FwcGVuZCAvY1wKKytmdW5jX2FwcGVuZCAoKVwKKyt7XAorKyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX2FwcGVuZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfYXBwZW5kX3F1b3RlZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kX3F1b3RlZCAvY1wKKytmdW5jX2FwcGVuZF9xdW90ZWQgKClcCisre1wKKytcICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiR7Mn0iXAorK1wgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kX3F1b3RlZCBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIHdoZXJlIHBvc3NpYmxlIGJ5IGRpcmVjdCB1c2Ugb2YgJys9JworKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW2EtekEtWl9dXHsxLFx9XCkgIiVcMSs9IiVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2Vsc2UKKysgICMgU2F2ZSBhIGBmdW5jX2FwcGVuZCcgZnVuY3Rpb24gY2FsbCBldmVuIHdoZW4gJys9JyBpcyBub3QgYXZhaWxhYmxlCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytmaQorKworK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mNQorKyRhc19lY2hvICIkYXNfbWU6IFdBUk5JTkc6IFVuYWJsZSB0byBzdWJzdGl0dXRlIGV4dGVuZGVkIHNoZWxsIGZ1bmN0aW9ucyBpbiAkb2ZpbGUiID4mMjt9CisrZmkKKysKKysKKysgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCisgICBjaG1vZCAreCAiJG9maWxlIgorIAorZGlmZiAtLWdpdCBhL2xpYnRvb2wubTQgYi9saWJ0b29sLm00CitpbmRleCA0MzQ1MzAwNTlmYS4uZTQ1ZmRjNjk5OGMgMTAwNjQ0CistLS0gYS9saWJ0b29sLm00CisrKysgYi9saWJ0b29sLm00CitAQCAtMSw3ICsxLDggQEAKKyAjIGxpYnRvb2wubTQgLSBDb25maWd1cmUgbGlidG9vbCBmb3IgdGhlIGhvc3Qgc3lzdGVtLiAtKi1BdXRvY29uZi0qLQorICMKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24gZ2l2ZXMKK0BAIC0xMCw3ICsxMSw4IEBACisgCisgbTRfZGVmaW5lKFtfTFRfQ09QWUlOR10sIFtkbmwKKyAjICAgQ29weXJpZ2h0IChDKSAxOTk2LCAxOTk3LCAxOTk4LCAxOTk5LCAyMDAwLCAyMDAxLCAyMDAzLCAyMDA0LCAyMDA1LAorLSMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrIyAgICAgICAgICAgICAgICAgMjAwNiwgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sCisrIyAgICAgICAgICAgICAgICAgSW5jLgorICMgICBXcml0dGVuIGJ5IEdvcmRvbiBNYXR6aWdrZWl0LCAxOTk2CisgIworICMgICBUaGlzIGZpbGUgaXMgcGFydCBvZiBHTlUgTGlidG9vbC4KK0BAIC0zNyw3ICszOSw3IEBAIG00X2RlZmluZShbX0xUX0NPUFlJTkddLCBbZG5sCisgIyA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEsIFVTQS4KKyBdKQorIAorLSMgc2VyaWFsIDU2IExUX0lOSVQKKysjIHNlcmlhbCA1NyBMVF9JTklUCisgCisgCisgIyBMVF9QUkVSRVEoVkVSU0lPTikKK0BAIC05Miw3ICs5NCw4IEBAIF9MVF9TRVRfT1BUSU9OUyhbJDBdLCBbJDFdKQorIExJQlRPT0xfREVQUz0iJGx0bWFpbiIKKyAKKyAjIEFsd2F5cyB1c2Ugb3VyIG93biBsaWJ0b29sLgorLUxJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKS9saWJ0b29sJworK0xJQlRPT0w9JyQoU0hFTEwpICQodG9wX2J1aWxkZGlyKScKKytMSUJUT09MPSIkTElCVE9PTC8ke2hvc3RfYWxpYXN9LWxpYnRvb2wiCisgQUNfU1VCU1QoTElCVE9PTClkbmwKKyAKKyBfTFRfU0VUVVAKK0BAIC0xNjYsMTAgKzE2OSwxMyBAQCBfTFRfREVDTChbXSwgW2V4ZWV4dF0sIFswXSwgW0V4ZWN1dGFibGUgZmlsZSBzdWZmaXggKG5vcm1hbGx5ICIiKV0pZG5sCisgZG5sCisgbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCisgbTRfcmVxdWlyZShbX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTXSlkbmwKKyttNF9yZXF1aXJlKFtfTFRfUEFUSF9DT05WRVJTSU9OX0ZVTkNUSU9OU10pZG5sCisgbTRfcmVxdWlyZShbX0xUX0NNRF9SRUxPQURdKWRubAorIG00X3JlcXVpcmUoW19MVF9DSEVDS19NQUdJQ19NRVRIT0RdKWRubAorK200X3JlcXVpcmUoW19MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfQ01EX09MRF9BUkNISVZFXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfQ01EX0dMT0JBTF9TWU1CT0xTXSlkbmwKKyttNF9yZXF1aXJlKFtfTFRfV0lUSF9TWVNST09UXSlkbmwKKyAKKyBfTFRfQ09ORklHX0xJQlRPT0xfSU5JVChbCisgIyBTZWUgaWYgd2UgYXJlIHJ1bm5pbmcgb24genNoLCBhbmQgc2V0IHRoZSBvcHRpb25zIHdoaWNoIGFsbG93IG91cgorQEAgLTE5OSw3ICsyMDUsNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTYzMiw3ICs2MzgsNyBAQCBtNF9pZnNldChbQUNfUEFDS0FHRV9OQU1FXSwgW0FDX1BBQ0tBR0VfTkFNRSBdKWNvbmZpZy5sdFtdZG5sCisgbTRfaWZzZXQoW0FDX1BBQ0tBR0VfVkVSU0lPTl0sIFsgQUNfUEFDS0FHRV9WRVJTSU9OXSkKKyBjb25maWd1cmVkIGJ5ICRbMF0sIGdlbmVyYXRlZCBieSBtNF9QQUNLQUdFX1NUUklORy4KKyAKKy1Db3B5cmlnaHQgKEMpIDIwMDkgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBJbmMuCisrQ29weXJpZ2h0IChDKSAyMDEwIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIFRoaXMgY29uZmlnLmx0IHNjcmlwdCBpcyBmcmVlIHNvZnR3YXJlOyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uCisgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc2lvbiB0byBjb3B5LCBkaXN0cmlidXRlIGFuZCBtb2RpZnkgaXQuIgorIAorQEAgLTc0NiwxNSArNzUyLDEyIEBAIF9MVF9FT0YKKyAgICMgaWYgZmluZHMgbWl4ZWQgQ1IvTEYgYW5kIExGLW9ubHkgbGluZXMuICBTaW5jZSBzZWQgb3BlcmF0ZXMgaW4KKyAgICMgdGV4dCBtb2RlLCBpdCBwcm9wZXJseSBjb252ZXJ0cyBsaW5lcyB0byBDUi9MRi4gIFRoaXMgYmFzaCBwcm9ibGVtCisgICAjIGlzIHJlcG9ydGVkbHkgZml4ZWQsIGJ1dCB3aHkgbm90IHJ1biBvbiBvbGQgdmVyc2lvbnMgdG9vPworLSAgc2VkICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlL3EnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysgIHNlZCAnJHEnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKysgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCisgCistICBfTFRfUFJPR19YU0lfU0hFTExGTlMKKysgIF9MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlMKKyAKKy0gIHNlZCAtbiAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS8sJHAnICIkbHRtYWluIiA+PiAiJGNmZ2ZpbGUiIFwKKy0gICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKy0KKy0gIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKysgICBtdiAtZiAiJGNmZ2ZpbGUiICIkb2ZpbGUiIHx8CisgICAgIChybSAtZiAiJG9maWxlIiAmJiBjcCAiJGNmZ2ZpbGUiICIkb2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZSIpCisgICBjaG1vZCAreCAiJG9maWxlIgorIF0sCitAQCAtOTgwLDYgKzk4Myw4IEBAIF9MVF9FT0YKKyAgICAgICAkTFRDQyAkTFRDRkxBR1MgLWMgLW8gY29uZnRlc3QubyBjb25mdGVzdC5jIDI+JkFTX01FU1NBR0VfTE9HX0ZECisgICAgICAgZWNobyAiJEFSIGNydSBsaWJjb25mdGVzdC5hIGNvbmZ0ZXN0Lm8iID4mQVNfTUVTU0FHRV9MT0dfRkQKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiZBU19NRVNTQUdFX0xPR19GRAorKyAgICAgIGVjaG8gIiRSQU5MSUIgbGliY29uZnRlc3QuYSIgPiZBU19NRVNTQUdFX0xPR19GRAorKyAgICAgICRSQU5MSUIgbGliY29uZnRlc3QuYSAyPiZBU19NRVNTQUdFX0xPR19GRAorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTEwNjksMzAgKzEwNzQsNDEgQEAgbTRfZGVmdW4oW19MVF9EQVJXSU5fTElOS0VSX0ZFQVRVUkVTXSwKKyAgIGZpCisgXSkKKyAKKy0jIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCistIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyMgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoW1RBR05BTUVdKQorKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorICMgTGlua3MgYSBtaW5pbWFsIHByb2dyYW0gYW5kIGNoZWNrcyB0aGUgZXhlY3V0YWJsZQorICMgZm9yIHRoZSBzeXN0ZW0gZGVmYXVsdCBoYXJkY29kZWQgbGlicmFyeSBwYXRoLiBJbiBtb3N0IGNhc2VzLAorICMgdGhpcyBpcyAvdXNyL2xpYjovbGliLCBidXQgd2hlbiB0aGUgTVBJIGNvbXBpbGVycyBhcmUgdXNlZAorICMgdGhlIGxvY2F0aW9uIG9mIHRoZSBjb21tdW5pY2F0aW9uIGFuZCBNUEkgbGlicyBhcmUgaW5jbHVkZWQgdG9vLgorICMgSWYgd2UgZG9uJ3QgZmluZCBhbnl0aGluZywgdXNlIHRoZSBkZWZhdWx0IGxpYnJhcnkgcGF0aCBhY2NvcmRpbmcKKyAjIHRvIHRoZSBhaXggbGQgbWFudWFsLgorKyMgU3RvcmUgdGhlIHJlc3VsdHMgZnJvbSB0aGUgZGlmZmVyZW50IGNvbXBpbGVycyBmb3IgZWFjaCBUQUdOQU1FLgorKyMgQWxsb3cgdG8gb3ZlcnJpZGUgdGhlbSBmb3IgYWxsIHRhZ3MgdGhyb3VnaCBsdF9jdl9haXhfbGlicGF0aC4KKyBtNF9kZWZ1bihbX0xUX1NZU19NT0RVTEVfUEFUSF9BSVhdLAorIFttNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAorLUFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbQUNfTEFOR19QUk9HUkFNXSldLFsKKy1sdF9haXhfbGlicGF0aF9zZWQ9JworLSAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CistCS9eMC8geworLQkgICAgcy9eMCAgKlwoLipcKSQvXDEvCistCSAgICBwCistCX0KKy0gICAgfScKKy1haXhfbGlicGF0aD1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy0jIENoZWNrIGZvciBhIDY0LWJpdCBvYmplY3QgaWYgd2UgZGlkbid0IGZpbmQgYW55dGhpbmcuCistaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbgorLSAgYWl4X2xpYnBhdGg9YGR1bXAgLUhYNjQgY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistZmldLFtdKQorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorK2lmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIEFDX0NBQ0hFX1ZBTChbX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSldLAorKyAgW0FDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1BST0dSQU1dLFsKKysgIGx0X2FpeF9saWJwYXRoX3NlZD0nWworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9XScKKysgIF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJF9MVF9UQUdWQVIoW2x0X2N2X2FpeF9saWJwYXRoX10sIFskMV0pIjsgdGhlbgorKyAgICBfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKT1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpXSxbXSkKKysgIGlmIHRlc3QgLXogIiRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKSI7IHRoZW4KKysgICAgX0xUX1RBR1ZBUihbbHRfY3ZfYWl4X2xpYnBhdGhfXSwgWyQxXSk9Ii91c3IvbGliOi9saWIiCisrICBmaQorKyAgXSkKKysgIGFpeF9saWJwYXRoPSRfTFRfVEFHVkFSKFtsdF9jdl9haXhfbGlicGF0aF9dLCBbJDFdKQorK2ZpCisgXSkjIF9MVF9TWVNfTU9EVUxFX1BBVEhfQUlYCisgCisgCitAQCAtMTExNyw3ICsxMTMzLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyAKKyBBQ19NU0dfQ0hFQ0tJTkcoW2hvdyB0byBwcmludCBzdHJpbmdzXSkKKyAjIFRlc3QgcHJpbnQgZmlyc3QsIGJlY2F1c2UgaXQgd2lsbCBiZSBhIGJ1aWx0aW4gaWYgcHJlc2VudC4KKy1pZiB0ZXN0ICJYYHByaW50IC1yIC0tIC1uIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorK2lmIHRlc3QgIlhgKCBwcmludCAtciAtLSAtbiApIDI+L2Rldi9udWxsYCIgPSBYLW4gJiYgXAorICAgIHRlc3QgIlhgcHJpbnQgLXIgLS0gJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCisgICBFQ0hPPSdwcmludCAtciAtLScKKyBlbGlmIHRlc3QgIlhgcHJpbnRmICVzICRFQ0hPIDI+L2Rldi9udWxsYCIgPSAiWCRFQ0hPIjsgdGhlbgorQEAgLTExNjEsNiArMTE3NywzOSBAQCBfTFRfREVDTChbXSwgW0VDSE9dLCBbMV0sIFtBbiBlY2hvIHByb2dyYW0gdGhhdCBwcm90ZWN0cyBiYWNrc2xhc2hlc10pCisgXSkjIF9MVF9QUk9HX0VDSE9fQkFDS1NMQVNICisgCisgCisrIyBfTFRfV0lUSF9TWVNST09UCisrIyAtLS0tLS0tLS0tLS0tLS0tCisrQUNfREVGVU4oW19MVF9XSVRIX1NZU1JPT1RdLAorK1tBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBzeXNyb290XSkKKytBQ19BUkdfV0lUSChbbGlidG9vbC1zeXNyb290XSwKKytbICAtLXdpdGgtbGlidG9vbC1zeXNyb290Wz1ESVJdIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCisrICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuXSwKKytbXSwgW3dpdGhfbGlidG9vbF9zeXNyb290PW5vXSkKKysKKytkbmwgbHRfc3lzcm9vdCB3aWxsIGFsd2F5cyBiZSBwYXNzZWQgdW5xdW90ZWQuICBXZSBxdW90ZSBpdCBoZXJlCisrZG5sIGluIGNhc2UgdGhlIHVzZXIgcGFzc2VkIGEgZGlyZWN0b3J5IG5hbWUuCisrbHRfc3lzcm9vdD0KKytjYXNlICR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IGluICMoCisrIHllcykKKysgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorKyAgICAgbHRfc3lzcm9vdD1gJENDIC0tcHJpbnQtc3lzcm9vdCAyPi9kZXYvbnVsbGAKKysgICBmaQorKyAgIDs7ICMoCisrIC8qKQorKyAgIGx0X3N5c3Jvb3Q9YGVjaG8gIiR3aXRoX2xpYnRvb2xfc3lzcm9vdCIgfCBzZWQgLWUgIiRzZWRfcXVvdGVfc3Vic3QiYAorKyAgIDs7ICMoCisrIG5vfCcnKQorKyAgIDs7ICMoCisrICopCisrICAgQUNfTVNHX1JFU1VMVChbJHt3aXRoX2xpYnRvb2xfc3lzcm9vdH1dKQorKyAgIEFDX01TR19FUlJPUihbVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLl0pCisrICAgOzsKKytlc2FjCisrCisrIEFDX01TR19SRVNVTFQoWyR7bHRfc3lzcm9vdDotbm99XSkKKytfTFRfREVDTChbXSwgW2x0X3N5c3Jvb3RdLCBbMF0sIFtUaGUgcm9vdCB3aGVyZSB0byBzZWFyY2ggZm9yIF1kbmwKKytbZGVwZW5kZW50IGxpYnJhcmllcywgYW5kIGluIHdoaWNoIG91ciBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZC5dKV0pCisrCisgIyBfTFRfRU5BQkxFX0xPQ0sKKyAjIC0tLS0tLS0tLS0tLS0tLQorIG00X2RlZnVuKFtfTFRfRU5BQkxFX0xPQ0tdLAorQEAgLTEzMjAsMTQgKzEzNjksNDcgQEAgbmVlZF9sb2Nrcz0iJGVuYWJsZV9saWJ0b29sX2xvY2siCisgXSkjIF9MVF9FTkFCTEVfTE9DSworIAorIAorKyMgX0xUX1BST0dfQVIKKysjIC0tLS0tLS0tLS0tCisrbTRfZGVmdW4oW19MVF9QUk9HX0FSXSwKKytbQUNfQ0hFQ0tfVE9PTFMoQVIsIFthcl0sIGZhbHNlKQorKzogJHtBUj1hcn0KKys6ICR7QVJfRkxBR1M9Y3J1fQorK19MVF9ERUNMKFtdLCBbQVJdLCBbMV0sIFtUaGUgYXJjaGl2ZXJdKQorK19MVF9ERUNMKFtdLCBbQVJfRkxBR1NdLCBbMV0sIFtGbGFncyB0byBjcmVhdGUgYW4gYXJjaGl2ZV0pCisrCisrQUNfQ0FDSEVfQ0hFQ0soW2ZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0XSwgW2x0X2N2X2FyX2F0X2ZpbGVdLAorKyAgW2x0X2N2X2FyX2F0X2ZpbGU9bm8KKysgICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19QUk9HUkFNXSwKKysgICAgIFtlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKysgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mQVNfTUVTU0FHRV9MT0dfRkQnCisrICAgICAgQUNfVFJZX0VWQUwoW2x0X2FyX3RyeV0pCisrICAgICAgaWYgdGVzdCAiJGFjX3N0YXR1cyIgLWVxIDA7IHRoZW4KKysJIyBFbnN1cmUgdGhlIGFyY2hpdmVyIGZhaWxzIHVwb24gYm9ndXMgZmlsZSBuYW1lcy4KKysJcm0gLWYgY29uZnRlc3QuJGFjX29iamV4dCBsaWJjb25mdGVzdC5hCisrCUFDX1RSWV9FVkFMKFtsdF9hcl90cnldKQorKwlpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtbmUgMDsgdGhlbgorKyAgICAgICAgICBsdF9jdl9hcl9hdF9maWxlPUAKKysgICAgICAgIGZpCisrICAgICAgZmkKKysgICAgICBybSAtZiBjb25mdGVzdC4qIGxpYmNvbmZ0ZXN0LmEKKysgICAgIF0pCisrICBdKQorKworK2lmIHRlc3QgIngkbHRfY3ZfYXJfYXRfZmlsZSIgPSB4bm87IHRoZW4KKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0KKytlbHNlCisrICBhcmNoaXZlcl9saXN0X3NwZWM9JGx0X2N2X2FyX2F0X2ZpbGUKKytmaQorK19MVF9ERUNMKFtdLCBbYXJjaGl2ZXJfbGlzdF9zcGVjXSwgWzFdLAorKyAgW0hvdyB0byBmZWVkIGEgZmlsZSBsaXN0aW5nIHRvIHRoZSBhcmNoaXZlcl0pCisrXSkjIF9MVF9QUk9HX0FSCisrCisrCisgIyBfTFRfQ01EX09MRF9BUkNISVZFCisgIyAtLS0tLS0tLS0tLS0tLS0tLS0tCisgbTRfZGVmdW4oW19MVF9DTURfT0xEX0FSQ0hJVkVdLAorLVtBQ19DSEVDS19UT09MKEFSLCBhciwgZmFsc2UpCistdGVzdCAteiAiJEFSIiAmJiBBUj1hcgorLXRlc3QgLXogIiRBUl9GTEFHUyIgJiYgQVJfRkxBR1M9Y3J1CistX0xUX0RFQ0woW10sIFtBUl0sIFsxXSwgW1RoZSBhcmNoaXZlcl0pCistX0xUX0RFQ0woW10sIFtBUl9GTEFHU10sIFsxXSkKKytbX0xUX1BST0dfQVIKKyAKKyBBQ19DSEVDS19UT09MKFNUUklQLCBzdHJpcCwgOikKKyB0ZXN0IC16ICIkU1RSSVAiICYmIFNUUklQPToKK0BAIC0xNjIzLDcgKzE3MDUsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy1bI2xpbmUgX19vbGluZV9fICJjb25maWd1cmUiCisrWyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTY2NywxMCArMTc0OSwxMCBAQCBlbHNlCisgLyogV2hlbiAtZnZpc2JpbGl0eT1oaWRkZW4gaXMgdXNlZCwgYXNzdW1lIHRoZSBjb2RlIGhhcyBiZWVuIGFubm90YXRlZAorICAgIGNvcnJlc3BvbmRpbmdseSBmb3IgdGhlIHN5bWJvbHMgbmVlZGVkLiAgKi8KKyAjaWYgZGVmaW5lZChfX0dOVUNfXykgJiYgKCgoX19HTlVDX18gPT0gMykgJiYgKF9fR05VQ19NSU5PUl9fID49IDMpKSB8fCAoX19HTlVDX18gPiAzKSkKKy12b2lkIGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworK2ludCBmbm9yZCAoKSBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5KCJkZWZhdWx0IikpKTsKKyAjZW5kaWYKKyAKKy12b2lkIGZub3JkICgpIHsgaW50IGk9NDI7IH0KKytpbnQgZm5vcmQgKCkgeyByZXR1cm4gNDI7IH0KKyBpbnQgbWFpbiAoKQorIHsKKyAgIHZvaWQgKnNlbGYgPSBkbG9wZW4gKDAsIExUX0RMR0xPQkFMfExUX0RMTEFaWV9PUl9OT1cpOworQEAgLTIyMTAsOCArMjI5Miw5IEBAIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKyAgIG5lZWRfdmVyc2lvbj1ubworICAgbmVlZF9saWJfcHJlZml4PW5vCisgCistICBjYXNlICRHQ0MsJGhvc3Rfb3MgaW4KKy0gIHllcyxjeWd3aW4qIHwgeWVzLG1pbmd3KiB8IHllcyxwdzMyKiB8IHllcyxjZWdjYyopCisrICBjYXNlICRHQ0MsJGNjX2Jhc2VuYW1lIGluCisrICB5ZXMsKikKKysgICAgIyBnY2MKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPSckbGlibmFtZS5kbGwuYScKKyAgICAgIyBETEwgaXMgaW5zdGFsbGVkIHRvICQobGliZGlyKS8uLi9iaW4gYnkgcG9zdGluc3RhbGxfY21kcworICAgICBwb3N0aW5zdGFsbF9jbWRzPSdiYXNlX2ZpbGU9YGJhc2VuYW1lIFwke2ZpbGV9YH4KK0BAIC0yMjQ0LDEzICsyMzI3LDcxIEBAIG00X2lmKFskMV0sIFtdLFsKKyAgICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9J2BlY2hvICR7bGlibmFtZX0gfCBzZWQgLWUgJ3MvXmxpYi9wdy8nYGBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKyAgICAgICA7OworICAgICBlc2FjCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisrICAgIDs7CisrCisrICAqLGNsKikKKysgICAgIyBOYXRpdmUgTVNWQworKyAgICBsaWJuYW1lX3NwZWM9JyRuYW1lJworKyAgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW1thLXpBLVpdXVxcKTp8IC9cXDF8ZycgLWUgJ3N8XiB8fCdgCisrICAgICAgOzsKKysgICAgY3lnd2luKikKKysgICAgICAjIENvbnZlcnQgdG8gdW5peCBmb3JtLCB0aGVuIHRvIGRvcyBmb3JtLCB0aGVuIGJhY2sgdG8gdW5peCBmb3JtCisrICAgICAgIyBidXQgdGhpcyB0aW1lIGRvcyBzdHlsZSAobm8gc3BhY2VzISkgc28gdGhhdCB0aGUgdW5peCBmb3JtIGxvb2tzCisrICAgICAgIyBsaWtlIC9jeWdkcml2ZS9jL1BST0dSQX4xOi9jeWdkci4uLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gY3lncGF0aCAtLXBhdGggLS11bml4ICIkTElCImAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tZG9zICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiAyPi9kZXYvbnVsbGAKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICJzLyRQQVRIX1NFUEFSQVRPUi8gL2ciYAorKyAgICAgIDs7CisrICAgICopCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPSIkTElCIgorKyAgICAgIGlmICRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8IFskR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGxdOyB0aGVuCisrICAgICAgICAjIEl0IGlzIG1vc3QgcHJvYmFibHkgYSBXaW5kb3dzIGZvcm1hdCBQQVRILgorKyAgICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkU0VEIC1lICdzLzsvIC9nJ2AKKysgICAgICBlbHNlCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgInMvJFBBVEhfU0VQQVJBVE9SLyAvZyJgCisrICAgICAgZmkKKysgICAgICAjIEZJWE1FOiBmaW5kIHRoZSBzaG9ydCBuYW1lIG9yIHRoZSBwYXRoIGNvbXBvbmVudHMsIGFzIHNwYWNlcyBhcmUKKysgICAgICAjIGNvbW1vbi4gKGUuZy4gIlByb2dyYW0gRmlsZXMiIC0+ICJQUk9HUkF+MSIpCisrICAgICAgOzsKKysgICAgZXNhYworKworKyAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisrICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorKyAgICAgIGRscGF0aD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGRpci8nXCcnXCR7YmFzZV9maWxlfSdcJydpOyBlY2hvIFwkZGxuYW1lJ1wnJ2B+CisrICAgICAgZGxkaXI9JGRlc3RkaXIvYGRpcm5hbWUgXCRkbHBhdGhgfgorKyAgICAgIHRlc3QgLWQgXCRkbGRpciB8fCBta2RpciAtcCBcJGRsZGlyfgorKyAgICAgICRpbnN0YWxsX3Byb2cgJGRpci8kZGxuYW1lIFwkZGxkaXIvJGRsbmFtZScKKysgICAgcG9zdHVuaW5zdGFsbF9jbWRzPSdkbGRsbD1gJFNIRUxMIDI+JjEgLWMgJ1wnJy4gJGZpbGU7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbHBhdGg9JGRpci9cJGRsZGxsfgorKyAgICAgICAkUk0gXCRkbHBhdGgnCisrICAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxpbmsuZXhlJworICAgICA7OworIAorICAgKikKKysgICAgIyBBc3N1bWUgTVNWQyB3cmFwcGVyCisgICAgIGxpYnJhcnlfbmFtZXNfc3BlYz0nJHtsaWJuYW1lfWBlY2hvICR7cmVsZWFzZX0gfCAkU0VEIC1lICdzL1tbLl1dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMjM0Miw3ICsyNDgzLDcgQEAgaGFpa3UqKQorICAgc29uYW1lX3NwZWM9JyR7bGlibmFtZX0ke3JlbGVhc2V9JHtzaGFyZWRfZXh0fSRtYWpvcicKKyAgIHNobGlicGF0aF92YXI9TElCUkFSWV9QQVRICisgICBzaGxpYnBhdGhfb3ZlcnJpZGVzX3J1bnBhdGg9eWVzCistICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3QvYmVvcy9zeXN0ZW0vbGliJworKyAgc3lzX2xpYl9kbHNlYXJjaF9wYXRoX3NwZWM9Jy9ib290L2hvbWUvY29uZmlnL2xpYiAvYm9vdC9jb21tb24vbGliIC9ib290L3N5c3RlbS9saWInCisgICBoYXJkY29kZV9pbnRvX2xpYnM9eWVzCisgICA7OworIAorQEAgLTI5NTAsNiArMzA5MSwxMSBAQCBjYXNlICRyZWxvYWRfZmxhZyBpbgorIGVzYWMKKyByZWxvYWRfY21kcz0nJExEJHJlbG9hZF9mbGFnIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCisgY2FzZSAkaG9zdF9vcyBpbgorKyAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgICBpZiB0ZXN0ICIkR0NDIiAhPSB5ZXM7IHRoZW4KKysgICAgICByZWxvYWRfY21kcz1mYWxzZQorKyAgICBmaQorKyAgICA7OworICAgZGFyd2luKikKKyAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAgICAgICByZWxvYWRfY21kcz0nJExUQ0MgJExUQ0ZMQUdTIC1ub3N0ZGxpYiAke3dsfS1yIC1vICRvdXRwdXQkcmVsb2FkX29ianMnCitAQCAtMzAxNiw3ICszMTYyLDggQEAgbWluZ3cqIHwgcHczMiopCisgICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIF54ODYgYXJjaGl2ZSBpbXBvcnR8Xng4NiBETEwnCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSdmdW5jX3dpbjMyX2xpYmlkJworICAgZWxzZQorLSAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCBwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpPycKKysgICAgIyBLZWVwIHRoaXMgcGF0dGVybiBpbiBzeW5jIHdpdGggdGhlIG9uZSBpbiBmdW5jX3dpbjMyX2xpYmlkLgorKyAgICBsdF9jdl9kZXBsaWJzX2NoZWNrX21ldGhvZD0nZmlsZV9tYWdpYyBmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknCisgICAgIGx0X2N2X2ZpbGVfbWFnaWNfY21kPSckT0JKRFVNUCAtZicKKyAgIGZpCisgICA7OworQEAgLTMxNjcsNiArMzMxNCwyMSBAQCB0cGYqKQorICAgOzsKKyBlc2FjCisgXSkKKysKKytmaWxlX21hZ2ljX2dsb2I9Cisrd2FudF9ub2Nhc2VnbG9iPW5vCisraWYgdGVzdCAiJGJ1aWxkIiA9ICIkaG9zdCI7IHRoZW4KKysgIGNhc2UgJGhvc3Rfb3MgaW4KKysgIG1pbmd3KiB8IHB3MzIqKQorKyAgICBpZiAoIHNob3B0IHwgZ3JlcCBub2Nhc2VnbG9iICkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCisrICAgICAgd2FudF9ub2Nhc2VnbG9iPXllcworKyAgICBlbHNlCisrICAgICAgZmlsZV9tYWdpY19nbG9iPWBlY2hvIGFBYkJjQ2REZUVmRmdHaEhpSWpKa0tsTG1Nbk5vT3BQcVFyUnNTdFR1VXZWd1d4WHlZelogfCAkU0VEIC1lICJzL1woLi5cKS9zXC9bW1wxXV1cL1tbXDFdXVwvZzsvZyJgCisrICAgIGZpCisrICAgIDs7CisrICBlc2FjCisrZmkKKysKKyBmaWxlX21hZ2ljX2NtZD0kbHRfY3ZfZmlsZV9tYWdpY19jbWQKKyBkZXBsaWJzX2NoZWNrX21ldGhvZD0kbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QKKyB0ZXN0IC16ICIkZGVwbGlic19jaGVja19tZXRob2QiICYmIGRlcGxpYnNfY2hlY2tfbWV0aG9kPXVua25vd24KK0BAIC0zMTc0LDcgKzMzMzYsMTEgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisgX0xUX0RFQ0woW10sIFtkZXBsaWJzX2NoZWNrX21ldGhvZF0sIFsxXSwKKyAgICAgW01ldGhvZCB0byBjaGVjayB3aGV0aGVyIGRlcGVuZGVudCBsaWJyYXJpZXMgYXJlIHNoYXJlZCBvYmplY3RzXSkKKyBfTFRfREVDTChbXSwgW2ZpbGVfbWFnaWNfY21kXSwgWzFdLAorLSAgICBbQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9PSAiZmlsZV9tYWdpYyJdKQorKyAgICBbQ29tbWFuZCB0byB1c2Ugd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIl0pCisrX0xUX0RFQ0woW10sIFtmaWxlX21hZ2ljX2dsb2JdLCBbMV0sCisrICAgIFtIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIl0pCisrX0xUX0RFQ0woW10sIFt3YW50X25vY2FzZWdsb2JdLCBbMV0sCisrICAgIFtGaW5kIHBvdGVudGlhbCBmaWxlcyB1c2luZyBub2Nhc2VnbG9iIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyJdKQorIF0pIyBfTFRfQ0hFQ0tfTUFHSUNfTUVUSE9ECisgCisgCitAQCAtMzI3Nyw2ICszNDQzLDY3IEBAIGRubCBhY2xvY2FsLTEuNCBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eToKKyBkbmwgQUNfREVGVU4oW0FNX1BST0dfTk1dLCBbXSkKKyBkbmwgQUNfREVGVU4oW0FDX1BST0dfTk1dLCBbXSkKKyAKKysjIF9MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCCisrIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyMgaG93IHRvIGRldGVybWluZSB0aGUgbmFtZSBvZiB0aGUgc2hhcmVkIGxpYnJhcnkKKysjIGFzc29jaWF0ZWQgd2l0aCBhIHNwZWNpZmljIGxpbmsgbGlicmFyeS4KKysjICAtLSBQT1JUTUUgZmlsbCBpbiB3aXRoIHRoZSBkeW5hbWljIGxpYnJhcnkgY2hhcmFjdGVyaXN0aWNzCisrbTRfZGVmdW4oW19MVF9DSEVDS19TSEFSRURMSUJfRlJPTV9MSU5LTElCXSwKKytbbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKQorK200X3JlcXVpcmUoW19MVF9ERUNMX09CSkRVTVBdKQorK200X3JlcXVpcmUoW19MVF9ERUNMX0RMTFRPT0xdKQorK0FDX0NBQ0hFX0NIRUNLKFtob3cgdG8gYXNzb2NpYXRlIHJ1bnRpbWUgYW5kIGxpbmsgbGlicmFyaWVzXSwKKytsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCwKKytbbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J3Vua25vd24nCisrCisrY2FzZSAkaG9zdF9vcyBpbgorK2N5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKysgICMgdHdvIGRpZmZlcmVudCBzaGVsbCBmdW5jdGlvbnMgZGVmaW5lZCBpbiBsdG1haW4uc2gKKysgICMgZGVjaWRlIHdoaWNoIHRvIHVzZSBiYXNlZCBvbiBjYXBhYmlsaXRpZXMgb2YgJERMTFRPT0wKKysgIGNhc2UgYCRETExUT09MIC0taGVscCAyPiYxYCBpbgorKyAgKi0taWRlbnRpZnktc3RyaWN0KikKKysgICAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9ZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliCisrICAgIDs7CisrICAqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sKKysgICAgOzsKKysgIGVzYWMKKysgIDs7CisrKikKKysgICMgZmFsbGJhY2s6IGFzc3VtZSBsaW5rbGliIElTIHNoYXJlZGxpYgorKyAgbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9IiRFQ0hPIgorKyAgOzsKKytlc2FjCisrXSkKKytzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0kbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKyt0ZXN0IC16ICIkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiICYmIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRFQ0hPCisrCisrX0xUX0RFQ0woW10sIFtzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZF0sIFsxXSwKKysgICAgW0NvbW1hbmQgdG8gYXNzb2NpYXRlIHNoYXJlZCBhbmQgbGluayBsaWJyYXJpZXNdKQorK10pIyBfTFRfQ0hFQ0tfU0hBUkVETElCX0ZST01fTElOS0xJQgorKworKworKyMgX0xUX1BBVEhfTUFOSUZFU1RfVE9PTAorKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyMgbG9jYXRlIHRoZSBtYW5pZmVzdCB0b29sCisrbTRfZGVmdW4oW19MVF9QQVRIX01BTklGRVNUX1RPT0xdLAorK1tBQ19DSEVDS19UT09MKE1BTklGRVNUX1RPT0wsIG10LCA6KQorK3Rlc3QgLXogIiRNQU5JRkVTVF9UT09MIiAmJiBNQU5JRkVTVF9UT09MPW10CisrQUNfQ0FDSEVfQ0hFQ0soW2lmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbF0sIFtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2xdLAorKyAgW2x0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD1ubworKyAgZWNobyAiJGFzX21lOiRMSU5FTk86ICRNQU5JRkVTVF9UT09MICctPyciID4mQVNfTUVTU0FHRV9MT0dfRkQKKysgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKysgIGNhdCBjb25mdGVzdC5lcnIgPiZBU19NRVNTQUdFX0xPR19GRAorKyAgaWYgJEdSRVAgJ01hbmlmZXN0IFRvb2wnIGNvbmZ0ZXN0Lm91dCA+IC9kZXYvbnVsbDsgdGhlbgorKyAgICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9eWVzCisrICBmaQorKyAgcm0gLWYgY29uZnRlc3QqXSkKKytpZiB0ZXN0ICJ4JGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgIT0geHllczsgdGhlbgorKyAgTUFOSUZFU1RfVE9PTD06CisrZmkKKytfTFRfREVDTChbXSwgW01BTklGRVNUX1RPT0xdLCBbMV0sIFtNYW5pZmVzdCB0b29sXSlkbmwKKytdKSMgX0xUX1BBVEhfTUFOSUZFU1RfVE9PTAorKworIAorICMgTFRfTElCX00KKyAjIC0tLS0tLS0tCitAQCAtMzQwMyw4ICszNjMwLDggQEAgZXNhYworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCisgCisgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKSAkLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW1teIF1dKlwpIFwoW1teIF1dKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbW14gXV0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKGxpYltbXiBdXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFtbXiBdXSpcKSBcKFtbXiBdXSpcKSQvICB7XCJsaWJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCciCisrbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKVtbIF1dKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFtbXiBdXSpcKVtbIF1dKiQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChsaWJbW14gXV0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIC1lICdzL14kc3ltY29kZSogXChbW14gXV0qXCkgXChbW14gXV0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorIAorICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorIG9wdF9jcj0KK0BAIC0zNDQwLDYgKzM2NjcsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCisgICBlbHNlCisgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbWwkgXV1cKCRzeW1jb2RlJHN5bWNvZGUqXClbWwkgXV1bWwkgXV0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCisgICBmaQorKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgorIAorICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCisgICBwaXBlX3dvcmtzPW5vCitAQCAtMzQ3Myw2ICszNzAxLDE4IEBAIF9MVF9FT0YKKyAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisrLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisrICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworKyMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVEAmdEBfRExTWU1fQ09OU1QKKysjZWxzZQorKyMgZGVmaW5lIExUQCZ0QF9ETFNZTV9DT05TVCBjb25zdAorKyNlbmRpZgorKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorQEAgLTM0ODQsNyArMzcyNCw3IEBAIF9MVF9FT0YKKyAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAKKyAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCistY29uc3Qgc3RydWN0IHsKKytMVEAmdEBfRExTWU1fQ09OU1Qgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICAgICAgICphZGRyZXNzOworIH0KK0BAIC0zNTEwLDE1ICszNzUwLDE1IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgX0xUX0VPRgorIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCisgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CistCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKy0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKysJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUworIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCisgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWcsICQxKSIKKyAJICBpZiBBQ19UUllfRVZBTChhY19saW5rKSAmJiB0ZXN0IC1zIGNvbmZ0ZXN0JHthY19leGVleHR9OyB0aGVuCisgCSAgICBwaXBlX3dvcmtzPXllcworIAkgIGZpCistCSAgTElCUz0iJGx0X3NhdmVfTElCUyIKKy0JICBDRkxBR1M9IiRsdF9zYXZlX0NGTEFHUyIKKysJICBMSUJTPSRsdF9nbG9ic3ltX3NhdmVfTElCUworKwkgIENGTEFHUz0kbHRfZ2xvYnN5bV9zYXZlX0NGTEFHUworIAllbHNlCisgCSAgZWNobyAiY2Fubm90IGZpbmQgbm1fdGVzdF9mdW5jIGluICRubGlzdCIgPiZBU19NRVNTQUdFX0xPR19GRAorIAlmaQorQEAgLTM1NTEsNiArMzc5MSwxMyBAQCBlbHNlCisgICBBQ19NU0dfUkVTVUxUKG9rKQorIGZpCisgCisrIyBSZXNwb25zZSBmaWxlIHN1cHBvcnQuCisraWYgdGVzdCAiJGx0X2N2X25tX2ludGVyZmFjZSIgPSAiTVMgZHVtcGJpbiI7IHRoZW4KKysgIG5tX2ZpbGVfbGlzdF9zcGVjPSdAJworK2VsaWYgJE5NIC0taGVscCAyPi9kZXYvbnVsbCB8IGdyZXAgJ1tbQF1dRklMRScgPi9kZXYvbnVsbDsgdGhlbgorKyAgbm1fZmlsZV9saXN0X3NwZWM9J0AnCisrZmkKKysKKyBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF9waXBlXSwgW2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGVdLCBbMV0sCisgICAgIFtUYWtlIHRoZSBvdXRwdXQgb2Ygbm0gYW5kIHByb2R1Y2UgYSBsaXN0aW5nIG9mIHJhdyBzeW1ib2xzIGFuZCBDIG5hbWVzXSkKKyBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF90b19jZGVjbF0sIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jZGVjbF0sIFsxXSwKK0BAIC0zNTYxLDYgKzM4MDgsOCBAQCBfTFRfREVDTChbZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc10sCisgX0xUX0RFQ0woW2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeF0sCisgICAgIFtsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4XSwgWzFdLAorICAgICBbVHJhbnNmb3JtIHRoZSBvdXRwdXQgb2Ygbm0gaW4gYSBDIG5hbWUgYWRkcmVzcyBwYWlyIHdoZW4gbGliIHByZWZpeCBpcyBuZWVkZWRdKQorK19MVF9ERUNMKFtdLCBbbm1fZmlsZV9saXN0X3NwZWNdLCBbMV0sCisrICAgIFtTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMgZm9yICROTV0pCisgXSkgIyBfTFRfQ01EX0dMT0JBTF9TWU1CT0xTCisgCisgCitAQCAtMzU3Miw3ICszODIxLDYgQEAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3dsLCAkMSk9CisgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPQorIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0KKyAKKy1BQ19NU0dfQ0hFQ0tJTkcoW2ZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDXSkKKyBtNF9pZihbJDFdLCBbQ1hYXSwgWworICAgIyBDKysgc3BlY2lmaWMgY2FzZXMgZm9yIHBpYywgc3RhdGljLCB3bCwgZXRjLgorICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KK0BAIC0zNjc4LDYgKzM5MjYsMTIgQEAgbTRfaWYoWyQxXSwgW0NYWF0sIFsKKyAJICA7OworIAllc2FjCisgCTs7CisrICAgICAgbWluZ3cqIHwgY3lnd2luKiB8IG9zMiogfCBwdzMyKiB8IGNlZ2NjKikKKysJIyBUaGlzIGhhY2sgaXMgc28gdGhhdCB0aGUgc291cmNlIGZpbGUgY2FuIHRlbGwgd2hldGhlciBpdCBpcyBiZWluZworKwkjIGJ1aWx0IGZvciBpbmNsdXNpb24gaW4gYSBkbGwgKGFuZCBzaG91bGQgZXhwb3J0IHN5bWJvbHMgZm9yIGV4YW1wbGUpLgorKwltNF9pZihbJDFdLCBbR0NKXSwgW10sCisrCSAgW19MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLURETExfRVhQT1JUJ10pCisrCTs7CisgICAgICAgZGd1eCopCisgCWNhc2UgJGNjX2Jhc2VuYW1lIGluCisgCSAgZWMrKyopCitAQCAtMzgzMCw3ICs0MDg0LDcgQEAgbTRfaWYoWyQxXSwgW0NYWF0sIFsKKyAJOzsKKyAgICAgICBzb2xhcmlzKikKKyAJY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0JICBDQyopCisrCSAgQ0MqIHwgc3VuQ0MqKQorIAkgICAgIyBTdW4gQysrIDQuMiwgNS54IGFuZCBDZW50ZXJsaW5lIEMrKworIAkgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSctS1BJQycKKyAJICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCitAQCAtNDA1Myw2ICs0MzA3LDEyIEBAIG00X2lmKFskMV0sIFtDWFhdLCBbCisgCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLS1zaGFyZWQnCisgCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLS1zdGF0aWMnCisgCTs7CisrICAgICAgbmFnZm9yKikKKysJIyBOQUcgRm9ydHJhbiBjb21waWxlcgorKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLC1XbCwsJworKwlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9Jy1QSUMnCisrCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9zdGF0aWMsICQxKT0nLUJzdGF0aWMnCisrCTs7CisgICAgICAgcGdjYyogfCBwZ2Y3NyogfCBwZ2Y5MCogfCBwZ2Y5NSogfCBwZ2ZvcnRyYW4qKQorICAgICAgICAgIyBQb3J0bGFuZCBHcm91cCBjb21waWxlcnMgKCpub3QqIHRoZSBQZW50aXVtIGdjYyBjb21waWxlciwKKyAJIyB3aGljaCBsb29rcyB0byBiZSBhIGRlYWQgcHJvamVjdCkKK0BAIC00MTE1LDcgKzQzNzUsNyBAQCBtNF9pZihbJDFdLCBbQ1hYXSwgWworICAgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0nLUtQSUMnCisgICAgICAgX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3N0YXRpYywgJDEpPSctQnN0YXRpYycKKyAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorLSAgICAgIGY3NyogfCBmOTAqIHwgZjk1KikKKysgICAgICBmNzcqIHwgZjkwKiB8IGY5NSogfCBzdW5mNzcqIHwgc3VuZjkwKiB8IHN1bmY5NSopCisgCV9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl93bCwgJDEpPSctUW9wdGlvbiBsZCAnOzsKKyAgICAgICAqKQorIAlfTFRfVEFHVkFSKGx0X3Byb2dfY29tcGlsZXJfd2wsICQxKT0nLVdsLCc7OworQEAgLTQxNzIsOSArNDQzMiwxMSBAQCBjYXNlICRob3N0X29zIGluCisgICAgIF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKT0iJF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKUAmdEBtNF9pZihbJDFdLFtdLFsgLURQSUNdLFttNF9pZihbJDFdLFtDWFhdLFsgLURQSUNdLFtdKV0pIgorICAgICA7OworIGVzYWMKKy1BQ19NU0dfUkVTVUxUKFskX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpXSkKKy1fTFRfVEFHREVDTChbd2xdLCBbbHRfcHJvZ19jb21waWxlcl93bF0sIFsxXSwKKy0JW0hvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXJdKQorKworK0FDX0NBQ0hFX0NIRUNLKFtmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQ10sCisrICBbX0xUX1RBR1ZBUihsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYywgJDEpXSwKKysgIFtfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljLCAkMSk9JF9MVF9UQUdWQVIobHRfcHJvZ19jb21waWxlcl9waWMsICQxKV0pCisrX0xUX1RBR1ZBUihsdF9wcm9nX2NvbXBpbGVyX3BpYywgJDEpPSRfTFRfVEFHVkFSKGx0X2N2X3Byb2dfY29tcGlsZXJfcGljLCAkMSkKKyAKKyAjCisgIyBDaGVjayB0byBtYWtlIHN1cmUgdGhlIFBJQyBmbGFnIGFjdHVhbGx5IHdvcmtzLgorQEAgLTQxOTMsNiArNDQ1NSw4IEBAIGZpCisgX0xUX1RBR0RFQ0woW3BpY19mbGFnXSwgW2x0X3Byb2dfY29tcGlsZXJfcGljXSwgWzFdLAorIAlbQWRkaXRpb25hbCBjb21waWxlciBmbGFncyBmb3IgYnVpbGRpbmcgbGlicmFyeSBvYmplY3RzXSkKKyAKKytfTFRfVEFHREVDTChbd2xdLCBbbHRfcHJvZ19jb21waWxlcl93bF0sIFsxXSwKKysJW0hvdyB0byBwYXNzIGEgbGlua2VyIGZsYWcgdGhyb3VnaCB0aGUgY29tcGlsZXJdKQorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgc3RhdGljIGZsYWcgYWN0dWFsbHkgd29ya3MuCisgIworQEAgLTQyMTMsNiArNDQ3Nyw3IEBAIF9MVF9UQUdERUNMKFtsaW5rX3N0YXRpY19mbGFnXSwgW2x0X3Byb2dfY29tcGlsZXJfc3RhdGljXSwgWzFdLAorIG00X2RlZnVuKFtfTFRfTElOS0VSX1NITElCU10sCisgW0FDX1JFUVVJUkUoW0xUX1BBVEhfTERdKWRubAorIEFDX1JFUVVJUkUoW0xUX1BBVEhfTk1dKWRubAorK200X3JlcXVpcmUoW19MVF9QQVRIX01BTklGRVNUX1RPT0xdKWRubAorIG00X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorIG00X3JlcXVpcmUoW19MVF9ERUNMX0VHUkVQXSlkbmwKKyBtNF9yZXF1aXJlKFtfTFRfREVDTF9TRURdKWRubAorQEAgLTQyMjEsNiArNDQ4Niw3IEBAIG00X3JlcXVpcmUoW19MVF9UQUdfQ09NUElMRVJdKWRubAorIEFDX01TR19DSEVDS0lORyhbd2hldGhlciB0aGUgJGNvbXBpbGVyIGxpbmtlciAoJExEKSBzdXBwb3J0cyBzaGFyZWQgbGlicmFyaWVzXSkKKyBtNF9pZihbJDFdLCBbQ1hYXSwgWworICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAnXCcncy8uKiAvLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydfR0xPQkFMX09GRlNFVF9UQUJMRV98X0dMT0JBTF9fRltJRF1fLionXQorICAgY2FzZSAkaG9zdF9vcyBpbgorICAgYWl4W1s0LTldXSopCisgICAgICMgSWYgd2UncmUgdXNpbmcgR05VIG5tLCB0aGVuIHdlIGRvbid0IHdhbnQgdGhlICItQyIgb3B0aW9uLgorQEAgLTQyMzUsMTUgKzQ1MDEsMjAgQEAgbTRfaWYoWyQxXSwgW0NYWF0sIFsKKyAgICAgOzsKKyAgIHB3MzIqKQorICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0iJGx0ZGxsX2NtZHMiCistICA7OworKyAgICA7OworICAgY3lnd2luKiB8IG1pbmd3KiB8IGNlZ2NjKikKKy0gICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87L14uKltbIF1dX19ubV9fL3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworLSAgOzsKKysgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKysgICAgY2wqKSA7OworKyAgICAqKQorKyAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW1tCQ0RHUlNdXVtbIF1dL3MvLipbWyBdXVwoW1teIF1dKlwpL1wxIERBVEEvO3MvXi4qW1sgXV1fX25tX19cKFtbXiBdXSpcKVtbIF1dW1teIF1dKi9cMSBEQVRBLzsvXklbWyBdXS9kOy9eW1tBSVRXXV1bWyBdXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIF9MVF9UQUdWQVIoZXhjbHVkZV9leHBzeW1zLCAkMSk9WydbX10rR0xPQkFMX09GRlNFVF9UQUJMRV98W19dK0dMT0JBTF9fW0ZJRF1fLip8W19dK2hlYWRfW0EtWmEtejAtOV9dK19kbGx8W0EtWmEtejAtOV9dK19kbGxfaW5hbWUnXQorKyAgICAgIDs7CisrICAgIGVzYWMKKysgICAgOzsKKyAgICopCisgICAgIF9MVF9UQUdWQVIoZXhwb3J0X3N5bWJvbHNfY21kcywgJDEpPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgJ1wnJ3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCistICA7OworKyAgICA7OworICAgZXNhYworLSAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ19HTE9CQUxfT0ZGU0VUX1RBQkxFX3xfR0xPQkFMX19GW0lEXV8uKiddCisgXSwgWworICAgcnVucGF0aF92YXI9CisgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9CitAQCAtNDQxMSw3ICs0NjgyLDggQEAgX0xUX0VPRgorICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT11bnN1cHBvcnRlZAorICAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KKyAgICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKy0gICAgICBfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltbQUlUV11dW1sgXV0vcy8uKltbIF1dLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgX0xUX1RBR1ZBUihleHBvcnRfc3ltYm9sc19jbWRzLCAkMSk9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bW0JDREdSU11dW1sgXV0vcy8uKltbIF1dXChbW14gXV0qXCkvXDEgREFUQS87cy9eLipbWyBdXV9fbm1fX1woW1teIF1dKlwpW1sgXV1bW14gXV0qL1wxIERBVEEvOy9eSVtbIF1dL2Q7L15bW0FJVFddXVtbIF1dL3MvLiogLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgX0xUX1RBR1ZBUihleGNsdWRlX2V4cHN5bXMsICQxKT1bJ1tfXStHTE9CQUxfT0ZGU0VUX1RBQkxFX3xbX10rR0xPQkFMX19bRklEXV8uKnxbX10raGVhZF9bQS1aYS16MC05X10rX2RsbHxbQS1aYS16MC05X10rX2RsbF9pbmFtZSddCisgCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtNDUxMCwxMiArNDc4MiwxMiBAQCBfTFRfRU9GCisgCSAgX0xUX1RBR1ZBUih3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYywgJDEpPSctLXdob2xlLWFyY2hpdmUkY29udmVuaWVuY2UgLS1uby13aG9sZS1hcmNoaXZlJworIAkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPQorIAkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCwgJDEpPSctcnBhdGggJGxpYmRpcicKKy0JICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisrCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKyAJICBpZiB0ZXN0ICJ4JHN1cHBvcnRzX2Fub25fdmVyc2lvbmluZyIgPSB4eWVzOyB0aGVuCisgCSAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKy0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisrCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAJICBmaQorIAkgIDs7CisgCWVzYWMKK0BAIC00NTI5LDggKzQ4MDEsOCBAQCBfTFRfRU9GCisgCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRMRCAtQnNoYXJlYWJsZSAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzIC1vICRsaWInCisgCXdsYXJjPQorICAgICAgIGVsc2UKKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGZpCisgICAgICAgOzsKKyAKK0BAIC00NTQ4LDggKzQ4MjAsOCBAQCBfTFRfRU9GCisgCisgX0xUX0VPRgorICAgICAgIGVsaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICAgZmkKK0BAIC00NTk1LDggKzQ4NjcsOCBAQCBfTFRfRU9GCisgCisgICAgICopCisgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJzogc3VwcG9ydGVkIHRhcmdldHM6LiogZWxmJyA+IC9kZXYvbnVsbDsgdGhlbgorLQlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlfTFRfVEFHVkFSKGxkX3NobGlicywgJDEpPW5vCisgICAgICAgZmkKK0BAIC00NzI2LDcgKzQ5OTgsNyBAQCBfTFRfRU9GCisgCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJworICAgICAgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgICAgICAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorKyAgICAgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKKyAgICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCisgICAgICAgZWxzZQorQEAgLTQ3MzcsNyArNTAwOSw3IEBAIF9MVF9FT0YKKyAJZWxzZQorIAkgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorKwkgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKKyAJIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICMgV2FybmluZyAtIHdpdGhvdXQgdXNpbmcgdGhlIG90aGVyIHJ1biB0aW1lIGxvYWRpbmcgZmxhZ3MsCisgCSAgIyAtYmVyb2sgd2lsbCBsaW5rIHdpdGhvdXQgZXJyb3IsIGJ1dCBtYXkgcHJvZHVjZSBhIGJyb2tlbiBsaWJyYXJ5LgorQEAgLTQ3ODEsMjAgKzUwNTMsNjMgQEAgX0xUX0VPRgorICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCistICAgICAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKy0gICAgICBsaWJleHQ9bGliCistICAgICAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCistICAgICAgc2hyZXh0X2NtZHM9Ii5kbGwiCistICAgICAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorLSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCistICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCistICAgICAgIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKy0gICAgICBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2NtZHMsICQxKT0nbGliIC1PVVQ6JG9sZGxpYiRvbGRvYmpzJG9sZF9kZXBsaWJzJworLSAgICAgIF9MVF9UQUdWQVIoZml4X3NyY2ZpbGVfcGF0aCwgJDEpPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKKy0gICAgICBfTFRfVEFHVkFSKGVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXMsICQxKT15ZXMKKysgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgorKyAgICAgIGNsKikKKysJIyBOYXRpdmUgTVNWQworKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKKysJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisrCV9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9eWVzCisrCV9MVF9UQUdWQVIoZmlsZV9saXN0X3NwZWMsICQxKT0nQCcKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJbGliZXh0PWxpYgorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmRsbCBmaWxlcywgbm90IC5zbyBmaWxlcy4KKysJc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgc2VkIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICBlbHNlCisrCSAgICBzZWQgLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGZpfgorKwkgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICBsaW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBub3QgYXV0b21hdGljYWxseSBidWlsZCBhIHN0YXRpYyBsaWIgaWYgd2UgYnVpbGQgYSBETEwuCisrCSMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCisrCV9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworKwlfTFRfVEFHVkFSKGV4cG9ydF9zeW1ib2xzX2NtZHMsICQxKT0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltbQkNER1JTXV1bWyBdXS9zLy4qW1sgXV1cKFtbXiBdXSpcKS9cMSxEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltbQUlUV11dW1sgXV0vcy8uKltbIF1dLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrCSMgRG9uJ3QgdXNlIHJhbmxpYgorKwlfTFRfVEFHVkFSKG9sZF9wb3N0aW5zdGFsbF9jbWRzLCAkMSk9J2NobW9kIDY0NCAkb2xkbGliJworKwlfTFRfVEFHVkFSKHBvc3RsaW5rX2NtZHMsICQxKT0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisrCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorKwkgICAgKi5leGV8Ki5FWEUpIDs7CisrCSAgICAqKQorKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIDs7CisrCSAgZXNhY34KKysJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKysJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworKwkgIGZpJworKwk7OworKyAgICAgICopCisrCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgorKwlfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nICcKKysJX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorKwlfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICQxKT0ndHJ1ZScKKysJIyBGSVhNRTogU2hvdWxkIGxldCB0aGUgdXNlciBzcGVjaWZ5IHRoZSBsaWIgcHJvZ3JhbS4KKysJX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKysJX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisrCTs7CisrICAgICAgZXNhYworICAgICAgIDs7CisgCisgICAgIGRhcndpbiogfCByaGFwc29keSopCitAQCAtNDgyOCw3ICs1MTQzLDcgQEAgX0xUX0VPRgorIAorICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKy0gICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1SJGxpYmRpcicKKyAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2RpcmVjdCwgJDEpPXllcworICAgICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfc2hsaWJwYXRoX3ZhciwgJDEpPW5vCitAQCAtNDgzNiw3ICs1MTUxLDcgQEAgX0xUX0VPRgorIAorICAgICBocHV4OSopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZWxzZQorIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kTEQgLWIgK2IgJGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBmaQorQEAgLTQ4NTIsNyArNTE2Nyw3IEBAIF9MVF9FT0YKKyAKKyAgICAgaHB1eDEwKikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllcyAmJiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgICAgICAgZWxzZQorIAlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckTEQgLWIgK2ggJHNvbmFtZSArYiAkaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkbGlua2VyX2ZsYWdzJworICAgICAgIGZpCitAQCAtNDg3NiwxMCArNTE5MSwxMCBAQCBfTFRfRU9GCisgCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rbm9kZWZhdWx0cnBhdGggLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisrCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K25vZGVmYXVsdHJwYXRoIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCSopCistCSAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAllc2FjCisgICAgICAgZWxzZQorQEAgLTQ5MjYsMTYgKzUyNDEsMzEgQEAgX0xUX0VPRgorIAorICAgICBpcml4NSogfCBpcml4NiogfCBub25zdG9wdXgqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCSMgVHJ5IHRvIHVzZSB0aGUgLWV4cG9ydGVkX3N5bWJvbCBsZCBvcHRpb24sIGlmIGl0IGRvZXMgbm90CisgCSMgd29yaywgYXNzdW1lIHRoYXQgLWV4cG9ydHNfZmlsZSBkb2VzIG5vdCB3b3JrIGVpdGhlciBhbmQKKyAJIyBpbXBsaWNpdGx5IGV4cG9ydCBhbGwgc3ltYm9scy4KKy0gICAgICAgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCistICAgICAgICBMREZMQUdTPSIkTERGTEFHUyAtc2hhcmVkICR7d2x9LWV4cG9ydGVkX3N5bWJvbCAke3dsfWZvbyAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0vZGV2L251bGwiCistICAgICAgICBBQ19MSU5LX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW2ludCBmb28odm9pZCkge31dKV0sCistICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgJHt3bH0tZXhwb3J0c19maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCistICAgICAgICApCistICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorKwkjIFRoaXMgc2hvdWxkIGJlIHRoZSBzYW1lIGZvciBhbGwgbGFuZ3VhZ2VzLCBzbyBubyBwZXItdGFnIGNhY2hlIHZhcmlhYmxlLgorKwlBQ19DQUNIRV9DSEVDSyhbd2hldGhlciB0aGUgJGhvc3Rfb3MgbGlua2VyIGFjY2VwdHMgLWV4cG9ydGVkX3N5bWJvbF0sCisrCSAgW2x0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sXSwKKysJICBbc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKysJICAgTERGTEFHUz0iJExERkxBR1MgLXNoYXJlZCAke3dsfS1leHBvcnRlZF9zeW1ib2wgJHt3bH1mb28gJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9L2Rldi9udWxsIgorKwkgICBBQ19MSU5LX0lGRUxTRSgKKysJICAgICBbQUNfTEFOR19TT1VSQ0UoCisrCSAgICAgICAgW0FDX0xBTkdfQ0FTRShbQ10sIFtbaW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfV1dLAorKwkJCSAgICAgIFtDKytdLCBbW2ludCBmb28gKHZvaWQpIHsgcmV0dXJuIDA7IH1dXSwKKysJCQkgICAgICBbRm9ydHJhbiA3N10sIFtbCisrICAgICAgc3Vicm91dGluZSBmb28KKysgICAgICBlbmRdXSwKKysJCQkgICAgICBbRm9ydHJhbl0sIFtbCisrICAgICAgc3Vicm91dGluZSBmb28KKysgICAgICBlbmRdXSldKV0sCisrCSAgICAgIFtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbD15ZXNdLAorKwkgICAgICBbbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2w9bm9dKQorKyAgICAgICAgICAgTERGTEFHUz0iJHNhdmVfTERGTEFHUyJdKQorKwlpZiB0ZXN0ICIkbHRfY3ZfaXJpeF9leHBvcnRlZF9zeW1ib2wiID0geWVzOyB0aGVuCisrICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zICR7d2x9LWV4cG9ydHNfZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlmaQorICAgICAgIGVsc2UKKyAJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICItc2V0X3ZlcnNpb24gJHZlcnN0cmluZyJgIC11cGRhdGVfcmVnaXN0cnkgJHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLWV4cG9ydHNfZmlsZSAkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKK0BAIC01MDIwLDcgKzUzNTAsNyBAQCBfTFRfRU9GCisgICAgIG9zZjQqIHwgb3NmNSopCSMgYXMgb3NmMyogd2l0aCB0aGUgYWRkaXRpb24gb2YgLW1zeW0gZmxhZworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nICR7d2x9LWV4cGVjdF91bnJlc29sdmVkICR7d2x9XConCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LXJwYXRoICR7d2x9JGxpYmRpcicKKyAgICAgICBlbHNlCisgCV9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKK0BAIC01MDM5LDkgKzUzNjksOSBAQCBfTFRfRU9GCisgICAgICAgX0xUX1RBR1ZBUihub191bmRlZmluZWRfZmxhZywgJDEpPScgLXogZGVmcycKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorIAl3bGFyYz0nJHt3bH0nCistCV9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICR7d2x9LXogJHt3bH10ZXh0ICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKwlfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCV9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCSAgJENDIC1zaGFyZWQgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJICAkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0tTSAke3dsfSRsaWIuZXhwICR7d2x9LWggJHt3bH0kc29uYW1lIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAgICAgICBlbHNlCisgCWNhc2UgYCRDQyAtViAyPiYxYCBpbgorIAkqIkNvbXBpbGVycyA1LjAiKikKK0BAIC01MzEzLDggKzU2NDMsNiBAQCBfTFRfVEFHREVDTChbXSwgW2luaGVyaXRfcnBhdGhdLCBbMF0sCisgICAgIHRvIHJ1bnRpbWUgcGF0aCBsaXN0XSkKKyBfTFRfVEFHREVDTChbXSwgW2xpbmtfYWxsX2RlcGxpYnNdLCBbMF0sCisgICAgIFtXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXNdKQorLV9MVF9UQUdERUNMKFtdLCBbZml4X3NyY2ZpbGVfcGF0aF0sIFsxXSwKKy0gICAgW0ZpeCB0aGUgc2hlbGwgdmFyaWFibGUgJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlcl0pCisgX0xUX1RBR0RFQ0woW10sIFthbHdheXNfZXhwb3J0X3N5bWJvbHNdLCBbMF0sCisgICAgIFtTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWRdKQorIF9MVF9UQUdERUNMKFtdLCBbZXhwb3J0X3N5bWJvbHNfY21kc10sIFsyXSwKK0BAIC01MzI1LDYgKzU2NTMsOCBAQCBfTFRfVEFHREVDTChbXSwgW2luY2x1ZGVfZXhwc3ltc10sIFsxXSwKKyAgICAgW1N5bWJvbHMgdGhhdCBtdXN0IGFsd2F5cyBiZSBleHBvcnRlZF0pCisgX0xUX1RBR0RFQ0woW10sIFtwcmVsaW5rX2NtZHNdLCBbMl0sCisgICAgIFtDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlc10pCisrX0xUX1RBR0RFQ0woW10sIFtwb3N0bGlua19jbWRzXSwgWzJdLAorKyAgICBbQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtc10pCisgX0xUX1RBR0RFQ0woW10sIFtmaWxlX2xpc3Rfc3BlY10sIFsxXSwKKyAgICAgW1NwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlc10pCisgZG5sIEZJWE1FOiBOb3QgeWV0IGltcGxlbWVudGVkCitAQCAtNTQyNiw2ICs1NzU2LDcgQEAgQ0M9IiRsdF9zYXZlX0NDIgorIG00X2RlZnVuKFtfTFRfTEFOR19DWFhfQ09ORklHXSwKKyBbbTRfcmVxdWlyZShbX0xUX0ZJTEVVVElMU19ERUZBVUxUU10pZG5sCisgbTRfcmVxdWlyZShbX0xUX0RFQ0xfRUdSRVBdKWRubAorK200X3JlcXVpcmUoW19MVF9QQVRIX01BTklGRVNUX1RPT0xdKWRubAorIGlmIHRlc3QgLW4gIiRDWFgiICYmICggdGVzdCAiWCRDWFgiICE9ICJYbm8iICYmCisgICAgICggKHRlc3QgIlgkQ1hYIiA9ICJYZysrIiAmJiBgZysrIC12ID4vZGV2L251bGwgMj4mMWAgKSB8fAorICAgICAodGVzdCAiWCRDWFgiICE9ICJYZysrIikpKSA7IHRoZW4KK0BAIC01NDg3LDYgKzU4MTgsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorIAorICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KKyAgIGx0X3NhdmVfQ0M9JENDCisrICBsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgICBsdF9zYXZlX0xEPSRMRAorICAgbHRfc2F2ZV9HQ0M9JEdDQworICAgR0NDPSRHWFgKK0BAIC01NTA0LDYgKzU4MzYsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorICAgZmkKKyAgIHRlc3QgLXogIiR7TERDWFgrc2V0fSIgfHwgTEQ9JExEQ1hYCisgICBDQz0ke0NYWC0iYysrIn0KKysgIENGTEFHUz0kQ1hYRkxBR1MKKyAgIGNvbXBpbGVyPSRDQworICAgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQworICAgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQorQEAgLTU2NjcsNyArNjAwMCw3IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgICAgICAgICAgIF9MVF9UQUdWQVIoYWxsb3dfdW5kZWZpbmVkX2ZsYWcsICQxKT0nLWJlcm9rJworICAgICAgICAgICAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4gZW1wdHkKKyAgICAgICAgICAgIyBleGVjdXRhYmxlLgorLSAgICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorKyAgICAgICAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWChbJDFdKQorICAgICAgICAgICBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKT0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAKKyAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICciXCR7d2x9JG5vX2VudHJ5X2ZsYWciJyAkY29tcGlsZXJfZmxhZ3MgYGlmIHRlc3QgIngke2FsbG93X3VuZGVmaW5lZF9mbGFnfSIgIT0gIngiOyB0aGVuIGZ1bmNfZWNob19hbGwgIiR7d2x9JHthbGxvd191bmRlZmluZWRfZmxhZ30iOyBlbHNlIDo7IGZpYCAnIlwke3dsfSRleHBfc3ltX2ZsYWc6XCRleHBvcnRfc3ltYm9scyAkc2hhcmVkX2ZsYWciCitAQCAtNTY3OSw3ICs2MDEyLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAgICAgICAgICAgZWxzZQorIAkgICAgIyBEZXRlcm1pbmUgdGhlIGRlZmF1bHQgbGlicGF0aCBmcm9tIHRoZSB2YWx1ZSBlbmNvZGVkIGluIGFuCisgCSAgICAjIGVtcHR5IGV4ZWN1dGFibGUuCistCSAgICBfTFRfU1lTX01PRFVMRV9QQVRIX0FJWAorKwkgICAgX0xUX1NZU19NT0RVTEVfUEFUSF9BSVgoWyQxXSkKKyAJICAgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorIAkgICAgIyBXYXJuaW5nIC0gd2l0aG91dCB1c2luZyB0aGUgb3RoZXIgcnVuIHRpbWUgbG9hZGluZyBmbGFncywKKyAJICAgICMgLWJlcm9rIHdpbGwgbGluayB3aXRob3V0IGVycm9yLCBidXQgbWF5IHByb2R1Y2UgYSBicm9rZW4gbGlicmFyeS4KK0BAIC01NzIxLDI5ICs2MDU0LDc1IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgICAgICAgICA7OworIAorICAgICAgIGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikKKy0gICAgICAgICMgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSkgaXMgYWN0dWFsbHkgbWVhbmluZ2xlc3MsCistICAgICAgICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorLSAgICAgICAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9Jy1MJGxpYmRpcicKKy0gICAgICAgIF9MVF9UQUdWQVIoZXhwb3J0X2R5bmFtaWNfZmxhZ19zcGVjLCAkMSk9JyR7d2x9LS1leHBvcnQtYWxsLXN5bWJvbHMnCistICAgICAgICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKy0gICAgICAgIF9MVF9UQUdWQVIoYWx3YXlzX2V4cG9ydF9zeW1ib2xzLCAkMSk9bm8KKy0gICAgICAgIF9MVF9UQUdWQVIoZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcywgJDEpPXllcworLQorLSAgICAgICAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorLSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCistICAgICAgICAgICMgSWYgdGhlIGV4cG9ydC1zeW1ib2xzIGZpbGUgYWxyZWFkeSBpcyBhIC5kZWYgZmlsZSAoMXN0IGxpbmUKKy0gICAgICAgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KKy0gICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2V4cHN5bV9jbWRzLCAkMSk9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCistCSAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CistICAgICAgICAgIGVsc2UKKy0JICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworLQkgICAgY2F0ICRleHBvcnRfc3ltYm9scyA+PiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZjsKKy0gICAgICAgICAgZml+CistICAgICAgICAgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkb3V0cHV0X29iamRpci8kc29uYW1lLmRlZiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgLW8gJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAke3dsfS0tZW5hYmxlLWF1dG8taW1hZ2UtYmFzZSAtWGxpbmtlciAtLW91dC1pbXBsaWIgLVhsaW5rZXIgJGxpYicKKy0gICAgICAgIGVsc2UKKy0gICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworLSAgICAgICAgZmkKKy0gICAgICAgIDs7CisrCWNhc2UgJEdYWCwkY2NfYmFzZW5hbWUgaW4KKysJLGNsKiB8IG5vLGNsKikKKysJICAjIE5hdGl2ZSBNU1ZDCisrCSAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworKwkgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCisrCSAgX0xUX1RBR1ZBUihoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjLCAkMSk9JyAnCisrCSAgX0xUX1RBR1ZBUihhbGxvd191bmRlZmluZWRfZmxhZywgJDEpPXVuc3VwcG9ydGVkCisrCSAgX0xUX1RBR1ZBUihhbHdheXNfZXhwb3J0X3N5bWJvbHMsICQxKT15ZXMKKysJICBfTFRfVEFHVkFSKGZpbGVfbGlzdF9zcGVjLCAkMSk9J0AnCisrCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5saWIgZmlsZXMsIG5vdCAuYSBmaWxlcy4KKysJICBsaWJleHQ9bGliCisrCSAgIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCSAgc2hyZXh0X2NtZHM9Ii5kbGwiCisrCSAgIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAtV2wsLWRsbH5saW5rbmFtZXM9JworKwkgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgICAkU0VEIC1uIC1lICdzL1xcXFxcXFwoLipcXFxcXFxcKS8tbGlua1xcXCAtRVhQT1JUOlxcXFxcXFwxLycgLWUgJzFcXFwhcCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kc29uYW1lLmV4cDsKKysJICAgIGVsc2UKKysJICAgICAgJFNFRCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgICBmaX4KKysJICAgICRDQyAtbyAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZSAkbGlib2JqcyAkY29tcGlsZXJfZmxhZ3MgJGRlcGxpYnMgIkAkdG9vbF9vdXRwdXRfb2JqZGlyJHNvbmFtZS5leHAiIC1XbCwtRExMLC1JTVBMSUI6IiR0b29sX291dHB1dF9vYmpkaXIkbGlibmFtZS5kbGwubGliIn4KKysJICAgIGxpbmtuYW1lcz0nCisrCSAgIyBUaGUgbGlua2VyIHdpbGwgbm90IGF1dG9tYXRpY2FsbHkgYnVpbGQgYSBzdGF0aWMgbGliIGlmIHdlIGJ1aWxkIGEgRExMLgorKwkgICMgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzLCAkMSk9J3RydWUnCisrCSAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisrCSAgIyBEb24ndCB1c2UgcmFubGliCisrCSAgX0xUX1RBR1ZBUihvbGRfcG9zdGluc3RhbGxfY21kcywgJDEpPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJICBfTFRfVEFHVkFSKHBvc3RsaW5rX2NtZHMsICQxKT0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorKwkgICAgbHRfdG9vbF9vdXRwdXRmaWxlPSJAVE9PTF9PVVRQVVRAIn4KKysJICAgIGNhc2UgJGx0X291dHB1dGZpbGUgaW4KKysJICAgICAgKi5leGV8Ki5FWEUpIDs7CisrCSAgICAgICopCisrCQlsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisrCQlsdF90b29sX291dHB1dGZpbGU9IiRsdF90b29sX291dHB1dGZpbGUuZXhlIgorKwkJOzsKKysJICAgIGVzYWN+CisrCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJGx0X291dHB1dGZpbGUifgorKwkgICAgaWYgdGVzdCAiJE1BTklGRVNUX1RPT0wiICE9ICI6IiAmJiB0ZXN0IC1mICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7IHRoZW4KKysJICAgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKysJICAgICAgJFJNICIkbHRfb3V0cHV0ZmlsZS5tYW5pZmVzdCI7CisrCSAgICBmaScKKysJICA7OworKwkqKQorKwkgICMgZysrCisrCSAgIyBfTFRfVEFHVkFSKGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMsICQxKSBpcyBhY3R1YWxseSBtZWFuaW5nbGVzcywKKysJICAjIGFzIHRoZXJlIGlzIG5vIHNlYXJjaCBwYXRoIGZvciBETExzLgorKwkgIF9MVF9UQUdWQVIoaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYywgJDEpPSctTCRsaWJkaXInCisrCSAgX0xUX1RBR1ZBUihleHBvcnRfZHluYW1pY19mbGFnX3NwZWMsICQxKT0nJHt3bH0tLWV4cG9ydC1hbGwtc3ltYm9scycKKysJICBfTFRfVEFHVkFSKGFsbG93X3VuZGVmaW5lZF9mbGFnLCAkMSk9dW5zdXBwb3J0ZWQKKysJICBfTFRfVEFHVkFSKGFsd2F5c19leHBvcnRfc3ltYm9scywgJDEpPW5vCisrCSAgX0xUX1RBR1ZBUihlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzLCAkMSk9eWVzCisrCisrCSAgaWYgJExEIC0taGVscCAyPiYxIHwgJEdSRVAgJ2F1dG8taW1wb3J0JyA+IC9kZXYvbnVsbDsgdGhlbgorKwkgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICR7d2x9LS1lbmFibGUtYXV0by1pbWFnZS1iYXNlIC1YbGlua2VyIC0tb3V0LWltcGxpYiAtWGxpbmtlciAkbGliJworKwkgICAgIyBJZiB0aGUgZXhwb3J0LXN5bWJvbHMgZmlsZSBhbHJlYWR5IGlzIGEgLmRlZiBmaWxlICgxc3QgbGluZQorKwkgICAgIyBpcyBFWFBPUlRTKSwgdXNlIGl0IGFzIGlzOyBvdGhlcndpc2UsIHByZXBlbmQuLi4KKysJICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdpZiB0ZXN0ICJ4YCRTRUQgMXEgJGV4cG9ydF9zeW1ib2xzYCIgPSB4RVhQT1JUUzsgdGhlbgorKwkgICAgICBjcCAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWY7CisrCSAgICBlbHNlCisrCSAgICAgIGVjaG8gRVhQT1JUUyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworKwkgICAgICBjYXQgJGV4cG9ydF9zeW1ib2xzID4+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZGVmOworKwkgICAgZml+CisrCSAgICAkQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5kZWYgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCisrCSAgZWxzZQorKwkgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworKwkgIGZpCisrCSAgOzsKKysJZXNhYworKwk7OworICAgICAgIGRhcndpbiogfCByaGFwc29keSopCisgICAgICAgICBfTFRfREFSV0lOX0xJTktFUl9GRUFUVVJFUygkMSkKKyAJOzsKK0BAIC01ODE4LDcgKzYxOTcsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorICAgICAgICAgICAgIDs7CisgICAgICAgICAgICopCisgICAgICAgICAgICAgaWYgdGVzdCAiJEdYWCIgPSB5ZXM7IHRoZW4KKy0gICAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRSTSAkb3V0cHV0X29iamRpci8kc29uYW1lfiRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworKyAgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfnRlc3QgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSA9ICRsaWIgfHwgbXYgJG91dHB1dF9vYmpkaXIvJHNvbmFtZSAkbGliJworICAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICMgRklYTUU6IGluc2VydCBwcm9wZXIgQysrIGxpYnJhcnkgc3VwcG9ydAorICAgICAgICAgICAgICAgX0xUX1RBR1ZBUihsZF9zaGxpYnMsICQxKT1ubworQEAgLTU4ODksMTAgKzYyNjgsMTAgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliIC1mUElDICR7d2x9K2ggJHt3bH0kc29uYW1lIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworIAkgICAgICAgICAgICA7OworIAkgICAgICAgICAgaWE2NCopCistCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKysJICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncycKKyAJICAgICAgICAgICAgOzsKKyAJICAgICAgICAgICopCistCSAgICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzJworKwkgICAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHBpY19mbGFnICR7d2x9K2ggJHt3bH0kc29uYW1lICR7d2x9K2IgJHt3bH0kaW5zdGFsbF9saWJkaXIgLW8gJGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgICAgICAgICAgIDs7CisgCSAgICAgICAgZXNhYworIAkgICAgICBmaQorQEAgLTU5MzMsOSArNjMxMiw5IEBAIGlmIHRlc3QgIiRfbHRfY2F1Z2h0X0NYWF9lcnJvciIgIT0geWVzOyB0aGVuCisgICAgICAgICAgICopCisgCSAgICBpZiB0ZXN0ICIkR1hYIiA9IHllczsgdGhlbgorIAkgICAgICBpZiB0ZXN0ICIkd2l0aF9nbnVfbGQiID0gbm87IHRoZW4KKy0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCSAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJICAgICAgZWxzZQorLQkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgLW8gJGxpYicKKysJICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAtbyAkbGliJworIAkgICAgICBmaQorIAkgICAgZmkKKyAJICAgIF9MVF9UQUdWQVIobGlua19hbGxfZGVwbGlicywgJDEpPXllcworQEAgLTYwMDUsMjAgKzYzODQsMjAgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAJICAgICAgX0xUX1RBR1ZBUihwcmVsaW5rX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkb2JqcyAkbGlib2JqcyAkY29tcGlsZV9kZXBsaWJzfgorLQkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAiJworKwkJY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgIicKKyAJICAgICAgX0xUX1RBR1ZBUihvbGRfYXJjaGl2ZV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisgCQlybSAtcmYgJHRwbGRpcn4KKyAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJG9sZG9ianMkb2xkX2RlcGxpYnN+CistCQkkQVIgJEFSX0ZMQUdTICRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgfgorKwkJJEFSICRBUl9GTEFHUyAkb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGB+CisgCQkkUkFOTElCICRvbGRsaWInCisgCSAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9J3RwbGRpcj1UZW1wbGF0ZS5kaXJ+CisgCQlybSAtcmYgJHRwbGRpcn4KKyAJCSRDQyAtLXByZWxpbmtfb2JqZWN0cyAtLWluc3RhbnRpYXRpb25fZGlyICR0cGxkaXIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRjb252ZW5pZW5jZSAkcG9zdGRlcF9vYmplY3RzfgorLQkJJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyBgZmluZCAkdHBsZGlyIC1uYW1lIFwqLm8gfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgLW8gJGxpYicKKysJCSRDQyAtc2hhcmVkICRwaWNfZmxhZyAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgYGZpbmQgJHRwbGRpciAtbmFtZSBcKi5vIHwgc29ydCB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAtbyAkbGliJworIAkgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfZXhwc3ltX2NtZHMsICQxKT0ndHBsZGlyPVRlbXBsYXRlLmRpcn4KKyAJCXJtIC1yZiAkdHBsZGlyfgorIAkJJENDIC0tcHJlbGlua19vYmplY3RzIC0taW5zdGFudGlhdGlvbl9kaXIgJHRwbGRpciAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJGNvbnZlbmllbmNlICRwb3N0ZGVwX29iamVjdHN+CistCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8ICROTDJTUGAgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR7d2x9JGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCQkkQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzIGBmaW5kICR0cGxkaXIgLW5hbWUgXCoubyB8IHNvcnQgfCAkTkwyU1BgICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAke3dsfSRleHBvcnRfc3ltYm9scyAtbyAkbGliJworIAkgICAgICA7OworIAkgICAgKikgIyBWZXJzaW9uIDYgYW5kIGFib3ZlIHVzZSB3ZWFrIHN5bWJvbHMKKyAJICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIC1vICRsaWInCitAQCAtNjIxMyw3ICs2NTkyLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAJICAgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke2FsbG93X3VuZGVmaW5lZF9mbGFnfSAkcHJlZGVwX29iamVjdHMgJGxpYm9ianMgJGRlcGxpYnMgJHBvc3RkZXBfb2JqZWN0cyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJCSAgOzsKKyAJICAgICAgICAqKQorLQkgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHMsICQxKT0nJENDIC1zaGFyZWQgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisrCSAgICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgLW5vc3RkbGliICR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwcmVkZXBfb2JqZWN0cyAkbGlib2JqcyAkZGVwbGlicyAkcG9zdGRlcF9vYmplY3RzICRjb21waWxlcl9mbGFncyAke3dsfS1tc3ltICR7d2x9LXNvbmFtZSAke3dsfSRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIiR7d2x9LXNldF92ZXJzaW9uICR7d2x9JHZlcnN0cmluZyJgICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfSR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCQkgIDs7CisgCSAgICAgIGVzYWMKKyAKK0BAIC02MjU5LDcgKzY2MzgsNyBAQCBpZiB0ZXN0ICIkX2x0X2NhdWdodF9DWFhfZXJyb3IiICE9IHllczsgdGhlbgorIAorICAgICAgIHNvbGFyaXMqKQorICAgICAgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KKy0gICAgICAgICAgQ0MqKQorKyAgICAgICAgICBDQyogfCBzdW5DQyopCisgCSAgICAjIFN1biBDKysgNC4yLCA1LnggYW5kIENlbnRlcmxpbmUgQysrCisgICAgICAgICAgICAgX0xUX1RBR1ZBUihhcmNoaXZlX2NtZHNfbmVlZF9sYywkMSk9eWVzCisgCSAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAtemRlZnMnCitAQCAtNjMwMCw5ICs2Njc5LDkgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAJICAgIGlmIHRlc3QgIiRHWFgiID0geWVzICYmIHRlc3QgIiR3aXRoX2dudV9sZCIgPSBubzsgdGhlbgorIAkgICAgICBfTFRfVEFHVkFSKG5vX3VuZGVmaW5lZF9mbGFnLCAkMSk9JyAke3dsfS16ICR7d2x9ZGVmcycKKyAJICAgICAgaWYgJENDIC0tdmVyc2lvbiB8ICRHUkVQIC12ICdeMlwuNycgPiAvZGV2L251bGw7IHRoZW4KKy0JICAgICAgICBfTFRfVEFHVkFSKGFyY2hpdmVfY21kcywgJDEpPSckQ0MgLXNoYXJlZCAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJworKwkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9jbWRzLCAkMSk9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAtbm9zdGRsaWIgJExERkxBR1MgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWggJHdsJHNvbmFtZSAtbyAkbGliJworIAkgICAgICAgIF9MVF9UQUdWQVIoYXJjaGl2ZV9leHBzeW1fY21kcywgJDEpPSdlY2hvICJ7IGdsb2JhbDoiID4gJGxpYi5leHB+Y2F0ICRleHBvcnRfc3ltYm9scyB8ICRTRUQgLWUgInMvXCguKlwpL1wxOy8iID4+ICRsaWIuZXhwfmVjaG8gImxvY2FsOiAqOyB9OyIgPj4gJGxpYi5leHB+CistCQkgICRDQyAtc2hhcmVkIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKysJCSAgJENDIC1zaGFyZWQgJHBpY19mbGFnIC1ub3N0ZGxpYiAke3dsfS1NICR3bCRsaWIuZXhwIC1vICRsaWIgJHByZWRlcF9vYmplY3RzICRsaWJvYmpzICRkZXBsaWJzICRwb3N0ZGVwX29iamVjdHMgJGNvbXBpbGVyX2ZsYWdzfiRSTSAkbGliLmV4cCcKKyAKKyAJICAgICAgICAjIENvbW1hbmRzIHRvIG1ha2UgY29tcGlsZXIgcHJvZHVjZSB2ZXJib3NlIG91dHB1dCB0aGF0IGxpc3RzCisgCSAgICAgICAgIyB3aGF0ICJoaWRkZW4iIGxpYnJhcmllcywgb2JqZWN0IGZpbGVzIGFuZCBmbGFncyBhcmUgdXNlZCB3aGVuCitAQCAtNjQzMSw2ICs2ODEwLDcgQEAgaWYgdGVzdCAiJF9sdF9jYXVnaHRfQ1hYX2Vycm9yIiAhPSB5ZXM7IHRoZW4KKyAgIGZpICMgdGVzdCAtbiAiJGNvbXBpbGVyIgorIAorICAgQ0M9JGx0X3NhdmVfQ0MKKysgIENGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKKyAgIExEQ1hYPSRMRAorICAgTEQ9JGx0X3NhdmVfTEQKKyAgIEdDQz0kbHRfc2F2ZV9HQ0MKK0BAIC02NDQ1LDYgKzY4MjUsMjkgQEAgQUNfTEFOR19QT1AKKyBdKSMgX0xUX0xBTkdfQ1hYX0NPTkZJRworIAorIAorKyMgX0xUX0ZVTkNfU1RSSVBOQU1FX0NORgorKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyMgZnVuY19zdHJpcG5hbWVfY25mIHByZWZpeCBzdWZmaXggbmFtZQorKyMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCisrIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKysjIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKysjIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCisrIworKyMgVGhpcyBmdW5jdGlvbiBpcyBpZGVudGljYWwgdG8gdGhlIChub24tWFNJKSB2ZXJzaW9uIG9mIGZ1bmNfc3RyaXBuYW1lLAorKyMgZXhjZXB0IHRoaXMgb25lIGNhbiBiZSB1c2VkIGJ5IG00IGNvZGUgdGhhdCBtYXkgYmUgZXhlY3V0ZWQgYnkgY29uZmlndXJlLAorKyMgcmF0aGVyIHRoYW4gdGhlIGxpYnRvb2wgc2NyaXB0LgorK200X2RlZnVuKFtfTFRfRlVOQ19TVFJJUE5BTUVfQ05GXSxbZG5sCisrQUNfUkVRVUlSRShbX0xUX0RFQ0xfU0VEXSkKKytBQ19SRVFVSVJFKFtfTFRfUFJPR19FQ0hPX0JBQ0tTTEFTSF0pCisrZnVuY19zdHJpcG5hbWVfY25mICgpCisreworKyAgY2FzZSAkezJ9IGluCisrICAuKikgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlXFxcXCR7Mn1cJCUlImA7OworKyAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworKyAgZXNhYworK30gIyBmdW5jX3N0cmlwbmFtZV9jbmYKKytdKSMgX0xUX0ZVTkNfU1RSSVBOQU1FX0NORgorKworICMgX0xUX1NZU19ISURERU5fTElCREVQUyhbVEFHTkFNRV0pCisgIyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAjIEZpZ3VyZSBvdXQgImhpZGRlbiIgbGlicmFyeSBkZXBlbmRlbmNpZXMgZnJvbSB2ZXJib3NlCitAQCAtNjQ1Myw2ICs2ODU2LDcgQEAgQUNfTEFOR19QT1AKKyAjIG9iamVjdHMsIGxpYnJhcmllcyBhbmQgbGlicmFyeSBmbGFncy4KKyBtNF9kZWZ1bihbX0xUX1NZU19ISURERU5fTElCREVQU10sCisgW200X3JlcXVpcmUoW19MVF9GSUxFVVRJTFNfREVGQVVMVFNdKWRubAorK0FDX1JFUVVJUkUoW19MVF9GVU5DX1NUUklQTkFNRV9DTkZdKWRubAorICMgRGVwZW5kZW5jaWVzIHRvIHBsYWNlIGJlZm9yZSBhbmQgYWZ0ZXIgdGhlIG9iamVjdCBiZWluZyBsaW5rZWQ6CisgX0xUX1RBR1ZBUihwcmVkZXBfb2JqZWN0cywgJDEpPQorIF9MVF9UQUdWQVIocG9zdGRlcF9vYmplY3RzLCAkMSk9CitAQCAtNjUwMyw2ICs2OTA3LDEzIEBAIHB1YmxpYyBjbGFzcyBmb28geworIH07CisgX0xUX0VPRgorIF0pCisrCisrX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1M9JENGTEFHUworK2Nhc2UgIiRDQyAkQ0ZMQUdTICIgaW4gIygKKysqXCAtZmx0bypcICopIENGTEFHUz0iJENGTEFHUyAtZm5vLWx0byIgOzsKKysqXCAtZndob3ByKlwgKikgQ0ZMQUdTPSIkQ0ZMQUdTIC1mbm8td2hvcHIiIDs7CisrZXNhYworKworIGRubCBQYXJzZSB0aGUgY29tcGlsZXIgb3V0cHV0IGFuZCBleHRyYWN0IHRoZSBuZWNlc3NhcnkKKyBkbmwgb2JqZWN0cywgbGlicmFyaWVzIGFuZCBsaWJyYXJ5IGZsYWdzLgorIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCitAQCAtNjUxNCw3ICs2OTI1LDcgQEAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KKyAgIHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmU9bm8KKyAKKyAgIGZvciBwIGluIGBldmFsICIkb3V0cHV0X3ZlcmJvc2VfbGlua19jbWQiYDsgZG8KKy0gICAgY2FzZSAkcCBpbgorKyAgICBjYXNlICR7cHJldn0ke3B9IGluCisgCisgICAgIC1MKiB8IC1SKiB8IC1sKikKKyAgICAgICAgIyBTb21lIGNvbXBpbGVycyBwbGFjZSBzcGFjZSBiZXR3ZWVuICIte0wsUn0iIGFuZCB0aGUgcGF0aC4KK0BAIC02NTIzLDEzICs2OTM0LDIyIEBAIGlmIEFDX1RSWV9FVkFMKGFjX2NvbXBpbGUpOyB0aGVuCisgICAgICAgICAgIHRlc3QgJHAgPSAiLVIiOyB0aGVuCisgCSBwcmV2PSRwCisgCSBjb250aW51ZQorLSAgICAgICBlbHNlCistCSBwcmV2PQorICAgICAgICBmaQorIAorKyAgICAgICAjIEV4cGFuZCB0aGUgc3lzcm9vdCB0byBlYXNlIGV4dHJhY3RpbmcgdGhlIGRpcmVjdG9yaWVzIGxhdGVyLgorKyAgICAgICBpZiB0ZXN0IC16ICIkcHJldiI7IHRoZW4KKysgICAgICAgICBjYXNlICRwIGluCisrICAgICAgICAgLUwqKSBmdW5jX3N0cmlwbmFtZV9jbmYgJy1MJyAnJyAiJHAiOyBwcmV2PS1MOyBwPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQgOzsKKysgICAgICAgICAtUiopIGZ1bmNfc3RyaXBuYW1lX2NuZiAnLVInICcnICIkcCI7IHByZXY9LVI7IHA9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCA7OworKyAgICAgICAgIC1sKikgZnVuY19zdHJpcG5hbWVfY25mICctbCcgJycgIiRwIjsgcHJldj0tbDsgcD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisrICAgICAgICAgZXNhYworKyAgICAgICBmaQorKyAgICAgICBjYXNlICRwIGluCisrICAgICAgID0qKSBmdW5jX3N0cmlwbmFtZV9jbmYgJz0nICcnICIkcCI7IHA9JGx0X3N5c3Jvb3QkZnVuY19zdHJpcG5hbWVfcmVzdWx0IDs7CisrICAgICAgIGVzYWMKKyAgICAgICAgaWYgdGVzdCAiJHByZV90ZXN0X29iamVjdF9kZXBzX2RvbmUiID0gbm87IHRoZW4KKy0JIGNhc2UgJHAgaW4KKy0JIC1MKiB8IC1SKikKKysJIGNhc2UgJHtwcmV2fSBpbgorKwkgLUwgfCAtUikKKyAJICAgIyBJbnRlcm5hbCBjb21waWxlciBsaWJyYXJ5IHBhdGhzIHNob3VsZCBjb21lIGFmdGVyIHRob3NlCisgCSAgICMgcHJvdmlkZWQgdGhlIHVzZXIuICBUaGUgcG9zdGRlcHMgYWxyZWFkeSBjb21lIGFmdGVyIHRoZQorIAkgICAjIHVzZXIgc3VwcGxpZWQgbGlicyBzbyB0aGVyZSBpcyBubyBuZWVkIHRvIHByb2Nlc3MgdGhlbS4KK0BAIC02NTQ5LDggKzY5NjksMTAgQEAgaWYgQUNfVFJZX0VWQUwoYWNfY29tcGlsZSk7IHRoZW4KKyAJICAgX0xUX1RBR1ZBUihwb3N0ZGVwcywgJDEpPSIke19MVF9UQUdWQVIocG9zdGRlcHMsICQxKX0gJHtwcmV2fSR7cH0iCisgCSBmaQorICAgICAgICBmaQorKyAgICAgICBwcmV2PQorICAgICAgICA7OworIAorKyAgICAqLmx0by4kb2JqZXh0KSA7OyAjIElnbm9yZSBHQ0MgTFRPIG9iamVjdHMKKyAgICAgKi4kb2JqZXh0KQorICAgICAgICAjIFRoaXMgYXNzdW1lcyB0aGF0IHRoZSB0ZXN0IG9iamVjdCBmaWxlIG9ubHkgc2hvd3MgdXAKKyAgICAgICAgIyBvbmNlIGluIHRoZSBjb21waWxlciBvdXRwdXQuCitAQCAtNjU4Niw2ICs3MDA4LDcgQEAgZWxzZQorIGZpCisgCisgJFJNIC1mIGNvbmZlc3QuJG9iamV4dAorK0NGTEFHUz0kX2x0X2xpYmRlcHNfc2F2ZV9DRkxBR1MKKyAKKyAjIFBPUlRNRTogb3ZlcnJpZGUgYWJvdmUgdGVzdCBvbiBzeXN0ZW1zIHdoZXJlIGl0IGlzIGJyb2tlbgorIG00X2lmKFskMV0sIFtDWFhdLAorQEAgLTY2MjIsNyArNzA0NSw3IEBAIGxpbnV4KikKKyAKKyBzb2xhcmlzKikKKyAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICBDQyopCisrICBDQyogfCBzdW5DQyopCisgICAgICMgVGhlIG1vcmUgc3RhbmRhcmRzLWNvbmZvcm1pbmcgc3RscG9ydDQgbGlicmFyeSBpcworICAgICAjIGluY29tcGF0aWJsZSB3aXRoIHRoZSBDc3RkIGxpYnJhcnkuIEF2b2lkIHNwZWNpZnlpbmcKKyAgICAgIyBpdCBpZiBpdCdzIGluIENYWEZMQUdTLiBJZ25vcmUgbGliQ3J1biBhcworQEAgLTY3MzUsNyArNzE1OCw5IEBAIGlmIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllczsgdGhlbgorICAgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KKyAgIGx0X3NhdmVfQ0M9IiRDQyIKKyAgIGx0X3NhdmVfR0NDPSRHQ0MKKysgIGx0X3NhdmVfQ0ZMQUdTPSRDRkxBR1MKKyAgIENDPSR7Rjc3LSJmNzcifQorKyAgQ0ZMQUdTPSRGRkxBR1MKKyAgIGNvbXBpbGVyPSRDQworICAgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQworICAgX0xUX0NDX0JBU0VOQU1FKFskY29tcGlsZXJdKQorQEAgLTY3ODksNiArNzIxNCw3IEBAIGlmIHRlc3QgIiRfbHRfZGlzYWJsZV9GNzciICE9IHllczsgdGhlbgorIAorICAgR0NDPSRsdF9zYXZlX0dDQworICAgQ0M9IiRsdF9zYXZlX0NDIgorKyAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisgZmkgIyB0ZXN0ICIkX2x0X2Rpc2FibGVfRjc3IiAhPSB5ZXMKKyAKKyBBQ19MQU5HX1BPUAorQEAgLTY4NjUsNyArNzI5MSw5IEBAIGlmIHRlc3QgIiRfbHRfZGlzYWJsZV9GQyIgIT0geWVzOyB0aGVuCisgICAjIEFsbG93IENDIHRvIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJndW1lbnRzLgorICAgbHRfc2F2ZV9DQz0iJENDIgorICAgbHRfc2F2ZV9HQ0M9JEdDQworKyAgbHRfc2F2ZV9DRkxBR1M9JENGTEFHUworICAgQ0M9JHtGQy0iZjk1In0KKysgIENGTEFHUz0kRkNGTEFHUworICAgY29tcGlsZXI9JENDCisgICBHQ0M9JGFjX2N2X2ZjX2NvbXBpbGVyX2dudQorIAorQEAgLTY5MjEsNyArNzM0OSw4IEBAIGlmIHRlc3QgIiRfbHRfZGlzYWJsZV9GQyIgIT0geWVzOyB0aGVuCisgICBmaSAjIHRlc3QgLW4gIiRjb21waWxlciIKKyAKKyAgIEdDQz0kbHRfc2F2ZV9HQ0MKKy0gIENDPSIkbHRfc2F2ZV9DQyIKKysgIENDPSRsdF9zYXZlX0NDCisrICBDRkxBR1M9JGx0X3NhdmVfQ0ZMQUdTCisgZmkgIyB0ZXN0ICIkX2x0X2Rpc2FibGVfRkMiICE9IHllcworIAorIEFDX0xBTkdfUE9QCitAQCAtNjk1OCwxMCArNzM4NywxMiBAQCBfTFRfQ09NUElMRVJfQk9JTEVSUExBVEUKKyBfTFRfTElOS0VSX0JPSUxFUlBMQVRFCisgCisgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KKy1sdF9zYXZlX0NDPSIkQ0MiCisrbHRfc2F2ZV9DQz0kQ0MKKytsdF9zYXZlX0NGTEFHUz0kQ0ZMQUdTCisgbHRfc2F2ZV9HQ0M9JEdDQworIEdDQz15ZXMKKyBDQz0ke0dDSi0iZ2NqIn0KKytDRkxBR1M9JEdDSkZMQUdTCisgY29tcGlsZXI9JENDCisgX0xUX1RBR1ZBUihjb21waWxlciwgJDEpPSRDQworIF9MVF9UQUdWQVIoTEQsICQxKT0iJExEIgorQEAgLTY5OTIsNyArNzQyMyw4IEBAIGZpCisgQUNfTEFOR19SRVNUT1JFCisgCisgR0NDPSRsdF9zYXZlX0dDQworLUNDPSIkbHRfc2F2ZV9DQyIKKytDQz0kbHRfc2F2ZV9DQworK0NGTEFHUz0kbHRfc2F2ZV9DRkxBR1MKKyBdKSMgX0xUX0xBTkdfR0NKX0NPTkZJRworIAorIAorQEAgLTcwMjcsOSArNzQ1OSwxMSBAQCBfTFRfTElOS0VSX0JPSUxFUlBMQVRFCisgCisgIyBBbGxvdyBDQyB0byBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3VtZW50cy4KKyBsdF9zYXZlX0NDPSIkQ0MiCisrbHRfc2F2ZV9DRkxBR1M9JENGTEFHUworIGx0X3NhdmVfR0NDPSRHQ0MKKyBHQ0M9CisgQ0M9JHtSQy0id2luZHJlcyJ9CisrQ0ZMQUdTPQorIGNvbXBpbGVyPSRDQworIF9MVF9UQUdWQVIoY29tcGlsZXIsICQxKT0kQ0MKKyBfTFRfQ0NfQkFTRU5BTUUoWyRjb21waWxlcl0pCitAQCAtNzA0Miw3ICs3NDc2LDggQEAgZmkKKyAKKyBHQ0M9JGx0X3NhdmVfR0NDCisgQUNfTEFOR19SRVNUT1JFCistQ0M9IiRsdF9zYXZlX0NDIgorK0NDPSRsdF9zYXZlX0NDCisrQ0ZMQUdTPSRsdF9zYXZlX0NGTEFHUworIF0pIyBfTFRfTEFOR19SQ19DT05GSUcKKyAKKyAKK0BAIC03MTAxLDYgKzc1MzYsMTUgQEAgX0xUX0RFQ0woW10sIFtPQkpEVU1QXSwgWzFdLCBbQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXJdKQorIEFDX1NVQlNUKFtPQkpEVU1QXSkKKyBdKQorIAorKyMgX0xUX0RFQ0xfRExMVE9PTAorKyMgLS0tLS0tLS0tLS0tLS0tLQorKyMgRW5zdXJlIERMTFRPT0wgdmFyaWFibGUgaXMgc2V0LgorK200X2RlZnVuKFtfTFRfREVDTF9ETExUT09MXSwKKytbQUNfQ0hFQ0tfVE9PTChETExUT09MLCBkbGx0b29sLCBmYWxzZSkKKyt0ZXN0IC16ICIkRExMVE9PTCIgJiYgRExMVE9PTD1kbGx0b29sCisrX0xUX0RFQ0woW10sIFtETExUT09MXSwgWzFdLCBbRExMIGNyZWF0aW9uIHByb2dyYW1dKQorK0FDX1NVQlNUKFtETExUT09MXSkKKytdKQorIAorICMgX0xUX0RFQ0xfU0VECisgIyAtLS0tLS0tLS0tLS0KK0BAIC03MTk0LDggKzc2MzgsOCBAQCBtNF9kZWZ1bihbX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTXSwKKyAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworIHhzaV9zaGVsbD1ubworICggX2x0X2R1bW15PSJhL2IvYyIKKy0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCistICAgICAgPSBjLGEvYiwsIFwKKysgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisrICAgICAgPSBjLGEvYixiL2MsIFwKKyAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAgJiYgeHNpX3NoZWxsPXllcworQEAgLTcyMzQsMjA2ICs3Njc4LDE2MiBAQCBfTFRfREVDTChbTkwyU1BdLCBbbHRfTkwyU1BdLCBbMV0sIFt0dXJuIG5ld2xpbmVzIGludG8gc3BhY2VzXSlkbmwKKyBdKSMgX0xUX0NIRUNLX1NIRUxMX0ZFQVRVUkVTCisgCisgCistIyBfTFRfUFJPR19YU0lfU0hFTExGTlMKKy0jIC0tLS0tLS0tLS0tLS0tLS0tLS0tLQorLSMgQm91cm5lIGFuZCBYU0kgY29tcGF0aWJsZSB2YXJpYW50cyBvZiBzb21lIHVzZWZ1bCBzaGVsbCBmdW5jdGlvbnMuCistbTRfZGVmdW4oW19MVF9QUk9HX1hTSV9TSEVMTEZOU10sCistW2Nhc2UgJHhzaV9zaGVsbCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorLQorLSMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorLSMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKy0jIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKy1mdW5jX2Rpcm5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfYmFzZW5hbWUgZmlsZQorLWZ1bmNfYmFzZW5hbWUgKCkKKy17CistICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD0iJHsxIyMqL30iCistfQorLQorLSMgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIHBlcmZvcm0gZnVuY19iYXNlbmFtZSBhbmQgZnVuY19kaXJuYW1lIGluIGEgc2luZ2xlIGZ1bmN0aW9uCistIyBjYWxsOgorLSMgICBkaXJuYW1lOiAgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksCistIyAgICAgICAgICAgICBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsIG90aGVyd2lzZSBzZXQgcmVzdWx0CistIyAgICAgICAgICAgICB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1cm5lZCBpbiAiJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistIyAgIGJhc2VuYW1lOiBDb21wdXRlIGZpbGVuYW1lIG9mIEZJTEUuCistIyAgICAgICAgICAgICB2YWx1ZSByZXR1bmVkIGluICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistIyBJbXBsZW1lbnRhdGlvbiBtdXN0IGJlIGtlcHQgc3luY2hyb25pemVkIHdpdGggZnVuY19kaXJuYW1lCistIyBhbmQgZnVuY19iYXNlbmFtZS4gRm9yIGVmZmljaWVuY3ksIHdlIGRvIG5vdCBkZWxlZ2F0ZSB0bworLSMgdGhvc2UgZnVuY3Rpb25zIGJ1dCBpbnN0ZWFkIGR1cGxpY2F0ZSB0aGUgZnVuY3Rpb25hbGl0eSBoZXJlLgorLWZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkKKy17CistICBjYXNlICR7MX0gaW4KKy0gICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKy0gICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworLSAgZXNhYworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICAjIHBka3NoIDUuMi4xNCBkb2VzIG5vdCBkbyAke1glJFl9IGNvcnJlY3RseSBpZiBib3RoIFggYW5kIFkgYXJlCistICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuCistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0IyIkezF9In0KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9CistfQorLQorLSMgZnVuY19vcHRfc3BsaXQKKy1mdW5jX29wdF9zcGxpdCAoKQorLXsKKy0gIGZ1bmNfb3B0X3NwbGl0X29wdD0kezElJT0qfQorLSAgZnVuY19vcHRfc3BsaXRfYXJnPSR7MSMqPX0KKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICoubG8pIGZ1bmNfbG8yb19yZXN1bHQ9JHsxJS5sb30uJHtvYmpleHR9IDs7CistICAgICopICAgIGZ1bmNfbG8yb19yZXN1bHQ9JHsxfSA7OworLSAgZXNhYworLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvCistfQorLQorLSMgZnVuY19hcml0aCBhcml0aG1ldGljLXRlcm0uLi4KKy1mdW5jX2FyaXRoICgpCisteworLSAgZnVuY19hcml0aF9yZXN1bHQ9JCgoICRbKl0gKSkKKy19CistCistIyBmdW5jX2xlbiBzdHJpbmcKKy0jIFNUUklORyBtYXkgbm90IHN0YXJ0IHdpdGggYSBoeXBoZW4uCistZnVuY19sZW4gKCkKKy17CistICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX0KKy19CisrIyBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFIChGVU5DTkFNRSwgUkVQTEFDRU1FTlQtQk9EWSkKKysjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyMgSW4gYCRjZmdmaWxlJywgbG9vayBmb3IgZnVuY3Rpb24gRlVOQ05BTUUgZGVsaW1pdGVkIGJ5IGBeRlVOQ05BTUUgKCkkJyBhbmQKKysjICdefSBGVU5DTkFNRSAnLCBhbmQgcmVwbGFjZSBpdHMgYm9keSB3aXRoIFJFUExBQ0VNRU5ULUJPRFkuCisrbTRfZGVmdW4oW19MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0VdLAorK1tkbmwgeworK3NlZCAtZSAnL14kMSAoKSQvLC9efSAjICQxIC9jXAorKyQxICgpXAorK3tcCisrbTRfYnBhdHN1YnN0cyhbJDJdLCBbJF0sIFtcXF0sIFteXChbCSBdXCldLCBbXFxcMV0pCisrfSAjIEV4dGVuZGVkLXNoZWxsICQxIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrXSkKKyAKKy1fTFRfRU9GCistICAgIDs7CistICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKyAKKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistfQorKyMgX0xUX1BST0dfUkVQTEFDRV9TSEVMTEZOUworKyMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorKyMgUmVwbGFjZSBleGlzdGluZyBwb3J0YWJsZSBpbXBsZW1lbnRhdGlvbnMgb2Ygc2V2ZXJhbCBzaGVsbCBmdW5jdGlvbnMgd2l0aAorKyMgZXF1aXZhbGVudCBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbnMgd2hlcmUgdGhvc2UgZmVhdHVyZXMgYXJlIGF2YWlsYWJsZS4uCisrbTRfZGVmdW4oW19MVF9QUk9HX1JFUExBQ0VfU0hFTExGTlNdLAorK1tpZiB0ZXN0IHgiJHhzaV9zaGVsbCIgPSB4eWVzOyB0aGVuCisrICBfTFRfUFJPR19GVU5DVElPTl9SRVBMQUNFKFtmdW5jX2Rpcm5hbWVdLCBbZG5sCisrICAgIGNhc2UgJHsxfSBpbgorKyAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CisrICAgICAgKiAgKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IiA7OworKyAgICBlc2FjXSkKKysKKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYmFzZW5hbWVdLCBbZG5sCisrICAgIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSJdKQorKworKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZV0sIFtkbmwKKysgICAgY2FzZSAkezF9IGluCisrICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOzsKKysgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7CisrICAgIGVzYWMKKysgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99Il0pCisgCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRiYXNlbmFtZSJgCistfQorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zdHJpcG5hbWVdLCBbZG5sCisrICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmUKKysgICAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHszfQorKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifQorKyAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifV0pCisgCistZG5sIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUKKy1kbmwgQSBwb3J0YWJsZSB2ZXJzaW9uIG9mIHRoaXMgZnVuY3Rpb24gaXMgYWxyZWFkeSBkZWZpbmVkIGluIGdlbmVyYWwubTRzaAorLWRubCBzbyB0aGVyZSBpcyBubyBuZWVkIGZvciBpdCBoZXJlLgorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY19zcGxpdF9sb25nX29wdF0sIFtkbmwKKysgICAgZnVuY19zcGxpdF9sb25nX29wdF9uYW1lPSR7MSUlPSp9CisrICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1dKQorIAorLSMgZnVuY19zdHJpcG5hbWUgcHJlZml4IHN1ZmZpeCBuYW1lCistIyBzdHJpcCBQUkVGSVggYW5kIFNVRkZJWCBvZmYgb2YgTkFNRS4KKy0jIFBSRUZJWCBhbmQgU1VGRklYIG11c3Qgbm90IGNvbnRhaW4gZ2xvYmJpbmcgb3IgcmVnZXggc3BlY2lhbAorLSMgY2hhcmFjdGVycywgaGFzaGVzLCBwZXJjZW50IHNpZ25zLCBidXQgU1VGRklYIG1heSBjb250YWluIGEgbGVhZGluZworLSMgZG90IChpbiB3aGljaCBjYXNlIHRoYXQgbWF0Y2hlcyBvbmx5IGEgZG90KS4KKy0jIGZ1bmNfc3RyaXBfc3VmZml4IHByZWZpeCBuYW1lCistZnVuY19zdHJpcG5hbWUgKCkKKy17CistICBjYXNlICR7Mn0gaW4KKy0gICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKy0gICAgKikgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJSR7Mn1cJCUlImA7OworLSAgZXNhYworLX0KKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfc3BsaXRfc2hvcnRfb3B0XSwgW2RubAorKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fQorKyAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9uYW1lPSR7MSUiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyJ9XSkKKyAKKy0jIHNlZCBzY3JpcHRzOgorLW15X3NlZF9sb25nX29wdD0nMXMvXlwoLVtbXj1dXSpcKT0uKi9cMS87cScKKy1teV9zZWRfbG9uZ19hcmc9JzFzL14tW1tePV1dKj0vLycKKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfbG8yb10sIFtkbmwKKysgICAgY2FzZSAkezF9IGluCisrICAgICAgKi5sbykgZnVuY19sbzJvX3Jlc3VsdD0kezElLmxvfS4ke29iamV4dH0gOzsKKysgICAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKysgICAgZXNhY10pCisgCistIyBmdW5jX29wdF9zcGxpdAorLWZ1bmNfb3B0X3NwbGl0ICgpCisteworLSAgZnVuY19vcHRfc3BsaXRfb3B0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJG15X3NlZF9sb25nX2FyZyJgCistfQorKyAgX0xUX1BST0dfRlVOQ1RJT05fUkVQTEFDRShbZnVuY194Zm9ybV0sIFsgICAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sb10pCisgCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorLX0KKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXJpdGhdLCBbICAgIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkWypdICkpXSkKKyAKKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLltbXi5dXSokLy5sby8nYAorLX0KKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfbGVuXSwgWyAgICBmdW5jX2xlbl9yZXN1bHQ9JHsjMX1dKQorK2ZpCisgCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJFtAXSJgCistfQorK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXBwZW5kXSwgWyAgICBldmFsICIkezF9Kz1cXCR7Mn0iXSkKKyAKKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJFsxXSIgOiAiLioiIDI+L2Rldi9udWxsIHx8IGVjaG8gJG1heF9jbWRfbGVuYAorLX0KKysgIF9MVF9QUk9HX0ZVTkNUSU9OX1JFUExBQ0UoW2Z1bmNfYXBwZW5kX3F1b3RlZF0sIFtkbmwKKysgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSIKKytkbmwgbTQgZXhwYW5zaW9uIHR1cm5zIFxcXFwgaW50byBcXCwgYW5kIHRoZW4gdGhlIHNoZWxsIGV2YWwgdHVybnMgdGhhdCBpbnRvIFwKKysgICAgZXZhbCAiJHsxfSs9XFxcXCBcXCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCJdKQorIAorLV9MVF9FT0YKKy1lc2FjCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbW2EtekEtWl9dXVx7MSxcfVwpICIlXDErPSIlZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytlbHNlCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgZXZlbiB3aGVuICcrPScgaXMgbm90IGF2YWlsYWJsZQorKyAgc2VkIC1lICdzJWZ1bmNfYXBwZW5kIFwoW1thLXpBLVpfXV1cezEsXH1cKSAiJVwxPSIkXDElZycgJGNmZ2ZpbGUgPiAkY2ZnZmlsZS50bXAgXAorKyAgICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorKyAgdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKytmaQorIAorLWNhc2UgJGx0X3NoZWxsX2FwcGVuZCBpbgorLSAgeWVzKQorLSAgICBjYXQgPDwgXF9MVF9FT0YgPj4gIiRjZmdmaWxlIgorK2lmIHRlc3QgeCIkX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbCIgPSB4IjoiOyB0aGVuCisrICBBQ19NU0dfV0FSTihbVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZV0pCisrZmkKKytdKQorIAorLSMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCistIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCistZnVuY19hcHBlbmQgKCkKKy17CistICBldmFsICIkWzFdKz1cJFsyXSIKKy19CistX0xUX0VPRgorKyMgX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlMKKysjIC0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCisrIyBEZXRlcm1pbmUgd2hpY2ggZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb25zIHNob3VsZCBiZSB1c2VkIGJ5CisrIyBmdW5jX3RvX2hvc3RfZmlsZSAoYW5kLCBpbXBsaWNpdGx5LCBieSBmdW5jX3RvX2hvc3RfcGF0aCkuICBUaGVzZSBhcmUgbmVlZGVkCisrIyBmb3IgY2VydGFpbiBjcm9zcy1jb21waWxlIGNvbmZpZ3VyYXRpb25zIGFuZCBuYXRpdmUgbWluZ3cuCisrbTRfZGVmdW4oW19MVF9QQVRIX0NPTlZFUlNJT05fRlVOQ1RJT05TXSwKKytbQUNfUkVRVUlSRShbQUNfQ0FOT05JQ0FMX0hPU1RdKWRubAorK0FDX1JFUVVJUkUoW0FDX0NBTk9OSUNBTF9CVUlMRF0pZG5sCisrQUNfTVNHX0NIRUNLSU5HKFtob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXRdKQorK0FDX0NBQ0hFX1ZBTChsdF9jdl90b19ob3N0X2ZpbGVfY21kLAorK1tjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b193MzIKKysgICAgICAgIDs7CisrICAgIGVzYWMKKyAgICAgOzsKKy0gICopCistICAgIGNhdCA8PCBcX0xUX0VPRiA+PiAiJGNmZ2ZpbGUiCistCistIyBmdW5jX2FwcGVuZCB2YXIgdmFsdWUKKy0jIEFwcGVuZCBWQUxVRSB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUi4KKy1mdW5jX2FwcGVuZCAoKQorLXsKKy0gIGV2YWwgIiRbMV09XCQkWzFdXCRbMl0iCistfQorLQorLV9MVF9FT0YKKysgICotKi1jeWd3aW4qICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luCisrICAgICAgICA7OworKyAgICAgICotKi1jeWd3aW4qICkKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICAgICAgOzsKKysgICAgICAqICkgIyBvdGhlcndpc2UsIGFzc3VtZSAqbml4CisrICAgICAgICBsdF9jdl90b19ob3N0X2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgIGVzYWMKKyAgICAgOzsKKy0gIGVzYWMKKysgICogKSAjIHVuaGFuZGxlZCBob3N0cyAoYW5kICJub3JtYWwiIG5hdGl2ZSBidWlsZHMpCisrICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcAorKyAgICA7OworK2VzYWMKKytdKQorK3RvX2hvc3RfZmlsZV9jbWQ9JGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQKKytBQ19NU0dfUkVTVUxUKFskbHRfY3ZfdG9faG9zdF9maWxlX2NtZF0pCisrX0xUX0RFQ0woW3RvX2hvc3RfZmlsZV9jbWRdLCBbbHRfY3ZfdG9faG9zdF9maWxlX2NtZF0sCisrICAgICAgICAgWzBdLCBbY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXRdKWRubAorKworK0FDX01TR19DSEVDS0lORyhbaG93IHRvIGNvbnZlcnQgJGJ1aWxkIGZpbGUgbmFtZXMgdG8gdG9vbGNoYWluIGZvcm1hdF0pCisrQUNfQ0FDSEVfVkFMKGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQsCisrWyNhc3N1bWUgb3JkaW5hcnkgY3Jvc3MgdG9vbHMsIG9yIG5hdGl2ZSBidWlsZC4KKytsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX25vb3AKKytjYXNlICRob3N0IGluCisrICAqLSotbWluZ3cqICkKKysgICAgY2FzZSAkYnVpbGQgaW4KKysgICAgICAqLSotbWluZ3cqICkgIyBhY3R1YWxseSBtc3lzCisrICAgICAgICBsdF9jdl90b190b29sX2ZpbGVfY21kPWZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgICA7OworKyAgICBlc2FjCisrICAgIDs7CisrZXNhYworIF0pCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorK0FDX01TR19SRVNVTFQoWyRsdF9jdl90b190b29sX2ZpbGVfY21kXSkKKytfTFRfREVDTChbdG9fdG9vbF9maWxlX2NtZF0sIFtsdF9jdl90b190b29sX2ZpbGVfY21kXSwKKysgICAgICAgICBbMF0sIFtjb252ZXJ0ICRidWlsZCBmaWxlcyB0byB0b29sY2hhaW4gZm9ybWF0XSlkbmwKKytdKSMgX0xUX1BBVEhfQ09OVkVSU0lPTl9GVU5DVElPTlMKK2RpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKK2luZGV4IDk1MDNlYzg1ZDcwLi43MGU4NTZlMDY1OSAxMDA2NDQKKy0tLSBhL2x0bWFpbi5zaAorKysrIGIvbHRtYWluLnNoCitAQCAtMSwxMCArMSw5IEBACistIyBHZW5lcmF0ZWQgZnJvbSBsdG1haW4ubTRzaC4KKyAKKy0jIGxpYnRvb2wgKEdOVSBsaWJ0b29sIDEuMzEzNCAyMDA5LTExLTI5KSAyLjIuN2EKKysjIGxpYnRvb2wgKEdOVSBsaWJ0b29sKSAyLjQKKyAjIFdyaXR0ZW4gYnkgR29yZG9uIE1hdHppZ2tlaXQgPGdvcmRAZ251LmFpLm1pdC5lZHU+LCAxOTk2CisgCisgIyBDb3B5cmlnaHQgKEMpIDE5OTYsIDE5OTcsIDE5OTgsIDE5OTksIDIwMDAsIDIwMDEsIDIwMDMsIDIwMDQsIDIwMDUsIDIwMDYsCistIyAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgMjAwNywgMjAwOCwgMjAwOSwgMjAxMCBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KKyAjIFRoaXMgaXMgZnJlZSBzb2Z0d2FyZTsgc2VlIHRoZSBzb3VyY2UgZm9yIGNvcHlpbmcgY29uZGl0aW9ucy4gIFRoZXJlIGlzIE5PCisgIyB3YXJyYW50eTsgbm90IGV2ZW4gZm9yIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KKyAKK0BAIC0zOCw3ICszNyw2IEBACisgIyAgIC1uLCAtLWRyeS1ydW4gICAgICAgICAgICBkaXNwbGF5IGNvbW1hbmRzIHdpdGhvdXQgbW9kaWZ5aW5nIGFueSBmaWxlcworICMgICAgICAgLS1mZWF0dXJlcyAgICAgICAgICAgZGlzcGxheSBiYXNpYyBjb25maWd1cmF0aW9uIGluZm9ybWF0aW9uIGFuZCBleGl0CisgIyAgICAgICAtLW1vZGU9TU9ERSAgICAgICAgICB1c2Ugb3BlcmF0aW9uIG1vZGUgTU9ERQorLSMgICAgICAgLS1uby1maW5pc2ggICAgICAgICAgbGV0IGluc3RhbGwgbW9kZSBhdm9pZCBmaW5pc2ggY29tbWFuZHMKKyAjICAgICAgIC0tcHJlc2VydmUtZHVwLWRlcHMgIGRvbid0IHJlbW92ZSBkdXBsaWNhdGUgZGVwZW5kZW5jeSBsaWJyYXJpZXMKKyAjICAgICAgIC0tcXVpZXQsIC0tc2lsZW50ICAgIGRvbid0IHByaW50IGluZm9ybWF0aW9uYWwgbWVzc2FnZXMKKyAjICAgICAgIC0tbm8tcXVpZXQsIC0tbm8tc2lsZW50CitAQCAtNzEsMTcgKzY5LDE5IEBACisgIyAgICAgICAgIGNvbXBpbGVyOgkJJExUQ0MKKyAjICAgICAgICAgY29tcGlsZXIgZmxhZ3M6CQkkTFRDRkxBR1MKKyAjICAgICAgICAgbGlua2VyOgkJJExEIChnbnU/ICR3aXRoX2dudV9sZCkKKy0jICAgICAgICAgJHByb2duYW1lOgkoR05VIGxpYnRvb2wgMS4zMTM0IDIwMDktMTEtMjkpIDIuMi43YQorKyMgICAgICAgICAkcHJvZ25hbWU6CShHTlUgbGlidG9vbCkgMi40CisgIyAgICAgICAgIGF1dG9tYWtlOgkkYXV0b21ha2VfdmVyc2lvbgorICMgICAgICAgICBhdXRvY29uZjoJJGF1dG9jb25mX3ZlcnNpb24KKyAjCisgIyBSZXBvcnQgYnVncyB0byA8YnVnLWxpYnRvb2xAZ251Lm9yZz4uCisrIyBHTlUgbGlidG9vbCBob21lIHBhZ2U6IDxodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlidG9vbC8+LgorKyMgR2VuZXJhbCBoZWxwIHVzaW5nIEdOVSBzb2Z0d2FyZTogPGh0dHA6Ly93d3cuZ251Lm9yZy9nZXRoZWxwLz4uCisgCisgUFJPR1JBTT1saWJ0b29sCisgUEFDS0FHRT1saWJ0b29sCistVkVSU0lPTj0yLjIuN2EKKy1USU1FU1RBTVA9IiAxLjMxMzQgMjAwOS0xMS0yOSIKKy1wYWNrYWdlX3JldmlzaW9uPTEuMzEzNAorK1ZFUlNJT049Mi40CisrVElNRVNUQU1QPSIiCisrcGFja2FnZV9yZXZpc2lvbj0xLjMyOTMKKyAKKyAjIEJlIEJvdXJuZSBjb21wYXRpYmxlCisgaWYgdGVzdCAtbiAiJHtaU0hfVkVSU0lPTitzZXR9IiAmJiAoZW11bGF0ZSBzaCkgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCitAQCAtMTA2LDkgKzEwNiw2IEBAIF9MVEVDSE9fRU9GJworIH0KKyAKKyAjIE5MUyBudWlzYW5jZXM6IFdlIHNhdmUgdGhlIG9sZCB2YWx1ZXMgdG8gcmVzdG9yZSBkdXJpbmcgZXhlY3V0ZSBtb2RlLgorLSMgT25seSBzZXQgTEFORyBhbmQgTENfQUxMIHRvIEMgaWYgYWxyZWFkeSBzZXQuCistIyBUaGVzZSBtdXN0IG5vdCBiZSBzZXQgdW5jb25kaXRpb25hbGx5IGJlY2F1c2Ugbm90IGFsbCBzeXN0ZW1zIHVuZGVyc3RhbmQKKy0jIGUuZy4gTEFORz1DIChub3RhYmx5IFNDTykuCisgbHRfdXNlcl9sb2NhbGU9CisgbHRfc2FmZV9sb2NhbGU9CisgZm9yIGx0X3ZhciBpbiBMQU5HIExBTkdVQUdFIExDX0FMTCBMQ19DVFlQRSBMQ19DT0xMQVRFIExDX01FU1NBR0VTCitAQCAtMTIxLDE1ICsxMTgsMTMgQEAgZG8KKyAJICBsdF9zYWZlX2xvY2FsZT1cIiRsdF92YXI9QzsgXCRsdF9zYWZlX2xvY2FsZVwiCisgCWZpIgorIGRvbmUKKytMQ19BTEw9QworK0xBTkdVQUdFPUMKKytleHBvcnQgTEFOR1VBR0UgTENfQUxMCisgCisgJGx0X3Vuc2V0IENEUEFUSAorIAorIAorLQorLQorLQorLQorLQorICMgV29yayBhcm91bmQgYmFja3dhcmQgY29tcGF0aWJpbGl0eSBpc3N1ZSBvbiBJUklYIDYuNS4gT24gSVJJWCA2LjQrLCBzaAorICMgaXMga3NoIGJ1dCB3aGVuIHRoZSBzaGVsbCBpcyBpbnZva2VkIGFzICJzaCIgYW5kIHRoZSBjdXJyZW50IHZhbHVlIG9mCisgIyB0aGUgX1hQRyBlbnZpcm9ubWVudCB2YXJpYWJsZSBpcyBub3QgZXF1YWwgdG8gMSAob25lKSwgdGhlIHNwZWNpYWwKK0BAIC0xNDAsNyArMTM1LDcgQEAgcHJvZ3BhdGg9IiQwIgorIAorIAorIDogJHtDUD0iY3AgLWYifQorLTogJHtFQ0hPPSRhc19lY2hvfQorK3Rlc3QgIiR7RUNITytzZXR9IiA9IHNldCB8fCBFQ0hPPSR7YXNfZWNoby0ncHJpbnRmICVzXG4nfQorIDogJHtFR1JFUD0iL2Jpbi9ncmVwIC1FIn0KKyA6ICR7RkdSRVA9Ii9iaW4vZ3JlcCAtRiJ9CisgOiAke0dSRVA9Ii9iaW4vZ3JlcCJ9CitAQCAtMTQ5LDcgKzE0NCw3IEBAIHByb2dwYXRoPSIkMCIKKyA6ICR7TUtESVI9Im1rZGlyIn0KKyA6ICR7TVY9Im12IC1mIn0KKyA6ICR7Uk09InJtIC1mIn0KKy06ICR7U0VEPSIvbW91bnQvZW5kb3Ivd2lsZGVuaHUvbG9jYWwteDg2XzY0L2Jpbi9zZWQifQorKzogJHtTRUQ9Ii9iaW4vc2VkIn0KKyA6ICR7U0hFTEw9IiR7Q09ORklHX1NIRUxMLS9iaW4vc2h9In0KKyA6ICR7WHNlZD0iJFNFRCAtZSAxcy9eWC8vIn0KKyAKK0BAIC0xNjksNiArMTY0LDI3IEBAIElGUz0iIAkkbHRfbmwiCisgZGlybmFtZT0icywvW14vXSokLCwiCisgYmFzZW5hbWU9InMsXi4qLywsIgorIAorKyMgZnVuY19kaXJuYW1lIGZpbGUgYXBwZW5kIG5vbmRpcl9yZXBsYWNlbWVudAorKyMgQ29tcHV0ZSB0aGUgZGlybmFtZSBvZiBGSUxFLiAgSWYgbm9uZW1wdHksIGFkZCBBUFBFTkQgdG8gdGhlIHJlc3VsdCwKKysjIG90aGVyd2lzZSBzZXQgcmVzdWx0IHRvIE5PTkRJUl9SRVBMQUNFTUVOVC4KKytmdW5jX2Rpcm5hbWUgKCkKKyt7CisrICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKysgICAgaWYgdGVzdCAiWCRmdW5jX2Rpcm5hbWVfcmVzdWx0IiA9ICJYJHsxfSI7IHRoZW4KKysgICAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorKyAgICBlbHNlCisrICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQkezJ9IgorKyAgICBmaQorK30gIyBmdW5jX2Rpcm5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisrIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKytmdW5jX2Jhc2VuYW1lICgpCisreworKyAgICBmdW5jX2Jhc2VuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGJhc2VuYW1lImAKKyt9ICMgZnVuY19iYXNlbmFtZSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysKKyAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CisgIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorICMgY2FsbDoKK0BAIC0xODMsMTcgKzE5OSwzMSBAQCBiYXNlbmFtZT0icyxeLiovLCwiCisgIyB0aG9zZSBmdW5jdGlvbnMgYnV0IGluc3RlYWQgZHVwbGljYXRlIHRoZSBmdW5jdGlvbmFsaXR5IGhlcmUuCisgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSAoKQorIHsKKy0gICMgRXh0cmFjdCBzdWJkaXJlY3RvcnkgZnJvbSB0aGUgYXJndW1lbnQuCistICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkZGlybmFtZSJgCistICBpZiB0ZXN0ICJYJGZ1bmNfZGlybmFtZV9yZXN1bHQiID0gIlgkezF9IjsgdGhlbgorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezN9IgorLSAgZWxzZQorLSAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdCR7Mn0iCistICBmaQorLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRiYXNlbmFtZSJgCistfQorKyAgICAjIEV4dHJhY3Qgc3ViZGlyZWN0b3J5IGZyb20gdGhlIGFyZ3VtZW50LgorKyAgICBmdW5jX2Rpcm5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEIC1lICIkZGlybmFtZSJgCisrICAgIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCisrICAgICAgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIKKysgICAgZWxzZQorKyAgICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKysgICAgZmkKKysgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgLWUgIiRiYXNlbmFtZSJgCisrfSAjIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisrIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKysjIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorKyMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCisrIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCisrIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorKyMgZnVuY19zdHJpcF9zdWZmaXggcHJlZml4IG5hbWUKKytmdW5jX3N0cmlwbmFtZSAoKQorK3sKKysgICAgY2FzZSAkezJ9IGluCisrICAgICAgLiopIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD1gJEVDSE8gIiR7M30iIHwgJFNFRCAicyVeJHsxfSUlOyBzJVxcXFwkezJ9XCQlJSJgOzsKKysgICAgICAqKSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PWAkRUNITyAiJHszfSIgfCAkU0VEICJzJV4kezF9JSU7IHMlJHsyfVwkJSUiYDs7CisrICAgIGVzYWMKKyt9ICMgZnVuY19zdHJpcG5hbWUgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisgCistIyBHZW5lcmF0ZWQgc2hlbGwgZnVuY3Rpb25zIGluc2VydGVkIGhlcmUuCisgCisgIyBUaGVzZSBTRUQgc2NyaXB0cyBwcmVzdXBwb3NlIGFuIGFic29sdXRlIHBhdGggd2l0aCBhIHRyYWlsaW5nIHNsYXNoLgorIHBhdGhjYXI9J3MsXi9cKFteL10qXCkuKiQsXDEsJworQEAgLTM3Niw2ICs0MDYsMTUgQEAgc2VkX3F1b3RlX3N1YnN0PSdzL1woW2AiJFxcXVwpL1xcXDEvZycKKyAjIFNhbWUgYXMgYWJvdmUsIGJ1dCBkbyBub3QgcXVvdGUgdmFyaWFibGUgcmVmZXJlbmNlcy4KKyBkb3VibGVfcXVvdGVfc3Vic3Q9J3MvXChbImBcXF1cKS9cXFwxL2cnCisgCisrIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgdHVybnMgYSBzdHJpbmcgaW50byBhIHJlZ2V4IG1hdGNoaW5nIGZvciB0aGUKKysjIHN0cmluZyBsaXRlcmFsbHkuCisrc2VkX21ha2VfbGl0ZXJhbF9yZWdleD0ncyxbXS5bXiRcXCpcL10sXFwmLGcnCisrCisrIyBTZWQgc3Vic3RpdHV0aW9uIHRoYXQgY29udmVydHMgYSB3MzIgZmlsZSBuYW1lIG9yIHBhdGgKKysjIHdoaWNoIGNvbnRhaW5zIGZvcndhcmQgc2xhc2hlcywgaW50byBvbmUgdGhhdCBjb250YWlucworKyMgKGVzY2FwZWQpIGJhY2tzbGFzaGVzLiAgQSB2ZXJ5IG5haXZlIGltcGxlbWVudGF0aW9uLgorK2x0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnk9J3N8XFxcXCp8XFx8ZztzfC98XFx8ZztzfFxcfFxcXFx8ZycKKysKKyAjIFJlLWBcJyBwYXJhbWV0ZXIgZXhwYW5zaW9ucyBpbiBvdXRwdXQgb2YgZG91YmxlX3F1b3RlX3N1YnN0IHRoYXQgd2VyZQorICMgYFwnLWVkIGluIGlucHV0IHRvIHRoZSBzYW1lLiAgSWYgYW4gb2RkIG51bWJlciBvZiBgXCcgcHJlY2VkZWQgYSAnJCcKKyAjIGluIGlucHV0IHRvIGRvdWJsZV9xdW90ZV9zdWJzdCwgdGhhdCAnJCcgd2FzIHByb3RlY3RlZCBmcm9tIGV4cGFuc2lvbi4KK0BAIC00MDQsNyArNDQzLDcgQEAgb3B0X3dhcm5pbmc9OgorICMgbmFtZSBpZiBpdCBoYXMgYmVlbiBzZXQgeWV0LgorIGZ1bmNfZWNobyAoKQorIHsKKy0gICAgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogJCoiCisrICAgICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9JCoiCisgfQorIAorICMgZnVuY192ZXJib3NlIGFyZy4uLgorQEAgLTQzMCwxNCArNDY5LDE0IEBAIGZ1bmNfZWNob19hbGwgKCkKKyAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IuCisgZnVuY19lcnJvciAoKQorIHsKKy0gICAgJEVDSE8gIiRwcm9nbmFtZSR7bW9kZSs6IH0kbW9kZTogIiR7MSsiJEAifSAxPiYyCisrICAgICRFQ0hPICIkcHJvZ25hbWU6ICR7b3B0X21vZGUrJG9wdF9tb2RlOiB9IiR7MSsiJEAifSAxPiYyCisgfQorIAorICMgZnVuY193YXJuaW5nIGFyZy4uLgorICMgRWNobyBwcm9ncmFtIG5hbWUgcHJlZml4ZWQgd2FybmluZyBtZXNzYWdlIHRvIHN0YW5kYXJkIGVycm9yLgorIGZ1bmNfd2FybmluZyAoKQorIHsKKy0gICAgJG9wdF93YXJuaW5nICYmICRFQ0hPICIkcHJvZ25hbWUke21vZGUrOiB9JG1vZGU6IHdhcm5pbmc6ICIkezErIiRAIn0gMT4mMgorKyAgICAkb3B0X3dhcm5pbmcgJiYgJEVDSE8gIiRwcm9nbmFtZTogJHtvcHRfbW9kZSskb3B0X21vZGU6IH13YXJuaW5nOiAiJHsxKyIkQCJ9IDE+JjIKKyAKKyAgICAgIyBiYXNoIGJ1ZyBhZ2FpbjoKKyAgICAgOgorQEAgLTY1NiwxOSArNjk1LDM1IEBAIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAoKQorICAgICBmaQorIH0KKyAKKy0KKy0KKysjIGZ1bmNfdHJfc2gKKysjIFR1cm4gJDEgaW50byBhIHN0cmluZyBzdWl0YWJsZSBmb3IgYSBzaGVsbCB2YXJpYWJsZSBuYW1lLgorKyMgUmVzdWx0IGlzIHN0b3JlZCBpbiAkZnVuY190cl9zaF9yZXN1bHQuICBBbGwgY2hhcmFjdGVycworKyMgbm90IGluIHRoZSBzZXQgYS16QS1aMC05XyBhcmUgcmVwbGFjZWQgd2l0aCAnXycuIEZ1cnRoZXIsCisrIyBpZiAkMSBiZWdpbnMgd2l0aCBhIGRpZ2l0LCBhICdfJyBpcyBwcmVwZW5kZWQgYXMgd2VsbC4KKytmdW5jX3RyX3NoICgpCisreworKyAgY2FzZSAkMSBpbgorKyAgWzAtOV0qIHwgKlshYS16QS1aMC05X10qKQorKyAgICBmdW5jX3RyX3NoX3Jlc3VsdD1gJEVDSE8gIiQxIiB8ICRTRUQgJ3MvXlwoWzAtOV1cKS9fXDEvOyBzL1teYS16QS1aMC05X10vXy9nJ2AKKysgICAgOzsKKysgICogKQorKyAgICBmdW5jX3RyX3NoX3Jlc3VsdD0kMQorKyAgICA7OworKyAgZXNhYworK30KKyAKKyAKKyAjIGZ1bmNfdmVyc2lvbgorICMgRWNobyB2ZXJzaW9uIG1lc3NhZ2UgdG8gc3RhbmRhcmQgb3V0cHV0IGFuZCBleGl0LgorIGZ1bmNfdmVyc2lvbiAoKQorIHsKKysgICAgJG9wdF9kZWJ1ZworKworICAgICAkU0VEIC1uICcvKEMpLyFiIGdvCisgCTptb3JlCisgCS9cLi8heworIAkgIE4KKy0JICBzL1xuIyAvLworKwkgIHMvXG4jIC8gLworIAkgIGIgbW9yZQorIAl9CisgCTpnbworQEAgLTY4NSw3ICs3NDAsOSBAQCBmdW5jX3ZlcnNpb24gKCkKKyAjIEVjaG8gc2hvcnQgaGVscCBtZXNzYWdlIHRvIHN0YW5kYXJkIG91dHB1dCBhbmQgZXhpdC4KKyBmdW5jX3VzYWdlICgpCisgeworLSAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvXiMgICotaC8geworKyAgICAkb3B0X2RlYnVnCisrCisrICAgICRTRUQgLW4gJy9eIyBVc2FnZTovLC9eIyAgKi4qLS1oZWxwLyB7CisgICAgICAgICBzL14jIC8vCisgCXMvXiMgKiQvLworIAlzL1wkcHJvZ25hbWUvJyRwcm9nbmFtZScvCitAQCAtNzAxLDcgKzc1OCwxMCBAQCBmdW5jX3VzYWdlICgpCisgIyB1bmxlc3MgJ25vZXhpdCcgaXMgcGFzc2VkIGFzIGFyZ3VtZW50LgorIGZ1bmNfaGVscCAoKQorIHsKKysgICAgJG9wdF9kZWJ1ZworKworICAgICAkU0VEIC1uICcvXiMgVXNhZ2U6LywvIyBSZXBvcnQgYnVncyB0by8geworKwk6cHJpbnQKKyAgICAgICAgIHMvXiMgLy8KKyAJcy9eIyAqJC8vCisgCXMqXCRwcm9nbmFtZSonJHByb2duYW1lJyoKK0BAIC03MTQsNyArNzc0LDExIEBAIGZ1bmNfaGVscCAoKQorIAlzL1wkYXV0b21ha2VfdmVyc2lvbi8nImAoYXV0b21ha2UgLS12ZXJzaW9uKSAyPi9kZXYvbnVsbCB8JFNFRCAxcWAiJy8KKyAJcy9cJGF1dG9jb25mX3ZlcnNpb24vJyJgKGF1dG9jb25mIC0tdmVyc2lvbikgMj4vZGV2L251bGwgfCRTRUQgMXFgIicvCisgCXAKKy0gICAgIH0nIDwgIiRwcm9ncGF0aCIKKysJZAorKyAgICAgfQorKyAgICAgL14jIC4qIGhvbWUgcGFnZTovYiBwcmludAorKyAgICAgL14jIEdlbmVyYWwgaGVscCB1c2luZy9iIHByaW50CisrICAgICAnIDwgIiRwcm9ncGF0aCIKKyAgICAgcmV0PSQ/CisgICAgIGlmIHRlc3QgLXogIiQxIjsgdGhlbgorICAgICAgIGV4aXQgJHJldAorQEAgLTcyNiwxMiArNzkwLDM5IEBAIGZ1bmNfaGVscCAoKQorICMgZXhpdF9jbWQuCisgZnVuY19taXNzaW5nX2FyZyAoKQorIHsKKy0gICAgZnVuY19lcnJvciAibWlzc2luZyBhcmd1bWVudCBmb3IgJDEiCisrICAgICRvcHRfZGVidWcKKysKKysgICAgZnVuY19lcnJvciAibWlzc2luZyBhcmd1bWVudCBmb3IgJDEuIgorICAgICBleGl0X2NtZD1leGl0CisgfQorIAorLWV4aXRfY21kPToKKyAKKysjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IHNob3J0b3B0CisrIyBTZXQgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZSBhbmQgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIHNoZWxsCisrIyB2YXJpYWJsZXMgYWZ0ZXIgc3BsaXR0aW5nIFNIT1JUT1BUIGFmdGVyIHRoZSAybmQgY2hhcmFjdGVyLgorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpCisreworKyAgICBteV9zZWRfc2hvcnRfb3B0PScxcy9eXCguLlwpLiokL1wxLztxJworKyAgICBteV9zZWRfc2hvcnRfcmVzdD0nMXMvXi4uXCguKlwpJC9cMS87cScKKysKKysgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfbmFtZT1gJEVDSE8gIiQxIiB8ICRTRUQgIiRteV9zZWRfc2hvcnRfb3B0ImAKKysgICAgZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnPWAkRUNITyAiJDEiIHwgJFNFRCAiJG15X3NlZF9zaG9ydF9yZXN0ImAKKyt9ICMgZnVuY19zcGxpdF9zaG9ydF9vcHQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisrIyBmdW5jX3NwbGl0X2xvbmdfb3B0IGxvbmdvcHQKKysjIFNldCBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWUgYW5kIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnIHNoZWxsCisrIyB2YXJpYWJsZXMgYWZ0ZXIgc3BsaXR0aW5nIExPTkdPUFQgYXQgdGhlIGA9JyBzaWduLgorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKCkKKyt7CisrICAgIG15X3NlZF9sb25nX29wdD0nMXMvXlwoLS1bXj1dKlwpPS4qL1wxLztxJworKyAgICBteV9zZWRfbG9uZ19hcmc9JzFzL14tLVtePV0qPS8vJworKworKyAgICBmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWU9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfb3B0ImAKKysgICAgZnVuY19zcGxpdF9sb25nX29wdF9hcmc9YCRFQ0hPICIkMSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKyt9ICMgZnVuY19zcGxpdF9sb25nX29wdCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKytleGl0X2NtZD06CisgCisgCisgCitAQCAtNzQxLDI2ICs4MzIsNjQgQEAgbWFnaWM9IiUlJU1BR0lDIHZhcmlhYmxlJSUlIgorIG1hZ2ljX2V4ZT0iJSUlTUFHSUMgRVhFIHZhcmlhYmxlJSUlIgorIAorICMgR2xvYmFsIHZhcmlhYmxlcy4KKy0jICRtb2RlIGlzIHVuc2V0Cisgbm9ub3B0PQorLWV4ZWN1dGVfZGxmaWxlcz0KKyBwcmVzZXJ2ZV9hcmdzPQorIGxvMm89InMvXFwubG9cJC8uJHtvYmpleHR9LyIKKyBvMmxvPSJzL1xcLiR7b2JqZXh0fVwkLy5sby8iCisgZXh0cmFjdGVkX2FyY2hpdmVzPQorIGV4dHJhY3RlZF9zZXJpYWw9MAorIAorLW9wdF9kcnlfcnVuPWZhbHNlCistb3B0X2ZpbmlzaD06Cistb3B0X2R1cGxpY2F0ZV9kZXBzPWZhbHNlCistb3B0X3NpbGVudD1mYWxzZQorLW9wdF9kZWJ1Zz06CistCisgIyBJZiB0aGlzIHZhcmlhYmxlIGlzIHNldCBpbiBhbnkgb2YgdGhlIGFjdGlvbnMsIHRoZSBjb21tYW5kIGluIGl0CisgIyB3aWxsIGJlIGV4ZWNlZCBhdCB0aGUgZW5kLiAgVGhpcyBwcmV2ZW50cyBoZXJlLWRvY3VtZW50cyBmcm9tIGJlaW5nCisgIyBsZWZ0IG92ZXIgYnkgc2hlbGxzLgorIGV4ZWNfY21kPQorIAorKyMgZnVuY19hcHBlbmQgdmFyIHZhbHVlCisrIyBBcHBlbmQgVkFMVUUgdG8gdGhlIGVuZCBvZiBzaGVsbCB2YXJpYWJsZSBWQVIuCisrZnVuY19hcHBlbmQgKCkKKyt7CisrICAgIGV2YWwgIiR7MX09XCQkezF9XCR7Mn0iCisrfSAjIGZ1bmNfYXBwZW5kIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKyMgZnVuY19hcHBlbmRfcXVvdGVkIHZhciB2YWx1ZQorKyMgUXVvdGUgVkFMVUUgYW5kIGFwcGVuZCB0byB0aGUgZW5kIG9mIHNoZWxsIHZhcmlhYmxlIFZBUiwgc2VwYXJhdGVkCisrIyBieSBhIHNwYWNlLgorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKQorK3sKKysgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSIKKysgICAgZXZhbCAiJHsxfT1cJCR7MX1cXCBcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorK30gIyBmdW5jX2FwcGVuZF9xdW90ZWQgbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisrIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorK2Z1bmNfYXJpdGggKCkKKyt7CisrICAgIGZ1bmNfYXJpdGhfcmVzdWx0PWBleHByICIke0B9ImAKKyt9ICMgZnVuY19hcml0aCBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysKKysjIGZ1bmNfbGVuIHN0cmluZworKyMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKytmdW5jX2xlbiAoKQorK3sKKysgICAgZnVuY19sZW5fcmVzdWx0PWBleHByICIkezF9IiA6ICIuKiIgMj4vZGV2L251bGwgfHwgZWNobyAkbWF4X2NtZF9sZW5gCisrfSAjIGZ1bmNfbGVuIG1heSBiZSByZXBsYWNlZCBieSBleHRlbmRlZCBzaGVsbCBpbXBsZW1lbnRhdGlvbgorKworKworKyMgZnVuY19sbzJvIG9iamVjdAorK2Z1bmNfbG8ybyAoKQorK3sKKysgICAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorK30gIyBmdW5jX2xvMm8gbWF5IGJlIHJlcGxhY2VkIGJ5IGV4dGVuZGVkIHNoZWxsIGltcGxlbWVudGF0aW9uCisrCisrCisrIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKytmdW5jX3hmb3JtICgpCisreworKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKyt9ICMgZnVuY194Zm9ybSBtYXkgYmUgcmVwbGFjZWQgYnkgZXh0ZW5kZWQgc2hlbGwgaW1wbGVtZW50YXRpb24KKysKKysKKyAjIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiBhcmcuLi4KKyAjIEVjaG8gcHJvZ3JhbSBuYW1lIHByZWZpeGVkIG1lc3NhZ2UgdG8gc3RhbmRhcmQgZXJyb3IsIGZvbGxvd2VkIGJ5CisgIyBhIGNvbmZpZ3VyYXRpb24gZmFpbHVyZSBoaW50LCBhbmQgZXhpdC4KK0BAIC04NTAsMTMwICs5NzksMjA0IEBAIGZ1bmNfZW5hYmxlX3RhZyAoKQorICAgZXNhYworIH0KKyAKKy0jIFBhcnNlIG9wdGlvbnMgb25jZSwgdGhvcm91Z2hseS4gIFRoaXMgY29tZXMgYXMgc29vbiBhcyBwb3NzaWJsZSBpbgorLSMgdGhlIHNjcmlwdCB0byBtYWtlIHRoaW5ncyBsaWtlIGBsaWJ0b29sIC0tdmVyc2lvbicgaGFwcGVuIHF1aWNrbHkuCisrIyBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKysjIEVuc3VyZSB0aGF0IHdlIGFyZSB1c2luZyBtNCBtYWNyb3MsIGFuZCBsaWJ0b29sIHNjcmlwdCBmcm9tIHRoZSBzYW1lCisrIyByZWxlYXNlIG9mIGxpYnRvb2wuCisrZnVuY19jaGVja192ZXJzaW9uX21hdGNoICgpCisgeworKyAgaWYgdGVzdCAiJHBhY2thZ2VfcmV2aXNpb24iICE9ICIkbWFjcm9fcmV2aXNpb24iOyB0aGVuCisrICAgIGlmIHRlc3QgIiRWRVJTSU9OIiAhPSAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCisrICAgICAgaWYgdGVzdCAteiAiJG1hY3JvX3ZlcnNpb24iOyB0aGVuCisrICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorKyRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKKyskcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gYW4gb2xkZXIgcmVsZWFzZS4KKyskcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCisrJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgorK19MVF9FT0YKKysgICAgICBlbHNlCisrICAgICAgICBjYXQgPiYyIDw8X0xUX0VPRgorKyRwcm9nbmFtZTogVmVyc2lvbiBtaXNtYXRjaCBlcnJvci4gIFRoaXMgaXMgJFBBQ0tBR0UgJFZFUlNJT04sIGJ1dCB0aGUKKyskcHJvZ25hbWU6IGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gJFBBQ0tBR0UgJG1hY3JvX3ZlcnNpb24uCisrJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSAkUEFDS0FHRSAkVkVSU0lPTgorKyRwcm9nbmFtZTogYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KKytfTFRfRU9GCisrICAgICAgZmkKKysgICAgZWxzZQorKyAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCisrJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24sCisrJHByb2duYW1lOiBidXQgdGhlIGRlZmluaXRpb24gb2YgdGhpcyBMVF9JTklUIGNvbWVzIGZyb20gcmV2aXNpb24gJG1hY3JvX3JldmlzaW9uLgorKyRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gcmV2aXNpb24gJHBhY2thZ2VfcmV2aXNpb24KKyskcHJvZ25hbWU6IG9mICRQQUNLQUdFICRWRVJTSU9OIGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCisrX0xUX0VPRgorKyAgICBmaQorIAorLSAgIyBTaG9ydGhhbmQgZm9yIC0tbW9kZT1mb28sIG9ubHkgdmFsaWQgYXMgdGhlIGZpcnN0IGFyZ3VtZW50CistICBjYXNlICQxIGluCistICBjbGVhbnxjbGVhfGNsZXxjbCkKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY2xlYW4gJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgY29tcGlsZXxjb21waWx8Y29tcGl8Y29tcHxjb218Y298YykKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgY29tcGlsZSAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICBleGVjdXRlfGV4ZWN1dHxleGVjdXxleGVjfGV4ZXxleHxlKQorLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBleGVjdXRlICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIGZpbmlzaHxmaW5pc3xmaW5pfGZpbnxmaXxmKQorLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBmaW5pc2ggJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgaW5zdGFsbHxpbnN0YWx8aW5zdGF8aW5zdHxpbnN8aW58aSkKKy0gICAgc2hpZnQ7IHNldCBkdW1teSAtLW1vZGUgaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CistICAgIDs7CistICBsaW5rfGxpbnxsaXxsKQorLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBsaW5rICR7MSsiJEAifTsgc2hpZnQKKy0gICAgOzsKKy0gIHVuaW5zdGFsbHx1bmluc3RhbHx1bmluc3RhfHVuaW5zdHx1bmluc3x1bmlufHVuaXx1bnx1KQorLSAgICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSB1bmluc3RhbGwgJHsxKyIkQCJ9OyBzaGlmdAorLSAgICA7OworLSAgZXNhYworKyAgICBleGl0ICRFWElUX01JU01BVENICisrICBmaQorK30KKysKKysKKysjIFNob3J0aGFuZCBmb3IgLS1tb2RlPWZvbywgb25seSB2YWxpZCBhcyB0aGUgZmlyc3QgYXJndW1lbnQKKytjYXNlICQxIGluCisrY2xlYW58Y2xlYXxjbGV8Y2wpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjbGVhbiAkezErIiRAIn07IHNoaWZ0CisrICA7OworK2NvbXBpbGV8Y29tcGlsfGNvbXBpfGNvbXB8Y29tfGNvfGMpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBjb21waWxlICR7MSsiJEAifTsgc2hpZnQKKysgIDs7CisrZXhlY3V0ZXxleGVjdXR8ZXhlY3V8ZXhlY3xleGV8ZXh8ZSkKKysgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGV4ZWN1dGUgJHsxKyIkQCJ9OyBzaGlmdAorKyAgOzsKKytmaW5pc2h8ZmluaXN8ZmluaXxmaW58Zml8ZikKKysgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0CisrICA7OworK2luc3RhbGx8aW5zdGFsfGluc3RhfGluc3R8aW5zfGlufGkpCisrICBzaGlmdDsgc2V0IGR1bW15IC0tbW9kZSBpbnN0YWxsICR7MSsiJEAifTsgc2hpZnQKKysgIDs7CisrbGlua3xsaW58bGl8bCkKKysgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIGxpbmsgJHsxKyIkQCJ9OyBzaGlmdAorKyAgOzsKKyt1bmluc3RhbGx8dW5pbnN0YWx8dW5pbnN0YXx1bmluc3R8dW5pbnN8dW5pbnx1bml8dW58dSkKKysgIHNoaWZ0OyBzZXQgZHVtbXkgLS1tb2RlIHVuaW5zdGFsbCAkezErIiRAIn07IHNoaWZ0CisrICA7OworK2VzYWMKKyAKKy0gICMgUGFyc2Ugbm9uLW1vZGUgc3BlY2lmaWMgYXJndW1lbnRzOgorLSAgd2hpbGUgdGVzdCAiJCMiIC1ndCAwOyBkbworKworKworKyMgT3B0aW9uIGRlZmF1bHRzOgorK29wdF9kZWJ1Zz06Cisrb3B0X2RyeV9ydW49ZmFsc2UKKytvcHRfY29uZmlnPWZhbHNlCisrb3B0X3ByZXNlcnZlX2R1cF9kZXBzPWZhbHNlCisrb3B0X2ZlYXR1cmVzPWZhbHNlCisrb3B0X2ZpbmlzaD1mYWxzZQorK29wdF9oZWxwPWZhbHNlCisrb3B0X2hlbHBfYWxsPWZhbHNlCisrb3B0X3NpbGVudD06Cisrb3B0X3ZlcmJvc2U9OgorK29wdF9zaWxlbnQ9ZmFsc2UKKytvcHRfdmVyYm9zZT1mYWxzZQorKworKworKyMgUGFyc2Ugb3B0aW9ucyBvbmNlLCB0aG9yb3VnaGx5LiAgVGhpcyBjb21lcyBhcyBzb29uIGFzIHBvc3NpYmxlIGluIHRoZQorKyMgc2NyaXB0IHRvIG1ha2UgdGhpbmdzIGxpa2UgYC0tdmVyc2lvbicgaGFwcGVuIGFzIHF1aWNrbHkgYXMgd2UgY2FuLgorK3sKKysgICMgdGhpcyBqdXN0IGVhc2VzIGV4aXQgaGFuZGxpbmcKKysgIHdoaWxlIHRlc3QgJCMgLWd0IDA7IGRvCisgICAgIG9wdD0iJDEiCisgICAgIHNoaWZ0CistCisgICAgIGNhc2UgJG9wdCBpbgorLSAgICAgIC0tY29uZmlnKQkJZnVuY19jb25maWcJCQkJCTs7CistCistICAgICAgLS1kZWJ1ZykJCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCisrICAgICAgLS1kZWJ1Z3wteCkJb3B0X2RlYnVnPSdzZXQgLXgnCisgCQkJZnVuY19lY2hvICJlbmFibGluZyBzaGVsbCB0cmFjZSBtb2RlIgorLQkJCW9wdF9kZWJ1Zz0nc2V0IC14JworIAkJCSRvcHRfZGVidWcKKyAJCQk7OworLQorLSAgICAgIC1kbG9wZW4pCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKKy0JCQlleGVjdXRlX2RsZmlsZXM9IiRleGVjdXRlX2RsZmlsZXMgJDEiCistCQkJc2hpZnQKKysgICAgICAtLWRyeS1ydW58LS1kcnlydW58LW4pCisrCQkJb3B0X2RyeV9ydW49OgorIAkJCTs7CistCistICAgICAgLS1kcnktcnVuIHwgLW4pCW9wdF9kcnlfcnVuPToJCQkJCTs7CistICAgICAgLS1mZWF0dXJlcykgICAgICAgZnVuY19mZWF0dXJlcwkJCQkJOzsKKy0gICAgICAtLWZpbmlzaCkJCW1vZGU9ImZpbmlzaCIJCQkJCTs7CistICAgICAgLS1uby1maW5pc2gpCW9wdF9maW5pc2g9ZmFsc2UJCQkJOzsKKy0KKy0gICAgICAtLW1vZGUpCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKKy0JCQljYXNlICQxIGluCistCQkJICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgorLQkJCSAgY2xlYW4pCTs7CistCQkJICBjb21waWxlKQk7OworLQkJCSAgZXhlY3V0ZSkJOzsKKy0JCQkgIGZpbmlzaCkJOzsKKy0JCQkgIGluc3RhbGwpCTs7CistCQkJICBsaW5rKQkJOzsKKy0JCQkgIHJlbGluaykJOzsKKy0JCQkgIHVuaW5zdGFsbCkJOzsKKy0KKy0JCQkgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgorLQkJCSAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJG9wdCIKKy0JCQkgICAgIGV4aXRfY21kPWV4aXQKKy0JCQkgICAgIGJyZWFrCistCQkJICAgICA7OworLQkJICAgICAgICBlc2FjCistCistCQkJbW9kZT0iJDEiCisrICAgICAgLS1jb25maWcpCisrCQkJb3B0X2NvbmZpZz06CisrZnVuY19jb25maWcKKysJCQk7OworKyAgICAgIC0tZGxvcGVufC1kbG9wZW4pCisrCQkJb3B0YXJnPSIkMSIKKysJCQlvcHRfZGxvcGVuPSIke29wdF9kbG9wZW4rJG9wdF9kbG9wZW4KKyt9JG9wdGFyZyIKKyAJCQlzaGlmdAorIAkJCTs7CistCisgICAgICAgLS1wcmVzZXJ2ZS1kdXAtZGVwcykKKy0JCQlvcHRfZHVwbGljYXRlX2RlcHM9OgkJCQk7OworLQorLSAgICAgIC0tcXVpZXR8LS1zaWxlbnQpCXByZXNlcnZlX2FyZ3M9IiRwcmVzZXJ2ZV9hcmdzICRvcHQiCistCQkJb3B0X3NpbGVudD06CistCQkJb3B0X3ZlcmJvc2U9ZmFsc2UKKysJCQlvcHRfcHJlc2VydmVfZHVwX2RlcHM9OgorIAkJCTs7CistCistICAgICAgLS1uby1xdWlldHwtLW5vLXNpbGVudCkKKy0JCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgorLQkJCW9wdF9zaWxlbnQ9ZmFsc2UKKysgICAgICAtLWZlYXR1cmVzKQorKwkJCW9wdF9mZWF0dXJlcz06CisrZnVuY19mZWF0dXJlcworIAkJCTs7CistCistICAgICAgLS12ZXJib3NlfCAtdikJcHJlc2VydmVfYXJncz0iJHByZXNlcnZlX2FyZ3MgJG9wdCIKKysgICAgICAtLWZpbmlzaCkKKysJCQlvcHRfZmluaXNoPToKKytzZXQgZHVtbXkgLS1tb2RlIGZpbmlzaCAkezErIiRAIn07IHNoaWZ0CisrCQkJOzsKKysgICAgICAtLWhlbHApCisrCQkJb3B0X2hlbHA9OgorKwkJCTs7CisrICAgICAgLS1oZWxwLWFsbCkKKysJCQlvcHRfaGVscF9hbGw9OgorK29wdF9oZWxwPSc6IGhlbHAtYWxsJworKwkJCTs7CisrICAgICAgLS1tb2RlKQorKwkJCXRlc3QgJCMgPSAwICYmIGZ1bmNfbWlzc2luZ19hcmcgJG9wdCAmJiBicmVhaworKwkJCW9wdGFyZz0iJDEiCisrCQkJb3B0X21vZGU9IiRvcHRhcmciCisrY2FzZSAkb3B0YXJnIGluCisrICAjIFZhbGlkIG1vZGUgYXJndW1lbnRzOgorKyAgY2xlYW58Y29tcGlsZXxleGVjdXRlfGZpbmlzaHxpbnN0YWxsfGxpbmt8cmVsaW5rfHVuaW5zdGFsbCkgOzsKKysKKysgICMgQ2F0Y2ggYW55dGhpbmcgZWxzZSBhcyBhbiBlcnJvcgorKyAgKikgZnVuY19lcnJvciAiaW52YWxpZCBhcmd1bWVudCBmb3IgJG9wdCIKKysgICAgIGV4aXRfY21kPWV4aXQKKysgICAgIGJyZWFrCisrICAgICA7OworK2VzYWMKKysJCQlzaGlmdAorKwkJCTs7CisrICAgICAgLS1uby1zaWxlbnR8LS1uby1xdWlldCkKKyAJCQlvcHRfc2lsZW50PWZhbHNlCistCQkJb3B0X3ZlcmJvc2U9OgorK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorIAkJCTs7CistCistICAgICAgLS1uby12ZXJib3NlKQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0IgorKyAgICAgIC0tbm8tdmVyYm9zZSkKKyAJCQlvcHRfdmVyYm9zZT1mYWxzZQorK2Z1bmNfYXBwZW5kIHByZXNlcnZlX2FyZ3MgIiAkb3B0IgorIAkJCTs7CistCistICAgICAgLS10YWcpCQl0ZXN0ICIkIyIgLWVxIDAgJiYgZnVuY19taXNzaW5nX2FyZyAiJG9wdCIgJiYgYnJlYWsKKy0JCQlwcmVzZXJ2ZV9hcmdzPSIkcHJlc2VydmVfYXJncyAkb3B0ICQxIgorLQkJCWZ1bmNfZW5hYmxlX3RhZyAiJDEiCSMgdGFnbmFtZSBpcyBzZXQgaGVyZQorKyAgICAgIC0tc2lsZW50fC0tcXVpZXQpCisrCQkJb3B0X3NpbGVudD06CisrZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQiCisrICAgICAgICBvcHRfdmVyYm9zZT1mYWxzZQorKwkJCTs7CisrICAgICAgLS12ZXJib3NlfC12KQorKwkJCW9wdF92ZXJib3NlPToKKytmdW5jX2FwcGVuZCBwcmVzZXJ2ZV9hcmdzICIgJG9wdCIKKytvcHRfc2lsZW50PWZhbHNlCisrCQkJOzsKKysgICAgICAtLXRhZykKKysJCQl0ZXN0ICQjID0gMCAmJiBmdW5jX21pc3NpbmdfYXJnICRvcHQgJiYgYnJlYWsKKysJCQlvcHRhcmc9IiQxIgorKwkJCW9wdF90YWc9IiRvcHRhcmciCisrZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiICRvcHQgJG9wdGFyZyIKKytmdW5jX2VuYWJsZV90YWcgIiRvcHRhcmciCisgCQkJc2hpZnQKKyAJCQk7OworIAorKyAgICAgIC1cP3wtaCkJCWZ1bmNfdXNhZ2UJCQkJOzsKKysgICAgICAtLWhlbHApCQlmdW5jX2hlbHAJCQkJOzsKKysgICAgICAtLXZlcnNpb24pCWZ1bmNfdmVyc2lvbgkJCQk7OworKworICAgICAgICMgU2VwYXJhdGUgb3B0YXJncyB0byBsb25nIG9wdGlvbnM6CistICAgICAgLWRsb3Blbj0qfC0tbW9kZT0qfC0tdGFnPSopCistCQkJZnVuY19vcHRfc3BsaXQgIiRvcHQiCistCQkJc2V0IGR1bW15ICIkZnVuY19vcHRfc3BsaXRfb3B0IiAiJGZ1bmNfb3B0X3NwbGl0X2FyZyIgJHsxKyIkQCJ9CisrICAgICAgLS0qPSopCisrCQkJZnVuY19zcGxpdF9sb25nX29wdCAiJG9wdCIKKysJCQlzZXQgZHVtbXkgIiRmdW5jX3NwbGl0X2xvbmdfb3B0X25hbWUiICIkZnVuY19zcGxpdF9sb25nX29wdF9hcmciICR7MSsiJEAifQorIAkJCXNoaWZ0CisgCQkJOzsKKyAKKy0gICAgICAtXD98LWgpCQlmdW5jX3VzYWdlCQkJCQk7OworLSAgICAgIC0taGVscCkJCW9wdF9oZWxwPToJCQkJCTs7CistICAgICAgLS1oZWxwLWFsbCkJb3B0X2hlbHA9JzogaGVscC1hbGwnCQkJCTs7CistICAgICAgLS12ZXJzaW9uKQlmdW5jX3ZlcnNpb24JCQkJCTs7CistCistICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIJOzsKKy0KKy0gICAgICAqKQkJbm9ub3B0PSIkb3B0IgorLQkJCWJyZWFrCisrICAgICAgIyBTZXBhcmF0ZSBub24tYXJndW1lbnQgc2hvcnQgb3B0aW9uczoKKysgICAgICAtXD8qfC1oKnwtbip8LXYqKQorKwkJCWZ1bmNfc3BsaXRfc2hvcnRfb3B0ICIkb3B0IgorKwkJCXNldCBkdW1teSAiJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWUiICItJGZ1bmNfc3BsaXRfc2hvcnRfb3B0X2FyZyIgJHsxKyIkQCJ9CisrCQkJc2hpZnQKKyAJCQk7OworKworKyAgICAgIC0tKQkJYnJlYWsJCQkJCTs7CisrICAgICAgLSopCQlmdW5jX2ZhdGFsX2hlbHAgInVucmVjb2duaXplZCBvcHRpb24gXGAkb3B0JyIgOzsKKysgICAgICAqKQkJc2V0IGR1bW15ICIkb3B0IiAkezErIiRAIn07CXNoaWZ0OyBicmVhayAgOzsKKyAgICAgZXNhYworICAgZG9uZQorIAorKyAgIyBWYWxpZGF0ZSBvcHRpb25zOgorKworKyAgIyBzYXZlIGZpcnN0IG5vbi1vcHRpb24gYXJndW1lbnQKKysgIGlmIHRlc3QgIiQjIiAtZ3QgMDsgdGhlbgorKyAgICBub25vcHQ9IiRvcHQiCisrICAgIHNoaWZ0CisrICBmaQorKworKyAgIyBwcmVzZXJ2ZSAtLWRlYnVnCisrICB0ZXN0ICIkb3B0X2RlYnVnIiA9IDogfHwgZnVuY19hcHBlbmQgcHJlc2VydmVfYXJncyAiIC0tZGVidWciCisgCisgICBjYXNlICRob3N0IGluCisgICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpwdzMyKiB8ICpjZWdjYyogfCAqc29sYXJpczIqICkKK0BAIC05ODEsODIgKzExODQsNDQgQEAgZnVuY19lbmFibGVfdGFnICgpCisgICAgICAgb3B0X2R1cGxpY2F0ZV9jb21waWxlcl9nZW5lcmF0ZWRfZGVwcz06CisgICAgICAgOzsKKyAgICAgKikKKy0gICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfZHVwbGljYXRlX2RlcHMKKysgICAgICBvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzPSRvcHRfcHJlc2VydmVfZHVwX2RlcHMKKyAgICAgICA7OworICAgZXNhYworIAorLSAgIyBIYXZpbmcgd2FybmVkIGFib3V0IGFsbCBtaXMtc3BlY2lmaWVkIG9wdGlvbnMsIGJhaWwgb3V0IGlmCistICAjIGFueXRoaW5nIHdhcyB3cm9uZy4KKy0gICRleGl0X2NtZCAkRVhJVF9GQUlMVVJFCistfQorKyAgJG9wdF9oZWxwIHx8IHsKKysgICAgIyBTYW5pdHkgY2hlY2tzIGZpcnN0OgorKyAgICBmdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2gKKyAKKy0jIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAorLSMgRW5zdXJlIHRoYXQgd2UgYXJlIHVzaW5nIG00IG1hY3JvcywgYW5kIGxpYnRvb2wgc2NyaXB0IGZyb20gdGhlIHNhbWUKKy0jIHJlbGVhc2Ugb2YgbGlidG9vbC4KKy1mdW5jX2NoZWNrX3ZlcnNpb25fbWF0Y2ggKCkKKy17CistICBpZiB0ZXN0ICIkcGFja2FnZV9yZXZpc2lvbiIgIT0gIiRtYWNyb19yZXZpc2lvbiI7IHRoZW4KKy0gICAgaWYgdGVzdCAiJFZFUlNJT04iICE9ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KKy0gICAgICBpZiB0ZXN0IC16ICIkbWFjcm9fdmVyc2lvbiI7IHRoZW4KKy0gICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCistJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQorLSRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSBhbiBvbGRlciByZWxlYXNlLgorLSRwcm9nbmFtZTogWW91IHNob3VsZCByZWNyZWF0ZSBhY2xvY2FsLm00IHdpdGggbWFjcm9zIGZyb20gJFBBQ0tBR0UgJFZFUlNJT04KKy0kcHJvZ25hbWU6IGFuZCBydW4gYXV0b2NvbmYgYWdhaW4uCistX0xUX0VPRgorLSAgICAgIGVsc2UKKy0gICAgICAgIGNhdCA+JjIgPDxfTFRfRU9GCistJHByb2duYW1lOiBWZXJzaW9uIG1pc21hdGNoIGVycm9yLiAgVGhpcyBpcyAkUEFDS0FHRSAkVkVSU0lPTiwgYnV0IHRoZQorLSRwcm9nbmFtZTogZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSAkUEFDS0FHRSAkbWFjcm9fdmVyc2lvbi4KKy0kcHJvZ25hbWU6IFlvdSBzaG91bGQgcmVjcmVhdGUgYWNsb2NhbC5tNCB3aXRoIG1hY3JvcyBmcm9tICRQQUNLQUdFICRWRVJTSU9OCistJHByb2duYW1lOiBhbmQgcnVuIGF1dG9jb25mIGFnYWluLgorLV9MVF9FT0YKKy0gICAgICBmaQorLSAgICBlbHNlCistICAgICAgY2F0ID4mMiA8PF9MVF9FT0YKKy0kcHJvZ25hbWU6IFZlcnNpb24gbWlzbWF0Y2ggZXJyb3IuICBUaGlzIGlzICRQQUNLQUdFICRWRVJTSU9OLCByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbiwKKy0kcHJvZ25hbWU6IGJ1dCB0aGUgZGVmaW5pdGlvbiBvZiB0aGlzIExUX0lOSVQgY29tZXMgZnJvbSByZXZpc2lvbiAkbWFjcm9fcmV2aXNpb24uCistJHByb2duYW1lOiBZb3Ugc2hvdWxkIHJlY3JlYXRlIGFjbG9jYWwubTQgd2l0aCBtYWNyb3MgZnJvbSByZXZpc2lvbiAkcGFja2FnZV9yZXZpc2lvbgorLSRwcm9nbmFtZTogb2YgJFBBQ0tBR0UgJFZFUlNJT04gYW5kIHJ1biBhdXRvY29uZiBhZ2Fpbi4KKy1fTFRfRU9GCisrICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiICE9IHllcyAmJiB0ZXN0ICIkYnVpbGRfb2xkX2xpYnMiICE9IHllczsgdGhlbgorKyAgICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAibm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIKKyAgICAgZmkKKyAKKy0gICAgZXhpdCAkRVhJVF9NSVNNQVRDSAorLSAgZmkKKy19CistCisrICAgICMgRGFyd2luIHN1Y2tzCisrICAgIGV2YWwgc3RkX3NocmV4dD1cIiRzaHJleHRfY21kc1wiCisgCistIyMgLS0tLS0tLS0tLS0gIyMKKy0jIyAgICBNYWluLiAgICAjIworLSMjIC0tLS0tLS0tLS0tICMjCistCistJG9wdF9oZWxwIHx8IHsKKy0gICMgU2FuaXR5IGNoZWNrcyBmaXJzdDoKKy0gIGZ1bmNfY2hlY2tfdmVyc2lvbl9tYXRjaAorLQorLSAgaWYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0geWVzICYmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgIT0geWVzOyB0aGVuCistICAgIGZ1bmNfZmF0YWxfY29uZmlndXJhdGlvbiAibm90IGNvbmZpZ3VyZWQgdG8gYnVpbGQgYW55IGtpbmQgb2YgbGlicmFyeSIKKy0gIGZpCisrICAgICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCisrICAgIGlmIHRlc3QgLW4gIiRvcHRfZGxvcGVuIiAmJiB0ZXN0ICIkb3B0X21vZGUiICE9IGV4ZWN1dGU7IHRoZW4KKysgICAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCisrICAgICAgJEVDSE8gIiRoZWxwIiAxPiYyCisrICAgICAgZXhpdCAkRVhJVF9GQUlMVVJFCisrICAgIGZpCisgCistICB0ZXN0IC16ICIkbW9kZSIgJiYgZnVuY19mYXRhbF9lcnJvciAiZXJyb3I6IHlvdSBtdXN0IHNwZWNpZnkgYSBNT0RFLiIKKysgICAgIyBDaGFuZ2UgdGhlIGhlbHAgbWVzc2FnZSB0byBhIG1vZGUtc3BlY2lmaWMgb25lLgorKyAgICBnZW5lcmljX2hlbHA9IiRoZWxwIgorKyAgICBoZWxwPSJUcnkgXGAkcHJvZ25hbWUgLS1oZWxwIC0tbW9kZT0kb3B0X21vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKysgIH0KKyAKKyAKKy0gICMgRGFyd2luIHN1Y2tzCistICBldmFsICJzdGRfc2hyZXh0PVwiJHNocmV4dF9jbWRzXCIiCisrICAjIEJhaWwgaWYgdGhlIG9wdGlvbnMgd2VyZSBzY3Jld2VkCisrICAkZXhpdF9jbWQgJEVYSVRfRkFJTFVSRQorK30KKyAKKyAKKy0gICMgT25seSBleGVjdXRlIG1vZGUgaXMgYWxsb3dlZCB0byBoYXZlIC1kbG9wZW4gZmxhZ3MuCistICBpZiB0ZXN0IC1uICIkZXhlY3V0ZV9kbGZpbGVzIiAmJiB0ZXN0ICIkbW9kZSIgIT0gZXhlY3V0ZTsgdGhlbgorLSAgICBmdW5jX2Vycm9yICJ1bnJlY29nbml6ZWQgb3B0aW9uIFxgLWRsb3BlbiciCistICAgICRFQ0hPICIkaGVscCIgMT4mMgorLSAgICBleGl0ICRFWElUX0ZBSUxVUkUKKy0gIGZpCisgCistICAjIENoYW5nZSB0aGUgaGVscCBtZXNzYWdlIHRvIGEgbW9kZS1zcGVjaWZpYyBvbmUuCistICBnZW5lcmljX2hlbHA9IiRoZWxwIgorLSAgaGVscD0iVHJ5IFxgJHByb2duYW1lIC0taGVscCAtLW1vZGU9JG1vZGUnIGZvciBtb3JlIGluZm9ybWF0aW9uLiIKKy19CisgCisrIyMgLS0tLS0tLS0tLS0gIyMKKysjIyAgICBNYWluLiAgICAjIworKyMjIC0tLS0tLS0tLS0tICMjCisgCisgIyBmdW5jX2xhbGliX3AgZmlsZQorICMgVHJ1ZSBpZmYgRklMRSBpcyBhIGxpYnRvb2wgYC5sYScgbGlicmFyeSBvciBgLmxvJyBvYmplY3QgZmlsZS4KK0BAIC0xMTIxLDEyICsxMjg2LDkgQEAgZnVuY19sdHdyYXBwZXJfZXhlY3V0YWJsZV9wICgpCisgIyB0ZW1wb3JhcnkgbHR3cmFwcGVyX3NjcmlwdC4KKyBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lICgpCisgeworLSAgICBmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iIgorLSAgICBpZiBmdW5jX2x0d3JhcHBlcl9leGVjdXRhYmxlX3AgIiQxIjsgdGhlbgorLQlmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICIkMSIgIiIgIi4iCistCWZ1bmNfc3RyaXBuYW1lICcnICcuZXhlJyAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLQlmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdD0iJGZ1bmNfZGlybmFtZV9yZXN1bHQvJG9iamRpci8ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdH1fbHRzaHdyYXBwZXIiCistICAgIGZpCisrICAgIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgIiQxIiAiIiAiLiIKKysgICAgZnVuY19zdHJpcG5hbWUgJycgJy5leGUnICIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCisrICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0PSIkZnVuY19kaXJuYW1lX3Jlc3VsdC8kb2JqZGlyLyR7ZnVuY19zdHJpcG5hbWVfcmVzdWx0fV9sdHNod3JhcHBlciIKKyB9CisgCisgIyBmdW5jX2x0d3JhcHBlcl9wIGZpbGUKK0BAIC0xMTQ5LDcgKzEzMTEsNyBAQCBmdW5jX2V4ZWN1dGVfY21kcyAoKQorICAgICBzYXZlX2lmcz0kSUZTOyBJRlM9J34nCisgICAgIGZvciBjbWQgaW4gJDE7IGRvCisgICAgICAgSUZTPSRzYXZlX2lmcworLSAgICAgIGV2YWwgImNtZD1cIiRjbWRcIiIKKysgICAgICBldmFsIGNtZD1cIiRjbWRcIgorICAgICAgIGZ1bmNfc2hvd19ldmFsICIkY21kIiAiJHsyLTp9IgorICAgICBkb25lCisgICAgIElGUz0kc2F2ZV9pZnMKK0BAIC0xMTcyLDYgKzEzMzQsMzcgQEAgZnVuY19zb3VyY2UgKCkKKyB9CisgCisgCisrIyBmdW5jX3Jlc29sdmVfc3lzcm9vdCBQQVRICisrIyBSZXBsYWNlIGEgbGVhZGluZyA9IGluIFBBVEggd2l0aCBhIHN5c3Jvb3QuICBTdG9yZSB0aGUgcmVzdWx0IGludG8KKysjIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorK2Z1bmNfcmVzb2x2ZV9zeXNyb290ICgpCisreworKyAgZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0PSQxCisrICBjYXNlICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQgaW4KKysgID0qKQorKyAgICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCisrICAgIGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdD0kbHRfc3lzcm9vdCRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysgICAgOzsKKysgIGVzYWMKKyt9CisrCisrIyBmdW5jX3JlcGxhY2Vfc3lzcm9vdCBQQVRICisrIyBJZiBQQVRIIGJlZ2lucyB3aXRoIHRoZSBzeXNyb290LCByZXBsYWNlIGl0IHdpdGggPSBhbmQKKysjIHN0b3JlIHRoZSByZXN1bHQgaW50byBmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQuCisrZnVuY19yZXBsYWNlX3N5c3Jvb3QgKCkKKyt7CisrICBjYXNlICIkbHRfc3lzcm9vdDokMSIgaW4KKysgID8qOiIkbHRfc3lzcm9vdCIqKQorKyAgICBmdW5jX3N0cmlwbmFtZSAiJGx0X3N5c3Jvb3QiICcnICIkMSIKKysgICAgZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0PSI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysgICAgOzsKKysgICopCisrICAgICMgSW5jbHVkaW5nIG5vIHN5c3Jvb3QuCisrICAgIGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdD0kMQorKyAgICA7OworKyAgZXNhYworK30KKysKKyAjIGZ1bmNfaW5mZXJfdGFnIGFyZworICMgSW5mZXIgdGFnZ2VkIGNvbmZpZ3VyYXRpb24gdG8gdXNlIGlmIGFueSBhcmUgYXZhaWxhYmxlIGFuZAorICMgaWYgb25lIHdhc24ndCBjaG9zZW4gdmlhIHRoZSAiLS10YWciIGNvbW1hbmQgbGluZSBvcHRpb24uCitAQCAtMTE4NCw4ICsxMzc3LDcgQEAgZnVuY19pbmZlcl90YWcgKCkKKyAgICAgaWYgdGVzdCAtbiAiJGF2YWlsYWJsZV90YWdzIiAmJiB0ZXN0IC16ICIkdGFnbmFtZSI7IHRoZW4KKyAgICAgICBDQ19xdW90ZWQ9CisgICAgICAgZm9yIGFyZyBpbiAkQ0M7IGRvCistICAgICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkYXJnIgorLQlDQ19xdW90ZWQ9IiRDQ19xdW90ZWQgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKwlmdW5jX2FwcGVuZF9xdW90ZWQgQ0NfcXVvdGVkICIkYXJnIgorICAgICAgIGRvbmUKKyAgICAgICBDQ19leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NgCisgICAgICAgQ0NfcXVvdGVkX2V4cGFuZGVkPWBmdW5jX2VjaG9fYWxsICRDQ19xdW90ZWRgCitAQCAtMTIwNCw4ICsxMzk2LDcgQEAgZnVuY19pbmZlcl90YWcgKCkKKyAJICAgIENDX3F1b3RlZD0KKyAJICAgIGZvciBhcmcgaW4gJENDOyBkbworIAkgICAgICAjIERvdWJsZS1xdW90ZSBhcmdzIGNvbnRhaW5pbmcgb3RoZXIgc2hlbGwgbWV0YWNoYXJhY3RlcnMuCistCSAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCistCSAgICAgIENDX3F1b3RlZD0iJENDX3F1b3RlZCAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCSAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBDQ19xdW90ZWQgIiRhcmciCisgCSAgICBkb25lCisgCSAgICBDQ19leHBhbmRlZD1gZnVuY19lY2hvX2FsbCAkQ0NgCisgCSAgICBDQ19xdW90ZWRfZXhwYW5kZWQ9YGZ1bmNfZWNob19hbGwgJENDX3F1b3RlZGAKK0BAIC0xMjc0LDYgKzE0NjUsNDg2IEBAIEVPRgorICAgICB9CisgfQorIAorKworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyBGSUxFIE5BTUUgQU5EIFBBVEggQ09OVkVSU0lPTiBIRUxQRVIgRlVOQ1RJT05TICMKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIworKworKyMgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiBBUkcKKysjIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IGZpbGUgbmFtZSBjb252ZXJzaW9uIGZ1bmN0aW9ucyB3aGVuICRidWlsZCBpcyAqbml4LAorKyMgYW5kICRob3N0IGlzIG1pbmd3LCBjeWd3aW4sIG9yIHNvbWUgb3RoZXIgdzMyIGVudmlyb25tZW50LiBSZWxpZXMgb24gYQorKyMgY29ycmVjdGx5IGNvbmZpZ3VyZWQgd2luZSBlbnZpcm9ubWVudCBhdmFpbGFibGUsIHdpdGggdGhlIHdpbmVwYXRoIHByb2dyYW0KKysjIGluICRidWlsZCdzICRQQVRILgorKyMKKysjIEFSRyBpcyB0aGUgJGJ1aWxkIGZpbGUgbmFtZSB0byBiZSBjb252ZXJ0ZWQgdG8gdzMyIGZvcm1hdC4KKysjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0LCBhbmQgd2lsbAorKyMgYmUgZW1wdHkgb24gZXJyb3IgKG9yIHdoZW4gQVJHIGlzIGVtcHR5KQorK2Z1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybyBlcnJvciBjb2RlLCBzbyB3ZQorKyAgICAjIGFyZSBmb3JjZWQgdG8gY2hlY2sgdGhlIGNvbnRlbnRzIG9mIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZQorKyAgICAjIGNvbW1hbmQgaXMgbm90IGZvdW5kLCB0aGUgc2hlbGwgd2lsbCBzZXQgYW4gZXhpdCBjb2RlIG9mIDEyNyBhbmQgcHJpbnQKKysgICAgIyAqYW4gZXJyb3IgbWVzc2FnZSogdG8gc3Rkb3V0LiBTbyB3ZSBtdXN0IGNoZWNrIGZvciBib3RoIGVycm9yIGNvZGUgb2YKKysgICAgIyB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucyB0aGUgb2RkIGNvbnN0cnVjdGlvbjoKKysgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl90bXA9YHdpbmVwYXRoIC13ICIkMSIgMj4vZGV2L251bGxgCisrICAgIGlmIHRlc3QgIiQ/IiAtZXEgMCAmJiB0ZXN0IC1uICIke2Z1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfdG1wfSI7IHRoZW4KKysgICAgICBmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdD1gJEVDSE8gIiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3RtcCIgfAorKyAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorKyAgICBlbHNlCisrICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQ9CisrICAgIGZpCisrICBmaQorK30KKysjIGVuZDogZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMgorKworKworKyMgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiBBUkcKKysjIEhlbHBlciBmdW5jdGlvbiB1c2VkIGJ5IHBhdGggY29udmVyc2lvbiBmdW5jdGlvbnMgd2hlbiAkYnVpbGQgaXMgKm5peCwgYW5kCisrIyAkaG9zdCBpcyBtaW5ndywgY3lnd2luLCBvciBzb21lIG90aGVyIHczMiBlbnZpcm9ubWVudC4gUmVsaWVzIG9uIGEgY29ycmVjdGx5CisrIyBjb25maWd1cmVkIHdpbmUgZW52aXJvbm1lbnQgYXZhaWxhYmxlLCB3aXRoIHRoZSB3aW5lcGF0aCBwcm9ncmFtIGluICRidWlsZCdzCisrIyAkUEFUSC4gQXNzdW1lcyBBUkcgaGFzIG5vIGxlYWRpbmcgb3IgdHJhaWxpbmcgcGF0aCBzZXBhcmF0b3IgY2hhcmFjdGVycy4KKysjCisrIyBBUkcgaXMgcGF0aCB0byBiZSBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvIHdpbjMyLgorKyMgUmVzdWx0IGlzIGF2YWlsYWJsZSBpbiAkZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQuCisrIyBVbmNvbnZlcnRpYmxlIGZpbGUgKGRpcmVjdG9yeSkgbmFtZXMgaW4gQVJHIGFyZSBza2lwcGVkOyBpZiBubyBkaXJlY3RvcnkgbmFtZXMKKysjIGFyZSBjb252ZXJ0aWJsZSwgdGhlbiB0aGUgcmVzdWx0IG1heSBiZSBlbXB0eS4KKytmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgIyB1bmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2Vzbid0IGNvbnZlcnQgcGF0aHMsIG9ubHkgZmlsZSBuYW1lcworKyAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9yZXN1bHQ9IiIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICBvbGRJRlM9JElGUworKyAgICBJRlM9OgorKyAgICBmb3IgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMl9mIGluICQxOyBkbworKyAgICAgIElGUz0kb2xkSUZTCisrICAgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfZiIKKysgICAgICBpZiB0ZXN0IC1uICIkZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMl9yZXN1bHQiIDsgdGhlbgorKyAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IjsgdGhlbgorKyAgICAgICAgICBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdD0iJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorKyAgICAgICAgZWxzZQorKyAgICAgICAgICBmdW5jX2FwcGVuZCBmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCAiOyRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKysgICAgICAgIGZpCisrICAgICAgZmkKKysgICAgZG9uZQorKyAgICBJRlM9JG9sZElGUworKyAgZmkKKyt9CisrIyBlbmQ6IGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIKKysKKysKKysjIGZ1bmNfY3lncGF0aCBBUkdTLi4uCisrIyBXcmFwcGVyIGFyb3VuZCBjYWxsaW5nIHRoZSBjeWdwYXRoIHByb2dyYW0gdmlhIExUX0NZR1BBVEguIFRoaXMgaXMgdXNlZCB3aGVuCisrIyB3aGVuICgxKSAkYnVpbGQgaXMgKm5peCBhbmQgQ3lnd2luIGlzIGhvc3RlZCB2aWEgYSB3aW5lIGVudmlyb25tZW50OyBvciAoMikKKysjICRidWlsZCBpcyBNU1lTIGFuZCAkaG9zdCBpcyBDeWd3aW4sIG9yICgzKSAkYnVpbGQgaXMgQ3lnd2luLiBJbiBjYXNlICgxKSBvcgorKyMgKDIpLCByZXR1cm5zIHRoZSBDeWd3aW4gZmlsZSBuYW1lIG9yIHBhdGggaW4gZnVuY19jeWdwYXRoX3Jlc3VsdCAoaW5wdXQKKysjIGZpbGUgbmFtZSBvciBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgaW4gdzMyIGZvcm1hdCwgYXMgcHJldmlvdXNseSBjb252ZXJ0ZWQKKysjIGZyb20gJGJ1aWxkJ3MgKm5peCBvciBNU1lTIGZvcm1hdCkuIEluIGNhc2UgKDMpLCByZXR1cm5zIHRoZSB3MzIgZmlsZSBuYW1lCisrIyBvciBwYXRoIGluIGZ1bmNfY3lncGF0aF9yZXN1bHQgKGlucHV0IGZpbGUgbmFtZSBvciBwYXRoIGlzIGFzc3VtZWQgdG8gYmUgaW4KKysjIEN5Z3dpbiBmb3JtYXQpLiBSZXR1cm5zIGFuIGVtcHR5IHN0cmluZyBvbiBlcnJvci4KKysjCisrIyBBUkdTIGFyZSBwYXNzZWQgdG8gY3lncGF0aCwgd2l0aCB0aGUgbGFzdCBvbmUgYmVpbmcgdGhlIGZpbGUgbmFtZSBvciBwYXRoIHRvCisrIyBiZSBjb252ZXJ0ZWQuCisrIworKyMgU3BlY2lmeSB0aGUgYWJzb2x1dGUgKm5peCAob3IgdzMyKSBuYW1lIHRvIGN5Z3BhdGggaW4gdGhlIExUX0NZR1BBVEgKKysjIGVudmlyb25tZW50IHZhcmlhYmxlOyBkbyBub3QgcHV0IGl0IGluICRQQVRILgorK2Z1bmNfY3lncGF0aCAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGlmIHRlc3QgLW4gIiRMVF9DWUdQQVRIIiAmJiB0ZXN0IC1mICIkTFRfQ1lHUEFUSCI7IHRoZW4KKysgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD1gJExUX0NZR1BBVEggIiRAIiAyPi9kZXYvbnVsbGAKKysgICAgaWYgdGVzdCAiJD8iIC1uZSAwOyB0aGVuCisrICAgICAgIyBvbiBmYWlsdXJlLCBlbnN1cmUgcmVzdWx0IGlzIGVtcHR5CisrICAgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD0KKysgICAgZmkKKysgIGVsc2UKKysgICAgZnVuY19jeWdwYXRoX3Jlc3VsdD0KKysgICAgZnVuY19lcnJvciAiTFRfQ1lHUEFUSCBpcyBlbXB0eSBvciBzcGVjaWZpZXMgbm9uLWV4aXN0ZW50IGZpbGU6IFxgJExUX0NZR1BBVEgnIgorKyAgZmkKKyt9CisrI2VuZDogZnVuY19jeWdwYXRoCisrCisrCisrIyBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiBBUkcKKysjIENvbnZlcnQgZmlsZSBuYW1lIG9yIHBhdGggQVJHIGZyb20gTVNZUyBmb3JtYXQgdG8gdzMyIGZvcm1hdC4gIFJldHVybgorKyMgcmVzdWx0IGluIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgICMgYXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdAorKyAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0PWAoIGNtZCAvL2MgZWNobyAiJDEiICkgMj4vZGV2L251bGwgfAorKyAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCisrfQorKyNlbmQ6IGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayBBUkcxIEFSRzIKKysjIFZlcmlmeSB0aGF0IEFSRzEgKGEgZmlsZSBuYW1lIGluICRidWlsZCBmb3JtYXQpIHdhcyBjb252ZXJ0ZWQgdG8gJGhvc3QKKysjIGZvcm1hdCBpbiBBUkcyLiBPdGhlcndpc2UsIGVtaXQgYW4gZXJyb3IgbWVzc2FnZSwgYnV0IGNvbnRpbnVlIChyZXNldHRpbmcKKysjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCB0byBBUkcxKS4KKytmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGlmIHRlc3QgLXogIiQyIiAmJiB0ZXN0IC1uICIkMSIgOyB0aGVuCisrICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgaG9zdCBmaWxlIG5hbWUgY29ycmVzcG9uZGluZyB0byIKKysgICAgZnVuY19lcnJvciAiICBcYCQxJyIKKysgICAgZnVuY19lcnJvciAiQ29udGludWluZywgYnV0IHVuaW5zdGFsbGVkIGV4ZWN1dGFibGVzIG1heSBub3Qgd29yay4iCisrICAgICMgRmFsbGJhY2s6CisrICAgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisrICBmaQorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjaworKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgRlJPTV9QQVRIU0VQIFRPX1BBVEhTRVAgRlJPTV9QQVRIIFRPX1BBVEgKKysjIFZlcmlmeSB0aGF0IEZST01fUEFUSCAoYSBwYXRoIGluICRidWlsZCBmb3JtYXQpIHdhcyBjb252ZXJ0ZWQgdG8gJGhvc3QKKysjIGZvcm1hdCBpbiBUT19QQVRILiBPdGhlcndpc2UsIGVtaXQgYW4gZXJyb3IgbWVzc2FnZSwgYnV0IGNvbnRpbnVlLCByZXNldHRpbmcKKysjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCB0byBhIHNpbXBsaXN0aWMgZmFsbGJhY2sgdmFsdWUgKHNlZSBiZWxvdykuCisrZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBpZiB0ZXN0IC16ICIkNCIgJiYgdGVzdCAtbiAiJDMiOyB0aGVuCisrICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aCBjb3JyZXNwb25kaW5nIHRvIgorKyAgICBmdW5jX2Vycm9yICIgIFxgJDMnIgorKyAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKKysgICAgIyBGYWxsYmFjay4gIFRoaXMgaXMgYSBkZWxpYmVyYXRlbHkgc2ltcGxpc3RpYyAiY29udmVyc2lvbiIgYW5kCisrICAgICMgc2hvdWxkIG5vdCBiZSAiaW1wcm92ZWQiLiAgU2VlIGxpYnRvb2wuaW5mby4KKysgICAgaWYgdGVzdCAieCQxIiAhPSAieCQyIjsgdGhlbgorKyAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9jaGFycz0ic3wkMXwkMnxnIgorKyAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gZWNobyAiJDMiIHwKKysgICAgICAgICRTRUQgLWUgIiRsdF9yZXBsYWNlX3BhdGhzZXBfY2hhcnMiYAorKyAgICBlbHNlCisrICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMyIKKysgICAgZmkKKysgIGZpCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrCisrCisrCisrIyBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgRlJPTlRQQVQgQkFDS1BBVCBSRVBMIE9SSUcKKysjIE1vZGlmaWVzIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCBieSBwcmVwZW5kaW5nIFJFUEwgaWYgT1JJRyBtYXRjaGVzIEZST05UUEFUCisrIyBhbmQgYXBwZW5kaW5nIFJFUEwgaWYgT1JJRyBtYXRjaGVzIEJBQ0tQQVQuCisrZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgY2FzZSAkNCBpbgorKyAgJDEgKSBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQzJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKysgICAgOzsKKysgIGVzYWMKKysgIGNhc2UgJDQgaW4KKysgICQyICkgZnVuY19hcHBlbmQgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0ICIkMyIKKysgICAgOzsKKysgIGVzYWMKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwCisrCisrCisrIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjICRidWlsZCB0byAkaG9zdCBGSUxFIE5BTUUgQ09OVkVSU0lPTiBGVU5DVElPTlMgIworKyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisrIyBpbnZva2VkIHZpYSBgJHRvX2hvc3RfZmlsZV9jbWQgQVJHJworKyMKKysjIEluIGVhY2ggY2FzZSwgQVJHIGlzIHRoZSBwYXRoIHRvIGJlIGNvbnZlcnRlZCBmcm9tICRidWlsZCB0byAkaG9zdCBmb3JtYXQuCisrIyBSZXN1bHQgd2lsbCBiZSBhdmFpbGFibGUgaW4gJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKysKKysKKysjIGZ1bmNfdG9faG9zdF9maWxlIEFSRworKyMgQ29udmVydHMgdGhlIGZpbGUgbmFtZSBBUkcgZnJvbSAkYnVpbGQgZm9ybWF0IHRvICRob3N0IGZvcm1hdC4gUmV0dXJuIHJlc3VsdAorKyMgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfdG9faG9zdF9maWxlICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgJHRvX2hvc3RfZmlsZV9jbWQgIiQxIgorK30KKysjIGVuZCBmdW5jX3RvX2hvc3RfZmlsZQorKworKworKyMgZnVuY190b190b29sX2ZpbGUgQVJHIExBWlkKKysjIGNvbnZlcnRzIHRoZSBmaWxlIG5hbWUgQVJHIGZyb20gJGJ1aWxkIGZvcm1hdCB0byB0b29sY2hhaW4gZm9ybWF0LiBSZXR1cm4KKysjIHJlc3VsdCBpbiBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQuICBJZiB0aGUgY29udmVyc2lvbiBpbiB1c2UgaXMgbGlzdGVkCisrIyBpbiAodGhlIGNvbW1hIHNlcGFyYXRlZCkgTEFaWSwgbm8gY29udmVyc2lvbiB0YWtlcyBwbGFjZS4KKytmdW5jX3RvX3Rvb2xfZmlsZSAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGNhc2UgLCQyLCBpbgorKyAgICAqLCIkdG9fdG9vbF9maWxlX2NtZCIsKikKKysgICAgICBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQ9JDEKKysgICAgICA7OworKyAgICAqKQorKyAgICAgICR0b190b29sX2ZpbGVfY21kICIkMSIKKysgICAgICBmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQ9JGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdAorKyAgICAgIDs7CisrICBlc2FjCisrfQorKyMgZW5kIGZ1bmNfdG9fdG9vbF9maWxlCisrCisrCisrIyBmdW5jX2NvbnZlcnRfZmlsZV9ub29wIEFSRworKyMgQ29weSBBUkcgdG8gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9maWxlX25vb3AgKCkKKyt7CisrICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrCisrCisrIyBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiBBUkcKKysjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIChtaW5ndykgTVNZUyB0byAobWluZ3cpIHczMiBmb3JtYXQ7IGF1dG9tYXRpYworKyMgY29udmVyc2lvbiB0byB3MzIgaXMgbm90IGF2YWlsYWJsZSBpbnNpZGUgdGhlIGN3cmFwcGVyLiAgUmV0dXJucyByZXN1bHQgaW4KKysjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzIgIiQxIgorKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMl9yZXN1bHQiCisrICBmaQorKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysKKysKKysjIGZ1bmNfY29udmVydF9maWxlX2N5Z3dpbl90b193MzIgQVJHCisrIyBDb252ZXJ0IGZpbGUgbmFtZSBBUkcgZnJvbSBDeWd3aW4gdG8gdzMyIGZvcm1hdC4gIFJldHVybnMgcmVzdWx0IGluCisrIyBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQuCisrZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMiAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdD0iJDEiCisrICBpZiB0ZXN0IC1uICIkMSI7IHRoZW4KKysgICAgIyBiZWNhdXNlICRidWlsZCBpcyBjeWd3aW4sIHdlIGNhbGwgInRoZSIgY3lncGF0aCBpbiAkUEFUSDsgbm8gbmVlZCB0byB1c2UKKysgICAgIyBMVF9DWUdQQVRIIGluIHRoaXMgY2FzZS4KKysgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PWBjeWdwYXRoIC1tICIkMSJgCisrICBmaQorKyAgZnVuY19jb252ZXJ0X2ZpbGVfY2hlY2sgIiQxIiAiJGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdCIKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X2ZpbGVfY3lnd2luX3RvX3czMgorKworKworKyMgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMiBBUkcKKysjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tICpuaXggdG8gdzMyIGZvcm1hdC4gIFJlcXVpcmVzIGEgd2luZSBlbnZpcm9ubWVudAorKyMgYW5kIGEgd29ya2luZyB3aW5lcGF0aC4gUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9maWxlX25peF90b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgIGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzIgIiQxIgorKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9maWxlX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKysgIGZpCisrICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbiBBUkcKKysjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tIE1TWVMgdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIExUX0NZR1BBVEggc2V0LgorKyMgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9maWxlX21zeXNfdG9fY3lnd2luICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICBmdW5jX2NvbnZlcnRfY29yZV9tc3lzX3RvX3czMiAiJDEiCisrICAgIGZ1bmNfY3lncGF0aCAtdSAiJGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyX3Jlc3VsdCIKKysgICAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkZnVuY19jeWdwYXRoX3Jlc3VsdCIKKysgIGZpCisrICBmdW5jX2NvbnZlcnRfZmlsZV9jaGVjayAiJDEiICIkZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0IgorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX2N5Z3dpbgorKworKworKyMgZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbiBBUkcKKysjIENvbnZlcnQgZmlsZSBuYW1lIEFSRyBmcm9tICpuaXggdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIEN5Z3dpbiBpbnN0YWxsZWQKKysjIGluIGEgd2luZSBlbnZpcm9ubWVudCwgd29ya2luZyB3aW5lcGF0aCwgYW5kIExUX0NZR1BBVEggc2V0LiAgUmV0dXJucyByZXN1bHQKKysjIGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfZmlsZV9uaXhfdG9fY3lnd2luICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIGNvbnZlcnQgZnJvbSAqbml4IHRvIHczMiwgdGhlbiB1c2UgY3lncGF0aCB0byBjb252ZXJ0IGZyb20gdzMyIHRvIGN5Z3dpbi4KKysgICAgZnVuY19jb252ZXJ0X2NvcmVfZmlsZV93aW5lX3RvX3czMiAiJDEiCisrICAgIGZ1bmNfY3lncGF0aCAtdSAiJGZ1bmNfY29udmVydF9jb3JlX2ZpbGVfd2luZV90b193MzJfcmVzdWx0IgorKyAgICBmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorKyAgZmkKKysgIGZ1bmNfY29udmVydF9maWxlX2NoZWNrICIkMSIgIiRmdW5jX3RvX2hvc3RfZmlsZV9yZXN1bHQiCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9maWxlX25peF90b19jeWd3aW4KKysKKysKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjICRidWlsZCB0byAkaG9zdCBQQVRIIENPTlZFUlNJT04gRlVOQ1RJT05TICMKKysjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKysjIGludm9rZWQgdmlhIGAkdG9faG9zdF9wYXRoX2NtZCBBUkcnCisrIworKyMgSW4gZWFjaCBjYXNlLCBBUkcgaXMgdGhlIHBhdGggdG8gYmUgY29udmVydGVkIGZyb20gJGJ1aWxkIHRvICRob3N0IGZvcm1hdC4KKysjIFRoZSByZXN1bHQgd2lsbCBiZSBhdmFpbGFibGUgaW4gJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KKysjCisrIyBQYXRoIHNlcGFyYXRvcnMgYXJlIGFsc28gY29udmVydGVkIGZyb20gJGJ1aWxkIGZvcm1hdCB0byAkaG9zdCBmb3JtYXQuICBJZgorKyMgQVJHIGJlZ2lucyBvciBlbmRzIHdpdGggYSBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXIsIGl0IGlzIHByZXNlcnZlZCAoYnV0CisrIyBjb252ZXJ0ZWQgdG8gJGhvc3QgZm9ybWF0KSBvbiBvdXRwdXQuCisrIworKyMgQWxsIHBhdGggY29udmVyc2lvbiBmdW5jdGlvbnMgYXJlIG5hbWVkIHVzaW5nIHRoZSBmb2xsb3dpbmcgY29udmVudGlvbjoKKysjICAgZmlsZSBuYW1lIGNvbnZlcnNpb24gZnVuY3Rpb24gICAgOiBmdW5jX2NvbnZlcnRfZmlsZV9YX3RvX1kgKCkKKysjICAgcGF0aCBjb252ZXJzaW9uIGZ1bmN0aW9uICAgICAgICAgOiBmdW5jX2NvbnZlcnRfcGF0aF9YX3RvX1kgKCkKKysjIHdoZXJlLCBmb3IgYW55IGdpdmVuICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbiB0aGUgJ1hfdG9fWScgdmFsdWUgaXMgdGhlCisrIyBzYW1lLiAgSWYgY29udmVyc2lvbiBmdW5jdGlvbnMgYXJlIGFkZGVkIGZvciBuZXcgJGJ1aWxkLyRob3N0IGNvbWJpbmF0aW9ucywKKysjIHRoZSB0d28gbmV3IGZ1bmN0aW9ucyBtdXN0IGZvbGxvdyB0aGlzIHBhdHRlcm4sIG9yIGZ1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kCisrIyB3aWxsIGJyZWFrLgorKworKworKyMgZnVuY19pbml0X3RvX2hvc3RfcGF0aF9jbWQKKysjIEVuc3VyZXMgdGhhdCBmdW5jdGlvbiAicG9pbnRlciIgdmFyaWFibGUgJHRvX2hvc3RfcGF0aF9jbWQgaXMgc2V0IHRvIHRoZQorKyMgYXBwcm9wcmlhdGUgdmFsdWUsIGJhc2VkIG9uIHRoZSB2YWx1ZSBvZiAkdG9faG9zdF9maWxlX2NtZC4KKyt0b19ob3N0X3BhdGhfY21kPQorK2Z1bmNfaW5pdF90b19ob3N0X3BhdGhfY21kICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgaWYgdGVzdCAteiAiJHRvX2hvc3RfcGF0aF9jbWQiOyB0aGVuCisrICAgIGZ1bmNfc3RyaXBuYW1lICdmdW5jX2NvbnZlcnRfZmlsZV8nICcnICIkdG9faG9zdF9maWxlX2NtZCIKKysgICAgdG9faG9zdF9wYXRoX2NtZD0iZnVuY19jb252ZXJ0X3BhdGhfJHtmdW5jX3N0cmlwbmFtZV9yZXN1bHR9IgorKyAgZmkKKyt9CisrCisrCisrIyBmdW5jX3RvX2hvc3RfcGF0aCBBUkcKKysjIENvbnZlcnRzIHRoZSBwYXRoIEFSRyBmcm9tICRidWlsZCBmb3JtYXQgdG8gJGhvc3QgZm9ybWF0LiBSZXR1cm4gcmVzdWx0CisrIyBpbiBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQuCisrZnVuY190b19ob3N0X3BhdGggKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX2luaXRfdG9faG9zdF9wYXRoX2NtZAorKyAgJHRvX2hvc3RfcGF0aF9jbWQgIiQxIgorK30KKysjIGVuZCBmdW5jX3RvX2hvc3RfcGF0aAorKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfbm9vcCBBUkcKKysjIENvcHkgQVJHIHRvIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfcGF0aF9ub29wICgpCisreworKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbm9vcAorKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIgQVJHCisrIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gKG1pbmd3KSBNU1lTIHRvIChtaW5ndykgdzMyIGZvcm1hdDsgYXV0b21hdGljCisrIyBjb252ZXJzaW9uIHRvIHczMiBpcyBub3QgYXZhaWxhYmxlIGluc2lkZSB0aGUgY3dyYXBwZXIuICBSZXR1cm5zIHJlc3VsdCBpbgorKyMgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorK2Z1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20gQVJHLiAgTVNZUworKyAgICAjIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlOyBjeWdwYXRoIHR1cm5zIHRoZW0gaW50byAnLjsnIGFuZCAnOy4nOworKyAgICAjIGFuZCB3aW5lcGF0aCBpZ25vcmVzIHRoZW0gY29tcGxldGVseS4KKysgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6ICI7IiBcCisrICAgICAgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfZnJvbnRfYmFja19wYXRoc2VwICI6KiIgIio6IiAiOyIgIiQxIgorKyAgZmkKKyt9CisrIyBlbmQgZnVuY19jb252ZXJ0X3BhdGhfbXN5c190b193MzIKKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIgQVJHCisrIyBDb252ZXJ0IHBhdGggQVJHIGZyb20gQ3lnd2luIHRvIHczMiBmb3JtYXQuICBSZXR1cm5zIHJlc3VsdCBpbgorKyMgZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9wYXRoX2N5Z3dpbl90b193MzIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorKyAgaWYgdGVzdCAtbiAiJDEiOyB0aGVuCisrICAgICMgU2VlIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fdzMyOgorKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBjeWdwYXRoIC1tIC1wICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSJgCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2NoZWNrIDogIjsiIFwKKysgICAgICAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9mcm9udF9iYWNrX3BhdGhzZXAgIjoqIiAiKjoiICI7IiAiJDEiCisrICBmaQorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9jeWd3aW5fdG9fdzMyCisrCisrCisrIyBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyIEFSRworKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tICpuaXggdG8gdzMyIGZvcm1hdC4gIFJlcXVpcmVzIGEgd2luZSBlbnZpcm9ubWVudCBhbmQKKysjIGEgd29ya2luZyB3aW5lcGF0aC4gIFJldHVybnMgcmVzdWx0IGluIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fdzMyICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKKysgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrICAgIGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzIgIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIgorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2NvbnZlcnRfY29yZV9wYXRoX3dpbmVfdG9fdzMyX3Jlc3VsdCIKKysgICAgZnVuY19jb252ZXJ0X3BhdGhfY2hlY2sgOiAiOyIgXAorKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgIjsiICIkMSIKKysgIGZpCisrfQorKyMgZW5kIGZ1bmNfY29udmVydF9wYXRoX25peF90b193MzIKKysKKysKKysjIGZ1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luIEFSRworKyMgQ29udmVydCBwYXRoIEFSRyBmcm9tIE1TWVMgdG8gQ3lnd2luIGZvcm1hdC4gIFJlcXVpcmVzIExUX0NZR1BBVEggc2V0LgorKyMgUmV0dXJucyByZXN1bHQgaW4gZnVuY190b19ob3N0X2ZpbGVfcmVzdWx0LgorK2Z1bmNfY29udmVydF9wYXRoX21zeXNfdG9fY3lnd2luICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIFNlZSBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX3czMjoKKysgICAgZnVuY19zdHJpcG5hbWUgOiA6ICIkMSIKKysgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrICAgIGZ1bmNfY29udmVydF9jb3JlX21zeXNfdG9fdzMyICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIKKysgICAgZnVuY19jeWdwYXRoIC11IC1wICIkZnVuY19jb252ZXJ0X2NvcmVfbXN5c190b193MzJfcmVzdWx0IgorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6IDogXAorKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgOiAiJDEiCisrICBmaQorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9tc3lzX3RvX2N5Z3dpbgorKworKworKyMgZnVuY19jb252ZXJ0X3BhdGhfbml4X3RvX2N5Z3dpbiBBUkcKKysjIENvbnZlcnQgcGF0aCBBUkcgZnJvbSAqbml4IHRvIEN5Z3dpbiBmb3JtYXQuICBSZXF1aXJlcyBDeWd3aW4gaW5zdGFsbGVkIGluIGEKKysjIGEgd2luZSBlbnZpcm9ubWVudCwgd29ya2luZyB3aW5lcGF0aCwgYW5kIExUX0NZR1BBVEggc2V0LiAgUmV0dXJucyByZXN1bHQgaW4KKysjIGZ1bmNfdG9faG9zdF9maWxlX3Jlc3VsdC4KKytmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKysgIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorKyAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KKysgICAgIyBBUkcuIG1zeXMgYmVoYXZpb3IgaXMgaW5jb25zaXN0ZW50IGhlcmUsIGN5Z3BhdGggdHVybnMgdGhlbQorKyAgICAjIGludG8gJy47JyBhbmQgJzsuJywgYW5kIHdpbmVwYXRoIGlnbm9yZXMgdGhlbSBjb21wbGV0ZWx5LgorKyAgICBmdW5jX3N0cmlwbmFtZSA6IDogIiQxIgorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF90bXAxPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysgICAgZnVuY19jb252ZXJ0X2NvcmVfcGF0aF93aW5lX3RvX3czMiAiJGZ1bmNfdG9faG9zdF9wYXRoX3RtcDEiCisrICAgIGZ1bmNfY3lncGF0aCAtdSAtcCAiJGZ1bmNfY29udmVydF9jb3JlX3BhdGhfd2luZV90b193MzJfcmVzdWx0IgorKyAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiRmdW5jX2N5Z3BhdGhfcmVzdWx0IgorKyAgICBmdW5jX2NvbnZlcnRfcGF0aF9jaGVjayA6IDogXAorKyAgICAgICIkZnVuY190b19ob3N0X3BhdGhfdG1wMSIgIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiCisrICAgIGZ1bmNfY29udmVydF9wYXRoX2Zyb250X2JhY2tfcGF0aHNlcCAiOioiICIqOiIgOiAiJDEiCisrICBmaQorK30KKysjIGVuZCBmdW5jX2NvbnZlcnRfcGF0aF9uaXhfdG9fY3lnd2luCisrCisrCisgIyBmdW5jX21vZGVfY29tcGlsZSBhcmcuLi4KKyBmdW5jX21vZGVfY29tcGlsZSAoKQorIHsKK0BAIC0xMzE0LDEyICsxOTg1LDEyIEBAIGZ1bmNfbW9kZV9jb21waWxlICgpCisgCSAgOzsKKyAKKyAJLXBpZSB8IC1mcGllIHwgLWZQSUUpCistICAgICAgICAgIHBpZV9mbGFnPSIkcGllX2ZsYWcgJGFyZyIKKysgICAgICAgICAgZnVuY19hcHBlbmQgcGllX2ZsYWcgIiAkYXJnIgorIAkgIGNvbnRpbnVlCisgCSAgOzsKKyAKKyAJLXNoYXJlZCB8IC1zdGF0aWMgfCAtcHJlZmVyLXBpYyB8IC1wcmVmZXItbm9uLXBpYykKKy0JICBsYXRlcj0iJGxhdGVyICRhcmciCisrCSAgZnVuY19hcHBlbmQgbGF0ZXIgIiAkYXJnIgorIAkgIGNvbnRpbnVlCisgCSAgOzsKKyAKK0BAIC0xMzQwLDE1ICsyMDExLDE0IEBAIGZ1bmNfbW9kZV9jb21waWxlICgpCisgCSAgc2F2ZV9pZnM9IiRJRlMiOyBJRlM9JywnCisgCSAgZm9yIGFyZyBpbiAkYXJnczsgZG8KKyAJICAgIElGUz0iJHNhdmVfaWZzIgorLQkgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKy0JICAgIGxhc3Rhcmc9IiRsYXN0YXJnICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBsYXN0YXJnICIkYXJnIgorIAkgIGRvbmUKKyAJICBJRlM9IiRzYXZlX2lmcyIKKyAJICBmdW5jX3N0cmlwbmFtZSAnICcgJycgIiRsYXN0YXJnIgorIAkgIGxhc3Rhcmc9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorIAorIAkgICMgQWRkIHRoZSBhcmd1bWVudHMgdG8gYmFzZV9jb21waWxlLgorLQkgIGJhc2VfY29tcGlsZT0iJGJhc2VfY29tcGlsZSAkbGFzdGFyZyIKKysJICBmdW5jX2FwcGVuZCBiYXNlX2NvbXBpbGUgIiAkbGFzdGFyZyIKKyAJICBjb250aW51ZQorIAkgIDs7CisgCitAQCAtMTM2NCw4ICsyMDM0LDcgQEAgZnVuY19tb2RlX2NvbXBpbGUgKCkKKyAgICAgICBlc2FjICAgICMgIGNhc2UgJGFyZ19tb2RlCisgCisgICAgICAgIyBBZXN0aGV0aWNhbGx5IHF1b3RlIHRoZSBwcmV2aW91cyBhcmd1bWVudC4KKy0gICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkbGFzdGFyZyIKKy0gICAgICBiYXNlX2NvbXBpbGU9IiRiYXNlX2NvbXBpbGUgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKyAgICAgIGZ1bmNfYXBwZW5kX3F1b3RlZCBiYXNlX2NvbXBpbGUgIiRsYXN0YXJnIgorICAgICBkb25lICMgZm9yIGFyZworIAorICAgICBjYXNlICRhcmdfbW9kZSBpbgorQEAgLTE0OTYsMTcgKzIxNjUsMTYgQEAgY29tcGlsZXIuIgorIAkkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0CisgCWV4aXQgJEVYSVRfRkFJTFVSRQorICAgICAgIGZpCistICAgICAgcmVtb3ZlbGlzdD0iJHJlbW92ZWxpc3QgJG91dHB1dF9vYmoiCisrICAgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRvdXRwdXRfb2JqIgorICAgICAgICRFQ0hPICIkc3JjZmlsZSIgPiAiJGxvY2tmaWxlIgorICAgICBmaQorIAorICAgICAkb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0CistICAgIHJlbW92ZWxpc3Q9IiRyZW1vdmVsaXN0ICRsb2NrZmlsZSIKKysgICAgZnVuY19hcHBlbmQgcmVtb3ZlbGlzdCAiICRsb2NrZmlsZSIKKyAgICAgdHJhcCAnJG9wdF9kcnlfcnVuIHx8ICRSTSAkcmVtb3ZlbGlzdDsgZXhpdCAkRVhJVF9GQUlMVVJFJyAxIDIgMTUKKyAKKy0gICAgaWYgdGVzdCAtbiAiJGZpeF9zcmNmaWxlX3BhdGgiOyB0aGVuCistICAgICAgZXZhbCAic3JjZmlsZT1cIiRmaXhfc3JjZmlsZV9wYXRoXCIiCistICAgIGZpCisrICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkc3JjZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgc3JjZmlsZT0kZnVuY190b190b29sX2ZpbGVfcmVzdWx0CisgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRzcmNmaWxlIgorICAgICBxc3JjZmlsZT0kZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQKKyAKK0BAIC0xNTI2LDcgKzIxOTQsNyBAQCBjb21waWxlci4iCisgCisgICAgICAgaWYgdGVzdCAteiAiJG91dHB1dF9vYmoiOyB0aGVuCisgCSMgUGxhY2UgUElDIG9iamVjdHMgaW4gJG9iamRpcgorLQljb21tYW5kPSIkY29tbWFuZCAtbyAkbG9iaiIKKysJZnVuY19hcHBlbmQgY29tbWFuZCAiIC1vICRsb2JqIgorICAgICAgIGZpCisgCisgICAgICAgZnVuY19zaG93X2V2YWxfbG9jYWxlICIkY29tbWFuZCIJXAorQEAgLTE1NzMsMTEgKzIyNDEsMTEgQEAgY29tcGlsZXIuIgorIAljb21tYW5kPSIkYmFzZV9jb21waWxlICRxc3JjZmlsZSAkcGljX2ZsYWciCisgICAgICAgZmkKKyAgICAgICBpZiB0ZXN0ICIkY29tcGlsZXJfY19vIiA9IHllczsgdGhlbgorLQljb21tYW5kPSIkY29tbWFuZCAtbyAkb2JqIgorKwlmdW5jX2FwcGVuZCBjb21tYW5kICIgLW8gJG9iaiIKKyAgICAgICBmaQorIAorICAgICAgICMgU3VwcHJlc3MgY29tcGlsZXIgb3V0cHV0IGlmIHdlIGFscmVhZHkgZGlkIGEgUElDIGNvbXBpbGF0aW9uLgorLSAgICAgIGNvbW1hbmQ9IiRjb21tYW5kJHN1cHByZXNzX291dHB1dCIKKysgICAgICBmdW5jX2FwcGVuZCBjb21tYW5kICIkc3VwcHJlc3Nfb3V0cHV0IgorICAgICAgIGZ1bmNfc2hvd19ldmFsX2xvY2FsZSAiJGNvbW1hbmQiIFwKKyAgICAgICAgICckb3B0X2RyeV9ydW4gfHwgJFJNICRyZW1vdmVsaXN0OyBleGl0ICRFWElUX0ZBSUxVUkUnCisgCitAQCAtMTYyMiwxMyArMjI5MCwxMyBAQCBjb21waWxlci4iCisgfQorIAorICRvcHRfaGVscCB8fCB7CistICB0ZXN0ICIkbW9kZSIgPSBjb21waWxlICYmIGZ1bmNfbW9kZV9jb21waWxlICR7MSsiJEAifQorKyAgdGVzdCAiJG9wdF9tb2RlIiA9IGNvbXBpbGUgJiYgZnVuY19tb2RlX2NvbXBpbGUgJHsxKyIkQCJ9CisgfQorIAorIGZ1bmNfbW9kZV9oZWxwICgpCisgeworICAgICAjIFdlIG5lZWQgdG8gZGlzcGxheSBoZWxwIGZvciBlYWNoIG9mIHRoZSBtb2Rlcy4KKy0gICAgY2FzZSAkbW9kZSBpbgorKyAgICBjYXNlICRvcHRfbW9kZSBpbgorICAgICAgICIiKQorICAgICAgICAgIyBHZW5lcmljIGhlbHAgaXMgZXh0cmFjdGVkIGZyb20gdGhlIHVzYWdlIGNvbW1lbnRzCisgICAgICAgICAjIGF0IHRoZSBzdGFydCBvZiB0aGlzIGZpbGUuCitAQCAtMTY1OSw4ICsyMzI3LDggQEAgVGhpcyBtb2RlIGFjY2VwdHMgdGhlIGZvbGxvd2luZyBhZGRpdGlvbmFsIG9wdGlvbnM6CisgCisgICAtbyBPVVRQVVQtRklMRSAgICBzZXQgdGhlIG91dHB1dCBmaWxlIG5hbWUgdG8gT1VUUFVULUZJTEUKKyAgIC1uby1zdXBwcmVzcyAgICAgIGRvIG5vdCBzdXBwcmVzcyBjb21waWxlciBvdXRwdXQgZm9yIG11bHRpcGxlIHBhc3NlcworLSAgLXByZWZlci1waWMgICAgICAgdHJ5IHRvIGJ1aWxkaW5nIFBJQyBvYmplY3RzIG9ubHkKKy0gIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZGluZyBub24tUElDIG9iamVjdHMgb25seQorKyAgLXByZWZlci1waWMgICAgICAgdHJ5IHRvIGJ1aWxkIFBJQyBvYmplY3RzIG9ubHkKKysgIC1wcmVmZXItbm9uLXBpYyAgIHRyeSB0byBidWlsZCBub24tUElDIG9iamVjdHMgb25seQorICAgLXNoYXJlZCAgICAgICAgICAgZG8gbm90IGJ1aWxkIGEgXGAubycgZmlsZSBzdWl0YWJsZSBmb3Igc3RhdGljIGxpbmtpbmcKKyAgIC1zdGF0aWMgICAgICAgICAgIG9ubHkgYnVpbGQgYSBcYC5vJyBmaWxlIHN1aXRhYmxlIGZvciBzdGF0aWMgbGlua2luZworICAgLVdjLEZMQUcgICAgICAgICAgcGFzcyBGTEFHIGRpcmVjdGx5IHRvIHRoZSBjb21waWxlcgorQEAgLTE4MDQsNyArMjQ3Miw3IEBAIE90aGVyd2lzZSwgb25seSBGSUxFIGl0c2VsZiBpcyBkZWxldGVkIHVzaW5nIFJNLiIKKyAgICAgICAgIDs7CisgCisgICAgICAgKikKKy0gICAgICAgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKKysgICAgICAgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRvcHRfbW9kZSciCisgICAgICAgICA7OworICAgICBlc2FjCisgCitAQCAtMTgxOSwxMyArMjQ4NywxMyBAQCBpZiAkb3B0X2hlbHA7IHRoZW4KKyAgIGVsc2UKKyAgICAgeworICAgICAgIGZ1bmNfaGVscCBub2V4aXQKKy0gICAgICBmb3IgbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCisrICAgICAgZm9yIG9wdF9tb2RlIGluIGNvbXBpbGUgbGluayBleGVjdXRlIGluc3RhbGwgZmluaXNoIHVuaW5zdGFsbCBjbGVhbjsgZG8KKyAJZnVuY19tb2RlX2hlbHAKKyAgICAgICBkb25lCisgICAgIH0gfCBzZWQgLW4gJzFwOyAyLCRzL15Vc2FnZTovICBvcjogL3AnCisgICAgIHsKKyAgICAgICBmdW5jX2hlbHAgbm9leGl0CistICAgICAgZm9yIG1vZGUgaW4gY29tcGlsZSBsaW5rIGV4ZWN1dGUgaW5zdGFsbCBmaW5pc2ggdW5pbnN0YWxsIGNsZWFuOyBkbworKyAgICAgIGZvciBvcHRfbW9kZSBpbiBjb21waWxlIGxpbmsgZXhlY3V0ZSBpbnN0YWxsIGZpbmlzaCB1bmluc3RhbGwgY2xlYW47IGRvCisgCWVjaG8KKyAJZnVuY19tb2RlX2hlbHAKKyAgICAgICBkb25lCitAQCAtMTg1NCwxMyArMjUyMiwxNiBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQorICAgICAgIGZ1bmNfZmF0YWxfaGVscCAieW91IG11c3Qgc3BlY2lmeSBhIENPTU1BTkQiCisgCisgICAgICMgSGFuZGxlIC1kbG9wZW4gZmxhZ3MgaW1tZWRpYXRlbHkuCistICAgIGZvciBmaWxlIGluICRleGVjdXRlX2RsZmlsZXM7IGRvCisrICAgIGZvciBmaWxlIGluICRvcHRfZGxvcGVuOyBkbworICAgICAgIHRlc3QgLWYgIiRmaWxlIiBcCisgCXx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgZmlsZSIKKyAKKyAgICAgICBkaXI9CisgICAgICAgY2FzZSAkZmlsZSBpbgorICAgICAgICoubGEpCisrCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZmlsZSIKKysJZmlsZT0kZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0CisrCisgCSMgQ2hlY2sgdG8gc2VlIHRoYXQgdGhpcyByZWFsbHkgaXMgYSBsaWJ0b29sIGFyY2hpdmUuCisgCWZ1bmNfbGFsaWJfdW5zYWZlX3AgIiRmaWxlIiBcCisgCSAgfHwgZnVuY19mYXRhbF9oZWxwICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKK0BAIC0xODgyLDcgKzI1NTMsNyBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQorIAlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorIAorIAlpZiB0ZXN0IC1mICIkZGlyLyRvYmpkaXIvJGRsbmFtZSI7IHRoZW4KKy0JICBkaXI9IiRkaXIvJG9iamRpciIKKysJICBmdW5jX2FwcGVuZCBkaXIgIi8kb2JqZGlyIgorIAllbHNlCisgCSAgaWYgdGVzdCAhIC1mICIkZGlyLyRkbG5hbWUiOyB0aGVuCisgCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJjYW5ub3QgZmluZCBcYCRkbG5hbWUnIGluIFxgJGRpcicgb3IgXGAkZGlyLyRvYmpkaXInIgorQEAgLTE5MDcsMTAgKzI1NzgsMTAgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKKyAgICAgICB0ZXN0IC1uICIkYWJzZGlyIiAmJiBkaXI9IiRhYnNkaXIiCisgCisgICAgICAgIyBOb3cgYWRkIHRoZSBkaXJlY3RvcnkgdG8gc2hsaWJwYXRoX3Zhci4KKy0gICAgICBpZiBldmFsIHRlc3QgLXogXCJcJCRzaGxpYnBhdGhfdmFyXCI7IHRoZW4KKy0JZXZhbCAkc2hsaWJwYXRoX3Zhcj1cJGRpcgorKyAgICAgIGlmIGV2YWwgInRlc3QgLXogXCJcJCRzaGxpYnBhdGhfdmFyXCIiOyB0aGVuCisrCWV2YWwgIiRzaGxpYnBhdGhfdmFyPVwiXCRkaXJcIiIKKyAgICAgICBlbHNlCistCWV2YWwgJHNobGlicGF0aF92YXI9XCRkaXI6XCQkc2hsaWJwYXRoX3ZhcgorKwlldmFsICIkc2hsaWJwYXRoX3Zhcj1cIlwkZGlyOlwkJHNobGlicGF0aF92YXJcIiIKKyAgICAgICBmaQorICAgICBkb25lCisgCitAQCAtMTkzOSw4ICsyNjEwLDcgQEAgZnVuY19tb2RlX2V4ZWN1dGUgKCkKKyAJOzsKKyAgICAgICBlc2FjCisgICAgICAgIyBRdW90ZSBhcmd1bWVudHMgKHRvIHByZXNlcnZlIHNoZWxsIG1ldGFjaGFyYWN0ZXJzKS4KKy0gICAgICBmdW5jX3F1b3RlX2Zvcl9ldmFsICIkZmlsZSIKKy0gICAgICBhcmdzPSIkYXJncyAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrICAgICAgZnVuY19hcHBlbmRfcXVvdGVkIGFyZ3MgIiRmaWxlIgorICAgICBkb25lCisgCisgICAgIGlmIHRlc3QgIlgkb3B0X2RyeV9ydW4iID0gWGZhbHNlOyB0aGVuCitAQCAtMTk3MiwyMiArMjY0Miw1OSBAQCBmdW5jX21vZGVfZXhlY3V0ZSAoKQorICAgICBmaQorIH0KKyAKKy10ZXN0ICIkbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQorK3Rlc3QgIiRvcHRfbW9kZSIgPSBleGVjdXRlICYmIGZ1bmNfbW9kZV9leGVjdXRlICR7MSsiJEAifQorIAorIAorICMgZnVuY19tb2RlX2ZpbmlzaCBhcmcuLi4KKyBmdW5jX21vZGVfZmluaXNoICgpCisgeworICAgICAkb3B0X2RlYnVnCistICAgIGxpYmRpcnM9IiRub25vcHQiCisrICAgIGxpYnM9CisrICAgIGxpYmRpcnM9CisgICAgIGFkbWluY21kcz0KKyAKKy0gICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KKy0gICAgICBmb3IgZGlyCistICAgICAgZG8KKy0JbGliZGlycz0iJGxpYmRpcnMgJGRpciIKKy0gICAgICBkb25lCisrICAgIGZvciBvcHQgaW4gIiRub25vcHQiICR7MSsiJEAifQorKyAgICBkbworKyAgICAgIGlmIHRlc3QgLWQgIiRvcHQiOyB0aGVuCisrCWZ1bmNfYXBwZW5kIGxpYmRpcnMgIiAkb3B0IgorIAorKyAgICAgIGVsaWYgdGVzdCAtZiAiJG9wdCI7IHRoZW4KKysJaWYgZnVuY19sYWxpYl91bnNhZmVfcCAiJG9wdCI7IHRoZW4KKysJICBmdW5jX2FwcGVuZCBsaWJzICIgJG9wdCIKKysJZWxzZQorKwkgIGZ1bmNfd2FybmluZyAiXGAkb3B0JyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisrCWZpCisrCisrICAgICAgZWxzZQorKwlmdW5jX2ZhdGFsX2Vycm9yICJpbnZhbGlkIGFyZ3VtZW50IFxgJG9wdCciCisrICAgICAgZmkKKysgICAgZG9uZQorKworKyAgICBpZiB0ZXN0IC1uICIkbGlicyI7IHRoZW4KKysgICAgICBpZiB0ZXN0IC1uICIkbHRfc3lzcm9vdCI7IHRoZW4KKysgICAgICAgIHN5c3Jvb3RfcmVnZXg9YCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkc2VkX21ha2VfbGl0ZXJhbF9yZWdleCJgCisrICAgICAgICBzeXNyb290X2NtZD0icy9cKFsgJ11cKSRzeXNyb290X3JlZ2V4L1wxL2c7IgorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c3Jvb3RfY21kPQorKyAgICAgIGZpCisrCisrICAgICAgIyBSZW1vdmUgc3lzcm9vdCByZWZlcmVuY2VzCisrICAgICAgaWYgJG9wdF9kcnlfcnVuOyB0aGVuCisrICAgICAgICBmb3IgbGliIGluICRsaWJzOyBkbworKyAgICAgICAgICBlY2hvICJyZW1vdmluZyByZWZlcmVuY2VzIHRvICRsdF9zeXNyb290IGFuZCBcYD0nIHByZWZpeGVzIGZyb20gJGxpYiIKKysgICAgICAgIGRvbmUKKysgICAgICBlbHNlCisrICAgICAgICB0bXBkaXI9YGZ1bmNfbWt0ZW1wZGlyYAorKyAgICAgICAgZm9yIGxpYiBpbiAkbGliczsgZG8KKysJICBzZWQgLWUgIiR7c3lzcm9vdF9jbWR9IHMvXChbICddLVtMUl1cKT0vXDEvZzsgcy9cKFsgJ11cKT0vXDEvZyIgJGxpYiBcCisrCSAgICA+ICR0bXBkaXIvdG1wLWxhCisrCSAgbXYgLWYgJHRtcGRpci90bXAtbGEgJGxpYgorKwlkb25lCisrICAgICAgICAke1JNfXIgIiR0bXBkaXIiCisrICAgICAgZmkKKysgICAgZmkKKysKKysgICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KKyAgICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbworIAlpZiB0ZXN0IC1uICIkZmluaXNoX2NtZHMiOyB0aGVuCisgCSAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIGZpbmlzaCBjb21tYW5kcy4KK0BAIC0xOTk3LDcgKzI3MDQsNyBAQCBmdW5jX21vZGVfZmluaXNoICgpCisgCWlmIHRlc3QgLW4gIiRmaW5pc2hfZXZhbCI7IHRoZW4KKyAJICAjIERvIHRoZSBzaW5nbGUgZmluaXNoX2V2YWwuCisgCSAgZXZhbCBjbWRzPVwiJGZpbmlzaF9ldmFsXCIKKy0JICAkb3B0X2RyeV9ydW4gfHwgZXZhbCAiJGNtZHMiIHx8IGFkbWluY21kcz0iJGFkbWluY21kcworKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkY21kcyIgfHwgZnVuY19hcHBlbmQgYWRtaW5jbWRzICIKKyAgICAgICAgJGNtZHMiCisgCWZpCisgICAgICAgZG9uZQorQEAgLTIwMDYsNTMgKzI3MTMsNTUgQEAgZnVuY19tb2RlX2ZpbmlzaCAoKQorICAgICAjIEV4aXQgaGVyZSBpZiB0aGV5IHdhbnRlZCBzaWxlbnQgbW9kZS4KKyAgICAgJG9wdF9zaWxlbnQgJiYgZXhpdCAkRVhJVF9TVUNDRVNTCisgCistICAgIGVjaG8gIi0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0iCistICAgIGVjaG8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKKy0gICAgZm9yIGxpYmRpciBpbiAkbGliZGlyczsgZG8KKy0gICAgICAkRUNITyAiICAgJGxpYmRpciIKKy0gICAgZG9uZQorLSAgICBlY2hvCistICAgIGVjaG8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgorLSAgICBlY2hvICJpbiBhIGdpdmVuIGRpcmVjdG9yeSwgTElCRElSLCB5b3UgbXVzdCBlaXRoZXIgdXNlIGxpYnRvb2wsIGFuZCIKKy0gICAgZWNobyAic3BlY2lmeSB0aGUgZnVsbCBwYXRobmFtZSBvZiB0aGUgbGlicmFyeSwgb3IgdXNlIHRoZSBcYC1MTElCRElSJyIKKy0gICAgZWNobyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgorLSAgICBpZiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciI7IHRoZW4KKy0gICAgICBlY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgorLSAgICAgIGVjaG8gIiAgICAgZHVyaW5nIGV4ZWN1dGlvbiIKKy0gICAgZmkKKy0gICAgaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorLSAgICAgIGVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgorLSAgICAgIGVjaG8gIiAgICAgZHVyaW5nIGxpbmtpbmciCistICAgIGZpCistICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorLSAgICAgIGxpYmRpcj1MSUJESVIKKy0gICAgICBldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKysgICAgaWYgdGVzdCAtbiAiJGZpbmlzaF9jbWRzJGZpbmlzaF9ldmFsIiAmJiB0ZXN0IC1uICIkbGliZGlycyI7IHRoZW4KKysgICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorKyAgICAgIGVjaG8gIkxpYnJhcmllcyBoYXZlIGJlZW4gaW5zdGFsbGVkIGluOiIKKysgICAgICBmb3IgbGliZGlyIGluICRsaWJkaXJzOyBkbworKwkkRUNITyAiICAgJGxpYmRpciIKKysgICAgICBkb25lCisrICAgICAgZWNobworKyAgICAgIGVjaG8gIklmIHlvdSBldmVyIGhhcHBlbiB0byB3YW50IHRvIGxpbmsgYWdhaW5zdCBpbnN0YWxsZWQgbGlicmFyaWVzIgorKyAgICAgIGVjaG8gImluIGEgZ2l2ZW4gZGlyZWN0b3J5LCBMSUJESVIsIHlvdSBtdXN0IGVpdGhlciB1c2UgbGlidG9vbCwgYW5kIgorKyAgICAgIGVjaG8gInNwZWNpZnkgdGhlIGZ1bGwgcGF0aG5hbWUgb2YgdGhlIGxpYnJhcnksIG9yIHVzZSB0aGUgXGAtTExJQkRJUiciCisrICAgICAgZWNobyAiZmxhZyBkdXJpbmcgbGlua2luZyBhbmQgZG8gYXQgbGVhc3Qgb25lIG9mIHRoZSBmb2xsb3dpbmc6IgorKyAgICAgIGlmIHRlc3QgLW4gIiRzaGxpYnBhdGhfdmFyIjsgdGhlbgorKwllY2hvICIgICAtIGFkZCBMSUJESVIgdG8gdGhlIFxgJHNobGlicGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgorKwllY2hvICIgICAgIGR1cmluZyBleGVjdXRpb24iCisrICAgICAgZmkKKysgICAgICBpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisrCWVjaG8gIiAgIC0gYWRkIExJQkRJUiB0byB0aGUgXGAkcnVucGF0aF92YXInIGVudmlyb25tZW50IHZhcmlhYmxlIgorKwllY2hvICIgICAgIGR1cmluZyBsaW5raW5nIgorKyAgICAgIGZpCisrICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCisrCWxpYmRpcj1MSUJESVIKKysJZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorIAorLSAgICAgICRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCistICAgIGZpCistICAgIGlmIHRlc3QgLW4gIiRhZG1pbmNtZHMiOyB0aGVuCistICAgICAgJEVDSE8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIHJ1biB0aGVzZSBjb21tYW5kczokYWRtaW5jbWRzIgorLSAgICBmaQorLSAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgorLSAgICAgIGVjaG8gIiAgIC0gaGF2ZSB5b3VyIHN5c3RlbSBhZG1pbmlzdHJhdG9yIGFkZCBMSUJESVIgdG8gXGAvZXRjL2xkLnNvLmNvbmYnIgorLSAgICBmaQorLSAgICBlY2hvCisrCSRFQ0hPICIgICAtIHVzZSB0aGUgXGAkZmxhZycgbGlua2VyIGZsYWciCisrICAgICAgZmkKKysgICAgICBpZiB0ZXN0IC1uICIkYWRtaW5jbWRzIjsgdGhlbgorKwkkRUNITyAiICAgLSBoYXZlIHlvdXIgc3lzdGVtIGFkbWluaXN0cmF0b3IgcnVuIHRoZXNlIGNvbW1hbmRzOiRhZG1pbmNtZHMiCisrICAgICAgZmkKKysgICAgICBpZiB0ZXN0IC1mIC9ldGMvbGQuc28uY29uZjsgdGhlbgorKwllY2hvICIgICAtIGhhdmUgeW91ciBzeXN0ZW0gYWRtaW5pc3RyYXRvciBhZGQgTElCRElSIHRvIFxgL2V0Yy9sZC5zby5jb25mJyIKKysgICAgICBmaQorKyAgICAgIGVjaG8KKyAKKy0gICAgZWNobyAiU2VlIGFueSBvcGVyYXRpbmcgc3lzdGVtIGRvY3VtZW50YXRpb24gYWJvdXQgc2hhcmVkIGxpYnJhcmllcyBmb3IiCistICAgIGNhc2UgJGhvc3QgaW4KKy0gICAgICBzb2xhcmlzMi5bNjc4OV18c29sYXJpczIuMVswLTldKQorLSAgICAgICAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSksIGNybGUoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCIKKy0JZWNobyAicGFnZXMuIgorLQk7OworLSAgICAgICopCistICAgICAgICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSBhbmQgbGQuc28oOCkgbWFudWFsIHBhZ2VzLiIKKy0gICAgICAgIDs7CistICAgIGVzYWMKKy0gICAgZWNobyAiLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSIKKysgICAgICBlY2hvICJTZWUgYW55IG9wZXJhdGluZyBzeXN0ZW0gZG9jdW1lbnRhdGlvbiBhYm91dCBzaGFyZWQgbGlicmFyaWVzIGZvciIKKysgICAgICBjYXNlICRob3N0IGluCisrCXNvbGFyaXMyLls2Nzg5XXxzb2xhcmlzMi4xWzAtOV0pCisrCSAgZWNobyAibW9yZSBpbmZvcm1hdGlvbiwgc3VjaCBhcyB0aGUgbGQoMSksIGNybGUoMSkgYW5kIGxkLnNvKDgpIG1hbnVhbCIKKysJICBlY2hvICJwYWdlcy4iCisrCSAgOzsKKysJKikKKysJICBlY2hvICJtb3JlIGluZm9ybWF0aW9uLCBzdWNoIGFzIHRoZSBsZCgxKSBhbmQgbGQuc28oOCkgbWFudWFsIHBhZ2VzLiIKKysJICA7OworKyAgICAgIGVzYWMKKysgICAgICBlY2hvICItLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tIgorKyAgICBmaQorICAgICBleGl0ICRFWElUX1NVQ0NFU1MKKyB9CisgCistdGVzdCAiJG1vZGUiID0gZmluaXNoICYmIGZ1bmNfbW9kZV9maW5pc2ggJHsxKyIkQCJ9CisrdGVzdCAiJG9wdF9tb2RlIiA9IGZpbmlzaCAmJiBmdW5jX21vZGVfZmluaXNoICR7MSsiJEAifQorIAorIAorICMgZnVuY19tb2RlX2luc3RhbGwgYXJnLi4uCitAQCAtMjA3Nyw3ICsyNzg2LDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKKyAgICAgIyBUaGUgcmVhbCBmaXJzdCBhcmd1bWVudCBzaG91bGQgYmUgdGhlIG5hbWUgb2YgdGhlIGluc3RhbGxhdGlvbiBwcm9ncmFtLgorICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgaXQuCisgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCistICAgIGluc3RhbGxfcHJvZz0iJGluc3RhbGxfcHJvZyRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysgICAgZnVuY19hcHBlbmQgaW5zdGFsbF9wcm9nICIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgIGluc3RhbGxfc2hhcmVkX3Byb2c9JGluc3RhbGxfcHJvZworICAgICBjYXNlICIgJGluc3RhbGxfcHJvZyAiIGluCisgICAgICAgKltcXFwgL11jcFwgKikgaW5zdGFsbF9jcD06IDs7CitAQCAtMjA5Nyw3ICsyODA2LDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKKyAgICAgZG8KKyAgICAgICBhcmcyPQorICAgICAgIGlmIHRlc3QgLW4gIiRkZXN0IjsgdGhlbgorLQlmaWxlcz0iJGZpbGVzICRkZXN0IgorKwlmdW5jX2FwcGVuZCBmaWxlcyAiICRkZXN0IgorIAlkZXN0PSRhcmcKKyAJY29udGludWUKKyAgICAgICBmaQorQEAgLTIxMzUsMTEgKzI4NDQsMTEgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKKyAKKyAgICAgICAjIEFlc3RoZXRpY2FsbHkgcXVvdGUgdGhlIGFyZ3VtZW50LgorICAgICAgIGZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmciCistICAgICAgaW5zdGFsbF9wcm9nPSIkaW5zdGFsbF9wcm9nICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysgICAgICBmdW5jX2FwcGVuZCBpbnN0YWxsX3Byb2cgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICAgaWYgdGVzdCAtbiAiJGFyZzIiOyB0aGVuCisgCWZ1bmNfcXVvdGVfZm9yX2V2YWwgIiRhcmcyIgorICAgICAgIGZpCistICAgICAgaW5zdGFsbF9zaGFyZWRfcHJvZz0iJGluc3RhbGxfc2hhcmVkX3Byb2cgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKyAgICAgIGZ1bmNfYXBwZW5kIGluc3RhbGxfc2hhcmVkX3Byb2cgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgIGRvbmUKKyAKKyAgICAgdGVzdCAteiAiJGluc3RhbGxfcHJvZyIgJiYgXAorQEAgLTIxNTEsNyArMjg2MCw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgICAgIGlmIHRlc3QgLW4gIiRpbnN0YWxsX292ZXJyaWRlX21vZGUiICYmICRub19tb2RlOyB0aGVuCisgICAgICAgaWYgJGluc3RhbGxfY3A7IHRoZW4gOjsgZWxzZQorIAlmdW5jX3F1b3RlX2Zvcl9ldmFsICIkaW5zdGFsbF9vdmVycmlkZV9tb2RlIgorLQlpbnN0YWxsX3NoYXJlZF9wcm9nPSIkaW5zdGFsbF9zaGFyZWRfcHJvZyAtbSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCWZ1bmNfYXBwZW5kIGluc3RhbGxfc2hhcmVkX3Byb2cgIiAtbSAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICAgZmkKKyAgICAgZmkKKyAKK0BAIC0yMjA5LDEwICsyOTE4LDEzIEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgICAgICAgY2FzZSAkZmlsZSBpbgorICAgICAgICouJGxpYmV4dCkKKyAJIyBEbyB0aGUgc3RhdGljIGxpYnJhcmllcyBsYXRlci4KKy0Jc3RhdGljbGlicz0iJHN0YXRpY2xpYnMgJGZpbGUiCisrCWZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZmlsZSIKKyAJOzsKKyAKKyAgICAgICAqLmxhKQorKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZpbGUiCisrCWZpbGU9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorKworIAkjIENoZWNrIHRvIHNlZSB0aGF0IHRoaXMgcmVhbGx5IGlzIGEgbGlidG9vbCBhcmNoaXZlLgorIAlmdW5jX2xhbGliX3Vuc2FmZV9wICIkZmlsZSIgXAorIAkgIHx8IGZ1bmNfZmF0YWxfaGVscCAiXGAkZmlsZScgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorQEAgLTIyMjYsMjMgKzI5MzgsMzAgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKKyAJaWYgdGVzdCAiWCRkZXN0ZGlyIiA9ICJYJGxpYmRpciI7IHRoZW4KKyAJICBjYXNlICIkY3VycmVudF9saWJkaXJzICIgaW4KKyAJICAqIiAkbGliZGlyICIqKSA7OworLQkgICopIGN1cnJlbnRfbGliZGlycz0iJGN1cnJlbnRfbGliZGlycyAkbGliZGlyIiA7OworKwkgICopIGZ1bmNfYXBwZW5kIGN1cnJlbnRfbGliZGlycyAiICRsaWJkaXIiIDs7CisgCSAgZXNhYworIAllbHNlCisgCSAgIyBOb3RlIHRoZSBsaWJkaXIgYXMgYSBmdXR1cmUgbGliZGlyLgorIAkgIGNhc2UgIiRmdXR1cmVfbGliZGlycyAiIGluCisgCSAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAqKSBmdXR1cmVfbGliZGlycz0iJGZ1dHVyZV9saWJkaXJzICRsaWJkaXIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgZnV0dXJlX2xpYmRpcnMgIiAkbGliZGlyIiA7OworIAkgIGVzYWMKKyAJZmkKKyAKKyAJZnVuY19kaXJuYW1lICIkZmlsZSIgIi8iICIiCisgCWRpcj0iJGZ1bmNfZGlybmFtZV9yZXN1bHQiCistCWRpcj0iJGRpciRvYmpkaXIiCisrCWZ1bmNfYXBwZW5kIGRpciAiJG9iamRpciIKKyAKKyAJaWYgdGVzdCAtbiAiJHJlbGlua19jb21tYW5kIjsgdGhlbgorKyAgICAgICMgU3RyaXAgYW55IHRyYWlsaW5nIHNsYXNoIGZyb20gdGhlIGRlc3RpbmF0aW9uLgorKyAgICAgIGZ1bmNfc3RyaXBuYW1lICcnICcvJyAiJGxpYmRpciIKKysgICAgICBkZXN0bGliZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKysKKysgICAgICBmdW5jX3N0cmlwbmFtZSAnJyAnLycgIiRkZXN0ZGlyIgorKyAgICAgIHNfZGVzdGRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisrCisgCSAgIyBEZXRlcm1pbmUgdGhlIHByZWZpeCB0aGUgdXNlciBoYXMgYXBwbGllZCB0byBvdXIgZnV0dXJlIGRpci4KKy0JICBpbnN0X3ByZWZpeF9kaXI9YCRFQ0hPICIkZGVzdGRpciIgfCAkU0VEIC1lICJzJSRsaWJkaXJcJCUlImAKKysJICBpbnN0X3ByZWZpeF9kaXI9YCRFQ0hPICJYJHNfZGVzdGRpciIgfCAkWHNlZCAtZSAicyUkZGVzdGxpYmRpclwkJSUiYAorIAorIAkgICMgRG9uJ3QgYWxsb3cgdGhlIHVzZXIgdG8gcGxhY2UgdXMgb3V0c2lkZSBvZiBvdXIgZXhwZWN0ZWQKKyAJICAjIGxvY2F0aW9uIGIvYyB0aGlzIHByZXZlbnRzIGZpbmRpbmcgZGVwZW5kZW50IGxpYnJhcmllcyB0aGF0CitAQCAtMjMxNSw3ICszMDM0LDcgQEAgZnVuY19tb2RlX2luc3RhbGwgKCkKKyAJZnVuY19zaG93X2V2YWwgIiRpbnN0YWxsX3Byb2cgJGluc3RuYW1lICRkZXN0ZGlyLyRuYW1lIiAnZXhpdCAkPycKKyAKKyAJIyBNYXliZSBpbnN0YWxsIHRoZSBzdGF0aWMgbGlicmFyeSwgdG9vLgorLQl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIHN0YXRpY2xpYnM9IiRzdGF0aWNsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgorKwl0ZXN0IC1uICIkb2xkX2xpYnJhcnkiICYmIGZ1bmNfYXBwZW5kIHN0YXRpY2xpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKyAJOzsKKyAKKyAgICAgICAqLmxvKQorQEAgLTI1MDMsNyArMzIyMiw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgICAgIHRlc3QgLW4gIiRmdXR1cmVfbGliZGlycyIgJiYgXAorICAgICAgIGZ1bmNfd2FybmluZyAicmVtZW1iZXIgdG8gcnVuIFxgJHByb2duYW1lIC0tZmluaXNoJGZ1dHVyZV9saWJkaXJzJyIKKyAKKy0gICAgaWYgdGVzdCAtbiAiJGN1cnJlbnRfbGliZGlycyIgJiYgJG9wdF9maW5pc2g7IHRoZW4KKysgICAgaWYgdGVzdCAtbiAiJGN1cnJlbnRfbGliZGlycyI7IHRoZW4KKyAgICAgICAjIE1heWJlIGp1c3QgZG8gYSBkcnkgcnVuLgorICAgICAgICRvcHRfZHJ5X3J1biAmJiBjdXJyZW50X2xpYmRpcnM9IiAtbiRjdXJyZW50X2xpYmRpcnMiCisgICAgICAgZXhlY19jbWQ9JyRTSEVMTCAkcHJvZ3BhdGggJHByZXNlcnZlX2FyZ3MgLS1maW5pc2gkY3VycmVudF9saWJkaXJzJworQEAgLTI1MTIsNyArMzIzMSw3IEBAIGZ1bmNfbW9kZV9pbnN0YWxsICgpCisgICAgIGZpCisgfQorIAorLXRlc3QgIiRtb2RlIiA9IGluc3RhbGwgJiYgZnVuY19tb2RlX2luc3RhbGwgJHsxKyIkQCJ9CisrdGVzdCAiJG9wdF9tb2RlIiA9IGluc3RhbGwgJiYgZnVuY19tb2RlX2luc3RhbGwgJHsxKyIkQCJ9CisgCisgCisgIyBmdW5jX2dlbmVyYXRlX2Rsc3ltcyBvdXRwdXRuYW1lIG9yaWdpbmF0b3IgcGljX3AKK0BAIC0yNTU5LDYgKzMyNzgsMTggQEAgZXh0ZXJuIFwiQ1wiIHsKKyAjcHJhZ21hIEdDQyBkaWFnbm9zdGljIGlnbm9yZWQgXCItV3N0cmljdC1wcm90b3R5cGVzXCIKKyAjZW5kaWYKKyAKKysvKiBLZWVwIHRoaXMgY29kZSBpbiBzeW5jIGJldHdlZW4gbGlidG9vbC5tNCwgbHRtYWluLCBsdF9zeXN0ZW0uaCwgYW5kIHRlc3RzLiAgKi8KKysjaWYgZGVmaW5lZChfV0lOMzIpIHx8IGRlZmluZWQoX19DWUdXSU5fXykgfHwgZGVmaW5lZChfV0lOMzJfV0NFKQorKy8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UgcnVudGltZQorKyAgIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbiBvbiBwc2V1ZG8tcmVsb2NzLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbGlmIGRlZmluZWQoX19vc2ZfXykKKysvKiBUaGlzIHN5c3RlbSBkb2VzIG5vdCBjb3BlIHdlbGwgd2l0aCByZWxvY2F0aW9ucyBpbiBjb25zdCBkYXRhLiAgKi8KKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVAorKyNlbHNlCisrIyBkZWZpbmUgTFRfRExTWU1fQ09OU1QgY29uc3QKKysjZW5kaWYKKysKKyAvKiBFeHRlcm5hbCBzeW1ib2wgZGVjbGFyYXRpb25zIGZvciB0aGUgY29tcGlsZXIuICovXAorICIKKyAKK0BAIC0yNTcwLDIxICszMzAxLDIyIEBAIGV4dGVybiBcIkNcIiB7CisgCSAgIyBBZGQgb3VyIG93biBwcm9ncmFtIG9iamVjdHMgdG8gdGhlIHN5bWJvbCBsaXN0LgorIAkgIHByb2dmaWxlcz1gJEVDSE8gIiRvYmpzJG9sZF9kZXBsaWJzIiB8ICRTUDJOTCB8ICRTRUQgIiRsbzJvIiB8ICROTDJTUGAKKyAJICBmb3IgcHJvZ2ZpbGUgaW4gJHByb2dmaWxlczsgZG8KKy0JICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkcHJvZ2ZpbGUnIgorLQkgICAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgIiROTSAkcHJvZ2ZpbGUgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorKwkgICAgZnVuY190b190b29sX2ZpbGUgIiRwcm9nZmlsZSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysJICAgIGZ1bmNfdmVyYm9zZSAiZXh0cmFjdGluZyBnbG9iYWwgQyBzeW1ib2xzIGZyb20gXGAkZnVuY190b190b29sX2ZpbGVfcmVzdWx0JyIKKysJICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICIkTk0gJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCisgCSAgZG9uZQorIAorIAkgIGlmIHRlc3QgLW4gIiRleGNsdWRlX2V4cHN5bXMiOyB0aGVuCisgCSAgICAkb3B0X2RyeV9ydW4gfHwgeworLQkgICAgICAkRUdSRVAgLXYgIiAoJGV4Y2x1ZGVfZXhwc3ltcykkIiAiJG5saXN0IiA+ICIkbmxpc3QiVAorLQkgICAgICAkTVYgIiRubGlzdCJUICIkbmxpc3QiCisrCSAgICAgIGV2YWwgJyRFR1JFUCAtdiAiICgkZXhjbHVkZV9leHBzeW1zKSQiICIkbmxpc3QiID4gIiRubGlzdCJUJworKwkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJworIAkgICAgfQorIAkgIGZpCisgCisgCSAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzX3JlZ2V4IjsgdGhlbgorIAkgICAgJG9wdF9kcnlfcnVuIHx8IHsKKy0JICAgICAgJEVHUkVQIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkbmxpc3QiID4gIiRubGlzdCJUCistCSAgICAgICRNViAiJG5saXN0IlQgIiRubGlzdCIKKysJICAgICAgZXZhbCAnJEVHUkVQIC1lICIkZXhwb3J0X3N5bWJvbHNfcmVnZXgiICIkbmxpc3QiID4gIiRubGlzdCJUJworKwkgICAgICBldmFsICckTVYgIiRubGlzdCJUICIkbmxpc3QiJworIAkgICAgfQorIAkgIGZpCisgCitAQCAtMjU5MywyMyArMzMyNSwyMyBAQCBleHRlcm4gXCJDXCIgeworIAkgICAgZXhwb3J0X3N5bWJvbHM9IiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIKKyAJICAgICRvcHRfZHJ5X3J1biB8fCB7CisgCSAgICAgICRSTSAkZXhwb3J0X3N5bWJvbHMKKy0JICAgICAgJHtTRUR9IC1uIC1lICcvXjogQFBST0dSQU1AICQvZCcgLWUgJ3MvXi4qIFwoLipcKSQvXDEvcCcgPCAiJG5saXN0IiA+ICIkZXhwb3J0X3N5bWJvbHMiCisrCSAgICAgIGV2YWwgIiR7U0VEfSAtbiAtZSAnL146IEBQUk9HUkFNQCAkL2QnIC1lICdzL14uKiBcKC4qXCkkL1wxL3AnICInPCAiJG5saXN0IiA+ICIkZXhwb3J0X3N5bWJvbHMiJworIAkgICAgICBjYXNlICRob3N0IGluCisgCSAgICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorLSAgICAgICAgICAgICAgICBlY2hvIEVYUE9SVFMgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIgorLSAgICAgICAgICAgICAgICBjYXQgIiRleHBvcnRfc3ltYm9scyIgPj4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKKysgICAgICAgICAgICAgICAgZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKKysgICAgICAgICAgICAgICAgZXZhbCAnY2F0ICIkZXhwb3J0X3N5bWJvbHMiID4+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5kZWYiJworIAkgICAgICAgIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIH0KKyAJICBlbHNlCisgCSAgICAkb3B0X2RyeV9ydW4gfHwgeworLQkgICAgICAke1NFRH0gLWUgJ3MvXChbXS5bKl4kXVwpL1xcXDEvZycgLWUgJ3MvXi8gLycgLWUgJ3MvJC8kLycgPCAiJGV4cG9ydF9zeW1ib2xzIiA+ICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiCistCSAgICAgICRHUkVQIC1mICIkb3V0cHV0X29iamRpci8kb3V0cHV0bmFtZS5leHAiIDwgIiRubGlzdCIgPiAiJG5saXN0IlQKKy0JICAgICAgJE1WICIkbmxpc3QiVCAiJG5saXN0IgorKwkgICAgICBldmFsICIke1NFRH0gLWUgJ3MvXChbXS5bKl4kXVwpL1xcXFxcMS9nJyAtZSAncy9eLyAvJyAtZSAncy8kLyQvJyInIDwgIiRleHBvcnRfc3ltYm9scyIgPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZXhwIicKKysJICAgICAgZXZhbCAnJEdSRVAgLWYgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmV4cCIgPCAiJG5saXN0IiA+ICIkbmxpc3QiVCcKKysJICAgICAgZXZhbCAnJE1WICIkbmxpc3QiVCAiJG5saXN0IicKKyAJICAgICAgY2FzZSAkaG9zdCBpbgorIAkgICAgICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorLQkgICAgICAgICAgZWNobyBFWFBPUlRTID4gIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lLmRlZiIKKy0JICAgICAgICAgIGNhdCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIgorKwkgICAgICAgICAgZXZhbCAiZWNobyBFWFBPUlRTICInPiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKKysJICAgICAgICAgIGV2YWwgJ2NhdCAiJG5saXN0IiA+PiAiJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUuZGVmIicKKyAJICAgICAgICAgIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIH0KK0BAIC0yNjIwLDEwICszMzUyLDUyIEBAIGV4dGVybiBcIkNcIiB7CisgCSAgZnVuY192ZXJib3NlICJleHRyYWN0aW5nIGdsb2JhbCBDIHN5bWJvbHMgZnJvbSBcYCRkbHByZWZpbGUnIgorIAkgIGZ1bmNfYmFzZW5hbWUgIiRkbHByZWZpbGUiCisgCSAgbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLQkgICRvcHRfZHJ5X3J1biB8fCB7CistCSAgICAkRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiCistCSAgICBldmFsICIkTk0gJGRscHJlZmlsZSAyPi9kZXYvbnVsbCB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgPj4gJyRubGlzdCciCistCSAgfQorKyAgICAgICAgICBjYXNlICRob3N0IGluCisrCSAgICAqY3lnd2luKiB8ICptaW5ndyogfCAqY2VnY2MqICkKKysJICAgICAgIyBpZiBhbiBpbXBvcnQgbGlicmFyeSwgd2UgbmVlZCB0byBvYnRhaW4gZGxuYW1lCisrCSAgICAgIGlmIGZ1bmNfd2luMzJfaW1wb3J0X2xpYl9wICIkZGxwcmVmaWxlIjsgdGhlbgorKwkgICAgICAgIGZ1bmNfdHJfc2ggIiRkbHByZWZpbGUiCisrCSAgICAgICAgZXZhbCAiY3Vycl9sYWZpbGU9XCRsaWJmaWxlXyRmdW5jX3RyX3NoX3Jlc3VsdCIKKysJICAgICAgICBkbHByZWZpbGVfZGxiYXNlbmFtZT0iIgorKwkgICAgICAgIGlmIHRlc3QgLW4gIiRjdXJyX2xhZmlsZSIgJiYgZnVuY19sYWxpYl9wICIkY3Vycl9sYWZpbGUiOyB0aGVuCisrCSAgICAgICAgICAjIFVzZSBzdWJzaGVsbCwgdG8gYXZvaWQgY2xvYmJlcmluZyBjdXJyZW50IHZhcmlhYmxlIHZhbHVlcworKwkgICAgICAgICAgZGxwcmVmaWxlX2RsbmFtZT1gc291cmNlICIkY3Vycl9sYWZpbGUiICYmIGVjaG8gIiRkbG5hbWUiYAorKwkgICAgICAgICAgaWYgdGVzdCAtbiAiJGRscHJlZmlsZV9kbG5hbWUiIDsgdGhlbgorKwkgICAgICAgICAgICBmdW5jX2Jhc2VuYW1lICIkZGxwcmVmaWxlX2RsbmFtZSIKKysJICAgICAgICAgICAgZGxwcmVmaWxlX2RsYmFzZW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKysJICAgICAgICAgIGVsc2UKKysJICAgICAgICAgICAgIyBubyBsYWZpbGUuIHVzZXIgZXhwbGljaXRseSByZXF1ZXN0ZWQgLWRscHJlb3BlbiA8aW1wb3J0IGxpYnJhcnk+LgorKwkgICAgICAgICAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgIiRkbHByZWZpbGUiCisrCSAgICAgICAgICAgIGRscHJlZmlsZV9kbGJhc2VuYW1lPSRzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdAorKwkgICAgICAgICAgZmkKKysJICAgICAgICBmaQorKwkgICAgICAgICRvcHRfZHJ5X3J1biB8fCB7CisrCSAgICAgICAgICBpZiB0ZXN0IC1uICIkZGxwcmVmaWxlX2RsYmFzZW5hbWUiIDsgdGhlbgorKwkgICAgICAgICAgICBldmFsICckRUNITyAiOiAkZGxwcmVmaWxlX2RsYmFzZW5hbWUiID4+ICIkbmxpc3QiJworKwkgICAgICAgICAgZWxzZQorKwkgICAgICAgICAgICBmdW5jX3dhcm5pbmcgIkNvdWxkIG5vdCBjb21wdXRlIERMTCBuYW1lIGZyb20gJG5hbWUiCisrCSAgICAgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCisrCSAgICAgICAgICBmaQorKwkgICAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrCSAgICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwKKysJICAgICAgICAgICAgJFNFRCAtZSAnL0kgX19pbXAvZCcgLWUgJ3MvSSBfX25tXy9EIC87cy9fbm1fXy8vJyA+PiAnJG5saXN0JyIKKysJICAgICAgICB9CisrCSAgICAgIGVsc2UgIyBub3QgYW4gaW1wb3J0IGxpYgorKwkgICAgICAgICRvcHRfZHJ5X3J1biB8fCB7CisrCSAgICAgICAgICBldmFsICckRUNITyAiOiAkbmFtZSAiID4+ICIkbmxpc3QiJworKwkgICAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrCSAgICAgICAgICBldmFsICIkTk0gXCIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0XCIgMj4vZGV2L251bGwgfCAkZ2xvYmFsX3N5bWJvbF9waXBlID4+ICckbmxpc3QnIgorKwkgICAgICAgIH0KKysJICAgICAgZmkKKysJICAgIDs7CisrCSAgICAqKQorKwkgICAgICAkb3B0X2RyeV9ydW4gfHwgeworKwkgICAgICAgIGV2YWwgJyRFQ0hPICI6ICRuYW1lICIgPj4gIiRubGlzdCInCisrCSAgICAgICAgZnVuY190b190b29sX2ZpbGUgIiRkbHByZWZpbGUiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrCSAgICAgICAgZXZhbCAiJE5NIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIDI+L2Rldi9udWxsIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSA+PiAnJG5saXN0JyIKKysJICAgICAgfQorKwkgICAgOzsKKysgICAgICAgICAgZXNhYworIAlkb25lCisgCisgCSRvcHRfZHJ5X3J1biB8fCB7CitAQCAtMjY2MSwyNiArMzQzNSw5IEBAIHR5cGVkZWYgc3RydWN0IHsKKyAgIGNvbnN0IGNoYXIgKm5hbWU7CisgICB2b2lkICphZGRyZXNzOworIH0gbHRfZGxzeW1saXN0OworLSIKKy0JICBjYXNlICRob3N0IGluCistCSAgKmN5Z3dpbiogfCAqbWluZ3cqIHwgKmNlZ2NjKiApCistCSAgICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorLS8qIERBVEEgaW1wb3J0cyBmcm9tIERMTHMgb24gV0lOMzIgY29uJ3QgYmUgY29uc3QsIGJlY2F1c2UKKy0gICBydW50aW1lIHJlbG9jYXRpb25zIGFyZSBwZXJmb3JtZWQgLS0gc2VlIGxkJ3MgZG9jdW1lbnRhdGlvbgorLSAgIG9uIHBzZXVkby1yZWxvY3MuICAqLyIKKy0JICAgIGx0X2Rsc3ltX2NvbnN0PSA7OworLQkgICpvc2Y1KikKKy0JICAgIGVjaG8gPj4gIiRvdXRwdXRfb2JqZGlyLyRteV9kbHN5bXMiICJcCistLyogVGhpcyBzeXN0ZW0gZG9lcyBub3QgY29wZSB3ZWxsIHdpdGggcmVsb2NhdGlvbnMgaW4gY29uc3QgZGF0YSAqLyIKKy0JICAgIGx0X2Rsc3ltX2NvbnN0PSA7OworLQkgICopCistCSAgICBsdF9kbHN5bV9jb25zdD1jb25zdCA7OworLQkgIGVzYWMKKy0KKy0JICBlY2hvID4+ICIkb3V0cHV0X29iamRpci8kbXlfZGxzeW1zIiAiXAorLWV4dGVybiAkbHRfZGxzeW1fY29uc3QgbHRfZGxzeW1saXN0CisrZXh0ZXJuIExUX0RMU1lNX0NPTlNUIGx0X2Rsc3ltbGlzdAorIGx0XyR7bXlfcHJlZml4fV9MVFhfcHJlbG9hZGVkX3N5bWJvbHNbXTsKKy0kbHRfZGxzeW1fY29uc3QgbHRfZGxzeW1saXN0CisrTFRfRExTWU1fQ09OU1QgbHRfZGxzeW1saXN0CisgbHRfJHtteV9wcmVmaXh9X0xUWF9wcmVsb2FkZWRfc3ltYm9sc1tdID0KKyB7XAorICAgeyBcIiRteV9vcmlnaW5hdG9yXCIsICh2b2lkICopIDAgfSwiCitAQCAtMjczNiw3ICszNDkzLDcgQEAgc3RhdGljIGNvbnN0IHZvaWQgKmx0X3ByZWxvYWRlZF9zZXR1cCgpIHsKKyAJZm9yIGFyZyBpbiAkTFRDRkxBR1M7IGRvCisgCSAgY2FzZSAkYXJnIGluCisgCSAgLXBpZSB8IC1mcGllIHwgLWZQSUUpIDs7CistCSAgKikgc3ltdGFiX2NmbGFncz0iJHN5bXRhYl9jZmxhZ3MgJGFyZyIgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBzeW10YWJfY2ZsYWdzICIgJGFyZyIgOzsKKyAJICBlc2FjCisgCWRvbmUKKyAKK0BAIC0yNzk2LDkgKzM1NTMsMTEgQEAgZnVuY193aW4zMl9saWJpZCAoKQorICAgICB3aW4zMl9saWJpZF90eXBlPSJ4ODYgYXJjaGl2ZSBpbXBvcnQiCisgICAgIDs7CisgICAqYXJcIGFyY2hpdmUqKSAjIGNvdWxkIGJlIGFuIGltcG9ydCwgb3Igc3RhdGljCistICAgIGlmICRPQkpEVU1QIC1mICIkMSIgfCAkU0VEIC1lICcxMHEnIDI+L2Rldi9udWxsIHwKKy0gICAgICAgJEVHUkVQICdmaWxlIGZvcm1hdCAocGUtaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/fHBlLWFybS13aW5jZXxwZS14ODYtNjQpJyA+L2Rldi9udWxsOyB0aGVuCistICAgICAgd2luMzJfbm1yZXM9YCROTSAtZiBwb3NpeCAtQSAiJDEiIHwKKysgICAgIyBLZWVwIHRoZSBlZ3JlcCBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIF9MVF9DSEVDS19NQUdJQ19NRVRIT0QuCisrICAgIGlmIGV2YWwgJE9CSkRVTVAgLWYgJDEgfCAkU0VEIC1lICcxMHEnIDI+L2Rldi9udWxsIHwKKysgICAgICAgJEVHUkVQICdmaWxlIGZvcm1hdCAocGVpKi1pMzg2KC4qYXJjaGl0ZWN0dXJlOiBpMzg2KT98cGUtYXJtLXdpbmNlfHBlLXg4Ni02NCknID4vZGV2L251bGw7IHRoZW4KKysgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJDEiIGZ1bmNfY29udmVydF9maWxlX21zeXNfdG9fdzMyCisrICAgICAgd2luMzJfbm1yZXM9YGV2YWwgJE5NIC1mIHBvc2l4IC1BIFwiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiIHwKKyAJJFNFRCAtbiAtZSAnCisgCSAgICAxLDEwMHsKKyAJCS8gSSAveworQEAgLTI4MjcsNiArMzU4NiwxMzEgQEAgZnVuY193aW4zMl9saWJpZCAoKQorICAgJEVDSE8gIiR3aW4zMl9saWJpZF90eXBlIgorIH0KKyAKKysjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYiBBUkcKKysjCisrIyBQbGF0Zm9ybS1zcGVjaWZpYyBmdW5jdGlvbiB0byBleHRyYWN0IHRoZQorKyMgbmFtZSBvZiB0aGUgRExMIGFzc29jaWF0ZWQgd2l0aCB0aGUgc3BlY2lmaWVkCisrIyBpbXBvcnQgbGlicmFyeSBBUkcuCisrIyBJbnZva2VkIGJ5IGV2YWwnaW5nIHRoZSBsaWJ0b29sIHZhcmlhYmxlCisrIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKysjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCisrIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKKytmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD1gJERMTFRPT0wgLS1pZGVudGlmeS1zdHJpY3QgLS1pZGVudGlmeSAiJDEiYAorK30KKysKKysjIGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlIFNFQ1RJT05fTkFNRSBMSUJOQU1FcworKyMKKysjIFRoZSBpcyB0aGUgY29yZSBvZiBhIGZhbGxiYWNrIGltcGxlbWVudGF0aW9uIG9mIGEKKysjIHBsYXRmb3JtLXNwZWNpZmljIGZ1bmN0aW9uIHRvIGV4dHJhY3QgdGhlIG5hbWUgb2YgdGhlCisrIyBETEwgYXNzb2NpYXRlZCB3aXRoIHRoZSBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkgTElCTkFNRS4KKysjCisrIyBTRUNUSU9OX05BTUUgaXMgZWl0aGVyIC5pZGF0YSQ2IG9yIC5pZGF0YSQ3LCBkZXBlbmRpbmcKKysjIG9uIHRoZSBwbGF0Zm9ybSBhbmQgY29tcGlsZXIgdGhhdCBjcmVhdGVkIHRoZSBpbXBsaWIuCisrIworKyMgRWNob3MgdGhlIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlCisrIyBzcGVjaWZpZWQgaW1wb3J0IGxpYnJhcnkuCisrZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrX2NvcmUgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBtYXRjaF9saXRlcmFsPWAkRUNITyAiJDEiIHwgJFNFRCAiJHNlZF9tYWtlX2xpdGVyYWxfcmVnZXgiYAorKyAgJE9CSkRVTVAgLXMgLS1zZWN0aW9uICIkMSIgIiQyIiAyPi9kZXYvbnVsbCB8CisrICAgICRTRUQgJy9eQ29udGVudHMgb2Ygc2VjdGlvbiAnIiRtYXRjaF9saXRlcmFsIic6L3sKKysgICAgICAjIFBsYWNlIG1hcmtlciBhdCBiZWdpbm5pbmcgb2YgYXJjaGl2ZSBtZW1iZXIgZGxsbmFtZSBzZWN0aW9uCisrICAgICAgcy8uKi89PT09TUFSSz09PT0vCisrICAgICAgcAorKyAgICAgIGQKKysgICAgfQorKyAgICAjIFRoZXNlIGxpbmVzIGNhbiBzb21ldGltZXMgYmUgbG9uZ2VyIHRoYW4gNDMgY2hhcmFjdGVycywgYnV0CisrICAgICMgYXJlIGFsd2F5cyB1bmludGVyZXN0aW5nCisrICAgIC86WwkgXSpmaWxlIGZvcm1hdCBwZVtpXVx7LDFcfS0vZAorKyAgICAvXkluIGFyY2hpdmUgW146XSo6L2QKKysgICAgIyBFbnN1cmUgbWFya2VyIGlzIHByaW50ZWQKKysgICAgL149PT09TUFSSz09PT0vcAorKyAgICAjIFJlbW92ZSBhbGwgbGluZXMgd2l0aCBsZXNzIHRoYW4gNDMgY2hhcmFjdGVycworKyAgICAvXi5cezQzXH0vIWQKKysgICAgIyBGcm9tIHJlbWFpbmluZyBsaW5lcywgcmVtb3ZlIGZpcnN0IDQzIGNoYXJhY3RlcnMKKysgICAgcy9eLlx7NDNcfS8vJyB8CisrICAgICRTRUQgLW4gJworKyAgICAgICMgSm9pbiBtYXJrZXIgYW5kIGFsbCBsaW5lcyB1bnRpbCBuZXh0IG1hcmtlciBpbnRvIGEgc2luZ2xlIGxpbmUKKysgICAgICAvXj09PT1NQVJLPT09PS8gYiBwYXJhCisrICAgICAgSAorKyAgICAgICQgYiBwYXJhCisrICAgICAgYgorKyAgICAgIDpwYXJhCisrICAgICAgeAorKyAgICAgIHMvXG4vL2cKKysgICAgICAjIFJlbW92ZSB0aGUgbWFya2VyCisrICAgICAgcy9ePT09PU1BUks9PT09Ly8KKysgICAgICAjIFJlbW92ZSB0cmFpbGluZyBkb3RzIGFuZCB3aGl0ZXNwYWNlCisrICAgICAgcy9bXC4gXHRdKiQvLworKyAgICAgICMgUHJpbnQKKysgICAgICAvLi9wJyB8CisrICAgICMgd2Ugbm93IGhhdmUgYSBsaXN0LCBvbmUgZW50cnkgcGVyIGxpbmUsIG9mIHRoZSBzdHJpbmdpZmllZAorKyAgICAjIGNvbnRlbnRzIG9mIHRoZSBhcHByb3ByaWF0ZSBzZWN0aW9uIG9mIGFsbCBtZW1iZXJzIG9mIHRoZQorKyAgICAjIGFyY2hpdmUgd2hpY2ggcG9zc2VzcyB0aGF0IHNlY3Rpb24uIEhldXJpc3RpYzogZWxpbWluYXRlCisrICAgICMgYWxsIHRob3NlIHdoaWNoIGhhdmUgYSBmaXJzdCBvciBzZWNvbmQgY2hhcmFjdGVyIHRoYXQgaXMKKysgICAgIyBhICcuJyAodGhhdCBpcywgb2JqZHVtcCdzIHJlcHJlc2VudGF0aW9uIG9mIGFuIHVucHJpbnRhYmxlCisrICAgICMgY2hhcmFjdGVyLikgVGhpcyBzaG91bGQgd29yayBmb3IgYWxsIGFyY2hpdmVzIHdpdGggbGVzcyB0aGFuCisrICAgICMgMHgzMDJmIGV4cG9ydHMgLS0gYnV0IHdpbGwgZmFpbCBmb3IgRExMcyB3aG9zZSBuYW1lIGFjdHVhbGx5CisrICAgICMgYmVnaW5zIHdpdGggYSBsaXRlcmFsICcuJyBvciBhIHNpbmdsZSBjaGFyYWN0ZXIgZm9sbG93ZWQgYnkKKysgICAgIyBhICcuJy4KKysgICAgIworKyAgICAjIE9mIHRob3NlIHRoYXQgcmVtYWluLCBwcmludCB0aGUgZmlyc3Qgb25lLgorKyAgICAkU0VEIC1lICcvXlwuL2Q7L14uXC4vZDtxJworK30KKysKKysjIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3AgQVJHCisrIyBUaGlzIHByZWRpY2F0ZSByZXR1cm5zIHdpdGggemVybyBzdGF0dXMgKFRSVUUpIGlmCisrIyBBUkcgaXMgYSBHTlUvYmludXRpbHMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKKysjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCisrZnVuY19jeWdtaW5nX2dudV9pbXBsaWJfcCAoKQorK3sKKysgICRvcHRfZGVidWcKKysgIGZ1bmNfdG9fdG9vbF9maWxlICIkMSIgZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgIGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcD1gJE5NICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiB8IGV2YWwgIiRnbG9iYWxfc3ltYm9sX3BpcGUiIHwgJEVHUkVQICcgKF9oZWFkX1tBLVphLXowLTlfXStfW2FkXWwqfFtBLVphLXowLTlfXStfW2FkXWwqX2luYW1lKSQnYAorKyAgdGVzdCAtbiAiJGZ1bmNfY3lnbWluZ19nbnVfaW1wbGliX3RtcCIKKyt9CisrCisrIyBmdW5jX2N5Z21pbmdfbXNfaW1wbGliX3AgQVJHCisrIyBUaGlzIHByZWRpY2F0ZSByZXR1cm5zIHdpdGggemVybyBzdGF0dXMgKFRSVUUpIGlmCisrIyBBUkcgaXMgYW4gTVMtc3R5bGUgaW1wb3J0IGxpYnJhcnkuIFJldHVybnMKKysjIHdpdGggbm9uemVybyBzdGF0dXMgKEZBTFNFKSBvdGhlcndpc2UuCisrZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wICgpCisreworKyAgJG9wdF9kZWJ1ZworKyAgZnVuY190b190b29sX2ZpbGUgIiQxIiBmdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXA9YCROTSAiJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIgfCBldmFsICIkZ2xvYmFsX3N5bWJvbF9waXBlIiB8ICRHUkVQICdfTlVMTF9JTVBPUlRfREVTQ1JJUFRPUidgCisrICB0ZXN0IC1uICIkZnVuY19jeWdtaW5nX21zX2ltcGxpYl90bXAiCisrfQorKworKyMgZnVuY19jeWdtaW5nX2RsbF9mb3JfaW1wbGliX2ZhbGxiYWNrIEFSRworKyMgUGxhdGZvcm0tc3BlY2lmaWMgZnVuY3Rpb24gdG8gZXh0cmFjdCB0aGUKKysjIG5hbWUgb2YgdGhlIERMTCBhc3NvY2lhdGVkIHdpdGggdGhlIHNwZWNpZmllZAorKyMgaW1wb3J0IGxpYnJhcnkgQVJHLgorKyMKKysjIFRoaXMgZmFsbGJhY2sgaW1wbGVtZW50YXRpb24gaXMgZm9yIHVzZSB3aGVuICRETExUT09MCisrIyBkb2VzIG5vdCBzdXBwb3J0IHRoZSAtLWlkZW50aWZ5LXN0cmljdCBvcHRpb24uCisrIyBJbnZva2VkIGJ5IGV2YWwnaW5nIHRoZSBsaWJ0b29sIHZhcmlhYmxlCisrIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQKKysjIFJlc3VsdCBpcyBhdmFpbGFibGUgaW4gdGhlIHZhcmlhYmxlCisrIyAgICAkc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQKKytmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2sgKCkKKyt7CisrICAkb3B0X2RlYnVnCisrICBpZiBmdW5jX2N5Z21pbmdfZ251X2ltcGxpYl9wICIkMSIgOyB0aGVuCisrICAgICMgYmludXRpbHMgaW1wb3J0IGxpYnJhcnkKKysgICAgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9yZXN1bHQ9YGZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFja19jb3JlICcuaWRhdGEkNycgIiQxImAKKysgIGVsaWYgZnVuY19jeWdtaW5nX21zX2ltcGxpYl9wICIkMSIgOyB0aGVuCisrICAgICMgbXMtZ2VuZXJhdGVkIGltcG9ydCBsaWJyYXJ5CisrICAgIHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfcmVzdWx0PWBmdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWJfZmFsbGJhY2tfY29yZSAnLmlkYXRhJDYnICIkMSJgCisrICBlbHNlCisrICAgICMgdW5rbm93bgorKyAgICBzaGFyZWRsaWJfZnJvbV9saW5rbGliX3Jlc3VsdD0iIgorKyAgZmkKKyt9CisgCisgCisgIyBmdW5jX2V4dHJhY3RfYW5fYXJjaGl2ZSBkaXIgb2xkbGliCitAQCAtMjkxNyw3ICszODAxLDcgQEAgZnVuY19leHRyYWN0X2FyY2hpdmVzICgpCisgCSAgICBkYXJ3aW5fZmlsZT0KKyAJICAgIGRhcndpbl9maWxlcz0KKyAJICAgIGZvciBkYXJ3aW5fZmlsZSBpbiAkZGFyd2luX2ZpbGVsaXN0OyBkbworLQkgICAgICBkYXJ3aW5fZmlsZXM9YGZpbmQgdW5mYXQtJCQgLW5hbWUgJGRhcndpbl9maWxlIC1wcmludCB8ICROTDJTUGAKKysJICAgICAgZGFyd2luX2ZpbGVzPWBmaW5kIHVuZmF0LSQkIC1uYW1lICRkYXJ3aW5fZmlsZSAtcHJpbnQgfCBzb3J0IHwgJE5MMlNQYAorIAkgICAgICAkTElQTyAtY3JlYXRlIC1vdXRwdXQgIiRkYXJ3aW5fZmlsZSIgJGRhcndpbl9maWxlcworIAkgICAgZG9uZSAjICRkYXJ3aW5fZmlsZWxpc3QKKyAJICAgICRSTSAtcmYgdW5mYXQtJCQKK0BAIC0yOTMyLDcgKzM4MTYsNyBAQCBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgKCkKKyAgICAgICAgIGZ1bmNfZXh0cmFjdF9hbl9hcmNoaXZlICIkbXlfeGRpciIgIiRteV94YWJzIgorIAk7OworICAgICAgIGVzYWMKKy0gICAgICBteV9vbGRvYmpzPSIkbXlfb2xkb2JqcyAiYGZpbmQgJG15X3hkaXIgLW5hbWUgXCouJG9iamV4dCAtcHJpbnQgLW8gLW5hbWUgXCoubG8gLXByaW50IHwgJE5MMlNQYAorKyAgICAgIG15X29sZG9ianM9IiRteV9vbGRvYmpzICJgZmluZCAkbXlfeGRpciAtbmFtZSBcKi4kb2JqZXh0IC1wcmludCAtbyAtbmFtZSBcKi5sbyAtcHJpbnQgfCBzb3J0IHwgJE5MMlNQYAorICAgICBkb25lCisgCisgICAgIGZ1bmNfZXh0cmFjdF9hcmNoaXZlc19yZXN1bHQ9IiRteV9vbGRvYmpzIgorQEAgLTMwMTQsNyArMzg5OCwxMTAgQEAgZnVuY19mYWxsYmFja19lY2hvICgpCisgX0xURUNIT19FT0YnCisgfQorICAgICBFQ0hPPVwiJHFFQ0hPXCIKKy0gIGZpXAorKyAgZmkKKysKKysjIFZlcnkgYmFzaWMgb3B0aW9uIHBhcnNpbmcuIFRoZXNlIG9wdGlvbnMgYXJlIChhKSBzcGVjaWZpYyB0bworKyMgdGhlIGxpYnRvb2wgd3JhcHBlciwgKGIpIGFyZSBpZGVudGljYWwgYmV0d2VlbiB0aGUgd3JhcHBlcgorKyMgL3NjcmlwdC8gYW5kIHRoZSB3cmFwcGVyIC9leGVjdXRhYmxlLyB3aGljaCBpcyB1c2VkIG9ubHkgb24KKysjIHdpbmRvd3MgcGxhdGZvcm1zLCBhbmQgKGMpIGFsbCBiZWdpbiB3aXRoIHRoZSBzdHJpbmcgIi0tbHQtIgorKyMgKGFwcGxpY2F0aW9uIHByb2dyYW1zIGFyZSB1bmxpa2VseSB0byBoYXZlIG9wdGlvbnMgd2hpY2ggbWF0Y2gKKysjIHRoaXMgcGF0dGVybikuCisrIworKyMgVGhlcmUgYXJlIG9ubHkgdHdvIHN1cHBvcnRlZCBvcHRpb25zOiAtLWx0LWRlYnVnIGFuZAorKyMgLS1sdC1kdW1wLXNjcmlwdC4gVGhlcmUgaXMsIGRlbGliZXJhdGVseSwgbm8gLS1sdC1oZWxwLgorKyMKKysjIFRoZSBmaXJzdCBhcmd1bWVudCB0byB0aGlzIHBhcnNpbmcgZnVuY3Rpb24gc2hvdWxkIGJlIHRoZQorKyMgc2NyaXB0J3MgJDAgdmFsdWUsIGZvbGxvd2VkIGJ5ICIkQCIuCisrbHRfb3B0aW9uX2RlYnVnPQorK2Z1bmNfcGFyc2VfbHRfb3B0aW9ucyAoKQorK3sKKysgIGx0X3NjcmlwdF9hcmcwPVwkMAorKyAgc2hpZnQKKysgIGZvciBsdF9vcHQKKysgIGRvCisrICAgIGNhc2UgXCJcJGx0X29wdFwiIGluCisrICAgIC0tbHQtZGVidWcpIGx0X29wdGlvbl9kZWJ1Zz0xIDs7CisrICAgIC0tbHQtZHVtcC1zY3JpcHQpCisrICAgICAgICBsdF9kdW1wX0Q9XGBcJEVDSE8gXCJYXCRsdF9zY3JpcHRfYXJnMFwiIHwgJFNFRCAtZSAncy9eWC8vJyAtZSAncyUvW14vXSokJSUnXGAKKysgICAgICAgIHRlc3QgXCJYXCRsdF9kdW1wX0RcIiA9IFwiWFwkbHRfc2NyaXB0X2FyZzBcIiAmJiBsdF9kdW1wX0Q9LgorKyAgICAgICAgbHRfZHVtcF9GPVxgXCRFQ0hPIFwiWFwkbHRfc2NyaXB0X2FyZzBcIiB8ICRTRUQgLWUgJ3MvXlgvLycgLWUgJ3MlXi4qLyUlJ1xgCisrICAgICAgICBjYXQgXCJcJGx0X2R1bXBfRC9cJGx0X2R1bXBfRlwiCisrICAgICAgICBleGl0IDAKKysgICAgICA7OworKyAgICAtLWx0LSopCisrICAgICAgICBcJEVDSE8gXCJVbnJlY29nbml6ZWQgLS1sdC0gb3B0aW9uOiAnXCRsdF9vcHQnXCIgMT4mMgorKyAgICAgICAgZXhpdCAxCisrICAgICAgOzsKKysgICAgZXNhYworKyAgZG9uZQorKworKyAgIyBQcmludCB0aGUgZGVidWcgYmFubmVyIGltbWVkaWF0ZWx5OgorKyAgaWYgdGVzdCAtbiBcIlwkbHRfb3B0aW9uX2RlYnVnXCI7IHRoZW4KKysgICAgZWNobyBcIiR7b3V0cHV0bmFtZX06JHtvdXRwdXR9Olwke0xJTkVOT306IGxpYnRvb2wgd3JhcHBlciAoR05VICRQQUNLQUdFJFRJTUVTVEFNUCkgJFZFUlNJT05cIiAxPiYyCisrICBmaQorK30KKysKKysjIFVzZWQgd2hlbiAtLWx0LWRlYnVnLiBQcmludHMgaXRzIGFyZ3VtZW50cyB0byBzdGRvdXQKKysjIChyZWRpcmVjdGlvbiBpcyB0aGUgcmVzcG9uc2liaWxpdHkgb2YgdGhlIGNhbGxlcikKKytmdW5jX2x0X2R1bXBfYXJncyAoKQorK3sKKysgIGx0X2R1bXBfYXJnc19OPTE7CisrICBmb3IgbHRfYXJnCisrICBkbworKyAgICBcJEVDSE8gXCIke291dHB1dG5hbWV9OiR7b3V0cHV0fTpcJHtMSU5FTk99OiBuZXdhcmd2W1wkbHRfZHVtcF9hcmdzX05dOiBcJGx0X2FyZ1wiCisrICAgIGx0X2R1bXBfYXJnc19OPVxgZXhwciBcJGx0X2R1bXBfYXJnc19OICsgMVxgCisrICBkb25lCisrfQorKworKyMgQ29yZSBmdW5jdGlvbiBmb3IgbGF1bmNoaW5nIHRoZSB0YXJnZXQgYXBwbGljYXRpb24KKytmdW5jX2V4ZWNfcHJvZ3JhbV9jb3JlICgpCisreworKyIKKysgIGNhc2UgJGhvc3QgaW4KKysgICMgQmFja3NsYXNoZXMgc2VwYXJhdGUgZGlyZWN0b3JpZXMgb24gcGxhaW4gd2luZG93cworKyAgKi0qLW1pbmd3IHwgKi0qLW9zMiogfCAqLWNlZ2NjKikKKysgICAgJEVDSE8gIlwKKysgICAgICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgorKyAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIDE+JjIKKysgICAgICAgIGZ1bmNfbHRfZHVtcF9hcmdzIFwkezErXCJcJEBcIn0gMT4mMgorKyAgICAgIGZpCisrICAgICAgZXhlYyBcIlwkcHJvZ2RpclxcXFxcJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CisrIgorKyAgICA7OworKworKyAgKikKKysgICAgJEVDSE8gIlwKKysgICAgICBpZiB0ZXN0IC1uIFwiXCRsdF9vcHRpb25fZGVidWdcIjsgdGhlbgorKyAgICAgICAgXCRFQ0hPIFwiJHtvdXRwdXRuYW1lfToke291dHB1dH06XCR7TElORU5PfTogbmV3YXJndlswXTogXCRwcm9nZGlyL1wkcHJvZ3JhbVwiIDE+JjIKKysgICAgICAgIGZ1bmNfbHRfZHVtcF9hcmdzIFwkezErXCJcJEBcIn0gMT4mMgorKyAgICAgIGZpCisrICAgICAgZXhlYyBcIlwkcHJvZ2Rpci9cJHByb2dyYW1cIiBcJHsxK1wiXCRAXCJ9CisrIgorKyAgICA7OworKyAgZXNhYworKyAgJEVDSE8gIlwKKysgICAgICBcJEVDSE8gXCJcJDA6IGNhbm5vdCBleGVjIFwkcHJvZ3JhbSBcJCpcIiAxPiYyCisrICAgICAgZXhpdCAxCisrfQorKworKyMgQSBmdW5jdGlvbiB0byBlbmNhcHN1bGF0ZSBsYXVuY2hpbmcgdGhlIHRhcmdldCBhcHBsaWNhdGlvbgorKyMgU3RyaXBzIG9wdGlvbnMgaW4gdGhlIC0tbHQtKiBuYW1lc3BhY2UgZnJvbSBcJEAgYW5kCisrIyBsYXVuY2hlcyB0YXJnZXQgYXBwbGljYXRpb24gd2l0aCB0aGUgcmVtYWluaW5nIGFyZ3VtZW50cy4KKytmdW5jX2V4ZWNfcHJvZ3JhbSAoKQorK3sKKysgIGZvciBsdF93cl9hcmcKKysgIGRvCisrICAgIGNhc2UgXCRsdF93cl9hcmcgaW4KKysgICAgLS1sdC0qKSA7OworKyAgICAqKSBzZXQgeCBcIlwkQFwiIFwiXCRsdF93cl9hcmdcIjsgc2hpZnQ7OworKyAgICBlc2FjCisrICAgIHNoaWZ0CisrICBkb25lCisrICBmdW5jX2V4ZWNfcHJvZ3JhbV9jb3JlIFwkezErXCJcJEBcIn0KKyt9CisrCisrICAjIFBhcnNlIG9wdGlvbnMKKysgIGZ1bmNfcGFyc2VfbHRfb3B0aW9ucyBcIlwkMFwiIFwkezErXCJcJEBcIn0KKyAKKyAgICMgRmluZCB0aGUgZGlyZWN0b3J5IHRoYXQgdGhpcyBzY3JpcHQgbGl2ZXMgaW4uCisgICB0aGlzZGlyPVxgXCRFQ0hPIFwiXCRmaWxlXCIgfCAkU0VEICdzJS9bXi9dKiQlJSdcYAorQEAgLTMwNzgsNyArNDA2NSw3IEBAIF9MVEVDSE9fRU9GJworIAorICAgICAjIHJlbGluayBleGVjdXRhYmxlIGlmIG5lY2Vzc2FyeQorICAgICBpZiB0ZXN0IC1uIFwiXCRyZWxpbmtfY29tbWFuZFwiOyB0aGVuCistICAgICAgaWYgcmVsaW5rX2NvbW1hbmRfb3V0cHV0PVxgZXZhbCBcIlwkcmVsaW5rX2NvbW1hbmRcIiAyPiYxXGA7IHRoZW4gOgorKyAgICAgIGlmIHJlbGlua19jb21tYW5kX291dHB1dD1cYGV2YWwgXCRyZWxpbmtfY29tbWFuZCAyPiYxXGA7IHRoZW4gOgorICAgICAgIGVsc2UKKyAJJEVDSE8gXCJcJHJlbGlua19jb21tYW5kX291dHB1dFwiID4mMgorIAkkUk0gXCJcJHByb2dkaXIvXCRmaWxlXCIKK0BAIC0zMTAyLDYgKzQwODksMTggQEAgX0xURUNIT19FT0YnCisgCisgICBpZiB0ZXN0IC1mIFwiXCRwcm9nZGlyL1wkcHJvZ3JhbVwiOyB0aGVuIgorIAorKwkjIGZpeHVwIHRoZSBkbGwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLgorKwkjCisrCSMgRml4IHRoZSBETEwgc2VhcmNocGF0aCBpZiB3ZSBuZWVkIHRvLiAgRG8gdGhpcyBiZWZvcmUgcHJlcGVuZGluZworKwkjIHRvIHNobGlicGF0aCwgYmVjYXVzZSBvbiBXaW5kb3dzLCBib3RoIGFyZSBQQVRIIGFuZCB1bmluc3RhbGxlZAorKwkjIGxpYnJhcmllcyBtdXN0IGNvbWUgZmlyc3QuCisrCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgorKwkgICRFQ0hPICJcCisrICAgICMgQWRkIHRoZSBkbGwgc2VhcmNoIHBhdGggY29tcG9uZW50cyB0byB0aGUgZXhlY3V0YWJsZSBQQVRICisrICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICisrIgorKwlmaQorKworIAkjIEV4cG9ydCBvdXIgc2hsaWJwYXRoX3ZhciBpZiB3ZSBoYXZlIG9uZS4KKyAJaWYgdGVzdCAiJHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aCIgPSB5ZXMgJiYgdGVzdCAtbiAiJHNobGlicGF0aF92YXIiICYmIHRlc3QgLW4gIiR0ZW1wX3JwYXRoIjsgdGhlbgorIAkgICRFQ0hPICJcCitAQCAtMzExNiwzNSArNDExNSwxMCBAQCBfTFRFQ0hPX0VPRicKKyAiCisgCWZpCisgCistCSMgZml4dXAgdGhlIGRsbCBzZWFyY2hwYXRoIGlmIHdlIG5lZWQgdG8uCistCWlmIHRlc3QgLW4gIiRkbGxzZWFyY2hwYXRoIjsgdGhlbgorLQkgICRFQ0hPICJcCistICAgICMgQWRkIHRoZSBkbGwgc2VhcmNoIHBhdGggY29tcG9uZW50cyB0byB0aGUgZXhlY3V0YWJsZSBQQVRICistICAgIFBBVEg9JGRsbHNlYXJjaHBhdGg6XCRQQVRICistIgorLQlmaQorLQorIAkkRUNITyAiXAorICAgICBpZiB0ZXN0IFwiXCRsaWJ0b29sX2V4ZWN1dGVfbWFnaWNcIiAhPSBcIiRtYWdpY1wiOyB0aGVuCisgICAgICAgIyBSdW4gdGhlIGFjdHVhbCBwcm9ncmFtIHdpdGggb3VyIGFyZ3VtZW50cy4KKy0iCistCWNhc2UgJGhvc3QgaW4KKy0JIyBCYWNrc2xhc2hlcyBzZXBhcmF0ZSBkaXJlY3RvcmllcyBvbiBwbGFpbiB3aW5kb3dzCistCSotKi1taW5ndyB8ICotKi1vczIqIHwgKi1jZWdjYyopCistCSAgJEVDSE8gIlwKKy0gICAgICBleGVjIFwiXCRwcm9nZGlyXFxcXFwkcHJvZ3JhbVwiIFwkezErXCJcJEBcIn0KKy0iCistCSAgOzsKKy0KKy0JKikKKy0JICAkRUNITyAiXAorLSAgICAgIGV4ZWMgXCJcJHByb2dkaXIvXCRwcm9ncmFtXCIgXCR7MStcIlwkQFwifQorLSIKKy0JICA7OworLQllc2FjCistCSRFQ0hPICJcCistICAgICAgXCRFQ0hPIFwiXCQwOiBjYW5ub3QgZXhlYyBcJHByb2dyYW0gXCQqXCIgMT4mMgorLSAgICAgIGV4aXQgMQorKyAgICAgIGZ1bmNfZXhlY19wcm9ncmFtIFwkezErXCJcJEBcIn0KKyAgICAgZmkKKyAgIGVsc2UKKyAgICAgIyBUaGUgcHJvZ3JhbSBkb2Vzbid0IGV4aXN0LgorQEAgLTMxNTgsMTY2ICs0MTMyLDYgQEAgZmlcCisgfQorIAorIAorLSMgZnVuY190b19ob3N0X3BhdGggYXJnCistIworLSMgQ29udmVydCBwYXRocyB0byBob3N0IGZvcm1hdCB3aGVuIHVzZWQgd2l0aCBidWlsZCB0b29scy4KKy0jIEludGVuZGVkIGZvciB1c2Ugd2l0aCAibmF0aXZlIiBtaW5ndyAod2hlcmUgbGlidG9vbCBpdHNlbGYKKy0jIGlzIHJ1bm5pbmcgdW5kZXIgdGhlIG1zeXMgc2hlbGwpLCBvciBpbiB0aGUgZm9sbG93aW5nIGNyb3NzLQorLSMgYnVpbGQgZW52aXJvbm1lbnRzOgorLSMgICAgJGJ1aWxkICAgICAgICAgICRob3N0CistIyAgICBtaW5ndyAobXN5cykgICAgbWluZ3cgIFtlLmcuIG5hdGl2ZV0KKy0jICAgIGN5Z3dpbiAgICAgICAgICBtaW5ndworLSMgICAgKm5peCArIHdpbmUgICAgIG1pbmd3CistIyB3aGVyZSB3aW5lIGlzIGVxdWlwcGVkIHdpdGggdGhlIGB3aW5lcGF0aCcgZXhlY3V0YWJsZS4KKy0jIEluIHRoZSBuYXRpdmUgbWluZ3cgY2FzZSwgdGhlIChtc3lzKSBzaGVsbCBhdXRvbWF0aWNhbGx5CistIyBjb252ZXJ0cyBwYXRocyBmb3IgYW55IG5vbi1tc3lzIGFwcGxpY2F0aW9ucyBpdCBsYXVuY2hlcywKKy0jIGJ1dCB0aGF0IGZhY2lsaXR5IGlzbid0IGF2YWlsYWJsZSBmcm9tIGluc2lkZSB0aGUgY3dyYXBwZXIuCistIyBTaW1pbGFyIGFjY29tbW9kYXRpb25zIGFyZSBuZWNlc3NhcnkgZm9yICRob3N0IG1pbmd3IGFuZAorLSMgJGJ1aWxkIGN5Z3dpbi4gIENhbGxpbmcgdGhpcyBmdW5jdGlvbiBkb2VzIG5vIGhhcm0gZm9yIG90aGVyCistIyAkaG9zdC8kYnVpbGQgY29tYmluYXRpb25zIG5vdCBsaXN0ZWQgYWJvdmUuCistIworLSMgQVJHIGlzIHRoZSBwYXRoIChvbiAkYnVpbGQpIHRoYXQgc2hvdWxkIGJlIGNvbnZlcnRlZCB0bworLSMgdGhlIHByb3BlciByZXByZXNlbnRhdGlvbiBmb3IgJGhvc3QuIFRoZSByZXN1bHQgaXMgc3RvcmVkCistIyBpbiAkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0LgorLWZ1bmNfdG9faG9zdF9wYXRoICgpCisteworLSAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PSIkMSIKKy0gIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorLSAgICBjYXNlICRob3N0IGluCistICAgICAgKm1pbmd3KiApCistICAgICAgICBsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCistICAgICAgICBjYXNlICRidWlsZCBpbgorLSAgICAgICAgICAqbWluZ3cqICkgIyBhY3R1YWxseSwgbXN5cworLSAgICAgICAgICAgICMgYXdrd2FyZDogY21kIGFwcGVuZHMgc3BhY2VzIHRvIHJlc3VsdAorLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gKCBjbWQgLy9jIGVjaG8gIiQxIiApIDI+L2Rldi9udWxsIHwKKy0gICAgICAgICAgICAgICRTRUQgLWUgJ3MvWyBdKiQvLycgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKy0gICAgICAgICAgICA7OworLSAgICAgICAgICAqY3lnd2luKiApCistICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfcmVzdWx0PWBjeWdwYXRoIC13ICIkMSIgfAorLQkgICAgICAkU0VEIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCistICAgICAgICAgICAgOzsKKy0gICAgICAgICAgKiApCistICAgICAgICAgICAgIyBVbmZvcnR1bmF0ZWx5LCB3aW5lcGF0aCBkb2VzIG5vdCBleGl0IHdpdGggYSBub24temVybworLSAgICAgICAgICAgICMgZXJyb3IgY29kZSwgc28gd2UgYXJlIGZvcmNlZCB0byBjaGVjayB0aGUgY29udGVudHMgb2YKKy0gICAgICAgICAgICAjIHN0ZG91dC4gT24gdGhlIG90aGVyIGhhbmQsIGlmIHRoZSBjb21tYW5kIGlzIG5vdAorLSAgICAgICAgICAgICMgZm91bmQsIHRoZSBzaGVsbCB3aWxsIHNldCBhbiBleGl0IGNvZGUgb2YgMTI3IGFuZCBwcmludAorLSAgICAgICAgICAgICMgKmFuIGVycm9yIG1lc3NhZ2UqIHRvIHN0ZG91dC4gU28gd2UgbXVzdCBjaGVjayBmb3IgYm90aAorLSAgICAgICAgICAgICMgZXJyb3IgY29kZSBvZiB6ZXJvIEFORCBub24tZW1wdHkgc3Rkb3V0LCB3aGljaCBleHBsYWlucworLSAgICAgICAgICAgICMgdGhlIG9kZCBjb25zdHJ1Y3Rpb246CistICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhfdG1wMT1gd2luZXBhdGggLXcgIiQxIiAyPi9kZXYvbnVsbGAKKy0gICAgICAgICAgICBpZiB0ZXN0ICIkPyIgLWVxIDAgJiYgdGVzdCAtbiAiJHtmdW5jX3RvX2hvc3RfcGF0aF90bXAxfSI7IHRoZW4KKy0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdD1gJEVDSE8gIiRmdW5jX3RvX2hvc3RfcGF0aF90bXAxIiB8CistICAgICAgICAgICAgICAgICRTRUQgLWUgIiRsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5ImAKKy0gICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAjIEFsbG93IHdhcm5pbmcgYmVsb3cuCistICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9CistICAgICAgICAgICAgZmkKKy0gICAgICAgICAgICA7OworLSAgICAgICAgZXNhYworLSAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCIgOyB0aGVuCistICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgaG9zdCBwYXRoIGNvcnJlc3BvbmRpbmcgdG8iCistICAgICAgICAgIGZ1bmNfZXJyb3IgIiAgXGAkMSciCistICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvbnRpbnVpbmcsIGJ1dCB1bmluc3RhbGxlZCBleGVjdXRhYmxlcyBtYXkgbm90IHdvcmsuIgorLSAgICAgICAgICAjIEZhbGxiYWNrOgorLSAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQ9IiQxIgorLSAgICAgICAgZmkKKy0gICAgICAgIDs7CistICAgIGVzYWMKKy0gIGZpCistfQorLSMgZW5kOiBmdW5jX3RvX2hvc3RfcGF0aAorLQorLSMgZnVuY190b19ob3N0X3BhdGhsaXN0IGFyZworLSMKKy0jIENvbnZlcnQgcGF0aGxpc3RzIHRvIGhvc3QgZm9ybWF0IHdoZW4gdXNlZCB3aXRoIGJ1aWxkIHRvb2xzLgorLSMgU2VlIGZ1bmNfdG9faG9zdF9wYXRoKCksIGFib3ZlLiBUaGlzIGZ1bmN0aW9uIHN1cHBvcnRzIHRoZQorLSMgZm9sbG93aW5nICRidWlsZC8kaG9zdCBjb21iaW5hdGlvbnMgKGJ1dCBkb2VzIG5vIGhhcm0gZm9yCistIyBjb21iaW5hdGlvbnMgbm90IGxpc3RlZCBoZXJlKToKKy0jICAgICRidWlsZCAgICAgICAgICAkaG9zdAorLSMgICAgbWluZ3cgKG1zeXMpICAgIG1pbmd3ICBbZS5nLiBuYXRpdmVdCistIyAgICBjeWd3aW4gICAgICAgICAgbWluZ3cKKy0jICAgICpuaXggKyB3aW5lICAgICBtaW5ndworLSMKKy0jIFBhdGggc2VwYXJhdG9ycyBhcmUgYWxzbyBjb252ZXJ0ZWQgZnJvbSAkYnVpbGQgZm9ybWF0IHRvCistIyAkaG9zdCBmb3JtYXQuIElmIEFSRyBiZWdpbnMgb3IgZW5kcyB3aXRoIGEgcGF0aCBzZXBhcmF0b3IKKy0jIGNoYXJhY3RlciwgaXQgaXMgcHJlc2VydmVkIChidXQgY29udmVydGVkIHRvICRob3N0IGZvcm1hdCkKKy0jIG9uIG91dHB1dC4KKy0jCistIyBBUkcgaXMgYSBwYXRobGlzdCAob24gJGJ1aWxkKSB0aGF0IHNob3VsZCBiZSBjb252ZXJ0ZWQgdG8KKy0jIHRoZSBwcm9wZXIgcmVwcmVzZW50YXRpb24gb24gJGhvc3QuIFRoZSByZXN1bHQgaXMgc3RvcmVkCistIyBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdC4KKy1mdW5jX3RvX2hvc3RfcGF0aGxpc3QgKCkKKy17CistICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkMSIKKy0gIGlmIHRlc3QgLW4gIiQxIjsgdGhlbgorLSAgICBjYXNlICRob3N0IGluCistICAgICAgKm1pbmd3KiApCistICAgICAgICBsdF9zZWRfbmFpdmVfYmFja3NsYXNoaWZ5PSdzfFxcXFwqfFxcfGc7c3wvfFxcfGc7c3xcXHxcXFxcfGcnCistICAgICAgICAjIFJlbW92ZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvciBjaGFyYWN0ZXJzIGZyb20KKy0gICAgICAgICMgQVJHLiBtc3lzIGJlaGF2aW9yIGlzIGluY29uc2lzdGVudCBoZXJlLCBjeWdwYXRoIHR1cm5zIHRoZW0KKy0gICAgICAgICMgaW50byAnLjsnIGFuZCAnOy4nLCBhbmQgd2luZXBhdGggaWdub3JlcyB0aGVtIGNvbXBsZXRlbHkuCistCWZ1bmNfc3RyaXBuYW1lIDogOiAiJDEiCistICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CistICAgICAgICBjYXNlICRidWlsZCBpbgorLSAgICAgICAgICAqbWluZ3cqICkgIyBBY3R1YWxseSwgbXN5cy4KKy0gICAgICAgICAgICAjIEF3a3dhcmQ6IGNtZCBhcHBlbmRzIHNwYWNlcyB0byByZXN1bHQuCistICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD1gCistCSAgICAgICggY21kIC8vYyBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiICkgMj4vZGV2L251bGwgfAorLQkgICAgICAkU0VEIC1lICdzL1sgXSokLy8nIC1lICIkbHRfc2VkX25haXZlX2JhY2tzbGFzaGlmeSJgCistICAgICAgICAgICAgOzsKKy0gICAgICAgICAgKmN5Z3dpbiogKQorLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9YGN5Z3BhdGggLXcgLXAgIiRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfdG1wMSIgfAorLSAgICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3NlZF9uYWl2ZV9iYWNrc2xhc2hpZnkiYAorLSAgICAgICAgICAgIDs7CistICAgICAgICAgICogKQorLSAgICAgICAgICAgICMgdW5mb3J0dW5hdGVseSwgd2luZXBhdGggZG9lc24ndCBjb252ZXJ0IHBhdGhsaXN0cworLSAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQ9IiIKKy0gICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTPSRJRlMKKy0gICAgICAgICAgICBJRlM9OgorLSAgICAgICAgICAgIGZvciBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfZiBpbiAkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEgOyBkbworLSAgICAgICAgICAgICAgSUZTPSRmdW5jX3RvX2hvc3RfcGF0aGxpc3Rfb2xkSUZTCistICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZnVuY190b19ob3N0X3BhdGhsaXN0X2YiIDsgdGhlbgorLSAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aCAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9mIgorLSAgICAgICAgICAgICAgICBpZiB0ZXN0IC1uICIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IiA7IHRoZW4KKy0gICAgICAgICAgICAgICAgICBpZiB0ZXN0IC16ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCIgOyB0aGVuCistICAgICAgICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PSIkZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorLSAgICAgICAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQgIjskZnVuY190b19ob3N0X3BhdGhfcmVzdWx0IgorLSAgICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICAgIGZpCistICAgICAgICAgICAgICBmaQorLSAgICAgICAgICAgIGRvbmUKKy0gICAgICAgICAgICBJRlM9JGZ1bmNfdG9faG9zdF9wYXRobGlzdF9vbGRJRlMKKy0gICAgICAgICAgICA7OworLSAgICAgICAgZXNhYworLSAgICAgICAgaWYgdGVzdCAteiAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOyB0aGVuCistICAgICAgICAgIGZ1bmNfZXJyb3IgIkNvdWxkIG5vdCBkZXRlcm1pbmUgdGhlIGhvc3QgcGF0aChzKSBjb3JyZXNwb25kaW5nIHRvIgorLSAgICAgICAgICBmdW5jX2Vycm9yICIgIFxgJDEnIgorLSAgICAgICAgICBmdW5jX2Vycm9yICJDb250aW51aW5nLCBidXQgdW5pbnN0YWxsZWQgZXhlY3V0YWJsZXMgbWF5IG5vdCB3b3JrLiIKKy0gICAgICAgICAgIyBGYWxsYmFjay4gVGhpcyBtYXkgYnJlYWsgaWYgJDEgY29udGFpbnMgRE9TLXN0eWxlIGRyaXZlCistICAgICAgICAgICMgc3BlY2lmaWNhdGlvbnMuIFRoZSBmaXggaXMgbm90IHRvIGNvbXBsaWNhdGUgdGhlIGV4cHJlc3Npb24KKy0gICAgICAgICAgIyBiZWxvdywgYnV0IGZvciB0aGUgdXNlciB0byBwcm92aWRlIGEgd29ya2luZyB3aW5lIGluc3RhbGxhdGlvbgorLSAgICAgICAgICAjIHdpdGggd2luZXBhdGggc28gdGhhdCBwYXRoIHRyYW5zbGF0aW9uIGluIHRoZSBjcm9zcy10by1taW5ndworLSAgICAgICAgICAjIGNhc2Ugd29ya3MgcHJvcGVybHkuCistICAgICAgICAgIGx0X3JlcGxhY2VfcGF0aHNlcF9uaXhfdG9fZG9zPSJzfDp8O3xnIgorLSAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0PWBlY2hvICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3RtcDEiIHxcCistICAgICAgICAgICAgJFNFRCAtZSAiJGx0X3JlcGxhY2VfcGF0aHNlcF9uaXhfdG9fZG9zImAKKy0gICAgICAgIGZpCistICAgICAgICAjIE5vdywgYWRkIHRoZSBsZWFkaW5nIGFuZCB0cmFpbGluZyBwYXRoIHNlcGFyYXRvcnMgYmFjaworLSAgICAgICAgY2FzZSAiJDEiIGluCistICAgICAgICAgIDoqICkgZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdD0iOyRmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0IgorLSAgICAgICAgICAgIDs7CistICAgICAgICBlc2FjCistICAgICAgICBjYXNlICIkMSIgaW4KKy0gICAgICAgICAgKjogKSBmdW5jX2FwcGVuZCBmdW5jX3RvX2hvc3RfcGF0aGxpc3RfcmVzdWx0ICI7IgorLSAgICAgICAgICAgIDs7CistICAgICAgICBlc2FjCistICAgICAgICA7OworLSAgICBlc2FjCistICBmaQorLX0KKy0jIGVuZDogZnVuY190b19ob3N0X3BhdGhsaXN0CistCisgIyBmdW5jX2VtaXRfY3dyYXBwZXJleGVfc3JjCisgIyBlbWl0IHRoZSBzb3VyY2UgY29kZSBmb3IgYSB3cmFwcGVyIGV4ZWN1dGFibGUgb24gc3Rkb3V0CisgIyBNdXN0IE9OTFkgYmUgY2FsbGVkIGZyb20gd2l0aGluIGZ1bmNfbW9kZV9saW5rIGJlY2F1c2UKK0BAIC0zMzM0LDEwICs0MTQ4LDYgQEAgZnVuY19lbWl0X2N3cmFwcGVyZXhlX3NyYyAoKQorIAorICAgIFRoaXMgd3JhcHBlciBleGVjdXRhYmxlIHNob3VsZCBuZXZlciBiZSBtb3ZlZCBvdXQgb2YgdGhlIGJ1aWxkIGRpcmVjdG9yeS4KKyAgICBJZiBpdCBpcywgaXQgd2lsbCBub3Qgb3BlcmF0ZSBjb3JyZWN0bHkuCistCistICAgQ3VycmVudGx5LCBpdCBzaW1wbHkgZXhlY3MgdGhlIHdyYXBwZXIgKnNjcmlwdCogIiRTSEVMTCAkb3V0cHV0IiwKKy0gICBidXQgY291bGQgZXZlbnR1YWxseSBhYnNvcmIgYWxsIG9mIHRoZSBzY3JpcHRzIGZ1bmN0aW9uYWxpdHkgYW5kCistICAgZXhlYyAkb2JqZGlyLyRvdXRwdXRuYW1lIGRpcmVjdGx5LgorICovCisgRU9GCisgCSAgICBjYXQgPDwiRU9GIgorQEAgLTM0NjIsMjIgKzQyNzIsMTMgQEAgaW50IHNldGVudiAoY29uc3QgY2hhciAqLCBjb25zdCBjaGFyICosIGludCk7CisgICBpZiAoc3RhbGUpIHsgZnJlZSAoKHZvaWQgKikgc3RhbGUpOyBzdGFsZSA9IDA7IH0gXAorIH0gd2hpbGUgKDApCisgCistI3VuZGVmIExUV1JBUFBFUl9ERUJVR1BSSU5URgorLSNpZiBkZWZpbmVkIExUX0RFQlVHV1JBUFBFUgorLSMgZGVmaW5lIExUV1JBUFBFUl9ERUJVR1BSSU5URihhcmdzKSBsdHdyYXBwZXJfZGVidWdwcmludGYgYXJncworLXN0YXRpYyB2b2lkCistbHR3cmFwcGVyX2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmbXQsIC4uLikKKy17CistICAgIHZhX2xpc3QgYXJnczsKKy0gICAgdmFfc3RhcnQgKGFyZ3MsIGZtdCk7CistICAgICh2b2lkKSB2ZnByaW50ZiAoc3RkZXJyLCBmbXQsIGFyZ3MpOworLSAgICB2YV9lbmQgKGFyZ3MpOworLX0KKysjaWYgZGVmaW5lZChMVF9ERUJVR1dSQVBQRVIpCisrc3RhdGljIGludCBsdF9kZWJ1ZyA9IDE7CisgI2Vsc2UKKy0jIGRlZmluZSBMVFdSQVBQRVJfREVCVUdQUklOVEYoYXJncykKKytzdGF0aWMgaW50IGx0X2RlYnVnID0gMDsKKyAjZW5kaWYKKyAKKy1jb25zdCBjaGFyICpwcm9ncmFtX25hbWUgPSBOVUxMOworK2NvbnN0IGNoYXIgKnByb2dyYW1fbmFtZSA9ICJsaWJ0b29sLXdyYXBwZXIiOyAvKiBpbiBjYXNlIHhzdHJkdXAgZmFpbHMgKi8KKyAKKyB2b2lkICp4bWFsbG9jIChzaXplX3QgbnVtKTsKKyBjaGFyICp4c3RyZHVwIChjb25zdCBjaGFyICpzdHJpbmcpOworQEAgLTM0ODcsNyArNDI4OCwxMCBAQCBjaGFyICpjaGFzZV9zeW1saW5rcyAoY29uc3QgY2hhciAqcGF0aHNwZWMpOworIGludCBtYWtlX2V4ZWN1dGFibGUgKGNvbnN0IGNoYXIgKnBhdGgpOworIGludCBjaGVja19leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKTsKKyBjaGFyICpzdHJlbmR6YXAgKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KTsKKy12b2lkIGx0X2ZhdGFsIChjb25zdCBjaGFyICptZXNzYWdlLCAuLi4pOworK3ZvaWQgbHRfZGVidWdwcmludGYgKGNvbnN0IGNoYXIgKmZpbGUsIGludCBsaW5lLCBjb25zdCBjaGFyICpmbXQsIC4uLik7Cisrdm9pZCBsdF9mYXRhbCAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLik7Cisrc3RhdGljIGNvbnN0IGNoYXIgKm5vbm51bGwgKGNvbnN0IGNoYXIgKnMpOworK3N0YXRpYyBjb25zdCBjaGFyICpub25lbXB0eSAoY29uc3QgY2hhciAqcyk7Cisgdm9pZCBsdF9zZXRlbnYgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKTsKKyBjaGFyICpsdF9leHRlbmRfc3RyIChjb25zdCBjaGFyICpvcmlnX3ZhbHVlLCBjb25zdCBjaGFyICphZGQsIGludCB0b19lbmQpOworIHZvaWQgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSk7CitAQCAtMzQ5NywxNCArNDMwMSwxNCBAQCB2b2lkIGx0X2R1bXBfc2NyaXB0IChGSUxFICpmKTsKKyBFT0YKKyAKKyAJICAgIGNhdCA8PEVPRgorLWNvbnN0IGNoYXIgKiBNQUdJQ19FWEUgPSAiJG1hZ2ljX2V4ZSI7Cisrdm9sYXRpbGUgY29uc3QgY2hhciAqIE1BR0lDX0VYRSA9ICIkbWFnaWNfZXhlIjsKKyBjb25zdCBjaGFyICogTElCX1BBVEhfVkFSTkFNRSA9ICIkc2hsaWJwYXRoX3ZhciI7CisgRU9GCisgCisgCSAgICBpZiB0ZXN0ICIkc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoIiA9IHllcyAmJiB0ZXN0IC1uICIkc2hsaWJwYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHRlbXBfcnBhdGgiOyB0aGVuCistICAgICAgICAgICAgICBmdW5jX3RvX2hvc3RfcGF0aGxpc3QgIiR0ZW1wX3JwYXRoIgorKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiR0ZW1wX3JwYXRoIgorIAkgICAgICBjYXQgPDxFT0YKKy1jb25zdCBjaGFyICogTElCX1BBVEhfVkFMVUUgICA9ICIkZnVuY190b19ob3N0X3BhdGhsaXN0X3Jlc3VsdCI7CisrY29uc3QgY2hhciAqIExJQl9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRoX3Jlc3VsdCI7CisgRU9GCisgCSAgICBlbHNlCisgCSAgICAgIGNhdCA8PCJFT0YiCitAQCAtMzUxMywxMCArNDMxNywxMCBAQCBFT0YKKyAJICAgIGZpCisgCisgCSAgICBpZiB0ZXN0IC1uICIkZGxsc2VhcmNocGF0aCI7IHRoZW4KKy0gICAgICAgICAgICAgIGZ1bmNfdG9faG9zdF9wYXRobGlzdCAiJGRsbHNlYXJjaHBhdGg6IgorKyAgICAgICAgICAgICAgZnVuY190b19ob3N0X3BhdGggIiRkbGxzZWFyY2hwYXRoOiIKKyAJICAgICAgY2F0IDw8RU9GCisgY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBUk5BTUUgPSAiUEFUSCI7CistY29uc3QgY2hhciAqIEVYRV9QQVRIX1ZBTFVFICAgPSAiJGZ1bmNfdG9faG9zdF9wYXRobGlzdF9yZXN1bHQiOworK2NvbnN0IGNoYXIgKiBFWEVfUEFUSF9WQUxVRSAgID0gIiRmdW5jX3RvX2hvc3RfcGF0aF9yZXN1bHQiOworIEVPRgorIAkgICAgZWxzZQorIAkgICAgICBjYXQgPDwiRU9GIgorQEAgLTM1MzksMTIgKzQzNDMsMTAgQEAgRU9GCisgCSAgICBjYXQgPDwiRU9GIgorIAorICNkZWZpbmUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggICAgICAgICAiLS1sdC0iCistI2RlZmluZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEggIDUKKyAKKy1zdGF0aWMgY29uc3Qgc2l6ZV90IG9wdF9wcmVmaXhfbGVuICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWF9MRU5HVEg7Cisgc3RhdGljIGNvbnN0IGNoYXIgKmx0d3JhcHBlcl9vcHRpb25fcHJlZml4ID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVg7CistCisgc3RhdGljIGNvbnN0IGNoYXIgKmR1bXBzY3JpcHRfb3B0ICAgICAgID0gTFRXUkFQUEVSX09QVElPTl9QUkVGSVggImR1bXAtc2NyaXB0IjsKKytzdGF0aWMgY29uc3QgY2hhciAqZGVidWdfb3B0ICAgICAgICAgICAgPSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCAiZGVidWciOworIAorIGludAorIG1haW4gKGludCBhcmdjLCBjaGFyICphcmd2W10pCitAQCAtMzU2MSwxMCArNDM2MywxMyBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqYXJndltdKQorICAgaW50IGk7CisgCisgICBwcm9ncmFtX25hbWUgPSAoY2hhciAqKSB4c3RyZHVwIChiYXNlX25hbWUgKGFyZ3ZbMF0pKTsKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgYXJndlswXSAgICAgIDogJXNcbiIsIGFyZ3ZbMF0pKTsKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgcHJvZ3JhbV9uYW1lIDogJXNcbiIsIHByb2dyYW1fbmFtZSkpOworKyAgbmV3YXJneiA9IFhNQUxMT0MgKGNoYXIgKiwgYXJnYyArIDEpOworIAorLSAgLyogdmVyeSBzaW1wbGUgYXJnIHBhcnNpbmc7IGRvbid0IHdhbnQgdG8gcmVseSBvbiBnZXRvcHQgKi8KKysgIC8qIHZlcnkgc2ltcGxlIGFyZyBwYXJzaW5nOyBkb24ndCB3YW50IHRvIHJlbHkgb24gZ2V0b3B0CisrICAgKiBhbHNvLCBjb3B5IGFsbCBub24gY3dyYXBwZXIgb3B0aW9ucyB0byBuZXdhcmd6LCBleGNlcHQKKysgICAqIGFyZ3pbMF0sIHdoaWNoIGlzIGhhbmRsZWQgZGlmZmVyZW50bHkKKysgICAqLworKyAgbmV3YXJnYz0wOworICAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKKyAgICAgeworICAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGR1bXBzY3JpcHRfb3B0KSA9PSAwKQorQEAgLTM1ODEsMjEgKzQzODYsNTQgQEAgRU9GCisgCSAgbHRfZHVtcF9zY3JpcHQgKHN0ZG91dCk7CisgCSAgcmV0dXJuIDA7CisgCX0KKysgICAgICBpZiAoc3RyY21wIChhcmd2W2ldLCBkZWJ1Z19vcHQpID09IDApCisrCXsKKysgICAgICAgICAgbHRfZGVidWcgPSAxOworKyAgICAgICAgICBjb250aW51ZTsKKysJfQorKyAgICAgIGlmIChzdHJjbXAgKGFyZ3ZbaV0sIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4KSA9PSAwKQorKyAgICAgICAgeworKyAgICAgICAgICAvKiBob3dldmVyLCBpZiB0aGVyZSBpcyBhbiBvcHRpb24gaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCisrICAgICAgICAgICAgIG5hbWVzcGFjZSwgYnV0IGl0IGlzIG5vdCBvbmUgb2YgdGhlIG9uZXMgd2Uga25vdyBhYm91dCBhbmQKKysgICAgICAgICAgICAgaGF2ZSBhbHJlYWR5IGRlYWx0IHdpdGgsIGFib3ZlIChpbmx1ZGluZyBkdW1wLXNjcmlwdCksIHRoZW4KKysgICAgICAgICAgICAgcmVwb3J0IGFuIGVycm9yLiBPdGhlcndpc2UsIHRhcmdldHMgbWlnaHQgYmVnaW4gdG8gYmVsaWV2ZQorKyAgICAgICAgICAgICB0aGV5IGFyZSBhbGxvd2VkIHRvIHVzZSBvcHRpb25zIGluIHRoZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWAorKyAgICAgICAgICAgICBuYW1lc3BhY2UuIFRoZSBmaXJzdCB0aW1lIGFueSB1c2VyIGNvbXBsYWlucyBhYm91dCB0aGlzLCB3ZSdsbAorKyAgICAgICAgICAgICBuZWVkIHRvIG1ha2UgTFRXUkFQUEVSX09QVElPTl9QUkVGSVggYSBjb25maWd1cmUtdGltZSBvcHRpb24KKysgICAgICAgICAgICAgb3IgYSBjb25maWd1cmUuYWMtc2V0dGFibGUgdmFsdWUuCisrICAgICAgICAgICAqLworKyAgICAgICAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLAorKwkJICAgICJ1bnJlY29nbml6ZWQgJXMgb3B0aW9uOiAnJXMnIiwKKysgICAgICAgICAgICAgICAgICAgIGx0d3JhcHBlcl9vcHRpb25fcHJlZml4LCBhcmd2W2ldKTsKKysgICAgICAgIH0KKysgICAgICAvKiBvdGhlcndpc2UgLi4uICovCisrICAgICAgbmV3YXJnelsrK25ld2FyZ2NdID0geHN0cmR1cCAoYXJndltpXSk7CisgICAgIH0KKysgIG5ld2FyZ3pbKytuZXdhcmdjXSA9IE5VTEw7CisrCisrRU9GCisrCSAgICBjYXQgPDxFT0YKKysgIC8qIFRoZSBHTlUgYmFubmVyIG11c3QgYmUgdGhlIGZpcnN0IG5vbi1lcnJvciBkZWJ1ZyBtZXNzYWdlICovCisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAibGlidG9vbCB3cmFwcGVyIChHTlUgJFBBQ0tBR0UkVElNRVNUQU1QKSAkVkVSU0lPTlxuIik7CisrRU9GCisrCSAgICBjYXQgPDwiRU9GIgorKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywgIihtYWluKSBhcmd2WzBdOiAlc1xuIiwgYXJndlswXSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIHByb2dyYW1fbmFtZTogJXNcbiIsIHByb2dyYW1fbmFtZSk7CisgCistICBuZXdhcmd6ID0gWE1BTExPQyAoY2hhciAqLCBhcmdjICsgMSk7CisgICB0bXBfcGF0aHNwZWMgPSBmaW5kX2V4ZWN1dGFibGUgKGFyZ3ZbMF0pOworICAgaWYgKHRtcF9wYXRoc3BlYyA9PSBOVUxMKQorLSAgICBsdF9mYXRhbCAoIkNvdWxkbid0IGZpbmQgJXMiLCBhcmd2WzBdKTsKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZm91bmQgZXhlIChiZWZvcmUgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKKy0JCQkgIHRtcF9wYXRoc3BlYykpOworKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiY291bGRuJ3QgZmluZCAlcyIsIGFyZ3ZbMF0pOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysgICAgICAgICAgICAgICAgICAiKG1haW4pIGZvdW5kIGV4ZSAoYmVmb3JlIHN5bWxpbmsgY2hhc2UpIGF0OiAlc1xuIiwKKysJCSAgdG1wX3BhdGhzcGVjKTsKKyAKKyAgIGFjdHVhbF9jd3JhcHBlcl9wYXRoID0gY2hhc2Vfc3ltbGlua3MgKHRtcF9wYXRoc3BlYyk7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGZvdW5kIGV4ZSAoYWZ0ZXIgc3ltbGluayBjaGFzZSkgYXQgOiAlc1xuIiwKKy0JCQkgIGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLAorKyAgICAgICAgICAgICAgICAgICIobWFpbikgZm91bmQgZXhlIChhZnRlciBzeW1saW5rIGNoYXNlKSBhdDogJXNcbiIsCisrCQkgIGFjdHVhbF9jd3JhcHBlcl9wYXRoKTsKKyAgIFhGUkVFICh0bXBfcGF0aHNwZWMpOworIAorLSAgYWN0dWFsX2N3cmFwcGVyX25hbWUgPSB4c3RyZHVwKCBiYXNlX25hbWUgKGFjdHVhbF9jd3JhcHBlcl9wYXRoKSk7CisrICBhY3R1YWxfY3dyYXBwZXJfbmFtZSA9IHhzdHJkdXAgKGJhc2VfbmFtZSAoYWN0dWFsX2N3cmFwcGVyX3BhdGgpKTsKKyAgIHN0cmVuZHphcCAoYWN0dWFsX2N3cmFwcGVyX3BhdGgsIGFjdHVhbF9jd3JhcHBlcl9uYW1lKTsKKyAKKyAgIC8qIHdyYXBwZXIgbmFtZSB0cmFuc2Zvcm1zICovCitAQCAtMzYxMyw4ICs0NDUxLDkgQEAgRU9GCisgICB0YXJnZXRfbmFtZSA9IHRtcF9wYXRoc3BlYzsKKyAgIHRtcF9wYXRoc3BlYyA9IDA7CisgCistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1haW4pIGxpYnRvb2wgdGFyZ2V0IG5hbWU6ICVzXG4iLAorLQkJCSAgdGFyZ2V0X25hbWUpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICIobWFpbikgbGlidG9vbCB0YXJnZXQgbmFtZTogJXNcbiIsCisrCQkgIHRhcmdldF9uYW1lKTsKKyBFT0YKKyAKKyAJICAgIGNhdCA8PEVPRgorQEAgLTM2NjQsMzUgKzQ1MDMsMTkgQEAgRU9GCisgCisgICBsdF9zZXRlbnYgKCJCSU5fU0giLCAieHBnNCIpOyAvKiBmb3IgVHJ1NjQgKi8KKyAgIGx0X3NldGVudiAoIkRVQUxDQVNFIiwgIjEiKTsgIC8qIGZvciBNU0sgc2ggKi8KKy0gIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOworKyAgLyogVXBkYXRlIHRoZSBETEwgc2VhcmNocGF0aC4gIEVYRV9QQVRIX1ZBTFVFICgkZGxsc2VhcmNocGF0aCkgbXVzdAorKyAgICAgYmUgcHJlcGVuZGVkIGJlZm9yZSAodGhhdCBpcywgYXBwZWFyIGFmdGVyKSBMSUJfUEFUSF9WQUxVRSAoJHRlbXBfcnBhdGgpCisrICAgICBiZWNhdXNlIG9uIFdpbmRvd3MsIGJvdGggKl9WQVJOQU1FcyBhcmUgUEFUSCBidXQgdW5pbnN0YWxsZWQKKysgICAgIGxpYnJhcmllcyBtdXN0IGNvbWUgZmlyc3QuICovCisgICBsdF91cGRhdGVfZXhlX3BhdGggKEVYRV9QQVRIX1ZBUk5BTUUsIEVYRV9QQVRIX1ZBTFVFKTsKKysgIGx0X3VwZGF0ZV9saWJfcGF0aCAoTElCX1BBVEhfVkFSTkFNRSwgTElCX1BBVEhfVkFMVUUpOworIAorLSAgbmV3YXJnYz0wOworLSAgZm9yIChpID0gMTsgaSA8IGFyZ2M7IGkrKykKKy0gICAgeworLSAgICAgIGlmIChzdHJuY21wIChhcmd2W2ldLCBsdHdyYXBwZXJfb3B0aW9uX3ByZWZpeCwgb3B0X3ByZWZpeF9sZW4pID09IDApCistICAgICAgICB7CistICAgICAgICAgIC8qIGhvd2V2ZXIsIGlmIHRoZXJlIGlzIGFuIG9wdGlvbiBpbiB0aGUgTFRXUkFQUEVSX09QVElPTl9QUkVGSVgKKy0gICAgICAgICAgICAgbmFtZXNwYWNlLCBidXQgaXQgaXMgbm90IG9uZSBvZiB0aGUgb25lcyB3ZSBrbm93IGFib3V0IGFuZAorLSAgICAgICAgICAgICBoYXZlIGFscmVhZHkgZGVhbHQgd2l0aCwgYWJvdmUgKGlubHVkaW5nIGR1bXAtc2NyaXB0KSwgdGhlbgorLSAgICAgICAgICAgICByZXBvcnQgYW4gZXJyb3IuIE90aGVyd2lzZSwgdGFyZ2V0cyBtaWdodCBiZWdpbiB0byBiZWxpZXZlCistICAgICAgICAgICAgIHRoZXkgYXJlIGFsbG93ZWQgdG8gdXNlIG9wdGlvbnMgaW4gdGhlIExUV1JBUFBFUl9PUFRJT05fUFJFRklYCistICAgICAgICAgICAgIG5hbWVzcGFjZS4gVGhlIGZpcnN0IHRpbWUgYW55IHVzZXIgY29tcGxhaW5zIGFib3V0IHRoaXMsIHdlJ2xsCistICAgICAgICAgICAgIG5lZWQgdG8gbWFrZSBMVFdSQVBQRVJfT1BUSU9OX1BSRUZJWCBhIGNvbmZpZ3VyZS10aW1lIG9wdGlvbgorLSAgICAgICAgICAgICBvciBhIGNvbmZpZ3VyZS5hYy1zZXR0YWJsZSB2YWx1ZS4KKy0gICAgICAgICAgICovCistICAgICAgICAgIGx0X2ZhdGFsICgiVW5yZWNvZ25pemVkIG9wdGlvbiBpbiAlcyBuYW1lc3BhY2U6ICclcyciLAorLSAgICAgICAgICAgICAgICAgICAgbHR3cmFwcGVyX29wdGlvbl9wcmVmaXgsIGFyZ3ZbaV0pOworLSAgICAgICAgfQorLSAgICAgIC8qIG90aGVyd2lzZSAuLi4gKi8KKy0gICAgICBuZXdhcmd6WysrbmV3YXJnY10gPSB4c3RyZHVwIChhcmd2W2ldKTsKKy0gICAgfQorLSAgbmV3YXJnelsrK25ld2FyZ2NdID0gTlVMTDsKKy0KKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAgICAgKCgiKG1haW4pIGx0X2FyZ3ZfemVybyA6ICVzXG4iLCAobHRfYXJndl96ZXJvID8gbHRfYXJndl96ZXJvIDogIjxOVUxMPiIpKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIGx0X2FyZ3ZfemVybzogJXNcbiIsCisrCQkgIG5vbm51bGwgKGx0X2FyZ3ZfemVybykpOworICAgZm9yIChpID0gMDsgaSA8IG5ld2FyZ2M7IGkrKykKKyAgICAgeworLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgbmV3YXJnelslZF0gICA6ICVzXG4iLCBpLCAobmV3YXJneltpXSA/IG5ld2FyZ3pbaV0gOiAiPE5VTEw+IikpKTsKKysgICAgICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1haW4pIG5ld2FyZ3pbJWRdOiAlc1xuIiwKKysJCSAgICAgIGksIG5vbm51bGwgKG5ld2FyZ3pbaV0pKTsKKyAgICAgfQorIAorIEVPRgorQEAgLTM3MDYsNyArNDUyOSw5IEBAIEVPRgorICAgaWYgKHJ2YWwgPT0gLTEpCisgICAgIHsKKyAgICAgICAvKiBmYWlsZWQgdG8gc3RhcnQgcHJvY2VzcyAqLworLSAgICAgIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobWFpbikgZmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQgXCIlc1wiOiBlcnJubyA9ICVkXG4iLCBsdF9hcmd2X3plcm8sIGVycm5vKSk7CisrICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSAgICAgICIobWFpbikgZmFpbGVkIHRvIGxhdW5jaCB0YXJnZXQgXCIlc1wiOiAlc1xuIiwKKysJCSAgICAgIGx0X2FyZ3ZfemVybywgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOworICAgICAgIHJldHVybiAxMjc7CisgICAgIH0KKyAgIHJldHVybiBydmFsOworQEAgLTM3MjgsNyArNDU1Myw3IEBAIHhtYWxsb2MgKHNpemVfdCBudW0pCisgeworICAgdm9pZCAqcCA9ICh2b2lkICopIG1hbGxvYyAobnVtKTsKKyAgIGlmICghcCkKKy0gICAgbHRfZmF0YWwgKCJNZW1vcnkgZXhoYXVzdGVkIik7CisrICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJtZW1vcnkgZXhoYXVzdGVkIik7CisgCisgICByZXR1cm4gcDsKKyB9CitAQCAtMzc2Miw4ICs0NTg3LDggQEAgY2hlY2tfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqcGF0aCkKKyB7CisgICBzdHJ1Y3Qgc3RhdCBzdDsKKyAKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIoY2hlY2tfZXhlY3V0YWJsZSkgIDogJXNcbiIsCistCQkJICBwYXRoID8gKCpwYXRoID8gcGF0aCA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIoY2hlY2tfZXhlY3V0YWJsZSk6ICVzXG4iLAorKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5IChwYXRoKSk7CisgICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKKyAgICAgcmV0dXJuIDA7CisgCitAQCAtMzc4MCw4ICs0NjA1LDggQEAgbWFrZV9leGVjdXRhYmxlIChjb25zdCBjaGFyICpwYXRoKQorICAgaW50IHJ2YWwgPSAwOworICAgc3RydWN0IHN0YXQgc3Q7CisgCistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKG1ha2VfZXhlY3V0YWJsZSkgICA6ICVzXG4iLAorLQkJCSAgcGF0aCA/ICgqcGF0aCA/IHBhdGggOiAiRU1QVFkhIikgOiAiTlVMTCEiKSk7CisrICBsdF9kZWJ1Z3ByaW50ZiAoX19GSUxFX18sIF9fTElORV9fLCAiKG1ha2VfZXhlY3V0YWJsZSk6ICVzXG4iLAorKyAgICAgICAgICAgICAgICAgIG5vbmVtcHR5IChwYXRoKSk7CisgICBpZiAoKCFwYXRoKSB8fCAoISpwYXRoKSkKKyAgICAgcmV0dXJuIDA7CisgCitAQCAtMzgwNyw4ICs0NjMyLDggQEAgZmluZF9leGVjdXRhYmxlIChjb25zdCBjaGFyICp3cmFwcGVyKQorICAgaW50IHRtcF9sZW47CisgICBjaGFyICpjb25jYXRfbmFtZTsKKyAKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIoZmluZF9leGVjdXRhYmxlKSAgIDogJXNcbiIsCistCQkJICB3cmFwcGVyID8gKCp3cmFwcGVyID8gd3JhcHBlciA6ICJFTVBUWSEiKSA6ICJOVUxMISIpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sICIoZmluZF9leGVjdXRhYmxlKTogJXNcbiIsCisrICAgICAgICAgICAgICAgICAgbm9uZW1wdHkgKHdyYXBwZXIpKTsKKyAKKyAgIGlmICgod3JhcHBlciA9PSBOVUxMKSB8fCAoKndyYXBwZXIgPT0gJ1wwJykpCisgICAgIHJldHVybiBOVUxMOworQEAgLTM4NjEsNyArNDY4Niw4IEBAIGZpbmRfZXhlY3V0YWJsZSAoY29uc3QgY2hhciAqd3JhcHBlcikKKyAJCXsKKyAJCSAgLyogZW1wdHkgcGF0aDogY3VycmVudCBkaXJlY3RvcnkgKi8KKyAJCSAgaWYgKGdldGN3ZCAodG1wLCBMVF9QQVRITUFYKSA9PSBOVUxMKQorLQkJICAgIGx0X2ZhdGFsICgiZ2V0Y3dkIGZhaWxlZCIpOworKwkJICAgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sICJnZXRjd2QgZmFpbGVkOiAlcyIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOworIAkJICB0bXBfbGVuID0gc3RybGVuICh0bXApOworIAkJICBjb25jYXRfbmFtZSA9CisgCQkgICAgWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7CitAQCAtMzg4Niw3ICs0NzEyLDggQEAgZmluZF9leGVjdXRhYmxlIChjb25zdCBjaGFyICp3cmFwcGVyKQorICAgICB9CisgICAvKiBSZWxhdGl2ZSBwYXRoIHwgbm90IGZvdW5kIGluIHBhdGg6IHByZXBlbmQgY3dkICovCisgICBpZiAoZ2V0Y3dkICh0bXAsIExUX1BBVEhNQVgpID09IE5VTEwpCistICAgIGx0X2ZhdGFsICgiZ2V0Y3dkIGZhaWxlZCIpOworKyAgICBsdF9mYXRhbCAoX19GSUxFX18sIF9fTElORV9fLCAiZ2V0Y3dkIGZhaWxlZDogJXMiLAorKyAgICAgICAgICAgICAgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOworICAgdG1wX2xlbiA9IHN0cmxlbiAodG1wKTsKKyAgIGNvbmNhdF9uYW1lID0gWE1BTExPQyAoY2hhciwgdG1wX2xlbiArIDEgKyBzdHJsZW4gKHdyYXBwZXIpICsgMSk7CisgICBtZW1jcHkgKGNvbmNhdF9uYW1lLCB0bXAsIHRtcF9sZW4pOworQEAgLTM5MTIsOCArNDczOSw5IEBAIGNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKKyAgIGludCBoYXNfc3ltbGlua3MgPSAwOworICAgd2hpbGUgKHN0cmxlbiAodG1wX3BhdGhzcGVjKSAmJiAhaGFzX3N5bWxpbmtzKQorICAgICB7CistICAgICAgTFRXUkFQUEVSX0RFQlVHUFJJTlRGICgoImNoZWNraW5nIHBhdGggY29tcG9uZW50IGZvciBzeW1saW5rczogJXNcbiIsCistCQkJICAgICAgdG1wX3BhdGhzcGVjKSk7CisrICAgICAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSAgICAgICJjaGVja2luZyBwYXRoIGNvbXBvbmVudCBmb3Igc3ltbGlua3M6ICVzXG4iLAorKwkJICAgICAgdG1wX3BhdGhzcGVjKTsKKyAgICAgICBpZiAobHN0YXQgKHRtcF9wYXRoc3BlYywgJnMpID09IDApCisgCXsKKyAJICBpZiAoU19JU0xOSyAocy5zdF9tb2RlKSAhPSAwKQorQEAgLTM5MzUsOCArNDc2Myw5IEBAIGNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKKyAJfQorICAgICAgIGVsc2UKKyAJeworLQkgIGNoYXIgKmVycnN0ciA9IHN0cmVycm9yIChlcnJubyk7CistCSAgbHRfZmF0YWwgKCJFcnJvciBhY2Nlc3NpbmcgZmlsZSAlcyAoJXMpIiwgdG1wX3BhdGhzcGVjLCBlcnJzdHIpOworKwkgIGx0X2ZhdGFsIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICAgImVycm9yIGFjY2Vzc2luZyBmaWxlIFwiJXNcIjogJXMiLAorKwkJICAgIHRtcF9wYXRoc3BlYywgbm9ubnVsbCAoc3RyZXJyb3IgKGVycm5vKSkpOworIAl9CisgICAgIH0KKyAgIFhGUkVFICh0bXBfcGF0aHNwZWMpOworQEAgLTM5NDksNyArNDc3OCw4IEBAIGNoYXNlX3N5bWxpbmtzIChjb25zdCBjaGFyICpwYXRoc3BlYykKKyAgIHRtcF9wYXRoc3BlYyA9IHJlYWxwYXRoIChwYXRoc3BlYywgYnVmKTsKKyAgIGlmICh0bXBfcGF0aHNwZWMgPT0gMCkKKyAgICAgeworLSAgICAgIGx0X2ZhdGFsICgiQ291bGQgbm90IGZvbGxvdyBzeW1saW5rcyBmb3IgJXMiLCBwYXRoc3BlYyk7CisrICAgICAgbHRfZmF0YWwgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSJjb3VsZCBub3QgZm9sbG93IHN5bWxpbmtzIGZvciAlcyIsIHBhdGhzcGVjKTsKKyAgICAgfQorICAgcmV0dXJuIHhzdHJkdXAgKHRtcF9wYXRoc3BlYyk7CisgI2VuZGlmCitAQCAtMzk3NSwxMSArNDgwNSwyNSBAQCBzdHJlbmR6YXAgKGNoYXIgKnN0ciwgY29uc3QgY2hhciAqcGF0KQorICAgcmV0dXJuIHN0cjsKKyB9CisgCisrdm9pZAorK2x0X2RlYnVncHJpbnRmIChjb25zdCBjaGFyICpmaWxlLCBpbnQgbGluZSwgY29uc3QgY2hhciAqZm10LCAuLi4pCisreworKyAgdmFfbGlzdCBhcmdzOworKyAgaWYgKGx0X2RlYnVnKQorKyAgICB7CisrICAgICAgKHZvaWQpIGZwcmludGYgKHN0ZGVyciwgIiVzOiVzOiVkOiAiLCBwcm9ncmFtX25hbWUsIGZpbGUsIGxpbmUpOworKyAgICAgIHZhX3N0YXJ0IChhcmdzLCBmbXQpOworKyAgICAgICh2b2lkKSB2ZnByaW50ZiAoc3RkZXJyLCBmbXQsIGFyZ3MpOworKyAgICAgIHZhX2VuZCAoYXJncyk7CisrICAgIH0KKyt9CisrCisgc3RhdGljIHZvaWQKKy1sdF9lcnJvcl9jb3JlIChpbnQgZXhpdF9zdGF0dXMsIGNvbnN0IGNoYXIgKm1vZGUsCisrbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICpmaWxlLAorKwkgICAgICAgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1vZGUsCisgCSAgICAgICBjb25zdCBjaGFyICptZXNzYWdlLCB2YV9saXN0IGFwKQorIHsKKy0gIGZwcmludGYgKHN0ZGVyciwgIiVzOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBtb2RlKTsKKysgIGZwcmludGYgKHN0ZGVyciwgIiVzOiVzOiVkOiAlczogIiwgcHJvZ3JhbV9uYW1lLCBmaWxlLCBsaW5lLCBtb2RlKTsKKyAgIHZmcHJpbnRmIChzdGRlcnIsIG1lc3NhZ2UsIGFwKTsKKyAgIGZwcmludGYgKHN0ZGVyciwgIi5cbiIpOworIAorQEAgLTM5ODgsMjAgKzQ4MzIsMzIgQEAgbHRfZXJyb3JfY29yZSAoaW50IGV4aXRfc3RhdHVzLCBjb25zdCBjaGFyICptb2RlLAorIH0KKyAKKyB2b2lkCistbHRfZmF0YWwgKGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKKytsdF9mYXRhbCAoY29uc3QgY2hhciAqZmlsZSwgaW50IGxpbmUsIGNvbnN0IGNoYXIgKm1lc3NhZ2UsIC4uLikKKyB7CisgICB2YV9saXN0IGFwOworICAgdmFfc3RhcnQgKGFwLCBtZXNzYWdlKTsKKy0gIGx0X2Vycm9yX2NvcmUgKEVYSVRfRkFJTFVSRSwgIkZBVEFMIiwgbWVzc2FnZSwgYXApOworKyAgbHRfZXJyb3JfY29yZSAoRVhJVF9GQUlMVVJFLCBmaWxlLCBsaW5lLCAiRkFUQUwiLCBtZXNzYWdlLCBhcCk7CisgICB2YV9lbmQgKGFwKTsKKyB9CisgCisrc3RhdGljIGNvbnN0IGNoYXIgKgorK25vbm51bGwgKGNvbnN0IGNoYXIgKnMpCisreworKyAgcmV0dXJuIHMgPyBzIDogIihudWxsKSI7CisrfQorKworK3N0YXRpYyBjb25zdCBjaGFyICoKKytub25lbXB0eSAoY29uc3QgY2hhciAqcykKKyt7CisrICByZXR1cm4gKHMgJiYgISpzKSA/ICIoZW1wdHkpIiA6IG5vbm51bGwgKHMpOworK30KKysKKyB2b2lkCisgbHRfc2V0ZW52IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKKyB7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3NldGVudikgc2V0dGluZyAnJXMnIHRvICclcydcbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCistICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSAgIihsdF9zZXRlbnYpIHNldHRpbmcgJyVzJyB0byAnJXMnXG4iLAorKyAgICAgICAgICAgICAgICAgIG5vbm51bGwgKG5hbWUpLCBub25udWxsICh2YWx1ZSkpOworICAgeworICNpZmRlZiBIQVZFX1NFVEVOVgorICAgICAvKiBhbHdheXMgbWFrZSBhIGNvcHksIGZvciBjb25zaXN0ZW5jeSB3aXRoICFIQVZFX1NFVEVOViAqLworQEAgLTQwNDksOSArNDkwNSw5IEBAIGx0X2V4dGVuZF9zdHIgKGNvbnN0IGNoYXIgKm9yaWdfdmFsdWUsIGNvbnN0IGNoYXIgKmFkZCwgaW50IHRvX2VuZCkKKyB2b2lkCisgbHRfdXBkYXRlX2V4ZV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICp2YWx1ZSkKKyB7CistICBMVFdSQVBQRVJfREVCVUdQUklOVEYgKCgiKGx0X3VwZGF0ZV9leGVfcGF0aCkgbW9kaWZ5aW5nICclcycgYnkgcHJlcGVuZGluZyAnJXMnXG4iLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgKG5hbWUgPyBuYW1lIDogIjxOVUxMPiIpLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgKHZhbHVlID8gdmFsdWUgOiAiPE5VTEw+IikpKTsKKysgIGx0X2RlYnVncHJpbnRmIChfX0ZJTEVfXywgX19MSU5FX18sCisrCQkgICIobHRfdXBkYXRlX2V4ZV9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCisrICAgICAgICAgICAgICAgICAgbm9ubnVsbCAobmFtZSksIG5vbm51bGwgKHZhbHVlKSk7CisgCisgICBpZiAobmFtZSAmJiAqbmFtZSAmJiB2YWx1ZSAmJiAqdmFsdWUpCisgICAgIHsKK0BAIC00MDcwLDkgKzQ5MjYsOSBAQCBsdF91cGRhdGVfZXhlX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQorIHZvaWQKKyBsdF91cGRhdGVfbGliX3BhdGggKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKnZhbHVlKQorIHsKKy0gIExUV1JBUFBFUl9ERUJVR1BSSU5URiAoKCIobHRfdXBkYXRlX2xpYl9wYXRoKSBtb2RpZnlpbmcgJyVzJyBieSBwcmVwZW5kaW5nICclcydcbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAobmFtZSA/IG5hbWUgOiAiPE5VTEw+IiksCistICAgICAgICAgICAgICAgICAgICAgICAgICAodmFsdWUgPyB2YWx1ZSA6ICI8TlVMTD4iKSkpOworKyAgbHRfZGVidWdwcmludGYgKF9fRklMRV9fLCBfX0xJTkVfXywKKysJCSAgIihsdF91cGRhdGVfbGliX3BhdGgpIG1vZGlmeWluZyAnJXMnIGJ5IHByZXBlbmRpbmcgJyVzJ1xuIiwKKysgICAgICAgICAgICAgICAgICBub25udWxsIChuYW1lKSwgbm9ubnVsbCAodmFsdWUpKTsKKyAKKyAgIGlmIChuYW1lICYmICpuYW1lICYmIHZhbHVlICYmICp2YWx1ZSkKKyAgICAgeworQEAgLTQyMjIsNyArNTA3OCw3IEBAIEVPRgorIGZ1bmNfd2luMzJfaW1wb3J0X2xpYl9wICgpCisgeworICAgICAkb3B0X2RlYnVnCistICAgIGNhc2UgYGV2YWwgIiRmaWxlX21hZ2ljX2NtZCBcIlwkMVwiIDI+L2Rldi9udWxsIiB8ICRTRUQgLWUgMTBxYCBpbgorKyAgICBjYXNlIGBldmFsICRmaWxlX21hZ2ljX2NtZCBcIlwkMVwiIDI+L2Rldi9udWxsIHwgJFNFRCAtZSAxMHFgIGluCisgICAgICppbXBvcnQqKSA6IDs7CisgICAgICopIGZhbHNlIDs7CisgICAgIGVzYWMKK0BAIC00NDAxLDkgKzUyNTcsOSBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgOzsKKyAJICAqKQorIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgorLQkgICAgICBkbGZpbGVzPSIkZGxmaWxlcyAkYXJnIgorKwkgICAgICBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGFyZyIKKyAJICAgIGVsc2UKKy0JICAgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGFyZyIKKysJICAgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRhcmciCisgCSAgICBmaQorIAkgICAgcHJldj0KKyAJICAgIGNvbnRpbnVlCitAQCAtNDQyNyw3ICs1MjgzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICotKi1kYXJ3aW4qKQorIAkgICAgICBjYXNlICIkZGVwbGlicyAiIGluCisgCQkqIiAkcWFyZy5sdGZyYW1ld29yayAiKikgOzsKKy0JCSopIGRlcGxpYnM9IiRkZXBsaWJzICRxYXJnLmx0ZnJhbWV3b3JrIiAjIHRoaXMgaXMgZml4ZWQgbGF0ZXIKKysJCSopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkcWFyZy5sdGZyYW1ld29yayIgIyB0aGlzIGlzIGZpeGVkIGxhdGVyCisgCQkgICA7OworIAkgICAgICBlc2FjCisgCSAgICAgIDs7CitAQCAtNDQ0Niw3ICs1MzAyLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIG1vcmVhcmdzPQorIAkgICAgZm9yIGZpbCBpbiBgY2F0ICIkc2F2ZV9hcmciYAorIAkgICAgZG8KKy0jCSAgICAgIG1vcmVhcmdzPSIkbW9yZWFyZ3MgJGZpbCIKKysjCSAgICAgIGZ1bmNfYXBwZW5kIG1vcmVhcmdzICIgJGZpbCIKKyAJICAgICAgYXJnPSRmaWwKKyAJICAgICAgIyBBIGxpYnRvb2wtY29udHJvbGxlZCBvYmplY3QuCisgCitAQCAtNDQ3NSw3ICs1MzMxLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAKKyAJCSAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgorIAkJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX2xpYnMiID0geWVzICYmIHRlc3QgIiRkbG9wZW5fc3VwcG9ydCIgPSB5ZXM7IHRoZW4KKy0JCSAgICAgIGRsZmlsZXM9IiRkbGZpbGVzICRwaWNfb2JqZWN0IgorKwkJICAgICAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRwaWNfb2JqZWN0IgorIAkJICAgICAgcHJldj0KKyAJCSAgICAgIGNvbnRpbnVlCisgCQkgICAgZWxzZQorQEAgLTQ0ODcsNyArNTM0Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCQkgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCisgCQkgIGlmIHRlc3QgIiRwcmV2IiA9IGRscHJlZmlsZXM7IHRoZW4KKyAJCSAgICAjIFByZWxvYWQgdGhlIG9sZC1zdHlsZSBvYmplY3QuCistCQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJHBpY19vYmplY3QiCisrCQkgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRwaWNfb2JqZWN0IgorIAkJICAgIHByZXY9CisgCQkgIGZpCisgCitAQCAtNDU1NywxMiArNTQxMywxMiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGlmIHRlc3QgIiRwcmV2IiA9IHJwYXRoOyB0aGVuCisgCSAgICBjYXNlICIkcnBhdGggIiBpbgorIAkgICAgKiIgJGFyZyAiKikgOzsKKy0JICAgICopIHJwYXRoPSIkcnBhdGggJGFyZyIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGFyZyIgOzsKKyAJICAgIGVzYWMKKyAJICBlbHNlCisgCSAgICBjYXNlICIkeHJwYXRoICIgaW4KKyAJICAgICoiICRhcmcgIiopIDs7CistCSAgICAqKSB4cnBhdGg9IiR4cnBhdGggJGFyZyIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRhcmciIDs7CisgCSAgICBlc2FjCisgCSAgZmkKKyAJICBwcmV2PQorQEAgLTQ1NzQsMjggKzU0MzAsMjggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBjb250aW51ZQorIAkgIDs7CisgCXdlYWspCistCSAgd2Vha19saWJzPSIkd2Vha19saWJzICRhcmciCisrCSAgZnVuY19hcHBlbmQgd2Vha19saWJzICIgJGFyZyIKKyAJICBwcmV2PQorIAkgIGNvbnRpbnVlCisgCSAgOzsKKyAJeGNjbGlua2VyKQorLQkgIGxpbmtlcl9mbGFncz0iJGxpbmtlcl9mbGFncyAkcWFyZyIKKy0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRxYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGxpbmtlcl9mbGFncyAiICRxYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJHFhcmciCisgCSAgcHJldj0KKyAJICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkcWFyZyIKKyAJICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJHFhcmciCisgCSAgY29udGludWUKKyAJICA7OworIAl4Y29tcGlsZXIpCistCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkcWFyZyIKKysJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRxYXJnIgorIAkgIHByZXY9CisgCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHFhcmciCisgCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRxYXJnIgorIAkgIGNvbnRpbnVlCisgCSAgOzsKKyAJeGxpbmtlcikKKy0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJHFhcmciCistCSAgY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkd2wkcWFyZyIKKysJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkcWFyZyIKKysJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR3bCRxYXJnIgorIAkgIHByZXY9CisgCSAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJHdsJHFhcmciCisgCSAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICR3bCRxYXJnIgorQEAgLTQ2ODYsMTUgKzU1NDIsMTYgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJOzsKKyAKKyAgICAgICAtTCopCistCWZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRhcmciCistCWRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CistCWlmIHRlc3QgLXogIiRkaXIiOyB0aGVuCisrCWZ1bmNfc3RyaXBuYW1lICItTCIgJycgIiRhcmciCisrCWlmIHRlc3QgLXogIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiOyB0aGVuCisgCSAgaWYgdGVzdCAiJCMiIC1ndCAwOyB0aGVuCisgCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJyZXF1aXJlIG5vIHNwYWNlIGJldHdlZW4gXGAtTCcgYW5kIFxgJDEnIgorIAkgIGVsc2UKKyAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIm5lZWQgcGF0aCBmb3IgXGAtTCcgb3B0aW9uIgorIAkgIGZpCisgCWZpCisrCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwlkaXI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorIAkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KKyAJY2FzZSAkZGlyIGluCisgCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgOzsKK0BAIC00NzA2LDEwICs1NTYzLDE2IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgOzsKKyAJZXNhYworIAljYXNlICIkZGVwbGlicyAiIGluCistCSoiIC1MJGRpciAiKikgOzsKKysJKiIgLUwkZGlyICIqIHwgKiIgJGFyZyAiKikKKysJICAjIFdpbGwgb25seSBoYXBwZW4gZm9yIGFic29sdXRlIG9yIHN5c3Jvb3QgYXJndW1lbnRzCisrCSAgOzsKKyAJKikKKy0JICBkZXBsaWJzPSIkZGVwbGlicyAtTCRkaXIiCistCSAgbGliX3NlYXJjaF9wYXRoPSIkbGliX3NlYXJjaF9wYXRoICRkaXIiCisrCSAgIyBQcmVzZXJ2ZSBzeXNyb290LCBidXQgbmV2ZXIgaW5jbHVkZSByZWxhdGl2ZSBkaXJlY3RvcmllcworKwkgIGNhc2UgJGRpciBpbgorKwkgICAgW1xcL10qIHwgW0EtWmEtel06W1xcL10qIHwgPSopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIiA7OworKwkgICAgKikgZnVuY19hcHBlbmQgZGVwbGlicyAiIC1MJGRpciIgOzsKKysJICBlc2FjCisrCSAgZnVuY19hcHBlbmQgbGliX3NlYXJjaF9wYXRoICIgJGRpciIKKyAJICA7OworIAllc2FjCisgCWNhc2UgJGhvc3QgaW4KK0BAIC00NzE4LDEyICs1NTgxLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCisgCSAgKiI6JGRpcjoiKikgOzsKKyAJICA6OikgZGxsc2VhcmNocGF0aD0kZGlyOzsKKy0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokZGlyIjs7CisrCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiRkaXIiOzsKKyAJICBlc2FjCisgCSAgY2FzZSA6JGRsbHNlYXJjaHBhdGg6IGluCisgCSAgKiI6JHRlc3RiaW5kaXI6IiopIDs7CisgCSAgOjopIGRsbHNlYXJjaHBhdGg9JHRlc3RiaW5kaXI7OworLQkgICopIGRsbHNlYXJjaHBhdGg9IiRkbGxzZWFyY2hwYXRoOiR0ZXN0YmluZGlyIjs7CisrCSAgKikgZnVuY19hcHBlbmQgZGxsc2VhcmNocGF0aCAiOiR0ZXN0YmluZGlyIjs7CisgCSAgZXNhYworIAkgIDs7CisgCWVzYWMKK0BAIC00NzQ3LDcgKzU2MTAsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgOzsKKyAJICAqLSotcmhhcHNvZHkqIHwgKi0qLWRhcndpbjEuWzAxMl0pCisgCSAgICAjIFJoYXBzb2R5IEMgYW5kIG1hdGggbGlicmFyaWVzIGFyZSBpbiB0aGUgU3lzdGVtIGZyYW1ld29yaworLQkgICAgZGVwbGlicz0iJGRlcGxpYnMgU3lzdGVtLmx0ZnJhbWV3b3JrIgorKwkgICAgZnVuY19hcHBlbmQgZGVwbGlicyAiIFN5c3RlbS5sdGZyYW1ld29yayIKKyAJICAgIGNvbnRpbnVlCisgCSAgICA7OworIAkgICotKi1zY28zLjJ2NSogfCAqLSotc2NvNXY2KikKK0BAIC00NzU4LDkgKzU2MjEsNiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgIyBDb21waWxlciBpbnNlcnRzIGxpYmMgaW4gdGhlIGNvcnJlY3QgcGxhY2UgZm9yIHRocmVhZHMgdG8gd29yaworIAkgICAgdGVzdCAiWCRhcmciID0gIlgtbGMiICYmIGNvbnRpbnVlCisgCSAgICA7OworLQkgICotKi1saW51eCopCistCSAgICB0ZXN0ICJYJGFyZyIgPSAiWC1sYyIgJiYgY29udGludWUKKy0JICAgIDs7CisgCSAgZXNhYworIAllbGlmIHRlc3QgIlgkYXJnIiA9ICJYLWxjX3IiOyB0aGVuCisgCSBjYXNlICRob3N0IGluCitAQCAtNDc3MCw3ICs1NjMwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgOzsKKyAJIGVzYWMKKyAJZmkKKy0JZGVwbGlicz0iJGRlcGxpYnMgJGFyZyIKKysJZnVuY19hcHBlbmQgZGVwbGlicyAiICRhcmciCisgCWNvbnRpbnVlCisgCTs7CisgCitAQCAtNDc4Miw4ICs1NjQyLDggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAgICAgICAjIFRydTY0IFVOSVggdXNlcyAtbW9kZWwgW2FyZ10gdG8gZGV0ZXJtaW5lIHRoZSBsYXlvdXQgb2YgQysrCisgICAgICAgIyBjbGFzc2VzLCBuYW1lIG1hbmdsaW5nLCBhbmQgZXhjZXB0aW9uIGhhbmRsaW5nLgorICAgICAgICMgRGFyd2luIHVzZXMgdGhlIC1hcmNoIGZsYWcgdG8gZGV0ZXJtaW5lIG91dHB1dCBhcmNoaXRlY3R1cmUuCistICAgICAgLW1vZGVsfC1hcmNofC1pc3lzcm9vdCkKKy0JY29tcGlsZXJfZmxhZ3M9IiRjb21waWxlcl9mbGFncyAkYXJnIgorKyAgICAgIC1tb2RlbHwtYXJjaHwtaXN5c3Jvb3R8LS1zeXNyb290KQorKwlmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCisgCWZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRhcmciCisgCWZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAkYXJnIgorIAlwcmV2PXhjb21waWxlcgorQEAgLTQ3OTEsMTIgKzU2NTEsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJOzsKKyAKKyAgICAgICAtbXR8LW10aHJlYWRzfC1rdGhyZWFkfC1LdGhyZWFkfC1wdGhyZWFkfC1wdGhyZWFkc3wtLXRocmVhZC1zYWZlfC10aHJlYWRzKQorLQljb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCisrCWZ1bmNfYXBwZW5kIGNvbXBpbGVyX2ZsYWdzICIgJGFyZyIKKyAJZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKKyAJZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCisgCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCisgCSAgICAqIiAkYXJnICIqKSA7OworLQkgICAgKiApIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzPSIkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgJGFyZyIgOzsKKysJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRhcmciIDs7CisgCWVzYWMKKyAJY29udGludWUKKyAJOzsKK0BAIC00ODYzLDEzICs1NzIzLDE3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSMgV2UgbmVlZCBhbiBhYnNvbHV0ZSBwYXRoLgorIAljYXNlICRkaXIgaW4KKyAJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSA7OworKwk9KikKKysJICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRkaXIiCisrCSAgZGlyPSRsdF9zeXNyb290JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKwkgIDs7CisgCSopCisgCSAgZnVuY19mYXRhbF9lcnJvciAib25seSBhYnNvbHV0ZSBydW4tcGF0aHMgYXJlIGFsbG93ZWQiCisgCSAgOzsKKyAJZXNhYworIAljYXNlICIkeHJwYXRoICIgaW4KKyAJKiIgJGRpciAiKikgOzsKKy0JKikgeHJwYXRoPSIkeHJwYXRoICRkaXIiIDs7CisrCSopIGZ1bmNfYXBwZW5kIHhycGF0aCAiICRkaXIiIDs7CisgCWVzYWMKKyAJY29udGludWUKKyAJOzsKK0BAIC00OTIyLDggKzU3ODYsOCBAQCBmdW5jX21vZGVfbGluayAoKQorIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KKyAJICBJRlM9IiRzYXZlX2lmcyIKKyAgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCistCSAgYXJnPSIkYXJnICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKy0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJICBmdW5jX2FwcGVuZCBhcmcgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisrCSAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgCWRvbmUKKyAJSUZTPSIkc2F2ZV9pZnMiCisgCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKK0BAIC00OTM4LDkgKzU4MDIsOSBAQCBmdW5jX21vZGVfbGluayAoKQorIAlmb3IgZmxhZyBpbiAkYXJnczsgZG8KKyAJICBJRlM9IiRzYXZlX2lmcyIKKyAgICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGZsYWciCistCSAgYXJnPSIkYXJnICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKy0JICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKy0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorKwkgIGZ1bmNfYXBwZW5kIGFyZyAiICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICR3bCRmdW5jX3F1b3RlX2Zvcl9ldmFsX3Jlc3VsdCIKKysJICBmdW5jX2FwcGVuZCBsaW5rZXJfZmxhZ3MgIiAkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgCWRvbmUKKyAJSUZTPSIkc2F2ZV9pZnMiCisgCWZ1bmNfc3RyaXBuYW1lICcgJyAnJyAiJGFyZyIKK0BAIC00OTY4LDI0ICs1ODMyLDI3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCWFyZz0iJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IgorIAk7OworIAorLSAgICAgICMgLTY0LCAtbWlwc1swLTldIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgU0dJIGNvbXBpbGVyCistICAgICAgIyAtclswLTldWzAtOV0qIHNwZWNpZmllcyB0aGUgcHJvY2Vzc29yIG9uIHRoZSBTR0kgY29tcGlsZXIKKy0gICAgICAjIC14YXJjaD0qLCAteHRhcmdldD0qIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgU3VuIGNvbXBpbGVyCistICAgICAgIyArREEqLCArREQqIGVuYWJsZSA2NC1iaXQgbW9kZSBvbiB0aGUgSFAgY29tcGlsZXIKKy0gICAgICAjIC1xKiBwYXNzIHRocm91Z2ggY29tcGlsZXIgYXJncyBmb3IgdGhlIElCTSBjb21waWxlcgorLSAgICAgICMgLW0qLCAtdFs0NV0qLCAtdHhzY2FsZSogcGFzcyB0aHJvdWdoIGFyY2hpdGVjdHVyZS1zcGVjaWZpYworLSAgICAgICMgY29tcGlsZXIgYXJncyBmb3IgR0NDCistICAgICAgIyAtRi9wYXRoIGdpdmVzIHBhdGggdG8gdW5pbnN0YWxsZWQgZnJhbWV3b3JrcywgZ2NjIG9uIGRhcndpbgorLSAgICAgICMgLXAsIC1wZywgLS1jb3ZlcmFnZSwgLWZwcm9maWxlLSogcGFzcyB0aHJvdWdoIHByb2ZpbGluZyBmbGFnIGZvciBHQ0MKKy0gICAgICAjIEBmaWxlIEdDQyByZXNwb25zZSBmaWxlcworLSAgICAgICMgLXRwPSogUG9ydGxhbmQgcGdjYyB0YXJnZXQgcHJvY2Vzc29yIHNlbGVjdGlvbgorKyAgICAgICMgRmxhZ3MgdG8gYmUgcGFzc2VkIHRocm91Z2ggdW5jaGFuZ2VkLCB3aXRoIHJhdGlvbmFsZToKKysgICAgICAjIC02NCwgLW1pcHNbMC05XSAgICAgIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIFNHSSBjb21waWxlcgorKyAgICAgICMgLXJbMC05XVswLTldKiAgICAgICAgc3BlY2lmeSBwcm9jZXNzb3IgZm9yIHRoZSBTR0kgY29tcGlsZXIKKysgICAgICAjIC14YXJjaD0qLCAteHRhcmdldD0qIGVuYWJsZSA2NC1iaXQgbW9kZSBmb3IgdGhlIFN1biBjb21waWxlcgorKyAgICAgICMgK0RBKiwgK0REKiAgICAgICAgICAgZW5hYmxlIDY0LWJpdCBtb2RlIGZvciB0aGUgSFAgY29tcGlsZXIKKysgICAgICAjIC1xKiAgICAgICAgICAgICAgICAgIGNvbXBpbGVyIGFyZ3MgZm9yIHRoZSBJQk0gY29tcGlsZXIKKysgICAgICAjIC1tKiwgLXRbNDVdKiwgLXR4c2NhbGUqIGFyY2hpdGVjdHVyZS1zcGVjaWZpYyBmbGFncyBmb3IgR0NDCisrICAgICAgIyAtRi9wYXRoICAgICAgICAgICAgICBwYXRoIHRvIHVuaW5zdGFsbGVkIGZyYW1ld29ya3MsIGdjYyBvbiBkYXJ3aW4KKysgICAgICAjIC1wLCAtcGcsIC0tY292ZXJhZ2UsIC1mcHJvZmlsZS0qICBwcm9maWxpbmcgZmxhZ3MgZm9yIEdDQworKyAgICAgICMgQGZpbGUgICAgICAgICAgICAgICAgR0NDIHJlc3BvbnNlIGZpbGVzCisrICAgICAgIyAtdHA9KiAgICAgICAgICAgICAgICBQb3J0bGFuZCBwZ2NjIHRhcmdldCBwcm9jZXNzb3Igc2VsZWN0aW9uCisrICAgICAgIyAtLXN5c3Jvb3Q9KiAgICAgICAgICBmb3Igc3lzcm9vdCBzdXBwb3J0CisrICAgICAgIyAtTyosIC1mbHRvKiwgLWZ3aG9wciosIC1mdXNlLWxpbmtlci1wbHVnaW4gR0NDIGxpbmstdGltZSBvcHRpbWl6YXRpb24KKyAgICAgICAtNjR8LW1pcHNbMC05XXwtclswLTldWzAtOV0qfC14YXJjaD0qfC14dGFyZ2V0PSp8K0RBKnwrREQqfC1xKnwtbSp8IFwKKy0gICAgICAtdFs0NV0qfC10eHNjYWxlKnwtcHwtcGd8LS1jb3ZlcmFnZXwtZnByb2ZpbGUtKnwtRip8QCp8LXRwPSopCisrICAgICAgLXRbNDVdKnwtdHhzY2FsZSp8LXB8LXBnfC0tY292ZXJhZ2V8LWZwcm9maWxlLSp8LUYqfEAqfC10cD0qfC0tc3lzcm9vdD0qfCBcCisrICAgICAgLU8qfC1mbHRvKnwtZndob3ByKnwtZnVzZS1saW5rZXItcGx1Z2luKQorICAgICAgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJGFyZyIKKyAJYXJnPSIkZnVuY19xdW90ZV9mb3JfZXZhbF9yZXN1bHQiCisgICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAkYXJnIgorICAgICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRhcmciCistICAgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRhcmciCisrICAgICAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRhcmciCisgICAgICAgICBjb250aW51ZQorICAgICAgICAgOzsKKyAKK0BAIC00OTk3LDcgKzU4NjQsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAorICAgICAgICouJG9iamV4dCkKKyAJIyBBIHN0YW5kYXJkIG9iamVjdC4KKy0Jb2Jqcz0iJG9ianMgJGFyZyIKKysJZnVuY19hcHBlbmQgb2JqcyAiICRhcmciCisgCTs7CisgCisgICAgICAgKi5sbykKK0BAIC01MDI4LDcgKzU4OTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAorIAkgICAgaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgorIAkgICAgICBpZiB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiA9IHllcyAmJiB0ZXN0ICIkZGxvcGVuX3N1cHBvcnQiID0geWVzOyB0aGVuCistCQlkbGZpbGVzPSIkZGxmaWxlcyAkcGljX29iamVjdCIKKysJCWZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkcGljX29iamVjdCIKKyAJCXByZXY9CisgCQljb250aW51ZQorIAkgICAgICBlbHNlCitAQCAtNTA0MCw3ICs1OTA3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICMgQ0hFQ0sgTUU6ICBJIHRoaW5rIEkgYnVzdGVkIHRoaXMuICAtT3NzYW1hCisgCSAgICBpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCisgCSAgICAgICMgUHJlbG9hZCB0aGUgb2xkLXN0eWxlIG9iamVjdC4KKy0JICAgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJHBpY19vYmplY3QiCisrCSAgICAgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkcGljX29iamVjdCIKKyAJICAgICAgcHJldj0KKyAJICAgIGZpCisgCitAQCAtNTA4NSwyNCArNTk1MiwyNSBAQCBmdW5jX21vZGVfbGluayAoKQorIAorICAgICAgICouJGxpYmV4dCkKKyAJIyBBbiBhcmNoaXZlLgorLQlkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgorLQlvbGRfZGVwbGlicz0iJG9sZF9kZXBsaWJzICRhcmciCisrCWZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkYXJnIgorKwlmdW5jX2FwcGVuZCBvbGRfZGVwbGlicyAiICRhcmciCisgCWNvbnRpbnVlCisgCTs7CisgCisgICAgICAgKi5sYSkKKyAJIyBBIGxpYnRvb2wtY29udHJvbGxlZCBsaWJyYXJ5LgorIAorKwlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGFyZyIKKyAJaWYgdGVzdCAiJHByZXYiID0gZGxmaWxlczsgdGhlbgorIAkgICMgVGhpcyBsaWJyYXJ5IHdhcyBzcGVjaWZpZWQgd2l0aCAtZGxvcGVuLgorLQkgIGRsZmlsZXM9IiRkbGZpbGVzICRhcmciCisrCSAgZnVuY19hcHBlbmQgZGxmaWxlcyAiICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQiCisgCSAgcHJldj0KKyAJZWxpZiB0ZXN0ICIkcHJldiIgPSBkbHByZWZpbGVzOyB0aGVuCisgCSAgIyBUaGUgbGlicmFyeSB3YXMgc3BlY2lmaWVkIHdpdGggLWRscHJlb3Blbi4KKy0JICBkbHByZWZpbGVzPSIkZGxwcmVmaWxlcyAkYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGRscHJlZmlsZXMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorIAkgIHByZXY9CisgCWVsc2UKKy0JICBkZXBsaWJzPSIkZGVwbGlicyAkYXJnIgorKwkgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorIAlmaQorIAljb250aW51ZQorIAk7OworQEAgLTUxMjcsNyArNTk5NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgZnVuY19mYXRhbF9oZWxwICJ0aGUgXGAkcHJldmFyZycgb3B0aW9uIHJlcXVpcmVzIGFuIGFyZ3VtZW50IgorIAorICAgICBpZiB0ZXN0ICIkZXhwb3J0X2R5bmFtaWMiID0geWVzICYmIHRlc3QgLW4gIiRleHBvcnRfZHluYW1pY19mbGFnX3NwZWMiOyB0aGVuCistICAgICAgZXZhbCAiYXJnPVwiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY1wiIgorKyAgICAgIGV2YWwgYXJnPVwiJGV4cG9ydF9keW5hbWljX2ZsYWdfc3BlY1wiCisgICAgICAgZnVuY19hcHBlbmQgY29tcGlsZV9jb21tYW5kICIgJGFyZyIKKyAgICAgICBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9jb21tYW5kICIgJGFyZyIKKyAgICAgZmkKK0BAIC01MTQ0LDExICs2MDEyLDEzIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgIGVsc2UKKyAgICAgICBzaGxpYl9zZWFyY2hfcGF0aD0KKyAgICAgZmkKKy0gICAgZXZhbCAic3lzX2xpYl9zZWFyY2hfcGF0aD1cIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWNcIiIKKy0gICAgZXZhbCAic3lzX2xpYl9kbHNlYXJjaF9wYXRoPVwiJHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjXCIiCisrICAgIGV2YWwgc3lzX2xpYl9zZWFyY2hfcGF0aD1cIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWNcIgorKyAgICBldmFsIHN5c19saWJfZGxzZWFyY2hfcGF0aD1cIiRzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlY1wiCisgCisgICAgIGZ1bmNfZGlybmFtZSAiJG91dHB1dCIgIi8iICIiCisgICAgIG91dHB1dF9vYmpkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JG9iamRpciIKKysgICAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyIKKysgICAgdG9vbF9vdXRwdXRfb2JqZGlyPSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKKyAgICAgIyBDcmVhdGUgdGhlIG9iamVjdCBkaXJlY3RvcnkuCisgICAgIGZ1bmNfbWtkaXJfcCAiJG91dHB1dF9vYmpkaXIiCisgCitAQCAtNTE2OSwxMiArNjAzOSwxMiBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAjIEZpbmQgYWxsIGludGVyZGVwZW5kZW50IGRlcGxpYnMgYnkgc2VhcmNoaW5nIGZvciBsaWJyYXJpZXMKKyAgICAgIyB0aGF0IGFyZSBsaW5rZWQgbW9yZSB0aGFuIG9uY2UgKGUuZy4gLWxhIC1sYiAtbGEpCisgICAgIGZvciBkZXBsaWIgaW4gJGRlcGxpYnM7IGRvCistICAgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKysgICAgICBpZiAkb3B0X3ByZXNlcnZlX2R1cF9kZXBzIDsgdGhlbgorIAljYXNlICIkbGlicyAiIGluCistCSoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKysJKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OworIAllc2FjCisgICAgICAgZmkKKy0gICAgICBsaWJzPSIkbGlicyAkZGVwbGliIgorKyAgICAgIGZ1bmNfYXBwZW5kIGxpYnMgIiAkZGVwbGliIgorICAgICBkb25lCisgCisgICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBsaWI7IHRoZW4KK0BAIC01MTg3LDkgKzYwNTcsOSBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgIGlmICRvcHRfZHVwbGljYXRlX2NvbXBpbGVyX2dlbmVyYXRlZF9kZXBzOyB0aGVuCisgCWZvciBwcmVfcG9zdF9kZXAgaW4gJHByZWRlcHMgJHBvc3RkZXBzOyBkbworIAkgIGNhc2UgIiRwcmVfcG9zdF9kZXBzICIgaW4KKy0JICAqIiAkcHJlX3Bvc3RfZGVwICIqKSBzcGVjaWFsZGVwbGlicz0iJHNwZWNpYWxkZXBsaWJzICRwcmVfcG9zdF9kZXBzIiA7OworKwkgICoiICRwcmVfcG9zdF9kZXAgIiopIGZ1bmNfYXBwZW5kIHNwZWNpYWxkZXBsaWJzICIgJHByZV9wb3N0X2RlcHMiIDs7CisgCSAgZXNhYworLQkgIHByZV9wb3N0X2RlcHM9IiRwcmVfcG9zdF9kZXBzICRwcmVfcG9zdF9kZXAiCisrCSAgZnVuY19hcHBlbmQgcHJlX3Bvc3RfZGVwcyAiICRwcmVfcG9zdF9kZXAiCisgCWRvbmUKKyAgICAgICBmaQorICAgICAgIHByZV9wb3N0X2RlcHM9CitAQCAtNTI1Niw4ICs2MTI2LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJZm9yIGxpYiBpbiAkZGxwcmVmaWxlczsgZG8KKyAJICAjIElnbm9yZSBub24tbGlidG9vbC1saWJzCisgCSAgZGVwZW5kZW5jeV9saWJzPQorKwkgIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkbGliIgorIAkgIGNhc2UgJGxpYiBpbgorLQkgICoubGEpCWZ1bmNfc291cmNlICIkbGliIiA7OworKwkgICoubGEpCWZ1bmNfc291cmNlICIkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IiA7OworIAkgIGVzYWMKKyAKKyAJICAjIENvbGxlY3QgcHJlb3BlbmVkIGxpYnRvb2wgZGVwbGlicywgZXhjZXB0IGFueSB0aGlzIGxpYnJhcnkKK0BAIC01MjY3LDcgKzYxMzgsNyBAQCBmdW5jX21vZGVfbGluayAoKQorICAgICAgICAgICAgIGRlcGxpYl9iYXNlPSRmdW5jX2Jhc2VuYW1lX3Jlc3VsdAorIAkgICAgY2FzZSAiICR3ZWFrX2xpYnMgIiBpbgorIAkgICAgKiIgJGRlcGxpYl9iYXNlICIqKSA7OworLQkgICAgKikgZGVwbGlicz0iJGRlcGxpYnMgJGRlcGxpYiIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiAkZGVwbGliIiA7OworIAkgICAgZXNhYworIAkgIGRvbmUKKyAJZG9uZQorQEAgLTUyODgsMTEgKzYxNTksMTEgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGNvbXBpbGVfZGVwbGlicz0iJGRlcGxpYiAkY29tcGlsZV9kZXBsaWJzIgorIAkgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKKyAJICBlbHNlCistCSAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWIiCisrCSAgICBmdW5jX2FwcGVuZCBjb21waWxlcl9mbGFncyAiICRkZXBsaWIiCisgCSAgICBpZiB0ZXN0ICIkbGlua21vZGUiID0gbGliIDsgdGhlbgorIAkJY2FzZSAiJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgaW4KKyAJCSAgICAqIiAkZGVwbGliICIqKSA7OworLQkJICAgICogKSBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0iJG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICRkZXBsaWIiIDs7CisrCQkgICAgKiApIGZ1bmNfYXBwZW5kIG5ld19pbmhlcml0ZWRfbGlua2VyX2ZsYWdzICIgJGRlcGxpYiIgOzsKKyAJCWVzYWMKKyAJICAgIGZpCisgCSAgZmkKK0BAIC01Mzc3LDcgKzYyNDgsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IGxpYiA7IHRoZW4KKyAJCWNhc2UgIiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiIGluCisgCQkgICAgKiIgJGRlcGxpYiAiKikgOzsKKy0JCSAgICAqICkgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkZGVwbGliIiA7OworKwkJICAgICogKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICRkZXBsaWIiIDs7CisgCQllc2FjCisgCSAgICBmaQorIAkgIGZpCitAQCAtNTM5MCw3ICs2MjYxLDggQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIHRlc3QgIiRwYXNzIiA9IGNvbnYgJiYgY29udGludWUKKyAJICAgIG5ld2RlcGVuZGVuY3lfbGlicz0iJGRlcGxpYiAkbmV3ZGVwZW5kZW5jeV9saWJzIgorIAkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKKy0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCSAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorIAkgICAgOzsKKyAJICBwcm9nKQorIAkgICAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgorQEAgLTU0MDQsNyArNjI3Niw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgIGZpbmFsaXplX2RlcGxpYnM9IiRkZXBsaWIgJGZpbmFsaXplX2RlcGxpYnMiCisgCSAgICBmaQorIAkgICAgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKKy0JICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCSAgICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorIAkgICAgOzsKKyAJICAqKQorIAkgICAgZnVuY193YXJuaW5nICJcYC1MJyBpcyBpZ25vcmVkIGZvciBhcmNoaXZlcy9vYmplY3RzIgorQEAgLTU0MTUsMTcgKzYyODgsMjEgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJLVIqKQorIAkgIGlmIHRlc3QgIiRwYXNzIiA9IGxpbms7IHRoZW4KKyAJICAgIGZ1bmNfc3RyaXBuYW1lICctUicgJycgIiRkZXBsaWIiCistCSAgICBkaXI9JGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdAorKwkgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiCisrCSAgICBkaXI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorIAkgICAgIyBNYWtlIHN1cmUgdGhlIHhycGF0aCBjb250YWlucyBvbmx5IHVuaXF1ZSBkaXJlY3Rvcmllcy4KKyAJICAgIGNhc2UgIiR4cnBhdGggIiBpbgorIAkgICAgKiIgJGRpciAiKikgOzsKKy0JICAgICopIHhycGF0aD0iJHhycGF0aCAkZGlyIiA7OworKwkgICAgKikgZnVuY19hcHBlbmQgeHJwYXRoICIgJGRpciIgOzsKKyAJICAgIGVzYWMKKyAJICBmaQorIAkgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCisgCSAgY29udGludWUKKyAJICA7OworLQkqLmxhKSBsaWI9IiRkZXBsaWIiIDs7CisrCSoubGEpCisrCSAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRkZXBsaWIiCisrCSAgbGliPSRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHQKKysJICA7OworIAkqLiRsaWJleHQpCisgCSAgaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgorIAkgICAgZGVwbGlicz0iJGRlcGxpYiAkZGVwbGlicyIKK0BAIC01NDg4LDExICs2MzY1LDExIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBpZiB0ZXN0ICIkcGFzcyIgPSBkbHByZW9wZW4gfHwgdGVzdCAiJGRsb3Blbl9zdXBwb3J0IiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgPSBubzsgdGhlbgorIAkgICAgICAjIElmIHRoZXJlIGlzIG5vIGRsb3BlbiBzdXBwb3J0IG9yIHdlJ3JlIGxpbmtpbmcgc3RhdGljYWxseSwKKyAJICAgICAgIyB3ZSBuZWVkIHRvIHByZWxvYWQuCistCSAgICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkZXBsaWIiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAkZGVwbGliIgorIAkgICAgICBjb21waWxlX2RlcGxpYnM9IiRkZXBsaWIgJGNvbXBpbGVfZGVwbGlicyIKKyAJICAgICAgZmluYWxpemVfZGVwbGlicz0iJGRlcGxpYiAkZmluYWxpemVfZGVwbGlicyIKKyAJICAgIGVsc2UKKy0JICAgICAgbmV3ZGxmaWxlcz0iJG5ld2RsZmlsZXMgJGRlcGxpYiIKKysJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRkZXBsaWIiCisgCSAgICBmaQorIAkgIGZpCisgCSAgY29udGludWUKK0BAIC01NTM4LDcgKzY0MTUsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGZvciB0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIGluICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnczsgZG8KKyAJICAgIGNhc2UgIiAkbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3MgIiBpbgorIAkgICAgICAqIiAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyAiKikgOzsKKy0JICAgICAgKikgbmV3X2luaGVyaXRlZF9saW5rZXJfZmxhZ3M9IiRuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAkdG1wX2luaGVyaXRlZF9saW5rZXJfZmxhZyI7OworKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdfaW5oZXJpdGVkX2xpbmtlcl9mbGFncyAiICR0bXBfaW5oZXJpdGVkX2xpbmtlcl9mbGFnIjs7CisgCSAgICBlc2FjCisgCSAgZG9uZQorIAlmaQorQEAgLTU1NDYsOCArNjQyMyw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCWlmIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAibGliLGxpbmsiIHx8CisgCSAgIHRlc3QgIiRsaW5rbW9kZSwkcGFzcyIgPSAicHJvZyxzY2FuIiB8fAorIAkgICB7IHRlc3QgIiRsaW5rbW9kZSIgIT0gcHJvZyAmJiB0ZXN0ICIkbGlua21vZGUiICE9IGxpYjsgfTsgdGhlbgorLQkgIHRlc3QgLW4gIiRkbG9wZW4iICYmIGRsZmlsZXM9IiRkbGZpbGVzICRkbG9wZW4iCistCSAgdGVzdCAtbiAiJGRscHJlb3BlbiIgJiYgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGRscHJlb3BlbiIKKysJICB0ZXN0IC1uICIkZGxvcGVuIiAmJiBmdW5jX2FwcGVuZCBkbGZpbGVzICIgJGRsb3BlbiIKKysJICB0ZXN0IC1uICIkZGxwcmVvcGVuIiAmJiBmdW5jX2FwcGVuZCBkbHByZWZpbGVzICIgJGRscHJlb3BlbiIKKyAJZmkKKyAKKyAJaWYgdGVzdCAiJHBhc3MiID0gY29udjsgdGhlbgorQEAgLTU1NTgsMjAgKzY0MzUsMjAgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCisgCSAgICBmaQorIAkgICAgIyBJdCBpcyBhIGxpYnRvb2wgY29udmVuaWVuY2UgbGlicmFyeSwgc28gYWRkIGluIGl0cyBvYmplY3RzLgorLQkgICAgY29udmVuaWVuY2U9IiRjb252ZW5pZW5jZSAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCistCSAgICBvbGRfY29udmVuaWVuY2U9IiRvbGRfY29udmVuaWVuY2UgJGxhZGlyLyRvYmpkaXIvJG9sZF9saWJyYXJ5IgorKwkgICAgZnVuY19hcHBlbmQgY29udmVuaWVuY2UgIiAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCisrCSAgICBmdW5jX2FwcGVuZCBvbGRfY29udmVuaWVuY2UgIiAkbGFkaXIvJG9iamRpci8kb2xkX2xpYnJhcnkiCisgCSAgZWxpZiB0ZXN0ICIkbGlua21vZGUiICE9IHByb2cgJiYgdGVzdCAiJGxpbmttb2RlIiAhPSBsaWI7IHRoZW4KKyAJICAgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgY29udmVuaWVuY2UgbGlicmFyeSIKKyAJICBmaQorIAkgIHRtcF9saWJzPQorIAkgIGZvciBkZXBsaWIgaW4gJGRlcGVuZGVuY3lfbGliczsgZG8KKyAJICAgIGRlcGxpYnM9IiRkZXBsaWIgJGRlcGxpYnMiCistCSAgICBpZiAkb3B0X2R1cGxpY2F0ZV9kZXBzIDsgdGhlbgorKwkgICAgaWYgJG9wdF9wcmVzZXJ2ZV9kdXBfZGVwcyA7IHRoZW4KKyAJICAgICAgY2FzZSAiJHRtcF9saWJzICIgaW4KKy0JICAgICAgKiIgJGRlcGxpYiAiKikgc3BlY2lhbGRlcGxpYnM9IiRzcGVjaWFsZGVwbGlicyAkZGVwbGliIiA7OworKwkgICAgICAqIiAkZGVwbGliICIqKSBmdW5jX2FwcGVuZCBzcGVjaWFsZGVwbGlicyAiICRkZXBsaWIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGZpCistCSAgICB0bXBfbGlicz0iJHRtcF9saWJzICRkZXBsaWIiCisrCSAgICBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiCisgCSAgZG9uZQorIAkgIGNvbnRpbnVlCisgCWZpICMgJHBhc3MgPSBjb252CitAQCAtNTU3OSw5ICs2NDU2LDE1IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCisgCSMgR2V0IHRoZSBuYW1lIG9mIHRoZSBsaWJyYXJ5IHdlIGxpbmsgYWdhaW5zdC4KKyAJbGlua2xpYj0KKy0JZm9yIGwgaW4gJG9sZF9saWJyYXJ5ICRsaWJyYXJ5X25hbWVzOyBkbworLQkgIGxpbmtsaWI9IiRsIgorLQlkb25lCisrCWlmIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYKKysJICAgeyB0ZXN0ICIkcHJlZmVyX3N0YXRpY19saWJzIiA9IHllcyB8fAorKwkgICAgIHRlc3QgIiRwcmVmZXJfc3RhdGljX2xpYnMsJGluc3RhbGxlZCIgPSAiYnVpbHQsbm8iOyB9OyB0aGVuCisrCSAgbGlua2xpYj0kb2xkX2xpYnJhcnkKKysJZWxzZQorKwkgIGZvciBsIGluICRvbGRfbGlicmFyeSAkbGlicmFyeV9uYW1lczsgZG8KKysJICAgIGxpbmtsaWI9IiRsIgorKwkgIGRvbmUKKysJZmkKKyAJaWYgdGVzdCAteiAiJGxpbmtsaWIiOyB0aGVuCisgCSAgZnVuY19mYXRhbF9lcnJvciAiY2Fubm90IGZpbmQgbmFtZSBvZiBsaW5rIGxpYnJhcnkgZm9yIFxgJGxpYiciCisgCWZpCitAQCAtNTU5OCw5ICs2NDgxLDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICMgc3RhdGljYWxseSwgd2UgbmVlZCB0byBwcmVsb2FkLiAgV2UgYWxzbyBuZWVkIHRvIHByZWxvYWQgYW55CisgCSAgICAjIGRlcGVuZGVudCBsaWJyYXJpZXMgc28gbGlibHRkbCdzIGRlcGxpYiBwcmVsb2FkZXIgZG9lc24ndAorIAkgICAgIyBib21iIG91dCBpbiB0aGUgbG9hZCBkZXBsaWJzIHBoYXNlLgorLQkgICAgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGxpYiAkZGVwZW5kZW5jeV9saWJzIgorKwkgICAgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRsaWIgJGRlcGVuZGVuY3lfbGlicyIKKyAJICBlbHNlCistCSAgICBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliIgorKwkgICAgZnVuY19hcHBlbmQgbmV3ZGxmaWxlcyAiICRsaWIiCisgCSAgZmkKKyAJICBjb250aW51ZQorIAlmaSAjICRwYXNzID0gZGxvcGVuCitAQCAtNTYyMiwxNCArNjUwNSwxNCBAQCBmdW5jX21vZGVfbGluayAoKQorIAorIAkjIEZpbmQgdGhlIHJlbGV2YW50IG9iamVjdCBkaXJlY3RvcnkgYW5kIGxpYnJhcnkgbmFtZS4KKyAJaWYgdGVzdCAiWCRpbnN0YWxsZWQiID0gWHllczsgdGhlbgorLQkgIGlmIHRlc3QgISAtZiAiJGxpYmRpci8kbGlua2xpYiIgJiYgdGVzdCAtZiAiJGFic19sYWRpci8kbGlua2xpYiI7IHRoZW4KKysJICBpZiB0ZXN0ICEgLWYgIiRsdF9zeXNyb290JGxpYmRpci8kbGlua2xpYiIgJiYgdGVzdCAtZiAiJGFic19sYWRpci8kbGlua2xpYiI7IHRoZW4KKyAJICAgIGZ1bmNfd2FybmluZyAibGlicmFyeSBcYCRsaWInIHdhcyBtb3ZlZC4iCisgCSAgICBkaXI9IiRsYWRpciIKKyAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKKyAJICAgIGxpYmRpcj0iJGFic19sYWRpciIKKyAJICBlbHNlCistCSAgICBkaXI9IiRsaWJkaXIiCistCSAgICBhYnNkaXI9IiRsaWJkaXIiCisrCSAgICBkaXI9IiRsdF9zeXNyb290JGxpYmRpciIKKysJICAgIGFic2Rpcj0iJGx0X3N5c3Jvb3QkbGliZGlyIgorIAkgIGZpCisgCSAgdGVzdCAiWCRoYXJkY29kZV9hdXRvbWF0aWMiID0gWHllcyAmJiBhdm9pZHRlbXBycGF0aD15ZXMKKyAJZWxzZQorQEAgLTU2MzcsMTIgKzY1MjAsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGRpcj0iJGxhZGlyIgorIAkgICAgYWJzZGlyPSIkYWJzX2xhZGlyIgorIAkgICAgIyBSZW1vdmUgdGhpcyBzZWFyY2ggcGF0aCBsYXRlcgorLQkgICAgbm90aW5zdF9wYXRoPSIkbm90aW5zdF9wYXRoICRhYnNfbGFkaXIiCisrCSAgICBmdW5jX2FwcGVuZCBub3RpbnN0X3BhdGggIiAkYWJzX2xhZGlyIgorIAkgIGVsc2UKKyAJICAgIGRpcj0iJGxhZGlyLyRvYmpkaXIiCisgCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIvJG9iamRpciIKKyAJICAgICMgUmVtb3ZlIHRoaXMgc2VhcmNoIHBhdGggbGF0ZXIKKy0JICAgIG5vdGluc3RfcGF0aD0iJG5vdGluc3RfcGF0aCAkYWJzX2xhZGlyIgorKwkgICAgZnVuY19hcHBlbmQgbm90aW5zdF9wYXRoICIgJGFic19sYWRpciIKKyAJICBmaQorIAlmaSAjICRpbnN0YWxsZWQgPSB5ZXMKKyAJZnVuY19zdHJpcG5hbWUgJ2xpYicgJy5sYScgIiRsYW5hbWUiCitAQCAtNTY1MywyMCArNjUzNiw0NiBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGlmIHRlc3QgLXogIiRsaWJkaXIiICYmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCisgCSAgICBmdW5jX2ZhdGFsX2Vycm9yICJvbmx5IGxpYnJhcmllcyBtYXkgLWRscHJlb3BlbiBhIGNvbnZlbmllbmNlIGxpYnJhcnk6IFxgJGxpYiciCisgCSAgZmkKKy0JICAjIFByZWZlciB1c2luZyBhIHN0YXRpYyBsaWJyYXJ5IChzbyB0aGF0IG5vIHNpbGx5IF9EWU5BTUlDIHN5bWJvbHMKKy0JICAjIGFyZSByZXF1aXJlZCB0byBsaW5rKS4KKy0JICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCistCSAgICBuZXdkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyAkZGlyLyRvbGRfbGlicmFyeSIKKy0JICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjaworLQkgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCistCSAgICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCistCQlkbHByZWNvbnZlbmllbmNlbGlicz0iJGRscHJlY29udmVuaWVuY2VsaWJzICRkaXIvJG9sZF9saWJyYXJ5IgorLQkgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGRsbmFtZSwgc28gdGhhdCBsdF9kbG9wZW4gZmluZHMgaXQuCistCSAgZWxpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgorLQkgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGRpci8kZGxuYW1lIgorLQkgIGVsc2UKKy0JICAgIG5ld2RscHJlZmlsZXM9IiRuZXdkbHByZWZpbGVzICRkaXIvJGxpbmtsaWIiCistCSAgZmkKKysJICBjYXNlICIkaG9zdCIgaW4KKysJICAgICMgc3BlY2lhbCBoYW5kbGluZyBmb3IgcGxhdGZvcm1zIHdpdGggUEUtRExMcy4KKysJICAgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyogKQorKwkgICAgICAjIExpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgbGluayBhZ2FpbnN0IHNoYXJlZCBsaWJyYXJ5IGlmIGJvdGgKKysJICAgICAgIyBzdGF0aWMgYW5kIHNoYXJlZCBhcmUgcHJlc2VudC4gIFRoZXJlZm9yZSwgZW5zdXJlIHdlIGV4dHJhY3QKKysJICAgICAgIyBzeW1ib2xzIGZyb20gdGhlIGltcG9ydCBsaWJyYXJ5IGlmIGEgc2hhcmVkIGxpYnJhcnkgaXMgcHJlc2VudAorKwkgICAgICAjIChvdGhlcndpc2UsIHRoZSBkbG9wZW4gbW9kdWxlIG5hbWUgd2lsbCBiZSBpbmNvcnJlY3QpLiAgV2UgZG8KKysJICAgICAgIyB0aGlzIGJ5IHB1dHRpbmcgdGhlIGltcG9ydCBsaWJyYXJ5IG5hbWUgaW50byAkbmV3ZGxwcmVmaWxlcy4KKysJICAgICAgIyBXZSByZWNvdmVyIHRoZSBkbG9wZW4gbW9kdWxlIG5hbWUgYnkgJ3NhdmluZycgdGhlIGxhIGZpbGUKKysJICAgICAgIyBuYW1lIGluIGEgc3BlY2lhbCBwdXJwb3NlIHZhcmlhYmxlLCBhbmQgKGxhdGVyKSBleHRyYWN0aW5nIHRoZQorKwkgICAgICAjIGRsbmFtZSBmcm9tIHRoZSBsYSBmaWxlLgorKwkgICAgICBpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgorKwkgICAgICAgIGZ1bmNfdHJfc2ggIiRkaXIvJGxpbmtsaWIiCisrCSAgICAgICAgZXZhbCAibGliZmlsZV8kZnVuY190cl9zaF9yZXN1bHQ9XCRhYnNfbGFkaXIvXCRsYW5hbWUiCisrCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGxpbmtsaWIiCisrCSAgICAgIGVsc2UKKysJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kb2xkX2xpYnJhcnkiCisrCSAgICAgICAgIyBLZWVwIGEgbGlzdCBvZiBwcmVvcGVuZWQgY29udmVuaWVuY2UgbGlicmFyaWVzIHRvIGNoZWNrCisrCSAgICAgICAgIyB0aGF0IHRoZXkgYXJlIGJlaW5nIHVzZWQgY29ycmVjdGx5IGluIHRoZSBsaW5rIHBhc3MuCisrCSAgICAgICAgdGVzdCAteiAiJGxpYmRpciIgJiYgXAorKwkgICAgICAgICAgZnVuY19hcHBlbmQgZGxwcmVjb252ZW5pZW5jZWxpYnMgIiAkZGlyLyRvbGRfbGlicmFyeSIKKysJICAgICAgZmkKKysJICAgIDs7CisrCSAgICAqICkKKysJICAgICAgIyBQcmVmZXIgdXNpbmcgYSBzdGF0aWMgbGlicmFyeSAoc28gdGhhdCBubyBzaWxseSBfRFlOQU1JQyBzeW1ib2xzCisrCSAgICAgICMgYXJlIHJlcXVpcmVkIHRvIGxpbmspLgorKwkgICAgICBpZiB0ZXN0IC1uICIkb2xkX2xpYnJhcnkiOyB0aGVuCisrCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJG9sZF9saWJyYXJ5IgorKwkgICAgICAgICMgS2VlcCBhIGxpc3Qgb2YgcHJlb3BlbmVkIGNvbnZlbmllbmNlIGxpYnJhcmllcyB0byBjaGVjaworKwkgICAgICAgICMgdGhhdCB0aGV5IGFyZSBiZWluZyB1c2VkIGNvcnJlY3RseSBpbiB0aGUgbGluayBwYXNzLgorKwkgICAgICAgIHRlc3QgLXogIiRsaWJkaXIiICYmIFwKKysJICAgICAgICAgIGZ1bmNfYXBwZW5kIGRscHJlY29udmVuaWVuY2VsaWJzICIgJGRpci8kb2xkX2xpYnJhcnkiCisrCSAgICAgICMgT3RoZXJ3aXNlLCB1c2UgdGhlIGRsbmFtZSwgc28gdGhhdCBsdF9kbG9wZW4gZmluZHMgaXQuCisrCSAgICAgIGVsaWYgdGVzdCAtbiAiJGRsbmFtZSI7IHRoZW4KKysJICAgICAgICBmdW5jX2FwcGVuZCBuZXdkbHByZWZpbGVzICIgJGRpci8kZGxuYW1lIgorKwkgICAgICBlbHNlCisrCSAgICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRkaXIvJGxpbmtsaWIiCisrCSAgICAgIGZpCisrCSAgICA7OworKwkgIGVzYWMKKyAJZmkgIyAkcGFzcyA9IGRscHJlb3BlbgorIAorIAlpZiB0ZXN0IC16ICIkbGliZGlyIjsgdGhlbgorQEAgLTU2ODQsNyArNjU5Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCisgCisgCWlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nICYmIHRlc3QgIiRwYXNzIiAhPSBsaW5rOyB0aGVuCistCSAgbmV3bGliX3NlYXJjaF9wYXRoPSIkbmV3bGliX3NlYXJjaF9wYXRoICRsYWRpciIKKysJICBmdW5jX2FwcGVuZCBuZXdsaWJfc2VhcmNoX3BhdGggIiAkbGFkaXIiCisgCSAgZGVwbGlicz0iJGxpYiAkZGVwbGlicyIKKyAKKyAJICBsaW5rYWxsZGVwbGlicz1ubworQEAgLTU2OTcsNyArNjYwNiw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgZm9yIGRlcGxpYiBpbiAkZGVwZW5kZW5jeV9saWJzOyBkbworIAkgICAgY2FzZSAkZGVwbGliIGluCisgCSAgICAtTCopIGZ1bmNfc3RyaXBuYW1lICctTCcgJycgIiRkZXBsaWIiCistCSAgICAgICAgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkgICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJICAgICAgICAgZnVuY19hcHBlbmQgbmV3bGliX3NlYXJjaF9wYXRoICIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCIKKyAJCSA7OworIAkgICAgZXNhYworIAkgICAgIyBOZWVkIHRvIGxpbmsgYWdhaW5zdCBhbGwgZGVwZW5kZW5jeV9saWJzPworQEAgLTU3MDgsMTIgKzY2MTgsMTIgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgIyBvci9hbmQgbGluayBhZ2FpbnN0IHN0YXRpYyBsaWJyYXJpZXMKKyAJICAgICAgbmV3ZGVwZW5kZW5jeV9saWJzPSIkZGVwbGliICRuZXdkZXBlbmRlbmN5X2xpYnMiCisgCSAgICBmaQorLQkgICAgaWYgJG9wdF9kdXBsaWNhdGVfZGVwcyA7IHRoZW4KKysJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCisgCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCistCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKysJICAgICAgKiIgJGRlcGxpYiAiKikgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZGVwbGliIiA7OworIAkgICAgICBlc2FjCisgCSAgICBmaQorLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgorKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZGVwbGliIgorIAkgIGRvbmUgIyBmb3IgZGVwbGliCisgCSAgY29udGludWUKKyAJZmkgIyAkbGlua21vZGUgPSBwcm9nLi4uCitAQCAtNTcyOCw3ICs2NjM4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgIyBNYWtlIHN1cmUgdGhlIHJwYXRoIGNvbnRhaW5zIG9ubHkgdW5pcXVlIGRpcmVjdG9yaWVzLgorIAkgICAgICBjYXNlICIkdGVtcF9ycGF0aDoiIGluCisgCSAgICAgICoiJGFic2RpcjoiKikgOzsKKy0JICAgICAgKikgdGVtcF9ycGF0aD0iJHRlbXBfcnBhdGgkYWJzZGlyOiIgOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgdGVtcF9ycGF0aCAiJGFic2RpcjoiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgIGZpCisgCitAQCAtNTc0MCw3ICs2NjUwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICopCisgCSAgICAgIGNhc2UgIiRjb21waWxlX3JwYXRoICIgaW4KKyAJICAgICAgKiIgJGFic2RpciAiKikgOzsKKy0JICAgICAgKikgY29tcGlsZV9ycGF0aD0iJGNvbXBpbGVfcnBhdGggJGFic2RpciIKKysJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9ycGF0aCAiICRhYnNkaXIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgICAgOzsKKyAJICAgIGVzYWMKK0BAIC01NzQ5LDcgKzY2NTksNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgKikKKyAJICAgICAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KKyAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAgICAgKikgZmluYWxpemVfcnBhdGg9IiRmaW5hbGl6ZV9ycGF0aCAkbGliZGlyIgorKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgICAgOzsKKyAJICAgIGVzYWMKK0BAIC01Nzc0LDEyICs2Njg0LDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgY2FzZSAkaG9zdCBpbgorIAkgICpjeWd3aW4qIHwgKm1pbmd3KiB8ICpjZWdjYyopCisgCSAgICAgICMgTm8gcG9pbnQgaW4gcmVsaW5raW5nIERMTHMgYmVjYXVzZSBwYXRocyBhcmUgbm90IGVuY29kZWQKKy0JICAgICAgbm90aW5zdF9kZXBsaWJzPSIkbm90aW5zdF9kZXBsaWJzICRsaWIiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5vdGluc3RfZGVwbGlicyAiICRsaWIiCisgCSAgICAgIG5lZWRfcmVsaW5rPW5vCisgCSAgICA7OworIAkgICopCisgCSAgICBpZiB0ZXN0ICIkaW5zdGFsbGVkIiA9IG5vOyB0aGVuCistCSAgICAgIG5vdGluc3RfZGVwbGlicz0iJG5vdGluc3RfZGVwbGlicyAkbGliIgorKwkgICAgICBmdW5jX2FwcGVuZCBub3RpbnN0X2RlcGxpYnMgIiAkbGliIgorIAkgICAgICBuZWVkX3JlbGluaz15ZXMKKyAJICAgIGZpCisgCSAgICA7OworQEAgLTU4MTQsNyArNjcyNCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAqKQorIAkgICAgICBjYXNlICIkY29tcGlsZV9ycGF0aCAiIGluCisgCSAgICAgICoiICRhYnNkaXIgIiopIDs7CistCSAgICAgICopIGNvbXBpbGVfcnBhdGg9IiRjb21waWxlX3JwYXRoICRhYnNkaXIiCisrCSAgICAgICopIGZ1bmNfYXBwZW5kIGNvbXBpbGVfcnBhdGggIiAkYWJzZGlyIiA7OworIAkgICAgICBlc2FjCisgCSAgICAgIDs7CisgCSAgICBlc2FjCitAQCAtNTgyMyw3ICs2NzMzLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICopCisgCSAgICAgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCisgCSAgICAgICoiICRsaWJkaXIgIiopIDs7CistCSAgICAgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIKKysJICAgICAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OworIAkgICAgICBlc2FjCisgCSAgICAgIDs7CisgCSAgICBlc2FjCitAQCAtNTgzNSw3ICs2NzQ1LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIHNoaWZ0CisgCSAgICByZWFsbmFtZT0iJDEiCisgCSAgICBzaGlmdAorLQkgICAgZXZhbCAibGlibmFtZT1cIiRsaWJuYW1lX3NwZWNcIiIKKysJICAgIGxpYm5hbWU9YGV2YWwgIlxcJEVDSE8gXCIkbGlibmFtZV9zcGVjXCIiYAorIAkgICAgIyB1c2UgZGxuYW1lIGlmIHdlIGdvdCBpdC4gaXQncyBwZXJmZWN0bHkgZ29vZCwgbm8/CisgCSAgICBpZiB0ZXN0IC1uICIkZGxuYW1lIjsgdGhlbgorIAkgICAgICBzb25hbWU9IiRkbG5hbWUiCitAQCAtNTg0OCw3ICs2NzU4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJCXZlcnN1ZmZpeD0iLSRtYWpvciIKKyAJCTs7CisgCSAgICAgIGVzYWMKKy0JICAgICAgZXZhbCAic29uYW1lPVwiJHNvbmFtZV9zcGVjXCIiCisrCSAgICAgIGV2YWwgc29uYW1lPVwiJHNvbmFtZV9zcGVjXCIKKyAJICAgIGVsc2UKKyAJICAgICAgc29uYW1lPSIkcmVhbG5hbWUiCisgCSAgICBmaQorQEAgLTU4NzcsNyArNjc4Nyw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBsaW5rbGliPSRuZXdsaWIKKyAJICBmaSAjIHRlc3QgLW4gIiRvbGRfYXJjaGl2ZV9mcm9tX2V4cHN5bXNfY21kcyIKKyAKKy0JICBpZiB0ZXN0ICIkbGlua21vZGUiID0gcHJvZyB8fCB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rOyB0aGVuCisrCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbms7IHRoZW4KKyAJICAgIGFkZF9zaGxpYnBhdGg9CisgCSAgICBhZGRfZGlyPQorIAkgICAgYWRkPQorQEAgLTU5MzMsNyArNjg0Myw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCQlpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgorIAkJICBjYXNlICRsaWJkaXIgaW4KKyAJCSAgICBbXFwvXSopCistCQkgICAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorKwkJICAgICAgZnVuY19hcHBlbmQgYWRkX2RpciAiIC1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisgCQkgICAgICA7OworIAkJICBlc2FjCisgCQlmaQorQEAgLTU5NTUsNyArNjg2NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBpZiB0ZXN0IC1uICIkYWRkX3NobGlicGF0aCI7IHRoZW4KKyAJICAgICAgY2FzZSA6JGNvbXBpbGVfc2hsaWJwYXRoOiBpbgorIAkgICAgICAqIjokYWRkX3NobGlicGF0aDoiKikgOzsKKy0JICAgICAgKikgY29tcGlsZV9zaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRhZGRfc2hsaWJwYXRoOiIgOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgY29tcGlsZV9zaGxpYnBhdGggIiRhZGRfc2hsaWJwYXRoOiIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKyAJICAgIGlmIHRlc3QgIiRsaW5rbW9kZSIgPSBwcm9nOyB0aGVuCitAQCAtNTk2OSwxMyArNjg3OSwxMyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkJIHRlc3QgIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiA9IHllczsgdGhlbgorIAkJY2FzZSA6JGZpbmFsaXplX3NobGlicGF0aDogaW4KKyAJCSoiOiRsaWJkaXI6IiopIDs7CistCQkqKSBmaW5hbGl6ZV9zaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgkbGliZGlyOiIgOzsKKysJCSopIGZ1bmNfYXBwZW5kIGZpbmFsaXplX3NobGlicGF0aCAiJGxpYmRpcjoiIDs7CisgCQllc2FjCisgCSAgICAgIGZpCisgCSAgICBmaQorIAkgIGZpCisgCistCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisrCSAgaWYgdGVzdCAiJGxpbmttb2RlIiA9IHByb2cgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorIAkgICAgYWRkX3NobGlicGF0aD0KKyAJICAgIGFkZF9kaXI9CisgCSAgICBhZGQ9CitAQCAtNTk4OSw3ICs2ODk5LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX3NobGlicGF0aF92YXIiID0geWVzOyB0aGVuCisgCSAgICAgIGNhc2UgOiRmaW5hbGl6ZV9zaGxpYnBhdGg6IGluCisgCSAgICAgICoiOiRsaWJkaXI6IiopIDs7CistCSAgICAgICopIGZpbmFsaXplX3NobGlicGF0aD0iJGZpbmFsaXplX3NobGlicGF0aCRsaWJkaXI6IiA7OworKwkgICAgICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9zaGxpYnBhdGggIiRsaWJkaXI6IiA7OworIAkgICAgICBlc2FjCisgCSAgICAgIGFkZD0iLWwkbmFtZSIKKyAJICAgIGVsaWYgdGVzdCAiJGhhcmRjb2RlX2F1dG9tYXRpYyIgPSB5ZXM7IHRoZW4KK0BAIC02MDAxLDEyICs2OTExLDEyIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICAgIGZpCisgCSAgICBlbHNlCisgCSAgICAgICMgV2UgY2Fubm90IHNlZW0gdG8gaGFyZGNvZGUgaXQsIGd1ZXNzIHdlJ2xsIGZha2UgaXQuCistCSAgICAgIGFkZF9kaXI9Ii1MJGxpYmRpciIKKysJICAgICAgYWRkX2Rpcj0iLUwkbHRfc3lzcm9vdCRsaWJkaXIiCisgCSAgICAgICMgVHJ5IGxvb2tpbmcgZmlyc3QgaW4gdGhlIGxvY2F0aW9uIHdlJ3JlIGJlaW5nIGluc3RhbGxlZCB0by4KKyAJICAgICAgaWYgdGVzdCAtbiAiJGluc3RfcHJlZml4X2RpciI7IHRoZW4KKyAJCWNhc2UgJGxpYmRpciBpbgorIAkJICBbXFwvXSopCistCQkgICAgYWRkX2Rpcj0iJGFkZF9kaXIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKysJCSAgICBmdW5jX2FwcGVuZCBhZGRfZGlyICIgLUwkaW5zdF9wcmVmaXhfZGlyJGxpYmRpciIKKyAJCSAgICA7OworIAkJZXNhYworIAkgICAgICBmaQorQEAgLTYwODMsMjcgKzY5OTMsMzMgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgICAgICB0ZW1wX3hycGF0aD0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CisgCQkgICBjYXNlICIgJHhycGF0aCAiIGluCisgCQkgICAqIiAkdGVtcF94cnBhdGggIiopIDs7CistCQkgICAqKSB4cnBhdGg9IiR4cnBhdGggJHRlbXBfeHJwYXRoIjs7CisrCQkgICAqKSBmdW5jX2FwcGVuZCB4cnBhdGggIiAkdGVtcF94cnBhdGgiOzsKKyAJCSAgIGVzYWM7OworLQkgICAgICAqKSB0ZW1wX2RlcGxpYnM9IiR0ZW1wX2RlcGxpYnMgJGxpYmRpciI7OworKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0ZW1wX2RlcGxpYnMgIiAkbGliZGlyIjs7CisgCSAgICAgIGVzYWMKKyAJICAgIGRvbmUKKyAJICAgIGRlcGVuZGVuY3lfbGlicz0iJHRlbXBfZGVwbGlicyIKKyAJICBmaQorIAorLQkgIG5ld2xpYl9zZWFyY2hfcGF0aD0iJG5ld2xpYl9zZWFyY2hfcGF0aCAkYWJzZGlyIgorKwkgIGZ1bmNfYXBwZW5kIG5ld2xpYl9zZWFyY2hfcGF0aCAiICRhYnNkaXIiCisgCSAgIyBMaW5rIGFnYWluc3QgdGhpcyBsaWJyYXJ5CisgCSAgdGVzdCAiJGxpbmtfc3RhdGljIiA9IG5vICYmIG5ld2RlcGVuZGVuY3lfbGlicz0iJGFic19sYWRpci8kbGFuYW1lICRuZXdkZXBlbmRlbmN5X2xpYnMiCisgCSAgIyAuLi4gYW5kIGl0cyBkZXBlbmRlbmN5X2xpYnMKKyAJICB0bXBfbGlicz0KKyAJICBmb3IgZGVwbGliIGluICRkZXBlbmRlbmN5X2xpYnM7IGRvCisgCSAgICBuZXdkZXBlbmRlbmN5X2xpYnM9IiRkZXBsaWIgJG5ld2RlcGVuZGVuY3lfbGlicyIKKy0JICAgIGlmICRvcHRfZHVwbGljYXRlX2RlcHMgOyB0aGVuCisrCSAgICBjYXNlICRkZXBsaWIgaW4KKysgICAgICAgICAgICAgIC1MKikgZnVuY19zdHJpcG5hbWUgJy1MJyAnJyAiJGRlcGxpYiIKKysgICAgICAgICAgICAgICAgICAgZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRmdW5jX3N0cmlwbmFtZV9yZXN1bHQiOzsKKysgICAgICAgICAgICAgICopIGZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIiA7OworKyAgICAgICAgICAgIGVzYWMKKysJICAgIGlmICRvcHRfcHJlc2VydmVfZHVwX2RlcHMgOyB0aGVuCisgCSAgICAgIGNhc2UgIiR0bXBfbGlicyAiIGluCistCSAgICAgICoiICRkZXBsaWIgIiopIHNwZWNpYWxkZXBsaWJzPSIkc3BlY2lhbGRlcGxpYnMgJGRlcGxpYiIgOzsKKysJICAgICAgKiIgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdCAiKikKKysgICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgc3BlY2lhbGRlcGxpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IiA7OworIAkgICAgICBlc2FjCisgCSAgICBmaQorLQkgICAgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIgorKwkgICAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0IgorIAkgIGRvbmUKKyAKKyAJICBpZiB0ZXN0ICIkbGlua19hbGxfZGVwbGlicyIgIT0gbm87IHRoZW4KK0BAIC02MTEzLDggKzcwMjksMTAgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgY2FzZSAkZGVwbGliIGluCisgCSAgICAgIC1MKikgcGF0aD0iJGRlcGxpYiIgOzsKKyAJICAgICAgKi5sYSkKKysJICAgICAgICBmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGRlcGxpYiIKKysJICAgICAgICBkZXBsaWI9JGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdAorIAkgICAgICAgIGZ1bmNfZGlybmFtZSAiJGRlcGxpYiIgIiIgIi4iCistCQlkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorKwkJZGlyPSRmdW5jX2Rpcm5hbWVfcmVzdWx0CisgCQkjIFdlIG5lZWQgYW4gYWJzb2x1dGUgcGF0aC4KKyAJCWNhc2UgJGRpciBpbgorIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnNkaXI9IiRkaXIiIDs7CitAQCAtNjEzMCw3ICs3MDQ4LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJCWNhc2UgJGhvc3QgaW4KKyAJCSotKi1kYXJ3aW4qKQorIAkJICBkZXBkZXBsPQorLQkJICBkZXBsaWJyYXJ5X25hbWVzPWAke1NFRH0gLW4gLWUgJ3MvXmxpYnJhcnlfbmFtZXM9XCguKlwpJC9cMS9wJyAkZGVwbGliYAorKwkJICBldmFsIGRlcGxpYnJhcnlfbmFtZXM9YCR7U0VEfSAtbiAtZSAncy9ebGlicmFyeV9uYW1lcz1cKC4qXCkkL1wxL3AnICRkZXBsaWJgCisgCQkgIGlmIHRlc3QgLW4gIiRkZXBsaWJyYXJ5X25hbWVzIiA7IHRoZW4KKyAJCSAgICBmb3IgdG1wIGluICRkZXBsaWJyYXJ5X25hbWVzIDsgZG8KKyAJCSAgICAgIGRlcGRlcGw9JHRtcAorQEAgLTYxNDEsOCArNzA1OSw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgICAgICAgICAgICAgICAgIGlmIHRlc3QgLXogIiRkYXJ3aW5faW5zdGFsbF9uYW1lIjsgdGhlbgorICAgICAgICAgICAgICAgICAgICAgICAgICAgZGFyd2luX2luc3RhbGxfbmFtZT1gJHtPVE9PTDY0fSAtTCAkZGVwZGVwbCAgfCBhd2sgJ3tpZiAoTlIgPT0gMikge3ByaW50ICQxO2V4aXR9fSdgCisgICAgICAgICAgICAgICAgICAgICAgIGZpCistCQkgICAgICBjb21waWxlcl9mbGFncz0iJGNvbXBpbGVyX2ZsYWdzICR7d2x9LWR5bGliX2ZpbGUgJHt3bH0ke2Rhcndpbl9pbnN0YWxsX25hbWV9OiR7ZGVwZGVwbH0iCistCQkgICAgICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgLWR5bGliX2ZpbGUgJHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorKwkJICAgICAgZnVuY19hcHBlbmQgY29tcGlsZXJfZmxhZ3MgIiAke3dsfS1keWxpYl9maWxlICR7d2x9JHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorKwkJICAgICAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgLWR5bGliX2ZpbGUgJHtkYXJ3aW5faW5zdGFsbF9uYW1lfToke2RlcGRlcGx9IgorIAkJICAgICAgcGF0aD0KKyAJCSAgICBmaQorIAkJICBmaQorQEAgLTYxNTIsNyArNzA3MCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCQkgIDs7CisgCQllc2FjCisgCQllbHNlCistCQkgIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAorKwkJICBldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZGVwbGliYAorIAkJICB0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisgCQkgICAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCisgCQkgIHRlc3QgIiRhYnNkaXIiICE9ICIkbGliZGlyIiAmJiBcCitAQCAtNjE5Miw3ICs3MTEwLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBmb3IgZGlyIGluICRuZXdsaWJfc2VhcmNoX3BhdGg7IGRvCisgCSAgICBjYXNlICIkbGliX3NlYXJjaF9wYXRoICIgaW4KKyAJICAgICoiICRkaXIgIiopIDs7CistCSAgICAqKSBsaWJfc2VhcmNoX3BhdGg9IiRsaWJfc2VhcmNoX3BhdGggJGRpciIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIGxpYl9zZWFyY2hfcGF0aCAiICRkaXIiIDs7CisgCSAgICBlc2FjCisgCSAgZG9uZQorIAkgIG5ld2xpYl9zZWFyY2hfcGF0aD0KK0BAIC02MjA1LDcgKzcxMjMsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAlmaQorIAlmb3IgdmFyIGluICR2YXJzIGRlcGVuZGVuY3lfbGliczsgZG8KKyAJICAjIEFkZCBsaWJyYXJpZXMgdG8gJHZhciBpbiByZXZlcnNlIG9yZGVyCistCSAgZXZhbCB0bXBfbGlicz1cJCR2YXIKKysJICBldmFsIHRtcF9saWJzPVwiXCQkdmFyXCIKKyAJICBuZXdfbGlicz0KKyAJICBmb3IgZGVwbGliIGluICR0bXBfbGliczsgZG8KKyAJICAgICMgRklYTUU6IFBlZGFudGljYWxseSwgdGhpcyBpcyB0aGUgcmlnaHQgdGhpbmcgdG8gZG8sIHNvCitAQCAtNjI1MCwxMyArNzE2OCwxMyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICAgLUwqKQorIAkgICAgICBjYXNlICIgJHRtcF9saWJzICIgaW4KKyAJICAgICAgKiIgJGRlcGxpYiAiKikgOzsKKy0JICAgICAgKikgdG1wX2xpYnM9IiR0bXBfbGlicyAkZGVwbGliIiA7OworKwkgICAgICAqKSBmdW5jX2FwcGVuZCB0bXBfbGlicyAiICRkZXBsaWIiIDs7CisgCSAgICAgIGVzYWMKKyAJICAgICAgOzsKKy0JICAgICopIHRtcF9saWJzPSIkdG1wX2xpYnMgJGRlcGxpYiIgOzsKKysJICAgICopIGZ1bmNfYXBwZW5kIHRtcF9saWJzICIgJGRlcGxpYiIgOzsKKyAJICAgIGVzYWMKKyAJICBkb25lCistCSAgZXZhbCAkdmFyPVwkdG1wX2xpYnMKKysJICBldmFsICR2YXI9XCIkdG1wX2xpYnNcIgorIAlkb25lICMgZm9yIHZhcgorICAgICAgIGZpCisgICAgICAgIyBMYXN0IHN0ZXA6IHJlbW92ZSBydW50aW1lIGxpYnMgZnJvbSBkZXBlbmRlbmN5X2xpYnMKK0BAIC02MjY5LDcgKzcxODcsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIDs7CisgCWVzYWMKKyAJaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgorLQkgIHRtcF9saWJzPSIkdG1wX2xpYnMgJGkiCisrCSAgZnVuY19hcHBlbmQgdG1wX2xpYnMgIiAkaSIKKyAJZmkKKyAgICAgICBkb25lCisgICAgICAgZGVwZW5kZW5jeV9saWJzPSR0bXBfbGlicworQEAgLTYzMTAsNyArNzIyOCw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgIyBOb3cgc2V0IHRoZSB2YXJpYWJsZXMgZm9yIGJ1aWxkaW5nIG9sZCBsaWJyYXJpZXMuCisgICAgICAgYnVpbGRfbGlidG9vbF9saWJzPW5vCisgICAgICAgb2xkbGlicz0iJG91dHB1dCIKKy0gICAgICBvYmpzPSIkb2JqcyRvbGRfZGVwbGlicyIKKysgICAgICBmdW5jX2FwcGVuZCBvYmpzICIkb2xkX2RlcGxpYnMiCisgICAgICAgOzsKKyAKKyAgICAgbGliKQorQEAgLTYzMTksOCArNzIzNyw4IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgbGliKikKKyAJZnVuY19zdHJpcG5hbWUgJ2xpYicgJy5sYScgIiRvdXRwdXRuYW1lIgorIAluYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKy0JZXZhbCAic2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiIgorLQlldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgorKwlldmFsIHNoYXJlZF9leHQ9XCIkc2hyZXh0X2NtZHNcIgorKwlldmFsIGxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIKKyAJOzsKKyAgICAgICAqKQorIAl0ZXN0ICIkbW9kdWxlIiA9IG5vICYmIFwKK0BAIC02MzMwLDggKzcyNDgsOCBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgICMgQWRkIHRoZSAibGliIiBwcmVmaXggZm9yIG1vZHVsZXMgaWYgcmVxdWlyZWQKKyAJICBmdW5jX3N0cmlwbmFtZSAnJyAnLmxhJyAiJG91dHB1dG5hbWUiCisgCSAgbmFtZT0kZnVuY19zdHJpcG5hbWVfcmVzdWx0CistCSAgZXZhbCAic2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiIgorLQkgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCisrCSAgZXZhbCBzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIKKysJICBldmFsIGxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIKKyAJZWxzZQorIAkgIGZ1bmNfc3RyaXBuYW1lICcnICcubGEnICIkb3V0cHV0bmFtZSIKKyAJICBsaWJuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKK0BAIC02MzQ2LDcgKzcyNjQsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAkgIGVjaG8KKyAJICAkRUNITyAiKioqIFdhcm5pbmc6IExpbmtpbmcgdGhlIHNoYXJlZCBsaWJyYXJ5ICRvdXRwdXQgYWdhaW5zdCB0aGUgbm9uLWxpYnRvb2wiCisgCSAgJEVDSE8gIioqKiBvYmplY3RzICRvYmpzIGlzIG5vdCBwb3J0YWJsZSEiCistCSAgbGlib2Jqcz0iJGxpYm9ianMgJG9ianMiCisrCSAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRvYmpzIgorIAlmaQorICAgICAgIGZpCisgCitAQCAtNjU0NCw3ICs3NDYyLDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICBkb25lCisgCisgCSAgIyBNYWtlIGV4ZWN1dGFibGVzIGRlcGVuZCBvbiBvdXIgY3VycmVudCB2ZXJzaW9uLgorLQkgIHZlcnN0cmluZz0iJHZlcnN0cmluZzoke2N1cnJlbnR9LjAiCisrCSAgZnVuY19hcHBlbmQgdmVyc3RyaW5nICI6JHtjdXJyZW50fS4wIgorIAkgIDs7CisgCisgCXFueCkKK0BAIC02NjEyLDEwICs3NTMwLDEwIEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgZmkKKyAKKyAgICAgICBmdW5jX2dlbmVyYXRlX2Rsc3ltcyAiJGxpYm5hbWUiICIkbGlibmFtZSIgInllcyIKKy0gICAgICBsaWJvYmpzPSIkbGlib2JqcyAkc3ltZmlsZW9iaiIKKysgICAgICBmdW5jX2FwcGVuZCBsaWJvYmpzICIgJHN5bWZpbGVvYmoiCisgICAgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKyAKKy0gICAgICBpZiB0ZXN0ICIkbW9kZSIgIT0gcmVsaW5rOyB0aGVuCisrICAgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbms7IHRoZW4KKyAJIyBSZW1vdmUgb3VyIG91dHB1dHMsIGJ1dCBkb24ndCByZW1vdmUgb2JqZWN0IGZpbGVzIHNpbmNlIHRoZXkKKyAJIyBtYXkgaGF2ZSBiZWVuIGNyZWF0ZWQgd2hlbiBjb21waWxpbmcgUElDIG9iamVjdHMuCisgCXJlbW92ZWxpc3Q9CitAQCAtNjYzMSw3ICs3NTQ5LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJCSAgIGNvbnRpbnVlCisgCQkgZmkKKyAJICAgICAgIGZpCistCSAgICAgICByZW1vdmVsaXN0PSIkcmVtb3ZlbGlzdCAkcCIKKysJICAgICAgIGZ1bmNfYXBwZW5kIHJlbW92ZWxpc3QgIiAkcCIKKyAJICAgICAgIDs7CisgCSAgICAqKSA7OworIAkgIGVzYWMKK0BAIC02NjQyLDcgKzc1NjAsNyBAQCBmdW5jX21vZGVfbGluayAoKQorIAorICAgICAgICMgTm93IHNldCB0aGUgdmFyaWFibGVzIGZvciBidWlsZGluZyBvbGQgbGlicmFyaWVzLgorICAgICAgIGlmIHRlc3QgIiRidWlsZF9vbGRfbGlicyIgPSB5ZXMgJiYgdGVzdCAiJGJ1aWxkX2xpYnRvb2xfbGlicyIgIT0gY29udmVuaWVuY2UgOyB0aGVuCistCW9sZGxpYnM9IiRvbGRsaWJzICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLiRsaWJleHQiCisrCWZ1bmNfYXBwZW5kIG9sZGxpYnMgIiAkb3V0cHV0X29iamRpci8kbGlibmFtZS4kbGliZXh0IgorIAorIAkjIFRyYW5zZm9ybSAubG8gZmlsZXMgdG8gLm8gZmlsZXMuCisgCW9sZG9ianM9IiRvYmpzICJgJEVDSE8gIiRsaWJvYmpzIiB8ICRTUDJOTCB8ICRTRUQgIi9cLiR7bGliZXh0fSQvZDsgJGxvMm8iIHwgJE5MMlNQYAorQEAgLTY2NTksMTAgKzc1NzcsMTEgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJIyBJZiB0aGUgdXNlciBzcGVjaWZpZWQgYW55IHJwYXRoIGZsYWdzLCB0aGVuIGFkZCB0aGVtLgorIAl0ZW1wX3hycGF0aD0KKyAJZm9yIGxpYmRpciBpbiAkeHJwYXRoOyBkbworLQkgIHRlbXBfeHJwYXRoPSIkdGVtcF94cnBhdGggLVIkbGliZGlyIgorKwkgIGZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgorKwkgIGZ1bmNfYXBwZW5kIHRlbXBfeHJwYXRoICIgLVIkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgorIAkgIGNhc2UgIiRmaW5hbGl6ZV9ycGF0aCAiIGluCisgCSAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAqKSBmaW5hbGl6ZV9ycGF0aD0iJGZpbmFsaXplX3JwYXRoICRsaWJkaXIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcnBhdGggIiAkbGliZGlyIiA7OworIAkgIGVzYWMKKyAJZG9uZQorIAlpZiB0ZXN0ICIkaGFyZGNvZGVfaW50b19saWJzIiAhPSB5ZXMgfHwgdGVzdCAiJGJ1aWxkX29sZF9saWJzIiA9IHllczsgdGhlbgorQEAgLTY2NzYsNyArNzU5NSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgZm9yIGxpYiBpbiAkb2xkX2RsZmlsZXM7IGRvCisgCWNhc2UgIiAkZGxwcmVmaWxlcyAkZGxmaWxlcyAiIGluCisgCSoiICRsaWIgIiopIDs7CistCSopIGRsZmlsZXM9IiRkbGZpbGVzICRsaWIiIDs7CisrCSopIGZ1bmNfYXBwZW5kIGRsZmlsZXMgIiAkbGliIiA7OworIAllc2FjCisgICAgICAgZG9uZQorIAorQEAgLTY2ODYsNyArNzYwNSw3IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgICAgICAgZm9yIGxpYiBpbiAkb2xkX2RscHJlZmlsZXM7IGRvCisgCWNhc2UgIiRkbHByZWZpbGVzICIgaW4KKyAJKiIgJGxpYiAiKikgOzsKKy0JKikgZGxwcmVmaWxlcz0iJGRscHJlZmlsZXMgJGxpYiIgOzsKKysJKikgZnVuY19hcHBlbmQgZGxwcmVmaWxlcyAiICRsaWIiIDs7CisgCWVzYWMKKyAgICAgICBkb25lCisgCitAQCAtNjY5OCw3ICs3NjE3LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgIDs7CisgCSAgKi0qLXJoYXBzb2R5KiB8ICotKi1kYXJ3aW4xLlswMTJdKQorIAkgICAgIyBSaGFwc29keSBDIGxpYnJhcnkgaXMgaW4gdGhlIFN5c3RlbSBmcmFtZXdvcmsKKy0JICAgIGRlcGxpYnM9IiRkZXBsaWJzIFN5c3RlbS5sdGZyYW1ld29yayIKKysJICAgIGZ1bmNfYXBwZW5kIGRlcGxpYnMgIiBTeXN0ZW0ubHRmcmFtZXdvcmsiCisgCSAgICA7OworIAkgICotKi1uZXRic2QqKQorIAkgICAgIyBEb24ndCBsaW5rIHdpdGggbGliYyB1bnRpbCB0aGUgYS5vdXQgbGQuc28gaXMgZml4ZWQuCitAQCAtNjcxNSw3ICs3NjM0LDcgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAqKQorIAkgICAgIyBBZGQgbGliYyB0byBkZXBsaWJzIG9uIGFsbCBvdGhlciBzeXN0ZW1zIGlmIG5lY2Vzc2FyeS4KKyAJICAgIGlmIHRlc3QgIiRidWlsZF9saWJ0b29sX25lZWRfbGMiID0gInllcyI7IHRoZW4KKy0JICAgICAgZGVwbGlicz0iJGRlcGxpYnMgLWxjIgorKwkgICAgICBmdW5jX2FwcGVuZCBkZXBsaWJzICIgLWxjIgorIAkgICAgZmkKKyAJICAgIDs7CisgCSAgZXNhYworQEAgLTY3NjQsMTggKzc2ODMsMTggQEAgRU9GCisgCQlpZiB0ZXN0ICJYJGFsbG93X2xpYnRvb2xfbGlic193aXRoX3N0YXRpY19ydW50aW1lcyIgPSAiWHllcyIgOyB0aGVuCisgCQkgIGNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgorIAkJICAqIiAkaSAiKikKKy0JCSAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkaSIKKysJCSAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCisgCQkgICAgaT0iIgorIAkJICAgIDs7CisgCQkgIGVzYWMKKyAJCWZpCisgCQlpZiB0ZXN0IC1uICIkaSIgOyB0aGVuCistCQkgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCistCQkgIGV2YWwgImRlcGxpYl9tYXRjaGVzPVwiJGxpYnJhcnlfbmFtZXNfc3BlY1wiIgorKwkJICBsaWJuYW1lPWBldmFsICJcXCRFQ0hPIFwiJGxpYm5hbWVfc3BlY1wiImAKKysJCSAgZGVwbGliX21hdGNoZXM9YGV2YWwgIlxcJEVDSE8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCIiYAorIAkJICBzZXQgZHVtbXkgJGRlcGxpYl9tYXRjaGVzOyBzaGlmdAorIAkJICBkZXBsaWJfbWF0Y2g9JDEKKyAJCSAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgorLQkJICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorKwkJICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkaSIKKyAJCSAgZWxzZQorIAkJICAgIGRyb3BwZWRkZXBzPXllcworIAkJICAgIGVjaG8KK0BAIC02Nzg5LDcgKzc3MDgsNyBAQCBFT0YKKyAJCWZpCisgCQk7OworIAkgICAgICAqKQorLQkJbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisrCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCisgCQk7OworIAkgICAgICBlc2FjCisgCSAgICBkb25lCitAQCAtNjgwNywxOCArNzcyNiwxOCBAQCBFT0YKKyAJCSAgaWYgdGVzdCAiWCRhbGxvd19saWJ0b29sX2xpYnNfd2l0aF9zdGF0aWNfcnVudGltZXMiID0gIlh5ZXMiIDsgdGhlbgorIAkJICAgIGNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgorIAkJICAgICoiICRpICIqKQorLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisrCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCisgCQkgICAgICBpPSIiCisgCQkgICAgICA7OworIAkJICAgIGVzYWMKKyAJCSAgZmkKKyAJCSAgaWYgdGVzdCAtbiAiJGkiIDsgdGhlbgorLQkJICAgIGV2YWwgImxpYm5hbWU9XCIkbGlibmFtZV9zcGVjXCIiCistCQkgICAgZXZhbCAiZGVwbGliX21hdGNoZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIiCisrCQkgICAgbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisrCQkgICAgZGVwbGliX21hdGNoZXM9YGV2YWwgIlxcJEVDSE8gXCIkbGlicmFyeV9uYW1lc19zcGVjXCIiYAorIAkJICAgIHNldCBkdW1teSAkZGVwbGliX21hdGNoZXM7IHNoaWZ0CisgCQkgICAgZGVwbGliX21hdGNoPSQxCisgCQkgICAgaWYgdGVzdCBgZXhwciAiJGxkZF9vdXRwdXQiIDogIi4qJGRlcGxpYl9tYXRjaCJgIC1uZSAwIDsgdGhlbgorLQkJICAgICAgbmV3ZGVwbGlicz0iJG5ld2RlcGxpYnMgJGkiCisrCQkgICAgICBmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGkiCisgCQkgICAgZWxzZQorIAkJICAgICAgZHJvcHBlZGRlcHM9eWVzCisgCQkgICAgICBlY2hvCitAQCAtNjg0MCw3ICs3NzU5LDcgQEAgRU9GCisgCQlmaQorIAkJOzsKKyAJICAgICAgKikKKy0JCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRpIgorKwkJZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRpIgorIAkJOzsKKyAJICAgICAgZXNhYworIAkgICAgZG9uZQorQEAgLTY4NTcsMTUgKzc3NzYsMjcgQEAgRU9GCisgCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KKyAJCWNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgorIAkJKiIgJGFfZGVwbGliICIqKQorLQkJICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisrCQkgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCisgCQkgIGFfZGVwbGliPSIiCisgCQkgIDs7CisgCQllc2FjCisgCSAgICAgIGZpCisgCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCistCQlldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgorKwkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisrCQlpZiB0ZXN0IC1uICIkZmlsZV9tYWdpY19nbG9iIjsgdGhlbgorKwkJICBsaWJuYW1lZ2xvYj1gZnVuY19lY2hvX2FsbCAiJGxpYm5hbWUiIHwgJFNFRCAtZSAkZmlsZV9tYWdpY19nbG9iYAorKwkJZWxzZQorKwkJICBsaWJuYW1lZ2xvYj0kbGlibmFtZQorKwkJZmkKKysJCXRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzICYmIG5vY2FzZWdsb2I9YHNob3B0IC1wIG5vY2FzZWdsb2JgCisgCQlmb3IgaSBpbiAkbGliX3NlYXJjaF9wYXRoICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aDsgZG8KKy0JCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCisrCQkgIGlmIHRlc3QgIiR3YW50X25vY2FzZWdsb2IiID0geWVzOyB0aGVuCisrCQkgICAgc2hvcHQgLXMgbm9jYXNlZ2xvYgorKwkJICAgIHBvdGVudGlhbF9saWJzPWBscyAkaS8kbGlibmFtZWdsb2JbLi1dKiAyPi9kZXYvbnVsbGAKKysJCSAgICAkbm9jYXNlZ2xvYgorKwkJICBlbHNlCisrCQkgICAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lZ2xvYlsuLV0qIDI+L2Rldi9udWxsYAorKwkJICBmaQorIAkJICBmb3IgcG90ZW50X2xpYiBpbiAkcG90ZW50aWFsX2xpYnM7IGRvCisgCQkgICAgICAjIEZvbGxvdyBzb2Z0IGxpbmtzLgorIAkJICAgICAgaWYgbHMgLWxMZCAiJHBvdGVudF9saWIiIDI+L2Rldi9udWxsIHwKK0BAIC02ODg1LDEwICs3ODE2LDEwIEBAIEVPRgorIAkJCSopIHBvdGxpYj1gJEVDSE8gIiRwb3RsaWIiIHwgJFNFRCAncyxbXi9dKiQsLCdgIiRwb3RsaWJsaW5rIjs7CisgCQkJZXNhYworIAkJICAgICAgZG9uZQorLQkJICAgICAgaWYgZXZhbCAiJGZpbGVfbWFnaWNfY21kIFwiXCRwb3RsaWJcIiIgMj4vZGV2L251bGwgfAorKwkJICAgICAgaWYgZXZhbCAkZmlsZV9tYWdpY19jbWQgXCJcJHBvdGxpYlwiIDI+L2Rldi9udWxsIHwKKyAJCQkgJFNFRCAtZSAxMHEgfAorIAkJCSAkRUdSRVAgIiRmaWxlX21hZ2ljX3JlZ2V4IiA+IC9kZXYvbnVsbDsgdGhlbgorLQkJCW5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKysJCQlmdW5jX2FwcGVuZCBuZXdkZXBsaWJzICIgJGFfZGVwbGliIgorIAkJCWFfZGVwbGliPSIiCisgCQkJYnJlYWsgMgorIAkJICAgICAgZmkKK0BAIC02OTEzLDcgKzc4NDQsNyBAQCBFT0YKKyAJICAgICAgOzsKKyAJICAgICopCisgCSAgICAgICMgQWRkIGEgLUwgYXJndW1lbnQuCistCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKysJICAgICAgZnVuY19hcHBlbmQgbmV3ZGVwbGlicyAiICRhX2RlcGxpYiIKKyAJICAgICAgOzsKKyAJICAgIGVzYWMKKyAJICBkb25lICMgR29uZSB0aHJvdWdoIGFsbCBkZXBsaWJzLgorQEAgLTY5MjksMjAgKzc4NjAsMjAgQEAgRU9GCisgCSAgICAgIGlmIHRlc3QgIlgkYWxsb3dfbGlidG9vbF9saWJzX3dpdGhfc3RhdGljX3J1bnRpbWVzIiA9ICJYeWVzIiA7IHRoZW4KKyAJCWNhc2UgIiAkcHJlZGVwcyAkcG9zdGRlcHMgIiBpbgorIAkJKiIgJGFfZGVwbGliICIqKQorLQkJICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisrCQkgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCisgCQkgIGFfZGVwbGliPSIiCisgCQkgIDs7CisgCQllc2FjCisgCSAgICAgIGZpCisgCSAgICAgIGlmIHRlc3QgLW4gIiRhX2RlcGxpYiIgOyB0aGVuCistCQlldmFsICJsaWJuYW1lPVwiJGxpYm5hbWVfc3BlY1wiIgorKwkJbGlibmFtZT1gZXZhbCAiXFwkRUNITyBcIiRsaWJuYW1lX3NwZWNcIiJgCisgCQlmb3IgaSBpbiAkbGliX3NlYXJjaF9wYXRoICRzeXNfbGliX3NlYXJjaF9wYXRoICRzaGxpYl9zZWFyY2hfcGF0aDsgZG8KKyAJCSAgcG90ZW50aWFsX2xpYnM9YGxzICRpLyRsaWJuYW1lWy4tXSogMj4vZGV2L251bGxgCisgCQkgIGZvciBwb3RlbnRfbGliIGluICRwb3RlbnRpYWxfbGliczsgZG8KKyAJCSAgICBwb3RsaWI9IiRwb3RlbnRfbGliIiAjIHNlZSBzeW1saW5rLWNoZWNrIGFib3ZlIGluIGZpbGVfbWFnaWMgdGVzdAorIAkJICAgIGlmIGV2YWwgIlwkRUNITyBcIiRwb3RlbnRfbGliXCIiIDI+L2Rldi9udWxsIHwgJFNFRCAxMHEgfCBcCisgCQkgICAgICAgJEVHUkVQICIkbWF0Y2hfcGF0dGVybl9yZWdleCIgPiAvZGV2L251bGw7IHRoZW4KKy0JCSAgICAgIG5ld2RlcGxpYnM9IiRuZXdkZXBsaWJzICRhX2RlcGxpYiIKKysJCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCisgCQkgICAgICBhX2RlcGxpYj0iIgorIAkJICAgICAgYnJlYWsgMgorIAkJICAgIGZpCitAQCAtNjk2Nyw3ICs3ODk4LDcgQEAgRU9GCisgCSAgICAgIDs7CisgCSAgICAqKQorIAkgICAgICAjIEFkZCBhIC1MIGFyZ3VtZW50LgorLQkgICAgICBuZXdkZXBsaWJzPSIkbmV3ZGVwbGlicyAkYV9kZXBsaWIiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RlcGxpYnMgIiAkYV9kZXBsaWIiCisgCSAgICAgIDs7CisgCSAgICBlc2FjCisgCSAgZG9uZSAjIEdvbmUgdGhyb3VnaCBhbGwgZGVwbGlicy4KK0BAIC03MDcxLDcgKzgwMDIsNyBAQCBFT0YKKyAJKikKKyAJICBjYXNlICIgJGRlcGxpYnMgIiBpbgorIAkgICoiIC1MJHBhdGgvJG9iamRpciAiKikKKy0JICAgIG5ld19saWJzPSIkbmV3X2xpYnMgLUwkcGF0aC8kb2JqZGlyIiA7OworKwkgICAgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAtTCRwYXRoLyRvYmpkaXIiIDs7CisgCSAgZXNhYworIAkgIDs7CisgCWVzYWMKK0BAIC03MDgxLDEwICs4MDEyLDEwIEBAIEVPRgorIAktTCopCisgCSAgY2FzZSAiICRuZXdfbGlicyAiIGluCisgCSAgKiIgJGRlcGxpYiAiKikgOzsKKy0JICAqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OworIAkgIGVzYWMKKyAJICA7OworLQkqKSBuZXdfbGlicz0iJG5ld19saWJzICRkZXBsaWIiIDs7CisrCSopIGZ1bmNfYXBwZW5kIG5ld19saWJzICIgJGRlcGxpYiIgOzsKKyAJZXNhYworICAgICAgIGRvbmUKKyAgICAgICBkZXBsaWJzPSIkbmV3X2xpYnMiCitAQCAtNzEwMSwxMCArODAzMiwxMiBAQCBFT0YKKyAJICBoYXJkY29kZV9saWJkaXJzPQorIAkgIGRlcF9ycGF0aD0KKyAJICBycGF0aD0iJGZpbmFsaXplX3JwYXRoIgorLQkgIHRlc3QgIiRtb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgorKwkgIHRlc3QgIiRvcHRfbW9kZSIgIT0gcmVsaW5rICYmIHJwYXRoPSIkY29tcGlsZV9ycGF0aCRycGF0aCIKKyAJICBmb3IgbGliZGlyIGluICRycGF0aDsgZG8KKyAJICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgorIAkgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KKysJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgorKwkJbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKKyAJCWlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgorIAkJICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgorIAkJZWxzZQorQEAgLTcxMTMsMTggKzgwNDYsMTggQEAgRU9GCisgCQkgICoiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiKikKKyAJCSAgICA7OworIAkJICAqKQorLQkJICAgIGhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorKwkJICAgIGZ1bmNfYXBwZW5kIGhhcmRjb2RlX2xpYmRpcnMgIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciIKKyAJCSAgICA7OworIAkJICBlc2FjCisgCQlmaQorIAkgICAgICBlbHNlCistCQlldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKy0JCWRlcF9ycGF0aD0iJGRlcF9ycGF0aCAkZmxhZyIKKysJCWV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKysJCWZ1bmNfYXBwZW5kIGRlcF9ycGF0aCAiICRmbGFnIgorIAkgICAgICBmaQorIAkgICAgZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisgCSAgICAgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KKyAJICAgICAgKiIgJGxpYmRpciAiKikgOzsKKy0JICAgICAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKKysJICAgICAgKikgZnVuY19hcHBlZCBwZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKyAJICBkb25lCitAQCAtNzEzMyw0MCArODA2NiwzOCBAQCBFT0YKKyAJICAgICB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKyAJICAgIGxpYmRpcj0iJGhhcmRjb2RlX2xpYmRpcnMiCisgCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZCI7IHRoZW4KKy0JICAgICAgZXZhbCAiZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNfbGRcIiIKKysJICAgICAgZXZhbCBkZXBfcnBhdGg9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY19sZFwiCisgCSAgICBlbHNlCistCSAgICAgIGV2YWwgImRlcF9ycGF0aD1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIiCisrCSAgICAgIGV2YWwgZGVwX3JwYXRoPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorIAkgICAgZmkKKyAJICBmaQorIAkgIGlmIHRlc3QgLW4gIiRydW5wYXRoX3ZhciIgJiYgdGVzdCAtbiAiJHBlcm1fcnBhdGgiOyB0aGVuCisgCSAgICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgorIAkgICAgcnBhdGg9CisgCSAgICBmb3IgZGlyIGluICRwZXJtX3JwYXRoOyBkbworLQkgICAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisrCSAgICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIkZGlyOiIKKyAJICAgIGRvbmUKKy0JICAgIGV2YWwgJHJ1bnBhdGhfdmFyPVwkcnBhdGhcJCRydW5wYXRoX3ZhcgorLQkgICAgZXhwb3J0ICRydW5wYXRoX3ZhcgorKwkgICAgZXZhbCAiJHJ1bnBhdGhfdmFyPSckcnBhdGhcJCRydW5wYXRoX3Zhcic7IGV4cG9ydCAkcnVucGF0aF92YXIiCisgCSAgZmkKKyAJICB0ZXN0IC1uICIkZGVwX3JwYXRoIiAmJiBkZXBsaWJzPSIkZGVwX3JwYXRoICRkZXBsaWJzIgorIAlmaQorIAorIAlzaGxpYnBhdGg9IiRmaW5hbGl6ZV9zaGxpYnBhdGgiCistCXRlc3QgIiRtb2RlIiAhPSByZWxpbmsgJiYgc2hsaWJwYXRoPSIkY29tcGlsZV9zaGxpYnBhdGgkc2hsaWJwYXRoIgorKwl0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBzaGxpYnBhdGg9IiRjb21waWxlX3NobGlicGF0aCRzaGxpYnBhdGgiCisgCWlmIHRlc3QgLW4gIiRzaGxpYnBhdGgiOyB0aGVuCistCSAgZXZhbCAkc2hsaWJwYXRoX3Zhcj1cJHNobGlicGF0aFwkJHNobGlicGF0aF92YXIKKy0JICBleHBvcnQgJHNobGlicGF0aF92YXIKKysJICBldmFsICIkc2hsaWJwYXRoX3Zhcj0nJHNobGlicGF0aFwkJHNobGlicGF0aF92YXInOyBleHBvcnQgJHNobGlicGF0aF92YXIiCisgCWZpCisgCisgCSMgR2V0IHRoZSByZWFsIGFuZCBsaW5rIG5hbWVzIG9mIHRoZSBsaWJyYXJ5LgorLQlldmFsICJzaGFyZWRfZXh0PVwiJHNocmV4dF9jbWRzXCIiCistCWV2YWwgImxpYnJhcnlfbmFtZXM9XCIkbGlicmFyeV9uYW1lc19zcGVjXCIiCisrCWV2YWwgc2hhcmVkX2V4dD1cIiRzaHJleHRfY21kc1wiCisrCWV2YWwgbGlicmFyeV9uYW1lcz1cIiRsaWJyYXJ5X25hbWVzX3NwZWNcIgorIAlzZXQgZHVtbXkgJGxpYnJhcnlfbmFtZXMKKyAJc2hpZnQKKyAJcmVhbG5hbWU9IiQxIgorIAlzaGlmdAorIAorIAlpZiB0ZXN0IC1uICIkc29uYW1lX3NwZWMiOyB0aGVuCistCSAgZXZhbCAic29uYW1lPVwiJHNvbmFtZV9zcGVjXCIiCisrCSAgZXZhbCBzb25hbWU9XCIkc29uYW1lX3NwZWNcIgorIAllbHNlCisgCSAgc29uYW1lPSIkcmVhbG5hbWUiCisgCWZpCitAQCAtNzE3OCw3ICs4MTA5LDcgQEAgRU9GCisgCWxpbmtuYW1lcz0KKyAJZm9yIGxpbmsKKyAJZG8KKy0JICBsaW5rbmFtZXM9IiRsaW5rbmFtZXMgJGxpbmsiCisrCSAgZnVuY19hcHBlbmQgbGlua25hbWVzICIgJGxpbmsiCisgCWRvbmUKKyAKKyAJIyBVc2Ugc3RhbmRhcmQgb2JqZWN0cyBpZiB0aGV5IGFyZSBwaWMKK0BAIC03MTg5LDcgKzgxMjAsNyBAQCBFT0YKKyAJaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgorIAkgICRvcHRfZHJ5X3J1biB8fCBjcCAiJGV4cG9ydF9zeW1ib2xzIiAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKKyAJICBleHBvcnRfc3ltYm9scz0iJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudWV4cCIKKy0JICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyIKKysJICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyIKKyAJZmkKKyAKKyAJb3JpZ19leHBvcnRfc3ltYm9scz0KK0BAIC03MjIwLDEzICs4MTUxLDQ1IEBAIEVPRgorIAkgICAgJG9wdF9kcnlfcnVuIHx8ICRSTSAkZXhwb3J0X3N5bWJvbHMKKyAJICAgIGNtZHM9JGV4cG9ydF9zeW1ib2xzX2NtZHMKKyAJICAgIHNhdmVfaWZzPSIkSUZTIjsgSUZTPSd+JworLQkgICAgZm9yIGNtZCBpbiAkY21kczsgZG8KKysJICAgIGZvciBjbWQxIGluICRjbWRzOyBkbworIAkgICAgICBJRlM9IiRzYXZlX2lmcyIKKy0JICAgICAgZXZhbCAiY21kPVwiJGNtZFwiIgorLQkgICAgICBmdW5jX2xlbiAiICRjbWQiCistCSAgICAgIGxlbj0kZnVuY19sZW5fcmVzdWx0CistCSAgICAgIGlmIHRlc3QgIiRsZW4iIC1sdCAiJG1heF9jbWRfbGVuIiB8fCB0ZXN0ICIkbWF4X2NtZF9sZW4iIC1sZSAtMTsgdGhlbgorKwkgICAgICAjIFRha2UgdGhlIG5vcm1hbCBicmFuY2ggaWYgdGhlIG5tX2ZpbGVfbGlzdF9zcGVjIGJyYW5jaAorKwkgICAgICAjIGRvZXNuJ3Qgd29yayBvciBpZiB0b29sIGNvbnZlcnNpb24gaXMgbm90IG5lZWRlZC4KKysJICAgICAgY2FzZSAkbm1fZmlsZV9saXN0X3NwZWN+JHRvX3Rvb2xfZmlsZV9jbWQgaW4KKysJCSp+ZnVuY19jb252ZXJ0X2ZpbGVfbm9vcCB8ICp+ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIgfCB+KikKKysJCSAgdHJ5X25vcm1hbF9icmFuY2g9eWVzCisrCQkgIGV2YWwgY21kPVwiJGNtZDFcIgorKwkJICBmdW5jX2xlbiAiICRjbWQiCisrCQkgIGxlbj0kZnVuY19sZW5fcmVzdWx0CisrCQkgIDs7CisrCQkqKQorKwkJICB0cnlfbm9ybWFsX2JyYW5jaD1ubworKwkJICA7OworKwkgICAgICBlc2FjCisrCSAgICAgIGlmIHRlc3QgIiR0cnlfbm9ybWFsX2JyYW5jaCIgPSB5ZXMgXAorKwkJICYmIHsgdGVzdCAiJGxlbiIgLWx0ICIkbWF4X2NtZF9sZW4iIFwKKysJCSAgICAgIHx8IHRlc3QgIiRtYXhfY21kX2xlbiIgLWxlIC0xOyB9CisrCSAgICAgIHRoZW4KKysJCWZ1bmNfc2hvd19ldmFsICIkY21kIiAnZXhpdCAkPycKKysJCXNraXBwZWRfZXhwb3J0PWZhbHNlCisrCSAgICAgIGVsaWYgdGVzdCAtbiAiJG5tX2ZpbGVfbGlzdF9zcGVjIjsgdGhlbgorKwkJZnVuY19iYXNlbmFtZSAiJG91dHB1dCIKKysJCW91dHB1dF9sYT0kZnVuY19iYXNlbmFtZV9yZXN1bHQKKysJCXNhdmVfbGlib2Jqcz0kbGlib2JqcworKwkJc2F2ZV9vdXRwdXQ9JG91dHB1dAorKwkJb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9Lm5tCisrCQlmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dCIKKysJCWxpYm9ianM9JG5tX2ZpbGVfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdAorKwkJZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgorKwkJZnVuY192ZXJib3NlICJjcmVhdGluZyAkTk0gaW5wdXQgZmlsZSBsaXN0OiAkb3V0cHV0IgorKwkJZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzOyBkbworKwkJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKysJCSAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiCisrCQlkb25lID4gIiRvdXRwdXQiCisrCQlldmFsIGNtZD1cIiRjbWQxXCIKKyAJCWZ1bmNfc2hvd19ldmFsICIkY21kIiAnZXhpdCAkPycKKysJCW91dHB1dD0kc2F2ZV9vdXRwdXQKKysJCWxpYm9ianM9JHNhdmVfbGlib2JqcworIAkJc2tpcHBlZF9leHBvcnQ9ZmFsc2UKKyAJICAgICAgZWxzZQorIAkJIyBUaGUgY29tbWFuZCBsaW5lIGlzIHRvbyBsb25nIHRvIGV4ZWN1dGUgaW4gb25lIHN0ZXAuCitAQCAtNzI0OCw3ICs4MjExLDcgQEAgRU9GCisgCWlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGluY2x1ZGVfZXhwc3ltcyI7IHRoZW4KKyAJICB0bXBfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKKyAJICB0ZXN0IC1uICIkb3JpZ19leHBvcnRfc3ltYm9scyIgJiYgdG1wX2V4cG9ydF9zeW1ib2xzPSIkb3JpZ19leHBvcnRfc3ltYm9scyIKKy0JICAkb3B0X2RyeV9ydW4gfHwgJEVDSE8gIiRpbmNsdWRlX2V4cHN5bXMiIHwgJFNQMk5MID4+ICIkdG1wX2V4cG9ydF9zeW1ib2xzIgorKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJworIAlmaQorIAorIAlpZiB0ZXN0ICJYJHNraXBwZWRfZXhwb3J0IiAhPSAiWDoiICYmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgorQEAgLTcyNjAsNyArODIyMyw3IEBAIEVPRgorIAkgICMgZ2xvYmFsIHZhcmlhYmxlcy4gam9pbigxKSB3b3VsZCBiZSBuaWNlIGhlcmUsIGJ1dCB1bmZvcnR1bmF0ZWx5CisgCSAgIyBpc24ndCBhIGJsZXNzZWQgdG9vbC4KKyAJICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKKy0JICBkZWxmaWxlcz0iJGRlbGZpbGVzICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCisrCSAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorIAkgIGV4cG9ydF9zeW1ib2xzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZgorIAkgICRvcHRfZHJ5X3J1biB8fCAkU0VEIC1mICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmZpbHRlciA8ICRvcmlnX2V4cG9ydF9zeW1ib2xzID4gJGV4cG9ydF9zeW1ib2xzCisgCWZpCitAQCAtNzI3MCw3ICs4MjMzLDcgQEAgRU9GCisgCSAgY2FzZSAiICRjb252ZW5pZW5jZSAiIGluCisgCSAgKiIgJHRlc3RfZGVwbGliICIqKSA7OworIAkgICopCistCSAgICB0bXBfZGVwbGlicz0iJHRtcF9kZXBsaWJzICR0ZXN0X2RlcGxpYiIKKysJICAgIGZ1bmNfYXBwZW5kIHRtcF9kZXBsaWJzICIgJHRlc3RfZGVwbGliIgorIAkgICAgOzsKKyAJICBlc2FjCisgCWRvbmUKK0BAIC03Mjg2LDQzICs4MjQ5LDQzIEBAIEVPRgorIAkgIGZpCisgCSAgaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgorIAkgICAgc2F2ZV9saWJvYmpzPSRsaWJvYmpzCistCSAgICBldmFsICJsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiIgorKwkgICAgZXZhbCBsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCisgCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQorIAkgIGVsc2UKKyAJICAgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCistCSAgICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKysJICAgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCisgCisgCSAgICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkY29udmVuaWVuY2UKKy0JICAgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorKwkgICAgZnVuY19hcHBlbmQgbGlib2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorIAkgICAgdGVzdCAiWCRsaWJvYmpzIiA9ICJYICIgJiYgbGlib2Jqcz0KKyAJICBmaQorIAlmaQorIAorIAlpZiB0ZXN0ICIkdGhyZWFkX3NhZmUiID0geWVzICYmIHRlc3QgLW4gIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWMiOyB0aGVuCistCSAgZXZhbCAiZmxhZz1cIiR0aHJlYWRfc2FmZV9mbGFnX3NwZWNcIiIKKy0JICBsaW5rZXJfZmxhZ3M9IiRsaW5rZXJfZmxhZ3MgJGZsYWciCisrCSAgZXZhbCBmbGFnPVwiJHRocmVhZF9zYWZlX2ZsYWdfc3BlY1wiCisrCSAgZnVuY19hcHBlbmQgbGlua2VyX2ZsYWdzICIgJGZsYWciCisgCWZpCisgCisgCSMgTWFrZSBhIGJhY2t1cCBvZiB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSB3aGVuIHJlbGlua2luZworLQlpZiB0ZXN0ICIkbW9kZSIgPSByZWxpbms7IHRoZW4KKy0JICAkb3B0X2RyeV9ydW4gfHwgKGNkICRvdXRwdXRfb2JqZGlyICYmICRSTSAke3JlYWxuYW1lfVUgJiYgJE1WICRyZWFsbmFtZSAke3JlYWxuYW1lfVUpIHx8IGV4aXQgJD8KKysJaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorKwkgICRvcHRfZHJ5X3J1biB8fCBldmFsICcoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VSAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VSknIHx8IGV4aXQgJD8KKyAJZmkKKyAKKyAJIyBEbyBlYWNoIG9mIHRoZSBhcmNoaXZlIGNvbW1hbmRzLgorIAlpZiB0ZXN0ICIkbW9kdWxlIiA9IHllcyAmJiB0ZXN0IC1uICIkbW9kdWxlX2NtZHMiIDsgdGhlbgorIAkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJG1vZHVsZV9leHBzeW1fY21kcyI7IHRoZW4KKy0JICAgIGV2YWwgInRlc3RfY21kcz1cIiRtb2R1bGVfZXhwc3ltX2NtZHNcIiIKKysJICAgIGV2YWwgdGVzdF9jbWRzPVwiJG1vZHVsZV9leHBzeW1fY21kc1wiCisgCSAgICBjbWRzPSRtb2R1bGVfZXhwc3ltX2NtZHMKKyAJICBlbHNlCistCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkbW9kdWxlX2NtZHNcIiIKKysJICAgIGV2YWwgdGVzdF9jbWRzPVwiJG1vZHVsZV9jbWRzXCIKKyAJICAgIGNtZHM9JG1vZHVsZV9jbWRzCisgCSAgZmkKKyAJZWxzZQorIAkgIGlmIHRlc3QgLW4gIiRleHBvcnRfc3ltYm9scyIgJiYgdGVzdCAtbiAiJGFyY2hpdmVfZXhwc3ltX2NtZHMiOyB0aGVuCistCSAgICBldmFsICJ0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9leHBzeW1fY21kc1wiIgorKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9leHBzeW1fY21kc1wiCisgCSAgICBjbWRzPSRhcmNoaXZlX2V4cHN5bV9jbWRzCisgCSAgZWxzZQorLQkgICAgZXZhbCAidGVzdF9jbWRzPVwiJGFyY2hpdmVfY21kc1wiIgorKwkgICAgZXZhbCB0ZXN0X2NtZHM9XCIkYXJjaGl2ZV9jbWRzXCIKKyAJICAgIGNtZHM9JGFyY2hpdmVfY21kcworIAkgIGZpCisgCWZpCitAQCAtNzM2NiwxMCArODMyOSwxMyBAQCBFT0YKKyAJICAgIGVjaG8gJ0lOUFVUICgnID4gJG91dHB1dAorIAkgICAgZm9yIG9iaiBpbiAkc2F2ZV9saWJvYmpzCisgCSAgICBkbworLQkgICAgICAkRUNITyAiJG9iaiIgPj4gJG91dHB1dAorKwkgICAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKysJICAgICAgJEVDSE8gIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiID4+ICRvdXRwdXQKKyAJICAgIGRvbmUKKyAJICAgIGVjaG8gJyknID4+ICRvdXRwdXQKKy0JICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKKysJICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKysJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorKwkgICAgb3V0cHV0PSRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQKKyAJICBlbGlmIHRlc3QgLW4gIiRzYXZlX2xpYm9ianMiICYmIHRlc3QgIlgkc2tpcHBlZF9leHBvcnQiICE9ICJYOiIgJiYgdGVzdCAiWCRmaWxlX2xpc3Rfc3BlYyIgIT0gWDsgdGhlbgorIAkgICAgb3V0cHV0PSR7b3V0cHV0X29iamRpcn0vJHtvdXRwdXRfbGF9LmxuaworIAkgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyBsaW5rZXIgaW5wdXQgZmlsZSBsaXN0OiAkb3V0cHV0IgorQEAgLTczODMsMTUgKzgzNDksMTcgQEAgRU9GCisgCSAgICBmaQorIAkgICAgZm9yIG9iagorIAkgICAgZG8KKy0JICAgICAgJEVDSE8gIiRvYmoiID4+ICRvdXRwdXQKKysJICAgICAgZnVuY190b190b29sX2ZpbGUgIiRvYmoiCisrCSAgICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IiA+PiAkb3V0cHV0CisgCSAgICBkb25lCistCSAgICBkZWxmaWxlcz0iJGRlbGZpbGVzICRvdXRwdXQiCistCSAgICBvdXRwdXQ9JGZpcnN0b2JqXCIkZmlsZV9saXN0X3NwZWMkb3V0cHV0XCIKKysJICAgIGZ1bmNfYXBwZW5kIGRlbGZpbGVzICIgJG91dHB1dCIKKysJICAgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorKwkgICAgb3V0cHV0PSRmaXJzdG9ialwiJGZpbGVfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdFwiCisgCSAgZWxzZQorIAkgICAgaWYgdGVzdCAtbiAiJHNhdmVfbGlib2JqcyI7IHRoZW4KKyAJICAgICAgZnVuY192ZXJib3NlICJjcmVhdGluZyByZWxvYWRhYmxlIG9iamVjdCBmaWxlcy4uLiIKKyAJICAgICAgb3V0cHV0PSRvdXRwdXRfb2JqZGlyLyRvdXRwdXRfbGEtJHtrfS4kb2JqZXh0CistCSAgICAgIGV2YWwgInRlc3RfY21kcz1cIiRyZWxvYWRfY21kc1wiIgorKwkgICAgICBldmFsIHRlc3RfY21kcz1cIiRyZWxvYWRfY21kc1wiCisgCSAgICAgIGZ1bmNfbGVuICIgJHRlc3RfY21kcyIKKyAJICAgICAgbGVuMD0kZnVuY19sZW5fcmVzdWx0CisgCSAgICAgIGxlbj0kbGVuMAorQEAgLTc0MTEsMTIgKzgzNzksMTIgQEAgRU9GCisgCQkgIGlmIHRlc3QgIiRrIiAtZXEgMSA7IHRoZW4KKyAJCSAgICAjIFRoZSBmaXJzdCBmaWxlIGRvZXNuJ3QgaGF2ZSBhIHByZXZpb3VzIGNvbW1hbmQgdG8gYWRkLgorIAkJICAgIHJlbG9hZF9vYmpzPSRvYmpsaXN0CistCQkgICAgZXZhbCAiY29uY2F0X2NtZHM9XCIkcmVsb2FkX2NtZHNcIiIKKysJCSAgICBldmFsIGNvbmNhdF9jbWRzPVwiJHJlbG9hZF9jbWRzXCIKKyAJCSAgZWxzZQorIAkJICAgICMgQWxsIHN1YnNlcXVlbnQgcmVsb2FkYWJsZSBvYmplY3QgZmlsZXMgd2lsbCBsaW5rIGluCisgCQkgICAgIyB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KKyAJCSAgICByZWxvYWRfb2Jqcz0iJG9iamxpc3QgJGxhc3Rfcm9iaiIKKy0JCSAgICBldmFsICJjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+JHJlbG9hZF9jbWRzflwkUk0gJGxhc3Rfcm9ialwiIgorKwkJICAgIGV2YWwgY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzfiRyZWxvYWRfY21kc35cJFJNICRsYXN0X3JvYmpcIgorIAkJICBmaQorIAkJICBsYXN0X3JvYmo9JG91dHB1dF9vYmpkaXIvJG91dHB1dF9sYS0ke2t9LiRvYmpleHQKKyAJCSAgZnVuY19hcml0aCAkayArIDEKK0BAIC03NDMzLDExICs4NDAxLDExIEBAIEVPRgorIAkgICAgICAjIGZpbGVzIHdpbGwgbGluayBpbiB0aGUgbGFzdCBvbmUgY3JlYXRlZC4KKyAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+CisgCSAgICAgIHJlbG9hZF9vYmpzPSIkb2JqbGlzdCAkbGFzdF9yb2JqIgorLQkgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRyZWxvYWRfY21kc1wiIgorKwkgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JHJlbG9hZF9jbWRzXCIKKyAJICAgICAgaWYgdGVzdCAtbiAiJGxhc3Rfcm9iaiI7IHRoZW4KKy0JICAgICAgICBldmFsICJjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfX5cJFJNICRsYXN0X3JvYmpcIiIKKysJICAgICAgICBldmFsIGNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9flwkUk0gJGxhc3Rfcm9ialwiCisgCSAgICAgIGZpCistCSAgICAgIGRlbGZpbGVzPSIkZGVsZmlsZXMgJG91dHB1dCIKKysJICAgICAgZnVuY19hcHBlbmQgZGVsZmlsZXMgIiAkb3V0cHV0IgorIAorIAkgICAgZWxzZQorIAkgICAgICBvdXRwdXQ9CitAQCAtNzQ1MCw5ICs4NDE4LDkgQEAgRU9GCisgCSAgICAgIGxpYm9ianM9JG91dHB1dAorIAkgICAgICAjIEFwcGVuZCB0aGUgY29tbWFuZCB0byBjcmVhdGUgdGhlIGV4cG9ydCBmaWxlLgorIAkgICAgICB0ZXN0IC16ICIkY29uY2F0X2NtZHMiIHx8IGNvbmNhdF9jbWRzPSRjb25jYXRfY21kc34KKy0JICAgICAgZXZhbCAiY29uY2F0X2NtZHM9XCJcJGNvbmNhdF9jbWRzJGV4cG9ydF9zeW1ib2xzX2NtZHNcIiIKKysJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHMkZXhwb3J0X3N5bWJvbHNfY21kc1wiCisgCSAgICAgIGlmIHRlc3QgLW4gIiRsYXN0X3JvYmoiOyB0aGVuCistCQlldmFsICJjb25jYXRfY21kcz1cIlwkY29uY2F0X2NtZHN+XCRSTSAkbGFzdF9yb2JqXCIiCisrCQlldmFsIGNvbmNhdF9jbWRzPVwiXCRjb25jYXRfY21kc35cJFJNICRsYXN0X3JvYmpcIgorIAkgICAgICBmaQorIAkgICAgZmkKKyAKK0BAIC03NDcxLDcgKzg0MzksNyBAQCBFT0YKKyAJCWx0X2V4aXQ9JD8KKyAKKyAJCSMgUmVzdG9yZSB0aGUgdW5pbnN0YWxsZWQgbGlicmFyeSBhbmQgZXhpdAorLQkJaWYgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB0aGVuCisrCQlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCisgCQkgICggY2QgIiRvdXRwdXRfb2JqZGlyIiAmJiBcCisgCQkgICAgJFJNICIke3JlYWxuYW1lfVQiICYmIFwKKyAJCSAgICAkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQorQEAgLTc0OTIsNyArODQ2MCw3IEBAIEVPRgorIAkgICAgaWYgdGVzdCAtbiAiJGV4cG9ydF9zeW1ib2xzIiAmJiB0ZXN0IC1uICIkaW5jbHVkZV9leHBzeW1zIjsgdGhlbgorIAkgICAgICB0bXBfZXhwb3J0X3N5bWJvbHM9IiRleHBvcnRfc3ltYm9scyIKKyAJICAgICAgdGVzdCAtbiAiJG9yaWdfZXhwb3J0X3N5bWJvbHMiICYmIHRtcF9leHBvcnRfc3ltYm9scz0iJG9yaWdfZXhwb3J0X3N5bWJvbHMiCistCSAgICAgICRvcHRfZHJ5X3J1biB8fCAkRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiCisrCSAgICAgICRvcHRfZHJ5X3J1biB8fCBldmFsICckRUNITyAiJGluY2x1ZGVfZXhwc3ltcyIgfCAkU1AyTkwgPj4gIiR0bXBfZXhwb3J0X3N5bWJvbHMiJworIAkgICAgZmkKKyAKKyAJICAgIGlmIHRlc3QgLW4gIiRvcmlnX2V4cG9ydF9zeW1ib2xzIjsgdGhlbgorQEAgLTc1MDQsNyArODQ3Miw3IEBAIEVPRgorIAkgICAgICAjIGdsb2JhbCB2YXJpYWJsZXMuIGpvaW4oMSkgd291bGQgYmUgbmljZSBoZXJlLCBidXQgdW5mb3J0dW5hdGVseQorIAkgICAgICAjIGlzbid0IGEgYmxlc3NlZCB0b29sLgorIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZSAnL1sgLF1EQVRBLyFkO3MsXCguKlwpXChbIFwsXS4qXCksc3xeXDEkfFwxXDJ8LCcgPCAkZXhwb3J0X3N5bWJvbHMgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIKKy0JICAgICAgZGVsZmlsZXM9IiRkZWxmaWxlcyAkZXhwb3J0X3N5bWJvbHMgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUuZmlsdGVyIgorKwkgICAgICBmdW5jX2FwcGVuZCBkZWxmaWxlcyAiICRleHBvcnRfc3ltYm9scyAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIiCisgCSAgICAgIGV4cG9ydF9zeW1ib2xzPSRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLmRlZgorIAkgICAgICAkb3B0X2RyeV9ydW4gfHwgJFNFRCAtZiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5maWx0ZXIgPCAkb3JpZ19leHBvcnRfc3ltYm9scyA+ICRleHBvcnRfc3ltYm9scworIAkgICAgZmkKK0BAIC03NTE1LDcgKzg0ODMsNyBAQCBFT0YKKyAJICBvdXRwdXQ9JHNhdmVfb3V0cHV0CisgCisgCSAgaWYgdGVzdCAtbiAiJGNvbnZlbmllbmNlIiAmJiB0ZXN0IC1uICIkd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWMiOyB0aGVuCistCSAgICBldmFsICJsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiIgorKwkgICAgZXZhbCBsaWJvYmpzPVwiXCRsaWJvYmpzICR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCisgCSAgICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQorIAkgIGZpCisgCSAgIyBFeHBhbmQgdGhlIGxpYnJhcnkgbGlua2luZyBjb21tYW5kcyBhZ2FpbiB0byByZXNldCB0aGUKK0BAIC03NTM5LDIzICs4NTA3LDIzIEBAIEVPRgorIAorIAlpZiB0ZXN0IC1uICIkZGVsZmlsZXMiOyB0aGVuCisgCSAgIyBBcHBlbmQgdGhlIGNvbW1hbmQgdG8gcmVtb3ZlIHRlbXBvcmFyeSBmaWxlcyB0byAkY21kcy4KKy0JICBldmFsICJjbWRzPVwiXCRjbWRzflwkUk0gJGRlbGZpbGVzXCIiCisrCSAgZXZhbCBjbWRzPVwiXCRjbWRzflwkUk0gJGRlbGZpbGVzXCIKKyAJZmkKKyAKKyAJIyBBZGQgYW55IG9iamVjdHMgZnJvbSBwcmVsb2FkZWQgY29udmVuaWVuY2UgbGlicmFyaWVzCisgCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgorIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCistCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisrCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKKyAKKyAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcworLQkgIGxpYm9ianM9IiRsaWJvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorKwkgIGZ1bmNfYXBwZW5kIGxpYm9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKyAJICB0ZXN0ICJYJGxpYm9ianMiID0gIlggIiAmJiBsaWJvYmpzPQorIAlmaQorIAorIAlzYXZlX2lmcz0iJElGUyI7IElGUz0nficKKyAJZm9yIGNtZCBpbiAkY21kczsgZG8KKyAJICBJRlM9IiRzYXZlX2lmcyIKKy0JICBldmFsICJjbWQ9XCIkY21kXCIiCisrCSAgZXZhbCBjbWQ9XCIkY21kXCIKKyAJICAkb3B0X3NpbGVudCB8fCB7CisgCSAgICBmdW5jX3F1b3RlX2Zvcl9leHBhbmQgIiRjbWQiCisgCSAgICBldmFsICJmdW5jX2VjaG8gJGZ1bmNfcXVvdGVfZm9yX2V4cGFuZF9yZXN1bHQiCitAQCAtNzU2NCw3ICs4NTMyLDcgQEAgRU9GCisgCSAgICBsdF9leGl0PSQ/CisgCisgCSAgICAjIFJlc3RvcmUgdGhlIHVuaW5zdGFsbGVkIGxpYnJhcnkgYW5kIGV4aXQKKy0JICAgIGlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorKwkgICAgaWYgdGVzdCAiJG9wdF9tb2RlIiA9IHJlbGluazsgdGhlbgorIAkgICAgICAoIGNkICIkb3V0cHV0X29iamRpciIgJiYgXAorIAkgICAgICAgICRSTSAiJHtyZWFsbmFtZX1UIiAmJiBcCisgCQkkTVYgIiR7cmVhbG5hbWV9VSIgIiRyZWFsbmFtZSIgKQorQEAgLTc1NzYsOCArODU0NCw4IEBAIEVPRgorIAlJRlM9IiRzYXZlX2lmcyIKKyAKKyAJIyBSZXN0b3JlIHRoZSB1bmluc3RhbGxlZCBsaWJyYXJ5IGFuZCBleGl0CistCWlmIHRlc3QgIiRtb2RlIiA9IHJlbGluazsgdGhlbgorLQkgICRvcHRfZHJ5X3J1biB8fCAoY2QgJG91dHB1dF9vYmpkaXIgJiYgJFJNICR7cmVhbG5hbWV9VCAmJiAkTVYgJHJlYWxuYW1lICR7cmVhbG5hbWV9VCAmJiAkTVYgJHtyZWFsbmFtZX1VICRyZWFsbmFtZSkgfHwgZXhpdCAkPworKwlpZiB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB0aGVuCisrCSAgJG9wdF9kcnlfcnVuIHx8IGV2YWwgJyhjZCAkb3V0cHV0X29iamRpciAmJiAkUk0gJHtyZWFsbmFtZX1UICYmICRNViAkcmVhbG5hbWUgJHtyZWFsbmFtZX1UICYmICRNViAke3JlYWxuYW1lfVUgJHJlYWxuYW1lKScgfHwgZXhpdCAkPworIAorIAkgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KKyAJICAgIGlmIHRlc3QgLXogIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlYyI7IHRoZW4KK0BAIC03NjU2LDE3ICs4NjI0LDIwIEBAIEVPRgorIAorICAgICAgIGlmIHRlc3QgLW4gIiRjb252ZW5pZW5jZSI7IHRoZW4KKyAJaWYgdGVzdCAtbiAiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjIjsgdGhlbgorLQkgIGV2YWwgInRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzPVwiJHdob2xlX2FyY2hpdmVfZmxhZ19zcGVjXCIiCisrCSAgZXZhbCB0bXBfd2hvbGVfYXJjaGl2ZV9mbGFncz1cIiR3aG9sZV9hcmNoaXZlX2ZsYWdfc3BlY1wiCisgCSAgcmVsb2FkX2NvbnZfb2Jqcz0kcmVsb2FkX29ianNcIGAkRUNITyAiJHRtcF93aG9sZV9hcmNoaXZlX2ZsYWdzIiB8ICRTRUQgJ3N8LHwgfGcnYAorIAllbHNlCisgCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke29ian14IgorLQkgIGdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorKwkgIGZ1bmNfYXBwZW5kIGdlbmVyYXRlZCAiICRnZW50b3AiCisgCisgCSAgZnVuY19leHRyYWN0X2FyY2hpdmVzICRnZW50b3AgJGNvbnZlbmllbmNlCisgCSAgcmVsb2FkX2NvbnZfb2Jqcz0iJHJlbG9hZF9vYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorIAlmaQorICAgICAgIGZpCisgCisrICAgICAgIyBJZiB3ZSdyZSBub3QgYnVpbGRpbmcgc2hhcmVkLCB3ZSBuZWVkIHRvIHVzZSBub25fcGljX29ianMKKysgICAgICB0ZXN0ICIkYnVpbGRfbGlidG9vbF9saWJzIiAhPSB5ZXMgJiYgbGlib2Jqcz0iJG5vbl9waWNfb2JqZWN0cyIKKysKKyAgICAgICAjIENyZWF0ZSB0aGUgb2xkLXN0eWxlIG9iamVjdC4KKyAgICAgICByZWxvYWRfb2Jqcz0iJG9ianMkb2xkX2RlcGxpYnMgImAkRUNITyAiJGxpYm9ianMiIHwgJFNQMk5MIHwgJFNFRCAiL1wuJHtsaWJleHR9JC9kOyAvXC5saWIkL2Q7ICRsbzJvIiB8ICROTDJTUGAiICRyZWxvYWRfY29udl9vYmpzIiAjIyMgdGVzdHN1aXRlOiBza2lwIG5lc3RlZCBxdW90aW5nIHRlc3QKKyAKK0BAIC03NjkwLDcgKzg2NjEsNyBAQCBFT0YKKyAJIyBDcmVhdGUgYW4gaW52YWxpZCBsaWJ0b29sIG9iamVjdCBpZiBubyBQSUMsIHNvIHRoYXQgd2UgZG9uJ3QKKyAJIyBhY2NpZGVudGFsbHkgbGluayBpdCBpbnRvIGEgcHJvZ3JhbS4KKyAJIyAkc2hvdyAiZWNobyB0aW1lc3RhbXAgPiAkbGlib2JqIgorLQkjICRvcHRfZHJ5X3J1biB8fCBlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmogfHwgZXhpdCAkPworKwkjICRvcHRfZHJ5X3J1biB8fCBldmFsICJlY2hvIHRpbWVzdGFtcCA+ICRsaWJvYmoiIHx8IGV4aXQgJD8KKyAJZXhpdCAkRVhJVF9TVUNDRVNTCisgICAgICAgZmkKKyAKK0BAIC03NzQwLDggKzg3MTEsOCBAQCBFT0YKKyAJaWYgdGVzdCAiJHRhZ25hbWUiID0gQ1hYIDsgdGhlbgorIAkgIGNhc2UgJHtNQUNPU1hfREVQTE9ZTUVOVF9UQVJHRVQtMTAuMH0gaW4KKyAJICAgIDEwLlswMTIzXSkKKy0JICAgICAgY29tcGlsZV9jb21tYW5kPSIkY29tcGlsZV9jb21tYW5kICR7d2x9LWJpbmRfYXRfbG9hZCIKKy0JICAgICAgZmluYWxpemVfY29tbWFuZD0iJGZpbmFsaXplX2NvbW1hbmQgJHt3bH0tYmluZF9hdF9sb2FkIgorKwkgICAgICBmdW5jX2FwcGVuZCBjb21waWxlX2NvbW1hbmQgIiAke3dsfS1iaW5kX2F0X2xvYWQiCisrCSAgICAgIGZ1bmNfYXBwZW5kIGZpbmFsaXplX2NvbW1hbmQgIiAke3dsfS1iaW5kX2F0X2xvYWQiCisgCSAgICA7OworIAkgIGVzYWMKKyAJZmkKK0BAIC03NzYxLDcgKzg3MzIsNyBAQCBFT0YKKyAJKikKKyAJICBjYXNlICIgJGNvbXBpbGVfZGVwbGlicyAiIGluCisgCSAgKiIgLUwkcGF0aC8kb2JqZGlyICIqKQorLQkgICAgbmV3X2xpYnM9IiRuZXdfbGlicyAtTCRwYXRoLyRvYmpkaXIiIDs7CisrCSAgICBmdW5jX2FwcGVuZCBuZXdfbGlicyAiIC1MJHBhdGgvJG9iamRpciIgOzsKKyAJICBlc2FjCisgCSAgOzsKKyAJZXNhYworQEAgLTc3NzEsMTcgKzg3NDIsMTcgQEAgRU9GCisgCS1MKikKKyAJICBjYXNlICIgJG5ld19saWJzICIgaW4KKyAJICAqIiAkZGVwbGliICIqKSA7OworLQkgICopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBuZXdfbGlicyAiICRkZXBsaWIiIDs7CisgCSAgZXNhYworIAkgIDs7CistCSopIG5ld19saWJzPSIkbmV3X2xpYnMgJGRlcGxpYiIgOzsKKysJKikgZnVuY19hcHBlbmQgbmV3X2xpYnMgIiAkZGVwbGliIiA7OworIAllc2FjCisgICAgICAgZG9uZQorICAgICAgIGNvbXBpbGVfZGVwbGlicz0iJG5ld19saWJzIgorIAorIAorLSAgICAgIGNvbXBpbGVfY29tbWFuZD0iJGNvbXBpbGVfY29tbWFuZCAkY29tcGlsZV9kZXBsaWJzIgorLSAgICAgIGZpbmFsaXplX2NvbW1hbmQ9IiRmaW5hbGl6ZV9jb21tYW5kICRmaW5hbGl6ZV9kZXBsaWJzIgorKyAgICAgIGZ1bmNfYXBwZW5kIGNvbXBpbGVfY29tbWFuZCAiICRjb21waWxlX2RlcGxpYnMiCisrICAgICAgZnVuY19hcHBlbmQgZmluYWxpemVfY29tbWFuZCAiICRmaW5hbGl6ZV9kZXBsaWJzIgorIAorICAgICAgIGlmIHRlc3QgLW4gIiRycGF0aCR4cnBhdGgiOyB0aGVuCisgCSMgSWYgdGhlIHVzZXIgc3BlY2lmaWVkIGFueSBycGF0aCBmbGFncywgdGhlbiBhZGQgdGhlbS4KK0BAIC03Nzg5LDcgKzg3NjAsNyBAQCBFT0YKKyAJICAjIFRoaXMgaXMgdGhlIG1hZ2ljIHRvIHVzZSAtcnBhdGguCisgCSAgY2FzZSAiJGZpbmFsaXplX3JwYXRoICIgaW4KKyAJICAqIiAkbGliZGlyICIqKSA7OworLQkgICopIGZpbmFsaXplX3JwYXRoPSIkZmluYWxpemVfcnBhdGggJGxpYmRpciIgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBmaW5hbGl6ZV9ycGF0aCAiICRsaWJkaXIiIDs7CisgCSAgZXNhYworIAlkb25lCisgICAgICAgZmkKK0BAIC03ODA4LDE4ICs4Nzc5LDE4IEBAIEVPRgorIAkgICAgICAqIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yJGxpYmRpciRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIiopCisgCQk7OworIAkgICAgICAqKQorLQkJaGFyZGNvZGVfbGliZGlycz0iJGhhcmRjb2RlX2xpYmRpcnMkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisrCQlmdW5jX2FwcGVuZCBoYXJkY29kZV9saWJkaXJzICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIiCisgCQk7OworIAkgICAgICBlc2FjCisgCSAgICBmaQorIAkgIGVsc2UKKy0JICAgIGV2YWwgImZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgorLQkgICAgcnBhdGg9IiRycGF0aCAkZmxhZyIKKysJICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKysJICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCisgCSAgZmkKKyAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCisgCSAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgorIAkgICoiICRsaWJkaXIgIiopIDs7CistCSAgKikgcGVybV9ycGF0aD0iJHBlcm1fcnBhdGggJGxpYmRpciIgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBwZXJtX3JwYXRoICIgJGxpYmRpciIgOzsKKyAJICBlc2FjCisgCWZpCisgCWNhc2UgJGhvc3QgaW4KK0BAIC03ODI4LDEyICs4Nzk5LDEyIEBAIEVPRgorIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgorIAkgICoiOiRsaWJkaXI6IiopIDs7CisgCSAgOjopIGRsbHNlYXJjaHBhdGg9JGxpYmRpcjs7CistCSAgKikgZGxsc2VhcmNocGF0aD0iJGRsbHNlYXJjaHBhdGg6JGxpYmRpciI7OworKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokbGliZGlyIjs7CisgCSAgZXNhYworIAkgIGNhc2UgOiRkbGxzZWFyY2hwYXRoOiBpbgorIAkgICoiOiR0ZXN0YmluZGlyOiIqKSA7OworIAkgIDo6KSBkbGxzZWFyY2hwYXRoPSR0ZXN0YmluZGlyOzsKKy0JICAqKSBkbGxzZWFyY2hwYXRoPSIkZGxsc2VhcmNocGF0aDokdGVzdGJpbmRpciI7OworKwkgICopIGZ1bmNfYXBwZW5kIGRsbHNlYXJjaHBhdGggIjokdGVzdGJpbmRpciI7OworIAkgIGVzYWMKKyAJICA7OworIAllc2FjCitAQCAtNzg0Miw3ICs4ODEzLDcgQEAgRU9GCisgICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiICYmCisgCSB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKyAJbGliZGlyPSIkaGFyZGNvZGVfbGliZGlycyIKKy0JZXZhbCAicnBhdGg9XCIgJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKysJZXZhbCBycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisgICAgICAgZmkKKyAgICAgICBjb21waWxlX3JwYXRoPSIkcnBhdGgiCisgCitAQCAtNzg1OSwxOCArODgzMCwxOCBAQCBFT0YKKyAJICAgICAgKiIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciRsaWJkaXIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIqKQorIAkJOzsKKyAJICAgICAgKikKKy0JCWhhcmRjb2RlX2xpYmRpcnM9IiRoYXJkY29kZV9saWJkaXJzJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorKwkJZnVuY19hcHBlbmQgaGFyZGNvZGVfbGliZGlycyAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IkbGliZGlyIgorIAkJOzsKKyAJICAgICAgZXNhYworIAkgICAgZmkKKyAJICBlbHNlCistCSAgICBldmFsICJmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIiIKKy0JICAgIHJwYXRoPSIkcnBhdGggJGZsYWciCisrCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisrCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgorIAkgIGZpCisgCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorIAkgIGNhc2UgIiRmaW5hbGl6ZV9wZXJtX3JwYXRoICIgaW4KKyAJICAqIiAkbGliZGlyICIqKSA7OworLQkgICopIGZpbmFsaXplX3Blcm1fcnBhdGg9IiRmaW5hbGl6ZV9wZXJtX3JwYXRoICRsaWJkaXIiIDs7CisrCSAgKikgZnVuY19hcHBlbmQgZmluYWxpemVfcGVybV9ycGF0aCAiICRsaWJkaXIiIDs7CisgCSAgZXNhYworIAlmaQorICAgICAgIGRvbmUKK0BAIC03ODc4LDcgKzg4NDksNyBAQCBFT0YKKyAgICAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciIgJiYKKyAJIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgorIAlsaWJkaXI9IiRoYXJkY29kZV9saWJkaXJzIgorLQlldmFsICJycGF0aD1cIiAkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiIgorKwlldmFsIHJwYXRoPVwiICRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKyAgICAgICBmaQorICAgICAgIGZpbmFsaXplX3JwYXRoPSIkcnBhdGgiCisgCitAQCAtNzkyMSw2ICs4ODkyLDEyIEBAIEVPRgorIAlleGl0X3N0YXR1cz0wCisgCWZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdF9zdGF0dXM9JD8nCisgCisrCWlmIHRlc3QgLW4gIiRwb3N0bGlua19jbWRzIjsgdGhlbgorKwkgIGZ1bmNfdG9fdG9vbF9maWxlICIkb3V0cHV0IgorKwkgIHBvc3RsaW5rX2NtZHM9YGZ1bmNfZWNob19hbGwgIiRwb3N0bGlua19jbWRzIiB8ICRTRUQgLWUgJ3MlQE9VVFBVVEAlJyIkb3V0cHV0IiclZycgLWUgJ3MlQFRPT0xfT1VUUFVUQCUnIiRmdW5jX3RvX3Rvb2xfZmlsZV9yZXN1bHQiJyVnJ2AKKysJICBmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JworKwlmaQorKworIAkjIERlbGV0ZSB0aGUgZ2VuZXJhdGVkIGZpbGVzLgorIAlpZiB0ZXN0IC1mICIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9Uy4ke29iamV4dH0iOyB0aGVuCisgCSAgZnVuY19zaG93X2V2YWwgJyRSTSAiJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfVMuJHtvYmpleHR9IicKK0BAIC03OTQzLDcgKzg5MjAsNyBAQCBFT0YKKyAJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgorIAkgIHJwYXRoPQorIAkgIGZvciBkaXIgaW4gJHBlcm1fcnBhdGg7IGRvCistCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisrCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCisgCSAgZG9uZQorIAkgIGNvbXBpbGVfdmFyPSIkcnVucGF0aF92YXI9XCIkcnBhdGhcJCRydW5wYXRoX3ZhclwiICIKKyAJZmkKK0BAIC03OTUxLDcgKzg5MjgsNyBAQCBFT0YKKyAJICAjIFdlIHNob3VsZCBzZXQgdGhlIHJ1bnBhdGhfdmFyLgorIAkgIHJwYXRoPQorIAkgIGZvciBkaXIgaW4gJGZpbmFsaXplX3Blcm1fcnBhdGg7IGRvCistCSAgICBycGF0aD0iJHJwYXRoJGRpcjoiCisrCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiJGRpcjoiCisgCSAgZG9uZQorIAkgIGZpbmFsaXplX3Zhcj0iJHJ1bnBhdGhfdmFyPVwiJHJwYXRoXCQkcnVucGF0aF92YXJcIiAiCisgCWZpCitAQCAtNzk2Niw2ICs4OTQzLDEzIEBAIEVPRgorIAkkb3B0X2RyeV9ydW4gfHwgJFJNICRvdXRwdXQKKyAJIyBMaW5rIHRoZSBleGVjdXRhYmxlIGFuZCBleGl0CisgCWZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdCAkPycKKysKKysJaWYgdGVzdCAtbiAiJHBvc3RsaW5rX2NtZHMiOyB0aGVuCisrCSAgZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXQiCisrCSAgcG9zdGxpbmtfY21kcz1gZnVuY19lY2hvX2FsbCAiJHBvc3RsaW5rX2NtZHMiIHwgJFNFRCAtZSAncyVAT1VUUFVUQCUnIiRvdXRwdXQiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAorKwkgIGZ1bmNfZXhlY3V0ZV9jbWRzICIkcG9zdGxpbmtfY21kcyIgJ2V4aXQgJD8nCisrCWZpCisrCisgCWV4aXQgJEVYSVRfU1VDQ0VTUworICAgICAgIGZpCisgCitAQCAtNzk5OSw2ICs4OTgzLDEyIEBAIEVPRgorIAorICAgICAgIGZ1bmNfc2hvd19ldmFsICIkbGlua19jb21tYW5kIiAnZXhpdCAkPycKKyAKKysgICAgICBpZiB0ZXN0IC1uICIkcG9zdGxpbmtfY21kcyI7IHRoZW4KKysJZnVuY190b190b29sX2ZpbGUgIiRvdXRwdXRfb2JqZGlyLyRvdXRwdXRuYW1lIgorKwlwb3N0bGlua19jbWRzPWBmdW5jX2VjaG9fYWxsICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEIC1lICdzJUBPVVRQVVRAJSciJG91dHB1dF9vYmpkaXIvJG91dHB1dG5hbWUiJyVnJyAtZSAncyVAVE9PTF9PVVRQVVRAJSciJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCInJWcnYAorKwlmdW5jX2V4ZWN1dGVfY21kcyAiJHBvc3RsaW5rX2NtZHMiICdleGl0ICQ/JworKyAgICAgIGZpCisrCisgICAgICAgIyBOb3cgY3JlYXRlIHRoZSB3cmFwcGVyIHNjcmlwdC4KKyAgICAgICBmdW5jX3ZlcmJvc2UgImNyZWF0aW5nICRvdXRwdXQiCisgCitAQCAtODA5Niw3ICs5MDg2LDcgQEAgRU9GCisgCWVsc2UKKyAJICBvbGRvYmpzPSIkb2xkX2RlcGxpYnMgJG5vbl9waWNfb2JqZWN0cyIKKyAJICBpZiB0ZXN0ICIkcHJlbG9hZCIgPSB5ZXMgJiYgdGVzdCAtZiAiJHN5bWZpbGVvYmoiOyB0aGVuCistCSAgICBvbGRvYmpzPSIkb2xkb2JqcyAkc3ltZmlsZW9iaiIKKysJICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkc3ltZmlsZW9iaiIKKyAJICBmaQorIAlmaQorIAlhZGRsaWJzPSIkb2xkX2NvbnZlbmllbmNlIgorQEAgLTgxMDQsMTAgKzkwOTQsMTAgQEAgRU9GCisgCisgICAgICAgaWYgdGVzdCAtbiAiJGFkZGxpYnMiOyB0aGVuCisgCWdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCistCWdlbmVyYXRlZD0iJGdlbmVyYXRlZCAkZ2VudG9wIgorKwlmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgorIAorIAlmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkYWRkbGlicworLQlvbGRvYmpzPSIkb2xkb2JqcyAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKysJZnVuY19hcHBlbmQgb2xkb2JqcyAiICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorICAgICAgIGZpCisgCisgICAgICAgIyBEbyBlYWNoIGNvbW1hbmQgaW4gdGhlIGFyY2hpdmUgY29tbWFuZHMuCitAQCAtODExOCwxMCArOTEwOCwxMCBAQCBFT0YKKyAJIyBBZGQgYW55IG9iamVjdHMgZnJvbSBwcmVsb2FkZWQgY29udmVuaWVuY2UgbGlicmFyaWVzCisgCWlmIHRlc3QgLW4gIiRkbHByZWZpbGVzIjsgdGhlbgorIAkgIGdlbnRvcD0iJG91dHB1dF9vYmpkaXIvJHtvdXRwdXRuYW1lfXgiCistCSAgZ2VuZXJhdGVkPSIkZ2VuZXJhdGVkICRnZW50b3AiCisrCSAgZnVuY19hcHBlbmQgZ2VuZXJhdGVkICIgJGdlbnRvcCIKKyAKKyAJICBmdW5jX2V4dHJhY3RfYXJjaGl2ZXMgJGdlbnRvcCAkZGxwcmVmaWxlcworLQkgIG9sZG9ianM9IiRvbGRvYmpzICRmdW5jX2V4dHJhY3RfYXJjaGl2ZXNfcmVzdWx0IgorKwkgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZnVuY19leHRyYWN0X2FyY2hpdmVzX3Jlc3VsdCIKKyAJZmkKKyAKKyAJIyBQT1NJWCBkZW1hbmRzIG5vIHBhdGhzIHRvIGJlIGVuY29kZWQgaW4gYXJjaGl2ZXMuICBXZSBoYXZlCitAQCAtODEzOSw3ICs5MTI5LDcgQEAgRU9GCisgCWVsc2UKKyAJICBlY2hvICJjb3B5aW5nIHNlbGVjdGVkIG9iamVjdCBmaWxlcyB0byBhdm9pZCBiYXNlbmFtZSBjb25mbGljdHMuLi4iCisgCSAgZ2VudG9wPSIkb3V0cHV0X29iamRpci8ke291dHB1dG5hbWV9eCIKKy0JICBnZW5lcmF0ZWQ9IiRnZW5lcmF0ZWQgJGdlbnRvcCIKKysJICBmdW5jX2FwcGVuZCBnZW5lcmF0ZWQgIiAkZ2VudG9wIgorIAkgIGZ1bmNfbWtkaXJfcCAiJGdlbnRvcCIKKyAJICBzYXZlX29sZG9ianM9JG9sZG9ianMKKyAJICBvbGRvYmpzPQorQEAgLTgxNjMsMTggKzkxNTMsMjggQEAgRU9GCisgCQllc2FjCisgCSAgICAgIGRvbmUKKyAJICAgICAgZnVuY19zaG93X2V2YWwgImxuICRvYmogJGdlbnRvcC8kbmV3b2JqIHx8IGNwICRvYmogJGdlbnRvcC8kbmV3b2JqIgorLQkgICAgICBvbGRvYmpzPSIkb2xkb2JqcyAkZ2VudG9wLyRuZXdvYmoiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG9sZG9ianMgIiAkZ2VudG9wLyRuZXdvYmoiCisgCSAgICAgIDs7CistCSAgICAqKSBvbGRvYmpzPSIkb2xkb2JqcyAkb2JqIiA7OworKwkgICAgKikgZnVuY19hcHBlbmQgb2xkb2JqcyAiICRvYmoiIDs7CisgCSAgICBlc2FjCisgCSAgZG9uZQorIAlmaQorLQlldmFsICJjbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIiIKKysJZXZhbCBjbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIgorIAorIAlmdW5jX2xlbiAiICRjbWRzIgorIAlsZW49JGZ1bmNfbGVuX3Jlc3VsdAorIAlpZiB0ZXN0ICIkbGVuIiAtbHQgIiRtYXhfY21kX2xlbiIgfHwgdGVzdCAiJG1heF9jbWRfbGVuIiAtbGUgLTE7IHRoZW4KKyAJICBjbWRzPSRvbGRfYXJjaGl2ZV9jbWRzCisrCWVsaWYgdGVzdCAtbiAiJGFyY2hpdmVyX2xpc3Rfc3BlYyI7IHRoZW4KKysJICBmdW5jX3ZlcmJvc2UgInVzaW5nIGNvbW1hbmQgZmlsZSBhcmNoaXZlIGxpbmtpbmcuLi4iCisrCSAgZm9yIG9iaiBpbiAkb2xkb2JqcworKwkgIGRvCisrCSAgICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG9iaiIKKysJICAgICRFQ0hPICIkZnVuY190b190b29sX2ZpbGVfcmVzdWx0IgorKwkgIGRvbmUgPiAkb3V0cHV0X29iamRpci8kbGlibmFtZS5saWJjbWQKKysJICBmdW5jX3RvX3Rvb2xfZmlsZSAiJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUubGliY21kIgorKwkgIG9sZG9ianM9IiAkYXJjaGl2ZXJfbGlzdF9zcGVjJGZ1bmNfdG9fdG9vbF9maWxlX3Jlc3VsdCIKKysJICBjbWRzPSRvbGRfYXJjaGl2ZV9jbWRzCisgCWVsc2UKKyAJICAjIHRoZSBjb21tYW5kIGxpbmUgaXMgdG9vIGxvbmcgdG8gbGluayBpbiBvbmUgc3RlcCwgbGluayBpbiBwYXJ0cworIAkgIGZ1bmNfdmVyYm9zZSAidXNpbmcgcGllY2V3aXNlIGFyY2hpdmUgbGlua2luZy4uLiIKK0BAIC04MTg5LDcgKzkxODksNyBAQCBFT0YKKyAJICBkbworIAkgICAgbGFzdF9vbGRvYmo9JG9iagorIAkgIGRvbmUKKy0JICBldmFsICJ0ZXN0X2NtZHM9XCIkb2xkX2FyY2hpdmVfY21kc1wiIgorKwkgIGV2YWwgdGVzdF9jbWRzPVwiJG9sZF9hcmNoaXZlX2NtZHNcIgorIAkgIGZ1bmNfbGVuICIgJHRlc3RfY21kcyIKKyAJICBsZW4wPSRmdW5jX2xlbl9yZXN1bHQKKyAJICBsZW49JGxlbjAKK0BAIC04MjA4LDcgKzkyMDgsNyBAQCBFT0YKKyAJCVJBTkxJQj0kc2F2ZV9SQU5MSUIKKyAJICAgICAgZmkKKyAJICAgICAgdGVzdCAteiAiJGNvbmNhdF9jbWRzIiB8fCBjb25jYXRfY21kcz0kY29uY2F0X2NtZHN+CistCSAgICAgIGV2YWwgImNvbmNhdF9jbWRzPVwiXCR7Y29uY2F0X2NtZHN9JG9sZF9hcmNoaXZlX2NtZHNcIiIKKysJICAgICAgZXZhbCBjb25jYXRfY21kcz1cIlwke2NvbmNhdF9jbWRzfSRvbGRfYXJjaGl2ZV9jbWRzXCIKKyAJICAgICAgb2JqbGlzdD0KKyAJICAgICAgbGVuPSRsZW4wCisgCSAgICBmaQorQEAgLTgyMTYsOSArOTIxNiw5IEBAIEVPRgorIAkgIFJBTkxJQj0kc2F2ZV9SQU5MSUIKKyAJICBvbGRvYmpzPSRvYmpsaXN0CisgCSAgaWYgdGVzdCAiWCRvbGRvYmpzIiA9ICJYIiA7IHRoZW4KKy0JICAgIGV2YWwgImNtZHM9XCJcJGNvbmNhdF9jbWRzXCIiCisrCSAgICBldmFsIGNtZHM9XCJcJGNvbmNhdF9jbWRzXCIKKyAJICBlbHNlCistCSAgICBldmFsICJjbWRzPVwiXCRjb25jYXRfY21kc35cJG9sZF9hcmNoaXZlX2NtZHNcIiIKKysJICAgIGV2YWwgY21kcz1cIlwkY29uY2F0X2NtZHN+XCRvbGRfYXJjaGl2ZV9jbWRzXCIKKyAJICBmaQorIAlmaQorICAgICAgIGZpCitAQCAtODI2OCwxMiArOTI2OCwyMyBAQCBFT0YKKyAJICAgICAgKi5sYSkKKyAJCWZ1bmNfYmFzZW5hbWUgIiRkZXBsaWIiCisgCQluYW1lPSIkZnVuY19iYXNlbmFtZV9yZXN1bHQiCistCQlsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGRlcGxpYmAKKysJCWZ1bmNfcmVzb2x2ZV9zeXNyb290ICIkZGVwbGliIgorKwkJZXZhbCBsaWJkaXI9YCR7U0VEfSAtbiAtZSAncy9ebGliZGlyPVwoLipcKSQvXDEvcCcgJGZ1bmNfcmVzb2x2ZV9zeXNyb290X3Jlc3VsdGAKKyAJCXRlc3QgLXogIiRsaWJkaXIiICYmIFwKKyAJCSAgZnVuY19mYXRhbF9lcnJvciAiXGAkZGVwbGliJyBpcyBub3QgYSB2YWxpZCBsaWJ0b29sIGFyY2hpdmUiCistCQluZXdkZXBlbmRlbmN5X2xpYnM9IiRuZXdkZXBlbmRlbmN5X2xpYnMgJGxpYmRpci8kbmFtZSIKKysJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiICR7bHRfc3lzcm9vdDorPX0kbGliZGlyLyRuYW1lIgorKwkJOzsKKysJICAgICAgLUwqKQorKwkJZnVuY19zdHJpcG5hbWUgLUwgJycgIiRkZXBsaWIiCisrCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdCIKKysJCWZ1bmNfYXBwZW5kIG5ld2RlcGVuZGVuY3lfbGlicyAiIC1MJGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdCIKKyAJCTs7CistCSAgICAgICopIG5ld2RlcGVuZGVuY3lfbGlicz0iJG5ld2RlcGVuZGVuY3lfbGlicyAkZGVwbGliIiA7OworKwkgICAgICAtUiopCisrCQlmdW5jX3N0cmlwbmFtZSAtUiAnJyAiJGRlcGxpYiIKKysJCWZ1bmNfcmVwbGFjZV9zeXNyb290ICIkZnVuY19zdHJpcG5hbWVfcmVzdWx0IgorKwkJZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgLVIkZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0IgorKwkJOzsKKysJICAgICAgKikgZnVuY19hcHBlbmQgbmV3ZGVwZW5kZW5jeV9saWJzICIgJGRlcGxpYiIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZG9uZQorIAkgICAgZGVwZW5kZW5jeV9saWJzPSIkbmV3ZGVwZW5kZW5jeV9saWJzIgorQEAgLTgyODQsMTIgKzkyOTUsMTQgQEAgRU9GCisgCSAgICAgICoubGEpCisgCSAgICAgICAgZnVuY19iYXNlbmFtZSAiJGxpYiIKKyAJCW5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0JCWxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkbGliYAorKwkJZnVuY19yZXNvbHZlX3N5c3Jvb3QgIiRsaWIiCisrCQlldmFsIGxpYmRpcj1gJHtTRUR9IC1uIC1lICdzL15saWJkaXI9XCguKlwpJC9cMS9wJyAkZnVuY19yZXNvbHZlX3N5c3Jvb3RfcmVzdWx0YAorKworIAkJdGVzdCAteiAiJGxpYmRpciIgJiYgXAorIAkJICBmdW5jX2ZhdGFsX2Vycm9yICJcYCRsaWInIGlzIG5vdCBhIHZhbGlkIGxpYnRvb2wgYXJjaGl2ZSIKKy0JCW5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRsaWJkaXIvJG5hbWUiCisrCQlmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJHtsdF9zeXNyb290Ois9fSRsaWJkaXIvJG5hbWUiCisgCQk7OworLQkgICAgICAqKSBuZXdkbGZpbGVzPSIkbmV3ZGxmaWxlcyAkbGliIiA7OworKwkgICAgICAqKSBmdW5jX2FwcGVuZCBuZXdkbGZpbGVzICIgJGxpYiIgOzsKKyAJICAgICAgZXNhYworIAkgICAgZG9uZQorIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCitAQCAtODMwMywxMCArOTMxNiwxMSBAQCBFT0YKKyAJCSMgdGhlIGxpYnJhcnk6CisgCQlmdW5jX2Jhc2VuYW1lICIkbGliIgorIAkJbmFtZT0iJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLQkJbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRsaWJgCisrCQlmdW5jX3Jlc29sdmVfc3lzcm9vdCAiJGxpYiIKKysJCWV2YWwgbGliZGlyPWAke1NFRH0gLW4gLWUgJ3MvXmxpYmRpcj1cKC4qXCkkL1wxL3AnICRmdW5jX3Jlc29sdmVfc3lzcm9vdF9yZXN1bHRgCisgCQl0ZXN0IC16ICIkbGliZGlyIiAmJiBcCisgCQkgIGZ1bmNfZmF0YWxfZXJyb3IgIlxgJGxpYicgaXMgbm90IGEgdmFsaWQgbGlidG9vbCBhcmNoaXZlIgorLQkJbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGxpYmRpci8kbmFtZSIKKysJCWZ1bmNfYXBwZW5kIG5ld2RscHJlZmlsZXMgIiAke2x0X3N5c3Jvb3Q6Kz19JGxpYmRpci8kbmFtZSIKKyAJCTs7CisgCSAgICAgIGVzYWMKKyAJICAgIGRvbmUKK0BAIC04MzE4LDcgKzkzMzIsNyBAQCBFT0YKKyAJCVtcXC9dKiB8IFtBLVphLXpdOltcXC9dKikgYWJzPSIkbGliIiA7OworIAkJKikgYWJzPWBwd2RgIi8kbGliIiA7OworIAkgICAgICBlc2FjCistCSAgICAgIG5ld2RsZmlsZXM9IiRuZXdkbGZpbGVzICRhYnMiCisrCSAgICAgIGZ1bmNfYXBwZW5kIG5ld2RsZmlsZXMgIiAkYWJzIgorIAkgICAgZG9uZQorIAkgICAgZGxmaWxlcz0iJG5ld2RsZmlsZXMiCisgCSAgICBuZXdkbHByZWZpbGVzPQorQEAgLTgzMjcsNyArOTM0MSw3IEBAIEVPRgorIAkJW1xcL10qIHwgW0EtWmEtel06W1xcL10qKSBhYnM9IiRsaWIiIDs7CisgCQkqKSBhYnM9YHB3ZGAiLyRsaWIiIDs7CisgCSAgICAgIGVzYWMKKy0JICAgICAgbmV3ZGxwcmVmaWxlcz0iJG5ld2RscHJlZmlsZXMgJGFicyIKKysJICAgICAgZnVuY19hcHBlbmQgbmV3ZGxwcmVmaWxlcyAiICRhYnMiCisgCSAgICBkb25lCisgCSAgICBkbHByZWZpbGVzPSIkbmV3ZGxwcmVmaWxlcyIKKyAJICBmaQorQEAgLTg0MTIsNyArOTQyNiw3IEBAIHJlbGlua19jb21tYW5kPVwiJHJlbGlua19jb21tYW5kXCIiCisgICAgIGV4aXQgJEVYSVRfU1VDQ0VTUworIH0KKyAKKy17IHRlc3QgIiRtb2RlIiA9IGxpbmsgfHwgdGVzdCAiJG1vZGUiID0gcmVsaW5rOyB9ICYmCisreyB0ZXN0ICIkb3B0X21vZGUiID0gbGluayB8fCB0ZXN0ICIkb3B0X21vZGUiID0gcmVsaW5rOyB9ICYmCisgICAgIGZ1bmNfbW9kZV9saW5rICR7MSsiJEAifQorIAorIAorQEAgLTg0MzIsOSArOTQ0Niw5IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAgICAgZm9yIGFyZworICAgICBkbworICAgICAgIGNhc2UgJGFyZyBpbgorLSAgICAgIC1mKSBSTT0iJFJNICRhcmciOyBybWZvcmNlPXllcyA7OworLSAgICAgIC0qKSBSTT0iJFJNICRhcmciIDs7CistICAgICAgKikgZmlsZXM9IiRmaWxlcyAkYXJnIiA7OworKyAgICAgIC1mKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciOyBybWZvcmNlPXllcyA7OworKyAgICAgIC0qKSBmdW5jX2FwcGVuZCBSTSAiICRhcmciIDs7CisrICAgICAgKikgZnVuY19hcHBlbmQgZmlsZXMgIiAkYXJnIiA7OworICAgICAgIGVzYWMKKyAgICAgZG9uZQorIAorQEAgLTg0NDMsMjQgKzk0NTcsMjMgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQorIAorICAgICBybWRpcnM9CisgCistICAgIG9yaWdvYmpkaXI9IiRvYmpkaXIiCisgICAgIGZvciBmaWxlIGluICRmaWxlczsgZG8KKyAgICAgICBmdW5jX2Rpcm5hbWUgIiRmaWxlIiAiIiAiLiIKKyAgICAgICBkaXI9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorICAgICAgIGlmIHRlc3QgIlgkZGlyIiA9IFguOyB0aGVuCistCW9iamRpcj0iJG9yaWdvYmpkaXIiCisrCW9kaXI9IiRvYmpkaXIiCisgICAgICAgZWxzZQorLQlvYmpkaXI9IiRkaXIvJG9yaWdvYmpkaXIiCisrCW9kaXI9IiRkaXIvJG9iamRpciIKKyAgICAgICBmaQorICAgICAgIGZ1bmNfYmFzZW5hbWUgIiRmaWxlIgorICAgICAgIG5hbWU9IiRmdW5jX2Jhc2VuYW1lX3Jlc3VsdCIKKy0gICAgICB0ZXN0ICIkbW9kZSIgPSB1bmluc3RhbGwgJiYgb2JqZGlyPSIkZGlyIgorKyAgICAgIHRlc3QgIiRvcHRfbW9kZSIgPSB1bmluc3RhbGwgJiYgb2Rpcj0iJGRpciIKKyAKKy0gICAgICAjIFJlbWVtYmVyIG9iamRpciBmb3IgcmVtb3ZhbCBsYXRlciwgYmVpbmcgY2FyZWZ1bCB0byBhdm9pZCBkdXBsaWNhdGVzCistICAgICAgaWYgdGVzdCAiJG1vZGUiID0gY2xlYW47IHRoZW4KKysgICAgICAjIFJlbWVtYmVyIG9kaXIgZm9yIHJlbW92YWwgbGF0ZXIsIGJlaW5nIGNhcmVmdWwgdG8gYXZvaWQgZHVwbGljYXRlcworKyAgICAgIGlmIHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbjsgdGhlbgorIAljYXNlICIgJHJtZGlycyAiIGluCistCSAgKiIgJG9iamRpciAiKikgOzsKKy0JICAqKSBybWRpcnM9IiRybWRpcnMgJG9iamRpciIgOzsKKysJICAqIiAkb2RpciAiKikgOzsKKysJICAqKSBmdW5jX2FwcGVuZCBybWRpcnMgIiAkb2RpciIgOzsKKyAJZXNhYworICAgICAgIGZpCisgCitAQCAtODQ4NiwxOCArOTQ5OSwxNyBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgCisgCSAgIyBEZWxldGUgdGhlIGxpYnRvb2wgbGlicmFyaWVzIGFuZCBzeW1saW5rcy4KKyAJICBmb3IgbiBpbiAkbGlicmFyeV9uYW1lczsgZG8KKy0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJG4iCisrCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG4iCisgCSAgZG9uZQorLQkgIHRlc3QgLW4gIiRvbGRfbGlicmFyeSIgJiYgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kb2xkX2xpYnJhcnkiCisrCSAgdGVzdCAtbiAiJG9sZF9saWJyYXJ5IiAmJiBmdW5jX2FwcGVuZCBybWZpbGVzICIgJG9kaXIvJG9sZF9saWJyYXJ5IgorIAorLQkgIGNhc2UgIiRtb2RlIiBpbgorKwkgIGNhc2UgIiRvcHRfbW9kZSIgaW4KKyAJICBjbGVhbikKKy0JICAgIGNhc2UgIiAgJGxpYnJhcnlfbmFtZXMgIiBpbgorLQkgICAgIyAiICAiIGluIHRoZSBiZWdpbm5pbmcgY2F0Y2hlcyBlbXB0eSAkZGxuYW1lCisrCSAgICBjYXNlICIgJGxpYnJhcnlfbmFtZXMgIiBpbgorIAkgICAgKiIgJGRsbmFtZSAiKikgOzsKKy0JICAgICopIHJtZmlsZXM9IiRybWZpbGVzICRvYmpkaXIvJGRsbmFtZSIgOzsKKysJICAgICopIHRlc3QgLW4gIiRkbG5hbWUiICYmIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkb2Rpci8kZGxuYW1lIiA7OworIAkgICAgZXNhYworLQkgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci8kbmFtZSAkb2JqZGlyLyR7bmFtZX1pIgorKwkgICAgdGVzdCAtbiAiJGxpYmRpciIgJiYgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuYW1lICRvZGlyLyR7bmFtZX1pIgorIAkgICAgOzsKKyAJICB1bmluc3RhbGwpCisgCSAgICBpZiB0ZXN0IC1uICIkbGlicmFyeV9uYW1lcyI7IHRoZW4KK0BAIC04NTI1LDE5ICs5NTM3LDE5IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAJICAjIEFkZCBQSUMgb2JqZWN0IHRvIHRoZSBsaXN0IG9mIGZpbGVzIHRvIHJlbW92ZS4KKyAJICBpZiB0ZXN0IC1uICIkcGljX29iamVjdCIgJiYKKyAJICAgICB0ZXN0ICIkcGljX29iamVjdCIgIT0gbm9uZTsgdGhlbgorLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGRpci8kcGljX29iamVjdCIKKysJICAgIGZ1bmNfYXBwZW5kIHJtZmlsZXMgIiAkZGlyLyRwaWNfb2JqZWN0IgorIAkgIGZpCisgCisgCSAgIyBBZGQgbm9uLVBJQyBvYmplY3QgdG8gdGhlIGxpc3Qgb2YgZmlsZXMgdG8gcmVtb3ZlLgorIAkgIGlmIHRlc3QgLW4gIiRub25fcGljX29iamVjdCIgJiYKKyAJICAgICB0ZXN0ICIkbm9uX3BpY19vYmplY3QiICE9IG5vbmU7IHRoZW4KKy0JICAgIHJtZmlsZXM9IiRybWZpbGVzICRkaXIvJG5vbl9waWNfb2JqZWN0IgorKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRkaXIvJG5vbl9waWNfb2JqZWN0IgorIAkgIGZpCisgCWZpCisgCTs7CisgCisgICAgICAgKikKKy0JaWYgdGVzdCAiJG1vZGUiID0gY2xlYW4gOyB0aGVuCisrCWlmIHRlc3QgIiRvcHRfbW9kZSIgPSBjbGVhbiA7IHRoZW4KKyAJICBub2V4ZW5hbWU9JG5hbWUKKyAJICBjYXNlICRmaWxlIGluCisgCSAgKi5leGUpCitAQCAtODU0Nyw3ICs5NTU5LDcgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQorIAkgICAgbm9leGVuYW1lPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAJICAgICMgJGZpbGUgd2l0aCAuZXhlIGhhcyBhbHJlYWR5IGJlZW4gYWRkZWQgdG8gcm1maWxlcywKKyAJICAgICMgYWRkICRmaWxlIHdpdGhvdXQgLmV4ZQorLQkgICAgcm1maWxlcz0iJHJtZmlsZXMgJGZpbGUiCisrCSAgICBmdW5jX2FwcGVuZCBybWZpbGVzICIgJGZpbGUiCisgCSAgICA7OworIAkgIGVzYWMKKyAJICAjIERvIGEgdGVzdCB0byBzZWUgaWYgdGhpcyBpcyBhIGxpYnRvb2wgcHJvZ3JhbS4KK0BAIC04NTU2LDcgKzk1NjgsNyBAQCBmdW5jX21vZGVfdW5pbnN0YWxsICgpCisgCSAgICAgIGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWUgIiRmaWxlIgorIAkgICAgICByZWxpbmtfY29tbWFuZD0KKyAJICAgICAgZnVuY19zb3VyY2UgJGZ1bmNfbHR3cmFwcGVyX3NjcmlwdG5hbWVfcmVzdWx0CistCSAgICAgIHJtZmlsZXM9IiRybWZpbGVzICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdCIKKysJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRmdW5jX2x0d3JhcHBlcl9zY3JpcHRuYW1lX3Jlc3VsdCIKKyAJICAgIGVsc2UKKyAJICAgICAgcmVsaW5rX2NvbW1hbmQ9CisgCSAgICAgIGZ1bmNfc291cmNlICRkaXIvJG5vZXhlbmFtZQorQEAgLTg1NjQsMTIgKzk1NzYsMTIgQEAgZnVuY19tb2RlX3VuaW5zdGFsbCAoKQorIAorIAkgICAgIyBub3RlICRuYW1lIHN0aWxsIGNvbnRhaW5zIC5leGUgaWYgaXQgd2FzIGluICRmaWxlIG9yaWdpbmFsbHkKKyAJICAgICMgYXMgZG9lcyB0aGUgdmVyc2lvbiBvZiAkZmlsZSB0aGF0IHdhcyBhZGRlZCBpbnRvICRybWZpbGVzCistCSAgICBybWZpbGVzPSIkcm1maWxlcyAkb2JqZGlyLyRuYW1lICRvYmpkaXIvJHtuYW1lfVMuJHtvYmpleHR9IgorKwkgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyLyRuYW1lICRvZGlyLyR7bmFtZX1TLiR7b2JqZXh0fSIKKyAJICAgIGlmIHRlc3QgIiRmYXN0X2luc3RhbGwiID0geWVzICYmIHRlc3QgLW4gIiRyZWxpbmtfY29tbWFuZCI7IHRoZW4KKy0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci9sdC0kbmFtZSIKKysJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyL2x0LSRuYW1lIgorIAkgICAgZmkKKyAJICAgIGlmIHRlc3QgIlgkbm9leGVuYW1lIiAhPSAiWCRuYW1lIiA7IHRoZW4KKy0JICAgICAgcm1maWxlcz0iJHJtZmlsZXMgJG9iamRpci9sdC0ke25vZXhlbmFtZX0uYyIKKysJICAgICAgZnVuY19hcHBlbmQgcm1maWxlcyAiICRvZGlyL2x0LSR7bm9leGVuYW1lfS5jIgorIAkgICAgZmkKKyAJICBmaQorIAlmaQorQEAgLTg1NzcsNyArOTU4OSw2IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAgICAgICBlc2FjCisgICAgICAgZnVuY19zaG93X2V2YWwgIiRSTSAkcm1maWxlcyIgJ2V4aXRfc3RhdHVzPTEnCisgICAgIGRvbmUKKy0gICAgb2JqZGlyPSIkb3JpZ29iamRpciIKKyAKKyAgICAgIyBUcnkgdG8gcmVtb3ZlIHRoZSAke29iamRpcn1zIGluIHRoZSBkaXJlY3RvcmllcyB3aGVyZSB3ZSBkZWxldGVkIGZpbGVzCisgICAgIGZvciBkaXIgaW4gJHJtZGlyczsgZG8KK0BAIC04NTg5LDE2ICs5NjAwLDE2IEBAIGZ1bmNfbW9kZV91bmluc3RhbGwgKCkKKyAgICAgZXhpdCAkZXhpdF9zdGF0dXMKKyB9CisgCisteyB0ZXN0ICIkbW9kZSIgPSB1bmluc3RhbGwgfHwgdGVzdCAiJG1vZGUiID0gY2xlYW47IH0gJiYKKyt7IHRlc3QgIiRvcHRfbW9kZSIgPSB1bmluc3RhbGwgfHwgdGVzdCAiJG9wdF9tb2RlIiA9IGNsZWFuOyB9ICYmCisgICAgIGZ1bmNfbW9kZV91bmluc3RhbGwgJHsxKyIkQCJ9CisgCistdGVzdCAteiAiJG1vZGUiICYmIHsKKyt0ZXN0IC16ICIkb3B0X21vZGUiICYmIHsKKyAgIGhlbHA9IiRnZW5lcmljX2hlbHAiCisgICBmdW5jX2ZhdGFsX2hlbHAgInlvdSBtdXN0IHNwZWNpZnkgYSBNT0RFIgorIH0KKyAKKyB0ZXN0IC16ICIkZXhlY19jbWQiICYmIFwKKy0gIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRtb2RlJyIKKysgIGZ1bmNfZmF0YWxfaGVscCAiaW52YWxpZCBvcGVyYXRpb24gbW9kZSBcYCRvcHRfbW9kZSciCisgCisgaWYgdGVzdCAtbiAiJGV4ZWNfY21kIjsgdGhlbgorICAgZXZhbCBleGVjICIkZXhlY19jbWQiCitkaWZmIC0tZ2l0IGEvbHRvcHRpb25zLm00IGIvbHRvcHRpb25zLm00CitpbmRleCA1ZWYxMmNlZDJhOC4uMTdjZmQ1MWMwYjMgMTAwNjQ0CistLS0gYS9sdG9wdGlvbnMubTQKKysrKyBiL2x0b3B0aW9ucy5tNAorQEAgLTgsNyArOCw3IEBACisgIyB1bmxpbWl0ZWQgcGVybWlzc2lvbiB0byBjb3B5IGFuZC9vciBkaXN0cmlidXRlIGl0LCB3aXRoIG9yIHdpdGhvdXQKKyAjIG1vZGlmaWNhdGlvbnMsIGFzIGxvbmcgYXMgdGhpcyBub3RpY2UgaXMgcHJlc2VydmVkLgorIAorLSMgc2VyaWFsIDYgbHRvcHRpb25zLm00CisrIyBzZXJpYWwgNyBsdG9wdGlvbnMubTQKKyAKKyAjIFRoaXMgaXMgdG8gaGVscCBhY2xvY2FsIGZpbmQgdGhlc2UgbWFjcm9zLCBhcyBpdCBjYW4ndCBzZWUgbTRfZGVmaW5lLgorIEFDX0RFRlVOKFtMVE9QVElPTlNfVkVSU0lPTl0sIFttNF9pZihbMV0pXSkKK2RpZmYgLS1naXQgYS9sdHZlcnNpb24ubTQgYi9sdHZlcnNpb24ubTQKK2luZGV4IGJmODdmNzcxMzJkLi45YzdiNWQ0MTE4NSAxMDA2NDQKKy0tLSBhL2x0dmVyc2lvbi5tNAorKysrIGIvbHR2ZXJzaW9uLm00CitAQCAtNywxNyArNywxNyBAQAorICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CisgIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKyAKKy0jIEdlbmVyYXRlZCBmcm9tIGx0dmVyc2lvbi5pbi4KKysjIEBjb25maWd1cmVfaW5wdXRACisgCistIyBzZXJpYWwgMzEzNCBsdHZlcnNpb24ubTQKKysjIHNlcmlhbCAzMjkzIGx0dmVyc2lvbi5tNAorICMgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wKKyAKKy1tNF9kZWZpbmUoW0xUX1BBQ0tBR0VfVkVSU0lPTl0sIFsyLjIuN2FdKQorLW00X2RlZmluZShbTFRfUEFDS0FHRV9SRVZJU0lPTl0sIFsxLjMxMzRdKQorK200X2RlZmluZShbTFRfUEFDS0FHRV9WRVJTSU9OXSwgWzIuNF0pCisrbTRfZGVmaW5lKFtMVF9QQUNLQUdFX1JFVklTSU9OXSwgWzEuMzI5M10pCisgCisgQUNfREVGVU4oW0xUVkVSU0lPTl9WRVJTSU9OXSwKKy1bbWFjcm9fdmVyc2lvbj0nMi4yLjdhJworLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCisrW21hY3JvX3ZlcnNpb249JzIuNCcKKyttYWNyb19yZXZpc2lvbj0nMS4zMjkzJworIF9MVF9ERUNMKCwgbWFjcm9fdmVyc2lvbiwgMCwgW1doaWNoIHJlbGVhc2Ugb2YgbGlidG9vbC5tNCB3YXMgdXNlZD9dKQorIF9MVF9ERUNMKCwgbWFjcm9fcmV2aXNpb24sIDApCisgXSkKK2RpZmYgLS1naXQgYS9sdH5vYnNvbGV0ZS5tNCBiL2x0fm9ic29sZXRlLm00CitpbmRleCBiZjkyYjVlMDc5MC4uYzU3M2RhOTBjNWMgMTAwNjQ0CistLS0gYS9sdH5vYnNvbGV0ZS5tNAorKysrIGIvbHR+b2Jzb2xldGUubTQKK0BAIC03LDcgKzcsNyBAQAorICMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwgd2l0aCBvciB3aXRob3V0CisgIyBtb2RpZmljYXRpb25zLCBhcyBsb25nIGFzIHRoaXMgbm90aWNlIGlzIHByZXNlcnZlZC4KKyAKKy0jIHNlcmlhbCA0IGx0fm9ic29sZXRlLm00CisrIyBzZXJpYWwgNSBsdH5vYnNvbGV0ZS5tNAorIAorICMgVGhlc2UgZXhpc3QgZW50aXJlbHkgdG8gZm9vbCBhY2xvY2FsIHdoZW4gYm9vdHN0cmFwcGluZyBsaWJ0b29sLgorICMKK2RpZmYgLS1naXQgYS9vcGNvZGVzL2NvbmZpZ3VyZSBiL29wY29kZXMvY29uZmlndXJlCitpbmRleCA0NzIzZGNkYzFlOC4uMDA2Y2NkYWE0NTggMTAwNzU1CistLS0gYS9vcGNvZGVzL2NvbmZpZ3VyZQorKysrIGIvb3Bjb2Rlcy9jb25maWd1cmUKK0BAIC02ODAsNiArNjgwLDkgQEAgT1RPT0wKKyBMSVBPCisgTk1FRElUCisgRFNZTVVUSUwKKytNQU5JRkVTVF9UT09MCisrYWNfY3RfQVIKKytETExUT09MCisgT0JKRFVNUAorIExOX1MKKyBOTQorQEAgLTc5OCw2ICs4MDEsNyBAQCBlbmFibGVfc3RhdGljCisgd2l0aF9waWMKKyBlbmFibGVfZmFzdF9pbnN0YWxsCisgd2l0aF9nbnVfbGQKKyt3aXRoX2xpYnRvb2xfc3lzcm9vdAorIGVuYWJsZV9saWJ0b29sX2xvY2sKKyBlbmFibGVfdGFyZ2V0cworIGVuYWJsZV93ZXJyb3IKK0BAIC0xNDYyLDYgKzE0NjYsOCBAQCBPcHRpb25hbCBQYWNrYWdlczoKKyAgIC0td2l0aC1waWMgICAgICAgICAgICAgIHRyeSB0byB1c2Ugb25seSBQSUMvbm9uLVBJQyBvYmplY3RzIFtkZWZhdWx0PXVzZQorICAgICAgICAgICAgICAgICAgICAgICAgICAgYm90aF0KKyAgIC0td2l0aC1nbnUtbGQgICAgICAgICAgIGFzc3VtZSB0aGUgQyBjb21waWxlciB1c2VzIEdOVSBsZCBbZGVmYXVsdD1ub10KKysgIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9RElSIFNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyB3aXRoaW4gRElSCisrICAgICAgICAgICAgICAgICAgICAgICAgKG9yIHRoZSBjb21waWxlcidzIHN5c3Jvb3QgaWYgbm90IHNwZWNpZmllZCkuCisgCisgU29tZSBpbmZsdWVudGlhbCBlbnZpcm9ubWVudCB2YXJpYWJsZXM6CisgICBDQyAgICAgICAgICBDIGNvbXBpbGVyIGNvbW1hbmQKK0BAIC01NDAzLDggKzU0MDksOCBAQCBlc2FjCisgCisgCisgCistbWFjcm9fdmVyc2lvbj0nMi4yLjdhJworLW1hY3JvX3JldmlzaW9uPScxLjMxMzQnCisrbWFjcm9fdmVyc2lvbj0nMi40JworK21hY3JvX3JldmlzaW9uPScxLjMyOTMnCisgCisgCisgCitAQCAtNTQ0NCw3ICs1NDUwLDcgQEAgRUNITz0kRUNITyRFQ0hPJEVDSE8kRUNITyRFQ0hPJEVDSE8KKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBwcmludCBzdHJpbmdzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBob3cgdG8gcHJpbnQgc3RyaW5ncy4uLiAiID4mNjsgfQorICMgVGVzdCBwcmludCBmaXJzdCwgYmVjYXVzZSBpdCB3aWxsIGJlIGEgYnVpbHRpbiBpZiBwcmVzZW50LgorLWlmIHRlc3QgIlhgcHJpbnQgLXIgLS0gLW4gMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisraWYgdGVzdCAiWGAoIHByaW50IC1yIC0tIC1uICkgMj4vZGV2L251bGxgIiA9IFgtbiAmJiBcCisgICAgdGVzdCAiWGBwcmludCAtciAtLSAkRUNITyAyPi9kZXYvbnVsbGAiID0gIlgkRUNITyI7IHRoZW4KKyAgIEVDSE89J3ByaW50IC1yIC0tJworIGVsaWYgdGVzdCAiWGBwcmludGYgJXMgJEVDSE8gMj4vZGV2L251bGxgIiA9ICJYJEVDSE8iOyB0aGVuCitAQCAtNjEzMCw4ICs2MTM2LDggQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgd2hldGhlciB0aGUgc2hlbGwgdW5kZXJzdGFuZHMgc29tZSBYU0kgY29uc3RydWN0cy4uLiAiID4mNjsKKyAjIFRyeSBzb21lIFhTSSBmZWF0dXJlcworIHhzaV9zaGVsbD1ubworICggX2x0X2R1bW15PSJhL2IvYyIKKy0gIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCistICAgICAgPSBjLGEvYiwsIFwKKysgIHRlc3QgIiR7X2x0X2R1bW15IyMqL30sJHtfbHRfZHVtbXklLyp9LCR7X2x0X2R1bW15Iz8/fSIke19sdF9kdW1teSUiJF9sdF9kdW1teSJ9LCBcCisrICAgICAgPSBjLGEvYixiL2MsIFwKKyAgICAgJiYgZXZhbCAndGVzdCAkKCggMSArIDEgKSkgLWVxIDIgXAorICAgICAmJiB0ZXN0ICIkeyNfbHRfZHVtbXl9IiAtZXEgNScgKSA+L2Rldi9udWxsIDI+JjEgXAorICAgJiYgeHNpX3NoZWxsPXllcworQEAgLTYxODAsNiArNjE4Niw4MCBAQCBlc2FjCisgCisgCisgCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBob3cgdG8gY29udmVydCAkYnVpbGQgZmlsZSBuYW1lcyB0byAkaG9zdCBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvICRob3N0IGZvcm1hdC4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfdG9faG9zdF9maWxlX2NtZCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIGNhc2UgJGhvc3QgaW4KKysgICotKi1taW5ndyogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b193MzIKKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9jeWd3aW5fdG9fdzMyCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKi0qLWN5Z3dpbiogKQorKyAgICBjYXNlICRidWlsZCBpbgorKyAgICAgICotKi1taW5ndyogKSAjIGFjdHVhbGx5IG1zeXMKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbXN5c190b19jeWd3aW4KKysgICAgICAgIDs7CisrICAgICAgKi0qLWN5Z3dpbiogKQorKyAgICAgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgICAgICA7OworKyAgICAgICogKSAjIG90aGVyd2lzZSwgYXNzdW1lICpuaXgKKysgICAgICAgIGx0X2N2X3RvX2hvc3RfZmlsZV9jbWQ9ZnVuY19jb252ZXJ0X2ZpbGVfbml4X3RvX2N5Z3dpbgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworKyAgKiApICMgdW5oYW5kbGVkIGhvc3RzIChhbmQgIm5vcm1hbCIgbmF0aXZlIGJ1aWxkcykKKysgICAgbHRfY3ZfdG9faG9zdF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrICAgIDs7CisrZXNhYworKworK2ZpCisrCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfdG9faG9zdF9maWxlX2NtZCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiA+JjY7IH0KKysKKysKKysKKysKKysKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGhvdyB0byBjb252ZXJ0ICRidWlsZCBmaWxlIG5hbWVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuLi4gIiA+JjY7IH0KKytpZiAke2x0X2N2X3RvX3Rvb2xfZmlsZV9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICAjYXNzdW1lIG9yZGluYXJ5IGNyb3NzIHRvb2xzLCBvciBuYXRpdmUgYnVpbGQuCisrbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9ub29wCisrY2FzZSAkaG9zdCBpbgorKyAgKi0qLW1pbmd3KiApCisrICAgIGNhc2UgJGJ1aWxkIGluCisrICAgICAgKi0qLW1pbmd3KiApICMgYWN0dWFsbHkgbXN5cworKyAgICAgICAgbHRfY3ZfdG9fdG9vbF9maWxlX2NtZD1mdW5jX2NvbnZlcnRfZmlsZV9tc3lzX3RvX3czMgorKyAgICAgICAgOzsKKysgICAgZXNhYworKyAgICA7OworK2VzYWMKKysKKytmaQorKworK3RvX3Rvb2xfZmlsZV9jbWQ9JGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X3RvX3Rvb2xfZmlsZV9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfdG9fdG9vbF9maWxlX2NtZCIgPiY2OyB9CisrCisrCisrCisrCisrCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzIiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBmb3IgJExEIG9wdGlvbiB0byByZWxvYWQgb2JqZWN0IGZpbGVzLi4uICIgPiY2OyB9CisgaWYgJHtsdF9jdl9sZF9yZWxvYWRfZmxhZys6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjE5Niw2ICs2Mjc2LDExIEBAIGNhc2UgJHJlbG9hZF9mbGFnIGluCisgZXNhYworIHJlbG9hZF9jbWRzPSckTEQkcmVsb2FkX2ZsYWcgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKKyBjYXNlICRob3N0X29zIGluCisrICBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisrICAgIGlmIHRlc3QgIiRHQ0MiICE9IHllczsgdGhlbgorKyAgICAgIHJlbG9hZF9jbWRzPWZhbHNlCisrICAgIGZpCisrICAgIDs7CisgICBkYXJ3aW4qKQorICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorICAgICAgIHJlbG9hZF9jbWRzPSckTFRDQyAkTFRDRkxBR1MgLW5vc3RkbGliICR7d2x9LXIgLW8gJG91dHB1dCRyZWxvYWRfb2JqcycKK0BAIC02MzY0LDcgKzY0NDksOCBAQCBtaW5ndyogfCBwdzMyKikKKyAgICAgbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2Q9J2ZpbGVfbWFnaWMgXng4NiBhcmNoaXZlIGltcG9ydHxeeDg2IERMTCcKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9J2Z1bmNfd2luMzJfbGliaWQnCisgICBlbHNlCistICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IHBlaSotaTM4NiguKmFyY2hpdGVjdHVyZTogaTM4Nik/JworKyAgICAjIEtlZXAgdGhpcyBwYXR0ZXJuIGluIHN5bmMgd2l0aCB0aGUgb25lIGluIGZ1bmNfd2luMzJfbGliaWQuCisrICAgIGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kPSdmaWxlX21hZ2ljIGZpbGUgZm9ybWF0IChwZWkqLWkzODYoLiphcmNoaXRlY3R1cmU6IGkzODYpP3xwZS1hcm0td2luY2V8cGUteDg2LTY0KScKKyAgICAgbHRfY3ZfZmlsZV9tYWdpY19jbWQ9JyRPQkpEVU1QIC1mJworICAgZmkKKyAgIDs7CitAQCAtNjUxOCw2ICs2NjA0LDIxIEBAIGVzYWMKKyBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNQorICRhc19lY2hvICIkbHRfY3ZfZGVwbGlic19jaGVja19tZXRob2QiID4mNjsgfQorKworK2ZpbGVfbWFnaWNfZ2xvYj0KKyt3YW50X25vY2FzZWdsb2I9bm8KKytpZiB0ZXN0ICIkYnVpbGQiID0gIiRob3N0IjsgdGhlbgorKyAgY2FzZSAkaG9zdF9vcyBpbgorKyAgbWluZ3cqIHwgcHczMiopCisrICAgIGlmICggc2hvcHQgfCBncmVwIG5vY2FzZWdsb2IgKSA+L2Rldi9udWxsIDI+JjE7IHRoZW4KKysgICAgICB3YW50X25vY2FzZWdsb2I9eWVzCisrICAgIGVsc2UKKysgICAgICBmaWxlX21hZ2ljX2dsb2I9YGVjaG8gYUFiQmNDZERlRWZGZ0doSGlJakprS2xMbU1uTm9PcFBxUXJSc1N0VHVVdlZ3V3hYeVl6WiB8ICRTRUQgLWUgInMvXCguLlwpL3NcL1tcMV1cL1tcMV1cL2c7L2ciYAorKyAgICBmaQorKyAgICA7OworKyAgZXNhYworK2ZpCisrCisgZmlsZV9tYWdpY19jbWQ9JGx0X2N2X2ZpbGVfbWFnaWNfY21kCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2N2X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCitAQCAtNjUzMSwxMSArNjYzMiwxNjQgQEAgdGVzdCAteiAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiAmJiBkZXBsaWJzX2NoZWNrX21ldGhvZD11bmtub3duCisgCisgCisgCisrCisrCisrCisrCisrCisrCisrCisrCisrCisrCisgCisgCisgaWYgdGVzdCAtbiAiJGFjX3Rvb2xfcHJlZml4IjsgdGhlbgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWFyIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKy1zZXQgZHVtbXkgJHthY190b29sX3ByZWZpeH1hcjsgYWNfd29yZD0kMgorKyAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiLCBzbyBpdCBjYW4gYmUgYSBwcm9ncmFtIG5hbWUgd2l0aCBhcmdzLgorK3NldCBkdW1teSAke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfRExMVE9PTD0iJERMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19ETExUT09MPSIke2FjX3Rvb2xfcHJlZml4fWRsbHRvb2wiCisrICAgICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGZvdW5kICRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiID4mNQorKyAgICBicmVhayAyCisrICBmaQorK2RvbmUKKysgIGRvbmUKKytJRlM9JGFzX3NhdmVfSUZTCisrCisrZmkKKytmaQorK0RMTFRPT0w9JGFjX2N2X3Byb2dfRExMVE9PTAorK2lmIHRlc3QgLW4gIiRETExUT09MIjsgdGhlbgorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRETExUT09MIiA+JjUKKyskYXNfZWNobyAiJERMTFRPT0wiID4mNjsgfQorK2Vsc2UKKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiBubyIgPiY1CisrJGFzX2VjaG8gIm5vIiA+JjY7IH0KKytmaQorKworKworK2ZpCisraWYgdGVzdCAteiAiJGFjX2N2X3Byb2dfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N0X0RMTFRPT0w9JERMTFRPT0wKKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiZGxsdG9vbCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15IGRsbHRvb2w7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfRExMVE9PTD0iJGFjX2N0X0RMTFRPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9ETExUT09MPSJkbGx0b29sIgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKythY19jdF9ETExUT09MPSRhY19jdl9wcm9nX2FjX2N0X0RMTFRPT0wKKytpZiB0ZXN0IC1uICIkYWNfY3RfRExMVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkYWNfY3RfRExMVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRhY19jdF9ETExUT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysgIGlmIHRlc3QgIngkYWNfY3RfRExMVE9PTCIgPSB4OyB0aGVuCisrICAgIERMTFRPT0w9ImZhbHNlIgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgRExMVE9PTD0kYWNfY3RfRExMVE9PTAorKyAgZmkKKytlbHNlCisrICBETExUT09MPSIkYWNfY3ZfcHJvZ19ETExUT09MIgorK2ZpCisrCisrdGVzdCAteiAiJERMTFRPT0wiICYmIERMTFRPT0w9ZGxsdG9vbAorKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcyIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaG93IHRvIGFzc29jaWF0ZSBydW50aW1lIGFuZCBsaW5rIGxpYnJhcmllcy4uLiAiID4mNjsgfQorK2lmICR7bHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0ndW5rbm93bicKKysKKytjYXNlICRob3N0X29zIGluCisrY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorKyAgIyB0d28gZGlmZmVyZW50IHNoZWxsIGZ1bmN0aW9ucyBkZWZpbmVkIGluIGx0bWFpbi5zaAorKyAgIyBkZWNpZGUgd2hpY2ggdG8gdXNlIGJhc2VkIG9uIGNhcGFiaWxpdGllcyBvZiAkRExMVE9PTAorKyAgY2FzZSBgJERMTFRPT0wgLS1oZWxwIDI+JjFgIGluCisrICAqLS1pZGVudGlmeS1zdHJpY3QqKQorKyAgICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD1mdW5jX2N5Z21pbmdfZGxsX2Zvcl9pbXBsaWIKKysgICAgOzsKKysgICopCisrICAgIGx0X2N2X3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPWZ1bmNfY3lnbWluZ19kbGxfZm9yX2ltcGxpYl9mYWxsYmFjaworKyAgICA7OworKyAgZXNhYworKyAgOzsKKysqKQorKyAgIyBmYWxsYmFjazogYXNzdW1lIGxpbmtsaWIgSVMgc2hhcmVkbGliCisrICBsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZD0iJEVDSE8iCisrICA7OworK2VzYWMKKysKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNQorKyRhc19lY2hvICIkbHRfY3Zfc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQiID4mNjsgfQorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9jdl9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorK3Rlc3QgLXogIiRzaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZCIgJiYgc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9JEVDSE8KKysKKysKKysKKysKKysKKysKKysKKytpZiB0ZXN0IC1uICIkYWNfdG9vbF9wcmVmaXgiOyB0aGVuCisrICBmb3IgYWNfcHJvZyBpbiBhcgorKyAgZG8KKysgICAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICRhY190b29sX3ByZWZpeCRhY19wcm9nOyBhY193b3JkPSQyCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGFjX3dvcmQiID4mNQorICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkYWNfd29yZC4uLiAiID4mNjsgfQorIGlmICR7YWNfY3ZfcHJvZ19BUis6fSBmYWxzZTsgdGhlbiA6CitAQCAtNjU1MSw3ICs2ODA1LDcgQEAgZG8KKyAgIHRlc3QgLXogIiRhc19kaXIiICYmIGFzX2Rpcj0uCisgICAgIGZvciBhY19leGVjX2V4dCBpbiAnJyAkYWNfZXhlY3V0YWJsZV9leHRlbnNpb25zOyBkbworICAgaWYgYXNfZm5fZXhlY3V0YWJsZV9wICIkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IjsgdGhlbgorLSAgICBhY19jdl9wcm9nX0FSPSIke2FjX3Rvb2xfcHJlZml4fWFyIgorKyAgICBhY19jdl9wcm9nX0FSPSIkYWNfdG9vbF9wcmVmaXgkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjU3MSwxMSArNjgyNSwxNSBAQCAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisgCisrICAgIHRlc3QgLW4gIiRBUiIgJiYgYnJlYWsKKysgIGRvbmUKKyBmaQorLWlmIHRlc3QgLXogIiRhY19jdl9wcm9nX0FSIjsgdGhlbgorK2lmIHRlc3QgLXogIiRBUiI7IHRoZW4KKyAgIGFjX2N0X0FSPSRBUgorLSAgIyBFeHRyYWN0IHRoZSBmaXJzdCB3b3JkIG9mICJhciIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCistc2V0IGR1bW15IGFyOyBhY193b3JkPSQyCisrICBmb3IgYWNfcHJvZyBpbiBhcgorK2RvCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIiRhY19wcm9nIiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgJGFjX3Byb2c7IGFjX3dvcmQ9JDIKKyB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisgaWYgJHthY19jdl9wcm9nX2FjX2N0X0FSKzp9IGZhbHNlOyB0aGVuIDoKK0BAIC02NTkxLDcgKzY4NDksNyBAQCBkbworICAgdGVzdCAteiAiJGFzX2RpciIgJiYgYXNfZGlyPS4KKyAgICAgZm9yIGFjX2V4ZWNfZXh0IGluICcnICRhY19leGVjdXRhYmxlX2V4dGVuc2lvbnM7IGRvCisgICBpZiBhc19mbl9leGVjdXRhYmxlX3AgIiRhc19kaXIvJGFjX3dvcmQkYWNfZXhlY19leHQiOyB0aGVuCistICAgIGFjX2N2X3Byb2dfYWNfY3RfQVI9ImFyIgorKyAgICBhY19jdl9wcm9nX2FjX2N0X0FSPSIkYWNfcHJvZyIKKyAgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisgICAgIGJyZWFrIDIKKyAgIGZpCitAQCAtNjYxMCw2ICs2ODY4LDEwIEBAIGVsc2UKKyAkYXNfZWNobyAibm8iID4mNjsgfQorIGZpCisgCisrCisrICB0ZXN0IC1uICIkYWNfY3RfQVIiICYmIGJyZWFrCisrZG9uZQorKworICAgaWYgdGVzdCAieCRhY19jdF9BUiIgPSB4OyB0aGVuCisgICAgIEFSPSJmYWxzZSIKKyAgIGVsc2UKK0BAIC02NjIxLDE2ICs2ODgzLDcyIEBAIGFjX3Rvb2xfd2FybmVkPXllcyA7OworIGVzYWMKKyAgICAgQVI9JGFjX2N0X0FSCisgICBmaQorLWVsc2UKKy0gIEFSPSIkYWNfY3ZfcHJvZ19BUiIKKyBmaQorIAorLXRlc3QgLXogIiRBUiIgJiYgQVI9YXIKKy10ZXN0IC16ICIkQVJfRkxBR1MiICYmIEFSX0ZMQUdTPWNydQorKzogJHtBUj1hcn0KKys6ICR7QVJfRkxBR1M9Y3J1fQorKworKworKworKworKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIGFyY2hpdmVyIEBGSUxFIHN1cHBvcnQiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBhcmNoaXZlciBARklMRSBzdXBwb3J0Li4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9hcl9hdF9maWxlKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgbHRfY3ZfYXJfYXRfZmlsZT1ubworKyAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysvKiBlbmQgY29uZmRlZnMuaC4gICovCisrCisraW50CisrbWFpbiAoKQorK3sKKyAKKysgIDsKKysgIHJldHVybiAwOworK30KKytfQUNFT0YKKytpZiBhY19mbl9jX3RyeV9jb21waWxlICIkTElORU5PIjsgdGhlbiA6CisrICBlY2hvIGNvbmZ0ZXN0LiRhY19vYmpleHQgPiBjb25mdGVzdC5sc3QKKysgICAgICBsdF9hcl90cnk9JyRBUiAkQVJfRkxBR1MgbGliY29uZnRlc3QuYSBAY29uZnRlc3QubHN0ID4mNScKKysgICAgICB7IHsgZXZhbCBlY2hvICJcIlwkYXNfbWVcIjoke2FzX2xpbmVuby0kTElORU5PfTogXCIkbHRfYXJfdHJ5XCIiOyB9ID4mNQorKyAgKGV2YWwgJGx0X2FyX3RyeSkgMj4mNQorKyAgYWNfc3RhdHVzPSQ/CisrICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcJD8gPSAkYWNfc3RhdHVzIiA+JjUKKysgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0KKysgICAgICBpZiB0ZXN0ICIkYWNfc3RhdHVzIiAtZXEgMDsgdGhlbgorKwkjIEVuc3VyZSB0aGUgYXJjaGl2ZXIgZmFpbHMgdXBvbiBib2d1cyBmaWxlIG5hbWVzLgorKwlybSAtZiBjb25mdGVzdC4kYWNfb2JqZXh0IGxpYmNvbmZ0ZXN0LmEKKysJeyB7IGV2YWwgZWNobyAiXCJcJGFzX21lXCI6JHthc19saW5lbm8tJExJTkVOT306IFwiJGx0X2FyX3RyeVwiIjsgfSA+JjUKKysgIChldmFsICRsdF9hcl90cnkpIDI+JjUKKysgIGFjX3N0YXR1cz0kPworKyAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogXCQ/ID0gJGFjX3N0YXR1cyIgPiY1CisrICB0ZXN0ICRhY19zdGF0dXMgPSAwOyB9CisrCWlmIHRlc3QgIiRhY19zdGF0dXMiIC1uZSAwOyB0aGVuCisrICAgICAgICAgIGx0X2N2X2FyX2F0X2ZpbGU9QAorKyAgICAgICAgZmkKKysgICAgICBmaQorKyAgICAgIHJtIC1mIGNvbmZ0ZXN0LiogbGliY29uZnRlc3QuYQorIAorK2ZpCisrcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdGVzdC4kYWNfZXh0CisgCisrZmkKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X2N2X2FyX2F0X2ZpbGUiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfYXJfYXRfZmlsZSIgPiY2OyB9CisgCisraWYgdGVzdCAieCRsdF9jdl9hcl9hdF9maWxlIiA9IHhubzsgdGhlbgorKyAgYXJjaGl2ZXJfbGlzdF9zcGVjPQorK2Vsc2UKKysgIGFyY2hpdmVyX2xpc3Rfc3BlYz0kbHRfY3ZfYXJfYXRfZmlsZQorK2ZpCisgCisgCisgCitAQCAtNjk3Miw4ICs3MjkwLDggQEAgZXNhYworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsPSJzZWQgLW4gLWUgJ3MvXlQgLiogXCguKlwpJC9leHRlcm4gaW50IFwxKCk7L3AnIC1lICdzL14kc3ltY29kZSogLiogXCguKlwpJC9leHRlcm4gY2hhciBcMTsvcCciCisgCisgIyBUcmFuc2Zvcm0gYW4gZXh0cmFjdGVkIHN5bWJvbCBsaW5lIGludG8gc3ltYm9sIG5hbWUgYW5kIHN5bWJvbCBhZGRyZXNzCistbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXCkgJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKy1sdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzc19saWJfcHJlZml4PSJzZWQgLW4gLWUgJ3MvXjogXChbXiBdKlwpICQvICB7XFxcIlwxXFxcIiwgKHZvaWQgKikgMH0sL3AnIC1lICdzL14kc3ltY29kZSogXChbXiBdKlwpIFwobGliW14gXSpcKSQvICB7XCJcMlwiLCAodm9pZCAqKSBcJlwyfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChbXiBdKlwpJC8gIHtcImxpYlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyIKKytsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0ic2VkIC1uIC1lICdzL146IFwoW14gXSpcKVsgXSokLyAge1xcXCJcMVxcXCIsICh2b2lkICopIDB9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wiXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorK2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9InNlZCAtbiAtZSAncy9eOiBcKFteIF0qXClbIF0qJC8gIHtcXFwiXDFcXFwiLCAodm9pZCAqKSAwfSwvcCcgLWUgJ3MvXiRzeW1jb2RlKiBcKFteIF0qXCkgXChsaWJbXiBdKlwpJC8gIHtcIlwyXCIsICh2b2lkICopIFwmXDJ9LC9wJyAtZSAncy9eJHN5bWNvZGUqIFwoW14gXSpcKSBcKFteIF0qXCkkLyAge1wibGliXDJcIiwgKHZvaWQgKikgXCZcMn0sL3AnIgorIAorICMgSGFuZGxlIENSTEYgaW4gbWluZ3cgdG9vbCBjaGFpbgorIG9wdF9jcj0KK0BAIC03MDA5LDYgKzczMjcsNyBAQCBmb3IgYWNfc3ltcHJmeCBpbiAiIiAiXyI7IGRvCisgICBlbHNlCisgICAgIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9InNlZCAtbiAtZSAncy9eLipbCSBdXCgkc3ltY29kZSRzeW1jb2RlKlwpWwkgXVsJIF0qJGFjX3N5bXByZngkc3ltcGF0JG9wdF9jciQvJHN5bXhmcm0vcCciCisgICBmaQorKyAgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfcGlwZT0iJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgfCBzZWQgJy8gX19nbnVfbHRvL2QnIgorIAorICAgIyBDaGVjayB0byBzZWUgdGhhdCB0aGUgcGlwZSB3b3JrcyBjb3JyZWN0bHkuCisgICBwaXBlX3dvcmtzPW5vCitAQCAtNzA1MCw2ICs3MzY5LDE4IEBAIF9MVF9FT0YKKyAgICAgICBpZiAkR1JFUCAnIG5tX3Rlc3RfdmFyJCcgIiRubGlzdCIgPi9kZXYvbnVsbDsgdGhlbgorIAlpZiAkR1JFUCAnIG5tX3Rlc3RfZnVuYyQnICIkbmxpc3QiID4vZGV2L251bGw7IHRoZW4KKyAJICBjYXQgPDxfTFRfRU9GID4gY29uZnRlc3QuJGFjX2V4dAorKy8qIEtlZXAgdGhpcyBjb2RlIGluIHN5bmMgYmV0d2VlbiBsaWJ0b29sLm00LCBsdG1haW4sIGx0X3N5c3RlbS5oLCBhbmQgdGVzdHMuICAqLworKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX0NZR1dJTl9fKSB8fCBkZWZpbmVkKF9XSU4zMl9XQ0UpCisrLyogREFUQSBpbXBvcnRzIGZyb20gRExMcyBvbiBXSU4zMiBjb24ndCBiZSBjb25zdCwgYmVjYXVzZSBydW50aW1lCisrICAgcmVsb2NhdGlvbnMgYXJlIHBlcmZvcm1lZCAtLSBzZWUgbGQncyBkb2N1bWVudGF0aW9uIG9uIHBzZXVkby1yZWxvY3MuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2VsaWYgZGVmaW5lZChfX29zZl9fKQorKy8qIFRoaXMgc3lzdGVtIGRvZXMgbm90IGNvcGUgd2VsbCB3aXRoIHJlbG9jYXRpb25zIGluIGNvbnN0IGRhdGEuICAqLworKyMgZGVmaW5lIExUX0RMU1lNX0NPTlNUCisrI2Vsc2UKKysjIGRlZmluZSBMVF9ETFNZTV9DT05TVCBjb25zdAorKyNlbmRpZgorKworICNpZmRlZiBfX2NwbHVzcGx1cworIGV4dGVybiAiQyIgeworICNlbmRpZgorQEAgLTcwNjEsNyArNzM5Miw3IEBAIF9MVF9FT0YKKyAJICBjYXQgPDxfTFRfRU9GID4+IGNvbmZ0ZXN0LiRhY19leHQKKyAKKyAvKiBUaGUgbWFwcGluZyBiZXR3ZWVuIHN5bWJvbCBuYW1lcyBhbmQgc3ltYm9scy4gICovCistY29uc3Qgc3RydWN0IHsKKytMVF9ETFNZTV9DT05TVCBzdHJ1Y3QgeworICAgY29uc3QgY2hhciAqbmFtZTsKKyAgIHZvaWQgICAgICAgKmFkZHJlc3M7CisgfQorQEAgLTcwODcsOCArNzQxOCw4IEBAIHN0YXRpYyBjb25zdCB2b2lkICpsdF9wcmVsb2FkZWRfc2V0dXAoKSB7CisgX0xUX0VPRgorIAkgICMgTm93IHRyeSBsaW5raW5nIHRoZSB0d28gZmlsZXMuCisgCSAgbXYgY29uZnRlc3QuJGFjX29iamV4dCBjb25mdHN0bS4kYWNfb2JqZXh0CistCSAgbHRfc2F2ZV9MSUJTPSIkTElCUyIKKy0JICBsdF9zYXZlX0NGTEFHUz0iJENGTEFHUyIKKysJICBsdF9nbG9ic3ltX3NhdmVfTElCUz0kTElCUworKwkgIGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1M9JENGTEFHUworIAkgIExJQlM9ImNvbmZ0c3RtLiRhY19vYmpleHQiCisgCSAgQ0ZMQUdTPSIkQ0ZMQUdTJGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIgorIAkgIGlmIHsgeyBldmFsIGVjaG8gIlwiXCRhc19tZVwiOiR7YXNfbGluZW5vLSRMSU5FTk99OiBcIiRhY19saW5rXCIiOyB9ID4mNQorQEAgLTcwOTgsOCArNzQyOSw4IEBAIF9MVF9FT0YKKyAgIHRlc3QgJGFjX3N0YXR1cyA9IDA7IH0gJiYgdGVzdCAtcyBjb25mdGVzdCR7YWNfZXhlZXh0fTsgdGhlbgorIAkgICAgcGlwZV93b3Jrcz15ZXMKKyAJICBmaQorLQkgIExJQlM9IiRsdF9zYXZlX0xJQlMiCistCSAgQ0ZMQUdTPSIkbHRfc2F2ZV9DRkxBR1MiCisrCSAgTElCUz0kbHRfZ2xvYnN5bV9zYXZlX0xJQlMKKysJICBDRkxBR1M9JGx0X2dsb2JzeW1fc2F2ZV9DRkxBR1MKKyAJZWxzZQorIAkgIGVjaG8gImNhbm5vdCBmaW5kIG5tX3Rlc3RfZnVuYyBpbiAkbmxpc3QiID4mNQorIAlmaQorQEAgLTcxMzYsNiArNzQ2NywxNiBAQCBlbHNlCisgJGFzX2VjaG8gIm9rIiA+JjY7IH0KKyBmaQorIAorKyMgUmVzcG9uc2UgZmlsZSBzdXBwb3J0LgorK2lmIHRlc3QgIiRsdF9jdl9ubV9pbnRlcmZhY2UiID0gIk1TIGR1bXBiaW4iOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytlbGlmICROTSAtLWhlbHAgMj4vZGV2L251bGwgfCBncmVwICdbQF1GSUxFJyA+L2Rldi9udWxsOyB0aGVuCisrICBubV9maWxlX2xpc3Rfc3BlYz0nQCcKKytmaQorKworKworKworKworIAorIAorIAorQEAgLTcxNTIsNiArNzQ5Myw0NSBAQCBmaQorIAorIAorIAorKworKworKworKworKworKworKworK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgZm9yIHN5c3Jvb3QiID4mNQorKyRhc19lY2hvX24gImNoZWNraW5nIGZvciBzeXNyb290Li4uICIgPiY2OyB9CisrCisrIyBDaGVjayB3aGV0aGVyIC0td2l0aC1saWJ0b29sLXN5c3Jvb3Qgd2FzIGdpdmVuLgorK2lmIHRlc3QgIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3Qrc2V0fSIgPSBzZXQ7IHRoZW4gOgorKyAgd2l0aHZhbD0kd2l0aF9saWJ0b29sX3N5c3Jvb3Q7CisrZWxzZQorKyAgd2l0aF9saWJ0b29sX3N5c3Jvb3Q9bm8KKytmaQorKworKworK2x0X3N5c3Jvb3Q9CisrY2FzZSAke3dpdGhfbGlidG9vbF9zeXNyb290fSBpbiAjKAorKyB5ZXMpCisrICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKysgICAgIGx0X3N5c3Jvb3Q9YCRDQyAtLXByaW50LXN5c3Jvb3QgMj4vZGV2L251bGxgCisrICAgZmkKKysgICA7OyAjKAorKyAvKikKKysgICBsdF9zeXNyb290PWBlY2hvICIkd2l0aF9saWJ0b29sX3N5c3Jvb3QiIHwgc2VkIC1lICIkc2VkX3F1b3RlX3N1YnN0ImAKKysgICA7OyAjKAorKyBub3wnJykKKysgICA7OyAjKAorKyAqKQorKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAke3dpdGhfbGlidG9vbF9zeXNyb290fSIgPiY1CisrJGFzX2VjaG8gIiR7d2l0aF9saWJ0b29sX3N5c3Jvb3R9IiA+JjY7IH0KKysgICBhc19mbl9lcnJvciAkPyAiVGhlIHN5c3Jvb3QgbXVzdCBiZSBhbiBhYnNvbHV0ZSBwYXRoLiIgIiRMSU5FTk8iIDUKKysgICA7OworK2VzYWMKKysKKysgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICR7bHRfc3lzcm9vdDotbm99IiA+JjUKKyskYXNfZWNobyAiJHtsdF9zeXNyb290Oi1ub30iID4mNjsgfQorIAorIAorIAorQEAgLTczNjMsNiArNzc0MywxMjMgQEAgZXNhYworIAorIG5lZWRfbG9ja3M9IiRlbmFibGVfbGlidG9vbF9sb2NrIgorIAorK2lmIHRlc3QgLW4gIiRhY190b29sX3ByZWZpeCI7IHRoZW4KKysgICMgRXh0cmFjdCB0aGUgZmlyc3Qgd29yZCBvZiAiJHthY190b29sX3ByZWZpeH1tdCIsIHNvIGl0IGNhbiBiZSBhIHByb2dyYW0gbmFtZSB3aXRoIGFyZ3MuCisrc2V0IGR1bW15ICR7YWNfdG9vbF9wcmVmaXh9bXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfTUFOSUZFU1RfVE9PTD0iJE1BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MPSIke2FjX3Rvb2xfcHJlZml4fW10IgorKyAgICAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBmb3VuZCAkYXNfZGlyLyRhY193b3JkJGFjX2V4ZWNfZXh0IiA+JjUKKysgICAgYnJlYWsgMgorKyAgZmkKKytkb25lCisrICBkb25lCisrSUZTPSRhc19zYXZlX0lGUworKworK2ZpCisrZmkKKytNQU5JRkVTVF9UT09MPSRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wKKytpZiB0ZXN0IC1uICIkTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkTUFOSUZFU1RfVE9PTCIgPiY1CisrJGFzX2VjaG8gIiRNQU5JRkVTVF9UT09MIiA+JjY7IH0KKytlbHNlCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogbm8iID4mNQorKyRhc19lY2hvICJubyIgPiY2OyB9CisrZmkKKysKKysKKytmaQorK2lmIHRlc3QgLXogIiRhY19jdl9wcm9nX01BTklGRVNUX1RPT0wiOyB0aGVuCisrICBhY19jdF9NQU5JRkVTVF9UT09MPSRNQU5JRkVTVF9UT09MCisrICAjIEV4dHJhY3QgdGhlIGZpcnN0IHdvcmQgb2YgIm10Iiwgc28gaXQgY2FuIGJlIGEgcHJvZ3JhbSBuYW1lIHdpdGggYXJncy4KKytzZXQgZHVtbXkgbXQ7IGFjX3dvcmQ9JDIKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkYWNfd29yZCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRhY193b3JkLi4uICIgPiY2OyB9CisraWYgJHthY19jdl9wcm9nX2FjX2N0X01BTklGRVNUX1RPT0wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBpZiB0ZXN0IC1uICIkYWNfY3RfTUFOSUZFU1RfVE9PTCI7IHRoZW4KKysgIGFjX2N2X3Byb2dfYWNfY3RfTUFOSUZFU1RfVE9PTD0iJGFjX2N0X01BTklGRVNUX1RPT0wiICMgTGV0IHRoZSB1c2VyIG92ZXJyaWRlIHRoZSB0ZXN0LgorK2Vsc2UKKythc19zYXZlX0lGUz0kSUZTOyBJRlM9JFBBVEhfU0VQQVJBVE9SCisrZm9yIGFzX2RpciBpbiAkUEFUSAorK2RvCisrICBJRlM9JGFzX3NhdmVfSUZTCisrICB0ZXN0IC16ICIkYXNfZGlyIiAmJiBhc19kaXI9LgorKyAgICBmb3IgYWNfZXhlY19leHQgaW4gJycgJGFjX2V4ZWN1dGFibGVfZXh0ZW5zaW9uczsgZG8KKysgIGlmIGFzX2ZuX2V4ZWN1dGFibGVfcCAiJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCI7IHRoZW4KKysgICAgYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MPSJtdCIKKysgICAgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogZm91bmQgJGFzX2Rpci8kYWNfd29yZCRhY19leGVjX2V4dCIgPiY1CisrICAgIGJyZWFrIDIKKysgIGZpCisrZG9uZQorKyAgZG9uZQorK0lGUz0kYXNfc2F2ZV9JRlMKKysKKytmaQorK2ZpCisrYWNfY3RfTUFOSUZFU1RfVE9PTD0kYWNfY3ZfcHJvZ19hY19jdF9NQU5JRkVTVF9UT09MCisraWYgdGVzdCAtbiAiJGFjX2N0X01BTklGRVNUX1RPT0wiOyB0aGVuCisrICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGFjX2N0X01BTklGRVNUX1RPT0wiID4mNQorKyRhc19lY2hvICIkYWNfY3RfTUFOSUZFU1RfVE9PTCIgPiY2OyB9CisrZWxzZQorKyAgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6IG5vIiA+JjUKKyskYXNfZWNobyAibm8iID4mNjsgfQorK2ZpCisrCisrICBpZiB0ZXN0ICJ4JGFjX2N0X01BTklGRVNUX1RPT0wiID0geDsgdGhlbgorKyAgICBNQU5JRkVTVF9UT09MPSI6IgorKyAgZWxzZQorKyAgICBjYXNlICRjcm9zc19jb21waWxpbmc6JGFjX3Rvb2xfd2FybmVkIGluCisreWVzOikKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IFdBUk5JTkc6IHVzaW5nIGNyb3NzIHRvb2xzIG5vdCBwcmVmaXhlZCB3aXRoIGhvc3QgdHJpcGxldCIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogdXNpbmcgY3Jvc3MgdG9vbHMgbm90IHByZWZpeGVkIHdpdGggaG9zdCB0cmlwbGV0IiA+JjI7fQorK2FjX3Rvb2xfd2FybmVkPXllcyA7OworK2VzYWMKKysgICAgTUFOSUZFU1RfVE9PTD0kYWNfY3RfTUFOSUZFU1RfVE9PTAorKyAgZmkKKytlbHNlCisrICBNQU5JRkVTVF9UT09MPSIkYWNfY3ZfcHJvZ19NQU5JRkVTVF9UT09MIgorK2ZpCisrCisrdGVzdCAteiAiJE1BTklGRVNUX1RPT0wiICYmIE1BTklGRVNUX1RPT0w9bXQKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGlmICRNQU5JRkVTVF9UT09MIGlzIGEgbWFuaWZlc3QgdG9vbCIgPiY1CisrJGFzX2VjaG9fbiAiY2hlY2tpbmcgaWYgJE1BTklGRVNUX1RPT0wgaXMgYSBtYW5pZmVzdCB0b29sLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2w9bm8KKysgIGVjaG8gIiRhc19tZTokTElORU5POiAkTUFOSUZFU1RfVE9PTCAnLT8nIiA+JjUKKysgICRNQU5JRkVTVF9UT09MICctPycgMj5jb25mdGVzdC5lcnIgPiBjb25mdGVzdC5vdXQKKysgIGNhdCBjb25mdGVzdC5lcnIgPiY1CisrICBpZiAkR1JFUCAnTWFuaWZlc3QgVG9vbCcgY29uZnRlc3Qub3V0ID4gL2Rldi9udWxsOyB0aGVuCisrICAgIGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbD15ZXMKKysgIGZpCisrICBybSAtZiBjb25mdGVzdCoKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcGF0aF9tYWluZmVzdF90b29sIiA+JjUKKyskYXNfZWNobyAiJGx0X2N2X3BhdGhfbWFpbmZlc3RfdG9vbCIgPiY2OyB9CisraWYgdGVzdCAieCRsdF9jdl9wYXRoX21haW5mZXN0X3Rvb2wiICE9IHh5ZXM7IHRoZW4KKysgIE1BTklGRVNUX1RPT0w9OgorK2ZpCisrCisrCisrCisrCisrCisgCisgICBjYXNlICRob3N0X29zIGluCisgICAgIHJoYXBzb2R5KiB8IGRhcndpbiopCitAQCAtNzkyNiw2ICs4NDIzLDggQEAgX0xUX0VPRgorICAgICAgICRMVENDICRMVENGTEFHUyAtYyAtbyBjb25mdGVzdC5vIGNvbmZ0ZXN0LmMgMj4mNQorICAgICAgIGVjaG8gIiRBUiBjcnUgbGliY29uZnRlc3QuYSBjb25mdGVzdC5vIiA+JjUKKyAgICAgICAkQVIgY3J1IGxpYmNvbmZ0ZXN0LmEgY29uZnRlc3QubyAyPiY1CisrICAgICAgZWNobyAiJFJBTkxJQiBsaWJjb25mdGVzdC5hIiA+JjUKKysgICAgICAkUkFOTElCIGxpYmNvbmZ0ZXN0LmEgMj4mNQorICAgICAgIGNhdCA+IGNvbmZ0ZXN0LmMgPDwgX0xUX0VPRgorIGludCBtYWluKCkgeyByZXR1cm4gMDt9CisgX0xUX0VPRgorQEAgLTgwOTEsNyArODU5MCw4IEBAIGZpCisgTElCVE9PTF9ERVBTPSIkbHRtYWluIgorIAorICMgQWx3YXlzIHVzZSBvdXIgb3duIGxpYnRvb2wuCistTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpL2xpYnRvb2wnCisrTElCVE9PTD0nJChTSEVMTCkgJCh0b3BfYnVpbGRkaXIpJworK0xJQlRPT0w9IiRMSUJUT09MLyR7aG9zdF9hbGlhc30tbGlidG9vbCIKKyAKKyAKKyAKK0BAIC04MTgwLDcgKzg2ODAsNyBAQCBhaXgzKikKKyBlc2FjCisgCisgIyBHbG9iYWwgdmFyaWFibGVzOgorLW9maWxlPWxpYnRvb2wKKytvZmlsZT0ke2hvc3RfYWxpYXN9LWxpYnRvb2wKKyBjYW5fYnVpbGRfc2hhcmVkPXllcworIAorICMgQWxsIGtub3duIGxpbmtlcnMgcmVxdWlyZSBhIGAuYScgYXJjaGl2ZSBmb3Igc3RhdGljIGxpbmtpbmcgKGV4Y2VwdCBNU1ZDLAorQEAgLTg0NzgsOCArODk3OCw2IEBAIGZpCisgbHRfcHJvZ19jb21waWxlcl9waWM9CisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9CisgCisteyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQyIgPiY1CistJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAKKyAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICAgIGx0X3Byb2dfY29tcGlsZXJfd2w9Jy1XbCwnCitAQCAtODY0NSw2ICs5MTQzLDEyIEBAICRhc19lY2hvX24gImNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDLi4uICIgPiY2OyB9CisgCWx0X3Byb2dfY29tcGlsZXJfcGljPSctLXNoYXJlZCcKKyAJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy0tc3RhdGljJworIAk7OworKyAgICAgIG5hZ2ZvciopCisrCSMgTkFHIEZvcnRyYW4gY29tcGlsZXIKKysJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLC1XbCwsJworKwlsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLVBJQycKKysJbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworKwk7OworICAgICAgIHBnY2MqIHwgcGdmNzcqIHwgcGdmOTAqIHwgcGdmOTUqIHwgcGdmb3J0cmFuKikKKyAgICAgICAgICMgUG9ydGxhbmQgR3JvdXAgY29tcGlsZXJzICgqbm90KiB0aGUgUGVudGl1bSBnY2MgY29tcGlsZXIsCisgCSMgd2hpY2ggbG9va3MgdG8gYmUgYSBkZWFkIHByb2plY3QpCitAQCAtODcwNyw3ICs5MjExLDcgQEAgJGFzX2VjaG9fbiAiY2hlY2tpbmcgZm9yICRjb21waWxlciBvcHRpb24gdG8gcHJvZHVjZSBQSUMuLi4gIiA+JjY7IH0KKyAgICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0nLUtQSUMnCisgICAgICAgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9Jy1Cc3RhdGljJworICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCistICAgICAgZjc3KiB8IGY5MCogfCBmOTUqKQorKyAgICAgIGY3NyogfCBmOTAqIHwgZjk1KiB8IHN1bmY3NyogfCBzdW5mOTAqIHwgc3VuZjk1KikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVFvcHRpb24gbGQgJzs7CisgICAgICAgKikKKyAJbHRfcHJvZ19jb21waWxlcl93bD0nLVdsLCc7OworQEAgLTg3NjQsMTMgKzkyNjgsMTcgQEAgY2FzZSAkaG9zdF9vcyBpbgorICAgICBsdF9wcm9nX2NvbXBpbGVyX3BpYz0iJGx0X3Byb2dfY29tcGlsZXJfcGljIC1EUElDIgorICAgICA7OworIGVzYWMKKy17ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjUKKy0kYXNfZWNobyAiJGx0X3Byb2dfY29tcGlsZXJfcGljIiA+JjY7IH0KKy0KKy0KKy0KKy0KKyAKKyt7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIGZvciAkY29tcGlsZXIgb3B0aW9uIHRvIHByb2R1Y2UgUElDIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyBmb3IgJGNvbXBpbGVyIG9wdGlvbiB0byBwcm9kdWNlIFBJQy4uLiAiID4mNjsgfQorK2lmICR7bHRfY3ZfcHJvZ19jb21waWxlcl9waWMrOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYz0kbHRfcHJvZ19jb21waWxlcl9waWMKKytmaQorK3sgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNQorKyRhc19lY2hvICIkbHRfY3ZfcHJvZ19jb21waWxlcl9waWMiID4mNjsgfQorK2x0X3Byb2dfY29tcGlsZXJfcGljPSRsdF9jdl9wcm9nX2NvbXBpbGVyX3BpYworIAorICMKKyAjIENoZWNrIHRvIG1ha2Ugc3VyZSB0aGUgUElDIGZsYWcgYWN0dWFsbHkgd29ya3MuCitAQCAtODgzMSw2ICs5MzM5LDExIEBAIGZpCisgCisgCisgCisrCisrCisrCisrCisrCisgIworICMgQ2hlY2sgdG8gbWFrZSBzdXJlIHRoZSBzdGF0aWMgZmxhZyBhY3R1YWxseSB3b3Jrcy4KKyAjCitAQCAtOTE4MSw3ICs5Njk0LDggQEAgX0xUX0VPRgorICAgICAgIGFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisgICAgICAgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPW5vCisgICAgICAgZW5hYmxlX3NoYXJlZF93aXRoX3N0YXRpY19ydW50aW1lcz15ZXMKKy0gICAgICBleHBvcnRfc3ltYm9sc19jbWRzPSckTk0gJGxpYm9ianMgJGNvbnZlbmllbmNlIHwgJGdsb2JhbF9zeW1ib2xfcGlwZSB8ICRTRUQgLWUgJ1wnJy9eW0JDREdSU11bIF0vcy8uKlsgXVwoW14gXSpcKS9cMSBEQVRBLydcJycgfCAkU0VEIC1lICdcJycvXltBSVRXXVsgXS9zLy4qWyBdLy8nXCcnIHwgc29ydCB8IHVuaXEgPiAkZXhwb3J0X3N5bWJvbHMnCisrICAgICAgZXhwb3J0X3N5bWJvbHNfY21kcz0nJE5NICRsaWJvYmpzICRjb252ZW5pZW5jZSB8ICRnbG9iYWxfc3ltYm9sX3BpcGUgfCAkU0VEIC1lICdcJycvXltCQ0RHUlNdWyBdL3MvLipbIF1cKFteIF0qXCkvXDEgREFUQS87cy9eLipbIF1fX25tX19cKFteIF0qXClbIF1bXiBdKi9cMSBEQVRBLzsvXklbIF0vZDsvXltBSVRXXVsgXS9zLy4qIC8vJ1wnJyB8IHNvcnQgfCB1bmlxID4gJGV4cG9ydF9zeW1ib2xzJworKyAgICAgIGV4Y2x1ZGVfZXhwc3ltcz0nW19dK0dMT0JBTF9PRkZTRVRfVEFCTEVffFtfXStHTE9CQUxfX1tGSURdXy4qfFtfXStoZWFkX1tBLVphLXowLTlfXStfZGxsfFtBLVphLXowLTlfXStfZGxsX2luYW1lJworIAorICAgICAgIGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICdhdXRvLWltcG9ydCcgPiAvZGV2L251bGw7IHRoZW4KKyAgICAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJHt3bH0tLWVuYWJsZS1hdXRvLWltYWdlLWJhc2UgLVhsaW5rZXIgLS1vdXQtaW1wbGliIC1YbGlua2VyICRsaWInCitAQCAtOTI4MCwxMiArOTc5NCwxMiBAQCBfTFRfRU9GCisgCSAgd2hvbGVfYXJjaGl2ZV9mbGFnX3NwZWM9Jy0td2hvbGUtYXJjaGl2ZSRjb252ZW5pZW5jZSAtLW5vLXdob2xlLWFyY2hpdmUnCisgCSAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0KKyAJICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkPSctcnBhdGggJGxpYmRpcicKKy0JICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgLW8gJGxpYicKKysJICBhcmNoaXZlX2NtZHM9JyRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC1vICRsaWInCisgCSAgaWYgdGVzdCAieCRzdXBwb3J0c19hbm9uX3ZlcnNpb25pbmciID0geHllczsgdGhlbgorIAkgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nZWNobyAieyBnbG9iYWw6IiA+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKyAJICAgICAgY2F0ICRleHBvcnRfc3ltYm9scyB8IHNlZCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyfgorIAkgICAgICBlY2hvICJsb2NhbDogKjsgfTsiID4+ICRvdXRwdXRfb2JqZGlyLyRsaWJuYW1lLnZlcn4KKy0JICAgICAgJExEIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSAtdmVyc2lvbi1zY3JpcHQgJG91dHB1dF9vYmpkaXIvJGxpYm5hbWUudmVyIC1vICRsaWInCisrCSAgICAgICRMRCAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLXNvbmFtZSAkc29uYW1lIC12ZXJzaW9uLXNjcmlwdCAkb3V0cHV0X29iamRpci8kbGlibmFtZS52ZXIgLW8gJGxpYicKKyAJICBmaQorIAkgIDs7CisgCWVzYWMKK0BAIC05Mjk5LDggKzk4MTMsOCBAQCBfTFRfRU9GCisgCWFyY2hpdmVfY21kcz0nJExEIC1Cc2hhcmVhYmxlICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3MgLW8gJGxpYicKKyAJd2xhcmM9CisgICAgICAgZWxzZQorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworLQlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgJHt3bH0tcmV0YWluLXN5bWJvbHMtZmlsZSAkd2wkZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKyAgICAgICBmaQorICAgICAgIDs7CisgCitAQCAtOTMxOCw4ICs5ODMyLDggQEAgX0xUX0VPRgorIAorIF9MVF9FT0YKKyAgICAgICBlbGlmICRMRCAtLWhlbHAgMj4mMSB8ICRHUkVQICc6IHN1cHBvcnRlZCB0YXJnZXRzOi4qIGVsZicgPiAvZGV2L251bGw7IHRoZW4KKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKy0JYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisrCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAtbyAkbGliJworKwlhcmNoaXZlX2V4cHN5bV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lICR7d2x9LXJldGFpbi1zeW1ib2xzLWZpbGUgJHdsJGV4cG9ydF9zeW1ib2xzIC1vICRsaWInCisgICAgICAgZWxzZQorIAlsZF9zaGxpYnM9bm8KKyAgICAgICBmaQorQEAgLTkzNjUsOCArOTg3OSw4IEBAIF9MVF9FT0YKKyAKKyAgICAgKikKKyAgICAgICBpZiAkTEQgLS1oZWxwIDI+JjEgfCAkR1JFUCAnOiBzdXBwb3J0ZWQgdGFyZ2V0czouKiBlbGYnID4gL2Rldi9udWxsOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LXNvbmFtZSAkd2wkc29uYW1lIC1vICRsaWInCistCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR3bCRzb25hbWUgLW8gJGxpYicKKysJYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHdsJHNvbmFtZSAke3dsfS1yZXRhaW4tc3ltYm9scy1maWxlICR3bCRleHBvcnRfc3ltYm9scyAtbyAkbGliJworICAgICAgIGVsc2UKKyAJbGRfc2hsaWJzPW5vCisgICAgICAgZmkKK0BAIC05NDk2LDcgKzEwMDEwLDEzIEBAIF9MVF9FT0YKKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9Jy1iZXJvaycKKyAgICAgICAgICMgRGV0ZXJtaW5lIHRoZSBkZWZhdWx0IGxpYnBhdGggZnJvbSB0aGUgdmFsdWUgZW5jb2RlZCBpbiBhbgorICAgICAgICAgIyBlbXB0eSBleGVjdXRhYmxlLgorLSAgICAgICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorKyAgICAgICAgaWYgdGVzdCAiJHtsdF9jdl9haXhfbGlicGF0aCtzZXR9IiA9IHNldDsgdGhlbgorKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoCisrZWxzZQorKyAgaWYgJHtsdF9jdl9haXhfbGlicGF0aF8rOn0gZmFsc2U7IHRoZW4gOgorKyAgJGFzX2VjaG9fbiAiKGNhY2hlZCkgIiA+JjYKKytlbHNlCisrICBjYXQgY29uZmRlZnMuaCAtIDw8X0FDRU9GID5jb25mdGVzdC4kYWNfZXh0CisgLyogZW5kIGNvbmZkZWZzLmguICAqLworIAorIGludAorQEAgLTk1MDksMjIgKzEwMDI5LDI5IEBAIG1haW4gKCkKKyBfQUNFT0YKKyBpZiBhY19mbl9jX3RyeV9saW5rICIkTElORU5PIjsgdGhlbiA6CisgCistbHRfYWl4X2xpYnBhdGhfc2VkPScKKy0gICAgL0ltcG9ydCBGaWxlIFN0cmluZ3MvLC9eJC8geworLQkvXjAvIHsKKy0JICAgIHMvXjAgICpcKC4qXCkkL1wxLworLQkgICAgcAorLQl9CistICAgIH0nCistYWl4X2xpYnBhdGg9YGR1bXAgLUggY29uZnRlc3QkYWNfZXhlZXh0IDI+L2Rldi9udWxsIHwgJFNFRCAtbiAtZSAiJGx0X2FpeF9saWJwYXRoX3NlZCJgCistIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4KKy0gIGFpeF9saWJwYXRoPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLWZpCisrICBsdF9haXhfbGlicGF0aF9zZWQ9JworKyAgICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKysJICAvXjAvIHsKKysJICAgICAgcy9eMCAgKlwoW14gXSpcKSAqJC9cMS8KKysJICAgICAgcAorKwkgIH0KKysgICAgICB9JworKyAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgIyBDaGVjayBmb3IgYSA2NC1iaXQgb2JqZWN0IGlmIHdlIGRpZG4ndCBmaW5kIGFueXRoaW5nLgorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPWBkdW1wIC1IWDY0IGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorKyAgZmkKKyBmaQorIHJtIC1mIGNvcmUgY29uZnRlc3QuZXJyIGNvbmZ0ZXN0LiRhY19vYmpleHQgXAorICAgICBjb25mdGVzdCRhY19leGVleHQgY29uZnRlc3QuJGFjX2V4dAorLWlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorKyAgaWYgdGVzdCAteiAiJGx0X2N2X2FpeF9saWJwYXRoXyI7IHRoZW4KKysgICAgbHRfY3ZfYWl4X2xpYnBhdGhfPSIvdXNyL2xpYjovbGliIgorKyAgZmkKKysKKytmaQorKworKyAgYWl4X2xpYnBhdGg9JGx0X2N2X2FpeF9saWJwYXRoXworK2ZpCisgCisgICAgICAgICBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ibGlicGF0aDokbGliZGlyOiciJGFpeF9saWJwYXRoIgorICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGRlcGxpYnMgJyJcJHt3bH0kbm9fZW50cnlfZmxhZyInICRjb21waWxlcl9mbGFncyBgaWYgdGVzdCAieCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9IiAhPSAieCI7IHRoZW4gZnVuY19lY2hvX2FsbCAiJHt3bH0ke2FsbG93X3VuZGVmaW5lZF9mbGFnfSI7IGVsc2UgOjsgZmlgICciXCR7d2x9JGV4cF9zeW1fZmxhZzpcJGV4cG9ydF9zeW1ib2xzICRzaGFyZWRfZmxhZyIKK0BAIC05NTM2LDcgKzEwMDYzLDEzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAllbHNlCisgCSAjIERldGVybWluZSB0aGUgZGVmYXVsdCBsaWJwYXRoIGZyb20gdGhlIHZhbHVlIGVuY29kZWQgaW4gYW4KKyAJICMgZW1wdHkgZXhlY3V0YWJsZS4KKy0JIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIGlmIHRlc3QgIiR7bHRfY3ZfYWl4X2xpYnBhdGgrc2V0fSIgPSBzZXQ7IHRoZW4KKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aAorK2Vsc2UKKysgIGlmICR7bHRfY3ZfYWl4X2xpYnBhdGhfKzp9IGZhbHNlOyB0aGVuIDoKKysgICRhc19lY2hvX24gIihjYWNoZWQpICIgPiY2CisrZWxzZQorKyAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKyBpbnQKK0BAIC05NTQ5LDIyICsxMDA4MiwyOSBAQCBtYWluICgpCisgX0FDRU9GCisgaWYgYWNfZm5fY190cnlfbGluayAiJExJTkVOTyI7IHRoZW4gOgorIAorLWx0X2FpeF9saWJwYXRoX3NlZD0nCistICAgIC9JbXBvcnQgRmlsZSBTdHJpbmdzLywvXiQvIHsKKy0JL14wLyB7CistCSAgICBzL14wICAqXCguKlwpJC9cMS8KKy0JICAgIHAKKy0JfQorLSAgICB9JworLWFpeF9saWJwYXRoPWBkdW1wIC1IIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAyPi9kZXYvbnVsbCB8ICRTRUQgLW4gLWUgIiRsdF9haXhfbGlicGF0aF9zZWQiYAorLSMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuCistICBhaXhfbGlicGF0aD1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKy1maQorKyAgbHRfYWl4X2xpYnBhdGhfc2VkPScKKysgICAgICAvSW1wb3J0IEZpbGUgU3RyaW5ncy8sL14kLyB7CisrCSAgL14wLyB7CisrCSAgICAgIHMvXjAgICpcKFteIF0qXCkgKiQvXDEvCisrCSAgICAgIHAKKysJICB9CisrICAgICAgfScKKysgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgICMgQ2hlY2sgZm9yIGEgNjQtYml0IG9iamVjdCBpZiB3ZSBkaWRuJ3QgZmluZCBhbnl0aGluZy4KKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz1gZHVtcCAtSFg2NCBjb25mdGVzdCRhY19leGVleHQgMj4vZGV2L251bGwgfCAkU0VEIC1uIC1lICIkbHRfYWl4X2xpYnBhdGhfc2VkImAKKysgIGZpCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy1pZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKysgIGlmIHRlc3QgLXogIiRsdF9jdl9haXhfbGlicGF0aF8iOyB0aGVuCisrICAgIGx0X2N2X2FpeF9saWJwYXRoXz0iL3Vzci9saWI6L2xpYiIKKysgIGZpCisrCisrZmkKKysKKysgIGFpeF9saWJwYXRoPSRsdF9jdl9haXhfbGlicGF0aF8KKytmaQorIAorIAkgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nJHt3bH0tYmxpYnBhdGg6JGxpYmRpcjonIiRhaXhfbGlicGF0aCIKKyAJICAjIFdhcm5pbmcgLSB3aXRob3V0IHVzaW5nIHRoZSBvdGhlciBydW4gdGltZSBsb2FkaW5nIGZsYWdzLAorQEAgLTk2MDksMjAgKzEwMTQ5LDYzIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorICAgICAgICMgTWljcm9zb2Z0IFZpc3VhbCBDKysuCisgICAgICAgIyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIGlzIGFjdHVhbGx5IG1lYW5pbmdsZXNzLCBhcyB0aGVyZSBpcworICAgICAgICMgbm8gc2VhcmNoIHBhdGggZm9yIERMTHMuCistICAgICAgaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYz0nICcKKy0gICAgICBhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCistICAgICAgbGliZXh0PWxpYgorLSAgICAgICMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorLSAgICAgIHNocmV4dF9jbWRzPSIuZGxsIgorLSAgICAgICMgRklYTUU6IFNldHRpbmcgbGlua25hbWVzIGhlcmUgaXMgYSBiYWQgaGFjay4KKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworLSAgICAgICMgVGhlIGxpbmtlciB3aWxsIGF1dG9tYXRpY2FsbHkgYnVpbGQgYSAubGliIGZpbGUgaWYgd2UgYnVpbGQgYSBETEwuCistICAgICAgb2xkX2FyY2hpdmVfZnJvbV9uZXdfY21kcz0ndHJ1ZScKKy0gICAgICAjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorLSAgICAgIG9sZF9hcmNoaXZlX2NtZHM9J2xpYiAtT1VUOiRvbGRsaWIkb2xkb2JqcyRvbGRfZGVwbGlicycKKy0gICAgICBmaXhfc3JjZmlsZV9wYXRoPSdgY3lncGF0aCAtdyAiJHNyY2ZpbGUiYCcKKy0gICAgICBlbmFibGVfc2hhcmVkX3dpdGhfc3RhdGljX3J1bnRpbWVzPXllcworKyAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCisrICAgICAgY2wqKQorKwkjIE5hdGl2ZSBNU1ZDCisrCWhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9JyAnCisrCWFsbG93X3VuZGVmaW5lZF9mbGFnPXVuc3VwcG9ydGVkCisrCWFsd2F5c19leHBvcnRfc3ltYm9scz15ZXMKKysJZmlsZV9saXN0X3NwZWM9J0AnCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAubGliIGZpbGVzLCBub3QgLmEgZmlsZXMuCisrCWxpYmV4dD1saWIKKysJIyBUZWxsIGx0bWFpbiB0byBtYWtlIC5kbGwgZmlsZXMsIG5vdCAuc28gZmlsZXMuCisrCXNocmV4dF9jbWRzPSIuZGxsIgorKwkjIEZJWE1FOiBTZXR0aW5nIGxpbmtuYW1lcyBoZXJlIGlzIGEgYmFkIGhhY2suCisrCWFyY2hpdmVfY21kcz0nJENDIC1vICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYm9ianMgJGNvbXBpbGVyX2ZsYWdzICRkZXBsaWJzIC1XbCwtZGxsfmxpbmtuYW1lcz0nCisrCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2lmIHRlc3QgInhgJFNFRCAxcSAkZXhwb3J0X3N5bWJvbHNgIiA9IHhFWFBPUlRTOyB0aGVuCisrCSAgICBzZWQgLW4gLWUgJ3MvXFxcXFxcXCguKlxcXFxcXFwpLy1saW5rXFxcIC1FWFBPUlQ6XFxcXFxcXDEvJyAtZSAnMVxcXCFwJyA8ICRleHBvcnRfc3ltYm9scyA+ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUuZXhwOworKwkgIGVsc2UKKysJICAgIHNlZCAtZSAncy9cXFxcXFxcKC4qXFxcXFxcXCkvLWxpbmtcXFwgLUVYUE9SVDpcXFxcXFxcMS8nIDwgJGV4cG9ydF9zeW1ib2xzID4gJG91dHB1dF9vYmpkaXIvJHNvbmFtZS5leHA7CisrCSAgZml+CisrCSAgJENDIC1vICR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lICRsaWJvYmpzICRjb21waWxlcl9mbGFncyAkZGVwbGlicyAiQCR0b29sX291dHB1dF9vYmpkaXIkc29uYW1lLmV4cCIgLVdsLC1ETEwsLUlNUExJQjoiJHRvb2xfb3V0cHV0X29iamRpciRsaWJuYW1lLmRsbC5saWIifgorKwkgIGxpbmtuYW1lcz0nCisrCSMgVGhlIGxpbmtlciB3aWxsIG5vdCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgc3RhdGljIGxpYiBpZiB3ZSBidWlsZCBhIERMTC4KKysJIyBfTFRfVEFHVkFSKG9sZF9hcmNoaXZlX2Zyb21fbmV3X2NtZHMsICk9J3RydWUnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCWV4cG9ydF9zeW1ib2xzX2NtZHM9JyROTSAkbGlib2JqcyAkY29udmVuaWVuY2UgfCAkZ2xvYmFsX3N5bWJvbF9waXBlIHwgJFNFRCAtZSAnXCcnL15bQkNER1JTXVsgXS9zLy4qWyBdXChbXiBdKlwpL1wxLERBVEEvJ1wnJyB8ICRTRUQgLWUgJ1wnJy9eW0FJVFddWyBdL3MvLipbIF0vLydcJycgfCBzb3J0IHwgdW5pcSA+ICRleHBvcnRfc3ltYm9scycKKysJIyBEb24ndCB1c2UgcmFubGliCisrCW9sZF9wb3N0aW5zdGFsbF9jbWRzPSdjaG1vZCA2NDQgJG9sZGxpYicKKysJcG9zdGxpbmtfY21kcz0nbHRfb3V0cHV0ZmlsZT0iQE9VVFBVVEAifgorKwkgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iQFRPT0xfT1VUUFVUQCJ+CisrCSAgY2FzZSAkbHRfb3V0cHV0ZmlsZSBpbgorKwkgICAgKi5leGV8Ki5FWEUpIDs7CisrCSAgICAqKQorKwkgICAgICBsdF9vdXRwdXRmaWxlPSIkbHRfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIGx0X3Rvb2xfb3V0cHV0ZmlsZT0iJGx0X3Rvb2xfb3V0cHV0ZmlsZS5leGUiCisrCSAgICAgIDs7CisrCSAgZXNhY34KKysJICBpZiB0ZXN0ICIkTUFOSUZFU1RfVE9PTCIgIT0gIjoiICYmIHRlc3QgLWYgIiRsdF9vdXRwdXRmaWxlLm1hbmlmZXN0IjsgdGhlbgorKwkgICAgJE1BTklGRVNUX1RPT0wgLW1hbmlmZXN0ICIkbHRfdG9vbF9vdXRwdXRmaWxlLm1hbmlmZXN0IiAtb3V0cHV0cmVzb3VyY2U6IiRsdF90b29sX291dHB1dGZpbGUiIHx8IGV4aXQgMTsKKysJICAgICRSTSAiJGx0X291dHB1dGZpbGUubWFuaWZlc3QiOworKwkgIGZpJworKwk7OworKyAgICAgICopCisrCSMgQXNzdW1lIE1TVkMgd3JhcHBlcgorKwloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScgJworKwlhbGxvd191bmRlZmluZWRfZmxhZz11bnN1cHBvcnRlZAorKwkjIFRlbGwgbHRtYWluIHRvIG1ha2UgLmxpYiBmaWxlcywgbm90IC5hIGZpbGVzLgorKwlsaWJleHQ9bGliCisrCSMgVGVsbCBsdG1haW4gdG8gbWFrZSAuZGxsIGZpbGVzLCBub3QgLnNvIGZpbGVzLgorKwlzaHJleHRfY21kcz0iLmRsbCIKKysJIyBGSVhNRTogU2V0dGluZyBsaW5rbmFtZXMgaGVyZSBpcyBhIGJhZCBoYWNrLgorKwlhcmNoaXZlX2NtZHM9JyRDQyAtbyAkbGliICRsaWJvYmpzICRjb21waWxlcl9mbGFncyBgZnVuY19lY2hvX2FsbCAiJGRlcGxpYnMiIHwgJFNFRCAnXCcncy8gLWxjJC8vJ1wnJ2AgLWxpbmsgLWRsbH5saW5rbmFtZXM9JworKwkjIFRoZSBsaW5rZXIgd2lsbCBhdXRvbWF0aWNhbGx5IGJ1aWxkIGEgLmxpYiBmaWxlIGlmIHdlIGJ1aWxkIGEgRExMLgorKwlvbGRfYXJjaGl2ZV9mcm9tX25ld19jbWRzPSd0cnVlJworKwkjIEZJWE1FOiBTaG91bGQgbGV0IHRoZSB1c2VyIHNwZWNpZnkgdGhlIGxpYiBwcm9ncmFtLgorKwlvbGRfYXJjaGl2ZV9jbWRzPSdsaWIgLU9VVDokb2xkbGliJG9sZG9ianMkb2xkX2RlcGxpYnMnCisrCWVuYWJsZV9zaGFyZWRfd2l0aF9zdGF0aWNfcnVudGltZXM9eWVzCisrCTs7CisrICAgICAgZXNhYworICAgICAgIDs7CisgCisgICAgIGRhcndpbiogfCByaGFwc29keSopCitAQCAtOTY4Myw3ICsxMDI2Niw3IEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAorICAgICAjIEZyZWVCU0QgMyBhbmQgZ3JlYXRlciB1c2VzIGdjYyAtc2hhcmVkIHRvIGRvIHNoYXJlZCBsaWJyYXJpZXMuCisgICAgIGZyZWVic2QqIHwgZHJhZ29uZmx5KikKKy0gICAgICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworKyAgICAgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworICAgICAgIGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9Jy1SJGxpYmRpcicKKyAgICAgICBoYXJkY29kZV9kaXJlY3Q9eWVzCisgICAgICAgaGFyZGNvZGVfc2hsaWJwYXRoX3Zhcj1ubworQEAgLTk2OTEsNyArMTAyNzQsNyBAQCBpZiB0ZXN0IC16ICIkYWl4X2xpYnBhdGgiOyB0aGVuIGFpeF9saWJwYXRoPSIvdXNyL2xpYjovbGliIjsgZmkKKyAKKyAgICAgaHB1eDkqKQorICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JENDIC1zaGFyZWQgLWZQSUMgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckUk0gJG91dHB1dF9vYmpkaXIvJHNvbmFtZX4kQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFnc350ZXN0ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgPSAkbGliIHx8IG12ICRvdXRwdXRfb2JqZGlyLyRzb25hbWUgJGxpYicKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJFJNICRvdXRwdXRfb2JqZGlyLyRzb25hbWV+JExEIC1iICtiICRpbnN0YWxsX2xpYmRpciAtbyAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWJvYmpzICRkZXBsaWJzICRsaW5rZXJfZmxhZ3N+dGVzdCAkb3V0cHV0X29iamRpci8kc29uYW1lID0gJGxpYiB8fCBtdiAkb3V0cHV0X29iamRpci8kc29uYW1lICRsaWInCisgICAgICAgZmkKK0BAIC05NzA3LDcgKzEwMjkwLDcgQEAgaWYgdGVzdCAteiAiJGFpeF9saWJwYXRoIjsgdGhlbiBhaXhfbGlicGF0aD0iL3Vzci9saWI6L2xpYiI7IGZpCisgCisgICAgIGhwdXgxMCopCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXMgJiYgdGVzdCAiJHdpdGhfZ251X2xkIiA9IG5vOyB0aGVuCistCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJExEIC1iICtoICRzb25hbWUgK2IgJGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGxpbmtlcl9mbGFncycKKyAgICAgICBmaQorQEAgLTk3MzEsMTAgKzEwMzE0LDEwIEBAIGlmIHRlc3QgLXogIiRhaXhfbGlicGF0aCI7IHRoZW4gYWl4X2xpYnBhdGg9Ii91c3IvbGliOi9saWIiOyBmaQorIAkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJHt3bH0raCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCSAgOzsKKyAJaWE2NCopCistCSAgYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAtZlBJQyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStub2RlZmF1bHRycGF0aCAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKyAJICA7OworIAkqKQorLQkgIGFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgLWZQSUMgJHt3bH0raCAke3dsfSRzb25hbWUgJHt3bH0rYiAke3dsfSRpbnN0YWxsX2xpYmRpciAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJICBhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfStoICR7d2x9JHNvbmFtZSAke3dsfStiICR7d2x9JGluc3RhbGxfbGliZGlyIC1vICRsaWIgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzJworIAkgIDs7CisgCWVzYWMKKyAgICAgICBlbHNlCitAQCAtOTgxMywyMyArMTAzOTYsMzYgQEAgZmkKKyAKKyAgICAgaXJpeDUqIHwgaXJpeDYqIHwgbm9uc3RvcHV4KikKKyAgICAgICBpZiB0ZXN0ICIkR0NDIiA9IHllczsgdGhlbgorLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworKwlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKyAJIyBUcnkgdG8gdXNlIHRoZSAtZXhwb3J0ZWRfc3ltYm9sIGxkIG9wdGlvbiwgaWYgaXQgZG9lcyBub3QKKyAJIyB3b3JrLCBhc3N1bWUgdGhhdCAtZXhwb3J0c19maWxlIGRvZXMgbm90IHdvcmsgZWl0aGVyIGFuZAorIAkjIGltcGxpY2l0bHkgZXhwb3J0IGFsbCBzeW1ib2xzLgorLSAgICAgICAgc2F2ZV9MREZMQUdTPSIkTERGTEFHUyIKKy0gICAgICAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKy0gICAgICAgIGNhdCBjb25mZGVmcy5oIC0gPDxfQUNFT0YgPmNvbmZ0ZXN0LiRhY19leHQKKysJIyBUaGlzIHNob3VsZCBiZSB0aGUgc2FtZSBmb3IgYWxsIGxhbmd1YWdlcywgc28gbm8gcGVyLXRhZyBjYWNoZSB2YXJpYWJsZS4KKysJeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiBjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sIiA+JjUKKyskYXNfZWNob19uICJjaGVja2luZyB3aGV0aGVyIHRoZSAkaG9zdF9vcyBsaW5rZXIgYWNjZXB0cyAtZXhwb3J0ZWRfc3ltYm9sLi4uICIgPiY2OyB9CisraWYgJHtsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCs6fSBmYWxzZTsgdGhlbiA6CisrICAkYXNfZWNob19uICIoY2FjaGVkKSAiID4mNgorK2Vsc2UKKysgIHNhdmVfTERGTEFHUz0iJExERkxBR1MiCisrCSAgIExERkxBR1M9IiRMREZMQUdTIC1zaGFyZWQgJHt3bH0tZXhwb3J0ZWRfc3ltYm9sICR7d2x9Zm9vICR7d2x9LXVwZGF0ZV9yZWdpc3RyeSAke3dsfS9kZXYvbnVsbCIKKysJICAgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKy1pbnQgZm9vKHZvaWQpIHt9CisraW50IGZvbyAodm9pZCkgeyByZXR1cm4gMDsgfQorIF9BQ0VPRgorIGlmIGFjX2ZuX2NfdHJ5X2xpbmsgIiRMSU5FTk8iOyB0aGVuIDoKKy0gIGFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKy0KKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPXllcworK2Vsc2UKKysgIGx0X2N2X2lyaXhfZXhwb3J0ZWRfc3ltYm9sPW5vCisgZmkKKyBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgY29uZnRlc3QkYWNfZXhlZXh0IGNvbmZ0ZXN0LiRhY19leHQKKy0gICAgICAgIExERkxBR1M9IiRzYXZlX0xERkxBR1MiCisrICAgICAgICAgICBMREZMQUdTPSIkc2F2ZV9MREZMQUdTIgorK2ZpCisreyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY1CisrJGFzX2VjaG8gIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPiY2OyB9CisrCWlmIHRlc3QgIiRsdF9jdl9pcml4X2V4cG9ydGVkX3N5bWJvbCIgPSB5ZXM7IHRoZW4KKysgICAgICAgICAgYXJjaGl2ZV9leHBzeW1fY21kcz0nJENDIC1zaGFyZWQgJHBpY19mbGFnICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAke3dsfS1leHBvcnRzX2ZpbGUgJHt3bH0kZXhwb3J0X3N5bWJvbHMgLW8gJGxpYicKKysJZmkKKyAgICAgICBlbHNlCisgCWFyY2hpdmVfY21kcz0nJENDIC1zaGFyZWQgJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzIC1zb25hbWUgJHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiLXNldF92ZXJzaW9uICR2ZXJzdHJpbmciYCAtdXBkYXRlX3JlZ2lzdHJ5ICR7b3V0cHV0X29iamRpcn0vc29fbG9jYXRpb25zIC1vICRsaWInCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9JyRDQyAtc2hhcmVkICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncyAtc29uYW1lICRzb25hbWUgYHRlc3QgLW4gIiR2ZXJzdHJpbmciICYmIGZ1bmNfZWNob19hbGwgIi1zZXRfdmVyc2lvbiAkdmVyc3RyaW5nImAgLXVwZGF0ZV9yZWdpc3RyeSAke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtZXhwb3J0c19maWxlICRleHBvcnRfc3ltYm9scyAtbyAkbGliJworQEAgLTk5MTQsNyArMTA1MTAsNyBAQCBybSAtZiBjb3JlIGNvbmZ0ZXN0LmVyciBjb25mdGVzdC4kYWNfb2JqZXh0IFwKKyAgICAgb3NmNCogfCBvc2Y1KikJIyBhcyBvc2YzKiB3aXRoIHRoZSBhZGRpdGlvbiBvZiAtbXN5bSBmbGFnCisgICAgICAgaWYgdGVzdCAiJEdDQyIgPSB5ZXM7IHRoZW4KKyAJYWxsb3dfdW5kZWZpbmVkX2ZsYWc9JyAke3dsfS1leHBlY3RfdW5yZXNvbHZlZCAke3dsfVwqJworLQlhcmNoaXZlX2NtZHM9JyRDQyAtc2hhcmVkJHthbGxvd191bmRlZmluZWRfZmxhZ30gJGxpYm9ianMgJGRlcGxpYnMgJGNvbXBpbGVyX2ZsYWdzICR7d2x9LW1zeW0gJHt3bH0tc29uYW1lICR7d2x9JHNvbmFtZSBgdGVzdCAtbiAiJHZlcnN0cmluZyIgJiYgZnVuY19lY2hvX2FsbCAiJHt3bH0tc2V0X3ZlcnNpb24gJHt3bH0kdmVyc3RyaW5nImAgJHt3bH0tdXBkYXRlX3JlZ2lzdHJ5ICR7d2x9JHtvdXRwdXRfb2JqZGlyfS9zb19sb2NhdGlvbnMgLW8gJGxpYicKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCR7YWxsb3dfdW5kZWZpbmVkX2ZsYWd9ICRwaWNfZmxhZyAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MgJHt3bH0tbXN5bSAke3dsfS1zb25hbWUgJHt3bH0kc29uYW1lIGB0ZXN0IC1uICIkdmVyc3RyaW5nIiAmJiBmdW5jX2VjaG9fYWxsICIke3dsfS1zZXRfdmVyc2lvbiAke3dsfSR2ZXJzdHJpbmciYCAke3dsfS11cGRhdGVfcmVnaXN0cnkgJHt3bH0ke291dHB1dF9vYmpkaXJ9L3NvX2xvY2F0aW9ucyAtbyAkbGliJworIAloYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjPScke3dsfS1ycGF0aCAke3dsfSRsaWJkaXInCisgICAgICAgZWxzZQorIAlhbGxvd191bmRlZmluZWRfZmxhZz0nIC1leHBlY3RfdW5yZXNvbHZlZCBcKicKK0BAIC05OTMzLDkgKzEwNTI5LDkgQEAgcm0gLWYgY29yZSBjb25mdGVzdC5lcnIgY29uZnRlc3QuJGFjX29iamV4dCBcCisgICAgICAgbm9fdW5kZWZpbmVkX2ZsYWc9JyAteiBkZWZzJworICAgICAgIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgCXdsYXJjPScke3dsfScKKy0JYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1oICR7d2x9JHNvbmFtZSAtbyAkbGliICRsaWJvYmpzICRkZXBsaWJzICRjb21waWxlcl9mbGFncycKKysJYXJjaGl2ZV9jbWRzPSckQ0MgLXNoYXJlZCAkcGljX2ZsYWcgJHt3bH0teiAke3dsfXRleHQgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3MnCisgCWFyY2hpdmVfZXhwc3ltX2NtZHM9J2VjaG8gInsgZ2xvYmFsOiIgPiAkbGliLmV4cH5jYXQgJGV4cG9ydF9zeW1ib2xzIHwgJFNFRCAtZSAicy9cKC4qXCkvXDE7LyIgPj4gJGxpYi5leHB+ZWNobyAibG9jYWw6ICo7IH07IiA+PiAkbGliLmV4cH4KKy0JICAkQ0MgLXNoYXJlZCAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworKwkgICRDQyAtc2hhcmVkICRwaWNfZmxhZyAke3dsfS16ICR7d2x9dGV4dCAke3dsfS1NICR7d2x9JGxpYi5leHAgJHt3bH0taCAke3dsfSRzb25hbWUgLW8gJGxpYiAkbGlib2JqcyAkZGVwbGlicyAkY29tcGlsZXJfZmxhZ3N+JFJNICRsaWIuZXhwJworICAgICAgIGVsc2UKKyAJY2FzZSBgJENDIC1WIDI+JjFgIGluCisgCSoiQ29tcGlsZXJzIDUuMCIqKQorQEAgLTEwNTExLDggKzExMTA3LDkgQEAgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKQorICAgbmVlZF92ZXJzaW9uPW5vCisgICBuZWVkX2xpYl9wcmVmaXg9bm8KKyAKKy0gIGNhc2UgJEdDQywkaG9zdF9vcyBpbgorLSAgeWVzLGN5Z3dpbiogfCB5ZXMsbWluZ3cqIHwgeWVzLHB3MzIqIHwgeWVzLGNlZ2NjKikKKysgIGNhc2UgJEdDQywkY2NfYmFzZW5hbWUgaW4KKysgIHllcywqKQorKyAgICAjIGdjYworICAgICBsaWJyYXJ5X25hbWVzX3NwZWM9JyRsaWJuYW1lLmRsbC5hJworICAgICAjIERMTCBpcyBpbnN0YWxsZWQgdG8gJChsaWJkaXIpLy4uL2JpbiBieSBwb3N0aW5zdGFsbF9jbWRzCisgICAgIHBvc3RpbnN0YWxsX2NtZHM9J2Jhc2VfZmlsZT1gYmFzZW5hbWUgXCR7ZmlsZX1gfgorQEAgLTEwNTQ1LDEzICsxMTE0Miw3MSBAQCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopCisgICAgICAgbGlicmFyeV9uYW1lc19zcGVjPSdgZWNobyAke2xpYm5hbWV9IHwgc2VkIC1lICdzL15saWIvcHcvJ2BgZWNobyAke3JlbGVhc2V9IHwgJFNFRCAtZSAncy9bLl0vLS9nJ2Ake3ZlcnN1ZmZpeH0ke3NoYXJlZF9leHR9JworICAgICAgIDs7CisgICAgIGVzYWMKKysgICAgZHluYW1pY19saW5rZXI9J1dpbjMyIGxkLmV4ZScKKysgICAgOzsKKysKKysgICosY2wqKQorKyAgICAjIE5hdGl2ZSBNU1ZDCisrICAgIGxpYm5hbWVfc3BlYz0nJG5hbWUnCisrICAgIHNvbmFtZV9zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fScKKysgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9LmRsbC5saWInCisrCisrICAgIGNhc2UgJGJ1aWxkX29zIGluCisrICAgIG1pbmd3KikKKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9CisrICAgICAgbHRfc2F2ZV9pZnM9JElGUworKyAgICAgIElGUz0nOycKKysgICAgICBmb3IgbHRfcGF0aCBpbiAkTElCCisrICAgICAgZG8KKysgICAgICAgIElGUz0kbHRfc2F2ZV9pZnMKKysgICAgICAgICMgTGV0IERPUyB2YXJpYWJsZSBleHBhbnNpb24gcHJpbnQgdGhlIHNob3J0IDguMyBzdHlsZSBmaWxlIG5hbWUuCisrICAgICAgICBsdF9wYXRoPWBjZCAiJGx0X3BhdGgiIDI+L2Rldi9udWxsICYmIGNtZCAvL0MgImZvciAlaSBpbiAoIi4iKSBkbyBAZWNobyAlfnNpImAKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyAkbHRfcGF0aCIKKysgICAgICBkb25lCisrICAgICAgSUZTPSRsdF9zYXZlX2lmcworKyAgICAgICMgQ29udmVydCB0byBNU1lTIHN0eWxlLgorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgc2VkIC1lICdzfFxcXFx8L3xnJyAtZSAnc3wgXFwoW2EtekEtWl1cXCk6fCAvXFwxfGcnIC1lICdzfF4gfHwnYAorKyAgICAgIDs7CisrICAgIGN5Z3dpbiopCisrICAgICAgIyBDb252ZXJ0IHRvIHVuaXggZm9ybSwgdGhlbiB0byBkb3MgZm9ybSwgdGhlbiBiYWNrIHRvIHVuaXggZm9ybQorKyAgICAgICMgYnV0IHRoaXMgdGltZSBkb3Mgc3R5bGUgKG5vIHNwYWNlcyEpIHNvIHRoYXQgdGhlIHVuaXggZm9ybSBsb29rcworKyAgICAgICMgbGlrZSAvY3lnZHJpdmUvYy9QUk9HUkF+MTovY3lnZHIuLi4KKysgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YGN5Z3BhdGggLS1wYXRoIC0tdW5peCAiJExJQiJgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLWRvcyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgMj4vZGV2L251bGxgCisrICAgICAgc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjPWBjeWdwYXRoIC0tcGF0aCAtLXVuaXggIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICA7OworKyAgICAqKQorKyAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz0iJExJQiIKKysgICAgICBpZiAkRUNITyAiJHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYyIgfCAkR1JFUCAnO1tjLXpDLVpdOi8nID4vZGV2L251bGw7IHRoZW4KKysgICAgICAgICMgSXQgaXMgbW9zdCBwcm9iYWJseSBhIFdpbmRvd3MgZm9ybWF0IFBBVEguCisrICAgICAgICBzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWM9YCRFQ0hPICIkc3lzX2xpYl9zZWFyY2hfcGF0aF9zcGVjIiB8ICRTRUQgLWUgJ3MvOy8gL2cnYAorKyAgICAgIGVsc2UKKysgICAgICAgIHN5c19saWJfc2VhcmNoX3BhdGhfc3BlYz1gJEVDSE8gIiRzeXNfbGliX3NlYXJjaF9wYXRoX3NwZWMiIHwgJFNFRCAtZSAicy8kUEFUSF9TRVBBUkFUT1IvIC9nImAKKysgICAgICBmaQorKyAgICAgICMgRklYTUU6IGZpbmQgdGhlIHNob3J0IG5hbWUgb3IgdGhlIHBhdGggY29tcG9uZW50cywgYXMgc3BhY2VzIGFyZQorKyAgICAgICMgY29tbW9uLiAoZS5nLiAiUHJvZ3JhbSBGaWxlcyIgLT4gIlBST0dSQX4xIikKKysgICAgICA7OworKyAgICBlc2FjCisrCisrICAgICMgRExMIGlzIGluc3RhbGxlZCB0byAkKGxpYmRpcikvLi4vYmluIGJ5IHBvc3RpbnN0YWxsX2NtZHMKKysgICAgcG9zdGluc3RhbGxfY21kcz0nYmFzZV9maWxlPWBiYXNlbmFtZSBcJHtmaWxlfWB+CisrICAgICAgZGxwYXRoPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZGlyLydcJydcJHtiYXNlX2ZpbGV9J1wnJ2k7IGVjaG8gXCRkbG5hbWUnXCcnYH4KKysgICAgICBkbGRpcj0kZGVzdGRpci9gZGlybmFtZSBcJGRscGF0aGB+CisrICAgICAgdGVzdCAtZCBcJGRsZGlyIHx8IG1rZGlyIC1wIFwkZGxkaXJ+CisrICAgICAgJGluc3RhbGxfcHJvZyAkZGlyLyRkbG5hbWUgXCRkbGRpci8kZGxuYW1lJworKyAgICBwb3N0dW5pbnN0YWxsX2NtZHM9J2RsZGxsPWAkU0hFTEwgMj4mMSAtYyAnXCcnLiAkZmlsZTsgZWNobyBcJGRsbmFtZSdcJydgfgorKyAgICAgIGRscGF0aD0kZGlyL1wkZGxkbGx+CisrICAgICAgICRSTSBcJGRscGF0aCcKKysgICAgc2hsaWJwYXRoX292ZXJyaWRlc19ydW5wYXRoPXllcworKyAgICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGluay5leGUnCisgICAgIDs7CisgCisgICAqKQorKyAgICAjIEFzc3VtZSBNU1ZDIHdyYXBwZXIKKyAgICAgbGlicmFyeV9uYW1lc19zcGVjPScke2xpYm5hbWV9YGVjaG8gJHtyZWxlYXNlfSB8ICRTRUQgLWUgJ3MvWy5dLy0vZydgJHt2ZXJzdWZmaXh9JHtzaGFyZWRfZXh0fSAkbGlibmFtZS5saWInCisrICAgIGR5bmFtaWNfbGlua2VyPSdXaW4zMiBsZC5leGUnCisgICAgIDs7CisgICBlc2FjCistICBkeW5hbWljX2xpbmtlcj0nV2luMzIgbGQuZXhlJworICAgIyBGSVhNRTogZmlyc3Qgd2Ugc2hvdWxkIHNlYXJjaCAuIGFuZCB0aGUgZGlyZWN0b3J5IHRoZSBleGVjdXRhYmxlIGlzIGluCisgICBzaGxpYnBhdGhfdmFyPVBBVEgKKyAgIDs7CitAQCAtMTA2NDMsNyArMTEyOTgsNyBAQCBoYWlrdSopCisgICBzb25hbWVfc3BlYz0nJHtsaWJuYW1lfSR7cmVsZWFzZX0ke3NoYXJlZF9leHR9JG1ham9yJworICAgc2hsaWJwYXRoX3Zhcj1MSUJSQVJZX1BBVEgKKyAgIHNobGlicGF0aF9vdmVycmlkZXNfcnVucGF0aD15ZXMKKy0gIHN5c19saWJfZGxzZWFyY2hfcGF0aF9zcGVjPScvYm9vdC9ob21lL2NvbmZpZy9saWIgL2Jvb3QvY29tbW9uL2xpYiAvYm9vdC9iZW9zL3N5c3RlbS9saWInCisrICBzeXNfbGliX2Rsc2VhcmNoX3BhdGhfc3BlYz0nL2Jvb3QvaG9tZS9jb25maWcvbGliIC9ib290L2NvbW1vbi9saWIgL2Jvb3Qvc3lzdGVtL2xpYicKKyAgIGhhcmRjb2RlX2ludG9fbGlicz15ZXMKKyAgIDs7CisgCitAQCAtMTE0MzksNyArMTIwOTQsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTQ0MiAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTE0ODMsMTAgKzEyMTM4LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTE1NDUsNyArMTIyMDAsNyBAQCBlbHNlCisgICBsdF9kbHVua25vd249MDsgbHRfZGxub191c2NvcmU9MTsgbHRfZGxuZWVkX3VzY29yZT0yCisgICBsdF9zdGF0dXM9JGx0X2RsdW5rbm93bgorICAgY2F0ID4gY29uZnRlc3QuJGFjX2V4dCA8PF9MVF9FT0YKKy0jbGluZSAxMTU0OCAiY29uZmlndXJlIgorKyNsaW5lICRMSU5FTk8gImNvbmZpZ3VyZSIKKyAjaW5jbHVkZSAiY29uZmRlZnMuaCIKKyAKKyAjaWYgSEFWRV9ETEZDTl9ICitAQCAtMTE1ODksMTAgKzEyMjQ0LDEwIEBAIGVsc2UKKyAvKiBXaGVuIC1mdmlzYmlsaXR5PWhpZGRlbiBpcyB1c2VkLCBhc3N1bWUgdGhlIGNvZGUgaGFzIGJlZW4gYW5ub3RhdGVkCisgICAgY29ycmVzcG9uZGluZ2x5IGZvciB0aGUgc3ltYm9scyBuZWVkZWQuICAqLworICNpZiBkZWZpbmVkKF9fR05VQ19fKSAmJiAoKChfX0dOVUNfXyA9PSAzKSAmJiAoX19HTlVDX01JTk9SX18gPj0gMykpIHx8IChfX0dOVUNfXyA+IDMpKQorLXZvaWQgZm5vcmQgKCkgX19hdHRyaWJ1dGVfXygodmlzaWJpbGl0eSgiZGVmYXVsdCIpKSk7CisraW50IGZub3JkICgpIF9fYXR0cmlidXRlX18oKHZpc2liaWxpdHkoImRlZmF1bHQiKSkpOworICNlbmRpZgorIAorLXZvaWQgZm5vcmQgKCkgeyBpbnQgaT00MjsgfQorK2ludCBmbm9yZCAoKSB7IHJldHVybiA0MjsgfQorIGludCBtYWluICgpCisgeworICAgdm9pZCAqc2VsZiA9IGRsb3BlbiAoMCwgTFRfRExHTE9CQUx8TFRfRExMQVpZX09SX05PVyk7CitAQCAtMTM3NTYsMTMgKzE0NDExLDIwIEBAIGV4ZWV4dD0nYCRFQ0hPICIkZXhlZXh0IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF91bnNldD0nYCRFQ0hPICIkbHRfdW5zZXQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X1NQMk5MPSdgJEVDSE8gIiRsdF9TUDJOTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfTkwyU1A9J2AkRUNITyAiJGx0X05MMlNQIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b19ob3N0X2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b19ob3N0X2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKytsdF9jdl90b190b29sX2ZpbGVfY21kPSdgJEVDSE8gIiRsdF9jdl90b190b29sX2ZpbGVfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyByZWxvYWRfZmxhZz0nYCRFQ0hPICIkcmVsb2FkX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIHJlbG9hZF9jbWRzPSdgJEVDSE8gIiRyZWxvYWRfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgT0JKRFVNUD0nYCRFQ0hPICIkT0JKRFVNUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZGVwbGlic19jaGVja19tZXRob2Q9J2AkRUNITyAiJGRlcGxpYnNfY2hlY2tfbWV0aG9kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBmaWxlX21hZ2ljX2NtZD0nYCRFQ0hPICIkZmlsZV9tYWdpY19jbWQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK2ZpbGVfbWFnaWNfZ2xvYj0nYCRFQ0hPICIkZmlsZV9tYWdpY19nbG9iIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyt3YW50X25vY2FzZWdsb2I9J2AkRUNITyAiJHdhbnRfbm9jYXNlZ2xvYiIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrRExMVE9PTD0nYCRFQ0hPICIkRExMVE9PTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQ9J2AkRUNITyAiJHNoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBBUj0nYCRFQ0hPICIkQVIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIEFSX0ZMQUdTPSdgJEVDSE8gIiRBUl9GTEFHUyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSdgJEVDSE8gIiRhcmNoaXZlcl9saXN0X3NwZWMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIFNUUklQPSdgJEVDSE8gIiRTVFJJUCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgUkFOTElCPSdgJEVDSE8gIiRSQU5MSUIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG9sZF9wb3N0aW5zdGFsbF9jbWRzPSdgJEVDSE8gIiRvbGRfcG9zdGluc3RhbGxfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCitAQCAtMTM3NzcsMTQgKzE0NDM5LDE3IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGU9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUiIHwgJFNFRCAiJGRlCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY2RlY2w9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcz0nYCRFQ0hPICIkbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9J2AkRUNITyAiJGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK25tX2ZpbGVfbGlzdF9zcGVjPSdgJEVDSE8gIiRubV9maWxlX2xpc3Rfc3BlYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfc3lzcm9vdD0nYCRFQ0hPICIkbHRfc3lzcm9vdCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgb2JqZGlyPSdgJEVDSE8gIiRvYmpkaXIiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIE1BR0lDX0NNRD0nYCRFQ0hPICIkTUFHSUNfQ01EIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9wcm9nX2NvbXBpbGVyX25vX2J1aWx0aW5fZmxhZz0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl9ub19idWlsdGluX2ZsYWciIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworLWx0X3Byb2dfY29tcGlsZXJfd2w9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfd2wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGx0X3Byb2dfY29tcGlsZXJfcGljPSdgJEVDSE8gIiRsdF9wcm9nX2NvbXBpbGVyX3BpYyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrbHRfcHJvZ19jb21waWxlcl93bD0nYCRFQ0hPICIkbHRfcHJvZ19jb21waWxlcl93bCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWM9J2AkRUNITyAiJGx0X3Byb2dfY29tcGlsZXJfc3RhdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsdF9jdl9wcm9nX2NvbXBpbGVyX2Nfbz0nYCRFQ0hPICIkbHRfY3ZfcHJvZ19jb21waWxlcl9jX28iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbG9ja3M9J2AkRUNITyAiJG5lZWRfbG9ja3MiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworK01BTklGRVNUX1RPT0w9J2AkRUNITyAiJE1BTklGRVNUX1RPT0wiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIERTWU1VVElMPSdgJEVDSE8gIiREU1lNVVRJTCIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgTk1FRElUPSdgJEVDSE8gIiROTUVESVQiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIExJUE89J2AkRUNITyAiJExJUE8iIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworQEAgLTEzODE3LDEyICsxNDQ4MiwxMiBAQCBoYXJkY29kZV9zaGxpYnBhdGhfdmFyPSdgJEVDSE8gIiRoYXJkY29kZV9zaGxpYnBhdGhfdmFyIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcQorIGhhcmRjb2RlX2F1dG9tYXRpYz0nYCRFQ0hPICIkaGFyZGNvZGVfYXV0b21hdGljIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBpbmhlcml0X3JwYXRoPSdgJEVDSE8gIiRpbmhlcml0X3JwYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBsaW5rX2FsbF9kZXBsaWJzPSdgJEVDSE8gIiRsaW5rX2FsbF9kZXBsaWJzIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKy1maXhfc3JjZmlsZV9wYXRoPSdgJEVDSE8gIiRmaXhfc3JjZmlsZV9wYXRoIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBhbHdheXNfZXhwb3J0X3N5bWJvbHM9J2AkRUNITyAiJGFsd2F5c19leHBvcnRfc3ltYm9scyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhwb3J0X3N5bWJvbHNfY21kcz0nYCRFQ0hPICIkZXhwb3J0X3N5bWJvbHNfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZXhjbHVkZV9leHBzeW1zPSdgJEVDSE8gIiRleGNsdWRlX2V4cHN5bXMiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIGluY2x1ZGVfZXhwc3ltcz0nYCRFQ0hPICIkaW5jbHVkZV9leHBzeW1zIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyBwcmVsaW5rX2NtZHM9J2AkRUNITyAiJHByZWxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisrcG9zdGxpbmtfY21kcz0nYCRFQ0hPICIkcG9zdGxpbmtfY21kcyIgfCAkU0VEICIkZGVsYXlfc2luZ2xlX3F1b3RlX3N1YnN0ImAnCisgZmlsZV9saXN0X3NwZWM9J2AkRUNITyAiJGZpbGVfbGlzdF9zcGVjIiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKKyB2YXJpYWJsZXNfc2F2ZWRfZm9yX3JlbGluaz0nYCRFQ0hPICIkdmFyaWFibGVzX3NhdmVkX2Zvcl9yZWxpbmsiIHwgJFNFRCAiJGRlbGF5X3NpbmdsZV9xdW90ZV9zdWJzdCJgJworIG5lZWRfbGliX3ByZWZpeD0nYCRFQ0hPICIkbmVlZF9saWJfcHJlZml4IiB8ICRTRUQgIiRkZWxheV9zaW5nbGVfcXVvdGVfc3Vic3QiYCcKK0BAIC0xMzg3Nyw4ICsxNDU0MiwxMyBAQCByZWxvYWRfZmxhZyBcCisgT0JKRFVNUCBcCisgZGVwbGlic19jaGVja19tZXRob2QgXAorIGZpbGVfbWFnaWNfY21kIFwKKytmaWxlX21hZ2ljX2dsb2IgXAorK3dhbnRfbm9jYXNlZ2xvYiBcCisrRExMVE9PTCBcCisrc2hhcmVkbGliX2Zyb21fbGlua2xpYl9jbWQgXAorIEFSIFwKKyBBUl9GTEFHUyBcCisrYXJjaGl2ZXJfbGlzdF9zcGVjIFwKKyBTVFJJUCBcCisgUkFOTElCIFwKKyBDQyBcCitAQCAtMTM4ODgsMTIgKzE0NTU4LDE0IEBAIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3BpcGUgXAorIGx0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NkZWNsIFwKKyBsdF9jdl9zeXNfZ2xvYmFsX3N5bWJvbF90b19jX25hbWVfYWRkcmVzcyBcCisgbHRfY3Zfc3lzX2dsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3NfbGliX3ByZWZpeCBcCisrbm1fZmlsZV9saXN0X3NwZWMgXAorIGx0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnIFwKKy1sdF9wcm9nX2NvbXBpbGVyX3dsIFwKKyBsdF9wcm9nX2NvbXBpbGVyX3BpYyBcCisrbHRfcHJvZ19jb21waWxlcl93bCBcCisgbHRfcHJvZ19jb21waWxlcl9zdGF0aWMgXAorIGx0X2N2X3Byb2dfY29tcGlsZXJfY19vIFwKKyBuZWVkX2xvY2tzIFwKKytNQU5JRkVTVF9UT09MIFwKKyBEU1lNVVRJTCBcCisgTk1FRElUIFwKKyBMSVBPIFwKK0BAIC0xMzkwOSw3ICsxNDU4MSw2IEBAIG5vX3VuZGVmaW5lZF9mbGFnIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIFwKKyBoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjX2xkIFwKKyBoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIFwKKy1maXhfc3JjZmlsZV9wYXRoIFwKKyBleGNsdWRlX2V4cHN5bXMgXAorIGluY2x1ZGVfZXhwc3ltcyBcCisgZmlsZV9saXN0X3NwZWMgXAorQEAgLTEzOTQ1LDYgKzE0NjE2LDcgQEAgbW9kdWxlX2NtZHMgXAorIG1vZHVsZV9leHBzeW1fY21kcyBcCisgZXhwb3J0X3N5bWJvbHNfY21kcyBcCisgcHJlbGlua19jbWRzIFwKKytwb3N0bGlua19jbWRzIFwKKyBwb3N0aW5zdGFsbF9jbWRzIFwKKyBwb3N0dW5pbnN0YWxsX2NtZHMgXAorIGZpbmlzaF9jbWRzIFwKK0BAIC0xNDcxMCw3ICsxNTM4Miw4IEBAICRhc19lY2hvIFgiJGZpbGUiIHwKKyAjIE5PVEU6IENoYW5nZXMgbWFkZSB0byB0aGlzIGZpbGUgd2lsbCBiZSBsb3N0OiBsb29rIGF0IGx0bWFpbi5zaC4KKyAjCisgIyAgIENvcHlyaWdodCAoQykgMTk5NiwgMTk5NywgMTk5OCwgMTk5OSwgMjAwMCwgMjAwMSwgMjAwMywgMjAwNCwgMjAwNSwKKy0jICAgICAgICAgICAgICAgICAyMDA2LCAyMDA3LCAyMDA4LCAyMDA5IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorKyMgICAgICAgICAgICAgICAgIDIwMDYsIDIwMDcsIDIwMDgsIDIwMDksIDIwMTAgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLAorKyMgICAgICAgICAgICAgICAgIEluYy4KKyAjICAgV3JpdHRlbiBieSBHb3Jkb24gTWF0emlna2VpdCwgMTk5NgorICMKKyAjICAgVGhpcyBmaWxlIGlzIHBhcnQgb2YgR05VIExpYnRvb2wuCitAQCAtMTQ4MTMsMTkgKzE1NDg2LDQyIEBAIFNQMk5MPSRsdF9sdF9TUDJOTAorICMgdHVybiBuZXdsaW5lcyBpbnRvIHNwYWNlcy4KKyBOTDJTUD0kbHRfbHRfTkwyU1AKKyAKKysjIGNvbnZlcnQgXCRidWlsZCBmaWxlIG5hbWVzIHRvIFwkaG9zdCBmb3JtYXQuCisrdG9faG9zdF9maWxlX2NtZD0kbHRfY3ZfdG9faG9zdF9maWxlX2NtZAorKworKyMgY29udmVydCBcJGJ1aWxkIGZpbGVzIHRvIHRvb2xjaGFpbiBmb3JtYXQuCisrdG9fdG9vbF9maWxlX2NtZD0kbHRfY3ZfdG9fdG9vbF9maWxlX2NtZAorKworICMgQW4gb2JqZWN0IHN5bWJvbCBkdW1wZXIuCisgT0JKRFVNUD0kbHRfT0JKRFVNUAorIAorICMgTWV0aG9kIHRvIGNoZWNrIHdoZXRoZXIgZGVwZW5kZW50IGxpYnJhcmllcyBhcmUgc2hhcmVkIG9iamVjdHMuCisgZGVwbGlic19jaGVja19tZXRob2Q9JGx0X2RlcGxpYnNfY2hlY2tfbWV0aG9kCisgCistIyBDb21tYW5kIHRvIHVzZSB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID09ICJmaWxlX21hZ2ljIi4KKysjIENvbW1hbmQgdG8gdXNlIHdoZW4gZGVwbGlic19jaGVja19tZXRob2QgPSAiZmlsZV9tYWdpYyIuCisgZmlsZV9tYWdpY19jbWQ9JGx0X2ZpbGVfbWFnaWNfY21kCisgCisrIyBIb3cgdG8gZmluZCBwb3RlbnRpYWwgZmlsZXMgd2hlbiBkZXBsaWJzX2NoZWNrX21ldGhvZCA9ICJmaWxlX21hZ2ljIi4KKytmaWxlX21hZ2ljX2dsb2I9JGx0X2ZpbGVfbWFnaWNfZ2xvYgorKworKyMgRmluZCBwb3RlbnRpYWwgZmlsZXMgdXNpbmcgbm9jYXNlZ2xvYiB3aGVuIGRlcGxpYnNfY2hlY2tfbWV0aG9kID0gImZpbGVfbWFnaWMiLgorK3dhbnRfbm9jYXNlZ2xvYj0kbHRfd2FudF9ub2Nhc2VnbG9iCisrCisrIyBETEwgY3JlYXRpb24gcHJvZ3JhbS4KKytETExUT09MPSRsdF9ETExUT09MCisrCisrIyBDb21tYW5kIHRvIGFzc29jaWF0ZSBzaGFyZWQgYW5kIGxpbmsgbGlicmFyaWVzLgorK3NoYXJlZGxpYl9mcm9tX2xpbmtsaWJfY21kPSRsdF9zaGFyZWRsaWJfZnJvbV9saW5rbGliX2NtZAorKworICMgVGhlIGFyY2hpdmVyLgorIEFSPSRsdF9BUgorKworKyMgRmxhZ3MgdG8gY3JlYXRlIGFuIGFyY2hpdmUuCisgQVJfRkxBR1M9JGx0X0FSX0ZMQUdTCisgCisrIyBIb3cgdG8gZmVlZCBhIGZpbGUgbGlzdGluZyB0byB0aGUgYXJjaGl2ZXIuCisrYXJjaGl2ZXJfbGlzdF9zcGVjPSRsdF9hcmNoaXZlcl9saXN0X3NwZWMKKysKKyAjIEEgc3ltYm9sIHN0cmlwcGluZyBwcm9ncmFtLgorIFNUUklQPSRsdF9TVFJJUAorIAorQEAgLTE0ODU1LDYgKzE1NTUxLDEyIEBAIGdsb2JhbF9zeW1ib2xfdG9fY19uYW1lX2FkZHJlc3M9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzCisgIyBUcmFuc2Zvcm0gdGhlIG91dHB1dCBvZiBubSBpbiBhIEMgbmFtZSBhZGRyZXNzIHBhaXIgd2hlbiBsaWIgcHJlZml4IGlzIG5lZWRlZC4KKyBnbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXg9JGx0X2x0X2N2X3N5c19nbG9iYWxfc3ltYm9sX3RvX2NfbmFtZV9hZGRyZXNzX2xpYl9wcmVmaXgKKyAKKysjIFNwZWNpZnkgZmlsZW5hbWUgY29udGFpbmluZyBpbnB1dCBmaWxlcyBmb3IgXCROTS4KKytubV9maWxlX2xpc3Rfc3BlYz0kbHRfbm1fZmlsZV9saXN0X3NwZWMKKysKKysjIFRoZSByb290IHdoZXJlIHRvIHNlYXJjaCBmb3IgZGVwZW5kZW50IGxpYnJhcmllcyxhbmQgaW4gd2hpY2ggb3VyIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkLgorK2x0X3N5c3Jvb3Q9JGx0X3N5c3Jvb3QKKysKKyAjIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkgdGhhdCBjb250YWlucyB0ZW1wb3JhcnkgbGlidG9vbCBmaWxlcy4KKyBvYmpkaXI9JG9iamRpcgorIAorQEAgLTE0ODY0LDYgKzE1NTY2LDkgQEAgTUFHSUNfQ01EPSRNQUdJQ19DTUQKKyAjIE11c3Qgd2UgbG9jayBmaWxlcyB3aGVuIGRvaW5nIGNvbXBpbGF0aW9uPworIG5lZWRfbG9ja3M9JGx0X25lZWRfbG9ja3MKKyAKKysjIE1hbmlmZXN0IHRvb2wuCisrTUFOSUZFU1RfVE9PTD0kbHRfTUFOSUZFU1RfVE9PTAorKworICMgVG9vbCB0byBtYW5pcHVsYXRlIGFyY2hpdmVkIERXQVJGIGRlYnVnIHN5bWJvbCBmaWxlcyBvbiBNYWMgT1MgWC4KKyBEU1lNVVRJTD0kbHRfRFNZTVVUSUwKKyAKK0BAIC0xNDk3OCwxMiArMTU2ODMsMTIgQEAgd2l0aF9nY2M9JEdDQworICMgQ29tcGlsZXIgZmxhZyB0byB0dXJuIG9mZiBidWlsdGluIGZ1bmN0aW9ucy4KKyBub19idWlsdGluX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfbm9fYnVpbHRpbl9mbGFnCisgCistIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorLXdsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCistCisgIyBBZGRpdGlvbmFsIGNvbXBpbGVyIGZsYWdzIGZvciBidWlsZGluZyBsaWJyYXJ5IG9iamVjdHMuCisgcGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfcGljCisgCisrIyBIb3cgdG8gcGFzcyBhIGxpbmtlciBmbGFnIHRocm91Z2ggdGhlIGNvbXBpbGVyLgorK3dsPSRsdF9sdF9wcm9nX2NvbXBpbGVyX3dsCisrCisgIyBDb21waWxlciBmbGFnIHRvIHByZXZlbnQgZHluYW1pYyBsaW5raW5nLgorIGxpbmtfc3RhdGljX2ZsYWc9JGx0X2x0X3Byb2dfY29tcGlsZXJfc3RhdGljCisgCitAQCAtMTUwNzAsOSArMTU3NzUsNiBAQCBpbmhlcml0X3JwYXRoPSRpbmhlcml0X3JwYXRoCisgIyBXaGV0aGVyIGxpYnRvb2wgbXVzdCBsaW5rIGEgcHJvZ3JhbSBhZ2FpbnN0IGFsbCBpdHMgZGVwZW5kZW5jeSBsaWJyYXJpZXMuCisgbGlua19hbGxfZGVwbGlicz0kbGlua19hbGxfZGVwbGlicworIAorLSMgRml4IHRoZSBzaGVsbCB2YXJpYWJsZSBcJHNyY2ZpbGUgZm9yIHRoZSBjb21waWxlci4KKy1maXhfc3JjZmlsZV9wYXRoPSRsdF9maXhfc3JjZmlsZV9wYXRoCistCisgIyBTZXQgdG8gInllcyIgaWYgZXhwb3J0ZWQgc3ltYm9scyBhcmUgcmVxdWlyZWQuCisgYWx3YXlzX2V4cG9ydF9zeW1ib2xzPSRhbHdheXNfZXhwb3J0X3N5bWJvbHMKKyAKK0BAIC0xNTA4OCw2ICsxNTc5MCw5IEBAIGluY2x1ZGVfZXhwc3ltcz0kbHRfaW5jbHVkZV9leHBzeW1zCisgIyBDb21tYW5kcyBuZWNlc3NhcnkgZm9yIGxpbmtpbmcgcHJvZ3JhbXMgKGFnYWluc3QgbGlicmFyaWVzKSB3aXRoIHRlbXBsYXRlcy4KKyBwcmVsaW5rX2NtZHM9JGx0X3ByZWxpbmtfY21kcworIAorKyMgQ29tbWFuZHMgbmVjZXNzYXJ5IGZvciBmaW5pc2hpbmcgbGlua2luZyBwcm9ncmFtcy4KKytwb3N0bGlua19jbWRzPSRsdF9wb3N0bGlua19jbWRzCisrCisgIyBTcGVjaWZ5IGZpbGVuYW1lIGNvbnRhaW5pbmcgaW5wdXQgZmlsZXMuCisgZmlsZV9saXN0X3NwZWM9JGx0X2ZpbGVfbGlzdF9zcGVjCisgCitAQCAtMTUxMjAsMjEwICsxNTgyNSwxNjkgQEAgbHRtYWluPSIkYWNfYXV4X2Rpci9sdG1haW4uc2giCisgICAjIGlmIGZpbmRzIG1peGVkIENSL0xGIGFuZCBMRi1vbmx5IGxpbmVzLiAgU2luY2Ugc2VkIG9wZXJhdGVzIGluCisgICAjIHRleHQgbW9kZSwgaXQgcHJvcGVybHkgY29udmVydHMgbGluZXMgdG8gQ1IvTEYuICBUaGlzIGJhc2ggcHJvYmxlbQorICAgIyBpcyByZXBvcnRlZGx5IGZpeGVkLCBidXQgd2h5IG5vdCBydW4gb24gb2xkIHZlcnNpb25zIHRvbz8KKy0gIHNlZCAnL14jIEdlbmVyYXRlZCBzaGVsbCBmdW5jdGlvbnMgaW5zZXJ0ZWQgaGVyZS9xJyAiJGx0bWFpbiIgPj4gIiRjZmdmaWxlIiBcCistICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiOyBleGl0IDEpCistCistICBjYXNlICR4c2lfc2hlbGwgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX2Jhc2VuYW1lIGZpbGUKKy1mdW5jX2Jhc2VuYW1lICgpCisteworLSAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IgorLX0KKy0KKy0jIGZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgZmlsZSBhcHBlbmQgbm9uZGlyX3JlcGxhY2VtZW50CistIyBwZXJmb3JtIGZ1bmNfYmFzZW5hbWUgYW5kIGZ1bmNfZGlybmFtZSBpbiBhIHNpbmdsZSBmdW5jdGlvbgorLSMgY2FsbDoKKy0jICAgZGlybmFtZTogIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LAorLSMgICAgICAgICAgICAgYWRkIEFQUEVORCB0byB0aGUgcmVzdWx0LCBvdGhlcndpc2Ugc2V0IHJlc3VsdAorLSMgICAgICAgICAgICAgdG8gTk9ORElSX1JFUExBQ0VNRU5ULgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dXJuZWQgaW4gIiRmdW5jX2Rpcm5hbWVfcmVzdWx0IgorLSMgICBiYXNlbmFtZTogQ29tcHV0ZSBmaWxlbmFtZSBvZiBGSUxFLgorLSMgICAgICAgICAgICAgdmFsdWUgcmV0dW5lZCBpbiAiJGZ1bmNfYmFzZW5hbWVfcmVzdWx0IgorLSMgSW1wbGVtZW50YXRpb24gbXVzdCBiZSBrZXB0IHN5bmNocm9uaXplZCB3aXRoIGZ1bmNfZGlybmFtZQorLSMgYW5kIGZ1bmNfYmFzZW5hbWUuIEZvciBlZmZpY2llbmN5LCB3ZSBkbyBub3QgZGVsZWdhdGUgdG8KKy0jIHRob3NlIGZ1bmN0aW9ucyBidXQgaW5zdGVhZCBkdXBsaWNhdGUgdGhlIGZ1bmN0aW9uYWxpdHkgaGVyZS4KKy1mdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lICgpCisteworLSAgY2FzZSAkezF9IGluCistICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7CistICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOzsKKy0gIGVzYWMKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PSIkezEjIyovfSIKKy19CistCistIyBmdW5jX3N0cmlwbmFtZSBwcmVmaXggc3VmZml4IG5hbWUKKy0jIHN0cmlwIFBSRUZJWCBhbmQgU1VGRklYIG9mZiBvZiBOQU1FLgorLSMgUFJFRklYIGFuZCBTVUZGSVggbXVzdCBub3QgY29udGFpbiBnbG9iYmluZyBvciByZWdleCBzcGVjaWFsCistIyBjaGFyYWN0ZXJzLCBoYXNoZXMsIHBlcmNlbnQgc2lnbnMsIGJ1dCBTVUZGSVggbWF5IGNvbnRhaW4gYSBsZWFkaW5nCistIyBkb3QgKGluIHdoaWNoIGNhc2UgdGhhdCBtYXRjaGVzIG9ubHkgYSBkb3QpLgorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgIyBwZGtzaCA1LjIuMTQgZG9lcyBub3QgZG8gJHtYJSRZfSBjb3JyZWN0bHkgaWYgYm90aCBYIGFuZCBZIGFyZQorLSAgIyBwb3NpdGlvbmFsIHBhcmFtZXRlcnMsIHNvIGFzc2lnbiBvbmUgdG8gb3JkaW5hcnkgcGFyYW1ldGVyIGZpcnN0LgorLSAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M30KKy0gIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCMiJHsxfSJ9CistICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQlIiR7Mn0ifQorLX0KKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9JHsxJSU9Kn0KKy0gIGZ1bmNfb3B0X3NwbGl0X2FyZz0kezEjKj19CistfQorLQorLSMgZnVuY19sbzJvIG9iamVjdAorLWZ1bmNfbG8ybyAoKQorLXsKKy0gIGNhc2UgJHsxfSBpbgorLSAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7OworLSAgICAqKSAgICBmdW5jX2xvMm9fcmVzdWx0PSR7MX0gOzsKKy0gIGVzYWMKKy19CistCistIyBmdW5jX3hmb3JtIGxpYm9iai1vci1zb3VyY2UKKy1mdW5jX3hmb3JtICgpCisteworLSAgZnVuY194Zm9ybV9yZXN1bHQ9JHsxJS4qfS5sbworLX0KKy0KKy0jIGZ1bmNfYXJpdGggYXJpdGhtZXRpYy10ZXJtLi4uCistZnVuY19hcml0aCAoKQorLXsKKy0gIGZ1bmNfYXJpdGhfcmVzdWx0PSQoKCAkKiApKQorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfQorLX0KKy0KKy1fTFRfRU9GCistICAgIDs7CistICAqKSAjIEJvdXJuZSBjb21wYXRpYmxlIGZ1bmN0aW9ucy4KKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfZGlybmFtZSBmaWxlIGFwcGVuZCBub25kaXJfcmVwbGFjZW1lbnQKKy0jIENvbXB1dGUgdGhlIGRpcm5hbWUgb2YgRklMRS4gIElmIG5vbmVtcHR5LCBhZGQgQVBQRU5EIHRvIHRoZSByZXN1bHQsCistIyBvdGhlcndpc2Ugc2V0IHJlc3VsdCB0byBOT05ESVJfUkVQTEFDRU1FTlQuCistZnVuY19kaXJuYW1lICgpCisteworLSAgIyBFeHRyYWN0IHN1YmRpcmVjdG9yeSBmcm9tIHRoZSBhcmd1bWVudC4KKy0gIGZ1bmNfZGlybmFtZV9yZXN1bHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRkaXJuYW1lImAKKy0gIGlmIHRlc3QgIlgkZnVuY19kaXJuYW1lX3Jlc3VsdCIgPSAiWCR7MX0iOyB0aGVuCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iCistICBlbHNlCistICAgIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiRmdW5jX2Rpcm5hbWVfcmVzdWx0JHsyfSIKKy0gIGZpCistfQorLQorLSMgZnVuY19iYXNlbmFtZSBmaWxlCistZnVuY19iYXNlbmFtZSAoKQorLXsKKy0gIGZ1bmNfYmFzZW5hbWVfcmVzdWx0PWAkRUNITyAiJHsxfSIgfCAkU0VEICIkYmFzZW5hbWUiYAorLX0KKy0KKy0KKy0jIGZ1bmNfc3RyaXBuYW1lIHByZWZpeCBzdWZmaXggbmFtZQorLSMgc3RyaXAgUFJFRklYIGFuZCBTVUZGSVggb2ZmIG9mIE5BTUUuCistIyBQUkVGSVggYW5kIFNVRkZJWCBtdXN0IG5vdCBjb250YWluIGdsb2JiaW5nIG9yIHJlZ2V4IHNwZWNpYWwKKy0jIGNoYXJhY3RlcnMsIGhhc2hlcywgcGVyY2VudCBzaWducywgYnV0IFNVRkZJWCBtYXkgY29udGFpbiBhIGxlYWRpbmcKKy0jIGRvdCAoaW4gd2hpY2ggY2FzZSB0aGF0IG1hdGNoZXMgb25seSBhIGRvdCkuCistIyBmdW5jX3N0cmlwX3N1ZmZpeCBwcmVmaXggbmFtZQorLWZ1bmNfc3RyaXBuYW1lICgpCisteworLSAgY2FzZSAkezJ9IGluCistICAgIC4qKSBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyVcXFxcJHsyfVwkJSUiYDs7CistICAgICopICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9YCRFQ0hPICIkezN9IiB8ICRTRUQgInMlXiR7MX0lJTsgcyUkezJ9XCQlJSJgOzsKKy0gIGVzYWMKKy19CistCistIyBzZWQgc2NyaXB0czoKKy1teV9zZWRfbG9uZ19vcHQ9JzFzL15cKC1bXj1dKlwpPS4qL1wxLztxJworLW15X3NlZF9sb25nX2FyZz0nMXMvXi1bXj1dKj0vLycKKy0KKy0jIGZ1bmNfb3B0X3NwbGl0CistZnVuY19vcHRfc3BsaXQgKCkKKy17CistICBmdW5jX29wdF9zcGxpdF9vcHQ9YCRFQ0hPICIkezF9IiB8ICRTRUQgIiRteV9zZWRfbG9uZ19vcHQiYAorLSAgZnVuY19vcHRfc3BsaXRfYXJnPWAkRUNITyAiJHsxfSIgfCAkU0VEICIkbXlfc2VkX2xvbmdfYXJnImAKKy19CistCistIyBmdW5jX2xvMm8gb2JqZWN0CistZnVuY19sbzJvICgpCisteworLSAgZnVuY19sbzJvX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAiJGxvMm8iYAorLX0KKy0KKy0jIGZ1bmNfeGZvcm0gbGlib2JqLW9yLXNvdXJjZQorLWZ1bmNfeGZvcm0gKCkKKy17CistICBmdW5jX3hmb3JtX3Jlc3VsdD1gJEVDSE8gIiR7MX0iIHwgJFNFRCAncy9cLlteLl0qJC8ubG8vJ2AKKy19CistCistIyBmdW5jX2FyaXRoIGFyaXRobWV0aWMtdGVybS4uLgorLWZ1bmNfYXJpdGggKCkKKy17CistICBmdW5jX2FyaXRoX3Jlc3VsdD1gZXhwciAiJEAiYAorLX0KKy0KKy0jIGZ1bmNfbGVuIHN0cmluZworLSMgU1RSSU5HIG1heSBub3Qgc3RhcnQgd2l0aCBhIGh5cGhlbi4KKy1mdW5jX2xlbiAoKQorLXsKKy0gIGZ1bmNfbGVuX3Jlc3VsdD1gZXhwciAiJDEiIDogIi4qIiAyPi9kZXYvbnVsbCB8fCBlY2hvICRtYXhfY21kX2xlbmAKKy19CistCistX0xUX0VPRgorLWVzYWMKKy0KKy1jYXNlICRsdF9zaGVsbF9hcHBlbmQgaW4KKy0gIHllcykKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDErPVwkMiIKKy19CistX0xUX0VPRgorLSAgICA7OworLSAgKikKKy0gICAgY2F0IDw8IFxfTFRfRU9GID4+ICIkY2ZnZmlsZSIKKy0KKy0jIGZ1bmNfYXBwZW5kIHZhciB2YWx1ZQorLSMgQXBwZW5kIFZBTFVFIHRvIHRoZSBlbmQgb2Ygc2hlbGwgdmFyaWFibGUgVkFSLgorLWZ1bmNfYXBwZW5kICgpCisteworLSAgZXZhbCAiJDE9XCQkMVwkMiIKKy19CistCistX0xUX0VPRgorLSAgICA7OworLSAgZXNhYworLQorLQorLSAgc2VkIC1uICcvXiMgR2VuZXJhdGVkIHNoZWxsIGZ1bmN0aW9ucyBpbnNlcnRlZCBoZXJlLywkcCcgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorLSAgICB8fCAocm0gLWYgIiRjZmdmaWxlIjsgZXhpdCAxKQorLQorLSAgbXYgLWYgIiRjZmdmaWxlIiAiJG9maWxlIiB8fAorKyAgc2VkICckcScgIiRsdG1haW4iID4+ICIkY2ZnZmlsZSIgXAorKyAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSI7IGV4aXQgMSkKKysKKysgIGlmIHRlc3QgeCIkeHNpX3NoZWxsIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2Rpcm5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWUgL2NcCisrZnVuY19kaXJuYW1lICgpXAorK3tcCisrXCAgICBjYXNlICR7MX0gaW5cCisrXCAgICAgICovKikgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHsxJS8qfSR7Mn0iIDs7XAorK1wgICAgICAqICApIGZ1bmNfZGlybmFtZV9yZXN1bHQ9IiR7M30iIDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19iYXNlbmFtZSAoKSQvLC9efSAjIGZ1bmNfYmFzZW5hbWUgL2NcCisrZnVuY19iYXNlbmFtZSAoKVwKKyt7XAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKCkkLywvXn0gIyBmdW5jX2Rpcm5hbWVfYW5kX2Jhc2VuYW1lIC9jXAorK2Z1bmNfZGlybmFtZV9hbmRfYmFzZW5hbWUgKClcCisre1wKKytcICAgIGNhc2UgJHsxfSBpblwKKytcICAgICAgKi8qKSBmdW5jX2Rpcm5hbWVfcmVzdWx0PSIkezElLyp9JHsyfSIgOztcCisrXCAgICAgICogICkgZnVuY19kaXJuYW1lX3Jlc3VsdD0iJHszfSIgOztcCisrXCAgICBlc2FjXAorK1wgICAgZnVuY19iYXNlbmFtZV9yZXN1bHQ9IiR7MSMjKi99IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19kaXJuYW1lX2FuZF9iYXNlbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3RyaXBuYW1lICgpJC8sL159ICMgZnVuY19zdHJpcG5hbWUgL2NcCisrZnVuY19zdHJpcG5hbWUgKClcCisre1wKKytcICAgICMgcGRrc2ggNS4yLjE0IGRvZXMgbm90IGRvICR7WCUkWX0gY29ycmVjdGx5IGlmIGJvdGggWCBhbmQgWSBhcmVcCisrXCAgICAjIHBvc2l0aW9uYWwgcGFyYW1ldGVycywgc28gYXNzaWduIG9uZSB0byBvcmRpbmFyeSBwYXJhbWV0ZXIgZmlyc3QuXAorK1wgICAgZnVuY19zdHJpcG5hbWVfcmVzdWx0PSR7M31cCisrXCAgICBmdW5jX3N0cmlwbmFtZV9yZXN1bHQ9JHtmdW5jX3N0cmlwbmFtZV9yZXN1bHQjIiR7MX0ifVwKKytcICAgIGZ1bmNfc3RyaXBuYW1lX3Jlc3VsdD0ke2Z1bmNfc3RyaXBuYW1lX3Jlc3VsdCUiJHsyfSJ9XAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3N0cmlwbmFtZSBpbXBsZW1lbnRhdGlvbicgIiRjZmdmaWxlIiA+ICRjZmdmaWxlLnRtcCBcCisrICAmJiBtdiAtZiAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiIFwKKysgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKyt0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorKworKworKyAgc2VkIC1lICcvXmZ1bmNfc3BsaXRfbG9uZ19vcHQgKCkkLywvXn0gIyBmdW5jX3NwbGl0X2xvbmdfb3B0IC9jXAorK2Z1bmNfc3BsaXRfbG9uZ19vcHQgKClcCisre1wKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfbmFtZT0kezElJT0qfVwKKytcICAgIGZ1bmNfc3BsaXRfbG9uZ19vcHRfYXJnPSR7MSMqPX1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfbG9uZ19vcHQgaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX3NwbGl0X3Nob3J0X29wdCAoKSQvLC9efSAjIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IC9jXAorK2Z1bmNfc3BsaXRfc2hvcnRfb3B0ICgpXAorK3tcCisrXCAgICBmdW5jX3NwbGl0X3Nob3J0X29wdF9hcmc9JHsxIz8/fVwKKytcICAgIGZ1bmNfc3BsaXRfc2hvcnRfb3B0X25hbWU9JHsxJSIkZnVuY19zcGxpdF9zaG9ydF9vcHRfYXJnIn1cCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfc3BsaXRfc2hvcnRfb3B0IGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19sbzJvICgpJC8sL159ICMgZnVuY19sbzJvIC9jXAorK2Z1bmNfbG8ybyAoKVwKKyt7XAorK1wgICAgY2FzZSAkezF9IGluXAorK1wgICAgICAqLmxvKSBmdW5jX2xvMm9fcmVzdWx0PSR7MSUubG99LiR7b2JqZXh0fSA7O1wKKytcICAgICAgKikgICAgZnVuY19sbzJvX3Jlc3VsdD0kezF9IDs7XAorK1wgICAgZXNhY1wKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sbzJvIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY194Zm9ybSAoKSQvLC9efSAjIGZ1bmNfeGZvcm0gL2NcCisrZnVuY194Zm9ybSAoKVwKKyt7XAorKyAgICBmdW5jX3hmb3JtX3Jlc3VsdD0kezElLip9LmxvXAorK30gIyBFeHRlbmRlZC1zaGVsbCBmdW5jX3hmb3JtIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcml0aCAoKSQvLC9efSAjIGZ1bmNfYXJpdGggL2NcCisrZnVuY19hcml0aCAoKVwKKyt7XAorKyAgICBmdW5jX2FyaXRoX3Jlc3VsdD0kKCggJCogKSlcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXJpdGggaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKysKKysgIHNlZCAtZSAnL15mdW5jX2xlbiAoKSQvLC9efSAjIGZ1bmNfbGVuIC9jXAorK2Z1bmNfbGVuICgpXAorK3tcCisrICAgIGZ1bmNfbGVuX3Jlc3VsdD0keyMxfVwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19sZW4gaW1wbGVtZW50YXRpb24nICIkY2ZnZmlsZSIgPiAkY2ZnZmlsZS50bXAgXAorKyAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrdGVzdCAwIC1lcSAkPyB8fCBfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsPToKKysKKytmaQorKworK2lmIHRlc3QgeCIkbHRfc2hlbGxfYXBwZW5kIiA9IHh5ZXM7IHRoZW4KKysgIHNlZCAtZSAnL15mdW5jX2FwcGVuZCAoKSQvLC9efSAjIGZ1bmNfYXBwZW5kIC9jXAorK2Z1bmNfYXBwZW5kICgpXAorK3tcCisrICAgIGV2YWwgIiR7MX0rPVxcJHsyfSJcCisrfSAjIEV4dGVuZGVkLXNoZWxsIGZ1bmNfYXBwZW5kIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICBzZWQgLWUgJy9eZnVuY19hcHBlbmRfcXVvdGVkICgpJC8sL159ICMgZnVuY19hcHBlbmRfcXVvdGVkIC9jXAorK2Z1bmNfYXBwZW5kX3F1b3RlZCAoKVwKKyt7XAorK1wgICAgZnVuY19xdW90ZV9mb3JfZXZhbCAiJHsyfSJcCisrXCAgICBldmFsICIkezF9Kz1cXFxcIFxcJGZ1bmNfcXVvdGVfZm9yX2V2YWxfcmVzdWx0IlwKKyt9ICMgRXh0ZW5kZWQtc2hlbGwgZnVuY19hcHBlbmRfcXVvdGVkIGltcGxlbWVudGF0aW9uJyAiJGNmZ2ZpbGUiID4gJGNmZ2ZpbGUudG1wIFwKKysgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICB8fCAocm0gLWYgIiRjZmdmaWxlIiAmJiBjcCAiJGNmZ2ZpbGUudG1wIiAiJGNmZ2ZpbGUiICYmIHJtIC1mICIkY2ZnZmlsZS50bXAiKQorK3Rlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrCisrCisrICAjIFNhdmUgYSBgZnVuY19hcHBlbmQnIGZ1bmN0aW9uIGNhbGwgd2hlcmUgcG9zc2libGUgYnkgZGlyZWN0IHVzZSBvZiAnKz0nCisrICBzZWQgLWUgJ3MlZnVuY19hcHBlbmQgXChbYS16QS1aX11cezEsXH1cKSAiJVwxKz0iJWcnICRjZmdmaWxlID4gJGNmZ2ZpbGUudG1wIFwKKysgICAgJiYgbXYgLWYgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiBcCisrICAgICAgfHwgKHJtIC1mICIkY2ZnZmlsZSIgJiYgY3AgIiRjZmdmaWxlLnRtcCIgIiRjZmdmaWxlIiAmJiBybSAtZiAiJGNmZ2ZpbGUudG1wIikKKysgIHRlc3QgMCAtZXEgJD8gfHwgX2x0X2Z1bmN0aW9uX3JlcGxhY2VfZmFpbD06CisrZWxzZQorKyAgIyBTYXZlIGEgYGZ1bmNfYXBwZW5kJyBmdW5jdGlvbiBjYWxsIGV2ZW4gd2hlbiAnKz0nIGlzIG5vdCBhdmFpbGFibGUKKysgIHNlZCAtZSAncyVmdW5jX2FwcGVuZCBcKFthLXpBLVpfXVx7MSxcfVwpICIlXDE9IiRcMSVnJyAkY2ZnZmlsZSA+ICRjZmdmaWxlLnRtcCBcCisrICAgICYmIG12IC1mICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgXAorKyAgICAgIHx8IChybSAtZiAiJGNmZ2ZpbGUiICYmIGNwICIkY2ZnZmlsZS50bXAiICIkY2ZnZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlLnRtcCIpCisrICB0ZXN0IDAgLWVxICQ/IHx8IF9sdF9mdW5jdGlvbl9yZXBsYWNlX2ZhaWw9OgorK2ZpCisrCisraWYgdGVzdCB4IiRfbHRfZnVuY3Rpb25fcmVwbGFjZV9mYWlsIiA9IHgiOiI7IHRoZW4KKysgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiY1CisrJGFzX2VjaG8gIiRhc19tZTogV0FSTklORzogVW5hYmxlIHRvIHN1YnN0aXR1dGUgZXh0ZW5kZWQgc2hlbGwgZnVuY3Rpb25zIGluICRvZmlsZSIgPiYyO30KKytmaQorKworKworKyAgIG12IC1mICIkY2ZnZmlsZSIgIiRvZmlsZSIgfHwKKyAgICAgKHJtIC1mICIkb2ZpbGUiICYmIGNwICIkY2ZnZmlsZSIgIiRvZmlsZSIgJiYgcm0gLWYgIiRjZmdmaWxlIikKKyAgIGNobW9kICt4ICIkb2ZpbGUiCisgCistLSAKKzIuMjYuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA3LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyYzYzMTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwNy1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSA4Y2IwMTMxMDZjMzc5ZTgxZmU0MGNmZGY0ODZkOTgwNWM5ZTI3NmFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTozOTowMSArMDAwMAotU3ViamVjdDogW1BBVENIIDA3LzE1XSBkb24ndCBsZXQgdGhlIGRpc3RybyBjb21waWxlciBwb2ludCB0byB0aGUgd3JvbmcKLSBpbnN0YWxsYXRpb24gbG9jYXRpb24KLQotVGhhbmtzIHRvIFJQIGZvciBoZWxwaW5nIGZpbmQgdGhlIHNvdXJjZSBjb2RlIGNhdXNpbmcgdGhlIGlzc3VlLgotCi0yMDEwLzA4LzEzCi1OaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGliaWJlcnR5L01ha2VmaWxlLmluIHwgMyArKy0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWJpYmVydHkvTWFrZWZpbGUuaW4gYi9saWJpYmVydHkvTWFrZWZpbGUuaW4KLWluZGV4IDBiZTQ1YjRhZTguLjQ4MTc2MTZiYjIgMTAwNjQ0Ci0tLS0gYS9saWJpYmVydHkvTWFrZWZpbGUuaW4KLSsrKyBiL2xpYmliZXJ0eS9NYWtlZmlsZS5pbgotQEAgLTM2NCw3ICszNjQsOCBAQCBpbnN0YWxsLXN0cmlwOiBpbnN0YWxsCi0gIyBtdWx0aWxpYi1zcGVjaWZpYyBmbGFncywgaXQncyBvdmVycmlkZGVuIGJ5IEZMQUdTX1RPX1BBU1MgZnJvbSB0aGUKLSAjIGRlZmF1bHQgbXVsdGlsaWIsIHNvIHdlIGhhdmUgdG8gdGFrZSBDRkxBR1MgaW50byBhY2NvdW50IGFzIHdlbGwsCi0gIyBzaW5jZSBpdCB3aWxsIGJlIHBhc3NlZCB0aGUgbXVsdGlsaWIgZmxhZ3MuCi0tTVVMVElPU0RJUiA9IGAkKENDKSAkKENGTEFHUykgLXByaW50LW11bHRpLW9zLWRpcmVjdG9yeWAKLSsjTVVMVElPU0RJUiA9IGAkKENDKSAkKENGTEFHUykgLXByaW50LW11bHRpLW9zLWRpcmVjdG9yeWAKLStNVUxUSU9TRElSID0gIiIKLSBpbnN0YWxsX3RvX2xpYmRpcjogYWxsCi0gCWlmIHRlc3QgLW4gIiR7dGFyZ2V0X2hlYWRlcl9kaXJ9IjsgdGhlbiBcCi0gCQkke21raW5zdGFsbGRpcnN9ICQoREVTVERJUikkKGxpYmRpcikvJChNVUxUSU9TRElSKTsgXAotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOC1kb24tdC1sZXQtdGhlLWRpc3Ryby1jb21waWxlci1wb2ludC10by10aGUtd3JvbmctaW5zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIwZTk0YWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDA4LWRvbi10LWxldC10aGUtZGlzdHJvLWNvbXBpbGVyLXBvaW50LXRvLXRoZS13cm9uZy1pbnMucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBlMzZhNGUwNWY5MDBiYmU2YThkNzQ0YTkzZjNhNDA3YmM1NWM5NmY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTozOTowMSArMDAwMAorU3ViamVjdDogW1BBVENIXSBkb24ndCBsZXQgdGhlIGRpc3RybyBjb21waWxlciBwb2ludCB0byB0aGUgd3JvbmcgaW5zdGFsbGF0aW9uCisgbG9jYXRpb24KKworVGhhbmtzIHRvIFJQIGZvciBoZWxwaW5nIGZpbmQgdGhlIHNvdXJjZSBjb2RlIGNhdXNpbmcgdGhlIGlzc3VlLgorCisyMDEwLzA4LzEzCitOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGliaWJlcnR5L01ha2VmaWxlLmluIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJpYmVydHkvTWFrZWZpbGUuaW4gYi9saWJpYmVydHkvTWFrZWZpbGUuaW4KK2luZGV4IGZlNzM4ZDBkYjQuLjI3ZDgxOGYyNTMgMTAwNjQ0CistLS0gYS9saWJpYmVydHkvTWFrZWZpbGUuaW4KKysrKyBiL2xpYmliZXJ0eS9NYWtlZmlsZS5pbgorQEAgLTM2NSw3ICszNjUsOCBAQCBpbnN0YWxsLXN0cmlwOiBpbnN0YWxsCisgIyBtdWx0aWxpYi1zcGVjaWZpYyBmbGFncywgaXQncyBvdmVycmlkZGVuIGJ5IEZMQUdTX1RPX1BBU1MgZnJvbSB0aGUKKyAjIGRlZmF1bHQgbXVsdGlsaWIsIHNvIHdlIGhhdmUgdG8gdGFrZSBDRkxBR1MgaW50byBhY2NvdW50IGFzIHdlbGwsCisgIyBzaW5jZSBpdCB3aWxsIGJlIHBhc3NlZCB0aGUgbXVsdGlsaWIgZmxhZ3MuCistTVVMVElPU0RJUiA9IGAkKENDKSAkKENGTEFHUykgLXByaW50LW11bHRpLW9zLWRpcmVjdG9yeWAKKysjTVVMVElPU0RJUiA9IGAkKENDKSAkKENGTEFHUykgLXByaW50LW11bHRpLW9zLWRpcmVjdG9yeWAKKytNVUxUSU9TRElSID0gIiIKKyBpbnN0YWxsX3RvX2xpYmRpcjogYWxsCisgCWlmIHRlc3QgLW4gIiR7dGFyZ2V0X2hlYWRlcl9kaXJ9IjsgdGhlbiBcCisgCQkke21raW5zdGFsbGRpcnN9ICQoREVTVERJUikkKGxpYmRpcikvJChNVUxUSU9TRElSKTsgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOC13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOC13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NzI3ODIxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDgtd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3MyArMCwwIEBACi1Gcm9tIDk4ZjY4YzA4OTJiYTRiYmQ1M2IwYTBhNGNiYmRmMGI3MTk3ZTAzMjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAxNSBKYW4gMjAxNiAwNjozMTowOSArMDAwMAotU3ViamVjdDogW1BBVENIIDA4LzE1XSB3YXJuIGZvciB1c2VzIG9mIHN5c3RlbSBkaXJlY3RvcmllcyB3aGVuIGNyb3NzIGxpbmtpbmcKLQotMjAwOC0wNy0wMiAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+Ci0KLSAgICBsZC8KLSAgICAqIGxkLmggKGFyZ3NfdHlwZSk6IEFkZCBlcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgotICAgICogbGQudGV4aW5mbyAoLS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzKTogRG9jdW1lbnQuCi0gICAgKiBsZGZpbGUuYyAobGRmaWxlX2FkZF9saWJyYXJ5X3BhdGgpOiBDaGVjawotICAgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgotICAgICogbGRtYWluLmMgKG1haW4pOiBJbml0aWFsaXplCi0gICAgY29tbWFuZF9saW5lLmVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCi0gICAgKiBsZXhzdXAuYyAoZW51bSBvcHRpb25fdmFsdWVzKTogQWRkCi0gICAgT1BUSU9OX0VSUk9SX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMuCi0gICAgKGxkX29wdGlvbnMpOiBBZGQgLS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLgotICAgIChwYXJzZV9hcmdzKTogSGFuZGxlIG5ldyBvcHRpb24uCi0KLTIwMDctMDYtMTMgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgotCi0gICAgbGQvCi0gICAgKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCi0gICAgKiBsZC5oIChhcmdzX3R5cGUpOiBBZGQgcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KLSAgICAqIGxkLnRleGluZm8gKC0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcyk6IERvY3VtZW50LgotICAgICogbGRmaWxlLmMgKGxkZmlsZV9hZGRfbGlicmFyeV9wYXRoKTogQ2hlY2sKLSAgICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KLSAgICAqIGxkbWFpbi5jIChtYWluKTogSW5pdGlhbGl6ZQotICAgIGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgotICAgICogbGV4c3VwLmMgKGVudW0gb3B0aW9uX3ZhbHVlcyk6IEFkZAotICAgIE9QVElPTl9OT19QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLgotICAgIChsZF9vcHRpb25zKTogQWRkIC0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy4KLSAgICAocGFyc2VfYXJncyk6IEhhbmRsZSBuZXcgb3B0aW9uLgotCi0yMDA3LTA0LTIwICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KLQotICAgIE1lcmdlIGZyb20gU291cmNlcnkgRysrIGJpbnV0aWxzIDIuMTc6Ci0KLSAgICAyMDA3LTAzLTIwICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KLSAgICBCYXNlZCBvbiBwYXRjaCBieSBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+LgotICAgIGxkLwotICAgICogY29uZmlndXJlLmluICgtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzKTogTmV3IG9wdGlvbi4KLSAgICAqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWdlbmVyYXRlLgotICAgICogbGRmaWxlLmMgKGxkZmlsZV9hZGRfbGlicmFyeV9wYXRoKTogSWYKLSAgICBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUyBkZWZpbmVkLCB3YXJuIGZvciB1c2Ugb2YgL2xpYiwKLSAgICAvdXNyL2xpYiwgL3Vzci9sb2NhbC9saWIgb3IgL3Vzci9YMTFSNi9saWIuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsZC9jb25maWcuaW4gICAgfCAgMyArKysKLSBsZC9jb25maWd1cmUgICAgfCAxNiArKysrKysrKysrKysrKysrCi0gbGQvY29uZmlndXJlLmFjIHwgMTAgKysrKysrKysrKwotIGxkL2xkLmggICAgICAgICB8ICA4ICsrKysrKysrCi0gbGQvbGQudGV4aSAgICAgIHwgMTIgKysrKysrKysrKysrCi0gbGQvbGRmaWxlLmMgICAgIHwgMTcgKysrKysrKysrKysrKysrKysKLSBsZC9sZGxleC5oICAgICAgfCAgMiArKwotIGxkL2xkbWFpbi5jICAgICB8ICAyICsrCi0gbGQvbGV4c3VwLmMgICAgIHwgMTYgKysrKysrKysrKysrKysrKwotIDkgZmlsZXMgY2hhbmdlZCwgODYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbGQvY29uZmlnLmluIGIvbGQvY29uZmlnLmluCi1pbmRleCBkOTNjOWIwODMwLi41ZGEyNzQyYmVhIDEwMDY0NAotLS0tIGEvbGQvY29uZmlnLmluCi0rKysgYi9sZC9jb25maWcuaW4KLUBAIC0zMSw2ICszMSw5IEBACi0gICAgbGFuZ3VhZ2UgaXMgcmVxdWVzdGVkLiAqLwotICN1bmRlZiBFTkFCTEVfTkxTCi0gCi0rLyogRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXMgKi8KLSsjdW5kZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKLSsKLSAvKiBBZGRpdGlvbmFsIGV4dGVuc2lvbiBhIHNoYXJlZCBvYmplY3QgbWlnaHQgaGF2ZS4gKi8KLSAjdW5kZWYgRVhUUkFfU0hMSUJfRVhURU5TSU9OCi0gCi1kaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlIGIvbGQvY29uZmlndXJlCi1pbmRleCA0M2MzOTFjMmIzLi5mZjlmNmIzYzAyIDEwMDc1NQotLS0tIGEvbGQvY29uZmlndXJlCi0rKysgYi9sZC9jb25maWd1cmUKLUBAIC04MjYsNiArODI2LDcgQEAgd2l0aF9saWJfcGF0aAotIGVuYWJsZV90YXJnZXRzCi0gZW5hYmxlXzY0X2JpdF9iZmQKLSB3aXRoX3N5c3Jvb3QKLStlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcwotIGVuYWJsZV9nb2xkCi0gZW5hYmxlX2dvdAotIGVuYWJsZV9jb21wcmVzc2VkX2RlYnVnX3NlY3Rpb25zCi1AQCAtMTQ5MCw2ICsxNDkxLDggQEAgT3B0aW9uYWwgRmVhdHVyZXM6Ci0gICAtLWRpc2FibGUtbGFyZ2VmaWxlICAgICBvbWl0IHN1cHBvcnQgZm9yIGxhcmdlIGZpbGVzCi0gICAtLWVuYWJsZS10YXJnZXRzICAgICAgICBhbHRlcm5hdGl2ZSB0YXJnZXQgY29uZmlndXJhdGlvbnMKLSAgIC0tZW5hYmxlLTY0LWJpdC1iZmQgICAgIDY0LWJpdCBzdXBwb3J0IChvbiBob3N0cyB3aXRoIG5hcnJvd2VyIHdvcmQgc2l6ZXMpCi0rICAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rICAgICAgICAgICAgICAgICAgICAgICAgICB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzCi0gICAtLWVuYWJsZS1nb2xkWz1BUkddICAgICBidWlsZCBnb2xkIFtBUkc9e2RlZmF1bHQseWVzLG5vfV0KLSAgIC0tZW5hYmxlLWdvdD08dHlwZT4gICAgIEdPVCBoYW5kbGluZyBzY2hlbWUgKHRhcmdldCwgc2luZ2xlLCBuZWdhdGl2ZSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIG11bHRpZ290KQotQEAgLTE2NjE4LDYgKzE2NjIxLDE5IEBAIGZpCi0gCi0gCi0gCi0rIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMgd2FzIGdpdmVuLgotK2lmIHRlc3QgIiR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMrc2V0fSIgPSBzZXQ7IHRoZW4gOgotKyAgZW5hYmxldmFsPSRlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllczsKLStlbHNlCi0rICBlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ubwotK2ZpCi0rCi0raWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgotKwotKyRhc19lY2hvICIjZGVmaW5lIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTIDEiID4+Y29uZmRlZnMuaAotKwotK2ZpCi0rCi0gIyBDaGVjayB3aGV0aGVyIC0tZW5hYmxlLWdvbGQgd2FzIGdpdmVuLgotIGlmIHRlc3QgIiR7ZW5hYmxlX2dvbGQrc2V0fSIgPSBzZXQ7IHRoZW4gOgotICAgZW5hYmxldmFsPSRlbmFibGVfZ29sZDsgY2FzZSAiJHtlbmFibGV2YWx9IiBpbgotZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZS5hYyBiL2xkL2NvbmZpZ3VyZS5hYwotaW5kZXggZDMzNWYyMTA5MS4uN2Y2OTJkOTM4NyAxMDA2NDQKLS0tLSBhL2xkL2NvbmZpZ3VyZS5hYwotKysrIGIvbGQvY29uZmlndXJlLmFjCi1AQCAtOTQsNiArOTQsMTYgQEAgQUNfU1VCU1QodXNlX3N5c3Jvb3QpCi0gQUNfU1VCU1QoVEFSR0VUX1NZU1RFTV9ST09UKQotIEFDX1NVQlNUKFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkUpCi0gCi0rQUNfQVJHX0VOQUJMRShbcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCi0rICAgICAgICAgQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAotKyAgICAgICAgICAgICAgICBbd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gbGlicmFyeSBkaXJlY3Rvcmllc10pLCwKLSsgICAgICAgICBbZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm9dKQotK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KLSsgIEFDX0RFRklORShbRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVNdLAotKyAgICAgICBbMV0sCi0rICAgICAgIFtEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gbGlicmFyeSBkaXJlY3Rvcmllc10pCi0rZmkKLSsKLSBkbmwgVXNlIC0tZW5hYmxlLWdvbGQgdG8gZGVjaWRlIGlmIHRoaXMgbGlua2VyIHNob3VsZCBiZSB0aGUgZGVmYXVsdC4KLSBkbmwgImluc3RhbGxfYXNfZGVmYXVsdCIgaXMgc2V0IHRvIGZhbHNlIGlmIGdvbGQgaXMgdGhlIGRlZmF1bHQgbGlua2VyLgotIGRubCAiaW5zdGFsbGVkX2xpbmtlciIgaXMgdGhlIGluc3RhbGxlZCBCRkQgbGlua2VyIG5hbWUuCi1kaWZmIC0tZ2l0IGEvbGQvbGQuaCBiL2xkL2xkLmgKLWluZGV4IGI5N2Q5NzdmMzcuLmYzYmJkMmQ1NWQgMTAwNjQ0Ci0tLS0gYS9sZC9sZC5oCi0rKysgYi9sZC9sZC5oCi1AQCAtMTgwLDYgKzE4MCwxNCBAQCB0eXBlZGVmIHN0cnVjdAotICAgICAgaW4gdGhlIGxpbmtlciBzY3JpcHQuICAqLwotICAgYmZkX2Jvb2xlYW4gZm9yY2VfZ3JvdXBfYWxsb2NhdGlvbjsKLSAKLSsgIC8qIElmIFRSVUUgKHRoZSBkZWZhdWx0KSB3YXJuIGZvciB1c2VzIG9mIHN5c3RlbSBkaXJlY3RvcmllcyB3aGVuCi0rICAgICBjcm9zcyBsaW5raW5nLiAgKi8KLSsgIGJmZF9ib29sZWFuIHBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7Ci0rCi0rICAvKiBJZiBUUlVFIChkZWZhdWx0IEZBTFNFKSBnaXZlIGFuIGVycm9yIGZvciB1c2VzIG9mIHN5c3RlbQotKyAgICAgZGlyZWN0b3JpZXMgd2hlbiBjcm9zcyBsaW5raW5nIGluc3RlYWQgb2YgYSB3YXJuaW5nLiAgKi8KLSsgIGJmZF9ib29sZWFuIGVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7Ci0rCi0gICAvKiBCaWcgb3IgbGl0dGxlIGVuZGlhbiBhcyBzZXQgb24gY29tbWFuZCBsaW5lLiAgKi8KLSAgIGVudW0gZW5kaWFuX2VudW0gZW5kaWFuOwotIAotZGlmZiAtLWdpdCBhL2xkL2xkLnRleGkgYi9sZC9sZC50ZXhpCi1pbmRleCA1MTc5YWYzZTBlLi5mNzhiZjc0NjgyIDEwMDY0NAotLS0tIGEvbGQvbGQudGV4aQotKysrIGIvbGQvbGQudGV4aQotQEAgLTI1MjQsNiArMjUyNCwxOCBAQCBzdHJpbmcgaWRlbnRpZnlpbmcgdGhlIG9yaWdpbmFsIGxpbmtlZCBmaWxlIGRvZXMgbm90IGNoYW5nZS4KLSAKLSBQYXNzaW5nIEBjb2Rle25vbmV9IGZvciBAdmFye3N0eWxlfSBkaXNhYmxlcyB0aGUgc2V0dGluZyBmcm9tIGFueQotIEBjb2Rley0tYnVpbGQtaWR9IG9wdGlvbnMgZWFybGllciBvbiB0aGUgY29tbWFuZCBsaW5lLgotKwotK0BraW5kZXggLS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rQGl0ZW0gLS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rRG8gbm90IHdhcm4gZm9yIEBvcHRpb257LUx9IG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIHN1Y2ggYXMKLStAZmlsZXsvdXNyL2xpYn0gd2hlbiBjcm9zcyBsaW5raW5nLiAgVGhpcyBvcHRpb24gaXMgaW50ZW5kZWQgZm9yIHVzZQotK2luIGNocm9vdCBlbnZpcm9ubWVudHMgd2hlbiBzdWNoIGRpcmVjdG9yaWVzIGNvbnRhaW4gdGhlIGNvcnJlY3QKLStsaWJyYXJpZXMgZm9yIHRoZSB0YXJnZXQgc3lzdGVtIHJhdGhlciB0aGFuIHRoZSBob3N0LgotKwotK0BraW5kZXggLS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rQGl0ZW0gLS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCi0rR2l2ZSBhbiBlcnJvciBpbnN0ZWFkIG9mIGEgd2FybmluZyBmb3IgQG9wdGlvbnstTH0gb3B0aW9ucyB1c2luZwotK3N5c3RlbSBkaXJlY3RvcmllcyB3aGVuIGNyb3NzIGxpbmtpbmcuCi0gQGVuZCB0YWJsZQotIAotIEBjIG1hbiBlbmQKLWRpZmYgLS1naXQgYS9sZC9sZGZpbGUuYyBiL2xkL2xkZmlsZS5jCi1pbmRleCBmY2FkYzA4YzczLi42M2UyOTVjZThhIDEwMDY0NAotLS0tIGEvbGQvbGRmaWxlLmMKLSsrKyBiL2xkL2xkZmlsZS5jCi1AQCAtMTE2LDYgKzExNiwyMyBAQCBsZGZpbGVfYWRkX2xpYnJhcnlfcGF0aCAoY29uc3QgY2hhciAqbmFtZSwgYmZkX2Jvb2xlYW4gY21kbGluZSkKLSAgICAgbmV3X2RpcnMtPm5hbWUgPSBjb25jYXQgKGxkX3N5c3Jvb3QsIG5hbWUgKyBzdHJsZW4gKCIkU1lTUk9PVCIpLCAoY29uc3QgY2hhciAqKSBOVUxMKTsKLSAgIGVsc2UKLSAgICAgbmV3X2RpcnMtPm5hbWUgPSB4c3RyZHVwIChuYW1lKTsKLSsKLSsjaWZkZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKLSsgIGlmIChjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcwotKyAgJiYgKCghc3RybmNtcCAobmFtZSwgIi9saWIiLCA0KSkKLSsgICAgICB8fCAoIXN0cm5jbXAgKG5hbWUsICIvdXNyL2xpYiIsIDgpKQotKyAgICAgIHx8ICghc3RybmNtcCAobmFtZSwgIi91c3IvbG9jYWwvbGliIiwgMTQpKQotKyAgICAgIHx8ICghc3RybmNtcCAobmFtZSwgIi91c3IvWDExUjYvbGliIiwgMTQpKSkpCi0rICAgewotKyAgICAgaWYgKGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzKQotKyAgICAgICBlaW5mbyAoXygiJVglUDogZXJyb3I6IGxpYnJhcnkgc2VhcmNoIHBhdGggXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgotKyAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvblxuIiksIG5hbWUpOwotKyAgICAgZWxzZQotKyAgICAgICBlaW5mbyAoXygiJVA6IHdhcm5pbmc6IGxpYnJhcnkgc2VhcmNoIHBhdGggXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgotKyAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvblxuIiksIG5hbWUpOwotKyAgIH0KLSsjZW5kaWYKLSsKLSB9Ci0gCi0gLyogVHJ5IHRvIG9wZW4gYSBCRkQgZm9yIGEgbGFuZ19pbnB1dF9zdGF0ZW1lbnQuICAqLwotZGlmZiAtLWdpdCBhL2xkL2xkbGV4LmggYi9sZC9sZGxleC5oCi1pbmRleCAzMjg1M2RlYmU0Li44MTM1MzYxYzQ5IDEwMDY0NAotLS0tIGEvbGQvbGRsZXguaAotKysrIGIvbGQvbGRsZXguaAotQEAgLTE0OCw2ICsxNDgsOCBAQCBlbnVtIG9wdGlvbl92YWx1ZXMKLSAgIE9QVElPTl9SRVFVSVJFX0RFRklORURfU1lNQk9MLAotICAgT1BUSU9OX09SUEhBTl9IQU5ETElORywKLSAgIE9QVElPTl9GT1JDRV9HUk9VUF9BTExPQ0FUSU9OLAotKyAgT1BUSU9OX05PX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMsCi0rICBPUFRJT05fRVJST1JfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUywKLSB9OwotIAotIC8qIFRoZSBpbml0aWFsIHBhcnNlciBzdGF0ZXMuICAqLwotZGlmZiAtLWdpdCBhL2xkL2xkbWFpbi5jIGIvbGQvbGRtYWluLmMKLWluZGV4IDc3Y2RiZDBkZDIuLjcyNTUxMmYxMjYgMTAwNjQ0Ci0tLS0gYS9sZC9sZG1haW4uYwotKysrIGIvbGQvbGRtYWluLmMKLUBAIC0yNjksNiArMjY5LDggQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotICAgY29tbWFuZF9saW5lLndhcm5fbWlzbWF0Y2ggPSBUUlVFOwotICAgY29tbWFuZF9saW5lLndhcm5fc2VhcmNoX21pc21hdGNoID0gVFJVRTsKLSAgIGNvbW1hbmRfbGluZS5jaGVja19zZWN0aW9uX2FkZHJlc3NlcyA9IC0xOwotKyAgY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMgPSBUUlVFOwotKyAgY29tbWFuZF9saW5lLmVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMgPSBGQUxTRTsKLSAKLSAgIC8qIFdlIGluaXRpYWxpemUgREVNQU5HTElORyBiYXNlZCBvbiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKLSAgICAgIENPTExFQ1RfTk9fREVNQU5HTEUuICBUaGUgZ2NjIGNvbGxlY3QyIHByb2dyYW0gd2lsbCBkZW1hbmdsZSB0aGUKLWRpZmYgLS1naXQgYS9sZC9sZXhzdXAuYyBiL2xkL2xleHN1cC5jCi1pbmRleCA4OGU4NWM3M2Y0Li5lZWQxYjcxNDU2IDEwMDY0NAotLS0tIGEvbGQvbGV4c3VwLmMKLSsrKyBiL2xkL2xleHN1cC5jCi1AQCAtNTQzLDYgKzU0MywxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGxkX29wdGlvbiBsZF9vcHRpb25zW10gPQotICAgeyB7Im9ycGhhbi1oYW5kbGluZyIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCBPUFRJT05fT1JQSEFOX0hBTkRMSU5HfSwKLSAgICAgJ1wwJywgTl8oIj1NT0RFIiksIE5fKCJDb250cm9sIGhvdyBvcnBoYW4gc2VjdGlvbnMgYXJlIGhhbmRsZWQuIiksCi0gICAgIFRXT19EQVNIRVMgfSwKLSsgIHsgeyJuby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIiwgbm9fYXJndW1lbnQsIE5VTEwsCi0rICAgICBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU30sCi0rICAgICdcMCcsIE5VTEwsIE5fKCJEbyBub3Qgd2FybiBmb3IgLUwgb3B0aW9ucyB1c2luZyBzeXN0ZW0gZGlyZWN0b3JpZXMiKSwKLSsgICAgVFdPX0RBU0hFUyB9LAotKyAgeyB7ImVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMiLCBub19hcmd1bWVudCwgTlVMTCwKLSsgICAgKyAgICAgT1BUSU9OX0VSUk9SX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVN9LAotKyAgICAnXDAnLCBOVUxMLCBOXygiR2l2ZSBhbiBlcnJvciBmb3IgLUwgb3B0aW9ucyB1c2luZyBzeXN0ZW0gZGlyZWN0b3JpZXMiKSwKLSsgICAgVFdPX0RBU0hFUyB9LAotIH07Ci0gCi0gI2RlZmluZSBPUFRJT05fQ09VTlQgQVJSQVlfU0laRSAobGRfb3B0aW9ucykKLUBAIC0xNTc3LDYgKzE1ODUsMTQgQEAgcGFyc2VfYXJncyAodW5zaWduZWQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCSAgICBlaW5mbyAoXygiJUYlUDogaW52YWxpZCBhcmd1bWVudCB0byBvcHRpb24iCi0gCQkgICAgICIgXCItLW9ycGhhbi1oYW5kbGluZ1wiXG4iKSk7Ci0gCSAgYnJlYWs7Ci0rCi0rCWNhc2UgT1BUSU9OX05PX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVM6Ci0rCSAgY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMgPSBGQUxTRTsKLSsJICBicmVhazsKLSsKLSsJY2FzZSBPUFRJT05fRVJST1JfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUzoKLSsJICBjb21tYW5kX2xpbmUuZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcyA9IFRSVUU7Ci0rCSAgYnJlYWs7Ci0gCX0KLSAgICAgfQotIAotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOS1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2YjFlN2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOS1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLUZyb20gMmNkNTYxM2E4NmY4NzcyZjlkN2YxODg1MzI3MTgzNjM2NjhlZDk5ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDE6NDI6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwOS8xNV0gRml4IHJwYXRoIGluIGxpYnRvb2wgd2hlbiBzeXNyb290IGlzIGVuYWJsZWQKLQotRW5hYmxpbmcgc3lzcm9vdCBzdXBwb3J0IGluIGxpYnRvb2wgZXhwb3NlZCBhIGJ1ZyB3aGVyZSB0aGUgZmluYWwKLWxpYnJhcnkgaGFkIGFuIFJQQVRIIGVuY29kZWQgaW50byBpdCB3aGljaCBzdGlsbCBwb2ludGVkIHRvIHRoZQotc3lzcm9vdC4gVGhpcyB3b3JrcyBhcm91bmQgdGhlIGlzc3VlIHVudGlsIGl0IGdldHMgc29ydGVkIG91dAotdXBzdHJlYW0uCi0KLUZpeCBzdWdnZXN0ZWQgYnkgUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGx0bWFpbi5zaCB8IDEwICsrKysrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCA3MGU4NTZlMDY1Li4xMWVlNjg0Y2NjIDEwMDY0NAotLS0tIGEvbHRtYWluLnNoCi0rKysgYi9sdG1haW4uc2gKLUBAIC04MDM1LDkgKzgwMzUsMTEgQEAgRU9GCi0gCSAgdGVzdCAiJG9wdF9tb2RlIiAhPSByZWxpbmsgJiYgcnBhdGg9IiRjb21waWxlX3JwYXRoJHJwYXRoIgotIAkgIGZvciBsaWJkaXIgaW4gJHJwYXRoOyBkbwotIAkgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCi0rCQkgIGZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgotKwkJICBsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAotKwkJICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRsaWJkaXIiCi0rCQkgIGxpYmRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0gCSAgICAgIGlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfc2VwYXJhdG9yIjsgdGhlbgotLQkJZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCi0tCQlsaWJkaXI9JGZ1bmNfcmVwbGFjZV9zeXNyb290X3Jlc3VsdAotIAkJaWYgdGVzdCAteiAiJGhhcmRjb2RlX2xpYmRpcnMiOyB0aGVuCi0gCQkgIGhhcmRjb2RlX2xpYmRpcnM9IiRsaWJkaXIiCi0gCQllbHNlCi1AQCAtODc3MCw2ICs4NzcyLDEwIEBAIEVPRgotICAgICAgIGhhcmRjb2RlX2xpYmRpcnM9Ci0gICAgICAgZm9yIGxpYmRpciBpbiAkY29tcGlsZV9ycGF0aCAkZmluYWxpemVfcnBhdGg7IGRvCi0gCWlmIHRlc3QgLW4gIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjIjsgdGhlbgotKwkgIGZ1bmNfcmVwbGFjZV9zeXNyb290ICIkbGliZGlyIgotKwkgIGxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0Ci0rCSAgZnVuY19zdHJpcG5hbWUgJz0nICcnICIkbGliZGlyIgotKwkgIGxpYmRpcj0kZnVuY19zdHJpcG5hbWVfcmVzdWx0Ci0gCSAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCi0gCSAgICBpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KLSAJICAgICAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMDktd2Fybi1mb3ItdXNlcy1vZi1zeXN0ZW0tZGlyZWN0b3JpZXMtd2hlbi1jcm9zcy1saW5raS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMWE4MTEwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAwOS13YXJuLWZvci11c2VzLW9mLXN5c3RlbS1kaXJlY3Rvcmllcy13aGVuLWNyb3NzLWxpbmtpLnBhdGNoCkBAIC0wLDAgKzEsMjY5IEBACitGcm9tIDdiMjRmODFlMDRjOWQwMGQ5NmRlN2RiZDI1MGJlYWRlNmQyYzZlNDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAxNSBKYW4gMjAxNiAwNjozMTowOSArMDAwMAorU3ViamVjdDogW1BBVENIXSB3YXJuIGZvciB1c2VzIG9mIHN5c3RlbSBkaXJlY3RvcmllcyB3aGVuIGNyb3NzIGxpbmtpbmcKKworMjAwOC0wNy0wMiAgSm9zZXBoIE15ZXJzICA8am9zZXBoQGNvZGVzb3VyY2VyeS5jb20+CisKKyAgICBsZC8KKyAgICAqIGxkLmggKGFyZ3NfdHlwZSk6IEFkZCBlcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgorICAgICogbGQudGV4aW5mbyAoLS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzKTogRG9jdW1lbnQuCisgICAgKiBsZGZpbGUuYyAobGRmaWxlX2FkZF9saWJyYXJ5X3BhdGgpOiBDaGVjaworICAgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgorICAgICogbGRtYWluLmMgKG1haW4pOiBJbml0aWFsaXplCisgICAgY29tbWFuZF9saW5lLmVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMuCisgICAgKiBsZXhzdXAuYyAoZW51bSBvcHRpb25fdmFsdWVzKTogQWRkCisgICAgT1BUSU9OX0VSUk9SX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMuCisgICAgKGxkX29wdGlvbnMpOiBBZGQgLS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLgorICAgIChwYXJzZV9hcmdzKTogSGFuZGxlIG5ldyBvcHRpb24uCisKKzIwMDctMDYtMTMgIEpvc2VwaCBNeWVycyAgPGpvc2VwaEBjb2Rlc291cmNlcnkuY29tPgorCisgICAgbGQvCisgICAgKiBjb25maWcuaW46IFJlZ2VuZXJhdGUuCisgICAgKiBsZC5oIChhcmdzX3R5cGUpOiBBZGQgcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KKyAgICAqIGxkLnRleGluZm8gKC0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcyk6IERvY3VtZW50LgorICAgICogbGRmaWxlLmMgKGxkZmlsZV9hZGRfbGlicmFyeV9wYXRoKTogQ2hlY2sKKyAgICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcy4KKyAgICAqIGxkbWFpbi5jIChtYWluKTogSW5pdGlhbGl6ZQorICAgIGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzLgorICAgICogbGV4c3VwLmMgKGVudW0gb3B0aW9uX3ZhbHVlcyk6IEFkZAorICAgIE9QVElPTl9OT19QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTLgorICAgIChsZF9vcHRpb25zKTogQWRkIC0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy4KKyAgICAocGFyc2VfYXJncyk6IEhhbmRsZSBuZXcgb3B0aW9uLgorCisyMDA3LTA0LTIwICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KKworICAgIE1lcmdlIGZyb20gU291cmNlcnkgRysrIGJpbnV0aWxzIDIuMTc6CisKKyAgICAyMDA3LTAzLTIwICBKb3NlcGggTXllcnMgIDxqb3NlcGhAY29kZXNvdXJjZXJ5LmNvbT4KKyAgICBCYXNlZCBvbiBwYXRjaCBieSBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+LgorICAgIGxkLworICAgICogY29uZmlndXJlLmluICgtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzKTogTmV3IG9wdGlvbi4KKyAgICAqIGNvbmZpZ3VyZSwgY29uZmlnLmluOiBSZWdlbmVyYXRlLgorICAgICogbGRmaWxlLmMgKGxkZmlsZV9hZGRfbGlicmFyeV9wYXRoKTogSWYKKyAgICBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUyBkZWZpbmVkLCB3YXJuIGZvciB1c2Ugb2YgL2xpYiwKKyAgICAvdXNyL2xpYiwgL3Vzci9sb2NhbC9saWIgb3IgL3Vzci9YMTFSNi9saWIuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBTY290dCBHYXJtYW4gPHNjb3R0LmEuZ2FybWFuQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsZC9jb25maWcuaW4gICAgfCAgMyArKysKKyBsZC9jb25maWd1cmUgICAgfCAxNiArKysrKysrKysrKysrKysrCisgbGQvY29uZmlndXJlLmFjIHwgMTAgKysrKysrKysrKworIGxkL2xkLmggICAgICAgICB8ICA4ICsrKysrKysrCisgbGQvbGQudGV4aSAgICAgIHwgMTIgKysrKysrKysrKysrCisgbGQvbGRmaWxlLmMgICAgIHwgMTcgKysrKysrKysrKysrKysrKysKKyBsZC9sZGxleC5oICAgICAgfCAgMiArKworIGxkL2xkbWFpbi5jICAgICB8ICAyICsrCisgbGQvbGV4c3VwLmMgICAgIHwgMTUgKysrKysrKysrKysrKysrCisgOSBmaWxlcyBjaGFuZ2VkLCA4NSBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9sZC9jb25maWcuaW4gYi9sZC9jb25maWcuaW4KK2luZGV4IGQ5M2M5YjA4MzAuLjVkYTI3NDJiZWEgMTAwNjQ0CistLS0gYS9sZC9jb25maWcuaW4KKysrKyBiL2xkL2NvbmZpZy5pbgorQEAgLTMxLDYgKzMxLDkgQEAKKyAgICBsYW5ndWFnZSBpcyByZXF1ZXN0ZWQuICovCisgI3VuZGVmIEVOQUJMRV9OTFMKKyAKKysvKiBEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gbGlicmFyeSBkaXJlY3RvcmllcyAqLworKyN1bmRlZiBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUworKworIC8qIEFkZGl0aW9uYWwgZXh0ZW5zaW9uIGEgc2hhcmVkIG9iamVjdCBtaWdodCBoYXZlLiAqLworICN1bmRlZiBFWFRSQV9TSExJQl9FWFRFTlNJT04KKyAKK2RpZmYgLS1naXQgYS9sZC9jb25maWd1cmUgYi9sZC9jb25maWd1cmUKK2luZGV4IDgxMTEzNGE1MDMuLmY4YzE3YzE5YWUgMTAwNzU1CistLS0gYS9sZC9jb25maWd1cmUKKysrKyBiL2xkL2NvbmZpZ3VyZQorQEAgLTgyNiw2ICs4MjYsNyBAQCB3aXRoX2xpYl9wYXRoCisgZW5hYmxlX3RhcmdldHMKKyBlbmFibGVfNjRfYml0X2JmZAorIHdpdGhfc3lzcm9vdAorK2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzCisgZW5hYmxlX2dvbGQKKyBlbmFibGVfZ290CisgZW5hYmxlX2NvbXByZXNzZWRfZGVidWdfc2VjdGlvbnMKK0BAIC0xNDkxLDYgKzE0OTIsOCBAQCBPcHRpb25hbCBGZWF0dXJlczoKKyAgIC0tZGlzYWJsZS1sYXJnZWZpbGUgICAgIG9taXQgc3VwcG9ydCBmb3IgbGFyZ2UgZmlsZXMKKyAgIC0tZW5hYmxlLXRhcmdldHMgICAgICAgIGFsdGVybmF0aXZlIHRhcmdldCBjb25maWd1cmF0aW9ucworICAgLS1lbmFibGUtNjQtYml0LWJmZCAgICAgNjQtYml0IHN1cHBvcnQgKG9uIGhvc3RzIHdpdGggbmFycm93ZXIgd29yZCBzaXplcykKKysgIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKysgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGxpYnJhcnkgZGlyZWN0b3JpZXMKKyAgIC0tZW5hYmxlLWdvbGRbPUFSR10gICAgIGJ1aWxkIGdvbGQgW0FSRz17ZGVmYXVsdCx5ZXMsbm99XQorICAgLS1lbmFibGUtZ290PTx0eXBlPiAgICAgR09UIGhhbmRsaW5nIHNjaGVtZSAodGFyZ2V0LCBzaW5nbGUsIG5lZ2F0aXZlLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlnb3QpCitAQCAtMTU3ODgsNiArMTU3OTEsMTkgQEAgZmkKKyAKKyAKKyAKKysjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcytzZXR9IiA9IHNldDsgdGhlbiA6CisrICBlbmFibGV2YWw9JGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOworK2Vsc2UKKysgIGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vCisrZmkKKysKKytpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCisrCisrJGFzX2VjaG8gIiNkZWZpbmUgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgMSIgPj5jb25mZGVmcy5oCisrCisrZmkKKysKKyAjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtZ29sZCB3YXMgZ2l2ZW4uCisgaWYgdGVzdCAiJHtlbmFibGVfZ29sZCtzZXR9IiA9IHNldDsgdGhlbiA6CisgICBlbmFibGV2YWw9JGVuYWJsZV9nb2xkOyBjYXNlICIke2VuYWJsZXZhbH0iIGluCitkaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLmFjIGIvbGQvY29uZmlndXJlLmFjCitpbmRleCBiNWU4NDlkODRhLi4yMmUwMjJlYzAzIDEwMDY0NAorLS0tIGEvbGQvY29uZmlndXJlLmFjCisrKysgYi9sZC9jb25maWd1cmUuYWMKK0BAIC05NCw2ICs5NCwxNiBAQCBBQ19TVUJTVCh1c2Vfc3lzcm9vdCkKKyBBQ19TVUJTVChUQVJHRVRfU1lTVEVNX1JPT1QpCisgQUNfU1VCU1QoVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORSkKKyAKKytBQ19BUkdfRU5BQkxFKFtwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKKysgICAgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCisrICAgICAgICAgICAgICAgIFt3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzXSksLAorKyAgICAgICAgIFtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ub10pCisraWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgorKyAgQUNfREVGSU5FKFtFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU10sCisrICAgICAgIFsxXSwKKysgICAgICAgW0RlZmluZSB0byB3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBsaWJyYXJ5IGRpcmVjdG9yaWVzXSkKKytmaQorKworIGRubCBVc2UgLS1lbmFibGUtZ29sZCB0byBkZWNpZGUgaWYgdGhpcyBsaW5rZXIgc2hvdWxkIGJlIHRoZSBkZWZhdWx0LgorIGRubCAiaW5zdGFsbF9hc19kZWZhdWx0IiBpcyBzZXQgdG8gZmFsc2UgaWYgZ29sZCBpcyB0aGUgZGVmYXVsdCBsaW5rZXIuCisgZG5sICJpbnN0YWxsZWRfbGlua2VyIiBpcyB0aGUgaW5zdGFsbGVkIEJGRCBsaW5rZXIgbmFtZS4KK2RpZmYgLS1naXQgYS9sZC9sZC5oIGIvbGQvbGQuaAoraW5kZXggNzFmZDc4MTI2Ny4uNWM3ODQzMTAwYiAxMDA2NDQKKy0tLSBhL2xkL2xkLmgKKysrKyBiL2xkL2xkLmgKK0BAIC0xNjYsNiArMTY2LDE0IEBAIHR5cGVkZWYgc3RydWN0CisgICAgICBpbiB0aGUgbGlua2VyIHNjcmlwdC4gICovCisgICBiZmRfYm9vbGVhbiBmb3JjZV9ncm91cF9hbGxvY2F0aW9uOworIAorKyAgLyogSWYgVFJVRSAodGhlIGRlZmF1bHQpIHdhcm4gZm9yIHVzZXMgb2Ygc3lzdGVtIGRpcmVjdG9yaWVzIHdoZW4KKysgICAgIGNyb3NzIGxpbmtpbmcuICAqLworKyAgYmZkX2Jvb2xlYW4gcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllczsKKysKKysgIC8qIElmIFRSVUUgKGRlZmF1bHQgRkFMU0UpIGdpdmUgYW4gZXJyb3IgZm9yIHVzZXMgb2Ygc3lzdGVtCisrICAgICBkaXJlY3RvcmllcyB3aGVuIGNyb3NzIGxpbmtpbmcgaW5zdGVhZCBvZiBhIHdhcm5pbmcuICAqLworKyAgYmZkX2Jvb2xlYW4gZXJyb3JfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllczsKKysKKyAgIC8qIEJpZyBvciBsaXR0bGUgZW5kaWFuIGFzIHNldCBvbiBjb21tYW5kIGxpbmUuICAqLworICAgZW51bSBlbmRpYW5fZW51bSBlbmRpYW47CisgCitkaWZmIC0tZ2l0IGEvbGQvbGQudGV4aSBiL2xkL2xkLnRleGkKK2luZGV4IGViN2JjYjk5MzMuLjNjNzNkNDQ1YTAgMTAwNjQ0CistLS0gYS9sZC9sZC50ZXhpCisrKysgYi9sZC9sZC50ZXhpCitAQCAtMjU1MSw2ICsyNTUxLDE4IEBAIHN0cmluZyBpZGVudGlmeWluZyB0aGUgb3JpZ2luYWwgbGlua2VkIGZpbGUgZG9lcyBub3QgY2hhbmdlLgorIAorIFBhc3NpbmcgQGNvZGV7bm9uZX0gZm9yIEB2YXJ7c3R5bGV9IGRpc2FibGVzIHRoZSBzZXR0aW5nIGZyb20gYW55CisgQGNvZGV7LS1idWlsZC1pZH0gb3B0aW9ucyBlYXJsaWVyIG9uIHRoZSBjb21tYW5kIGxpbmUuCisrCisrQGtpbmRleCAtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKytAaXRlbSAtLW5vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKytEbyBub3Qgd2FybiBmb3IgQG9wdGlvbnstTH0gb3B0aW9ucyB1c2luZyBzeXN0ZW0gZGlyZWN0b3JpZXMgc3VjaCBhcworK0BmaWxley91c3IvbGlifSB3aGVuIGNyb3NzIGxpbmtpbmcuICBUaGlzIG9wdGlvbiBpcyBpbnRlbmRlZCBmb3IgdXNlCisraW4gY2hyb290IGVudmlyb25tZW50cyB3aGVuIHN1Y2ggZGlyZWN0b3JpZXMgY29udGFpbiB0aGUgY29ycmVjdAorK2xpYnJhcmllcyBmb3IgdGhlIHRhcmdldCBzeXN0ZW0gcmF0aGVyIHRoYW4gdGhlIGhvc3QuCisrCisrQGtpbmRleCAtLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKytAaXRlbSAtLWVycm9yLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKytHaXZlIGFuIGVycm9yIGluc3RlYWQgb2YgYSB3YXJuaW5nIGZvciBAb3B0aW9uey1MfSBvcHRpb25zIHVzaW5nCisrc3lzdGVtIGRpcmVjdG9yaWVzIHdoZW4gY3Jvc3MgbGlua2luZy4KKyBAZW5kIHRhYmxlCisgCisgQGMgbWFuIGVuZAorZGlmZiAtLWdpdCBhL2xkL2xkZmlsZS5jIGIvbGQvbGRmaWxlLmMKK2luZGV4IDQxMWY3ZGRmOTcuLjE3ZGIxNmMyY2MgMTAwNjQ0CistLS0gYS9sZC9sZGZpbGUuYworKysrIGIvbGQvbGRmaWxlLmMKK0BAIC0xMTcsNiArMTE3LDIzIEBAIGxkZmlsZV9hZGRfbGlicmFyeV9wYXRoIChjb25zdCBjaGFyICpuYW1lLCBiZmRfYm9vbGVhbiBjbWRsaW5lKQorICAgICBuZXdfZGlycy0+bmFtZSA9IGNvbmNhdCAobGRfc3lzcm9vdCwgbmFtZSArIHN0cmxlbiAoIiRTWVNST09UIiksIChjb25zdCBjaGFyICopIE5VTEwpOworICAgZWxzZQorICAgICBuZXdfZGlycy0+bmFtZSA9IHhzdHJkdXAgKG5hbWUpOworKworKyNpZmRlZiBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUworKyAgaWYgKGNvbW1hbmRfbGluZS5wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzCisrICAmJiAoKCFzdHJuY21wIChuYW1lLCAiL2xpYiIsIDQpKQorKyAgICAgIHx8ICghc3RybmNtcCAobmFtZSwgIi91c3IvbGliIiwgOCkpCisrICAgICAgfHwgKCFzdHJuY21wIChuYW1lLCAiL3Vzci9sb2NhbC9saWIiLCAxNCkpCisrICAgICAgfHwgKCFzdHJuY21wIChuYW1lLCAiL3Vzci9YMTFSNi9saWIiLCAxNCkpKSkKKysgICB7CisrICAgICBpZiAoY29tbWFuZF9saW5lLmVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMpCisrICAgICAgIGVpbmZvIChfKCIlWCVQOiBlcnJvcjogbGlicmFyeSBzZWFyY2ggcGF0aCBcIiVzXCIgaXMgdW5zYWZlIGZvciAiCisrICAgICAgICAgICAgImNyb3NzLWNvbXBpbGF0aW9uXG4iKSwgbmFtZSk7CisrICAgICBlbHNlCisrICAgICAgIGVpbmZvIChfKCIlUDogd2FybmluZzogbGlicmFyeSBzZWFyY2ggcGF0aCBcIiVzXCIgaXMgdW5zYWZlIGZvciAiCisrICAgICAgICAgICAgImNyb3NzLWNvbXBpbGF0aW9uXG4iKSwgbmFtZSk7CisrICAgfQorKyNlbmRpZgorKworIH0KKyAKKyAvKiBUcnkgdG8gb3BlbiBhIEJGRCBmb3IgYSBsYW5nX2lucHV0X3N0YXRlbWVudC4gICovCitkaWZmIC0tZ2l0IGEvbGQvbGRsZXguaCBiL2xkL2xkbGV4LmgKK2luZGV4IDUyODdmMTlhN2YuLjU1MDk2ZTRmYzkgMTAwNjQ0CistLS0gYS9sZC9sZGxleC5oCisrKysgYi9sZC9sZGxleC5oCitAQCAtMTUwLDYgKzE1MCw4IEBAIGVudW0gb3B0aW9uX3ZhbHVlcworICAgT1BUSU9OX0ZPUkNFX0dST1VQX0FMTE9DQVRJT04sCisgICBPUFRJT05fUFJJTlRfTUFQX0RJU0NBUkRFRCwKKyAgIE9QVElPTl9OT19QUklOVF9NQVBfRElTQ0FSREVELAorKyAgT1BUSU9OX05PX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMsCisrICBPUFRJT05fRVJST1JfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUywKKyB9OworIAorIC8qIFRoZSBpbml0aWFsIHBhcnNlciBzdGF0ZXMuICAqLworZGlmZiAtLWdpdCBhL2xkL2xkbWFpbi5jIGIvbGQvbGRtYWluLmMKK2luZGV4IGRhMWFkMTc3NjMuLjEyZDBiMDdkOGEgMTAwNjQ0CistLS0gYS9sZC9sZG1haW4uYworKysrIGIvbGQvbGRtYWluLmMKK0BAIC0yNzQsNiArMjc0LDggQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgY29tbWFuZF9saW5lLndhcm5fbWlzbWF0Y2ggPSBUUlVFOworICAgY29tbWFuZF9saW5lLndhcm5fc2VhcmNoX21pc21hdGNoID0gVFJVRTsKKyAgIGNvbW1hbmRfbGluZS5jaGVja19zZWN0aW9uX2FkZHJlc3NlcyA9IC0xOworKyAgY29tbWFuZF9saW5lLnBvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMgPSBUUlVFOworKyAgY29tbWFuZF9saW5lLmVycm9yX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMgPSBGQUxTRTsKKyAKKyAgIC8qIFdlIGluaXRpYWxpemUgREVNQU5HTElORyBiYXNlZCBvbiB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKKyAgICAgIENPTExFQ1RfTk9fREVNQU5HTEUuICBUaGUgZ2NjIGNvbGxlY3QyIHByb2dyYW0gd2lsbCBkZW1hbmdsZSB0aGUKK2RpZmYgLS1naXQgYS9sZC9sZXhzdXAuYyBiL2xkL2xleHN1cC5jCitpbmRleCAzZDE1Y2M0OTFkLi4wZThiNGYyYjdhIDEwMDY0NAorLS0tIGEvbGQvbGV4c3VwLmMKKysrKyBiL2xkL2xleHN1cC5jCitAQCAtNTUwLDYgKzU1MCwxNCBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IGxkX29wdGlvbiBsZF9vcHRpb25zW10gPQorICAgeyB7Im5vLXByaW50LW1hcC1kaXNjYXJkZWQiLCBub19hcmd1bWVudCwgTlVMTCwgT1BUSU9OX05PX1BSSU5UX01BUF9ESVNDQVJERUR9LAorICAgICAnXDAnLCBOVUxMLCBOXygiRG8gbm90IHNob3cgZGlzY2FyZGVkIHNlY3Rpb25zIGluIG1hcCBmaWxlIG91dHB1dCIpLAorICAgICBUV09fREFTSEVTIH0sCisrICB7IHsibm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyIsIG5vX2FyZ3VtZW50LCBOVUxMLAorKyAgICAgT1BUSU9OX05PX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVN9LAorKyAgICAnXDAnLCBOVUxMLCBOXygiRG8gbm90IHdhcm4gZm9yIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIiksCisrICAgIFRXT19EQVNIRVMgfSwKKysgIHsgeyJlcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIiwgbm9fYXJndW1lbnQsIE5VTEwsCisrICAgICsgICAgIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTfSwKKysgICAgJ1wwJywgTlVMTCwgTl8oIkdpdmUgYW4gZXJyb3IgZm9yIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIiksCisrICAgIFRXT19EQVNIRVMgfSwKKyB9OworIAorICNkZWZpbmUgT1BUSU9OX0NPVU5UIEFSUkFZX1NJWkUgKGxkX29wdGlvbnMpCitAQCAtMTYwMyw2ICsxNjExLDEzIEBAIHBhcnNlX2FyZ3MgKHVuc2lnbmVkIGFyZ2MsIGNoYXIgKiphcmd2KQorIAorIAljYXNlIE9QVElPTl9QUklOVF9NQVBfRElTQ0FSREVEOgorIAkgIGNvbmZpZy5wcmludF9tYXBfZGlzY2FyZGVkID0gVFJVRTsKKysKKysJY2FzZSBPUFRJT05fTk9fUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUzoKKysJICBjb21tYW5kX2xpbmUucG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcyA9IEZBTFNFOworKwkgIGJyZWFrOworKworKwljYXNlIE9QVElPTl9FUlJPUl9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTOgorKwkgIGNvbW1hbmRfbGluZS5lcnJvcl9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzID0gVFJVRTsKKyAJICBicmVhazsKKyAJfQorICAgICB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWY0YWM3Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEwLUNoYW5nZS1kZWZhdWx0LWVtdWxhdGlvbi1mb3ItbWlwczY0LWxpbnV4LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotRnJvbSA5NThhNDk3NDliNzcyNjYwZDNiYWZiODA3NDg4MjljYmE2YmVkMDY1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTo0NDoxNCArMDAwMAotU3ViamVjdDogW1BBVENIIDEwLzE1XSBDaGFuZ2UgZGVmYXVsdCBlbXVsYXRpb24gZm9yIG1pcHM2NCotKi1saW51eAotCi13ZSBjaGFuZ2UgdGhlIGRlZmF1bHQgZW11bGF0aW9ucyB0byBiZSBONjQgaW5zdGVhZCBvZiBOMzIKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsgT0UgY29uZmlndXJhdGlvbiBTcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGJmZC9jb25maWcuYmZkICAgfCA4ICsrKystLS0tCi0gbGQvY29uZmlndXJlLnRndCB8IDggKysrKy0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JmZC9jb25maWcuYmZkIGIvYmZkL2NvbmZpZy5iZmQKLWluZGV4IDBlMWRkYjY1OWMuLmQ0ZjUwZjBhOGQgMTAwNjQ0Ci0tLS0gYS9iZmQvY29uZmlnLmJmZAotKysrIGIvYmZkL2NvbmZpZy5iZmQKLUBAIC05MTksMTIgKzkxOSwxMiBAQCBjYXNlICIke3Rhcmd9IiBpbgotICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbGVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIG1pcHNfZWNvZmZfYmVfdmVjIG1pcHNfZWNvZmZfbGVfdmVjIgotICAgICA7OwotICAgbWlwczY0KmVsLSotbGludXgqKQotLSAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX250cmFkX2xlX3ZlYwotLSAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGYzMl90cmFkX2JlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfbGVfdmVjIG1pcHNfZWxmNjRfdHJhZF9iZV92ZWMiCi0rICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmNjRfdHJhZF9sZV92ZWMKLSsgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX250cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGY2NF90cmFkX2JlX3ZlYyIKLSAgICAgOzsKLSAgIG1pcHM2NCotKi1saW51eCopCi0tICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjCi0tICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9sZV92ZWMgbWlwc19lbGYzMl90cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmNjRfdHJhZF9iZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyIKLSsgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGY2NF90cmFkX2JlX3ZlYwotKyAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjIG1pcHNfZWxmMzJfbnRyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfbGVfdmVjIgotICAgICA7OwotICAgbWlwcyplbC0qLWxpbnV4KikKLSAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl90cmFkX2xlX3ZlYwotZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZS50Z3QgYi9sZC9jb25maWd1cmUudGd0Ci1pbmRleCBiZWJhMTdlZjUxLi45MTdiZTZmOGViIDEwMDY0NAotLS0tIGEvbGQvY29uZmlndXJlLnRndAotKysrIGIvbGQvY29uZmlndXJlLnRndAotQEAgLTQ2OCwxMSArNDY4LDExIEBAIG1pcHMqZWwtKi12eHdvcmtzKikJdGFyZ19lbXVsPWVsZjMyZWxtaXB2eHdvcmtzCi0gbWlwcyotKi12eHdvcmtzKikJdGFyZ19lbXVsPWVsZjMyZWJtaXB2eHdvcmtzCi0gCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJlbG1pcHZ4d29ya3MiIDs7Ci0gbWlwcyotKi13aW5kaXNzKQl0YXJnX2VtdWw9ZWxmMzJtaXBzd2luZGlzcyA7OwotLW1pcHM2NCplbC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGYzMmx0c21pcG4zMgotLQkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwbjMyIGVsZjMybHRzbWlwIGVsZjMyYnRzbWlwIGVsZjY0bHRzbWlwIGVsZjY0YnRzbWlwIgotK21pcHM2NCplbC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGY2NGx0c21pcAotKwkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwbjMyIGVsZjMybHRzbWlwbjMyIGVsZjMybHRzbWlwIGVsZjMyYnRzbWlwIGVsZjY0YnRzbWlwIgotIAkJCXRhcmdfZXh0cmFfbGlicGF0aD0kdGFyZ19leHRyYV9lbXVscyA7OwotLW1pcHM2NCotKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmMzJidHNtaXBuMzIKLS0JCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmx0c21pcG4zMiBlbGYzMmJ0c21pcCBlbGYzMmx0c21pcCBlbGY2NGJ0c21pcCBlbGY2NGx0c21pcCIKLSttaXBzNjQqLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjY0YnRzbWlwCi0rCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXBuMzIgZWxmMzJsdHNtaXBuMzIgZWxmMzJidHNtaXAgZWxmMzJsdHNtaXAgZWxmNjRsdHNtaXAiCi0gCQkJdGFyZ19leHRyYV9saWJwYXRoPSR0YXJnX2V4dHJhX2VtdWxzIDs7Ci0gbWlwcyplbC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGYzMmx0c21pcAotIAkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwIGVsZjMybHRzbWlwbjMyIGVsZjY0bHRzbWlwIGVsZjMyYnRzbWlwbjMyIGVsZjY0YnRzbWlwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMC1GaXgtcnBhdGgtaW4tbGlidG9vbC13aGVuLXN5c3Jvb3QtaXMtZW5hYmxlZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjRmMWEwNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTAtRml4LXJwYXRoLWluLWxpYnRvb2wtd2hlbi1zeXNyb290LWlzLWVuYWJsZWQucGF0Y2gKQEAgLTAsMCArMSw0OSBAQAorRnJvbSA3MGYzZjJkOWU5MTJlYTc3N2ZhMTEzZTAyY2RiYzM0NjVhNjZlNDBkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTo0MjozOCArMDAwMAorU3ViamVjdDogW1BBVENIXSBGaXggcnBhdGggaW4gbGlidG9vbCB3aGVuIHN5c3Jvb3QgaXMgZW5hYmxlZAorCitFbmFibGluZyBzeXNyb290IHN1cHBvcnQgaW4gbGlidG9vbCBleHBvc2VkIGEgYnVnIHdoZXJlIHRoZSBmaW5hbAorbGlicmFyeSBoYWQgYW4gUlBBVEggZW5jb2RlZCBpbnRvIGl0IHdoaWNoIHN0aWxsIHBvaW50ZWQgdG8gdGhlCitzeXNyb290LiBUaGlzIHdvcmtzIGFyb3VuZCB0aGUgaXNzdWUgdW50aWwgaXQgZ2V0cyBzb3J0ZWQgb3V0Cit1cHN0cmVhbS4KKworRml4IHN1Z2dlc3RlZCBieSBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogU2NvdHQgR2FybWFuIDxzY290dC5hLmdhcm1hbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbHRtYWluLnNoIHwgMTAgKysrKysrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKK2luZGV4IDcwZTg1NmUwNjUuLjExZWU2ODRjY2MgMTAwNjQ0CistLS0gYS9sdG1haW4uc2gKKysrKyBiL2x0bWFpbi5zaAorQEAgLTgwMzUsOSArODAzNSwxMSBAQCBFT0YKKyAJICB0ZXN0ICIkb3B0X21vZGUiICE9IHJlbGluayAmJiBycGF0aD0iJGNvbXBpbGVfcnBhdGgkcnBhdGgiCisgCSAgZm9yIGxpYmRpciBpbiAkcnBhdGg7IGRvCisgCSAgICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYyI7IHRoZW4KKysJCSAgZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCisrCQkgIGxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0CisrCQkgIGZ1bmNfc3RyaXBuYW1lICc9JyAnJyAiJGxpYmRpciIKKysJCSAgbGliZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAJICAgICAgaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9zZXBhcmF0b3IiOyB0aGVuCistCQlmdW5jX3JlcGxhY2Vfc3lzcm9vdCAiJGxpYmRpciIKKy0JCWxpYmRpcj0kZnVuY19yZXBsYWNlX3N5c3Jvb3RfcmVzdWx0CisgCQlpZiB0ZXN0IC16ICIkaGFyZGNvZGVfbGliZGlycyI7IHRoZW4KKyAJCSAgaGFyZGNvZGVfbGliZGlycz0iJGxpYmRpciIKKyAJCWVsc2UKK0BAIC04NzcwLDYgKzg3NzIsMTAgQEAgRU9GCisgICAgICAgaGFyZGNvZGVfbGliZGlycz0KKyAgICAgICBmb3IgbGliZGlyIGluICRjb21waWxlX3JwYXRoICRmaW5hbGl6ZV9ycGF0aDsgZG8KKyAJaWYgdGVzdCAtbiAiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWMiOyB0aGVuCisrCSAgZnVuY19yZXBsYWNlX3N5c3Jvb3QgIiRsaWJkaXIiCisrCSAgbGliZGlyPSRmdW5jX3JlcGxhY2Vfc3lzcm9vdF9yZXN1bHQKKysJICBmdW5jX3N0cmlwbmFtZSAnPScgJycgIiRsaWJkaXIiCisrCSAgbGliZGlyPSRmdW5jX3N0cmlwbmFtZV9yZXN1bHQKKyAJICBpZiB0ZXN0IC1uICIkaGFyZGNvZGVfbGliZGlyX3NlcGFyYXRvciI7IHRoZW4KKyAJICAgIGlmIHRlc3QgLXogIiRoYXJkY29kZV9saWJkaXJzIjsgdGhlbgorIAkgICAgICBoYXJkY29kZV9saWJkaXJzPSIkbGliZGlyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMS1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMS1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGM1ZWQ2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQWRkLXN1cHBvcnQtZm9yLU5ldGxvZ2ljLVhMUC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5MyArMCwwIEBACi1Gcm9tIGU0YTBjZDMwYzdlOTMzNGVkNTA3YzkzMDE0YThiMmQxMzE1ZmY5MzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU3VuLCAxNCBGZWIgMjAxNiAxNzowNjoxOSArMDAwMAotU3ViamVjdDogW1BBVENIIDExLzE1XSBBZGQgc3VwcG9ydCBmb3IgTmV0bG9naWMgWExQCi0KLVBhdGNoIEZyb206IE5lYnUgUGhpbGlwcyA8bnBoaWxpcHNAbmV0bG9naWNtaWNyby5jb20+Ci0KLVVzaW5nIHRoZSBtaXBzaXNhNjRyMm5sbSB0YXJnZXQsIGFkZCBzdXBwb3J0IGZvciBYTFAgZnJvbQotTmV0bG9naWMuIEFsc28sIHVwZGF0ZSB2ZW5kb3IgbmFtZSB0byBOTE0gd2hlcmV2ZXIgYXBwbGljYWJsZS4KLQotVXNlIDB4MDAwMDAwODAgZm9yIElOU05fWExQLCB0aGUgdmFsdWUgMHgwMDAwMDA0MCBoYXMgYWxyZWFkeSBiZWVuCi1hc3NpZ25lZCB0byBJTlNOX09DVEVPTjMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBCYW9zaGFuIFBhbmcgPGJhb3NoYW4ucGFuZ0B3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gYmZkL2FvdXR4LmggICAgICAgICAgIHwgIDEgKwotIGJmZC9hcmNodXJlcy5jICAgICAgICB8ICAxICsKLSBiZmQvYmZkLWluMi5oICAgICAgICAgfCAgMSArCi0gYmZkL2NvbmZpZy5iZmQgICAgICAgIHwgIDUgKysrKysKLSBiZmQvY3B1LW1pcHMuYyAgICAgICAgfCAgNiArKysrLS0KLSBiZmQvZWxmeHgtbWlwcy5jICAgICAgfCAgOCArKysrKysrKwotIGJpbnV0aWxzL3JlYWRlbGYuYyAgICB8ICAxICsKLSBnYXMvY29uZmlnL3RjLW1pcHMuYyAgfCAgNCArKystCi0gZ2FzL2NvbmZpZ3VyZSAgICAgICAgIHwgIDMgKysrCi0gaW5jbHVkZS9lbGYvbWlwcy5oICAgIHwgIDEgKwotIGluY2x1ZGUvb3Bjb2RlL21pcHMuaCB8ICA2ICsrKysrKwotIGxkL2NvbmZpZ3VyZS50Z3QgICAgICB8ICAyICsrCi0gb3Bjb2Rlcy9taXBzLWRpcy5jICAgIHwgMTIgKysrKystLS0tLS0tCi0gb3Bjb2Rlcy9taXBzLW9wYy5jICAgIHwgMzEgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQotIDE0IGZpbGVzIGNoYW5nZWQsIDYxIGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmZkL2FvdXR4LmggYi9iZmQvYW91dHguaAotaW5kZXggZTVkOGRjZjM5MC4uMmNjNzRhMmQ2MSAxMDA2NDQKLS0tLSBhL2JmZC9hb3V0eC5oCi0rKysgYi9iZmQvYW91dHguaAotQEAgLTc5OSw2ICs3OTksNyBAQCBOQU1FIChhb3V0LCBtYWNoaW5lX3R5cGUpIChlbnVtIGJmZF9hcmNoaXRlY3R1cmUgYXJjaCwKLSAJY2FzZSBiZmRfbWFjaF9taXBzaXNhNjRyNjoKLSAJY2FzZSBiZmRfbWFjaF9taXBzX3NiMToKLSAJY2FzZSBiZmRfbWFjaF9taXBzX3hscjoKLSsJY2FzZSBiZmRfbWFjaF9taXBzX3hscDoKLSAJICAvKiBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIE1JUFMzLCBNSVBTNCwgTUlQUzE2LCBNSVBTMzIsIGV0Yy4gICovCi0gCSAgYXJjaF9mbGFncyA9IE1fTUlQUzI7Ci0gCSAgYnJlYWs7Ci1kaWZmIC0tZ2l0IGEvYmZkL2FyY2h1cmVzLmMgYi9iZmQvYXJjaHVyZXMuYwotaW5kZXggNjQ3Y2YwZDhkNC4uN2UxZDBjODEwZiAxMDA2NDQKLS0tLSBhL2JmZC9hcmNodXJlcy5jCi0rKysgYi9iZmQvYXJjaHVyZXMuYwotQEAgLTE4NSw2ICsxODUsNyBAQCBERVNDUklQVElPTgotIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNfb2N0ZW9uMwkJNjUwMwotIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxyCQk4ODc2ODIJIHsqIGRlY2ltYWwgJ1hMUicuICAqfQotIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjIJNzM2NTUwCSB7KiBkZWNpbWFsICdJQTInLiAgKn0KLSsuI2RlZmluZSBiZmRfbWFjaF9taXBzX3hscCAgICAgICAgICAgICAgODg3NjgwICAgeyogZGVjaW1hbCAnWExQJy4gICp9Ci0gLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMyCQkzMgotIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIyCQkzMwotIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIzCQkzNAotZGlmZiAtLWdpdCBhL2JmZC9iZmQtaW4yLmggYi9iZmQvYmZkLWluMi5oCi1pbmRleCBlMjVkYTUwYWFmLi5lMjUxZDdlN2FhIDEwMDY0NAotLS0tIGEvYmZkL2JmZC1pbjIuaAotKysrIGIvYmZkL2JmZC1pbjIuaAotQEAgLTIwODQsNiArMjA4NCw3IEBAIGVudW0gYmZkX2FyY2hpdGVjdHVyZQotICNkZWZpbmUgYmZkX21hY2hfbWlwc19vY3Rlb24zICAgICAgICAgIDY1MDMKLSAjZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxyICAgICAgICAgICAgICA4ODc2ODIgICAvKiBkZWNpbWFsICdYTFInLiAgKi8KLSAjZGVmaW5lIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjIgICA3MzY1NTAgICAvKiBkZWNpbWFsICdJQTInLiAgKi8KLSsjZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxwICAgICAgICAgICAgICA4ODc2ODAgICAvKiBkZWNpbWFsICdYTFAnLiAgKi8KLSAjZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMiAgICAgICAgICAgICAzMgotICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjIgICAgICAgICAgIDMzCi0gI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMyAgICAgICAgICAgMzQKLWRpZmYgLS1naXQgYS9iZmQvY29uZmlnLmJmZCBiL2JmZC9jb25maWcuYmZkCi1pbmRleCBjYzY1NTQ3NTg4Li4zNjE0ZmY3OWQ0IDEwMDY0NAotLS0tIGEvYmZkL2NvbmZpZy5iZmQKLSsrKyBiL2JmZC9jb25maWcuYmZkCi1AQCAtOTAyLDYgKzkwMiwxMSBAQCBjYXNlICIke3Rhcmd9IiBpbgotICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX2xlX3ZlYwotICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfYmVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIgotICAgICA7OwotKyAgbWlwc2lzYTY0Ki0qLWVsZiopCi0rCXRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfdHJhZF9iZV92ZWMKLSsJdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmNjRfdHJhZF9iZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyIKLSsJd2FudDY0PXRydWUKLSsJOzsKLSAgIG1pcHMqLSotZWxmKiB8IG1pcHMqLSotcnRlbXMqIHwgbWlwcyotKi13aW5kaXNzIHwgbWlwcyotKi1ub25lKQotICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX2JlX3ZlYwotICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbGVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIgotZGlmZiAtLWdpdCBhL2JmZC9jcHUtbWlwcy5jIGIvYmZkL2NwdS1taXBzLmMKLWluZGV4IGIzNTk0OTEzMDUuLjYxYTNlN2FhY2EgMTAwNjQ0Ci0tLS0gYS9iZmQvY3B1LW1pcHMuYwotKysrIGIvYmZkL2NwdS1taXBzLmMKLUBAIC0xMDcsNyArMTA3LDggQEAgZW51bQotICAgSV9taXBzb2N0ZW9uMywKLSAgIElfeGxyLAotICAgSV9pbnRlcmFwdGl2X21yMiwKLS0gIElfbWljcm9taXBzCi0rICBJX21pY3JvbWlwcywKLSsgIElfeGxwCi0gfTsKLSAKLSAjZGVmaW5lIE5OKGluZGV4KSAoJmFyY2hfaW5mb19zdHJ1Y3RbKGluZGV4KSArIDFdKQotQEAgLTE2Miw3ICsxNjMsOCBAQCBzdGF0aWMgY29uc3QgYmZkX2FyY2hfaW5mb190eXBlIGFyY2hfaW5mb19zdHJ1Y3RbXSA9Ci0gICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfeGxyLCAibWlwczp4bHIiLAkgIEZBTFNFLCBOTihJX3hscikpLAotICAgTiAoMzIsIDMyLCBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyLCAibWlwczppbnRlcmFwdGl2LW1yMiIsIEZBTFNFLAotICAgICAgTk4oSV9pbnRlcmFwdGl2X21yMikpLAotLSAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX21pY3JvbWlwcywibWlwczptaWNyb21pcHMiLEZBTFNFLDApCi0rICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfbWljcm9taXBzLCJtaXBzOm1pY3JvbWlwcyIsRkFMU0UsTk4oSV9taWNyb21pcHMpKSwKLSsgIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc194bHAsICJtaXBzOnhscCIsICAgICAgRkFMU0UsIDApCi0gfTsKLSAKLSAvKiBUaGUgZGVmYXVsdCBhcmNoaXRlY3R1cmUgaXMgbWlwczozMDAwLCBidXQgd2l0aCBhIG1hY2hpbmUgbnVtYmVyIG9mCi1kaWZmIC0tZ2l0IGEvYmZkL2VsZnh4LW1pcHMuYyBiL2JmZC9lbGZ4eC1taXBzLmMKLWluZGV4IDU5OThiYzQzYTguLjBkNTc5NTIyMmIgMTAwNjQ0Ci0tLS0gYS9iZmQvZWxmeHgtbWlwcy5jCi0rKysgYi9iZmQvZWxmeHgtbWlwcy5jCi1AQCAtNjkxOSw2ICs2OTE5LDkgQEAgX2JmZF9lbGZfbWlwc19tYWNoIChmbGFnd29yZCBmbGFncykKLSAgICAgY2FzZSBFX01JUFNfTUFDSF9JQU1SMjoKLSAgICAgICByZXR1cm4gYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMjsKLSAKLSsgICAgY2FzZSBFX01JUFNfTUFDSF9YTFA6Ci0rICAgICAgcmV0dXJuIGJmZF9tYWNoX21pcHNfeGxwOwotKwotICAgICBkZWZhdWx0OgotICAgICAgIHN3aXRjaCAoZmxhZ3MgJiBFRl9NSVBTX0FSQ0gpCi0gCXsKLUBAIC0xMjE5OSw2ICsxMjIwMiwxMCBAQCBtaXBzX3NldF9pc2FfZmxhZ3MgKGJmZCAqYWJmZCkKLSAgICAgICB2YWwgPSBFX01JUFNfQVJDSF82NFIyIHwgRV9NSVBTX01BQ0hfT0NURU9OMjsKLSAgICAgICBicmVhazsKLSAKLSsJY2FzZSBiZmRfbWFjaF9taXBzX3hscDoKLSsJICB2YWwgPSBFX01JUFNfQVJDSF82NFIyIHwgRV9NSVBTX01BQ0hfWExQOwotKwkgIGJyZWFrOwotKwotICAgICBjYXNlIGJmZF9tYWNoX21pcHNpc2EzMjoKLSAgICAgICB2YWwgPSBFX01JUFNfQVJDSF8zMjsKLSAgICAgICBicmVhazsKLUBAIC0xNDIxNCw2ICsxNDIyMSw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgbWlwc19tYWNoX2V4dGVuc2lvbiBtaXBzX21hY2hfZXh0ZW5zaW9uc1tdID0KLSAgIHsgYmZkX21hY2hfbWlwc19nczI2NGUsIGJmZF9tYWNoX21pcHNfZ3M0NjRlIH0sCi0gICB7IGJmZF9tYWNoX21pcHNfZ3M0NjRlLCBiZmRfbWFjaF9taXBzX2dzNDY0IH0sCi0gICB7IGJmZF9tYWNoX21pcHNfZ3M0NjQsIGJmZF9tYWNoX21pcHNpc2E2NHIyIH0sCi0rICB7IGJmZF9tYWNoX21pcHNfeGxwLCBiZmRfbWFjaF9taXBzaXNhNjRyMiB9LAotIAotICAgLyogTUlQUzY0IGV4dGVuc2lvbnMuICAqLwotICAgeyBiZmRfbWFjaF9taXBzaXNhNjRyMiwgYmZkX21hY2hfbWlwc2lzYTY0IH0sCi1kaWZmIC0tZ2l0IGEvYmludXRpbHMvcmVhZGVsZi5jIGIvYmludXRpbHMvcmVhZGVsZi5jCi1pbmRleCBiMTNlYjZhNDNiLi45ZGYzNzQyNjgyIDEwMDY0NAotLS0tIGEvYmludXRpbHMvcmVhZGVsZi5jCi0rKysgYi9iaW51dGlscy9yZWFkZWxmLmMKLUBAIC0zNDEyLDYgKzM0MTIsNyBAQCBnZXRfbWFjaGluZV9mbGFncyAoRmlsZWRhdGEgKiBmaWxlZGF0YSwgdW5zaWduZWQgZV9mbGFncywgdW5zaWduZWQgZV9tYWNoaW5lKQotIAkgICAgY2FzZSBFX01JUFNfTUFDSF9PQ1RFT04zOiBzdHJjYXQgKGJ1ZiwgIiwgb2N0ZW9uMyIpOyBicmVhazsKLSAJICAgIGNhc2UgRV9NSVBTX01BQ0hfWExSOiAgc3RyY2F0IChidWYsICIsIHhsciIpOyBicmVhazsKLSAJICAgIGNhc2UgRV9NSVBTX01BQ0hfSUFNUjI6ICBzdHJjYXQgKGJ1ZiwgIiwgaW50ZXJhcHRpdi1tcjIiKTsgYnJlYWs7Ci0rCSAgICBjYXNlIEVfTUlQU19NQUNIX1hMUDogIHN0cmNhdCAoYnVmLCAiLCB4bHAiKTsgYnJlYWs7Ci0gCSAgICBjYXNlIDA6Ci0gCSAgICAvKiBXZSBzaW1wbHkgaWdub3JlIHRoZSBmaWVsZCBpbiB0aGlzIGNhc2UgdG8gYXZvaWQgY29uZnVzaW9uOgotIAkgICAgICAgTUlQUyBFTEYgZG9lcyBub3Qgc3BlY2lmeSBFRl9NSVBTX01BQ0gsIGl0IGlzIGEgR05VCi1kaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZy90Yy1taXBzLmMgYi9nYXMvY29uZmlnL3RjLW1pcHMuYwotaW5kZXggYWU1NTkwNDIyOS4uZDY4ODI3MTJmNSAxMDA2NDQKLS0tLSBhL2dhcy9jb25maWcvdGMtbWlwcy5jCi0rKysgYi9nYXMvY29uZmlnL3RjLW1pcHMuYwotQEAgLTU1NCw2ICs1NTQsNyBAQCBzdGF0aWMgaW50IG1pcHNfMzJiaXRtb2RlID0gMDsKLSAgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfUk03MDAwICAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1ZSNTUwMCAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IG1pcHNfb3B0cy5taWNyb21pcHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfWExQICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKQotIAotIC8qIFdoZXRoZXIgdGhlIHByb2Nlc3NvciB1c2VzIGhhcmR3YXJlIGludGVybG9ja3MgdG8gcHJvdGVjdCByZWFkcwotQEAgLTU4Myw2ICs1ODQsNyBAQCBzdGF0aWMgaW50IG1pcHNfMzJiaXRtb2RlID0gMDsKLSAgICAgJiYgbWlwc19vcHRzLmlzYSAhPSBJU0FfTUlQUzMpICAgICAgICAgICAgICAgICAgICBcCi0gICAgfHwgbWlwc19vcHRzLmFyY2ggPT0gQ1BVX1I0MzAwICAgICAgICAgICAgICAgICAgICAgXAotICAgIHx8IG1pcHNfb3B0cy5taWNyb21pcHMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFwKLSsgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfWExQICAgICAgICAgICAgICAgICAgICAgICBcCi0gICAgKQotIAotIC8qIFdoZXRoZXIgdGhlIHByb2Nlc3NvciB1c2VzIGhhcmR3YXJlIGludGVybG9ja3MgdG8gcHJvdGVjdCByZWFkcwotQEAgLTE5ODY3LDcgKzE5ODY5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBzX2NwdV9pbmZvIG1pcHNfY3B1X2luZm9fdGFibGVbXSA9Ci0gICAvKiBCcm9hZGNvbSBYTFAuCi0gICAgICBYTFAgaXMgbW9zdGx5IGxpa2UgWExSLCB3aXRoIHRoZSBwcm9taW5lbnQgZXhjZXB0aW9uIHRoYXQgaXQgaXMKLSAgICAgIE1JUFM2NFIyIHJhdGhlciB0aGFuIE1JUFM2NC4gICovCi0tICB7ICJ4bHAiLAkgICAgICAwLCAwLAkJCUlTQV9NSVBTNjRSMiwgQ1BVX1hMUiB9LAotKyAgeyAieGxwIiwJICAgICAgMCwgMCwJCQlJU0FfTUlQUzY0UjIsIENQVV9YTFAgfSwKLSAKLSAgIC8qIE1JUFMgNjQgUmVsZWFzZSA2ICovCi0gICB7ICJpNjQwMCIsCSAgICAgIDAsIEFTRV9NU0EsCQlJU0FfTUlQUzY0UjYsIENQVV9NSVBTNjRSNn0sCi1kaWZmIC0tZ2l0IGEvZ2FzL2NvbmZpZ3VyZSBiL2dhcy9jb25maWd1cmUKLWluZGV4IGE4MmZkZTdmYTguLmFmYzc3YzM0N2EgMTAwNzU1Ci0tLS0gYS9nYXMvY29uZmlndXJlCi0rKysgYi9nYXMvY29uZmlndXJlCi1AQCAtMTMzNjQsNiArMTMzNjQsOSBAQCBfQUNFT0YKLSAJICBtaXBzaXNhNjRyNiB8IG1pcHNpc2E2NHI2ZWwpCi0gCSAgICBtaXBzX2NwdT1taXBzNjRyNgotIAkgICAgOzsKLSsJICBtaXBzaXNhNjRyMm5sbSB8IG1pcHNpc2E2NHIybmxtZWwpCi0rCQltaXBzX2NwdT14bHAKLSsJCTs7Ci0gCSAgbWlwc3R4MzkgfCBtaXBzdHgzOWVsKQotIAkgICAgbWlwc19jcHU9cjM5MDAKLSAJICAgIDs7Ci1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9lbGYvbWlwcy5oIGIvaW5jbHVkZS9lbGYvbWlwcy5oCi1pbmRleCBiNzZkNDUwYWUyLi43Y2RkYjM2NWFkIDEwMDY0NAotLS0tIGEvaW5jbHVkZS9lbGYvbWlwcy5oCi0rKysgYi9pbmNsdWRlL2VsZi9taXBzLmgKLUBAIC0yOTAsNiArMjkwLDcgQEAgRU5EX1JFTE9DX05VTUJFUlMgKFJfTUlQU19tYXhleHQpCi0gI2RlZmluZSBFX01JUFNfTUFDSF9TQjEgICAgICAgICAweDAwOGEwMDAwCi0gI2RlZmluZSBFX01JUFNfTUFDSF9PQ1RFT04JMHgwMDhiMDAwMAotICNkZWZpbmUgRV9NSVBTX01BQ0hfWExSICAgICAJMHgwMDhjMDAwMAotKyNkZWZpbmUgRV9NSVBTX01BQ0hfWExQICAgICAgICAgMHgwMDhmMDAwMAotICNkZWZpbmUgRV9NSVBTX01BQ0hfT0NURU9OMgkweDAwOGQwMDAwCi0gI2RlZmluZSBFX01JUFNfTUFDSF9PQ1RFT04zCTB4MDA4ZTAwMDAKLSAjZGVmaW5lIEVfTUlQU19NQUNIXzU0MDAJMHgwMDkxMDAwMAotZGlmZiAtLWdpdCBhL2luY2x1ZGUvb3Bjb2RlL21pcHMuaCBiL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAotaW5kZXggYWJkNTJjODk4MC4uNTNiNjc1MmExYyAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvb3Bjb2RlL21pcHMuaAotKysrIGIvaW5jbHVkZS9vcGNvZGUvbWlwcy5oCi1AQCAtMTI2MCw2ICsxMjYwLDggQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtaXBzX2lzYV90YWJsZVtdID0gewotICNkZWZpbmUgSU5TTl9YTFIgICAgICAgICAgICAgICAgIDB4MDAwMDAwMjAKLSAvKiBJbWFnaW5hdGlvbiBpbnRlckFwdGl2IE1SMi4gICovCi0gI2RlZmluZSBJTlNOX0lOVEVSQVBUSVZfTVIyCSAgMHgwNDAwMDAwMAotKy8qIE5ldGxvZ2ljIFhsUCBpbnN0cnVjdGlvbiAqLwotKyNkZWZpbmUgSU5TTl9YTFAJCTB4MDAwMDAwODAKLSAKLSAvKiBEU1AgQVNFICovCi0gI2RlZmluZSBBU0VfRFNQCQkJMHgwMDAwMDAwMQotQEAgLTEzODEsNiArMTM4Myw3IEBAIHN0YXRpYyBjb25zdCB1bnNpZ25lZCBpbnQgbWlwc19pc2FfdGFibGVbXSA9IHsKLSAjZGVmaW5lIENQVV9PQ1RFT04zCTY1MDMKLSAjZGVmaW5lIENQVV9YTFIgICAgIAk4ODc2ODIgICAJLyogZGVjaW1hbCAnWExSJyAgICovCi0gI2RlZmluZSBDUFVfSU5URVJBUFRJVl9NUjIgNzM2NTUwCS8qIGRlY2ltYWwgJ0lBMicgICovCi0rI2RlZmluZSBDUFVfWExQICAgICAgICAgODg3NjgwICAgICAgLyogZGVjaW1hbCAnWExQJyAgICovCi0gCi0gLyogUmV0dXJuIHRydWUgaWYgdGhlIGdpdmVuIENQVSBpcyBpbmNsdWRlZCBpbiBJTlNOXyogbWFzayBNQVNLLiAgKi8KLSAKLUBAIC0xNDU4LDYgKzE0NjEsOSBAQCBjcHVfaXNfbWVtYmVyIChpbnQgY3B1LCB1bnNpZ25lZCBpbnQgbWFzaykKLSAgICAgICByZXR1cm4gKChtYXNrICYgSU5TTl9JU0FfTUFTSykgPT0gSU5TTl9JU0EzMlI2KQotIAkgICAgIHx8ICgobWFzayAmIElOU05fSVNBX01BU0spID09IElOU05fSVNBNjRSNik7Ci0gCi0rICAgIGNhc2UgQ1BVX1hMUDoKLSsgICAgICByZXR1cm4gKG1hc2sgJiBJTlNOX1hMUCkgIT0gMDsKLSsKLSAgICAgZGVmYXVsdDoKLSAgICAgICByZXR1cm4gRkFMU0U7Ci0gICAgIH0KLWRpZmYgLS1naXQgYS9sZC9jb25maWd1cmUudGd0IGIvbGQvY29uZmlndXJlLnRndAotaW5kZXggOTE3YmU2ZjhlYi4uMzQ3ZGY2YzNmNiAxMDA2NDQKLS0tLSBhL2xkL2NvbmZpZ3VyZS50Z3QKLSsrKyBiL2xkL2NvbmZpZ3VyZS50Z3QKLUBAIC00NTQsNiArNDU0LDggQEAgbWlwcyplbC1zZGUtZWxmKiB8IG1pcHMqZWwtbXRpLWVsZiogfCBtaXBzKmVsLWltZy1lbGYqKQotIG1pcHMqLXNkZS1lbGYqIHwgbWlwcyotbXRpLWVsZiogfCBtaXBzKi1pbWctZWxmKikKLSAJCQl0YXJnX2VtdWw9ZWxmMzJidHNtaXAKLSAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmx0c21pcCBlbGYzMmJ0c21pcG4zMiBlbGY2NGJ0c21pcCBlbGYzMmx0c21pcG4zMiBlbGY2NGx0c21pcCIgOzsKLSttaXBzaXNhNjQqLSotZWxmKikJdGFyZ19lbXVsPWVsZjMyYnRzbWlwCi0rCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJsdHNtaXAgZWxmNjRidHNtaXAgZWxmNjRsdHNtaXAiIDs7Ci0gbWlwczY0KmVsLXBzMi1lbGYqKQl0YXJnX2VtdWw9ZWxmMzJscjU5MDBuMzIKLSAJCQl0YXJnX2V4dHJhX2VtdWxzPSJlbGYzMmxyNTkwMCIKLSAJCQl0YXJnX2V4dHJhX2xpYnBhdGg9JHRhcmdfZXh0cmFfZW11bHMgOzsKLWRpZmYgLS1naXQgYS9vcGNvZGVzL21pcHMtZGlzLmMgYi9vcGNvZGVzL21pcHMtZGlzLmMKLWluZGV4IDBkZDg1ZTM3NzkuLjFlYTcwOGRkZTcgMTAwNjQ0Ci0tLS0gYS9vcGNvZGVzL21pcHMtZGlzLmMKLSsrKyBiL29wY29kZXMvbWlwcy1kaXMuYwotQEAgLTY3MywxMyArNjczLDExIEBAIGNvbnN0IHN0cnVjdCBtaXBzX2FyY2hfY2hvaWNlIG1pcHNfYXJjaF9jaG9pY2VzW10gPQotICAgICBtaXBzX2NwMHNlbF9uYW1lc194bHIsIEFSUkFZX1NJWkUgKG1pcHNfY3Awc2VsX25hbWVzX3hsciksCi0gICAgIG1pcHNfY3AxX25hbWVzX21pcHMzMjY0LCBtaXBzX2h3cl9uYW1lc19udW1lcmljIH0sCi0gCi0tICAvKiBYTFAgaXMgbW9zdGx5IGxpa2UgWExSLCB3aXRoIHRoZSBwcm9taW5lbnQgZXhjZXB0aW9uIGl0IGlzIGJlaW5nCi0tICAgICBNSVBTNjRSMi4gICovCi0tICB7ICJ4bHAiLCAxLCBiZmRfbWFjaF9taXBzX3hsciwgQ1BVX1hMUiwKLS0gICAgSVNBX01JUFM2NFIyIHwgSU5TTl9YTFIsIDAsCi0tICAgIG1pcHNfY3AwX25hbWVzX3hsciwKLS0gICAgbWlwc19jcDBzZWxfbmFtZXNfeGxyLCBBUlJBWV9TSVpFIChtaXBzX2NwMHNlbF9uYW1lc194bHIpLAotLSAgICBtaXBzX2NwMV9uYW1lc19taXBzMzI2NCwgbWlwc19od3JfbmFtZXNfbnVtZXJpYyB9LAotKyAgeyAieGxwIiwgMSwgYmZkX21hY2hfbWlwc194bHAsIENQVV9YTFAsCi0rICAgIElTQV9NSVBTNjRSMiB8IElOU05fWExQLCAwLAotKyAgICBtaXBzX2NwMF9uYW1lc19taXBzMzI2NHIyLAotKyAgICBtaXBzX2NwMHNlbF9uYW1lc19taXBzMzI2NHIyLCBBUlJBWV9TSVpFIChtaXBzX2NwMHNlbF9uYW1lc19taXBzMzI2NHIyKSwKLSsgICAgbWlwc19jcDFfbmFtZXNfbWlwczMyNjQsIG1pcHNfaHdyX25hbWVzX21pcHMzMjY0cjIgfSwKLSAKLSAgIC8qIFRoaXMgZW50cnksIG1pcHMxNiwgaXMgaGVyZSBvbmx5IGZvciBJU0EvcHJvY2Vzc29yIHNlbGVjdGlvbjsgZG8KLSAgICAgIG5vdCBwcmludCBpdHMgbmFtZS4gICovCi1kaWZmIC0tZ2l0IGEvb3Bjb2Rlcy9taXBzLW9wYy5jIGIvb3Bjb2Rlcy9taXBzLW9wYy5jCi1pbmRleCA4MzdkYTZiZDk5Li5kM2VhNWI4ODc3IDEwMDY0NAotLS0tIGEvb3Bjb2Rlcy9taXBzLW9wYy5jCi0rKysgYi9vcGNvZGVzL21pcHMtb3BjLmMKLUBAIC0zMjgsNiArMzI4LDcgQEAgZGVjb2RlX21pcHNfb3BlcmFuZCAoY29uc3QgY2hhciAqcCkKLSAjZGVmaW5lIElPQ1QzCUlOU05fT0NURU9OMwotICNkZWZpbmUgWExSICAgICBJTlNOX1hMUgotICNkZWZpbmUgSUFNUjIJSU5TTl9JTlRFUkFQVElWX01SMgotKyNkZWZpbmUgWExQCUlOU05fWExQCi0gI2RlZmluZSBJVklSVAlBU0VfVklSVAotICNkZWZpbmUgSVZJUlQ2NAlBU0VfVklSVDY0Ci0gCi1AQCAtOTg5LDYgKzk5MCw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KLSB7ImNsbyIsCQkJIlUscyIsCQkweDcwMDAwMDIxLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTMyfE41NSwJMCwJSTM3IH0sCi0geyJjbHoiLAkJCSJkLHMiLAkJMHgwMDAwMDA1MCwgMHhmYzFmMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUkzNywJCTAsCTAgfSwKLSB7ImNseiIsCQkJIlUscyIsCQkweDcwMDAwMDIwLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTMyfE41NSwJMCwJSTM3IH0sCi0reyJjcmMiLAkJCSJkLHMsdCIsCTB4NzAwMDAwMWMsIDB4ZmMwMDA3ZmYsCVdSXzF8UkRfMnxSRF8zLAkwLAkJWExQLCAJCTAsCTAgfSwKLSAvKiBjdGMwIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLiAgKi8KLSB7ImN0YzEiLAkJInQsRyIsCQkweDQ0YzAwMDAwLCAweGZmZTAwN2ZmLAlSRF8xfFdSX0NDfENNLAkJMCwJCUkxLAkJMCwJMCB9LAotIHsiY3RjMSIsCQkidCxTIiwJCTB4NDRjMDAwMDAsIDB4ZmZlMDA3ZmYsCVJEXzF8V1JfQ0N8Q00sCQkwLAkJSTEsCQkwLAkwIH0sCi1AQCAtMTAyMSwxMiArMTAyMywxMyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0geyJkYWRkaXUiLAkJInQscixqIiwJMHg2NDAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8yLAkJMCwJCUkzLAkJMCwJMCB9LAotIHsiZGFkZHUiLAkJImQsdix0IiwJMHgwMDAwMDAyZCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTMsCQkwLAkwIH0sCi0geyJkYWRkdSIsCQkidCxyLEkiLAkwLCAgICAoaW50KSBNX0RBRERVX0ksCUlOU05fTUFDUk8sCQkwLAkJSTMsCQkwLAkwIH0sCi0teyJkYWRkd2MiLAkJImQscyx0IiwgCTB4NzAwMDAwMzgsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zfFdSX0MwfFJEX0MwLCAwLAkJWExSLAkJMCwJMCB9LAotK3siZGFkZHdjIiwJCSJkLHMsdCIsIAkweDcwMDAwMDM4LCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfM3xXUl9DMHxSRF9DMCwgMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSB7ImRicmVhayIsCQkiIiwJCTB4NzAwMDAwM2YsIDB4ZmZmZmZmZmYsCTAsCQkJMCwJCU41LAkJMCwJMCB9LAotIHsiZGNsbyIsCQkiZCxzIiwJCTB4MDAwMDAwNTMsIDB4ZmMxZjA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJNjksCQkwLAkwIH0sCi0geyJkY2xvIiwJCSJVLHMiLAkgCTB4NzAwMDAwMjUsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMiwgCTAsCQlJNjR8TjU1LAkwLAlJNjkgfSwKLSB7ImRjbHoiLAkJImQscyIsCQkweDAwMDAwMDUyLCAweGZjMWYwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTY5LAkJMCwJMCB9LAotIHsiZGNseiIsCQkiVSxzIiwJIAkweDcwMDAwMDI0LCAweGZjMDAwN2ZmLCBXUl8xfFJEXzIsIAkwLAkJSTY0fE41NSwJMCwJSTY5IH0sCi0reyJkY3JjIiwJCSJkLHMsdCIsCTB4NzAwMDAwMWQsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkwLAkJWExQLCAJCTAsCTAgfSwKLSAvKiBkY3RyIGFuZCBkY3R3IGFyZSB1c2VkIG9uIHRoZSByNTAwMC4gICovCi0geyJkY3RyIiwJCSJvKGIpIiwJIAkweGJjMDUwMDAwLCAweGZjMWYwMDAwLCBSRF8yLAkJCTAsCQlJMywJCTAsCTAgfSwKLSB7ImRjdHciLAkJIm8oYikiLAkJMHhiYzA5MDAwMCwgMHhmYzFmMDAwMCwgUkRfMiwJCQkwLAkJSTMsCQkwLAkwIH0sCi1AQCAtMTA5OCw2ICsxMTAxLDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQotIHsiZG1mYzAiLAkJInQsRyxIIiwJMHg0MDIwMDAwMCwgMHhmZmUwMDdmOCwJV1JfMXxSRF9DMHxMQywJCTAsCQlJNjQsCQkwLAkwIH0sCi0geyJkbWZnYzAiLAkJInQsRyIsCQkweDQwNjAwMTAwLCAweGZmZTAwN2ZmLCBXUl8xfFJEX0MwfExDLAkJMCwJCTAsCQlJVklSVDY0LCAwIH0sCi0geyJkbWZnYzAiLAkJInQsRyxIIiwJMHg0MDYwMDEwMCwgMHhmZmUwMDdmOCwgV1JfMXxSRF9DMHxMQywJCTAsCQkwLAkJSVZJUlQ2NCwgMCB9LAotK3siZG1mdXIiLAkJInQsZCIsCQkweDcwMDAwMDFlLCAweGZmZTAwN2ZmLCBXUl8xLAkJCTAsCQlYTFAsCQkwLAkwIH0sCi0geyJkbXQiLAkJCSIiLAkJMHg0MTYwMGJjMSwgMHhmZmZmZmZmZiwgVFJBUCwJCQkwLAkJMCwJCU1UMzIsCTAgfSwKLSB7ImRtdCIsCQkJInQiLAkJMHg0MTYwMGJjMSwgMHhmZmUwZmZmZiwgV1JfMXxUUkFQLAkJMCwJCTAsCQlNVDMyLAkwIH0sCi0geyJkbXRjMCIsCQkidCxHIiwJCTB4NDBhMDAwMDAsIDB4ZmZlMDA3ZmYsCVJEXzF8V1JfQzB8V1JfQ0N8Q00sCTAsCQlJMywJCTAsCUVFIH0sCi1AQCAtMTExMyw2ICsxMTE3LDggQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQotIC8qIGRtZmMzIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLiAgKi8KLSAvKiBkbXRjMyBpcyBhdCB0aGUgYm90dG9tIG9mIHRoZSB0YWJsZS4gICovCi0geyJkbXVoIiwJCSJkLHMsdCIsCTB4MDAwMDAwZGMsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkJMCwJCUk2OSwJCTAsCTAgfSwKLSt7ImRtdHVyIiwJCSJ0LGQiLAkJMHg3MDAwMDAxZiwgMHhmZmUwMDdmZiwJUkRfMSwJCQkwLAkJWExQLAkJMCwJMCB9LAotK3siZG11bCIsCQkiZCxzLHQiLAkweDcwMDAwMDA2LCAweGZjMDAwN2ZmLAlXUl8xfFJEXzJ8UkRfMywJCTAsCQlYTFAsCQkwLAkwIH0sCi0geyJkbXVsIiwJCSJkLHMsdCIsCTB4MDAwMDAwOWMsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zLAkJMCwJCUk2OSwJCTAsCTAgfSwKLSB7ImRtdWwiLAkJImQsdix0IiwJMHg3MDAwMDAwMywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzN8V1JfSElMTywJMCwJCUlPQ1QsCQkwLAkwIH0sCi0geyJkbXVsIiwJCSJkLHYsdCIsCTAsICAgIChpbnQpIE1fRE1VTCwJSU5TTl9NQUNSTywJCTAsCQlJMywJCTAsCU0zMnxJNjkgfSwKLUBAIC0xMjY2LDkgKzEyNzIsOSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0geyJsZCIsCQkJInMsLWIoK1IpIiwJMHhlYzE4MDAwMCwgMHhmYzFjMDAwMCwgV1JfMSwJCQlSRF9wYywJCUk2OSwJCTAsCTAgfSwKLSB7ImxkIiwJCQkidCxBKGIpIiwJMCwgICAgKGludCkgTV9MRF9BQiwJSU5TTl9NQUNSTywJCTAsCQlJMSwJCTAsCTAgfSwKLSB7ImxkIiwJCQkidCxvKGIpIiwJMHhkYzAwMDAwMCwgMHhmYzAwMDAwMCwgV1JfMXxSRF8zfExNLAkJMCwJCUkzLAkJMCwJMCB9LAotLXsibGRhZGR3IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMCwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKLS17ImxkYWRkd3UiLAkJInQsYiIsCQkweDcwMDAwMDExLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAotLXsibGRhZGRkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxMiwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKLSt7ImxkYWRkdyIsCQkidCxiIiwJCTB4NzAwMDAwMTAsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotK3sibGRhZGR3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTEsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotK3sibGRhZGRkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxMiwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0geyJsZGMxIiwJCSJULG8oYikiLAkweGQ0MDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzN8Q0xEfEZQX0QsCTAsCQlJMiwJCTAsCVNGIH0sCi0geyJsZGMxIiwJCSJFLG8oYikiLAkweGQ0MDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzN8Q0xEfEZQX0QsCTAsCQlJMiwJCTAsCVNGIH0sCi0geyJsZGMxIiwJCSJULEEoYikiLAkwLCAgICAoaW50KSBNX0xEQzFfQUIsCUlOU05fTUFDUk8sCQlJTlNOMl9NX0ZQX0QsCUkyLAkJMCwJU0YgfSwKLUBAIC0xNDMzLDcgKzE0MzksNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0geyJtZmxvIiwJCSJkLDkiLAkJMHgwMDAwMDAxMiwgMHhmZjlmMDdmZiwgV1JfMXxSRF9MTywJCTAsCQkwLAkJRDMyLAkwIH0sCi0geyJtZmxvMSIsCQkiZCIsCQkweDcwMDAwMDEyLCAweGZmZmYwN2ZmLAlXUl8xfFJEX0xPLAkJMCwJCUVFLAkJMCwJMCB9LAotIHsibWZsaHh1IiwJCSJkIiwJCTB4MDAwMDAwNTIsIDB4ZmZmZjA3ZmYsCVdSXzF8TU9EX0hJTE8sCQkwLAkJMCwJCVNNVCwJMCB9LAotLXsibWZjciIsCQkidCxzIiwJCTB4NzAwMDAwMTgsIDB4ZmMwMGZmZmYsIFdSXzF8UkRfMiwJCTAsCQlYTFIsCQkwLAkwIH0sCi0reyJtZmNyIiwJCSJ0LHMiLAkJMHg3MDAwMDAxOCwgMHhmYzAwZmZmZiwgV1JfMSwJCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotIHsibWZzYSIsCQkiZCIsCQkweDAwMDAwMDI4LCAweGZmZmYwN2ZmLAlXUl8xLAkJCTAsCQlFRSwJCTAsCTAgfSwKLSB7Im1pbi5vYiIsCQkiWCxZLFEiLAkweDc4MDAwMDA2LCAweGZjMjAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJU0IxLAkJTVgsCTAgfSwKLSB7Im1pbi5vYiIsCQkiRCxTLFEiLAkweDQ4MDAwMDA2LCAweGZjMjAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJTjU0LAkJMCwJMCB9LAotQEAgLTE0NzgsMTAgKzE0ODQsMTMgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQotIC8qIG1vdmUgaXMgYXQgdGhlIHRvcCBvZiB0aGUgdGFibGUuICAqLwotIHsibXNnbi5xaCIsCQkiWCxZLFEiLAkweDc4MjAwMDAwLCAweGZjMjAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJMCwJCU1YLAkwIH0sCi0geyJtc2dzbmQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dTTkQsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAotK3sibXNnc25kcyIsCQkiZCx0IiwJCTB4NGEwMDAwMDEsIDB4ZmZlMDA3ZmYsCVdSXzF8UkRfMnxSRF9DMHxXUl9DMCwJMCwJCVhMUCwJCTAsCTAgfSwKLSB7Im1zZ2xkIiwJCSIiLCAJCTAsICAgIChpbnQpIE1fTVNHTEQsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAotIHsibXNnbGQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dMRF9ULAlJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKLS17Im1zZ3dhaXQiLAkJIiIsIAkJMCwgICAgKGludCkgTV9NU0dXQUlULAlJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKLS17Im1zZ3dhaXQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dXQUlUX1QsSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCi0reyJtc2dsZHMiLAkJImQsdCIsCQkweDRhMDAwMDAyLCAweGZmZTAwN2ZmLAlXUl8xfFJEXzJ8UkRfQzB8V1JfQzAsCTAsCQlYTFAsCQkwLAkwIH0sCi0reyJtc2d3YWl0IiwJCSIiLAkJMCwgICAgKGludCkgTV9NU0dXQUlULCAgSU5TTl9NQUNSTywJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0reyJtc2d3YWl0IiwJCSJ0IiwJCTAsICAgIChpbnQpIE1fTVNHV0FJVF9ULElOU05fTUFDUk8sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAotK3sibXNnc3luYyIsCQkiIiwJCTB4NGEwMDAwMDQsIDB4ZmZmZmZmZmYsMCwJCQkwLAkJWExQLAkJMCwJMCB9LAotIHsibXN1Yi5kIiwJCSJELFIsUyxUIiwJMHg0YzAwMDAyOSwgMHhmYzAwMDAzZiwgV1JfMXxSRF8yfFJEXzN8UkRfNHxGUF9ELCAwLAkJSTRfMzMsCQkwLAlJMzcgfSwKLSB7Im1zdWIuZCIsCQkiRCxTLFQiLAkweDQ2MjAwMDE5LCAweGZmZTAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJSUwyRSwJCTAsCTAgfSwKLSB7Im1zdWIuZCIsCQkiRCxTLFQiLAkweDcyMjAwMDE5LCAweGZmZTAwMDNmLAlXUl8xfFJEXzJ8UkRfM3xGUF9ELAkwLAkJSUwyRiwJCTAsCTAgfSwKLUBAIC0xNTMxLDcgKzE1NDAsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0geyJtdGxvIiwJCSJzLDciLAkJMHgwMDAwMDAxMywgMHhmYzFmZTdmZiwgUkRfMXxXUl9MTywJCTAsCQkwLAkJRDMyLAkwIH0sCi0geyJtdGxvMSIsCQkicyIsCQkweDcwMDAwMDEzLCAweGZjMWZmZmZmLAlSRF8xfFdSX0xPLAkJMCwJCUVFLAkJMCwJMCB9LAotIHsibXRsaHgiLAkJInMiLAkJMHgwMDAwMDA1MywgMHhmYzFmZmZmZiwJUkRfMXxNT0RfSElMTywJCTAsCQkwLAkJU01ULAkwIH0sCi0teyJtdGNyIiwJCSJ0LHMiLAkJMHg3MDAwMDAxOSwgMHhmYzAwZmZmZiwgUkRfMXxSRF8yLAkJMCwJCVhMUiwJCTAsCTAgfSwKLSt7Im10Y3IiLAkJInQscyIsCQkweDcwMDAwMDE5LCAweGZjMDBmZmZmLCBSRF8xLAkJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0geyJtdG0wIiwJCSJzIiwJCTB4NzAwMDAwMDgsIDB4ZmMxZmZmZmYsIFJEXzEsCQkJMCwJCUlPQ1QsCQkwLAkwIH0sCi0geyJtdG0wIiwgICAgCQkicyx0IiwJCTB4NzAwMDAwMDgsIDB4ZmMwMGZmZmYsIFJEXzF8UkRfMiwJCTAsCQlJT0NUMywJCTAsCTAgfSwKLSB7Im10bTEiLAkJInMiLAkJMHg3MDAwMDAwYywgMHhmYzFmZmZmZiwgUkRfMSwJCQkwLAkJSU9DVCwJCTAsCTAgfSwKLUBAIC0xOTY4LDkgKzE5NzcsOSBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9Ci0geyJzdXhjMSIsCQkiUyx0KGIpIiwJMHg0YzAwMDAwZCwgMHhmYzAwMDdmZiwgUkRfMXxSRF8yfFJEXzN8U018RlBfRCwJMCwJCUk1XzMzfE41NSwJMCwJSTM3fSwKLSB7InN3IiwJCQkidCxvKGIpIiwJMHhhYzAwMDAwMCwgMHhmYzAwMDAwMCwJUkRfMXxSRF8zfFNNLAkJMCwJCUkxLAkJMCwJMCB9LAotIHsic3ciLAkJCSJ0LEEoYikiLAkwLCAgICAoaW50KSBNX1NXX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJMCB9LAotLXsic3dhcHciLAkJInQsYiIsCQkweDcwMDAwMDE0LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAotLXsic3dhcHd1IiwJCSJ0LGIiLAkJMHg3MDAwMDAxNSwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKLS17InN3YXBkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxNiwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxMTXxTTSwJMCwJCVhMUiwJCTAsCTAgfSwKLSt7InN3YXB3IiwJCSJ0LGIiLAkJMHg3MDAwMDAxNCwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0reyJzd2Fwd3UiLAkJInQsYiIsCQkweDcwMDAwMDE1LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKLSt7InN3YXBkIiwJCSJ0LGIiLAkJMHg3MDAwMDAxNiwgMHhmYzAwZmZmZiwgTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCi0geyJzd2MwIiwJCSJFLG8oYikiLAkweGUwMDAwMDAwLCAweGZjMDAwMDAwLAlSRF8zfFJEX0MwfFNNLAkJMCwJCUkxLAkJMCwJSU9DVHxJT0NUUHxJT0NUMnxJMzcgfSwKLSB7InN3YzAiLAkJIkUsQShiKSIsCTAsICAgIChpbnQpIE1fU1dDMF9BQiwJSU5TTl9NQUNSTywJCTAsCQlJMSwJCTAsCUlPQ1R8SU9DVFB8SU9DVDJ8STM3IH0sCi0geyJzd2MxIiwJCSJULG8oYikiLAkweGU0MDAwMDAwLCAweGZjMDAwMDAwLAlSRF8xfFJEXzN8U018RlBfUywJMCwJCUkxLAkJMCwJMCB9LAotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMS1DaGFuZ2UtZGVmYXVsdC1lbXVsYXRpb24tZm9yLW1pcHM2NC1saW51eC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzQ5YjhlOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTEtQ2hhbmdlLWRlZmF1bHQtZW11bGF0aW9uLWZvci1taXBzNjQtbGludXgucGF0Y2gKQEAgLTAsMCArMSw1NyBAQAorRnJvbSAyMTgyNzkxYTQ1M2YzNGJlZTY5NjhiM2U3Mjg0ODYwOGNmN2Q3YWJlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMTo0NDoxNCArMDAwMAorU3ViamVjdDogW1BBVENIXSBDaGFuZ2UgZGVmYXVsdCBlbXVsYXRpb24gZm9yIG1pcHM2NCotKi1saW51eAorCit3ZSBjaGFuZ2UgdGhlIGRlZmF1bHQgZW11bGF0aW9ucyB0byBiZSBONjQgaW5zdGVhZCBvZiBOMzIKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFsgT0UgY29uZmlndXJhdGlvbiBTcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGJmZC9jb25maWcuYmZkICAgfCA4ICsrKystLS0tCisgbGQvY29uZmlndXJlLnRndCB8IDggKysrKy0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2JmZC9jb25maWcuYmZkIGIvYmZkL2NvbmZpZy5iZmQKK2luZGV4IGI5NjkzMWY1MmUuLjg0N2Y5ZjBiYTkgMTAwNjQ0CistLS0gYS9iZmQvY29uZmlnLmJmZAorKysrIGIvYmZkL2NvbmZpZy5iZmQKK0BAIC05MTEsMTIgKzkxMSwxMiBAQCBjYXNlICIke3Rhcmd9IiBpbgorICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbGVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIG1pcHNfZWNvZmZfYmVfdmVjIG1pcHNfZWNvZmZfbGVfdmVjIgorICAgICA7OworICAgbWlwczY0KmVsLSotbGludXgqKQorLSAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX250cmFkX2xlX3ZlYworLSAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjIG1pcHNfZWxmMzJfdHJhZF9sZV92ZWMgbWlwc19lbGYzMl90cmFkX2JlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfbGVfdmVjIG1pcHNfZWxmNjRfdHJhZF9iZV92ZWMiCisrICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmNjRfdHJhZF9sZV92ZWMKKysgICAgdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX250cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX250cmFkX2xlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGY2NF90cmFkX2JlX3ZlYyIKKyAgICAgOzsKKyAgIG1pcHM2NCotKi1saW51eCopCistICAgIHRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjCistICAgIHRhcmdfc2VsdmVjcz0ibWlwc19lbGYzMl9udHJhZF9sZV92ZWMgbWlwc19lbGYzMl90cmFkX2JlX3ZlYyBtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmNjRfdHJhZF9iZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyIKKysgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGY2NF90cmFkX2JlX3ZlYworKyAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjIG1pcHNfZWxmMzJfbnRyYWRfYmVfdmVjIG1pcHNfZWxmMzJfdHJhZF9iZV92ZWMgbWlwc19lbGYzMl90cmFkX2xlX3ZlYyBtaXBzX2VsZjY0X3RyYWRfbGVfdmVjIgorICAgICA7OworICAgbWlwcyplbC0qLWxpbnV4KikKKyAgICAgdGFyZ19kZWZ2ZWM9bWlwc19lbGYzMl90cmFkX2xlX3ZlYworZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZS50Z3QgYi9sZC9jb25maWd1cmUudGd0CitpbmRleCAyMzE5NGUzNTdmLi5mNGYwZWFmOWIyIDEwMDY0NAorLS0tIGEvbGQvY29uZmlndXJlLnRndAorKysrIGIvbGQvY29uZmlndXJlLnRndAorQEAgLTU0MSwxMiArNTQxLDEyIEBAIG1pcHMqLSotdnh3b3JrcyopCXRhcmdfZW11bD1lbGYzMmVibWlwdnh3b3JrcworIAkJCTs7CisgbWlwcyotKi13aW5kaXNzKQl0YXJnX2VtdWw9ZWxmMzJtaXBzd2luZGlzcworIAkJCTs7CistbWlwczY0KmVsLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjMybHRzbWlwbjMyCistCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXBuMzIgZWxmMzJsdHNtaXAgZWxmMzJidHNtaXAgZWxmNjRsdHNtaXAgZWxmNjRidHNtaXAiCisrbWlwczY0KmVsLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjY0bHRzbWlwCisrCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJidHNtaXBuMzIgZWxmMzJsdHNtaXBuMzIgZWxmMzJsdHNtaXAgZWxmMzJidHNtaXAgZWxmNjRidHNtaXAiCisgCQkJdGFyZ19leHRyYV9saWJwYXRoPSR0YXJnX2V4dHJhX2VtdWxzCisgCQkJOzsKKy1taXBzNjQqLSotbGludXgtKikJdGFyZ19lbXVsPWVsZjMyYnRzbWlwbjMyCistCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJsdHNtaXBuMzIgZWxmMzJidHNtaXAgZWxmMzJsdHNtaXAgZWxmNjRidHNtaXAgZWxmNjRsdHNtaXAiCisrbWlwczY0Ki0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGY2NGJ0c21pcAorKwkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyYnRzbWlwbjMyIGVsZjMybHRzbWlwbjMyIGVsZjMyYnRzbWlwIGVsZjMybHRzbWlwIGVsZjY0bHRzbWlwIgorIAkJCXRhcmdfZXh0cmFfbGlicGF0aD0kdGFyZ19leHRyYV9lbXVscworIAkJCTs7CisgbWlwcyplbC0qLWxpbnV4LSopCXRhcmdfZW11bD1lbGYzMmx0c21pcApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1BZGQtc3VwcG9ydC1mb3ItTmV0bG9naWMtWExQLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmMzMjg2N2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLUFkZC1zdXBwb3J0LWZvci1OZXRsb2dpYy1YTFAucGF0Y2gKQEAgLTAsMCArMSw0MDYgQEAKK0Zyb20gYTAyMzdlYzJkMWU1OGJkMzVjMjM2ZGYzOWRkNWEwNjUwNGM2ZDJlZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDE0IEZlYiAyMDE2IDE3OjA2OjE5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBzdXBwb3J0IGZvciBOZXRsb2dpYyBYTFAKKworUGF0Y2ggRnJvbTogTmVidSBQaGlsaXBzIDxucGhpbGlwc0BuZXRsb2dpY21pY3JvLmNvbT4KKworVXNpbmcgdGhlIG1pcHNpc2E2NHIybmxtIHRhcmdldCwgYWRkIHN1cHBvcnQgZm9yIFhMUCBmcm9tCitOZXRsb2dpYy4gQWxzbywgdXBkYXRlIHZlbmRvciBuYW1lIHRvIE5MTSB3aGVyZXZlciBhcHBsaWNhYmxlLgorCitVc2UgMHgwMDAwMDA4MCBmb3IgSU5TTl9YTFAsIHRoZSB2YWx1ZSAweDAwMDAwMDQwIGhhcyBhbHJlYWR5IGJlZW4KK2Fzc2lnbmVkIHRvIElOU05fT0NURU9OMworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEJhb3NoYW4gUGFuZyA8YmFvc2hhbi5wYW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CistLS0KKyBiZmQvYW91dHguaCAgICAgICAgICAgfCAgMSArCisgYmZkL2FyY2h1cmVzLmMgICAgICAgIHwgIDEgKworIGJmZC9iZmQtaW4yLmggICAgICAgICB8ICAxICsKKyBiZmQvY29uZmlnLmJmZCAgICAgICAgfCAgNSArKysrKworIGJmZC9jcHUtbWlwcy5jICAgICAgICB8ICA2ICsrKystLQorIGJmZC9lbGZ4eC1taXBzLmMgICAgICB8ICA4ICsrKysrKysrCisgYmludXRpbHMvcmVhZGVsZi5jICAgIHwgIDEgKworIGdhcy9jb25maWcvdGMtbWlwcy5jICB8ICA0ICsrKy0KKyBnYXMvY29uZmlndXJlICAgICAgICAgfCAgMyArKysKKyBnYXMvY29uZmlndXJlLmFjICAgICAgfCAgMyArKysKKyBpbmNsdWRlL2VsZi9taXBzLmggICAgfCAgMSArCisgaW5jbHVkZS9vcGNvZGUvbWlwcy5oIHwgIDYgKysrKysrCisgbGQvY29uZmlndXJlLnRndCAgICAgIHwgIDMgKysrCisgb3Bjb2Rlcy9taXBzLWRpcy5jICAgIHwgMTIgKysrKystLS0tLS0tCisgb3Bjb2Rlcy9taXBzLW9wYy5jICAgIHwgMzEgKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQorIDE1IGZpbGVzIGNoYW5nZWQsIDY1IGluc2VydGlvbnMoKyksIDIxIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYmZkL2FvdXR4LmggYi9iZmQvYW91dHguaAoraW5kZXggZmEzYTk3NDZiNi4uNTA3ODAyNGZkNSAxMDA2NDQKKy0tLSBhL2JmZC9hb3V0eC5oCisrKysgYi9iZmQvYW91dHguaAorQEAgLTc5OSw2ICs3OTksNyBAQCBOQU1FIChhb3V0LCBtYWNoaW5lX3R5cGUpIChlbnVtIGJmZF9hcmNoaXRlY3R1cmUgYXJjaCwKKyAJY2FzZSBiZmRfbWFjaF9taXBzaXNhNjRyNjoKKyAJY2FzZSBiZmRfbWFjaF9taXBzX3NiMToKKyAJY2FzZSBiZmRfbWFjaF9taXBzX3hscjoKKysJY2FzZSBiZmRfbWFjaF9taXBzX3hscDoKKyAJICAvKiBGSVhNRTogVGhlc2Ugc2hvdWxkIGJlIE1JUFMzLCBNSVBTNCwgTUlQUzE2LCBNSVBTMzIsIGV0Yy4gICovCisgCSAgYXJjaF9mbGFncyA9IE1fTUlQUzI7CisgCSAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvYmZkL2FyY2h1cmVzLmMgYi9iZmQvYXJjaHVyZXMuYworaW5kZXggMjMyMTAzODE3Yy4uYjJiM2I4YzEyNCAxMDA2NDQKKy0tLSBhL2JmZC9hcmNodXJlcy5jCisrKysgYi9iZmQvYXJjaHVyZXMuYworQEAgLTE4NSw2ICsxODUsNyBAQCBERVNDUklQVElPTgorIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNfb2N0ZW9uMwkJNjUwMworIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxyCQk4ODc2ODIJIHsqIGRlY2ltYWwgJ1hMUicuICAqfQorIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjIJNzM2NTUwCSB7KiBkZWNpbWFsICdJQTInLiAgKn0KKysuI2RlZmluZSBiZmRfbWFjaF9taXBzX3hscCAgICAgICAgICAgICAgODg3NjgwICAgeyogZGVjaW1hbCAnWExQJy4gICp9CisgLiNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMyCQkzMgorIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIyCQkzMworIC4jZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMnIzCQkzNAorZGlmZiAtLWdpdCBhL2JmZC9iZmQtaW4yLmggYi9iZmQvYmZkLWluMi5oCitpbmRleCA3YzEzYmM4YzkxLi4yZTQ1M2M1MGMxIDEwMDY0NAorLS0tIGEvYmZkL2JmZC1pbjIuaAorKysrIGIvYmZkL2JmZC1pbjIuaAorQEAgLTE1NjgsNiArMTU2OCw3IEBAIGVudW0gYmZkX2FyY2hpdGVjdHVyZQorICNkZWZpbmUgYmZkX21hY2hfbWlwc19vY3Rlb24zICAgICAgICAgIDY1MDMKKyAjZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxyICAgICAgICAgICAgICA4ODc2ODIgICAvKiBkZWNpbWFsICdYTFInLiAgKi8KKyAjZGVmaW5lIGJmZF9tYWNoX21pcHNfaW50ZXJhcHRpdl9tcjIgICA3MzY1NTAgICAvKiBkZWNpbWFsICdJQTInLiAgKi8KKysjZGVmaW5lIGJmZF9tYWNoX21pcHNfeGxwICAgICAgICAgICAgICA4ODc2ODAgICAvKiBkZWNpbWFsICdYTFAnLiAgKi8KKyAjZGVmaW5lIGJmZF9tYWNoX21pcHNpc2EzMiAgICAgICAgICAgICAzMgorICNkZWZpbmUgYmZkX21hY2hfbWlwc2lzYTMycjIgICAgICAgICAgIDMzCisgI2RlZmluZSBiZmRfbWFjaF9taXBzaXNhMzJyMyAgICAgICAgICAgMzQKK2RpZmYgLS1naXQgYS9iZmQvY29uZmlnLmJmZCBiL2JmZC9jb25maWcuYmZkCitpbmRleCA4NDdmOWYwYmE5Li5hMTI3MDdmODI3IDEwMDY0NAorLS0tIGEvYmZkL2NvbmZpZy5iZmQKKysrKyBiL2JmZC9jb25maWcuYmZkCitAQCAtODk0LDYgKzg5NCwxMSBAQCBjYXNlICIke3Rhcmd9IiBpbgorICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX2xlX3ZlYworICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfYmVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIgorICAgICA7OworKyAgbWlwc2lzYTY0Ki0qLWVsZiopCisrCXRhcmdfZGVmdmVjPW1pcHNfZWxmMzJfdHJhZF9iZV92ZWMKKysJdGFyZ19zZWx2ZWNzPSJtaXBzX2VsZjMyX3RyYWRfbGVfdmVjIG1pcHNfZWxmNjRfdHJhZF9iZV92ZWMgbWlwc19lbGY2NF90cmFkX2xlX3ZlYyIKKysJd2FudDY0PXRydWUKKysJOzsKKyAgIG1pcHMqLSotZWxmKiB8IG1pcHMqLSotcnRlbXMqIHwgbWlwcyotKi13aW5kaXNzIHwgbWlwcyotKi1ub25lKQorICAgICB0YXJnX2RlZnZlYz1taXBzX2VsZjMyX2JlX3ZlYworICAgICB0YXJnX3NlbHZlY3M9Im1pcHNfZWxmMzJfbGVfdmVjIG1pcHNfZWxmNjRfYmVfdmVjIG1pcHNfZWxmNjRfbGVfdmVjIgorZGlmZiAtLWdpdCBhL2JmZC9jcHUtbWlwcy5jIGIvYmZkL2NwdS1taXBzLmMKK2luZGV4IDgwMmFjYjQ1ZjEuLmZkOWVjNGMwYWQgMTAwNjQ0CistLS0gYS9iZmQvY3B1LW1pcHMuYworKysrIGIvYmZkL2NwdS1taXBzLmMKK0BAIC0xMDgsNyArMTA4LDggQEAgZW51bQorICAgSV9taXBzb2N0ZW9uMywKKyAgIElfeGxyLAorICAgSV9pbnRlcmFwdGl2X21yMiwKKy0gIElfbWljcm9taXBzCisrICBJX21pY3JvbWlwcywKKysgIElfeGxwCisgfTsKKyAKKyAjZGVmaW5lIE5OKGluZGV4KSAoJmFyY2hfaW5mb19zdHJ1Y3RbKGluZGV4KSArIDFdKQorQEAgLTE2Myw3ICsxNjQsOCBAQCBzdGF0aWMgY29uc3QgYmZkX2FyY2hfaW5mb190eXBlIGFyY2hfaW5mb19zdHJ1Y3RbXSA9CisgICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfeGxyLCAibWlwczp4bHIiLAkgICBGQUxTRSwgTk4oSV94bHIpKSwKKyAgIE4gKDMyLCAzMiwgYmZkX21hY2hfbWlwc19pbnRlcmFwdGl2X21yMiwgIm1pcHM6aW50ZXJhcHRpdi1tcjIiLCBGQUxTRSwKKyAgICAgIE5OKElfaW50ZXJhcHRpdl9tcjIpKSwKKy0gIE4gKDY0LCA2NCwgYmZkX21hY2hfbWlwc19taWNyb21pcHMsICJtaXBzOm1pY3JvbWlwcyIsIEZBTFNFLCBOVUxMKQorKyAgTiAoNjQsIDY0LCBiZmRfbWFjaF9taXBzX21pY3JvbWlwcywgIm1pcHM6bWljcm9taXBzIiwgRkFMU0UsIE5OKElfbWljcm9taXBzKSksCisrICBOICg2NCwgNjQsIGJmZF9tYWNoX21pcHNfeGxwLCAibWlwczp4bHAiLCBGQUxTRSwgTlVMTCkKKyB9OworIAorIC8qIFRoZSBkZWZhdWx0IGFyY2hpdGVjdHVyZSBpcyBtaXBzOjMwMDAsIGJ1dCB3aXRoIGEgbWFjaGluZSBudW1iZXIgb2YKK2RpZmYgLS1naXQgYS9iZmQvZWxmeHgtbWlwcy5jIGIvYmZkL2VsZnh4LW1pcHMuYworaW5kZXggZDdlM2FlZDNiNi4uN2JhZWVlOWVlMyAxMDA2NDQKKy0tLSBhL2JmZC9lbGZ4eC1taXBzLmMKKysrKyBiL2JmZC9lbGZ4eC1taXBzLmMKK0BAIC02OTk5LDYgKzY5OTksOSBAQCBfYmZkX2VsZl9taXBzX21hY2ggKGZsYWd3b3JkIGZsYWdzKQorICAgICBjYXNlIEVfTUlQU19NQUNIX0lBTVIyOgorICAgICAgIHJldHVybiBiZmRfbWFjaF9taXBzX2ludGVyYXB0aXZfbXIyOworIAorKyAgICBjYXNlIEVfTUlQU19NQUNIX1hMUDoKKysgICAgICByZXR1cm4gYmZkX21hY2hfbWlwc194bHA7CisrCisgICAgIGRlZmF1bHQ6CisgICAgICAgc3dpdGNoIChmbGFncyAmIEVGX01JUFNfQVJDSCkKKyAJeworQEAgLTEyMzU1LDYgKzEyMzU4LDEwIEBAIG1pcHNfc2V0X2lzYV9mbGFncyAoYmZkICphYmZkKQorICAgICAgIHZhbCA9IEVfTUlQU19BUkNIXzY0UjIgfCBFX01JUFNfTUFDSF9PQ1RFT04yOworICAgICAgIGJyZWFrOworIAorKwljYXNlIGJmZF9tYWNoX21pcHNfeGxwOgorKwkgIHZhbCA9IEVfTUlQU19BUkNIXzY0UjIgfCBFX01JUFNfTUFDSF9YTFA7CisrCSAgYnJlYWs7CisrCisgICAgIGNhc2UgYmZkX21hY2hfbWlwc2lzYTMyOgorICAgICAgIHZhbCA9IEVfTUlQU19BUkNIXzMyOworICAgICAgIGJyZWFrOworQEAgLTE0Mzc5LDYgKzE0Mzg2LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBtaXBzX21hY2hfZXh0ZW5zaW9uIG1pcHNfbWFjaF9leHRlbnNpb25zW10gPQorICAgeyBiZmRfbWFjaF9taXBzX2dzMjY0ZSwgYmZkX21hY2hfbWlwc19nczQ2NGUgfSwKKyAgIHsgYmZkX21hY2hfbWlwc19nczQ2NGUsIGJmZF9tYWNoX21pcHNfZ3M0NjQgfSwKKyAgIHsgYmZkX21hY2hfbWlwc19nczQ2NCwgYmZkX21hY2hfbWlwc2lzYTY0cjIgfSwKKysgIHsgYmZkX21hY2hfbWlwc194bHAsIGJmZF9tYWNoX21pcHNpc2E2NHIyIH0sCisgCisgICAvKiBNSVBTNjQgZXh0ZW5zaW9ucy4gICovCisgICB7IGJmZF9tYWNoX21pcHNpc2E2NHIyLCBiZmRfbWFjaF9taXBzaXNhNjQgfSwKK2RpZmYgLS1naXQgYS9iaW51dGlscy9yZWFkZWxmLmMgYi9iaW51dGlscy9yZWFkZWxmLmMKK2luZGV4IDZiNWJlYmU3NDMuLmQxNWE3ODI4ZGIgMTAwNjQ0CistLS0gYS9iaW51dGlscy9yZWFkZWxmLmMKKysrKyBiL2JpbnV0aWxzL3JlYWRlbGYuYworQEAgLTM0NDAsNiArMzQ0MCw3IEBAIGdldF9tYWNoaW5lX2ZsYWdzIChGaWxlZGF0YSAqIGZpbGVkYXRhLCB1bnNpZ25lZCBlX2ZsYWdzLCB1bnNpZ25lZCBlX21hY2hpbmUpCisgCSAgICBjYXNlIEVfTUlQU19NQUNIX09DVEVPTjM6IHN0cmNhdCAoYnVmLCAiLCBvY3Rlb24zIik7IGJyZWFrOworIAkgICAgY2FzZSBFX01JUFNfTUFDSF9YTFI6ICBzdHJjYXQgKGJ1ZiwgIiwgeGxyIik7IGJyZWFrOworIAkgICAgY2FzZSBFX01JUFNfTUFDSF9JQU1SMjogIHN0cmNhdCAoYnVmLCAiLCBpbnRlcmFwdGl2LW1yMiIpOyBicmVhazsKKysJICAgIGNhc2UgRV9NSVBTX01BQ0hfWExQOiAgc3RyY2F0IChidWYsICIsIHhscCIpOyBicmVhazsKKyAJICAgIGNhc2UgMDoKKyAJICAgIC8qIFdlIHNpbXBseSBpZ25vcmUgdGhlIGZpZWxkIGluIHRoaXMgY2FzZSB0byBhdm9pZCBjb25mdXNpb246CisgCSAgICAgICBNSVBTIEVMRiBkb2VzIG5vdCBzcGVjaWZ5IEVGX01JUFNfTUFDSCwgaXQgaXMgYSBHTlUKK2RpZmYgLS1naXQgYS9nYXMvY29uZmlnL3RjLW1pcHMuYyBiL2dhcy9jb25maWcvdGMtbWlwcy5jCitpbmRleCBmYzY4OTg4MzRlLi4yYzcxNTFjY2RiIDEwMDY0NAorLS0tIGEvZ2FzL2NvbmZpZy90Yy1taXBzLmMKKysrKyBiL2dhcy9jb25maWcvdGMtbWlwcy5jCitAQCAtNTY4LDYgKzU2OCw3IEBAIHN0YXRpYyBpbnQgbWlwc18zMmJpdG1vZGUgPSAwOworICAgIHx8IG1pcHNfb3B0cy5hcmNoID09IENQVV9STTcwMDAgICAgICAgICAgICAgICAgICAgIFwKKyAgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfVlI1NTAwICAgICAgICAgICAgICAgICAgICBcCisgICAgfHwgbWlwc19vcHRzLm1pY3JvbWlwcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgIHx8IG1pcHNfb3B0cy5hcmNoID09IENQVV9YTFAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICApCisgCisgLyogV2hldGhlciB0aGUgcHJvY2Vzc29yIHVzZXMgaGFyZHdhcmUgaW50ZXJsb2NrcyB0byBwcm90ZWN0IHJlYWRzCitAQCAtNTk3LDYgKzU5OCw3IEBAIHN0YXRpYyBpbnQgbWlwc18zMmJpdG1vZGUgPSAwOworICAgICAmJiBtaXBzX29wdHMuaXNhICE9IElTQV9NSVBTMykgICAgICAgICAgICAgICAgICAgIFwKKyAgICB8fCBtaXBzX29wdHMuYXJjaCA9PSBDUFVfUjQzMDAgICAgICAgICAgICAgICAgICAgICBcCisgICAgfHwgbWlwc19vcHRzLm1pY3JvbWlwcyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgIHx8IG1pcHNfb3B0cy5hcmNoID09IENQVV9YTFAgICAgICAgICAgICAgICAgICAgICAgIFwKKyAgICApCisgCisgLyogV2hldGhlciB0aGUgcHJvY2Vzc29yIHVzZXMgaGFyZHdhcmUgaW50ZXJsb2NrcyB0byBwcm90ZWN0IHJlYWRzCitAQCAtMjAxMzUsNyArMjAxMzcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IG1pcHNfY3B1X2luZm8gbWlwc19jcHVfaW5mb190YWJsZVtdID0KKyAgIC8qIEJyb2FkY29tIFhMUC4KKyAgICAgIFhMUCBpcyBtb3N0bHkgbGlrZSBYTFIsIHdpdGggdGhlIHByb21pbmVudCBleGNlcHRpb24gdGhhdCBpdCBpcworICAgICAgTUlQUzY0UjIgcmF0aGVyIHRoYW4gTUlQUzY0LiAgKi8KKy0gIHsgInhscCIsCSAgICAgIDAsIDAsCQkJSVNBX01JUFM2NFIyLCBDUFVfWExSIH0sCisrICB7ICJ4bHAiLAkgICAgICAwLCAwLAkJCUlTQV9NSVBTNjRSMiwgQ1BVX1hMUCB9LAorIAorICAgLyogTUlQUyA2NCBSZWxlYXNlIDYuICAqLworICAgeyAiaTY0MDAiLAkgICAgICAwLCBBU0VfVklSVCB8IEFTRV9NU0EsCUlTQV9NSVBTNjRSNiwgQ1BVX01JUFM2NFI2fSwKK2RpZmYgLS1naXQgYS9nYXMvY29uZmlndXJlIGIvZ2FzL2NvbmZpZ3VyZQoraW5kZXggNjBjMWEwNTVhZS4uNTlkNmQxMTIxNSAxMDA3NTUKKy0tLSBhL2dhcy9jb25maWd1cmUKKysrKyBiL2dhcy9jb25maWd1cmUKK0BAIC0xMjcyMiw2ICsxMjcyMiw5IEBAIF9BQ0VPRgorIAkgIG1pcHNpc2E2NHI2IHwgbWlwc2lzYTY0cjZlbCkKKyAJICAgIG1pcHNfY3B1PW1pcHM2NHI2CisgCSAgICA7OworKwkgIG1pcHNpc2E2NHIybmxtIHwgbWlwc2lzYTY0cjJubG1lbCkKKysJICAgIG1pcHNfY3B1PXhscAorKwkgICAgOzsKKyAJICBtaXBzdHgzOSB8IG1pcHN0eDM5ZWwpCisgCSAgICBtaXBzX2NwdT1yMzkwMAorIAkgICAgOzsKK2RpZmYgLS1naXQgYS9nYXMvY29uZmlndXJlLmFjIGIvZ2FzL2NvbmZpZ3VyZS5hYworaW5kZXggNmYzMmU1NWExYS4uMTFjMmUwZDI3MyAxMDA2NDQKKy0tLSBhL2dhcy9jb25maWd1cmUuYWMKKysrKyBiL2dhcy9jb25maWd1cmUuYWMKK0BAIC0zMjUsNiArMzI1LDkgQEAgY2hhbmdlcXVvdGUoWyxdKWRubAorIAkgIG1pcHNpc2E2NHI2IHwgbWlwc2lzYTY0cjZlbCkKKyAJICAgIG1pcHNfY3B1PW1pcHM2NHI2CisgCSAgICA7OworKwkgIG1pcHNpc2E2NHIybmxtIHwgbWlwc2lzYTY0cjJubG1lbCkKKysJICAgIG1pcHNfY3B1PXhscAorKwkgICAgOzsKKyAJICBtaXBzdHgzOSB8IG1pcHN0eDM5ZWwpCisgCSAgICBtaXBzX2NwdT1yMzkwMAorIAkgICAgOzsKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2VsZi9taXBzLmggYi9pbmNsdWRlL2VsZi9taXBzLmgKK2luZGV4IGQxMTZiMDM2YjYuLmRjZWViM2YxNTYgMTAwNjQ0CistLS0gYS9pbmNsdWRlL2VsZi9taXBzLmgKKysrKyBiL2luY2x1ZGUvZWxmL21pcHMuaAorQEAgLTI5MCw2ICsyOTAsNyBAQCBFTkRfUkVMT0NfTlVNQkVSUyAoUl9NSVBTX21heGV4dCkKKyAjZGVmaW5lIEVfTUlQU19NQUNIX1NCMSAgICAgICAgIDB4MDA4YTAwMDAKKyAjZGVmaW5lIEVfTUlQU19NQUNIX09DVEVPTgkweDAwOGIwMDAwCisgI2RlZmluZSBFX01JUFNfTUFDSF9YTFIgICAgIAkweDAwOGMwMDAwCisrI2RlZmluZSBFX01JUFNfTUFDSF9YTFAgICAgICAgICAweDAwOGYwMDAwCisgI2RlZmluZSBFX01JUFNfTUFDSF9PQ1RFT04yCTB4MDA4ZDAwMDAKKyAjZGVmaW5lIEVfTUlQU19NQUNIX09DVEVPTjMJMHgwMDhlMDAwMAorICNkZWZpbmUgRV9NSVBTX01BQ0hfNTQwMAkweDAwOTEwMDAwCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9vcGNvZGUvbWlwcy5oIGIvaW5jbHVkZS9vcGNvZGUvbWlwcy5oCitpbmRleCBmZDAzMWYzNzU4Li5hOTZhNDRkZjg0IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9vcGNvZGUvbWlwcy5oCisrKysgYi9pbmNsdWRlL29wY29kZS9taXBzLmgKK0BAIC0xMjYwLDYgKzEyNjAsOCBAQCBzdGF0aWMgY29uc3QgdW5zaWduZWQgaW50IG1pcHNfaXNhX3RhYmxlW10gPSB7CisgI2RlZmluZSBJTlNOX1hMUiAgICAgICAgICAgICAgICAgMHgwMDAwMDAyMAorIC8qIEltYWdpbmF0aW9uIGludGVyQXB0aXYgTVIyLiAgKi8KKyAjZGVmaW5lIElOU05fSU5URVJBUFRJVl9NUjIJICAweDA0MDAwMDAwCisrLyogTmV0bG9naWMgWGxQIGluc3RydWN0aW9uICovCisrI2RlZmluZSBJTlNOX1hMUAkJMHgwMDAwMDA4MAorIAorIC8qIERTUCBBU0UgKi8KKyAjZGVmaW5lIEFTRV9EU1AJCQkweDAwMDAwMDAxCitAQCAtMTM4NCw2ICsxMzg2LDcgQEAgc3RhdGljIGNvbnN0IHVuc2lnbmVkIGludCBtaXBzX2lzYV90YWJsZVtdID0geworICNkZWZpbmUgQ1BVX09DVEVPTjMJNjUwMworICNkZWZpbmUgQ1BVX1hMUiAgICAgCTg4NzY4MiAgIAkvKiBkZWNpbWFsICdYTFInICAgKi8KKyAjZGVmaW5lIENQVV9JTlRFUkFQVElWX01SMiA3MzY1NTAJLyogZGVjaW1hbCAnSUEyJyAgKi8KKysjZGVmaW5lIENQVV9YTFAgICAgICAgICA4ODc2ODAgICAgICAvKiBkZWNpbWFsICdYTFAnICAgKi8KKyAKKyAvKiBSZXR1cm4gdHJ1ZSBpZiB0aGUgZ2l2ZW4gQ1BVIGlzIGluY2x1ZGVkIGluIElOU05fKiBtYXNrIE1BU0suICAqLworIAorQEAgLTE0NjEsNiArMTQ2NCw5IEBAIGNwdV9pc19tZW1iZXIgKGludCBjcHUsIHVuc2lnbmVkIGludCBtYXNrKQorICAgICAgIHJldHVybiAoKG1hc2sgJiBJTlNOX0lTQV9NQVNLKSA9PSBJTlNOX0lTQTMyUjYpCisgCSAgICAgfHwgKChtYXNrICYgSU5TTl9JU0FfTUFTSykgPT0gSU5TTl9JU0E2NFI2KTsKKyAKKysgICAgY2FzZSBDUFVfWExQOgorKyAgICAgIHJldHVybiAobWFzayAmIElOU05fWExQKSAhPSAwOworKworICAgICBkZWZhdWx0OgorICAgICAgIHJldHVybiBGQUxTRTsKKyAgICAgfQorZGlmZiAtLWdpdCBhL2xkL2NvbmZpZ3VyZS50Z3QgYi9sZC9jb25maWd1cmUudGd0CitpbmRleCBmNGYwZWFmOWIyLi4wZGEzZWNhMTljIDEwMDY0NAorLS0tIGEvbGQvY29uZmlndXJlLnRndAorKysrIGIvbGQvY29uZmlndXJlLnRndAorQEAgLTUyMCw2ICs1MjAsOSBAQCBtaXBzKi1zZGUtZWxmKiB8IG1pcHMqLW10aS1lbGYqIHwgbWlwcyotaW1nLWVsZiopCisgCQkJdGFyZ19lbXVsPWVsZjMyYnRzbWlwCisgCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJsdHNtaXAgZWxmMzJidHNtaXBuMzIgZWxmNjRidHNtaXAgZWxmMzJsdHNtaXBuMzIgZWxmNjRsdHNtaXAiCisgCQkJOzsKKyttaXBzaXNhNjQqLSotZWxmKikJdGFyZ19lbXVsPWVsZjMyYnRzbWlwCisrCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJsdHNtaXAgZWxmNjRidHNtaXAgZWxmNjRsdHNtaXAiCisrCQkJOzsKKyBtaXBzNjQqZWwtcHMyLWVsZiopCXRhcmdfZW11bD1lbGYzMmxyNTkwMG4zMgorIAkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMybHI1OTAwIgorIAkJCXRhcmdfZXh0cmFfbGlicGF0aD0kdGFyZ19leHRyYV9lbXVscworZGlmZiAtLWdpdCBhL29wY29kZXMvbWlwcy1kaXMuYyBiL29wY29kZXMvbWlwcy1kaXMuYworaW5kZXggNzU1YmJlMjk0Yi4uY2UyMmVmNjgzYSAxMDA2NDQKKy0tLSBhL29wY29kZXMvbWlwcy1kaXMuYworKysrIGIvb3Bjb2Rlcy9taXBzLWRpcy5jCitAQCAtNjc0LDEzICs2NzQsMTEgQEAgY29uc3Qgc3RydWN0IG1pcHNfYXJjaF9jaG9pY2UgbWlwc19hcmNoX2Nob2ljZXNbXSA9CisgICAgIG1pcHNfY3Awc2VsX25hbWVzX3hsciwgQVJSQVlfU0laRSAobWlwc19jcDBzZWxfbmFtZXNfeGxyKSwKKyAgICAgbWlwc19jcDFfbmFtZXNfbWlwczMyNjQsIG1pcHNfaHdyX25hbWVzX251bWVyaWMgfSwKKyAKKy0gIC8qIFhMUCBpcyBtb3N0bHkgbGlrZSBYTFIsIHdpdGggdGhlIHByb21pbmVudCBleGNlcHRpb24gaXQgaXMgYmVpbmcKKy0gICAgIE1JUFM2NFIyLiAgKi8KKy0gIHsgInhscCIsIDEsIGJmZF9tYWNoX21pcHNfeGxyLCBDUFVfWExSLAorLSAgICBJU0FfTUlQUzY0UjIgfCBJTlNOX1hMUiwgMCwKKy0gICAgbWlwc19jcDBfbmFtZXNfeGxyLAorLSAgICBtaXBzX2NwMHNlbF9uYW1lc194bHIsIEFSUkFZX1NJWkUgKG1pcHNfY3Awc2VsX25hbWVzX3hsciksCistICAgIG1pcHNfY3AxX25hbWVzX21pcHMzMjY0LCBtaXBzX2h3cl9uYW1lc19udW1lcmljIH0sCisrICB7ICJ4bHAiLCAxLCBiZmRfbWFjaF9taXBzX3hscCwgQ1BVX1hMUCwKKysgICAgSVNBX01JUFM2NFIyIHwgSU5TTl9YTFAsIDAsCisrICAgIG1pcHNfY3AwX25hbWVzX21pcHMzMjY0cjIsCisrICAgIG1pcHNfY3Awc2VsX25hbWVzX21pcHMzMjY0cjIsIEFSUkFZX1NJWkUgKG1pcHNfY3Awc2VsX25hbWVzX21pcHMzMjY0cjIpLAorKyAgICBtaXBzX2NwMV9uYW1lc19taXBzMzI2NCwgbWlwc19od3JfbmFtZXNfbWlwczMyNjRyMiB9LAorIAorICAgLyogVGhpcyBlbnRyeSwgbWlwczE2LCBpcyBoZXJlIG9ubHkgZm9yIElTQS9wcm9jZXNzb3Igc2VsZWN0aW9uOyBkbworICAgICAgbm90IHByaW50IGl0cyBuYW1lLiAgKi8KK2RpZmYgLS1naXQgYS9vcGNvZGVzL21pcHMtb3BjLmMgYi9vcGNvZGVzL21pcHMtb3BjLmMKK2luZGV4IDUyNzBhZWVmYTguLmQxN2RjNzhjZDcgMTAwNjQ0CistLS0gYS9vcGNvZGVzL21pcHMtb3BjLmMKKysrKyBiL29wY29kZXMvbWlwcy1vcGMuYworQEAgLTMyOCw2ICszMjgsNyBAQCBkZWNvZGVfbWlwc19vcGVyYW5kIChjb25zdCBjaGFyICpwKQorICNkZWZpbmUgSU9DVDMJSU5TTl9PQ1RFT04zCisgI2RlZmluZSBYTFIgICAgIElOU05fWExSCisgI2RlZmluZSBJQU1SMglJTlNOX0lOVEVSQVBUSVZfTVIyCisrI2RlZmluZSBYTFAJSU5TTl9YTFAKKyAjZGVmaW5lIElWSVJUCUFTRV9WSVJUCisgI2RlZmluZSBJVklSVDY0CUFTRV9WSVJUNjQKKyAKK0BAIC05OTAsNiArOTkxLDcgQEAgY29uc3Qgc3RydWN0IG1pcHNfb3Bjb2RlIG1pcHNfYnVpbHRpbl9vcGNvZGVzW10gPQorIHsiY2xvIiwJCQkiVSxzIiwJCTB4NzAwMDAwMjEsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJMzJ8TjU1LAkwLAlJMzcgfSwKKyB7ImNseiIsCQkJImQscyIsCQkweDAwMDAwMDUwLCAweGZjMWYwN2ZmLCBXUl8xfFJEXzIsCQkwLAkJSTM3LAkJMCwJMCB9LAorIHsiY2x6IiwJCQkiVSxzIiwJCTB4NzAwMDAwMjAsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJMzJ8TjU1LAkwLAlJMzcgfSwKKyt7ImNyYyIsCQkJImQscyx0IiwJMHg3MDAwMDAxYywgMHhmYzAwMDdmZiwJV1JfMXxSRF8yfFJEXzMsCTAsCQlYTFAsIAkJMCwJMCB9LAorIC8qIGN0YzAgaXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGFibGUuICAqLworIHsiY3RjMSIsCQkidCxHIiwJCTB4NDRjMDAwMDAsIDB4ZmZlMDA3ZmYsCVJEXzF8V1JfQ0N8Q00sCQkwLAkJSTEsCQkwLAkwIH0sCisgeyJjdGMxIiwJCSJ0LFMiLAkJMHg0NGMwMDAwMCwgMHhmZmUwMDdmZiwJUkRfMXxXUl9DQ3xDTSwJCTAsCQlJMSwJCTAsCTAgfSwKK0BAIC0xMDIyLDEyICsxMDI0LDEzIEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7ImRhZGRpdSIsCQkidCxyLGoiLAkweDY0MDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzIsCQkwLAkJSTMsCQkwLAkwIH0sCisgeyJkYWRkdSIsCQkiZCx2LHQiLAkweDAwMDAwMDJkLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfMywJCTAsCQlJMywJCTAsCTAgfSwKKyB7ImRhZGR1IiwJCSJ0LHIsSSIsCTAsICAgIChpbnQpIE1fREFERFVfSSwJSU5TTl9NQUNSTywJCTAsCQlJMywJCTAsCTAgfSwKKy17ImRhZGR3YyIsCQkiZCxzLHQiLCAJMHg3MDAwMDAzOCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzN8V1JfQzB8UkRfQzAsIDAsCQlYTFIsCQkwLAkwIH0sCisreyJkYWRkd2MiLAkJImQscyx0IiwgCTB4NzAwMDAwMzgsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMnxSRF8zfFdSX0MwfFJEX0MwLCAwLAkJWExSfFhMUCwJMCwJMCB9LAorIHsiZGJyZWFrIiwJCSIiLAkJMHg3MDAwMDAzZiwgMHhmZmZmZmZmZiwJMCwJCQkwLAkJTjUsCQkwLAkwIH0sCisgeyJkY2xvIiwJCSJkLHMiLAkJMHgwMDAwMDA1MywgMHhmYzFmMDdmZiwgV1JfMXxSRF8yLAkJMCwJCUk2OSwJCTAsCTAgfSwKKyB7ImRjbG8iLAkJIlUscyIsCSAJMHg3MDAwMDAyNSwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yLCAJMCwJCUk2NHxONTUsCTAsCUk2OSB9LAorIHsiZGNseiIsCQkiZCxzIiwJCTB4MDAwMDAwNTIsIDB4ZmMxZjA3ZmYsIFdSXzF8UkRfMiwJCTAsCQlJNjksCQkwLAkwIH0sCisgeyJkY2x6IiwJCSJVLHMiLAkgCTB4NzAwMDAwMjQsIDB4ZmMwMDA3ZmYsIFdSXzF8UkRfMiwgCTAsCQlJNjR8TjU1LAkwLAlJNjkgfSwKKyt7ImRjcmMiLAkJImQscyx0IiwJMHg3MDAwMDAxZCwgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCTAsCQlYTFAsIAkJMCwJMCB9LAorIC8qIGRjdHIgYW5kIGRjdHcgYXJlIHVzZWQgb24gdGhlIHI1MDAwLiAgKi8KKyB7ImRjdHIiLAkJIm8oYikiLAkgCTB4YmMwNTAwMDAsIDB4ZmMxZjAwMDAsIFJEXzIsCQkJMCwJCUkzLAkJMCwJMCB9LAorIHsiZGN0dyIsCQkibyhiKSIsCQkweGJjMDkwMDAwLCAweGZjMWYwMDAwLCBSRF8yLAkJCTAsCQlJMywJCTAsCTAgfSwKK0BAIC0xMDk5LDYgKzExMDIsNyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgeyJkbWZjMCIsCQkidCxHLEgiLAkweDQwMjAwMDAwLCAweGZmZTAwN2Y4LAlXUl8xfFJEX0MwfExDLAkJMCwJCUk2NCwJCTAsCTAgfSwKKyB7ImRtZmdjMCIsCQkidCxHIiwJCTB4NDA2MDAxMDAsIDB4ZmZlMDA3ZmYsIFdSXzF8UkRfQzB8TEMsCQkwLAkJMCwJCUlWSVJUNjQsIDAgfSwKKyB7ImRtZmdjMCIsCQkidCxHLEgiLAkweDQwNjAwMTAwLCAweGZmZTAwN2Y4LCBXUl8xfFJEX0MwfExDLAkJMCwJCTAsCQlJVklSVDY0LCAwIH0sCisreyJkbWZ1ciIsCQkidCxkIiwJCTB4NzAwMDAwMWUsIDB4ZmZlMDA3ZmYsIFdSXzEsCQkJMCwJCVhMUCwJCTAsCTAgfSwKKyB7ImRtdCIsCQkJIiIsCQkweDQxNjAwYmMxLCAweGZmZmZmZmZmLCBUUkFQLAkJCTAsCQkwLAkJTVQzMiwJMCB9LAorIHsiZG10IiwJCQkidCIsCQkweDQxNjAwYmMxLCAweGZmZTBmZmZmLCBXUl8xfFRSQVAsCQkwLAkJMCwJCU1UMzIsCTAgfSwKKyB7ImRtdGMwIiwJCSJ0LEciLAkJMHg0MGEwMDAwMCwgMHhmZmUwMDdmZiwJUkRfMXxXUl9DMHxXUl9DQ3xDTSwJMCwJCUkzLAkJMCwJRUUgfSwKK0BAIC0xMTE0LDYgKzExMTgsOCBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgLyogZG1mYzMgaXMgYXQgdGhlIGJvdHRvbSBvZiB0aGUgdGFibGUuICAqLworIC8qIGRtdGMzIGlzIGF0IHRoZSBib3R0b20gb2YgdGhlIHRhYmxlLiAgKi8KKyB7ImRtdWgiLAkJImQscyx0IiwJMHgwMDAwMDBkYywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTY5LAkJMCwJMCB9LAorK3siZG10dXIiLAkJInQsZCIsCQkweDcwMDAwMDFmLCAweGZmZTAwN2ZmLAlSRF8xLAkJCTAsCQlYTFAsCQkwLAkwIH0sCisreyJkbXVsIiwJCSJkLHMsdCIsCTB4NzAwMDAwMDYsIDB4ZmMwMDA3ZmYsCVdSXzF8UkRfMnxSRF8zLAkJMCwJCVhMUCwJCTAsCTAgfSwKKyB7ImRtdWwiLAkJImQscyx0IiwJMHgwMDAwMDA5YywgMHhmYzAwMDdmZiwgV1JfMXxSRF8yfFJEXzMsCQkwLAkJSTY5LAkJMCwJMCB9LAorIHsiZG11bCIsCQkiZCx2LHQiLAkweDcwMDAwMDAzLCAweGZjMDAwN2ZmLCBXUl8xfFJEXzJ8UkRfM3xXUl9ISUxPLAkwLAkJSU9DVCwJCTAsCTAgfSwKKyB7ImRtdWwiLAkJImQsdix0IiwJMCwgICAgKGludCkgTV9ETVVMLAlJTlNOX01BQ1JPLAkJMCwJCUkzLAkJMCwJTTMyfEk2OSB9LAorQEAgLTEyNjcsOSArMTI3Myw5IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7ImxkIiwJCQkicywtYigrUikiLAkweGVjMTgwMDAwLCAweGZjMWMwMDAwLCBXUl8xLAkJCVJEX3BjLAkJSTY5LAkJMCwJMCB9LAorIHsibGQiLAkJCSJ0LEEoYikiLAkwLCAgICAoaW50KSBNX0xEX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJMCB9LAorIHsibGQiLAkJCSJ0LG8oYikiLAkweGRjMDAwMDAwLCAweGZjMDAwMDAwLCBXUl8xfFJEXzN8TE0sCQkwLAkJSTMsCQkwLAkwIH0sCisteyJsZGFkZHciLAkJInQsYiIsCQkweDcwMDAwMDEwLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAorLXsibGRhZGR3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTEsIDB4ZmMwMGZmZmYsCU1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCisteyJsZGFkZGQiLAkJInQsYiIsCQkweDcwMDAwMDEyLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAorK3sibGRhZGR3IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMCwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisreyJsZGFkZHd1IiwJCSJ0LGIiLAkJMHg3MDAwMDAxMSwgMHhmYzAwZmZmZiwJTU9EXzF8UkRfMnxTTSwJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisreyJsZGFkZGQiLAkJInQsYiIsCQkweDcwMDAwMDEyLCAweGZjMDBmZmZmLAlNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyB7ImxkYzEiLAkJIlQsbyhiKSIsCTB4ZDQwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfM3xDTER8RlBfRCwJMCwJCUkyLAkJMCwJU0YgfSwKKyB7ImxkYzEiLAkJIkUsbyhiKSIsCTB4ZDQwMDAwMDAsIDB4ZmMwMDAwMDAsIFdSXzF8UkRfM3xDTER8RlBfRCwJMCwJCUkyLAkJMCwJU0YgfSwKKyB7ImxkYzEiLAkJIlQsQShiKSIsCTAsICAgIChpbnQpIE1fTERDMV9BQiwJSU5TTl9NQUNSTywJCUlOU04yX01fRlBfRCwJSTIsCQkwLAlTRiB9LAorQEAgLTE0MzgsNyArMTQ0NCw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7Im1mbG8iLAkJImQsOSIsCQkweDAwMDAwMDEyLCAweGZmOWYwN2ZmLCBXUl8xfFJEX0xPLAkJMCwJCTAsCQlEMzIsCTAgfSwKKyB7Im1mbG8xIiwJCSJkIiwJCTB4NzAwMDAwMTIsIDB4ZmZmZjA3ZmYsCVdSXzF8UkRfTE8sCQkwLAkJRUUsCQkwLAkwIH0sCisgeyJtZmxoeHUiLAkJImQiLAkJMHgwMDAwMDA1MiwgMHhmZmZmMDdmZiwJV1JfMXxNT0RfSElMTywJCTAsCQkwLAkJU01ULAkwIH0sCisteyJtZmNyIiwJCSJ0LHMiLAkJMHg3MDAwMDAxOCwgMHhmYzAwZmZmZiwgV1JfMXxSRF8yLAkJMCwJCVhMUiwJCTAsCTAgfSwKKyt7Im1mY3IiLAkJInQscyIsCQkweDcwMDAwMDE4LCAweGZjMDBmZmZmLCBXUl8xLAkJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisgeyJtZnNhIiwJCSJkIiwJCTB4MDAwMDAwMjgsIDB4ZmZmZjA3ZmYsCVdSXzEsCQkJMCwJCUVFLAkJMCwJMCB9LAorIHsibWluLm9iIiwJCSJYLFksUSIsCTB4NzgwMDAwMDYsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlTQjEsCQlNWCwJMCB9LAorIHsibWluLm9iIiwJCSJELFMsUSIsCTB4NDgwMDAwMDYsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlONTQsCQkwLAkwIH0sCitAQCAtMTQ4MywxMCArMTQ4OSwxMyBAQCBjb25zdCBzdHJ1Y3QgbWlwc19vcGNvZGUgbWlwc19idWlsdGluX29wY29kZXNbXSA9CisgLyogbW92ZSBpcyBhdCB0aGUgdG9wIG9mIHRoZSB0YWJsZS4gICovCisgeyJtc2duLnFoIiwJCSJYLFksUSIsCTB4NzgyMDAwMDAsIDB4ZmMyMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQkwLAkJTVgsCTAgfSwKKyB7Im1zZ3NuZCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR1NORCwJSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCisreyJtc2dzbmRzIiwJCSJkLHQiLAkJMHg0YTAwMDAwMSwgMHhmZmUwMDdmZiwJV1JfMXxSRF8yfFJEX0MwfFdSX0MwLAkwLAkJWExQLAkJMCwJMCB9LAorIHsibXNnbGQiLAkJIiIsIAkJMCwgICAgKGludCkgTV9NU0dMRCwJSU5TTl9NQUNSTywJCTAsCQlYTFIsCQkwLAkwIH0sCisgeyJtc2dsZCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR0xEX1QsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAorLXsibXNnd2FpdCIsCQkiIiwgCQkwLCAgICAoaW50KSBNX01TR1dBSVQsCUlOU05fTUFDUk8sCQkwLAkJWExSLAkJMCwJMCB9LAorLXsibXNnd2FpdCIsCQkidCIsCQkwLCAgICAoaW50KSBNX01TR1dBSVRfVCxJTlNOX01BQ1JPLAkJMCwJCVhMUiwJCTAsCTAgfSwKKyt7Im1zZ2xkcyIsCQkiZCx0IiwJCTB4NGEwMDAwMDIsIDB4ZmZlMDA3ZmYsCVdSXzF8UkRfMnxSRF9DMHxXUl9DMCwJMCwJCVhMUCwJCTAsCTAgfSwKKyt7Im1zZ3dhaXQiLAkJIiIsCQkwLCAgICAoaW50KSBNX01TR1dBSVQsICBJTlNOX01BQ1JPLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyt7Im1zZ3dhaXQiLAkJInQiLAkJMCwgICAgKGludCkgTV9NU0dXQUlUX1QsSU5TTl9NQUNSTywJCTAsCQlYTFJ8WExQLAkwLAkwIH0sCisreyJtc2dzeW5jIiwJCSIiLAkJMHg0YTAwMDAwNCwgMHhmZmZmZmZmZiwwLAkJCTAsCQlYTFAsCQkwLAkwIH0sCisgeyJtc3ViLmQiLAkJIkQsUixTLFQiLAkweDRjMDAwMDI5LCAweGZjMDAwMDNmLCBXUl8xfFJEXzJ8UkRfM3xSRF80fEZQX0QsIDAsCQlJNF8zMywJCTAsCUkzNyB9LAorIHsibXN1Yi5kIiwJCSJELFMsVCIsCTB4NDYyMDAwMTksIDB4ZmZlMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlJTDJFLAkJMCwJMCB9LAorIHsibXN1Yi5kIiwJCSJELFMsVCIsCTB4NzIyMDAwMTksIDB4ZmZlMDAwM2YsCVdSXzF8UkRfMnxSRF8zfEZQX0QsCTAsCQlJTDJGLAkJMCwJMCB9LAorQEAgLTE1MzYsNyArMTU0NSw3IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7Im10bG8iLAkJInMsNyIsCQkweDAwMDAwMDEzLCAweGZjMWZlN2ZmLCBSRF8xfFdSX0xPLAkJMCwJCTAsCQlEMzIsCTAgfSwKKyB7Im10bG8xIiwJCSJzIiwJCTB4NzAwMDAwMTMsIDB4ZmMxZmZmZmYsCVJEXzF8V1JfTE8sCQkwLAkJRUUsCQkwLAkwIH0sCisgeyJtdGxoeCIsCQkicyIsCQkweDAwMDAwMDUzLCAweGZjMWZmZmZmLAlSRF8xfE1PRF9ISUxPLAkJMCwJCTAsCQlTTVQsCTAgfSwKKy17Im10Y3IiLAkJInQscyIsCQkweDcwMDAwMDE5LCAweGZjMDBmZmZmLCBSRF8xfFJEXzIsCQkwLAkJWExSLAkJMCwJMCB9LAorK3sibXRjciIsCQkidCxzIiwJCTB4NzAwMDAwMTksIDB4ZmMwMGZmZmYsIFJEXzEsCQkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyB7Im10bTAiLAkJInMiLAkJMHg3MDAwMDAwOCwgMHhmYzFmZmZmZiwgUkRfMSwJCQkwLAkJSU9DVCwJCTAsCTAgfSwKKyB7Im10bTAiLCAgICAJCSJzLHQiLAkJMHg3MDAwMDAwOCwgMHhmYzAwZmZmZiwgUkRfMXxSRF8yLAkJMCwJCUlPQ1QzLAkJMCwJMCB9LAorIHsibXRtMSIsCQkicyIsCQkweDcwMDAwMDBjLCAweGZjMWZmZmZmLCBSRF8xLAkJCTAsCQlJT0NULAkJMCwJMCB9LAorQEAgLTE5NzgsOSArMTk4Nyw5IEBAIGNvbnN0IHN0cnVjdCBtaXBzX29wY29kZSBtaXBzX2J1aWx0aW5fb3Bjb2Rlc1tdID0KKyB7InN1eGMxIiwJCSJTLHQoYikiLAkweDRjMDAwMDBkLCAweGZjMDAwN2ZmLCBSRF8xfFJEXzJ8UkRfM3xTTXxGUF9ELAkwLAkJSTVfMzN8TjU1LAkwLAlJMzd9LAorIHsic3ciLAkJCSJ0LG8oYikiLAkweGFjMDAwMDAwLCAweGZjMDAwMDAwLAlSRF8xfFJEXzN8U00sCQkwLAkJSTEsCQkwLAkwIH0sCisgeyJzdyIsCQkJInQsQShiKSIsCTAsICAgIChpbnQpIE1fU1dfQUIsCUlOU05fTUFDUk8sCQkwLAkJSTEsCQkwLAkwIH0sCisteyJzd2FwdyIsCQkidCxiIiwJCTB4NzAwMDAwMTQsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8TE18U00sCTAsCQlYTFIsCQkwLAkwIH0sCisteyJzd2Fwd3UiLAkJInQsYiIsCQkweDcwMDAwMDE1LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAorLXsic3dhcGQiLAkJInQsYiIsCQkweDcwMDAwMDE2LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfExNfFNNLAkwLAkJWExSLAkJMCwJMCB9LAorK3sic3dhcHciLAkJInQsYiIsCQkweDcwMDAwMDE0LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyt7InN3YXB3dSIsCQkidCxiIiwJCTB4NzAwMDAwMTUsIDB4ZmMwMGZmZmYsIE1PRF8xfFJEXzJ8U00sCQkwLAkJWExSfFhMUCwJMCwJMCB9LAorK3sic3dhcGQiLAkJInQsYiIsCQkweDcwMDAwMDE2LCAweGZjMDBmZmZmLCBNT0RfMXxSRF8yfFNNLAkJMCwJCVhMUnxYTFAsCTAsCTAgfSwKKyB7InN3YzAiLAkJIkUsbyhiKSIsCTB4ZTAwMDAwMDAsIDB4ZmMwMDAwMDAsCVJEXzN8UkRfQzB8U00sCQkwLAkJSTEsCQkwLAlJT0NUfElPQ1RQfElPQ1QyfEkzNyB9LAorIHsic3djMCIsCQkiRSxBKGIpIiwJMCwgICAgKGludCkgTV9TV0MwX0FCLAlJTlNOX01BQ1JPLAkJMCwJCUkxLAkJMCwJSU9DVHxJT0NUUHxJT0NUMnxJMzcgfSwKKyB7InN3YzEiLAkJIlQsbyhiKSIsCTB4ZTQwMDAwMDAsIDB4ZmMwMDAwMDAsCVJEXzF8UkRfM3xTTXxGUF9TLAkwLAkJSTEsCQkwLAkwIH0sCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMi1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmEzYjc4Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEyLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSBlNDg3NjdhMDI5OGU2Y2NmNTNkODNmZWNjOTNiYjZkMjZiNTk1ODk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogWmhlbmh1YSBMdW8gPHpoZW5odWEubHVvQG54cC5jb20+Ci1EYXRlOiBTYXQsIDExIEp1biAyMDE2IDIyOjA4OjI5IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMTVdIGZpeCB0aGUgaW5jb3JyZWN0IGFzc2VtYmxpbmcgZm9yIHBwYyB3YWl0IG1uZW1vbmljCi0KLVNpZ25lZC1vZmYtYnk6IFpoZW5odWEgTHVvIDx6aGVuaHVhLmx1b0BueHAuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIG9wY29kZXMvcHBjLW9wYy5jIHwgMyArLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9vcGNvZGVzL3BwYy1vcGMuYyBiL29wY29kZXMvcHBjLW9wYy5jCi1pbmRleCAzMDMyNjMxZDRlLi4xNDJmMDk2ZWY0IDEwMDY0NAotLS0tIGEvb3Bjb2Rlcy9wcGMtb3BjLmMKLSsrKyBiL29wY29kZXMvcHBjLW9wYy5jCi1AQCAtNTMyNSw3ICs1MzI1LDYgQEAgY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bjb2RlIHBvd2VycGNfb3Bjb2Rlc1tdID0gewotIHsibGRlcHgiLAlYKDMxLDI5KSwJWF9NQVNLLAkgIEU1MDBNQ3xQUENBMiwgMCwJCXtSVCwgUkEwLCBSQn19LAotIAotIHsid2FpdGFzZWMiLAlYKDMxLDMwKSwgICAgICBYUlRSQVJCX01BU0ssIFBPV0VSOCwJUE9XRVI5LAkJezB9fSwKLS17IndhaXQiLAlYKDMxLDMwKSwJWFdDX01BU0ssICAgIFBPV0VSOSwJMCwJCXtXQ319LAotIAotIHsibHdlcHgiLAlYKDMxLDMxKSwJWF9NQVNLLAkgIEU1MDBNQ3xQUENBMiwgMCwJCXtSVCwgUkEwLCBSQn19LAotIAotQEAgLTUzNzksNyArNTM3OCw3IEBAIGNvbnN0IHN0cnVjdCBwb3dlcnBjX29wY29kZSBwb3dlcnBjX29wY29kZXNbXSA9IHsKLSAKLSB7IndhaXRyc3YiLAlYKDMxLDYyKXwoMTw8MjEpLCAweGZmZmZmZmZmLCBFNTAwTUN8UFBDQTIsIDAsCQl7MH19LAotIHsid2FpdGltcGwiLAlYKDMxLDYyKXwoMjw8MjEpLCAweGZmZmZmZmZmLCBFNTAwTUN8UFBDQTIsIDAsCQl7MH19LAotLXsid2FpdCIsCVgoMzEsNjIpLAlYV0NfTUFTSywgICAgRTUwME1DfFBQQ0EyLCAwLAkJe1dDfX0sCi0reyJ3YWl0IiwJWCgzMSw2MiksCVhXQ19NQVNLLCAgICBFNTAwTUN8UFBDQTJ8UE9XRVI5LCAwLAl7V0N9fSwKLSAKLSB7ImRjYnN0ZXAiLAlYUlQoMzEsNjMsMCksCVhSVF9NQVNLLCAgICBFNTAwTUN8UFBDQTIsIDAsCQl7UkEwLCBSQn19LAotIAotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMy1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTMtRGV0ZWN0LTY0LWJpdC1NSVBTLXRhcmdldHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ5MjkxNzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMy1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gNjU4N2U3YjhlNzczMGRkYTIwZDhjNDdjYWJlOWY3ZjgzOTdlZmEzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDMxIE1hciAyMDE3IDExOjQyOjAzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMTMvMTVdIERldGVjdCA2NC1iaXQgTUlQUyB0YXJnZXRzCi0KLUFkZCBtaXBzNjQgdGFyZ2V0IHRyaXBsZXRzIGFuZCBkZWZhdWx0IHRvIE42NAotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9tbC9iaW51dGlscy8yMDE2LTA4L21zZzAwMDQ4Lmh0bWwKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdvbGQvY29uZmlndXJlLnRndCB8IDE0ICsrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2dvbGQvY29uZmlndXJlLnRndCBiL2dvbGQvY29uZmlndXJlLnRndAotaW5kZXggM2UwNjZlZGFhOC4uY2FmMTMwY2VkYSAxMDA2NDQKLS0tLSBhL2dvbGQvY29uZmlndXJlLnRndAotKysrIGIvZ29sZC9jb25maWd1cmUudGd0Ci1AQCAtMTUzLDYgKzE1MywxMyBAQCBhYXJjaDY0Ki0qKQotICB0YXJnX2JpZ19lbmRpYW49ZmFsc2UKLSAgdGFyZ19leHRyYV9iaWdfZW5kaWFuPXRydWUKLSAgOzsKLSttaXBzKjY0KmVsKi0qLSp8bWlwcyo2NCpsZSotKi0qKQotKyB0YXJnX29iaj1taXBzCi0rIHRhcmdfbWFjaGluZT1FTV9NSVBTX1JTM19MRQotKyB0YXJnX3NpemU9NjQKLSsgdGFyZ19iaWdfZW5kaWFuPWZhbHNlCi0rIHRhcmdfZXh0cmFfYmlnX2VuZGlhbj10cnVlCi0rIDs7Ci0gbWlwcyplbCotKi0qfG1pcHMqbGUqLSotKikKLSAgdGFyZ19vYmo9bWlwcwotICB0YXJnX21hY2hpbmU9RU1fTUlQU19SUzNfTEUKLUBAIC0xNjAsNiArMTY3LDEzIEBAIG1pcHMqZWwqLSotKnxtaXBzKmxlKi0qLSopCi0gIHRhcmdfYmlnX2VuZGlhbj1mYWxzZQotICB0YXJnX2V4dHJhX2JpZ19lbmRpYW49dHJ1ZQotICA7OwotK21pcHMqNjQqLSotKikKLSsgdGFyZ19vYmo9bWlwcwotKyB0YXJnX21hY2hpbmU9RU1fTUlQUwotKyB0YXJnX3NpemU9NjQKLSsgdGFyZ19iaWdfZW5kaWFuPXRydWUKLSsgdGFyZ19leHRyYV9iaWdfZW5kaWFuPWZhbHNlCi0rIDs7Ci0gbWlwcyotKi0qKQotICB0YXJnX29iaj1taXBzCi0gIHRhcmdfbWFjaGluZT1FTV9NSVBTCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDEzLWZpeC10aGUtaW5jb3JyZWN0LWFzc2VtYmxpbmctZm9yLXBwYy13YWl0LW1uZW1vbmljLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NjNkZTgwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxMy1maXgtdGhlLWluY29ycmVjdC1hc3NlbWJsaW5nLWZvci1wcGMtd2FpdC1tbmVtb25pYy5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIGVmNGFkMWNiOWZmMWI1YTg3MWZmYTc5MmE3MWIzYWQ2ZDE0ZWIzZGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBaaGVuaHVhIEx1byA8emhlbmh1YS5sdW9AbnhwLmNvbT4KK0RhdGU6IFNhdCwgMTEgSnVuIDIwMTYgMjI6MDg6MjkgLTA1MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IHRoZSBpbmNvcnJlY3QgYXNzZW1ibGluZyBmb3IgcHBjIHdhaXQgbW5lbW9uaWMKKworU2lnbmVkLW9mZi1ieTogWmhlbmh1YSBMdW8gPHpoZW5odWEubHVvQG54cC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgb3Bjb2Rlcy9wcGMtb3BjLmMgfCAzICstLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL29wY29kZXMvcHBjLW9wYy5jIGIvb3Bjb2Rlcy9wcGMtb3BjLmMKK2luZGV4IDdlZjkxZDgxOWIuLjE0NTk1M2QzYzQgMTAwNjQ0CistLS0gYS9vcGNvZGVzL3BwYy1vcGMuYworKysrIGIvb3Bjb2Rlcy9wcGMtb3BjLmMKK0BAIC01NzA5LDcgKzU3MDksNiBAQCBjb25zdCBzdHJ1Y3QgcG93ZXJwY19vcGNvZGUgcG93ZXJwY19vcGNvZGVzW10gPSB7CisgeyJsZGVweCIsCVgoMzEsMjkpLAlYX01BU0ssCSAgRTUwME1DfFBQQ0EyLCAwLAkJe1JULCBSQTAsIFJCfX0sCisgCisgeyJ3YWl0YXNlYyIsCVgoMzEsMzApLCAgICAgIFhSVFJBUkJfTUFTSywgUE9XRVI4LAlQT1dFUjksCQl7MH19LAorLXsid2FpdCIsCVgoMzEsMzApLAlYV0NfTUFTSywgICAgUE9XRVI5LAkwLAkJe1dDfX0sCisgCisgeyJsd2VweCIsCVgoMzEsMzEpLAlYX01BU0ssCSAgRTUwME1DfFBQQ0EyLCAwLAkJe1JULCBSQTAsIFJCfX0sCisgCitAQCAtNTc2Myw3ICs1NzYyLDcgQEAgY29uc3Qgc3RydWN0IHBvd2VycGNfb3Bjb2RlIHBvd2VycGNfb3Bjb2Rlc1tdID0geworIAorIHsid2FpdHJzdiIsCVgoMzEsNjIpfCgxPDwyMSksIDB4ZmZmZmZmZmYsIEU1MDBNQ3xQUENBMiwgMCwJCXswfX0sCisgeyJ3YWl0aW1wbCIsCVgoMzEsNjIpfCgyPDwyMSksIDB4ZmZmZmZmZmYsIEU1MDBNQ3xQUENBMiwgMCwJCXswfX0sCisteyJ3YWl0IiwJWCgzMSw2MiksCVhXQ19NQVNLLCAgICBFNTAwTUN8UFBDQTIsIDAsCQl7V0N9fSwKKyt7IndhaXQiLAlYKDMxLDYyKSwJWFdDX01BU0ssICAgIEU1MDBNQ3xQUENBMnxQT1dFUjksIDAsCXtXQ319LAorIAorIHsiZGNic3RlcCIsCVhSVCgzMSw2MywwKSwJWFJUX01BU0ssICAgIEU1MDBNQ3xQUENBMiwgMCwJCXtSQTAsIFJCfX0sCisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE0LURldGVjdC02NC1iaXQtTUlQUy10YXJnZXRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWNkZTFmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1EZXRlY3QtNjQtYml0LU1JUFMtdGFyZ2V0cy5wYXRjaApAQCAtMCwwICsxLDQ3IEBACitGcm9tIDJmN2YyMzg5NzY0ZWYxZDY5OWY2YWQzMjA1NzMxNDAyNGI3ZTg0ZTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAzMSBNYXIgMjAxNyAxMTo0MjowMyAtMDcwMAorU3ViamVjdDogW1BBVENIXSBEZXRlY3QgNjQtYml0IE1JUFMgdGFyZ2V0cworCitBZGQgbWlwczY0IHRhcmdldCB0cmlwbGV0cyBhbmQgZGVmYXVsdCB0byBONjQKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKK2h0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvYmludXRpbHMvMjAxNi0wOC9tc2cwMDA0OC5odG1sCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnb2xkL2NvbmZpZ3VyZS50Z3QgfCAxNCArKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nb2xkL2NvbmZpZ3VyZS50Z3QgYi9nb2xkL2NvbmZpZ3VyZS50Z3QKK2luZGV4IGFhN2VjNTUyYWUuLjQ3MDUxNTA2MmUgMTAwNjQ0CistLS0gYS9nb2xkL2NvbmZpZ3VyZS50Z3QKKysrKyBiL2dvbGQvY29uZmlndXJlLnRndAorQEAgLTE1Myw2ICsxNTMsMTMgQEAgYWFyY2g2NCotKikKKyAgdGFyZ19iaWdfZW5kaWFuPWZhbHNlCisgIHRhcmdfZXh0cmFfYmlnX2VuZGlhbj10cnVlCisgIDs7CisrbWlwcyo2NCplbCotKi0qfG1pcHMqNjQqbGUqLSotKikKKysgdGFyZ19vYmo9bWlwcworKyB0YXJnX21hY2hpbmU9RU1fTUlQU19SUzNfTEUKKysgdGFyZ19zaXplPTY0CisrIHRhcmdfYmlnX2VuZGlhbj1mYWxzZQorKyB0YXJnX2V4dHJhX2JpZ19lbmRpYW49dHJ1ZQorKyA7OworIG1pcHMqZWwqLSotKnxtaXBzKmxlKi0qLSopCisgIHRhcmdfb2JqPW1pcHMKKyAgdGFyZ19tYWNoaW5lPUVNX01JUFNfUlMzX0xFCitAQCAtMTYwLDYgKzE2NywxMyBAQCBtaXBzKmVsKi0qLSp8bWlwcypsZSotKi0qKQorICB0YXJnX2JpZ19lbmRpYW49ZmFsc2UKKyAgdGFyZ19leHRyYV9iaWdfZW5kaWFuPXRydWUKKyAgOzsKKyttaXBzKjY0Ki0qLSopCisrIHRhcmdfb2JqPW1pcHMKKysgdGFyZ19tYWNoaW5lPUVNX01JUFMKKysgdGFyZ19zaXplPTY0CisrIHRhcmdfYmlnX2VuZGlhbj10cnVlCisrIHRhcmdfZXh0cmFfYmlnX2VuZGlhbj1mYWxzZQorKyA7OworIG1pcHMqLSotKikKKyAgdGFyZ19vYmo9bWlwcworICB0YXJnX21hY2hpbmU9RU1fTUlQUwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNC1zeW5jLXdpdGgtT0UtbGlidG9vbC1jaGFuZ2VzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NWJhMTBhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTQtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLUZyb20gYjc3MjkzNDMyMDZmYTE5NmI5YTExNzQ3YTkyYjNjZjU2MzI3NzA1NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+Ci1EYXRlOiBNb24sIDYgTWFyIDIwMTcgMjM6MzM6MjcgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxNC8xNV0gc3luYyB3aXRoIE9FIGxpYnRvb2wgY2hhbmdlcwotCi1BcHBseSB0aGVzZSBwYXRjaGVzIGZyb20gb3VyIGxpYnRvb2wgcGF0Y2hlcyBhcyBub3Qgb25seSBhcmUgcmVkdW5kYW50IFJQQVRIcyBhCi13YXN0ZSBvZiBzcGFjZSBidXQgdGhleSBjYW4gY2F1c2UgaW5jb3JyZWN0IGxpbmtpbmcgd2hlbiBuYXRpdmUgcGFja2FnZXMgYXJlCi1yZXN0b3JlZCBmcm9tIHNzdGF0ZS4KLQotZml4LXJwYXRoLnBhdGNoOgotV2UgZG9uJ3Qgd2FudCB0byBhZGQgUlBBVEhTIHdoaWNoIG1hdGNoIGRlZmF1bHQgbGlua2VyCi1zZWFyY2ggcGF0aHMsIHRoZXkncmUgYSB3YXN0ZSBvZiBzcGFjZS4gVGhpcyBwYXRjaAotZmlsdGVycyBsaWJ0b29scyBsaXN0IGFuZCByZW1vdmVzIHRoZSBvbmVzIHdlIGRvbid0IG5lZWQuCi0KLW5vcm0tcnBhdGgucGF0Y2g6Ci1MaWJ0b29sIG1heSBiZSBwYXNzZWQgbGluayBwYXRocyBvZiB0aGUgZm9ybSAiL3Vzci9saWIvLi4vbGliIiwgd2hpY2gKLWZvb2wgaXRzIGRldGVjdGlvbiBjb2RlIGludG8gdGhpbmtpbmcgaXQgc2hvdWxkIGJlIGluY2x1ZGVkIGFzIGFuCi1SUEFUSCBpbiB0aGUgZ2VuZXJhdGVkIGJpbmFyeS4gIE5vcm1hbGl6ZSBiZWZvcmUgY29tcGFyaXNpb24uCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGx0bWFpbi5zaCB8IDM0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMjggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAotaW5kZXggMTFlZTY4NGNjYy4uM2IxOWFjMTUzMiAxMDA2NDQKLS0tLSBhL2x0bWFpbi5zaAotKysrIGIvbHRtYWluLnNoCi1AQCAtODA1Myw4ICs4MDUzLDE2IEBAIEVPRgotIAkJICBlc2FjCi0gCQlmaQotIAkgICAgICBlbHNlCi0tCQlldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0tCQlmdW5jX2FwcGVuZCBkZXBfcnBhdGggIiAkZmxhZyIKLSsgICAgICAgICAgICAgICAgIyBXZSBvbmx5IHdhbnQgdG8gaGFyZGNvZGUgaW4gYW4gcnBhdGggaWYgaXQgaXNuJ3QgaW4gdGhlCi0rICAgICAgICAgICAgICAgICMgZGVmYXVsdCBkbHNlYXJjaCBwYXRoLgotKyAgICAgICAgICAgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoICIkbGliZGlyIgotKyAgICAgICAgICAgICAgICBsaWJkaXJfbm9ybT0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKLSsJICAgICAgICBjYXNlICIgJHN5c19saWJfZGxzZWFyY2hfcGF0aCAiIGluCi0rCSAgICAgICAgKiIgJGxpYmRpcl9ub3JtICIqKSA7OwotKwkgICAgICAgICopIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSsgICAgICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgZGVwX3JwYXRoICIgJGZsYWciCi0rICAgICAgICAgICAgICAgICAgIDs7Ci0rCSAgICAgICAgZXNhYwotIAkgICAgICBmaQotIAkgICAgZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0gCSAgICAgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KLUBAIC04NzkwLDggKzg3OTgsMTYgQEAgRU9GCi0gCSAgICAgIGVzYWMKLSAJICAgIGZpCi0gCSAgZWxzZQotLQkgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotLQkgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKLSsgICAgICAgICAgICAjIFdlIG9ubHkgd2FudCB0byBoYXJkY29kZSBpbiBhbiBycGF0aCBpZiBpdCBpc24ndCBpbiB0aGUKLSsgICAgICAgICAgICAjIGRlZmF1bHQgZGxzZWFyY2ggcGF0aC4KLSsgICAgICAgICAgICBmdW5jX25vcm1hbF9hYnNwYXRoICIkbGliZGlyIgotKyAgICAgICAgICAgIGxpYmRpcl9ub3JtPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAotKwkgICAgY2FzZSAiICRzeXNfbGliX2Rsc2VhcmNoX3BhdGggIiBpbgotKwkgICAgKiIgJGxpYmRpcl9ub3JtICIqKSA7OwotKwkgICAgKikgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgotKyAgICAgICAgICAgICAgIHJwYXRoKz0iICRmbGFnIgotKyAgICAgICAgICAgICAgIDs7Ci0rCSAgICBlc2FjCi0gCSAgZmkKLSAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0gCSAgY2FzZSAiJHBlcm1fcnBhdGggIiBpbgotQEAgLTg4NDEsOCArODg1NywxNCBAQCBFT0YKLSAJICAgICAgZXNhYwotIAkgICAgZmkKLSAJICBlbHNlCi0tCSAgICBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCi0tCSAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgotKyAgICAgICAgICAgICMgV2Ugb25seSB3YW50IHRvIGhhcmRjb2RlIGluIGFuIHJwYXRoIGlmIGl0IGlzbid0IGluIHRoZQotKyAgICAgICAgICAgICMgZGVmYXVsdCBkbHNlYXJjaCBwYXRoLgotKwkgICAgY2FzZSAiICRzeXNfbGliX2Rsc2VhcmNoX3BhdGggIiBpbgotKwkgICAgKiIgJGxpYmRpciAiKikgOzsKLSsJICAgICopIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKLSsgICAgICAgICAgICAgICBmdW5jX2FwcGVuZCBycGF0aCAiICRmbGFnIgotKyAgICAgICAgICAgICAgIDs7Ci0rCSAgICBlc2FjCi0gCSAgZmkKLSAJZWxpZiB0ZXN0IC1uICIkcnVucGF0aF92YXIiOyB0aGVuCi0gCSAgY2FzZSAiJGZpbmFsaXplX3Blcm1fcnBhdGggIiBpbgotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1iaW51dGlscy1lbmFibGUteDg2XzY0LXBlcC1mb3ItcHJvZHVjaW5nLUVGSS1iaW5hcmllLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNS1iaW51dGlscy1lbmFibGUteDg2XzY0LXBlcC1mb3ItcHJvZHVjaW5nLUVGSS1iaW5hcmllLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmRlNTYxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTUtYmludXRpbHMtZW5hYmxlLXg4Nl82NC1wZXAtZm9yLXByb2R1Y2luZy1FRkktYmluYXJpZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLUZyb20gZDVkNzgzOTAzZTMzNTMwMmU1NjJiYWM4ZGExYTA4MzMzOGQ3NWIyNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDI5IE5vdiAyMDE4IDE3OjQ2OjQwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMTUvMTVdIGJpbnV0aWxzIDogZW5hYmxlIHg4Nl82NC1wZXAgZm9yIHByb2R1Y2luZyBFRkkgYmluYXJpZXMKLSBvbiB4ODYtNjQKLQotQWRkIHg4Nl82NC1wZXAgZW11bGF0aW9uIHN1cHBvcnQgdG8gdGhlIHNldCBlbmFibGVkIGZvciB4ODZfNjQgdGFyZ2V0cwotdG8gZW5hYmxlIHRoZSBsaW5rZXIgdG8gcHJvZHVjZSBQb3J0YWJsZSBFeGVjdXRhYmxlcyBmb3IgRUZJIGJpbmFyaWVzLgotCi1FbmFibGVzIGJ1aWxkaW5nIHRoZSB4ODYtNjQgRUZJIHZhcmlhbnQgb2YgdGhlIFhlbiBoeXBlcnZpc29yIGZvcgotdGhlIE9wZW5YVCBQcm9qZWN0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZ3VyYXRpb24gc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIENsYXJrIDxjaHJpc3RvcGhlci5jbGFyazZAYmFlc3lzdGVtcy5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gYmZkL2NvbmZpZy5iZmQgICB8IDIgKy0KLSBsZC9jb25maWd1cmUudGd0IHwgNSArKystLQotIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmZkL2NvbmZpZy5iZmQgYi9iZmQvY29uZmlnLmJmZAotaW5kZXggMzYxNGZmNzlkNC4uYWVmMTQ0ODAzYSAxMDA2NDQKLS0tLSBhL2JmZC9jb25maWcuYmZkCi0rKysgYi9iZmQvY29uZmlnLmJmZAotQEAgLTY5NCw3ICs2OTQsNyBAQCBjYXNlICIke3Rhcmd9IiBpbgotICAgICA7OwotICAgeDg2XzY0LSotbGludXgtKikKLSAgICAgdGFyZ19kZWZ2ZWM9eDg2XzY0X2VsZjY0X3ZlYwotLSAgICB0YXJnX3NlbHZlY3M9ImkzODZfZWxmMzJfdmVjIGlhbWN1X2VsZjMyX3ZlYyB4ODZfNjRfZWxmMzJfdmVjIGkzODZfcGVpX3ZlYyB4ODZfNjRfcGVpX3ZlYyBsMW9tX2VsZjY0X3ZlYyBrMW9tX2VsZjY0X3ZlYyIKLSsgICAgdGFyZ19zZWx2ZWNzPSJpMzg2X2VsZjMyX3ZlYyBpYW1jdV9lbGYzMl92ZWMgeDg2XzY0X2VsZjMyX3ZlYyBpMzg2X3BlaV92ZWMgeDg2XzY0X3BlaV92ZWMgbDFvbV9lbGY2NF92ZWMgazFvbV9lbGY2NF92ZWMgeDg2XzY0X3BlX3ZlYyB4ODZfNjRfcGVfYmVfdmVjIGkzODZfcGVfdmVjIgotICAgICB3YW50NjQ9dHJ1ZQotICAgICA7OwotICAgeDg2XzY0LSotbmFjbCopCi1kaWZmIC0tZ2l0IGEvbGQvY29uZmlndXJlLnRndCBiL2xkL2NvbmZpZ3VyZS50Z3QKLWluZGV4IDM0N2RmNmMzZjYuLjFlMzdkNzQ3YTkgMTAwNjQ0Ci0tLS0gYS9sZC9jb25maWd1cmUudGd0Ci0rKysgYi9sZC9jb25maWd1cmUudGd0Ci1AQCAtMjU3LDggKzI1Nyw5IEBAIHg4Nl82NC0qLWxpbnV4LWdudXgzMikJdGFyZ19lbXVsPWVsZjMyX3g4Nl82NAotIAkJCXRkaXJfZWxmX2lhbWN1PWBlY2hvICR7dGFyZ19hbGlhc30gfCBzZWQgLWUgJ3MveDg2XzY0L2kzODYvJyAtZSAncy8tbGludXgtZ251eDMyLy1saW51eC1nbnUvJ2AKLSAJCQl0ZGlyX2VsZl9pMzg2PWBlY2hvICR7dGFyZ19hbGlhc30gfCBzZWQgLWUgJ3MveDg2XzY0L2kzODYvJyAtZSAncy8tbGludXgtZ251eDMyLy1saW51eC1nbnUvJ2AgOzsKLSB4ODZfNjQtKi1saW51eC0qKQl0YXJnX2VtdWw9ZWxmX3g4Nl82NAotLQkJCXRhcmdfZXh0cmFfZW11bHM9ImVsZjMyX3g4Nl82NCBlbGZfaTM4NiBlbGZfaWFtY3UgZWxmX2wxb20gZWxmX2sxb20iCi0tCQkJdGFyZ19leHRyYV9saWJwYXRoPSJlbGZfaTM4NiBlbGYzMl94ODZfNjQgZWxmX2wxb20gZWxmX2sxb20iCi0rCQkJdGFyZ19leHRyYV9lbXVscz0iZWxmMzJfeDg2XzY0IGVsZl9pMzg2IGVsZl9pYW1jdSBlbGZfbDFvbSBlbGZfazFvbSBpMzg2cGUgaTM4NnBlcCIKLSsJCQl0YXJnX2V4dHJhX2xpYnBhdGg9ImVsZl9pMzg2IGVsZjMyX3g4Nl82NCBlbGZfbDFvbSBlbGZfazFvbSBpMzg2cGVwIgotKwkJCXRhcmdfZXh0cmFfb2ZpbGVzPSJkZWZmaWxlcC5vIHBlcC1kbGwubyBwZS1kbGwubyIKLSAJCQl0ZGlyX2VsZl9pMzg2PWBlY2hvICR7dGFyZ19hbGlhc30gfCBzZWQgLWUgJ3MveDg2XzY0L2kzODYvJ2AgOzsKLSBpWzMtN104Ni0qLXJlZG94KikJdGFyZ19lbXVsPWVsZl9pMzg2Ci0gCQkJdGFyZ19leHRyYV9lbXVscz1lbGZfeDg2XzY0IDs7Ci0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy8wMDE1LXN5bmMtd2l0aC1PRS1saWJ0b29sLWNoYW5nZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc5NDcxOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTUtc3luYy13aXRoLU9FLWxpYnRvb2wtY2hhbmdlcy5wYXRjaApAQCAtMCwwICsxLDg2IEBACitGcm9tIDM5MmQ0NzRhNzJkMzdiNjY5ZjUzYWI5ZjBmYTkxM2I5NThhZjkzZjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogTW9uLCA2IE1hciAyMDE3IDIzOjMzOjI3IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIHN5bmMgd2l0aCBPRSBsaWJ0b29sIGNoYW5nZXMKKworQXBwbHkgdGhlc2UgcGF0Y2hlcyBmcm9tIG91ciBsaWJ0b29sIHBhdGNoZXMgYXMgbm90IG9ubHkgYXJlIHJlZHVuZGFudCBSUEFUSHMgYQord2FzdGUgb2Ygc3BhY2UgYnV0IHRoZXkgY2FuIGNhdXNlIGluY29ycmVjdCBsaW5raW5nIHdoZW4gbmF0aXZlIHBhY2thZ2VzIGFyZQorcmVzdG9yZWQgZnJvbSBzc3RhdGUuCisKK2ZpeC1ycGF0aC5wYXRjaDoKK1dlIGRvbid0IHdhbnQgdG8gYWRkIFJQQVRIUyB3aGljaCBtYXRjaCBkZWZhdWx0IGxpbmtlcgorc2VhcmNoIHBhdGhzLCB0aGV5J3JlIGEgd2FzdGUgb2Ygc3BhY2UuIFRoaXMgcGF0Y2gKK2ZpbHRlcnMgbGlidG9vbHMgbGlzdCBhbmQgcmVtb3ZlcyB0aGUgb25lcyB3ZSBkb24ndCBuZWVkLgorCitub3JtLXJwYXRoLnBhdGNoOgorTGlidG9vbCBtYXkgYmUgcGFzc2VkIGxpbmsgcGF0aHMgb2YgdGhlIGZvcm0gIi91c3IvbGliLy4uL2xpYiIsIHdoaWNoCitmb29sIGl0cyBkZXRlY3Rpb24gY29kZSBpbnRvIHRoaW5raW5nIGl0IHNob3VsZCBiZSBpbmNsdWRlZCBhcyBhbgorUlBBVEggaW4gdGhlIGdlbmVyYXRlZCBiaW5hcnkuICBOb3JtYWxpemUgYmVmb3JlIGNvbXBhcmlzaW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKKworU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsdG1haW4uc2ggfCAzNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDYgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKK2luZGV4IDExZWU2ODRjY2MuLjNiMTlhYzE1MzIgMTAwNjQ0CistLS0gYS9sdG1haW4uc2gKKysrKyBiL2x0bWFpbi5zaAorQEAgLTgwNTMsOCArODA1MywxNiBAQCBFT0YKKyAJCSAgZXNhYworIAkJZmkKKyAJICAgICAgZWxzZQorLQkJZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorLQkJZnVuY19hcHBlbmQgZGVwX3JwYXRoICIgJGZsYWciCisrICAgICAgICAgICAgICAgICMgV2Ugb25seSB3YW50IHRvIGhhcmRjb2RlIGluIGFuIHJwYXRoIGlmIGl0IGlzbid0IGluIHRoZQorKyAgICAgICAgICAgICAgICAjIGRlZmF1bHQgZGxzZWFyY2ggcGF0aC4KKysgICAgICAgICAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aCAiJGxpYmRpciIKKysgICAgICAgICAgICAgICAgbGliZGlyX25vcm09JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0CisrCSAgICAgICAgY2FzZSAiICRzeXNfbGliX2Rsc2VhcmNoX3BhdGggIiBpbgorKwkgICAgICAgICoiICRsaWJkaXJfbm9ybSAiKikgOzsKKysJICAgICAgICAqKSBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisrICAgICAgICAgICAgICAgICAgIGZ1bmNfYXBwZW5kIGRlcF9ycGF0aCAiICRmbGFnIgorKyAgICAgICAgICAgICAgICAgICA7OworKwkgICAgICAgIGVzYWMKKyAJICAgICAgZmkKKyAJICAgIGVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorIAkgICAgICBjYXNlICIkcGVybV9ycGF0aCAiIGluCitAQCAtODc5MCw4ICs4Nzk4LDE2IEBAIEVPRgorIAkgICAgICBlc2FjCisgCSAgICBmaQorIAkgIGVsc2UKKy0JICAgIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKy0JICAgIGZ1bmNfYXBwZW5kIHJwYXRoICIgJGZsYWciCisrICAgICAgICAgICAgIyBXZSBvbmx5IHdhbnQgdG8gaGFyZGNvZGUgaW4gYW4gcnBhdGggaWYgaXQgaXNuJ3QgaW4gdGhlCisrICAgICAgICAgICAgIyBkZWZhdWx0IGRsc2VhcmNoIHBhdGguCisrICAgICAgICAgICAgZnVuY19ub3JtYWxfYWJzcGF0aCAiJGxpYmRpciIKKysgICAgICAgICAgICBsaWJkaXJfbm9ybT0kZnVuY19ub3JtYWxfYWJzcGF0aF9yZXN1bHQKKysJICAgIGNhc2UgIiAkc3lzX2xpYl9kbHNlYXJjaF9wYXRoICIgaW4KKysJICAgICoiICRsaWJkaXJfbm9ybSAiKikgOzsKKysJICAgICopIGV2YWwgZmxhZz1cIiRoYXJkY29kZV9saWJkaXJfZmxhZ19zcGVjXCIKKysgICAgICAgICAgICAgICBycGF0aCs9IiAkZmxhZyIKKysgICAgICAgICAgICAgICA7OworKwkgICAgZXNhYworIAkgIGZpCisgCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorIAkgIGNhc2UgIiRwZXJtX3JwYXRoICIgaW4KK0BAIC04ODQxLDggKzg4NTcsMTQgQEAgRU9GCisgCSAgICAgIGVzYWMKKyAJICAgIGZpCisgCSAgZWxzZQorLQkgICAgZXZhbCBmbGFnPVwiJGhhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWNcIgorLQkgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKKysgICAgICAgICAgICAjIFdlIG9ubHkgd2FudCB0byBoYXJkY29kZSBpbiBhbiBycGF0aCBpZiBpdCBpc24ndCBpbiB0aGUKKysgICAgICAgICAgICAjIGRlZmF1bHQgZGxzZWFyY2ggcGF0aC4KKysJICAgIGNhc2UgIiAkc3lzX2xpYl9kbHNlYXJjaF9wYXRoICIgaW4KKysJICAgICoiICRsaWJkaXIgIiopIDs7CisrCSAgICAqKSBldmFsIGZsYWc9XCIkaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlY1wiCisrICAgICAgICAgICAgICAgZnVuY19hcHBlbmQgcnBhdGggIiAkZmxhZyIKKysgICAgICAgICAgICAgICA7OworKwkgICAgZXNhYworIAkgIGZpCisgCWVsaWYgdGVzdCAtbiAiJHJ1bnBhdGhfdmFyIjsgdGhlbgorIAkgIGNhc2UgIiRmaW5hbGl6ZV9wZXJtX3JwYXRoICIgaW4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTYtQ2hlY2stZm9yLWNsYW5nLWJlZm9yZS1jaGVja2luZy1nY2MtdmVyc2lvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzLzAwMTYtQ2hlY2stZm9yLWNsYW5nLWJlZm9yZS1jaGVja2luZy1nY2MtdmVyc2lvbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjk0YjQyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvMDAxNi1DaGVjay1mb3ItY2xhbmctYmVmb3JlLWNoZWNraW5nLWdjYy12ZXJzaW9uLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gNjc1OTBhNDRjMTI1NjQ5MWZhNjc0NDI2ZjAxNzBkNWQwNTM3N2QwNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDE1IEFwciAyMDIwIDE0OjE3OjIwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMTYvMTZdIENoZWNrIGZvciBjbGFuZyBiZWZvcmUgY2hlY2tpbmcgZ2NjIHZlcnNpb24KKworQ2xhbmcgYWR2ZXJ0aXNlcyBpdHNlbGYgdG8gYmUgZ2NjIDQuMi4xLCBzbyB3aGVuIGNvbXBpbGluZyB0aGlzIHRlc3QKK2hlcmUgZmFpbHMgc2luY2UgZ2NjIDwgNC40LjUgZGlkIG5vdCBzdXBwb3J0IC1zdGF0aWMtbGlic3RkYysrIGJ1dCB0aGF0cworbm90IHRydWUgZm9yIGNsYW5nLCBzbyBpdHMgYmV0dGVyIHRvIG1ha2UgYW4gYWRkaXRpb25hbCBjaGVjayBmb3IgY2xhbmcKK2JlZm9yZSByZXNvcnRpbmcgdG8gZ2NjIHZlcnNpb24gY2hlY2suIFRoaXMgc2hvdWxkIGxldCBjbGFuZyBlbmFibGUKK3N0YXRpYyBsaWJzdGRjKysgbGlua2luZworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZ3VyZSAgICB8IDIgKy0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IDU5MGIwM2MyZGEwLi40NmYxMTZmZGI1NCAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNTE0MCw3ICs1MTQwLDcgQEAgYWNfY29tcGlsZXJfZ251PSRhY19jdl9jeHhfY29tcGlsZXJfZ251CisgY2F0IGNvbmZkZWZzLmggLSA8PF9BQ0VPRiA+Y29uZnRlc3QuJGFjX2V4dAorIC8qIGVuZCBjb25mZGVmcy5oLiAgKi8KKyAKKy0jaWYgKF9fR05VQ19fIDwgNCkgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA1KQorKyNpZiAhZGVmaW5lZChfX2NsYW5nX18pICYmICgoX19HTlVDX18gPCA0KSB8fCAoX19HTlVDX18gPT0gNCAmJiBfX0dOVUNfTUlOT1JfXyA8IDUpKQorICNlcnJvciAtc3RhdGljLWxpYnN0ZGMrKyBub3QgaW1wbGVtZW50ZWQKKyAjZW5kaWYKKyBpbnQgbWFpbigpIHt9CitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBkM2Y4NWU2ZjVkNS4uYzBlYjEzNDMxMjEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTEzMDksNyArMTMwOSw3IEBAIGlmIHRlc3QgIiRHQ0MiID0geWVzOyB0aGVuCisgICBBQ19NU0dfQ0hFQ0tJTkcoW3doZXRoZXIgZysrIGFjY2VwdHMgLXN0YXRpYy1saWJzdGRjKysgLXN0YXRpYy1saWJnY2NdKQorICAgQUNfTEFOR19QVVNIKEMrKykKKyAgIEFDX0xJTktfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbCistI2lmIChfX0dOVUNfXyA8IDQpIHx8IChfX0dOVUNfXyA9PSA0ICYmIF9fR05VQ19NSU5PUl9fIDwgNSkKKysjaWYgIWRlZmluZWQoX19jbGFuZ19fKSAmJiAoKF9fR05VQ19fIDwgNCkgfHwgKF9fR05VQ19fID09IDQgJiYgX19HTlVDX01JTk9SX18gPCA1KSkKKyAjZXJyb3IgLXN0YXRpYy1saWJzdGRjKysgbm90IGltcGxlbWVudGVkCisgI2VuZGlmCisgaW50IG1haW4oKSB7fV0pXSwKKy0tIAorMi4yNi4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTEyOTcyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTI5NzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA3ZDFkNjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTI5NzIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1Gcm9tIDMwYmNjMDE0Nzg0MzNhMWNiMDViMzZkYzVjNGJlZWY3ZDJjODliNWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGFuIE1vZHJhIDxhbW9kcmFAZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMSBKdW4gMjAxOSAxMTo1MTozOCArMDkzMAotU3ViamVjdDogW1BBVENIXSBQUjI0Njg5LCBzdHJpbmcgdGFibGUgY29ycnVwdGlvbgotCi1UaGUgdGVzdGNhc2UgaW4gdGhlIFBSIGhhZCBhIGVfc2hzdHJuZHggc2VjdGlvbiBvZiB0eXBlIFNIVF9HUk9VUC4KLWhkci0+Y29udGVudHMgd2VyZSBpbml0aWFsaXplZCBieSBzZXR1cF9ncm91cCByYXRoZXIgdGhhbiBiZWluZyByZWFkCi1mcm9tIHRoZSBmaWxlLCB0aHVzIGxhc3QgYnl0ZSB3YXMgbm90IHplcm8gYW5kIHN0cmluZyBkZXJlZmVyZW5jZSByYW4KLW9mZiB0aGUgZW5kIG9mIHRoZSBidWZmZXIuCi0KLQlQUiAyNDY4OQotCSogZWxmY29kZS5oIChlbGZfb2JqZWN0X3ApOiBDaGVjayB0eXBlIG9mIGVfc2hzdHJuZHggc2VjdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxOS0xMjk3MgotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLS0tLQotIGJmZC9DaGFuZ2VMb2cgfCA1ICsrKysrCi0gYmZkL2VsZmNvZGUuaCB8IDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2JmZC9DaGFuZ2VMb2cgYi9iZmQvQ2hhbmdlTG9nCi1pbmRleCA5MWYwOWU2MzQ2Li5lNjZmYjQwYTJjIDEwMDY0NAotLS0tIGEvYmZkL0NoYW5nZUxvZwotKysrIGIvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSw4IEBACi0rMjAxOS0wNi0yMSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0rCi0rCVBSIDI0Njg5Ci0rCSogZWxmY29kZS5oIChlbGZfb2JqZWN0X3ApOiBDaGVjayB0eXBlIG9mIGVfc2hzdHJuZHggc2VjdGlvbi4KLSsKLSAyMDE5LTAyLTIwICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSAKLSAJUFIgMjQyMzYKLWRpZmYgLS1naXQgYS9iZmQvZWxmY29kZS5oIGIvYmZkL2VsZmNvZGUuaAotaW5kZXggZWM1ZWE3NjZkZS4uYTM1YTYyOTA4NyAxMDA2NDQKLS0tLSBhL2JmZC9lbGZjb2RlLmgKLSsrKyBiL2JmZC9lbGZjb2RlLmgKLUBAIC03NTUsNyArNzU1LDggQEAgZWxmX29iamVjdF9wIChiZmQgKmFiZmQpCi0gICAvKiBBIGZ1cnRoZXIgc2FuaXR5IGNoZWNrLiAgKi8KLSAgIGlmIChpX2VoZHJwLT5lX3NobnVtICE9IDApCi0gICAgIHsKLS0gICAgICBpZiAoaV9laGRycC0+ZV9zaHN0cm5keCA+PSBlbGZfbnVtc2VjdGlvbnMgKGFiZmQpKQotKyAgICAgIGlmIChpX2VoZHJwLT5lX3Noc3RybmR4ID49IGVsZl9udW1zZWN0aW9ucyAoYWJmZCkKLSsJICB8fCBpX3NoZHJwW2lfZWhkcnAtPmVfc2hzdHJuZHhdLnNoX3R5cGUgIT0gU0hUX1NUUlRBQikKLSAJewotIAkgIC8qIFBSIDIyNTc6Ci0gCSAgICAgV2UgdXNlZCB0byBqdXN0IGdvdG8gZ290X3dyb25nX2Zvcm1hdF9lcnJvciBoZXJlCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xNDI1MC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTE0MjUwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTE1YTgzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTE0MjUwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSBkZjc4YmUwNWRhZjRlYjA3ZjYwZjUwZWMxMDgwY2I5NzlhZjMyZWMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogbWFyeGluIDxtYXJ4aW5AMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogVHVlLCAyMyBKdWwgMjAxOSAwNzozMzozMiArMDAwMAotU3ViamVjdDogW1BBVENIXSBsaWJpYmVydHk6IENoZWNrIHplcm8gdmFsdWUgc2hzdHJuZHggaW4gc2ltcGxlLW9iamVjdC1lbGYuYwotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy90cnVua0AyNzM3MTggMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLUNWRTogQ1ZFLTIwMTktMTQyNTAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2Zyb20gZ2NjOiBodHRwczovL2djYy5nbnUub3JnL3ZpZXdjdnMvZ2NjP3ZpZXc9cmV2aXNpb24mcmV2aXNpb249MjczNzE4XQotW1JlbW92ZWQgQ2hhbmdlbG9nIGVudHJ5XQotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLS0tLQotZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jIGIvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMKLWluZGV4IDUwMjM4ODk5MWEwOC4uYmRlZTk2MzYzNGQ2IDEwMDY0NAotLS0tIGEvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMKLSsrKyBiL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jCi1AQCAtNTQ4LDcgKzU0OCwxNSBAQCBzaW1wbGVfb2JqZWN0X2VsZl9tYXRjaCAodW5zaWduZWQgY2hhciBoZWFkZXJbU0lNUExFX09CSkVDVF9NQVRDSF9IRUFERVJfTEVOXSwKLSAgICAgICBYREVMRVRFIChlb3IpOwotICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0tCi0rICAKLSsgIGlmIChlb3ItPnNoc3RybmR4ID09IDApCi0rICAgIHsKLSsgICAgICAqZXJybXNnID0gImludmFsaWQgRUxGIHNoc3RybmR4ID09IDAiOwotKyAgICAgICplcnIgPSAwOwotKyAgICAgIFhERUxFVEUgKGVvcik7Ci0rICAgICAgcmV0dXJuIE5VTEw7Ci0rICAgIH0KLSsgIAotICAgcmV0dXJuICh2b2lkICopIGVvcjsKLSB9Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xNDQ0NC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTE0NDQ0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NWI5YTlmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTE0NDQ0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSBlMTc4NjlkYjk5MTk1ODQ5ODI2ZWFhZjVkMmQwZWIyY2ZkZDdhMmE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTmljayBDbGlmdG9uIDxuaWNrY0ByZWRoYXQuY29tPgotRGF0ZTogTW9uLCA1IEF1ZyAyMDE5IDEwOjQwOjM1ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIENhdGNoIHBvdGVudGlhbCBpbnRlZ2VyIG92ZXJmbG93IGluIHJlYWRlbGYgd2hlbiBwcm9jZXNzaW5nCi0gY29ycnVwdCBiaW5hcmllcy4KLQotCVBSIDI0ODI5Ci0JKiByZWFkZWxmLmMgKGFwcGx5X3JlbG9jYXRpb25zKTogQ2F0Y2ggcG90ZW50aWFsIGludGVnZXIgb3ZlcmZsb3cKLQl3aGlsc3QgY2hlY2tpbmcgcmVsb2MgbG9jYXRpb24gYWdhaW5zdCBzZWN0aW9uIHNpemUuCi0KLUNWRTogQ1ZFLTIwMTktMTQ0NDQKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0L2dpdHdlYi5jZ2k/cD1iaW51dGlscy1nZGIuZ2l0O2g9ZTE3ODY5ZGI5OTE5NTg0OTgyNmVhYWY1ZDJkMGViMmNmZGQ3YTJhN10KLVtSZW1vdmVkIENoYW5nZWxvZyBlbnRyeV0KLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0tLS0KLWRpZmYgLS1naXQgYS9iaW51dGlscy9yZWFkZWxmLmMgYi9iaW51dGlscy9yZWFkZWxmLmMKLWluZGV4IGI4OTZhZDlmNDA2Li5lNzg1ZmRlNDNlNyAxMDA2NDQKLS0tLSBhL2JpbnV0aWxzL3JlYWRlbGYuYwotKysrIGIvYmludXRpbHMvcmVhZGVsZi5jCi1AQCAtMTMzNjYsNyArMTMzNjYsNyBAQCBhcHBseV9yZWxvY2F0aW9ucyAoRmlsZWRhdGEgKiAgICAgICAgICAgICAgICAgZmlsZWRhdGEsCi0gCSAgICB9Ci0gCi0gCSAgcmxvYyA9IHN0YXJ0ICsgcnAtPnJfb2Zmc2V0OwotLQkgIGlmICgocmxvYyArIHJlbG9jX3NpemUpID4gZW5kIHx8IChybG9jIDwgc3RhcnQpKQotKwkgIGlmIChybG9jID49IGVuZCB8fCAocmxvYyArIHJlbG9jX3NpemUpID4gZW5kIHx8IChybG9jIDwgc3RhcnQpKQotIAkgICAgewotIAkgICAgICB3YXJuIChfKCJza2lwcGluZyBpbnZhbGlkIHJlbG9jYXRpb24gb2Zmc2V0IDB4JWx4IGluIHNlY3Rpb24gJXNcbiIpLAotIAkJICAgICh1bnNpZ25lZCBsb25nKSBycC0+cl9vZmZzZXQsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xNzQ1MC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTE3NDUwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNmNlMGI5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTE3NDUwLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTkgKzAsMCBAQAotRnJvbSAwOWRkMTM1ZGY5ZWJjN2E0YjY0MDUzN2UyM2UyNmEwM2EyODhhNzg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgOSBPY3QgMjAxOSAwMDowNzoyOSArMTAzMAotU3ViamVjdDogW1BBVENIXSBQUjI1MDc4LCBzdGFjayBvdmVyZmxvdyBpbiBmdW5jdGlvbiBmaW5kX2Fic3RyYWN0X2luc3RhbmNlCi0KLVNlbGVjdGl2ZWx5IGJhY2twb3J0aW5nIGZpeCBmb3IgYmZkL2R3YXJmMi5jLCBidXQgbm90IHRoZSBDaGFuZ2VMb2cKLWZpbGUuIFRoZXJlIGFyZSBuZXdlciB2ZXJzaW9ucyBvZiBiaW51dGlscywgYnV0IG5vbmUgb2YgdGhlbSBjb250YWluIHRoZQotY29tbWl0IGZpeGluZyBDVkUtMjAxOS0xNzQ1MCwgc28gYmFja3BvcnQgaXQgdG8gbWFzdGVyIGFuZCB6ZXVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC9naXR3ZWIuY2dpP3A9YmludXRpbHMtZ2RiLmdpdDtoPTA2M2M1MTFiZDc5XQotQ1ZFOiBDVkUtMjAxOS0xNzQ1MAotU2lnbmVkLW9mZi1ieTogVHJldm9yIEdhbWJsaW4gPHRyZXZvci5nYW1ibGluQHdpbmRyaXZlci5jb20+Ci0KLQlQUiAyNTA3OAotCSogZHdhcmYyLmMgKGZpbmRfYWJzdHJhY3RfaW5zdGFuY2UpOiBEZWxldGUgb3JpZ19pbmZvX3B0ciwgYWRkCi0JcmVjdXJfY291bnQuICBFcnJvciBvbiByZWN1cl9jb3VudCByZWFjaGluZyAxMDAgcmF0aGVyIHRoYW4KLQlpbmZvX3B0ciBtYXRjaGluZyBvcmlnX2luZm9fcHRyLiAgQWRqdXN0IGNhbGxzLgotCi0tLS0KLSBiZmQvZHdhcmYyLmMgfCAzNSArKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JmZC9kd2FyZjIuYyBiL2JmZC9kd2FyZjIuYwotaW5kZXggMGI0ZTQ4NTU4Mi4uMjBlYzllMmU1NiAxMDA2NDQKLS0tLSBhL2JmZC9kd2FyZjIuYwotKysrIGIvYmZkL2R3YXJmMi5jCi1AQCAtMjgwMywxMyArMjgwMywxMyBAQCBsb29rdXBfc3ltYm9sX2luX3ZhcmlhYmxlX3RhYmxlIChzdHJ1Y3QgY29tcF91bml0ICp1bml0LAotIH0KLSAKLSBzdGF0aWMgYmZkX2Jvb2xlYW4KLS1maW5kX2Fic3RyYWN0X2luc3RhbmNlIChzdHJ1Y3QgY29tcF91bml0ICogICB1bml0LAotLQkJCWJmZF9ieXRlICogICAgICAgICAgIG9yaWdfaW5mb19wdHIsCi0tCQkJc3RydWN0IGF0dHJpYnV0ZSAqICAgYXR0cl9wdHIsCi0tCQkJY29uc3QgY2hhciAqKiAgICAgICAgcG5hbWUsCi0tCQkJYmZkX2Jvb2xlYW4gKiAgICAgICAgaXNfbGlua2FnZSwKLS0JCQljaGFyICoqICAgICAgICAgICAgICBmaWxlbmFtZV9wdHIsCi0tCQkJaW50ICogICAgICAgICAgICAgICAgbGluZW51bWJlcl9wdHIpCi0rZmluZF9hYnN0cmFjdF9pbnN0YW5jZSAoc3RydWN0IGNvbXBfdW5pdCAqdW5pdCwKLSsJCQlzdHJ1Y3QgYXR0cmlidXRlICphdHRyX3B0ciwKLSsJCQl1bnNpZ25lZCBpbnQgcmVjdXJfY291bnQsCi0rCQkJY29uc3QgY2hhciAqKnBuYW1lLAotKwkJCWJmZF9ib29sZWFuICppc19saW5rYWdlLAotKwkJCWNoYXIgKipmaWxlbmFtZV9wdHIsCi0rCQkJaW50ICpsaW5lbnVtYmVyX3B0cikKLSB7Ci0gICBiZmQgKmFiZmQgPSB1bml0LT5hYmZkOwotICAgYmZkX2J5dGUgKmluZm9fcHRyOwotQEAgLTI4MjAsNiArMjgyMCwxNCBAQCBmaW5kX2Fic3RyYWN0X2luc3RhbmNlIChzdHJ1Y3QgY29tcF91bml0ICogICB1bml0LAotICAgc3RydWN0IGF0dHJpYnV0ZSBhdHRyOwotICAgY29uc3QgY2hhciAqbmFtZSA9IE5VTEw7Ci0gCi0rICBpZiAocmVjdXJfY291bnQgPT0gMTAwKQotKyAgICB7Ci0rICAgICAgX2JmZF9lcnJvcl9oYW5kbGVyCi0rCShfKCJEV0FSRiBlcnJvcjogYWJzdHJhY3QgaW5zdGFuY2UgcmVjdXJzaW9uIGRldGVjdGVkIikpOwotKyAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9iYWRfdmFsdWUpOwotKyAgICAgIHJldHVybiBGQUxTRTsKLSsgICAgfQotKwotICAgLyogRFdfRk9STV9yZWZfYWRkciBjYW4gcmVmZXJlbmNlIGFuIGVudHJ5IGluIGEgZGlmZmVyZW50IENVLiBJdAotICAgICAgaXMgYW4gb2Zmc2V0IGZyb20gdGhlIC5kZWJ1Z19pbmZvIHNlY3Rpb24sIG5vdCB0aGUgY3VycmVudCBDVS4gICovCi0gICBpZiAoYXR0cl9wdHItPmZvcm0gPT0gRFdfRk9STV9yZWZfYWRkcikKLUBAIC0yOTM5LDE1ICsyOTQ3LDYgQEAgZmluZF9hYnN0cmFjdF9pbnN0YW5jZSAoc3RydWN0IGNvbXBfdW5pdCAqICAgdW5pdCwKLSAJCQkJCSBpbmZvX3B0ciwgaW5mb19wdHJfZW5kKTsKLSAJICAgICAgaWYgKGluZm9fcHRyID09IE5VTEwpCi0gCQlicmVhazsKLS0JICAgICAgLyogSXQgZG9lc24ndCBldmVyIG1ha2Ugc2Vuc2UgZm9yIERXX0FUX3NwZWNpZmljYXRpb24gdG8KLS0JCSByZWZlciB0byB0aGUgc2FtZSBESUUuICBTdG9wIHNpbXBsZSByZWN1cnNpb24uICAqLwotLQkgICAgICBpZiAoaW5mb19wdHIgPT0gb3JpZ19pbmZvX3B0cikKLS0JCXsKLS0JCSAgX2JmZF9lcnJvcl9oYW5kbGVyCi0tCQkgICAgKF8oIkRXQVJGIGVycm9yOiBhYnN0cmFjdCBpbnN0YW5jZSByZWN1cnNpb24gZGV0ZWN0ZWQiKSk7Ci0tCQkgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9iYWRfdmFsdWUpOwotLQkJICByZXR1cm4gRkFMU0U7Ci0tCQl9Ci0gCSAgICAgIHN3aXRjaCAoYXR0ci5uYW1lKQotIAkJewotIAkJY2FzZSBEV19BVF9uYW1lOgotQEAgLTI5NjEsNyArMjk2MCw3IEBAIGZpbmRfYWJzdHJhY3RfaW5zdGFuY2UgKHN0cnVjdCBjb21wX3VuaXQgKiAgIHVuaXQsCi0gCQkgICAgfQotIAkJICBicmVhazsKLSAJCWNhc2UgRFdfQVRfc3BlY2lmaWNhdGlvbjoKLS0JCSAgaWYgKCFmaW5kX2Fic3RyYWN0X2luc3RhbmNlICh1bml0LCBpbmZvX3B0ciwgJmF0dHIsCi0rCQkgIGlmICghZmluZF9hYnN0cmFjdF9pbnN0YW5jZSAodW5pdCwgJmF0dHIsIHJlY3VyX2NvdW50ICsgMSwKLSAJCQkJCSAgICAgICAmbmFtZSwgaXNfbGlua2FnZSwKLSAJCQkJCSAgICAgICBmaWxlbmFtZV9wdHIsIGxpbmVudW1iZXJfcHRyKSkKLSAJCSAgICByZXR1cm4gRkFMU0U7Ci1AQCAtMzE3NSw3ICszMTc0LDcgQEAgc2Nhbl91bml0X2Zvcl9zeW1ib2xzIChzdHJ1Y3QgY29tcF91bml0ICp1bml0KQotIAotIAkJY2FzZSBEV19BVF9hYnN0cmFjdF9vcmlnaW46Ci0gCQljYXNlIERXX0FUX3NwZWNpZmljYXRpb246Ci0tCQkgIGlmICghZmluZF9hYnN0cmFjdF9pbnN0YW5jZSAodW5pdCwgaW5mb19wdHIsICZhdHRyLAotKwkJICBpZiAoIWZpbmRfYWJzdHJhY3RfaW5zdGFuY2UgKHVuaXQsICZhdHRyLCAwLAotIAkJCQkJICAgICAgICZmdW5jLT5uYW1lLAotIAkJCQkJICAgICAgICZmdW5jLT5pc19saW5rYWdlLAotIAkJCQkJICAgICAgICZmdW5jLT5maWxlLAotLS0gCi0yLjIzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktMTc0NTEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xNzQ1MS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjM2YTUzMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS0xNzQ1MS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gMDE5MjQzODA1MWE3ZTc4MTU4NTY0N2Q1NTgxYTJhNmY2MmZkYTM2MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsYW4gTW9kcmEgPGFtb2RyYUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDkgT2N0IDIwMTkgMTA6NDc6MTMgKzEwMzAKLVN1YmplY3Q6IFtQQVRDSF0gUFIyNTA3MCwgU0VHViBpbiBmdW5jdGlvbiBfYmZkX2R3YXJmMl9maW5kX25lYXJlc3RfbGluZQotCi1TZWxlY3RpdmVseSBiYWNrcG9ydGluZyBmaXggZm9yIGJmZC9kd2FyZjIuYywgYnV0IG5vdCB0aGUgQ2hhbmdlTG9nCi1maWxlLiBUaGVyZSBhcmUgbmV3ZXIgdmVyc2lvbnMgb2YgYmludXRpbHMsIGJ1dCBub25lIG9mIHRoZW0gY29udGFpbiB0aGUKLWNvbW1pdCBmaXhpbmcgQ1ZFLTIwMTktMTc0NTEsIHNvIGJhY2twb3J0IGl0IHRvIG1hc3RlciBhbmQgemV1cy4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0L2dpdHdlYi5jZ2k/cD1iaW51dGlscy1nZGIuZ2l0O2g9MzM2YmZiZWIxODQ4XQotQ1ZFOiBDVkUtMjAxOS0xNzQ1MQotU2lnbmVkLW9mZi1ieTogVHJldm9yIEdhbWJsaW4gPHRyZXZvci5nYW1ibGluQHdpbmRyaXZlci5jb20+Ci0KLQotRXZpbCB0ZXN0Y2FzZSB3aXRoIHR3byBkZWJ1ZyBpbmZvIHNlY3Rpb25zLCB3aXRoIHNpemVzIG9mIDJhYWFhYmFjNGVjMQotYW5kIGZmZmZkNTU1NTQ1M2IxNDAgcmVzdWx0IGluIGEgdG90YWwgc2l6ZSBvZiAxLiAgUmVhZGluZyB0aGUgZmlyc3QKLXNlY3Rpb24gb2YgY291cnNlIG92ZXJmbG93cyB0aGUgYnVmZmVyIGFuZCB0cmFtcGxlcyBvbiBvdGhlciBtZW1vcnkuCi0KLQlQUiAyNTA3MAotCSogZHdhcmYyLmMgKF9iZmRfZHdhcmYyX3NsdXJwX2RlYnVnX2luZm8pOiBDYXRjaCBvdmVyZmxvdyBvZgotCXRvdGFsX3NpemUgY2FsY3VsYXRpb24uCi0tLS0KLSBiZmQvZHdhcmYyLmMgfCAxMSArKysrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9iZmQvZHdhcmYyLmMgYi9iZmQvZHdhcmYyLmMKLWluZGV4IDBiNGU0ODU1ODIuLmE5MTU5N2IxZDAgMTAwNjQ0Ci0tLS0gYS9iZmQvZHdhcmYyLmMKLSsrKyBiL2JmZC9kd2FyZjIuYwotQEAgLTQ0MjYsNyArNDQyNiwxNiBAQCBfYmZkX2R3YXJmMl9zbHVycF9kZWJ1Z19pbmZvIChiZmQgKmFiZmQsIGJmZCAqZGVidWdfYmZkLAotICAgICAgIGZvciAodG90YWxfc2l6ZSA9IDA7Ci0gCSAgIG1zZWM7Ci0gCSAgIG1zZWMgPSBmaW5kX2RlYnVnX2luZm8gKGRlYnVnX2JmZCwgZGVidWdfc2VjdGlvbnMsIG1zZWMpKQotLQl0b3RhbF9zaXplICs9IG1zZWMtPnNpemU7Ci0rCXsKLSsJICAvKiBDYXRjaCBQUjI1MDcwIHRlc3RjYXNlIG92ZXJmbG93aW5nIHNpemUgY2FsY3VsYXRpb24gaGVyZS4gICovCi0rCSAgaWYgKHRvdGFsX3NpemUgKyBtc2VjLT5zaXplIDwgdG90YWxfc2l6ZQotKwkgICAgICB8fCB0b3RhbF9zaXplICsgbXNlYy0+c2l6ZSA8IG1zZWMtPnNpemUpCi0rCSAgICB7Ci0rCSAgICAgIGJmZF9zZXRfZXJyb3IgKGJmZF9lcnJvcl9ub19tZW1vcnkpOwotKwkgICAgICByZXR1cm4gRkFMU0U7Ci0rCSAgICB9Ci0rCSAgdG90YWxfc2l6ZSArPSBtc2VjLT5zaXplOwotKwl9Ci0gCi0gICAgICAgc3Rhc2gtPmluZm9fcHRyX21lbW9yeSA9IChiZmRfYnl0ZSAqKSBiZmRfbWFsbG9jICh0b3RhbF9zaXplKTsKLSAgICAgICBpZiAoc3Rhc2gtPmluZm9fcHRyX21lbW9yeSA9PSBOVUxMKQotLS0gCi0yLjIzLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktOTA3MS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwMjUzOTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktOTA3MS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2NSArMCwwIEBACi1Gcm9tIGMxMjAyMDU3ZWI5MTYxYTg2YWYyN2Q4Njc3MDMyMzVmZWU3Yjc1NTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDEwIEFwciAyMDE5IDE1OjQ5OjM2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFB1bGwgaW4gcGF0Y2ggZm9yIGxpYmliZXJ0eSB0aGF0IGZpeGVzIGEgc3RhY2sgZXhoYXVzdGlvbiBidWcKLSB3aGVuIGRlbWFuZ2xpbmcgYSBwYXRoYWxvZ2ljYWxseSBjb25zdHJ1Y3RlZCBtYW5nbGVkIG5hbWUuCi0KLQlQUiA4OTM5NAotCSogY3AtZGVtYW5nbGUuYyAoY3BsdXNfZGVtYW5nbGVfZmlsbF9uYW1lKTogUmVqZWN0IG5lZ2F0aXZlCi0JbGVuZ3Rocy4KLQkoZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzKTogUmVwbGFjZSBudW1fdGVtcGxhdGVzIGFuZCBudW1fc2NvcGVzCi0JcGFyYW1ldGVycyB3aXRoIGEgc3RydWN0IGRfcHJpbnRfaW5mbyBwb2ludGVyIHBhcmFtZXRlci4gIEFkanVzdAotCWJvZHkgb2YgdGhlIGZ1bmN0aW9uIGFjY29yZGluZ2x5LiAgQWRkIHJlY3Vyc2lvbiBjb3VudGVyIGFuZCBjaGVjawotCXRoYXQgdGhlIHJlY3Vyc2lvbiBsaW1pdCBpcyBub3QgcmVhY2hlZC4KLQkoZF9wcmludF9pbml0KTogUGFzcyBkcGkgcGFyYW1ldGVyIHRvIGRfY291bnRfdGVtcGxhdGVzX3Njb3Blcy4KLQlSZXNldCByZWN1cnNpb24gY291bnRlciBhZnRlcndhcmRzLCB1bmxlc3MgdGhlIHJlY3Vyc2lvbiBsaW1pdCB3YXMKLQlyZWFjaGVkLgotCi1DVkU6IENWRS0yMDE5LTkwNzEKLUNWRTogQ1ZFLTIwMTktOTA3MAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLS0tLQotIENoYW5nZUxvZyAgICAgICAgICAgICAgIHwgMTYgKysrKysrKysrKysrKysKLSBsaWJpYmVydHkvY3AtZGVtYW5nbGUuYyB8IDQ4ICsrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA0MiBpbnNlcnRpb25zKCspLCAyMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL0NoYW5nZUxvZyBiL0NoYW5nZUxvZwotaW5kZXggY2Q2MzFhMTViNi4uNGRmM2FhYTYyYyAxMDA2NDQKLS0tLSBhL0NoYW5nZUxvZwotKysrIGIvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDE5IEBACi0rMjAxOS0wNC0xMCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSsJKiBsaWJpYmVydHk6IFN5bmMgd2l0aCBnY2MuICBCcmluZyBpbjoKLSsJMjAxOS0wNC0xMCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSsKLSsJUFIgODkzOTQKLSsJKiBjcC1kZW1hbmdsZS5jIChjcGx1c19kZW1hbmdsZV9maWxsX25hbWUpOiBSZWplY3QgbmVnYXRpdmUKLSsJbGVuZ3Rocy4KLSsJKGRfY291bnRfdGVtcGxhdGVzX3Njb3Blcyk6IFJlcGxhY2UgbnVtX3RlbXBsYXRlcyBhbmQgbnVtX3Njb3BlcwotKwlwYXJhbWV0ZXJzIHdpdGggYSBzdHJ1Y3QgZF9wcmludF9pbmZvIHBvaW50ZXIgcGFyYW1ldGVyLiAgQWRqdXN0Ci0rCWJvZHkgb2YgdGhlIGZ1bmN0aW9uIGFjY29yZGluZ2x5LiAgQWRkIHJlY3Vyc2lvbiBjb3VudGVyIGFuZCBjaGVjawotKwl0aGF0IHRoZSByZWN1cnNpb24gbGltaXQgaXMgbm90IHJlYWNoZWQuCi0rCShkX3ByaW50X2luaXQpOiBQYXNzIGRwaSBwYXJhbWV0ZXIgdG8gZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzLgotKwlSZXNldCByZWN1cnNpb24gY291bnRlciBhZnRlcndhcmRzLCB1bmxlc3MgdGhlIHJlY3Vyc2lvbiBsaW1pdCB3YXMKLSsJcmVhY2hlZC4KLSsKLSAyMDE4LTA2LTI0ICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotIAkyLjMyIGJyYW5jaCBjcmVhdGVkLgotZGlmZiAtLWdpdCBhL2xpYmliZXJ0eS9jcC1kZW1hbmdsZS5jIGIvbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmMKLWluZGV4IGIzNGI0ODU2OTIuLjc3OWI0ZTc2M2EgMTAwNjQ0Ci0tLS0gYS9saWJpYmVydHkvY3AtZGVtYW5nbGUuYwotKysrIGIvbGliaWJlcnR5L2NwLWRlbWFuZ2xlLmMKLUBAIC04NjEsNyArODYxLDcgQEAgQ1BfU1RBVElDX0lGX0dMSUJDUFBfVjMKLSBpbnQKLSBjcGx1c19kZW1hbmdsZV9maWxsX25hbWUgKHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKnAsIGNvbnN0IGNoYXIgKnMsIGludCBsZW4pCi0gewotLSAgaWYgKHAgPT0gTlVMTCB8fCBzID09IE5VTEwgfHwgbGVuID09IDApCi0rICBpZiAocCA9PSBOVUxMIHx8IHMgPT0gTlVMTCB8fCBsZW4gPD0gMCkKLSAgICAgcmV0dXJuIDA7Ci0gICBwLT5kX3ByaW50aW5nID0gMDsKLSAgIHAtPnR5cGUgPSBERU1BTkdMRV9DT01QT05FTlRfTkFNRTsKLUBAIC00MDYxLDcgKzQwNjEsNyBAQCBkX2dyb3dhYmxlX3N0cmluZ19jYWxsYmFja19hZGFwdGVyIChjb25zdCBjaGFyICpzLCBzaXplX3QgbCwgdm9pZCAqb3BhcXVlKQotICAgIGFyZSBsYXJnZXIgdGhhbiB0aGUgYWN0dWFsIG51bWJlcnMgZW5jb3VudGVyZWQuICAqLwotIAotIHN0YXRpYyB2b2lkCi0tZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChpbnQgKm51bV90ZW1wbGF0ZXMsIGludCAqbnVtX3Njb3BlcywKLStkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKHN0cnVjdCBkX3ByaW50X2luZm8gKmRwaSwKLSAJCQkgIGNvbnN0IHN0cnVjdCBkZW1hbmdsZV9jb21wb25lbnQgKmRjKQotIHsKLSAgIGlmIChkYyA9PSBOVUxMKQotQEAgLTQwODEsMTMgKzQwODEsMTMgQEAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChpbnQgKm51bV90ZW1wbGF0ZXMsIGludCAqbnVtX3Njb3BlcywKLSAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfVEVNUExBVEU6Ci0tICAgICAgKCpudW1fdGVtcGxhdGVzKSsrOwotKyAgICAgIGRwaS0+bnVtX2NvcHlfdGVtcGxhdGVzKys7Ci0gICAgICAgZ290byByZWN1cnNlX2xlZnRfcmlnaHQ7Ci0gCi0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX1JFRkVSRU5DRToKLSAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfUlZBTFVFX1JFRkVSRU5DRToKLSAgICAgICBpZiAoZF9sZWZ0IChkYyktPnR5cGUgPT0gREVNQU5HTEVfQ09NUE9ORU5UX1RFTVBMQVRFX1BBUkFNKQotLQkoKm51bV9zY29wZXMpKys7Ci0rCWRwaS0+bnVtX3NhdmVkX3Njb3BlcysrOwotICAgICAgIGdvdG8gcmVjdXJzZV9sZWZ0X3JpZ2h0OwotIAotICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9RVUFMX05BTUU6Ci1AQCAtNDE1Miw0MiArNDE1Miw0MiBAQCBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKGludCAqbnVtX3RlbXBsYXRlcywgaW50ICpudW1fc2NvcGVzLAotICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9UQUdHRURfTkFNRToKLSAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfQ0xPTkU6Ci0gICAgIHJlY3Vyc2VfbGVmdF9yaWdodDoKLS0gICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKG51bV90ZW1wbGF0ZXMsIG51bV9zY29wZXMsCi0tCQkJCWRfbGVmdCAoZGMpKTsKLS0gICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKG51bV90ZW1wbGF0ZXMsIG51bV9zY29wZXMsCi0tCQkJCWRfcmlnaHQgKGRjKSk7Ci0rICAgICAgLyogUFIgODkzOTQgLSBDaGVjayBmb3IgdG9vIG11Y2ggcmVjdXJzaW9uLiAgKi8KLSsgICAgICBpZiAoZHBpLT5yZWN1cnNpb24gPiBERU1BTkdMRV9SRUNVUlNJT05fTElNSVQpCi0rCS8qIEZJWE1FOiBUaGVyZSBvdWdodCB0byBiZSBhIHdheSB0byByZXBvcnQgdG8gdGhlCi0rCSAgIHVzZXIgdGhhdCB0aGUgcmVjdXJzaW9uIGxpbWl0IGhhcyBiZWVuIHJlYWNoZWQuICAqLwotKwlyZXR1cm47Ci0rCi0rICAgICAgKysgZHBpLT5yZWN1cnNpb247Ci0rICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChkcGksIGRfbGVmdCAoZGMpKTsKLSsgICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKGRwaSwgZF9yaWdodCAoZGMpKTsKLSsgICAgICAtLSBkcGktPnJlY3Vyc2lvbjsKLSAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfQ1RPUjoKLS0gICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKG51bV90ZW1wbGF0ZXMsIG51bV9zY29wZXMsCi0tCQkJCWRjLT51LnNfY3Rvci5uYW1lKTsKLSsgICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKGRwaSwgZGMtPnUuc19jdG9yLm5hbWUpOwotICAgICAgIGJyZWFrOwotIAotICAgICBjYXNlIERFTUFOR0xFX0NPTVBPTkVOVF9EVE9SOgotLSAgICAgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAobnVtX3RlbXBsYXRlcywgbnVtX3Njb3BlcywKLS0JCQkJZGMtPnUuc19kdG9yLm5hbWUpOwotKyAgICAgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAoZHBpLCBkYy0+dS5zX2R0b3IubmFtZSk7Ci0gICAgICAgYnJlYWs7Ci0gCi0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0VYVEVOREVEX09QRVJBVE9SOgotLSAgICAgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAobnVtX3RlbXBsYXRlcywgbnVtX3Njb3BlcywKLS0JCQkJZGMtPnUuc19leHRlbmRlZF9vcGVyYXRvci5uYW1lKTsKLSsgICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKGRwaSwgZGMtPnUuc19leHRlbmRlZF9vcGVyYXRvci5uYW1lKTsKLSAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfRklYRURfVFlQRToKLS0gICAgICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKG51bV90ZW1wbGF0ZXMsIG51bV9zY29wZXMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkYy0+dS5zX2ZpeGVkLmxlbmd0aCk7Ci0rICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChkcGksIGRjLT51LnNfZml4ZWQubGVuZ3RoKTsKLSAgICAgICBicmVhazsKLSAKLSAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfR0xPQkFMX0NPTlNUUlVDVE9SUzoKLSAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfR0xPQkFMX0RFU1RSVUNUT1JTOgotLSAgICAgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAobnVtX3RlbXBsYXRlcywgbnVtX3Njb3BlcywKLS0JCQkJZF9sZWZ0IChkYykpOwotKyAgICAgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAoZHBpLCBkX2xlZnQgKGRjKSk7Ci0gICAgICAgYnJlYWs7Ci0gCi0gICAgIGNhc2UgREVNQU5HTEVfQ09NUE9ORU5UX0xBTUJEQToKLSAgICAgY2FzZSBERU1BTkdMRV9DT01QT05FTlRfREVGQVVMVF9BUkc6Ci0tICAgICAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChudW1fdGVtcGxhdGVzLCBudW1fc2NvcGVzLAotLQkJCQlkYy0+dS5zX3VuYXJ5X251bS5zdWIpOwotKyAgICAgIGRfY291bnRfdGVtcGxhdGVzX3Njb3BlcyAoZHBpLCBkYy0+dS5zX3VuYXJ5X251bS5zdWIpOwotICAgICAgIGJyZWFrOwotICAgICB9Ci0gfQotQEAgLTQyMjIsOCArNDIyMiwxMiBAQCBkX3ByaW50X2luaXQgKHN0cnVjdCBkX3ByaW50X2luZm8gKmRwaSwgZGVtYW5nbGVfY2FsbGJhY2tyZWYgY2FsbGJhY2ssCi0gICBkcGktPm5leHRfY29weV90ZW1wbGF0ZSA9IDA7Ci0gICBkcGktPm51bV9jb3B5X3RlbXBsYXRlcyA9IDA7Ci0gCi0tICBkX2NvdW50X3RlbXBsYXRlc19zY29wZXMgKCZkcGktPm51bV9jb3B5X3RlbXBsYXRlcywKLS0JCQkgICAgJmRwaS0+bnVtX3NhdmVkX3Njb3BlcywgZGMpOwotKyAgZF9jb3VudF90ZW1wbGF0ZXNfc2NvcGVzIChkcGksIGRjKTsKLSsgIC8qIElmIHdlIGRpZCBub3QgcmVhY2ggdGhlIHJlY3Vyc2lvbiBsaW1pdCwgdGhlbiByZXNldCB0aGUKLSsgICAgIGN1cnJlbnQgcmVjdXJzaW9uIHZhbHVlIGJhY2sgdG8gMCwgc28gdGhhdCB3ZSBjYW4gcHJpbnQKLSsgICAgIHRoZSB0ZW1wbGF0ZXMuICAqLwotKyAgaWYgKGRwaS0+cmVjdXJzaW9uIDwgREVNQU5HTEVfUkVDVVJTSU9OX0xJTUlUKQotKyAgICBkcGktPnJlY3Vyc2lvbiA9IDA7Ci0gICBkcGktPm51bV9jb3B5X3RlbXBsYXRlcyAqPSBkcGktPm51bV9zYXZlZF9zY29wZXM7Ci0gCi0gICBkcGktPmN1cnJlbnRfdGVtcGxhdGUgPSBOVUxMOwotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktOTA3NC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExMWE1MTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktOTA3NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gZTJlYmIzOTA2NDMyZGNjYTI3MjcxODZhZDc5NDE1ZjkyMDczMGZiMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsYW4gTW9kcmEgPGFtb2RyYUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDE5IEZlYiAyMDE5IDIyOjQ4OjQ0ICsxMDMwCi1TdWJqZWN0OiBbUEFUQ0hdIFBSMjQyMzUsIFJlYWQgbWVtb3J5IHZpb2xhdGlvbiBpbiBwZWkteDg2XzY0LmMKLQotCVBSIDI0MjM1Ci0JKiBwZWkteDg2XzY0LmMgKHBleDY0X2JmZF9wcmludF9wZGF0YV9zZWN0aW9uKTogQ29ycmVjdCBjaGVja3MKLQlhdHRlbXB0aW5nIHRvIHByZXZlbnQgcmVhZCBwYXN0IGVuZCBvZiBzZWN0aW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vYm1pbm9yL2JpbnV0aWxzLWdkYi9jb21taXQvMTc5ZjJkYjBkOWMzOTdkN2RkOGE1OTkwN2I4NDIwOGI3OWY3ZjQ4Y10KLUNWRTogQ1ZFLTIwMTktOTA3NAotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLS0tLQotIGJmZC9DaGFuZ2VMb2cgICAgfCA2ICsrKysrKwotIGJmZC9wZWkteDg2XzY0LmMgfCA5ICsrKystLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2JmZC9DaGFuZ2VMb2cgYi9iZmQvQ2hhbmdlTG9nCi1pbmRleCBkZDJjNzQxLi5jYmYzMGRlIDEwMDY0NAotLS0tIGEvYmZkL0NoYW5nZUxvZwotKysrIGIvYmZkL0NoYW5nZUxvZwotQEAgLTEsMyArMSw5IEBACi0rMjAxOS0wMi0xOSAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0rCi0rCVBSIDI0MjM1Ci0rCSogcGVpLXg4Nl82NC5jIChwZXg2NF9iZmRfcHJpbnRfcGRhdGFfc2VjdGlvbik6IENvcnJlY3QgY2hlY2tzCi0rCWF0dGVtcHRpbmcgdG8gcHJldmVudCByZWFkIHBhc3QgZW5kIG9mIHNlY3Rpb24uCi0rCi0gMjAxOS0wMi0wNCAgTmljayBDbGlmdG9uICA8bmlja2NAcmVkaGF0LmNvbT4KLSAKLSAJKiBkZXZlbG9wbWVudC5zaCAoZXhwZXJpbWVudGFsKSBTZXQgdG8gZmFsc2UuCi1kaWZmIC0tZ2l0IGEvYmZkL3BlaS14ODZfNjQuYyBiL2JmZC9wZWkteDg2XzY0LmMKLWluZGV4IGZmMTA5M2MuLjdlNzUxMDQgMTAwNjQ0Ci0tLS0gYS9iZmQvcGVpLXg4Nl82NC5jCi0rKysgYi9iZmQvcGVpLXg4Nl82NC5jCi1AQCAtNTQxLDcgKzU0MSw3IEBAIHBleDY0X2JmZF9wcmludF9wZGF0YV9zZWN0aW9uIChiZmQgKmFiZmQsIHZvaWQgKnZmaWxlLCBhc2VjdGlvbiAqcGRhdGFfc2VjdGlvbikKLSAgIC8qIHZpcnRfc2l6ZSBtaWdodCBiZSB6ZXJvIGZvciBvYmplY3RzLiAgKi8KLSAgIGlmIChzdG9wID09IDAgJiYgc3RyY21wIChhYmZkLT54dmVjLT5uYW1lLCAicGUteDg2LTY0IikgPT0gMCkKLSAgICAgewotLSAgICAgIHN0b3AgPSAoZGF0YXNpemUgLyBvbmFsaW5lKSAqIG9uYWxpbmU7Ci0rICAgICAgc3RvcCA9IGRhdGFzaXplOwotICAgICAgIHZpcnRfc2l6ZV9pc196ZXJvID0gVFJVRTsKLSAgICAgfQotICAgZWxzZSBpZiAoZGF0YXNpemUgPCBzdG9wKQotQEAgLTU1MSw4ICs1NTEsOCBAQCBwZXg2NF9iZmRfcHJpbnRfcGRhdGFfc2VjdGlvbiAoYmZkICphYmZkLCB2b2lkICp2ZmlsZSwgYXNlY3Rpb24gKnBkYXRhX3NlY3Rpb24pCi0gCQkgXygiV2FybmluZzogJXMgc2VjdGlvbiBzaXplICglbGQpIGlzIHNtYWxsZXIgdGhhbiB2aXJ0dWFsIHNpemUgKCVsZClcbiIpLAotIAkJIHBkYXRhX3NlY3Rpb24tPm5hbWUsICh1bnNpZ25lZCBsb25nKSBkYXRhc2l6ZSwKLSAJCSAodW5zaWduZWQgbG9uZykgc3RvcCk7Ci0tCS8qIEJlIHN1cmUgbm90IHRvIHJlYWQgcGFzc2VkIGRhdGFzaXplLiAgKi8KLS0Jc3RvcCA9IGRhdGFzaXplIC8gb25hbGluZTsKLSsJLyogQmUgc3VyZSBub3QgdG8gcmVhZCBwYXN0IGRhdGFzaXplLiAgKi8KLSsJc3RvcCA9IGRhdGFzaXplOwotICAgICAgIH0KLSAKLSAgIC8qIERpc3BsYXkgZnVuY3Rpb25zIHRhYmxlLiAgKi8KLUBAIC03MjQsOCArNzI0LDcgQEAgcGV4NjRfYmZkX3ByaW50X3BkYXRhX3NlY3Rpb24gKGJmZCAqYWJmZCwgdm9pZCAqdmZpbGUsIGFzZWN0aW9uICpwZGF0YV9zZWN0aW9uKQotIAkgICAgICBhbHRlbnQgKz0gaW1hZ2ViYXNlOwotIAotIAkgICAgICBpZiAoYWx0ZW50ID49IHBkYXRhX3ZtYQotLQkJICAmJiAoYWx0ZW50ICsgUERBVEFfUk9XX1NJWkUgPD0gcGRhdGFfdm1hCi0tCQkgICAgICArIHBlaV9zZWN0aW9uX2RhdGEgKGFiZmQsIHBkYXRhX3NlY3Rpb24pLT52aXJ0X3NpemUpKQotKwkJICAmJiBhbHRlbnQgLSBwZGF0YV92bWEgKyBQREFUQV9ST1dfU0laRSA8PSBzdG9wKQotIAkJewotIAkJICBwZXg2NF9nZXRfcnVudGltZV9mdW5jdGlvbgotIAkJICAgIChhYmZkLCAmYXJmLCAmcGRhdGFbYWx0ZW50IC0gcGRhdGFfdm1hXSk7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDc1LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2IxMzEwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotRnJvbSA4YWJhYzgwMzFlZDM2OWEyNzM0YjFjZGI3ZGYyOGEzOWE1NGI0YjQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjAgRmViIDIwMTkgMDg6MjE6MjQgKzEwMzAKLVN1YmplY3Q6IFtQQVRDSF0gUFIyNDIzNiwgSGVhcCBidWZmZXIgb3ZlcmZsb3cgaW4KLSBfYmZkX2FyY2hpdmVfNjRfYml0X3NsdXJwX2FybWFwCi0KLQlQUiAyNDIzNgotCSogYXJjaGl2ZTY0LmMgKF9iZmRfYXJjaGl2ZV82NF9iaXRfc2x1cnBfYXJtYXApOiBNb3ZlIGNvZGUgYWRkaW5nCi0Jc2VudGluZWwgTlVMIHRvIHN0cmluZyBidWZmZXIgbmVhcmVyIHRvIGxvb3Agd2hlcmUgaXQgaXMgdXNlZC4KLQlEb24ndCBnbyBwYXN0IHNlbnRpbmVsIHdoZW4gc2Nhbm5pbmcgc3RyaW5ncywgYW5kIGRvbid0IHdyaXRlCi0JTlVMIGFnYWluLgotCSogYXJjaGl2ZS5jIChkb19zbHVycF9jb2ZmX2FybWFwKTogU2ltcGxpZnkgc3RyaW5nIGhhbmRsaW5nIHRvCi0JYXJjaGl2ZTY0LmMgc3R5bGUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ibWlub3IvYmludXRpbHMtZ2RiL2NvbW1pdC84YWJhYzgwMzFlZDM2OWEyNzM0YjFjZGI3ZGYyOGEzOWE1NGI0YjQ5XQotQ1ZFOiBDVkUtMjAxOS05MDc1Ci1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPiAKLS0tLQotIGJmZC9DaGFuZ2VMb2cgICB8IDEwICsrKysrKysrKysKLSBiZmQvYXJjaGl2ZS5jICAgfCAxNyArKysrKysrLS0tLS0tLS0tLQotIGJmZC9hcmNoaXZlNjQuYyB8IDEwICsrKysrLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDIyIGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvYmZkL0NoYW5nZUxvZyBiL2JmZC9DaGFuZ2VMb2cKLWluZGV4IDcyYzg3YzcuLmUzOWJiMTIgMTAwNjQ0Ci0tLS0gYS9iZmQvQ2hhbmdlTG9nCi0rKysgYi9iZmQvQ2hhbmdlTG9nCi1AQCAtMSwzICsxLDEzIEBACi0rMjAxOS0wMi0yMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0rCi0rCVBSIDI0MjM2Ci0rCSogYXJjaGl2ZTY0LmMgKF9iZmRfYXJjaGl2ZV82NF9iaXRfc2x1cnBfYXJtYXApOiBNb3ZlIGNvZGUgYWRkaW5nCi0rCXNlbnRpbmVsIE5VTCB0byBzdHJpbmcgYnVmZmVyIG5lYXJlciB0byBsb29wIHdoZXJlIGl0IGlzIHVzZWQuCi0rCURvbid0IGdvIHBhc3Qgc2VudGluZWwgd2hlbiBzY2FubmluZyBzdHJpbmdzLCBhbmQgZG9uJ3Qgd3JpdGUKLSsJTlVMIGFnYWluLgotKwkqIGFyY2hpdmUuYyAoZG9fc2x1cnBfY29mZl9hcm1hcCk6IFNpbXBsaWZ5IHN0cmluZyBoYW5kbGluZyB0bwotKwlhcmNoaXZlNjQuYyBzdHlsZS4KLSsKLSAyMDE5LTAyLTE5ICBBbGFuIE1vZHJhICA8YW1vZHJhQGdtYWlsLmNvbT4KLSAKLSAJUFIgMjQyMzUKLWRpZmYgLS1naXQgYS9iZmQvYXJjaGl2ZS5jIGIvYmZkL2FyY2hpdmUuYwotaW5kZXggZDJkOWI3Mi4uNjhhOTJhMyAxMDA2NDQKLS0tLSBhL2JmZC9hcmNoaXZlLmMKLSsrKyBiL2JmZC9hcmNoaXZlLmMKLUBAIC0xMDEyLDYgKzEwMTIsNyBAQCBkb19zbHVycF9jb2ZmX2FybWFwIChiZmQgKmFiZmQpCi0gICBpbnQgKnJhd19hcm1hcCwgKnJhd3B0cjsKLSAgIHN0cnVjdCBhcnRkYXRhICphcmRhdGEgPSBiZmRfYXJkYXRhIChhYmZkKTsKLSAgIGNoYXIgKnN0cmluZ2Jhc2U7Ci0rICBjaGFyICpzdHJpbmdlbmQ7Ci0gICBiZmRfc2l6ZV90eXBlIHN0cmluZ3NpemU7Ci0gICBiZmRfc2l6ZV90eXBlIHBhcnNlZF9zaXplOwotICAgY2Fyc3ltICpjYXJzeW1zOwotQEAgLTEwNzEsMjIgKzEwNzIsMTggQEAgZG9fc2x1cnBfY29mZl9hcm1hcCAoYmZkICphYmZkKQotICAgICB9Ci0gCi0gICAvKiBPSywgYnVpbGQgdGhlIGNhcnN5bXMuICAqLwotLSAgZm9yIChpID0gMDsgaSA8IG5zeW16ICYmIHN0cmluZ3NpemUgPiAwOyBpKyspCi0rICBzdHJpbmdlbmQgPSBzdHJpbmdiYXNlICsgc3RyaW5nc2l6ZTsKLSsgICpzdHJpbmdlbmQgPSAwOwotKyAgZm9yIChpID0gMDsgaSA8IG5zeW16OyBpKyspCi0gICAgIHsKLS0gICAgICBiZmRfc2l6ZV90eXBlIGxlbjsKLS0KLSAgICAgICByYXdwdHIgPSByYXdfYXJtYXAgKyBpOwotICAgICAgIGNhcnN5bXMtPmZpbGVfb2Zmc2V0ID0gc3dhcCAoKGJmZF9ieXRlICopIHJhd3B0cik7Ci0gICAgICAgY2Fyc3ltcy0+bmFtZSA9IHN0cmluZ2Jhc2U7Ci0tICAgICAgLyogUFIgMTc1MTI6IGZpbGU6IDRhMWQ1MGMxLiAgKi8KLS0gICAgICBsZW4gPSBzdHJubGVuIChzdHJpbmdiYXNlLCBzdHJpbmdzaXplKTsKLS0gICAgICBpZiAobGVuIDwgc3RyaW5nc2l6ZSkKLS0JbGVuICsrOwotLSAgICAgIHN0cmluZ2Jhc2UgKz0gbGVuOwotLSAgICAgIHN0cmluZ3NpemUgLT0gbGVuOwotKyAgICAgIHN0cmluZ2Jhc2UgKz0gc3RybGVuIChzdHJpbmdiYXNlKTsKLSsgICAgICBpZiAoc3RyaW5nYmFzZSAhPSBzdHJpbmdlbmQpCi0rCSsrc3RyaW5nYmFzZTsKLSAgICAgICBjYXJzeW1zKys7Ci0gICAgIH0KLS0gICpzdHJpbmdiYXNlID0gMDsKLSAKLSAgIGFyZGF0YS0+c3ltZGVmX2NvdW50ID0gbnN5bXo7Ci0gICBhcmRhdGEtPmZpcnN0X2ZpbGVfZmlsZXBvcyA9IGJmZF90ZWxsIChhYmZkKTsKLWRpZmYgLS1naXQgYS9iZmQvYXJjaGl2ZTY0LmMgYi9iZmQvYXJjaGl2ZTY0LmMKLWluZGV4IDMxMmJmODIuLjQyZjZlZDkgMTAwNjQ0Ci0tLS0gYS9iZmQvYXJjaGl2ZTY0LmMKLSsrKyBiL2JmZC9hcmNoaXZlNjQuYwotQEAgLTEwMCw4ICsxMDAsNiBAQCBfYmZkX2FyY2hpdmVfNjRfYml0X3NsdXJwX2FybWFwIChiZmQgKmFiZmQpCi0gICAgIHJldHVybiBGQUxTRTsKLSAgIGNhcnN5bXMgPSBhcmRhdGEtPnN5bWRlZnM7Ci0gICBzdHJpbmdiYXNlID0gKChjaGFyICopIGFyZGF0YS0+c3ltZGVmcykgKyBjYXJzeW1fc2l6ZTsKLS0gIHN0cmluZ2Jhc2Vbc3RyaW5nc2l6ZV0gPSAwOwotLSAgc3RyaW5nZW5kID0gc3RyaW5nYmFzZSArIHN0cmluZ3NpemU7Ci0gCi0gICByYXdfYXJtYXAgPSAoYmZkX2J5dGUgKikgYmZkX2FsbG9jIChhYmZkLCBwdHJzaXplKTsKLSAgIGlmIChyYXdfYXJtYXAgPT0gTlVMTCkKLUBAIC0xMTUsMTUgKzExMywxNyBAQCBfYmZkX2FyY2hpdmVfNjRfYml0X3NsdXJwX2FybWFwIChiZmQgKmFiZmQpCi0gICAgICAgZ290byByZWxlYXNlX3Jhd19hcm1hcDsKLSAgICAgfQotIAotKyAgc3RyaW5nZW5kID0gc3RyaW5nYmFzZSArIHN0cmluZ3NpemU7Ci0rICAqc3RyaW5nZW5kID0gMDsKLSAgIGZvciAoaSA9IDA7IGkgPCBuc3ltejsgaSsrKQotICAgICB7Ci0gICAgICAgY2Fyc3ltcy0+ZmlsZV9vZmZzZXQgPSBiZmRfZ2V0YjY0IChyYXdfYXJtYXAgKyBpICogOCk7Ci0gICAgICAgY2Fyc3ltcy0+bmFtZSA9IHN0cmluZ2Jhc2U7Ci0tICAgICAgaWYgKHN0cmluZ2Jhc2UgPCBzdHJpbmdlbmQpCi0tCXN0cmluZ2Jhc2UgKz0gc3RybGVuIChzdHJpbmdiYXNlKSArIDE7Ci0rICAgICAgc3RyaW5nYmFzZSArPSBzdHJsZW4gKHN0cmluZ2Jhc2UpOwotKyAgICAgIGlmIChzdHJpbmdiYXNlICE9IHN0cmluZ2VuZCkKLSsJKytzdHJpbmdiYXNlOwotICAgICAgICsrY2Fyc3ltczsKLSAgICAgfQotLSAgKnN0cmluZ2Jhc2UgPSAnXDAnOwotIAotICAgYXJkYXRhLT5zeW1kZWZfY291bnQgPSBuc3ltejsKLSAgIGFyZGF0YS0+Zmlyc3RfZmlsZV9maWxlcG9zID0gYmZkX3RlbGwgKGFiZmQpOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDc2LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYmludXRpbHMvYmludXRpbHMvQ1ZFLTIwMTktOTA3Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWM4Y2RlMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDc2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotRnJvbSA5Zjg0MWM1ODM4ODBlYjZkMDE5NDQ1NWMxNTgzYTc2NmY4NTNlNjI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxhbiBNb2RyYSA8YW1vZHJhQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjAgRmViIDIwMTkgMTI6MDY6MzEgKzEwMzAKLVN1YmplY3Q6IFtQQVRDSF0gUFIyNDIzMywgT3V0IG9mIG1lbW9yeQotCi0JUFIgMjQyMzMKLQkqIG9iamR1bXAuYyAoZHVtcF9iZmRfcHJpdmF0ZV9oZWFkZXIpOiBQcmludCB3YXJuaW5nIGlmCi0JYmZkX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEgcmV0dXJucyBmYWxzZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2JtaW5vci9iaW51dGlscy1nZGIvY29tbWl0LzdkMjcyYTU1Y2FlYmZjMjZhYjJlMTVkMWU5NDM5YmFjOTc4YjliYjddCi1DVkU6IENWRS0yMDE5LTkwNzYKLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0tLS0KLSBiaW51dGlscy9DaGFuZ2VMb2cgfCA2ICsrKysrKwotIGJpbnV0aWxzL29iamR1bXAuYyB8IDQgKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9iaW51dGlscy9DaGFuZ2VMb2cgYi9iaW51dGlscy9DaGFuZ2VMb2cKLWluZGV4IGY4MzdjMzcuLmQ1ZGQ3Y2IgMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9DaGFuZ2VMb2cKLSsrKyBiL2JpbnV0aWxzL0NoYW5nZUxvZwotQEAgLTEsMyArMSw5IEBACi0rMjAxOS0wMi0yMCAgQWxhbiBNb2RyYSAgPGFtb2RyYUBnbWFpbC5jb20+Ci0rCi0rCVBSIDI0MjMzCi0rCSogb2JqZHVtcC5jIChkdW1wX2JmZF9wcml2YXRlX2hlYWRlcik6IFByaW50IHdhcm5pbmcgaWYKLSsJYmZkX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEgcmV0dXJucyBmYWxzZS4KLSsKLSAyMDE5LTAyLTAyICBOaWNrIENsaWZ0b24gIDxuaWNrY0ByZWRoYXQuY29tPgotIAotIAkqIGNvbmZpZ3VyZTogUmVnZW5lcmF0ZS4KLWRpZmYgLS1naXQgYS9iaW51dGlscy9vYmpkdW1wLmMgYi9iaW51dGlscy9vYmpkdW1wLmMKLWluZGV4IDg3MjUzOTAuLjdkMGM2YTQgMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9vYmpkdW1wLmMKLSsrKyBiL2JpbnV0aWxzL29iamR1bXAuYwotQEAgLTMxNzgsNyArMzE3OCw5IEBAIGR1bXBfYmZkX2hlYWRlciAoYmZkICphYmZkKQotIHN0YXRpYyB2b2lkCi0gZHVtcF9iZmRfcHJpdmF0ZV9oZWFkZXIgKGJmZCAqYWJmZCkKLSB7Ci0tICBiZmRfcHJpbnRfcHJpdmF0ZV9iZmRfZGF0YSAoYWJmZCwgc3Rkb3V0KTsKLSsgIGlmICghYmZkX3ByaW50X3ByaXZhdGVfYmZkX2RhdGEgKGFiZmQsIHN0ZG91dCkpCi0rICAgIG5vbl9mYXRhbCAoXygid2FybmluZzogcHJpdmF0ZSBoZWFkZXJzIGluY29tcGxldGU6ICVzIiksCi0rCSAgICAgICBiZmRfZXJybXNnIChiZmRfZ2V0X2Vycm9yICgpKSk7Ci0gfQotIAotIHN0YXRpYyB2b2lkCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAxOS05MDc3LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMWVjYjcxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDE5LTkwNzcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIGY3YmJjODg5MGRlNDVkZjZlZGEwZGRlZjVkZDA0ZjgzNWY1NGVlY2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaWNrIENsaWZ0b24gPG5pY2tjQHJlZGhhdC5jb20+Ci1EYXRlOiBXZWQsIDIwIEZlYiAyMDE5IDE3OjAzOjQ3ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBhIGlsbGVnYWwgbWVtb3J5IGFjY2VzcyBmYXVsdCB3aGVuIHBhcnNpbmcgYSBjb3JydXB0IE1JUFMKLSBvcHRpb24gc2VjdGlvbiB1c2luZyByZWFkZWxmLgotCi0JUFIgMjQyNDMKLQkqIHJlYWRlbGYuYyAocHJvY2Vzc19taXBzX3NwZWNpZmljKTogQ2hlY2sgZm9yIGFuIG9wdGlvbnMgc2VjdGlvbgotCXRoYXQgaXMgdG9vIHNtYWxsIHRvIGV2ZW4gY29udGFpbiBhIHNpbmdsZSBvcHRpb24uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ibWlub3IvYmludXRpbHMtZ2RiL2NvbW1pdC83ZmMwYzY2OGYyYWNlYjg1ODJkNzRkYjFhZDI1MjhlMmJiYThhOTIxXQotQ1ZFOiBDVkUtMjAxOS05MDc3Ci1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotLS0tCi0gYmludXRpbHMvcmVhZGVsZi5jIHwgNiArKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9iaW51dGlscy9yZWFkZWxmLmMgYi9iaW51dGlscy9yZWFkZWxmLmMKLWluZGV4IDlkZjM3NDIuLjE4YWI4MDYgMTAwNjQ0Ci0tLS0gYS9iaW51dGlscy9yZWFkZWxmLmMKLSsrKyBiL2JpbnV0aWxzL3JlYWRlbGYuYwotQEAgLTE2MTc5LDYgKzE2MTc5LDEyIEBAIHByb2Nlc3NfbWlwc19zcGVjaWZpYyAoRmlsZWRhdGEgKiBmaWxlZGF0YSkKLSAJICBlcnJvciAoXygiTm8gTUlQU19PUFRJT05TIGhlYWRlciBmb3VuZFxuIikpOwotIAkgIHJldHVybiBGQUxTRTsKLSAJfQotKyAgICAgIC8qIFBSIDI0MjQzICAqLwotKyAgICAgIGlmIChzZWN0LT5zaF9zaXplIDwgc2l6ZW9mICgqIGVvcHQpKQotKwl7Ci0rCSAgZXJyb3IgKF8oIlRoZSBNSVBTIG9wdGlvbnMgc2VjdGlvbiBpcyB0b28gc21hbGwuXG4iKSk7Ci0rCSAgcmV0dXJuIEZBTFNFOwotKwl9Ci0gCi0gICAgICAgZW9wdCA9IChFbGZfRXh0ZXJuYWxfT3B0aW9ucyAqKSBnZXRfZGF0YSAoTlVMTCwgZmlsZWRhdGEsIG9wdGlvbnNfb2Zmc2V0LCAxLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlY3QtPnNoX3NpemUsIF8oIm9wdGlvbnMiKSk7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzL0NWRS0yMDIwLTA1NTEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAyMC0wNTUxLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUzZTNjYWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlscy9DVkUtMjAyMC0wNTUxLnBhdGNoCkBAIC0wLDAgKzEsNTQ5IEBACitGcm9tIGFlNTMxMDQxYzdjNTk1NjY3MjM0MmY4OWM0ODZhMDExYzg0ZjAyN2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiSC5KLiBMdSIgPGhqbC50b29sc0BnbWFpbC5jb20+CitEYXRlOiBXZWQsIDExIE1hciAyMDIwIDA5OjQ2OjE5IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMS8xXSBpMzg2OiBHZW5lcmF0ZSBsZmVuY2Ugd2l0aCBsb2FkL2luZGlyZWN0IGJyYW5jaC9yZXQKKyBbQ1ZFLTIwMjAtMDU1MV0KKworQWRkIDMgY29tbWFuZC1saW5lIG9wdGlvbnMgdG8gZ2VuZXJhdGUgbGZlbmNlIGZvciBsb2FkLCBpbmRpcmVjdCBuZWFyCiticmFuY2ggYW5kIHJldCB0byBoZWxwIG1pdGlnYXRlOgorCitodHRwczovL3d3dy5pbnRlbC5jb20vY29udGVudC93d3cvdXMvZW4vc2VjdXJpdHktY2VudGVyL2Fkdmlzb3J5L2ludGVsLXNhLTAwMzM0Lmh0bWwKK2h0dHA6Ly9jdmUubWl0cmUub3JnL2NnaS1iaW4vY3ZlbmFtZS5jZ2k/bmFtZT1DVkUtMjAyMC0wNTUxCisKKzEuIC1tbGZlbmNlLWFmdGVyLWxvYWQ9W25vfHllc106CisgIC1tbGZlbmNlLWFmdGVyLWxvYWQ9eWVzIGdlbmVyYXRlcyBsZmVuY2UgYWZ0ZXIgbG9hZCBpbnN0cnVjdGlvbnMuCisyLiAtbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPVtub25lfGFsbHxtZW1vcnl8cmVnaXN0ZXJdOgorICBhLiAtbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPWFsbCBnZW5lcmF0ZXMgbGZlbmNlIGJlZm9yZSBpbmRpcmVjdAorICBuZWFyIGJyYW5jaGVzIHZpYSByZWdpc3RlciBhbmQgYSB3YXJuaW5nIGJlZm9yZSBpbmRpcmVjdCBuZWFyIGJyYW5jaGVzCisgIHZpYSBtZW1vcnkuCisgIGIuIC1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9bWVtb3J5IGlzc3VlIGEgd2FybmluZyBiZWZvcmUKKyAgaW5kaXJlY3QgbmVhciBicmFuY2hlcyB2aWEgbWVtb3J5LgorICBjLiAtbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPXJlZ2lzdGVyIGdlbmVyYXRlcyBsZmVuY2UgYmVmb3JlCisgIGluZGlyZWN0IG5lYXIgYnJhbmNoZXMgdmlhIHJlZ2lzdGVyLgorTm90ZSB0aGF0IGxmZW5jZSB3b24ndCBiZSBnZW5lcmF0ZWQgYmVmb3JlIGluZGlyZWN0IG5lYXIgYnJhbmNoZXMgdmlhCityZWdpc3RlciB3aXRoIC1tbGZlbmNlLWFmdGVyLWxvYWQ9eWVzIHNpbmNlIGxmZW5jZSB3aWxsIGJlIGdlbmVyYXRlZAorYWZ0ZXIgbG9hZGluZyBicmFuY2ggdGFyZ2V0IHJlZ2lzdGVyLgorMy4gLW1sZmVuY2UtYmVmb3JlLXJldD1bbm9uZXxvcnxub3RdCisgIGEuIC1tbGZlbmNlLWJlZm9yZS1yZXQ9b3IgZ2VuZXJhdGVzIG9yIHdpdGggbGZlbmNlIGJlZm9yZSByZXQuCisgIGIuIC1tbGZlbmNlLWJlZm9yZS1yZXQ9bm90IGdlbmVyYXRlcyBub3Qgd2l0aCBsZmVuY2UgYmVmb3JlIHJldC4KKworQSB3YXJuaW5nIHdpbGwgYmUgaXNzdWVkIGFuZCBsZmVuY2Ugd29uJ3QgYmUgZ2VuZXJhdGVkIGJlZm9yZSBpbmRpcmVjdAorbmVhciBicmFuY2ggYW5kIHJldCBpZiB0aGUgcHJldmlvdXMgaXRlbSBpcyBhIHByZWZpeCBvciBhIGNvbnN0YW50CitkaXJlY3RpdmUsIHdoaWNoIG1heSBiZSB1c2VkIHRvIGhhcmRjb2RlIGFuIGluc3RydWN0aW9uLCBzaW5jZSB0aGVyZQoraXMgbm8gY2xlYXIgaW5zdHJ1Y3Rpb24gYm91bmRhcnkuCisKKwkqIGNvbmZpZy90Yy1pMzg2LmMgKGxmZW5jZV9hZnRlcl9sb2FkKTogTmV3LgorCShsZmVuY2VfYmVmb3JlX2luZGlyZWN0X2JyYW5jaF9raW5kKTogTmV3LgorCShsZmVuY2VfYmVmb3JlX2luZGlyZWN0X2JyYW5jaCk6IE5ldy4KKwkobGZlbmNlX2JlZm9yZV9yZXRfa2luZCk6IE5ldy4KKwkobGZlbmNlX2JlZm9yZV9yZXQpOiBOZXcuCisJKGxhc3RfaW5zbik6IE5ldy4KKwkobG9hZF9pbnNuX3ApOiBOZXcuCisJKGluc2VydF9sZmVuY2VfYWZ0ZXIpOiBOZXcuCisJKGluc2VydF9sZmVuY2VfYmVmb3JlKTogTmV3LgorCShtZF9hc3NlbWJsZSk6IENhbGwgaW5zZXJ0X2xmZW5jZV9iZWZvcmUgYW5kIGluc2VydF9sZmVuY2VfYWZ0ZXIuCisJU2V0IGxhc3RfaW5zbi4KKwkoT1BUSU9OX01MRkVOQ0VfQUZURVJfTE9BRCk6IE5ldy4KKwkoT1BUSU9OX01MRkVOQ0VfQkVGT1JFX0lORElSRUNUX0JSQU5DSCk6IE5ldy4KKwkoT1BUSU9OX01MRkVOQ0VfQkVGT1JFX1JFVCk6IE5ldy4KKwkobWRfbG9uZ29wdHMpOiBBZGQgLW1sZmVuY2UtYWZ0ZXItbG9hZD0sCisJLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD0gYW5kIC1tbGZlbmNlLWJlZm9yZS1yZXQ9LgorCShtZF9wYXJzZV9vcHRpb24pOiBIYW5kbGUgLW1sZmVuY2UtYWZ0ZXItbG9hZD0sCisJLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD0gYW5kIC1tbGZlbmNlLWJlZm9yZS1yZXQ9LgorCShtZF9zaG93X3VzYWdlKTogRGlzcGxheSAtbWxmZW5jZS1hZnRlci1sb2FkPSwKKwktbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPSBhbmQgLW1sZmVuY2UtYmVmb3JlLXJldD0uCisJKGkzODZfY29uc19hbGlnbik6IE5ldy4KKwkqIGNvbmZpZy90Yy1pMzg2LmggKGkzODZfY29uc19hbGlnbik6IE5ldy4KKwkobWRfY29uc19hbGlnbik6IE5ldy4KKwkqIGRvYy9jLWkzODYudGV4aTogRG9jdW1lbnQgLW1sZmVuY2UtYWZ0ZXItbG9hZD0sCisJLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD0gYW5kIC1tbGZlbmNlLWJlZm9yZS1yZXQ9LgorCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvP3A9YmludXRpbHMtZ2RiLmdpdDthPWNvbW1pdDtoPWFlNTMxMDQxYzdjNTk1NjY3MjM0MmY4OWM0ODZhMDExYzg0ZjAyN2ZdCitDVkU6IENWRS0yMDIwLTA1NTEKKy0tLQorZGlmZiAtLWdpdCBhL2dhcy9jb25maWcvdGMtaTM4Ni5jIGIvZ2FzL2NvbmZpZy90Yy1pMzg2LmMKK2luZGV4IGIwMjBmMzljODYzLi4wOTA2M2Y3ODRiNyAxMDA2NDQKKy0tLSBhL2dhcy9jb25maWcvdGMtaTM4Ni5jCisrKysgYi9nYXMvY29uZmlnL3RjLWkzODYuYworQEAgLTYyOSw3ICs2MjksMjkgQEAgc3RhdGljIGludCBvbWl0X2xvY2tfcHJlZml4ID0gMDsKKyAgICAibG9jayBhZGRsICQwLCAoJXtyZX1zcCkiLiAgKi8KKyBzdGF0aWMgaW50IGF2b2lkX2ZlbmNlID0gMDsKKyAKKy0vKiBUeXBlIG9mIHRoZSBwcmV2aW91cyBpbnN0cnVjdGlvbi4gICovCisrLyogMSBpZiBsZmVuY2Ugc2hvdWxkIGJlIGluc2VydGVkIGFmdGVyIGV2ZXJ5IGxvYWQuICAqLworK3N0YXRpYyBpbnQgbGZlbmNlX2FmdGVyX2xvYWQgPSAwOworKworKy8qIE5vbi16ZXJvIGlmIGxmZW5jZSBzaG91bGQgYmUgaW5zZXJ0ZWQgYmVmb3JlIGluZGlyZWN0IGJyYW5jaC4gICovCisrc3RhdGljIGVudW0gbGZlbmNlX2JlZm9yZV9pbmRpcmVjdF9icmFuY2hfa2luZAorKyAgeworKyAgICBsZmVuY2VfYnJhbmNoX25vbmUgPSAwLAorKyAgICBsZmVuY2VfYnJhbmNoX3JlZ2lzdGVyLAorKyAgICBsZmVuY2VfYnJhbmNoX21lbW9yeSwKKysgICAgbGZlbmNlX2JyYW5jaF9hbGwKKysgIH0KKytsZmVuY2VfYmVmb3JlX2luZGlyZWN0X2JyYW5jaDsKKysKKysvKiBOb24temVybyBpZiBsZmVuY2Ugc2hvdWxkIGJlIGluc2VydGVkIGJlZm9yZSByZXQuICAqLworK3N0YXRpYyBlbnVtIGxmZW5jZV9iZWZvcmVfcmV0X2tpbmQKKysgIHsKKysgICAgbGZlbmNlX2JlZm9yZV9yZXRfbm9uZSA9IDAsCisrICAgIGxmZW5jZV9iZWZvcmVfcmV0X25vdCwKKysgICAgbGZlbmNlX2JlZm9yZV9yZXRfb3IKKysgIH0KKytsZmVuY2VfYmVmb3JlX3JldDsKKysKKysvKiBUeXBlcyBvZiBwcmV2aW91cyBpbnN0cnVjdGlvbiBpcyAuYnl0ZSBvciBwcmVmaXguICAqLworIHN0YXRpYyBzdHJ1Y3QKKyAgIHsKKyAgICAgc2VnVCBzZWc7CitAQCAtNDMxMSw2ICs0MzMzLDI4MyBAQCBvcHRpbWl6ZV9lbmNvZGluZyAodm9pZCkKKyAgICAgfQorIH0KKyAKKysvKiBSZXR1cm4gbm9uLXplcm8gZm9yIGxvYWQgaW5zdHJ1Y3Rpb24uICAqLworKworK3N0YXRpYyBpbnQKKytsb2FkX2luc25fcCAodm9pZCkKKyt7CisrICB1bnNpZ25lZCBpbnQgZGVzdDsKKysgIGludCBhbnlfdmV4X3AgPSBpc19hbnlfdmV4X2VuY29kaW5nICgmaS50bSk7CisrICB1bnNpZ25lZCBpbnQgYmFzZV9vcGNvZGUgPSBpLnRtLmJhc2Vfb3Bjb2RlIHwgMTsKKysKKysgIGlmICghYW55X3ZleF9wKQorKyAgICB7CisrICAgICAgLyogbGVhICAqLworKyAgICAgIGlmIChpLnRtLmJhc2Vfb3Bjb2RlID09IDB4OGQpCisrCXJldHVybiAwOworKworKyAgICAgIC8qIHBvcCAgKi8KKysgICAgICBpZiAoKGkudG0uYmFzZV9vcGNvZGUgJiB+NykgPT0gMHg1OAorKwkgIHx8IChpLnRtLmJhc2Vfb3Bjb2RlID09IDB4OGYgJiYgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDApKQorKwlyZXR1cm4gMTsKKysKKysgICAgICAvKiBtb3ZzLCBjbXBzLCBsb2RzLCBzY2FzLiAgKi8KKysgICAgICBpZiAoKGkudG0uYmFzZV9vcGNvZGUgfCAweGIpID09IDB4YWYpCisrCXJldHVybiAxOworKworKyAgICAgIC8qIG91dHMgKi8KKysgICAgICBpZiAoYmFzZV9vcGNvZGUgPT0gMHg2ZikKKysJcmV0dXJuIDE7CisrICAgIH0KKysKKysgIC8qIE5vIG1lbW9yeSBvcGVyYW5kLiAgKi8KKysgIGlmICghaS5tZW1fb3BlcmFuZHMpCisrICAgIHJldHVybiAwOworKworKyAgaWYgKGFueV92ZXhfcCkKKysgICAgeworKyAgICAgIC8qIHZsZG14Y3NyLiAgKi8KKysgICAgICBpZiAoaS50bS5iYXNlX29wY29kZSA9PSAweGFlCisrCSAgJiYgaS50bS5vcGNvZGVfbW9kaWZpZXIudmV4CisrCSAgJiYgaS50bS5vcGNvZGVfbW9kaWZpZXIudmV4b3Bjb2RlID09IFZFWDBGCisrCSAgJiYgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDIpCisrCXJldHVybiAxOworKyAgICB9CisrICBlbHNlCisrICAgIHsKKysgICAgICAvKiB0ZXN0LCBub3QsIG5lZywgbXVsLCBpbXVsLCBkaXYsIGlkaXYuICAqLworKyAgICAgIGlmICgoaS50bS5iYXNlX29wY29kZSA9PSAweGY2IHx8IGkudG0uYmFzZV9vcGNvZGUgPT0gMHhmNykKKysJICAmJiBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgIT0gMSkKKysJcmV0dXJuIDE7CisrCisrICAgICAgLyogaW5jLCBkZWMuICAqLworKyAgICAgIGlmIChiYXNlX29wY29kZSA9PSAweGZmICYmIGkudG0uZXh0ZW5zaW9uX29wY29kZSA8PSAxKQorKwlyZXR1cm4gMTsKKysKKysgICAgICAvKiBhZGQsIG9yLCBhZGMsIHNiYiwgYW5kLCBzdWIsIHhvciwgY21wLiAgKi8KKysgICAgICBpZiAoaS50bS5iYXNlX29wY29kZSA+PSAweDgwICYmIGkudG0uYmFzZV9vcGNvZGUgPD0gMHg4MykKKysJcmV0dXJuIDE7CisrCisrICAgICAgLyogYnQsIGJ0cywgYnRyLCBidGMuICAqLworKyAgICAgIGlmIChpLnRtLmJhc2Vfb3Bjb2RlID09IDB4ZmJhCisrCSAgJiYgKGkudG0uZXh0ZW5zaW9uX29wY29kZSA+PSA0ICYmIGkudG0uZXh0ZW5zaW9uX29wY29kZSA8PSA3KSkKKysJcmV0dXJuIDE7CisrCisrICAgICAgLyogcm9sLCByb3IsIHJjbCwgcmNyLCBzaGwvc2FsLCBzaHIsIHNhci4gKi8KKysgICAgICBpZiAoKGJhc2Vfb3Bjb2RlID09IDB4YzEKKysJICAgfHwgKGkudG0uYmFzZV9vcGNvZGUgPj0gMHhkMCAmJiBpLnRtLmJhc2Vfb3Bjb2RlIDw9IDB4ZDMpKQorKwkgICYmIGkudG0uZXh0ZW5zaW9uX29wY29kZSAhPSA2KQorKwlyZXR1cm4gMTsKKysKKysgICAgICAvKiBjbXB4Y2hnOGIsIGNtcHhjaGcxNmIsIHhyc3RvcnMuICAqLworKyAgICAgIGlmIChpLnRtLmJhc2Vfb3Bjb2RlID09IDB4ZmM3CisrCSAgJiYgKGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAxIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAzKSkKKysJcmV0dXJuIDE7CisrCisrICAgICAgLyogZnhyc3RvciwgbGRteGNzciwgeHJzdG9yLiAgKi8KKysgICAgICBpZiAoaS50bS5iYXNlX29wY29kZSA9PSAweGZhZQorKwkgICYmIChpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMQorKwkgICAgICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMgorKwkgICAgICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gNSkpCisrCXJldHVybiAxOworKworKyAgICAgIC8qIGxnZHQsIGxpZHQsIGxtc3cuICAqLworKyAgICAgIGlmIChpLnRtLmJhc2Vfb3Bjb2RlID09IDB4ZjAxCisrCSAgJiYgKGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAyCisrCSAgICAgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAzCisrCSAgICAgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSA2KSkKKysJcmV0dXJuIDE7CisrCisrICAgICAgLyogdm1wdHJsZCAqLworKyAgICAgIGlmIChpLnRtLmJhc2Vfb3Bjb2RlID09IDB4ZmM3CisrCSAgJiYgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDYpCisrCXJldHVybiAxOworKworKyAgICAgIC8qIENoZWNrIGZvciB4ODcgaW5zdHJ1Y3Rpb25zLiAgKi8KKysgICAgICBpZiAoaS50bS5iYXNlX29wY29kZSA+PSAweGQ4ICYmIGkudG0uYmFzZV9vcGNvZGUgPD0gMHhkZikKKysJeworKwkgIC8qIFNraXAgZnN0LCBmc3RwLCBmc3RlbnYsIGZzdGN3LiAgKi8KKysJICBpZiAoaS50bS5iYXNlX29wY29kZSA9PSAweGQ5CisrCSAgICAgICYmIChpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMgorKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gMworKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gNgorKwkJICB8fCBpLnRtLmV4dGVuc2lvbl9vcGNvZGUgPT0gNykpCisrCSAgICByZXR1cm4gMDsKKysKKysJICAvKiBTa2lwIGZpc3R0cCwgZmlzdCwgZmlzdHAsIGZzdHAuICAqLworKwkgIGlmIChpLnRtLmJhc2Vfb3Bjb2RlID09IDB4ZGIKKysJICAgICAgJiYgKGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAxCisrCQkgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAyCisrCQkgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAzCisrCQkgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSA3KSkKKysJICAgIHJldHVybiAwOworKworKwkgIC8qIFNraXAgZmlzdHRwLCBmc3QsIGZzdHAsIGZzYXZlLCBmc3Rzdy4gICovCisrCSAgaWYgKGkudG0uYmFzZV9vcGNvZGUgPT0gMHhkZAorKwkgICAgICAmJiAoaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDEKKysJCSAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDIKKysJCSAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDMKKysJCSAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDYKKysJCSAgfHwgaS50bS5leHRlbnNpb25fb3Bjb2RlID09IDcpKQorKwkgICAgcmV0dXJuIDA7CisrCisrCSAgLyogU2tpcCBmaXN0dHAsIGZpc3QsIGZpc3RwLCBmYnN0cCwgZmlzdHAuICAqLworKwkgIGlmIChpLnRtLmJhc2Vfb3Bjb2RlID09IDB4ZGYKKysJICAgICAgJiYgKGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAxCisrCQkgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAyCisrCQkgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAzCisrCQkgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSA2CisrCQkgIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSA3KSkKKysJICAgIHJldHVybiAwOworKworKwkgIHJldHVybiAxOworKwl9CisrICAgIH0KKysKKysgIGRlc3QgPSBpLm9wZXJhbmRzIC0gMTsKKysKKysgIC8qIENoZWNrIGZha2UgaW1tOCBvcGVyYW5kIGFuZCAzIHNvdXJjZSBvcGVyYW5kcy4gICovCisrICBpZiAoKGkudG0ub3Bjb2RlX21vZGlmaWVyLmltbWV4dAorKyAgICAgICB8fCBpLnRtLm9wY29kZV9tb2RpZmllci52ZXhzb3VyY2VzID09IFZFWDNTT1VSQ0VTKQorKyAgICAgICYmIGkudHlwZXNbZGVzdF0uYml0ZmllbGQuaW1tOCkKKysgICAgZGVzdC0tOworKworKyAgLyogYWRkLCBvciwgYWRjLCBzYmIsIGFuZCwgc3ViLCB4b3IsIGNtcCwgdGVzdCwgeGNoZywgeGFkZCAgKi8KKysgIGlmICghYW55X3ZleF9wCisrICAgICAgJiYgKGJhc2Vfb3Bjb2RlID09IDB4MQorKwkgIHx8IGJhc2Vfb3Bjb2RlID09IDB4OQorKwkgIHx8IGJhc2Vfb3Bjb2RlID09IDB4MTEKKysJICB8fCBiYXNlX29wY29kZSA9PSAweDE5CisrCSAgfHwgYmFzZV9vcGNvZGUgPT0gMHgyMQorKwkgIHx8IGJhc2Vfb3Bjb2RlID09IDB4MjkKKysJICB8fCBiYXNlX29wY29kZSA9PSAweDMxCisrCSAgfHwgYmFzZV9vcGNvZGUgPT0gMHgzOQorKwkgIHx8IChpLnRtLmJhc2Vfb3Bjb2RlID49IDB4ODQgJiYgaS50bS5iYXNlX29wY29kZSA8PSAweDg3KQorKwkgIHx8IGJhc2Vfb3Bjb2RlID09IDB4ZmMxKSkKKysgICAgcmV0dXJuIDE7CisrCisrICAvKiBDaGVjayBmb3IgbG9hZCBpbnN0cnVjdGlvbi4gICovCisrICByZXR1cm4gKGkudHlwZXNbZGVzdF0uYml0ZmllbGQuY2xhc3MgIT0gQ2xhc3NOb25lCisrCSAgfHwgaS50eXBlc1tkZXN0XS5iaXRmaWVsZC5pbnN0YW5jZSA9PSBBY2N1bSk7CisrfQorKworKy8qIE91dHB1dCBsZmVuY2UsIDB4ZmFlZTgsIGFmdGVyIGluc3RydWN0aW9uLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2luc2VydF9sZmVuY2VfYWZ0ZXIgKHZvaWQpCisreworKyAgaWYgKGxmZW5jZV9hZnRlcl9sb2FkICYmIGxvYWRfaW5zbl9wICgpKQorKyAgICB7CisrICAgICAgY2hhciAqcCA9IGZyYWdfbW9yZSAoMyk7CisrICAgICAgKnArKyA9IDB4ZjsKKysgICAgICAqcCsrID0gMHhhZTsKKysgICAgICAqcCA9IDB4ZTg7CisrICAgIH0KKyt9CisrCisrLyogT3V0cHV0IGxmZW5jZSwgMHhmYWVlOCwgYmVmb3JlIGluc3RydWN0aW9uLiAgKi8KKysKKytzdGF0aWMgdm9pZAorK2luc2VydF9sZmVuY2VfYmVmb3JlICh2b2lkKQorK3sKKysgIGNoYXIgKnA7CisrCisrICBpZiAoaXNfYW55X3ZleF9lbmNvZGluZyAoJmkudG0pKQorKyAgICByZXR1cm47CisrCisrICBpZiAoaS50bS5iYXNlX29wY29kZSA9PSAweGZmCisrICAgICAgJiYgKGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSAyIHx8IGkudG0uZXh0ZW5zaW9uX29wY29kZSA9PSA0KSkKKysgICAgeworKyAgICAgIC8qIEluc2VydCBsZmVuY2UgYmVmb3JlIGluZGlyZWN0IGJyYW5jaCBpZiBuZWVkZWQuICAqLworKworKyAgICAgIGlmIChsZmVuY2VfYmVmb3JlX2luZGlyZWN0X2JyYW5jaCA9PSBsZmVuY2VfYnJhbmNoX25vbmUpCisrCXJldHVybjsKKysKKysgICAgICBpZiAoaS5vcGVyYW5kcyAhPSAxKQorKwlhYm9ydCAoKTsKKysKKysgICAgICBpZiAoaS5yZWdfb3BlcmFuZHMgPT0gMSkKKysJeworKwkgIC8qIEluZGlyZWN0IGJyYW5jaCB2aWEgcmVnaXN0ZXIuICBEb24ndCBpbnNlcnQgbGZlbmNlIHdpdGgKKysJICAgICAtbWxmZW5jZS1hZnRlci1sb2FkPXllcy4gICovCisrCSAgaWYgKGxmZW5jZV9hZnRlcl9sb2FkCisrCSAgICAgIHx8IGxmZW5jZV9iZWZvcmVfaW5kaXJlY3RfYnJhbmNoID09IGxmZW5jZV9icmFuY2hfbWVtb3J5KQorKwkgICAgcmV0dXJuOworKwl9CisrICAgICAgZWxzZSBpZiAoaS5tZW1fb3BlcmFuZHMgPT0gMQorKwkgICAgICAgJiYgbGZlbmNlX2JlZm9yZV9pbmRpcmVjdF9icmFuY2ggIT0gbGZlbmNlX2JyYW5jaF9yZWdpc3RlcikKKysJeworKwkgIGFzX3dhcm4gKF8oImluZGlyZWN0IGAlc2Agd2l0aCBtZW1vcnkgb3BlcmFuZCBzaG91bGQgYmUgYXZvaWRlZCIpLAorKwkJICAgaS50bS5uYW1lKTsKKysJICByZXR1cm47CisrCX0KKysgICAgICBlbHNlCisrCXJldHVybjsKKysKKysgICAgICBpZiAobGFzdF9pbnNuLmtpbmQgIT0gbGFzdF9pbnNuX290aGVyCisrCSAgJiYgbGFzdF9pbnNuLnNlZyA9PSBub3dfc2VnKQorKwl7CisrCSAgYXNfd2Fybl93aGVyZSAobGFzdF9pbnNuLmZpbGUsIGxhc3RfaW5zbi5saW5lLAorKwkJCSBfKCJgJXNgIHNraXBzIC1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2ggb24gYCVzYCIpLAorKwkJCSBsYXN0X2luc24ubmFtZSwgaS50bS5uYW1lKTsKKysJICByZXR1cm47CisrCX0KKysKKysgICAgICBwID0gZnJhZ19tb3JlICgzKTsKKysgICAgICAqcCsrID0gMHhmOworKyAgICAgICpwKysgPSAweGFlOworKyAgICAgICpwID0gMHhlODsKKysgICAgICByZXR1cm47CisrICAgIH0KKysKKysgIC8qIE91dHB1dCBvci9ub3QgYW5kIGxmZW5jZSBiZWZvcmUgcmV0LiAgKi8KKysgIGlmIChsZmVuY2VfYmVmb3JlX3JldCAhPSBsZmVuY2VfYmVmb3JlX3JldF9ub25lCisrICAgICAgJiYgKGkudG0uYmFzZV9vcGNvZGUgPT0gMHhjMgorKwkgIHx8IGkudG0uYmFzZV9vcGNvZGUgPT0gMHhjMworKwkgIHx8IGkudG0uYmFzZV9vcGNvZGUgPT0gMHhjYQorKwkgIHx8IGkudG0uYmFzZV9vcGNvZGUgPT0gMHhjYikpCisrICAgIHsKKysgICAgICBpZiAobGFzdF9pbnNuLmtpbmQgIT0gbGFzdF9pbnNuX290aGVyCisrCSAgJiYgbGFzdF9pbnNuLnNlZyA9PSBub3dfc2VnKQorKwl7CisrCSAgYXNfd2Fybl93aGVyZSAobGFzdF9pbnNuLmZpbGUsIGxhc3RfaW5zbi5saW5lLAorKwkJCSBfKCJgJXNgIHNraXBzIC1tbGZlbmNlLWJlZm9yZS1yZXQgb24gYCVzYCIpLAorKwkJCSBsYXN0X2luc24ubmFtZSwgaS50bS5uYW1lKTsKKysJICByZXR1cm47CisrCX0KKysgICAgICBpZiAobGZlbmNlX2JlZm9yZV9yZXQgPT0gbGZlbmNlX2JlZm9yZV9yZXRfb3IpCisrCXsKKysJICAvKiBvcmw6IDB4ODMwYzI0MDAuICAqLworKwkgIHAgPSBmcmFnX21vcmUgKChmbGFnX2NvZGUgPT0gQ09ERV82NEJJVCA/IDEgOiAwKSArIDQgKyAzKTsKKysJICBpZiAoZmxhZ19jb2RlID09IENPREVfNjRCSVQpCisrCSAgICAqcCsrID0gMHg0ODsKKysJICAqcCsrID0gMHg4MzsKKysJICAqcCsrID0gMHhjOworKwkgICpwKysgPSAweDI0OworKwkgICpwKysgPSAweDA7CisrCX0KKysgICAgICBlbHNlCisrCXsKKysJICBwID0gZnJhZ19tb3JlICgoZmxhZ19jb2RlID09IENPREVfNjRCSVQgPyAyIDogMCkgKyA2ICsgMyk7CisrCSAgLyogbm90bDogMHhmNzE0MjQuICAqLworKwkgIGlmIChmbGFnX2NvZGUgPT0gQ09ERV82NEJJVCkKKysJICAgICpwKysgPSAweDQ4OworKwkgICpwKysgPSAweGY3OworKwkgICpwKysgPSAweDE0OworKwkgICpwKysgPSAweDI0OworKwkgIC8qIG5vdGw6IDB4ZjcxNDI0LiAgKi8KKysJICBpZiAoZmxhZ19jb2RlID09IENPREVfNjRCSVQpCisrCSAgICAqcCsrID0gMHg0ODsKKysJICAqcCsrID0gMHhmNzsKKysJICAqcCsrID0gMHgxNDsKKysJICAqcCsrID0gMHgyNDsKKysJfQorKyAgICAgICpwKysgPSAweGY7CisrICAgICAgKnArKyA9IDB4YWU7CisrICAgICAgKnAgPSAweGU4OworKyAgICB9CisrfQorKworIC8qIFRoaXMgaXMgdGhlIGd1dHMgb2YgdGhlIG1hY2hpbmUtZGVwZW5kZW50IGFzc2VtYmxlci4gIExJTkUgcG9pbnRzIHRvIGEKKyAgICBtYWNoaW5lIGRlcGVuZGVudCBpbnN0cnVjdGlvbi4gIFRoaXMgZnVuY3Rpb24gaXMgc3VwcG9zZWQgdG8gZW1pdAorICAgIHRoZSBmcmFncy9ieXRlcyBpdCBhc3NlbWJsZXMgdG8uICAqLworQEAgLTQ2MjgsOSArNDkyNywxMyBAQCBtZF9hc3NlbWJsZSAoY2hhciAqbGluZSkKKyAgIGlmIChpLnJleCAhPSAwKQorICAgICBhZGRfcHJlZml4IChSRVhfT1BDT0RFIHwgaS5yZXgpOworIAorKyAgaW5zZXJ0X2xmZW5jZV9iZWZvcmUgKCk7CisrCisgICAvKiBXZSBhcmUgcmVhZHkgdG8gb3V0cHV0IHRoZSBpbnNuLiAgKi8KKyAgIG91dHB1dF9pbnNuICgpOworIAorKyAgaW5zZXJ0X2xmZW5jZV9hZnRlciAoKTsKKysKKyAgIGxhc3RfaW5zbi5zZWcgPSBub3dfc2VnOworIAorICAgaWYgKGkudG0ub3Bjb2RlX21vZGlmaWVyLmlzcHJlZml4KQorQEAgLTEyMjUwLDYgKzEyNTUzLDkgQEAgY29uc3QgY2hhciAqbWRfc2hvcnRvcHRzID0gInFuTzo6IjsKKyAjZGVmaW5lIE9QVElPTl9NQUxJR05fQlJBTkNIX1BSRUZJWF9TSVpFIChPUFRJT05fTURfQkFTRSArIDI4KQorICNkZWZpbmUgT1BUSU9OX01BTElHTl9CUkFOQ0ggKE9QVElPTl9NRF9CQVNFICsgMjkpCisgI2RlZmluZSBPUFRJT05fTUJSQU5DSEVTX1dJVEhfMzJCX0JPVU5EQVJJRVMgKE9QVElPTl9NRF9CQVNFICsgMzApCisrI2RlZmluZSBPUFRJT05fTUxGRU5DRV9BRlRFUl9MT0FEIChPUFRJT05fTURfQkFTRSArIDMxKQorKyNkZWZpbmUgT1BUSU9OX01MRkVOQ0VfQkVGT1JFX0lORElSRUNUX0JSQU5DSCAoT1BUSU9OX01EX0JBU0UgKyAzMikKKysjZGVmaW5lIE9QVElPTl9NTEZFTkNFX0JFRk9SRV9SRVQgKE9QVElPTl9NRF9CQVNFICsgMzMpCisgCisgc3RydWN0IG9wdGlvbiBtZF9sb25nb3B0c1tdID0KKyB7CitAQCAtMTIyODksNiArMTI1OTUsMTAgQEAgc3RydWN0IG9wdGlvbiBtZF9sb25nb3B0c1tdID0KKyAgIHsibWFsaWduLWJyYW5jaC1wcmVmaXgtc2l6ZSIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCBPUFRJT05fTUFMSUdOX0JSQU5DSF9QUkVGSVhfU0laRX0sCisgICB7Im1hbGlnbi1icmFuY2giLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgT1BUSU9OX01BTElHTl9CUkFOQ0h9LAorICAgeyJtYnJhbmNoZXMtd2l0aGluLTMyQi1ib3VuZGFyaWVzIiwgbm9fYXJndW1lbnQsIE5VTEwsIE9QVElPTl9NQlJBTkNIRVNfV0lUSF8zMkJfQk9VTkRBUklFU30sCisrICB7Im1sZmVuY2UtYWZ0ZXItbG9hZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCBPUFRJT05fTUxGRU5DRV9BRlRFUl9MT0FEfSwKKysgIHsibWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsCisrICAgT1BUSU9OX01MRkVOQ0VfQkVGT1JFX0lORElSRUNUX0JSQU5DSH0sCisrICB7Im1sZmVuY2UtYmVmb3JlLXJldCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCBPUFRJT05fTUxGRU5DRV9CRUZPUkVfUkVUfSwKKyAgIHsibWFtZDY0Iiwgbm9fYXJndW1lbnQsIE5VTEwsIE9QVElPTl9NQU1ENjR9LAorICAgeyJtaW50ZWw2NCIsIG5vX2FyZ3VtZW50LCBOVUxMLCBPUFRJT05fTUlOVEVMNjR9LAorICAge05VTEwsIG5vX2FyZ3VtZW50LCBOVUxMLCAwfQorQEAgLTEyNjY4LDYgKzEyOTc4LDQxIEBAIG1kX3BhcnNlX29wdGlvbiAoaW50IGMsIGNvbnN0IGNoYXIgKmFyZykKKyAgICAgICAgIGFzX2ZhdGFsIChfKCJpbnZhbGlkIC1tZmVuY2UtYXMtbG9jay1hZGQ9IG9wdGlvbjogYCVzJyIpLCBhcmcpOworICAgICAgIGJyZWFrOworIAorKyAgICBjYXNlIE9QVElPTl9NTEZFTkNFX0FGVEVSX0xPQUQ6CisrICAgICAgaWYgKHN0cmNhc2VjbXAgKGFyZywgInllcyIpID09IDApCisrCWxmZW5jZV9hZnRlcl9sb2FkID0gMTsKKysgICAgICBlbHNlIGlmIChzdHJjYXNlY21wIChhcmcsICJubyIpID09IDApCisrCWxmZW5jZV9hZnRlcl9sb2FkID0gMDsKKysgICAgICBlbHNlCisrICAgICAgICBhc19mYXRhbCAoXygiaW52YWxpZCAtbWxmZW5jZS1hZnRlci1sb2FkPSBvcHRpb246IGAlcyciKSwgYXJnKTsKKysgICAgICBicmVhazsKKysKKysgICAgY2FzZSBPUFRJT05fTUxGRU5DRV9CRUZPUkVfSU5ESVJFQ1RfQlJBTkNIOgorKyAgICAgIGlmIChzdHJjYXNlY21wIChhcmcsICJhbGwiKSA9PSAwKQorKwlsZmVuY2VfYmVmb3JlX2luZGlyZWN0X2JyYW5jaCA9IGxmZW5jZV9icmFuY2hfYWxsOworKyAgICAgIGVsc2UgaWYgKHN0cmNhc2VjbXAgKGFyZywgIm1lbW9yeSIpID09IDApCisrCWxmZW5jZV9iZWZvcmVfaW5kaXJlY3RfYnJhbmNoID0gbGZlbmNlX2JyYW5jaF9tZW1vcnk7CisrICAgICAgZWxzZSBpZiAoc3RyY2FzZWNtcCAoYXJnLCAicmVnaXN0ZXIiKSA9PSAwKQorKwlsZmVuY2VfYmVmb3JlX2luZGlyZWN0X2JyYW5jaCA9IGxmZW5jZV9icmFuY2hfcmVnaXN0ZXI7CisrICAgICAgZWxzZSBpZiAoc3RyY2FzZWNtcCAoYXJnLCAibm9uZSIpID09IDApCisrCWxmZW5jZV9iZWZvcmVfaW5kaXJlY3RfYnJhbmNoID0gbGZlbmNlX2JyYW5jaF9ub25lOworKyAgICAgIGVsc2UKKysgICAgICAgIGFzX2ZhdGFsIChfKCJpbnZhbGlkIC1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9IG9wdGlvbjogYCVzJyIpLAorKwkJICBhcmcpOworKyAgICAgIGJyZWFrOworKworKyAgICBjYXNlIE9QVElPTl9NTEZFTkNFX0JFRk9SRV9SRVQ6CisrICAgICAgaWYgKHN0cmNhc2VjbXAgKGFyZywgIm9yIikgPT0gMCkKKysJbGZlbmNlX2JlZm9yZV9yZXQgPSBsZmVuY2VfYmVmb3JlX3JldF9vcjsKKysgICAgICBlbHNlIGlmIChzdHJjYXNlY21wIChhcmcsICJub3QiKSA9PSAwKQorKwlsZmVuY2VfYmVmb3JlX3JldCA9IGxmZW5jZV9iZWZvcmVfcmV0X25vdDsKKysgICAgICBlbHNlIGlmIChzdHJjYXNlY21wIChhcmcsICJub25lIikgPT0gMCkKKysJbGZlbmNlX2JlZm9yZV9yZXQgPSBsZmVuY2VfYmVmb3JlX3JldF9ub25lOworKyAgICAgIGVsc2UKKysgICAgICAgIGFzX2ZhdGFsIChfKCJpbnZhbGlkIC1tbGZlbmNlLWJlZm9yZS1yZXQ9IG9wdGlvbjogYCVzJyIpLAorKwkJICBhcmcpOworKyAgICAgIGJyZWFrOworKworICAgICBjYXNlIE9QVElPTl9NUkVMQVhfUkVMT0NBVElPTlM6CisgICAgICAgaWYgKHN0cmNhc2VjbXAgKGFyZywgInllcyIpID09IDApCisgICAgICAgICBnZW5lcmF0ZV9yZWxheF9yZWxvY2F0aW9ucyA9IDE7CitAQCAtMTMwMjUsNiArMTMzNzAsMTUgQEAgbWRfc2hvd191c2FnZSAoRklMRSAqc3RyZWFtKQorICAgLW1icmFuY2hlcy13aXRoaW4tMzJCLWJvdW5kYXJpZXNcblwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgIGFsaWduIGJyYW5jaGVzIHdpdGhpbiAzMiBieXRlIGJvdW5kYXJ5XG4iKSk7CisgICBmcHJpbnRmIChzdHJlYW0sIF8oIlwKKysgIC1tbGZlbmNlLWFmdGVyLWxvYWQ9W25vfHllc10gKGRlZmF1bHQ6IG5vKVxuXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgbGZlbmNlIGFmdGVyIGxvYWRcbiIpKTsKKysgIGZwcmludGYgKHN0cmVhbSwgXygiXAorKyAgLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD1bbm9uZXxhbGx8cmVnaXN0ZXJ8bWVtb3J5XSAoZGVmYXVsdDogbm9uZSlcblwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbmVyYXRlIGxmZW5jZSBiZWZvcmUgaW5kaXJlY3QgbmVhciBicmFuY2hcbiIpKTsKKysgIGZwcmludGYgKHN0cmVhbSwgXygiXAorKyAgLW1sZmVuY2UtYmVmb3JlLXJldD1bbm9uZXxvcnxub3RdIChkZWZhdWx0OiBub25lKVxuXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuZXJhdGUgbGZlbmNlIGJlZm9yZSByZXRcbiIpKTsKKysgIGZwcmludGYgKHN0cmVhbSwgXygiXAorICAgLW1hbWQ2NCAgICAgICAgICAgICAgICAgYWNjZXB0IG9ubHkgQU1ENjQgSVNBIFtkZWZhdWx0XVxuIikpOworICAgZnByaW50ZiAoc3RyZWFtLCBfKCJcCisgICAtbWludGVsNjQgICAgICAgICAgICAgICBhY2NlcHQgb25seSBJbnRlbDY0IElTQVxuIikpOworQEAgLTEzMjU0LDYgKzEzNjA4LDE2IEBAIGkzODZfY29uc19hbGlnbiAoaW50IGlnbm9yZSBBVFRSSUJVVEVfVU5VU0VEKQorICAgICAgIGxhc3RfaW5zbi5raW5kID0gbGFzdF9pbnNuX2RpcmVjdGl2ZTsKKyAgICAgICBsYXN0X2luc24ubmFtZSA9ICJjb25zdGFudCBkaXJlY3RpdmUiOworICAgICAgIGxhc3RfaW5zbi5maWxlID0gYXNfd2hlcmUgKCZsYXN0X2luc24ubGluZSk7CisrICAgICAgaWYgKGxmZW5jZV9iZWZvcmVfcmV0ICE9IGxmZW5jZV9iZWZvcmVfcmV0X25vbmUpCisrCXsKKysJICBpZiAobGZlbmNlX2JlZm9yZV9pbmRpcmVjdF9icmFuY2ggIT0gbGZlbmNlX2JyYW5jaF9ub25lKQorKwkgICAgYXNfd2FybiAoXygiY29uc3RhbnQgZGlyZWN0aXZlIHNraXBzIC1tbGZlbmNlLWJlZm9yZS1yZXQgIgorKwkJICAgICAgICJhbmQgLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaCIpKTsKKysJICBlbHNlCisrCSAgICBhc193YXJuIChfKCJjb25zdGFudCBkaXJlY3RpdmUgc2tpcHMgLW1sZmVuY2UtYmVmb3JlLXJldCIpKTsKKysJfQorKyAgICAgIGVsc2UgaWYgKGxmZW5jZV9iZWZvcmVfaW5kaXJlY3RfYnJhbmNoICE9IGxmZW5jZV9icmFuY2hfbm9uZSkKKysJYXNfd2FybiAoXygiY29uc3RhbnQgZGlyZWN0aXZlIHNraXBzIC1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2giKSk7CisgICAgIH0KKyB9CisgCitkaWZmIC0tZ2l0IGEvZ2FzL2RvYy9jLWkzODYudGV4aSBiL2dhcy9kb2MvYy1pMzg2LnRleGkKK2luZGV4IGM1MzY3NTljYjM4Li4xZGQ5OWY5MWJiMCAxMDA2NDQKKy0tLSBhL2dhcy9kb2MvYy1pMzg2LnRleGkKKysrKyBiL2dhcy9kb2MvYy1pMzg2LnRleGkKK0BAIC00NjQsNiArNDY0LDQ5IEBAIG9uIGFuIGluc3RydWN0aW9uLiAgSXQgaXMgZXF1aXZhbGVudCB0bworIEBvcHRpb257LW1hbGlnbi1icmFuY2gtcHJlZml4LXNpemU9NX0uCisgVGhlIGRlZmF1bHQgZG9lc24ndCBhbGlnbiBicmFuY2hlcy4KKyAKKytAY2luZGV4IEBzYW1wey1tbGZlbmNlLWFmdGVyLWxvYWQ9fSBvcHRpb24sIGkzODYKKytAY2luZGV4IEBzYW1wey1tbGZlbmNlLWFmdGVyLWxvYWQ9fSBvcHRpb24sIHg4Ni02NAorK0BpdGVtIC1tbGZlbmNlLWFmdGVyLWxvYWQ9QHZhcntub30KKytAaXRlbXggLW1sZmVuY2UtYWZ0ZXItbG9hZD1AdmFye3llc30KKytUaGVzZSBvcHRpb25zIGNvbnRyb2wgd2hldGhlciB0aGUgYXNzZW1ibGVyIHNob3VsZCBnZW5lcmF0ZSBsZmVuY2UKKythZnRlciBsb2FkIGluc3RydWN0aW9ucy4gIEBvcHRpb257LW1sZmVuY2UtYWZ0ZXItbG9hZD1AdmFye3llc319IHdpbGwKKytnZW5lcmF0ZSBsZmVuY2UuICBAb3B0aW9uey1tbGZlbmNlLWFmdGVyLWxvYWQ9QHZhcntub319IHdpbGwgbm90IGdlbmVyYXRlCisrbGZlbmNlLCB3aGljaCBpcyB0aGUgZGVmYXVsdC4KKysKKytAY2luZGV4IEBzYW1wey1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9fSBvcHRpb24sIGkzODYKKytAY2luZGV4IEBzYW1wey1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9fSBvcHRpb24sIHg4Ni02NAorK0BpdGVtIC1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9QHZhcntub25lfQorK0BpdGVtIC1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9QHZhcnthbGx9CisrQGl0ZW0gLW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD1AdmFye3JlZ2lzdGVyfQorK0BpdGVteCAtbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPUB2YXJ7bWVtb3J5fQorK1RoZXNlIG9wdGlvbnMgY29udHJvbCB3aGV0aGVyIHRoZSBhc3NlbWJsZXIgc2hvdWxkIGdlbmVyYXRlIGxmZW5jZQorK2FmdGVyIGluZGlyZWN0IG5lYXIgYnJhbmNoIGluc3RydWN0aW9ucy4KKytAb3B0aW9uey1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9QHZhcnthbGx9fSB3aWxsIGdlbmVyYXRlIGxmZW5jZQorK2FmdGVyIGluZGlyZWN0IG5lYXIgYnJhbmNoIHZpYSByZWdpc3RlciBhbmQgaXNzdWUgYSB3YXJuaW5nIGJlZm9yZQorK2luZGlyZWN0IG5lYXIgYnJhbmNoIHZpYSBtZW1vcnkuCisrQG9wdGlvbnstbWxmZW5jZS1iZWZvcmUtaW5kaXJlY3QtYnJhbmNoPUB2YXJ7cmVnaXN0ZXJ9fSB3aWxsIGdlbmVyYXRlCisrbGZlbmNlIGFmdGVyIGluZGlyZWN0IG5lYXIgYnJhbmNoIHZpYSByZWdpc3Rlci4KKytAb3B0aW9uey1tbGZlbmNlLWJlZm9yZS1pbmRpcmVjdC1icmFuY2g9QHZhcnttZW1vcnl9fSB3aWxsIGlzc3VlIGEKKyt3YXJuaW5nIGJlZm9yZSBpbmRpcmVjdCBuZWFyIGJyYW5jaCB2aWEgbWVtb3J5LgorK0BvcHRpb257LW1sZmVuY2UtYmVmb3JlLWluZGlyZWN0LWJyYW5jaD1AdmFye25vbmV9fSB3aWxsIG5vdCBnZW5lcmF0ZQorK2xmZW5jZSBub3IgaXNzdWUgd2FybmluZywgd2hpY2ggaXMgdGhlIGRlZmF1bHQuICBOb3RlIHRoYXQgbGZlbmNlIHdvbid0CisrYmUgZ2VuZXJhdGVkIGJlZm9yZSBpbmRpcmVjdCBuZWFyIGJyYW5jaCB2aWEgcmVnaXN0ZXIgd2l0aAorK0BvcHRpb257LW1sZmVuY2UtYWZ0ZXItbG9hZD1AdmFye3llc319IHNpbmNlIGxmZW5jZSB3aWxsIGJlIGdlbmVyYXRlZAorK2FmdGVyIGxvYWRpbmcgYnJhbmNoIHRhcmdldCByZWdpc3Rlci4KKysKKytAY2luZGV4IEBzYW1wey1tbGZlbmNlLWJlZm9yZS1yZXQ9fSBvcHRpb24sIGkzODYKKytAY2luZGV4IEBzYW1wey1tbGZlbmNlLWJlZm9yZS1yZXQ9fSBvcHRpb24sIHg4Ni02NAorK0BpdGVtIC1tbGZlbmNlLWJlZm9yZS1yZXQ9QHZhcntub25lfQorK0BpdGVtIC1tbGZlbmNlLWJlZm9yZS1yZXQ9QHZhcntvcn0KKytAaXRlbXggLW1sZmVuY2UtYmVmb3JlLXJldD1AdmFye25vdH0KKytUaGVzZSBvcHRpb25zIGNvbnRyb2wgd2hldGhlciB0aGUgYXNzZW1ibGVyIHNob3VsZCBnZW5lcmF0ZSBsZmVuY2UKKytiZWZvcmUgcmV0LiAgQG9wdGlvbnstbWxmZW5jZS1iZWZvcmUtcmV0PUB2YXJ7b3J9fSB3aWxsIGdlbmVyYXRlCisrZ2VuZXJhdGUgb3IgaW5zdHJ1Y3Rpb24gd2l0aCBsZmVuY2UuCisrQG9wdGlvbnstbWxmZW5jZS1iZWZvcmUtcmV0PUB2YXJ7bm90fX0gd2lsbCBnZW5lcmF0ZSBub3QgaW5zdHJ1Y3Rpb24KKyt3aXRoIGxmZW5jZS4KKytAb3B0aW9uey1tbGZlbmNlLWJlZm9yZS1yZXQ9QHZhcntub25lfX0gd2lsbCBub3QgZ2VuZXJhdGUgbGZlbmNlLAorK3doaWNoIGlzIHRoZSBkZWZhdWx0LgorKworIEBjaW5kZXggQHNhbXB7LW14ODYtdXNlZC1ub3RlPX0gb3B0aW9uLCBpMzg2CisgQGNpbmRleCBAc2FtcHstbXg4Ni11c2VkLW5vdGU9fSBvcHRpb24sIHg4Ni02NAorIEBpdGVtIC1teDg2LXVzZWQtbm90ZT1AdmFye25vfQorLS0gCisyLjE4LjIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMzIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjMyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4OTMxNTkxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMzIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1yZXF1aXJlIGJpbnV0aWxzLmluYwotcmVxdWlyZSBiaW51dGlscy0ke1BWfS5pbmMKLQotREVQRU5EUyArPSAiZmxleCBiaXNvbiB6bGliIgotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1zeXNyb290PS8gXAotICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliYmZkIFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmliZXJ0eSBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtc2hhcmVkIFwKLSAgICAgICAgICAgICAgICAtLXdpdGgtc3lzdGVtLXpsaWIgXAotICAgICAgICAgICAgICAgICIKLQotRVhUUkFfT0VNQUtFX2FwcGVuZF9saWJjLW11c2wgPSAiXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RfY3ZfZnVuY19nbnVnZXR0ZXh0MV9saWJjPXllcyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHQyX2xpYmM9eWVzIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWVuYWJsZS10YXJnZXRzPWFsbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLTY0LWJpdC1iZmQgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWVuYWJsZS1pbnN0YWxsLWxpYmliZXJ0eSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliYmZkIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXdlcnJvciIKLQotIyBnY2M5LjAgZW5kIHVwIG1pcy1jb21waWxpbmcgbGliYmZkLnNvIHdpdGggTzIgd2hpY2ggdGhlbiBjcmFzaGVzIG9uIHRhcmdldAotIyBTbyByZW1vdmUgLU8yIGFuZCB1c2UgLU9zIGFzIHdvcmthcm91bmQKLVNFTEVDVEVEX09QVElNSVpBVElPTl9yZW1vdmVfbWlwc2FyY2ggPSAiLU8yIgotU0VMRUNURURfT1BUSU1JWkFUSU9OX2FwcGVuZF9taXBzYXJjaCA9ICIgLU9zIgotCi1kb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSAoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCSMgSW5zdGFsbCB0aGUgbGliaWJlcnR5IGhlYWRlcgotCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0KLQlpbnN0YWxsIC1tIDY0NCAke1N9L2luY2x1ZGUvYW5zaWRlY2wuaCAke0R9JHtpbmNsdWRlZGlyfQotCWluc3RhbGwgLW0gNjQ0ICR7U30vaW5jbHVkZS9saWJpYmVydHkuaCAke0R9JHtpbmNsdWRlZGlyfQotCi0JIyBXZSBvbmx5IHdhbnQgbGliaWJlcnR5LCBsaWJiZmQgYW5kIGxpYm9wY29kZXMKLQlybSAtcmYgJHtEfSR7YmluZGlyfQotCXJtIC1yZiAke0R9JHtwcmVmaXh9LyR7VEFSR0VUX1NZU30KLQlybSAtcmYgJHtEfSR7cHJlZml4fS9saWIvbGRzY3JpcHRzCi0Jcm0gLXJmICR7RH0ke3ByZWZpeH0vc2hhcmUvaW5mbwotCXJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL2xvY2FsZQotCXJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL21hbgotCXJtZGlyICR7RH0ke3ByZWZpeH0vc2hhcmUgfHwgOgotCXJtZGlyICR7RH0vJHtsaWJkaXJ9L2djYy1saWIgfHwgOgotCXJtZGlyICR7RH0vJHtsaWJkaXJ9NjQvZ2NjLWxpYiB8fCA6Ci0Jcm1kaXIgJHtEfS8ke2xpYmRpcn0gfHwgOgotCXJtZGlyICR7RH0vJHtsaWJkaXJ9NjQgfHwgOgotfQotCi0jIFNwbGl0IG91dCBsaWJiZmQtKi5zbyBzbyBpbmNsdWRpbmcgcGVyZiBkb2Vzbid0IGluY2x1ZGUgZXh0cmEgc3R1ZmYKLVBBQ0tBR0VfQkVGT1JFX1BOICs9ICJsaWJiZmQiCi1GSUxFU19saWJiZmQgPSAiJHtsaWJkaXJ9L2xpYmJmZC0qLnNvIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2JpbnV0aWxzL2JpbnV0aWxzXzIuMzQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjM0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlNjQ1ZTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaW51dGlscy9iaW51dGlsc18yLjM0LmJiCkBAIC0wLDAgKzEsNjUgQEAKK3JlcXVpcmUgYmludXRpbHMuaW5jCityZXF1aXJlIGJpbnV0aWxzLSR7UFZ9LmluYworCitERVBFTkRTICs9ICJmbGV4IGJpc29uIHpsaWIiCisKK0VYVFJBX09FQ09ORiArPSAiLS13aXRoLXN5c3Jvb3Q9LyBcCisgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJiZmQgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliaWJlcnR5IFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1zaGFyZWQgXAorICAgICAgICAgICAgICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCisgICAgICAgICAgICAgICAgIgorCitFWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBndF9jdl9mdW5jX2dudWdldHRleHQxX2xpYmM9eWVzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGd0X2N2X2Z1bmNfZ251Z2V0dGV4dDJfbGliYz15ZXMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiCitFWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0tZW5hYmxlLXRhcmdldHM9YWxsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtNjQtYml0LWJmZCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZW5hYmxlLWluc3RhbGwtbGliaWJlcnR5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1lbmFibGUtaW5zdGFsbC1saWJiZmQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ2RiIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWdkYnNlcnZlciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1saWJkZWNudW1iZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtcmVhZGxpbmUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtc2ltIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLXdlcnJvciIKKworIyBnY2M5LjAgZW5kIHVwIG1pcy1jb21waWxpbmcgbGliYmZkLnNvIHdpdGggTzIgd2hpY2ggdGhlbiBjcmFzaGVzIG9uIHRhcmdldAorIyBTbyByZW1vdmUgLU8yIGFuZCB1c2UgLU9zIGFzIHdvcmthcm91bmQKK1NFTEVDVEVEX09QVElNSVpBVElPTl9yZW1vdmVfbWlwc2FyY2ggPSAiLU8yIgorU0VMRUNURURfT1BUSU1JWkFUSU9OX2FwcGVuZF9taXBzYXJjaCA9ICIgLU9zIgorCitkb19pbnN0YWxsX2NsYXNzLW5hdGl2ZSAoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCSMgSW5zdGFsbCB0aGUgbGliaWJlcnR5IGhlYWRlcgorCWluc3RhbGwgLWQgJHtEfSR7aW5jbHVkZWRpcn0KKwlpbnN0YWxsIC1tIDY0NCAke1N9L2luY2x1ZGUvYW5zaWRlY2wuaCAke0R9JHtpbmNsdWRlZGlyfQorCWluc3RhbGwgLW0gNjQ0ICR7U30vaW5jbHVkZS9saWJpYmVydHkuaCAke0R9JHtpbmNsdWRlZGlyfQorCisJIyBXZSBvbmx5IHdhbnQgbGliaWJlcnR5LCBsaWJiZmQgYW5kIGxpYm9wY29kZXMKKwlybSAtcmYgJHtEfSR7YmluZGlyfQorCXJtIC1yZiAke0R9JHtwcmVmaXh9LyR7VEFSR0VUX1NZU30KKwlybSAtcmYgJHtEfSR7cHJlZml4fS9saWIvbGRzY3JpcHRzCisJcm0gLXJmICR7RH0ke3ByZWZpeH0vc2hhcmUvaW5mbworCXJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL2xvY2FsZQorCXJtIC1yZiAke0R9JHtwcmVmaXh9L3NoYXJlL21hbgorCXJtZGlyICR7RH0ke3ByZWZpeH0vc2hhcmUgfHwgOgorCXJtZGlyICR7RH0vJHtsaWJkaXJ9L2djYy1saWIgfHwgOgorCXJtZGlyICR7RH0vJHtsaWJkaXJ9NjQvZ2NjLWxpYiB8fCA6CisJcm1kaXIgJHtEfS8ke2xpYmRpcn0gfHwgOgorCXJtZGlyICR7RH0vJHtsaWJkaXJ9NjQgfHwgOgorfQorCisjIFNwbGl0IG91dCBsaWJiZmQtKi5zbyBzbyBpbmNsdWRpbmcgcGVyZiBkb2Vzbid0IGluY2x1ZGUgZXh0cmEgc3R1ZmYKK1BBQ0tBR0VfQkVGT1JFX1BOICs9ICJsaWJiZmQiCitGSUxFU19saWJiZmQgPSAiJHtsaWJkaXJ9L2xpYmJmZC0qLnNvLiogJHtsaWJkaXJ9L2xpYmJmZC0qLnNvIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAgIiBmaWxlOi8vMDAwMy1iaW51dGlscy1uYXRpdmVzZGstU2VhcmNoLWZvci1hbHRlcm5hdGl2ZS1sZC5zby5jb25mLnBhdGNoICIKKworVVNFX0FMVEVSTkFUSVZFU19GT1JfY2xhc3MtbmF0aXZlc2RrID0gIiIKK0ZJTEVTXyR7UE59X2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiICR7YmluZGlyfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uXzMuNC4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NmYwZjkwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uXzMuNC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotU1VNTUFSWSA9ICJHTlUgUHJvamVjdCBwYXJzZXIgZ2VuZXJhdG9yICh5YWNjIHJlcGxhY2VtZW50KSIKLURFU0NSSVBUSU9OID0gIkJpc29uIGlzIGEgZ2VuZXJhbC1wdXJwb3NlIHBhcnNlciBnZW5lcmF0b3IgdGhhdCBjb252ZXJ0cyBhbiBhbm5vdGF0ZWQgY29udGV4dC1mcmVlIGdyYW1tYXIgaW50byBcCi1hbiBMQUxSKDEpIG9yIEdMUiBwYXJzZXIgZm9yIHRoYXQgZ3JhbW1hci4gIEJpc29uIGlzIHVwd2FyZCBjb21wYXRpYmxlIHdpdGggWWFjYzogYWxsIHByb3Blcmx5LXdyaXR0ZW4gWWFjYyBcCi1ncmFtbWFycyBvdWdodCB0byB3b3JrIHdpdGggQmlzb24gd2l0aCBubyBjaGFuZ2UuIEFueW9uZSBmYW1pbGlhciB3aXRoIFlhY2Mgc2hvdWxkIGJlIGFibGUgdG8gdXNlIEJpc29uIHdpdGggXAotbGl0dGxlIHRyb3VibGUuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2Jpc29uLyIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1ERVBFTkRTID0gImJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2Jpc29uL2Jpc29uLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGQtd2l0aC1iaXNvbmxvY2FsZWRpci5wYXRjaCBcCi0iCi0KLSMgTm8gcG9pbnQgaW4gaGFyZGNvZGluZyBwYXRoIHRvIG00LCBqdXN0IHVzZSBQQVRICi1FWFRSQV9PRUNPTkYgKz0gIk00PW00IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDFjZWI5ZGZkZTJkMDNiMjRhNGMxMTM3ZjdmMWI1NzIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjdkMDU1MzQ2OTk3MzVkYzY5ZTg2YWRkNWI4MDhkNmNiMzU5MDBhZDNmZDYzZmE4MmUzZWI2NDQzMzZhYmZhMCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCi0KLSMgVGhlIGF1dG9tYXRpYyBtNCBwYXRoIGRldGVjdGlvbiBnZXRzIGNvbmZ1c2VkLCBzbyBmb3JjZSB0aGUgcmlnaHQgdmFsdWUKLWFjcGF0aHMgPSAiLUkgJHtTfS9tNCIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCWZvciBpIGluIG1mY2FsYyBjYWxjKysgcnBjYWxjOyBkbyBta2RpciAtcCAke0J9L2V4YW1wbGVzLyRpOyBkb25lCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9iaXNvbiBcCi0JCUJJU09OX1BLR0RBVEFESVI9JHtTVEFHSU5HX0RBVEFESVJfTkFUSVZFfS9iaXNvbgotfQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2Jpc29uIFwKLQkJQklTT05fUEtHREFUQURJUj0ke2RhdGFkaXJ9L2Jpc29uCi19Ci1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjUuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Jpc29uL2Jpc29uXzMuNS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YzM0ZjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9iaXNvbi9iaXNvbl8zLjUuNC5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIkdOVSBQcm9qZWN0IHBhcnNlciBnZW5lcmF0b3IgKHlhY2MgcmVwbGFjZW1lbnQpIgorREVTQ1JJUFRJT04gPSAiQmlzb24gaXMgYSBnZW5lcmFsLXB1cnBvc2UgcGFyc2VyIGdlbmVyYXRvciB0aGF0IGNvbnZlcnRzIGFuIGFubm90YXRlZCBjb250ZXh0LWZyZWUgZ3JhbW1hciBpbnRvIFwKK2FuIExBTFIoMSkgb3IgR0xSIHBhcnNlciBmb3IgdGhhdCBncmFtbWFyLiAgQmlzb24gaXMgdXB3YXJkIGNvbXBhdGlibGUgd2l0aCBZYWNjOiBhbGwgcHJvcGVybHktd3JpdHRlbiBZYWNjIFwKK2dyYW1tYXJzIG91Z2h0IHRvIHdvcmsgd2l0aCBCaXNvbiB3aXRoIG5vIGNoYW5nZS4gQW55b25lIGZhbWlsaWFyIHdpdGggWWFjYyBzaG91bGQgYmUgYWJsZSB0byB1c2UgQmlzb24gd2l0aCBcCitsaXR0bGUgdHJvdWJsZS4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvYmlzb24vIgorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorU0VDVElPTiA9ICJkZXZlbCIKK0RFUEVORFMgPSAiYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vYmlzb24vYmlzb24tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2FkZC13aXRoLWJpc29ubG9jYWxlZGlyLnBhdGNoIFwKKyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0YzE3ZTk5ODgxOTc4ZmEzMmMwNTkzM2M1MjYyNDU3ZmE1YjJiNjExNjY4NDU0ZjhkYzJhNjk1Y2Q2YjM3MjBjIgorCisjIE5vIHBvaW50IGluIGhhcmRjb2RpbmcgcGF0aCB0byBtNCwganVzdCB1c2UgUEFUSAorRVhUUkFfT0VDT05GICs9ICJNND1tNCIKKworIyBSZXNldCBhbnkgbG9hZGF2ZyBzZXQgdmlhIGVudmlyb25tZW50LCBpdCBicmVha3MgcGFyYWxsZWwgYnVpbGQKKyMgfCAuLi9iaXNvbi0zLjUuMi9saWIvdW5pd2lkdGgvd2lkdGguYzoyMToxMDogZmF0YWwgZXJyb3I6IHVuaXdpZHRoLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKKyMgfCAgI2luY2x1ZGUgInVuaXdpZHRoLmgiCisjIHwgICAgICAgICAgIF5+fn5+fn5+fn5+fgorRVhUUkFfT0VNQUtFX2FwcGVuZCA9ICIgLWwiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbworCisjIFRoZSBhdXRvbWF0aWMgbTQgcGF0aCBkZXRlY3Rpb24gZ2V0cyBjb25mdXNlZCwgc28gZm9yY2UgdGhlIHJpZ2h0IHZhbHVlCithY3BhdGhzID0gIi1JICR7U30vbTQiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKwlmb3IgaSBpbiBtZmNhbGMgY2FsYysrIHJwY2FsYzsgZG8gbWtkaXIgLXAgJHtCfS9leGFtcGxlcy8kaTsgZG9uZQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vYmlzb24gXAorCQlCSVNPTl9QS0dEQVRBRElSPSR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYmlzb24KK30KK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9iaXNvbiBcCisJCUJJU09OX1BLR0RBVEFESVI9JHtkYXRhZGlyfS9iaXNvbgorfQorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvYnRyZnMtdG9vbHMvYnRyZnMtdG9vbHNfNS4zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc181LjMuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTQ0YzBiYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc181LjMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLVNVTU1BUlkgPSAiQ2hlY2tzdW1taW5nIENvcHkgb24gV3JpdGUgRmlsZXN5c3RlbSB1dGlsaXRpZXMiCi1ERVNDUklQVElPTiA9ICJCdHJmcyBpcyBhIG5ldyBjb3B5IG9uIHdyaXRlIGZpbGVzeXN0ZW0gZm9yIExpbnV4IGFpbWVkIGF0IFwKLWltcGxlbWVudGluZyBhZHZhbmNlZCBmZWF0dXJlcyB3aGlsZSBmb2N1c2luZyBvbiBmYXVsdCB0b2xlcmFuY2UsIHJlcGFpciBhbmQgXAotZWFzeSBhZG1pbmlzdHJhdGlvbi4gXAotVGhpcyBwYWNrYWdlIGNvbnRhaW5zIHV0aWxpdGllcyAobWtmcywgZnNjaywgYnRyZnNjdGwpIHVzZWQgdG8gd29yayB3aXRoIFwKLWJ0cmZzIGFuZCBhbiB1dGlsaXR5IChidHJmcy1jb252ZXJ0KSB0byBtYWtlIGEgYnRyZnMgZmlsZXN5c3RlbSBmcm9tIGFuIGV4dDMuIgotCi1IT01FUEFHRSA9ICJodHRwczovL2J0cmZzLndpa2kua2VybmVsLm9yZyIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZjYjAyZGM1NTJhMDQxZGVlMjdlNGI4NWM3Mzk2MDY3IgotU0VDVElPTiA9ICJiYXNlIgotREVQRU5EUyA9ICJ1dGlsLWxpbnV4IGF0dHIgZTJmc3Byb2dzIGx6byBhY2wiCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHVkZXYiCi1SREVQRU5EU18ke1BOfSA9ICJsaWJnY2MiCi0KLVNSQ1JFViA9ICJmODJlNTY5YjMzYzNjMWNmZDRmOGY0MDUwODVmZjhkNDM5YTBhOTE1IgotU1JDX1VSSSA9ICJnaXQ6Ly9naXQua2VybmVsLm9yZy9wdWIvc2NtL2xpbnV4L2tlcm5lbC9naXQva2RhdmUvYnRyZnMtcHJvZ3MuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWEtcG9zc2liaWxpdHktdG8tc3BlY2lmeS13aGVyZS1weXRob24tbW9kdWxlcy1hci5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInB5dGhvbiIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLWRvY3VtZW50YXRpb24sIC0tZGlzYWJsZS1kb2N1bWVudGF0aW9uLCBhc2NpaWRvYy1uYXRpdmUgeG1sdG8tbmF0aXZlIgotUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0tZW5hYmxlLXB5dGhvbiwtLWRpc2FibGUtcHl0aG9uLHB5dGhvbjMtc2V0dXB0b29scy1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW3pzdGRdID0gIi0tZW5hYmxlLXpzdGQsLS1kaXNhYmxlLXpzdGQsenN0ZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIHBrZ2NvbmZpZyBtYW5wYWdlcwotaW5oZXJpdCAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdweXRob24nLCAnZGlzdHV0aWxzMy1iYXNlJywgJycsIGQpfQotCi1DTEVBTkJST0tFTiA9ICIxIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLWJhY2t0cmFjZSAiCi1FWFRSQV9QWVRIT05fQ0ZMQUdTID0gIiR7REVCVUdfUFJFRklYX01BUH0iCi1FWFRSQV9QWVRIT05fQ0ZMQUdTX2NsYXNzLW5hdGl2ZSA9ICIiCi1FWFRSQV9QWVRIT05fTERGTEFHUyA9ICIke0xERkxBR1N9IgotRVhUUkFfT0VNQUtFID0gIlY9MSAnRVhUUkFfUFlUSE9OX0NGTEFHUz0ke0VYVFJBX1BZVEhPTl9DRkxBR1N9JyAnRVhUUkFfUFlUSE9OX0xERkxBR1M9JHtFWFRSQV9QWVRIT05fTERGTEFHU30nIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQkjIFVwc3RyZWFtIGRvZXNuJ3Qgc2hpcCB0aGlzIGFuZCBhdXRvcmVjb25mIHdvbid0IGluc3RhbGwgaXQgYXMgYXV0b21ha2UgaXNuJ3QgdXNlZC4KLQlta2RpciAtcCAke1N9L2NvbmZpZwotCWNwIC1mICQoYXV0b21ha2UgLS1wcmludC1saWJkaXIpL2luc3RhbGwtc2ggJHtTfS9jb25maWcvCi19Ci0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignUEFDS0FHRUNPTkZJRycsICdweXRob24nLCBkKX0iIF07IHRoZW4KLSAgICAgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAnUFlUSE9OX1NJVEVQQUNLQUdFU19ESVI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIGluc3RhbGxfcHl0aG9uCi0gICAgZmkKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc181LjQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2J0cmZzLXRvb2xzL2J0cmZzLXRvb2xzXzUuNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkYzk3MWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9idHJmcy10b29scy9idHJmcy10b29sc181LjQuMS5iYgpAQCAtMCwwICsxLDUyIEBACitTVU1NQVJZID0gIkNoZWNrc3VtbWluZyBDb3B5IG9uIFdyaXRlIEZpbGVzeXN0ZW0gdXRpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAiQnRyZnMgaXMgYSBuZXcgY29weSBvbiB3cml0ZSBmaWxlc3lzdGVtIGZvciBMaW51eCBhaW1lZCBhdCBcCitpbXBsZW1lbnRpbmcgYWR2YW5jZWQgZmVhdHVyZXMgd2hpbGUgZm9jdXNpbmcgb24gZmF1bHQgdG9sZXJhbmNlLCByZXBhaXIgYW5kIFwKK2Vhc3kgYWRtaW5pc3RyYXRpb24uIFwKK1RoaXMgcGFja2FnZSBjb250YWlucyB1dGlsaXRpZXMgKG1rZnMsIGZzY2ssIGJ0cmZzY3RsKSB1c2VkIHRvIHdvcmsgd2l0aCBcCitidHJmcyBhbmQgYW4gdXRpbGl0eSAoYnRyZnMtY29udmVydCkgdG8gbWFrZSBhIGJ0cmZzIGZpbGVzeXN0ZW0gZnJvbSBhbiBleHQzLiIKKworSE9NRVBBR0UgPSAiaHR0cHM6Ly9idHJmcy53aWtpLmtlcm5lbC5vcmciCisKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mY2IwMmRjNTUyYTA0MWRlZTI3ZTRiODVjNzM5NjA2NyIKK1NFQ1RJT04gPSAiYmFzZSIKK0RFUEVORFMgPSAidXRpbC1saW51eCBhdHRyIGUyZnNwcm9ncyBsem8gYWNsIgorREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB1ZGV2IgorUkRFUEVORFNfJHtQTn0gPSAibGliZ2NjIgorCitTUkNSRVYgPSAiM2ZjMjMyNmQzNDc0YTVlNGRmMjQ0OWY1ZTMwNDNmNzI5ODUwMTMzNCIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2tkYXZlL2J0cmZzLXByb2dzLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1hLXBvc3NpYmlsaXR5LXRvLXNwZWNpZnktd2hlcmUtcHl0aG9uLW1vZHVsZXMtYXIucGF0Y2ggXAorICAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJweXRob24iCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1kb2N1bWVudGF0aW9uLCAtLWRpc2FibGUtZG9jdW1lbnRhdGlvbiwgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob24sLS1kaXNhYmxlLXB5dGhvbixweXRob24zLXNldHVwdG9vbHMtbmF0aXZlIgorUEFDS0FHRUNPTkZJR1t6c3RkXSA9ICItLWVuYWJsZS16c3RkLC0tZGlzYWJsZS16c3RkLHpzdGQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwa2djb25maWcgbWFucGFnZXMKK2luaGVyaXQgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ2Rpc3R1dGlsczMtYmFzZScsICcnLCBkKX0KKworQ0xFQU5CUk9LRU4gPSAiMSIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1iYWNrdHJhY2UgIgorRVhUUkFfUFlUSE9OX0NGTEFHUyA9ICIke0RFQlVHX1BSRUZJWF9NQVB9IgorRVhUUkFfUFlUSE9OX0NGTEFHU19jbGFzcy1uYXRpdmUgPSAiIgorRVhUUkFfUFlUSE9OX0xERkxBR1MgPSAiJHtMREZMQUdTfSIKK0VYVFJBX09FTUFLRSA9ICJWPTEgJ0VYVFJBX1BZVEhPTl9DRkxBR1M9JHtFWFRSQV9QWVRIT05fQ0ZMQUdTfScgJ0VYVFJBX1BZVEhPTl9MREZMQUdTPSR7RVhUUkFfUFlUSE9OX0xERkxBR1N9JyIKKworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisJIyBVcHN0cmVhbSBkb2Vzbid0IHNoaXAgdGhpcyBhbmQgYXV0b3JlY29uZiB3b24ndCBpbnN0YWxsIGl0IGFzIGF1dG9tYWtlIGlzbid0IHVzZWQuCisJbWtkaXIgLXAgJHtTfS9jb25maWcKKwljcCAtZiAkKGF1dG9tYWtlIC0tcHJpbnQtbGliZGlyKS9pbnN0YWxsLXNoICR7U30vY29uZmlnLworfQorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgZCl9IiBdOyB0aGVuCisgICAgICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgJ1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9JyBpbnN0YWxsX3B5dGhvbgorICAgIGZpCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2NjYWNoZV8zLjcuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NjYWNoZS9jY2FjaGVfMy43LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2YTY4MmUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2NjYWNoZV8zLjcuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBjY2FjaGUuaW5jCi0KLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5hZG9jO21kNT0wMDk0YzU5MDM5Y2VjNjZiOGE0YzkwNTIwNDMzMzUxNCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdiZTYyZWE2ZTE5MDk0MWE4YzEyYTNkNTM5NGZkOTI2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM1NTk1NWE2MTU2MmM1M2M0ZWM0NjY5ZTFjOTI3MDhiMDAwOGY1MGQyMTRiMjdmMDdhODdjZjRhMWZhNmIwMWUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jY2FjaGUvY2NhY2hlXzMuNy43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2NjYWNoZV8zLjcuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZTczNjJiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2NhY2hlL2NjYWNoZV8zLjcuNy5iYgpAQCAtMCwwICsxLDcgQEAKK3JlcXVpcmUgY2NhY2hlLmluYworCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UuYWRvYzttZDU9MjJkNTE0ZGJjMDFmZGY5YTk3ODQzMzRiNmI1OTQxN2EiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI1MDBkN2JkOWViYzZlZTMxMDVkN2ZjMzMyYzFlZjM5NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5YjYxZjdmYWIyZWMxNTMwNWVlODM4MmIwMzM2NTUwMzIzMmRmYjA0YjU3NDE0ZTdiMDQzMzc2OGQ1MzBmYThhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY2RydG9vbHMvY2RydG9vbHMtbmF0aXZlXzMuMDEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jZHJ0b29scy9jZHJ0b29scy1uYXRpdmVfMy4wMS5iYgppbmRleCAxYzYwMmU3Li5iNTY4YmIzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jZHJ0b29scy9jZHJ0b29scy1uYXRpdmVfMy4wMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jZHJ0b29scy9jZHJ0b29scy1uYXRpdmVfMy4wMS5iYgpAQCAtOCw3ICs4LDcgQEAKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTMyZjY4MTcwYmU0MjRjMmNkNjQ4MDQzMzc3MjZiMzEyIgogCiBTUkNfVVJJID0gIiBcCi0JJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvY2RydG9vbHMvY2RydG9vbHMtJHtSRUFMUFZ9LnRhci5iejIgXAorCSR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0L2NkcnRvb2xzL2NkcnRvb2xzLSR7UFZ9LnRhci5iejIgXAogCWZpbGU6Ly8wMDAxLURvbi10LXNldC11aWQtZ2lkLWR1cmluZy1pbnN0YWxsLnBhdGNoIFwKIAkiCiBVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKQEAgLTIzLDExICsyMyw2IEBACiAKIGluaGVyaXQgbmF0aXZlCiAKLVBWID0gIjMuMDFhMzErcmVhbGx5My4wMSIKLVJFQUxQViA9ICIzLjAxIgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59LSR7UkVBTFBWfSIKLQogZG9faW5zdGFsbCgpIHsKIAltYWtlIGluc3RhbGwgR01BS0VfTk9XQVJOPXRydWUgSU5TX0JBU0U9JHtwcmVmaXh9IERFU1RESVI9JHtEfQogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UtbmF0aXZlXzMuMTUuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLW5hdGl2ZV8zLjE2LjUuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLW5hdGl2ZV8zLjE1LjMuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLW5hdGl2ZV8zLjE2LjUuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLmluYwppbmRleCBkOGE5ZTJkLi4wOTk0OWI1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UuaW5jCkBAIC0yMiw3ICsyMiw3IEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDA0LUZhaWwtc2lsZW50bHktaWYtc3lzdGVtLVF0LWluc3RhbGxhdGlvbi1pcy1icm9rZW4ucGF0Y2ggXAogIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiYmY2OWU4MzdlZWRhM2RkNGU5ZjUyY2ZmY2Y1NDZhMTEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTM5NTgyNDNhMDEzNjViMDU2NTJmYTAxYjIxZDQwZmE4MzRmNzBhOWUzMGVmYTY5YzAyNjA0ZTY0ZjU4YjhmNSIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkODZjY2FmM2QyNDYyYjZiNTk0NzkxOWFiZTViOWYxNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1Zjc2MGI1MGI4ZWNjOWMwYzM3MTM1ZmFlNWZiZjAwYTJmZWY2MTcwNTlhYTlkNjFjMWJiOTE2NTNlNWE4YmZjIgogCiBVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJjbWFrZS0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtQ01ha2VEZXRlcm1pbmVTeXN0ZW0tdXNlLW9lLWVudmlyb25tZW50LXZhcnMtdG8tbG9hZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDEtQ01ha2VEZXRlcm1pbmVTeXN0ZW0tdXNlLW9lLWVudmlyb25tZW50LXZhcnMtdG8tbG9hZC5wYXRjaAppbmRleCAzNzIwODMzLi5lMmE1OGQyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAxLUNNYWtlRGV0ZXJtaW5lU3lzdGVtLXVzZS1vZS1lbnZpcm9ubWVudC12YXJzLXRvLWxvYWQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMS1DTWFrZURldGVybWluZVN5c3RlbS11c2Utb2UtZW52aXJvbm1lbnQtdmFycy10by1sb2FkLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAxZTY3YzNmZTUyYzZjNTFjMDBjZjFlYmIwYmZjMzBjN2E1ZWY5ZmRiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhYjI3MmQ3MDNjZTc3ZjMyM2FhMTI4NTUyNjU1OWM5ZWZiZjg1ODM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ29keSBQIFNjaGFmZXIgPGRldkBjb2R5cHMuY29tPgogRGF0ZTogVGh1LCAyNyBBcHIgMjAxNyAxMTozNTowNSAtMDQwMAogU3ViamVjdDogW1BBVENIXSBDTWFrZURldGVybWluZVN5c3RlbTogdXNlIG9lIGVudmlyb25tZW50IHZhcnMgdG8gbG9hZCBkZWZhdWx0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAyLWNtYWtlLVByZXZlbnQtdGhlLWRldGVjdGlvbi1vZi1RdDUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDAyLWNtYWtlLVByZXZlbnQtdGhlLWRldGVjdGlvbi1vZi1RdDUucGF0Y2gKaW5kZXggZGIyMjllNi4uNjFjOGYyNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMi1jbWFrZS1QcmV2ZW50LXRoZS1kZXRlY3Rpb24tb2YtUXQ1LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDItY21ha2UtUHJldmVudC10aGUtZGV0ZWN0aW9uLW9mLVF0NS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNWNiNmM4NjY5NmY4NDIyNzQwNDNlN2Q0MDZmODRiM2VhZDFjMzZlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNWE4NmM3ZmE5ODdiZDQwN2YyMjgxNzZkZjJhYmVmZmQwMTViZTllYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CiBEYXRlOiBXZWQsIDE3IEphbiAyMDE4IDEwOjAyOjE0IC0wMjAwCiBTdWJqZWN0OiBbUEFUQ0hdIGNtYWtlOiBQcmV2ZW50IHRoZSBkZXRlY3Rpb24gb2YgUXQ1CkBAIC0zOCwxMCArMzgsMTAgQEAKICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtRdDVXaWRnZXRzX0lOQ0xVREVfRElSU30pCiAgICBhZGRfZGVmaW5pdGlvbnMoJHtRdDVXaWRnZXRzX0RFRklOSVRPTlN9KQogZGlmZiAtLWdpdCBhL1Rlc3RzL0NNYWtlTGlzdHMudHh0IGIvVGVzdHMvQ01ha2VMaXN0cy50eHQKLWluZGV4IGU3M2IyNzcuLjkxYjhiNjcgMTAwNjQ0CitpbmRleCA1N2ZhN2ZjLi5kNTBjMTQ2IDEwMDY0NAogLS0tIGEvVGVzdHMvQ01ha2VMaXN0cy50eHQKICsrKyBiL1Rlc3RzL0NNYWtlTGlzdHMudHh0Ci1AQCAtMTM0OCw3ICsxMzQ4LDcgQEAgJHtDTWFrZV9TT1VSQ0VfRElSfS9VdGlsaXRpZXMvUmVsZWFzZS9wdXNoLmJhc2ggLS1kaXIgZGV2IC0tICcke0NNYWtlX0JVSUxEX05JR0gKK0BAIC0xMzI5LDcgKzEzMjksNyBAQCAke0NNYWtlX1NPVVJDRV9ESVJ9L1V0aWxpdGllcy9SZWxlYXNlL3B1c2guYmFzaCAtLWRpciBkZXYgLS0gJyR7Q01ha2VfQlVJTERfTklHSAogICAgICBzZXQoQ01ha2VfVEVTVF9RdDUgMSkKICAgIGVuZGlmKCkKICAgIGlmKENNYWtlX1RFU1RfUXQ1KQpAQCAtOTYsMTEgKzk2LDExIEBACiAgc2V0KENNQUtFX0NYWF9TVEFOREFSRCAxMSkKICBzZXQoQ01BS0VfUlVOVElNRV9PVVRQVVRfRElSRUNUT1JZICR7Q01BS0VfQklOQVJZX0RJUn0vb3V0cHV0L2JpbikKIGRpZmYgLS1naXQgYS9UZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dCBiL1Rlc3RzL1J1bkNNYWtlL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA2OWY4MTYyLi5mMzg5NTIzIDEwMDY0NAoraW5kZXggNmIyZjExNy4uMTAwMjAwNSAxMDA2NDQKIC0tLSBhL1Rlc3RzL1J1bkNNYWtlL0NNYWtlTGlzdHMudHh0CiArKysgYi9UZXN0cy9SdW5DTWFrZS9DTWFrZUxpc3RzLnR4dAotQEAgLTMzNCw3ICszMzQsNyBAQCBhZGRfUnVuQ01ha2VfdGVzdChjb25maWd1cmVfZmlsZSkKLSBhZGRfUnVuQ01ha2VfdGVzdChDVGVzdFRpbWVvdXRBZnRlck1hdGNoKQorQEAgLTM3Niw3ICszNzYsNyBAQCBlbHNlKCkKKyBlbmRpZigpCiAgCiAgZmluZF9wYWNrYWdlKFF0NCBRVUlFVCkKIC1maW5kX3BhY2thZ2UoUXQ1Q29yZSBRVUlFVCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDMtY21ha2Utc3VwcG9ydC1PcGVuRW1iZWRkZWQtUXQ0LXRvb2wtYmluYXJ5LW5hbWVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMy1jbWFrZS1zdXBwb3J0LU9wZW5FbWJlZGRlZC1RdDQtdG9vbC1iaW5hcnktbmFtZXMucGF0Y2gKaW5kZXggZDdkODdhNS4uZTMwZGM1MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMy1jbWFrZS1zdXBwb3J0LU9wZW5FbWJlZGRlZC1RdDQtdG9vbC1iaW5hcnktbmFtZXMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwMy1jbWFrZS1zdXBwb3J0LU9wZW5FbWJlZGRlZC1RdDQtdG9vbC1iaW5hcnktbmFtZXMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGIwMDM4NTdkMzQ4MTEwNWM0NzNlMmU3NWJhZDRlOWUyYzZlNzAwMDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGU1Mjg4NjEwMjNiZjY5ZGYwYWQwNjFhNTlmZDRlNTI3YzlkZGUxY2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgogRGF0ZTogVGh1LCAxMiBNYXkgMjAxMSAxNTozNjowMyArMDAwMAogU3ViamVjdDogW1BBVENIXSBjbWFrZTogc3VwcG9ydCBPcGVuRW1iZWRkZWQgUXQ0IHRvb2wgYmluYXJ5IG5hbWVzCkBAIC0yNSw3ICsyNSw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01vZHVsZXMvRmluZFF0NC5jbWFrZSBiL01vZHVsZXMvRmluZFF0NC5jbWFrZQotaW5kZXggYTE0NWI0Ni4uN2UxODI0MyAxMDA2NDQKK2luZGV4IDM5OTM5NjguLmIyYTg1ODUgMTAwNjQ0CiAtLS0gYS9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKICsrKyBiL01vZHVsZXMvRmluZFF0NC5jbWFrZQogQEAgLTUxOCw3ICs1MTgsNyBAQCBlbmRmdW5jdGlvbigpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDA0LUZhaWwtc2lsZW50bHktaWYtc3lzdGVtLVF0LWluc3RhbGxhdGlvbi1pcy1icm9rZW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZS8wMDA0LUZhaWwtc2lsZW50bHktaWYtc3lzdGVtLVF0LWluc3RhbGxhdGlvbi1pcy1icm9rZW4ucGF0Y2gKaW5kZXggNjc2ZTI4NS4uNDhmNDNiZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2UvMDAwNC1GYWlsLXNpbGVudGx5LWlmLXN5c3RlbS1RdC1pbnN0YWxsYXRpb24taXMtYnJva2VuLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlLzAwMDQtRmFpbC1zaWxlbnRseS1pZi1zeXN0ZW0tUXQtaW5zdGFsbGF0aW9uLWlzLWJyb2tlbi5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZDRhNzhlODczOWU4NDVjMjk2MzY2NmY3ZWY2YTZjN2E4OTgyNzk4OCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYjBhZWNhMzUxODc5ODNlMjJlYzI1NmE0MzljZmY0NzAyZGJkZTMzMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IE90YXZpbyBTYWx2YWRvciA8b3RhdmlvQG9zc3lzdGVtcy5jb20uYnI+CiBEYXRlOiBUaHUsIDUgSnVsIDIwMTggMTA6MjY6NDggLTAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gRmFpbCBzaWxlbnRseSBpZiBzeXN0ZW0gUXQgaW5zdGFsbGF0aW9uIGlzIGJyb2tlbgpAQCAtMjgsNyArMjgsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL01vZHVsZXMvRmluZFF0NC5jbWFrZSBiL01vZHVsZXMvRmluZFF0NC5jbWFrZQotaW5kZXggN2UxODI0My4uNDk3ZDVjMyAxMDA2NDQKK2luZGV4IGIyYTg1ODUuLjc3Yzg5YWEgMTAwNjQ0CiAtLS0gYS9Nb2R1bGVzL0ZpbmRRdDQuY21ha2UKICsrKyBiL01vZHVsZXMvRmluZFF0NC5jbWFrZQogQEAgLTk4OCwyNSArOTg4LDI2IEBAIGlmIChRVF9RTUFLRV9FWEVDVVRBQkxFIEFORApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy4xNS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY21ha2UvY21ha2VfMy4xNi41LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jbWFrZS9jbWFrZV8zLjE1LjMuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2NtYWtlL2NtYWtlXzMuMTYuNS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3JlYXRlcmVwby1jL2NyZWF0ZXJlcG8tY18wLjE1LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jcmVhdGVyZXBvLWMvY3JlYXRlcmVwby1jXzAuMTUuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNzk3ZGI3My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jcmVhdGVyZXBvLWMvY3JlYXRlcmVwby1jXzAuMTUuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM0ICswLDAgQEAKLURFU0NSSVBUSU9OID0gIkMgaW1wbGVtZW50YXRpb24gb2YgY3JlYXRlcmVwby4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvY3JlYXRlcmVwb19jL3dpa2kiCi0KLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2NyZWF0ZXJlcG9fYyBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNSRVYgPSAiYmM2N2YxOWVkMDk1OTNlMzg4NmViZWVlMjM5MWU5ZDUxY2MzNDM5ZiIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotREVQRU5EUyA9ICJleHBhdCBjdXJsIGdsaWItMi4wIGxpYnhtbDIgb3BlbnNzbCBiemlwMiB6bGliIGZpbGUgc3FsaXRlMyB4eiBycG0iCi1ERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBiYXNoLWNvbXBsZXRpb24gZGlzdHV0aWxzMy1iYXNlCi0KLUVYVFJBX09FQ01BS0UgPSAiIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IC1EUFlUSE9OX0RFU0lSRUQ9MyAtRFdJVEhfWkNIVU5LPU9GRiAtREVOQUJMRV9EUlBNPU9GRiAtRFdJVEhfTElCTU9EVUxFTUQ9T0ZGIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLSMgRGlyZWN0IGNyZWF0ZXJlcG8gdG8gcmVhZCBycG0gY29uZmlndXJhdGlvbiBmcm9tIG91ciBzeXNyb290LCBub3QgdGhlIG9uZSBpdCB3YXMgY29tcGlsZWQgaW4KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAgICAgY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vY3JlYXRlcmVwb19jIFwKLSAgICAgICAgICAgICAgICBSUE1fQ09ORklHRElSPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9ycG0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgewotICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9jcmVhdGVyZXBvX2MgXAotICAgICAgICAgICAgICAgIFJQTV9DT05GSUdESVI9JHtTREtQQVRITkFUSVZFfSR7bGliZGlyX25hdGl2ZXNka30vcnBtCi0gICAgICAgIHJtIC1yZiAke0R9L2V0YwotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3JlYXRlcmVwby1jL2NyZWF0ZXJlcG8tY18wLjE1LjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9jcmVhdGVyZXBvLWMvY3JlYXRlcmVwby1jXzAuMTUuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNmE1M2ZmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvY3JlYXRlcmVwby1jL2NyZWF0ZXJlcG8tY18wLjE1LjcuYmIKQEAgLTAsMCArMSwzNCBAQAorREVTQ1JJUFRJT04gPSAiQyBpbXBsZW1lbnRhdGlvbiBvZiBjcmVhdGVyZXBvLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9jcmVhdGVyZXBvX2Mvd2lraSIKKworTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvY3JlYXRlcmVwb19jIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ1JFViA9ICI0YWI2YjU2YjhiNzE4Mzk2Mzg2OTgyYWZiYTRhZGUyOTdjMTRkOTFhIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitERVBFTkRTID0gImV4cGF0IGN1cmwgZ2xpYi0yLjAgbGlieG1sMiBvcGVuc3NsIGJ6aXAyIHpsaWIgZmlsZSBzcWxpdGUzIHh6IHJwbSIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCisKK2luaGVyaXQgY21ha2UgcGtnY29uZmlnIGJhc2gtY29tcGxldGlvbiBkaXN0dXRpbHMzLWJhc2UKKworRVhUUkFfT0VDTUFLRSA9ICIgLURQWVRIT05fSU5TVEFMTF9ESVI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gLURQWVRIT05fREVTSVJFRD0zIC1EV0lUSF9aQ0hVTks9T0ZGIC1ERU5BQkxFX0RSUE09T0ZGIC1EV0lUSF9MSUJNT0RVTEVNRD1PRkYiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworIyBEaXJlY3QgY3JlYXRlcmVwbyB0byByZWFkIHJwbSBjb25maWd1cmF0aW9uIGZyb20gb3VyIHN5c3Jvb3QsIG5vdCB0aGUgb25lIGl0IHdhcyBjb21waWxlZCBpbgorZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworICAgICAgICBjcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9jcmVhdGVyZXBvX2MgXAorICAgICAgICAgICAgICAgIFJQTV9DT05GSUdESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3JwbQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7CisgICAgICAgIGNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2NyZWF0ZXJlcG9fYyBcCisgICAgICAgICAgICAgICAgUlBNX0NPTkZJR0RJUj0ke1NES1BBVEhOQVRJVkV9JHtsaWJkaXJfbmF0aXZlc2RrfS9ycG0KKyAgICAgICAgcm0gLXJmICR7RH0vZXRjCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdC8wMDAxLWFjbG9jYWwubTQtYWRkLW1pc3NpbmctaGVhZGVyLWRlZmluZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdC8wMDAxLWFjbG9jYWwubTQtYWRkLW1pc3NpbmctaGVhZGVyLWRlZmluZXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJkOTRkNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0LzAwMDEtYWNsb2NhbC5tNC1hZGQtbWlzc2luZy1oZWFkZXItZGVmaW5lcy5wYXRjaApAQCAtMCwwICsxLDI0IEBACitGcm9tIDAwNGJkODBkMjUyM2Y1Mzg0NjdiNWFkYTI2MjNlYjIwN2I1NWRhZDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjAgRGVjIDIwMTkgMTU6NDQ6MjggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gYWNsb2NhbC5tNDogYWRkIG1pc3NpbmcgaGVhZGVyIGRlZmluZXMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGFjbG9jYWwubTQgfCA1ICsrKysrCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvYWNsb2NhbC5tNCBiL2FjbG9jYWwubTQKK2luZGV4IDNiMTllODIuLmMwYzRhY2IgMTAwNjQ0CistLS0gYS9hY2xvY2FsLm00CisrKysgYi9hY2xvY2FsLm00CitAQCAtMTkyNywzICsxOTI3LDggQEAgbWFrZSBhbiBlcnJvcgorIGZpCisgZmkgIyBjZl9jdl9wb3NpeF92aXNpYmxlCisgXSkKKysKKytBQ19ERUZJTkUoW0hBVkVfVENHRVRBVFRSXSwgW10sIFtEZXNjcmlwdGlvbl0pCisrQUNfREVGSU5FKFtIQVZFX1RDU0VUQVRUUl0sIFtdLCBbRGVzY3JpcHRpb25dKQorK0FDX0RFRklORShbSEFWRV9URVJNSU9TX0hdLCBbXSwgW0Rlc2NyaXB0aW9uXSkKKysKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0XzEuNjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdF8xLjYyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5M2Q3Nzc5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0XzEuNjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIlRvb2wgdG8gcHJvZHVjZSBhIHN0YXRpc3RpY3MgYmFzZWQgb24gYSBkaWZmIgotREVTQ1JJUFRJT04gPSAiZGlmZnN0YXQgcmVhZHMgdGhlIG91dHB1dCBvZiBkaWZmIGFuZCBkaXNwbGF5cyBhIGhpc3RvZ3JhbSBvZiBcCi10aGUgaW5zZXJ0aW9ucywgZGVsZXRpb25zLCBhbmQgbW9kaWZpY2F0aW9ucyBwZXItZmlsZS4gSXQgaXMgdXNlZnVsIGZvciBcCi1yZXZpZXdpbmcgbGFyZ2UsIGNvbXBsZXggcGF0Y2ggZmlsZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2ludmlzaWJsZS1pc2xhbmQubmV0L2RpZmZzdGF0LyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2luc3RhbGwtc2g7ZW5kbGluZT00MjttZDU9YjM1NDk3MjZjMTAyMmJlZTA5YzE3NGM3MmEwY2E0YTUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2ludmlzaWJsZS1taXJyb3IubmV0L2FyY2hpdmVzLyR7QlBOfS8ke0JQfS50Z3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkLWNoZWNrLXVzZXItYnJlYWstY2MucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTFlMTA2YmIzNGNiMDk3NzUwZGI3ZGRjMGJhMWQ4ZmMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2YwOTE4MzY0NGVkNzdhMTU2YjE1MzQ2YmJhZDRlODljOTM1NDNlMTQwYWRkOWRhYjE4NzQ3ZTMwNTIyNTkxZiIKLQotUyA9ICIke1dPUktESVJ9L2RpZmZzdGF0LSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHB0ZXN0Ci0KLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hY2xvY2FsIgotCi1MREZMQUdTICs9ICIke1RPT0xDSEFJTl9PUFRJT05TfSIKLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAtciAke1N9L3Rlc3RpbmcgJHtEfSR7UFRFU1RfUEFUSH0KLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RpZmZzdGF0L2RpZmZzdGF0XzEuNjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdF8xLjYzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVlMGE3ZTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kaWZmc3RhdC9kaWZmc3RhdF8xLjYzLmJiCkBAIC0wLDAgKzEsMjkgQEAKK1NVTU1BUlkgPSAiVG9vbCB0byBwcm9kdWNlIGEgc3RhdGlzdGljcyBiYXNlZCBvbiBhIGRpZmYiCitERVNDUklQVElPTiA9ICJkaWZmc3RhdCByZWFkcyB0aGUgb3V0cHV0IG9mIGRpZmYgYW5kIGRpc3BsYXlzIGEgaGlzdG9ncmFtIG9mIFwKK3RoZSBpbnNlcnRpb25zLCBkZWxldGlvbnMsIGFuZCBtb2RpZmljYXRpb25zIHBlci1maWxlLiBJdCBpcyB1c2VmdWwgZm9yIFwKK3Jldmlld2luZyBsYXJnZSwgY29tcGxleCBwYXRjaCBmaWxlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vaW52aXNpYmxlLWlzbGFuZC5uZXQvZGlmZnN0YXQvIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vaW5zdGFsbC1zaDtlbmRsaW5lPTQyO21kNT1iMzU0OTcyNmMxMDIyYmVlMDljMTc0YzcyYTBjYTRhNSIKKworU1JDX1VSSSA9ICJodHRwOi8vaW52aXNpYmxlLW1pcnJvci5uZXQvYXJjaGl2ZXMvJHtCUE59LyR7QlB9LnRneiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vYXZvaWQtY2hlY2stdXNlci1icmVhay1jYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWFjbG9jYWwubTQtYWRkLW1pc3NpbmctaGVhZGVyLWRlZmluZXMucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiOTI3MmVjOGFmNjI1NzEwMzI2MWVjMzYyMjY5Mjk5MSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZWRkZDUzNDAxYjk5YjkwYmFjM2Y3ZWJmMjNkZDU4M2Q3ZDk5YzYxMDZlNjdhNGYxMTYxYjdhMjAxMTBkYzZmIgorCitTID0gIiR7V09SS0RJUn0vZGlmZnN0YXQtJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHRlc3QKKworRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1leGNsdWRlPWFjbG9jYWwiCisKK0xERkxBR1MgKz0gIiR7VE9PTENIQUlOX09QVElPTlN9IgorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCWNwIC1yICR7U30vdGVzdGluZyAke0R9JHtQVEVTVF9QQVRIfQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDAxLXNldC1weXRob24tcGF0aC1mb3ItY29tcGxldGlvbl9oZWxwZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mLzAwMDEtc2V0LXB5dGhvbi1wYXRoLWZvci1jb21wbGV0aW9uX2hlbHBlci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NDhmNjQwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi8wMDAxLXNldC1weXRob24tcGF0aC1mb3ItY29tcGxldGlvbl9oZWxwZXIucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorRnJvbSA3ZTc5YjNiNjdmZDVjZWNkNzM4MGU3ZTM2NWZkODhlY2E2M2I1YmZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CitEYXRlOiBXZWQsIDExIE1hciAyMDIwIDIyOjEwOjAyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHNldCBweXRob24gcGF0aCBmb3IgY29tcGxldGlvbl9oZWxwZXIKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CistLS0KKyBkbmYvY2xpL2NvbXBsZXRpb25faGVscGVyLnB5LmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZG5mL2NsaS9jb21wbGV0aW9uX2hlbHBlci5weS5pbiBiL2RuZi9jbGkvY29tcGxldGlvbl9oZWxwZXIucHkuaW4KK2luZGV4IDM1MTIyNjc1OS4uMjgzNWNkM2I2IDEwMDY0NAorLS0tIGEvZG5mL2NsaS9jb21wbGV0aW9uX2hlbHBlci5weS5pbgorKysrIGIvZG5mL2NsaS9jb21wbGV0aW9uX2hlbHBlci5weS5pbgorQEAgLTEsNCArMSw0IEBACistIyFAUFlUSE9OX0VYRUNVVEFCTEVACisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMKKyAjIFRoaXMgZmlsZSBpcyBwYXJ0IG9mIGRuZi4KKyAjCistLSAKKzIuMjMuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mL0ZpeC1TeW50YXhXYXJuaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi9GaXgtU3ludGF4V2FybmluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmQ4YjA5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZi9GaXgtU3ludGF4V2FybmluZy5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIDIzYzViMTVlZmU0MmU1ZTZlZTY5NWU1NDc5OGJhYzI0ODUzMmQ4ZDYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCisKK0RhdGU6IFR1ZSwgMjggTWF5IDIwMTkgMTM6MTQ6NTEgKzAyMDAKK1N1YmplY3Q6IFtvZS1jb3JlXVtQQVRDSCAxLzFdIEZpeCBTeW50YXhXYXJuaW5nOiAiaXMiIHdpdGggYSBsaXRlcmFsLiBEaWQgeW91CisgbWVhbiAiPT0iPworCistLS0KKyBkbmYvY2xpL2NvbW1hbmRzL3JlcG9xdWVyeS5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKy0tLQorCitVbmNoYW5nZWQuICBBcHBlYXJzIGluIHZlcnNpb24gNC4yLjcuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvZG5mLmdpdF0KKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCisKK2RpZmYgLS1naXQgYS9kbmYvY2xpL2NvbW1hbmRzL3JlcG9xdWVyeS5weSBiL2RuZi9jbGkvY29tbWFuZHMvcmVwb3F1ZXJ5LnB5CitpbmRleCA5NDFhNDcwLi42M2ZjNjY4IDEwMDY0NAorLS0tIGEvZG5mL2NsaS9jb21tYW5kcy9yZXBvcXVlcnkucHkKKysrKyBiL2RuZi9jbGkvY29tbWFuZHMvcmVwb3F1ZXJ5LnB5CitAQCAtNjExLDcgKzYxMSw3IEBAIGNsYXNzIFJlcG9RdWVyeUNvbW1hbmQoY29tbWFuZHMuQ29tbWFuZCk6CisgCisgICAgIGRlZiB0cmVlX3NlZWQoc2VsZiwgcXVlcnksIGFxdWVyeSwgb3B0cywgbGV2ZWw9LTEsIHVzZWRwa2dzPU5vbmUpOgorICAgICAgICAgZm9yIHBrZyBpbiBzb3J0ZWQoc2V0KHF1ZXJ5LnJ1bigpKSwga2V5PWxhbWJkYSBwOiBwLm5hbWUpOgorLSAgICAgICAgICAgIHVzZWRwa2dzID0gc2V0KCkgaWYgdXNlZHBrZ3MgaXMgTm9uZSBvciBsZXZlbCBpcyAtMSBlbHNlIHVzZWRwa2dzCisrICAgICAgICAgICAgdXNlZHBrZ3MgPSBzZXQoKSBpZiB1c2VkcGtncyBpcyBOb25lIG9yIGxldmVsID09IC0xIGVsc2UgdXNlZHBrZ3MKKyAgICAgICAgICAgICBpZiBwa2cubmFtZS5zdGFydHN3aXRoKCJycG1saWIiKSBvciBwa2cubmFtZS5zdGFydHN3aXRoKCJzb2x2YWJsZSIpOgorICAgICAgICAgICAgICAgICByZXR1cm4KKyAgICAgICAgICAgICBzZWxmLmdyb3dfdHJlZShsZXZlbCwgcGtnLCBvcHRzKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mXzQuMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG5mL2RuZl80LjIuMi5iYgppbmRleCBmMzgxNjdmLi5hMDQ2ZmZjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kbmYvZG5mXzQuMi4yLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2RuZi9kbmZfNC4yLjIuYmIKQEAgLTEzLDYgKzEzLDggQEAKICAgICAgICAgICAgZmlsZTovLzAwMDUtRG8tbm90LXByZXBlbmQtaW5zdGFsbHJvb3QtdG8tbG9nZGlyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMjktRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAzMC1SdW4tcHl0aG9uLXNjcmlwdHMtdXNpbmctZW52LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0ZpeC1TeW50YXhXYXJuaW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc2V0LXB5dGhvbi1wYXRoLWZvci1jb21wbGV0aW9uX2hlbHBlci5wYXRjaCBcCiAgICAgICAgICAgICIKIAogU1JDUkVWID0gIjk5NDczMDZhNTUyNzFiOGI3YzllMmI2ZTNiN2Q1ODI4ODViNjA0NWQiCkBAIC04NCwzICs4Niw1IEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgZG5mLWF1dG9tYXRpYy1ub3RpZnlvbmx5LnNlcnZpY2UgZG5mLWF1dG9tYXRpYy1ub3RpZnlvbmx5LnRpbWVyIFwKICIKIFNZU1RFTURfQVVUT19FTkFCTEUgPz0gImRpc2FibGUiCisKK1BOQkxBQ0tMSVNUW2RuZl0gPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFX0NMQVNTRVMnLCAncGFja2FnZV9ycG0nLCAnJywgJ2RvZXMgbm90IGJ1aWxkIHdpdGhvdXQgcGFja2FnZV9ycG0gaW4gUEFDS0FHRV9DTEFTU0VTIGR1ZSBkaXNhYmxlZCBycG0gc3VwcG9ydCBpbiBsaWJzb2x2JywgZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG9zZnN0b29scy9kb3Nmc3Rvb2xzXzQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2Rvc2ZzdG9vbHMvZG9zZnN0b29sc180LjEuYmIKaW5kZXggNjlhYTgxYS4uMjNiODgzNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZG9zZnN0b29scy9kb3Nmc3Rvb2xzXzQuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9kb3Nmc3Rvb2xzL2Rvc2ZzdG9vbHNfNC4xLmJiCkBAIC0yMywzICsyMyw2IEBACiBDRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UgLURfTEFSR0VGSUxFX1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworIyBBZGQgY29kZXBhZ2U0MzcgdG8gYXZvaWQgZXJyb3IgZnJvbSBgZG9zZnNjayAtbGAKK1JSRUNPTU1FTkRTXyR7UE59X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy1nY29udi1pYm00MzciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MuaW5jCmluZGV4IGE1NGExMWMuLjAwOWY1ZWQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MuaW5jCkBAIC00LDkgKzQsOSBAQAogSE9NRVBBR0UgPSAiaHR0cDovL2UyZnNwcm9ncy5zb3VyY2Vmb3JnZS5uZXQvIgogCiBMSUNFTlNFID0gIkdQTHYyICYgTEdQTHYyICYgQlNEICYgTUlUIgorTElDRU5TRV9lMmZzcHJvZ3MtZHVtcGUyZnMgPSAiR1BMdjIiCiBMSUNFTlNFX2UyZnNwcm9ncy1lMmZzY2sgPSAiR1BMdjIiCiBMSUNFTlNFX2UyZnNwcm9ncy1ta2UyZnMgPSAiR1BMdjIiCi1MSUNFTlNFX2UyZnNwcm9ncy1mc2NrID0gIkdQTHYyIgogTElDRU5TRV9lMmZzcHJvZ3MtdHVuZTJmcyA9ICJHUEx2MiIKIExJQ0VOU0VfZTJmc3Byb2dzLWJhZGJsb2NrcyA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL05PVElDRTttZDU9ZDUwYmUwNTgwYzBiMGE3ZmJjN2E0ODMwYmJlNmMxMmIgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWNvbmZpZ3VyZS5hYy1jb3JyZWN0LUFNX0dOVV9HRVRURVhULnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy8wMDAxLWNvbmZpZ3VyZS5hYy1jb3JyZWN0LUFNX0dOVV9HRVRURVhULnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3MTk1OTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtY29uZmlndXJlLmFjLWNvcnJlY3QtQU1fR05VX0dFVFRFWFQucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSBmOTA3ZmVhOWVhMDUzZDU0MzNiNTE5OWNlNzQwMDg2NjQxNDFmNzUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE5IE5vdiAyMDE5IDE3OjMyOjMzICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogY29ycmVjdCBBTV9HTlVfR0VUVEVYVAorCitOZXcgdmVyc2lvbiBvZiBnZXR0ZXh0IHJlcXVpcmUgdGhlICdleHRlcm5hbCcgYXJndW1lbnQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDY1NGZmNDNkLi40NzcyYjk3YiAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtODczLDcgKzg3Myw3IEBAIEFDX1NVQlNUKEdFVFRFWFRfUEFDS0FHRSkKKyBBQ19TVUJTVChQQUNLQUdFKQorIEFDX1NVQlNUKFZFUlNJT04pCisgCistQU1fR05VX0dFVFRFWFQKKytBTV9HTlVfR0VUVEVYVChbZXh0ZXJuYWxdKQorIGRubCBATUtESVJfUEAgaXMgZXhwYW5kZWQgaW4gQU1fR05VX0dFVFRFWFQKKyBBQ19TVUJTVChbbWtkaXJfcF0sWyckKE1LRElSX1ApJ10pCisgZG5sCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtZTJmc2NrLWRvbi10LXRyeS10by1yZWhhc2gtYS1kZWxldGVkLWRpcmVjdG9yeS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1lMmZzY2stZG9uLXQtdHJ5LXRvLXJlaGFzaC1hLWRlbGV0ZWQtZGlyZWN0b3J5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJhNGUzYTMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtZTJmc2NrLWRvbi10LXRyeS10by1yZWhhc2gtYS1kZWxldGVkLWRpcmVjdG9yeS5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIDcxYmExMzc1NTMzN2UxOWM5YTgyNmRmYzg3NDU2MmEzNmUxYjI0ZDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgorRGF0ZTogVGh1LCAxOSBEZWMgMjAxOSAxOTo0NTowNiAtMDUwMAorU3ViamVjdDogW1BBVENIXSBlMmZzY2s6IGRvbid0IHRyeSB0byByZWhhc2ggYSBkZWxldGVkIGRpcmVjdG9yeQorCitJZiBkaXJlY3RvcnkgaGFzIGJlZW4gZGVsZXRlZCBpbiBwYXNzMVtiY2RdIHByb2Nlc3NpbmcsIHRoZW4gd2UKK3Nob3VsZG4ndCB0cnkgdG8gcmVoYXNoIHRoZSBkaXJlY3RvcnkgaW4gcGFzcyAzYSB3aGVuIHdlIHRyeSB0bworcmVoYXNoL3Jlb3B0aW1pemUgZGlyZWN0b3JpZXMuCisKK1NpZ25lZC1vZmYtYnk6IFRoZW9kb3JlIFRzJ28gPHR5dHNvQG1pdC5lZHU+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9mcy9leHQyL2UyZnNwcm9ncy5naXQvY29tbWl0Lz9pZD03MWJhMTM3NTUzMzdlMTljOWE4MjZkZmM4NzQ1NjJhMzZlMWIyNGQzXQorU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKy0tLQorIGUyZnNjay9wYXNzMWIuYyB8IDQgKysrKworIGUyZnNjay9yZWhhc2guYyB8IDIgKysKKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZTJmc2NrL3Bhc3MxYi5jIGIvZTJmc2NrL3Bhc3MxYi5jCitpbmRleCA1NjkzYjljZi4uYmNhNzAxY2EgMTAwNjQ0CistLS0gYS9lMmZzY2svcGFzczFiLmMKKysrKyBiL2UyZnNjay9wYXNzMWIuYworQEAgLTcwNSw2ICs3MDUsMTAgQEAgc3RhdGljIHZvaWQgZGVsZXRlX2ZpbGUoZTJmc2NrX3QgY3R4LCBleHQyX2lub190IGlubywKKyAJCWZpeF9wcm9ibGVtKGN0eCwgUFJfMUJfQkxPQ0tfSVRFUkFURSwgJnBjdHgpOworIAlpZiAoY3R4LT5pbm9kZV9iYWRfbWFwKQorIAkJZXh0MmZzX3VubWFya19pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfYmFkX21hcCwgaW5vKTsKKysJaWYgKGN0eC0+aW5vZGVfcmVnX21hcCkKKysJCWV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX3JlZ19tYXAsIGlubyk7CisrCWV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX2Rpcl9tYXAsIGlubyk7CisrCWV4dDJmc191bm1hcmtfaW5vZGVfYml0bWFwMihjdHgtPmlub2RlX3VzZWRfbWFwLCBpbm8pOworIAlleHQyZnNfaW5vZGVfYWxsb2Nfc3RhdHMyKGZzLCBpbm8sIC0xLCBMSU5VWF9TX0lTRElSKGRwLT5pbm9kZS5pX21vZGUpKTsKKyAJcXVvdGFfZGF0YV9zdWIoY3R4LT5xY3R4LCAmZHAtPmlub2RlLCBpbm8sCisgCQkgICAgICAgcGIuZHVwX2Jsb2NrcyAqIGZzLT5ibG9ja3NpemUpOworZGlmZiAtLWdpdCBhL2UyZnNjay9yZWhhc2guYyBiL2UyZnNjay9yZWhhc2guYworaW5kZXggM2RkMWU5NDEuLjJjOTA4YmUwIDEwMDY0NAorLS0tIGEvZTJmc2NrL3JlaGFzaC5jCisrKysgYi9lMmZzY2svcmVoYXNoLmMKK0BAIC0xMDI4LDYgKzEwMjgsOCBAQCB2b2lkIGUyZnNja19yZWhhc2hfZGlyZWN0b3JpZXMoZTJmc2NrX3QgY3R4KQorIAkJCWlmICghZXh0MmZzX3UzMl9saXN0X2l0ZXJhdGUoaXRlciwgJmlubykpCisgCQkJCWJyZWFrOworIAkJfQorKwkJaWYgKCFleHQyZnNfdGVzdF9pbm9kZV9iaXRtYXAyKGN0eC0+aW5vZGVfZGlyX21hcCwgaW5vKSkKKysJCQljb250aW51ZTsKKyAKKyAJCXBjdHguZGlyID0gaW5vOworIAkJaWYgKGZpcnN0KSB7CistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtaW50bC1kby1ub3QtdHJ5LXRvLXVzZS1nZXR0ZXh0LWRlZmluZXMtdGhhdC1uby1sb25nZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvMDAwMS1pbnRsLWRvLW5vdC10cnktdG8tdXNlLWdldHRleHQtZGVmaW5lcy10aGF0LW5vLWxvbmdlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjMxYjU4NWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzLzAwMDEtaW50bC1kby1ub3QtdHJ5LXRvLXVzZS1nZXR0ZXh0LWRlZmluZXMtdGhhdC1uby1sb25nZS5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIGQwMzQyMzlmMDVjZmJhODQ5ZjZhZDE2ZWIzZjFlYTM3ZWZiZTRmOTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTkgTm92IDIwMTkgMTg6MzQ6MDAgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gaW50bDogZG8gbm90IHRyeSB0byB1c2UgZ2V0dGV4dCBkZWZpbmVzIHRoYXQgbm8gbG9uZ2VyIGV4aXN0CisKK05ld2VyIHZlcnNpb24gb2YgZ2V0dGV4dCBubyBsb25nZXIgZGVmaW5lIHRoaXMgaW4gbTQgZmlsZXMsCitzbyBwYXRjaCBpdCBvdXQgdW50aWwgZTJmc3Byb2dzIHVwc3RyZWFtIHNvcnRzIHRoZSBzaXR1YXRpb24uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbaGFyZGNvZGVzIGEgY2hvaWNlXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBpbnRsL01ha2VmaWxlLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaW50bC9NYWtlZmlsZS5pbiBiL2ludGwvTWFrZWZpbGUuaW4KK2luZGV4IGUwMzdlMjNjLi44OWE4NzZiOCAxMDA2NDQKKy0tLSBhL2ludGwvTWFrZWZpbGUuaW4KKysrKyBiL2ludGwvTWFrZWZpbGUuaW4KK0BAIC0xNzUsNyArMTc1LDcgQEAgbGliZ251aW50bC5oLm1zdmMtc3RhdGljIGxpYmdudWludGwuaC5tc3ZjLXNoYXJlZCBSRUFETUUud29lMzIgTWFrZWZpbGUubXN2YworIERJU1RGSUxFUy5vYnNvbGV0ZSA9IHhvcGVuLW1zZy5zZWQgbGludXgtbXNnLnNlZCBwbzJ0Ymwuc2VkLmluIGNhdC1jb21wYXQuYyBcCisgQ09QWUlORy5MSUItMiBnZXR0ZXh0LmggbGliZ2V0dGV4dC5oIHBsdXJhbC1ldmFsLmMgbGliZ251aW50bC5oCisgCistYWxsOiBhbGwtQFVTRV9JTkNMVURFRF9MSUJJTlRMQAorK2FsbDoKKyBhbGwteWVzOiBsaWJpbnRsLiRsYSBsaWJpbnRsLmggY2hhcnNldC5hbGlhcyByZWYtYWRkLnNlZCByZWYtZGVsLnNlZAorIGFsbC1ubzogYWxsLW5vLUBCVUlMRF9JTkNMVURFRF9MSUJJTlRMQAorIGFsbC1uby15ZXM6IGxpYmdudWludGwuJGxhCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL0NWRS0yMDE5LTUxODgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL0NWRS0yMDE5LTUxODgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGU0YmNlMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvQ1ZFLTIwMTktNTE4OC5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGcm9tIDhkZDczYzE0OWY0MTgyMzhmMTk3OTFmOWQ2NjYwODllZjk3MzRkZmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgorRGF0ZTogVGh1LCAxOSBEZWMgMjAxOSAxOTozNzozNCAtMDUwMAorU3ViamVjdDogW1BBVENIXSBlMmZzY2s6IGFib3J0IGlmIHRoZXJlIGlzIGEgY29ycnVwdGVkIGRpcmVjdG9yeSBibG9jayB3aGVuCisgcmVoYXNoaW5nCisKK0luIGUyZnNjayBwYXNzIDNhLCB3aGVuIHdlIGFyZSByZWhhc2hpbmcgZGlyZWN0b3JpZXMsIGF0IGxlYXN0IGluCit0aGVvcnksIGFsbCBvZiB0aGUgZGlyZWN0b3JpZXMgc2hvdWxkIGhhdmUgaGFkIGNvcnJ1cHRpb25zIHdpdGgKK3Jlc3BlY3QgdG8gZGlyZWN0b3J5IGVudHJ5IHN0cnVjdHVyZSBmaXhlZC4gIEhvd2V2ZXIsIGl0J3MgcG9zc2libGUKKyhmb3IgZXhhbXBsZSwgaWYgdGhlIHVzZXIgZGVjbGluZWQgYSBmaXgpIHRoYXQgd2UgY2FuIHJlYWNoIHRoaXMgc3RhZ2UKK29mIHByb2Nlc3Npbmcgd2l0aCBhIGNvcnJ1cHRlZCBkaXJlY3RvcnkgZW50cmllcy4KKworU28gY2hlY2sgZm9yIHRoYXQgY2FzZSBhbmQgZG9uJ3QgdHJ5IHRvIHByb2Nlc3MgYSBjb3JydXB0ZWQgZGlyZWN0b3J5CitibG9jayBzbyB3ZSBkb24ndCBydW4gaW50byB0cm91YmxlIGluIG11dGF0ZV9uYW1lKCkgaWYgdGhlcmUgaXMgYQoremVyby1sZW5ndGggZmlsZSBuYW1lLgorCitBZGRyZXNzZXM6IFRBTE9TLTIwMTktMDk3MworQWRkcmVzc2VzOiBDVkUtMjAxOS01MTg4CitTaWduZWQtb2ZmLWJ5OiBUaGVvZG9yZSBUcydvIDx0eXRzb0BtaXQuZWR1PgorCitDVkU6IENWRS0yMDE5LTUxODgKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vZnMvZXh0Mi9lMmZzcHJvZ3MuZ2l0L2NvbW1pdC8/aWQ9OGRkNzNjMTQ5ZjQxODIzOGYxOTc5MWY5ZDY2NjA4OWVmOTczNGRmZl0KKy0tLQorIGUyZnNjay9yZWhhc2guYyB8IDkgKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZTJmc2NrL3JlaGFzaC5jIGIvZTJmc2NrL3JlaGFzaC5jCitpbmRleCBhNWZjMWJlMS4uM2RkMWU5NDEgMTAwNjQ0CistLS0gYS9lMmZzY2svcmVoYXNoLmMKKysrKyBiL2UyZnNjay9yZWhhc2guYworQEAgLTE2MCw2ICsxNjAsMTAgQEAgc3RhdGljIGludCBmaWxsX2Rpcl9ibG9jayhleHQyX2ZpbHN5cyBmcywKKyAJCWRpcl9vZmZzZXQgKz0gcmVjX2xlbjsKKyAJCWlmIChkaXJlbnQtPmlub2RlID09IDApCisgCQkJY29udGludWU7CisrCQlpZiAoKG5hbWVfbGVuKSA9PSAwKSB7CisrCQkJZmQtPmVyciA9IEVYVDJfRVRfRElSX0NPUlJVUFRFRDsKKysJCQlyZXR1cm4gQkxPQ0tfQUJPUlQ7CisrCQl9CisgCQlpZiAoIWZkLT5jb21wcmVzcyAmJiAobmFtZV9sZW4gPT0gMSkgJiYKKyAJCSAgICAoZGlyZW50LT5uYW1lWzBdID09ICcuJykpCisgCQkJY29udGludWU7CitAQCAtNDAxLDYgKzQwNSwxMSBAQCBzdGF0aWMgaW50IGR1cGxpY2F0ZV9zZWFyY2hfYW5kX2ZpeChlMmZzY2tfdCBjdHgsIGV4dDJfZmlsc3lzIGZzLAorIAkJCWNvbnRpbnVlOworIAkJfQorIAkJbmV3X2xlbiA9IGV4dDJmc19kaXJlbnRfbmFtZV9sZW4oZW50LT5kaXIpOworKwkJaWYgKG5ld19sZW4gPT0gMCkgeworKwkJCSAvKiBzaG91bGQgbmV2ZXIgaGFwcGVuICovCisrCQkJZXh0MmZzX3VubWFya192YWxpZChmcyk7CisrCQkJY29udGludWU7CisrCQl9CisgCQltZW1jcHkobmV3X25hbWUsIGVudC0+ZGlyLT5uYW1lLCBuZXdfbGVuKTsKKyAJCW11dGF0ZV9uYW1lKG5ld19uYW1lLCAmbmV3X2xlbik7CisgCQlmb3IgKGo9MDsgaiA8IGZkLT5udW1fYXJyYXk7IGorKykgeworLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9lMmZzY2stZml4LXVzZS1hZnRlci1mcmVlLWluLWNhbGN1bGF0ZV90cmVlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9lMmZzY2stZml4LXVzZS1hZnRlci1mcmVlLWluLWNhbGN1bGF0ZV90cmVlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0MmEyYjgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2UyZnNjay1maXgtdXNlLWFmdGVyLWZyZWUtaW4tY2FsY3VsYXRlX3RyZWUucGF0Y2gKQEAgLTAsMCArMSw3NiBAQAorRnJvbTogV2FuZyBTaGlsb25nIDx3c2hpbG9uZ0BkZG4uY29tPgorRGF0ZTogTW9uLCAzMCBEZWMgMjAxOSAxOTo1MjozOSAtMDUwMAorU3ViamVjdDogZTJmc2NrOiBmaXggdXNlIGFmdGVyIGZyZWUgaW4gY2FsY3VsYXRlX3RyZWUoKQorCitUaGUgcHJvYmxlbSBpcyBhbGxvY19ibG9ja3MoKSB3aWxsIGNhbGwgZ2V0X25leHRfYmxvY2soKSB3aGljaCBtaWdodAorcmVhbGxvY2F0ZSBvdXRkaXItPmJ1ZiwgYW5kIG1lbW9yeSBhZGRyZXNzIGNvdWxkIGJlIGNoYW5nZWQgYWZ0ZXIKK3RoaXMuICBUbyBmaXggdGhpcywgcG9pbnRlcnMgdGhhdCBwb2ludCBpbnRvIG91dGRpci0+YnVmLCBzdWNoIGFzCitpbnRfbGltaXQgYW5kIHJvb3QgbmVlZCB0byBiZSByZWNhdWxhdGVkIGJhc2VkIG9uIHRoZSBuZXcgc3RhcnRpbmcKK2FkZHJlc3Mgb2Ygb3V0ZGlyLT5idWYuCisKK1sgQ2hhbmdlZCB0byBjb3JyZWN0bHkgcmVjYWxjdWxhdGUgaW50X2xpbWl0LCBhbmQgdG8gb3B0aW1pemUgaG93IHdlCisgIHJlYWxsb2NhdGUgb3V0ZGlyLT5idWYuICAtVFlUIF0KKworQWRkcmVzc2VzLURlYmlhbi1CdWc6IDk0ODUxNworU2lnbmVkLW9mZi1ieTogV2FuZyBTaGlsb25nIDx3c2hpbG9uZ0BkZG4uY29tPgorU2lnbmVkLW9mZi1ieTogVGhlb2RvcmUgVHMnbyA8dHl0c29AbWl0LmVkdT4KKyhjaGVycnkgcGlja2VkIGZyb20gY29tbWl0IDEwMWU3M2U5OWNjYWZhMDQwM2ZjYjI3ZGQ3NDEzMDMzYjU4N2NhMDEpCisKK1NpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5rZXJuZWwub3JnL3B1Yi9zY20vZnMvZXh0Mi9lMmZzcHJvZ3MuZ2l0L2NvbW1pdC8/aWQ9MTAxZTczZTk5Y2NhZmEwNDAzZmNiMjdkZDc0MTMwMzNiNTg3Y2EwMV0KKy0tLQorIGUyZnNjay9yZWhhc2guYyB8IDE3ICsrKysrKysrKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2UyZnNjay9yZWhhc2guYyBiL2UyZnNjay9yZWhhc2guYworaW5kZXggMGE1ODg4YTkuLjI1NzRlMTUxIDEwMDY0NAorLS0tIGEvZTJmc2NrL3JlaGFzaC5jCisrKysgYi9lMmZzY2svcmVoYXNoLmMKK0BAIC0yOTUsNyArMjk1LDExIEBAIHN0YXRpYyBlcnJjb2RlX3QgZ2V0X25leHRfYmxvY2soZXh0Ml9maWxzeXMgZnMsIHN0cnVjdCBvdXRfZGlyICpvdXRkaXIsCisgCWVycmNvZGVfdAlyZXR2YWw7CisgCisgCWlmIChvdXRkaXItPm51bSA+PSBvdXRkaXItPm1heCkgeworLQkJcmV0dmFsID0gYWxsb2Nfc2l6ZV9kaXIoZnMsIG91dGRpciwgb3V0ZGlyLT5tYXggKyA1MCk7CisrCQlpbnQgaW5jcmVtZW50ID0gb3V0ZGlyLT5tYXggLyAxMDsKKysKKysJCWlmIChpbmNyZW1lbnQgPCA1MCkKKysJCQlpbmNyZW1lbnQgPSA1MDsKKysJCXJldHZhbCA9IGFsbG9jX3NpemVfZGlyKGZzLCBvdXRkaXIsIG91dGRpci0+bWF4ICsgaW5jcmVtZW50KTsKKyAJCWlmIChyZXR2YWwpCisgCQkJcmV0dXJuIHJldHZhbDsKKyAJfQorQEAgLTYzNyw2ICs2NDEsOSBAQCBzdGF0aWMgaW50IGFsbG9jX2Jsb2NrcyhleHQyX2ZpbHN5cyBmcywKKyAJaWYgKHJldHZhbCkKKyAJCXJldHVybiByZXR2YWw7CisgCisrCS8qIG91dGRpci0+YnVmIG1pZ2h0IGJlIHJlYWxsb2NhdGVkICovCisrCSpwcmV2X2VudCA9IChzdHJ1Y3QgZXh0Ml9keF9lbnRyeSAqKSAob3V0ZGlyLT5idWYgKyAqcHJldl9vZmZzZXQpOworKworIAkqbmV4dF9lbnQgPSBzZXRfaW50X25vZGUoZnMsIGJsb2NrX3N0YXJ0KTsKKyAJKmxpbWl0ID0gKHN0cnVjdCBleHQyX2R4X2NvdW50bGltaXQgKikoKm5leHRfZW50KTsKKyAJaWYgKG5leHRfb2Zmc2V0KQorQEAgLTcyNiw2ICs3MzMsOSBAQCBzdGF0aWMgZXJyY29kZV90IGNhbGN1bGF0ZV90cmVlKGV4dDJfZmlsc3lzIGZzLAorIAkJCQkJcmV0dXJuIHJldHZhbDsKKyAJCQl9CisgCQkJaWYgKGMzID09IDApIHsKKysJCQkJaW50IGRlbHRhMSA9IChjaGFyICopaW50X2xpbWl0IC0gb3V0ZGlyLT5idWY7CisrCQkJCWludCBkZWx0YTIgPSAoY2hhciAqKXJvb3QgLSBvdXRkaXItPmJ1ZjsKKysKKyAJCQkJcmV0dmFsID0gYWxsb2NfYmxvY2tzKGZzLCAmbGltaXQsICZpbnRfZW50LAorIAkJCQkJCSAgICAgICZkeF9lbnQsICZpbnRfb2Zmc2V0LAorIAkJCQkJCSAgICAgIE5VTEwsIG91dGRpciwgaSwgJmMyLAorQEAgLTczMyw2ICs3NDMsMTEgQEAgc3RhdGljIGVycmNvZGVfdCBjYWxjdWxhdGVfdHJlZShleHQyX2ZpbHN5cyBmcywKKyAJCQkJaWYgKHJldHZhbCkKKyAJCQkJCXJldHVybiByZXR2YWw7CisgCisrCQkJCS8qIG91dGRpci0+YnVmIG1pZ2h0IGJlIHJlYWxsb2NhdGVkICovCisrCQkJCWludF9saW1pdCA9IChzdHJ1Y3QgZXh0Ml9keF9jb3VudGxpbWl0ICopCisrCQkJCQkob3V0ZGlyLT5idWYgKyBkZWx0YTEpOworKwkJCQlyb290ID0gKHN0cnVjdCBleHQyX2R4X2VudHJ5ICopCisrCQkJCQkob3V0ZGlyLT5idWYgKyBkZWx0YTIpOworIAkJCX0KKyAJCQlkeF9lbnQtPmJsb2NrID0gZXh0MmZzX2NwdV90b19sZTMyKGkpOworIAkJCWlmIChjMyAhPSBsaW1pdC0+bGltaXQpCistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL2UyZnNwcm9ncy1maXgtbWlzc2luZy1jaGVjay1mb3ItcGVybWlzc2lvbi1kZW5pZWQucGF0Y2gKaW5kZXggNjljMDliYy4uNGQzMzVhZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9lMmZzcHJvZ3MtZml4LW1pc3NpbmctY2hlY2stZm9yLXBlcm1pc3Npb24tZGVuaWVkLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvZTJmc3Byb2dzLWZpeC1taXNzaW5nLWNoZWNrLWZvci1wZXJtaXNzaW9uLWRlbmllZC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYzc5MTQzMDlhZWVlNjIwOWRkYjY5OTVjMDg0ODA1YTkxMWQ5Y2M4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZTgzMzFhNzY5ODNlODM5YTNkMTkzNDQ2YWI4YWU5YzFiMDlkYWEwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+CiBEYXRlOiBXZWQsIDEwIEF1ZyAyMDE2IDExOjE5OjQ0ICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIEZpeCBtaXNzaW5nIGNoZWNrIGZvciBwZXJtaXNzaW9uIGRlbmllZC4KQEAgLTE5LDcgKzE5LDcgQEAKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2xpYi9zdXBwb3J0L3Byb2ZpbGUuYyBiL2xpYi9zdXBwb3J0L3Byb2ZpbGUuYwotaW5kZXggOWU5NjY3M2IuLjMyZDgzMDAyIDEwMDY0NAoraW5kZXggNTg1ZWQ1OTUuLjgxMGRkNjZiIDEwMDY0NAogLS0tIGEvbGliL3N1cHBvcnQvcHJvZmlsZS5jCiArKysgYi9saWIvc3VwcG9ydC9wcm9maWxlLmMKIEBAIC0zMzUsNyArMzM1LDcgQEAgcHJvZmlsZV9pbml0KGNvbnN0IGNoYXIgKiBjb25zdCAqZmlsZXMsIHByb2ZpbGVfdCAqcmV0X3Byb2ZpbGUpCkBAIC0zMSw2ICszMSwzIEBACiAgCQkJICAgc3RyY21wKCpmcywgZGVmYXVsdF9maWxlbmFtZSkpCiAgCQkJZ290byBlcnJvdXQ7CiAgCi0tLSAKLTIuMTYuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3F1aWV0LWRlYnVnZnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lMmZzcHJvZ3MvZTJmc3Byb2dzL3F1aWV0LWRlYnVnZnMucGF0Y2gKaW5kZXggODMwZTlkNS4uOTVlNmE3YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9ncy9xdWlldC1kZWJ1Z2ZzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3MvcXVpZXQtZGVidWdmcy5wYXRjaApAQCAtMSwxNCArMSwyMyBAQAorRnJvbSBkZTZkNmYwZGQwMTBmNWI5ZDkxNzU1M2FjYjk0MzAyNzhmNDQ4ZjIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgMjMgRGVjIDIwMTMgMTM6Mzg6MzQgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZTJmc3Byb2dzOiBzaWxlbmNlIGRlYnVnZnMKKwogV2hlbiBleGVjdXRpbmcgYSBzY3JpcHQgZG9uJ3QgZWNobyBldmVyeSBjb21tYW5kLCBhcyB3ZSBkbyB0aGlzIGZvciBlbnRpcmUKIGZpbGVzeXN0ZW1zIGF0IHJvb3RmcyB0aW1lLgogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKIFNpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CiAKKy0tLQorIGRlYnVnZnMvZGVidWdmcy5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCiBkaWZmIC0tZ2l0IGEvZGVidWdmcy9kZWJ1Z2ZzLmMgYi9kZWJ1Z2ZzL2RlYnVnZnMuYwotaW5kZXggNTU5MDI5NS4uYWM1NzI5MiAxMDA2NDQKK2luZGV4IDE1YjAxMjE0Li4xNTE2NGRmMiAxMDA2NDQKIC0tLSBhL2RlYnVnZnMvZGVidWdmcy5jCiArKysgYi9kZWJ1Z2ZzL2RlYnVnZnMuYwotQEAgLTIzNzgsNyArMjM3OCw3IEBAIHN0YXRpYyBpbnQgc291cmNlX2ZpbGUoY29uc3QgY2hhciAqY21kX2ZpbGUsIGludCBzc19pZHgpCitAQCAtMjQ5Miw3ICsyNDkyLDcgQEAgc3RhdGljIGludCBzb3VyY2VfZmlsZShjb25zdCBjaGFyICpjbWRfZmlsZSwgaW50IHNzX2lkeCkKICAJCWNwID0gc3RyY2hyKGJ1ZiwgJ1xyJyk7CiAgCQlpZiAoY3ApCiAgCQkJKmNwID0gMDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2UyZnNwcm9ncy9lMmZzcHJvZ3NfMS40NS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQ1LjQuYmIKaW5kZXggOTBkYjcxZC4uNGY3Y2FmZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQ1LjQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZTJmc3Byb2dzL2UyZnNwcm9nc18xLjQ1LjQuYmIKQEAgLTEsMTEgKzEsMTYgQEAKIHJlcXVpcmUgZTJmc3Byb2dzLmluYwogCiBTUkNfVVJJICs9ICJmaWxlOi8vcmVtb3ZlLmxkY29uZmlnLmNhbGwucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICBmaWxlOi8vcHRlc3QucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL21rZGlyX3AucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtbWlzYy1jcmVhdGVfaW5vZGUuYy1zZXQtZGlyLXMtbW9kZS1jb3JyZWN0bHkucGF0Y2ggXAotICAgICAgICAgICAgIgorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL21rZGlyX3AucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1taXNjLWNyZWF0ZV9pbm9kZS5jLXNldC1kaXItcy1tb2RlLWNvcnJlY3RseS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1jb3JyZWN0LUFNX0dOVV9HRVRURVhULnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW50bC1kby1ub3QtdHJ5LXRvLXVzZS1nZXR0ZXh0LWRlZmluZXMtdGhhdC1uby1sb25nZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOS01MTg4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZTJmc2NrLWRvbi10LXRyeS10by1yZWhhc2gtYS1kZWxldGVkLWRpcmVjdG9yeS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9lMmZzY2stZml4LXVzZS1hZnRlci1mcmVlLWluLWNhbGN1bGF0ZV90cmVlLnBhdGNoIFwKKyAgICAgICAgICAgIgogCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly9lMmZzcHJvZ3MtZml4LW1pc3NpbmctY2hlY2stZm9yLXBlcm1pc3Npb24tZGVuaWVkLnBhdGNoIFwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3F1aWV0LWRlYnVnZnMucGF0Y2ggXApAQCAtODAsMTIgKzg1LDEzIEBACiAJbXYgJHtEfSR7YmFzZV9zYmluZGlyfS90dW5lMmZzICR7RH0ke2Jhc2Vfc2JpbmRpcn0vdHVuZTJmcy5lMmZzcHJvZ3MKIH0KIAotUkRFUEVORFNfZTJmc3Byb2dzID0gImUyZnNwcm9ncy1iYWRibG9ja3MiCitSREVQRU5EU19lMmZzcHJvZ3MgPSAiZTJmc3Byb2dzLWJhZGJsb2NrcyBlMmZzcHJvZ3MtZHVtcGUyZnMiCiBSUkVDT01NRU5EU19lMmZzcHJvZ3MgPSAiZTJmc3Byb2dzLW1rZTJmcyBlMmZzcHJvZ3MtZTJmc2NrIgogCi1QQUNLQUdFUyA9KyAiZTJmc3Byb2dzLWUyZnNjayBlMmZzcHJvZ3MtZTJzY3J1YiBlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy10dW5lMmZzIGUyZnNwcm9ncy1iYWRibG9ja3MgZTJmc3Byb2dzLXJlc2l6ZTJmcyIKK1BBQ0tBR0VTID0rICJlMmZzcHJvZ3MtYmFkYmxvY2tzIGUyZnNwcm9ncy1kdW1wZTJmcyBlMmZzcHJvZ3MtZTJmc2NrIGUyZnNwcm9ncy1lMnNjcnViIGUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLXJlc2l6ZTJmcyBlMmZzcHJvZ3MtdHVuZTJmcyIKIFBBQ0tBR0VTID0rICJsaWJjb21lcnIgbGlic3MgbGliZTJwIGxpYmV4dDJmcyIKIAorRklMRVNfZTJmc3Byb2dzLWR1bXBlMmZzID0gIiR7YmFzZV9zYmluZGlyfS9kdW1wZTJmcyIKIEZJTEVTX2UyZnNwcm9ncy1yZXNpemUyZnMgPSAiJHtiYXNlX3NiaW5kaXJ9L3Jlc2l6ZTJmcyoiCiBGSUxFU19lMmZzcHJvZ3MtZTJmc2NrID0gIiR7YmFzZV9zYmluZGlyfS9lMmZzY2sgJHtiYXNlX3NiaW5kaXJ9L2ZzY2suZXh0KiIKIEZJTEVTX2UyZnNwcm9ncy1lMnNjcnViID0gIiR7YmFzZV9zYmluZGlyfS9lMnNjcnViKiIKQEAgLTExNSw3ICsxMjEsNyBAQAogCiBSREVQRU5EU19lMmZzcHJvZ3MtZTJzY3J1YiA9ICJiYXNoIgogUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImNvcmV1dGlscyBwcm9jcHMgYmFzaCBiemlwMiBkaWZmdXRpbHMgcGVybCBzZWQiCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiZTJmc3Byb2dzLWUyZnNjayBlMmZzcHJvZ3MtbWtlMmZzIGUyZnNwcm9ncy10dW5lMmZzIGUyZnNwcm9ncy1iYWRibG9ja3MgZTJmc3Byb2dzLXJlc2l6ZTJmcyIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJlMmZzcHJvZ3MtYmFkYmxvY2tzIGUyZnNwcm9ncy1kdW1wZTJmcyBlMmZzcHJvZ3MtZTJmc2NrIGUyZnNwcm9ncy1ta2UyZnMgZTJmc3Byb2dzLXJlc2l6ZTJmcyBlMmZzcHJvZ3MtdHVuZTJmcyIKIAogZG9fY29tcGlsZV9wdGVzdCgpIHsKIAlvZV9ydW5tYWtlIC1DICR7Qn0vdGVzdHMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTc3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU3NzQwYzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNTUgKzAsMCBAQAotU1VNTUFSWSA9ICJVdGlsaXRpZXMgYW5kIGxpYnJhcmllcyBmb3IgaGFuZGxpbmcgY29tcGlsZWQgb2JqZWN0IGZpbGVzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9lbGZ1dGlscyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjMrICYgR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi1ERVBFTkRTID0gInpsaWIgdmlydHVhbC9saWJpbnRsIgotREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBhcmdwLXN0YW5kYWxvbmUgZnRzIG11c2wtb2JzdGFjayAiCi0jIFRoZSBEZWJpYW4gcGF0Y2hlcyBiZWxvdyBhcmUgZnJvbToKLSMgaHR0cDovL2Z0cC5kZS5kZWJpYW4ub3JnL2RlYmlhbi9wb29sL21haW4vZS9lbGZ1dGlscy9lbGZ1dGlsc18wLjE3Ni0xLmRlYmlhbi50YXIueHoKLVNSQ19VUkkgPSAiaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9lbGZ1dGlscy9mdHAvJHtQVn0vJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWRzby1saW5rLWNoYW5nZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeC1lbGZfY3Z0X2d1bmhhc2gtaWYtZGVzdC1hbmQtc3JjLWFyZS1zYW1lLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtZml4aGVhZGVyY2hlY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1EaXNhYmxlLXRoZS10ZXN0LXRvLWNvbnZlcnQtZXVjLWpwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtRml4LWJ1aWxkLW9uLWFhcmNoNjQtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LUZpeC1jb250cm9sLXBhdGgtd2hlcmUtd2UtaGF2ZS1zdHItYXMtdW5pbml0aWFsaXplZC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJhc20tbWF5LWxpbmstd2l0aC1saWJiejItaWYtZm91bmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1saWJlbGYtZWxmX2VuZC5jLWNoZWNrLWRhdGFfbGlzdC5kYXRhLmQuZF9idWYtYmVmb3JlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZiBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vYXJtX2JhY2tlbmQuZGlmZiBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWlwc19iYWNrZW5kLmRpZmYgXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL21pcHNfcmVhZGVsZl93LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9rZnJlZWJzZF9wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi8wMDAxLUlnbm9yZS1kaWZmZXJlbmNlcy1iZXR3ZWVuLW1pcHMtbWFjaGluZS1pZGVudGlmaWVycy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMi1BZGQtc3VwcG9ydC1mb3ItbWlwczY0LWFiaXMtaW4tbWlwc19yZXR2YWwuYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMy1BZGQtbWlwcy1uNjQtcmVsb2NhdGlvbi1mb3JtYXQtaGFjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vaHVyZF9wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9pZ25vcmVfc3RybWVyZ2UuZGlmZiBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vZGlzYWJsZV93ZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGViaWFuL3Rlc3RzdWl0ZS1pZ25vcmUtZWxmbGludC5kaWZmIFwKLSAgICAgICAgICAgZmlsZTovL2RlYmlhbi9taXBzX2NmaS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMS1maXgtY29tcGlsZS1mYWlsdXJlLXdpdGgtZGViaWFuLXBhdGNoZXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1za2lwLXRoZS10ZXN0LXdoZW4tZ2NjLW5vdC1kZXBsb3llZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXBwY19pbml0cmVnLmMtSW5jbGl1ZGUtYXNtLXB0cmFjZS5oLWZvci1wdF9yZWdzLWRlZmkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL3B0ZXN0LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly9tdXNsLW9ic3RhY2stZnRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL211c2wtbGlicy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9tdXNsLXV0aWxzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL211c2wtdGVzdHMucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiMGI1ODM3MjJmOTExZTE2MzI1NDQ3MThkNTAyYWFiODciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmE0ODlkZWNjYmNhZTdkOGM5MjBmNjBkODU5MDYxMjRjMTk4OWM1OTExOTZkOTBlMGZkNjY4ZTNkYzA1MDQyZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwdGVzdAotCi1FWFRSQV9PRUNPTkYgPSAiLS1wcm9ncmFtLXByZWZpeD1ldS0iCi0KLURFUEVORFNfQlpJUDIgPSAiYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIgotREVQRU5EU19CWklQMl9jbGFzcy10YXJnZXQgPSAiYnppcDIiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnpsaWIsLS13aXRob3V0LWJ6bGliLCR7REVQRU5EU19CWklQMn0iCi1QQUNLQUdFQ09ORklHW3h6XSA9ICItLXdpdGgtbHptYSwtLXdpdGhvdXQtbHptYSx4eiIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImxpYmFzbSBsaWJlbGYgYmFzaCBtYWtlIGNvcmV1dGlscyAke1BOfS1iaW51dGlscyIKLQotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgKz0gIi0tZGlzYWJsZS10ZXN0cy1ycGF0aCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaWYgWyAiJHtUQVJHRVRfQVJDSH0iICE9ICJ4ODZfNjQiIF0gJiYgWyAteiBgZWNobyAiJHtUQVJHRVRfQVJDSH0ifGdyZXAgJ2kuODYnYCBdO3RoZW4KLQkJcm0gLWYgJHtEfSR7YmluZGlyfS9ldS1vYmpkdW1wCi0JZmkKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQljZCAke0J9L3Rlc3RzCi0Jb2VfcnVubWFrZSBidWlsZHRlc3QtVEVTVFMgb2VjaGVjawotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCWlmIFsgJHtQVEVTVF9FTkFCTEVEfSA9ICIxIiBdOyB0aGVuCi0JCSMgY29weSB0aGUgZmlsZXMgd2hpY2ggbmVlZGVkIGJ5IHRoZSBjYXNlcwotCQlURVNUX0ZJTEVTPSJzdHJpcCBzdHJpcC5vIGFkZHIybGluZSBlbGZjbXAgb2JqZHVtcCByZWFkZWxmIHNpemUubyBubS5vIG5tIGVsZmxpbnQiCi0JCWluc3RhbGwgLWQgLW0gNzU1ICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKLQkJaW5zdGFsbCAtZCAtbSA3NTUgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2xpYmVsZgotCQlpbnN0YWxsIC1kIC1tIDc1NSAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vbGliZHcKLQkJZm9yIHRlc3RfZmlsZSBpbiAke1RFU1RfRklMRVN9OyBkbwotCQkJaWYgWyAtZiAke0J9L3NyYy8ke3Rlc3RfZmlsZX0gXTsgdGhlbgotCQkJCWNwIC1yICR7Qn0vc3JjLyR7dGVzdF9maWxlfSAke0R9JHtQVEVTVF9QQVRIfS9zcmMKLQkJCWZpCi0JCWRvbmUKLQkJY3AgJHtEfSR7bGliZGlyfS9saWJlbGYtJHtQVn0uc28gJHtEfSR7UFRFU1RfUEFUSH0vbGliZWxmL2xpYmVsZi5zbwotCQljcCAke0R9JHtsaWJkaXJ9L2xpYmR3LSR7UFZ9LnNvICR7RH0ke1BURVNUX1BBVEh9L2xpYmR3L2xpYmR3LnNvCi0JCWNwIC1yICR7U30vdGVzdHMvICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQotCQljcCAtciAke0J9L3Rlc3RzLyogICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKLQkJY3AgLXIgJHtCfS9jb25maWcuaCAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9Ci0JCWNwIC1yICR7Qn0vYmFja2VuZHMgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQotCQlzZWQgLWkgJy9eTWFrZWZpbGU6L2MgTWFrZWZpbGU6JyAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUKLQkJZmluZCAke0R9JHtQVEVTVF9QQVRIfSAtdHlwZSBmIC1uYW1lICouW2hvY10gfCB4YXJncyAtaSBybSB7fQotCWZpCi19Ci0KLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAiIgotRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotIyBQYWNrYWdlIHV0aWxpdGllcyBzZXBhcmF0ZWx5Ci1QQUNLQUdFUyA9KyAiJHtQTn0tYmludXRpbHMgbGliZWxmIGxpYmFzbSBsaWJkdyIKLQotIyBzaGFyZWQgbGlicmFyaWVzIGFyZSBsaWNlbnNlZCBHUEx2MiBvciBHUEx2MyssIGJpbmFyaWVzIEdQTHYzKwotIyBhY2NvcmRpbmcgdG8gTkVXUyBmaWxlOgotIyAiVGhlIGxpY2Vuc2UgaXMgbm93IEdQTHYyL0xHUEx2MysgZm9yIHRoZSBsaWJyYXJpZXMgYW5kIEdQTHYzKyBmb3Igc3RhbmQtYWxvbmUKLSMgcHJvZ3JhbXMuIFRoZXJlIGlzIG5vdyBhbHNvIGEgZm9ybWFsIENPTlRSSUJVVElORyBkb2N1bWVudCBkZXNjcmliaW5nIGhvdyB0bwotIyBzdWJtaXQgcGF0Y2hlcy4iCi1MSUNFTlNFXyR7UE59LWJpbnV0aWxzID0gIkdQTHYzKyIKLUxJQ0VOU0VfJHtQTn0gPSAiR1BMdjMrIgotTElDRU5TRV9saWJlbGYgPSAiR1BMdjIgfCBMR1BMdjMrIgotTElDRU5TRV9saWJhc20gPSAiR1BMdjIgfCBMR1BMdjMrIgotTElDRU5TRV9saWJkdyA9ICJHUEx2MiB8IExHUEx2MysiCi0KLUZJTEVTXyR7UE59LWJpbnV0aWxzID0gIlwKLSAgICAke2JpbmRpcn0vZXUtYWRkcjJsaW5lIFwKLSAgICAke2JpbmRpcn0vZXUtbGQgXAotICAgICR7YmluZGlyfS9ldS1ubSBcCi0gICAgJHtiaW5kaXJ9L2V1LXJlYWRlbGYgXAotICAgICR7YmluZGlyfS9ldS1zaXplIFwKLSAgICAke2JpbmRpcn0vZXUtc3RyaXAiCi0KLUZJTEVTX2xpYmVsZiA9ICIke2xpYmRpcn0vbGliZWxmLSR7UFZ9LnNvICR7bGliZGlyfS9saWJlbGYuc28uKiIKLUZJTEVTX2xpYmFzbSA9ICIke2xpYmRpcn0vbGliYXNtLSR7UFZ9LnNvICR7bGliZGlyfS9saWJhc20uc28uKiIKLUZJTEVTX2xpYmR3ICA9ICIke2xpYmRpcn0vbGliZHctJHtQVn0uc28gJHtsaWJkaXJ9L2xpYmR3LnNvLiogJHtsaWJkaXJ9L2VsZnV0aWxzL2xpYioiCi0jIFNvbWUgcGFja2FnZXMgaGF2ZSB0aGUgdmVyc2lvbiBwcmVjZWVkaW5nIHRoZSAuc28gaW5zdGVhZCBwcm9wZXJseQotIyB2ZXJzaW9uZWQgLnNvLjx2ZXJzaW9uPiwgc28gd2UgbmVlZCB0byByZW9yZGVyIGFuZCByZXBhY2thZ2UuCi0jRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS8qLSR7UFZ9LnNvICR7YmFzZV9saWJkaXJ9LyotJHtQVn0uc28iCi0jRklMRVNfU09MSUJTREVWID0gIiR7bGliZGlyfS9saWJhc20uc28gJHtsaWJkaXJ9L2xpYmR3LnNvICR7bGliZGlyfS9saWJlbGYuc28iCi0KLSMgVGhlIHBhY2thZ2UgY29udGFpbnMgc3ltbGlua3MgdGhhdCB0cmlwIHVwIGluc2FuZQotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJkdyA9ICJkZXYtc28iCi0KLSMgYXZvaWQgc3RyaXBwaW5nIHNvbWUgZ2VuZXJhdGVkIGJpbmFyaWVzIG90aGVyd2lzZSBzb21lIG9mIHRoZSB0ZXN0cyBzdWNoIGFzIHRlc3Qtbmxpc3QsCi0jIHJ1bi1zdHJpcC1yZWxvYy5zaCwgcnVuLXN0cmlwLXN0cm1lcmdlLnNoIGFuZCBzbyBvbiB3aWxsIGZhaWwKLUlOSElCSVRfUEFDS0FHRV9TVFJJUF9GSUxFUyA9ICJcCi0gICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vdGVzdHMvdGVzdC1ubGlzdCBcCi0gICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vdGVzdHMvZWxmc3RybWVyZ2UgXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3Rlc3RzL2JhY2t0cmFjZS1jaGlsZCBcCi0gICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vdGVzdHMvYmFja3RyYWNlLWRhdGEgXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3Rlc3RzL2RlbGV0ZWQgXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9zdHJpcCBcCi0gICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL2FkZHIybGluZSBcCi0gICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL2VsZmNtcCBcCi0gICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL29iamR1bXAgXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9yZWFkZWxmIFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvbm0gXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9lbGZsaW50IFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9saWJlbGYvbGliZWxmLnNvIFwKLSAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9saWJkdy9saWJkdy5zbyBcCi0gICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vYmFja2VuZHMvbGliZWJsX2kzODYuc28gXAotICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L2JhY2tlbmRzL2xpYmVibF94ODZfNjQuc28gXAotIgotCi1QUklWQVRFX0xJQlNfJHtQTn0tcHRlc3QgPSAibGliZHcuc28uMSBsaWJlbGYuc28uMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTc5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZWxmdXRpbHNfMC4xNzkuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMWRhOTVlYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTc5LmJiCkBAIC0wLDAgKzEsMTU3IEBACitTVU1NQVJZID0gIlV0aWxpdGllcyBhbmQgbGlicmFyaWVzIGZvciBoYW5kbGluZyBjb21waWxlZCBvYmplY3QgZmlsZXMiCitIT01FUEFHRSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL2VsZnV0aWxzIgorU0VDVElPTiA9ICJiYXNlIgorTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MysgJiBHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKK0RFUEVORFMgPSAiemxpYiB2aXJ0dWFsL2xpYmludGwiCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGFyZ3Atc3RhbmRhbG9uZSBmdHMgbXVzbC1vYnN0YWNrICIKKyMgVGhlIERlYmlhbiBwYXRjaGVzIGJlbG93IGFyZSBmcm9tOgorIyBodHRwOi8vZnRwLmRlLmRlYmlhbi5vcmcvZGViaWFuL3Bvb2wvbWFpbi9lL2VsZnV0aWxzL2VsZnV0aWxzXzAuMTc2LTEuZGViaWFuLnRhci54egorU1JDX1VSSSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL2VsZnV0aWxzL2Z0cC8ke1BWfS8ke0JQfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZHNvLWxpbmstY2hhbmdlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItRml4LWVsZl9jdnRfZ3VuaGFzaC1pZi1kZXN0LWFuZC1zcmMtYXJlLXNhbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1maXhoZWFkZXJjaGVjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LURpc2FibGUtdGhlLXRlc3QtdG8tY29udmVydC1ldWMtanAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1GaXgtYnVpbGQtb24tYWFyY2g2NC1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliYXNtLW1heS1saW5rLXdpdGgtbGliYnoyLWlmLWZvdW5kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGliZWxmLWVsZl9lbmQuYy1jaGVjay1kYXRhX2xpc3QuZGF0YS5kLmRfYnVmLWJlZm9yZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYgXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2FybV9iYWNrZW5kLmRpZmYgXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL21pcHNfYmFja2VuZC5kaWZmIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi9taXBzX3JlYWRlbGZfdy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4va2ZyZWVic2RfcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vMDAwMS1JZ25vcmUtZGlmZmVyZW5jZXMtYmV0d2Vlbi1taXBzLW1hY2hpbmUtaWRlbnRpZmllcnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDItQWRkLXN1cHBvcnQtZm9yLW1pcHM2NC1hYmlzLWluLW1pcHNfcmV0dmFsLmMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDMtQWRkLW1pcHMtbjY0LXJlbG9jYXRpb24tZm9ybWF0LWhhY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2h1cmRfcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vaWdub3JlX3N0cm1lcmdlLmRpZmYgXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuL2Rpc2FibGVfd2Vycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RlYmlhbi90ZXN0c3VpdGUtaWdub3JlLWVsZmxpbnQuZGlmZiBcCisgICAgICAgICAgIGZpbGU6Ly9kZWJpYW4vbWlwc19jZmkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGViaWFuLzAwMDEtZml4LWNvbXBpbGUtZmFpbHVyZS13aXRoLWRlYmlhbi1wYXRjaGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc2tpcC10aGUtdGVzdC13aGVuLWdjYy1ub3QtZGVwbG95ZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wcGNfaW5pdHJlZy5jLUluY2xpdWRlLWFzbS1wdHJhY2UuaC1mb3ItcHRfcmVncy1kZWZpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9wdGVzdC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklfYXBwZW5kX2xpYmMtbXVzbCA9ICIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tdXNsLW9ic3RhY2stZnRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbXVzbC1saWJzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtbXVzbC11dGlscy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LUZpeC1lcnJvci1vbi1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjhlZTU2YjM3MWI1YTdlYTA4MTI4NGM0NGU1MTY0NjAwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI1YTU0NTU2NmNiYWNhYTM3YWU2MjIyZTU4ZjFjNDhlYTQ1NzBmNTNiYTk5MTg4NmUyZjVjZTk2ZTIyYTIzYTIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHRlc3QgcGtnY29uZmlnCisKK0VYVFJBX09FQ09ORiA9ICItLXByb2dyYW0tcHJlZml4PWV1LSAtLWRpc2FibGUtZGVidWdpbmZvZCIKKworREVQRU5EU19CWklQMiA9ICJiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUiCitERVBFTkRTX0JaSVAyX2NsYXNzLXRhcmdldCA9ICJiemlwMiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0td2l0aC1iemxpYiwtLXdpdGhvdXQtYnpsaWIsJHtERVBFTkRTX0JaSVAyfSIKK1BBQ0tBR0VDT05GSUdbeHpdID0gIi0td2l0aC1sem1hLC0td2l0aG91dC1sem1hLHh6IgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibGliYXNtIGxpYmVsZiBiYXNoIG1ha2UgY29yZXV0aWxzICR7UE59LWJpbnV0aWxzIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgLS1kaXNhYmxlLXRlc3RzLXJwYXRoIgorCitSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtdXRpbHMiCisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJY2QgJHtCfS90ZXN0cworCW9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTIG9lY2hlY2sKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlpZiBbICR7UFRFU1RfRU5BQkxFRH0gPSAiMSIgXTsgdGhlbgorCQkjIGNvcHkgdGhlIGZpbGVzIHdoaWNoIG5lZWRlZCBieSB0aGUgY2FzZXMKKwkJVEVTVF9GSUxFUz0ic3RyaXAgc3RyaXAubyBhZGRyMmxpbmUgZWxmY21wIG9iamR1bXAgcmVhZGVsZiBzaXplLm8gbm0ubyBubSBlbGZsaW50IGVsZmNvbXByZXNzIGVsZmNsYXNzaWZ5IHN0YWNrIHVuc3RyaXAiCisJCWluc3RhbGwgLWQgLW0gNzU1ICAgICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfS9zcmMKKwkJaW5zdGFsbCAtZCAtbSA3NTUgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2xpYmVsZgorCQlpbnN0YWxsIC1kIC1tIDc1NSAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vbGliZHcKKwkJaW5zdGFsbCAtZCAtbSA3NTUgICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L2xpYmFzbQorCQlmb3IgdGVzdF9maWxlIGluICR7VEVTVF9GSUxFU307IGRvCisJCQlpZiBbIC1mICR7Qn0vc3JjLyR7dGVzdF9maWxlfSBdOyB0aGVuCisJCQkJY3AgLXIgJHtCfS9zcmMvJHt0ZXN0X2ZpbGV9ICR7RH0ke1BURVNUX1BBVEh9L3NyYworCQkJZmkKKwkJZG9uZQorCQljcCAke0R9JHtsaWJkaXJ9L2xpYmVsZi0ke1BWfS5zbyAke0R9JHtQVEVTVF9QQVRIfS9saWJlbGYvbGliZWxmLnNvCisJCWNwICR7RH0ke2xpYmRpcn0vbGliZHctJHtQVn0uc28gJHtEfSR7UFRFU1RfUEFUSH0vbGliZHcvbGliZHcuc28KKwkJY3AgJHtEfSR7bGliZGlyfS9saWJhc20tJHtQVn0uc28gJHtEfSR7UFRFU1RfUEFUSH0vbGliYXNtL2xpYmFzbS5zbworCQljcCAtciAke1N9L3Rlc3RzLyAgICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KKwkJY3AgLXIgJHtCfS90ZXN0cy8qICAgICAgICAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzCisJCWNwIC1yICR7Qn0vY29uZmlnLmggICAgICAgICAgICAgICAgICAgICAke0R9JHtQVEVTVF9QQVRIfQorCQljcCAtciAke0J9L2JhY2tlbmRzICAgICAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KKwkJc2VkIC1pICcvXk1ha2VmaWxlOi9jIE1ha2VmaWxlOicgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCisJCWZpbmQgJHtEfSR7UFRFU1RfUEFUSH0gLXR5cGUgZiAtbmFtZSAqLltob2NdIHwgeGFyZ3MgLWkgcm0ge30KKwlmaQorfQorCitFWFRSQV9PRU1BS0VfY2xhc3MtbmF0aXZlID0gIiIKK0VYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmVzZGsgPSAiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKKyMgUGFja2FnZSB1dGlsaXRpZXMgc2VwYXJhdGVseQorUEFDS0FHRVMgPSsgIiR7UE59LWJpbnV0aWxzIGxpYmVsZiBsaWJhc20gbGliZHciCisKKyMgc2hhcmVkIGxpYnJhcmllcyBhcmUgbGljZW5zZWQgR1BMdjIgb3IgR1BMdjMrLCBiaW5hcmllcyBHUEx2MysKKyMgYWNjb3JkaW5nIHRvIE5FV1MgZmlsZToKKyMgIlRoZSBsaWNlbnNlIGlzIG5vdyBHUEx2Mi9MR1BMdjMrIGZvciB0aGUgbGlicmFyaWVzIGFuZCBHUEx2MysgZm9yIHN0YW5kLWFsb25lCisjIHByb2dyYW1zLiBUaGVyZSBpcyBub3cgYWxzbyBhIGZvcm1hbCBDT05UUklCVVRJTkcgZG9jdW1lbnQgZGVzY3JpYmluZyBob3cgdG8KKyMgc3VibWl0IHBhdGNoZXMuIgorTElDRU5TRV8ke1BOfS1iaW51dGlscyA9ICJHUEx2MysiCitMSUNFTlNFXyR7UE59ID0gIkdQTHYzKyIKK0xJQ0VOU0VfbGliZWxmID0gIkdQTHYyIHwgTEdQTHYzKyIKK0xJQ0VOU0VfbGliYXNtID0gIkdQTHYyIHwgTEdQTHYzKyIKK0xJQ0VOU0VfbGliZHcgPSAiR1BMdjIgfCBMR1BMdjMrIgorCitGSUxFU18ke1BOfS1iaW51dGlscyA9ICJcCisgICAgJHtiaW5kaXJ9L2V1LWFkZHIybGluZSBcCisgICAgJHtiaW5kaXJ9L2V1LWxkIFwKKyAgICAke2JpbmRpcn0vZXUtbm0gXAorICAgICR7YmluZGlyfS9ldS1yZWFkZWxmIFwKKyAgICAke2JpbmRpcn0vZXUtc2l6ZSBcCisgICAgJHtiaW5kaXJ9L2V1LXN0cmlwIgorCitGSUxFU19saWJlbGYgPSAiJHtsaWJkaXJ9L2xpYmVsZi0ke1BWfS5zbyAke2xpYmRpcn0vbGliZWxmLnNvLioiCitGSUxFU19saWJhc20gPSAiJHtsaWJkaXJ9L2xpYmFzbS0ke1BWfS5zbyAke2xpYmRpcn0vbGliYXNtLnNvLioiCitGSUxFU19saWJkdyAgPSAiJHtsaWJkaXJ9L2xpYmR3LSR7UFZ9LnNvICR7bGliZGlyfS9saWJkdy5zby4qICR7bGliZGlyfS9lbGZ1dGlscy9saWIqIgorIyBTb21lIHBhY2thZ2VzIGhhdmUgdGhlIHZlcnNpb24gcHJlY2VlZGluZyB0aGUgLnNvIGluc3RlYWQgcHJvcGVybHkKKyMgdmVyc2lvbmVkIC5zby48dmVyc2lvbj4sIHNvIHdlIG5lZWQgdG8gcmVvcmRlciBhbmQgcmVwYWNrYWdlLgorI0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vKi0ke1BWfS5zbyAke2Jhc2VfbGliZGlyfS8qLSR7UFZ9LnNvIgorI0ZJTEVTX1NPTElCU0RFViA9ICIke2xpYmRpcn0vbGliYXNtLnNvICR7bGliZGlyfS9saWJkdy5zbyAke2xpYmRpcn0vbGliZWxmLnNvIgorCisjIFRoZSBwYWNrYWdlIGNvbnRhaW5zIHN5bWxpbmtzIHRoYXQgdHJpcCB1cCBpbnNhbmUKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliZHcgPSAiZGV2LXNvIgorCisjIGF2b2lkIHN0cmlwcGluZyBzb21lIGdlbmVyYXRlZCBiaW5hcmllcyBvdGhlcndpc2Ugc29tZSBvZiB0aGUgdGVzdHMgc3VjaCBhcyB0ZXN0LW5saXN0LAorIyBydW4tc3RyaXAtcmVsb2Muc2gsIHJ1bi1zdHJpcC1zdHJtZXJnZS5zaCBhbmQgc28gb24gd2lsbCBmYWlsCitJTkhJQklUX1BBQ0tBR0VfU1RSSVBfRklMRVMgPSAiXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3Rlc3RzL3Rlc3Qtbmxpc3QgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3Rlc3RzL2VsZnN0cm1lcmdlIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9iYWNrdHJhY2UtY2hpbGQgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3Rlc3RzL2JhY2t0cmFjZS1kYXRhIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9iYWNrdHJhY2UtZHdhcmYgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3Rlc3RzL2RlbGV0ZWQgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9zdHJpcCBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL2FkZHIybGluZSBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL2VsZmNtcCBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL29iamR1bXAgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9yZWFkZWxmIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvbm0gXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9lbGZsaW50IFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9zcmMvZWxmY2xhc3NpZnkgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L3NyYy9zdGFjayBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vc3JjL3Vuc3RyaXAgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L2xpYmVsZi9saWJlbGYuc28gXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L2xpYmR3L2xpYmR3LnNvIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9saWJhc20vbGliYXNtLnNvIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9iYWNrZW5kcy9saWJlYmxfaTM4Ni5zbyBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vYmFja2VuZHMvbGliZWJsX3g4Nl82NC5zbyBcCisiCisKK1BSSVZBVEVfTElCU18ke1BOfS1wdGVzdCA9ICJsaWJkdy5zby4xIGxpYmVsZi5zby4xIGxpYmFzbS5zby4xIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1kc28tbGluay1jaGFuZ2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWRzby1saW5rLWNoYW5nZS5wYXRjaAppbmRleCBhZjc5ZWY0Li42MjAzMTA3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWRzby1saW5rLWNoYW5nZS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWRzby1saW5rLWNoYW5nZS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYjk5YWExMmNmODc5Y2UyMDBlMDNkNzVlNTQzYzdhYjJkZmE1NTAzYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZWM5YTc3NDI3MzRhYWU1NDE3YzBlYmJmZmNlNjZhYzM1M2U2Y2FlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIERhdGU6IFR1ZSwgMTUgQXVnIDIwMTcgMTc6MTA6NTcgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gZHNvIGxpbmsgY2hhbmdlCkBAIC0yMywxMCArMjMsMTAgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQotaW5kZXggMmIxYzBkYy4uOTMwNWI4NCAxMDA2NDQKK2luZGV4IGU0NjJlN2QuLmVhMTIxNWIgMTAwNjQ0CiAtLS0gYS9zcmMvTWFrZWZpbGUuYW0KICsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTQ0LDcgKzQ0LDcgQEAgbGliZHcgPSAuLi9saWJkdy9saWJkdy5hIC1seiAkKHppcF9MSUJTKSAkKGxpYmVsZikgJChsaWJlYmwpIC1sZGwKK0BAIC00NSw3ICs0NSw3IEBAIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuYSAtbHogJCh6aXBfTElCUykgJChsaWJlbGYpIC1sZGwgLWxwdGhyZWFkCiAgbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5hIC1segogIGVsc2UKICBsaWJhc20gPSAuLi9saWJhc20vbGliYXNtLnNvCkBAIC0zNCwxMiArMzQsMTIgQEAKICtsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LnNvICQoemlwX0xJQlMpICQobGliZWxmKSAkKGxpYmVibCkgLWxkbAogIGxpYmVsZiA9IC4uL2xpYmVsZi9saWJlbGYuc28KICBlbmRpZgotIGxpYmVibCA9IC4uL2xpYmVibC9saWJlYmwuYQorIGxpYmVibCA9IC4uL2xpYmVibC9saWJlYmwuYSAuLi9iYWNrZW5kcy9saWJlYmxfYmFja2VuZHMuYSAuLi9saWJjcHUvbGliY3B1LmEKIGRpZmYgLS1naXQgYS90ZXN0cy9NYWtlZmlsZS5hbSBiL3Rlc3RzL01ha2VmaWxlLmFtCi1pbmRleCAxYjBjN2QzLi5iY2VkMTliIDEwMDY0NAoraW5kZXggZWFiNGFlNi4uZjU5YTAxZiAxMDA2NDQKIC0tLSBhL3Rlc3RzL01ha2VmaWxlLmFtCiArKysgYi90ZXN0cy9NYWtlZmlsZS5hbQotQEAgLTQ3Niw3ICs0NzYsNyBAQCBsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LmEgLWx6ICQoemlwX0xJQlMpICQobGliZWxmKSAkKGxpYmVibCkgLWxkbAorQEAgLTUxNiw3ICs1MTYsNyBAQCBsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LmEgLWx6ICQoemlwX0xJQlMpICQobGliZWxmKSAkKGxpYmVibCkgLWxkbCAtbHB0aHJlYWQKICBsaWJlbGYgPSAuLi9saWJlbGYvbGliZWxmLmEgLWx6CiAgbGliYXNtID0gLi4vbGliYXNtL2xpYmFzbS5hCiAgZWxzZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMS1saWJhc20tbWF5LWxpbmstd2l0aC1saWJiejItaWYtZm91bmQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWxpYmFzbS1tYXktbGluay13aXRoLWxpYmJ6Mi1pZi1mb3VuZC5wYXRjaAppbmRleCAwZDUzM2M4Li43M2VhZDZkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWxpYmFzbS1tYXktbGluay13aXRoLWxpYmJ6Mi1pZi1mb3VuZC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLWxpYmFzbS1tYXktbGluay13aXRoLWxpYmJ6Mi1pZi1mb3VuZC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZDdiZTY4N2MzNWZhNDI5NTQ4NzQwMzRjODJjYTkwNTlkMjgxOTZmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gOGU1ZmZmOGIxZDgxOWUwODcwZmIyMmIyNzk1MGJiNWYxMGM3YTI3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDQgT2N0IDIwMTcgMjI6MzA6NDYgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gbGliYXNtIG1heSBsaW5rIHdpdGggbGliYnoyIGlmIGZvdW5kCkBAIC0xNywxNiArMTcsMTYgQEAKICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCA5MzA1Yjg0Li45YjdlODUzIDEwMDY0NAoraW5kZXggZWExMjE1Yi4uMTNkOWJkYSAxMDA2NDQKIC0tLSBhL3NyYy9NYWtlZmlsZS5hbQogKysrIGIvc3JjL01ha2VmaWxlLmFtCi1AQCAtMzksMTEgKzM5LDExIEBAIEVYVFJBX0RJU1QgKz0gbWFrZS1kZWJ1Zy1hcmNoaXZlLmluCitAQCAtNDAsMTEgKzQwLDExIEBAIEVYVFJBX0RJU1QgKz0gbWFrZS1kZWJ1Zy1hcmNoaXZlLmluCiAgQ0xFQU5GSUxFUyArPSBtYWtlLWRlYnVnLWFyY2hpdmUKICAKICBpZiBCVUlMRF9TVEFUSUMKIC1saWJhc20gPSAuLi9saWJhc20vbGliYXNtLmEKICtsaWJhc20gPSAuLi9saWJhc20vbGliYXNtLmEgJCh6aXBfTElCUykKLSBsaWJkdyA9IC4uL2xpYmR3L2xpYmR3LmEgLWx6ICQoemlwX0xJQlMpICQobGliZWxmKSAkKGxpYmVibCkgLWxkbAorIGxpYmR3ID0gLi4vbGliZHcvbGliZHcuYSAtbHogJCh6aXBfTElCUykgJChsaWJlbGYpIC1sZGwgLWxwdGhyZWFkCiAgbGliZWxmID0gLi4vbGliZWxmL2xpYmVsZi5hIC1segogIGVsc2UKIC1saWJhc20gPSAuLi9saWJhc20vbGliYXNtLnNvCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLW11c2wtb2JzdGFjay1mdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAxLW11c2wtb2JzdGFjay1mdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc1MWEyZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDEtbXVzbC1vYnN0YWNrLWZ0cy5wYXRjaApAQCAtMCwwICsxLDEyNyBAQAorRnJvbSA4Y2NmM2Q5MmI4NzY2YjUzZjIwM2RmN2UwMWI0ODk2MDRlZjg1MWYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCAyMyBBdWcgMjAxOSAxMDoxNzoyNSArMDgwMAorU3ViamVjdDogW1BBVENIIDEvNF0gbXVzbC1vYnN0YWNrLWZ0cworCitMb29rIGZvciBsaWJmdHMgYW5kIGxpYm9ic3RhY2sgZHVyaW5nIGNvbmZpZ3VyZSwgdGhlc2UKK2xpYnJhcmllcyBhcmUgZXh0ZXJuYWwgdG8gbGliYyB3aGVuIHVzaW5nIG11c2wsIHdoZXJlYXMKK29uIGdsaWJjIHRoZXNlIGxpYnJhcmllcyBhcmUgcHJvdmlkZWQgaW4gbGliYyBpdHNlbGYuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3dvcmthcm91bmQgZm9yIG11c2xdCisKK1JlYmFzZSB0byAwLjE3NworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCistLS0KKyBjb25maWd1cmUuYWMgICAgICB8IDU0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgbGliZHcvTWFrZWZpbGUuYW0gfCAgMiArLQorIHNyYy9NYWtlZmlsZS5hbSAgIHwgIDYgKysrLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCA1OCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBjYWQ3YjJiLi42ZDQyMjliIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC01MjksNiArNTI5LDYwIEBAIGVsc2UKKyBmaQorIEFDX1NVQlNUKFthcmdwX0xEQUREXSkKKyAKKytkbmwgQ2hlY2sgaWYgd2UgaGF2ZSBmdHMgYXZhaWxhYmxlIGZyb20gb3VyIGxpYmMKKytBQ19MSU5LX0lGRUxTRSgKKysJW0FDX0xBTkdfUFJPR1JBTSgKKysJCVsjaWYgIWRlZmluZWQoX194ODZfNjRfXykKKysJCSN1bmRlZiAgX0ZJTEVfT0ZGU0VUX0JJVFMKKysJCSNkZWZpbmUgX0ZJTEVfT0ZGU0VUX0JJVFMgMzIKKysJCSNlbmRpZgorKwkJI2luY2x1ZGUgPGZ0cy5oPl0sCisrCQlbRlRTKiBmdHMgPSAwOyByZXR1cm4gZnRzX2Nsb3NlKGZ0cyk7IHJldHVybiAwO10KKysJCSldLAorKwlbbGliY19oYXNfZnRzPSJ0cnVlIl0sCisrCVtsaWJjX2hhc19mdHM9ImZhbHNlIl0KKyspCisrCisrZG5sIElmIG91ciBsaWJjIGRvZXNuJ3QgcHJvdmlkZSBmdHMsIHRoZW4gdGVzdCBmb3IgbGliZnRzCisraWYgdGVzdCAiJGxpYmNfaGFzX2Z0cyIgPSAiZmFsc2UiIDsgdGhlbgorKwlBQ19NU0dfV0FSTigibGliYyBkb2VzIG5vdCBoYXZlIGZ0cyIpCisrCUFDX0NIRUNLX0xJQihbZnRzXSwgW2Z0c19jbG9zZV0sIFtoYXZlX2Z0cz0idHJ1ZSJdLCBbaGF2ZV9mdHM9ImZhbHNlIl0pCisrCisrCWlmIHRlc3QgIiRoYXZlX2Z0cyIgPSAiZmFsc2UiOyB0aGVuCisrCQlBQ19NU0dfRVJST1IoIm5vIGxpYmZ0cyBmb3VuZCIpCisrCWVsc2UKKysJCWZ0c19MREFERD0iLWxmdHMiCisrCWZpCisrZWxzZQorKwlmdHNfTERBREQ9IiIKKytmaQorK0FDX1NVQlNUKFtmdHNfTERBRERdKQorKworK2RubCBDaGVjayBpZiB3ZSBoYXZlIG9ic3RhY2sgYXZhaWxhYmxlIGZyb20gb3VyIGxpYmMKKytBQ19MSU5LX0lGRUxTRSgKKysJW0FDX0xBTkdfUFJPR1JBTSgKKysJCVsjaW5jbHVkZSA8b2JzdGFjay5oPl0sCisrCQlbX29ic3RhY2tfYmVnaW4oMCwgMCwgMCwgTlVMTCwgTlVMTCk7IHJldHVybiAwO10KKysJCSldLAorKwlbbGliY19oYXNfb2JzdGFjaz0idHJ1ZSJdLAorKwlbbGliY19oYXNfb2JzdGFjaz0iZmFsc2UiXQorKykKKysKKytkbmwgSWYgb3VyIGxpYmMgZG9lc24ndCBwcm92aWRlIG9ic3RhY2ssIHRoZW4gdGVzdCBmb3IgbGlib2JzdGFjaworK2lmIHRlc3QgIiRsaWJjX2hhc19vYnN0YWNrIiA9ICJmYWxzZSIgOyB0aGVuCisrCUFDX01TR19XQVJOKCJsaWJjIGRvZXMgbm90IGhhdmUgb2JzdGFjayIpCisrCUFDX0NIRUNLX0xJQihbb2JzdGFja10sIFtfb2JzdGFja19iZWdpbl0sIFtoYXZlX29ic3RhY2s9InRydWUiXSwgW2hhdmVfb2JzdGFjaz0iZmFsc2UiXSkKKysKKysJaWYgdGVzdCAiJGhhdmVfb2JzdGFjayIgPSAiZmFsc2UiOyB0aGVuCisrCQlBQ19NU0dfRVJST1IoIm5vIGxpYm9ic3RhY2sgZm91bmQiKQorKwllbHNlCisrCQlvYnN0YWNrX0xEQUREPSItbG9ic3RhY2siCisrCWZpCisrZWxzZQorKwlvYnN0YWNrX0xEQUREPSIiCisrZmkKKytBQ19TVUJTVChbb2JzdGFja19MREFERF0pCisrCisgZG5sIFRoZSBkaXJlY3RvcmllcyB3aXRoIGNvbnRlbnQuCisgCisgZG5sIERvY3VtZW50YXRpb24uCitkaWZmIC0tZ2l0IGEvbGliZHcvTWFrZWZpbGUuYW0gYi9saWJkdy9NYWtlZmlsZS5hbQoraW5kZXggMzNiNTgzOC4uZmY5MmUwMiAxMDA2NDQKKy0tLSBhL2xpYmR3L01ha2VmaWxlLmFtCisrKysgYi9saWJkdy9NYWtlZmlsZS5hbQorQEAgLTEwOSw3ICsxMDksNyBAQCBsaWJkd19zb19MSUJTID0gLi4vbGliZWJsL2xpYmVibF9waWMuYSAuLi9iYWNrZW5kcy9saWJlYmxfYmFja2VuZHNfcGljLmEgXAorIAkJLi4vbGliY3B1L2xpYmNwdV9waWMuYSBsaWJkd19waWMuYSAuLi9saWJkd2VsZi9saWJkd2VsZl9waWMuYSBcCisgCQkuLi9saWJkd2ZsL2xpYmR3ZmxfcGljLmEKKyBsaWJkd19zb19ERVBTID0gLi4vbGliL2xpYmV1LmEgLi4vbGliZWxmL2xpYmVsZi5zbworLWxpYmR3X3NvX0xETElCUyA9ICQobGliZHdfc29fREVQUykgLWxkbCAtbHogJChhcmdwX0xEQUREKSAkKHppcF9MSUJTKSAtcHRocmVhZAorK2xpYmR3X3NvX0xETElCUyA9ICQobGliZHdfc29fREVQUykgLWxkbCAtbHogJChhcmdwX0xEQUREKSAkKGZ0c19MREFERCkgJCh6aXBfTElCUykgLXB0aHJlYWQKKyBsaWJkd19zb19TT1VSQ0VTID0KKyBsaWJkdy5zbyQoRVhFRVhUKTogJChzcmNkaXIpL2xpYmR3Lm1hcCAkKGxpYmR3X3NvX0xJQlMpICQobGliZHdfc29fREVQUykKKyAJJChBTV9WX0NDTEQpJChMSU5LKSAkKGRzb19MREZMQUdTKSAtbyAkQCBcCitkaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCitpbmRleCAxM2Q5YmRhLi5kNWE0ZjdkIDEwMDY0NAorLS0tIGEvc3JjL01ha2VmaWxlLmFtCisrKysgYi9zcmMvTWFrZWZpbGUuYW0KK0BAIC02OSw3ICs2OSw3IEBAIGFyX25vX1dzdGFja191c2FnZSA9IHllcworIHVuc3RyaXBfbm9fV3N0YWNrX3VzYWdlID0geWVzCisgCisgcmVhZGVsZl9MREFERCA9ICQobGliZHcpICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKQorLW5tX0xEQUREID0gJChsaWJkdykgJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpIFwKKytubV9MREFERCA9ICQobGliZHcpICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKSAkKG9ic3RhY2tfTERBREQpIFwKKyAJICAgJChkZW1hbmdsZWxpYikKKyBzaXplX0xEQUREID0gJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkKKyBzdHJpcF9MREFERCA9ICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJkdykgJChsaWJldSkgJChhcmdwX0xEQUREKQorQEAgLTc4LDkgKzc4LDkgQEAgZmluZHRleHRyZWxfTERBREQgPSAkKGxpYmR3KSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKQorIGFkZHIybGluZV9MREFERCA9ICQobGliZHcpICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpICQoZGVtYW5nbGVsaWIpCisgZWxmY21wX0xEQUREID0gJChsaWJlYmwpICQobGliZHcpICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpCisgb2JqZHVtcF9MREFERCAgPSAkKGxpYmFzbSkgJChsaWJlYmwpICQobGliZHcpICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpCistcmFubGliX0xEQUREID0gbGliYXIuYSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKQorK3JhbmxpYl9MREFERCA9IGxpYmFyLmEgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgJChvYnN0YWNrX0xEQUREKQorIHN0cmluZ3NfTERBREQgPSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKQorLWFyX0xEQUREID0gbGliYXIuYSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKQorK2FyX0xEQUREID0gbGliYXIuYSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKSAkKG9ic3RhY2tfTERBREQpCisgdW5zdHJpcF9MREFERCA9ICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJkdykgJChsaWJldSkgJChhcmdwX0xEQUREKQorIHN0YWNrX0xEQUREID0gJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmR3KSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpICQoZGVtYW5nbGVsaWIpCisgZWxmY29tcHJlc3NfTERBREQgPSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZHcpICQobGliZXUpICQoYXJncF9MREFERCkKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDItbXVzbC1saWJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMi1tdXNsLWxpYnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2YxNDY4MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDItbXVzbC1saWJzLnBhdGNoCkBAIC0wLDAgKzEsMTQ1IEBACitGcm9tIGVhOTA4YzcwMDlkZTVhMjA4MzgzYWJmNGJlYzRjNmIzZDk1MTljYTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDIzIEF1ZyAyMDE5IDEwOjE4OjQ3ICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMi80XSBtdXNsLWxpYnMKKworQ29sbGVjdGlvbiBvZiBmaXhlcyBuZWVkZWQgdG8gY29tcGlsZSBsaWJlbGYgYW5kIG90aGVyIGxpYnJhcmllcworcHJvdmlkZWQgYnkgZWxmdXRpbHMgZm9yIG11c2wgdGFyZ2V0cworCitlcnJvciBpcyBnbGliYyBzcGVjaWZpYyBBUEksIHNvIHRoaXMgcGF0Y2ggd2lsbCBtb3N0bHkgbm90IGFjY2VwdGVkCit1cHN0cmVhbSBnaXZlbiB0aGF0IGVsZnV0aWxzIGhhcyBiZWVuIGNsb3NlbHkgdGllZCB0byBnbGliYworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt3b3JrYXJvdW5kIGZvciBtdXNsXQorCitSZWJhc2UgdG8gMC4xNzcKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKworLS0tCisgbGliL2Vycm9yLmggICAgICAgICAgICAgICAgICAgIHwgMjcgKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgbGliL2ZpeGVkc2l6ZWhhc2guaCAgICAgICAgICAgIHwgIDEgLQorIGxpYi9saWJldS5oICAgICAgICAgICAgICAgICAgICB8ICAxICsKKyBsaWJkd2ZsL2R3ZmxfZXJyb3IuYyAgICAgICAgICAgfCAgOSArKysrKysrKysKKyBsaWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMgfCAgMSArCisgbGliZWxmL2VsZi5oICAgICAgICAgICAgICAgICAgIHwgIDkgKysrKysrLS0tCisgNiBmaWxlcyBjaGFuZ2VkLCA0NCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBsaWIvZXJyb3IuaAorCitkaWZmIC0tZ2l0IGEvbGliL2Vycm9yLmggYi9saWIvZXJyb3IuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAuLmVmMDY4MjcKKy0tLSAvZGV2L251bGwKKysrKyBiL2xpYi9lcnJvci5oCitAQCAtMCwwICsxLDI3IEBACisrI2lmbmRlZiBfRVJST1JfSF8KKysjZGVmaW5lIF9FUlJPUl9IXworKworKyNpbmNsdWRlIDxzdGRhcmcuaD4KKysjaW5jbHVkZSA8c3RkaW8uaD4KKysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPHN0cmluZy5oPgorKyNpbmNsdWRlIDxlcnJuby5oPgorKworK3N0YXRpYyB1bnNpZ25lZCBpbnQgZXJyb3JfbWVzc2FnZV9jb3VudCA9IDA7CisrCisrc3RhdGljIGlubGluZSB2b2lkIGVycm9yKGludCBzdGF0dXMsIGludCBlcnJudW0sIGNvbnN0IGNoYXIqIGZvcm1hdCwgLi4uKQorK3sKKysJdmFfbGlzdCBhcDsKKysJZnByaW50ZihzdGRlcnIsICIlczogIiwgcHJvZ3JhbV9pbnZvY2F0aW9uX25hbWUpOworKwl2YV9zdGFydChhcCwgZm9ybWF0KTsKKysJdmZwcmludGYoc3RkZXJyLCBmb3JtYXQsIGFwKTsKKysJdmFfZW5kKGFwKTsKKysJaWYgKGVycm51bSkKKysJCWZwcmludGYoc3RkZXJyLCAiOiAlcyIsIHN0cmVycm9yKGVycm51bSkpOworKwlmcHJpbnRmKHN0ZGVyciwgIlxuIik7CisrCWVycm9yX21lc3NhZ2VfY291bnQrKzsKKysJaWYgKHN0YXR1cykKKysJCWV4aXQoc3RhdHVzKTsKKyt9CisrCisrI2VuZGlmCS8qIF9FUlJPUl9IXyAqLworZGlmZiAtLWdpdCBhL2xpYi9maXhlZHNpemVoYXNoLmggYi9saWIvZml4ZWRzaXplaGFzaC5oCitpbmRleCBkYWMyYTVmLi40MzAxNmZjIDEwMDY0NAorLS0tIGEvbGliL2ZpeGVkc2l6ZWhhc2guaAorKysrIGIvbGliL2ZpeGVkc2l6ZWhhc2guaAorQEAgLTMwLDcgKzMwLDYgQEAKKyAjaW5jbHVkZSA8ZXJybm8uaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CisgI2luY2x1ZGUgPHN0cmluZy5oPgorLSNpbmNsdWRlIDxzeXMvY2RlZnMuaD4KKyAKKyAjaW5jbHVkZSA8c3lzdGVtLmg+CisgCitkaWZmIC0tZ2l0IGEvbGliL2xpYmV1LmggYi9saWIvbGliZXUuaAoraW5kZXggZWNiNGQwMS4uZWRjODVlMyAxMDA2NDQKKy0tLSBhL2xpYi9saWJldS5oCisrKysgYi9saWIvbGliZXUuaAorQEAgLTI5LDYgKzI5LDcgQEAKKyAjaWZuZGVmIExJQkVVX0gKKyAjZGVmaW5lIExJQkVVX0gKKyAKKysjaW5jbHVkZSAic3lzdGVtLmgiCisgI2luY2x1ZGUgPHN0ZGRlZi5oPgorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAKK2RpZmYgLS1naXQgYS9saWJkd2ZsL2R3ZmxfZXJyb3IuYyBiL2xpYmR3ZmwvZHdmbF9lcnJvci5jCitpbmRleCA3YmNmNjFjLi4xMWRjYzhiIDEwMDY0NAorLS0tIGEvbGliZHdmbC9kd2ZsX2Vycm9yLmMKKysrKyBiL2xpYmR3ZmwvZHdmbF9lcnJvci5jCitAQCAtMTU0LDcgKzE1NCwxNiBAQCBkd2ZsX2Vycm1zZyAoaW50IGVycm9yKQorICAgc3dpdGNoIChlcnJvciAmfiAweGZmZmYpCisgICAgIHsKKyAgICAgY2FzZSBPVEhFUl9FUlJPUiAoRVJSTk8pOgorKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykKKyAgICAgICByZXR1cm4gc3RyZXJyb3JfciAoZXJyb3IgJiAweGZmZmYsICJiYWQiLCAwKTsKKysjZWxzZQorKyAgICAgIHsKKysgICAgICAgIHN0YXRpYyBfX3RocmVhZCBjaGFyIGJ1ZlsxMjhdID0gIiI7CisrICAgICAgICBpZiAoc3RyZXJyb3JfciAoZXJyb3IgJiAweGZmZmYsIGJ1Ziwgc2l6ZW9mKGJ1ZikpID09IDApCisrICAgICAgICAgIHJldHVybiBidWY7CisrICAgICAgfQorKyAgICAgIHJldHVybiAic3RyZXJyb3JfcigpIGZhaWxlZCI7CisrI2VuZGlmCisgICAgIGNhc2UgT1RIRVJfRVJST1IgKExJQkVMRik6CisgICAgICAgcmV0dXJuIGVsZl9lcnJtc2cgKGVycm9yICYgMHhmZmZmKTsKKyAgICAgY2FzZSBPVEhFUl9FUlJPUiAoTElCRFcpOgorZGlmZiAtLWdpdCBhL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYyBiL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYworaW5kZXggZDQ2YWI1YS4uMWMzZmFlZSAxMDA2NDQKKy0tLSBhL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYworKysrIGIvbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jCitAQCAtNTAsNiArNTAsNyBAQAorICNpbmNsdWRlIDxzeXMvdXRzbmFtZS5oPgorICNpbmNsdWRlIDxmY250bC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKysjaW5jbHVkZSAic3lzdGVtLmgiCisgCisgLyogSWYgZnRzLmggaXMgaW5jbHVkZWQgYmVmb3JlIGNvbmZpZy5oLCBpdHMgaW5kaXJlY3QgaW5jbHVzaW9ucyBtYXkgbm90CisgICAgZ2l2ZSB1cyB0aGUgcmlnaHQgTEZTIGFsaWFzZXMgb2YgdGhlc2UgZnVuY3Rpb25zLCBzbyBtYXAgdGhlbSBtYW51YWxseS4gICovCitkaWZmIC0tZ2l0IGEvbGliZWxmL2VsZi5oIGIvbGliZWxmL2VsZi5oCitpbmRleCBiZWQyNzNkLi5iZTIyOGU2IDEwMDY0NAorLS0tIGEvbGliZWxmL2VsZi5oCisrKysgYi9saWJlbGYvZWxmLmgKK0BAIC0yMSw3ICsyMSw5IEBACisgCisgI2luY2x1ZGUgPGZlYXR1cmVzLmg+CisgCistX19CRUdJTl9ERUNMUworKyNpZmRlZiBfX2NwbHVzcGx1cworK2V4dGVybiAiQyIgeworKyNlbmRpZgorIAorIC8qIFN0YW5kYXJkIEVMRiB0eXBlcy4gICovCisgCitAQCAtNDAyOSw2ICs0MDMxLDcgQEAgZW51bQorICNkZWZpbmUgUl9ORFMzMl9UTFNfVFBPRkYJMTAyCisgI2RlZmluZSBSX05EUzMyX1RMU19ERVNDCTExOQorIAorLV9fRU5EX0RFQ0xTCistCisrI2lmZGVmIF9fY3BsdXNwbHVzCisrfQorKyNlbmRpZgorICNlbmRpZgkvKiBlbGYuaCAqLworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMy1tdXNsLXV0aWxzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwMy1tdXNsLXV0aWxzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5YzlkOWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDAzLW11c2wtdXRpbHMucGF0Y2gKQEAgLTAsMCArMSwxNjYgQEAKK0Zyb20gOTQwMjhiMTZlNTZjOGVlZjFhYTAyZGNjNGRhMjY4YTBlNDcxYjRlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgMjMgQXVnIDIwMTkgMTA6MTk6NDggKzA4MDAKK1N1YmplY3Q6IFtQQVRDSCAzLzRdIG11c2wtdXRpbHMKKworUHJvdmlkZSBtaXNzaW5nIGRlZmluZXMgd2hpY2ggb3RoZXJ3aXNlIGFyZSBhdmFpbGFibGUgb24gZ2xpYmMgc3lzdGVtIGhlYWRlcnMKKworQWx0ZXIgdGhlIGVycm9yIEFQSSB0byBtYXRjaCBwb3NpeCB2ZXJzaW9uCit1c2UgcXNvcnQgaW5zdGVhZCBvZiBxc29ydF9yIHdoaWNoIGlzIGdsaWJjIHNwZWNpZmljIEFQSQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt3b3JrYXJvdW5kIGZvciBtdXNsXQorCitSZWJhc2UgdG8gMC4xNzcKK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKworLS0tCisgc3JjL2FybGliLmggICAgICAgfCAgNiArKysrKysKKyBzcmMvZWxmY29tcHJlc3MuYyB8ICA3ICsrKysrKysKKyBzcmMvcmVhZGVsZi5jICAgICB8IDIwICsrKysrKysrKysrKy0tLS0tLS0tCisgc3JjL3N0cmlwLmMgICAgICAgfCAgNyArKysrKysrCisgc3JjL3Vuc3RyaXAuYyAgICAgfCAgOSArKysrKysrKysKKyA1IGZpbGVzIGNoYW5nZWQsIDQxIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvYXJsaWIuaCBiL3NyYy9hcmxpYi5oCitpbmRleCBlMTE3MTY2Li44MzI2ZjZjIDEwMDY0NAorLS0tIGEvc3JjL2FybGliLmgKKysrKyBiL3NyYy9hcmxpYi5oCitAQCAtMjksNiArMjksMTIgQEAKKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorIAorKyNpZiAhZGVmaW5lZChBTExQRVJNUykKKysjIGRlZmluZSBBTExQRVJNUyAoU19JU1VJRHxTX0lTR0lEfFNfSVNWVFh8U19JUldYVXxTX0lSV1hHfFNfSVJXWE8pIC8qIDA3Nzc3ICovCisrI2VuZGlmCisrI2lmICFkZWZpbmVkKERFRkZJTEVNT0RFKQorKyMgZGVmaW5lIERFRkZJTEVNT0RFIChTX0lSVVNSfFNfSVdVU1J8U19JUkdSUHxTX0lXR1JQfFNfSVJPVEh8U19JV09USCkvKiAwNjY2Ki8KKysjZW5kaWYKKyAKKyAvKiBTdGF0ZSBvZiAtRC8tVSBmbGFncy4gICovCisgZXh0ZXJuIGJvb2wgYXJsaWJfZGV0ZXJtaW5pc3RpY19vdXRwdXQ7CitkaWZmIC0tZ2l0IGEvc3JjL2VsZmNvbXByZXNzLmMgYi9zcmMvZWxmY29tcHJlc3MuYworaW5kZXggNmJhNmFmNC4uMGM3Njc0YiAxMDA2NDQKKy0tLSBhL3NyYy9lbGZjb21wcmVzcy5jCisrKysgYi9zcmMvZWxmY29tcHJlc3MuYworQEAgLTM3LDYgKzM3LDEzIEBACisgI2luY2x1ZGUgImxpYmV1LmgiCisgI2luY2x1ZGUgInByaW50dmVyc2lvbi5oIgorIAorKyNpZiAhZGVmaW5lZChBTExQRVJNUykKKysjIGRlZmluZSBBTExQRVJNUyAoU19JU1VJRHxTX0lTR0lEfFNfSVNWVFh8U19JUldYVXxTX0lSV1hHfFNfSVJXWE8pIC8qIDA3Nzc3ICovCisrI2VuZGlmCisrI2lmICFkZWZpbmVkKEZOTV9FWFRNQVRDSCkKKysjIGRlZmluZSBGTk1fRVhUTUFUQ0ggKDApCisrI2VuZGlmCisrCisgLyogTmFtZSBhbmQgdmVyc2lvbiBvZiBwcm9ncmFtLiAgKi8KKyBBUkdQX1BST0dSQU1fVkVSU0lPTl9IT09LX0RFRiA9IHByaW50X3ZlcnNpb247CisgCitkaWZmIC0tZ2l0IGEvc3JjL3JlYWRlbGYuYyBiL3NyYy9yZWFkZWxmLmMKK2luZGV4IDU5OTQ2MTUuLmYzY2MwNzEgMTAwNjQ0CistLS0gYS9zcmMvcmVhZGVsZi5jCisrKysgYi9zcmMvcmVhZGVsZi5jCitAQCAtNDgyOSwxMCArNDgyOSwxMSBAQCBsaXN0cHRyX2Jhc2UgKHN0cnVjdCBsaXN0cHRyICpwKQorICAgcmV0dXJuIGN1ZGllX2Jhc2UgKCZjdSk7CisgfQorIAorK3N0YXRpYyBjb25zdCBjaGFyICpsaXN0cHRyX25hbWU7CisrCisgc3RhdGljIGludAorLWNvbXBhcmVfbGlzdHB0ciAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgdm9pZCAqYXJnKQorK2NvbXBhcmVfbGlzdHB0ciAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKKyB7CistICBjb25zdCBjaGFyICpuYW1lID0gYXJnOworICAgc3RydWN0IGxpc3RwdHIgKnAxID0gKHZvaWQgKikgYTsKKyAgIHN0cnVjdCBsaXN0cHRyICpwMiA9ICh2b2lkICopIGI7CisgCitAQCAtNDg0OCwyMSArNDg0OSwyMSBAQCBjb21wYXJlX2xpc3RwdHIgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIHZvaWQgKmFyZykKKyAJICBwMS0+d2FybmVkID0gcDItPndhcm5lZCA9IHRydWU7CisgCSAgZXJyb3IgKDAsIDAsCisgCQkgZ2V0dGV4dCAoIiVzICUjIiBQUkl4NjQgIiB1c2VkIHdpdGggZGlmZmVyZW50IGFkZHJlc3Mgc2l6ZXMiKSwKKy0JCSBuYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQpOworKwkJIGxpc3RwdHJfbmFtZSwgKHVpbnQ2NF90KSBwMS0+b2Zmc2V0KTsKKyAJfQorICAgICAgIGlmIChwMS0+ZHdhcmY2NCAhPSBwMi0+ZHdhcmY2NCkKKyAJeworIAkgIHAxLT53YXJuZWQgPSBwMi0+d2FybmVkID0gdHJ1ZTsKKyAJICBlcnJvciAoMCwgMCwKKyAJCSBnZXR0ZXh0ICgiJXMgJSMiIFBSSXg2NCAiIHVzZWQgd2l0aCBkaWZmZXJlbnQgb2Zmc2V0IHNpemVzIiksCistCQkgbmFtZSwgKHVpbnQ2NF90KSBwMS0+b2Zmc2V0KTsKKysJCSBsaXN0cHRyX25hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCk7CisgCX0KKyAgICAgICBpZiAobGlzdHB0cl9iYXNlIChwMSkgIT0gbGlzdHB0cl9iYXNlIChwMikpCisgCXsKKyAJICBwMS0+d2FybmVkID0gcDItPndhcm5lZCA9IHRydWU7CisgCSAgZXJyb3IgKDAsIDAsCisgCQkgZ2V0dGV4dCAoIiVzICUjIiBQUkl4NjQgIiB1c2VkIHdpdGggZGlmZmVyZW50IGJhc2UgYWRkcmVzc2VzIiksCistCQkgbmFtZSwgKHVpbnQ2NF90KSBwMS0+b2Zmc2V0KTsKKysJCSBsaXN0cHRyX25hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCk7CisgCX0KKyAgICAgICBpZiAocDEtPmF0dHIgIT0gcDIgLT5hdHRyKQorIAl7CitAQCAtNDg3MCw3ICs0ODcxLDcgQEAgY29tcGFyZV9saXN0cHRyIChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCB2b2lkICphcmcpCisgCSAgZXJyb3IgKDAsIDAsCisgCQkgZ2V0dGV4dCAoIiVzICUjIiBQUkl4NjQKKyAJCQkgICIgdXNlZCB3aXRoIGRpZmZlcmVudCBhdHRyaWJ1dGUgJXMgYW5kICVzIiksCistCQkgbmFtZSwgKHVpbnQ2NF90KSBwMS0+b2Zmc2V0LCBkd2FyZl9hdHRyX25hbWUgKHAyLT5hdHRyKSwKKysJCSBsaXN0cHRyX25hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCwgZHdhcmZfYXR0cl9uYW1lIChwMi0+YXR0ciksCisgCQkgZHdhcmZfYXR0cl9uYW1lIChwMi0+YXR0cikpOworIAl9CisgICAgIH0KK0BAIC00OTQyLDggKzQ5NDMsMTEgQEAgc3RhdGljIHZvaWQKKyBzb3J0X2xpc3RwdHIgKHN0cnVjdCBsaXN0cHRyX3RhYmxlICp0YWJsZSwgY29uc3QgY2hhciAqbmFtZSkKKyB7CisgICBpZiAodGFibGUtPm4gPiAwKQorLSAgICBxc29ydF9yICh0YWJsZS0+dGFibGUsIHRhYmxlLT5uLCBzaXplb2YgdGFibGUtPnRhYmxlWzBdLAorLQkgICAgICZjb21wYXJlX2xpc3RwdHIsICh2b2lkICopIG5hbWUpOworKyAgICB7CisrICAgICAgbGlzdHB0cl9uYW1lID0gbmFtZTsKKysgICAgICBxc29ydCAodGFibGUtPnRhYmxlLCB0YWJsZS0+biwgc2l6ZW9mIHRhYmxlLT50YWJsZVswXSwKKysJICAgICZjb21wYXJlX2xpc3RwdHIpOworKyAgICB9CisgfQorIAorIHN0YXRpYyBib29sCitkaWZmIC0tZ2l0IGEvc3JjL3N0cmlwLmMgYi9zcmMvc3RyaXAuYworaW5kZXggNDA1NGMyYS4uZDJkMjE3NiAxMDA2NDQKKy0tLSBhL3NyYy9zdHJpcC5jCisrKysgYi9zcmMvc3RyaXAuYworQEAgLTQ2LDYgKzQ2LDEzIEBACisgI2luY2x1ZGUgPHN5c3RlbS5oPgorICNpbmNsdWRlIDxwcmludHZlcnNpb24uaD4KKyAKKysjaWYgIWRlZmluZWQoQUNDRVNTUEVSTVMpCisrIyBkZWZpbmUgQUNDRVNTUEVSTVMgKFNfSVJXWFV8U19JUldYR3xTX0lSV1hPKSAvKiAwNzc3ICovCisrI2VuZGlmCisrI2lmICFkZWZpbmVkKEZOTV9FWFRNQVRDSCkKKysjIGRlZmluZSBGTk1fRVhUTUFUQ0ggKDApCisrI2VuZGlmCisrCisgdHlwZWRlZiB1aW50OF90IEdFbGZfQnl0ZTsKKyAKKyAvKiBOYW1lIGFuZCB2ZXJzaW9uIG9mIHByb2dyYW0uICAqLworZGlmZiAtLWdpdCBhL3NyYy91bnN0cmlwLmMgYi9zcmMvdW5zdHJpcC5jCitpbmRleCA5YjhjMDlhLi4xZmI1MDYzIDEwMDY0NAorLS0tIGEvc3JjL3Vuc3RyaXAuYworKysrIGIvc3JjL3Vuc3RyaXAuYworQEAgLTU2LDYgKzU2LDE1IEBACisgIyBkZWZpbmUgXyhzdHIpIGdldHRleHQgKHN0cikKKyAjZW5kaWYKKyAKKysjaWZuZGVmIHN0cm5kdXBhCisrI2RlZmluZSBzdHJuZHVwYShzLCBuKSBcCisrICAgICAgICh7Y29uc3QgY2hhciAqX19pbiA9IChzKTsgXAorKyAgICAgICAgIHNpemVfdCBfX2xlbiA9IHN0cm5sZW4gKF9faW4sIChuKSkgKyAxOyBcCisrICAgICAgICAgY2hhciAqX19vdXQgPSAoY2hhciAqKSBhbGxvY2EgKF9fbGVuKTsgXAorKyAgICAgICAgIF9fb3V0W19fbGVuLTFdID0gJ1wwJzsgXAorKyAgICAgICAgIChjaGFyICopIG1lbWNweSAoX19vdXQsIF9faW4sIF9fbGVuLTEpO30pCisrI2VuZGlmCisrCisgLyogTmFtZSBhbmQgdmVyc2lvbiBvZiBwcm9ncmFtLiAgKi8KKyBBUkdQX1BST0dSQU1fVkVSU0lPTl9IT09LX0RFRiA9IHByaW50X3ZlcnNpb247CisgCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA0LUZpeC1lcnJvci1vbi1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNC1GaXgtZXJyb3Itb24tbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYjJmOWVkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvMDAwNC1GaXgtZXJyb3Itb24tbXVzbC5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIDdmZjhjYmVjZGU3NDU1YjUzMGZhNzg5NGE3OGQyMzI2Nzk5ZjI1NTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK0RhdGU6IFdlZCwgMSBNYXkgMjAxOSAyMjoxNTowMyArMDEwMAorU3ViamVjdDogW1BBVENIIDQvNF0gRml4IGVycm9yIG9uIG11c2w6CisKK3wgLi4vLi4vZWxmdXRpbHMtMC4xNzYvdGVzdHMvZWxmc3RybWVyZ2UuYzogSW4gZnVuY3Rpb24gJ21haW4nOgorfCAuLi8uLi9lbGZ1dGlscy0wLjE3Ni90ZXN0cy9lbGZzdHJtZXJnZS5jOjM3MDo2MDogZXJyb3I6ICdBTExQRVJNUycgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ0VQRVJNJz8KK3wgICAgICAgIGZkbmV3ID0gb3BlbiAoZm5ldywgT19XUk9OTFkgfCBPX0NSRUFULCBzdC5zdF9tb2RlICYgQUxMUEVSTVMpOworfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fgorfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFUEVSTQorfCAuLi8uLi9lbGZ1dGlscy0wLjE3Ni90ZXN0cy9lbGZzdHJtZXJnZS5jOjM3MDo2MDogbm90ZTogZWFjaCB1bmRlY2xhcmVkIGlkZW50aWZpZXIgaXMgcmVwb3J0ZWQgb25seSBvbmNlIGZvciBlYWNoIGZ1bmN0aW9uIGl0IGFwcGVhcnMgaW4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt3b3JrYXJvdW5kIGluIG11c2xdCisKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCistLS0KKyB0ZXN0cy9lbGZzdHJtZXJnZS5jIHwgNSArKysrKworIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3Rlc3RzL2VsZnN0cm1lcmdlLmMgYi90ZXN0cy9lbGZzdHJtZXJnZS5jCitpbmRleCBiYTBkNjhkLi4xZDI0NDdmIDEwMDY0NAorLS0tIGEvdGVzdHMvZWxmc3RybWVyZ2UuYworKysrIGIvdGVzdHMvZWxmc3RybWVyZ2UuYworQEAgLTMzLDYgKzMzLDExIEBACisgI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZWxmKQorICNpbmNsdWRlICJlbGYta25vd2xlZGdlLmgiCisgCisrLyogZm9yIG11c2wgKi8KKysjaWZuZGVmIEFMTFBFUk1TCisrIyBkZWZpbmUgQUxMUEVSTVMgKFNfSVNVSUR8U19JU0dJRHxTX0lTVlRYfFNfSVJXWFV8U19JUldYR3xTX0lSV1hPKS8qIDA3Nzc3ICovCisrI2VuZGlmCisrCisgLyogVGhlIG9yaWdpbmFsIEVMRiBmaWxlLiAgKi8KKyBzdGF0aWMgaW50IGZkID0gLTE7Cisgc3RhdGljIEVsZiAqZWxmID0gTlVMTDsKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDctRml4LWNvbnRyb2wtcGF0aC13aGVyZS13ZS1oYXZlLXN0ci1hcy11bmluaXRpYWxpemVkLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzLzAwMDctRml4LWNvbnRyb2wtcGF0aC13aGVyZS13ZS1oYXZlLXN0ci1hcy11bmluaXRpYWxpemVkLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjExYTI0Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy8wMDA3LUZpeC1jb250cm9sLXBhdGgtd2hlcmUtd2UtaGF2ZS1zdHItYXMtdW5pbml0aWFsaXplZC0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1Gcm9tIDExMmQxNjQ1YmFiNzkyMmM3Nzk2ZmUzMmRkZWE4ZmE2ZTFiYmRlZDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDI5IEp1biAyMDE4IDE1OjE0OjI4ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBjb250cm9sIHBhdGggd2hlcmUgd2UgaGF2ZSBzdHIgYXMgdW5pbml0aWFsaXplZCBzdHJpbmcKLQotfAotL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvd29yay9pNTg2LW9lLWxpbnV4LW11c2wvZWxmdXRpbHMvMC4xNjQtcjAvZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfZGlzYXNtLmM6Ci1JbiBmdW5jdGlvbiAnaTM4Nl9kaXNhc20nOgotfAotL2hvbWUvdWJ1bnR1L3dvcmsvb2Uvb3BlbmVtYmVkZGVkLWNvcmUvYnVpbGQvdG1wLW11c2wvd29yay9pNTg2LW9lLWxpbnV4LW11c2wvZWxmdXRpbHMvMC4xNjQtcjAvZWxmdXRpbHMtMC4xNjQvbGliY3B1L2kzODZfZGlzYXNtLmM6MzEwOjU6Ci1lcnJvcjogJ3N0cicgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uCi1bLVdlcnJvcj1tYXliZS11bmluaXRpYWxpemVkXQotfCAgICAgIG1lbWNweSAoYnVmICsgYnVmY250LCBfc3RyLCBfbGVuKTsgICAgICAgICAgIFwKLXwgICAgICBeCi18Ci0vaG9tZS91YnVudHUvd29yay9vZS9vcGVuZW1iZWRkZWQtY29yZS9idWlsZC90bXAtbXVzbC93b3JrL2k1ODYtb2UtbGludXgtbXVzbC9lbGZ1dGlscy8wLjE2NC1yMC9lbGZ1dGlscy0wLjE2NC9saWJjcHUvaTM4Nl9kaXNhc20uYzo3MDk6MTc6Ci1ub3RlOiAnc3RyJyB3YXMgZGVjbGFyZWQgaGVyZQotfCAgICAgIGNvbnN0IGNoYXIgKnN0cjsKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1SZWJhc2UgdG8gMC4xNzIKLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBsaWJjcHUvaTM4Nl9kaXNhc20uYyB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvbGliY3B1L2kzODZfZGlzYXNtLmMgYi9saWJjcHUvaTM4Nl9kaXNhc20uYwotaW5kZXggYTdlMDNmOS4uODM3YTNhOCAxMDA2NDQKLS0tLSBhL2xpYmNwdS9pMzg2X2Rpc2FzbS5jCi0rKysgYi9saWJjcHUvaTM4Nl9kaXNhc20uYwotQEAgLTgyMSw2ICs4MjEsNyBAQCBpMzg2X2Rpc2FzbSAoRWJsICplYmwgX19hdHRyaWJ1dGVfXygodW51c2VkKSksCi0gCQkJICAgIH0KLSAJCQkgIEZBTExUSFJPVUdIOwotIAkJCWRlZmF1bHQ6Ci0rCQkJICBzdHIgPSAiIjsKLSAJCQkgIGFzc2VydCAoISAiSU5WQUxJRCBub3QgaGFuZGxlZCIpOwotIAkJCX0KLSAJCSAgICB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vaHBwYV9iYWNrZW5kLmRpZmYKaW5kZXggNDQ2MGQ1OC4uNTNmYTJmNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL2hwcGFfYmFja2VuZC5kaWZmCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9ocHBhX2JhY2tlbmQuZGlmZgpAQCAtMSw0ICsxLDQgQEAKLUZyb20gOGVmYWQ5MTA1YjM4OTg1YmVhMzczNDE2YWU4ZmNhY2YyMWQxZDEyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZmZiODExZTE4ZDcwNDZkNWJiZTU0ZWRlNWIxYjdlMTRlYWFjMDE0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIERhdGU6IFdlZCwgMjEgQXVnIDIwMTkgMTU6NDQ6MTggKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gaHBwYSBiYWNrZW5kCkBAIC02LDE1ICs2LDE2IEBACiBSZWJhc2UgdG8gMC4xNzcKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbZnJvbSBkZWJpYW5dCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKIC0tLQogIGJhY2tlbmRzL01ha2VmaWxlLmFtICAgICAgfCAgIDcgKy0KICBiYWNrZW5kcy9saWJlYmxfcGFyaXNjLmggIHwgICA5ICsrCi0gYmFja2VuZHMvcGFyaXNjX2luaXQuYyAgICB8ICA3MyArKysrKysrKysrKysrKysrCi0gYmFja2VuZHMvcGFyaXNjX3JlZ3MuYyAgICB8IDE1OSArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gYmFja2VuZHMvcGFyaXNjX3JlbG9jLmRlZiB8IDEyOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gYmFja2VuZHMvcGFyaXNjX3JldHZhbC5jICB8IDIxMyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gYmFja2VuZHMvcGFyaXNjX3N5bWJvbC5jICB8IDExMyArKysrKysrKysrKysrKysrKysrKysrKysKLSBsaWJlbGYvZWxmLmggICAgICAgICAgICAgIHwgIDExICsrKworIGJhY2tlbmRzL3BhcmlzY19pbml0LmMgICAgfCAgNzMgKysrKysrKysrKysrKworIGJhY2tlbmRzL3BhcmlzY19yZWdzLmMgICAgfCAxNTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGJhY2tlbmRzL3BhcmlzY19yZWxvYy5kZWYgfCAxMjggKysrKysrKysrKysrKysrKysrKysrKysKKyBiYWNrZW5kcy9wYXJpc2NfcmV0dmFsLmMgIHwgMjEzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgYmFja2VuZHMvcGFyaXNjX3N5bWJvbC5jICB8IDExMyArKysrKysrKysrKysrKysrKysrKworIGxpYmVsZi9lbGYuaCAgICAgICAgICAgICAgfCAgMTEgKysKICA4IGZpbGVzIGNoYW5nZWQsIDcxMSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9saWJlYmxfcGFyaXNjLmgKICBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvcGFyaXNjX2luaXQuYwpAQCAtMjQsMzEgKzI1LDMwIEBACiAgY3JlYXRlIG1vZGUgMTAwNjQ0IGJhY2tlbmRzL3BhcmlzY19zeW1ib2wuYwogCiBkaWZmIC0tZ2l0IGEvYmFja2VuZHMvTWFrZWZpbGUuYW0gYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQotaW5kZXggMTc1NDY4Zi4uOTFhMzhlMiAxMDA2NDQKK2luZGV4IGY0MDUyMTIuLjQ3NTVmNjEgMTAwNjQ0CiAtLS0gYS9iYWNrZW5kcy9NYWtlZmlsZS5hbQogKysrIGIvYmFja2VuZHMvTWFrZWZpbGUuYW0KLUBAIC0zMywxNiArMzMsMTkgQEAgQU1fQ1BQRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL2xpYmVibCAtSSQodG9wX3NyY2RpcikvbGliYXNtIFwKLSAKK0BAIC0zNyw3ICszNyw5IEBAIEFNX0NQUEZMQUdTICs9IC1JJCh0b3Bfc3JjZGlyKS9saWJlYmwgLUkkKHRvcF9zcmNkaXIpL2xpYmFzbSBcCisgbm9pbnN0X0xJQlJBUklFUyA9IGxpYmVibF9iYWNrZW5kcy5hIGxpYmVibF9iYWNrZW5kc19waWMuYQogIAogIG1vZHVsZXMgPSBpMzg2IHNoIHg4Nl82NCBpYTY0IGFscGhhIGFybSBhYXJjaDY0IHNwYXJjIHBwYyBwcGM2NCBzMzkwIFwKIC0JICB0aWxlZ3ggbTY4ayBicGYgcmlzY3YgY3NreQogKwkgIHRpbGVneCBtNjhrIGJwZiByaXNjdiBjc2t5IHBhcmlzYwotIGxpYmVibF9waWMgPSBsaWJlYmxfaTM4Nl9waWMuYSBsaWJlYmxfc2hfcGljLmEgbGliZWJsX3g4Nl82NF9waWMuYSAgICBcCi0gCSAgICAgbGliZWJsX2lhNjRfcGljLmEgbGliZWJsX2FscGhhX3BpYy5hIGxpYmVibF9hcm1fcGljLmEgICAgXAotIAkgICAgIGxpYmVibF9hYXJjaDY0X3BpYy5hIGxpYmVibF9zcGFyY19waWMuYSBsaWJlYmxfcHBjX3BpYy5hIFwKLSAJICAgICBsaWJlYmxfcHBjNjRfcGljLmEgbGliZWJsX3MzOTBfcGljLmEgbGliZWJsX3RpbGVneF9waWMuYSBcCi0gCSAgICAgbGliZWJsX202OGtfcGljLmEgbGliZWJsX2JwZl9waWMuYSBsaWJlYmxfcmlzY3ZfcGljLmEgICAgXAotLQkgICAgIGxpYmVibF9jc2t5X3BpYy5hCi0rCSAgICAgbGliZWJsX2Nza3lfcGljLmEgbGliZWJsX3BhcmlzY19waWMuYQotIG5vaW5zdF9MSUJSQVJJRVMgPSAkKGxpYmVibF9waWMpCi0gbm9pbnN0X0RBVEEgPSAkKGxpYmVibF9waWM6X3BpYy5hPS5zbykKLSAKKysKICtwYXJpc2NfU1JDUyA9IHBhcmlzY19pbml0LmMgcGFyaXNjX3N5bWJvbC5jIHBhcmlzY19yZWdzLmMgcGFyaXNjX3JldHZhbC5jCi0rbGliZWJsX3BhcmlzY19waWNfYV9TT1VSQ0VTID0gJChwYXJpc2NfU1JDUykKLSthbV9saWJlYmxfcGFyaXNjX3BpY19hX09CSkVDVFMgPSAkKHBhcmlzY19TUkNTOi5jPS5vcykKICAKLSBsaWJlbGYgPSAuLi9saWJlbGYvbGliZWxmLnNvCi0gbGliZHcgPSAuLi9saWJkdy9saWJkdy5zbworIGkzODZfU1JDUyA9IGkzODZfaW5pdC5jIGkzODZfc3ltYm9sLmMgaTM4Nl9jb3Jlbm90ZS5jIGkzODZfY2ZpLmMgXAorIAkgICAgaTM4Nl9yZXR2YWwuYyBpMzg2X3JlZ3MuYyBpMzg2X2F1eHYuYyBpMzg2X3N5c2NhbGwuYyBcCitAQCAtMTAyLDcgKzEwNCw4IEBAIGxpYmVibF9iYWNrZW5kc19hX1NPVVJDRVMgPSAkKGkzODZfU1JDUykgJChzaF9TUkNTKSAkKHg4Nl82NF9TUkNTKSBcCisgCQkJICAgICQoaWE2NF9TUkNTKSAkKGFscGhhX1NSQ1MpICQoYXJtX1NSQ1MpIFwKKyAJCQkgICAgJChhYXJjaDY0X1NSQ1MpICQoc3BhcmNfU1JDUykgJChwcGNfU1JDUykgXAorIAkJCSAgICAkKHBwYzY0X1NSQ1MpICQoczM5MF9TUkNTKSAkKHRpbGVneF9TUkNTKSBcCistCQkJICAgICQobTY4a19TUkNTKSAkKGJwZl9TUkNTKSAkKHJpc2N2X1NSQ1MpICQoY3NreV9TUkNTKQorKwkJCSAgICAkKG02OGtfU1JDUykgJChicGZfU1JDUykgJChyaXNjdl9TUkNTKSAkKGNza3lfU1JDUykgXAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAkKHBhcmlzY19TUkNTKQorIAorIGxpYmVibF9iYWNrZW5kc19waWNfYV9TT1VSQ0VTID0KKyBhbV9saWJlYmxfYmFja2VuZHNfcGljX2FfT0JKRUNUUyA9ICQobGliZWJsX2JhY2tlbmRzX2FfU09VUkNFUzouYz0ub3MpCiBkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbGliZWJsX3BhcmlzYy5oIGIvYmFja2VuZHMvbGliZWJsX3BhcmlzYy5oCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAogaW5kZXggMDAwMDAwMC4uZjQ3M2I3OQpAQCAtODI2LDYgKzgyNiwzIEBACiAgI2RlZmluZSBSX1BBUklTQ19TRUdSRUw2NAkxMTIJLyogNjQgYml0cyBzZWdtZW50IHJlbC4gYWRkcmVzcy4gICovCiAgI2RlZmluZSBSX1BBUklTQ19QTFRPRkYxNFdSCTExNQkvKiBQTFQtcmVsLiBhZGRyZXNzLCByaWdodCAxNCBiaXRzLiAgKi8KICAjZGVmaW5lIFJfUEFSSVNDX1BMVE9GRjE0RFIJMTE2CS8qIFBMVC1yZWwuIGFkZHJlc3MsIHJpZ2h0IDE0IGJpdHMuICAqLwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19iYWNrZW5kLmRpZmYgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19iYWNrZW5kLmRpZmYKaW5kZXggMTA5N2IwZS4uNzQ5ZmFhNCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfYmFja2VuZC5kaWZmCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9taXBzX2JhY2tlbmQuZGlmZgpAQCAtMSw0ICsxLDQgQEAKLUZyb20gNjhiNDk3NjY4Y2RlNTE3MTg4MGQwNzNhN2VhNTBkMTFjM2JkZGJmYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2UwYjAzNmQwODdkZmZmN2Y1ZTMwNmY1MmZjNzg3NDVmOTk0NTRjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIERhdGU6IFdlZCwgMjEgQXVnIDIwMTkgMTU6NDk6NTIgKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gbWlwcyBiYWNrZW5kCkBAIC03LDE1ICs3LDE2IEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2Zyb20gZGViaWFuXQogCiBTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKIC0tLQotIGJhY2tlbmRzL01ha2VmaWxlLmFtICAgIHwgICA4ICstCi0gYmFja2VuZHMvbWlwc19pbml0LmMgICAgfCAgNTkgKysrKysrKysrCi0gYmFja2VuZHMvbWlwc19yZWdzLmMgICAgfCAxMDQgKysrKysrKysrKysrKysrKwotIGJhY2tlbmRzL21pcHNfcmVsb2MuZGVmIHwgIDc5ICsrKysrKysrKysrKwotIGJhY2tlbmRzL21pcHNfcmV0dmFsLmMgIHwgMzIxICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGJhY2tlbmRzL21pcHNfc3ltYm9sLmMgIHwgIDUzICsrKysrKysrCi0gbGliZWJsL2VibG9wZW5iYWNrZW5kLmMgfCAgIDIgKwotIDcgZmlsZXMgY2hhbmdlZCwgNjI0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgYmFja2VuZHMvTWFrZWZpbGUuYW0gICAgfCAgIDYgKy0KKyBiYWNrZW5kcy9taXBzX2luaXQuYyAgICB8ICA1OSArKysrKysrKworIGJhY2tlbmRzL21pcHNfcmVncy5jICAgIHwgMTA0ICsrKysrKysrKysrKysKKyBiYWNrZW5kcy9taXBzX3JlbG9jLmRlZiB8ICA3OSArKysrKysrKysrCisgYmFja2VuZHMvbWlwc19yZXR2YWwuYyAgfCAzMjEgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKworIGJhY2tlbmRzL21pcHNfc3ltYm9sLmMgIHwgIDUzICsrKysrKysKKyBsaWJlYmwvZWJsb3BlbmJhY2tlbmQuYyB8ICAgMyArCisgNyBmaWxlcyBjaGFuZ2VkLCA2MjMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKICBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvbWlwc19pbml0LmMKICBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvbWlwc19yZWdzLmMKICBjcmVhdGUgbW9kZSAxMDA2NDQgYmFja2VuZHMvbWlwc19yZWxvYy5kZWYKQEAgLTIzLDM2ICsyNCwzNCBAQAogIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9taXBzX3N5bWJvbC5jCiAKIGRpZmYgLS1naXQgYS9iYWNrZW5kcy9NYWtlZmlsZS5hbSBiL2JhY2tlbmRzL01ha2VmaWxlLmFtCi1pbmRleCA5MWEzOGUyLi5hYmE4YTRhIDEwMDY0NAoraW5kZXggNDc1NWY2MS4uMDdkNDVkNyAxMDA2NDQKIC0tLSBhL2JhY2tlbmRzL01ha2VmaWxlLmFtCiArKysgYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQotQEAgLTMzLDEzICszMywxMyBAQCBBTV9DUFBGTEFHUyArPSAtSSQodG9wX3NyY2RpcikvbGliZWJsIC1JJCh0b3Bfc3JjZGlyKS9saWJhc20gXAotIAorQEAgLTM3LDcgKzM3LDcgQEAgQU1fQ1BQRkxBR1MgKz0gLUkkKHRvcF9zcmNkaXIpL2xpYmVibCAtSSQodG9wX3NyY2RpcikvbGliYXNtIFwKKyBub2luc3RfTElCUkFSSUVTID0gbGliZWJsX2JhY2tlbmRzLmEgbGliZWJsX2JhY2tlbmRzX3BpYy5hCiAgCiAgbW9kdWxlcyA9IGkzODYgc2ggeDg2XzY0IGlhNjQgYWxwaGEgYXJtIGFhcmNoNjQgc3BhcmMgcHBjIHBwYzY0IHMzOTAgXAogLQkgIHRpbGVneCBtNjhrIGJwZiByaXNjdiBjc2t5IHBhcmlzYwogKwkgIHRpbGVneCBtNjhrIGJwZiByaXNjdiBjc2t5IHBhcmlzYyBtaXBzCi0gbGliZWJsX3BpYyA9IGxpYmVibF9pMzg2X3BpYy5hIGxpYmVibF9zaF9waWMuYSBsaWJlYmxfeDg2XzY0X3BpYy5hICAgIFwKLSAJICAgICBsaWJlYmxfaWE2NF9waWMuYSBsaWJlYmxfYWxwaGFfcGljLmEgbGliZWJsX2FybV9waWMuYSAgICBcCi0gCSAgICAgbGliZWJsX2FhcmNoNjRfcGljLmEgbGliZWJsX3NwYXJjX3BpYy5hIGxpYmVibF9wcGNfcGljLmEgXAotIAkgICAgIGxpYmVibF9wcGM2NF9waWMuYSBsaWJlYmxfczM5MF9waWMuYSBsaWJlYmxfdGlsZWd4X3BpYy5hIFwKLSAJICAgICBsaWJlYmxfbTY4a19waWMuYSBsaWJlYmxfYnBmX3BpYy5hIGxpYmVibF9yaXNjdl9waWMuYSAgICBcCi0tCSAgICAgbGliZWJsX2Nza3lfcGljLmEgbGliZWJsX3BhcmlzY19waWMuYQotKwkgICAgIGxpYmVibF9jc2t5X3BpYy5hIGxpYmVibF9wYXJpc2NfcGljLmEgbGliZWJsX21pcHNfcGljLmEKLSBub2luc3RfTElCUkFSSUVTID0gJChsaWJlYmxfcGljKQotIG5vaW5zdF9EQVRBID0gJChsaWJlYmxfcGljOl9waWMuYT0uc28pCiAgCi1AQCAtMTQ1LDYgKzE0NSwxMCBAQCBjc2t5X1NSQ1MgPSBjc2t5X2F0dHJzLmMgY3NreV9pbml0LmMgY3NreV9zeW1ib2wuYyBjc2t5X2NmaS5jIFwKLSBsaWJlYmxfY3NreV9waWNfYV9TT1VSQ0VTID0gJChjc2t5X1NSQ1MpCi0gYW1fbGliZWJsX2Nza3lfcGljX2FfT0JKRUNUUyA9ICQoY3NreV9TUkNTOi5jPS5vcykKKyBwYXJpc2NfU1JDUyA9IHBhcmlzY19pbml0LmMgcGFyaXNjX3N5bWJvbC5jIHBhcmlzY19yZWdzLmMgcGFyaXNjX3JldHZhbC5jCisgCitAQCAtMTAwLDEyICsxMDAsMTQgQEAgcmlzY3ZfU1JDUyA9IHJpc2N2X2luaXQuYyByaXNjdl9zeW1ib2wuYyByaXNjdl9jZmkuYyByaXNjdl9yZWdzLmMgXAorIGNza3lfU1JDUyA9IGNza3lfYXR0cnMuYyBjc2t5X2luaXQuYyBjc2t5X3N5bWJvbC5jIGNza3lfY2ZpLmMgXAorIAkgICAgY3NreV9yZWdzLmMgY3NreV9pbml0cmVnLmMgY3NreV9jb3Jlbm90ZS5jCiAgCiArbWlwc19TUkNTID0gbWlwc19pbml0LmMgbWlwc19zeW1ib2wuYyBtaXBzX3JlZ3MuYyBtaXBzX3JldHZhbC5jCi0rbGliZWJsX21pcHNfcGljX2FfU09VUkNFUyA9ICQobWlwc19TUkNTKQotK2FtX2xpYmVibF9taXBzX3BpY19hX09CSkVDVFMgPSAkKG1pcHNfU1JDUzouYz0ub3MpCiArCi0gbGliZWJsXyUuc28gbGliZWJsXyUubWFwOiBsaWJlYmxfJV9waWMuYSAkKGxpYmVsZikgJChsaWJkdykgJChsaWJldSkKLSAJQHJtIC1mICQoQDouc289Lm1hcCkKLSAJJChBTV9WX2F0KWVjaG8gJ0VMRlVUSUxTXyQoUEFDS0FHRV9WRVJTSU9OKSB7IGdsb2JhbDogJCpfaW5pdDsgbG9jYWw6ICo7IH07JyBcCisgbGliZWJsX2JhY2tlbmRzX2FfU09VUkNFUyA9ICQoaTM4Nl9TUkNTKSAkKHNoX1NSQ1MpICQoeDg2XzY0X1NSQ1MpIFwKKyAJCQkgICAgJChpYTY0X1NSQ1MpICQoYWxwaGFfU1JDUykgJChhcm1fU1JDUykgXAorIAkJCSAgICAkKGFhcmNoNjRfU1JDUykgJChzcGFyY19TUkNTKSAkKHBwY19TUkNTKSBcCisgCQkJICAgICQocHBjNjRfU1JDUykgJChzMzkwX1NSQ1MpICQodGlsZWd4X1NSQ1MpIFwKKyAJCQkgICAgJChtNjhrX1NSQ1MpICQoYnBmX1NSQ1MpICQocmlzY3ZfU1JDUykgJChjc2t5X1NSQ1MpIFwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgJChwYXJpc2NfU1JDUykKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgJChwYXJpc2NfU1JDUykgJChtaXBzX1NSQ1MpCisgCisgbGliZWJsX2JhY2tlbmRzX3BpY19hX1NPVVJDRVMgPQorIGFtX2xpYmVibF9iYWNrZW5kc19waWNfYV9PQkpFQ1RTID0gJChsaWJlYmxfYmFja2VuZHNfYV9TT1VSQ0VTOi5jPS5vcykKIGRpZmYgLS1naXQgYS9iYWNrZW5kcy9taXBzX2luaXQuYyBiL2JhY2tlbmRzL21pcHNfaW5pdC5jCiBuZXcgZmlsZSBtb2RlIDEwMDY0NAogaW5kZXggMDAwMDAwMC4uOTc1YzA0ZQpAQCAtNzAwLDE4ICs2OTksMjYgQEAKICsgICAgfQogK30KIGRpZmYgLS1naXQgYS9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYyBiL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCi1pbmRleCAwMTcxMWY1Li5kMGMzNTg5IDEwMDY0NAoraW5kZXggMjEwYjQ3ZS4uMWZlYWMxMyAxMDA2NDQKIC0tLSBhL2xpYmVibC9lYmxvcGVuYmFja2VuZC5jCiArKysgYi9saWJlYmwvZWJsb3BlbmJhY2tlbmQuYwotQEAgLTcxLDYgKzcxLDggQEAgc3RhdGljIGNvbnN0IHN0cnVjdAotICAgeyAic3BhcmMiLCAiZWxmX3NwYXJjIiwgInNwYXJjIiwgNSwgRU1fU1BBUkMsIDAsIDAgfSwKLSAgIHsgInNwYXJjIiwgImVsZl9zcGFyY3Y4cGx1cyIsICJzcGFyYyIsIDUsIEVNX1NQQVJDMzJQTFVTLCAwLCAwIH0sCi0gICB7ICJzMzkwIiwgImVibF9zMzkwIiwgInMzOTAiLCA0LCBFTV9TMzkwLCAwLCAwIH0sCi0rICB7ICJtaXBzIiwgImVsZl9taXBzIiwgIm1pcHMiLCA0LCBFTV9NSVBTLCAwLCAwIH0sCi0rICB7ICJtaXBzIiwgImVsZl9taXBzZWwiLCAibWlwc2VsIiwgNCwgRU1fTUlQU19SUzNfTEUsIDAsIDAgfSwKK0BAIC01Nyw2ICs1Nyw3IEBAIGNvbnN0IGNoYXIgKm02OGtfaW5pdCAoRWxmICosIEdFbGZfSGFsZiwgRWJsICosIHNpemVfdCk7CisgY29uc3QgY2hhciAqYnBmX2luaXQgKEVsZiAqLCBHRWxmX0hhbGYsIEVibCAqLCBzaXplX3QpOworIGNvbnN0IGNoYXIgKnJpc2N2X2luaXQgKEVsZiAqLCBHRWxmX0hhbGYsIEVibCAqLCBzaXplX3QpOworIGNvbnN0IGNoYXIgKmNza3lfaW5pdCAoRWxmICosIEdFbGZfSGFsZiwgRWJsICosIHNpemVfdCk7CisrY29uc3QgY2hhciAqbWlwc19pbml0IChFbGYgKiwgR0VsZl9IYWxmLCBFYmwgKiwgc2l6ZV90KTsKICAKLSAgIHsgIm0zMiIsICJlbGZfbTMyIiwgIm0zMiIsIDMsIEVNX00zMiwgMCwgMCB9LAotICAgeyAibTY4ayIsICJlbGZfbTY4ayIsICJtNjhrIiwgNCwgRU1fNjhLLCBFTEZDTEFTUzMyLCBFTEZEQVRBMk1TQiB9LAorIC8qIFRoaXMgdGFibGUgc2hvdWxkIGNvbnRhaW4gdGhlIGNvbXBsZXRlIGxpc3Qgb2YgYXJjaGl0ZWN0dXJlcyBhcyBmYXIKKyAgICBhcyB0aGUgRUxGIHNwZWNpZmljYXRpb24gaXMgY29uY2VybmVkLiAgKi8KK0BAIC04Nyw2ICs4OCw4IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QKKyAgIHsgc3BhcmNfaW5pdCwgImVsZl9zcGFyYyIsICJzcGFyYyIsIDUsIEVNX1NQQVJDLCAwLCAwIH0sCisgICB7IHNwYXJjX2luaXQsICJlbGZfc3BhcmN2OHBsdXMiLCAic3BhcmMiLCA1LCBFTV9TUEFSQzMyUExVUywgMCwgMCB9LAorICAgeyBzMzkwX2luaXQsICJlYmxfczM5MCIsICJzMzkwIiwgNCwgRU1fUzM5MCwgMCwgMCB9LAorKyAgeyBtaXBzX2luaXQsICJlbGZfbWlwcyIsICJtaXBzIiwgNCwgRU1fTUlQUywgMCwgMCB9LAorKyAgeyBtaXBzX2luaXQsICJlbGZfbWlwc2VsIiwgIm1pcHNlbCIsIDQsIEVNX01JUFNfUlMzX0xFLCAwLCAwIH0sCisgCisgICB7IE5VTEwsICJlbGZfbTMyIiwgIm0zMiIsIDMsIEVNX00zMiwgMCwgMCB9LAorICAgeyBtNjhrX2luaXQsICJlbGZfbTY4ayIsICJtNjhrIiwgNCwgRU1fNjhLLCBFTEZDTEFTUzMyLCBFTEZEQVRBMk1TQiB9LAogLS0gCi0yLjcuNAorMi4xNy4xCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9taXBzX2NmaS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL2RlYmlhbi9taXBzX2NmaS5wYXRjaAppbmRleCBmZGE0ZjY4Li5kZDhmODhhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9kZWJpYW4vbWlwc19jZmkucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvZGViaWFuL21pcHNfY2ZpLnBhdGNoCkBAIC0xLDMzICsxLDM0IEBACi1Gcm9tIDk2ZTM4Mjg5ZjI4ODdkZGI4ZTZkMmZiOTFlYTA0YmRiZGYwMzRhYjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDViZjYxMTdhNmVhZjkwMDdjZTgwYWRiYjhiNjZhOTVjYTk4MDQ3YTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CiBEYXRlOiBXZWQsIDIxIEF1ZyAyMDE5IDE3OjAwOjMwICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBtaXBzX2NmaQorU3ViamVjdDogW1BBVENIXSBtaXBzX2NmaQogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW2Zyb20gZGViaWFuXQogCiBSZWJhc2UgdG8gMC4xNzcKIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBiYWNrZW5kcy9NYWtlZmlsZS5hbSB8ICAyICstCi0gYmFja2VuZHMvbWlwc19jZmkuYyAgfCA4MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgYmFja2VuZHMvbWlwc19jZmkuYyAgfCA4MCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwogIGJhY2tlbmRzL21pcHNfaW5pdC5jIHwgIDEgKwogIDMgZmlsZXMgY2hhbmdlZCwgODIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBiYWNrZW5kcy9taXBzX2NmaS5jCiAKIGRpZmYgLS1naXQgYS9iYWNrZW5kcy9NYWtlZmlsZS5hbSBiL2JhY2tlbmRzL01ha2VmaWxlLmFtCi1pbmRleCBhYmE4YTRhLi42YWMwZWVjIDEwMDY0NAoraW5kZXggMDdkNDVkNy4uZGVjMzA4MCAxMDA2NDQKIC0tLSBhL2JhY2tlbmRzL01ha2VmaWxlLmFtCiArKysgYi9iYWNrZW5kcy9NYWtlZmlsZS5hbQotQEAgLTE0NSw3ICsxNDUsNyBAQCBjc2t5X1NSQ1MgPSBjc2t5X2F0dHJzLmMgY3NreV9pbml0LmMgY3NreV9zeW1ib2wuYyBjc2t5X2NmaS5jIFwKLSBsaWJlYmxfY3NreV9waWNfYV9TT1VSQ0VTID0gJChjc2t5X1NSQ1MpCi0gYW1fbGliZWJsX2Nza3lfcGljX2FfT0JKRUNUUyA9ICQoY3NreV9TUkNTOi5jPS5vcykKK0BAIC0xMDAsNyArMTAwLDcgQEAgcmlzY3ZfU1JDUyA9IHJpc2N2X2luaXQuYyByaXNjdl9zeW1ib2wuYyByaXNjdl9jZmkuYyByaXNjdl9yZWdzLmMgXAorIGNza3lfU1JDUyA9IGNza3lfYXR0cnMuYyBjc2t5X2luaXQuYyBjc2t5X3N5bWJvbC5jIGNza3lfY2ZpLmMgXAorIAkgICAgY3NreV9yZWdzLmMgY3NreV9pbml0cmVnLmMgY3NreV9jb3Jlbm90ZS5jCiAgCiAtbWlwc19TUkNTID0gbWlwc19pbml0LmMgbWlwc19zeW1ib2wuYyBtaXBzX3JlZ3MuYyBtaXBzX3JldHZhbC5jCiArbWlwc19TUkNTID0gbWlwc19pbml0LmMgbWlwc19zeW1ib2wuYyBtaXBzX3JlZ3MuYyBtaXBzX3JldHZhbC5jIG1pcHNfY2ZpLmMKLSBsaWJlYmxfbWlwc19waWNfYV9TT1VSQ0VTID0gJChtaXBzX1NSQ1MpCi0gYW1fbGliZWJsX21pcHNfcGljX2FfT0JKRUNUUyA9ICQobWlwc19TUkNTOi5jPS5vcykKICAKKyBsaWJlYmxfYmFja2VuZHNfYV9TT1VSQ0VTID0gJChpMzg2X1NSQ1MpICQoc2hfU1JDUykgJCh4ODZfNjRfU1JDUykgXAorIAkJCSAgICAkKGlhNjRfU1JDUykgJChhbHBoYV9TUkNTKSAkKGFybV9TUkNTKSBcCiBkaWZmIC0tZ2l0IGEvYmFja2VuZHMvbWlwc19jZmkuYyBiL2JhY2tlbmRzL21pcHNfY2ZpLmMKIG5ldyBmaWxlIG1vZGUgMTAwNjQ0CiBpbmRleCAwMDAwMDAwLi45ZmZkYWI1CkBAIC0xMjYsNiArMTI3LDMgQEAKICAKICAgIHJldHVybiBNT0RWRVJTSU9OOwogIH0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvbXVzbC1saWJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvbXVzbC1saWJzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWI5ZjEyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL211c2wtbGlicy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NCArMCwwIEBACi1Gcm9tIGQ1YTE2NTFkZjk4ODRmY2Y1N2VkMzIwYmMyZjg2NjUzOGFmMmY0MjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDIzIEF1ZyAyMDE5IDEwOjE4OjQ3ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8zXSBtdXNsLWxpYnMKLQotQ29sbGVjdGlvbiBvZiBmaXhlcyBuZWVkZWQgdG8gY29tcGlsZSBsaWJlbGYgYW5kIG90aGVyIGxpYnJhcmllcwotcHJvdmlkZWQgYnkgZWxmdXRpbHMgZm9yIG11c2wgdGFyZ2V0cwotCi1lcnJvciBpcyBnbGliYyBzcGVjaWZpYyBBUEksIHNvIHRoaXMgcGF0Y2ggd2lsbCBtb3N0bHkgbm90IGFjY2VwdGVkCi11cHN0cmVhbSBnaXZlbiB0aGF0IGVsZnV0aWxzIGhhcyBiZWVuIGNsb3NlbHkgdGllZCB0byBnbGliYwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFt3b3JrYXJvdW5kIGZvciBtdXNsXQotCi1SZWJhc2UgdG8gMC4xNzcKLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIGxpYi9lcnJvci5oICAgICAgICAgICAgICAgICAgICB8IDI3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGxpYi9maXhlZHNpemVoYXNoLmggICAgICAgICAgICB8ICAxIC0KLSBsaWIvbGliZXUuaCAgICAgICAgICAgICAgICAgICAgfCAgMSArCi0gbGliZHdmbC9kd2ZsX2Vycm9yLmMgICAgICAgICAgIHwgIDkgKysrKysrKysrCi0gbGliZHdmbC9saW51eC1rZXJuZWwtbW9kdWxlcy5jIHwgIDEgKwotIGxpYmVsZi9lbGYuaCAgICAgICAgICAgICAgICAgICB8ICA5ICsrKysrKy0tLQotIDYgZmlsZXMgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbGliL2Vycm9yLmgKLQotZGlmZiAtLWdpdCBhL2xpYi9lcnJvci5oIGIvbGliL2Vycm9yLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5lZjA2ODI3Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9saWIvZXJyb3IuaAotQEAgLTAsMCArMSwyNyBAQAotKyNpZm5kZWYgX0VSUk9SX0hfCi0rI2RlZmluZSBfRVJST1JfSF8KLSsKLSsjaW5jbHVkZSA8c3RkYXJnLmg+Ci0rI2luY2x1ZGUgPHN0ZGlvLmg+Ci0rI2luY2x1ZGUgPHN0ZGxpYi5oPgotKyNpbmNsdWRlIDxzdHJpbmcuaD4KLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSsKLStzdGF0aWMgdW5zaWduZWQgaW50IGVycm9yX21lc3NhZ2VfY291bnQgPSAwOwotKwotK3N0YXRpYyBpbmxpbmUgdm9pZCBlcnJvcihpbnQgc3RhdHVzLCBpbnQgZXJybnVtLCBjb25zdCBjaGFyKiBmb3JtYXQsIC4uLikKLSt7Ci0rCXZhX2xpc3QgYXA7Ci0rCWZwcmludGYoc3RkZXJyLCAiJXM6ICIsIHByb2dyYW1faW52b2NhdGlvbl9uYW1lKTsKLSsJdmFfc3RhcnQoYXAsIGZvcm1hdCk7Ci0rCXZmcHJpbnRmKHN0ZGVyciwgZm9ybWF0LCBhcCk7Ci0rCXZhX2VuZChhcCk7Ci0rCWlmIChlcnJudW0pCi0rCQlmcHJpbnRmKHN0ZGVyciwgIjogJXMiLCBzdHJlcnJvcihlcnJudW0pKTsKLSsJZnByaW50ZihzdGRlcnIsICJcbiIpOwotKwllcnJvcl9tZXNzYWdlX2NvdW50Kys7Ci0rCWlmIChzdGF0dXMpCi0rCQlleGl0KHN0YXR1cyk7Ci0rfQotKwotKyNlbmRpZgkvKiBfRVJST1JfSF8gKi8KLWRpZmYgLS1naXQgYS9saWIvZml4ZWRzaXplaGFzaC5oIGIvbGliL2ZpeGVkc2l6ZWhhc2guaAotaW5kZXggZGFjMmE1Zi4uNDMwMTZmYyAxMDA2NDQKLS0tLSBhL2xpYi9maXhlZHNpemVoYXNoLmgKLSsrKyBiL2xpYi9maXhlZHNpemVoYXNoLmgKLUBAIC0zMCw3ICszMCw2IEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLS0jaW5jbHVkZSA8c3lzL2NkZWZzLmg+Ci0gCi0gI2luY2x1ZGUgPHN5c3RlbS5oPgotIAotZGlmZiAtLWdpdCBhL2xpYi9saWJldS5oIGIvbGliL2xpYmV1LmgKLWluZGV4IGVjYjRkMDEuLmVkYzg1ZTMgMTAwNjQ0Ci0tLS0gYS9saWIvbGliZXUuaAotKysrIGIvbGliL2xpYmV1LmgKLUBAIC0yOSw2ICsyOSw3IEBACi0gI2lmbmRlZiBMSUJFVV9ICi0gI2RlZmluZSBMSUJFVV9ICi0gCi0rI2luY2x1ZGUgInN5c3RlbS5oIgotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gCi1kaWZmIC0tZ2l0IGEvbGliZHdmbC9kd2ZsX2Vycm9yLmMgYi9saWJkd2ZsL2R3ZmxfZXJyb3IuYwotaW5kZXggN2JjZjYxYy4uMTFkY2M4YiAxMDA2NDQKLS0tLSBhL2xpYmR3ZmwvZHdmbF9lcnJvci5jCi0rKysgYi9saWJkd2ZsL2R3ZmxfZXJyb3IuYwotQEAgLTE1NCw3ICsxNTQsMTYgQEAgZHdmbF9lcnJtc2cgKGludCBlcnJvcikKLSAgIHN3aXRjaCAoZXJyb3IgJn4gMHhmZmZmKQotICAgICB7Ci0gICAgIGNhc2UgT1RIRVJfRVJST1IgKEVSUk5PKToKLSsjaWYgZGVmaW5lZChfX0dMSUJDX18pCi0gICAgICAgcmV0dXJuIHN0cmVycm9yX3IgKGVycm9yICYgMHhmZmZmLCAiYmFkIiwgMCk7Ci0rI2Vsc2UKLSsgICAgICB7Ci0rICAgICAgICBzdGF0aWMgX190aHJlYWQgY2hhciBidWZbMTI4XSA9ICIiOwotKyAgICAgICAgaWYgKHN0cmVycm9yX3IgKGVycm9yICYgMHhmZmZmLCBidWYsIHNpemVvZihidWYpKSA9PSAwKQotKyAgICAgICAgICByZXR1cm4gYnVmOwotKyAgICAgIH0KLSsgICAgICByZXR1cm4gInN0cmVycm9yX3IoKSBmYWlsZWQiOwotKyNlbmRpZgotICAgICBjYXNlIE9USEVSX0VSUk9SIChMSUJFTEYpOgotICAgICAgIHJldHVybiBlbGZfZXJybXNnIChlcnJvciAmIDB4ZmZmZik7Ci0gICAgIGNhc2UgT1RIRVJfRVJST1IgKExJQkRXKToKLWRpZmYgLS1naXQgYS9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMgYi9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKLWluZGV4IGQ0NmFiNWEuLjFjM2ZhZWUgMTAwNjQ0Ci0tLS0gYS9saWJkd2ZsL2xpbnV4LWtlcm5lbC1tb2R1bGVzLmMKLSsrKyBiL2xpYmR3ZmwvbGludXgta2VybmVsLW1vZHVsZXMuYwotQEAgLTUwLDYgKzUwLDcgQEAKLSAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4KLSAjaW5jbHVkZSA8ZmNudGwuaD4KLSAjaW5jbHVkZSA8dW5pc3RkLmg+Ci0rI2luY2x1ZGUgInN5c3RlbS5oIgotIAotIC8qIElmIGZ0cy5oIGlzIGluY2x1ZGVkIGJlZm9yZSBjb25maWcuaCwgaXRzIGluZGlyZWN0IGluY2x1c2lvbnMgbWF5IG5vdAotICAgIGdpdmUgdXMgdGhlIHJpZ2h0IExGUyBhbGlhc2VzIG9mIHRoZXNlIGZ1bmN0aW9ucywgc28gbWFwIHRoZW0gbWFudWFsbHkuICAqLwotZGlmZiAtLWdpdCBhL2xpYmVsZi9lbGYuaCBiL2xpYmVsZi9lbGYuaAotaW5kZXggYmVkMjczZC4uYmUyMjhlNiAxMDA2NDQKLS0tLSBhL2xpYmVsZi9lbGYuaAotKysrIGIvbGliZWxmL2VsZi5oCi1AQCAtMjEsNyArMjEsOSBAQAotIAotICNpbmNsdWRlIDxmZWF0dXJlcy5oPgotIAotLV9fQkVHSU5fREVDTFMKLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSAKLSAvKiBTdGFuZGFyZCBFTEYgdHlwZXMuICAqLwotIAotQEAgLTQwMjksNiArNDAzMSw3IEBAIGVudW0KLSAjZGVmaW5lIFJfTkRTMzJfVExTX1RQT0ZGCTEwMgotICNkZWZpbmUgUl9ORFMzMl9UTFNfREVTQwkxMTkKLSAKLS1fX0VORF9ERUNMUwotLQotKyNpZmRlZiBfX2NwbHVzcGx1cwotK30KLSsjZW5kaWYKLSAjZW5kaWYJLyogZWxmLmggKi8KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvbXVzbC1vYnN0YWNrLWZ0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL211c2wtb2JzdGFjay1mdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwZjJiNjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZWxmdXRpbHMvZmlsZXMvbXVzbC1vYnN0YWNrLWZ0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEyOCArMCwwIEBACi1Gcm9tIDc3Yjg5ZGJjOWY5Zjk2NWFkMGVmMmUzNDFkN2Q0NmJjZTVmMDc1NDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDIzIEF1ZyAyMDE5IDEwOjE3OjI1ICswODAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8zXSBtdXNsLW9ic3RhY2stZnRzCi0KLUxvb2sgZm9yIGxpYmZ0cyBhbmQgbGlib2JzdGFjayBkdXJpbmcgY29uZmlndXJlLCB0aGVzZQotbGlicmFyaWVzIGFyZSBleHRlcm5hbCB0byBsaWJjIHdoZW4gdXNpbmcgbXVzbCwgd2hlcmVhcwotb24gZ2xpYmMgdGhlc2UgbGlicmFyaWVzIGFyZSBwcm92aWRlZCBpbiBsaWJjIGl0c2VsZi4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbd29ya2Fyb3VuZCBmb3IgbXVzbF0KLQotUmViYXNlIHRvIDAuMTc3Ci1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICB8IDU0ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIGxpYmR3L01ha2VmaWxlLmFtIHwgIDIgKy0KLSBzcmMvTWFrZWZpbGUuYW0gICB8ICA4ICsrKystLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA1OSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBmOTM5NjRjLi5iODdiNzYyIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC00OTQsNiArNDk0LDYwIEBAIGVsc2UKLSBmaQotIEFDX1NVQlNUKFthcmdwX0xEQUREXSkKLSAKLStkbmwgQ2hlY2sgaWYgd2UgaGF2ZSBmdHMgYXZhaWxhYmxlIGZyb20gb3VyIGxpYmMKLStBQ19MSU5LX0lGRUxTRSgKLSsJW0FDX0xBTkdfUFJPR1JBTSgKLSsJCVsjaWYgIWRlZmluZWQoX194ODZfNjRfXykKLSsJCSN1bmRlZiAgX0ZJTEVfT0ZGU0VUX0JJVFMKLSsJCSNkZWZpbmUgX0ZJTEVfT0ZGU0VUX0JJVFMgMzIKLSsJCSNlbmRpZgotKwkJI2luY2x1ZGUgPGZ0cy5oPl0sCi0rCQlbRlRTKiBmdHMgPSAwOyByZXR1cm4gZnRzX2Nsb3NlKGZ0cyk7IHJldHVybiAwO10KLSsJCSldLAotKwlbbGliY19oYXNfZnRzPSJ0cnVlIl0sCi0rCVtsaWJjX2hhc19mdHM9ImZhbHNlIl0KLSspCi0rCi0rZG5sIElmIG91ciBsaWJjIGRvZXNuJ3QgcHJvdmlkZSBmdHMsIHRoZW4gdGVzdCBmb3IgbGliZnRzCi0raWYgdGVzdCAiJGxpYmNfaGFzX2Z0cyIgPSAiZmFsc2UiIDsgdGhlbgotKwlBQ19NU0dfV0FSTigibGliYyBkb2VzIG5vdCBoYXZlIGZ0cyIpCi0rCUFDX0NIRUNLX0xJQihbZnRzXSwgW2Z0c19jbG9zZV0sIFtoYXZlX2Z0cz0idHJ1ZSJdLCBbaGF2ZV9mdHM9ImZhbHNlIl0pCi0rCi0rCWlmIHRlc3QgIiRoYXZlX2Z0cyIgPSAiZmFsc2UiOyB0aGVuCi0rCQlBQ19NU0dfRVJST1IoIm5vIGxpYmZ0cyBmb3VuZCIpCi0rCWVsc2UKLSsJCWZ0c19MREFERD0iLWxmdHMiCi0rCWZpCi0rZWxzZQotKwlmdHNfTERBREQ9IiIKLStmaQotK0FDX1NVQlNUKFtmdHNfTERBRERdKQotKwotK2RubCBDaGVjayBpZiB3ZSBoYXZlIG9ic3RhY2sgYXZhaWxhYmxlIGZyb20gb3VyIGxpYmMKLStBQ19MSU5LX0lGRUxTRSgKLSsJW0FDX0xBTkdfUFJPR1JBTSgKLSsJCVsjaW5jbHVkZSA8b2JzdGFjay5oPl0sCi0rCQlbX29ic3RhY2tfYmVnaW4oMCwgMCwgMCwgTlVMTCwgTlVMTCk7IHJldHVybiAwO10KLSsJCSldLAotKwlbbGliY19oYXNfb2JzdGFjaz0idHJ1ZSJdLAotKwlbbGliY19oYXNfb2JzdGFjaz0iZmFsc2UiXQotKykKLSsKLStkbmwgSWYgb3VyIGxpYmMgZG9lc24ndCBwcm92aWRlIG9ic3RhY2ssIHRoZW4gdGVzdCBmb3IgbGlib2JzdGFjawotK2lmIHRlc3QgIiRsaWJjX2hhc19vYnN0YWNrIiA9ICJmYWxzZSIgOyB0aGVuCi0rCUFDX01TR19XQVJOKCJsaWJjIGRvZXMgbm90IGhhdmUgb2JzdGFjayIpCi0rCUFDX0NIRUNLX0xJQihbb2JzdGFja10sIFtfb2JzdGFja19iZWdpbl0sIFtoYXZlX29ic3RhY2s9InRydWUiXSwgW2hhdmVfb2JzdGFjaz0iZmFsc2UiXSkKLSsKLSsJaWYgdGVzdCAiJGhhdmVfb2JzdGFjayIgPSAiZmFsc2UiOyB0aGVuCi0rCQlBQ19NU0dfRVJST1IoIm5vIGxpYm9ic3RhY2sgZm91bmQiKQotKwllbHNlCi0rCQlvYnN0YWNrX0xEQUREPSItbG9ic3RhY2siCi0rCWZpCi0rZWxzZQotKwlvYnN0YWNrX0xEQUREPSIiCi0rZmkKLStBQ19TVUJTVChbb2JzdGFja19MREFERF0pCi0rCi0gZG5sIFRoZSBkaXJlY3RvcmllcyB3aXRoIGNvbnRlbnQuCi0gCi0gZG5sIERvY3VtZW50YXRpb24uCi1kaWZmIC0tZ2l0IGEvbGliZHcvTWFrZWZpbGUuYW0gYi9saWJkdy9NYWtlZmlsZS5hbQotaW5kZXggN2EzZDUzMi4uYTU0MWZhMyAxMDA2NDQKLS0tLSBhL2xpYmR3L01ha2VmaWxlLmFtCi0rKysgYi9saWJkdy9NYWtlZmlsZS5hbQotQEAgLTEwOCw3ICsxMDgsNyBAQCBhbV9saWJkd19waWNfYV9PQkpFQ1RTID0gJChsaWJkd19hX1NPVVJDRVM6LmM9Lm9zKQotIGxpYmR3X3NvX0xJQlMgPSBsaWJkd19waWMuYSAuLi9saWJkd2VsZi9saWJkd2VsZl9waWMuYSBcCi0gCSAgLi4vbGliZHdmbC9saWJkd2ZsX3BpYy5hIC4uL2xpYmVibC9saWJlYmwuYQotIGxpYmR3X3NvX0RFUFMgPSAuLi9saWIvbGliZXUuYSAuLi9saWJlbGYvbGliZWxmLnNvCi0tbGliZHdfc29fTERMSUJTID0gJChsaWJkd19zb19ERVBTKSAtbGRsIC1seiAkKGFyZ3BfTERBREQpICQoemlwX0xJQlMpCi0rbGliZHdfc29fTERMSUJTID0gJChsaWJkd19zb19ERVBTKSAtbGRsIC1seiAkKGFyZ3BfTERBREQpICQoZnRzX0xEQUREKSAkKHppcF9MSUJTKQotIGxpYmR3X3NvX1NPVVJDRVMgPQotIGxpYmR3LnNvJChFWEVFWFQpOiAkKHNyY2RpcikvbGliZHcubWFwICQobGliZHdfc29fTElCUykgJChsaWJkd19zb19ERVBTKQotICMgVGhlIHJwYXRoIGlzIG5lY2Vzc2FyeSBmb3IgbGliZWJsIGJlY2F1c2UgaXRzICRPUklHSU4gdXNlIHdpbGwKLWRpZmYgLS1naXQgYS9zcmMvTWFrZWZpbGUuYW0gYi9zcmMvTWFrZWZpbGUuYW0KLWluZGV4IGI3MmY4NTMuLjJmM2RmY2UgMTAwNjQ0Ci0tLS0gYS9zcmMvTWFrZWZpbGUuYW0KLSsrKyBiL3NyYy9NYWtlZmlsZS5hbQotQEAgLTY5LDggKzY5LDggQEAgYXJfbm9fV3N0YWNrX3VzYWdlID0geWVzCi0gdW5zdHJpcF9ub19Xc3RhY2tfdXNhZ2UgPSB5ZXMKLSAKLSByZWFkZWxmX0xEQUREID0gJChsaWJkdykgJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpIC1sZGwKLS1ubV9MREFERCA9ICQobGliZHcpICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKSAtbGRsIFwKLS0JICAgJChkZW1hbmdsZWxpYikKLStubV9MREFERCA9ICQobGliZHcpICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKSBcCi0rCSAgICQob2JzdGFja19MREFERCkgLWxkbCAkKGRlbWFuZ2xlbGliKQotIHNpemVfTERBREQgPSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKQotIHN0cmlwX0xEQUREID0gJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmR3KSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpIC1sZGwKLSBlbGZsaW50X0xEQUREICA9ICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKSAtbGRsCi1AQCAtNzgsOSArNzgsOSBAQCBmaW5kdGV4dHJlbF9MREFERCA9ICQobGliZHcpICQobGliZWxmKSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpCi0gYWRkcjJsaW5lX0xEQUREID0gJChsaWJkdykgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgJChkZW1hbmdsZWxpYikKLSBlbGZjbXBfTERBREQgPSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgLWxkbAotIG9iamR1bXBfTERBREQgID0gJChsaWJhc20pICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKSAtbGRsCi0tcmFubGliX0xEQUREID0gbGliYXIuYSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKQotK3JhbmxpYl9MREFERCA9IGxpYmFyLmEgJChsaWJlbGYpICQobGliZXUpICQoYXJncF9MREFERCkgJChvYnN0YWNrX0xEQUREKQotIHN0cmluZ3NfTERBREQgPSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKQotLWFyX0xEQUREID0gbGliYXIuYSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKQotK2FyX0xEQUREID0gbGliYXIuYSAkKGxpYmVsZikgJChsaWJldSkgJChhcmdwX0xEQUREKSAkKG9ic3RhY2tfTERBREQpCi0gdW5zdHJpcF9MREFERCA9ICQobGliZWJsKSAkKGxpYmVsZikgJChsaWJkdykgJChsaWJldSkgJChhcmdwX0xEQUREKSAtbGRsCi0gc3RhY2tfTERBREQgPSAkKGxpYmVibCkgJChsaWJlbGYpICQobGliZHcpICQobGliZXUpICQoYXJncF9MREFERCkgLWxkbCAkKGRlbWFuZ2xlbGliKQotIGVsZmNvbXByZXNzX0xEQUREID0gJChsaWJlYmwpICQobGliZWxmKSAkKGxpYmR3KSAkKGxpYmV1KSAkKGFyZ3BfTERBREQpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL211c2wtdGVzdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9tdXNsLXRlc3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZTM1NzkxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL211c2wtdGVzdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1GaXggZXJyb3Igb24gbXVzbDoKLQotfCAuLi8uLi9lbGZ1dGlscy0wLjE3Ni90ZXN0cy9lbGZzdHJtZXJnZS5jOiBJbiBmdW5jdGlvbiAnbWFpbic6Ci18IC4uLy4uL2VsZnV0aWxzLTAuMTc2L3Rlc3RzL2VsZnN0cm1lcmdlLmM6MzcwOjYwOiBlcnJvcjogJ0FMTFBFUk1TJyB1bmRlY2xhcmVkIChmaXJzdCB1c2UgaW4gdGhpcyBmdW5jdGlvbik7IGRpZCB5b3UgbWVhbiAnRVBFUk0nPwotfCAgICAgICAgZmRuZXcgPSBvcGVuIChmbmV3LCBPX1dST05MWSB8IE9fQ1JFQVQsIHN0LnN0X21vZGUgJiBBTExQRVJNUyk7Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+Ci18ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVQRVJNCi18IC4uLy4uL2VsZnV0aWxzLTAuMTc2L3Rlc3RzL2VsZnN0cm1lcmdlLmM6MzcwOjYwOiBub3RlOiBlYWNoIHVuZGVjbGFyZWQgaWRlbnRpZmllciBpcyByZXBvcnRlZCBvbmx5IG9uY2UgZm9yIGVhY2ggZnVuY3Rpb24gaXQgYXBwZWFycyBpbgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3dvcmthcm91bmQgaW4gbXVzbF0KLQotU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci0KLUluZGV4OiBlbGZ1dGlscy0wLjE3Ni90ZXN0cy9lbGZzdHJtZXJnZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZWxmdXRpbHMtMC4xNzYub3JpZy90ZXN0cy9lbGZzdHJtZXJnZS5jCi0rKysgZWxmdXRpbHMtMC4xNzYvdGVzdHMvZWxmc3RybWVyZ2UuYwotQEAgLTMzLDYgKzMzLDExIEBACi0gI2luY2x1ZGUgRUxGVVRJTFNfSEVBREVSKGR3ZWxmKQotICNpbmNsdWRlICJlbGYta25vd2xlZGdlLmgiCi0gCi0rLyogZm9yIG11c2wgKi8KLSsjaWZuZGVmIEFMTFBFUk1TCi0rIyBkZWZpbmUgQUxMUEVSTVMgKFNfSVNVSUR8U19JU0dJRHxTX0lTVlRYfFNfSVJXWFV8U19JUldYR3xTX0lSV1hPKS8qIDA3Nzc3ICovCi0rI2VuZGlmCi0rCi0gLyogVGhlIG9yaWdpbmFsIEVMRiBmaWxlLiAgKi8KLSBzdGF0aWMgaW50IGZkID0gLTE7Ci0gc3RhdGljIEVsZiAqZWxmID0gTlVMTDsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL211c2wtdXRpbHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9lbGZ1dGlscy9maWxlcy9tdXNsLXV0aWxzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOGFkOTMxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2VsZnV0aWxzL2ZpbGVzL211c2wtdXRpbHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjUgKzAsMCBAQAotRnJvbSA3ZjVlMmZkODZkNTRlMGE0ZDE5NWVjNjVhZmI5YjQxMTgyOWRmZjlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyMyBBdWcgMjAxOSAxMDoxOTo0OCArMDgwMAotU3ViamVjdDogW1BBVENIIDMvM10gbXVzbC11dGlscwotCi1Qcm92aWRlIG1pc3NpbmcgZGVmaW5lcyB3aGljaCBvdGhlcndpc2UgYXJlIGF2YWlsYWJsZSBvbiBnbGliYyBzeXN0ZW0gaGVhZGVycwotCi1BbHRlciB0aGUgZXJyb3IgQVBJIHRvIG1hdGNoIHBvc2l4IHZlcnNpb24KLXVzZSBxc29ydCBpbnN0ZWFkIG9mIHFzb3J0X3Igd2hpY2ggaXMgZ2xpYmMgc3BlY2lmaWMgQVBJCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3dvcmthcm91bmQgZm9yIG11c2xdCi0KLVJlYmFzZSB0byAwLjE3NwotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2FybGliLmggICAgICAgfCAgNiArKysrKysKLSBzcmMvZWxmY29tcHJlc3MuYyB8ICA3ICsrKysrKysKLSBzcmMvcmVhZGVsZi5jICAgICB8IDIwICsrKysrKysrKysrKy0tLS0tLS0tCi0gc3JjL3N0cmlwLmMgICAgICAgfCAgNyArKysrKysrCi0gc3JjL3Vuc3RyaXAuYyAgICAgfCAgOSArKysrKysrKysKLSA1IGZpbGVzIGNoYW5nZWQsIDQxIGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvYXJsaWIuaCBiL3NyYy9hcmxpYi5oCi1pbmRleCBlMTE3MTY2Li44MzI2ZjZjIDEwMDY0NAotLS0tIGEvc3JjL2FybGliLmgKLSsrKyBiL3NyYy9hcmxpYi5oCi1AQCAtMjksNiArMjksMTIgQEAKLSAjaW5jbHVkZSA8c3RkaW50Lmg+Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotIAotKyNpZiAhZGVmaW5lZChBTExQRVJNUykKLSsjIGRlZmluZSBBTExQRVJNUyAoU19JU1VJRHxTX0lTR0lEfFNfSVNWVFh8U19JUldYVXxTX0lSV1hHfFNfSVJXWE8pIC8qIDA3Nzc3ICovCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkKERFRkZJTEVNT0RFKQotKyMgZGVmaW5lIERFRkZJTEVNT0RFIChTX0lSVVNSfFNfSVdVU1J8U19JUkdSUHxTX0lXR1JQfFNfSVJPVEh8U19JV09USCkvKiAwNjY2Ki8KLSsjZW5kaWYKLSAKLSAvKiBTdGF0ZSBvZiAtRC8tVSBmbGFncy4gICovCi0gZXh0ZXJuIGJvb2wgYXJsaWJfZGV0ZXJtaW5pc3RpY19vdXRwdXQ7Ci1kaWZmIC0tZ2l0IGEvc3JjL2VsZmNvbXByZXNzLmMgYi9zcmMvZWxmY29tcHJlc3MuYwotaW5kZXggNmJhNmFmNC4uMGM3Njc0YiAxMDA2NDQKLS0tLSBhL3NyYy9lbGZjb21wcmVzcy5jCi0rKysgYi9zcmMvZWxmY29tcHJlc3MuYwotQEAgLTM3LDYgKzM3LDEzIEBACi0gI2luY2x1ZGUgImxpYmV1LmgiCi0gI2luY2x1ZGUgInByaW50dmVyc2lvbi5oIgotIAotKyNpZiAhZGVmaW5lZChBTExQRVJNUykKLSsjIGRlZmluZSBBTExQRVJNUyAoU19JU1VJRHxTX0lTR0lEfFNfSVNWVFh8U19JUldYVXxTX0lSV1hHfFNfSVJXWE8pIC8qIDA3Nzc3ICovCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkKEZOTV9FWFRNQVRDSCkKLSsjIGRlZmluZSBGTk1fRVhUTUFUQ0ggKDApCi0rI2VuZGlmCi0rCi0gLyogTmFtZSBhbmQgdmVyc2lvbiBvZiBwcm9ncmFtLiAgKi8KLSBBUkdQX1BST0dSQU1fVkVSU0lPTl9IT09LX0RFRiA9IHByaW50X3ZlcnNpb247Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL3JlYWRlbGYuYyBiL3NyYy9yZWFkZWxmLmMKLWluZGV4IDVjMDJhOWIuLjgxNzU2MmQgMTAwNjQ0Ci0tLS0gYS9zcmMvcmVhZGVsZi5jCi0rKysgYi9zcmMvcmVhZGVsZi5jCi1AQCAtNDgxMywxMCArNDgxMywxMSBAQCBsaXN0cHRyX2Jhc2UgKHN0cnVjdCBsaXN0cHRyICpwKQotICAgcmV0dXJuIGN1ZGllX2Jhc2UgKCZjdSk7Ci0gfQotIAotK3N0YXRpYyBjb25zdCBjaGFyICpsaXN0cHRyX25hbWU7Ci0rCi0gc3RhdGljIGludAotLWNvbXBhcmVfbGlzdHB0ciAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYiwgdm9pZCAqYXJnKQotK2NvbXBhcmVfbGlzdHB0ciAoY29uc3Qgdm9pZCAqYSwgY29uc3Qgdm9pZCAqYikKLSB7Ci0tICBjb25zdCBjaGFyICpuYW1lID0gYXJnOwotICAgc3RydWN0IGxpc3RwdHIgKnAxID0gKHZvaWQgKikgYTsKLSAgIHN0cnVjdCBsaXN0cHRyICpwMiA9ICh2b2lkICopIGI7Ci0gCi1AQCAtNDgzMiwyMSArNDgzMywyMSBAQCBjb21wYXJlX2xpc3RwdHIgKGNvbnN0IHZvaWQgKmEsIGNvbnN0IHZvaWQgKmIsIHZvaWQgKmFyZykKLSAJICBwMS0+d2FybmVkID0gcDItPndhcm5lZCA9IHRydWU7Ci0gCSAgZXJyb3IgKDAsIDAsCi0gCQkgZ2V0dGV4dCAoIiVzICUjIiBQUkl4NjQgIiB1c2VkIHdpdGggZGlmZmVyZW50IGFkZHJlc3Mgc2l6ZXMiKSwKLS0JCSBuYW1lLCAodWludDY0X3QpIHAxLT5vZmZzZXQpOwotKwkJIGxpc3RwdHJfbmFtZSwgKHVpbnQ2NF90KSBwMS0+b2Zmc2V0KTsKLSAJfQotICAgICAgIGlmIChwMS0+ZHdhcmY2NCAhPSBwMi0+ZHdhcmY2NCkKLSAJewotIAkgIHAxLT53YXJuZWQgPSBwMi0+d2FybmVkID0gdHJ1ZTsKLSAJICBlcnJvciAoMCwgMCwKLSAJCSBnZXR0ZXh0ICgiJXMgJSMiIFBSSXg2NCAiIHVzZWQgd2l0aCBkaWZmZXJlbnQgb2Zmc2V0IHNpemVzIiksCi0tCQkgbmFtZSwgKHVpbnQ2NF90KSBwMS0+b2Zmc2V0KTsKLSsJCSBsaXN0cHRyX25hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCk7Ci0gCX0KLSAgICAgICBpZiAobGlzdHB0cl9iYXNlIChwMSkgIT0gbGlzdHB0cl9iYXNlIChwMikpCi0gCXsKLSAJICBwMS0+d2FybmVkID0gcDItPndhcm5lZCA9IHRydWU7Ci0gCSAgZXJyb3IgKDAsIDAsCi0gCQkgZ2V0dGV4dCAoIiVzICUjIiBQUkl4NjQgIiB1c2VkIHdpdGggZGlmZmVyZW50IGJhc2UgYWRkcmVzc2VzIiksCi0tCQkgbmFtZSwgKHVpbnQ2NF90KSBwMS0+b2Zmc2V0KTsKLSsJCSBsaXN0cHRyX25hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCk7Ci0gCX0KLSAgICAgICBpZiAocDEtPmF0dHIgIT0gcDIgLT5hdHRyKQotIAl7Ci1AQCAtNDg1NCw3ICs0ODU1LDcgQEAgY29tcGFyZV9saXN0cHRyIChjb25zdCB2b2lkICphLCBjb25zdCB2b2lkICpiLCB2b2lkICphcmcpCi0gCSAgZXJyb3IgKDAsIDAsCi0gCQkgZ2V0dGV4dCAoIiVzICUjIiBQUkl4NjQKLSAJCQkgICIgdXNlZCB3aXRoIGRpZmZlcmVudCBhdHRyaWJ1dGUgJXMgYW5kICVzIiksCi0tCQkgbmFtZSwgKHVpbnQ2NF90KSBwMS0+b2Zmc2V0LCBkd2FyZl9hdHRyX25hbWUgKHAyLT5hdHRyKSwKLSsJCSBsaXN0cHRyX25hbWUsICh1aW50NjRfdCkgcDEtPm9mZnNldCwgZHdhcmZfYXR0cl9uYW1lIChwMi0+YXR0ciksCi0gCQkgZHdhcmZfYXR0cl9uYW1lIChwMi0+YXR0cikpOwotIAl9Ci0gICAgIH0KLUBAIC00OTI2LDggKzQ5MjcsMTEgQEAgc3RhdGljIHZvaWQKLSBzb3J0X2xpc3RwdHIgKHN0cnVjdCBsaXN0cHRyX3RhYmxlICp0YWJsZSwgY29uc3QgY2hhciAqbmFtZSkKLSB7Ci0gICBpZiAodGFibGUtPm4gPiAwKQotLSAgICBxc29ydF9yICh0YWJsZS0+dGFibGUsIHRhYmxlLT5uLCBzaXplb2YgdGFibGUtPnRhYmxlWzBdLAotLQkgICAgICZjb21wYXJlX2xpc3RwdHIsICh2b2lkICopIG5hbWUpOwotKyAgICB7Ci0rICAgICAgbGlzdHB0cl9uYW1lID0gbmFtZTsKLSsgICAgICBxc29ydCAodGFibGUtPnRhYmxlLCB0YWJsZS0+biwgc2l6ZW9mIHRhYmxlLT50YWJsZVswXSwKLSsJICAgICZjb21wYXJlX2xpc3RwdHIpOwotKyAgICB9Ci0gfQotIAotIHN0YXRpYyBib29sCi1kaWZmIC0tZ2l0IGEvc3JjL3N0cmlwLmMgYi9zcmMvc3RyaXAuYwotaW5kZXggNDA1NGMyYS4uZDJkMjE3NiAxMDA2NDQKLS0tLSBhL3NyYy9zdHJpcC5jCi0rKysgYi9zcmMvc3RyaXAuYwotQEAgLTQ2LDYgKzQ2LDEzIEBACi0gI2luY2x1ZGUgPHN5c3RlbS5oPgotICNpbmNsdWRlIDxwcmludHZlcnNpb24uaD4KLSAKLSsjaWYgIWRlZmluZWQoQUNDRVNTUEVSTVMpCi0rIyBkZWZpbmUgQUNDRVNTUEVSTVMgKFNfSVJXWFV8U19JUldYR3xTX0lSV1hPKSAvKiAwNzc3ICovCi0rI2VuZGlmCi0rI2lmICFkZWZpbmVkKEZOTV9FWFRNQVRDSCkKLSsjIGRlZmluZSBGTk1fRVhUTUFUQ0ggKDApCi0rI2VuZGlmCi0rCi0gdHlwZWRlZiB1aW50OF90IEdFbGZfQnl0ZTsKLSAKLSAvKiBOYW1lIGFuZCB2ZXJzaW9uIG9mIHByb2dyYW0uICAqLwotZGlmZiAtLWdpdCBhL3NyYy91bnN0cmlwLmMgYi9zcmMvdW5zdHJpcC5jCi1pbmRleCBmYzg3ODMyLi4yMWVhNmIzIDEwMDY0NAotLS0tIGEvc3JjL3Vuc3RyaXAuYwotKysrIGIvc3JjL3Vuc3RyaXAuYwotQEAgLTU2LDYgKzU2LDE1IEBACi0gIyBkZWZpbmUgXyhzdHIpIGdldHRleHQgKHN0cikKLSAjZW5kaWYKLSAKLSsjaWZuZGVmIHN0cm5kdXBhCi0rI2RlZmluZSBzdHJuZHVwYShzLCBuKSBcCi0rICAgICAgICh7Y29uc3QgY2hhciAqX19pbiA9IChzKTsgXAotKyAgICAgICAgIHNpemVfdCBfX2xlbiA9IHN0cm5sZW4gKF9faW4sIChuKSkgKyAxOyBcCi0rICAgICAgICAgY2hhciAqX19vdXQgPSAoY2hhciAqKSBhbGxvY2EgKF9fbGVuKTsgXAotKyAgICAgICAgIF9fb3V0W19fbGVuLTFdID0gJ1wwJzsgXAotKyAgICAgICAgIChjaGFyICopIG1lbWNweSAoX19vdXQsIF9faW4sIF9fbGVuLTEpO30pCi0rI2VuZGlmCi0rCi0gLyogTmFtZSBhbmQgdmVyc2lvbiBvZiBwcm9ncmFtLiAgKi8KLSBBUkdQX1BST0dSQU1fVkVSU0lPTl9IT09LX0RFRiA9IHByaW50X3ZlcnNpb247Ci0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZS9DVkUtMjAxOS0xODIxOC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZpbGUvZmlsZS9DVkUtMjAxOS0xODIxOC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2QwMmM1YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGUvQ1ZFLTIwMTktMTgyMTgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1jZGZfcmVhZF9wcm9wZXJ0eV9pbmZvIGluIGNkZi5jIGluIGZpbGUgdGhyb3VnaCA1LjM3IGRvZXMgbm90IHJlc3RyaWN0IHRoZQotbnVtYmVyIG9mIENERl9WRUNUT1IgZWxlbWVudHMsIHdoaWNoIGFsbG93cyBhIGhlYXAtYmFzZWQgYnVmZmVyIG92ZXJmbG93ICg0LWJ5dGUKLW91dC1vZi1ib3VuZHMgd3JpdGUpLgotCi1DVkU6IENWRS0yMDE5LTE4MjE4Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDQ2YTg0NDNmNzZjZWM0YjQxZWM3MzZlY2EzOTY5ODRjNzQ2NjRmODQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDaHJpc3RvcyBab3VsYXMgPGNocmlzdG9zQHpvdWxhcy5jb20+Ci1EYXRlOiBNb24sIDI2IEF1ZyAyMDE5IDE0OjMxOjM5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIExpbWl0IHRoZSBudW1iZXIgb2YgZWxlbWVudHMgaW4gYSB2ZWN0b3IgKGZvdW5kIGJ5IG9zcy1mdXp6KQotCi0tLS0KLSBzcmMvY2RmLmMgfCA5ICsrKystLS0tLQotIHNyYy9jZGYuaCB8IDEgKwotIDIgZmlsZXMgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NkZi5jIGIvc3JjL2NkZi5jCi1pbmRleCA5ZDYzOTY3NDIuLmJiODFkNjM3NCAxMDA2NDQKLS0tLSBhL3NyYy9jZGYuYwotKysrIGIvc3JjL2NkZi5jCi1AQCAtMTAxNiw4ICsxMDE2LDkgQEAgY2RmX3JlYWRfcHJvcGVydHlfaW5mbyhjb25zdCBjZGZfc3RyZWFtX3QgKnNzdCwgY29uc3QgY2RmX2hlYWRlcl90ICpoLAotIAkJCQlnb3RvIG91dDsKLSAJCQl9Ci0gCQkJbmVsZW1lbnRzID0gQ0RGX0dFVFVJTlQzMihxLCAxKTsKLS0JCQlpZiAobmVsZW1lbnRzID09IDApIHsKLS0JCQkJRFBSSU5URigoIkNERl9WRUNUT1Igd2l0aCBuZWxlbWVudHMgPT0gMFxuIikpOwotKwkJCWlmIChuZWxlbWVudHMgPiBDREZfRUxFTUVOVF9MSU1JVCB8fCBuZWxlbWVudHMgPT0gMCkgewotKwkJCQlEUFJJTlRGKCgiQ0RGX1ZFQ1RPUiB3aXRoIG5lbGVtZW50cyA9PSAlIgotKwkJCQkgICAgU0laRV9UX0ZPUk1BVCAidVxuIiwgbmVsZW1lbnRzKSk7Ci0gCQkJCWdvdG8gb3V0OwotIAkJCX0KLSAJCQlzbGVuID0gMjsKLUBAIC0xMDYwLDggKzEwNjEsNiBAQCBjZGZfcmVhZF9wcm9wZXJ0eV9pbmZvKGNvbnN0IGNkZl9zdHJlYW1fdCAqc3N0LCBjb25zdCBjZGZfaGVhZGVyX3QgKmgsCi0gCQkJCQlnb3RvIG91dDsKLSAJCQkJaW5wICs9IG5lbGVtOwotIAkJCX0KLS0JCQlEUFJJTlRGKCgibmVsZW1lbnRzID0gJSIgU0laRV9UX0ZPUk1BVCAidVxuIiwKLS0JCQkgICAgbmVsZW1lbnRzKSk7Ci0gCQkJZm9yIChqID0gMDsgaiA8IG5lbGVtZW50cyAmJiBpIDwgc2guc2hfcHJvcGVydGllczsKLSAJCQkgICAgaisrLCBpKyspCi0gCQkJewotZGlmZiAtLWdpdCBhL3NyYy9jZGYuaCBiL3NyYy9jZGYuaAotaW5kZXggMmY3ZTU1NGI3Li4wNTA1NjY2OGYgMTAwNjQ0Ci0tLS0gYS9zcmMvY2RmLmgKLSsrKyBiL3NyYy9jZGYuaAotQEAgLTQ4LDYgKzQ4LDcgQEAKLSB0eXBlZGVmIGludDMyX3QgY2RmX3NlY2lkX3Q7Ci0gCi0gI2RlZmluZSBDREZfTE9PUF9MSU1JVAkJCQkJMTAwMDAKLSsjZGVmaW5lIENERl9FTEVNRU5UX0xJTUlUCQkJCTEwMDAwMAotIAotICNkZWZpbmUgQ0RGX1NFQ0lEX05VTEwJCQkJCTAKLSAjZGVmaW5lIENERl9TRUNJRF9GUkVFCQkJCQktMQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGVfNS4zNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTk2Y2NjMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGVfNS4zNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLVNVTU1BUlkgPSAiRmlsZSBjbGFzc2lmaWNhdGlvbiB0b29sIgotREVTQ1JJUFRJT04gPSAiRmlsZSBhdHRlbXB0cyB0byBjbGFzc2lmeSBmaWxlcyBkZXBlbmRpbmcgXAotb24gdGhlaXIgY29udGVudHMgYW5kIHByaW50cyBhIGRlc2NyaXB0aW9uIGlmIGEgbWF0Y2ggaXMgZm91bmQuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5kYXJ3aW5zeXMuY29tL2ZpbGUvIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi0jIHR3byBjbGF1c2UgQlNECi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7YmVnaW5saW5lPTI7bWQ1PTAyNTFlYWVjMTE4OGIyMGQ5YTcyYzUwMmVjZmRkYTFiIgotCi1ERVBFTkRTID0gInpsaWIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJ6bGliLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZpbGUvZmlsZS5naXQgXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTktMTgyMTgucGF0Y2giCi0KLVNSQ1JFViA9ICJhMGQ1YjBlNGU5Zjk3ZDc0YTk5MTFlOTVjZWRkNTc5ODUyZTI1Mzk4IgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1saWJzZWNjb21wIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJmaWxlIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2ZpbGVdID0gIiR7YmluZGlyfS9maWxlIgotCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICItZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L21pc2MvKi5tZ2MiCi0KLWRvX2NvbXBpbGVfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQlvZV9ydW5tYWtlIGNoZWNrCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQljcmVhdGVfY21kbGluZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZpbGUgXAotCQktLW1hZ2ljLWZpbGUgJHtkYXRhZGlyfS9taXNjL21hZ2ljLm1nYwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JY3JlYXRlX2NtZGxpbmVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9maWxlIFwKLQkJLS1tYWdpYy1maWxlICR7ZGF0YWRpcn0vbWlzYy9tYWdpYy5tZ2MKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotUFJPVklERVNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCi0jIERvbid0IHVzZSBOQVRJVkVfUEFDS0FHRV9QQVRIX1NVRkZJWCBhcyB0aGF0IGhpZGVzIGxpYm1hZ2ljIGZyb20gYW55b25lIHdobwotIyBkZXBlbmRzIG9uIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlLgotYmluZGlyX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiL2ZpbGUtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9maWxlL2ZpbGVfNS4zOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOGYwOTEwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmlsZS9maWxlXzUuMzguYmIKQEAgLTAsMCArMSw0OSBAQAorU1VNTUFSWSA9ICJGaWxlIGNsYXNzaWZpY2F0aW9uIHRvb2wiCitERVNDUklQVElPTiA9ICJGaWxlIGF0dGVtcHRzIHRvIGNsYXNzaWZ5IGZpbGVzIGRlcGVuZGluZyBcCitvbiB0aGVpciBjb250ZW50cyBhbmQgcHJpbnRzIGEgZGVzY3JpcHRpb24gaWYgYSBtYXRjaCBpcyBmb3VuZC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmRhcndpbnN5cy5jb20vZmlsZS8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKKyMgdHdvIGNsYXVzZSBCU0QKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORztiZWdpbmxpbmU9MjttZDU9MDI1MWVhZWMxMTg4YjIwZDlhNzJjNTAyZWNmZGRhMWIiCisKK0RFUEVORFMgPSAiemxpYiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vZmlsZS9maWxlLmdpdCIKKworU1JDUkVWID0gImVjNDEwODM2NDU2ODlhNzg3Y2RkMDBjYjNiNWJmNTc4YWE3OWU0NmMiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWxpYnNlY2NvbXAiCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gImZpbGUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZmlsZV0gPSAiJHtiaW5kaXJ9L2ZpbGUiCisKK0VYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAtZSBGSUxFX0NPTVBJTEU9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZpbGUtbmF0aXZlL2ZpbGUiCitFWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgLWUgRklMRV9DT01QSUxFPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9maWxlLW5hdGl2ZS9maWxlIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9taXNjLyoubWdjIgorCitkb19jb21waWxlX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJb2VfcnVubWFrZSBjaGVjaworfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJY3JlYXRlX2NtZGxpbmVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9maWxlIFwKKwkJLS1tYWdpYy1maWxlICR7ZGF0YWRpcn0vbWlzYy9tYWdpYy5tZ2MKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCWNyZWF0ZV9jbWRsaW5lX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmlsZSBcCisJCS0tbWFnaWMtZmlsZSAke2RhdGFkaXJ9L21pc2MvbWFnaWMubWdjCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKK1BST1ZJREVTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIgorIyBEb24ndCB1c2UgTkFUSVZFX1BBQ0tBR0VfUEFUSF9TVUZGSVggYXMgdGhhdCBoaWRlcyBsaWJtYWdpYyBmcm9tIGFueW9uZSB3aG8KKyMgZGVwZW5kcyBvbiBmaWxlLXJlcGxhY2VtZW50LW5hdGl2ZS4KK2JpbmRpcl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIi9maWxlLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC8wMDAxLWJ1aWxkLUFDX1VTRV9TWVNURU1fRVhURU5TSU9OUy1pbi1jb25maWd1cmUuYWMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvMDAwMS1idWlsZC1BQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMtaW4tY29uZmlndXJlLmFjLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwYmY3Y2UKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvMDAwMS1idWlsZC1BQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMtaW4tY29uZmlndXJlLmFjLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gZWQxZjdlOWRlMGQ2YTFkNWE5ZTU4MWUwMmE2MzU5M2QyMmNmMWU1MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEV4cGxvcmVyMDkgPGV4cGxvcmVyMDlAZ21haWwuY29tPgorRGF0ZTogTW9uLCA0IFNlcCAyMDE3IDEwOjQ3OjMzICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGJ1aWxkOiBBQ19VU0VfU1lTVEVNX0VYVEVOU0lPTlMgaW4gY29uZmlndXJlLmFjLgorCitUaGlzIHdvdWxkLCBlLmcuIGRlZmluZSBfR05VX1NPVVJDRSBpbiBjb25maWcuaCwgZW5hYmxpbmcgdGhlCityZWFsbG9jYXJyYXkoKSBwcm90b3R5cGUgaW4gZ2xpYmMgMi4yNisgb24gTGludXggc3lzdGVtcyB3aXRoIHRoYXQKK3ZlcnNpb24gb2YgZ2xpYmMuCisKK0ZpeGVzICMyNDEuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgY29uZmlndXJlLmFjIHwgMiArKworIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggNTVlNzc0Yi4uYzg3OWZlMSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMjUsOCArMjUsMTAgQEAKKyAjIGF1dG9jb25mIHJlcXVpcmVtZW50cyBhbmQgaW5pdGlhbGl6YXRpb24KKyAKKyBBQ19JTklUKFt0aGUgZmFzdCBsZXhpY2FsIGFuYWx5c2VyIGdlbmVyYXRvcl0sWzIuNi40XSxbZmxleC1oZWxwQGxpc3RzLnNvdXJjZWZvcmdlLm5ldF0sW2ZsZXhdKQorK0FDX1BSRVJFUShbMi42MF0pCisgQUNfQ09ORklHX1NSQ0RJUihbc3JjL3NjYW4ubF0pCisgQUNfQ09ORklHX0FVWF9ESVIoW2J1aWxkLWF1eF0pCisrQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TCisgTFRfSU5JVAorIEFNX0lOSVRfQVVUT01BS0UoWzEuMTEuMyAtV25vLXBvcnRhYmlsaXR5IGZvcmVpZ24gY2hlY2stbmV3cyBzdGQtb3B0aW9ucyBkaXN0LWx6aXAgcGFyYWxsZWwtdGVzdHMgc3ViZGlyLW9iamVjdHNdKQorIEFDX0NPTkZJR19IRUFERVIoW3NyYy9jb25maWcuaF0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvMDAwMi1hdm9pZC1jLWNvbW1lbnRzLWluLWMtY29kZS1mYWlscy13aXRoLWdjYy02LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4LzAwMDItYXZvaWQtYy1jb21tZW50cy1pbi1jLWNvZGUtZmFpbHMtd2l0aC1nY2MtNi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDM4Y2E1Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvMDAwMi1hdm9pZC1jLWNvbW1lbnRzLWluLWMtY29kZS1mYWlscy13aXRoLWdjYy02LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjQgKzAsMCBAQAotRnJvbSA3MDcyYmVmZTEzOTdhZjRlYjAxYzNmZjdlZGY5OWYwY2Q1MDc2MDg5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogPT9VVEYtOD9xP0FuZHJlYXM9MjBNPUMzPUJDbGxlcj89IDxzY2huaXR6ZWx0b255QGdvb2dsZW1haWwuY29tPgotRGF0ZTogVHVlLCAzMCBBdWcgMjAxNiAxNDoyNTozMiArMDIwMAotU3ViamVjdDogW1BBVENIXSBhdm9pZCBjKysgY29tbWVudHMgaW4gYy1jb2RlIC0gZmFpbHMgd2l0aCBnY2MtNgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1maXhlczoKLQotfCBlcnJvcjogQysrIHN0eWxlIGNvbW1lbnRzIGFyZSBub3QgYWxsb3dlZCBpbiBJU08gQzkwCi18IG51bV90b19hbGxvYyA9IDE7IC8vIEFmdGVyIGFsbCB0aGF0IHRhbGssIHRoaXMgd2FzIHNldCB0byAxIGFueXdheXMuLi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlYXMgTcO8bGxlciA8c2Nobml0emVsdG9ueUBnb29nbGVtYWlsLmNvbT4KLS0tLQotIHNyYy9mbGV4LnNrbCB8IDIgKy0KLSBzcmMvc2Nhbi5jICAgfCAyICstCi0gc3JjL3NrZWwuYyAgIHwgMiArLQotIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2ZsZXguc2tsIGIvc3JjL2ZsZXguc2tsCi1pbmRleCA3M2EwYjllLi5lZDcxNjI3IDEwMDY0NAotLS0tIGEvc3JjL2ZsZXguc2tsCi0rKysgYi9zcmMvZmxleC5za2wKLUBAIC0yMzUwLDcgKzIzNTAsNyBAQCB2b2lkIHl5RmxleExleGVyOjp5eWVuc3VyZV9idWZmZXJfc3RhY2sodm9pZCkKLSAJCSAqIHNjYW5uZXIgd2lsbCBldmVuIG5lZWQgYSBzdGFjay4gV2UgdXNlIDIgaW5zdGVhZCBvZiAxIHRvIGF2b2lkIGFuCi0gCQkgKiBpbW1lZGlhdGUgcmVhbGxvYyBvbiB0aGUgbmV4dCBjYWxsLgotICAgICAgICAgICovCi0tCQludW1fdG9fYWxsb2MgPSAxOyAvLyBBZnRlciBhbGwgdGhhdCB0YWxrLCB0aGlzIHdhcyBzZXQgdG8gMSBhbnl3YXlzLi4uCi0rCQludW1fdG9fYWxsb2MgPSAxOyAvKiBBZnRlciBhbGwgdGhhdCB0YWxrLCB0aGlzIHdhcyBzZXQgdG8gMSBhbnl3YXlzLi4uICovCi0gCQlZWV9HKHl5X2J1ZmZlcl9zdGFjaykgPSAoc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSoqKXl5YWxsb2MKLSAJCQkJCQkJCShudW1fdG9fYWxsb2MgKiBzaXplb2Yoc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSopCi0gCQkJCQkJCQlNNF9ZWV9DQUxMX0xBU1RfQVJHKTsKLWRpZmYgLS1naXQgYS9zcmMvc2Nhbi5jIGIvc3JjL3NjYW4uYwotaW5kZXggYjU1ZGYyZC4uZjFkY2U3NSAxMDA2NDQKLS0tLSBhL3NyYy9zY2FuLmMKLSsrKyBiL3NyYy9zY2FuLmMKLUBAIC00NjcyLDcgKzQ2NzIsNyBAQCBzdGF0aWMgdm9pZCB5eWVuc3VyZV9idWZmZXJfc3RhY2sgKHZvaWQpCi0gCQkgKiBzY2FubmVyIHdpbGwgZXZlbiBuZWVkIGEgc3RhY2suIFdlIHVzZSAyIGluc3RlYWQgb2YgMSB0byBhdm9pZCBhbgotIAkJICogaW1tZWRpYXRlIHJlYWxsb2Mgb24gdGhlIG5leHQgY2FsbC4KLSAgICAgICAgICAqLwotLQkJbnVtX3RvX2FsbG9jID0gMTsgLy8gQWZ0ZXIgYWxsIHRoYXQgdGFsaywgdGhpcyB3YXMgc2V0IHRvIDEgYW55d2F5cy4uLgotKwkJbnVtX3RvX2FsbG9jID0gMTsgLyogQWZ0ZXIgYWxsIHRoYXQgdGFsaywgdGhpcyB3YXMgc2V0IHRvIDEgYW55d2F5cy4uLiovCi0gCQkoeXlfYnVmZmVyX3N0YWNrKSA9IChzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlKiopeXlhbGxvYwotIAkJCQkJCQkJKG51bV90b19hbGxvYyAqIHNpemVvZihzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlKikKLSAJCQkJCQkJCSk7Ci1kaWZmIC0tZ2l0IGEvc3JjL3NrZWwuYyBiL3NyYy9za2VsLmMKLWluZGV4IGVmNjU3ZDMuLjI2Y2M4ODkgMTAwNjQ0Ci0tLS0gYS9zcmMvc2tlbC5jCi0rKysgYi9zcmMvc2tlbC5jCi1AQCAtMjU2MSw3ICsyNTYxLDcgQEAgY29uc3QgY2hhciAqc2tlbFtdID0gewotICAgIgkJICogc2Nhbm5lciB3aWxsIGV2ZW4gbmVlZCBhIHN0YWNrLiBXZSB1c2UgMiBpbnN0ZWFkIG9mIDEgdG8gYXZvaWQgYW4iLAotICAgIgkJICogaW1tZWRpYXRlIHJlYWxsb2Mgb24gdGhlIG5leHQgY2FsbC4iLAotICAgIiAgICAgICAgICovIiwKLS0gICIJCW51bV90b19hbGxvYyA9IDE7IC8vIEFmdGVyIGFsbCB0aGF0IHRhbGssIHRoaXMgd2FzIHNldCB0byAxIGFueXdheXMuLi4iLAotKyAgIgkJbnVtX3RvX2FsbG9jID0gMTsgLyogQWZ0ZXIgYWxsIHRoYXQgdGFsaywgdGhpcyB3YXMgc2V0IHRvIDEgYW55d2F5cy4uLiAqLyIsCi0gICAiCQlZWV9HKHl5X2J1ZmZlcl9zdGFjaykgPSAoc3RydWN0IHl5X2J1ZmZlcl9zdGF0ZSoqKXl5YWxsb2MiLAotICAgIgkJCQkJCQkJKG51bV90b19hbGxvYyAqIHNpemVvZihzdHJ1Y3QgeXlfYnVmZmVyX3N0YXRlKikiLAotICAgIgkJCQkJCQkJTTRfWVlfQ0FMTF9MQVNUX0FSRyk7IiwKLS0tIAotMi41LjUKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4L0NWRS0yMDE2LTYzNTQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvQ1ZFLTIwMTYtNjM1NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjE2YWM3YS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvQ1ZFLTIwMTYtNjM1NC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUZyb20gMzkzOWVjY2RmZjU5OGY0N2U1YjM3YjA1ZDU4YmYxYjQ0ZDM3OTZlNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEp1c3NpIEt1a2tvbmVuIDxqdXNzaS5rdWtrb25lbkBpbnRlbC5jb20+Ci1EYXRlOiBGcmksIDcgT2N0IDIwMTYgMTQ6MTU6MzggKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gUHJldmVudCBidWZmZXIgb3ZlcmZsb3cgaW4geXlfZ2V0X25leHRfYnVmZmVyCi0KLVRoaXMgaXMgdXBzdHJlYW0gY29tbWl0IGE1Y2JlOTI5YWMzMjU1ZDM3MWU2OThmNjJkYzI1NmFmZTcwMDY0NjYKLXdpdGggc29tZSBhZGRpdGlvbmFsIGJhY2twb3J0aW5nIHRvIG1ha2UgYmludXRpbHMgYnVpbGQgYWdhaW4uCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUNWRTogQ1ZFLTIwMTYtNjM1NAotU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KLS0tLQotIHNyYy9mbGV4LnNrbCB8IDIgKy0KLSBzcmMvc2Nhbi5jICAgfCAyICstCi0gc3JjL3NrZWwuYyAgIHwgMiArLQotIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2ZsZXguc2tsIGIvc3JjL2ZsZXguc2tsCi1pbmRleCBlZDcxNjI3Li44MTRkNTYyIDEwMDY0NAotLS0tIGEvc3JjL2ZsZXguc2tsCi0rKysgYi9zcmMvZmxleC5za2wKLUBAIC0xNzE4LDcgKzE3MTgsNyBAQCBpbnQgeXlGbGV4TGV4ZXI6Onl5X2dldF9uZXh0X2J1ZmZlcigpCi0gCi0gCWVsc2UKLSAJCXsKLS0JCQl5eV9zaXplX3QgbnVtX3RvX3JlYWQgPQotKwkJCWludCBudW1fdG9fcmVhZCA9Ci0gCQkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtIG51bWJlcl90b19tb3ZlIC0gMTsKLSAKLSAJCXdoaWxlICggbnVtX3RvX3JlYWQgPD0gMCApCi1kaWZmIC0tZ2l0IGEvc3JjL3NjYW4uYyBiL3NyYy9zY2FuLmMKLWluZGV4IGYxZGNlNzUuLjE5NDk4NzIgMTAwNjQ0Ci0tLS0gYS9zcmMvc2Nhbi5jCi0rKysgYi9zcmMvc2Nhbi5jCi1AQCAtNDE4MSw3ICs0MTgxLDcgQEAgc3RhdGljIGludCB5eV9nZXRfbmV4dF9idWZmZXIgKHZvaWQpCi0gCi0gCWVsc2UKLSAJCXsKLS0JCQl5eV9zaXplX3QgbnVtX3RvX3JlYWQgPQotKwkJCWludCBudW1fdG9fcmVhZCA9Ci0gCQkJWVlfQ1VSUkVOVF9CVUZGRVJfTFZBTFVFLT55eV9idWZfc2l6ZSAtIG51bWJlcl90b19tb3ZlIC0gMTsKLSAKLSAJCXdoaWxlICggbnVtX3RvX3JlYWQgPD0gMCApCi1kaWZmIC0tZ2l0IGEvc3JjL3NrZWwuYyBiL3NyYy9za2VsLmMKLWluZGV4IDI2Y2M4ODkuLjAzNDRkMTggMTAwNjQ0Ci0tLS0gYS9zcmMvc2tlbC5jCi0rKysgYi9zcmMvc2tlbC5jCi1AQCAtMTkyOSw3ICsxOTI5LDcgQEAgY29uc3QgY2hhciAqc2tlbFtdID0gewotICAgIiIsCi0gICAiCWVsc2UiLAotICAgIgkJeyIsCi0tICAiCQkJeXlfc2l6ZV90IG51bV90b19yZWFkID0iLAotKyAgIgkJCWludCBudW1fdG9fcmVhZCA9IiwKLSAgICIJCQlZWV9DVVJSRU5UX0JVRkZFUl9MVkFMVUUtPnl5X2J1Zl9zaXplIC0gbnVtYmVyX3RvX21vdmUgLSAxOyIsCi0gICAiIiwKLSAgICIJCXdoaWxlICggbnVtX3RvX3JlYWQgPD0gMCApIiwKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4L2RvX25vdF9jcmVhdGVfcGRmX2RvYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9kb19ub3RfY3JlYXRlX3BkZl9kb2MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5NzkyZWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4L2RvX25vdF9jcmVhdGVfcGRmX2RvYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSAoZW1iZWRkZWQgc3BlY2lmaWMpCi0KLVNpZ25lZC1vZmYtYnk6IExhdXJlbnRpdSBQYWxjdSA8bGF1cmVudGl1LnBhbGN1QGludGVsLmNvbT4KLQotSW5kZXg6IGZsZXgtMi42LjAvZG9jL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZmxleC0yLjYuMC5vcmlnL2RvYy9NYWtlZmlsZS5hbQotKysrIGZsZXgtMi42LjAvZG9jL01ha2VmaWxlLmFtCi1AQCAtMiw3ICsyLDcgQEAgaGVscDJtYW4gPSBASEVMUDJNQU5ACi0gCi0gaW5mb19URVhJTkZPUyA9CWZsZXgudGV4aQotIGRpc3RfbWFuX01BTlMgPSBmbGV4LjEKLS1kaXN0X2RvY19EQVRBPSBmbGV4LnBkZgotK0VYVFJBX0RJU1Q9IGZsZXgucGRmCi0gCi0gQ0xFQU5GSUxFUyA9IFwKLSAJZmxleC5hdXggXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4L3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleC9ydW4tcHRlc3QKaW5kZXggMTlkYjMzNy4uMDM3MzAxYyAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZmxleC9mbGV4L3J1bi1wdGVzdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXgvcnVuLXB0ZXN0CkBAIC0yLDQgKzIsNCBAQAogCiAjIG1ha2Ugd291bGQgd2FudCB0byByZWJ1aWxkIHNvbWUgZmlsZXMgd2l0aCBhIGNvbXBpbGVyIG90aGVyd2lzZSA6LS8KIG1ha2UgRkxFWD0vdXNyL2Jpbi9mbGV4IC10IGNoZWNrLVRFU1RTIHx8IHRydWUKLW1ha2UgRkxFWD0vdXNyL2Jpbi9mbGV4IGNoZWNrLVRFU1RTCittYWtlIEZMRVg9L3Vzci9iaW4vZmxleCBhYnNfYnVpbGRkaXI9Li8gY2hlY2stVEVTVFMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleF8yLjYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleF8yLjYuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWJkZDk5Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXhfMi42LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi1TVU1NQVJZID0gIkZsZXggKFRoZSBGYXN0IExleGljYWwgQW5hbHl6ZXIpIgotREVTQ1JJUFRJT04gPSAiRmxleCBpcyBhIGZhc3QgbGV4aWNhbCBhbmFseXNlciBnZW5lcmF0b3IuICBGbGV4IGlzIGEgdG9vbCBmb3IgZ2VuZXJhdGluZyBwcm9ncmFtcyB0aGF0IHJlY29nbml6ZSBcCi1sZXhpY2FsIHBhdHRlcm5zIGluIHRleHQuIgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9mbGV4LyIKLVNFQ1RJT04gPSAiZGV2ZWwiCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLQotREVQRU5EUyA9ICIke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJ2Jpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZScsICcnLCBkKX0iCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU0NzQyY2Y5MmU4OTA0MGIzOTQ4NmE2MjE5YjY4MDY3IgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9mbGV4L2ZsZXgtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vZG9fbm90X2NyZWF0ZV9wZGZfZG9jLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtYWRkLWEtdGFyZ2V0LWZvci1idWlsZGluZy10ZXN0cy13aXRob3V0LXJ1bm5pbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWF2b2lkLWMtY29tbWVudHMtaW4tYy1jb2RlLWZhaWxzLXdpdGgtZ2NjLTYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTYtNjM1NC5wYXRjaCBcCi0gICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnJywgJ2ZpbGU6Ly9kaXNhYmxlLXRlc3RzLnBhdGNoJywgZCl9IFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjY2MjcwZjEzYzQ4ZWQwNDNkOTU2NDgwNzUwODRkNTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjRlNjExZWY1YTQ3MDNhMTkxMDEyZjgwYzEwMjdkYzlkMTI1NTUxODNjZTBlY2Q0NmYzNjM2ZTU4N2U5YjhlOSIKLQotIyBGbGV4IGhhcyBtb3ZlZCB0byBnaXRodWIgZnJvbSAyLjYuMSBvbndhcmRzCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3dlc3Rlcy9mbGV4L3JlbGVhc2VzIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiZmxleC0oP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHB0ZXN0Ci0KLU00ID0gIiR7YmluZGlyfS9tNCIKLU00X2NsYXNzLW5hdGl2ZSA9ICIke1NUQUdJTkdfQklORElSX05BVElWRX0vbTQiCi1FWFRSQV9PRUNPTkYgKz0gImFjX2N2X3BhdGhfTTQ9JHtNNH0iCi1FWFRSQV9PRU1BS0UgKz0gIm00PSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9tNCIKLQotRVhUUkFfT0VNQUtFICs9ICIke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJ0ZMRVg9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2ZsZXgnLCAnJywgZCl9IgotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmxleCBNND0ke000fQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsoKSB7Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZmxleCBNND0ke000fQotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tbGliZmwiCi0KLUZJTEVTXyR7UE59LWxpYmZsID0gIiR7bGliZGlyfS9saWJmbC5zby4qICR7bGliZGlyfS9saWJmbF9waWMuc28uKiIKLQotUkRFUEVORFNfJHtQTn0gKz0gIm00IgotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2ggZ2F3ayBtYWtlIgotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgLUMgJHtCfS90ZXN0cyAtZiAke0J9L3Rlc3RzL01ha2VmaWxlIHRvcF9idWlsZGRpcj0ke0J9IElOQ0xVREVTPS1JJHtTfS9zcmMgYnVpbGR0ZXN0cwotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCW1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L2J1aWxkLWF1eC8KLQljcCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfS9idWlsZC1hdXgvCi0JY3AgLXIgJHtTfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9Ci0JY3AgLXIgJHtCfS90ZXN0cy8qICR7RH0ke1BURVNUX1BBVEh9Ci0Jc2VkIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKLQkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAotCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAotCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKLQkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcLWUgJ3MvXk1ha2VmaWxlOi9fTWFrZWZpbGU6LycgXAotCSAgICAtZSAncy9ec3JjZGlyID0gXCguKlwpL3NyY2RpciA9IC4vJyAtZSAncy9edG9wX3NyY2RpciA9IFwoLipcKS90b3Bfc3JjZGlyID0gLi8nIFwKLQkgICAgLWUgJ3MvXmJ1aWxkZGlyID0gXCguKlwpL2J1aWxkZGlyID0gLi8nIC1lICdzL150b3BfYnVpbGRkaXIgPSBcKC4qXCkvdG9wX2J1aWxkZGlyID0gLi8nIFwKLQkgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKLX0KLQotIyBOb3QgQXBhY2hlIEZsZXgsIG9yIEFkb2JlIEZsZXgsIG9yIElCTSBGbGV4LgotQ1ZFX1BST0RVQ1QgPSAiZmxleF9wcm9qZWN0OmZsZXgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXhfMi42LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9mbGV4L2ZsZXhfMi42LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDNiMjU0NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2ZsZXgvZmxleF8yLjYuNC5iYgpAQCAtMCwwICsxLDc2IEBACitTVU1NQVJZID0gIkZsZXggKFRoZSBGYXN0IExleGljYWwgQW5hbHl6ZXIpIgorREVTQ1JJUFRJT04gPSAiRmxleCBpcyBhIGZhc3QgbGV4aWNhbCBhbmFseXNlciBnZW5lcmF0b3IuICBGbGV4IGlzIGEgdG9vbCBmb3IgZ2VuZXJhdGluZyBwcm9ncmFtcyB0aGF0IHJlY29nbml6ZSBcCitsZXhpY2FsIHBhdHRlcm5zIGluIHRleHQuIgorSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9mbGV4LyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKKworREVQRU5EUyA9ICIke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJ2Jpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZScsICcnLCBkKX0iCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU0NzQyY2Y5MmU4OTA0MGIzOTQ4NmE2MjE5YjY4MDY3IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS93ZXN0ZXMvZmxleC9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vZmxleC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtYWRkLWEtdGFyZ2V0LWZvci1idWlsZGluZy10ZXN0cy13aXRob3V0LXJ1bm5pbi5wYXRjaCBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnJywgJ2ZpbGU6Ly9kaXNhYmxlLXRlc3RzLnBhdGNoJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtQUNfVVNFX1NZU1RFTV9FWFRFTlNJT05TLWluLWNvbmZpZ3VyZS5hYy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjI4ODJlMzE3OTc0OGNjOWY5YzIzZWM1OTNkNmFkYzhkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4N2FhZTAzMmJmMDdjMjZmODVhYzBlZDMyNTA5OThjMzc2MjFkOTVmOGJkNzQ4YjMxZjE1YjMzYzQ1ZWU5OTUiCisKKyMgRmxleCBoYXMgbW92ZWQgdG8gZ2l0aHViIGZyb20gMi42LjEgb253YXJkcworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS93ZXN0ZXMvZmxleC9yZWxlYXNlcyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gImZsZXgtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwdGVzdAorCitNNCA9ICIke2JpbmRpcn0vbTQiCitNNF9jbGFzcy1uYXRpdmUgPSAiJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L200IgorRVhUUkFfT0VDT05GICs9ICJhY19jdl9wYXRoX000PSR7TTR9IGFjX2N2X2Z1bmNfcmVhbGxvY2FycmF5PW5vIgorRVhUUkFfT0VNQUtFICs9ICJtND0ke1NUQUdJTkdfQklORElSX05BVElWRX0vbTQiCisKK0VYVFJBX09FTUFLRSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICdGTEVYPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9mbGV4JywgJycsIGQpfSIKKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZsZXggTTQ9JHtNNH0KK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2ZsZXggTTQ9JHtNNH0KK30KKworUEFDS0FHRVMgPSsgIiR7UE59LWxpYmZsIgorCitGSUxFU18ke1BOfS1saWJmbCA9ICIke2xpYmRpcn0vbGliZmwuc28uKiAke2xpYmRpcn0vbGliZmxfcGljLnNvLioiCisKK1JERVBFTkRTXyR7UE59ICs9ICJtNCIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJiYXNoIGdhd2sgbWFrZSIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIC1DICR7Qn0vdGVzdHMgLWYgJHtCfS90ZXN0cy9NYWtlZmlsZSB0b3BfYnVpbGRkaXI9JHtCfSBJTkNMVURFUz0tSSR7U30vc3JjIGJ1aWxkdGVzdHMKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS9idWlsZC1hdXgvCisJY3AgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0vYnVpbGQtYXV4LworCWNwIC1yICR7U30vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yICR7Qn0vdGVzdHMvKiAke0R9JHtQVEVTVF9QQVRIfQorCXNlZCAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXC1lICdzL15NYWtlZmlsZTovX01ha2VmaWxlOi8nIFwKKwkgICAgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgLWUgJ3MvXnRvcF9zcmNkaXIgPSBcKC4qXCkvdG9wX3NyY2RpciA9IC4vJyBcCisJICAgIC1lICdzL15idWlsZGRpciA9IFwoLipcKS9idWlsZGRpciA9IC4vJyAtZSAncy9edG9wX2J1aWxkZGlyID0gXCguKlwpL3RvcF9idWlsZGRpciA9IC4vJyBcCisJICAgIC1lICdzOiR7VU5JTkFUSVZFX0xPQURFUn06JHtiYXNlX2JpbmRpcn0vZmFsc2U6ZycgXAorCSAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorfQorIyBUaGUgdW5pbmF0aXZlIGxvYWRlciBpcyBkaWZmZXJlbnQgb24gaTM4NiAmIHg4Nl82NCBob3N0cy4gU2luY2UgaXQgaXMgb25seQorIyBiZWluZyByZXBsYWNlZCB3aXRoIC9iaW4vZmFsc2UgYW55d2F5LCBpdCBkb2Vzbid0IG5lZWQgdG8gYmUgcGFydCBvZiB0aGUgdGFzaworIyBoYXNoCitkb19pbnN0YWxsX3B0ZXN0W3ZhcmRlcHNleGNsdWRlXSArPSAiVU5JTkFUSVZFX0xPQURFUiIKKworIyBOb3QgQXBhY2hlIEZsZXgsIG9yIEFkb2JlIEZsZXgsIG9yIElCTSBGbGV4LgorQ1ZFX1BST0RVQ1QgPSAiZmxleF9wcm9qZWN0OmZsZXgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM2Mzk1OTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMTIyICswLDAgQEAKLXJlcXVpcmUgZ2NjLWNvbW1vbi5pbmMKLQotIyBUaGlyZCBkaWdpdCBpbiBQViBzaG91bGQgYmUgaW5jcmVtZW50ZWQgYWZ0ZXIgYSBtaW5vciByZWxlYXNlCi0KLVBWID0gIjkuMi4wIgotCi0jIEJJTlYgc2hvdWxkIGJlIGluY3JlbWVudGVkIHRvIGEgcmV2aXNpb24gYWZ0ZXIgYSBtaW5vciBnY2MgcmVsZWFzZQotCi1CSU5WID0gIjkuMi4wIgotCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS9nY2MtOS4yOiR7RklMRV9ESVJOQU1FfS9nY2MtOS4yL2JhY2twb3J0OiIKLQotREVQRU5EUyA9KyAibXBmciBnbXAgbGlibXBjIHpsaWIgZmxleC1uYXRpdmUiCi1OQVRJVkVERVBTID0gIm1wZnItbmF0aXZlIGdtcC1uYXRpdmUgbGlibXBjLW5hdGl2ZSB6bGliLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKLQotTElDRU5TRSA9ICJHUEwtMy4wLXdpdGgtR0NDLWV4Y2VwdGlvbiAmIEdQTHYzIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gIlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotICAgIGZpbGU6Ly9DT1BZSU5HMzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKLSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKLSAgICBmaWxlOi8vQ09QWUlORy5SVU5USU1FO21kNT1mZTYwZDg3MDQ4NTY3ZDRmZThjOGEwZWQyNDQ4YmNjOCBcCi0iCi0KLUJBU0VVUkkgPz0gIiR7R05VX01JUlJPUn0vZ2NjL2djYy0ke1BWfS9nY2MtJHtQVn0udGFyLnh6IgotI1JFTEVBU0UgPz0gIjVhNWNhMmQiCi0jQkFTRVVSSSA/PSAiaHR0cHM6Ly9yZXBvLm9yLmN6L29mZmljaWFsLWdjYy5naXQvc25hcHNob3QvJHtSRUxFQVNFfS50YXIuZ3o7ZG93bmxvYWRmaWxlbmFtZT1nY2MtJHtSRUxFQVNFfS50YXIuZ3oiCi1TUkNfVVJJID0gIlwKLSAgICAgICAgICAgJHtCQVNFVVJJfSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1vcHRpb25hbC1saWJzdGRjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LVVzZS10aGUtZGVmYXVsdHMuaC1pbi1CLWluc3RlYWQtb2YtUy1hbmQtdC1vZS1pbi1CLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDEwLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTMtRGlzYWJsZS1zZHQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNC1saWJ0b29sLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTUtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTgtZXhwb3J0LUNQUC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDE5LUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjAtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDIxLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyMi1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjMtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjQtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjUtaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI2LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAyNy1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDI4LW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMjktQWRkLXNzcF9ub25zaGFyZWQtdG8tbGluay1jb21tYW5kbGluZS1mb3ItbXVzbC10YXJnZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMwLWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzEtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzItbGliZ2NjX3MtVXNlLWFsaWFzLWZvci1fX2NwdV9pbmRpY2F0b3JfaW5pdC1pbnN0ZWFkLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDMzLXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDM0LWZpeC1zZWdtZW50YXRpb24tZmF1bHQtaW4tcHJlY29tcGlsZWQtaGVhZGVyLWdlbmVyYXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAzNS1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMzYtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE0MjUwLnBhdGNoIFwKLQkgICBmaWxlOi8vQ1ZFLTIwMTktMTU4NDdfMS5wYXRjaCBcCi0JICAgZmlsZTovL0NWRS0yMDE5LTE1ODQ3XzIucGF0Y2ggXAotCSAgIGZpbGU6Ly9DVkUtMjAxOS0xNTg0N18zLnBhdGNoIFwKLSIKLVMgPSAiJHtUTVBESVJ9L3dvcmstc2hhcmVkL2djYy0ke1BWfS0ke1BSfS9nY2MtJHtQVn0iCi1TUkNfVVJJW21kNXN1bV0gPSAiMzgxOGFkODYwMDQ0N2YwNTM0OTA5ODIzMmMyZGRjNzgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWE2ZWYwOGYxMjEyMzlkYTU2OTVmNzZjOWIzMzYzN2ExMThkY2Y2M2UyNDE2NDQyMjIzMTkxN2ZhNjFmYjIwNiIKLQotIyBGb3IgZGV2IHJlbGVhc2Ugc25hcHNob3R0aW5nCi0jUyA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L29mZmljaWFsLWdjYy0ke1JFTEVBU0V9IgotI0IgPSAiJHtXT1JLRElSfS9nY2MtJHtQVn0vYnVpbGQuJHtIT1NUX1NZU30uJHtUQVJHRVRfU1lTfSIKLQotIyBMYW5ndWFnZSBPdmVycmlkZXMKLUZPUlRSQU4gPSAiIgotSkFWQSA9ICIiCi0KLUxUTyA9ICItLWVuYWJsZS1sdG8iCi1TU1AgPz0gIi0tZGlzYWJsZS1saWJzc3AiCi1TU1BfbWluZ3czMiA9ICItLWVuYWJsZS1saWJzc3AiCi0KLUVYVFJBX09FQ09ORl9CQVNFID0gIlwKLSAgICAke0xUT30gXAotICAgICR7U1NQfSBcCi0gICAgLS1lbmFibGUtbGliaXRtIFwKLSAgICAtLWRpc2FibGUtYm9vdHN0cmFwIFwKLSAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCi0gICAgLS13aXRoLXN5c3RlbS16bGliIFwKLSAgICAke0AnLS13aXRoLWxpbmtlci1oYXNoLXN0eWxlPSR7TElOS0VSX0hBU0hfU1RZTEV9JyBpZiAnJHtMSU5LRVJfSEFTSF9TVFlMRX0nIGVsc2UgJyd9IFwKLSAgICAtLWVuYWJsZS1saW5rZXItYnVpbGQtaWQgXAotICAgIC0td2l0aC1wcGw9bm8gXAotICAgIC0td2l0aC1jbG9vZz1ubyBcCi0gICAgLS1lbmFibGUtY2hlY2tpbmc9cmVsZWFzZSBcCi0gICAgLS1lbmFibGUtY2hlYWRlcnM9Y19nbG9iYWwgXAotICAgIC0td2l0aG91dC1pc2wgXAotIgotCi1FWFRSQV9PRUNPTkZfSU5JVElBTCA9ICJcCi0gICAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAotICAgIC0tZGlzYWJsZS1saWJnb21wIFwKLSAgICAtLWRpc2FibGUtbGliaXRtIFwKLSAgICAtLWRpc2FibGUtbGlicXVhZG1hdGggXAotICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCi0gICAgLS1kaXNhYmxlLWx0byBcCi0gICAgLS1kaXNhYmxlLXBsdWdpbiBcCi0gICAgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkIFwKLSAgICAtLWVuYWJsZS1kZWNpbWFsLWZsb2F0PW5vIFwKLSAgICAtLXdpdGhvdXQtaXNsIFwKLSAgICAtLWRpc2FibGUtbGlic3NwIFwKLSIKLQotRVhUUkFfT0VDT05GX1BBVEhTID0gIlwKLSAgICAtLXdpdGgtZ3h4LWluY2x1ZGUtZGlyPS9ub3QvZXhpc3R7dGFyZ2V0X2luY2x1ZGVkaXJ9L2MrKy8ke0JJTlZ9IFwKLSAgICAtLXdpdGgtc3lzcm9vdD0vbm90L2V4aXN0IFwKLSAgICAtLXdpdGgtYnVpbGQtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gXAotIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5MDY1YzMwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gODYzMzI1ZWMzYzZlYjQ5ODdiZTYzNTA5YWM0MDdiMmQxMzYxNzM0MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA4OjM3OjExICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvMzZdIGdjYy00LjMuMTogQVJDSF9GTEFHU19GT1JfVEFSR0VUCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0tLS0KLSBjb25maWd1cmUgICAgfCAyICstCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCBhYmQ5M2E5OTBhOS4uYjEyMTA4OGQ3NzggMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTc2MDMsNyArNzYwMyw3IEBAIGZpCi0gIyBmb3IgdGFyZ2V0X2FsaWFzIGFuZCBnY2MgZG9lc24ndCBtYW5hZ2UgaXQgY29uc2lzdGVudGx5LgotIHRhcmdldF9jb25maWdhcmdzPSItLWNhY2hlLWZpbGU9Li9jb25maWcuY2FjaGUgJHt0YXJnZXRfY29uZmlnYXJnc30iCi0gCi0tRkxBR1NfRk9SX1RBUkdFVD0KLStGTEFHU19GT1JfVEFSR0VUPSIkQVJDSF9GTEFHU19GT1JfVEFSR0VUIgotIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2RpcnMgIiBpbgotICAqIiBuZXdsaWIgIiopCi0gICBjYXNlICIgJHRhcmdldF9jb25maWdhcmdzICIgaW4KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDlkYjRmZDE0YWEyLi5hYWQ5M2M0ZDE4MyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzExOSw3ICszMTE5LDcgQEAgZmkKLSAjIGZvciB0YXJnZXRfYWxpYXMgYW5kIGdjYyBkb2Vzbid0IG1hbmFnZSBpdCBjb25zaXN0ZW50bHkuCi0gdGFyZ2V0X2NvbmZpZ2FyZ3M9Ii0tY2FjaGUtZmlsZT0uL2NvbmZpZy5jYWNoZSAke3RhcmdldF9jb25maWdhcmdzfSIKLSAKLS1GTEFHU19GT1JfVEFSR0VUPQotK0ZMQUdTX0ZPUl9UQVJHRVQ9IiRBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQiCi0gY2FzZSAiICR0YXJnZXRfY29uZmlnZGlycyAiIGluCi0gICoiIG5ld2xpYiAiKikKLSAgIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2FyZ3MgIiBpbgotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwMi1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDItZ2NjLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGExMTE2ZTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwMi1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwMyArMCwwIEBACi1Gcm9tIDY4ZTc4YmMxNWRlMjE1ZmExNWM3ZDhiNTZiZDJlMmIwNTM5YjM0ZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwODo1OTowMCArMDQwMAotU3ViamVjdDogW1BBVENIIDAyLzM2XSBnY2M6IHBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLQotQWRkIC9zdy9pbmNsdWRlIGFuZCAvb3B0L2luY2x1ZGUgYmFzZWQgb24gdGhlIG9yaWdpbmFsCi16ZWNrZS1uby1ob3N0LWluY2x1ZGVzLnBhdGNoIHBhdGNoLiAgVGhlIG9yaWdpbmFsIHBhdGNoIGNoZWNrZWQgZm9yCi0vdXNyL2luY2x1ZGUsIC9zdy9pbmNsdWRlIGFuZCAvb3B0L2luY2x1ZGUgYW5kIHRoZW4gdHJpZ2dlcmVkIGEgZmFpbHVyZSBhbmQKLWFib3J0ZWQuCi0KLUluc3RlYWQsIHdlIGFkZCB0aGUgdHdvIG1pc3NpbmcgaXRlbXMgdG8gdGhlIGN1cnJlbnQgc2Nhbi4gIElmIHRoZSB1c2VyCi13YW50cyB0aGlzIHRvIGJlIGEgZmFpbHVyZSwgdGhleSBjYW4gYWRkICItV2Vycm9yPXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMiLgotCi1TaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9jb21tb24ub3B0ICAgICAgfCAgNCArKysrCi0gZ2NjL2NvbmZpZy5pbiAgICAgICB8ICA2ICsrKysrKwotIGdjYy9jb25maWd1cmUgICAgICAgfCAxNiArKysrKysrKysrKysrKysrCi0gZ2NjL2NvbmZpZ3VyZS5hYyAgICB8IDEwICsrKysrKysrKysKLSBnY2MvZG9jL2ludm9rZS50ZXhpIHwgIDkgKysrKysrKysrCi0gZ2NjL2djYy5jICAgICAgICAgICB8ICAyICsrCi0gZ2NjL2luY3BhdGguYyAgICAgICB8IDIxICsrKysrKysrKysrKysrKysrKysrKwotIDcgZmlsZXMgY2hhbmdlZCwgNjggaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbW1vbi5vcHQgYi9nY2MvY29tbW9uLm9wdAotaW5kZXggZDM0MmM0ZjM3NDkuLmM2NGZkNGE2YzUwIDEwMDY0NAotLS0tIGEvZ2NjL2NvbW1vbi5vcHQKLSsrKyBiL2djYy9jb21tb24ub3B0Ci1AQCAtNjg0LDYgKzY4NCwxMCBAQCBXcmV0dXJuLWxvY2FsLWFkZHIKLSBDb21tb24gVmFyKHdhcm5fcmV0dXJuX2xvY2FsX2FkZHIpIEluaXQoMSkgV2FybmluZwotIFdhcm4gYWJvdXQgcmV0dXJuaW5nIGEgcG9pbnRlci9yZWZlcmVuY2UgdG8gYSBsb2NhbCBvciB0ZW1wb3JhcnkgdmFyaWFibGUuCi0gCi0rV3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLStDb21tb24gVmFyKGZsYWdfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykgSW5pdCgxKSBXYXJuaW5nCi0rV2FybiBmb3IgLUkgYW5kIC1MIG9wdGlvbnMgdXNpbmcgc3lzdGVtIGRpcmVjdG9yaWVzIGlmIGNyb3NzIGNvbXBpbGluZwotKwotIFdzaGFkb3cKLSBDb21tb24gVmFyKHdhcm5fc2hhZG93KSBXYXJuaW5nCi0gV2FybiB3aGVuIG9uZSB2YXJpYWJsZSBzaGFkb3dzIGFub3RoZXIuICBTYW1lIGFzIC1Xc2hhZG93PWdsb2JhbC4KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnLmluIGIvZ2NjL2NvbmZpZy5pbgotaW5kZXggYTcxOGNlYWYzZGEuLjU3MTMzNDJlZmIxIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy5pbgotKysrIGIvZ2NjL2NvbmZpZy5pbgotQEAgLTIwMCw2ICsyMDAsMTIgQEAKLSAjZW5kaWYKLSAKLSAKLSsvKiBEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzICovCi0rI2lmbmRlZiBVU0VEX0ZPUl9UQVJHRVQKLSsjdW5kZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKLSsjZW5kaWYKLSsKLSsKLSAvKiBEZWZpbmUgaWYgeW91IHdhbnQgYWxsIG9wZXJhdGlvbnMgb24gUlRMICh0aGUgYmFzaWMgZGF0YSBzdHJ1Y3R1cmUgb2YgdGhlCi0gICAgb3B0aW1pemVyIGFuZCBiYWNrIGVuZCkgdG8gYmUgY2hlY2tlZCBmb3IgZHluYW1pYyB0eXBlIHNhZmV0eSBhdCBydW50aW1lLgotICAgIFRoaXMgaXMgcXVpdGUgZXhwZW5zaXZlLiAqLwotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCA0ODEwNzFiNDI2NS4uYTZlYTNhOGE4NGMgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtOTk1LDYgKzk5NSw3IEBAIHdpdGhfc3lzdGVtX3psaWIKLSBlbmFibGVfbWFpbnRhaW5lcl9tb2RlCi0gZW5hYmxlX2xpbmtfbXV0ZXgKLSBlbmFibGVfdmVyc2lvbl9zcGVjaWZpY19ydW50aW1lX2xpYnMKLStlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcwotIGVuYWJsZV9wbHVnaW4KLSBlbmFibGVfaG9zdF9zaGFyZWQKLSBlbmFibGVfbGlicXVhZG1hdGhfc3VwcG9ydAotQEAgLTE3NDgsNiArMTc0OSw4IEBAIE9wdGlvbmFsIEZlYXR1cmVzOgotICAgLS1lbmFibGUtdmVyc2lvbi1zcGVjaWZpYy1ydW50aW1lLWxpYnMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIHNwZWNpZnkgdGhhdCBydW50aW1lIGxpYnJhcmllcyBzaG91bGQgYmUgaW5zdGFsbGVkCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBhIGNvbXBpbGVyLXNwZWNpZmljIGRpcmVjdG9yeQotKyAgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotKyAgICAgICAgICAgICAgICAgICAgICAgICAgd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzCi0gICAtLWVuYWJsZS1wbHVnaW4gICAgICAgICBlbmFibGUgcGx1Z2luIHN1cHBvcnQKLSAgIC0tZW5hYmxlLWhvc3Qtc2hhcmVkICAgIGJ1aWxkIGhvc3QgY29kZSBhcyBzaGFyZWQgbGlicmFyaWVzCi0gICAtLWRpc2FibGUtbGlicXVhZG1hdGgtc3VwcG9ydAotQEAgLTI5NzUwLDYgKzI5NzUzLDE5IEBAIGlmIHRlc3QgIiR7ZW5hYmxlX3ZlcnNpb25fc3BlY2lmaWNfcnVudGltZV9saWJzK3NldH0iID0gc2V0OyB0aGVuIDoKLSBmaQotIAotIAotKyMgQ2hlY2sgd2hldGhlciAtLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIHdhcyBnaXZlbi4KLStpZiB0ZXN0ICIke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzK3NldH0iID0gc2V0OyB0aGVuIDoKLSsgIGVuYWJsZXZhbD0kZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM7Ci0rZWxzZQotKyAgZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXM9bm8KLStmaQotKwotK2lmIHRlc3QgIngke2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzfSIgPSAieHllcyI7IHRoZW4KLSsKLSskYXNfZWNobyAiI2RlZmluZSBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUyAxIiA+PmNvbmZkZWZzLmgKLSsKLStmaQotKwotICMgU3Vic3RpdHV0ZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcwotIAotIAotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCBjZTI4MjU1ODBjNi4uZDQyYmJkNGZkMWMgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtNjM3OCw2ICs2Mzc4LDE2IEBAIEFDX0FSR19FTkFCTEUodmVyc2lvbi1zcGVjaWZpYy1ydW50aW1lLWxpYnMsCi0gICAgICAgICAgICAgICAgIFtzcGVjaWZ5IHRoYXQgcnVudGltZSBsaWJyYXJpZXMgc2hvdWxkIGJlCi0gICAgICAgICAgICAgICAgICBpbnN0YWxsZWQgaW4gYSBjb21waWxlci1zcGVjaWZpYyBkaXJlY3RvcnldKV0pCi0gCi0rQUNfQVJHX0VOQUJMRShbcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCi0rICAgICAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgW3dhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3Rvcmllc10pLCwKLSsgICAgICAgICAgICAgW2VuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vXSkKLStpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCi0rICBBQ19ERUZJTkUoW0VOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTXSwKLSsgICAgICAgICAgIFsxXSwKLSsgICAgICAgICAgIFtEZWZpbmUgdG8gd2FybiBmb3IgdXNlIG9mIG5hdGl2ZSBzeXN0ZW0gaGVhZGVyIGRpcmVjdG9yaWVzXSkKLStmaQotKwotICMgU3Vic3RpdHV0ZSBjb25maWd1cmF0aW9uIHZhcmlhYmxlcwotIEFDX1NVQlNUKHN1YmRpcnMpCi0gQUNfU1VCU1Qoc3JjZGlyKQotZGlmZiAtLWdpdCBhL2djYy9kb2MvaW52b2tlLnRleGkgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1pbmRleCA2ZWYzNmNlMDJhYS4uMDk0MTRkOGNjMDUgMTAwNjQ0Ci0tLS0gYS9nY2MvZG9jL2ludm9rZS50ZXhpCi0rKysgYi9nY2MvZG9jL2ludm9rZS50ZXhpCi1AQCAtMzMyLDYgKzMzMiw3IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrIERpYWxlY3RzfS4KLSAtV3BhY2tlZCAgLVdwYWNrZWQtYml0ZmllbGQtY29tcGF0IC1XcGFja2VkLW5vdC1hbGlnbmVkICAtV3BhZGRlZCBAZ29sCi0gLVdwYXJlbnRoZXNlcyAgLVduby1wZWRhbnRpYy1tcy1mb3JtYXQgQGdvbAotIC1XcGxhY2VtZW50LW5ldyAgLVdwbGFjZW1lbnQtbmV3PUB2YXJ7bn0gQGdvbAotKy1Xbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyBAZ29sCi0gLVdwb2ludGVyLWFyaXRoICAtV3BvaW50ZXItY29tcGFyZSAgLVduby1wb2ludGVyLXRvLWludC1jYXN0IEBnb2wKLSAtV25vLXByYWdtYXMgIC1Xbm8tcHJpby1jdG9yLWR0b3IgIC1XcmVkdW5kYW50LWRlY2xzIEBnb2wKLSAtV3Jlc3RyaWN0ICAtV25vLXJldHVybi1sb2NhbC1hZGRyIEBnb2wKLUBAIC02Mjg5LDYgKzYyOTAsMTQgQEAgbWFkZSB1cCBvZiBkYXRhIG9ubHkgYW5kIHRodXMgcmVxdWlyZXMgbm8gc3BlY2lhbCB0cmVhdG1lbnQuICBCdXQsIGZvcgotIG1vc3QgdGFyZ2V0cywgaXQgaXMgbWFkZSB1cCBvZiBjb2RlIGFuZCB0aHVzIHJlcXVpcmVzIHRoZSBzdGFjayB0byBiZQotIG1hZGUgZXhlY3V0YWJsZSBpbiBvcmRlciBmb3IgdGhlIHByb2dyYW0gdG8gd29yayBwcm9wZXJseS4KLSAKLStAaXRlbSAtV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKLStAb3BpbmRleCBXbm8tcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcwotK0RvIG5vdCB3YXJuIGZvciBAb3B0aW9uey1JfSBvciBAb3B0aW9uey1MfSBvcHRpb25zIHVzaW5nIHN5c3RlbQotK2RpcmVjdG9yaWVzIHN1Y2ggYXMgQGZpbGV7L3Vzci9pbmNsdWRlfSB3aGVuIGNyb3NzIGNvbXBpbGluZy4gIFRoaXMKLStvcHRpb24gaXMgaW50ZW5kZWQgZm9yIHVzZSBpbiBjaHJvb3QgZW52aXJvbm1lbnRzIHdoZW4gc3VjaAotK2RpcmVjdG9yaWVzIGNvbnRhaW4gdGhlIGNvcnJlY3QgaGVhZGVycyBhbmQgbGlicmFyaWVzIGZvciB0aGUgdGFyZ2V0Ci0rc3lzdGVtIHJhdGhlciB0aGFuIHRoZSBob3N0LgotKwotIEBpdGVtIC1XZmxvYXQtZXF1YWwKLSBAb3BpbmRleCBXZmxvYXQtZXF1YWwKLSBAb3BpbmRleCBXbm8tZmxvYXQtZXF1YWwKLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IDRmNTc3NjViMDEyLi5hMjYwMWE2YmIwNiAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMTA0Miw2ICsxMDQyLDggQEAgcHJvcGVyIHBvc2l0aW9uIGFtb25nIHRoZSBvdGhlciBvdXRwdXQgZmlsZXMuICAqLwotICAgICIle2Z1c2UtbGQ9KjotZnVzZS1sZD0lKn0gIiBMSU5LX0NPTVBSRVNTX0RFQlVHX1NQRUMgXAotICAgICIlWCAle28qfSAle2UqfSAle059ICV7bn0gJXtyfVwKLSAgICAgJXtzfSAle3R9ICV7dSp9ICV7en0gJXtafSAleyFub3N0ZGxpYjoleyFyOiV7IW5vc3RhcnRmaWxlczolU319fSBcCi0rICAgICV7V25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXM6LS1uby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzfSBcCi0rICAgICV7V2Vycm9yPXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXM6LS1lcnJvci1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzfSBcCi0gICAgICV7c3RhdGljfG5vLXBpZXxzdGF0aWMtcGllOn0gJUB7TCp9ICUobWZ3cmFwKSAlKGxpbmtfbGliZ2NjKSAiIFwKLSAgICAgVlRBQkxFX1ZFUklGSUNBVElPTl9TUEVDICIgIiBTQU5JVElaRVJfRUFSTFlfU1BFQyAiICVvICIiIFwKLSAgICAgJXtmb3BlbmFjY3xmb3Blbm1wfCU6Z3QoJXtmdHJlZS1wYXJhbGxlbGl6ZS1sb29wcz0qOiUqfSAxKTpcCi1kaWZmIC0tZ2l0IGEvZ2NjL2luY3BhdGguYyBiL2djYy9pbmNwYXRoLmMKLWluZGV4IGJjYmUyMDgyOTA1Li41NzUyMjk4YmJmMiAxMDA2NDQKLS0tLSBhL2djYy9pbmNwYXRoLmMKLSsrKyBiL2djYy9pbmNwYXRoLmMKLUBAIC0yNiw2ICsyNiw3IEBACi0gI2luY2x1ZGUgImludGwuaCIKLSAjaW5jbHVkZSAiaW5jcGF0aC5oIgotICNpbmNsdWRlICJjcHBkZWZhdWx0LmgiCi0rI2luY2x1ZGUgImRpYWdub3N0aWMtY29yZS5oIgotIAotIC8qIE1pY3Jvc29mdCBXaW5kb3dzIGRvZXMgbm90IG5hdGl2ZWx5IHN1cHBvcnQgaW5vZGVzLgotICAgIFZNUyBoYXMgbm9uLW51bWVyaWMgaW5vZGVzLiAgKi8KLUBAIC0zOTMsNiArMzk0LDI2IEBAIG1lcmdlX2luY2x1ZGVfY2hhaW5zIChjb25zdCBjaGFyICpzeXNyb290LCBjcHBfcmVhZGVyICpwZmlsZSwgaW50IHZlcmJvc2UpCi0gCX0KLSAgICAgICBmcHJpbnRmIChzdGRlcnIsIF8oIkVuZCBvZiBzZWFyY2ggbGlzdC5cbiIpKTsKLSAgICAgfQotKwotKyNpZmRlZiBFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFUwotKyAgaWYgKGZsYWdfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcykKLSsgICAgewotKyAgICAgICBzdHJ1Y3QgY3BwX2RpciAqcDsKLSsKLSsgICAgICAgZm9yIChwID0gaGVhZHNbSU5DX1FVT1RFXTsgcDsgcCA9IHAtPm5leHQpCi0rICAgICAgICAgewotKyAgICAgICAgICBpZiAoKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9pbmNsdWRlIiwgMTIpKQotKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9sb2NhbC9pbmNsdWRlIiwgMTgpKQotKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3Vzci9YMTFSNi9pbmNsdWRlIiwgMTgpKQotKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL3N3L2luY2x1ZGUiLCAxMSkpCi0rICAgICAgICAgICAgICB8fCAoIXN0cm5jbXAgKHAtPm5hbWUsICIvb3B0L2luY2x1ZGUiLCAxMikpKQotKyAgICAgICAgICAgIHdhcm5pbmcgKE9QVF9XcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcywKLSsgICAgICAgICAgICAgICAgICAgICAiaW5jbHVkZSBsb2NhdGlvbiBcIiVzXCIgaXMgdW5zYWZlIGZvciAiCi0rICAgICAgICAgICAgICAgICAgICAgImNyb3NzLWNvbXBpbGF0aW9uIiwKLSsgICAgICAgICAgICAgICAgICAgICBwLT5uYW1lKTsKLSsgICAgICAgICB9Ci0rICAgIH0KLSsjZW5kaWYKLSB9Ci0gCi0gLyogVXNlIGdpdmVuIC1JIHBhdGhzIGZvciAjaW5jbHVkZSAiLi4uIiBidXQgbm90ICNpbmNsdWRlIDwuLi4+LCBhbmQKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDMtZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDAzLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMzAzOWQyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDMtZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MyArMCwwIEBACi1Gcm9tIGY4ZDYwYzQxMTRhY2I5MjM2MWM3YjJmNGE0NTYxZDQ2NjFlOGRhOWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTowODozMSArMDQwMAotU3ViamVjdDogW1BBVENIIDAzLzM2XSBnY2MtNC4zLjM6IFNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQKLQotQmVmb3JlIGNvbW1pdHRpbmcsIEkgbm90aWNlZCB0aGF0IFBSLzMyMTYxIHdhcyBtYXJrZWQgYXMgYSBkdXAgb2YgUFIvMzIwMDksIGJ1dCBteSBwcmV2aW91cyBwYXRjaCBkaWQgbm90IGZpeCBpdC4KLQotVGhpcyBhbHRlcm5hdGl2ZSBwYXRjaCBpcyBiZXR0ZXIgYmVjYXVzZSBpdCBsZXRzIHlvdSBqdXN0IHVzZSBDRkxBR1NfRk9SX1RBUkdFVCB0byBzZXQgdGhlIGNvbXBpbGF0aW9uIGZsYWdzIGZvciBsaWJnY2MuIFNpbmNlIGJvb3RzdHJhcHBlZCB0YXJnZXQgbGlicmFyaWVzIGFyZSBuZXZlciBjb21waWxlZCB3aXRoIHRoZSBuYXRpdmUgY29tcGlsZXIsIGl0IG1ha2VzIGxpdHRsZSBzZW5zZSB0byB1c2UgZGlmZmVyZW50IGZsYWdzIGZvciBzdGFnZTEgYW5kIGxhdGVyIHN0YWdlcy4gQW5kIGl0IGFsc28gbWFrZXMgbGl0dGxlIHNlbnNlIHRvIHVzZSBhIGRpZmZlcmVudCB2YXJpYWJsZSB0aGFuIENGTEFHU19GT1JfVEFSR0VULgotCi1PdGhlciBjaGFuZ2VzIEkgaGFkIHRvIGRvIGluY2x1ZGU6Ci0KLS0gbW92aW5nIHRoZSBjcmVhdGlvbiBvZiBkZWZhdWx0IENGTEFHU19GT1JfVEFSR0VUIGZyb20gTWFrZWZpbGUuYW0gdG8gY29uZmlndXJlLmFjLCBiZWNhdXNlIG90aGVyd2lzZSB0aGUgQk9PVF9DRkxBR1MgYXJlIHN1YnN0aXR1dGVkIGludG8gQ0ZMQUdTX0ZPUl9UQVJHRVQgKHdoaWNoIGlzICItTzIgLWcgJChDRkxBR1MpIikgdmlhICQoQ0ZMQUdTKS4gSXQgaXMgYWxzbyBjbGVhbmVyIHRoaXMgd2F5IHRob3VnaC4KLQotLSBwYXNzaW5nIHRoZSByaWdodCBDRkxBR1MgdG8gY29uZmlndXJlIHNjcmlwdHMgYXMgZXhwb3J0ZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzCi0KLUkgYWxzbyBzdG9wcGVkIHBhc3NpbmcgTElCQ0ZMQUdTIHRvIGNvbmZpZ3VyZSBzY3JpcHRzIHNpbmNlIHRoZXkgYXJlIHVudXNlZCBpbiB0aGUgd2hvbGUgc3JjIHRyZWUuIEFuZCBJIHVwZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24gYXMgSC1QIHJlbWluZGVkIG1lIHRvIGRvLgotCi1Cb290c3RyYXBwZWQvcmVndGVzdGVkIGk2ODYtcGMtbGludXgtZ251LCB3aWxsIGNvbW1pdCB0byA0LjQgc2hvcnRseS4gT2sgZm9yIDQuMz8KLQotU2lnbmVkLW9mZi1ieTogUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gY29uZmlndXJlIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCi1pbmRleCBiMTIxMDg4ZDc3OC4uOTNhYWU1YmIyNmYgMTAwNzU1Ci0tLS0gYS9jb25maWd1cmUKLSsrKyBiL2NvbmZpZ3VyZQotQEAgLTY4NjQsNiArNjg2NCwzOCBAQCBmaQotIAotIAotIAotKyMgRHVyaW5nIGdjYyBib290c3RyYXAsIGlmIHdlIHVzZSBzb21lIHJhbmRvbSBjYyBmb3Igc3RhZ2UxIHRoZW4gQ0ZMQUdTCi0rIyBtaWdodCBiZSBlbXB0eSBvciAiLWciLiAgV2UgZG9uJ3QgcmVxdWlyZSBhIEMrKyBjb21waWxlciwgc28gQ1hYRkxBR1MKLSsjIG1pZ2h0IGFsc28gYmUgZW1wdHkgKG9yICItZyIsIGlmIGEgbm9uLUdDQyBDKysgY29tcGlsZXIgaXMgaW4gdGhlIHBhdGgpLgotKyMgV2Ugd2FudCB0byBlbnN1cmUgdGhhdCBUQVJHRVQgbGlicmFyaWVzICh3aGljaCB3ZSBrbm93IGFyZSBidWlsdCB3aXRoCi0rIyBnY2MpIGFyZSBidWlsdCB3aXRoICItTzIgLWciLCBzbyBpbmNsdWRlIHRob3NlIG9wdGlvbnMgd2hlbiBzZXR0aW5nCi0rIyBDRkxBR1NfRk9SX1RBUkdFVCBhbmQgQ1hYRkxBR1NfRk9SX1RBUkdFVC4KLStpZiB0ZXN0ICJ4JENGTEFHU19GT1JfVEFSR0VUIiA9IHg7IHRoZW4KLSsgIENGTEFHU19GT1JfVEFSR0VUPSRDRkxBR1MKLSsgIGNhc2UgIiAkQ0ZMQUdTICIgaW4KLSsgICAgKiIgLU8yICIqKSA7OwotKyAgICAqKSBDRkxBR1NfRk9SX1RBUkdFVD0iLU8yICRDRkxBR1MiIDs7Ci0rICBlc2FjCi0rICBjYXNlICIgJENGTEFHUyAiIGluCi0rICAgICoiIC1nICIqIHwgKiIgLWczICIqKSA7OwotKyAgICAqKSBDRkxBR1NfRk9SX1RBUkdFVD0iLWcgJENGTEFHUyIgOzsKLSsgIGVzYWMKLStmaQotKwotKwotK2lmIHRlc3QgIngkQ1hYRkxBR1NfRk9SX1RBUkdFVCIgPSB4OyB0aGVuCi0rICBDWFhGTEFHU19GT1JfVEFSR0VUPSRDWFhGTEFHUwotKyAgY2FzZSAiICRDWFhGTEFHUyAiIGluCi0rICAgICoiIC1PMiAiKikgOzsKLSsgICAgKikgQ1hYRkxBR1NfRk9SX1RBUkdFVD0iLU8yICRDWFhGTEFHUyIgOzsKLSsgIGVzYWMKLSsgIGNhc2UgIiAkQ1hYRkxBR1MgIiBpbgotKyAgICAqIiAtZyAiKiB8ICoiIC1nMyAiKikgOzsKLSsgICAgKikgQ1hYRkxBR1NfRk9SX1RBUkdFVD0iLWcgJENYWEZMQUdTIiA7OwotKyAgZXNhYwotK2ZpCi0rCi0rCi0gIyBIYW5kbGUgLS13aXRoLWhlYWRlcnM9WFhYLiAgSWYgdGhlIHZhbHVlIGlzIG5vdCAieWVzIiwgdGhlIGNvbnRlbnRzIG9mCi0gIyB0aGUgbmFtZWQgZGlyZWN0b3J5IGFyZSBjb3BpZWQgdG8gJCh0b29sZGlyKS9zeXMtaW5jbHVkZS4KLSBpZiB0ZXN0IHgiJHt3aXRoX2hlYWRlcnN9IiAhPSB4ICYmIHRlc3QgeCIke3dpdGhfaGVhZGVyc30iICE9IHhubyA7IHRoZW4KLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDQtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA0LTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzljNDBjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDQtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTkgKzAsMCBAQAotRnJvbSBjMjA4MWM1MWRiNTg5NDcxZWE3MTM4NzBjNzJmMTM5OTlhYmRhODE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTA6MDYgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAwNC8zNl0gNjQtYml0IG11bHRpbGliIGhhY2suCi0KLUdDQyBoYXMgaW50ZXJuYWwgbXVsdGlsaWIgaGFuZGxpbmcgY29kZSBidXQgaXQgYXNzdW1lcyBhIHZlcnkgc3BlY2lmaWMgcmlnaWQgZGlyZWN0b3J5Ci1sYXlvdXQuIFRoZSBidWlsZCBzeXN0ZW0gaW1wbGVtZW50YXRpb24gb2YgbXVsdGlsaWIgbGF5b3V0IGlzIHZlcnkgZ2VuZXJpYyBhbmQgYWxsb3dzCi1jb21wbGV0ZSBjdXN0b21pc2F0aW9uIG9mIHRoZSBsaWJyYXJ5IGRpcmVjdG9yaWVzLgotCi1UaGlzIHBhdGNoIGlzIGEgcGFydGlhbCBzb2x1dGlvbiB0byBhbGxvdyBhbnkgY3VzdG9tIGRpcmVjdG9yaWVzIHRvIGJlIHBhc3NlZCBpbnRvIGdjYwotYW5kIGhhbmRsZWQgY29ycmVjdGx5LiBJdCBmb3JjZXMgZ2NjIHRvIHVzZSB0aGUgYmFzZV9saWJkaXIgKHdoaWNoIGlzIHRoZSBjdXJyZW50Ci1kaXJlY3RvcnksICIuIikuIFdlIG5lZWQgdG8gZG8gdGhpcyBmb3IgZWFjaCBtdWx0aWxpYiB0aGF0IGlzIGNvbmZpZ3VyZWQgYXMgd2UgZG9uJ3QKLWtub3cgd2hpY2ggY29tcGlsZXIgb3B0aW9ucyBtYXkgYmUgYmVpbmcgcGFzc2VkIGludG8gdGhlIGNvbXBpbGVyLiBTaW5jZSB3ZSBoYXZlIGEgY29tcGlsZXIKLXBlciBtdWxpdGxpYiBhdCB0aGlzIHBvaW50IHRoYXQgaXNuJ3QgYW4gaXNzdWUuCi0KLVRoZSBvbmUgcHJvYmxlbSBpcyB0aGUgdGFyZ2V0IGNvbXBpbGVyIGlzIG9ubHkgZ29pbmcgdG8gd29yayBmb3IgdGhlIGRlZmF1bHQgbXVsdGxpbGliIGF0Ci10aGlzIHBvaW50LiBJZGVhbGx5IHdlJ2QgZmlndXJlIG91dCB3aGljaCBtdWx0aWxpYnMgd2VyZSBiZWluZyBlbmFibGVkIHdpdGggd2hpY2ggcGF0aHMKLWFuZCBiZSBhYmxlIHRvIHBhdGNoIHRoZXNlIGVudHJpZXMgd2l0aCBhIGNvbXBsZXRlIHNldCBvZiBjb3JyZWN0IHBhdGhzIGJ1dCB0aGlzIHdlCi1kb24ndCBoYXZlIHN1Y2ggY29kZSBhdCB0aGlzIHBvaW50LiBUaGlzIGlzIHNvbWV0aGluZyB0aGUgdGFyZ2V0IGdjYyByZWNpcGUgc2hvdWxkIGRvCi1hbmQgb3ZlcnJpZGUgdGhlc2UgcGxhdGZvcm0gZGVmYXVsdHMgaW4gaXRzIGJ1aWxkIGNvbmZpZy4KLQotRG8gc2FtZSBmb3IgcmlzY3Y2NCBhbmQgYWFyY2g2NAotCi1SUCAxNS84LzExCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtPRS1TcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEVsdmlzIERvd3NvbiA8ZWx2aXMuZG93c29uQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGdjYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXggfCAgOCArKysrLS0tLQotIGdjYy9jb25maWcvaTM4Ni90LWxpbnV4NjQgICAgICAgICAgfCAgNiArKy0tLS0KLSBnY2MvY29uZmlnL21pcHMvdC1saW51eDY0ICAgICAgICAgIHwgMTAgKysrLS0tLS0tLQotIGdjYy9jb25maWcvcmlzY3YvdC1saW51eCAgICAgICAgICAgfCAgNiArKysrLS0KLSBnY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQgICAgICAgIHwgIDUgKystLS0KLSA1IGZpbGVzIGNoYW5nZWQsIDE1IGluc2VydGlvbnMoKyksIDIwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eCBiL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKLWluZGV4IDVhZDY3MGJhMmNlLi5lMjYwMTllNzE1NyAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKLSsrKyBiL2djYy9jb25maWcvYWFyY2g2NC90LWFhcmNoNjQtbGludXgKLUBAIC0yMSw4ICsyMSw4IEBACi0gTElCMUFTTVNSQyAgID0gYWFyY2g2NC9saWIxZnVuY3MuYXNtCi0gTElCMUFTTUZVTkNTID0gX2FhcmNoNjRfc3luY19jYWNoZV9yYW5nZQotIAotLUFBUkNIX0JFID0gJChpZiAkKGZpbmRzdHJpbmcgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVD0xLCAkKHRtX2RlZmluZXMpKSxfYmUpCi0tTVVMVElMSUJfT1NESVJOQU1FUyA9IG1hYmkubHA2ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0tTVVMVElBUkNIX0RJUk5BTUUgPSAkKGNhbGwgaWZfbXVsdGlhcmNoLGFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCi0rI0FBUkNIX0JFID0gJChpZiAkKGZpbmRzdHJpbmcgVEFSR0VUX0JJR19FTkRJQU5fREVGQVVMVD0xLCAkKHRtX2RlZmluZXMpKSxfYmUpCi0rI01VTFRJTElCX09TRElSTkFNRVMgPSBtYWJpLmxwNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQotKyNNVUxUSUFSQ0hfRElSTkFNRSA9ICQoY2FsbCBpZl9tdWx0aWFyY2gsYWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKLSAKLS1NVUxUSUxJQl9PU0RJUk5BTUVTICs9IG1hYmkuaWxwMzI9Li4vbGliaWxwMzIkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251X2lscDMyKQotKyNNVUxUSUxJQl9PU0RJUk5BTUVTICs9IG1hYmkuaWxwMzI9Li4vbGliaWxwMzIkKGNhbGwgaWZfbXVsdGlhcmNoLDphYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251X2lscDMyKQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQgYi9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0Ci1pbmRleCBjNjg2YWIyZjBkMi4uYzgyYjYwZGFkY2QgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0Ci0rKysgYi9nY2MvY29uZmlnL2kzODYvdC1saW51eDY0Ci1AQCAtMzIsNyArMzIsNSBAQAotICMKLSBjb21tYT0sCi0gTVVMVElMSUJfT1BUSU9OUyAgICA9ICQoc3Vic3QgJChjb21tYSksLywkKFRNX01VTFRJTElCX0NPTkZJRykpCi0tTVVMVElMSUJfRElSTkFNRVMgICA9ICQocGF0c3Vic3QgbSUsICUsICQoc3Vic3QgLywgLCQoTVVMVElMSUJfT1BUSU9OUykpKQotLU1VTFRJTElCX09TRElSTkFNRVMgPSBtNjQ9Li4vbGliNjQkKGNhbGwgaWZfbXVsdGlhcmNoLDp4ODZfNjQtbGludXgtZ251KQotLU1VTFRJTElCX09TRElSTkFNRVMrPSBtMzI9JChpZiAkKHdpbGRjYXJkICQoc2hlbGwgZWNobyAkKFNZU1RFTV9IRUFERVJfRElSKSkvLi4vLi4vdXNyL2xpYjMyKSwuLi9saWIzMiwuLi9saWIpJChjYWxsIGlmX211bHRpYXJjaCw6aTM4Ni1saW51eC1nbnUpCi0tTVVMVElMSUJfT1NESVJOQU1FUys9IG14MzI9Li4vbGlieDMyJChjYWxsIGlmX211bHRpYXJjaCw6eDg2XzY0LWxpbnV4LWdudXgzMikKLStNVUxUSUxJQl9ESVJOQU1FUyA9IC4gLgotK01VTFRJTElCX09TRElSTkFNRVMgPSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQgYi9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0Ci1pbmRleCAzYTJmZjcwMGQ3ZC4uMTNlZjE5NTc2YjUgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0Ci0rKysgYi9nY2MvY29uZmlnL21pcHMvdC1saW51eDY0Ci1AQCAtMTcsMTAgKzE3LDYgQEAKLSAjIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSAKLSBNVUxUSUxJQl9PUFRJT05TID0gbWFiaT1uMzIvbWFiaT0zMi9tYWJpPTY0Ci0tTVVMVElMSUJfRElSTkFNRVMgPSBuMzIgMzIgNjQKLS1NSVBTX0VMID0gJChpZiAkKGZpbHRlciAlZWwsICQoZmlyc3R3b3JkICQoc3Vic3QgLSwgLCQodGFyZ2V0KSkpKSxlbCkKLS1NSVBTX1NPRlQgPSAkKGlmICQoc3RyaXAgJChmaWx0ZXIgTUFTS19TT0ZUX0ZMT0FUX0FCSSwgJCh0YXJnZXRfY3B1X2RlZmF1bHQpKSAkKGZpbHRlciBzb2Z0LCAkKHdpdGhfZmxvYXQpKSksc29mdCkKLS1NVUxUSUxJQl9PU0RJUk5BTUVTID0gXAotLQkuLi9saWIzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHM2NCQoTUlQU19FTCktbGludXgtZ251YWJpbjMyJChNSVBTX1NPRlQpKSBcCi0tCS4uL2xpYiQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHMkKE1JUFNfRUwpLWxpbnV4LWdudSQoTUlQU19TT0ZUKSkgXAotLQkuLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOm1pcHM2NCQoTUlQU19FTCktbGludXgtZ251YWJpNjQkKE1JUFNfU09GVCkpCi0rTVVMVElMSUJfRElSTkFNRVMgPSAuIC4gLgotK01VTFRJTElCX09TRElSTkFNRVMgPSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQotKwotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcmlzY3YvdC1saW51eCBiL2djYy9jb25maWcvcmlzY3YvdC1saW51eAotaW5kZXggMjE2ZDI3NzZhMTguLmU0ZDgxNzYyMWZjIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yaXNjdi90LWxpbnV4Ci0rKysgYi9nY2MvY29uZmlnL3Jpc2N2L3QtbGludXgKLUBAIC0xLDMgKzEsNSBAQAotICMgT25seSBYTEVOIGFuZCBBQkkgYWZmZWN0IExpbnV4IG11bHRpbGliIGRpciBuYW1lcywgZS5nLiAvbGliMzIvaWxwMzJkLwotLU1VTFRJTElCX0RJUk5BTUVTIDo9ICQocGF0c3Vic3QgcnYzMiUsbGliMzIsJChwYXRzdWJzdCBydjY0JSxsaWI2NCwkKE1VTFRJTElCX0RJUk5BTUVTKSkpCi0tTVVMVElMSUJfT1NESVJOQU1FUyA6PSAkKHBhdHN1YnN0IGxpYiUsLi4vbGliJSwkKE1VTFRJTElCX0RJUk5BTUVTKSkKLSsjTVVMVElMSUJfRElSTkFNRVMgOj0gJChwYXRzdWJzdCBydjMyJSxsaWIzMiwkKHBhdHN1YnN0IHJ2NjQlLGxpYjY0LCQoTVVMVElMSUJfRElSTkFNRVMpKSkKLStNVUxUSUxJQl9ESVJOQU1FUyA6PSAuIC4KLSsjTVVMVElMSUJfT1NESVJOQU1FUyA6PSAkKHBhdHN1YnN0IGxpYiUsLi4vbGliJSwkKE1VTFRJTElCX0RJUk5BTUVTKSkKLStNVUxUSUxJQl9PU0RJUk5BTUVTIDo9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0IGIvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0Ci1pbmRleCBmM2M2ZTJiZTFkOS4uYmQwMzkzMTU1ZmEgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAotQEAgLTI2LDEwICsyNiw5IEBACi0gIyBNVUxUSUxJQl9PU0RJUk5BTUVTIGFjY29yZGluZyB0byB3aGF0IGlzIGZvdW5kIG9uIHRoZSB0YXJnZXQuCi0gCi0gTVVMVElMSUJfT1BUSU9OUyAgICA6PSBtNjQvbTMyCi0tTVVMVElMSUJfRElSTkFNRVMgICA6PSA2NCAzMgotK01VTFRJTElCX0RJUk5BTUVTICAgOj0gLiAuCi0gTVVMVElMSUJfRVhUUkFfT1BUUyA6PSAKLS1NVUxUSUxJQl9PU0RJUk5BTUVTIDo9IG02ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOnBvd2VycGM2NC1saW51eC1nbnUpCi0tTVVMVElMSUJfT1NESVJOQU1FUyArPSBtMzI9JChpZiAkKHdpbGRjYXJkICQoc2hlbGwgZWNobyAkKFNZU1RFTV9IRUFERVJfRElSKSkvLi4vLi4vdXNyL2xpYjMyKSwuLi9saWIzMiwuLi9saWIpJChjYWxsIGlmX211bHRpYXJjaCw6cG93ZXJwYy1saW51eC1nbnUpCi0rTVVMVElMSUJfT1NESVJOQU1FUyA6PSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKSAuLi8kKHNoZWxsIGJhc2VuYW1lICQoYmFzZV9saWJkaXIpKQotIAotIHJzNjAwMC1saW51eC5vOiAkKHNyY2RpcikvY29uZmlnL3JzNjAwMC9yczYwMDAtbGludXguYwotIAkkKENPTVBJTEUpICQ8Ci0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA1LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA1LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0ZmFjOTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwNS1vcHRpb25hbC1saWJzdGRjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTI1ICswLDAgQEAKLUZyb20gZTdlNTA0ZjRhOTBjZmEzOTVlN2Y4ZWU3NzlmOGMzZWQ2ODc4MDJjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjEyOjU2ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDUvMzZdIG9wdGlvbmFsIGxpYnN0ZGMKLQotZ2NjLXJ1bnRpbWUgYnVpbGRzIGxpYnN0ZGMrKyBzZXBhcmF0ZWx5IGZyb20gZ2NjLWNyb3NzLSouIEl0cyBjb25maWd1cmUgdGVzdHMgdXNpbmcgZysrCi13aWxsIG5vdCBydW4gY29ycmVjdGx5IHNpbmNlIGJ5IGRlZmF1bHQgdGhlIGxpbmtlciB3aWxsIHRyeSB0byBsaW5rIGFnYWluc3QgbGlic3RkYysrCi13aGljaCBzaG91bGRuJ3QgZXhpc3QgeWV0LiBXZSBuZWVkIGFuIG9wdGlvbiB0byBkaXNhYmxlIC1sc3RkYysrCi1vcHRpb24gd2hpbHN0IGxlYXZpbmcgLWxjLCAtbGdjYyBhbmQgb3RoZXIgYXV0b21hdGljIGxpYnJhcnkgZGVwZW5kZW5jaWVzIGFkZGVkIGJ5IGdjYwotZHJpdmVyLiBUaGlzIHBhdGNoIGFkZHMgc3VjaCBhbiBvcHRpb24gd2hpY2ggb25seSBkaXNhYmxlcyB0aGUgLWxzdGRjKysuCi0KLUEgInN0YW5kYXJkIiBnY2MgYnVpbGQgdXNlcyB4Z2NjIGFuZCBoZW5jZSBhdm9pZHMgdGhpcy4gV2Ugc2hvdWxkIGFzayB1cHN0cmVhbSBob3cgdG8KLWRvIHRoaXMgb2ZmaWNpYWxseSwgdGhlIGxpa2VseSBhbnN3ZXIgaXMgZG9uJ3QgYnVpbGQgbGlic3RkYysrIHNlcGFyYXRlbHkuCi0KLVJQIDI5LzYvMTAKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLS0tLQotIGdjYy9jLWZhbWlseS9jLm9wdCAgfCAgNCArKysrCi0gZ2NjL2NwL2crK3NwZWMuYyAgICB8ICAxICsKLSBnY2MvZG9jL2ludm9rZS50ZXhpIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0KLSBnY2MvZ2NjLmMgICAgICAgICAgIHwgIDEgKwotIDQgZmlsZXMgY2hhbmdlZCwgMzcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2MtZmFtaWx5L2Mub3B0IGIvZ2NjL2MtZmFtaWx5L2Mub3B0Ci1pbmRleCA5MTZjYzY3YjQ1My4uNDE2MTlmYTU5MWMgMTAwNjQ0Ci0tLS0gYS9nY2MvYy1mYW1pbHkvYy5vcHQKLSsrKyBiL2djYy9jLWZhbWlseS9jLm9wdAotQEAgLTE5NTIsNiArMTk1MiwxMCBAQCBub3N0ZGluYysrCi0gQysrIE9iakMrKwotIERvIG5vdCBzZWFyY2ggc3RhbmRhcmQgc3lzdGVtIGluY2x1ZGUgZGlyZWN0b3JpZXMgZm9yIEMrKy4KLSAKLStub3N0ZGxpYisrCi0rRHJpdmVyCi0rRG8gbm90IGxpbmsgc3RhbmRhcmQgQysrIHJ1bnRpbWUgbGlicmFyeQotKwotIG8KLSBDIE9iakMgQysrIE9iakMrKyBKb2luZWQgU2VwYXJhdGUKLSA7IERvY3VtZW50ZWQgaW4gY29tbW9uLm9wdAotZGlmZiAtLWdpdCBhL2djYy9jcC9nKytzcGVjLmMgYi9nY2MvY3AvZysrc3BlYy5jCi1pbmRleCA2YzQ1NzRhODM3ZC4uMGUyNjU3ZjAwZWUgMTAwNjQ0Ci0tLS0gYS9nY2MvY3AvZysrc3BlYy5jCi0rKysgYi9nY2MvY3AvZysrc3BlYy5jCi1AQCAtMTM3LDYgKzEzNyw3IEBAIGxhbmdfc3BlY2lmaWNfZHJpdmVyIChzdHJ1Y3QgY2xfZGVjb2RlZF9vcHRpb24gKippbl9kZWNvZGVkX29wdGlvbnMsCi0gICAgICAgc3dpdGNoIChkZWNvZGVkX29wdGlvbnNbaV0ub3B0X2luZGV4KQotIAl7Ci0gCWNhc2UgT1BUX25vc3RkbGliOgotKwljYXNlIE9QVF9ub3N0ZGxpYl9fOgotIAljYXNlIE9QVF9ub2RlZmF1bHRsaWJzOgotIAkgIGxpYnJhcnkgPSAtMTsKLSAJICBicmVhazsKLWRpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotaW5kZXggMDk0MTRkOGNjMDUuLmE0Mzk2OWJjOWYwIDEwMDY0NAotLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQotKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQotQEAgLTIyOCw2ICsyMjgsOSBAQCBpbiB0aGUgZm9sbG93aW5nIHNlY3Rpb25zLgotIC1mbm8td2VhayAgLW5vc3RkaW5jKysgQGdvbAotIC1mdmlzaWJpbGl0eS1pbmxpbmVzLWhpZGRlbiBAZ29sCi0gLWZ2aXNpYmlsaXR5LW1zLWNvbXBhdCBAZ29sCi0rLWZ2dGFibGUtdmVyaWZ5PUBye1t9c3RkQHJ7fH1wcmVpbml0QHJ7fH1ub25lQHJ7XX0gQGdvbAotKy1mdnR2LWNvdW50cyAtZnZ0di1kZWJ1ZyBAZ29sCi0rLW5vc3RkbGliKysgQGdvbAotIC1mZXh0LW51bWVyaWMtbGl0ZXJhbHMgQGdvbAotIC1XYWJpPUB2YXJ7bn0gIC1XYWJpLXRhZyAgLVdjb252ZXJzaW9uLW51bGwgIC1XY3Rvci1kdG9yLXByaXZhY3kgQGdvbAotIC1XZGVsZXRlLW5vbi12aXJ0dWFsLWR0b3IgIC1XZGVwcmVjYXRlZC1jb3B5ICAtV2RlcHJlY2F0ZWQtY29weS1kdG9yIEBnb2wKLUBAIC01MzgsNyArNTQxLDcgQEAgT2JqZWN0aXZlLUMgYW5kIE9iamVjdGl2ZS1DKysgRGlhbGVjdHN9LgotIC1waWUgIC1wdGhyZWFkICAtciAgLXJkeW5hbWljIEBnb2wKLSAtcyAgLXN0YXRpYyAgLXN0YXRpYy1waWUgIC1zdGF0aWMtbGliZ2NjICAtc3RhdGljLWxpYnN0ZGMrKyBAZ29sCi0gLXN0YXRpYy1saWJhc2FuICAtc3RhdGljLWxpYnRzYW4gIC1zdGF0aWMtbGlibHNhbiAgLXN0YXRpYy1saWJ1YnNhbiBAZ29sCi0tLXNoYXJlZCAgLXNoYXJlZC1saWJnY2MgIC1zeW1ib2xpYyBAZ29sCi0rLXNoYXJlZCAgLXNoYXJlZC1saWJnY2MgIC1zeW1ib2xpYyAtbm9zdGRsaWIrKyBAZ29sCi0gLVQgQHZhcntzY3JpcHR9ICAtV2wsQHZhcntvcHRpb259ICAtWGxpbmtlciBAdmFye29wdGlvbn0gQGdvbAotIC11IEB2YXJ7c3ltYm9sfSAgLXogQHZhcntrZXl3b3JkfX0KLSAKLUBAIC0xMzMxMiw2ICsxMzMxNSwzMyBAQCBTcGVjaWZ5IHRoYXQgdGhlIHByb2dyYW0gZW50cnkgcG9pbnQgaXMgQHZhcntlbnRyeX0uICBUaGUgYXJndW1lbnQgaXMKLSBpbnRlcnByZXRlZCBieSB0aGUgbGlua2VyOyB0aGUgR05VIGxpbmtlciBhY2NlcHRzIGVpdGhlciBhIHN5bWJvbCBuYW1lCi0gb3IgYW4gYWRkcmVzcy4KLSAKLStAaXRlbSAtbm9zdGRsaWIrKwotK0BvcGluZGV4IG5vc3RkbGliKysKLStEbyBub3QgdXNlIHRoZSBzdGFuZGFyZCBzeXN0ZW0gQysrIHJ1bnRpbWUgbGlicmFyaWVzIHdoZW4gbGlua2luZy4KLStPbmx5IHRoZSBsaWJyYXJpZXMgeW91IHNwZWNpZnkgd2lsbCBiZSBwYXNzZWQgdG8gdGhlIGxpbmtlci4KLSsKLStAY2luZGV4IEBvcHRpb257LWxnY2N9LCB1c2Ugd2l0aCBAb3B0aW9uey1ub3N0ZGxpYn0KLStAY2luZGV4IEBvcHRpb257LW5vc3RkbGlifSBhbmQgdW5yZXNvbHZlZCByZWZlcmVuY2VzCi0rQGNpbmRleCB1bnJlc29sdmVkIHJlZmVyZW5jZXMgYW5kIEBvcHRpb257LW5vc3RkbGlifQotK0BjaW5kZXggQG9wdGlvbnstbGdjY30sIHVzZSB3aXRoIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9Ci0rQGNpbmRleCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfSBhbmQgdW5yZXNvbHZlZCByZWZlcmVuY2VzCi0rQGNpbmRleCB1bnJlc29sdmVkIHJlZmVyZW5jZXMgYW5kIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9Ci0rT25lIG9mIHRoZSBzdGFuZGFyZCBsaWJyYXJpZXMgYnlwYXNzZWQgYnkgQG9wdGlvbnstbm9zdGRsaWJ9IGFuZAotK0BvcHRpb257LW5vZGVmYXVsdGxpYnN9IGlzIEBmaWxle2xpYmdjYy5hfSwgYSBsaWJyYXJ5IG9mIGludGVybmFsIHN1YnJvdXRpbmVzCi0rd2hpY2ggR0NDIHVzZXMgdG8gb3ZlcmNvbWUgc2hvcnRjb21pbmdzIG9mIHBhcnRpY3VsYXIgbWFjaGluZXMsIG9yIHNwZWNpYWwKLStuZWVkcyBmb3Igc29tZSBsYW5ndWFnZXMuCi0rKEB4cmVme0ludGVyZmFjZSwsSW50ZXJmYWNpbmcgdG8gR0NDIE91dHB1dCxnY2NpbnQsR05VIENvbXBpbGVyCi0rQ29sbGVjdGlvbiAoR0NDKSBJbnRlcm5hbHN9LAotK2ZvciBtb3JlIGRpc2N1c3Npb24gb2YgQGZpbGV7bGliZ2NjLmF9LikKLStJbiBtb3N0IGNhc2VzLCB5b3UgbmVlZCBAZmlsZXtsaWJnY2MuYX0gZXZlbiB3aGVuIHlvdSB3YW50IHRvIGF2b2lkCi0rb3RoZXIgc3RhbmRhcmQgbGlicmFyaWVzLiAgSW4gb3RoZXIgd29yZHMsIHdoZW4geW91IHNwZWNpZnkgQG9wdGlvbnstbm9zdGRsaWJ9Ci0rb3IgQG9wdGlvbnstbm9kZWZhdWx0bGlic30geW91IHNob3VsZCB1c3VhbGx5IHNwZWNpZnkgQG9wdGlvbnstbGdjY30gYXMgd2VsbC4KLStUaGlzIGVuc3VyZXMgdGhhdCB5b3UgaGF2ZSBubyB1bnJlc29sdmVkIHJlZmVyZW5jZXMgdG8gaW50ZXJuYWwgR0NDCi0rbGlicmFyeSBzdWJyb3V0aW5lcy4KLSsoQW4gZXhhbXBsZSBvZiBzdWNoIGFuIGludGVybmFsIHN1YnJvdXRpbmUgaXMgQGNvZGV7X19tYWlufSwgdXNlZCB0byBlbnN1cmUgQysrCi0rY29uc3RydWN0b3JzIGFyZSBjYWxsZWQ7IEBweHJlZntDb2xsZWN0MiwsQGNvZGV7Y29sbGVjdDJ9LCBnY2NpbnQsCi0rR05VIENvbXBpbGVyIENvbGxlY3Rpb24gKEdDQykgSW50ZXJuYWxzfS4pCi0rCi0gQGl0ZW0gLXBpZQotIEBvcGluZGV4IHBpZQotIFByb2R1Y2UgYSBkeW5hbWljYWxseSBsaW5rZWQgcG9zaXRpb24gaW5kZXBlbmRlbnQgZXhlY3V0YWJsZSBvbiB0YXJnZXRzCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCBhMjYwMWE2YmIwNi4uY2Q2YzZmYzk1ZGIgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTEwNTIsNiArMTA1Miw3IEBAIHByb3BlciBwb3NpdGlvbiBhbW9uZyB0aGUgb3RoZXIgb3V0cHV0IGZpbGVzLiAgKi8KLSAgICAgJShtZmxpYikgIiBTVEFDS19TUExJVF9TUEVDICJcCi0gICAgICV7ZnByb2ZpbGUtYXJjc3xmcHJvZmlsZS1nZW5lcmF0ZSp8Y292ZXJhZ2U6LWxnY292fSAiIFNBTklUSVpFUl9TUEVDICIgXAotICAgICAleyFub3N0ZGxpYjoleyFyOiV7IW5vZGVmYXVsdGxpYnM6JShsaW5rX3NzcCkgJShsaW5rX2djY19jX3NlcXVlbmNlKX19fVwKLSsgICAgJXshbm9zdGRsaWIrKzp9XAotICAgICAleyFub3N0ZGxpYjoleyFyOiV7IW5vc3RhcnRmaWxlczolRX19fSAle1QqfSAgXG4lKHBvc3RfbGluaykgfX19fX19IgotICNlbmRpZgotIAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwNi1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwNi1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZjdlNjAzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gYjkyNjBjZDNhYzI2YjAzMDI4MjRlZDQ2NmE1NDg0NjRjODY0ZDk1ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE2OjI4ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDYvMzZdIENPTExFQ1RfR0NDX09QVElPTlMKLQotVGhpcyBwYXRjaCBhZGRzIC0tc3lzcm9vdCBpbnRvIENPTExFQ1RfR0NDX09QVElPTlMgd2hpY2ggaXMgdXNlZCB0bwotaW52b2tlIGNvbGxlY3QyLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9nY2MuYyB8IDkgKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCBjZDZjNmZjOTVkYi4uN2RhOWM1ZDQ1N2IgMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTQ4MDQsNiArNDgwNCwxNSBAQCBzZXRfY29sbGVjdF9nY2Nfb3B0aW9ucyAodm9pZCkKLSAJCXNpemVvZiAoIkNPTExFQ1RfR0NDX09QVElPTlM9IikgLSAxKTsKLSAKLSAgIGZpcnN0X3RpbWUgPSBUUlVFOwotKyNpZmRlZiBIQVZFX0xEX1NZU1JPT1QKLSsgIGlmICh0YXJnZXRfc3lzdGVtX3Jvb3RfY2hhbmdlZCAmJiB0YXJnZXRfc3lzdGVtX3Jvb3QpCi0rICAgIHsKLSsgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssICInLS1zeXNyb290PSIsIHNpemVvZigiJy0tc3lzcm9vdD0iKS0xKTsKLSsgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssIHRhcmdldF9zeXN0ZW1fcm9vdCxzdHJsZW4odGFyZ2V0X3N5c3RlbV9yb290KSk7Ci0rICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCAiJyIsIDEpOwotKyAgICAgIGZpcnN0X3RpbWUgPSBGQUxTRTsKLSsgICAgfQotKyNlbmRpZgotICAgZm9yIChpID0gMDsgKGludCkgaSA8IG5fc3dpdGNoZXM7IGkrKykKLSAgICAgewotICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0ICphcmdzOwotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwNy1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDctVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI4ZjhmYzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwNy1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDk2ICswLDAgQEAKLUZyb20gODhlNzI4ZGFkNTNkNDhjNGExOWYxNWUxOWY2NmZkMjNmNDgyMGI0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE3OjI1ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMzZdIFVzZSB0aGUgZGVmYXVsdHMuaCBpbiAke0J9IGluc3RlYWQgb2YgJHtTfSwgYW5kIHQtb2UgaW4KLSAke0J9Ci0KLVVzZSB0aGUgZGVmYXVsdHMuaCBpbiAke0J9IGluc3RlYWQgb2YgJHtTfSwgYW5kIHQtb2UgaW4gJHtCfSwgc28gdGhhdAotdGhlIHNvdXJjZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZ2NjLWNyb3NzLWluaXRpYWwsCi1nY2MtY3Jvc3MtaW50ZXJtZWRpYXRlLCBnY2MtY3Jvc3MsIGdjYy1ydW50aW1lLCBhbmQgYWxzbyB0aGUgc2RrIGJ1aWxkLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotV2hpbGUgY29tcGlsaW5nIGdjYy1jcm9zc3Nkay1pbml0aWFsLXg4Nl82NCBvbiBzb21lIGhvc3QsIHRoZXJlIGlzCi1vY2Nhc2lvbmFsbHkgZmFpbHVyZSB0aGF0IHRlc3QgdGhlIGV4aXN0YW5jZSBvZiBkZWZhdWx0LmggZG9lc24ndAotd29yaywgdGhlIHJlYXNvbiBpcyB0bV9pbmNsdWRlX2xpc3Q9JyoqIGRlZmF1bHRzLmgnIHJhdGhlciB0aGFuCi10bV9pbmNsdWRlX2xpc3Q9JyoqIC4vZGVmYXVsdHMuaCcKLQotU28gd2UgYWRkIHRoZSB0ZXN0IGNvbmRpdGlvbiBmb3IgdGhpcyBzaXR1YXRpb24uCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBnY2MvTWFrZWZpbGUuaW4gIHwgMiArLQotIGdjYy9jb25maWd1cmUgICAgfCA0ICsrLS0KLSBnY2MvY29uZmlndXJlLmFjIHwgNCArKy0tCi0gZ2NjL21rY29uZmlnLnNoICB8IDQgKystLQotIDQgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCi1pbmRleCA1ZjQzZDlkZTAwZS4uNDFmMGY1OTJmZjQgMTAwNjQ0Ci0tLS0gYS9nY2MvTWFrZWZpbGUuaW4KLSsrKyBiL2djYy9NYWtlZmlsZS5pbgotQEAgLTU0MCw3ICs1NDAsNyBAQCBUQVJHRVRfU1lTVEVNX1JPT1QgPSBAVEFSR0VUX1NZU1RFTV9ST09UQAotIFRBUkdFVF9TWVNURU1fUk9PVF9ERUZJTkUgPSBAVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORUAKLSAKLSB4bWFrZV9maWxlPUB4bWFrZV9maWxlQAotLXRtYWtlX2ZpbGU9QHRtYWtlX2ZpbGVACi0rdG1ha2VfZmlsZT1AdG1ha2VfZmlsZUAgLi90LW9lCi0gVE1fRU5ESUFOX0NPTkZJRz1AVE1fRU5ESUFOX0NPTkZJR0AKLSBUTV9NVUxUSUxJQl9DT05GSUc9QFRNX01VTFRJTElCX0NPTkZJR0AKLSBUTV9NVUxUSUxJQl9FWENFUFRJT05TX0NPTkZJRz1AVE1fTVVMVElMSUJfRVhDRVBUSU9OU19DT05GSUdACi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IGE2ZWEzYThhODRjLi5lM2JjZjhhYmU5YSAxMDA3NTUKLS0tLSBhL2djYy9jb25maWd1cmUKLSsrKyBiL2djYy9jb25maWd1cmUKLUBAIC0xMjM0MSw4ICsxMjM0MSw4IEBAIGZvciBmIGluICR0bV9maWxlOyBkbwotICAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKLSAgICAgICAgOzsKLSAgICAgZGVmYXVsdHMuaCApCi0tICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvJGYiCi0tICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgotKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuLyRmIgotKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuLyRmIgotICAgICAgICA7OwotICAgICAqICkKLSAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS9jb25maWcvJGYiCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IGQ0MmJiZDRmZDFjLi4yZWJjMzc3YTc0ZCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC0xOTY4LDggKzE5NjgsOCBAQCBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KLSAgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCi0gICAgICAgIDs7Ci0gICAgIGRlZmF1bHRzLmggKQotLSAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpLyRmIgotLSAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKLSsgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gLi8kZiIKLSsgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi8kZiIKLSAgICAgICAgOzsKLSAgICAgKiApCi0gICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvY29uZmlnLyRmIgotZGlmZiAtLWdpdCBhL2djYy9ta2NvbmZpZy5zaCBiL2djYy9ta2NvbmZpZy5zaAotaW5kZXggMzA4Yjg3ZDBjYzEuLjE5MDY4Y2JjMjRhIDEwMDY0NAotLS0tIGEvZ2NjL21rY29uZmlnLnNoCi0rKysgYi9nY2MvbWtjb25maWcuc2gKLUBAIC03Nyw3ICs3Nyw3IEBAIGlmIFsgLW4gIiRIRUFERVJTIiBdOyB0aGVuCi0gICAgIGlmIFsgJCMgLWdlIDEgXTsgdGhlbgotIAllY2hvICcjaWZkZWYgSU5fR0NDJyA+PiAke291dHB1dH1UCi0gCWZvciBmaWxlIGluICIkQCI7IGRvCi0tCSAgICBpZiB0ZXN0IHgiJGZpbGUiID0geCJkZWZhdWx0cy5oIjsgdGhlbgotKwkgICAgaWYgdGVzdCB4IiRmaWxlIiA9IHgiLi9kZWZhdWx0cy5oIiAtbyB4IiRmaWxlIiA9IHgiZGVmYXVsdHMuaCI7IHRoZW4KLSAJCXBvc3Rwb25lX2RlZmF1bHRzX2g9InllcyIKLSAJICAgIGVsc2UKLSAJCWVjaG8gIiMgaW5jbHVkZSBcIiRmaWxlXCIiID4+ICR7b3V0cHV0fVQKLUBAIC0xMDYsNyArMTA2LDcgQEAgZXNhYwotIAotICMgSWYgd2UgcG9zdHBvbmVkIGluY2x1ZGluZyBkZWZhdWx0cy5oLCBhZGQgdGhlICNpbmNsdWRlIG5vdy4KLSBpZiB0ZXN0IHgiJHBvc3Rwb25lX2RlZmF1bHRzX2giID0geCJ5ZXMiOyB0aGVuCi0tICAgIGVjaG8gIiMgaW5jbHVkZSBcImRlZmF1bHRzLmhcIiIgPj4gJHtvdXRwdXR9VAotKyAgICBlY2hvICIjIGluY2x1ZGUgXCIuL2RlZmF1bHRzLmhcIiIgPj4gJHtvdXRwdXR9VAotIGZpCi0gCi0gIyBBZGQgbXVsdGlwbGUgaW5jbHVzaW9uIHByb3RlY3Rpb24gZ3VhcmQsIHBhcnQgdHdvLgotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDgtZm9ydHJhbi1jcm9zcy1jb21waWxlLWhhY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI0ZTNhYmUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAwOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gMDEwZjA5ZjI5NjNlZGUyNGU4NTEzNGU1ZmFiMmZhNjI3YTlhZmEwNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjIwOjAxICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMDgvMzZdIGZvcnRyYW4gY3Jvc3MtY29tcGlsZSBoYWNrLgotCi0qIEZvcnRyYW4gd291bGQgaGF2ZSBzZWFyY2hlZCBmb3IgYXJtLWFuZ3N0cm9tLWdudWVhYmktZ2ZvcnRyYW4gYnV0IHdvdWxkIGhhdmUgdXNlZAotdXNlZCBnZm9ydGFuLiBGb3IgZ2NjXzQuMi4yLmJiIHdlIHdhbnQgdG8gdXNlIHRoZSBnZm9ydHJhbiBjb21waWxlciBmcm9tIG91ciBjcm9zcwotZGlyZWN0b3J5LgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotLS0tCi0gbGliZ2ZvcnRyYW4vY29uZmlndXJlICAgIHwgMiArLQotIGxpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYyB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZSBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQotaW5kZXggNjA4NjdiOTNkMGUuLjNmYzlmY2E1YjdiIDEwMDc1NQotLS0tIGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlCi0rKysgYi9saWJnZm9ydHJhbi9jb25maWd1cmUKLUBAIC0xMzA3MSw3ICsxMzA3MSw3IEBAIGVzYWMKLSAKLSAjIFdlIG5lZWQgZ2ZvcnRyYW4gdG8gY29tcGlsZSBwYXJ0cyBvZiB0aGUgbGlicmFyeQotICNBQ19QUk9HX0ZDKGdmb3J0cmFuKQotLUZDPSIkR0ZPUlRSQU4iCi0rI0ZDPSIkR0ZPUlRSQU4iCi0gYWNfZXh0PSR7YWNfZmNfc3JjZXh0LWZ9Ci0gYWNfY29tcGlsZT0nJEZDIC1jICRGQ0ZMQUdTICRhY19mY2ZsYWdzX3NyY2V4dCBjb25mdGVzdC4kYWNfZXh0ID4mNScKLSBhY19saW5rPSckRkMgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRGQ0ZMQUdTICRMREZMQUdTICRhY19mY2ZsYWdzX3NyY2V4dCBjb25mdGVzdC4kYWNfZXh0ICRMSUJTID4mNScKLWRpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMgYi9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKLWluZGV4IDdjZmNlMjhhYjY5Li42Y2Q1MTVlZTFhNCAxMDA2NDQKLS0tLSBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYwotKysrIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCi1AQCAtMjUwLDcgKzI1MCw3IEBAIEFDX1NVQlNUKGVuYWJsZV9zdGF0aWMpCi0gCi0gIyBXZSBuZWVkIGdmb3J0cmFuIHRvIGNvbXBpbGUgcGFydHMgb2YgdGhlIGxpYnJhcnkKLSAjQUNfUFJPR19GQyhnZm9ydHJhbikKLS1GQz0iJEdGT1JUUkFOIgotKyNGQz0iJEdGT1JUUkFOIgotIEFDX1BST0dfRkMoZ2ZvcnRyYW4pCi0gCi0gIyBleHRyYSBMRCBGbGFncyB3aGljaCBhcmUgcmVxdWlyZWQgZm9yIHRhcmdldHMKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDktY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDA5LWNwcC1ob25vci1zeXNyb290LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YWYwYTAxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMDktY3BwLWhvbm9yLXN5c3Jvb3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIDQ1ZTljZDM5ZDljNjI0NTRkNDZiOWU5NDczYTBjMTAzNGNlY2ExNWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMjowMCArMDQwMAotU3ViamVjdDogW1BBVENIIDA5LzM2XSBjcHA6IGhvbm9yIHN5c3Jvb3QuCi0KLUN1cnJlbnRseSwgaWYgdGhlIGdjYyB0b29sY2hhaW4gaXMgcmVsb2NhdGVkIGFuZCBpbnN0YWxsZWQgZnJvbSBzc3RhdGUsIHRoZW4geW91IHRyeSBhbmQgY29tcGlsZQotcHJlcHJvY2Vzc2VkIHNvdXJjZSAoLmkgb3IgLmlpIGZpbGVzKSwgdGhlIGNvbXBpbGVyIHdpbGwgdHJ5IGFuZCBhY2Nlc3MgdGhlIGJ1aWx0aW4gc3lzcm9vdCBsb2NhdGlvbgotcmF0aGVyIHRoYW4gdGhlIC0tc3lzcm9vdCBvcHRpb24gc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kbGluZS4gSWYgYWNjZXNzIHRvIHRoYXQgZGlyZWN0b3J5IGlzCi1wZXJtaXNzaW9uIGRlbmllZCAodW5yZWFkYWJsZSksIGdjYyB3aWxsIGVycm9yLgotCi1UaGlzIGhhcHBlbnMgd2hlbiBjY2FjaGUgaXMgaW4gdXNlIGR1ZSB0byB0aGUgZmFjdCBpdCB1c2VzIHByZXByb2Nlc3NlZCBzb3VyY2UgZmlsZXMuCi0KLVRoZSBmaXggYmVsb3cgYWRkcyAlSSB0byB0aGUgY3BwLW91dHB1dCBzcGVjIG1hY3JvIHNvIHRoZSBkZWZhdWx0IHN1YnN0aXR1dGlvbnMgZm9yIC1pcHJlZml4LAotLWlzeXN0ZW0sIC1pc3lzcm9vdCBoYXBwZW4gYW5kIHRoZSBjb3JyZWN0IHN5c3Jvb3QgaXMgdXNlZC4KLQotW1lPQ1RPICMyMDc0XQotCi1SUCAyMDEyLzA0LzEzCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL2NwL2xhbmctc3BlY3MuaCB8IDIgKy0KLSBnY2MvZ2NjLmMgICAgICAgICAgIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NwL2xhbmctc3BlY3MuaCBiL2djYy9jcC9sYW5nLXNwZWNzLmgKLWluZGV4IGM2ZTQyZWRhMjgzLi5lMWRkZjA2NjQ2NyAxMDA2NDQKLS0tLSBhL2djYy9jcC9sYW5nLXNwZWNzLmgKLSsrKyBiL2djYy9jcC9sYW5nLXNwZWNzLmgKLUBAIC02Niw1ICs2Niw1IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gICB7Ii5paSIsICJAYysrLWNwcC1vdXRwdXQiLCAwLCAwLCAwfSwKLSAgIHsiQGMrKy1jcHAtb3V0cHV0IiwKLSAgICAgICAiJXshRToleyFNOiV7IU1NOiIKLS0gICAgICAiICBjYzFwbHVzIC1mcHJlcHJvY2Vzc2VkICVpICUoY2MxX29wdGlvbnMpICUyIgotKyAgICAgICIgIGNjMXBsdXMgLWZwcmVwcm9jZXNzZWQgJWkgJUkgJShjYzFfb3B0aW9ucykgJTIiCi0gICAgICAgIiAgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKLWRpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKLWluZGV4IDdkYTljNWQ0NTdiLi40ZTdjNDViMjY4YyAxMDA2NDQKLS0tLSBhL2djYy9nY2MuYwotKysrIGIvZ2NjL2djYy5jCi1AQCAtMTM0OSw3ICsxMzQ5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb21waWxlciBkZWZhdWx0X2NvbXBpbGVyc1tdID0KLSAJCQkJCSAgICVXe28qOi0tb3V0cHV0LXBjaD0lKn19JVZ9fX19fX19IiwgMCwgMCwgMH0sCi0gICB7Ii5pIiwgIkBjcHAtb3V0cHV0IiwgMCwgMCwgMH0sCi0gICB7IkBjcHAtb3V0cHV0IiwKLS0gICAiJXshTToleyFNTToleyFFOmNjMSAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAotKyAgICIleyFNOiV7IU1NOiV7IUU6Y2MxIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCi0gICB7Ii5zIiwgIkBhc3NlbWJsZXIiLCAwLCAwLCAwfSwKLSAgIHsiQGFzc2VtYmxlciIsCi0gICAgIiV7IU06JXshTU06JXshRToleyFTOmFzICUoYXNtX2RlYnVnKSAlKGFzbV9vcHRpb25zKSAlaSAlQSB9fX19IiwgMCwgMCwgMH0sCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDEwLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDEwLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjMGM2ZDUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxMC1NSVBTNjQtRGVmYXVsdC10by1ONjQtQUJJLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotRnJvbSAxZmY0MTA4ZDcwN2IzNGUzOTllOWRjNDE4YWQxZWNjNDJmNzI2NzZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjM6MDggKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8zNl0gTUlQUzY0OiBEZWZhdWx0IHRvIE42NCBBQkkKLQotTUlQUzY0IGRlZmF1bHRzIHRvIG4zMiBBQkksIHRoaXMgcGF0Y2ggbWFrZXMgaXQKLXNvIHRoYXQgaXQgZGVmYXVsdHMgdG8gTjY0IEFCSQotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIGNvbmZpZyBzcGVjaWZpY10KLS0tLQotIGdjYy9jb25maWcuZ2NjIHwgMTAgKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnLmdjYyBiL2djYy9jb25maWcuZ2NjCi1pbmRleCBkZGQzYjhmNGQ5ZC4uZmRmYzBiZDNlODIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnLmdjYwotKysrIGIvZ2NjL2NvbmZpZy5nY2MKLUBAIC0yMjgyLDI5ICsyMjgyLDI5IEBAIG1pcHMqLSotbGludXgqKQkJCQkjIExpbnV4IE1JUFMsIGVpdGhlciBlbmRpYW4uCi0gCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczMyCi0gCQkJOzsKLSAJCW1pcHM2NGVsLXN0LWxpbnV4LWdudSkKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQl0bV9maWxlPSIke3RtX2ZpbGV9IG1pcHMvc3QuaCIKLSAJCQl0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGV9IG1pcHMvdC1zdCIKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAkJbWlwczY0b2N0ZW9uKi0qLWxpbnV4KikKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQl0bV9kZWZpbmVzPSIke3RtX2RlZmluZXN9IE1JUFNfQ1BVX1NUUklOR19ERUZBVUxUPVxcXCJvY3Rlb25cXFwiIgotIAkJCXRhcmdldF9jcHVfZGVmYXVsdD1NQVNLX1NPRlRfRkxPQVRfQUJJCi0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJCW1pcHNpc2E2NHI2Ki0qLWxpbnV4KikKLS0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgotKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKLSAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzNjRyNgotIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgotIAkJCTs7Ci0gCQltaXBzaXNhNjRyMiotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJZGVmYXVsdF9taXBzX2FyY2g9bWlwczY0cjIKLSAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKLSAJCQk7OwotIAkJbWlwczY0Ki0qLWxpbnV4KiB8IG1pcHNpc2E2NCotKi1saW51eCopCi0tCQkJZGVmYXVsdF9taXBzX2FiaT1uMzIKLSsJCQlkZWZhdWx0X21pcHNfYWJpPTY0Ci0gCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCi0gCQkJOzsKLSAJZXNhYwotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxMS1EZWZpbmUtR0xJQkNfRFlOQU1JQ19MSU5LRVItYW5kLVVDTElCQ19EWU5BTUlDX0xJTktFLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmZiMjRkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTEtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0MyArMCwwIEBACi1Gcm9tIDcyZmMzOTc1YmNkNzIwYjJmODA0MGZhODdjZDIzZDNkYjRjNTk3NWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyNDo1MCArMDQwMAotU3ViamVjdDogW1BBVENIXSBEZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgYW5kIFVDTElCQ19EWU5BTUlDX0xJTktFUgotIHJlbGF0aXZlIHRvIFNZU1RFTUxJQlNfRElSCi0KLVRoaXMgcGF0Y2ggZGVmaW5lcyBHTElCQ19EWU5BTUlDX0xJTktFUiBhbmQgVUNMSUJDX0RZTkFNSUNfTElOS0VSCi1yZWxhdGl2ZSB0byBTWVNURU1MSUJTX0RJUiB3aGljaCBjYW4gYmUgc2V0IGluIGdlbmVyYXRlZCBoZWFkZXJzCi1UaGlzIGJyZWFrcyB0aGUgYXNzdW1wdGlvbiBvZiBoYXJkY29kZWQgbXVsdGlsaWIgaW4gZ2NjCi1DaGFuZ2UgaXMgb25seSBmb3IgdGhlIHN1cHBvcnRlZCBhcmNoaXRlY3R1cmVzIGluIE9FIGluY2x1ZGluZwotU0gsIHNwYXJjLCBhbHBoYSBmb3IgcG9zc2libGUgZnV0dXJlIHN1cHBvcnQgKGlmIGFueSkKLQotUmVtb3ZlcyB0aGUgZG9faGVhZGVyZml4IHRhc2sgaW4gbWV0YWRhdGEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBjb25maWd1cmF0aW9uXQotLS0tCi0gZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaCB8ICA0ICsrLS0KLSBnY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggIHwgIDQgKystLQotIGdjYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oICAgfCAgMiArLQotIGdjYy9jb25maWcvaTM4Ni9saW51eC5oICAgICAgfCAgMiArLQotIGdjYy9jb25maWcvaTM4Ni9saW51eDY0LmggICAgfCAgNiArKystLS0KLSBnY2MvY29uZmlnL2xpbnV4LmggICAgICAgICAgIHwgIDggKysrKy0tLS0KLSBnY2MvY29uZmlnL21pcHMvbGludXguaCAgICAgIHwgMTIgKysrKysrLS0tLS0tCi0gZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oICAgICB8ICAyICstCi0gZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oICB8IDE1ICsrKysrLS0tLS0tLS0tLQotIGdjYy9jb25maWcvc2gvbGludXguaCAgICAgICAgfCAgMiArLQotIGdjYy9jb25maWcvc3BhcmMvbGludXguaCAgICAgfCAgMiArLQotIGdjYy9jb25maWcvc3BhcmMvbGludXg2NC5oICAgfCAgNCArKy0tCi0gMTIgZmlsZXMgY2hhbmdlZCwgMjkgaW5zZXJ0aW9ucygrKSwgMzQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FscGhhL2xpbnV4LWVsZi5oIGIvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaAotaW5kZXggODI0ODYxYmVmZWMuLjZhZmFjY2UzMjkyIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaAotKysrIGIvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaAotQEAgLTIzLDggKzIzLDggQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAjZGVmaW5lIEVYVFJBX1NQRUNTIFwKLSB7ICJlbGZfZHluYW1pY19saW5rZXIiLCBFTEZfRFlOQU1JQ19MSU5LRVIgfSwKLSAKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSCSIvbGliL2xkLWxpbnV4LnNvLjIiCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUglTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSsjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgotICNpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMKLSAjZGVmaW5lIENIT09TRV9EWU5BTUlDX0xJTktFUihHLCBVKSAiJXttZ2xpYmM6IiBHICI7OiIgVSAifSIKLSAjZWxpZiBERUZBVUxUX0xJQkMgPT0gTElCQ19HTElCQwotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotaW5kZXggNjZlYzBlYTM5ODAuLmU0YWRlMmUyYWIwIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi0rKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLUBAIC02NSw4ICs2NSw4IEBACi0gICAgR0xJQkNfRFlOQU1JQ19MSU5LRVJfREVGQVVMVCBhbmQgVEFSR0VUX0RFRkFVTFRfRkxPQVRfQUJJLiAgKi8KLSAKLSAjdW5kZWYgIEdMSUJDX0RZTkFNSUNfTElOS0VSCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUICIvbGliL2xkLWxpbnV4LnNvLjMiCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9IQVJEX0ZMT0FUICIvbGliL2xkLWxpbnV4LWFybWhmLnNvLjMiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9TT0ZUX0ZMT0FUIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4zIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfSEFSRF9GTE9BVCBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYXJtaGYuc28uMyIKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0RFRkFVTFQgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVAotIAotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgXAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKLWluZGV4IDlhMzYwZGVmZDIxLi45OGY2ZTk2MGI2NCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCi0rKysgYi9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAotQEAgLTYwLDcgKzYwLDcgQEAKLSAKLSAjZGVmaW5lIExJQkdDQ19TUEVDICIle21mbG9hdC1hYmk9c29mdCo6LWxmbG9hdH0gLWxnY2MiCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI2RlZmluZSBMSU5VWF9UQVJHRVRfTElOS19TUEVDICAiJXtoKn0gXAotICAgICV7c3RhdGljOi1Cc3RhdGljfSBcCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmggYi9nY2MvY29uZmlnL2kzODYvbGludXguaAotaW5kZXggOWE2ZTJkOTk4OTYuLjMxZWZiYjczMDE2IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9saW51eC5oCi1AQCAtMjAsNyArMjAsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0gI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTiAiZWxmX2kzODYiCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1pMzg2LnNvLjEiCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4NjQuaCBiL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKLWluZGV4IGMwODIyMWM0MjEwLi5kYmI0NzRkNzkyYiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmgKLUBAIC0yNyw5ICsyNyw5IEBAIHNlZSB0aGUgZmlsZXMgQ09QWUlORzMgYW5kIENPUFlJTkcuUlVOVElNRSByZXNwZWN0aXZlbHkuICBJZiBub3QsIHNlZQotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT042NCAiZWxmX3g4Nl82NCIKLSAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OWDMyICJlbGYzMl94ODZfNjQiCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLWxpbnV4LnNvLjIiCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliNjQvbGQtbGludXgteDg2LTY0LnNvLjIiCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUlgzMiAiL2xpYngzMi9sZC1saW51eC14MzIuc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZC1saW51eC14ODYtNjQuc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSWDMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC14MzIuc28uMiIKLSAKLSAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjMyCi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbXVzbC1pMzg2LnNvLjEiCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9saW51eC5oIGIvZ2NjL2NvbmZpZy9saW51eC5oCi1pbmRleCBjM2M0YTIxOWU2Ny4uNGIwNWQ4ZTkzZDEgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvbGludXguaAotQEAgLTk0LDEwICs5NCwxMCBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKLSAgICBHTElCQ19EWU5BTUlDX0xJTktFUiBtdXN0IGJlIGRlZmluZWQgZm9yIGVhY2ggdGFyZ2V0IHVzaW5nIHRoZW0sIG9yCi0gICAgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBhbmQgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBmb3IgdGFyZ2V0cwotICAgIHN1cHBvcnRpbmcgYm90aCAzMi1iaXQgYW5kIDY0LWJpdCBjb21waWxhdGlvbi4gICovCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC11Q2xpYmMuc28uMCIKLS0jZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0ICIvbGliL2xkNjQtdUNsaWJjLnNvLjAiCi0tI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgIi9saWIvbGR4MzItdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy5zby4wIgotKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjAiCi0rI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgU1lTVEVNTElCU19ESVIgImxkeDMyLXVDbGliYy5zby4wIgotICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSICIvc3lzdGVtL2Jpbi9saW5rZXIiCi0gI2RlZmluZSBCSU9OSUNfRFlOQU1JQ19MSU5LRVIzMiAiL3N5c3RlbS9iaW4vbGlua2VyIgotICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSNjQgIi9zeXN0ZW0vYmluL2xpbmtlcjY0IgotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbWlwcy9saW51eC5oIGIvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKLWluZGV4IDZmNzlhYzljMDFhLi4yNWRlOTZmOTU2MSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvbWlwcy9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL21pcHMvbGludXguaAotQEAgLTIyLDIwICsyMiwyMCBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT05OMzIgImVsZjMyJXtFQjpifSV7RUw6bH10c21pcG4zMiIKLSAKLSAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWIvbGQuc28uMX0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCi0tICAiJXttbmFuPTIwMDg6L2xpYjY0L2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliNjQvbGQuc28uMX0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtbWlwc244LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkLnNvLjF9IgotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJOMzIgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIzMi9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYjMyL2xkLnNvLjF9IgotKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKLSAKLSAjdW5kZWYgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIKLSAjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyIFwKLS0gICIle21uYW49MjAwODovbGliL2xkLXVDbGliYy1taXBzbjguc28uMDs6L2xpYi9sZC11Q2xpYmMuc28uMH0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMH0iCi0gI3VuZGVmIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0Ci0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCi0tICAiJXttbmFuPTIwMDg6L2xpYi9sZDY0LXVDbGliYy1taXBzbjguc28uMDs6L2xpYi9sZDY0LXVDbGliYy5zby4wfSIKLSsgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMuc28uMH0iCi0gI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVJOMzIgXAotLSAgIiV7bW5hbj0yMDA4Oi9saWIzMi9sZC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIzMi9sZC11Q2xpYmMuc28uMH0iCi0rICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLW1pcHNuOC5zby4wOzoiIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMH0iCi0gCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIzMgotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjMyIFwKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3Jpc2N2L2xpbnV4LmggYi9nY2MvY29uZmlnL3Jpc2N2L2xpbnV4LmgKLWluZGV4IDU4ZGQxOGI4OWYzLi4xMTJiYTljZDc2NCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcmlzY3YvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oCi1AQCAtMjIsNyArMjIsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQotICAgICBHTlVfVVNFUl9UQVJHRVRfT1NfQ1BQX0JVSUxUSU5TKCk7CQkJCVwKLSAgIH0gd2hpbGUgKDApCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1yaXNjdiIgWExFTl9TUEVDICItIiBBQklfU1BFQyAiLnNvLjEiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtcmlzY3YiIFhMRU5fU1BFQyAiLSIgQUJJX1NQRUMgIi5zby4xIgotIAotICNkZWZpbmUgTVVTTF9BQklfU1VGRklYIFwKLSAgICIle21hYmk9aWxwMzI6LXNmfSIgXAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotaW5kZXggOTk0NmQzZmVkOTQuLjQ1YTlhN2NhZTU5IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi0rKysgYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLUBAIC00MjMsMjQgKzQyMywxOSBAQCBleHRlcm4gaW50IGRvdF9zeW1ib2xzOwotICN1bmRlZglMSU5LX09TX0RFRkFVTFRfU1BFQwotICNkZWZpbmUgTElOS19PU19ERUZBVUxUX1NQRUMgIiUobGlua19vc19saW51eCkiCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyICIlKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliL2xkLnNvLjEiCi0tCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC5zby4xIgotICNpZmRlZiBMSU5VWDY0X0RFRkFVTFRfQUJJX0VMRnYyCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKLS0iJXttYWJpPWVsZnYxOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjE7IiBcCi0tIjolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4yfSIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIiV7bWFiaT1lbGZ2MToiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjE7OiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMn0iCi0gI2Vsc2UKLS0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAotLSIle21hYmk9ZWxmdjI6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMjsiIFwKLS0iOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjF9IgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiJXttYWJpPWVsZnYyOiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMjs6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4xfSIKLSAjZW5kaWYKLSAKLSAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjMyCi0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSMzIgXAotLSAgIi9saWIvbGQtbXVzbC1wb3dlcnBjIiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgotKyAgU1lTVEVNTElCU19ESVIgImxkLW11c2wtcG93ZXJwYyIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKLSAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUjY0Ci0gI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSNjQgXAotLSAgIi9saWIvbGQtbXVzbC1wb3dlcnBjNjQiIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCi0rICBTWVNURU1MSUJTX0RJUiAibGQtbXVzbC1wb3dlcnBjNjQiIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCi0gCi0gI3VuZGVmICBERUZBVUxUX0FTTV9FTkRJQU4KLSAjaWYgKFRBUkdFVF9ERUZBVUxUICYgTUFTS19MSVRUTEVfRU5ESUFOKQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc2gvbGludXguaCBiL2djYy9jb25maWcvc2gvbGludXguaAotaW5kZXggYzk4OTdiN2FjYTUuLjgyZjI3NTMxOWNjIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9zaC9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL3NoL2xpbnV4LmgKLUBAIC02NCw3ICs2NCw3IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCi0gICAiL2xpYi9sZC1tdXNsLXNoIiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgTVVTTF9EWU5BTUlDX0xJTktFUl9GUCBcCi0gICAiJXttZmRwaWM6LWZkcGljfS5zby4xIgotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotIAotICN1bmRlZiBTVUJUQVJHRVRfTElOS19FTVVMX1NVRkZJWAotICNkZWZpbmUgU1VCVEFSR0VUX0xJTktfRU1VTF9TVUZGSVggIiV7bWZkcGljOl9mZDs6X2xpbnV4fSIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmggYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKLWluZGV4IDA4NDc2ZjFkOTRkLi44MDQ0MGU3MTJhZCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvc3BhcmMvbGludXguaAotKysrIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCi1AQCAtODQsNyArODQsNyBAQCBleHRlcm4gY29uc3QgY2hhciAqaG9zdF9kZXRlY3RfbG9jYWxfY3B1IChpbnQgYXJnYywgY29uc3QgY2hhciAqKmFyZ3YpOwotICAgIFdoZW4gdGhlIC1zaGFyZWQgbGluayBvcHRpb24gaXMgdXNlZCBhIGZpbmFsIGxpbmsgaXMgbm90IGJlaW5nCi0gICAgZG9uZS4gICovCi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCi0gCi0gI3VuZGVmICBMSU5LX1NQRUMKLSAjZGVmaW5lIExJTktfU1BFQyAiLW0gZWxmMzJfc3BhcmMgJXtzaGFyZWQ6LXNoYXJlZH0gXAotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKLWluZGV4IDc4OWQxZGY0YmQ1Li5iOTIwYzY4MGZiMSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCi0rKysgYi9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAotQEAgLTg0LDggKzg0LDggQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKLSAgICBXaGVuIHRoZSAtc2hhcmVkIGxpbmsgb3B0aW9uIGlzIHVzZWQgYSBmaW5hbCBsaW5rIGlzIG5vdCBiZWluZwotICAgIGRvbmUuICAqLwotIAotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1saW51eC5zby4yIgotLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYjY0L2xkLWxpbnV4LnNvLjIiCi0rI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgotKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKLSAKLSAjaWZkZWYgU1BBUkNfQklfQVJDSAotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxMi1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDEyLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjA1Mzk3OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDEyLWdjYy1GaXgtYXJndW1lbnQtbGlzdC10b28tbG9uZy1lcnJvci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLUZyb20gMmNiMjI3Y2Q4MDY5YzczMjQyMjg2ZjY0MTgzZmIyMDNmOGQyNjE4YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI2OjM3ICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTIvMzZdIGdjYzogRml4IGFyZ3VtZW50IGxpc3QgdG9vIGxvbmcgZXJyb3IuCi0KLVRoZXJlIHdvdWxkIGJlIGFuICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIHRoZQotYnVpbGQgZGlyZWN0b3J5IGlzIGxvbmdlciB0aGFuIDIwMCwgdGhpcyBpcyBjYXVzZWQgYnk6Ci0KLWhlYWRlcnM9YGVjaG8gJChQTFVHSU5fSEVBREVSUykgfCB0ciAnICcgJ1wwMTInIHwgc29ydCAtdWAKLQotVGhlIFBMVUdJTl9IRUFERVJTIGlzIHRvbyBsb25nIGJlZm9yZSBzb3J0LCBzbyB0aGUgImVjaG8iIGNhbid0IGhhbmRsZQotaXQsIHVzZSB0aGUgJChzb3J0IGxpc3QpIG9mIEdOVSBtYWtlIHdoaWNoIGNhbiBoYW5kbGUgdGhlIHRvbyBsb25nIGxpc3QKLXdvdWxkIGZpeCB0aGUgcHJvYmxlbSwgdGhlIGhlYWRlciB3b3VsZCBiZSBzaG9ydCBlbm91Z2ggYWZ0ZXIgc29ydGVkLgotVGhlICJ0ciAnICcgJ1wwMTInIiB3YXMgdXNlZCBmb3IgdHJhbnNsYXRpbmcgdGhlIHNwYWNlIHRvICJcbiIsIHRoZQotJChzb3J0IGxpc3QpIGRvZXNuJ3QgbmVlZCB0aGlzLgotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gZ2NjL01ha2VmaWxlLmluIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCi1pbmRleCA0MWYwZjU5MmZmNC4uMDA2NGEyODI0ODggMTAwNjQ0Ci0tLS0gYS9nY2MvTWFrZWZpbGUuaW4KLSsrKyBiL2djYy9NYWtlZmlsZS5pbgotQEAgLTM1MzcsNyArMzUzNyw3IEBAIGluc3RhbGwtcGx1Z2luOiBpbnN0YWxsZGlycyBsYW5nLmluc3RhbGwtcGx1Z2luIHMtaGVhZGVyLXZhcnMgaW5zdGFsbC1nZW5ndHlwZQotICMgV2Uga2VlcCB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgZmlsZXMgaW4gY29uZmlnIG9yIGMtZmFtaWx5IGFuZCAuZGVmCi0gIyBmaWxlcy4gQWxsIG90aGVyIGZpbGVzIGFyZSBmbGF0dGVuZWQgdG8gYSBzaW5nbGUgZGlyZWN0b3J5LgotIAkkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKHBsdWdpbl9pbmNsdWRlZGlyKQotLQloZWFkZXJzPWBlY2hvICQoUExVR0lOX0hFQURFUlMpICQkKGNkICQoc3JjZGlyKTsgZWNobyAqLmggKi5kZWYpIHwgdHIgJyAnICdcMDEyJyB8IHNvcnQgLXVgOyBcCi0rCWhlYWRlcnM9IiQoc29ydCAkKFBMVUdJTl9IRUFERVJTKSAkJChjZCAkKHNyY2Rpcik7IGVjaG8gKi5oICouZGVmKSkiOyBcCi0gCXNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCp8XS9cXFxcJi9nJ2A7IFwKLSAJZm9yIGZpbGUgaW4gJCRoZWFkZXJzOyBkbyBcCi0gCSAgaWYgWyAtZiAkJGZpbGUgXSA7IHRoZW4gXAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxMy1EaXNhYmxlLXNkdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTMtRGlzYWJsZS1zZHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGEyMWE2M2MuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxMy1EaXNhYmxlLXNkdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMyArMCwwIEBACi1Gcm9tIGFlYTVmZmE5ZDcwNGY0ZWI4ZmE5MzM2Njg4NGQzYzI2YTFkYmVjNDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyODoxMCArMDQwMAotU3ViamVjdDogW1BBVENIIDEzLzM2XSBEaXNhYmxlIHNkdC4KLQotV2UgZG9uJ3QgbGlzdCBkdHJhY2UgaW4gREVQRU5EUyBzbyB3ZSBzaG91bGRuJ3QgYmUgZGVwZW5kaW5nIG9uIHRoaXMgaGVhZGVyLgotSXQgbWF5IG9yIG1heSBub3QgZXhpc3QgZnJvbSBwcmVpdm91cyBidWlsZHMgdGhvdWdoLiBUbyBiZSBkZXRlcm1pbnN0aWMsIGRpc2FibGUKLXNkdC5oIHVzYWdlIGFsd2F5cy4gVGhpcyBhdm9pZHMgYnVpbGQgZmFpbHVyZXMgaWYgdGhlIGhlYWRlciBpcyByZW1vdmVkIGFmdGVyIGNvbmZpZ3VyZQotYnV0IGJlZm9yZSBsaWJnY2MgaXMgY29tcGlsZWQgZm9yIGV4YW1wbGUuCi0KLVJQIDIwMTIvOC83Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLURpc2FibGUgc2R0IGZvciBsaWJzdGRjKystdjMuCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2hhY2tdCi0tLS0KLSBnY2MvY29uZmlndXJlICAgICAgICAgICAgIHwgMTIgKysrKysrLS0tLS0tCi0gZ2NjL2NvbmZpZ3VyZS5hYyAgICAgICAgICB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQotIGxpYnN0ZGMrKy12My9jb25maWd1cmUgICAgfCAgNiArKystLS0KLSBsaWJzdGRjKystdjMvY29uZmlndXJlLmFjIHwgIDIgKy0KLSA0IGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IGUzYmNmOGFiZTlhLi4xZjFkMjJjYTY2NiAxMDA3NTUKLS0tLSBhL2djYy9jb25maWd1cmUKLSsrKyBiL2djYy9jb25maWd1cmUKLUBAIC0yOTMzMiwxMiArMjkzMzIsMTIgQEAgZmkKLSB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IGNoZWNraW5nIHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeSIgPiY1Ci0gJGFzX2VjaG9fbiAiY2hlY2tpbmcgc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5Li4uICIgPiY2OyB9Ci0gaGF2ZV9zeXNfc2R0X2g9bm8KLS1pZiB0ZXN0IC1mICR0YXJnZXRfaGVhZGVyX2Rpci9zeXMvc2R0Lmg7IHRoZW4KLS0gIGhhdmVfc3lzX3NkdF9oPXllcwotLQotLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAotLQotLWZpCi0rI2lmIHRlc3QgLWYgJHRhcmdldF9oZWFkZXJfZGlyL3N5cy9zZHQuaDsgdGhlbgotKyMgIGhhdmVfc3lzX3NkdF9oPXllcwotKyMKLSsjJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCi0rIwotKyNmaQotIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkaGF2ZV9zeXNfc2R0X2giID4mNQotICRhc19lY2hvICIkaGF2ZV9zeXNfc2R0X2giID4mNjsgfQotIAotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCi1pbmRleCAyZWJjMzc3YTc0ZC4uZGRjODUxOTc1ODggMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlndXJlLmFjCi0rKysgYi9nY2MvY29uZmlndXJlLmFjCi1AQCAtNTk5NSwxNSArNTk5NSwxNSBAQCBmaQotIEFDX1NVQlNUKFtlbmFibGVfZGVmYXVsdF9zc3BdKQotIAotICMgVGVzdCBmb3IgPHN5cy9zZHQuaD4gb24gdGhlIHRhcmdldC4KLS1HQ0NfVEFSR0VUX1RFTVBMQVRFKFtIQVZFX1NZU19TRFRfSF0pCi0tQUNfTVNHX0NIRUNLSU5HKHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeSkKLS1oYXZlX3N5c19zZHRfaD1ubwotLWlmIHRlc3QgLWYgJHRhcmdldF9oZWFkZXJfZGlyL3N5cy9zZHQuaDsgdGhlbgotLSAgaGF2ZV9zeXNfc2R0X2g9eWVzCi0tICBBQ19ERUZJTkUoSEFWRV9TWVNfU0RUX0gsIDEsCi0tICAgICAgICAgICAgW0RlZmluZSBpZiB5b3VyIHRhcmdldCBDIGxpYnJhcnkgcHJvdmlkZXMgc3lzL3NkdC5oXSkKLS1maQotLUFDX01TR19SRVNVTFQoJGhhdmVfc3lzX3NkdF9oKQotKyNHQ0NfVEFSR0VUX1RFTVBMQVRFKFtIQVZFX1NZU19TRFRfSF0pCi0rI0FDX01TR19DSEVDS0lORyhzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkpCi0rI2hhdmVfc3lzX3NkdF9oPW5vCi0rI2lmIHRlc3QgLWYgJHRhcmdldF9oZWFkZXJfZGlyL3N5cy9zZHQuaDsgdGhlbgotKyMgIGhhdmVfc3lzX3NkdF9oPXllcwotKyMgIEFDX0RFRklORShIQVZFX1NZU19TRFRfSCwgMSwKLSsjICAgICAgICAgICAgW0RlZmluZSBpZiB5b3VyIHRhcmdldCBDIGxpYnJhcnkgcHJvdmlkZXMgc3lzL3NkdC5oXSkKLSsjZmkKLSsjQUNfTVNHX1JFU1VMVCgkaGF2ZV9zeXNfc2R0X2gpCi0gCi0gIyBDaGVjayBpZiBURm1vZGUgbG9uZyBkb3VibGUgc2hvdWxkIGJlIHVzZWQgYnkgZGVmYXVsdCBvciBub3QuCi0gIyBTb21lIGdsaWJjIHRhcmdldHMgdXNlZCBERm1vZGUgbG9uZyBkb3VibGUsIGJ1dCB3aXRoIGdsaWJjIDIuNAotZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUgYi9saWJzdGRjKystdjMvY29uZmlndXJlCi1pbmRleCA1YWNmNzljYmE1NC4uMTkxYmM2YzU3OTYgMTAwNzU1Ci0tLS0gYS9saWJzdGRjKystdjMvY29uZmlndXJlCi0rKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlCi1AQCAtMjIwODUsMTEgKzIyMDg1LDExIEBAIGFjX2NvbXBpbGU9JyRDQyAtYyAkQ0ZMQUdTICRDUFBGTEFHUyBjb25mdGVzdC4kYWNfZXh0ID4mNScKLSBhY19saW5rPSckQ0MgLW8gY29uZnRlc3QkYWNfZXhlZXh0ICRDRkxBR1MgJENQUEZMQUdTICRMREZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgJExJQlMgPiY1JwotIGFjX2NvbXBpbGVyX2dudT0kYWNfY3ZfY19jb21waWxlcl9nbnUKLSAKLS0gIGlmIHRlc3QgJGdsaWJjeHhfY3Zfc3lzX3NkdF9oID0geWVzOyB0aGVuCi0rIyAgaWYgdGVzdCAkZ2xpYmN4eF9jdl9zeXNfc2R0X2ggPSB5ZXM7IHRoZW4KLSAKLS0kYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKLSsjJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCi0gCi0tICBmaQotKyMgIGZpCi0gICB7ICRhc19lY2hvICIkYXNfbWU6JHthc19saW5lbm8tJExJTkVOT306IHJlc3VsdDogJGdsaWJjeHhfY3Zfc3lzX3NkdF9oIiA+JjUKLSAkYXNfZWNobyAiJGdsaWJjeHhfY3Zfc3lzX3NkdF9oIiA+JjY7IH0KLSAKLWRpZmYgLS1naXQgYS9saWJzdGRjKystdjMvY29uZmlndXJlLmFjIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYwotaW5kZXggZGFkZDg4MjdiNDkuLjZiMWNlOTk1N2QzIDEwMDY0NAotLS0tIGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYwotKysrIGIvbGlic3RkYysrLXYzL2NvbmZpZ3VyZS5hYwotQEAgLTIzMCw3ICsyMzAsNyBAQCBHTElCQ1hYX0NIRUNLX1NDX05QUk9DRVNTT1JTX09OTE4KLSBHTElCQ1hYX0NIRUNLX1NDX05QUk9DX09OTE4KLSBHTElCQ1hYX0NIRUNLX1BUSFJFQURTX05VTV9QUk9DRVNTT1JTX05QCi0gR0xJQkNYWF9DSEVDS19TWVNDVExfSFdfTkNQVQotLUdMSUJDWFhfQ0hFQ0tfU0RUX0gKLSsjR0xJQkNYWF9DSEVDS19TRFRfSAotIAotICMgQ2hlY2sgZm9yIGF2YWlsYWJsZSBoZWFkZXJzLgotIEFDX0NIRUNLX0hFQURFUlMoW2VuZGlhbi5oIGV4ZWNpbmZvLmggZmxvYXQuaCBmcC5oIGllZWVmcC5oIGludHR5cGVzLmggXAotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxNC1saWJ0b29sLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAxNC1saWJ0b29sLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YThmM2FmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTQtbGlidG9vbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLUZyb20gNmM0ZDBjMzAzZWJjM2UxYzdlNTU0ZDU0YThiYjgwN2Q3N2VkNDFmZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI5OjExICswNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMTQvMzZdIGxpYnRvb2wKLQotbGlic3RkYysrIGZyb20gZ2NjLXJ1bnRpbWUgZ2V0cyBjcmVhdGVkIHdpdGggLXJwYXRoPS91c3IvbGliLy4uL2xpYiBmb3IgcWVtdXg4Ni02NAotd2hlbiBydW5uaW5nIG9uIGFtIHg4Nl82NCBidWlsZCBob3N0LgotCi1UaGlzIHBhdGNoIHN0b3BzIHRoaXMgc3BlYWRpbmcgdG8gbGliZGlyIGluIHRoZSBsaWJzdGRjKysubGEgZmlsZSB3aXRoaW4gbGlidG9vbC4KLUFyZ3VhYmx5LCBpdCBzaG91bGRuJ3QgYmUgcGFzc2luZyB0aGlzIGludG8gbGlidG9vbCBpbiB0aGUgZmlyc3QgcGxhY2UgYnV0Ci1mb3Igbm93IHRoaXMgcmVzb2x2ZXMgdGhlIG5hc3RpZXN0IHByb2JsZW1zIHRoaXMgY2F1c2VzLgotCi1mdW5jX25vcm1hbF9hYnNwYXRoIHdvdWxkIHJlc29sdmUgYW4gZW1wdHkgcGF0aCB0byBgcHdkYCBzbyB3ZSBuZWVkCi10byBmaWx0ZXIgdGhlIHplcm8gY2FzZS4KLQotUlAgMjAxMi84LzI0Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gbHRtYWluLnNoIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCA3OWY5YmE4OWFmNS4uOGUyMjJmN2MxNmIgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTYzNTksNiArNjM1OSwxMCBAQCBmdW5jX21vZGVfbGluayAoKQotIAlmdW5jX3dhcm5pbmcgImlnbm9yaW5nIG11bHRpcGxlIFxgLXJwYXRoJ3MgZm9yIGEgbGlidG9vbCBsaWJyYXJ5IgotIAotICAgICAgIGluc3RhbGxfbGliZGlyPSIkMSIKLSsgICAgICBpZiB0ZXN0IC1uICIkaW5zdGFsbF9saWJkaXIiOyB0aGVuCi0rCWZ1bmNfbm9ybWFsX2Fic3BhdGggIiRpbnN0YWxsX2xpYmRpciIKLSsJaW5zdGFsbF9saWJkaXI9JGZ1bmNfbm9ybWFsX2Fic3BhdGhfcmVzdWx0Ci0rICAgICAgZmkKLSAKLSAgICAgICBvbGRsaWJzPQotICAgICAgIGlmIHRlc3QgLXogIiRycGF0aCI7IHRoZW4KLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTUtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTUtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDA2YWUyNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE1LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MyArMCwwIEBACi1Gcm9tIGM1NjYyZmYxZTdkZWEyMjkxYjljYjdhODNjZmZmMzAwMWRkMzFmNTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTozMDozMiArMDQwMAotU3ViamVjdDogW1BBVENIIDE1LzM2XSBnY2M6IGFybXY0OiBwYXNzIGZpeC12NGJ4IHRvIGxpbmtlciB0byBzdXBwb3J0IEVBQkkuCi0KLVRoZSBMSU5LX1NQRUMgZm9yIGxpbnV4IGdldHMgb3ZlcndyaXR0ZW4gYnkgbGludXgtZWFiaS5oIHdoaWNoCi1tZWFucyB0aGUgdmFsdWUgb2YgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgZ2V0cyBsb3N0IGFuZCBhcyBhIHJlc3VsdAotdGhlIG9wdGlvbiBpcyBub3QgcGFzc2VkIHRvIGxpbmtlciB3aGVuIGNob3NpbmcgbWFyY2g9YXJtdjQKLVRoaXMgcGF0Y2ggcmVkZWZpbmVzIHRoaXMgaW4gbGludXgtZWFiaS5oIGFuZCByZWluc2VydHMgaXQKLWZvciBlYWJpIGRlZmF1bHRpbmcgdG9vbGNoYWlucy4KLQotV2UgbWlnaHQgd2FudCB0byBzZW5kIGl0IHVwc3RyZWFtLgotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLS0tLQotIGdjYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCB8IDYgKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCi1pbmRleCBlNGFkZTJlMmFiMC4uMTA4ODYzZjY5ZDIgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKLSsrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAotQEAgLTkxLDEwICs5MSwxNCBAQAotICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiBcCi0gICAiL2xpYi9sZC1tdXNsLWFybSIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21mbG9hdC1hYmk9aGFyZDpoZn0uc28uMSIKLSAKLSsvKiBGb3IgYXJtdjQgd2UgcGFzcyAtLWZpeC12NGJ4IHRvIGxpbmtlciB0byBzdXBwb3J0IEVBQkkgKi8KLSsjdW5kZWYgVEFSR0VUX0ZJWF9WNEJYX1NQRUMKLSsjZGVmaW5lIFRBUkdFVF9GSVhfVjRCWF9TUEVDICIle21jcHU9YXJtOHxtY3B1PWFybTgxMHxtY3B1PXN0cm9uZ2FybSp8bWFyY2g9YXJtdjQ6IC0tZml4LXY0Ynh9IgotKwotIC8qIEF0IHRoaXMgcG9pbnQsIGJwYWJpLmggd2lsbCBoYXZlIGNsb2JiZXJlZCBMSU5LX1NQRUMuICBXZSB3YW50IHRvCi0gICAgdXNlIHRoZSBHTlUvTGludXggdmVyc2lvbiwgbm90IHRoZSBnZW5lcmljIEJQQUJJIHZlcnNpb24uICAqLwotICN1bmRlZiAgTElOS19TUEVDCi0tI2RlZmluZSBMSU5LX1NQRUMgRUFCSV9MSU5LX1NQRUMJCQkJCVwKLSsjZGVmaW5lIExJTktfU1BFQyBUQVJHRVRfRklYX1Y0QlhfU1BFQyBFQUJJX0xJTktfU1BFQwkJCVwKLSAgIExJTlVYX09SX0FORFJPSURfTEQgKExJTlVYX1RBUkdFVF9MSU5LX1NQRUMsCQkJCVwKLSAJCSAgICAgICBMSU5VWF9UQVJHRVRfTElOS19TUEVDICIgIiBBTkRST0lEX0xJTktfU1BFQykKLSAKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTYtVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTYtVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzEwY2FlYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE2LVVzZS10aGUtbXVsdGlsaWItY29uZmlnLWZpbGVzLWZyb20tQi1pbnN0ZWFkLW9mLXVzaW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDIgKzAsMCBAQAotRnJvbSBlM2I2OTNiOWQ2ZGM5NDk2ZjdjOThhMTNiMjgxODJkMjMwODQyMTVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MzM6MDQgKzA0MDAKLVN1YmplY3Q6IFtQQVRDSCAxNi8zNl0gVXNlIHRoZSBtdWx0aWxpYiBjb25maWcgZmlsZXMgZnJvbSAke0J9IGluc3RlYWQgb2YKLSB1c2luZyB0aGUgb25lcyBmcm9tICR7U30KLQotVXNlIHRoZSBtdWx0aWxpYiBjb25maWcgZmlsZXMgZnJvbSAke0J9IGluc3RlYWQgb2YgdXNpbmcgdGhlIG9uZXMgZnJvbSAke1N9Ci1zbyB0aGF0IHRoZSBzb3VyY2UgY2FuIGJlIHNoYXJlZCBiZXR3ZWVuIGdjYy1jcm9zcy1pbml0aWFsLAotZ2NjLWNyb3NzLWludGVybWVkaWF0ZSwgZ2NjLWNyb3NzLCBnY2MtcnVudGltZSwgYW5kIGFsc28gdGhlIHNkayBidWlsZC4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotLS0tCi0gZ2NjL2NvbmZpZ3VyZSAgICB8IDIyICsrKysrKysrKysrKysrKysrKy0tLS0KLSBnY2MvY29uZmlndXJlLmFjIHwgMjIgKysrKysrKysrKysrKysrKysrLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgMzYgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUgYi9nY2MvY29uZmlndXJlCi1pbmRleCAxZjFkMjJjYTY2Ni4uOTExZGUyY2YwMTcgMTAwNzU1Ci0tLS0gYS9nY2MvY29uZmlndXJlCi0rKysgYi9nY2MvY29uZmlndXJlCi1AQCAtMTIzMjEsMTAgKzEyMzIxLDIwIEBAIGRvbmUKLSB0bWFrZV9maWxlXz0KLSBmb3IgZiBpbiAke3RtYWtlX2ZpbGV9Ci0gZG8KLS0JaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCi0tCXRoZW4KLS0JCXRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLS0JZmkKLSsgIGNhc2UgJGYgaW4KLSsgICAgKi90LWxpbnV4NjQgKQotKyAgICAgICBpZiB0ZXN0IC1mIC4vY29uZmlnLyRmCi0rICAgICAgIHRoZW4KLSsgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gLi9jb25maWcvJGYiCi0rICAgICAgIGZpCi0rICAgICAgIDs7Ci0rICAgICogKQotKyAgICAgICBpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKLSsgICAgICAgdGhlbgotKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKLSsgICAgICAgZmkKLSsgICAgICAgOzsKLSsgIGVzYWMKLSBkb25lCi0gdG1ha2VfZmlsZT0iJHt0bWFrZV9maWxlX30iCi0gCi1AQCAtMTIzMzUsNiArMTIzNDUsMTAgQEAgdG1fZmlsZV9saXN0PSJvcHRpb25zLmgiCi0gdG1faW5jbHVkZV9saXN0PSJvcHRpb25zLmggaW5zbi1jb25zdGFudHMuaCIKLSBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KLSAgIGNhc2UgJGYgaW4KLSsgICAgKi9saW51eDY0LmggKQotKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuL2NvbmZpZy8kZiIKLSsgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi9jb25maWcvJGYiCi0rICAgICAgIDs7Ci0gICAgIC4vKiApCi0gICAgICAgIGY9YGVjaG8gJGYgfCBzZWQgJ3MvXi4uLy8nYAotICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAkZiIKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYwotaW5kZXggZGRjODUxOTc1ODguLmI0MTNhZTliZjI1IDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYwotKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYwotQEAgLTE5NDgsMTAgKzE5NDgsMjAgQEAgZG9uZQotIHRtYWtlX2ZpbGVfPQotIGZvciBmIGluICR7dG1ha2VfZmlsZX0KLSBkbwotLQlpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKLS0JdGhlbgotLQkJdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgotLQlmaQotKyAgY2FzZSAkZiBpbgotKyAgICAqL3QtbGludXg2NCApCi0rICAgICAgIGlmIHRlc3QgLWYgLi9jb25maWcvJGYKLSsgICAgICAgdGhlbgotKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSAuL2NvbmZpZy8kZiIKLSsgICAgICAgZmkKLSsgICAgICAgOzsKLSsgICAgKiApCi0rICAgICAgIGlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgotKyAgICAgICB0aGVuCi0rICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgotKyAgICAgICBmaQotKyAgICAgICA7OwotKyAgZXNhYwotIGRvbmUKLSB0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGVffSIKLSAKLUBAIC0xOTYyLDYgKzE5NzIsMTAgQEAgdG1fZmlsZV9saXN0PSJvcHRpb25zLmgiCi0gdG1faW5jbHVkZV9saXN0PSJvcHRpb25zLmggaW5zbi1jb25zdGFudHMuaCIKLSBmb3IgZiBpbiAkdG1fZmlsZTsgZG8KLSAgIGNhc2UgJGYgaW4KLSsgICAgKi9saW51eDY0LmggKQotKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuL2NvbmZpZy8kZiIKLSsgICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gLi9jb25maWcvJGYiCi0rICAgICAgIDs7Ci0gICAgIC4vKiApCi0gICAgICAgIGY9YGVjaG8gJGYgfCBzZWQgJ3MvXi4uLy8nYAotICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAkZiIKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTctQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTctQXZvaWQtdXNpbmctbGliZGlyLWZyb20tLmxhLXdoaWNoLXVzdWFsbHktcG9pbnRzLXRvLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWQxZDFkNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE3LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1Gcm9tIDA5ZDljY2MxZDQ3MTAyMDk0OWQxMjg1YTUyNzZmMTc1MDRmZDYwZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAwOTozOTozOCArMDAwMAotU3ViamVjdDogW1BBVENIIDE3LzM2XSBBdm9pZCB1c2luZyBsaWJkaXIgZnJvbSAubGEgd2hpY2ggdXN1YWxseSBwb2ludHMgdG8gYQotIGhvc3QgcGF0aAotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBMaXUgPG5ldDE0N0BnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbHRtYWluLnNoIHwgMyArKysKLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9sdG1haW4uc2ggYi9sdG1haW4uc2gKLWluZGV4IDhlMjIyZjdjMTZiLi4wYTkzYjRlNWMzYiAxMDA2NDQKLS0tLSBhL2x0bWFpbi5zaAotKysrIGIvbHRtYWluLnNoCi1AQCAtNTYyOCw2ICs1NjI4LDkgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgIGFic2Rpcj0iJGFic19sYWRpciIKLSAJICAgIGxpYmRpcj0iJGFic19sYWRpciIKLSAJICBlbHNlCi0rCSAgICAjIEluc3RlYWQgb2YgdXNpbmcgbGliZGlyIGZyb20gLmxhIHdoaWNoIHVzdWFsbHkgcG9pbnRzIHRvIGEgaG9zdCBwYXRoLAotKwkgICAgIyB1c2UgdGhlIHBhdGggdGhlIC5sYSBpcyBjb250YWluZWQgaW4uCi0rCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCi0gCSAgICBkaXI9IiRsaWJkaXIiCi0gCSAgICBhYnNkaXI9IiRsaWJkaXIiCi0gCSAgZmkKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTgtZXhwb3J0LUNQUC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTgtZXhwb3J0LUNQUC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGY3MjhlYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE4LWV4cG9ydC1DUFAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MyArMCwwIEBACi1Gcm9tIDk4NzMzOGNkODQ3YTcyM2RlNTMzYmIzMTdlNDUyYTYwYjFlNTIxNjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAwOTo0MDo1OSArMDAwMAotU3ViamVjdDogW1BBVENIIDE4LzM2XSBleHBvcnQgQ1BQCi0KLVRoZSBPRSBlbnZpcm9ubWVudCBzZXRzIGFuZCBleHBvcnRzIENQUCBhcyBiZWluZyB0aGUgdGFyZ2V0IGdjYy4gV2hlbgotYnVpbGRpbmcgZ2NjLWNyb3NzLWNhbmFkaWFuIGZvciBhIG1pbmd3IHRhcmdldHRlZCBzZGssIHRoZSBmb2xsb3dpbmcgY2FuIGJlIGZvdW5kCi1pbiBidWlsZC54ODZfNjQtcG9reXNkay1taW5ndzMyLmk1ODYtcG9reS1saW51eC9idWlsZC14ODZfNjQtbGludXgvbGliaWJlcnR5L2NvbmZpZy5sb2c6Ci0KLWNvbmZpZ3VyZTozNjQxOiBjaGVja2luZyBmb3IgX0ZJTEVfT0ZGU0VUX0JJVFMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcwotY29uZmlndXJlOjM2NjY6IGdjYyAgLWMgLWlzeXN0ZW0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvaW5jbHVkZSAtTzIgLXBpcGUgIGNvbmZ0ZXN0LmMgPiY1Ci1jb25maWd1cmU6MzY2NjogJD8gPSAwCi1jb25maWd1cmU6MzY5ODogcmVzdWx0OiBubwotY29uZmlndXJlOjM3ODY6IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yCi1jb25maWd1cmU6Mzg1NjogcmVzdWx0OiB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYyAtRSAtLXN5c3Jvb3Q9L21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbmF0aXZlc2RrLW1pbmd3MzItcG9reXNkay1taW5ndzMyCi1jb25maWd1cmU6Mzg3NjogeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MgLUUgLS1zeXNyb290PS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LW5hdGl2ZXNkay1taW5ndzMyLXBva3lzZGstbWluZ3czMiBjb25mdGVzdC5jCi1jb25maWd1cmU6Mzg3NjogJD8gPSAwCi0KLU5vdGUgdGhpcyBpcyBhICpidWlsZCogdGFyZ2V0IChpbiBidWlsZC14ODZfNjQtbGludXgpIHNvIGl0IHNob3VsZCBiZQotdXNpbmcgdGhlIGhvc3QgImdjYyIsIG5vdCB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYy4gU2luY2UgdGhlIG1pbmd3MzIKLWhlYWRlcnMgYXJlIHZlcnkgZGlmZmVyZW50LCB1c2luZyB0aGUgd3JvbmcgY3BwIGlzIGEgcmVhbCBwcm9ibGVtLiBJdCBpcyBsZWFraW5nCi1pbnRvIGNvbmZpZ3VyZSB0aHJvdWdoIHRoZSBDUFAgdmFyaWFibGUuIFVsdGltYXRlbHkgdGhpcyBsZWFkcyB0byBidWlsZAotZmFpbHVyZXMgcmVsYXRlZCB0byBub3QgYmVpbmcgYWJsZSB0byBpbmNsdWRlIGEgcHJvY2Vzcy5oIGZpbGUgZm9yIHBlbS11bml4LmMuCi0KLVRoZSBmaXggaXMgdG8gZW5zdXJlIHdlIGV4cG9ydCBhIHNhbmUgQ1BQIHZhbHVlIGludG8gdGhlIGJ1aWxkCi1lbnZpcm9ubWVudCB3aGVuIHVzaW5nIGJ1aWxkIHRhcmdldHMuIFdlIGNvdWxkIGRlZmluZSBhIENQUF9GT1JfQlVJTEQgdmFsdWUgd2hpY2ggbWF5IGJlCi10aGUgdmVyc2lvbiB3aGljaCBuZWVkcyB0byBiZSB1cHN0cmVhbWVkIGJ1dCBmb3Igbm93LCB0aGlzIGZpeCBpcyBnb29kIGVub3VnaCB0bwotYXZvaWQgdGhlIHByb2JsZW0uCi0KLVJQIDIyLzA4LzIwMTMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBNYWtlZmlsZS5pbiB8IDEgKwotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggNjRlMDkxYmE3MWQuLjI1NTgyMmUzZjI3IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtMTQ5LDYgKzE0OSw3IEBAIEJVSUxEX0VYUE9SVFMgPSBcCi0gCUFSPSIkKEFSX0ZPUl9CVUlMRCkiOyBleHBvcnQgQVI7IFwKLSAJQVM9IiQoQVNfRk9SX0JVSUxEKSI7IGV4cG9ydCBBUzsgXAotIAlDQz0iJChDQ19GT1JfQlVJTEQpIjsgZXhwb3J0IENDOyBcCi0rCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIjsgZXhwb3J0IENQUDsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0ZMQUdTOyBcCi0gCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCi0gCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTktRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDE5LUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1M2Y5ZTk5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMTktRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NSArMCwwIEBACi1Gcm9tIGQyN2JhNDllMmU1YzYwOGM0MzI2NTQ2MmQ2ODMxMzYzY2M3ZjU2NWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAxMDoyNToxMSArMDAwMAotU3ViamVjdDogW1BBVENIIDE5LzM2XSBFbnN1cmUgdGFyZ2V0IGdjYyBoZWFkZXJzIGNhbiBiZSBpbmNsdWRlZAotCi1UaGVyZSBhcmUgYSBmZXcgaGVhZGVycyBpbnN0YWxsZWQgYXMgcGFydCBvZiB0aGUgT3BlbkVtYmVkZGVkCi1nY2MtcnVudGltZSB0YXJnZXQgKG9tcC5oLCBzc3AvKi5oKS4gQmVpbmcgaW5zdGFsbGVkIGZyb20gYSByZWNpcGUKLWJ1aWx0IGZvciB0aGUgdGFyZ2V0IGFyY2hpdGVjdHVyZSwgdGhlc2UgYXJlIHdpdGhpbiB0aGUgdGFyZ2V0Ci1zeXNyb290IGFuZCBub3QgY3Jvc3MvbmF0aXZlc2RrOyB0aHVzIHRoZXkgd2VyZW4ndCBhYmxlIHRvIGJlCi1mb3VuZCBieSBnY2Mgd2l0aCB0aGUgZXhpc3Rpbmcgc2VhcmNoIHBhdGhzLiBBZGQgc3VwcG9ydCBmb3IKLXBpY2tpbmcgdXAgdGhlc2UgaGVhZGVycyB1bmRlciB0aGUgc3lzcm9vdCBzdXBwbGllZCBvbiB0aGUgZ2NjCi1jb21tYW5kIGxpbmUgaW4gb3JkZXIgdG8gcmVzb2x2ZSB0aGlzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL01ha2VmaWxlLmluICB8IDIgKysKLSBnY2MvY3BwZGVmYXVsdC5jIHwgNCArKysrCi0gZ2NjL2RlZmF1bHRzLmggICB8IDkgKysrKysrKysrCi0gZ2NjL2djYy5jICAgICAgICB8IDcgLS0tLS0tLQotIDQgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgNyBkZWxldGlvbnMoLSkKLQotLS0tIGEvZ2NjL01ha2VmaWxlLmluCi0rKysgYi9nY2MvTWFrZWZpbGUuaW4KLUBAIC02MTgsNiArNjE4LDcgQEAgbGliZXhlY2RpciA9IEBsaWJleGVjZGlyQAotIAotICMgRGlyZWN0b3J5IGluIHdoaWNoIHRoZSBjb21waWxlciBmaW5kcyBsaWJyYXJpZXMgZXRjLgotIGxpYnN1YmRpciA9ICQobGliZGlyKS9nY2MvJChyZWFsX3RhcmdldF9ub25jYW5vbmljYWwpLyQodmVyc2lvbikkKGFjY2VsX2Rpcl9zdWZmaXgpCi0rbGlic3ViZGlyX3RhcmdldCA9ICQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKQotICMgRGlyZWN0b3J5IGluIHdoaWNoIHRoZSBjb21waWxlciBmaW5kcyBleGVjdXRhYmxlcwotIGxpYmV4ZWNzdWJkaXIgPSAkKGxpYmV4ZWNkaXIpL2djYy8kKHJlYWxfdGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKSQoYWNjZWxfZGlyX3N1ZmZpeCkKLSAjIERpcmVjdG9yeSBpbiB3aGljaCBhbGwgcGx1Z2luIHJlc291cmNlcyBhcmUgaW5zdGFsbGVkCi1AQCAtMjg2Niw2ICsyODY3LDcgQEAgQ0ZMQUdTLWludGwubyArPSAtRExPQ0FMRURJUj1cIiQobG9jYWxlZAotIAotIFBSRVBST0NFU1NPUl9ERUZJTkVTID0gXAotICAgLURHQ0NfSU5DTFVERV9ESVI9XCIkKGxpYnN1YmRpcikvaW5jbHVkZVwiIFwKLSsgIC1ER0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVD1cIiQobGlic3ViZGlyX3RhcmdldCkvaW5jbHVkZVwiIFwKLSAgIC1ERklYRURfSU5DTFVERV9ESVI9XCIkKGxpYnN1YmRpcikvaW5jbHVkZS1maXhlZFwiIFwKLSAgIC1ER1BMVVNQTFVTX0lOQ0xVREVfRElSPVwiJChnY2NfZ3h4X2luY2x1ZGVfZGlyKVwiIFwKLSAgIC1ER1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09UPSQoZ2NjX2d4eF9pbmNsdWRlX2Rpcl9hZGRfc3lzcm9vdCkgXAotLS0tIGEvZ2NjL2NwcGRlZmF1bHQuYwotKysrIGIvZ2NjL2NwcGRlZmF1bHQuYwotQEAgLTU5LDYgKzU5LDEwIEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGUKLSAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBnY2MncyBwcml2YXRlIGhlYWRlcnMuICAqLwotICAgICB7IEdDQ19JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSAjZW5kaWYKLSsjaWZkZWYgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVAotKyAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycyB1bmRlciB0aGUgc3BlY2lmaWVkIHN5c3Jvb3QuICAqLwotKyAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VULCAiR0NDIiwgMCwgMCwgMSwgMCB9LAotKyNlbmRpZgotICNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgotICAgICAvKiAvdXNyL2xvY2FsL2luY2x1ZGUgY29tZXMgYmVmb3JlIHRoZSBmaXhpbmNsdWRlZCBoZWFkZXIgZmlsZXMuICAqLwotICAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDIwLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDIwLWdjYy00Ljgtd29uLXQtYnVpbGQtd2l0aC1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwZjk2ZDAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyMC1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSA4M2JjZDRjYzQ3YWU2Mzk3MWM4ODhjMTE3YWJkMDBkZmQ1MDY1MzJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjAgRmViIDIwMTUgMTE6MTc6MTkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyMC8zNl0gZ2NjIDQuOCsgd29uJ3QgYnVpbGQgd2l0aCAtLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZwotCi1zaW5jZSB0aGUgKi5QcG8gZmlsZXMgZG9uJ3QgZ2V0IGNyZWF0ZWQgdW5sZXNzIC0tZW5hYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcgaXMgdHJ1ZS4KLQotVGhpcyBwYXRjaCBlbnN1cmVzIHdlIG9ubHkgdXNlIHRob3NlIGNvbXBpbGVyIG9wdGlvbnMgd2hlbiBpdHMgZW5hYmxlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotKFByb2JsZW0gd2FzIGFscmVhZHkgcmVwb3J0ZWQgdXBzdHJlYW0sIGF0dGFjaGVkIHRoaXMgcGF0Y2ggdGhlcmUKLWh0dHA6Ly9nY2MuZ251Lm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9NTU5MzApCi0KLVJQCi0yMDEyLzA5LzIyCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWJhdG9taWMvTWFrZWZpbGUuYW0gfCAzICsrLQotIGxpYmF0b21pYy9NYWtlZmlsZS5pbiB8IDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJhdG9taWMvTWFrZWZpbGUuYW0gYi9saWJhdG9taWMvTWFrZWZpbGUuYW0KLWluZGV4IGMxYjdjNzM5MzRhLi5lZjQzZDYyYzA3YSAxMDA2NDQKLS0tLSBhL2xpYmF0b21pYy9NYWtlZmlsZS5hbQotKysrIGIvbGliYXRvbWljL01ha2VmaWxlLmFtCi1AQCAtMTAxLDcgKzEwMSw4IEBAIFBBVF9TCQk9ICQod29yZCAzLCQoUEFUX1NQTElUKSkKLSBJRlVOQ19ERUYJPSAtRElGVU5DX0FMVD0kKFBBVF9TKQotIElGVU5DX09QVAk9ICQod29yZCAkKFBBVF9TKSwkKElGVU5DX09QVElPTlMpKQotIAotLU1fREVQUwkJPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbwotK0BBTURFUF9UUlVFQE1fREVQUwkJPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbwotK0BBTURFUF9GQUxTRUBNX0RFUFMJCT0KLSBNX1NJWkUJCT0gLUROPSQoUEFUX04pCi0gTV9JRlVOQwkJPSAkKGlmICQoUEFUX1MpLCQoSUZVTkNfREVGKSAkKElGVU5DX09QVCkpCi0gTV9GSUxFCQk9ICQoUEFUX0JBU0UpX24uYwotZGlmZiAtLWdpdCBhL2xpYmF0b21pYy9NYWtlZmlsZS5pbiBiL2xpYmF0b21pYy9NYWtlZmlsZS5pbgotaW5kZXggMjkzMjRlM2UwYWMuLmQ1Y2RiNDI1OWVmIDEwMDY0NAotLS0tIGEvbGliYXRvbWljL01ha2VmaWxlLmluCi0rKysgYi9saWJhdG9taWMvTWFrZWZpbGUuaW4KLUBAIC00MTQsNyArNDE0LDggQEAgUEFUX04gPSAkKHdvcmQgMiwkKFBBVF9TUExJVCkpCi0gUEFUX1MgPSAkKHdvcmQgMywkKFBBVF9TUExJVCkpCi0gSUZVTkNfREVGID0gLURJRlVOQ19BTFQ9JChQQVRfUykKLSBJRlVOQ19PUFQgPSAkKHdvcmQgJChQQVRfUyksJChJRlVOQ19PUFRJT05TKSkKLS1NX0RFUFMgPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbwotK0BBTURFUF9UUlVFQE1fREVQUyA9IC1NVCAkQCAtTUQgLU1QIC1NRiAkKERFUERJUikvJChARikuUHBvCi0rQEFNREVQX0ZBTFNFQE1fREVQUyA9Ci0gTV9TSVpFID0gLUROPSQoUEFUX04pCi0gTV9JRlVOQyA9ICQoaWYgJChQQVRfUyksJChJRlVOQ19ERUYpICQoSUZVTkNfT1BUKSkKLSBNX0ZJTEUgPSAkKFBBVF9CQVNFKV9uLmMKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjEtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjEtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM2Y2EyOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDIxLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOCArMCwwIEBACi1Gcm9tIDY2N2NjOGQ0M2U4ZmI0YWMwOTY1NGVlNDA4ZGE0ODJmOTZiMDk1ODAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAzIE1hciAyMDE1IDA4OjIxOjE5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMjEvMzZdIERvbid0IHNlYXJjaCBob3N0IGRpcmVjdG9yeSBkdXJpbmcgInJlbGluayIgaWYKLSAkaW5zdF9wcmVmaXggaXMgcHJvdmlkZWQKLQotaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2xpYnRvb2wtcGF0Y2hlcy8yMDExLTAxL21zZzAwMDI2Lmh0bWwKLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGx0bWFpbi5zaCB8IDUgKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCi1pbmRleCAwYTkzYjRlNWMzYi4uNmRlNmVkMmY5YTAgMTAwNjQ0Ci0tLS0gYS9sdG1haW4uc2gKLSsrKyBiL2x0bWFpbi5zaAotQEAgLTYwMDQsMTIgKzYwMDQsMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKLSAJICAgICAgZmkKLSAJICAgIGVsc2UKLSAJICAgICAgIyBXZSBjYW5ub3Qgc2VlbSB0byBoYXJkY29kZSBpdCwgZ3Vlc3Mgd2UnbGwgZmFrZSBpdC4KLSsJICAgICAgIyBEZWZhdWx0IGlmICRsaWJkaXIgaXMgbm90IHJlbGF0aXZlIHRvIHRoZSBwcmVmaXg6Ci0gCSAgICAgIGFkZF9kaXI9Ii1MJGxpYmRpciIKLS0JICAgICAgIyBUcnkgbG9va2luZyBmaXJzdCBpbiB0aGUgbG9jYXRpb24gd2UncmUgYmVpbmcgaW5zdGFsbGVkIHRvLgotKwotIAkgICAgICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgotIAkJY2FzZSAkbGliZGlyIGluCi0gCQkgIFtcXC9dKikKLS0JCSAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgotKwkJICAgIGFkZF9kaXI9Ii1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCi0gCQkgICAgOzsKLSAJCWVzYWMKLSAJICAgICAgZmkKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjItVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjItVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDViOTE1MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDIyLVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1Gcm9tIDI3OWM0ZGU0OGUzZmQ2MWUyZjI2ODc4N2VkM2YxZDY5ZWQ5MjI0ZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyOCBBcHIgMjAxNSAyMzoxNToyNyAtMDcwMAotU3ViamVjdDogW1BBVENIIDIyLzM2XSBVc2UgU1lTVEVNTElCU19ESVIgcmVwbGFjZW1lbnQgaW5zdGVhZCBvZiBoYXJkY29kaW5nCi0gYmFzZV9saWJkaXIKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLWluZGV4IDVlOGIzNGRlZDAzLi43ZTYyOGJmNjYxZSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmgKLUBAIC0yMSw3ICsyMSw3IEBACi0gI2lmbmRlZiBHQ0NfQUFSQ0g2NF9MSU5VWF9ICi0gI2RlZmluZSBHQ0NfQUFSQ0g2NF9MSU5VWF9ICi0gCi0tI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSsjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0gCi0gI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKLSAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjMtYWFyY2g2NC1BZGQtc3VwcG9ydC1mb3ItbXVzbC1sZHNvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyMy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4MTEzMDYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyMy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1Gcm9tIDEyNzdkMTIwNTgzMzQwODc0NDM4MjhkZmQ1N2Q0NGUzYjFkZmNjOWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogVHVlLCAyOCBBcHIgMjAxNSAyMzoxODozOSAtMDcwMAotU3ViamVjdDogW1BBVENIIDIzLzM2XSBhYXJjaDY0OiBBZGQgc3VwcG9ydCBmb3IgbXVzbCBsZHNvCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaCB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1pbmRleCA3ZTYyOGJmNjYxZS4uMTcxN2NiZTU0NzEgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oCi1AQCAtMjQsNyArMjQsNyBAQAotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKLSAKLSAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgotLSNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgotKyNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAgU1lTVEVNTElCU19ESVIgImxkLW11c2wtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCi0gCi0gI3VuZGVmICBBU0FOX0NDMV9TUEVDCi0gI2RlZmluZSBBU0FOX0NDMV9TUEVDICIleyU6c2FuaXRpemUoYWRkcmVzcyk6LWZ1bndpbmQtdGFibGVzfSIKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjQtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyNC1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI5OGIwOTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyNC1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIDRhMDQ4N2FkNzVhY2NkNzgwZGQxNTVhYTU5MDg2Y2M0YjExY2ZjNDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFN1biwgNSBKdWwgMjAxNSAyMDoyNToxOCAtMDcwMAotU3ViamVjdDogW1BBVENIIDI0LzM2XSBsaWJjYzE6IGZpeCBsaWJjYzEncyBpbnN0YWxsIHBhdGggYW5kIHJwYXRoCi0KLSogSW5zdGFsbCBsaWJjYzEuc28gYW5kIGxpYmNjMXBsdWdpbi5zbyBpbnRvCi0gICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbiksIGFzIHdoYXQgd2UKLSAgaGFkIGRvbmUgdG8gbHRvLXBsdWdpbi4KLSogRml4IGJhZCBSUEFUSCBpdXNzdWU6Ci0gIGdjYy01LjIuMDogcGFja2FnZSBnY2MtcGx1Z2lucyBjb250YWlucyBiYWQgUlBBVEggL3BhdGh0L3RvL3RtcC9zeXNyb290cy9xZW11eDg2LTY0L3Vzci9saWI2NC8uLi9saWI2NCBpbiBmaWxlCi0gL3BhdGgvdG8vZ2NjLzUuMi4wLXIwL3BhY2thZ2VzLXNwbGl0L2djYy1wbHVnaW5zL3Vzci9saWI2NC9nY2MveDg2XzY0LXBva3ktbGludXgvNS4yLjAvcGx1Z2luL2xpYmNjMXBsdWdpbi5zby4wLjAuMAotIFtycGF0aHNdCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBsaWJjYzEvTWFrZWZpbGUuYW0gfCA0ICsrLS0KLSBsaWJjYzEvTWFrZWZpbGUuaW4gfCA0ICsrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYmNjMS9NYWtlZmlsZS5hbSBiL2xpYmNjMS9NYWtlZmlsZS5hbQotaW5kZXggNzJjNmFlYWQ0NzUuLjQyYTg3NzQwYjMxIDEwMDY0NAotLS0tIGEvbGliY2MxL01ha2VmaWxlLmFtCi0rKysgYi9saWJjYzEvTWFrZWZpbGUuYW0KLUBAIC0zNyw4ICszNyw4IEBAIGxpYmliZXJ0eSA9ICQoaWYgJCh3aWxkY2FyZCAkKGxpYmliZXJ0eV9ub2FzYW4pKSwkKFdjKSQobGliaWJlcnR5X25vYXNhbiksIFwKLSAJICAgICQoV2MpJChsaWJpYmVydHlfbm9ybWFsKSkpCi0gbGliaWJlcnR5X2RlcCA9ICQocGF0c3Vic3QgJChXYyklLCUsJChsaWJpYmVydHkpKQotIAotLXBsdWdpbmRpciA9ICQobGliZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKS9wbHVnaW4KLS1jYzFsaWJkaXIgPSAkKGxpYmRpcikvJChsaWJzdWZmaXgpCi0rY2MxbGliZGlyID0gJChsaWJleGVjZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKQotK3BsdWdpbmRpciA9ICQoY2MxbGliZGlyKQotIAotIGlmIEVOQUJMRV9QTFVHSU4KLSBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJjYzFwbHVnaW4ubGEgbGliY3AxcGx1Z2luLmxhCi1kaWZmIC0tZ2l0IGEvbGliY2MxL01ha2VmaWxlLmluIGIvbGliY2MxL01ha2VmaWxlLmluCi1pbmRleCA3MTA0YjY0OTAyNi4uMjEwM2M0Nzc0NjggMTAwNjQ0Ci0tLS0gYS9saWJjYzEvTWFrZWZpbGUuaW4KLSsrKyBiL2xpYmNjMS9NYWtlZmlsZS5pbgotQEAgLTM5Myw4ICszOTMsOCBAQCBsaWJpYmVydHkgPSAkKGlmICQod2lsZGNhcmQgJChsaWJpYmVydHlfbm9hc2FuKSksJChXYykkKGxpYmliZXJ0eV9ub2FzYW4pLCBcCi0gCSAgICAkKFdjKSQobGliaWJlcnR5X25vcm1hbCkpKQotIAotIGxpYmliZXJ0eV9kZXAgPSAkKHBhdHN1YnN0ICQoV2MpJSwlLCQobGliaWJlcnR5KSkKLS1wbHVnaW5kaXIgPSAkKGxpYmRpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikvcGx1Z2luCi0tY2MxbGliZGlyID0gJChsaWJkaXIpLyQobGlic3VmZml4KQotK2NjMWxpYmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikKLStwbHVnaW5kaXIgPSAkKGNjMWxpYmRpcikKLSBARU5BQkxFX1BMVUdJTl9UUlVFQHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmNjMXBsdWdpbi5sYSBsaWJjcDFwbHVnaW4ubGEKLSBARU5BQkxFX1BMVUdJTl9UUlVFQGNjMWxpYl9MVExJQlJBUklFUyA9IGxpYmNjMS5sYQotIHNoYXJlZF9zb3VyY2UgPSBjYWxsYmFja3MuY2MgY2FsbGJhY2tzLmhoIGNvbm5lY3Rpb24uY2MgY29ubmVjdGlvbi5oaCBcCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI1LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI1LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJhNjJiYzEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyNS1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjEzICswLDAgQEAKLUZyb20gYTE4M2M4MmVhMmFmOTM0YThkMzAwNTVhNzkxZGMxZDgwYzkwNjdhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6Mzk6NTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyNS8zNl0gaGFuZGxlIHN5c3Jvb3Qgc3VwcG9ydCBmb3IgbmF0aXZlc2RrLWdjYwotCi1CZWluZyBhYmxlIHRvIGJ1aWxkIGEgbmF0aXZlc2RrIGdjYyBpcyB1c2VmdWwsIHBhcnRpY3VsYXJseSBpbiBjYXNlcwotd2hlcmUgdGhlIGhvc3QgY29tcGlsZXIgbWF5IGJlIG9mIGFuIGluY29tcGF0aWJsZSB2ZXJzaW9uIChvciBhIDMyCi1iaXQgY29tcGlsZXIgaXMgbmVlZGVkKS4KLQotU2FkbHksIGJ1aWxkaW5nIG5hdGl2ZXNkay1nY2MgaXMgbm90IHN0cmFpZ2h0IGZvcndhcmQuIFdlIGluc3RhbGwKLW5hdGl2ZXNkay1nY2MgaW50byBhIHJlbG9jYXRhYmxlIGxvY2F0aW9uIGFuZCB0aGlzIG1lYW5zIHRoYXQgaXRzCi1saWJyYXJ5IGxvY2F0aW9ucyBjYW4gY2hhbmdlLiAiTm9ybWFsIiBzeXNyb290IHN1cHBvcnQgZG9lc24ndCBoZWxwCi1pbiB0aGlzIGNhc2Ugc2luY2UgdGhlIHZhbHVlcyBvZiBwYXRocyBsaWtlICJsaWJkaXIiIGNoYW5nZSwgbm90IGp1c3QKLWJhc2Ugcm9vdCBkaXJlY3Rvcnkgb2YgdGhlIHN5c3RlbS4KLQotSW4gb3JkZXIgdG8gaGFuZGxlIHRoaXMgd2UgZG8gdHdvIHRoaW5nczoKLQotYSkgQWRkICVyIGludG8gc3BlYyBmaWxlIG1hcmt1cCB3aGljaCBjYW4gYmUgdXNlZCBmb3IgaW5qZWN0ZWQgcGF0aHMKLSAgIHN1Y2ggYXMgU1lTVEVNTElCU19ESVIgKHNlZSBnY2NfbXVsdGlsaWJfc2V0dXAoKSkuCi1iKSBBZGQgb3RoZXIgcGF0aHMgd2hpY2ggbmVlZCByZWxvY2F0aW9uIGludG8gYSAuZ2NjcmVsb2NwcmVmaXggc2VjdGlvbgotICAgd2hpY2ggdGhlIHJlbG9jYXRpb24gY29kZSB3aWxsIG5vdGljZSBhbmQgYWRqdXN0IGF1dG9tYXRpY2FsbHkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotUlAgMjAxNS83LzI4Ci0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY3BwZGVmYXVsdC5jIHwgNTAgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tCi0gZ2NjL2NwcGRlZmF1bHQuaCB8ICAzICsrLQotIGdjYy9nY2MuYyAgICAgICAgfCAyMCArKysrKysrKysrKysrLS0tLS0tCi0gMyBmaWxlcyBjaGFuZ2VkLCA1MyBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy9jcHBkZWZhdWx0LmMgYi9nY2MvY3BwZGVmYXVsdC5jCi1pbmRleCA5ODBlMmJkNDdhNy4uMzliNjA1OWVmZGMgMTAwNjQ0Ci0tLS0gYS9nY2MvY3BwZGVmYXVsdC5jCi0rKysgYi9nY2MvY3BwZGVmYXVsdC5jCi1AQCAtMzUsNiArMzUsMzAgQEAKLSAjIHVuZGVmIENST1NTX0lOQ0xVREVfRElSCi0gI2VuZGlmCi0gCi0rc3RhdGljIGNoYXIgR1BMVVNQTFVTX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19JTkNMVURFX0RJUjsKLStzdGF0aWMgY2hhciBHQ0NfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR0NDX0lOQ0xVREVfRElSOwotK3N0YXRpYyBjaGFyIEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSOwotK3N0YXRpYyBjaGFyIEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVI7Ci0rc3RhdGljIGNoYXIgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUOwotKyNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgotK3N0YXRpYyBjaGFyIExPQ0FMX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IExPQ0FMX0lOQ0xVREVfRElSOwotKyNlbmRpZgotKyNpZmRlZiBQUkVGSVhfSU5DTFVERV9ESVIKLStzdGF0aWMgY2hhciBQUkVGSVhfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gUFJFRklYX0lOQ0xVREVfRElSOwotKyNlbmRpZgotKyNpZmRlZiBGSVhFRF9JTkNMVURFX0RJUgotK3N0YXRpYyBjaGFyIEZJWEVEX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEZJWEVEX0lOQ0xVREVfRElSOwotKyNlbmRpZgotKyNpZmRlZiBDUk9TU19JTkNMVURFX0RJUgotK3N0YXRpYyBjaGFyIENST1NTX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IENST1NTX0lOQ0xVREVfRElSOwotKyNlbmRpZgotKyNpZmRlZiBUT09MX0lOQ0xVREVfRElSCi0rc3RhdGljIGNoYXIgVE9PTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBUT09MX0lOQ0xVREVfRElSOwotKyNlbmRpZgotKyNpZmRlZiBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIKLStzdGF0aWMgY2hhciBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSOwotKyNlbmRpZgotKwotIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQotICNpZmRlZiBJTkNMVURFX0RFRkFVTFRTCi0gPSBJTkNMVURFX0RFRkFVTFRTOwotQEAgLTQyLDM4ICs2NiwzOCBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KLSA9IHsKLSAjaWZkZWYgR1BMVVNQTFVTX0lOQ0xVREVfRElSCi0gICAgIC8qIFBpY2sgdXAgR05VIEMrKyBnZW5lcmljIGluY2x1ZGUgZmlsZXMuICAqLwotLSAgICB7IEdQTFVTUExVU19JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCi0rICAgIHsgR1BMVVNQTFVTX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKLSAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIKLSAgICAgLyogUGljayB1cCBHTlUgQysrIHRhcmdldC1kZXBlbmRlbnQgaW5jbHVkZSBmaWxlcy4gICovCi0tICAgIHsgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAotKyAgICB7IEdQTFVTUExVU19UT09MX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKLSAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDEgfSwKLSAjZW5kaWYKLSAjaWZkZWYgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSCi0gICAgIC8qIFBpY2sgdXAgR05VIEMrKyBiYWNrd2FyZCBhbmQgZGVwcmVjYXRlZCBpbmNsdWRlIGZpbGVzLiAgKi8KLS0gICAgeyBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVIsICJHKysiLCAxLCAxLAotKyAgICB7IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUlZBUiwgIkcrKyIsIDEsIDEsCi0gICAgICAgR1BMVVNQTFVTX0lOQ0xVREVfRElSX0FERF9TWVNST09ULCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIEdDQ19JTkNMVURFX0RJUgotICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycy4gICovCi0tICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAotKyAgICB7IEdDQ19JTkNMVURFX0RJUlZBUiwgIkdDQyIsIDAsIDAsIDAsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVAotICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycyB1bmRlciB0aGUgc3BlY2lmaWVkIHN5c3Jvb3QuICAqLwotLSAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VULCAiR0NDIiwgMCwgMCwgMSwgMCB9LAotKyAgICB7IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMlZBUiwgIkdDQyIsIDAsIDAsIDEsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKLSAgICAgLyogL3Vzci9sb2NhbC9pbmNsdWRlIGNvbWVzIGJlZm9yZSB0aGUgZml4aW5jbHVkZWQgaGVhZGVyIGZpbGVzLiAgKi8KLS0gICAgeyBMT0NBTF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMSwgMiB9LAotLSAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAwIH0sCi0rICAgIHsgTE9DQUxfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDEsIDIgfSwKLSsgICAgeyBMT0NBTF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMSwgMCB9LAotICNlbmRpZgotICNpZmRlZiBQUkVGSVhfSU5DTFVERV9ESVIKLS0gICAgeyBQUkVGSVhfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDAsIDAgfSwKLSsgICAgeyBQUkVGSVhfSU5DTFVERV9ESVJWQVIsIDAsIDAsIDEsIDAsIDAgfSwKLSAjZW5kaWYKLSAjaWZkZWYgRklYRURfSU5DTFVERV9ESVIKLSAgICAgLyogVGhpcyBpcyB0aGUgZGlyIGZvciBmaXhpbmNsdWRlcy4gICovCi0tICAgIHsgRklYRURfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLAotKyAgICB7IEZJWEVEX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwKLSAgICAgICAvKiBBIG11bHRpbGliIHN1ZmZpeCBuZWVkcyBhZGRpbmcgaWYgZGlmZmVyZW50IG11bHRpbGlicyB1c2UKLSAJIGRpZmZlcmVudCBoZWFkZXJzLiAgKi8KLSAjaWZkZWYgU1lTUk9PVF9IRUFERVJTX1NVRkZJWF9TUEVDCi1AQCAtODUsMTYgKzEwOSwxNiBAQCBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KLSAjZW5kaWYKLSAjaWZkZWYgQ1JPU1NfSU5DTFVERV9ESVIKLSAgICAgLyogT25lIHBsYWNlIHRoZSB0YXJnZXQgc3lzdGVtJ3MgaGVhZGVycyBtaWdodCBiZS4gICovCi0tICAgIHsgQ1JPU1NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0rICAgIHsgQ1JPU1NfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIFRPT0xfSU5DTFVERV9ESVIKLSAgICAgLyogQW5vdGhlciBwbGFjZSB0aGUgdGFyZ2V0IHN5c3RlbSdzIGhlYWRlcnMgbWlnaHQgYmUuICAqLwotLSAgICB7IFRPT0xfSU5DTFVERV9ESVIsICJCSU5VVElMUyIsIDAsIDEsIDAsIDAgfSwKLSsgICAgeyBUT09MX0lOQ0xVREVfRElSVkFSLCAiQklOVVRJTFMiLCAwLCAxLCAwLCAwIH0sCi0gI2VuZGlmCi0gI2lmZGVmIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUgotICAgICAvKiAvdXNyL2luY2x1ZGUgY29tZXMgZGVhZCBsYXN0LiAgKi8KLS0gICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMiB9LAotLSAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAwIH0sCi0rICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDIgfSwKLSsgICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVJWQVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMCB9LAotICNlbmRpZgotICAgICB7IDAsIDAsIDAsIDAsIDAsIDAgfQotICAgfTsKLWRpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5oIGIvZ2NjL2NwcGRlZmF1bHQuaAotaW5kZXggZTJkOTZmMWU3NjAuLjI5ZmE1ZjgxNWM4IDEwMDY0NAotLS0tIGEvZ2NjL2NwcGRlZmF1bHQuaAotKysrIGIvZ2NjL2NwcGRlZmF1bHQuaAotQEAgLTMzLDcgKzMzLDggQEAKLSAKLSBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlCi0gewotLSAgY29uc3QgY2hhciAqY29uc3QgZm5hbWU7CS8qIFRoZSBuYW1lIG9mIHRoZSBkaXJlY3RvcnkuICAqLwotKyAgY29uc3QgY2hhciAqZm5hbWU7ICAgICAvKiBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5LiAgKi8KLSsKLSAgIGNvbnN0IGNoYXIgKmNvbnN0IGNvbXBvbmVudDsJLyogVGhlIGNvbXBvbmVudCBjb250YWluaW5nIHRoZSBkaXJlY3RvcnkKLSAJCQkJICAgKHNlZSB1cGRhdGVfcGF0aCBpbiBwcmVmaXguYykgKi8KLSAgIGNvbnN0IGNoYXIgY3BsdXNwbHVzOwkJLyogT25seSBsb29rIGhlcmUgaWYgd2UncmUgY29tcGlsaW5nIEMrKy4gICovCi1kaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCi1pbmRleCAxYTM3MDRiMjc2My4uZGIwZTI5MzQwMzggMTAwNjQ0Ci0tLS0gYS9nY2MvZ2NjLmMKLSsrKyBiL2djYy9nY2MuYwotQEAgLTI1Myw2ICsyNTMsOCBAQCBGSUxFICpyZXBvcnRfdGltZXNfdG9fZmlsZSA9IE5VTEw7Ci0gI2VuZGlmCi0gc3RhdGljIGNvbnN0IGNoYXIgKnRhcmdldF9zeXN0ZW1fcm9vdCA9IERFRkFVTFRfVEFSR0VUX1NZU1RFTV9ST09UOwotIAotK3N0YXRpYyBjaGFyIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1lTVEVNTElCU19ESVI7Ci0rCi0gLyogTm9uemVybyBtZWFucyBwYXNzIHRoZSB1cGRhdGVkIHRhcmdldF9zeXN0ZW1fcm9vdCB0byB0aGUgY29tcGlsZXIuICAqLwotIAotIHN0YXRpYyBpbnQgdGFyZ2V0X3N5c3RlbV9yb290X2NoYW5nZWQ7Ci1AQCAtNTI3LDYgKzUyOSw3IEBAIG9yIHdpdGggY29uc3RhbnQgdGV4dCBpbiBhIHNpbmdsZSBhcmd1bWVudC4KLSAgJUcgICAgIHByb2Nlc3MgTElCR0NDX1NQRUMgYXMgYSBzcGVjLgotICAlUiAgICAgT3V0cHV0IHRoZSBjb25jYXRlbmF0aW9uIG9mIHRhcmdldF9zeXN0ZW1fcm9vdCBhbmQKLSAgICAgICAgIHRhcmdldF9zeXNyb290X3N1ZmZpeC4KLSsgJXIgICAgIE91dHB1dCB0aGUgYmFzZSBwYXRoIHRhcmdldF9yZWxvY2F0YWJsZV9wcmVmaXgKLSAgJVMgICAgIHByb2Nlc3MgU1RBUlRGSUxFX1NQRUMgYXMgYSBzcGVjLiAgQSBjYXBpdGFsIFMgaXMgYWN0dWFsbHkgdXNlZCBoZXJlLgotICAlRSAgICAgcHJvY2VzcyBFTkRGSUxFX1NQRUMgYXMgYSBzcGVjLiAgQSBjYXBpdGFsIEUgaXMgYWN0dWFsbHkgdXNlZCBoZXJlLgotICAlQyAgICAgcHJvY2VzcyBDUFBfU1BFQyBhcyBhIHNwZWMuCi1AQCAtMTQ5MywxMCArMTQ5NiwxMCBAQCBzdGF0aWMgY29uc3QgY2hhciAqZ2NjX2xpYmV4ZWNfcHJlZml4OwotICAgIGdjY19leGVjX3ByZWZpeCBpcyBzZXQgYmVjYXVzZSwgaW4gdGhhdCBjYXNlLCB3ZSBrbm93IHdoZXJlIHRoZQotICAgIGNvbXBpbGVyIGhhcyBiZWVuIGluc3RhbGxlZCwgYW5kIHVzZSBwYXRocyByZWxhdGl2ZSB0byB0aGF0Ci0gICAgbG9jYXRpb24gaW5zdGVhZC4gICovCi0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2V4ZWNfcHJlZml4ID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2xpYmV4ZWNfcHJlZml4ID0gU1RBTkRBUkRfTElCRVhFQ19QUkVGSVg7Ci0tc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX2JpbmRpcl9wcmVmaXggPSBTVEFOREFSRF9CSU5ESVJfUFJFRklYOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKLStzdGF0aWMgY2hhciBzdGFuZGFyZF9leGVjX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9FWEVDX1BSRUZJWDsKLStzdGF0aWMgY2hhciBzdGFuZGFyZF9saWJleGVjX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9MSUJFWEVDX1BSRUZJWDsKLStzdGF0aWMgY2hhciBzdGFuZGFyZF9iaW5kaXJfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNUQU5EQVJEX0JJTkRJUl9QUkVGSVg7Ci0rc3RhdGljIGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXggPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYOwotIAotIC8qIEZvciBuYXRpdmUgY29tcGlsZXJzLCB0aGVzZSBhcmUgd2VsbC1rbm93biBwYXRocyBjb250YWluaW5nCi0gICAgY29tcG9uZW50cyB0aGF0IG1heSBiZSBwcm92aWRlZCBieSB0aGUgc3lzdGVtLiAgRm9yIGNyb3NzCi1AQCAtMTUwNCw5ICsxNTA3LDkgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXggPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYOwotIHN0YXRpYyBjb25zdCBjaGFyICptZF9leGVjX3ByZWZpeCA9IE1EX0VYRUNfUFJFRklYOwotIHN0YXRpYyBjb25zdCBjaGFyICptZF9zdGFydGZpbGVfcHJlZml4ID0gTURfU1RBUlRGSUxFX1BSRUZJWDsKLSBzdGF0aWMgY29uc3QgY2hhciAqbWRfc3RhcnRmaWxlX3ByZWZpeF8xID0gTURfU1RBUlRGSUxFX1BSRUZJWF8xOwotLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzEKLStzdGF0aWMgY2hhciBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4XzFbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpCi0gICA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMTsKLS1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8yCi0rc3RhdGljIGNoYXIgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8yWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKQotICAgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzI7Ci0gCi0gLyogQSByZWxhdGl2ZSBwYXRoIHRvIGJlIHVzZWQgaW4gZmluZGluZyB0aGUgbG9jYXRpb24gb2YgdG9vbHMKLUBAIC01OTE1LDYgKzU5MTgsMTEgQEAgZG9fc3BlY18xIChjb25zdCBjaGFyICpzcGVjLCBpbnQgaW5zd2l0Y2gsIGNvbnN0IGNoYXIgKnNvZnRfbWF0Y2hlZF9wYXJ0KQotIAkgICAgICB9Ci0gCSAgICBicmVhazsKLSAKLSsgICAgICAgICAgY2FzZSAncic6Ci0rICAgICAgICAgICAgICBvYnN0YWNrX2dyb3cgKCZvYnN0YWNrLCB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4LAotKwkJICAgICAgc3RybGVuICh0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4KSk7Ci0rICAgICAgICAgICAgYnJlYWs7Ci0rCi0gCSAgY2FzZSAnUyc6Ci0gCSAgICB2YWx1ZSA9IGRvX3NwZWNfMSAoc3RhcnRmaWxlX3NwZWMsIDAsIE5VTEwpOwotIAkgICAgaWYgKHZhbHVlICE9IDApCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI2LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI2LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZkZTIwNmUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyNi1TZWFyY2gtdGFyZ2V0LXN5c3Jvb3QtZ2NjLXZlcnNpb24tc3BlY2lmaWMtZGlycy13aXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAyICswLDAgQEAKLUZyb20gZGFiNGRiMTRlMzE5ZjMyMzlhMmI0YzdkMWZiZjI5NzE5MzZlMjdiYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6NDE6NDUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyNi8zNl0gU2VhcmNoIHRhcmdldCBzeXNyb290IGdjYyB2ZXJzaW9uIHNwZWNpZmljIGRpcnMgd2l0aAotIG11bHRpbGliLgotCi1XZSBpbnN0YWxsIHRoZSBnY2MgbGlicmFyaWVzIChzdWNoIGFzIGNydGJlZ2luLnApIGludG8KLTxzeXNyb290PjxsaWJkaXI+Lzx0YXJnZXQtc3lzPi81LjIuMC8KLXdoaWNoIGlzIGEgZGVmYXVsdCBzZWFyY2ggcGF0aCBmb3IgR0NDIChha2EgbXVsdGlfc3VmZml4IGluIHRoZQotY29kZSBiZWxvdykuIDx0YXJnZXQtc3lzPiBpcyAnbWFjaGluZScgaW4gZ2NjJ3MgdGVybWlub2xvZ3kuIFdlIHVzZQotdGhlc2UgZGlyZWN0b3JpZXMgc28gdGhhdCBtdWx0aXBsZSBnY2MgdmVyc2lvbnMgY291bGQgaW4gdGhlb3J5Ci1jby1leGlzdCBvbiB0YXJnZXQuCi0KLVdlIG9ubHkgd2FudCB0byBidWlsZCBvbmUgZ2NjLWNyb3NzLWNhbmFkaWFuIHBlciBhcmNoIGFuZCBoYXZlIHRoaXMgd29yawotZm9yIGFsbCBtdWx0aWxpYnMuIDx0YXJnZXQtc3lzPiBjYW4gYmUgaGFuZGxlZCBieSBtYXBwaW5nIHRoZSBtdWx0aWxpYgotPHRhcmdldC1zeXM+IHRvIHRoZSBvbmUgdXNlZCBieSBnY2MtY3Jvc3MtY2FuYWRpYW4sIGUuZy4KLW1pcHM2NC1wb2xrbWxsaWIzMi1saW51eAotaXMgc3ltbGlua2VkIHRvIGJ5IG1pcHM2NC1wb2t5LWxpbnV4LgotCi1UaGUgZGVmYXVsdCBnY2Mgc2VhcmNoIHBhdGggaW4gdGhlIHRhcmdldCBzeXNyb290IGZvciBhICJsaWI2NCIgbXV0bGlsaWIKLWlzOgotCi08c3lzcm9vdD4vbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvCi08c3lzcm9vdD4vdXNyL2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC8KLTxzeXNyb290Pi9saWIzMi8KLTxzeXNyb290Pi91c3IvbGliMzIvCi0KLXdoaWNoIG1lYW5zIHRoYXQgdGhlIGxpYjMyIGNydGJlZ2luLm8gd2lsbCBiZSBmb3VuZCBhbmQgdGhlIGxpYjY0IG9uZXMKLXdpbGwgbm90IHdoaWNoIGxlYWRzIHRvIGNvbXBpbGVyIGZhaWx1cmVzLgotCi1UaGlzIHBhdGNoIGluamVjdHMgYSBtdWx0aWxpYiB2ZXJzaW9uIG9mIHRoYXQgcGF0aCBmaXJzdCBzbyB0aGUgbGliNjQKLWJpbmFyaWVzIGNhbiBiZSBmb3VuZCBmaXJzdC4gV2l0aCB0aGlzIGNoYW5nZSB0aGUgc2VhcmNoIHBhdGggYmVjb21lczoKLQotPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0L21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLwotPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC9taXBzNjQtcG9reS1saW51eC81LjIuMC8KLTxzeXNyb290Pi91c3IvbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCi08c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0LwotPHN5c3Jvb3Q+L2xpYjMyLwotPHN5c3Jvb3Q+L3Vzci9saWIzMi8KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1SUCAyMDE1LzcvMzEKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9nY2MuYyB8IDI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYwotaW5kZXggZGIwZTI5MzQwMzguLjFjMjFkMWIwOGViIDEwMDY0NAotLS0tIGEvZ2NjL2djYy5jCi0rKysgYi9nY2MvZ2NjLmMKLUBAIC0yNjEwLDcgKzI2MTAsNyBAQCBmb3JfZWFjaF9wYXRoIChjb25zdCBzdHJ1Y3QgcGF0aF9wcmVmaXggKnBhdGhzLAotICAgICAgIGlmIChwYXRoID09IE5VTEwpCi0gCXsKLSAJICBsZW4gPSBwYXRocy0+bWF4X2xlbiArIGV4dHJhX3NwYWNlICsgMTsKLS0JICBsZW4gKz0gTUFYIChNQVggKHN1ZmZpeF9sZW4sIG11bHRpX29zX2Rpcl9sZW4pLCBtdWx0aWFyY2hfbGVuKTsKLSsJICBsZW4gKz0gTUFYICgoc3VmZml4X2xlbiArIG11bHRpX29zX2Rpcl9sZW4pLCBtdWx0aWFyY2hfbGVuKTsKLSAJICBwYXRoID0gWE5FV1ZFQyAoY2hhciwgbGVuKTsKLSAJfQotIAotQEAgLTI2MjIsNiArMjYyMiwzMyBAQCBmb3JfZWFjaF9wYXRoIChjb25zdCBzdHJ1Y3QgcGF0aF9wcmVmaXggKnBhdGhzLAotIAkgIC8qIExvb2sgZmlyc3QgaW4gTUFDSElORS9WRVJTSU9OIHN1YmRpcmVjdG9yeS4gICovCi0gCSAgaWYgKCFza2lwX211bHRpX2RpcikKLSAJICAgIHsKLSsJICAgICAgaWYgKCEocGwtPm9zX211bHRpbGliID8gc2tpcF9tdWx0aV9vc19kaXIgOiBza2lwX211bHRpX2RpcikpCi0rCSAgICAgICAgewotKwkgICAgICAgICAgY29uc3QgY2hhciAqdGhpc19tdWx0aTsKLSsJICAgICAgICAgIHNpemVfdCB0aGlzX211bHRpX2xlbjsKLSsKLSsJICAgICAgICAgIGlmIChwbC0+b3NfbXVsdGlsaWIpCi0rCQkgICAgewotKwkJICAgICAgdGhpc19tdWx0aSA9IG11bHRpX29zX2RpcjsKLSsJCSAgICAgIHRoaXNfbXVsdGlfbGVuID0gbXVsdGlfb3NfZGlyX2xlbjsKLSsJCSAgICB9Ci0rCSAgICAgICAgICBlbHNlCi0rCQkgICAgewotKwkJICAgICAgdGhpc19tdWx0aSA9IG11bHRpX2RpcjsKLSsJCSAgICAgIHRoaXNfbXVsdGlfbGVuID0gbXVsdGlfZGlyX2xlbjsKLSsJCSAgICB9Ci0rCi0rCSAgICAgICAgICAvKiBMb29rIGluIG11bHRpbGliIE1BQ0hJTkUvVkVSU0lPTiBzdWJkaXJlY3RvcnkgZmlyc3QgKi8KLSsJICAgICAgICAgIGlmICh0aGlzX211bHRpX2xlbikKLSsJICAgICAgICAgICAgewotKwkJICAgICAgbWVtY3B5IChwYXRoICsgbGVuLCB0aGlzX211bHRpLCB0aGlzX211bHRpX2xlbiArIDEpOwotKwkgICAgICAgICAgICAgIG1lbWNweSAocGF0aCArIGxlbiArIHRoaXNfbXVsdGlfbGVuLCBtdWx0aV9zdWZmaXgsIHN1ZmZpeF9sZW4gKyAxKTsKLSsJICAgICAgICAgICAgICByZXQgPSBjYWxsYmFjayAocGF0aCwgY2FsbGJhY2tfaW5mbyk7Ci0rCSAgICAgICAgICAgICAgICBpZiAocmV0KQotKwkJICAgICAgICAgIGJyZWFrOwotKwkgICAgICAgICAgICB9Ci0rCSAgICAgICAgfQotKwotIAkgICAgICBtZW1jcHkgKHBhdGggKyBsZW4sIG11bHRpX3N1ZmZpeCwgc3VmZml4X2xlbiArIDEpOwotIAkgICAgICByZXQgPSBjYWxsYmFjayAocGF0aCwgY2FsbGJhY2tfaW5mbyk7Ci0gCSAgICAgIGlmIChyZXQpCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI3LUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyNy1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWQ4OWU4ZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI3LUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTM3ICswLDAgQEAKLUZyb20gOGU4NGJiMDlkMmI3YTYwNDg3YTMwZTQzOGJiMTA5ZjMxYzJjMjU0YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6NDI6NDUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAyNy8zNl0gRml4IHZhcmlvdXMgX0ZPUl9CVUlMRCBhbmQgcmVsYXRlZCB2YXJpYWJsZXMKLQotV2hlbiBkb2luZyBhIEZPUl9CVUlMRCB0aGluZywgeW91IGhhdmUgdG8gb3ZlcnJpZGUgQ0ZMQUdTIHdpdGgKLUNGTEFHU19GT1JfQlVJTEQuIEFuZCBpZiB5b3UgdXNlIEMrKywgeW91IGFsc28gaGF2ZSB0byBvdmVycmlkZQotQ1hYRkxBR1Mgd2l0aCBDWFhGTEFHU19GT1JfQlVJTEQuCi1XaXRob3V0IHRoaXMsIHdoZW4gYnVpbGRpbmcgZm9yIG1pbmd3LCB5b3UgZW5kIHVwIHRyeWluZyB0byB1c2UKLXRoZSBtaW5ndyBoZWFkZXJzIGZvciBhIGhvc3QgYnVpbGQuCi0KLVRoZSBzYW1lIGdvZXMgZm9yIG90aGVyIHZhcmlhYmxlcyBhcyB3ZWxsLCBzdWNoIGFzIENQUEZMQUdTLAotQ1BQLCBhbmQgR01QSU5DLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogUGV0ZXIgU2VlYmFjaCA8cGV0ZXIuc2VlYmFjaEB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmluICAgICAgfCA2ICsrKysrKwotIE1ha2VmaWxlLnRwbCAgICAgfCA1ICsrKysrCi0gZ2NjL01ha2VmaWxlLmluICB8IDIgKy0KLSBnY2MvY29uZmlndXJlICAgIHwgMiArLQotIGdjYy9jb25maWd1cmUuYWMgfCAyICstCi0gNSBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggMjU1ODIyZTNmMjcuLjlkYzBkZmYwNDc0IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtMTUyLDYgKzE1Miw3IEBAIEJVSUxEX0VYUE9SVFMgPSBcCi0gCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIjsgZXhwb3J0IENQUDsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0ZMQUdTOyBcCi0gCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1BQRkxBR1M7IFwKLSAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAotIAlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENYWEZMQUdTOyBcCi0gCUdGT1JUUkFOPSIkKEdGT1JUUkFOX0ZPUl9CVUlMRCkiOyBleHBvcnQgR0ZPUlRSQU47IFwKLUBAIC0xNzEsNiArMTcyLDkgQEAgQlVJTERfRVhQT1JUUyA9IFwKLSAjIGJ1aWx0IGZvciB0aGUgYnVpbGQgc3lzdGVtIHRvIG92ZXJyaWRlIHRob3NlIGluIEJBU0VfRkxBR1NfVE9fUEFTUy4KLSBFWFRSQV9CVUlMRF9GTEFHUyA9IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSsJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiIFwKLSsJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSIgXAotIAlMREZMQUdTPSIkKExERkxBR1NfRk9SX0JVSUxEKSIKLSAKLSAjIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gYnVpbHQgZm9yIHRoZSBob3N0IHN5c3RlbS4KLUBAIC0xODgsNiArMTkyLDcgQEAgSE9TVF9TVUJESVIgPSBAaG9zdF9zdWJkaXJACi0gSE9TVF9FWFBPUlRTID0gXAotIAkkKEJBU0VfRVhQT1JUUykgXAotIAlDQz0iJChDQykiOyBleHBvcnQgQ0M7IFwKLSsJQ1BQPSIkKENDKSAtRSI7IGV4cG9ydCBDUFA7IFwKLSAJQURBX0NGTEFHUz0iJChBREFfQ0ZMQUdTKSI7IGV4cG9ydCBBREFfQ0ZMQUdTOyBcCi0gCUNGTEFHUz0iJChDRkxBR1MpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotQEAgLTc3NSw2ICs3ODAsNyBAQCBCQVNFX0ZMQUdTX1RPX1BBU1MgPSBcCi0gCSJDQ19GT1JfQlVJTEQ9JChDQ19GT1JfQlVJTEQpIiBcCi0gCSJDRkxBR1NfRk9SX0JVSUxEPSQoQ0ZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJIkNYWF9GT1JfQlVJTEQ9JChDWFhfRk9SX0JVSUxEKSIgXAotKwkiQ1hYRkxBR1NfRk9SX0JVSUxEPSQoQ1hYRkxBR1NfRk9SX0JVSUxEKSIgXAotIAkiRVhQRUNUPSQoRVhQRUNUKSIgXAotIAkiRkxFWD0kKEZMRVgpIiBcCi0gCSJJTlNUQUxMPSQoSU5TVEFMTCkiIFwKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS50cGwgYi9NYWtlZmlsZS50cGwKLWluZGV4IDQxY2FlNThhMjY3Li5kM2Y2Yjc5YWNkYyAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLnRwbAotKysrIGIvTWFrZWZpbGUudHBsCi1AQCAtMTU0LDYgKzE1NCw3IEBAIEJVSUxEX0VYUE9SVFMgPSBcCi0gCUNDPSIkKENDX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0M7IFwKLSAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENGTEFHUzsgXAotIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAotKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENQUEZMQUdTOyBcCi0gCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKLSAJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFhGTEFHUzsgXAotIAlHRk9SVFJBTj0iJChHRk9SVFJBTl9GT1JfQlVJTEQpIjsgZXhwb3J0IEdGT1JUUkFOOyBcCi1AQCAtMTczLDYgKzE3NCw5IEBAIEJVSUxEX0VYUE9SVFMgPSBcCi0gIyBidWlsdCBmb3IgdGhlIGJ1aWxkIHN5c3RlbSB0byBvdmVycmlkZSB0aG9zZSBpbiBCQVNFX0ZMQUdTX1RPX1BBU1MuCi0gRVhUUkFfQlVJTERfRkxBR1MgPSBcCi0gCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSIgXAotKwlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCi0rCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIiBcCi0rCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiIFwKLSAJTERGTEFHUz0iJChMREZMQUdTX0ZPUl9CVUlMRCkiCi0gCi0gIyBUaGlzIGlzIHRoZSBsaXN0IG9mIGRpcmVjdG9yaWVzIHRvIGJ1aWx0IGZvciB0aGUgaG9zdCBzeXN0ZW0uCi1AQCAtMTkwLDYgKzE5NCw3IEBAIEhPU1RfU1VCRElSID0gQGhvc3Rfc3ViZGlyQAotIEhPU1RfRVhQT1JUUyA9IFwKLSAJJChCQVNFX0VYUE9SVFMpIFwKLSAJQ0M9IiQoQ0MpIjsgZXhwb3J0IENDOyBcCi0rCUNQUD0iJChDQykgLUUiOyBleHBvcnQgQ1BQOyBcCi0gCUFEQV9DRkxBR1M9IiQoQURBX0NGTEFHUykiOyBleHBvcnQgQURBX0NGTEFHUzsgXAotIAlDRkxBR1M9IiQoQ0ZMQUdTKSI7IGV4cG9ydCBDRkxBR1M7IFwKLSAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKLWRpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KLWluZGV4IDIxNDcyNzQ1YzJjLi44YzkzZjAzZmZkYyAxMDA2NDQKLS0tLSBhL2djYy9NYWtlZmlsZS5pbgotKysrIGIvZ2NjL01ha2VmaWxlLmluCi1AQCAtODA1LDcgKzgwNSw3IEBAIEJVSUxEX0xERkxBR1M9QEJVSUxEX0xERkxBR1NACi0gQlVJTERfTk9fUElFX0ZMQUcgPSBAQlVJTERfTk9fUElFX0ZMQUdACi0gQlVJTERfTERGTEFHUyArPSAkKEJVSUxEX05PX1BJRV9GTEFHKQotIEJVSUxEX0NQUEZMQUdTPSAtSS4gLUkkKEBEKSAtSSQoc3JjZGlyKSAtSSQoc3JjZGlyKS8kKEBEKSBcCi0tCQktSSQoc3JjZGlyKS8uLi9pbmNsdWRlIEBJTkNJTlRMQCAkKENQUElOQykgJChDUFBGTEFHUykKLSsJCS1JJChzcmNkaXIpLy4uL2luY2x1ZGUgQElOQ0lOVExAICQoQ1BQSU5DKSAkKENQUEZMQUdTX0ZPUl9CVUlMRCkKLSAKLSAjIEFjdHVhbCBuYW1lIHRvIHVzZSB3aGVuIGluc3RhbGxpbmcgYSBuYXRpdmUgY29tcGlsZXIuCi0gR0NDX0lOU1RBTExfTkFNRSA6PSAkKHNoZWxsIGVjaG8gZ2NjfHNlZCAnJChwcm9ncmFtX3RyYW5zZm9ybV9uYW1lKScpCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDkxMWRlMmNmMDE3Li4zMjVhY2UzNGNkZiAxMDA3NTUKLS0tLSBhL2djYy9jb25maWd1cmUKLSsrKyBiL2djYy9jb25maWd1cmUKLUBAIC0xMTk2NSw3ICsxMTk2NSw3IEBAIGVsc2UKLSAJQ0M9IiR7Q0NfRk9SX0JVSUxEfSIgQ0ZMQUdTPSIke0NGTEFHU19GT1JfQlVJTER9IiBcCi0gCUNYWD0iJHtDWFhfRk9SX0JVSUxEfSIgQ1hYRkxBR1M9IiR7Q1hYRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlMRD0iJHtMRF9GT1JfQlVJTER9IiBMREZMQUdTPSIke0xERkxBR1NfRk9SX0JVSUxEfSIgXAotLQlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSsJR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTX0ZPUl9CVUlMRH0gLURHRU5FUkFUT1JfRklMRSIgXAotIAkke3JlYWxzcmNkaXJ9L2NvbmZpZ3VyZSBcCi0gCQktLWVuYWJsZS1sYW5ndWFnZXM9JHtlbmFibGVfbGFuZ3VhZ2VzLWFsbH0gXAotIAkJLS10YXJnZXQ9JHRhcmdldF9hbGlhcyAtLWhvc3Q9JGJ1aWxkX2FsaWFzIC0tYnVpbGQ9JGJ1aWxkX2FsaWFzCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IGI0MTNhZTliZjI1Li43MmE2Yzk1MTIxYiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC0xNzQzLDcgKzE3NDMsNyBAQCBlbHNlCi0gCUNDPSIke0NDX0ZPUl9CVUlMRH0iIENGTEFHUz0iJHtDRkxBR1NfRk9SX0JVSUxEfSIgXAotIAlDWFg9IiR7Q1hYX0ZPUl9CVUlMRH0iIENYWEZMQUdTPSIke0NYWEZMQUdTX0ZPUl9CVUlMRH0iIFwKLSAJTEQ9IiR7TERfRk9SX0JVSUxEfSIgTERGTEFHUz0iJHtMREZMQUdTX0ZPUl9CVUlMRH0iIFwKLS0JR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTfSAtREdFTkVSQVRPUl9GSUxFIiBcCi0rCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU19GT1JfQlVJTER9IC1ER0VORVJBVE9SX0ZJTEUiIFwKLSAJJHtyZWFsc3JjZGlyfS9jb25maWd1cmUgXAotIAkJLS1lbmFibGUtbGFuZ3VhZ2VzPSR7ZW5hYmxlX2xhbmd1YWdlcy1hbGx9IFwKLSAJCS0tdGFyZ2V0PSR0YXJnZXRfYWxpYXMgLS1ob3N0PSRidWlsZF9hbGlhcyAtLWJ1aWxkPSRidWlsZF9hbGlhcwotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyOC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMjgtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg0ZDkyYTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyOC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gNTY0N2Y3NzNlMjhiNTI4YTY3ODAwZWYwNmNhNDQ3MzBmOWY1ZGM3ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDIgRmViIDIwMTYgMTA6MjY6MTAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAyOC8zNl0gbmlvczI6IERlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBNYXJlayBWYXN1dCA8bWFyZXhAZGVueC5kZT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlnL25pb3MyL2xpbnV4LmggfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbmlvczIvbGludXguaCBiL2djYy9jb25maWcvbmlvczIvbGludXguaAotaW5kZXggNjk4NzM0YWRkMzUuLmVlZWU2MGVjZmVhIDEwMDY0NAotLS0tIGEvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oCi0rKysgYi9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKLUBAIC0zMCw2ICszMCw3IEBACi0gI2RlZmluZSBDUFBfU1BFQyAiJXtwb3NpeDotRF9QT1NJWF9TT1VSQ0V9ICV7cHRocmVhZDotRF9SRUVOVFJBTlR9IgotIAotICNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXgtbmlvczIuc28uMSIKLSsjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgICIvbGliL2xkLW11c2wtbmlvczIuc28uMSIKLSAKLSAjdW5kZWYgTElOS19TUEVDCi0gI2RlZmluZSBMSU5LX1NQRUMgTElOS19TUEVDX0VORElBTiBcCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI5LUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDI5LUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQxOWU1YTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAyOS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODcgKzAsMCBAQAotRnJvbSA0NzQwNDNjYTdhMDY0Y2E3YjBhMzIzMDhhMGVkNmY3YzU0NmYxN2IyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMTg6MTA6NTQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAyOS8zNl0gQWRkIHNzcF9ub25zaGFyZWQgdG8gbGluayBjb21tYW5kbGluZSBmb3IgbXVzbCB0YXJnZXRzCi0KLXdoZW4gLWZzdGFjay1wcm90ZWN0b3Igb3B0aW9ucyBhcmUgZW5hYmxlZCB3ZSBuZWVkIHRvCi1saW5rIHdpdGggc3NwX3NoYXJlZCBvbiBtdXNsIHNpbmNlIGl0IGRvZXMgbm90IHByb3ZpZGUKLXRoZSBfX3N0YWNrX2Noa19mYWlsX2xvY2FsKCkgc28gZXNzZW50aWFsbHkgaXQgcHJvdmlkZXMKLWxpYnNzcCBidXQgbm90IGxpYnNzcF9ub25zaGFyZWQgc29tZXRoaW5nIGxpa2UKLVRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUF9CVVRfTk9UX1NTUF9OT05TSEFSRUQKLSB3aGVyZS1hcyBmb3IgZ2xpYmMgdGhlIG5lZWRlZCBzeW1ib2xzCi1hcmUgYWxyZWFkeSBwcmVzZW50IGluIGxpYmNfbm9uc2hhcmVkIGxpYnJhcnkgdGhlcmVmb3JlCi13ZSBkbyBub3QgbmVlZCBhbnkgbGlicmFyeSBoZWxwZXIgb24gZ2xpYmMgYmFzZWQgc3lzdGVtcwotYnV0IG11c2wgbmVlZHMgdGhlIGxpYnNzcF9ub3NoYXJlZCBmcm9tIGdjYwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvbGludXguaCAgICAgICAgICB8ICA3ICsrKysrKysKLSBnY2MvY29uZmlnL3JzNjAwMC9saW51eC5oICAgfCAxMCArKysrKysrKysrCi0gZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIHwgMTAgKysrKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9saW51eC5oIGIvZ2NjL2NvbmZpZy9saW51eC5oCi1pbmRleCA0YjA1ZDhlOTNkMS4uMGNhMTE3ZTJlZDQgMTAwNjQ0Ci0tLS0gYS9nY2MvY29uZmlnL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvbGludXguaAotQEAgLTE5NSw2ICsxOTUsMTMgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCi0gICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMSwgMCwgMCB9LAkJXAotICAgICB7IDAsIDAsIDAsIDAsIDAsIDAgfQkJCQlcCi0gICB9Ci0rI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAotKyN1bmRlZiBMSU5LX1NTUF9TUEVDCi0rI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKLSsJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKLSsJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCi0rI2VuZGlmCi0rCi0gI2VuZGlmCi0gCi0gI2lmIChERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMpICYmIGRlZmluZWQgKFNJTkdMRV9MSUJDKSAvKiB1Q2xpbnV4ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXguaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmgKLWluZGV4IGZmY2ViMzJiZjY1Li5jODJjYjJhZDA1YiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmgKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmgKLUBAIC05NCw2ICs5NCwxNiBAQAotIAkJCQkJICIgLW0gZWxmMzJwcGNsaW51eCIpCi0gI2VuZGlmCi0gCi0rLyogbGluayBsaWJzc3Bfbm9uc2hhcmVkLmEgd2l0aCBtdXNsICovCi0rI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wKLSsjaWZkZWYgVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQCi0rI3VuZGVmIExJTktfU1NQX1NQRUMKLSsjZGVmaW5lIExJTktfU1NQX1NQRUMgIiV7ZnN0YWNrLXByb3RlY3Rvcnxmc3RhY2stcHJvdGVjdG9yLWFsbCIgXAotKwkJICAgICAgICJ8ZnN0YWNrLXByb3RlY3Rvci1zdHJvbmd8ZnN0YWNrLXByb3RlY3Rvci1leHBsaWNpdCIgXAotKwkJICAgICAgICI6LWxzc3Bfbm9uc2hhcmVkfSIKLSsjZW5kaWYKLSsjZW5kaWYKLSsKLSAjdW5kZWYgTElOS19PU19MSU5VWF9TUEVDCi0gI2RlZmluZSBMSU5LX09TX0xJTlVYX1NQRUMgTElOS19PU19MSU5VWF9FTVVMICIgJXshc2hhcmVkOiAleyFzdGF0aWM6IFwKLSAgICV7IXN0YXRpYy1waWU6IFwKLWRpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKLWluZGV4IDQ1YTlhN2NhZTU5Li5kMWU4OGE0MGU4MiAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAotKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCi1AQCAtNDU2LDYgKzQ1NiwxNiBAQCBleHRlcm4gaW50IGRvdF9zeW1ib2xzOwotIAkJCQkJICAgIiAtbSBlbGY2NHBwYyIpCi0gI2VuZGlmCi0gCi0rLyogbGluayBsaWJzc3Bfbm9uc2hhcmVkLmEgd2l0aCBtdXNsICovCi0rI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wKLSsjaWZkZWYgVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQCi0rI3VuZGVmIExJTktfU1NQX1NQRUMKLSsjZGVmaW5lIExJTktfU1NQX1NQRUMgIiV7ZnN0YWNrLXByb3RlY3Rvcnxmc3RhY2stcHJvdGVjdG9yLWFsbCIgXAotKwkJICAgICAgICJ8ZnN0YWNrLXByb3RlY3Rvci1zdHJvbmd8ZnN0YWNrLXByb3RlY3Rvci1leHBsaWNpdCIgXAotKwkJICAgICAgICI6LWxzc3Bfbm9uc2hhcmVkfSIKLSsjZW5kaWYKLSsjZW5kaWYKLSsKLSAjZGVmaW5lIExJTktfT1NfTElOVVhfU1BFQzMyIExJTktfT1NfTElOVVhfRU1VTDMyICIgJXshc2hhcmVkOiAleyFzdGF0aWM6IFwKLSAgICV7IXN0YXRpYy1waWU6IFwKLSAgICAgJXtyZHluYW1pYzotZXhwb3J0LWR5bmFtaWN9IFwKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzAtbGliZ2NjLUFkZC1rbm9iLXRvLXVzZS1sZGJsLTEyOC1vbi1wcGMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDMwLWxpYmdjYy1BZGQta25vYi10by11c2UtbGRibC0xMjgtb24tcHBjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzOGVhYjVhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzAtbGliZ2NjLUFkZC1rbm9iLXRvLXVzZS1sZGJsLTEyOC1vbi1wcGMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3OSArMCwwIEBACi1Gcm9tIDQ3NDY3ZjNhYjBmYjJmMmZjZWRlODEwNjBmZThiYjMzOWQwOTA5ZWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTemFib2xjcyBOYWd5IDxuc3pAcG9ydDcwLm5ldD4KLURhdGU6IFdlZCwgMjggRmViIDIwMTggMDA6NTQ6MDUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8xMl0gbGRibDEyOCBjb25maWcKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvY29uZmlndXJlICAgIHwgMTMgKysrKysrKysrKysrKwotIGdjYy9jb25maWd1cmUuYWMgfCAxNiArKysrKysrKysrKysrKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyNyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKLWluZGV4IDYxMjFlMTYzMjU5Li4wN2ZmODU5N2Q0OCAxMDA3NTUKLS0tLSBhL2djYy9jb25maWd1cmUKLSsrKyBiL2djYy9jb25maWd1cmUKLUBAIC0yOTMwOSw2ICsyOTMwOSwxNSBAQCBpZiB0ZXN0ICIke3dpdGhfbG9uZ19kb3VibGVfMTI4K3NldH0iID0gc2V0OyB0aGVuIDoKLSAgIHdpdGh2YWw9JHdpdGhfbG9uZ19kb3VibGVfMTI4OyBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9IiR3aXRoX2xvbmdfZG91YmxlXzEyOCIKLSBlbHNlCi0gCi0rICAgICAgY2FzZSAiJHRhcmdldCIgaW4KLSsJczM5MCotKi1saW51eC1tdXNsKikKLSsJICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzCi0rCSAgOzsKLSsJcG93ZXJwYyotKi1saW51eC1tdXNsKikKLSsJICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9bm8KLSsJICA7OwotKwkqKQotKwotIGlmIHRlc3QgJGdsaWJjX3ZlcnNpb25fbWFqb3IgLWd0IDIgXAotICAgfHwgKCB0ZXN0ICRnbGliY192ZXJzaW9uX21ham9yIC1lcSAyICYmIHRlc3QgJGdsaWJjX3ZlcnNpb25fbWlub3IgLWdlIDQgKTsgdGhlbiA6Ci0gICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzCi1AQCAtMjkzMjAsNiArMjkzMjksMTAgQEAgZWxzZQotICAgICAgICYmIGdjY19jdl90YXJnZXRfbGRibDEyOD15ZXMKLSAKLSBmaQotKwotKwkgIDs7Ci0rICAgICAgZXNhYwotKwotIGZpCi0gCi0gICAgIDs7Ci1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKLWluZGV4IGIwNjZjYzYwOWUxLi42YzE1ZWQ4OThjMCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWd1cmUuYWMKLSsrKyBiL2djYy9jb25maWd1cmUuYWMKLUBAIC01OTcxLDEzICs1OTcxLDI1IEBAIGNhc2UgIiR0YXJnZXQiIGluCi0gICAgIEFDX0FSR19XSVRIKGxvbmctZG91YmxlLTEyOCwKLSAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0td2l0aC1sb25nLWRvdWJsZS0xMjhdLAotIAkJICAgICAgW3VzZSAxMjgtYml0IGxvbmcgZG91YmxlIGJ5IGRlZmF1bHRdKV0sCi0tICAgICAgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PSIkd2l0aF9sb25nX2RvdWJsZV8xMjgiLAotKyAgICAgIGdjY19jdl90YXJnZXRfbGRibDEyOD0iJHdpdGhfbG9uZ19kb3VibGVfMTI4IiwgWwotKyAgICAgIGNhc2UgIiR0YXJnZXQiIGluCi0rCXMzOTAqLSotbGludXgtbXVzbCopCi0rCSAgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PXllcwotKwkgIDs7Ci0rCXBvd2VycGMqLSotbGludXgtbXVzbCopCi0rCSAgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PW5vCi0rCSAgOzsKLSsJKildCi0gICAgICAgW0dDQ19HTElCQ19WRVJTSU9OX0dURV9JRkVMU0UoWzJdLCBbNF0sIFtnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzXSwgWwotICAgICAgIFtnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9bm8KLSAgICAgICBncmVwICdeWyAJXSojWyAJXSpkZWZpbmVbIAldWyAJXSpfX0xPTkdfRE9VQkxFX01BVEhfT1BUSU9OQUwnIFwKLSAgICAgICAgICR0YXJnZXRfaGVhZGVyX2Rpci9iaXRzL3dvcmRzaXplLmggPiAvZGV2L251bGwgMj4mMSBcCi0gICAgICAgJiYgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PXllcwotLSAgICAgIF1dKV0pCi0rICAgICAgXV0pXQotKyAgICAgIFsKLSsJICA7OwotKyAgICAgIGVzYWMKLSsgICAgICBdKQotICAgICA7OwotIGVzYWMKLSBpZiB0ZXN0IHgkZ2NjX2N2X3RhcmdldF9sZGJsMTI4ID0geHllczsgdGhlbgotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMS1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDMxLUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZGMyMTQxZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDMxLUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gMjY2ZGNjNzhlNGQ5ZDM4ZGUyODA5MTE4OTc3ZDk3ZGM5MjcwY2YxZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDQgTWF5IDIwMTYgMjE6MTE6MzQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzMS8zNl0gTGluayBsaWJnY2MgdXNpbmcgTERGTEFHUywgbm90IGp1c3QgU0hMSUJfTERGTEFHUwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWJnY2MvY29uZmlnL3Qtc2xpYmdjYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjIGIvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKLWluZGV4IDA5OWJmMjNlNjJmLi40MzZiMjc3YTc5ZiAxMDA2NDQKLS0tLSBhL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCi0rKysgYi9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYwotQEAgLTMyLDcgKzMyLDcgQEAgU0hMSUJfSU5TVEFMTF9TT0xJTksgPSAkKExOX1MpICQoU0hMSUJfU09OQU1FKSBcCi0gCSQoREVTVERJUikkKHNsaWJkaXIpJChTSExJQl9TTElCRElSX1FVQUwpLyQoU0hMSUJfU09MSU5LKQotIAotIFNITElCX0xJTksgPSAkKENDKSAkKExJQkdDQzJfQ0ZMQUdTKSAtc2hhcmVkIC1ub2RlZmF1bHRsaWJzIFwKLS0JJChTSExJQl9MREZMQUdTKSBcCi0rCSQoTERGTEFHUykgJChTSExJQl9MREZMQUdTKSBcCi0gCS1vICQoU0hMSUJfRElSKS8kKFNITElCX1NPTkFNRSkudG1wIEBtdWx0aWxpYl9mbGFnc0AgXAotIAkkKFNITElCX09CSlMpICQoU0hMSUJfTEMpICYmIFwKLSAJcm0gLWYgJChTSExJQl9ESVIpLyQoU0hMSUJfU09MSU5LKSAmJiBcCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDMyLWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDMyLWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhkZGUwMTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMi1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotRnJvbSA5OTc1YjZlZDM1NzBiYmY3YzdkMmQ4MmY0ZDVmNzMzZDI0Y2NhY2Y1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3phYm9sY3MgTmFneSA8bnN6QHBvcnQ3MC5uZXQ+Ci1EYXRlOiBTYXQsIDI0IE9jdCAyMDE1IDIwOjA5OjUzICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMzIvMzZdIGxpYmdjY19zOiBVc2UgYWxpYXMgZm9yIF9fY3B1X2luZGljYXRvcl9pbml0IGluc3RlYWQgb2YKLSBzeW12ZXIKLQotQWRhcHRlciBmcm9tCi0KLWh0dHBzOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLXBhdGNoZXMvMjAxNS0wNS9tc2cwMDg5OS5odG1sCi0KLVRoaXMgZml4IHdhcyBkZWJhdGVkIGJ1dCBoYXNudCBiZWVuIGFwcGxpZWQgZ2NjIHVwc3RyZWFtIHNpbmNlCi10aGV5IGV4cGVjdCBtdXNsIHRvIHN1cHBvcnQgJ0AnIGluIHN5bWJvbCB2ZXJzaW9uaW5nIHdoaWNoIGlzCi1hIHN1bi9nbnUgdmVyc2lvbmluZyBleHRlbnRpb24uIFRoaXMgcGF0Y2ggaG93ZXZlciBhdm9pZHMgdGhlCi1uZWVkIGZvciB0aGUgJ0AnIHN5bWJvbHMgYXQgYWxsCi0KLWxpYmdjYy9DaGFuZ2Vsb2c6Ci0KLTIwMTUtMDUtMTEgIFN6YWJvbGNzIE5hZ3kgIDxzemFib2xjcy5uYWd5QGFybS5jb20+Ci0KLQkqIGNvbmZpZy9pMzg2L2NwdWluZm8uYyAoX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwpOiBBZGQuCi0JKF9fY3B1X2luZGljYXRvcl9pbml0QEdDQ180LjguMCwgX19jcHVfbW9kZWxAR0NDXzQuOC4wKTogUmVtb3ZlLgotCi0JKiBjb25maWcvaTM4Ni90LWxpbnV4IChIT1NUX0xJQkdDQzJfQ0ZMQUdTKTogUmVtb3ZlIC1EVVNFX0VMRl9TWU1WRVIuCi0KLWdjYy9DaGFuZ2Vsb2c6Ci0KLTIwMTUtMDUtMTEgIFN6YWJvbGNzIE5hZ3kgIDxzemFib2xjcy5uYWd5QGFybS5jb20+Ci0KLQkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfYnVpbHRpbik6IE1ha2UgX19idWlsdGluX2NwdV9pbml0Ci0JY2FsbCBfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCBpbnN0ZWFkIG9mIF9fY3B1X2luZGljYXRvcl9pbml0LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMgICAgICAgfCA0ICsrLS0KLSBsaWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jIHwgNiArKystLS0KLSBsaWJnY2MvY29uZmlnL2kzODYvdC1saW51eCAgIHwgMiArLQotIDMgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLWluZGV4IDJiMzcyOTZlNTM3Li5kZDM4MGRkYmE4OCAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLSsrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKLUBAIC0zNjY1OCwxMCArMzY2NTgsMTAgQEAgaXg4Nl9leHBhbmRfYnVpbHRpbiAodHJlZSBleHAsIHJ0eCB0YXJnZXQsIHJ0eCBzdWJ0YXJnZXQsCi0gICAgIHsKLSAgICAgY2FzZSBJWDg2X0JVSUxUSU5fQ1BVX0lOSVQ6Ci0gICAgICAgewotLQkvKiBNYWtlIGl0IGNhbGwgX19jcHVfaW5kaWNhdG9yX2luaXQgaW4gbGliZ2NjLiAqLwotKwkvKiBNYWtlIGl0IGNhbGwgX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwgaW4gbGliZ2NjLmEuICovCi0gCXRyZWUgY2FsbF9leHByLCBmbmRlY2wsIHR5cGU7Ci0gICAgICAgICB0eXBlID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChpbnRlZ2VyX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsgCi0tCWZuZGVjbCA9IGJ1aWxkX2ZuX2RlY2wgKCJfX2NwdV9pbmRpY2F0b3JfaW5pdCIsIHR5cGUpOwotKwlmbmRlY2wgPSBidWlsZF9mbl9kZWNsICgiX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwiLCB0eXBlKTsKLSAJY2FsbF9leHByID0gYnVpbGRfY2FsbF9leHByIChmbmRlY2wsIDApOyAKLSAJcmV0dXJuIGV4cGFuZF9leHByIChjYWxsX2V4cHIsIHRhcmdldCwgbW9kZSwgRVhQQU5EX05PUk1BTCk7Ci0gICAgICAgfQotZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWcvaTM4Ni9jcHVpbmZvLmMgYi9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jCi1pbmRleCBkNmNiMmRlNjI2NS4uY2UwNGVmNzgyMDUgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jCi0rKysgYi9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jCi1AQCAtNTA0LDcgKzUwNCw3IEBAIF9fY3B1X2luZGljYXRvcl9pbml0ICh2b2lkKQotICAgcmV0dXJuIDA7Ci0gfQotIAotLSNpZiBkZWZpbmVkIFNIQVJFRCAmJiBkZWZpbmVkIFVTRV9FTEZfU1lNVkVSCi0tX19hc21fXyAoIi5zeW12ZXIgX19jcHVfaW5kaWNhdG9yX2luaXQsIF9fY3B1X2luZGljYXRvcl9pbml0QEdDQ180LjguMCIpOwotLV9fYXNtX18gKCIuc3ltdmVyIF9fY3B1X21vZGVsLCBfX2NwdV9tb2RlbEBHQ0NfNC44LjAiKTsKLSsjaWZuZGVmIFNIQVJFRAotK2ludCBfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCAodm9pZCkKLSsgIF9fYXR0cmlidXRlX18gKCh3ZWFrLCBhbGlhcyAoIl9fY3B1X2luZGljYXRvcl9pbml0IikpKTsKLSAjZW5kaWYKLWRpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eCBiL2xpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4Ci1pbmRleCA4NTA2YTYzNTc5MC4uNTY0Mjk2Zjc4OGUgMTAwNjQ0Ci0tLS0gYS9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eAotKysrIGIvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXgKLUBAIC0zLDUgKzMsNSBAQAotICMgdC1zbGliZ2NjLWVsZi12ZXIgYW5kIHQtbGludXgKLSBTSExJQl9NQVBGSUxFUyA9IGxpYmdjYy1zdGQudmVyICQoc3JjZGlyKS9jb25maWcvaTM4Ni9saWJnY2MtZ2xpYmMudmVyCi0gCi0tSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTgwIC1EVVNFX0VMRl9TWU1WRVIgJChDRVRfRkxBR1MpCi0rSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTgwICQoQ0VUX0ZMQUdTKQotIENSVFNUVUZGX1RfQ0ZMQUdTICs9ICQoQ0VUX0ZMQUdTKQotLS0gCi0yLjIyLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzMy1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDMzLXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjk5YWM0Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDMzLXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDkxICswLDAgQEAKLUZyb20gMzllMmY2MWQyNjJmOWY2YzdhOTEwNjg5OThkZWE4MDc5MWVmNjY1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDMgRmViIDIwMTcgMTI6NTY6MDAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSCAzMy8zNl0gc3luYyBnY2Mgc3RkZGVmLmggd2l0aCBtdXNsCi0KLW11c2wgZGVmaW5lcyBwdHJkaWZmX3Qgc2l6ZV90IGFuZCB3Y2hhcl90Ci1zbyBkb250IGRlZmluZSB0aGVtIGhlcmUgaWYgbXVzbCBpcyBkZWZpbmluaW5nIHRoZW0KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnY2MvZ2luY2x1ZGUvc3RkZGVmLmggfCA5ICsrKysrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2djYy9naW5jbHVkZS9zdGRkZWYuaCBiL2djYy9naW5jbHVkZS9zdGRkZWYuaAotaW5kZXggZGE2OTJlMWMwMWEuLjlhMDBjMjYxYWRiIDEwMDY0NAotLS0tIGEvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCi0rKysgYi9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKLUBAIC0xMjgsNiArMTI4LDcgQEAgX1RZUEVfd2NoYXJfdDsKLSAjaWZuZGVmIF9fX2ludF9wdHJkaWZmX3RfaAotICNpZm5kZWYgX0dDQ19QVFJESUZGX1QKLSAjaWZuZGVmIF9QVFJESUZGX1RfREVDTEFSRUQgLyogRHJhZ29uRmx5ICovCi0rI2lmbmRlZiBfX0RFRklORURfcHRyZGlmZl90IC8qIG11c2wgKi8KLSAjZGVmaW5lIF9QVFJESUZGX1QKLSAjZGVmaW5lIF9UX1BUUkRJRkZfCi0gI2RlZmluZSBfVF9QVFJESUZGCi1AQCAtMTM3LDEwICsxMzgsMTIgQEAgX1RZUEVfd2NoYXJfdDsKLSAjZGVmaW5lIF9fX2ludF9wdHJkaWZmX3RfaAotICNkZWZpbmUgX0dDQ19QVFJESUZGX1QKLSAjZGVmaW5lIF9QVFJESUZGX1RfREVDTEFSRUQKLSsjZGVmaW5lIF9fREVGSU5FRF9wdHJkaWZmX3QgLyogbXVzbCAqLwotICNpZm5kZWYgX19QVFJESUZGX1RZUEVfXwotICNkZWZpbmUgX19QVFJESUZGX1RZUEVfXyBsb25nIGludAotICNlbmRpZgotIHR5cGVkZWYgX19QVFJESUZGX1RZUEVfXyBwdHJkaWZmX3Q7Ci0rI2VuZGlmIC8qIF9fREVGSU5FRF9wdHJkaWZmX3QgKi8KLSAjZW5kaWYgLyogX1BUUkRJRkZfVF9ERUNMQVJFRCAqLwotICNlbmRpZiAvKiBfR0NDX1BUUkRJRkZfVCAqLwotICNlbmRpZiAvKiBfX19pbnRfcHRyZGlmZl90X2ggKi8KLUBAIC0xNzgsNiArMTgxLDcgQEAgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKLSAjaWZuZGVmIF9HQ0NfU0laRV9UCi0gI2lmbmRlZiBfU0laRVRfCi0gI2lmbmRlZiBfX3NpemVfdAotKyNpZm5kZWYgX19ERUZJTkVEX3NpemVfdCAvKiBtdXNsICovCi0gI2RlZmluZSBfX3NpemVfdF9fCS8qIEJlT1MgKi8KLSAjZGVmaW5lIF9fU0laRV9UX18JLyogQ3JheSBVbmljb3MvTWsgKi8KLSAjZGVmaW5lIF9TSVpFX1QKLUBAIC0xOTQsNiArMTk4LDcgQEAgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKLSAjZGVmaW5lIF9fX2ludF9zaXplX3RfaAotICNkZWZpbmUgX0dDQ19TSVpFX1QKLSAjZGVmaW5lIF9TSVpFVF8KLSsjZGVmaW5lIF9fREVGSU5FRF9zaXplX3QgLyogbXVzbCAqLwotICNpZiBkZWZpbmVkIChfX0ZyZWVCU0RfXykgXAotICAgfHwgZGVmaW5lZChfX0RyYWdvbkZseV9fKSBcCi0gICB8fCBkZWZpbmVkKF9fRnJlZUJTRF9rZXJuZWxfXykgXAotQEAgLTIyOCw2ICsyMzMsNyBAQCB0eXBlZGVmIGxvbmcgc3NpemVfdDsKLSAjZW5kaWYgLyogX1NJWkVfVCAqLwotICNlbmRpZiAvKiBfX1NJWkVfVF9fICovCi0gI2VuZGlmIC8qIF9fc2l6ZV90X18gKi8KLSsjZW5kaWYgLyogX19ERUZJTkVEX3NpemVfdCAqLwotICN1bmRlZglfX25lZWRfc2l6ZV90Ci0gI2VuZGlmIC8qIF9TVERERUZfSCBvciBfX25lZWRfc2l6ZV90LiAgKi8KLSAKLUBAIC0yNTcsNiArMjYzLDcgQEAgdHlwZWRlZiBsb25nIHNzaXplX3Q7Ci0gI2lmbmRlZiBfX19pbnRfd2NoYXJfdF9oCi0gI2lmbmRlZiBfX0lOVF9XQ0hBUl9UX0gKLSAjaWZuZGVmIF9HQ0NfV0NIQVJfVAotKyNpZm5kZWYgX19ERUZJTkVEX3djaGFyX3QgLyogbXVzbCAqLwotICNkZWZpbmUgX193Y2hhcl90X18JLyogQmVPUyAqLwotICNkZWZpbmUgX19XQ0hBUl9UX18JLyogQ3JheSBVbmljb3MvTWsgKi8KLSAjZGVmaW5lIF9XQ0hBUl9UCi1AQCAtMjcyLDYgKzI3OSw3IEBAIHR5cGVkZWYgbG9uZyBzc2l6ZV90OwotICNkZWZpbmUgX19JTlRfV0NIQVJfVF9ICi0gI2RlZmluZSBfR0NDX1dDSEFSX1QKLSAjZGVmaW5lIF9XQ0hBUl9UX0RFQ0xBUkVECi0rI2RlZmluZSBfX0RFRklORURfd2NoYXJfdCAvKiBtdXNsICovCi0gCi0gLyogT24gQlNELzM4NiAxLjEsIGF0IGxlYXN0LCBtYWNoaW5lL2Fuc2kuaCBkZWZpbmVzIF9CU0RfV0NIQVJfVF8KLSAgICBpbnN0ZWFkIG9mIF9XQ0hBUl9UXywgYW5kIF9CU0RfUlVORV9UXyAod2hpY2gsIHVubGlrZSB0aGUgb3RoZXIKLUBAIC0zMzcsNiArMzQ1LDcgQEAgdHlwZWRlZiBfX1dDSEFSX1RZUEVfXyB3Y2hhcl90OwotICNlbmRpZgotICNlbmRpZiAvKiBfX1dDSEFSX1RfXyAqLwotICNlbmRpZiAvKiBfX3djaGFyX3RfXyAqLwotKyNlbmRpZiAvKiBfX0RFRklORURfd2NoYXJfdCBtdXNsICovCi0gI3VuZGVmCV9fbmVlZF93Y2hhcl90Ci0gI2VuZGlmIC8qIF9TVERERUZfSCBvciBfX25lZWRfd2NoYXJfdC4gICovCi0gCi0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDM0LWZpeC1zZWdtZW50YXRpb24tZmF1bHQtaW4tcHJlY29tcGlsZWQtaGVhZGVyLWdlbmVyYXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDM0LWZpeC1zZWdtZW50YXRpb24tZmF1bHQtaW4tcHJlY29tcGlsZWQtaGVhZGVyLWdlbmVyYXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA2YTNjOWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzNC1maXgtc2VnbWVudGF0aW9uLWZhdWx0LWluLXByZWNvbXBpbGVkLWhlYWRlci1nZW5lcmF0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjAgKzAsMCBAQAotRnJvbSBhYWE4OTZhNTdiMDAwNGE3NGMxZDQ3NGU3NGIyMWY0MTE0N2E2NWNiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KLURhdGU6IE1vbiwgMTkgTWFyIDIwMTggMjI6MzE6MjAgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAzNC8zNl0gZml4IHNlZ21lbnRhdGlvbiBmYXVsdCBpbiBwcmVjb21waWxlZCBoZWFkZXIgZ2VuZXJhdGlvbgotCi1QcmV2ZW50IGEgc2VnbWVudGF0aW9uIGZhdWx0IHdoaWNoIG9jY3VycyB3aGVuIHVzaW5nIGluY29ycmVjdAotc3RydWN0dXJlIHRyeWluZyB0byBhY2Nlc3MgbmFtZSBvZiBzb21lIG5hbWVkIG9wZXJhdG9ycywgc3VjaCBhcwotQ1BQX05PVCwgQ1BQX0FORCBldGMuICJ0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmciIGNhbm5vdCBiZSB1c2VkIGluCi10aG9zZSBjYXNlcywgYXMgaXMgbWF5IG5vdCBiZSBpbml0aWFsaXplZCBhdCBhbGwuCi0KLVtZT0NUTyAjMTE3MzhdCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYmNwcC9sZXguYyB8IDI2ICsrKysrKysrKysrKysrKysrKysrKy0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJjcHAvbGV4LmMgYi9saWJjcHAvbGV4LmMKLWluZGV4IGVlZGZjYmIzMTQ2Li4xNTA0MGExYjFmMCAxMDA2NDQKLS0tLSBhL2xpYmNwcC9sZXguYwotKysrIGIvbGliY3BwL2xleC5jCi1AQCAtMzI4MCwxMSArMzI4MCwyNyBAQCBjcHBfc3BlbGxfdG9rZW4gKGNwcF9yZWFkZXIgKnBmaWxlLCBjb25zdCBjcHBfdG9rZW4gKnRva2VuLAotICAgICBzcGVsbF9pZGVudDoKLSAgICAgY2FzZSBTUEVMTF9JREVOVDoKLSAgICAgICBpZiAoZm9yc3RyaW5nKQotLQl7Ci0tCSAgbWVtY3B5IChidWZmZXIsIE5PREVfTkFNRSAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKSwKLS0JCSAgTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZykpOwotLQkgIGJ1ZmZlciArPSBOT0RFX0xFTiAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKTsKLS0JfQotKyAgICAgICAgewotKyAgICAgICAgICBpZiAodG9rZW4tPnR5cGUgPT0gQ1BQX05BTUUpCi0rICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgbWVtY3B5IChidWZmZXIsIE5PREVfTkFNRSAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKSwKLSsgICAgICAgICAgICAgICAgICAgIE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpKTsKLSsgICAgICAgICAgICAgIGJ1ZmZlciArPSBOT0RFX0xFTiAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKTsKLSsgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgICAgLyogTkFNRURfT1AsIGNhbm5vdCB1c2Ugbm9kZS5zcGVsbGluZyAqLwotKyAgICAgICAgICBpZiAodG9rZW4tPmZsYWdzICYgTkFNRURfT1ApCi0rICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgY29uc3QgY2hhciAqc3RyID0gY3BwX25hbWVkX29wZXJhdG9yMm5hbWUgKHRva2VuLT50eXBlKTsKLSsgICAgICAgICAgICAgIGlmIChzdHIpCi0rICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICBzaXplX3QgbGVuID0gc3RybGVuKHN0cik7Ci0rICAgICAgICAgICAgICAgICAgbWVtY3B5KGJ1ZmZlciwgc3RyLCBsZW4pOwotKyAgICAgICAgICAgICAgICAgIGJ1ZmZlciArPSBsZW47Ci0rICAgICAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAgIGJyZWFrOwotKyAgICAgICAgICAgIH0KLSsgICAgICAgIH0KLSAgICAgICBlbHNlCi0gCWJ1ZmZlciA9IF9jcHBfc3BlbGxfaWRlbnRfdWNucyAoYnVmZmVyLCB0b2tlbi0+dmFsLm5vZGUubm9kZSk7Ci0gICAgICAgYnJlYWs7Ci0tLSAKLTIuMjIuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDM1LUZpeC1mb3ItdGVzdHN1aXRlLWZhaWx1cmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi8wMDM1LUZpeC1mb3ItdGVzdHN1aXRlLWZhaWx1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0NzBjYmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzNS1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjU4ICswLDAgQEAKLUZyb20gMGY5ZDQ0OWM3MzlkZjAzNzgyY2U5ZDI5ZjZiNjhkOWFmOTc2YTYwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJBR0hVTkFUSCBMT0xVUiA8cmFnaHVuYXRoLmxvbHVyQGtwaXQuY29tPgotRGF0ZTogV2VkLCA2IERlYyAyMDE3IDIyOjUyOjI2IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0ggMzUvMzZdIEZpeCBmb3IgdGVzdHN1aXRlIGZhaWx1cmUKLQotMjAxNy0xMS0xNiAgUmFnaHVuYXRoIExvbHVyICA8cmFnaHVuYXRoLmxvbHVyQGtwaXQuY29tPgotCi0JKiBnY2MuZGcvcHI1NjI3NS5jOiBJZiBTU0UgaXMgZGlzYWJsZWQsIGVuc3VyZSB0aGF0Ci0JIi1tZnBtYXRoIiBpcyBub3Qgc2V0IHRvIHVzZSBTU0UuIFNldCAiLW1mcG1hdGg9Mzg3Ii4KLQkqIGdjYy5kZy9wcjY4MzA2LmM6IExpa2V3aXNlCi0JKiBnY2MuZGcvcHI2ODMwNi0yLmM6IExpa2V3aXNlCi0JKiBnY2MuZGcvcHI2ODMwNi0zLmM6IExpa2V3aXNlCi0JKiBnY2MuZGcvcHI2OTYzNC5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9pc2EtMTQuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jOiBMaWtld2lzZQotCSogZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYzogTGlrZXdpc2UKLQkqIGdjYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmM6IExpa2V3aXNlCi0JKiBnY2MudGFyZ2V0L2kzODYvd2Fybi12ZWN0LW9wLTEuYzogTGlrZXdpc2UKLQotSWYgLVdhbGwsIC1XZXJyb3IgYXJlIHVzZWQgZHVyaW5nIGNvbXBpbGF0aW9uIHZhcmlvdXMgdGVzdCBjYXNlcyBmYWlsCi10byBjb21waWxlLgotCi1JZiBTU0UgaXMgZGlzYWJsZWQsIGJlIHN1cmUgdG8gLW1mcG1hdGg9Mzg3IHRvIHJlc29sdmUgdGhpcy4KLQotVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBjaGFuZ2VzIHRvIENoYW5nZWxvZyBmcm9tIHRoZSBvcmlnaW5hbCBwYXRjaC4KLVRoaXMgd2lsbCBoZWxwIHVzIGF2b2lkIGNvbmZsaWN0cy4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTYyNzUuYyAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYyAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMgICAgICAgICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYyAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY5NjM0LmMgICAgICAgICAgICAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYyAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYyAgICAgICAgICB8IDEgKwotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYyB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYyAgICAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYyAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jICAgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYyAgICAgICAgICAgICB8IDIgKy0KLSBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMgICAgICAgICAgICAgfCAyICstCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmMgICAgICAgICAgIHwgMiArLQotIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmMgICAgICB8IDIgKy0KLSAxNyBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTYyNzUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTYyNzUuYwotaW5kZXggYjkwMWJiMmIxOTkuLmE0ZjZjOTVlMWExIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1NjI3NS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMKLUBAIC0xLDYgKzEsNiBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0gLyogeyBkZy1vcHRpb25zICItTzIiIH0gKi8KLS0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UiIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSAqLwotKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbWZwbWF0aD0zODciIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSAqLwotIAotIHR5cGVkZWYgbG9uZyBsb25nIHYydHcgX19hdHRyaWJ1dGVfXyAoKHZlY3Rvcl9zaXplICgyICogc2l6ZW9mIChsb25nIGxvbmcpKSkpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMKLWluZGV4IDQ2NzJlYmU3OTg3Li4yYTM2OGM0ODRiNiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMi5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYwotQEAgLTEsNiArMSw2IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSAvKiB7IGRnLW9wdGlvbnMgIi1PMyIgfSAqLwotLS8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KLSsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXggLW1mcG1hdGg9Mzg3IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLwotIAotIHN0cnVjdCB7Ci0gICAgIGludCB0el9taW51dGVzd2VzdDsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jCi1pbmRleCBmNWE4YzEwMmNmOC4uZGYzMzkwYzY0YzIgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTMuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMKLUBAIC0xLDYgKzEsNiBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0gLyogeyBkZy1vcHRpb25zICItTzMiIH0gKi8KLS0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXgiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KLSAvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1hbHRpdmVjIC1tbm8tdnN4IiB7IHRhcmdldCBwb3dlcnBjKi0qLSogfSB9ICovCi0gCi0gZXh0ZXJuIHZvaWQgZm4yKCk7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi5jCi1pbmRleCA1NGU1YjQwZjIyMS4uMDgxMzM4OWUyYzEgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYwotQEAgLTEsNiArMSw2IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLSAvKiB7IGRnLW9wdGlvbnMgIi1PMyIgfSAqLwotLS8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KLSsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXggLW1mcG1hdGg9Mzg3IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLwotIAotIGVudW0gcG93ZXJwY19wbWNfdHlwZSB7IFBQQ19QTUNfSUJNIH07Ci0gc3RydWN0IHsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY5NjM0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY5NjM0LmMKLWluZGV4IDYwYTU2MTQ5NDYzLi5iY2MyM2Y5Y2NkNiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjk2MzQuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLwotIC8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tZGNlIC1mc2NoZWR1bGUtaW5zbnMgLWZuby10cmVlLXZycCAtZmNvbXBhcmUtZGVidWcgLVduby1wc2FiaSIgfSAqLwotLS8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KLSsvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLwotIC8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHNjaGVkdWxpbmcgfSAqLwotIAotIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdTE2OwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jCi1pbmRleCA2OWZkZTU3YmYwNi4uN2YxZjFjMDNlZGYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jCi1AQCAtMSw1ICsxLDUgQEAKLSAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KLSAvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1hYmk9c3lzdiIgeyB0YXJnZXQgKi0qLW1pbmd3KiB9IH0gKi8KLSAKLSBkb3VibGUgZm9vKHZvaWQpIHsgcmV0dXJuIDA7IH0JLyogeyBkZy1lcnJvciAiU1NFIGRpc2FibGVkIiB9ICovCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jCi1pbmRleCBlYTg5NmI3ZWJmZC4uYmYxNTU2OWI4MjYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYwotQEAgLTEsNiArMSw3IEBACi0gLyogVGVzdCB3aGV0aGVyIGFsbCBvZiB0aGUgNjQtYml0IGZ1bmN0aW9uIHNwZWNpZmljIG9wdGlvbnMgYXJlIGFjY2VwdGVkCi0gICAgd2l0aG91dCBlcnJvci4gICovCi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICovCi0rLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tZnBtYXRoPTM4NyIgfSAqLwotIAotICNpbmNsdWRlICJmdW5jc3BlYy01Ni5pbmMiCi0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jCi1pbmRleCA4NTYxYTNjMjZkNi4uNjM3N2Y4MTQ2NDUgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWdlbmVyYWwtcmVncy1vbmx5IC1tbm8tY2xkIC1tbm8taWFtY3UgLW04MDM4NyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZ2VuZXJhbC1yZWdzLW9ubHkgLW1uby1jbGQgLW1uby1pYW1jdSAtbTgwMzg3IC1tZnBtYXRoPTM4NyIgfSAqLwotIAotIHR5cGVkZWYgdW5zaWduZWQgaW50IHV3b3JkX3QgX19hdHRyaWJ1dGVfXyAoKG1vZGUgKF9fd29yZF9fKSkpOwotIAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMKLWluZGV4IDVkNDllNmU3N2ZlLi4xZGUyZGI5MmJkZCAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBydW4gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXg4Ni02NCAtbXNzZTRhIC1tZm1hNCAtbW5vLXNzZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXg4Ni02NCAtbXNzZTRhIC1tZm1hNCAtbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KLSAKLSBleHRlcm4gdm9pZCBhYm9ydCAodm9pZCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jCi1pbmRleCBmYTE3NjliNjJmYi4uZjc5ZmIxMjcyNmYgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYwotQEAgLTEsNSArMSw1IEBACi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PIC1tbm8tc3NlIC1Xbm8tcHNhYmkgLW10dW5lPWdlbmVyaWMiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PIC1tbm8tc3NlIC1Xbm8tcHNhYmkgLW10dW5lPWdlbmVyaWMgLW1mcG1hdGg9Mzg3IiB9ICovCi0gCi0gc3RydWN0IEEKLSB7IAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmMKLWluZGV4IDJlODlmZjdkODFkLi42MzM5YmY2YjczNiAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYwotQEAgLTEsNiArMSw2IEBACi0gLyogUFIgdGFyZ2V0LzUzNDI1ICovCi0gLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UiIH0gKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KLSAvKiB7IGRnLXNraXAtaWYgIm5vIFNTRSB2ZWN0b3IiIHsgeDg2XzY0LSotbWluZ3cqIH0gfSAqLwotIAotIHR5cGVkZWYgZG91YmxlIF9fdjJkZiBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgxNikpKTsKLWRpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jCi1pbmRleCA2MWY2MjgzZGJlOS4uMmM1YTU1ZjBhYzMgMTAwNjQ0Ci0tLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYwotKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMKLUBAIC0xLDYgKzEsNiBAQAotIC8qIFBSIHRhcmdldC81MzQyNSAqLwotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLwotLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCi0gLyogeyBkZy1za2lwLWlmICJubyBTU0UgdmVjdG9yIiB7IHg4Nl82NC0qLW1pbmd3KiB9IH0gKi8KLSAKLSB0eXBlZGVmIGZsb2F0IF9fdjJzZiBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICg4KSkpOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYwotaW5kZXggMjMzNjZkMDkwOWQuLjk4MTBlM2FiYjc2IDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMKLUBAIC0xLDYgKzEsNiBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLwotIC8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IG1heWJlX3gzMiB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UgLW1uby1tbXggLW14MzIgLW1hZGRyZXNzLW1vZGU9bG9uZyIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tbm8tbW14IC1teDMyIC1tYWRkcmVzcy1tb2RlPWxvbmcgLW1mcG1hdGg9Mzg3IiB9ICovCi0gCi0gdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDMyX3Q7Ci0gdHlwZWRlZiB1aW50MzJfdCBFbGYzMl9Xb3JkOwotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYwotaW5kZXggOTYwMDZiM2UzMzguLjQyODdlNDUzOGJmIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMKLUBAIC0xLDYgKzEsNiBAQAotIC8qIFBSIHRhcmdldC81OTY0NCAqLwotIC8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGxwNjQgfSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItTzIgLWZmcmVlc3RhbmRpbmcgLW1uby1zc2UgLW1wcmVmZXJyZWQtc3RhY2stYm91bmRhcnk9MyAtbWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyAtbW5vLXJlZC16b25lIiB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLWZmcmVlc3RhbmRpbmcgLW1uby1zc2UgLW1wcmVmZXJyZWQtc3RhY2stYm91bmRhcnk9MyAtbWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyAtbW5vLXJlZC16b25lIC1tZnBtYXRoPTM4NyIgfSAqLwotIAotIC8qIFRoaXMgdGVzdCB1c2VzIF9fYnVpbHRpbl90cmFwICgpIGluc3RlYWQgb2YgZS5nLiBhYm9ydCwKLSAgICBiZWNhdXNlIGR1ZSB0byAtbXByZWZlcnJlZC1zdGFjay1ib3VuZGFyeT0zIGl0IHNob3VsZCBub3QgY2FsbAotZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYwotaW5kZXggYmZiOGM0NzAzZWIuLmVkMDRjZjE4MWYzIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jCi0rKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCi0tLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCi0gCi0gdm9pZCBmb28gKCkKLSB7Ci1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYwotaW5kZXggNGUxMTJjODhkMDcuLmJjZmIzOTZhNjhkIDEwMDY0NAotLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jCi1AQCAtMSw2ICsxLDYgQEAKLSAvKiBQUiBydGwtb3B0aW1pemF0aW9uLzcwNDY3ICovCi0gLyogeyBkZy1kbyBjb21waWxlIH0gKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSIgfSAqLwotKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLwotIAotIHZvaWQgZm9vICh1bnNpZ25lZCBsb25nIGxvbmcgKik7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvd2Fybi12ZWN0LW9wLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmMKLWluZGV4IDZjZGExNTM0MzExLi4yNmUzN2Y1YjhiYSAxMDA2NDQKLS0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmMKLSsrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmMKLUBAIC0xLDUgKzEsNSBAQAotIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAgKi8KLS0vKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIC1XdmVjdG9yLW9wZXJhdGlvbi1wZXJmb3JtYW5jZSIgfSAgKi8KLSsvKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIC1XdmVjdG9yLW9wZXJhdGlvbi1wZXJmb3JtYW5jZSAtbWZwbWF0aD0zODciIH0gICovCi0gI2RlZmluZSB2ZWN0b3IoZWxjb3VudCwgdHlwZSkgIFwKLSBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgoZWxjb3VudCkqc2l6ZW9mKHR5cGUpKSkpIHR5cGUKLSAKLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yLzAwMzYtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzNi1SZS1pbnRyb2R1Y2Utc3BlLWNvbW1hbmRsaW5lLW9wdGlvbnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRkYmNkOTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvMDAzNi1SZS1pbnRyb2R1Y2Utc3BlLWNvbW1hbmRsaW5lLW9wdGlvbnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1Gcm9tIDcxZTk5YzJiNThhOWViMDBjZGQ2NWEwNGFlYjZmYjc4MjI3ZTMyOTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogV2VkLCA2IEp1biAyMDE4IDEyOjEwOjIyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMzYvMzZdIFJlLWludHJvZHVjZSBzcGUgY29tbWFuZGxpbmUgb3B0aW9ucwotCi1UaGlzIHNob3VsZCBlbnN1cmUgdGhhdCB3ZSBrZWVwIGFjY2VwdGluZwotc3BlIG9wdGlvbnMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtTUEUgcG9ydCBpcyByZW1vdmVkIGZyb20gcnM2MDAgcG9ydF0KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdjYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQgfCAxMiArKysrKysrKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdCBiL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQKLWluZGV4IGY0YjVjOTFlMTFmLi42OTg2OTM1MGZjZSAxMDA2NDQKLS0tLSBhL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQKLSsrKyBiL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5vcHQKLUBAIC0zNDUsNiArMzQ1LDE4IEBAIG1kZWJ1Zz0KLSBUYXJnZXQgUmVqZWN0TmVnYXRpdmUgSm9pbmVkCi0gLW1kZWJ1Zz0JRW5hYmxlIGRlYnVnIG91dHB1dC4KLSAKLSttc3BlCi0rVGFyZ2V0IFZhcihyczYwMDBfc3BlKSBTYXZlCi0rR2VuZXJhdGUgU1BFIFNJTUQgaW5zdHJ1Y3Rpb25zIG9uIEU1MDAuCi0rCi0rbWFiaT1zcGUKLStUYXJnZXQgUmVqZWN0TmVnYXRpdmUgVmFyKHJzNjAwMF9zcGVfYWJpKSBTYXZlCi0rVXNlIHRoZSBTUEUgQUJJIGV4dGVuc2lvbnMuCi0rCi0rbWFiaT1uby1zcGUKLStUYXJnZXQgUmVqZWN0TmVnYXRpdmUgVmFyKHJzNjAwMF9zcGVfYWJpLCAwKQotK0RvIG5vdCB1c2UgdGhlIFNQRSBBQkkgZXh0ZW5zaW9ucy4KLSsKLSBtYWJpPWFsdGl2ZWMKLSBUYXJnZXQgUmVqZWN0TmVnYXRpdmUgVmFyKHJzNjAwMF9hbHRpdmVjX2FiaSkgU2F2ZQotIFVzZSB0aGUgQWx0aVZlYyBBQkkgZXh0ZW5zaW9ucy4KLS0tIAotMi4yMi4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yL0NWRS0yMDE5LTE0MjUwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvQ1ZFLTIwMTktMTQyNTAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY1ZWEzNDUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvQ1ZFLTIwMTktMTQyNTAucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1Gcm9tIDUxN2IyMTFhM2Q3ODM2NmNhOGQ1OTI5ZjU4MGU4Y2E3MmZkMmMwMDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiByZ3VlbnRoIDxyZ3VlbnRoQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IFRodSwgMjUgSnVsIDIwMTkgMTA6NDY6NTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gMjAxOS0wNy0yNSAgUmljaGFyZCBCaWVuZXIgIDxyZ3VlbnRoZXJAc3VzZS5kZT4KLQotCVBSIGx0by85MDkyNAotCUJhY2twb3J0IGZyb20gbWFpbmxpbmUKLQkyMDE5LTA3LTEyICBSZW4gS2ltdXJhICA8cmt4MTIwOWRldkBnbWFpbC5jb20+Ci0KLQkqIHNpbXBsZS1vYmplY3QtZWxmLmMgKHNpbXBsZV9vYmplY3RfZWxmX21hdGNoKTogQ2hlY2sgemVybyB2YWx1ZQotCXNoc3RybmR4LgotCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9nY2MuZ251Lm9yZy9zdm4vZ2NjL2JyYW5jaGVzL2djYy05LWJyYW5jaEAyNzM3OTMgMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLUFmZmVjdGVzOiA8ICA5LjIKLUNWRTogQ1ZFLTIwMTktMTQyNTAKLURyb3BwZWQgY2hhbmdlbG9nCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPEFrdXN0cmVAbXZpc3RhLmNvbT4KLQotLS0tCi0gbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMgfCA4ICsrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspCi0KLUluZGV4OiBnY2MtOS4yLjAvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtOS4yLjAub3JpZy9saWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYwotKysrIGdjYy05LjIuMC9saWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYwotQEAgLTU1Nyw2ICs1NTcsMTQgQEAgc2ltcGxlX29iamVjdF9lbGZfbWF0Y2ggKHVuc2lnbmVkIGNoYXIgaAotICAgICAgIHJldHVybiBOVUxMOwotICAgICB9Ci0gCi0rICBpZiAoZW9yLT5zaHN0cm5keCA9PSAwKQotKyAgICB7Ci0rICAgICAgKmVycm1zZyA9ICJpbnZhbGlkIEVMRiBzaHN0cm5keCA9PSAwIjsKLSsgICAgICAqZXJyID0gMDsKLSsgICAgICBYREVMRVRFIChlb3IpOwotKyAgICAgIHJldHVybiBOVUxMOwotKyAgICB9Ci0rCi0gICByZXR1cm4gKHZvaWQgKikgZW9yOwotIH0KLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yL0NWRS0yMDE5LTE1ODQ3XzEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi9DVkUtMjAxOS0xNTg0N18xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMjdmZDQ3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yL0NWRS0yMDE5LTE1ODQ3XzEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MjEgKzAsMCBAQAotRnJvbSA4YzYxNTY2MTE2ZDIzMDYzZmY1OTcyNzE4ODRmOGUwMGQ5NGFiMWExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogc2VnaGVyIDxzZWdoZXJAMTM4YmM3NWQtMGQwNC0wNDEwLTk2MWYtODJlZTcyYjA1NGE0PgotRGF0ZTogRnJpLCAzMCBBdWcgMjAxOSAxMzo0ODo0OCArMDAwMAotU3ViamVjdDogW1BBVENIXSAJQmFja3BvcnQgZnJvbSB0cnVuayAJMjAxOS0wOC0yMiAgU2VnaGVyIEJvZXNzZW5rb29sCi0gIDxzZWdoZXJAa2VybmVsLmNyYXNoaW5nLm9yZz4KLQotCSogY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kICh1bnNwZWMpOiBEZWxldGUgVU5TUEVDX0RBUk4sIFVOU1BFQ19EQVJOXzMyLAotCVVOU1BFQ19EQVJOX1JBVywgVU5TUEVDX0NNUFJCLCBVTlNQRUNfQ01QUkIyLCBVTlNQRUNfQ01QRVFCOyBtb3ZlIHRvLi4uCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAodW5zcGVjKTogLi4uIGhlcmUuCi0JKiBjb25maWcvcnM2MDAwL2FsdGl2ZWMubWQgKGRhcm5fMzIsIGRhcm5fcmF3LCBkYXJuLCBjbXByYiwKLQkqY21wcmJfaW50ZXJuYWwsIHNldGJfc2lnbmVkLCBzZXRiX3Vuc2lnbmVkLCBjbXByYjIsICpjbXByYjJfaW50ZXJuYWwsCi0JY21wZXFiLCAqY21wZXFiX2ludGVybmFsKTogRGVsZXRlLCBtb3ZlIHRvLi4uCi0JKiBjb25maWcvcnM2MDAwL3JzNjAwMC5tZCAoZGFybl8zMiwgZGFybl9yYXcsIGRhcm4sIGNtcHJiLAotCSpjbXByYl9pbnRlcm5hbCwgc2V0Yl9zaWduZWQsIHNldGJfdW5zaWduZWQsIGNtcHJiMiwgKmNtcHJiMl9pbnRlcm5hbCwKLQljbXBlcWIsICpjbXBlcWJfaW50ZXJuYWwpOiAuLi4gaGVyZS4KLQotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy9icmFuY2hlcy9nY2MtOS1icmFuY2hAMjc1MTcwIDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE5LTE1ODQ3IHAxCi1BZmZlY3RzIDw9IDkuMi4wCi1Ecm9wcGVkIENoYW5nZWxvZyBjaGFuZ2VzCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gZ2NjL2NvbmZpZy9yczYwMDAvYWx0aXZlYy5tZCB8IDIyMyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm1kICB8IDIyNCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgMjM5IGluc2VydGlvbnMoKyksIDIyMyBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGdjYy05LjIuMC9nY2MvY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ2NjLTkuMi4wLm9yaWcvZ2NjL2NvbmZpZy9yczYwMDAvYWx0aXZlYy5tZAotKysrIGdjYy05LjIuMC9nY2MvY29uZmlnL3JzNjAwMC9hbHRpdmVjLm1kCi1AQCAtODAsOSArODAsNiBAQAotICAgIFVOU1BFQ19WVVBLSFBYCi0gICAgVU5TUEVDX1ZVUEtMUFgKLSAgICBVTlNQRUNfQ09OVkVSVF80RjMyXzhJMTYKLS0gICBVTlNQRUNfREFSTgotLSAgIFVOU1BFQ19EQVJOXzMyCi0tICAgVU5TUEVDX0RBUk5fUkFXCi0gICAgVU5TUEVDX0RTVAotICAgIFVOU1BFQ19EU1RUCi0gICAgVU5TUEVDX0RTVFNUCi1AQCAtMTYxLDkgKzE1OCw2IEBACi0gICAgVU5TUEVDX0JDREFERAotICAgIFVOU1BFQ19CQ0RTVUIKLSAgICBVTlNQRUNfQkNEX09WRVJGTE9XCi0tICAgVU5TUEVDX0NNUFJCCi0tICAgVU5TUEVDX0NNUFJCMgotLSAgIFVOU1BFQ19DTVBFUUIKLSAgICBVTlNQRUNfVlJMTUkKLSAgICBVTlNQRUNfVlJMTk0KLSBdKQotQEAgLTQxMDEsMjIzICs0MDk1LDYgQEAKLSAgICJiY2Q8YmNkX2FkZF9zdWI+LiAlMCwlMSwlMiwlMyIKLSAgIFsoc2V0X2F0dHIgInR5cGUiICJ2ZWNzaW1wbGUiKV0pCi0gCi0tKGRlZmluZV9pbnNuICJkYXJuXzMyIgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yIikKLS0gICAgICAgICh1bnNwZWM6U0kgWyhjb25zdF9pbnQgMCldIFVOU1BFQ19EQVJOXzMyKSldCi0tICAiVEFSR0VUX1A5X01JU0MiCi0tICAiZGFybiAlMCwwIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImludGVnZXIiKV0pCi0tCi0tKGRlZmluZV9pbnNuICJkYXJuX3JhdyIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCi0tICAgICAgICAodW5zcGVjOkRJIFsoY29uc3RfaW50IDApXSBVTlNQRUNfREFSTl9SQVcpKV0KLS0gICJUQVJHRVRfUDlfTUlTQyAmJiBUQVJHRVRfNjRCSVQiCi0tICAiZGFybiAlMCwyIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImludGVnZXIiKV0pCi0tCi0tKGRlZmluZV9pbnNuICJkYXJuIgotLSAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yIikKLS0gICAgICAgICh1bnNwZWM6REkgWyhjb25zdF9pbnQgMCldIFVOU1BFQ19EQVJOKSldCi0tICAiVEFSR0VUX1A5X01JU0MgJiYgVEFSR0VUXzY0QklUIgotLSAgImRhcm4gJTAsMSIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJpbnRlZ2VyIildKQotLQotLTs7IFRlc3QgYnl0ZSB3aXRoaW4gcmFuZ2UuCi0tOzsKLS07OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAxIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6eHg6dnYsIHdoZXJlIHh4Ci0tOzsgcmVwcmVzZW50cyBhIGJ5dGUgd2hvc2UgdmFsdWUgaXMgaWdub3JlZCBpbiB0aGlzIGNvbnRleHQgYW5kCi0tOzsgdnYsIHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlLCBob2xkcyB0aGUgYnl0ZSB2YWx1ZSB0aGF0IGlzIHRvCi0tOzsgYmUgdGVzdGVkIGZvciBtZW1iZXJzaGlwIHdpdGhpbiB0aGUgcmFuZ2Ugc3BlY2lmaWVkIGJ5IG9wZXJhbmQgMi4KLS07OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAyIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6aGk6bG8uCi0tOzsKLS07OyBSZXR1cm4gaW4gdGFyZ2V0IHJlZ2lzdGVyIG9wZXJhbmQgMCBhIHZhbHVlIG9mIDEgaWYgbG8gPD0gdnYgYW5kCi0tOzsgdnYgPD0gaGkuICBPdGhlcndpc2UsIHNldCByZWdpc3RlciBvcGVyYW5kIDAgdG8gMC4KLS07OwotLTs7IFRob3VnaCB0aGUgaW5zdHJ1Y3Rpb25zIHRvIHdoaWNoIHRoaXMgZXhwYW5zaW9uIG1hcHMgb3BlcmF0ZSBvbgotLTs7IDY0LWJpdCByZWdpc3RlcnMsIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHkgb3BlcmF0ZXMgb24KLS07OyBTSS1tb2RlIG9wZXJhbmRzIGFzIHRoZSBoaWdoLW9yZGVyIGJpdHMgcHJvdmlkZSBubyBpbmZvcm1hdGlvbgotLTs7IHRoYXQgaXMgbm90IGFscmVhZHkgYXZhaWxhYmxlIGluIHRoZSBsb3ctb3JkZXIgYml0cy4gIFRvIGF2b2lkIHRoZQotLTs7IGNvc3RzIG9mIGRhdGEgd2lkZW5pbmcgb3BlcmF0aW9ucywgZnV0dXJlIGVuaGFuY2VtZW50cyBtaWdodCBhbGxvdwotLTs7IERJIG1vZGUgZm9yIG9wZXJhbmQgMCBhbmQvb3IgbWlnaHQgYWxsb3cgb3BlcmFuZCAxIHRvIGJlIFFJIG1vZGUuCi0tKGRlZmluZV9leHBhbmQgImNtcHJiIgotLSAgWyhzZXQgKG1hdGNoX2R1cCAzKQotLQkodW5zcGVjOkNDIFsobWF0Y2hfb3BlcmFuZDpTSSAxICJncGNfcmVnX29wZXJhbmQiICJyIikKLS0JCSAgICAobWF0Y2hfb3BlcmFuZDpTSSAyICJncGNfcmVnX29wZXJhbmQiICJyIildCi0tCSBVTlNQRUNfQ01QUkIpKQotLSAgIChzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQotLQkoaWZfdGhlbl9lbHNlOlNJIChsdCAobWF0Y2hfZHVwIDMpCi0tCQkJICAgICAoY29uc3RfaW50IDApKQotLQkJCSAoY29uc3RfaW50IC0xKQotLQkJCSAoaWZfdGhlbl9lbHNlIChndCAobWF0Y2hfZHVwIDMpCi0tCQkJCQkgICAoY29uc3RfaW50IDApKQotLQkJCQkgICAgICAgKGNvbnN0X2ludCAxKQotLQkJCQkgICAgICAgKGNvbnN0X2ludCAwKSkpKV0KLS0gICJUQVJHRVRfUDlfTUlTQyIKLS17Ci0tICBvcGVyYW5kc1szXSA9IGdlbl9yZWdfcnR4IChDQ21vZGUpOwotLX0pCi0tCi0tOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMSBhcmUgb3JnYW5pemVkIGFzIHh4Onh4Onh4OnZ2LCB3aGVyZSB4eAotLTs7IHJlcHJlc2VudHMgYSBieXRlIHdob3NlIHZhbHVlIGlzIGlnbm9yZWQgaW4gdGhpcyBjb250ZXh0IGFuZAotLTs7IHZ2LCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSwgaG9sZHMgdGhlIGJ5dGUgdmFsdWUgdGhhdCBpcyB0bwotLTs7IGJlIHRlc3RlZCBmb3IgbWVtYmVyc2hpcCB3aXRoaW4gdGhlIHJhbmdlIHNwZWNpZmllZCBieSBvcGVyYW5kIDIuCi0tOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMiBhcmUgb3JnYW5pemVkIGFzIHh4Onh4OmhpOmxvLgotLTs7Ci0tOzsgU2V0IGJpdCAxICh0aGUgR1QgYml0LCAweDQpIG9mIENSIHJlZ2lzdGVyIG9wZXJhbmQgMCB0byAxIGlmCi0tOzsgbG8gPD0gdnYgYW5kIHZ2IDw9IGhpLiAgT3RoZXJ3aXNlLCBzZXQgdGhlIEdUIGJpdCB0byAwLiAgVGhlIG90aGVyCi0tOzsgMyBiaXRzIG9mIHRoZSB0YXJnZXQgQ1IgcmVnaXN0ZXIgYXJlIGFsbCBzZXQgdG8gMC4KLS0oZGVmaW5lX2luc24gIipjbXByYl9pbnRlcm5hbCIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOkNDIDAgImNjX3JlZ19vcGVyYW5kIiAiPXkiKQotLQkodW5zcGVjOkNDIFsobWF0Y2hfb3BlcmFuZDpTSSAxICJncGNfcmVnX29wZXJhbmQiICJyIikKLS0JCSAgICAobWF0Y2hfb3BlcmFuZDpTSSAyICJncGNfcmVnX29wZXJhbmQiICJyIildCi0tCSBVTlNQRUNfQ01QUkIpKV0KLS0gICJUQVJHRVRfUDlfTUlTQyIKLS0gICJjbXByYiAlMCwwLCUxLCUyIgotLSAgWyhzZXRfYXR0ciAidHlwZSIgImxvZ2ljYWwiKV0pCi0tCi0tOzsgU2V0IG9wZXJhbmQgMCByZWdpc3RlciB0byAtMSBpZiB0aGUgTFQgYml0ICgweDgpIG9mIGNvbmRpdGlvbgotLTs7IHJlZ2lzdGVyIG9wZXJhbmQgMSBpcyBvbi4gIE90aGVyd2lzZSwgc2V0IG9wZXJhbmQgMCByZWdpc3RlciB0byAxCi0tOzsgaWYgdGhlIEdUIGJpdCAoMHg0KSBvZiBjb25kaXRpb24gcmVnaXN0ZXIgb3BlcmFuZCAxIGlzIG9uLgotLTs7IE90aGVyd2lzZSwgc2V0IG9wZXJhbmQgMCB0byAwLiAgTm90ZSB0aGF0IHRoZSByZXN1bHQgc3RvcmVkIGludG8KLS07OyByZWdpc3RlciBvcGVyYW5kIDAgaXMgbm9uLXplcm8gaWZmIGVpdGhlciB0aGUgTFQgb3IgR1QgYml0cyBhcmUgb24KLS07OyB3aXRoaW4gY29uZGl0aW9uIHJlZ2lzdGVyIG9wZXJhbmQgMS4KLS0oZGVmaW5lX2luc24gInNldGJfc2lnbmVkIgotLSAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdfb3BlcmFuZCIgIj1yIikKLS0JIChpZl90aGVuX2Vsc2U6U0kgKGx0IChtYXRjaF9vcGVyYW5kOkNDIDEgImNjX3JlZ19vcGVyYW5kIiAieSIpCi0tCQkJICAgICAgKGNvbnN0X2ludCAwKSkKLS0JCQkgIChjb25zdF9pbnQgLTEpCi0tCQkJICAoaWZfdGhlbl9lbHNlIChndCAobWF0Y2hfZHVwIDEpCi0tCQkJCQkgICAgKGNvbnN0X2ludCAwKSkKLS0JCQkJCShjb25zdF9pbnQgMSkKLS0JCQkJCShjb25zdF9pbnQgMCkpKSldCi0tICAiVEFSR0VUX1A5X01JU0MiCi0tICAic2V0YiAlMCwlMSIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJsb2dpY2FsIildKQotLQotLShkZWZpbmVfaW5zbiAic2V0Yl91bnNpZ25lZCIKLS0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0tCSAoaWZfdGhlbl9lbHNlOlNJIChsdHUgKG1hdGNoX29wZXJhbmQ6Q0NVTlMgMSAiY2NfcmVnX29wZXJhbmQiICJ5IikKLS0JCQkgICAgICAoY29uc3RfaW50IDApKQotLQkJCSAgKGNvbnN0X2ludCAtMSkKLS0JCQkgIChpZl90aGVuX2Vsc2UgKGd0dSAobWF0Y2hfZHVwIDEpCi0tCQkJCQkgICAgKGNvbnN0X2ludCAwKSkKLS0JCQkJCShjb25zdF9pbnQgMSkKLS0JCQkJCShjb25zdF9pbnQgMCkpKSldCi0tICAiVEFSR0VUX1A5X01JU0MiCi0tICAic2V0YiAlMCwlMSIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJsb2dpY2FsIildKQotLQotLTs7IFRlc3QgYnl0ZSB3aXRoaW4gdHdvIHJhbmdlcy4KLS07OwotLTs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDEgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDp4eDp2diwgd2hlcmUgeHgKLS07OyByZXByZXNlbnRzIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBpZ25vcmVkIGluIHRoaXMgY29udGV4dCBhbmQKLS07OyB2diwgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUsIGhvbGRzIHRoZSBieXRlIHZhbHVlIHRoYXQgaXMgdG8KLS07OyBiZSB0ZXN0ZWQgZm9yIG1lbWJlcnNoaXAgd2l0aGluIHRoZSByYW5nZSBzcGVjaWZpZWQgYnkgb3BlcmFuZCAyLgotLTs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDIgYXJlIG9yZ2FuaXplZCBhcyBoaV8xOmxvXzE6aGlfMjpsb18yLgotLTs7Ci0tOzsgUmV0dXJuIGluIHRhcmdldCByZWdpc3RlciBvcGVyYW5kIDAgYSB2YWx1ZSBvZiAxIGlmIChsb18xIDw9IHZ2IGFuZAotLTs7IHZ2IDw9IGhpXzEpIG9yIGlmIChsb18yIDw9IHZ2IGFuZCB2diA8PSBoaV8yKS4gIE90aGVyd2lzZSwgc2V0IHJlZ2lzdGVyCi0tOzsgb3BlcmFuZCAwIHRvIDAuCi0tOzsKLS07OyBUaG91Z2ggdGhlIGluc3RydWN0aW9ucyB0byB3aGljaCB0aGlzIGV4cGFuc2lvbiBtYXBzIG9wZXJhdGUgb24KLS07OyA2NC1iaXQgcmVnaXN0ZXJzLCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5IG9wZXJhdGVzIG9uCi0tOzsgU0ktbW9kZSBvcGVyYW5kcyBhcyB0aGUgaGlnaC1vcmRlciBiaXRzIHByb3ZpZGUgbm8gaW5mb3JtYXRpb24KLS07OyB0aGF0IGlzIG5vdCBhbHJlYWR5IGF2YWlsYWJsZSBpbiB0aGUgbG93LW9yZGVyIGJpdHMuICBUbyBhdm9pZCB0aGUKLS07OyBjb3N0cyBvZiBkYXRhIHdpZGVuaW5nIG9wZXJhdGlvbnMsIGZ1dHVyZSBlbmhhbmNlbWVudHMgbWlnaHQgYWxsb3cKLS07OyBESSBtb2RlIGZvciBvcGVyYW5kIDAgYW5kL29yIG1pZ2h0IGFsbG93IG9wZXJhbmQgMSB0byBiZSBRSSBtb2RlLgotLShkZWZpbmVfZXhwYW5kICJjbXByYjIiCi0tICBbKHNldCAobWF0Y2hfZHVwIDMpCi0tCSh1bnNwZWM6Q0MgWyhtYXRjaF9vcGVyYW5kOlNJIDEgImdwY19yZWdfb3BlcmFuZCIgInIiKQotLQkJICAgIChtYXRjaF9vcGVyYW5kOlNJIDIgImdwY19yZWdfb3BlcmFuZCIgInIiKV0KLS0JIFVOU1BFQ19DTVBSQjIpKQotLSAgIChzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQotLQkoaWZfdGhlbl9lbHNlOlNJIChsdCAobWF0Y2hfZHVwIDMpCi0tCQkJICAgICAoY29uc3RfaW50IDApKQotLQkJCSAoY29uc3RfaW50IC0xKQotLQkJCSAoaWZfdGhlbl9lbHNlIChndCAobWF0Y2hfZHVwIDMpCi0tCQkJCQkgICAoY29uc3RfaW50IDApKQotLQkJCQkgICAgICAgKGNvbnN0X2ludCAxKQotLQkJCQkgICAgICAgKGNvbnN0X2ludCAwKSkpKV0KLS0gICJUQVJHRVRfUDlfTUlTQyIKLS17Ci0tICBvcGVyYW5kc1szXSA9IGdlbl9yZWdfcnR4IChDQ21vZGUpOwotLX0pCi0tCi0tOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMSBhcmUgb3JnYW5pemVkIGFzIHh4Onh4Onh4OnZ2LCB3aGVyZSB4eAotLTs7IHJlcHJlc2VudHMgYSBieXRlIHdob3NlIHZhbHVlIGlzIGlnbm9yZWQgaW4gdGhpcyBjb250ZXh0IGFuZAotLTs7IHZ2LCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSwgaG9sZHMgdGhlIGJ5dGUgdmFsdWUgdGhhdCBpcyB0bwotLTs7IGJlIHRlc3RlZCBmb3IgbWVtYmVyc2hpcCB3aXRoaW4gdGhlIHJhbmdlcyBzcGVjaWZpZWQgYnkgb3BlcmFuZCAyLgotLTs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDIgYXJlIG9yZ2FuaXplZCBhcyBoaV8xOmxvXzE6aGlfMjpsb18yLgotLTs7Ci0tOzsgU2V0IGJpdCAxICh0aGUgR1QgYml0LCAweDQpIG9mIENSIHJlZ2lzdGVyIG9wZXJhbmQgMCB0byAxIGlmCi0tOzsgKGxvXzEgPD0gdnYgYW5kIHZ2IDw9IGhpXzEpIG9yIGlmIChsb18yIDw9IHZ2IGFuZCB2diA8PSBoaV8yKS4KLS07OyBPdGhlcndpc2UsIHNldCB0aGUgR1QgYml0IHRvIDAuICBUaGUgb3RoZXIgMyBiaXRzIG9mIHRoZSB0YXJnZXQKLS07OyBDUiByZWdpc3RlciBhcmUgYWxsIHNldCB0byAwLgotLShkZWZpbmVfaW5zbiAiKmNtcHJiMl9pbnRlcm5hbCIKLS0gIFsoc2V0IChtYXRjaF9vcGVyYW5kOkNDIDAgImNjX3JlZ19vcGVyYW5kIiAiPXkiKQotLQkodW5zcGVjOkNDIFsobWF0Y2hfb3BlcmFuZDpTSSAxICJncGNfcmVnX29wZXJhbmQiICJyIikKLS0JCSAgICAobWF0Y2hfb3BlcmFuZDpTSSAyICJncGNfcmVnX29wZXJhbmQiICJyIildCi0tCSBVTlNQRUNfQ01QUkIyKSldCi0tICAiVEFSR0VUX1A5X01JU0MiCi0tICAiY21wcmIgJTAsMSwlMSwlMiIKLS0gIFsoc2V0X2F0dHIgInR5cGUiICJsb2dpY2FsIildKQotLQotLTs7IFRlc3QgYnl0ZSBtZW1iZXJzaGlwIHdpdGhpbiBzZXQgb2YgOCBieXRlcy4KLS07OwotLTs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDEgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDp4eDp2diwgd2hlcmUgeHgKLS07OyByZXByZXNlbnRzIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBpZ25vcmVkIGluIHRoaXMgY29udGV4dCBhbmQKLS07OyB2diwgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUsIGhvbGRzIHRoZSBieXRlIHZhbHVlIHRoYXQgaXMgdG8KLS07OyBiZSB0ZXN0ZWQgZm9yIG1lbWJlcnNoaXAgd2l0aGluIHRoZSBzZXQgc3BlY2lmaWVkIGJ5IG9wZXJhbmQgMi4KLS07OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAyIGFyZSBvcmdhbml6ZWQgYXMgZTA6ZTE6ZTI6ZTM6ZTQ6ZTU6ZTY6ZTcuCi0tOzsKLS07OyBSZXR1cm4gaW4gdGFyZ2V0IHJlZ2lzdGVyIG9wZXJhbmQgMCBhIHZhbHVlIG9mIDEgaWYgdnYgZXF1YWxzIG9uZQotLTs7IG9mIHRoZSB2YWx1ZXMgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIG9yIGU3LiAgT3RoZXJ3aXNlLCBzZXQKLS07OyByZWdpc3RlciBvcGVyYW5kIDAgdG8gMC4gIE5vdGUgdGhhdCB0aGUgOCBieXRlIHZhbHVlcyBoZWxkIHdpdGhpbgotLTs7IG9wZXJhbmQgMiBuZWVkIG5vdCBiZSB1bmlxdWUuCi0tOzsKLS07OyBUaG91Z2ggdGhlIGluc3RydWN0aW9ucyB0byB3aGljaCB0aGlzIGV4cGFuc2lvbiBtYXBzIG9wZXJhdGUgb24KLS07OyA2NC1iaXQgcmVnaXN0ZXJzLCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcyB0aGF0IG9wZXJhbmRzCi0tOzsgMCBhbmQgMSBoYXZlIG1vZGUgU0kgYXMgdGhlIGhpZ2gtb3JkZXIgYml0cyBwcm92aWRlIG5vIGluZm9ybWF0aW9uCi0tOzsgdGhhdCBpcyBub3QgYWxyZWFkeSBhdmFpbGFibGUgaW4gdGhlIGxvdy1vcmRlciBiaXRzLiAgVG8gYXZvaWQgdGhlCi0tOzsgY29zdHMgb2YgZGF0YSB3aWRlbmluZyBvcGVyYXRpb25zLCBmdXR1cmUgZW5oYW5jZW1lbnRzIG1pZ2h0IGFsbG93Ci0tOzsgREkgbW9kZSBmb3Igb3BlcmFuZCAwIGFuZC9vciBtaWdodCBhbGxvdyBvcGVyYW5kIDEgdG8gYmUgUUkgbW9kZS4KLS0oZGVmaW5lX2V4cGFuZCAiY21wZXFiIgotLSAgWyhzZXQgKG1hdGNoX2R1cCAzKQotLQkodW5zcGVjOkNDIFsobWF0Y2hfb3BlcmFuZDpTSSAxICJncGNfcmVnX29wZXJhbmQiICJyIikKLS0JCSAgICAobWF0Y2hfb3BlcmFuZDpESSAyICJncGNfcmVnX29wZXJhbmQiICJyIildCi0tCSBVTlNQRUNfQ01QRVFCKSkKLS0gICAoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdfb3BlcmFuZCIgIj1yIikKLS0JKGlmX3RoZW5fZWxzZTpTSSAobHQgKG1hdGNoX2R1cCAzKQotLQkJCSAgICAgKGNvbnN0X2ludCAwKSkKLS0JCQkgKGNvbnN0X2ludCAtMSkKLS0JCQkgKGlmX3RoZW5fZWxzZSAoZ3QgKG1hdGNoX2R1cCAzKQotLQkJCQkJICAgKGNvbnN0X2ludCAwKSkKLS0JCQkJICAgICAgIChjb25zdF9pbnQgMSkKLS0JCQkJICAgICAgIChjb25zdF9pbnQgMCkpKSldCi0tICAiVEFSR0VUX1A5X01JU0MgJiYgVEFSR0VUXzY0QklUIgotLXsKLS0gIG9wZXJhbmRzWzNdID0gZ2VuX3JlZ19ydHggKENDbW9kZSk7Ci0tfSkKLS0KLS07OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAxIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6eHg6dnYsIHdoZXJlIHh4Ci0tOzsgcmVwcmVzZW50cyBhIGJ5dGUgd2hvc2UgdmFsdWUgaXMgaWdub3JlZCBpbiB0aGlzIGNvbnRleHQgYW5kCi0tOzsgdnYsIHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlLCBob2xkcyB0aGUgYnl0ZSB2YWx1ZSB0aGF0IGlzIHRvCi0tOzsgYmUgdGVzdGVkIGZvciBtZW1iZXJzaGlwIHdpdGhpbiB0aGUgc2V0IHNwZWNpZmllZCBieSBvcGVyYW5kIDIuCi0tOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMiBhcmUgb3JnYW5pemVkIGFzIGUwOmUxOmUyOmUzOmU0OmU1OmU2OmU3LgotLTs7Ci0tOzsgU2V0IGJpdCAxICh0aGUgR1QgYml0LCAweDQpIG9mIENSIHJlZ2lzdGVyIG9wZXJhbmQgMCB0byAxIGlmIHZ2Ci0tOzsgZXF1YWxzIG9uZSBvZiB0aGUgdmFsdWVzIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBvciBlNy4gIE90aGVyd2lzZSwKLS07OyBzZXQgdGhlIEdUIGJpdCB0byB6ZXJvLiAgVGhlIG90aGVyIDMgYml0cyBvZiB0aGUgdGFyZ2V0IENSIHJlZ2lzdGVyCi0tOzsgYXJlIGFsbCBzZXQgdG8gMC4KLS0oZGVmaW5lX2luc24gIipjbXBlcWJfaW50ZXJuYWwiCi0tICBbKHNldCAobWF0Y2hfb3BlcmFuZDpDQyAwICJjY19yZWdfb3BlcmFuZCIgIj15IikKLS0JICh1bnNwZWM6Q0MgWyhtYXRjaF9vcGVyYW5kOlNJIDEgImdwY19yZWdfb3BlcmFuZCIgInIiKQotLQkJICAgICAobWF0Y2hfb3BlcmFuZDpESSAyICJncGNfcmVnX29wZXJhbmQiICJyIildCi0tCSAgVU5TUEVDX0NNUEVRQikpXQotLSAgIlRBUkdFVF9QOV9NSVNDICYmIFRBUkdFVF82NEJJVCIKLS0gICJjbXBlcWIgJTAsJTEsJTIiCi0tICBbKHNldF9hdHRyICJ0eXBlIiAibG9naWNhbCIpXSkKLS0KLSAoZGVmaW5lX2V4cGFuZCAiYmNkPGJjZF9hZGRfc3ViPl88Y29kZT4iCi0gICBbKHBhcmFsbGVsIFsoc2V0IChyZWc6Q0NGUCBDUjZfUkVHTk8pCi0gCQkgICAoY29tcGFyZTpDQ0ZQCi1JbmRleDogZ2NjLTkuMi4wL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5tZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy05LjIuMC5vcmlnL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5tZAotKysrIGdjYy05LjIuMC9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAubWQKLUBAIC0xMzcsNiArMTM3LDEyIEBACi0gICAgVU5TUEVDX0xTUQotICAgIFVOU1BFQ19GVVNJT05fR1BSCi0gICAgVU5TUEVDX1NUQUNLX0NIRUNLCi0rICAgVU5TUEVDX0RBUk4KLSsgICBVTlNQRUNfREFSTl8zMgotKyAgIFVOU1BFQ19EQVJOX1JBVwotKyAgIFVOU1BFQ19DTVBSQgotKyAgIFVOU1BFQ19DTVBSQjIKLSsgICBVTlNQRUNfQ01QRVFCCi0gICAgVU5TUEVDX0FERF9ST1VORF9UT19PREQKLSAgICBVTlNQRUNfU1VCX1JPVU5EX1RPX09ERAotICAgIFVOU1BFQ19NVUxfUk9VTkRfVE9fT0RECi1AQCAtMTQzMjIsNyArMTQzMjgsMjI1IEBACi0gICAgInhzY21wdXFwICUwLCUxLCUyIgotICAgWyhzZXRfYXR0ciAidHlwZSIgInZlY2NtcCIpCi0gICAgKHNldF9hdHRyICJzaXplIiAiMTI4IildKQotKwwKLSs7OyBNaXNjZWxsYW5lb3VzIElTQSAzLjAgKHBvd2VyOSkgaW5zdHJ1Y3Rpb25zCi0rCi0rKGRlZmluZV9pbnNuICJkYXJuXzMyIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yIikKLSsgICAgICAgICh1bnNwZWM6U0kgWyhjb25zdF9pbnQgMCldIFVOU1BFQ19EQVJOXzMyKSldCi0rICAiVEFSR0VUX1A5X01JU0MiCi0rICAiZGFybiAlMCwwIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgImludGVnZXIiKV0pCi0rCi0rKGRlZmluZV9pbnNuICJkYXJuX3JhdyIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkRJIDAgInJlZ2lzdGVyX29wZXJhbmQiICI9ciIpCi0rICAgICAgICAodW5zcGVjOkRJIFsoY29uc3RfaW50IDApXSBVTlNQRUNfREFSTl9SQVcpKV0KLSsgICJUQVJHRVRfUDlfTUlTQyAmJiBUQVJHRVRfNjRCSVQiCi0rICAiZGFybiAlMCwyIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgImludGVnZXIiKV0pCi0rCi0rKGRlZmluZV9pbnNuICJkYXJuIgotKyAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yIikKLSsgICAgICAgICh1bnNwZWM6REkgWyhjb25zdF9pbnQgMCldIFVOU1BFQ19EQVJOKSldCi0rICAiVEFSR0VUX1A5X01JU0MgJiYgVEFSR0VUXzY0QklUIgotKyAgImRhcm4gJTAsMSIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJpbnRlZ2VyIildKQotKwotKzs7IFRlc3QgYnl0ZSB3aXRoaW4gcmFuZ2UuCi0rOzsKLSs7OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAxIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6eHg6dnYsIHdoZXJlIHh4Ci0rOzsgcmVwcmVzZW50cyBhIGJ5dGUgd2hvc2UgdmFsdWUgaXMgaWdub3JlZCBpbiB0aGlzIGNvbnRleHQgYW5kCi0rOzsgdnYsIHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlLCBob2xkcyB0aGUgYnl0ZSB2YWx1ZSB0aGF0IGlzIHRvCi0rOzsgYmUgdGVzdGVkIGZvciBtZW1iZXJzaGlwIHdpdGhpbiB0aGUgcmFuZ2Ugc3BlY2lmaWVkIGJ5IG9wZXJhbmQgMi4KLSs7OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAyIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6aGk6bG8uCi0rOzsKLSs7OyBSZXR1cm4gaW4gdGFyZ2V0IHJlZ2lzdGVyIG9wZXJhbmQgMCBhIHZhbHVlIG9mIDEgaWYgbG8gPD0gdnYgYW5kCi0rOzsgdnYgPD0gaGkuICBPdGhlcndpc2UsIHNldCByZWdpc3RlciBvcGVyYW5kIDAgdG8gMC4KLSs7OwotKzs7IFRob3VnaCB0aGUgaW5zdHJ1Y3Rpb25zIHRvIHdoaWNoIHRoaXMgZXhwYW5zaW9uIG1hcHMgb3BlcmF0ZSBvbgotKzs7IDY0LWJpdCByZWdpc3RlcnMsIHRoZSBjdXJyZW50IGltcGxlbWVudGF0aW9uIG9ubHkgb3BlcmF0ZXMgb24KLSs7OyBTSS1tb2RlIG9wZXJhbmRzIGFzIHRoZSBoaWdoLW9yZGVyIGJpdHMgcHJvdmlkZSBubyBpbmZvcm1hdGlvbgotKzs7IHRoYXQgaXMgbm90IGFscmVhZHkgYXZhaWxhYmxlIGluIHRoZSBsb3ctb3JkZXIgYml0cy4gIFRvIGF2b2lkIHRoZQotKzs7IGNvc3RzIG9mIGRhdGEgd2lkZW5pbmcgb3BlcmF0aW9ucywgZnV0dXJlIGVuaGFuY2VtZW50cyBtaWdodCBhbGxvdwotKzs7IERJIG1vZGUgZm9yIG9wZXJhbmQgMCBhbmQvb3IgbWlnaHQgYWxsb3cgb3BlcmFuZCAxIHRvIGJlIFFJIG1vZGUuCi0rKGRlZmluZV9leHBhbmQgImNtcHJiIgotKyAgWyhzZXQgKG1hdGNoX2R1cCAzKQotKwkodW5zcGVjOkNDIFsobWF0Y2hfb3BlcmFuZDpTSSAxICJncGNfcmVnX29wZXJhbmQiICJyIikKLSsJCSAgICAobWF0Y2hfb3BlcmFuZDpTSSAyICJncGNfcmVnX29wZXJhbmQiICJyIildCi0rCSBVTlNQRUNfQ01QUkIpKQotKyAgIChzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQotKwkoaWZfdGhlbl9lbHNlOlNJIChsdCAobWF0Y2hfZHVwIDMpCi0rCQkJICAgICAoY29uc3RfaW50IDApKQotKwkJCSAoY29uc3RfaW50IC0xKQotKwkJCSAoaWZfdGhlbl9lbHNlIChndCAobWF0Y2hfZHVwIDMpCi0rCQkJCQkgICAoY29uc3RfaW50IDApKQotKwkJCQkgICAgICAgKGNvbnN0X2ludCAxKQotKwkJCQkgICAgICAgKGNvbnN0X2ludCAwKSkpKV0KLSsgICJUQVJHRVRfUDlfTUlTQyIKLSt7Ci0rICBvcGVyYW5kc1szXSA9IGdlbl9yZWdfcnR4IChDQ21vZGUpOwotK30pCi0rCi0rOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMSBhcmUgb3JnYW5pemVkIGFzIHh4Onh4Onh4OnZ2LCB3aGVyZSB4eAotKzs7IHJlcHJlc2VudHMgYSBieXRlIHdob3NlIHZhbHVlIGlzIGlnbm9yZWQgaW4gdGhpcyBjb250ZXh0IGFuZAotKzs7IHZ2LCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSwgaG9sZHMgdGhlIGJ5dGUgdmFsdWUgdGhhdCBpcyB0bwotKzs7IGJlIHRlc3RlZCBmb3IgbWVtYmVyc2hpcCB3aXRoaW4gdGhlIHJhbmdlIHNwZWNpZmllZCBieSBvcGVyYW5kIDIuCi0rOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMiBhcmUgb3JnYW5pemVkIGFzIHh4Onh4OmhpOmxvLgotKzs7Ci0rOzsgU2V0IGJpdCAxICh0aGUgR1QgYml0LCAweDQpIG9mIENSIHJlZ2lzdGVyIG9wZXJhbmQgMCB0byAxIGlmCi0rOzsgbG8gPD0gdnYgYW5kIHZ2IDw9IGhpLiAgT3RoZXJ3aXNlLCBzZXQgdGhlIEdUIGJpdCB0byAwLiAgVGhlIG90aGVyCi0rOzsgMyBiaXRzIG9mIHRoZSB0YXJnZXQgQ1IgcmVnaXN0ZXIgYXJlIGFsbCBzZXQgdG8gMC4KLSsoZGVmaW5lX2luc24gIipjbXByYl9pbnRlcm5hbCIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkNDIDAgImNjX3JlZ19vcGVyYW5kIiAiPXkiKQotKwkodW5zcGVjOkNDIFsobWF0Y2hfb3BlcmFuZDpTSSAxICJncGNfcmVnX29wZXJhbmQiICJyIikKLSsJCSAgICAobWF0Y2hfb3BlcmFuZDpTSSAyICJncGNfcmVnX29wZXJhbmQiICJyIildCi0rCSBVTlNQRUNfQ01QUkIpKV0KLSsgICJUQVJHRVRfUDlfTUlTQyIKLSsgICJjbXByYiAlMCwwLCUxLCUyIgotKyAgWyhzZXRfYXR0ciAidHlwZSIgImxvZ2ljYWwiKV0pCi0rCi0rOzsgU2V0IG9wZXJhbmQgMCByZWdpc3RlciB0byAtMSBpZiB0aGUgTFQgYml0ICgweDgpIG9mIGNvbmRpdGlvbgotKzs7IHJlZ2lzdGVyIG9wZXJhbmQgMSBpcyBvbi4gIE90aGVyd2lzZSwgc2V0IG9wZXJhbmQgMCByZWdpc3RlciB0byAxCi0rOzsgaWYgdGhlIEdUIGJpdCAoMHg0KSBvZiBjb25kaXRpb24gcmVnaXN0ZXIgb3BlcmFuZCAxIGlzIG9uLgotKzs7IE90aGVyd2lzZSwgc2V0IG9wZXJhbmQgMCB0byAwLiAgTm90ZSB0aGF0IHRoZSByZXN1bHQgc3RvcmVkIGludG8KLSs7OyByZWdpc3RlciBvcGVyYW5kIDAgaXMgbm9uLXplcm8gaWZmIGVpdGhlciB0aGUgTFQgb3IgR1QgYml0cyBhcmUgb24KLSs7OyB3aXRoaW4gY29uZGl0aW9uIHJlZ2lzdGVyIG9wZXJhbmQgMS4KLSsoZGVmaW5lX2luc24gInNldGJfc2lnbmVkIgotKyAgIFsoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdfb3BlcmFuZCIgIj1yIikKLSsJIChpZl90aGVuX2Vsc2U6U0kgKGx0IChtYXRjaF9vcGVyYW5kOkNDIDEgImNjX3JlZ19vcGVyYW5kIiAieSIpCi0rCQkJICAgICAgKGNvbnN0X2ludCAwKSkKLSsJCQkgIChjb25zdF9pbnQgLTEpCi0rCQkJICAoaWZfdGhlbl9lbHNlIChndCAobWF0Y2hfZHVwIDEpCi0rCQkJCQkgICAgKGNvbnN0X2ludCAwKSkKLSsJCQkJCShjb25zdF9pbnQgMSkKLSsJCQkJCShjb25zdF9pbnQgMCkpKSldCi0rICAiVEFSR0VUX1A5X01JU0MiCi0rICAic2V0YiAlMCwlMSIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJsb2dpY2FsIildKQotIAotKyhkZWZpbmVfaW5zbiAic2V0Yl91bnNpZ25lZCIKLSsgICBbKHNldCAobWF0Y2hfb3BlcmFuZDpTSSAwICJncGNfcmVnX29wZXJhbmQiICI9ciIpCi0rCSAoaWZfdGhlbl9lbHNlOlNJIChsdHUgKG1hdGNoX29wZXJhbmQ6Q0NVTlMgMSAiY2NfcmVnX29wZXJhbmQiICJ5IikKLSsJCQkgICAgICAoY29uc3RfaW50IDApKQotKwkJCSAgKGNvbnN0X2ludCAtMSkKLSsJCQkgIChpZl90aGVuX2Vsc2UgKGd0dSAobWF0Y2hfZHVwIDEpCi0rCQkJCQkgICAgKGNvbnN0X2ludCAwKSkKLSsJCQkJCShjb25zdF9pbnQgMSkKLSsJCQkJCShjb25zdF9pbnQgMCkpKSldCi0rICAiVEFSR0VUX1A5X01JU0MiCi0rICAic2V0YiAlMCwlMSIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJsb2dpY2FsIildKQotKwotKzs7IFRlc3QgYnl0ZSB3aXRoaW4gdHdvIHJhbmdlcy4KLSs7OwotKzs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDEgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDp4eDp2diwgd2hlcmUgeHgKLSs7OyByZXByZXNlbnRzIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBpZ25vcmVkIGluIHRoaXMgY29udGV4dCBhbmQKLSs7OyB2diwgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUsIGhvbGRzIHRoZSBieXRlIHZhbHVlIHRoYXQgaXMgdG8KLSs7OyBiZSB0ZXN0ZWQgZm9yIG1lbWJlcnNoaXAgd2l0aGluIHRoZSByYW5nZSBzcGVjaWZpZWQgYnkgb3BlcmFuZCAyLgotKzs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDIgYXJlIG9yZ2FuaXplZCBhcyBoaV8xOmxvXzE6aGlfMjpsb18yLgotKzs7Ci0rOzsgUmV0dXJuIGluIHRhcmdldCByZWdpc3RlciBvcGVyYW5kIDAgYSB2YWx1ZSBvZiAxIGlmIChsb18xIDw9IHZ2IGFuZAotKzs7IHZ2IDw9IGhpXzEpIG9yIGlmIChsb18yIDw9IHZ2IGFuZCB2diA8PSBoaV8yKS4gIE90aGVyd2lzZSwgc2V0IHJlZ2lzdGVyCi0rOzsgb3BlcmFuZCAwIHRvIDAuCi0rOzsKLSs7OyBUaG91Z2ggdGhlIGluc3RydWN0aW9ucyB0byB3aGljaCB0aGlzIGV4cGFuc2lvbiBtYXBzIG9wZXJhdGUgb24KLSs7OyA2NC1iaXQgcmVnaXN0ZXJzLCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiBvbmx5IG9wZXJhdGVzIG9uCi0rOzsgU0ktbW9kZSBvcGVyYW5kcyBhcyB0aGUgaGlnaC1vcmRlciBiaXRzIHByb3ZpZGUgbm8gaW5mb3JtYXRpb24KLSs7OyB0aGF0IGlzIG5vdCBhbHJlYWR5IGF2YWlsYWJsZSBpbiB0aGUgbG93LW9yZGVyIGJpdHMuICBUbyBhdm9pZCB0aGUKLSs7OyBjb3N0cyBvZiBkYXRhIHdpZGVuaW5nIG9wZXJhdGlvbnMsIGZ1dHVyZSBlbmhhbmNlbWVudHMgbWlnaHQgYWxsb3cKLSs7OyBESSBtb2RlIGZvciBvcGVyYW5kIDAgYW5kL29yIG1pZ2h0IGFsbG93IG9wZXJhbmQgMSB0byBiZSBRSSBtb2RlLgotKyhkZWZpbmVfZXhwYW5kICJjbXByYjIiCi0rICBbKHNldCAobWF0Y2hfZHVwIDMpCi0rCSh1bnNwZWM6Q0MgWyhtYXRjaF9vcGVyYW5kOlNJIDEgImdwY19yZWdfb3BlcmFuZCIgInIiKQotKwkJICAgIChtYXRjaF9vcGVyYW5kOlNJIDIgImdwY19yZWdfb3BlcmFuZCIgInIiKV0KLSsJIFVOU1BFQ19DTVBSQjIpKQotKyAgIChzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAiZ3BjX3JlZ19vcGVyYW5kIiAiPXIiKQotKwkoaWZfdGhlbl9lbHNlOlNJIChsdCAobWF0Y2hfZHVwIDMpCi0rCQkJICAgICAoY29uc3RfaW50IDApKQotKwkJCSAoY29uc3RfaW50IC0xKQotKwkJCSAoaWZfdGhlbl9lbHNlIChndCAobWF0Y2hfZHVwIDMpCi0rCQkJCQkgICAoY29uc3RfaW50IDApKQotKwkJCQkgICAgICAgKGNvbnN0X2ludCAxKQotKwkJCQkgICAgICAgKGNvbnN0X2ludCAwKSkpKV0KLSsgICJUQVJHRVRfUDlfTUlTQyIKLSt7Ci0rICBvcGVyYW5kc1szXSA9IGdlbl9yZWdfcnR4IChDQ21vZGUpOwotK30pCi0rCi0rOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMSBhcmUgb3JnYW5pemVkIGFzIHh4Onh4Onh4OnZ2LCB3aGVyZSB4eAotKzs7IHJlcHJlc2VudHMgYSBieXRlIHdob3NlIHZhbHVlIGlzIGlnbm9yZWQgaW4gdGhpcyBjb250ZXh0IGFuZAotKzs7IHZ2LCB0aGUgbGVhc3Qgc2lnbmlmaWNhbnQgYnl0ZSwgaG9sZHMgdGhlIGJ5dGUgdmFsdWUgdGhhdCBpcyB0bwotKzs7IGJlIHRlc3RlZCBmb3IgbWVtYmVyc2hpcCB3aXRoaW4gdGhlIHJhbmdlcyBzcGVjaWZpZWQgYnkgb3BlcmFuZCAyLgotKzs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDIgYXJlIG9yZ2FuaXplZCBhcyBoaV8xOmxvXzE6aGlfMjpsb18yLgotKzs7Ci0rOzsgU2V0IGJpdCAxICh0aGUgR1QgYml0LCAweDQpIG9mIENSIHJlZ2lzdGVyIG9wZXJhbmQgMCB0byAxIGlmCi0rOzsgKGxvXzEgPD0gdnYgYW5kIHZ2IDw9IGhpXzEpIG9yIGlmIChsb18yIDw9IHZ2IGFuZCB2diA8PSBoaV8yKS4KLSs7OyBPdGhlcndpc2UsIHNldCB0aGUgR1QgYml0IHRvIDAuICBUaGUgb3RoZXIgMyBiaXRzIG9mIHRoZSB0YXJnZXQKLSs7OyBDUiByZWdpc3RlciBhcmUgYWxsIHNldCB0byAwLgotKyhkZWZpbmVfaW5zbiAiKmNtcHJiMl9pbnRlcm5hbCIKLSsgIFsoc2V0IChtYXRjaF9vcGVyYW5kOkNDIDAgImNjX3JlZ19vcGVyYW5kIiAiPXkiKQotKwkodW5zcGVjOkNDIFsobWF0Y2hfb3BlcmFuZDpTSSAxICJncGNfcmVnX29wZXJhbmQiICJyIikKLSsJCSAgICAobWF0Y2hfb3BlcmFuZDpTSSAyICJncGNfcmVnX29wZXJhbmQiICJyIildCi0rCSBVTlNQRUNfQ01QUkIyKSldCi0rICAiVEFSR0VUX1A5X01JU0MiCi0rICAiY21wcmIgJTAsMSwlMSwlMiIKLSsgIFsoc2V0X2F0dHIgInR5cGUiICJsb2dpY2FsIildKQotKwotKzs7IFRlc3QgYnl0ZSBtZW1iZXJzaGlwIHdpdGhpbiBzZXQgb2YgOCBieXRlcy4KLSs7OwotKzs7IFRoZSBieXRlcyBvZiBvcGVyYW5kIDEgYXJlIG9yZ2FuaXplZCBhcyB4eDp4eDp4eDp2diwgd2hlcmUgeHgKLSs7OyByZXByZXNlbnRzIGEgYnl0ZSB3aG9zZSB2YWx1ZSBpcyBpZ25vcmVkIGluIHRoaXMgY29udGV4dCBhbmQKLSs7OyB2diwgdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUsIGhvbGRzIHRoZSBieXRlIHZhbHVlIHRoYXQgaXMgdG8KLSs7OyBiZSB0ZXN0ZWQgZm9yIG1lbWJlcnNoaXAgd2l0aGluIHRoZSBzZXQgc3BlY2lmaWVkIGJ5IG9wZXJhbmQgMi4KLSs7OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAyIGFyZSBvcmdhbml6ZWQgYXMgZTA6ZTE6ZTI6ZTM6ZTQ6ZTU6ZTY6ZTcuCi0rOzsKLSs7OyBSZXR1cm4gaW4gdGFyZ2V0IHJlZ2lzdGVyIG9wZXJhbmQgMCBhIHZhbHVlIG9mIDEgaWYgdnYgZXF1YWxzIG9uZQotKzs7IG9mIHRoZSB2YWx1ZXMgZTAsIGUxLCBlMiwgZTMsIGU0LCBlNSwgZTYsIG9yIGU3LiAgT3RoZXJ3aXNlLCBzZXQKLSs7OyByZWdpc3RlciBvcGVyYW5kIDAgdG8gMC4gIE5vdGUgdGhhdCB0aGUgOCBieXRlIHZhbHVlcyBoZWxkIHdpdGhpbgotKzs7IG9wZXJhbmQgMiBuZWVkIG5vdCBiZSB1bmlxdWUuCi0rOzsKLSs7OyBUaG91Z2ggdGhlIGluc3RydWN0aW9ucyB0byB3aGljaCB0aGlzIGV4cGFuc2lvbiBtYXBzIG9wZXJhdGUgb24KLSs7OyA2NC1iaXQgcmVnaXN0ZXJzLCB0aGUgY3VycmVudCBpbXBsZW1lbnRhdGlvbiByZXF1aXJlcyB0aGF0IG9wZXJhbmRzCi0rOzsgMCBhbmQgMSBoYXZlIG1vZGUgU0kgYXMgdGhlIGhpZ2gtb3JkZXIgYml0cyBwcm92aWRlIG5vIGluZm9ybWF0aW9uCi0rOzsgdGhhdCBpcyBub3QgYWxyZWFkeSBhdmFpbGFibGUgaW4gdGhlIGxvdy1vcmRlciBiaXRzLiAgVG8gYXZvaWQgdGhlCi0rOzsgY29zdHMgb2YgZGF0YSB3aWRlbmluZyBvcGVyYXRpb25zLCBmdXR1cmUgZW5oYW5jZW1lbnRzIG1pZ2h0IGFsbG93Ci0rOzsgREkgbW9kZSBmb3Igb3BlcmFuZCAwIGFuZC9vciBtaWdodCBhbGxvdyBvcGVyYW5kIDEgdG8gYmUgUUkgbW9kZS4KLSsoZGVmaW5lX2V4cGFuZCAiY21wZXFiIgotKyAgWyhzZXQgKG1hdGNoX2R1cCAzKQotKwkodW5zcGVjOkNDIFsobWF0Y2hfb3BlcmFuZDpTSSAxICJncGNfcmVnX29wZXJhbmQiICJyIikKLSsJCSAgICAobWF0Y2hfb3BlcmFuZDpESSAyICJncGNfcmVnX29wZXJhbmQiICJyIildCi0rCSBVTlNQRUNfQ01QRVFCKSkKLSsgICAoc2V0IChtYXRjaF9vcGVyYW5kOlNJIDAgImdwY19yZWdfb3BlcmFuZCIgIj1yIikKLSsJKGlmX3RoZW5fZWxzZTpTSSAobHQgKG1hdGNoX2R1cCAzKQotKwkJCSAgICAgKGNvbnN0X2ludCAwKSkKLSsJCQkgKGNvbnN0X2ludCAtMSkKLSsJCQkgKGlmX3RoZW5fZWxzZSAoZ3QgKG1hdGNoX2R1cCAzKQotKwkJCQkJICAgKGNvbnN0X2ludCAwKSkKLSsJCQkJICAgICAgIChjb25zdF9pbnQgMSkKLSsJCQkJICAgICAgIChjb25zdF9pbnQgMCkpKSldCi0rICAiVEFSR0VUX1A5X01JU0MgJiYgVEFSR0VUXzY0QklUIgotK3sKLSsgIG9wZXJhbmRzWzNdID0gZ2VuX3JlZ19ydHggKENDbW9kZSk7Ci0rfSkKLSsKLSs7OyBUaGUgYnl0ZXMgb2Ygb3BlcmFuZCAxIGFyZSBvcmdhbml6ZWQgYXMgeHg6eHg6eHg6dnYsIHdoZXJlIHh4Ci0rOzsgcmVwcmVzZW50cyBhIGJ5dGUgd2hvc2UgdmFsdWUgaXMgaWdub3JlZCBpbiB0aGlzIGNvbnRleHQgYW5kCi0rOzsgdnYsIHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlLCBob2xkcyB0aGUgYnl0ZSB2YWx1ZSB0aGF0IGlzIHRvCi0rOzsgYmUgdGVzdGVkIGZvciBtZW1iZXJzaGlwIHdpdGhpbiB0aGUgc2V0IHNwZWNpZmllZCBieSBvcGVyYW5kIDIuCi0rOzsgVGhlIGJ5dGVzIG9mIG9wZXJhbmQgMiBhcmUgb3JnYW5pemVkIGFzIGUwOmUxOmUyOmUzOmU0OmU1OmU2OmU3LgotKzs7Ci0rOzsgU2V0IGJpdCAxICh0aGUgR1QgYml0LCAweDQpIG9mIENSIHJlZ2lzdGVyIG9wZXJhbmQgMCB0byAxIGlmIHZ2Ci0rOzsgZXF1YWxzIG9uZSBvZiB0aGUgdmFsdWVzIGUwLCBlMSwgZTIsIGUzLCBlNCwgZTUsIGU2LCBvciBlNy4gIE90aGVyd2lzZSwKLSs7OyBzZXQgdGhlIEdUIGJpdCB0byB6ZXJvLiAgVGhlIG90aGVyIDMgYml0cyBvZiB0aGUgdGFyZ2V0IENSIHJlZ2lzdGVyCi0rOzsgYXJlIGFsbCBzZXQgdG8gMC4KLSsoZGVmaW5lX2luc24gIipjbXBlcWJfaW50ZXJuYWwiCi0rICBbKHNldCAobWF0Y2hfb3BlcmFuZDpDQyAwICJjY19yZWdfb3BlcmFuZCIgIj15IikKLSsJICh1bnNwZWM6Q0MgWyhtYXRjaF9vcGVyYW5kOlNJIDEgImdwY19yZWdfb3BlcmFuZCIgInIiKQotKwkJICAgICAobWF0Y2hfb3BlcmFuZDpESSAyICJncGNfcmVnX29wZXJhbmQiICJyIildCi0rCSAgVU5TUEVDX0NNUEVRQikpXQotKyAgIlRBUkdFVF9QOV9NSVNDICYmIFRBUkdFVF82NEJJVCIKLSsgICJjbXBlcWIgJTAsJTEsJTIiCi0rICBbKHNldF9hdHRyICJ0eXBlIiAibG9naWNhbCIpXSkKLSAMCi0gCi0gKGluY2x1ZGUgInN5bmMubWQiKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvQ1ZFLTIwMTktMTU4NDdfMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yL0NWRS0yMDE5LTE1ODQ3XzIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlN2E4M2MuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjIvQ1ZFLTIwMTktMTU4NDdfMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLUZyb20gODdiYzc4NGE3Y2EzYTQzMTgyZjcyNzIyNDE1OTdhNTBkNzQ5MTM0MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHNlZ2hlciA8c2VnaGVyQDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhND4KLURhdGU6IEZyaSwgMzAgQXVnIDIwMTkgMTM6NTE6MjYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gCUJhY2twb3J0IGZyb20gdHJ1bmsgCTIwMTktMDgtMjIgIFNlZ2hlciBCb2Vzc2Vua29vbAotICA8c2VnaGVyQGtlcm5lbC5jcmFzaGluZy5vcmc+Ci0KLQlQUiB0YXJnZXQvOTE0ODEKLQkqIGNvbmZpZy9yczYwMDAvcnM2MDAwLm1kICh1bnNwZWMpOiBEZWxldGUgVU5TUEVDX0RBUk4sIFVOU1BFQ19EQVJOXzMyLAotCWFuZCBVTlNQRUNfREFSTl9SQVcuCi0JKHVuc3BlY3YpOiBOZXcgZW51bWVyYXRvciB2YWx1ZXMgVU5TUEVDVl9EQVJOLCBVTlNQRUNWX0RBUk5fMzIsIGFuZAotCVVOU1BFQ1ZfREFSTl9SQVcuCi0JKGRhcm5fMzIpOiBVc2UgYW4gdW5zcGVjX3ZvbGF0aWxlLCBhbmQgVU5TUEVDVl9EQVJOXzMyLgotCShkYXJuX3Jhdyk6IFVzZSBhbiB1bnNwZWNfdm9sYXRpbGUsIGFuZCBVTlNQRUNWX0RBUk5fUkFXLgotCShkYXJuKTogVXNlIGFuIHVuc3BlY192b2xhdGlsZSwgYW5kIFVOU1BFQ1ZfREFSTi4KLQotCi1naXQtc3ZuLWlkOiBzdm4rc3NoOi8vZ2NjLmdudS5vcmcvc3ZuL2djYy9icmFuY2hlcy9nY2MtOS1icmFuY2hAMjc1MTc1IDEzOGJjNzVkLTBkMDQtMDQxMC05NjFmLTgyZWU3MmIwNTRhNAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1DVkU6IENWRS0yMDE5LTE1ODQ3IHAyCi1BZmZlY3RzIDw9IDkuMi4wCi1Ecm9wcGVkIENoYW5nZWxvZyBjaGFuZ2VzCi1TaWduZWQtb2ZmLWJ5OiBBcm1pbiBLdXN0ZXIgPGFrdXN0ZXJAbXZpc3RhLmNvbT4KLQotLS0tCi0gZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm1kIHwgMTIgKysrKysrLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ2NjLTkuMi4wL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5tZAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdjYy05LjIuMC5vcmlnL2djYy9jb25maWcvcnM2MDAwL3JzNjAwMC5tZAotKysrIGdjYy05LjIuMC9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAubWQKLUBAIC0xMzcsOSArMTM3LDYgQEAKLSAgICBVTlNQRUNfTFNRCi0gICAgVU5TUEVDX0ZVU0lPTl9HUFIKLSAgICBVTlNQRUNfU1RBQ0tfQ0hFQ0sKLS0gICBVTlNQRUNfREFSTgotLSAgIFVOU1BFQ19EQVJOXzMyCi0tICAgVU5TUEVDX0RBUk5fUkFXCi0gICAgVU5TUEVDX0NNUFJCCi0gICAgVU5TUEVDX0NNUFJCMgotICAgIFVOU1BFQ19DTVBFUUIKLUBAIC0xNzAsNiArMTY3LDkgQEAKLSAgICBVTlNQRUNWX0VIX1JSCQk7IGVoX3JlZ19yZXN0b3JlCi0gICAgVU5TUEVDVl9JU1lOQwkJOyBpc3luYyBpbnN0cnVjdGlvbgotICAgIFVOU1BFQ1ZfTUZUQgkJCTsgbW92ZSBmcm9tIHRpbWUgYmFzZQotKyAgIFVOU1BFQ1ZfREFSTgkJCTsgZGFybiAxIChkZWxpdmVyIGEgcmFuZG9tIG51bWJlcikKLSsgICBVTlNQRUNWX0RBUk5fMzIJCTsgZGFybiAyCi0rICAgVU5TUEVDVl9EQVJOX1JBVwkJOyBkYXJuIDAKLSAgICBVTlNQRUNWX05MR1IJCQk7IG5vbi1sb2NhbCBnb3RvIHJlY2VpdmVyCi0gICAgVU5TUEVDVl9NRkZTCQkJOyBNb3ZlIGZyb20gRlBTQ1IKLSAgICBVTlNQRUNWX01GRlNMCQk7IE1vdmUgZnJvbSBGUFNDUiBsaWdodCBpbnN0cnVjdGlvbiB2ZXJzaW9uCi1AQCAtMTQzMzMsMjEgKzE0MzMzLDIxIEBACi0gCi0gKGRlZmluZV9pbnNuICJkYXJuXzMyIgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6U0kgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yIikKLS0gICAgICAgICh1bnNwZWM6U0kgWyhjb25zdF9pbnQgMCldIFVOU1BFQ19EQVJOXzMyKSldCi0rICAgICAgICAodW5zcGVjX3ZvbGF0aWxlOlNJIFsoY29uc3RfaW50IDApXSBVTlNQRUNWX0RBUk5fMzIpKV0KLSAgICJUQVJHRVRfUDlfTUlTQyIKLSAgICJkYXJuICUwLDAiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAiaW50ZWdlciIpXSkKLSAKLSAoZGVmaW5lX2luc24gImRhcm5fcmF3IgotICAgWyhzZXQgKG1hdGNoX29wZXJhbmQ6REkgMCAicmVnaXN0ZXJfb3BlcmFuZCIgIj1yIikKLS0gICAgICAgICh1bnNwZWM6REkgWyhjb25zdF9pbnQgMCldIFVOU1BFQ19EQVJOX1JBVykpXQotKyAgICAgICAgKHVuc3BlY192b2xhdGlsZTpESSBbKGNvbnN0X2ludCAwKV0gVU5TUEVDVl9EQVJOX1JBVykpXQotICAgIlRBUkdFVF9QOV9NSVNDICYmIFRBUkdFVF82NEJJVCIKLSAgICJkYXJuICUwLDIiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAiaW50ZWdlciIpXSkKLSAKLSAoZGVmaW5lX2luc24gImRhcm4iCi0gICBbKHNldCAobWF0Y2hfb3BlcmFuZDpESSAwICJyZWdpc3Rlcl9vcGVyYW5kIiAiPXIiKQotLSAgICAgICAgKHVuc3BlYzpESSBbKGNvbnN0X2ludCAwKV0gVU5TUEVDX0RBUk4pKV0KLSsgICAgICAgICh1bnNwZWNfdm9sYXRpbGU6REkgWyhjb25zdF9pbnQgMCldIFVOU1BFQ1ZfREFSTikpXQotICAgIlRBUkdFVF9QOV9NSVNDICYmIFRBUkdFVF82NEJJVCIKLSAgICJkYXJuICUwLDEiCi0gICBbKHNldF9hdHRyICJ0eXBlIiAiaW50ZWdlciIpXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yL0NWRS0yMDE5LTE1ODQ3XzMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMi9DVkUtMjAxOS0xNTg0N18zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTcxMzBjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4yL0NWRS0yMDE5LTE1ODQ3XzMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MiArMCwwIEBACi1Gcm9tIGRjNGM4ZGQ5ZGJlNzA3NDBlYzdhNjg0YjBmMzU2MjAyNDlmYjAzNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBzZWdoZXIgPHNlZ2hlckAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+Ci1EYXRlOiBGcmksIDMwIEF1ZyAyMDE5IDEzOjUzOjExICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIAlCYWNrcG9ydCBmcm9tIHRydW5rIAkyMDE5LTA4LTIzICBTZWdoZXIgQm9lc3Nlbmtvb2wKLSAgPHNlZ2hlckBrZXJuZWwuY3Jhc2hpbmcub3JnPgotCi1nY2MvdGVzdHN1aXRlLwotCVBSIHRhcmdldC85MTQ4MQotCSogZ2NjLnRhcmdldC9wb3dlcnBjL2Rhcm4tMy5jOiBOZXcgdGVzdGNhc2UuCi0KLQotZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvYnJhbmNoZXMvZ2NjLTktYnJhbmNoQDI3NTE3NiAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotQ1ZFOiBDVkUtMjAxOS0xNTg0NyBwMwotQWZmZWN0cyA8PSA5LjIuMAotRHJvcHBlZCBDaGFuZ2Vsb2cgY2hhbmdlcwotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLS0tLQotIGdjYy90ZXN0c3VpdGUvQ2hhbmdlTG9nICAgICAgICAgICAgICAgICAgIHwgIDYgKysrKysrCi0gZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvZGFybi0zLmMgfCAxNiArKysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAyMiBpbnNlcnRpb25zKCspCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9wb3dlcnBjL2Rhcm4tMy5jCi0KLUluZGV4OiBnY2MtOS4yLjAvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvZGFybi0zLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSAvZGV2L251bGwKLSsrKyBnY2MtOS4yLjAvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L3Bvd2VycGMvZGFybi0zLmMKLUBAIC0wLDAgKzEsMTYgQEAKLSsvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyBwb3dlcnBjKi0qLSogfSB9IH0gKi8KLSsvKiB7IGRnLXNraXAtaWYgIiIgeyBwb3dlcnBjKi0qLWFpeCogfSB9ICovCi0rLyogeyBkZy1vcHRpb25zICItTzIgLW1kZWphZ251LWNwdT1wb3dlcjkiIH0gKi8KLSsKLStzdGF0aWMgaW50IGRhcm4zMih2b2lkKSB7IHJldHVybiBfX2J1aWx0aW5fZGFybl8zMigpOyB9Ci0rCi0raW50IGZvdXIodm9pZCkKLSt7Ci0rCWludCBzdW0gPSAwOwotKwlpbnQgaTsKLSsJZm9yIChpID0gMDsgaSA8IDQ7IGkrKykKLSsJCXN1bSArPSBkYXJuMzIoKTsKLSsJcmV0dXJuIHN1bTsKLSt9Ci0rCi0rLyogeyBkZy1maW5hbCB7IHNjYW4tYXNzZW1ibGVyLXRpbWVzIHsoP24pXG1kYXJuIC4qLDBcTX0gNCB9IH0gKi8KLUluZGV4OiBnY2MtOS4yLjAvZ2NjL3Rlc3RzdWl0ZS9DaGFuZ2VMb2cKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnY2MtOS4yLjAub3JpZy9nY2MvdGVzdHN1aXRlL0NoYW5nZUxvZwotKysrIGdjYy05LjIuMC9nY2MvdGVzdHN1aXRlL0NoYW5nZUxvZwotQEAgLTEsMyArMSwxMSBAQAotKzIwMTktMDgtMzAgIFNlZ2hlciBCb2Vzc2Vua29vbCAgPHNlZ2hlckBrZXJuZWwuY3Jhc2hpbmcub3JnPgotKwotKwlCYWNrcG9ydCBmcm9tIHRydW5rCi0rCTIwMTktMDgtMjMgIFNlZ2hlciBCb2Vzc2Vua29vbCAgPHNlZ2hlckBrZXJuZWwuY3Jhc2hpbmcub3JnPgotKwotKwlQUiB0YXJnZXQvOTE0ODEKLSsJKiBnY2MudGFyZ2V0L3Bvd2VycGMvZGFybi0zLmM6IE5ldyB0ZXN0Y2FzZS4KLSsKLSAyMDE5LTA4LTEyICBSZWxlYXNlIE1hbmFnZXIKLSAKLSAJKiBHQ0MgOS4yLjAgcmVsZWFzZWQuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy5pbmMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjA0MTEwNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLmluYwpAQCAtMCwwICsxLDExOSBAQAorcmVxdWlyZSBnY2MtY29tbW9uLmluYworCisjIFRoaXJkIGRpZ2l0IGluIFBWIHNob3VsZCBiZSBpbmNyZW1lbnRlZCBhZnRlciBhIG1pbm9yIHJlbGVhc2UKKworUFYgPSAiOS4zLjAiCisKKyMgQklOViBzaG91bGQgYmUgaW5jcmVtZW50ZWQgdG8gYSByZXZpc2lvbiBhZnRlciBhIG1pbm9yIGdjYyByZWxlYXNlCisKK0JJTlYgPSAiOS4zLjAiCisKK0ZJTEVTRVhUUkFQQVRIUyA9LiAiJHtGSUxFX0RJUk5BTUV9L2djYy05LjM6JHtGSUxFX0RJUk5BTUV9L2djYy05LjMvYmFja3BvcnQ6IgorCitERVBFTkRTID0rICJtcGZyIGdtcCBsaWJtcGMgemxpYiBmbGV4LW5hdGl2ZSIKK05BVElWRURFUFMgPSAibXBmci1uYXRpdmUgZ21wLW5hdGl2ZSBsaWJtcGMtbmF0aXZlIHpsaWItbmF0aXZlIGZsZXgtbmF0aXZlIgorCitMSUNFTlNFID0gIkdQTC0zLjAtd2l0aC1HQ0MtZXhjZXB0aW9uICYgR1BMdjMiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgZmlsZTovL0NPUFlJTkczLkxJQjttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAorICAgIGZpbGU6Ly9DT1BZSU5HLlJVTlRJTUU7bWQ1PWZlNjBkODcwNDg1NjdkNGZlOGM4YTBlZDI0NDhiY2M4IFwKKyIKKworQkFTRVVSSSA/PSAiJHtHTlVfTUlSUk9SfS9nY2MvZ2NjLSR7UFZ9L2djYy0ke1BWfS50YXIueHoiCisjUkVMRUFTRSA/PSAiNWE1Y2EyZCIKKyNCQVNFVVJJID89ICJodHRwczovL3JlcG8ub3IuY3ovb2ZmaWNpYWwtZ2NjLmdpdC9zbmFwc2hvdC8ke1JFTEVBU0V9LnRhci5nejtkb3dubG9hZGZpbGVuYW1lPWdjYy0ke1JFTEVBU0V9LnRhci5neiIKK1NSQ19VUkkgPSAiXAorICAgICAgICAgICAke0JBU0VVUkl9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZ2NjLTQuMy4xLUFSQ0hfRkxBR1NfRk9SX1RBUkdFVC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtZ2NjLTQuMy4zLVNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC02NC1iaXQtbXVsdGlsaWItaGFjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LW9wdGlvbmFsLWxpYnN0ZGMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA5LWNwcC1ob25vci1zeXNyb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMi1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMy1EaXNhYmxlLXNkdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE0LWxpYnRvb2wucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNS1nY2MtYXJtdjQtcGFzcy1maXgtdjRieC10by1saW5rZXItdG8tc3VwcG9ydC1FQUJJLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTYtVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDE3LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxOC1leHBvcnQtQ1BQLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTktRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjEtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDIyLVVzZS1TWVNURU1MSUJTX0RJUi1yZXBsYWNlbWVudC1pbnN0ZWFkLW9mLWhhcmRjb2RpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNC1saWJjYzEtZml4LWxpYmNjMS1zLWluc3RhbGwtcGF0aC1hbmQtcnBhdGgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyNS1oYW5kbGUtc3lzcm9vdC1zdXBwb3J0LWZvci1uYXRpdmVzZGstZ2NjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjYtU2VhcmNoLXRhcmdldC1zeXNyb290LWdjYy12ZXJzaW9uLXNwZWNpZmljLWRpcnMtd2l0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDI3LUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMjgtbmlvczItRGVmaW5lLU1VU0xfRFlOQU1JQ19MSU5LRVIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyOS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzAtbGRibDEyOC1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMS1MaW5rLWxpYmdjYy11c2luZy1MREZMQUdTLW5vdC1qdXN0LVNITElCX0xERkxBR1MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzMi1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzMtc3luYy1nY2Mtc3RkZGVmLmgtd2l0aC1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzQtZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1pbi1wcmVjb21waWxlZC1oZWFkZXItZ2VuZXJhdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM1LUZpeC1mb3ItdGVzdHN1aXRlLWZhaWx1cmUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNi1SZS1pbnRyb2R1Y2Utc3BlLWNvbW1hbmRsaW5lLW9wdGlvbnMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAzNy1DVkUtMjAxOS0xNDI1MC1DaGVjay16ZXJvLXZhbHVlLWluLXNpbXBsZV9vYmplY3RfZWxmLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMzgtZ2VudHlwZXMtZ2VubW9kZXMtRG8tbm90LXVzZS1fX0xJTkVfXy1mb3ItbWFpbnRhaW5pbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDM5LXByb2Nlc3NfYWx0X29wZXJhbmRzLURvbi10LW1hdGNoLXVzZXItZGVmaW5lZC1yZWdzLW8ucGF0Y2ggXAorIgorUyA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L2djYy0ke1BWfSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3MWUxOTc4Njc2MTFmNjA1NGFhMTExOWIxM2EwYzBhYmFjMTI4MzQ3NjVmZTJkODFmMzVhYzU3Zjg0Zjc0MmQxIgorIyBGb3IgZGV2IHJlbGVhc2Ugc25hcHNob3R0aW5nCisjUyA9ICIke1RNUERJUn0vd29yay1zaGFyZWQvZ2NjLSR7UFZ9LSR7UFJ9L29mZmljaWFsLWdjYy0ke1JFTEVBU0V9IgorI0IgPSAiJHtXT1JLRElSfS9nY2MtJHtQVn0vYnVpbGQuJHtIT1NUX1NZU30uJHtUQVJHRVRfU1lTfSIKKworIyBMYW5ndWFnZSBPdmVycmlkZXMKK0ZPUlRSQU4gPSAiIgorSkFWQSA9ICIiCisKK0xUTyA9ICItLWVuYWJsZS1sdG8iCitTU1AgPz0gIi0tZGlzYWJsZS1saWJzc3AiCitTU1BfbWluZ3czMiA9ICItLWVuYWJsZS1saWJzc3AiCisKK0VYVFJBX09FQ09ORl9CQVNFID0gIlwKKyAgICAke0xUT30gXAorICAgICR7U1NQfSBcCisgICAgLS1lbmFibGUtbGliaXRtIFwKKyAgICAtLWRpc2FibGUtYm9vdHN0cmFwIFwKKyAgICAtLWRpc2FibGUtbGlibXVkZmxhcCBcCisgICAgLS13aXRoLXN5c3RlbS16bGliIFwKKyAgICAke0AnLS13aXRoLWxpbmtlci1oYXNoLXN0eWxlPSR7TElOS0VSX0hBU0hfU1RZTEV9JyBpZiAnJHtMSU5LRVJfSEFTSF9TVFlMRX0nIGVsc2UgJyd9IFwKKyAgICAtLWVuYWJsZS1saW5rZXItYnVpbGQtaWQgXAorICAgIC0td2l0aC1wcGw9bm8gXAorICAgIC0td2l0aC1jbG9vZz1ubyBcCisgICAgLS1lbmFibGUtY2hlY2tpbmc9cmVsZWFzZSBcCisgICAgLS1lbmFibGUtY2hlYWRlcnM9Y19nbG9iYWwgXAorICAgIC0td2l0aG91dC1pc2wgXAorIgorCitFWFRSQV9PRUNPTkZfSU5JVElBTCA9ICJcCisgICAgLS1kaXNhYmxlLWxpYm11ZGZsYXAgXAorICAgIC0tZGlzYWJsZS1saWJnb21wIFwKKyAgICAtLWRpc2FibGUtbGliaXRtIFwKKyAgICAtLWRpc2FibGUtbGlicXVhZG1hdGggXAorICAgIC0td2l0aC1zeXN0ZW0temxpYiBcCisgICAgLS1kaXNhYmxlLWx0byBcCisgICAgLS1kaXNhYmxlLXBsdWdpbiBcCisgICAgLS1lbmFibGUtbGlua2VyLWJ1aWxkLWlkIFwKKyAgICAtLWVuYWJsZS1kZWNpbWFsLWZsb2F0PW5vIFwKKyAgICAtLXdpdGhvdXQtaXNsIFwKKyAgICAtLWRpc2FibGUtbGlic3NwIFwKKyIKKworRVhUUkFfT0VDT05GX1BBVEhTID0gIlwKKyAgICAtLXdpdGgtZ3h4LWluY2x1ZGUtZGlyPS9ub3QvZXhpc3R7dGFyZ2V0X2luY2x1ZGVkaXJ9L2MrKy8ke0JJTlZ9IFwKKyAgICAtLXdpdGgtc3lzcm9vdD0vbm90L2V4aXN0IFwKKyAgICAtLXdpdGgtYnVpbGQtc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0gXAorIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwMS1nY2MtNC4zLjEtQVJDSF9GTEFHU19GT1JfVEFSR0VULnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkOTIyMmQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDAxLWdjYy00LjMuMS1BUkNIX0ZMQUdTX0ZPUl9UQVJHRVQucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSAwMmIxNzg5ZGJiYjE4NDcyNjc4MmI1MDM4YTRkZDk2NTE1ZWM3OTBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6Mzc6MTEgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwMS8zOV0gZ2NjLTQuMy4xOiBBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKy0tLQorIGNvbmZpZ3VyZSAgICB8IDIgKy0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IGFiZDkzYTk5MGE5Li5iMTIxMDg4ZDc3OCAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNzYwMyw3ICs3NjAzLDcgQEAgZmkKKyAjIGZvciB0YXJnZXRfYWxpYXMgYW5kIGdjYyBkb2Vzbid0IG1hbmFnZSBpdCBjb25zaXN0ZW50bHkuCisgdGFyZ2V0X2NvbmZpZ2FyZ3M9Ii0tY2FjaGUtZmlsZT0uL2NvbmZpZy5jYWNoZSAke3RhcmdldF9jb25maWdhcmdzfSIKKyAKKy1GTEFHU19GT1JfVEFSR0VUPQorK0ZMQUdTX0ZPUl9UQVJHRVQ9IiRBUkNIX0ZMQUdTX0ZPUl9UQVJHRVQiCisgY2FzZSAiICR0YXJnZXRfY29uZmlnZGlycyAiIGluCisgICoiIG5ld2xpYiAiKikKKyAgIGNhc2UgIiAkdGFyZ2V0X2NvbmZpZ2FyZ3MgIiBpbgorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggOWRiNGZkMTRhYTIuLmFhZDkzYzRkMTgzIDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC0zMTE5LDcgKzMxMTksNyBAQCBmaQorICMgZm9yIHRhcmdldF9hbGlhcyBhbmQgZ2NjIGRvZXNuJ3QgbWFuYWdlIGl0IGNvbnNpc3RlbnRseS4KKyB0YXJnZXRfY29uZmlnYXJncz0iLS1jYWNoZS1maWxlPS4vY29uZmlnLmNhY2hlICR7dGFyZ2V0X2NvbmZpZ2FyZ3N9IgorIAorLUZMQUdTX0ZPUl9UQVJHRVQ9CisrRkxBR1NfRk9SX1RBUkdFVD0iJEFSQ0hfRkxBR1NfRk9SX1RBUkdFVCIKKyBjYXNlICIgJHRhcmdldF9jb25maWdkaXJzICIgaW4KKyAgKiIgbmV3bGliICIqKQorICAgY2FzZSAiICR0YXJnZXRfY29uZmlnYXJncyAiIGluCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDAyLWdjYy1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwMi1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNDI3ZWU2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwMi1nY2MtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllcy5wYXRjaApAQCAtMCwwICsxLDIwMyBAQAorRnJvbSA1MzY4Y2QwMjkzY2U1MGE2OWNlZDZlNGIyNWJhNmM4ZDhlMDE0MjU2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDg6NTk6MDAgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwMi8zOV0gZ2NjOiBwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisKK0FkZCAvc3cvaW5jbHVkZSBhbmQgL29wdC9pbmNsdWRlIGJhc2VkIG9uIHRoZSBvcmlnaW5hbAoremVja2Utbm8taG9zdC1pbmNsdWRlcy5wYXRjaCBwYXRjaC4gIFRoZSBvcmlnaW5hbCBwYXRjaCBjaGVja2VkIGZvcgorL3Vzci9pbmNsdWRlLCAvc3cvaW5jbHVkZSBhbmQgL29wdC9pbmNsdWRlIGFuZCB0aGVuIHRyaWdnZXJlZCBhIGZhaWx1cmUgYW5kCithYm9ydGVkLgorCitJbnN0ZWFkLCB3ZSBhZGQgdGhlIHR3byBtaXNzaW5nIGl0ZW1zIHRvIHRoZSBjdXJyZW50IHNjYW4uICBJZiB0aGUgdXNlcgord2FudHMgdGhpcyB0byBiZSBhIGZhaWx1cmUsIHRoZXkgY2FuIGFkZCAiLVdlcnJvcj1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzIi4KKworU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCistLS0KKyBnY2MvY29tbW9uLm9wdCAgICAgIHwgIDQgKysrKworIGdjYy9jb25maWcuaW4gICAgICAgfCAgNiArKysrKysKKyBnY2MvY29uZmlndXJlICAgICAgIHwgMTYgKysrKysrKysrKysrKysrKworIGdjYy9jb25maWd1cmUuYWMgICAgfCAxMCArKysrKysrKysrCisgZ2NjL2RvYy9pbnZva2UudGV4aSB8ICA5ICsrKysrKysrKworIGdjYy9nY2MuYyAgICAgICAgICAgfCAgMiArKworIGdjYy9pbmNwYXRoLmMgICAgICAgfCAyMSArKysrKysrKysrKysrKysrKysrKysKKyA3IGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2djYy9jb21tb24ub3B0IGIvZ2NjL2NvbW1vbi5vcHQKK2luZGV4IGQzNDJjNGYzNzQ5Li5jNjRmZDRhNmM1MCAxMDA2NDQKKy0tLSBhL2djYy9jb21tb24ub3B0CisrKysgYi9nY2MvY29tbW9uLm9wdAorQEAgLTY4NCw2ICs2ODQsMTAgQEAgV3JldHVybi1sb2NhbC1hZGRyCisgQ29tbW9uIFZhcih3YXJuX3JldHVybl9sb2NhbF9hZGRyKSBJbml0KDEpIFdhcm5pbmcKKyBXYXJuIGFib3V0IHJldHVybmluZyBhIHBvaW50ZXIvcmVmZXJlbmNlIHRvIGEgbG9jYWwgb3IgdGVtcG9yYXJ5IHZhcmlhYmxlLgorIAorK1dwb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrQ29tbW9uIFZhcihmbGFnX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMpIEluaXQoMSkgV2FybmluZworK1dhcm4gZm9yIC1JIGFuZCAtTCBvcHRpb25zIHVzaW5nIHN5c3RlbSBkaXJlY3RvcmllcyBpZiBjcm9zcyBjb21waWxpbmcKKysKKyBXc2hhZG93CisgQ29tbW9uIFZhcih3YXJuX3NoYWRvdykgV2FybmluZworIFdhcm4gd2hlbiBvbmUgdmFyaWFibGUgc2hhZG93cyBhbm90aGVyLiAgU2FtZSBhcyAtV3NoYWRvdz1nbG9iYWwuCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy5pbiBiL2djYy9jb25maWcuaW4KK2luZGV4IGE3MThjZWFmM2RhLi41NzEzMzQyZWZiMSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcuaW4KKysrKyBiL2djYy9jb25maWcuaW4KK0BAIC0yMDAsNiArMjAwLDEyIEBACisgI2VuZGlmCisgCisgCisrLyogRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3RvcmllcyAqLworKyNpZm5kZWYgVVNFRF9GT1JfVEFSR0VUCisrI3VuZGVmIEVOQUJMRV9QT0lTT05fU1lTVEVNX0RJUkVDVE9SSUVTCisrI2VuZGlmCisrCisrCisgLyogRGVmaW5lIGlmIHlvdSB3YW50IGFsbCBvcGVyYXRpb25zIG9uIFJUTCAodGhlIGJhc2ljIGRhdGEgc3RydWN0dXJlIG9mIHRoZQorICAgIG9wdGltaXplciBhbmQgYmFjayBlbmQpIHRvIGJlIGNoZWNrZWQgZm9yIGR5bmFtaWMgdHlwZSBzYWZldHkgYXQgcnVudGltZS4KKyAgICBUaGlzIGlzIHF1aXRlIGV4cGVuc2l2ZS4gKi8KK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggYTA2NWJhMjM3MjguLjJlMjZkZDMzMzEwIDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTk5Niw2ICs5OTYsNyBAQCB3aXRoX3N5c3RlbV96bGliCisgZW5hYmxlX21haW50YWluZXJfbW9kZQorIGVuYWJsZV9saW5rX211dGV4CisgZW5hYmxlX3ZlcnNpb25fc3BlY2lmaWNfcnVudGltZV9saWJzCisrZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMKKyBlbmFibGVfcGx1Z2luCisgZW5hYmxlX2hvc3Rfc2hhcmVkCisgZW5hYmxlX2xpYnF1YWRtYXRoX3N1cHBvcnQKK0BAIC0xNzQ5LDYgKzE3NTAsOCBAQCBPcHRpb25hbCBGZWF0dXJlczoKKyAgIC0tZW5hYmxlLXZlcnNpb24tc3BlY2lmaWMtcnVudGltZS1saWJzCisgICAgICAgICAgICAgICAgICAgICAgICAgICBzcGVjaWZ5IHRoYXQgcnVudGltZSBsaWJyYXJpZXMgc2hvdWxkIGJlIGluc3RhbGxlZAorICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gYSBjb21waWxlci1zcGVjaWZpYyBkaXJlY3RvcnkKKysgIC0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKysgICAgICAgICAgICAgICAgICAgICAgICAgIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3RvcmllcworICAgLS1lbmFibGUtcGx1Z2luICAgICAgICAgZW5hYmxlIHBsdWdpbiBzdXBwb3J0CisgICAtLWVuYWJsZS1ob3N0LXNoYXJlZCAgICBidWlsZCBob3N0IGNvZGUgYXMgc2hhcmVkIGxpYnJhcmllcworICAgLS1kaXNhYmxlLWxpYnF1YWRtYXRoLXN1cHBvcnQKK0BAIC0yOTc1Myw2ICsyOTc1NiwxOSBAQCBpZiB0ZXN0ICIke2VuYWJsZV92ZXJzaW9uX3NwZWNpZmljX3J1bnRpbWVfbGlicytzZXR9IiA9IHNldDsgdGhlbiA6CisgZmkKKyAKKyAKKysjIENoZWNrIHdoZXRoZXIgLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3RvcmllcyB3YXMgZ2l2ZW4uCisraWYgdGVzdCAiJHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3RvcmllcytzZXR9IiA9IHNldDsgdGhlbiA6CisrICBlbmFibGV2YWw9JGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzOworK2Vsc2UKKysgIGVuYWJsZV9wb2lzb25fc3lzdGVtX2RpcmVjdG9yaWVzPW5vCisrZmkKKysKKytpZiB0ZXN0ICJ4JHtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllc30iID0gInh5ZXMiOyB0aGVuCisrCisrJGFzX2VjaG8gIiNkZWZpbmUgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMgMSIgPj5jb25mZGVmcy5oCisrCisrZmkKKysKKyAjIFN1YnN0aXR1dGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKKyAKKyAKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggM2E3MjUxMTAyZWYuLjEyZDFkMDRlNjQ1IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTYzODAsNiArNjM4MCwxNiBAQCBBQ19BUkdfRU5BQkxFKHZlcnNpb24tc3BlY2lmaWMtcnVudGltZS1saWJzLAorICAgICAgICAgICAgICAgICBbc3BlY2lmeSB0aGF0IHJ1bnRpbWUgbGlicmFyaWVzIHNob3VsZCBiZQorICAgICAgICAgICAgICAgICAgaW5zdGFsbGVkIGluIGEgY29tcGlsZXItc3BlY2lmaWMgZGlyZWN0b3J5XSldKQorIAorK0FDX0FSR19FTkFCTEUoW3BvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXNdLAorKyAgICAgICAgICAgICBBU19IRUxQX1NUUklORyhbLS1lbmFibGUtcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc10sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgIFt3YXJuIGZvciB1c2Ugb2YgbmF0aXZlIHN5c3RlbSBoZWFkZXIgZGlyZWN0b3JpZXNdKSwsCisrICAgICAgICAgICAgIFtlbmFibGVfcG9pc29uX3N5c3RlbV9kaXJlY3Rvcmllcz1ub10pCisraWYgdGVzdCAieCR7ZW5hYmxlX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXN9IiA9ICJ4eWVzIjsgdGhlbgorKyAgQUNfREVGSU5FKFtFTkFCTEVfUE9JU09OX1NZU1RFTV9ESVJFQ1RPUklFU10sCisrICAgICAgICAgICBbMV0sCisrICAgICAgICAgICBbRGVmaW5lIHRvIHdhcm4gZm9yIHVzZSBvZiBuYXRpdmUgc3lzdGVtIGhlYWRlciBkaXJlY3Rvcmllc10pCisrZmkKKysKKyAjIFN1YnN0aXR1dGUgY29uZmlndXJhdGlvbiB2YXJpYWJsZXMKKyBBQ19TVUJTVChzdWJkaXJzKQorIEFDX1NVQlNUKHNyY2RpcikKK2RpZmYgLS1naXQgYS9nY2MvZG9jL2ludm9rZS50ZXhpIGIvZ2NjL2RvYy9pbnZva2UudGV4aQoraW5kZXggMGFiNmM5YzY0NDkuLmMzZDNkNTFhMjhmIDEwMDY0NAorLS0tIGEvZ2NjL2RvYy9pbnZva2UudGV4aQorKysrIGIvZ2NjL2RvYy9pbnZva2UudGV4aQorQEAgLTMzMyw2ICszMzMsNyBAQCBPYmplY3RpdmUtQyBhbmQgT2JqZWN0aXZlLUMrKyBEaWFsZWN0c30uCisgLVdwYWNrZWQgIC1XcGFja2VkLWJpdGZpZWxkLWNvbXBhdCAtV3BhY2tlZC1ub3QtYWxpZ25lZCAgLVdwYWRkZWQgQGdvbAorIC1XcGFyZW50aGVzZXMgIC1Xbm8tcGVkYW50aWMtbXMtZm9ybWF0IEBnb2wKKyAtV3BsYWNlbWVudC1uZXcgIC1XcGxhY2VtZW50LW5ldz1AdmFye259IEBnb2wKKystV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMgQGdvbAorIC1XcG9pbnRlci1hcml0aCAgLVdwb2ludGVyLWNvbXBhcmUgIC1Xbm8tcG9pbnRlci10by1pbnQtY2FzdCBAZ29sCisgLVduby1wcmFnbWFzICAtV25vLXByaW8tY3Rvci1kdG9yICAtV3JlZHVuZGFudC1kZWNscyBAZ29sCisgLVdyZXN0cmljdCAgLVduby1yZXR1cm4tbG9jYWwtYWRkciBAZ29sCitAQCAtNjI5MCw2ICs2MjkxLDE0IEBAIG1hZGUgdXAgb2YgZGF0YSBvbmx5IGFuZCB0aHVzIHJlcXVpcmVzIG5vIHNwZWNpYWwgdHJlYXRtZW50LiAgQnV0LCBmb3IKKyBtb3N0IHRhcmdldHMsIGl0IGlzIG1hZGUgdXAgb2YgY29kZSBhbmQgdGh1cyByZXF1aXJlcyB0aGUgc3RhY2sgdG8gYmUKKyBtYWRlIGV4ZWN1dGFibGUgaW4gb3JkZXIgZm9yIHRoZSBwcm9ncmFtIHRvIHdvcmsgcHJvcGVybHkuCisgCisrQGl0ZW0gLVduby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzCisrQG9waW5kZXggV25vLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMKKytEbyBub3Qgd2FybiBmb3IgQG9wdGlvbnstSX0gb3IgQG9wdGlvbnstTH0gb3B0aW9ucyB1c2luZyBzeXN0ZW0KKytkaXJlY3RvcmllcyBzdWNoIGFzIEBmaWxley91c3IvaW5jbHVkZX0gd2hlbiBjcm9zcyBjb21waWxpbmcuICBUaGlzCisrb3B0aW9uIGlzIGludGVuZGVkIGZvciB1c2UgaW4gY2hyb290IGVudmlyb25tZW50cyB3aGVuIHN1Y2gKKytkaXJlY3RvcmllcyBjb250YWluIHRoZSBjb3JyZWN0IGhlYWRlcnMgYW5kIGxpYnJhcmllcyBmb3IgdGhlIHRhcmdldAorK3N5c3RlbSByYXRoZXIgdGhhbiB0aGUgaG9zdC4KKysKKyBAaXRlbSAtV2Zsb2F0LWVxdWFsCisgQG9waW5kZXggV2Zsb2F0LWVxdWFsCisgQG9waW5kZXggV25vLWZsb2F0LWVxdWFsCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCA0ZjU3NzY1YjAxMi4uYTI2MDFhNmJiMDYgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTEwNDIsNiArMTA0Miw4IEBAIHByb3BlciBwb3NpdGlvbiBhbW9uZyB0aGUgb3RoZXIgb3V0cHV0IGZpbGVzLiAgKi8KKyAgICAiJXtmdXNlLWxkPSo6LWZ1c2UtbGQ9JSp9ICIgTElOS19DT01QUkVTU19ERUJVR19TUEVDIFwKKyAgICAiJVggJXtvKn0gJXtlKn0gJXtOfSAle259ICV7cn1cCisgICAgICV7c30gJXt0fSAle3UqfSAle3p9ICV7Wn0gJXshbm9zdGRsaWI6JXshcjoleyFub3N0YXJ0ZmlsZXM6JVN9fX0gXAorKyAgICAle1duby1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzOi0tbm8tcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc30gXAorKyAgICAle1dlcnJvcj1wb2lzb24tc3lzdGVtLWRpcmVjdG9yaWVzOi0tZXJyb3ItcG9pc29uLXN5c3RlbS1kaXJlY3Rvcmllc30gXAorICAgICAle3N0YXRpY3xuby1waWV8c3RhdGljLXBpZTp9ICVAe0wqfSAlKG1md3JhcCkgJShsaW5rX2xpYmdjYykgIiBcCisgICAgIFZUQUJMRV9WRVJJRklDQVRJT05fU1BFQyAiICIgU0FOSVRJWkVSX0VBUkxZX1NQRUMgIiAlbyAiIiBcCisgICAgICV7Zm9wZW5hY2N8Zm9wZW5tcHwlOmd0KCV7ZnRyZWUtcGFyYWxsZWxpemUtbG9vcHM9KjolKn0gMSk6XAorZGlmZiAtLWdpdCBhL2djYy9pbmNwYXRoLmMgYi9nY2MvaW5jcGF0aC5jCitpbmRleCBiY2JlMjA4MjkwNS4uNTc1MjI5OGJiZjIgMTAwNjQ0CistLS0gYS9nY2MvaW5jcGF0aC5jCisrKysgYi9nY2MvaW5jcGF0aC5jCitAQCAtMjYsNiArMjYsNyBAQAorICNpbmNsdWRlICJpbnRsLmgiCisgI2luY2x1ZGUgImluY3BhdGguaCIKKyAjaW5jbHVkZSAiY3BwZGVmYXVsdC5oIgorKyNpbmNsdWRlICJkaWFnbm9zdGljLWNvcmUuaCIKKyAKKyAvKiBNaWNyb3NvZnQgV2luZG93cyBkb2VzIG5vdCBuYXRpdmVseSBzdXBwb3J0IGlub2Rlcy4KKyAgICBWTVMgaGFzIG5vbi1udW1lcmljIGlub2Rlcy4gICovCitAQCAtMzkzLDYgKzM5NCwyNiBAQCBtZXJnZV9pbmNsdWRlX2NoYWlucyAoY29uc3QgY2hhciAqc3lzcm9vdCwgY3BwX3JlYWRlciAqcGZpbGUsIGludCB2ZXJib3NlKQorIAl9CisgICAgICAgZnByaW50ZiAoc3RkZXJyLCBfKCJFbmQgb2Ygc2VhcmNoIGxpc3QuXG4iKSk7CisgICAgIH0KKysKKysjaWZkZWYgRU5BQkxFX1BPSVNPTl9TWVNURU1fRElSRUNUT1JJRVMKKysgIGlmIChmbGFnX3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMpCisrICAgIHsKKysgICAgICAgc3RydWN0IGNwcF9kaXIgKnA7CisrCisrICAgICAgIGZvciAocCA9IGhlYWRzW0lOQ19RVU9URV07IHA7IHAgPSBwLT5uZXh0KQorKyAgICAgICAgIHsKKysgICAgICAgICAgaWYgKCghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvaW5jbHVkZSIsIDEyKSkKKysgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvbG9jYWwvaW5jbHVkZSIsIDE4KSkKKysgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi91c3IvWDExUjYvaW5jbHVkZSIsIDE4KSkKKysgICAgICAgICAgICAgIHx8ICghc3RybmNtcCAocC0+bmFtZSwgIi9zdy9pbmNsdWRlIiwgMTEpKQorKyAgICAgICAgICAgICAgfHwgKCFzdHJuY21wIChwLT5uYW1lLCAiL29wdC9pbmNsdWRlIiwgMTIpKSkKKysgICAgICAgICAgICB3YXJuaW5nIChPUFRfV3BvaXNvbl9zeXN0ZW1fZGlyZWN0b3JpZXMsCisrICAgICAgICAgICAgICAgICAgICAgImluY2x1ZGUgbG9jYXRpb24gXCIlc1wiIGlzIHVuc2FmZSBmb3IgIgorKyAgICAgICAgICAgICAgICAgICAgICJjcm9zcy1jb21waWxhdGlvbiIsCisrICAgICAgICAgICAgICAgICAgICAgcC0+bmFtZSk7CisrICAgICAgICAgfQorKyAgICB9CisrI2VuZGlmCisgfQorIAorIC8qIFVzZSBnaXZlbiAtSSBwYXRocyBmb3IgI2luY2x1ZGUgIi4uLiIgYnV0IG5vdCAjaW5jbHVkZSA8Li4uPiwgYW5kCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDAzLWdjYy00LjMuMy1TWVNST09UX0NGTEFHU19GT1JfVEFSR0VULnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwMy1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yM2VjNWJjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwMy1nY2MtNC4zLjMtU1lTUk9PVF9DRkxBR1NfRk9SX1RBUkdFVC5wYXRjaApAQCAtMCwwICsxLDczIEBACitGcm9tIGRmOTBkYmRiYTdhODVjMjBiYWQ5NWRlNzE1MjVmMGY0MDBhODQ5ZDIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTowODozMSArMDQwMAorU3ViamVjdDogW1BBVENIIDAzLzM5XSBnY2MtNC4zLjM6IFNZU1JPT1RfQ0ZMQUdTX0ZPUl9UQVJHRVQKKworQmVmb3JlIGNvbW1pdHRpbmcsIEkgbm90aWNlZCB0aGF0IFBSLzMyMTYxIHdhcyBtYXJrZWQgYXMgYSBkdXAgb2YgUFIvMzIwMDksIGJ1dCBteSBwcmV2aW91cyBwYXRjaCBkaWQgbm90IGZpeCBpdC4KKworVGhpcyBhbHRlcm5hdGl2ZSBwYXRjaCBpcyBiZXR0ZXIgYmVjYXVzZSBpdCBsZXRzIHlvdSBqdXN0IHVzZSBDRkxBR1NfRk9SX1RBUkdFVCB0byBzZXQgdGhlIGNvbXBpbGF0aW9uIGZsYWdzIGZvciBsaWJnY2MuIFNpbmNlIGJvb3RzdHJhcHBlZCB0YXJnZXQgbGlicmFyaWVzIGFyZSBuZXZlciBjb21waWxlZCB3aXRoIHRoZSBuYXRpdmUgY29tcGlsZXIsIGl0IG1ha2VzIGxpdHRsZSBzZW5zZSB0byB1c2UgZGlmZmVyZW50IGZsYWdzIGZvciBzdGFnZTEgYW5kIGxhdGVyIHN0YWdlcy4gQW5kIGl0IGFsc28gbWFrZXMgbGl0dGxlIHNlbnNlIHRvIHVzZSBhIGRpZmZlcmVudCB2YXJpYWJsZSB0aGFuIENGTEFHU19GT1JfVEFSR0VULgorCitPdGhlciBjaGFuZ2VzIEkgaGFkIHRvIGRvIGluY2x1ZGU6CisKKy0gbW92aW5nIHRoZSBjcmVhdGlvbiBvZiBkZWZhdWx0IENGTEFHU19GT1JfVEFSR0VUIGZyb20gTWFrZWZpbGUuYW0gdG8gY29uZmlndXJlLmFjLCBiZWNhdXNlIG90aGVyd2lzZSB0aGUgQk9PVF9DRkxBR1MgYXJlIHN1YnN0aXR1dGVkIGludG8gQ0ZMQUdTX0ZPUl9UQVJHRVQgKHdoaWNoIGlzICItTzIgLWcgJChDRkxBR1MpIikgdmlhICQoQ0ZMQUdTKS4gSXQgaXMgYWxzbyBjbGVhbmVyIHRoaXMgd2F5IHRob3VnaC4KKworLSBwYXNzaW5nIHRoZSByaWdodCBDRkxBR1MgdG8gY29uZmlndXJlIHNjcmlwdHMgYXMgZXhwb3J0ZWQgZW52aXJvbm1lbnQgdmFyaWFibGVzCisKK0kgYWxzbyBzdG9wcGVkIHBhc3NpbmcgTElCQ0ZMQUdTIHRvIGNvbmZpZ3VyZSBzY3JpcHRzIHNpbmNlIHRoZXkgYXJlIHVudXNlZCBpbiB0aGUgd2hvbGUgc3JjIHRyZWUuIEFuZCBJIHVwZGF0ZWQgdGhlIGRvY3VtZW50YXRpb24gYXMgSC1QIHJlbWluZGVkIG1lIHRvIGRvLgorCitCb290c3RyYXBwZWQvcmVndGVzdGVkIGk2ODYtcGMtbGludXgtZ251LCB3aWxsIGNvbW1pdCB0byA0LjQgc2hvcnRseS4gT2sgZm9yIDQuMz8KKworU2lnbmVkLW9mZi1ieTogUGFvbG8gQm9uemluaSAgPGJvbnppbmlAZ251Lm9yZz4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgY29uZmlndXJlIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMzIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlIGIvY29uZmlndXJlCitpbmRleCBiMTIxMDg4ZDc3OC4uOTNhYWU1YmIyNmYgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTY4NjQsNiArNjg2NCwzOCBAQCBmaQorIAorIAorIAorKyMgRHVyaW5nIGdjYyBib290c3RyYXAsIGlmIHdlIHVzZSBzb21lIHJhbmRvbSBjYyBmb3Igc3RhZ2UxIHRoZW4gQ0ZMQUdTCisrIyBtaWdodCBiZSBlbXB0eSBvciAiLWciLiAgV2UgZG9uJ3QgcmVxdWlyZSBhIEMrKyBjb21waWxlciwgc28gQ1hYRkxBR1MKKysjIG1pZ2h0IGFsc28gYmUgZW1wdHkgKG9yICItZyIsIGlmIGEgbm9uLUdDQyBDKysgY29tcGlsZXIgaXMgaW4gdGhlIHBhdGgpLgorKyMgV2Ugd2FudCB0byBlbnN1cmUgdGhhdCBUQVJHRVQgbGlicmFyaWVzICh3aGljaCB3ZSBrbm93IGFyZSBidWlsdCB3aXRoCisrIyBnY2MpIGFyZSBidWlsdCB3aXRoICItTzIgLWciLCBzbyBpbmNsdWRlIHRob3NlIG9wdGlvbnMgd2hlbiBzZXR0aW5nCisrIyBDRkxBR1NfRk9SX1RBUkdFVCBhbmQgQ1hYRkxBR1NfRk9SX1RBUkdFVC4KKytpZiB0ZXN0ICJ4JENGTEFHU19GT1JfVEFSR0VUIiA9IHg7IHRoZW4KKysgIENGTEFHU19GT1JfVEFSR0VUPSRDRkxBR1MKKysgIGNhc2UgIiAkQ0ZMQUdTICIgaW4KKysgICAgKiIgLU8yICIqKSA7OworKyAgICAqKSBDRkxBR1NfRk9SX1RBUkdFVD0iLU8yICRDRkxBR1MiIDs7CisrICBlc2FjCisrICBjYXNlICIgJENGTEFHUyAiIGluCisrICAgICoiIC1nICIqIHwgKiIgLWczICIqKSA7OworKyAgICAqKSBDRkxBR1NfRk9SX1RBUkdFVD0iLWcgJENGTEFHUyIgOzsKKysgIGVzYWMKKytmaQorKworKworK2lmIHRlc3QgIngkQ1hYRkxBR1NfRk9SX1RBUkdFVCIgPSB4OyB0aGVuCisrICBDWFhGTEFHU19GT1JfVEFSR0VUPSRDWFhGTEFHUworKyAgY2FzZSAiICRDWFhGTEFHUyAiIGluCisrICAgICoiIC1PMiAiKikgOzsKKysgICAgKikgQ1hYRkxBR1NfRk9SX1RBUkdFVD0iLU8yICRDWFhGTEFHUyIgOzsKKysgIGVzYWMKKysgIGNhc2UgIiAkQ1hYRkxBR1MgIiBpbgorKyAgICAqIiAtZyAiKiB8ICoiIC1nMyAiKikgOzsKKysgICAgKikgQ1hYRkxBR1NfRk9SX1RBUkdFVD0iLWcgJENYWEZMQUdTIiA7OworKyAgZXNhYworK2ZpCisrCisrCisgIyBIYW5kbGUgLS13aXRoLWhlYWRlcnM9WFhYLiAgSWYgdGhlIHZhbHVlIGlzIG5vdCAieWVzIiwgdGhlIGNvbnRlbnRzIG9mCisgIyB0aGUgbmFtZWQgZGlyZWN0b3J5IGFyZSBjb3BpZWQgdG8gJCh0b29sZGlyKS9zeXMtaW5jbHVkZS4KKyBpZiB0ZXN0IHgiJHt3aXRoX2hlYWRlcnN9IiAhPSB4ICYmIHRlc3QgeCIke3dpdGhfaGVhZGVyc30iICE9IHhubyA7IHRoZW4KKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDQtNjQtYml0LW11bHRpbGliLWhhY2sucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA0LTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ZWM4OTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA0LTY0LWJpdC1tdWx0aWxpYi1oYWNrLnBhdGNoCkBAIC0wLDAgKzEsMTE5IEBACitGcm9tIDJlMDBkMGE5YTgwOTE1M2Y2OTM2NTllOTc3YzFlMDU1MDY2NWU2NWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxMDowNiArMDQwMAorU3ViamVjdDogW1BBVENIIDA0LzM5XSA2NC1iaXQgbXVsdGlsaWIgaGFjay4KKworR0NDIGhhcyBpbnRlcm5hbCBtdWx0aWxpYiBoYW5kbGluZyBjb2RlIGJ1dCBpdCBhc3N1bWVzIGEgdmVyeSBzcGVjaWZpYyByaWdpZCBkaXJlY3RvcnkKK2xheW91dC4gVGhlIGJ1aWxkIHN5c3RlbSBpbXBsZW1lbnRhdGlvbiBvZiBtdWx0aWxpYiBsYXlvdXQgaXMgdmVyeSBnZW5lcmljIGFuZCBhbGxvd3MKK2NvbXBsZXRlIGN1c3RvbWlzYXRpb24gb2YgdGhlIGxpYnJhcnkgZGlyZWN0b3JpZXMuCisKK1RoaXMgcGF0Y2ggaXMgYSBwYXJ0aWFsIHNvbHV0aW9uIHRvIGFsbG93IGFueSBjdXN0b20gZGlyZWN0b3JpZXMgdG8gYmUgcGFzc2VkIGludG8gZ2NjCithbmQgaGFuZGxlZCBjb3JyZWN0bHkuIEl0IGZvcmNlcyBnY2MgdG8gdXNlIHRoZSBiYXNlX2xpYmRpciAod2hpY2ggaXMgdGhlIGN1cnJlbnQKK2RpcmVjdG9yeSwgIi4iKS4gV2UgbmVlZCB0byBkbyB0aGlzIGZvciBlYWNoIG11bHRpbGliIHRoYXQgaXMgY29uZmlndXJlZCBhcyB3ZSBkb24ndAora25vdyB3aGljaCBjb21waWxlciBvcHRpb25zIG1heSBiZSBiZWluZyBwYXNzZWQgaW50byB0aGUgY29tcGlsZXIuIFNpbmNlIHdlIGhhdmUgYSBjb21waWxlcgorcGVyIG11bGl0bGliIGF0IHRoaXMgcG9pbnQgdGhhdCBpc24ndCBhbiBpc3N1ZS4KKworVGhlIG9uZSBwcm9ibGVtIGlzIHRoZSB0YXJnZXQgY29tcGlsZXIgaXMgb25seSBnb2luZyB0byB3b3JrIGZvciB0aGUgZGVmYXVsdCBtdWx0bGlsaWIgYXQKK3RoaXMgcG9pbnQuIElkZWFsbHkgd2UnZCBmaWd1cmUgb3V0IHdoaWNoIG11bHRpbGlicyB3ZXJlIGJlaW5nIGVuYWJsZWQgd2l0aCB3aGljaCBwYXRocworYW5kIGJlIGFibGUgdG8gcGF0Y2ggdGhlc2UgZW50cmllcyB3aXRoIGEgY29tcGxldGUgc2V0IG9mIGNvcnJlY3QgcGF0aHMgYnV0IHRoaXMgd2UKK2Rvbid0IGhhdmUgc3VjaCBjb2RlIGF0IHRoaXMgcG9pbnQuIFRoaXMgaXMgc29tZXRoaW5nIHRoZSB0YXJnZXQgZ2NjIHJlY2lwZSBzaG91bGQgZG8KK2FuZCBvdmVycmlkZSB0aGVzZSBwbGF0Zm9ybSBkZWZhdWx0cyBpbiBpdHMgYnVpbGQgY29uZmlnLgorCitEbyBzYW1lIGZvciByaXNjdjY0IGFuZCBhYXJjaDY0CisKK1JQIDE1LzgvMTEKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW09FLVNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogRWx2aXMgRG93c29uIDxlbHZpcy5kb3dzb25AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUB3aW5kcml2ZXIuY29tPgorLS0tCisgZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eCB8ICA4ICsrKystLS0tCisgZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NCAgICAgICAgICB8ICA2ICsrLS0tLQorIGdjYy9jb25maWcvbWlwcy90LWxpbnV4NjQgICAgICAgICAgfCAxMCArKystLS0tLS0tCisgZ2NjL2NvbmZpZy9yaXNjdi90LWxpbnV4ICAgICAgICAgICB8ICA2ICsrKystLQorIGdjYy9jb25maWcvcnM2MDAwL3QtbGludXg2NCAgICAgICAgfCAgNSArKy0tLQorIDUgZmlsZXMgY2hhbmdlZCwgMTUgaW5zZXJ0aW9ucygrKSwgMjAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvdC1hYXJjaDY0LWxpbnV4IGIvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAoraW5kZXggNWFkNjcwYmEyY2UuLmUyNjAxOWU3MTU3IDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAorKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L3QtYWFyY2g2NC1saW51eAorQEAgLTIxLDggKzIxLDggQEAKKyBMSUIxQVNNU1JDICAgPSBhYXJjaDY0L2xpYjFmdW5jcy5hc20KKyBMSUIxQVNNRlVOQ1MgPSBfYWFyY2g2NF9zeW5jX2NhY2hlX3JhbmdlCisgCistQUFSQ0hfQkUgPSAkKGlmICQoZmluZHN0cmluZyBUQVJHRVRfQklHX0VORElBTl9ERUZBVUxUPTEsICQodG1fZGVmaW5lcykpLF9iZSkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTID0gbWFiaS5scDY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6YWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKKy1NVUxUSUFSQ0hfRElSTkFNRSA9ICQoY2FsbCBpZl9tdWx0aWFyY2gsYWFyY2g2NCQoQUFSQ0hfQkUpLWxpbnV4LWdudSkKKysjQUFSQ0hfQkUgPSAkKGlmICQoZmluZHN0cmluZyBUQVJHRVRfQklHX0VORElBTl9ERUZBVUxUPTEsICQodG1fZGVmaW5lcykpLF9iZSkKKysjTVVMVElMSUJfT1NESVJOQU1FUyA9IG1hYmkubHA2ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnUpCisrI01VTFRJQVJDSF9ESVJOQU1FID0gJChjYWxsIGlmX211bHRpYXJjaCxhYXJjaDY0JChBQVJDSF9CRSktbGludXgtZ251KQorIAorLU1VTFRJTElCX09TRElSTkFNRVMgKz0gbWFiaS5pbHAzMj0uLi9saWJpbHAzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnVfaWxwMzIpCisrI01VTFRJTElCX09TRElSTkFNRVMgKz0gbWFiaS5pbHAzMj0uLi9saWJpbHAzMiQoY2FsbCBpZl9tdWx0aWFyY2gsOmFhcmNoNjQkKEFBUkNIX0JFKS1saW51eC1nbnVfaWxwMzIpCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L3QtbGludXg2NCBiL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQKK2luZGV4IGM2ODZhYjJmMGQyLi5jODJiNjBkYWRjZCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQKKysrKyBiL2djYy9jb25maWcvaTM4Ni90LWxpbnV4NjQKK0BAIC0zMiw3ICszMiw1IEBACisgIworIGNvbW1hPSwKKyBNVUxUSUxJQl9PUFRJT05TICAgID0gJChzdWJzdCAkKGNvbW1hKSwvLCQoVE1fTVVMVElMSUJfQ09ORklHKSkKKy1NVUxUSUxJQl9ESVJOQU1FUyAgID0gJChwYXRzdWJzdCBtJSwgJSwgJChzdWJzdCAvLCAsJChNVUxUSUxJQl9PUFRJT05TKSkpCistTVVMVElMSUJfT1NESVJOQU1FUyA9IG02ND0uLi9saWI2NCQoY2FsbCBpZl9tdWx0aWFyY2gsOng4Nl82NC1saW51eC1nbnUpCistTVVMVElMSUJfT1NESVJOQU1FUys9IG0zMj0kKGlmICQod2lsZGNhcmQgJChzaGVsbCBlY2hvICQoU1lTVEVNX0hFQURFUl9ESVIpKS8uLi8uLi91c3IvbGliMzIpLC4uL2xpYjMyLC4uL2xpYikkKGNhbGwgaWZfbXVsdGlhcmNoLDppMzg2LWxpbnV4LWdudSkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTKz0gbXgzMj0uLi9saWJ4MzIkKGNhbGwgaWZfbXVsdGlhcmNoLDp4ODZfNjQtbGludXgtZ251eDMyKQorK01VTFRJTElCX0RJUk5BTUVTID0gLiAuCisrTVVMVElMSUJfT1NESVJOQU1FUyA9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9taXBzL3QtbGludXg2NCBiL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQKK2luZGV4IDNhMmZmNzAwZDdkLi4xM2VmMTk1NzZiNSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQKKysrKyBiL2djYy9jb25maWcvbWlwcy90LWxpbnV4NjQKK0BAIC0xNywxMCArMTcsNiBAQAorICMgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgorIAorIE1VTFRJTElCX09QVElPTlMgPSBtYWJpPW4zMi9tYWJpPTMyL21hYmk9NjQKKy1NVUxUSUxJQl9ESVJOQU1FUyA9IG4zMiAzMiA2NAorLU1JUFNfRUwgPSAkKGlmICQoZmlsdGVyICVlbCwgJChmaXJzdHdvcmQgJChzdWJzdCAtLCAsJCh0YXJnZXQpKSkpLGVsKQorLU1JUFNfU09GVCA9ICQoaWYgJChzdHJpcCAkKGZpbHRlciBNQVNLX1NPRlRfRkxPQVRfQUJJLCAkKHRhcmdldF9jcHVfZGVmYXVsdCkpICQoZmlsdGVyIHNvZnQsICQod2l0aF9mbG9hdCkpKSxzb2Z0KQorLU1VTFRJTElCX09TRElSTkFNRVMgPSBcCistCS4uL2xpYjMyJChjYWxsIGlmX211bHRpYXJjaCw6bWlwczY0JChNSVBTX0VMKS1saW51eC1nbnVhYmluMzIkKE1JUFNfU09GVCkpIFwKKy0JLi4vbGliJChjYWxsIGlmX211bHRpYXJjaCw6bWlwcyQoTUlQU19FTCktbGludXgtZ251JChNSVBTX1NPRlQpKSBcCistCS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6bWlwczY0JChNSVBTX0VMKS1saW51eC1nbnVhYmk2NCQoTUlQU19TT0ZUKSkKKytNVUxUSUxJQl9ESVJOQU1FUyA9IC4gLiAuCisrTVVMVElMSUJfT1NESVJOQU1FUyA9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCisrCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi90LWxpbnV4IGIvZ2NjL2NvbmZpZy9yaXNjdi90LWxpbnV4CitpbmRleCAyMTZkMjc3NmExOC4uZTRkODE3NjIxZmMgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3Jpc2N2L3QtbGludXgKKysrKyBiL2djYy9jb25maWcvcmlzY3YvdC1saW51eAorQEAgLTEsMyArMSw1IEBACisgIyBPbmx5IFhMRU4gYW5kIEFCSSBhZmZlY3QgTGludXggbXVsdGlsaWIgZGlyIG5hbWVzLCBlLmcuIC9saWIzMi9pbHAzMmQvCistTVVMVElMSUJfRElSTkFNRVMgOj0gJChwYXRzdWJzdCBydjMyJSxsaWIzMiwkKHBhdHN1YnN0IHJ2NjQlLGxpYjY0LCQoTVVMVElMSUJfRElSTkFNRVMpKSkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTIDo9ICQocGF0c3Vic3QgbGliJSwuLi9saWIlLCQoTVVMVElMSUJfRElSTkFNRVMpKQorKyNNVUxUSUxJQl9ESVJOQU1FUyA6PSAkKHBhdHN1YnN0IHJ2MzIlLGxpYjMyLCQocGF0c3Vic3QgcnY2NCUsbGliNjQsJChNVUxUSUxJQl9ESVJOQU1FUykpKQorK01VTFRJTElCX0RJUk5BTUVTIDo9IC4gLgorKyNNVUxUSUxJQl9PU0RJUk5BTUVTIDo9ICQocGF0c3Vic3QgbGliJSwuLi9saWIlLCQoTVVMVElMSUJfRElSTkFNRVMpKQorK01VTFRJTElCX09TRElSTkFNRVMgOj0gLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkgLi4vJChzaGVsbCBiYXNlbmFtZSAkKGJhc2VfbGliZGlyKSkKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQgYi9nY2MvY29uZmlnL3JzNjAwMC90LWxpbnV4NjQKK2luZGV4IGYzYzZlMmJlMWQ5Li5iZDAzOTMxNTVmYSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvcnM2MDAwL3QtbGludXg2NAorKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvdC1saW51eDY0CitAQCAtMjYsMTAgKzI2LDkgQEAKKyAjIE1VTFRJTElCX09TRElSTkFNRVMgYWNjb3JkaW5nIHRvIHdoYXQgaXMgZm91bmQgb24gdGhlIHRhcmdldC4KKyAKKyBNVUxUSUxJQl9PUFRJT05TICAgIDo9IG02NC9tMzIKKy1NVUxUSUxJQl9ESVJOQU1FUyAgIDo9IDY0IDMyCisrTVVMVElMSUJfRElSTkFNRVMgICA6PSAuIC4KKyBNVUxUSUxJQl9FWFRSQV9PUFRTIDo9IAorLU1VTFRJTElCX09TRElSTkFNRVMgOj0gbTY0PS4uL2xpYjY0JChjYWxsIGlmX211bHRpYXJjaCw6cG93ZXJwYzY0LWxpbnV4LWdudSkKKy1NVUxUSUxJQl9PU0RJUk5BTUVTICs9IG0zMj0kKGlmICQod2lsZGNhcmQgJChzaGVsbCBlY2hvICQoU1lTVEVNX0hFQURFUl9ESVIpKS8uLi8uLi91c3IvbGliMzIpLC4uL2xpYjMyLC4uL2xpYikkKGNhbGwgaWZfbXVsdGlhcmNoLDpwb3dlcnBjLWxpbnV4LWdudSkKKytNVUxUSUxJQl9PU0RJUk5BTUVTIDo9IC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpIC4uLyQoc2hlbGwgYmFzZW5hbWUgJChiYXNlX2xpYmRpcikpCisgCisgcnM2MDAwLWxpbnV4Lm86ICQoc3JjZGlyKS9jb25maWcvcnM2MDAwL3JzNjAwMC1saW51eC5jCisgCSQoQ09NUElMRSkgJDwKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDUtb3B0aW9uYWwtbGlic3RkYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDUtb3B0aW9uYWwtbGlic3RkYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYzI4YWVhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwNS1vcHRpb25hbC1saWJzdGRjLnBhdGNoCkBAIC0wLDAgKzEsMTI1IEBACitGcm9tIDQzNWU0NTU5MmU5NDQwMThmMzNiZmYzMmYxMjAyYjA4NzJhMjMxNDEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToxMjo1NiArMDQwMAorU3ViamVjdDogW1BBVENIIDA1LzM5XSBvcHRpb25hbCBsaWJzdGRjCisKK2djYy1ydW50aW1lIGJ1aWxkcyBsaWJzdGRjKysgc2VwYXJhdGVseSBmcm9tIGdjYy1jcm9zcy0qLiBJdHMgY29uZmlndXJlIHRlc3RzIHVzaW5nIGcrKword2lsbCBub3QgcnVuIGNvcnJlY3RseSBzaW5jZSBieSBkZWZhdWx0IHRoZSBsaW5rZXIgd2lsbCB0cnkgdG8gbGluayBhZ2FpbnN0IGxpYnN0ZGMrKword2hpY2ggc2hvdWxkbid0IGV4aXN0IHlldC4gV2UgbmVlZCBhbiBvcHRpb24gdG8gZGlzYWJsZSAtbHN0ZGMrKworb3B0aW9uIHdoaWxzdCBsZWF2aW5nIC1sYywgLWxnY2MgYW5kIG90aGVyIGF1dG9tYXRpYyBsaWJyYXJ5IGRlcGVuZGVuY2llcyBhZGRlZCBieSBnY2MKK2RyaXZlci4gVGhpcyBwYXRjaCBhZGRzIHN1Y2ggYW4gb3B0aW9uIHdoaWNoIG9ubHkgZGlzYWJsZXMgdGhlIC1sc3RkYysrLgorCitBICJzdGFuZGFyZCIgZ2NjIGJ1aWxkIHVzZXMgeGdjYyBhbmQgaGVuY2UgYXZvaWRzIHRoaXMuIFdlIHNob3VsZCBhc2sgdXBzdHJlYW0gaG93IHRvCitkbyB0aGlzIG9mZmljaWFsbHksIHRoZSBsaWtlbHkgYW5zd2VyIGlzIGRvbid0IGJ1aWxkIGxpYnN0ZGMrKyBzZXBhcmF0ZWx5LgorCitSUCAyOS82LzEwCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCistLS0KKyBnY2MvYy1mYW1pbHkvYy5vcHQgIHwgIDQgKysrKworIGdjYy9jcC9nKytzcGVjLmMgICAgfCAgMSArCisgZ2NjL2RvYy9pbnZva2UudGV4aSB8IDMyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystCisgZ2NjL2djYy5jICAgICAgICAgICB8ICAxICsKKyA0IGZpbGVzIGNoYW5nZWQsIDM3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2djYy9jLWZhbWlseS9jLm9wdCBiL2djYy9jLWZhbWlseS9jLm9wdAoraW5kZXggOTE2Y2M2N2I0NTMuLjQxNjE5ZmE1OTFjIDEwMDY0NAorLS0tIGEvZ2NjL2MtZmFtaWx5L2Mub3B0CisrKysgYi9nY2MvYy1mYW1pbHkvYy5vcHQKK0BAIC0xOTUyLDYgKzE5NTIsMTAgQEAgbm9zdGRpbmMrKworIEMrKyBPYmpDKysKKyBEbyBub3Qgc2VhcmNoIHN0YW5kYXJkIHN5c3RlbSBpbmNsdWRlIGRpcmVjdG9yaWVzIGZvciBDKysuCisgCisrbm9zdGRsaWIrKworK0RyaXZlcgorK0RvIG5vdCBsaW5rIHN0YW5kYXJkIEMrKyBydW50aW1lIGxpYnJhcnkKKysKKyBvCisgQyBPYmpDIEMrKyBPYmpDKysgSm9pbmVkIFNlcGFyYXRlCisgOyBEb2N1bWVudGVkIGluIGNvbW1vbi5vcHQKK2RpZmYgLS1naXQgYS9nY2MvY3AvZysrc3BlYy5jIGIvZ2NjL2NwL2crK3NwZWMuYworaW5kZXggNmM0NTc0YTgzN2QuLjBlMjY1N2YwMGVlIDEwMDY0NAorLS0tIGEvZ2NjL2NwL2crK3NwZWMuYworKysrIGIvZ2NjL2NwL2crK3NwZWMuYworQEAgLTEzNyw2ICsxMzcsNyBAQCBsYW5nX3NwZWNpZmljX2RyaXZlciAoc3RydWN0IGNsX2RlY29kZWRfb3B0aW9uICoqaW5fZGVjb2RlZF9vcHRpb25zLAorICAgICAgIHN3aXRjaCAoZGVjb2RlZF9vcHRpb25zW2ldLm9wdF9pbmRleCkKKyAJeworIAljYXNlIE9QVF9ub3N0ZGxpYjoKKysJY2FzZSBPUFRfbm9zdGRsaWJfXzoKKyAJY2FzZSBPUFRfbm9kZWZhdWx0bGliczoKKyAJICBsaWJyYXJ5ID0gLTE7CisgCSAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvZ2NjL2RvYy9pbnZva2UudGV4aSBiL2djYy9kb2MvaW52b2tlLnRleGkKK2luZGV4IGMzZDNkNTFhMjhmLi4yZjdmZmU0NTZjMyAxMDA2NDQKKy0tLSBhL2djYy9kb2MvaW52b2tlLnRleGkKKysrKyBiL2djYy9kb2MvaW52b2tlLnRleGkKK0BAIC0yMjgsNiArMjI4LDkgQEAgaW4gdGhlIGZvbGxvd2luZyBzZWN0aW9ucy4KKyAtZm5vLXdlYWsgIC1ub3N0ZGluYysrIEBnb2wKKyAtZnZpc2liaWxpdHktaW5saW5lcy1oaWRkZW4gQGdvbAorIC1mdmlzaWJpbGl0eS1tcy1jb21wYXQgQGdvbAorKy1mdnRhYmxlLXZlcmlmeT1AcntbfXN0ZEBye3x9cHJlaW5pdEBye3x9bm9uZUBye119IEBnb2wKKystZnZ0di1jb3VudHMgLWZ2dHYtZGVidWcgQGdvbAorKy1ub3N0ZGxpYisrIEBnb2wKKyAtZmV4dC1udW1lcmljLWxpdGVyYWxzIEBnb2wKKyAtV2FiaT1AdmFye259ICAtV2FiaS10YWcgIC1XY29udmVyc2lvbi1udWxsICAtV2N0b3ItZHRvci1wcml2YWN5IEBnb2wKKyAtV2RlbGV0ZS1ub24tdmlydHVhbC1kdG9yICAtV2RlcHJlY2F0ZWQtY29weSAgLVdkZXByZWNhdGVkLWNvcHktZHRvciBAZ29sCitAQCAtNTM5LDcgKzU0Miw3IEBAIE9iamVjdGl2ZS1DIGFuZCBPYmplY3RpdmUtQysrIERpYWxlY3RzfS4KKyAtcGllICAtcHRocmVhZCAgLXIgIC1yZHluYW1pYyBAZ29sCisgLXMgIC1zdGF0aWMgIC1zdGF0aWMtcGllICAtc3RhdGljLWxpYmdjYyAgLXN0YXRpYy1saWJzdGRjKysgQGdvbAorIC1zdGF0aWMtbGliYXNhbiAgLXN0YXRpYy1saWJ0c2FuICAtc3RhdGljLWxpYmxzYW4gIC1zdGF0aWMtbGlidWJzYW4gQGdvbAorLS1zaGFyZWQgIC1zaGFyZWQtbGliZ2NjICAtc3ltYm9saWMgQGdvbAorKy1zaGFyZWQgIC1zaGFyZWQtbGliZ2NjICAtc3ltYm9saWMgLW5vc3RkbGliKysgQGdvbAorIC1UIEB2YXJ7c2NyaXB0fSAgLVdsLEB2YXJ7b3B0aW9ufSAgLVhsaW5rZXIgQHZhcntvcHRpb259IEBnb2wKKyAtdSBAdmFye3N5bWJvbH0gIC16IEB2YXJ7a2V5d29yZH19CisgCitAQCAtMTMzMjEsNiArMTMzMjQsMzMgQEAgU3BlY2lmeSB0aGF0IHRoZSBwcm9ncmFtIGVudHJ5IHBvaW50IGlzIEB2YXJ7ZW50cnl9LiAgVGhlIGFyZ3VtZW50IGlzCisgaW50ZXJwcmV0ZWQgYnkgdGhlIGxpbmtlcjsgdGhlIEdOVSBsaW5rZXIgYWNjZXB0cyBlaXRoZXIgYSBzeW1ib2wgbmFtZQorIG9yIGFuIGFkZHJlc3MuCisgCisrQGl0ZW0gLW5vc3RkbGliKysKKytAb3BpbmRleCBub3N0ZGxpYisrCisrRG8gbm90IHVzZSB0aGUgc3RhbmRhcmQgc3lzdGVtIEMrKyBydW50aW1lIGxpYnJhcmllcyB3aGVuIGxpbmtpbmcuCisrT25seSB0aGUgbGlicmFyaWVzIHlvdSBzcGVjaWZ5IHdpbGwgYmUgcGFzc2VkIHRvIHRoZSBsaW5rZXIuCisrCisrQGNpbmRleCBAb3B0aW9uey1sZ2NjfSwgdXNlIHdpdGggQG9wdGlvbnstbm9zdGRsaWJ9CisrQGNpbmRleCBAb3B0aW9uey1ub3N0ZGxpYn0gYW5kIHVucmVzb2x2ZWQgcmVmZXJlbmNlcworK0BjaW5kZXggdW5yZXNvbHZlZCByZWZlcmVuY2VzIGFuZCBAb3B0aW9uey1ub3N0ZGxpYn0KKytAY2luZGV4IEBvcHRpb257LWxnY2N9LCB1c2Ugd2l0aCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfQorK0BjaW5kZXggQG9wdGlvbnstbm9kZWZhdWx0bGlic30gYW5kIHVucmVzb2x2ZWQgcmVmZXJlbmNlcworK0BjaW5kZXggdW5yZXNvbHZlZCByZWZlcmVuY2VzIGFuZCBAb3B0aW9uey1ub2RlZmF1bHRsaWJzfQorK09uZSBvZiB0aGUgc3RhbmRhcmQgbGlicmFyaWVzIGJ5cGFzc2VkIGJ5IEBvcHRpb257LW5vc3RkbGlifSBhbmQKKytAb3B0aW9uey1ub2RlZmF1bHRsaWJzfSBpcyBAZmlsZXtsaWJnY2MuYX0sIGEgbGlicmFyeSBvZiBpbnRlcm5hbCBzdWJyb3V0aW5lcworK3doaWNoIEdDQyB1c2VzIHRvIG92ZXJjb21lIHNob3J0Y29taW5ncyBvZiBwYXJ0aWN1bGFyIG1hY2hpbmVzLCBvciBzcGVjaWFsCisrbmVlZHMgZm9yIHNvbWUgbGFuZ3VhZ2VzLgorKyhAeHJlZntJbnRlcmZhY2UsLEludGVyZmFjaW5nIHRvIEdDQyBPdXRwdXQsZ2NjaW50LEdOVSBDb21waWxlcgorK0NvbGxlY3Rpb24gKEdDQykgSW50ZXJuYWxzfSwKKytmb3IgbW9yZSBkaXNjdXNzaW9uIG9mIEBmaWxle2xpYmdjYy5hfS4pCisrSW4gbW9zdCBjYXNlcywgeW91IG5lZWQgQGZpbGV7bGliZ2NjLmF9IGV2ZW4gd2hlbiB5b3Ugd2FudCB0byBhdm9pZAorK290aGVyIHN0YW5kYXJkIGxpYnJhcmllcy4gIEluIG90aGVyIHdvcmRzLCB3aGVuIHlvdSBzcGVjaWZ5IEBvcHRpb257LW5vc3RkbGlifQorK29yIEBvcHRpb257LW5vZGVmYXVsdGxpYnN9IHlvdSBzaG91bGQgdXN1YWxseSBzcGVjaWZ5IEBvcHRpb257LWxnY2N9IGFzIHdlbGwuCisrVGhpcyBlbnN1cmVzIHRoYXQgeW91IGhhdmUgbm8gdW5yZXNvbHZlZCByZWZlcmVuY2VzIHRvIGludGVybmFsIEdDQworK2xpYnJhcnkgc3Vicm91dGluZXMuCisrKEFuIGV4YW1wbGUgb2Ygc3VjaCBhbiBpbnRlcm5hbCBzdWJyb3V0aW5lIGlzIEBjb2Rle19fbWFpbn0sIHVzZWQgdG8gZW5zdXJlIEMrKworK2NvbnN0cnVjdG9ycyBhcmUgY2FsbGVkOyBAcHhyZWZ7Q29sbGVjdDIsLEBjb2Rle2NvbGxlY3QyfSwgZ2NjaW50LAorK0dOVSBDb21waWxlciBDb2xsZWN0aW9uIChHQ0MpIEludGVybmFsc30uKQorKworIEBpdGVtIC1waWUKKyBAb3BpbmRleCBwaWUKKyBQcm9kdWNlIGEgZHluYW1pY2FsbHkgbGlua2VkIHBvc2l0aW9uIGluZGVwZW5kZW50IGV4ZWN1dGFibGUgb24gdGFyZ2V0cworZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggYTI2MDFhNmJiMDYuLmNkNmM2ZmM5NWRiIDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC0xMDUyLDYgKzEwNTIsNyBAQCBwcm9wZXIgcG9zaXRpb24gYW1vbmcgdGhlIG90aGVyIG91dHB1dCBmaWxlcy4gICovCisgICAgICUobWZsaWIpICIgU1RBQ0tfU1BMSVRfU1BFQyAiXAorICAgICAle2Zwcm9maWxlLWFyY3N8ZnByb2ZpbGUtZ2VuZXJhdGUqfGNvdmVyYWdlOi1sZ2Nvdn0gIiBTQU5JVElaRVJfU1BFQyAiIFwKKyAgICAgJXshbm9zdGRsaWI6JXshcjoleyFub2RlZmF1bHRsaWJzOiUobGlua19zc3ApICUobGlua19nY2NfY19zZXF1ZW5jZSl9fX1cCisrICAgICV7IW5vc3RkbGliKys6fVwKKyAgICAgJXshbm9zdGRsaWI6JXshcjoleyFub3N0YXJ0ZmlsZXM6JUV9fX0gJXtUKn0gIFxuJShwb3N0X2xpbmspIH19fX19fSIKKyAjZW5kaWYKKyAKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDYtQ09MTEVDVF9HQ0NfT1BUSU9OUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDZmM2E3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwNi1DT0xMRUNUX0dDQ19PUFRJT05TLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gYzk5Njg0NDc3ZWM2NmYyOTBlYzc0ZWZlNzMyYWNkM2MyNGRiN2RjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjE2OjI4ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMDYvMzldIENPTExFQ1RfR0NDX09QVElPTlMKKworVGhpcyBwYXRjaCBhZGRzIC0tc3lzcm9vdCBpbnRvIENPTExFQ1RfR0NDX09QVElPTlMgd2hpY2ggaXMgdXNlZCB0bworaW52b2tlIGNvbGxlY3QyLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGdjYy9nY2MuYyB8IDkgKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2djYy5jIGIvZ2NjL2djYy5jCitpbmRleCBjZDZjNmZjOTVkYi4uN2RhOWM1ZDQ1N2IgMTAwNjQ0CistLS0gYS9nY2MvZ2NjLmMKKysrKyBiL2djYy9nY2MuYworQEAgLTQ4MDQsNiArNDgwNCwxNSBAQCBzZXRfY29sbGVjdF9nY2Nfb3B0aW9ucyAodm9pZCkKKyAJCXNpemVvZiAoIkNPTExFQ1RfR0NDX09QVElPTlM9IikgLSAxKTsKKyAKKyAgIGZpcnN0X3RpbWUgPSBUUlVFOworKyNpZmRlZiBIQVZFX0xEX1NZU1JPT1QKKysgIGlmICh0YXJnZXRfc3lzdGVtX3Jvb3RfY2hhbmdlZCAmJiB0YXJnZXRfc3lzdGVtX3Jvb3QpCisrICAgIHsKKysgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssICInLS1zeXNyb290PSIsIHNpemVvZigiJy0tc3lzcm9vdD0iKS0xKTsKKysgICAgICBvYnN0YWNrX2dyb3cgKCZjb2xsZWN0X29ic3RhY2ssIHRhcmdldF9zeXN0ZW1fcm9vdCxzdHJsZW4odGFyZ2V0X3N5c3RlbV9yb290KSk7CisrICAgICAgb2JzdGFja19ncm93ICgmY29sbGVjdF9vYnN0YWNrLCAiJyIsIDEpOworKyAgICAgIGZpcnN0X3RpbWUgPSBGQUxTRTsKKysgICAgfQorKyNlbmRpZgorICAgZm9yIChpID0gMDsgKGludCkgaSA8IG5fc3dpdGNoZXM7IGkrKykKKyAgICAgeworICAgICAgIGNvbnN0IGNoYXIgKmNvbnN0ICphcmdzOworLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwNy1Vc2UtdGhlLWRlZmF1bHRzLmgtaW4tQi1pbnN0ZWFkLW9mLVMtYW5kLXQtb2UtaW4tQi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDctVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjhhODc2YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMDctVXNlLXRoZS1kZWZhdWx0cy5oLWluLUItaW5zdGVhZC1vZi1TLWFuZC10LW9lLWluLUIucGF0Y2gKQEAgLTAsMCArMSw5NiBAQAorRnJvbSBkNmY0ZWRhYWIwYWQwZTc0MmZiMWUzYTZmNzY5MDhhMmFjOTkyN2Q1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MTc6MjUgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAwNy8zOV0gVXNlIHRoZSBkZWZhdWx0cy5oIGluICR7Qn0gaW5zdGVhZCBvZiAke1N9LCBhbmQgdC1vZSBpbgorICR7Qn0KKworVXNlIHRoZSBkZWZhdWx0cy5oIGluICR7Qn0gaW5zdGVhZCBvZiAke1N9LCBhbmQgdC1vZSBpbiAke0J9LCBzbyB0aGF0Cit0aGUgc291cmNlIGNhbiBiZSBzaGFyZWQgYmV0d2VlbiBnY2MtY3Jvc3MtaW5pdGlhbCwKK2djYy1jcm9zcy1pbnRlcm1lZGlhdGUsIGdjYy1jcm9zcywgZ2NjLXJ1bnRpbWUsIGFuZCBhbHNvIHRoZSBzZGsgYnVpbGQuCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitXaGlsZSBjb21waWxpbmcgZ2NjLWNyb3Nzc2RrLWluaXRpYWwteDg2XzY0IG9uIHNvbWUgaG9zdCwgdGhlcmUgaXMKK29jY2FzaW9uYWxseSBmYWlsdXJlIHRoYXQgdGVzdCB0aGUgZXhpc3RhbmNlIG9mIGRlZmF1bHQuaCBkb2Vzbid0Cit3b3JrLCB0aGUgcmVhc29uIGlzIHRtX2luY2x1ZGVfbGlzdD0nKiogZGVmYXVsdHMuaCcgcmF0aGVyIHRoYW4KK3RtX2luY2x1ZGVfbGlzdD0nKiogLi9kZWZhdWx0cy5oJworCitTbyB3ZSBhZGQgdGhlIHRlc3QgY29uZGl0aW9uIGZvciB0aGlzIHNpdHVhdGlvbi4KK1NpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKy0tLQorIGdjYy9NYWtlZmlsZS5pbiAgfCAyICstCisgZ2NjL2NvbmZpZ3VyZSAgICB8IDQgKystLQorIGdjYy9jb25maWd1cmUuYWMgfCA0ICsrLS0KKyBnY2MvbWtjb25maWcuc2ggIHwgNCArKy0tCisgNCBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvTWFrZWZpbGUuaW4gYi9nY2MvTWFrZWZpbGUuaW4KK2luZGV4IGFiYWU4NzJjZDYzLi5mZWY2YzRjNjFlMyAxMDA2NDQKKy0tLSBhL2djYy9NYWtlZmlsZS5pbgorKysrIGIvZ2NjL01ha2VmaWxlLmluCitAQCAtNTQwLDcgKzU0MCw3IEBAIFRBUkdFVF9TWVNURU1fUk9PVCA9IEBUQVJHRVRfU1lTVEVNX1JPT1RACisgVEFSR0VUX1NZU1RFTV9ST09UX0RFRklORSA9IEBUQVJHRVRfU1lTVEVNX1JPT1RfREVGSU5FQAorIAorIHhtYWtlX2ZpbGU9QHhtYWtlX2ZpbGVACistdG1ha2VfZmlsZT1AdG1ha2VfZmlsZUAKKyt0bWFrZV9maWxlPUB0bWFrZV9maWxlQCAuL3Qtb2UKKyBUTV9FTkRJQU5fQ09ORklHPUBUTV9FTkRJQU5fQ09ORklHQAorIFRNX01VTFRJTElCX0NPTkZJRz1AVE1fTVVMVElMSUJfQ09ORklHQAorIFRNX01VTFRJTElCX0VYQ0VQVElPTlNfQ09ORklHPUBUTV9NVUxUSUxJQl9FWENFUFRJT05TX0NPTkZJR0AKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggMmUyNmRkMzMzMTAuLmVkNzkzMWRhZWQzIDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTEyMzQyLDggKzEyMzQyLDggQEAgZm9yIGYgaW4gJHRtX2ZpbGU7IGRvCisgICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgorICAgICAgICA7OworICAgICBkZWZhdWx0cy5oICkKKy0gICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS8kZiIKKy0gICAgICAgdG1faW5jbHVkZV9saXN0PSIke3RtX2luY2x1ZGVfbGlzdH0gJGYiCisrICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vJGYiCisrICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9IC4vJGYiCisgICAgICAgIDs7CisgICAgICogKQorICAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSBcJChzcmNkaXIpL2NvbmZpZy8kZiIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggMTJkMWQwNGU2NDUuLmUwNTAwZTMwZDUwIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTE5NjgsOCArMTk2OCw4IEBAIGZvciBmIGluICR0bV9maWxlOyBkbworICAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAkZiIKKyAgICAgICAgOzsKKyAgICAgZGVmYXVsdHMuaCApCistICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IFwkKHNyY2RpcikvJGYiCistICAgICAgIHRtX2luY2x1ZGVfbGlzdD0iJHt0bV9pbmNsdWRlX2xpc3R9ICRmIgorKyAgICAgICB0bV9maWxlX2xpc3Q9IiR7dG1fZmlsZV9saXN0fSAuLyRmIgorKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuLyRmIgorICAgICAgICA7OworICAgICAqICkKKyAgICAgICAgdG1fZmlsZV9saXN0PSIke3RtX2ZpbGVfbGlzdH0gXCQoc3JjZGlyKS9jb25maWcvJGYiCitkaWZmIC0tZ2l0IGEvZ2NjL21rY29uZmlnLnNoIGIvZ2NjL21rY29uZmlnLnNoCitpbmRleCAzMDhiODdkMGNjMS4uMTkwNjhjYmMyNGEgMTAwNjQ0CistLS0gYS9nY2MvbWtjb25maWcuc2gKKysrKyBiL2djYy9ta2NvbmZpZy5zaAorQEAgLTc3LDcgKzc3LDcgQEAgaWYgWyAtbiAiJEhFQURFUlMiIF07IHRoZW4KKyAgICAgaWYgWyAkIyAtZ2UgMSBdOyB0aGVuCisgCWVjaG8gJyNpZmRlZiBJTl9HQ0MnID4+ICR7b3V0cHV0fVQKKyAJZm9yIGZpbGUgaW4gIiRAIjsgZG8KKy0JICAgIGlmIHRlc3QgeCIkZmlsZSIgPSB4ImRlZmF1bHRzLmgiOyB0aGVuCisrCSAgICBpZiB0ZXN0IHgiJGZpbGUiID0geCIuL2RlZmF1bHRzLmgiIC1vIHgiJGZpbGUiID0geCJkZWZhdWx0cy5oIjsgdGhlbgorIAkJcG9zdHBvbmVfZGVmYXVsdHNfaD0ieWVzIgorIAkgICAgZWxzZQorIAkJZWNobyAiIyBpbmNsdWRlIFwiJGZpbGVcIiIgPj4gJHtvdXRwdXR9VAorQEAgLTEwNiw3ICsxMDYsNyBAQCBlc2FjCisgCisgIyBJZiB3ZSBwb3N0cG9uZWQgaW5jbHVkaW5nIGRlZmF1bHRzLmgsIGFkZCB0aGUgI2luY2x1ZGUgbm93LgorIGlmIHRlc3QgeCIkcG9zdHBvbmVfZGVmYXVsdHNfaCIgPSB4InllcyI7IHRoZW4KKy0gICAgZWNobyAiIyBpbmNsdWRlIFwiZGVmYXVsdHMuaFwiIiA+PiAke291dHB1dH1UCisrICAgIGVjaG8gIiMgaW5jbHVkZSBcIi4vZGVmYXVsdHMuaFwiIiA+PiAke291dHB1dH1UCisgZmkKKyAKKyAjIEFkZCBtdWx0aXBsZSBpbmNsdXNpb24gcHJvdGVjdGlvbiBndWFyZCwgcGFydCB0d28uCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA4LWZvcnRyYW4tY3Jvc3MtY29tcGlsZS1oYWNrLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YWNkMmIwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwOC1mb3J0cmFuLWNyb3NzLWNvbXBpbGUtaGFjay5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDJjNTE0YWRhMzZmZmJmNzAxNzc5MDlmNjMzZTlmNjg4MTFkZTYxZTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMDowMSArMDQwMAorU3ViamVjdDogW1BBVENIIDA4LzM5XSBmb3J0cmFuIGNyb3NzLWNvbXBpbGUgaGFjay4KKworKiBGb3J0cmFuIHdvdWxkIGhhdmUgc2VhcmNoZWQgZm9yIGFybS1hbmdzdHJvbS1nbnVlYWJpLWdmb3J0cmFuIGJ1dCB3b3VsZCBoYXZlIHVzZWQKK3VzZWQgZ2ZvcnRhbi4gRm9yIGdjY180LjIuMi5iYiB3ZSB3YW50IHRvIHVzZSB0aGUgZ2ZvcnRyYW4gY29tcGlsZXIgZnJvbSBvdXIgY3Jvc3MKK2RpcmVjdG9yeS4KKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKy0tLQorIGxpYmdmb3J0cmFuL2NvbmZpZ3VyZSAgICB8IDIgKy0KKyBsaWJnZm9ydHJhbi9jb25maWd1cmUuYWMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9saWJnZm9ydHJhbi9jb25maWd1cmUgYi9saWJnZm9ydHJhbi9jb25maWd1cmUKK2luZGV4IDYwODY3YjkzZDBlLi4zZmM5ZmNhNWI3YiAxMDA3NTUKKy0tLSBhL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZQorKysrIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlCitAQCAtMTMwNzEsNyArMTMwNzEsNyBAQCBlc2FjCisgCisgIyBXZSBuZWVkIGdmb3J0cmFuIHRvIGNvbXBpbGUgcGFydHMgb2YgdGhlIGxpYnJhcnkKKyAjQUNfUFJPR19GQyhnZm9ydHJhbikKKy1GQz0iJEdGT1JUUkFOIgorKyNGQz0iJEdGT1JUUkFOIgorIGFjX2V4dD0ke2FjX2ZjX3NyY2V4dC1mfQorIGFjX2NvbXBpbGU9JyRGQyAtYyAkRkNGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCA+JjUnCisgYWNfbGluaz0nJEZDIC1vIGNvbmZ0ZXN0JGFjX2V4ZWV4dCAkRkNGTEFHUyAkTERGTEFHUyAkYWNfZmNmbGFnc19zcmNleHQgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCitkaWZmIC0tZ2l0IGEvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjIGIvbGliZ2ZvcnRyYW4vY29uZmlndXJlLmFjCitpbmRleCA3Y2ZjZTI4YWI2OS4uNmNkNTE1ZWUxYTQgMTAwNjQ0CistLS0gYS9saWJnZm9ydHJhbi9jb25maWd1cmUuYWMKKysrKyBiL2xpYmdmb3J0cmFuL2NvbmZpZ3VyZS5hYworQEAgLTI1MCw3ICsyNTAsNyBAQCBBQ19TVUJTVChlbmFibGVfc3RhdGljKQorIAorICMgV2UgbmVlZCBnZm9ydHJhbiB0byBjb21waWxlIHBhcnRzIG9mIHRoZSBsaWJyYXJ5CisgI0FDX1BST0dfRkMoZ2ZvcnRyYW4pCistRkM9IiRHRk9SVFJBTiIKKysjRkM9IiRHRk9SVFJBTiIKKyBBQ19QUk9HX0ZDKGdmb3J0cmFuKQorIAorICMgZXh0cmEgTEQgRmxhZ3Mgd2hpY2ggYXJlIHJlcXVpcmVkIGZvciB0YXJnZXRzCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDA5LWNwcC1ob25vci1zeXNyb290LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwOS1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41YTllNTI3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAwOS1jcHAtaG9ub3Itc3lzcm9vdC5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIDBhN2MwM2E5Y2Y5MjViYTA5YTUxMGEzMmU2ODRmMDFlYzVhNTA2NTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMjowMCArMDQwMAorU3ViamVjdDogW1BBVENIIDA5LzM5XSBjcHA6IGhvbm9yIHN5c3Jvb3QuCisKK0N1cnJlbnRseSwgaWYgdGhlIGdjYyB0b29sY2hhaW4gaXMgcmVsb2NhdGVkIGFuZCBpbnN0YWxsZWQgZnJvbSBzc3RhdGUsIHRoZW4geW91IHRyeSBhbmQgY29tcGlsZQorcHJlcHJvY2Vzc2VkIHNvdXJjZSAoLmkgb3IgLmlpIGZpbGVzKSwgdGhlIGNvbXBpbGVyIHdpbGwgdHJ5IGFuZCBhY2Nlc3MgdGhlIGJ1aWx0aW4gc3lzcm9vdCBsb2NhdGlvbgorcmF0aGVyIHRoYW4gdGhlIC0tc3lzcm9vdCBvcHRpb24gc3BlY2lmaWVkIG9uIHRoZSBjb21tYW5kbGluZS4gSWYgYWNjZXNzIHRvIHRoYXQgZGlyZWN0b3J5IGlzCitwZXJtaXNzaW9uIGRlbmllZCAodW5yZWFkYWJsZSksIGdjYyB3aWxsIGVycm9yLgorCitUaGlzIGhhcHBlbnMgd2hlbiBjY2FjaGUgaXMgaW4gdXNlIGR1ZSB0byB0aGUgZmFjdCBpdCB1c2VzIHByZXByb2Nlc3NlZCBzb3VyY2UgZmlsZXMuCisKK1RoZSBmaXggYmVsb3cgYWRkcyAlSSB0byB0aGUgY3BwLW91dHB1dCBzcGVjIG1hY3JvIHNvIHRoZSBkZWZhdWx0IHN1YnN0aXR1dGlvbnMgZm9yIC1pcHJlZml4LAorLWlzeXN0ZW0sIC1pc3lzcm9vdCBoYXBwZW4gYW5kIHRoZSBjb3JyZWN0IHN5c3Jvb3QgaXMgdXNlZC4KKworW1lPQ1RPICMyMDc0XQorCitSUCAyMDEyLzA0LzEzCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgZ2NjL2NwL2xhbmctc3BlY3MuaCB8IDIgKy0KKyBnY2MvZ2NjLmMgICAgICAgICAgIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NwL2xhbmctc3BlY3MuaCBiL2djYy9jcC9sYW5nLXNwZWNzLmgKK2luZGV4IGM2ZTQyZWRhMjgzLi5lMWRkZjA2NjQ2NyAxMDA2NDQKKy0tLSBhL2djYy9jcC9sYW5nLXNwZWNzLmgKKysrKyBiL2djYy9jcC9sYW5nLXNwZWNzLmgKK0BAIC02Niw1ICs2Niw1IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgICB7Ii5paSIsICJAYysrLWNwcC1vdXRwdXQiLCAwLCAwLCAwfSwKKyAgIHsiQGMrKy1jcHAtb3V0cHV0IiwKKyAgICAgICAiJXshRToleyFNOiV7IU1NOiIKKy0gICAgICAiICBjYzFwbHVzIC1mcHJlcHJvY2Vzc2VkICVpICUoY2MxX29wdGlvbnMpICUyIgorKyAgICAgICIgIGNjMXBsdXMgLWZwcmVwcm9jZXNzZWQgJWkgJUkgJShjYzFfb3B0aW9ucykgJTIiCisgICAgICAgIiAgJXshZnN5bnRheC1vbmx5OiUoaW52b2tlX2FzKX19fX0iLCAwLCAwLCAwfSwKK2RpZmYgLS1naXQgYS9nY2MvZ2NjLmMgYi9nY2MvZ2NjLmMKK2luZGV4IDdkYTljNWQ0NTdiLi40ZTdjNDViMjY4YyAxMDA2NDQKKy0tLSBhL2djYy9nY2MuYworKysrIGIvZ2NjL2djYy5jCitAQCAtMTM0OSw3ICsxMzQ5LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCBjb21waWxlciBkZWZhdWx0X2NvbXBpbGVyc1tdID0KKyAJCQkJCSAgICVXe28qOi0tb3V0cHV0LXBjaD0lKn19JVZ9fX19fX19IiwgMCwgMCwgMH0sCisgICB7Ii5pIiwgIkBjcHAtb3V0cHV0IiwgMCwgMCwgMH0sCisgICB7IkBjcHAtb3V0cHV0IiwKKy0gICAiJXshTToleyFNTToleyFFOmNjMSAtZnByZXByb2Nlc3NlZCAlaSAlKGNjMV9vcHRpb25zKSAleyFmc3ludGF4LW9ubHk6JShpbnZva2VfYXMpfX19fSIsIDAsIDAsIDB9LAorKyAgICIleyFNOiV7IU1NOiV7IUU6Y2MxIC1mcHJlcHJvY2Vzc2VkICVpICVJICUoY2MxX29wdGlvbnMpICV7IWZzeW50YXgtb25seTolKGludm9rZV9hcyl9fX19IiwgMCwgMCwgMH0sCisgICB7Ii5zIiwgIkBhc3NlbWJsZXIiLCAwLCAwLCAwfSwKKyAgIHsiQGFzc2VtYmxlciIsCisgICAgIiV7IU06JXshTU06JXshRToleyFTOmFzICUoYXNtX2RlYnVnKSAlKGFzbV9vcHRpb25zKSAlaSAlQSB9fX19IiwgMCwgMCwgMH0sCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDEwLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDEwLU1JUFM2NC1EZWZhdWx0LXRvLU42NC1BQkkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTgxMDNiOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTAtTUlQUzY0LURlZmF1bHQtdG8tTjY0LUFCSS5wYXRjaApAQCAtMCwwICsxLDU3IEBACitGcm9tIDM3NGFhYjZhODgyMDBmYmQ3MzQzNDY3ZDk3ZjdlZTY0NTViYmNlNjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyMzowOCArMDQwMAorU3ViamVjdDogW1BBVENIIDEwLzM5XSBNSVBTNjQ6IERlZmF1bHQgdG8gTjY0IEFCSQorCitNSVBTNjQgZGVmYXVsdHMgdG8gbjMyIEFCSSwgdGhpcyBwYXRjaCBtYWtlcyBpdAorc28gdGhhdCBpdCBkZWZhdWx0cyB0byBONjQgQUJJCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQorLS0tCisgZ2NjL2NvbmZpZy5nY2MgfCAxMCArKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy9jb25maWcuZ2NjIGIvZ2NjL2NvbmZpZy5nY2MKK2luZGV4IGIyMjgyZWNkZjBiLi42OWMwZTRhMDA1YiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcuZ2NjCisrKysgYi9nY2MvY29uZmlnLmdjYworQEAgLTIyODIsMjkgKzIyODIsMjkgQEAgbWlwcyotKi1saW51eCopCQkJCSMgTGludXggTUlQUywgZWl0aGVyIGVuZGlhbi4KKyAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzMzIKKyAJCQk7OworIAkJbWlwczY0ZWwtc3QtbGludXgtZ251KQorLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCisrCQkJZGVmYXVsdF9taXBzX2FiaT02NAorIAkJCXRtX2ZpbGU9IiR7dG1fZmlsZX0gbWlwcy9zdC5oIgorIAkJCXRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZX0gbWlwcy90LXN0IgorIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgorIAkJCTs7CisgCQltaXBzNjRvY3Rlb24qLSotbGludXgqKQorLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCisrCQkJZGVmYXVsdF9taXBzX2FiaT02NAorIAkJCXRtX2RlZmluZXM9IiR7dG1fZGVmaW5lc30gTUlQU19DUFVfU1RSSU5HX0RFRkFVTFQ9XFxcIm9jdGVvblxcXCIiCisgCQkJdGFyZ2V0X2NwdV9kZWZhdWx0PU1BU0tfU09GVF9GTE9BVF9BQkkKKyAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKKyAJCQk7OworIAkJbWlwc2lzYTY0cjYqLSotbGludXgqKQorLQkJCWRlZmF1bHRfbWlwc19hYmk9bjMyCisrCQkJZGVmYXVsdF9taXBzX2FiaT02NAorIAkJCWRlZmF1bHRfbWlwc19hcmNoPW1pcHM2NHI2CisgCQkJZW5hYmxlX21pcHNfbXVsdGlsaWJzPSJ5ZXMiCisgCQkJOzsKKyAJCW1pcHNpc2E2NHIyKi0qLWxpbnV4KikKKy0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgorKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKKyAJCQlkZWZhdWx0X21pcHNfYXJjaD1taXBzNjRyMgorIAkJCWVuYWJsZV9taXBzX211bHRpbGlicz0ieWVzIgorIAkJCTs7CisgCQltaXBzNjQqLSotbGludXgqIHwgbWlwc2lzYTY0Ki0qLWxpbnV4KikKKy0JCQlkZWZhdWx0X21pcHNfYWJpPW4zMgorKwkJCWRlZmF1bHRfbWlwc19hYmk9NjQKKyAJCQllbmFibGVfbWlwc19tdWx0aWxpYnM9InllcyIKKyAJCQk7OworIAllc2FjCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDExLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDExLURlZmluZS1HTElCQ19EWU5BTUlDX0xJTktFUi1hbmQtVUNMSUJDX0RZTkFNSUNfTElOS0UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDlkNTYzZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTEtRGVmaW5lLUdMSUJDX0RZTkFNSUNfTElOS0VSLWFuZC1VQ0xJQkNfRFlOQU1JQ19MSU5LRS5wYXRjaApAQCAtMCwwICsxLDI0NiBAQAorRnJvbSBkY2Q3ODkxZDZhZWE1MzI3OTY5MTMyZmVhNmNhNGMxOTlmMTRlOTg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjkgTWFyIDIwMTMgMDk6MjQ6NTAgKzA0MDAKK1N1YmplY3Q6IFtQQVRDSCAxMS8zOV0gRGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIGFuZCBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIKKyByZWxhdGl2ZSB0byBTWVNURU1MSUJTX0RJUgorCitUaGlzIHBhdGNoIGRlZmluZXMgR0xJQkNfRFlOQU1JQ19MSU5LRVIgYW5kIFVDTElCQ19EWU5BTUlDX0xJTktFUgorcmVsYXRpdmUgdG8gU1lTVEVNTElCU19ESVIgd2hpY2ggY2FuIGJlIHNldCBpbiBnZW5lcmF0ZWQgaGVhZGVycworVGhpcyBicmVha3MgdGhlIGFzc3VtcHRpb24gb2YgaGFyZGNvZGVkIG11bHRpbGliIGluIGdjYworQ2hhbmdlIGlzIG9ubHkgZm9yIHRoZSBzdXBwb3J0ZWQgYXJjaGl0ZWN0dXJlcyBpbiBPRSBpbmNsdWRpbmcKK1NILCBzcGFyYywgYWxwaGEgZm9yIHBvc3NpYmxlIGZ1dHVyZSBzdXBwb3J0IChpZiBhbnkpCisKK1JlbW92ZXMgdGhlIGRvX2hlYWRlcmZpeCB0YXNrIGluIG1ldGFkYXRhCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbl0KKy0tLQorIGdjYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmggfCAgNCArKy0tCisgZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oICB8ICA0ICsrLS0KKyBnY2MvY29uZmlnL2FybS9saW51eC1lbGYuaCAgIHwgIDIgKy0KKyBnY2MvY29uZmlnL2kzODYvbGludXguaCAgICAgIHwgIDIgKy0KKyBnY2MvY29uZmlnL2kzODYvbGludXg2NC5oICAgIHwgIDYgKysrLS0tCisgZ2NjL2NvbmZpZy9saW51eC5oICAgICAgICAgICB8ICA4ICsrKystLS0tCisgZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmggICAgICB8IDEyICsrKysrKy0tLS0tLQorIGdjYy9jb25maWcvcmlzY3YvbGludXguaCAgICAgfCAgMiArLQorIGdjYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaCAgfCAxNSArKysrKy0tLS0tLS0tLS0KKyBnY2MvY29uZmlnL3NoL2xpbnV4LmggICAgICAgIHwgIDIgKy0KKyBnY2MvY29uZmlnL3NwYXJjL2xpbnV4LmggICAgIHwgIDIgKy0KKyBnY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaCAgIHwgIDQgKystLQorIDEyIGZpbGVzIGNoYW5nZWQsIDI5IGluc2VydGlvbnMoKyksIDM0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hbHBoYS9saW51eC1lbGYuaCBiL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKK2luZGV4IDgyNDg2MWJlZmVjLi42YWZhY2NlMzI5MiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKKysrKyBiL2djYy9jb25maWcvYWxwaGEvbGludXgtZWxmLmgKK0BAIC0yMyw4ICsyMyw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgI2RlZmluZSBFWFRSQV9TUEVDUyBcCisgeyAiZWxmX2R5bmFtaWNfbGlua2VyIiwgRUxGX0RZTkFNSUNfTElOS0VSIH0sCisgCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUgkiL2xpYi9sZC1saW51eC5zby4yIgorLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLXVDbGliYy5zby4wIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIJU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKKyAjaWYgREVGQVVMVF9MSUJDID09IExJQkNfVUNMSUJDCisgI2RlZmluZSBDSE9PU0VfRFlOQU1JQ19MSU5LRVIoRywgVSkgIiV7bWdsaWJjOiIgRyAiOzoiIFUgIn0iCisgI2VsaWYgREVGQVVMVF9MSUJDID09IExJQkNfR0xJQkMKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmggYi9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKK2luZGV4IDY2ZWMwZWEzOTgwLi5lNGFkZTJlMmFiMCAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAorKysrIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCitAQCAtNjUsOCArNjUsOCBAQAorICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSX0RFRkFVTFQgYW5kIFRBUkdFVF9ERUZBVUxUX0ZMT0FUX0FCSS4gICovCisgCisgI3VuZGVmICBHTElCQ19EWU5BTUlDX0xJTktFUgorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVCAiL2xpYi9sZC1saW51eC5zby4zIgorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfSEFSRF9GTE9BVCAiL2xpYi9sZC1saW51eC1hcm1oZi5zby4zIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJfU09GVF9GTE9BVCBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMyIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSX0hBUkRfRkxPQVQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LWFybWhmLnNvLjMiCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUl9ERUZBVUxUIEdMSUJDX0RZTkFNSUNfTElOS0VSX1NPRlRfRkxPQVQKKyAKKyAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFwKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaCBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVsZi5oCitpbmRleCA5YTM2MGRlZmQyMS4uOThmNmU5NjBiNjQgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lbGYuaAorKysrIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWxmLmgKK0BAIC02MCw3ICs2MCw3IEBACisgCisgI2RlZmluZSBMSUJHQ0NfU1BFQyAiJXttZmxvYXQtYWJpPXNvZnQqOi1sZmxvYXR9IC1sZ2NjIgorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorIAorICNkZWZpbmUgTElOVVhfVEFSR0VUX0xJTktfU1BFQyAgIiV7aCp9IFwKKyAgICAle3N0YXRpYzotQnN0YXRpY30gXAorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9saW51eC5oIGIvZ2NjL2NvbmZpZy9pMzg2L2xpbnV4LmgKK2luZGV4IDlhNmUyZDk5ODk2Li4zMWVmYmI3MzAxNiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvaTM4Ni9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL2kzODYvbGludXguaAorQEAgLTIwLDcgKzIwLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworIAorICNkZWZpbmUgR05VX1VTRVJfTElOS19FTVVMQVRJT04gImVsZl9pMzg2IgorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorIAorICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSCisgI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIgorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvaTM4Ni9saW51eDY0LmggYi9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCitpbmRleCBjMDgyMjFjNDIxMC4uZGJiNDc0ZDc5MmIgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCisrKysgYi9nY2MvY29uZmlnL2kzODYvbGludXg2NC5oCitAQCAtMjcsOSArMjcsOSBAQCBzZWUgdGhlIGZpbGVzIENPUFlJTkczIGFuZCBDT1BZSU5HLlJVTlRJTUUgcmVzcGVjdGl2ZWx5LiAgSWYgbm90LCBzZWUKKyAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9ONjQgImVsZl94ODZfNjQiCisgI2RlZmluZSBHTlVfVVNFUl9MSU5LX0VNVUxBVElPTlgzMiAiZWxmMzJfeDg2XzY0IgorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiL2xpYi9sZC1saW51eC5zby4yIgorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYjY0L2xkLWxpbnV4LXg4Ni02NC5zby4yIgorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVJYMzIgIi9saWJ4MzIvbGQtbGludXgteDMyLnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBTWVNURU1MSUJTX0RJUiAibGQtbGludXgteDg2LTY0LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUlgzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXgteDMyLnNvLjIiCisgCisgI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIzMgorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjMyICIvbGliL2xkLW11c2wtaTM4Ni5zby4xIgorZGlmZiAtLWdpdCBhL2djYy9jb25maWcvbGludXguaCBiL2djYy9jb25maWcvbGludXguaAoraW5kZXggYzNjNGEyMTllNjcuLjRiMDVkOGU5M2QxIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9saW51eC5oCisrKysgYi9nY2MvY29uZmlnL2xpbnV4LmgKK0BAIC05NCwxMCArOTQsMTAgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisgICAgR0xJQkNfRFlOQU1JQ19MSU5LRVIgbXVzdCBiZSBkZWZpbmVkIGZvciBlYWNoIHRhcmdldCB1c2luZyB0aGVtLCBvcgorICAgIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgYW5kIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgZm9yIHRhcmdldHMKKyAgICBzdXBwb3J0aW5nIGJvdGggMzItYml0IGFuZCA2NC1iaXQgY29tcGlsYXRpb24uICAqLworLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLXVDbGliYy5zby4wIgorLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtdUNsaWJjLnNvLjAiCistI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NCAiL2xpYi9sZDY0LXVDbGliYy5zby4wIgorLSNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSWDMyICIvbGliL2xkeDMyLXVDbGliYy5zby4wIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyIFNZU1RFTUxJQlNfRElSICJsZC11Q2xpYmMuc28uMCIKKysjZGVmaW5lIFVDTElCQ19EWU5BTUlDX0xJTktFUjY0IFNZU1RFTUxJQlNfRElSICJsZDY0LXVDbGliYy5zby4wIgorKyNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSWDMyIFNZU1RFTUxJQlNfRElSICJsZHgzMi11Q2xpYmMuc28uMCIKKyAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUiAiL3N5c3RlbS9iaW4vbGlua2VyIgorICNkZWZpbmUgQklPTklDX0RZTkFNSUNfTElOS0VSMzIgIi9zeXN0ZW0vYmluL2xpbmtlciIKKyAjZGVmaW5lIEJJT05JQ19EWU5BTUlDX0xJTktFUjY0ICIvc3lzdGVtL2Jpbi9saW5rZXI2NCIKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL21pcHMvbGludXguaCBiL2djYy9jb25maWcvbWlwcy9saW51eC5oCitpbmRleCA2Zjc5YWM5YzAxYS4uMjVkZTk2Zjk1NjEgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL21pcHMvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9taXBzL2xpbnV4LmgKK0BAIC0yMiwyMCArMjIsMjAgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAjZGVmaW5lIEdOVV9VU0VSX0xJTktfRU1VTEFUSU9OTjMyICJlbGYzMiV7RUI6Yn0le0VMOmx9dHNtaXBuMzIiCisgCisgI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjMyIFwKKy0gICIle21uYW49MjAwODovbGliL2xkLWxpbnV4LW1pcHNuOC5zby4xOzovbGliL2xkLnNvLjF9IgorKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKKyAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAorLSAgIiV7bW5hbj0yMDA4Oi9saWI2NC9sZC1saW51eC1taXBzbjguc28uMTs6L2xpYjY0L2xkLnNvLjF9IgorKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LW1pcHNuOC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZC5zby4xfSIKKyAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSTjMyIFwKKy0gICIle21uYW49MjAwODovbGliMzIvbGQtbGludXgtbWlwc244LnNvLjE7Oi9saWIzMi9sZC5zby4xfSIKKysgICIle21uYW49MjAwODoiIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1taXBzbjguc28uMTs6IiBTWVNURU1MSUJTX0RJUiAibGQuc28uMX0iCisgCisgI3VuZGVmIFVDTElCQ19EWU5BTUlDX0xJTktFUjMyCisgI2RlZmluZSBVQ0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBcCistICAiJXttbmFuPTIwMDg6L2xpYi9sZC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIvbGQtdUNsaWJjLnNvLjB9IgorKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjB9IgorICN1bmRlZiBVQ0xJQkNfRFlOQU1JQ19MSU5LRVI2NAorICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSNjQgXAorLSAgIiV7bW5hbj0yMDA4Oi9saWIvbGQ2NC11Q2xpYmMtbWlwc244LnNvLjA7Oi9saWIvbGQ2NC11Q2xpYmMuc28uMH0iCisrICAiJXttbmFuPTIwMDg6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC11Q2xpYmMtbWlwc244LnNvLjA7OiIgU1lTVEVNTElCU19ESVIgImxkNjQtdUNsaWJjLnNvLjB9IgorICNkZWZpbmUgVUNMSUJDX0RZTkFNSUNfTElOS0VSTjMyIFwKKy0gICIle21uYW49MjAwODovbGliMzIvbGQtdUNsaWJjLW1pcHNuOC5zby4wOzovbGliMzIvbGQtdUNsaWJjLnNvLjB9IgorKyAgIiV7bW5hbj0yMDA4OiIgU1lTVEVNTElCU19ESVIgImxkLXVDbGliYy1taXBzbjguc28uMDs6IiBTWVNURU1MSUJTX0RJUiAibGQtdUNsaWJjLnNvLjB9IgorIAorICN1bmRlZiBNVVNMX0RZTkFNSUNfTElOS0VSMzIKKyAjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIzMiBcCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oIGIvZ2NjL2NvbmZpZy9yaXNjdi9saW51eC5oCitpbmRleCA1OGRkMThiODlmMy4uMTEyYmE5Y2Q3NjQgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3Jpc2N2L2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvcmlzY3YvbGludXguaAorQEAgLTIyLDcgKzIyLDcgQEAgYWxvbmcgd2l0aCBHQ0M7IHNlZSB0aGUgZmlsZSBDT1BZSU5HMy4gIElmIG5vdCBzZWUKKyAgICAgR05VX1VTRVJfVEFSR0VUX09TX0NQUF9CVUlMVElOUygpOwkJCQlcCisgICB9IHdoaWxlICgwKQorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXgtcmlzY3YiIFhMRU5fU1BFQyAiLSIgQUJJX1NQRUMgIi5zby4xIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LXJpc2N2IiBYTEVOX1NQRUMgIi0iIEFCSV9TUEVDICIuc28uMSIKKyAKKyAjZGVmaW5lIE1VU0xfQUJJX1NVRkZJWCBcCisgICAiJXttYWJpPWlscDMyOi1zZn0iIFwKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKK2luZGV4IDk5NDZkM2ZlZDk0Li40NWE5YTdjYWU1OSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAorKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCitAQCAtNDIzLDI0ICs0MjMsMTkgQEAgZXh0ZXJuIGludCBkb3Rfc3ltYm9sczsKKyAjdW5kZWYJTElOS19PU19ERUZBVUxUX1NQRUMKKyAjZGVmaW5lIExJTktfT1NfREVGQVVMVF9TUEVDICIlKGxpbmtfb3NfbGludXgpIgorIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiAiJShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYi9sZC5zby4xIgorLQorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQuc28uMSIKKyAjaWZkZWYgTElOVVg2NF9ERUZBVUxUX0FCSV9FTEZ2MgorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVI2NCBcCistIiV7bWFiaT1lbGZ2MTolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4xOyIgXAorLSI6JShkeW5hbWljX2xpbmtlcl9wcmVmaXgpL2xpYjY0L2xkNjQuc28uMn0iCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0ICIle21hYmk9ZWxmdjE6IiBTWVNURU1MSUJTX0RJUiAibGQ2NC5zby4xOzoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjJ9IgorICNlbHNlCistI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUjY0IFwKKy0iJXttYWJpPWVsZnYyOiUoZHluYW1pY19saW5rZXJfcHJlZml4KS9saWI2NC9sZDY0LnNvLjI7IiBcCistIjolKGR5bmFtaWNfbGlua2VyX3ByZWZpeCkvbGliNjQvbGQ2NC5zby4xfSIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIiV7bWFiaT1lbGZ2MjoiIFNZU1RFTUxJQlNfRElSICJsZDY0LnNvLjI7OiIgU1lTVEVNTElCU19ESVIgImxkNjQuc28uMX0iCisgI2VuZGlmCisgCisgI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIzMgorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjMyIFwKKy0gICIvbGliL2xkLW11c2wtcG93ZXJwYyIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21zb2Z0LWZsb2F0Oi1zZn0uc28uMSIKKysgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLXBvd2VycGMiIE1VU0xfRFlOQU1JQ19MSU5LRVJfRSAiJXttc29mdC1mbG9hdDotc2Z9LnNvLjEiCisgI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVI2NAorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUjY0IFwKKy0gICIvbGliL2xkLW11c2wtcG93ZXJwYzY0IiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgorKyAgU1lTVEVNTElCU19ESVIgImxkLW11c2wtcG93ZXJwYzY0IiBNVVNMX0RZTkFNSUNfTElOS0VSX0UgIiV7bXNvZnQtZmxvYXQ6LXNmfS5zby4xIgorIAorICN1bmRlZiAgREVGQVVMVF9BU01fRU5ESUFOCisgI2lmIChUQVJHRVRfREVGQVVMVCAmIE1BU0tfTElUVExFX0VORElBTikKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NoL2xpbnV4LmggYi9nY2MvY29uZmlnL3NoL2xpbnV4LmgKK2luZGV4IGM5ODk3YjdhY2E1Li44MmYyNzUzMTljYyAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvc2gvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9zaC9saW51eC5oCitAQCAtNjQsNyArNjQsNyBAQCBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUFlJTkczLiAgSWYgbm90IHNlZQorICAgIi9saWIvbGQtbXVzbC1zaCIgTVVTTF9EWU5BTUlDX0xJTktFUl9FIE1VU0xfRFlOQU1JQ19MSU5LRVJfRlAgXAorICAgIiV7bWZkcGljOi1mZHBpY30uc28uMSIKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LnNvLjIiCisrI2RlZmluZSBHTElCQ19EWU5BTUlDX0xJTktFUiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKyAKKyAjdW5kZWYgU1VCVEFSR0VUX0xJTktfRU1VTF9TVUZGSVgKKyAjZGVmaW5lIFNVQlRBUkdFVF9MSU5LX0VNVUxfU1VGRklYICIle21mZHBpYzpfZmQ7Ol9saW51eH0iCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eC5oCitpbmRleCAwODQ3NmYxZDk0ZC4uODA0NDBlNzEyYWQgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvc3BhcmMvbGludXguaAorQEAgLTg0LDcgKzg0LDcgQEAgZXh0ZXJuIGNvbnN0IGNoYXIgKmhvc3RfZGV0ZWN0X2xvY2FsX2NwdSAoaW50IGFyZ2MsIGNvbnN0IGNoYXIgKiphcmd2KTsKKyAgICBXaGVuIHRoZSAtc2hhcmVkIGxpbmsgb3B0aW9uIGlzIHVzZWQgYSBmaW5hbCBsaW5rIGlzIG5vdCBiZWluZworICAgIGRvbmUuICAqLworIAorLSNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC5zby4yIgorIAorICN1bmRlZiAgTElOS19TUEVDCisgI2RlZmluZSBMSU5LX1NQRUMgIi1tIGVsZjMyX3NwYXJjICV7c2hhcmVkOi1zaGFyZWR9IFwKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaCBiL2djYy9jb25maWcvc3BhcmMvbGludXg2NC5oCitpbmRleCA3ODlkMWRmNGJkNS4uYjkyMGM2ODBmYjEgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL3NwYXJjL2xpbnV4NjQuaAorKysrIGIvZ2NjL2NvbmZpZy9zcGFyYy9saW51eDY0LmgKK0BAIC04NCw4ICs4NCw4IEBAIGFsb25nIHdpdGggR0NDOyBzZWUgdGhlIGZpbGUgQ09QWUlORzMuICBJZiBub3Qgc2VlCisgICAgV2hlbiB0aGUgLXNoYXJlZCBsaW5rIG9wdGlvbiBpcyB1c2VkIGEgZmluYWwgbGluayBpcyBub3QgYmVpbmcKKyAgICBkb25lLiAgKi8KKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSMzIgIi9saWIvbGQtbGludXguc28uMiIKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgIi9saWI2NC9sZC1saW51eC5zby4yIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIzMiBTWVNURU1MSUJTX0RJUiAibGQtbGludXguc28uMiIKKysjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSNjQgU1lTVEVNTElCU19ESVIgImxkLWxpbnV4LnNvLjIiCisgCisgI2lmZGVmIFNQQVJDX0JJX0FSQ0gKKyAKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTItZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxMi1nY2MtRml4LWFyZ3VtZW50LWxpc3QtdG9vLWxvbmctZXJyb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWQ5ODg3OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTItZ2NjLUZpeC1hcmd1bWVudC1saXN0LXRvby1sb25nLWVycm9yLnBhdGNoCkBAIC0wLDAgKzEsNDAgQEAKK0Zyb20gZmFhMGY3MTJhNjcwMDVlZjAyNjBmOTVlZWJlN2M3YzU3YTZmODM2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI2OjM3ICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTIvMzldIGdjYzogRml4IGFyZ3VtZW50IGxpc3QgdG9vIGxvbmcgZXJyb3IuCisKK1RoZXJlIHdvdWxkIGJlIGFuICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIHRoZQorYnVpbGQgZGlyZWN0b3J5IGlzIGxvbmdlciB0aGFuIDIwMCwgdGhpcyBpcyBjYXVzZWQgYnk6CisKK2hlYWRlcnM9YGVjaG8gJChQTFVHSU5fSEVBREVSUykgfCB0ciAnICcgJ1wwMTInIHwgc29ydCAtdWAKKworVGhlIFBMVUdJTl9IRUFERVJTIGlzIHRvbyBsb25nIGJlZm9yZSBzb3J0LCBzbyB0aGUgImVjaG8iIGNhbid0IGhhbmRsZQoraXQsIHVzZSB0aGUgJChzb3J0IGxpc3QpIG9mIEdOVSBtYWtlIHdoaWNoIGNhbiBoYW5kbGUgdGhlIHRvbyBsb25nIGxpc3QKK3dvdWxkIGZpeCB0aGUgcHJvYmxlbSwgdGhlIGhlYWRlciB3b3VsZCBiZSBzaG9ydCBlbm91Z2ggYWZ0ZXIgc29ydGVkLgorVGhlICJ0ciAnICcgJ1wwMTInIiB3YXMgdXNlZCBmb3IgdHJhbnNsYXRpbmcgdGhlIHNwYWNlIHRvICJcbiIsIHRoZQorJChzb3J0IGxpc3QpIGRvZXNuJ3QgbmVlZCB0aGlzLgorCitTaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworLS0tCisgZ2NjL01ha2VmaWxlLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCitpbmRleCBmZWY2YzRjNjFlMy4uNTdjZjc4MDRmMGEgMTAwNjQ0CistLS0gYS9nY2MvTWFrZWZpbGUuaW4KKysrKyBiL2djYy9NYWtlZmlsZS5pbgorQEAgLTM1MzgsNyArMzUzOCw3IEBAIGluc3RhbGwtcGx1Z2luOiBpbnN0YWxsZGlycyBsYW5nLmluc3RhbGwtcGx1Z2luIHMtaGVhZGVyLXZhcnMgaW5zdGFsbC1nZW5ndHlwZQorICMgV2Uga2VlcCB0aGUgZGlyZWN0b3J5IHN0cnVjdHVyZSBmb3IgZmlsZXMgaW4gY29uZmlnIG9yIGMtZmFtaWx5IGFuZCAuZGVmCisgIyBmaWxlcy4gQWxsIG90aGVyIGZpbGVzIGFyZSBmbGF0dGVuZWQgdG8gYSBzaW5nbGUgZGlyZWN0b3J5LgorIAkkKG1raW5zdGFsbGRpcnMpICQoREVTVERJUikkKHBsdWdpbl9pbmNsdWRlZGlyKQorLQloZWFkZXJzPWBlY2hvICQoUExVR0lOX0hFQURFUlMpICQkKGNkICQoc3JjZGlyKTsgZWNobyAqLmggKi5kZWYpIHwgdHIgJyAnICdcMDEyJyB8IHNvcnQgLXVgOyBcCisrCWhlYWRlcnM9IiQoc29ydCAkKFBMVUdJTl9IRUFERVJTKSAkJChjZCAkKHNyY2Rpcik7IGVjaG8gKi5oICouZGVmKSkiOyBcCisgCXNyY2RpcnN0cmlwPWBlY2hvICIkKHNyY2RpcikiIHwgc2VkICdzL1tdLlteJCRcXCp8XS9cXFxcJi9nJ2A7IFwKKyAJZm9yIGZpbGUgaW4gJCRoZWFkZXJzOyBkbyBcCisgCSAgaWYgWyAtZiAkJGZpbGUgXSA7IHRoZW4gXAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxMy1EaXNhYmxlLXNkdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTMtRGlzYWJsZS1zZHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDU1ODU4MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTMtRGlzYWJsZS1zZHQucGF0Y2gKQEAgLTAsMCArMSwxMTMgQEAKK0Zyb20gNGRmNWE3NDcyNjU5ODMwOTJhZmQ2ZmJjNTMyOWRkODA4Y2MxZGEzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI5IE1hciAyMDEzIDA5OjI4OjEwICswNDAwCitTdWJqZWN0OiBbUEFUQ0ggMTMvMzldIERpc2FibGUgc2R0LgorCitXZSBkb24ndCBsaXN0IGR0cmFjZSBpbiBERVBFTkRTIHNvIHdlIHNob3VsZG4ndCBiZSBkZXBlbmRpbmcgb24gdGhpcyBoZWFkZXIuCitJdCBtYXkgb3IgbWF5IG5vdCBleGlzdCBmcm9tIHByZWl2b3VzIGJ1aWxkcyB0aG91Z2guIFRvIGJlIGRldGVybWluc3RpYywgZGlzYWJsZQorc2R0LmggdXNhZ2UgYWx3YXlzLiBUaGlzIGF2b2lkcyBidWlsZCBmYWlsdXJlcyBpZiB0aGUgaGVhZGVyIGlzIHJlbW92ZWQgYWZ0ZXIgY29uZmlndXJlCitidXQgYmVmb3JlIGxpYmdjYyBpcyBjb21waWxlZCBmb3IgZXhhbXBsZS4KKworUlAgMjAxMi84LzcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworRGlzYWJsZSBzZHQgZm9yIGxpYnN0ZGMrKy12My4KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbaGFja10KKy0tLQorIGdjYy9jb25maWd1cmUgICAgICAgICAgICAgfCAxMiArKysrKystLS0tLS0KKyBnY2MvY29uZmlndXJlLmFjICAgICAgICAgIHwgMTggKysrKysrKysrLS0tLS0tLS0tCisgbGlic3RkYysrLXYzL2NvbmZpZ3VyZSAgICB8ICA2ICsrKy0tLQorIGxpYnN0ZGMrKy12My9jb25maWd1cmUuYWMgfCAgMiArLQorIDQgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggZWQ3OTMxZGFlZDMuLjUyZjUyYjBlYzg2IDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTI5MzMzLDEyICsyOTMzMywxMiBAQCBmaQorIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogY2hlY2tpbmcgc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5IiA+JjUKKyAkYXNfZWNob19uICJjaGVja2luZyBzeXMvc2R0LmggaW4gdGhlIHRhcmdldCBDIGxpYnJhcnkuLi4gIiA+JjY7IH0KKyBoYXZlX3N5c19zZHRfaD1ubworLWlmIHRlc3QgLWYgJHRhcmdldF9oZWFkZXJfZGlyL3N5cy9zZHQuaDsgdGhlbgorLSAgaGF2ZV9zeXNfc2R0X2g9eWVzCistCistJGFzX2VjaG8gIiNkZWZpbmUgSEFWRV9TWVNfU0RUX0ggMSIgPj5jb25mZGVmcy5oCistCistZmkKKysjaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCisrIyAgaGF2ZV9zeXNfc2R0X2g9eWVzCisrIworKyMkYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKKysjCisrI2ZpCisgeyAkYXNfZWNobyAiJGFzX21lOiR7YXNfbGluZW5vLSRMSU5FTk99OiByZXN1bHQ6ICRoYXZlX3N5c19zZHRfaCIgPiY1CisgJGFzX2VjaG8gIiRoYXZlX3N5c19zZHRfaCIgPiY2OyB9CisgCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZS5hYyBiL2djYy9jb25maWd1cmUuYWMKK2luZGV4IGUwNTAwZTMwZDUwLi4yNDJhZDI4ZWM4MyAxMDA2NDQKKy0tLSBhL2djYy9jb25maWd1cmUuYWMKKysrKyBiL2djYy9jb25maWd1cmUuYWMKK0BAIC01OTk1LDE1ICs1OTk1LDE1IEBAIGZpCisgQUNfU1VCU1QoW2VuYWJsZV9kZWZhdWx0X3NzcF0pCisgCisgIyBUZXN0IGZvciA8c3lzL3NkdC5oPiBvbiB0aGUgdGFyZ2V0LgorLUdDQ19UQVJHRVRfVEVNUExBVEUoW0hBVkVfU1lTX1NEVF9IXSkKKy1BQ19NU0dfQ0hFQ0tJTkcoc3lzL3NkdC5oIGluIHRoZSB0YXJnZXQgQyBsaWJyYXJ5KQorLWhhdmVfc3lzX3NkdF9oPW5vCistaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCistICBoYXZlX3N5c19zZHRfaD15ZXMKKy0gIEFDX0RFRklORShIQVZFX1NZU19TRFRfSCwgMSwKKy0gICAgICAgICAgICBbRGVmaW5lIGlmIHlvdXIgdGFyZ2V0IEMgbGlicmFyeSBwcm92aWRlcyBzeXMvc2R0LmhdKQorLWZpCistQUNfTVNHX1JFU1VMVCgkaGF2ZV9zeXNfc2R0X2gpCisrI0dDQ19UQVJHRVRfVEVNUExBVEUoW0hBVkVfU1lTX1NEVF9IXSkKKysjQUNfTVNHX0NIRUNLSU5HKHN5cy9zZHQuaCBpbiB0aGUgdGFyZ2V0IEMgbGlicmFyeSkKKysjaGF2ZV9zeXNfc2R0X2g9bm8KKysjaWYgdGVzdCAtZiAkdGFyZ2V0X2hlYWRlcl9kaXIvc3lzL3NkdC5oOyB0aGVuCisrIyAgaGF2ZV9zeXNfc2R0X2g9eWVzCisrIyAgQUNfREVGSU5FKEhBVkVfU1lTX1NEVF9ILCAxLAorKyMgICAgICAgICAgICBbRGVmaW5lIGlmIHlvdXIgdGFyZ2V0IEMgbGlicmFyeSBwcm92aWRlcyBzeXMvc2R0LmhdKQorKyNmaQorKyNBQ19NU0dfUkVTVUxUKCRoYXZlX3N5c19zZHRfaCkKKyAKKyAjIENoZWNrIGlmIFRGbW9kZSBsb25nIGRvdWJsZSBzaG91bGQgYmUgdXNlZCBieSBkZWZhdWx0IG9yIG5vdC4KKyAjIFNvbWUgZ2xpYmMgdGFyZ2V0cyB1c2VkIERGbW9kZSBsb25nIGRvdWJsZSwgYnV0IHdpdGggZ2xpYmMgMi40CitkaWZmIC0tZ2l0IGEvbGlic3RkYysrLXYzL2NvbmZpZ3VyZSBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKK2luZGV4IDEyMjVlZGM1OTZiLi4zYjg5Yjg4MGZjOCAxMDA3NTUKKy0tLSBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUKKysrKyBiL2xpYnN0ZGMrKy12My9jb25maWd1cmUKK0BAIC0yMjMyNSwxMSArMjIzMjUsMTEgQEAgYWNfY29tcGlsZT0nJENDIC1jICRDRkxBR1MgJENQUEZMQUdTIGNvbmZ0ZXN0LiRhY19leHQgPiY1JworIGFjX2xpbms9JyRDQyAtbyBjb25mdGVzdCRhY19leGVleHQgJENGTEFHUyAkQ1BQRkxBR1MgJExERkxBR1MgY29uZnRlc3QuJGFjX2V4dCAkTElCUyA+JjUnCisgYWNfY29tcGlsZXJfZ251PSRhY19jdl9jX2NvbXBpbGVyX2dudQorIAorLSAgaWYgdGVzdCAkZ2xpYmN4eF9jdl9zeXNfc2R0X2ggPSB5ZXM7IHRoZW4KKysjICBpZiB0ZXN0ICRnbGliY3h4X2N2X3N5c19zZHRfaCA9IHllczsgdGhlbgorIAorLSRhc19lY2hvICIjZGVmaW5lIEhBVkVfU1lTX1NEVF9IIDEiID4+Y29uZmRlZnMuaAorKyMkYXNfZWNobyAiI2RlZmluZSBIQVZFX1NZU19TRFRfSCAxIiA+PmNvbmZkZWZzLmgKKyAKKy0gIGZpCisrIyAgZmkKKyAgIHsgJGFzX2VjaG8gIiRhc19tZToke2FzX2xpbmVuby0kTElORU5PfTogcmVzdWx0OiAkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNQorICRhc19lY2hvICIkZ2xpYmN4eF9jdl9zeXNfc2R0X2giID4mNjsgfQorIAorZGlmZiAtLWdpdCBhL2xpYnN0ZGMrKy12My9jb25maWd1cmUuYWMgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCitpbmRleCBkODQ1NWU0MTU3NC4uODQ0Y2YxYWNiY2UgMTAwNjQ0CistLS0gYS9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCisrKysgYi9saWJzdGRjKystdjMvY29uZmlndXJlLmFjCitAQCAtMjMyLDcgKzIzMiw3IEBAIEdMSUJDWFhfQ0hFQ0tfU0NfTlBST0NFU1NPUlNfT05MTgorIEdMSUJDWFhfQ0hFQ0tfU0NfTlBST0NfT05MTgorIEdMSUJDWFhfQ0hFQ0tfUFRIUkVBRFNfTlVNX1BST0NFU1NPUlNfTlAKKyBHTElCQ1hYX0NIRUNLX1NZU0NUTF9IV19OQ1BVCistR0xJQkNYWF9DSEVDS19TRFRfSAorKyNHTElCQ1hYX0NIRUNLX1NEVF9ICisgCisgIyBDaGVjayBmb3IgYXZhaWxhYmxlIGhlYWRlcnMuCisgQUNfQ0hFQ0tfSEVBREVSUyhbZW5kaWFuLmggZXhlY2luZm8uaCBmbG9hdC5oIGZwLmggaWVlZWZwLmggaW50dHlwZXMuaCBcCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE0LWxpYnRvb2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE0LWxpYnRvb2wucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjk1Mzg1OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTQtbGlidG9vbC5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIDM0OTc3ZDk5NDY2NmE5MDk4M2M5NmE5MjQwZGZhMzU0MDU2MmRhMzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOToyOToxMSArMDQwMAorU3ViamVjdDogW1BBVENIIDE0LzM5XSBsaWJ0b29sCisKK2xpYnN0ZGMrKyBmcm9tIGdjYy1ydW50aW1lIGdldHMgY3JlYXRlZCB3aXRoIC1ycGF0aD0vdXNyL2xpYi8uLi9saWIgZm9yIHFlbXV4ODYtNjQKK3doZW4gcnVubmluZyBvbiBhbSB4ODZfNjQgYnVpbGQgaG9zdC4KKworVGhpcyBwYXRjaCBzdG9wcyB0aGlzIHNwZWFkaW5nIHRvIGxpYmRpciBpbiB0aGUgbGlic3RkYysrLmxhIGZpbGUgd2l0aGluIGxpYnRvb2wuCitBcmd1YWJseSwgaXQgc2hvdWxkbid0IGJlIHBhc3NpbmcgdGhpcyBpbnRvIGxpYnRvb2wgaW4gdGhlIGZpcnN0IHBsYWNlIGJ1dAorZm9yIG5vdyB0aGlzIHJlc29sdmVzIHRoZSBuYXN0aWVzdCBwcm9ibGVtcyB0aGlzIGNhdXNlcy4KKworZnVuY19ub3JtYWxfYWJzcGF0aCB3b3VsZCByZXNvbHZlIGFuIGVtcHR5IHBhdGggdG8gYHB3ZGAgc28gd2UgbmVlZAordG8gZmlsdGVyIHRoZSB6ZXJvIGNhc2UuCisKK1JQIDIwMTIvOC8yNAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGx0bWFpbi5zaCB8IDQgKysrKworIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2x0bWFpbi5zaCBiL2x0bWFpbi5zaAoraW5kZXggNzlmOWJhODlhZjUuLjhlMjIyZjdjMTZiIDEwMDY0NAorLS0tIGEvbHRtYWluLnNoCisrKysgYi9sdG1haW4uc2gKK0BAIC02MzU5LDYgKzYzNTksMTAgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJZnVuY193YXJuaW5nICJpZ25vcmluZyBtdWx0aXBsZSBcYC1ycGF0aCdzIGZvciBhIGxpYnRvb2wgbGlicmFyeSIKKyAKKyAgICAgICBpbnN0YWxsX2xpYmRpcj0iJDEiCisrICAgICAgaWYgdGVzdCAtbiAiJGluc3RhbGxfbGliZGlyIjsgdGhlbgorKwlmdW5jX25vcm1hbF9hYnNwYXRoICIkaW5zdGFsbF9saWJkaXIiCisrCWluc3RhbGxfbGliZGlyPSRmdW5jX25vcm1hbF9hYnNwYXRoX3Jlc3VsdAorKyAgICAgIGZpCisgCisgICAgICAgb2xkbGlicz0KKyAgICAgICBpZiB0ZXN0IC16ICIkcnBhdGgiOyB0aGVuCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE1LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE1LWdjYy1hcm12NC1wYXNzLWZpeC12NGJ4LXRvLWxpbmtlci10by1zdXBwb3J0LUVBQkkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ0NDUyNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTUtZ2NjLWFybXY0LXBhc3MtZml4LXY0YngtdG8tbGlua2VyLXRvLXN1cHBvcnQtRUFCSS5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIDQ1NThiYTdmYTAyMGMxMTFmOWEyMDQwMjFhNDE4YzBjZTU1ZDc3ZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTozMDozMiArMDQwMAorU3ViamVjdDogW1BBVENIIDE1LzM5XSBnY2M6IGFybXY0OiBwYXNzIGZpeC12NGJ4IHRvIGxpbmtlciB0byBzdXBwb3J0IEVBQkkuCisKK1RoZSBMSU5LX1NQRUMgZm9yIGxpbnV4IGdldHMgb3ZlcndyaXR0ZW4gYnkgbGludXgtZWFiaS5oIHdoaWNoCittZWFucyB0aGUgdmFsdWUgb2YgVEFSR0VUX0ZJWF9WNEJYX1NQRUMgZ2V0cyBsb3N0IGFuZCBhcyBhIHJlc3VsdAordGhlIG9wdGlvbiBpcyBub3QgcGFzc2VkIHRvIGxpbmtlciB3aGVuIGNob3NpbmcgbWFyY2g9YXJtdjQKK1RoaXMgcGF0Y2ggcmVkZWZpbmVzIHRoaXMgaW4gbGludXgtZWFiaS5oIGFuZCByZWluc2VydHMgaXQKK2ZvciBlYWJpIGRlZmF1bHRpbmcgdG9vbGNoYWlucy4KKworV2UgbWlnaHQgd2FudCB0byBzZW5kIGl0IHVwc3RyZWFtLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIGdjYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaCB8IDYgKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oIGIvZ2NjL2NvbmZpZy9hcm0vbGludXgtZWFiaS5oCitpbmRleCBlNGFkZTJlMmFiMC4uMTA4ODYzZjY5ZDIgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2FybS9saW51eC1lYWJpLmgKKysrKyBiL2djYy9jb25maWcvYXJtL2xpbnV4LWVhYmkuaAorQEAgLTkxLDEwICs5MSwxNCBAQAorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiBcCisgICAiL2xpYi9sZC1tdXNsLWFybSIgTVVTTF9EWU5BTUlDX0xJTktFUl9FICIle21mbG9hdC1hYmk9aGFyZDpoZn0uc28uMSIKKyAKKysvKiBGb3IgYXJtdjQgd2UgcGFzcyAtLWZpeC12NGJ4IHRvIGxpbmtlciB0byBzdXBwb3J0IEVBQkkgKi8KKysjdW5kZWYgVEFSR0VUX0ZJWF9WNEJYX1NQRUMKKysjZGVmaW5lIFRBUkdFVF9GSVhfVjRCWF9TUEVDICIle21jcHU9YXJtOHxtY3B1PWFybTgxMHxtY3B1PXN0cm9uZ2FybSp8bWFyY2g9YXJtdjQ6IC0tZml4LXY0Ynh9IgorKworIC8qIEF0IHRoaXMgcG9pbnQsIGJwYWJpLmggd2lsbCBoYXZlIGNsb2JiZXJlZCBMSU5LX1NQRUMuICBXZSB3YW50IHRvCisgICAgdXNlIHRoZSBHTlUvTGludXggdmVyc2lvbiwgbm90IHRoZSBnZW5lcmljIEJQQUJJIHZlcnNpb24uICAqLworICN1bmRlZiAgTElOS19TUEVDCistI2RlZmluZSBMSU5LX1NQRUMgRUFCSV9MSU5LX1NQRUMJCQkJCVwKKysjZGVmaW5lIExJTktfU1BFQyBUQVJHRVRfRklYX1Y0QlhfU1BFQyBFQUJJX0xJTktfU1BFQwkJCVwKKyAgIExJTlVYX09SX0FORFJPSURfTEQgKExJTlVYX1RBUkdFVF9MSU5LX1NQRUMsCQkJCVwKKyAJCSAgICAgICBMSU5VWF9UQVJHRVRfTElOS19TUEVDICIgIiBBTkRST0lEX0xJTktfU1BFQykKKyAKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTYtVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTYtVXNlLXRoZS1tdWx0aWxpYi1jb25maWctZmlsZXMtZnJvbS1CLWluc3RlYWQtb2YtdXNpbi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ZjA4MzNjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxNi1Vc2UtdGhlLW11bHRpbGliLWNvbmZpZy1maWxlcy1mcm9tLUItaW5zdGVhZC1vZi11c2luLnBhdGNoCkBAIC0wLDAgKzEsMTAyIEBACitGcm9tIDdlZmZjNjMyZDY1YzJkNzJiZjZmYTMyYTIxOWVjMmY4MmZlZjk0MDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyOSBNYXIgMjAxMyAwOTozMzowNCArMDQwMAorU3ViamVjdDogW1BBVENIIDE2LzM5XSBVc2UgdGhlIG11bHRpbGliIGNvbmZpZyBmaWxlcyBmcm9tICR7Qn0gaW5zdGVhZCBvZgorIHVzaW5nIHRoZSBvbmVzIGZyb20gJHtTfQorCitVc2UgdGhlIG11bHRpbGliIGNvbmZpZyBmaWxlcyBmcm9tICR7Qn0gaW5zdGVhZCBvZiB1c2luZyB0aGUgb25lcyBmcm9tICR7U30KK3NvIHRoYXQgdGhlIHNvdXJjZSBjYW4gYmUgc2hhcmVkIGJldHdlZW4gZ2NjLWNyb3NzLWluaXRpYWwsCitnY2MtY3Jvc3MtaW50ZXJtZWRpYXRlLCBnY2MtY3Jvc3MsIGdjYy1ydW50aW1lLCBhbmQgYWxzbyB0aGUgc2RrIGJ1aWxkLgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogQ29uc3RhbnRpbiBNdXNjYSA8Y29uc3RhbnRpbngubXVzY2FAaW50ZWwuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2NvbmZpZ3VyYXRpb25dCistLS0KKyBnY2MvY29uZmlndXJlICAgIHwgMjIgKysrKysrKysrKysrKysrKysrLS0tLQorIGdjYy9jb25maWd1cmUuYWMgfCAyMiArKysrKysrKysrKysrKysrKystLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCAzNiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZ3VyZSBiL2djYy9jb25maWd1cmUKK2luZGV4IDUyZjUyYjBlYzg2Li5hNWYyMDhhZjdjZiAxMDA3NTUKKy0tLSBhL2djYy9jb25maWd1cmUKKysrKyBiL2djYy9jb25maWd1cmUKK0BAIC0xMjMyMiwxMCArMTIzMjIsMjAgQEAgZG9uZQorIHRtYWtlX2ZpbGVfPQorIGZvciBmIGluICR7dG1ha2VfZmlsZX0KKyBkbworLQlpZiB0ZXN0IC1mICR7c3JjZGlyfS9jb25maWcvJGYKKy0JdGhlbgorLQkJdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgorLQlmaQorKyAgY2FzZSAkZiBpbgorKyAgICAqL3QtbGludXg2NCApCisrICAgICAgIGlmIHRlc3QgLWYgLi9jb25maWcvJGYKKysgICAgICAgdGhlbgorKyAgICAgICAgIHRtYWtlX2ZpbGVfPSIke3RtYWtlX2ZpbGVffSAuL2NvbmZpZy8kZiIKKysgICAgICAgZmkKKysgICAgICAgOzsKKysgICAgKiApCisrICAgICAgIGlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgorKyAgICAgICB0aGVuCisrICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IFwkKHNyY2RpcikvY29uZmlnLyRmIgorKyAgICAgICBmaQorKyAgICAgICA7OworKyAgZXNhYworIGRvbmUKKyB0bWFrZV9maWxlPSIke3RtYWtlX2ZpbGVffSIKKyAKK0BAIC0xMjMzNiw2ICsxMjM0NiwxMCBAQCB0bV9maWxlX2xpc3Q9Im9wdGlvbnMuaCIKKyB0bV9pbmNsdWRlX2xpc3Q9Im9wdGlvbnMuaCBpbnNuLWNvbnN0YW50cy5oIgorIGZvciBmIGluICR0bV9maWxlOyBkbworICAgY2FzZSAkZiBpbgorKyAgICAqL2xpbnV4NjQuaCApCisrICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vY29uZmlnLyRmIgorKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuL2NvbmZpZy8kZiIKKysgICAgICAgOzsKKyAgICAgLi8qICkKKyAgICAgICAgZj1gZWNobyAkZiB8IHNlZCAncy9eLi4vLydgCisgICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9ICRmIgorZGlmZiAtLWdpdCBhL2djYy9jb25maWd1cmUuYWMgYi9nY2MvY29uZmlndXJlLmFjCitpbmRleCAyNDJhZDI4ZWM4My4uYjdhN2VhZDFjMDIgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlndXJlLmFjCisrKysgYi9nY2MvY29uZmlndXJlLmFjCitAQCAtMTk0OCwxMCArMTk0OCwyMCBAQCBkb25lCisgdG1ha2VfZmlsZV89CisgZm9yIGYgaW4gJHt0bWFrZV9maWxlfQorIGRvCistCWlmIHRlc3QgLWYgJHtzcmNkaXJ9L2NvbmZpZy8kZgorLQl0aGVuCistCQl0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCistCWZpCisrICBjYXNlICRmIGluCisrICAgICovdC1saW51eDY0ICkKKysgICAgICAgaWYgdGVzdCAtZiAuL2NvbmZpZy8kZgorKyAgICAgICB0aGVuCisrICAgICAgICAgdG1ha2VfZmlsZV89IiR7dG1ha2VfZmlsZV99IC4vY29uZmlnLyRmIgorKyAgICAgICBmaQorKyAgICAgICA7OworKyAgICAqICkKKysgICAgICAgaWYgdGVzdCAtZiAke3NyY2Rpcn0vY29uZmlnLyRmCisrICAgICAgIHRoZW4KKysgICAgICAgICB0bWFrZV9maWxlXz0iJHt0bWFrZV9maWxlX30gXCQoc3JjZGlyKS9jb25maWcvJGYiCisrICAgICAgIGZpCisrICAgICAgIDs7CisrICBlc2FjCisgZG9uZQorIHRtYWtlX2ZpbGU9IiR7dG1ha2VfZmlsZV99IgorIAorQEAgLTE5NjIsNiArMTk3MiwxMCBAQCB0bV9maWxlX2xpc3Q9Im9wdGlvbnMuaCIKKyB0bV9pbmNsdWRlX2xpc3Q9Im9wdGlvbnMuaCBpbnNuLWNvbnN0YW50cy5oIgorIGZvciBmIGluICR0bV9maWxlOyBkbworICAgY2FzZSAkZiBpbgorKyAgICAqL2xpbnV4NjQuaCApCisrICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9IC4vY29uZmlnLyRmIgorKyAgICAgICB0bV9pbmNsdWRlX2xpc3Q9IiR7dG1faW5jbHVkZV9saXN0fSAuL2NvbmZpZy8kZiIKKysgICAgICAgOzsKKyAgICAgLi8qICkKKyAgICAgICAgZj1gZWNobyAkZiB8IHNlZCAncy9eLi4vLydgCisgICAgICAgIHRtX2ZpbGVfbGlzdD0iJHt0bV9maWxlX2xpc3R9ICRmIgorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAxNy1Bdm9pZC11c2luZy1saWJkaXItZnJvbS0ubGEtd2hpY2gtdXN1YWxseS1wb2ludHMtdG8tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk2ZGEwMTMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE3LUF2b2lkLXVzaW5nLWxpYmRpci1mcm9tLS5sYS13aGljaC11c3VhbGx5LXBvaW50cy10by0ucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSBhMmIyYmY3NzYyMWYzNDRhODQ5ZTU1YWIxNzllY2U4NTg3ZDE5MjM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjAgRmViIDIwMTUgMDk6Mzk6MzggKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAxNy8zOV0gQXZvaWQgdXNpbmcgbGliZGlyIGZyb20gLmxhIHdoaWNoIHVzdWFsbHkgcG9pbnRzIHRvIGEKKyBob3N0IHBhdGgKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gTGl1IDxuZXQxNDdAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGx0bWFpbi5zaCB8IDMgKysrCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCitpbmRleCA4ZTIyMmY3YzE2Yi4uMGE5M2I0ZTVjM2IgMTAwNjQ0CistLS0gYS9sdG1haW4uc2gKKysrKyBiL2x0bWFpbi5zaAorQEAgLTU2MjgsNiArNTYyOCw5IEBAIGZ1bmNfbW9kZV9saW5rICgpCisgCSAgICBhYnNkaXI9IiRhYnNfbGFkaXIiCisgCSAgICBsaWJkaXI9IiRhYnNfbGFkaXIiCisgCSAgZWxzZQorKwkgICAgIyBJbnN0ZWFkIG9mIHVzaW5nIGxpYmRpciBmcm9tIC5sYSB3aGljaCB1c3VhbGx5IHBvaW50cyB0byBhIGhvc3QgcGF0aCwKKysJICAgICMgdXNlIHRoZSBwYXRoIHRoZSAubGEgaXMgY29udGFpbmVkIGluLgorKwkgICAgbGliZGlyPSIkYWJzX2xhZGlyIgorIAkgICAgZGlyPSIkbGliZGlyIgorIAkgICAgYWJzZGlyPSIkbGliZGlyIgorIAkgIGZpCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE4LWV4cG9ydC1DUFAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE4LWV4cG9ydC1DUFAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjM4NTA5OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTgtZXhwb3J0LUNQUC5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIGNhZmI2YTYyMWMwNWMxZjIzODY3OWQ1MmZjMDI2NDQ2ZjM4YzhhZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBGZWIgMjAxNSAwOTo0MDo1OSArMDAwMAorU3ViamVjdDogW1BBVENIIDE4LzM5XSBleHBvcnQgQ1BQCisKK1RoZSBPRSBlbnZpcm9ubWVudCBzZXRzIGFuZCBleHBvcnRzIENQUCBhcyBiZWluZyB0aGUgdGFyZ2V0IGdjYy4gV2hlbgorYnVpbGRpbmcgZ2NjLWNyb3NzLWNhbmFkaWFuIGZvciBhIG1pbmd3IHRhcmdldHRlZCBzZGssIHRoZSBmb2xsb3dpbmcgY2FuIGJlIGZvdW5kCitpbiBidWlsZC54ODZfNjQtcG9reXNkay1taW5ndzMyLmk1ODYtcG9reS1saW51eC9idWlsZC14ODZfNjQtbGludXgvbGliaWJlcnR5L2NvbmZpZy5sb2c6CisKK2NvbmZpZ3VyZTozNjQxOiBjaGVja2luZyBmb3IgX0ZJTEVfT0ZGU0VUX0JJVFMgdmFsdWUgbmVlZGVkIGZvciBsYXJnZSBmaWxlcworY29uZmlndXJlOjM2NjY6IGdjYyAgLWMgLWlzeXN0ZW0vbWVkaWEvYnVpbGQxL3Bva3kvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvaW5jbHVkZSAtTzIgLXBpcGUgIGNvbmZ0ZXN0LmMgPiY1Citjb25maWd1cmU6MzY2NjogJD8gPSAwCitjb25maWd1cmU6MzY5ODogcmVzdWx0OiBubworY29uZmlndXJlOjM3ODY6IGNoZWNraW5nIGhvdyB0byBydW4gdGhlIEMgcHJlcHJvY2Vzc29yCitjb25maWd1cmU6Mzg1NjogcmVzdWx0OiB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYyAtRSAtLXN5c3Jvb3Q9L21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbmF0aXZlc2RrLW1pbmd3MzItcG9reXNkay1taW5ndzMyCitjb25maWd1cmU6Mzg3NjogeDg2XzY0LXBva3lzZGstbWluZ3czMi1nY2MgLUUgLS1zeXNyb290PS9tZWRpYS9idWlsZDEvcG9reS9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LW5hdGl2ZXNkay1taW5ndzMyLXBva3lzZGstbWluZ3czMiBjb25mdGVzdC5jCitjb25maWd1cmU6Mzg3NjogJD8gPSAwCisKK05vdGUgdGhpcyBpcyBhICpidWlsZCogdGFyZ2V0IChpbiBidWlsZC14ODZfNjQtbGludXgpIHNvIGl0IHNob3VsZCBiZQordXNpbmcgdGhlIGhvc3QgImdjYyIsIG5vdCB4ODZfNjQtcG9reXNkay1taW5ndzMyLWdjYy4gU2luY2UgdGhlIG1pbmd3MzIKK2hlYWRlcnMgYXJlIHZlcnkgZGlmZmVyZW50LCB1c2luZyB0aGUgd3JvbmcgY3BwIGlzIGEgcmVhbCBwcm9ibGVtLiBJdCBpcyBsZWFraW5nCitpbnRvIGNvbmZpZ3VyZSB0aHJvdWdoIHRoZSBDUFAgdmFyaWFibGUuIFVsdGltYXRlbHkgdGhpcyBsZWFkcyB0byBidWlsZAorZmFpbHVyZXMgcmVsYXRlZCB0byBub3QgYmVpbmcgYWJsZSB0byBpbmNsdWRlIGEgcHJvY2Vzcy5oIGZpbGUgZm9yIHBlbS11bml4LmMuCisKK1RoZSBmaXggaXMgdG8gZW5zdXJlIHdlIGV4cG9ydCBhIHNhbmUgQ1BQIHZhbHVlIGludG8gdGhlIGJ1aWxkCitlbnZpcm9ubWVudCB3aGVuIHVzaW5nIGJ1aWxkIHRhcmdldHMuIFdlIGNvdWxkIGRlZmluZSBhIENQUF9GT1JfQlVJTEQgdmFsdWUgd2hpY2ggbWF5IGJlCit0aGUgdmVyc2lvbiB3aGljaCBuZWVkcyB0byBiZSB1cHN0cmVhbWVkIGJ1dCBmb3Igbm93LCB0aGlzIGZpeCBpcyBnb29kIGVub3VnaCB0bworYXZvaWQgdGhlIHByb2JsZW0uCisKK1JQIDIyLzA4LzIwMTMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5pbiB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgoraW5kZXggNjRlMDkxYmE3MWQuLjI1NTgyMmUzZjI3IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuaW4KKysrKyBiL01ha2VmaWxlLmluCitAQCAtMTQ5LDYgKzE0OSw3IEBAIEJVSUxEX0VYUE9SVFMgPSBcCisgCUFSPSIkKEFSX0ZPUl9CVUlMRCkiOyBleHBvcnQgQVI7IFwKKyAJQVM9IiQoQVNfRk9SX0JVSUxEKSI7IGV4cG9ydCBBUzsgXAorIAlDQz0iJChDQ19GT1JfQlVJTEQpIjsgZXhwb3J0IENDOyBcCisrCUNQUD0iJChDQ19GT1JfQlVJTEQpIC1FIjsgZXhwb3J0IENQUDsgXAorIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0ZMQUdTOyBcCisgCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCisgCUNYWD0iJChDWFhfRk9SX0JVSUxEKSI7IGV4cG9ydCBDWFg7IFwKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMTktRW5zdXJlLXRhcmdldC1nY2MtaGVhZGVycy1jYW4tYmUtaW5jbHVkZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE5LUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUwMTI5ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDE5LUVuc3VyZS10YXJnZXQtZ2NjLWhlYWRlcnMtY2FuLWJlLWluY2x1ZGVkLnBhdGNoCkBAIC0wLDAgKzEsNjAgQEAKK0Zyb20gMTgyMDU3YjgwODkxZWRjMGU4ZDQ2ODM1ZTJkOGJmZDI4MzMwYTU1YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIwIEZlYiAyMDE1IDEwOjI1OjExICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMTkvMzldIEVuc3VyZSB0YXJnZXQgZ2NjIGhlYWRlcnMgY2FuIGJlIGluY2x1ZGVkCisKK1RoZXJlIGFyZSBhIGZldyBoZWFkZXJzIGluc3RhbGxlZCBhcyBwYXJ0IG9mIHRoZSBPcGVuRW1iZWRkZWQKK2djYy1ydW50aW1lIHRhcmdldCAob21wLmgsIHNzcC8qLmgpLiBCZWluZyBpbnN0YWxsZWQgZnJvbSBhIHJlY2lwZQorYnVpbHQgZm9yIHRoZSB0YXJnZXQgYXJjaGl0ZWN0dXJlLCB0aGVzZSBhcmUgd2l0aGluIHRoZSB0YXJnZXQKK3N5c3Jvb3QgYW5kIG5vdCBjcm9zcy9uYXRpdmVzZGs7IHRodXMgdGhleSB3ZXJlbid0IGFibGUgdG8gYmUKK2ZvdW5kIGJ5IGdjYyB3aXRoIHRoZSBleGlzdGluZyBzZWFyY2ggcGF0aHMuIEFkZCBzdXBwb3J0IGZvcgorcGlja2luZyB1cCB0aGVzZSBoZWFkZXJzIHVuZGVyIHRoZSBzeXNyb290IHN1cHBsaWVkIG9uIHRoZSBnY2MKK2NvbW1hbmQgbGluZSBpbiBvcmRlciB0byByZXNvbHZlIHRoaXMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvTWFrZWZpbGUuaW4gIHwgMiArKworIGdjYy9jcHBkZWZhdWx0LmMgfCA0ICsrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL01ha2VmaWxlLmluIGIvZ2NjL01ha2VmaWxlLmluCitpbmRleCA1N2NmNzgwNGYwYS4uNzc3MjM0MmFkNWUgMTAwNjQ0CistLS0gYS9nY2MvTWFrZWZpbGUuaW4KKysrKyBiL2djYy9NYWtlZmlsZS5pbgorQEAgLTYxOCw2ICs2MTgsNyBAQCBsaWJleGVjZGlyID0gQGxpYmV4ZWNkaXJACisgCisgIyBEaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbXBpbGVyIGZpbmRzIGxpYnJhcmllcyBldGMuCisgbGlic3ViZGlyID0gJChsaWJkaXIpL2djYy8kKHJlYWxfdGFyZ2V0X25vbmNhbm9uaWNhbCkvJCh2ZXJzaW9uKSQoYWNjZWxfZGlyX3N1ZmZpeCkKKytsaWJzdWJkaXJfdGFyZ2V0ID0gJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pCisgIyBEaXJlY3RvcnkgaW4gd2hpY2ggdGhlIGNvbXBpbGVyIGZpbmRzIGV4ZWN1dGFibGVzCisgbGliZXhlY3N1YmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQocmVhbF90YXJnZXRfbm9uY2Fub25pY2FsKS8kKHZlcnNpb24pJChhY2NlbF9kaXJfc3VmZml4KQorICMgRGlyZWN0b3J5IGluIHdoaWNoIGFsbCBwbHVnaW4gcmVzb3VyY2VzIGFyZSBpbnN0YWxsZWQKK0BAIC0yODY3LDYgKzI4NjgsNyBAQCBDRkxBR1MtaW50bC5vICs9IC1ETE9DQUxFRElSPVwiJChsb2NhbGVkaXIpXCIKKyAKKyBQUkVQUk9DRVNTT1JfREVGSU5FUyA9IFwKKyAgIC1ER0NDX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGVcIiBcCisrICAtREdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQ9XCIkKGxpYnN1YmRpcl90YXJnZXQpL2luY2x1ZGVcIiBcCisgICAtREZJWEVEX0lOQ0xVREVfRElSPVwiJChsaWJzdWJkaXIpL2luY2x1ZGUtZml4ZWRcIiBcCisgICAtREdQTFVTUExVU19JTkNMVURFX0RJUj1cIiQoZ2NjX2d4eF9pbmNsdWRlX2RpcilcIiBcCisgICAtREdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVD0kKGdjY19neHhfaW5jbHVkZV9kaXJfYWRkX3N5c3Jvb3QpIFwKK2RpZmYgLS1naXQgYS9nY2MvY3BwZGVmYXVsdC5jIGIvZ2NjL2NwcGRlZmF1bHQuYworaW5kZXggYzQ3OTYzODU2NDMuLjk4MGUyYmQ0N2E3IDEwMDY0NAorLS0tIGEvZ2NjL2NwcGRlZmF1bHQuYworKysrIGIvZ2NjL2NwcGRlZmF1bHQuYworQEAgLTU5LDYgKzU5LDEwIEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGVfZGVmYXVsdHNbXQorICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGdjYydzIHByaXZhdGUgaGVhZGVycy4gICovCisgICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAorICNlbmRpZgorKyNpZmRlZiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUCisrICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzIHVuZGVyIHRoZSBzcGVjaWZpZWQgc3lzcm9vdC4gICovCisrICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCisrI2VuZGlmCisgI2lmZGVmIExPQ0FMX0lOQ0xVREVfRElSCisgICAgIC8qIC91c3IvbG9jYWwvaW5jbHVkZSBjb21lcyBiZWZvcmUgdGhlIGZpeGluY2x1ZGVkIGhlYWRlciBmaWxlcy4gICovCisgICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDIgfSwKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjAtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjAtZ2NjLTQuOC13b24tdC1idWlsZC13aXRoLWRpc2FibGUtZGVwZW5kZW5jeS10cmFja2luZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZDIxODIxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyMC1nY2MtNC44LXdvbi10LWJ1aWxkLXdpdGgtZGlzYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nLnBhdGNoCkBAIC0wLDAgKzEsNTQgQEAKK0Zyb20gYTQ3NDBmMTI5MGU2YTYwMmZiYmZhMjdiODYzYmUyZTNiMjY3NTY4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIwIEZlYiAyMDE1IDExOjE3OjE5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMjAvMzldIGdjYyA0LjgrIHdvbid0IGJ1aWxkIHdpdGggLS1kaXNhYmxlLWRlcGVuZGVuY3ktdHJhY2tpbmcKKworc2luY2UgdGhlICouUHBvIGZpbGVzIGRvbid0IGdldCBjcmVhdGVkIHVubGVzcyAtLWVuYWJsZS1kZXBlbmRlbmN5LXRyYWNraW5nIGlzIHRydWUuCisKK1RoaXMgcGF0Y2ggZW5zdXJlcyB3ZSBvbmx5IHVzZSB0aG9zZSBjb21waWxlciBvcHRpb25zIHdoZW4gaXRzIGVuYWJsZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCisKKyhQcm9ibGVtIHdhcyBhbHJlYWR5IHJlcG9ydGVkIHVwc3RyZWFtLCBhdHRhY2hlZCB0aGlzIHBhdGNoIHRoZXJlCitodHRwOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTU1OTMwKQorCitSUAorMjAxMi8wOS8yMgorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGliYXRvbWljL01ha2VmaWxlLmFtIHwgMyArKy0KKyBsaWJhdG9taWMvTWFrZWZpbGUuaW4gfCAzICsrLQorIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliYXRvbWljL01ha2VmaWxlLmFtIGIvbGliYXRvbWljL01ha2VmaWxlLmFtCitpbmRleCBjMWI3YzczOTM0YS4uZWY0M2Q2MmMwN2EgMTAwNjQ0CistLS0gYS9saWJhdG9taWMvTWFrZWZpbGUuYW0KKysrKyBiL2xpYmF0b21pYy9NYWtlZmlsZS5hbQorQEAgLTEwMSw3ICsxMDEsOCBAQCBQQVRfUwkJPSAkKHdvcmQgMywkKFBBVF9TUExJVCkpCisgSUZVTkNfREVGCT0gLURJRlVOQ19BTFQ9JChQQVRfUykKKyBJRlVOQ19PUFQJPSAkKHdvcmQgJChQQVRfUyksJChJRlVOQ19PUFRJT05TKSkKKyAKKy1NX0RFUFMJCT0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KKytAQU1ERVBfVFJVRUBNX0RFUFMJCT0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KKytAQU1ERVBfRkFMU0VATV9ERVBTCQk9CisgTV9TSVpFCQk9IC1ETj0kKFBBVF9OKQorIE1fSUZVTkMJCT0gJChpZiAkKFBBVF9TKSwkKElGVU5DX0RFRikgJChJRlVOQ19PUFQpKQorIE1fRklMRQkJPSAkKFBBVF9CQVNFKV9uLmMKK2RpZmYgLS1naXQgYS9saWJhdG9taWMvTWFrZWZpbGUuaW4gYi9saWJhdG9taWMvTWFrZWZpbGUuaW4KK2luZGV4IDI5MzI0ZTNlMGFjLi5kNWNkYjQyNTllZiAxMDA2NDQKKy0tLSBhL2xpYmF0b21pYy9NYWtlZmlsZS5pbgorKysrIGIvbGliYXRvbWljL01ha2VmaWxlLmluCitAQCAtNDE0LDcgKzQxNCw4IEBAIFBBVF9OID0gJCh3b3JkIDIsJChQQVRfU1BMSVQpKQorIFBBVF9TID0gJCh3b3JkIDMsJChQQVRfU1BMSVQpKQorIElGVU5DX0RFRiA9IC1ESUZVTkNfQUxUPSQoUEFUX1MpCisgSUZVTkNfT1BUID0gJCh3b3JkICQoUEFUX1MpLCQoSUZVTkNfT1BUSU9OUykpCistTV9ERVBTID0gLU1UICRAIC1NRCAtTVAgLU1GICQoREVQRElSKS8kKEBGKS5QcG8KKytAQU1ERVBfVFJVRUBNX0RFUFMgPSAtTVQgJEAgLU1EIC1NUCAtTUYgJChERVBESVIpLyQoQEYpLlBwbworK0BBTURFUF9GQUxTRUBNX0RFUFMgPQorIE1fU0laRSA9IC1ETj0kKFBBVF9OKQorIE1fSUZVTkMgPSAkKGlmICQoUEFUX1MpLCQoSUZVTkNfREVGKSAkKElGVU5DX09QVCkpCisgTV9GSUxFID0gJChQQVRfQkFTRSlfbi5jCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDIxLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDIxLURvbi10LXNlYXJjaC1ob3N0LWRpcmVjdG9yeS1kdXJpbmctcmVsaW5rLWlmLWluc3RfcHIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTM2M2M3ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjEtRG9uLXQtc2VhcmNoLWhvc3QtZGlyZWN0b3J5LWR1cmluZy1yZWxpbmstaWYtaW5zdF9wci5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIGYzZWRhZDgxZDgwZGRlNWQ2NGJmNzdlNmFiYWZkYTU0ZGIxMGI4MjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAzIE1hciAyMDE1IDA4OjIxOjE5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMjEvMzldIERvbid0IHNlYXJjaCBob3N0IGRpcmVjdG9yeSBkdXJpbmcgInJlbGluayIgaWYKKyAkaW5zdF9wcmVmaXggaXMgcHJvdmlkZWQKKworaHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2xpYnRvb2wtcGF0Y2hlcy8yMDExLTAxL21zZzAwMDI2Lmh0bWwKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGx0bWFpbi5zaCB8IDUgKysrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbHRtYWluLnNoIGIvbHRtYWluLnNoCitpbmRleCAwYTkzYjRlNWMzYi4uNmRlNmVkMmY5YTAgMTAwNjQ0CistLS0gYS9sdG1haW4uc2gKKysrKyBiL2x0bWFpbi5zaAorQEAgLTYwMDQsMTIgKzYwMDQsMTMgQEAgZnVuY19tb2RlX2xpbmsgKCkKKyAJICAgICAgZmkKKyAJICAgIGVsc2UKKyAJICAgICAgIyBXZSBjYW5ub3Qgc2VlbSB0byBoYXJkY29kZSBpdCwgZ3Vlc3Mgd2UnbGwgZmFrZSBpdC4KKysJICAgICAgIyBEZWZhdWx0IGlmICRsaWJkaXIgaXMgbm90IHJlbGF0aXZlIHRvIHRoZSBwcmVmaXg6CisgCSAgICAgIGFkZF9kaXI9Ii1MJGxpYmRpciIKKy0JICAgICAgIyBUcnkgbG9va2luZyBmaXJzdCBpbiB0aGUgbG9jYXRpb24gd2UncmUgYmVpbmcgaW5zdGFsbGVkIHRvLgorKworIAkgICAgICBpZiB0ZXN0IC1uICIkaW5zdF9wcmVmaXhfZGlyIjsgdGhlbgorIAkJY2FzZSAkbGliZGlyIGluCisgCQkgIFtcXC9dKikKKy0JCSAgICBhZGRfZGlyPSIkYWRkX2RpciAtTCRpbnN0X3ByZWZpeF9kaXIkbGliZGlyIgorKwkJICAgIGFkZF9kaXI9Ii1MJGluc3RfcHJlZml4X2RpciRsaWJkaXIiCisgCQkgICAgOzsKKyAJCWVzYWMKKyAJICAgICAgZmkKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjItVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjItVXNlLVNZU1RFTUxJQlNfRElSLXJlcGxhY2VtZW50LWluc3RlYWQtb2YtaGFyZGNvZGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NDZjMGRlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyMi1Vc2UtU1lTVEVNTElCU19ESVItcmVwbGFjZW1lbnQtaW5zdGVhZC1vZi1oYXJkY29kaW5nLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gYjhlYTJjMmM3ZDMzMzc2ZjVkZDY1MTY0NmM3ZTgyMjAwMGU0Nzc0OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDI4IEFwciAyMDE1IDIzOjE1OjI3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMjIvMzldIFVzZSBTWVNURU1MSUJTX0RJUiByZXBsYWNlbWVudCBpbnN0ZWFkIG9mIGhhcmRjb2RpbmcKKyBiYXNlX2xpYmRpcgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAoraW5kZXggNWU4YjM0ZGVkMDMuLjdlNjI4YmY2NjFlIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAorQEAgLTIxLDcgKzIxLDcgQEAKKyAjaWZuZGVmIEdDQ19BQVJDSDY0X0xJTlVYX0gKKyAjZGVmaW5lIEdDQ19BQVJDSDY0X0xJTlVYX0gKKyAKKy0jZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgorKyNkZWZpbmUgR0xJQkNfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1saW51eC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKyAKKyAjdW5kZWYgTVVTTF9EWU5BTUlDX0xJTktFUgorICNkZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUiAiL2xpYi9sZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyMy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDIzLWFhcmNoNjQtQWRkLXN1cHBvcnQtZm9yLW11c2wtbGRzby5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xMDJkNmZjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyMy1hYXJjaDY0LUFkZC1zdXBwb3J0LWZvci1tdXNsLWxkc28ucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA4NjQ1YjU3ZTdjMGRmZDkzYWZlZTVjYWVhYTUzNGM3MTRmNDQ5YmExIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjggQXByIDIwMTUgMjM6MTg6MzkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyMy8zOV0gYWFyY2g2NDogQWRkIHN1cHBvcnQgZm9yIG11c2wgbGRzbworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9jb25maWcvYWFyY2g2NC9hYXJjaDY0LWxpbnV4LmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL2FhcmNoNjQvYWFyY2g2NC1saW51eC5oIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAoraW5kZXggN2U2MjhiZjY2MWUuLjE3MTdjYmU1NDcxIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9hYXJjaDY0L2FhcmNoNjQtbGludXguaAorQEAgLTI0LDcgKzI0LDcgQEAKKyAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICBTWVNURU1MSUJTX0RJUiAibGQtbGludXgtYWFyY2g2NCV7bWJpZy1lbmRpYW46X2JlfSV7bWFiaT1pbHAzMjpfaWxwMzJ9LnNvLjEiCisgCisgI3VuZGVmIE1VU0xfRFlOQU1JQ19MSU5LRVIKKy0jZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIi9saWIvbGQtbXVzbC1hYXJjaDY0JXttYmlnLWVuZGlhbjpfYmV9JXttYWJpPWlscDMyOl9pbHAzMn0uc28uMSIKKysjZGVmaW5lIE1VU0xfRFlOQU1JQ19MSU5LRVIgIFNZU1RFTUxJQlNfRElSICJsZC1tdXNsLWFhcmNoNjQle21iaWctZW5kaWFuOl9iZX0le21hYmk9aWxwMzI6X2lscDMyfS5zby4xIgorIAorICN1bmRlZiAgQVNBTl9DQzFfU1BFQworICNkZWZpbmUgQVNBTl9DQzFfU1BFQyAiJXslOnNhbml0aXplKGFkZHJlc3MpOi1mdW53aW5kLXRhYmxlc30iCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI0LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjQtbGliY2MxLWZpeC1saWJjYzEtcy1pbnN0YWxsLXBhdGgtYW5kLXJwYXRoLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ0M2UwYTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI0LWxpYmNjMS1maXgtbGliY2MxLXMtaW5zdGFsbC1wYXRoLWFuZC1ycGF0aC5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIGIxNjY2NTY1ZTRlMTMzZWU0MWYzMmZhODAzMjE2NWJjYjA2YWZlOWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFN1biwgNSBKdWwgMjAxNSAyMDoyNToxOCAtMDcwMAorU3ViamVjdDogW1BBVENIIDI0LzM5XSBsaWJjYzE6IGZpeCBsaWJjYzEncyBpbnN0YWxsIHBhdGggYW5kIHJwYXRoCisKKyogSW5zdGFsbCBsaWJjYzEuc28gYW5kIGxpYmNjMXBsdWdpbi5zbyBpbnRvCisgICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbiksIGFzIHdoYXQgd2UKKyAgaGFkIGRvbmUgdG8gbHRvLXBsdWdpbi4KKyogRml4IGJhZCBSUEFUSCBpdXNzdWU6CisgIGdjYy01LjIuMDogcGFja2FnZSBnY2MtcGx1Z2lucyBjb250YWlucyBiYWQgUlBBVEggL3BhdGh0L3RvL3RtcC9zeXNyb290cy9xZW11eDg2LTY0L3Vzci9saWI2NC8uLi9saWI2NCBpbiBmaWxlCisgL3BhdGgvdG8vZ2NjLzUuMi4wLXIwL3BhY2thZ2VzLXNwbGl0L2djYy1wbHVnaW5zL3Vzci9saWI2NC9nY2MveDg2XzY0LXBva3ktbGludXgvNS4yLjAvcGx1Z2luL2xpYmNjMXBsdWdpbi5zby4wLjAuMAorIFtycGF0aHNdCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlndXJhdGlvbl0KKworU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CistLS0KKyBsaWJjYzEvTWFrZWZpbGUuYW0gfCA0ICsrLS0KKyBsaWJjYzEvTWFrZWZpbGUuaW4gfCA0ICsrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmNjMS9NYWtlZmlsZS5hbSBiL2xpYmNjMS9NYWtlZmlsZS5hbQoraW5kZXggNzJjNmFlYWQ0NzUuLjQyYTg3NzQwYjMxIDEwMDY0NAorLS0tIGEvbGliY2MxL01ha2VmaWxlLmFtCisrKysgYi9saWJjYzEvTWFrZWZpbGUuYW0KK0BAIC0zNyw4ICszNyw4IEBAIGxpYmliZXJ0eSA9ICQoaWYgJCh3aWxkY2FyZCAkKGxpYmliZXJ0eV9ub2FzYW4pKSwkKFdjKSQobGliaWJlcnR5X25vYXNhbiksIFwKKyAJICAgICQoV2MpJChsaWJpYmVydHlfbm9ybWFsKSkpCisgbGliaWJlcnR5X2RlcCA9ICQocGF0c3Vic3QgJChXYyklLCUsJChsaWJpYmVydHkpKQorIAorLXBsdWdpbmRpciA9ICQobGliZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKS9wbHVnaW4KKy1jYzFsaWJkaXIgPSAkKGxpYmRpcikvJChsaWJzdWZmaXgpCisrY2MxbGliZGlyID0gJChsaWJleGVjZGlyKS9nY2MvJCh0YXJnZXRfbm9uY2Fub25pY2FsKS8kKGdjY192ZXJzaW9uKQorK3BsdWdpbmRpciA9ICQoY2MxbGliZGlyKQorIAorIGlmIEVOQUJMRV9QTFVHSU4KKyBwbHVnaW5fTFRMSUJSQVJJRVMgPSBsaWJjYzFwbHVnaW4ubGEgbGliY3AxcGx1Z2luLmxhCitkaWZmIC0tZ2l0IGEvbGliY2MxL01ha2VmaWxlLmluIGIvbGliY2MxL01ha2VmaWxlLmluCitpbmRleCA3MTA0YjY0OTAyNi4uMjEwM2M0Nzc0NjggMTAwNjQ0CistLS0gYS9saWJjYzEvTWFrZWZpbGUuaW4KKysrKyBiL2xpYmNjMS9NYWtlZmlsZS5pbgorQEAgLTM5Myw4ICszOTMsOCBAQCBsaWJpYmVydHkgPSAkKGlmICQod2lsZGNhcmQgJChsaWJpYmVydHlfbm9hc2FuKSksJChXYykkKGxpYmliZXJ0eV9ub2FzYW4pLCBcCisgCSAgICAkKFdjKSQobGliaWJlcnR5X25vcm1hbCkpKQorIAorIGxpYmliZXJ0eV9kZXAgPSAkKHBhdHN1YnN0ICQoV2MpJSwlLCQobGliaWJlcnR5KSkKKy1wbHVnaW5kaXIgPSAkKGxpYmRpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikvcGx1Z2luCistY2MxbGliZGlyID0gJChsaWJkaXIpLyQobGlic3VmZml4KQorK2NjMWxpYmRpciA9ICQobGliZXhlY2RpcikvZ2NjLyQodGFyZ2V0X25vbmNhbm9uaWNhbCkvJChnY2NfdmVyc2lvbikKKytwbHVnaW5kaXIgPSAkKGNjMWxpYmRpcikKKyBARU5BQkxFX1BMVUdJTl9UUlVFQHBsdWdpbl9MVExJQlJBUklFUyA9IGxpYmNjMXBsdWdpbi5sYSBsaWJjcDFwbHVnaW4ubGEKKyBARU5BQkxFX1BMVUdJTl9UUlVFQGNjMWxpYl9MVExJQlJBUklFUyA9IGxpYmNjMS5sYQorIHNoYXJlZF9zb3VyY2UgPSBjYWxsYmFja3MuY2MgY2FsbGJhY2tzLmhoIGNvbm5lY3Rpb24uY2MgY29ubmVjdGlvbi5oaCBcCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI1LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI1LWhhbmRsZS1zeXNyb290LXN1cHBvcnQtZm9yLW5hdGl2ZXNkay1nY2MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTlhYzk3ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMjUtaGFuZGxlLXN5c3Jvb3Qtc3VwcG9ydC1mb3ItbmF0aXZlc2RrLWdjYy5wYXRjaApAQCAtMCwwICsxLDM0NiBAQAorRnJvbSA3ZDYxNGE4NDcwOWQ3ZGM0YTI1MjljM2Q1MjllMmRhODU0MWY5ZmQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNyBEZWMgMjAxNSAyMzozOTo1NCArMDAwMAorU3ViamVjdDogW1BBVENIIDI1LzM5XSBoYW5kbGUgc3lzcm9vdCBzdXBwb3J0IGZvciBuYXRpdmVzZGstZ2NjCisKK0JlaW5nIGFibGUgdG8gYnVpbGQgYSBuYXRpdmVzZGsgZ2NjIGlzIHVzZWZ1bCwgcGFydGljdWxhcmx5IGluIGNhc2VzCit3aGVyZSB0aGUgaG9zdCBjb21waWxlciBtYXkgYmUgb2YgYW4gaW5jb21wYXRpYmxlIHZlcnNpb24gKG9yIGEgMzIKK2JpdCBjb21waWxlciBpcyBuZWVkZWQpLgorCitTYWRseSwgYnVpbGRpbmcgbmF0aXZlc2RrLWdjYyBpcyBub3Qgc3RyYWlnaHQgZm9yd2FyZC4gV2UgaW5zdGFsbAorbmF0aXZlc2RrLWdjYyBpbnRvIGEgcmVsb2NhdGFibGUgbG9jYXRpb24gYW5kIHRoaXMgbWVhbnMgdGhhdCBpdHMKK2xpYnJhcnkgbG9jYXRpb25zIGNhbiBjaGFuZ2UuICJOb3JtYWwiIHN5c3Jvb3Qgc3VwcG9ydCBkb2Vzbid0IGhlbHAKK2luIHRoaXMgY2FzZSBzaW5jZSB0aGUgdmFsdWVzIG9mIHBhdGhzIGxpa2UgImxpYmRpciIgY2hhbmdlLCBub3QganVzdAorYmFzZSByb290IGRpcmVjdG9yeSBvZiB0aGUgc3lzdGVtLgorCitJbiBvcmRlciB0byBoYW5kbGUgdGhpcyB3ZSBkbyB0d28gdGhpbmdzOgorCithKSBBZGQgJXIgaW50byBzcGVjIGZpbGUgbWFya3VwIHdoaWNoIGNhbiBiZSB1c2VkIGZvciBpbmplY3RlZCBwYXRocworICAgc3VjaCBhcyBTWVNURU1MSUJTX0RJUiAoc2VlIGdjY19tdWx0aWxpYl9zZXR1cCgpKS4KK2IpIEFkZCBvdGhlciBwYXRocyB3aGljaCBuZWVkIHJlbG9jYXRpb24gaW50byBhIC5nY2NyZWxvY3ByZWZpeCBzZWN0aW9uCisgICB3aGljaCB0aGUgcmVsb2NhdGlvbiBjb2RlIHdpbGwgbm90aWNlIGFuZCBhZGp1c3QgYXV0b21hdGljYWxseS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCitSUCAyMDE1LzcvMjgKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworQWRkZWQgUFJFRklYVkFSIGFuZCBFWEVDX1BSRUZJWFZBUiB0byBzdXBwb3J0IHJ1bnRpbWUgcmVsb2NhdGlvbi4gIFdpdGhvdXQKK3RoZXNlIGFzIHBhcnQgb2YgdGhlIGdjY3JlbG9jcHJlZml4IHRoZSBzeXN0ZW0gY2FuJ3QgZG8gcnVudGltZSByZWxvY2F0aW9uCitpZiB0aGUgZXhlY3V0YWJsZSBpcyBtb3ZlZC4gIChUaGVzZSBwYXRocyB3ZXJlIG1pc3NlZCBpbiB0aGUgb3JpZ2luYWwKK2ltcGxlbWVudGF0aW9uLikKKworU2lnbmVkLW9mZi1ieTogTWFyayBIYXRsZSA8bWFyay5oYXRsZUBrZXJuZWwuY3Jhc2hpbmcub3JnPgorLS0tCisgYy1mYW1pbHkvYy1vcHRzLmMgfCAgICA0ICstLQorIGNwcGRlZmF1bHQuYyAgICAgIHwgICA2MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyBjcHBkZWZhdWx0LmggICAgICB8ICAgMTMgKysrKy0tLS0tLS0KKyBnY2MuYyAgICAgICAgICAgICB8ICAgMjAgKysrKysrKysrKysrLS0tLS0KKyBpbmNwYXRoLmMgICAgICAgICB8ICAgMTIgKysrKystLS0tLQorIHByZWZpeC5jICAgICAgICAgIHwgICAgNCArLS0KKyA2IGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDQ4IGRlbGV0aW9ucygtKQorCitJbmRleDogZ2NjLTkuMy4wL2djYy9jcHBkZWZhdWx0LmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnY2MtOS4zLjAub3JpZy9nY2MvY3BwZGVmYXVsdC5jCisrKysgZ2NjLTkuMy4wL2djYy9jcHBkZWZhdWx0LmMKK0BAIC0zNSw2ICszNSwzMCBAQAorICMgdW5kZWYgQ1JPU1NfSU5DTFVERV9ESVIKKyAjZW5kaWYKKyAKKytzdGF0aWMgY2hhciBHUExVU1BMVVNfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX0lOQ0xVREVfRElSOworK2NoYXIgR0NDX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IEdDQ19JTkNMVURFX0RJUjsKKytzdGF0aWMgY2hhciBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUjsKKytzdGF0aWMgY2hhciBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSOworK3N0YXRpYyBjaGFyIFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVhfMlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzIgR0NDX0lOQ0xVREVfU1VCRElSX1RBUkdFVDsKKysjaWZkZWYgTE9DQUxfSU5DTFVERV9ESVIKKytzdGF0aWMgY2hhciBMT0NBTF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBMT0NBTF9JTkNMVURFX0RJUjsKKysjZW5kaWYKKysjaWZkZWYgUFJFRklYX0lOQ0xVREVfRElSCisrc3RhdGljIGNoYXIgUFJFRklYX0lOQ0xVREVfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFBSRUZJWF9JTkNMVURFX0RJUjsKKysjZW5kaWYKKysjaWZkZWYgRklYRURfSU5DTFVERV9ESVIKKytzdGF0aWMgY2hhciBGSVhFRF9JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBGSVhFRF9JTkNMVURFX0RJUjsKKysjZW5kaWYKKysjaWZkZWYgQ1JPU1NfSU5DTFVERV9ESVIKKytzdGF0aWMgY2hhciBDUk9TU19JTkNMVURFX0RJUlZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBDUk9TU19JTkNMVURFX0RJUjsKKysjZW5kaWYKKysjaWZkZWYgVE9PTF9JTkNMVURFX0RJUgorK3N0YXRpYyBjaGFyIFRPT0xfSU5DTFVERV9ESVJWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gVE9PTF9JTkNMVURFX0RJUjsKKysjZW5kaWYKKysjaWZkZWYgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSCisrc3RhdGljIGNoYXIgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUjsKKysjZW5kaWYKKysKKyBjb25zdCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlIGNwcF9pbmNsdWRlX2RlZmF1bHRzW10KKyAjaWZkZWYgSU5DTFVERV9ERUZBVUxUUworID0gSU5DTFVERV9ERUZBVUxUUzsKK0BAIC00MiwzOCArNjYsMzggQEAgY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZQorID0geworICNpZmRlZiBHUExVU1BMVVNfSU5DTFVERV9ESVIKKyAgICAgLyogUGljayB1cCBHTlUgQysrIGdlbmVyaWMgaW5jbHVkZSBmaWxlcy4gICovCistICAgIHsgR1BMVVNQTFVTX0lOQ0xVREVfRElSLCAiRysrIiwgMSwgMSwKKysgICAgeyBHUExVU1BMVVNfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAorICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMCB9LAorICNlbmRpZgorICNpZmRlZiBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUgorICAgICAvKiBQaWNrIHVwIEdOVSBDKysgdGFyZ2V0LWRlcGVuZGVudCBpbmNsdWRlIGZpbGVzLiAgKi8KKy0gICAgeyBHUExVU1BMVVNfVE9PTF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCisrICAgIHsgR1BMVVNQTFVTX1RPT0xfSU5DTFVERV9ESVJWQVIsICJHKysiLCAxLCAxLAorICAgICAgIEdQTFVTUExVU19JTkNMVURFX0RJUl9BRERfU1lTUk9PVCwgMSB9LAorICNlbmRpZgorICNpZmRlZiBHUExVU1BMVVNfQkFDS1dBUkRfSU5DTFVERV9ESVIKKyAgICAgLyogUGljayB1cCBHTlUgQysrIGJhY2t3YXJkIGFuZCBkZXByZWNhdGVkIGluY2x1ZGUgZmlsZXMuICAqLworLSAgICB7IEdQTFVTUExVU19CQUNLV0FSRF9JTkNMVURFX0RJUiwgIkcrKyIsIDEsIDEsCisrICAgIHsgR1BMVVNQTFVTX0JBQ0tXQVJEX0lOQ0xVREVfRElSVkFSLCAiRysrIiwgMSwgMSwKKyAgICAgICBHUExVU1BMVVNfSU5DTFVERV9ESVJfQUREX1NZU1JPT1QsIDAgfSwKKyAjZW5kaWYKKyAjaWZkZWYgR0NDX0lOQ0xVREVfRElSCisgICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzLiAgKi8KKy0gICAgeyBHQ0NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCisrICAgIHsgR0NDX0lOQ0xVREVfRElSVkFSLCAiR0NDIiwgMCwgMCwgMCwgMCB9LAorICNlbmRpZgorICNpZmRlZiBHQ0NfSU5DTFVERV9TVUJESVJfVEFSR0VUCisgICAgIC8qIFRoaXMgaXMgdGhlIGRpciBmb3IgZ2NjJ3MgcHJpdmF0ZSBoZWFkZXJzIHVuZGVyIHRoZSBzcGVjaWZpZWQgc3lzcm9vdC4gICovCistICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yIEdDQ19JTkNMVURFX1NVQkRJUl9UQVJHRVQsICJHQ0MiLCAwLCAwLCAxLCAwIH0sCisrICAgIHsgU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yVkFSLCAiR0NDIiwgMCwgMCwgMSwgMCB9LAorICNlbmRpZgorICNpZmRlZiBMT0NBTF9JTkNMVURFX0RJUgorICAgICAvKiAvdXNyL2xvY2FsL2luY2x1ZGUgY29tZXMgYmVmb3JlIHRoZSBmaXhpbmNsdWRlZCBoZWFkZXIgZmlsZXMuICAqLworLSAgICB7IExPQ0FMX0lOQ0xVREVfRElSLCAwLCAwLCAxLCAxLCAyIH0sCistICAgIHsgTE9DQUxfSU5DTFVERV9ESVIsIDAsIDAsIDEsIDEsIDAgfSwKKysgICAgeyBMT0NBTF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMSwgMiB9LAorKyAgICB7IExPQ0FMX0lOQ0xVREVfRElSVkFSLCAwLCAwLCAxLCAxLCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIFBSRUZJWF9JTkNMVURFX0RJUgorLSAgICB7IFBSRUZJWF9JTkNMVURFX0RJUiwgMCwgMCwgMSwgMCwgMCB9LAorKyAgICB7IFBSRUZJWF9JTkNMVURFX0RJUlZBUiwgMCwgMCwgMSwgMCwgMCB9LAorICNlbmRpZgorICNpZmRlZiBGSVhFRF9JTkNMVURFX0RJUgorICAgICAvKiBUaGlzIGlzIHRoZSBkaXIgZm9yIGZpeGluY2x1ZGVzLiAgKi8KKy0gICAgeyBGSVhFRF9JTkNMVURFX0RJUiwgIkdDQyIsIDAsIDAsIDAsCisrICAgIHsgRklYRURfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLAorICAgICAgIC8qIEEgbXVsdGlsaWIgc3VmZml4IG5lZWRzIGFkZGluZyBpZiBkaWZmZXJlbnQgbXVsdGlsaWJzIHVzZQorIAkgZGlmZmVyZW50IGhlYWRlcnMuICAqLworICNpZmRlZiBTWVNST09UX0hFQURFUlNfU1VGRklYX1NQRUMKK0BAIC04NSwzMyArMTA5LDI0IEBAIGNvbnN0IHN0cnVjdCBkZWZhdWx0X2luY2x1ZGUgY3BwX2luY2x1ZGUKKyAjZW5kaWYKKyAjaWZkZWYgQ1JPU1NfSU5DTFVERV9ESVIKKyAgICAgLyogT25lIHBsYWNlIHRoZSB0YXJnZXQgc3lzdGVtJ3MgaGVhZGVycyBtaWdodCBiZS4gICovCistICAgIHsgQ1JPU1NfSU5DTFVERV9ESVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCisrICAgIHsgQ1JPU1NfSU5DTFVERV9ESVJWQVIsICJHQ0MiLCAwLCAwLCAwLCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIFRPT0xfSU5DTFVERV9ESVIKKyAgICAgLyogQW5vdGhlciBwbGFjZSB0aGUgdGFyZ2V0IHN5c3RlbSdzIGhlYWRlcnMgbWlnaHQgYmUuICAqLworLSAgICB7IFRPT0xfSU5DTFVERV9ESVIsICJCSU5VVElMUyIsIDAsIDEsIDAsIDAgfSwKKysgICAgeyBUT09MX0lOQ0xVREVfRElSVkFSLCAiQklOVVRJTFMiLCAwLCAxLCAwLCAwIH0sCisgI2VuZGlmCisgI2lmZGVmIE5BVElWRV9TWVNURU1fSEVBREVSX0RJUgorICAgICAvKiAvdXNyL2luY2x1ZGUgY29tZXMgZGVhZCBsYXN0LiAgKi8KKy0gICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMiB9LAorLSAgICB7IE5BVElWRV9TWVNURU1fSEVBREVSX0RJUiwgTkFUSVZFX1NZU1RFTV9IRUFERVJfQ09NUE9ORU5ULCAwLCAwLCAxLCAwIH0sCisrICAgIHsgTkFUSVZFX1NZU1RFTV9IRUFERVJfRElSVkFSLCBOQVRJVkVfU1lTVEVNX0hFQURFUl9DT01QT05FTlQsIDAsIDAsIDEsIDIgfSwKKysgICAgeyBOQVRJVkVfU1lTVEVNX0hFQURFUl9ESVJWQVIsIE5BVElWRV9TWVNURU1fSEVBREVSX0NPTVBPTkVOVCwgMCwgMCwgMSwgMCB9LAorICNlbmRpZgorICAgICB7IDAsIDAsIDAsIDAsIDAsIDAgfQorICAgfTsKKyAjZW5kaWYgLyogbm8gSU5DTFVERV9ERUZBVUxUUyAqLworIAorLSNpZmRlZiBHQ0NfSU5DTFVERV9ESVIKKy1jb25zdCBjaGFyIGNwcF9HQ0NfSU5DTFVERV9ESVJbXSA9IEdDQ19JTkNMVURFX0RJUjsKKy1jb25zdCBzaXplX3QgY3BwX0dDQ19JTkNMVURFX0RJUl9sZW4gPSBzaXplb2YgR0NDX0lOQ0xVREVfRElSIC0gODsKKy0jZWxzZQorLWNvbnN0IGNoYXIgY3BwX0dDQ19JTkNMVURFX0RJUltdID0gIiI7CistY29uc3Qgc2l6ZV90IGNwcF9HQ0NfSU5DTFVERV9ESVJfbGVuID0gMDsKKy0jZW5kaWYKKy0KKyAvKiBUaGUgY29uZmlndXJlZCBwcmVmaXguICAqLworLWNvbnN0IGNoYXIgY3BwX1BSRUZJWFtdID0gUFJFRklYOworLWNvbnN0IHNpemVfdCBjcHBfUFJFRklYX2xlbiA9IHNpemVvZiBQUkVGSVggLSAxOworLWNvbnN0IGNoYXIgY3BwX0VYRUNfUFJFRklYW10gPSBTVEFOREFSRF9FWEVDX1BSRUZJWDsKKytjaGFyIFBSRUZJWFZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBQUkVGSVg7CisrY2hhciBFWEVDX1BSRUZJWFZBUls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9FWEVDX1BSRUZJWDsKKyAKKyAvKiBUaGlzIHZhbHVlIGlzIHNldCBieSBjcHBfcmVsb2NhdGVkIGF0IHJ1bnRpbWUgKi8KKyBjb25zdCBjaGFyICpnY2NfZXhlY19wcmVmaXg7CitJbmRleDogZ2NjLTkuMy4wL2djYy9jcHBkZWZhdWx0LmgKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnY2MtOS4zLjAub3JpZy9nY2MvY3BwZGVmYXVsdC5oCisrKysgZ2NjLTkuMy4wL2djYy9jcHBkZWZhdWx0LmgKK0BAIC0zMyw3ICszMyw4IEBACisgCisgc3RydWN0IGRlZmF1bHRfaW5jbHVkZQorIHsKKy0gIGNvbnN0IGNoYXIgKmNvbnN0IGZuYW1lOwkvKiBUaGUgbmFtZSBvZiB0aGUgZGlyZWN0b3J5LiAgKi8KKysgIGNvbnN0IGNoYXIgKmZuYW1lOyAgICAgLyogVGhlIG5hbWUgb2YgdGhlIGRpcmVjdG9yeS4gICovCisrCisgICBjb25zdCBjaGFyICpjb25zdCBjb21wb25lbnQ7CS8qIFRoZSBjb21wb25lbnQgY29udGFpbmluZyB0aGUgZGlyZWN0b3J5CisgCQkJCSAgIChzZWUgdXBkYXRlX3BhdGggaW4gcHJlZml4LmMpICovCisgICBjb25zdCBjaGFyIGNwbHVzcGx1czsJCS8qIE9ubHkgbG9vayBoZXJlIGlmIHdlJ3JlIGNvbXBpbGluZyBDKysuICAqLworQEAgLTUwLDE3ICs1MSwxMyBAQCBzdHJ1Y3QgZGVmYXVsdF9pbmNsdWRlCisgfTsKKyAKKyBleHRlcm4gY29uc3Qgc3RydWN0IGRlZmF1bHRfaW5jbHVkZSBjcHBfaW5jbHVkZV9kZWZhdWx0c1tdOworLWV4dGVybiBjb25zdCBjaGFyIGNwcF9HQ0NfSU5DTFVERV9ESVJbXTsKKy1leHRlcm4gY29uc3Qgc2l6ZV90IGNwcF9HQ0NfSU5DTFVERV9ESVJfbGVuOworK2V4dGVybiBjaGFyIEdDQ19JTkNMVURFX0RJUlZBUltdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKTsKKyAKKyAvKiBUaGUgY29uZmlndXJlLXRpbWUgcHJlZml4LCBpLmUuLCB0aGUgdmFsdWUgc3VwcGxpZWQgYXMgdGhlIGFyZ3VtZW50CisgICAgdG8gLS1wcmVmaXg9LiAgKi8KKy1leHRlcm4gY29uc3QgY2hhciBjcHBfUFJFRklYW107CisrZXh0ZXJuIGNoYXIgUFJFRklYVkFSW10gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpOworIC8qIFRoZSBsZW5ndGggb2YgdGhlIGNvbmZpZ3VyZS10aW1lIHByZWZpeC4gICovCistZXh0ZXJuIGNvbnN0IHNpemVfdCBjcHBfUFJFRklYX2xlbjsKKy0vKiBUaGUgY29uZmlndXJlLXRpbWUgZXhlY3V0aW9uIHByZWZpeC4gIFRoaXMgaXMgdHlwaWNhbGx5IHRoZSBsaWIvZ2NjCistICAgc3ViZGlyZWN0b3J5IG9mIGNwcF9QUkVGSVguICAqLworLWV4dGVybiBjb25zdCBjaGFyIGNwcF9FWEVDX1BSRUZJWFtdOworK2V4dGVybiBjaGFyIEVYRUNfUFJFRklYVkFSW10gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpOworIC8qIFRoZSBydW4tdGltZSBleGVjdXRpb24gcHJlZml4LiAgVGhpcyBpcyB0eXBpY2FsbHkgdGhlIGxpYi9nY2MKKyAgICBzdWJkaXJlY3Rvcnkgb2YgdGhlIGFjdHVhbCBpbnN0YWxsYXRpb24uICAqLworIGV4dGVybiBjb25zdCBjaGFyICpnY2NfZXhlY19wcmVmaXg7CitJbmRleDogZ2NjLTkuMy4wL2djYy9nY2MuYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdjYy05LjMuMC5vcmlnL2djYy9nY2MuYworKysrIGdjYy05LjMuMC9nY2MvZ2NjLmMKK0BAIC0yNTMsNiArMjUzLDggQEAgRklMRSAqcmVwb3J0X3RpbWVzX3RvX2ZpbGUgPSBOVUxMOworICNlbmRpZgorIHN0YXRpYyBjb25zdCBjaGFyICp0YXJnZXRfc3lzdGVtX3Jvb3QgPSBERUZBVUxUX1RBUkdFVF9TWVNURU1fUk9PVDsKKyAKKytzdGF0aWMgY2hhciB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4WzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKSA9IFNZU1RFTUxJQlNfRElSOworKworIC8qIE5vbnplcm8gbWVhbnMgcGFzcyB0aGUgdXBkYXRlZCB0YXJnZXRfc3lzdGVtX3Jvb3QgdG8gdGhlIGNvbXBpbGVyLiAgKi8KKyAKKyBzdGF0aWMgaW50IHRhcmdldF9zeXN0ZW1fcm9vdF9jaGFuZ2VkOworQEAgLTUyNyw2ICs1MjksNyBAQCBvciB3aXRoIGNvbnN0YW50IHRleHQgaW4gYSBzaW5nbGUgYXJndW1lCisgICVHICAgICBwcm9jZXNzIExJQkdDQ19TUEVDIGFzIGEgc3BlYy4KKyAgJVIgICAgIE91dHB1dCB0aGUgY29uY2F0ZW5hdGlvbiBvZiB0YXJnZXRfc3lzdGVtX3Jvb3QgYW5kCisgICAgICAgICB0YXJnZXRfc3lzcm9vdF9zdWZmaXguCisrICVyICAgICBPdXRwdXQgdGhlIGJhc2UgcGF0aCB0YXJnZXRfcmVsb2NhdGFibGVfcHJlZml4CisgICVTICAgICBwcm9jZXNzIFNUQVJURklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBTIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KKyAgJUUgICAgIHByb2Nlc3MgRU5ERklMRV9TUEVDIGFzIGEgc3BlYy4gIEEgY2FwaXRhbCBFIGlzIGFjdHVhbGx5IHVzZWQgaGVyZS4KKyAgJUMgICAgIHByb2Nlc3MgQ1BQX1NQRUMgYXMgYSBzcGVjLgorQEAgLTE1MDAsMTAgKzE1MDMsMTAgQEAgc3RhdGljIGNvbnN0IGNoYXIgKmdjY19saWJleGVjX3ByZWZpeDsKKyAgICBnY2NfZXhlY19wcmVmaXggaXMgc2V0IGJlY2F1c2UsIGluIHRoYXQgY2FzZSwgd2Uga25vdyB3aGVyZSB0aGUKKyAgICBjb21waWxlciBoYXMgYmVlbiBpbnN0YWxsZWQsIGFuZCB1c2UgcGF0aHMgcmVsYXRpdmUgdG8gdGhhdAorICAgIGxvY2F0aW9uIGluc3RlYWQuICAqLworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9leGVjX3ByZWZpeCA9IFNUQU5EQVJEX0VYRUNfUFJFRklYOworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9saWJleGVjX3ByZWZpeCA9IFNUQU5EQVJEX0xJQkVYRUNfUFJFRklYOworLXN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9iaW5kaXJfcHJlZml4ID0gU1RBTkRBUkRfQklORElSX1BSRUZJWDsKKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeCA9IFNUQU5EQVJEX1NUQVJURklMRV9QUkVGSVg7Cisrc3RhdGljIGNoYXIgc3RhbmRhcmRfZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfRVhFQ19QUkVGSVg7Cisrc3RhdGljIGNoYXIgc3RhbmRhcmRfbGliZXhlY19wcmVmaXhbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gU1RBTkRBUkRfTElCRVhFQ19QUkVGSVg7Cisrc3RhdGljIGNoYXIgc3RhbmRhcmRfYmluZGlyX3ByZWZpeFs0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkgPSBTVEFOREFSRF9CSU5ESVJfUFJFRklYOworK3N0YXRpYyBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGZpbGVfcHJlZml4ID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWDsKKyAKKyAvKiBGb3IgbmF0aXZlIGNvbXBpbGVycywgdGhlc2UgYXJlIHdlbGwta25vd24gcGF0aHMgY29udGFpbmluZworICAgIGNvbXBvbmVudHMgdGhhdCBtYXkgYmUgcHJvdmlkZWQgYnkgdGhlIHN5c3RlbS4gIEZvciBjcm9zcworQEAgLTE1MTEsOSArMTUxNCw5IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzdGFuZGFyZF9zdGFydGYKKyBzdGF0aWMgY29uc3QgY2hhciAqbWRfZXhlY19wcmVmaXggPSBNRF9FWEVDX1BSRUZJWDsKKyBzdGF0aWMgY29uc3QgY2hhciAqbWRfc3RhcnRmaWxlX3ByZWZpeCA9IE1EX1NUQVJURklMRV9QUkVGSVg7Cisgc3RhdGljIGNvbnN0IGNoYXIgKm1kX3N0YXJ0ZmlsZV9wcmVmaXhfMSA9IE1EX1NUQVJURklMRV9QUkVGSVhfMTsKKy1zdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xCisrc3RhdGljIGNoYXIgc3RhbmRhcmRfc3RhcnRmaWxlX3ByZWZpeF8xWzQwOTZdIF9fYXR0cmlidXRlX18gKChzZWN0aW9uICgiLmdjY3JlbG9jcHJlZml4IikpKQorICAgPSBTVEFOREFSRF9TVEFSVEZJTEVfUFJFRklYXzE7Cistc3RhdGljIGNvbnN0IGNoYXIgKmNvbnN0IHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMgorK3N0YXRpYyBjaGFyIHN0YW5kYXJkX3N0YXJ0ZmlsZV9wcmVmaXhfMls0MDk2XSBfX2F0dHJpYnV0ZV9fICgoc2VjdGlvbiAoIi5nY2NyZWxvY3ByZWZpeCIpKSkKKyAgID0gU1RBTkRBUkRfU1RBUlRGSUxFX1BSRUZJWF8yOworIAorIC8qIEEgcmVsYXRpdmUgcGF0aCB0byBiZSB1c2VkIGluIGZpbmRpbmcgdGhlIGxvY2F0aW9uIG9mIHRvb2xzCitAQCAtNTkyMiw2ICs1OTI1LDExIEBAIGRvX3NwZWNfMSAoY29uc3QgY2hhciAqc3BlYywgaW50IGluc3dpdGMKKyAJICAgICAgfQorIAkgICAgYnJlYWs7CisgCisrICAgICAgICAgIGNhc2UgJ3InOgorKyAgICAgICAgICAgICAgb2JzdGFja19ncm93ICgmb2JzdGFjaywgdGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCwKKysJCSAgICAgIHN0cmxlbiAodGFyZ2V0X3JlbG9jYXRhYmxlX3ByZWZpeCkpOworKyAgICAgICAgICAgIGJyZWFrOworKworIAkgIGNhc2UgJ1MnOgorIAkgICAgdmFsdWUgPSBkb19zcGVjXzEgKHN0YXJ0ZmlsZV9zcGVjLCAwLCBOVUxMKTsKKyAJICAgIGlmICh2YWx1ZSAhPSAwKQorSW5kZXg6IGdjYy05LjMuMC9nY2MvYy1mYW1pbHkvYy1vcHRzLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnY2MtOS4zLjAub3JpZy9nY2MvYy1mYW1pbHkvYy1vcHRzLmMKKysrKyBnY2MtOS4zLjAvZ2NjL2MtZmFtaWx5L2Mtb3B0cy5jCitAQCAtMTM4Miw4ICsxMzgyLDggQEAgYWRkX3ByZWZpeGVkX3BhdGggKGNvbnN0IGNoYXIgKnN1ZmZpeCwgaQorICAgc2l6ZV90IHByZWZpeF9sZW4sIHN1ZmZpeF9sZW47CisgCisgICBzdWZmaXhfbGVuID0gc3RybGVuIChzdWZmaXgpOworLSAgcHJlZml4ICAgICA9IGlwcmVmaXggPyBpcHJlZml4IDogY3BwX0dDQ19JTkNMVURFX0RJUjsKKy0gIHByZWZpeF9sZW4gPSBpcHJlZml4ID8gc3RybGVuIChpcHJlZml4KSA6IGNwcF9HQ0NfSU5DTFVERV9ESVJfbGVuOworKyAgcHJlZml4ICAgICA9IGlwcmVmaXggPyBpcHJlZml4IDogR0NDX0lOQ0xVREVfRElSVkFSOworKyAgcHJlZml4X2xlbiA9IGlwcmVmaXggPyBzdHJsZW4gKGlwcmVmaXgpIDogc3RybGVuKEdDQ19JTkNMVURFX0RJUlZBUikgLSA3OworIAorICAgcGF0aCA9IChjaGFyICopIHhtYWxsb2MgKHByZWZpeF9sZW4gKyBzdWZmaXhfbGVuICsgMSk7CisgICBtZW1jcHkgKHBhdGgsIHByZWZpeCwgcHJlZml4X2xlbik7CitJbmRleDogZ2NjLTkuMy4wL2djYy9pbmNwYXRoLmMKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnY2MtOS4zLjAub3JpZy9nY2MvaW5jcGF0aC5jCisrKysgZ2NjLTkuMy4wL2djYy9pbmNwYXRoLmMKK0BAIC0xMzEsNyArMTMxLDcgQEAgYWRkX3N0YW5kYXJkX3BhdGhzIChjb25zdCBjaGFyICpzeXNyb290LAorICAgaW50IHJlbG9jYXRlZCA9IGNwcF9yZWxvY2F0ZWQgKCk7CisgICBzaXplX3QgbGVuOworIAorLSAgaWYgKGlwcmVmaXggJiYgKGxlbiA9IGNwcF9HQ0NfSU5DTFVERV9ESVJfbGVuKSAhPSAwKQorKyAgaWYgKGlwcmVmaXggJiYgKGxlbiA9IHN0cmxlbihHQ0NfSU5DTFVERV9ESVJWQVIpIC0gNykgIT0gMCkKKyAgICAgeworICAgICAgIC8qIExvb2sgZm9yIGRpcmVjdG9yaWVzIHRoYXQgc3RhcnQgd2l0aCB0aGUgc3RhbmRhcmQgcHJlZml4LgorIAkgIlRyYW5zbGF0ZSIgdGhlbSwgaS5lLiByZXBsYWNlIC91c3IvbG9jYWwvbGliL2djYy4uLiB3aXRoCitAQCAtMTQ1LDcgKzE0NSw3IEBAIGFkZF9zdGFuZGFyZF9wYXRocyAoY29uc3QgY2hhciAqc3lzcm9vdCwKKyAJCSBub3cuICAqLworIAkgICAgICBpZiAoc3lzcm9vdCAmJiBwLT5hZGRfc3lzcm9vdCkKKyAJCWNvbnRpbnVlOworLQkgICAgICBpZiAoIWZpbGVuYW1lX25jbXAgKHAtPmZuYW1lLCBjcHBfR0NDX0lOQ0xVREVfRElSLCBsZW4pKQorKwkgICAgICBpZiAoIWZpbGVuYW1lX25jbXAgKHAtPmZuYW1lLCBHQ0NfSU5DTFVERV9ESVJWQVIsIGxlbikpCisgCQl7CisgCQkgIGNoYXIgKnN0ciA9IGNvbmNhdCAoaXByZWZpeCwgcC0+Zm5hbWUgKyBsZW4sIE5VTEwpOworIAkJICBpZiAocC0+bXVsdGlsaWIgPT0gMSAmJiBpbXVsdGlsaWIpCitAQCAtMTg1LDcgKzE4NSw3IEBAIGFkZF9zdGFuZGFyZF9wYXRocyAoY29uc3QgY2hhciAqc3lzcm9vdCwKKyAJICAgICAgZnJlZSAoc3lzcm9vdF9ub190cmFpbGluZ19kaXJfc2VwYXJhdG9yKTsKKyAJICAgIH0KKyAJICBlbHNlIGlmICghcC0+YWRkX3N5c3Jvb3QgJiYgcmVsb2NhdGVkCistCQkgICAmJiAhZmlsZW5hbWVfbmNtcCAocC0+Zm5hbWUsIGNwcF9QUkVGSVgsIGNwcF9QUkVGSVhfbGVuKSkKKysJCSAgICYmICFmaWxlbmFtZV9uY21wIChwLT5mbmFtZSwgUFJFRklYVkFSLCBzdHJsZW4oUFJFRklYVkFSKSkpCisgCSAgICB7CisgIAkgICAgICBzdGF0aWMgY29uc3QgY2hhciAqcmVsb2NhdGVkX3ByZWZpeDsKKyAJICAgICAgY2hhciAqb3N0cjsKK0BAIC0yMDIsMTIgKzIwMiwxMiBAQCBhZGRfc3RhbmRhcmRfcGF0aHMgKGNvbnN0IGNoYXIgKnN5c3Jvb3QsCisgCQkgIGR1bW15ID0gY29uY2F0IChnY2NfZXhlY19wcmVmaXgsICJkdW1teSIsIE5VTEwpOworIAkJICByZWxvY2F0ZWRfcHJlZml4CisgCQkgICAgPSBtYWtlX3JlbGF0aXZlX3ByZWZpeCAoZHVtbXksCistCQkJCQkgICAgY3BwX0VYRUNfUFJFRklYLAorLQkJCQkJICAgIGNwcF9QUkVGSVgpOworKwkJCQkJICAgIEVYRUNfUFJFRklYVkFSLAorKwkJCQkJICAgIFBSRUZJWFZBUik7CisgCQkgIGZyZWUgKGR1bW15KTsKKyAJCX0KKyAJICAgICAgb3N0ciA9IGNvbmNhdCAocmVsb2NhdGVkX3ByZWZpeCwKKy0JCQkgICAgIHAtPmZuYW1lICsgY3BwX1BSRUZJWF9sZW4sCisrCQkJICAgICBwLT5mbmFtZSArIHN0cmxlbihQUkVGSVhWQVIpLAorIAkJCSAgICAgTlVMTCk7CisgCSAgICAgIHN0ciA9IHVwZGF0ZV9wYXRoIChvc3RyLCBwLT5jb21wb25lbnQpOworIAkgICAgICBmcmVlIChvc3RyKTsKK0luZGV4OiBnY2MtOS4zLjAvZ2NjL3ByZWZpeC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2NjLTkuMy4wLm9yaWcvZ2NjL3ByZWZpeC5jCisrKysgZ2NjLTkuMy4wL2djYy9wcmVmaXguYworQEAgLTcyLDcgKzcyLDkgQEAgTGljZW5zZSBhbG9uZyB3aXRoIEdDQzsgc2VlIHRoZSBmaWxlIENPUAorICNpbmNsdWRlICJwcmVmaXguaCIKKyAjaW5jbHVkZSAiY29tbW9uL2NvbW1vbi10YXJnZXQuaCIKKyAKKy1zdGF0aWMgY29uc3QgY2hhciAqc3RkX3ByZWZpeCA9IFBSRUZJWDsKKytzdGF0aWMgY29uc3QgY2hhciBQUkVGSVhWQVJbNDA5Nl0gX19hdHRyaWJ1dGVfXyAoKHNlY3Rpb24gKCIuZ2NjcmVsb2NwcmVmaXgiKSkpID0gUFJFRklYOworKworK3N0YXRpYyBjb25zdCBjaGFyICpzdGRfcHJlZml4ID0gUFJFRklYVkFSOworIAorIHN0YXRpYyBjb25zdCBjaGFyICpnZXRfa2V5X3ZhbHVlIChjaGFyICopOworIHN0YXRpYyBjaGFyICp0cmFuc2xhdGVfbmFtZSAoY2hhciAqKTsKK0BAIC0yMTIsNyArMjE0LDcgQEAgdHJhbnNsYXRlX25hbWUgKGNoYXIgKm5hbWUpCisgCXByZWZpeCA9IGdldGVudiAoa2V5KTsKKyAKKyAgICAgICBpZiAocHJlZml4ID09IDApCistCXByZWZpeCA9IFBSRUZJWDsKKysJcHJlZml4ID0gUFJFRklYVkFSOworIAorICAgICAgIC8qIFdlIHVzZWQgdG8gc3RyaXAgdHJhaWxpbmcgRElSX1NFUEFSQVRPUnMgaGVyZSwgYnV0IHRoYXQgY2FuCisgCSBzb21ldGltZXMgeWllbGQgYSByZXN1bHQgd2l0aCBubyBzZXBhcmF0b3Igd2hlbiBvbmUgd2FzIGNvZGVkCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI2LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI2LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJmYTc1MTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI2LVNlYXJjaC10YXJnZXQtc3lzcm9vdC1nY2MtdmVyc2lvbi1zcGVjaWZpYy1kaXJzLXdpdGgucGF0Y2gKQEAgLTAsMCArMSwxMDIgQEAKK0Zyb20gNmMzOWEyMmMzZTg1ZDIwZGVlOWUyZmMyMjc0ZTk1ZGE5ODBkZTRkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDcgRGVjIDIwMTUgMjM6NDE6NDUgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAyNi8zOV0gU2VhcmNoIHRhcmdldCBzeXNyb290IGdjYyB2ZXJzaW9uIHNwZWNpZmljIGRpcnMgd2l0aAorIG11bHRpbGliLgorCitXZSBpbnN0YWxsIHRoZSBnY2MgbGlicmFyaWVzIChzdWNoIGFzIGNydGJlZ2luLnApIGludG8KKzxzeXNyb290PjxsaWJkaXI+Lzx0YXJnZXQtc3lzPi81LjIuMC8KK3doaWNoIGlzIGEgZGVmYXVsdCBzZWFyY2ggcGF0aCBmb3IgR0NDIChha2EgbXVsdGlfc3VmZml4IGluIHRoZQorY29kZSBiZWxvdykuIDx0YXJnZXQtc3lzPiBpcyAnbWFjaGluZScgaW4gZ2NjJ3MgdGVybWlub2xvZ3kuIFdlIHVzZQordGhlc2UgZGlyZWN0b3JpZXMgc28gdGhhdCBtdWx0aXBsZSBnY2MgdmVyc2lvbnMgY291bGQgaW4gdGhlb3J5Citjby1leGlzdCBvbiB0YXJnZXQuCisKK1dlIG9ubHkgd2FudCB0byBidWlsZCBvbmUgZ2NjLWNyb3NzLWNhbmFkaWFuIHBlciBhcmNoIGFuZCBoYXZlIHRoaXMgd29yaworZm9yIGFsbCBtdWx0aWxpYnMuIDx0YXJnZXQtc3lzPiBjYW4gYmUgaGFuZGxlZCBieSBtYXBwaW5nIHRoZSBtdWx0aWxpYgorPHRhcmdldC1zeXM+IHRvIHRoZSBvbmUgdXNlZCBieSBnY2MtY3Jvc3MtY2FuYWRpYW4sIGUuZy4KK21pcHM2NC1wb2xrbWxsaWIzMi1saW51eAoraXMgc3ltbGlua2VkIHRvIGJ5IG1pcHM2NC1wb2t5LWxpbnV4LgorCitUaGUgZGVmYXVsdCBnY2Mgc2VhcmNoIHBhdGggaW4gdGhlIHRhcmdldCBzeXNyb290IGZvciBhICJsaWI2NCIgbXV0bGlsaWIKK2lzOgorCis8c3lzcm9vdD4vbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vbGliMzIvLi4vbGliNjQvCis8c3lzcm9vdD4vdXNyL2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLworPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC8KKzxzeXNyb290Pi9saWIzMi8KKzxzeXNyb290Pi91c3IvbGliMzIvCisKK3doaWNoIG1lYW5zIHRoYXQgdGhlIGxpYjMyIGNydGJlZ2luLm8gd2lsbCBiZSBmb3VuZCBhbmQgdGhlIGxpYjY0IG9uZXMKK3dpbGwgbm90IHdoaWNoIGxlYWRzIHRvIGNvbXBpbGVyIGZhaWx1cmVzLgorCitUaGlzIHBhdGNoIGluamVjdHMgYSBtdWx0aWxpYiB2ZXJzaW9uIG9mIHRoYXQgcGF0aCBmaXJzdCBzbyB0aGUgbGliNjQKK2JpbmFyaWVzIGNhbiBiZSBmb3VuZCBmaXJzdC4gV2l0aCB0aGlzIGNoYW5nZSB0aGUgc2VhcmNoIHBhdGggYmVjb21lczoKKworPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0L21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLworPHN5c3Jvb3Q+L2xpYjMyL21pcHM2NC1wb2t5LWxpbnV4LzUuMi4wLworPHN5c3Jvb3Q+L2xpYjMyLy4uL2xpYjY0LworPHN5c3Jvb3Q+L3Vzci9saWIzMi8uLi9saWI2NC9taXBzNjQtcG9reS1saW51eC81LjIuMC8KKzxzeXNyb290Pi91c3IvbGliMzIvbWlwczY0LXBva3ktbGludXgvNS4yLjAvCis8c3lzcm9vdD4vdXNyL2xpYjMyLy4uL2xpYjY0LworPHN5c3Jvb3Q+L2xpYjMyLworPHN5c3Jvb3Q+L3Vzci9saWIzMi8KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitSUCAyMDE1LzcvMzEKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9nY2MuYyB8IDI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2djYy9nY2MuYyBiL2djYy9nY2MuYworaW5kZXggNTlmYjY0ZjVmZDUuLjNlNzlkYTQyMzhjIDEwMDY0NAorLS0tIGEvZ2NjL2djYy5jCisrKysgYi9nY2MvZ2NjLmMKK0BAIC0yNjE3LDcgKzI2MTcsNyBAQCBmb3JfZWFjaF9wYXRoIChjb25zdCBzdHJ1Y3QgcGF0aF9wcmVmaXggKnBhdGhzLAorICAgICAgIGlmIChwYXRoID09IE5VTEwpCisgCXsKKyAJICBsZW4gPSBwYXRocy0+bWF4X2xlbiArIGV4dHJhX3NwYWNlICsgMTsKKy0JICBsZW4gKz0gTUFYIChNQVggKHN1ZmZpeF9sZW4sIG11bHRpX29zX2Rpcl9sZW4pLCBtdWx0aWFyY2hfbGVuKTsKKysJICBsZW4gKz0gTUFYICgoc3VmZml4X2xlbiArIG11bHRpX29zX2Rpcl9sZW4pLCBtdWx0aWFyY2hfbGVuKTsKKyAJICBwYXRoID0gWE5FV1ZFQyAoY2hhciwgbGVuKTsKKyAJfQorIAorQEAgLTI2MjksNiArMjYyOSwzMyBAQCBmb3JfZWFjaF9wYXRoIChjb25zdCBzdHJ1Y3QgcGF0aF9wcmVmaXggKnBhdGhzLAorIAkgIC8qIExvb2sgZmlyc3QgaW4gTUFDSElORS9WRVJTSU9OIHN1YmRpcmVjdG9yeS4gICovCisgCSAgaWYgKCFza2lwX211bHRpX2RpcikKKyAJICAgIHsKKysJICAgICAgaWYgKCEocGwtPm9zX211bHRpbGliID8gc2tpcF9tdWx0aV9vc19kaXIgOiBza2lwX211bHRpX2RpcikpCisrCSAgICAgICAgeworKwkgICAgICAgICAgY29uc3QgY2hhciAqdGhpc19tdWx0aTsKKysJICAgICAgICAgIHNpemVfdCB0aGlzX211bHRpX2xlbjsKKysKKysJICAgICAgICAgIGlmIChwbC0+b3NfbXVsdGlsaWIpCisrCQkgICAgeworKwkJICAgICAgdGhpc19tdWx0aSA9IG11bHRpX29zX2RpcjsKKysJCSAgICAgIHRoaXNfbXVsdGlfbGVuID0gbXVsdGlfb3NfZGlyX2xlbjsKKysJCSAgICB9CisrCSAgICAgICAgICBlbHNlCisrCQkgICAgeworKwkJICAgICAgdGhpc19tdWx0aSA9IG11bHRpX2RpcjsKKysJCSAgICAgIHRoaXNfbXVsdGlfbGVuID0gbXVsdGlfZGlyX2xlbjsKKysJCSAgICB9CisrCisrCSAgICAgICAgICAvKiBMb29rIGluIG11bHRpbGliIE1BQ0hJTkUvVkVSU0lPTiBzdWJkaXJlY3RvcnkgZmlyc3QgKi8KKysJICAgICAgICAgIGlmICh0aGlzX211bHRpX2xlbikKKysJICAgICAgICAgICAgeworKwkJICAgICAgbWVtY3B5IChwYXRoICsgbGVuLCB0aGlzX211bHRpLCB0aGlzX211bHRpX2xlbiArIDEpOworKwkgICAgICAgICAgICAgIG1lbWNweSAocGF0aCArIGxlbiArIHRoaXNfbXVsdGlfbGVuLCBtdWx0aV9zdWZmaXgsIHN1ZmZpeF9sZW4gKyAxKTsKKysJICAgICAgICAgICAgICByZXQgPSBjYWxsYmFjayAocGF0aCwgY2FsbGJhY2tfaW5mbyk7CisrCSAgICAgICAgICAgICAgICBpZiAocmV0KQorKwkJICAgICAgICAgIGJyZWFrOworKwkgICAgICAgICAgICB9CisrCSAgICAgICAgfQorKworIAkgICAgICBtZW1jcHkgKHBhdGggKyBsZW4sIG11bHRpX3N1ZmZpeCwgc3VmZml4X2xlbiArIDEpOworIAkgICAgICByZXQgPSBjYWxsYmFjayAocGF0aCwgY2FsbGJhY2tfaW5mbyk7CisgCSAgICAgIGlmIChyZXQpCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI3LUZpeC12YXJpb3VzLV9GT1JfQlVJTEQtYW5kLXJlbGF0ZWQtdmFyaWFibGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNy1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZThhY2M3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyNy1GaXgtdmFyaW91cy1fRk9SX0JVSUxELWFuZC1yZWxhdGVkLXZhcmlhYmxlcy5wYXRjaApAQCAtMCwwICsxLDEzNyBAQAorRnJvbSAwN2RiMzRiMTZiNmM4ZTNkOTQ4YjQxN2YyZmMwNTI1MDBmZmI3N2QzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgNyBEZWMgMjAxNSAyMzo0Mjo0NSArMDAwMAorU3ViamVjdDogW1BBVENIIDI3LzM5XSBGaXggdmFyaW91cyBfRk9SX0JVSUxEIGFuZCByZWxhdGVkIHZhcmlhYmxlcworCitXaGVuIGRvaW5nIGEgRk9SX0JVSUxEIHRoaW5nLCB5b3UgaGF2ZSB0byBvdmVycmlkZSBDRkxBR1Mgd2l0aAorQ0ZMQUdTX0ZPUl9CVUlMRC4gQW5kIGlmIHlvdSB1c2UgQysrLCB5b3UgYWxzbyBoYXZlIHRvIG92ZXJyaWRlCitDWFhGTEFHUyB3aXRoIENYWEZMQUdTX0ZPUl9CVUlMRC4KK1dpdGhvdXQgdGhpcywgd2hlbiBidWlsZGluZyBmb3IgbWluZ3csIHlvdSBlbmQgdXAgdHJ5aW5nIHRvIHVzZQordGhlIG1pbmd3IGhlYWRlcnMgZm9yIGEgaG9zdCBidWlsZC4KKworVGhlIHNhbWUgZ29lcyBmb3Igb3RoZXIgdmFyaWFibGVzIGFzIHdlbGwsIHN1Y2ggYXMgQ1BQRkxBR1MsCitDUFAsIGFuZCBHTVBJTkMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBQZXRlciBTZWViYWNoIDxwZXRlci5zZWViYWNoQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBNYXJrIEhhdGxlIDxtYXJrLmhhdGxlQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuaW4gICAgICB8IDYgKysrKysrCisgTWFrZWZpbGUudHBsICAgICB8IDUgKysrKysKKyBnY2MvTWFrZWZpbGUuaW4gIHwgMiArLQorIGdjYy9jb25maWd1cmUgICAgfCAyICstCisgZ2NjL2NvbmZpZ3VyZS5hYyB8IDIgKy0KKyA1IGZpbGVzIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCitpbmRleCAyNTU4MjJlM2YyNy4uOWRjMGRmZjA0NzQgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0xNTIsNiArMTUyLDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKKyAJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiOyBleHBvcnQgQ1BQOyBcCisgCUNGTEFHUz0iJChDRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDRkxBR1M7IFwKKyAJQ09ORklHX1NIRUxMPSIkKFNIRUxMKSI7IGV4cG9ydCBDT05GSUdfU0hFTEw7IFwKKysJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDUFBGTEFHUzsgXAorIAlDWFg9IiQoQ1hYX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYOyBcCisgCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1hYRkxBR1M7IFwKKyAJR0ZPUlRSQU49IiQoR0ZPUlRSQU5fRk9SX0JVSUxEKSI7IGV4cG9ydCBHRk9SVFJBTjsgXAorQEAgLTE3MSw2ICsxNzIsOSBAQCBCVUlMRF9FWFBPUlRTID0gXAorICMgYnVpbHQgZm9yIHRoZSBidWlsZCBzeXN0ZW0gdG8gb3ZlcnJpZGUgdGhvc2UgaW4gQkFTRV9GTEFHU19UT19QQVNTLgorIEVYVFJBX0JVSUxEX0ZMQUdTID0gXAorIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiIFwKKysJQ1hYRkxBR1M9IiQoQ1hYRkxBR1NfRk9SX0JVSUxEKSIgXAorKwlDUFA9IiQoQ0NfRk9SX0JVSUxEKSAtRSIgXAorKwlDUFBGTEFHUz0iJChDUFBGTEFHU19GT1JfQlVJTEQpIiBcCisgCUxERkxBR1M9IiQoTERGTEFHU19GT1JfQlVJTEQpIgorIAorICMgVGhpcyBpcyB0aGUgbGlzdCBvZiBkaXJlY3RvcmllcyB0byBidWlsdCBmb3IgdGhlIGhvc3Qgc3lzdGVtLgorQEAgLTE4OCw2ICsxOTIsNyBAQCBIT1NUX1NVQkRJUiA9IEBob3N0X3N1YmRpckAKKyBIT1NUX0VYUE9SVFMgPSBcCisgCSQoQkFTRV9FWFBPUlRTKSBcCisgCUNDPSIkKENDKSI7IGV4cG9ydCBDQzsgXAorKwlDUFA9IiQoQ0MpIC1FIjsgZXhwb3J0IENQUDsgXAorIAlBREFfQ0ZMQUdTPSIkKEFEQV9DRkxBR1MpIjsgZXhwb3J0IEFEQV9DRkxBR1M7IFwKKyAJQ0ZMQUdTPSIkKENGTEFHUykiOyBleHBvcnQgQ0ZMQUdTOyBcCisgCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCitAQCAtNzc1LDYgKzc4MCw3IEBAIEJBU0VfRkxBR1NfVE9fUEFTUyA9IFwKKyAJIkNDX0ZPUl9CVUlMRD0kKENDX0ZPUl9CVUlMRCkiIFwKKyAJIkNGTEFHU19GT1JfQlVJTEQ9JChDRkxBR1NfRk9SX0JVSUxEKSIgXAorIAkiQ1hYX0ZPUl9CVUlMRD0kKENYWF9GT1JfQlVJTEQpIiBcCisrCSJDWFhGTEFHU19GT1JfQlVJTEQ9JChDWFhGTEFHU19GT1JfQlVJTEQpIiBcCisgCSJFWFBFQ1Q9JChFWFBFQ1QpIiBcCisgCSJGTEVYPSQoRkxFWCkiIFwKKyAJIklOU1RBTEw9JChJTlNUQUxMKSIgXAorZGlmZiAtLWdpdCBhL01ha2VmaWxlLnRwbCBiL01ha2VmaWxlLnRwbAoraW5kZXggNDFjYWU1OGEyNjcuLmQzZjZiNzlhY2RjIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUudHBsCisrKysgYi9NYWtlZmlsZS50cGwKK0BAIC0xNTQsNiArMTU0LDcgQEAgQlVJTERfRVhQT1JUUyA9IFwKKyAJQ0M9IiQoQ0NfRk9SX0JVSUxEKSI7IGV4cG9ydCBDQzsgXAorIAlDRkxBR1M9IiQoQ0ZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ0ZMQUdTOyBcCisgCUNPTkZJR19TSEVMTD0iJChTSEVMTCkiOyBleHBvcnQgQ09ORklHX1NIRUxMOyBcCisrCUNQUEZMQUdTPSIkKENQUEZMQUdTX0ZPUl9CVUlMRCkiOyBleHBvcnQgQ1BQRkxBR1M7IFwKKyAJQ1hYPSIkKENYWF9GT1JfQlVJTEQpIjsgZXhwb3J0IENYWDsgXAorIAlDWFhGTEFHUz0iJChDWFhGTEFHU19GT1JfQlVJTEQpIjsgZXhwb3J0IENYWEZMQUdTOyBcCisgCUdGT1JUUkFOPSIkKEdGT1JUUkFOX0ZPUl9CVUlMRCkiOyBleHBvcnQgR0ZPUlRSQU47IFwKK0BAIC0xNzMsNiArMTc0LDkgQEAgQlVJTERfRVhQT1JUUyA9IFwKKyAjIGJ1aWx0IGZvciB0aGUgYnVpbGQgc3lzdGVtIHRvIG92ZXJyaWRlIHRob3NlIGluIEJBU0VfRkxBR1NfVE9fUEFTUy4KKyBFWFRSQV9CVUlMRF9GTEFHUyA9IFwKKyAJQ0ZMQUdTPSIkKENGTEFHU19GT1JfQlVJTEQpIiBcCisrCUNYWEZMQUdTPSIkKENYWEZMQUdTX0ZPUl9CVUlMRCkiIFwKKysJQ1BQPSIkKENDX0ZPUl9CVUlMRCkgLUUiIFwKKysJQ1BQRkxBR1M9IiQoQ1BQRkxBR1NfRk9SX0JVSUxEKSIgXAorIAlMREZMQUdTPSIkKExERkxBR1NfRk9SX0JVSUxEKSIKKyAKKyAjIFRoaXMgaXMgdGhlIGxpc3Qgb2YgZGlyZWN0b3JpZXMgdG8gYnVpbHQgZm9yIHRoZSBob3N0IHN5c3RlbS4KK0BAIC0xOTAsNiArMTk0LDcgQEAgSE9TVF9TVUJESVIgPSBAaG9zdF9zdWJkaXJACisgSE9TVF9FWFBPUlRTID0gXAorIAkkKEJBU0VfRVhQT1JUUykgXAorIAlDQz0iJChDQykiOyBleHBvcnQgQ0M7IFwKKysJQ1BQPSIkKENDKSAtRSI7IGV4cG9ydCBDUFA7IFwKKyAJQURBX0NGTEFHUz0iJChBREFfQ0ZMQUdTKSI7IGV4cG9ydCBBREFfQ0ZMQUdTOyBcCisgCUNGTEFHUz0iJChDRkxBR1MpIjsgZXhwb3J0IENGTEFHUzsgXAorIAlDT05GSUdfU0hFTEw9IiQoU0hFTEwpIjsgZXhwb3J0IENPTkZJR19TSEVMTDsgXAorZGlmZiAtLWdpdCBhL2djYy9NYWtlZmlsZS5pbiBiL2djYy9NYWtlZmlsZS5pbgoraW5kZXggNzc3MjM0MmFkNWUuLjAyZmVjODgxYjZkIDEwMDY0NAorLS0tIGEvZ2NjL01ha2VmaWxlLmluCisrKysgYi9nY2MvTWFrZWZpbGUuaW4KK0BAIC04MDUsNyArODA1LDcgQEAgQlVJTERfTERGTEFHUz1AQlVJTERfTERGTEFHU0AKKyBCVUlMRF9OT19QSUVfRkxBRyA9IEBCVUlMRF9OT19QSUVfRkxBR0AKKyBCVUlMRF9MREZMQUdTICs9ICQoQlVJTERfTk9fUElFX0ZMQUcpCisgQlVJTERfQ1BQRkxBR1M9IC1JLiAtSSQoQEQpIC1JJChzcmNkaXIpIC1JJChzcmNkaXIpLyQoQEQpIFwKKy0JCS1JJChzcmNkaXIpLy4uL2luY2x1ZGUgQElOQ0lOVExAICQoQ1BQSU5DKSAkKENQUEZMQUdTKQorKwkJLUkkKHNyY2RpcikvLi4vaW5jbHVkZSBASU5DSU5UTEAgJChDUFBJTkMpICQoQ1BQRkxBR1NfRk9SX0JVSUxEKQorIAorICMgQWN0dWFsIG5hbWUgdG8gdXNlIHdoZW4gaW5zdGFsbGluZyBhIG5hdGl2ZSBjb21waWxlci4KKyBHQ0NfSU5TVEFMTF9OQU1FIDo9ICQoc2hlbGwgZWNobyBnY2N8c2VkICckKHByb2dyYW1fdHJhbnNmb3JtX25hbWUpJykKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggYTVmMjA4YWY3Y2YuLjA3ODhiN2JmMGI1IDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTExOTY2LDcgKzExOTY2LDcgQEAgZWxzZQorIAlDQz0iJHtDQ19GT1JfQlVJTER9IiBDRkxBR1M9IiR7Q0ZMQUdTX0ZPUl9CVUlMRH0iIFwKKyAJQ1hYPSIke0NYWF9GT1JfQlVJTER9IiBDWFhGTEFHUz0iJHtDWFhGTEFHU19GT1JfQlVJTER9IiBcCisgCUxEPSIke0xEX0ZPUl9CVUlMRH0iIExERkxBR1M9IiR7TERGTEFHU19GT1JfQlVJTER9IiBcCistCUdNUElOQz0iIiBDUFBGTEFHUz0iJHtDUFBGTEFHU30gLURHRU5FUkFUT1JfRklMRSIgXAorKwlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1NfRk9SX0JVSUxEfSAtREdFTkVSQVRPUl9GSUxFIiBcCisgCSR7cmVhbHNyY2Rpcn0vY29uZmlndXJlIFwKKyAJCS0tZW5hYmxlLWxhbmd1YWdlcz0ke2VuYWJsZV9sYW5ndWFnZXMtYWxsfSBcCisgCQktLXRhcmdldD0kdGFyZ2V0X2FsaWFzIC0taG9zdD0kYnVpbGRfYWxpYXMgLS1idWlsZD0kYnVpbGRfYWxpYXMKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggYjdhN2VhZDFjMDIuLjVhYjUwZmFlMGYzIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTE3NDMsNyArMTc0Myw3IEBAIGVsc2UKKyAJQ0M9IiR7Q0NfRk9SX0JVSUxEfSIgQ0ZMQUdTPSIke0NGTEFHU19GT1JfQlVJTER9IiBcCisgCUNYWD0iJHtDWFhfRk9SX0JVSUxEfSIgQ1hYRkxBR1M9IiR7Q1hYRkxBR1NfRk9SX0JVSUxEfSIgXAorIAlMRD0iJHtMRF9GT1JfQlVJTER9IiBMREZMQUdTPSIke0xERkxBR1NfRk9SX0JVSUxEfSIgXAorLQlHTVBJTkM9IiIgQ1BQRkxBR1M9IiR7Q1BQRkxBR1N9IC1ER0VORVJBVE9SX0ZJTEUiIFwKKysJR01QSU5DPSIiIENQUEZMQUdTPSIke0NQUEZMQUdTX0ZPUl9CVUlMRH0gLURHRU5FUkFUT1JfRklMRSIgXAorIAkke3JlYWxzcmNkaXJ9L2NvbmZpZ3VyZSBcCisgCQktLWVuYWJsZS1sYW5ndWFnZXM9JHtlbmFibGVfbGFuZ3VhZ2VzLWFsbH0gXAorIAkJLS10YXJnZXQ9JHRhcmdldF9hbGlhcyAtLWhvc3Q9JGJ1aWxkX2FsaWFzIC0tYnVpbGQ9JGJ1aWxkX2FsaWFzCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI4LW5pb3MyLURlZmluZS1NVVNMX0RZTkFNSUNfTElOS0VSLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyOC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MmE1ZDk3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyOC1uaW9zMi1EZWZpbmUtTVVTTF9EWU5BTUlDX0xJTktFUi5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDU5NTQzZTg5N2ViMzUxOTRmYjQ3Mjg4Zjc3NjJlNDBhMThmZmY2MTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAyIEZlYiAyMDE2IDEwOjI2OjEwIC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMjgvMzldIG5pb3MyOiBEZWZpbmUgTVVTTF9EWU5BTUlDX0xJTktFUgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogTWFyZWsgVmFzdXQgPG1hcmV4QGRlbnguZGU+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmggYi9nY2MvY29uZmlnL25pb3MyL2xpbnV4LmgKK2luZGV4IDY5ODczNGFkZDM1Li5lZWVlNjBlY2ZlYSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvbmlvczIvbGludXguaAorKysrIGIvZ2NjL2NvbmZpZy9uaW9zMi9saW51eC5oCitAQCAtMzAsNiArMzAsNyBAQAorICNkZWZpbmUgQ1BQX1NQRUMgIiV7cG9zaXg6LURfUE9TSVhfU09VUkNFfSAle3B0aHJlYWQ6LURfUkVFTlRSQU5UfSIKKyAKKyAjZGVmaW5lIEdMSUJDX0RZTkFNSUNfTElOS0VSICIvbGliL2xkLWxpbnV4LW5pb3MyLnNvLjEiCisrI2RlZmluZSBNVVNMX0RZTkFNSUNfTElOS0VSICAiL2xpYi9sZC1tdXNsLW5pb3MyLnNvLjEiCisgCisgI3VuZGVmIExJTktfU1BFQworICNkZWZpbmUgTElOS19TUEVDIExJTktfU1BFQ19FTkRJQU4gXAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyOS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAyOS1BZGQtc3NwX25vbnNoYXJlZC10by1saW5rLWNvbW1hbmRsaW5lLWZvci1tdXNsLXRhcmdlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJmYTdlMTkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDI5LUFkZC1zc3Bfbm9uc2hhcmVkLXRvLWxpbmstY29tbWFuZGxpbmUtZm9yLW11c2wtdGFyZ2UucGF0Y2gKQEAgLTAsMCArMSw4NyBAQAorRnJvbSA4ZGY5OWFmMGE2NWVmNzQwYmNmMmI3ZGM5YTEwOWNjNTdmMTVjM2FhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMjcgSnVuIDIwMTcgMTg6MTA6NTQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAyOS8zOV0gQWRkIHNzcF9ub25zaGFyZWQgdG8gbGluayBjb21tYW5kbGluZSBmb3IgbXVzbCB0YXJnZXRzCisKK3doZW4gLWZzdGFjay1wcm90ZWN0b3Igb3B0aW9ucyBhcmUgZW5hYmxlZCB3ZSBuZWVkIHRvCitsaW5rIHdpdGggc3NwX3NoYXJlZCBvbiBtdXNsIHNpbmNlIGl0IGRvZXMgbm90IHByb3ZpZGUKK3RoZSBfX3N0YWNrX2Noa19mYWlsX2xvY2FsKCkgc28gZXNzZW50aWFsbHkgaXQgcHJvdmlkZXMKK2xpYnNzcCBidXQgbm90IGxpYnNzcF9ub25zaGFyZWQgc29tZXRoaW5nIGxpa2UKK1RBUkdFVF9MSUJDX1BST1ZJREVTX1NTUF9CVVRfTk9UX1NTUF9OT05TSEFSRUQKKyB3aGVyZS1hcyBmb3IgZ2xpYmMgdGhlIG5lZWRlZCBzeW1ib2xzCithcmUgYWxyZWFkeSBwcmVzZW50IGluIGxpYmNfbm9uc2hhcmVkIGxpYnJhcnkgdGhlcmVmb3JlCit3ZSBkbyBub3QgbmVlZCBhbnkgbGlicmFyeSBoZWxwZXIgb24gZ2xpYmMgYmFzZWQgc3lzdGVtcworYnV0IG11c2wgbmVlZHMgdGhlIGxpYnNzcF9ub3NoYXJlZCBmcm9tIGdjYworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9jb25maWcvbGludXguaCAgICAgICAgICB8ICA3ICsrKysrKysKKyBnY2MvY29uZmlnL3JzNjAwMC9saW51eC5oICAgfCAxMCArKysrKysrKysrCisgZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oIHwgMTAgKysrKysrKysrKworIDMgZmlsZXMgY2hhbmdlZCwgMjcgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9saW51eC5oIGIvZ2NjL2NvbmZpZy9saW51eC5oCitpbmRleCA0YjA1ZDhlOTNkMS4uMGNhMTE3ZTJlZDQgMTAwNjQ0CistLS0gYS9nY2MvY29uZmlnL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvbGludXguaAorQEAgLTE5NSw2ICsxOTUsMTMgQEAgc2VlIHRoZSBmaWxlcyBDT1BZSU5HMyBhbmQgQ09QWUlORy5SVU5USU1FIHJlc3BlY3RpdmVseS4gIElmIG5vdCwgc2VlCisgICAgIHsgR0NDX0lOQ0xVREVfRElSLCAiR0NDIiwgMCwgMSwgMCwgMCB9LAkJXAorICAgICB7IDAsIDAsIDAsIDAsIDAsIDAgfQkJCQlcCisgICB9CisrI2lmZGVmIFRBUkdFVF9MSUJDX1BST1ZJREVTX1NTUAorKyN1bmRlZiBMSU5LX1NTUF9TUEVDCisrI2RlZmluZSBMSU5LX1NTUF9TUEVDICIle2ZzdGFjay1wcm90ZWN0b3J8ZnN0YWNrLXByb3RlY3Rvci1hbGwiIFwKKysJCSAgICAgICAifGZzdGFjay1wcm90ZWN0b3Itc3Ryb25nfGZzdGFjay1wcm90ZWN0b3ItZXhwbGljaXQiIFwKKysJCSAgICAgICAiOi1sc3NwX25vbnNoYXJlZH0iCisrI2VuZGlmCisrCisgI2VuZGlmCisgCisgI2lmIChERUZBVUxUX0xJQkMgPT0gTElCQ19VQ0xJQkMpICYmIGRlZmluZWQgKFNJTkdMRV9MSUJDKSAvKiB1Q2xpbnV4ICovCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9yczYwMDAvbGludXguaCBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmgKK2luZGV4IGZmY2ViMzJiZjY1Li5jODJjYjJhZDA1YiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmgKKysrKyBiL2djYy9jb25maWcvcnM2MDAwL2xpbnV4LmgKK0BAIC05NCw2ICs5NCwxNiBAQAorIAkJCQkJICIgLW0gZWxmMzJwcGNsaW51eCIpCisgI2VuZGlmCisgCisrLyogbGluayBsaWJzc3Bfbm9uc2hhcmVkLmEgd2l0aCBtdXNsICovCisrI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wKKysjaWZkZWYgVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQCisrI3VuZGVmIExJTktfU1NQX1NQRUMKKysjZGVmaW5lIExJTktfU1NQX1NQRUMgIiV7ZnN0YWNrLXByb3RlY3Rvcnxmc3RhY2stcHJvdGVjdG9yLWFsbCIgXAorKwkJICAgICAgICJ8ZnN0YWNrLXByb3RlY3Rvci1zdHJvbmd8ZnN0YWNrLXByb3RlY3Rvci1leHBsaWNpdCIgXAorKwkJICAgICAgICI6LWxzc3Bfbm9uc2hhcmVkfSIKKysjZW5kaWYKKysjZW5kaWYKKysKKyAjdW5kZWYgTElOS19PU19MSU5VWF9TUEVDCisgI2RlZmluZSBMSU5LX09TX0xJTlVYX1NQRUMgTElOS19PU19MSU5VWF9FTVVMICIgJXshc2hhcmVkOiAleyFzdGF0aWM6IFwKKyAgICV7IXN0YXRpYy1waWU6IFwKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmggYi9nY2MvY29uZmlnL3JzNjAwMC9saW51eDY0LmgKK2luZGV4IDQ1YTlhN2NhZTU5Li5kMWU4OGE0MGU4MiAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvcnM2MDAwL2xpbnV4NjQuaAorKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvbGludXg2NC5oCitAQCAtNDU2LDYgKzQ1NiwxNiBAQCBleHRlcm4gaW50IGRvdF9zeW1ib2xzOworIAkJCQkJICAgIiAtbSBlbGY2NHBwYyIpCisgI2VuZGlmCisgCisrLyogbGluayBsaWJzc3Bfbm9uc2hhcmVkLmEgd2l0aCBtdXNsICovCisrI2lmIERFRkFVTFRfTElCQyA9PSBMSUJDX01VU0wKKysjaWZkZWYgVEFSR0VUX0xJQkNfUFJPVklERVNfU1NQCisrI3VuZGVmIExJTktfU1NQX1NQRUMKKysjZGVmaW5lIExJTktfU1NQX1NQRUMgIiV7ZnN0YWNrLXByb3RlY3Rvcnxmc3RhY2stcHJvdGVjdG9yLWFsbCIgXAorKwkJICAgICAgICJ8ZnN0YWNrLXByb3RlY3Rvci1zdHJvbmd8ZnN0YWNrLXByb3RlY3Rvci1leHBsaWNpdCIgXAorKwkJICAgICAgICI6LWxzc3Bfbm9uc2hhcmVkfSIKKysjZW5kaWYKKysjZW5kaWYKKysKKyAjZGVmaW5lIExJTktfT1NfTElOVVhfU1BFQzMyIExJTktfT1NfTElOVVhfRU1VTDMyICIgJXshc2hhcmVkOiAleyFzdGF0aWM6IFwKKyAgICV7IXN0YXRpYy1waWU6IFwKKyAgICAgJXtyZHluYW1pYzotZXhwb3J0LWR5bmFtaWN9IFwKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzAtbGRibDEyOC1jb25maWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDMwLWxkYmwxMjgtY29uZmlnLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY4ZThjMDcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDMwLWxkYmwxMjgtY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsNzkgQEAKK0Zyb20gMWJmYWU2MjRiMjdlYTRhMWY1YzVhOTIwNTBkNzQxYjUxMWU3YjNkNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN6YWJvbGNzIE5hZ3kgPG5zekBwb3J0NzAubmV0PgorRGF0ZTogV2VkLCAyOCBGZWIgMjAxOCAwMDo1NDowNSArMDAwMAorU3ViamVjdDogW1BBVENIIDMwLzM5XSBsZGJsMTI4IGNvbmZpZworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9jb25maWd1cmUgICAgfCAxMyArKysrKysrKysrKysrCisgZ2NjL2NvbmZpZ3VyZS5hYyB8IDE2ICsrKysrKysrKysrKysrLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlIGIvZ2NjL2NvbmZpZ3VyZQoraW5kZXggMDc4OGI3YmYwYjUuLmViMWE0NWJiMjYzIDEwMDc1NQorLS0tIGEvZ2NjL2NvbmZpZ3VyZQorKysrIGIvZ2NjL2NvbmZpZ3VyZQorQEAgLTI5MzcwLDYgKzI5MzcwLDE1IEBAIGlmIHRlc3QgIiR7d2l0aF9sb25nX2RvdWJsZV8xMjgrc2V0fSIgPSBzZXQ7IHRoZW4gOgorICAgd2l0aHZhbD0kd2l0aF9sb25nX2RvdWJsZV8xMjg7IGdjY19jdl90YXJnZXRfbGRibDEyOD0iJHdpdGhfbG9uZ19kb3VibGVfMTI4IgorIGVsc2UKKyAKKysgICAgICBjYXNlICIkdGFyZ2V0IiBpbgorKwlzMzkwKi0qLWxpbnV4LW11c2wqKQorKwkgIGdjY19jdl90YXJnZXRfbGRibDEyOD15ZXMKKysJICA7OworKwlwb3dlcnBjKi0qLWxpbnV4LW11c2wqKQorKwkgIGdjY19jdl90YXJnZXRfbGRibDEyOD1ubworKwkgIDs7CisrCSopCisrCisgaWYgdGVzdCAkZ2xpYmNfdmVyc2lvbl9tYWpvciAtZ3QgMiBcCisgICB8fCAoIHRlc3QgJGdsaWJjX3ZlcnNpb25fbWFqb3IgLWVxIDIgJiYgdGVzdCAkZ2xpYmNfdmVyc2lvbl9taW5vciAtZ2UgNCApOyB0aGVuIDoKKyAgIGdjY19jdl90YXJnZXRfbGRibDEyOD15ZXMKK0BAIC0yOTM4MSw2ICsyOTM5MCwxMCBAQCBlbHNlCisgICAgICAgJiYgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PXllcworIAorIGZpCisrCisrCSAgOzsKKysgICAgICBlc2FjCisrCisgZmkKKyAKKyAgICAgOzsKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlndXJlLmFjIGIvZ2NjL2NvbmZpZ3VyZS5hYworaW5kZXggNWFiNTBmYWUwZjMuLjdmZmUzNWVlMWMzIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZ3VyZS5hYworKysrIGIvZ2NjL2NvbmZpZ3VyZS5hYworQEAgLTYwMzAsMTMgKzYwMzAsMjUgQEAgY2FzZSAiJHRhcmdldCIgaW4KKyAgICAgQUNfQVJHX1dJVEgobG9uZy1kb3VibGUtMTI4LAorICAgICAgIFtBU19IRUxQX1NUUklORyhbLS13aXRoLWxvbmctZG91YmxlLTEyOF0sCisgCQkgICAgICBbdXNlIDEyOC1iaXQgbG9uZyBkb3VibGUgYnkgZGVmYXVsdF0pXSwKKy0gICAgICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9IiR3aXRoX2xvbmdfZG91YmxlXzEyOCIsCisrICAgICAgZ2NjX2N2X3RhcmdldF9sZGJsMTI4PSIkd2l0aF9sb25nX2RvdWJsZV8xMjgiLCBbCisrICAgICAgY2FzZSAiJHRhcmdldCIgaW4KKysJczM5MCotKi1saW51eC1tdXNsKikKKysJICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzCisrCSAgOzsKKysJcG93ZXJwYyotKi1saW51eC1tdXNsKikKKysJICBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9bm8KKysJICA7OworKwkqKV0KKyAgICAgICBbR0NDX0dMSUJDX1ZFUlNJT05fR1RFX0lGRUxTRShbMl0sIFs0XSwgW2djY19jdl90YXJnZXRfbGRibDEyOD15ZXNdLCBbCisgICAgICAgW2djY19jdl90YXJnZXRfbGRibDEyOD1ubworICAgICAgIGdyZXAgJ15bIAldKiNbIAldKmRlZmluZVsgCV1bIAldKl9fTE9OR19ET1VCTEVfTUFUSF9PUFRJT05BTCcgXAorICAgICAgICAgJHRhcmdldF9oZWFkZXJfZGlyL2JpdHMvd29yZHNpemUuaCA+IC9kZXYvbnVsbCAyPiYxIFwKKyAgICAgICAmJiBnY2NfY3ZfdGFyZ2V0X2xkYmwxMjg9eWVzCistICAgICAgXV0pXSkKKysgICAgICBdXSldCisrICAgICAgWworKwkgIDs7CisrICAgICAgZXNhYworKyAgICAgIF0pCisgICAgIDs7CisgZXNhYworIGlmIHRlc3QgeCRnY2NfY3ZfdGFyZ2V0X2xkYmwxMjggPSB4eWVzOyB0aGVuCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDMxLUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzEtTGluay1saWJnY2MtdXNpbmctTERGTEFHUy1ub3QtanVzdC1TSExJQl9MREZMQUdTLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYwYTI5ZmMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDMxLUxpbmstbGliZ2NjLXVzaW5nLUxERkxBR1Mtbm90LWp1c3QtU0hMSUJfTERGTEFHUy5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDMxZDAwOGY1NTczNjI3YzYxOTJjZTlmY2Y3MjlmMGJlNDY0YTdjZjUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCA0IE1heSAyMDE2IDIxOjExOjM0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMzEvMzldIExpbmsgbGliZ2NjIHVzaW5nIExERkxBR1MsIG5vdCBqdXN0IFNITElCX0xERkxBR1MKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYyBiL2xpYmdjYy9jb25maWcvdC1zbGliZ2NjCitpbmRleCAwOTliZjIzZTYyZi4uNDM2YjI3N2E3OWYgMTAwNjQ0CistLS0gYS9saWJnY2MvY29uZmlnL3Qtc2xpYmdjYworKysrIGIvbGliZ2NjL2NvbmZpZy90LXNsaWJnY2MKK0BAIC0zMiw3ICszMiw3IEBAIFNITElCX0lOU1RBTExfU09MSU5LID0gJChMTl9TKSAkKFNITElCX1NPTkFNRSkgXAorIAkkKERFU1RESVIpJChzbGliZGlyKSQoU0hMSUJfU0xJQkRJUl9RVUFMKS8kKFNITElCX1NPTElOSykKKyAKKyBTSExJQl9MSU5LID0gJChDQykgJChMSUJHQ0MyX0NGTEFHUykgLXNoYXJlZCAtbm9kZWZhdWx0bGlicyBcCistCSQoU0hMSUJfTERGTEFHUykgXAorKwkkKExERkxBR1MpICQoU0hMSUJfTERGTEFHUykgXAorIAktbyAkKFNITElCX0RJUikvJChTSExJQl9TT05BTUUpLnRtcCBAbXVsdGlsaWJfZmxhZ3NAIFwKKyAJJChTSExJQl9PQkpTKSAkKFNITElCX0xDKSAmJiBcCisgCXJtIC1mICQoU0hMSUJfRElSKS8kKFNITElCX1NPTElOSykgJiYgXAorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMi1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMi1saWJnY2Nfcy1Vc2UtYWxpYXMtZm9yLV9fY3B1X2luZGljYXRvcl9pbml0LWluc3RlYWQtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZmMDQ4ZGEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDMyLWxpYmdjY19zLVVzZS1hbGlhcy1mb3ItX19jcHVfaW5kaWNhdG9yX2luaXQtaW5zdGVhZC0ucGF0Y2gKQEAgLTAsMCArMSw4NiBAQAorRnJvbSA3NjFmYTZlM2UzNzYwOGNmZDFiMjg4ZTcyMWEyZmY4OTI4OGNkNmFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU3phYm9sY3MgTmFneSA8bnN6QHBvcnQ3MC5uZXQ+CitEYXRlOiBTYXQsIDI0IE9jdCAyMDE1IDIwOjA5OjUzICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMzIvMzldIGxpYmdjY19zOiBVc2UgYWxpYXMgZm9yIF9fY3B1X2luZGljYXRvcl9pbml0IGluc3RlYWQgb2YKKyBzeW12ZXIKKworQWRhcHRlciBmcm9tCisKK2h0dHBzOi8vZ2NjLmdudS5vcmcvbWwvZ2NjLXBhdGNoZXMvMjAxNS0wNS9tc2cwMDg5OS5odG1sCisKK1RoaXMgZml4IHdhcyBkZWJhdGVkIGJ1dCBoYXNudCBiZWVuIGFwcGxpZWQgZ2NjIHVwc3RyZWFtIHNpbmNlCit0aGV5IGV4cGVjdCBtdXNsIHRvIHN1cHBvcnQgJ0AnIGluIHN5bWJvbCB2ZXJzaW9uaW5nIHdoaWNoIGlzCithIHN1bi9nbnUgdmVyc2lvbmluZyBleHRlbnRpb24uIFRoaXMgcGF0Y2ggaG93ZXZlciBhdm9pZHMgdGhlCituZWVkIGZvciB0aGUgJ0AnIHN5bWJvbHMgYXQgYWxsCisKK2xpYmdjYy9DaGFuZ2Vsb2c6CisKKzIwMTUtMDUtMTEgIFN6YWJvbGNzIE5hZ3kgIDxzemFib2xjcy5uYWd5QGFybS5jb20+CisKKwkqIGNvbmZpZy9pMzg2L2NwdWluZm8uYyAoX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwpOiBBZGQuCisJKF9fY3B1X2luZGljYXRvcl9pbml0QEdDQ180LjguMCwgX19jcHVfbW9kZWxAR0NDXzQuOC4wKTogUmVtb3ZlLgorCisJKiBjb25maWcvaTM4Ni90LWxpbnV4IChIT1NUX0xJQkdDQzJfQ0ZMQUdTKTogUmVtb3ZlIC1EVVNFX0VMRl9TWU1WRVIuCisKK2djYy9DaGFuZ2Vsb2c6CisKKzIwMTUtMDUtMTEgIFN6YWJvbGNzIE5hZ3kgIDxzemFib2xjcy5uYWd5QGFybS5jb20+CisKKwkqIGNvbmZpZy9pMzg2L2kzODYuYyAoaXg4Nl9leHBhbmRfYnVpbHRpbik6IE1ha2UgX19idWlsdGluX2NwdV9pbml0CisJY2FsbCBfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCBpbnN0ZWFkIG9mIF9fY3B1X2luZGljYXRvcl9pbml0LgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9jb25maWcvaTM4Ni9pMzg2LmMgICAgICAgfCA0ICsrLS0KKyBsaWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jIHwgNiArKystLS0KKyBsaWJnY2MvY29uZmlnL2kzODYvdC1saW51eCAgIHwgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2NvbmZpZy9pMzg2L2kzODYuYyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKK2luZGV4IDFiY2E1YTdlZWE2Li4wOTZjNGJjOGUyNSAxMDA2NDQKKy0tLSBhL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKKysrKyBiL2djYy9jb25maWcvaTM4Ni9pMzg2LmMKK0BAIC0zNjY4NSwxMCArMzY2ODUsMTAgQEAgaXg4Nl9leHBhbmRfYnVpbHRpbiAodHJlZSBleHAsIHJ0eCB0YXJnZXQsIHJ0eCBzdWJ0YXJnZXQsCisgICAgIHsKKyAgICAgY2FzZSBJWDg2X0JVSUxUSU5fQ1BVX0lOSVQ6CisgICAgICAgeworLQkvKiBNYWtlIGl0IGNhbGwgX19jcHVfaW5kaWNhdG9yX2luaXQgaW4gbGliZ2NjLiAqLworKwkvKiBNYWtlIGl0IGNhbGwgX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwgaW4gbGliZ2NjLmEuICovCisgCXRyZWUgY2FsbF9leHByLCBmbmRlY2wsIHR5cGU7CisgICAgICAgICB0eXBlID0gYnVpbGRfZnVuY3Rpb25fdHlwZV9saXN0IChpbnRlZ2VyX3R5cGVfbm9kZSwgTlVMTF9UUkVFKTsgCistCWZuZGVjbCA9IGJ1aWxkX2ZuX2RlY2wgKCJfX2NwdV9pbmRpY2F0b3JfaW5pdCIsIHR5cGUpOworKwlmbmRlY2wgPSBidWlsZF9mbl9kZWNsICgiX19jcHVfaW5kaWNhdG9yX2luaXRfbG9jYWwiLCB0eXBlKTsKKyAJY2FsbF9leHByID0gYnVpbGRfY2FsbF9leHByIChmbmRlY2wsIDApOyAKKyAJcmV0dXJuIGV4cGFuZF9leHByIChjYWxsX2V4cHIsIHRhcmdldCwgbW9kZSwgRVhQQU5EX05PUk1BTCk7CisgICAgICAgfQorZGlmZiAtLWdpdCBhL2xpYmdjYy9jb25maWcvaTM4Ni9jcHVpbmZvLmMgYi9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jCitpbmRleCBkNmNiMmRlNjI2NS4uY2UwNGVmNzgyMDUgMTAwNjQ0CistLS0gYS9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jCisrKysgYi9saWJnY2MvY29uZmlnL2kzODYvY3B1aW5mby5jCitAQCAtNTA0LDcgKzUwNCw3IEBAIF9fY3B1X2luZGljYXRvcl9pbml0ICh2b2lkKQorICAgcmV0dXJuIDA7CisgfQorIAorLSNpZiBkZWZpbmVkIFNIQVJFRCAmJiBkZWZpbmVkIFVTRV9FTEZfU1lNVkVSCistX19hc21fXyAoIi5zeW12ZXIgX19jcHVfaW5kaWNhdG9yX2luaXQsIF9fY3B1X2luZGljYXRvcl9pbml0QEdDQ180LjguMCIpOworLV9fYXNtX18gKCIuc3ltdmVyIF9fY3B1X21vZGVsLCBfX2NwdV9tb2RlbEBHQ0NfNC44LjAiKTsKKysjaWZuZGVmIFNIQVJFRAorK2ludCBfX2NwdV9pbmRpY2F0b3JfaW5pdF9sb2NhbCAodm9pZCkKKysgIF9fYXR0cmlidXRlX18gKCh3ZWFrLCBhbGlhcyAoIl9fY3B1X2luZGljYXRvcl9pbml0IikpKTsKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eCBiL2xpYmdjYy9jb25maWcvaTM4Ni90LWxpbnV4CitpbmRleCA4NTA2YTYzNTc5MC4uNTY0Mjk2Zjc4OGUgMTAwNjQ0CistLS0gYS9saWJnY2MvY29uZmlnL2kzODYvdC1saW51eAorKysrIGIvbGliZ2NjL2NvbmZpZy9pMzg2L3QtbGludXgKK0BAIC0zLDUgKzMsNSBAQAorICMgdC1zbGliZ2NjLWVsZi12ZXIgYW5kIHQtbGludXgKKyBTSExJQl9NQVBGSUxFUyA9IGxpYmdjYy1zdGQudmVyICQoc3JjZGlyKS9jb25maWcvaTM4Ni9saWJnY2MtZ2xpYmMudmVyCisgCistSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTgwIC1EVVNFX0VMRl9TWU1WRVIgJChDRVRfRkxBR1MpCisrSE9TVF9MSUJHQ0MyX0NGTEFHUyArPSAtbWxvbmctZG91YmxlLTgwICQoQ0VUX0ZMQUdTKQorIENSVFNUVUZGX1RfQ0ZMQUdTICs9ICQoQ0VUX0ZMQUdTKQorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMy1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDMzLXN5bmMtZ2NjLXN0ZGRlZi5oLXdpdGgtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMDgwYjA1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzMy1zeW5jLWdjYy1zdGRkZWYuaC13aXRoLW11c2wucGF0Y2gKQEAgLTAsMCArMSw5MSBAQAorRnJvbSAxMjZlMzQyZmIzOWQ3YWY3MGMxZTVhNmRmOGZmYWZjOGRmYzNiZjA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMyBGZWIgMjAxNyAxMjo1NjowMCAtMDgwMAorU3ViamVjdDogW1BBVENIIDMzLzM5XSBzeW5jIGdjYyBzdGRkZWYuaCB3aXRoIG11c2wKKworbXVzbCBkZWZpbmVzIHB0cmRpZmZfdCBzaXplX3QgYW5kIHdjaGFyX3QKK3NvIGRvbnQgZGVmaW5lIHRoZW0gaGVyZSBpZiBtdXNsIGlzIGRlZmluaW5pbmcgdGhlbQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdjYy9naW5jbHVkZS9zdGRkZWYuaCB8IDkgKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oIGIvZ2NjL2dpbmNsdWRlL3N0ZGRlZi5oCitpbmRleCBkYTY5MmUxYzAxYS4uOWEwMGMyNjFhZGIgMTAwNjQ0CistLS0gYS9nY2MvZ2luY2x1ZGUvc3RkZGVmLmgKKysrKyBiL2djYy9naW5jbHVkZS9zdGRkZWYuaAorQEAgLTEyOCw2ICsxMjgsNyBAQCBfVFlQRV93Y2hhcl90OworICNpZm5kZWYgX19faW50X3B0cmRpZmZfdF9oCisgI2lmbmRlZiBfR0NDX1BUUkRJRkZfVAorICNpZm5kZWYgX1BUUkRJRkZfVF9ERUNMQVJFRCAvKiBEcmFnb25GbHkgKi8KKysjaWZuZGVmIF9fREVGSU5FRF9wdHJkaWZmX3QgLyogbXVzbCAqLworICNkZWZpbmUgX1BUUkRJRkZfVAorICNkZWZpbmUgX1RfUFRSRElGRl8KKyAjZGVmaW5lIF9UX1BUUkRJRkYKK0BAIC0xMzcsMTAgKzEzOCwxMiBAQCBfVFlQRV93Y2hhcl90OworICNkZWZpbmUgX19faW50X3B0cmRpZmZfdF9oCisgI2RlZmluZSBfR0NDX1BUUkRJRkZfVAorICNkZWZpbmUgX1BUUkRJRkZfVF9ERUNMQVJFRAorKyNkZWZpbmUgX19ERUZJTkVEX3B0cmRpZmZfdCAvKiBtdXNsICovCisgI2lmbmRlZiBfX1BUUkRJRkZfVFlQRV9fCisgI2RlZmluZSBfX1BUUkRJRkZfVFlQRV9fIGxvbmcgaW50CisgI2VuZGlmCisgdHlwZWRlZiBfX1BUUkRJRkZfVFlQRV9fIHB0cmRpZmZfdDsKKysjZW5kaWYgLyogX19ERUZJTkVEX3B0cmRpZmZfdCAqLworICNlbmRpZiAvKiBfUFRSRElGRl9UX0RFQ0xBUkVEICovCisgI2VuZGlmIC8qIF9HQ0NfUFRSRElGRl9UICovCisgI2VuZGlmIC8qIF9fX2ludF9wdHJkaWZmX3RfaCAqLworQEAgLTE3OCw2ICsxODEsNyBAQCB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OworICNpZm5kZWYgX0dDQ19TSVpFX1QKKyAjaWZuZGVmIF9TSVpFVF8KKyAjaWZuZGVmIF9fc2l6ZV90CisrI2lmbmRlZiBfX0RFRklORURfc2l6ZV90IC8qIG11c2wgKi8KKyAjZGVmaW5lIF9fc2l6ZV90X18JLyogQmVPUyAqLworICNkZWZpbmUgX19TSVpFX1RfXwkvKiBDcmF5IFVuaWNvcy9NayAqLworICNkZWZpbmUgX1NJWkVfVAorQEAgLTE5NCw2ICsxOTgsNyBAQCB0eXBlZGVmIF9fUFRSRElGRl9UWVBFX18gcHRyZGlmZl90OworICNkZWZpbmUgX19faW50X3NpemVfdF9oCisgI2RlZmluZSBfR0NDX1NJWkVfVAorICNkZWZpbmUgX1NJWkVUXworKyNkZWZpbmUgX19ERUZJTkVEX3NpemVfdCAvKiBtdXNsICovCisgI2lmIGRlZmluZWQgKF9fRnJlZUJTRF9fKSBcCisgICB8fCBkZWZpbmVkKF9fRHJhZ29uRmx5X18pIFwKKyAgIHx8IGRlZmluZWQoX19GcmVlQlNEX2tlcm5lbF9fKSBcCitAQCAtMjI4LDYgKzIzMyw3IEBAIHR5cGVkZWYgbG9uZyBzc2l6ZV90OworICNlbmRpZiAvKiBfU0laRV9UICovCisgI2VuZGlmIC8qIF9fU0laRV9UX18gKi8KKyAjZW5kaWYgLyogX19zaXplX3RfXyAqLworKyNlbmRpZiAvKiBfX0RFRklORURfc2l6ZV90ICovCisgI3VuZGVmCV9fbmVlZF9zaXplX3QKKyAjZW5kaWYgLyogX1NURERFRl9IIG9yIF9fbmVlZF9zaXplX3QuICAqLworIAorQEAgLTI1Nyw2ICsyNjMsNyBAQCB0eXBlZGVmIGxvbmcgc3NpemVfdDsKKyAjaWZuZGVmIF9fX2ludF93Y2hhcl90X2gKKyAjaWZuZGVmIF9fSU5UX1dDSEFSX1RfSAorICNpZm5kZWYgX0dDQ19XQ0hBUl9UCisrI2lmbmRlZiBfX0RFRklORURfd2NoYXJfdCAvKiBtdXNsICovCisgI2RlZmluZSBfX3djaGFyX3RfXwkvKiBCZU9TICovCisgI2RlZmluZSBfX1dDSEFSX1RfXwkvKiBDcmF5IFVuaWNvcy9NayAqLworICNkZWZpbmUgX1dDSEFSX1QKK0BAIC0yNzIsNiArMjc5LDcgQEAgdHlwZWRlZiBsb25nIHNzaXplX3Q7CisgI2RlZmluZSBfX0lOVF9XQ0hBUl9UX0gKKyAjZGVmaW5lIF9HQ0NfV0NIQVJfVAorICNkZWZpbmUgX1dDSEFSX1RfREVDTEFSRUQKKysjZGVmaW5lIF9fREVGSU5FRF93Y2hhcl90IC8qIG11c2wgKi8KKyAKKyAvKiBPbiBCU0QvMzg2IDEuMSwgYXQgbGVhc3QsIG1hY2hpbmUvYW5zaS5oIGRlZmluZXMgX0JTRF9XQ0hBUl9UXworICAgIGluc3RlYWQgb2YgX1dDSEFSX1RfLCBhbmQgX0JTRF9SVU5FX1RfICh3aGljaCwgdW5saWtlIHRoZSBvdGhlcgorQEAgLTMzNyw2ICszNDUsNyBAQCB0eXBlZGVmIF9fV0NIQVJfVFlQRV9fIHdjaGFyX3Q7CisgI2VuZGlmCisgI2VuZGlmIC8qIF9fV0NIQVJfVF9fICovCisgI2VuZGlmIC8qIF9fd2NoYXJfdF9fICovCisrI2VuZGlmIC8qIF9fREVGSU5FRF93Y2hhcl90IG11c2wgKi8KKyAjdW5kZWYJX19uZWVkX3djaGFyX3QKKyAjZW5kaWYgLyogX1NURERFRl9IIG9yIF9fbmVlZF93Y2hhcl90LiAgKi8KKyAKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzQtZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1pbi1wcmVjb21waWxlZC1oZWFkZXItZ2VuZXJhdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzQtZml4LXNlZ21lbnRhdGlvbi1mYXVsdC1pbi1wcmVjb21waWxlZC1oZWFkZXItZ2VuZXJhdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYjdjY2IzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzNC1maXgtc2VnbWVudGF0aW9uLWZhdWx0LWluLXByZWNvbXBpbGVkLWhlYWRlci1nZW5lcmF0LnBhdGNoCkBAIC0wLDAgKzEsNjAgQEAKK0Zyb20gZDI2ZmE5ZWRlZGNjYzdlMWVjNDdlYWQ3ZjE4YWZjODA5NzE0ODNhMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+CitEYXRlOiBNb24sIDE5IE1hciAyMDE4IDIyOjMxOjIwIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMzQvMzldIGZpeCBzZWdtZW50YXRpb24gZmF1bHQgaW4gcHJlY29tcGlsZWQgaGVhZGVyIGdlbmVyYXRpb24KKworUHJldmVudCBhIHNlZ21lbnRhdGlvbiBmYXVsdCB3aGljaCBvY2N1cnMgd2hlbiB1c2luZyBpbmNvcnJlY3QKK3N0cnVjdHVyZSB0cnlpbmcgdG8gYWNjZXNzIG5hbWUgb2Ygc29tZSBuYW1lZCBvcGVyYXRvcnMsIHN1Y2ggYXMKK0NQUF9OT1QsIENQUF9BTkQgZXRjLiAidG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nIiBjYW5ub3QgYmUgdXNlZCBpbgordGhvc2UgY2FzZXMsIGFzIGlzIG1heSBub3QgYmUgaW5pdGlhbGl6ZWQgYXQgYWxsLgorCitbWU9DVE8gIzExNzM4XQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSnVybyBCeXN0cmlja3kgPGp1cm8uYnlzdHJpY2t5QGludGVsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBsaWJjcHAvbGV4LmMgfCAyNiArKysrKysrKysrKysrKysrKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAyMSBpbnNlcnRpb25zKCspLCA1IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliY3BwL2xleC5jIGIvbGliY3BwL2xleC5jCitpbmRleCBlZWRmY2JiMzE0Ni4uMTUwNDBhMWIxZjAgMTAwNjQ0CistLS0gYS9saWJjcHAvbGV4LmMKKysrKyBiL2xpYmNwcC9sZXguYworQEAgLTMyODAsMTEgKzMyODAsMjcgQEAgY3BwX3NwZWxsX3Rva2VuIChjcHBfcmVhZGVyICpwZmlsZSwgY29uc3QgY3BwX3Rva2VuICp0b2tlbiwKKyAgICAgc3BlbGxfaWRlbnQ6CisgICAgIGNhc2UgU1BFTExfSURFTlQ6CisgICAgICAgaWYgKGZvcnN0cmluZykKKy0JeworLQkgIG1lbWNweSAoYnVmZmVyLCBOT0RFX05BTUUgKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyksCistCQkgIE5PREVfTEVOICh0b2tlbi0+dmFsLm5vZGUuc3BlbGxpbmcpKTsKKy0JICBidWZmZXIgKz0gTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyk7CistCX0KKysgICAgICAgIHsKKysgICAgICAgICAgaWYgKHRva2VuLT50eXBlID09IENQUF9OQU1FKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgIG1lbWNweSAoYnVmZmVyLCBOT0RFX05BTUUgKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyksCisrICAgICAgICAgICAgICAgICAgICBOT0RFX0xFTiAodG9rZW4tPnZhbC5ub2RlLnNwZWxsaW5nKSk7CisrICAgICAgICAgICAgICBidWZmZXIgKz0gTk9ERV9MRU4gKHRva2VuLT52YWwubm9kZS5zcGVsbGluZyk7CisrICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICAgIC8qIE5BTUVEX09QLCBjYW5ub3QgdXNlIG5vZGUuc3BlbGxpbmcgKi8KKysgICAgICAgICAgaWYgKHRva2VuLT5mbGFncyAmIE5BTUVEX09QKQorKyAgICAgICAgICAgIHsKKysgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnN0ciA9IGNwcF9uYW1lZF9vcGVyYXRvcjJuYW1lICh0b2tlbi0+dHlwZSk7CisrICAgICAgICAgICAgICBpZiAoc3RyKQorKyAgICAgICAgICAgICAgICB7CisrICAgICAgICAgICAgICAgICAgc2l6ZV90IGxlbiA9IHN0cmxlbihzdHIpOworKyAgICAgICAgICAgICAgICAgIG1lbWNweShidWZmZXIsIHN0ciwgbGVuKTsKKysgICAgICAgICAgICAgICAgICBidWZmZXIgKz0gbGVuOworKyAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICB9CisrICAgICAgICB9CisgICAgICAgZWxzZQorIAlidWZmZXIgPSBfY3BwX3NwZWxsX2lkZW50X3VjbnMgKGJ1ZmZlciwgdG9rZW4tPnZhbC5ub2RlLm5vZGUpOworICAgICAgIGJyZWFrOworLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzNS1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzNS1GaXgtZm9yLXRlc3RzdWl0ZS1mYWlsdXJlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVlMTk5ZmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM1LUZpeC1mb3ItdGVzdHN1aXRlLWZhaWx1cmUucGF0Y2gKQEAgLTAsMCArMSwyNTggQEAKK0Zyb20gZmI1YmRmOGY4NTI3MjI4ZDU4N2U4YWY5ZmM3MDBlNTE2NGIzYzE4YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJBR0hVTkFUSCBMT0xVUiA8cmFnaHVuYXRoLmxvbHVyQGtwaXQuY29tPgorRGF0ZTogV2VkLCA2IERlYyAyMDE3IDIyOjUyOjI2IC0wODAwCitTdWJqZWN0OiBbUEFUQ0ggMzUvMzldIEZpeCBmb3IgdGVzdHN1aXRlIGZhaWx1cmUKKworMjAxNy0xMS0xNiAgUmFnaHVuYXRoIExvbHVyICA8cmFnaHVuYXRoLmxvbHVyQGtwaXQuY29tPgorCisJKiBnY2MuZGcvcHI1NjI3NS5jOiBJZiBTU0UgaXMgZGlzYWJsZWQsIGVuc3VyZSB0aGF0CisJIi1tZnBtYXRoIiBpcyBub3Qgc2V0IHRvIHVzZSBTU0UuIFNldCAiLW1mcG1hdGg9Mzg3Ii4KKwkqIGdjYy5kZy9wcjY4MzA2LmM6IExpa2V3aXNlCisJKiBnY2MuZGcvcHI2ODMwNi0yLmM6IExpa2V3aXNlCisJKiBnY2MuZGcvcHI2ODMwNi0zLmM6IExpa2V3aXNlCisJKiBnY2MuZGcvcHI2OTYzNC5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9pc2EtMTQuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jOiBMaWtld2lzZQorCSogZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYzogTGlrZXdpc2UKKwkqIGdjYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmM6IExpa2V3aXNlCisJKiBnY2MudGFyZ2V0L2kzODYvd2Fybi12ZWN0LW9wLTEuYzogTGlrZXdpc2UKKworSWYgLVdhbGwsIC1XZXJyb3IgYXJlIHVzZWQgZHVyaW5nIGNvbXBpbGF0aW9uIHZhcmlvdXMgdGVzdCBjYXNlcyBmYWlsCit0byBjb21waWxlLgorCitJZiBTU0UgaXMgZGlzYWJsZWQsIGJlIHN1cmUgdG8gLW1mcG1hdGg9Mzg3IHRvIHJlc29sdmUgdGhpcy4KKworVGhpcyBwYXRjaCByZW1vdmVzIHRoZSBjaGFuZ2VzIHRvIENoYW5nZWxvZyBmcm9tIHRoZSBvcmlnaW5hbCBwYXRjaC4KK1RoaXMgd2lsbCBoZWxwIHVzIGF2b2lkIGNvbmZsaWN0cy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KKy0tLQorIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTYyNzUuYyAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYyAgICAgICAgICAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYyAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY5NjM0LmMgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvYW1kNjQtYWJpLTEuYyAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYyAgICAgICAgICB8IDEgKworIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYyB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYyAgICAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYyAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jICAgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYyAgICAgICAgICAgICB8IDIgKy0KKyBnY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMgICAgICAgICAgICAgfCAyICstCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmMgICAgICAgICAgIHwgMiArLQorIGdjYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmMgICAgICB8IDIgKy0KKyAxNyBmaWxlcyBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCAxNiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTYyNzUuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNTYyNzUuYworaW5kZXggYjkwMWJiMmIxOTkuLmE0ZjZjOTVlMWExIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI1NjI3NS5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjU2Mjc1LmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCisgLyogeyBkZy1vcHRpb25zICItTzIiIH0gKi8KKy0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UiIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSAqLworKy8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbWZwbWF0aD0zODciIHsgdGFyZ2V0IHsgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gfSAqLworIAorIHR5cGVkZWYgbG9uZyBsb25nIHYydHcgX19hdHRyaWJ1dGVfXyAoKHZlY3Rvcl9zaXplICgyICogc2l6ZW9mIChsb25nIGxvbmcpKSkpOworIAorZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0yLmMKK2luZGV4IDQ2NzJlYmU3OTg3Li4yYTM2OGM0ODRiNiAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMi5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTIuYworQEAgLTEsNiArMSw2IEBACisgLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKyAvKiB7IGRnLW9wdGlvbnMgIi1PMyIgfSAqLworLS8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKysvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXggLW1mcG1hdGg9Mzg3IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLworIAorIHN0cnVjdCB7CisgICAgIGludCB0el9taW51dGVzd2VzdDsKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTMuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYtMy5jCitpbmRleCBmNWE4YzEwMmNmOC4uZGYzMzkwYzY0YzIgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LTMuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi0zLmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCisgLyogeyBkZy1vcHRpb25zICItTzMiIH0gKi8KKy0vKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXgiIHsgdGFyZ2V0IGk/ODYtKi0qIHg4Nl82NC0qLSogfSB9ICovCisrLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tbm8tc3NlIC1tbm8tbW14IC1tZnBtYXRoPTM4NyIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKyAvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1hbHRpdmVjIC1tbm8tdnN4IiB7IHRhcmdldCBwb3dlcnBjKi0qLSogfSB9ICovCisgCisgZXh0ZXJuIHZvaWQgZm4yKCk7CitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2ODMwNi5jCitpbmRleCA1NGU1YjQwZjIyMS4uMDgxMzM4OWUyYzEgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY4MzA2LmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjgzMDYuYworQEAgLTEsNiArMSw2IEBACisgLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKyAvKiB7IGRnLW9wdGlvbnMgIi1PMyIgfSAqLworLS8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSAtbW5vLW1teCIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKysvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1uby1tbXggLW1mcG1hdGg9Mzg3IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLworIAorIGVudW0gcG93ZXJwY19wbWNfdHlwZSB7IFBQQ19QTUNfSUJNIH07Cisgc3RydWN0IHsKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY5NjM0LmMgYi9nY2MvdGVzdHN1aXRlL2djYy5kZy9wcjY5NjM0LmMKK2luZGV4IDYwYTU2MTQ5NDYzLi5iY2MyM2Y5Y2NkNiAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLmRnL3ByNjk2MzQuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MuZGcvcHI2OTYzNC5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgfSAqLworIC8qIHsgZGctb3B0aW9ucyAiLU8yIC1mbm8tZGNlIC1mc2NoZWR1bGUtaW5zbnMgLWZuby10cmVlLXZycCAtZmNvbXBhcmUtZGVidWcgLVduby1wc2FiaSIgfSAqLworLS8qIHsgZGctYWRkaXRpb25hbC1vcHRpb25zICItbW5vLXNzZSIgeyB0YXJnZXQgaT84Ni0qLSogeDg2XzY0LSotKiB9IH0gKi8KKysvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB7IHRhcmdldCBpPzg2LSotKiB4ODZfNjQtKi0qIH0gfSAqLworIC8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IHNjaGVkdWxpbmcgfSAqLworIAorIHR5cGVkZWYgdW5zaWduZWQgc2hvcnQgdTE2OworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2FtZDY0LWFiaS0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jCitpbmRleCA2OWZkZTU3YmYwNi4uN2YxZjFjMDNlZGYgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9hbWQ2NC1hYmktMS5jCitAQCAtMSw1ICsxLDUgQEAKKyAvKiB7IGRnLWRvIGNvbXBpbGUgeyB0YXJnZXQgeyAhIGlhMzIgfSB9IH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIiB9ICovCisrLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KKyAvKiB7IGRnLWFkZGl0aW9uYWwtb3B0aW9ucyAiLW1hYmk9c3lzdiIgeyB0YXJnZXQgKi0qLW1pbmd3KiB9IH0gKi8KKyAKKyBkb3VibGUgZm9vKHZvaWQpIHsgcmV0dXJuIDA7IH0JLyogeyBkZy1lcnJvciAiU1NFIGRpc2FibGVkIiB9ICovCitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvZnVuY3NwZWMtNi5jCitpbmRleCBlYTg5NmI3ZWJmZC4uYmYxNTU2OWI4MjYgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9mdW5jc3BlYy02LmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2Z1bmNzcGVjLTYuYworQEAgLTEsNiArMSw3IEBACisgLyogVGVzdCB3aGV0aGVyIGFsbCBvZiB0aGUgNjQtYml0IGZ1bmN0aW9uIHNwZWNpZmljIG9wdGlvbnMgYXJlIGFjY2VwdGVkCisgICAgd2l0aG91dCBlcnJvci4gICovCisgLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICovCisrLyogeyBkZy1hZGRpdGlvbmFsLW9wdGlvbnMgIi1tZnBtYXRoPTM4NyIgfSAqLworIAorICNpbmNsdWRlICJmdW5jc3BlYy01Ni5pbmMiCisgCitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaW50ZXJydXB0LTM4Ny1lcnItMS5jCitpbmRleCA4NTYxYTNjMjZkNi4uNjM3N2Y4MTQ2NDUgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pbnRlcnJ1cHQtMzg3LWVyci0xLmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2ludGVycnVwdC0zODctZXJyLTEuYworQEAgLTEsNSArMSw1IEBACisgLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbWdlbmVyYWwtcmVncy1vbmx5IC1tbm8tY2xkIC1tbm8taWFtY3UgLW04MDM4NyIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tZ2VuZXJhbC1yZWdzLW9ubHkgLW1uby1jbGQgLW1uby1pYW1jdSAtbTgwMzg3IC1tZnBtYXRoPTM4NyIgfSAqLworIAorIHR5cGVkZWYgdW5zaWduZWQgaW50IHV3b3JkX3QgX19hdHRyaWJ1dGVfXyAoKG1vZGUgKF9fd29yZF9fKSkpOworIAorZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvaXNhLTE0LmMKK2luZGV4IDVkNDllNmU3N2ZlLi4xZGUyZGI5MmJkZCAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L2lzYS0xNC5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9pc2EtMTQuYworQEAgLTEsNSArMSw1IEBACisgLyogeyBkZy1kbyBydW4gfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXg4Ni02NCAtbXNzZTRhIC1tZm1hNCAtbW5vLXNzZSIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLW1hcmNoPXg4Ni02NCAtbXNzZTRhIC1tZm1hNCAtbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KKyAKKyBleHRlcm4gdm9pZCBhYm9ydCAodm9pZCk7CisgCitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI0NDk0OC0yYi5jCitpbmRleCBmYTE3NjliNjJmYi4uZjc5ZmIxMjcyNmYgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjQ0OTQ4LTJiLmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNDQ5NDgtMmIuYworQEAgLTEsNSArMSw1IEBACisgLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1PIC1tbm8tc3NlIC1Xbm8tcHNhYmkgLW10dW5lPWdlbmVyaWMiIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PIC1tbm8tc3NlIC1Xbm8tcHNhYmkgLW10dW5lPWdlbmVyaWMgLW1mcG1hdGg9Mzg3IiB9ICovCisgCisgc3RydWN0IEEKKyB7IAorZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0xLmMKK2luZGV4IDJlODlmZjdkODFkLi42MzM5YmY2YjczNiAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMS5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTEuYworQEAgLTEsNiArMSw2IEBACisgLyogUFIgdGFyZ2V0LzUzNDI1ICovCisgLyogeyBkZy1kbyBjb21waWxlIHsgdGFyZ2V0IHsgISBpYTMyIH0gfSB9ICovCistLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UiIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSAtbWZwbWF0aD0zODciIH0gKi8KKyAvKiB7IGRnLXNraXAtaWYgIm5vIFNTRSB2ZWN0b3IiIHsgeDg2XzY0LSotbWluZ3cqIH0gfSAqLworIAorIHR5cGVkZWYgZG91YmxlIF9fdjJkZiBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICgxNikpKTsKK2RpZmYgLS1naXQgYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTM0MjUtMi5jCitpbmRleCA2MWY2MjgzZGJlOS4uMmM1YTU1ZjBhYzMgMTAwNjQ0CistLS0gYS9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjUzNDI1LTIuYworKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1MzQyNS0yLmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIFBSIHRhcmdldC81MzQyNSAqLworIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLworLS8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIiB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCisgLyogeyBkZy1za2lwLWlmICJubyBTU0UgdmVjdG9yIiB7IHg4Nl82NC0qLW1pbmd3KiB9IH0gKi8KKyAKKyB0eXBlZGVmIGZsb2F0IF9fdjJzZiBfX2F0dHJpYnV0ZV9fICgoX192ZWN0b3Jfc2l6ZV9fICg4KSkpOworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTUyNDcuYworaW5kZXggMjMzNjZkMDkwOWQuLjk4MTBlM2FiYjc2IDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1NTI0Ny5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU1MjQ3LmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAqLworIC8qIHsgZGctcmVxdWlyZS1lZmZlY3RpdmUtdGFyZ2V0IG1heWJlX3gzMiB9ICovCistLyogeyBkZy1vcHRpb25zICItTzIgLW1uby1zc2UgLW1uby1tbXggLW14MzIgLW1hZGRyZXNzLW1vZGU9bG9uZyIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tbm8tbW14IC1teDMyIC1tYWRkcmVzcy1tb2RlPWxvbmcgLW1mcG1hdGg9Mzg3IiB9ICovCisgCisgdHlwZWRlZiB1bnNpZ25lZCBpbnQgdWludDMyX3Q7CisgdHlwZWRlZiB1aW50MzJfdCBFbGYzMl9Xb3JkOworZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNTk2NDQuYworaW5kZXggOTYwMDZiM2UzMzguLjQyODdlNDUzOGJmIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI1OTY0NC5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjU5NjQ0LmMKK0BAIC0xLDYgKzEsNiBAQAorIC8qIFBSIHRhcmdldC81OTY0NCAqLworIC8qIHsgZGctZG8gcnVuIHsgdGFyZ2V0IGxwNjQgfSB9ICovCistLyogeyBkZy1vcHRpb25zICItTzIgLWZmcmVlc3RhbmRpbmcgLW1uby1zc2UgLW1wcmVmZXJyZWQtc3RhY2stYm91bmRhcnk9MyAtbWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyAtbW5vLXJlZC16b25lIiB9ICovCisrLyogeyBkZy1vcHRpb25zICItTzIgLWZmcmVlc3RhbmRpbmcgLW1uby1zc2UgLW1wcmVmZXJyZWQtc3RhY2stYm91bmRhcnk9MyAtbWFjY3VtdWxhdGUtb3V0Z29pbmctYXJncyAtbW5vLXJlZC16b25lIC1tZnBtYXRoPTM4NyIgfSAqLworIAorIC8qIFRoaXMgdGVzdCB1c2VzIF9fYnVpbHRpbl90cmFwICgpIGluc3RlYWQgb2YgZS5nLiBhYm9ydCwKKyAgICBiZWNhdXNlIGR1ZSB0byAtbXByZWZlcnJlZC1zdGFjay1ib3VuZGFyeT0zIGl0IHNob3VsZCBub3QgY2FsbAorZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNjIxMjAuYworaW5kZXggYmZiOGM0NzAzZWIuLmVkMDRjZjE4MWYzIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI2MjEyMC5jCisrKysgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjYyMTIwLmMKK0BAIC0xLDUgKzEsNSBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB9ICovCistLyogeyBkZy1vcHRpb25zICItbW5vLXNzZSIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLW1uby1zc2UgLW1mcG1hdGg9Mzg3IiB9ICovCisgCisgdm9pZCBmb28gKCkKKyB7CitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmMgYi9nY2MvdGVzdHN1aXRlL2djYy50YXJnZXQvaTM4Ni9wcjcwNDY3LTEuYworaW5kZXggNGUxMTJjODhkMDcuLmJjZmIzOTZhNjhkIDEwMDY0NAorLS0tIGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvcHI3MDQ2Ny0xLmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3ByNzA0NjctMS5jCitAQCAtMSw2ICsxLDYgQEAKKyAvKiBQUiBydGwtb3B0aW1pemF0aW9uLzcwNDY3ICovCisgLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1PMiAtbW5vLXNzZSIgfSAqLworKy8qIHsgZGctb3B0aW9ucyAiLU8yIC1tbm8tc3NlIC1tZnBtYXRoPTM4NyIgfSAqLworIAorIHZvaWQgZm9vICh1bnNpZ25lZCBsb25nIGxvbmcgKik7CisgCitkaWZmIC0tZ2l0IGEvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2kzODYvd2Fybi12ZWN0LW9wLTEuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmMKK2luZGV4IDZjZGExNTM0MzExLi4yNmUzN2Y1YjhiYSAxMDA2NDQKKy0tLSBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmMKKysrKyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9pMzg2L3dhcm4tdmVjdC1vcC0xLmMKK0BAIC0xLDUgKzEsNSBAQAorIC8qIHsgZGctZG8gY29tcGlsZSB7IHRhcmdldCB7ICEgaWEzMiB9IH0gfSAgKi8KKy0vKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIC1XdmVjdG9yLW9wZXJhdGlvbi1wZXJmb3JtYW5jZSIgfSAgKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1tbm8tc3NlIC1XdmVjdG9yLW9wZXJhdGlvbi1wZXJmb3JtYW5jZSAtbWZwbWF0aD0zODciIH0gICovCisgI2RlZmluZSB2ZWN0b3IoZWxjb3VudCwgdHlwZSkgIFwKKyBfX2F0dHJpYnV0ZV9fKCh2ZWN0b3Jfc2l6ZSgoZWxjb3VudCkqc2l6ZW9mKHR5cGUpKSkpIHR5cGUKKyAKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzYtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzNi1SZS1pbnRyb2R1Y2Utc3BlLWNvbW1hbmRsaW5lLW9wdGlvbnMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODI1ZTA3MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzYtUmUtaW50cm9kdWNlLXNwZS1jb21tYW5kbGluZS1vcHRpb25zLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gZGMyM2NhYmFjNmE3YjJjYTg1YjAyZDJhNThhODkxNmM5OGYzODJlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDYgSnVuIDIwMTggMTI6MTA6MjIgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzNi8zOV0gUmUtaW50cm9kdWNlIHNwZSBjb21tYW5kbGluZSBvcHRpb25zCisKK1RoaXMgc2hvdWxkIGVuc3VyZSB0aGF0IHdlIGtlZXAgYWNjZXB0aW5nCitzcGUgb3B0aW9ucworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1NQRSBwb3J0IGlzIHJlbW92ZWQgZnJvbSByczYwMCBwb3J0XQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdCB8IDEyICsrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nY2MvY29uZmlnL3JzNjAwMC9yczYwMDAub3B0IGIvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdAoraW5kZXggZjRiNWM5MWUxMWYuLjY5ODY5MzUwZmNlIDEwMDY0NAorLS0tIGEvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdAorKysrIGIvZ2NjL2NvbmZpZy9yczYwMDAvcnM2MDAwLm9wdAorQEAgLTM0NSw2ICszNDUsMTggQEAgbWRlYnVnPQorIFRhcmdldCBSZWplY3ROZWdhdGl2ZSBKb2luZWQKKyAtbWRlYnVnPQlFbmFibGUgZGVidWcgb3V0cHV0LgorIAorK21zcGUKKytUYXJnZXQgVmFyKHJzNjAwMF9zcGUpIFNhdmUKKytHZW5lcmF0ZSBTUEUgU0lNRCBpbnN0cnVjdGlvbnMgb24gRTUwMC4KKysKKyttYWJpPXNwZQorK1RhcmdldCBSZWplY3ROZWdhdGl2ZSBWYXIocnM2MDAwX3NwZV9hYmkpIFNhdmUKKytVc2UgdGhlIFNQRSBBQkkgZXh0ZW5zaW9ucy4KKysKKyttYWJpPW5vLXNwZQorK1RhcmdldCBSZWplY3ROZWdhdGl2ZSBWYXIocnM2MDAwX3NwZV9hYmksIDApCisrRG8gbm90IHVzZSB0aGUgU1BFIEFCSSBleHRlbnNpb25zLgorKworIG1hYmk9YWx0aXZlYworIFRhcmdldCBSZWplY3ROZWdhdGl2ZSBWYXIocnM2MDAwX2FsdGl2ZWNfYWJpKSBTYXZlCisgVXNlIHRoZSBBbHRpVmVjIEFCSSBleHRlbnNpb25zLgorLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzNy1DVkUtMjAxOS0xNDI1MC1DaGVjay16ZXJvLXZhbHVlLWluLXNpbXBsZV9vYmplY3RfZWxmLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy05LjMvMDAzNy1DVkUtMjAxOS0xNDI1MC1DaGVjay16ZXJvLXZhbHVlLWluLXNpbXBsZV9vYmplY3RfZWxmLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyNjhhNGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM3LUNWRS0yMDE5LTE0MjUwLUNoZWNrLXplcm8tdmFsdWUtaW4tc2ltcGxlX29iamVjdF9lbGYucGF0Y2gKQEAgLTAsMCArMSw0OCBAQAorRnJvbSBhYzRhZjU4M2JkNTlmNjYzMTY3MWFkNGFiZjk4NTc5OWNlNGE1M2Q5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogcmd1ZW50aCA8cmd1ZW50aEAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQ+CitEYXRlOiBUaHUsIDI1IEp1bCAyMDE5IDEwOjQ2OjU0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0ggMzcvMzldIENWRS0yMDE5LTE0MjUwOiBDaGVjayB6ZXJvIHZhbHVlIGluCisgc2ltcGxlX29iamVjdF9lbGZfbWF0Y2gKKworMjAxOS0wNy0yNSBSaWNoYXJkIEJpZW5lciA8cmd1ZW50aGVyQHN1c2UuZGU+CisKKwlQUiBsdG8vOTA5MjQKKwlCYWNrcG9ydCBmcm9tIG1haW5saW5lCisJMjAxOS0wNy0xMiAgUmVuIEtpbXVyYSAgPHJreDEyMDlkZXZAZ21haWwuY29tPgorCisJKiBzaW1wbGUtb2JqZWN0LWVsZi5jIChzaW1wbGVfb2JqZWN0X2VsZl9tYXRjaCk6IENoZWNrIHplcm8gdmFsdWUKKwlzaHN0cm5keC4KKworZ2l0LXN2bi1pZDogc3ZuK3NzaDovL2djYy5nbnUub3JnL3N2bi9nY2MvYnJhbmNoZXMvZ2NjLTktYnJhbmNoQDI3Mzc5MyAxMzhiYzc1ZC0wZDA0LTA0MTAtOTYxZi04MmVlNzJiMDU0YTQKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQWZmZWN0ZXM6IDwgIDkuMgorQ1ZFOiBDVkUtMjAxOS0xNDI1MAorRHJvcHBlZCBjaGFuZ2Vsb2cKK1NpZ25lZC1vZmYtYnk6IEFybWluIEt1c3RlciA8QWt1c3RyZUBtdmlzdGEuY29tPgorLS0tCisgbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMgfCA4ICsrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMgYi9saWJpYmVydHkvc2ltcGxlLW9iamVjdC1lbGYuYworaW5kZXggM2Q0OWYzMzk2MzEuLmMwMGNlYmRiNmM3IDEwMDY0NAorLS0tIGEvbGliaWJlcnR5L3NpbXBsZS1vYmplY3QtZWxmLmMKKysrKyBiL2xpYmliZXJ0eS9zaW1wbGUtb2JqZWN0LWVsZi5jCitAQCAtNTU3LDYgKzU1NywxNCBAQCBzaW1wbGVfb2JqZWN0X2VsZl9tYXRjaCAodW5zaWduZWQgY2hhciBoZWFkZXJbU0lNUExFX09CSkVDVF9NQVRDSF9IRUFERVJfTEVOXSwKKyAgICAgICByZXR1cm4gTlVMTDsKKyAgICAgfQorIAorKyAgaWYgKGVvci0+c2hzdHJuZHggPT0gMCkKKysgICAgeworKyAgICAgICplcnJtc2cgPSAiaW52YWxpZCBFTEYgc2hzdHJuZHggPT0gMCI7CisrICAgICAgKmVyciA9IDA7CisrICAgICAgWERFTEVURSAoZW9yKTsKKysgICAgICByZXR1cm4gTlVMTDsKKysgICAgfQorKworICAgcmV0dXJuICh2b2lkICopIGVvcjsKKyB9CisgCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM4LWdlbnR5cGVzLWdlbm1vZGVzLURvLW5vdC11c2UtX19MSU5FX18tZm9yLW1haW50YWluaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM4LWdlbnR5cGVzLWdlbm1vZGVzLURvLW5vdC11c2UtX19MSU5FX18tZm9yLW1haW50YWluaW4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc5ZmMwMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzgtZ2VudHlwZXMtZ2VubW9kZXMtRG8tbm90LXVzZS1fX0xJTkVfXy1mb3ItbWFpbnRhaW5pbi5wYXRjaApAQCAtMCwwICsxLDE4NSBAQAorRnJvbSAwNzVlMDkyOWUwNDkxMzUzODM5MTA1MmMzMjE3OGI2YTE0ZWYwYWUzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMTIgTWFyIDIwMjAgMTQ6NDE6NDAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSCAzOC8zOV0gZ2VudHlwZXMvZ2VubW9kZXM6IERvIG5vdCB1c2UgX19MSU5FX18gZm9yIG1haW50YWluaW5nCisgcmVwcm9kdWNpYmlsaXR5CisKK0luc2VydGluZyBsaW5lIG51bWJlcnMgaW50byBnZW5lcmF0ZWQgY29kZSBtZWFucyBpdHMgbm90IGFsd2F5cyByZXByb2R1Y2libGUgd3RoCitkaWZmZXJpbmcgdmVyc2lvbnMgb2YgaG9zdCBnY2MuIFZvaWQgdGhlIGlzc3VlIGJ5IG5vdCBhZGRpbmcgdGhlc2UuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgUmVwcm9kdWNpYmlsaXR5IHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnY2MvZ2VuZ3R5cGUuYyB8ICA2ICsrKy0tLQorIGdjYy9nZW5tb2Rlcy5jIHwgMzIgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2NjL2dlbmd0eXBlLmMgYi9nY2MvZ2VuZ3R5cGUuYworaW5kZXggNTMzMTczMzdjZjguLmJiYjI2MTUxNjcxIDEwMDY0NAorLS0tIGEvZ2NjL2dlbmd0eXBlLmMKKysrKyBiL2djYy9nZW5ndHlwZS5jCitAQCAtOTkxLDcgKzk5MSw3IEBAIGNyZWF0ZV9maWVsZF9hdCAocGFpcl9wIG5leHQsIHR5cGVfcCB0eXBlLCBjb25zdCBjaGFyICpuYW1lLCBvcHRpb25zX3Agb3B0LAorIC8qIENyZWF0ZSBhIGZha2UgZmllbGQgd2l0aCB0aGUgZ2l2ZW4gdHlwZSBhbmQgbmFtZS4gIE5FWFQgaXMgdGhlIG5leHQKKyAgICBmaWVsZCBpbiB0aGUgY2hhaW4uICAqLworICNkZWZpbmUgY3JlYXRlX2ZpZWxkKG5leHQsdHlwZSxuYW1lKSBcCistICAgIGNyZWF0ZV9maWVsZF9hbGwgKG5leHQsdHlwZSxuYW1lLCAwLCB0aGlzX2ZpbGUsIF9fTElORV9fKQorKyAgICBjcmVhdGVfZmllbGRfYWxsIChuZXh0LHR5cGUsbmFtZSwgMCwgdGhpc19maWxlLCAwKQorIAorIC8qIExpa2UgY3JlYXRlX2ZpZWxkLCBidXQgdGhlIGZpZWxkIGlzIG9ubHkgdmFsaWQgd2hlbiBjb25kaXRpb24gQ09ORAorICAgIGlzIHRydWUuICAqLworQEAgLTEwMjQsNyArMTAyNCw3IEBAIGNyZWF0ZV9vcHRpb25hbF9maWVsZF8gKHBhaXJfcCBuZXh0LCB0eXBlX3AgdHlwZSwgY29uc3QgY2hhciAqbmFtZSwKKyB9CisgCisgI2RlZmluZSBjcmVhdGVfb3B0aW9uYWxfZmllbGQobmV4dCx0eXBlLG5hbWUsY29uZCkJXAorLSAgICAgICBjcmVhdGVfb3B0aW9uYWxfZmllbGRfKG5leHQsdHlwZSxuYW1lLGNvbmQsX19MSU5FX18pCisrICAgICAgIGNyZWF0ZV9vcHRpb25hbF9maWVsZF8obmV4dCx0eXBlLG5hbWUsY29uZCwwKQorIAorIC8qIFJldmVyc2UgYSBsaW5rZWQgbGlzdCBvZiAnc3RydWN0IHBhaXIncyBpbiBwbGFjZS4gICovCisgcGFpcl9wCitAQCAtNTE4Niw3ICs1MTg2LDcgQEAgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorICAgICAgIC8qIFRoZXNlIHR5cGVzIGFyZSBzZXQgdXAgd2l0aCAjZGVmaW5lIG9yIGVsc2Ugb3V0c2lkZSBvZiB3aGVyZQorICAgICAgICAgIHdlIGNhbiBzZWUgdGhlbS4gIFdlIHNob3VsZCBpbml0aWFsaXplIHRoZW0gYmVmb3JlIGNhbGxpbmcKKyAgICAgICAgICByZWFkX2lucHV0X2xpc3QuICAqLworLSNkZWZpbmUgUE9TX0hFUkUoQ2FsbCkgZG8geyBwb3MuZmlsZSA9IHRoaXNfZmlsZTsgcG9zLmxpbmUgPSBfX0xJTkVfXzsgXAorKyNkZWZpbmUgUE9TX0hFUkUoQ2FsbCkgZG8geyBwb3MuZmlsZSA9IHRoaXNfZmlsZTsgcG9zLmxpbmUgPSAwOyBcCisgCUNhbGw7fSB3aGlsZSAoMCkKKyAgICAgICBQT1NfSEVSRSAoZG9fc2NhbGFyX3R5cGVkZWYgKCJDVU1VTEFUSVZFX0FSR1MiLCAmcG9zKSk7CisgICAgICAgUE9TX0hFUkUgKGRvX3NjYWxhcl90eXBlZGVmICgiUkVBTF9WQUxVRV9UWVBFIiwgJnBvcykpOworZGlmZiAtLWdpdCBhL2djYy9nZW5tb2Rlcy5jIGIvZ2NjL2dlbm1vZGVzLmMKK2luZGV4IGYzM2VlZmEyNDk0Li4wN2JlZjllZWJlMiAxMDA2NDQKKy0tLSBhL2djYy9nZW5tb2Rlcy5jCisrKysgYi9nY2MvZ2VubW9kZXMuYworQEAgLTQyOSw3ICs0MjksNyBAQCBjb21wbGV0ZV9hbGxfbW9kZXMgKHZvaWQpCisgfQorIAorIC8qIEZvciBlYWNoIG1vZGUgaW4gY2xhc3MgQ0xBU1MsIGNvbnN0cnVjdCBhIGNvcnJlc3BvbmRpbmcgY29tcGxleCBtb2RlLiAgKi8KKy0jZGVmaW5lIENPTVBMRVhfTU9ERVMoQykgbWFrZV9jb21wbGV4X21vZGVzIChNT0RFXyMjQywgX19GSUxFX18sIF9fTElORV9fKQorKyNkZWZpbmUgQ09NUExFWF9NT0RFUyhDKSBtYWtlX2NvbXBsZXhfbW9kZXMgKE1PREVfIyNDLCBfX0ZJTEVfXywgMCkKKyBzdGF0aWMgdm9pZAorIG1ha2VfY29tcGxleF9tb2RlcyAoZW51bSBtb2RlX2NsYXNzIGNsLAorIAkJICAgIGNvbnN0IGNoYXIgKmZpbGUsIHVuc2lnbmVkIGludCBsaW5lKQorQEAgLTQ4Nyw3ICs0ODcsNyBAQCBtYWtlX2NvbXBsZXhfbW9kZXMgKGVudW0gbW9kZV9jbGFzcyBjbCwKKyAvKiBGb3IgYWxsIG1vZGVzIGluIGNsYXNzIENMLCBjb25zdHJ1Y3QgdmVjdG9yIG1vZGVzIG9mIHdpZHRoCisgICAgV0lEVEgsIGhhdmluZyBhcyBtYW55IGNvbXBvbmVudHMgYXMgbmVjZXNzYXJ5LiAgKi8KKyAjZGVmaW5lIFZFQ1RPUl9NT0RFU19XSVRIX1BSRUZJWChQUkVGSVgsIEMsIFcpIFwKKy0gIG1ha2VfdmVjdG9yX21vZGVzIChNT0RFXyMjQywgI1BSRUZJWCwgVywgX19GSUxFX18sIF9fTElORV9fKQorKyAgbWFrZV92ZWN0b3JfbW9kZXMgKE1PREVfIyNDLCAjUFJFRklYLCBXLCBfX0ZJTEVfXywgMCkKKyAjZGVmaW5lIFZFQ1RPUl9NT0RFUyhDLCBXKSBWRUNUT1JfTU9ERVNfV0lUSF9QUkVGSVggKFYsIEMsIFcpCisgc3RhdGljIHZvaWQgQVRUUklCVVRFX1VOVVNFRAorIG1ha2VfdmVjdG9yX21vZGVzIChlbnVtIG1vZGVfY2xhc3MgY2wsIGNvbnN0IGNoYXIgKnByZWZpeCwgdW5zaWduZWQgaW50IHdpZHRoLAorQEAgLTUzOCw3ICs1MzgsNyBAQCBtYWtlX3ZlY3Rvcl9tb2RlcyAoZW51bSBtb2RlX2NsYXNzIGNsLCBjb25zdCBjaGFyICpwcmVmaXgsIHVuc2lnbmVkIGludCB3aWR0aCwKKyAvKiBDcmVhdGUgYSB2ZWN0b3Igb2YgYm9vbGVhbnMgY2FsbGVkIE5BTUUgd2l0aCBDT1VOVCBlbGVtZW50cyBhbmQKKyAgICBCWVRFU0laRSBieXRlcyBpbiB0b3RhbC4gICovCisgI2RlZmluZSBWRUNUT1JfQk9PTF9NT0RFKE5BTUUsIENPVU5ULCBCWVRFU0laRSkgXAorLSAgbWFrZV92ZWN0b3JfYm9vbF9tb2RlICgjTkFNRSwgQ09VTlQsIEJZVEVTSVpFLCBfX0ZJTEVfXywgX19MSU5FX18pCisrICBtYWtlX3ZlY3Rvcl9ib29sX21vZGUgKCNOQU1FLCBDT1VOVCwgQllURVNJWkUsIF9fRklMRV9fLCAwKQorIHN0YXRpYyB2b2lkIEFUVFJJQlVURV9VTlVTRUQKKyBtYWtlX3ZlY3Rvcl9ib29sX21vZGUgKGNvbnN0IGNoYXIgKm5hbWUsIHVuc2lnbmVkIGludCBjb3VudCwKKyAJCSAgICAgICB1bnNpZ25lZCBpbnQgYnl0ZXNpemUsIGNvbnN0IGNoYXIgKmZpbGUsCitAQCAtNTYwLDcgKzU2MCw3IEBAIG1ha2VfdmVjdG9yX2Jvb2xfbW9kZSAoY29uc3QgY2hhciAqbmFtZSwgdW5zaWduZWQgaW50IGNvdW50LAorIC8qIElucHV0LiAgKi8KKyAKKyAjZGVmaW5lIF9TUEVDSUFMX01PREUoQywgTikgXAorLSAgbWFrZV9zcGVjaWFsX21vZGUgKE1PREVfIyNDLCAjTiwgX19GSUxFX18sIF9fTElORV9fKQorKyAgbWFrZV9zcGVjaWFsX21vZGUgKE1PREVfIyNDLCAjTiwgX19GSUxFX18sIDApCisgI2RlZmluZSBSQU5ET01fTU9ERShOKSBfU1BFQ0lBTF9NT0RFIChSQU5ET00sIE4pCisgI2RlZmluZSBDQ19NT0RFKE4pIF9TUEVDSUFMX01PREUgKENDLCBOKQorIAorQEAgLTU3Myw3ICs1NzMsNyBAQCBtYWtlX3NwZWNpYWxfbW9kZSAoZW51bSBtb2RlX2NsYXNzIGNsLCBjb25zdCBjaGFyICpuYW1lLAorIAorICNkZWZpbmUgSU5UX01PREUoTiwgWSkgRlJBQ1RJT05BTF9JTlRfTU9ERSAoTiwgLTFVLCBZKQorICNkZWZpbmUgRlJBQ1RJT05BTF9JTlRfTU9ERShOLCBCLCBZKSBcCistICBtYWtlX2ludF9tb2RlICgjTiwgQiwgWSwgX19GSUxFX18sIF9fTElORV9fKQorKyAgbWFrZV9pbnRfbW9kZSAoI04sIEIsIFksIF9fRklMRV9fLCAwKQorIAorIHN0YXRpYyB2b2lkCisgbWFrZV9pbnRfbW9kZSAoY29uc3QgY2hhciAqbmFtZSwKK0BAIC01ODYsMTYgKzU4NiwxNiBAQCBtYWtlX2ludF9tb2RlIChjb25zdCBjaGFyICpuYW1lLAorIH0KKyAKKyAjZGVmaW5lIEZSQUNUX01PREUoTiwgWSwgRikgXAorLQltYWtlX2ZpeGVkX3BvaW50X21vZGUgKE1PREVfRlJBQ1QsICNOLCBZLCAwLCBGLCBfX0ZJTEVfXywgX19MSU5FX18pCisrCW1ha2VfZml4ZWRfcG9pbnRfbW9kZSAoTU9ERV9GUkFDVCwgI04sIFksIDAsIEYsIF9fRklMRV9fLCAwKQorIAorICNkZWZpbmUgVUZSQUNUX01PREUoTiwgWSwgRikgXAorLQltYWtlX2ZpeGVkX3BvaW50X21vZGUgKE1PREVfVUZSQUNULCAjTiwgWSwgMCwgRiwgX19GSUxFX18sIF9fTElORV9fKQorKwltYWtlX2ZpeGVkX3BvaW50X21vZGUgKE1PREVfVUZSQUNULCAjTiwgWSwgMCwgRiwgX19GSUxFX18sIDApCisgCisgI2RlZmluZSBBQ0NVTV9NT0RFKE4sIFksIEksIEYpIFwKKy0JbWFrZV9maXhlZF9wb2ludF9tb2RlIChNT0RFX0FDQ1VNLCAjTiwgWSwgSSwgRiwgX19GSUxFX18sIF9fTElORV9fKQorKwltYWtlX2ZpeGVkX3BvaW50X21vZGUgKE1PREVfQUNDVU0sICNOLCBZLCBJLCBGLCBfX0ZJTEVfXywgMCkKKyAKKyAjZGVmaW5lIFVBQ0NVTV9NT0RFKE4sIFksIEksIEYpIFwKKy0JbWFrZV9maXhlZF9wb2ludF9tb2RlIChNT0RFX1VBQ0NVTSwgI04sIFksIEksIEYsIF9fRklMRV9fLCBfX0xJTkVfXykKKysJbWFrZV9maXhlZF9wb2ludF9tb2RlIChNT0RFX1VBQ0NVTSwgI04sIFksIEksIEYsIF9fRklMRV9fLCAwKQorIAorIC8qIENyZWF0ZSBhIGZpeGVkLXBvaW50IG1vZGUgYnkgc2V0dGluZyBDTCwgTkFNRSwgQllURVNJWkUsIElCSVQsIEZCSVQsCisgICAgRklMRSwgYW5kIExJTkUuICAqLworQEAgLTYxNiw3ICs2MTYsNyBAQCBtYWtlX2ZpeGVkX3BvaW50X21vZGUgKGVudW0gbW9kZV9jbGFzcyBjbCwKKyAKKyAjZGVmaW5lIEZMT0FUX01PREUoTiwgWSwgRikgICAgICAgICAgICAgRlJBQ1RJT05BTF9GTE9BVF9NT0RFIChOLCAtMVUsIFksIEYpCisgI2RlZmluZSBGUkFDVElPTkFMX0ZMT0FUX01PREUoTiwgQiwgWSwgRikgXAorLSAgbWFrZV9mbG9hdF9tb2RlICgjTiwgQiwgWSwgI0YsIF9fRklMRV9fLCBfX0xJTkVfXykKKysgIG1ha2VfZmxvYXRfbW9kZSAoI04sIEIsIFksICNGLCBfX0ZJTEVfXywgMCkKKyAKKyBzdGF0aWMgdm9pZAorIG1ha2VfZmxvYXRfbW9kZSAoY29uc3QgY2hhciAqbmFtZSwKK0BAIC02MzMsNyArNjMzLDcgQEAgbWFrZV9mbG9hdF9tb2RlIChjb25zdCBjaGFyICpuYW1lLAorICNkZWZpbmUgREVDSU1BTF9GTE9BVF9NT0RFKE4sIFksIEYpCVwKKyAJRlJBQ1RJT05BTF9ERUNJTUFMX0ZMT0FUX01PREUgKE4sIC0xVSwgWSwgRikKKyAjZGVmaW5lIEZSQUNUSU9OQUxfREVDSU1BTF9GTE9BVF9NT0RFKE4sIEIsIFksIEYpCVwKKy0gIG1ha2VfZGVjaW1hbF9mbG9hdF9tb2RlICgjTiwgQiwgWSwgI0YsIF9fRklMRV9fLCBfX0xJTkVfXykKKysgIG1ha2VfZGVjaW1hbF9mbG9hdF9tb2RlICgjTiwgQiwgWSwgI0YsIF9fRklMRV9fLCAwKQorIAorIHN0YXRpYyB2b2lkCisgbWFrZV9kZWNpbWFsX2Zsb2F0X21vZGUgKGNvbnN0IGNoYXIgKm5hbWUsCitAQCAtNjQ4LDcgKzY0OCw3IEBAIG1ha2VfZGVjaW1hbF9mbG9hdF9tb2RlIChjb25zdCBjaGFyICpuYW1lLAorIH0KKyAKKyAjZGVmaW5lIFJFU0VUX0ZMT0FUX0ZPUk1BVChOLCBGKSBcCistICByZXNldF9mbG9hdF9mb3JtYXQgKCNOLCAjRiwgX19GSUxFX18sIF9fTElORV9fKQorKyAgcmVzZXRfZmxvYXRfZm9ybWF0ICgjTiwgI0YsIF9fRklMRV9fLCAwKQorIHN0YXRpYyB2b2lkIEFUVFJJQlVURV9VTlVTRUQKKyByZXNldF9mbG9hdF9mb3JtYXQgKGNvbnN0IGNoYXIgKm5hbWUsIGNvbnN0IGNoYXIgKmZvcm1hdCwKKyAJCSAgICBjb25zdCBjaGFyICpmaWxlLCB1bnNpZ25lZCBpbnQgbGluZSkKK0BAIC02NjksNyArNjY5LDcgQEAgcmVzZXRfZmxvYXRfZm9ybWF0IChjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpmb3JtYXQsCisgCisgLyogX19pbnROIHN1cHBvcnQuICAqLworICNkZWZpbmUgSU5UX04oTSxQUkVDKQkJCQlcCistICBtYWtlX2ludF9uICgjTSwgUFJFQywgX19GSUxFX18sIF9fTElORV9fKQorKyAgbWFrZV9pbnRfbiAoI00sIFBSRUMsIF9fRklMRV9fLCAwKQorIHN0YXRpYyB2b2lkIEFUVFJJQlVURV9VTlVTRUQKKyBtYWtlX2ludF9uIChjb25zdCBjaGFyICptLCBpbnQgYml0c2l6ZSwKKyAgICAgICAgICAgICBjb25zdCBjaGFyICpmaWxlLCB1bnNpZ25lZCBpbnQgbGluZSkKK0BAIC02OTgsNyArNjk4LDcgQEAgbWFrZV9pbnRfbiAoY29uc3QgY2hhciAqbSwgaW50IGJpdHNpemUsCisgLyogUGFydGlhbCBpbnRlZ2VyIG1vZGVzIGFyZSBzcGVjaWZpZWQgYnkgcmVsYXRpb24gdG8gYSBmdWxsIGludGVnZXIKKyAgICBtb2RlLiAgKi8KKyAjZGVmaW5lIFBBUlRJQUxfSU5UX01PREUoTSxQUkVDLE5BTUUpCQkJCVwKKy0gIG1ha2VfcGFydGlhbF9pbnRlZ2VyX21vZGUgKCNNLCAjTkFNRSwgUFJFQywgX19GSUxFX18sIF9fTElORV9fKQorKyAgbWFrZV9wYXJ0aWFsX2ludGVnZXJfbW9kZSAoI00sICNOQU1FLCBQUkVDLCBfX0ZJTEVfXywgMCkKKyBzdGF0aWMgdm9pZCBBVFRSSUJVVEVfVU5VU0VECisgbWFrZV9wYXJ0aWFsX2ludGVnZXJfbW9kZSAoY29uc3QgY2hhciAqYmFzZSwgY29uc3QgY2hhciAqbmFtZSwKKyAJCQkgICB1bnNpZ25lZCBpbnQgcHJlY2lzaW9uLAorQEAgLTcyNSw3ICs3MjUsNyBAQCBtYWtlX3BhcnRpYWxfaW50ZWdlcl9tb2RlIChjb25zdCBjaGFyICpiYXNlLCBjb25zdCBjaGFyICpuYW1lLAorIC8qIEEgc2luZ2xlIHZlY3RvciBtb2RlIGNhbiBiZSBzcGVjaWZpZWQgYnkgbmFtaW5nIGl0cyBjb21wb25lbnQKKyAgICBtb2RlIGFuZCB0aGUgbnVtYmVyIG9mIGNvbXBvbmVudHMuICAqLworICNkZWZpbmUgVkVDVE9SX01PREUoQywgTSwgTikgXAorLSAgbWFrZV92ZWN0b3JfbW9kZSAoTU9ERV8jI0MsICNNLCBOLCBfX0ZJTEVfXywgX19MSU5FX18pOworKyAgbWFrZV92ZWN0b3JfbW9kZSAoTU9ERV8jI0MsICNNLCBOLCBfX0ZJTEVfXywgMCk7Cisgc3RhdGljIHZvaWQgQVRUUklCVVRFX1VOVVNFRAorIG1ha2VfdmVjdG9yX21vZGUgKGVudW0gbW9kZV9jbGFzcyBiY2xhc3MsCisgCQkgIGNvbnN0IGNoYXIgKmJhc2UsCitAQCAtNzY4LDcgKzc2OCw3IEBAIG1ha2VfdmVjdG9yX21vZGUgKGVudW0gbW9kZV9jbGFzcyBiY2xhc3MsCisgCisgLyogQWRqdXN0YWJpbGl0eS4gICovCisgI2RlZmluZSBfQUREX0FESlVTVChBLCBNLCBYLCBDMSwgQzIpIFwKKy0gIG5ld19hZGp1c3QgKCNNLCAmYWRqXyMjQSwgI0EsICNYLCBNT0RFXyMjQzEsIE1PREVfIyNDMiwgX19GSUxFX18sIF9fTElORV9fKQorKyAgbmV3X2FkanVzdCAoI00sICZhZGpfIyNBLCAjQSwgI1gsIE1PREVfIyNDMSwgTU9ERV8jI0MyLCBfX0ZJTEVfXywgMCkKKyAKKyAjZGVmaW5lIEFESlVTVF9OVU5JVFMoTSwgWCkgICAgX0FERF9BREpVU1QgKG51bml0cywgTSwgWCwgUkFORE9NLCBSQU5ET00pCisgI2RlZmluZSBBREpVU1RfQllURVNJWkUoTSwgWCkgIF9BRERfQURKVVNUIChieXRlc2l6ZSwgTSwgWCwgUkFORE9NLCBSQU5ET00pCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM5LXByb2Nlc3NfYWx0X29wZXJhbmRzLURvbi10LW1hdGNoLXVzZXItZGVmaW5lZC1yZWdzLW8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLTkuMy8wMDM5LXByb2Nlc3NfYWx0X29wZXJhbmRzLURvbi10LW1hdGNoLXVzZXItZGVmaW5lZC1yZWdzLW8ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjY5MTE0ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtOS4zLzAwMzktcHJvY2Vzc19hbHRfb3BlcmFuZHMtRG9uLXQtbWF0Y2gtdXNlci1kZWZpbmVkLXJlZ3Mtby5wYXRjaApAQCAtMCwwICsxLDEwMCBAQAorRnJvbSBlNzViY2MyZWM0ZjFlN2UwODFjZTE4NzEzZjBhMjU5MTNiYTE1MzQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVmxhZGltaXIgTWFrYXJvdiA8dm1ha2Fyb3ZAcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMTAgSnVsIDIwMTkgMTY6MDc6MTAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSCAzOS8zOV0gcHJvY2Vzc19hbHRfb3BlcmFuZHM6IERvbid0IG1hdGNoIHVzZXIgZGVmaW5lZCByZWdzCisgb25seSBpZiB0aGV5IGFyZSBlYXJseSBjbG9iYmVycworCitQUiB0YXJnZXQvOTExMDIgKGFhcmNoNjQgSUNFIG9uIExpbnV4IGtlcm5lbCB3aXRoIC1PcyBzdGFydGluZyB3aXRoIHIyNzAyNjYpCisKKzIwMTktMDctMTAgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgorCisJUFIgdGFyZ2V0LzkxMTAyCisJKiBscmEtY29uc3RyYWludHMuYyAocHJvY2Vzc19hbHRfb3BlcmFuZHMpOiBEb24ndCBtYXRjaCB1c2VyCisJZGVmaW5lZCByZWdzIG9ubHkgaWYgdGhleSBhcmUgZWFybHkgY2xvYmJlcnMuCisKKzIwMTktMDctMTAgIFZsYWRpbWlyIE1ha2Fyb3YgIDx2bWFrYXJvdkByZWRoYXQuY29tPgorCisJUFIgdGFyZ2V0LzkxMTAyCisJKiBnY2MudGFyZ2V0L2FhcmNoNjQvcHI5MTEwMi5jOiBOZXcgdGVzdC4KKworRnJvbS1TVk46IHIyNzMzNTcKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9nY2MtbWlycm9yL2djYy9jb21taXQvNjEzY2FlZDJmZWI5Y2ZjODE1ODMwODY3MGI1OWRmM2QwMzFlYzYyOV0KK1t0YWtvbmRyYTogZHJvcHBlZCBjb25mbGljdGluZyBDaGFuZ2VMb2cgY2hhbmdlc10KK1NpZ25lZC1vZmYtYnk6IFRhcmFzIEtvbmRyYXRpdWsgPHRha29uZHJhQGNpc2NvLmNvbT4KKy0tLQorIGdjYy9scmEtY29uc3RyYWludHMuYyAgICAgICAgICAgICAgICAgICAgICB8IDE3ICsrKysrKysrKystLS0tCisgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvcHI5MTEwMi5jIHwgMjYgKysrKysrKysrKysrKysrKysrKysrKworIDIgZmlsZXMgY2hhbmdlZCwgMzkgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvcHI5MTEwMi5jCisKK2RpZmYgLS1naXQgYS9nY2MvbHJhLWNvbnN0cmFpbnRzLmMgYi9nY2MvbHJhLWNvbnN0cmFpbnRzLmMKK2luZGV4IGNmMzNkYTgwMTNlLi42MzgyZGJmODUyYiAxMDA2NDQKKy0tLSBhL2djYy9scmEtY29uc3RyYWludHMuYworKysrIGIvZ2NjL2xyYS1jb25zdHJhaW50cy5jCitAQCAtMjE3Miw4ICsyMTcyLDkgQEAgcHJvY2Vzc19hbHRfb3BlcmFuZHMgKGludCBvbmx5X2FsdGVybmF0aXZlKQorIAkJICAgIGVsc2UKKyAJCSAgICAgIHsKKyAJCQkvKiBPcGVyYW5kcyBkb24ndCBtYXRjaC4gIElmIHRoZSBvcGVyYW5kcyBhcmUKKy0JCQkgICBkaWZmZXJlbnQgdXNlciBkZWZpbmVkIGV4cGxpY2l0IGhhcmQgcmVnaXN0ZXJzLAorLQkJCSAgIHRoZW4gd2UgY2Fubm90IG1ha2UgdGhlbSBtYXRjaC4gICovCisrCQkJICAgZGlmZmVyZW50IHVzZXIgZGVmaW5lZCBleHBsaWNpdCBoYXJkCisrCQkJICAgcmVnaXN0ZXJzLCB0aGVuIHdlIGNhbm5vdCBtYWtlIHRoZW0gbWF0Y2gKKysJCQkgICB3aGVuIG9uZSBpcyBlYXJseSBjbG9iYmVyIG9wZXJhbmQuICAqLworIAkJCWlmICgoUkVHX1AgKCpjdXJyX2lkLT5vcGVyYW5kX2xvY1tub3BdKQorIAkJCSAgICAgfHwgU1VCUkVHX1AgKCpjdXJyX2lkLT5vcGVyYW5kX2xvY1tub3BdKSkKKyAJCQkgICAgJiYgKFJFR19QICgqY3Vycl9pZC0+b3BlcmFuZF9sb2NbbV0pCitAQCAtMjE5Miw5ICsyMTkzLDE3IEBAIHByb2Nlc3NfYWx0X29wZXJhbmRzIChpbnQgb25seV9hbHRlcm5hdGl2ZSkKKyAJCQkJJiYgUkVHX1AgKG1fcmVnKQorIAkJCQkmJiBIQVJEX1JFR0lTVEVSX1AgKG1fcmVnKQorIAkJCQkmJiBSRUdfVVNFUlZBUl9QIChtX3JlZykpCistCQkJICAgICAgYnJlYWs7CisrCQkJICAgICAgeworKwkJCQlpbnQgaTsKKysJCQkJCisrCQkJCWZvciAoaSA9IDA7IGkgPCBlYXJseV9jbG9iYmVyZWRfcmVnc19udW07IGkrKykKKysJCQkJICBpZiAobSA9PSBlYXJseV9jbG9iYmVyZWRfbm9wc1tpXSkKKysJCQkJICAgIGJyZWFrOworKwkJCQlpZiAoaSA8IGVhcmx5X2Nsb2JiZXJlZF9yZWdzX251bQorKwkJCQkgICAgfHwgZWFybHlfY2xvYmJlcl9wKQorKwkJCQkgIGJyZWFrOworKwkJCSAgICAgIH0KKyAJCQkgIH0KKy0KKyAJCQkvKiBCb3RoIG9wZXJhbmRzIG11c3QgYWxsb3cgYSByZWxvYWQgcmVnaXN0ZXIsCisgCQkJICAgb3RoZXJ3aXNlIHdlIGNhbm5vdCBtYWtlIHRoZW0gbWF0Y2guICAqLworIAkJCWlmIChjdXJyX2FsdFttXSA9PSBOT19SRUdTKQorZGlmZiAtLWdpdCBhL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByOTExMDIuYyBiL2djYy90ZXN0c3VpdGUvZ2NjLnRhcmdldC9hYXJjaDY0L3ByOTExMDIuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAwLi43MGI5OTA0NWE0OAorLS0tIC9kZXYvbnVsbAorKysrIGIvZ2NjL3Rlc3RzdWl0ZS9nY2MudGFyZ2V0L2FhcmNoNjQvcHI5MTEwMi5jCitAQCAtMCwwICsxLDI2IEBACisrLyogUFIgdGFyZ2V0LzkxMTAyICovCisrLyogeyBkZy1kbyBjb21waWxlIH0gKi8KKysvKiB7IGRnLW9wdGlvbnMgIi1PMiIgfSAqLworKworK2ludAorK2ZvbyAobG9uZyBkLCBsb25nIGwpCisreworKyAgcmVnaXN0ZXIgbG9uZyBlIGFzbSAoIngxIikgPSBkOworKyAgcmVnaXN0ZXIgbG9uZyBmIGFzbSgieDIiKSA9IGw7CisrICBhc20gKCIiIDogOiAiciIgKGUpLCAiciIgKGYpKTsKKysgIHJldHVybiAzOworK30KKysKKytzdHJ1Y3QgVCB7IGludCBpOyBpbnQgajsgfTsKKyt1bmlvbiBTIHsgbG9uZyBoOyBzdHJ1Y3QgVCB0OyB9OworKworK3ZvaWQKKytiYXIgKHVuaW9uIFMgYikKKyt7CisrICB3aGlsZSAoMSkKKysgICAgeworKyAgICAgIHVuaW9uIFMgYyA9IGI7CisrICAgICAgYy50LmorKzsKKysgICAgICBiLmggPSBmb28gKGIuaCwgYy5oKTsKKysgICAgfQorK30KKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29tbW9uLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29tbW9uLmluYwppbmRleCA0NGNiYTI4Li4zZGNmZGY4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbW1vbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb21tb24uaW5jCkBAIC00Nyw2ICs0Nyw3IEBACiAgICAgICAgICJpNTg2IjogICAgIi0tZW5hYmxlLXRhcmdldHM9YWxsIiwKICAgICAgICAgImk2ODYiOiAgICAiLS1lbmFibGUtdGFyZ2V0cz1hbGwiLAogICAgICAgICAicG93ZXJwYyI6ICItLWVuYWJsZS10YXJnZXRzPXBvd2VycGM2NCIsCisgICAgICAgICJwb3dlcnBjNjRsZSI6ICItLWVuYWJsZS10YXJnZXRzPXBvd2VycGNsZSIsCiAgICAgICAgICJtaXBzIjogICAgIi0tZW5hYmxlLXRhcmdldHM9YWxsIiwKICAgICAgICAgInNwYXJjIjogICAiLS1lbmFibGUtdGFyZ2V0cz1hbGwiLAogICAgIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29uZmlndXJlLWNvbW1vbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNvbmZpZ3VyZS1jb21tb24uaW5jCmluZGV4IDI0YmE4Y2UuLmE2NGM0Y2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY29uZmlndXJlLWNvbW1vbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jb25maWd1cmUtY29tbW9uLmluYwpAQCAtMTcsNiArMTcsOCBAQAogCiBHQ0NQSUUgPz89ICIiCiAKK1NZTVZFUlNfQ09ORiA/PSAiLS1lbmFibGUtc3ltdmVycz1nbnUiCisKIEVYVFJBX09FQ09ORiA9ICJcCiAgICAgJHtAWyctLWVuYWJsZS1jbG9jYWxlPWdlbmVyaWMnLCAnJ11bZC5nZXRWYXIoJ1VTRV9OTFMnKSAhPSAnbm8nXX0gXAogICAgIC0td2l0aC1nbnUtbGQgXApAQCAtMjcsMTAgKzI5LDExIEBACiAgICAgJHtHQ0NQSUV9IFwKICAgICAtLWVuYWJsZS1jOTkgXAogICAgIC0tZW5hYmxlLWxvbmctbG9uZyBcCi0gICAgLS1lbmFibGUtc3ltdmVycz1nbnUgXAorICAgICR7U1lNVkVSU19DT05GfSBcCiAgICAgLS1lbmFibGUtbGlic3RkY3h4LXBjaCBcCiAgICAgLS1wcm9ncmFtLXByZWZpeD0ke1RBUkdFVF9QUkVGSVh9IFwKICAgICAtLXdpdGhvdXQtbG9jYWwtcHJlZml4IFwKKyAgICAtLWRpc2FibGUtaW5zdGFsbC1saWJpYmVydHkgXAogICAgICR7RVhUUkFfT0VDT05GX0JBU0V9IFwKICAgICAke0VYVFJBX09FQ09ORl9HQ0NfRkxPQVR9IFwKICAgICAke0VYVFJBX09FQ09ORl9QQVRIU30gXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuLmluYwppbmRleCBmMTRjYmY3Li41NTNlZjdmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuLmluYwpAQCAtMTA4LDEyICsxMDgsNiBAQAogCSMgV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgZ2NjLTx2ZXJzaW9uPiBjb3BpZXMKIAlybSAtZiAke0R9JHtiaW5kaXJ9LypnY2MtPy4/KgogCi0JIyBXZSB1c2UgbGliaWJlcnR5IGZyb20gYmludXRpbHMKLQlybSAtZiAke0R9JHtwcmVmaXh9LyR7VEFSR0VUX1NZU30vbGliL2xpYmliZXJ0eS5hCi0JIyBOb3Qgc3VyZSB3aGVyZSB0aGUgc3RyYW5nZSBwYXRocyBjb21lIGZyb20KLQlybSAtZiAke0R9JHtsaWJkaXJ9Ly4uL2xpYi9saWJpYmVydHkuYQotCXJtIC1mICR7RH0ke2xpYmRpcn0vbGliaWJlcnR5LmEKLQogCSMgQ2xlYW51cCBlbXB0eSBkaXJlY3RvcmllcyB3aGljaCBhcmUgbm90IHNoaXBwZWQKIAkjIHdlIHVzZSBybWRpciBpbnN0ZWFkIG9mICdybSAtZicgdG8gZW5zdXJlIHRoZSBub24gZW1wdHkgZGlyZWN0b3JpZXMgYXJlIG5vdCBkZWxldGVkCiAJIyAke0R9JHtsaWJkaXJ9Ly4uL2xpYiBvbmx5IHNlZW1zIHRvIGFwcGVhciB3aXRoIFNES01BQ0hJTkU9aTY4NgpAQCAtMTU4LDcgKzE1Miw3IEBACiBFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLXBvaXNvbi1zeXN0ZW0tZGlyZWN0b3JpZXMiCiBFWFRSQV9PRUNPTkZfcmVtb3ZlX2VsZiA9ICItLXdpdGgtc3lzcm9vdD0vbm90L2V4aXN0IgogRVhUUkFfT0VDT05GX3JlbW92ZV9lYWJpID0gIi0td2l0aC1zeXNyb290PS9ub3QvZXhpc3QiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2VsZiA9ICItLXdpdGhvdXQtaGVhZGVycyAtLXdpdGgtbmV3bGliIgotRVhUUkFfT0VDT05GX2FwcGVuZF9lYWJpID0gIi0td2l0aG91dC1oZWFkZXJzIC0td2l0aC1uZXdsaWIiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2VsZiA9ICIgLS13aXRob3V0LWhlYWRlcnMgLS13aXRoLW5ld2xpYiIKK0VYVFJBX09FQ09ORl9hcHBlbmRfZWFiaSA9ICIgLS13aXRob3V0LWhlYWRlcnMgLS13aXRoLW5ld2xpYiIKICMgZ2NjIDQuNyBuZWVkcyAtaXN5c3RlbQogZXhwb3J0IEFSQ0hfRkxBR1NfRk9SX1RBUkdFVCA9ICItLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IC1pc3lzdGVtPSR7dGFyZ2V0X2luY2x1ZGVkaXJ9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbl85LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLWNhbmFkaWFuXzkuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zcy1jYW5hZGlhbl85LjIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MtY2FuYWRpYW5fOS4zLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MuaW5jCmluZGV4IDg4NTViYjEuLjZmYThjMjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3MuaW5jCkBAIC02MSw5OCArNjEsMjIgQEAKIAlleHBvcnQgQ1hYRkxBR1NfRk9SX1RBUkdFVD0iJHtUQVJHRVRfQ1hYRkxBR1N9IgogCWV4cG9ydCBMREZMQUdTX0ZPUl9UQVJHRVQ9IiR7VEFSR0VUX0xERkxBR1N9IgogCisJIyBQcmV2ZW50IG5hdGl2ZS9ob3N0IHN5c3Jvb3QgcGF0aCBmcm9tIGJlaW5nIHVzZWQgaW4gY29uZmlnYXJncy5oIGhlYWRlciwKKwkjIGFzIGl0IHdpbGwgYmUgcmV3cml0dGVuIHdoZW4gdXNlZCBieSBvdGhlciBzeXNyb290cyBwcmV2ZW50aW5nIHN1cHBvcnQKKwkjIGZvciBnY2MgcGx1Z2lucworCW9lX3J1bm1ha2UgY29uZmlndXJlLWdjYworCXNlZCAtaSAnc0Ake1NUQUdJTkdfRElSX1RBUkdFVH1AL2hvc3RAZycgJHtCfS9nY2MvY29uZmlnYXJncy5oCisJc2VkIC1pICdzQCR7U1RBR0lOR19ESVJfSE9TVH1AL2hvc3RAZycgJHtCfS9nY2MvY29uZmlnYXJncy5oCisKKwkjIFByZXZlbnQgc3lzcm9vdC93b3JrZGlyIHBhdGhzIGZyb20gYmVpbmcgdXNlZCBpbiBjaGVja3N1bS1vcHRpb25zLgorCSMgY2hlY2tzdW0tb3B0aW9ucyBpcyB1c2VkIHRvIGdlbmVyYXRlIGEgY2hlY2tzdW0gd2hpY2ggaXMgZW1iZWRkZWQgaW50bworCSMgdGhlIG91dHB1dCBiaW5hcnkuCisJb2VfcnVubWFrZSBUQVJHRVQtZ2NjPWNoZWNrc3VtLW9wdGlvbnMgYWxsLWdjYworCXNlZCAtaSAnc0Ake0RFQlVHX1BSRUZJWF9NQVB9QEBnJyAke0J9L2djYy9jaGVja3N1bS1vcHRpb25zCisJc2VkIC1pICdzQCR7U1RBR0lOR19ESVJfSE9TVH1AL2hvc3RAZycgJHtCfS9nY2MvY2hlY2tzdW0tb3B0aW9ucworCiAJb2VfcnVubWFrZSBhbGwtaG9zdCBjb25maWd1cmUtdGFyZ2V0LWxpYmdjYwogCShjZCAke0J9LyR7VEFSR0VUX1NZU30vbGliZ2NjOyBvZV9ydW5tYWtlIGVuYWJsZS1leGVjdXRlLXN0YWNrLmMgdW53aW5kLmggbWQtdW53aW5kLXN1cHBvcnQuaCBzZnAtbWFjaGluZS5oIGd0aHItZGVmYXVsdC5oKQotCSMgbm93IGdlbmVyYXRlIHNjcmlwdCB0byBkcml2ZSB0ZXN0aW5nCi0JZWNobyAiIyEvdXNyL2Jpbi9lbnYgc2giID4ke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2V0ID4+ICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQkjIHBydW5lIG91dCB0aGUgdW5uZWVkZWQgdmFycwotCXNlZCAtaSAtZSAiL15CQVNIL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eVVNFUi9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXk9QVC9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXkRJUlNUQUNLL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eRVVJRC9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXkZVTkNOQU1FL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eR1JPVVBTL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eSE9TVC9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXkhPTUUvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15JRlMvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15MQ19BTEwvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15MT0dOQU1FL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eTUFDSFRZUEUvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15PU1RZUEUvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15QSVBFL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eU0hFTEwvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL14nL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eVUlEL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eVEVSTS9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXlBLR18vZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15QT1NJWExZXy9kIiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjCi0Jc2VkIC1pIC1lICIvXlBQSUQvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15QUzQvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15RL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eU0hMVkwvZCIgJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCXNlZCAtaSAtZSAiL15TVEFHSU5HL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eTERfTElCUkFSWV9QQVRIL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQlzZWQgLWkgLWUgIi9eUFNFVURPL2QiICR7Qn0vJHtUQVJHRVRfUFJFRklYfXRlc3RnY2MKLQotCSMgYXBwZW5kIGV4ZWN1dGlvbiBwYXJ0IG9mIHRoZSBzY3JpcHQKLWNhdCA+PiAke0J9LyR7VEFSR0VUX1BSRUZJWH10ZXN0Z2NjIDw8IFNUT1AKLXRhcmdldD0iXCQxIgotdXNhZ2UgKCkgewotCWVjaG8gIlVzYWdlOiIKLQllY2hvICJcJDAgdXNlckB0YXJnZXQgJ2V4dHJhIG9wdGlvbnMgdG8gZGVqYWdudSciCi0JZWNobyAiXCQwIHRhcmdldCAnZXh0cmEgb3B0aW9ucyB0byBkZWphZ251JyIKLQllY2hvICJcJDAgdGFyZ2V0IgotCWVjaG8gImUuZy4gXCQwIDE5Mi4xNjguNy4yICcgZGcuZXhwPXZpc2liaWxpdHktZC5jJyIKLQllY2hvICJ3aWxsIG9ubHkgcnVuIHZpc2liaWxpdHktZC5jIHRlc3QgY2FzZSIKLQllY2hvICJlLmcuIFwkMCAxOTIuMTY4LjcuMiAnLy1tdGh1bWIgZGcuZXhwPXZpc2liaWxpdHktZC5jJyIKLQllY2hvICJ3aWxsIG9ubHkgcnVuIHZpc2liaWxpdHktZC5jIHRlc3QgY2FzZSBpbiB0aHVtYiBtb2RlIgotCWVjaG8gIllvdSBuZWVkIHRvIGhhdmUgZGVqYWdudSBhdXRvZ2VuIGV4cGVjdCBpbnN0YWxsZWQiCi0JZWNobyAib24gdGhlIGJ1aWxkIGhvc3QiCi0gICAgfQotaWYgWyAieFwkdGFyZ2V0IiA9ICJ4IiBdCi10aGVuCi0JZWNobyAiUGxlYXNlIHNwZWNpZnkgdGhlIHRhcmdldCBtYWNoaW5lIGFuZCByZW1vdGUgdXNlciBpbiBmb3JtIG9mIHVzZXJAdGFyZ2V0XG4iCi0JdXNhZ2UKLQlleGl0IDE7Ci1maQotCi1zaGlmdAotCi1lY2hvICJcJHRhcmdldCIgfCBncmVwICJAIiAyPiYxID4gL2Rldi9udWxsCi1pZiBbICJ4XCQ/IiA9ICJ4MCIgXQotdGhlbgotICAgdXNlcj1cJChlY2hvIFwkdGFyZ2V0IHwgY3V0IC1kICdAJyAtZiAxKQotICAgdGFyZ2V0PVwkKGVjaG8gXCR0YXJnZXQgfCBjdXQgLWQgJ0AnIC1mIDIpCi1lbHNlCi0gICB1c2VyPVwkVVNFUgotZmkKLXNzaCBcJHVzZXJAXCR0YXJnZXQgZGF0ZSAyPiYxID4gL2Rldi9udWxsCi1pZiBbICJ4XCQ/IiAhPSAieDAiIF0KLXRoZW4KLQllY2hvICJGYWlsZWQgY29ubmVjdGluZyB0byBcJHVzZXJAXCR0YXJnZXQgaXQgY291bGQgYmUgYmVjYXVzZSIKLQllY2hvICJ5b3UgZG9uJ3QgaGF2ZSBwYXNzd29yZGxlc3Mgc3NoIHNldHVwIHRvIGFjY2VzcyBcJHRhcmdldCIKLQllY2hvICJvciBzb21ldGltZXMgaG9zdCBrZXkgaGFzIGJlZW4gY2hhbmdlZCIKLQllY2hvICJpbiBzdWNoIGNhc2UgZG8gc29tZXRoaW5nIGxpa2UgYmVsb3cgb24gYnVpbGQgaG9zdCIKLQllY2hvICJzc2gta2V5Z2VuIC1mICJ+Ly5zc2gva25vd25faG9zdHMiIC1SIFwkdGFyZ2V0IgotCWVjaG8gImFuZCB0aGVuIHRyeSBzc2ggXCR1c2VyQFwkdGFyZ2V0IgotCi0JdXNhZ2UKLQlleGl0IDEKLWZpCi0JZWNobyAibGFwcGVuZCBib2FyZHNfZGlyIFtwd2RdLy4uLy4uLy4uIiA+ICR7Qn0vc2l0ZS5leHAKLQllY2hvICJsb2FkX2dlbmVyaWNfY29uZmlnIFwidW5peFwiIiA+ICR7Qn0vJHtQQUNLQUdFX0FSQ0h9LmV4cAotCWVjaG8gInNldF9ib2FyZF9pbmZvIHVzZXJuYW1lIFwkdXNlciIgPj4gJHtCfS8ke1BBQ0tBR0VfQVJDSH0uZXhwCi0JZWNobyAic2V0X2JvYXJkX2luZm8gcnNoX3Byb2cgc3NoIiA+PiAke0J9LyR7UEFDS0FHRV9BUkNIfS5leHAKLQllY2hvICJzZXRfYm9hcmRfaW5mbyByY3BfcHJvZyBzY3AiID4+ICR7Qn0vJHtQQUNLQUdFX0FSQ0h9LmV4cAotCWVjaG8gInNldF9ib2FyZF9pbmZvIGhvc3RuYW1lIFwkdGFyZ2V0IiA+PiAke0J9LyR7UEFDS0FHRV9BUkNIfS5leHAKLQlERUpBR05VPSR7Qn0vc2l0ZS5leHAgbWFrZSAtayBjaGVjayBSVU5URVNURkxBR1M9Ii0tdGFyZ2V0X2JvYXJkPSR7UEFDS0FHRV9BUkNIfVwkQCIKLQotU1RPUAotCi0JY2htb2QgK3ggJHtCfS8ke1RBUkdFVF9QUkVGSVh9dGVzdGdjYwotCiB9CiAKIElOSElCSVRfUEFDS0FHRV9TVFJJUCA9ICIxIgpAQCAtMTkzLDEwICsxMTcsNiBAQAogCWNwICR7U30vbGlicXVhZG1hdGgvcXVhZG1hdGguaCAke0R9JHtsaWJkaXJ9L2djYy8ke1RBUkdFVF9TWVN9LyR7QklOVn0vaW5jbHVkZS8KIAljcCAke1N9L2xpYnF1YWRtYXRoL3F1YWRtYXRoX3dlYWsuaCAke0R9JHtsaWJkaXJ9L2djYy8ke1RBUkdFVF9TWVN9LyR7QklOVn0vaW5jbHVkZS8KIAotCSMgV2UgdXNlIGxpYmliZXJ0eSBmcm9tIGJpbnV0aWxzCi0JZmluZCAke0R9JHtleGVjX3ByZWZpeH0vbGliIC1uYW1lIGxpYmliZXJ0eS5hIHwgeGFyZ3Mgcm0gLWYKLQlmaW5kICR7RH0ke2V4ZWNfcHJlZml4fS9saWIgLW5hbWUgbGliaWJlcnR5LmggfCB4YXJncyBybSAtZgotCiAJZmluZCAke0R9JHtsaWJkaXJ9L2djYy8ke1RBUkdFVF9TWVN9LyR7QklOVn0vaW5jbHVkZS1maXhlZCAtdHlwZSBmIC1ub3QgLW5hbWUgIlJFQURNRSIgLW5vdCAtbmFtZSBsaW1pdHMuaCAtbm90IC1uYW1lIHN5c2xpbWl0cy5oIHwgeGFyZ3Mgcm0gLWYKIH0KIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc185LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3NzXzkuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc185LjIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NfOS4zLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzkuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtY3Jvc3NzZGtfOS4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLWNyb3Nzc2RrXzkuMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1jcm9zc3Nka185LjMuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWUuaW5jCmluZGV4IDJkYTNjMDIuLmFjZTcwNmQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1ydW50aW1lLmluYwpAQCAtMTYsOSArMTYsMTYgQEAKIAogRVhUUkFfT0VDT05GX2FwcGVuZF9saW51eHN0ZGJhc2UgPSAiIC0tZW5hYmxlLWNsb2NhbGU9Z251IgogRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS1jYWNoZS1maWxlPSR7Qn0vY29uZmlnLmNhY2hlIgorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW5ld2xpYiA9ICIgLS13aXRoLW5ld2xpYiIKIAogIyBEaXNhYmxlIGlmdW5jcyBmb3IgbGliYXRvbWljIG9uIGFybSBjb25mbGljdHMgLW1hcmNoLy1tY3B1CiBFWFRSQV9PRUNPTkZfYXBwZW5kX2FybSA9ICIgbGliYXRfY3ZfaGF2ZV9pZnVuYz1ubyAiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2FybWViID0gIiBsaWJhdF9jdl9oYXZlX2lmdW5jPW5vICIKKworRElTQUJMRV9TVEFUSUNfY2xhc3MtbmF0aXZlc2RrID89ICIiCisKKyMgTmV3bGliIGRvZXMgbm90IHN1cHBvcnQgc3ltYm9sIHZlcnNpb25pbmcgb24gbGlic2R0Y2MrKworU1lNVkVSU19DT05GX2xpYmMtbmV3bGliID0gIiIKIAogIyBCdWlsZGluZyB3aXRoIHRodW1iIGVuYWJsZWQgb24gYXJtdjZ0IGZhaWxzCiBBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKQEAgLTM2LDYgKzQzLDggQEAKIFJVTlRJTUVUQVJHRVQgPSAiJHtSVU5USU1FTElCU1NQfSBsaWJzdGRjKystdjMgbGliZ29tcCBsaWJhdG9taWMgJHtSVU5USU1FTElCSVRNfSBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdGT1JUUkFOJywgWycsZm9ydHJhbicsJyxmNzcnXSwgJ2xpYnF1YWRtYXRoJywgJycsIGQpfSBcCiAiCisjIE9ubHkgYnVpbGQgbGlic3RkYysrIGZvciBuZXdsaWIKK1JVTlRJTUVUQVJHRVRfbGliYy1uZXdsaWIgPSAibGlic3RkYysrLXYzIgogCiAjIGxpYmliZXJ0eQogIyBsaWJtdWRmbGFwCkBAIC0xNzksNyArMTg4LDcgQEAKIAogIyBpbmNsdWRlIHB5dGhvbiBkZWJ1Z2dpbmcgc2NyaXB0cwogRklMRVNfJHtQTn0tZGJnICs9ICJcCi0gICAgJHtsaWJkaXJ9L2xpYnN0ZGMrKy5zby4qLWdkYi5weSBcCisgICAgJHtsaWJkaXJ9L2xpYnN0ZGMrKy4qLWdkYi5weSBcCiAgICAgJHtkYXRhZGlyfS9nY2MtJHtCSU5WfS9weXRob24vbGlic3RkY3h4IFwKICIKIApAQCAtMzAyLDEwICszMTEsNiBAQAogCiAgICAgIyBIQUNLOiB0aGlzIHdvcmtzIGFyb3VuZCB0aGUgY29uZmlndXJlIHNldHRpbmcgQ1hYIHdpdGggLW5vc3RkKiBhcmdzCiAgICAgc2VkIC1pICdzLy1ub3N0ZGluYysrIC1ub3N0ZGxpYisrLy9nJyAkKGZpbmQgJHtCfSAtbmFtZSB0ZXN0c3VpdGVfZmxhZ3MgfCBoZWFkIC0xKQotICAgICMgSEFDSzogdGhpcyB3b3JrcyBhcm91bmQgdGhlIGRlLXN0YXNoaW5nIGNoYW5nZXMgdG8gY29uZmlnYXJncy5oLCBhcyB3ZWxsIGFzIHJlY2lwZS1zeXNyb290IGNoYW5naW5nIHRoZSBjb250ZW50Ci0gICAgc2VkIC1pICcvc3RhdGljIGNvbnN0IGNoYXIgY29uZmlndXJhdGlvbl9hcmd1bWVudHMvZCcgJHtCfS9nY2MvY29uZmlnYXJncy5oCi0gICAgJHtDQ30gLXYgMj4mMSB8IGdyZXAgIl5Db25maWd1cmVkIHdpdGg6IiB8IFwKLSAgICAgICAgc2VkICdzL0NvbmZpZ3VyZWQgd2l0aDogXCguKlwpL3N0YXRpYyBjb25zdCBjaGFyIGNvbmZpZ3VyYXRpb25fYXJndW1lbnRzW10gPSAiXDEiOy9nJyA+PiAke0J9L2djYy9jb25maWdhcmdzLmgKIAogICAgIGlmIFsgIiR7VE9PTENIQUlOX1RFU1RfVEFSR0VUfSIgPSAidXNlciIgXTsgdGhlbgogICAgICAgICAjIHFlbXUgdXNlciBoYXMgaXNzdWVzIGFsbG9jYXRpbmcgbGFyZ2UgYW1vdW50cyBvZiBtZW1vcnkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtcnVudGltZV85LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfOS4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfOS4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXJ1bnRpbWVfOS4zLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzLmluYwppbmRleCA4YjFkMWM5Li42NjhlMTRhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNhbml0aXplcnMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVycy5pbmMKQEAgLTQzLDcgKzQzLDcgQEAKIAogSU5ISUJJVF9ERUZBVUxUX0RFUFMgPSAiMSIKIEFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi1ERVBFTkRTID0gImdjYy1ydW50aW1lIHZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdjYyIKK0RFUEVORFMgPSAidmlydHVhbC9jcnlwdCBnY2MtcnVudGltZSB2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nY2MiCiAKICMgdXNlZCB0byBmaXggLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vLi4vd29yay1zaGFyZWQvZ2NjLTguMy4wLXIwL2djYy04LjMuMC9saWJzYW5pdGl6ZXIvbGliYmFja3RyYWNlLy4uLy4uL2xpYmJhY2t0cmFjZS9lbGYuYzo3NzI6MjE6IGVycm9yOiAnc3Quc3RfbW9kZScgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCiBERUJVR19PUFRJTUlaQVRJT05fYXBwZW5kID0gIiAtV25vLWVycm9yIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zYW5pdGl6ZXJzXzkuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc185LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc185LjIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc2FuaXRpemVyc185LjMuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlXzkuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2Mtc291cmNlXzkuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy1zb3VyY2VfOS4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXNvdXJjZV85LjMuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtdGFyZ2V0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2MtdGFyZ2V0LmluYwppbmRleCBiZGM2ZmY2Li44Y2I0MzI3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjLXRhcmdldC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djYy10YXJnZXQuaW5jCkBAIC0xOSw2ICsxOSw3IEBACiBFWFRSQV9PRUNPTkZfYXBwZW5kX2FybXY3YSA9ICIgLS13aXRoLWFyY2g9YXJtdjctYSR7QVJNRlBBUkNIRVhUfSIKIEVYVFJBX09FQ09ORl9hcHBlbmRfYXJtdjd2ZSA9ICIgLS13aXRoLWFyY2g9YXJtdjd2ZSR7QVJNRlBBUkNIRVhUfSIKIEVYVFJBX09FQ09ORl9hcHBlbmRfYXJjID0gIiAtLXdpdGgtY3B1PSR7VFVORV9QS0dBUkNIfSIKK0VYVFJBX09FQ09ORl9hcHBlbmRfeDg2LTY0ID0gIiAtLXdpdGgtYXJjaD1uYXRpdmUiCiAKICMgbGliY2MxIHJlcXVyZXMgZ2NjX2N2X29iamR1bXAgd2hlbiBjcm9zcyBidWlsZCwgYnV0IGdjY19jdl9vYmpkdW1wIGlzCiAjIHNldCBpbiBzdWJkaXIgZ2NjLCBzbyBzdWJkaXIgbGliY2MxIGNhbid0IHVzZSBpdCwgZXhwb3J0IGl0IGhlcmUgdG8KQEAgLTEzNyw2ICsxMzgsMjEgQEAKICIKIAogZG9fY29tcGlsZSAoKSB7CisJIyBQcmV2ZW50IGZ1bGwgdGFyZ2V0IHN5c3Jvb3QgcGF0aCBmcm9tIGJlaW5nIHVzZWQgaW4gY29uZmlnYXJncy5oIGhlYWRlciwKKwkjIGFzIGl0IHdpbGwgYmUgcmV3cml0dGVuIHdoZW4gdXNlZCBieSBvdGhlciBzeXNyb290cyBwcmV2ZW50aW5nIHN1cHBvcnQKKwkjIGZvciBnY2MgcGx1Z2lucy4gQWRkaXRpb25hbGx5IHRoZSBwYXRoIGlzIGVtYmVkZGVkZWQgaW50byB0aGUgb3V0cHV0CisJIyBiaW5hcnksIHRoaXMgcHJldmVudHMgYnVpbGRpbmcgYSByZXByb2R1Y2libGUgYmluYXJ5LgorCW9lX3J1bm1ha2UgY29uZmlndXJlLWdjYworCXNlZCAtaSAnc0Ake1NUQUdJTkdfRElSX1RBUkdFVH1AL0BnJyAke0J9L2djYy9jb25maWdhcmdzLmgKKwlzZWQgLWkgJ3NAJHtTVEFHSU5HX0RJUl9IT1NUfUAvQGcnICR7Qn0vZ2NjL2NvbmZpZ2FyZ3MuaAorCisJIyBQcmV2ZW50IHN5c3Jvb3Qvd29ya2RpciBwYXRocyBmcm9tIGJlaW5nIHVzZWQgaW4gY2hlY2tzdW0tb3B0aW9ucy4KKwkjIGNoZWNrc3VtLW9wdGlvbnMgaXMgdXNlZCB0byBnZW5lcmF0ZSBhIGNoZWNrc3VtIHdoaWNoIGlzIGVtYmVkZGVkIGludG8KKwkjIHRoZSBvdXRwdXQgYmluYXJ5LgorCW9lX3J1bm1ha2UgVEFSR0VULWdjYz1jaGVja3N1bS1vcHRpb25zIGFsbC1nY2MKKwlzZWQgLWkgJ3NAJHtERUJVR19QUkVGSVhfTUFQfUBAZycgJHtCfS9nY2MvY2hlY2tzdW0tb3B0aW9ucworCXNlZCAtaSAnc0Ake1NUQUdJTkdfRElSX1RBUkdFVH1AL0BnJyAke0J9L2djYy9jaGVja3N1bS1vcHRpb25zCisKIAlvZV9ydW5tYWtlIGFsbC1ob3N0CiB9CiAKQEAgLTE2NCw2ICsxODAsMTAgQEAKIAkjIENsZWFudXAgbWFucGFnZXMuLgogCXJtIC1yZiAke0R9JHttYW5kaXJ9L21hbjcKIAorCSMgRG9uJ3QgcGFja2FnZSBkZXRhaWxzIGFib3V0IHRoZSBidWlsZCBob3N0CisJcm0gLWYgJHtEfSR7bGliZGlyfS9nY2MvJHtUQVJHRVRfU1lTfS8ke0JJTlZ9L3BsdWdpbi9pbmNsdWRlL2F1dG8tYnVpbGQuaAorCXJtIC1mICR7RH0ke2xpYmRpcn0vZ2NjLyR7VEFSR0VUX1NZU30vJHtCSU5WfS9wbHVnaW4vaW5jbHVkZS9iY29uZmlnLmgKKwogCWNkICR7RH0ke2JpbmRpcn0KIAogCSMgV2UgY2FyZSBhYm91dCBnKysgbm90IGMrKwpAQCAtMTcyLDEwICsxOTIsNiBAQAogCSMgV2UgZG9uJ3QgY2FyZSBhYm91dCB0aGUgZ2NjLTx2ZXJzaW9uPiBvbmVzIGZvciB0aGlzCiAJcm0gLWYgKmdjYy0/Lj8qCiAKLQkjIFdlIHVzZSBsaWJpYmVydHkgZnJvbSBiaW51dGlscwotCWZpbmQgJHtEfSR7bGliZGlyfSAtbmFtZSBsaWJpYmVydHkuYSB8IHhhcmdzIHJtIC1mCi0JZmluZCAke0R9JHtsaWJkaXJ9IC1uYW1lIGxpYmliZXJ0eS5oIHwgeGFyZ3Mgcm0gLWYKLQogCSMgTm90IHN1cmUgd2h5IHdlIGVuZCB1cCB3aXRoIHRoZXNlIGJ1dCB3ZSBkb24ndCB3YW50IHRoZW0uLi4KIAlybSAtZiAke1RBUkdFVF9QUkVGSVh9JHtUQVJHRVRfUFJFRklYfSoKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY185LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvZ2NjXzkuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2djY185LjIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9nY2NfOS4zLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLWluaXRpYWxfOS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzkuMy5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzkuMi5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy1pbml0aWFsXzkuMy5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjYy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLmluYwppbmRleCBlMDA4ZDE0Li42ZDQ4ZWM5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjLmluYwpAQCAtOSwxNCArOSwxOCBAQAogCQkJImxpbnV4LW11c2xlYWJpIikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eC1nbnVlYWJpIjs7CiAJCQkqKSBleHRyYV90YXJnZXRfb3M9ImxpbnV4Ijs7CiAJCWVzYWMKLQkJbG4gLXMgJHtUQVJHRVRfU1lTfSAke0R9JHtsaWJkaXJ9LyR7VEFSR0VUX0FSQ0h9JHtUQVJHRVRfVkVORE9SfS0kZXh0cmFfdGFyZ2V0X29zCisJCWlmIFsgISAtZSAke0R9JHtsaWJkaXJ9LyR7VEFSR0VUX0FSQ0h9JHtUQVJHRVRfVkVORE9SfS0kZXh0cmFfdGFyZ2V0X29zIF07IHRoZW4KKwkJCWxuIC1zICR7VEFSR0VUX1NZU30gJHtEfSR7bGliZGlyfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJGV4dHJhX3RhcmdldF9vcworCQlmaQogCWZpCiAJaWYgWyAtbiAiJHtAIGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHU19NRkxPQVQnLCAnaGFyZCcsICdoZicsICcnLCBkKX0iIF07IHRoZW4KIAkJY2FzZSAiJHtUQVJHRVRfT1N9IiBpbgogCQkJImxpbnV4LW11c2xlYWJpIikgZXh0cmFfdGFyZ2V0X29zPSJsaW51eC1tdXNsZWFiaWhmIjs7CiAJCQkibGludXgtZ251ZWFiaSIpIGV4dHJhX3RhcmdldF9vcz0ibGludXgtZ251ZWFiaWhmIjs7CiAJCWVzYWMKLQkJbG4gLXMgJHtUQVJHRVRfU1lTfSAke0R9JHtsaWJkaXJ9LyR7VEFSR0VUX0FSQ0h9JHtUQVJHRVRfVkVORE9SfS0kZXh0cmFfdGFyZ2V0X29zCisJCWlmIFsgISAtZSAke0R9JHtsaWJkaXJ9LyR7VEFSR0VUX0FSQ0h9JHtUQVJHRVRfVkVORE9SfS0kZXh0cmFfdGFyZ2V0X29zIF07IHRoZW4KKwkJCWxuIC1zICR7VEFSR0VUX1NZU30gJHtEfSR7bGliZGlyfS8ke1RBUkdFVF9BUkNIfSR7VEFSR0VUX1ZFTkRPUn0tJGV4dHJhX3RhcmdldF9vcworCQlmaQogCWZpCiB9CiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfOS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdjY185LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnY2NfOS4yLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nY2MvbGliZ2NjXzkuMy5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2NjL2xpYmdmb3J0cmFuXzkuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl85LjMuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl85LjIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2djYy9saWJnZm9ydHJhbl85LjMuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItOC4zLjEuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi04LjMuMS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5ZjFjNDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi04LjMuMS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1MSUNFTlNFID0gIkdQTHYyICYgR1BMdjMgJiBMR1BMdjIgJiBMR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0JCSAgICBmaWxlOi8vQ09QWUlORzM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLQkJICAgIGZpbGU6Ly9DT1BZSU5HMy5MSUI7bWQ1PTZhNmE4ZTAyMDgzOGIyMzQwNmM4MWIxOWMxZDQ2ZGY2IFwKLQkJICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9OWY2MDRkOGE0ZjhlNzRmNGY1MTQwODQ1YTIxYjY2NzQiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9nZGIvZ2RiLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdkYnNlcnZlci1jdHJsLWMtaGFuZGxpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA3LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTAtcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtRml4LWludmFsaWQtc2lncHJvY21hc2stY2FsbC5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICI3M2I2YTVkODE0MTY3MmM2MmJmODUxY2QzNGM0YWE4MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZTU1YjRkN2NkY2E3YjM0YmUxMmY0Y2VhZTY1MTYyM2FhNzNiMmZkNjQwMTUyMzEzZjlmNjZhNzE0OTc1N2M0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi05LjEuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi05LjEuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQwMTllNmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLTkuMS5pbmMKQEAgLTAsMCArMSwyMSBAQAorTElDRU5TRSA9ICJHUEx2MiAmIEdQTHYzICYgTEdQTHYyICYgTEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAorCQkgICAgZmlsZTovL0NPUFlJTkczO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisJCSAgICBmaWxlOi8vQ09QWUlORzMuTElCO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCisJCSAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTlmNjA0ZDhhNGY4ZTc0ZjRmNTE0MDg0NWEyMWI2Njc0IgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ2RiL2dkYi0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtRG9udC1kaXNhYmxlLWxpYnJlYWRsaW5lLmEtd2hlbi11c2luZy1kaXNhYmxlLXN0YXRpYy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA2LXVzZS1hc20tc2dpZGVmcy5oLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDctVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwOC1DaGFuZ2Utb3JkZXItb2YtQ0ZMQUdTLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDktcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMTAtRml4LWludmFsaWQtc2lncHJvY21hc2stY2FsbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDExLWdkYnNlcnZlci1jdHJsLWMtaGFuZGxpbmcucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZjdlOWY2MjM2YzQyNTA5N2Q5ZTVmMThhNmFjNDA2NTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjk5ZTBlYzgzMmZkZDJmMjFjODI2NjE3MWVhNWJmNDQwMjRiZDA1MTY0ZmRmMDY0ZTRkMTBjYzRjZjBkMTczNyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3MtY2FuYWRpYW5fOC4zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzLWNhbmFkaWFuXzkuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl84LjMuMS5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zcy1jYW5hZGlhbl85LjEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGItY3Jvc3NfOC4zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLWNyb3NzXzkuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zc184LjMuMS5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi1jcm9zc185LjEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1nZGJzZXJ2ZXItY3RybC1jLWhhbmRsaW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAxLWdkYnNlcnZlci1jdHJsLWMtaGFuZGxpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxZmU3ZjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAxLWdkYnNlcnZlci1jdHJsLWMtaGFuZGxpbmcucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1UaGlzIHByb2JsZW0gd2FzIGNyZWF0ZWQgYnkgdGhlIHVwc3RyZWFtIGNvbW1pdCA3ODcwOGI3YzhjCi1BZnRlciBhcHBseWluZyB0aGUgY29tbWl0LCBpdCB3aWxsIHNlbmQgU0lHSU5UIHRvIHRoZSBwcm9jZXNzIGdyb3VwKC1zaWduYWxfcGlkKS4KLUJ1dCBpZiB3ZSB1c2UgZ2Ric2VydmVyIHNlbmQgU0lHSU5ULCBhbmQgdGhlIGF0dGFjaGVkIHByb2Nlc3MgaXMgbm90IGEgcHJvY2VzcwotZ3JvdXAgbGVhZGVyLCB0aGVuIHRoZSAia2lsbCAoLXNpZ25hbF9waWQsIFNJR0lOVCkiIHJldHVybnMgZXJyb3IgYW5kIGZhaWxzICB0bwotaW50ZXJydXB0IHRoZSBhdHRhY2hlZCBwcm9jZXNzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9idWd6aWxsYS9zaG93X2J1Zy5jZ2k/aWQ9MTg5NDVdCi0KLUF1dGhvcjogSm9zaCBHYW8KLVNpZ25lZC1vZmYtYnk6IFpoaXhpb25nIENoaSA8emhpeGlvbmcuY2hpQHdpbmRyaXZlci5jb20+Ci0KLUluZGV4OiBnZGItOC4yL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnZGItOC4yLm9yaWcvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwotKysrIGdkYi04LjIvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYwotQEAgLTU5NDAsOSArNTk0MCw3IEBAIGxpbnV4X2xvb2tfdXBfc3ltYm9scyAodm9pZCkKLSBzdGF0aWMgdm9pZAotIGxpbnV4X3JlcXVlc3RfaW50ZXJydXB0ICh2b2lkKQotIHsKLS0gIC8qIFNlbmQgYSBTSUdJTlQgdG8gdGhlIHByb2Nlc3MgZ3JvdXAuICBUaGlzIGFjdHMganVzdCBsaWtlIHRoZSB1c2VyCi0tICAgICB0eXBlZCBhIF5DIG9uIHRoZSBjb250cm9sbGluZyB0ZXJtaW5hbC4gICovCi0tICBraWxsICgtc2lnbmFsX3BpZCwgU0lHSU5UKTsKLSsgIGtpbGwgKHNpZ25hbF9waWQsIFNJR0lOVCk7Ci0gfQotIAotIC8qIENvcHkgTEVOIGJ5dGVzIGZyb20gaW5mZXJpb3IncyBhdXhpbGlhcnkgdmVjdG9yIHN0YXJ0aW5nIGF0IE9GRlNFVApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAxLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODIyODdlYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMS1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2gKQEAgLTAsMCArMSwyNSBAQAorRnJvbSAwMzZmOGUxZDM4N2Y2NWU1MmNiMDIxZGJiMWJkMjhlOGI3NWNmMDE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMiBNYXIgMjAxNSAwMjoyNzo1NSArMDAwMAorU3ViamVjdDogW1BBVENIXSBtYWtlIG1hbiBpbnN0YWxsIHJlbGF0aXZlIHRvIERFU1RESVIKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzaW0vY29tbW9uL01ha2VmaWxlLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbiBiL3NpbS9jb21tb24vTWFrZWZpbGUuaW4KK2luZGV4IGM2ZGUxNDEyMmMuLmM0YjEyMTQ5NDYgMTAwNjQ0CistLS0gYS9zaW0vY29tbW9uL01ha2VmaWxlLmluCisrKysgYi9zaW0vY29tbW9uL01ha2VmaWxlLmluCitAQCAtMzUsNyArMzUsNyBAQCB0b29sZGlyID0gJChsaWJkaXIpLyQodGFyZ2V0X2FsaWFzKQorIGRhdGFyb290ZGlyID0gQGRhdGFyb290ZGlyQAorIGRhdGFkaXIgPSBAZGF0YWRpckAKKyBtYW5kaXIgPSBAbWFuZGlyQAorLW1hbjFkaXIgPSAkKG1hbmRpcikvbWFuMQorK21hbjFkaXIgPSAkKERFU1RESVIpJChtYW5kaXIpL21hbjEKKyBpbmZvZGlyID0gQGluZm9kaXJACisgaW5jbHVkZWRpciA9IEBpbmNsdWRlZGlyQAorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAyLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMi1tYWtlLW1hbi1pbnN0YWxsLXJlbGF0aXZlLXRvLURFU1RESVIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDYwNDc5ZTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAyLW1ha2UtbWFuLWluc3RhbGwtcmVsYXRpdmUtdG8tREVTVERJUi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gYjAyMDlmMjgyNzE2YmVkMmMyMzBjN2I0OTZmYmNjN2FmNTAzZDBjYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDI6Mjc6NTUgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMi8xMV0gbWFrZSBtYW4gaW5zdGFsbCByZWxhdGl2ZSB0byBERVNURElSCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gc2ltL2NvbW1vbi9NYWtlZmlsZS5pbiB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3NpbS9jb21tb24vTWFrZWZpbGUuaW4gYi9zaW0vY29tbW9uL01ha2VmaWxlLmluCi1pbmRleCAyMjdlNGNmYmMyLi44YzM0NTdlMGJkIDEwMDY0NAotLS0tIGEvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbgotKysrIGIvc2ltL2NvbW1vbi9NYWtlZmlsZS5pbgotQEAgLTM1LDcgKzM1LDcgQEAgdG9vbGRpciA9ICQobGliZGlyKS8kKHRhcmdldF9hbGlhcykKLSBkYXRhcm9vdGRpciA9IEBkYXRhcm9vdGRpckAKLSBkYXRhZGlyID0gQGRhdGFkaXJACi0gbWFuZGlyID0gQG1hbmRpckAKLS1tYW4xZGlyID0gJChtYW5kaXIpL21hbjEKLSttYW4xZGlyID0gJChERVNURElSKSQobWFuZGlyKS9tYW4xCi0gaW5mb2RpciA9IEBpbmZvZGlyQAotIGluY2x1ZGVkaXIgPSBAaW5jbHVkZWRpckAKLSAKLS0tIAotMi4xOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMi1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMi1taXBzLWxpbnV4LW5hdC1EZWZpbmUtX0FCSU8zMi1pZi1ub3QtZGVmaW5lZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MDY3Y2FmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAyLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0Zyb20gNmJmZjI4NjJmOTU5N2YzMjRhOTM4NWViMmY4MjhlODM4ZTUxYThhMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIE1hciAyMDE2IDA2OjMwOjA5ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIG1pcHMtbGludXgtbmF0OiBEZWZpbmUgX0FCSU8zMiBpZiBub3QgZGVmaW5lZAorCitUaGlzIGhlbHBzIGJ1aWxkaW5nIGdkYiBvbiBtaXBzNjQgb24gbXVzbCwgc2luY2UKK211c2wgZG9lcyBub3QgcHJvdmlkZSBzZ2lkZWZzLmggdGhpcyBkZWZpbmUgaXMKK29ubHkgZGVmaW5lZCB3aGVuIEdDQyBpcyB1c2luZyBvMzIgQUJJLCBpbiB0aGF0CitjYXNlIGdjYyBlbWl0cyBpdCBhcyBidWlsdC1pbiBkZWZpbmUgYW5kIGhlbmNlCitpdCB3b3JrcyBvayBmb3IgbWlwczMyCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdkYi9taXBzLWxpbnV4LW5hdC5jIHwgNCArKysrCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvZ2RiL21pcHMtbGludXgtbmF0LmMgYi9nZGIvbWlwcy1saW51eC1uYXQuYworaW5kZXggMTA0Yzk3MmYyNC4uN2Y1NzViMzM2MyAxMDA2NDQKKy0tLSBhL2dkYi9taXBzLWxpbnV4LW5hdC5jCisrKysgYi9nZGIvbWlwcy1saW51eC1uYXQuYworQEAgLTQxLDYgKzQxLDEwIEBACisgI2lmbmRlZiBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBCisgI2RlZmluZSBQVFJBQ0VfR0VUX1RIUkVBRF9BUkVBIDI1CisgI2VuZGlmCisrLyogbXVzbCBkb2VzIG5vdCBkZWZpbmUgYW5kIHJlbGllcyBvbiBjb21waWxlciBidWlsdC1pbiBtYWNyb3MgZm9yIGl0ICAgKi8KKysjaWZuZGVmIF9BQklPMzIKKysjZGVmaW5lIF9BQklPMzIgMQorKyNlbmRpZgorIAorIGNsYXNzIG1pcHNfbGludXhfbmF0X3RhcmdldCBmaW5hbCA6IHB1YmxpYyBsaW51eF9uYXRfdHJhZF90YXJnZXQKKyB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDMtbWlwcy1saW51eC1uYXQtRGVmaW5lLV9BQklPMzItaWYtbm90LWRlZmluZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmNTRjNzQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAzLW1pcHMtbGludXgtbmF0LURlZmluZS1fQUJJTzMyLWlmLW5vdC1kZWZpbmVkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSBiMTRhNTdkOTBlMWNkZDgxNDRjZGE0Yzg4ODJiZDFkYjQ0ZDI2ZGFiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjMgTWFyIDIwMTYgMDY6MzA6MDkgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwMy8xMV0gbWlwcy1saW51eC1uYXQ6IERlZmluZSBfQUJJTzMyIGlmIG5vdCBkZWZpbmVkCi0KLVRoaXMgaGVscHMgYnVpbGRpbmcgZ2RiIG9uIG1pcHM2NCBvbiBtdXNsLCBzaW5jZQotbXVzbCBkb2VzIG5vdCBwcm92aWRlIHNnaWRlZnMuaCB0aGlzIGRlZmluZSBpcwotb25seSBkZWZpbmVkIHdoZW4gR0NDIGlzIHVzaW5nIG8zMiBBQkksIGluIHRoYXQKLWNhc2UgZ2NjIGVtaXRzIGl0IGFzIGJ1aWx0LWluIGRlZmluZSBhbmQgaGVuY2UKLWl0IHdvcmtzIG9rIGZvciBtaXBzMzIKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2RiL21pcHMtbGludXgtbmF0LmMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9nZGIvbWlwcy1saW51eC1uYXQuYyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCi1pbmRleCAzMjgzNWMxNmIyLi42OGE3NTg3YWYyIDEwMDY0NAotLS0tIGEvZ2RiL21pcHMtbGludXgtbmF0LmMKLSsrKyBiL2dkYi9taXBzLWxpbnV4LW5hdC5jCi1AQCAtNDEsNiArNDEsMTAgQEAKLSAjaWZuZGVmIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEKLSAjZGVmaW5lIFBUUkFDRV9HRVRfVEhSRUFEX0FSRUEgMjUKLSAjZW5kaWYKLSsvKiBtdXNsIGRvZXMgbm90IGRlZmluZSBhbmQgcmVsaWVzIG9uIGNvbXBpbGVyIGJ1aWx0LWluIG1hY3JvcyBmb3IgaXQgICAqLwotKyNpZm5kZWYgX0FCSU8zMgotKyNkZWZpbmUgX0FCSU8zMiAxCi0rI2VuZGlmCi0gCi0gY2xhc3MgbWlwc19saW51eF9uYXRfdGFyZ2V0IGZpbmFsIDogcHVibGljIGxpbnV4X25hdF90cmFkX3RhcmdldAotIHsKLS0tIAotMi4xOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMy1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDAzLXBwYy1wdHJhY2UtRGVmaW5lLXB0X3JlZ3MtdWFwaV9wdF9yZWdzLW9uLUdMSUJDLXN5c3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzRiYWI3YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwMy1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gZDU4MTdiY2YyZjczMTM2OTliZmE4NWI0MTIyMGQ4NjJkYjMyNzY2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE4OjMyOjE0IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHBwYy9wdHJhY2U6IERlZmluZSBwdF9yZWdzIHVhcGlfcHRfcmVncyBvbiAhR0xJQkMgc3lzdGVtcworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jIHwgNiArKysrKysKKyBnZGIvbmF0L3BwYy1saW51eC5oICAgICAgICAgICB8IDYgKysrKysrCisgMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jCitpbmRleCA1ZDhkNjdiZWMyLi5mZmNmNjVhYjU4IDEwMDY0NAorLS0tIGEvZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93LmMKKysrKyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jCitAQCAtMjMsNyArMjMsMTMgQEAKKyAjaW5jbHVkZSAiZWxmL2NvbW1vbi5oIgorICNpbmNsdWRlIDxzeXMvdWlvLmg+CisgI2luY2x1ZGUgPGVsZi5oPgorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrIyBkZWZpbmUgcHRfcmVncyB1YXBpX3B0X3JlZ3MKKysjZW5kaWYKKyAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrIyB1bmRlZiBwdF9yZWdzCisrI2VuZGlmCisgCisgI2luY2x1ZGUgImFyY2gvcHBjLWxpbnV4LWNvbW1vbi5oIgorICNpbmNsdWRlICJhcmNoL3BwYy1saW51eC10ZGVzYy5oIgorZGlmZiAtLWdpdCBhL2dkYi9uYXQvcHBjLWxpbnV4LmggYi9nZGIvbmF0L3BwYy1saW51eC5oCitpbmRleCBkOTM3YTY1YjY5Li4xZmQ1NGI0YTBlIDEwMDY0NAorLS0tIGEvZ2RiL25hdC9wcGMtbGludXguaAorKysrIGIvZ2RiL25hdC9wcGMtbGludXguaAorQEAgLTE4LDcgKzE4LDEzIEBACisgI2lmbmRlZiBOQVRfUFBDX0xJTlVYX0gKKyAjZGVmaW5lIE5BVF9QUENfTElOVVhfSAorIAorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrIyBkZWZpbmUgcHRfcmVncyB1YXBpX3B0X3JlZ3MKKysjZW5kaWYKKyAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgorKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCisrIyB1bmRlZiBwdF9yZWdzCisrI2VuZGlmCisgI2luY2x1ZGUgPGFzbS9jcHV0YWJsZS5oPgorIAorIC8qIFRoaXMgc29tZXRpbWVzIGlzbid0IGRlZmluZWQuICAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA0LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDQtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZDE2NWQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA0LUFkZC1zdXBwb3J0LWZvci1SZW5lc2FzLVNILXNoNC1hcmNoaXRlY3R1cmUucGF0Y2gKQEAgLTAsMCArMSw5MTEgQEAKK0Zyb20gNTA1ZjEwYTBlYTFhOGJiYTA1ODQ4NTlkOWEzNDhiYjc3OTU5M2VjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDIgTWFyIDIwMTUgMDI6MzE6MTIgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIHN1cHBvcnQgZm9yIFJlbmVzYXMgU0ggKHNoNCkgYXJjaGl0ZWN0dXJlLgorCitnZGIgKDcuNC0xfmN2czIwMTExMTE3LjIpIGV4cGVyaW1lbnRhbDsgdXJnZW5jeT1sb3cKKyAuCisgICAqIEFkZCBSZW5lc2FzIFNIIChzaDQpIHN1cHBvcnQgKENsb3NlczogIzU3NjI0MikKKyAgICAgLSBUaGFua3MgTm9idWhpcm8gSXdhbWF0c3UsIFRha2FzaGkgWW9zaGlpLgorQXV0aG9yOiBIZWN0b3IgT3JvbiA8enVtYmlAZGViaWFuLm9yZz4KK0J1Zy1EZWJpYW46IGh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvNTc2MjQyCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdkYi9NYWtlZmlsZS5pbiAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCisgZ2RiL2NvbmZpZ3VyZS5ob3N0ICAgICAgICAgICAgICAgICAgIHwgICAxICsKKyBnZGIvc2gtbGludXgtdGRlcC5jICAgICAgICAgICAgICAgICAgfCA1MTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgZ2RiL3NoLXRkZXAuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUzICsrLQorIGdkYi9zaC10ZGVwLmggICAgICAgICAgICAgICAgICAgICAgICB8ICA0OSArKysKKyBnZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAgfCAgIDUgKworIGdkYi90ZXN0c3VpdGUvZ2RiLmFzbS9zaC5pbmMgICAgICAgICB8ICAgMyArLQorIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5jICAgICB8ICAgMyArCisgZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmMgICAgIHwgICA0ICsKKyBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5jICAgICAgfCAgIDMgKworIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jICAgICB8ICAgNCArCisgMTEgZmlsZXMgY2hhbmdlZCwgNjE3IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCitpbmRleCBjM2UwNzRiMjFmLi40MmRkN2FmNTljIDEwMDY0NAorLS0tIGEvZ2RiL01ha2VmaWxlLmluCisrKysgYi9nZGIvTWFrZWZpbGUuaW4KK0BAIC0yMzE3LDYgKzIzMTcsOCBAQCBBTExERVBGSUxFUyA9IFwKKyAJc2gtbmJzZC1uYXQuYyBcCisgCXNoLW5ic2QtdGRlcC5jIFwKKyAJc2gtdGRlcC5jIFwKKysJc2gtbGludXgtdGRlcC5jIFwKKysJc2gtbGludXgtbmF0LmMgXAorIAlzb2wyLXRkZXAuYyBcCisgCXNvbGliLWFpeC5jIFwKKyAJc29saWItc3ZyNC5jIFwKK2RpZmYgLS1naXQgYS9nZGIvY29uZmlndXJlLmhvc3QgYi9nZGIvY29uZmlndXJlLmhvc3QKK2luZGV4IGNlNTI4MjM3MjkuLjViNTE3M2E3MWEgMTAwNjQ0CistLS0gYS9nZGIvY29uZmlndXJlLmhvc3QKKysrKyBiL2dkYi9jb25maWd1cmUuaG9zdAorQEAgLTE0OCw2ICsxNDgsNyBAQCByaXNjdiotKi1saW51eCopCWdkYl9ob3N0PWxpbnV4IDs7CisgCisgczM5MCotKi1saW51eCopCQlnZGJfaG9zdD1saW51eCA7OworIAorK3NoKi0qLWxpbnV4KikJCWdkYl9ob3N0PWxpbnV4IDs7Cisgc2gqLSotbmV0YnNkZWxmKiB8IHNoKi0qLWtuZXRic2QqLWdudSkKKyAJCQlnZGJfaG9zdD1uYnNkIDs7Cisgc2gqLSotb3BlbmJzZCopCQlnZGJfaG9zdD1uYnNkIDs7CitkaWZmIC0tZ2l0IGEvZ2RiL3NoLWxpbnV4LXRkZXAuYyBiL2dkYi9zaC1saW51eC10ZGVwLmMKK2luZGV4IDEzYzEwZWVlZGEuLjFkMGQ1ODNhNjQgMTAwNjQ0CistLS0gYS9nZGIvc2gtbGludXgtdGRlcC5jCisrKysgYi9nZGIvc2gtbGludXgtdGRlcC5jCitAQCAtMTgsMTQgKzE4LDM3IEBACisgICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworIAorICNpbmNsdWRlICJkZWZzLmgiCisrI2luY2x1ZGUgImdkYmNvcmUuaCIKKysjaW5jbHVkZSAiZnJhbWUuaCIKKysjaW5jbHVkZSAiZnJhbWUtYmFzZS5oIgorKyNpbmNsdWRlICJmcmFtZS11bndpbmQuaCIKKysjaW5jbHVkZSAiZHdhcmYyLWZyYW1lLmgiCisrI2luY2x1ZGUgInZhbHVlLmgiCisrI2luY2x1ZGUgInJlZ2NhY2hlLmgiCisrI2luY2x1ZGUgImluZmVyaW9yLmgiCisgI2luY2x1ZGUgIm9zYWJpLmgiCisgCisrI2luY2x1ZGUgInJlZ2dyb3Vwcy5oIgorKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCisrI2luY2x1ZGUgImZsb2F0Zm9ybWF0LmgiCisgI2luY2x1ZGUgInNvbGliLXN2cjQuaCIKKyAjaW5jbHVkZSAic3ltdGFiLmgiCisrI2luY2x1ZGUgImdkYl9zdHJpbmcuaCIKKysjaW5jbHVkZSAiY29tbWFuZC5oIgorKyNpbmNsdWRlICJnZGJfYXNzZXJ0LmgiCisgCisgI2luY2x1ZGUgInRyYWQtZnJhbWUuaCIKKyAjaW5jbHVkZSAidHJhbXAtZnJhbWUuaCIKKyAKKysjaW5jbHVkZSA8c3lzL3B0cmFjZS5oPgorKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KKysjaW5jbHVkZSA8c3lzL3BhcmFtLmg+CisrI2luY2x1ZGUgPHN5cy91c2VyLmg+CisrI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisrCisrI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKysKKysjaW5jbHVkZSAicmVnc2V0LmgiCisgI2luY2x1ZGUgImdsaWJjLXRkZXAuaCIKKyAjaW5jbHVkZSAic2gtdGRlcC5oIgorICNpbmNsdWRlICJsaW51eC10ZGVwLmgiCitAQCAtMTgxLDkgKzIwNCw1MDUgQEAgc3RhdGljIHN0cnVjdCB0cmFtcF9mcmFtZSBzaF9saW51eF9ydF9zaWdyZXR1cm5fdHJhbXBfZnJhbWUgPSB7CisgICBzaF9saW51eF9ydF9zaWdyZXR1cm5faW5pdAorIH07CisgCisrLyogUmVjb2duaXppbmcgc2lnbmFsIGhhbmRsZXIgZnJhbWVzLiAgKi8KKysKKysvKiBHTlUvTGludXggaGFzIHR3byBmbGF2b3JzIG9mIHNpZ25hbHMuICBOb3JtYWwgc2lnbmFsIGhhbmRsZXJzLCBhbmQKKysgICAicmVhbHRpbWUiIChSVCkgc2lnbmFscy4gIFRoZSBSVCBzaWduYWxzIGNhbiBwcm92aWRlIGFkZGl0aW9uYWwKKysgICBpbmZvcm1hdGlvbiB0byB0aGUgc2lnbmFsIGhhbmRsZXIgaWYgdGhlIFNBX1NJR0lORk8gZmxhZyBpcyBzZXQKKysgICB3aGVuIGVzdGFibGlzaGluZyBhIHNpZ25hbCBoYW5kbGVyIHVzaW5nIGBzaWdhY3Rpb24nLiAgSXQgaXMgbm90CisrICAgdW5saWtlbHkgdGhhdCBmdXR1cmUgdmVyc2lvbnMgb2YgR05VL0xpbnV4IHdpbGwgc3VwcG9ydCBTQV9TSUdJTkZPCisrICAgZm9yIG5vcm1hbCBzaWduYWxzIHRvby4gICovCisrCisrLyogV2hlbiB0aGUgU0ggTGludXgga2VybmVsIGNhbGxzIGEgc2lnbmFsIGhhbmRsZXIgYW5kIHRoZQorKyAgIFNBX1JFU1RPUkVSIGZsYWcgaXNuJ3Qgc2V0LCB0aGUgcmV0dXJuIGFkZHJlc3MgcG9pbnRzIHRvIGEgYml0IG9mCisrICAgY29kZSBvbiB0aGUgc3RhY2suICBUaGlzIGZ1bmN0aW9uIHJldHVybnMgd2hldGhlciB0aGUgUEMgYXBwZWFycyB0bworKyAgIGJlIHdpdGhpbiB0aGlzIGJpdCBvZiBjb2RlLgorKworKyAgIFRoZSBpbnN0cnVjdGlvbiBzZXF1ZW5jZSBmb3Igbm9ybWFsIHNpZ25hbHMgaXMKKysgICAgICAgbW92LncgIDFmLHIzCisrICAgICAgIHRyYXBhICAjMTYKKysgICAgICAgb3IgICAgIHIwLCByMAorKyAgICAgICBvciAgICAgcjAsIHIwCisrICAgICAgIG9yICAgICByMCwgcjAKKysgICAgICAgb3IgICAgIHIwLCByMAorKyAgICAgICBvciAgICAgcjAsIHIwCisrICAgIDE6IC53b3JkICBfX05SX3NpZ3JldHVybgorKyAgIG9yIDB4OTMwNSAweGMzMTAgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDAwNzcuCisrCisrICAgQ2hlY2tpbmcgZm9yIHRoZSBjb2RlIHNlcXVlbmNlIHNob3VsZCBiZSBzb21ld2hhdCByZWxpYWJsZSwgYmVjYXVzZQorKyAgIHRoZSBlZmZlY3QgaXMgdG8gY2FsbCB0aGUgc3lzdGVtIGNhbGwgc2lncmV0dXJuLiAgVGhpcyBpcyB1bmxpa2VseQorKyAgIHRvIG9jY3VyIGFueXdoZXJlIG90aGVyIHRoYW4gYSBzaWduYWwgdHJhbXBvbGluZS4KKysKKysgICBJdCBraW5kIG9mIHN1Y2tzIHRoYXQgd2UgaGF2ZSB0byByZWFkIG1lbW9yeSBmcm9tIHRoZSBwcm9jZXNzIGluCisrICAgb3JkZXIgdG8gaWRlbnRpZnkgYSBzaWduYWwgdHJhbXBvbGluZSwgYnV0IHRoZXJlIGRvZXNuJ3Qgc2VlbSB0byBiZQorKyAgIGFueSBvdGhlciB3YXkuICBUaGUgUENfSU5fU0lHVFJBTVAgbWFjcm8gaW4gdG0tbGludXguaCBhcnJhbmdlcyB0bworKyAgIG9ubHkgY2FsbCB1cyBpZiBubyBmdW5jdGlvbiBuYW1lIGNvdWxkIGJlIGlkZW50aWZpZWQsIHdoaWNoIHNob3VsZAorKyAgIGJlIHRoZSBjYXNlIHNpbmNlIHRoZSBjb2RlIGlzIG9uIHRoZSBzdGFjay4KKysKKysgICBEZXRlY3Rpb24gb2Ygc2lnbmFsIHRyYW1wb2xpbmVzIGZvciBoYW5kbGVycyB0aGF0IHNldCB0aGUKKysgICBTQV9SRVNUT1JFUiBmbGFnIGlzIGluIGdlbmVyYWwgbm90IHBvc3NpYmxlLiAgVW5mb3J0dW5hdGVseSB0aGlzIGlzCisrICAgd2hhdCB0aGUgR05VIEMgTGlicmFyeSBoYXMgYmVlbiBkb2luZyBmb3IgcXVpdGUgc29tZSB0aW1lIG5vdy4KKysgICBIb3dldmVyLCBhcyBvZiB2ZXJzaW9uIDIuMS4yLCB0aGUgR05VIEMgTGlicmFyeSB1c2VzIHNpZ25hbAorKyAgIHRyYW1wb2xpbmVzIChuYW1lZCBfX3Jlc3RvcmUgYW5kIF9fcmVzdG9yZV9ydCkgdGhhdCBhcmUgaWRlbnRpY2FsCisrICAgdG8gdGhlIG9uZXMgdXNlZCBieSB0aGUga2VybmVsLiAgVGhlcmVmb3JlLCB0aGVzZSB0cmFtcG9saW5lcyBhcmUKKysgICBzdXBwb3J0ZWQgdG9vLiAgKi8KKysKKysjZGVmaW5lIE1PVlcobikJICgweDkzMDB8KChuKS0yKSkJLyogTW92ZSBtZW0gd29yZCBhdCBQQytuIHRvIFIzICovCisrI2RlZmluZSBUUkFQMTYJIDB4YzMxMAkJCS8qIFN5c2NhbGwgdy9ubyBhcmdzIChOUiBpbiBSMykgKi8KKysjZGVmaW5lIE9SX1IwX1IwIDB4MjAwYgkJCS8qIG9yIHIwLHIwIChpbnNlcnQgdG8gYXZvaWQgaGFyZHdhcmUgYnVnKSAqLworKworKyNkZWZpbmUgTElOVVhfU0lHVFJBTVBfSU5TTjAJTU9WVyg3KQkJLyogTW92ZSBtZW0gd29yZCBhdCBQQys3IHRvIFIzICovCisrI2RlZmluZSBMSU5VWF9TSUdUUkFNUF9JTlNOMQlUUkFQMTYJCS8qIFN5c2NhbGwgdy9ubyBhcmdzIChOUiBpbiBSMykgKi8KKysjZGVmaW5lIExJTlVYX1NJR1RSQU1QX0lOU04yCU9SX1IwX1IwCS8qIG9yIHIwLHIwIChpbnNlcnQgdG8gYXZvaWQgaGFyZHdhcmUgYnVnKSAqLworKworK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBsaW51eF9zaWd0cmFtcF9jb2RlW10gPQorK3sKKysgIExJTlVYX1NJR1RSQU1QX0lOU04wLAorKyAgTElOVVhfU0lHVFJBTVBfSU5TTjEsCisrICBMSU5VWF9TSUdUUkFNUF9JTlNOMiwKKysgIExJTlVYX1NJR1RSQU1QX0lOU04yLAorKyAgTElOVVhfU0lHVFJBTVBfSU5TTjIsCisrICBMSU5VWF9TSUdUUkFNUF9JTlNOMiwKKysgIExJTlVYX1NJR1RSQU1QX0lOU04yLAorKyAgX19OUl9zaWdyZXR1cm4KKyt9OworKworKyNkZWZpbmUgTElOVVhfU0lHVFJBTVBfTEVOIChzaXplb2YgbGludXhfc2lndHJhbXBfY29kZSkKKysKKysvKiBJZiBQQyBpcyBpbiBhIHNpZ3RyYW1wIHJvdXRpbmUsIHJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgc3RhcnQgb2YKKysgICB0aGUgcm91dGluZS4gIE90aGVyd2lzZSwgcmV0dXJuIDAuICAqLworKworK3N0YXRpYyBDT1JFX0FERFIKKytzaF9saW51eF9zaWd0cmFtcF9zdGFydCAoc3RydWN0IGZyYW1lX2luZm8gKm5leHRfZnJhbWUpCisreworKyAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1lX3BjIChuZXh0X2ZyYW1lKTsKKysgIGdkYl9ieXRlIGJ1ZltMSU5VWF9TSUdUUkFNUF9MRU5dOworKworKyAgLyogV2Ugb25seSByZWNvZ25pemUgYSBzaWduYWwgdHJhbXBvbGluZSBpZiBQQyBpcyBhdCB0aGUgc3RhcnQgb2YKKysgICAgIG9uZSBvZiB0aGUgdGhyZWUgaW5zdHJ1Y3Rpb25zLiAgV2Ugb3B0aW1pemUgZm9yIGZpbmRpbmcgdGhlIFBDIGF0CisrICAgICB0aGUgc3RhcnQsIGFzIHdpbGwgYmUgdGhlIGNhc2Ugd2hlbiB0aGUgdHJhbXBvbGluZSBpcyBub3QgdGhlCisrICAgICBmaXJzdCBmcmFtZSBvbiB0aGUgc3RhY2suICBXZSBhc3N1bWUgdGhhdCBpbiB0aGUgY2FzZSB3aGVyZSB0aGUKKysgICAgIFBDIGlzIG5vdCBhdCB0aGUgc3RhcnQgb2YgdGhlIGluc3RydWN0aW9uIHNlcXVlbmNlLCB0aGVyZSB3aWxsIGJlCisrICAgICBhIGZldyB0cmFpbGluZyByZWFkYWJsZSBieXRlcyBvbiB0aGUgc3RhY2suICAqLworKworKyAgaWYgKCFzYWZlX2ZyYW1lX3Vud2luZF9tZW1vcnkgKG5leHRfZnJhbWUsIHBjLCBidWYsIExJTlVYX1NJR1RSQU1QX0xFTikpCisrICAgIHJldHVybiAwOworKworKyAgaWYgKGJ1ZlswXSAhPSBMSU5VWF9TSUdUUkFNUF9JTlNOMCkKKysgICAgeworKyAgICAgIGlmIChidWZbMF0gIT0gTElOVVhfU0lHVFJBTVBfSU5TTjEpCisrICAgICAgICByZXR1cm4gMDsKKysKKysgICAgICBwYyAtPSAyOworKworKyAgICAgIGlmICghc2FmZV9mcmFtZV91bndpbmRfbWVtb3J5IChuZXh0X2ZyYW1lLCBwYywgYnVmLCBMSU5VWF9TSUdUUkFNUF9MRU4pKQorKwlyZXR1cm4gMDsKKysgICAgfQorKworKyAgaWYgKG1lbWNtcCAoYnVmLCBsaW51eF9zaWd0cmFtcF9jb2RlLCBMSU5VWF9TSUdUUkFNUF9MRU4pICE9IDApCisrICAgIHJldHVybiAwOworKworKyAgcmV0dXJuIHBjOworK30KKysKKysvKiBUaGlzIGZ1bmN0aW9uIGRvZXMgdGhlIHNhbWUgZm9yIFJUIHNpZ25hbHMuICBIZXJlIHRoZSBpbnN0cnVjdGlvbgorKyAgIHNlcXVlbmNlIGlzCisrICAgICAgIG1vdi53ICAxZixyMworKyAgICAgICB0cmFwYSAgIzE2CisrICAgICAgIG9yICAgICByMCwgcjAKKysgICAgICAgb3IgICAgIHIwLCByMAorKyAgICAgICBvciAgICAgcjAsIHIwCisrICAgICAgIG9yICAgICByMCwgcjAKKysgICAgICAgb3IgICAgIHIwLCByMAorKyAgICAxOiAud29yZCAgX19OUl9ydF9zaWdyZXR1cm4KKysgICBvciAweDkzMDUgMHhjMzEwIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgwMGFkLgorKworKyAgIFRoZSBlZmZlY3QgaXMgdG8gY2FsbCB0aGUgc3lzdGVtIGNhbGwgcnRfc2lncmV0dXJuLiAgKi8KKysKKysjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0lOU04wCQlNT1ZXKDcpCQkvKiBNb3ZlIG1lbSB3b3JkIGF0IFBDKzcgdG8gUjMgKi8KKysjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0lOU04xCQlUUkFQMTYJCS8qIFN5c2NhbGwgdy9ubyBhcmdzIChOUiBpbiBSMykgKi8KKysjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yCQlPUl9SMF9SMAkvKiBvciByMCxyMCAoaW5zZXJ0IHRvIGF2b2lkIGhhcmR3YXJlIGJ1ZykgKi8KKysKKytzdGF0aWMgY29uc3QgdW5zaWduZWQgc2hvcnQgbGludXhfcnRfc2lndHJhbXBfY29kZVtdID0KKyt7CisrICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMCwKKysgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04xLAorKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIsCisrICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMiwKKysgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yLAorKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIsCisrICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMiwKKysgIF9fTlJfcnRfc2lncmV0dXJuCisrfTsKKysKKysjZGVmaW5lIExJTlVYX1JUX1NJR1RSQU1QX0xFTiAoc2l6ZW9mIGxpbnV4X3J0X3NpZ3RyYW1wX2NvZGUpCisrCisrLyogSWYgUEMgaXMgaW4gYSBSVCBzaWd0cmFtcCByb3V0aW5lLCByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIHN0YXJ0CisrICAgb2YgdGhlIHJvdXRpbmUuICBPdGhlcndpc2UsIHJldHVybiAwLiAgKi8KKysKKytzdGF0aWMgQ09SRV9BRERSCisrc2hfbGludXhfcnRfc2lndHJhbXBfc3RhcnQgKHN0cnVjdCBmcmFtZV9pbmZvICpuZXh0X2ZyYW1lKQorK3sKKysgIENPUkVfQUREUiBwYyA9IGdldF9mcmFtZV9wYyAobmV4dF9mcmFtZSk7CisrICBnZGJfYnl0ZSBidWZbTElOVVhfUlRfU0lHVFJBTVBfTEVOXTsKKysKKysgIC8qIFdlIG9ubHkgcmVjb2duaXplIGEgc2lnbmFsIHRyYW1wb2xpbmUgaWYgUEMgaXMgYXQgdGhlIHN0YXJ0IG9mCisrICAgICBvbmUgb2YgdGhlIHR3byBpbnN0cnVjdGlvbnMuICBXZSBvcHRpbWl6ZSBmb3IgZmluZGluZyB0aGUgUEMgYXQKKysgICAgIHRoZSBzdGFydCwgYXMgd2lsbCBiZSB0aGUgY2FzZSB3aGVuIHRoZSB0cmFtcG9saW5lIGlzIG5vdCB0aGUKKysgICAgIGZpcnN0IGZyYW1lIG9uIHRoZSBzdGFjay4gIFdlIGFzc3VtZSB0aGF0IGluIHRoZSBjYXNlIHdoZXJlIHRoZQorKyAgICAgUEMgaXMgbm90IGF0IHRoZSBzdGFydCBvZiB0aGUgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UsIHRoZXJlIHdpbGwgYmUKKysgICAgIGEgZmV3IHRyYWlsaW5nIHJlYWRhYmxlIGJ5dGVzIG9uIHRoZSBzdGFjay4gICovCisrCisrICBpZiAoIXNhZmVfZnJhbWVfdW53aW5kX21lbW9yeSAobmV4dF9mcmFtZSwgcGMsIGJ1ZiwgTElOVVhfUlRfU0lHVFJBTVBfTEVOKSkKKysgICAgcmV0dXJuIDA7CisrCisrICBpZiAoYnVmWzBdICE9IExJTlVYX1JUX1NJR1RSQU1QX0lOU04wKQorKyAgICB7CisrICAgICAgaWYgKGJ1ZlswXSAhPSBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMSkKKysJcmV0dXJuIDA7CisrCisrICAgICAgcGMgLT0gMjsKKysKKysgICAgICBpZiAoIXNhZmVfZnJhbWVfdW53aW5kX21lbW9yeSAobmV4dF9mcmFtZSwgcGMsIGJ1ZiwKKysJCQkJICAgICBMSU5VWF9SVF9TSUdUUkFNUF9MRU4pKQorKwlyZXR1cm4gMDsKKysgICAgfQorKworKyAgaWYgKG1lbWNtcCAoYnVmLCBsaW51eF9ydF9zaWd0cmFtcF9jb2RlLCBMSU5VWF9SVF9TSUdUUkFNUF9MRU4pICE9IDApCisrICAgIHJldHVybiAwOworKworKyAgcmV0dXJuIHBjOworK30KKysKKysvKiBSZXR1cm4gd2hldGhlciBQQyBpcyBpbiBhIEdOVS9MaW51eCBzaWd0cmFtcCByb3V0aW5lLiAgKi8KKysKKytzdGF0aWMgaW50Cisrc2hfbGludXhfc2lndHJhbXBfcCAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUpCisreworKyAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1lX3BjICh0aGlzX2ZyYW1lKTsKKysgIGNoYXIgKm5hbWU7CisrCisrICBmaW5kX3BjX3BhcnRpYWxfZnVuY3Rpb24gKHBjLCAmbmFtZSwgTlVMTCwgTlVMTCk7CisrCisrICAvKiBJZiB3ZSBoYXZlIE5BTUUsIHdlIGNhbiBvcHRpbWl6ZSB0aGUgc2VhcmNoLiAgVGhlIHRyYW1wb2xpbmVzIGFyZQorKyAgICAgbmFtZWQgX19yZXN0b3JlIGFuZCBfX3Jlc3RvcmVfcnQuICBIb3dldmVyLCB0aGV5IGFyZW4ndCBkeW5hbWljYWxseQorKyAgICAgZXhwb3J0ZWQgZnJvbSB0aGUgc2hhcmVkIEMgbGlicmFyeSwgc28gdGhlIHRyYW1wb2xpbmUgbWF5IGFwcGVhciB0bworKyAgICAgYmUgcGFydCBvZiB0aGUgcHJlY2VkaW5nIGZ1bmN0aW9uLiAgVGhpcyBzaG91bGQgYWx3YXlzIGJlIHNpZ2FjdGlvbiwKKysgICAgIF9fc2lnYWN0aW9uLCBvciBfX2xpYmNfc2lnYWN0aW9uIChhbGwgYWxpYXNlcyB0byB0aGUgc2FtZSBmdW5jdGlvbikuICAqLworKyAgaWYgKG5hbWUgPT0gTlVMTCB8fCBzdHJzdHIgKG5hbWUsICJzaWdhY3Rpb24iKSAhPSBOVUxMKQorKyAgICByZXR1cm4gKHNoX2xpbnV4X3NpZ3RyYW1wX3N0YXJ0ICh0aGlzX2ZyYW1lKSAhPSAwCisrCSAgICB8fCBzaF9saW51eF9ydF9zaWd0cmFtcF9zdGFydCAodGhpc19mcmFtZSkgIT0gMCk7CisrCisrICByZXR1cm4gKHN0cmNtcCAoIl9fcmVzdG9yZSIsIG5hbWUpID09IDAKKysJICB8fCBzdHJjbXAgKCJfX3Jlc3RvcmVfcnQiLCBuYW1lKSA9PSAwKTsKKyt9CisrCisrLyogT2Zmc2V0IHRvIHN0cnVjdCBzaWdjb250ZXh0IGluIHVjb250ZXh0LCBmcm9tIDxhc20vdWNvbnRleHQuaD4uICAqLworKyNkZWZpbmUgU0hfTElOVVhfVUNPTlRFWFRfU0lHQ09OVEVYVF9PRkZTRVQgMTIKKysKKysKKysvKiBBc3N1bWluZyBORVhUX0ZSQU1FIGlzIGEgZnJhbWUgZm9sbG93aW5nIGEgR05VL0xpbnV4IHNpZ3RyYW1wCisrICAgcm91dGluZSwgcmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBhc3NvY2lhdGVkIHNpZ2NvbnRleHQgc3RydWN0dXJlLiAgKi8KKysKKytzdGF0aWMgQ09SRV9BRERSCisrc2hfbGludXhfc2lnY29udGV4dF9hZGRyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSkKKyt7CisrICBDT1JFX0FERFIgcGM7CisrICBDT1JFX0FERFIgc3A7CisrCisrICBzcCA9IGdldF9mcmFtZV9yZWdpc3Rlcl91bnNpZ25lZCAodGhpc19mcmFtZSwgU1BfUkVHTlVNKTsKKysKKysgIHBjID0gc2hfbGludXhfc2lndHJhbXBfc3RhcnQgKHRoaXNfZnJhbWUpOworKyAgaWYgKHBjKQorKyAgICB7CisrICAgICAgcmV0dXJuIHNwOworKyAgICB9CisrCisrICBwYyA9IHNoX2xpbnV4X3J0X3NpZ3RyYW1wX3N0YXJ0ICh0aGlzX2ZyYW1lKTsKKysgIGlmIChwYykKKysgICAgeworKyAgICAgIENPUkVfQUREUiB1Y29udGV4dF9hZGRyOworKworKyAgICAgIC8qIFRoZSBzaWdjb250ZXh0IHN0cnVjdHVyZSBpcyBwYXJ0IG9mIHRoZSB1c2VyIGNvbnRleHQuICBBCisrCSBwb2ludGVyIHRvIHRoZSB1c2VyIGNvbnRleHQgaXMgcGFzc2VkIGFzIHRoZSB0aGlyZCBhcmd1bWVudAorKwkgdG8gdGhlIHNpZ25hbCBoYW5kbGVyLiAgKi8KKysgICAgICB1Y29udGV4dF9hZGRyID0gZ2V0X2ZyYW1lX3JlZ2lzdGVyX3Vuc2lnbmVkICh0aGlzX2ZyYW1lLCBBUkcwX1JFR05VTSsyKTsKKysgICAgICByZXR1cm4gdWNvbnRleHRfYWRkciArIFNIX0xJTlVYX1VDT05URVhUX1NJR0NPTlRFWFRfT0ZGU0VUOworKyAgICB9CisrCisrICBlcnJvciAoIkNvdWxkbid0IHJlY29nbml6ZSBzaWduYWwgdHJhbXBvbGluZS4iKTsKKysgIHJldHVybiAwOworK30KKysKKysvKiBTaWduYWwgdHJhbXBvbGluZXMuICAqLworK2V4dGVybiBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKnNoX2FsbG9jX2ZyYW1lX2NhY2hlICh2b2lkKTsKKysKKytzdGF0aWMgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICoKKytzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQorK3sKKysgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGU7CisrICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZXRfY3VycmVudF9hcmNoICgpKTsKKysgIENPUkVfQUREUiBzaWdjb250ZXh0X2FkZHI7CisrCisrICBpZiAoKnRoaXNfY2FjaGUpCisrICAgIHJldHVybiAqdGhpc19jYWNoZTsKKysKKysgIGNhY2hlID0gc2hfYWxsb2NfZnJhbWVfY2FjaGUgKCk7CisrCisrICBjYWNoZS0+YmFzZSA9IGdldF9mcmFtZV9yZWdpc3Rlcl91bnNpZ25lZCAodGhpc19mcmFtZSwgU1BfUkVHTlVNKTsKKysgIHNpZ2NvbnRleHRfYWRkciA9IHRkZXAtPnNpZ2NvbnRleHRfYWRkciAodGhpc19mcmFtZSk7CisrICBpZiAodGRlcC0+c2NfcmVnX29mZnNldCkKKysgICAgeworKyAgICAgIGludCBpOworKworKyAgICAgIGdkYl9hc3NlcnQgKHRkZXAtPnNjX251bV9yZWdzIDw9IFNIX05VTV9SRUdTKTsKKysKKysgICAgICBmb3IgKGkgPSAwOyBpIDwgdGRlcC0+c2NfbnVtX3JlZ3M7IGkrKykKKysJaWYgKHRkZXAtPnNjX3JlZ19vZmZzZXRbaV0gIT0gLTEpCisrCSAgY2FjaGUtPnNhdmVkX3JlZ3NbaV0gPSBzaWdjb250ZXh0X2FkZHIgKyB0ZGVwLT5zY19yZWdfb2Zmc2V0W2ldOworKyAgICB9CisrCisrICAqdGhpc19jYWNoZSA9IGNhY2hlOworKyAgcmV0dXJuIGNhY2hlOworK30KKysKKytzdGF0aWMgdm9pZAorK3NoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3RoaXNfaWQgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSwKKysJCQkgICAgIHN0cnVjdCBmcmFtZV9pZCAqdGhpc19pZCkKKyt7CisrICBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKmNhY2hlID0KKysgICAgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfY2FjaGUgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUpOworKworKyAgKCp0aGlzX2lkKSA9IGZyYW1lX2lkX2J1aWxkIChjYWNoZS0+YmFzZSArIDY0LCBjYWNoZS0+cGMpOworK30KKysKKytleHRlcm4gc3RydWN0IHZhbHVlICogc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoKTsKKytzdGF0aWMgc3RydWN0IHZhbHVlICoKKytzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9wcmV2X3JlZ2lzdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwKKysgICAgICAgICAgICAgICAgICAgdm9pZCAqKnRoaXNfY2FjaGUsIGludCByZWdudW0pCisreworKyAgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfY2FjaGUgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUpOworKworKyAgcmV0dXJuIHNoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUsIHJlZ251bSk7CisrfQorKworK3N0YXRpYyBpbnQKKytzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9zbmlmZmVyIChjb25zdCBzdHJ1Y3QgZnJhbWVfdW53aW5kICpzZWxmLAorKyAgICAgICAgICAgICAgICAgc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsCisrICAgICAgICAgICAgICAgICB2b2lkICoqdGhpc19wcm9sb2d1ZV9jYWNoZSkKKyt7CisrICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZXRfZnJhbWVfYXJjaCAodGhpc19mcmFtZSkpOworKworKyAgLyogV2Ugc2hvdWxkbid0IGV2ZW4gYm90aGVyIGlmIHdlIGRvbid0IGhhdmUgYSBzaWdjb250ZXh0X2FkZHIKKysgICAgIGhhbmRsZXIuICAqLworKyAgaWYgKHRkZXAtPnNpZ2NvbnRleHRfYWRkciA9PSBOVUxMKQorKyAgICByZXR1cm4gMDsKKysKKysgIGlmICh0ZGVwLT5zaWd0cmFtcF9wICE9IE5VTEwpCisrICAgIHsKKysgICAgICBpZiAodGRlcC0+c2lndHJhbXBfcCAodGhpc19mcmFtZSkpCisrICAgIHJldHVybiAxOworKyAgICB9CisrCisrICByZXR1cm4gMDsKKyt9CisrCisrc3RhdGljIGNvbnN0IHN0cnVjdCBmcmFtZV91bndpbmQgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfdW53aW5kID0KKyt7CisrICBTSUdUUkFNUF9GUkFNRSwKKysgIHNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3RoaXNfaWQsCisrICBzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9wcmV2X3JlZ2lzdGVyLAorKyAgTlVMTCwKKysgIHNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3NuaWZmZXIKKyt9OworKworKy8qIFN1cHBseSByZWdpc3RlciBSRUdOVU0gZnJvbSB0aGUgYnVmZmVyIHNwZWNpZmllZCBieSBHUkVHUyBhbmQgTEVOCisrICAgaW4gdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlciBzZXQgUkVHU0VUIHRvIHJlZ2lzdGVyIGNhY2hlCisrICAgUkVHQ0FDSEUuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMgZm9yIGFsbCByZWdpc3RlcnMgaW4gUkVHU0VULiAgKi8KKysKKyt2b2lkCisrc2hfc3VwcGx5X2dyZWdzZXQgKGNvbnN0IHN0cnVjdCByZWdzZXQgKnJlZ3NldCwgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKysgICAgICAgICAgICAgaW50IHJlZ251bSwgY29uc3Qgdm9pZCAqZ3JlZ3MsIHNpemVfdCBsZW4pCisreworKyAgY29uc3Qgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAocmVnc2V0LT5hcmNoKTsKKysgIGNvbnN0IGNoYXIgKnJlZ3MgPSBncmVnczsKKysgIGludCBpOworKworKyAgZ2RiX2Fzc2VydCAobGVuID09IHRkZXAtPnNpemVvZl9ncmVnc2V0KTsKKysKKysgIGZvciAoaSA9IDA7IGkgPCB0ZGVwLT5ncmVnc2V0X251bV9yZWdzOyBpKyspCisrICAgIHsKKysgICAgICBpZiAoKHJlZ251bSA9PSBpIHx8IHJlZ251bSA9PSAtMSkKKysgICAgICAmJiB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXRbaV0gIT0gLTEpCisrICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBpLCByZWdzICsgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0W2ldKTsKKysgICAgfQorK30KKysKKysvKiBDb2xsZWN0IHJlZ2lzdGVyIFJFR05VTSBmcm9tIHRoZSByZWdpc3RlciBjYWNoZSBSRUdDQUNIRSBhbmQgc3RvcmUKKysgICBpdCBpbiB0aGUgYnVmZmVyIHNwZWNpZmllZCBieSBHUkVHUyBhbmQgTEVOIGFzIGRlc2NyaWJlZCBieSB0aGUKKysgICBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgc2V0IFJFR1NFVC4gIElmIFJFR05VTSBpcyAtMSwgZG8gdGhpcyBmb3IKKysgICBhbGwgcmVnaXN0ZXJzIGluIFJFR1NFVC4gICovCisrCisrdm9pZAorK3NoX2NvbGxlY3RfZ3JlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LAorKyAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKKysgICAgICAgICAgICAgIGludCByZWdudW0sIHZvaWQgKmdyZWdzLCBzaXplX3QgbGVuKQorK3sKKysgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7CisrICBjaGFyICpyZWdzID0gZ3JlZ3M7CisrICBpbnQgaTsKKysKKysgIGdkYl9hc3NlcnQgKGxlbiA9PSB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCk7CisrCisrICBmb3IgKGkgPSAwOyBpIDwgdGRlcC0+Z3JlZ3NldF9udW1fcmVnczsgaSsrKQorKyAgICB7CisrICAgICAgaWYgKChyZWdudW0gPT0gaSB8fCByZWdudW0gPT0gLTEpCisrICAgICAgJiYgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0W2ldICE9IC0xKQorKyAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIGksIHJlZ3MgKyB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXRbaV0pOworKyAgICB9CisrfQorKworKy8qIFN1cHBseSByZWdpc3RlciBSRUdOVU0gZnJvbSB0aGUgYnVmZmVyIHNwZWNpZmllZCBieSBGUFJFR1MgYW5kIExFTgorKyAgIGluIHRoZSBmbG9hdGluZy1wb2ludCByZWdpc3RlciBzZXQgUkVHU0VUIHRvIHJlZ2lzdGVyIGNhY2hlCisrICAgUkVHQ0FDSEUuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMgZm9yIGFsbCByZWdpc3RlcnMgaW4gUkVHU0VULiAgKi8KKysKKytzdGF0aWMgdm9pZAorK3NoX3N1cHBseV9mcHJlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAorKyAgICAgICAgICAgICAgaW50IHJlZ251bSwgY29uc3Qgdm9pZCAqZnByZWdzLCBzaXplX3QgbGVuKQorK3sKKysgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7CisrICBjb25zdCBjaGFyICpyZWdzID0gZnByZWdzOworKyAgaW50IGk7CisrCisrICBnZGJfYXNzZXJ0IChsZW4gPT0gdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0KTsKKysgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQorKyAgICB7CisrICAgICAgaWYgKHJlZ251bSA9PSBpKzI1IHx8IHJlZ251bSA9PSAtMSkKKysgICAgcmVnY2FjaGVfcmF3X3N1cHBseSAocmVnY2FjaGUsIGkrMjUsIHJlZ3MgKyBpKjQpOworKyAgICB9CisrICBpZiAocmVnbnVtID09IEZQU0NSX1JFR05VTSB8fCByZWdudW0gPT0gLTEpCisrICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBGUFNDUl9SRUdOVU0sIHJlZ3MgKyAzMio0KTsKKysgIGlmIChyZWdudW0gPT0gRlBVTF9SRUdOVU0gfHwgcmVnbnVtID09IC0xKQorKyAgICByZWdjYWNoZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgRlBVTF9SRUdOVU0sIHJlZ3MgKyAzMyo0KTsKKyt9CisrCisrLyogQ29sbGVjdCByZWdpc3RlciBSRUdOVU0gZnJvbSB0aGUgcmVnaXN0ZXIgY2FjaGUgUkVHQ0FDSEUgYW5kIHN0b3JlCisrICAgaXQgaW4gdGhlIGJ1ZmZlciBzcGVjaWZpZWQgYnkgRlBSRUdTIGFuZCBMRU4gYXMgZGVzY3JpYmVkIGJ5IHRoZQorKyAgIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyIHNldCBSRUdTRVQuICBJZiBSRUdOVU0gaXMgLTEsIGRvIHRoaXMgZm9yCisrICAgYWxsIHJlZ2lzdGVycyBpbiBSRUdTRVQuICAqLworKworK3N0YXRpYyB2b2lkCisrc2hfY29sbGVjdF9mcHJlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LAorKyAgICAgICAgICAgICAgIGNvbnN0IHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCisrICAgICAgICAgICAgICAgaW50IHJlZ251bSwgdm9pZCAqZnByZWdzLCBzaXplX3QgbGVuKQorK3sKKysgIGNvbnN0IHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKHJlZ3NldC0+YXJjaCk7CisrICBjaGFyICpyZWdzID0gZnByZWdzOworKyAgaW50IGk7CisrCisrICBnZGJfYXNzZXJ0IChsZW4gPT0gdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0KTsKKysgIGZvciAoaSA9IDA7IGkgPCAxNjsgaSsrKQorKyAgICB7CisrICAgICAgaWYgKHJlZ251bSA9PSBpKzI1IHx8IHJlZ251bSA9PSAtMSkKKysgICAgcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBpKzI1LCByZWdzICsgaSo0KTsKKysgICAgfQorKyAgaWYgKHJlZ251bSA9PSBGUFNDUl9SRUdOVU0gfHwgcmVnbnVtID09IC0xKQorKyAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIEZQU0NSX1JFR05VTSwgcmVncyArIDMyKjQpOworKyAgaWYgKHJlZ251bSA9PSBGUFVMX1JFR05VTSB8fCByZWdudW0gPT0gLTEpCisrICAgIHJlZ2NhY2hlX3Jhd19jb2xsZWN0IChyZWdjYWNoZSwgRlBVTF9SRUdOVU0sIHJlZ3MgKyAzMyo0KTsKKyt9CisrCisrLyogUmV0dXJuIHRoZSBhcHByb3ByaWF0ZSByZWdpc3RlciBzZXQgZm9yIHRoZSBjb3JlIHNlY3Rpb24gaWRlbnRpZmllZAorKyAgIGJ5IFNFQ1RfTkFNRSBhbmQgU0VDVF9TSVpFLiAgKi8KKysKKytjb25zdCBzdHJ1Y3QgcmVnc2V0ICoKKytzaF9saW51eF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24gKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAorKyAgICAgICAgICAgICAgICAgICBjb25zdCBjaGFyICpzZWN0X25hbWUsIHNpemVfdCBzZWN0X3NpemUpCisreworKyAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAoZ2RiYXJjaCk7CisrCisrICBpZiAoc3RyY21wIChzZWN0X25hbWUsICIucmVnIikgPT0gMCAmJiBzZWN0X3NpemUgPT0gdGRlcC0+c2l6ZW9mX2dyZWdzZXQpCisrICAgIHsKKysgICAgICBpZiAodGRlcC0+Z3JlZ3NldCA9PSBOVUxMKQorKyAgICB0ZGVwLT5ncmVnc2V0ID0gcmVnc2V0X2FsbG9jIChnZGJhcmNoLCBzaF9zdXBwbHlfZ3JlZ3NldCwKKysgICAgICAgICAgICAgICAgICAgICAgc2hfY29sbGVjdF9ncmVnc2V0KTsKKysgICAgICByZXR1cm4gdGRlcC0+Z3JlZ3NldDsKKysgICAgfQorKworKyAgaWYgKChzdHJjbXAgKHNlY3RfbmFtZSwgIi5yZWcyIikgPT0gMCAmJiBzZWN0X3NpemUgPT0gdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0KSkKKysgICAgeworKyAgICAgIGlmICh0ZGVwLT5mcHJlZ3NldCA9PSBOVUxMKQorKyAgICB0ZGVwLT5mcHJlZ3NldCA9IHJlZ3NldF9hbGxvYyAoZ2RiYXJjaCwgc2hfc3VwcGx5X2ZwcmVnc2V0LAorKyAgICAgICAgICAgICAgICAgICAgICAgc2hfY29sbGVjdF9mcHJlZ3NldCk7CisrICAgICAgcmV0dXJuIHRkZXAtPmZwcmVnc2V0OworKyAgICB9CisrCisrICByZXR1cm4gTlVMTDsKKyt9CisrCisrLyogVGhlIHJlZ2lzdGVyIHNldHMgdXNlZCBpbiBHTlUvTGludXggRUxGIGNvcmUtZHVtcHMgYXJlIGlkZW50aWNhbCB0bworKyAgIHRoZSByZWdpc3RlciBzZXRzIGluIGBzdHJ1Y3QgdXNlcicgdGhhdCBhcmUgdXNlZCBmb3IgYS5vdXQKKysgICBjb3JlLWR1bXBzLiAgVGhlc2UgYXJlIGFsc28gdXNlZCBieSBwdHJhY2UoMikuICBUaGUgY29ycmVzcG9uZGluZworKyAgIHR5cGVzIGFyZSBgZWxmX2dyZWdzZXRfdCcgZm9yIHRoZSBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXJzICh3aXRoCisrICAgYGVsZl9ncmVnX3QnIHRoZSB0eXBlIG9mIGEgc2luZ2xlIEdQIHJlZ2lzdGVyKSBhbmQgYGVsZl9mcHJlZ3NldF90JworKyAgIGZvciB0aGUgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLgorKworKyAgIFRob3NlIHR5cGVzIHVzZWQgdG8gYmUgYXZhaWxhYmxlIHVuZGVyIHRoZSBuYW1lcyBgZ3JlZ3NldF90JyBhbmQKKysgICBgZnByZWdzZXRfdCcgdG9vLCBhbmQgR0RCIHVzZWQgdGhvc2UgbmFtZXMgaW4gdGhlIHBhc3QuICBCdXQgdGhvc2UKKysgICBuYW1lcyBhcmUgbm93IHVzZWQgZm9yIHRoZSByZWdpc3RlciBzZXRzIHVzZWQgaW4gdGhlIGBtY29udGV4dF90JworKyAgIHR5cGUsIHdoaWNoIGhhdmUgYSBkaWZmZXJlbnQgc2l6ZSBhbmQgbGF5b3V0LiAgKi8KKysKKysvKiBNYXBwaW5nIGJldHdlZW4gdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgaW4gYHN0cnVjdCB1c2VyJworKyAgIGZvcm1hdCBhbmQgR0RCJ3MgcmVnaXN0ZXIgY2FjaGUgbGF5b3V0LiAgKi8KKysKKysvKiBGcm9tIDxzeXMvcmVnLmg+LiAgKi8KKytzdGF0aWMgaW50IHNoX2xpbnV4X2dyZWdzZXRfcmVnX29mZnNldFtdID0KKyt7CisrIDAsCTQsCTgsCTEyLAkxNiwJMjAsCTI0LAkyOCwKKysgMzIsCTM2LAk0MCwJNDQsCTQ4LAk1MiwJNTYsCTYwLAorKworKyBSRUdfUEMqNCwgICBSRUdfUFIqNCwgICBSRUdfR0JSKjQsICAtMSwKKysgUkVHX01BQ0gqNCwgUkVHX01BQ0wqNCwgUkVHX1NSKjQsCisrfTsKKysKKysvKiBNYXBwaW5nIGJldHdlZW4gdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgaW4gYHN0cnVjdAorKyAgIHNpZ2NvbnRleHQnIGZvcm1hdCBhbmQgR0RCJ3MgcmVnaXN0ZXIgY2FjaGUgbGF5b3V0LiAgKi8KKysKKysvKiBGcm9tIDxhc20vc2lnY29udGV4dC5oPi4gICovCisrc3RhdGljIGludCBzaF9saW51eF9zY19yZWdfb2Zmc2V0W10gPQorK3sKKysgNCwJOCwJMTIsCTE2LAkyMCwJMjQsCTI4LAkzMiwKKysgMzYsCTQwLAk0NCwJNDgsCTUyLAk1NiwJNjAsCTY0LAorKyA2OCwJNzIsCTgwLAktMSwKKysgODQsCTg4LAk3NgorK307CisrCisgc3RhdGljIHZvaWQKKyBzaF9saW51eF9pbml0X2FiaSAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCkKKyB7CisrICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZGJhcmNoKTsKKysgIGJmZCBhYmZkOworKworKyAgdGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0ID0gc2hfbGludXhfZ3JlZ3NldF9yZWdfb2Zmc2V0OworKyAgdGRlcC0+Z3JlZ3NldF9udW1fcmVncyA9IEFSUkFZX1NJWkUgKHNoX2xpbnV4X2dyZWdzZXRfcmVnX29mZnNldCk7CisrICB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCA9IDIzICogNDsKKysKKysgIHRkZXAtPmpiX3BjX29mZnNldCA9IDMyOyAgICAgLyogRnJvbSA8Yml0cy9zZXRqbXAuaD4uICAqLworKworKyAgdGRlcC0+c2lndHJhbXBfcCA9IHNoX2xpbnV4X3NpZ3RyYW1wX3A7CisrICB0ZGVwLT5zaWdjb250ZXh0X2FkZHIgPSBzaF9saW51eF9zaWdjb250ZXh0X2FkZHI7CisrICB0ZGVwLT5zY19yZWdfb2Zmc2V0ID0gc2hfbGludXhfc2NfcmVnX29mZnNldDsKKysgIHRkZXAtPnNjX251bV9yZWdzID0gQVJSQVlfU0laRSAoc2hfbGludXhfc2NfcmVnX29mZnNldCk7CisrCisrICBmcmFtZV91bndpbmRfYXBwZW5kX3Vud2luZGVyKGdkYmFyY2gsICZzaF9saW51eF9zaWd0cmFtcF9mcmFtZV91bndpbmQpOworKworKyAgLyogSWYgd2UgaGF2ZSBhIHJlZ2lzdGVyIG1hcHBpbmcsIGVuYWJsZSB0aGUgZ2VuZXJpYyBjb3JlIGZpbGUKKysgICAgIHN1cHBvcnQsIHVubGVzcyBpdCBoYXMgYWxyZWFkeSBiZWVuIGVuYWJsZWQuICAqLworKyAgaWYgKHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldAorKyAgICAgICYmICFnZGJhcmNoX3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbl9wIChnZGJhcmNoKSkKKysgICAgc2V0X2dkYmFyY2hfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uIChnZGJhcmNoLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2hfbGludXhfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uKTsKKysKKyAgIGxpbnV4X2luaXRfYWJpIChpbmZvLCBnZGJhcmNoKTsKKyAKKyAgIC8qIEdOVS9MaW51eCB1c2VzIFNWUjQtc3R5bGUgc2hhcmVkIGxpYnJhcmllcy4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL3NoLXRkZXAuYyBiL2dkYi9zaC10ZGVwLmMKK2luZGV4IGUzYWVlMGFjMjguLjU5NThjZjM2ODggMTAwNjQ0CistLS0gYS9nZGIvc2gtdGRlcC5jCisrKysgYi9nZGIvc2gtdGRlcC5jCitAQCAtMjEsNiArMjEsOSBAQAorICAgIHNhY0BjeWdudXMuY29tLiAgKi8KKyAKKyAjaW5jbHVkZSAiZGVmcy5oIgorKyNpbmNsdWRlICJhcmNoLXV0aWxzLmgiCisrI2luY2x1ZGUgImNvbW1hbmQuaCIKKysjaW5jbHVkZSAiZHVtbXktZnJhbWUuaCIKKyAjaW5jbHVkZSAiZnJhbWUuaCIKKyAjaW5jbHVkZSAiZnJhbWUtYmFzZS5oIgorICNpbmNsdWRlICJmcmFtZS11bndpbmQuaCIKK0BAIC02NiwyMyArNjksNiBAQCBzdGF0aWMgY29uc3QgY2hhciAqY29uc3Qgc2hfY2NfZW51bVtdID0geworIAorIHN0YXRpYyBjb25zdCBjaGFyICpzaF9hY3RpdmVfY2FsbGluZ19jb252ZW50aW9uID0gc2hfY2NfZ2NjOworIAorLSNkZWZpbmUgU0hfTlVNX1JFR1MgNjcKKy0KKy1zdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUKKy17CistICAvKiBCYXNlIGFkZHJlc3MuICAqLworLSAgQ09SRV9BRERSIGJhc2U7CistICBMT05HRVNUIHNwX29mZnNldDsKKy0gIENPUkVfQUREUiBwYzsKKy0KKy0gIC8qIEZsYWcgc2hvd2luZyB0aGF0IGEgZnJhbWUgaGFzIGJlZW4gY3JlYXRlZCBpbiB0aGUgcHJvbG9ndWUgY29kZS4gICovCistICBpbnQgdXNlc19mcDsKKy0KKy0gIC8qIFNhdmVkIHJlZ2lzdGVycy4gICovCistICBDT1JFX0FERFIgc2F2ZWRfcmVnc1tTSF9OVU1fUkVHU107CistICBDT1JFX0FERFIgc2F2ZWRfc3A7CistfTsKKy0KKyBzdGF0aWMgaW50Cisgc2hfaXNfcmVuZXNhc19jYWxsaW5nX2NvbnZlbnRpb24gKHN0cnVjdCB0eXBlICpmdW5jX3R5cGUpCisgeworQEAgLTEwNTAsNyArMTAzNiw3IEBAIHNoX3RyZWF0X2FzX2ZsdF9wIChzdHJ1Y3QgdHlwZSAqdHlwZSkKKyAgICAgcmV0dXJuIDA7CisgICAvKiBPdGhlcndpc2UgaWYgdGhlIHR5cGUgb2YgdGhhdCBtZW1iZXIgaXMgZmxvYXQsIHRoZSB3aG9sZSB0eXBlIGlzCisgICAgICB0cmVhdGVkIGFzIGZsb2F0LiAgKi8KKy0gIGlmIChUWVBFX0NPREUgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgMCkpID09IFRZUEVfQ09ERV9GTFQpCisrICBpZiAoVFlQRV9DT0RFIChjaGVja190eXBlZGVmIChUWVBFX0ZJRUxEX1RZUEUgKHR5cGUsIDApKSkgPT0gVFlQRV9DT0RFX0ZMVCkKKyAgICAgcmV0dXJuIDE7CisgICAvKiBPdGhlcndpc2UgaXQncyBub3QgdHJlYXRlZCBhcyBmbG9hdC4gICovCisgICByZXR1cm4gMDsKK0BAIC0xMTAwLDcgKzEwODYsNyBAQCBzaF9wdXNoX2R1bW15X2NhbGxfZnB1IChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKKyAgICAgIGluIGZvdXIgcmVnaXN0ZXJzIGF2YWlsYWJsZS4gIExvb3AgdGhydSBhcmdzIGZyb20gZmlyc3QgdG8gbGFzdC4gICovCisgICBmb3IgKGFyZ251bSA9IDA7IGFyZ251bSA8IG5hcmdzOyBhcmdudW0rKykKKyAgICAgeworLSAgICAgIHR5cGUgPSB2YWx1ZV90eXBlIChhcmdzW2FyZ251bV0pOworKyAgICAgIHR5cGUgPSBjaGVja190eXBlZGVmICh2YWx1ZV90eXBlIChhcmdzW2FyZ251bV0pKTsKKyAgICAgICBsZW4gPSBUWVBFX0xFTkdUSCAodHlwZSk7CisgICAgICAgdmFsID0gc2hfanVzdGlmeV92YWx1ZV9pbl9yZWcgKGdkYmFyY2gsIGFyZ3NbYXJnbnVtXSwgbGVuKTsKKyAKK0BAIC0xODM1LDcgKzE4MjEsNyBAQCBzaF9kd2FyZjJfZnJhbWVfaW5pdF9yZWcgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLCBpbnQgcmVnbnVtLAorICAgICByZWctPmhvdyA9IERXQVJGMl9GUkFNRV9SRUdfVU5ERUZJTkVEOworIH0KKyAKKy1zdGF0aWMgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICoKKytzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKgorIHNoX2FsbG9jX2ZyYW1lX2NhY2hlICh2b2lkKQorIHsKKyAgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGU7CitAQCAtMTg2Miw3ICsxODQ4LDcgQEAgc2hfYWxsb2NfZnJhbWVfY2FjaGUgKHZvaWQpCisgICByZXR1cm4gY2FjaGU7CisgfQorIAorLXN0YXRpYyBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKgorK3N0cnVjdCBzaF9mcmFtZV9jYWNoZSAqCisgc2hfZnJhbWVfY2FjaGUgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSkKKyB7CisgICBzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCA9IGdldF9mcmFtZV9hcmNoICh0aGlzX2ZyYW1lKTsKK0BAIC0xOTI5LDkgKzE5MTUsOSBAQCBzaF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQorICAgcmV0dXJuIGNhY2hlOworIH0KKyAKKy1zdGF0aWMgc3RydWN0IHZhbHVlICoKKy1zaF9mcmFtZV9wcmV2X3JlZ2lzdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwKKy0JCQl2b2lkICoqdGhpc19jYWNoZSwgaW50IHJlZ251bSkKKytzdHJ1Y3QgdmFsdWUgKgorK3NoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSwKKysJCQlpbnQgcmVnbnVtKQorIHsKKyAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKHRoaXNfZnJhbWUpOworICAgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpjYWNoZSA9IHNoX2ZyYW1lX2NhY2hlICh0aGlzX2ZyYW1lLCB0aGlzX2NhY2hlKTsKK0BAIC0xOTQ1LDcgKzE5MzEsNyBAQCBzaF9mcmFtZV9wcmV2X3JlZ2lzdGVyIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwKKyAgICAgIHRoZSBjdXJyZW50IGZyYW1lLiAgRnJvYiByZWdudW0gc28gdGhhdCB3ZSBwdWxsIHRoZSB2YWx1ZSBmcm9tCisgICAgICB0aGUgY29ycmVjdCBwbGFjZS4gICovCisgICBpZiAocmVnbnVtID09IGdkYmFyY2hfcGNfcmVnbnVtIChnZGJhcmNoKSkKKy0gICAgcmVnbnVtID0gUFJfUkVHTlVNOworKyAgICByZWdudW0gPSBQUl9SRUdOVU07IC8qIFhYWDogcmVhbGx5PyAqLworIAorICAgaWYgKHJlZ251bSA8IFNIX05VTV9SRUdTICYmIGNhY2hlLT5zYXZlZF9yZWdzW3JlZ251bV0gIT0gLTEpCisgICAgIHJldHVybiBmcmFtZV91bndpbmRfZ290X21lbW9yeSAodGhpc19mcmFtZSwgcmVnbnVtLAorQEAgLTIyMzQsOCArMjIyMCw4IEBAIHNoX3JldHVybl9pbl9maXJzdF9oaWRkZW5fcGFyYW1fcCAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCisgc3RhdGljIHN0cnVjdCBnZGJhcmNoICoKKyBzaF9nZGJhcmNoX2luaXQgKHN0cnVjdCBnZGJhcmNoX2luZm8gaW5mbywgc3RydWN0IGdkYmFyY2hfbGlzdCAqYXJjaGVzKQorIHsKKy0gIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOworICAgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcDsKKysgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoOworIAorICAgLyogSWYgdGhlcmUgaXMgYWxyZWFkeSBhIGNhbmRpZGF0ZSwgdXNlIGl0LiAgKi8KKyAgIGFyY2hlcyA9IGdkYmFyY2hfbGlzdF9sb29rdXBfYnlfaW5mbyAoYXJjaGVzLCAmaW5mbyk7CitAQCAtMjI0Nyw2ICsyMjMzLDE4IEBAIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCisgICB0ZGVwID0gWENORVcgKHN0cnVjdCBnZGJhcmNoX3RkZXApOworICAgZ2RiYXJjaCA9IGdkYmFyY2hfYWxsb2MgKCZpbmZvLCB0ZGVwKTsKKyAKKysgIC8qIEdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMuICAqLworKyAgdGRlcC0+Z3JlZ3NldCA9IE5VTEw7CisrICB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXQgPSBOVUxMOworKyAgdGRlcC0+Z3JlZ3NldF9udW1fcmVncyA9IDIzOworKyAgdGRlcC0+c2l6ZW9mX2dyZWdzZXQgPSAwOworKworKyAgLyogRmxvYXRpbmctcG9pbnQgcmVnaXN0ZXJzLiAgKi8KKysgIHRkZXAtPmZwcmVnc2V0ID0gTlVMTDsKKysgIHRkZXAtPnNpemVvZl9mcHJlZ3NldCA9IDM0KjQ7CisrCisrICB0ZGVwLT5qYl9wY19vZmZzZXQgPSAtMTsKKysKKyAgIHNldF9nZGJhcmNoX3Nob3J0X2JpdCAoZ2RiYXJjaCwgMiAqIFRBUkdFVF9DSEFSX0JJVCk7CisgICBzZXRfZ2RiYXJjaF9pbnRfYml0IChnZGJhcmNoLCA0ICogVEFSR0VUX0NIQVJfQklUKTsKKyAgIHNldF9nZGJhcmNoX2xvbmdfYml0IChnZGJhcmNoLCA0ICogVEFSR0VUX0NIQVJfQklUKTsKK0BAIC0yMzk4LDEwICsyMzk2LDExIEBAIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCisgICAgICAgYnJlYWs7CisgICAgIH0KKyAKKysgIGR3YXJmMl9hcHBlbmRfdW53aW5kZXJzIChnZGJhcmNoKTsKKysKKyAgIC8qIEhvb2sgaW4gQUJJLXNwZWNpZmljIG92ZXJyaWRlcywgaWYgdGhleSBoYXZlIGJlZW4gcmVnaXN0ZXJlZC4gICovCisgICBnZGJhcmNoX2luaXRfb3NhYmkgKGluZm8sIGdkYmFyY2gpOworIAorLSAgZHdhcmYyX2FwcGVuZF91bndpbmRlcnMgKGdkYmFyY2gpOworICAgZnJhbWVfdW53aW5kX2FwcGVuZF91bndpbmRlciAoZ2RiYXJjaCwgJnNoX3N0dWJfdW53aW5kKTsKKyAgIGZyYW1lX3Vud2luZF9hcHBlbmRfdW53aW5kZXIgKGdkYmFyY2gsICZzaF9mcmFtZV91bndpbmQpOworIAorZGlmZiAtLWdpdCBhL2dkYi9zaC10ZGVwLmggYi9nZGIvc2gtdGRlcC5oCitpbmRleCA3NmUyZTc2ZTM5Li4yNzEwZjYzMDEwIDEwMDY0NAorLS0tIGEvZ2RiL3NoLXRkZXAuaAorKysrIGIvZ2RiL3NoLXRkZXAuaAorQEAgLTIxLDYgKzIxLDEyIEBACisgCisgLyogQ29udHJpYnV0ZWQgYnkgU3RldmUgQ2hhbWJlcmxhaW4gc2FjQGN5Z251cy5jb20uICAqLworIAorK3N0cnVjdCBmcmFtZV9pbmZvOworK3N0cnVjdCBnZGJhcmNoOworK3N0cnVjdCByZWdncm91cDsKKytzdHJ1Y3QgcmVnc2V0OworK3N0cnVjdCByZWdjYWNoZTsKKysKKyAvKiBSZWdpc3RlcnMgZm9yIGFsbCBTSCB2YXJpYW50cy4gIFVzZWQgYWxzbyBieSBzaDMtcm9tLmMuICAqLworIGVudW0KKyAgIHsKK0BAIC0yOSw2ICszNSw3IEBAIGVudW0KKyAgICAgQVJHMF9SRUdOVU0gPSA0LAorICAgICBBUkdMQVNUX1JFR05VTSA9IDcsCisgICAgIEZQX1JFR05VTSA9IDE0LAorKyAgICBTUF9SRUdOVU0gPSAxNSwKKyAgICAgUENfUkVHTlVNID0gMTYsCisgICAgIFBSX1JFR05VTSA9IDE3LAorICAgICBHQlJfUkVHTlVNID0gMTgsCitAQCAtODEsNiArODgsMjQgQEAgZW51bQorICAgICBGVjBfUkVHTlVNID0gNzYsCisgICAgIEZWX0xBU1RfUkVHTlVNID0gNzkKKyAgIH07CisrI2RlZmluZSBTSF9OVU1fUkVHUyA2NworKworK3N0cnVjdCBzaF9mcmFtZV9jYWNoZQorK3sKKysgIC8qIEJhc2UgYWRkcmVzcy4gICovCisrICBDT1JFX0FERFIgYmFzZTsKKysgIExPTkdFU1Qgc3Bfb2Zmc2V0OworKyAgQ09SRV9BRERSIHBjOworKworKyAgLyogRmxhZyBzaG93aW5nIHRoYXQgYSBmcmFtZSBoYXMgYmVlbiBjcmVhdGVkIGluIHRoZSBwcm9sb2d1ZSBjb2RlLiAqLworKyAgaW50IHVzZXNfZnA7CisrCisrICAvKiBTYXZlZCByZWdpc3RlcnMuICAqLworKyAgQ09SRV9BRERSIHNhdmVkX3JlZ3NbU0hfTlVNX1JFR1NdOworKyAgQ09SRV9BRERSIHNhdmVkX3NwOworK307CisrCisrZXh0ZXJuIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqc2hfZnJhbWVfY2FjaGUgKHN0cnVjdCBmcmFtZV9pbmZvICpuZXh0X2ZyYW1lLCB2b2lkICoqdGhpc19jYWNoZSk7CisgCisgLyogVGhpcyBzdHJ1Y3R1cmUgZGVzY3JpYmVzIGEgcmVnaXN0ZXIgaW4gYSBjb3JlLWZpbGUuICAqLworIHN0cnVjdCBzaF9jb3JlZmlsZV9yZWdtYXAKK0BAIC04OSw4ICsxMTQsMzIgQEAgc3RydWN0IHNoX2NvcmVmaWxlX3JlZ21hcAorICAgdW5zaWduZWQgaW50IG9mZnNldDsKKyB9OworIAorKy8qIHNoIGFyY2hpdGVjdHVyZSBzcGVjaWZpYyBpbmZvcm1hdGlvbi4gICovCisgc3RydWN0IGdkYmFyY2hfdGRlcAorIHsKKysgIC8qIEdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMuICAqLworKyAgc3RydWN0IHJlZ3NldCAqZ3JlZ3NldDsKKysgIGludCAqZ3JlZ3NldF9yZWdfb2Zmc2V0OworKyAgaW50IGdyZWdzZXRfbnVtX3JlZ3M7CisrICBzaXplX3Qgc2l6ZW9mX2dyZWdzZXQ7CisrCisrICAvKiBGbG9hdGluZy1wb2ludCByZWdpc3RlcnMuICAqLworKyAgc3RydWN0IHJlZ3NldCAqZnByZWdzZXQ7CisrICBzaXplX3Qgc2l6ZW9mX2ZwcmVnc2V0OworKworKyAgLyogT2Zmc2V0IG9mIHNhdmVkIFBDIGluIGptcF9idWYuICAqLworKyAgaW50IGpiX3BjX29mZnNldDsKKysKKysgIC8qIERldGVjdCBzaWd0cmFtcC4gICovCisrICBpbnQgKCpzaWd0cmFtcF9wKSAoc3RydWN0IGZyYW1lX2luZm8gKik7CisrCisrICAvKiBHZXQgYWRkcmVzcyBvZiBzaWdjb250ZXh0IGZvciBzaWd0cmFtcC4gICovCisrICBDT1JFX0FERFIgKCpzaWdjb250ZXh0X2FkZHIpIChzdHJ1Y3QgZnJhbWVfaW5mbyAqKTsKKysKKysgIC8qIE9mZnNldCBvZiByZWdpc3RlcnMgaW4gYHN0cnVjdCBzaWdjb250ZXh0Jy4gICovCisrICBpbnQgKnNjX3JlZ19vZmZzZXQ7CisrICBpbnQgc2NfbnVtX3JlZ3M7CisrCisgICAvKiBOb24tTlVMTCB3aGVuIGRlYnVnZ2luZyBmcm9tIGEgY29yZSBmaWxlLiAgUHJvdmlkZXMgdGhlIG9mZnNldAorICAgICAgd2hlcmUgZWFjaCBnZW5lcmFsLXB1cnBvc2UgcmVnaXN0ZXIgaXMgc3RvcmVkIGluc2lkZSB0aGUgYXNzb2NpYXRlZAorICAgICAgY29yZSBmaWxlIHNlY3Rpb24uICAqLworZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cCBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cAoraW5kZXggNDkxNDQ5OGY5OC4uNmUyNWNiZWQxOCAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9hc20tc291cmNlLmV4cAorKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwCitAQCAtMTE2LDYgKzExNiwxMSBAQCBzd2l0Y2ggLWdsb2IgLS0gW2lzdGFyZ2V0XSB7CisgICAgICAgICAgICAgYXBwZW5kIGxpbmstZmxhZ3MgIiAtbSBlbGYzMnBwYyIKKyAgICAgICAgIH0KKyAgICAgfQorKyAgICAic2gqLWxpbnV4KiIgeworKyAgICAgICAgc2V0IGFzbS1hcmNoIHNoLWxpbnV4CisrICAgICAgICBzZXQgYXNtLWZsYWdzICItSSR7c3JjZGlyfS8ke3N1YmRpcn0gLUkke29iamRpcn0vJHtzdWJkaXJ9IgorKwlzZXQgZGVidWctZmxhZ3MgIi1nZHdhcmYtMiIKKysgICAgfQorICAgICAic2gqLSotKiIgeworICAgICAgICAgc2V0IGFzbS1hcmNoIHNoCisgCXNldCBkZWJ1Zy1mbGFncyAiLWdkd2FyZi0yIgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9zaC5pbmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vc2guaW5jCitpbmRleCBhNGE1ZmM1NDVlLi44OWVmZWQ3Nzk1IDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL3NoLmluYworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL3NoLmluYworQEAgLTQwLDkgKzQwLDggQEAKKyAJbW92LmwgICAuTGNvbnN0XEAscjEKKyAJYnJhCS5MYWZ0ZXJjb25zdFxACisgCW5vcAorLQlub3AKKy0uTGNvbnN0XEA6CisgCS5hbGlnbgkyCisrLkxjb25zdFxAOgorIAkubG9uZwlcc3VicgorIAkuYWxpZ24JMQorIC5MYWZ0ZXJjb25zdFxAOgorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmMKK2luZGV4IDQyNGUxYjgzMjcuLjBkZTJlN2I2MzMgMTAwNjQ0CistLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuYworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmMKK0BAIC0xLDYgKzEsOSBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorICNpbmNsdWRlIDxzaWduYWwuaD4KKyAKKysjaWZkZWYgX19zaF9fCisrI2RlZmluZSBzaWduYWwoYSxiKSAgICAvKiBTaWduYWxzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB0YXJnZXQgLSBtYWtlIHRoZW0gZ28gYXdheSAqLworKyNlbmRpZgorIAorIHZvaWQKKyBoYW5kbGVfVVNSMSAoaW50IHNpZykKK2RpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jCitpbmRleCA0MjRlMWI4MzI3Li45NTJhYWYyMThhIDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmMKKysrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jCitAQCAtMSw2ICsxLDEwIEBACisgI2luY2x1ZGUgPHN0ZGlvLmg+CisgI2luY2x1ZGUgPHNpZ25hbC5oPgorIAorKyNpZmRlZiBfX3NoX18KKysjZGVmaW5lIHNpZ25hbChhLGIpICAgIC8qIFNpZ25hbHMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHRhcmdldCAtIG1ha2UgdGhlbSBnbyBhd2F5ICovCisrI2VuZGlmCisrCisgCisgdm9pZAorIGhhbmRsZV9VU1IxIChpbnQgc2lnKQorZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnYWxsLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5jCitpbmRleCA4MWYzYjA4ZDZiLi4xNTc0YjJkNmNiIDEwMDY0NAorLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYworKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYworQEAgLTEsNiArMSw5IEBACisgI2luY2x1ZGUgPHNpZ25hbC5oPgorICNpbmNsdWRlIDx1bmlzdGQuaD4KKyAKKysjaWZkZWYgX19zaF9fCisrI2RlZmluZSBzaWduYWwoYSxiKSAgICAvKiBTaWduYWxzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB0YXJnZXQgLSBtYWtlIHRoZW0gZ28gYXdheSAqLworKyNlbmRpZgorIAorIC8qIFNpZ25hbCBoYW5kbGVycywgd2Ugc2V0IGJyZWFrcG9pbnRzIGluIHRoZW0gdG8gbWFrZSBzdXJlIHRoYXQgdGhlCisgICAgc2lnbmFscyByZWFsbHkgZ2V0IGRlbGl2ZXJlZC4gICovCitkaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWduYWxzLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYworaW5kZXggNzU2NjA2ODgwZi4uMTIwNWE5YmM5YyAxMDA2NDQKKy0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jCisrKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYworQEAgLTMsNiArMywxMCBAQAorICNpbmNsdWRlIDxzaWduYWwuaD4KKyAjaW5jbHVkZSA8dW5pc3RkLmg+CisgCisrI2lmZGVmIF9fc2hfXworKyNkZWZpbmUgc2lnbmFsKGEsYikgICAgLyogU2lnbmFscyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0IC0gbWFrZSB0aGVtIGdvIGF3YXkgKi8KKysjZGVmaW5lIGFsYXJtKGEpICAgICAgIC8qIERpdHRvIGZvciBhbGFybSgpICovCisrI2VuZGlmCisgCisgc3RhdGljIGludCBjb3VudCA9IDA7CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDQtcHBjLXB0cmFjZS1EZWZpbmUtcHRfcmVncy11YXBpX3B0X3JlZ3Mtb24tR0xJQkMtc3lzdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNC1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNzBkNTEyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNC1wcGMtcHRyYWNlLURlZmluZS1wdF9yZWdzLXVhcGlfcHRfcmVncy1vbi1HTElCQy1zeXN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSBkYTMwMzcwYzFlM2ZmNzcyOGE4NTdlMTE5ZTA1MjlhOWYwOTcwODZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMzAgQXByIDIwMTYgMTg6MzI6MTQgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gcHBjL3B0cmFjZTogRGVmaW5lIHB0X3JlZ3MgdWFwaV9wdF9yZWdzIG9uICFHTElCQyBzeXN0ZW1zCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBnZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYyB8IDYgKysrKysrCi0gZ2RiL25hdC9wcGMtbGludXguaCAgICAgICAgICAgfCA2ICsrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93LmMgYi9nZGIvZ2Ric2VydmVyL2xpbnV4LXBwYy1sb3cuYwotaW5kZXggMWI2OTVlNTMuLjE5NzgzNDdjIDEwMDY0NAotLS0tIGEvZ2RiL2dkYnNlcnZlci9saW51eC1wcGMtbG93LmMKLSsrKyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtcHBjLWxvdy5jCi1AQCAtMjMsNyArMjMsMTMgQEAKLSAjaW5jbHVkZSAiZWxmL2NvbW1vbi5oIgotICNpbmNsdWRlIDxzeXMvdWlvLmg+Ci0gI2luY2x1ZGUgPGVsZi5oPgotKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi0rIyBkZWZpbmUgcHRfcmVncyB1YXBpX3B0X3JlZ3MKLSsjZW5kaWYKLSAjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotKyNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi0rIyB1bmRlZiBwdF9yZWdzCi0rI2VuZGlmCi0gCi0gI2luY2x1ZGUgImFyY2gvcHBjLWxpbnV4LWNvbW1vbi5oIgotICNpbmNsdWRlICJhcmNoL3BwYy1saW51eC10ZGVzYy5oIgotZGlmZiAtLWdpdCBhL2dkYi9uYXQvcHBjLWxpbnV4LmggYi9nZGIvbmF0L3BwYy1saW51eC5oCi1pbmRleCBmMTU2MWIzYi4uNDAzOTkzNjEgMTAwNjQ0Ci0tLS0gYS9nZGIvbmF0L3BwYy1saW51eC5oCi0rKysgYi9nZGIvbmF0L3BwYy1saW51eC5oCi1AQCAtMTgsNyArMTgsMTMgQEAKLSAjaWZuZGVmIE5BVF9QUENfTElOVVhfSAotICNkZWZpbmUgTkFUX1BQQ19MSU5VWF9ICi0gCi0rI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKLSsjIGRlZmluZSBwdF9yZWdzIHVhcGlfcHRfcmVncwotKyNlbmRpZgotICNpbmNsdWRlIDxhc20vcHRyYWNlLmg+Ci0rI2lmICFkZWZpbmVkKF9fR0xJQkNfXykKLSsjIHVuZGVmIHB0X3JlZ3MKLSsjZW5kaWYKLSAjaW5jbHVkZSA8YXNtL2NwdXRhYmxlLmg+Ci0gCi0gLyogVGhpcyBzb21ldGltZXMgaXNuJ3QgZGVmaW5lZC4gICovCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDUtQWRkLXN1cHBvcnQtZm9yLVJlbmVzYXMtU0gtc2g0LWFyY2hpdGVjdHVyZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmODQwY2FmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNS1BZGQtc3VwcG9ydC1mb3ItUmVuZXNhcy1TSC1zaDQtYXJjaGl0ZWN0dXJlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsOTE0ICswLDAgQEAKLUZyb20gMjE1NDg2YjUzYTdhNmRmY2EwNjRjZDJlOTE5NmE5ZGU2ZWQ2ZjBjMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDIgTWFyIDIwMTUgMDI6MzE6MTIgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAwNS8xMV0gQWRkIHN1cHBvcnQgZm9yIFJlbmVzYXMgU0ggKHNoNCkgYXJjaGl0ZWN0dXJlLgotCi1nZGIgKDcuNC0xfmN2czIwMTExMTE3LjIpIGV4cGVyaW1lbnRhbDsgdXJnZW5jeT1sb3cKLSAuCi0gICAqIEFkZCBSZW5lc2FzIFNIIChzaDQpIHN1cHBvcnQgKENsb3NlczogIzU3NjI0MikKLSAgICAgLSBUaGFua3MgTm9idWhpcm8gSXdhbWF0c3UsIFRha2FzaGkgWW9zaGlpLgotQXV0aG9yOiBIZWN0b3IgT3JvbiA8enVtYmlAZGViaWFuLm9yZz4KLUJ1Zy1EZWJpYW46IGh0dHA6Ly9idWdzLmRlYmlhbi5vcmcvNTc2MjQyCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdkYi9NYWtlZmlsZS5pbiAgICAgICAgICAgICAgICAgICAgICB8ICAgMiArCi0gZ2RiL2NvbmZpZ3VyZS5ob3N0ICAgICAgICAgICAgICAgICAgIHwgICAxICsKLSBnZGIvc2gtbGludXgtdGRlcC5jICAgICAgICAgICAgICAgICAgfCA1MTkgKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gZ2RiL3NoLXRkZXAuYyAgICAgICAgICAgICAgICAgICAgICAgIHwgIDUzICsrLQotIGdkYi9zaC10ZGVwLmggICAgICAgICAgICAgICAgICAgICAgICB8ICA0OSArKysKLSBnZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAgfCAgIDUgKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmFzbS9zaC5pbmMgICAgICAgICB8ICAgMyArLQotIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5jICAgICB8ICAgMyArCi0gZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmMgICAgIHwgICA0ICsKLSBnZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5jICAgICAgfCAgIDMgKwotIGdkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jICAgICB8ICAgNCArCi0gMTEgZmlsZXMgY2hhbmdlZCwgNjE3IGluc2VydGlvbnMoKyksIDI5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL01ha2VmaWxlLmluIGIvZ2RiL01ha2VmaWxlLmluCi1pbmRleCBjNzZhNGU0Mzk0Li45MjFmZGFkYjQ5IDEwMDY0NAotLS0tIGEvZ2RiL01ha2VmaWxlLmluCi0rKysgYi9nZGIvTWFrZWZpbGUuaW4KLUBAIC0yMzI2LDYgKzIzMjYsOCBAQCBBTExERVBGSUxFUyA9IFwKLSAJc2gtbmJzZC1uYXQuYyBcCi0gCXNoLW5ic2QtdGRlcC5jIFwKLSAJc2gtdGRlcC5jIFwKLSsJc2gtbGludXgtdGRlcC5jIFwKLSsJc2gtbGludXgtbmF0LmMgXAotIAlzb2wyLXRkZXAuYyBcCi0gCXNvbGliLWFpeC5jIFwKLSAJc29saWItc3B1LmMgXAotZGlmZiAtLWdpdCBhL2dkYi9jb25maWd1cmUuaG9zdCBiL2dkYi9jb25maWd1cmUuaG9zdAotaW5kZXggMjNhMmYxNjM5OS4uMzlhODg2ZWM1MyAxMDA2NDQKLS0tLSBhL2dkYi9jb25maWd1cmUuaG9zdAotKysrIGIvZ2RiL2NvbmZpZ3VyZS5ob3N0Ci1AQCAtMTUzLDYgKzE1Myw3IEBAIHJpc2N2Ki0qLWxpbnV4KikJZ2RiX2hvc3Q9bGludXggOzsKLSAKLSBzMzkwKi0qLWxpbnV4KikJCWdkYl9ob3N0PWxpbnV4IDs7Ci0gCi0rc2gqLSotbGludXgqKQkJZ2RiX2hvc3Q9bGludXggOzsKLSBzaCotKi1uZXRic2RlbGYqIHwgc2gqLSota25ldGJzZCotZ251KQotIAkJCWdkYl9ob3N0PW5ic2QgOzsKLSBzaCotKi1vcGVuYnNkKikJCWdkYl9ob3N0PW5ic2QgOzsKLWRpZmYgLS1naXQgYS9nZGIvc2gtbGludXgtdGRlcC5jIGIvZ2RiL3NoLWxpbnV4LXRkZXAuYwotaW5kZXggZGI5Mzk2NzkxMC4uNDEwOWM1NDllOCAxMDA2NDQKLS0tLSBhL2dkYi9zaC1saW51eC10ZGVwLmMKLSsrKyBiL2dkYi9zaC1saW51eC10ZGVwLmMKLUBAIC0xOCwxNCArMTgsMzcgQEAKLSAgICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCi0gCi0gI2luY2x1ZGUgImRlZnMuaCIKLSsjaW5jbHVkZSAiZ2RiY29yZS5oIgotKyNpbmNsdWRlICJmcmFtZS5oIgotKyNpbmNsdWRlICJmcmFtZS1iYXNlLmgiCi0rI2luY2x1ZGUgImZyYW1lLXVud2luZC5oIgotKyNpbmNsdWRlICJkd2FyZjItZnJhbWUuaCIKLSsjaW5jbHVkZSAidmFsdWUuaCIKLSsjaW5jbHVkZSAicmVnY2FjaGUuaCIKLSsjaW5jbHVkZSAiaW5mZXJpb3IuaCIKLSAjaW5jbHVkZSAib3NhYmkuaCIKLSAKLSsjaW5jbHVkZSAicmVnZ3JvdXBzLmgiCi0rI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKLSsjaW5jbHVkZSAiZmxvYXRmb3JtYXQuaCIKLSAjaW5jbHVkZSAic29saWItc3ZyNC5oIgotICNpbmNsdWRlICJzeW10YWIuaCIKLSsjaW5jbHVkZSAiZ2RiX3N0cmluZy5oIgotKyNpbmNsdWRlICJjb21tYW5kLmgiCi0rI2luY2x1ZGUgImdkYl9hc3NlcnQuaCIKLSAKLSAjaW5jbHVkZSAidHJhZC1mcmFtZS5oIgotICNpbmNsdWRlICJ0cmFtcC1mcmFtZS5oIgotIAotKyNpbmNsdWRlIDxzeXMvcHRyYWNlLmg+Ci0rI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotKyNpbmNsdWRlIDxzeXMvcGFyYW0uaD4KLSsjaW5jbHVkZSA8c3lzL3VzZXIuaD4KLSsjaW5jbHVkZSA8c3lzL3N5c2NhbGwuaD4KLSsKLSsjaW5jbHVkZSA8YXNtL3B0cmFjZS5oPgotKwotKyNpbmNsdWRlICJyZWdzZXQuaCIKLSAjaW5jbHVkZSAiZ2xpYmMtdGRlcC5oIgotICNpbmNsdWRlICJzaC10ZGVwLmgiCi0gI2luY2x1ZGUgImxpbnV4LXRkZXAuaCIKLUBAIC0xODAsOSArMjAzLDUwNSBAQCBzdGF0aWMgc3RydWN0IHRyYW1wX2ZyYW1lIHNoX2xpbnV4X3J0X3NpZ3JldHVybl90cmFtcF9mcmFtZSA9IHsKLSAgIHNoX2xpbnV4X3J0X3NpZ3JldHVybl9pbml0Ci0gfTsKLSAKLSsvKiBSZWNvZ25pemluZyBzaWduYWwgaGFuZGxlciBmcmFtZXMuICAqLwotKwotKy8qIEdOVS9MaW51eCBoYXMgdHdvIGZsYXZvcnMgb2Ygc2lnbmFscy4gIE5vcm1hbCBzaWduYWwgaGFuZGxlcnMsIGFuZAotKyAgICJyZWFsdGltZSIgKFJUKSBzaWduYWxzLiAgVGhlIFJUIHNpZ25hbHMgY2FuIHByb3ZpZGUgYWRkaXRpb25hbAotKyAgIGluZm9ybWF0aW9uIHRvIHRoZSBzaWduYWwgaGFuZGxlciBpZiB0aGUgU0FfU0lHSU5GTyBmbGFnIGlzIHNldAotKyAgIHdoZW4gZXN0YWJsaXNoaW5nIGEgc2lnbmFsIGhhbmRsZXIgdXNpbmcgYHNpZ2FjdGlvbicuICBJdCBpcyBub3QKLSsgICB1bmxpa2VseSB0aGF0IGZ1dHVyZSB2ZXJzaW9ucyBvZiBHTlUvTGludXggd2lsbCBzdXBwb3J0IFNBX1NJR0lORk8KLSsgICBmb3Igbm9ybWFsIHNpZ25hbHMgdG9vLiAgKi8KLSsKLSsvKiBXaGVuIHRoZSBTSCBMaW51eCBrZXJuZWwgY2FsbHMgYSBzaWduYWwgaGFuZGxlciBhbmQgdGhlCi0rICAgU0FfUkVTVE9SRVIgZmxhZyBpc24ndCBzZXQsIHRoZSByZXR1cm4gYWRkcmVzcyBwb2ludHMgdG8gYSBiaXQgb2YKLSsgICBjb2RlIG9uIHRoZSBzdGFjay4gIFRoaXMgZnVuY3Rpb24gcmV0dXJucyB3aGV0aGVyIHRoZSBQQyBhcHBlYXJzIHRvCi0rICAgYmUgd2l0aGluIHRoaXMgYml0IG9mIGNvZGUuCi0rCi0rICAgVGhlIGluc3RydWN0aW9uIHNlcXVlbmNlIGZvciBub3JtYWwgc2lnbmFscyBpcwotKyAgICAgICBtb3YudyAgMWYscjMKLSsgICAgICAgdHJhcGEgICMxNgotKyAgICAgICBvciAgICAgcjAsIHIwCi0rICAgICAgIG9yICAgICByMCwgcjAKLSsgICAgICAgb3IgICAgIHIwLCByMAotKyAgICAgICBvciAgICAgcjAsIHIwCi0rICAgICAgIG9yICAgICByMCwgcjAKLSsgICAgMTogLndvcmQgIF9fTlJfc2lncmV0dXJuCi0rICAgb3IgMHg5MzA1IDB4YzMxMCAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MDA3Ny4KLSsKLSsgICBDaGVja2luZyBmb3IgdGhlIGNvZGUgc2VxdWVuY2Ugc2hvdWxkIGJlIHNvbWV3aGF0IHJlbGlhYmxlLCBiZWNhdXNlCi0rICAgdGhlIGVmZmVjdCBpcyB0byBjYWxsIHRoZSBzeXN0ZW0gY2FsbCBzaWdyZXR1cm4uICBUaGlzIGlzIHVubGlrZWx5Ci0rICAgdG8gb2NjdXIgYW55d2hlcmUgb3RoZXIgdGhhbiBhIHNpZ25hbCB0cmFtcG9saW5lLgotKwotKyAgIEl0IGtpbmQgb2Ygc3Vja3MgdGhhdCB3ZSBoYXZlIHRvIHJlYWQgbWVtb3J5IGZyb20gdGhlIHByb2Nlc3MgaW4KLSsgICBvcmRlciB0byBpZGVudGlmeSBhIHNpZ25hbCB0cmFtcG9saW5lLCBidXQgdGhlcmUgZG9lc24ndCBzZWVtIHRvIGJlCi0rICAgYW55IG90aGVyIHdheS4gIFRoZSBQQ19JTl9TSUdUUkFNUCBtYWNybyBpbiB0bS1saW51eC5oIGFycmFuZ2VzIHRvCi0rICAgb25seSBjYWxsIHVzIGlmIG5vIGZ1bmN0aW9uIG5hbWUgY291bGQgYmUgaWRlbnRpZmllZCwgd2hpY2ggc2hvdWxkCi0rICAgYmUgdGhlIGNhc2Ugc2luY2UgdGhlIGNvZGUgaXMgb24gdGhlIHN0YWNrLgotKwotKyAgIERldGVjdGlvbiBvZiBzaWduYWwgdHJhbXBvbGluZXMgZm9yIGhhbmRsZXJzIHRoYXQgc2V0IHRoZQotKyAgIFNBX1JFU1RPUkVSIGZsYWcgaXMgaW4gZ2VuZXJhbCBub3QgcG9zc2libGUuICBVbmZvcnR1bmF0ZWx5IHRoaXMgaXMKLSsgICB3aGF0IHRoZSBHTlUgQyBMaWJyYXJ5IGhhcyBiZWVuIGRvaW5nIGZvciBxdWl0ZSBzb21lIHRpbWUgbm93LgotKyAgIEhvd2V2ZXIsIGFzIG9mIHZlcnNpb24gMi4xLjIsIHRoZSBHTlUgQyBMaWJyYXJ5IHVzZXMgc2lnbmFsCi0rICAgdHJhbXBvbGluZXMgKG5hbWVkIF9fcmVzdG9yZSBhbmQgX19yZXN0b3JlX3J0KSB0aGF0IGFyZSBpZGVudGljYWwKLSsgICB0byB0aGUgb25lcyB1c2VkIGJ5IHRoZSBrZXJuZWwuICBUaGVyZWZvcmUsIHRoZXNlIHRyYW1wb2xpbmVzIGFyZQotKyAgIHN1cHBvcnRlZCB0b28uICAqLwotKwotKyNkZWZpbmUgTU9WVyhuKQkgKDB4OTMwMHwoKG4pLTIpKQkvKiBNb3ZlIG1lbSB3b3JkIGF0IFBDK24gdG8gUjMgKi8KLSsjZGVmaW5lIFRSQVAxNgkgMHhjMzEwCQkJLyogU3lzY2FsbCB3L25vIGFyZ3MgKE5SIGluIFIzKSAqLwotKyNkZWZpbmUgT1JfUjBfUjAgMHgyMDBiCQkJLyogb3IgcjAscjAgKGluc2VydCB0byBhdm9pZCBoYXJkd2FyZSBidWcpICovCi0rCi0rI2RlZmluZSBMSU5VWF9TSUdUUkFNUF9JTlNOMAlNT1ZXKDcpCQkvKiBNb3ZlIG1lbSB3b3JkIGF0IFBDKzcgdG8gUjMgKi8KLSsjZGVmaW5lIExJTlVYX1NJR1RSQU1QX0lOU04xCVRSQVAxNgkJLyogU3lzY2FsbCB3L25vIGFyZ3MgKE5SIGluIFIzKSAqLwotKyNkZWZpbmUgTElOVVhfU0lHVFJBTVBfSU5TTjIJT1JfUjBfUjAJLyogb3IgcjAscjAgKGluc2VydCB0byBhdm9pZCBoYXJkd2FyZSBidWcpICovCi0rCi0rc3RhdGljIGNvbnN0IHVuc2lnbmVkIHNob3J0IGxpbnV4X3NpZ3RyYW1wX2NvZGVbXSA9Ci0rewotKyAgTElOVVhfU0lHVFJBTVBfSU5TTjAsCi0rICBMSU5VWF9TSUdUUkFNUF9JTlNOMSwKLSsgIExJTlVYX1NJR1RSQU1QX0lOU04yLAotKyAgTElOVVhfU0lHVFJBTVBfSU5TTjIsCi0rICBMSU5VWF9TSUdUUkFNUF9JTlNOMiwKLSsgIExJTlVYX1NJR1RSQU1QX0lOU04yLAotKyAgTElOVVhfU0lHVFJBTVBfSU5TTjIsCi0rICBfX05SX3NpZ3JldHVybgotK307Ci0rCi0rI2RlZmluZSBMSU5VWF9TSUdUUkFNUF9MRU4gKHNpemVvZiBsaW51eF9zaWd0cmFtcF9jb2RlKQotKwotKy8qIElmIFBDIGlzIGluIGEgc2lndHJhbXAgcm91dGluZSwgcmV0dXJuIHRoZSBhZGRyZXNzIG9mIHRoZSBzdGFydCBvZgotKyAgIHRoZSByb3V0aW5lLiAgT3RoZXJ3aXNlLCByZXR1cm4gMC4gICovCi0rCi0rc3RhdGljIENPUkVfQUREUgotK3NoX2xpbnV4X3NpZ3RyYW1wX3N0YXJ0IChzdHJ1Y3QgZnJhbWVfaW5mbyAqbmV4dF9mcmFtZSkKLSt7Ci0rICBDT1JFX0FERFIgcGMgPSBnZXRfZnJhbWVfcGMgKG5leHRfZnJhbWUpOwotKyAgZ2RiX2J5dGUgYnVmW0xJTlVYX1NJR1RSQU1QX0xFTl07Ci0rCi0rICAvKiBXZSBvbmx5IHJlY29nbml6ZSBhIHNpZ25hbCB0cmFtcG9saW5lIGlmIFBDIGlzIGF0IHRoZSBzdGFydCBvZgotKyAgICAgb25lIG9mIHRoZSB0aHJlZSBpbnN0cnVjdGlvbnMuICBXZSBvcHRpbWl6ZSBmb3IgZmluZGluZyB0aGUgUEMgYXQKLSsgICAgIHRoZSBzdGFydCwgYXMgd2lsbCBiZSB0aGUgY2FzZSB3aGVuIHRoZSB0cmFtcG9saW5lIGlzIG5vdCB0aGUKLSsgICAgIGZpcnN0IGZyYW1lIG9uIHRoZSBzdGFjay4gIFdlIGFzc3VtZSB0aGF0IGluIHRoZSBjYXNlIHdoZXJlIHRoZQotKyAgICAgUEMgaXMgbm90IGF0IHRoZSBzdGFydCBvZiB0aGUgaW5zdHJ1Y3Rpb24gc2VxdWVuY2UsIHRoZXJlIHdpbGwgYmUKLSsgICAgIGEgZmV3IHRyYWlsaW5nIHJlYWRhYmxlIGJ5dGVzIG9uIHRoZSBzdGFjay4gICovCi0rCi0rICBpZiAoIXNhZmVfZnJhbWVfdW53aW5kX21lbW9yeSAobmV4dF9mcmFtZSwgcGMsIGJ1ZiwgTElOVVhfU0lHVFJBTVBfTEVOKSkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICBpZiAoYnVmWzBdICE9IExJTlVYX1NJR1RSQU1QX0lOU04wKQotKyAgICB7Ci0rICAgICAgaWYgKGJ1ZlswXSAhPSBMSU5VWF9TSUdUUkFNUF9JTlNOMSkKLSsgICAgICAgIHJldHVybiAwOwotKwotKyAgICAgIHBjIC09IDI7Ci0rCi0rICAgICAgaWYgKCFzYWZlX2ZyYW1lX3Vud2luZF9tZW1vcnkgKG5leHRfZnJhbWUsIHBjLCBidWYsIExJTlVYX1NJR1RSQU1QX0xFTikpCi0rCXJldHVybiAwOwotKyAgICB9Ci0rCi0rICBpZiAobWVtY21wIChidWYsIGxpbnV4X3NpZ3RyYW1wX2NvZGUsIExJTlVYX1NJR1RSQU1QX0xFTikgIT0gMCkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICByZXR1cm4gcGM7Ci0rfQotKwotKy8qIFRoaXMgZnVuY3Rpb24gZG9lcyB0aGUgc2FtZSBmb3IgUlQgc2lnbmFscy4gIEhlcmUgdGhlIGluc3RydWN0aW9uCi0rICAgc2VxdWVuY2UgaXMKLSsgICAgICAgbW92LncgIDFmLHIzCi0rICAgICAgIHRyYXBhICAjMTYKLSsgICAgICAgb3IgICAgIHIwLCByMAotKyAgICAgICBvciAgICAgcjAsIHIwCi0rICAgICAgIG9yICAgICByMCwgcjAKLSsgICAgICAgb3IgICAgIHIwLCByMAotKyAgICAgICBvciAgICAgcjAsIHIwCi0rICAgIDE6IC53b3JkICBfX05SX3J0X3NpZ3JldHVybgotKyAgIG9yIDB4OTMwNSAweGMzMTAgMHgyMDBiIDB4MjAwYiAweDIwMGIgMHgyMDBiIDB4MjAwYiAweDAwYWQuCi0rCi0rICAgVGhlIGVmZmVjdCBpcyB0byBjYWxsIHRoZSBzeXN0ZW0gY2FsbCBydF9zaWdyZXR1cm4uICAqLwotKwotKyNkZWZpbmUgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjAJCU1PVlcoNykJCS8qIE1vdmUgbWVtIHdvcmQgYXQgUEMrNyB0byBSMyAqLwotKyNkZWZpbmUgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjEJCVRSQVAxNgkJLyogU3lzY2FsbCB3L25vIGFyZ3MgKE5SIGluIFIzKSAqLwotKyNkZWZpbmUgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIJCU9SX1IwX1IwCS8qIG9yIHIwLHIwIChpbnNlcnQgdG8gYXZvaWQgaGFyZHdhcmUgYnVnKSAqLwotKwotK3N0YXRpYyBjb25zdCB1bnNpZ25lZCBzaG9ydCBsaW51eF9ydF9zaWd0cmFtcF9jb2RlW10gPQotK3sKLSsgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04wLAotKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjEsCi0rICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMiwKLSsgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yLAotKyAgTElOVVhfUlRfU0lHVFJBTVBfSU5TTjIsCi0rICBMSU5VWF9SVF9TSUdUUkFNUF9JTlNOMiwKLSsgIExJTlVYX1JUX1NJR1RSQU1QX0lOU04yLAotKyAgX19OUl9ydF9zaWdyZXR1cm4KLSt9OwotKwotKyNkZWZpbmUgTElOVVhfUlRfU0lHVFJBTVBfTEVOIChzaXplb2YgbGludXhfcnRfc2lndHJhbXBfY29kZSkKLSsKLSsvKiBJZiBQQyBpcyBpbiBhIFJUIHNpZ3RyYW1wIHJvdXRpbmUsIHJldHVybiB0aGUgYWRkcmVzcyBvZiB0aGUgc3RhcnQKLSsgICBvZiB0aGUgcm91dGluZS4gIE90aGVyd2lzZSwgcmV0dXJuIDAuICAqLwotKwotK3N0YXRpYyBDT1JFX0FERFIKLStzaF9saW51eF9ydF9zaWd0cmFtcF9zdGFydCAoc3RydWN0IGZyYW1lX2luZm8gKm5leHRfZnJhbWUpCi0rewotKyAgQ09SRV9BRERSIHBjID0gZ2V0X2ZyYW1lX3BjIChuZXh0X2ZyYW1lKTsKLSsgIGdkYl9ieXRlIGJ1ZltMSU5VWF9SVF9TSUdUUkFNUF9MRU5dOwotKwotKyAgLyogV2Ugb25seSByZWNvZ25pemUgYSBzaWduYWwgdHJhbXBvbGluZSBpZiBQQyBpcyBhdCB0aGUgc3RhcnQgb2YKLSsgICAgIG9uZSBvZiB0aGUgdHdvIGluc3RydWN0aW9ucy4gIFdlIG9wdGltaXplIGZvciBmaW5kaW5nIHRoZSBQQyBhdAotKyAgICAgdGhlIHN0YXJ0LCBhcyB3aWxsIGJlIHRoZSBjYXNlIHdoZW4gdGhlIHRyYW1wb2xpbmUgaXMgbm90IHRoZQotKyAgICAgZmlyc3QgZnJhbWUgb24gdGhlIHN0YWNrLiAgV2UgYXNzdW1lIHRoYXQgaW4gdGhlIGNhc2Ugd2hlcmUgdGhlCi0rICAgICBQQyBpcyBub3QgYXQgdGhlIHN0YXJ0IG9mIHRoZSBpbnN0cnVjdGlvbiBzZXF1ZW5jZSwgdGhlcmUgd2lsbCBiZQotKyAgICAgYSBmZXcgdHJhaWxpbmcgcmVhZGFibGUgYnl0ZXMgb24gdGhlIHN0YWNrLiAgKi8KLSsKLSsgIGlmICghc2FmZV9mcmFtZV91bndpbmRfbWVtb3J5IChuZXh0X2ZyYW1lLCBwYywgYnVmLCBMSU5VWF9SVF9TSUdUUkFNUF9MRU4pKQotKyAgICByZXR1cm4gMDsKLSsKLSsgIGlmIChidWZbMF0gIT0gTElOVVhfUlRfU0lHVFJBTVBfSU5TTjApCi0rICAgIHsKLSsgICAgICBpZiAoYnVmWzBdICE9IExJTlVYX1JUX1NJR1RSQU1QX0lOU04xKQotKwlyZXR1cm4gMDsKLSsKLSsgICAgICBwYyAtPSAyOwotKwotKyAgICAgIGlmICghc2FmZV9mcmFtZV91bndpbmRfbWVtb3J5IChuZXh0X2ZyYW1lLCBwYywgYnVmLAotKwkJCQkgICAgIExJTlVYX1JUX1NJR1RSQU1QX0xFTikpCi0rCXJldHVybiAwOwotKyAgICB9Ci0rCi0rICBpZiAobWVtY21wIChidWYsIGxpbnV4X3J0X3NpZ3RyYW1wX2NvZGUsIExJTlVYX1JUX1NJR1RSQU1QX0xFTikgIT0gMCkKLSsgICAgcmV0dXJuIDA7Ci0rCi0rICByZXR1cm4gcGM7Ci0rfQotKwotKy8qIFJldHVybiB3aGV0aGVyIFBDIGlzIGluIGEgR05VL0xpbnV4IHNpZ3RyYW1wIHJvdXRpbmUuICAqLwotKwotK3N0YXRpYyBpbnQKLStzaF9saW51eF9zaWd0cmFtcF9wIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSkKLSt7Ci0rICBDT1JFX0FERFIgcGMgPSBnZXRfZnJhbWVfcGMgKHRoaXNfZnJhbWUpOwotKyAgY2hhciAqbmFtZTsKLSsKLSsgIGZpbmRfcGNfcGFydGlhbF9mdW5jdGlvbiAocGMsICZuYW1lLCBOVUxMLCBOVUxMKTsKLSsKLSsgIC8qIElmIHdlIGhhdmUgTkFNRSwgd2UgY2FuIG9wdGltaXplIHRoZSBzZWFyY2guICBUaGUgdHJhbXBvbGluZXMgYXJlCi0rICAgICBuYW1lZCBfX3Jlc3RvcmUgYW5kIF9fcmVzdG9yZV9ydC4gIEhvd2V2ZXIsIHRoZXkgYXJlbid0IGR5bmFtaWNhbGx5Ci0rICAgICBleHBvcnRlZCBmcm9tIHRoZSBzaGFyZWQgQyBsaWJyYXJ5LCBzbyB0aGUgdHJhbXBvbGluZSBtYXkgYXBwZWFyIHRvCi0rICAgICBiZSBwYXJ0IG9mIHRoZSBwcmVjZWRpbmcgZnVuY3Rpb24uICBUaGlzIHNob3VsZCBhbHdheXMgYmUgc2lnYWN0aW9uLAotKyAgICAgX19zaWdhY3Rpb24sIG9yIF9fbGliY19zaWdhY3Rpb24gKGFsbCBhbGlhc2VzIHRvIHRoZSBzYW1lIGZ1bmN0aW9uKS4gICovCi0rICBpZiAobmFtZSA9PSBOVUxMIHx8IHN0cnN0ciAobmFtZSwgInNpZ2FjdGlvbiIpICE9IE5VTEwpCi0rICAgIHJldHVybiAoc2hfbGludXhfc2lndHJhbXBfc3RhcnQgKHRoaXNfZnJhbWUpICE9IDAKLSsJICAgIHx8IHNoX2xpbnV4X3J0X3NpZ3RyYW1wX3N0YXJ0ICh0aGlzX2ZyYW1lKSAhPSAwKTsKLSsKLSsgIHJldHVybiAoc3RyY21wICgiX19yZXN0b3JlIiwgbmFtZSkgPT0gMAotKwkgIHx8IHN0cmNtcCAoIl9fcmVzdG9yZV9ydCIsIG5hbWUpID09IDApOwotK30KLSsKLSsvKiBPZmZzZXQgdG8gc3RydWN0IHNpZ2NvbnRleHQgaW4gdWNvbnRleHQsIGZyb20gPGFzbS91Y29udGV4dC5oPi4gICovCi0rI2RlZmluZSBTSF9MSU5VWF9VQ09OVEVYVF9TSUdDT05URVhUX09GRlNFVCAxMgotKwotKwotKy8qIEFzc3VtaW5nIE5FWFRfRlJBTUUgaXMgYSBmcmFtZSBmb2xsb3dpbmcgYSBHTlUvTGludXggc2lndHJhbXAKLSsgICByb3V0aW5lLCByZXR1cm4gdGhlIGFkZHJlc3Mgb2YgdGhlIGFzc29jaWF0ZWQgc2lnY29udGV4dCBzdHJ1Y3R1cmUuICAqLwotKwotK3N0YXRpYyBDT1JFX0FERFIKLStzaF9saW51eF9zaWdjb250ZXh0X2FkZHIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lKQotK3sKLSsgIENPUkVfQUREUiBwYzsKLSsgIENPUkVfQUREUiBzcDsKLSsKLSsgIHNwID0gZ2V0X2ZyYW1lX3JlZ2lzdGVyX3Vuc2lnbmVkICh0aGlzX2ZyYW1lLCBTUF9SRUdOVU0pOwotKwotKyAgcGMgPSBzaF9saW51eF9zaWd0cmFtcF9zdGFydCAodGhpc19mcmFtZSk7Ci0rICBpZiAocGMpCi0rICAgIHsKLSsgICAgICByZXR1cm4gc3A7Ci0rICAgIH0KLSsKLSsgIHBjID0gc2hfbGludXhfcnRfc2lndHJhbXBfc3RhcnQgKHRoaXNfZnJhbWUpOwotKyAgaWYgKHBjKQotKyAgICB7Ci0rICAgICAgQ09SRV9BRERSIHVjb250ZXh0X2FkZHI7Ci0rCi0rICAgICAgLyogVGhlIHNpZ2NvbnRleHQgc3RydWN0dXJlIGlzIHBhcnQgb2YgdGhlIHVzZXIgY29udGV4dC4gIEEKLSsJIHBvaW50ZXIgdG8gdGhlIHVzZXIgY29udGV4dCBpcyBwYXNzZWQgYXMgdGhlIHRoaXJkIGFyZ3VtZW50Ci0rCSB0byB0aGUgc2lnbmFsIGhhbmRsZXIuICAqLwotKyAgICAgIHVjb250ZXh0X2FkZHIgPSBnZXRfZnJhbWVfcmVnaXN0ZXJfdW5zaWduZWQgKHRoaXNfZnJhbWUsIEFSRzBfUkVHTlVNKzIpOwotKyAgICAgIHJldHVybiB1Y29udGV4dF9hZGRyICsgU0hfTElOVVhfVUNPTlRFWFRfU0lHQ09OVEVYVF9PRkZTRVQ7Ci0rICAgIH0KLSsKLSsgIGVycm9yICgiQ291bGRuJ3QgcmVjb2duaXplIHNpZ25hbCB0cmFtcG9saW5lLiIpOwotKyAgcmV0dXJuIDA7Ci0rfQotKwotKy8qIFNpZ25hbCB0cmFtcG9saW5lcy4gICovCi0rZXh0ZXJuIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqc2hfYWxsb2NfZnJhbWVfY2FjaGUgKHZvaWQpOwotKwotK3N0YXRpYyBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKgotK3NoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX2NhY2hlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUpCi0rewotKyAgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpjYWNoZTsKLSsgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdldF9jdXJyZW50X2FyY2ggKCkpOwotKyAgQ09SRV9BRERSIHNpZ2NvbnRleHRfYWRkcjsKLSsKLSsgIGlmICgqdGhpc19jYWNoZSkKLSsgICAgcmV0dXJuICp0aGlzX2NhY2hlOwotKwotKyAgY2FjaGUgPSBzaF9hbGxvY19mcmFtZV9jYWNoZSAoKTsKLSsKLSsgIGNhY2hlLT5iYXNlID0gZ2V0X2ZyYW1lX3JlZ2lzdGVyX3Vuc2lnbmVkICh0aGlzX2ZyYW1lLCBTUF9SRUdOVU0pOwotKyAgc2lnY29udGV4dF9hZGRyID0gdGRlcC0+c2lnY29udGV4dF9hZGRyICh0aGlzX2ZyYW1lKTsKLSsgIGlmICh0ZGVwLT5zY19yZWdfb2Zmc2V0KQotKyAgICB7Ci0rICAgICAgaW50IGk7Ci0rCi0rICAgICAgZ2RiX2Fzc2VydCAodGRlcC0+c2NfbnVtX3JlZ3MgPD0gU0hfTlVNX1JFR1MpOwotKwotKyAgICAgIGZvciAoaSA9IDA7IGkgPCB0ZGVwLT5zY19udW1fcmVnczsgaSsrKQotKwlpZiAodGRlcC0+c2NfcmVnX29mZnNldFtpXSAhPSAtMSkKLSsJICBjYWNoZS0+c2F2ZWRfcmVnc1tpXSA9IHNpZ2NvbnRleHRfYWRkciArIHRkZXAtPnNjX3JlZ19vZmZzZXRbaV07Ci0rICAgIH0KLSsKLSsgICp0aGlzX2NhY2hlID0gY2FjaGU7Ci0rICByZXR1cm4gY2FjaGU7Ci0rfQotKwotK3N0YXRpYyB2b2lkCi0rc2hfbGludXhfc2lndHJhbXBfZnJhbWVfdGhpc19pZCAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlLAotKwkJCSAgICAgc3RydWN0IGZyYW1lX2lkICp0aGlzX2lkKQotK3sKLSsgIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqY2FjaGUgPQotKyAgICBzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9jYWNoZSAodGhpc19mcmFtZSwgdGhpc19jYWNoZSk7Ci0rCi0rICAoKnRoaXNfaWQpID0gZnJhbWVfaWRfYnVpbGQgKGNhY2hlLT5iYXNlICsgNjQsIGNhY2hlLT5wYyk7Ci0rfQotKwotK2V4dGVybiBzdHJ1Y3QgdmFsdWUgKiBzaF9mcmFtZV9wcmV2X3JlZ2lzdGVyICgpOwotK3N0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotK3NoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLAotKyAgICAgICAgICAgICAgICAgICB2b2lkICoqdGhpc19jYWNoZSwgaW50IHJlZ251bSkKLSt7Ci0rICBzaF9saW51eF9zaWd0cmFtcF9mcmFtZV9jYWNoZSAodGhpc19mcmFtZSwgdGhpc19jYWNoZSk7Ci0rCi0rICByZXR1cm4gc2hfZnJhbWVfcHJldl9yZWdpc3RlciAodGhpc19mcmFtZSwgdGhpc19jYWNoZSwgcmVnbnVtKTsKLSt9Ci0rCi0rc3RhdGljIGludAotK3NoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3NuaWZmZXIgKGNvbnN0IHN0cnVjdCBmcmFtZV91bndpbmQgKnNlbGYsCi0rICAgICAgICAgICAgICAgICBzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwKLSsgICAgICAgICAgICAgICAgIHZvaWQgKip0aGlzX3Byb2xvZ3VlX2NhY2hlKQotK3sKLSsgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdldF9mcmFtZV9hcmNoICh0aGlzX2ZyYW1lKSk7Ci0rCi0rICAvKiBXZSBzaG91bGRuJ3QgZXZlbiBib3RoZXIgaWYgd2UgZG9uJ3QgaGF2ZSBhIHNpZ2NvbnRleHRfYWRkcgotKyAgICAgaGFuZGxlci4gICovCi0rICBpZiAodGRlcC0+c2lnY29udGV4dF9hZGRyID09IE5VTEwpCi0rICAgIHJldHVybiAwOwotKwotKyAgaWYgKHRkZXAtPnNpZ3RyYW1wX3AgIT0gTlVMTCkKLSsgICAgewotKyAgICAgIGlmICh0ZGVwLT5zaWd0cmFtcF9wICh0aGlzX2ZyYW1lKSkKLSsgICAgcmV0dXJuIDE7Ci0rICAgIH0KLSsKLSsgIHJldHVybiAwOwotK30KLSsKLStzdGF0aWMgY29uc3Qgc3RydWN0IGZyYW1lX3Vud2luZCBzaF9saW51eF9zaWd0cmFtcF9mcmFtZV91bndpbmQgPQotK3sKLSsgIFNJR1RSQU1QX0ZSQU1FLAotKyAgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfdGhpc19pZCwKLSsgIHNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3ByZXZfcmVnaXN0ZXIsCi0rICBOVUxMLAotKyAgc2hfbGludXhfc2lndHJhbXBfZnJhbWVfc25pZmZlcgotK307Ci0rCi0rLyogU3VwcGx5IHJlZ2lzdGVyIFJFR05VTSBmcm9tIHRoZSBidWZmZXIgc3BlY2lmaWVkIGJ5IEdSRUdTIGFuZCBMRU4KLSsgICBpbiB0aGUgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVyIHNldCBSRUdTRVQgdG8gcmVnaXN0ZXIgY2FjaGUKLSsgICBSRUdDQUNIRS4gIElmIFJFR05VTSBpcyAtMSwgZG8gdGhpcyBmb3IgYWxsIHJlZ2lzdGVycyBpbiBSRUdTRVQuICAqLwotKwotK3ZvaWQKLStzaF9zdXBwbHlfZ3JlZ3NldCAoY29uc3Qgc3RydWN0IHJlZ3NldCAqcmVnc2V0LCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotKyAgICAgICAgICAgICBpbnQgcmVnbnVtLCBjb25zdCB2b2lkICpncmVncywgc2l6ZV90IGxlbikKLSt7Ci0rICBjb25zdCBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChyZWdzZXQtPmFyY2gpOwotKyAgY29uc3QgY2hhciAqcmVncyA9IGdyZWdzOwotKyAgaW50IGk7Ci0rCi0rICBnZGJfYXNzZXJ0IChsZW4gPT0gdGRlcC0+c2l6ZW9mX2dyZWdzZXQpOwotKwotKyAgZm9yIChpID0gMDsgaSA8IHRkZXAtPmdyZWdzZXRfbnVtX3JlZ3M7IGkrKykKLSsgICAgewotKyAgICAgIGlmICgocmVnbnVtID09IGkgfHwgcmVnbnVtID09IC0xKQotKyAgICAgICYmIHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldFtpXSAhPSAtMSkKLSsgICAgcmVnY2FjaGVfcmF3X3N1cHBseSAocmVnY2FjaGUsIGksIHJlZ3MgKyB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXRbaV0pOwotKyAgICB9Ci0rfQotKwotKy8qIENvbGxlY3QgcmVnaXN0ZXIgUkVHTlVNIGZyb20gdGhlIHJlZ2lzdGVyIGNhY2hlIFJFR0NBQ0hFIGFuZCBzdG9yZQotKyAgIGl0IGluIHRoZSBidWZmZXIgc3BlY2lmaWVkIGJ5IEdSRUdTIGFuZCBMRU4gYXMgZGVzY3JpYmVkIGJ5IHRoZQotKyAgIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlciBzZXQgUkVHU0VULiAgSWYgUkVHTlVNIGlzIC0xLCBkbyB0aGlzIGZvcgotKyAgIGFsbCByZWdpc3RlcnMgaW4gUkVHU0VULiAgKi8KLSsKLSt2b2lkCi0rc2hfY29sbGVjdF9ncmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsCi0rICAgICAgICAgICAgICBjb25zdCBzdHJ1Y3QgcmVnY2FjaGUgKnJlZ2NhY2hlLAotKyAgICAgICAgICAgICAgaW50IHJlZ251bSwgdm9pZCAqZ3JlZ3MsIHNpemVfdCBsZW4pCi0rewotKyAgY29uc3Qgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAocmVnc2V0LT5hcmNoKTsKLSsgIGNoYXIgKnJlZ3MgPSBncmVnczsKLSsgIGludCBpOwotKwotKyAgZ2RiX2Fzc2VydCAobGVuID09IHRkZXAtPnNpemVvZl9ncmVnc2V0KTsKLSsKLSsgIGZvciAoaSA9IDA7IGkgPCB0ZGVwLT5ncmVnc2V0X251bV9yZWdzOyBpKyspCi0rICAgIHsKLSsgICAgICBpZiAoKHJlZ251bSA9PSBpIHx8IHJlZ251bSA9PSAtMSkKLSsgICAgICAmJiB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXRbaV0gIT0gLTEpCi0rICAgIHJlZ2NhY2hlX3Jhd19jb2xsZWN0IChyZWdjYWNoZSwgaSwgcmVncyArIHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldFtpXSk7Ci0rICAgIH0KLSt9Ci0rCi0rLyogU3VwcGx5IHJlZ2lzdGVyIFJFR05VTSBmcm9tIHRoZSBidWZmZXIgc3BlY2lmaWVkIGJ5IEZQUkVHUyBhbmQgTEVOCi0rICAgaW4gdGhlIGZsb2F0aW5nLXBvaW50IHJlZ2lzdGVyIHNldCBSRUdTRVQgdG8gcmVnaXN0ZXIgY2FjaGUKLSsgICBSRUdDQUNIRS4gIElmIFJFR05VTSBpcyAtMSwgZG8gdGhpcyBmb3IgYWxsIHJlZ2lzdGVycyBpbiBSRUdTRVQuICAqLwotKwotK3N0YXRpYyB2b2lkCi0rc2hfc3VwcGx5X2ZwcmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsIHN0cnVjdCByZWdjYWNoZSAqcmVnY2FjaGUsCi0rICAgICAgICAgICAgICBpbnQgcmVnbnVtLCBjb25zdCB2b2lkICpmcHJlZ3MsIHNpemVfdCBsZW4pCi0rewotKyAgY29uc3Qgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAocmVnc2V0LT5hcmNoKTsKLSsgIGNvbnN0IGNoYXIgKnJlZ3MgPSBmcHJlZ3M7Ci0rICBpbnQgaTsKLSsKLSsgIGdkYl9hc3NlcnQgKGxlbiA9PSB0ZGVwLT5zaXplb2ZfZnByZWdzZXQpOwotKyAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCi0rICAgIHsKLSsgICAgICBpZiAocmVnbnVtID09IGkrMjUgfHwgcmVnbnVtID09IC0xKQotKyAgICByZWdjYWNoZV9yYXdfc3VwcGx5IChyZWdjYWNoZSwgaSsyNSwgcmVncyArIGkqNCk7Ci0rICAgIH0KLSsgIGlmIChyZWdudW0gPT0gRlBTQ1JfUkVHTlVNIHx8IHJlZ251bSA9PSAtMSkKLSsgICAgcmVnY2FjaGVfcmF3X3N1cHBseSAocmVnY2FjaGUsIEZQU0NSX1JFR05VTSwgcmVncyArIDMyKjQpOwotKyAgaWYgKHJlZ251bSA9PSBGUFVMX1JFR05VTSB8fCByZWdudW0gPT0gLTEpCi0rICAgIHJlZ2NhY2hlX3Jhd19zdXBwbHkgKHJlZ2NhY2hlLCBGUFVMX1JFR05VTSwgcmVncyArIDMzKjQpOwotK30KLSsKLSsvKiBDb2xsZWN0IHJlZ2lzdGVyIFJFR05VTSBmcm9tIHRoZSByZWdpc3RlciBjYWNoZSBSRUdDQUNIRSBhbmQgc3RvcmUKLSsgICBpdCBpbiB0aGUgYnVmZmVyIHNwZWNpZmllZCBieSBGUFJFR1MgYW5kIExFTiBhcyBkZXNjcmliZWQgYnkgdGhlCi0rICAgZmxvYXRpbmctcG9pbnQgcmVnaXN0ZXIgc2V0IFJFR1NFVC4gIElmIFJFR05VTSBpcyAtMSwgZG8gdGhpcyBmb3IKLSsgICBhbGwgcmVnaXN0ZXJzIGluIFJFR1NFVC4gICovCi0rCi0rc3RhdGljIHZvaWQKLStzaF9jb2xsZWN0X2ZwcmVnc2V0IChjb25zdCBzdHJ1Y3QgcmVnc2V0ICpyZWdzZXQsCi0rICAgICAgICAgICAgICAgY29uc3Qgc3RydWN0IHJlZ2NhY2hlICpyZWdjYWNoZSwKLSsgICAgICAgICAgICAgICBpbnQgcmVnbnVtLCB2b2lkICpmcHJlZ3MsIHNpemVfdCBsZW4pCi0rewotKyAgY29uc3Qgc3RydWN0IGdkYmFyY2hfdGRlcCAqdGRlcCA9IGdkYmFyY2hfdGRlcCAocmVnc2V0LT5hcmNoKTsKLSsgIGNoYXIgKnJlZ3MgPSBmcHJlZ3M7Ci0rICBpbnQgaTsKLSsKLSsgIGdkYl9hc3NlcnQgKGxlbiA9PSB0ZGVwLT5zaXplb2ZfZnByZWdzZXQpOwotKyAgZm9yIChpID0gMDsgaSA8IDE2OyBpKyspCi0rICAgIHsKLSsgICAgICBpZiAocmVnbnVtID09IGkrMjUgfHwgcmVnbnVtID09IC0xKQotKyAgICByZWdjYWNoZV9yYXdfY29sbGVjdCAocmVnY2FjaGUsIGkrMjUsIHJlZ3MgKyBpKjQpOwotKyAgICB9Ci0rICBpZiAocmVnbnVtID09IEZQU0NSX1JFR05VTSB8fCByZWdudW0gPT0gLTEpCi0rICAgIHJlZ2NhY2hlX3Jhd19jb2xsZWN0IChyZWdjYWNoZSwgRlBTQ1JfUkVHTlVNLCByZWdzICsgMzIqNCk7Ci0rICBpZiAocmVnbnVtID09IEZQVUxfUkVHTlVNIHx8IHJlZ251bSA9PSAtMSkKLSsgICAgcmVnY2FjaGVfcmF3X2NvbGxlY3QgKHJlZ2NhY2hlLCBGUFVMX1JFR05VTSwgcmVncyArIDMzKjQpOwotK30KLSsKLSsvKiBSZXR1cm4gdGhlIGFwcHJvcHJpYXRlIHJlZ2lzdGVyIHNldCBmb3IgdGhlIGNvcmUgc2VjdGlvbiBpZGVudGlmaWVkCi0rICAgYnkgU0VDVF9OQU1FIGFuZCBTRUNUX1NJWkUuICAqLwotKwotK2NvbnN0IHN0cnVjdCByZWdzZXQgKgotK3NoX2xpbnV4X3JlZ3NldF9mcm9tX2NvcmVfc2VjdGlvbiAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsCi0rICAgICAgICAgICAgICAgICAgIGNvbnN0IGNoYXIgKnNlY3RfbmFtZSwgc2l6ZV90IHNlY3Rfc2l6ZSkKLSt7Ci0rICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwID0gZ2RiYXJjaF90ZGVwIChnZGJhcmNoKTsKLSsKLSsgIGlmIChzdHJjbXAgKHNlY3RfbmFtZSwgIi5yZWciKSA9PSAwICYmIHNlY3Rfc2l6ZSA9PSB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCkKLSsgICAgewotKyAgICAgIGlmICh0ZGVwLT5ncmVnc2V0ID09IE5VTEwpCi0rICAgIHRkZXAtPmdyZWdzZXQgPSByZWdzZXRfYWxsb2MgKGdkYmFyY2gsIHNoX3N1cHBseV9ncmVnc2V0LAotKyAgICAgICAgICAgICAgICAgICAgICBzaF9jb2xsZWN0X2dyZWdzZXQpOwotKyAgICAgIHJldHVybiB0ZGVwLT5ncmVnc2V0OwotKyAgICB9Ci0rCi0rICBpZiAoKHN0cmNtcCAoc2VjdF9uYW1lLCAiLnJlZzIiKSA9PSAwICYmIHNlY3Rfc2l6ZSA9PSB0ZGVwLT5zaXplb2ZfZnByZWdzZXQpKQotKyAgICB7Ci0rICAgICAgaWYgKHRkZXAtPmZwcmVnc2V0ID09IE5VTEwpCi0rICAgIHRkZXAtPmZwcmVnc2V0ID0gcmVnc2V0X2FsbG9jIChnZGJhcmNoLCBzaF9zdXBwbHlfZnByZWdzZXQsCi0rICAgICAgICAgICAgICAgICAgICAgICBzaF9jb2xsZWN0X2ZwcmVnc2V0KTsKLSsgICAgICByZXR1cm4gdGRlcC0+ZnByZWdzZXQ7Ci0rICAgIH0KLSsKLSsgIHJldHVybiBOVUxMOwotK30KLSsKLSsvKiBUaGUgcmVnaXN0ZXIgc2V0cyB1c2VkIGluIEdOVS9MaW51eCBFTEYgY29yZS1kdW1wcyBhcmUgaWRlbnRpY2FsIHRvCi0rICAgdGhlIHJlZ2lzdGVyIHNldHMgaW4gYHN0cnVjdCB1c2VyJyB0aGF0IGFyZSB1c2VkIGZvciBhLm91dAotKyAgIGNvcmUtZHVtcHMuICBUaGVzZSBhcmUgYWxzbyB1c2VkIGJ5IHB0cmFjZSgyKS4gIFRoZSBjb3JyZXNwb25kaW5nCi0rICAgdHlwZXMgYXJlIGBlbGZfZ3JlZ3NldF90JyBmb3IgdGhlIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlcnMgKHdpdGgKLSsgICBgZWxmX2dyZWdfdCcgdGhlIHR5cGUgb2YgYSBzaW5nbGUgR1AgcmVnaXN0ZXIpIGFuZCBgZWxmX2ZwcmVnc2V0X3QnCi0rICAgZm9yIHRoZSBmbG9hdGluZy1wb2ludCByZWdpc3RlcnMuCi0rCi0rICAgVGhvc2UgdHlwZXMgdXNlZCB0byBiZSBhdmFpbGFibGUgdW5kZXIgdGhlIG5hbWVzIGBncmVnc2V0X3QnIGFuZAotKyAgIGBmcHJlZ3NldF90JyB0b28sIGFuZCBHREIgdXNlZCB0aG9zZSBuYW1lcyBpbiB0aGUgcGFzdC4gIEJ1dCB0aG9zZQotKyAgIG5hbWVzIGFyZSBub3cgdXNlZCBmb3IgdGhlIHJlZ2lzdGVyIHNldHMgdXNlZCBpbiB0aGUgYG1jb250ZXh0X3QnCi0rICAgdHlwZSwgd2hpY2ggaGF2ZSBhIGRpZmZlcmVudCBzaXplIGFuZCBsYXlvdXQuICAqLwotKwotKy8qIE1hcHBpbmcgYmV0d2VlbiB0aGUgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycyBpbiBgc3RydWN0IHVzZXInCi0rICAgZm9ybWF0IGFuZCBHREIncyByZWdpc3RlciBjYWNoZSBsYXlvdXQuICAqLwotKwotKy8qIEZyb20gPHN5cy9yZWcuaD4uICAqLwotK3N0YXRpYyBpbnQgc2hfbGludXhfZ3JlZ3NldF9yZWdfb2Zmc2V0W10gPQotK3sKLSsgMCwJNCwJOCwJMTIsCTE2LAkyMCwJMjQsCTI4LAotKyAzMiwJMzYsCTQwLAk0NCwJNDgsCTUyLAk1NiwJNjAsCi0rCi0rIFJFR19QQyo0LCAgIFJFR19QUio0LCAgIFJFR19HQlIqNCwgIC0xLAotKyBSRUdfTUFDSCo0LCBSRUdfTUFDTCo0LCBSRUdfU1IqNCwKLSt9OwotKwotKy8qIE1hcHBpbmcgYmV0d2VlbiB0aGUgZ2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycyBpbiBgc3RydWN0Ci0rICAgc2lnY29udGV4dCcgZm9ybWF0IGFuZCBHREIncyByZWdpc3RlciBjYWNoZSBsYXlvdXQuICAqLwotKwotKy8qIEZyb20gPGFzbS9zaWdjb250ZXh0Lmg+LiAgKi8KLStzdGF0aWMgaW50IHNoX2xpbnV4X3NjX3JlZ19vZmZzZXRbXSA9Ci0rewotKyA0LAk4LAkxMiwJMTYsCTIwLAkyNCwJMjgsCTMyLAotKyAzNiwJNDAsCTQ0LAk0OCwJNTIsCTU2LAk2MCwJNjQsCi0rIDY4LAk3MiwJODAsCS0xLAotKyA4NCwJODgsCTc2Ci0rfTsKLSsKLSBzdGF0aWMgdm9pZAotIHNoX2xpbnV4X2luaXRfYWJpIChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoKQotIHsKLSsgIHN0cnVjdCBnZGJhcmNoX3RkZXAgKnRkZXAgPSBnZGJhcmNoX3RkZXAgKGdkYmFyY2gpOwotKyAgYmZkIGFiZmQ7Ci0rCi0rICB0ZGVwLT5ncmVnc2V0X3JlZ19vZmZzZXQgPSBzaF9saW51eF9ncmVnc2V0X3JlZ19vZmZzZXQ7Ci0rICB0ZGVwLT5ncmVnc2V0X251bV9yZWdzID0gQVJSQVlfU0laRSAoc2hfbGludXhfZ3JlZ3NldF9yZWdfb2Zmc2V0KTsKLSsgIHRkZXAtPnNpemVvZl9ncmVnc2V0ID0gMjMgKiA0OwotKwotKyAgdGRlcC0+amJfcGNfb2Zmc2V0ID0gMzI7ICAgICAvKiBGcm9tIDxiaXRzL3NldGptcC5oPi4gICovCi0rCi0rICB0ZGVwLT5zaWd0cmFtcF9wID0gc2hfbGludXhfc2lndHJhbXBfcDsKLSsgIHRkZXAtPnNpZ2NvbnRleHRfYWRkciA9IHNoX2xpbnV4X3NpZ2NvbnRleHRfYWRkcjsKLSsgIHRkZXAtPnNjX3JlZ19vZmZzZXQgPSBzaF9saW51eF9zY19yZWdfb2Zmc2V0OwotKyAgdGRlcC0+c2NfbnVtX3JlZ3MgPSBBUlJBWV9TSVpFIChzaF9saW51eF9zY19yZWdfb2Zmc2V0KTsKLSsKLSsgIGZyYW1lX3Vud2luZF9hcHBlbmRfdW53aW5kZXIoZ2RiYXJjaCwgJnNoX2xpbnV4X3NpZ3RyYW1wX2ZyYW1lX3Vud2luZCk7Ci0rCi0rICAvKiBJZiB3ZSBoYXZlIGEgcmVnaXN0ZXIgbWFwcGluZywgZW5hYmxlIHRoZSBnZW5lcmljIGNvcmUgZmlsZQotKyAgICAgc3VwcG9ydCwgdW5sZXNzIGl0IGhhcyBhbHJlYWR5IGJlZW4gZW5hYmxlZC4gICovCi0rICBpZiAodGRlcC0+Z3JlZ3NldF9yZWdfb2Zmc2V0Ci0rICAgICAgJiYgIWdkYmFyY2hfcmVnc2V0X2Zyb21fY29yZV9zZWN0aW9uX3AgKGdkYmFyY2gpKQotKyAgICBzZXRfZ2RiYXJjaF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24gKGdkYmFyY2gsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaF9saW51eF9yZWdzZXRfZnJvbV9jb3JlX3NlY3Rpb24pOwotKwotICAgbGludXhfaW5pdF9hYmkgKGluZm8sIGdkYmFyY2gpOwotIAotICAgLyogR05VL0xpbnV4IHVzZXMgU1ZSNC1zdHlsZSBzaGFyZWQgbGlicmFyaWVzLiAgKi8KLWRpZmYgLS1naXQgYS9nZGIvc2gtdGRlcC5jIGIvZ2RiL3NoLXRkZXAuYwotaW5kZXggZmU2NGNmOTc5YS4uNDQxNzExNGNkMCAxMDA2NDQKLS0tLSBhL2dkYi9zaC10ZGVwLmMKLSsrKyBiL2dkYi9zaC10ZGVwLmMKLUBAIC0yMSw2ICsyMSw5IEBACi0gICAgc2FjQGN5Z251cy5jb20uICAqLwotIAotICNpbmNsdWRlICJkZWZzLmgiCi0rI2luY2x1ZGUgImFyY2gtdXRpbHMuaCIKLSsjaW5jbHVkZSAiY29tbWFuZC5oIgotKyNpbmNsdWRlICJkdW1teS1mcmFtZS5oIgotICNpbmNsdWRlICJmcmFtZS5oIgotICNpbmNsdWRlICJmcmFtZS1iYXNlLmgiCi0gI2luY2x1ZGUgImZyYW1lLXVud2luZC5oIgotQEAgLTY2LDIzICs2OSw2IEBAIHN0YXRpYyBjb25zdCBjaGFyICpjb25zdCBzaF9jY19lbnVtW10gPSB7Ci0gCi0gc3RhdGljIGNvbnN0IGNoYXIgKnNoX2FjdGl2ZV9jYWxsaW5nX2NvbnZlbnRpb24gPSBzaF9jY19nY2M7Ci0gCi0tI2RlZmluZSBTSF9OVU1fUkVHUyA2NwotLQotLXN0cnVjdCBzaF9mcmFtZV9jYWNoZQotLXsKLS0gIC8qIEJhc2UgYWRkcmVzcy4gICovCi0tICBDT1JFX0FERFIgYmFzZTsKLS0gIExPTkdFU1Qgc3Bfb2Zmc2V0OwotLSAgQ09SRV9BRERSIHBjOwotLQotLSAgLyogRmxhZyBzaG93aW5nIHRoYXQgYSBmcmFtZSBoYXMgYmVlbiBjcmVhdGVkIGluIHRoZSBwcm9sb2d1ZSBjb2RlLiAgKi8KLS0gIGludCB1c2VzX2ZwOwotLQotLSAgLyogU2F2ZWQgcmVnaXN0ZXJzLiAgKi8KLS0gIENPUkVfQUREUiBzYXZlZF9yZWdzW1NIX05VTV9SRUdTXTsKLS0gIENPUkVfQUREUiBzYXZlZF9zcDsKLS19OwotLQotIHN0YXRpYyBpbnQKLSBzaF9pc19yZW5lc2FzX2NhbGxpbmdfY29udmVudGlvbiAoc3RydWN0IHR5cGUgKmZ1bmNfdHlwZSkKLSB7Ci1AQCAtMTA1MCw3ICsxMDM2LDcgQEAgc2hfdHJlYXRfYXNfZmx0X3AgKHN0cnVjdCB0eXBlICp0eXBlKQotICAgICByZXR1cm4gMDsKLSAgIC8qIE90aGVyd2lzZSBpZiB0aGUgdHlwZSBvZiB0aGF0IG1lbWJlciBpcyBmbG9hdCwgdGhlIHdob2xlIHR5cGUgaXMKLSAgICAgIHRyZWF0ZWQgYXMgZmxvYXQuICAqLwotLSAgaWYgKFRZUEVfQ09ERSAoVFlQRV9GSUVMRF9UWVBFICh0eXBlLCAwKSkgPT0gVFlQRV9DT0RFX0ZMVCkKLSsgIGlmIChUWVBFX0NPREUgKGNoZWNrX3R5cGVkZWYgKFRZUEVfRklFTERfVFlQRSAodHlwZSwgMCkpKSA9PSBUWVBFX0NPREVfRkxUKQotICAgICByZXR1cm4gMTsKLSAgIC8qIE90aGVyd2lzZSBpdCdzIG5vdCB0cmVhdGVkIGFzIGZsb2F0LiAgKi8KLSAgIHJldHVybiAwOwotQEAgLTExMDAsNyArMTA4Niw3IEBAIHNoX3B1c2hfZHVtbXlfY2FsbF9mcHUgKHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoLAotICAgICAgaW4gZm91ciByZWdpc3RlcnMgYXZhaWxhYmxlLiAgTG9vcCB0aHJ1IGFyZ3MgZnJvbSBmaXJzdCB0byBsYXN0LiAgKi8KLSAgIGZvciAoYXJnbnVtID0gMDsgYXJnbnVtIDwgbmFyZ3M7IGFyZ251bSsrKQotICAgICB7Ci0tICAgICAgdHlwZSA9IHZhbHVlX3R5cGUgKGFyZ3NbYXJnbnVtXSk7Ci0rICAgICAgdHlwZSA9IGNoZWNrX3R5cGVkZWYgKHZhbHVlX3R5cGUgKGFyZ3NbYXJnbnVtXSkpOwotICAgICAgIGxlbiA9IFRZUEVfTEVOR1RIICh0eXBlKTsKLSAgICAgICB2YWwgPSBzaF9qdXN0aWZ5X3ZhbHVlX2luX3JlZyAoZ2RiYXJjaCwgYXJnc1thcmdudW1dLCBsZW4pOwotIAotQEAgLTE4MzQsNyArMTgyMCw3IEBAIHNoX2R3YXJmMl9mcmFtZV9pbml0X3JlZyAoc3RydWN0IGdkYmFyY2ggKmdkYmFyY2gsIGludCByZWdudW0sCi0gICAgIHJlZy0+aG93ID0gRFdBUkYyX0ZSQU1FX1JFR19VTkRFRklORUQ7Ci0gfQotIAotLXN0YXRpYyBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKgotK3N0cnVjdCBzaF9mcmFtZV9jYWNoZSAqCi0gc2hfYWxsb2NfZnJhbWVfY2FjaGUgKHZvaWQpCi0gewotICAgc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpjYWNoZTsKLUBAIC0xODYxLDcgKzE4NDcsNyBAQCBzaF9hbGxvY19mcmFtZV9jYWNoZSAodm9pZCkKLSAgIHJldHVybiBjYWNoZTsKLSB9Ci0gCi0tc3RhdGljIHN0cnVjdCBzaF9mcmFtZV9jYWNoZSAqCi0rc3RydWN0IHNoX2ZyYW1lX2NhY2hlICoKLSBzaF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKQotIHsKLSAgIHN0cnVjdCBnZGJhcmNoICpnZGJhcmNoID0gZ2V0X2ZyYW1lX2FyY2ggKHRoaXNfZnJhbWUpOwotQEAgLTE5MjgsOSArMTkxNCw5IEBAIHNoX2ZyYW1lX2NhY2hlIChzdHJ1Y3QgZnJhbWVfaW5mbyAqdGhpc19mcmFtZSwgdm9pZCAqKnRoaXNfY2FjaGUpCi0gICByZXR1cm4gY2FjaGU7Ci0gfQotIAotLXN0YXRpYyBzdHJ1Y3QgdmFsdWUgKgotLXNoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLAotLQkJCXZvaWQgKip0aGlzX2NhY2hlLCBpbnQgcmVnbnVtKQotK3N0cnVjdCB2YWx1ZSAqCi0rc2hfZnJhbWVfcHJldl9yZWdpc3RlciAoc3RydWN0IGZyYW1lX2luZm8gKnRoaXNfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlLAotKwkJCWludCByZWdudW0pCi0gewotICAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2ggPSBnZXRfZnJhbWVfYXJjaCAodGhpc19mcmFtZSk7Ci0gICBzdHJ1Y3Qgc2hfZnJhbWVfY2FjaGUgKmNhY2hlID0gc2hfZnJhbWVfY2FjaGUgKHRoaXNfZnJhbWUsIHRoaXNfY2FjaGUpOwotQEAgLTE5NDQsNyArMTkzMCw3IEBAIHNoX2ZyYW1lX3ByZXZfcmVnaXN0ZXIgKHN0cnVjdCBmcmFtZV9pbmZvICp0aGlzX2ZyYW1lLAotICAgICAgdGhlIGN1cnJlbnQgZnJhbWUuICBGcm9iIHJlZ251bSBzbyB0aGF0IHdlIHB1bGwgdGhlIHZhbHVlIGZyb20KLSAgICAgIHRoZSBjb3JyZWN0IHBsYWNlLiAgKi8KLSAgIGlmIChyZWdudW0gPT0gZ2RiYXJjaF9wY19yZWdudW0gKGdkYmFyY2gpKQotLSAgICByZWdudW0gPSBQUl9SRUdOVU07Ci0rICAgIHJlZ251bSA9IFBSX1JFR05VTTsgLyogWFhYOiByZWFsbHk/ICovCi0gCi0gICBpZiAocmVnbnVtIDwgU0hfTlVNX1JFR1MgJiYgY2FjaGUtPnNhdmVkX3JlZ3NbcmVnbnVtXSAhPSAtMSkKLSAgICAgcmV0dXJuIGZyYW1lX3Vud2luZF9nb3RfbWVtb3J5ICh0aGlzX2ZyYW1lLCByZWdudW0sCi1AQCAtMjI1NSw4ICsyMjQxLDggQEAgc2hfcmV0dXJuX2luX2ZpcnN0X2hpZGRlbl9wYXJhbV9wIChzdHJ1Y3QgZ2RiYXJjaCAqZ2RiYXJjaCwKLSBzdGF0aWMgc3RydWN0IGdkYmFyY2ggKgotIHNoX2dkYmFyY2hfaW5pdCAoc3RydWN0IGdkYmFyY2hfaW5mbyBpbmZvLCBzdHJ1Y3QgZ2RiYXJjaF9saXN0ICphcmNoZXMpCi0gewotLSAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7Ci0gICBzdHJ1Y3QgZ2RiYXJjaF90ZGVwICp0ZGVwOwotKyAgc3RydWN0IGdkYmFyY2ggKmdkYmFyY2g7Ci0gCi0gICAvKiBJZiB0aGVyZSBpcyBhbHJlYWR5IGEgY2FuZGlkYXRlLCB1c2UgaXQuICAqLwotICAgYXJjaGVzID0gZ2RiYXJjaF9saXN0X2xvb2t1cF9ieV9pbmZvIChhcmNoZXMsICZpbmZvKTsKLUBAIC0yMjY4LDYgKzIyNTQsMTggQEAgc2hfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKLSAgIHRkZXAgPSBYQ05FVyAoc3RydWN0IGdkYmFyY2hfdGRlcCk7Ci0gICBnZGJhcmNoID0gZ2RiYXJjaF9hbGxvYyAoJmluZm8sIHRkZXApOwotIAotKyAgLyogR2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycy4gICovCi0rICB0ZGVwLT5ncmVnc2V0ID0gTlVMTDsKLSsgIHRkZXAtPmdyZWdzZXRfcmVnX29mZnNldCA9IE5VTEw7Ci0rICB0ZGVwLT5ncmVnc2V0X251bV9yZWdzID0gMjM7Ci0rICB0ZGVwLT5zaXplb2ZfZ3JlZ3NldCA9IDA7Ci0rCi0rICAvKiBGbG9hdGluZy1wb2ludCByZWdpc3RlcnMuICAqLwotKyAgdGRlcC0+ZnByZWdzZXQgPSBOVUxMOwotKyAgdGRlcC0+c2l6ZW9mX2ZwcmVnc2V0ID0gMzQqNDsKLSsKLSsgIHRkZXAtPmpiX3BjX29mZnNldCA9IC0xOwotKwotICAgc2V0X2dkYmFyY2hfc2hvcnRfYml0IChnZGJhcmNoLCAyICogVEFSR0VUX0NIQVJfQklUKTsKLSAgIHNldF9nZGJhcmNoX2ludF9iaXQgKGdkYmFyY2gsIDQgKiBUQVJHRVRfQ0hBUl9CSVQpOwotICAgc2V0X2dkYmFyY2hfbG9uZ19iaXQgKGdkYmFyY2gsIDQgKiBUQVJHRVRfQ0hBUl9CSVQpOwotQEAgLTI0MjIsMTAgKzI0MjAsMTEgQEAgc2hfZ2RiYXJjaF9pbml0IChzdHJ1Y3QgZ2RiYXJjaF9pbmZvIGluZm8sIHN0cnVjdCBnZGJhcmNoX2xpc3QgKmFyY2hlcykKLSAgICAgICBicmVhazsKLSAgICAgfQotIAotKyAgZHdhcmYyX2FwcGVuZF91bndpbmRlcnMgKGdkYmFyY2gpOwotKwotICAgLyogSG9vayBpbiBBQkktc3BlY2lmaWMgb3ZlcnJpZGVzLCBpZiB0aGV5IGhhdmUgYmVlbiByZWdpc3RlcmVkLiAgKi8KLSAgIGdkYmFyY2hfaW5pdF9vc2FiaSAoaW5mbywgZ2RiYXJjaCk7Ci0gCi0tICBkd2FyZjJfYXBwZW5kX3Vud2luZGVycyAoZ2RiYXJjaCk7Ci0gICBmcmFtZV91bndpbmRfYXBwZW5kX3Vud2luZGVyIChnZGJhcmNoLCAmc2hfc3R1Yl91bndpbmQpOwotICAgZnJhbWVfdW53aW5kX2FwcGVuZF91bndpbmRlciAoZ2RiYXJjaCwgJnNoX2ZyYW1lX3Vud2luZCk7Ci0gCi1kaWZmIC0tZ2l0IGEvZ2RiL3NoLXRkZXAuaCBiL2dkYi9zaC10ZGVwLmgKLWluZGV4IDU5YWNkMzViODguLmJlM2Y5OThkODQgMTAwNjQ0Ci0tLS0gYS9nZGIvc2gtdGRlcC5oCi0rKysgYi9nZGIvc2gtdGRlcC5oCi1AQCAtMjEsNiArMjEsMTIgQEAKLSAKLSAvKiBDb250cmlidXRlZCBieSBTdGV2ZSBDaGFtYmVybGFpbiBzYWNAY3lnbnVzLmNvbS4gICovCi0gCi0rc3RydWN0IGZyYW1lX2luZm87Ci0rc3RydWN0IGdkYmFyY2g7Ci0rc3RydWN0IHJlZ2dyb3VwOwotK3N0cnVjdCByZWdzZXQ7Ci0rc3RydWN0IHJlZ2NhY2hlOwotKwotIC8qIFJlZ2lzdGVycyBmb3IgYWxsIFNIIHZhcmlhbnRzLiAgVXNlZCBhbHNvIGJ5IHNoMy1yb20uYy4gICovCi0gZW51bQotICAgewotQEAgLTI5LDYgKzM1LDcgQEAgZW51bQotICAgICBBUkcwX1JFR05VTSA9IDQsCi0gICAgIEFSR0xBU1RfUkVHTlVNID0gNywKLSAgICAgRlBfUkVHTlVNID0gMTQsCi0rICAgIFNQX1JFR05VTSA9IDE1LAotICAgICBQQ19SRUdOVU0gPSAxNiwKLSAgICAgUFJfUkVHTlVNID0gMTcsCi0gICAgIEdCUl9SRUdOVU0gPSAxOCwKLUBAIC04MSw2ICs4OCwyNCBAQCBlbnVtCi0gICAgIEZWMF9SRUdOVU0gPSA3NiwKLSAgICAgRlZfTEFTVF9SRUdOVU0gPSA3OQotICAgfTsKLSsjZGVmaW5lIFNIX05VTV9SRUdTIDY3Ci0rCi0rc3RydWN0IHNoX2ZyYW1lX2NhY2hlCi0rewotKyAgLyogQmFzZSBhZGRyZXNzLiAgKi8KLSsgIENPUkVfQUREUiBiYXNlOwotKyAgTE9OR0VTVCBzcF9vZmZzZXQ7Ci0rICBDT1JFX0FERFIgcGM7Ci0rCi0rICAvKiBGbGFnIHNob3dpbmcgdGhhdCBhIGZyYW1lIGhhcyBiZWVuIGNyZWF0ZWQgaW4gdGhlIHByb2xvZ3VlIGNvZGUuICovCi0rICBpbnQgdXNlc19mcDsKLSsKLSsgIC8qIFNhdmVkIHJlZ2lzdGVycy4gICovCi0rICBDT1JFX0FERFIgc2F2ZWRfcmVnc1tTSF9OVU1fUkVHU107Ci0rICBDT1JFX0FERFIgc2F2ZWRfc3A7Ci0rfTsKLSsKLStleHRlcm4gc3RydWN0IHNoX2ZyYW1lX2NhY2hlICpzaF9mcmFtZV9jYWNoZSAoc3RydWN0IGZyYW1lX2luZm8gKm5leHRfZnJhbWUsIHZvaWQgKip0aGlzX2NhY2hlKTsKLSAKLSAvKiBUaGlzIHN0cnVjdHVyZSBkZXNjcmliZXMgYSByZWdpc3RlciBpbiBhIGNvcmUtZmlsZS4gICovCi0gc3RydWN0IHNoX2NvcmVmaWxlX3JlZ21hcAotQEAgLTg5LDggKzExNCwzMiBAQCBzdHJ1Y3Qgc2hfY29yZWZpbGVfcmVnbWFwCi0gICB1bnNpZ25lZCBpbnQgb2Zmc2V0OwotIH07Ci0gCi0rLyogc2ggYXJjaGl0ZWN0dXJlIHNwZWNpZmljIGluZm9ybWF0aW9uLiAgKi8KLSBzdHJ1Y3QgZ2RiYXJjaF90ZGVwCi0gewotKyAgLyogR2VuZXJhbC1wdXJwb3NlIHJlZ2lzdGVycy4gICovCi0rICBzdHJ1Y3QgcmVnc2V0ICpncmVnc2V0OwotKyAgaW50ICpncmVnc2V0X3JlZ19vZmZzZXQ7Ci0rICBpbnQgZ3JlZ3NldF9udW1fcmVnczsKLSsgIHNpemVfdCBzaXplb2ZfZ3JlZ3NldDsKLSsKLSsgIC8qIEZsb2F0aW5nLXBvaW50IHJlZ2lzdGVycy4gICovCi0rICBzdHJ1Y3QgcmVnc2V0ICpmcHJlZ3NldDsKLSsgIHNpemVfdCBzaXplb2ZfZnByZWdzZXQ7Ci0rCi0rICAvKiBPZmZzZXQgb2Ygc2F2ZWQgUEMgaW4gam1wX2J1Zi4gICovCi0rICBpbnQgamJfcGNfb2Zmc2V0OwotKwotKyAgLyogRGV0ZWN0IHNpZ3RyYW1wLiAgKi8KLSsgIGludCAoKnNpZ3RyYW1wX3ApIChzdHJ1Y3QgZnJhbWVfaW5mbyAqKTsKLSsKLSsgIC8qIEdldCBhZGRyZXNzIG9mIHNpZ2NvbnRleHQgZm9yIHNpZ3RyYW1wLiAgKi8KLSsgIENPUkVfQUREUiAoKnNpZ2NvbnRleHRfYWRkcikgKHN0cnVjdCBmcmFtZV9pbmZvICopOwotKwotKyAgLyogT2Zmc2V0IG9mIHJlZ2lzdGVycyBpbiBgc3RydWN0IHNpZ2NvbnRleHQnLiAgKi8KLSsgIGludCAqc2NfcmVnX29mZnNldDsKLSsgIGludCBzY19udW1fcmVnczsKLSsKLSAgIC8qIE5vbi1OVUxMIHdoZW4gZGVidWdnaW5nIGZyb20gYSBjb3JlIGZpbGUuICBQcm92aWRlcyB0aGUgb2Zmc2V0Ci0gICAgICB3aGVyZSBlYWNoIGdlbmVyYWwtcHVycG9zZSByZWdpc3RlciBpcyBzdG9yZWQgaW5zaWRlIHRoZSBhc3NvY2lhdGVkCi0gICAgICBjb3JlIGZpbGUgc2VjdGlvbi4gICovCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwCi1pbmRleCA5ODc5ZjBjYTQ3Li5jYmMwZTRkNWY3IDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL2FzbS1zb3VyY2UuZXhwCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vYXNtLXNvdXJjZS5leHAKLUBAIC0xMTYsNiArMTE2LDExIEBAIHN3aXRjaCAtZ2xvYiAtLSBbaXN0YXJnZXRdIHsKLSAgICAgICAgICAgICBhcHBlbmQgbGluay1mbGFncyAiIC1tIGVsZjMycHBjIgotICAgICAgICAgfQotICAgICB9Ci0rICAgICJzaCotbGludXgqIiB7Ci0rICAgICAgICBzZXQgYXNtLWFyY2ggc2gtbGludXgKLSsgICAgICAgIHNldCBhc20tZmxhZ3MgIi1JJHtzcmNkaXJ9LyR7c3ViZGlyfSAtSSR7b2JqZGlyfS8ke3N1YmRpcn0iCi0rCXNldCBkZWJ1Zy1mbGFncyAiLWdkd2FyZi0yIgotKyAgICB9Ci0gICAgICJzaCotKi0qIiB7Ci0gICAgICAgICBzZXQgYXNtLWFyY2ggc2gKLSAJc2V0IGRlYnVnLWZsYWdzICItZ2R3YXJmLTIiCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYXNtL3NoLmluYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmFzbS9zaC5pbmMKLWluZGV4IGE0YTVmYzU0NWUuLjg5ZWZlZDc3OTUgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5hc20vc2guaW5jCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5hc20vc2guaW5jCi1AQCAtNDAsOSArNDAsOCBAQAotIAltb3YubCAgIC5MY29uc3RcQCxyMQotIAlicmEJLkxhZnRlcmNvbnN0XEAKLSAJbm9wCi0tCW5vcAotLS5MY29uc3RcQDoKLSAJLmFsaWduCTIKLSsuTGNvbnN0XEA6Ci0gCS5sb25nCVxzdWJyCi0gCS5hbGlnbgkxCi0gLkxhZnRlcmNvbnN0XEA6Ci1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGExLmMgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuYwotaW5kZXggNDI0ZTFiODMyNy4uMGRlMmU3YjYzMyAxMDA2NDQKLS0tLSBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMS5jCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTEuYwotQEAgLTEsNiArMSw5IEBACi0gI2luY2x1ZGUgPHN0ZGlvLmg+Ci0gI2luY2x1ZGUgPHNpZ25hbC5oPgotIAotKyNpZmRlZiBfX3NoX18KLSsjZGVmaW5lIHNpZ25hbChhLGIpICAgIC8qIFNpZ25hbHMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHRhcmdldCAtIG1ha2UgdGhlbSBnbyBhd2F5ICovCi0rI2VuZGlmCi0gCi0gdm9pZAotIGhhbmRsZV9VU1IxIChpbnQgc2lnKQotZGlmZiAtLWdpdCBhL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2UvYW5ub3RhMy5jIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmMKLWluZGV4IDQyNGUxYjgzMjcuLjk1MmFhZjIxOGEgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL2Fubm90YTMuYwotKysrIGIvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9hbm5vdGEzLmMKLUBAIC0xLDYgKzEsMTAgQEAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gCi0rI2lmZGVmIF9fc2hfXwotKyNkZWZpbmUgc2lnbmFsKGEsYikgICAgLyogU2lnbmFscyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0IC0gbWFrZSB0aGVtIGdvIGF3YXkgKi8KLSsjZW5kaWYKLSsKLSAKLSB2b2lkCi0gaGFuZGxlX1VTUjEgKGludCBzaWcpCi1kaWZmIC0tZ2l0IGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWdhbGwuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnYWxsLmMKLWluZGV4IDgxZjNiMDhkNmIuLjE1NzRiMmQ2Y2IgMTAwNjQ0Ci0tLS0gYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5jCi0rKysgYi9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ2FsbC5jCi1AQCAtMSw2ICsxLDkgQEAKLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1ZGUgPHVuaXN0ZC5oPgotIAotKyNpZmRlZiBfX3NoX18KLSsjZGVmaW5lIHNpZ25hbChhLGIpICAgIC8qIFNpZ25hbHMgbm90IHN1cHBvcnRlZCBvbiB0aGlzIHRhcmdldCAtIG1ha2UgdGhlbSBnbyBhd2F5ICovCi0rI2VuZGlmCi0gCi0gLyogU2lnbmFsIGhhbmRsZXJzLCB3ZSBzZXQgYnJlYWtwb2ludHMgaW4gdGhlbSB0byBtYWtlIHN1cmUgdGhhdCB0aGUKLSAgICBzaWduYWxzIHJlYWxseSBnZXQgZGVsaXZlcmVkLiAgKi8KLWRpZmYgLS1naXQgYS9nZGIvdGVzdHN1aXRlL2dkYi5iYXNlL3NpZ25hbHMuYyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jCi1pbmRleCA3NTY2MDY4ODBmLi4xMjA1YTliYzljIDEwMDY0NAotLS0tIGEvZ2RiL3Rlc3RzdWl0ZS9nZGIuYmFzZS9zaWduYWxzLmMKLSsrKyBiL2dkYi90ZXN0c3VpdGUvZ2RiLmJhc2Uvc2lnbmFscy5jCi1AQCAtMyw2ICszLDEwIEBACi0gI2luY2x1ZGUgPHNpZ25hbC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSsjaWZkZWYgX19zaF9fCi0rI2RlZmluZSBzaWduYWwoYSxiKSAgICAvKiBTaWduYWxzIG5vdCBzdXBwb3J0ZWQgb24gdGhpcyB0YXJnZXQgLSBtYWtlIHRoZW0gZ28gYXdheSAqLwotKyNkZWZpbmUgYWxhcm0oYSkgICAgICAgLyogRGl0dG8gZm9yIGFsYXJtKCkgKi8KLSsjZW5kaWYKLSAKLSBzdGF0aWMgaW50IGNvdW50ID0gMDsKLSAKLS0tIAotMi4xOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNS1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA1LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDAzNjBkYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNS1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoCkBAIC0wLDAgKzEsNDcgQEAKK0Zyb20gZDEzMmYyMWQ4OTE1N2U5ODA1NzRkYTdkMGM5NDlmNmRkMTdkZjhjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjI1OjAzIC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIERvbnQgZGlzYWJsZSBsaWJyZWFkbGluZS5hIHdoZW4gdXNpbmcgLS1kaXNhYmxlLXN0YXRpYworCitJZiBnZGIgaXMgY29uZmlndXJlZCB3aXRoIC0tZGlzYWJsZS1zdGF0aWMgdGhlbiB0aGlzIGlzIGR1dGlmdWxseSBwYXNzZWQgdG8KK3JlYWRsaW5lIHdoaWNoIHRoZW4gZGlzYWJsZXMgbGlicmVhZGxpbmUuYSwgd2hpY2ggY2F1c2VzIGEgcHJvYmxlbSB3aGVuIGdkYgordHJpZXMgdG8gbGluayBhZ2FpbnN0IHRoYXQuCisKK1RvIGVuc3VyZSB0aGF0IHJlYWRsaW5lIGFsd2F5cyBidWlsZHMgc3RhdGljIGxpYnJhcmllcywgcGFzcyAtLWVuYWJsZS1zdGF0aWMgdG8KK3RoZSBzdWItY29uZmlndXJlLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuZGVmIHwgMyArKy0KKyBNYWtlZmlsZS5pbiAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5kZWYgYi9NYWtlZmlsZS5kZWYKK2luZGV4IDMxMWZlYjlkZTMuLjI0YzA2ODVkNDggMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5kZWYKKysrKyBiL01ha2VmaWxlLmRlZgorQEAgLTEwNSw3ICsxMDUsOCBAQCBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSBsaWJpY29udjsKKyAJCW1pc3Npbmc9IGluc3RhbGwtaHRtbDsKKyAJCW1pc3Npbmc9IGluc3RhbGwtaW5mbzsgfTsKKyBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSBtNDsgfTsKKy1ob3N0X21vZHVsZXM9IHsgbW9kdWxlPSByZWFkbGluZTsgfTsKKytob3N0X21vZHVsZXM9IHsgbW9kdWxlPSByZWFkbGluZTsKKysgICAgICAgICAgICAgICAgZXh0cmFfY29uZmlndXJlX2ZsYWdzPSctLWVuYWJsZS1zdGF0aWMnO307CisgaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gc2lkOyB9OworIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHNpbTsgfTsKKyBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSB0ZXhpbmZvOyBub19pbnN0YWxsPSB0cnVlOyB9OworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IDFhYWJmNmVkZTQuLmQ5NTdlZmRlODEgMTAwNjQ0CistLS0gYS9NYWtlZmlsZS5pbgorKysrIGIvTWFrZWZpbGUuaW4KK0BAIC0yNTUxMCw3ICsyNTUxMCw3IEBAIGNvbmZpZ3VyZS1yZWFkbGluZToKKyAJICAkJHMvJCRtb2R1bGVfc3JjZGlyL2NvbmZpZ3VyZSBcCisgCSAgLS1zcmNkaXI9JCR7dG9wZGlyfS8kJG1vZHVsZV9zcmNkaXIgXAorIAkgICQoSE9TVF9DT05GSUdBUkdTKSAtLWJ1aWxkPSR7YnVpbGRfYWxpYXN9IC0taG9zdD0ke2hvc3RfYWxpYXN9IFwKKy0JICAtLXRhcmdldD0ke3RhcmdldF9hbGlhc30gIFwKKysJICAtLXRhcmdldD0ke3RhcmdldF9hbGlhc30gLS1lbmFibGUtc3RhdGljIFwKKyAJICB8fCBleGl0IDEKKyBAZW5kaWYgcmVhZGxpbmUKKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNi1Eb250LWRpc2FibGUtbGlicmVhZGxpbmUuYS13aGVuLXVzaW5nLWRpc2FibGUtc3RhdGljLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA2LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlhZTNlZTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA2LURvbnQtZGlzYWJsZS1saWJyZWFkbGluZS5hLXdoZW4tdXNpbmctZGlzYWJsZS1zdGF0aWMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1Gcm9tIDVmZGQ0MmFjYWE5NjViZTdjNDIwYTNmMmJhMTJiNzdlYTUwM2M1OWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNToyNTowMyAtMDcwMAotU3ViamVjdDogW1BBVENIIDA2LzExXSBEb250IGRpc2FibGUgbGlicmVhZGxpbmUuYSB3aGVuIHVzaW5nIC0tZGlzYWJsZS1zdGF0aWMKLQotSWYgZ2RiIGlzIGNvbmZpZ3VyZWQgd2l0aCAtLWRpc2FibGUtc3RhdGljIHRoZW4gdGhpcyBpcyBkdXRpZnVsbHkgcGFzc2VkIHRvCi1yZWFkbGluZSB3aGljaCB0aGVuIGRpc2FibGVzIGxpYnJlYWRsaW5lLmEsIHdoaWNoIGNhdXNlcyBhIHByb2JsZW0gd2hlbiBnZGIKLXRyaWVzIHRvIGxpbmsgYWdhaW5zdCB0aGF0LgotCi1UbyBlbnN1cmUgdGhhdCByZWFkbGluZSBhbHdheXMgYnVpbGRzIHN0YXRpYyBsaWJyYXJpZXMsIHBhc3MgLS1lbmFibGUtc3RhdGljIHRvCi10aGUgc3ViLWNvbmZpZ3VyZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIE1ha2VmaWxlLmRlZiB8IDMgKystCi0gTWFrZWZpbGUuaW4gIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuZGVmIGIvTWFrZWZpbGUuZGVmCi1pbmRleCA3NTA2M2I2ZDEyLi5jMjdiYmU0ZDI4IDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuZGVmCi0rKysgYi9NYWtlZmlsZS5kZWYKLUBAIC0xMDUsNyArMTA1LDggQEAgaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gbGliaWNvbnY7Ci0gCQltaXNzaW5nPSBpbnN0YWxsLWh0bWw7Ci0gCQltaXNzaW5nPSBpbnN0YWxsLWluZm87IH07Ci0gaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gbTQ7IH07Ci0taG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gcmVhZGxpbmU7IH07Ci0raG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gcmVhZGxpbmU7Ci0rICAgICAgICAgICAgICAgIGV4dHJhX2NvbmZpZ3VyZV9mbGFncz0nLS1lbmFibGUtc3RhdGljJzt9OwotIGhvc3RfbW9kdWxlcz0geyBtb2R1bGU9IHNpZDsgfTsKLSBob3N0X21vZHVsZXM9IHsgbW9kdWxlPSBzaW07IH07Ci0gaG9zdF9tb2R1bGVzPSB7IG1vZHVsZT0gdGV4aW5mbzsgbm9faW5zdGFsbD0gdHJ1ZTsgfTsKLWRpZmYgLS1naXQgYS9NYWtlZmlsZS5pbiBiL01ha2VmaWxlLmluCi1pbmRleCA3ODE0ZmU3NDVmLi4zYjBkYzdjYmIwIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUuaW4KLSsrKyBiL01ha2VmaWxlLmluCi1AQCAtMjU0NzAsNyArMjU0NzAsNyBAQCBjb25maWd1cmUtcmVhZGxpbmU6Ci0gCSAgJCRzLyQkbW9kdWxlX3NyY2Rpci9jb25maWd1cmUgXAotIAkgIC0tc3JjZGlyPSQke3RvcGRpcn0vJCRtb2R1bGVfc3JjZGlyIFwKLSAJICAkKEhPU1RfQ09ORklHQVJHUykgLS1idWlsZD0ke2J1aWxkX2FsaWFzfSAtLWhvc3Q9JHtob3N0X2FsaWFzfSBcCi0tCSAgLS10YXJnZXQ9JHt0YXJnZXRfYWxpYXN9ICBcCi0rCSAgLS10YXJnZXQ9JHt0YXJnZXRfYWxpYXN9IC0tZW5hYmxlLXN0YXRpYyBcCi0gCSAgfHwgZXhpdCAxCi0gQGVuZGlmIHJlYWRsaW5lCi0gCi0tLSAKLTIuMTguMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDYtdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDYtdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDIyMmQwMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNi11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDMyOWU1YmYyOWU5MzRiYTk5NjIyMzcyYTk2NjA4NjU4NjRiYjAyOTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZSBNY0N1cmR5IDxhbWNjdXJkeUBnbWFpbC5jb20+CitEYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjI5OjA2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIHVzZSA8YXNtL3NnaWRlZnMuaD4KKworQnVpbGQgZml4IGZvciBNSVBTIHdpdGggbXVzbCBsaWJjCisKK1RoZSBNSVBTIHNwZWNpZmljIGhlYWRlciA8c2dpZGVmcy5oPiBpcyBwcm92aWRlZCBieSBnbGliYyBhbmQgdWNsaWJjCitidXQgbm90IGJ5IG11c2wuIFJlZ2FyZGxlc3Mgb2YgdGhlIGxpYmMsIHRoZSBrZXJuZWwgaGVhZGVycyBwcm92aWRlCis8YXNtL3NnaWRlZnMuaD4gd2hpY2ggcHJvdmlkZXMgdGhlIHNhbWUgZGVmaW5pdGlvbnMsIHNvIHVzZSB0aGF0CitpbnN0ZWFkLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnZGIvbWlwcy1saW51eC1uYXQuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2dkYi9taXBzLWxpbnV4LW5hdC5jIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKK2luZGV4IDdmNTc1YjMzNjMuLmRjOTNhNjRhOTMgMTAwNjQ0CistLS0gYS9nZGIvbWlwcy1saW51eC1uYXQuYworKysrIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKK0BAIC0zMSw3ICszMSw3IEBACisgI2luY2x1ZGUgImdkYl9wcm9jX3NlcnZpY2UuaCIKKyAjaW5jbHVkZSAiZ3JlZ3NldC5oIgorIAorLSNpbmNsdWRlIDxzZ2lkZWZzLmg+CisrI2luY2x1ZGUgPGFzbS9zZ2lkZWZzLmg+CisgI2luY2x1ZGUgIm5hdC9nZGJfcHRyYWNlLmgiCisgI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KKyAjaW5jbHVkZSAiaW5mLXB0cmFjZS5oIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA3LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA3LVVzZS1leG9ydGVkLWRlZmluaXRpb25zLW9mLVNJR1JUTUlOLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA5ODk2NjEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDctVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorRnJvbSA3ODJiYjJhYjliMTA0ZGFkNGJiYWVkMWQ5YWM3NjljZTdlNWI5ZjRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMzAgQXByIDIwMTYgMTU6MzE6NDAgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gVXNlIGV4b3J0ZWQgZGVmaW5pdGlvbnMgb2YgU0lHUlRNSU4KKworRGVmaW5lIFdfU1RPUENPREUgaWYgbm90IGRlZmluZWQgYWxyZWFkeQorCitfX1NJR1JUTUlOIGlzIGludGVybmFsIHRvIGdsaWJjIGFuZCBvdGhlciBsaWJjcyBlLmcuIG11c2wKK21heSBub3QgcHJvdmlkZSB0aGVtCisKK0ZpeGVzCitodHRwczovL3NvdXJjZXdhcmUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD0xMzAxMgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2RiL2xpbnV4LW5hdC5jICAgICB8IDQgKystLQorIGdkYi9uYXQvbGludXgtbmF0LmggfCA0ICsrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dkYi9saW51eC1uYXQuYyBiL2dkYi9saW51eC1uYXQuYworaW5kZXggNDQ4NGZhNWM4Ny4uM2JiMGVlN2E0OSAxMDA2NDQKKy0tLSBhL2dkYi9saW51eC1uYXQuYworKysrIGIvZ2RiL2xpbnV4LW5hdC5jCitAQCAtNDU4OCw2ICs0NTg4LDYgQEAgbGluX3RocmVhZF9nZXRfdGhyZWFkX3NpZ25hbHMgKHNpZ3NldF90ICpzZXQpCisgICAvKiBOUFRMIHJlc2VydmVzIHRoZSBmaXJzdCB0d28gUlQgc2lnbmFscywgYnV0IGRvZXMgbm90IHByb3ZpZGUgYW55CisgICAgICB3YXkgZm9yIHRoZSBkZWJ1Z2dlciB0byBxdWVyeSB0aGUgc2lnbmFsIG51bWJlcnMgLSBmb3J0dW5hdGVseQorICAgICAgdGhleSBkb24ndCBjaGFuZ2UuICAqLworLSAgc2lnYWRkc2V0IChzZXQsIF9fU0lHUlRNSU4pOworLSAgc2lnYWRkc2V0IChzZXQsIF9fU0lHUlRNSU4gKyAxKTsKKysgIHNpZ2FkZHNldCAoc2V0LCBTSUdSVE1JTik7CisrICBzaWdhZGRzZXQgKHNldCwgU0lHUlRNSU4gKyAxKTsKKyB9CitkaWZmIC0tZ2l0IGEvZ2RiL25hdC9saW51eC1uYXQuaCBiL2dkYi9uYXQvbGludXgtbmF0LmgKK2luZGV4IDQ0ZGNiYjc3NTguLjk3NWQ3Mjc2ZjYgMTAwNjQ0CistLS0gYS9nZGIvbmF0L2xpbnV4LW5hdC5oCisrKysgYi9nZGIvbmF0L2xpbnV4LW5hdC5oCitAQCAtOTEsNCArOTEsOCBAQCBleHRlcm4gdm9pZCBsaW51eF9zdG9wX2x3cCAoc3RydWN0IGx3cF9pbmZvICpsd3ApOworIAorIGV4dGVybiBpbnQgbHdwX2lzX3N0ZXBwaW5nIChzdHJ1Y3QgbHdwX2luZm8gKmx3cCk7CisgCisrI2lmbmRlZiBXX1NUT1BDT0RFCisrI2RlZmluZSBXX1NUT1BDT0RFKHNpZykgKChzaWcpIDw8IDggfCAweDdmKQorKyNlbmRpZgorKworICNlbmRpZiAvKiBOQVRfTElOVVhfTkFUX0ggKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNy11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwNy11c2UtYXNtLXNnaWRlZnMuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA4ZjRiZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDctdXNlLWFzbS1zZ2lkZWZzLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIGQ2ZTEyZDUyZjljZWY3ZjVlNjMxNTAwM2NlYWEyMzZmNmNjNzcyM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZSBNY0N1cmR5IDxhbWNjdXJkeUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjI5OjA2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDcvMTFdIHVzZSA8YXNtL3NnaWRlZnMuaD4KLQotQnVpbGQgZml4IGZvciBNSVBTIHdpdGggbXVzbCBsaWJjCi0KLVRoZSBNSVBTIHNwZWNpZmljIGhlYWRlciA8c2dpZGVmcy5oPiBpcyBwcm92aWRlZCBieSBnbGliYyBhbmQgdWNsaWJjCi1idXQgbm90IGJ5IG11c2wuIFJlZ2FyZGxlc3Mgb2YgdGhlIGxpYmMsIHRoZSBrZXJuZWwgaGVhZGVycyBwcm92aWRlCi08YXNtL3NnaWRlZnMuaD4gd2hpY2ggcHJvdmlkZXMgdGhlIHNhbWUgZGVmaW5pdGlvbnMsIHNvIHVzZSB0aGF0Ci1pbnN0ZWFkLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnZGIvbWlwcy1saW51eC1uYXQuYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2dkYi9taXBzLWxpbnV4LW5hdC5jIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKLWluZGV4IDY4YTc1ODdhZjIuLjJiNzcyMjEzNzIgMTAwNjQ0Ci0tLS0gYS9nZGIvbWlwcy1saW51eC1uYXQuYwotKysrIGIvZ2RiL21pcHMtbGludXgtbmF0LmMKLUBAIC0zMSw3ICszMSw3IEBACi0gI2luY2x1ZGUgImdkYl9wcm9jX3NlcnZpY2UuaCIKLSAjaW5jbHVkZSAiZ3JlZ3NldC5oIgotIAotLSNpbmNsdWRlIDxzZ2lkZWZzLmg+Ci0rI2luY2x1ZGUgPGFzbS9zZ2lkZWZzLmg+Ci0gI2luY2x1ZGUgIm5hdC9nZGJfcHRyYWNlLmgiCi0gI2luY2x1ZGUgPGFzbS9wdHJhY2UuaD4KLSAjaW5jbHVkZSAiaW5mLXB0cmFjZS5oIgotLS0gCi0yLjE4LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA4LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDgtQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xODE2OGM2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA4LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSA0MGM5YzE3NDU5MGNlNmZkYzg3M2I0NTMyODUyNDlmZTk1N2YzNzZkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFNhdCwgMzAgQXByIDIwMTYgMTU6MzU6MzkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gQ2hhbmdlIG9yZGVyIG9mIENGTEFHUworCitMZXRzIHVzIG92ZXJyaWRlIFdlcnJvciBpZiBuZWVkIGJlCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQorCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbiB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4gYi9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluCitpbmRleCAxNmE5ZjJmZDM4Li5iOWM4Y2Q5YzQxIDEwMDY0NAorLS0tIGEvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgorKysrIGIvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgorQEAgLTE0Niw3ICsxNDYsNyBAQCBQVEhSRUFEX0xJQlMgPSBAUFRIUkVBRF9MSUJTQAorIElOVEVSTkFMX0NGTEFHU19CQVNFID0gJHtDWFhGTEFHU30gJHtHTE9CQUxfQ0ZMQUdTfSBcCisgCSR7UFJPRklMRV9DRkxBR1N9ICR7SU5DTFVERV9DRkxBR1N9ICR7Q1BQRkxBR1N9ICQoUFRIUkVBRF9DRkxBR1MpCisgSU5URVJOQUxfV0FSTl9DRkxBR1MgPSAke0lOVEVSTkFMX0NGTEFHU19CQVNFfSAkKFdBUk5fQ0ZMQUdTKQorLUlOVEVSTkFMX0NGTEFHUyA9ICR7SU5URVJOQUxfV0FSTl9DRkxBR1N9ICQoV0VSUk9SX0NGTEFHUykgLURHREJTRVJWRVIKKytJTlRFUk5BTF9DRkxBR1MgPSAke0lOVEVSTkFMX1dBUk5fQ0ZMQUdTfSAkKFdFUlJPUl9DRkxBR1MpICR7Q09NUElMRVJfQ0ZMQUdTfSAtREdEQlNFUlZFUgorIAorICMgTERGTEFHUyBpcyBzcGVjaWZpY2FsbHkgcmVzZXJ2ZWQgZm9yIHNldHRpbmcgZnJvbSB0aGUgY29tbWFuZCBsaW5lCisgIyB3aGVuIHJ1bm5pbmcgbWFrZS4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOC1Vc2UtZXhvcnRlZC1kZWZpbml0aW9ucy1vZi1TSUdSVE1JTi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTViZWM1Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDgtVXNlLWV4b3J0ZWQtZGVmaW5pdGlvbnMtb2YtU0lHUlRNSU4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OCArMCwwIEBACi1Gcm9tIGJhYjBiMzQ2NzI3MjdjNTAzMTNlYjk4Yjg1MjIzNTVjYmUxYmRlMzYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAzMCBBcHIgMjAxNiAxNTozMTo0MCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBVc2UgZXhvcnRlZCBkZWZpbml0aW9ucyBvZiBTSUdSVE1JTgotCi1EZWZpbmUgV19TVE9QQ09ERSBpZiBub3QgZGVmaW5lZCBhbHJlYWR5Ci0KLV9fU0lHUlRNSU4gaXMgaW50ZXJuYWwgdG8gZ2xpYmMgYW5kIG90aGVyIGxpYmNzIGUuZy4gbXVzbAotbWF5IG5vdCBwcm92aWRlIHRoZW0KLQotRml4ZXMKLWh0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTEzMDEyCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLS0tLQotIGdkYi9saW51eC1uYXQuYyAgICAgfCA0ICsrLS0KLSBnZGIvbmF0L2xpbnV4LW5hdC5oIHwgNCArKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9nZGIvbGludXgtbmF0LmMgYi9nZGIvbGludXgtbmF0LmMKLWluZGV4IDA2M2FmZTI2Li5mYjFkMmQ1ZCAxMDA2NDQKLS0tLSBhL2dkYi9saW51eC1uYXQuYwotKysrIGIvZ2RiL2xpbnV4LW5hdC5jCi1AQCAtNDcxMyw2ICs0NzEzLDYgQEAgbGluX3RocmVhZF9nZXRfdGhyZWFkX3NpZ25hbHMgKHNpZ3NldF90ICpzZXQpCi0gICAvKiBOUFRMIHJlc2VydmVzIHRoZSBmaXJzdCB0d28gUlQgc2lnbmFscywgYnV0IGRvZXMgbm90IHByb3ZpZGUgYW55Ci0gICAgICB3YXkgZm9yIHRoZSBkZWJ1Z2dlciB0byBxdWVyeSB0aGUgc2lnbmFsIG51bWJlcnMgLSBmb3J0dW5hdGVseQotICAgICAgdGhleSBkb24ndCBjaGFuZ2UuICAqLwotLSAgc2lnYWRkc2V0IChzZXQsIF9fU0lHUlRNSU4pOwotLSAgc2lnYWRkc2V0IChzZXQsIF9fU0lHUlRNSU4gKyAxKTsKLSsgIHNpZ2FkZHNldCAoc2V0LCBTSUdSVE1JTik7Ci0rICBzaWdhZGRzZXQgKHNldCwgU0lHUlRNSU4gKyAxKTsKLSB9Ci1kaWZmIC0tZ2l0IGEvZ2RiL25hdC9saW51eC1uYXQuaCBiL2dkYi9uYXQvbGludXgtbmF0LmgKLWluZGV4IDFlMzJkZDllLi5iODg2MzA1ZCAxMDA2NDQKLS0tLSBhL2dkYi9uYXQvbGludXgtbmF0LmgKLSsrKyBiL2dkYi9uYXQvbGludXgtbmF0LmgKLUBAIC05MCw0ICs5MCw4IEBAIGV4dGVybiB2b2lkIGxpbnV4X3N0b3BfbHdwIChzdHJ1Y3QgbHdwX2luZm8gKmx3cCk7Ci0gCi0gZXh0ZXJuIGludCBsd3BfaXNfc3RlcHBpbmcgKHN0cnVjdCBsd3BfaW5mbyAqbHdwKTsKLSAKLSsjaWZuZGVmIFdfU1RPUENPREUKLSsjZGVmaW5lIFdfU1RPUENPREUoc2lnKSAoKHNpZykgPDwgOCB8IDB4N2YpCi0rI2VuZGlmCi0rCi0gI2VuZGlmIC8qIE5BVF9MSU5VWF9OQVRfSCAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA5LUNoYW5nZS1vcmRlci1vZi1DRkxBR1MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDktQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmM0YmMyNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMDktQ2hhbmdlLW9yZGVyLW9mLUNGTEFHUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gYmE2ZmZhNDYxZmU3ODFkNDRkNmRjYmMwZmJkNTY5MjM3YjQ1MGZkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDMwIEFwciAyMDE2IDE1OjM1OjM5IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDkvMTFdIENoYW5nZSBvcmRlciBvZiBDRkxBR1MKLQotTGV0cyB1cyBvdmVycmlkZSBXZXJyb3IgaWYgbmVlZCBiZQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGdkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL01ha2VmaWxlLmluIGIvZ2RiL2dkYnNlcnZlci9NYWtlZmlsZS5pbgotaW5kZXggZjJmOGEwODRiZC4uOTUyOGRiMTM2NCAxMDA2NDQKLS0tLSBhL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KLSsrKyBiL2dkYi9nZGJzZXJ2ZXIvTWFrZWZpbGUuaW4KLUBAIC0xNDMsNyArMTQzLDcgQEAgQ1BQRkxBR1MgPSBAQ1BQRkxBR1NACi0gSU5URVJOQUxfQ0ZMQUdTX0JBU0UgPSAke0NYWEZMQUdTfSAke0dMT0JBTF9DRkxBR1N9IFwKLSAJJHtQUk9GSUxFX0NGTEFHU30gJHtJTkNMVURFX0NGTEFHU30gJHtDUFBGTEFHU30KLSBJTlRFUk5BTF9XQVJOX0NGTEFHUyA9ICR7SU5URVJOQUxfQ0ZMQUdTX0JBU0V9ICQoV0FSTl9DRkxBR1MpCi0tSU5URVJOQUxfQ0ZMQUdTID0gJHtJTlRFUk5BTF9XQVJOX0NGTEFHU30gJChXRVJST1JfQ0ZMQUdTKSAtREdEQlNFUlZFUgotK0lOVEVSTkFMX0NGTEFHUyA9ICR7SU5URVJOQUxfV0FSTl9DRkxBR1N9ICQoV0VSUk9SX0NGTEFHUykgJHtDT01QSUxFUl9DRkxBR1N9IC1ER0RCU0VSVkVSCi0gCi0gIyBMREZMQUdTIGlzIHNwZWNpZmljYWxseSByZXNlcnZlZCBmb3Igc2V0dGluZyBmcm9tIHRoZSBjb21tYW5kIGxpbmUKLSAjIHdoZW4gcnVubmluZyBtYWtlLgotLS0gCi0yLjE4LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDA5LXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOS1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGYxNWM0OQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAwOS1yZXNvbHZlLXJlc3RyaWN0LWtleXdvcmQtY29uZmxpY3QucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSA1YjY5YTk4ZjZiYjczNjNhMWY3OWYyOWJhYzJiMjViN2RmNmQyZmRkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTAgTWF5IDIwMTYgMDg6NDc6MDUgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVzb2x2ZSByZXN0cmljdCBrZXl3b3JkIGNvbmZsaWN0CisKK0dDQyBkZXRlY3RzIHRoYXQgd2UgY2FsbCAncmVzdHJpY3QnIGFzIHBhcmFtIG5hbWUgaW4gZnVuY3Rpb24KK3NpZ25hdHVyZXMgYW5kIGNvbXBsYWlucyBzaW5jZSBib3RoIHBhcmFtcyBhcmUgY2FsbGVkICdyZXN0cmljdCcKK3RoZXJlZm9yZSB3ZSB1c2UgX19yZXN0cmljdCB0byBkZW5vdGUgdGhlIEM5OSBrZXl3b3JrCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oIHwgOCArKysrLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmggYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmgKK2luZGV4IGQ1MzVhNmE0OGIuLjdjMzRkNWExYWEgMTAwNjQ0CistLS0gYS9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmgKKysrKyBiL2dudWxpYi9pbXBvcnQvc3lzX3RpbWUuaW4uaAorQEAgLTkzLDIwICs5MywyMCBAQCBzdHJ1Y3QgdGltZXZhbAorICMgICBkZWZpbmUgZ2V0dGltZW9mZGF5IHJwbF9nZXR0aW1lb2ZkYXkKKyAjICBlbmRpZgorIF9HTF9GVU5DREVDTF9SUEwgKGdldHRpbWVvZmRheSwgaW50LAorLSAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqcmVzdHJpY3QsIHZvaWQgKnJlc3RyaWN0KQorKyAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCwgdm9pZCAqX19yZXN0cmljdCkKKyAgICAgICAgICAgICAgICAgICBfR0xfQVJHX05PTk5VTEwgKCgxKSkpOworIF9HTF9DWFhBTElBU19SUEwgKGdldHRpbWVvZmRheSwgaW50LAorLSAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqcmVzdHJpY3QsIHZvaWQgKnJlc3RyaWN0KSk7CisrICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0LCB2b2lkICpfX3Jlc3RyaWN0KSk7CisgIyBlbHNlCisgIyAgaWYgIUBIQVZFX0dFVFRJTUVPRkRBWUAKKyBfR0xfRlVOQ0RFQ0xfU1lTIChnZXR0aW1lb2ZkYXksIGludCwKKy0gICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKnJlc3RyaWN0LCB2b2lkICpyZXN0cmljdCkKKysgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QsIHZvaWQgKl9fcmVzdHJpY3QpCisgICAgICAgICAgICAgICAgICAgX0dMX0FSR19OT05OVUxMICgoMSkpKTsKKyAjICBlbmRpZgorIC8qIE5lZWQgdG8gY2FzdCwgYmVjYXVzZSBvbiBnbGliYyBzeXN0ZW1zLCBieSBkZWZhdWx0LCB0aGUgc2Vjb25kIGFyZ3VtZW50IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXpvbmUgKi4gICovCisgX0dMX0NYWEFMSUFTX1NZU19DQVNUIChnZXR0aW1lb2ZkYXksIGludCwKKy0gICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqcmVzdHJpY3QsIHZvaWQgKnJlc3RyaWN0KSk7CisrICAgICAgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QsIHZvaWQgKl9fcmVzdHJpY3QpKTsKKyAjIGVuZGlmCisgX0dMX0NYWEFMSUFTV0FSTiAoZ2V0dGltZW9mZGF5KTsKKyAjIGlmIGRlZmluZWQgX19jcGx1c3BsdXMgJiYgZGVmaW5lZCBHTlVMSUJfTkFNRVNQQUNFCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTAtRml4LWludmFsaWQtc2lncHJvY21hc2stY2FsbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMC1GaXgtaW52YWxpZC1zaWdwcm9jbWFzay1jYWxsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjUyMDljMDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTAtRml4LWludmFsaWQtc2lncHJvY21hc2stY2FsbC5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIGJjMWYwMWZmNWU1MjRmNzc3NzA4MzAyNGJjZTM0OGE5YjAwMTdhN2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBZb3Vzb25nIFpob3UgPHlzemhvdTR0ZWNoQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjQgTWFyIDIwMTcgMTA6MzY6MDMgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGludmFsaWQgc2lncHJvY21hc2sgY2FsbAorTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitUaGUgUE9TSVggZG9jdW1lbnQgc2F5cworCisgICAgVGhlIHB0aHJlYWRfc2lnbWFzaygpIGFuZCBzaWdwcm9jbWFzaygpIGZ1bmN0aW9ucyBzaGFsbCBmYWlsIGlmOgorCisgICAgW0VJTlZBTF0KKyAgICBUaGUgdmFsdWUgb2YgdGhlIGhvdyBhcmd1bWVudCBpcyBub3QgZXF1YWwgdG8gb25lIG9mIHRoZSBkZWZpbmVkIHZhbHVlcy4KKworYW5kIHRoaXMgaXMgaG93IG11c2wtbGliYyBpcyBjdXJyZW50bHkgZG9pbmcuICBGaXggdGhlIGNhbGwgdG8gYmUgc2FmZQorYW5kIGNvcnJlY3QKKworIFsxXSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS9mdW5jdGlvbnMvcHRocmVhZF9zaWdtYXNrLmh0bWwKKworZ2RiL0NoYW5nZUxvZzoKKzIwMTctMDMtMjQgIFlvdXNvbmcgWmhvdSAgPHlzemhvdTR0ZWNoQGdtYWlsLmNvbT4KKworICAgICogY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMgKHNhdmVfb3JpZ2luYWxfc2lnbmFsc19zdGF0ZSk6CisgICAgRml4IGludmFsaWQgc2lncHJvY21hc2sgY2FsbC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtub3QgYXV0aG9yLCBjaGVycnktcGlja2VkIGZyb20gTEVERSBodHRwczovL2J1Z3MubGVkZS1wcm9qZWN0Lm9yZy9pbmRleC5waHA/ZG89ZGV0YWlscyZ0YXNrX2lkPTYzNyZvcGVuZWRmcm9tPS0xJTJCd2Vla10KK1NpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBnZGIvZ2Ric3VwcG9ydC9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvZ2RiL2dkYnN1cHBvcnQvc2lnbmFscy1zdGF0ZS1zYXZlLXJlc3RvcmUuYyBiL2dkYi9nZGJzdXBwb3J0L3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMKK2luZGV4IGMyOTJkNDk4ZGEuLmFmOWRjYWViMDggMTAwNjQ0CistLS0gYS9nZGIvZ2Ric3VwcG9ydC9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jCisrKysgYi9nZGIvZ2Ric3VwcG9ydC9zaWduYWxzLXN0YXRlLXNhdmUtcmVzdG9yZS5jCitAQCAtMzgsNyArMzgsNyBAQCBzYXZlX29yaWdpbmFsX3NpZ25hbHNfc3RhdGUgKGJvb2wgcXVpZXQpCisgICBpbnQgaTsKKyAgIGludCByZXM7CisgCistICByZXMgPSBnZGJfc2lnbWFzayAoMCwgIE5VTEwsICZvcmlnaW5hbF9zaWduYWxfbWFzayk7CisrICByZXMgPSBnZGJfc2lnbWFzayAoU0lHX0JMT0NLLCAgTlVMTCwgJm9yaWdpbmFsX3NpZ25hbF9tYXNrKTsKKyAgIGlmIChyZXMgPT0gLTEpCisgICAgIHBlcnJvcl93aXRoX25hbWUgKCgic2lncHJvY21hc2siKSk7CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTAtcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDEwLXJlc29sdmUtcmVzdHJpY3Qta2V5d29yZC1jb25mbGljdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA5ZDUyZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTAtcmVzb2x2ZS1yZXN0cmljdC1rZXl3b3JkLWNvbmZsaWN0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDggKzAsMCBAQAotRnJvbSAxOWI1ODEwNTZjMTcwOWY3ZDI4NzJjZDc2Yjk3NzU0MmEwZmU2MTQyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMTAgTWF5IDIwMTYgMDg6NDc6MDUgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxMC8xMV0gcmVzb2x2ZSByZXN0cmljdCBrZXl3b3JkIGNvbmZsaWN0Ci0KLUdDQyBkZXRlY3RzIHRoYXQgd2UgY2FsbCAncmVzdHJpY3QnIGFzIHBhcmFtIG5hbWUgaW4gZnVuY3Rpb24KLXNpZ25hdHVyZXMgYW5kIGNvbXBsYWlucyBzaW5jZSBib3RoIHBhcmFtcyBhcmUgY2FsbGVkICdyZXN0cmljdCcKLXRoZXJlZm9yZSB3ZSB1c2UgX19yZXN0cmljdCB0byBkZW5vdGUgdGhlIEM5OSBrZXl3b3JrCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gZ2RiL2dudWxpYi9pbXBvcnQvc3lzX3RpbWUuaW4uaCB8IDggKysrKy0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2RiL2dudWxpYi9pbXBvcnQvc3lzX3RpbWUuaW4uaCBiL2dkYi9nbnVsaWIvaW1wb3J0L3N5c190aW1lLmluLmgKLWluZGV4IGI0YTBlNDljNTAuLmQyMmNlYTlhYWYgMTAwNjQ0Ci0tLS0gYS9nZGIvZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oCi0rKysgYi9nZGIvZ251bGliL2ltcG9ydC9zeXNfdGltZS5pbi5oCi1AQCAtOTMsMjAgKzkzLDIwIEBAIHN0cnVjdCB0aW1ldmFsCi0gIyAgIGRlZmluZSBnZXR0aW1lb2ZkYXkgcnBsX2dldHRpbWVvZmRheQotICMgIGVuZGlmCi0gX0dMX0ZVTkNERUNMX1JQTCAoZ2V0dGltZW9mZGF5LCBpbnQsCi0tICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpyZXN0cmljdCwgdm9pZCAqcmVzdHJpY3QpCi0rICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpfX3Jlc3RyaWN0LCB2b2lkICpfX3Jlc3RyaWN0KQotICAgICAgICAgICAgICAgICAgIF9HTF9BUkdfTk9OTlVMTCAoKDEpKSk7Ci0gX0dMX0NYWEFMSUFTX1JQTCAoZ2V0dGltZW9mZGF5LCBpbnQsCi0tICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpyZXN0cmljdCwgdm9pZCAqcmVzdHJpY3QpKTsKLSsgICAgICAgICAgICAgICAgICAoc3RydWN0IHRpbWV2YWwgKl9fcmVzdHJpY3QsIHZvaWQgKl9fcmVzdHJpY3QpKTsKLSAjIGVsc2UKLSAjICBpZiAhQEhBVkVfR0VUVElNRU9GREFZQAotIF9HTF9GVU5DREVDTF9TWVMgKGdldHRpbWVvZmRheSwgaW50LAotLSAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqcmVzdHJpY3QsIHZvaWQgKnJlc3RyaWN0KQotKyAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCwgdm9pZCAqX19yZXN0cmljdCkKLSAgICAgICAgICAgICAgICAgICBfR0xfQVJHX05PTk5VTEwgKCgxKSkpOwotICMgIGVuZGlmCi0gLyogTmVlZCB0byBjYXN0LCBiZWNhdXNlIG9uIGdsaWJjIHN5c3RlbXMsIGJ5IGRlZmF1bHQsIHRoZSBzZWNvbmQgYXJndW1lbnQgaXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1lem9uZSAqLiAgKi8KLSBfR0xfQ1hYQUxJQVNfU1lTX0NBU1QgKGdldHRpbWVvZmRheSwgaW50LAotLSAgICAgICAgICAgICAgICAgICAgICAgKHN0cnVjdCB0aW1ldmFsICpyZXN0cmljdCwgdm9pZCAqcmVzdHJpY3QpKTsKLSsgICAgICAgICAgICAgICAgICAgICAgIChzdHJ1Y3QgdGltZXZhbCAqX19yZXN0cmljdCwgdm9pZCAqX19yZXN0cmljdCkpOwotICMgZW5kaWYKLSBfR0xfQ1hYQUxJQVNXQVJOIChnZXR0aW1lb2ZkYXkpOwotICMgaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBkZWZpbmVkIEdOVUxJQl9OQU1FU1BBQ0UKLS0tIAotMi4xOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGIvMDAxMS1GaXgtaW52YWxpZC1zaWdwcm9jbWFzay1jYWxsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDExLUZpeC1pbnZhbGlkLXNpZ3Byb2NtYXNrLWNhbGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjZTAyNWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDExLUZpeC1pbnZhbGlkLXNpZ3Byb2NtYXNrLWNhbGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1Gcm9tIGIxOTg1NTk1ZTQ2NzIxYmIxNjhhYzM4ZjRjODQxYTkxNWNjMmY3OTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBZb3Vzb25nIFpob3UgPHlzemhvdTR0ZWNoQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjQgTWFyIDIwMTcgMTA6MzY6MDMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSCAxMS8xMV0gRml4IGludmFsaWQgc2lncHJvY21hc2sgY2FsbAotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1UaGUgUE9TSVggZG9jdW1lbnQgc2F5cwotCi0gICAgVGhlIHB0aHJlYWRfc2lnbWFzaygpIGFuZCBzaWdwcm9jbWFzaygpIGZ1bmN0aW9ucyBzaGFsbCBmYWlsIGlmOgotCi0gICAgW0VJTlZBTF0KLSAgICBUaGUgdmFsdWUgb2YgdGhlIGhvdyBhcmd1bWVudCBpcyBub3QgZXF1YWwgdG8gb25lIG9mIHRoZSBkZWZpbmVkIHZhbHVlcy4KLQotYW5kIHRoaXMgaXMgaG93IG11c2wtbGliYyBpcyBjdXJyZW50bHkgZG9pbmcuICBGaXggdGhlIGNhbGwgdG8gYmUgc2FmZQotYW5kIGNvcnJlY3QKLQotIFsxXSBodHRwOi8vcHVicy5vcGVuZ3JvdXAub3JnL29ubGluZXB1YnMvOTY5OTkxOTc5OS9mdW5jdGlvbnMvcHRocmVhZF9zaWdtYXNrLmh0bWwKLQotZ2RiL0NoYW5nZUxvZzoKLTIwMTctMDMtMjQgIFlvdXNvbmcgWmhvdSAgPHlzemhvdTR0ZWNoQGdtYWlsLmNvbT4KLQotICAgICogY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMgKHNhdmVfb3JpZ2luYWxfc2lnbmFsc19zdGF0ZSk6Ci0gICAgRml4IGludmFsaWQgc2lncHJvY21hc2sgY2FsbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtub3QgYXV0aG9yLCBjaGVycnktcGlja2VkIGZyb20gTEVERSBodHRwczovL2J1Z3MubGVkZS1wcm9qZWN0Lm9yZy9pbmRleC5waHA/ZG89ZGV0YWlscyZ0YXNrX2lkPTYzNyZvcGVuZWRmcm9tPS0xJTJCd2Vla10KLVNpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhZHJhc3ppa0B0eWNvaW50LmNvbT4KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnZGIvY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nZGIvY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMgYi9nZGIvY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMKLWluZGV4IDViYjY2MzIxYmIuLjY1OTdkZWNiYzYgMTAwNjQ0Ci0tLS0gYS9nZGIvY29tbW9uL3NpZ25hbHMtc3RhdGUtc2F2ZS1yZXN0b3JlLmMKLSsrKyBiL2dkYi9jb21tb24vc2lnbmFscy1zdGF0ZS1zYXZlLXJlc3RvcmUuYwotQEAgLTQxLDcgKzQxLDcgQEAgc2F2ZV9vcmlnaW5hbF9zaWduYWxzX3N0YXRlIChib29sIHF1aWV0KQotICAgaW50IGk7Ci0gICBpbnQgcmVzOwotIAotLSAgcmVzID0gc2lncHJvY21hc2sgKDAsICBOVUxMLCAmb3JpZ2luYWxfc2lnbmFsX21hc2spOwotKyAgcmVzID0gc2lncHJvY21hc2sgKFNJR19CTE9DSywgIE5VTEwsICZvcmlnaW5hbF9zaWduYWxfbWFzayk7Ci0gICBpZiAocmVzID09IC0xKQotICAgICBwZXJyb3Jfd2l0aF9uYW1lICgoInNpZ3Byb2NtYXNrIikpOwotIAotLS0gCi0yLjE4LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDExLWdkYnNlcnZlci1jdHJsLWMtaGFuZGxpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiLzAwMTEtZ2Ric2VydmVyLWN0cmwtYy1oYW5kbGluZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWRkOTRjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYi8wMDExLWdkYnNlcnZlci1jdHJsLWMtaGFuZGxpbmcucGF0Y2gKQEAgLTAsMCArMSwzOSBAQAorRnJvbSAzZDY3MDBkMzgxNTNhMGVjOGUwODAwZGU3MDNhNTA4OWE4Y2QzZDJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjkgTm92IDIwMTggMTg6MDA6MjMgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZ2Ric2VydmVyIGN0cmwtYyBoYW5kbGluZworCitUaGlzIHByb2JsZW0gd2FzIGNyZWF0ZWQgYnkgdGhlIHVwc3RyZWFtIGNvbW1pdCA3ODcwOGI3YzhjCitBZnRlciBhcHBseWluZyB0aGUgY29tbWl0LCBpdCB3aWxsIHNlbmQgU0lHSU5UIHRvIHRoZSBwcm9jZXNzCitncm91cCgtc2lnbmFsX3BpZCkuCitCdXQgaWYgd2UgdXNlIGdkYnNlcnZlciBzZW5kIFNJR0lOVCwgYW5kIHRoZSBhdHRhY2hlZCBwcm9jZXNzIGlzIG5vdCBhCitwcm9jZXNzCitncm91cCBsZWFkZXIsIHRoZW4gdGhlICJraWxsICgtc2lnbmFsX3BpZCwgU0lHSU5UKSIgcmV0dXJucyBlcnJvciBhbmQKK2ZhaWxzICB0bworaW50ZXJydXB0IHRoZSBhdHRhY2hlZCBwcm9jZXNzLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAorW2h0dHBzOi8vc291cmNld2FyZS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTE4OTQ1XQorCitBdXRob3I6IEpvc2ggR2FvCitTaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGdkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMgfCA0ICstLS0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9nZGIvZ2Ric2VydmVyL2xpbnV4LWxvdy5jIGIvZ2RiL2dkYnNlcnZlci9saW51eC1sb3cuYworaW5kZXggNDI1NTc5NWVhNi4uNzYyZjhiYWZiNiAxMDA2NDQKKy0tLSBhL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKKysrKyBiL2dkYi9nZGJzZXJ2ZXIvbGludXgtbG93LmMKK0BAIC01OTA0LDkgKzU5MDQsNyBAQCBsaW51eF9sb29rX3VwX3N5bWJvbHMgKHZvaWQpCisgc3RhdGljIHZvaWQKKyBsaW51eF9yZXF1ZXN0X2ludGVycnVwdCAodm9pZCkKKyB7CistICAvKiBTZW5kIGEgU0lHSU5UIHRvIHRoZSBwcm9jZXNzIGdyb3VwLiAgVGhpcyBhY3RzIGp1c3QgbGlrZSB0aGUgdXNlcgorLSAgICAgdHlwZWQgYSBeQyBvbiB0aGUgY29udHJvbGxpbmcgdGVybWluYWwuICAqLworLSAga2lsbCAoLXNpZ25hbF9waWQsIFNJR0lOVCk7CisrICBraWxsIChzaWduYWxfcGlkLCBTSUdJTlQpOworIH0KKyAKKyAvKiBDb3B5IExFTiBieXRlcyBmcm9tIGluZmVyaW9yJ3MgYXV4aWxpYXJ5IHZlY3RvciBzdGFydGluZyBhdCBPRkZTRVQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dkYi9nZGJfOC4zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nZGIvZ2RiXzkuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYl84LjMuMS5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2RiL2dkYl85LjEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdC5pbmMKaW5kZXggOTVhYjM5Ny4uNDEzMWM5OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdC5pbmMKQEAgLTIyLDYgKzIyLDcgQEAKIEVYVFJBX09FQ09ORiA9ICItLXdpdGgtcGVybD0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvcGVybCBcCiAJCS0td2l0aG91dC10Y2x0ayBcCiAiCitFWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgLS13aXRoLWdpdGNvbmZpZz0vZXRjL2dpdGNvbmZpZyAiCiAKICMgTmVlZHMgYnJva2Vuc2VwIGFzIHRoaXMgZG9lc24ndCB1c2UgYXV0b21ha2UKIGluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwZXJsbmF0aXZlIGJhc2gtY29tcGxldGlvbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2l0L2dpdF8yLjI0LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTljYjM4Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMjQuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXJlcXVpcmUgZ2l0LmluYwotCi1FWFRSQV9PRUNPTkYgKz0gImFjX2N2X3NucHJpbnRmX3JldHVybnNfYm9ndXM9bm8gXAotICAgICAgICAgICAgICAgICBhY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz0ke2FjX2N2X2ZyZWFkX3JlYWRzX2RpcmVjdG9yaWVzPXllc30gXAotICAgICAgICAgICAgICAgICAiCi1FWFRSQV9PRU1BS0UgKz0gIk5PX0dFVFRFWFQ9MSIKLQotU1JDX1VSSVt0YXJiYWxsLm1kNXN1bV0gPSAiZWQzOTM2MWEzYWUzNjJjOGFmODUyZDFhMDY5OTJiYzIiCi1TUkNfVVJJW3RhcmJhbGwuc2hhMjU2c3VtXSA9ICJhZDExMDMwZDJlYWM2NTZlZTllODg2MmY1NmQxNjEwNTUwZjc4NjcxODFiZWZmODE0Yzc3MTJhOTkxOTJlOTlkIgotU1JDX1VSSVttYW5wYWdlcy5tZDVzdW1dID0gIjU3NDY1ZTgzZjEzYmE5MTBhMTc4YjcxN2Q5Mzk1OGMwIgotU1JDX1VSSVttYW5wYWdlcy5zaGEyNTZzdW1dID0gImNlOTk1Zjg2ZjQ0MWI1NmFiMWZkMDc4OGE5NDc4NjkwNGFlMmUyOTg5ZTcxOTFmZDY4MDYwMDAzMDExMzY2ZDciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMjQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dpdC9naXRfMi4yNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRhZWEzMWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9naXQvZ2l0XzIuMjQuMS5iYgpAQCAtMCwwICsxLDExIEBACityZXF1aXJlIGdpdC5pbmMKKworRVhUUkFfT0VDT05GICs9ICJhY19jdl9zbnByaW50Zl9yZXR1cm5zX2JvZ3VzPW5vIFwKKyAgICAgICAgICAgICAgICAgYWNfY3ZfZnJlYWRfcmVhZHNfZGlyZWN0b3JpZXM9JHthY19jdl9mcmVhZF9yZWFkc19kaXJlY3Rvcmllcz15ZXN9IFwKKyAgICAgICAgICAgICAgICAgIgorRVhUUkFfT0VNQUtFICs9ICJOT19HRVRURVhUPTEiCisKK1NSQ19VUklbdGFyYmFsbC5tZDVzdW1dID0gIjE2NmJkZTk2YWRiYmMxMWM4ODQzZDRmOGY0Zjk4MTFiIgorU1JDX1VSSVt0YXJiYWxsLnNoYTI1NnN1bV0gPSAiYWQ1MzM0OTU2MzAxYzg2ODQxZWIxZTViMWJiMjA4ODRhNmJhZDg5YTEwYTY3NjJjOTU4MjIwYzdjZjY0ZGEwMiIKK1NSQ19VUklbbWFucGFnZXMubWQ1c3VtXSA9ICIzMWMyMjcyYTg5NzkwMjI0OTdiYTNkNDIwMmRmMTQ1ZCIKK1NSQ19VUklbbWFucGFnZXMuc2hhMjU2c3VtXSA9ICI5YTdhZTNhMDkzYmVhMzk3NzBlYjk2Y2EzZTViNDBiZmY3YWYwYjlmNjEyM2YwODlkNzgyMWQwZTViOGUxMjMwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2xpZGUvZ2xpZGVfMC4xMy4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ2xpZGUvZ2xpZGVfMC4xMy4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZmFhZjRhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dsaWRlL2dsaWRlXzAuMTMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVNVTU1BUlkgPSAiVmVuZG9yIFBhY2thZ2UgTWFuYWdlbWVudCBmb3IgR29sYW5nIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9nbGlkZS5zaCIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3JjLyR7R09fSU1QT1JUfS9MSUNFTlNFO21kNT01NDkwNWNmODk0ZjhjYzQxNmE5MmY0ZmMzNTBjMzViMiIKLQotR09fSU1QT1JUID0gImdpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUiCi1TUkNfVVJJID0gImdpdDovLyR7R09fSU1QT1JUfSIKLVNSQ1JFViA9ICI5ZWY2Y2EzMTNiMzIwMDA3OTg2MWYyZGU0ZTU2N2IxZDIyMDgxZDE5IgotCi1pbmhlcml0IGdvCi0KLVJERVBFTkRTXyR7UE59LWRldiArPSAiYmFzaCIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJiYXNoIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLSMgZm9yIHg4NiBlbmRzIHdpdGggdGV4dHJlbCBpbiAke1BOfQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTg1NjMxLwotIyBFUlJPUjogUUEgSXNzdWU6IEVMRiBiaW5hcnkgJy93b3JrL2k1ODYtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlL3Vzci9iaW4vZ2xpZGUnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dCBbdGV4dHJlbF0KLUlOU0FORV9TS0lQXyR7UE59ICs9ICJ0ZXh0cmVsIgotCi0jIGZvciBhYXJjaDY0IGVuZHMgd2l0aCB0ZXh0cmVsIGluICR7UE59LXB0ZXN0Ci0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8xODU2MzMvCi0jIEVSUk9SOiBRQSBJc3N1ZTogRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2dsaWRlLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAotIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvZGVwZW5kZW5jeS9kZXBlbmRlbmN5LnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAotIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvcmVwby9yZXBvLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAotIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvbWlycm9ycy9taXJyb3JzLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAotIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvY2ZnL2NmZy50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2dvZGVwL3N0cmlwL3N0cmlwLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAotIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvcGF0aC9wYXRoLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAotIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvdHJlZS90cmVlLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAotIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvdXRpbC91dGlsLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dAotIyBFTEYgYmluYXJ5ICcvd29yay9hYXJjaDY0LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS1wdGVzdC91c3IvbGliL2dsaWRlL3B0ZXN0L2dpdGh1Yi5jb20vTWFzdGVybWluZHMvZ2xpZGUvYWN0aW9uL2FjdGlvbi50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKLSMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2NhY2hlL2NhY2hlLnRlc3QnIGhhcyByZWxvY2F0aW9ucyBpbiAudGV4dCBbdGV4dHJlbF0KLUlOU0FORV9TS0lQXyR7UE59LXB0ZXN0ICs9ICJ0ZXh0cmVsIgotCi0jIGZhaWxzIHRvIHJ1biB0YXNrIGNvbXBpbGVfcHRlc3RfYmFzZSBvbiBtaXBzCi1QVEVTVF9FTkFCTEVEX21pcHNhcmNoID0gIjAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbGlkZS9nbGlkZV8wLjEzLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbGlkZS9nbGlkZV8wLjEzLjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWJhZDBlYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dsaWRlL2dsaWRlXzAuMTMuMy5iYgpAQCAtMCwwICsxLDM4IEBACitTVU1NQVJZID0gIlZlbmRvciBQYWNrYWdlIE1hbmFnZW1lbnQgZm9yIEdvbGFuZyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2xpZGUuc2giCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NyYy8ke0dPX0lNUE9SVH0vTElDRU5TRTttZDU9NTQ5MDVjZjg5NGY4Y2M0MTZhOTJmNGZjMzUwYzM1YjIiCisKK0dPX0lNUE9SVCA9ICJnaXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlIgorU1JDX1VSSSA9ICJnaXQ6Ly8ke0dPX0lNUE9SVH0iCitTUkNSRVYgPSAiOGVkNWI5MjkyMzc5ZDg2YzM5NTkyYTdlNmE1OGViOWM5MDM4NzdjZiIKKworaW5oZXJpdCBnbworCitSREVQRU5EU18ke1BOfS1kZXYgKz0gImJhc2giCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCisjIGZvciB4ODYgZW5kcyB3aXRoIHRleHRyZWwgaW4gJHtQTn0KKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzE4NTYzMS8KKyMgRVJST1I6IFFBIElzc3VlOiBFTEYgYmluYXJ5ICcvd29yay9pNTg2LW9lLWxpbnV4L2dsaWRlLzAuMTMuMS1yMC9wYWNrYWdlcy1zcGxpdC9nbGlkZS91c3IvYmluL2dsaWRlJyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQgW3RleHRyZWxdCitJTlNBTkVfU0tJUF8ke1BOfSArPSAidGV4dHJlbCIKKworIyBmb3IgYWFyY2g2NCBlbmRzIHdpdGggdGV4dHJlbCBpbiAke1BOfS1wdGVzdAorIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMTg1NjMzLworIyBFUlJPUjogUUEgSXNzdWU6IEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9nbGlkZS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2RlcGVuZGVuY3kvZGVwZW5kZW5jeS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3JlcG8vcmVwby50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL21pcnJvcnMvbWlycm9ycy50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2NmZy9jZmcudGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9nb2RlcC9zdHJpcC9zdHJpcC50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3BhdGgvcGF0aC50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3RyZWUvdHJlZS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL3V0aWwvdXRpbC50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQKKyMgRUxGIGJpbmFyeSAnL3dvcmsvYWFyY2g2NC1vZS1saW51eC9nbGlkZS8wLjEzLjEtcjAvcGFja2FnZXMtc3BsaXQvZ2xpZGUtcHRlc3QvdXNyL2xpYi9nbGlkZS9wdGVzdC9naXRodWIuY29tL01hc3Rlcm1pbmRzL2dsaWRlL2FjdGlvbi9hY3Rpb24udGVzdCcgaGFzIHJlbG9jYXRpb25zIGluIC50ZXh0CisjIEVMRiBiaW5hcnkgJy93b3JrL2FhcmNoNjQtb2UtbGludXgvZ2xpZGUvMC4xMy4xLXIwL3BhY2thZ2VzLXNwbGl0L2dsaWRlLXB0ZXN0L3Vzci9saWIvZ2xpZGUvcHRlc3QvZ2l0aHViLmNvbS9NYXN0ZXJtaW5kcy9nbGlkZS9jYWNoZS9jYWNoZS50ZXN0JyBoYXMgcmVsb2NhdGlvbnMgaW4gLnRleHQgW3RleHRyZWxdCitJTlNBTkVfU0tJUF8ke1BOfS1wdGVzdCArPSAidGV4dHJlbCIKKworIyBmYWlscyB0byBydW4gdGFzayBjb21waWxlX3B0ZXN0X2Jhc2Ugb24gbWlwcworUFRFU1RfRU5BQkxFRF9taXBzYXJjaCA9ICIwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dudS1jb25maWcvZ251LWNvbmZpZ19naXQuYmIKaW5kZXggMTYzMGMxMi4uNDhiN2U2ZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ251LWNvbmZpZy9nbnUtY29uZmlnX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nbnUtY29uZmlnL2dudS1jb25maWdfZ2l0LmJiCkBAIC04LDggKzgsOCBAQAogCiBJTkhJQklUX0RFRkFVTFRfREVQUyA9ICIxIgogCi1TUkNSRVYgPSAiYjk4NDI0YzI0OTExOWI3OWQzZjcwOWUyNmViODZmMmZkNGQ1ZTVmMyIKLVBWID0gIjIwMTkwNTAxK2dpdCR7U1JDUFZ9IgorU1JDUkVWID0gIjUyNTY4MTdhY2U4NDkzNTAyZWM4ODUwMWExOWU0MDUxYzJlMjIwYjAiCitQViA9ICIyMDIwMDExNytnaXQke1NSQ1BWfSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jb25maWcuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2dudS1jb25maWdpemUuaW4iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZDE0YjE3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotcmVxdWlyZSBnby1jb21tb24uaW5jCi0KLUdPX0JBU0VWRVJTSU9OID0gIjEuMTIiCi1HT19NSU5PUiA9ICIuOSIKLVBWIC49ICIke0dPX01JTk9SfSIKLUZJTEVTRVhUUkFQQVRIU19wcmVwZW5kIDo9ICIke0ZJTEVfRElSTkFNRX0vZ28tJHtHT19CQVNFVkVSU0lPTn06IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT01ZDQ5NTBlY2I3YjI2ZDJjNWU0ZTdiNGUwZGQ3NDcwNyIKLQotU1JDX1VSSSArPSAiXAotICAgIGZpbGU6Ly8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDgtdXNlLUdPQlVJTERNT0RFLXRvLXNldC1idWlsZG1vZGUucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLXJlbGVhc2UtYnJhbmNoLmdvMS4xMi1zZWN1cml0eS1uZXQtdGV4dHByb3RvLWRvbi10LW4ucGF0Y2ggXAotIgotU1JDX1VSSV9hcHBlbmRfbGliYy1tdXNsID0gIiBmaWxlOi8vMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaCIKLQotU1JDX1VSSVttYWluLm1kNXN1bV0gPSAiNjEzMjEwOWQ0MDUwZGEzNDllYWRjOWY3YjAzMDRlZjQiCi1TUkNfVVJJW21haW4uc2hhMjU2c3VtXSA9ICJhYjBlNTZlZDljNDczMmE2NTNlZDIyZTIzMjY1MjcwOWFmYmY1NzNlNzEwZjU2YTA3ZjdmZGVjYTU3OGQ2MmZjIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ0NDI4NTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gN2NjNTE5YWE1Zjg0Y2Y4ZmM3YWM4YzEwZmM2OWFhODA0MDMzMGVhMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci1EYXRlOiBNb24sIDE5IEZlYiAyMDE4IDA4OjQ5OjMzIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFsbG93IENDIGFuZCBDWFggdG8gaGF2ZSBtdWx0aXBsZSB3b3JkcwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotCi0tLS0KLSBzcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi1pbmRleCBhZmFkYmFkLi5jZWRiZmJmIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLUBAIC04NSwxMSArODUsMTEgQEAgZnVuYyBNa0VudigpIFtdY2ZnLkVudlZhciB7Ci0gCi0gCWNjIDo9IGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpCi0gCWlmIGVudiA6PSBzdHJpbmdzLkZpZWxkcyhvcy5HZXRlbnYoIkNDIikpOyBsZW4oZW52KSA+IDAgewotLQkJY2MgPSBlbnZbMF0KLSsJCWNjID0gc3RyaW5ncy5Kb2luKGVudiwgIiAiKQotIAl9Ci0gCWN4eCA6PSBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCkKLSAJaWYgZW52IDo9IHN0cmluZ3MuRmllbGRzKG9zLkdldGVudigiQ1hYIikpOyBsZW4oZW52KSA+IDAgewotLQkJY3h4ID0gZW52WzBdCi0rCQljeHggPSBzdHJpbmdzLkpvaW4oZW52LCAiICIpCi0gCX0KLSAJZW52ID0gYXBwZW5kKGVudiwgY2ZnLkVudlZhcntOYW1lOiAiQ0MiLCBWYWx1ZTogY2N9KQotIAllbnYgPSBhcHBlbmQoZW52LCBjZmcuRW52VmFye05hbWU6ICJDWFgiLCBWYWx1ZTogY3h4fSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMS1yZWxlYXNlLWJyYW5jaC5nbzEuMTItc2VjdXJpdHktbmV0LXRleHRwcm90by1kb24tdC1uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDAxLXJlbGVhc2UtYnJhbmNoLmdvMS4xMi1zZWN1cml0eS1uZXQtdGV4dHByb3RvLWRvbi10LW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdiMzlkYmQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDAxLXJlbGVhc2UtYnJhbmNoLmdvMS4xMi1zZWN1cml0eS1uZXQtdGV4dHByb3RvLWRvbi10LW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjMgKzAsMCBAQAotRnJvbSAyNjViNjkxYWM0NDBiZmI3MTFkOGRlMzIzMzQ2ZjdkNzJlNjIwZWZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmlsaXBwbyBWYWxzb3JkYSA8ZmlsaXBwb0Bnb2xhbmcub3JnPgotRGF0ZTogVGh1LCAxMiBTZXAgMjAxOSAxMjozNzozNiAtMDQwMAotU3ViamVjdDogW1BBVENIXSBbcmVsZWFzZS1icmFuY2guZ28xLjEyLXNlY3VyaXR5XSBuZXQvdGV4dHByb3RvOiBkb24ndAotIG5vcm1hbGl6ZSBoZWFkZXJzIHdpdGggc3BhY2VzIGJlZm9yZSB0aGUgY29sb24KLQotUkZDIDcyMzAgaXMgY2xlYXIgYWJvdXQgaGVhZGVycyB3aXRoIGEgc3BhY2UgYmVmb3JlIHRoZSBjb2xvbiwgbGlrZQotCi1YLUFuc3dlciA6IDQyCi0KLWJlaW5nIGludmFsaWQsIGJ1dCB3ZSd2ZSBiZWVuIGFjY2VwdGluZyBhbmQgbm9ybWFsaXppbmcgdGhlbSBmb3IgY29tcGF0aWJpbGl0eQotcHVycG9zZXMgc2luY2UgQ0wgNTY5MDA1OSBpbiAyMDEyLgotCi1PbiB0aGUgY2xpZW50IHNpZGUsIHRoaXMgaXMgaGFybWxlc3MgYW5kIGluZGVlZCBtb3N0IGJyb3dzZXJzIGJlaGF2ZSB0aGUgc2FtZQotdG8gdGhpcyBkYXkuIE9uIHRoZSBzZXJ2ZXIgc2lkZSwgdGhpcyBiZWNvbWVzIGEgc2VjdXJpdHkgaXNzdWUgd2hlbiB0aGUKLWJlaGF2aW9yIGRvZXNuJ3QgbWF0Y2ggdGhhdCBvZiBhIHJldmVyc2UgcHJveHkgc2l0dGluZyBpbiBmcm9udCBvZiB0aGUgc2VydmVyLgotCi1Gb3IgZXhhbXBsZSwgaWYgYSBXQUYgYWNjZXB0cyB0aGVtIHdpdGhvdXQgbm9ybWFsaXppbmcgdGhlbSwgaXQgbWlnaHQgYmUKLXBvc3NpYmxlIHRvIGJ5cGFzcyBpdHMgZmlsdGVycywgYmVjYXVzZSB0aGUgR28gc2VydmVyIHdvdWxkIGludGVycHJldCB0aGUKLWhlYWRlciBkaWZmZXJlbnRseS4gV29yc2UsIGlmIHRoZSByZXZlcnNlIHByb3h5IGNvYWxlc2NlcyByZXF1ZXN0cyBvbnRvIGEKLXNpbmdsZSBIVFRQLzEuMSBjb25uZWN0aW9uIHRvIGEgR28gc2VydmVyLCB0aGUgdW5kZXJzdGFuZGluZyBvZiB0aGUgcmVxdWVzdAotYm91bmRhcmllcyBjYW4gZ2V0IG91dCBvZiBzeW5jIGJldHdlZW4gdGhlbSwgYWxsb3dpbmcgYW4gYXR0YWNrZXIgdG8gdGFjayBhbgotYXJiaXRyYXJ5IG1ldGhvZCBhbmQgcGF0aCBvbnRvIGEgcmVxdWVzdCBieSBvdGhlciBjbGllbnRzLCBpbmNsdWRpbmcKLWF1dGhlbnRpY2F0aW9uIGhlYWRlcnMgdW5rbm93biB0byB0aGUgYXR0YWNrZXIuCi0KLVRoaXMgd2FzIHJlY2VudGx5IHByZXNlbnRlZCBhdCBtdWx0aXBsZSBzZWN1cml0eSBjb25mZXJlbmNlczoKLWh0dHBzOi8vcG9ydHN3aWdnZXIubmV0L2Jsb2cvaHR0cC1kZXN5bmMtYXR0YWNrcy1yZXF1ZXN0LXNtdWdnbGluZy1yZWJvcm4KLQotbmV0L2h0dHAgc2VydmVycyBhbHJlYWR5IHJlamVjdCBoZWFkZXIga2V5cyB3aXRoIGludmFsaWQgY2hhcmFjdGVycy4KLVNpbXBseSBzdG9wIG5vcm1hbGl6aW5nIGV4dHJhIHNwYWNlcyBpbiBuZXQvdGV4dHByb3RvLCBsZXQgaXQgcmV0dXJuIHRoZW0KLXVuY2hhbmdlZCBsaWtlIGl0IGRvZXMgZm9yIG90aGVyIGludmFsaWQgaGVhZGVycywgYW5kIGxldCBuZXQvaHR0cCBlbmZvcmNlCi1SRkMgNzIzMCwgd2hpY2ggaXMgSFRUUCBzcGVjaWZpYy4gVGhpcyBsb3NlcyB1cyBub3JtYWxpemF0aW9uIG9uIHRoZSBjbGllbnQKLXNpZGUsIGJ1dCB0aGVyZSdzIG5vIHJpZ2h0IGFuc3dlciBvbiB0aGUgY2xpZW50IHNpZGUgYW55d2F5LCBhbmQgaGlkaW5nIHRoZQotaXNzdWUgc291bmRzIHdvcnNlIHRoYW4gbGV0dGluZyB0aGUgYXBwbGljYXRpb24gZGVjaWRlLgotCi1GaXhlcyBDVkUtMjAxOS0xNjI3NgotCi1DaGFuZ2UtSWQ6IEk2ZDI3MmRlODI3ZTA4NzBkYTg1ZDkzZGY3NzBkNmEwZTE2MWJiY2YxCi1SZXZpZXdlZC1vbjogaHR0cHM6Ly90ZWFtLXJldmlldy5naXQuY29ycC5nb29nbGUuY29tL2MvZ29sYW5nL2dvLXByaXZhdGUvKy81NDk3MTkKLVJldmlld2VkLWJ5OiBCcmFkIEZpdHpwYXRyaWNrIDxicmFkZml0ekBnb29nbGUuY29tPgotKGNoZXJyeSBwaWNrZWQgZnJvbSBjb21taXQgMTI4MGI4NjhlODJiZjE3M2VhM2U5ODhiZTMwOTJkMTYwZWU2NjA4MikKLVJldmlld2VkLW9uOiBodHRwczovL3RlYW0tcmV2aWV3LmdpdC5jb3JwLmdvb2dsZS5jb20vYy9nb2xhbmcvZ28tcHJpdmF0ZS8rLzU1ODc3NgotUmV2aWV3ZWQtYnk6IERtaXRyaSBTaHVyYWx5b3YgPGRtaXRzaHVyQGdvb2dsZS5jb20+Ci0KLUNWRTogQ1ZFLTIwMTktMTYyNzYKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2dvbGFuZy9nby9jb21taXQvNmU2ZjRhYWY3MGM4YjFjYzgxZTY1YTI2MzMyYWE5NDA5ZGUwM2FkOF0KLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL25ldC9odHRwL3NlcnZlX3Rlc3QuZ28gICAgICAgfCAgNCArKysrCi0gc3JjL25ldC9odHRwL3RyYW5zcG9ydF90ZXN0LmdvICAgfCAyNyArKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBzcmMvbmV0L3RleHRwcm90by9yZWFkZXIuZ28gICAgICB8IDEwICsrLS0tLS0tLS0KLSBzcmMvbmV0L3RleHRwcm90by9yZWFkZXJfdGVzdC5nbyB8IDEzICsrKysrKy0tLS0tLS0KLSA0IGZpbGVzIGNoYW5nZWQsIDM5IGluc2VydGlvbnMoKyksIDE1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL25ldC9odHRwL3NlcnZlX3Rlc3QuZ28gYi9zcmMvbmV0L2h0dHAvc2VydmVfdGVzdC5nbwotaW5kZXggNmViMDA4OGE5Ni4uODliZmRmYmI4MiAxMDA2NDQKLS0tLSBhL3NyYy9uZXQvaHR0cC9zZXJ2ZV90ZXN0LmdvCi0rKysgYi9zcmMvbmV0L2h0dHAvc2VydmVfdGVzdC5nbwotQEAgLTQ3NDgsNiArNDc0OCwxMCBAQCBmdW5jIFRlc3RTZXJ2ZXJWYWxpZGF0ZXNIZWFkZXJzKHQgKnRlc3RpbmcuVCkgewotIAkJeyJmb29ceGZmYmFyOiBmb29cclxuIiwgNDAwfSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmluYXJ5IGluIGhlYWRlcgotIAkJeyJmb29ceDAwYmFyOiBmb29cclxuIiwgNDAwfSwgICAgICAgICAgICAgICAgICAgICAgICAgLy8gYmluYXJ5IGluIGhlYWRlcgotIAkJeyJGb286ICIgKyBzdHJpbmdzLlJlcGVhdCgieCIsIDE8PDIxKSArICJcclxuIiwgNDMxfSwgLy8gaGVhZGVyIHRvbyBsYXJnZQotKwkJLy8gU3BhY2VzIGJldHdlZW4gdGhlIGhlYWRlciBrZXkgYW5kIGNvbG9uIGFyZSBub3QgYWxsb3dlZC4KLSsJCS8vIFNlZSBSRkMgNzIzMCwgU2VjdGlvbiAzLjIuNC4KLSsJCXsiRm9vIDogYmFyXHJcbiIsIDQwMH0sCi0rCQl7IkZvb1x0OiBiYXJcclxuIiwgNDAwfSwKLSAKLSAJCXsiZm9vOiBmb28gZm9vXHJcbiIsIDIwMH0sICAgIC8vIExXUyBzcGFjZSBpcyBva2F5Ci0gCQl7ImZvbzogZm9vXHRmb29cclxuIiwgMjAwfSwgICAvLyBMV1MgdGFiIGlzIG9rYXkKLWRpZmYgLS1naXQgYS9zcmMvbmV0L2h0dHAvdHJhbnNwb3J0X3Rlc3QuZ28gYi9zcmMvbmV0L2h0dHAvdHJhbnNwb3J0X3Rlc3QuZ28KLWluZGV4IDVjMzI5NTQzZTIuLjVlNTQzOGE3MDggMTAwNjQ0Ci0tLS0gYS9zcmMvbmV0L2h0dHAvdHJhbnNwb3J0X3Rlc3QuZ28KLSsrKyBiL3NyYy9uZXQvaHR0cC90cmFuc3BvcnRfdGVzdC5nbwotQEAgLTUxMzMsMyArNTEzMywzMCBAQCBmdW5jIFRlc3RUcmFuc3BvcnRJZ25vcmVzNDA4KHQgKnRlc3RpbmcuVCkgewotIAl9Ci0gCXQuRmF0YWxmKCJ0aW1lb3V0IGFmdGVyICV2IHdhaXRpbmcgZm9yIFRyYW5zcG9ydCBjb25uZWN0aW9ucyB0byBkaWUgb2ZmIiwgdGltZS5TaW5jZSh0MCkpCi0gfQotKwotK2Z1bmMgVGVzdEludmFsaWRIZWFkZXJSZXNwb25zZSh0ICp0ZXN0aW5nLlQpIHsKLSsJc2V0UGFyYWxsZWwodCkKLSsJZGVmZXIgYWZ0ZXJUZXN0KHQpCi0rCWNzdCA6PSBuZXdDbGllbnRTZXJ2ZXJUZXN0KHQsIGgxTW9kZSwgSGFuZGxlckZ1bmMoZnVuYyh3IFJlc3BvbnNlV3JpdGVyLCByICpSZXF1ZXN0KSB7Ci0rCQljb25uLCBidWYsIF8gOj0gdy4oSGlqYWNrZXIpLkhpamFjaygpCi0rCQlidWYuV3JpdGUoW11ieXRlKCJIVFRQLzEuMSAyMDAgT0tcclxuIiArCi0rCQkJIkRhdGU6IFdlZCwgMzAgQXVnIDIwMTcgMTk6MDk6MjcgR01UXHJcbiIgKwotKwkJCSJDb250ZW50LVR5cGU6IHRleHQvaHRtbDsgY2hhcnNldD11dGYtOFxyXG4iICsKLSsJCQkiQ29udGVudC1MZW5ndGg6IDBcclxuIiArCi0rCQkJIkZvbyA6IGJhclxyXG5cclxuIikpCi0rCQlidWYuRmx1c2goKQotKwkJY29ubi5DbG9zZSgpCi0rCX0pKQotKwlkZWZlciBjc3QuY2xvc2UoKQotKwlyZXMsIGVyciA6PSBjc3QuYy5HZXQoY3N0LnRzLlVSTCkKLSsJaWYgZXJyICE9IG5pbCB7Ci0rCQl0LkZhdGFsKGVycikKLSsJfQotKwlkZWZlciByZXMuQm9keS5DbG9zZSgpCi0rCWlmIHYgOj0gcmVzLkhlYWRlci5HZXQoIkZvbyIpOyB2ICE9ICIiIHsKLSsJCXQuRXJyb3JmKGB1bmV4cGVjdGVkICJGb28iIGhlYWRlcjogJXFgLCB2KQotKwl9Ci0rCWlmIHYgOj0gcmVzLkhlYWRlci5HZXQoIkZvbyAiKTsgdiAhPSAiYmFyIiB7Ci0rCQl0LkVycm9yZihgYmFkICJGb28gIiBoZWFkZXIgdmFsdWU6ICVxLCB3YW50ICVxYCwgdiwgImJhciIpCi0rCX0KLSt9Ci1kaWZmIC0tZ2l0IGEvc3JjL25ldC90ZXh0cHJvdG8vcmVhZGVyLmdvIGIvc3JjL25ldC90ZXh0cHJvdG8vcmVhZGVyLmdvCi1pbmRleCAyYzRmMjVkNWFlLi4xYTVlMzY0Y2Y3IDEwMDY0NAotLS0tIGEvc3JjL25ldC90ZXh0cHJvdG8vcmVhZGVyLmdvCi0rKysgYi9zcmMvbmV0L3RleHRwcm90by9yZWFkZXIuZ28KLUBAIC00OTMsMTggKzQ5MywxMiBAQCBmdW5jIChyICpSZWFkZXIpIFJlYWRNSU1FSGVhZGVyKCkgKE1JTUVIZWFkZXIsIGVycm9yKSB7Ci0gCQkJcmV0dXJuIG0sIGVycgotIAkJfQotIAotLQkJLy8gS2V5IGVuZHMgYXQgZmlyc3QgY29sb247IHNob3VsZCBub3QgaGF2ZSB0cmFpbGluZyBzcGFjZXMKLS0JCS8vIGJ1dCB0aGV5IGFwcGVhciBpbiB0aGUgd2lsZCwgdmlvbGF0aW5nIHNwZWNzLCBzbyB3ZSByZW1vdmUKLS0JCS8vIHRoZW0gaWYgcHJlc2VudC4KLSsJCS8vIEtleSBlbmRzIGF0IGZpcnN0IGNvbG9uLgotIAkJaSA6PSBieXRlcy5JbmRleEJ5dGUoa3YsICc6JykKLSAJCWlmIGkgPCAwIHsKLSAJCQlyZXR1cm4gbSwgUHJvdG9jb2xFcnJvcigibWFsZm9ybWVkIE1JTUUgaGVhZGVyIGxpbmU6ICIgKyBzdHJpbmcoa3YpKQotIAkJfQotLQkJZW5kS2V5IDo9IGkKLS0JCWZvciBlbmRLZXkgPiAwICYmIGt2W2VuZEtleS0xXSA9PSAnICcgewotLQkJCWVuZEtleS0tCi0tCQl9Ci0tCQlrZXkgOj0gY2Fub25pY2FsTUlNRUhlYWRlcktleShrdls6ZW5kS2V5XSkKLSsJCWtleSA6PSBjYW5vbmljYWxNSU1FSGVhZGVyS2V5KGt2WzppXSkKLSAKLSAJCS8vIEFzIHBlciBSRkMgNzIzMCBmaWVsZC1uYW1lIGlzIGEgdG9rZW4sIHRva2VucyBjb25zaXN0IG9mIG9uZSBvciBtb3JlIGNoYXJzLgotIAkJLy8gV2UgY291bGQgcmV0dXJuIGEgUHJvdG9jb2xFcnJvciBoZXJlLCBidXQgYmV0dGVyIHRvIGJlIGxpYmVyYWwgaW4gd2hhdCB3ZQotZGlmZiAtLWdpdCBhL3NyYy9uZXQvdGV4dHByb3RvL3JlYWRlcl90ZXN0LmdvIGIvc3JjL25ldC90ZXh0cHJvdG8vcmVhZGVyX3Rlc3QuZ28KLWluZGV4IGY4NWZiZGMzNmQuLmI5MmZkY2QzYzcgMTAwNjQ0Ci0tLS0gYS9zcmMvbmV0L3RleHRwcm90by9yZWFkZXJfdGVzdC5nbwotKysrIGIvc3JjL25ldC90ZXh0cHJvdG8vcmVhZGVyX3Rlc3QuZ28KLUBAIC0xODgsMTEgKzE4OCwxMCBAQCBmdW5jIFRlc3RMYXJnZVJlYWRNSU1FSGVhZGVyKHQgKnRlc3RpbmcuVCkgewotIAl9Ci0gfQotIAotLS8vIFRlc3QgdGhhdCB3ZSByZWFkIHNsaWdodGx5LWJvZ3VzIE1JTUUgaGVhZGVycyBzZWVuIGluIHRoZSB3aWxkLAotLS8vIHdpdGggc3BhY2VzIGJlZm9yZSBjb2xvbnMsIGFuZCBzcGFjZXMgaW4ga2V5cy4KLSsvLyBUZXN0UmVhZE1JTUVIZWFkZXJOb25Db21wbGlhbnQgY2hlY2tzIHRoYXQgd2UgZG9uJ3Qgbm9ybWFsaXplIGhlYWRlcnMKLSsvLyB3aXRoIHNwYWNlcyBiZWZvcmUgY29sb25zLCBhbmQgYWNjZXB0IHNwYWNlcyBpbiBrZXlzLgotIGZ1bmMgVGVzdFJlYWRNSU1FSGVhZGVyTm9uQ29tcGxpYW50KHQgKnRlc3RpbmcuVCkgewotLQkvLyBJbnZhbGlkIEhUVFAgcmVzcG9uc2UgaGVhZGVyIGFzIHNlbnQgYnkgYW4gQXhpcyBzZWN1cml0eQotLQkvLyBjYW1lcmE6ICh0aGlzIGlzIGhhbmRsZWQgYnkgSUUsIEZpcmVmb3gsIENocm9tZSwgY3VybCwgZXRjLikKLSsJLy8gVGhlc2UgaW52YWxpZCBoZWFkZXJzIHdpbGwgYmUgcmVqZWN0ZWQgYnkgbmV0L2h0dHAgYWNjb3JkaW5nIHRvIFJGQyA3MjMwLgotIAlyIDo9IHJlYWRlcigiRm9vOiBiYXJcclxuIiArCi0gCQkiQ29udGVudC1MYW5ndWFnZTogZW5cclxuIiArCi0gCQkiU0lEIDogMFxyXG4iICsKLUBAIC0yMDIsOSArMjAxLDkgQEAgZnVuYyBUZXN0UmVhZE1JTUVIZWFkZXJOb25Db21wbGlhbnQodCAqdGVzdGluZy5UKSB7Ci0gCXdhbnQgOj0gTUlNRUhlYWRlcnsKLSAJCSJGb28iOiAgICAgICAgICAgICAgeyJiYXIifSwKLSAJCSJDb250ZW50LUxhbmd1YWdlIjogeyJlbiJ9LAotLQkJIlNpZCI6ICAgICAgICAgICAgICB7IjAifSwKLS0JCSJBdWRpbyBNb2RlIjogICAgICAgeyJOb25lIn0sCi0tCQkiUHJpdmlsZWdlIjogICAgICAgIHsiMTI3In0sCi0rCQkiU0lEICI6ICAgICAgICAgICAgIHsiMCJ9LAotKwkJIkF1ZGlvIE1vZGUgIjogICAgICB7Ik5vbmUifSwKLSsJCSJQcml2aWxlZ2UgIjogICAgICAgeyIxMjcifSwKLSAJfQotIAlpZiAhcmVmbGVjdC5EZWVwRXF1YWwobSwgd2FudCkgfHwgZXJyICE9IG5pbCB7Ci0gCQl0LkZhdGFsZigiUmVhZE1JTUVIZWFkZXIgPVxuJXYsICV2OyB3YW50OlxuJXYiLCBtLCBlcnIsIHdhbnQpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMi1jbWQtZ28tbWFrZS1jb250ZW50LWJhc2VkLWhhc2gtZ2VuZXJhdGlvbi1sZXNzLXBlZGFuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NmI4NTYxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMi1jbWQtZ28tbWFrZS1jb250ZW50LWJhc2VkLWhhc2gtZ2VuZXJhdGlvbi1sZXNzLXBlZGFuLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjE4ICswLDAgQEAKLUZyb20gNDdkYjY5ZTIwZWQ2NmZiNjJiMDFhZmZkODNkODI5NjU0YjgyOTg5MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci1EYXRlOiBNb24sIDE5IEZlYiAyMDE4IDA4OjUwOjU5IC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNtZC9nbzogbWFrZSBjb250ZW50LWJhc2VkIGhhc2ggZ2VuZXJhdGlvbiBsZXNzIHBlZGFudGljCi0KLUdvIDEuMTAncyBidWlsZCB0b29sIG5vdyB1c2VzIGNvbnRlbnQtYmFzZWQgaGFzaGVzIHRvCi1kZXRlcm1pbmUgd2hlbiBzb21ldGhpbmcgc2hvdWxkIGJlIGJ1aWx0IG9yIHJlLWJ1aWx0LgotVGhpcyBzYW1lIG1lY2hhbmlzbSBpcyB1c2VkIHRvIG1haW50YWluIGEgYnVpbHQtYXJ0aWZhY3QKLWNhY2hlIGZvciBzcGVlZGluZyB1cCBidWlsZHMuCi0KLUhvd2V2ZXIsIHRoZSBoYXNoZXMgaXQgZ2VuZXJhdGVzIGluY2x1ZGUgaW5mb3JtYXRpb24gdGhhdAotZG9lc24ndCB3b3JrIHdlbGwgd2l0aCBPRSwgbm9yIHdpdGggdXNpbmcgYSBzaGFyZWQgcnVudGltZQotbGlicmFyeS4KLQotRmlyc3QsIGl0IGVtYmVkcyBwYXRoIG5hbWVzIHRvIHNvdXJjZSBmaWxlcywgdW5sZXNzCi1idWlsZGluZyB3aXRoaW4gR09ST09ULiAgVGhpcyBwcmV2ZW50cyB0aGUgYnVpbGRpbmcKLW9mIGEgcGFja2FnZSBpbiBHT1BBVEggZm9yIGxhdGVyIHN0YWdpbmcgaW50byBHT1JPT1QuCi0KLVRoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKLUdPUEFUSF9PTUlUX0lOX0FDVElPTklELiAgSWYgcHJlc2VudCwgcGF0aCBuYW1lCi1lbWJlZGRpbmcgaXMgZGlzYWJsZWQuCi0KLVNlY29uZCwgaWYgY2dvIGlzIGVuYWJsZWQsIHRoZSBidWlsZCBJRCBmb3IgY2dvLXJlbGF0ZWQKLXBhY2thZ2VzIHdpbGwgaW5jbHVkZSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQKLXZhcmlhYmxlcyBmb3IgaW52b2tpbmcgdGhlIGNvbXBpbGVyIChDQywgQ1hYLCBGQykgYW5kCi1hbnkgQ0dPX3h4RkxBR1MgdmFyaWFibGVzLiAgT25seSBpZiB0aGUgc2V0dGluZ3MgdXNlZAotZHVyaW5nIGEgY29tcGlsYXRpb24gZXhhY3RseSBtYXRjaCwgY2hhcmFjdGVyIGZvciBjaGFyYWN0ZXIsCi10aGUgdmFsdWVzIHVzZWQgZm9yIGNvbXBpbGluZyBydW50aW1lL2NnbyBvciBhbnkgb3RoZXIKLWNnby1lbmFibGVkIHBhY2thZ2UgYmVpbmcgaW1wb3J0ZWQsIHdpbGwgdGhlIHRvb2wKLWRlY2lkZSB0aGF0IHRoZSBpbXBvcnRlZCBwYWNrYWdlIGlzIHVwLXRvLWRhdGUuCi0KLVRoaXMgaXMgZG9uZSB0byBoZWxwIGVuc3VyZSBjb3JyZWN0bmVzcywgYnV0IGlzIG92ZXJseQotc2ltcGxpc3RpYyBhbmQgZWZmZWN0aXZlbHkgcHJldmVudHMgdGhlIHJldXNlIG9mIGJ1aWx0Ci1hcnRpZmFjdHMgdGhhdCB1c2UgY2dvIChvciBzaGFyZWQgcnVudGltZSwgd2hpY2ggaW5jbHVkZXMKLXJ1bnRpbWUvY2dvKS4KLQotVGhpcyBwYXRjaCBmaWx0ZXJzIG91dCBhbGwgY29tcGlsZXIgZmxhZ3MgZXhjZXB0IHRob3NlCi1iZWdpbm5pbmcgd2l0aCAnLW0nLiAgVGhlIGRlZmF1bHQgYmVoYXZpb3IgY2FuIGJlIHJlc3RvcmVkCi1ieSBzZXR0aW5nIHRoZSBDR09fUEVEQU5USUMgZW52aXJvbm1lbnQgdmFyaWFibGUuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci0KLS0tLQotIHNyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyB8ICAyICstCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gIHwgNjMgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNDYgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLWluZGV4IGNlZGJmYmYuLjU3NjNhMGQgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLSsrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbwotQEAgLTEyOCw3ICsxMjgsNyBAQCBmdW5jIEV4dHJhRW52VmFycygpIFtdY2ZnLkVudlZhciB7Ci0gZnVuYyBFeHRyYUVudlZhcnNDb3N0bHkoKSBbXWNmZy5FbnZWYXIgewotIAl2YXIgYiB3b3JrLkJ1aWxkZXIKLSAJYi5Jbml0KCkKLS0JY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgZXJyIDo9IGIuQ0ZsYWdzKCZsb2FkLlBhY2thZ2V7fSkKLSsJY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgZXJyIDo9IGIuQ0ZsYWdzKCZsb2FkLlBhY2thZ2V7fSwgZmFsc2UpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJLy8gU2hvdWxkIG5vdCBoYXBwZW4gLSBiLkNGbGFncyB3YXMgZ2l2ZW4gYW4gZW1wdHkgcGFja2FnZS4KLSAJCWZtdC5GcHJpbnRmKG9zLlN0ZGVyciwgImdvOiBpbnZhbGlkIGNmbGFnczogJXZcbiIsIGVycikKLWRpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi1pbmRleCAxMmUxNTI3Li5lNDFiZmFjIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KLSsrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi1AQCAtMTc0LDYgKzE3NCw4IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIERvKHJvb3QgKkFjdGlvbikgewotIAl3Zy5XYWl0KCkKLSB9Ci0gCi0rdmFyIG9taXRHb3BhdGggPSBvcy5HZXRlbnYoIkdPUEFUSF9PTUlUX0lOX0FDVElPTklEIikgIT0gIiIKLSsKLSAvLyBidWlsZEFjdGlvbklEIGNvbXB1dGVzIHRoZSBhY3Rpb24gSUQgZm9yIGEgYnVpbGQgYWN0aW9uLgotIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkQWN0aW9uSUQoYSAqQWN0aW9uKSBjYWNoZS5BY3Rpb25JRCB7Ci0gCXAgOj0gYS5QYWNrYWdlCi1AQCAtMTkwLDcgKzE5Miw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkQWN0aW9uSUQoYSAqQWN0aW9uKSBjYWNoZS5BY3Rpb25JRCB7Ci0gCS8vIGJ1dCBpdCBkb2VzIG5vdCBoaWRlIHRoZSBleGFjdCB2YWx1ZSBvZiAkR09QQVRILgotIAkvLyBJbmNsdWRlIHRoZSBmdWxsIGRpciBpbiB0aGF0IGNhc2UuCi0gCS8vIEFzc3VtZSBiLldvcmtEaXIgaXMgYmVpbmcgdHJpbW1lZCBwcm9wZXJseS4KLS0JaWYgIXAuR29yb290ICYmICFzdHJpbmdzLkhhc1ByZWZpeChwLkRpciwgYi5Xb3JrRGlyKSB7Ci0rCWlmICFwLkdvcm9vdCAmJiAhb21pdEdvcGF0aCAmJiAhc3RyaW5ncy5IYXNQcmVmaXgocC5EaXIsIGIuV29ya0RpcikgewotIAkJZm10LkZwcmludGYoaCwgImRpciAlc1xuIiwgcC5EaXIpCi0gCX0KLSAJZm10LkZwcmludGYoaCwgImdvb3MgJXMgZ29hcmNoICVzXG4iLCBjZmcuR29vcywgY2ZnLkdvYXJjaCkKLUBAIC0yMDEsMTMgKzIwMywxMyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZEFjdGlvbklEKGEgKkFjdGlvbikgY2FjaGUuQWN0aW9uSUQgewotIAl9Ci0gCWlmIGxlbihwLkNnb0ZpbGVzKStsZW4ocC5Td2lnRmlsZXMpID4gMCB7Ci0gCQlmbXQuRnByaW50ZihoLCAiY2dvICVxXG4iLCBiLnRvb2xJRCgiY2dvIikpCi0tCQljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzLCBfIDo9IGIuQ0ZsYWdzKHApCi0tCQlmbXQuRnByaW50ZihoLCAiQ0M9JXEgJXEgJXEgJXFcbiIsIGIuY2NFeGUoKSwgY3BwZmxhZ3MsIGNmbGFncywgbGRmbGFncykKLSsJCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIF8gOj0gYi5DRmxhZ3MocCwgdHJ1ZSkKLSsJCWZtdC5GcHJpbnRmKGgsICJDQz0lcSAlcSAlcSAlcVxuIiwgYi5jY0V4ZSh0cnVlKSwgY3BwZmxhZ3MsIGNmbGFncywgbGRmbGFncykKLSAJCWlmIGxlbihwLkNYWEZpbGVzKStsZW4ocC5Td2lnRmlsZXMpID4gMCB7Ci0tCQkJZm10LkZwcmludGYoaCwgIkNYWD0lcSAlcVxuIiwgYi5jeHhFeGUoKSwgY3h4ZmxhZ3MpCi0rCQkJZm10LkZwcmludGYoaCwgIkNYWD0lcSAlcVxuIiwgYi5jeHhFeGUodHJ1ZSksIGN4eGZsYWdzKQotIAkJfQotIAkJaWYgbGVuKHAuRkZpbGVzKSA+IDAgewotLQkJCWZtdC5GcHJpbnRmKGgsICJGQz0lcSAlcVxuIiwgYi5mY0V4ZSgpLCBmZmxhZ3MpCi0rCQkJZm10LkZwcmludGYoaCwgIkZDPSVxICVxXG4iLCBiLmZjRXhlKHRydWUpLCBmZmxhZ3MpCi0gCQl9Ci0gCQkvLyBUT0RPKHJzYyk6IFNob3VsZCB3ZSBpbmNsdWRlIHRoZSBTV0lHIHZlcnNpb24gb3IgRm9ydHJhbi9HQ0MvRysrL09iamVjdGl2ZS1DIGNvbXBpbGVyIHZlcnNpb25zPwotIAl9Ci1AQCAtMjA5NiwzMyArMjA5OCwzMyBAQCB2YXIgKAotIC8vIGdjY0NtZCByZXR1cm5zIGEgZ2NjIGNvbW1hbmQgbGluZSBwcmVmaXgKLSAvLyBkZWZhdWx0Q0MgaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgotIGZ1bmMgKGIgKkJ1aWxkZXIpIEdjY0NtZChpbmNkaXIsIHdvcmtkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY2NFeGUoKSwgaW5jZGlyLCB3b3JrZGlyKQotKwlyZXR1cm4gYi5jb21waWxlckNtZChiLmNjRXhlKGZhbHNlKSwgaW5jZGlyLCB3b3JrZGlyKQotIH0KLSAKLSAvLyBneHhDbWQgcmV0dXJucyBhIGcrKyBjb21tYW5kIGxpbmUgcHJlZml4Ci0gLy8gZGVmYXVsdENYWCBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCi0gZnVuYyAoYiAqQnVpbGRlcikgR3h4Q21kKGluY2Rpciwgd29ya2RpciBzdHJpbmcpIFtdc3RyaW5nIHsKLS0JcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jeHhFeGUoKSwgaW5jZGlyLCB3b3JrZGlyKQotKwlyZXR1cm4gYi5jb21waWxlckNtZChiLmN4eEV4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKLSB9Ci0gCi0gLy8gZ2ZvcnRyYW5DbWQgcmV0dXJucyBhIGdmb3J0cmFuIGNvbW1hbmQgbGluZSBwcmVmaXguCi0gZnVuYyAoYiAqQnVpbGRlcikgZ2ZvcnRyYW5DbWQoaW5jZGlyLCB3b3JrZGlyIHN0cmluZykgW11zdHJpbmcgewotLQlyZXR1cm4gYi5jb21waWxlckNtZChiLmZjRXhlKCksIGluY2Rpciwgd29ya2RpcikKLSsJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5mY0V4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKLSB9Ci0gCi0gLy8gY2NFeGUgcmV0dXJucyB0aGUgQ0MgY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCi0tZnVuYyAoYiAqQnVpbGRlcikgY2NFeGUoKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDQywgY2ZnLkRlZmF1bHRDQyhjZmcuR29vcywgY2ZnLkdvYXJjaCkpCi0rZnVuYyAoYiAqQnVpbGRlcikgY2NFeGUoZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgewotKwlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ0MsIGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpLCBmaWx0ZXJlZCkKLSB9Ci0gCi0gLy8gY3h4RXhlIHJldHVybnMgdGhlIENYWCBjb21waWxlciBzZXR0aW5nIHdpdGhvdXQgYWxsIHRoZSBleHRyYSBmbGFncyB3ZSBhZGQgaW1wbGljaXRseS4KLS1mdW5jIChiICpCdWlsZGVyKSBjeHhFeGUoKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDWFgsIGNmZy5EZWZhdWx0Q1hYKGNmZy5Hb29zLCBjZmcuR29hcmNoKSkKLStmdW5jIChiICpCdWlsZGVyKSBjeHhFeGUoZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgewotKwlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ1hYLCBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCksIGZpbHRlcmVkKQotIH0KLSAKLSAvLyBmY0V4ZSByZXR1cm5zIHRoZSBGQyBjb21waWxlciBzZXR0aW5nIHdpdGhvdXQgYWxsIHRoZSBleHRyYSBmbGFncyB3ZSBhZGQgaW1wbGljaXRseS4KLS1mdW5jIChiICpCdWlsZGVyKSBmY0V4ZSgpIFtdc3RyaW5nIHsKLS0JcmV0dXJuIGIuY29tcGlsZXJFeGUob3MuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iKQotK2Z1bmMgKGIgKkJ1aWxkZXIpIGZjRXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKLSsJcmV0dXJuIGIuY29tcGlsZXJFeGUob3MuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iLCBmaWx0ZXJlZCkKLSB9Ci0gCi0gLy8gY29tcGlsZXJFeGUgcmV0dXJucyB0aGUgY29tcGlsZXIgdG8gdXNlIGdpdmVuIGFuCi1AQCAtMjEzMSwxMSArMjEzMywxNCBAQCBmdW5jIChiICpCdWlsZGVyKSBmY0V4ZSgpIFtdc3RyaW5nIHsKLSAvLyBvZiB0aGUgY29tcGlsZXIgYnV0IGNhbiBoYXZlIGFkZGl0aW9uYWwgYXJndW1lbnRzIGlmIHRoZXkKLSAvLyB3ZXJlIHByZXNlbnQgaW4gdGhlIGVudmlyb25tZW50IHZhbHVlLgotIC8vIEZvciBleGFtcGxlIGlmIENDPSJnY2MgLURHT1BIRVIiIHRoZW4gdGhlIHJlc3VsdCBpcyBbImdjYyIsICItREdPUEhFUiJdLgotLWZ1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZykgW11zdHJpbmcgewotK2Z1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZywgZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgewotIAljb21waWxlciA6PSBzdHJpbmdzLkZpZWxkcyhlbnZWYWx1ZSkKLSAJaWYgbGVuKGNvbXBpbGVyKSA9PSAwIHsKLSAJCWNvbXBpbGVyID0gW11zdHJpbmd7ZGVmfQotIAl9Ci0rCWlmIGZpbHRlcmVkIHsKLSsJCXJldHVybiBhcHBlbmQoY29tcGlsZXJbMDoxXSwgZmlsdGVyQ29tcGlsZXJGbGFncyhjb21waWxlclsxOl0pLi4uKQotKwl9Ci0gCXJldHVybiBjb21waWxlcgotIH0KLSAKLUBAIC0yMjg1LDggKzIyOTAsMjMgQEAgZnVuYyBlbnZMaXN0KGtleSwgZGVmIHN0cmluZykgW11zdHJpbmcgewotIAlyZXR1cm4gc3RyaW5ncy5GaWVsZHModikKLSB9Ci0gCi0rdmFyIGZpbHRlckZsYWdzID0gb3MuR2V0ZW52KCJDR09fUEVEQU5USUMiKSA9PSAiIgotKwotK2Z1bmMgZmlsdGVyQ29tcGlsZXJGbGFncyhmbGFncyBbXXN0cmluZykgW11zdHJpbmcgewotKwl2YXIgbmV3ZmxhZ3MgW11zdHJpbmcKLSsJaWYgIWZpbHRlckZsYWdzIHsKLSsJCXJldHVybiBmbGFncwotKwl9Ci0rCWZvciBfLCBmbGFnIDo9IHJhbmdlIGZsYWdzIHsKLSsJCWlmIHN0cmluZ3MuSGFzUHJlZml4KGZsYWcsICItbSIpIHsKLSsJCQluZXdmbGFncyA9IGFwcGVuZChuZXdmbGFncywgZmxhZykKLSsJCX0KLSsJfQotKwlyZXR1cm4gbmV3ZmxhZ3MKLSt9Ci0rCi0gLy8gQ0ZsYWdzIHJldHVybnMgdGhlIGZsYWdzIHRvIHVzZSB3aGVuIGludm9raW5nIHRoZSBDLCBDKysgb3IgRm9ydHJhbiBjb21waWxlcnMsIG9yIGNnby4KLS1mdW5jIChiICpCdWlsZGVyKSBDRmxhZ3MocCAqbG9hZC5QYWNrYWdlKSAoY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncyBbXXN0cmluZywgZXJyIGVycm9yKSB7Ci0rZnVuYyAoYiAqQnVpbGRlcikgQ0ZsYWdzKHAgKmxvYWQuUGFja2FnZSwgZmlsdGVyZWQgYm9vbCkgKGNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MgW11zdHJpbmcsIGVyciBlcnJvcikgewotIAlkZWZhdWx0cyA6PSAiLWcgLU8yIgotIAotIAlpZiBjcHBmbGFncywgZXJyID0gYnVpbGRGbGFncygiQ1BQRkxBR1MiLCAiIiwgcC5DZ29DUFBGTEFHUywgY2hlY2tDb21waWxlckZsYWdzKTsgZXJyICE9IG5pbCB7Ci1AQCAtMjMwNCw2ICsyMzI0LDEzIEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIENGbGFncyhwICpsb2FkLlBhY2thZ2UpIChjcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsCi0gCWlmIGxkZmxhZ3MsIGVyciA9IGJ1aWxkRmxhZ3MoIkxERkxBR1MiLCBkZWZhdWx0cywgcC5DZ29MREZMQUdTLCBjaGVja0xpbmtlckZsYWdzKTsgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4KLSAJfQotKwlpZiBmaWx0ZXJlZCB7Ci0rCQljcHBmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoY3BwZmxhZ3MpCi0rCQljZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGNmbGFncykKLSsJCWN4eGZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhjeHhmbGFncykKLSsJCWZmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoZmZsYWdzKQotKwkJbGRmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MobGRmbGFncykKLSsJfQotIAotIAlyZXR1cm4KLSB9Ci1AQCAtMjMxOSw3ICsyMzQ2LDcgQEAgdmFyIGNnb1JlID0gcmVnZXhwLk11c3RDb21waWxlKGBbL1xcOl1gKQotIAotIGZ1bmMgKGIgKkJ1aWxkZXIpIGNnbyhhICpBY3Rpb24sIGNnb0V4ZSwgb2JqZGlyIHN0cmluZywgcGNDRkxBR1MsIHBjTERGTEFHUywgY2dvZmlsZXMsIGdjY2ZpbGVzLCBneHhmaWxlcywgbWZpbGVzLCBmZmlsZXMgW11zdHJpbmcpIChvdXRHbywgb3V0T2JqIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKLSAJcCA6PSBhLlBhY2thZ2UKLS0JY2dvQ1BQRkxBR1MsIGNnb0NGTEFHUywgY2dvQ1hYRkxBR1MsIGNnb0ZGTEFHUywgY2dvTERGTEFHUywgZXJyIDo9IGIuQ0ZsYWdzKHApCi0rCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBjZ29GRkxBR1MsIGNnb0xERkxBR1MsIGVyciA6PSBiLkNGbGFncyhwLCBmYWxzZSkKLSAJaWYgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4gbmlsLCBuaWwsIGVycgotIAl9Ci1AQCAtMjY3OSw3ICsyNzA2LDcgQEAgZnVuYyAoYiAqQnVpbGRlcikgc3dpZ0ludFNpemUob2JqZGlyIHN0cmluZykgKGludHNpemUgc3RyaW5nLCBlcnIgZXJyb3IpIHsKLSAKLSAvLyBSdW4gU1dJRyBvbiBvbmUgU1dJRyBpbnB1dCBmaWxlLgotIGZ1bmMgKGIgKkJ1aWxkZXIpIHN3aWdPbmUoYSAqQWN0aW9uLCBwICpsb2FkLlBhY2thZ2UsIGZpbGUsIG9iamRpciBzdHJpbmcsIHBjQ0ZMQUdTIFtdc3RyaW5nLCBjeHggYm9vbCwgaW50Z29zaXplIHN0cmluZykgKG91dEdvLCBvdXRDIHN0cmluZywgZXJyIGVycm9yKSB7Ci0tCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBfLCBfLCBlcnIgOj0gYi5DRmxhZ3MocCkKLSsJY2dvQ1BQRkxBR1MsIGNnb0NGTEFHUywgY2dvQ1hYRkxBR1MsIF8sIF8sIGVyciA6PSBiLkNGbGFncyhwLCBmYWxzZSkKLSAJaWYgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4gIiIsICIiLCBlcnIKLSAJfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDAzLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpcm9ubWVudC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI2Y2E0MGUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDAzLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpcm9ubWVudC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ4ICswLDAgQEAKLUZyb20gNWMzMmMzOGJmMTliMjRmMGFhZGQ3ODAxMmQxN2ZmNWNhYTgyMTUxZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+Ci1EYXRlOiBTYXQsIDE3IEZlYiAyMDE4IDA1OjI0OjIwIC0wODAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFsbG93IEdPVE9PTERJUiB0byBiZSBvdmVycmlkZGVuIGluIHRoZSBlbnZpcm9ubWVudAotCi10byBhbGxvdyBmb3Igc3BsaXQgaG9zdC90YXJnZXQgYnVpbGQgcm9vdHMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLQotLS0tCi0gc3JjL2NtZC9kaXN0L2J1aWxkLmdvICAgICAgICAgIHwgNCArKystCi0gc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvIHwgNyArKysrKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnby9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotKysrIGdvL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotQEAgLTIyOCw3ICsyMjgsOSBAQCBmdW5jIHhpbml0KCkgewotIAl3b3JrZGlyID0geHdvcmtkaXIoKQotIAl4YXRleGl0KHJtd29ya2RpcikKLSAKLS0JdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCi0rCWlmIHRvb2xkaXIgPSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyB0b29sZGlyID09ICIiIHsKLSsJCXRvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQotKwl9Ci0gfQotIAotIC8vIGNvbXBpbGVyRW52IHJldHVybnMgYSBtYXAgZnJvbSAiZ29vcy9nb2FyY2giIHRvIHRoZQotSW5kZXg6IGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCi0rKysgZ28vc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCi1AQCAtMTE2LDcgKzExNiwxMSBAQCBmdW5jIGluaXQoKSB7Ci0gCQkvLyB2YXJpYWJsZXMuIFRoaXMgbWF0Y2hlcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgVG9vbERpciBpbgotIAkJLy8gZ28vYnVpbGQsIGV4Y2VwdCBmb3IgdXNpbmcgR09ST09UIHJhdGhlciB0aGFuCi0gCQkvLyBydW50aW1lLkdPUk9PVC4KLS0JCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKEdPUk9PVCwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKLSsJCWlmIHMgOj0gb3MuR2V0ZW52KCJHT1RPT0xESVIiKTsgcyAhPSAiIiB7Ci0rCQkJYnVpbGQuVG9vbERpciA9IGZpbGVwYXRoLkNsZWFuKHMpCi0rCQl9IGVsc2UgewotKwkJCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKEdPUk9PVCwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKLSsJCX0KLSAJfQotIH0KLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwNGEzM2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1Gcm9tIDU1ZWI4Yzk1YTg5ZjMyYWVjMTZiNzc2NGU3OGU4Y2Y3NTE2OWRjODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotRGF0ZTogU2F0LCAxNyBGZWIgMjAxOCAwNjoyNjoxMCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBsZDogYWRkIHNvbmFtZSB0byBzaGFyZWFibGUgb2JqZWN0cwotCi1zbyB0aGF0IE9FJ3Mgc2hhcmVkIGxpYnJhcnkgZGVwZW5kZW5jeSBoYW5kbGluZwotY2FuIGZpbmQgdGhlbS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLQotLS0tCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbyB8IDQgKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvCi1pbmRleCAyMjBhYWIzLi43MDM5MjVmIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbwotQEAgLTExMzUsNiArMTEzNSw3IEBAIGZ1bmMgKGN0eHQgKkxpbmspIGhvc3RsaW5rKCkgewotIAkJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItV2wsLXoscmVscm8iKQotIAkJCX0KLSAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKLSsJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsIGZtdC5TcHJpbnRmKCItV2wsLXNvbmFtZSwlcyIsIGZpbGVwYXRoLkJhc2UoKmZsYWdPdXRmaWxlKSkpCi0gCQkJaWYgY3R4dC5IZWFkVHlwZSAhPSBvYmphYmkuSHdpbmRvd3MgewotIAkJCQkvLyBQYXNzIC16IG5vZGVsZXRlIHRvIG1hcmsgdGhlIHNoYXJlZCBsaWJyYXJ5IGFzCi0gCQkJCS8vIG5vbi1jbG9zZWFibGU6IGEgZGxjbG9zZSB3aWxsIGRvIG5vdGhpbmcuCi1AQCAtMTE0Niw2ICsxMTQ3LDggQEAgZnVuYyAoY3R4dCAqTGluaykgaG9zdGxpbmsoKSB7Ci0gCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKLSAJCX0KLSAJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQotKwkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQotKwotIAljYXNlIEJ1aWxkTW9kZVBsdWdpbjoKLSAJCWlmIGN0eHQuSGVhZFR5cGUgPT0gb2JqYWJpLkhkYXJ3aW4gewotIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1keW5hbWljbGliIikKLUBAIC0xMTU0LDYgKzExNTcsNyBAQCBmdW5jIChjdHh0ICpMaW5rKSBob3N0bGluaygpIHsKLSAJCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKLSAJCQl9Ci0gCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLXNoYXJlZCIpCi0rCQkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQotIAkJfQotIAl9Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhY2U4ZGU5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSAxYmYxNWFhOGZiNzczNjA0YjI1MjRjZmRhYjQ5M2ZhNGQ4ZmE5Mjg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLURhdGU6IFNhdCwgMTcgRmViIDIwMTggMDY6MzI6NDUgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbWFrZS5iYXNoOiBvdmVycmlkZSBDQyB3aGVuIGJ1aWxkaW5nIGRpc3QgYW5kIGdvX2Jvb3RzdHJhcAotCi1mb3IgaGFuZGxpbmcgT0UgY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotCi0tLS0KLSBzcmMvbWFrZS5iYXNoIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9tYWtlLmJhc2ggYi9zcmMvbWFrZS5iYXNoCi1pbmRleCA3ODg4MmQ5Li4yNTk0M2QwIDEwMDc1NQotLS0tIGEvc3JjL21ha2UuYmFzaAotKysrIGIvc3JjL21ha2UuYmFzaAotQEAgLTE2Myw3ICsxNjMsNyBAQCBpZiBbICIkR09ST09UX0JPT1RTVFJBUCIgPSAiJEdPUk9PVCIgXTsgdGhlbgotIAlleGl0IDEKLSBmaQotIHJtIC1mIGNtZC9kaXN0L2Rpc3QKLS1HT1JPT1Q9IiRHT1JPT1RfQk9PVFNUUkFQIiBHT09TPSIiIEdPQVJDSD0iIiAiJEdPUk9PVF9CT09UU1RSQVAvYmluL2dvIiBidWlsZCAtbyBjbWQvZGlzdC9kaXN0IC4vY21kL2Rpc3QKLStDQz0iJHtCVUlMRF9DQzotJHtDQ319IiBHT1JPT1Q9IiRHT1JPT1RfQk9PVFNUUkFQIiBHT09TPSIiIEdPQVJDSD0iIiAiJEdPUk9PVF9CT09UU1RSQVAvYmluL2dvIiBidWlsZCAtbyBjbWQvZGlzdC9kaXN0IC4vY21kL2Rpc3QKLSAKLSAjIC1lIGRvZXNuJ3QgcHJvcGFnYXRlIG91dCBvZiBldmFsLCBzbyBjaGVjayBzdWNjZXNzIGJ5IGhhbmQuCi0gZXZhbCAkKC4vY21kL2Rpc3QvZGlzdCBlbnYgLXAgfHwgZWNobyBGQUlMPXRydWUpCi1AQCAtMTk0LDcgKzE5NCw3IEBAIGZpCi0gIyBSdW4gZGlzdCBib290c3RyYXAgdG8gY29tcGxldGUgbWFrZS5iYXNoLgotICMgQm9vdHN0cmFwIGluc3RhbGxzIGEgcHJvcGVyIGNtZC9kaXN0LCBidWlsdCB3aXRoIHRoZSBuZXcgdG9vbGNoYWluLgotICMgVGhyb3cgb3VycywgYnVpbHQgd2l0aCBHbyAxLjQsIGF3YXkgYWZ0ZXIgYm9vdHN0cmFwLgotLS4vY21kL2Rpc3QvZGlzdCBib290c3RyYXAgJGJ1aWxkYWxsICR2ZmxhZyAkR09fRElTVEZMQUdTICIkQCIKLStDQz0iJHtCVUlMRF9DQzotJHtDQ319IiAuL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkdmZsYWcgJEdPX0RJU1RGTEFHUyAiJEAiCi0gcm0gLWYgLi9jbWQvZGlzdC9kaXN0Ci0gCi0gIyBETyBOT1QgQUREIEFOWSBORVcgQ09ERSBIRVJFLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGMwZDVkYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4MiArMCwwIEBACi1Gcm9tIGZlMGZjYWY0M2VmM2FhYjgxNTQxZGFkMmE3MWI0NjI1NGRjNGNmNmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotRGF0ZTogU2F0LCAxNyBGZWIgMjAxOCAxMDowMzo0OCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBjbWQvZGlzdDogc2VwYXJhdGUgaG9zdCBhbmQgdGFyZ2V0IGJ1aWxkcwotCi1DaGFuZ2UgdGhlIGRpc3QgdG9vbCB0byBhbGxvdyBmb3IgT0Utc3R5bGUgY3Jvc3MtCi1hbmQgY3Jvc3MtY2FuYWRpYW4gYnVpbGRzOgotCi0gLSBjb21tYW5kIGZsYWdzIC0taG9zdC1vbmx5IGFuZCAtLXRhcmdldCBvbmx5IGFyZSBhZGRlZDsKLSAgIGlmIG9uZSBpcyBwcmVzZW50LCB0aGUgb3RoZXIgY2hhbmdlcyBtZW50aW9uZWQgYmVsb3cKLSAgIHRha2UgZWZmZWN0LCBhbmQgYXJndW1lbnRzIG1heSBhbHNvIGJlIHNwZWNpZmllZCBvbgotICAgdGhlIGNvbW1hbmQgbGluZSB0byBlbnVtZXJhdGUgdGhlIHBhY2thZ2UocykgdG8gYmUKLSAgIGJ1aWx0LgotCi0gLSBmb3IgT0UgY3Jvc3MgYnVpbGRzLCBnb19ib290c3RyYXAgaXMgYWx3YXlzIGJ1aWx0IGZvcgotICAgdGhlIGN1cnJlbnQgYnVpbGQgaG9zdCwgYW5kIGlzIG1vdmVkLCBhbG9uZyB3aXRoIHRoZSBzdXBwb3J0aW5nCi0gICB0b29sY2hhaW4gKGFzbSwgY29tcGlsZSwgZXRjLikgdG8gYSBzZXBhcmF0ZSAnbmF0aXZlX25hdGl2ZScKLSAgIGRpcmVjdG9yeSB1bmRlciBHT1JPT1QvcGtnL3Rvb2wuCi0KLSAtIGdvX2Jvb3RzdHJhcCBpcyBub3QgYXV0b21hdGljYWxseSByZW1vdmVkIGFmdGVyIHRoZSBidWlsZCwKLSAgIHNvIGl0IGNhbiBiZSByZXVzZWQgbGF0ZXIgKGUuZy4sIGJ1aWxkaW5nIGJvdGggc3RhdGljIGFuZAotICAgc2hhcmVkIHJ1bnRpbWUpLgotCi1Ob3RlIHRoYXQgZm9yIC0taG9zdC1vbmx5IGJ1aWxkcywgaXQgd291bGQgYmUgbmljZSB0byBzcGVjaWZ5Ci1qdXN0IHRoZSAiY21kIiBwYWNrYWdlIHRvIGJ1aWxkIG9ubHkgdGhlIGdvIGNvbW1hbmRzL3Rvb2xzLAotdGhlIHN0YWxlbmVzcyBjaGVja3MgaW4gdGhlIGRpc3QgdG9vbCB3aWxsIGZhaWwgaWYgdGhlICJzdGQiCi1saWJyYXJ5IGhhcyBub3QgYWxzbyBiZWVuIGJ1aWx0LiAgU28gaG9zdC1vbmx5IGJ1aWxkcyBoYXZlIHRvCi1idWlsZCBldmVyeXRoaW5nIGFueXdheS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLQotbW9yZSBkaXN0IGNsZWFudXAKLQotLS0tCi0gc3JjL2NtZC9kaXN0L2J1aWxkLmdvIHwgMTUzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMTEgaW5zZXJ0aW9ucygrKSwgNDIgZGVsZXRpb25zKC0pCi0KLUluZGV4OiBnby9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotKysrIGdvL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotQEAgLTM5LDYgKzM5LDcgQEAgdmFyICgKLSAJZ29sZGZsYWdzICAgICAgICBzdHJpbmcKLSAJd29ya2RpciAgICAgICAgICBzdHJpbmcKLSAJdG9vbGRpciAgICAgICAgICBzdHJpbmcKLSsJYnVpbGRfdG9vbGRpcgkgc3RyaW5nCi0gCW9sZGdvb3MgICAgICAgICAgc3RyaW5nCi0gCW9sZGdvYXJjaCAgICAgICAgc3RyaW5nCi0gCWV4ZSAgICAgICAgICAgICAgc3RyaW5nCi1AQCAtNTAsNiArNTEsNyBAQCB2YXIgKAotIAotIAlyZWJ1aWxkYWxsICAgYm9vbAotIAlkZWZhdWx0Y2xhbmcgYm9vbAotKwljcm9zc0J1aWxkICAgYm9vbAotIAotIAl2ZmxhZyBpbnQgLy8gdmVyYm9zaXR5Ci0gKQotQEAgLTIzMSw2ICsyMzMsOCBAQCBmdW5jIHhpbml0KCkgewotIAlpZiB0b29sZGlyID0gb3MuR2V0ZW52KCJHT1RPT0xESVIiKTsgdG9vbGRpciA9PSAiIiB7Ci0gCQl0b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sLyVzXyVzIiwgZ29yb290LCBnb2hvc3RvcywgZ29ob3N0YXJjaCkKLSAJfQotKwlidWlsZF90b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sL25hdGl2ZV9uYXRpdmUiLCBnb3Jvb3QpCi0rCi0gfQotIAotIC8vIGNvbXBpbGVyRW52IHJldHVybnMgYSBtYXAgZnJvbSAiZ29vcy9nb2FyY2giIHRvIHRoZQotQEAgLTI2MCw3ICsyNjQsNiBAQCBmdW5jIGNvbXBpbGVyRW52KGVudk5hbWUsIGRlZiBzdHJpbmcpIG1hCi0gCQlpZiBnb2hvc3RvcyAhPSBnb29zIHx8IGdvaG9zdGFyY2ggIT0gZ29hcmNoIHsKLSAJCQltW2dvaG9zdG9zKyIvIitnb2hvc3RhcmNoXSA9IG1bIiJdCi0gCQl9Ci0tCQltWyIiXSA9IGVudgotIAl9Ci0gCi0gCWZvciBfLCBnb29zIDo9IHJhbmdlIG9rZ29vcyB7Ci1AQCAtNDg3LDggKzQ5MCwxMCBAQCBmdW5jIHNldHVwKCkgewotIAkvLyBXZSBrZWVwIGl0IGluIHBrZy8sIGp1c3QgbGlrZSB0aGUgb2JqZWN0IGRpcmVjdG9yeSBhYm92ZS4KLSAJaWYgcmVidWlsZGFsbCB7Ci0gCQl4cmVtb3ZlYWxsKHRvb2xkaXIpCi0rCQl4cmVtb3ZlYWxsKGJ1aWxkX3Rvb2xkaXIpCi0gCX0KLSAJeG1rZGlyYWxsKHRvb2xkaXIpCi0rCXhta2RpcmFsbChidWlsZF90b29sZGlyKQotIAotIAkvLyBSZW1vdmUgdG9vbCBiaW5hcmllcyBmcm9tIGJlZm9yZSB0aGUgdG9vbC9nb2hvc3Rvc19nb2hvc3RhcmNoCi0gCXhyZW1vdmVhbGwocGF0aGYoIiVzL2Jpbi90b29sIiwgZ29yb290KSkKLUBAIC0xMTU1LDExICsxMTYwLDI5IEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgewotIAotIAl2YXIgbm9CYW5uZXIgYm9vbAotIAl2YXIgZGVidWcgYm9vbAotKwl2YXIgaG9zdE9ubHkgYm9vbAotKwl2YXIgdGFyZ2V0T25seSBib29sCi0rCXZhciB0b0J1aWxkID0gW11zdHJpbmcgeyAic3RkIiwgImNtZCIgfQotKwotIAlmbGFnLkJvb2xWYXIoJnJlYnVpbGRhbGwsICJhIiwgcmVidWlsZGFsbCwgInJlYnVpbGQgYWxsIikKLSAJZmxhZy5Cb29sVmFyKCZkZWJ1ZywgImQiLCBkZWJ1ZywgImVuYWJsZSBkZWJ1Z2dpbmcgb2YgYm9vdHN0cmFwIHByb2Nlc3MiKQotIAlmbGFnLkJvb2xWYXIoJm5vQmFubmVyLCAibm8tYmFubmVyIiwgbm9CYW5uZXIsICJkbyBub3QgcHJpbnQgYmFubmVyIikKLSsJZmxhZy5Cb29sVmFyKCZob3N0T25seSwgImhvc3Qtb25seSIsIGhvc3RPbmx5LCAiYnVpbGQgb25seSBob3N0IGJpbmFyaWVzLCBub3QgdGFyZ2V0IikKLSsJZmxhZy5Cb29sVmFyKCZ0YXJnZXRPbmx5LCAidGFyZ2V0LW9ubHkiLCB0YXJnZXRPbmx5LCAiYnVpbGQgb25seSB0YXJnZXQgYmluYXJpZXMsIG5vdCBob3N0IikKLSAKLS0JeGZsYWdwYXJzZSgwKQotKwl4ZmxhZ3BhcnNlKC0xKQotKwotKwlpZiAoaG9zdE9ubHkgJiYgdGFyZ2V0T25seSkgewotKwkJZmF0YWxmKCJzcGVjaWZ5IG9ubHkgb25lIG9mIC0taG9zdC1vbmx5IG9yIC0tdGFyZ2V0LW9ubHlcbiIpCi0rCX0KLSsJY3Jvc3NCdWlsZCA9IGhvc3RPbmx5IHx8IHRhcmdldE9ubHkKLSsJaWYgZmxhZy5OQXJnKCkgPiAwIHsKLSsJCWlmIGNyb3NzQnVpbGQgewotKwkJCXRvQnVpbGQgPSBmbGFnLkFyZ3MoKQotKwkJfSBlbHNlIHsKLSsJCQlmYXRhbGYoInBhY2thZ2UgbmFtZXMgbm90IHBlcm1pdHRlZCB3aXRob3V0IC0taG9zdC1vbmx5IG9yIC0tdGFyZ2V0LW9ubHlcbiIpCi0rCQl9Ci0rCX0KLSAKLSAJaWYgZGVidWcgewotIAkJLy8gY21kL2J1aWxkaWQgaXMgdXNlZCBpbiBkZWJ1ZyBtb2RlLgotQEAgLTEyMDcsOCArMTIzMCwxMyBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKLSAJCXhwcmludGYoIlxuIikKLSAJfQotIAotLQlnb2djZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0dDRkxBR1MiKSAvLyB3ZSB3ZXJlIHVzaW5nICRCT09UX0dPX0dDRkxBR1MgdW50aWwgbm93Ci0tCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpCi0rCS8vIEZvciBzcGxpdCBob3N0L3RhcmdldCBjcm9zcy9jcm9zcy1jYW5hZGlhbiBidWlsZHMsIHdlIGRvbid0Ci0rCS8vIHdhbnQgdG8gYmUgc2V0dGluZyB0aGVzZSBmbGFncyB1bnRpbCBhZnRlciB3ZSBoYXZlIGNvbXBpbGVkCi0rCS8vIHRoZSB0b29sY2hhaW4gdGhhdCBydW5zIG9uIHRoZSBidWlsZCBob3N0LgotKwlpZiAhIGNyb3NzQnVpbGQgewotKwkJZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19HQ0ZMQUdTIHVudGlsIG5vdwotKwkJZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikKLSsJfQotIAlnb0Jvb3RzdHJhcCA6PSBwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgdG9vbGRpcikKLSAJY21kR28gOj0gcGF0aGYoIiVzL2dvIiwgZ29iaW4pCi0gCWlmIGRlYnVnIHsKLUBAIC0xMjM3LDcgKzEyNjUsMTEgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCQl4cHJpbnRmKCJcbiIpCi0gCX0KLSAJeHByaW50ZigiQnVpbGRpbmcgR28gdG9vbGNoYWluMiB1c2luZyBnb19ib290c3RyYXAgYW5kIEdvIHRvb2xjaGFpbjEuXG4iKQotLQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQotKwlpZiBjcm9zc0J1aWxkIHsKLSsJCW9zLlNldGVudigiQ0MiLCBkZWZhdWx0Y2NbIiJdKQotKwl9IGVsc2UgewotKwkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLSsJfQotIAlnb0luc3RhbGwoZ29Cb290c3RyYXAsIGFwcGVuZChbXXN0cmluZ3siLWkifSwgdG9vbGNoYWluLi4uKS4uLikKLSAJaWYgZGVidWcgewotIAkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgIi1WPWZ1bGwiKQotQEAgLTEyNzQsNTAgKzEzMDYsODQgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCX0KLSAJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgYXBwZW5kKHRvb2xjaGFpbiwgInJ1bnRpbWUvaW50ZXJuYWwvc3lzIikuLi4pCi0gCi0tCWlmIGdvb3MgPT0gb2xkZ29vcyAmJiBnb2FyY2ggPT0gb2xkZ29hcmNoIHsKLS0JCS8vIENvbW1vbiBjYXNlIC0gbm90IHNldHRpbmcgdXAgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLgotLQkJdGltZWxvZygiYnVpbGQiLCAidG9vbGNoYWluIikKLS0JCWlmIHZmbGFnID4gMCB7Ci0tCQkJeHByaW50ZigiXG4iKQotKwlpZiBjcm9zc0J1aWxkIHsKLSsJCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpCi0rCQlnb2xkZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0xERkxBR1MiKQotKwkJdG9vbF9maWxlcywgXyA6PSBmaWxlcGF0aC5HbG9iKHBhdGhmKCIlcy8qIiwgdG9vbGRpcikpCi0rCQlmb3IgXywgZiA6PSByYW5nZSB0b29sX2ZpbGVzIHsKLSsJCQljb3B5ZmlsZShwYXRoZigiJXMvJXMiLCBidWlsZF90b29sZGlyLCBmaWxlcGF0aC5CYXNlKGYpKSwgZiwgd3JpdGVFeGVjKQotKwkJCXhyZW1vdmUoZikKLSsJCX0KLSsJCW9zLlNldGVudigiR09UT09MRElSIiwgYnVpbGRfdG9vbGRpcikKLSsJCWdvQm9vdHN0cmFwID0gcGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIGJ1aWxkX3Rvb2xkaXIpCi0rCQlpZiBob3N0T25seSB7Ci0rCQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQotKwkJCWlmIHZmbGFnID4gMCB7Ci0rCQkJCXhwcmludGYoIlxuIikKLSsJCQl9Ci0rCQkJeHByaW50ZigiQnVpbGRpbmcgJXMgZm9yIGhvc3QsICVzLyVzLlxuIiwgc3RyaW5ncy5Kb2luKHRvQnVpbGQsICIsIiksIGdvb3MsIGdvYXJjaCkKLSsJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCi0rCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKLSsJCQkvLyBTa2lwIGNtZEdvIHN0YWxlbmVzcyBjaGVja3MgaGVyZSwgc2luY2Ugd2UgY2FuJ3QgbmVjZXNzYXJpbHkgcnVuIHRoZSBjbWRHbyBiaW5hcnkKLSsKLSsJCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKLSsJCQlpZiB2ZmxhZyA+IDAgewotKwkJCQl4cHJpbnRmKCJcbiIpCi0rCQkJfQotKwkJfSBlbHNlIGlmIHRhcmdldE9ubHkgewotKwkJCWdvb3MgPSBvbGRnb29zCi0rCQkJZ29hcmNoID0gb2xkZ29hcmNoCi0rCQkJb3MuU2V0ZW52KCJHT09TIiwgZ29vcykKLSsJCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKLSsJCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQotKwkJCXhwcmludGYoIkJ1aWxkaW5nICVzIGZvciB0YXJnZXQsICVzLyVzLlxuIiwgc3RyaW5ncy5Kb2luKHRvQnVpbGQsICIsIiksIGdvb3MsIGdvYXJjaCkKLSsJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCi0rCQkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKLSsJCQkvLyBTa2lwIGNtZEdvIHN0YWxlbmVzcyBjaGVja3MgaGVyZSwgc2luY2Ugd2UgY2FuJ3QgcnVuIHRoZSB0YXJnZXQncyBjbWRHbyBiaW5hcnkKLSAJCX0KLS0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0gCX0gZWxzZSB7Ci0tCQkvLyBHT09TL0dPQVJDSCBkb2VzIG5vdCBtYXRjaCBHT0hPU1RPUy9HT0hPU1RBUkNILgotLQkJLy8gRmluaXNoIEdPSE9TVE9TL0dPSE9TVEFSQ0ggaW5zdGFsbGF0aW9uIGFuZCB0aGVuCi0tCQkvLyBydW4gR09PUy9HT0FSQ0ggaW5zdGFsbGF0aW9uLgotLQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQotLQkJaWYgdmZsYWcgPiAwIHsKLS0JCQl4cHJpbnRmKCJcbiIpCi0rCi0rCQlpZiBnb29zID09IG9sZGdvb3MgJiYgZ29hcmNoID09IG9sZGdvYXJjaCB7Ci0rCQkJLy8gQ29tbW9uIGNhc2UgLSBub3Qgc2V0dGluZyB1cCBmb3IgY3Jvc3MtY29tcGlsYXRpb24uCi0rCQkJdGltZWxvZygiYnVpbGQiLCAidG9vbGNoYWluIikKLSsJCQlpZiB2ZmxhZyA+IDAgewotKwkJCQl4cHJpbnRmKCJcbiIpCi0rCQkJfQotKwkJCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0rCQl9IGVsc2UgewotKwkJCS8vIEdPT1MvR09BUkNIIGRvZXMgbm90IG1hdGNoIEdPSE9TVE9TL0dPSE9TVEFSQ0guCi0rCQkJLy8gRmluaXNoIEdPSE9TVE9TL0dPSE9TVEFSQ0ggaW5zdGFsbGF0aW9uIGFuZCB0aGVuCi0rCQkJLy8gcnVuIEdPT1MvR09BUkNIIGluc3RhbGxhdGlvbi4KLSsJCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQotKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKLSsJCQljaGVja05vdFN0YWxlKGNtZEdvLCAic3RkIiwgImNtZCIpCi0rCi0rCQkJdGltZWxvZygiYnVpbGQiLCAidGFyZ2V0IHRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCQlnb29zID0gb2xkZ29vcwotKwkJCWdvYXJjaCA9IG9sZGdvYXJjaAotKwkJCW9zLlNldGVudigiR09PUyIsIGdvb3MpCi0rCQkJb3MuU2V0ZW52KCJHT0FSQ0giLCBnb2FyY2gpCi0rCQkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLSsJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0gCQl9Ci0tCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotIAkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCi0gCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCi0gCQljaGVja05vdFN0YWxlKGNtZEdvLCAic3RkIiwgImNtZCIpCi0gCi0tCQl0aW1lbG9nKCJidWlsZCIsICJ0YXJnZXQgdG9vbGNoYWluIikKLS0JCWlmIHZmbGFnID4gMCB7Ci0tCQkJeHByaW50ZigiXG4iKQotLQkJfQotLQkJZ29vcyA9IG9sZGdvb3MKLS0JCWdvYXJjaCA9IG9sZGdvYXJjaAotLQkJb3MuU2V0ZW52KCJHT09TIiwgZ29vcykKLS0JCW9zLlNldGVudigiR09BUkNIIiwgZ29hcmNoKQotLQkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLS0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgdGFyZ2V0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKLS0JfQotLQl0YXJnZXRzIDo9IFtdc3RyaW5neyJzdGQiLCAiY21kIn0KLS0JaWYgZ29vcyA9PSAianMiICYmIGdvYXJjaCA9PSAid2FzbSIgewotLQkJLy8gU2tpcCB0aGUgY21kIHRvb2xzIGZvciBqcy93YXNtLiBUaGV5J3JlIG5vdCB1c2FibGUuCi0tCQl0YXJnZXRzID0gdGFyZ2V0c1s6MV0KLS0JfQotLQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRhcmdldHMuLi4pCi0tCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIHRhcmdldHMuLi4pCi0tCWNoZWNrTm90U3RhbGUoY21kR28sIHRhcmdldHMuLi4pCi0tCWlmIGRlYnVnIHsKLS0JCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksICItVj1mdWxsIikKLS0JCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9idWlsZGlkIiwgdG9vbGRpciksIHBhdGhmKCIlcy9wa2cvJXNfJXMvcnVudGltZS9pbnRlcm5hbC9zeXMuYSIsIGdvcm9vdCwgZ29vcywgZ29hcmNoKSkKLS0JCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIGFwcGVuZCh0b29sY2hhaW4sICJydW50aW1lL2ludGVybmFsL3N5cyIpLi4uKQotLQkJY29weWZpbGUocGF0aGYoIiVzL2NvbXBpbGU0IiwgdG9vbGRpciksIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksIHdyaXRlRXhlYykKLSsJCWlmIGRlYnVnIHsKLSsJCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCAiLVY9ZnVsbCIpCi0rCQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2J1aWxkaWQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL3BrZy8lc18lcy9ydW50aW1lL2ludGVybmFsL3N5cy5hIiwgZ29yb290LCBnb29zLCBnb2FyY2gpKQotKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIGFwcGVuZCh0b29sY2hhaW4sICJydW50aW1lL2ludGVybmFsL3N5cyIpLi4uKQotKwkJCWNvcHlmaWxlKHBhdGhmKCIlcy9jb21waWxlNCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCB3cml0ZUV4ZWMpCi0rCQl9Ci0gCX0KLSAKLSAJLy8gQ2hlY2sgdGhhdCB0aGVyZSBhcmUgbm8gbmV3IGZpbGVzIGluICRHT1JPT1QvYmluIG90aGVyIHRoYW4KLUBAIC0xMzM1LDcgKzE0MDEsMTEgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7Ci0gCX0KLSAKLSAJLy8gUmVtb3ZlIGdvX2Jvb3RzdHJhcCBub3cgdGhhdCB3ZSdyZSBkb25lLgotLQl4cmVtb3ZlKHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCB0b29sZGlyKSkKLSsJLy8gRXhjZXB0IHRoYXQgZm9yIHNwbGl0IGhvc3QvdGFyZ2V0IGNyb3NzLWJ1aWxkcywgd2UgbmVlZCB0bwotKwkvLyBrZWVwIGl0LgotKwlpZiAhIGNyb3NzQnVpbGQgewotKwkJeHJlbW92ZShwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgdG9vbGRpcikpCi0rCX0KLSAKLSAJLy8gUHJpbnQgdHJhaWxpbmcgYmFubmVyIHVubGVzcyBpbnN0cnVjdGVkIG90aGVyd2lzZS4KLSAJaWYgIW5vQmFubmVyIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwNy1jbWQtZ28tbWFrZS1HT1JPT1QtcHJlY2lvdXMtYnktZGVmYXVsdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjllZjk0Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDYgKzAsMCBAQAotRnJvbSA3Y2M2MGIzODg3YmUyZDU2NzRiOWY1ZDQyMmQwMjI5NzZjZjIwNWU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLURhdGU6IEZyaSwgMiBNYXIgMjAxOCAwNjowMDoyMCAtMDgwMAotU3ViamVjdDogW1BBVENIXSBjbWQvZ286IG1ha2UgR09ST09UIHByZWNpb3VzIGJ5IGRlZmF1bHQKLQotVGhlIGdvIGJ1aWxkIHRvb2wgbm9ybWFsbHkgcmVidWlsZHMgd2hhdGV2ZXIgaXQgZGV0ZWN0cyBpcwotc3RhbGUuICBUaGlzIGNhbiBiZSBhIHByb2JsZW0gd2hlbiBHT1JPT1QgaXMgaW50ZW5kZWQgdG8KLWJlIHJlYWQtb25seSBhbmQgdGhlIGdvIHJ1bnRpbWUgaGFzIGJlZW4gYnVpbHQgYXMgYSBzaGFyZWQKLWxpYnJhcnksIHNpbmNlIHdlIGRvbid0IHdhbnQgZXZlcnkgYXBwbGljYXRpb24gdG8gYmUgcmVidWlsZGluZwotdGhlIHNoYXJlZCBydW50aW1lIC0gcGFydGljdWxhcmx5IGluIGNyb3NzLWJ1aWxkL3BhY2thZ2luZwotc2V0dXBzLCBzaW5jZSB0aGF0IHdvdWxkIGxlYWQgdG8gJ2FiaSBtaXNtYXRjaCcgcnVudGltZSBlcnJvcnMuCi0KLVRoaXMgcGF0Y2ggcHJldmVudHMgdGhlIGluc3RhbGwgYW5kIGxpbmtzaGFyZWQgYWN0aW9ucyBmcm9tCi1pbnN0YWxsaW5nIHRvIEdPUk9PVCB1bmxlc3Mgb3ZlcnJpZGRlbiB3aXRoIHRoZSBHT1JPT1RfT1ZFUlJJREUKLWVudmlyb25tZW50IHZhcmlhYmxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotCi0tLS0KLSBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvIHwgIDMgKysrCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvICB8ICA1ICsrKysrCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gICB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDMzIGluc2VydGlvbnMoKykKLQotSW5kZXg6IGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28KLSsrKyBnby9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvCi1AQCAtNjAwLDYgKzYwMCw5IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGFkZFRyYW5zaXRpdmVMaW5rRGVwcygKLSAJCQlpZiBwMSA9PSBuaWwgfHwgcDEuU2hsaWIgPT0gIiIgfHwgaGF2ZVNobGliW2ZpbGVwYXRoLkJhc2UocDEuU2hsaWIpXSB7Ci0gCQkJCWNvbnRpbnVlCi0gCQkJfQotKwkJCWlmIGdvUm9vdFByZWNpb3VzICYmIChwMS5TdGFuZGFyZCB8fCBwMS5Hb3Jvb3QpIHsKLSsJCQkJY29udGludWUKLSsJCQl9Ci0gCQkJaGF2ZVNobGliW2ZpbGVwYXRoLkJhc2UocDEuU2hsaWIpXSA9IHRydWUKLSAJCQkvLyBUT0RPKHJzYyk6IFRoZSB1c2Ugb2YgTW9kZUluc3RhbGwgaGVyZSBpcyBzdXNwZWN0LCBidXQgaWYgd2Ugb25seSBkbyBNb2RlQnVpbGQsCi0gCQkJLy8gd2UnbGwgZW5kIHVwIGJ1aWxkaW5nIGFuIG92ZXJhbGwgbGlicmFyeSBvciBleGVjdXRhYmxlIHRoYXQgZGVwZW5kcyBhdCBydW50aW1lCi1JbmRleDogZ28vc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ28ub3JpZy9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KLSsrKyBnby9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KLUBAIC0xNDcsNiArMTQ3LDcgQEAgU2VlIGFsc286IGdvIGluc3RhbGwsIGdvIGdldCwgZ28gY2xlYW4uCi0gfQotIAotIGNvbnN0IGNvbmN1cnJlbnRHQ0JhY2tlbmRDb21waWxhdGlvbkVuYWJsZWRCeURlZmF1bHQgPSB0cnVlCi0rdmFyIGdvUm9vdFByZWNpb3VzIGJvb2wgPSB0cnVlCi0gCi0gZnVuYyBpbml0KCkgewotIAkvLyBicmVhayBpbml0IGN5Y2xlCi1AQCAtMTYwLDYgKzE2MSwxMCBAQCBmdW5jIGluaXQoKSB7Ci0gCi0gCUFkZEJ1aWxkRmxhZ3MoQ21kQnVpbGQpCi0gCUFkZEJ1aWxkRmxhZ3MoQ21kSW5zdGFsbCkKLSsKLSsJaWYgeCA6PSBvcy5HZXRlbnYoIkdPUk9PVF9PVkVSUklERSIpOyB4ICE9ICIiIHsKLSsJCWdvUm9vdFByZWNpb3VzID0gZmFsc2UKLSsJfQotIH0KLSAKLSAvLyBOb3RlIHRoYXQgZmxhZ3MgY29uc3VsdGVkIGJ5IG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlCi1JbmRleDogZ28vc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnby5vcmlnL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi0rKysgZ28vc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KLUBAIC00MzYsNiArNDM2LDIzIEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkKGEgKkFjdGlvbikgKGVycgotIAkJcmV0dXJuIGZtdC5FcnJvcmYoIm1pc3Npbmcgb3IgaW52YWxpZCBiaW5hcnktb25seSBwYWNrYWdlOyBleHBlY3RlZCBmaWxlICVxIiwgYS5QYWNrYWdlLlRhcmdldCkKLSAJfQotIAotKwlpZiBnb1Jvb3RQcmVjaW91cyAmJiAoYS5QYWNrYWdlLlN0YW5kYXJkIHx8IGEuUGFja2FnZS5Hb3Jvb3QpIHsKLSsJCV8sIGVyciA6PSBvcy5TdGF0KGEuUGFja2FnZS5UYXJnZXQpCi0rCQlpZiBlcnIgPT0gbmlsIHsKLSsJCQlhLmJ1aWx0ID0gYS5QYWNrYWdlLlRhcmdldAotKwkJCWEuVGFyZ2V0ID0gYS5QYWNrYWdlLlRhcmdldAotKwkJCWEuYnVpbGRJRCA9IGIuZmlsZUhhc2goYS5QYWNrYWdlLlRhcmdldCkKLSsJCQlhLlBhY2thZ2UuU3RhbGUgPSBmYWxzZQotKwkJCWEuUGFja2FnZS5TdGFsZVJlYXNvbiA9ICJHT1JPT1QtcmVzaWRlbnQgcGFja2FnZSIKLSsJCQlyZXR1cm4gbmlsCi0rCQl9Ci0rCQlhLlBhY2thZ2UuU3RhbGUgPSB0cnVlCi0rCQlhLlBhY2thZ2UuU3RhbGVSZWFzb24gPSAibWlzc2luZyBvciBpbnZhbGlkIEdPUk9PVC1yZXNpZGVudCBwYWNrYWdlIgotKwkJaWYgYi5Jc0NtZExpc3QgewotKwkJCXJldHVybiBuaWwKLSsJCX0KLSsJfQotKwotIAlpZiBlcnIgOj0gYi5Na2RpcihhLk9iamRpcik7IGVyciAhPSBuaWwgewotIAkJcmV0dXJuIGVycgotIAl9Ci1AQCAtMTQzOCw2ICsxNDU1LDE0IEBAIGZ1bmMgQnVpbGRJbnN0YWxsRnVuYyhiICpCdWlsZGVyLCBhICpBY3QKLSAJCXJldHVybiBuaWwKLSAJfQotIAotKwlpZiBnb1Jvb3RQcmVjaW91cyAmJiBhLlBhY2thZ2UgIT0gbmlsIHsKLSsJCXAgOj0gYS5QYWNrYWdlCi0rCQlpZiBwLlN0YW5kYXJkIHx8IHAuR29yb290IHsKLSsJCQllcnIgOj0gZm10LkVycm9yZigiYXR0ZW1wdGluZyB0byBpbnN0YWxsIHBhY2thZ2UgJXMgaW50byByZWFkLW9ubHkgR09ST09UIiwgcC5JbXBvcnRQYXRoKQotKwkJCXJldHVybiBlcnIKLSsJCX0KLSsJfQotKwotIAlpZiBlcnIgOj0gYi5Na2RpcihhLk9iamRpcik7IGVyciAhPSBuaWwgewotIAkJcmV0dXJuIGVycgotIAl9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDgtdXNlLUdPQlVJTERNT0RFLXRvLXNldC1idWlsZG1vZGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEyLzAwMDgtdXNlLUdPQlVJTERNT0RFLXRvLXNldC1idWlsZG1vZGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIyNWNmNDMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA4LXVzZS1HT0JVSUxETU9ERS10by1zZXQtYnVpbGRtb2RlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotRnJvbSAwZTBjMjQ3ZjBjYWVjMjM1Mjg4ODlmZjA5ZDk4MzQ4Y2JhOTAyOGYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotRGF0ZTogRnJpLCAyNiBPY3QgMjAxOCAxNTowMjozMiArMDgwMAotU3ViamVjdDogW1BBVENIXSB1c2UgR09CVUlMRE1PREUgdG8gc2V0IGJ1aWxkbW9kZQotCi1XaGlsZSBidWlsZGluZyBnbyBpdHNlbGYsIHRoZSBnbyBidWlsZCBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydAotdG8gc2V0IGAtYnVpbGRtb2RlPXBpZScgZnJvbSBlbnZpcm9ubWVudC4KLQotQWRkIEdPQlVJTERNT0RFIHRvIHN1cHBvcnQgaXQgd2hpY2ggbWFrZSBQSUUgZXhlY3V0YWJsZXMgdGhlIGRlZmF1bHQKLWJ1aWxkIG1vZGUsIGFzIFBJRSBleGVjdXRhYmxlcyBhcmUgcmVxdWlyZWQgYXMgb2YgWW9jdG8KLQotUmVmZXJzOiBodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2ZvcnVtLyMhdG9waWMvZ29sYW5nLWRldi9nUkNlNVVSS2V3SQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW3Vwc3RyZWFtIGNob29zZSBhbnRvaGVyIHNvbHV0aW9uOiBgMTdhMjU2YgotY21kL2dvOiAtYnVpbGRtb2RlPXBpZSBmb3IgYW5kcm9pZC9hcm0nXQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28gfCA2ICsrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGdvL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdvLm9yaWcvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi0rKysgZ28vc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi1AQCAtMjIzLDcgKzIyMywxMSBAQCBmdW5jIEFkZEJ1aWxkRmxhZ3MoY21kICpiYXNlLkNvbW1hbmQpIHsKLSAKLSAJY21kLkZsYWcuVmFyKCZsb2FkLkJ1aWxkQXNtZmxhZ3MsICJhc21mbGFncyIsICIiKQotIAljbWQuRmxhZy5WYXIoYnVpbGRDb21waWxlcnt9LCAiY29tcGlsZXIiLCAiIikKLS0JY21kLkZsYWcuU3RyaW5nVmFyKCZjZmcuQnVpbGRCdWlsZG1vZGUsICJidWlsZG1vZGUiLCAiZGVmYXVsdCIsICIiKQotKwlpZiBibSA6PSBvcy5HZXRlbnYoIkdPQlVJTERNT0RFIik7IGJtICE9ICIiIHsKLSsJCWNtZC5GbGFnLlN0cmluZ1ZhcigmY2ZnLkJ1aWxkQnVpbGRtb2RlLCAiYnVpbGRtb2RlIiwgYm0sICIiKQotKwl9IGVsc2UgewotKwkJY21kLkZsYWcuU3RyaW5nVmFyKCZjZmcuQnVpbGRCdWlsZG1vZGUsICJidWlsZG1vZGUiLCAiZGVmYXVsdCIsICIiKQotKwl9Ci0gCWNtZC5GbGFnLlZhcigmbG9hZC5CdWlsZEdjZmxhZ3MsICJnY2ZsYWdzIiwgIiIpCi0gCWNtZC5GbGFnLlZhcigmbG9hZC5CdWlsZEdjY2dvZmxhZ3MsICJnY2Nnb2ZsYWdzIiwgIiIpCi0gCWNtZC5GbGFnLlN0cmluZ1ZhcigmY2ZnLkJ1aWxkTW9kLCAibW9kIiwgIiIsICIiKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA5LWxkLXJlcGxhY2UtZ2xpYmMtZHluYW1pYy1saW5rZXItd2l0aC1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMi8wMDA5LWxkLXJlcGxhY2UtZ2xpYmMtZHluYW1pYy1saW5rZXItd2l0aC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NDBjZjRiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTIvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDExMiArMCwwIEBACi1Gcm9tIDM1ZWE0YmUzNGU5NDkxMmIwMDgzN2UwZjdjNzM4NWYyZTk4ZmU3NjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPgotRGF0ZTogU3VuLCAxOCBGZWIgMjAxOCAwODoyNDowNSAtMDgwMAotU3ViamVjdDogW1BBVENIXSBsZDogcmVwbGFjZSBnbGliYyBkeW5hbWljIGxpbmtlciB3aXRoIG11c2wKLQotUmV3b3JrIG9mIHBhdGNoIGJ5IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1mb3IgZ28gMS4xMC4gIFNob3VsZCBiZSBhcHBsaWVkIGNvbmRpdGlvbmFsbHkgb24KLW11c2wgYmVpbmcgdGhlIHN5c3RlbSBDIGxpYnJhcnkuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbUmVhbCBmaXggc2hvdWxkIGJlIHBvcnRhYmxlIGFjcm9zcyBsaWJjc10KLQotU2lnbmVkLW9mZi1ieTogTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4KLQotLS0tCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbyAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28gICAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbyAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvICAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28gfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbyAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbyAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28gICAgfCAyICstCi0gOCBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28KLUBAIC02Miw3ICs2Miw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCVBFcmVsb2MxOiAgICAgICAgIHBlcmVsb2MxLAotIAkJVExTSUV0b0xFOiAgICAgICAgdGxzSUV0b0xFLAotIAotLQkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQtbGludXgteDg2LTY0LnNvLjIiLAotKwkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQtbXVzbC14ODYtNjQuc28uMSIsCi0gCQlGcmVlYnNkZHlubGQ6ICAgIi9saWJleGVjL2xkLWVsZi5zby4xIiwKLSAJCU9wZW5ic2RkeW5sZDogICAiL3Vzci9saWJleGVjL2xkLnNvIiwKLSAJCU5ldGJzZGR5bmxkOiAgICAiL2xpYmV4ZWMvbGQuZWxmX3NvIiwKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbwotQEAgLTU5LDcgKzU5LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYi9sZC1saW51eC5zby4zIiwgLy8gMiBmb3IgT0FCSSwgMyBmb3IgRUFCSQotKwkJTGludXhkeW5sZDogICAgICIvbGliL2xkLW11c2wtYXJtaGYuc28uMSIsCi0gCQlGcmVlYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC1lbGYuc28uMSIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCi0gCQlOZXRic2RkeW5sZDogICAgIi9saWJleGVjL2xkLmVsZl9zbyIsCi0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCi1AQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAiL2xpYi9sZC1saW51eC1hYXJjaDY0LnNvLjEiLAotKwkJTGludXhkeW5sZDogIi9saWIvbGQtbXVzbC1hYXJjaDY0LnNvLjEiLAotIAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwcy9vYmouZ28KLUBAIC02MCw3ICs2MCw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCi0gCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICIvbGliL2xkLnNvLjEiLAotKwkJTGludXhkeW5sZDogIi9saWIvbGQtbXVzbC1taXBzbGUuc28uMSIsCi0gCi0gCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIlhYWCIsCi0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KLUBAIC01OSw3ICs1OSw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCi0gCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkNjQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZC1tdXNsLW1pcHM2NGxlLnNvLjEiLAotIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAotIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAotIAkJTmV0YnNkZHlubGQ6ICAgICJYWFgiLAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbwotQEAgLTYyLDcgKzYyLDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0gCQkvLyBUT0RPKGF1c3Rpbik6IEFCSSB2MSB1c2VzIC91c3IvbGliL2xkLnNvLjEsCi0tCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtcG93ZXJwYzY0bGUuc28uMSIsCi0gCi0gCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIlhYWCIsCi0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCi1AQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAotIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtczM5MHguc28uMSIsCi0gCi0gCQkvLyBub3QgcmVsZXZhbnQgZm9yIHMzOTB4Ci0gCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCi0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28KLUBAIC01OCw3ICs1OCw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAotIAkJUEVyZWxvYzE6ICAgICAgICAgcGVyZWxvYzEsCi0gCi0tCQlMaW51eGR5bmxkOiAgICIvbGliL2xkLWxpbnV4LnNvLjIiLAotKwkJTGludXhkeW5sZDogICAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIsCi0gCQlGcmVlYnNkZHlubGQ6ICIvdXNyL2xpYmV4ZWMvbGQtZWxmLnNvLjEiLAotIAkJT3BlbmJzZGR5bmxkOiAiL3Vzci9saWJleGVjL2xkLnNvIiwKLSAJCU5ldGJzZGR5bmxkOiAgIi91c3IvbGliZXhlYy9sZC5lbGZfc28iLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRkZmQ1ZTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gOWUzZGM0NGNkZmE1OGQ5NjUwNGQwYTc4OWRjODI2MTdkZDViZWY1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjAxOjEzICswNDMwCi1TdWJqZWN0OiBbUEFUQ0ggMS85XSBjbWQvZ286IEFsbG93IENDIGFuZCBDWFggdG8gaGF2ZSBtdWx0aXBsZSB3b3JkcwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1BZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCi10aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKLU1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLQotLS0tCi0gc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbwotaW5kZXggMTc4NTJkZS4uN2I1ZWM1ZSAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCi1AQCAtMTAwLDExICsxMDAsMTEgQEAgZnVuYyBNa0VudigpIFtdY2ZnLkVudlZhciB7Ci0gCi0gCWNjIDo9IGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpCi0gCWlmIGVudiA6PSBzdHJpbmdzLkZpZWxkcyhjZmcuR2V0ZW52KCJDQyIpKTsgbGVuKGVudikgPiAwIHsKLS0JCWNjID0gZW52WzBdCi0rCQljYyA9IHN0cmluZ3MuSm9pbihlbnYsICIgIikKLSAJfQotIAljeHggOj0gY2ZnLkRlZmF1bHRDWFgoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpCi0gCWlmIGVudiA6PSBzdHJpbmdzLkZpZWxkcyhjZmcuR2V0ZW52KCJDWFgiKSk7IGxlbihlbnYpID4gMCB7Ci0tCQljeHggPSBlbnZbMF0KLSsJCWN4eCA9IHN0cmluZ3MuSm9pbihlbnYsICIgIikKLSAJfQotIAllbnYgPSBhcHBlbmQoZW52LCBjZmcuRW52VmFye05hbWU6ICJBUiIsIFZhbHVlOiBlbnZPcigiQVIiLCAiYXIiKX0pCi0gCWVudiA9IGFwcGVuZChlbnYsIGNmZy5FbnZWYXJ7TmFtZTogIkNDIiwgVmFsdWU6IGNjfSkKLS0tIAotMi4xNy4xIChBcHBsZSBHaXQtMTEyKQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwMi1jbWQtZ28tbWFrZS1jb250ZW50LWJhc2VkLWhhc2gtZ2VuZXJhdGlvbi1sZXNzLXBlZGFuLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ZWRkZDM5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwMi1jbWQtZ28tbWFrZS1jb250ZW50LWJhc2VkLWhhc2gtZ2VuZXJhdGlvbi1sZXNzLXBlZGFuLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjI2ICswLDAgQEAKLUZyb20gYTEzYWU0ODRlNDExMzkwOTQ1MDVkMjgzNDQzN2U5MjYyYTUzMTVmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE0OjIyICswNDMwCi1TdWJqZWN0OiBbUEFUQ0ggMi85XSBjbWQvZ286IG1ha2UgY29udGVudC1iYXNlZCBoYXNoIGdlbmVyYXRpb24gbGVzcyBwZWRhbnRpYwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1HbyAxLjEwJ3MgYnVpbGQgdG9vbCBub3cgdXNlcyBjb250ZW50LWJhc2VkIGhhc2hlcyB0bwotZGV0ZXJtaW5lIHdoZW4gc29tZXRoaW5nIHNob3VsZCBiZSBidWlsdCBvciByZS1idWlsdC4KLVRoaXMgc2FtZSBtZWNoYW5pc20gaXMgdXNlZCB0byBtYWludGFpbiBhIGJ1aWx0LWFydGlmYWN0Ci1jYWNoZSBmb3Igc3BlZWRpbmcgdXAgYnVpbGRzLgotCi1Ib3dldmVyLCB0aGUgaGFzaGVzIGl0IGdlbmVyYXRlcyBpbmNsdWRlIGluZm9ybWF0aW9uIHRoYXQKLWRvZXNuJ3Qgd29yayB3ZWxsIHdpdGggT0UsIG5vciB3aXRoIHVzaW5nIGEgc2hhcmVkIHJ1bnRpbWUKLWxpYnJhcnkuCi0KLUZpcnN0LCBpdCBlbWJlZHMgcGF0aCBuYW1lcyB0byBzb3VyY2UgZmlsZXMsIHVubGVzcwotYnVpbGRpbmcgd2l0aGluIEdPUk9PVC4gIFRoaXMgcHJldmVudHMgdGhlIGJ1aWxkaW5nCi1vZiBhIHBhY2thZ2UgaW4gR09QQVRIIGZvciBsYXRlciBzdGFnaW5nIGludG8gR09ST09ULgotCi1UaGlzIHBhdGNoIGFkZHMgc3VwcG9ydCBmb3IgdGhlIGVudmlyb25tZW50IHZhcmlhYmxlCi1HT1BBVEhfT01JVF9JTl9BQ1RJT05JRC4gIElmIHByZXNlbnQsIHBhdGggbmFtZQotZW1iZWRkaW5nIGlzIGRpc2FibGVkLgotCi1TZWNvbmQsIGlmIGNnbyBpcyBlbmFibGVkLCB0aGUgYnVpbGQgSUQgZm9yIGNnby1yZWxhdGVkCi1wYWNrYWdlcyB3aWxsIGluY2x1ZGUgdGhlIGN1cnJlbnQgdmFsdWUgb2YgdGhlIGVudmlyb25tZW50Ci12YXJpYWJsZXMgZm9yIGludm9raW5nIHRoZSBjb21waWxlciAoQ0MsIENYWCwgRkMpIGFuZAotYW55IENHT194eEZMQUdTIHZhcmlhYmxlcy4gIE9ubHkgaWYgdGhlIHNldHRpbmdzIHVzZWQKLWR1cmluZyBhIGNvbXBpbGF0aW9uIGV4YWN0bHkgbWF0Y2gsIGNoYXJhY3RlciBmb3IgY2hhcmFjdGVyLAotdGhlIHZhbHVlcyB1c2VkIGZvciBjb21waWxpbmcgcnVudGltZS9jZ28gb3IgYW55IG90aGVyCi1jZ28tZW5hYmxlZCBwYWNrYWdlIGJlaW5nIGltcG9ydGVkLCB3aWxsIHRoZSB0b29sCi1kZWNpZGUgdGhhdCB0aGUgaW1wb3J0ZWQgcGFja2FnZSBpcyB1cC10by1kYXRlLgotCi1UaGlzIGlzIGRvbmUgdG8gaGVscCBlbnN1cmUgY29ycmVjdG5lc3MsIGJ1dCBpcyBvdmVybHkKLXNpbXBsaXN0aWMgYW5kIGVmZmVjdGl2ZWx5IHByZXZlbnRzIHRoZSByZXVzZSBvZiBidWlsdAotYXJ0aWZhY3RzIHRoYXQgdXNlIGNnbyAob3Igc2hhcmVkIHJ1bnRpbWUsIHdoaWNoIGluY2x1ZGVzCi1ydW50aW1lL2NnbykuCi0KLVRoaXMgcGF0Y2ggZmlsdGVycyBvdXQgYWxsIGNvbXBpbGVyIGZsYWdzIGV4Y2VwdCB0aG9zZQotYmVnaW5uaW5nIHdpdGggJy1tJy4gIFRoZSBkZWZhdWx0IGJlaGF2aW9yIGNhbiBiZSByZXN0b3JlZAotYnkgc2V0dGluZyB0aGUgQ0dPX1BFREFOVElDIGVudmlyb25tZW50IHZhcmlhYmxlLgotCi1BZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCi10aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKLU1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbyB8ICAyICstCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gIHwgNjYgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLQotIDIgZmlsZXMgY2hhbmdlZCwgNDkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLWluZGV4IDdiNWVjNWUuLjI5MmYxMTcgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KLSsrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbwotQEAgLTE1NCw3ICsxNTQsNyBAQCBmdW5jIEV4dHJhRW52VmFycygpIFtdY2ZnLkVudlZhciB7Ci0gZnVuYyBFeHRyYUVudlZhcnNDb3N0bHkoKSBbXWNmZy5FbnZWYXIgewotIAl2YXIgYiB3b3JrLkJ1aWxkZXIKLSAJYi5Jbml0KCkKLS0JY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgZXJyIDo9IGIuQ0ZsYWdzKCZsb2FkLlBhY2thZ2V7fSkKLSsJY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgZXJyIDo9IGIuQ0ZsYWdzKCZsb2FkLlBhY2thZ2V7fSwgZmFsc2UpCi0gCWlmIGVyciAhPSBuaWwgewotIAkJLy8gU2hvdWxkIG5vdCBoYXBwZW4gLSBiLkNGbGFncyB3YXMgZ2l2ZW4gYW4gZW1wdHkgcGFja2FnZS4KLSAJCWZtdC5GcHJpbnRmKG9zLlN0ZGVyciwgImdvOiBpbnZhbGlkIGNmbGFnczogJXZcbiIsIGVycikKLWRpZmYgLS1naXQgYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi1pbmRleCA3ZGQ5YTkwLi5jY2ViYWY4IDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KLSsrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi1AQCAtMzIsNiArMzIsOCBAQCBpbXBvcnQgKAotIAkidGltZSIKLSApCi0gCi0rdmFyIG9taXRHb3BhdGggPSBvcy5HZXRlbnYoIkdPUEFUSF9PTUlUX0lOX0FDVElPTklEIikgIT0gIiIKLSsKLSAvLyBhY3Rpb25MaXN0IHJldHVybnMgdGhlIGxpc3Qgb2YgYWN0aW9ucyBpbiB0aGUgZGFnIHJvb3RlZCBhdCByb290Ci0gLy8gYXMgdmlzaXRlZCBpbiBhIGRlcHRoLWZpcnN0IHBvc3Qtb3JkZXIgdHJhdmVyc2FsLgotIGZ1bmMgYWN0aW9uTGlzdChyb290ICpBY3Rpb24pIFtdKkFjdGlvbiB7Ci1AQCAtMjA1LDcgKzIwNyw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkQWN0aW9uSUQoYSAqQWN0aW9uKSBjYWNoZS5BY3Rpb25JRCB7Ci0gCS8vIFRoZSBjb21waWxlciBoaWRlcyB0aGUgZXhhY3QgdmFsdWUgb2YgJEdPUk9PVAotIAkvLyB3aGVuIGJ1aWxkaW5nIHRoaW5ncyBpbiBHT1JPT1QuCi0gCS8vIEFzc3VtZSBiLldvcmtEaXIgaXMgYmVpbmcgdHJpbW1lZCBwcm9wZXJseS4KLS0JaWYgIXAuR29yb290ICYmICFjZmcuQnVpbGRUcmltcGF0aCAmJiAhc3RyaW5ncy5IYXNQcmVmaXgocC5EaXIsIGIuV29ya0RpcikgewotKwlpZiAhcC5Hb3Jvb3QgJiYgIW9taXRHb3BhdGggJiYgIWNmZy5CdWlsZFRyaW1wYXRoICYmICFzdHJpbmdzLkhhc1ByZWZpeChwLkRpciwgYi5Xb3JrRGlyKSB7Ci0gCQlmbXQuRnByaW50ZihoLCAiZGlyICVzXG4iLCBwLkRpcikKLSAJfQotIAlmbXQuRnByaW50ZihoLCAiZ29vcyAlcyBnb2FyY2ggJXNcbiIsIGNmZy5Hb29zLCBjZmcuR29hcmNoKQotQEAgLTIxOSwxMyArMjIxLDEzIEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkQWN0aW9uSUQoYSAqQWN0aW9uKSBjYWNoZS5BY3Rpb25JRCB7Ci0gCX0KLSAJaWYgbGVuKHAuQ2dvRmlsZXMpK2xlbihwLlN3aWdGaWxlcykgPiAwIHsKLSAJCWZtdC5GcHJpbnRmKGgsICJjZ28gJXFcbiIsIGIudG9vbElEKCJjZ28iKSkKLS0JCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIF8gOj0gYi5DRmxhZ3MocCkKLS0JCWZtdC5GcHJpbnRmKGgsICJDQz0lcSAlcSAlcSAlcVxuIiwgYi5jY0V4ZSgpLCBjcHBmbGFncywgY2ZsYWdzLCBsZGZsYWdzKQotKwkJY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgXyA6PSBiLkNGbGFncyhwLCB0cnVlKQotKwkJZm10LkZwcmludGYoaCwgIkNDPSVxICVxICVxICVxXG4iLCBiLmNjRXhlKHRydWUpLCBjcHBmbGFncywgY2ZsYWdzLCBsZGZsYWdzKQotIAkJaWYgbGVuKHAuQ1hYRmlsZXMpK2xlbihwLlN3aWdGaWxlcykgPiAwIHsKLS0JCQlmbXQuRnByaW50ZihoLCAiQ1hYPSVxICVxXG4iLCBiLmN4eEV4ZSgpLCBjeHhmbGFncykKLSsJCQlmbXQuRnByaW50ZihoLCAiQ1hYPSVxICVxXG4iLCBiLmN4eEV4ZSh0cnVlKSwgY3h4ZmxhZ3MpCi0gCQl9Ci0gCQlpZiBsZW4ocC5GRmlsZXMpID4gMCB7Ci0tCQkJZm10LkZwcmludGYoaCwgIkZDPSVxICVxXG4iLCBiLmZjRXhlKCksIGZmbGFncykKLSsJCQlmbXQuRnByaW50ZihoLCAiRkM9JXEgJXFcbiIsIGIuZmNFeGUodHJ1ZSksIGZmbGFncykKLSAJCX0KLSAJCS8vIFRPRE8ocnNjKTogU2hvdWxkIHdlIGluY2x1ZGUgdGhlIFNXSUcgdmVyc2lvbiBvciBGb3J0cmFuL0dDQy9HKysvT2JqZWN0aXZlLUMgY29tcGlsZXIgdmVyc2lvbnM/Ci0gCX0KLUBAIC0yMjI5LDMzICsyMjMxLDQ4IEBAIHZhciAoCi0gLy8gZ2NjQ21kIHJldHVybnMgYSBnY2MgY29tbWFuZCBsaW5lIHByZWZpeAotIC8vIGRlZmF1bHRDQyBpcyBkZWZpbmVkIGluIHpkZWZhdWx0Y2MuZ28sIHdyaXR0ZW4gYnkgY21kL2Rpc3QuCi0gZnVuYyAoYiAqQnVpbGRlcikgR2NjQ21kKGluY2Rpciwgd29ya2RpciBzdHJpbmcpIFtdc3RyaW5nIHsKLS0JcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jY0V4ZSgpLCBpbmNkaXIsIHdvcmtkaXIpCi0rCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY2NFeGUoZmFsc2UpLCBpbmNkaXIsIHdvcmtkaXIpCi0gfQotIAotIC8vIGd4eENtZCByZXR1cm5zIGEgZysrIGNvbW1hbmQgbGluZSBwcmVmaXgKLSAvLyBkZWZhdWx0Q1hYIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KLSBmdW5jIChiICpCdWlsZGVyKSBHeHhDbWQoaW5jZGlyLCB3b3JrZGlyIHN0cmluZykgW11zdHJpbmcgewotLQlyZXR1cm4gYi5jb21waWxlckNtZChiLmN4eEV4ZSgpLCBpbmNkaXIsIHdvcmtkaXIpCi0rCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY3h4RXhlKGZhbHNlKSwgaW5jZGlyLCB3b3JrZGlyKQotIH0KLSAKLSAvLyBnZm9ydHJhbkNtZCByZXR1cm5zIGEgZ2ZvcnRyYW4gY29tbWFuZCBsaW5lIHByZWZpeC4KLSBmdW5jIChiICpCdWlsZGVyKSBnZm9ydHJhbkNtZChpbmNkaXIsIHdvcmtkaXIgc3RyaW5nKSBbXXN0cmluZyB7Ci0tCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuZmNFeGUoKSwgaW5jZGlyLCB3b3JrZGlyKQotKwlyZXR1cm4gYi5jb21waWxlckNtZChiLmZjRXhlKGZhbHNlKSwgaW5jZGlyLCB3b3JrZGlyKQotIH0KLSAKLSAvLyBjY0V4ZSByZXR1cm5zIHRoZSBDQyBjb21waWxlciBzZXR0aW5nIHdpdGhvdXQgYWxsIHRoZSBleHRyYSBmbGFncyB3ZSBhZGQgaW1wbGljaXRseS4KLS1mdW5jIChiICpCdWlsZGVyKSBjY0V4ZSgpIFtdc3RyaW5nIHsKLS0JcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NDLCBjZmcuRGVmYXVsdENDKGNmZy5Hb29zLCBjZmcuR29hcmNoKSkKLStmdW5jIChiICpCdWlsZGVyKSBjY0V4ZShmaWx0ZXJlZCBib29sKSBbXXN0cmluZyB7Ci0rCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDQywgY2ZnLkRlZmF1bHRDQyhjZmcuR29vcywgY2ZnLkdvYXJjaCksIGZpbHRlcmVkKQotIH0KLSAKLSAvLyBjeHhFeGUgcmV0dXJucyB0aGUgQ1hYIGNvbXBpbGVyIHNldHRpbmcgd2l0aG91dCBhbGwgdGhlIGV4dHJhIGZsYWdzIHdlIGFkZCBpbXBsaWNpdGx5LgotLWZ1bmMgKGIgKkJ1aWxkZXIpIGN4eEV4ZSgpIFtdc3RyaW5nIHsKLS0JcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NYWCwgY2ZnLkRlZmF1bHRDWFgoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpKQotK2Z1bmMgKGIgKkJ1aWxkZXIpIGN4eEV4ZShmaWx0ZXJlZCBib29sKSBbXXN0cmluZyB7Ci0rCXJldHVybiBiLmNvbXBpbGVyRXhlKG9yaWdDWFgsIGNmZy5EZWZhdWx0Q1hYKGNmZy5Hb29zLCBjZmcuR29hcmNoKSwgZmlsdGVyZWQpCi0gfQotIAotIC8vIGZjRXhlIHJldHVybnMgdGhlIEZDIGNvbXBpbGVyIHNldHRpbmcgd2l0aG91dCBhbGwgdGhlIGV4dHJhIGZsYWdzIHdlIGFkZCBpbXBsaWNpdGx5LgotLWZ1bmMgKGIgKkJ1aWxkZXIpIGZjRXhlKCkgW11zdHJpbmcgewotLQlyZXR1cm4gYi5jb21waWxlckV4ZShjZmcuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iKQotK2Z1bmMgKGIgKkJ1aWxkZXIpIGZjRXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKLSsJcmV0dXJuIGIuY29tcGlsZXJFeGUob3MuR2V0ZW52KCJGQyIpLCAiZ2ZvcnRyYW4iLCBmaWx0ZXJlZCkKLSt9Ci0rCi0rdmFyIGZpbHRlckZsYWdzID0gb3MuR2V0ZW52KCJDR09fUEVEQU5USUMiKSA9PSAiIgotKwotK2Z1bmMgZmlsdGVyQ29tcGlsZXJGbGFncyhmbGFncyBbXXN0cmluZykgW11zdHJpbmcgewotKwl2YXIgbmV3ZmxhZ3MgW11zdHJpbmcKLSsJaWYgIWZpbHRlckZsYWdzIHsKLSsJCXJldHVybiBmbGFncwotKwl9Ci0rCWZvciBfLCBmbGFnIDo9IHJhbmdlIGZsYWdzIHsKLSsJCWlmIHN0cmluZ3MuSGFzUHJlZml4KGZsYWcsICItbSIpIHsKLSsJCQluZXdmbGFncyA9IGFwcGVuZChuZXdmbGFncywgZmxhZykKLSsJCX0KLSsJfQotKwlyZXR1cm4gbmV3ZmxhZ3MKLSB9Ci0gCi0gLy8gY29tcGlsZXJFeGUgcmV0dXJucyB0aGUgY29tcGlsZXIgdG8gdXNlIGdpdmVuIGFuCi1AQCAtMjI2NCwxMSArMjI4MSwxNiBAQCBmdW5jIChiICpCdWlsZGVyKSBmY0V4ZSgpIFtdc3RyaW5nIHsKLSAvLyBvZiB0aGUgY29tcGlsZXIgYnV0IGNhbiBoYXZlIGFkZGl0aW9uYWwgYXJndW1lbnRzIGlmIHRoZXkKLSAvLyB3ZXJlIHByZXNlbnQgaW4gdGhlIGVudmlyb25tZW50IHZhbHVlLgotIC8vIEZvciBleGFtcGxlIGlmIENDPSJnY2MgLURHT1BIRVIiIHRoZW4gdGhlIHJlc3VsdCBpcyBbImdjYyIsICItREdPUEhFUiJdLgotLWZ1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZykgW11zdHJpbmcgewotK2Z1bmMgKGIgKkJ1aWxkZXIpIGNvbXBpbGVyRXhlKGVudlZhbHVlIHN0cmluZywgZGVmIHN0cmluZywgZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgewotIAljb21waWxlciA6PSBzdHJpbmdzLkZpZWxkcyhlbnZWYWx1ZSkKLSAJaWYgbGVuKGNvbXBpbGVyKSA9PSAwIHsKLSAJCWNvbXBpbGVyID0gW11zdHJpbmd7ZGVmfQotIAl9Ci0rCi0rCWlmIGZpbHRlcmVkIHsKLSsJCXJldHVybiBhcHBlbmQoY29tcGlsZXJbMDoxXSwgZmlsdGVyQ29tcGlsZXJGbGFncyhjb21waWxlclsxOl0pLi4uKQotKwl9Ci0rCi0gCXJldHVybiBjb21waWxlcgotIH0KLSAKLUBAIC0yNDI5LDcgKzI0NTEsNyBAQCBmdW5jIGVudkxpc3Qoa2V5LCBkZWYgc3RyaW5nKSBbXXN0cmluZyB7Ci0gfQotIAotIC8vIENGbGFncyByZXR1cm5zIHRoZSBmbGFncyB0byB1c2Ugd2hlbiBpbnZva2luZyB0aGUgQywgQysrIG9yIEZvcnRyYW4gY29tcGlsZXJzLCBvciBjZ28uCi0tZnVuYyAoYiAqQnVpbGRlcikgQ0ZsYWdzKHAgKmxvYWQuUGFja2FnZSkgKGNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MgW11zdHJpbmcsIGVyciBlcnJvcikgewotK2Z1bmMgKGIgKkJ1aWxkZXIpIENGbGFncyhwICpsb2FkLlBhY2thZ2UsIGZpbHRlcmVkIGJvb2wpIChjcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKLSAJZGVmYXVsdHMgOj0gIi1nIC1PMiIKLSAKLSAJaWYgY3BwZmxhZ3MsIGVyciA9IGJ1aWxkRmxhZ3MoIkNQUEZMQUdTIiwgIiIsIHAuQ2dvQ1BQRkxBR1MsIGNoZWNrQ29tcGlsZXJGbGFncyk7IGVyciAhPSBuaWwgewotQEAgLTI0NDgsNiArMjQ3MCwxNCBAQCBmdW5jIChiICpCdWlsZGVyKSBDRmxhZ3MocCAqbG9hZC5QYWNrYWdlKSAoY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbAotIAkJcmV0dXJuCi0gCX0KLSAKLSsJaWYgZmlsdGVyZWQgewotKwkJY3BwZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGNwcGZsYWdzKQotKwkJY2ZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhjZmxhZ3MpCi0rCQljeHhmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoY3h4ZmxhZ3MpCi0rCQlmZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGZmbGFncykKLSsJCWxkZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGxkZmxhZ3MpCi0rCX0KLSsKLSAJcmV0dXJuCi0gfQotIAotQEAgLTI0NjIsNyArMjQ5Miw3IEBAIHZhciBjZ29SZSA9IGxhenlyZWdleHAuTmV3KGBbL1xcOl1gKQotIAotIGZ1bmMgKGIgKkJ1aWxkZXIpIGNnbyhhICpBY3Rpb24sIGNnb0V4ZSwgb2JqZGlyIHN0cmluZywgcGNDRkxBR1MsIHBjTERGTEFHUywgY2dvZmlsZXMsIGdjY2ZpbGVzLCBneHhmaWxlcywgbWZpbGVzLCBmZmlsZXMgW11zdHJpbmcpIChvdXRHbywgb3V0T2JqIFtdc3RyaW5nLCBlcnIgZXJyb3IpIHsKLSAJcCA6PSBhLlBhY2thZ2UKLS0JY2dvQ1BQRkxBR1MsIGNnb0NGTEFHUywgY2dvQ1hYRkxBR1MsIGNnb0ZGTEFHUywgY2dvTERGTEFHUywgZXJyIDo9IGIuQ0ZsYWdzKHApCi0rCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBjZ29GRkxBR1MsIGNnb0xERkxBR1MsIGVyciA6PSBiLkNGbGFncyhwLCBmYWxzZSkKLSAJaWYgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4gbmlsLCBuaWwsIGVycgotIAl9Ci1AQCAtMjgyMSw3ICsyODUxLDcgQEAgZnVuYyAoYiAqQnVpbGRlcikgc3dpZ0ludFNpemUob2JqZGlyIHN0cmluZykgKGludHNpemUgc3RyaW5nLCBlcnIgZXJyb3IpIHsKLSAKLSAvLyBSdW4gU1dJRyBvbiBvbmUgU1dJRyBpbnB1dCBmaWxlLgotIGZ1bmMgKGIgKkJ1aWxkZXIpIHN3aWdPbmUoYSAqQWN0aW9uLCBwICpsb2FkLlBhY2thZ2UsIGZpbGUsIG9iamRpciBzdHJpbmcsIHBjQ0ZMQUdTIFtdc3RyaW5nLCBjeHggYm9vbCwgaW50Z29zaXplIHN0cmluZykgKG91dEdvLCBvdXRDIHN0cmluZywgZXJyIGVycm9yKSB7Ci0tCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBfLCBfLCBlcnIgOj0gYi5DRmxhZ3MocCkKLSsJY2dvQ1BQRkxBR1MsIGNnb0NGTEFHUywgY2dvQ1hYRkxBR1MsIF8sIF8sIGVyciA6PSBiLkNGbGFncyhwLCBmYWxzZSkKLSAJaWYgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4gIiIsICIiLCBlcnIKLSAJfQotLS0gCi0yLjE3LjEgKEFwcGxlIEdpdC0xMTIpCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDMtYWxsb3ctR09UT09MRElSLXRvLWJlLW92ZXJyaWRkZW4taW4tdGhlLWVudmlyb25tZW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5YWEwMTE5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1Gcm9tIDI4YWRhODg5NmI3NmQ2MjAyNDBiYWZjMjJhYTM5NTA3MWQ2MDE0ODIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4IEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMyBPY3QgMjAxOSAyMToxNTozNyArMDQzMAotU3ViamVjdDogW1BBVENIIDMvOV0gY21kL2dvOiBBbGxvdyBHT1RPT0xESVIgdG8gYmUgb3ZlcnJpZGRlbiBpbiB0aGUgZW52aXJvbm1lbnQKLQotdG8gYWxsb3cgZm9yIHNwbGl0IGhvc3QvdGFyZ2V0IGJ1aWxkIHJvb3RzCi0KLUFkYXB0ZWQgdG8gR28gMS4xMyBmcm9tIHBhdGNoZXMgb3JpZ2luYWxseSBzdWJtaXR0ZWQgdG8KLXRoZSBtZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28gdHJlZSBieQotTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4uCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBKIEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotLS0tCi0gc3JjL2NtZC9kaXN0L2J1aWxkLmdvICAgICAgICAgIHwgNCArKystCi0gc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvIHwgNiArKysrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZGlzdC9idWlsZC5nbyBiL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotaW5kZXggOWU1MDMxMS4uNjgzY2E2ZiAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotKysrIGIvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCi1AQCAtMjQ0LDcgKzI0NCw5IEBAIGZ1bmMgeGluaXQoKSB7Ci0gCXdvcmtkaXIgPSB4d29ya2RpcigpCi0gCXhhdGV4aXQocm13b3JrZGlyKQotIAotLQl0b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sLyVzXyVzIiwgZ29yb290LCBnb2hvc3RvcywgZ29ob3N0YXJjaCkKLSsJaWYgdG9vbGRpciA9IG9zLkdldGVudigiR09UT09MRElSIik7IHRvb2xkaXIgPT0gIiIgewotKwkJdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCi0rCX0KLSB9Ci0gCi0gLy8gY29tcGlsZXJFbnYgcmV0dXJucyBhIG1hcCBmcm9tICJnb29zL2dvYXJjaCIgdG8gdGhlCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCi1pbmRleCBhMzI3N2E2Li5kYjk2MzUwIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9jZmcvY2ZnLmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KLUBAIC02MCw3ICs2MCwxMSBAQCBmdW5jIGRlZmF1bHRDb250ZXh0KCkgYnVpbGQuQ29udGV4dCB7Ci0gCQkvLyB2YXJpYWJsZXMuIFRoaXMgbWF0Y2hlcyB0aGUgaW5pdGlhbGl6YXRpb24gb2YgVG9vbERpciBpbgotIAkJLy8gZ28vYnVpbGQsIGV4Y2VwdCBmb3IgdXNpbmcgY3R4dC5HT1JPT1QgcmF0aGVyIHRoYW4KLSAJCS8vIHJ1bnRpbWUuR09ST09ULgotLQkJYnVpbGQuVG9vbERpciA9IGZpbGVwYXRoLkpvaW4oY3R4dC5HT1JPT1QsICJwa2cvdG9vbC8iK3J1bnRpbWUuR09PUysiXyIrcnVudGltZS5HT0FSQ0gpCi0rCQlpZiBzIDo9IG9zLkdldGVudigiR09UT09MRElSIik7IHMgIT0gIiIgewotKwkJCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5DbGVhbihzKQotKwkJfSBlbHNlIHsKLSsJCQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguSm9pbihjdHh0LkdPUk9PVCwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKLSsJCX0KLSAJfQotIAotIAljdHh0LkdPUEFUSCA9IGVudk9yKCJHT1BBVEgiLCBjdHh0LkdPUEFUSCkKLS0tIAotMi4xNy4xIChBcHBsZSBHaXQtMTEyKQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDQtbGQtYWRkLXNvbmFtZS10by1zaGFyZWFibGUtb2JqZWN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MDc2M2FkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwNC1sZC1hZGQtc29uYW1lLXRvLXNoYXJlYWJsZS1vYmplY3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTAgKzAsMCBAQAotRnJvbSBiZjVjZjUzMDFhZTU5MTQ0OTg0NTRjODcyOTNkMWRmMmUxZDg0ODlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MTY6MzIgKzA0MzAKLVN1YmplY3Q6IFtQQVRDSCA0LzldIGxkOiBhZGQgc29uYW1lIHRvIHNoYXJlYWJsZSBvYmplY3RzCi0KLXNvIHRoYXQgT0UncyBzaGFyZWQgbGlicmFyeSBkZXBlbmRlbmN5IGhhbmRsaW5nCi1jYW4gZmluZCB0aGVtLgotCi1BZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCi10aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKLU1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28gfCAzICsrKwotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbGQvbGliLmdvCi1pbmRleCAzZmEyNThkLi5mOTZmYjAyIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbwotKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbwotQEAgLTEyMTUsNiArMTIxNSw3IEBAIGZ1bmMgKGN0eHQgKkxpbmspIGhvc3RsaW5rKCkgewotIAkJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItV2wsLXoscmVscm8iKQotIAkJCX0KLSAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKLSsJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsIGZtdC5TcHJpbnRmKCItV2wsLXNvbmFtZSwlcyIsIGZpbGVwYXRoLkJhc2UoKmZsYWdPdXRmaWxlKSkpCi0gCQkJaWYgY3R4dC5IZWFkVHlwZSAhPSBvYmphYmkuSHdpbmRvd3MgewotIAkJCQkvLyBQYXNzIC16IG5vZGVsZXRlIHRvIG1hcmsgdGhlIHNoYXJlZCBsaWJyYXJ5IGFzCi0gCQkJCS8vIG5vbi1jbG9zZWFibGU6IGEgZGxjbG9zZSB3aWxsIGRvIG5vdGhpbmcuCi1AQCAtMTIyNiw2ICsxMjI3LDcgQEAgZnVuYyAoY3R4dCAqTGluaykgaG9zdGxpbmsoKSB7Ci0gCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKLSAJCX0KLSAJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQotKwkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQotIAljYXNlIEJ1aWxkTW9kZVBsdWdpbjoKLSAJCWlmIGN0eHQuSGVhZFR5cGUgPT0gb2JqYWJpLkhkYXJ3aW4gewotIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1keW5hbWljbGliIikKLUBAIC0xMjM0LDYgKzEyMzYsNyBAQCBmdW5jIChjdHh0ICpMaW5rKSBob3N0bGluaygpIHsKLSAJCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKLSAJCQl9Ci0gCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLXNoYXJlZCIpCi0rCQkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQotIAkJfQotIAl9Ci0gCi0tLSAKLTIuMTcuMSAoQXBwbGUgR2l0LTExMikKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGYyYTQ2Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUZyb20gZjA1ZWYzZGVkNTJiOTg1MzdjMTBlZmQwYjE1Y2Q5NjEyNDcxNTI0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE3OjE2ICswNDMwCi1TdWJqZWN0OiBbUEFUQ0ggNS85XSBtYWtlLmJhc2g6IG92ZXJyaWRlIENDIHdoZW4gYnVpbGRpbmcgZGlzdCBhbmQKLSBnb19ib290c3RyYXAKLQotZm9yIGhhbmRsaW5nIE9FIGNyb3NzLWNhbmFkaWFuIGJ1aWxkcy4KLQotQWRhcHRlZCB0byBHbyAxLjEzIGZyb20gcGF0Y2hlcyBvcmlnaW5hbGx5IHN1Ym1pdHRlZCB0bwotdGhlIG1ldGEvcmVjaXBlcy1kZXZ0b29scy9nbyB0cmVlIGJ5Ci1NYXR0IE1hZGlzb24gPG1hdHRAbWFkaXNvbi5zeXN0ZW1zPi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvbWFrZS5iYXNoIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9tYWtlLmJhc2ggYi9zcmMvbWFrZS5iYXNoCi1pbmRleCA5MmQxNDgxLi4wYzI4MjJmIDEwMDc1NQotLS0tIGEvc3JjL21ha2UuYmFzaAotKysrIGIvc3JjL21ha2UuYmFzaAotQEAgLTE3Nyw3ICsxNzcsNyBAQCBpZiBbICIkR09ST09UX0JPT1RTVFJBUCIgPSAiJEdPUk9PVCIgXTsgdGhlbgotIAlleGl0IDEKLSBmaQotIHJtIC1mIGNtZC9kaXN0L2Rpc3QKLS1HT1JPT1Q9IiRHT1JPT1RfQk9PVFNUUkFQIiBHT09TPSIiIEdPQVJDSD0iIiBHTzExMU1PRFVMRT1vZmYgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0Ci0rQ0M9IiR7QlVJTERfQ0M6LSR7Q0N9fSIgR09ST09UPSIkR09ST09UX0JPT1RTVFJBUCIgR09PUz0iIiBHT0FSQ0g9IiIgR08xMTFNT0RVTEU9b2ZmICIkR09ST09UX0JPT1RTVFJBUC9iaW4vZ28iIGJ1aWxkIC1vIGNtZC9kaXN0L2Rpc3QgLi9jbWQvZGlzdAotIAotICMgLWUgZG9lc24ndCBwcm9wYWdhdGUgb3V0IG9mIGV2YWwsIHNvIGNoZWNrIHN1Y2Nlc3MgYnkgaGFuZC4KLSBldmFsICQoLi9jbWQvZGlzdC9kaXN0IGVudiAtcCB8fCBlY2hvIEZBSUw9dHJ1ZSkKLUBAIC0yMDgsNyArMjA4LDcgQEAgZmkKLSAjIFJ1biBkaXN0IGJvb3RzdHJhcCB0byBjb21wbGV0ZSBtYWtlLmJhc2guCi0gIyBCb290c3RyYXAgaW5zdGFsbHMgYSBwcm9wZXIgY21kL2Rpc3QsIGJ1aWx0IHdpdGggdGhlIG5ldyB0b29sY2hhaW4uCi0gIyBUaHJvdyBvdXJzLCBidWlsdCB3aXRoIEdvIDEuNCwgYXdheSBhZnRlciBib290c3RyYXAuCi0tLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJHZmbGFnICRHT19ESVNURkxBR1MgIiRAIgotK0NDPSIke0JVSUxEX0NDOi0ke0NDfX0iIC4vY21kL2Rpc3QvZGlzdCBib290c3RyYXAgJGJ1aWxkYWxsICR2ZmxhZyAkR09fRElTVEZMQUdTICIkQCIKLSBybSAtZiAuL2NtZC9kaXN0L2Rpc3QKLSAKLSAjIERPIE5PVCBBREQgQU5ZIE5FVyBDT0RFIEhFUkUuCi0tLSAKLTIuMTcuMSAoQXBwbGUgR2l0LTExMikKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzU0YWFjYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDYtY21kLWRpc3Qtc2VwYXJhdGUtaG9zdC1hbmQtdGFyZ2V0LWJ1aWxkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3OSArMCwwIEBACi1Gcm9tIDEwNzM1YmI4NGRmMTdiYTY1N2Y3NjgzNWY0ODNjZDg1NDNhODc5YzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4IEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMyBPY3QgMjAxOSAyMToxODoxMiArMDQzMAotU3ViamVjdDogW1BBVENIIDYvOV0gY21kL2Rpc3Q6IHNlcGFyYXRlIGhvc3QgYW5kIHRhcmdldCBidWlsZHMKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotQ2hhbmdlIHRoZSBkaXN0IHRvb2wgdG8gYWxsb3cgZm9yIE9FLXN0eWxlIGNyb3NzLQotYW5kIGNyb3NzLWNhbmFkaWFuIGJ1aWxkczoKLQotIC0gY29tbWFuZCBmbGFncyAtLWhvc3Qtb25seSBhbmQgLS10YXJnZXQgb25seSBhcmUgYWRkZWQ7Ci0gICBpZiBvbmUgaXMgcHJlc2VudCwgdGhlIG90aGVyIGNoYW5nZXMgbWVudGlvbmVkIGJlbG93Ci0gICB0YWtlIGVmZmVjdCwgYW5kIGFyZ3VtZW50cyBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgb24KLSAgIHRoZSBjb21tYW5kIGxpbmUgdG8gZW51bWVyYXRlIHRoZSBwYWNrYWdlKHMpIHRvIGJlCi0gICBidWlsdC4KLQotIC0gZm9yIE9FIGNyb3NzIGJ1aWxkcywgZ29fYm9vdHN0cmFwIGlzIGFsd2F5cyBidWlsdCBmb3IKLSAgIHRoZSBjdXJyZW50IGJ1aWxkIGhvc3QsIGFuZCBpcyBtb3ZlZCwgYWxvbmcgd2l0aCB0aGUgc3VwcG9ydGluZwotICAgdG9vbGNoYWluIChhc20sIGNvbXBpbGUsIGV0Yy4pIHRvIGEgc2VwYXJhdGUgJ25hdGl2ZV9uYXRpdmUnCi0gICBkaXJlY3RvcnkgdW5kZXIgR09ST09UL3BrZy90b29sLgotCi0gLSBnb19ib290c3RyYXAgaXMgbm90IGF1dG9tYXRpY2FsbHkgcmVtb3ZlZCBhZnRlciB0aGUgYnVpbGQsCi0gICBzbyBpdCBjYW4gYmUgcmV1c2VkIGxhdGVyIChlLmcuLCBidWlsZGluZyBib3RoIHN0YXRpYyBhbmQKLSAgIHNoYXJlZCBydW50aW1lKS4KLQotTm90ZSB0aGF0IGZvciAtLWhvc3Qtb25seSBidWlsZHMsIGl0IHdvdWxkIGJlIG5pY2UgdG8gc3BlY2lmeQotanVzdCB0aGUgImNtZCIgcGFja2FnZSB0byBidWlsZCBvbmx5IHRoZSBnbyBjb21tYW5kcy90b29scywKLXRoZSBzdGFsZW5lc3MgY2hlY2tzIGluIHRoZSBkaXN0IHRvb2wgd2lsbCBmYWlsIGlmIHRoZSAic3RkIgotbGlicmFyeSBoYXMgbm90IGFsc28gYmVlbiBidWlsdC4gIFNvIGhvc3Qtb25seSBidWlsZHMgaGF2ZSB0bwotYnVpbGQgZXZlcnl0aGluZyBhbnl3YXkuCi0KLUFkYXB0ZWQgdG8gR28gMS4xMyBmcm9tIHBhdGNoZXMgb3JpZ2luYWxseSBzdWJtaXR0ZWQgdG8KLXRoZSBtZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28gdHJlZSBieQotTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4uCi0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBKIEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotLS0tCi0gc3JjL2NtZC9kaXN0L2J1aWxkLmdvIHwgMTU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxMTIgaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2Rpc3QvYnVpbGQuZ28gYi9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLWluZGV4IDY4M2NhNmYuLjBhZDA4MmIgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2Rpc3QvYnVpbGQuZ28KLSsrKyBiL3NyYy9jbWQvZGlzdC9idWlsZC5nbwotQEAgLTQxLDYgKzQxLDcgQEAgdmFyICgKLSAJZ29sZGZsYWdzICAgICAgICBzdHJpbmcKLSAJd29ya2RpciAgICAgICAgICBzdHJpbmcKLSAJdG9vbGRpciAgICAgICAgICBzdHJpbmcKLSsJYnVpbGRfdG9vbGRpciAgICBzdHJpbmcKLSAJb2xkZ29vcyAgICAgICAgICBzdHJpbmcKLSAJb2xkZ29hcmNoICAgICAgICBzdHJpbmcKLSAJZXhlICAgICAgICAgICAgICBzdHJpbmcKLUBAIC01Myw2ICs1NCw3IEBAIHZhciAoCi0gCi0gCXJlYnVpbGRhbGwgICBib29sCi0gCWRlZmF1bHRjbGFuZyBib29sCi0rCWNyb3NzQnVpbGQgICBib29sCi0gCi0gCXZmbGFnIGludCAvLyB2ZXJib3NpdHkKLSApCi1AQCAtMjQ3LDYgKzI0OSw4IEBAIGZ1bmMgeGluaXQoKSB7Ci0gCWlmIHRvb2xkaXIgPSBvcy5HZXRlbnYoIkdPVE9PTERJUiIpOyB0b29sZGlyID09ICIiIHsKLSAJCXRvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQotIAl9Ci0rCi0rCWJ1aWxkX3Rvb2xkaXIgPSBwYXRoZigiJXMvcGtnL3Rvb2wvbmF0aXZlX25hdGl2ZSIsIGdvcm9vdCkKLSB9Ci0gCi0gLy8gY29tcGlsZXJFbnYgcmV0dXJucyBhIG1hcCBmcm9tICJnb29zL2dvYXJjaCIgdG8gdGhlCi1AQCAtNDc4LDggKzQ4MiwxMCBAQCBmdW5jIHNldHVwKCkgewotIAlwIDo9IHBhdGhmKCIlcy9wa2cvJXNfJXMiLCBnb3Jvb3QsIGdvaG9zdG9zLCBnb2hvc3RhcmNoKQotIAlpZiByZWJ1aWxkYWxsIHsKLSAJCXhyZW1vdmVhbGwocCkKLSsJCXhyZW1vdmVhbGwoYnVpbGRfdG9vbGRpcikKLSAJfQotIAl4bWtkaXJhbGwocCkKLSsJeG1rZGlyYWxsKGJ1aWxkX3Rvb2xkaXIpCi0gCi0gCWlmIGdvb3MgIT0gZ29ob3N0b3MgfHwgZ29hcmNoICE9IGdvaG9zdGFyY2ggewotIAkJcCA6PSBwYXRoZigiJXMvcGtnLyVzXyVzIiwgZ29yb290LCBnb29zLCBnb2FyY2gpCi1AQCAtMTIwNywxMiArMTIxMywyOSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKLSAKLSAJdmFyIG5vQmFubmVyIGJvb2wKLSAJdmFyIGRlYnVnIGJvb2wKLSsJdmFyIGhvc3RPbmx5IGJvb2wKLSsJdmFyIHRhcmdldE9ubHkgYm9vbAotKwl2YXIgdG9CdWlsZCA9IFtdc3RyaW5neyJzdGQiLCAiY21kIn0KLSsKLSAJZmxhZy5Cb29sVmFyKCZyZWJ1aWxkYWxsLCAiYSIsIHJlYnVpbGRhbGwsICJyZWJ1aWxkIGFsbCIpCi0gCWZsYWcuQm9vbFZhcigmZGVidWcsICJkIiwgZGVidWcsICJlbmFibGUgZGVidWdnaW5nIG9mIGJvb3RzdHJhcCBwcm9jZXNzIikKLSAJZmxhZy5Cb29sVmFyKCZub0Jhbm5lciwgIm5vLWJhbm5lciIsIG5vQmFubmVyLCAiZG8gbm90IHByaW50IGJhbm5lciIpCi0rCWZsYWcuQm9vbFZhcigmaG9zdE9ubHksICJob3N0LW9ubHkiLCBob3N0T25seSwgImJ1aWxkIG9ubHkgaG9zdCBiaW5hcmllcywgbm90IHRhcmdldCIpCi0rCWZsYWcuQm9vbFZhcigmdGFyZ2V0T25seSwgInRhcmdldC1vbmx5IiwgdGFyZ2V0T25seSwgImJ1aWxkIG9ubHkgdGFyZ2V0IGJpbmFyaWVzLCBub3QgaG9zdCIpCi0gCi0tCXhmbGFncGFyc2UoMCkKLSsJeGZsYWdwYXJzZSgtMSkKLSAKLSsJaWYgaG9zdE9ubHkgJiYgdGFyZ2V0T25seSB7Ci0rCQlmYXRhbGYoInNwZWNpZnkgb25seSBvbmUgb2YgLS1ob3N0LW9ubHkgb3IgLS10YXJnZXQtb25seVxuIikKLSsJfQotKwljcm9zc0J1aWxkID0gaG9zdE9ubHkgfHwgdGFyZ2V0T25seQotKwlpZiBmbGFnLk5BcmcoKSA+IDAgewotKwkJaWYgY3Jvc3NCdWlsZCB7Ci0rCQkJdG9CdWlsZCA9IGZsYWcuQXJncygpCi0rCQl9IGVsc2UgewotKwkJCWZhdGFsZigicGFja2FnZSBuYW1lcyBub3QgcGVybWl0dGVkIHdpdGhvdXQgLS1ob3N0LW9ubHkgb3IgLS10YXJnZXQtb25seVxuIikKLSsJCX0KLSsJfQotIAkvLyBTZXQgR09QQVRIIHRvIGFuIGludGVybmFsIGRpcmVjdG9yeS4gV2Ugc2hvdWxkbid0IGFjdHVhbGx5Ci0gCS8vIG5lZWQgdG8gc3RvcmUgZmlsZXMgaGVyZSwgc2luY2UgdGhlIHRvb2xjaGFpbiB3b24ndAotIAkvLyBkZXBlbmQgb24gbW9kdWxlcyBvdXRzaWRlIG9mIHZlbmRvciBkaXJlY3RvcmllcywgYnV0IGlmCi1AQCAtMTI2Niw4ICsxMjg5LDEzIEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgewotIAkJeHByaW50ZigiXG4iKQotIAl9Ci0gCi0tCWdvZ2NmbGFncyA9IG9zLkdldGVudigiR09fR0NGTEFHUyIpIC8vIHdlIHdlcmUgdXNpbmcgJEJPT1RfR09fR0NGTEFHUyB1bnRpbCBub3cKLS0JZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19MREZMQUdTIHVudGlsIG5vdwotKwkvLyBGb3Igc3BsaXQgaG9zdC90YXJnZXQgY3Jvc3MvY3Jvc3MtY2FuYWRpYW4gYnVpbGRzLCB3ZSBkb24ndAotKwkvLyB3YW50IHRvIGJlIHNldHRpbmcgdGhlc2UgZmxhZ3MgdW50aWwgYWZ0ZXIgd2UgaGF2ZSBjb21waWxlZAotKwkvLyB0aGUgdG9vbGNoYWluIHRoYXQgcnVucyBvbiB0aGUgYnVpbGQgaG9zdC4KLSsJaWYgIWNyb3NzQnVpbGQgewotKwkJZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19HQ0ZMQUdTIHVudGlsIG5vdwotKwkJZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19MREZMQUdTIHVudGlsIG5vdwotKwl9Ci0gCWdvQm9vdHN0cmFwIDo9IHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCB0b29sZGlyKQotIAljbWRHbyA6PSBwYXRoZigiJXMvZ28iLCBnb2JpbikKLSAJaWYgZGVidWcgewotQEAgLTEyOTYsNyArMTMyNCwxMSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKLSAJCXhwcmludGYoIlxuIikKLSAJfQotIAl4cHJpbnRmKCJCdWlsZGluZyBHbyB0b29sY2hhaW4yIHVzaW5nIGdvX2Jvb3RzdHJhcCBhbmQgR28gdG9vbGNoYWluMS5cbiIpCi0tCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCi0rCWlmIGNyb3NzQnVpbGQgewotKwkJb3MuU2V0ZW52KCJDQyIsIGRlZmF1bHRjY1siIl0pCi0rCX0gZWxzZSB7Ci0rCQlvcy5TZXRlbnYoIkNDIiwgY29tcGlsZXJFbnZMb29rdXAoZGVmYXVsdGNjLCBnb29zLCBnb2FyY2gpKQotKwl9Ci0gCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgYXBwZW5kKFtdc3RyaW5neyItaSJ9LCB0b29sY2hhaW4uLi4pLi4uKQotIAlpZiBkZWJ1ZyB7Ci0gCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCAiLVY9ZnVsbCIpCi1AQCAtMTMzMyw1MCArMTM2NSw4NCBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKLSAJfQotIAljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKLSAKLS0JaWYgZ29vcyA9PSBvbGRnb29zICYmIGdvYXJjaCA9PSBvbGRnb2FyY2ggewotLQkJLy8gQ29tbW9uIGNhc2UgLSBub3Qgc2V0dGluZyB1cCBmb3IgY3Jvc3MtY29tcGlsYXRpb24uCi0tCQl0aW1lbG9nKCJidWlsZCIsICJ0b29sY2hhaW4iKQotLQkJaWYgdmZsYWcgPiAwIHsKLS0JCQl4cHJpbnRmKCJcbiIpCi0rCWlmIGNyb3NzQnVpbGQgewotKwkJZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikKLSsJCWdvbGRmbGFncyA9IG9zLkdldGVudigiR09fTERGTEFHUyIpCi0rCQl0b29sX2ZpbGVzLCBfIDo9IGZpbGVwYXRoLkdsb2IocGF0aGYoIiVzLyoiLCB0b29sZGlyKSkKLSsJCWZvciBfLCBmIDo9IHJhbmdlIHRvb2xfZmlsZXMgewotKwkJCWNvcHlmaWxlKHBhdGhmKCIlcy8lcyIsIGJ1aWxkX3Rvb2xkaXIsIGZpbGVwYXRoLkJhc2UoZikpLCBmLCB3cml0ZUV4ZWMpCi0rCQkJeHJlbW92ZShmKQotKwkJfQotKwkJb3MuU2V0ZW52KCJHT1RPT0xESVIiLCBidWlsZF90b29sZGlyKQotKwkJZ29Cb290c3RyYXAgPSBwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgYnVpbGRfdG9vbGRpcikKLSsJCWlmIGhvc3RPbmx5IHsKLSsJCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCQl4cHJpbnRmKCJCdWlsZGluZyAlcyBmb3IgaG9zdCwgJXMvJXMuXG4iLCBzdHJpbmdzLkpvaW4odG9CdWlsZCwgIiwiKSwgZ29vcywgZ29hcmNoKQotKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKLSsJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQotKwkJCS8vIFNraXAgY21kR28gc3RhbGVuZXNzIGNoZWNrcyBoZXJlLCBzaW5jZSB3ZSBjYW4ndCBuZWNlc3NhcmlseSBydW4gdGhlIGNtZEdvIGJpbmFyeQotKwotKwkJCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQotKwkJCWlmIHZmbGFnID4gMCB7Ci0rCQkJCXhwcmludGYoIlxuIikKLSsJCQl9Ci0rCQl9IGVsc2UgaWYgdGFyZ2V0T25seSB7Ci0rCQkJZ29vcyA9IG9sZGdvb3MKLSsJCQlnb2FyY2ggPSBvbGRnb2FyY2gKLSsJCQlvcy5TZXRlbnYoIkdPT1MiLCBnb29zKQotKwkJCW9zLlNldGVudigiR09BUkNIIiwgZ29hcmNoKQotKwkJCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCi0rCQkJeHByaW50ZigiQnVpbGRpbmcgJXMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBzdHJpbmdzLkpvaW4odG9CdWlsZCwgIiwiKSwgZ29vcywgZ29hcmNoKQotKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgdG9CdWlsZC4uLikKLSsJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQotKwkJCS8vIFNraXAgY21kR28gc3RhbGVuZXNzIGNoZWNrcyBoZXJlLCBzaW5jZSB3ZSBjYW4ndCBydW4gdGhlIHRhcmdldCdzIGNtZEdvIGJpbmFyeQotIAkJfQotLQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKLSAJfSBlbHNlIHsKLS0JCS8vIEdPT1MvR09BUkNIIGRvZXMgbm90IG1hdGNoIEdPSE9TVE9TL0dPSE9TVEFSQ0guCi0tCQkvLyBGaW5pc2ggR09IT1NUT1MvR09IT1NUQVJDSCBpbnN0YWxsYXRpb24gYW5kIHRoZW4KLS0JCS8vIHJ1biBHT09TL0dPQVJDSCBpbnN0YWxsYXRpb24uCi0tCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCi0tCQlpZiB2ZmxhZyA+IDAgewotLQkJCXhwcmludGYoIlxuIikKLS0JCX0KLS0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgaG9zdCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0rCi0rCQlpZiBnb29zID09IG9sZGdvb3MgJiYgZ29hcmNoID09IG9sZGdvYXJjaCB7Ci0rCQkJLy8gQ29tbW9uIGNhc2UgLSBub3Qgc2V0dGluZyB1cCBmb3IgY3Jvc3MtY29tcGlsYXRpb24uCi0rCQkJdGltZWxvZygiYnVpbGQiLCAidG9vbGNoYWluIikKLSsJCQlpZiB2ZmxhZyA+IDAgewotKwkJCQl4cHJpbnRmKCJcbiIpCi0rCQkJfQotKwkJCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0rCQl9IGVsc2UgewotKwkJCS8vIEdPT1MvR09BUkNIIGRvZXMgbm90IG1hdGNoIEdPSE9TVE9TL0dPSE9TVEFSQ0guCi0rCQkJLy8gRmluaXNoIEdPSE9TVE9TL0dPSE9TVEFSQ0ggaW5zdGFsbGF0aW9uIGFuZCB0aGVuCi0rCQkJLy8gcnVuIEdPT1MvR09BUkNIIGluc3RhbGxhdGlvbi4KLSsJCQl0aW1lbG9nKCJidWlsZCIsICJob3N0IHRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIGhvc3QsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQotKwkJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQotKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKLSsJCQljaGVja05vdFN0YWxlKGNtZEdvLCAic3RkIiwgImNtZCIpCi0rCi0rCQkJdGltZWxvZygiYnVpbGQiLCAidGFyZ2V0IHRvb2xjaGFpbiIpCi0rCQkJaWYgdmZsYWcgPiAwIHsKLSsJCQkJeHByaW50ZigiXG4iKQotKwkJCX0KLSsJCQlnb29zID0gb2xkZ29vcwotKwkJCWdvYXJjaCA9IG9sZGdvYXJjaAotKwkJCW9zLlNldGVudigiR09PUyIsIGdvb3MpCi0rCQkJb3MuU2V0ZW52KCJHT0FSQ0giLCBnb2FyY2gpCi0rCQkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLSsJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCi0rCQl9Ci0gCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKLSAJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKLSAJCWNoZWNrTm90U3RhbGUoY21kR28sICJzdGQiLCAiY21kIikKLSAKLS0JCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQotLQkJaWYgdmZsYWcgPiAwIHsKLS0JCQl4cHJpbnRmKCJcbiIpCi0rCQlpZiBkZWJ1ZyB7Ci0rCQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgIi1WPWZ1bGwiKQotKwkJCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9idWlsZGlkIiwgdG9vbGRpciksIHBhdGhmKCIlcy9wa2cvJXNfJXMvcnVudGltZS9pbnRlcm5hbC9zeXMuYSIsIGdvcm9vdCwgZ29vcywgZ29hcmNoKSkKLSsJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKLSsJCQljb3B5ZmlsZShwYXRoZigiJXMvY29tcGlsZTQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgd3JpdGVFeGVjKQotIAkJfQotLQkJZ29vcyA9IG9sZGdvb3MKLS0JCWdvYXJjaCA9IG9sZGdvYXJjaAotLQkJb3MuU2V0ZW52KCJHT09TIiwgZ29vcykKLS0JCW9zLlNldGVudigiR09BUkNIIiwgZ29hcmNoKQotLQkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKLS0JCXhwcmludGYoIkJ1aWxkaW5nIHBhY2thZ2VzIGFuZCBjb21tYW5kcyBmb3IgdGFyZ2V0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKLS0JfQotLQl0YXJnZXRzIDo9IFtdc3RyaW5neyJzdGQiLCAiY21kIn0KLS0JaWYgZ29vcyA9PSAianMiICYmIGdvYXJjaCA9PSAid2FzbSIgewotLQkJLy8gU2tpcCB0aGUgY21kIHRvb2xzIGZvciBqcy93YXNtLiBUaGV5J3JlIG5vdCB1c2FibGUuCi0tCQl0YXJnZXRzID0gdGFyZ2V0c1s6MV0KLS0JfQotLQlnb0luc3RhbGwoZ29Cb290c3RyYXAsIHRhcmdldHMuLi4pCi0tCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIHRhcmdldHMuLi4pCi0tCWNoZWNrTm90U3RhbGUoY21kR28sIHRhcmdldHMuLi4pCi0tCWlmIGRlYnVnIHsKLS0JCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksICItVj1mdWxsIikKLS0JCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9idWlsZGlkIiwgdG9vbGRpciksIHBhdGhmKCIlcy9wa2cvJXNfJXMvcnVudGltZS9pbnRlcm5hbC9zeXMuYSIsIGdvcm9vdCwgZ29vcywgZ29hcmNoKSkKLS0JCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIGFwcGVuZCh0b29sY2hhaW4sICJydW50aW1lL2ludGVybmFsL3N5cyIpLi4uKQotLQkJY29weWZpbGUocGF0aGYoIiVzL2NvbXBpbGU0IiwgdG9vbGRpciksIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksIHdyaXRlRXhlYykKLSAJfQotIAotIAkvLyBDaGVjayB0aGF0IHRoZXJlIGFyZSBubyBuZXcgZmlsZXMgaW4gJEdPUk9PVC9iaW4gb3RoZXIgdGhhbgotQEAgLTEzOTMsOCArMTQ1OSwxMSBAQCBmdW5jIGNtZGJvb3RzdHJhcCgpIHsKLSAJCX0KLSAJfQotIAotLQkvLyBSZW1vdmUgZ29fYm9vdHN0cmFwIG5vdyB0aGF0IHdlJ3JlIGRvbmUuCi0tCXhyZW1vdmUocGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIHRvb2xkaXIpKQotKwkvLyBFeGNlcHQgdGhhdCBmb3Igc3BsaXQgaG9zdC90YXJnZXQgY3Jvc3MtYnVpbGRzLCB3ZSBuZWVkIHRvCi0rCS8vIGtlZXAgaXQuCi0rCWlmICFjcm9zc0J1aWxkIHsKLSsJCXhyZW1vdmUocGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIHRvb2xkaXIpKQotKwl9Ci0gCi0gCWlmIGdvb3MgPT0gImFuZHJvaWQiIHsKLSAJCS8vIE1ha2Ugc3VyZSB0aGUgZXhlYyB3cmFwcGVyIHdpbGwgc3luYyBhIGZyZXNoICRHT1JPT1QgdG8gdGhlIGRldmljZS4KLS0tIAotMi4xNy4xIChBcHBsZSBHaXQtMTEyKQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGUyMzJjNzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLUZyb20gOWJhNTA3ZTA3NmM3NDRmNGQzOTQ0MThlNGE4NDllNjhjZDQyNmE0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE4OjU2ICswNDMwCi1TdWJqZWN0OiBbUEFUQ0ggNy85XSBjbWQvZ286IG1ha2UgR09ST09UIHByZWNpb3VzIGJ5IGRlZmF1bHQKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotVGhlIGdvIGJ1aWxkIHRvb2wgbm9ybWFsbHkgcmVidWlsZHMgd2hhdGV2ZXIgaXQgZGV0ZWN0cyBpcwotc3RhbGUuICBUaGlzIGNhbiBiZSBhIHByb2JsZW0gd2hlbiBHT1JPT1QgaXMgaW50ZW5kZWQgdG8KLWJlIHJlYWQtb25seSBhbmQgdGhlIGdvIHJ1bnRpbWUgaGFzIGJlZW4gYnVpbHQgYXMgYSBzaGFyZWQKLWxpYnJhcnksIHNpbmNlIHdlIGRvbid0IHdhbnQgZXZlcnkgYXBwbGljYXRpb24gdG8gYmUgcmVidWlsZGluZwotdGhlIHNoYXJlZCBydW50aW1lIC0gcGFydGljdWxhcmx5IGluIGNyb3NzLWJ1aWxkL3BhY2thZ2luZwotc2V0dXBzLCBzaW5jZSB0aGF0IHdvdWxkIGxlYWQgdG8gJ2FiaSBtaXNtYXRjaCcgcnVudGltZSBlcnJvcnMuCi0KLVRoaXMgcGF0Y2ggcHJldmVudHMgdGhlIGluc3RhbGwgYW5kIGxpbmtzaGFyZWQgYWN0aW9ucyBmcm9tCi1pbnN0YWxsaW5nIHRvIEdPUk9PVCB1bmxlc3Mgb3ZlcnJpZGRlbiB3aXRoIHRoZSBHT1JPT1RfT1ZFUlJJREUKLWVudmlyb25tZW50IHZhcmlhYmxlLgotCi1BZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCi10aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKLU1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgotCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLS0tLQotIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28gfCAgMyArKysKLSBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28gIHwgIDYgKysrKysrCi0gc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gICB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYWN0aW9uLmdvCi1pbmRleCAzM2I3ODE4Li43NjE3YjRjIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbwotQEAgLTY2Miw2ICs2NjIsOSBAQCBmdW5jIChiICpCdWlsZGVyKSBhZGRUcmFuc2l0aXZlTGlua0RlcHMoYSwgYTEgKkFjdGlvbiwgc2hsaWIgc3RyaW5nKSB7Ci0gCQkJaWYgcDEgPT0gbmlsIHx8IHAxLlNobGliID09ICIiIHx8IGhhdmVTaGxpYltmaWxlcGF0aC5CYXNlKHAxLlNobGliKV0gewotIAkJCQljb250aW51ZQotIAkJCX0KLSsJCQlpZiBnb1Jvb3RQcmVjaW91cyAmJiAocDEuU3RhbmRhcmQgfHwgcDEuR29yb290KSB7Ci0rCQkJCWNvbnRpbnVlCi0rCQkJfQotIAkJCWhhdmVTaGxpYltmaWxlcGF0aC5CYXNlKHAxLlNobGliKV0gPSB0cnVlCi0gCQkJLy8gVE9ETyhyc2MpOiBUaGUgdXNlIG9mIE1vZGVJbnN0YWxsIGhlcmUgaXMgc3VzcGVjdCwgYnV0IGlmIHdlIG9ubHkgZG8gTW9kZUJ1aWxkLAotIAkJCS8vIHdlJ2xsIGVuZCB1cCBidWlsZGluZyBhbiBvdmVyYWxsIGxpYnJhcnkgb3IgZXhlY3V0YWJsZSB0aGF0IGRlcGVuZHMgYXQgcnVudGltZQotZGlmZiAtLWdpdCBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotaW5kZXggOTMwNWIyZC4uNjU2MDMxNyAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbwotKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi1AQCAtMTU1LDYgKzE1NSw4IEBAIFNlZSBhbHNvOiBnbyBpbnN0YWxsLCBnbyBnZXQsIGdvIGNsZWFuLgotIAotIGNvbnN0IGNvbmN1cnJlbnRHQ0JhY2tlbmRDb21waWxhdGlvbkVuYWJsZWRCeURlZmF1bHQgPSB0cnVlCi0gCi0rdmFyIGdvUm9vdFByZWNpb3VzIGJvb2wgPSB0cnVlCi0rCi0gZnVuYyBpbml0KCkgewotIAkvLyBicmVhayBpbml0IGN5Y2xlCi0gCUNtZEJ1aWxkLlJ1biA9IHJ1bkJ1aWxkCi1AQCAtMTY3LDYgKzE2OSwxMCBAQCBmdW5jIGluaXQoKSB7Ci0gCi0gCUFkZEJ1aWxkRmxhZ3MoQ21kQnVpbGQpCi0gCUFkZEJ1aWxkRmxhZ3MoQ21kSW5zdGFsbCkKLSsKLSsJaWYgeCA6PSBvcy5HZXRlbnYoIkdPUk9PVF9PVkVSUklERSIpOyB4ICE9ICIiIHsKLSsJCWdvUm9vdFByZWNpb3VzID0gZmFsc2UKLSsJfQotIH0KLSAKLSAvLyBOb3RlIHRoYXQgZmxhZ3MgY29uc3VsdGVkIGJ5IG90aGVyIHBhcnRzIG9mIHRoZSBjb2RlCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotaW5kZXggY2NlYmFmOC4uNTk0NTBkNyAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbwotQEAgLTQ1NSw2ICs0NTUsMjMgQEAgZnVuYyAoYiAqQnVpbGRlcikgYnVpbGQoYSAqQWN0aW9uKSAoZXJyIGVycm9yKSB7Ci0gCQlyZXR1cm4gZXJyb3JzLk5ldygiYmluYXJ5LW9ubHkgcGFja2FnZXMgYXJlIG5vIGxvbmdlciBzdXBwb3J0ZWQiKQotIAl9Ci0gCi0rCWlmIGdvUm9vdFByZWNpb3VzICYmIChhLlBhY2thZ2UuU3RhbmRhcmQgfHwgYS5QYWNrYWdlLkdvcm9vdCkgewotKwkJXywgZXJyIDo9IG9zLlN0YXQoYS5QYWNrYWdlLlRhcmdldCkKLSsJCWlmIGVyciA9PSBuaWwgewotKwkJCWEuYnVpbHQgPSBhLlBhY2thZ2UuVGFyZ2V0Ci0rCQkJYS5UYXJnZXQgPSBhLlBhY2thZ2UuVGFyZ2V0Ci0rCQkJYS5idWlsZElEID0gYi5maWxlSGFzaChhLlBhY2thZ2UuVGFyZ2V0KQotKwkJCWEuUGFja2FnZS5TdGFsZSA9IGZhbHNlCi0rCQkJYS5QYWNrYWdlLlN0YWxlUmVhc29uID0gIkdPUk9PVC1yZXNpZGVudCBwYWNrYWdlIgotKwkJCXJldHVybiBuaWwKLSsJCX0KLSsJCWEuUGFja2FnZS5TdGFsZSA9IHRydWUKLSsJCWEuUGFja2FnZS5TdGFsZVJlYXNvbiA9ICJtaXNzaW5nIG9yIGludmFsaWQgR09ST09ULXJlc2lkZW50IHBhY2thZ2UiCi0rCQlpZiBiLklzQ21kTGlzdCB7Ci0rCQkJcmV0dXJuIG5pbAotKwkJfQotKwl9Ci0rCi0gCWlmIGVyciA6PSBiLk1rZGlyKGEuT2JqZGlyKTsgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4gZXJyCi0gCX0KLUBAIC0xNDk5LDYgKzE1MTYsMTQgQEAgZnVuYyBCdWlsZEluc3RhbGxGdW5jKGIgKkJ1aWxkZXIsIGEgKkFjdGlvbikgKGVyciBlcnJvcikgewotIAkJcmV0dXJuIG5pbAotIAl9Ci0gCi0rCWlmIGdvUm9vdFByZWNpb3VzICYmIGEuUGFja2FnZSAhPSBuaWwgewotKwkJcCA6PSBhLlBhY2thZ2UKLSsJCWlmIHAuU3RhbmRhcmQgfHwgcC5Hb3Jvb3QgewotKwkJCWVyciA6PSBmbXQuRXJyb3JmKCJhdHRlbXB0aW5nIHRvIGluc3RhbGwgcGFja2FnZSAlcyBpbnRvIHJlYWQtb25seSBHT1JPT1QiLCBwLkltcG9ydFBhdGgpCi0rCQkJcmV0dXJuIGVycgotKwkJfQotKwl9Ci0rCi0gCWlmIGVyciA6PSBiLk1rZGlyKGEuT2JqZGlyKTsgZXJyICE9IG5pbCB7Ci0gCQlyZXR1cm4gZXJyCi0gCX0KLS0tIAotMi4xNy4xIChBcHBsZSBHaXQtMTEyKQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDgtdXNlLUdPQlVJTERNT0RFLXRvLXNldC1idWlsZG1vZGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjEzLzAwMDgtdXNlLUdPQlVJTERNT0RFLXRvLXNldC1idWlsZG1vZGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4ZTEzMmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA4LXVzZS1HT0JVSUxETU9ERS10by1zZXQtYnVpbGRtb2RlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSA5NzFiNTYyNjMzOWNlMGM0ZDU3Zjk3MjFjOWE4MWFmNTY2YzVhMDQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MTk6MjYgKzA0MzAKLVN1YmplY3Q6IFtQQVRDSCA4LzldIGNtZC9nbzogVXNlIEdPQlVJTERNT0RFIHRvIHNldCBidWlsZG1vZGUKLQotVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW3Vwc3RyZWFtIGNob29zZSBhbnRvaGVyIHNvbHV0aW9uOiBgMTdhMjU2YgotY21kL2dvOiAtYnVpbGRtb2RlPXBpZSBmb3IgYW5kcm9pZC9hcm0nXQotCi1XaGlsZSBidWlsZGluZyBnbyBpdHNlbGYsIHRoZSBnbyBidWlsZCBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydAotdG8gc2V0IGAtYnVpbGRtb2RlPXBpZScgZnJvbSBlbnZpcm9ubWVudC4KLQotQWRkIEdPQlVJTERNT0RFIHRvIHN1cHBvcnQgaXQgd2hpY2ggbWFrZSBQSUUgZXhlY3V0YWJsZXMgdGhlIGRlZmF1bHQKLWJ1aWxkIG1vZGUsIGFzIFBJRSBleGVjdXRhYmxlcyBhcmUgcmVxdWlyZWQgYXMgb2YgWW9jdG8KLQotUmVmZXJzOiBodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2ZvcnVtLyMhdG9waWMvZ29sYW5nLWRldi9nUkNlNVVSS2V3SQotCi1BZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCi10aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKLUhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+Ci0tLS0KLSBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28gfCA4ICsrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi1pbmRleCA2NTYwMzE3Li41ZjNhOTg4IDEwMDY0NAotLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCi0rKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KLUBAIC0yMzEsNyArMjMxLDEzIEBAIGZ1bmMgQWRkQnVpbGRGbGFncyhjbWQgKmJhc2UuQ29tbWFuZCkgewotIAotIAljbWQuRmxhZy5WYXIoJmxvYWQuQnVpbGRBc21mbGFncywgImFzbWZsYWdzIiwgIiIpCi0gCWNtZC5GbGFnLlZhcihidWlsZENvbXBpbGVye30sICJjb21waWxlciIsICIiKQotLQljbWQuRmxhZy5TdHJpbmdWYXIoJmNmZy5CdWlsZEJ1aWxkbW9kZSwgImJ1aWxkbW9kZSIsICJkZWZhdWx0IiwgIiIpCi0rCi0rCWlmIGJtIDo9IG9zLkdldGVudigiR09CVUlMRE1PREUiKTsgYm0gIT0gIiIgewotKwkJY21kLkZsYWcuU3RyaW5nVmFyKCZjZmcuQnVpbGRCdWlsZG1vZGUsICJidWlsZG1vZGUiLCBibSwgIiIpCi0rCX0gZWxzZSB7Ci0rCQljbWQuRmxhZy5TdHJpbmdWYXIoJmNmZy5CdWlsZEJ1aWxkbW9kZSwgImJ1aWxkbW9kZSIsICJkZWZhdWx0IiwgIiIpCi0rCX0KLSsKLSAJY21kLkZsYWcuVmFyKCZsb2FkLkJ1aWxkR2NmbGFncywgImdjZmxhZ3MiLCAiIikKLSAJY21kLkZsYWcuVmFyKCZsb2FkLkJ1aWxkR2NjZ29mbGFncywgImdjY2dvZmxhZ3MiLCAiIikKLSAJY21kLkZsYWcuU3RyaW5nVmFyKCZjZmcuQnVpbGRNb2QsICJtb2QiLCAiIiwgIiIpCi0tLSAKLTIuMTcuMSAoQXBwbGUgR2l0LTExMikKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA5LWxkLXJlcGxhY2UtZ2xpYmMtZHluYW1pYy1saW5rZXItd2l0aC1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xMy8wMDA5LWxkLXJlcGxhY2UtZ2xpYmMtZHluYW1pYy1saW5rZXItd2l0aC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YmIxMTA2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTMvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzNCArMCwwIEBACi1Gcm9tIDk3MzI1MWFlMGM2OWEzNTcyMWY2MTE1MzQ1ZDNmNTdiMjg0Nzk3OWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4IEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotRGF0ZTogV2VkLCAyMyBPY3QgMjAxOSAyMToyMDoxMyArMDQzMAotU3ViamVjdDogW1BBVENIIDkvOV0gbGQ6IHJlcGxhY2UgZ2xpYmMgZHluYW1pYyBsaW5rZXIgd2l0aCBtdXNsCi0KLVJld29yayBvZiBwYXRjaCBieSBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotZm9yIGdvIDEuMTAuICBTaG91bGQgYmUgYXBwbGllZCBjb25kaXRpb25hbGx5IG9uCi1tdXNsIGJlaW5nIHRoZSBzeXN0ZW0gQyBsaWJyYXJ5LgotCi1BZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCi10aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKLU1hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1JlYWwgZml4IHNob3VsZCBiZSBwb3J0YWJsZSBhY3Jvc3MgbGliY3NdCi0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBKIEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgotLS0tCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbyAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28gICAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbyAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvICAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28gfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbyAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbyAgfCAyICstCi0gc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28gICAgfCAyICstCi0gOCBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYW1kNjQvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbwotaW5kZXggMjM3NDFlYi4uOGU3NDU3NiAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28KLUBAIC02Miw3ICs2Miw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCVBFcmVsb2MxOiAgICAgICAgIHBlcmVsb2MxLAotIAkJVExTSUV0b0xFOiAgICAgICAgdGxzSUV0b0xFLAotIAotLQkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQtbGludXgteDg2LTY0LnNvLjIiLAotKwkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQtbXVzbC14ODYtNjQuc28uMSIsCi0gCQlGcmVlYnNkZHlubGQ6ICAgIi9saWJleGVjL2xkLWVsZi5zby4xIiwKLSAJCU9wZW5ic2RkeW5sZDogICAiL3Vzci9saWJleGVjL2xkLnNvIiwKLSAJCU5ldGJzZGR5bmxkOiAgICAiL2xpYmV4ZWMvbGQuZWxmX3NvIiwKLWRpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvCi1pbmRleCA0NWE0MDZlLi43MjRkM2UzIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvCi1AQCAtNTksNyArNTksNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKLSAJCVBFcmVsb2MxOiAgICAgICAgIHBlcmVsb2MxLAotIAotLQkJTGludXhkeW5sZDogICAgICIvbGliL2xkLWxpbnV4LnNvLjMiLCAvLyAyIGZvciBPQUJJLCAzIGZvciBFQUJJCi0rCQlMaW51eGR5bmxkOiAgICAgIi9saWIvbGQtbXVzbC1hcm1oZi5zby4xIiwKLSAJCUZyZWVic2RkeW5sZDogICAiL3Vzci9saWJleGVjL2xkLWVsZi5zby4xIiwKLSAJCU9wZW5ic2RkeW5sZDogICAiL3Vzci9saWJleGVjL2xkLnNvIiwKLSAJCU5ldGJzZGR5bmxkOiAgICAiL2xpYmV4ZWMvbGQuZWxmX3NvIiwKLWRpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbwotaW5kZXggN2M2NjYyMy4uZDhiMWRiMSAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm02NC9vYmouZ28KLUBAIC01Nyw3ICs1Nyw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCi0gCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICIvbGliL2xkLWxpbnV4LWFhcmNoNjQuc28uMSIsCi0rCQlMaW51eGR5bmxkOiAiL2xpYi9sZC1tdXNsLWFhcmNoNjQuc28uMSIsCi0gCi0gCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCi1pbmRleCAyMzFlMWZmLi42MzFkZDdhIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwcy9vYmouZ28KLUBAIC02MCw3ICs2MCw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCi0gCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICIvbGliL2xkLnNvLjEiLAotKwkJTGludXhkeW5sZDogIi9saWIvbGQtbXVzbC1taXBzbGUuc28uMSIsCi0gCi0gCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIlhYWCIsCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28gYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbwotaW5kZXggOTYwNDIwOC4uNWVmM2ZmYyAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9taXBzNjQvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbwotQEAgLTU5LDcgKzU5LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgewotIAkJR2VudGV4dDogICAgICAgICAgZ2VudGV4dCwKLSAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAotIAotLQkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQ2NC5zby4xIiwKLSsJCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkLW11c2wtbWlwczY0bGUuc28uMSIsCi0gCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCi0gCQlPcGVuYnNkZHlubGQ6ICAgIlhYWCIsCi0gCQlOZXRic2RkeW5sZDogICAgIlhYWCIsCi1kaWZmIC0tZ2l0IGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9wcGM2NC9vYmouZ28KLWluZGV4IDUxZDE3OTEuLmIxNWRhODUgMTAwNjQ0Ci0tLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvCi0rKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvcHBjNjQvb2JqLmdvCi1AQCAtNjMsNyArNjMsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlYY29mZnJlbG9jMTogICAgICB4Y29mZnJlbG9jMSwKLSAKLSAJCS8vIFRPRE8oYXVzdGluKTogQUJJIHYxIHVzZXMgL3Vzci9saWIvbGQuc28uMSwKLS0JCUxpbnV4ZHlubGQ6ICIvbGliNjQvbGQ2NC5zby4xIiwKLSsJCUxpbnV4ZHlubGQ6ICIvbGliNjQvbGQtbXVzbC1wb3dlcnBjNjRsZS5zby4xIiwKLSAKLSAJCUZyZWVic2RkeW5sZDogICAiWFhYIiwKLSAJCU9wZW5ic2RkeW5sZDogICAiWFhYIiwKLWRpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbwotaW5kZXggMzQ1NDQ3Ni4uNDJjYzM0NiAxMDA2NDQKLS0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9zMzkweC9vYmouZ28KLUBAIC01Nyw3ICs1Nyw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKLSAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCi0gCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKLSAKLS0JCUxpbnV4ZHlubGQ6ICIvbGliNjQvbGQ2NC5zby4xIiwKLSsJCUxpbnV4ZHlubGQ6ICIvbGliNjQvbGQtbXVzbC1zMzkweC5zby4xIiwKLSAKLSAJCS8vIG5vdCByZWxldmFudCBmb3IgczM5MHgKLSAJCUZyZWVic2RkeW5sZDogICAiWFhYIiwKLWRpZmYgLS1naXQgYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCi1pbmRleCBmMWZhZDIwLi5kMmNhMTBjIDEwMDY0NAotLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28KLSsrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC94ODYvb2JqLmdvCi1AQCAtNTgsNyArNTgsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7Ci0gCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKLSAJCVBFcmVsb2MxOiAgICAgICAgIHBlcmVsb2MxLAotIAotLQkJTGludXhkeW5sZDogICAiL2xpYi9sZC1saW51eC5zby4yIiwKLSsJCUxpbnV4ZHlubGQ6ICAgIi9saWIvbGQtbXVzbC1pMzg2LnNvLjEiLAotIAkJRnJlZWJzZGR5bmxkOiAiL3Vzci9saWJleGVjL2xkLWVsZi5zby4xIiwKLSAJCU9wZW5ic2RkeW5sZDogIi91c3IvbGliZXhlYy9sZC5zbyIsCi0gCQlOZXRic2RkeW5sZDogICIvdXNyL2xpYmV4ZWMvbGQuZWxmX3NvIiwKLS0tIAotMi4xNy4xIChBcHBsZSBHaXQtMTEyKQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmM1MjU5M2QKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LmluYwpAQCAtMCwwICsxLDIyIEBACityZXF1aXJlIGdvLWNvbW1vbi5pbmMKKworR09fQkFTRVZFUlNJT04gPSAiMS4xNCIKK0dPX01JTk9SID0gIi4xIgorUFYgLj0gIiR7R09fTUlOT1J9IgorRklMRVNFWFRSQVBBVEhTX3ByZXBlbmQgOj0gIiR7RklMRV9ESVJOQU1FfS9nby0ke0dPX0JBU0VWRVJTSU9OfToiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTVkNDk1MGVjYjdiMjZkMmM1ZTRlN2I0ZTBkZDc0NzA3IgorCitTUkNfVVJJICs9ICJcCisgICAgZmlsZTovLzAwMDEtYWxsb3ctQ0MtYW5kLUNYWC10by1oYXZlLW11bHRpcGxlLXdvcmRzLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMi1jbWQtZ28tbWFrZS1jb250ZW50LWJhc2VkLWhhc2gtZ2VuZXJhdGlvbi1sZXNzLXBlZGFuLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA1LW1ha2UuYmFzaC1vdmVycmlkZS1DQy13aGVuLWJ1aWxkaW5nLWRpc3QtYW5kLWdvX2Jvb3QucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwOC11c2UtR09CVUlMRE1PREUtdG8tc2V0LWJ1aWxkbW9kZS5wYXRjaCBcCisiCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIGZpbGU6Ly8wMDA5LWxkLXJlcGxhY2UtZ2xpYmMtZHluYW1pYy1saW5rZXItd2l0aC1tdXNsLnBhdGNoIgorCitTUkNfVVJJW21haW4uc2hhMjU2c3VtXSA9ICIyYWQyNTcyMTE1YjBkMWI0Y2I0YzEzOGU2YjNhMzFjZWU2Mjk0Y2I0OGFmNzVlZTg2YmVjM2RjYTA0NTA3Njc2IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDAxLWFsbG93LUNDLWFuZC1DWFgtdG8taGF2ZS1tdWx0aXBsZS13b3Jkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDQ3NjY0ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwMS1hbGxvdy1DQy1hbmQtQ1hYLXRvLWhhdmUtbXVsdGlwbGUtd29yZHMucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSA5ZTNkYzQ0Y2RmYTU4ZDk2NTA0ZDBhNzg5ZGM4MjYxN2RkNWJlZjU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MDE6MTMgKzA0MzAKK1N1YmplY3Q6IFtQQVRDSCAxLzldIGNtZC9nbzogQWxsb3cgQ0MgYW5kIENYWCB0byBoYXZlIG11bHRpcGxlIHdvcmRzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK0FkYXB0ZWQgdG8gR28gMS4xMyBmcm9tIHBhdGNoZXMgb3JpZ2luYWxseSBzdWJtaXR0ZWQgdG8KK3RoZSBtZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28gdHJlZSBieQorTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4uCisKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBKIEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgorCistLS0KKyBzcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28gfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCistLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvZW52Y21kL2Vudi5nbworQEAgLTEwMiwxMSArMTAyLDExIEBAIGZ1bmMgTWtFbnYoKSBbXWNmZy5FbnZWYXIgeworIAorIAljYyA6PSBjZmcuRGVmYXVsdENDKGNmZy5Hb29zLCBjZmcuR29hcmNoKQorIAlpZiBlbnYgOj0gc3RyaW5ncy5GaWVsZHMoY2ZnLkdldGVudigiQ0MiKSk7IGxlbihlbnYpID4gMCB7CistCQljYyA9IGVudlswXQorKwkJY2MgPSBzdHJpbmdzLkpvaW4oZW52LCAiICIpCisgCX0KKyAJY3h4IDo9IGNmZy5EZWZhdWx0Q1hYKGNmZy5Hb29zLCBjZmcuR29hcmNoKQorIAlpZiBlbnYgOj0gc3RyaW5ncy5GaWVsZHMoY2ZnLkdldGVudigiQ1hYIikpOyBsZW4oZW52KSA+IDAgeworLQkJY3h4ID0gZW52WzBdCisrCQljeHggPSBzdHJpbmdzLkpvaW4oZW52LCAiICIpCisgCX0KKyAJZW52ID0gYXBwZW5kKGVudiwgY2ZnLkVudlZhcntOYW1lOiAiQVIiLCBWYWx1ZTogZW52T3IoIkFSIiwgImFyIil9KQorIAllbnYgPSBhcHBlbmQoZW52LCBjZmcuRW52VmFye05hbWU6ICJDQyIsIFZhbHVlOiBjY30pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwMi1jbWQtZ28tbWFrZS1jb250ZW50LWJhc2VkLWhhc2gtZ2VuZXJhdGlvbi1sZXNzLXBlZGFuLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllODg1NjcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDItY21kLWdvLW1ha2UtY29udGVudC1iYXNlZC1oYXNoLWdlbmVyYXRpb24tbGVzcy1wZWRhbi5wYXRjaApAQCAtMCwwICsxLDIxOSBAQAorRnJvbSBhMTNhZTQ4NGU0MTEzOTA5NDUwNWQyODM0NDM3ZTkyNjJhNTMxNWY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MTQ6MjIgKzA0MzAKK1N1YmplY3Q6IFtQQVRDSCAyLzldIGNtZC9nbzogbWFrZSBjb250ZW50LWJhc2VkIGhhc2ggZ2VuZXJhdGlvbiBsZXNzIHBlZGFudGljCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK0dvIDEuMTAncyBidWlsZCB0b29sIG5vdyB1c2VzIGNvbnRlbnQtYmFzZWQgaGFzaGVzIHRvCitkZXRlcm1pbmUgd2hlbiBzb21ldGhpbmcgc2hvdWxkIGJlIGJ1aWx0IG9yIHJlLWJ1aWx0LgorVGhpcyBzYW1lIG1lY2hhbmlzbSBpcyB1c2VkIHRvIG1haW50YWluIGEgYnVpbHQtYXJ0aWZhY3QKK2NhY2hlIGZvciBzcGVlZGluZyB1cCBidWlsZHMuCisKK0hvd2V2ZXIsIHRoZSBoYXNoZXMgaXQgZ2VuZXJhdGVzIGluY2x1ZGUgaW5mb3JtYXRpb24gdGhhdAorZG9lc24ndCB3b3JrIHdlbGwgd2l0aCBPRSwgbm9yIHdpdGggdXNpbmcgYSBzaGFyZWQgcnVudGltZQorbGlicmFyeS4KKworRmlyc3QsIGl0IGVtYmVkcyBwYXRoIG5hbWVzIHRvIHNvdXJjZSBmaWxlcywgdW5sZXNzCitidWlsZGluZyB3aXRoaW4gR09ST09ULiAgVGhpcyBwcmV2ZW50cyB0aGUgYnVpbGRpbmcKK29mIGEgcGFja2FnZSBpbiBHT1BBVEggZm9yIGxhdGVyIHN0YWdpbmcgaW50byBHT1JPT1QuCisKK1RoaXMgcGF0Y2ggYWRkcyBzdXBwb3J0IGZvciB0aGUgZW52aXJvbm1lbnQgdmFyaWFibGUKK0dPUEFUSF9PTUlUX0lOX0FDVElPTklELiAgSWYgcHJlc2VudCwgcGF0aCBuYW1lCitlbWJlZGRpbmcgaXMgZGlzYWJsZWQuCisKK1NlY29uZCwgaWYgY2dvIGlzIGVuYWJsZWQsIHRoZSBidWlsZCBJRCBmb3IgY2dvLXJlbGF0ZWQKK3BhY2thZ2VzIHdpbGwgaW5jbHVkZSB0aGUgY3VycmVudCB2YWx1ZSBvZiB0aGUgZW52aXJvbm1lbnQKK3ZhcmlhYmxlcyBmb3IgaW52b2tpbmcgdGhlIGNvbXBpbGVyIChDQywgQ1hYLCBGQykgYW5kCithbnkgQ0dPX3h4RkxBR1MgdmFyaWFibGVzLiAgT25seSBpZiB0aGUgc2V0dGluZ3MgdXNlZAorZHVyaW5nIGEgY29tcGlsYXRpb24gZXhhY3RseSBtYXRjaCwgY2hhcmFjdGVyIGZvciBjaGFyYWN0ZXIsCit0aGUgdmFsdWVzIHVzZWQgZm9yIGNvbXBpbGluZyBydW50aW1lL2NnbyBvciBhbnkgb3RoZXIKK2Nnby1lbmFibGVkIHBhY2thZ2UgYmVpbmcgaW1wb3J0ZWQsIHdpbGwgdGhlIHRvb2wKK2RlY2lkZSB0aGF0IHRoZSBpbXBvcnRlZCBwYWNrYWdlIGlzIHVwLXRvLWRhdGUuCisKK1RoaXMgaXMgZG9uZSB0byBoZWxwIGVuc3VyZSBjb3JyZWN0bmVzcywgYnV0IGlzIG92ZXJseQorc2ltcGxpc3RpYyBhbmQgZWZmZWN0aXZlbHkgcHJldmVudHMgdGhlIHJldXNlIG9mIGJ1aWx0CithcnRpZmFjdHMgdGhhdCB1c2UgY2dvIChvciBzaGFyZWQgcnVudGltZSwgd2hpY2ggaW5jbHVkZXMKK3J1bnRpbWUvY2dvKS4KKworVGhpcyBwYXRjaCBmaWx0ZXJzIG91dCBhbGwgY29tcGlsZXIgZmxhZ3MgZXhjZXB0IHRob3NlCitiZWdpbm5pbmcgd2l0aCAnLW0nLiAgVGhlIGRlZmF1bHQgYmVoYXZpb3IgY2FuIGJlIHJlc3RvcmVkCitieSBzZXR0aW5nIHRoZSBDR09fUEVEQU5USUMgZW52aXJvbm1lbnQgdmFyaWFibGUuCisKK0FkYXB0ZWQgdG8gR28gMS4xMyBmcm9tIHBhdGNoZXMgb3JpZ2luYWxseSBzdWJtaXR0ZWQgdG8KK3RoZSBtZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28gdHJlZSBieQorTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4uCisKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBKIEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgorLS0tCisgc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvIHwgIDIgKy0KKyBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbyAgfCA2NiArKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCisgMiBmaWxlcyBjaGFuZ2VkLCA0OSBpbnNlcnRpb25zKCspLCAxOSBkZWxldGlvbnMoLSkKKworLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC9lbnZjbWQvZW52LmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL2VudmNtZC9lbnYuZ28KK0BAIC0xNTYsNyArMTU2LDcgQEAgZnVuYyBFeHRyYUVudlZhcnMoKSBbXWNmZy5FbnZWYXIgeworIGZ1bmMgRXh0cmFFbnZWYXJzQ29zdGx5KCkgW11jZmcuRW52VmFyIHsKKyAJdmFyIGIgd29yay5CdWlsZGVyCisgCWIuSW5pdCgpCistCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIGVyciA6PSBiLkNGbGFncygmbG9hZC5QYWNrYWdle30pCisrCWNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MsIGVyciA6PSBiLkNGbGFncygmbG9hZC5QYWNrYWdle30sIGZhbHNlKQorIAlpZiBlcnIgIT0gbmlsIHsKKyAJCS8vIFNob3VsZCBub3QgaGFwcGVuIC0gYi5DRmxhZ3Mgd2FzIGdpdmVuIGFuIGVtcHR5IHBhY2thZ2UuCisgCQlmbXQuRnByaW50Zihvcy5TdGRlcnIsICJnbzogaW52YWxpZCBjZmxhZ3M6ICV2XG4iLCBlcnIpCistLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvZXhlYy5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KK0BAIC0zMiw2ICszMiw4IEBAIGltcG9ydCAoCisgCSJ0aW1lIgorICkKKyAKKyt2YXIgb21pdEdvcGF0aCA9IG9zLkdldGVudigiR09QQVRIX09NSVRfSU5fQUNUSU9OSUQiKSAhPSAiIgorKworIC8vIGFjdGlvbkxpc3QgcmV0dXJucyB0aGUgbGlzdCBvZiBhY3Rpb25zIGluIHRoZSBkYWcgcm9vdGVkIGF0IHJvb3QKKyAvLyBhcyB2aXNpdGVkIGluIGEgZGVwdGgtZmlyc3QgcG9zdC1vcmRlciB0cmF2ZXJzYWwuCisgZnVuYyBhY3Rpb25MaXN0KHJvb3QgKkFjdGlvbikgW10qQWN0aW9uIHsKK0BAIC0yMDgsNyArMjEwLDcgQEAgZnVuYyAoYiAqQnVpbGRlcikgYnVpbGRBY3Rpb25JRChhICpBY3RpbworIAkvLyBBc3N1bWUgYi5Xb3JrRGlyIGlzIGJlaW5nIHRyaW1tZWQgcHJvcGVybHkuCisgCS8vIFdoZW4gLXRyaW1wYXRoIGlzIHVzZWQgd2l0aCBhIHBhY2thZ2UgYnVpbHQgZnJvbSB0aGUgbW9kdWxlIGNhY2hlLAorIAkvLyB1c2UgdGhlIG1vZHVsZSBwYXRoIGFuZCB2ZXJzaW9uIGluc3RlYWQgb2YgdGhlIGRpcmVjdG9yeS4KKy0JaWYgIXAuR29yb290ICYmICFjZmcuQnVpbGRUcmltcGF0aCAmJiAhc3RyaW5ncy5IYXNQcmVmaXgocC5EaXIsIGIuV29ya0RpcikgeworKwlpZiAhcC5Hb3Jvb3QgJiYgIW9taXRHb3BhdGggJiYgIWNmZy5CdWlsZFRyaW1wYXRoICYmICFzdHJpbmdzLkhhc1ByZWZpeChwLkRpciwgYi5Xb3JrRGlyKSB7CisgCQlmbXQuRnByaW50ZihoLCAiZGlyICVzXG4iLCBwLkRpcikKKyAJfSBlbHNlIGlmIGNmZy5CdWlsZFRyaW1wYXRoICYmIHAuTW9kdWxlICE9IG5pbCB7CisgCQlmbXQuRnByaW50ZihoLCAibW9kdWxlICVzQCVzXG4iLCBwLk1vZHVsZS5QYXRoLCBwLk1vZHVsZS5WZXJzaW9uKQorQEAgLTIyNCwxMyArMjI2LDEzIEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGJ1aWxkQWN0aW9uSUQoYSAqQWN0aW8KKyAJfQorIAlpZiBsZW4ocC5DZ29GaWxlcykrbGVuKHAuU3dpZ0ZpbGVzKSA+IDAgeworIAkJZm10LkZwcmludGYoaCwgImNnbyAlcVxuIiwgYi50b29sSUQoImNnbyIpKQorLQkJY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncywgXyA6PSBiLkNGbGFncyhwKQorLQkJZm10LkZwcmludGYoaCwgIkNDPSVxICVxICVxICVxXG4iLCBiLmNjRXhlKCksIGNwcGZsYWdzLCBjZmxhZ3MsIGxkZmxhZ3MpCisrCQljcHBmbGFncywgY2ZsYWdzLCBjeHhmbGFncywgZmZsYWdzLCBsZGZsYWdzLCBfIDo9IGIuQ0ZsYWdzKHAsIHRydWUpCisrCQlmbXQuRnByaW50ZihoLCAiQ0M9JXEgJXEgJXEgJXFcbiIsIGIuY2NFeGUodHJ1ZSksIGNwcGZsYWdzLCBjZmxhZ3MsIGxkZmxhZ3MpCisgCQlpZiBsZW4ocC5DWFhGaWxlcykrbGVuKHAuU3dpZ0ZpbGVzKSA+IDAgeworLQkJCWZtdC5GcHJpbnRmKGgsICJDWFg9JXEgJXFcbiIsIGIuY3h4RXhlKCksIGN4eGZsYWdzKQorKwkJCWZtdC5GcHJpbnRmKGgsICJDWFg9JXEgJXFcbiIsIGIuY3h4RXhlKHRydWUpLCBjeHhmbGFncykKKyAJCX0KKyAJCWlmIGxlbihwLkZGaWxlcykgPiAwIHsKKy0JCQlmbXQuRnByaW50ZihoLCAiRkM9JXEgJXFcbiIsIGIuZmNFeGUoKSwgZmZsYWdzKQorKwkJCWZtdC5GcHJpbnRmKGgsICJGQz0lcSAlcVxuIiwgYi5mY0V4ZSh0cnVlKSwgZmZsYWdzKQorIAkJfQorIAkJLy8gVE9ETyhyc2MpOiBTaG91bGQgd2UgaW5jbHVkZSB0aGUgU1dJRyB2ZXJzaW9uIG9yIEZvcnRyYW4vR0NDL0crKy9PYmplY3RpdmUtQyBjb21waWxlciB2ZXJzaW9ucz8KKyAJfQorQEAgLTIyMjgsMzMgKzIyMzAsNDggQEAgdmFyICgKKyAvLyBnY2NDbWQgcmV0dXJucyBhIGdjYyBjb21tYW5kIGxpbmUgcHJlZml4CisgLy8gZGVmYXVsdENDIGlzIGRlZmluZWQgaW4gemRlZmF1bHRjYy5nbywgd3JpdHRlbiBieSBjbWQvZGlzdC4KKyBmdW5jIChiICpCdWlsZGVyKSBHY2NDbWQoaW5jZGlyLCB3b3JrZGlyIHN0cmluZykgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckNtZChiLmNjRXhlKCksIGluY2Rpciwgd29ya2RpcikKKysJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jY0V4ZShmYWxzZSksIGluY2Rpciwgd29ya2RpcikKKyB9CisgCisgLy8gZ3h4Q21kIHJldHVybnMgYSBnKysgY29tbWFuZCBsaW5lIHByZWZpeAorIC8vIGRlZmF1bHRDWFggaXMgZGVmaW5lZCBpbiB6ZGVmYXVsdGNjLmdvLCB3cml0dGVuIGJ5IGNtZC9kaXN0LgorIGZ1bmMgKGIgKkJ1aWxkZXIpIEd4eENtZChpbmNkaXIsIHdvcmtkaXIgc3RyaW5nKSBbXXN0cmluZyB7CistCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuY3h4RXhlKCksIGluY2Rpciwgd29ya2RpcikKKysJcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5jeHhFeGUoZmFsc2UpLCBpbmNkaXIsIHdvcmtkaXIpCisgfQorIAorIC8vIGdmb3J0cmFuQ21kIHJldHVybnMgYSBnZm9ydHJhbiBjb21tYW5kIGxpbmUgcHJlZml4LgorIGZ1bmMgKGIgKkJ1aWxkZXIpIGdmb3J0cmFuQ21kKGluY2Rpciwgd29ya2RpciBzdHJpbmcpIFtdc3RyaW5nIHsKKy0JcmV0dXJuIGIuY29tcGlsZXJDbWQoYi5mY0V4ZSgpLCBpbmNkaXIsIHdvcmtkaXIpCisrCXJldHVybiBiLmNvbXBpbGVyQ21kKGIuZmNFeGUoZmFsc2UpLCBpbmNkaXIsIHdvcmtkaXIpCisgfQorIAorIC8vIGNjRXhlIHJldHVybnMgdGhlIENDIGNvbXBpbGVyIHNldHRpbmcgd2l0aG91dCBhbGwgdGhlIGV4dHJhIGZsYWdzIHdlIGFkZCBpbXBsaWNpdGx5LgorLWZ1bmMgKGIgKkJ1aWxkZXIpIGNjRXhlKCkgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ0MsIGNmZy5EZWZhdWx0Q0MoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpKQorK2Z1bmMgKGIgKkJ1aWxkZXIpIGNjRXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKKysJcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NDLCBjZmcuRGVmYXVsdENDKGNmZy5Hb29zLCBjZmcuR29hcmNoKSwgZmlsdGVyZWQpCisgfQorIAorIC8vIGN4eEV4ZSByZXR1cm5zIHRoZSBDWFggY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCistZnVuYyAoYiAqQnVpbGRlcikgY3h4RXhlKCkgW11zdHJpbmcgeworLQlyZXR1cm4gYi5jb21waWxlckV4ZShvcmlnQ1hYLCBjZmcuRGVmYXVsdENYWChjZmcuR29vcywgY2ZnLkdvYXJjaCkpCisrZnVuYyAoYiAqQnVpbGRlcikgY3h4RXhlKGZpbHRlcmVkIGJvb2wpIFtdc3RyaW5nIHsKKysJcmV0dXJuIGIuY29tcGlsZXJFeGUob3JpZ0NYWCwgY2ZnLkRlZmF1bHRDWFgoY2ZnLkdvb3MsIGNmZy5Hb2FyY2gpLCBmaWx0ZXJlZCkKKyB9CisgCisgLy8gZmNFeGUgcmV0dXJucyB0aGUgRkMgY29tcGlsZXIgc2V0dGluZyB3aXRob3V0IGFsbCB0aGUgZXh0cmEgZmxhZ3Mgd2UgYWRkIGltcGxpY2l0bHkuCistZnVuYyAoYiAqQnVpbGRlcikgZmNFeGUoKSBbXXN0cmluZyB7CistCXJldHVybiBiLmNvbXBpbGVyRXhlKGNmZy5HZXRlbnYoIkZDIiksICJnZm9ydHJhbiIpCisrZnVuYyAoYiAqQnVpbGRlcikgZmNFeGUoZmlsdGVyZWQgYm9vbCkgW11zdHJpbmcgeworKwlyZXR1cm4gYi5jb21waWxlckV4ZShvcy5HZXRlbnYoIkZDIiksICJnZm9ydHJhbiIsIGZpbHRlcmVkKQorK30KKysKKyt2YXIgZmlsdGVyRmxhZ3MgPSBvcy5HZXRlbnYoIkNHT19QRURBTlRJQyIpID09ICIiCisrCisrZnVuYyBmaWx0ZXJDb21waWxlckZsYWdzKGZsYWdzIFtdc3RyaW5nKSBbXXN0cmluZyB7CisrCXZhciBuZXdmbGFncyBbXXN0cmluZworKwlpZiAhZmlsdGVyRmxhZ3MgeworKwkJcmV0dXJuIGZsYWdzCisrCX0KKysJZm9yIF8sIGZsYWcgOj0gcmFuZ2UgZmxhZ3MgeworKwkJaWYgc3RyaW5ncy5IYXNQcmVmaXgoZmxhZywgIi1tIikgeworKwkJCW5ld2ZsYWdzID0gYXBwZW5kKG5ld2ZsYWdzLCBmbGFnKQorKwkJfQorKwl9CisrCXJldHVybiBuZXdmbGFncworIH0KKyAKKyAvLyBjb21waWxlckV4ZSByZXR1cm5zIHRoZSBjb21waWxlciB0byB1c2UgZ2l2ZW4gYW4KK0BAIC0yMjYzLDExICsyMjgwLDE2IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIGZjRXhlKCkgW11zdHJpbmcgeworIC8vIG9mIHRoZSBjb21waWxlciBidXQgY2FuIGhhdmUgYWRkaXRpb25hbCBhcmd1bWVudHMgaWYgdGhleQorIC8vIHdlcmUgcHJlc2VudCBpbiB0aGUgZW52aXJvbm1lbnQgdmFsdWUuCisgLy8gRm9yIGV4YW1wbGUgaWYgQ0M9ImdjYyAtREdPUEhFUiIgdGhlbiB0aGUgcmVzdWx0IGlzIFsiZ2NjIiwgIi1ER09QSEVSIl0uCistZnVuYyAoYiAqQnVpbGRlcikgY29tcGlsZXJFeGUoZW52VmFsdWUgc3RyaW5nLCBkZWYgc3RyaW5nKSBbXXN0cmluZyB7CisrZnVuYyAoYiAqQnVpbGRlcikgY29tcGlsZXJFeGUoZW52VmFsdWUgc3RyaW5nLCBkZWYgc3RyaW5nLCBmaWx0ZXJlZCBib29sKSBbXXN0cmluZyB7CisgCWNvbXBpbGVyIDo9IHN0cmluZ3MuRmllbGRzKGVudlZhbHVlKQorIAlpZiBsZW4oY29tcGlsZXIpID09IDAgeworIAkJY29tcGlsZXIgPSBbXXN0cmluZ3tkZWZ9CisgCX0KKysKKysJaWYgZmlsdGVyZWQgeworKwkJcmV0dXJuIGFwcGVuZChjb21waWxlclswOjFdLCBmaWx0ZXJDb21waWxlckZsYWdzKGNvbXBpbGVyWzE6XSkuLi4pCisrCX0KKysKKyAJcmV0dXJuIGNvbXBpbGVyCisgfQorIAorQEAgLTI0MjgsNyArMjQ1MCw3IEBAIGZ1bmMgZW52TGlzdChrZXksIGRlZiBzdHJpbmcpIFtdc3RyaW5nIHsKKyB9CisgCisgLy8gQ0ZsYWdzIHJldHVybnMgdGhlIGZsYWdzIHRvIHVzZSB3aGVuIGludm9raW5nIHRoZSBDLCBDKysgb3IgRm9ydHJhbiBjb21waWxlcnMsIG9yIGNnby4KKy1mdW5jIChiICpCdWlsZGVyKSBDRmxhZ3MocCAqbG9hZC5QYWNrYWdlKSAoY3BwZmxhZ3MsIGNmbGFncywgY3h4ZmxhZ3MsIGZmbGFncywgbGRmbGFncyBbXXN0cmluZywgZXJyIGVycm9yKSB7CisrZnVuYyAoYiAqQnVpbGRlcikgQ0ZsYWdzKHAgKmxvYWQuUGFja2FnZSwgZmlsdGVyZWQgYm9vbCkgKGNwcGZsYWdzLCBjZmxhZ3MsIGN4eGZsYWdzLCBmZmxhZ3MsIGxkZmxhZ3MgW11zdHJpbmcsIGVyciBlcnJvcikgeworIAlkZWZhdWx0cyA6PSAiLWcgLU8yIgorIAorIAlpZiBjcHBmbGFncywgZXJyID0gYnVpbGRGbGFncygiQ1BQRkxBR1MiLCAiIiwgcC5DZ29DUFBGTEFHUywgY2hlY2tDb21waWxlckZsYWdzKTsgZXJyICE9IG5pbCB7CitAQCAtMjQ0Nyw2ICsyNDY5LDE0IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIENGbGFncyhwICpsb2FkLlBhY2thZ2UKKyAJCXJldHVybgorIAl9CisgCisrCWlmIGZpbHRlcmVkIHsKKysJCWNwcGZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhjcHBmbGFncykKKysJCWNmbGFncyA9IGZpbHRlckNvbXBpbGVyRmxhZ3MoY2ZsYWdzKQorKwkJY3h4ZmxhZ3MgPSBmaWx0ZXJDb21waWxlckZsYWdzKGN4eGZsYWdzKQorKwkJZmZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhmZmxhZ3MpCisrCQlsZGZsYWdzID0gZmlsdGVyQ29tcGlsZXJGbGFncyhsZGZsYWdzKQorKwl9CisrCisgCXJldHVybgorIH0KKyAKK0BAIC0yNDYxLDcgKzI0OTEsNyBAQCB2YXIgY2dvUmUgPSBsYXp5cmVnZXhwLk5ldyhgWy9cXDpdYCkKKyAKKyBmdW5jIChiICpCdWlsZGVyKSBjZ28oYSAqQWN0aW9uLCBjZ29FeGUsIG9iamRpciBzdHJpbmcsIHBjQ0ZMQUdTLCBwY0xERkxBR1MsIGNnb2ZpbGVzLCBnY2NmaWxlcywgZ3h4ZmlsZXMsIG1maWxlcywgZmZpbGVzIFtdc3RyaW5nKSAob3V0R28sIG91dE9iaiBbXXN0cmluZywgZXJyIGVycm9yKSB7CisgCXAgOj0gYS5QYWNrYWdlCistCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBjZ29GRkxBR1MsIGNnb0xERkxBR1MsIGVyciA6PSBiLkNGbGFncyhwKQorKwljZ29DUFBGTEFHUywgY2dvQ0ZMQUdTLCBjZ29DWFhGTEFHUywgY2dvRkZMQUdTLCBjZ29MREZMQUdTLCBlcnIgOj0gYi5DRmxhZ3MocCwgZmFsc2UpCisgCWlmIGVyciAhPSBuaWwgeworIAkJcmV0dXJuIG5pbCwgbmlsLCBlcnIKKyAJfQorQEAgLTI4MjAsNyArMjg1MCw3IEBAIGZ1bmMgKGIgKkJ1aWxkZXIpIHN3aWdJbnRTaXplKG9iamRpciBzdHIKKyAKKyAvLyBSdW4gU1dJRyBvbiBvbmUgU1dJRyBpbnB1dCBmaWxlLgorIGZ1bmMgKGIgKkJ1aWxkZXIpIHN3aWdPbmUoYSAqQWN0aW9uLCBwICpsb2FkLlBhY2thZ2UsIGZpbGUsIG9iamRpciBzdHJpbmcsIHBjQ0ZMQUdTIFtdc3RyaW5nLCBjeHggYm9vbCwgaW50Z29zaXplIHN0cmluZykgKG91dEdvLCBvdXRDIHN0cmluZywgZXJyIGVycm9yKSB7CistCWNnb0NQUEZMQUdTLCBjZ29DRkxBR1MsIGNnb0NYWEZMQUdTLCBfLCBfLCBlcnIgOj0gYi5DRmxhZ3MocCkKKysJY2dvQ1BQRkxBR1MsIGNnb0NGTEFHUywgY2dvQ1hYRkxBR1MsIF8sIF8sIGVyciA6PSBiLkNGbGFncyhwLCBmYWxzZSkKKyAJaWYgZXJyICE9IG5pbCB7CisgCQlyZXR1cm4gIiIsICIiLCBlcnIKKyAJfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDAzLWFsbG93LUdPVE9PTERJUi10by1iZS1vdmVycmlkZGVuLWluLXRoZS1lbnZpcm9ubWVudC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjYyYzcwNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwMy1hbGxvdy1HT1RPT0xESVItdG8tYmUtb3ZlcnJpZGRlbi1pbi10aGUtZW52aXJvbm1lbnQucGF0Y2gKQEAgLTAsMCArMSw0NyBAQAorRnJvbSAyOGFkYTg4OTZiNzZkNjIwMjQwYmFmYzIyYWEzOTUwNzFkNjAxNDgyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MTU6MzcgKzA0MzAKK1N1YmplY3Q6IFtQQVRDSCAzLzldIGNtZC9nbzogQWxsb3cgR09UT09MRElSIHRvIGJlIG92ZXJyaWRkZW4gaW4gdGhlIGVudmlyb25tZW50CisKK3RvIGFsbG93IGZvciBzcGxpdCBob3N0L3RhcmdldCBidWlsZCByb290cworCitBZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCit0aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKK01hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jbWQvZGlzdC9idWlsZC5nbyAgICAgICAgICB8IDQgKysrLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbyB8IDYgKysrKystCisgMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKKy0tLSBhL3NyYy9jbWQvZGlzdC9idWlsZC5nbworKysrIGIvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCitAQCAtMjQ2LDcgKzI0Niw5IEBAIGZ1bmMgeGluaXQoKSB7CisgCXdvcmtkaXIgPSB4d29ya2RpcigpCisgCXhhdGV4aXQocm13b3JrZGlyKQorIAorLQl0b29sZGlyID0gcGF0aGYoIiVzL3BrZy90b29sLyVzXyVzIiwgZ29yb290LCBnb2hvc3RvcywgZ29ob3N0YXJjaCkKKysJaWYgdG9vbGRpciA9IG9zLkdldGVudigiR09UT09MRElSIik7IHRvb2xkaXIgPT0gIiIgeworKwkJdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCisrCX0KKyB9CisgCisgLy8gY29tcGlsZXJFbnYgcmV0dXJucyBhIG1hcCBmcm9tICJnb29zL2dvYXJjaCIgdG8gdGhlCistLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL2NmZy9jZmcuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvY2ZnL2NmZy5nbworQEAgLTY0LDcgKzY0LDExIEBAIGZ1bmMgZGVmYXVsdENvbnRleHQoKSBidWlsZC5Db250ZXh0IHsKKyAJCS8vIHZhcmlhYmxlcy4gVGhpcyBtYXRjaGVzIHRoZSBpbml0aWFsaXphdGlvbiBvZiBUb29sRGlyIGluCisgCQkvLyBnby9idWlsZCwgZXhjZXB0IGZvciB1c2luZyBjdHh0LkdPUk9PVCByYXRoZXIgdGhhbgorIAkJLy8gcnVudGltZS5HT1JPT1QuCistCQlidWlsZC5Ub29sRGlyID0gZmlsZXBhdGguSm9pbihjdHh0LkdPUk9PVCwgInBrZy90b29sLyIrcnVudGltZS5HT09TKyJfIitydW50aW1lLkdPQVJDSCkKKysJCWlmIHMgOj0gb3MuR2V0ZW52KCJHT1RPT0xESVIiKTsgcyAhPSAiIiB7CisrCQkJYnVpbGQuVG9vbERpciA9IGZpbGVwYXRoLkNsZWFuKHMpCisrCQl9IGVsc2UgeworKwkJCWJ1aWxkLlRvb2xEaXIgPSBmaWxlcGF0aC5Kb2luKGN0eHQuR09ST09ULCAicGtnL3Rvb2wvIitydW50aW1lLkdPT1MrIl8iK3J1bnRpbWUuR09BUkNIKQorKwkJfQorIAl9CisgCisgCWN0eHQuR09QQVRIID0gZW52T3IoIkdPUEFUSCIsIGN0eHQuR09QQVRIKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDQtbGQtYWRkLXNvbmFtZS10by1zaGFyZWFibGUtb2JqZWN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NWM5Yzc1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA0LWxkLWFkZC1zb25hbWUtdG8tc2hhcmVhYmxlLW9iamVjdHMucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSBiZjVjZjUzMDFhZTU5MTQ0OTg0NTRjODcyOTNkMWRmMmUxZDg0ODlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MTY6MzIgKzA0MzAKK1N1YmplY3Q6IFtQQVRDSCA0LzldIGxkOiBhZGQgc29uYW1lIHRvIHNoYXJlYWJsZSBvYmplY3RzCisKK3NvIHRoYXQgT0UncyBzaGFyZWQgbGlicmFyeSBkZXBlbmRlbmN5IGhhbmRsaW5nCitjYW4gZmluZCB0aGVtLgorCitBZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCit0aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKK01hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jbWQvbGluay9pbnRlcm5hbC9sZC9saWIuZ28gfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL2xkL2xpYi5nbworQEAgLTEyODAsNiArMTI4MCw3IEBAIGZ1bmMgKGN0eHQgKkxpbmspIGhvc3RsaW5rKCkgeworIAkJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItV2wsLXoscmVscm8iKQorIAkJCX0KKyAJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsICItc2hhcmVkIikKKysJCQlhcmd2ID0gYXBwZW5kKGFyZ3YsIGZtdC5TcHJpbnRmKCItV2wsLXNvbmFtZSwlcyIsIGZpbGVwYXRoLkJhc2UoKmZsYWdPdXRmaWxlKSkpCisgCQkJaWYgY3R4dC5IZWFkVHlwZSAhPSBvYmphYmkuSHdpbmRvd3MgeworIAkJCQkvLyBQYXNzIC16IG5vZGVsZXRlIHRvIG1hcmsgdGhlIHNoYXJlZCBsaWJyYXJ5IGFzCisgCQkJCS8vIG5vbi1jbG9zZWFibGU6IGEgZGxjbG9zZSB3aWxsIGRvIG5vdGhpbmcuCitAQCAtMTI5MSw2ICsxMjkyLDcgQEAgZnVuYyAoY3R4dCAqTGluaykgaG9zdGxpbmsoKSB7CisgCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKKyAJCX0KKyAJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1zaGFyZWQiKQorKwkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQorIAljYXNlIEJ1aWxkTW9kZVBsdWdpbjoKKyAJCWlmIGN0eHQuSGVhZFR5cGUgPT0gb2JqYWJpLkhkYXJ3aW4geworIAkJCWFyZ3YgPSBhcHBlbmQoYXJndiwgIi1keW5hbWljbGliIikKK0BAIC0xMjk5LDYgKzEzMDEsNyBAQCBmdW5jIChjdHh0ICpMaW5rKSBob3N0bGluaygpIHsKKyAJCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLVdsLC16LHJlbHJvIikKKyAJCQl9CisgCQkJYXJndiA9IGFwcGVuZChhcmd2LCAiLXNoYXJlZCIpCisrCQkJYXJndiA9IGFwcGVuZChhcmd2LCBmbXQuU3ByaW50ZigiLVdsLC1zb25hbWUsJXMiLCBmaWxlcGF0aC5CYXNlKCpmbGFnT3V0ZmlsZSkpKQorIAkJfQorIAl9CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwNS1tYWtlLmJhc2gtb3ZlcnJpZGUtQ0Mtd2hlbi1idWlsZGluZy1kaXN0LWFuZC1nb19ib290LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU5YzEyZDkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDUtbWFrZS5iYXNoLW92ZXJyaWRlLUNDLXdoZW4tYnVpbGRpbmctZGlzdC1hbmQtZ29fYm9vdC5wYXRjaApAQCAtMCwwICsxLDM5IEBACitGcm9tIGYwNWVmM2RlZDUyYjk4NTM3YzEwZWZkMGIxNWNkOTYxMjQ3MTUyNGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4IEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgorRGF0ZTogV2VkLCAyMyBPY3QgMjAxOSAyMToxNzoxNiArMDQzMAorU3ViamVjdDogW1BBVENIIDUvOV0gbWFrZS5iYXNoOiBvdmVycmlkZSBDQyB3aGVuIGJ1aWxkaW5nIGRpc3QgYW5kCisgZ29fYm9vdHN0cmFwCisKK2ZvciBoYW5kbGluZyBPRSBjcm9zcy1jYW5hZGlhbiBidWlsZHMuCisKK0FkYXB0ZWQgdG8gR28gMS4xMyBmcm9tIHBhdGNoZXMgb3JpZ2luYWxseSBzdWJtaXR0ZWQgdG8KK3RoZSBtZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28gdHJlZSBieQorTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBKIEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgorLS0tCisgc3JjL21ha2UuYmFzaCB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKKy0tLSBhL3NyYy9tYWtlLmJhc2gKKysrKyBiL3NyYy9tYWtlLmJhc2gKK0BAIC0xNzgsNyArMTc4LDcgQEAgaWYgWyAiJEdPUk9PVF9CT09UU1RSQVAiID0gIiRHT1JPT1QiIF07CisgCWV4aXQgMQorIGZpCisgcm0gLWYgY21kL2Rpc3QvZGlzdAorLUdPUk9PVD0iJEdPUk9PVF9CT09UU1RSQVAiIEdPT1M9IiIgR09BUkNIPSIiIEdPMTExTU9EVUxFPW9mZiAiJEdPUk9PVF9CT09UU1RSQVAvYmluL2dvIiBidWlsZCAtbyBjbWQvZGlzdC9kaXN0IC4vY21kL2Rpc3QKKytDQz0iJHtCVUlMRF9DQzotJHtDQ319IiBHT1JPT1Q9IiRHT1JPT1RfQk9PVFNUUkFQIiBHT09TPSIiIEdPQVJDSD0iIiBHTzExMU1PRFVMRT1vZmYgIiRHT1JPT1RfQk9PVFNUUkFQL2Jpbi9nbyIgYnVpbGQgLW8gY21kL2Rpc3QvZGlzdCAuL2NtZC9kaXN0CisgCisgIyAtZSBkb2Vzbid0IHByb3BhZ2F0ZSBvdXQgb2YgZXZhbCwgc28gY2hlY2sgc3VjY2VzcyBieSBoYW5kLgorIGV2YWwgJCguL2NtZC9kaXN0L2Rpc3QgZW52IC1wIHx8IGVjaG8gRkFJTD10cnVlKQorQEAgLTIwOSw3ICsyMDksNyBAQCBmaQorICMgUnVuIGRpc3QgYm9vdHN0cmFwIHRvIGNvbXBsZXRlIG1ha2UuYmFzaC4KKyAjIEJvb3RzdHJhcCBpbnN0YWxscyBhIHByb3BlciBjbWQvZGlzdCwgYnVpbHQgd2l0aCB0aGUgbmV3IHRvb2xjaGFpbi4KKyAjIFRocm93IG91cnMsIGJ1aWx0IHdpdGggR28gMS40LCBhd2F5IGFmdGVyIGJvb3RzdHJhcC4KKy0uL2NtZC9kaXN0L2Rpc3QgYm9vdHN0cmFwICRidWlsZGFsbCAkdmZsYWcgJEdPX0RJU1RGTEFHUyAiJEAiCisrQ0M9IiR7QlVJTERfQ0M6LSR7Q0N9fSIgLi9jbWQvZGlzdC9kaXN0IGJvb3RzdHJhcCAkYnVpbGRhbGwgJHZmbGFnICRHT19ESVNURkxBR1MgIiRAIgorIHJtIC1mIC4vY21kL2Rpc3QvZGlzdAorIAorICMgRE8gTk9UIEFERCBBTlkgTkVXIENPREUgSEVSRS4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA2LWNtZC1kaXN0LXNlcGFyYXRlLWhvc3QtYW5kLXRhcmdldC1idWlsZHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2FlZTBiYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwNi1jbWQtZGlzdC1zZXBhcmF0ZS1ob3N0LWFuZC10YXJnZXQtYnVpbGRzLnBhdGNoCkBAIC0wLDAgKzEsMjc0IEBACitGcm9tIDEwNzM1YmI4NGRmMTdiYTY1N2Y3NjgzNWY0ODNjZDg1NDNhODc5YzEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4IEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgorRGF0ZTogV2VkLCAyMyBPY3QgMjAxOSAyMToxODoxMiArMDQzMAorU3ViamVjdDogW1BBVENIIDYvOV0gY21kL2Rpc3Q6IHNlcGFyYXRlIGhvc3QgYW5kIHRhcmdldCBidWlsZHMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworQ2hhbmdlIHRoZSBkaXN0IHRvb2wgdG8gYWxsb3cgZm9yIE9FLXN0eWxlIGNyb3NzLQorYW5kIGNyb3NzLWNhbmFkaWFuIGJ1aWxkczoKKworIC0gY29tbWFuZCBmbGFncyAtLWhvc3Qtb25seSBhbmQgLS10YXJnZXQgb25seSBhcmUgYWRkZWQ7CisgICBpZiBvbmUgaXMgcHJlc2VudCwgdGhlIG90aGVyIGNoYW5nZXMgbWVudGlvbmVkIGJlbG93CisgICB0YWtlIGVmZmVjdCwgYW5kIGFyZ3VtZW50cyBtYXkgYWxzbyBiZSBzcGVjaWZpZWQgb24KKyAgIHRoZSBjb21tYW5kIGxpbmUgdG8gZW51bWVyYXRlIHRoZSBwYWNrYWdlKHMpIHRvIGJlCisgICBidWlsdC4KKworIC0gZm9yIE9FIGNyb3NzIGJ1aWxkcywgZ29fYm9vdHN0cmFwIGlzIGFsd2F5cyBidWlsdCBmb3IKKyAgIHRoZSBjdXJyZW50IGJ1aWxkIGhvc3QsIGFuZCBpcyBtb3ZlZCwgYWxvbmcgd2l0aCB0aGUgc3VwcG9ydGluZworICAgdG9vbGNoYWluIChhc20sIGNvbXBpbGUsIGV0Yy4pIHRvIGEgc2VwYXJhdGUgJ25hdGl2ZV9uYXRpdmUnCisgICBkaXJlY3RvcnkgdW5kZXIgR09ST09UL3BrZy90b29sLgorCisgLSBnb19ib290c3RyYXAgaXMgbm90IGF1dG9tYXRpY2FsbHkgcmVtb3ZlZCBhZnRlciB0aGUgYnVpbGQsCisgICBzbyBpdCBjYW4gYmUgcmV1c2VkIGxhdGVyIChlLmcuLCBidWlsZGluZyBib3RoIHN0YXRpYyBhbmQKKyAgIHNoYXJlZCBydW50aW1lKS4KKworTm90ZSB0aGF0IGZvciAtLWhvc3Qtb25seSBidWlsZHMsIGl0IHdvdWxkIGJlIG5pY2UgdG8gc3BlY2lmeQoranVzdCB0aGUgImNtZCIgcGFja2FnZSB0byBidWlsZCBvbmx5IHRoZSBnbyBjb21tYW5kcy90b29scywKK3RoZSBzdGFsZW5lc3MgY2hlY2tzIGluIHRoZSBkaXN0IHRvb2wgd2lsbCBmYWlsIGlmIHRoZSAic3RkIgorbGlicmFyeSBoYXMgbm90IGFsc28gYmVlbiBidWlsdC4gIFNvIGhvc3Qtb25seSBidWlsZHMgaGF2ZSB0bworYnVpbGQgZXZlcnl0aGluZyBhbnl3YXkuCisKK0FkYXB0ZWQgdG8gR28gMS4xMyBmcm9tIHBhdGNoZXMgb3JpZ2luYWxseSBzdWJtaXR0ZWQgdG8KK3RoZSBtZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28gdHJlZSBieQorTWF0dCBNYWRpc29uIDxtYXR0QG1hZGlzb24uc3lzdGVtcz4uCisKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBKIEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgorLS0tCisgc3JjL2NtZC9kaXN0L2J1aWxkLmdvIHwgMTU1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMTIgaW5zZXJ0aW9ucygrKSwgNDMgZGVsZXRpb25zKC0pCisKKy0tLSBhL3NyYy9jbWQvZGlzdC9idWlsZC5nbworKysrIGIvc3JjL2NtZC9kaXN0L2J1aWxkLmdvCitAQCAtNDEsNiArNDEsNyBAQCB2YXIgKAorIAlnb2xkZmxhZ3MgICAgICAgIHN0cmluZworIAl3b3JrZGlyICAgICAgICAgIHN0cmluZworIAl0b29sZGlyICAgICAgICAgIHN0cmluZworKwlidWlsZF90b29sZGlyICAgIHN0cmluZworIAlvbGRnb29zICAgICAgICAgIHN0cmluZworIAlvbGRnb2FyY2ggICAgICAgIHN0cmluZworIAlleGUgICAgICAgICAgICAgIHN0cmluZworQEAgLTUzLDYgKzU0LDcgQEAgdmFyICgKKyAKKyAJcmVidWlsZGFsbCAgIGJvb2wKKyAJZGVmYXVsdGNsYW5nIGJvb2wKKysJY3Jvc3NCdWlsZCAgIGJvb2wKKyAKKyAJdmZsYWcgaW50IC8vIHZlcmJvc2l0eQorICkKK0BAIC0yNDksNiArMjUxLDggQEAgZnVuYyB4aW5pdCgpIHsKKyAJaWYgdG9vbGRpciA9IG9zLkdldGVudigiR09UT09MRElSIik7IHRvb2xkaXIgPT0gIiIgeworIAkJdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCisgCX0KKysKKysJYnVpbGRfdG9vbGRpciA9IHBhdGhmKCIlcy9wa2cvdG9vbC9uYXRpdmVfbmF0aXZlIiwgZ29yb290KQorIH0KKyAKKyAvLyBjb21waWxlckVudiByZXR1cm5zIGEgbWFwIGZyb20gImdvb3MvZ29hcmNoIiB0byB0aGUKK0BAIC00ODAsOCArNDg0LDEwIEBAIGZ1bmMgc2V0dXAoKSB7CisgCXAgOj0gcGF0aGYoIiVzL3BrZy8lc18lcyIsIGdvcm9vdCwgZ29ob3N0b3MsIGdvaG9zdGFyY2gpCisgCWlmIHJlYnVpbGRhbGwgeworIAkJeHJlbW92ZWFsbChwKQorKwkJeHJlbW92ZWFsbChidWlsZF90b29sZGlyKQorIAl9CisgCXhta2RpcmFsbChwKQorKwl4bWtkaXJhbGwoYnVpbGRfdG9vbGRpcikKKyAKKyAJaWYgZ29vcyAhPSBnb2hvc3RvcyB8fCBnb2FyY2ggIT0gZ29ob3N0YXJjaCB7CisgCQlwIDo9IHBhdGhmKCIlcy9wa2cvJXNfJXMiLCBnb3Jvb3QsIGdvb3MsIGdvYXJjaCkKK0BAIC0xMjQ0LDEyICsxMjUwLDI5IEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgeworIAorIAl2YXIgbm9CYW5uZXIgYm9vbAorIAl2YXIgZGVidWcgYm9vbAorKwl2YXIgaG9zdE9ubHkgYm9vbAorKwl2YXIgdGFyZ2V0T25seSBib29sCisrCXZhciB0b0J1aWxkID0gW11zdHJpbmd7InN0ZCIsICJjbWQifQorKworIAlmbGFnLkJvb2xWYXIoJnJlYnVpbGRhbGwsICJhIiwgcmVidWlsZGFsbCwgInJlYnVpbGQgYWxsIikKKyAJZmxhZy5Cb29sVmFyKCZkZWJ1ZywgImQiLCBkZWJ1ZywgImVuYWJsZSBkZWJ1Z2dpbmcgb2YgYm9vdHN0cmFwIHByb2Nlc3MiKQorIAlmbGFnLkJvb2xWYXIoJm5vQmFubmVyLCAibm8tYmFubmVyIiwgbm9CYW5uZXIsICJkbyBub3QgcHJpbnQgYmFubmVyIikKKysJZmxhZy5Cb29sVmFyKCZob3N0T25seSwgImhvc3Qtb25seSIsIGhvc3RPbmx5LCAiYnVpbGQgb25seSBob3N0IGJpbmFyaWVzLCBub3QgdGFyZ2V0IikKKysJZmxhZy5Cb29sVmFyKCZ0YXJnZXRPbmx5LCAidGFyZ2V0LW9ubHkiLCB0YXJnZXRPbmx5LCAiYnVpbGQgb25seSB0YXJnZXQgYmluYXJpZXMsIG5vdCBob3N0IikKKyAKKy0JeGZsYWdwYXJzZSgwKQorKwl4ZmxhZ3BhcnNlKC0xKQorIAorKwlpZiBob3N0T25seSAmJiB0YXJnZXRPbmx5IHsKKysJCWZhdGFsZigic3BlY2lmeSBvbmx5IG9uZSBvZiAtLWhvc3Qtb25seSBvciAtLXRhcmdldC1vbmx5XG4iKQorKwl9CisrCWNyb3NzQnVpbGQgPSBob3N0T25seSB8fCB0YXJnZXRPbmx5CisrCWlmIGZsYWcuTkFyZygpID4gMCB7CisrCQlpZiBjcm9zc0J1aWxkIHsKKysJCQl0b0J1aWxkID0gZmxhZy5BcmdzKCkKKysJCX0gZWxzZSB7CisrCQkJZmF0YWxmKCJwYWNrYWdlIG5hbWVzIG5vdCBwZXJtaXR0ZWQgd2l0aG91dCAtLWhvc3Qtb25seSBvciAtLXRhcmdldC1vbmx5XG4iKQorKwkJfQorKwl9CisgCS8vIFNldCBHT1BBVEggdG8gYW4gaW50ZXJuYWwgZGlyZWN0b3J5LiBXZSBzaG91bGRuJ3QgYWN0dWFsbHkKKyAJLy8gbmVlZCB0byBzdG9yZSBmaWxlcyBoZXJlLCBzaW5jZSB0aGUgdG9vbGNoYWluIHdvbid0CisgCS8vIGRlcGVuZCBvbiBtb2R1bGVzIG91dHNpZGUgb2YgdmVuZG9yIGRpcmVjdG9yaWVzLCBidXQgaWYKK0BAIC0xMzAzLDggKzEzMjYsMTMgQEAgZnVuYyBjbWRib290c3RyYXAoKSB7CisgCQl4cHJpbnRmKCJcbiIpCisgCX0KKyAKKy0JZ29nY2ZsYWdzID0gb3MuR2V0ZW52KCJHT19HQ0ZMQUdTIikgLy8gd2Ugd2VyZSB1c2luZyAkQk9PVF9HT19HQ0ZMQUdTIHVudGlsIG5vdworLQlnb2xkZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0xERkxBR1MiKSAvLyB3ZSB3ZXJlIHVzaW5nICRCT09UX0dPX0xERkxBR1MgdW50aWwgbm93CisrCS8vIEZvciBzcGxpdCBob3N0L3RhcmdldCBjcm9zcy9jcm9zcy1jYW5hZGlhbiBidWlsZHMsIHdlIGRvbid0CisrCS8vIHdhbnQgdG8gYmUgc2V0dGluZyB0aGVzZSBmbGFncyB1bnRpbCBhZnRlciB3ZSBoYXZlIGNvbXBpbGVkCisrCS8vIHRoZSB0b29sY2hhaW4gdGhhdCBydW5zIG9uIHRoZSBidWlsZCBob3N0LgorKwlpZiAhY3Jvc3NCdWlsZCB7CisrCQlnb2djZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0dDRkxBR1MiKSAvLyB3ZSB3ZXJlIHVzaW5nICRCT09UX0dPX0dDRkxBR1MgdW50aWwgbm93CisrCQlnb2xkZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0xERkxBR1MiKSAvLyB3ZSB3ZXJlIHVzaW5nICRCT09UX0dPX0xERkxBR1MgdW50aWwgbm93CisrCX0KKyAJZ29Cb290c3RyYXAgOj0gcGF0aGYoIiVzL2dvX2Jvb3RzdHJhcCIsIHRvb2xkaXIpCisgCWNtZEdvIDo9IHBhdGhmKCIlcy9nbyIsIGdvYmluKQorIAlpZiBkZWJ1ZyB7CitAQCAtMTMzMyw3ICsxMzYxLDExIEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgeworIAkJeHByaW50ZigiXG4iKQorIAl9CisgCXhwcmludGYoIkJ1aWxkaW5nIEdvIHRvb2xjaGFpbjIgdXNpbmcgZ29fYm9vdHN0cmFwIGFuZCBHbyB0b29sY2hhaW4xLlxuIikKKy0Jb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKKysJaWYgY3Jvc3NCdWlsZCB7CisrCQlvcy5TZXRlbnYoIkNDIiwgZGVmYXVsdGNjWyIiXSkKKysJfSBlbHNlIHsKKysJCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCisrCX0KKyAJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCBhcHBlbmQoW11zdHJpbmd7Ii1pIn0sIHRvb2xjaGFpbi4uLikuLi4pCisgCWlmIGRlYnVnIHsKKyAJCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9jb21waWxlIiwgdG9vbGRpciksICItVj1mdWxsIikKK0BAIC0xMzcwLDUwICsxNDAyLDg0IEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgeworIAl9CisgCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIGFwcGVuZCh0b29sY2hhaW4sICJydW50aW1lL2ludGVybmFsL3N5cyIpLi4uKQorIAorLQlpZiBnb29zID09IG9sZGdvb3MgJiYgZ29hcmNoID09IG9sZGdvYXJjaCB7CistCQkvLyBDb21tb24gY2FzZSAtIG5vdCBzZXR0aW5nIHVwIGZvciBjcm9zcy1jb21waWxhdGlvbi4KKy0JCXRpbWVsb2coImJ1aWxkIiwgInRvb2xjaGFpbiIpCistCQlpZiB2ZmxhZyA+IDAgeworLQkJCXhwcmludGYoIlxuIikKKysJaWYgY3Jvc3NCdWlsZCB7CisrCQlnb2djZmxhZ3MgPSBvcy5HZXRlbnYoIkdPX0dDRkxBR1MiKQorKwkJZ29sZGZsYWdzID0gb3MuR2V0ZW52KCJHT19MREZMQUdTIikKKysJCXRvb2xfZmlsZXMsIF8gOj0gZmlsZXBhdGguR2xvYihwYXRoZigiJXMvKiIsIHRvb2xkaXIpKQorKwkJZm9yIF8sIGYgOj0gcmFuZ2UgdG9vbF9maWxlcyB7CisrCQkJY29weWZpbGUocGF0aGYoIiVzLyVzIiwgYnVpbGRfdG9vbGRpciwgZmlsZXBhdGguQmFzZShmKSksIGYsIHdyaXRlRXhlYykKKysJCQl4cmVtb3ZlKGYpCisrCQl9CisrCQlvcy5TZXRlbnYoIkdPVE9PTERJUiIsIGJ1aWxkX3Rvb2xkaXIpCisrCQlnb0Jvb3RzdHJhcCA9IHBhdGhmKCIlcy9nb19ib290c3RyYXAiLCBidWlsZF90b29sZGlyKQorKwkJaWYgaG9zdE9ubHkgeworKwkJCXRpbWVsb2coImJ1aWxkIiwgImhvc3QgdG9vbGNoYWluIikKKysJCQlpZiB2ZmxhZyA+IDAgeworKwkJCQl4cHJpbnRmKCJcbiIpCisrCQkJfQorKwkJCXhwcmludGYoIkJ1aWxkaW5nICVzIGZvciBob3N0LCAlcy8lcy5cbiIsIHN0cmluZ3MuSm9pbih0b0J1aWxkLCAiLCIpLCBnb29zLCBnb2FyY2gpCisrCQkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQorKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCisrCQkJLy8gU2tpcCBjbWRHbyBzdGFsZW5lc3MgY2hlY2tzIGhlcmUsIHNpbmNlIHdlIGNhbid0IG5lY2Vzc2FyaWx5IHJ1biB0aGUgY21kR28gYmluYXJ5CisrCisrCQkJdGltZWxvZygiYnVpbGQiLCAidGFyZ2V0IHRvb2xjaGFpbiIpCisrCQkJaWYgdmZsYWcgPiAwIHsKKysJCQkJeHByaW50ZigiXG4iKQorKwkJCX0KKysJCX0gZWxzZSBpZiB0YXJnZXRPbmx5IHsKKysJCQlnb29zID0gb2xkZ29vcworKwkJCWdvYXJjaCA9IG9sZGdvYXJjaAorKwkJCW9zLlNldGVudigiR09PUyIsIGdvb3MpCisrCQkJb3MuU2V0ZW52KCJHT0FSQ0giLCBnb2FyY2gpCisrCQkJb3MuU2V0ZW52KCJDQyIsIGNvbXBpbGVyRW52TG9va3VwKGRlZmF1bHRjYywgZ29vcywgZ29hcmNoKSkKKysJCQl4cHJpbnRmKCJCdWlsZGluZyAlcyBmb3IgdGFyZ2V0LCAlcy8lcy5cbiIsIHN0cmluZ3MuSm9pbih0b0J1aWxkLCAiLCIpLCBnb29zLCBnb2FyY2gpCisrCQkJZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCB0b0J1aWxkLi4uKQorKwkJCWNoZWNrTm90U3RhbGUoZ29Cb290c3RyYXAsIHRvQnVpbGQuLi4pCisrCQkJLy8gU2tpcCBjbWRHbyBzdGFsZW5lc3MgY2hlY2tzIGhlcmUsIHNpbmNlIHdlIGNhbid0IHJ1biB0aGUgdGFyZ2V0J3MgY21kR28gYmluYXJ5CisgCQl9CistCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQorIAl9IGVsc2UgeworLQkJLy8gR09PUy9HT0FSQ0ggZG9lcyBub3QgbWF0Y2ggR09IT1NUT1MvR09IT1NUQVJDSC4KKy0JCS8vIEZpbmlzaCBHT0hPU1RPUy9HT0hPU1RBUkNIIGluc3RhbGxhdGlvbiBhbmQgdGhlbgorLQkJLy8gcnVuIEdPT1MvR09BUkNIIGluc3RhbGxhdGlvbi4KKy0JCXRpbWVsb2coImJ1aWxkIiwgImhvc3QgdG9vbGNoYWluIikKKy0JCWlmIHZmbGFnID4gMCB7CistCQkJeHByaW50ZigiXG4iKQorKworKwkJaWYgZ29vcyA9PSBvbGRnb29zICYmIGdvYXJjaCA9PSBvbGRnb2FyY2ggeworKwkJCS8vIENvbW1vbiBjYXNlIC0gbm90IHNldHRpbmcgdXAgZm9yIGNyb3NzLWNvbXBpbGF0aW9uLgorKwkJCXRpbWVsb2coImJ1aWxkIiwgInRvb2xjaGFpbiIpCisrCQkJaWYgdmZsYWcgPiAwIHsKKysJCQkJeHByaW50ZigiXG4iKQorKwkJCX0KKysJCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQorKwkJfSBlbHNlIHsKKysJCQkvLyBHT09TL0dPQVJDSCBkb2VzIG5vdCBtYXRjaCBHT0hPU1RPUy9HT0hPU1RBUkNILgorKwkJCS8vIEZpbmlzaCBHT0hPU1RPUy9HT0hPU1RBUkNIIGluc3RhbGxhdGlvbiBhbmQgdGhlbgorKwkJCS8vIHJ1biBHT09TL0dPQVJDSCBpbnN0YWxsYXRpb24uCisrCQkJdGltZWxvZygiYnVpbGQiLCAiaG9zdCB0b29sY2hhaW4iKQorKwkJCWlmIHZmbGFnID4gMCB7CisrCQkJCXhwcmludGYoIlxuIikKKysJCQl9CisrCQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciBob3N0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKKysJCQlnb0luc3RhbGwoZ29Cb290c3RyYXAsICJzdGQiLCAiY21kIikKKysJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCAic3RkIiwgImNtZCIpCisrCQkJY2hlY2tOb3RTdGFsZShjbWRHbywgInN0ZCIsICJjbWQiKQorKworKwkJCXRpbWVsb2coImJ1aWxkIiwgInRhcmdldCB0b29sY2hhaW4iKQorKwkJCWlmIHZmbGFnID4gMCB7CisrCQkJCXhwcmludGYoIlxuIikKKysJCQl9CisrCQkJZ29vcyA9IG9sZGdvb3MKKysJCQlnb2FyY2ggPSBvbGRnb2FyY2gKKysJCQlvcy5TZXRlbnYoIkdPT1MiLCBnb29zKQorKwkJCW9zLlNldGVudigiR09BUkNIIiwgZ29hcmNoKQorKwkJCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCisrCQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciB0YXJnZXQsICVzLyVzLlxuIiwgZ29vcywgZ29hcmNoKQorIAkJfQorLQkJeHByaW50ZigiQnVpbGRpbmcgcGFja2FnZXMgYW5kIGNvbW1hbmRzIGZvciBob3N0LCAlcy8lcy5cbiIsIGdvb3MsIGdvYXJjaCkKKyAJCWdvSW5zdGFsbChnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQorIAkJY2hlY2tOb3RTdGFsZShnb0Jvb3RzdHJhcCwgInN0ZCIsICJjbWQiKQorIAkJY2hlY2tOb3RTdGFsZShjbWRHbywgInN0ZCIsICJjbWQiKQorIAorLQkJdGltZWxvZygiYnVpbGQiLCAidGFyZ2V0IHRvb2xjaGFpbiIpCistCQlpZiB2ZmxhZyA+IDAgeworLQkJCXhwcmludGYoIlxuIikKKy0JCX0KKy0JCWdvb3MgPSBvbGRnb29zCistCQlnb2FyY2ggPSBvbGRnb2FyY2gKKy0JCW9zLlNldGVudigiR09PUyIsIGdvb3MpCistCQlvcy5TZXRlbnYoIkdPQVJDSCIsIGdvYXJjaCkKKy0JCW9zLlNldGVudigiQ0MiLCBjb21waWxlckVudkxvb2t1cChkZWZhdWx0Y2MsIGdvb3MsIGdvYXJjaCkpCistCQl4cHJpbnRmKCJCdWlsZGluZyBwYWNrYWdlcyBhbmQgY29tbWFuZHMgZm9yIHRhcmdldCwgJXMvJXMuXG4iLCBnb29zLCBnb2FyY2gpCistCX0KKy0JdGFyZ2V0cyA6PSBbXXN0cmluZ3sic3RkIiwgImNtZCJ9CistCWlmIGdvb3MgPT0gImpzIiAmJiBnb2FyY2ggPT0gIndhc20iIHsKKy0JCS8vIFNraXAgdGhlIGNtZCB0b29scyBmb3IganMvd2FzbS4gVGhleSdyZSBub3QgdXNhYmxlLgorLQkJdGFyZ2V0cyA9IHRhcmdldHNbOjFdCistCX0KKy0JZ29JbnN0YWxsKGdvQm9vdHN0cmFwLCB0YXJnZXRzLi4uKQorLQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCB0YXJnZXRzLi4uKQorLQljaGVja05vdFN0YWxlKGNtZEdvLCB0YXJnZXRzLi4uKQorLQlpZiBkZWJ1ZyB7CistCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCAiLVY9ZnVsbCIpCistCQlydW4oIiIsIFNob3dPdXRwdXR8Q2hlY2tFeGl0LCBwYXRoZigiJXMvYnVpbGRpZCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvcGtnLyVzXyVzL3J1bnRpbWUvaW50ZXJuYWwvc3lzLmEiLCBnb3Jvb3QsIGdvb3MsIGdvYXJjaCkpCistCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKKy0JCWNvcHlmaWxlKHBhdGhmKCIlcy9jb21waWxlNCIsIHRvb2xkaXIpLCBwYXRoZigiJXMvY29tcGlsZSIsIHRvb2xkaXIpLCB3cml0ZUV4ZWMpCisrCQlpZiBkZWJ1ZyB7CisrCQkJcnVuKCIiLCBTaG93T3V0cHV0fENoZWNrRXhpdCwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgIi1WPWZ1bGwiKQorKwkJCXJ1bigiIiwgU2hvd091dHB1dHxDaGVja0V4aXQsIHBhdGhmKCIlcy9idWlsZGlkIiwgdG9vbGRpciksIHBhdGhmKCIlcy9wa2cvJXNfJXMvcnVudGltZS9pbnRlcm5hbC9zeXMuYSIsIGdvcm9vdCwgZ29vcywgZ29hcmNoKSkKKysJCQljaGVja05vdFN0YWxlKGdvQm9vdHN0cmFwLCBhcHBlbmQodG9vbGNoYWluLCAicnVudGltZS9pbnRlcm5hbC9zeXMiKS4uLikKKysJCQljb3B5ZmlsZShwYXRoZigiJXMvY29tcGlsZTQiLCB0b29sZGlyKSwgcGF0aGYoIiVzL2NvbXBpbGUiLCB0b29sZGlyKSwgd3JpdGVFeGVjKQorKwkJfQorIAl9CisgCisgCS8vIENoZWNrIHRoYXQgdGhlcmUgYXJlIG5vIG5ldyBmaWxlcyBpbiAkR09ST09UL2JpbiBvdGhlciB0aGFuCitAQCAtMTQzMCw4ICsxNDk2LDExIEBAIGZ1bmMgY21kYm9vdHN0cmFwKCkgeworIAkJfQorIAl9CisgCistCS8vIFJlbW92ZSBnb19ib290c3RyYXAgbm93IHRoYXQgd2UncmUgZG9uZS4KKy0JeHJlbW92ZShwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgdG9vbGRpcikpCisrCS8vIEV4Y2VwdCB0aGF0IGZvciBzcGxpdCBob3N0L3RhcmdldCBjcm9zcy1idWlsZHMsIHdlIG5lZWQgdG8KKysJLy8ga2VlcCBpdC4KKysJaWYgIWNyb3NzQnVpbGQgeworKwkJeHJlbW92ZShwYXRoZigiJXMvZ29fYm9vdHN0cmFwIiwgdG9vbGRpcikpCisrCX0KKyAKKyAJaWYgZ29vcyA9PSAiYW5kcm9pZCIgeworIAkJLy8gTWFrZSBzdXJlIHRoZSBleGVjIHdyYXBwZXIgd2lsbCBzeW5jIGEgZnJlc2ggJEdPUk9PVCB0byB0aGUgZGV2aWNlLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA3LWNtZC1nby1tYWtlLUdPUk9PVC1wcmVjaW91cy1ieS1kZWZhdWx0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5M2Y4M2QKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDctY21kLWdvLW1ha2UtR09ST09ULXByZWNpb3VzLWJ5LWRlZmF1bHQucGF0Y2gKQEAgLTAsMCArMSwxMDQgQEAKK0Zyb20gOWJhNTA3ZTA3NmM3NDRmNGQzOTQ0MThlNGE4NDllNjhjZDQyNmE0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXggS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDIzIE9jdCAyMDE5IDIxOjE4OjU2ICswNDMwCitTdWJqZWN0OiBbUEFUQ0ggNy85XSBjbWQvZ286IG1ha2UgR09ST09UIHByZWNpb3VzIGJ5IGRlZmF1bHQKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworVGhlIGdvIGJ1aWxkIHRvb2wgbm9ybWFsbHkgcmVidWlsZHMgd2hhdGV2ZXIgaXQgZGV0ZWN0cyBpcworc3RhbGUuICBUaGlzIGNhbiBiZSBhIHByb2JsZW0gd2hlbiBHT1JPT1QgaXMgaW50ZW5kZWQgdG8KK2JlIHJlYWQtb25seSBhbmQgdGhlIGdvIHJ1bnRpbWUgaGFzIGJlZW4gYnVpbHQgYXMgYSBzaGFyZWQKK2xpYnJhcnksIHNpbmNlIHdlIGRvbid0IHdhbnQgZXZlcnkgYXBwbGljYXRpb24gdG8gYmUgcmVidWlsZGluZwordGhlIHNoYXJlZCBydW50aW1lIC0gcGFydGljdWxhcmx5IGluIGNyb3NzLWJ1aWxkL3BhY2thZ2luZworc2V0dXBzLCBzaW5jZSB0aGF0IHdvdWxkIGxlYWQgdG8gJ2FiaSBtaXNtYXRjaCcgcnVudGltZSBlcnJvcnMuCisKK1RoaXMgcGF0Y2ggcHJldmVudHMgdGhlIGluc3RhbGwgYW5kIGxpbmtzaGFyZWQgYWN0aW9ucyBmcm9tCitpbnN0YWxsaW5nIHRvIEdPUk9PVCB1bmxlc3Mgb3ZlcnJpZGRlbiB3aXRoIHRoZSBHT1JPT1RfT1ZFUlJJREUKK2Vudmlyb25tZW50IHZhcmlhYmxlLgorCitBZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCit0aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKK01hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgorCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgSiBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9hY3Rpb24uZ28gfCAgMyArKysKKyBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28gIHwgIDYgKysrKysrCisgc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28gICB8IDI1ICsrKysrKysrKysrKysrKysrKysrKysrKysKKyAzIGZpbGVzIGNoYW5nZWQsIDM0IGluc2VydGlvbnMoKykKKworLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbworKysrIGIvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2FjdGlvbi5nbworQEAgLTY3MCw2ICs2NzAsOSBAQCBmdW5jIChiICpCdWlsZGVyKSBhZGRUcmFuc2l0aXZlTGlua0RlcHMoCisgCQkJaWYgcDEgPT0gbmlsIHx8IHAxLlNobGliID09ICIiIHx8IGhhdmVTaGxpYltmaWxlcGF0aC5CYXNlKHAxLlNobGliKV0geworIAkJCQljb250aW51ZQorIAkJCX0KKysJCQlpZiBnb1Jvb3RQcmVjaW91cyAmJiAocDEuU3RhbmRhcmQgfHwgcDEuR29yb290KSB7CisrCQkJCWNvbnRpbnVlCisrCQkJfQorIAkJCWhhdmVTaGxpYltmaWxlcGF0aC5CYXNlKHAxLlNobGliKV0gPSB0cnVlCisgCQkJLy8gVE9ETyhyc2MpOiBUaGUgdXNlIG9mIE1vZGVJbnN0YWxsIGhlcmUgaXMgc3VzcGVjdCwgYnV0IGlmIHdlIG9ubHkgZG8gTW9kZUJ1aWxkLAorIAkJCS8vIHdlJ2xsIGVuZCB1cCBidWlsZGluZyBhbiBvdmVyYWxsIGxpYnJhcnkgb3IgZXhlY3V0YWJsZSB0aGF0IGRlcGVuZHMgYXQgcnVudGltZQorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2J1aWxkLmdvCisrKysgYi9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KK0BAIC0xNjcsNiArMTY3LDggQEAgU2VlIGFsc286IGdvIGluc3RhbGwsIGdvIGdldCwgZ28gY2xlYW4uCisgCisgY29uc3QgY29uY3VycmVudEdDQmFja2VuZENvbXBpbGF0aW9uRW5hYmxlZEJ5RGVmYXVsdCA9IHRydWUKKyAKKyt2YXIgZ29Sb290UHJlY2lvdXMgYm9vbCA9IHRydWUKKysKKyBmdW5jIGluaXQoKSB7CisgCS8vIGJyZWFrIGluaXQgY3ljbGUKKyAJQ21kQnVpbGQuUnVuID0gcnVuQnVpbGQKK0BAIC0xNzksNiArMTgxLDEwIEBAIGZ1bmMgaW5pdCgpIHsKKyAKKyAJQWRkQnVpbGRGbGFncyhDbWRCdWlsZCwgRGVmYXVsdEJ1aWxkRmxhZ3MpCisgCUFkZEJ1aWxkRmxhZ3MoQ21kSW5zdGFsbCwgRGVmYXVsdEJ1aWxkRmxhZ3MpCisrCisrCWlmIHggOj0gb3MuR2V0ZW52KCJHT1JPT1RfT1ZFUlJJREUiKTsgeCAhPSAiIiB7CisrCQlnb1Jvb3RQcmVjaW91cyA9IGZhbHNlCisrCX0KKyB9CisgCisgLy8gTm90ZSB0aGF0IGZsYWdzIGNvbnN1bHRlZCBieSBvdGhlciBwYXJ0cyBvZiB0aGUgY29kZQorLS0tIGEvc3JjL2NtZC9nby9pbnRlcm5hbC93b3JrL2V4ZWMuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9leGVjLmdvCitAQCAtNDY0LDYgKzQ2NCwyMyBAQCBmdW5jIChiICpCdWlsZGVyKSBidWlsZChhICpBY3Rpb24pIChlcnIKKyAJCXJldHVybiBlcnJvcnMuTmV3KCJiaW5hcnktb25seSBwYWNrYWdlcyBhcmUgbm8gbG9uZ2VyIHN1cHBvcnRlZCIpCisgCX0KKyAKKysJaWYgZ29Sb290UHJlY2lvdXMgJiYgKGEuUGFja2FnZS5TdGFuZGFyZCB8fCBhLlBhY2thZ2UuR29yb290KSB7CisrCQlfLCBlcnIgOj0gb3MuU3RhdChhLlBhY2thZ2UuVGFyZ2V0KQorKwkJaWYgZXJyID09IG5pbCB7CisrCQkJYS5idWlsdCA9IGEuUGFja2FnZS5UYXJnZXQKKysJCQlhLlRhcmdldCA9IGEuUGFja2FnZS5UYXJnZXQKKysJCQlhLmJ1aWxkSUQgPSBiLmZpbGVIYXNoKGEuUGFja2FnZS5UYXJnZXQpCisrCQkJYS5QYWNrYWdlLlN0YWxlID0gZmFsc2UKKysJCQlhLlBhY2thZ2UuU3RhbGVSZWFzb24gPSAiR09ST09ULXJlc2lkZW50IHBhY2thZ2UiCisrCQkJcmV0dXJuIG5pbAorKwkJfQorKwkJYS5QYWNrYWdlLlN0YWxlID0gdHJ1ZQorKwkJYS5QYWNrYWdlLlN0YWxlUmVhc29uID0gIm1pc3Npbmcgb3IgaW52YWxpZCBHT1JPT1QtcmVzaWRlbnQgcGFja2FnZSIKKysJCWlmIGIuSXNDbWRMaXN0IHsKKysJCQlyZXR1cm4gbmlsCisrCQl9CisrCX0KKysKKyAJaWYgZXJyIDo9IGIuTWtkaXIoYS5PYmpkaXIpOyBlcnIgIT0gbmlsIHsKKyAJCXJldHVybiBlcnIKKyAJfQorQEAgLTE0OTMsNiArMTUxMCwxNCBAQCBmdW5jIEJ1aWxkSW5zdGFsbEZ1bmMoYiAqQnVpbGRlciwgYSAqQWN0CisgCQlyZXR1cm4gbmlsCisgCX0KKyAKKysJaWYgZ29Sb290UHJlY2lvdXMgJiYgYS5QYWNrYWdlICE9IG5pbCB7CisrCQlwIDo9IGEuUGFja2FnZQorKwkJaWYgcC5TdGFuZGFyZCB8fCBwLkdvcm9vdCB7CisrCQkJZXJyIDo9IGZtdC5FcnJvcmYoImF0dGVtcHRpbmcgdG8gaW5zdGFsbCBwYWNrYWdlICVzIGludG8gcmVhZC1vbmx5IEdPUk9PVCIsIHAuSW1wb3J0UGF0aCkKKysJCQlyZXR1cm4gZXJyCisrCQl9CisrCX0KKysKKyAJaWYgZXJyIDo9IGIuTWtkaXIoYS5PYmpkaXIpOyBlcnIgIT0gbmlsIHsKKyAJCXJldHVybiBlcnIKKyAJfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA4LXVzZS1HT0JVSUxETU9ERS10by1zZXQtYnVpbGRtb2RlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA4LXVzZS1HT0JVSUxETU9ERS10by1zZXQtYnVpbGRtb2RlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmIxNWQ5ODEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby0xLjE0LzAwMDgtdXNlLUdPQlVJTERNT0RFLXRvLXNldC1idWlsZG1vZGUucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSA5NzFiNTYyNjMzOWNlMGM0ZDU3Zjk3MjFjOWE4MWFmNTY2YzVhMDQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleCBLdWJlIDxhbGV4YW5kZXIuai5rdWJlQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMjE6MTk6MjYgKzA0MzAKK1N1YmplY3Q6IFtQQVRDSCA4LzldIGNtZC9nbzogVXNlIEdPQlVJTERNT0RFIHRvIHNldCBidWlsZG1vZGUKKworVXBzdHJlYW0tU3RhdHVzOiBEZW5pZWQgW3Vwc3RyZWFtIGNob29zZSBhbnRvaGVyIHNvbHV0aW9uOiBgMTdhMjU2YgorY21kL2dvOiAtYnVpbGRtb2RlPXBpZSBmb3IgYW5kcm9pZC9hcm0nXQorCitXaGlsZSBidWlsZGluZyBnbyBpdHNlbGYsIHRoZSBnbyBidWlsZCBzeXN0ZW0gZG9lcyBub3Qgc3VwcG9ydAordG8gc2V0IGAtYnVpbGRtb2RlPXBpZScgZnJvbSBlbnZpcm9ubWVudC4KKworQWRkIEdPQlVJTERNT0RFIHRvIHN1cHBvcnQgaXQgd2hpY2ggbWFrZSBQSUUgZXhlY3V0YWJsZXMgdGhlIGRlZmF1bHQKK2J1aWxkIG1vZGUsIGFzIFBJRSBleGVjdXRhYmxlcyBhcmUgcmVxdWlyZWQgYXMgb2YgWW9jdG8KKworUmVmZXJzOiBodHRwczovL2dyb3Vwcy5nb29nbGUuY29tL2ZvcnVtLyMhdG9waWMvZ29sYW5nLWRldi9nUkNlNVVSS2V3SQorCitBZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCit0aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKK0hvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KKworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEogS3ViZSA8YWxleGFuZGVyLmoua3ViZUBnbWFpbC5jb20+CistLS0KKyBzcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28gfCA4ICsrKysrKystCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCistLS0gYS9zcmMvY21kL2dvL2ludGVybmFsL3dvcmsvYnVpbGQuZ28KKysrKyBiL3NyYy9jbWQvZ28vaW50ZXJuYWwvd29yay9idWlsZC5nbworQEAgLTI1MSw3ICsyNTEsMTMgQEAgZnVuYyBBZGRCdWlsZEZsYWdzKGNtZCAqYmFzZS5Db21tYW5kLCBtYQorIAorIAljbWQuRmxhZy5WYXIoJmxvYWQuQnVpbGRBc21mbGFncywgImFzbWZsYWdzIiwgIiIpCisgCWNtZC5GbGFnLlZhcihidWlsZENvbXBpbGVye30sICJjb21waWxlciIsICIiKQorLQljbWQuRmxhZy5TdHJpbmdWYXIoJmNmZy5CdWlsZEJ1aWxkbW9kZSwgImJ1aWxkbW9kZSIsICJkZWZhdWx0IiwgIiIpCisrCisrCWlmIGJtIDo9IG9zLkdldGVudigiR09CVUlMRE1PREUiKTsgYm0gIT0gIiIgeworKwkJY21kLkZsYWcuU3RyaW5nVmFyKCZjZmcuQnVpbGRCdWlsZG1vZGUsICJidWlsZG1vZGUiLCBibSwgIiIpCisrCX0gZWxzZSB7CisrCQljbWQuRmxhZy5TdHJpbmdWYXIoJmNmZy5CdWlsZEJ1aWxkbW9kZSwgImJ1aWxkbW9kZSIsICJkZWZhdWx0IiwgIiIpCisrCX0KKysKKyAJY21kLkZsYWcuVmFyKCZsb2FkLkJ1aWxkR2NmbGFncywgImdjZmxhZ3MiLCAiIikKKyAJY21kLkZsYWcuVmFyKCZsb2FkLkJ1aWxkR2NjZ29mbGFncywgImdjY2dvZmxhZ3MiLCAiIikKKyAJaWYgbWFzayZPbWl0TW9kRmxhZyA9PSAwIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLTEuMTQvMDAwOS1sZC1yZXBsYWNlLWdsaWJjLWR5bmFtaWMtbGlua2VyLXdpdGgtbXVzbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MjdjZmIwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tMS4xNC8wMDA5LWxkLXJlcGxhY2UtZ2xpYmMtZHluYW1pYy1saW5rZXItd2l0aC1tdXNsLnBhdGNoCkBAIC0wLDAgKzEsMTE1IEBACitGcm9tIDk3MzI1MWFlMGM2OWEzNTcyMWY2MTE1MzQ1ZDNmNTdiMjg0Nzk3OWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4IEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgorRGF0ZTogV2VkLCAyMyBPY3QgMjAxOSAyMToyMDoxMyArMDQzMAorU3ViamVjdDogW1BBVENIIDkvOV0gbGQ6IHJlcGxhY2UgZ2xpYmMgZHluYW1pYyBsaW5rZXIgd2l0aCBtdXNsCisKK1Jld29yayBvZiBwYXRjaCBieSBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorZm9yIGdvIDEuMTAuICBTaG91bGQgYmUgYXBwbGllZCBjb25kaXRpb25hbGx5IG9uCittdXNsIGJlaW5nIHRoZSBzeXN0ZW0gQyBsaWJyYXJ5LgorCitBZGFwdGVkIHRvIEdvIDEuMTMgZnJvbSBwYXRjaGVzIG9yaWdpbmFsbHkgc3VibWl0dGVkIHRvCit0aGUgbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvIHRyZWUgYnkKK01hdHQgTWFkaXNvbiA8bWF0dEBtYWRpc29uLnN5c3RlbXM+LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW1JlYWwgZml4IHNob3VsZCBiZSBwb3J0YWJsZSBhY3Jvc3MgbGliY3NdCisKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBKIEt1YmUgPGFsZXhhbmRlci5qLmt1YmVAZ21haWwuY29tPgorLS0tCisgc3JjL2NtZC9saW5rL2ludGVybmFsL2FtZDY0L29iai5nbyAgfCAyICstCisgc3JjL2NtZC9saW5rL2ludGVybmFsL2FybS9vYmouZ28gICAgfCAyICstCisgc3JjL2NtZC9saW5rL2ludGVybmFsL2FybTY0L29iai5nbyAgfCAyICstCisgc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvICAgfCAyICstCisgc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28gfCAyICstCisgc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbyAgfCAyICstCisgc3JjL2NtZC9saW5rL2ludGVybmFsL3MzOTB4L29iai5nbyAgfCAyICstCisgc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28gICAgfCAyICstCisgOCBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28KKysrKyBiL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hbWQ2NC9vYmouZ28KK0BAIC01OSw3ICs1OSw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCVBFcmVsb2MxOiAgICAgICAgIHBlcmVsb2MxLAorIAkJVExTSUV0b0xFOiAgICAgICAgdGxzSUV0b0xFLAorIAorLQkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQtbGludXgteDg2LTY0LnNvLjIiLAorKwkJTGludXhkeW5sZDogICAgICIvbGliNjQvbGQtbXVzbC14ODYtNjQuc28uMSIsCisgCQlGcmVlYnNkZHlubGQ6ICAgIi9saWJleGVjL2xkLWVsZi5zby4xIiwKKyAJCU9wZW5ic2RkeW5sZDogICAiL3Vzci9saWJleGVjL2xkLnNvIiwKKyAJCU5ldGJzZGR5bmxkOiAgICAiL2xpYmV4ZWMvbGQuZWxmX3NvIiwKKy0tLSBhL3NyYy9jbWQvbGluay9pbnRlcm5hbC9hcm0vb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtL29iai5nbworQEAgLTU5LDcgKzU5LDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCQlQRXJlbG9jMTogICAgICAgICBwZXJlbG9jMSwKKyAKKy0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYi9sZC1saW51eC5zby4zIiwgLy8gMiBmb3IgT0FCSSwgMyBmb3IgRUFCSQorKwkJTGludXhkeW5sZDogICAgICIvbGliL2xkLW11c2wtYXJtaGYuc28uMSIsCisgCQlGcmVlYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC1lbGYuc28uMSIsCisgCQlPcGVuYnNkZHlubGQ6ICAgIi91c3IvbGliZXhlYy9sZC5zbyIsCisgCQlOZXRic2RkeW5sZDogICAgIi9saWJleGVjL2xkLmVsZl9zbyIsCistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvYXJtNjQvb2JqLmdvCitAQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAorIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAiL2xpYi9sZC1saW51eC1hYXJjaDY0LnNvLjEiLAorKwkJTGludXhkeW5sZDogIi9saWIvbGQtbXVzbC1hYXJjaDY0LnNvLjEiLAorIAorIAkJRnJlZWJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQtZWxmLnNvLjEiLAorIAkJT3BlbmJzZGR5bmxkOiAgICIvdXNyL2xpYmV4ZWMvbGQuc28iLAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHMvb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwcy9vYmouZ28KK0BAIC02MCw3ICs2MCw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCisgCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKKyAKKy0JCUxpbnV4ZHlubGQ6ICIvbGliL2xkLnNvLjEiLAorKwkJTGludXhkeW5sZDogIi9saWIvbGQtbXVzbC1taXBzbGUuc28uMSIsCisgCisgCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCisgCQlPcGVuYnNkZHlubGQ6ICAgIlhYWCIsCistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvbWlwczY0L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL21pcHM2NC9vYmouZ28KK0BAIC01OSw3ICs1OSw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCUdlbnRleHQ6ICAgICAgICAgIGdlbnRleHQsCisgCQlNYWNob3JlbG9jMTogICAgICBtYWNob3JlbG9jMSwKKyAKKy0JCUxpbnV4ZHlubGQ6ICAgICAiL2xpYjY0L2xkNjQuc28uMSIsCisrCQlMaW51eGR5bmxkOiAgICAgIi9saWI2NC9sZC1tdXNsLW1pcHM2NGxlLnNvLjEiLAorIAkJRnJlZWJzZGR5bmxkOiAgICJYWFgiLAorIAkJT3BlbmJzZGR5bmxkOiAgICJYWFgiLAorIAkJTmV0YnNkZHlubGQ6ICAgICJYWFgiLAorLS0tIGEvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3BwYzY0L29iai5nbworQEAgLTYzLDcgKzYzLDcgQEAgZnVuYyBJbml0KCkgKCpzeXMuQXJjaCwgbGQuQXJjaCkgeworIAkJWGNvZmZyZWxvYzE6ICAgICAgeGNvZmZyZWxvYzEsCisgCisgCQkvLyBUT0RPKGF1c3Rpbik6IEFCSSB2MSB1c2VzIC91c3IvbGliL2xkLnNvLjEsCistCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCisrCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtcG93ZXJwYzY0bGUuc28uMSIsCisgCisgCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCisgCQlPcGVuYnNkZHlubGQ6ICAgIlhYWCIsCistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCisrKysgYi9zcmMvY21kL2xpbmsvaW50ZXJuYWwvczM5MHgvb2JqLmdvCitAQCAtNTcsNyArNTcsNyBAQCBmdW5jIEluaXQoKSAoKnN5cy5BcmNoLCBsZC5BcmNoKSB7CisgCQlHZW50ZXh0OiAgICAgICAgICBnZW50ZXh0LAorIAkJTWFjaG9yZWxvYzE6ICAgICAgbWFjaG9yZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkNjQuc28uMSIsCisrCQlMaW51eGR5bmxkOiAiL2xpYjY0L2xkLW11c2wtczM5MHguc28uMSIsCisgCisgCQkvLyBub3QgcmVsZXZhbnQgZm9yIHMzOTB4CisgCQlGcmVlYnNkZHlubGQ6ICAgIlhYWCIsCistLS0gYS9zcmMvY21kL2xpbmsvaW50ZXJuYWwveDg2L29iai5nbworKysrIGIvc3JjL2NtZC9saW5rL2ludGVybmFsL3g4Ni9vYmouZ28KK0BAIC01OCw3ICs1OCw3IEBAIGZ1bmMgSW5pdCgpICgqc3lzLkFyY2gsIGxkLkFyY2gpIHsKKyAJCU1hY2hvcmVsb2MxOiAgICAgIG1hY2hvcmVsb2MxLAorIAkJUEVyZWxvYzE6ICAgICAgICAgcGVyZWxvYzEsCisgCistCQlMaW51eGR5bmxkOiAgICIvbGliL2xkLWxpbnV4LnNvLjIiLAorKwkJTGludXhkeW5sZDogICAiL2xpYi9sZC1tdXNsLWkzODYuc28uMSIsCisgCQlGcmVlYnNkZHlubGQ6ICIvdXNyL2xpYmV4ZWMvbGQtZWxmLnNvLjEiLAorIAkJT3BlbmJzZGR5bmxkOiAiL3Vzci9saWJleGVjL2xkLnNvIiwKKyAJCU5ldGJzZGR5bmxkOiAgIi91c3IvbGliZXhlYy9sZC5lbGZfc28iLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY29tbW9uLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNvbW1vbi5pbmMKaW5kZXggOTNhM2QzYi4uZjE4ZDkyOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY29tbW9uLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jb21tb24uaW5jCkBAIC0yNyw2ICsyNywxNiBAQAogR09UTVBESVJbdmFyZGVwdmFsdWVdID0gIiIKIGV4cG9ydCBDR09fRU5BQkxFRCA9ICIxIgogCitleHBvcnQgR09IT1NUT1MgPz0gIiR7QlVJTERfR09PU30iCitleHBvcnQgR09IT1NUQVJDSCA/PSAiJHtCVUlMRF9HT0FSQ0h9IgorZXhwb3J0IEdPUk9PVF9CT09UU1RSQVAgPz0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKK2V4cG9ydCBHT09TID89ICIke1RBUkdFVF9HT09TfSIKK2V4cG9ydCBHT0FSQ0ggPz0gIiR7VEFSR0VUX0dPQVJDSH0iCitleHBvcnQgR09BUk0gPz0gIiR7VEFSR0VUX0dPQVJNfSIKK2V4cG9ydCBHTzM4NiA/PSAiJHtUQVJHRVRfR08zODZ9IgorZXhwb3J0IEdPTUlQUyA/PSAiJHtUQVJHRVRfR09NSVBTfSIKK2V4cG9ydCBHT1JPT1RfRklOQUwgPz0gIiR7bGliZGlyfS9nbyIKKwogZG9fY29tcGlsZV9wcmVwZW5kKCkgewogCUJVSUxEX0NDPSR7QlVJTERfQ0N9CiB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbi5pbmMKaW5kZXggOTQ1ZDBmOS4uZDQ5MjUwYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MtY2FuYWRpYW4uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuLmluYwpAQCAtMTMsMTEgKzEzLDcgQEAKICAgICAgICAgICAgICAgICAgICAgLWZkZWJ1Zy1wcmVmaXgtbWFwPSR7U1RBR0lOR19ESVJfTkFUSVZFfT0gXAogICAgICAgICAgICAgICAgICAgICAiCiAKLWV4cG9ydCBHT0hPU1RPUyA9ICIke0JVSUxEX0dPT1N9IgotZXhwb3J0IEdPSE9TVEFSQ0ggPSAiJHtCVUlMRF9HT0FSQ0h9IgotZXhwb3J0IEdPUk9PVF9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvIgogZXhwb3J0IEdPVE9PTERJUl9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9LyR7SE9TVF9TWVN9L2dvL3BrZy90b29sLyR7QlVJTERfR09UVVBMRX0iCi1leHBvcnQgR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS9nbyIKIGV4cG9ydCBDR09fQ0ZMQUdTID0gIiR7Q0ZMQUdTfSIKIGV4cG9ydCBDR09fTERGTEFHUyA9ICIke0xERkxBR1N9IgogZXhwb3J0IEdPX0xERkxBR1MgPSAnLWxpbmttb2RlIGV4dGVybmFsIC1leHRsZCAke0hPU1RfUFJFRklYfWdjYyAtZXh0bGRmbGFncyAiLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0gJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9ICR7SE9TVF9DQ19BUkNIfSAke0xERkxBR1N9IicKQEAgLTI1LDggKzIxLDggQEAKIGRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCiAKIGRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IENDX0ZPUl8ke0hPU1RfR09PU31fJHtIT1NUX0dPQVJDSH09IiR7SE9TVF9QUkVGSVh9Z2NjIC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9JHtTREtQQVRITkFUSVZFfSAke1NFQ1VSSVRZX05PUElFX0NGTEFHU30iCi0JZXhwb3J0IENYWF9GT1JfJHtIT1NUX0dPT1N9XyR7SE9TVF9HT0FSQ0h9PSIke0hPU1RfUFJFRklYfWd4eCAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSR7U0RLUEFUSE5BVElWRX0gJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgorCWV4cG9ydCBDQ19GT1JfJHtIT1NUX0dPVFVQTEV9PSIke0hPU1RfUFJFRklYfWdjYyAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfSR7U0RLUEFUSE5BVElWRX0gJHtTRUNVUklUWV9OT1BJRV9DRkxBR1N9IgorCWV4cG9ydCBDWFhfRk9SXyR7SE9TVF9HT1RVUExFfT0iJHtIT1NUX1BSRUZJWH1neHggLS1zeXNyb290PSR7U1RBR0lOR19ESVJfSE9TVH0ke1NES1BBVEhOQVRJVkV9ICR7U0VDVVJJVFlfTk9QSUVfQ0ZMQUdTfSIKIAljZCBzcmMKIAkuL21ha2UuYmFzaCAtLWhvc3Qtb25seSAtLW5vLWJhbm5lcgogCWNkICR7Qn0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLWNhbmFkaWFuXzEuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbl8xLjE0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbl8xLjEyLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy1jYW5hZGlhbl8xLjE0LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zcy5pbmMKaW5kZXggM2QzNDRhNy4uM2Q1ODAzYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3MuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzLmluYwpAQCAtNSwyMyArNSwxNCBAQAogCiBQTiA9ICJnby1jcm9zcy0ke1RVTkVfUEtHQVJDSH0iCiAKLWV4cG9ydCBHT0hPU1RPUyA9ICIke0JVSUxEX0dPT1N9IgotZXhwb3J0IEdPSE9TVEFSQ0ggPSAiJHtCVUlMRF9HT0FSQ0h9IgotZXhwb3J0IEdPT1MgPSAiJHtUQVJHRVRfR09PU30iCi1leHBvcnQgR09BUkNIID0gIiR7VEFSR0VUX0dPQVJDSH0iCi1leHBvcnQgR09BUk0gPSAiJHtUQVJHRVRfR09BUk19IgotZXhwb3J0IEdPMzg2ID0gIiR7VEFSR0VUX0dPMzg2fSIKLWV4cG9ydCBHT01JUFMgPSAiJHtUQVJHRVRfR09NSVBTfSIKLWV4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKLWV4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9L2dvIgogZXhwb3J0IEdPQ0FDSEUgPSAiJHtCfS8uY2FjaGUiCiBDQyA9ICIke0BkLmdldFZhcignQlVJTERfQ0MnKS5zdHJpcCgpfSIKIAogZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKIAogZG9fY29tcGlsZSgpIHsKLQlleHBvcnQgQ0NfRk9SXyR7R09PU31fJHtHT0FSQ0h9PSIke1RBUkdFVF9QUkVGSVh9Z2NjICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCi0JZXhwb3J0IENYWF9GT1JfJHtHT09TfV8ke0dPQVJDaH09IiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKKwlleHBvcnQgQ0NfRk9SXyR7VEFSR0VUX0dPVFVQTEV9PSIke1RBUkdFVF9QUkVGSVh9Z2NjICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0iCisJZXhwb3J0IENYWF9GT1JfJHtUQVJHRVRfR09UVVBMRX09IiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSIKIAljZCBzcmMKIAkuL21ha2UuYmFzaCAtLWhvc3Qtb25seSAtLW5vLWJhbm5lcgogCWNkICR7Qn0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3NzXzEuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjE0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjEyLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc18xLjE0LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nkay5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nkay5pbmMKaW5kZXggOTRmNmZiOC4uZjBiZWM3OSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tY3Jvc3NzZGsuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrLmluYwpAQCAtNCwxOCArNCwxMSBAQAogUE4gPSAiZ28tY3Jvc3NzZGstJHtTREtfU1lTfSIKIFBST1ZJREVTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvLWNyb3Nzc2RrIgogCi1leHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKLWV4cG9ydCBHT0hPU1RBUkNIID0gIiR7QlVJTERfR09BUkNIfSIKLWV4cG9ydCBHT09TID0gIiR7VEFSR0VUX0dPT1N9IgotZXhwb3J0IEdPQVJDSCA9ICIke1RBUkdFVF9HT0FSQ0h9IgotZXhwb3J0IEdPUk9PVF9CT09UU1RSQVAgPSAiJHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dvIgotZXhwb3J0IEdPUk9PVF9GSU5BTCA9ICIke2xpYmRpcn0vZ28iCi0KIGRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCiAKIGRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IENDX0ZPUl8ke1RBUkdFVF9HT09TfV8ke1RBUkdFVF9HT0FSQ0h9PSIke1RBUkdFVF9QUkVGSVh9Z2NjICR7VEFSR0VUX0NDX0FSQ0h9IC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0ke1NES1BBVEhOQVRJVkV9IgotCWV4cG9ydCBDWFhfRk9SXyR7VEFSR0VUX0dPT1N9XyR7VEFSR0VUX0dPQVJDSH09IiR7VEFSR0VUX1BSRUZJWH1nKysgJHtUQVJHRVRfQ0NfQVJDSH0gLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSR7U0RLUEFUSE5BVElWRX0iCisJZXhwb3J0IENDX0ZPUl8ke1RBUkdFVF9HT1RVUExFfT0iJHtUQVJHRVRfUFJFRklYfWdjYyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtTREtQQVRITkFUSVZFfSIKKwlleHBvcnQgQ1hYX0ZPUl8ke1RBUkdFVF9HT1RVUExFfT0iJHtUQVJHRVRfUFJFRklYfWcrKyAke1RBUkdFVF9DQ19BUkNIfSAtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtTREtQQVRITkFUSVZFfSIKIAljZCBzcmMKIAkuL21ha2UuYmFzaCAtLWhvc3Qtb25seSAtLW5vLWJhbm5lcgogCWNkICR7Qn0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWNyb3Nzc2RrXzEuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nka18xLjE0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nka18xLjEyLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1jcm9zc3Nka18xLjE0LmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXAvMDAwMS1ib2x0X3Jpc2N2NjQtQWRkLXN1cHBvcnQtZm9yLXJpc2N2NjQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXAvMDAwMS1ib2x0X3Jpc2N2NjQtQWRkLXN1cHBvcnQtZm9yLXJpc2N2NjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGQ5N2Q0OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcC8wMDAxLWJvbHRfcmlzY3Y2NC1BZGQtc3VwcG9ydC1mb3ItcmlzY3Y2NC5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDVlMDUxNjY5ZDExN2Q3Y2Q5YjI0Y2VhMzQ5NDk1OWVlYzM5NmVjMWUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogU2F0LCAyNSBKYW4gMjAyMCAyMjozNzoyNSAtMDgwMAorU3ViamVjdDogW1BBVENIXSAvYm9sdF9yaXNjdjY0OiBBZGQgc3VwcG9ydCBmb3IgcmlzY3Y2NAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyB2ZW5kb3IvZ2l0aHViLmNvbS9ib2x0ZGIvYm9sdC9ib2x0X3Jpc2N2NjQuZ28gfCAxMiArKysrKysrKysrKysKKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCB2ZW5kb3IvZ2l0aHViLmNvbS9ib2x0ZGIvYm9sdC9ib2x0X3Jpc2N2NjQuZ28KKworZGlmZiAtLWdpdCBhL3ZlbmRvci9naXRodWIuY29tL2JvbHRkYi9ib2x0L2JvbHRfcmlzY3Y2NC5nbyBiL3ZlbmRvci9naXRodWIuY29tL2JvbHRkYi9ib2x0L2JvbHRfcmlzY3Y2NC5nbworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi4zZDZiODhkNAorLS0tIC9kZXYvbnVsbAorKysrIGIvdmVuZG9yL2dpdGh1Yi5jb20vYm9sdGRiL2JvbHQvYm9sdF9yaXNjdjY0LmdvCitAQCAtMCwwICsxLDEyIEBACisrLy8gK2J1aWxkIHJpc2N2NjQKKysKKytwYWNrYWdlIGJvbHQKKysKKysvLyBtYXhNYXBTaXplIHJlcHJlc2VudHMgdGhlIGxhcmdlc3QgbW1hcCBzaXplIHN1cHBvcnRlZCBieSBCb2x0LgorK2NvbnN0IG1heE1hcFNpemUgPSAweEZGRkZGRkZGRkZGRiAvLyAyNTZUQgorKworKy8vIG1heEFsbG9jU2l6ZSBpcyB0aGUgc2l6ZSB1c2VkIHdoZW4gY3JlYXRpbmcgYXJyYXkgcG9pbnRlcnMuCisrY29uc3QgbWF4QWxsb2NTaXplID0gMHg3RkZGRkZGRgorKworKy8vIEFyZSB1bmFsaWduZWQgbG9hZC9zdG9yZXMgYnJva2VuIG9uIHRoaXMgYXJjaD8KKyt2YXIgYnJva2VuVW5hbGlnbmVkID0gZmFsc2UKKy0tIAorMi4yNS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcF8wLjUuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLWRlcF8wLjUuNC5iYgppbmRleCBlYWQ4Nzg3Li42MTVjYjI4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1kZXBfMC41LjQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tZGVwXzAuNS40LmJiCkBAIC02LDYgKzYsNyBAQAogR09fSU1QT1JUID0gImdpdGh1Yi5jb20vZ29sYW5nL2RlcCIKIFNSQ19VUkkgPSAiZ2l0Oi8vJHtHT19JTVBPUlR9IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLXN1cHBvcnQtZm9yLW1pcHMtbWlwczY0LnBhdGNoO3BhdGNoZGlyPXNyYy9naXRodWIuY29tL2dvbGFuZy9kZXAgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1ib2x0X3Jpc2N2NjQtQWRkLXN1cHBvcnQtZm9yLXJpc2N2NjQucGF0Y2g7cGF0Y2hkaXI9c3JjL2dpdGh1Yi5jb20vZ29sYW5nL2RlcCBcCiAgICAgICAgICAgIgogCiBTUkNSRVYgPSAiMWY3YzE5ZTVmNTJmNDlmZmI5Zjk1NmY2NGMwMTBiZTE0NjgzNDY4YiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZV8xLjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tbmF0aXZlXzEuMTQuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLW5hdGl2ZV8xLjEyLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1uYXRpdmVfMS4xNC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lLmluYwppbmRleCA5NzMxZTE2Li4yMTE3OWE4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lLmluYwpAQCAtMiwxNSArMiw2IEBACiBERVBFTkRTX2NsYXNzLW5hdGl2ZXNkayA9ICJ2aXJ0dWFsLyR7VEFSR0VUX1BSRUZJWH1nby1jcm9zc3NkayIKIFBST1ZJREVTID0gInZpcnR1YWwvJHtUQVJHRVRfUFJFRklYfWdvLXJ1bnRpbWUiCiAKLWV4cG9ydCBHT0hPU1RPUyA9ICIke0JVSUxEX0dPT1N9IgotZXhwb3J0IEdPSE9TVEFSQ0ggPSAiJHtCVUlMRF9HT0FSQ0h9IgotZXhwb3J0IEdPT1MgPSAiJHtUQVJHRVRfR09PU30iCi1leHBvcnQgR09BUkNIID0gIiR7VEFSR0VUX0dPQVJDSH0iCi1leHBvcnQgR09BUk0gPSAiJHtUQVJHRVRfR09BUk19IgotZXhwb3J0IEdPMzg2ID0gIiR7VEFSR0VUX0dPMzg2fSIKLWV4cG9ydCBHT01JUFMgPSAiJHtUQVJHRVRfR09NSVBTfSIKLWV4cG9ydCBHT1JPT1RfQk9PVFNUUkFQID0gIiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nbyIKLWV4cG9ydCBHT1JPT1RfRklOQUwgPSAiJHtsaWJkaXJ9L2dvIgogZXhwb3J0IENHT19DRkxBR1MgPSAiJHtDRkxBR1N9IgogZXhwb3J0IENHT19DUFBGTEFHUyA9ICIke0NQUEZMQUdTfSIKIGV4cG9ydCBDR09fQ1hYRkxBR1MgPSAiJHtDWFhGTEFHU30iCkBAIC0yOSwxNCArMjAsMTQgQEAKIH0KIAogZG9fY29tcGlsZSgpIHsKLQlleHBvcnQgQ0NfRk9SXyR7VEFSR0VUX0dPT1N9XyR7VEFSR0VUX0dPQVJDSH09IiR7Q0N9IgotCWV4cG9ydCBDWFhfRk9SXyR7VEFSR0VUX0dPT1N9XyR7VEFSR0VUX0dPQVJDSH09IiR7Q1hYfSIKKwlleHBvcnQgQ0NfRk9SXyR7VEFSR0VUX0dPVFVQTEV9PSIke0NDfSIKKwlleHBvcnQgQ1hYX0ZPUl8ke1RBUkdFVF9HT1RVUExFfT0iJHtDWFh9IgogCiAJY2Qgc3JjCiAJLi9tYWtlLmJhc2ggLS10YXJnZXQtb25seSAtLW5vLWJhbm5lciBzdGQKIAlpZiBbIC1uICIke0dPX0RZTkxJTkt9IiBdOyB0aGVuCiAJCWV4cG9ydCBHT1RPT0xESVI9IiR7Qn0vcGtnL3Rvb2wvbmF0aXZlX25hdGl2ZSIKLQkJQ0M9IiRDQ19GT1JfJHtUQVJHRVRfR09PU31fJHtUQVJHRVRfR09BUkNIfSIgR09BUkNIPSIke1RBUkdFVF9HT0FSQ0h9IiBHT09TPSIke1RBUkdFVF9HT09TfSIgR09ST09UPSR7Qn0gXAorCQlDQz0iJENDX0ZPUl8ke1RBUkdFVF9HT1RVUExFfSIgR09BUkNIPSIke1RBUkdFVF9HT0FSQ0h9IiBHT09TPSIke1RBUkdFVF9HT09TfSIgR09ST09UPSR7Qn0gXAogCQkJJEdPVE9PTERJUi9nb19ib290c3RyYXAgaW5zdGFsbCAtbGlua3NoYXJlZCAtYnVpbGRtb2RlPXNoYXJlZCAke0dPX1NITElCX0xERkxBR1N9IHN0ZAogCWZpCiAJY2QgJHtCfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZV8xLjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tcnVudGltZV8xLjE0LmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby1ydW50aW1lXzEuMTIuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXJ1bnRpbWVfMS4xNC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tdGFyZ2V0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvLXRhcmdldC5pbmMKaW5kZXggOTFlZmQzZS4uOGU0NDI0NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ28tdGFyZ2V0LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9nby9nby10YXJnZXQuaW5jCkBAIC0xLDE1ICsxLDYgQEAKIERFUEVORFMgPSAidmlydHVhbC8ke1RVTkVfUEtHQVJDSH0tZ28gZ28tbmF0aXZlIgogREVQRU5EU19jbGFzcy1uYXRpdmVzZGsgPSAidmlydHVhbC8ke1RBUkdFVF9QUkVGSVh9Z28tY3Jvc3NzZGsgZ28tbmF0aXZlIgogCi1leHBvcnQgR09IT1NUT1MgPSAiJHtCVUlMRF9HT09TfSIKLWV4cG9ydCBHT0hPU1RBUkNIID0gIiR7QlVJTERfR09BUkNIfSIKLWV4cG9ydCBHT09TID0gIiR7VEFSR0VUX0dPT1N9IgotZXhwb3J0IEdPQVJDSCA9ICIke1RBUkdFVF9HT0FSQ0h9IgotZXhwb3J0IEdPQVJNID0gIiR7VEFSR0VUX0dPQVJNfSIKLWV4cG9ydCBHTzM4NiA9ICIke1RBUkdFVF9HTzM4Nn0iCi1leHBvcnQgR09NSVBTID0gIiR7VEFSR0VUX0dPTUlQU30iCi1leHBvcnQgR09ST09UX0JPT1RTVFJBUCA9ICIke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ28iCi1leHBvcnQgR09ST09UX0ZJTkFMID0gIiR7bGliZGlyfS9nbyIKIGV4cG9ydCBHT0NBQ0hFID0gIiR7Qn0vLmNhY2hlIgogR09fTERGTEFHUyA9ICIiCiBHT19MREZMQUdTX2NsYXNzLW5hdGl2ZXNkayA9ICItbGlua21vZGUgZXh0ZXJuYWwiCkBAIC00MywxMiArMzQsMTIgQEAKIAkJaW5zdGFsbCAtbSAwNzU1ICRmICR7RH0ke2xpYmRpcn0vZ28vYmluLwogCQlsbiAtc2YgLi4vJHtiYXNlbGlifS9nby9iaW4vJG5hbWUgJHtEfSR7YmluZGlyfS8KIAlkb25lCisJcm0gLXJmICR7RH0ke2xpYmRpcn0vZ28vc3JjCiB9CiAKIFBBQ0tBR0VTID0gIiR7UE59ICR7UE59LWRldiIKIEZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS9nby9iaW4gJHtsaWJkaXJ9L2dvL3BrZy90b29sLyR7VEFSR0VUX0dPVFVQTEV9ICR7YmluZGlyfSIKLUZJTEVTXyR7UE59LWRldiA9ICIke2xpYmRpcn0vZ28iCi1SREVQRU5EU18ke1BOfS1kZXYgPSAicGVybCBiYXNoIgorUkRFUEVORFNfJHtQTn0gPSAiZ28tcnVudGltZSIKIElOU0FORV9TS0lQXyR7UE59ID0gImxkZmxhZ3MiCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuMTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQyY2RiMDQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS4xMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0ICswLDAgQEAKLXJlcXVpcmUgZ28tJHtQVn0uaW5jCi1yZXF1aXJlIGdvLXRhcmdldC5pbmMKLQotZXhwb3J0IEdPQlVJTERNT0RFPSIiCi0KLSMgQWRkIHBpZSB0byBHT0JVSUxETU9ERSB0byBzYXRpc2Z5ICJ0ZXh0cmVsIiBRQSBjaGVja2luZywgYnV0IG1pcHMKLSMgZG9lc24ndCBzdXBwb3J0IC1idWlsZG1vZGU9cGllLCBzbyBza2lwIHRoZSBRQSBjaGVja2luZyBmb3IgbWlwcyBhbmQgaXRzCi0jIHZhcmlhbnRzLgotcHl0aG9uKCkgewotICAgIGlmICdtaXBzJyBpbiBkLmdldFZhcignVEFSR0VUX0FSQ0gnKToKLSAgICAgICAgZC5hcHBlbmRWYXIoJ0lOU0FORV9TS0lQXyVzJyAlIGQuZ2V0VmFyKCdQTicpLCAiIHRleHRyZWwiKQotICAgIGVsc2U6Ci0gICAgICAgIGQuc2V0VmFyKCdHT0JVSUxETU9ERScsICdwaWUnKQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvZ28vZ29fMS4xNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuMTQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWQ0MGNmOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2dvL2dvXzEuMTQuYmIKQEAgLTAsMCArMSwxNCBAQAorcmVxdWlyZSBnby0ke1BWfS5pbmMKK3JlcXVpcmUgZ28tdGFyZ2V0LmluYworCitleHBvcnQgR09CVUlMRE1PREU9IiIKKworIyBBZGQgcGllIHRvIEdPQlVJTERNT0RFIHRvIHNhdGlzZnkgInRleHRyZWwiIFFBIGNoZWNraW5nLCBidXQgbWlwcy9yaXNjdgorIyBkb2Vzbid0IHN1cHBvcnQgLWJ1aWxkbW9kZT1waWUsIHNvIHNraXAgdGhlIFFBIGNoZWNraW5nIGZvciBtaXBzL3Jpc2N2IGFuZCBpdHMKKyMgdmFyaWFudHMuCitweXRob24oKSB7CisgICAgaWYgJ21pcHMnIGluIGQuZ2V0VmFyKCdUQVJHRVRfQVJDSCcsVHJ1ZSkgb3IgJ3Jpc2N2JyBpbiBkLmdldFZhcignVEFSR0VUX0FSQ0gnLFRydWUpOgorICAgICAgICBkLmFwcGVuZFZhcignSU5TQU5FX1NLSVBfJXMnICUgZC5nZXRWYXIoJ1BOJyxUcnVlKSwgIiB0ZXh0cmVsIikKKyAgICBlbHNlOgorICAgICAgICBkLnNldFZhcignR09CVUlMRE1PREUnLCAncGllJykKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2pxdWVyeS9qcXVlcnlfMy40LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qcXVlcnkvanF1ZXJ5XzMuNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFiZjZlZjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9qcXVlcnkvanF1ZXJ5XzMuNC4xLmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAialF1ZXJ5IGlzIGEgZmFzdCwgc21hbGwsIGFuZCBmZWF0dXJlLXJpY2ggSmF2YVNjcmlwdCBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9qcXVlcnkuY29tLyIKK0xJQ0VOU0UgPSAiTUlUIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7V09SS0RJUn0vJHtCUH0uanM7c3RhcnRsaW5lPTg7ZW5kbGluZT0xMDttZDU9Y2RiODZmNWJkYTkwY2FlYzAyMzU5MmQyZTc2ODM1N2MiCisKK1NSQ19VUkkgPSAiXAorICAgIGh0dHBzOi8vY29kZS5qcXVlcnkuY29tLyR7QlB9LmpzO25hbWU9anMgXAorICAgIGh0dHBzOi8vY29kZS5qcXVlcnkuY29tLyR7QlB9Lm1pbi5qcztuYW1lPW1pbiBcCisgICAgaHR0cHM6Ly9jb2RlLmpxdWVyeS5jb20vJHtCUH0ubWluLm1hcDtuYW1lPW1hcCBcCisgICAgIgorCitTUkNfVVJJW2pzLnNoYTI1NnN1bV0gPSAiNWE5M2E4ODQ5M2FhMzJhYWIyMjhiZjQ1NzFjMDEyMDdkM2I0MmIwMDAyNDA5YTQ1NGQ0MDRiNGQ4Mzk1YmQ1NSIKK1NSQ19VUklbbWluLnNoYTI1NnN1bV0gPSAiMDkyNWU4YWQ3YmQ5NzEzOTFhOGIxZTk4YmU4ZTg3YTY5NzE5MTllYjViNjBjMTk2NDg1OTQxYzNjMWRmMDg5YSIKK1NSQ19VUklbbWFwLnNoYTI1NnN1bV0gPSAiOGRhNzRhZWMwZmNkZDc2NzhhMjY2M2IzY2M5YmFmYmFmMDA5ZTZkNjkyOWIyOGJiM2RkOTViY2VkMTgyMDZmNiIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAianF1ZXJ5LSg/UDxwdmVyPlxkKyhcLlxkKykrKVwuanMiCisKK2luaGVyaXQgYWxsYXJjaAorCitkb19pbnN0YWxsKCkgeworICAgIGluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vamF2YXNjcmlwdC8ke0JQTn0vCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS8ke0JQfS5qcyAke0R9JHtkYXRhZGlyfS9qYXZhc2NyaXB0LyR7QlBOfS8ke0JQTn0uanMKKyAgICBpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9LyR7QlB9Lm1pbi5qcyAke0R9JHtkYXRhZGlyfS9qYXZhc2NyaXB0LyR7QlBOfS8ke0JQTn0ubWluLmpzCisgICAgaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS8ke0JQfS5taW4ubWFwICR7RH0ke2RhdGFkaXJ9L2phdmFzY3JpcHQvJHtCUE59LyR7QlBOfS5taW4ubWFwCit9CisKK1BBQ0tBR0VTID0gIiR7UE59IgorRklMRVNfJHtQTn0gPSAiJHtkYXRhZGlyfSIKKworQkJDTEFTU0VYVEVORCArPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmNvbXBzL2xpYmNvbXBzLzAwMDEtRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJjb21wcy9saWJjb21wcy8wMDAxLURvLW5vdC1zZXQtUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcHl0aG9uLnBhdGNoCmluZGV4IDI2ZThiMDYuLjU5YzA5YWEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmNvbXBzL2xpYmNvbXBzLzAwMDEtRG8tbm90LXNldC1QWVRIT05fSU5TVEFMTF9ESVItYnktcnVubmluZy1weXRob24ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliY29tcHMvbGliY29tcHMvMDAwMS1Eby1ub3Qtc2V0LVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXB5dGhvbi5wYXRjaApAQCAtMSw0MSArMSwyNSBAQAotRnJvbSBmZjRhYWU0YzhiZWFmMTdjYjhlN2EzNDMxZjZjNTQxZWNjZmFlMjQ0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiMjg4NTllYTkzMTEwZDUyZDhhODdkN2I1YTZjODc5NmQwZDUyM2VkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDMwIERlYyAyMDE2IDE4OjIyOjA5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBEbyBub3Qgc2V0IFBZVEhPTl9JTlNUQUxMX0RJUiBieSBydW5uaW5nIHB5dGhvbi4KK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IHNldCBQWVRIT05fSU5TVEFMTF9ESVIgYnkgcnVubmluZyBweXRob24uCiAKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KIFNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorCiAtLS0KLSBsaWJjb21wcy9zcmMvcHl0aG9uL3NyYy9weXRob24yL0NNYWtlTGlzdHMudHh0IHwgMiArLQotIGxpYmNvbXBzL3NyYy9weXRob24vc3JjL3B5dGhvbjMvQ01ha2VMaXN0cy50eHQgfCAyICstCi0gMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvQ01ha2VMaXN0cy50eHQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9saWJjb21wcy9zcmMvcHl0aG9uL3NyYy9weXRob24yL0NNYWtlTGlzdHMudHh0IGIvbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvcHl0aG9uMi9DTWFrZUxpc3RzLnR4dAotaW5kZXggM2FkOWUxOC4uMGU3ZGQ0YiAxMDA2NDQKLS0tLSBhL2xpYmNvbXBzL3NyYy9weXRob24vc3JjL3B5dGhvbjIvQ01ha2VMaXN0cy50eHQKLSsrKyBiL2xpYmNvbXBzL3NyYy9weXRob24vc3JjL3B5dGhvbjIvQ01ha2VMaXN0cy50eHQKLUBAIC0xLDcgKzEsNyBAQAotIGZpbmRfcGFja2FnZSAoUHl0aG9uTGlicyAyLjYpCi0gZmluZF9wYWNrYWdlIChQeXRob25JbnRlcnAgMi42IFJFUVVJUkVEKQorZGlmZiAtLWdpdCBhL2xpYmNvbXBzL3NyYy9weXRob24vc3JjL0NNYWtlTGlzdHMudHh0IGIvbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvQ01ha2VMaXN0cy50eHQKK2luZGV4IGZhNTkwYWUuLjY5MTMyMTQgMTAwNjQ0CistLS0gYS9saWJjb21wcy9zcmMvcHl0aG9uL3NyYy9DTWFrZUxpc3RzLnR4dAorKysrIGIvbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvQ01ha2VMaXN0cy50eHQKK0BAIC0xMTcsNyArMTE3LDcgQEAgSUYgKFNLQlVJTEQpCisgICAgIElOU1RBTEwoRklMRVMgbGliY29tcHMvX19pbml0X18ucHkgREVTVElOQVRJT04gbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvbGliY29tcHMpCisgICAgIElOU1RBTEwoVEFSR0VUUyBweWNvbXBzIExJQlJBUlkgREVTVElOQVRJT04gbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvbGliY29tcHMpCisgRUxTRSAoKQorLSAgICBFWEVDVVRFX1BST0NFU1MoQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAtYyAiZnJvbSBzeXMgaW1wb3J0IHN0ZG91dDsgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZzsgc3Rkb3V0LndyaXRlKHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihUcnVlKSkiIE9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCisrICAgICNFWEVDVVRFX1BST0NFU1MoQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAtYyAiZnJvbSBzeXMgaW1wb3J0IHN0ZG91dDsgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZzsgc3Rkb3V0LndyaXRlKHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihUcnVlKSkiIE9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCiAgCi0tZXhlY3V0ZV9wcm9jZXNzIChDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9IC1jICJmcm9tIHN5cyBpbXBvcnQgc3Rkb3V0OyBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnOyBzdGRvdXQud3JpdGUoc3lzY29uZmlnLmdldF9weXRob25fbGliKFRydWUpKSIgT1VUUFVUX1ZBUklBQkxFIFBZVEhPTl9JTlNUQUxMX0RJUikKLSsjZXhlY3V0ZV9wcm9jZXNzIChDT01NQU5EICR7UFlUSE9OX0VYRUNVVEFCTEV9IC1jICJmcm9tIHN5cyBpbXBvcnQgc3Rkb3V0OyBmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnOyBzdGRvdXQud3JpdGUoc3lzY29uZmlnLmdldF9weXRob25fbGliKFRydWUpKSIgT1VUUFVUX1ZBUklBQkxFIFBZVEhPTl9JTlNUQUxMX0RJUikKLSAKLSBpbmNsdWRlX2RpcmVjdG9yaWVzKCR7UFlUSE9OX0lOQ0xVREVfUEFUSH0pCi0gaW5jbHVkZV9kaXJlY3Rvcmllcygke0xJQkNPTVBTX0lOQ0xVREVfUEFUSH0pCi1kaWZmIC0tZ2l0IGEvbGliY29tcHMvc3JjL3B5dGhvbi9zcmMvcHl0aG9uMy9DTWFrZUxpc3RzLnR4dCBiL2xpYmNvbXBzL3NyYy9weXRob24vc3JjL3B5dGhvbjMvQ01ha2VMaXN0cy50eHQKLWluZGV4IDdmYWZhOWYuLmVkODJkM2QgMTAwNjQ0Ci0tLS0gYS9saWJjb21wcy9zcmMvcHl0aG9uL3NyYy9weXRob24zL0NNYWtlTGlzdHMudHh0Ci0rKysgYi9saWJjb21wcy9zcmMvcHl0aG9uL3NyYy9weXRob24zL0NNYWtlTGlzdHMudHh0Ci1AQCAtMiw3ICsyLDcgQEAgZmluZF9wYWNrYWdlIChQeXRob25MaWJzIDMuMCkKLSBmaW5kX3BhY2thZ2UgKFB5dGhvbkludGVycCAzLjApCi0gI2FkZF9jdXN0b21fdGFyZ2V0KHB5My1jb3B5KQotIAotLWV4ZWN1dGVfcHJvY2VzcyAoQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAtYyAiZnJvbSBzeXMgaW1wb3J0IHN0ZG91dDsgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZzsgc3Rkb3V0LndyaXRlKHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihUcnVlKSkiIE9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCi0rI2V4ZWN1dGVfcHJvY2VzcyAoQ09NTUFORCAke1BZVEhPTl9FWEVDVVRBQkxFfSAtYyAiZnJvbSBzeXMgaW1wb3J0IHN0ZG91dDsgZnJvbSBkaXN0dXRpbHMgaW1wb3J0IHN5c2NvbmZpZzsgc3Rkb3V0LndyaXRlKHN5c2NvbmZpZy5nZXRfcHl0aG9uX2xpYihUcnVlKSkiIE9VVFBVVF9WQVJJQUJMRSBQWVRIT05fSU5TVEFMTF9ESVIpCi0gCi0gaW5jbHVkZV9kaXJlY3Rvcmllcygke1BZVEhPTl9JTkNMVURFX1BBVEh9KQotIGluY2x1ZGVfZGlyZWN0b3JpZXMoJHtMSUJDT01QU19JTkNMVURFX1BBVEh9KQotLS0gCi0yLjExLjAKLQorICAgICBJTlNUQUxMKEZJTEVTICR7cHljb21wc19TUkNESVJ9L2xpYmNvbXBzL19faW5pdF9fLnB5IERFU1RJTkFUSU9OICR7UFlUSE9OX0lOU1RBTExfRElSfS9saWJjb21wcykKKyAgICAgI0lOU1RBTEwoRklMRVMgJHtweWNvbXBzX1NSQ0RJUn0vdGVzdHMvX190ZXN0LnB5IERFU1RJTkFUSU9OCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJjb21wcy9saWJjb21wc19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJjb21wcy9saWJjb21wc19naXQuYmIKaW5kZXggMzcyYzNjMy4uNDBiNjAxNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliY29tcHMvbGliY29tcHNfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmNvbXBzL2xpYmNvbXBzX2dpdC5iYgpAQCAtOCw4ICs4LDggQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLWNyYzMyLmMtdG8tc291cmNlcy1saXN0LnBhdGNoIFwKICAgICAgICAgICAgIgogCi1QViA9ICIwLjEuMTEiCi1TUkNSRVYgPSAiZDg2OGE3OWI3NmZiOTgwZDEzNzFjMjgxMjRhZTA3ZjAwZDJiNjNhOSIKK1BWID0gIjAuMS4xNCIKK1NSQ1JFViA9ICI1YTBlMDQyODZmMzQ2MmUzMzA4ZjJhMzMyZWIwZjkwYTY2OTIwMjE4IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDEtaW5jbHVkZS1zdGRleGNlcHQtZm9yLXJ1bnRpbWVfZXJyb3IucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mLzAwMDEtaW5jbHVkZS1zdGRleGNlcHQtZm9yLXJ1bnRpbWVfZXJyb3IucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2VkZjUzOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvMDAwMS1pbmNsdWRlLXN0ZGV4Y2VwdC1mb3ItcnVudGltZV9lcnJvci5wYXRjaApAQCAtMCwwICsxLDY1IEBACitGcm9tIDVmOGVlZTUwNDBkNzA3NDcxMGNkNTQyZmM1MGY3YTQwOTE4MzIxZmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyMyBEZWMgMjAxOSAxNDozMDoyMiAtMDgwMAorU3ViamVjdDogW1BBVENIXSBpbmNsdWRlIDxzdGRleGNlcHQ+IGZvciBydW50aW1lX2Vycm9yCisKK0ZpeGVzCisKK2Vycm9yOiBjbGFzcyAnbGliZG5mOjpNb2R1bGVQYWNrYWdlQ29udGFpbmVyOjpFeGNlcHRpb24nIGRvZXMgbm90IGhhdmUgYW55IGZpZWxkIG5hbWVkICdydW50aW1lX2Vycm9yJworICAgICAgICAgZXhwbGljaXQgRXhjZXB0aW9uKGNvbnN0IHN0ZDo6c3RyaW5nICZ3aGF0KSA6IHJ1bnRpbWVfZXJyb3Iod2hhdCkge30KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn5+fn5+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGliZG5mL3B1bGwvODY3XQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGxpYmRuZi9nb2FsL0dvYWwuaHBwICAgICAgICAgICAgICAgICAgICAgfCAxICsKKyBsaWJkbmYvbW9kdWxlL01vZHVsZVBhY2thZ2VDb250YWluZXIuaHBwIHwgMSArCisgbGliZG5mL3JlcG8vc29sdmFibGUvRGVwZW5kZW5jeS5jcHAgICAgICB8IDMgKystCisgMyBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYmRuZi9nb2FsL0dvYWwuaHBwIGIvbGliZG5mL2dvYWwvR29hbC5ocHAKK2luZGV4IGYzM2RmYTI0Li43YjhkODIyYyAxMDA2NDQKKy0tLSBhL2xpYmRuZi9nb2FsL0dvYWwuaHBwCisrKysgYi9saWJkbmYvZ29hbC9Hb2FsLmhwcAorQEAgLTIyLDYgKzIyLDcgQEAKKyAjZGVmaW5lIF9fR09BTF9IUFAKKyAKKyAjaW5jbHVkZSA8bWVtb3J5PgorKyNpbmNsdWRlIDxzdGRleGNlcHQ+CisgCisgI2luY2x1ZGUgIi4uL2RuZi10eXBlcy5oIgorICNpbmNsdWRlICIuLi9oeS1nb2FsLmgiCitkaWZmIC0tZ2l0IGEvbGliZG5mL21vZHVsZS9Nb2R1bGVQYWNrYWdlQ29udGFpbmVyLmhwcCBiL2xpYmRuZi9tb2R1bGUvTW9kdWxlUGFja2FnZUNvbnRhaW5lci5ocHAKK2luZGV4IDFmODE1ZmRhLi4zN2E4ODMyZCAxMDA2NDQKKy0tLSBhL2xpYmRuZi9tb2R1bGUvTW9kdWxlUGFja2FnZUNvbnRhaW5lci5ocHAKKysrKyBiL2xpYmRuZi9tb2R1bGUvTW9kdWxlUGFja2FnZUNvbnRhaW5lci5ocHAKK0BAIC0zMCw2ICszMCw3IEBACisgI2luY2x1ZGUgPHN0cmluZz4KKyAjaW5jbHVkZSA8dmVjdG9yPgorICNpbmNsdWRlIDxzZXQ+CisrI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KKyAKKyAvL2NsYXNzIE1vZHVsZVBhY2thZ2VDb250YWluZXI7CisgLy90eXBlZGVmIHN0ZDo6c2hhcmVkX3B0cjxNb2R1bGVQYWNrYWdlQ29udGFpbmVyPiBNb2R1bGVQYWNrYWdlQ29udGFpbmVyUHRyOworZGlmZiAtLWdpdCBhL2xpYmRuZi9yZXBvL3NvbHZhYmxlL0RlcGVuZGVuY3kuY3BwIGIvbGliZG5mL3JlcG8vc29sdmFibGUvRGVwZW5kZW5jeS5jcHAKK2luZGV4IDY2ODJiNzI5Li4wZmM4YjVjZCAxMDA2NDQKKy0tLSBhL2xpYmRuZi9yZXBvL3NvbHZhYmxlL0RlcGVuZGVuY3kuY3BwCisrKysgYi9saWJkbmYvcmVwby9zb2x2YWJsZS9EZXBlbmRlbmN5LmNwcAorQEAgLTE4LDYgKzE4LDcgQEAKKyAgKiBGb3VuZGF0aW9uLCBJbmMuLCA1MSBGcmFua2xpbiBTdHJlZXQsIEZpZnRoIEZsb29yLCBCb3N0b24sIE1BIDAyMTEwLTEzMDEgVVNBCisgICovCisgCisrI2luY2x1ZGUgPHN0ZGV4Y2VwdD4KKyAjaW5jbHVkZSAiRGVwZW5kZW5jeS5ocHAiCisgI2luY2x1ZGUgImxpYmRuZi91dGlscy91dGlscy5ocHAiCisgI2luY2x1ZGUgImxpYmRuZi9yZXBvL0RlcGVuZGVuY3lTcGxpdHRlci5ocHAiCitAQCAtMTA2LDQgKzEwNyw0IEBAIERlcGVuZGVuY3k6OmdldFJlbGRlcElkKERuZlNhY2sgKnNhY2ssIGNvbnN0IGNoYXIgKiByZWxkZXBTdHIpCisgICAgIH0KKyB9CisgCistfQorXCBObyBuZXdsaW5lIGF0IGVuZCBvZiBmaWxlCisrfQorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZi9maXgtZGVwcmVjYXRpb24td2FybmluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvZml4LWRlcHJlY2F0aW9uLXdhcm5pbmcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2EzZTAyZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmRuZi9saWJkbmYvZml4LWRlcHJlY2F0aW9uLXdhcm5pbmcucGF0Y2gKQEAgLTAsMCArMSw3MSBAQAorRnJvbSA2NmQ5YjJiYTNmYmM3YjA0ZjJiNWFkOWQwZTUzNzEzNDBjMDM3YjVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogTWFyZWsgQmxhaGEgPG1ibGFoYUByZWRoYXQuY29tPgorRGF0ZTogV2VkLCAxMCBKdWwgMjAxOSAxMDoxMTowMSArMDIwMAorU3ViamVjdDogW29lLWNvcmVdW1BBVENIIDEvMV0gRml4IFB5dGhvbiAzLjggZGVwcmVjYXRpb24gd2FybmluZworIChSaEJ1ZzoxNzI0MjQ0KQorCitUaGlzIGRlcHJlY2F0aW9uIHdhcm5pbmcgd2FzIGludHJvZHVjZWQgaW4gUHl0aG9uIDMuOCBieQoraHR0cHM6Ly9idWdzLnB5dGhvbi5vcmcvaXNzdWUzNjM4MToKKworL3Vzci9saWIvcHl0aG9uMy44L3NpdGUtcGFja2FnZXMvZG5mL3BhY2thZ2UucHk6NTc6IERlcHJlY2F0aW9uV2FybmluZzogUFlfU1NJWkVfVF9DTEVBTiB3aWxsIGJlIHJlcXVpcmVkIGZvciAnIycgZm9ybWF0cworICByZXR1cm4gc3VwZXIoUGFja2FnZSwgc2VsZikuY2hrc3VtCisKK2h0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTcyNDI0NAorLS0tCisgcHl0aG9uL2hhd2tleS9wYWNrYWdlLXB5LmNwcCAgICAgIHwgMyArKy0KKyBweXRob24vaGF3a2V5L3BhY2thZ2VkZWx0YS1weS5jcHAgfCAzICsrLQorIDIgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorLS0tCisKK1VuY2hhbmdlZC4gIEFwcGVhcnMgaW4gdmVyc2lvbiAwLjM1LjIuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdGh1Yi5jb20vcnBtLXNvZnR3YXJlLW1hbmFnZW1lbnQvbGliZG5mLmdpdF0KKworU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgorCisKK2RpZmYgLS1naXQgYS9weXRob24vaGF3a2V5L3BhY2thZ2UtcHkuY3BwIGIvcHl0aG9uL2hhd2tleS9wYWNrYWdlLXB5LmNwcAoraW5kZXggNTEwMmJiYS4uNjhlMDNjYiAxMDA2NDQKKy0tLSBhL3B5dGhvbi9oYXdrZXkvcGFja2FnZS1weS5jcHAKKysrKyBiL3B5dGhvbi9oYXdrZXkvcGFja2FnZS1weS5jcHAKK0BAIC0xOCw2ICsxOCw3IEBACisgICogRm91bmRhdGlvbiwgSW5jLiwgNTEgRnJhbmtsaW4gU3RyZWV0LCBGaWZ0aCBGbG9vciwgQm9zdG9uLCBNQSAwMjExMC0xMzAxIFVTQQorICAqLworIAorKyNkZWZpbmUgUFlfU1NJWkVfVF9DTEVBTgorICNpbmNsdWRlIDxQeXRob24uaD4KKyAjaW5jbHVkZSA8c3RkaW8uaD4KKyAKK0BAIC0yNTEsNyArMjUyLDcgQEAgZ2V0X2Noa3N1bShfUGFja2FnZU9iamVjdCAqc2VsZiwgdm9pZCAqY2xvc3VyZSkKKyAjaWYgUFlfTUFKT1JfVkVSU0lPTiA8IDMKKyAgICAgcmVzID0gUHlfQnVpbGRWYWx1ZSgiaXMjIiwgdHlwZSwgY3MsIGNoZWNrc3VtX2xlbmd0aCk7CisgI2Vsc2UKKy0gICAgcmVzID0gUHlfQnVpbGRWYWx1ZSgiaXkjIiwgdHlwZSwgY3MsIGNoZWNrc3VtX2xlbmd0aCk7CisrICAgIHJlcyA9IFB5X0J1aWxkVmFsdWUoIml5IyIsIHR5cGUsIGNzLCAoUHlfc3NpemVfdCljaGVja3N1bV9sZW5ndGgpOworICNlbmRpZgorIAorICAgICByZXR1cm4gcmVzOworZGlmZiAtLWdpdCBhL3B5dGhvbi9oYXdrZXkvcGFja2FnZWRlbHRhLXB5LmNwcCBiL3B5dGhvbi9oYXdrZXkvcGFja2FnZWRlbHRhLXB5LmNwcAoraW5kZXggY2ExY2I3ZC4uMWE2NDgzNiAxMDA2NDQKKy0tLSBhL3B5dGhvbi9oYXdrZXkvcGFja2FnZWRlbHRhLXB5LmNwcAorKysrIGIvcHl0aG9uL2hhd2tleS9wYWNrYWdlZGVsdGEtcHkuY3BwCitAQCAtMTgsNiArMTgsNyBAQAorICAqIEZvdW5kYXRpb24sIEluYy4sIDUxIEZyYW5rbGluIFN0cmVldCwgRmlmdGggRmxvb3IsIEJvc3RvbiwgTUEgMDIxMTAtMTMwMSBVU0EKKyAgKi8KKyAKKysjZGVmaW5lIFBZX1NTSVpFX1RfQ0xFQU4KKyAjaW5jbHVkZSA8UHl0aG9uLmg+CisgCisgLy8gaGF3a2V5CitAQCAtOTIsNyArOTMsNyBAQCBnZXRfY2hrc3VtKF9QYWNrYWdlRGVsdGFPYmplY3QgKnNlbGYsIHZvaWQgKmNsb3N1cmUpCisgI2lmIFBZX01BSk9SX1ZFUlNJT04gPCAzCisgICAgIHJlcyA9IFB5X0J1aWxkVmFsdWUoImlzIyIsIHR5cGUsIGNzLCBjaGVja3N1bV9sZW5ndGgpOworICNlbHNlCistICAgIHJlcyA9IFB5X0J1aWxkVmFsdWUoIml5IyIsIHR5cGUsIGNzLCBjaGVja3N1bV9sZW5ndGgpOworKyAgICByZXMgPSBQeV9CdWlsZFZhbHVlKCJpeSMiLCB0eXBlLCBjcywgKFB5X3NzaXplX3QpY2hlY2tzdW1fbGVuZ3RoKTsKKyAjZW5kaWYKKyAKKyAgICAgcmV0dXJuIHJlczsKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZG5mL2xpYmRuZl8wLjI4LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mXzAuMjguMS5iYgppbmRleCAzZjExZTAyLi5jYzJjZWI4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mXzAuMjguMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJkbmYvbGliZG5mXzAuMjguMS5iYgpAQCAtNyw5ICs3LDEyIEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDA0LVNldC1saWJzb2x2LXZhcmlhYmxlcy13aXRoLXBrZy1jb25maWctY21ha2Utcy1vd24tbW8ucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1HZXQtcGFyYW1ldGVycy1mb3ItYm90aC1saWJzb2x2LWFuZC1saWJzb2x2ZXh0LWxpYmRuLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLVdJVEhfVEVTVFMtb3B0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtaW5jbHVkZS1zdGRleGNlcHQtZm9yLXJ1bnRpbWVfZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZml4LWRlcHJlY2F0aW9uLXdhcm5pbmcucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ1JFViA9ICI3NTFmODkwNDViODBkNThjMGQwNTgwMGY3NDM1N2NmNzhjZGY3ZTc3IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCkBAIC0yNSw0ICsyOCw1IEBACiBFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1EV0lUSF9HSVI9T0ZGIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCitQTkJMQUNLTElTVFtsaWJkbmZdID89ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRV9DTEFTU0VTJywgJ3BhY2thZ2VfcnBtJywgJycsICdEb2VzIG5vdCBidWlsZCB3aXRob3V0IHBhY2thZ2VfcnBtIGluIFBBQ0tBR0VfQ0xBU1NFUyBkdWUgZGlzYWJsZWQgcnBtIHN1cHBvcnQgaW4gbGlic29sdicsIGQpfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZWRpdC9saWJlZGl0XzIwMTkxMDI1LTMuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYmVkaXQvbGliZWRpdF8yMDE5MTAyNS0zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY4MTAwMTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZWRpdC9saWJlZGl0XzIwMTkxMDI1LTMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiQlNEIHJlcGxhY2VtZW50IGZvciBsaWJyZWFkbGluZSIKLURFU0NSSVBUSU9OID0gIkNvbW1hbmQgbGluZSBlZGl0b3IgbGlicmFyeSBwcm92aWRpbmcgZ2VuZXJpYyBsaW5lIGVkaXRpbmcsIFwKLWhpc3RvcnksIGFuZCB0b2tlbml6YXRpb24gZnVuY3Rpb25zIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy50aHJ5c29lZS5kay9lZGl0bGluZS8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFlNDIyOGQwYzVhOTA5M2IwMWFlYWFlYWU2NjQxNTMzIgotCi1ERVBFTkRTID0gIm5jdXJzZXMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy50aHJ5c29lZS5kay9lZGl0bGluZS8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vc3RkYy1wcmVkZWYucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyZDY1Njg0NjcwODBjZmQ3NWU3MTVkMDQ1MTAyYjU0NCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2ZGZmMDM2NjYwZDQ3OGJmYWExNGU0MDdmYzVkZTI2ZDIyZGExMDg3MTE4Yzg5N2IxYTNhZDJlOTBjYjdiZjM5IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJlZGl0L2xpYmVkaXRfMjAxOTEyMzEtMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZWRpdC9saWJlZGl0XzIwMTkxMjMxLTMuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZDJkNTdhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGliZWRpdC9saWJlZGl0XzIwMTkxMjMxLTMuMS5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIkJTRCByZXBsYWNlbWVudCBmb3IgbGlicmVhZGxpbmUiCitERVNDUklQVElPTiA9ICJDb21tYW5kIGxpbmUgZWRpdG9yIGxpYnJhcnkgcHJvdmlkaW5nIGdlbmVyaWMgbGluZSBlZGl0aW5nLCBcCitoaXN0b3J5LCBhbmQgdG9rZW5pemF0aW9uIGZ1bmN0aW9ucyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cudGhyeXNvZWUuZGsvZWRpdGxpbmUvIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZTQyMjhkMGM1YTkwOTNiMDFhZWFhZWFlNjY0MTUzMyIKKworREVQRU5EUyA9ICJuY3Vyc2VzIgorCitpbmhlcml0IGF1dG90b29scworCitTUkNfVVJJID0gImh0dHA6Ly93d3cudGhyeXNvZWUuZGsvZWRpdGxpbmUvJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3N0ZGMtcHJlZGVmLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMmUyMmE1MTEzMWRlOTRmZjJkZjI0OTAxZjdjZmU0MTYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGJiODJjYjdlMTE2YTVmODAyNWQzNWVmNWI0ZjdkNGEzY2RkMGEzOTA5YTE0NmEzOTExMjA5NWEyZDIyOTA3MSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiOTAiCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiaGlzdG9yeS4zIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2hpc3RvcnkuM10gPSAiJHttYW5kaXJ9L21hbjMvaGlzdG9yeS4zIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvXzEuMTEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xpYnJlcG8vbGlicmVwb18xLjExLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwYzhhNWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvXzEuMTEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBsaWJyYXJ5IHByb3ZpZGluZyBDIGFuZCBQeXRob24gKGxpYmNVUkwgbGlrZSkgQVBJIFwKLSAgICAgICAgICAgZm9yIGRvd25sb2FkaW5nIGxpbnV4IHJlcG9zaXRvcnkgbWV0YWRhdGEgYW5kIHBhY2thZ2VzLiIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L2xpYnJlcG8uZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItRG8tbm90LXRyeS10by1vYnRhaW4tUFlUSE9OX0lOU1RBTExfRElSLWJ5LXJ1bm5pbmctcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LVNldC1ncGdtZS12YXJpYWJsZXMtd2l0aC1wa2ctY29uZmlnLW5vdC13aXRoLWNtYWtlLW0ucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ1JFViA9ICI0OTdmNWViMjI5MzY2MjgzNWJlZDZiZGIwZjQzNTIxNzg4YjJjZWJlIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1ERVBFTkRTID0gImN1cmwgZ2xpYi0yLjAgb3BlbnNzbCBhdHRyIGdwZ21lIGxpYnhtbDIiCi0KLWluaGVyaXQgY21ha2UgZGlzdHV0aWxzMy1iYXNlIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNNQUtFID0gIiBcCi0gICAgLURQWVRIT05fSU5TVEFMTF9ESVI9JHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0gXAotICAgIC1EUFlUSE9OX0RFU0lSRUQ9MyBcCi0gICAgLURFTkFCTEVfVEVTVFM9T0ZGIFwKLSAgICAtREVOQUJMRV9ET0NTPU9GRiBcCi0gICAgLURXSVRIX1pDSFVOSz1PRkYgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9saWJyZXBvL2xpYnJlcG9fMS4xMS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvXzEuMTEuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YTBhNTlmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGlicmVwby9saWJyZXBvXzEuMTEuMi5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIkEgbGlicmFyeSBwcm92aWRpbmcgQyBhbmQgUHl0aG9uIChsaWJjVVJMIGxpa2UpIEFQSSBcCisgICAgICAgICAgIGZvciBkb3dubG9hZGluZyBsaW51eCByZXBvc2l0b3J5IG1ldGFkYXRhIGFuZCBwYWNrYWdlcy4iCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9ycG0tc29mdHdhcmUtbWFuYWdlbWVudC9saWJyZXBvLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8tb2J0YWluLVBZVEhPTl9JTlNUQUxMX0RJUi1ieS1ydW5uaW5nLXAucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1TZXQtZ3BnbWUtdmFyaWFibGVzLXdpdGgtcGtnLWNvbmZpZy1ub3Qtd2l0aC1jbWFrZS1tLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNSRVYgPSAiNjdjMmQxZjgzZjFiZjg3YmUzZjI2YmE3MzBmY2U3ZmJkZjBjOWZiYSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworREVQRU5EUyA9ICJjdXJsIGdsaWItMi4wIG9wZW5zc2wgYXR0ciBncGdtZSBsaWJ4bWwyIgorCitpbmhlcml0IGNtYWtlIGRpc3R1dGlsczMtYmFzZSBwa2djb25maWcKKworRVhUUkFfT0VDTUFLRSA9ICIgXAorICAgIC1EUFlUSE9OX0lOU1RBTExfRElSPSR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9IFwKKyAgICAtRFBZVEhPTl9ERVNJUkVEPTMgXAorICAgIC1ERU5BQkxFX1RFU1RTPU9GRiBcCisgICAgLURFTkFCTEVfRE9DUz1PRkYgXAorICAgIC1EV0lUSF9aQ0hVTks9T0ZGIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL2xsdm0vbGx2bV9naXQuYmIKaW5kZXggNWY5Mjc3Zi4uYTg2MDdmNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbGx2bS9sbHZtX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9sbHZtL2xsdm1fZ2l0LmJiCkBAIC0xMCw2ICsxMCw5IEBACiAKIERFUEVORFMgPSAibGliZmZpIGxpYnhtbDIgemxpYiBsaWJlZGl0IG5pbmphLW5hdGl2ZSBsbHZtLW5hdGl2ZSIKIAorQ09NUEFUSUJMRV9IT1NUX3Jpc2N2NjQgPSAibnVsbCIKK0NPTVBBVElCTEVfSE9TVF9yaXNjdjMyID0gIm51bGwiCisKIFJERVBFTkRTXyR7UE59X2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIG5jdXJzZXMtdGVybWluZm8iCiAKIGluaGVyaXQgY21ha2UgcGtnY29uZmlnCkBAIC0xOCw3ICsyMSw3IEBACiAKIE1BSk9SX1ZFUlNJT04gPSAiOSIKIE1JTk9SX1ZFUlNJT04gPSAiMCIKLVBBVENIX1ZFUlNJT04gPSAiMCIKK1BBVENIX1ZFUlNJT04gPSAiMSIKIAogUFYgPSAiJHtNQUpPUl9WRVJTSU9OfS4ke01JTk9SX1ZFUlNJT059LiR7UEFUQ0hfVkVSU0lPTn0iCiAKQEAgLTI2LDEyICsyOSwxNCBAQAogTExWTV9ESVIgPSAibGx2bSR7TExWTV9SRUxFQVNFfSIKIAogQlJBTkNIID0gInJlbGVhc2UvJHtNQUpPUl9WRVJTSU9OfS54IgotU1JDUkVWID0gIjAzOTlkNWE5NjgyYjNjZWY3MWM2NTMzNzNlMzg4OTBjNjNjNGMzNjUiCitTUkNSRVYgPSAiYzFhMGEyMTMzNzhhNDU4ZmJlYTFhNWM3N2IzMTVjN2RjZTA4ZmQwNSIKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9sbHZtL2xsdm0tcHJvamVjdC5naXQ7YnJhbmNoPSR7QlJBTkNIfSBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA2LWxsdm0tVGFyZ2V0TGlicmFyeUluZm8tVW5kZWZpbmUtbGliYy1mdW5jdGlvbnMtaWYtdGgucGF0Y2g7c3RyaXBsZXZlbD0yIFwKICAgICAgICAgICAgZmlsZTovLzAwMDctbGx2bS1hbGxvdy1lbnYtb3ZlcnJpZGUtb2YtZXhlLXBhdGgucGF0Y2g7c3RyaXBsZXZlbD0yIFwKICAgICAgICAgICAiCiAKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gImxsdm1vcmctKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCiBTID0gIiR7V09SS0RJUn0vZ2l0L2xsdm0iCiAKIExMVk1fSU5TVEFMTF9ESVIgPSAiJHtXT1JLRElSfS9sbHZtLWluc3RhbGwiCkBAIC04Nyw2ICs5Miw4IEBACiAgICAgICAgICAgICAgICAgICAtRExMVk1fQ09ORklHX1BBVEg9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L2xsdm0tY29uZmlnJHtQVn0gXAogICAgICAgICAgICAgICAgICAiCiAKK0NGTEFHUyArPSAiLWZjb21tb24iCisKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewogIyBGaXggcGF0aHMgaW4gbGx2bS1jb25maWcKIAlzZWQgLWkgInN8c3lzOjpwYXRoOjpwYXJlbnRfcGF0aChDdXJyZW50UGF0aCkpXC5zdHIoKXxzeXM6OnBhdGg6OnBhcmVudF9wYXRoKHN5czo6cGF0aDo6cGFyZW50X3BhdGgoQ3VycmVudFBhdGgpKSkuc3RyKCl8ZyIgJHtTfS90b29scy9sbHZtLWNvbmZpZy9sbHZtLWNvbmZpZy5jcHAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UuaW5jCmluZGV4IGI4OTA1YmMuLmEwYTcyYjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLmluYwpAQCAtNSw5ICs1LDcgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9tYWtlLyIKIFNFQ1RJT04gPSAiZGV2ZWwiCiAKLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9tYWtlL21ha2UtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaCBcCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbWFrZS9tYWtlLSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgICIKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgdGV4aW5mbwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtZ2xvYi1Eby1ub3QtYXNzdW1lLWdsaWJjLWdsb2ItaW50ZXJuYWxzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtZ2xvYi1Eby1ub3QtYXNzdW1lLWdsaWJjLWdsb2ItaW50ZXJuYWxzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYjZlNGQ0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gYzkwYTdkZGE2YzU3MmY3OWI4ZTc4ZGE0NGI2ZWJmODcwNGVkZWY2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+Ci1EYXRlOiBTdW4sIDI0IFNlcCAyMDE3IDA5OjEyOjU4IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMS8yXSBnbG9iOiBEbyBub3QgYXNzdW1lIGdsaWJjIGdsb2IgaW50ZXJuYWxzLgotCi1JdCBoYXMgYmVlbiBwcm9wb3NlZCB0aGF0IGdsaWJjIGdsb2Igc3RhcnQgdXNpbmcgZ2xfbHN0YXQsCi13aGljaCB0aGUgQVBJIGFsbG93cyBpdCB0byBkby4gIEdOVSAnbWFrZScgc2hvdWxkIG5vdCBnZXQgaW4KLXRoZSB3YXkgb2YgdGhpcy4gIFNlZToKLWh0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDE3LTA5L21zZzAwNDA5Lmh0bWwKLQotKiBkaXIuYyAobG9jYWxfbHN0YXQpOiBOZXcgZnVuY3Rpb24sIGxpa2UgbG9jYWxfc3RhdC4KLShkaXJfc2V0dXBfZ2xvYik6IFVzZSBpdCB0byBpbml0aWFsaXplIGdsX2xzdGF0IHRvbywgYXMgdGhlIEFQSQotcmVxdWlyZXMuCi0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLSBkaXIuYyB8IDI5ICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9kaXIuYyBiL2Rpci5jCi1pbmRleCBmMzRiYmY1Li4xMmVlZjMwIDEwMDY0NAotLS0tIGEvZGlyLmMKLSsrKyBiL2Rpci5jCi1AQCAtMTI5OSwxNSArMTI5OSw0MCBAQCBsb2NhbF9zdGF0IChjb25zdCBjaGFyICpwYXRoLCBzdHJ1Y3Qgc3RhdCAqYnVmKQotIH0KLSAjZW5kaWYKLSAKLSsvKiBTaW1pbGFybHkgZm9yIGxzdGF0LiAgKi8KLSsjaWYgIWRlZmluZWQobHN0YXQpICYmICFkZWZpbmVkKFdJTkRPV1MzMikgfHwgZGVmaW5lZChWTVMpCi0rIyBpZm5kZWYgVk1TCi0rIyAgaWZuZGVmIEhBVkVfU1lTX1NUQVRfSAotK2ludCBsc3RhdCAoY29uc3QgY2hhciAqcGF0aCwgc3RydWN0IHN0YXQgKnNidWYpOwotKyMgIGVuZGlmCi0rIyBlbHNlCi0rICAgIC8qIFdlIGFyZSBkb25lIHdpdGggdGhlIGZha2UgbHN0YXQuICBHbyBiYWNrIHRvIHRoZSByZWFsIGxzdGF0ICovCi0rIyAgIGlmZGVmIGxzdGF0Ci0rIyAgICAgdW5kZWYgbHN0YXQKLSsjICAgZW5kaWYKLSsjIGVuZGlmCi0rIyBkZWZpbmUgbG9jYWxfbHN0YXQgbHN0YXQKLSsjZWxpZiBkZWZpbmVkKFdJTkRPV1MzMikKLSsvKiBXaW5kb3dzIGRvZXNuJ3Qgc3VwcG9ydCBsc3RhdCgpLiAgKi8KLSsjIGRlZmluZSBsb2NhbF9sc3RhdCBsb2NhbF9zdGF0Ci0rI2Vsc2UKLStzdGF0aWMgaW50Ci0rbG9jYWxfbHN0YXQgKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpidWYpCi0rewotKyAgaW50IGU7Ci0rICBFSU5UUkxPT1AgKGUsIGxzdGF0IChwYXRoLCBidWYpKTsKLSsgIHJldHVybiBlOwotK30KLSsjZW5kaWYKLSsKLSB2b2lkCi0gZGlyX3NldHVwX2dsb2IgKGdsb2JfdCAqZ2wpCi0gewotICAgZ2wtPmdsX29wZW5kaXIgPSBvcGVuX2RpcnN0cmVhbTsKLSAgIGdsLT5nbF9yZWFkZGlyID0gcmVhZF9kaXJzdHJlYW07Ci0gICBnbC0+Z2xfY2xvc2VkaXIgPSBmcmVlOwotKyAgZ2wtPmdsX2xzdGF0ID0gbG9jYWxfbHN0YXQ7Ci0gICBnbC0+Z2xfc3RhdCA9IGxvY2FsX3N0YXQ7Ci0tICAvKiBXZSBkb24ndCBib3RoZXIgc2V0dGluZyBnbF9sc3RhdCwgc2luY2UgZ2xvYiBuZXZlciBjYWxscyBpdC4KLS0gICAgIFRoZSBzbG90IGlzIG9ubHkgdGhlcmUgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCA0LjQgQlNELiAgKi8KLSB9Ci0gCi0gdm9pZAotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtbTQtZ2V0bG9hZGF2Zy5tNC1yZXN0cmljdC1BSVgtc3BlY2lmaWMtdGVzdC1vbi1BSVgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMS1tNC1nZXRsb2FkYXZnLm00LXJlc3RyaWN0LUFJWC1zcGVjaWZpYy10ZXN0LW9uLUFJWC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wOTZiY2ZkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtbTQtZ2V0bG9hZGF2Zy5tNC1yZXN0cmljdC1BSVgtc3BlY2lmaWMtdGVzdC1vbi1BSVgucGF0Y2gKQEAgLTAsMCArMSwzOCBAQAorRnJvbSA4MzA5NjAxNzc1ZDk0NDI0MTYzMjlhNzdmN2RjZmQ4YWE3OTllOWE2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVucyBSZWhzYWNrIDxzbm9AbmV0YnNkLm9yZz4KK0RhdGU6IEZyaSwgMjEgRmViIDIwMjAgMTc6Mzk6NTYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIG00L2dldGxvYWRhdmcubTQ6IHJlc3RyaWN0IEFJWCBzcGVjaWZpYyB0ZXN0IG9uIEFJWAorCitXaGVuIGNyb3NzIGNvbXBpbGluZyBmb3IgYSBzeXN0ZW0gd2l0aG91dCBnZXRsb2FkYXZnLCBkbyBub3QgdHJ5IGFkZAorYWRkaXRpb25hbCBsaW5rZXIgcGF0aHMgdW5sZXNzIGl0J3MgYWJzb2x1dGVseSBuZWNlc3NhcnkuCisKK1NpZ25lZC1vZmYtYnk6IEplbnMgUmVoc2FjayA8c25vQG5ldGJzZC5vcmc+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworIG00L2dldGxvYWRhdmcubTQgfCAzICsrKworIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL200L2dldGxvYWRhdmcubTQgYi9tNC9nZXRsb2FkYXZnLm00CitpbmRleCAzYmQyYTE0Li42OTZjNWRlIDEwMDY0NAorLS0tIGEvbTQvZ2V0bG9hZGF2Zy5tNAorKysrIGIvbTQvZ2V0bG9hZGF2Zy5tNAorQEAgLTQyLDYgKzQyLDggQEAgQUNfQ0hFQ0tfRlVOQyhbZ2V0bG9hZGF2Z10sIFtdLAorICAgIGZpCisgCisgICAgaWYgdGVzdCAkZ2xfZnVuY19nZXRsb2FkYXZnX2RvbmUgPSBubzsgdGhlbgorKyAgICAgQVNfQ0FTRShbJGhvc3Rfb3NdLAorKyAgICAgICAgICAgICBbYWl4Kl0sIFsKKyAgICAgICMgVGhlcmUgaXMgYSBjb21tb25seSBhdmFpbGFibGUgbGlicmFyeSBmb3IgUlMvNjAwMCBBSVguCisgICAgICAjIFNpbmNlIGl0IGlzIG5vdCBhIHN0YW5kYXJkIHBhcnQgb2YgQUlYLCBpdCBtaWdodCBiZSBpbnN0YWxsZWQgbG9jYWxseS4KKyAgICAgIGdsX2dldGxvYWRhdmdfTElCUz0kTElCUworQEAgLTQ5LDYgKzUxLDcgQEAgQUNfQ0hFQ0tfRlVOQyhbZ2V0bG9hZGF2Z10sIFtdLAorICAgICAgQUNfQ0hFQ0tfTElCKFtnZXRsb2FkYXZnXSwgW2dldGxvYWRhdmddLAorICAgICAgICAgICAgICAgICAgIFtMSUJTPSItbGdldGxvYWRhdmcgJExJQlMiIGdsX2Z1bmNfZ2V0bG9hZGF2Z19kb25lPXllc10sCisgICAgICAgICAgICAgICAgICAgW0xJQlM9JGdsX2dldGxvYWRhdmdfTElCU10pCisrICAgICAgIF0sIFs6XSkKKyAgICBmaQorIAorICAgICMgU2V0IHVwIHRoZSByZXBsYWNlbWVudCBmdW5jdGlvbiBpZiBuZWNlc3NhcnkuCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMS1tYWtlaW5zdC1Eby1ub3QtdW5kZWYtUE9TSVgtb24tY2xhbmctYXJtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtbWFrZWluc3QtRG8tbm90LXVuZGVmLVBPU0lYLW9uLWNsYW5nLWFybS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZGE3Yzk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDEtbWFrZWluc3QtRG8tbm90LXVuZGVmLVBPU0lYLW9uLWNsYW5nLWFybS5wYXRjaApAQCAtMCwwICsxLDM4IEBACitGcm9tIDg2Yjc5NDcxNTZhMGMzM2U3NjhkMGEyNjVlMzhmMjg4MWE3MGE3ZTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogRnJpLCA2IE1hciAyMDIwIDIzOjE5OjM3IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIG1ha2VpbnN0OiBEbyBub3QgdW5kZWYgUE9TSVggb24gY2xhbmcvYXJtCisKK2lmIF9fYXJtIGludGVybmFsIGNvbXBpbGVyIG1hY3JvIGlzIGRlZmluZWQgdGhlbiBtYWtlIGFzc3VtZXMgdGhhdCB0aGUKK3N5c3RlbSBpcyBub3QgcG9zaXggYW5kIGdvZXMgYWhlYWQgYW5kIHVuZGVmcyBQT1NJWCwgd2hpY2ggcmVzdWx0cyBpbgorbWlzY29tcGlsaW5nIG1ha2Ugd2l0aCBjbGFuZywgc2luY2UgY2xhbmcgZG9lcyBkZWZpbmUgX19hcm0gdW5saWtlIGdjYword2hpY2ggZG9lcyBub3QsIGJ1dCB0aGV5IGJvdGggc3VwcG9ydCBwb3NpeCBqdXN0IGZpbmUsIHNvIGhlcmUgY2hlY2sgZm9yCitjb21waWxlciBub3QgYmVpbmcgY2xhbmcgd2hlbiBfX2FybSBpcyBkZWZpbmVkIGJlZm9yZSB1bmRlZmluaW5nIHBvc2l4CisKK0ZpeGVzIGVycm9yIGxpa2UKKy4uL21ha2UtNC4zL3NyYy9qb2IuYzo1MDc6Mjc6IGVycm9yOiB0b28gbWFueSBhcmd1bWVudHMgdG8gZnVuY3Rpb24gY2FsbCwgZXhwZWN0ZWQgMCwgaGF2ZSAxCisgIHNpZ3NldG1hc2sgKHNpZ2dldG1hc2sgKDApICYgfmZhdGFsX3NpZ25hbF9tYXNrKQorICAgICAgICAgICAgICB+fn5+fn5+fn5+ICBeCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9tYWtlaW50LmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWFrZWludC5oIGIvc3JjL21ha2VpbnQuaAoraW5kZXggYzQyOGEzNi4uZmFkZjk2MyAxMDA2NDQKKy0tLSBhL3NyYy9tYWtlaW50LmgKKysrKyBiL3NyYy9tYWtlaW50LmgKK0BAIC0xMTUsNyArMTE1LDcgQEAgZXh0ZXJuIGludCBlcnJubzsKKyAjZW5kaWYKKyAKKyAvKiBTb21lIHN5c3RlbXMgZGVmaW5lIF9QT1NJWF9WRVJTSU9OIGJ1dCBhcmUgbm90IHJlYWxseSBQT1NJWC4xLiAgKi8KKy0jaWYgKGRlZmluZWQgKGJ1dHRlcmZseSkgfHwgZGVmaW5lZCAoX19hcm0pIHx8IChkZWZpbmVkIChfX21pcHMpICYmIGRlZmluZWQgKF9TWVNUWVBFX1NWUjMpKSB8fCAoZGVmaW5lZCAoc2VxdWVudCkgJiYgZGVmaW5lZCAoaTM4NikpKQorKyNpZiAoZGVmaW5lZCAoYnV0dGVyZmx5KSB8fCAoZGVmaW5lZCAoX19hcm0pICYmICFkZWZpbmVkKF9fY2xhbmdfXykpIHx8IChkZWZpbmVkIChfX21pcHMpICYmIGRlZmluZWQgKF9TWVNUWVBFX1NWUjMpKSB8fCAoZGVmaW5lZCAoc2VxdWVudCkgJiYgZGVmaW5lZCAoaTM4NikpKQorICMgdW5kZWYgUE9TSVgKKyAjZW5kaWYKKyAKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAxLXNyYy1kaXIuYy1maXgtYnVmZmVyLW92ZXJmbG93LXdhcm5pbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMS1zcmMtZGlyLmMtZml4LWJ1ZmZlci1vdmVyZmxvdy13YXJuaW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU3OTcwODIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMS1zcmMtZGlyLmMtZml4LWJ1ZmZlci1vdmVyZmxvdy13YXJuaW5nLnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gY2Q3MDkxYTdkODgzMDYwMDRjYTk4YzVkYWZjYzQwZjQ0NTg5YjEwNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplbnMgUmVoc2FjayA8c25vQG5ldGJzZC5vcmc+CitEYXRlOiBNb24sIDI0IEZlYiAyMDIwIDEwOjUyOjIxICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggMS8zXSBzcmMvZGlyLmM6IGZpeCBidWZmZXItb3ZlcmZsb3cgd2FybmluZworCitGaXggY29tcGlsZXIgd2FybmluZzoKKwlzcmMvZGlyLmM6MTI5NDo3OiB3YXJuaW5nOiAnc3RybmNweScgc3BlY2lmaWVkIGJvdW5kIGRlcGVuZHMgb24gdGhlCisJCQkgIGxlbmd0aCBvZiB0aGUgc291cmNlIGFyZ3VtZW50IFstV3N0cmluZ29wLW92ZXJmbG93PV0KKworVGhlIGV4aXN0aW5nIGNvZGUgYXNzdW1lcyBgcGF0aGAgd2lsbCBuZXZlciBleGNlZWQgYE1BWFBBVEhMRU5gLiBBbHNvIHRoZQorc2l6ZSBvZiB0aGUgYnVmZmVyIGlzIGluY3JlYXNlZCBieSAxIHRvIGhvbGQgYSBwYXRoIHdpdGggdGhlIGxlbmd0aCBvZgorYE1BWFBBVEhMRU5gIGFuZCB0cmFpbGluZyBgMGAuCisKK1NpZ25lZC1vZmYtYnk6IEplbnMgUmVoc2FjayA8c25vQG5ldGJzZC5vcmc+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyAoaHR0cHM6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvPzU3ODg4KQorCisgc3JjL2Rpci5jIHwgNiArKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Rpci5jIGIvc3JjL2Rpci5jCitpbmRleCA4NjJhMThlLi5jYWQ0YzRhIDEwMDY0NAorLS0tIGEvc3JjL2Rpci5jCisrKysgYi9zcmMvZGlyLmMKK0BAIC0xMjg5LDEwICsxMjg5LDEwIEBAIGxvY2FsX3N0YXQgKGNvbnN0IGNoYXIgKnBhdGgsIHN0cnVjdCBzdGF0ICpidWYpCisgICBpZiAocGxlbiA+IDEgJiYgcGF0aFtwbGVuIC0gMV0gPT0gJy4nCisgICAgICAgJiYgKHBhdGhbcGxlbiAtIDJdID09ICcvJyB8fCBwYXRoW3BsZW4gLSAyXSA9PSAnXFwnKSkKKyAgICAgeworLSAgICAgIGNoYXIgcGFyZW50W01BWFBBVEhMRU5dOworKyAgICAgIGNoYXIgcGFyZW50W01BWFBBVEhMRU4rMV07CisgCistICAgICAgc3RybmNweSAocGFyZW50LCBwYXRoLCBwbGVuIC0gMik7CistICAgICAgcGFyZW50W3BsZW4gLSAyXSA9ICdcMCc7CisrICAgICAgc3RybmNweSAocGFyZW50LCBwYXRoLCBNQVhQQVRITEVOKTsKKysgICAgICBwYXJlbnRbTUlOKHBsZW4gLSAyLCBNQVhQQVRITEVOKV0gPSAnXDAnOworICAgICAgIGlmIChzdGF0IChwYXJlbnQsIGJ1ZikgPCAwIHx8ICFfU19JU0RJUiAoYnVmLT5zdF9tb2RlKSkKKyAgICAgICAgIHJldHVybiAtMTsKKyAgICAgfQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDItZ2xvYi1Eby1ub3QtYXNzdW1lLWdsaWJjLWdsb2ItaW50ZXJuYWxzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDItZ2xvYi1Eby1ub3QtYXNzdW1lLWdsaWJjLWdsb2ItaW50ZXJuYWxzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNDlhY2Q5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAyLWdsb2ItRG8tbm90LWFzc3VtZS1nbGliYy1nbG9iLWludGVybmFscy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLUZyb20gOTg1ODcwMmRiZDFlMTM3MjYyYzA2NzY1OTE5OTM3NjYwODc5ZjYzYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+Ci1EYXRlOiBTdW4sIDI0IFNlcCAyMDE3IDA5OjEyOjU4IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBnbG9iOiBEbyBub3QgYXNzdW1lIGdsaWJjIGdsb2IgaW50ZXJuYWxzLgotCi1JdCBoYXMgYmVlbiBwcm9wb3NlZCB0aGF0IGdsaWJjIGdsb2Igc3RhcnQgdXNpbmcgZ2xfbHN0YXQsCi13aGljaCB0aGUgQVBJIGFsbG93cyBpdCB0byBkby4gIEdOVSAnbWFrZScgc2hvdWxkIG5vdCBnZXQgaW4KLXRoZSB3YXkgb2YgdGhpcy4gIFNlZToKLWh0dHBzOi8vc291cmNld2FyZS5vcmcvbWwvbGliYy1hbHBoYS8yMDE3LTA5L21zZzAwNDA5Lmh0bWwKLQotKiBkaXIuYyAobG9jYWxfbHN0YXQpOiBOZXcgZnVuY3Rpb24sIGxpa2UgbG9jYWxfc3RhdC4KLShkaXJfc2V0dXBfZ2xvYik6IFVzZSBpdCB0byBpbml0aWFsaXplIGdsX2xzdGF0IHRvbywgYXMgdGhlIEFQSQotcmVxdWlyZXMuCi0tLS0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotIGNvbmZpZ3VyZS5hYyB8IDMgKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA2NGVjODcwLi5lODc5MDFjIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zOTksMTAgKzM5OSw5IEBAIEFDX0NBQ0hFX0NIRUNLKFtpZiBzeXN0ZW0gbGliYyBoYXMgR05VIGdsb2JdLCBbbWFrZV9jdl9zeXNfZ251X2dsb2JdLAotICNpbmNsdWRlIDxnbG9iLmg+Ci0gI2luY2x1ZGUgPGZubWF0Y2guaD4KLSAKLS0jZGVmaW5lIEdMT0JfSU5URVJGQUNFX1ZFUlNJT04gMQotICNpZiAhZGVmaW5lZCBfTElCQyAmJiBkZWZpbmVkIF9fR05VX0xJQlJBUllfXyAmJiBfX0dOVV9MSUJSQVJZX18gPiAxCi0gIyBpbmNsdWRlIDxnbnUtdmVyc2lvbnMuaD4KLS0jIGlmIF9HTlVfR0xPQl9JTlRFUkZBQ0VfVkVSU0lPTiA9PSBHTE9CX0lOVEVSRkFDRV9WRVJTSU9OCi0raWYgX0dOVV9HTE9CX0lOVEVSRkFDRV9WRVJTSU9OID09IDEgfHwgX0dOVV9HTE9CX0lOVEVSRkFDRV9WRVJTSU9OID09IDIKLSAgICBnbnUgZ2xvYgotICMgZW5kaWYKLSAjZW5kaWZdLAotLS0gCi0yLjE2LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlLzAwMDItbW9kdWxlcy1mY250bC1hbGxvdy1iZWluZy1kZXRlY3RlZC1ieS1pbXBvcnRpbmctcHJvai5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAyLW1vZHVsZXMtZmNudGwtYWxsb3ctYmVpbmctZGV0ZWN0ZWQtYnktaW1wb3J0aW5nLXByb2oucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjNkOTdmOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAyLW1vZHVsZXMtZmNudGwtYWxsb3ctYmVpbmctZGV0ZWN0ZWQtYnktaW1wb3J0aW5nLXByb2oucGF0Y2gKQEAgLTAsMCArMSwzMyBAQAorRnJvbSBmYjhhYWVkM2IwNDBlNTg5Y2Q4ODBmZDcxNGRkYTVlYzAwNjg3MjE3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVucyBSZWhzYWNrIDxzbm9AbmV0YnNkLm9yZz4KK0RhdGU6IE1vbiwgMjQgRmViIDIwMjAgMTI6MTA6MDYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzJdIG1vZHVsZXM6IGZjbnRsOiBhbGxvdyBiZWluZyBkZXRlY3RlZCBieSBpbXBvcnRpbmcKKyBwcm9qZWN0cworCitHTlUgcHJvamVjdCBgbWFrZWAgcmVsaWVzIG9uIGdudWxpYiBidXQgcHJvdmlkZXMgc29tZSBvd24gY29tcGF0aWJpbGl0eQorZnVuY3Rpb25zIC0gaW5jbHVkaW5nIGFuIGBmY250bGAsIHdoaWNoIGZhaWxzIG9uIG1pbmd3LgorVGhlIGludGVuc2lvbiBvZiBnbnVsaWIgaXMgcHJvdmlkaW5nIHRoZXNlIGZ1bmN0aW9ucyBhbmQgYmVpbmcgd2lkZXIgdGVzdGVkLAorYnV0IHNpbGVudGx5IGluamVjdGluZyBhIGZ1bmN0aW9uIG9wZW5zIGJhdHRsZSBvZiBjb21wYXRpYmlsaXR5IGxheWVycy4KKworU28gYWRkaW5nIGEgaGludCBpbnRvIHRhcmdldCBgY29uZmlnLmhgIHRvIGFsbG93IGRlY2lkaW5nIHdoZXRoZXIgdXNpbmcKK2FuIG93biBjb21wYXRpYmlsaXR5IGltcGxlbWVudGF0aW9uIG9yIG5vdC4KKworU2lnbmVkLW9mZi1ieTogSmVucyBSZWhzYWNrIDxzbm9AbmV0YnNkLm9yZz4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKKyBtNC9nbnVsaWItY29tcC5tNCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvbTQvZ251bGliLWNvbXAubTQgYi9tNC9nbnVsaWItY29tcC5tNAoraW5kZXggM2VlMDgxMS4uY2Y3NTU0MSAxMDA2NDQKKy0tLSBhL200L2dudWxpYi1jb21wLm00CisrKysgYi9tNC9nbnVsaWItY29tcC5tNAorQEAgLTE0Nyw2ICsxNDcsNyBAQAorICAgZ2xfRlVOQ19GQ05UTAorICAgaWYgdGVzdCAkSEFWRV9GQ05UTCA9IDAgfHwgdGVzdCAkUkVQTEFDRV9GQ05UTCA9IDE7IHRoZW4KKyAgICAgQUNfTElCT0JKKFtmY250bF0pCisrICAgIEFDX0RFRklORShIQVZFX0dOVUxJQl9GQ05UTCwgMSwgW0RlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSBgZmNudGwnIGZ1bmN0aW9uIHZpYSBnbnVsaWIuXSkKKyAgIGZpCisgICBnbF9GQ05UTF9NT0RVTEVfSU5ESUNBVE9SKFtmY250bF0pCisgICBnbF9GQ05UTF9ICmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMi13MzItY29tcGF0LWRpcmVudC5jLWZvbGxvdy1oZWFkZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMi13MzItY29tcGF0LWRpcmVudC5jLWZvbGxvdy1oZWFkZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWVjYzQ0NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAyLXczMi1jb21wYXQtZGlyZW50LmMtZm9sbG93LWhlYWRlci5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDRkZDhiNGY0M2FhMDA3ODcwN2FkOWE3OTMyZjRlMTM3YmM0MzgzZWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZW5zIFJlaHNhY2sgPHNub0BuZXRic2Qub3JnPgorRGF0ZTogTW9uLCAyNCBGZWIgMjAyMCAxMToxMjo0MyArMDEwMAorU3ViamVjdDogW1BBVENIIDIvM10gdzMyOiBjb21wYXQ6IGRpcmVudC5jOiBmb2xsb3cgaGVhZGVyCisKK3NyYy93MzIvaW5jbHVkZS9kaXJlbnQuaCBjb21wbGV0ZWx5IGRlbGVnYXRlcyB0byBtaW5ndyBkaXJlbnQgaW1wbGVtZW50YXRpb24sCitnbnVsaWIgZGV0ZWN0cyBpdCBhcyBmaW5lIGFuZCBjb21wbGV0ZWx5IHVzYWJsZSAtIHRydXN0IGluIHRoYXQuCisKK1NpZ25lZC1vZmYtYnk6IEplbnMgUmVoc2FjayA8c25vQG5ldGJzZC5vcmc+CistLS0KK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZyAoaHR0cHM6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvPzU3ODg4KQorCisgc3JjL3czMi9jb21wYXQvZGlyZW50LmMgfCAzICsrLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy93MzIvY29tcGF0L2RpcmVudC5jIGIvc3JjL3czMi9jb21wYXQvZGlyZW50LmMKK2luZGV4IGI4ZWM2MTUuLmRlODBmNzIgMTAwNjQ0CistLS0gYS9zcmMvdzMyL2NvbXBhdC9kaXJlbnQuYworKysrIGIvc3JjL3czMi9jb21wYXQvZGlyZW50LmMKK0BAIC0yMyw3ICsyMyw3IEBAIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4gICovCisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorICNpbmNsdWRlICJkaXJlbnQuaCIKKyAKKy0KKysjaWZuZGVmIF9fTUlOR1czMl9fCisgRElSKgorIG9wZW5kaXIoY29uc3QgY2hhciogcERpck5hbWUpCisgeworQEAgLTE5MywzICsxOTMsNCBAQCBzZWVrZGlyKERJUiogcERpciwgbG9uZyBuUG9zaXRpb24pCisgCisgICAgICAgICByZXR1cm47CisgfQorKyNlbmRpZiAgLyogIV9fTUlOR1czMl9fICovCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMy1wb3NpeGZjbi1mY250bC1nbnVsaWItbWFrZS1lbXVsYXRlZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZS8wMDAzLXBvc2l4ZmNuLWZjbnRsLWdudWxpYi1tYWtlLWVtdWxhdGVkLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwNDE0YzUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2UvMDAwMy1wb3NpeGZjbi1mY250bC1nbnVsaWItbWFrZS1lbXVsYXRlZC5wYXRjaApAQCAtMCwwICsxLDc5IEBACitGcm9tIDNkMDc0YzhmY2E1ZmNmM2U2YjgzZDMzNzg4ZjM1YThmMWIzYTQ0YTIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZW5zIFJlaHNhY2sgPHNub0BuZXRic2Qub3JnPgorRGF0ZTogRnJpLCAyMSBGZWIgMjAyMCAxOToyOTo0OSArMDEwMAorU3ViamVjdDogW1BBVENIIDMvM10gcG9zaXhmY246IGZjbnRsOiBnbnVsaWIgPiBtYWtlLWVtdWxhdGVkCisKK1JhdGUgdGhlIGZjbnRsIGVtdWxhdGlvbiBmcm9tIGdudWxpYiBoaWdoZXIgdGhhbiB0aGUgb3duIG9uZS4KKworU2lnbmVkLW9mZi1ieTogSmVucyBSZWhzYWNrIDxzbm9AbmV0YnNkLm9yZz4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIChodHRwczovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/NTc4ODgpCisKKyBzcmMvb3V0cHV0LmggICAgICAgICAgICAgIHwgMTkgKysrKysrKysrKysrKystLS0tLQorIHNyYy93MzIvY29tcGF0L3Bvc2l4ZmNuLmMgfCAgMiArKworIDIgZmlsZXMgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9vdXRwdXQuaCBiL3NyYy9vdXRwdXQuaAoraW5kZXggYTUwNjUwNS4uZDNjZTZiNyAxMDA2NDQKKy0tLSBhL3NyYy9vdXRwdXQuaAorKysrIGIvc3JjL291dHB1dC5oCitAQCAtNjcsMTQgKzY3LDIxIEBAIHZvaWQgb3V0cHV0X2R1bXAgKHN0cnVjdCBvdXRwdXQgKm91dCk7CisgCisgIyBpZmRlZiBXSU5ET1dTMzIKKyAvKiBGb3IgZW11bGF0aW9ucyBpbiB3MzIvY29tcGF0L3Bvc2l4ZmNuLmMuICAqLworLSMgIGRlZmluZSBGX0dFVEZEIDEKKy0jICBkZWZpbmUgRl9TRVRMS1cgMgorKyMgIGlmbmRlZiBGX0dFVEZECisrIyAgIGRlZmluZSBGX0dFVEZEIDEKKysjICBlbmRpZgorKyMgIGlmbmRlZiBGX1NFVExLVworKyMgICBkZWZpbmUgRl9TRVRMS1cgMgorKyMgIGVuZGlmCisgLyogSW1wbGVtZW50YXRpb24gbm90ZTogTm9uZSBvZiB0aGUgdmFsdWVzIG9mIGxfdHlwZSBiZWxvdyBjYW4gYmUgemVybworICAgIC0tIHRoZXkgYXJlIGNvbXBhcmVkIHdpdGggYSBzdGF0aWMgaW5zdGFuY2Ugb2YgdGhlIHN0cnVjdCwgc28gemVybworICAgIG1lYW5zIHVua25vd24vaW52YWxpZCwgc2VlIHczMi9jb21wYXQvcG9zaXhmY24uYy4gKi8KKy0jICBkZWZpbmUgRl9XUkxDSyAxCistIyAgZGVmaW5lIEZfVU5MQ0sgMgorLQorKyMgIGlmbmRlZiBGX1dSTENLCisrIyAgIGRlZmluZSBGX1dSTENLIDEKKysjICBlbmRpZgorKyMgIGlmbmRlZiBGX1VOTENLCisrIyAgIGRlZmluZSBGX1VOTENLIDIKKysjICBlbmRpZgorIHN0cnVjdCBmbG9jaworICAgeworICAgICBzaG9ydCBsX3R5cGU7CitAQCAtODksNyArOTYsOSBAQCBzdHJ1Y3QgZmxvY2sKKyB0eXBlZGVmIGludHB0cl90IHN5bmNfaGFuZGxlX3Q7CisgCisgLyogUHVibGljIGZ1bmN0aW9ucyBlbXVsYXRlZC9wcm92aWRlZCBpbiBwb3NpeGZjbi5jLiAgKi8KKysjICBpZm5kZWYgSEFWRV9HTlVMSUJfRkNOVEwKKyBpbnQgZmNudGwgKGludHB0cl90IGZkLCBpbnQgY21kLCAuLi4pOworKyMgIGVuZGlmCisgaW50cHRyX3QgY3JlYXRlX211dGV4ICh2b2lkKTsKKyBpbnQgc2FtZV9zdHJlYW0gKEZJTEUgKmYxLCBGSUxFICpmMik7CisgCitkaWZmIC0tZ2l0IGEvc3JjL3czMi9jb21wYXQvcG9zaXhmY24uYyBiL3NyYy93MzIvY29tcGF0L3Bvc2l4ZmNuLmMKK2luZGV4IDk3NWRmYjcuLmQzMzdiOWMgMTAwNjQ0CistLS0gYS9zcmMvdzMyL2NvbXBhdC9wb3NpeGZjbi5jCisrKysgYi9zcmMvdzMyL2NvbXBhdC9wb3NpeGZjbi5jCitAQCAtMjksNiArMjksNyBAQCB0aGlzIHByb2dyYW0uICBJZiBub3QsIHNlZSA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uICAqLworICNpZm5kZWYgTk9fT1VUUFVUX1NZTkMKKyAvKiBTdXBwb3J0IGZvciBPVVRQVVRfU1lOQyBhbmQgcmVsYXRlZCBmdW5jdGlvbmFsaXR5LiAgKi8KKyAKKysjaWZuZGVmIEhBVkVfR05VTElCX0ZDTlRMCisgLyogRW11bGF0aW9uIG9mIGZjbnRsIHRoYXQgc3VwcG9ydHMgb25seSBGX0dFVEZEIGFuZCBGX1NFVExLVy4gICovCisgaW50CisgZmNudGwgKGludHB0cl90IGZkLCBpbnQgY21kLCAuLi4pCitAQCAtMTQyLDYgKzE0Myw3IEBAIGZjbnRsIChpbnRwdHJfdCBmZCwgaW50IGNtZCwgLi4uKQorICAgICAgICAgcmV0dXJuIC0xOworICAgICB9CisgfQorKyNlbmRpZiAvKiBHTlVMSUJfVEVTVF9GQ05UTCAqLworIAorIHN0YXRpYyBpbnRwdHJfdCBtdXRleF9oYW5kbGUgPSAtMTsKKyAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZV80LjIuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZV80LjIuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzZlNmEwYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tYWtlL21ha2VfNC4yLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMiArMCwwIEBACi1MSUNFTlNFID0gIkdQTHYzICYgTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2xvYi9DT1BZSU5HLkxJQjttZDU9NGE3NzBiNjdlNmJlMGY2MGRhMjQ0YmViMmRlMGZjZTQiCi1yZXF1aXJlIG1ha2UuaW5jCi0KLUVYVFJBX09FQ09ORiArPSAiLS13aXRob3V0LWd1aWxlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMTViMDEyNjE3ZTdjNDRjMGVkNDgyNzIxNjI5NTc3YWMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDZlMjYyYmYzNjAxYjQyZDJiMWU0ZWY4MzEwMDI5ZTFkY2YyMDA4M2M1NDQ2YjRiN2FhNjcwODFmZGZmYzU4OSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWFrZS9tYWtlXzQuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZV80LjMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2UwZWI1NAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21ha2UvbWFrZV80LjMuYmIKQEAgLTAsMCArMSwxOCBAQAorTElDRU5TRSA9ICJHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgorcmVxdWlyZSBtYWtlLmluYworCitTUkNfVVJJICs9ICJcCisJZmlsZTovLzAwMDEtbTQtZ2V0bG9hZGF2Zy5tNC1yZXN0cmljdC1BSVgtc3BlY2lmaWMtdGVzdC1vbi1BSVgucGF0Y2ggXAorCWZpbGU6Ly8wMDAyLW1vZHVsZXMtZmNudGwtYWxsb3ctYmVpbmctZGV0ZWN0ZWQtYnktaW1wb3J0aW5nLXByb2oucGF0Y2ggXAorCWZpbGU6Ly8wMDAxLXNyYy1kaXIuYy1maXgtYnVmZmVyLW92ZXJmbG93LXdhcm5pbmcucGF0Y2ggXAorCWZpbGU6Ly8wMDAyLXczMi1jb21wYXQtZGlyZW50LmMtZm9sbG93LWhlYWRlci5wYXRjaCBcCisJZmlsZTovLzAwMDMtcG9zaXhmY24tZmNudGwtZ251bGliLW1ha2UtZW11bGF0ZWQucGF0Y2ggXAorCWZpbGU6Ly8wMDAxLW1ha2VpbnN0LURvLW5vdC11bmRlZi1QT1NJWC1vbi1jbGFuZy1hcm0ucGF0Y2ggXAorIgorCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aG91dC1ndWlsZSIKKworU1JDX1VSSVtzaGEyNTZzdW1dID0gImUwNWZkZGU0N2M1ZjdjYTQ1Y2I2OTdlOTczODk0ZmY0ZjVkNzllMTNiNzUwZWQ1N2Q3YjY2ZDhkZWZjNzhlMTkiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDEtTWFrZS1DUFUtZmFtaWx5LXdhcm5pbmdzLWZhdGFsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMS1NYWtlLUNQVS1mYW1pbHktd2FybmluZ3MtZmF0YWwucGF0Y2gKaW5kZXggOWNlMzFlNS4uZTY0NDg4YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMS1NYWtlLUNQVS1mYW1pbHktd2FybmluZ3MtZmF0YWwucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMS1NYWtlLUNQVS1mYW1pbHktd2FybmluZ3MtZmF0YWwucGF0Y2gKQEAgLTE2LDEyICsxNiwxMiBAQAogLS0tIGEvbWVzb25idWlsZC9lbnZjb25maWcucHkKICsrKyBiL21lc29uYnVpbGQvZW52Y29uZmlnLnB5CiBAQCAtMTkyLDcgKzE5Miw3IEBAIGNsYXNzIE1hY2hpbmVJbmZvOgotIAorCiAgICAgICAgICBjcHVfZmFtaWx5ID0gbGl0ZXJhbFsnY3B1X2ZhbWlseSddCiAgICAgICAgICBpZiBjcHVfZmFtaWx5IG5vdCBpbiBrbm93bl9jcHVfZmFtaWxpZXM6CiAtICAgICAgICAgICAgbWxvZy53YXJuaW5nKCdVbmtub3duIENQVSBmYW1pbHkgJXMsIHBsZWFzZSByZXBvcnQgdGhpcyBhdCBodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9pc3N1ZXMvbmV3JyAlIGNwdV9mYW1pbHkpCiArICAgICAgICAgICAgcmFpc2UgRW52aXJvbm1lbnRFeGNlcHRpb24oJ1Vua25vd24gQ1BVIGZhbWlseSAlcywgc2VlIGh0dHBzOi8vd2lraS55b2N0b3Byb2plY3Qub3JnL3dpa2kvTWVzb24vVW5rbm93bkNQVSBmb3IgZGlyZWN0aW9ucy4nICUgY3B1X2ZhbWlseSkKLSAKKwogICAgICAgICAgZW5kaWFuID0gbGl0ZXJhbFsnZW5kaWFuJ10KICAgICAgICAgIGlmIGVuZGlhbiBub3QgaW4gKCdsaXR0bGUnLCAnYmlnJyk6CiBkaWZmIC0tZ2l0IGEvbWVzb25idWlsZC9lbnZpcm9ubWVudC5weSBiL21lc29uYnVpbGQvZW52aXJvbm1lbnQucHkKQEAgLTMwLDEyICszMCwxMiBAQAogKysrIGIvbWVzb25idWlsZC9lbnZpcm9ubWVudC5weQogQEAgLTM1NCw5ICszNTQsNyBAQCBkZWYgZGV0ZWN0X2NwdV9mYW1pbHkoY29tcGlsZXJzOiBDb21waWxlcnNEaWN0KSAtPiBzdHI6CiAgICAgICAgICB0cmlhbCA9ICdwYXJpc2MnCi0gCisKICAgICAgaWYgdHJpYWwgbm90IGluIGtub3duX2NwdV9mYW1pbGllczoKIC0gICAgICAgIG1sb2cud2FybmluZygnVW5rbm93biBDUFUgZmFtaWx5IHshcn0sIHBsZWFzZSByZXBvcnQgdGhpcyBhdCAnCiAtICAgICAgICAgICAgICAgICAgICAgJ2h0dHBzOi8vZ2l0aHViLmNvbS9tZXNvbmJ1aWxkL21lc29uL2lzc3Vlcy9uZXcgd2l0aCB0aGUgJwogLSAgICAgICAgICAgICAgICAgICAgICdvdXRwdXQgb2YgYHVuYW1lIC1hYCBhbmQgYGNhdCAvcHJvYy9jcHVpbmZvYCcuZm9ybWF0KHRyaWFsKSkKICsgICAgICAgIHJhaXNlIEVudmlyb25tZW50RXhjZXB0aW9uKCdVbmtub3duIENQVSBmYW1pbHkgJXMsIHNlZSBodHRwczovL3dpa2kueW9jdG9wcm9qZWN0Lm9yZy93aWtpL01lc29uL1Vua25vd25DUFUgZm9yIGRpcmVjdGlvbnMuJyAlIHRyaWFsKQotIAorCiAgICAgIHJldHVybiB0cmlhbAotIAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAyLVN1cHBvcnQtYnVpbGRpbmctYWxsYXJjaC1yZWNpcGVzLWFnYWluLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMi1TdXBwb3J0LWJ1aWxkaW5nLWFsbGFyY2gtcmVjaXBlcy1hZ2Fpbi5wYXRjaAppbmRleCBjZTE4NjYwLi5kMmMzZjhjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAyLVN1cHBvcnQtYnVpbGRpbmctYWxsYXJjaC1yZWNpcGVzLWFnYWluLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDItU3VwcG9ydC1idWlsZGluZy1hbGxhcmNoLXJlY2lwZXMtYWdhaW4ucGF0Y2gKQEAgLTE3LDggKzE3LDggQEAKIC0tLSBhL21lc29uYnVpbGQvZW52Y29uZmlnLnB5CiArKysgYi9tZXNvbmJ1aWxkL2VudmNvbmZpZy5weQogQEAgLTM2LDYgKzM2LDcgQEAgX1QgPSB0eXBpbmcuVHlwZVZhcignX1QnKQotIAotIAorCisKICBrbm93bl9jcHVfZmFtaWxpZXMgPSAoCiArICAgICdhbGxhcmNoJywKICAgICAgJ2FhcmNoNjQnLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMy1uYXRpdmVfYmluZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbWVzb24vbWVzb24vMDAwMy1uYXRpdmVfYmluZGlyLnBhdGNoCmluZGV4IGRjODIyZmIuLmE1YmFjYTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21lc29uL21lc29uLzAwMDMtbmF0aXZlX2JpbmRpci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9tZXNvbi9tZXNvbi8wMDAzLW5hdGl2ZV9iaW5kaXIucGF0Y2gKQEAgLTI4LDI1ICsyOCwyNSBAQAogQEAgLTE4NCw3ICsxODQsNyBAQCBjbGFzcyBEZXBlbmRlbmN5OgogICAgICBkZWYgZ2V0X2V4ZV9hcmdzKHNlbGYsIGNvbXBpbGVyKToKICAgICAgICAgIHJldHVybiBbXQotIAorCiAtICAgIGRlZiBnZXRfcGtnY29uZmlnX3ZhcmlhYmxlKHNlbGYsIHZhcmlhYmxlX25hbWUsIGt3YXJncyk6CiArICAgIGRlZiBnZXRfcGtnY29uZmlnX3ZhcmlhYmxlKHNlbGYsIHZhcmlhYmxlX25hbWUsIGt3YXJncywgdXNlX25hdGl2ZT1GYWxzZSk6CiAgICAgICAgICByYWlzZSBEZXBlbmRlbmN5RXhjZXB0aW9uKCd7IXJ9IGlzIG5vdCBhIHBrZ2NvbmZpZyBkZXBlbmRlbmN5Jy5mb3JtYXQoc2VsZi5uYW1lKSkKLSAKKwogICAgICBkZWYgZ2V0X2NvbmZpZ3Rvb2xfdmFyaWFibGUoc2VsZiwgdmFyaWFibGVfbmFtZSk6CiBAQCAtMjQ3LDcgKzI0Nyw3IEBAIGNsYXNzIEludGVybmFsRGVwZW5kZW5jeShEZXBlbmRlbmN5KToKICAgICAgICAgIHNlbGYuc291cmNlcyA9IHNvdXJjZXMKICAgICAgICAgIHNlbGYuZXh0X2RlcHMgPSBleHRfZGVwcwotIAorCiAtICAgIGRlZiBnZXRfcGtnY29uZmlnX3ZhcmlhYmxlKHNlbGYsIHZhcmlhYmxlX25hbWUsIGt3YXJncyk6CiArICAgIGRlZiBnZXRfcGtnY29uZmlnX3ZhcmlhYmxlKHNlbGYsIHZhcmlhYmxlX25hbWUsIGt3YXJncywgdXNlX25hdGl2ZT1GYWxzZSk6CiAgICAgICAgICByYWlzZSBEZXBlbmRlbmN5RXhjZXB0aW9uKCdNZXRob2QgImdldF9wa2djb25maWdfdmFyaWFibGUoKSIgaXMgJwogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW52YWxpZCBmb3IgYW4gaW50ZXJuYWwgZGVwZW5kZW5jeScpCi0gCisKIEBAIC02NzMsMTUgKzY3MywxOCBAQCBjbGFzcyBQa2dDb25maWdEZXBlbmRlbmN5KEV4dGVybmFsRGVwZW5kZW5jeSk6CiAgICAgICAgICByZXR1cm4gcy5mb3JtYXQoc2VsZi5fX2NsYXNzX18uX19uYW1lX18sIHNlbGYubmFtZSwgc2VsZi5pc19mb3VuZCwKICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLnZlcnNpb25fcmVxcykKLSAKKwogLSAgICBkZWYgX2NhbGxfcGtnYmluX3JlYWwoc2VsZiwgYXJncywgZW52KToKIC0gICAgICAgIGNtZCA9IHNlbGYucGtnYmluLmdldF9jb21tYW5kKCkgKyBhcmdzCiArICAgIGRlZiBfY2FsbF9wa2diaW5fcmVhbChzZWxmLCBhcmdzLCBlbnYsIHVzZV9uYXRpdmU9RmFsc2UpOgpAQCAtNTksNyArNTksNyBAQAogICAgICAgICAgY2FsbCA9ICcgJy5qb2luKGNtZCkKICAgICAgICAgIG1sb2cuZGVidWcoIkNhbGxlZCBge31gIC0+IHt9XG57fSIuZm9ybWF0KGNhbGwsIHJjLCBvdXQpKQogICAgICAgICAgcmV0dXJuIHJjLCBvdXQsIGVycgotIAorCiAtICAgIGRlZiBfY2FsbF9wa2diaW4oc2VsZiwgYXJncywgZW52PU5vbmUpOgogKyAgICBkZWYgX2NhbGxfcGtnYmluKHNlbGYsIGFyZ3MsIGVudj1Ob25lLCB1c2VfbmF0aXZlPUZhbHNlKToKICAgICAgICAgICMgQWx3YXlzIGNvcHkgdGhlIGVudmlyb25tZW50IHNpbmNlIHdlJ3JlIGdvaW5nIHRvIG1vZGlmeSBpdApAQCAtNzIsMjEgKzcyLDIxIEBACiAtICAgICAgICAgICAgY2FjaGVbKHNlbGYucGtnYmluLCB0YXJncywgZmVudildID0gc2VsZi5fY2FsbF9wa2diaW5fcmVhbChhcmdzLCBlbnYpCiArICAgICAgICAgICAgY2FjaGVbKHNlbGYucGtnYmluLCB0YXJncywgZmVudildID0gc2VsZi5fY2FsbF9wa2diaW5fcmVhbChhcmdzLCBlbnYsIHVzZV9uYXRpdmUpCiAgICAgICAgICByZXR1cm4gY2FjaGVbKHNlbGYucGtnYmluLCB0YXJncywgZmVudildCi0gCisKICAgICAgZGVmIF9jb252ZXJ0X21pbmd3X3BhdGhzKHNlbGYsIGFyZ3M6IFQuTGlzdFtzdHJdKSAtPiBULkxpc3Rbc3RyXToKIEBAIC05MDcsNyArOTEwLDcgQEAgY2xhc3MgUGtnQ29uZmlnRGVwZW5kZW5jeShFeHRlcm5hbERlcGVuZGVuY3kpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHNlbGYubmFtZSwgb3V0X3JhdykpCiAgICAgICAgICBzZWxmLmxpbmtfYXJncywgc2VsZi5yYXdfbGlua19hcmdzID0gc2VsZi5fc2VhcmNoX2xpYnMob3V0LCBvdXRfcmF3KQotIAorCiAtICAgIGRlZiBnZXRfcGtnY29uZmlnX3ZhcmlhYmxlKHNlbGYsIHZhcmlhYmxlX25hbWUsIGt3YXJncyk6CiArICAgIGRlZiBnZXRfcGtnY29uZmlnX3ZhcmlhYmxlKHNlbGYsIHZhcmlhYmxlX25hbWUsIGt3YXJncywgdXNlX25hdGl2ZT1GYWxzZSk6CiAgICAgICAgICBvcHRpb25zID0gWyctLXZhcmlhYmxlPScgKyB2YXJpYWJsZV9uYW1lLCBzZWxmLm5hbWVdCi0gCisKICAgICAgICAgIGlmICdkZWZpbmVfdmFyaWFibGUnIGluIGt3YXJnczoKIEBAIC05MjAsNyArOTIzLDcgQEAgY2xhc3MgUGtnQ29uZmlnRGVwZW5kZW5jeShFeHRlcm5hbERlcGVuZGVuY3kpOgotIAorCiAgICAgICAgICAgICAgb3B0aW9ucyA9IFsnLS1kZWZpbmUtdmFyaWFibGU9JyArICc9Jy5qb2luKGRlZmluaXRpb24pXSArIG9wdGlvbnMKLSAKKwogLSAgICAgICAgcmV0LCBvdXQsIGVyciA9IHNlbGYuX2NhbGxfcGtnYmluKG9wdGlvbnMpCiArICAgICAgICByZXQsIG91dCwgZXJyID0gc2VsZi5fY2FsbF9wa2diaW4ob3B0aW9ucywgdXNlX25hdGl2ZT11c2VfbmF0aXZlKQogICAgICAgICAgdmFyaWFibGUgPSAnJwpAQCAtMTA0LDcgKzEwNCw3IEBACiArICAgICAgICAgICAgcHJlZml4ID0gY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdleGVjX3ByZWZpeCcsIHt9LCB1c2VfbmF0aXZlPVRydWUpCiAgICAgICAgICAgICAgaWYgcHJlZml4OgogICAgICAgICAgICAgICAgICBzZWxmLmJpbmRpciA9IG9zLnBhdGguam9pbihwcmVmaXgsICdiaW4nKQotIAorCiBAQCAtNTA4LDcgKzUwOCw3IEBAIGNsYXNzIFF0NERlcGVuZGVuY3koUXRCYXNlRGVwZW5kZW5jeSk6CiAgICAgICAgICBhcHBsaWNhdGlvbnMgPSBbJ21vYycsICd1aWMnLCAncmNjJywgJ2x1cGRhdGUnLCAnbHJlbGVhc2UnXQogICAgICAgICAgZm9yIGFwcGxpY2F0aW9uIGluIGFwcGxpY2F0aW9uczoKQEAgLTExMywxMyArMTEzLDEzIEBACiArICAgICAgICAgICAgICAgIHJldHVybiBvcy5wYXRoLmRpcm5hbWUoY29yZS5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCclc19sb2NhdGlvbicgJSBhcHBsaWNhdGlvbiwge30sIHVzZV9uYXRpdmU9VHJ1ZSkpCiAgICAgICAgICAgICAgZXhjZXB0IE1lc29uRXhjZXB0aW9uOgogICAgICAgICAgICAgICAgICBwYXNzCi0gCisKIEBAIC01MTgsNyArNTE4LDcgQEAgY2xhc3MgUXQ1RGVwZW5kZW5jeShRdEJhc2VEZXBlbmRlbmN5KToKICAgICAgICAgIFF0QmFzZURlcGVuZGVuY3kuX19pbml0X18oc2VsZiwgJ3F0NScsIGVudiwga3dhcmdzKQotIAorCiAgICAgIGRlZiBnZXRfcGtnY29uZmlnX2hvc3RfYmlucyhzZWxmLCBjb3JlKToKIC0gICAgICAgIHJldHVybiBjb3JlLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2hvc3RfYmlucycsIHt9KQogKyAgICAgICAgcmV0dXJuIGNvcmUuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnaG9zdF9iaW5zJywge30sIHVzZV9uYXRpdmU9VHJ1ZSkKLSAKKwogICAgICBkZWYgZ2V0X3ByaXZhdGVfaW5jbHVkZXMoc2VsZiwgbW9kX2luY19kaXIsIG1vZHVsZSk6CiAgICAgICAgICByZXR1cm4gX3F0X2dldF9wcml2YXRlX2luY2x1ZGVzKG1vZF9pbmNfZGlyLCBtb2R1bGUsIHNlbGYudmVyc2lvbikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL21tYy9tbWMtdXRpbHNfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbW1jL21tYy11dGlsc19naXQuYmIKaW5kZXggMGM0MDFjOC4uNWZkMWM1YyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbW1jL21tYy11dGlsc19naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbW1jL21tYy11dGlsc19naXQuYmIKQEAgLTQsNyArNCw3IEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9tbWMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT1mYWUzMjc5MmUyMGY0ZDI3YWRlMWM1YTc2MmQxNmI3ZCIKIAogU1JDQlJBTkNIID89ICJtYXN0ZXIiCi1TUkNSRVYgPSAiYWVmOTEzZTMxYjY1OTQ2MmZlNmI5MzIwZDI0MTY3NmNiYTk3ZjY3YiIKK1NSQ1JFViA9ICI3M2Q2YzU5YWY4ZDFiY2VkZjVkZTRhYTFmNWQ1YjdmNzY1ZjU0NWY1IgogCiBQViA9ICIwLjErZ2l0JHtTUkNQVn0iCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbS8wMDAxLXN0ZGxpYi1BZGQtc3RybGNhdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbS8wMDAxLXN0ZGxpYi1BZGQtc3RybGNhdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kOTRmZDMyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtLzAwMDEtc3RkbGliLUFkZC1zdHJsY2F0LnBhdGNoCkBAIC0wLDAgKzEsMTE3IEBACitGcm9tIDhhMjA0MTcxMDA0ZmEwZDdkMjEzODk1MzBjNzQ0ZDIxNWU5OWVmYjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+CitEYXRlOiBUdWUsIDE5IE5vdiAyMDE5IDEyOjQ3OjMwIC0wNjAwCitTdWJqZWN0OiBbUEFUQ0ggMS8yXSBzdGRsaWI6IEFkZCBzdHJsY2F0CisKK0FkZHMgc3RybGNhdCB3aGljaCBjYW4gYmUgdXNlZCB0byBzYWZlbHkgY29uY2F0ZW5hdGUgc3RyaW5ncworCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9idWd6aWxsYS5uYXNtLnVzL3Nob3dfYnVnLmNnaT9pZD0zMzkyNjM1XQorU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuaW4gICAgICAgIHwgIDIgKy0KKyBjb25maWd1cmUuYWMgICAgICAgfCAgMiArKworIGluY2x1ZGUvY29tcGlsZXIuaCB8ICA0ICsrKysKKyBzdGRsaWIvc3RybGNhdC5jICAgfCA0MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgNCBmaWxlcyBjaGFuZ2VkLCA1MCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IHN0ZGxpYi9zdHJsY2F0LmMKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlLmluIGIvTWFrZWZpbGUuaW4KK2luZGV4IDMyZWYzZDkxLi5mZjdlYjQ0NyAxMDA2NDQKKy0tLSBhL01ha2VmaWxlLmluCisrKysgYi9NYWtlZmlsZS5pbgorQEAgLTkzLDcgKzkzLDcgQEAgTkFTTSA9CWFzbS9uYXNtLiQoTykKKyBORElTQVNNID0gZGlzYXNtL25kaXNhc20uJChPKQorIAorIExJQk9CSiA9IHN0ZGxpYi9zbnByaW50Zi4kKE8pIHN0ZGxpYi92c25wcmludGYuJChPKSBzdGRsaWIvc3RybGNweS4kKE8pIFwKKy0Jc3RkbGliL3N0cm5sZW4uJChPKSBzdGRsaWIvc3RycmNocm51bC4kKE8pIFwKKysJc3RkbGliL3N0cm5sZW4uJChPKSBzdGRsaWIvc3RycmNocm51bC4kKE8pIHN0ZGxpYi9zdHJsY2F0LiQoTykgXAorIAlcCisgCW5hc21saWIvdmVyLiQoTykgXAorIAluYXNtbGliL2NyYzY0LiQoTykgbmFzbWxpYi9tYWxsb2MuJChPKSBuYXNtbGliL2VycmZpbGUuJChPKSBcCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCAzOGIzYjU5Ni4uYjRlODg3NzggMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTE1Miw2ICsxNTIsNyBAQCBBQ19DSEVDS19GVU5DUyhbdnNucHJpbnRmIF92c25wcmludGZdKQorIEFDX0NIRUNLX0ZVTkNTKFtzbnByaW50ZiBfc25wcmludGZdKQorIEFDX0NIRUNLX0ZVTkNTKFtzdHJsY3B5XSkKKyBBQ19DSEVDS19GVU5DUyhbc3RycmNocm51bF0pCisrQUNfQ0hFQ0tfRlVOQ1MoW3N0cmxjYXRdKQorIAorIGRubCBUaGVzZSB0eXBlcyBhcmUgUE9TSVgtc3BlY2lmaWMsIGFuZCBXaW5kb3dzIGRvZXMgaXQgZGlmZmVyZW50bHkuLi4KKyBBQ19DSEVDS19UWVBFUyhbc3RydWN0IF9zdGF0aTY0XSkKK0BAIC0xNzAsNiArMTcxLDcgQEAgQUNfQ0hFQ0tfREVDTFMoc3Ryc2VwKQorIEFDX0NIRUNLX0RFQ0xTKHN0cmxjcHkpCisgQUNfQ0hFQ0tfREVDTFMoc3RybmxlbikKKyBBQ19DSEVDS19ERUNMUyhzdHJyY2hybnVsKQorK0FDX0NIRUNLX0RFQ0xTKHN0cmxjYXQpCisgCisgZG5sIENoZWNrIGZvciBtaXNzaW5nIHR5cGVzCisgQUNfVFlQRV9VSU5UUFRSX1QKK2RpZmYgLS1naXQgYS9pbmNsdWRlL2NvbXBpbGVyLmggYi9pbmNsdWRlL2NvbXBpbGVyLmgKK2luZGV4IDQxNzhjOThlLi44MTUzZDI5NyAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvY29tcGlsZXIuaAorKysrIGIvaW5jbHVkZS9jb21waWxlci5oCitAQCAtMTU5LDYgKzE1OSwxMCBAQCBzaXplX3Qgc3RybGNweShjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKKyBjaGFyICpzdHJyY2hybnVsKGNvbnN0IGNoYXIgKiwgaW50KTsKKyAjZW5kaWYKKyAKKysjaWYgIWRlZmluZWQoSEFWRV9TVFJMQ0FUKSB8fCAhSEFWRV9ERUNMX1NUUkxDQVQKKytzaXplX3Qgc3RybGNhdChjaGFyICosIGNvbnN0IGNoYXIgKiwgc2l6ZV90KTsKKysjZW5kaWYKKysKKyAjaWZuZGVmIF9fY3BsdXNwbHVzCQkvKiBDKysgaGFzIGZhbHNlLCB0cnVlLCBib29sIGFzIGtleXdvcmRzICovCisgIyBpZmRlZiBIQVZFX1NUREJPT0xfSAorICMgIGluY2x1ZGUgPHN0ZGJvb2wuaD4KK2RpZmYgLS1naXQgYS9zdGRsaWIvc3RybGNhdC5jIGIvc3RkbGliL3N0cmxjYXQuYworbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi43MDg0ZDQ2MAorLS0tIC9kZXYvbnVsbAorKysrIGIvc3RkbGliL3N0cmxjYXQuYworQEAgLTAsMCArMSw0MyBAQAorKy8qCisrICogQ29weXJpZ2h0IChjKSAyMDE5IEdhcm1pbiBMdGQuIG9yIGl0cyBzdWJzaWRpYXJpZXMKKysgKgorKyAqIFBlcm1pc3Npb24gdG8gdXNlLCBjb3B5LCBtb2RpZnksIGFuZCBkaXN0cmlidXRlIHRoaXMgc29mdHdhcmUgZm9yIGFueQorKyAqIHB1cnBvc2Ugd2l0aCBvciB3aXRob3V0IGZlZSBpcyBoZXJlYnkgZ3JhbnRlZCwgcHJvdmlkZWQgdGhhdCB0aGUgYWJvdmUKKysgKiBjb3B5cmlnaHQgbm90aWNlIGFuZCB0aGlzIHBlcm1pc3Npb24gbm90aWNlIGFwcGVhciBpbiBhbGwgY29waWVzLgorKyAqCisrICogVEhFIFNPRlRXQVJFIElTIFBST1ZJREVEICJBUyBJUyIgQU5EIFRIRSBBVVRIT1IgRElTQ0xBSU1TIEFMTCBXQVJSQU5USUVTCisrICogV0lUSCBSRUdBUkQgVE8gVEhJUyBTT0ZUV0FSRSBJTkNMVURJTkcgQUxMIElNUExJRUQgV0FSUkFOVElFUyBPRgorKyAqIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUy4gSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUiBCRSBMSUFCTEUgRk9SCisrICogQU5ZIFNQRUNJQUwsIERJUkVDVCwgSU5ESVJFQ1QsIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyBPUiBBTlkgREFNQUdFUworKyAqIFdIQVRTT0VWRVIgUkVTVUxUSU5HIEZST00gTE9TUyBPRiBVU0UsIERBVEEgT1IgUFJPRklUUywgV0hFVEhFUiBJTiBBTgorKyAqIEFDVElPTiBPRiBDT05UUkFDVCwgTkVHTElHRU5DRSBPUiBPVEhFUiBUT1JUSU9VUyBBQ1RJT04sIEFSSVNJTkcgT1VUIE9GCisrICogT1IgSU4gQ09OTkVDVElPTiBXSVRIIFRIRSBVU0UgT1IgUEVSRk9STUFOQ0UgT0YgVEhJUyBTT0ZUV0FSRS4KKysgKi8KKysKKysjaW5jbHVkZSAiY29tcGlsZXIuaCIKKysKKysvKgorKyAqIENvbmNhdGVuYXRlIHNyYyBzdHJpbmcgdG8gZGVzdCBvZiBzaXplIHNpemUuIFRoZSBkZXN0aW5hdGlvbiBidWZmZXIgd2lsbAorKyAqIGhhdmUgbm8gbW9yZSB0aGFuIHNpemUtMSBjaGFyYWN0ZXIgd2hlbiB0aGUgb3BlcmF0aW9uIGZpbmlzaGVzLiBBbHdheXMgTlVMCisrICogdGVybWluYXRlcywgdW5sZXNzIHNpemUgPT0gMCBvciBkZXN0IGhhcyBubyBOVUwgdGVybWluYXRvci4gUmV0dXJucworKyAqIHN0cmxlbihpbml0aWFsIGRlc3QpICsgc3RybGVuKHNyYyk7IGlmIHJldHZhbCA+PSBzaXplLCB0cnVuY2F0aW9uIG9jY3VycmVkLgorKyAqLworKyNpZm5kZWYgSEFWRV9TVFJMQ0FUCisrCisrc2l6ZV90IHN0cmxjYXQoY2hhciAqZGVzdCwgY29uc3QgY2hhciAqc3JjLCBzaXplX3Qgc2l6ZSkKKyt7CisrICAgIHNpemVfdCBuOworKworKyAgICAvKiBmaW5kIHRoZSBOVUxMIHRlcm1pbmF0b3IgaW4gZGVzdCAqLworKyAgICBmb3IgKG4gPSAwOyBpIDwgc2l6ZSAmJiBkZXN0W25dICE9ICdcMCc7IG4rKykKKysgICAgICAgIDsKKysKKysgICAgLyogZGVzdGluYXRpb24gd2FzIG5vdCBOVUxMIHRlcm1pbmF0ZWQuIFJldHVybiB0aGUgaW5pdGlhbCBzaXplICovCisrICAgIGlmIChuID09IHNpemUpCisrICAgICAgICByZXR1cm4gc2l6ZTsKKysKKysgICAgcmV0dXJuIHN0cmxjcHkoJmRlc3Rbbl0sIHNyYywgc2l6ZSAtIG4pICsgbjsKKyt9CisrCisrI2VuZGlmCisrCistLSAKKzIuMjMuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc20vMDAwMi1BZGQtZGVidWctcHJlZml4LW1hcC1vcHRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc20vMDAwMi1BZGQtZGVidWctcHJlZml4LW1hcC1vcHRpb24ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmJmYWUyZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbS8wMDAyLUFkZC1kZWJ1Zy1wcmVmaXgtbWFwLW9wdGlvbi5wYXRjaApAQCAtMCwwICsxLDMyNSBAQAorRnJvbSBmYTY3N2MxY2FmNmI4MTkyOTcxOTIwY2Y1YzFhYThjYjMzYzc0NjA1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorRGF0ZTogVHVlLCAxOSBOb3YgMjAxOSAxMzoxMjoxNyAtMDYwMAorU3ViamVjdDogW1BBVENIIDIvMl0gQWRkIC0tZGVidWctcHJlZml4LW1hcCBvcHRpb24KKworQWRkcyBhbiBvcHRpb24gdG8gcmVtYXAgZmlsZSBwcmVmaXhlcyBpbiBvdXRwdXQgb2JqZWN0IGZpbGVzLiBUaGlzIGlzCithbmFsb2dvdXMgdG8gdGhlICItZmRlYnVnLXByZWZpeC1tYXAiIG9wdGlvbiBpbiBHQ0MsIGFuZCBhbGxvd3MgZmlsZXMgdG8KK2JlIGJ1aWx0IGluIGEgcmVwcm9kdWNpYmxlIG1hbm5lciByZWdhcmRsZXNzIG9mIHRoZSBidWlsZCBkaXJlY3RvcnkuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2J1Z3ppbGxhLm5hc20udXMvc2hvd19idWcuY2dpP2lkPTMzOTI2MzVdCitTaWduZWQtb2ZmLWJ5OiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+CistLS0KKyBhc20vbmFzbS5jICAgICAgICAgICAgICB8IDI4ICsrKysrKysrKysrKysrKysrKysrKysrKysrLS0KKyBpbmNsdWRlL25hc21saWIuaCAgICAgICB8ICA5ICsrKysrKysrKworIG5hc20udHh0ICAgICAgICAgICAgICAgIHwgIDQgKysrKworIG5hc21saWIvZmlsZW5hbWUuYyAgICAgIHwgMjAgKysrKysrKysrKysrKysrKysrKysKKyBvdXRwdXQvb3V0YXM4Ni5jICAgICAgICB8ICA0ICsrKy0KKyBvdXRwdXQvb3V0Y29mZi5jICAgICAgICB8ICA0ICsrLS0KKyBvdXRwdXQvb3V0ZWxmLmMgICAgICAgICB8ICA4ICsrKystLS0tCisgb3V0cHV0L291dGllZWUuYyAgICAgICAgfCAgMiArLQorIG91dHB1dC9vdXRvYmouYyAgICAgICAgIHwgIDIgKy0KKyBzdGRsaWIvc3RybGNhdC5jICAgICAgICB8ICAyICstCisgdGVzdC9lbGZkZWJ1Z3ByZWZpeC5hc20gfCAgNiArKysrKysKKyB0ZXN0L3BlcmZvcm10ZXN0LnBsICAgICB8IDEyICsrKysrKysrKystLQorIDEyIGZpbGVzIGNoYW5nZWQsIDg3IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQorIGNyZWF0ZSBtb2RlIDEwMDY0NCB0ZXN0L2VsZmRlYnVncHJlZml4LmFzbQorCitkaWZmIC0tZ2l0IGEvYXNtL25hc20uYyBiL2FzbS9uYXNtLmMKK2luZGV4IDFjNWE1ZmM1Li41ZDQ1MTAzYyAxMDA2NDQKKy0tLSBhL2FzbS9uYXNtLmMKKysrKyBiL2FzbS9uYXNtLmMKK0BAIC04NDEsNyArODQxLDggQEAgZW51bSB0ZXh0X29wdGlvbnMgeworICAgICBPUFRfQkVGT1JFLAorICAgICBPUFRfTElNSVQsCisgICAgIE9QVF9LRUVQX0FMTCwKKy0gICAgT1BUX05PX0xJTkUKKysgICAgT1BUX05PX0xJTkUsCisrICAgIE9QVF9ERUJVR19QUkVGSVhfTUFQCisgfTsKKyBzdHJ1Y3QgdGV4dGFyZ3MgeworICAgICBjb25zdCBjaGFyICpsYWJlbDsKK0BAIC04NjYsNiArODY3LDcgQEAgc3RhdGljIGNvbnN0IHN0cnVjdCB0ZXh0YXJncyB0ZXh0b3B0c1tdID0geworICAgICB7ImxpbWl0LSIsICAgT1BUX0xJTUlULCAgIHRydWUsIDB9LAorICAgICB7ImtlZXAtYWxsIiwgT1BUX0tFRVBfQUxMLCBmYWxzZSwgMH0sCisgICAgIHsibm8tbGluZSIsICBPUFRfTk9fTElORSwgZmFsc2UsIDB9LAorKyAgICB7ImRlYnVnLXByZWZpeC1tYXAiLCBPUFRfREVCVUdfUFJFRklYX01BUCwgdHJ1ZSwgMH0sCisgICAgIHtOVUxMLCBPUFRfQk9HVVMsIGZhbHNlLCAwfQorIH07CisgCitAQCAtMTIxNyw2ICsxMjE5LDI2IEBAIHN0YXRpYyBib29sIHByb2Nlc3NfYXJnKGNoYXIgKnAsIGNoYXIgKnEsIGludCBwYXNzKQorICAgICAgICAgICAgICAgICBjYXNlIE9QVF9OT19MSU5FOgorICAgICAgICAgICAgICAgICAgICAgcHBfbm9saW5lID0gdHJ1ZTsKKyAgICAgICAgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgICAgICBjYXNlIE9QVF9ERUJVR19QUkVGSVhfTUFQOiB7CisrICAgICAgICAgICAgICAgICAgICBzdHJ1Y3QgZGVidWdfcHJlZml4X2xpc3QgKmQ7CisrICAgICAgICAgICAgICAgICAgICBjaGFyICpjOworKyAgICAgICAgICAgICAgICAgICAgYyA9IHN0cmNocihwYXJhbSwgJz0nKTsKKysKKysgICAgICAgICAgICAgICAgICAgIGlmICghYykgeworKyAgICAgICAgICAgICAgICAgICAgICAgIG5hc21fZXJyb3IoRVJSX05PTkZBVEFMIHwgRVJSX05PRklMRSB8IEVSUl9VU0FHRSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJvcHRpb24gYC0tJXMnIG11c3QgYmUgb2YgdGhlIGZvcm0gYEJBU0U9REVTVCciLCBwKTsKKysgICAgICAgICAgICAgICAgICAgICAgICBicmVhazsKKysgICAgICAgICAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICAgICAgICAgICpjID0gJ1wwJzsKKysgICAgICAgICAgICAgICAgICAgIGQgPSBuYXNtX21hbGxvYyhzaXplb2YoKmQpKTsKKysgICAgICAgICAgICAgICAgICAgIGQtPm5leHQgPSBkZWJ1Z19wcmVmaXhlczsKKysgICAgICAgICAgICAgICAgICAgIGQtPmJhc2UgPSBuYXNtX3N0cmR1cChwYXJhbSk7CisrICAgICAgICAgICAgICAgICAgICBkLT5kZXN0ID0gbmFzbV9zdHJkdXAoYyArIDEpOworKyAgICAgICAgICAgICAgICAgICAgZGVidWdfcHJlZml4ZXMgPSBkOworKyAgICAgICAgICAgICAgICAgICAgKmMgPSAnPSc7CisrICAgICAgICAgICAgICAgICAgICB9CisrICAgICAgICAgICAgICAgICAgICBicmVhazsKKyAgICAgICAgICAgICAgICAgY2FzZSBPUFRfSEVMUDoKKyAgICAgICAgICAgICAgICAgICAgIGhlbHAoMCk7CisgICAgICAgICAgICAgICAgICAgICBleGl0KDApOworQEAgLTIwMTAsNyArMjAzMiw5IEBAIHN0YXRpYyB2b2lkIGhlbHAoY29uc3QgY2hhciB4b3B0KQorICAgICAgICAgICIgICAtLWxwb3N0Zml4IHN0ciBhcHBlbmQgdGhlIGdpdmVuIHN0cmluZyB0byBhbGwgb3RoZXIgc3ltYm9sc1xuIgorICAgICAgICAgICIgICAtLWtlZXAtYWxsICAgICBvdXRwdXQgZmlsZXMgd2lsbCBub3QgYmUgcmVtb3ZlZCBldmVuIGlmIGFuIGVycm9yIGhhcHBlbnNcbiIKKyAgICAgICAgICAiICAgLS1uby1saW5lICAgICAgaWdub3JlICUlbGluZSBkaXJlY3RpdmVzIGluIGlucHV0XG4iCistICAgICAgICAgIiAgIC0tbGltaXQtWCB2YWwgIHNldCBleGVjdXRpb24gbGltaXQgWFxuIik7CisrICAgICAgICAgIiAgIC0tbGltaXQtWCB2YWwgIHNldCBleGVjdXRpb24gbGltaXQgWFxuIgorKyAgICAgICAgICIgICAtLWRlYnVnLXByZWZpeC1tYXAgYmFzZT1kZXN0XG4iCisrICAgICAgICAgIiAgICAgICAgICAgICAgICAgIHJlbWFwIHBhdGhzIHN0YXJ0aW5nIHdpdGggJ2Jhc2UnIHRvICdkZXN0JyBpbiBvdXRwdXQgZmlsZXNcbiIpOworIAorICAgICBmb3IgKGkgPSAwOyBpIDw9IExJTUlUX01BWDsgaSsrKSB7CisgICAgICAgICBwcmludGYoIiAgICAgICAgICAgICAgICAgICAgICUtMTVzICVzIChkZWZhdWx0ICIsCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9uYXNtbGliLmggYi9pbmNsdWRlL25hc21saWIuaAoraW5kZXggZTU3ZDBlNmQuLmNmOTIxNTQ3IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9uYXNtbGliLmgKKysrKyBiL2luY2x1ZGUvbmFzbWxpYi5oCitAQCAtMTk1LDEwICsxOTUsMTkgQEAgaW50NjRfdCByZWFkc3RybnVtKGNoYXIgKnN0ciwgaW50IGxlbmd0aCwgYm9vbCAqd2Fybik7CisgICovCisgaW50MzJfdCBzZWdfYWxsb2Modm9pZCk7CisgCisrc3RydWN0IGRlYnVnX3ByZWZpeF9saXN0IHsKKysgICAgc3RydWN0IGRlYnVnX3ByZWZpeF9saXN0ICpuZXh0OworKyAgICBjaGFyICpiYXNlOworKyAgICBjaGFyICpkZXN0OworK307CisrCisrZXh0ZXJuIHN0cnVjdCBkZWJ1Z19wcmVmaXhfbGlzdCAqZGVidWdfcHJlZml4ZXM7CisrCisgLyoKKyAgKiBBZGQvcmVwbGFjZSBvciByZW1vdmUgYW4gZXh0ZW5zaW9uIHRvIHRoZSBlbmQgb2YgYSBmaWxlbmFtZQorICAqLworIGNvbnN0IGNoYXIgKmZpbGVuYW1lX3NldF9leHRlbnNpb24oY29uc3QgY2hhciAqaW5uYW1lLCBjb25zdCBjaGFyICpleHRlbnNpb24pOworK2NoYXIgKmZpbGVuYW1lX2RlYnVnX3JlbWFwKGNoYXIgKmRlc3QsIGNoYXIgY29uc3QgKmlubmFtZSwgc2l6ZV90IGxlbik7CisgCisgLyoKKyAgKiBVdGlsaXR5IG1hY3Jvcy4uLgorZGlmZiAtLWdpdCBhL25hc20udHh0IGIvbmFzbS50eHQKK2luZGV4IGEyODIwMmY5Li40NDNjMDZiMiAxMDA2NDQKKy0tLSBhL25hc20udHh0CisrKysgYi9uYXNtLnR4dAorQEAgLTE0Nyw2ICsxNDcsMTAgQEAgT1BUSU9OUworIAlQcmVwZW5kIG9yIGFwcGVuZCAocmVzcGVjdGl2ZWx5KSB0aGUgZ2l2ZW4gYXJndW1lbnQgdG8gYWxsIGdsb2JhbCBvcgorIAlleHRlcm4gdmFyaWFibGVzLgorIAorKy0tZGVidWctcHJlZml4LW1hcCAnQkFTRT1ERVNUJzo6CisrICAgIE1hcCBmaWxlIG5hbWVzIGJlZ2lubmluZyB3aXRoICdCQVNFJyB0byAnREVTVCcgd2hlbiBlbmNvZGluZyB0aGVtIGluCisrICAgIG91dHB1dCBvYmplY3QgZmlsZXMuCisrCisgU1lOVEFYCisgLS0tLS0tCisgVGhpcyBtYW4gcGFnZSBkb2VzIG5vdCBmdWxseSBkZXNjcmliZSB0aGUgc3ludGF4IG9mICpuYXNtKidzIGFzc2VtYmx5IGxhbmd1YWdlLAorZGlmZiAtLWdpdCBhL25hc21saWIvZmlsZW5hbWUuYyBiL25hc21saWIvZmlsZW5hbWUuYworaW5kZXggMTcyYWUwYmMuLmZkYTJiZTQxIDEwMDY0NAorLS0tIGEvbmFzbWxpYi9maWxlbmFtZS5jCisrKysgYi9uYXNtbGliL2ZpbGVuYW1lLmMKK0BAIC0zOSw2ICszOSw4IEBACisgI2luY2x1ZGUgIm5hc21saWIuaCIKKyAjaW5jbHVkZSAiZXJyb3IuaCIKKyAKKytzdHJ1Y3QgZGVidWdfcHJlZml4X2xpc3QgKmRlYnVnX3ByZWZpeGVzID0gTlVMTDsKKysKKyAvKgorICAqIEFkZC9tb2RpZnkgYSBmaWxlbmFtZSBleHRlbnNpb24sIGFzc3VtZWQgdG8gYmUgYSBwZXJpb2QtZGVsaW1pdGVkCisgICogZmllbGQgYXQgdGhlIHZlcnkgZW5kIG9mIHRoZSBmaWxlbmFtZS4gIFJldHVybnMgYSBuZXdseSBhbGxvY2F0ZWQKK0BAIC02MSwzICs2MywyMSBAQCBjb25zdCBjaGFyICpmaWxlbmFtZV9zZXRfZXh0ZW5zaW9uKGNvbnN0IGNoYXIgKmlubmFtZSwgY29uc3QgY2hhciAqZXh0ZW5zaW9uKQorIAorICAgICByZXR1cm4gcDsKKyB9CisrCisrY2hhciAqZmlsZW5hbWVfZGVidWdfcmVtYXAoY2hhciAqZGVzdCwgY2hhciBjb25zdCAqaW4sIHNpemVfdCBsZW4pCisreworKyAgICBzdHJ1Y3QgZGVidWdfcHJlZml4X2xpc3QgKmQ7CisrICAgIHNpemVfdCBuOworKworKyAgICBmb3IgKGQgPSBkZWJ1Z19wcmVmaXhlczsgZCAhPSBOVUxMOyBkID0gZC0+bmV4dCkgeworKyAgICAgICAgbiA9IHN0cmxlbihkLT5iYXNlKTsKKysgICAgICAgIGlmIChzdHJuY21wKGluLCBkLT5iYXNlLCBuKSA9PSAwKSB7CisrICAgICAgICAgICAgc3RybGNweShkZXN0LCBkLT5kZXN0LCBsZW4pOworKyAgICAgICAgICAgIHN0cmxjYXQoZGVzdCwgJmluW25dLCBsZW4pOworKyAgICAgICAgICAgIHJldHVybiBkZXN0OworKyAgICAgICAgfQorKyAgICB9CisrCisrICAgIHN0cmxjcHkoZGVzdCwgaW4sIGxlbik7CisrICAgIHJldHVybiBkZXN0OworK30KK2RpZmYgLS1naXQgYS9vdXRwdXQvb3V0YXM4Ni5jIGIvb3V0cHV0L291dGFzODYuYworaW5kZXggM2Y5ODY3YjkuLmQ1ZjRmOTY2IDEwMDY0NAorLS0tIGEvb3V0cHV0L291dGFzODYuYworKysrIGIvb3V0cHV0L291dGFzODYuYworQEAgLTExMyw2ICsxMTMsOCBAQCBzdGF0aWMgdm9pZCBhczg2X3NlY3Rfd3JpdGUoc3RydWN0IFNlY3Rpb24gKiwgY29uc3QgdWludDhfdCAqLAorIAorIHN0YXRpYyB2b2lkIGFzODZfaW5pdCh2b2lkKQorIHsKKysgICAgY2hhciBmaWxlbmFtZVtGSUxFTkFNRV9NQVhdOworKworICAgICBzdGV4dC5kYXRhID0gc2FhX2luaXQoMUwpOworICAgICBzdGV4dC5kYXRhbGVuID0gMEw7CisgICAgIHN0ZXh0LmhlYWQgPSBzdGV4dC5sYXN0ID0gTlVMTDsKK0BAIC0xMzQsNyArMTM2LDcgQEAgc3RhdGljIHZvaWQgYXM4Nl9pbml0KHZvaWQpCisgICAgIHN0cnNsZW4gPSAwOworIAorICAgICAvKiBhczg2IG1vZHVsZSBuYW1lID0gaW5wdXQgZmlsZSBtaW51cyBleHRlbnNpb24gKi8KKy0gICAgYXM4Nl9hZGRfc3RyaW5nKGZpbGVuYW1lX3NldF9leHRlbnNpb24oaW5uYW1lLCAiIikpOworKyAgICBhczg2X2FkZF9zdHJpbmcoZmlsZW5hbWVfZGVidWdfcmVtYXAoZmlsZW5hbWUsIGZpbGVuYW1lX3NldF9leHRlbnNpb24oaW5uYW1lLCAiIiksIHNpemVvZihmaWxlbmFtZSkpKTsKKyB9CisgCisgc3RhdGljIHZvaWQgYXM4Nl9jbGVhbnVwKHZvaWQpCitkaWZmIC0tZ2l0IGEvb3V0cHV0L291dGNvZmYuYyBiL291dHB1dC9vdXRjb2ZmLmMKK2luZGV4IGEyZmQzMDJjLi5iY2Y1NzZmYiAxMDA2NDQKKy0tLSBhL291dHB1dC9vdXRjb2ZmLmMKKysrKyBiL291dHB1dC9vdXRjb2ZmLmMKK0BAIC0xMDcwLDE0ICsxMDcwLDE0IEBAIHN0YXRpYyB2b2lkIGNvZmZfc3ltYm9sKGNoYXIgKm5hbWUsIGludDMyX3Qgc3RycG9zLCBpbnQzMl90IHZhbHVlLAorIAorIHN0YXRpYyB2b2lkIGNvZmZfd3JpdGVfc3ltYm9scyh2b2lkKQorIHsKKy0gICAgY2hhciBmaWxlbmFtZVsxOF07CisrICAgIGNoYXIgZmlsZW5hbWVbMTldOworICAgICB1aW50MzJfdCBpOworIAorICAgICAvKgorICAgICAgKiBUaGUgYC5maWxlJyByZWNvcmQsIGFuZCB0aGUgZmlsZSBuYW1lIGF1eGlsaWFyeSByZWNvcmQuCisgICAgICAqLworICAgICBjb2ZmX3N5bWJvbCgiLmZpbGUiLCAwTCwgMEwsIC0yLCAwLCAweDY3LCAxKTsKKy0gICAgc3RybmNweShmaWxlbmFtZSwgaW5uYW1lLCAxOCk7CisrICAgIGZpbGVuYW1lX2RlYnVnX3JlbWFwKGZpbGVuYW1lLCBpbm5hbWUsIDE5KTsKKyAgICAgbmFzbV93cml0ZShmaWxlbmFtZSwgMTgsIG9maWxlKTsKKyAKKyAgICAgLyoKK2RpZmYgLS1naXQgYS9vdXRwdXQvb3V0ZWxmLmMgYi9vdXRwdXQvb3V0ZWxmLmMKK2luZGV4IGRlOTlkMDc2Li4yMDNiNWRjMCAxMDA2NDQKKy0tLSBhL291dHB1dC9vdXRlbGYuYworKysrIGIvb3V0cHV0L291dGVsZi5jCitAQCAtMSw1ICsxLDUgQEAKKyAvKiAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSAqCistICogICAKKysgKgorICAqICAgQ29weXJpZ2h0IDE5OTYtMjAxNyBUaGUgTkFTTSBBdXRob3JzIC0gQWxsIFJpZ2h0cyBSZXNlcnZlZAorICAqICAgU2VlIHRoZSBmaWxlIEFVVEhPUlMgaW5jbHVkZWQgd2l0aCB0aGUgTkFTTSBkaXN0cmlidXRpb24gZm9yCisgICogICB0aGUgc3BlY2lmaWMgY29weXJpZ2h0IGhvbGRlcnMuCitAQCAtMTQsNyArMTQsNyBAQAorICAqICAgICBjb3B5cmlnaHQgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZworICAqICAgICBkaXNjbGFpbWVyIGluIHRoZSBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQKKyAgKiAgICAgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorLSAqICAgICAKKysgKgorICAqICAgICBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIFRIRSBDT1BZUklHSFQgSE9MREVSUyBBTkQKKyAgKiAgICAgQ09OVFJJQlVUT1JTICJBUyBJUyIgQU5EIEFOWSBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywKKyAgKiAgICAgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRSBJTVBMSUVEIFdBUlJBTlRJRVMgT0YKK0BAIC0zMTUsNyArMzE1LDcgQEAgZWxmX2RpcmVjdGl2ZShlbnVtIGRpcmVjdGl2ZSBkaXJlY3RpdmUsIGNoYXIgKnZhbHVlLCBpbnQgcGFzcykKKyAKKyBzdGF0aWMgdm9pZCBlbGZfaW5pdCh2b2lkKQorIHsKKy0gICAgc3RybGNweShlbGZfbW9kdWxlLCBpbm5hbWUsIHNpemVvZihlbGZfbW9kdWxlKSk7CisrICAgIGZpbGVuYW1lX2RlYnVnX3JlbWFwKGVsZl9tb2R1bGUsIGlubmFtZSwgc2l6ZW9mKGVsZl9tb2R1bGUpKTsKKyAgICAgc2VjdHMgPSBOVUxMOworICAgICBuc2VjdHMgPSBzZWN0bGVuID0gMDsKKyAgICAgc3ltcyA9IHNhYV9pbml0KChpbnQzMl90KXNpemVvZihzdHJ1Y3QgZWxmX3N5bWJvbCkpOworQEAgLTg2OCw3ICs4NjgsNyBAQCBzdGF0aWMgdm9pZCBlbGYzMl9vdXQoaW50MzJfdCBzZWd0bywgY29uc3Qgdm9pZCAqZGF0YSwKKyAgICAgICAgICAgICAgICAgICAgICAgIiBzZWdtZW50IGJhc2UgcmVmZXJlbmNlcyIpOworICAgICAgICAgICAgIH0gZWxzZSB7CisgICAgICAgICAgICAgICAgIGlmICh3cnQgPT0gTk9fU0VHKSB7CistICAgICAgICAgICAgICAgICAgICAvKiAKKysgICAgICAgICAgICAgICAgICAgIC8qCisgICAgICAgICAgICAgICAgICAgICAgKiBUaGUgaWYoKSBpcyBhIGhhY2sgdG8gZGVhbCB3aXRoIGNvbXBpbGVycyB3aGljaAorICAgICAgICAgICAgICAgICAgICAgICogZG9uJ3QgaGFuZGxlIHN3aXRjaCgpIHN0YXRlbWVudHMgd2l0aCA2NC1iaXQKKyAgICAgICAgICAgICAgICAgICAgICAqIGV4cHJlc3Npb25zLgorZGlmZiAtLWdpdCBhL291dHB1dC9vdXRpZWVlLmMgYi9vdXRwdXQvb3V0aWVlZS5jCitpbmRleCAzYTI4OTQyZC4uZjYxODI0ZTQgMTAwNjQ0CistLS0gYS9vdXRwdXQvb3V0aWVlZS5jCisrKysgYi9vdXRwdXQvb3V0aWVlZS5jCitAQCAtMjA5LDcgKzIwOSw3IEBAIHN0YXRpYyB2b2lkIGllZWVfdW5xdWFsaWZpZWRfbmFtZShjaGFyICosIGNoYXIgKik7CisgICovCisgc3RhdGljIHZvaWQgaWVlZV9pbml0KHZvaWQpCisgeworLSAgICBzdHJsY3B5KGllZWVfaW5maWxlLCBpbm5hbWUsIHNpemVvZihpZWVlX2luZmlsZSkpOworKyAgICBmaWxlbmFtZV9kZWJ1Z19yZW1hcChpZWVlX2luZmlsZSwgaW5uYW1lLCBzaXplb2YoaWVlZV9pbmZpbGUpKTsKKyAgICAgYW55X3NlZ3MgPSBmYWxzZTsKKyAgICAgZnB1YmhlYWQgPSBOVUxMOworICAgICBmcHVidGFpbCA9ICZmcHViaGVhZDsKK2RpZmYgLS1naXQgYS9vdXRwdXQvb3V0b2JqLmMgYi9vdXRwdXQvb3V0b2JqLmMKK2luZGV4IGI0ZjJjNDk5Li41NWJiYTRhMSAxMDA2NDQKKy0tLSBhL291dHB1dC9vdXRvYmouYworKysrIGIvb3V0cHV0L291dG9iai5jCitAQCAtNjQwLDcgKzY0MCw3IEBAIHN0YXRpYyBlbnVtIGRpcmVjdGl2ZV9yZXN1bHQgb2JqX2RpcmVjdGl2ZShlbnVtIGRpcmVjdGl2ZSwgY2hhciAqLCBpbnQpOworIAorIHN0YXRpYyB2b2lkIG9ial9pbml0KHZvaWQpCisgeworLSAgICBzdHJsY3B5KG9ial9pbmZpbGUsIGlubmFtZSwgc2l6ZW9mKG9ial9pbmZpbGUpKTsKKysgICAgZmlsZW5hbWVfZGVidWdfcmVtYXAob2JqX2luZmlsZSwgaW5uYW1lLCBzaXplb2Yob2JqX2luZmlsZSkpOworICAgICBmaXJzdF9zZWcgPSBzZWdfYWxsb2MoKTsKKyAgICAgYW55X3NlZ3MgPSBmYWxzZTsKKyAgICAgZnB1YmhlYWQgPSBOVUxMOworZGlmZiAtLWdpdCBhL3N0ZGxpYi9zdHJsY2F0LmMgYi9zdGRsaWIvc3RybGNhdC5jCitpbmRleCA3MDg0ZDQ2MC4uZWU5M2RlYTMgMTAwNjQ0CistLS0gYS9zdGRsaWIvc3RybGNhdC5jCisrKysgYi9zdGRsaWIvc3RybGNhdC5jCitAQCAtMjksNyArMjksNyBAQCBzaXplX3Qgc3RybGNhdChjaGFyICpkZXN0LCBjb25zdCBjaGFyICpzcmMsIHNpemVfdCBzaXplKQorICAgICBzaXplX3QgbjsKKyAKKyAgICAgLyogZmluZCB0aGUgTlVMTCB0ZXJtaW5hdG9yIGluIGRlc3QgKi8KKy0gICAgZm9yIChuID0gMDsgaSA8IHNpemUgJiYgZGVzdFtuXSAhPSAnXDAnOyBuKyspCisrICAgIGZvciAobiA9IDA7IG4gPCBzaXplICYmIGRlc3Rbbl0gIT0gJ1wwJzsgbisrKQorICAgICAgICAgOworIAorICAgICAvKiBkZXN0aW5hdGlvbiB3YXMgbm90IE5VTEwgdGVybWluYXRlZC4gUmV0dXJuIHRoZSBpbml0aWFsIHNpemUgKi8KK2RpZmYgLS1naXQgYS90ZXN0L2VsZmRlYnVncHJlZml4LmFzbSBiL3Rlc3QvZWxmZGVidWdwcmVmaXguYXNtCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLmE2N2JhMjljCistLS0gL2Rldi9udWxsCisrKysgYi90ZXN0L2VsZmRlYnVncHJlZml4LmFzbQorQEAgLTAsMCArMSw2IEBACisrO1Rlc3RuYW1lPXVub3B0aW1pemVkOyBBcmd1bWVudHM9LU8wIC0tZGVidWctcHJlZml4LW1hcCBlbGY9RUxGIC1mZWxmIC1vZWxmZGVidWdwcmVmaXgubzsgRmlsZXM9c3Rkb3V0IHN0ZGVyciBlbGZkZWJ1Z3ByZWZpeC5vOyBWYWxpZGF0ZT1yZWFkZWxmIC0td2lkZSAtLXN5bWJvbHMgZWxmZGVidWdwcmVmaXgubyB8IGdyZXAgJ0ZJTEUuKkVMRmRlYnVncHJlZml4LmFzbScKKysKKysJICBTRUNUSU9OIC50ZXh0CisrdGVzdDoJCQk7IFsxXQorKwkgIHJldAorKworZGlmZiAtLWdpdCBhL3Rlc3QvcGVyZm9ybXRlc3QucGwgYi90ZXN0L3BlcmZvcm10ZXN0LnBsCitpbmRleCBmNzg2NWIzOS4uMDk2Zjk2MDQgMTAwNzU1CistLS0gYS90ZXN0L3BlcmZvcm10ZXN0LnBsCisrKysgYi90ZXN0L3BlcmZvcm10ZXN0LnBsCitAQCAtNDIsMTQgKzQyLDIyIEBAIHN1YiBwZXJmb3JtIHsKKyAgICAgVEVTVDoKKyAgICAgd2hpbGUoPFRFU1RGSUxFPikgeworICAgICAgICAgI1NlZSBpZiB0aGVyZSBpcyBhIHRlc3QgY2FzZQorLSAgICAgICAgbGFzdCB1bmxlc3MgL1Rlc3RuYW1lPSguKik7XHMqQXJndW1lbnRzPSguKik7XHMqRmlsZXM9KC4qKS87CistICAgICAgICBteSAoJHN1Ym5hbWUsICRhcmd1bWVudHMsICRmaWxlcykgPSAoJDEsICQyLCAkMyk7CisrICAgICAgICBsYXN0IHVubGVzcyAvVGVzdG5hbWU9KC4qKTtccypBcmd1bWVudHM9KC4qKTtccypGaWxlcz0oW147XSopKD86O1xzKlZhbGlkYXRlPSguKikpPy87CisrICAgICAgICBteSAoJHN1Ym5hbWUsICRhcmd1bWVudHMsICRmaWxlcywgJHZhbGlkYXRlKSA9ICgkMSwgJDIsICQzLCAkNCk7CisrICAgICAgICBjaG9tcCAkZmlsZXM7CisgICAgICAgICBkZWJ1Z3ByaW50KCIkc3VibmFtZSB8ICRhcmd1bWVudHMgfCAkZmlsZXMiKTsKKyAKKyAgICAgICAgICNDYWxsIG5hc20gd2l0aCB0aGlzIHRlc3QgY2FzZQorICAgICAgICAgc3lzdGVtKCIkbmFzbSAkYXJndW1lbnRzICR0ZXN0cGF0aCA+ICRzdGRvdXRmaWxlIDI+ICRzdGRlcnJmaWxlIik7CisgICAgICAgICBkZWJ1Z3ByaW50KCIkbmFzbSAkYXJndW1lbnRzICR0ZXN0cGF0aCA+ICRzdGRvdXRmaWxlIDI+ICRzdGRlcnJmaWxlIC0tLS0+ICQ/Iik7CisgCisrICAgICAgICBpZigkdmFsaWRhdGUpIHsKKysgICAgICAgICAgICBpZihzeXN0ZW0oIiR2YWxpZGF0ZSA+PiAkc3Rkb3V0ZmlsZSAyPj4gJHN0ZGVycmZpbGUiKSAhPSAwKSB7CisrICAgICAgICAgICAgICAgIHByaW50ICJUZXN0ICR0ZXN0bmFtZS8kc3VibmFtZSB2YWxpZGF0aW9uIGZhaWxlZFxuIjsKKysgICAgICAgICAgICAgICAgJGdsb2JhbHJlc3VsdCA9IDE7CisrICAgICAgICAgICAgfQorKyAgICAgICAgfQorKworICAgICAgICAgI01vdmUgdGhlIG91dHB1dCB0byB0aGUgdGVzdCBkaXIKKyAgICAgICAgIG1rcGF0aCgiJG91dHB1dGRpci8kdGVzdG5hbWUvJHN1Ym5hbWUiKTsKKyAgICAgICAgIGZvcmVhY2goc3BsaXQgLyAvLCRmaWxlcykgeworLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtL0NWRS0yMDE5LTE0MjQ4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtL0NWRS0yMDE5LTE0MjQ4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0NWQyY2IKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uYXNtL25hc20vQ1ZFLTIwMTktMTQyNDgucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSA5M2Q0MWQ4Mjk2M2IyY2ZkMGIyNGM5MDZmNWE4ZGFmNTMyODFiNTU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogIkguIFBldGVyIEFudmluIChJbnRlbCkiIDxocGFAenl0b3IuY29tPgorRGF0ZTogRnJpLCAxNiBBdWcgMjAxOSAwMToxMjo1NCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBCUiAzMzkyNTc2OiBkb24ndCBzZWdmYXVsdCBvbiBhIGJhZCAlcHJhZ21hIGxpbWl0CisKK0Rvbid0IHNlZ2ZhdWx0IG9uIGEgYmFkICVwcmFnbWEgbGltaXQuIEluc3RlYWQgdHJlYXQgYSBOVUxMIHBvaW50ZXIgYXMKK2FuIGVtcHR5IHN0cmluZy4KKworUmVwb3J0ZWQtYnk6IFJlbiBLaW11cmEgPHJreDEyMDlkZXZAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogSC4gUGV0ZXIgQW52aW4gKEludGVsKSA8aHBhQHp5dG9yLmNvbT4KKworQ1ZFOiBDVkUtMjAxOS0xNDI0OAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9yZXBvLm9yLmN6L25hc20uZ2l0L2NvbW1pdC85M2Q0MWQ4Mjk2M2IyY2ZkMGIyNGM5MDZmNWE4ZGFmNTMyODFiNTU5XQorU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KKy0tLQorIGFzbS9uYXNtLmMgfCA3ICsrKysrKy0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9hc20vbmFzbS5jIGIvYXNtL25hc20uYworaW5kZXggYzg0ZDY3NS4uNjUxMTZhYiAxMDA2NDQKKy0tLSBhL2FzbS9uYXNtLmMKKysrKyBiL2FzbS9uYXNtLmMKK0BAIC0yMTIsNiArMjEyLDExIEBAIG5hc21fc2V0X2xpbWl0KGNvbnN0IGNoYXIgKmxpbWl0LCBjb25zdCBjaGFyICp2YWxzdHIpCisgICAgIGJvb2wgcm5fZXJyb3I7CisgICAgIGludCBlcnJsZXZlbDsKKyAKKysgICAgaWYgKCFsaW1pdCkKKysgICAgICAgIGxpbWl0ID0gIiI7CisrICAgIGlmICghdmFsc3RyKQorKyAgICAgICAgdmFsc3RyID0gIiI7CisrCisgICAgIGZvciAoaSA9IDA7IGkgPD0gTElNSVRfTUFYOyBpKyspIHsKKyAgICAgICAgIGlmICghbmFzbV9zdHJpY21wKGxpbWl0LCBsaW1pdF9pbmZvW2ldLm5hbWUpKQorICAgICAgICAgICAgIGJyZWFrOworQEAgLTIwNCw3ICsyMDksNyBAQCBuYXNtX3NldF9saW1pdChjb25zdCBjaGFyICpsaW1pdCwgY29uc3QgY2hhciAqdmFsc3RyKQorICAgICAgICAgICAgIGVycmxldmVsID0gRVJSX1dBUk5JTkd8RVJSX05PRklMRXxFUlJfVVNBR0U7CisgICAgICAgICBlbHNlCisgICAgICAgICAgICAgZXJybGV2ZWwgPSBFUlJfV0FSTklOR3xFUlJfUEFTUzF8V0FSTl9VTktOT1dOX1BSQUdNQTsKKy0gICAgICAgIG5hc21fZXJyb3IoZXJybGV2ZWwsICJ1bmtub3duIGxpbWl0OiBgJXMnIiwgbGltaXQpOworKyAgICAgICAgbmFzbV9lcnJvcihlcnJsZXZlbCwgImludmFsaWQgbGltaXQgdmFsdWU6IGAlcyciLCB2YWxzdHIpOworICAgICAgICAgcmV0dXJuIERJUlJfRVJST1I7CisgICAgIH0KKyAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25hc20vbmFzbV8yLjE0LjAyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTQuMDIuYmIKaW5kZXggZTRmOTY0Yy4uZjhhOGQ3NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTQuMDIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmFzbS9uYXNtXzIuMTQuMDIuYmIKQEAgLTUsNiArNSw5IEBACiAKIFNSQ19VUkkgPSAiaHR0cDovL3d3dy5uYXNtLnVzL3B1Yi9uYXNtL3JlbGVhc2VidWlsZHMvJHtQVn0vbmFzbS0ke1BWfS50YXIuYnoyIFwKICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE4LTE5NzU1LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE0MjQ4LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3RkbGliLUFkZC1zdHJsY2F0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLWRlYnVnLXByZWZpeC1tYXAtb3B0aW9uLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiM2Y0ODlhYTQ4YWQyYWExZjk2N2RjNWUyOTNiYmQwNmYiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYS9maXgtbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25pbmphL25pbmphL2ZpeC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZmQ3NzkxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25pbmphL25pbmphL2ZpeC1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSBlOTJhOTE1MTgzZjhiZmYyNjhmNzRjOGNkMDBkOTg2MzAxYTJiYmY4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogbWFrZXBvc3QgPG1ha2Vwb3N0QGZpcmVtYWlsLmNjPgotRGF0ZTogTW9uLCAyNCBEZWMgMjAxOCAwMzoxMzoxNiArMDIwMAotU3ViamVjdDogW1BBVENIXSBVc2Ugc3RfbXRpbSBpZiBzdF9tdGltZSBpcyBtYWNybywgZml4ICMxNTEwCi0KLUluIFBPU0lYLjEtMjAwOCwgc3lzX3N0YXQgaGFzIGEgc3RfbXRpbSBtZW1iZXIgYW5kIGEgc3RfbXRpbWUgYmFja3dhcmQKLWNvbXBhdGliaWxpdHkgbWFjcm8uIFNob3VsZCBoZWxwIGF2b2lkIGhhcmRjb2RpbmcgcGxhdGZvcm0gZGV0ZWN0aW9uLgotCi1TaWduZWQtb2ZmLWJ5OiBPbGVrc2FuZHIgS3JhdmNodWsgPG9wZW4uc291cmNlQG9sZWtzYW5kci1rcmF2Y2h1ay5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gc3JjL2Rpc2tfaW50ZXJmYWNlLmNjIHwgMTQgKysrKy0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxMCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9kaXNrX2ludGVyZmFjZS5jYyBiL3NyYy9kaXNrX2ludGVyZmFjZS5jYwotaW5kZXggZDRjMmZiMC4uZGMyOTdjNCAxMDA2NDQKLS0tLSBhL3NyYy9kaXNrX2ludGVyZmFjZS5jYwotKysrIGIvc3JjL2Rpc2tfaW50ZXJmYWNlLmNjCi1AQCAtMjAyLDE5ICsyMDIsMTMgQEAgVGltZVN0YW1wIFJlYWxEaXNrSW50ZXJmYWNlOjpTdGF0KGNvbnN0IHN0cmluZyYgcGF0aCwgc3RyaW5nKiBlcnIpIGNvbnN0IHsKLSAgIC8vIHRoYXQgaXQgZG9lc24ndCBleGlzdC4KLSAgIGlmIChzdC5zdF9tdGltZSA9PSAwKQotICAgICByZXR1cm4gMTsKLS0jaWYgZGVmaW5lZChfX0FQUExFX18pICYmICFkZWZpbmVkKF9QT1NJWF9DX1NPVVJDRSkKLSsjaWYgZGVmaW5lZChfQUlYKQotKyAgcmV0dXJuIChpbnQ2NF90KXN0LnN0X210aW1lICogMTAwMDAwMDAwMExMICsgc3Quc3RfbXRpbWVfbjsKLSsjZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKLSAgIHJldHVybiAoKGludDY0X3Qpc3Quc3RfbXRpbWVzcGVjLnR2X3NlYyAqIDEwMDAwMDAwMDBMTCArCi0gICAgICAgICAgIHN0LnN0X210aW1lc3BlYy50dl9uc2VjKTsKLS0jZWxpZiAoX1BPU0lYX0NfU09VUkNFID49IDIwMDgwOUwgfHwgX1hPUEVOX1NPVVJDRSA+PSA3MDAgfHwgZGVmaW5lZChfQlNEX1NPVVJDRSkgfHwgZGVmaW5lZChfU1ZJRF9TT1VSQ0UpIHx8IFwKLS0gICAgICAgZGVmaW5lZChfX0JJT05JQ19fKSB8fCAoZGVmaW5lZCAoX19TVlI0KSAmJiBkZWZpbmVkIChfX3N1bikpIHx8IGRlZmluZWQoX19GcmVlQlNEX18pKQotLSAgLy8gRm9yIGdsaWJjLCBzZWUgIlRpbWVzdGFtcCBmaWxlcyIgaW4gdGhlIE5vdGVzIG9mIGh0dHA6Ly93d3cua2VybmVsLm9yZy9kb2MvbWFuLXBhZ2VzL29ubGluZS9wYWdlcy9tYW4yL3N0YXQuMi5odG1sCi0tICAvLyBuZXdsaWIsIHVDbGliYyBhbmQgbXVzbCBmb2xsb3cgdGhlIGtlcm5lbCAob3IgQ3lnd2luKSBoZWFkZXJzIGFuZCBkZWZpbmUgdGhlIHJpZ2h0IG1hY3JvIHZhbHVlcyBhYm92ZS4KLS0gIC8vIEZvciBic2QsIHNlZSBodHRwczovL2dpdGh1Yi5jb20vZnJlZWJzZC9mcmVlYnNkL2Jsb2IvbWFzdGVyL3N5cy9zeXMvc3RhdC5oIGFuZCBzaW1pbGFyCi0tICAvLyBGb3IgYmlvbmljLCBDIGFuZCBQT1NJWCBBUEkgaXMgYWx3YXlzIGVuYWJsZWQuCi0tICAvLyBGb3Igc29sYXJpcywgc2VlIGh0dHBzOi8vZG9jcy5vcmFjbGUuY29tL2NkL0U4ODM1M18wMS9odG1sL0UzNzg0MS9zdGF0LTIuaHRtbC4KLSsjZWxpZiBkZWZpbmVkKHN0X210aW1lKSAvLyBBIG1hY3JvLCBzbyB3ZSdyZSBsaWtlbHkgb24gbW9kZXJuIFBPU0lYLgotICAgcmV0dXJuIChpbnQ2NF90KXN0LnN0X210aW0udHZfc2VjICogMTAwMDAwMDAwMExMICsgc3Quc3RfbXRpbS50dl9uc2VjOwotLSNlbGlmIGRlZmluZWQoX0FJWCkKLS0gIHJldHVybiAoaW50NjRfdClzdC5zdF9tdGltZSAqIDEwMDAwMDAwMDBMTCArIHN0LnN0X210aW1lX247Ci0gI2Vsc2UKLSAgIHJldHVybiAoaW50NjRfdClzdC5zdF9tdGltZSAqIDEwMDAwMDAwMDBMTCArIHN0LnN0X210aW1lbnNlYzsKLSAjZW5kaWYKLS0tIAotMi4xNy4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25pbmphL25pbmphXzEuMTAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25pbmphL25pbmphXzEuMTAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZGM2MzY1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvbmluamEvbmluamFfMS4xMC4wLmJiCkBAIC0wLDAgKzEsMzAgQEAKK1NVTU1BUlkgPSAiTmluamEgaXMgYSBzbWFsbCBidWlsZCBzeXN0ZW0gd2l0aCBhIGZvY3VzIG9uIHNwZWVkLiIKK0hPTUVQQUdFID0gImh0dHA6Ly9tYXJ0aW5lLmdpdGh1Yi5jb20vbmluamEvIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTgxNTg2YTY0YWQ0ZTQ3NmM3OTFjZGE3ZTJmMmM1MmUiCisKK0RFUEVORFMgPSAicmUyYy1uYXRpdmUgbmluamEtbmF0aXZlIgorCitTUkNSRVYgPSAiZWQ3ZjY3MDQwYjM3MDE4OWQ5ODlhZGJkNjBmZjhlYTI5OTU3MjMxZiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL25pbmphLWJ1aWxkL25pbmphLmdpdDticmFuY2g9cmVsZWFzZSIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4uKikiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2RvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCisKK2RvX2NvbXBpbGVfY2xhc3MtbmF0aXZlKCkgeworCXB5dGhvbjMgLi9jb25maWd1cmUucHkgLS1ib290c3RyYXAKK30KKworZG9fY29tcGlsZSgpIHsKKwlweXRob24zIC4vY29uZmlndXJlLnB5CisJbmluamEKK30KKworZG9faW5zdGFsbCgpIHsKKwlpbnN0YWxsIC1EIC1tIDA3NTUgICR7U30vbmluamEgJHtEfSR7YmluZGlyfS9uaW5qYQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9uaW5qYS9uaW5qYV8xLjkuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25pbmphL25pbmphXzEuOS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTIzNmU4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL25pbmphL25pbmphXzEuOS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJOaW5qYSBpcyBhIHNtYWxsIGJ1aWxkIHN5c3RlbSB3aXRoIGEgZm9jdXMgb24gc3BlZWQuIgotSE9NRVBBR0UgPSAiaHR0cDovL21hcnRpbmUuZ2l0aHViLmNvbS9uaW5qYS8iCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hODE1ODZhNjRhZDRlNDc2Yzc5MWNkYTdlMmYyYzUyZSIKLQotREVQRU5EUyA9ICJyZTJjLW5hdGl2ZSBuaW5qYS1uYXRpdmUiCi0KLVNSQ1JFViA9ICJiMjVjMDhiZGE0OTQ5MTkyYzY5Y2VhNGNlZTA1Nzg4NzM0MWEyZmZjIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbmluamEtYnVpbGQvbmluamEuZ2l0O2JyYW5jaD1yZWxlYXNlIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1tdXNsLnBhdGNoIFwKLSIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4uKikiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWRvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCi0KLWRvX2NvbXBpbGVfY2xhc3MtbmF0aXZlKCkgewotCXB5dGhvbjMgLi9jb25maWd1cmUucHkgLS1ib290c3RyYXAKLX0KLQotZG9fY29tcGlsZSgpIHsKLQlweXRob24zIC4vY29uZmlndXJlLnB5Ci0JbmluamEKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlpbnN0YWxsIC1EIC1tIDA3NTUgICR7U30vbmluamEgJHtEfSR7YmluZGlyfS9uaW5qYQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvMDAwMS1Td2l0Y2gtYWxsLXNjcmlwdHMtdG8tdXNlLVB5dGhvbi0zLngucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvMDAwMS1Td2l0Y2gtYWxsLXNjcmlwdHMtdG8tdXNlLVB5dGhvbi0zLngucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5MWVkNTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzLzAwMDEtU3dpdGNoLWFsbC1zY3JpcHRzLXRvLXVzZS1QeXRob24tMy54LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTEzICswLDAgQEAKLUZyb20gZDQyYjIzZjRmYjVkNmJkNThlOTJlOTk1ZmU1YmVmYzc2ZWZiYWUwYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVGh1LCAyNyBBcHIgMjAxNyAxNTo0Nzo1OCArMDMwMAotU3ViamVjdDogW1BBVENIXSBTd2l0Y2ggYWxsIHNjcmlwdHMgdG8gdXNlIFB5dGhvbiAzLngKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIG1ha2VQYWNrYWdlICAgICAgICAgIHwgMiArLQotIG9wa2ctY29tcGFyZS1pbmRleGVzIHwgMiArLQotIG9wa2ctZ3JhcGgtZGVwcyAgICAgIHwgMiArLQotIG9wa2ctbGlzdC1maWVsZHMgICAgIHwgMiArLQotIG9wa2ctbWFrZS1pbmRleCAgICAgIHwgMiArLQotIG9wa2ctc2hvdy1kZXBzICAgICAgIHwgMiArLQotIG9wa2ctdW5idWlsZCAgICAgICAgIHwgMiArLQotIG9wa2ctdXBkYXRlLWluZGV4ICAgIHwgMiArLQotIG9wa2cucHkgICAgICAgICAgICAgIHwgMiArLQotIDkgZmlsZXMgY2hhbmdlZCwgOSBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvbWFrZVBhY2thZ2UgYi9tYWtlUGFja2FnZQotaW5kZXggNGJkZmM1Ni4uMDIxMjRkZCAxMDA3NTUKLS0tLSBhL21ha2VQYWNrYWdlCi0rKysgYi9tYWtlUGFja2FnZQotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9weXRob24KLSsjIS91c3IvYmluL2VudiBweXRob24zCi0gCi0gIyBUaGUgZ2VuZXJhbCBhbGdvcml0aG0gdGhpcyBwcm9ncmFtIGZvbGxvd3MgZ29lcyBsaWtlIHRoaXM6Ci0gIyAgIFJ1biB0YXIgdG8gZXh0cmFjdCBjb250cm9sIGZyb20gY29udHJvbC50YXIuZ3ogZnJvbSB0aGUgcGFja2FnZS4KLWRpZmYgLS1naXQgYS9vcGtnLWNvbXBhcmUtaW5kZXhlcyBiL29wa2ctY29tcGFyZS1pbmRleGVzCi1pbmRleCBiNjBkMjBhLi44MGMxMjYzIDEwMDc1NQotLS0tIGEvb3BrZy1jb21wYXJlLWluZGV4ZXMKLSsrKyBiL29wa2ctY29tcGFyZS1pbmRleGVzCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL2VudiBweXRob24KLSsjIS91c3IvYmluL2VudiBweXRob24zCi0gZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKLSBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi0gCi1kaWZmIC0tZ2l0IGEvb3BrZy1ncmFwaC1kZXBzIGIvb3BrZy1ncmFwaC1kZXBzCi1pbmRleCA2NjUzZmQ1Li5mMWUzNzZhIDEwMDc1NQotLS0tIGEvb3BrZy1ncmFwaC1kZXBzCi0rKysgYi9vcGtnLWdyYXBoLWRlcHMKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLSBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAotIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KLSAKLWRpZmYgLS1naXQgYS9vcGtnLWxpc3QtZmllbGRzIGIvb3BrZy1saXN0LWZpZWxkcwotaW5kZXggYzE0YTkwZi4uMjRmNzk1NSAxMDA3NTUKLS0tLSBhL29wa2ctbGlzdC1maWVsZHMKLSsrKyBiL29wa2ctbGlzdC1maWVsZHMKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLSBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAotIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KLSAKLWRpZmYgLS1naXQgYS9vcGtnLW1ha2UtaW5kZXggYi9vcGtnLW1ha2UtaW5kZXgKLWluZGV4IDNmNzU3ZjYuLjI5ODhmOWYgMTAwNzU1Ci0tLS0gYS9vcGtnLW1ha2UtaW5kZXgKLSsrKyBiL29wa2ctbWFrZS1pbmRleAotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotICIiIgotICAgIFV0aWxpdHkgdG8gY3JlYXRlIG9wa2cgY29tcGF0aWJsZSBpbmRleGVzCi0gIiIiCi0gCi1kaWZmIC0tZ2l0IGEvb3BrZy1zaG93LWRlcHMgYi9vcGtnLXNob3ctZGVwcwotaW5kZXggMTUzZjIxZS4uNGUxOGI0ZiAxMDA3NTUKLS0tLSBhL29wa2ctc2hvdy1kZXBzCi0rKysgYi9vcGtnLXNob3ctZGVwcwotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Ci0gZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBwcmludF9mdW5jdGlvbgotIAotZGlmZiAtLWdpdCBhL29wa2ctdW5idWlsZCBiL29wa2ctdW5idWlsZAotaW5kZXggNGYzNmJlYy4uNTc2NDJjOSAxMDA3NTUKLS0tLSBhL29wa2ctdW5idWlsZAotKysrIGIvb3BrZy11bmJ1aWxkCi1AQCAtMSw0ICsxLDQgQEAKLS0jIS91c3IvYmluL2VudiBweXRob24KLSsjIS91c3IvYmluL2VudiBweXRob24zCi0gZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKLSBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCi0gCi1kaWZmIC0tZ2l0IGEvb3BrZy11cGRhdGUtaW5kZXggYi9vcGtnLXVwZGF0ZS1pbmRleAotaW5kZXggMzQxYzFjMi4uN2JmZjhhMSAxMDA3NTUKLS0tLSBhL29wa2ctdXBkYXRlLWluZGV4Ci0rKysgYi9vcGtnLXVwZGF0ZS1pbmRleAotQEAgLTEsNCArMSw0IEBACi0tIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCi0rIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMwotIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgYWJzb2x1dGVfaW1wb3J0Ci0gCi0gaW1wb3J0IHN5cywgb3MKLWRpZmYgLS1naXQgYS9vcGtnLnB5IGIvb3BrZy5weQotaW5kZXggMmVjYWM4YS4uN2U2NGRlNCAxMDA2NDQKLS0tLSBhL29wa2cucHkKLSsrKyBiL29wa2cucHkKLUBAIC0xLDQgKzEsNCBAQAotLSMhL3Vzci9iaW4vZW52IHB5dGhvbgotKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKLSAjICAgQ29weXJpZ2h0IChDKSAyMDAxIEFsZXhhbmRlciBTLiBHdXkgPGE3ckBhbmRlcm4ub3JnPgotICMgICAgICAgICAgICAgICAgICAgICAgQW5kZXJuIFJlc2VhcmNoIExhYnMKLSAjCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvMDAwMS1vcGtnLWJ1aWxkLWNsYW1wLW10aW1lcy10by1TT1VSQ0VfREFURV9FUE9DSC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAxLW9wa2ctYnVpbGQtY2xhbXAtbXRpbWVzLXRvLVNPVVJDRV9EQVRFX0VQT0NILnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhMTgxMTY5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy8wMDAxLW9wa2ctYnVpbGQtY2xhbXAtbXRpbWVzLXRvLVNPVVJDRV9EQVRFX0VQT0NILnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSA1OWRhNTU3N2JmOGRmNDQxYzZjYTk1OGU1MGZjYjgzMjI4NzAyNzY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxlamFuZHJvIGRlbCBDYXN0aWxsbyA8YWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLURhdGU6IFRodSwgMTIgU2VwIDIwMTkgMTA6MjQ6NTggLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gb3BrZy1idWlsZDogY2xhbXAgbXRpbWVzIHRvIFNPVVJDRV9EQVRFX0VQT0NICi0KLUZvciByZXByb2R1Y2libGUgYnVpbGRzLCBjbGFtcCBtdGltZXMgYmlnZ2VyIHRoYW4gU09VUkNFX0RBVEVfRVBPQ0ggdG8KLVNPVVJDRV9EQVRFX0VQT0NIIChidWlsZCBnZW5lcmF0ZWQgZmlsZXMsIHVzdWFsbHkpLgotCi1GaXhlcyBidWd6aWxsYSAxMzQ1MAotCi1TaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPgotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLS0tLQotIG9wa2ctYnVpbGQgfCA5ICsrKysrKysrLQotIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL29wa2ctYnVpbGQgYi9vcGtnLWJ1aWxkCi1pbmRleCBkY2QyZDY4Li4yNTE3YTJiIDEwMDc1NQotLS0tIGEvb3BrZy1idWlsZAotKysrIGIvb3BrZy1idWlsZAotQEAgLTI5Nyw5ICsyOTcsMTYgQEAgbWtkaXIgJHRtcF9kaXIKLSAKLSBidWlsZF9kYXRlPSIke1NPVVJDRV9EQVRFX0VQT0NIOi0kKGRhdGUgKyVzKX0iCi0gCi0rbXRpbWVfYXJncz0iIgotKyMgLS1jbGFtcC1tdGltZSByZXF1aXJlcyB0YXIgPiAxLjI4LiBPbmx5IHVzZSBpdCBpZiBTT1VSQ0VfREFURV9FUE9DSCBpcyBzZXQsIHRvIGF2b2lkIGhhdmluZyBhIGdlbmVyaWMgY2FzZSBkZXBlbmRlbmN5IG9uIHRhciA+IDEuMjguCi0rIyB0aGlzIHNldHRpbmcgd2lsbCBtYWtlIHN1cmUgZmlsZXMgZ2VuZXJhdGVkIGF0IGJ1aWxkIHRpbWUgaGF2ZSBjb25zaXN0ZW50IG10aW1lcywgZm9yIHJlcHJvZHVjaWJsZSBidWlsZHMuCi0raWYgWyAhIC16ICIkU09VUkNFX0RBVEVfRVBPQ0giICBdOyB0aGVuCi0rICAgIG10aW1lX2FyZ3M9Ii0tbXRpbWU9QCRidWlsZF9kYXRlIC0tY2xhbXAtbXRpbWUiCi0rZmkKLSsKLSAoIGNkICRwa2dfZGlyLyRDT05UUk9MICYmIGZpbmQgLiAtdHlwZSBmID4gJHRtcF9kaXIvY29udHJvbF9saXN0ICkKLSAoIGNkICRwa2dfZGlyICYmIGZpbmQgLiAtcGF0aCAuLyRDT05UUk9MIC1wcnVuZSAtbyAtcHJpbnQgPiAkdG1wX2Rpci9maWxlX2xpc3QgKQotLSggY2QgJHBrZ19kaXIgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW5vLXJlY3Vyc2lvbiAtYyAkdGFyZm9ybWF0IC1UICR0bXBfZGlyL2ZpbGVfbGlzdCB8ICRjb21wcmVzc29yICRjb21wcmVzc29yYXJncyA+ICR0bXBfZGlyL2RhdGEudGFyLiRjZXh0ICkKLSsoIGNkICRwa2dfZGlyICYmIHRhciAkb2dhcmdzICR0c29ydGFyZ3MgLS1uby1yZWN1cnNpb24gJG10aW1lX2FyZ3MgLWMgJHRhcmZvcm1hdCAtVCAkdG1wX2Rpci9maWxlX2xpc3QgfCAkY29tcHJlc3NvciAkY29tcHJlc3NvcmFyZ3MgPiAkdG1wX2Rpci9kYXRhLnRhci4kY2V4dCApCi0gKCBjZCAkcGtnX2Rpci8kQ09OVFJPTCAmJiB0YXIgJG9nYXJncyAkdHNvcnRhcmdzIC0tbm8tcmVjdXJzaW9uIC0tbXRpbWU9QCRidWlsZF9kYXRlIC1jICR0YXJmb3JtYXQgLVQgJHRtcF9kaXIvY29udHJvbF9saXN0IHwgZ3ppcCAkemlwYXJncyA+ICR0bXBfZGlyL2NvbnRyb2wudGFyLmd6ICkKLSBybSAkdG1wX2Rpci9maWxlX2xpc3QKLSBybSAkdG1wX2Rpci9jb250cm9sX2xpc3QKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy9maXgtcmVwcm9kdWNpYmlsaXR5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL2ZpeC1yZXByb2R1Y2liaWxpdHkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTQ1OTc5YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlscy9maXgtcmVwcm9kdWNpYmlsaXR5LnBhdGNoCkBAIC0wLDAgKzEsMzIgQEAKK0ZpeCByZXByb2R1Y2liaWxpdHkgaXNzdWVzIGluIG9wa2ctYnVpbGQKKworVGhlcmUgaXMgYSBzb3J0aW5nIHByb2JsZW0gd2l0aCBvcGtnLWJ1aWxkIHdoZXJlIHRoZSBpcGsgZ2VuZXJhdGVkIGlzIGRlcGVuZGluZwordXBvbiB0aGUgb3JkZXIgb2YgZmlsZXMgb24gZGlzay4gVGhlIHJlYXNvbiBpcyB0aGUgLS1zb3J0IG9wdGlvbiB0byB0YXIgb25seQoraW5mbHVlbmNlcyB0aGUgb3JkZXJzIG9mIGZpbGVzIHRhciByZWFkcywgbm90IHRob3NlIHBhc3NlZCBieSB0aGUgLVQgb3B0aW9uLgorCitBZGQgaW4gYSBzb3J0IGNhbGwgdG8gcmVzb2x2ZSB0aGlzIGlzc3VlLiBUbyBlbnN1cmUgY29uc2lzdGVudCBzb3J0aW5nIHdlCithbHNvIG5lZWQgdG8gZm9yY2UgdG8gYSBzcGVjaWZpYyBsb2NhbGUgKEMpIGVsc2UgdGhlIHJlc3VsdHMgYXJlIHN0aWxsIG5vdAorZGV0ZXJtaW5pc3RpYy4KKworUlAgMjAyMC8yLzUKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ3JvdXBzLmdvb2dsZS5jb20vZm9ydW0vIyF0b3BpYy9vcGtnLWRldmVsL1l0dFo3M05McllRXQorU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK0luZGV4OiBvcGtnLXV0aWxzLTAuNC4yL29wa2ctYnVpbGQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBvcGtnLXV0aWxzLTAuNC4yLm9yaWcvb3BrZy1idWlsZAorKysrIG9wa2ctdXRpbHMtMC40LjIvb3BrZy1idWlsZAorQEAgLTMwNSw4ICszMDUsMTAgQEAgaWYgWyAhIC16ICIkU09VUkNFX0RBVEVfRVBPQ0giICBdOyB0aGVuCisgICAgIG10aW1lX2FyZ3M9Ii0tbXRpbWU9QCRidWlsZF9kYXRlIC0tY2xhbXAtbXRpbWUiCisgZmkKKyAKKy0oIGNkICRwa2dfZGlyLyRDT05UUk9MICYmIGZpbmQgLiAtdHlwZSBmID4gJHRtcF9kaXIvY29udHJvbF9saXN0ICkKKy0oIGNkICRwa2dfZGlyICYmIGZpbmQgLiAtcGF0aCAuLyRDT05UUk9MIC1wcnVuZSAtbyAtcGF0aCAuIC1vIC1wcmludCAgPiAkdG1wX2Rpci9maWxlX2xpc3QgKQorK2V4cG9ydCBMQU5HPUMKKytleHBvcnQgTENfQUxMPUMKKysoIGNkICRwa2dfZGlyLyRDT05UUk9MICYmIGZpbmQgLiAtdHlwZSBmIHwgc29ydCA+ICR0bXBfZGlyL2NvbnRyb2xfbGlzdCApCisrKCBjZCAkcGtnX2RpciAmJiBmaW5kIC4gLXBhdGggLi8kQ09OVFJPTCAtcHJ1bmUgLW8gLXBhdGggLiAtbyAtcHJpbnQgIHwgc29ydCA+ICR0bXBfZGlyL2ZpbGVfbGlzdCApCisgKCBjZCAkcGtnX2RpciAmJiB0YXIgJG9nYXJncyAkdHNvcnRhcmdzIC0tbm8tcmVjdXJzaW9uICRtdGltZV9hcmdzIC1jICR0YXJmb3JtYXQgLVQgJHRtcF9kaXIvZmlsZV9saXN0IHwgJGNvbXByZXNzb3IgJGNvbXByZXNzb3JhcmdzID4gJHRtcF9kaXIvZGF0YS50YXIuJGNleHQgKQorICggY2QgJHBrZ19kaXIvJENPTlRST0wgJiYgdGFyICRvZ2FyZ3MgJHRzb3J0YXJncyAtLW5vLXJlY3Vyc2lvbiAtLW10aW1lPUAkYnVpbGRfZGF0ZSAtYyAkdGFyZm9ybWF0IC1UICR0bXBfZGlyL2NvbnRyb2xfbGlzdCB8IGd6aXAgJHppcGFyZ3MgPiAkdG1wX2Rpci9jb250cm9sLnRhci5neiApCisgcm0gJHRtcF9kaXIvZmlsZV9saXN0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvcGlwZWZhaWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHMvcGlwZWZhaWwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU1ZGRjYzEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzL3BpcGVmYWlsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotV2UgbmVlZCBvcGtnLWJ1aWxkIHRvIGZhaWwgaWYgZm9yIGV4YW1wbGUgdGhlIHRhciBjb21tYW5kIGlzIHBhc3NlZCBpbnZhbGlkIAotb3B0aW9ucy4gV2l0aG91dCB0aGlzLCB3ZSBzZWUgc2lsZW50bHkgY3JlYXRlZCBlbXB0eSBwYWNrYWdlZCB3aGVyZSBkYXRhLnRhcgotaXMgemVybyBieXRlcyBpbiBzaXplLiBUaGlzIGNyZWF0ZXMgaGFyZCB0byBkZWJ1ZyBwcm9ibGVtcy4KLQotQW4gZXhhbXBsZSBpcyB3aGVuIHJlcHJvZHVjaWJsZSBidWlsZHMgYXJlIGVuYWJsZWQgYW5kIHJ1biBvbiBvbGQgaG9zdHMgbGlrZQotY2VudG9zNyB3aGljaCBoYXMgdGFyIDwgMS4yODoKLQotU3VicHJvY2VzcyBvdXRwdXQ6dGFyOiB1bnJlY29nbml6ZWQgb3B0aW9uICctLWNsYW1wLW10aW1lJwotVHJ5IGB0YXIgLS1oZWxwJyBvciBgdGFyIC0tdXNhZ2UnIGZvciBtb3JlIGluZm9ybWF0aW9uLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgotCi1JbmRleDogb3BrZy11dGlscy0wLjQuMS9vcGtnLWJ1aWxkCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gb3BrZy11dGlscy0wLjQuMS5vcmlnL29wa2ctYnVpbGQKLSsrKyBvcGtnLXV0aWxzLTAuNC4xL29wa2ctYnVpbGQKLUBAIC0xLDQgKzEsNCBAQAotLSMhL2Jpbi9zaAotKyMhL2Jpbi9iYXNoCi0gCi0gOiA8PD1jdXQKLSA9aGVhZDEgTkFNRQotQEAgLTEyLDYgKzEyLDcgQEAgb3BrZy1idWlsZCAtIGNvbnN0cnVjdCBhbiAub3BrIGZyb20gYSBkaQotICMgICBVcGRhdGVkIHRvIHdvcmsgb24gRmFtaWxpYXIgUHJlMC43cmMxLCB3aXRoIGJ1c3lib3ggdGFyLgotICMgICBOb3RlIGl0IFJlcXVpcmVzOiBiaW51dGlscy1hciAoc2luY2UgdGhlIGJ1c3lib3ggYXIgY2FuJ3QgY3JlYXRlKQotIHNldCAtZQotK3NldCAtbyBwaXBlZmFpbAotIAotIHZlcnNpb249MS4wCi0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfMC40LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfMC40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGViNmM3YTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy11dGlscy9vcGtnLXV0aWxzXzAuNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjcgKzAsMCBAQAotU1VNTUFSWSA9ICJBZGRpdGlvbmFsIHV0aWxpdGllcyBmb3IgdGhlIG9wa2cgcGFja2FnZSBtYW5hZ2VyIgotU1VNTUFSWV91cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAiVXRpbGl0eSBmb3IgbWFuYWdpbmcgdGhlIGFsdGVybmF0aXZlcyBzeXN0ZW0iCi1TRUNUSU9OID0gImJhc2UiCi1IT01FUEFHRSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9vcGtnLXV0aWxzIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9vcGtnLnB5O2JlZ2lubGluZT0yO2VuZGxpbmU9MTg7bWQ1PTYzY2U5ZTZiY2M0NDUxODFjZDllNGJhZjRiNGNjYzM1IgotUFJPVklERVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAndmlydHVhbC91cGRhdGUtYWx0ZXJuYXRpdmVzJywgJycsIGQpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS8ke0JQTn0vc25hcHNob3QvJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVN3aXRjaC1hbGwtc2NyaXB0cy10by11c2UtUHl0aG9uLTMueC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW9wa2ctYnVpbGQtY2xhbXAtbXRpbWVzLXRvLVNPVVJDRV9EQVRFX0VQT0NILnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BpcGVmYWlsLnBhdGNoIFwKLSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9vcGtnLXV0aWxzL3JlZnMvIgotCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4YzE0MGY4MzViNjk0YTBjMjdjZmIyM2QyNDI2YTAyYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZWE5ZWZkZDlmZTEzNjYxYWQyNTFlM2EyODYwYzFjOTMwNDVhZGNmYWE2NjU5YzNlODZkOTc0OGVjZGEzYjZlIgotCi1UQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKLQotUkRFUEVORFNfJHtQTn0gKz0gImJhc2giCi0KLSMgRm9yIG5hdGl2ZSBidWlsZHMgd2UgdXNlIHRoZSBob3N0IFB5dGhvbgotUFlUSE9OUkRFUFMgPSAicHl0aG9uMyBweXRob24zLXNoZWxsIHB5dGhvbjMtaW8gcHl0aG9uMy1tYXRoIHB5dGhvbjMtY3J5cHQgcHl0aG9uMy1sb2dnaW5nIHB5dGhvbjMtZmNudGwgcHl0aG9uMy1waWNrbGUgcHl0aG9uMy1jb21wcmVzc2lvbiBweXRob24zLXN0cmluZ29sZCIKLVBZVEhPTlJERVBTX2NsYXNzLW5hdGl2ZSA9ICIiCi0KLVBBQ0tBR0VDT05GSUcgPSAicHl0aG9uIHVwZGF0ZS1hbHRlcm5hdGl2ZXMiCi1QQUNLQUdFQ09ORklHW3B5dGhvbl0gPSAiLCwsJHtQWVRIT05SREVQU30iCi1QQUNLQUdFQ09ORklHW3VwZGF0ZS1hbHRlcm5hdGl2ZXNdID0gIiwsLCIKLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIFBSRUZJWD0ke3ByZWZpeH0gREVTVERJUj0ke0R9IGluc3RhbGwKLQlpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCQlybSAtZiAiJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIgotCWZpCi0KLSAgICBpZiAhICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B5dGhvbicsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgIGdyZXAgLWxaICIvdXNyL2Jpbi9lbnYuKnB5dGhvbiIgJHtEfSR7YmluZGlyfS8qIHwgeGFyZ3MgLTAgcm0KLSAgICBmaQotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0JaWYgWyAtZSAiJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIiBdOyB0aGVuCi0JCXNlZCAtaSAke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMgLWUgJ3MsL3Vzci9iaW4sJHtiaW5kaXJ9LGc7IHMsL3Vzci9saWIsJHtub25hcmNoX2xpYmRpcn0sZycKLQlmaQotfQotCi0jIFRoZXNlIGFyZSBlbXB0eSBhbmQgd2lsbCBwdWxsIHB5dGhvbjMtZGV2IGludG8gaW1hZ2VzIHdoZXJlIGl0IHdvdWxkbid0Ci0jIGhhdmUgYmVlbiBvdGhlcndpc2UsIHNvIGRvbid0IGdlbmVyYXRlIHRoZW0uCi1QQUNLQUdFU19yZW1vdmUgPSAiJHtQTn0tZGV2ICR7UE59LXN0YXRpY2RldiIKLQotUEFDS0FHRVMgPSsgInVwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyIKLUZJTEVTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICIke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyIKLVJQUk9WSURFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcyB1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKLVJSRVBMQUNFU191cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2cgPSAidXBkYXRlLWFsdGVybmF0aXZlcy1jd29ydGgiCi1SQ09ORkxJQ1RTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKLQotcGtnX3Bvc3RybV91cGRhdGUtYWx0ZXJuYXRpdmVzLW9wa2coKSB7Ci0Jcm0gLXJmICREJHtub25hcmNoX2xpYmRpcn0vb3BrZy9hbHRlcm5hdGl2ZXMKLQlybWRpciAkRCR7bm9uYXJjaF9saWJkaXJ9L29wa2cgfHwgdHJ1ZQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLUNMRUFOQlJPS0VOID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfMC40LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnLXV0aWxzL29wa2ctdXRpbHNfMC40LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTMxNTI0MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2ctdXRpbHMvb3BrZy11dGlsc18wLjQuMi5iYgpAQCAtMCwwICsxLDY2IEBACitTVU1NQVJZID0gIkFkZGl0aW9uYWwgdXRpbGl0aWVzIGZvciB0aGUgb3BrZyBwYWNrYWdlIG1hbmFnZXIiCitTVU1NQVJZX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJVdGlsaXR5IGZvciBtYW5hZ2luZyB0aGUgYWx0ZXJuYXRpdmVzIHN5c3RlbSIKK1NFQ1RJT04gPSAiYmFzZSIKK0hPTUVQQUdFID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpL29wa2ctdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL29wa2cucHk7YmVnaW5saW5lPTI7ZW5kbGluZT0xODttZDU9ZmZhMTFmZjNjMTVlYjMxYzZhN2NlYWEwMGNjOWY5ODYiCitQUk9WSURFUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXBkYXRlLWFsdGVybmF0aXZlcycsICd2aXJ0dWFsL3VwZGF0ZS1hbHRlcm5hdGl2ZXMnLCAnJywgZCl9IgorCitTUkNfVVJJID0gImh0dHA6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9jZ2l0L2NnaXQuY2dpLyR7QlBOfS9zbmFwc2hvdC8ke0JQTn0tJHtQVn0udGFyLmd6IFwgCisgICAgICAgICAgIGZpbGU6Ly9maXgtcmVwcm9kdWNpYmlsaXR5LnBhdGNoIFwKKyIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwOi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvY2dpdC9jZ2l0LmNnaS9vcGtnLXV0aWxzL3JlZnMvIgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2MyMTA2NTA2NDRmY2I5YmJhMDZhZDVlYzk1YTYzZWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTkyOWFkODdkNTQxNzg5ZTBiODJkNjI2ZGIwMWExMjAxYWM0OGRmNmY0OWYyMjYyZmNmYjg2Y2Y4MTVlNWQ2YyIKKworVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCisKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNoIgorCitpbmhlcml0IHBlcmxuYXRpdmUKKworIyBGb3IgbmF0aXZlIGJ1aWxkcyB3ZSB1c2UgdGhlIGhvc3QgUHl0aG9uCitQWVRIT05SREVQUyA9ICJweXRob24zIHB5dGhvbjMtc2hlbGwgcHl0aG9uMy1pbyBweXRob24zLW1hdGggcHl0aG9uMy1jcnlwdCBweXRob24zLWxvZ2dpbmcgcHl0aG9uMy1mY250bCBweXRob24zLXBpY2tsZSBweXRob24zLWNvbXByZXNzaW9uIHB5dGhvbjMtc3RyaW5nb2xkIgorUFlUSE9OUkRFUFNfY2xhc3MtbmF0aXZlID0gIiIKKworUEFDS0FHRUNPTkZJRyA9ICJweXRob24gdXBkYXRlLWFsdGVybmF0aXZlcyIKK1BBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICIsLCwke1BZVEhPTlJERVBTfSIKK1BBQ0tBR0VDT05GSUdbdXBkYXRlLWFsdGVybmF0aXZlc10gPSAiLCwsIgorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgUFJFRklYPSR7cHJlZml4fSBERVNURElSPSR7RH0gaW5zdGFsbAorCWlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndXBkYXRlLWFsdGVybmF0aXZlcycsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisJCXJtIC1mICIke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMiCisJZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCWlmICEgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHl0aG9uJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKwkJZ3JlcCAtbFogIi91c3IvYmluL2Vudi4qcHl0aG9uIiAke0R9JHtiaW5kaXJ9LyogfCB4YXJncyAtMCBybQorCWZpCisKKwlpZiBbIC1lICIke0R9JHtiaW5kaXJ9L3VwZGF0ZS1hbHRlcm5hdGl2ZXMiIF07IHRoZW4KKwkJc2VkIC1pICR7RH0ke2JpbmRpcn0vdXBkYXRlLWFsdGVybmF0aXZlcyAtZSAncywvdXNyL2Jpbiwke2JpbmRpcn0sZzsgcywvdXNyL2xpYiwke25vbmFyY2hfbGliZGlyfSxnJworCWZpCit9CisKKyMgVGhlc2UgYXJlIGVtcHR5IGFuZCB3aWxsIHB1bGwgcHl0aG9uMy1kZXYgaW50byBpbWFnZXMgd2hlcmUgaXQgd291bGRuJ3QKKyMgaGF2ZSBiZWVuIG90aGVyd2lzZSwgc28gZG9uJ3QgZ2VuZXJhdGUgdGhlbS4KK1BBQ0tBR0VTX3JlbW92ZSA9ICIke1BOfS1kZXYgJHtQTn0tc3RhdGljZGV2IgorCitQQUNLQUdFUyA9KyAidXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnIgorRklMRVNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gIiR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIgorUlBST1ZJREVTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgorUlJFUExBQ0VTX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyA9ICJ1cGRhdGUtYWx0ZXJuYXRpdmVzLWN3b3J0aCIKK1JDT05GTElDVFNfdXBkYXRlLWFsdGVybmF0aXZlcy1vcGtnID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMtY3dvcnRoIgorCitwa2dfcG9zdHJtX3VwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZygpIHsKKwlybSAtcmYgJEQke25vbmFyY2hfbGliZGlyfS9vcGtnL2FsdGVybmF0aXZlcworCXJtZGlyICREJHtub25hcmNoX2xpYmRpcn0vb3BrZyB8fCB0cnVlCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworQ0xFQU5CUk9LRU4gPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29wa2cvb3BrZy9vcGVuX2lubmVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnL29wZW5faW5uZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI3OGUwOTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnL29wZW5faW5uZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIGFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20gV2VkIE5vdiAyMCAyMjozNTowMiAyMDE5Ci1Gcm9tOiBBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPgotVG86IDxvcGtnLWRldmVsQGdvb2dsZWdyb3Vwcy5jb20+LCA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KLUNDOiBBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPgotU3ViamVjdDogW29wa2ddW1BBVENIIDIvMl0gb3Blbl9pbm5lcjogYWRkIHN1cHBvcnQgZm9yIGVtcHR5IHBheWxvYWRzCi1EYXRlOiBXZWQsIDIwIE5vdiAyMDE5IDE2OjM0OjQ4IC0wNjAwCi1NZXNzYWdlLUlEOiA8MjAxOTExMjAyMjM0NDguMjY1MjItMy1hbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPgotWC1NYWlsZXI6IGdpdC1zZW5kLWVtYWlsIDIuMjIuMAotSW4tUmVwbHktVG86IDwyMDE5MTEyMDIyMzQ0OC4yNjUyMi0xLWFsZWphbmRyby5kZWxjYXN0aWxsb0BuaS5jb20+Ci1SZWZlcmVuY2VzOiA8MjAxOTExMjAyMjM0NDguMjY1MjItMS1hbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPgotTUlNRS1WZXJzaW9uOiAxLjAKLUNvbnRlbnQtVHlwZTogdGV4dC9wbGFpbgotQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAotCi1TdXBwb3J0IGZvciBlbXB0eSBjb21wcmVzc2VkIHBheWxvYWRzIG5lZWQgdG8gYmUgZXhwbGljaXRseSBlbmFibGVkIG9uDQotbGliYXJjaGl2ZS4NCi0NCi1TaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPg0KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotLS0tDQotIGxpYm9wa2cvb3BrZ19hcmNoaXZlLmMgfCA3ICsrKysrKysNCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQ0KLQ0KLWRpZmYgLS1naXQgYS9saWJvcGtnL29wa2dfYXJjaGl2ZS5jIGIvbGlib3BrZy9vcGtnX2FyY2hpdmUuYw0KLWluZGV4IDBlOWNjZWEuLmYxOWNlY2UgMTAwNjQ0DQotLS0tIGEvbGlib3BrZy9vcGtnX2FyY2hpdmUuYw0KLSsrKyBiL2xpYm9wa2cvb3BrZ19hcmNoaXZlLmMNCi1AQCAtNjE4LDYgKzYxOCwxMyBAQCBzdGF0aWMgc3RydWN0IGFyY2hpdmUgKm9wZW5faW5uZXIoc3RydWN0IGFyY2hpdmUgKm91dGVyKQ0KLSAgICAgICAgIGdvdG8gZXJyX2NsZWFudXA7DQotICAgICB9DQotIA0KLSsgICAgciA9IGFyY2hpdmVfcmVhZF9zdXBwb3J0X2Zvcm1hdF9lbXB0eShpbm5lcik7DQotKyAgICBpZiAociAhPSBBUkNISVZFX09LKSB7DQotKyAgICAgICAgb3BrZ19tc2coRVJST1IsICJFbXB0eSBmb3JtYXQgbm90IHN1cHBvcnRlZDogJXNcbiIsDQotKyAgICAgICAgICAgICAgICAgYXJjaGl2ZV9lcnJvcl9zdHJpbmcoaW5uZXIpKTsNCi0rICAgICAgICBnb3RvIGVycl9jbGVhbnVwOw0KLSsgICAgfQ0KLSsNCi0gICAgIHIgPSBhcmNoaXZlX3JlYWRfb3Blbihpbm5lciwgZGF0YSwgTlVMTCwgaW5uZXJfcmVhZCwgaW5uZXJfY2xvc2UpOw0KLSAgICAgaWYgKHIgIT0gQVJDSElWRV9PSykgew0KLSAgICAgICAgIG9wa2dfbXNnKEVSUk9SLCAiRmFpbGVkIHRvIG9wZW4gaW5uZXIgYXJjaGl2ZTogJXNcbiIsDQotLS0gDQotMi4yMi4wDQotDQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cvb3BrZ19hcmNoaXZlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnL29wa2dfYXJjaGl2ZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2UxZWJhZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2cvb3BrZ19hcmNoaXZlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotRnJvbSBhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tIFdlZCBOb3YgMjAgMjI6MzU6MDEgMjAxOQotUmV0dXJuLVBhdGg6IDxyaWNoYXJkLnB1cmRpZStjYWZfPXJwdXJkaWU9cnBzeXMubmV0QGxpbnV4Zm91bmRhdGlvbi5vcmc+Ci1Gcm9tOiBBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPgotVG86IDxvcGtnLWRldmVsQGdvb2dsZWdyb3Vwcy5jb20+LCA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KLUNDOiBBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPgotU3ViamVjdDogW29wa2ddW1BBVENIIDEvMl0gb3BrZ19hcmNoaXZlLmM6IGF2b2lkIGRvdWJsZSBmcmVlIG9uIHVuY29tcHJlc3MKLSBlcnJvcgotRGF0ZTogV2VkLCAyMCBOb3YgMjAxOSAxNjozNDo0NyAtMDYwMAotTWVzc2FnZS1JRDogPDIwMTkxMTIwMjIzNDQ4LjI2NTIyLTItYWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLVgtTWFpbGVyOiBnaXQtc2VuZC1lbWFpbCAyLjIyLjAKLUluLVJlcGx5LVRvOiA8MjAxOTExMjAyMjM0NDguMjY1MjItMS1hbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPgotUmVmZXJlbmNlczogPDIwMTkxMTIwMjIzNDQ4LjI2NTIyLTEtYWxlamFuZHJvLmRlbGNhc3RpbGxvQG5pLmNvbT4KLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW4KLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotVGhlIG9wZW4taW5uZXIgZnVuY3Rpb24gY2FsbHMgYXJjaGl2ZV9yZWFkX29wZW4uIE9uIGVycm9yLA0KLWFyY2hpdmVfcmVhZF9vcGVuIGNhbGxzIGlubmVyX2Nsb3NlLCB3aGljaCBhbHNvIGNsb3NlcyB0aGUgb3V0dGVyDQotYXJjaGl2ZS4gT24gZXJyb3IsIHJldHVybiBOVUxMIGRpcmVjdGx5IHRvIGF2b2lkIGRvdWJsZSBmcmVlLg0KLQ0KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gZGVsIENhc3RpbGxvIDxhbGVqYW5kcm8uZGVsY2FzdGlsbG9AbmkuY29tPg0KLS0tLQ0KLSBsaWJvcGtnL29wa2dfYXJjaGl2ZS5jIHwgNCArKy0tDQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pDQotDQotZGlmZiAtLWdpdCBhL2xpYm9wa2cvb3BrZ19hcmNoaXZlLmMgYi9saWJvcGtnL29wa2dfYXJjaGl2ZS5jDQotaW5kZXggM2Q4N2RiMS4uMGU5Y2NlYSAxMDA2NDQNCi0tLS0gYS9saWJvcGtnL29wa2dfYXJjaGl2ZS5jDQotKysrIGIvbGlib3BrZy9vcGtnX2FyY2hpdmUuYw0KLUBAIC02MjIsNyArNjIyLDcgQEAgc3RhdGljIHN0cnVjdCBhcmNoaXZlICpvcGVuX2lubmVyKHN0cnVjdCBhcmNoaXZlICpvdXRlcikNCi0gICAgIGlmIChyICE9IEFSQ0hJVkVfT0spIHsNCi0gICAgICAgICBvcGtnX21zZyhFUlJPUiwgIkZhaWxlZCB0byBvcGVuIGlubmVyIGFyY2hpdmU6ICVzXG4iLA0KLSAgICAgICAgICAgICAgICAgIGFyY2hpdmVfZXJyb3Jfc3RyaW5nKGlubmVyKSk7DQotLSAgICAgICAgZ290byBlcnJfY2xlYW51cDsNCi0rICAgICAgICByZXR1cm4gTlVMTDsNCi0gICAgIH0NCi0gDQotICAgICByZXR1cm4gaW5uZXI7DQotQEAgLTY4Myw3ICs2ODMsNyBAQCBzdGF0aWMgc3RydWN0IGFyY2hpdmUgKmV4dHJhY3Rfb3V0ZXIoY29uc3QgY2hhciAqZmlsZW5hbWUsIGNvbnN0IGNoYXIgKmFybmFtZSkNCi0gDQotICAgICBpbm5lciA9IG9wZW5faW5uZXIob3V0ZXIpOw0KLSAgICAgaWYgKCFpbm5lcikNCi0tICAgICAgICBnb3RvIGVycl9jbGVhbnVwOw0KLSsgICAgICAgIHJldHVybiBOVUxMOw0KLSANCi0gICAgIHJldHVybiBpbm5lcjsNCi0gDQotLS0gDQotMi4yMi4wDQotDQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC40LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC40LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwYWU4YjMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuNC4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsODYgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuIFBhY2thZ2UgTWFuYWdlciIKLVNVTU1BUllfbGlib3BrZyA9ICJPcGVuIFBhY2thZ2UgTWFuYWdlciBsaWJyYXJ5IgotU0VDVElPTiA9ICJiYXNlIgotSE9NRVBBR0UgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL29wa2cvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3Avb3BrZy9pc3N1ZXMvbGlzdCIKLUxJQ0VOU0UgPSAiR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL29wa2cuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTIxO21kNT05MDQzNWE1MTljNmVhNjllZjIyZTRhODhiY2M1MmZhMCIKLQotREVQRU5EUyA9ICJsaWJhcmNoaXZlIgotCi1QRSA9ICIxIgotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGtnLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1vcGtnX2NvbmYtY3JlYXRlLW9wa2cubG9jay1pbi1ydW4taW5zdGVhZC1vZi12YXItcnVuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL29wa2dfYXJjaGl2ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9vcGVuX2lubmVyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiYTBjMjEzMDVmYzkzYjI2ZTg0NDk4MWVmMTAwZGM4NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NWFjMWUwMzdkMzg3N2Y2MzVkODgzZjhhNTU1ZTE3Mjg4M2EyNWQzZWViNzk4NmM3NTg5MGZkZDMxMjUwYTQzIgotCi0jIFRoaXMgbmVlZHMgdG8gYmUgYmVmb3JlIHB0ZXN0IGluaGVyaXQsIG90aGVyd2lzZSBhbGwgcHRlc3QgZmlsZXMgZW5kIHBhY2thZ2VkCi0jIGluIGxpYm9wa2cgcGFja2FnZSBpZiBPUEtHTElCRElSID09IGxpYmRpciwgYmVjYXVzZSBkZWZhdWx0Ci0jIFBURVNUX1BBVEggPz0gIiR7bGliZGlyfS8ke0JQTn0vcHRlc3QiCi1QQUNLQUdFUyA9KyAibGlib3BrZyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHB0ZXN0Ci0KLXRhcmdldF9sb2NhbHN0YXRlZGlyIDo9ICIke2xvY2Fsc3RhdGVkaXJ9IgotT1BLR0xJQkRJUiA/Pz0gIiR7dGFyZ2V0X2xvY2Fsc3RhdGVkaXJ9L2xpYiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImxpYnNvbHYiCi0KLVBBQ0tBR0VDT05GSUdbZ3BnXSA9ICItLWVuYWJsZS1ncGcsLS1kaXNhYmxlLWdwZyxcCi0gICAgZ251cGcgZ3BnbWUgbGliZ3BnLWVycm9yLFwKLSAgICAke0AgImdudXBnIiBpZiAoIm5hdGl2ZSIgaW4gZC5nZXRWYXIoIlBOIikpIGVsc2UgImdudXBnLWdwZyJ9XAotICAgICIKLVBBQ0tBR0VDT05GSUdbY3VybF0gPSAiLS1lbmFibGUtY3VybCwtLWRpc2FibGUtY3VybCxjdXJsIgotUEFDS0FHRUNPTkZJR1tzc2wtY3VybF0gPSAiLS1lbmFibGUtc3NsLWN1cmwsLS1kaXNhYmxlLXNzbC1jdXJsLGN1cmwgb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tzaGEyNTZdID0gIi0tZW5hYmxlLXNoYTI1NiwtLWRpc2FibGUtc2hhMjU2IgotUEFDS0FHRUNPTkZJR1tsaWJzb2x2XSA9ICItLXdpdGgtbGlic29sdiwtLXdpdGhvdXQtbGlic29sdixsaWJzb2x2IgotCi1FWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtcGF0aGZpbmRlciIKLUVYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS1sb2NhbHN0YXRlZGlyPS8ke0Bvcy5wYXRoLnJlbHBhdGgoJyR7bG9jYWxzdGF0ZWRpcn0nLCAnJHtTVEFHSU5HX0RJUl9OQVRJVkV9Jyl9IC0tc3lzY29uZmRpcj0vJHtAb3MucGF0aC5yZWxwYXRoKCcke3N5c2NvbmZkaXJ9JywgJyR7U1RBR0lOR19ESVJfTkFUSVZFfScpfSIKLQotIyBSZWxlYXNlIHRhcmJhbGwgaGFzIHVudXNlZCBiaW5hcmllcyBvbiB0aGUgdGVzdHMgZm9sZGVyLCBhdXRvbWF0aWNhbGx5IGNyZWF0ZWQgYnkgYXV0b21ha2UuCi0jIEZvciBub3csIGRlbGV0ZSB0aGVtIHRvIGF2b2lkIHBhY2thZ2luZyBlcnJvcnMgKHdyb25nIGFyY2hpdGVjdHVyZSkKLWRvX3VucGFja19hcHBlbmQgKCkgewotICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygncmVtb3ZlX3Rlc3RfYmluYXJpZXMnLCBkKQotfQotCi1yZW1vdmVfdGVzdF9iaW5hcmllcyAoKSB7Ci0Jcm0gJHtXT1JLRElSfS9vcGtnLSR7UFZ9L3Rlc3RzL2xpYm9wa2dfdGVzdCoKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vb3BrZwotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L29wa2cuY29uZiAke0R9JHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZgotCWVjaG8gIm9wdGlvbiBsaXN0c19kaXIgJHtPUEtHTElCRElSfS9vcGtnL2xpc3RzIiA+PiR7RH0ke3N5c2NvbmZkaXJ9L29wa2cvb3BrZy5jb25mCi0KLQkjIFdlIG5lZWQgdG8gY3JlYXRlIHRoZSBsb2NrIGRpcmVjdG9yeQotCWluc3RhbGwgLWQgJHtEfSR7T1BLR0xJQkRJUn0vb3BrZwotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLQlzZWQgLWkgLWUgJy9AZWNobyAkXi9kJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQotCXNlZCAtaSAtZSAnL0BQWVRIT05QQVRIPS4gJChQWVRIT04pICReL2FcXHRAaWYgWyAiJCQ/IiAhPSAiMCIgXTt0aGVuIGVjaG8gIkZBSUw6IiReO2Vsc2UgZWNobyAiUEFTUzoiJF47ZmknICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gIiR7VklSVFVBTC1SVU5USU1FX3VwZGF0ZS1hbHRlcm5hdGl2ZXN9IG9wa2ctYXJjaC1jb25maWcgbGliYXJjaGl2ZSIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCi1SREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgYmludXRpbHMgcHl0aG9uMy1jb3JlIHB5dGhvbjMtY29tcHJlc3Npb24iCi1SUkVQTEFDRVNfJHtQTn0gPSAib3BrZy1ub2dwZyBvcGtnLWNvbGxhdGVyYWwiCi1SQ09ORkxJQ1RTXyR7UE59ID0gIm9wa2ctY29sbGF0ZXJhbCIKLVJQUk9WSURFU18ke1BOfSA9ICJvcGtnLWNvbGxhdGVyYWwiCi0KLUZJTEVTX2xpYm9wa2cgPSAiJHtsaWJkaXJ9Lyouc28uKiAke09QS0dMSUJESVJ9L29wa2cvIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLUNPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L29wa2cvb3BrZy5jb25mIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3BrZy9vcGtnXzAuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2YTc0ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcGtnL29wa2dfMC40LjIuYmIKQEAgLTAsMCArMSw3NCBAQAorU1VNTUFSWSA9ICJPcGVuIFBhY2thZ2UgTWFuYWdlciIKK1NVTU1BUllfbGlib3BrZyA9ICJPcGVuIFBhY2thZ2UgTWFuYWdlciBsaWJyYXJ5IgorU0VDVElPTiA9ICJiYXNlIgorSE9NRVBBR0UgPSAiaHR0cDovL2NvZGUuZ29vZ2xlLmNvbS9wL29wa2cvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vY29kZS5nb29nbGUuY29tL3Avb3BrZy9pc3N1ZXMvbGlzdCIKK0xJQ0VOU0UgPSAiR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTRkNTVkNTEyYTliYTM2Y2FhOWI3ZGYwNzliYWUxOWYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL29wa2cuYztiZWdpbmxpbmU9NDtlbmRsaW5lPTE4O21kNT1kNjIwMGIwZjJiNDFkZWUyNzhhYTVmYWQzMzNlZWNhZSIKKworREVQRU5EUyA9ICJsaWJhcmNoaXZlIgorCitQRSA9ICIxIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9vcGtnLmNvbmYgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1vcGtnX2NvbmYtY3JlYXRlLW9wa2cubG9jay1pbi1ydW4taW5zdGVhZC1vZi12YXItcnVuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZDEzZTVkZmMxYzI1MzZmMGM3YjJlMTVmNzk1Mjc4ZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4Njg4Nzg1MmM0MzQ1N2VkZmZmOWQ4YjZkOTUyMGYzZjFjZGQ1NWYyNWViNjAwYTZlYjMxZTFjNGUxNTFlMTA2IgorCisjIFRoaXMgbmVlZHMgdG8gYmUgYmVmb3JlIHB0ZXN0IGluaGVyaXQsIG90aGVyd2lzZSBhbGwgcHRlc3QgZmlsZXMgZW5kIHBhY2thZ2VkCisjIGluIGxpYm9wa2cgcGFja2FnZSBpZiBPUEtHTElCRElSID09IGxpYmRpciwgYmVjYXVzZSBkZWZhdWx0CisjIFBURVNUX1BBVEggPz0gIiR7bGliZGlyfS8ke0JQTn0vcHRlc3QiCitQQUNLQUdFUyA9KyAibGlib3BrZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHB0ZXN0CisKK3RhcmdldF9sb2NhbHN0YXRlZGlyIDo9ICIke2xvY2Fsc3RhdGVkaXJ9IgorT1BLR0xJQkRJUiA/Pz0gIiR7dGFyZ2V0X2xvY2Fsc3RhdGVkaXJ9L2xpYiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImxpYnNvbHYiCisKK1BBQ0tBR0VDT05GSUdbZ3BnXSA9ICItLWVuYWJsZS1ncGcsLS1kaXNhYmxlLWdwZyxcCisgICAgZ251cGcgZ3BnbWUgbGliZ3BnLWVycm9yLFwKKyAgICAke0AgImdudXBnIiBpZiAoIm5hdGl2ZSIgaW4gZC5nZXRWYXIoIlBOIikpIGVsc2UgImdudXBnLWdwZyJ9XAorICAgICIKK1BBQ0tBR0VDT05GSUdbY3VybF0gPSAiLS1lbmFibGUtY3VybCwtLWRpc2FibGUtY3VybCxjdXJsIgorUEFDS0FHRUNPTkZJR1tzc2wtY3VybF0gPSAiLS1lbmFibGUtc3NsLWN1cmwsLS1kaXNhYmxlLXNzbC1jdXJsLGN1cmwgb3BlbnNzbCIKK1BBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS1lbmFibGUtb3BlbnNzbCwtLWRpc2FibGUtb3BlbnNzbCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tzaGEyNTZdID0gIi0tZW5hYmxlLXNoYTI1NiwtLWRpc2FibGUtc2hhMjU2IgorUEFDS0FHRUNPTkZJR1tsaWJzb2x2XSA9ICItLXdpdGgtbGlic29sdiwtLXdpdGhvdXQtbGlic29sdixsaWJzb2x2IgorCitFWFRSQV9PRUNPTkYgKz0gIiAtLWRpc2FibGUtcGF0aGZpbmRlciIKK0VYVFJBX09FQ09ORl9jbGFzcy1uYXRpdmUgPSAiLS1sb2NhbHN0YXRlZGlyPS8ke0Bvcy5wYXRoLnJlbHBhdGgoJyR7bG9jYWxzdGF0ZWRpcn0nLCAnJHtTVEFHSU5HX0RJUl9OQVRJVkV9Jyl9IC0tc3lzY29uZmRpcj0vJHtAb3MucGF0aC5yZWxwYXRoKCcke3N5c2NvbmZkaXJ9JywgJyR7U1RBR0lOR19ESVJfTkFUSVZFfScpfSIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vb3BrZworCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L29wa2cuY29uZiAke0R9JHtzeXNjb25mZGlyfS9vcGtnL29wa2cuY29uZgorCWVjaG8gIm9wdGlvbiBsaXN0c19kaXIgJHtPUEtHTElCRElSfS9vcGtnL2xpc3RzIiA+PiR7RH0ke3N5c2NvbmZkaXJ9L29wa2cvb3BrZy5jb25mCisKKwkjIFdlIG5lZWQgdG8gY3JlYXRlIHRoZSBsb2NrIGRpcmVjdG9yeQorCWluc3RhbGwgLWQgJHtEfSR7T1BLR0xJQkRJUn0vb3BrZworfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKwlzZWQgLWkgLWUgJy9AZWNobyAkXi9kJyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZQorCXNlZCAtaSAtZSAnL0BQWVRIT05QQVRIPS4gJChQWVRIT04pICReL2FcXHRAaWYgWyAiJCQ/IiAhPSAiMCIgXTt0aGVuIGVjaG8gIkZBSUw6IiReO2Vsc2UgZWNobyAiUEFTUzoiJF47ZmknICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlCit9CisKK1JERVBFTkRTXyR7UE59ID0gIiR7VklSVFVBTC1SVU5USU1FX3VwZGF0ZS1hbHRlcm5hdGl2ZXN9IG9wa2ctYXJjaC1jb25maWcgbGliYXJjaGl2ZSIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgYmludXRpbHMgcHl0aG9uMy1jb3JlIHB5dGhvbjMtY29tcHJlc3Npb24iCitSUkVQTEFDRVNfJHtQTn0gPSAib3BrZy1ub2dwZyBvcGtnLWNvbGxhdGVyYWwiCitSQ09ORkxJQ1RTXyR7UE59ID0gIm9wa2ctY29sbGF0ZXJhbCIKK1JQUk9WSURFU18ke1BOfSA9ICJvcGtnLWNvbGxhdGVyYWwiCisKK0ZJTEVTX2xpYm9wa2cgPSAiJHtsaWJkaXJ9Lyouc28uKiAke09QS0dMSUJESVJ9L29wa2cvIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L29wa2cvb3BrZy5jb25mIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvb3JjL29yY18wLjQuMjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODMxMzU3Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4yOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiT3B0aW1pc2VkIElubmVyIExvb3AgUnVudGltZSBDb21waWxlciIKLUhPTUVQQUdFID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL21vZHVsZXMvb3JjLmh0bWwiCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSAmIEJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE0MDBiZDlkMDllOGFmNTZiOWVjOTgyYjNkODU3OTdlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9vcmMvb3JjLSR7UFZ9LnRhci54eiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIyNTc5OTkxN2M3ZDMxYTg5MWQ1ZTMyYjgzYWQwOGY2ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0Zjg5MDFmOTE0NGI1ZWMxN2RmZmRiMzM1NDhiNWY0YzdmODA0OWIwZDEwMjNiZTM0NjJjZGQ2NGVjNWEzYWIyIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ3RrLWRvYwotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVBBQ0tBR0VTID0rICJvcmMtZXhhbXBsZXMiCi1QQUNLQUdFU19EWU5BTUlDICs9ICJebGlib3JjLS4qIgotRklMRVNfb3JjLWV4YW1wbGVzID0gIiR7bGliZGlyfS9vcmMvKiIKLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfScpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCByJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdPUkMgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCi19Ci0KLWRvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy1uYXRpdmUgKCkgewotICAgIHNlZCAtaSAtZSAncyMvdG1wIy4jZycgJHtTfS9vcmMvb3JjY29kZW1lbS5jCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4zMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL29yYy9vcmNfMC40LjMxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkNGRjMzEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9vcmMvb3JjXzAuNC4zMS5iYgpAQCAtMCwwICsxLDMwIEBACitTVU1NQVJZID0gIk9wdGltaXNlZCBJbm5lciBMb29wIFJ1bnRpbWUgQ29tcGlsZXIiCitIT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9tb2R1bGVzL29yYy5odG1sIgorTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UgJiBCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xNDAwYmQ5ZDA5ZThhZjU2YjllYzk4MmIzZDg1Nzk3ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvb3JjL29yYy0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiYjZiOTVhNDdlZmY3MTNlOTE4NzNlMmMyYjFhNWIzYWQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTBhYjVmMTBhNmE5YWU3YzNhNmI0MjE4MjQ2NTY0YzNiZjAwZDY1N2NiZGY1ODdlNmQzNGVjM2VmMDYxNjA3NSIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZ3RrLWRvYworCitHVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCitHVEtET0NfTUVTT05fRU5BQkxFX0ZMQUcgPSAiZW5hYmxlZCIKK0dUS0RPQ19NRVNPTl9ESVNBQkxFX0ZMQUcgPSAiZGlzYWJsZWQiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworUEFDS0FHRVMgPSsgIm9yYy1leGFtcGxlcyIKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWJvcmMtLioiCitGSUxFU19vcmMtZXhhbXBsZXMgPSAiJHtsaWJkaXJ9L29yYy8qIgorRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyoiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICBsaWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsIHInXmxpYiguKilcLnNvXC4qJywgJ2xpYiVzJywgJ09SQyAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKK30KKworZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisgICAgc2VkIC1pIC1lICdzIy90bXAjLiNnJyAke1N9L29yYy9vcmNjb2RlbWVtLmMKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoL3BhdGNoXzIuNy42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2hfMi43LjYuYmIKaW5kZXggNWQ3ZjU1Zi4uYjU4OTdiMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2hfMi43LjYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2gvcGF0Y2hfMi43LjYuYmIKQEAgLTIyLDMgKzIyLDYgQEAKIFBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3hhdHRyJywgZCl9IgogUEFDS0FHRUNPTkZJR1t4YXR0cl0gPSAiLS1lbmFibGUteGF0dHIsLS1kaXNhYmxlLXhhdHRyLGF0dHIsIgogCitQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBwYXRjaC1yZXBsYWNlbWVudC1uYXRpdmUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmXzAuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wYXRjaGVsZi9wYXRjaGVsZl8wLjEwLmJiCmluZGV4IDU4MDEwOGUuLmNjOTgzZTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BhdGNoZWxmL3BhdGNoZWxmXzAuMTAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGF0Y2hlbGYvcGF0Y2hlbGZfMC4xMC5iYgpAQCAtMSw0ICsxLDQgQEAKLVNSQ19VUkkgPSAiaHR0cDovL25peG9zLm9yZy9yZWxlYXNlcy8ke0JQTn0vJHtCUE59LSR7UFZ9LyR7QlBOfS0ke1BWfS50YXIuYnoyIFwKK1NSQ19VUkkgPSAiaHR0cHM6Ly9uaXhvcy5vcmcvcmVsZWFzZXMvJHtCUE59LyR7QlBOfS0ke1BWfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCiAgICAgICAgICAgIGZpbGU6Ly9oYW5kbGUtcmVhZC1vbmx5LWZpbGVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2ZpeC1hZGp1c3Rpbmctc3RhcnRQYWdlLnBhdGNoIFwKICAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy8wMDAxLUNoZWNrTGliLnBtLWRvLW5vdC1hdHRlbXB0LXRvLXJ1bi1hLWNyb3NzLWV4ZWN1dGFibGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzLzAwMDEtQ2hlY2tMaWIucG0tZG8tbm90LWF0dGVtcHQtdG8tcnVuLWEtY3Jvc3MtZXhlY3V0YWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNWJiZTc4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy8wMDAxLUNoZWNrTGliLnBtLWRvLW5vdC1hdHRlbXB0LXRvLXJ1bi1hLWNyb3NzLWV4ZWN1dGFibGUucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorRnJvbSBhMDMzYzllY2UxMmI2ZWVhZDQ4ZWVkNjNmMTA2Y2NkZWM2MTU5YjBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIwIERlYyAyMDE5IDE2OjI2OjU1ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIENoZWNrTGliLnBtOiBkbyBub3QgYXR0ZW1wdCB0byBydW4gYSBjcm9zcyBleGVjdXRhYmxlCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgaW5jL0RldmVsL0NoZWNrTGliLnBtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvaW5jL0RldmVsL0NoZWNrTGliLnBtIGIvaW5jL0RldmVsL0NoZWNrTGliLnBtCitpbmRleCAzNmE0NTFhLi5iMDRhY2MxIDEwMDY0NAorLS0tIGEvaW5jL0RldmVsL0NoZWNrTGliLnBtCisrKysgYi9pbmMvRGV2ZWwvQ2hlY2tMaWIucG0KK0BAIC0zMzAsNyArMzMwLDcgQEAgc3ViIGFzc2VydF9saWIgeworICAgICAgICAgcHVzaCBAbWlzc2luZywgJGxpYiBpZiAkcnYgIT0gMCB8fCAhLXggJGV4ZWZpbGU7CisgICAgICAgICBteSAkYWJzZXhlZmlsZSA9IEZpbGU6OlNwZWMtPnJlbDJhYnMoJGV4ZWZpbGUpOworICAgICAgICAgJGFic2V4ZWZpbGUgPSAnIicgLiAkYWJzZXhlZmlsZSAuICciJyBpZiAkYWJzZXhlZmlsZSA9fiBtL1xzLzsKKy0gICAgICAgIHB1c2ggQHdyb25ncmVzdWx0LCAkbGliIGlmICRydiA9PSAwICYmIC14ICRleGVmaWxlICYmIHN5c3RlbSgkYWJzZXhlZmlsZSkgIT0gMDsKKysgICAgICAgIHB1c2ggQHdyb25ncmVzdWx0LCAkbGliIGlmICRydiA9PSAwICYmIC14ICRleGVmaWxlICYmIDAgIT0gMDsKKyAgICAgICAgIHVubGluayAkb2ZpbGUgaWYgLWUgJG9maWxlOworICAgICAgICAgX2NsZWFudXBfZXhlKCRleGVmaWxlKTsKKyAgICAgfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy8wMDAxLVBBVENILXBlcmwtMTM0MTE3LUNsb3NlLURBVEEtaW4tbG9jX3Rvb2xzLnBsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy8wMDAxLVBBVENILXBlcmwtMTM0MTE3LUNsb3NlLURBVEEtaW4tbG9jX3Rvb2xzLnBsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjc5Y2FlMGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzLzAwMDEtUEFUQ0gtcGVybC0xMzQxMTctQ2xvc2UtREFUQS1pbi1sb2NfdG9vbHMucGwucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorRnJvbSBhMDRhNzVmMjBmMDNhYTA4Y2U4MTE4YjNiMGIzZjkzZWIzZTk5N2M1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUmljaGFyZCBMZWFjaCA8cmljaCtwZXJsQGh5cGhlbi1kYXNoLWh5cGhlbi5pbmZvPgorRGF0ZTogU3VuLCAxOSBNYXkgMjAxOSAyMDoxNjo0MSArMDAwMAorU3ViamVjdDogW1BBVENIXSBQQVRDSDogW3BlcmwgIzEzNDExN10gQ2xvc2UgREFUQSBpbiBsb2NfdG9vbHMucGwKKworVGhpcyBwcmV2ZW50cyB1bmV4cGVjdGVkIHRleHQgYW5kIGZpeGVzIHRlc3QgbGliL3dhcm5pbmdzLnQKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbYTA0YTc1ZjIwZjAzYWEwOGNlODExOGIzYjBiM2Y5M2ViM2U5OTdjNV0KKworU2lnbmVkLW9mZi1ieTogTWF0dGhldyBaZW5nIDxtYXR0aGV3LnplbmdAd2luZHJpdmVyLmNvbT4KKworLS0tCisgdC9sb2NfdG9vbHMucGwgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS90L2xvY190b29scy5wbCBiL3QvbG9jX3Rvb2xzLnBsCitpbmRleCBjNzZlMjkzODhhLi5iZWViZDk4ZDg4IDEwMDY0NAorLS0tIGEvdC9sb2NfdG9vbHMucGwKKysrKyBiL3QvbG9jX3Rvb2xzLnBsCitAQCAtNDIxLDcgKzQyMSw3IEBAIHN1YiBmaW5kX2xvY2FsZXMgKCQ7JCkgeworICAgICAgICAgfQorCisgICAgICAgICAjIFRoZSByZXN0IG9mIHRoZSBsb2NhbGVzIGFyZSBpbiB0aGlzIGZpbGUuCistICAgICAgICBwdXNoIEBEYXRhLCA8REFUQT47CisrICAgICAgICBwdXNoIEBEYXRhLCA8REFUQT47IGNsb3NlIERBVEE7CisKKyAgICAgICAgIGZvcmVhY2ggbXkgJGxpbmUgKEBEYXRhKSB7CisgICAgICAgICAgICAgbXkgKCRsb2NhbGVfbmFtZSwgJGxhbmd1YWdlX2NvZGVzLCAkY291bnRyeV9jb2RlcywgJGVuY29kaW5ncykgPQorLS0KKzIuMjUuMApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9kZXRlcm1pbmlzbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvZGV0ZXJtaW5pc20ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2NkZDUyYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvZGV0ZXJtaW5pc20ucGF0Y2gKQEAgLTAsMCArMSw2OCBAQAorRml4ZXMgdG8gbWFrZSB0aGUgcGVybCBidWlsZCByZXByb2R1Y2libGU6CisKK2EpIFJlbW92ZSB0aGUgXG4gZnJvbSBjb25maWd1cmVfYXR0ci5zaCBzaW5jZSBpdCBnZXRzIHF1b3RlZCBkaWZmZXJlbnRseSBkZXBlbmRpbmcgb24KKyAgIHdoZXRoZXIgdGhlIHNoZWxsIGlzIGJhc2ggb3IgZGFzaCB3aGljaCBjYW4gY2F1c2UgdGhlIHRlc3QgcmVzdWx0IHRvIGJlIGluY29ycmVjdC4KKyAgIFJlcG9ydGVkIHVwc3RyZWFtOiBodHRwczovL2dpdGh1Yi5jb20vYXJzdi9wZXJsLWNyb3NzL2lzc3Vlcy84NworCitiKSBTb3J0IHRoZSBvcmRlciBvZiB0aGUgbW9kdWxlIGxpc3RzIGZyb20gY29uZmlndXJlX21vZHMuc2ggc2luY2Ugb3RoZXJ3aXNlCisgICB0aGUgcmVzdWx0IGlzbid0IHRoZSBzYW1lIGxlYWRpbmcgdG8gbWFrZWZpbGUgZGlmZmVyZW5jZXMuCisgICBSZXBvcnRlZCB1cHN0cmVhbTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc3YvcGVybC1jcm9zcy9pc3N1ZXMvODgKKworYykgU29ydCB0aGUgRW5jb2RlOjpCeXRlIGJ5dGVfdC5mbm0gZmlsZSBvdXRwdXQgKGFuZCB0aGUgbWFrZWZpbGUgZGVwZW5kcyB3aGlsc3QgCisgICB0aGVyZSBmb3IgZ29vZCBtZWFzdXJlKQorICAgVGhpcyBuZWVkcyB0byBnbyB0byB1cHN0cmVhbSBwZXJsIChub3QgZG9uZSkKKworZCkgVXNlIGJhc2ggZm9yIHBlcmwtY3Jvc3MgY29uZmlndXJlIHNpbmNlIG90aGVyd2lzZSB0cm5sIGdldHMgc2V0IHRvICJcbiIgd2l0aCBiYXNoCisgICBhbmQgIiIgd2l0aCBkYXNoCisgICBSZXBvcnRlZCB1cHN0cmVhbTogaHR0cHM6Ly9naXRodWIuY29tL2Fyc3YvcGVybC1jcm9zcy9pc3N1ZXMvODcKKworUlAgMjAyMC8yLzcKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFs3NSUgc3VibWl0dGVkXQorU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmcKKworSW5kZXg6IHBlcmwtNS4zMC4xL2NuZi9jb25maWd1cmVfbW9kcy5zaAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBlcmwtNS4zMC4xLm9yaWcvY25mL2NvbmZpZ3VyZV9tb2RzLnNoCisrKysgcGVybC01LjMwLjEvY25mL2NvbmZpZ3VyZV9tb2RzLnNoCitAQCAtODIsNyArODIsNyBAQCBleHRvbmx5aWYoKSB7CisgfQorIAorIGRlZmluZXRyaW1zcGFjZXMoKSB7CistCXY9YGVjaG8gIiQyIiB8IHNlZCAtciAtZSAncy9ccysvIC9nJyAtZSAncy9eXHMrLy8nIC1lICdzL1xzKyQvLydgCisrCXY9YGVjaG8gIiQyIiB8IHNlZCAtciAtZSAncy9ccysvIC9nJyAtZSAncy9eXHMrLy8nIC1lICdzL1xzKyQvLycgfCB4YXJncyAtbjEgfCBMQU5HPUMgc29ydCB8IHhhcmdzYAorIAlkZWZpbmUgJDEgIiR2IgorIH0KKyAKK0luZGV4OiBwZXJsLTUuMzAuMS9jcGFuL0VuY29kZS9CeXRlL01ha2VmaWxlLlBMCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gcGVybC01LjMwLjEub3JpZy9jcGFuL0VuY29kZS9CeXRlL01ha2VmaWxlLlBMCisrKysgcGVybC01LjMwLjEvY3Bhbi9FbmNvZGUvQnl0ZS9NYWtlZmlsZS5QTAorQEAgLTE3MSw3ICsxNzEsNyBAQCBzdWIgcG9zdGFtYmxlCisgICAgIG15ICRsZW5ndGhzb2ZhciA9IGxlbmd0aCgkc3RyKTsKKyAgICAgbXkgJGNvbnRpbnVhdG9yID0gJyc7CisgICAgICRzdHIgLj0gIiR0YWJsZS5jIDogJGVuYzJ4cyBNYWtlZmlsZS5QTCI7CistICAgIGZvcmVhY2ggbXkgJGZpbGUgKEB7JHRhYmxlc3skdGFibGV9fSkKKysgICAgZm9yZWFjaCBteSAkZmlsZSAoc29ydCAoQHskdGFibGVzeyR0YWJsZX19KSkKKyAgICAgeworICAgICAgICAgJHN0ciAuPSAkY29udGludWF0b3IuJyAnLiRzZWxmLT5jYXRmaWxlKCRkaXIsJGZpbGUpOworICAgICAgICAgaWYgKCBsZW5ndGgoJHN0ciktJGxlbmd0aHNvZmFyID4gMTI4KiRudW1saW5lcyApCitAQCAtMTg5LDcgKzE4OSw3IEBAIHN1YiBwb3N0YW1ibGUKKyAgICAgICAgIHFxe1xuXHRcJChQRVJMKSAkcGxpYiAkZW5jMnhzICR1Y29wdHMgLW8gXCRcQCAtZiAkdGFibGUuZm5tXG5cbn07CisgICAgIG9wZW4gKEZJTEVMSVNULCAiPiR0YWJsZS5mbm0iKQorICAgICAgICAgfHwgZGllICJDb3VsZCBub3Qgb3BlbiAkdGFibGUuZm5tOiAkISI7CistICAgIGZvcmVhY2ggbXkgJGZpbGUgKEB7JHRhYmxlc3skdGFibGV9fSkKKysgICAgZm9yZWFjaCBteSAkZmlsZSAoc29ydCAoQHskdGFibGVzeyR0YWJsZX19KSkKKyAgICAgeworICAgICAgICAgcHJpbnQgRklMRUxJU1QgJHNlbGYtPmNhdGZpbGUoJGRpciwkZmlsZSkgLiAiXG4iOworICAgICB9CitJbmRleDogcGVybC01LjMwLjEvY25mL2NvbmZpZ3VyZQorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBlcmwtNS4zMC4xLm9yaWcvY25mL2NvbmZpZ3VyZQorKysrIHBlcmwtNS4zMC4xL2NuZi9jb25maWd1cmUKK0BAIC0xLDQgKzEsNCBAQAorLSMhL2Jpbi9zaAorKyMhL2Jpbi9iYXNoCisgCisgYmFzZT0kezAlLyp9OyB0ZXN0IC16ICIkYmFzZSIgJiYgYmFzZT0uCisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL2VuY29kZWZpeC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvZW5jb2RlZml4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5NmVkMGQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL2VuY29kZWZpeC5wYXRjaApAQCAtMCwwICsxLDIwIEBACitUaGUgY29kZSBpcyBlbmNvZGluZyBob3N0IGNvbXBpbGVyIHBhcmFtZXRlcnMgaW50byB0YXJnZXQgYnVpbGRzLiBBdm9pZAordGhpcyBmb3Igb3VyIHRhcmdldCBidWlsZHMgKHBhdGNoIGlzIHRhcmdldCBzcGVjaWZpYywgbm90IG5hdGl2ZSkKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtDcm9zcyBjb21waWxlIGhhY2tdCitSUCAyMDIwLzIvMTgKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCitJbmRleDogcGVybC01LjMwLjEvY3Bhbi9FbmNvZGUvYmluL2VuYzJ4cworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIHBlcmwtNS4zMC4xLm9yaWcvY3Bhbi9FbmNvZGUvYmluL2VuYzJ4cworKysrIHBlcmwtNS4zMC4xL2NwYW4vRW5jb2RlL2Jpbi9lbmMyeHMKK0BAIC0xOTUsNyArMTk1LDcgQEAgc3ViIGNvbXBpbGVyX2luZm8geworICAgICAjIGFib3ZlIGJlY29tZXMgZmFsc2UuCisgICAgIG15ICRzaXplZCAgPSAkZGVjbGFyYXRpb24gJiYgISgkY29tcGF0ICYmICEkcGVkYW50aWMpOworIAorLSAgICByZXR1cm4gKCRjcHAsICRzdGF0aWMsICRzaXplZCk7CisrICAgIHJldHVybiAoMCwgMSwgMSk7CisgfQorIAorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9maXgtc2V0Z3JvdXAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL2ZpeC1zZXRncm91cC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmI0OTBlNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL2ZpeC1zZXRncm91cC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVRlc3Qgc2NyaXB0IHRvIHJlcHJvZHVjZSB0aGUgcHJvYmxlbToKLQotIyEvdXNyL2Jpbi9lbnYgcGVybAotJCkgPSAiMiAyIjsKLXByaW50ICQhOwotCi1SZXN1bHQgZnJvbSBwZXJsIDUuMjggdW5kZXIgc3RyYWNlOgotCi1zZXRncm91cHMoMSwgWzJdKSAgICAgICAgICAgICAgICAgICAgICAgPSAwCi1zZXRyZXNnaWQoLTEsIDIsIC0xKSAgICAgICAgICAgICAgICAgICAgPSAwCi0KLVJlc3VsdCBmcm9tIHBlcmwgNS4zMCB1bmRlciBzdHJhY2U6Ci0KLXNldGdyb3VwcygxLCBbLTFdKSAgICAgICAgICAgICAgICAgICAgICA9IC0xIEVJTlZBTCAoSW52YWxpZCBhcmd1bWVudCkKLXNldHJlc2dpZCgtMSwgMiwgLTEpICAgICAgICAgICAgICAgICAgICA9IDAKLQotUGF0Y2ggd2hpY2ggYnJva2UgdGhpcyB1cHN0cmVhbToKLWh0dHBzOi8vcGVybDUuZ2l0LnBlcmwub3JnL3BlcmwuZ2l0L2NvbW1pdGRpZmYvNWQ0YTUyYjVjNjhhMTFiZmM5N2MyZTI0ODA2OTkzYjg0YTYxZWFkZQotCi1Jc3N1ZSBpcyB0aGF0IHRoZSBuZXcgZnVuY3Rpb24gY2hhbmdlcyB0aGUgZW5kcHRyIHRvIHRoZSBlbmQgb2YgdGhlCi1zY2FubmVkIG51bWJlciBhbmQgbmVlZHMgdG8gYmUgcmVzZXQgdG8gdGhlIGVuZCBvZiB0aGUgc3RyaW5nIGZvciAKLWVhY2ggaXRlcmF0aW9uIG9mIHRoZSBsb29wLgotCi1bWU9DVE8gIzEzMzkxXQotCi1SUAotMjAxOS82LzE0Ci1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IHBlcmwtNS4zMC4wL21nLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBwZXJsLTUuMzAuMC5vcmlnL21nLmMKLSsrKyBwZXJsLTUuMzAuMC9tZy5jCi1AQCAtMzE3OSw2ICszMjU2LDcgQEAgUGVybF9tYWdpY19zZXQocFRIWF8gU1YgKnN2LCBNQUdJQyAqbWcpCi0gCSAgICBjb25zdCBjaGFyICpwID0gU3ZQVl9jb25zdChzdiwgbGVuKTsKLSAgICAgICAgICAgICBHcm91cHNfdCAqZ2FyeSA9IE5VTEw7Ci0gICAgICAgICAgICAgY29uc3QgY2hhciogZW5kcHRyID0gcCArIGxlbjsKLSsgICAgICAgICAgICBjb25zdCBjaGFyKiByZWFsZW5kID0gcCArIGxlbjsKLSAgICAgICAgICAgICBVViB1djsKLSAjaWZkZWYgX1NDX05HUk9VUFNfTUFYCi0gICAgICAgICAgICBpbnQgbWF4Z3JwID0gc3lzY29uZihfU0NfTkdST1VQU19NQVgpOwotQEAgLTMyMDksNiArMzI4Nyw3IEBAIFBlcmxfbWFnaWNfc2V0KHBUSFhfIFNWICpzdiwgTUFHSUMgKm1nKQotICAgICAgICAgICAgICAgICAgICAgTmV3eChnYXJ5LCBpICsgMSwgR3JvdXBzX3QpOwotICAgICAgICAgICAgICAgICBlbHNlCi0gICAgICAgICAgICAgICAgICAgICBSZW5ldyhnYXJ5LCBpICsgMSwgR3JvdXBzX3QpOwotKyAgICAgICAgICAgICAgICBlbmRwdHIgPSByZWFsZW5kOwotICAgICAgICAgICAgICAgICBpZiAoZ3Jva19hdG9VVihwLCAmdXYsICZlbmRwdHIpKQotICAgICAgICAgICAgICAgICAgICAgZ2FyeVtpXSA9IChHcm91cHNfdCl1djsKLSAgICAgICAgICAgICAgICAgZWxzZSB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL3BlcmwtY29uZmlncG0tc3dpdGNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9wZXJsLWNvbmZpZ3BtLXN3aXRjaC5wYXRjaAppbmRleCAzYzJjZWNiLi44MGNlNGE2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL3BlcmwtY29uZmlncG0tc3dpdGNoLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvcGVybC1jb25maWdwbS1zd2l0Y2gucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDdmMzEzY2FjMzFjNTVjYmU2MmE0ZDBjZGZhODMyMWNjMDVhOGViM2EgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDUxMjBhY2FhMmJlNTc4N2Q5NjU3ZjZiOTFiYzhlZTNjMmQ2NjRmYmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFN1biwgMjcgTWF5IDIwMDcgMjE6MDQ6MTEgKzAwMDAKIFN1YmplY3Q6IFtQQVRDSF0gcGVybDogNS44LjcgLT4gNS44LjggKGZyb20gT0UpCkBAIC0yMCw3ICsyMCw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWdwbSBiL2NvbmZpZ3BtCi1pbmRleCAwOWM0YTNiLi42YTBhNjgwIDEwMDc1NQoraW5kZXggYzhkZThiZi4uMjA0NjEzYyAxMDA3NTUKIC0tLSBhL2NvbmZpZ3BtCiArKysgYi9jb25maWdwbQogQEAgLTY4Nyw3ICs2ODcsNyBAQCBzdWIgRkVUQ0ggewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9wZXJsLXJkZXBlbmRzLnR4dCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvZmlsZXMvcGVybC1yZGVwZW5kcy50eHQKaW5kZXggMzMxYTQ0ZC4uOWVjZmNlMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9maWxlcy9wZXJsLXJkZXBlbmRzLnR4dAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2ZpbGVzL3BlcmwtcmRlcGVuZHMudHh0CkBAIC0yMjE4LDYgKzIyMTgsNyBAQAogUkRFUEVORFNfcGVybC1tb2R1bGUtdGllLWhhc2gtbmFtZWRjYXB0dXJlICs9ICJwZXJsLW1vZHVsZS1zdHJpY3QiCiBSREVQRU5EU19wZXJsLW1vZHVsZS10aWUtaGFzaC1uYW1lZGNhcHR1cmUgKz0gInBlcmwtbW9kdWxlLXhzbG9hZGVyIgogUkRFUEVORFNfcGVybC1tb2R1bGUtdGllLWhhc2ggKz0gInBlcmwtbW9kdWxlLXdhcm5pbmdzLXJlZ2lzdGVyIgorUkRFUEVORFNfcGVybC1tb2R1bGUtdGllLWhhc2ggKz0gInBlcmwtbW9kdWxlLWNhcnAiCiBSREVQRU5EU19wZXJsLW1vZHVsZS10aWUtbWVtb2l6ZSArPSAicGVybC1tb2R1bGUtc3RyaWN0IgogUkRFUEVORFNfcGVybC1tb2R1bGUtdGllLW1lbW9pemUgKz0gInBlcmwtbW9kdWxlLXRpZS1oYXNoIgogUkRFUEVORFNfcGVybC1tb2R1bGUtdGllLXJlZmhhc2ggKz0gInBlcmwtbW9kdWxlLWNvbmZpZyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJlcnJvci1wZXJsXzAuMTcwMjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNmMWY2ZDYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJlcnJvci1wZXJsXzAuMTcwMjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1TVU1NQVJZID0gIkVycm9yIC0gRXJyb3IvZXhjZXB0aW9uIGhhbmRsaW5nIGluIGFuIE9PLWlzaCB3YXkiCi1ERVNDUklQVElPTiA9ICJUaGUgRXJyb3IgcGFja2FnZSBwcm92aWRlcyB0d28gaW50ZXJmYWNlcy4gRmlyc3RseSBcCi1FcnJvciBwcm92aWRlcyBhIHByb2NlZHVyYWwgaW50ZXJmYWNlIHRvIGV4Y2VwdGlvbiBoYW5kbGluZy4gXAotU2Vjb25kbHkgRXJyb3IgaXMgYSBiYXNlIGNsYXNzIGZvciBlcnJvcnMvZXhjZXB0aW9ucyB0aGF0IGNhbiBcCi1laXRoZXIgYmUgdGhyb3duLCBmb3Igc3Vic2VxdWVudCBjYXRjaCwgb3IgY2FuIHNpbXBseSBiZSByZWNvcmRlZC4iCi1IT01FUEFHRSA9ICJodHRwczovL2JpdGJ1Y2tldC5vcmcvc2hsb21pZi9wZXJsLWVycm9yLnBtIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OGYzNDk5ZDA5ZWU3NGEwNTBjMDMxOTM5MWZmOWQxMDAiCi0KLURFUEVORFMgKz0gInBlcmwiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgIHBlcmwtbW9kdWxlLWNhcnAgXAotICAgIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKLSAgICBwZXJsLW1vZHVsZS1zY2FsYXItdXRpbCBcCi0gICAgcGVybC1tb2R1bGUtb3ZlcmxvYWQgXAotICAgIHBlcmwtbW9kdWxlLXN0cmljdCBcCi0gICAgcGVybC1tb2R1bGUtdmFycyBcCi0gICAgcGVybC1tb2R1bGUtd2FybmluZ3MgXAotIgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKLSAgICBwZXJsLW1vZHVsZS1iYXNlIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLXNwZWMgXAotICAgIHBlcmwtbW9kdWxlLWlvLWhhbmRsZSBcCi0gICAgcGVybC1tb2R1bGUtaXBjLW9wZW4zIFwKLSAgICBwZXJsLW1vZHVsZS1saWIgXAotICAgIHBlcmwtbW9kdWxlLXRlc3QtbW9yZSBcCi0iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2NwYW4ubWV0YWNwYW4ub3JnL2F1dGhvcnMvaWQvUy9TSC9TSExPTUlGL0Vycm9yLSR7UFZ9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjRlZjliMjg5MGZiMTQ0ZDgwNDUyN2JhMzI1NzNkZDU2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA3YjJhYzgyNzVkZmEwNDE0NDc0NWE2YzE5MDBhNTk2MjgwZjg2MmI5N2QyMmJhYjBjNWNlMDI2ODJlYmQzYmUiCi0KLVMgPSAiJHtXT1JLRElSfS9FcnJvci0ke1BWfSIKLQotaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotCSMgdGVzdCByZXF1aXJlcyAiLVQiICh0YWludCkgY29tbWFuZCBsaW5lIG9wdGlvbgotCXJtIC1yZiAke0J9L3QvcG9kLWNvdmVyYWdlLnQKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmVycm9yLXBlcmxfMC4xNzAyOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGliZXJyb3ItcGVybF8wLjE3MDI5LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzODgwOGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYmVycm9yLXBlcmxfMC4xNzAyOS5iYgpAQCAtMCwwICsxLDQ3IEBACitTVU1NQVJZID0gIkVycm9yIC0gRXJyb3IvZXhjZXB0aW9uIGhhbmRsaW5nIGluIGFuIE9PLWlzaCB3YXkiCitERVNDUklQVElPTiA9ICJUaGUgRXJyb3IgcGFja2FnZSBwcm92aWRlcyB0d28gaW50ZXJmYWNlcy4gRmlyc3RseSBcCitFcnJvciBwcm92aWRlcyBhIHByb2NlZHVyYWwgaW50ZXJmYWNlIHRvIGV4Y2VwdGlvbiBoYW5kbGluZy4gXAorU2Vjb25kbHkgRXJyb3IgaXMgYSBiYXNlIGNsYXNzIGZvciBlcnJvcnMvZXhjZXB0aW9ucyB0aGF0IGNhbiBcCitlaXRoZXIgYmUgdGhyb3duLCBmb3Igc3Vic2VxdWVudCBjYXRjaCwgb3IgY2FuIHNpbXBseSBiZSByZWNvcmRlZC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2hsb21pZi9wZXJsLWVycm9yLnBtIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9OGYzNDk5ZDA5ZWU3NGEwNTBjMDMxOTM5MWZmOWQxMDAiCisKK0RFUEVORFMgKz0gInBlcmwiCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgIHBlcmwtbW9kdWxlLWNhcnAgXAorICAgIHBlcmwtbW9kdWxlLWV4cG9ydGVyIFwKKyAgICBwZXJsLW1vZHVsZS1zY2FsYXItdXRpbCBcCisgICAgcGVybC1tb2R1bGUtb3ZlcmxvYWQgXAorICAgIHBlcmwtbW9kdWxlLXN0cmljdCBcCisgICAgcGVybC1tb2R1bGUtdmFycyBcCisgICAgcGVybC1tb2R1bGUtd2FybmluZ3MgXAorIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiIFwKKyAgICBwZXJsLW1vZHVsZS1iYXNlIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLXNwZWMgXAorICAgIHBlcmwtbW9kdWxlLWlvLWhhbmRsZSBcCisgICAgcGVybC1tb2R1bGUtaXBjLW9wZW4zIFwKKyAgICBwZXJsLW1vZHVsZS1saWIgXAorICAgIHBlcmwtbW9kdWxlLXRlc3QtbW9yZSBcCisiCisKK1NSQ19VUkkgPSAiaHR0cDovL2NwYW4ubWV0YWNwYW4ub3JnL2F1dGhvcnMvaWQvUy9TSC9TSExPTUlGL0Vycm9yLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjY3MzJiMWM2MjA3ZTRhOWEzZTI5ODdjODgzNjgwMzlhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFhMjNmNzkxMzAzMmFlZDZkNGI2ODMyMTM3M2EzODk5Y2E2NjU5MGY0NzI3MzkxYTA5MWVjMTljOTViZjdhZGMiCisKK1MgPSAiJHtXT1JLRElSfS9FcnJvci0ke1BWfSIKKworaW5oZXJpdCBjcGFuIHB0ZXN0LXBlcmwKKworZG9faW5zdGFsbF9wcmVwZW5kKCkgeworCSMgdGVzdCByZXF1aXJlcyAiLVQiICh0YWludCkgY29tbWFuZCBsaW5lIG9wdGlvbgorCXJtIC1yZiAke0J9L3QvcG9kLWNvdmVyYWdlLnQKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYm1vZHVsZS1idWlsZC1wZXJsL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlibW9kdWxlLWJ1aWxkLXBlcmwvcnVuLXB0ZXN0CmluZGV4IDBkNjNkMTUuLmQ4MDI3ODEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlibW9kdWxlLWJ1aWxkLXBlcmwvcnVuLXB0ZXN0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlibW9kdWxlLWJ1aWxkLXBlcmwvcnVuLXB0ZXN0CkBAIC02LDggKzYsNiBAQAogICAgIGNhdCAkY2FzZS5vdXRwdXQKICAgICBpZiBbICRyZXQgLW5lIDAgXTsgdGhlbgogICAgICAgICBlY2hvICJGQUlMOiAke2Nhc2UlLnR9IgotICAgIGVsaWYgZ3JlcCAtaSAnU0tJUCcgJGNhc2Uub3V0cHV0OyB0aGVuCi0gICAgICAgIGVjaG8gIlNLSVA6ICR7Y2FzZSUudH0iCiAgICAgZWxzZQogICAgICAgICBlY2hvICJQQVNTOiAke2Nhc2UlLnR9IgogICAgIGZpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYm1vZHVsZS1idWlsZC1wZXJsXzAuNDIyOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlibW9kdWxlLWJ1aWxkLXBlcmxfMC40MjI5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzU5Zjg2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlibW9kdWxlLWJ1aWxkLXBlcmxfMC40MjI5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLVNVTU1BUlkgPSAiTW9kdWxlOjpCdWlsZCAtIEJ1aWxkIGFuZCBpbnN0YWxsIFBlcmwgbW9kdWxlcyIKLURFU0NSSVBUSU9OID0gIk1hbnkgUGVybCBkaXN0cmlidXRpb25zIHVzZSBhIEJ1aWxkLlBMIGZpbGUgaW5zdGVhZCBvZiBhIFwKLU1ha2VmaWxlLlBMIGZpbGUgdG8gZHJpdmUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24sIGJ1aWxkLCB0ZXN0IGFuZCBcCi1pbnN0YWxsYXRpb24uIFRyYWRpdGlvbmFsbHksIEJ1aWxkLlBMIHVzZXMgTW9kdWxlOjpCdWlsZCBhcyB0aGUgdW5kZXJseWluZyBcCi1idWlsZCBzeXN0ZW0uIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgc2ltcGxlLCBsaWdodHdlaWdodCwgZHJvcC1pbiByZXBsYWNlbWVudC4gXAotV2hlcmVhcyBNb2R1bGU6OkJ1aWxkIGhhcyBvdmVyIDYsNzAwIGxpbmVzIG9mIGNvZGU7IHRoaXMgbW9kdWxlIGhhcyBsZXNzIHRoYW4gXAotMTIwLCB5ZXQgc3VwcG9ydHMgdGhlIGZlYXR1cmVzIG5lZWRlZCBieSBtb3N0IGRpc3RyaWJ1dGlvbnMuIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vbWV0YWNwYW4ub3JnL3JlbGVhc2UvTW9kdWxlLUJ1aWxkIgotCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT05NDk7ZW5kbGluZT05NTQ7bWQ1PTYyNGMwNmRiNTZhMmFmNGQ3MGNmOWVkYzI5ZmNhZTFiIgotCi1TUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvTC9MRS9MRU9OVC9Nb2R1bGUtQnVpbGQtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjE0NDdkOWUwMmU2M2Y3YTE2NDM5ODY3ODlhOGYxYmE5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFmZTQ5MWE2Y2RhOTE0YjAxYmM4ZTU5MmZhYTJiNTQwNGU5ZjM1OTE1Y2ExNTMyMmY4ZjJhOGQ4ZjkwMDhjMTgiCi0KLVMgPSAiJHtXT1JLRElSfS9Nb2R1bGUtQnVpbGQtJHtQVn0iCi0KLWluaGVyaXQgY3Bhbl9idWlsZCBwdGVzdC1wZXJsCi0KLSMgRnJvbToKLSMgaHR0cHM6Ly9naXRodWIuY29tL3JlaHNhY2svbWV0YS1jcGFuL2Jsb2IvbWFzdGVyL3JlY2lwZXMtZGV2ZWwvbW9kdWxlLWJ1aWxkLXBlcmwvbW9kdWxlLWJ1aWxkLXBlcmxfMC40MjE2LmJiCi0jCi1kb19wYXRjaF9tb2R1bGVfYnVpbGQgKCkgewotICAgIGNkICR7U30KLSAgICBzZWQgLWkgLWUgJ3MsbXkgJGludGVycHJldGVyID0gJHNlbGYtPntwcm9wZXJ0aWVzfXtwZXJsfTssbXkgJGludGVycHJldGVyID0gIiR7YmluZGlyfS9wZXJsIjssZycgbGliL01vZHVsZS9CdWlsZC9CYXNlLnBtCi19Ci0KLWRvX3BhdGNoW3Bvc3RmdW5jc10gKz0gImRvX3BhdGNoX21vZHVsZV9idWlsZCIKLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAtciAke0J9L2luYyAke0R9JHtQVEVTVF9QQVRIfQotCWNwIC1yICR7Qn0vYmxpYiAke0R9JHtQVEVTVF9QQVRIfQotCWNob3duIC1SIHJvb3Q6cm9vdCAke0R9JHtQVEVTVF9QQVRIfQotfQotCi1SREVQRU5EU18ke1BOfSArPSAiIFwKLSAgICBwZXJsLW1vZHVsZS1jYXJwIFwKLSAgICBwZXJsLW1vZHVsZS1jcGFuIFwKLSAgICBwZXJsLW1vZHVsZS1jb25maWcgXAotICAgIHBlcmwtbW9kdWxlLWN3ZCBcCi0gICAgcGVybC1tb2R1bGUtZGF0YS1kdW1wZXIgXAotICAgIHBlcmwtbW9kdWxlLWVuY29kZSBcCi0gICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtY2J1aWxkZXIgXAotICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLWNvbW1hbmQgXAotICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLWluc3RhbGwgXAotICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLWluc3RhbGxlZCBcCi0gICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtbWtib290c3RyYXAgXAotICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLXBhY2tsaXN0IFwKLSAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1wYXJzZXhzIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLWJhc2VuYW1lIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLWNvbXBhcmUgXAotICAgIHBlcmwtbW9kdWxlLWZpbGUtY29weSBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1maW5kIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLWdsb2IgXAotICAgIHBlcmwtbW9kdWxlLWZpbGUtcGF0aCBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKLSAgICBwZXJsLW1vZHVsZS1maWxlLXNwZWMtZnVuY3Rpb25zIFwKLSAgICBwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyBcCi0gICAgcGVybC1tb2R1bGUtbWV0YWRhdGEgXAotICAgIHBlcmwtbW9kdWxlLXBlcmwtb3N0eXBlIFwKLSAgICBwZXJsLW1vZHVsZS1wb2QtbWFuIFwKLSAgICBwZXJsLW1vZHVsZS10YXAtaGFybmVzcyBcCi0gICAgcGVybC1tb2R1bGUtdGV4dC1hYmJyZXYgXAotICAgIHBlcmwtbW9kdWxlLXRleHQtcGFyc2V3b3JkcyBcCi0gICAgcGVybC1tb2R1bGUtdXRmOCBcCi0iCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICIgXAotICAgIGdjYyBcCi0gICAgbWFrZSBcCi0gICAgcGVybC1tb2R1bGUtYmxpYiBcCi0gICAgcGVybC1tb2R1bGUtZmlsZS10ZW1wIFwKLSAgICBwZXJsLW1vZHVsZS1saWIgXAotICAgIHBlcmwtbW9kdWxlLXBlcmxpbyBcCi0gICAgcGVybC1tb2R1bGUtcGVybGlvLWVuY29kaW5nIFwKLSAgICBwZXJsLW1vZHVsZS1wb2QtdGV4dCBcCi0gICAgcGVybC1tb2R1bGUtdGFwLWhhcm5lc3MtZW52IFwKLSAgICBwZXJsLW1vZHVsZS10YXAtcGFyc2VyIFwKLSAgICBwZXJsLW1vZHVsZS10YXAtcGFyc2VyLXNjaGVkdWxlciBcCi0gICAgcGVybC1tb2R1bGUtdGVzdC1oYXJuZXNzIFwKLSAgICBwZXJsLW1vZHVsZS10ZXN0LW1vcmUgXAotIgotCi1SUFJPVklERVNfJHtQTn0gKz0gIlwKLSAgICBsaWJtb2R1bGUtYnVpbGQtYmFzZS1wZXJsIFwKLSAgICBsaWJtb2R1bGUtYnVpbGQtY29tcGF0LXBlcmwgXAotICAgIGxpYm1vZHVsZS1idWlsZC1jb25maWctcGVybCBcCi0gICAgbGlibW9kdWxlLWJ1aWxkLWNvb2tib29rLXBlcmwgXAotICAgIGxpYm1vZHVsZS1idWlsZC1kdW1wZXItcGVybCBcCi0gICAgbGlibW9kdWxlLWJ1aWxkLW5vdGVzLXBlcmwgXAotICAgIGxpYm1vZHVsZS1idWlsZC1wcG1ha2VyLXBlcmwgXAotICAgIGxpYm1vZHVsZS1idWlsZC1wbGF0Zm9ybS1kZWZhdWx0LXBlcmwgXAotICAgIGxpYm1vZHVsZS1idWlsZC1wbGF0Zm9ybS11bml4LXBlcmwgXAotICAgIGxpYm1vZHVsZS1idWlsZC1wb2RwYXJzZXItcGVybCBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJtb2R1bGUtYnVpbGQtcGVybF8wLjQyMzEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL2xpYm1vZHVsZS1idWlsZC1wZXJsXzAuNDIzMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNmZkN2IxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJtb2R1bGUtYnVpbGQtcGVybF8wLjQyMzEuYmIKQEAgLTAsMCArMSwxMjMgQEAKK1NVTU1BUlkgPSAiTW9kdWxlOjpCdWlsZCAtIEJ1aWxkIGFuZCBpbnN0YWxsIFBlcmwgbW9kdWxlcyIKK0RFU0NSSVBUSU9OID0gIk1hbnkgUGVybCBkaXN0cmlidXRpb25zIHVzZSBhIEJ1aWxkLlBMIGZpbGUgaW5zdGVhZCBvZiBhIFwKK01ha2VmaWxlLlBMIGZpbGUgdG8gZHJpdmUgZGlzdHJpYnV0aW9uIGNvbmZpZ3VyYXRpb24sIGJ1aWxkLCB0ZXN0IGFuZCBcCitpbnN0YWxsYXRpb24uIFRyYWRpdGlvbmFsbHksIEJ1aWxkLlBMIHVzZXMgTW9kdWxlOjpCdWlsZCBhcyB0aGUgdW5kZXJseWluZyBcCitidWlsZCBzeXN0ZW0uIFRoaXMgbW9kdWxlIHByb3ZpZGVzIGEgc2ltcGxlLCBsaWdodHdlaWdodCwgZHJvcC1pbiByZXBsYWNlbWVudC4gXAorV2hlcmVhcyBNb2R1bGU6OkJ1aWxkIGhhcyBvdmVyIDYsNzAwIGxpbmVzIG9mIGNvZGU7IHRoaXMgbW9kdWxlIGhhcyBsZXNzIHRoYW4gXAorMTIwLCB5ZXQgc3VwcG9ydHMgdGhlIGZlYXR1cmVzIG5lZWRlZCBieSBtb3N0IGRpc3RyaWJ1dGlvbnMuIgorCitTRUNUSU9OID0gImxpYnMiCisKK0hPTUVQQUdFID0gImh0dHBzOi8vbWV0YWNwYW4ub3JnL3JlbGVhc2UvTW9kdWxlLUJ1aWxkIgorCitMSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT05NDk7ZW5kbGluZT05NTQ7bWQ1PTYyNGMwNmRiNTZhMmFmNGQ3MGNmOWVkYzI5ZmNhZTFiIgorCitTUkNfVVJJID0gIiR7Q1BBTl9NSVJST1J9L2F1dGhvcnMvaWQvTC9MRS9MRU9OVC9Nb2R1bGUtQnVpbGQtJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNjZiMTkzZTQ2MWQ3ZGZlMWVjYTE3YTEzOTM1MzAwMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZTBmNGM2OTJjMTc0MGMxYWM4NGVhMTRkN2VhM2Q4YmM3OThiMmZiMjZjMDk4NzcyMjllMDRmNDMwYjJiNzE3IgorCitTID0gIiR7V09SS0RJUn0vTW9kdWxlLUJ1aWxkLSR7UFZ9IgorCitpbmhlcml0IGNwYW5fYnVpbGQgcHRlc3QtcGVybAorCisjIEZyb206CisjIGh0dHBzOi8vZ2l0aHViLmNvbS9yZWhzYWNrL21ldGEtY3Bhbi9ibG9iL21hc3Rlci9yZWNpcGVzLWRldmVsL21vZHVsZS1idWlsZC1wZXJsL21vZHVsZS1idWlsZC1wZXJsXzAuNDIxNi5iYgorIworZG9fcGF0Y2hfbW9kdWxlX2J1aWxkICgpIHsKKyAgICBjZCAke1N9CisgICAgc2VkIC1pIC1lICdzLG15ICRpbnRlcnByZXRlciA9ICRzZWxmLT57cHJvcGVydGllc317cGVybH07LG15ICRpbnRlcnByZXRlciA9ICIke2JpbmRpcn0vcGVybCI7LGcnIGxpYi9Nb2R1bGUvQnVpbGQvQmFzZS5wbQorfQorCitkb19wYXRjaFtwb3N0ZnVuY3NdICs9ICJkb19wYXRjaF9tb2R1bGVfYnVpbGQiCisKK0VYVFJBX0NQQU5fQlVJTERfRkxBR1MgPSAiLS1jcmVhdGVfcGFja2xpc3Q9MCIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICAgICBybSAtcmYgJHtEfSR7ZG9jZGlyfS9wZXJsL2h0bWwKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAtciAke0J9L2luYyAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yICR7Qn0vYmxpYiAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yICR7Qn0vX2J1aWxkICR7RH0ke1BURVNUX1BBVEh9CisJY3AgLXIgJHtCfS9saWIgJHtEfSR7UFRFU1RfUEFUSH0KKwljaG93biAtUiByb290OnJvb3QgJHtEfSR7UFRFU1RfUEFUSH0KKwlzZWQgLWkgLWUgInMsJ3BlcmwnID0+IC4qLCdwZXJsJyA9PiAnL3Vzci9iaW4vcGVybCdcLCxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSX05BVElWRX0vcGVybC1uYXRpdmUvXC5cLiwke2JpbmRpcn0vLGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLCR7U30sLGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLCR7RH0sLGciIFwKKyAgICAgICAgICAgICAgICR7RH0ke1BURVNUX1BBVEh9L19idWlsZC9idWlsZF9wYXJhbXMgXAorICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vX2J1aWxkL3J1bnRpbWVfcGFyYW1zCisgICAgICAgIHJtIC1yZiAke0R9JHtQVEVTVF9QQVRIfS9ibGliL2xpYmh0bWwvc2l0ZS9saWIvTW9kdWxlLworICAgICAgICBybSAtcmYgJHtEfSR7UFRFU1RfUEFUSH0vX2J1aWxkL21hZ2ljbnVtCit9CisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgIHBlcmwtbW9kdWxlLWNhcnAgXAorICAgIHBlcmwtbW9kdWxlLWNwYW4gXAorICAgIHBlcmwtbW9kdWxlLWNvbmZpZyBcCisgICAgcGVybC1tb2R1bGUtY3dkIFwKKyAgICBwZXJsLW1vZHVsZS1kYXRhLWR1bXBlciBcCisgICAgcGVybC1tb2R1bGUtZW5jb2RlIFwKKyAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1jYnVpbGRlciBcCisgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtY29tbWFuZCBcCisgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtaW5zdGFsbCBcCisgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtaW5zdGFsbGVkIFwKKyAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1ta2Jvb3RzdHJhcCBcCisgICAgcGVybC1tb2R1bGUtZXh0dXRpbHMtcGFja2xpc3QgXAorICAgIHBlcmwtbW9kdWxlLWV4dHV0aWxzLXBhcnNleHMgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtYmFzZW5hbWUgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtY29tcGFyZSBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1jb3B5IFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLWZpbmQgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtZ2xvYiBcCisgICAgcGVybC1tb2R1bGUtZmlsZS1wYXRoIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLXNwZWMgXAorICAgIHBlcmwtbW9kdWxlLWZpbGUtc3BlYy1mdW5jdGlvbnMgXAorICAgIHBlcmwtbW9kdWxlLWdldG9wdC1sb25nIFwKKyAgICBwZXJsLW1vZHVsZS1tZXRhZGF0YSBcCisgICAgcGVybC1tb2R1bGUtcGVybC1vc3R5cGUgXAorICAgIHBlcmwtbW9kdWxlLXBvZC1tYW4gXAorICAgIHBlcmwtbW9kdWxlLXRhcC1oYXJuZXNzIFwKKyAgICBwZXJsLW1vZHVsZS10ZXh0LWFiYnJldiBcCisgICAgcGVybC1tb2R1bGUtdGV4dC1wYXJzZXdvcmRzIFwKKyAgICBwZXJsLW1vZHVsZS11dGY4IFwKKyIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIiBcCisgICAgcGFja2FnZWdyb3VwLWNvcmUtYnVpbGRlc3NlbnRpYWwgXAorICAgIHBlcmwtZGV2IFwKKyAgICBwZXJsLW1vZHVsZS1ibGliIFwKKyAgICBwZXJsLW1vZHVsZS1leHR1dGlscy1jb21tYW5kLW1tIFwKKyAgICBwZXJsLW1vZHVsZS1maWxlLXRlbXAgXAorICAgIHBlcmwtbW9kdWxlLWxpYiBcCisgICAgcGVybC1tb2R1bGUtcGVybGlvIFwKKyAgICBwZXJsLW1vZHVsZS1wZXJsaW8tZW5jb2RpbmcgXAorICAgIHBlcmwtbW9kdWxlLXBvZC10ZXh0IFwKKyAgICBwZXJsLW1vZHVsZS10YXAtaGFybmVzcy1lbnYgXAorICAgIHBlcmwtbW9kdWxlLXRhcC1wYXJzZXIgXAorICAgIHBlcmwtbW9kdWxlLXRhcC1wYXJzZXItc2NoZWR1bGVyIFwKKyAgICBwZXJsLW1vZHVsZS10ZXN0LWhhcm5lc3MgXAorICAgIHBlcmwtbW9kdWxlLXRlc3QtbW9yZSBcCisiCisKK1JQUk9WSURFU18ke1BOfSArPSAiXAorICAgIGxpYm1vZHVsZS1idWlsZC1iYXNlLXBlcmwgXAorICAgIGxpYm1vZHVsZS1idWlsZC1jb21wYXQtcGVybCBcCisgICAgbGlibW9kdWxlLWJ1aWxkLWNvbmZpZy1wZXJsIFwKKyAgICBsaWJtb2R1bGUtYnVpbGQtY29va2Jvb2stcGVybCBcCisgICAgbGlibW9kdWxlLWJ1aWxkLWR1bXBlci1wZXJsIFwKKyAgICBsaWJtb2R1bGUtYnVpbGQtbm90ZXMtcGVybCBcCisgICAgbGlibW9kdWxlLWJ1aWxkLXBwbWFrZXItcGVybCBcCisgICAgbGlibW9kdWxlLWJ1aWxkLXBsYXRmb3JtLWRlZmF1bHQtcGVybCBcCisgICAgbGlibW9kdWxlLWJ1aWxkLXBsYXRmb3JtLXVuaXgtcGVybCBcCisgICAgbGlibW9kdWxlLWJ1aWxkLXBvZHBhcnNlci1wZXJsIFwKKyIKKworIyB0L3hzLnQgUkRFUEVORFMgb24gIkVYVEVSTi5oIiBwcm92aWRlZCBieSBwZXJsLWRldgorSU5TQU5FX1NLSVBfJHtQTn0tcHRlc3QgPSAiZGV2LWRlcHMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGFyc2VyLXBlcmxfMi40NC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdjOWI3NjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGFyc2VyLXBlcmxfMi40NC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLVNVTU1BUlkgPSAiWE1MOjpQYXJzZXIgLSBBIHBlcmwgbW9kdWxlIGZvciBwYXJzaW5nIFhNTCBkb2N1bWVudHMiCi1IT01FUEFHRSA9ICJodHRwczovL2xpYmV4cGF0LmdpdGh1Yi5pby8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkFydGlzdGljLTEuMCB8IEdQTC0xLjArIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO2JlZ2lubGluZT0yO2VuZGxpbmU9NjttZDU9Yzg3NjdkNzUxNjIyOWYwN2IyNmU0MmQxY2Y4YjUxZjEiCi0KLURFUEVORFMgKz0gImV4cGF0IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuY3Bhbi5vcmcvbW9kdWxlcy9ieS1tb2R1bGUvWE1ML1hNTC1QYXJzZXItJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImFmNDgxM2ZlMzk1MjM2MjQ1MTIwMWNlZDZmYmNlMzc5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFhZTlkMDdlZTljMzUzMjZiM2Q5YWFkNTZlYWU3MWE2NzMwYTczYTExNmI5ZmU5ZThhNDc1OGI3Y2MwMzMyMTYiCi0KLVMgPSAiJHtXT1JLRElSfS9YTUwtUGFyc2VyLSR7UFZ9IgotCi1FWFRSQV9DUEFORkxBR1MgPSAiRVhQQVRMSUJQQVRIPSR7U1RBR0lOR19MSUJESVJ9IEVYUEFUSU5DUEFUSD0ke1NUQUdJTkdfSU5DRElSfSBDQz0nJHtDQ30nIExEPScke0NDTER9JyBGVUxMX0FSPScke0FSfSciCi0KLWluaGVyaXQgY3BhbiBwdGVzdC1wZXJsCi0KLSMgZml4IHVwIHN1YiBNYWtlTWFrZXIgcHJvamVjdCBhcyBhcmd1bWVudHMgZG9uJ3QgZ2V0IHByb3BhZ2F0ZWQgdGhvdWdoCi0jIHNlZSBodHRwczovL3J0LmNwYW4ub3JnL1B1YmxpYy9CdWcvRGlzcGxheS5odG1sP2lkPTI4NjMyCi1kb19jb25maWd1cmVfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQlzZWQgLUUgXAotCSAgICAtZSAnczotTCR7U1RBR0lOR19MSUJESVJ9OjpnJyAtZSAnczotSSR7U1RBR0lOR19JTkNESVJ9OjpnJyBcCi0JICAgIC1pIE1ha2VmaWxlIEV4cGF0L01ha2VmaWxlCi19Ci0KLWRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7Ci0Jc2VkIC1lICdzOi0tc3lzcm9vdD0uKlwoXHNcfCRcKTotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IDpnJyBcCi0JICAgIC1pIE1ha2VmaWxlIEV4cGF0L01ha2VmaWxlCi0Jc2VkICdzOl5GVUxMX0FSID0gLio6RlVMTF9BUiA9ICR7QVJ9OmcnIC1pIEV4cGF0L01ha2VmaWxlCi0JIyBtYWtlIHN1cmUgdGhlc2UgdHdvIGRvIG5vdCBidWlsZCBpbiBwYXJhbGxlbAotCXNlZCAncyFeJChJTlNUX0RZTkFNSUMpOiEkKElOU1RfRFlOQU1JQyk6ICQoQk9PVFNUUkFQKSEnIC1pIEV4cGF0L01ha2VmaWxlCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0JZXhwb3J0IExJQkM9IiQoZmluZCAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vIC1uYW1lICdsaWJjLSouc28nKSIKLQljcGFuX2RvX2NvbXBpbGUKLX0KLQotZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUoKSB7Ci0JY3Bhbl9kb19jb21waWxlCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0Jc2VkIC1pIC1lICJzOi91c3IvbG9jYWwvYmluL3Blcmw6L3Vzci9iaW4vcGVybDpnIiAke0J9L3NhbXBsZXMveG1sc3RhdHMKLQlzZWQgLWkgLWUgInM6L3Vzci9sb2NhbC9iaW4vcGVybDovdXNyL2Jpbi9wZXJsOmciICR7Qn0vc2FtcGxlcy94bWxmaWx0ZXIKLQlzZWQgLWkgLWUgInM6L3Vzci9sb2NhbC9iaW4vcGVybDovdXNyL2Jpbi9wZXJsOmciICR7Qn0vc2FtcGxlcy94bWxjb21tZW50cwotCXNlZCAtaSAtZSAiczovdXNyL2xvY2FsL2Jpbi9wZXJsOi91c3IvYmluL3Blcmw6ZyIgJHtCfS9zYW1wbGVzL2Nhbm9uaWNhbAotCWNwIC1yICR7Qn0vc2FtcGxlcyAke0R9JHtQVEVTVF9QQVRIfQotCWNob3duIC1SIHJvb3Q6cm9vdCAke0R9JHtQVEVTVF9QQVRIfS9zYW1wbGVzCi19Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJwZXJsLW1vZHVsZS1maWxlaGFuZGxlIHBlcmwtbW9kdWxlLWlmIHBlcmwtbW9kdWxlLXRlc3QgcGVybC1tb2R1bGUtdGVzdC1tb3JlIgotCi1CQkNMQVNTRVhURU5EPSJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9saWJ4bWwtcGFyc2VyLXBlcmxfMi40Ni5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMxNTRiYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvbGlieG1sLXBhcnNlci1wZXJsXzIuNDYuYmIKQEAgLTAsMCArMSw1OCBAQAorU1VNTUFSWSA9ICJYTUw6OlBhcnNlciAtIEEgcGVybCBtb2R1bGUgZm9yIHBhcnNpbmcgWE1MIGRvY3VtZW50cyIKK0hPTUVQQUdFID0gImh0dHBzOi8vbGliZXhwYXQuZ2l0aHViLmlvLyIKK1NFQ1RJT04gPSAibGlicyIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9QYXJzZXIucG07YmVnaW5saW5lPTE7ZW5kbGluZT03O21kNT1kMTJjYzc3OGM4MGZjNGM1MThmMGU1ZGVlMjlmZDVmYiIKKworREVQRU5EUyArPSAiZXhwYXQiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5jcGFuLm9yZy9tb2R1bGVzL2J5LW1vZHVsZS9YTUwvWE1MLVBhcnNlci0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcHRlc3QtcGVybC9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1DaGVja0xpYi5wbS1kby1ub3QtYXR0ZW1wdC10by1ydW4tYS1jcm9zcy1leGVjdXRhYmxlLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjgwYmIxOGE4ZTYyNDBmY2Y3ZWMyZjdiNTc2MDFjMTcwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQzMzEzMzI0OTFjNTFjY2NmYjRjYjk0ZmZjNDRmOWNkNzMzNzhlNjE4NDk4ZDRhMzdkZjllMDQzNjYxYzUxNWQiCisKK1MgPSAiJHtXT1JLRElSfS9YTUwtUGFyc2VyLSR7UFZ9IgorCitFWFRSQV9DUEFORkxBR1MgPSAiRVhQQVRMSUJQQVRIPSR7U1RBR0lOR19MSUJESVJ9IEVYUEFUSU5DUEFUSD0ke1NUQUdJTkdfSU5DRElSfSBDQz0nJHtDQ30nIExEPScke0NDTER9JyBGVUxMX0FSPScke0FSfSciCisKK2luaGVyaXQgY3BhbiBwdGVzdC1wZXJsCisKKyMgZml4IHVwIHN1YiBNYWtlTWFrZXIgcHJvamVjdCBhcyBhcmd1bWVudHMgZG9uJ3QgZ2V0IHByb3BhZ2F0ZWQgdGhvdWdoCisjIHNlZSBodHRwczovL3J0LmNwYW4ub3JnL1B1YmxpYy9CdWcvRGlzcGxheS5odG1sP2lkPTI4NjMyCitkb19jb25maWd1cmVfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKwlzZWQgLUUgXAorCSAgICAtZSAnczotTCR7U1RBR0lOR19MSUJESVJ9OjpnJyAtZSAnczotSSR7U1RBR0lOR19JTkNESVJ9OjpnJyBcCisJICAgIC1pIE1ha2VmaWxlIEV4cGF0L01ha2VmaWxlCit9CisKK2RvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7CisJc2VkIC1lICdzOi0tc3lzcm9vdD0uKlwoXHNcfCRcKTotLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9IDpnJyBcCisJICAgIC1pIE1ha2VmaWxlIEV4cGF0L01ha2VmaWxlCisJc2VkICdzOl5GVUxMX0FSID0gLio6RlVMTF9BUiA9ICR7QVJ9OmcnIC1pIEV4cGF0L01ha2VmaWxlCisJIyBtYWtlIHN1cmUgdGhlc2UgdHdvIGRvIG5vdCBidWlsZCBpbiBwYXJhbGxlbAorCXNlZCAncyFeJChJTlNUX0RZTkFNSUMpOiEkKElOU1RfRFlOQU1JQyk6ICQoQk9PVFNUUkFQKSEnIC1pIEV4cGF0L01ha2VmaWxlCit9CisKK2RvX2NvbXBpbGUoKSB7CisJZXhwb3J0IExJQkM9IiQoZmluZCAke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0vIC1uYW1lICdsaWJjLSouc28nKSIKKwljcGFuX2RvX2NvbXBpbGUKK30KKworZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUoKSB7CisJY3Bhbl9kb19jb21waWxlCit9CisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJc2VkIC1pIC1lICJzOi91c3IvbG9jYWwvYmluL3Blcmw6L3Vzci9iaW4vcGVybDpnIiAke0J9L3NhbXBsZXMveG1sc3RhdHMKKwlzZWQgLWkgLWUgInM6L3Vzci9sb2NhbC9iaW4vcGVybDovdXNyL2Jpbi9wZXJsOmciICR7Qn0vc2FtcGxlcy94bWxmaWx0ZXIKKwlzZWQgLWkgLWUgInM6L3Vzci9sb2NhbC9iaW4vcGVybDovdXNyL2Jpbi9wZXJsOmciICR7Qn0vc2FtcGxlcy94bWxjb21tZW50cworCXNlZCAtaSAtZSAiczovdXNyL2xvY2FsL2Jpbi9wZXJsOi91c3IvYmluL3Blcmw6ZyIgJHtCfS9zYW1wbGVzL2Nhbm9uaWNhbAorCWNwIC1yICR7Qn0vc2FtcGxlcyAke0R9JHtQVEVTVF9QQVRIfQorCWNob3duIC1SIHJvb3Q6cm9vdCAke0R9JHtQVEVTVF9QQVRIfS9zYW1wbGVzCit9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJwZXJsLW1vZHVsZS1maWxlaGFuZGxlIHBlcmwtbW9kdWxlLWlmIHBlcmwtbW9kdWxlLXRlc3QgcGVybC1tb2R1bGUtdGVzdC1tb3JlIgorCitCQkNMQVNTRVhURU5EPSJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLXB0ZXN0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybC1wdGVzdC5pbmMKaW5kZXggNzE1MjA1Ny4uOThlMzM2MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsLXB0ZXN0LmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmwtcHRlc3QuaW5jCkBAIC00Miw2ICs0Miw5IEBACiAKIAkgIyBSZW1vdmUgYSB1c2VsZXNzIHRpbWVzdGFtcC4uLgogCSBzZWQgLWkgLWUgJy9BdXRvZ2VuZXJhdGVkIHN0YXJ0aW5nIG9uL2QnICR7RH0ke1BURVNUX1BBVEh9L2xpYi91bmljb3JlL21rdGFibGVzLmxzdAorCisJICMgUmVtb3ZlIGZpbGVzIHdpdGggaG9zdC1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGZvciBidWlsZGluZyBuYXRpdmUgYmluYXJpZXMKKwkgcm0gJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUuY29uZmlnICR7RH0ke1BURVNUX1BBVEh9L3hjb25maWcuaCAke0R9JHtQVEVTVF9QQVRIfS94Y29uZmlnLnNoCiB9CiAKIHB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMzAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BlcmwvcGVybF81LjMwLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkOTA2YTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMzAuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzNyArMCwwIEBACi1TVU1NQVJZID0gIlBlcmwgc2NyaXB0aW5nIGxhbmd1YWdlIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wZXJsLm9yZy8iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJBcnRpc3RpYy0xLjAgfCBHUEwtMS4wKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NvcHlpbmc7bWQ1PTViMTIyYTM2ZDBmNmRjNTUyNzlhMGViYzY5ZjNjNjBiIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0FydGlzdGljO21kNT03MWE0ZDVkOWFjYzE4YzA5NTJhNmRmMjIxOGJiNjhkYSBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3LmNwYW4ub3JnL3NyYy81LjAvcGVybC0ke1BWfS50YXIuZ3o7bmFtZT1wZXJsIFwKLSAgICAgICAgICAgaHR0cHM6Ly9naXRodWIuY29tL2Fyc3YvcGVybC1jcm9zcy9yZWxlYXNlcy9kb3dubG9hZC8xLjMvcGVybC1jcm9zcy0xLjMudGFyLmd6O25hbWU9cGVybC1jcm9zcyBcCi0gICAgICAgICAgIGZpbGU6Ly9wZXJsLXJkZXBlbmRzLnR4dCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZV90b29sLnNoLWRvLW5vdC1xdW90ZS10aGUtYXJndW1lbnQtdG8tY29tbWEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1FeHRVdGlscy1NYWtlTWFrZXItYWRkLUxERkxBR1Mtd2hlbi1saW5raW5nLWJpbmFyeS1tLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtU29tZWhvdy10aGlzLW1vZHVsZS1icmVha3MtdGhyb3VnaC10aGUtcGVybC13cmFwcGVyLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9lcnJub192ZXIuZGlmZiBcCi0gICAgICAgICAgIGZpbGU6Ly9uYXRpdmUtcGVybGluYy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXBlcmwtY3Jvc3MtYWRkLUxERkxBR1Mtd2hlbi1saW5raW5nLWxpYnBlcmwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGVybC1keW5sb2FkZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmVfcGF0aC5zaC1kby1ub3QtaGFyZGNvZGUtcHJlZml4LWxpYi1hcy1saWJyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1zZXRncm91cC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWVuYzJ4cy1BZGQtZW52aXJvbm1lbnQtdmFyaWFibGUtdG8tc3VwcHJlc3MtY29tbWVudHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1Db25zdGFudC1GaXgtdXAtc2hlYmFuZy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgXAotICAgICAgICAgICBmaWxlOi8vcGVybC1jb25maWdwbS1zd2l0Y2gucGF0Y2ggXAotIgotCi1TUkNfVVJJW3BlcmwubWQ1c3VtXSA9ICI5NzcwNTg0Y2RmOWI1NjMxYzM4MDk3NjQ1Y2UzMzU0OSIKLVNSQ19VUklbcGVybC5zaGEyNTZzdW1dID0gIjg1MTIxM2M3NTRkOThjY2ZmMDQyY2FhNDBiYTdhNzk2YjJjZWU4OGM1MzI1ZjEyMWJlNWNiYjYxYmJmOTc1ZjIiCi1TUkNfVVJJW3BlcmwtY3Jvc3MubWQ1c3VtXSA9ICI0ZGRhM2RhZjljNGZlNDJiM2Q2YTVkZDA1Mjg1MmE0OCIKLVNSQ19VUklbcGVybC1jcm9zcy5zaGEyNTZzdW1dID0gIjQ5ZWRlYTFlYTJjZDZjNWM0NzM4NmNhNzFiZWRhOGQxNTBjNzQ4ODM1NzgxMzU0ZGJlN2Y3NWIxZGYyN2U3MDMiCi0KLVMgPSAiJHtXT1JLRElSfS9wZXJsLSR7UFZ9IgotCi1pbmhlcml0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1ERVBFTkRTICs9ICJ6bGliIHZpcnR1YWwvY3J5cHQiCi0KLVBFUkxfTElCX1ZFUiA9ICIke0AnLicuam9pbihkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzA6Ml0pfS4wIgotCi1QQUNLQUdFQ09ORklHID8/PSAiYmRiIGdkYm0iCi1QQUNLQUdFQ09ORklHW2JkYl0gPSAiLC1VaV9kYixkYiIKLVBBQ0tBR0VDT05GSUdbZ2RibV0gPSAiLC1VaV9nZGJtLGdkYm0iCi0KLSMgRG9uJ3QgZ2VuZXJhdGUgY29tbWVudHMgaW4gZW5jMnhzIG91dHB1dCBmaWxlcy4gVGhleSBhcmUgbm90IHJlcHJvZHVjaWJsZQotZXhwb3J0IEVOQzJYU19OT19DT01NRU5UUyA9ICIxIgotCi1kb191bnBhY2tfYXBwZW5kKCkgewotICAgIGJiLmJ1aWxkLmV4ZWNfZnVuYygnZG9fY29weV9wZXJsY3Jvc3MnLCBkKQotfQotCi1kb19jb3B5X3Blcmxjcm9zcygpIHsKLSAgICBjcCAtcmZwICR7V09SS0RJUn0vcGVybC1jcm9zcyovKiAke1N9Ci19Ci0KLWRvX2NvbmZpZ3VyZV9jbGFzcy10YXJnZXQoKSB7Ci0gICAgLi9jb25maWd1cmUgLS1wcmVmaXg9JHtwcmVmaXh9IC0tbGliZGlyPSR7bGliZGlyfSBcCi0gICAgLS10YXJnZXQ9JHtUQVJHRVRfU1lTfSBcCi0gICAgLUR1c2VzaHJwbGliIFwKLSAgICAtRHNvbmFtZT1saWJwZXJsLnNvLjUgXAotICAgIC1EdmVuZG9ycHJlZml4PSR7cHJlZml4fSBcCi0gICAgLURhcmNobGliZXhwPSR7U1RBR0lOR19MSUJESVJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4IFwKLSAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9Ci0KLSAgICAjcGVybC5jIHVzZXMgYW4gQVJDSExJQl9FWFAgZGVmaW5lIHRvIGdlbmVyYXRlIGNvbXBpbGUtdGltZSBjb2RlIHRoYXQKLSAgICAjYWRkcyB0aGUgYXJjaGxpYmV4cCBwYXRoIHRvIEBJTkMgZHVyaW5nIHJ1bi10aW1lIGluaXRpYWxpemF0aW9uIG9mIGEKLSAgICAjbmV3IHBlcmwgaW50ZXJwcmV0ZXIuCi0KLSAgICAjQmVjYXVzZSB3ZSd2ZSBjaGFuZ2VkIHRoaXMgdmFsdWUgaW4gYSB0ZW1wb3Jhcnkgd2F5IHRvIG1ha2UgaXQKLSAgICAjcG9zc2libGUgdG8gdXNlIEV4dFV0aWxzOjpFbWJlZCBpbiB0aGUgdGFyZ2V0IGJ1aWxkICh0aGUgdGVtcG9yYXJ5Ci0gICAgI3ZhbHVlIGluIGNvbmZpZy5zaCBnZXRzIHJlLXN0cmlwcGVkIG91dCBkdXJpbmcgcGFja2FnaW5nKSwgdGhlCi0gICAgI0FSQ0hMSUJfRVhQIHZhbHVlIHRoYXQgZ2V0cyBnZW5lcmF0ZWQgc3RpbGwgdXNlcyB0aGUgdGVtcG9yYXJ5IHZlcnNpb24KLSAgICAjaW5zdGVhZCBvZiB0aGUgb3JpZ2luYWwgZXhwZWN0ZWQgdmVyc2lvbiAoaS5lLiBiZWNhdXNlcyBpdCdzIGluIHRoZQotICAgICNnZW5lcmF0ZWQgY29uZmlnLmgsIGl0IGRvZXNuJ3QgZ2V0IHN0cmlwcGVkIG91dCBkdXJpbmcgcGFja2FnaW5nIGxpa2UKLSAgICAjdGhlIG90aGVycyBpbiBjb25maWcuc2gpLgotCi0gICAgc2VkIC1pIC1lICJzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSxnIiBjb25maWcuaAotfQotCi1kb19jb25maWd1cmVfY2xhc3MtbmF0aXZlc2RrKCkgewotICAgIC4vY29uZmlndXJlIC0tcHJlZml4PSR7cHJlZml4fSBcCi0gICAgLS10YXJnZXQ9JHtUQVJHRVRfU1lTfSBcCi0gICAgLUR1c2VzaHJwbGliIFwKLSAgICAtRHNvbmFtZT1saWJwZXJsLnNvLjUgXAotICAgIC1EdmVuZG9ycHJlZml4PSR7cHJlZml4fSBcCi0gICAgLURhcmNobGliZXhwPSR7U1RBR0lOR19MSUJESVJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4IFwKLSAgICAke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9Ci0KLSAgICAjIFNlZSB0aGUgY29tbWVudCBhYm92ZQotICAgIHNlZCAtaSAtZSAicywke1NUQUdJTkdfTElCRElSfSwke2xpYmRpcn0sZyIgY29uZmlnLmgKLX0KLQotZG9fY29uZmlndXJlX2NsYXNzLW5hdGl2ZSgpIHsKLSAgICAuL2NvbmZpZ3VyZSAtLXByZWZpeD0ke3ByZWZpeH0gXAotICAgIC1EYmluPSR7YmluZGlyfS9wZXJsLW5hdGl2ZSBcCi0gICAgLUR1c2VzaHJwbGliIFwKLSAgICAtRHNvbmFtZT1saWJwZXJsLnNvLjUgXAotICAgIC1EdmVuZG9ycHJlZml4PSR7cHJlZml4fSBcCi0gICAgLVVpX3hsb2NhbGUgXAotICAgICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30KLX0KLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLSAgICBpZiBbIC1uICIkU09VUkNFX0RBVEVfRVBPQ0giIF07IHRoZW4KLSAgICAgICAgUEVSTF9CVUlMRF9EQVRFPSIkKCR7UFlUSE9OfSAtYyAiXAotZnJvbSBkYXRldGltZSBpbXBvcnQgZGF0ZXRpbWUsIHRpbWV6b25lOyBcCi1wcmludChkYXRldGltZS5mcm9tdGltZXN0YW1wKCRTT1VSQ0VfREFURV9FUE9DSCwgdGltZXpvbmUudXRjKS5zdHJmdGltZSgnJWEgJWIgJWQgJUg6JU06JVMgJVknKSkgXAotICAgICAgICAgICAgIikiCi0gICAgICAgIGVjaG8gIiNkZWZpbmUgUEVSTF9CVUlMRF9EQVRFIFwiJFBFUkxfQlVJTERfREFURVwiIiA+PiBjb25maWcuaAotICAgIGZpCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgb2VfcnVubWFrZQotfQotCi1kb19pbnN0YWxsKCkgewotICAgIG9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbAotCi0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3Blcmw1Ci0gICAgaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LwotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS9FeHRVdGlscy8KLQotICAgICMgU2F2ZSBuYXRpdmUgY29uZmlnCi0gICAgaW5zdGFsbCBjb25maWcuc2ggJHtEfSR7bGliZGlyfS9wZXJsNQotICAgIGluc3RhbGwgbGliL0NvbmZpZy5wbSAke0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LwotICAgIGluc3RhbGwgbGliL0V4dFV0aWxzL3R5cGVtYXAgJHtEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS9FeHRVdGlscy8KLQotICAgICMgRml4IHVwIHNoYXJlZCBsaWJyYXJ5Ci0gICAgcm0gJHtEfS8ke2xpYmRpcn0vcGVybDUvJHtQVn0vKi9DT1JFL2xpYnBlcmwuc28KLSAgICBsbiAtc2YgLi4vLi4vLi4vLi4vbGlicGVybC5zby4ke1BFUkxfTElCX1ZFUn0gJChlY2hvICR7RH0vJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovQ09SRSkvbGlicGVybC5zbwotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgIyBUaGlzIGlzIHVzZWQgdG8gc3Vic3RpdHV0ZSB0YXJnZXQgY29uZmlndXJhdGlvbiB3aGVuIHJ1bm5pbmcgbmF0aXZlIHBlcmwgdmlhIHBlcmwtY29uZmlncG0tc3dpdGNoLnBhdGNoCi0gICAgbG4gLXMgQ29uZmlnX2hlYXZ5LnBsICR7RH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ29uZmlnX2hlYXZ5LXRhcmdldC5wbAotCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLSAgICAjIFRoaXMgaXMgdXNlZCB0byBzdWJzdGl0dXRlIHRhcmdldCBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBuYXRpdmUgcGVybCB2aWEgcGVybC1jb25maWdwbS1zd2l0Y2gucGF0Y2gKLSAgICBsbiAtcyBDb25maWdfaGVhdnkucGwgJHtEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9Db25maWdfaGVhdnktdGFyZ2V0LnBsCi0KLSAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3BlcmwgXAotICAgICAgICBQRVJMNUxJQj0nJFBFUkw1TElCOiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvJHtsaWJkaXJfbmF0aXZlc2RrfS9wZXJsNS9zaXRlX3BlcmwvJHtQVn06JE9FQ09SRV9OQVRJVkVfU1lTUk9PVC8ke2xpYmRpcl9uYXRpdmVzZGt9L3Blcmw1L3ZlbmRvcl9wZXJsLyR7UFZ9OiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvJHtsaWJkaXJfbmF0aXZlc2RrfS9wZXJsNS8ke1BWfScKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLSAgICAjIFRob3NlIHdyYXBwZXJzIG1lYW4gdGhhdCBwZXJsIGluc3RhbGxlZCBmcm9tIHNzdGF0ZSAod2hpY2ggbWF5IGNoYW5nZQotICAgICMgcGF0aCBsb2NhdGlvbikgd29ya3MgYW5kIHRoYXQgaW4gdGhlIG5hdGl2ZXNkayBjYXNlLCB0aGUgU0RLIGNhbiBiZQotICAgICMgaW5zdGFsbGVkIHRvIGEgZGlmZmVyZW50IGxvY2F0aW9uIGZyb20gdGhlIG9uZSBpdCB3YXMgYnVpbHQgZm9yLgotICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcGVybC1uYXRpdmUvcGVybCBQRVJMNUxJQj0nJFBFUkw1TElCOiR7U1RBR0lOR19MSUJESVJ9L3Blcmw1L3NpdGVfcGVybC8ke1BWfToke1NUQUdJTkdfTElCRElSfS9wZXJsNS92ZW5kb3JfcGVybC8ke1BWfToke1NUQUdJTkdfTElCRElSfS9wZXJsNS8ke1BWfScKLQotICAgICMgVXNlIC91c3IvYmluL2VudiBuYXRpdmVwZXJsIGZvciB0aGUgcGVybCBzY3JpcHQuCi0gICAgZm9yIGYgaW4gYGdyZXAgLUlsICcjISAqJHtiaW5kaXJ9L3BlcmwnICR7RH0vJHtiaW5kaXJ9LypgOyBkbwotICAgICAgICAgICAgc2VkIC1pIC1lICdzfCR7YmluZGlyfS9wZXJsfC91c3IvYmluL2VudiBuYXRpdmVwZXJsfCcgJGYKLSAgICBkb25lCi19Ci0KLVBBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAicGVybF9wYWNrYWdlX3ByZXByb2Nlc3MiCi0KLXBlcmxfcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKLSAgICAgICAgIyBGaXggdXAgaW5zdGFsbGVkIGNvbmZpZ3VyYXRpb24KLSAgICAgICAgc2VkIC1pIC1lICJzLCR7RH0sLGciIFwKLSAgICAgICAgICAgICAgIC1lICJzLCR7REVCVUdfUFJFRklYX01BUH0sLGciIFwKLSAgICAgICAgICAgICAgIC1lICJzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9LCxnIiBcCi0gICAgICAgICAgICAgICAtZSAicywtaXN5c3RlbSR7U1RBR0lOR19JTkNESVJ9ICwsZyIgXAotICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LGciIFwKLSAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJ9LCR7YmluZGlyfSxnIiBcCi0gICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfSU5DRElSfSwke2luY2x1ZGVkaXJ9LGciIFwKLSAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZS8sJHtiaW5kaXJ9LyxnIiBcCi0gICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSX05BVElWRX0vLCxnIiBcCi0gICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSX1RPT0xDSEFJTn0vJHtUQVJHRVRfUFJFRklYfSwke2JpbmRpcn0sZyIgXAotICAgICAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vaDJ4cyBcCi0gICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L2gycGggXAotICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9wb2QybWFuIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kMnRleHQgXAotICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9wb2QydXNhZ2UgXAotICAgICAgICAgICAgJHtQS0dEfSR7YmluZGlyfS9wb2RjaGVja2VyIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kc2VsZWN0IFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ09SRS9jb25maWcuaCBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NPUkUvcGVybC5oIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ09SRS9wcC5oIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vQ29uZmlnLnBtIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ29uZmlnLnBtIFwKLSAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ29uZmlnLnBvZCBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NvbmZpZ19naXQucGwgXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9Db25maWdfaGVhdnkucGwgXAotICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS9FeHRVdGlscy9MaWJsaXN0L0tpZC5wbSBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0ZpbGVDYWNoZS5wbSBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L3BvZC8qLnBvZCBcCi0gICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1L2NvbmZpZy5zaAotfQotCi1yZXF1aXJlIHBlcmwtcHRlc3QuaW5jCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS9wZXJsICR7YmluZGlyfS9wZXJsLnJlYWwgJHtiaW5kaXJ9L3Blcmwke1BWfSAke2xpYmRpcn0vbGlicGVybC5zbyogXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1L3NpdGVfcGVybCBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vQ29uZmlnLnBtIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qL0NvbmZpZ19naXQucGwgXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovQ29uZmlnX2hlYXZ5LXRhcmdldC5wbCBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvY29uZmlnLnNoIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS9zdHJpY3QucG0gXAotICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L3dhcm5pbmdzLnBtIFwKLSAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS93YXJuaW5ncyBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vdmFycy5wbSBcCi0gICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvc2l0ZV9wZXJsIFwKLSAgICAgICAgICAgICAgICIKLVJQUk9WSURFU18ke1BOfSArPSAicGVybC1tb2R1bGUtc3RyaWN0IHBlcmwtbW9kdWxlLXZhcnMgcGVybC1tb2R1bGUtY29uZmlnIHBlcmwtbW9kdWxlLXdhcm5pbmdzIFwKLSAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtd2FybmluZ3MtcmVnaXN0ZXIiCi0KLUZJTEVTXyR7UE59LXN0YXRpY2Rldl9hcHBlbmQgPSAiICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qL0NPUkUvbGlicGVybC5hIgotCi1GSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi9DT1JFIgotCi1GSUxFU18ke1BOfS1kb2NfYXBwZW5kID0gIiAke2xpYmRpcn0vcGVybDUvJHtQVn0vVW5pY29kZS9Db2xsYXRlLyoudHh0IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qLy5wYWNrbGlzdCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vRXh0VXRpbHMvTUFOSUZFU1QuU0tJUCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vRXh0VXRpbHMveHN1YnBwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS9FeHRVdGlscy90eXBlbWFwIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS9FbmNvZGUvZW5jb2RlLmggXAotICAgICAgICAgICAgICAgICAgICAgICAgICIKLVBBQ0tBR0VTICs9ICIke1BOfS1taXNjIgotCi1GSUxFU18ke1BOfS1taXNjID0gIiR7YmluZGlyfS8qIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tcG9kIgotCi1GSUxFU18ke1BOfS1wb2QgPSAiJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L3BvZCBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyoucG9kIFwKLSAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi8qLnBvZCBcCi0gICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovKi8qLnBvZCBcIAotICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qLyovKi8qLnBvZCBcIAotICAgICAgICAgICAgICAgICAgIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tbW9kdWxlLWNwYW4gJHtQTn0tbW9kdWxlLXVuaWNvcmUiCi0KLUZJTEVTXyR7UE59LW1vZHVsZS1jcGFuICs9ICIke2xpYmRpcn0vcGVybDUvJHtQVn0vQ1BBTiBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICIKLUZJTEVTXyR7UE59LW1vZHVsZS11bmljb3JlICs9ICIke2xpYmRpcn0vcGVybDUvJHtQVn0vdW5pY29yZSIKLQotIyBDcmVhdGUgYSBwZXJsLW1vZHVsZXMgcGFja2FnZSByZWNvbW1lbmRpbmcgYWxsIHRoZSBvdGhlciBwZXJsCi0jIHBhY2thZ2VzIChhY3R1YWxseSB0aGUgbm9uIG1vZHVsZXMgcGFja2FnZXMgYW5kIG5vdCBjcmVhdGVkIHRvbykKLUFMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMgPSAiMSIKLVBBQ0tBR0VTICs9ICIke1BOfS1tb2R1bGVzICIKLQotUEFDS0FHRVNQTElURlVOQ1NfcHJlcGVuZCA9ICJzcGxpdF9wZXJsX3BhY2thZ2VzICIKLQotcHl0aG9uIHNwbGl0X3BlcmxfcGFja2FnZXMgKCkgewotICAgIGxpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vcGVybDUvJHtQVn0nKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgcicuKi9hdXRvLyhbXi5dKikvW14vXSpcLihzb3xsZHxpeHxhbCknLCAnJHtQTn0tbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsIHInLipsaW51eC8oW15cL10qKVwucG0nLCAnJHtQTn0tbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIGFsbG93X2RpcnM9RmFsc2UsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsIHInTW9kdWxlLyhbXlwvXSopXC5wbScsICcke1BOfS1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgYWxsb3dfZGlycz1GYWxzZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgcidNb2R1bGUvKFteXC9dKikvLionLCAnJHtQTn0tbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIGFsbG93X2RpcnM9RmFsc2UsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsIHInLipsaW51eC8oW15cL10uKilcLihwbXxwbHxlMngpJywgJyR7UE59LW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBhbGxvd19kaXJzPUZhbHNlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCByJyheKD8hKENQQU5cL3xDUEFOUExVU1wvfE1vZHVsZVwvfHVuaWNvcmVcLylbXlwvXSkuKilcLihwbXxwbHxlMngpJywgJyR7UE59LW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBhbGxvd19kaXJzPUZhbHNlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCi0KLSAgICAjIHBlcmwtbW9kdWxlcyBzaG91bGQgcmVjb21tZW5kIGV2ZXJ5IHBlcmwgbW9kdWxlLCBhbmQgb25seSB0aGUKLSAgICAjIG1vZHVsZXMuIERvbid0IGF0dGVtcHQgdG8gdXNlIHRoZSByZXN1bHQgb2YgZG9fc3BsaXRfcGFja2FnZXMoKSBhcyBzb21lCi0gICAgIyBtb2R1bGVzIGFyZSBtYW51YWxseSBzcGxpdCAoZWcuIHBlcmwtbW9kdWxlLXVuaWNvcmUpLgotICAgIHBhY2thZ2VzID0gZmlsdGVyKGxhbWJkYSBwOiAncGVybC1tb2R1bGUtJyBpbiBwLCBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpKQotICAgIGQuc2V0VmFyKGQuZXhwYW5kKCJSUkVDT01NRU5EU18ke1BOfS1tb2R1bGVzIiksICcgJy5qb2luKHBhY2thZ2VzKSkKLQotICAgICMgUmVhZCB0aGUgcHJlLWdlbmVyYXRlZCBkZXBlbmRlbmN5IGZpbGUsIGFuZCB1c2UgaXQgdG8gc2V0IG1vZHVsZSBkZXBlbmRlY2llcwotICAgIGZvciBsaW5lIGluIG9wZW4oZC5leHBhbmQoIiR7V09SS0RJUn0iKSArICcvcGVybC1yZGVwZW5kcy50eHQnKS5yZWFkbGluZXMoKToKLSAgICAgICAgc3BsaXRsaW5lID0gbGluZS5zcGxpdCgpCi0gICAgICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25hdGl2ZScsIGQpOgotICAgICAgICAgICAgbW9kdWxlID0gc3BsaXRsaW5lWzBdICsgJy1uYXRpdmUnCi0gICAgICAgICAgICBkZXBlbmRzID0gInBlcmwtbmF0aXZlIgotICAgICAgICBlbHNlOgotICAgICAgICAgICAgbW9kdWxlID0gc3BsaXRsaW5lWzBdLnJlcGxhY2UoIlJERVBFTkRTX3BlcmwiLCAiUkRFUEVORFNfJHtQTn0iKQotICAgICAgICAgICAgZGVwZW5kcyA9IHNwbGl0bGluZVsyXS5zdHJpcCgnIicpLnJlcGxhY2UoInBlcmwtbW9kdWxlIiwgIiR7UE59LW1vZHVsZSIpCi0gICAgICAgIGQuYXBwZW5kVmFyKGQuZXhwYW5kKG1vZHVsZSksICIgIiArIGRlcGVuZHMpCi19Ci0KLXB5dGhvbigpIHsKLSAgICBpZiBkLmdldFZhcignQ0xBU1NPVkVSUklERScpID09ICJjbGFzcy10YXJnZXQiOgotICAgICAgICBkLnNldFZhcigiUEFDS0FHRVNfRFlOQU1JQyIsICJecGVybC1tb2R1bGUtLiooPzwhbmF0aXZlKSQiKQotICAgIGVsaWYgZC5nZXRWYXIoJ0NMQVNTT1ZFUlJJREUnKSA9PSAiY2xhc3MtbmF0aXZlIjoKLSAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VTX0RZTkFNSUMiLCAiXnBlcmwtbW9kdWxlLS4qLW5hdGl2ZSQiKQotICAgIGVsaWYgZC5nZXRWYXIoJ0NMQVNTT1ZFUlJJREUnKSA9PSAiY2xhc3MtbmF0aXZlc2RrIjoKLSAgICAgICAgZC5zZXRWYXIoIlBBQ0tBR0VTX0RZTkFNSUMiLCAiXm5hdGl2ZXNkay1wZXJsLW1vZHVsZS0uKiIpCi19Ci0KLVJERVBFTkRTXyR7UE59LW1pc2MgKz0gInBlcmwgcGVybC1tb2R1bGVzIgotUkRFUEVORFNfJHtQTn0tcG9kICs9ICJwZXJsIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICIqLnBtICoucG9kICouaCAqLnBsICouc2giCi0KLWRvX2NyZWF0ZV9yZGVwZW5kc19pbmMoKSB7Ci0gICAgY2QgJHtXT1JLRElSfQotICAgIGNhdCA8PCdFT1BSRUFNQkxFJyA+ICR7V09SS0RJUn0vcGVybC1yZGVwZW5kcy5pbmMKLQotIyBTb21lIGFkZGl0aW9uYWwgZGVwZW5kZW5jaWVzIHRoYXQgdGhlIGFib3ZlIGRvZXNuJ3QgbWFuYWdlIHRvIGZpZ3VyZSBvdXQKLVJERVBFTkRTXyR7UE59LW1vZHVsZS1maWxlLXNwZWMgKz0gIiR7UE59LW1vZHVsZS1maWxlLXNwZWMtdW5peCIKLVJERVBFTkRTXyR7UE59LW1vZHVsZS1tYXRoLWJpZ2ludCArPSAiJHtQTn0tbW9kdWxlLW1hdGgtYmlnaW50LWNhbGMiCi1SREVQRU5EU18ke1BOfS1tb2R1bGUtdGhyZWFkLXF1ZXVlICs9ICIke1BOfS1tb2R1bGUtYXR0cmlidXRlcyIKLVJERVBFTkRTXyR7UE59LW1vZHVsZS1vdmVybG9hZCArPSAiJHtQTn0tbW9kdWxlLW92ZXJsb2FkaW5nIgotCi0jIEdlbmVyYXRlZCBkZXBlbmRzIGxpc3QgYmV5b25kIHRoaXMgbGluZQotRU9QUkVBTUJMRQotICAgIHRlc3QgLWUgcGFja2FnZXMtc3BsaXQubmV3ICYmIHJtIC1yZiBwYWNrYWdlcy1zcGxpdC5uZXcKLSAgICBjcCAtciBwYWNrYWdlcy1zcGxpdCBwYWNrYWdlcy1zcGxpdC5uZXcgJiYgY2QgcGFja2FnZXMtc3BsaXQubmV3Ci0gICAgZmluZCAuIC1uYW1lIFwqLnBtIHwgeGFyZ3Mgc2VkIC1pICcvXj1oZWFkLywvXj1jdXQvZCcKLSAgICBlZ3JlcCAtciAiXlxzKihcPHVzZSAuKnxcPHJlcXVpcmUgLiopOz8iIHBlcmwtbW9kdWxlLSogLS1pbmNsdWRlPSIqLnBtIiB8IFwKLSAgICBzZWQgInMvXC8uKlwucG06ICovICs9IC9nO3MvW1wiXCddLy9nO3MvOy4qL1wiL2c7cy8rPSAuKlwocmVxdWlyZVx8dXNlXClcPiAqLys9IFwicGVybC1tb2R1bGUtL2c7cy9DUEFOUExVUzo6LiovY3BhbnBsdXMvZztzL0NQQU46Oi4qL2NwYW4vZztzLzo6Ly0vZztzLyBbXitcIl0uKi8vZztzL18vLS9nO3MvXC5wbFwiJC9cIi87cy9cIlw/XCQvXCIvO3MvKC8vOyIgfCB0ciBbOnVwcGVyOl0gWzpsb3dlcjpdIHwgXAotICAgIGF3ayAne2lmICgkMyAhPSAiXHgyMiIkMSJceDIyIil7IHByaW50ICQwfX0nfCBcCi0gICAgZ3JlcCAtdiAtZSAiXC12bXNcLSIgLWUgbW9kdWxlLTUgLWUgIl4kIiAtZSAiXFwkIiAtZSB5b3VyIC1lIHRrIC1lIGF1dG9wZXJsIC1lIGh0bWwgLWUgaHR0cCAtZSBwYXJzZS1jcGFuIC1lIHBlcmwtb3N0eXBlIC1lIG5kYm0tZmlsZSAtZSBtb2R1bGUtbWFjIC1lIGZjZ2kgLWUgbHdwIC1lIGRiZCAtZSBkYml4IHwgXAotICAgIHNvcnQgLXUgfCBcCi0gICAgc2VkICdzL14vUkRFUEVORFNfLztzL3BlcmwtbW9kdWxlLS8ke1BOfS1tb2R1bGUtL2c7cy9tb2R1bGUtXChtb2R1bGUtXCkvXDEvZztzL1wobW9kdWxlLWxvYWRcKS1jb25kaXRpb25hbC9cMS9nO3MvZW5jb2RlLWNvbmZpZ2xvY2FsLyYtcG0vOycgfCBcCi0gICAgZWdyZXAgLXd2ICc9Pnxtb2R1bGUtYXxtb2R1bGUtYXBhY2hlLj98bW9kdWxlLWFwcnxtb2R1bGUtYXV0aGVuLXNhc2x8bW9kdWxlLWItYXNtZGF0YXxtb2R1bGUtY29udmVydC1lYmNkaWN8bW9kdWxlLWRldmVsLXNpemV8bW9kdWxlLWRpZ2VzdC1wZXJsLW1kNXxtb2R1bGUtZHVtcHZhbHVlfG1vZHVsZS1leHR1dGlscy1jb25zdGFudC1hYWFyZ2g1Nmhhc2h8bW9kdWxlLWV4dHV0aWxzLXhzc3ltc2V0fG1vZHVsZS1maWxlLWJzZGdsb2J8bW9kdWxlLWZvcnxtb2R1bGUtaXR8bW9kdWxlLWlvLXNvY2tldC1pbmV0Nnxtb2R1bGUtaW8tc29ja2V0LXNzbHxtb2R1bGUtaW8tc3RyaW5nfG1vZHVsZS1pcGMtc3lzdGVtLXNpbXBsZXxtb2R1bGUtbGV4aWNhbHxtb2R1bGUtbG9jYWwtbGlifG1ldGFkYXRhfG1vZHVsZS1tb2RwZXJsLXV0aWx8bW9kdWxlLXBsdWdnYWJsZS1vYmplY3R8bW9kdWxlLXRlc3QtYnVpbGRlci1pby1zY2FsYXJ8bW9kdWxlLXRlc3QyfG1vZHVsZS10ZXh0LXVuaWRlY29kZXxtb2R1bGUtdW5pY29yZXxtb2R1bGUtd2luMzJ8b2JqZWN0c1xzbG9hZHxzeXNjYWxsLnBofHN5c3RlbWluZm8ucGh8JXMnIHwgXAotICAgIGVncmVwIC13diAnPT58bW9kdWxlLWFsZ29yaXRobS1kaWZmfG1vZHVsZS1jYXJwfG1vZHVsZS1jPGV4dHV0aWxzLW1tLXVuaXg+fG1vZHVsZS1lbmNvZGUtaGFuZXh0cmF8bW9kdWxlLWV4dHV0aWxzLW1ha2VtYWtlci12ZXJzaW9uLXJlZ2V4fG1vZHVsZS1maWxlLXNwZWN8bW9kdWxlLWlvLWNvbXByZXNzLWx6bWF8bW9kdWxlLWxvY2FsZS1tYWtldGV4dC1sZXhpY29ufG1vZHVsZS1sb2ctYWdlbnR8bW9kdWxlLW1ldGEtbm90YXRpb258bW9kdWxlLW5ldC1sb2NhbGNmZ3xtb2R1bGUtbmV0LXBpbmctZXh0ZXJuYWx8bW9kdWxlLWItZGVwYXJzZXxtb2R1bGUtc2NhbGFyLXV0aWx8bW9kdWxlLXNvbWUtbW9kdWxlfG1vZHVsZS1zeW1ib2x8bW9kdWxlLXVyaXxtb2R1bGUtd2luMzJhcGktZmlsZScgPj4gJHtXT1JLRElSfS9wZXJsLXJkZXBlbmRzLmdlbmVyYXRlZAotICAgIGNwICR7V09SS0RJUn0vcGVybC1yZGVwZW5kcy5nZW5lcmF0ZWQgJHtUSElTRElSfS9maWxlcy9wZXJsLXJkZXBlbmRzLnR4dAotfQotCi0jIGJpdGJha2UgcGVybCAtYyBjcmVhdGVfcmRlcGVuZHNfaW5jCi1hZGR0YXNrIGRvX2NyZWF0ZV9yZGVwZW5kc19pbmMKLQotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTICs9ICJwZXJsX3N5c3Jvb3RfY3JlYXRlX3dyYXBwZXIiCi0KLXBlcmxfc3lzcm9vdF9jcmVhdGVfd3JhcHBlciAoKSB7Ci0gICAgICAgbWtkaXIgLXAgJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9Ci0gICAgICAgIyBDcmVhdGUgYSB3cmFwcGVyIHRoYXQgL3Vzci9iaW4vZW52IHBlcmwgd2lsbCB1c2UgdG8gZ2V0IHBlcmwtbmF0aXZlLgotICAgICAgICMgVGhpcyBNVVNUIGxpdmUgaW4gdGhlIG5vcm1hbCBiaW5kaXIuCi0gICAgICAgY2F0ID4gJHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L25hdGl2ZXBlcmwgPDwgRU9GCi0jIS9iaW4vc2gKLXJlYWxwYXRoPVxgcmVhZGxpbmsgLWZuIFwkMFxgCi1leGVjIFxgZGlybmFtZSBcJHJlYWxwYXRoXGAvcGVybC1uYXRpdmUvcGVybCAiXCRAIgotRU9GCi0gICAgICAgY2htb2QgMDc1NSAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vbmF0aXZlcGVybAotICAgICAgIGNhdCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vbmF0aXZlcGVybAotfQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wZXJsL3BlcmxfNS4zMC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMzAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NzhjNDIwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGVybC9wZXJsXzUuMzAuMi5iYgpAQCAtMCwwICsxLDM4NyBAQAorU1VNTUFSWSA9ICJQZXJsIHNjcmlwdGluZyBsYW5ndWFnZSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucGVybC5vcmcvIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQXJ0aXN0aWMtMS4wIHwgR1BMLTEuMCsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Db3B5aW5nO21kNT01YjEyMmEzNmQwZjZkYzU1Mjc5YTBlYmM2OWYzYzYwYiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9BcnRpc3RpYzttZDU9NzFhNGQ1ZDlhY2MxOGMwOTUyYTZkZjIyMThiYjY4ZGEgXAorICAgICAgICAgICAgICAgICAgICAiCisKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5jcGFuLm9yZy9zcmMvNS4wL3BlcmwtJHtQVn0udGFyLmd6O25hbWU9cGVybCBcCisgICAgICAgICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9hcnN2L3BlcmwtY3Jvc3MvcmVsZWFzZXMvZG93bmxvYWQvMS4zLjIvcGVybC1jcm9zcy0xLjMuMi50YXIuZ3o7bmFtZT1wZXJsLWNyb3NzIFwKKyAgICAgICAgICAgZmlsZTovL3BlcmwtcmRlcGVuZHMudHh0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlX3Rvb2wuc2gtZG8tbm90LXF1b3RlLXRoZS1hcmd1bWVudC10by1jb21tYS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUV4dFV0aWxzLU1ha2VNYWtlci1hZGQtTERGTEFHUy13aGVuLWxpbmtpbmctYmluYXJ5LW0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Tb21laG93LXRoaXMtbW9kdWxlLWJyZWFrcy10aHJvdWdoLXRoZS1wZXJsLXdyYXBwZXItLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Vycm5vX3Zlci5kaWZmIFwKKyAgICAgICAgICAgZmlsZTovL25hdGl2ZS1wZXJsaW5jLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcGVybC1jcm9zcy1hZGQtTERGTEFHUy13aGVuLWxpbmtpbmctbGlicGVybC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wZXJsLWR5bmxvYWRlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZV9wYXRoLnNoLWRvLW5vdC1oYXJkY29kZS1wcmVmaXgtbGliLWFzLWxpYnIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1lbmMyeHMtQWRkLWVudmlyb25tZW50LXZhcmlhYmxlLXRvLXN1cHByZXNzLWNvbW1lbnRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItQ29uc3RhbnQtRml4LXVwLXNoZWJhbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1QQVRDSC1wZXJsLTEzNDExNy1DbG9zZS1EQVRBLWluLWxvY190b29scy5wbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9kZXRlcm1pbmlzbS5wYXRjaCAgXAorICAgICAgICAgICAiCitTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKKyAgICAgICAgICAgZmlsZTovL3BlcmwtY29uZmlncG0tc3dpdGNoLnBhdGNoIFwKKyIKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAorICAgICAgICAgICBmaWxlOi8vZW5jb2RlZml4LnBhdGNoIFwKKyIKKworU1JDX1VSSVtwZXJsLnNoYTI1NnN1bV0gPSAiNjZkYjdkZjhhOTE5NzllYjU3NmZhYzkxNzQzNjQ0ZGE4NzgyNDRjZjhlZTE1MmYwMmNkNmY1Y2Q3YTczMTY4OSIKK1NSQ19VUklbcGVybC1jcm9zcy5zaGEyNTZzdW1dID0gImRlZmExMmYwYWQ3YmUwYjZjNDhiNGY3NmUyZmI1YjM3YzFiMzdmYmViNmU5ZWJlOTM4Mjc5Y2Q1MzlhMGMyMGMiCisKK1MgPSAiJHtXT1JLRElSfS9wZXJsLSR7UFZ9IgorCitpbmhlcml0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0RFUEVORFMgKz0gInpsaWIgdmlydHVhbC9jcnlwdCIKKworUEVSTF9MSUJfVkVSID0gIiR7QCcuJy5qb2luKGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMDoyXSl9LjAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJiZGIgZ2RibSIKK1BBQ0tBR0VDT05GSUdbYmRiXSA9ICIsLVVpX2RiLGRiIgorUEFDS0FHRUNPTkZJR1tnZGJtXSA9ICIsLVVpX2dkYm0sZ2RibSIKKworIyBEb24ndCBnZW5lcmF0ZSBjb21tZW50cyBpbiBlbmMyeHMgb3V0cHV0IGZpbGVzLiBUaGV5IGFyZSBub3QgcmVwcm9kdWNpYmxlCitleHBvcnQgRU5DMlhTX05PX0NPTU1FTlRTID0gIjEiCisKK2RvX3VucGFja19hcHBlbmQoKSB7CisgICAgYmIuYnVpbGQuZXhlY19mdW5jKCdkb19jb3B5X3Blcmxjcm9zcycsIGQpCit9CisKK2RvX2NvcHlfcGVybGNyb3NzKCkgeworICAgIGNwIC1yZnAgJHtXT1JLRElSfS9wZXJsLWNyb3NzKi8qICR7U30KK30KKworZG9fY29uZmlndXJlX2NsYXNzLXRhcmdldCgpIHsKKyAgICAuL2NvbmZpZ3VyZSAtLXByZWZpeD0ke3ByZWZpeH0gLS1saWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IFwKKyAgICAtRHVzZXNocnBsaWIgXAorICAgIC1Ec29uYW1lPWxpYnBlcmwuc28uNSBcCisgICAgLUR2ZW5kb3JwcmVmaXg9JHtwcmVmaXh9IFwKKyAgICAtRGFyY2hsaWJleHA9JHtTVEFHSU5HX0xJQkRJUn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXggXAorICAgICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30KKworICAgICNwZXJsLmMgdXNlcyBhbiBBUkNITElCX0VYUCBkZWZpbmUgdG8gZ2VuZXJhdGUgY29tcGlsZS10aW1lIGNvZGUgdGhhdAorICAgICNhZGRzIHRoZSBhcmNobGliZXhwIHBhdGggdG8gQElOQyBkdXJpbmcgcnVuLXRpbWUgaW5pdGlhbGl6YXRpb24gb2YgYQorICAgICNuZXcgcGVybCBpbnRlcnByZXRlci4KKworICAgICNCZWNhdXNlIHdlJ3ZlIGNoYW5nZWQgdGhpcyB2YWx1ZSBpbiBhIHRlbXBvcmFyeSB3YXkgdG8gbWFrZSBpdAorICAgICNwb3NzaWJsZSB0byB1c2UgRXh0VXRpbHM6OkVtYmVkIGluIHRoZSB0YXJnZXQgYnVpbGQgKHRoZSB0ZW1wb3JhcnkKKyAgICAjdmFsdWUgaW4gY29uZmlnLnNoIGdldHMgcmUtc3RyaXBwZWQgb3V0IGR1cmluZyBwYWNrYWdpbmcpLCB0aGUKKyAgICAjQVJDSExJQl9FWFAgdmFsdWUgdGhhdCBnZXRzIGdlbmVyYXRlZCBzdGlsbCB1c2VzIHRoZSB0ZW1wb3JhcnkgdmVyc2lvbgorICAgICNpbnN0ZWFkIG9mIHRoZSBvcmlnaW5hbCBleHBlY3RlZCB2ZXJzaW9uIChpLmUuIGJlY2F1c2VzIGl0J3MgaW4gdGhlCisgICAgI2dlbmVyYXRlZCBjb25maWcuaCwgaXQgZG9lc24ndCBnZXQgc3RyaXBwZWQgb3V0IGR1cmluZyBwYWNrYWdpbmcgbGlrZQorICAgICN0aGUgb3RoZXJzIGluIGNvbmZpZy5zaCkuCisKKyAgICBzZWQgLWkgLWUgInMsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LGciIGNvbmZpZy5oCit9CisKK2RvX2NvbmZpZ3VyZV9jbGFzcy1uYXRpdmVzZGsoKSB7CisgICAgLi9jb25maWd1cmUgLS1wcmVmaXg9JHtwcmVmaXh9IFwKKyAgICAtLXRhcmdldD0ke1RBUkdFVF9TWVN9IFwKKyAgICAtRHVzZXNocnBsaWIgXAorICAgIC1Ec29uYW1lPWxpYnBlcmwuc28uNSBcCisgICAgLUR2ZW5kb3JwcmVmaXg9JHtwcmVmaXh9IFwKKyAgICAtRGFyY2hsaWJleHA9JHtTVEFHSU5HX0xJQkRJUn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXggXAorICAgICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30KKworICAgICMgU2VlIHRoZSBjb21tZW50IGFib3ZlCisgICAgc2VkIC1pIC1lICJzLCR7U1RBR0lOR19MSUJESVJ9LCR7bGliZGlyfSxnIiBjb25maWcuaAorfQorCitkb19jb25maWd1cmVfY2xhc3MtbmF0aXZlKCkgeworICAgIC4vY29uZmlndXJlIC0tcHJlZml4PSR7cHJlZml4fSBcCisgICAgLURiaW49JHtiaW5kaXJ9L3BlcmwtbmF0aXZlIFwKKyAgICAtRHVzZXNocnBsaWIgXAorICAgIC1Ec29uYW1lPWxpYnBlcmwuc28uNSBcCisgICAgLUR2ZW5kb3JwcmVmaXg9JHtwcmVmaXh9IFwKKyAgICAtVWlfeGxvY2FsZSBcCisgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQorfQorCitkb19jb25maWd1cmVfYXBwZW5kKCkgeworICAgIGlmIFsgLW4gIiRTT1VSQ0VfREFURV9FUE9DSCIgXTsgdGhlbgorICAgICAgICBQRVJMX0JVSUxEX0RBVEU9IiQoJHtQWVRIT059IC1jICJcCitmcm9tIGRhdGV0aW1lIGltcG9ydCBkYXRldGltZSwgdGltZXpvbmU7IFwKK3ByaW50KGRhdGV0aW1lLmZyb210aW1lc3RhbXAoJFNPVVJDRV9EQVRFX0VQT0NILCB0aW1lem9uZS51dGMpLnN0cmZ0aW1lKCclYSAlYiAlZCAlSDolTTolUyAlWScpKSBcCisgICAgICAgICAgICAiKSIKKyAgICAgICAgZWNobyAiI2RlZmluZSBQRVJMX0JVSUxEX0RBVEUgXCIkUEVSTF9CVUlMRF9EQVRFXCIiID4+IGNvbmZpZy5oCisgICAgZmkKK30KKworZG9fY29tcGlsZSgpIHsKKyAgICBvZV9ydW5tYWtlCisgICAgIyBUaGlzIGlzbid0IGdlbmVyYXRlZCByZWxpYWJseSBzbyBkZWxldGUgYW5kIHJlLWdlbmVyYXRlLgorICAgICMgaHR0cHM6Ly9naXRodWIuY29tL2Fyc3YvcGVybC1jcm9zcy9pc3N1ZXMvODYKKworICAgIGlmIFsgLWUgcG9kL3Blcmx0b2MucG9kIF07IHRoZW4KKyAgICAgICAgYmJub3RlIFJlYnVpbGRpbmcgcGVybHRvYy5wb2QKKyAgICAgICAgcm0gLWYgcG9kL3Blcmx0b2MucG9kCisgICAgICAgIG9lX3J1bm1ha2UgcG9kL3Blcmx0b2MucG9kCisgICAgZmkKK30KKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKworICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wZXJsNQorICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8KKyAgICBpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vRXh0VXRpbHMvCisKKyAgICAjIFNhdmUgbmF0aXZlIGNvbmZpZworICAgIGluc3RhbGwgY29uZmlnLnNoICR7RH0ke2xpYmRpcn0vcGVybDUKKyAgICBpbnN0YWxsIGxpYi9Db25maWcucG0gJHtEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8KKyAgICBpbnN0YWxsIGxpYi9FeHRVdGlscy90eXBlbWFwICR7RH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vRXh0VXRpbHMvCisKKyAgICAjIEZpeCB1cCBzaGFyZWQgbGlicmFyeQorICAgIHJtICR7RH0vJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovQ09SRS9saWJwZXJsLnNvCisgICAgbG4gLXNmIC4uLy4uLy4uLy4uL2xpYnBlcmwuc28uJHtQRVJMX0xJQl9WRVJ9ICQoZWNobyAke0R9LyR7bGliZGlyfS9wZXJsNS8ke1BWfS8qL0NPUkUpL2xpYnBlcmwuc28KK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICMgVGhpcyBpcyB1c2VkIHRvIHN1YnN0aXR1dGUgdGFyZ2V0IGNvbmZpZ3VyYXRpb24gd2hlbiBydW5uaW5nIG5hdGl2ZSBwZXJsIHZpYSBwZXJsLWNvbmZpZ3BtLXN3aXRjaC5wYXRjaAorICAgIGxuIC1zIENvbmZpZ19oZWF2eS5wbCAke0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NvbmZpZ19oZWF2eS10YXJnZXQucGwKKworICAgICMgVGhpcyBjb250YWlucyBob3N0LXNwZWNpZmljIGluZm9ybWF0aW9uIHVzZWQgZm9yIGJ1aWxkaW5nIG1pbmlwZXJsIChhIGhlbHBlciBleGVjdXRhYmxlIGJ1aWx0IHdpdGggaG9zdCBjb21waWxlcikKKyAgICAjIGFuZCB0aGVyZWZvcmUgaXNuJ3QgcmVwcm9kdWNpYmxlLiBJIGJlbGlldmUgdGhlIGZpbGUgaXNuJ3QgYWN0dWFsbHkgbmVlZGVkIG9uIHRhcmdldC4KKyAgICBybSAke0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NPUkUveGNvbmZpZy5oCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKyAgICAjIFRoaXMgaXMgdXNlZCB0byBzdWJzdGl0dXRlIHRhcmdldCBjb25maWd1cmF0aW9uIHdoZW4gcnVubmluZyBuYXRpdmUgcGVybCB2aWEgcGVybC1jb25maWdwbS1zd2l0Y2gucGF0Y2gKKyAgICBsbiAtcyBDb25maWdfaGVhdnkucGwgJHtEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9Db25maWdfaGVhdnktdGFyZ2V0LnBsCisKKyAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3BlcmwgXAorICAgICAgICBQRVJMNUxJQj0nJFBFUkw1TElCOiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvJHtsaWJkaXJfbmF0aXZlc2RrfS9wZXJsNS9zaXRlX3BlcmwvJHtQVn06JE9FQ09SRV9OQVRJVkVfU1lTUk9PVC8ke2xpYmRpcl9uYXRpdmVzZGt9L3Blcmw1L3ZlbmRvcl9wZXJsLyR7UFZ9OiRPRUNPUkVfTkFUSVZFX1NZU1JPT1QvJHtsaWJkaXJfbmF0aXZlc2RrfS9wZXJsNS8ke1BWfScKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKKyAgICAjIFRob3NlIHdyYXBwZXJzIG1lYW4gdGhhdCBwZXJsIGluc3RhbGxlZCBmcm9tIHNzdGF0ZSAod2hpY2ggbWF5IGNoYW5nZQorICAgICMgcGF0aCBsb2NhdGlvbikgd29ya3MgYW5kIHRoYXQgaW4gdGhlIG5hdGl2ZXNkayBjYXNlLCB0aGUgU0RLIGNhbiBiZQorICAgICMgaW5zdGFsbGVkIHRvIGEgZGlmZmVyZW50IGxvY2F0aW9uIGZyb20gdGhlIG9uZSBpdCB3YXMgYnVpbHQgZm9yLgorICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcGVybC1uYXRpdmUvcGVybCBQRVJMNUxJQj0nJFBFUkw1TElCOiR7U1RBR0lOR19MSUJESVJ9L3Blcmw1L3NpdGVfcGVybC8ke1BWfToke1NUQUdJTkdfTElCRElSfS9wZXJsNS92ZW5kb3JfcGVybC8ke1BWfToke1NUQUdJTkdfTElCRElSfS9wZXJsNS8ke1BWfScKKworICAgICMgVXNlIC91c3IvYmluL2VudiBuYXRpdmVwZXJsIGZvciB0aGUgcGVybCBzY3JpcHQuCisgICAgZm9yIGYgaW4gYGdyZXAgLUlsICcjISAqJHtiaW5kaXJ9L3BlcmwnICR7RH0vJHtiaW5kaXJ9LypgOyBkbworICAgICAgICAgICAgc2VkIC1pIC1lICdzfCR7YmluZGlyfS9wZXJsfC91c3IvYmluL2VudiBuYXRpdmVwZXJsfCcgJGYKKyAgICBkb25lCit9CisKK1BBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAicGVybF9wYWNrYWdlX3ByZXByb2Nlc3MiCisKK3BlcmxfcGFja2FnZV9wcmVwcm9jZXNzICgpIHsKKyAgICAgICAgIyBGaXggdXAgaW5zdGFsbGVkIGNvbmZpZ3VyYXRpb24KKyAgICAgICAgc2VkIC1pIC1lICJzLCR7RH0sLGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLCR7REVCVUdfUFJFRklYX01BUH0sLGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9LCxnIiBcCisgICAgICAgICAgICAgICAtZSAicywtaXN5c3RlbSR7U1RBR0lOR19JTkNESVJ9ICwsZyIgXAorICAgICAgICAgICAgICAgLWUgInMsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJ9LCR7YmluZGlyfSxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfSU5DRElSfSwke2luY2x1ZGVkaXJ9LGciIFwKKyAgICAgICAgICAgICAgIC1lICJzLCR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9wZXJsLW5hdGl2ZS8sJHtiaW5kaXJ9LyxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSX05BVElWRX0vLCxnIiBcCisgICAgICAgICAgICAgICAtZSAicywke1NUQUdJTkdfQklORElSX1RPT0xDSEFJTn0vJHtUQVJHRVRfUFJFRklYfSwke2JpbmRpcn0sZyIgXAorICAgICAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vaDJ4cy5wZXJsIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vaDJwaC5wZXJsIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kMm1hbi5wZXJsIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kMnRleHQucGVybCBcCisgICAgICAgICAgICAke1BLR0R9JHtiaW5kaXJ9L3BvZDJ1c2FnZS5wZXJsIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kY2hlY2tlci5wZXJsIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2JpbmRpcn0vcG9kc2VsZWN0LnBlcmwgXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9DT1JFL2NvbmZpZy5oIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ09SRS9wZXJsLmggXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9DT1JFL3BwLmggXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS9Db25maWcucG0gXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9Db25maWcucG0gXAorICAgICAgICAgICAgJHtQS0dEfSR7bGliZGlyfS9wZXJsNS8ke1BWfS8ke1RBUkdFVF9BUkNIfS1saW51eC9Db25maWcucG9kIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ29uZmlnX2dpdC5wbCBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyR7VEFSR0VUX0FSQ0h9LWxpbnV4L0NvbmZpZ19oZWF2eS5wbCBcCisgICAgICAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0V4dFV0aWxzL0xpYmxpc3QvS2lkLnBtIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vRmlsZUNhY2hlLnBtIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvJHtQVn0vcG9kLyoucG9kIFwKKyAgICAgICAgICAgICR7UEtHRH0ke2xpYmRpcn0vcGVybDUvY29uZmlnLnNoCit9CisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCisKK0FMVEVSTkFUSVZFXyR7UE59LW1pc2MgPSAiY29yZWxpc3QgY3BhbiBlbmMyeHMgZW5jZ3Vlc3MgaDJwaCBoMnhzIGluc3Rtb2RzaCBqc29uX3BwIGxpYm5ldGNmZyBcCisgICAgICAgICAgICAgICAgICAgICBwaWNvbnYgcGwycG0gcG9kMmh0bWwgcG9kMm1hbiBwb2QydGV4dCBwb2QydXNhZ2UgcG9kY2hlY2tlciBwb2RzZWxlY3QgXAorICAgICAgICAgICAgICAgICAgICAgcHJvdmUgcHRhciBwdGFyZGlmZiBwdGFyZ3JlcCBzaGFzdW0gc3BsYWluIHhzdWJwcCB6aXBkZXRhaWxzIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2NvcmVsaXN0XSA9ICIke2JpbmRpcn0vY29yZWxpc3QiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbY3Bhbl0gPSAiJHtiaW5kaXJ9L2NwYW4iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZW5jMnhzXSA9ICIke2JpbmRpcn0vZW5jMnhzIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2VuY2d1ZXNzXSA9ICIke2JpbmRpcn0vZW5jZ3Vlc3MiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaDJwaF0gPSAiJHtiaW5kaXJ9L2gycGgiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaDJ4c10gPSAiJHtiaW5kaXJ9L2gyeHMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaW5zdG1vZHNoXSA9ICIke2JpbmRpcn0vaW5zdG1vZHNoIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2pzb25fcHBdID0gIiR7YmluZGlyfS9qc29uX3BwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2xpYm5ldGNmZ10gPSAiJHtiaW5kaXJ9L2xpYm5ldGNmZyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwaWNvbnZdID0gIiR7YmluZGlyfS9waWNvbnYiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcGwycG1dID0gIiR7YmluZGlyfS9wbDJwbSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwb2QyaHRtbF0gPSAiJHtiaW5kaXJ9L3BvZDJodG1sIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3BvZDJtYW5dID0gIiR7YmluZGlyfS9wb2QybWFuIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3BvZDJ0ZXh0XSA9ICIke2JpbmRpcn0vcG9kMnRleHQiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcG9kMnVzYWdlXSA9ICIke2JpbmRpcn0vcG9kMnVzYWdlIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3BvZGNoZWNrZXJdID0gIiR7YmluZGlyfS9wb2RjaGVja2VyIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3BvZHNlbGVjdF0gPSAiJHtiaW5kaXJ9L3BvZHNlbGVjdCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwcm92ZV0gPSAiJHtiaW5kaXJ9L3Byb3ZlIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3B0YXJdID0gIiR7YmluZGlyfS9wdGFyIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3B0YXJkaWZmXSA9ICIke2JpbmRpcn0vcHRhcmRpZmYiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcHRhcmdyZXBdID0gIiR7YmluZGlyfS9wdGFyZ3JlcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzaGFzdW1dID0gIiR7YmluZGlyfS9zaGFzdW0iCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc3BsYWluXSA9ICIke2JpbmRpcn0vc3BsYWluIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3hzdWJwcF0gPSAiJHtiaW5kaXJ9L3hzdWJwcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt6aXBkZXRhaWxzXSA9ICIke2JpbmRpcn0vemlwZGV0YWlscyIKKworcmVxdWlyZSBwZXJsLXB0ZXN0LmluYworCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vcGVybCAke2JpbmRpcn0vcGVybC5yZWFsICR7YmluZGlyfS9wZXJsJHtQVn0gJHtsaWJkaXJ9L2xpYnBlcmwuc28qIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS9zaXRlX3BlcmwgXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0NvbmZpZy5wbSBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vJHtUQVJHRVRfQVJDSH0tbGludXgvQ29uZmlnLnBtIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qL0NvbmZpZ19naXQucGwgXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovQ29uZmlnX2hlYXZ5LXRhcmdldC5wbCBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvY29uZmlnLnNoIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS9zdHJpY3QucG0gXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L3dhcm5pbmdzLnBtIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS93YXJuaW5ncyBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vdmFycy5wbSBcCisgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvc2l0ZV9wZXJsIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS9FeHRVdGlscy9NQU5JRkVTVC5TS0lQIFwKKyAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS9FeHRVdGlscy94c3VicHAgXAorICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L0V4dFV0aWxzL3R5cGVtYXAgXAorICAgICAgICAgICAgICAgIgorUlBST1ZJREVTXyR7UE59ICs9ICJwZXJsLW1vZHVsZS1zdHJpY3QgcGVybC1tb2R1bGUtdmFycyBwZXJsLW1vZHVsZS1jb25maWcgcGVybC1tb2R1bGUtd2FybmluZ3MgXAorICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS13YXJuaW5ncy1yZWdpc3RlciIKKworRklMRVNfJHtQTn0tc3RhdGljZGV2X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovQ09SRS9saWJwZXJsLmEiCisKK0ZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qL0NPUkUiCisKK0ZJTEVTXyR7UE59LWRvY19hcHBlbmQgPSAiICR7bGliZGlyfS9wZXJsNS8ke1BWfS9Vbmljb2RlL0NvbGxhdGUvKi50eHQgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovLnBhY2tsaXN0IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS9FbmNvZGUvZW5jb2RlLmggXAorICAgICAgICAgICAgICAgICAgICAgICAgICIKK1BBQ0tBR0VTICs9ICIke1BOfS1taXNjIgorCitGSUxFU18ke1BOfS1taXNjID0gIiR7YmluZGlyfS8qIgorCitQQUNLQUdFUyArPSAiJHtQTn0tcG9kIgorCitGSUxFU18ke1BOfS1wb2QgPSAiJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9L3BvZCBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyoucG9kIFwKKyAgICAgICAgICAgICAgICAgICAke2xpYmRpcn0vcGVybDUvJHtQVn0vKi8qLnBvZCBcCisgICAgICAgICAgICAgICAgICAgJHtsaWJkaXJ9L3Blcmw1LyR7UFZ9LyovKi8qLnBvZCBcIAorICAgICAgICAgICAgICAgICAgICR7bGliZGlyfS9wZXJsNS8ke1BWfS8qLyovKi8qLnBvZCBcIAorICAgICAgICAgICAgICAgICAgIgorCitQQUNLQUdFUyArPSAiJHtQTn0tbW9kdWxlLWNwYW4gJHtQTn0tbW9kdWxlLXVuaWNvcmUiCisKK0ZJTEVTXyR7UE59LW1vZHVsZS1jcGFuICs9ICIke2xpYmRpcn0vcGVybDUvJHtQVn0vQ1BBTiBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICIKK0ZJTEVTXyR7UE59LW1vZHVsZS11bmljb3JlICs9ICIke2xpYmRpcn0vcGVybDUvJHtQVn0vdW5pY29yZSIKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiNDAiCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAiVGhyZWFkLjMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbVGhyZWFkLjNdID0gIiR7bWFuZGlyfS9tYW4zL1RocmVhZC4zIgorCisjIENyZWF0ZSBhIHBlcmwtbW9kdWxlcyBwYWNrYWdlIHJlY29tbWVuZGluZyBhbGwgdGhlIG90aGVyIHBlcmwKKyMgcGFja2FnZXMgKGFjdHVhbGx5IHRoZSBub24gbW9kdWxlcyBwYWNrYWdlcyBhbmQgbm90IGNyZWF0ZWQgdG9vKQorQUxMT1dfRU1QVFlfJHtQTn0tbW9kdWxlcyA9ICIxIgorUEFDS0FHRVMgKz0gIiR7UE59LW1vZHVsZXMgIgorCitQQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gInNwbGl0X3BlcmxfcGFja2FnZXMgIgorCitweXRob24gc3BsaXRfcGVybF9wYWNrYWdlcyAoKSB7CisgICAgbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9wZXJsNS8ke1BWfScpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCByJy4qL2F1dG8vKFteLl0qKS9bXi9dKlwuKHNvfGxkfGl4fGFsKScsICcke1BOfS1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgcicuKmxpbnV4LyhbXlwvXSopXC5wbScsICcke1BOfS1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgYWxsb3dfZGlycz1GYWxzZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgcidNb2R1bGUvKFteXC9dKilcLnBtJywgJyR7UE59LW1vZHVsZS0lcycsICdwZXJsIG1vZHVsZSAlcycsIHJlY3Vyc2l2ZT1UcnVlLCBhbGxvd19kaXJzPUZhbHNlLCBtYXRjaF9wYXRoPVRydWUsIHByZXBlbmQ9RmFsc2UpCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgbGliZGlyLCByJ01vZHVsZS8oW15cL10qKS8uKicsICcke1BOfS1tb2R1bGUtJXMnLCAncGVybCBtb2R1bGUgJXMnLCByZWN1cnNpdmU9VHJ1ZSwgYWxsb3dfZGlycz1GYWxzZSwgbWF0Y2hfcGF0aD1UcnVlLCBwcmVwZW5kPUZhbHNlKQorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpYmRpciwgcicuKmxpbnV4LyhbXlwvXS4qKVwuKHBtfHBsfGUyeCknLCAnJHtQTn0tbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIGFsbG93X2RpcnM9RmFsc2UsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWJkaXIsIHInKF4oPyEoQ1BBTlwvfENQQU5QTFVTXC98TW9kdWxlXC98dW5pY29yZVwvKVteXC9dKS4qKVwuKHBtfHBsfGUyeCknLCAnJHtQTn0tbW9kdWxlLSVzJywgJ3BlcmwgbW9kdWxlICVzJywgcmVjdXJzaXZlPVRydWUsIGFsbG93X2RpcnM9RmFsc2UsIG1hdGNoX3BhdGg9VHJ1ZSwgcHJlcGVuZD1GYWxzZSkKKworICAgICMgcGVybC1tb2R1bGVzIHNob3VsZCByZWNvbW1lbmQgZXZlcnkgcGVybCBtb2R1bGUsIGFuZCBvbmx5IHRoZQorICAgICMgbW9kdWxlcy4gRG9uJ3QgYXR0ZW1wdCB0byB1c2UgdGhlIHJlc3VsdCBvZiBkb19zcGxpdF9wYWNrYWdlcygpIGFzIHNvbWUKKyAgICAjIG1vZHVsZXMgYXJlIG1hbnVhbGx5IHNwbGl0IChlZy4gcGVybC1tb2R1bGUtdW5pY29yZSkuCisgICAgcGFja2FnZXMgPSBmaWx0ZXIobGFtYmRhIHA6ICdwZXJsLW1vZHVsZS0nIGluIHAsIGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkpCisgICAgZC5zZXRWYXIoZC5leHBhbmQoIlJSRUNPTU1FTkRTXyR7UE59LW1vZHVsZXMiKSwgJyAnLmpvaW4ocGFja2FnZXMpKQorCisgICAgIyBSZWFkIHRoZSBwcmUtZ2VuZXJhdGVkIGRlcGVuZGVuY3kgZmlsZSwgYW5kIHVzZSBpdCB0byBzZXQgbW9kdWxlIGRlcGVuZGVjaWVzCisgICAgZm9yIGxpbmUgaW4gb3BlbihkLmV4cGFuZCgiJHtXT1JLRElSfSIpICsgJy9wZXJsLXJkZXBlbmRzLnR4dCcpLnJlYWRsaW5lcygpOgorICAgICAgICBzcGxpdGxpbmUgPSBsaW5lLnNwbGl0KCkKKyAgICAgICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnbmF0aXZlJywgZCk6CisgICAgICAgICAgICBtb2R1bGUgPSBzcGxpdGxpbmVbMF0gKyAnLW5hdGl2ZScKKyAgICAgICAgICAgIGRlcGVuZHMgPSAicGVybC1uYXRpdmUiCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBtb2R1bGUgPSBzcGxpdGxpbmVbMF0ucmVwbGFjZSgiUkRFUEVORFNfcGVybCIsICJSREVQRU5EU18ke1BOfSIpCisgICAgICAgICAgICBkZXBlbmRzID0gc3BsaXRsaW5lWzJdLnN0cmlwKCciJykucmVwbGFjZSgicGVybC1tb2R1bGUiLCAiJHtQTn0tbW9kdWxlIikKKyAgICAgICAgZC5hcHBlbmRWYXIoZC5leHBhbmQobW9kdWxlKSwgIiAiICsgZGVwZW5kcykKK30KKworcHl0aG9uKCkgeworICAgIGlmIGQuZ2V0VmFyKCdDTEFTU09WRVJSSURFJykgPT0gImNsYXNzLXRhcmdldCI6CisgICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFU19EWU5BTUlDIiwgIl5wZXJsLW1vZHVsZS0uKig/PCFuYXRpdmUpJCIpCisgICAgZWxpZiBkLmdldFZhcignQ0xBU1NPVkVSUklERScpID09ICJjbGFzcy1uYXRpdmUiOgorICAgICAgICBkLnNldFZhcigiUEFDS0FHRVNfRFlOQU1JQyIsICJecGVybC1tb2R1bGUtLiotbmF0aXZlJCIpCisgICAgZWxpZiBkLmdldFZhcignQ0xBU1NPVkVSUklERScpID09ICJjbGFzcy1uYXRpdmVzZGsiOgorICAgICAgICBkLnNldFZhcigiUEFDS0FHRVNfRFlOQU1JQyIsICJebmF0aXZlc2RrLXBlcmwtbW9kdWxlLS4qIikKK30KKworUkRFUEVORFNfJHtQTn0tbWlzYyArPSAicGVybCBwZXJsLW1vZHVsZXMiCitSREVQRU5EU18ke1BOfS1wb2QgKz0gInBlcmwiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1NUQVRFX1NDQU5fRklMRVMgKz0gIioucG0gKi5wb2QgKi5oICoucGwgKi5zaCIKKworZG9fY3JlYXRlX3JkZXBlbmRzX2luYygpIHsKKyAgICBjZCAke1dPUktESVJ9CisgICAgY2F0IDw8J0VPUFJFQU1CTEUnID4gJHtXT1JLRElSfS9wZXJsLXJkZXBlbmRzLmluYworCisjIFNvbWUgYWRkaXRpb25hbCBkZXBlbmRlbmNpZXMgdGhhdCB0aGUgYWJvdmUgZG9lc24ndCBtYW5hZ2UgdG8gZmlndXJlIG91dAorUkRFUEVORFNfJHtQTn0tbW9kdWxlLWZpbGUtc3BlYyArPSAiJHtQTn0tbW9kdWxlLWZpbGUtc3BlYy11bml4IgorUkRFUEVORFNfJHtQTn0tbW9kdWxlLW1hdGgtYmlnaW50ICs9ICIke1BOfS1tb2R1bGUtbWF0aC1iaWdpbnQtY2FsYyIKK1JERVBFTkRTXyR7UE59LW1vZHVsZS10aHJlYWQtcXVldWUgKz0gIiR7UE59LW1vZHVsZS1hdHRyaWJ1dGVzIgorUkRFUEVORFNfJHtQTn0tbW9kdWxlLW92ZXJsb2FkICs9ICIke1BOfS1tb2R1bGUtb3ZlcmxvYWRpbmciCisKKyMgR2VuZXJhdGVkIGRlcGVuZHMgbGlzdCBiZXlvbmQgdGhpcyBsaW5lCitFT1BSRUFNQkxFCisgICAgdGVzdCAtZSBwYWNrYWdlcy1zcGxpdC5uZXcgJiYgcm0gLXJmIHBhY2thZ2VzLXNwbGl0Lm5ldworICAgIGNwIC1yIHBhY2thZ2VzLXNwbGl0IHBhY2thZ2VzLXNwbGl0Lm5ldyAmJiBjZCBwYWNrYWdlcy1zcGxpdC5uZXcKKyAgICBmaW5kIC4gLW5hbWUgXCoucG0gfCB4YXJncyBzZWQgLWkgJy9ePWhlYWQvLC9ePWN1dC9kJworICAgIGVncmVwIC1yICJeXHMqKFw8dXNlIC4qfFw8cmVxdWlyZSAuKik7PyIgcGVybC1tb2R1bGUtKiAtLWluY2x1ZGU9IioucG0iIHwgXAorICAgIHNlZCAicy9cLy4qXC5wbTogKi8gKz0gL2c7cy9bXCJcJ10vL2c7cy87LiovXCIvZztzLys9IC4qXChyZXF1aXJlXHx1c2VcKVw+ICovKz0gXCJwZXJsLW1vZHVsZS0vZztzL0NQQU5QTFVTOjouKi9jcGFucGx1cy9nO3MvQ1BBTjo6LiovY3Bhbi9nO3MvOjovLS9nO3MvIFteK1wiXS4qLy9nO3MvXy8tL2c7cy9cLnBsXCIkL1wiLztzL1wiXD9cJC9cIi87cy8oLy87IiB8IHRyIFs6dXBwZXI6XSBbOmxvd2VyOl0gfCBcCisgICAgYXdrICd7aWYgKCQzICE9ICJceDIyIiQxIlx4MjIiKXsgcHJpbnQgJDB9fSd8IFwKKyAgICBncmVwIC12IC1lICJcLXZtc1wtIiAtZSBtb2R1bGUtNSAtZSAiXiQiIC1lICJcXCQiIC1lIHlvdXIgLWUgdGsgLWUgYXV0b3BlcmwgLWUgaHRtbCAtZSBodHRwIC1lIHBhcnNlLWNwYW4gLWUgcGVybC1vc3R5cGUgLWUgbmRibS1maWxlIC1lIG1vZHVsZS1tYWMgLWUgZmNnaSAtZSBsd3AgLWUgZGJkIC1lIGRiaXggfCBcCisgICAgc29ydCAtdSB8IFwKKyAgICBzZWQgJ3MvXi9SREVQRU5EU18vO3MvcGVybC1tb2R1bGUtLyR7UE59LW1vZHVsZS0vZztzL21vZHVsZS1cKG1vZHVsZS1cKS9cMS9nO3MvXChtb2R1bGUtbG9hZFwpLWNvbmRpdGlvbmFsL1wxL2c7cy9lbmNvZGUtY29uZmlnbG9jYWwvJi1wbS87JyB8IFwKKyAgICBlZ3JlcCAtd3YgJz0+fG1vZHVsZS1hfG1vZHVsZS1hcGFjaGUuP3xtb2R1bGUtYXByfG1vZHVsZS1hdXRoZW4tc2FzbHxtb2R1bGUtYi1hc21kYXRhfG1vZHVsZS1jb252ZXJ0LWViY2RpY3xtb2R1bGUtZGV2ZWwtc2l6ZXxtb2R1bGUtZGlnZXN0LXBlcmwtbWQ1fG1vZHVsZS1kdW1wdmFsdWV8bW9kdWxlLWV4dHV0aWxzLWNvbnN0YW50LWFhYXJnaDU2aGFzaHxtb2R1bGUtZXh0dXRpbHMteHNzeW1zZXR8bW9kdWxlLWZpbGUtYnNkZ2xvYnxtb2R1bGUtZm9yfG1vZHVsZS1pdHxtb2R1bGUtaW8tc29ja2V0LWluZXQ2fG1vZHVsZS1pby1zb2NrZXQtc3NsfG1vZHVsZS1pby1zdHJpbmd8bW9kdWxlLWlwYy1zeXN0ZW0tc2ltcGxlfG1vZHVsZS1sZXhpY2FsfG1vZHVsZS1sb2NhbC1saWJ8bWV0YWRhdGF8bW9kdWxlLW1vZHBlcmwtdXRpbHxtb2R1bGUtcGx1Z2dhYmxlLW9iamVjdHxtb2R1bGUtdGVzdC1idWlsZGVyLWlvLXNjYWxhcnxtb2R1bGUtdGVzdDJ8bW9kdWxlLXRleHQtdW5pZGVjb2RlfG1vZHVsZS11bmljb3JlfG1vZHVsZS13aW4zMnxvYmplY3RzXHNsb2FkfHN5c2NhbGwucGh8c3lzdGVtaW5mby5waHwlcycgfCBcCisgICAgZWdyZXAgLXd2ICc9Pnxtb2R1bGUtYWxnb3JpdGhtLWRpZmZ8bW9kdWxlLWNhcnB8bW9kdWxlLWM8ZXh0dXRpbHMtbW0tdW5peD58bW9kdWxlLWVuY29kZS1oYW5leHRyYXxtb2R1bGUtZXh0dXRpbHMtbWFrZW1ha2VyLXZlcnNpb24tcmVnZXh8bW9kdWxlLWZpbGUtc3BlY3xtb2R1bGUtaW8tY29tcHJlc3MtbHptYXxtb2R1bGUtbG9jYWxlLW1ha2V0ZXh0LWxleGljb258bW9kdWxlLWxvZy1hZ2VudHxtb2R1bGUtbWV0YS1ub3RhdGlvbnxtb2R1bGUtbmV0LWxvY2FsY2ZnfG1vZHVsZS1uZXQtcGluZy1leHRlcm5hbHxtb2R1bGUtYi1kZXBhcnNlfG1vZHVsZS1zY2FsYXItdXRpbHxtb2R1bGUtc29tZS1tb2R1bGV8bW9kdWxlLXN5bWJvbHxtb2R1bGUtdXJpfG1vZHVsZS13aW4zMmFwaS1maWxlJyA+PiAke1dPUktESVJ9L3BlcmwtcmRlcGVuZHMuZ2VuZXJhdGVkCisgICAgY3AgJHtXT1JLRElSfS9wZXJsLXJkZXBlbmRzLmdlbmVyYXRlZCAke1RISVNESVJ9L2ZpbGVzL3BlcmwtcmRlcGVuZHMudHh0Cit9CisKKyMgYml0YmFrZSBwZXJsIC1jIGNyZWF0ZV9yZGVwZW5kc19pbmMKK2FkZHRhc2sgZG9fY3JlYXRlX3JkZXBlbmRzX2luYworCitTWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gInBlcmxfc3lzcm9vdF9jcmVhdGVfd3JhcHBlciIKKworcGVybF9zeXNyb290X2NyZWF0ZV93cmFwcGVyICgpIHsKKyAgICAgICBta2RpciAtcCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0KKyAgICAgICAjIENyZWF0ZSBhIHdyYXBwZXIgdGhhdCAvdXNyL2Jpbi9lbnYgcGVybCB3aWxsIHVzZSB0byBnZXQgcGVybC1uYXRpdmUuCisgICAgICAgIyBUaGlzIE1VU1QgbGl2ZSBpbiB0aGUgbm9ybWFsIGJpbmRpci4KKyAgICAgICBjYXQgPiAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0vbmF0aXZlcGVybCA8PCBFT0YKKyMhL2Jpbi9zaAorcmVhbHBhdGg9XGByZWFkbGluayAtZm4gXCQwXGAKK2V4ZWMgXGBkaXJuYW1lIFwkcmVhbHBhdGhcYC9wZXJsLW5hdGl2ZS9wZXJsICJcJEAiCitFT0YKKyAgICAgICBjaG1vZCAwNzU1ICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfS9uYXRpdmVwZXJsCisgICAgICAgY2F0ICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfS9uYXRpdmVwZXJsCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmZfMS42LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wa2djb25mL3BrZ2NvbmZfMS42LjMuYmIKaW5kZXggOTRiYzExMi4uNzMyY2EyYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcGtnY29uZi9wa2djb25mXzEuNi4zLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BrZ2NvbmYvcGtnY29uZl8xLjYuMy5iYgpAQCAtOCw3ICs4LDYgQEAKIFNFQ1RJT04gPSAiZGV2ZWwiCiBQUk9WSURFUyArPSAicGtnY29uZmlnIgogUlBST1ZJREVTXyR7UE59ICs9ICJwa2djb25maWciCi1ERUZBVUxUX1BSRUZFUkVOQ0UgPSAiLTEiCiAKICMgVGhlIHBrZ2NvbmYgbGljZW5zZSBzZWVtcyB0byBiZSBmdW5jdGlvbmFsbHkgZXF1aXZhbGVudCB0byBCU0QtMi1DbGF1c2Ugb3IKICMgSVNDLCBidXQgaGFzIGRpZmZlcmVudCB3b3JkaW5nLCBzbyBuZWVkcyBpdHMgb3duIG5hbWUuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmsvMDAwMS1BZGQtTUlQUy1nbnUtaGFzaC1zdXBwb3J0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rLzAwMDEtQWRkLU1JUFMtZ251LWhhc2gtc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kYTAyNzViCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rLzAwMDEtQWRkLU1JUFMtZ251LWhhc2gtc3VwcG9ydC5wYXRjaApAQCAtMCwwICsxLDExMCBAQAorRnJvbSAwNTI0MGUxMzY2ODQyMmM0ZjkxMThmMmNkZTk1M2VjODc1ZDBkNjhmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTQgSmFuIDIwMjAgMDE6Mzc6MjIgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWRkIE1JUFMgZ251IGhhc2ggc3VwcG9ydAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvYXJjaC1taXBzLmMgfCAxICsKKyBzcmMvcHJlbGluay5jICAgfCAxICsKKyBzcmMvcHJlbGluay5oICAgfCA1ICsrKysrCisgMyBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKKworLS0tIGEvc3JjL2FyY2gtbWlwcy5jCisrKysgYi9zcmMvYXJjaC1taXBzLmMKK0BAIC0zMjQsNiArMzI0LDcgQEAgbWlwc19hZGp1c3RfZHluIChEU08gKmRzbywgaW50IG4sIEdFbGZfRAorICAgICBjYXNlIERUX01JUFNfQkFTRV9BRERSRVNTOgorICAgICBjYXNlIERUX01JUFNfUkxEX01BUDoKKyAgICAgY2FzZSBEVF9NSVBTX09QVElPTlM6CisrICAgIGNhc2UgRFRfTUlQU19YSEFTSDoKKyAgICAgICBpZiAoZHluLT5kX3VuLmRfcHRyID49IHN0YXJ0KQorIAlkeW4tPmRfdW4uZF9wdHIgKz0gYWRqdXN0OworICAgICAgIHJldHVybiAxOworLS0tIGEvc3JjL3ByZWxpbmsuYworKysrIGIvc3JjL3ByZWxpbmsuYworQEAgLTQyNSw2ICs0MjUsNyBAQCBwcmVsaW5rX3ByZXBhcmUgKERTTyAqZHNvKQorIAkgIHsKKyAJICBjYXNlIFNIVF9IQVNIOgorIAkgIGNhc2UgU0hUX0dOVV9IQVNIOgorKwkgIGNhc2UgU0hUX01JUFNfWEhBU0g6CisgCSAgY2FzZSBTSFRfRFlOU1lNOgorIAkgIGNhc2UgU0hUX1JFTDoKKyAJICBjYXNlIFNIVF9SRUxBOgorLS0tIGEvc3JjL3ByZWxpbmsuaAorKysrIGIvc3JjL3ByZWxpbmsuaAorQEAgLTExNCw2ICsxMTQsMTEgQEAgdHlwZWRlZiB1aW50OF90IEVsZjY0X0J5dGU7CisgI2RlZmluZSBTSFRfTUlQU19BQklGTEFHUyAgICAgICAweDcwMDAwMDJhCisgI2VuZGlmCisgCisrI2lmbmRlZiBTSFRfTUlQU19YSEFTSAorKyNkZWZpbmUgRFRfTUlQU19YSEFTSAkgICAgMHg3MDAwMDAzNgorKyNkZWZpbmUgU0hUX01JUFNfWEhBU0ggICAgICAgMHg3MDAwMDAyYgorKyNlbmRpZgorKworICNpZm5kZWYgUlNTX1VOREVGCisgI2RlZmluZSBSU1NfVU5ERUYgICAgICAgICAgICAgIDAKKyAjZW5kaWYKKy0tLSBhL3NyYy9kc28uYworKysrIGIvc3JjL2Rzby5jCitAQCAtMTA5LDYgKzEwOSwxMSBAQCByZWFkX2R5bmFtaWMgKERTTyAqZHNvKQorIAkJICAgIGRzby0+aW5mb19EVF9HTlVfSEFTSCA9IGR5bi5kX3VuLmRfdmFsOworIAkJICAgIGRzby0+aW5mb19zZXRfbWFzayB8PSAoMVVMTCA8PCBEVF9HTlVfSEFTSF9CSVQpOworIAkJICB9CisrCQllbHNlIGlmIChkeW4uZF90YWcgPT0gRFRfTUlQU19YSEFTSCkKKysJCSAgeworKwkJICAgIGRzby0+aW5mb19EVF9HTlVfSEFTSCA9IGR5bi5kX3VuLmRfdmFsOworKwkJICAgIGRzby0+aW5mb19zZXRfbWFzayB8PSAoMVVMTCA8PCBEVF9HTlVfSEFTSF9CSVQpOworKwkJICB9CisgCQllbHNlIGlmIChkeW4uZF90YWcgPT0gRFRfVExTREVTQ19QTFQpCisgCQkgIHsKKyAJCSAgICBkc28tPmluZm9fRFRfVExTREVTQ19QTFQgPSBkeW4uZF91bi5kX3ZhbDsKK0BAIC0xNDYzLDYgKzE0NjgsNyBAQCBhZGp1c3RfZHNvIChEU08gKmRzbywgR0VsZl9BZGRyIHN0YXJ0LCBHCisgCSAgYnJlYWs7CisgCWNhc2UgU0hUX0hBU0g6CisgCWNhc2UgU0hUX0dOVV9IQVNIOgorKwljYXNlIFNIVF9NSVBTX1hIQVNIOgorIAljYXNlIFNIVF9OT0JJVFM6CisgCWNhc2UgU0hUX1NUUlRBQjoKKyAJICBicmVhazsKKy0tLSBhL3NyYy9zcGFjZS5jCisrKysgYi9zcmMvc3BhY2UuYworQEAgLTYxLDYgKzYxLDcgQEAgcHJpbnRfc2VjdGlvbnMgKERTTyAqZHNvLCBHRWxmX0VoZHIgKmVoZAorICAgICAgIHsgU0hUX0dOVV92ZXJzeW0sICJWRVJTWU0iIH0sCisgICAgICAgeyBTSFRfR05VX0xJQkxJU1QsICJMSUJMSVNUIiB9LAorICAgICAgIHsgU0hUX0dOVV9IQVNILCAiR05VX0hBU0giIH0sCisrICAgICAgeyBTSFRfTUlQU19YSEFTSCwgIk1JUFNfWEhBU0giIH0sCisgICAgICAgeyAwLCBOVUxMIH0KKyAgICAgfTsKKyAKK0BAIC0xODMsNiArMTg0LDcgQEAgcmVhZG9ubHlfaXNfbW92YWJsZSAoRFNPICpkc28sIEdFbGZfRWhkcgorICAgICB7CisgICAgIGNhc2UgU0hUX0hBU0g6CisgICAgIGNhc2UgU0hUX0dOVV9IQVNIOgorKyAgICBjYXNlIFNIVF9NSVBTX1hIQVNIOgorICAgICBjYXNlIFNIVF9EWU5TWU06CisgICAgIGNhc2UgU0hUX1JFTDoKKyAgICAgY2FzZSBTSFRfUkVMQToKK0BAIC01NTgsNiArNTYwLDcgQEAgZmluZF9yZWFkb25seV9zcGFjZSAoRFNPICpkc28sIEdFbGZfU2hkcgorIAkJICAgIHsKKyAJCSAgICBjYXNlIFNIVF9IQVNIOgorIAkJICAgIGNhc2UgU0hUX0dOVV9IQVNIOgorKwkJICAgIGNhc2UgU0hUX01JUFNfWEhBU0g6CisgCQkgICAgY2FzZSBTSFRfRFlOU1lNOgorIAkJICAgIGNhc2UgU0hUX1NUUlRBQjoKKyAJCSAgICBjYXNlIFNIVF9HTlVfdmVyZGVmOgorLS0tIGEvc3JjL2V4ZWMuYworKysrIGIvc3JjL2V4ZWMuYworQEAgLTY1LDcgKzY1LDExIEBAIHVwZGF0ZV9keW5hbWljX3RhZ3MgKERTTyAqZHNvLCBHRWxmX1NoZHIKKyAJICB8fCAoZHluYW1pY19pbmZvX2lzX3NldCAoZHNvLCBEVF9HTlVfSEFTSF9CSVQpCisgCSAgICAgICYmIGRzby0+aW5mb19EVF9HTlVfSEFTSCA9PSBvbGRfc2hkcltqXS5zaF9hZGRyCisgCSAgICAgICYmIG9sZF9zaGRyW2pdLnNoX3R5cGUgPT0gU0hUX0dOVV9IQVNICistCSAgICAgICYmIHNldF9keW5hbWljIChkc28sIERUX0dOVV9IQVNILCBzaGRyW2ldLnNoX2FkZHIsIDEpKSkKKysJICAgICAgJiYgc2V0X2R5bmFtaWMgKGRzbywgRFRfR05VX0hBU0gsIHNoZHJbaV0uc2hfYWRkciwgMSkpCisrCSAgfHwgKGR5bmFtaWNfaW5mb19pc19zZXQgKGRzbywgRFRfR05VX0hBU0hfQklUKQorKwkgICAgICAmJiBkc28tPmluZm9fRFRfR05VX0hBU0ggPT0gb2xkX3NoZHJbal0uc2hfYWRkcgorKwkgICAgICAmJiBvbGRfc2hkcltqXS5zaF90eXBlID09IFNIVF9NSVBTX1hIQVNICisrCSAgICAgICYmIHNldF9keW5hbWljIChkc28sIERUX01JUFNfWEhBU0gsIHNoZHJbaV0uc2hfYWRkciwgMSkpKQorIAlyZXR1cm4gMTsKKyAgICAgfQorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rLzAwMDEtc3JjLWFyY2gtbWlwcy5jLWNoZWNrLWluZm8tcmVzb2x2ZXRscy1iZWZvcmUtdXNlLWl0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGluay8wMDAxLXNyYy1hcmNoLW1pcHMuYy1jaGVjay1pbmZvLXJlc29sdmV0bHMtYmVmb3JlLXVzZS1pdHMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxNjg4MjQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rLzAwMDEtc3JjLWFyY2gtbWlwcy5jLWNoZWNrLWluZm8tcmVzb2x2ZXRscy1iZWZvcmUtdXNlLWl0cy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gMjEzNjk2OWUzZTE5NmI5Y2Y3ZjQ3ODgzNDBlZmE0YjFkOWIzOTU2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxMSBPY3QgMjAxOCAxMDowNTo1MiArMDgwMAotU3ViamVjdDogW1BBVENIXSBzcmMvYXJjaC1taXBzLmM6IGNoZWNrIGluZm8tPnJlc29sdmV0bHMgYmVmb3JlIHVzZSBpdHMgbWVtYmVyCi0KLVRoZSBpbmZvLT5yZXNvbHZldGxzIG1pZ2h0IGJlIE5VTEwgYWNjb3JkaW5nIHRvIHNyYy9wcmVsaW5rLmM6Ci1bc25pcF0KLSAvKiBEeW5hbWljIGxpbmtlciBkb2VzIG5vdCBkZXBlbmQgb24gYW55IG90aGVyIGxpYnJhcnksCi0gICAgYWxsIHN5bWJvbHMgcmVzb2x2ZSB0byB0aGVtc2VsdmVzIHdpdGggdGhlIGV4Y2VwdGlvbgotICAgIG9mIFNITl9VTkRFRiBzeW1ib2xzIHdoaWNoIHJlc29sdmUgdG8gMC4gICovCi1pZiAoaW5mby0+c3ltdGFiW3Jfc3ltXS5zdF9zaG5keCA9PSBTSE5fVU5ERUYpCi0gIHsKLSAgICBpbmZvLT5yZXNvbHZlZW50ID0gTlVMTDsKLSAgICBpbmZvLT5yZXNvbHZldGxzID0gTlVMTDsKLVtzbmlwXQotCi1TbyB3ZSBtdXN0IGNoZWNrIGl0IGJlZm9yZSB1c2UgaXRzIG1lbWJlcnMsIG90aGVyd2lzZSwgdGhlcmUgbWlnaHQgYmUKLVNlZ21lbnRhdGlvbiBmYXVsdCBlcnJvci4KLQotRml4ZWQ6Ci1NQUNISU5FID0gInFlbXVtaXBzIgotSU1BR0VfSU5TVEFMTF9hcHBlbmQgPSAiIHFlbXUiCi0kIGJpdGJha2UgY29yZS1pbWFnZS1taW5pbWFsCi1bc25pcF0KLXwgL3BhdGgvdG8vcWVtdW1pcHMtcG9reS1saW51eC9jb3JlLWltYWdlLW1pbmltYWwvMS4wLXIwL3RlbXAvcnVuLnByZWxpbmtfaW1hZ2UuMTAwMDogbGluZSAxMTE6ICAxMDEwIFNlZ21lbnRhdGlvbiBmYXVsdCAgICAgIChjb3JlIGR1bXBlZCkKLVtzbmlwXQotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy55b2N0b3Byb2plY3Qub3JnL3BpcGVybWFpbC95b2N0by8yMDE4LU9jdG9iZXIvMDQyODEyLmh0bWxdCi0KLVNpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL2FyY2gtbWlwcy5jIHwgMyArKy0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9zcmMvYXJjaC1taXBzLmMgYi9zcmMvYXJjaC1taXBzLmMKLWluZGV4IGNjYjE4MzQuLjAyYzYwOGYgMTAwNjQ0Ci0tLS0gYS9zcmMvYXJjaC1taXBzLmMKLSsrKyBiL3NyYy9hcmNoLW1pcHMuYwotQEAgLTU2Nyw3ICs1NjcsOCBAQCBtaXBzX3ByZWxpbmtfcmVsb2MgKHN0cnVjdCBwcmVsaW5rX2luZm8gKmluZm8sIEdFbGZfQWRkciByX29mZnNldCwKLSAgICAgICBpZiAoZHNvLT5laGRyLmVfdHlwZSA9PSBFVF9FWEVDKQotIAl7Ci0gCSAgdmFsdWUgPSBpbmZvLT5yZXNvbHZlIChpbmZvLCByX3N5bSwgcl90eXBlKTsKLS0JICB2YWx1ZSArPSBpbmZvLT5yZXNvbHZldGxzLT5vZmZzZXQgLSBUTFNfVFBfT0ZGU0VUOwotKwkgIGlmIChpbmZvLT5yZXNvbHZldGxzICE9IE5VTEwpCi0rCSAgICB2YWx1ZSArPSBpbmZvLT5yZXNvbHZldGxzLT5vZmZzZXQgLSBUTFNfVFBfT0ZGU0VUOwotIAkgIGlmIChyX3R5cGUgPT0gUl9NSVBTX1RMU19UUFJFTDMyKQotIAkgICAgbWlwc19wcmVsaW5rXzMyYml0X3JlbG9jIChkc28sIHJlbGEsIHZhbHVlKTsKLSAJICBlbHNlCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGlua19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wcmVsaW5rL3ByZWxpbmtfZ2l0LmJiCmluZGV4IGYwOTQ2ZGUuLmUxOTdhZjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ByZWxpbmsvcHJlbGlua19naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHJlbGluay9wcmVsaW5rX2dpdC5iYgpAQCAtOSw3ICs5LDcgQEAKIHJ1bnRpbWUgYW5kIHRodXMgcHJvZ3JhbXMgY29tZSB1cCBmYXN0ZXIuIgogTElDRU5TRSA9ICJHUEx2MiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM5M2MwNTUwYmQzMTczZjQ1MDRiMmNiZDg5OTFlNTBiIgotU1JDUkVWID0gImE4NTNhNWQ3MTVkODRlZWM5M2FhNjhlOGYyZGYyNmI3ZDg2MGY1YjIiCitTUkNSRVYgPSAiZjk5NzU1MzdkYmZkOWFkZTBmYzgxM2JkNWNmNWZjYmU0MTc1M2EzNyIKIFBWID0gIjEuMCtnaXQke1NSQ1BWfSIKIAogIwpAQCAtMjgsMTIgKzI4LDEyIEBACiBQQUNLQUdFUyA9KyAiJHtQTn0tY3JvbiIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9wcmVsaW5rLWNyb3NzLmdpdDticmFuY2g9Y3Jvc3NfcHJlbGlua19zdGFnaW5nIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtQWRkLU1JUFMtZ251LWhhc2gtc3VwcG9ydC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9wcmVsaW5rLmNvbmYgXAogICAgICAgICAgICBmaWxlOi8vcHJlbGluay5jcm9uLmRhaWx5IFwKICAgICAgICAgICAgZmlsZTovL3ByZWxpbmsuZGVmYXVsdCBcCiAgICAgICAgICAgIGZpbGU6Ly9tYWNyb3MucHJlbGluayBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXNyYy1hcmNoLW1pcHMuYy1jaGVjay1pbmZvLXJlc29sdmV0bHMtYmVmb3JlLXVzZS1pdHMucGF0Y2ggXAotIgorICAgICAgICAgICAiCiBVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKICMgZXJyb3I6IGVycm9yLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDAxLXBzZXVkby1Pbi1hLURCLWZpeHVwLXJlbW92ZS1maWxlcy10aGF0LWRvLW5vdC1leGlzdC0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMS1wc2V1ZG8tT24tYS1EQi1maXh1cC1yZW1vdmUtZmlsZXMtdGhhdC1kby1ub3QtZXhpc3QtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjljNDllMzMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMS1wc2V1ZG8tT24tYS1EQi1maXh1cC1yZW1vdmUtZmlsZXMtdGhhdC1kby1ub3QtZXhpc3QtLnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gYjA5MDJlMzYxMDhiNDllNmJjODhkNmIyNTFjYzJmOGNmZmNkNWExMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJpY2FyZG8gUmliYWxkYSA8cmljYXJkb0ByaWJhbGRhLmNvbT4KK0RhdGU6IFN1biwgNSBBcHIgMjAyMCAxMTo0MDozMCArMDAwMAorU3ViamVjdDogW1BBVENIXSBwc2V1ZG86IE9uIGEgREIgZml4dXAgcmVtb3ZlIGZpbGVzIHRoYXQgZG8gbm90IGV4aXN0IGFueW1vcmUKKworSWYgdGhlIHVzZXIgZGVjaWRlcyB0byBmaXggYSBkYXRhYmFzZSwgcmVtb3ZlIHRoZSBmaWxlcyB0aGF0IGRvIG5vdAorZXhpc3QgYW55bW9yZS4KK0lmIG9ubHkgREIgdGVzdCBpcyBzZWxlY3RlZCBkbyBub3QgY2hhbmdlIHRoZSBiZWhhdmlvdXIgKHJldHVybiBlcnJvcikuCisKK1NpZ25lZC1vZmYtYnk6IFJpY2FyZG8gUmliYWxkYSA8cmljYXJkb0ByaWJhbGRhLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2xpc3RzLm9wZW5lbWJlZGRlZC5vcmcvZy9vcGVuZW1iZWRkZWQtY29yZS9tZXNzYWdlLzEzNzA0NV0KKy0tLQorIHBzZXVkby5jIHwgMTMgKysrKysrKysrKy0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcHNldWRvLmMgYi9wc2V1ZG8uYworaW5kZXggMGY1ODUwZS4uOThlNWIwYyAxMDA2NDQKKy0tLSBhL3BzZXVkby5jCisrKysgYi9wc2V1ZG8uYworQEAgLTEwODcsOSArMTA4NywxNSBAQCBwc2V1ZG9fZGJfY2hlY2soaW50IGZpeCkgeworIAkJCWludCBmaXh1cF9uZWVkZWQgPSAwOworIAkJCXBzZXVkb19kZWJ1ZyhQREJHRl9EQiwgIkNoZWNraW5nIDwlcz5cbiIsIG0tPnBhdGgpOworIAkJCWlmIChsc3RhdChtLT5wYXRoLCAmYnVmKSkgeworLQkJCQllcnJvcnMgPSBFWElUX0ZBSUxVUkU7CistCQkJCXBzZXVkb19kaWFnKCJjYW4ndCBzdGF0IDwlcz5cbiIsIG0tPnBhdGgpOworLQkJCQljb250aW51ZTsKKysJCQkJaWYgKCFmaXgpIHsKKysJCQkJCXBzZXVkb19kaWFnKCJjYW4ndCBzdGF0IDwlcz5cbiIsIG0tPnBhdGgpOworKwkJCQkJZXJyb3JzID0gRVhJVF9GQUlMVVJFOworKwkJCQkJY29udGludWU7CisrCQkJCX0gZWxzZSB7CisrCQkJCQlwc2V1ZG9fZGVidWcoUERCR0ZfREIsICJjYW4ndCBzdGF0IDwlcz5cbiIsIG0tPnBhdGgpOworKwkJCQkJZml4dXBfbmVlZGVkID0gMjsKKysJCQkJCWdvdG8gZG9fZml4dXA7CisrCQkJCX0KKyAJCQl9CisgCQkJLyogY2FuJ3QgY2hlY2sgZm9yIGRldmljZSB0eXBlIG1pc21hdGNoZXMsIHVpZC9naWQsIG9yCisgCQkJICogcGVybWlzc2lvbnMsIGJlY2F1c2UgdGhvc2UgYXJlIHRoZSB2ZXJ5IHRoaW5ncyB3ZQorQEAgLTExMjUsNiArMTEzMSw3IEBAIHBzZXVkb19kYl9jaGVjayhpbnQgZml4KSB7CisgCQkJCQlTX0lTRElSKG0tPm1vZGUpKTsKKyAJCQkJZml4dXBfbmVlZGVkID0gMjsKKyAJCQl9CisrCQkJZG9fZml4dXA6CisgCQkJaWYgKGZpeHVwX25lZWRlZCkgeworIAkJCQkvKiBpbiBmaXh1cCBtb2RlLCBlaXRoZXIgZGVsZXRlIChtaXNtYXRjaGVzKSBvcgorIAkJCQkgKiBjb3JyZWN0IChkZXYvaW5vKS4KKy0tIAorMi4yMS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDAxLXJlYWxwYXRoLmMtUmVtb3ZlLXRyYWlsaW5nLXNsYXNoZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMS1yZWFscGF0aC5jLVJlbW92ZS10cmFpbGluZy1zbGFzaGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE3ODI5ZWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwMS1yZWFscGF0aC5jLVJlbW92ZS10cmFpbGluZy1zbGFzaGVzLnBhdGNoCkBAIC0wLDAgKzEsNTcgQEAKK0Zyb20gODZjOWE1NjEwZTMzMzNhZDZhYWFkYjFhYzFlOGI1YTJjOTQ4ZDExOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAyNSBOb3YgMjAxOSAxODo0Njo0NSArMDgwMAorU3ViamVjdDogW1BBVENIXSByZWFscGF0aC5jOiBSZW1vdmUgdHJhaWxpbmcgc2xhc2hlcworCitMaW51eCBzeXN0ZW0ncyByZWFscGF0aCgpIHJlbW92ZSB0cmFpbGluZyBzbGFzaGVzLCBidXQgcHNldWRvJ3MgZG9lc24ndCwgbmVlZAorbWFrZSB0aGVtIGlkZW50aWNhbC4KKworRS5nLiwgdGhlIGZvbGxvd2luZyBjb2RlIChyZWwuYykgcHJpbnRzICcvdG1wJyB3aXRoIHN5c3RlbSdzIHJlYWxwYXRoLCBidXQKK3BzZXVkbydzIHJlYWxwYXRoIHByaW50cyAnL3RtcC8nOgorCisgICAgI2luY2x1ZGUgPHN0ZGlvLmg+CisgICAgI2luY2x1ZGUgPGxpbWl0cy5oPgorICAgICNpbmNsdWRlIDxzdGRsaWIuaD4KKworICAgIGludCBtYWluKCkgeworICAgICAgICBjaGFyIG91dFtQQVRIX01BWF07CisgICAgICAgIHByaW50ZigiJXNcbiIsIHJlYWxwYXRoKCIvdG1wLyIsIG91dCkpOworICAgICAgICByZXR1cm4gMDsKKyAgICB9CisKKyQgYml0YmFrZSBiYXNlLXBhc3N3ZCAtY2RldnNoZWxsICMgRm9yIHBzZXVkbyBlbnYKKyQgZ2NjIHJlbC5jCiskIC4vYS5vdXQKKy90bXAvIChidXQgc2hvdWxkIGJlIC90bXApCisKK1RoaXMgcGF0Y2ggZml4ZXMgdGhlIHByb2JsZW0uCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2xpc3RzLnlvY3RvcHJvamVjdC5vcmcvZy9wb2t5L21lc3NhZ2UvMTE4NzldCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgcG9ydHMvdW5peC9ndXRzL3JlYWxwYXRoLmMgfCAgICA5ICsrKysrKysrLQorIDEgZmlsZSBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3BvcnRzL3VuaXgvZ3V0cy9yZWFscGF0aC5jIGIvcG9ydHMvdW5peC9ndXRzL3JlYWxwYXRoLmMKKy0tLSBhL3BvcnRzL3VuaXgvZ3V0cy9yZWFscGF0aC5jCisrKysgYi9wb3J0cy91bml4L2d1dHMvcmVhbHBhdGguYworQEAgLTE0LDcgKzE0LDE0IEBACisgCQllcnJubyA9IEVOQU1FVE9PTE9ORzsKKyAJCXJldHVybiBOVUxMOworIAl9CistCWlmICgobGVuID0gc3RybGVuKHJuYW1lKSkgPj0gcHNldWRvX3N5c19wYXRoX21heCgpKSB7CisrCQlsZW4gPSBzdHJsZW4ocm5hbWUpOworKwkJY2hhciAqZXAgPSBybmFtZSArIGxlbiAtIDE7CisrCQl3aGlsZSAoZXAgPiBybmFtZSAmJiAqZXAgPT0gJy8nKSB7CisrCQkJLS1sZW47CisrCQkJKihlcC0tKSA9ICdcMCc7CisrCQl9CisrCisrCQlpZiAobGVuID49IHBzZXVkb19zeXNfcGF0aF9tYXgoKSkgeworIAkJZXJybm8gPSBFTkFNRVRPT0xPTkc7CisgCQlyZXR1cm4gTlVMTDsKKyAJfQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwNi14YXR0ci1hZGp1c3QtZm9yLWF0dHItMi40LjQ4LXJlbGVhc2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vZmlsZXMvMDAwNi14YXR0ci1hZGp1c3QtZm9yLWF0dHItMi40LjQ4LXJlbGVhc2UucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTYxMzU3ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy8wMDA2LXhhdHRyLWFkanVzdC1mb3ItYXR0ci0yLjQuNDgtcmVsZWFzZS5wYXRjaApAQCAtMCwwICsxLDQ4IEBACitGcm9tIDkzZDk1ZWQyZWFlZGNjYTExMGMyMTRlMWZlM2Y4ODk2YjFmNmY4NTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTcgRGVjIDIwMTkgMjA6MjQ6MjcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0geGF0dHI6IGFkanVzdCBmb3IgYXR0ciAyLjQuNDggcmVsZWFzZQorCitMYXRlc3QgdmVyc2lvbnMgb2YgYXR0ciBoYXZlIHJlbW92ZWQgdGhlIHhhdHRyLmggaGVhZGVyLAord2l0aCB0aGUgcmF0aW9uYWxlIHRoYXQgbGliYyBpcyBwcm92aWRpbmcgdGhlIHNhbWUgd3JhcHBlcnMuCisKK2F0dHIvYXR0cmlidXRlcy5oIGlzIHByb3ZpZGluZyB0aGUgRU5PQVRUUiBkZWZpbml0aW9uLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgcG9ydHMvbGludXgvc3VicG9ydHMgICAgICAgICB8IDUgKysrLS0KKyBwb3J0cy9saW51eC94YXR0ci9wb3J0ZGVmcy5oIHwgMyArKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3BvcnRzL2xpbnV4L3N1YnBvcnRzIGIvcG9ydHMvbGludXgvc3VicG9ydHMKK2luZGV4IDJjNDNhYzkuLjc0MGVjODMgMTAwNzU1CistLS0gYS9wb3J0cy9saW51eC9zdWJwb3J0cworKysrIGIvcG9ydHMvbGludXgvc3VicG9ydHMKK0BAIC0yOSwxMSArMjksMTIgQEAgZmkKKyBpZgkkcG9ydF94YXR0cjsgdGhlbgorIAljYXQgPiBkdW1teS5jIDw8RU9GCisgI2luY2x1ZGUgPHN5cy90eXBlcy5oPgorLSNpbmNsdWRlIDxhdHRyL3hhdHRyLmg+CisrI2luY2x1ZGUgPHN5cy94YXR0ci5oPgorKyNpbmNsdWRlIDxhdHRyL2F0dHJpYnV0ZXMuaD4KKyBpbnQgaTsKKyBFT0YKKyAJaWYgISAke0NDfSAtYyAtbyBkdW1teS5vIGR1bW15LmMgPi9kZXYvbnVsbCAyPiYxOyB0aGVuCistCQllY2hvID4mMiAiV2FybmluZzogQ2FuJ3QgY29tcGlsZSB0cml2aWFsIHByb2dyYW0gdXNpbmcgPGF0dHIveGF0dHIuaD4iLgorKwkJZWNobyA+JjIgIldhcm5pbmc6IENhbid0IGNvbXBpbGUgdHJpdmlhbCBwcm9ncmFtIHVzaW5nIDxhdHRyL2F0dHJpYnV0ZXMuaD4iLgorIAkJZWNobyA+JjIgIiAgICAgICAgIHhhdHRyIHN1cHBvcnQgd2lsbCByZXF1aXJlIHRoYXQgaGVhZGVyLiIKKyAJZmkKKyAJZWNobyAibGludXgveGF0dHIiCitkaWZmIC0tZ2l0IGEvcG9ydHMvbGludXgveGF0dHIvcG9ydGRlZnMuaCBiL3BvcnRzL2xpbnV4L3hhdHRyL3BvcnRkZWZzLmgKK2luZGV4IDU2Y2QzY2EuLjA2OGQzOWEgMTAwNjQ0CistLS0gYS9wb3J0cy9saW51eC94YXR0ci9wb3J0ZGVmcy5oCisrKysgYi9wb3J0cy9saW51eC94YXR0ci9wb3J0ZGVmcy5oCitAQCAtMiw1ICsyLDYgQEAKKyAgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTEdQTC0yLjEtb25seQorICAqCisgICovCistI2luY2x1ZGUgPGF0dHIveGF0dHIuaD4KKysjaW5jbHVkZSA8c3lzL3hhdHRyLmg+CisrI2luY2x1ZGUgPGF0dHIvYXR0cmlidXRlcy5oPgorICNpbmNsdWRlIDxzdGRpbnQuaD4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9zZWNjb21wLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL2ZpbGVzL3NlY2NvbXAucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgzZjk5NwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9maWxlcy9zZWNjb21wLnBhdGNoCkBAIC0wLDAgKzEsMTM3IEBACitQc2V1ZG8gY2hhbmdlcyB0aGUgc3lzY2FsbCBhY2Nlc3MgcGF0dGVybnMgd2hpY2ggbWFrZXMgaXQgaW5jb21wYXRpYmxlIHdpdGgKK3NlY2NvbXAuIFRoZXJlZm9yZSBpbnRlcmNlcHQgdGhlIHNlY2NvbXAgc3lzY2FsbCBhbmQgYWx0ZXIgaXQsIHByZXRlbmRpbmcgdGhhdAorc2VjY29tcCB3YXMgc2V0dXAgd2hlbiBpbiBmYWN0IHdlIGRvIG5vdGhpbmcuIElmIHdlIGVycm9yIGFzIHVuc3VwcG9ydGVkLCAKK3V0aWxpdGllcyBsaWtlIGZpbGUgd2lsbCBleGl0IHdpdGggZXJyb3JzIHNvIHdlIGNhbid0IGp1c3QgZGlzYWJsZSBpdC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitSUCAyMDIwLzQvMworU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK0l0IGZhaWxzIHRvIGNvbXBpbGUgcHNldWRvLW5hdGl2ZSBvbiBjZW50b3MgNzoKKworfCBwb3J0cy9saW51eC9wc2V1ZG9fd3JhcHBlcnMuYzogSW4gZnVuY3Rpb24g4oCYcHJjdGzigJk6Cit8IHBvcnRzL2xpbnV4L3BzZXVkb193cmFwcGVycy5jOjEyOToxNDogZXJyb3I6IOKAmFNFQ0NPTVBfU0VUX01PREVfRklMVEVS4oCZIHVuZGVjbGFyZWQgKGZpcnN0IHVzZSBpbiB0aGlzIGZ1bmN0aW9uKQorfCAgICBpZiAoY21kID09IFNFQ0NPTVBfU0VUX01PREVfRklMVEVSKSB7Cit8ICAgICAgICAgICAgICAgXgorCitBZGQgbWFjcm8gZ3VhcmQgZm9yIHNlY2NvbXAgdG8gYXZvaWQgdGhlIGZhaWx1cmUuCisKK1NpZ25lZC1vZmYtYnk6IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorCitJbmRleDogZ2l0L3BvcnRzL2xpbnV4L3BzZXVkb193cmFwcGVycy5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvcG9ydHMvbGludXgvcHNldWRvX3dyYXBwZXJzLmMKKysrKyBnaXQvcG9ydHMvbGludXgvcHNldWRvX3dyYXBwZXJzLmMKK0BAIC01Nyw2ICs1Nyw3IEBAIGludCBwc2V1ZG9fY2Fwc2V0KGNhcF91c2VyX2hlYWRlcl90IGhkcnAKKyBsb25nCisgc3lzY2FsbChsb25nIG51bWJlciwgLi4uKSB7CisgCWxvbmcgcmMgPSAtMTsKKysJdmFfbGlzdCBhcDsKKyAKKyAJaWYgKCFwc2V1ZG9fY2hlY2tfd3JhcHBlcnMoKSB8fCAhcmVhbF9zeXNjYWxsKSB7CisgCQkvKiByYyB3YXMgaW5pdGlhbGl6ZWQgdG8gdGhlICJmYWlsdXJlIiB2YWx1ZSAqLworQEAgLTc3LDYgKzc4LDIwIEBAIHN5c2NhbGwobG9uZyBudW1iZXIsIC4uLikgeworIAkodm9pZCkgbnVtYmVyOworICNlbmRpZgorIAorKyNpZmRlZiBTWVNfc2VjY29tcAorKwkvKiBwc2V1ZG8gYW5kIHNlY2NvbXAgYXJlIGluY29tcGF0aWJsZSBhcyBwc2V1ZG8gdXNlcyBkaWZmZXJlbnQgc3lzY2FsbHMKKysJICogc28gcHJldGVuZCB0byBlbmFibGUgc2VjY29tcCBidXQgcmVhbGx5IGRvIG5vdGhpbmcgKi8KKysJaWYgKG51bWJlciA9PSBTWVNfc2VjY29tcCkgeworKwkJdW5zaWduZWQgbG9uZyBjbWQ7CisrCQl2YV9zdGFydChhcCwgbnVtYmVyKTsKKysJCWNtZCA9IHZhX2FyZyhhcCwgdW5zaWduZWQgbG9uZyk7CisrCQl2YV9lbmQoYXApOworKwkJaWYgKGNtZCA9PSBTRUNDT01QX1NFVF9NT0RFX0ZJTFRFUikgeworKwkJICAgIHJldHVybiAwOworKwkJfQorKwl9CisrI2VuZGlmCisrCisgCS8qIGdjYyBtYWdpYyB0byBhdHRlbXB0IHRvIGp1c3QgcGFzcyB0aGVzZSBhcmdzIHRvIHN5c2NhbGwuIHdlIGhhdmUgdG8KKyAJICogZ3Vlc3MgYWJvdXQgdGhlIG51bWJlciBvZiBhcmdzOyB0aGUgZG9jcyBkaXNjdXNzIGNhbGxpbmcgY29udmVudGlvbnMKKyAJICogdXAgdG8gNywgc28gbGV0J3MgdHJ5IHRoYXQ/CitAQCAtOTIsMyArMTA4LDQ0IEBAIHN0YXRpYyBsb25nIHdyYXBfc3lzY2FsbChsb25nIG5yLCB2YV9saXMKKyAJKHZvaWQpIGFwOworIAlyZXR1cm4gLTE7CisgfQorKworK2ludAorK3ByY3RsKGludCBvcHRpb24sIC4uLikgeworKwlpbnQgcmMgPSAtMTsKKysJdmFfbGlzdCBhcDsKKysKKysJaWYgKCFwc2V1ZG9fY2hlY2tfd3JhcHBlcnMoKSB8fCAhcmVhbF9wcmN0bCkgeworKwkJLyogcmMgd2FzIGluaXRpYWxpemVkIHRvIHRoZSAiZmFpbHVyZSIgdmFsdWUgKi8KKysJCXBzZXVkb19lbm9zeXMoInByY3RsIik7CisrCQlyZXR1cm4gcmM7CisrCX0KKysKKysjaWZkZWYgU0VDQ09NUF9TRVRfTU9ERV9GSUxURVIKKysJLyogcHNldWRvIGFuZCBzZWNjb21wIGFyZSBpbmNvbXBhdGlibGUgYXMgcHNldWRvIHVzZXMgZGlmZmVyZW50IHN5c2NhbGxzCisrCSAqIHNvIHByZXRlbmQgdG8gZW5hYmxlIHNlY2NvbXAgYnV0IHJlYWxseSBkbyBub3RoaW5nICovCisrCWlmIChvcHRpb24gPT0gUFJfU0VUX1NFQ0NPTVApIHsKKysJCXVuc2lnbmVkIGxvbmcgY21kOworKwkJdmFfc3RhcnQoYXAsIG9wdGlvbik7CisrCQljbWQgPSB2YV9hcmcoYXAsIHVuc2lnbmVkIGxvbmcpOworKwkJdmFfZW5kKGFwKTsKKysJCWlmIChjbWQgPT0gU0VDQ09NUF9TRVRfTU9ERV9GSUxURVIpIHsKKysJCSAgICByZXR1cm4gMDsKKysJCX0KKysJfQorKyNlbmRpZgorKworKwkvKiBnY2MgbWFnaWMgdG8gYXR0ZW1wdCB0byBqdXN0IHBhc3MgdGhlc2UgYXJncyB0byBwcmN0bC4gd2UgaGF2ZSB0bworKwkgKiBndWVzcyBhYm91dCB0aGUgbnVtYmVyIG9mIGFyZ3M7IHRoZSBkb2NzIGRpc2N1c3MgY2FsbGluZyBjb252ZW50aW9ucworKwkgKiB1cCB0byA1LCBzbyBsZXQncyB0cnkgdGhhdD8KKysJICovCisrCXZvaWQgKnJlcyA9IF9fYnVpbHRpbl9hcHBseSgodm9pZCAoKikoKSkgcmVhbF9wcmN0bCwgX19idWlsdGluX2FwcGx5X2FyZ3MoKSwgc2l6ZW9mKGxvbmcpICogNSk7CisrCV9fYnVpbHRpbl9yZXR1cm4ocmVzKTsKKyt9CisrCisrLyogdW51c2VkLgorKyAqLworK3N0YXRpYyBpbnQgd3JhcF9wcmN0bChpbnQgb3B0aW9uLCB2YV9saXN0IGFwKSB7CisrCSh2b2lkKSBvcHRpb247CisrCSh2b2lkKSBhcDsKKysJcmV0dXJuIC0xOworK30KK0luZGV4OiBnaXQvcG9ydHMvbGludXgvZ3V0cy9wcmN0bC5jCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gL2Rldi9udWxsCisrKysgZ2l0L3BvcnRzL2xpbnV4L2d1dHMvcHJjdGwuYworQEAgLTAsMCArMSwxNSBAQAorKy8qCisrICogQ29weXJpZ2h0IChjKSAyMDIwIFJpY2hhcmQgUHVyZGllCisrICoKKysgKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTEdQTC0yLjEtb25seQorKyAqCisrICogaW50IHByY3RsKGludCBvcHRpb24sIC4uLikKKysgKglpbnQgcmMgPSAtMTsKKysgKi8KKysKKysJLyogd2Ugc2hvdWxkIG5ldmVyIGdldCBoZXJlLCBwcmN0bCBpcyBoYW5kLXdyYXBwZWQgKi8KKysJcmMgPSAtMTsKKysKKysvKglyZXR1cm4gcmM7CisrICogfQorKyAqLworSW5kZXg6IGdpdC9wb3J0cy9saW51eC9wb3J0ZGVmcy5oCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gZ2l0Lm9yaWcvcG9ydHMvbGludXgvcG9ydGRlZnMuaAorKysrIGdpdC9wb3J0cy9saW51eC9wb3J0ZGVmcy5oCitAQCAtMzIsMyArMzIsNSBAQCBHTElCQ19DT01QQVRfU1lNQk9MKG1lbWNweSwyLjApOworIAorICNpbmNsdWRlIDxsaW51eC9jYXBhYmlsaXR5Lmg+CisgI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisrI2luY2x1ZGUgPHN5cy9wcmN0bC5oPgorKyNpbmNsdWRlIDxsaW51eC9zZWNjb21wLmg+CitJbmRleDogZ2l0L3BvcnRzL2xpbnV4L3dyYXBmdW5jcy5pbgorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdpdC5vcmlnL3BvcnRzL2xpbnV4L3dyYXBmdW5jcy5pbgorKysrIGdpdC9wb3J0cy9saW51eC93cmFwZnVuY3MuaW4KK0BAIC01NiwzICs1Niw0IEBAIGludCBnZXRncmVudF9yKHN0cnVjdCBncm91cCAqZ2J1ZiwgY2hhcgorIGludCBjYXBzZXQoY2FwX3VzZXJfaGVhZGVyX3QgaGRycCwgY29uc3QgY2FwX3VzZXJfZGF0YV90IGRhdGFwKTsgLyogcmVhbF9mdW5jPXBzZXVkb19jYXBzZXQgKi8KKyBsb25nIHN5c2NhbGwobG9uZyBuciwgLi4uKTsgLyogaGFuZF93cmFwcGVkPTEgKi8KKyBpbnQgcmVuYW1lYXQyKGludCBvbGRkaXJmZCwgY29uc3QgY2hhciAqb2xkcGF0aCwgaW50IG5ld2RpcmZkLCBjb25zdCBjaGFyICpuZXdwYXRoLCB1bnNpZ25lZCBpbnQgZmxhZ3MpOyAvKiBmbGFncz1BVF9TWU1MSU5LX05PRk9MTE9XICovCisraW50IHByY3RsKGludCBvcHRpb24sIC4uLik7IC8qIGhhbmRfd3JhcHBlZD0xICovCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG8uaW5jCmluZGV4IDdmZjhlNDQuLjUwZTMwMDYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG8uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3BzZXVkby9wc2V1ZG8uaW5jCkBAIC0xNiw2ICsxNiw3IEBACiBQUk9WSURFUyArPSAidmlydHVhbC9mYWtlcm9vdCIKIAogTUFLRU9QVFMgPSAiIgorTUFLRU9QVFNfY2xhc3MtbmF0aXZlID0gIidSUEFUSD0tV2wsLS1ycGF0aD1YT1JJR0lOLy4uLy4uLy4uL3NxbGl0ZTMtbmF0aXZlL3Vzci9saWIvJyIKIAogaW5oZXJpdCBzaXRlaW5mbyBwa2djb25maWcKIApAQCAtMTE1LDYgKzExNiw3IEBACiB9CiAKIGRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSAoKSB7CisJY2hycGF0aCAke0R9JHtiaW5kaXJ9L3BzZXVkbyAtciBgY2hycGF0aCAke0R9JHtiaW5kaXJ9L3BzZXVkbyB8IGN1dCAtZCA9IC1mIDIgfCBzZWQgcy9YT1JJR0lOL1xcJE9SSUdJTi9gCiAJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQogCSMgVGhlIGZhbGxiYWNrIGZpbGVzIHNob3VsZCBuZXZlciBiZSBtb2RpZmllZAogCWluc3RhbGwgLW0gNDQ0ICR7V09SS0RJUn0vZmFsbGJhY2stcGFzc3dkICR7RH0ke3N5c2NvbmZkaXJ9L3Bhc3N3ZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHNldWRvL3BzZXVkb19naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvX2dpdC5iYgppbmRleCAxZjJkZjRhLi5hMzA0OWM1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9wc2V1ZG8vcHNldWRvX2dpdC5iYgpAQCAtOCw2ICs4LDEwIEBACiAgICAgICAgICAgIGZpbGU6Ly90b29tYW55ZmlsZXMucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1tYWtldGFibGVzLXdyYXBwZXJzLXVzZS1QeXRob24tMy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1zdGF0eC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlYWxwYXRoLmMtUmVtb3ZlLXRyYWlsaW5nLXNsYXNoZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi14YXR0ci1hZGp1c3QtZm9yLWF0dHItMi40LjQ4LXJlbGVhc2UucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2VjY29tcC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBzZXVkby1Pbi1hLURCLWZpeHVwLXJlbW92ZS1maWxlcy10aGF0LWRvLW5vdC1leGlzdC0ucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ1JFViA9ICIwNjAwNThiYjI5ZjcwYjI0NGU2ODViM2M3MDRlYjA2NDFiNzM2ZjczIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtY29udmVydC1zaGViYW5nLWZyb20tcHl0aG9uLXRvLXB5dGhvbjMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1jb252ZXJ0LXNoZWJhbmctZnJvbS1weXRob24tdG8tcHl0aG9uMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNDE2MjQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtY29udmVydC1zaGViYW5nLWZyb20tcHl0aG9uLXRvLXB5dGhvbjMucGF0Y2gKQEAgLTAsMCArMSw1NTUgQEAKK0Zyb20gMDA4NDhkNzYwZmEzOTk5ZTJiZWQ3NTliNTg1NDUyYjM1ZDY1ZDZlYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDUgTWFyIDIwMjAgMTI6MDI6MzUgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gY29udmVydCBzaGViYW5nIGZyb20gcHl0aG9uIHRvIHB5dGhvbjMKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0aHViLmNvbS9udW1weS9udW1weS9jb21taXQvNTgzOTAxYTA3NGRjNjUxNDVkM2Q2MTM2YmE3ZGNkMDI2MzRkNjgwYl0KKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKworLS0tCisgZG9jL0RJU1RVVElMUy5yc3QudHh0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIGRvYy9jZG9jL251bXB5ZmlsdGVyLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBkb2MvcG9zdHByb2Nlc3MucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgZG9jL3N1bW1hcml6ZS5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2Rpc3R1dGlscy9jb252X3RlbXBsYXRlLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9kaXN0dXRpbHMvY3B1aW5mby5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZGlzdHV0aWxzL2Zyb21fdGVtcGxhdGUucHkgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2Rpc3R1dGlscy9zZXR1cC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9kaXN0dXRpbHMvc3lzdGVtX2luZm8ucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZjJweS9fX2luaXRfXy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2YycHkvYXV4ZnVuY3MucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9mMnB5L2NhcGlfbWFwcy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZjJweS9jYl9ydWxlcy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2YycHkvY2Z1bmNzLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9mMnB5L2NvbW1vbl9ydWxlcy5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZjJweS9jcmFja2ZvcnRyYW4ucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2YycHkvZGlhZ25vc2UucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9mMnB5L2YycHkyZS5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZjJweS9mOTBtb2RfcnVsZXMucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2YycHkvZnVuYzJzdWJyLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9mMnB5L3J1bGVzLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvZjJweS9zZXR1cC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L2YycHkvdXNlX3J1bGVzLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9saW5hbGcvbGFwYWNrX2xpdGUvY2xhcGFja19zY3J1Yi5weSAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvbGluYWxnL2xhcGFja19saXRlL21ha2VfbGl0ZS5weSAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L21hL2JlbmNoLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9tYS9zZXR1cC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgbnVtcHkvbWF0cml4bGliL3NldHVwLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L3JhbmRvbS9fZXhhbXBsZXMvY3l0aG9uL2V4dGVuZGluZy5weXggICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS9yYW5kb20vX2V4YW1wbGVzL2N5dGhvbi9leHRlbmRpbmdfZGlzdHJpYnV0aW9ucy5weXggfCAyICstCisgbnVtcHkvc2V0dXAucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIG51bXB5L3Rlc3RpbmcvcHJpbnRfY29lcmNpb25fdGFibGVzLnB5ICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyBudW1weS90ZXN0aW5nL3NldHVwLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgcnVudGVzdHMucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHNldHVwLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0b29scy9jX2NvdmVyYWdlL2NfY292ZXJhZ2VfcmVwb3J0LnB5ICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdG9vbHMvY2hhbmdlbG9nLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHRvb2xzL2NpL3B1c2hfZG9jc190b19yZXBvLnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0b29scy9maW5kX2RlcHJlY2F0ZWRfZXNjYXBlZF9jaGFyYWN0ZXJzLnB5ICAgICAgICAgICAgICAgfCAyICstCisgdG9vbHMvcmVmZ3VpZGVfY2hlY2sucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHRvb2xzL3N3aWcvdGVzdC9zZXR1cC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0b29scy9zd2lnL3Rlc3QvdGVzdEFycmF5LnB5ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdG9vbHMvc3dpZy90ZXN0L3Rlc3RGYXJyYXkucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHRvb2xzL3N3aWcvdGVzdC90ZXN0RmxhdC5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0b29scy9zd2lnL3Rlc3QvdGVzdEZvcnRyYW4ucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdG9vbHMvc3dpZy90ZXN0L3Rlc3RNYXRyaXgucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIHRvb2xzL3N3aWcvdGVzdC90ZXN0U3VwZXJUZW5zb3IucHkgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyB0b29scy9zd2lnL3Rlc3QvdGVzdFRlbnNvci5weSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAyICstCisgdG9vbHMvc3dpZy90ZXN0L3Rlc3RWZWN0b3IucHkgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArLQorIDQ5IGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDQ5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZG9jL0RJU1RVVElMUy5yc3QudHh0IGIvZG9jL0RJU1RVVElMUy5yc3QudHh0CitpbmRleCBiY2VmODI1Li5iYzE3MDBmIDEwMDY0NAorLS0tIGEvZG9jL0RJU1RVVElMUy5yc3QudHh0CisrKysgYi9kb2MvRElTVFVUSUxTLnJzdC50eHQKK0BAIC01OSw3ICs1OSw3IEBAIFNjaVB5IHB1cmUgUHl0aG9uIHBhY2thZ2UgZXhhbXBsZQorIAorIEJlbG93IGlzIGFuIGV4YW1wbGUgb2YgYSBtaW5pbWFsIGBgc2V0dXAucHlgYCBmaWxlIGZvciBhIHB1cmUgU2NpUHkgcGFja2FnZTo6CisgCistICAjIS91c3IvYmluL2VudiBweXRob24KKysgICMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAgIGRlZiBjb25maWd1cmF0aW9uKHBhcmVudF9wYWNrYWdlPScnLHRvcF9wYXRoPU5vbmUpOgorICAgICAgIGZyb20gbnVtcHkuZGlzdHV0aWxzLm1pc2NfdXRpbCBpbXBvcnQgQ29uZmlndXJhdGlvbgorICAgICAgIGNvbmZpZyA9IENvbmZpZ3VyYXRpb24oJ215cGFja2FnZScscGFyZW50X3BhY2thZ2UsdG9wX3BhdGgpCitkaWZmIC0tZ2l0IGEvZG9jL2Nkb2MvbnVtcHlmaWx0ZXIucHkgYi9kb2MvY2RvYy9udW1weWZpbHRlci5weQoraW5kZXggMGVjNTA2OS4uMDY3YmQzNiAxMDA3NTUKKy0tLSBhL2RvYy9jZG9jL251bXB5ZmlsdGVyLnB5CisrKysgYi9kb2MvY2RvYy9udW1weWZpbHRlci5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIG51bXB5ZmlsdGVyLnB5IElOUFVURklMRQorIAorZGlmZiAtLWdpdCBhL2RvYy9wb3N0cHJvY2Vzcy5weSBiL2RvYy9wb3N0cHJvY2Vzcy5weQoraW5kZXggMmU1MGMxMS4uMWJlNmYzOSAxMDA3NTUKKy0tLSBhL2RvYy9wb3N0cHJvY2Vzcy5weQorKysrIGIvZG9jL3Bvc3Rwcm9jZXNzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgJXByb2cgTU9ERSBGSUxFUy4uLgorIAorZGlmZiAtLWdpdCBhL2RvYy9zdW1tYXJpemUucHkgYi9kb2Mvc3VtbWFyaXplLnB5CitpbmRleCBjZmNlMjcxLi41NjNhZjAyIDEwMDc1NQorLS0tIGEvZG9jL3N1bW1hcml6ZS5weQorKysrIGIvZG9jL3N1bW1hcml6ZS5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIHN1bW1hcml6ZS5weQorIAorZGlmZiAtLWdpdCBhL251bXB5L2Rpc3R1dGlscy9jb252X3RlbXBsYXRlLnB5IGIvbnVtcHkvZGlzdHV0aWxzL2NvbnZfdGVtcGxhdGUucHkKK2luZGV4IDNiY2I3YjguLjg4NDMyYzggMTAwNjQ0CistLS0gYS9udW1weS9kaXN0dXRpbHMvY29udl90ZW1wbGF0ZS5weQorKysrIGIvbnVtcHkvZGlzdHV0aWxzL2NvbnZfdGVtcGxhdGUucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyB0YWtlcyB0ZW1wbGF0ZWQgZmlsZSAueHh4LnNyYyBhbmQgcHJvZHVjZXMgLnh4eCBmaWxlICB3aGVyZSAueHh4IGlzCisgLmkgb3IgLmMgb3IgLmgsIHVzaW5nIHRoZSBmb2xsb3dpbmcgdGVtcGxhdGUgcnVsZXMKK2RpZmYgLS1naXQgYS9udW1weS9kaXN0dXRpbHMvY3B1aW5mby5weSBiL251bXB5L2Rpc3R1dGlscy9jcHVpbmZvLnB5CitpbmRleCBiYzk3MjgzLi44NzUwMmE5IDEwMDY0NAorLS0tIGEvbnVtcHkvZGlzdHV0aWxzL2NwdWluZm8ucHkKKysrKyBiL251bXB5L2Rpc3R1dGlscy9jcHVpbmZvLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgY3B1aW5mbworIAorZGlmZiAtLWdpdCBhL251bXB5L2Rpc3R1dGlscy9mcm9tX3RlbXBsYXRlLnB5IGIvbnVtcHkvZGlzdHV0aWxzL2Zyb21fdGVtcGxhdGUucHkKK2luZGV4IGM1YzExNjMuLmFmNzU5NzEgMTAwNjQ0CistLS0gYS9udW1weS9kaXN0dXRpbHMvZnJvbV90ZW1wbGF0ZS5weQorKysrIGIvbnVtcHkvZGlzdHV0aWxzL2Zyb21fdGVtcGxhdGUucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyAKKyBwcm9jZXNzX2ZpbGUoZmlsZW5hbWUpCitkaWZmIC0tZ2l0IGEvbnVtcHkvZGlzdHV0aWxzL3NldHVwLnB5IGIvbnVtcHkvZGlzdHV0aWxzL3NldHVwLnB5CitpbmRleCA4MmE1M2JkLi42NDY5MjFiIDEwMDY0NAorLS0tIGEvbnVtcHkvZGlzdHV0aWxzL3NldHVwLnB5CisrKysgYi9udW1weS9kaXN0dXRpbHMvc2V0dXAucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorIAorIGRlZiBjb25maWd1cmF0aW9uKHBhcmVudF9wYWNrYWdlPScnLHRvcF9wYXRoPU5vbmUpOgorZGlmZiAtLWdpdCBhL251bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weSBiL251bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weQoraW5kZXggNGYzNDBiNi4uMTg5MDgxZCAxMDA2NDQKKy0tLSBhL251bXB5L2Rpc3R1dGlscy9zeXN0ZW1faW5mby5weQorKysrIGIvbnVtcHkvZGlzdHV0aWxzL3N5c3RlbV9pbmZvLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgVGhpcyBmaWxlIGRlZmluZXMgYSBzZXQgb2Ygc3lzdGVtX2luZm8gY2xhc3NlcyBmb3IgZ2V0dGluZworIGluZm9ybWF0aW9uIGFib3V0IHZhcmlvdXMgcmVzb3VyY2VzIChsaWJyYXJpZXMsIGxpYnJhcnkgZGlyZWN0b3JpZXMsCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS9fX2luaXRfXy5weSBiL251bXB5L2YycHkvX19pbml0X18ucHkKK2luZGV4IDQyZTM2MzIuLjA5YTM2NTcgMTAwNjQ0CistLS0gYS9udW1weS9mMnB5L19faW5pdF9fLnB5CisrKysgYi9udW1weS9mMnB5L19faW5pdF9fLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiRm9ydHJhbiB0byBQeXRob24gSW50ZXJmYWNlIEdlbmVyYXRvci4KKyAKKyAiIiIKK2RpZmYgLS1naXQgYS9udW1weS9mMnB5L2F1eGZ1bmNzLnB5IGIvbnVtcHkvZjJweS9hdXhmdW5jcy5weQoraW5kZXggNDA0YmRiZC4uZDIzZDk1OSAxMDA2NDQKKy0tLSBhL251bXB5L2YycHkvYXV4ZnVuY3MucHkKKysrKyBiL251bXB5L2YycHkvYXV4ZnVuY3MucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyAKKyBBdXhpbGlhcnkgZnVuY3Rpb25zIGZvciBmMnB5MmUuCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS9jYXBpX21hcHMucHkgYi9udW1weS9mMnB5L2NhcGlfbWFwcy5weQoraW5kZXggY2U3OWY2OC4uZTVkM2ZkMiAxMDA2NDQKKy0tLSBhL251bXB5L2YycHkvY2FwaV9tYXBzLnB5CisrKysgYi9udW1weS9mMnB5L2NhcGlfbWFwcy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIAorIENvcHlyaWdodCAxOTk5LDIwMDAgUGVhcnUgUGV0ZXJzb24gYWxsIHJpZ2h0cyByZXNlcnZlZCwKK2RpZmYgLS1naXQgYS9udW1weS9mMnB5L2NiX3J1bGVzLnB5IGIvbnVtcHkvZjJweS9jYl9ydWxlcy5weQoraW5kZXggMTgzZDdjMi4uOTNlOTNmZSAxMDA2NDQKKy0tLSBhL251bXB5L2YycHkvY2JfcnVsZXMucHkKKysrKyBiL251bXB5L2YycHkvY2JfcnVsZXMucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyAKKyBCdWlsZCBjYWxsLWJhY2sgbWVjaGFuaXNtIGZvciBmMnB5MmUuCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS9jZnVuY3MucHkgYi9udW1weS9mMnB5L2NmdW5jcy5weQoraW5kZXggY2NiN2IzYS4uY2RiNzgzZCAxMDA2NDQKKy0tLSBhL251bXB5L2YycHkvY2Z1bmNzLnB5CisrKysgYi9udW1weS9mMnB5L2NmdW5jcy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIAorIEMgZGVjbGFyYXRpb25zLCBDUFAgbWFjcm9zLCBhbmQgQyBmdW5jdGlvbnMgZm9yIGYycHkyZS4KK2RpZmYgLS1naXQgYS9udW1weS9mMnB5L2NvbW1vbl9ydWxlcy5weSBiL251bXB5L2YycHkvY29tbW9uX3J1bGVzLnB5CitpbmRleCBmNjFkODgxLi5mZTUxMGJmIDEwMDY0NAorLS0tIGEvbnVtcHkvZjJweS9jb21tb25fcnVsZXMucHkKKysrKyBiL251bXB5L2YycHkvY29tbW9uX3J1bGVzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgCisgQnVpbGQgY29tbW9uIGJsb2NrIG1lY2hhbmlzbSBmb3IgZjJweTJlLgorZGlmZiAtLWdpdCBhL251bXB5L2YycHkvY3JhY2tmb3J0cmFuLnB5IGIvbnVtcHkvZjJweS9jcmFja2ZvcnRyYW4ucHkKK2luZGV4IDJhYWY1ZDcuLmZiNWVmMmYgMTAwNzU1CistLS0gYS9udW1weS9mMnB5L2NyYWNrZm9ydHJhbi5weQorKysrIGIvbnVtcHkvZjJweS9jcmFja2ZvcnRyYW4ucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyBjcmFja2ZvcnRyYW4gLS0tIHJlYWQgZm9ydHJhbiAoNzcsOTApIGNvZGUgYW5kIGV4dHJhY3QgZGVjbGFyYXRpb24gaW5mb3JtYXRpb24uCisgCitkaWZmIC0tZ2l0IGEvbnVtcHkvZjJweS9kaWFnbm9zZS5weSBiL251bXB5L2YycHkvZGlhZ25vc2UucHkKK2luZGV4IDAyNDFmZWQuLjZjMDMwNGMgMTAwNjQ0CistLS0gYS9udW1weS9mMnB5L2RpYWdub3NlLnB5CisrKysgYi9udW1weS9mMnB5L2RpYWdub3NlLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbgorIAorIGltcG9ydCBvcworZGlmZiAtLWdpdCBhL251bXB5L2YycHkvZjJweTJlLnB5IGIvbnVtcHkvZjJweS9mMnB5MmUucHkKK2luZGV4IGQwM2VmZjkuLmMxN2JmZDkgMTAwNzU1CistLS0gYS9udW1weS9mMnB5L2YycHkyZS5weQorKysrIGIvbnVtcHkvZjJweS9mMnB5MmUucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyAKKyBmMnB5MmUgLSBGb3J0cmFuIHRvIFB5dGhvbiBDL0FQSSBnZW5lcmF0b3IuIDJuZCBFZGl0aW9uLgorZGlmZiAtLWdpdCBhL251bXB5L2YycHkvZjkwbW9kX3J1bGVzLnB5IGIvbnVtcHkvZjJweS9mOTBtb2RfcnVsZXMucHkKK2luZGV4IDg1ZWFlODAuLjcwYmUxMjggMTAwNjQ0CistLS0gYS9udW1weS9mMnB5L2Y5MG1vZF9ydWxlcy5weQorKysrIGIvbnVtcHkvZjJweS9mOTBtb2RfcnVsZXMucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyAKKyBCdWlsZCBGOTAgbW9kdWxlIHN1cHBvcnQgZm9yIGYycHkyZS4KK2RpZmYgLS1naXQgYS9udW1weS9mMnB5L2Z1bmMyc3Vici5weSBiL251bXB5L2YycHkvZnVuYzJzdWJyLnB5CitpbmRleCA2MDEwZDVhLi5mZGVhMGMyIDEwMDY0NAorLS0tIGEvbnVtcHkvZjJweS9mdW5jMnN1YnIucHkKKysrKyBiL251bXB5L2YycHkvZnVuYzJzdWJyLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgCisgUnVsZXMgZm9yIGJ1aWxkaW5nIEMvQVBJIG1vZHVsZSB3aXRoIGYycHkyZS4KK2RpZmYgLS1naXQgYS9udW1weS9mMnB5L3J1bGVzLnB5IGIvbnVtcHkvZjJweS9ydWxlcy5weQoraW5kZXggZjJmNzEzYi4uZjg3YjAzYyAxMDA3NTUKKy0tLSBhL251bXB5L2YycHkvcnVsZXMucHkKKysrKyBiL251bXB5L2YycHkvcnVsZXMucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyAKKyBSdWxlcyBmb3IgYnVpbGRpbmcgQy9BUEkgbW9kdWxlIHdpdGggZjJweTJlLgorZGlmZiAtLWdpdCBhL251bXB5L2YycHkvc2V0dXAucHkgYi9udW1weS9mMnB5L3NldHVwLnB5CitpbmRleCBhOGMxNDAxLi4yZTdhNTE3IDEwMDY0NAorLS0tIGEvbnVtcHkvZjJweS9zZXR1cC5weQorKysrIGIvbnVtcHkvZjJweS9zZXR1cC5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIHNldHVwLnB5IGZvciBpbnN0YWxsaW5nIEYyUFkKKyAKK2RpZmYgLS1naXQgYS9udW1weS9mMnB5L3VzZV9ydWxlcy5weSBiL251bXB5L2YycHkvdXNlX3J1bGVzLnB5CitpbmRleCA2ZjQ0ZjE2Li44MjE0ZjQyIDEwMDY0NAorLS0tIGEvbnVtcHkvZjJweS91c2VfcnVsZXMucHkKKysrKyBiL251bXB5L2YycHkvdXNlX3J1bGVzLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgCisgQnVpbGQgJ3VzZSBvdGhlcnMgbW9kdWxlIGRhdGEnIG1lY2hhbmlzbSBmb3IgZjJweTJlLgorZGlmZiAtLWdpdCBhL251bXB5L2xpbmFsZy9sYXBhY2tfbGl0ZS9jbGFwYWNrX3NjcnViLnB5IGIvbnVtcHkvbGluYWxnL2xhcGFja19saXRlL2NsYXBhY2tfc2NydWIucHkKK2luZGV4IDQzNDU4NjEuLjkxZTY2ZTcgMTAwNjQ0CistLS0gYS9udW1weS9saW5hbGcvbGFwYWNrX2xpdGUvY2xhcGFja19zY3J1Yi5weQorKysrIGIvbnVtcHkvbGluYWxnL2xhcGFja19saXRlL2NsYXBhY2tfc2NydWIucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uCisgCisgaW1wb3J0IHN5cywgb3MKK2RpZmYgLS1naXQgYS9udW1weS9saW5hbGcvbGFwYWNrX2xpdGUvbWFrZV9saXRlLnB5IGIvbnVtcHkvbGluYWxnL2xhcGFja19saXRlL21ha2VfbGl0ZS5weQoraW5kZXggNjExMDJkNi4uMDIxMWY0ZSAxMDA3NTUKKy0tLSBhL251bXB5L2xpbmFsZy9sYXBhY2tfbGl0ZS9tYWtlX2xpdGUucHkKKysrKyBiL251bXB5L2xpbmFsZy9sYXBhY2tfbGl0ZS9tYWtlX2xpdGUucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyBVc2FnZTogbWFrZV9saXRlLnB5IDx3cmFwcGVkX3JvdXRpbmVzX2ZpbGU+IDxsYXBhY2tfZGlyPiA8b3V0cHV0X2Rpcj4KKyAKK2RpZmYgLS1naXQgYS9udW1weS9tYS9iZW5jaC5weSBiL251bXB5L21hL2JlbmNoLnB5CitpbmRleCBhOWJhNDJkLi5hMzc3NDM2IDEwMDY0NAorLS0tIGEvbnVtcHkvbWEvYmVuY2gucHkKKysrKyBiL251bXB5L21hL2JlbmNoLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICMgLSotIGNvZGluZzogdXRmLTggLSotCisgCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KK2RpZmYgLS1naXQgYS9udW1weS9tYS9zZXR1cC5weSBiL251bXB5L21hL3NldHVwLnB5CitpbmRleCBkMWQ2Yzg5Li5hMDRiNzliIDEwMDY0NAorLS0tIGEvbnVtcHkvbWEvc2V0dXAucHkKKysrKyBiL251bXB5L21hL3NldHVwLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKyAKKyBkZWYgY29uZmlndXJhdGlvbihwYXJlbnRfcGFja2FnZT0nJyx0b3BfcGF0aD1Ob25lKToKK2RpZmYgLS1naXQgYS9udW1weS9tYXRyaXhsaWIvc2V0dXAucHkgYi9udW1weS9tYXRyaXhsaWIvc2V0dXAucHkKK2luZGV4IGQwOTgxZDYuLjU3NTM0ZDEgMTAwNjQ0CistLS0gYS9udW1weS9tYXRyaXhsaWIvc2V0dXAucHkKKysrKyBiL251bXB5L21hdHJpeGxpYi9zZXR1cC5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCisgCisgZGVmIGNvbmZpZ3VyYXRpb24ocGFyZW50X3BhY2thZ2U9JycsIHRvcF9wYXRoPU5vbmUpOgorZGlmZiAtLWdpdCBhL251bXB5L3JhbmRvbS9fZXhhbXBsZXMvY3l0aG9uL2V4dGVuZGluZy5weXggYi9udW1weS9yYW5kb20vX2V4YW1wbGVzL2N5dGhvbi9leHRlbmRpbmcucHl4CitpbmRleCA3YTBkZmUwLi4zYTdmODFhIDEwMDY0NAorLS0tIGEvbnVtcHkvcmFuZG9tL19leGFtcGxlcy9jeXRob24vZXh0ZW5kaW5nLnB5eAorKysrIGIvbnVtcHkvcmFuZG9tL19leGFtcGxlcy9jeXRob24vZXh0ZW5kaW5nLnB5eAorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICNjeXRob246IGxhbmd1YWdlX2xldmVsPTMKKyAKKyBmcm9tIGxpYmMuc3RkaW50IGNpbXBvcnQgdWludDMyX3QKK2RpZmYgLS1naXQgYS9udW1weS9yYW5kb20vX2V4YW1wbGVzL2N5dGhvbi9leHRlbmRpbmdfZGlzdHJpYnV0aW9ucy5weXggYi9udW1weS9yYW5kb20vX2V4YW1wbGVzL2N5dGhvbi9leHRlbmRpbmdfZGlzdHJpYnV0aW9ucy5weXgKK2luZGV4IDFiZWY1MDYuLjRkYTZhNGIgMTAwNjQ0CistLS0gYS9udW1weS9yYW5kb20vX2V4YW1wbGVzL2N5dGhvbi9leHRlbmRpbmdfZGlzdHJpYnV0aW9ucy5weXgKKysrKyBiL251bXB5L3JhbmRvbS9fZXhhbXBsZXMvY3l0aG9uL2V4dGVuZGluZ19kaXN0cmlidXRpb25zLnB5eAorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICNjeXRob246IGxhbmd1YWdlX2xldmVsPTMKKyAiIiIKKyBUaGlzIGZpbGUgc2hvd3MgaG93IHRoZSB0byB1c2UgYSBCaXRHZW5lcmF0b3IgdG8gY3JlYXRlIGEgZGlzdHJpYnV0aW9uLgorZGlmZiAtLWdpdCBhL251bXB5L3NldHVwLnB5IGIvbnVtcHkvc2V0dXAucHkKK2luZGV4IDRjY2RhZWUuLmRiMDZjODIgMTAwNjQ0CistLS0gYS9udW1weS9zZXR1cC5weQorKysrIGIvbnVtcHkvc2V0dXAucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBwcmludF9mdW5jdGlvbgorIAorIAorZGlmZiAtLWdpdCBhL251bXB5L3Rlc3RpbmcvcHJpbnRfY29lcmNpb25fdGFibGVzLnB5IGIvbnVtcHkvdGVzdGluZy9wcmludF9jb2VyY2lvbl90YWJsZXMucHkKK2luZGV4IDcyYjIyY2UuLjFlOWEzMDEgMTAwNzU1CistLS0gYS9udW1weS90ZXN0aW5nL3ByaW50X2NvZXJjaW9uX3RhYmxlcy5weQorKysrIGIvbnVtcHkvdGVzdGluZy9wcmludF9jb2VyY2lvbl90YWJsZXMucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiJQcmludHMgdHlwZS1jb2VyY2lvbiB0YWJsZXMgZm9yIHRoZSBidWlsdC1pbiBOdW1QeSB0eXBlcworIAorICIiIgorZGlmZiAtLWdpdCBhL251bXB5L3Rlc3Rpbmcvc2V0dXAucHkgYi9udW1weS90ZXN0aW5nL3NldHVwLnB5CitpbmRleCA3YzNmMmZiLi5iZDMxNWVlIDEwMDc1NQorLS0tIGEvbnVtcHkvdGVzdGluZy9zZXR1cC5weQorKysrIGIvbnVtcHkvdGVzdGluZy9zZXR1cC5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCisgCisgCitkaWZmIC0tZ2l0IGEvcnVudGVzdHMucHkgYi9ydW50ZXN0cy5weQoraW5kZXggYTM4MDU0Zi4uMzgzZGRhYSAxMDA3NTUKKy0tLSBhL3J1bnRlc3RzLnB5CisrKysgYi9ydW50ZXN0cy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIHJ1bnRlc3RzLnB5IFtPUFRJT05TXSBbLS0gQVJHU10KKyAKK2RpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5CitpbmRleCBkN2Y4MDdiLi43MDVlYTVkIDEwMDc1NQorLS0tIGEvc2V0dXAucHkKKysrKyBiL3NldHVwLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiIE51bVB5IGlzIHRoZSBmdW5kYW1lbnRhbCBwYWNrYWdlIGZvciBhcnJheSBjb21wdXRpbmcgd2l0aCBQeXRob24uCisgCisgSXQgcHJvdmlkZXM6CitkaWZmIC0tZ2l0IGEvdG9vbHMvY19jb3ZlcmFnZS9jX2NvdmVyYWdlX3JlcG9ydC5weSBiL3Rvb2xzL2NfY292ZXJhZ2UvY19jb3ZlcmFnZV9yZXBvcnQucHkKK2luZGV4IDMyN2Y2ZGMuLjg4Mzc2ODQgMTAwNzU1CistLS0gYS90b29scy9jX2NvdmVyYWdlL2NfY292ZXJhZ2VfcmVwb3J0LnB5CisrKysgYi90b29scy9jX2NvdmVyYWdlL2NfY292ZXJhZ2VfcmVwb3J0LnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgQSBzY3JpcHQgdG8gY3JlYXRlIEMgY29kZS1jb3ZlcmFnZSByZXBvcnRzIGJhc2VkIG9uIHRoZSBvdXRwdXQgb2YKKyB2YWxncmluZCdzIGNhbGxncmluZCB0b29sLgorZGlmZiAtLWdpdCBhL3Rvb2xzL2NoYW5nZWxvZy5weSBiL3Rvb2xzL2NoYW5nZWxvZy5weQoraW5kZXggYjEzNWIxNC4uNWQ4YjMzYyAxMDA3NTUKKy0tLSBhL3Rvb2xzL2NoYW5nZWxvZy5weQorKysrIGIvdG9vbHMvY2hhbmdlbG9nLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIyAtKi0gZW5jb2Rpbmc6dXRmLTggLSotCisgIiIiCisgU2NyaXB0IHRvIGdlbmVyYXRlIGNvbnRyaWJ1dG9yIGFuZCBwdWxsIHJlcXVlc3QgbGlzdHMKK2RpZmYgLS1naXQgYS90b29scy9jaS9wdXNoX2RvY3NfdG9fcmVwby5weSBiL3Rvb2xzL2NpL3B1c2hfZG9jc190b19yZXBvLnB5CitpbmRleCBhOTg5NjY4Li5hZTUzMDU0IDEwMDc1NQorLS0tIGEvdG9vbHMvY2kvcHVzaF9kb2NzX3RvX3JlcG8ucHkKKysrKyBiL3Rvb2xzL2NpL3B1c2hfZG9jc190b19yZXBvLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgCisgaW1wb3J0IGFyZ3BhcnNlCisgaW1wb3J0IHN1YnByb2Nlc3MKK2RpZmYgLS1naXQgYS90b29scy9maW5kX2RlcHJlY2F0ZWRfZXNjYXBlZF9jaGFyYWN0ZXJzLnB5IGIvdG9vbHMvZmluZF9kZXByZWNhdGVkX2VzY2FwZWRfY2hhcmFjdGVycy5weQoraW5kZXggNmY5MDAwMS4uMTBlMDM3OCAxMDA2NDQKKy0tLSBhL3Rvb2xzL2ZpbmRfZGVwcmVjYXRlZF9lc2NhcGVkX2NoYXJhY3RlcnMucHkKKysrKyBiL3Rvb2xzL2ZpbmRfZGVwcmVjYXRlZF9lc2NhcGVkX2NoYXJhY3RlcnMucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgciIiIgorIExvb2sgZm9yIGVzY2FwZSBzZXF1ZW5jZXMgZGVwcmVjYXRlZCBpbiBQeXRob24gMy42LgorIAorZGlmZiAtLWdpdCBhL3Rvb2xzL3JlZmd1aWRlX2NoZWNrLnB5IGIvdG9vbHMvcmVmZ3VpZGVfY2hlY2sucHkKK2luZGV4IDJjNjI4MDkuLmExOWEyOWUgMTAwNjQ0CistLS0gYS90b29scy9yZWZndWlkZV9jaGVjay5weQorKysrIGIvdG9vbHMvcmVmZ3VpZGVfY2hlY2sucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAiIiIKKyByZWZndWlkZV9jaGVjay5weSBbT1BUSU9OU10gWy0tIEFSR1NdCisgCitkaWZmIC0tZ2l0IGEvdG9vbHMvc3dpZy90ZXN0L3NldHVwLnB5IGIvdG9vbHMvc3dpZy90ZXN0L3NldHVwLnB5CitpbmRleCA0ZmY4NzBlLi5mOGYwNWU2IDEwMDc1NQorLS0tIGEvdG9vbHMvc3dpZy90ZXN0L3NldHVwLnB5CisrKysgYi90b29scy9zd2lnL3Rlc3Qvc2V0dXAucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgcHJpbnRfZnVuY3Rpb24KKyAKKyAjIFN5c3RlbSBpbXBvcnRzCitkaWZmIC0tZ2l0IGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RBcnJheS5weSBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0QXJyYXkucHkKK2luZGV4IDhkOWM3OTcuLjU0ZmZlNzEgMTAwNzU1CistLS0gYS90b29scy9zd2lnL3Rlc3QvdGVzdEFycmF5LnB5CisrKysgYi90b29scy9zd2lnL3Rlc3QvdGVzdEFycmF5LnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24KKyAKKyAjIFN5c3RlbSBpbXBvcnRzCitkaWZmIC0tZ2l0IGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RGYXJyYXkucHkgYi90b29scy9zd2lnL3Rlc3QvdGVzdEZhcnJheS5weQoraW5kZXggZThiZjcxMS4uYjM3N2Y3YyAxMDA3NTUKKy0tLSBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0RmFycmF5LnB5CisrKysgYi90b29scy9zd2lnL3Rlc3QvdGVzdEZhcnJheS5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyBmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGRpdmlzaW9uLCBhYnNvbHV0ZV9pbXBvcnQsIHByaW50X2Z1bmN0aW9uCisgCisgIyBTeXN0ZW0gaW1wb3J0cworZGlmZiAtLWdpdCBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0RmxhdC5weSBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0RmxhdC5weQoraW5kZXggNzFiZTI3Ny4uNTUwMzRiZiAxMDA3NTUKKy0tLSBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0RmxhdC5weQorKysrIGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RGbGF0LnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24KKyAKKyAjIFN5c3RlbSBpbXBvcnRzCitkaWZmIC0tZ2l0IGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RGb3J0cmFuLnB5IGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RGb3J0cmFuLnB5CitpbmRleCA0MjZlODk0Li4wZjdkMGU2IDEwMDY0NAorLS0tIGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RGb3J0cmFuLnB5CisrKysgYi90b29scy9zd2lnL3Rlc3QvdGVzdEZvcnRyYW4ucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbgorIAorICMgU3lzdGVtIGltcG9ydHMKK2RpZmYgLS1naXQgYS90b29scy9zd2lnL3Rlc3QvdGVzdE1hdHJpeC5weSBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0TWF0cml4LnB5CitpbmRleCAwNjViZTBkLi44NTRhMjNjIDEwMDc1NQorLS0tIGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RNYXRyaXgucHkKKysrKyBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0TWF0cml4LnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24KKyAKKyAjIFN5c3RlbSBpbXBvcnRzCitkaWZmIC0tZ2l0IGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RTdXBlclRlbnNvci5weSBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0U3VwZXJUZW5zb3IucHkKK2luZGV4IDk3ZmU4MGMuLjMxYjYzZDAgMTAwNjQ0CistLS0gYS90b29scy9zd2lnL3Rlc3QvdGVzdFN1cGVyVGVuc29yLnB5CisrKysgYi90b29scy9zd2lnL3Rlc3QvdGVzdFN1cGVyVGVuc29yLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIHByaW50X2Z1bmN0aW9uCisgCisgIyBTeXN0ZW0gaW1wb3J0cworZGlmZiAtLWdpdCBhL3Rvb2xzL3N3aWcvdGVzdC90ZXN0VGVuc29yLnB5IGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RUZW5zb3IucHkKK2luZGV4IGFjMWI3NDkuLmY0N2Q5ZTggMTAwNzU1CistLS0gYS90b29scy9zd2lnL3Rlc3QvdGVzdFRlbnNvci5weQorKysrIGIvdG9vbHMvc3dpZy90ZXN0L3Rlc3RUZW5zb3IucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhIC91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBkaXZpc2lvbiwgYWJzb2x1dGVfaW1wb3J0LCBwcmludF9mdW5jdGlvbgorIAorICMgU3lzdGVtIGltcG9ydHMKK2RpZmYgLS1naXQgYS90b29scy9zd2lnL3Rlc3QvdGVzdFZlY3Rvci5weSBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0VmVjdG9yLnB5CitpbmRleCA0NWU3NjNiLi4wNjdiOTIyIDEwMDc1NQorLS0tIGEvdG9vbHMvc3dpZy90ZXN0L3Rlc3RWZWN0b3IucHkKKysrKyBiL3Rvb2xzL3N3aWcvdGVzdC90ZXN0VmVjdG9yLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGZyb20gX19mdXR1cmVfXyBpbXBvcnQgZGl2aXNpb24sIGFic29sdXRlX2ltcG9ydCwgcHJpbnRfZnVuY3Rpb24KKyAKKyAjIFN5c3RlbSBpbXBvcnRzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1ucHlfY3B1LUFkZC1yaXNjdi1zdXBwb3J0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L2ZpbGVzLzAwMDEtbnB5X2NwdS1BZGQtcmlzY3Ytc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGRlY2ZlNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1ucHlfY3B1LUFkZC1yaXNjdi1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotRnJvbSA2Mjk4OTFmNjc2MDEyNzVjOWM0ZGUwYmIwMWFmY2YxYThjNDRmYTNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMTYgTWFyIDIwMTggMTk6NTU6MjEgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gbnB5X2NwdTogQWRkIHJpc2N2IHN1cHBvcnQKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbnVtcHkvbnVtcHkvcHVsbC8xMDc2MV0KLS0tLQotIG51bXB5L2NvcmUvaW5jbHVkZS9udW1weS9ucHlfY3B1LmggfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvbnVtcHkvY29yZS9pbmNsdWRlL251bXB5L25weV9jcHUuaCBiL251bXB5L2NvcmUvaW5jbHVkZS9udW1weS9ucHlfY3B1LmgKLWluZGV4IDVlZGQ4ZjQuLmUxZTQ3OTYgMTAwNjQ0Ci0tLS0gYS9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvbnB5X2NwdS5oCi0rKysgYi9udW1weS9jb3JlL2luY2x1ZGUvbnVtcHkvbnB5X2NwdS5oCi1AQCAtOTYsNiArOTYsOCBAQAotICAgICAjZGVmaW5lIE5QWV9DUFVfT1IxSwotICNlbGlmIGRlZmluZWQoX19tYzY4MDAwX18pCi0gICAgICNkZWZpbmUgTlBZX0NQVV9NNjhLCi0rI2VsaWYgZGVmaW5lZChfX3Jpc2N2KQotKyAgICAjZGVmaW5lIE5QWV9DUFVfUklTQ1YKLSAjZWxpZiBkZWZpbmVkKF9fYXJjX18pICYmIGRlZmluZWQoX19MSVRUTEVfRU5ESUFOX18pCi0gICAgICNkZWZpbmUgTlBZX0NQVV9BUkNFTAotICNlbGlmIGRlZmluZWQoX19hcmNfXykgJiYgZGVmaW5lZChfX0JJR19FTkRJQU5fXykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLW51bXB5LXJhbmRvbS1zZXR1cC5weS1yZW1vdmUtdGhlLWRldGVjdGlvbi1vZi14ODYtdGEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvZmlsZXMvMDAwMS1udW1weS1yYW5kb20tc2V0dXAucHktcmVtb3ZlLXRoZS1kZXRlY3Rpb24tb2YteDg2LXRhLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYmIyYTZmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9maWxlcy8wMDAxLW51bXB5LXJhbmRvbS1zZXR1cC5weS1yZW1vdmUtdGhlLWRldGVjdGlvbi1vZi14ODYtdGEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1Gcm9tIGI4ODFlMGIyYmE5Y2YxYTRhYTM1MWExYzFlYTkwYjFlMTc3NmNlMjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTIgQXVnIDIwMTkgMTU6Mzc6MzYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gbnVtcHkvcmFuZG9tL3NldHVwLnB5OiByZW1vdmUgdGhlIGRldGVjdGlvbiBvZiB4ODYgdGFyZ2V0cwotIHZpYSB1bmFtZSgpCi0KLVRoaXMgd2FzIGJhZGx5IGJyZWFraW5nIGNvbXBpbGF0aW9uIGZvciBBUk0gdGFyZ2V0cyAoYW5kIHBvc3NpYmx5Ci1vdGhlciBub24teDg2IHRhcmdldHMpOyBpZiAtbXNzZTIgaXMgZGVzaXJhYmxlIGZvciB4ODYgYnVpbGRzIGl0IGhhcwotdG8gYmUgcGFzc2VkIHRocm91Z2ggYW5vdGhlciBjaGFubmVsLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIG51bXB5L3JhbmRvbS9zZXR1cC5weSB8IDUgLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL251bXB5L3JhbmRvbS9zZXR1cC5weSBiL251bXB5L3JhbmRvbS9zZXR1cC5weQotaW5kZXggYTFiZjNiOC4uNjBmYjUzNCAxMDA2NDQKLS0tLSBhL251bXB5L3JhbmRvbS9zZXR1cC5weQotKysrIGIvbnVtcHkvcmFuZG9tL3NldHVwLnB5Ci1AQCAtNDksMTEgKzQ5LDYgQEAgZGVmIGNvbmZpZ3VyYXRpb24ocGFyZW50X3BhY2thZ2U9JycsIHRvcF9wYXRoPU5vbmUpOgotICAgICBlbGlmIG5vdCBpc19tc3ZjOgotICAgICAgICAgIyBTb21lIGJpdCBnZW5lcmF0b3JzIHJlcXVpcmUgYzk5Ci0gICAgICAgICBFWFRSQV9DT01QSUxFX0FSR1MgKz0gWyctc3RkPWM5OSddCi0tICAgICAgICBJTlRFTF9MSUtFID0gYW55KFt2YWwgaW4gay5sb3dlcigpIGZvciBrIGluIHBsYXRmb3JtLnVuYW1lKCkKLS0gICAgICAgICAgICAgICAgICAgICAgICAgIGZvciB2YWwgaW4gKCd4ODYnLCAnaTY4NicsICdpMzg2JywgJ2FtZDY0JyldKQotLSAgICAgICAgaWYgSU5URUxfTElLRToKLS0gICAgICAgICAgICAjIEFzc3VtZXMgR0NDIG9yIEdDQy1saWtlIGNvbXBpbGVyCi0tICAgICAgICAgICAgRVhUUkFfQ09NUElMRV9BUkdTICs9IFsnLW1zc2UyJ10KLSAKLSAgICAgIyBVc2UgbGVnYWN5IGludGVnZXIgdmFyaWFibGUgc2l6ZXMKLSAgICAgTEVHQUNZX0RFRlMgPSBbKCdOUF9SQU5ET01fTEVHQUNZJywgJzEnKV0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24tbnVtcHkuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weS5pbmMKaW5kZXggZjY4YjkwZS4uNzI3NzU1MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbi1udW1weS5pbmMKQEAgLTcsMTEgKzcsMTAgQEAKIAogU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtTUkNOQU1FfS8ke1NSQ05BTUV9L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke1NSQ05BTUV9LSR7UFZ9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXNlYXJjaC11c3ItYW5kLXNvLW9uLWZvci1saWJyYXJpZXMtYnktZGVmYXVsdC0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ucHlfY3B1LUFkZC1yaXNjdi1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbnVtcHktcmFuZG9tLXNldHVwLnB5LXJlbW92ZS10aGUtZGV0ZWN0aW9uLW9mLXg4Ni10YS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbnZlcnQtc2hlYmFuZy1mcm9tLXB5dGhvbi10by1weXRob24zLnBhdGNoIFwKICAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImM0OGIyYWQ3ODVmODJjZGZlMjhjOTA3Y2UzNWUyYTcxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ3YjdiNjE0NWU3YmE1OTE4Y2UyNmJlMjU5OTliNmQ0YjM1Y2Y5ZmJmZGY0NmI3ZGE1MDA5MGZmZGIwMjA0NDUiCitTUkNfVVJJW21kNXN1bV0gPSAiY2Q2MzFjNzYxZjE0MWQzODJiNGUxYjMxYzgyMzJmYzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTNlZTU5ZWMzOGYzYmY4ZjlhNDJkNWY0MzAxZjYwZTY4MjVhNGE2Mzg1YTE0NWY3MGJhZGNkMmJmMmExMTEzNCIKIAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9udW1weS9udW1weS9yZWxlYXNlcyIKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgpAQCAtMTksNiArMTgsOCBAQAogIyBOZWVkZWQgZm9yIGJ1aWxkaW5nIHdpdGggZ2NjIDQueCBmcm9tIGNlbnRvcyA3CiBDRkxBR1NfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLXN0ZD1jOTkiCiAKK0RFUEVORFMgKz0gInB5dGhvbjMtY3l0aG9uLW5hdGl2ZSIKKwogUyA9ICIke1dPUktESVJ9L251bXB5LSR7UFZ9IgogCiBDTEVBTkJST0tFTiA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xNy4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uLW51bXB5L3B5dGhvbjMtbnVtcHlfMS4xOC4zLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24tbnVtcHkvcHl0aG9uMy1udW1weV8xLjE3LjAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi1udW1weS9weXRob24zLW51bXB5XzEuMTguMy5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL2ZpbGVzLzAwMDEtYnBvLTM5NTAzLUNWRS0yMDIwLTg0OTItRml4LUFic3RyYWN0QmFzaWNBdXRoSGFuZGxlci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9maWxlcy8wMDAxLWJwby0zOTUwMy1DVkUtMjAyMC04NDkyLUZpeC1BYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE2Yjk5YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9maWxlcy8wMDAxLWJwby0zOTUwMy1DVkUtMjAyMC04NDkyLUZpeC1BYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIucGF0Y2gKQEAgLTAsMCArMSwyNDggQEAKK0Zyb20gMGIyOTdkNGZmMWMwZTQ0ODBhZDMzYWNhZTc5M2ZiYWY0YmYwMTViNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFZpY3RvciBTdGlubmVyIDx2c3Rpbm5lckBweXRob24ub3JnPgorRGF0ZTogVGh1LCAyIEFwciAyMDIwIDAyOjUyOjIwICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGJwby0zOTUwMzogQ1ZFLTIwMjAtODQ5MjogRml4IEFic3RyYWN0QmFzaWNBdXRoSGFuZGxlcgorIChHSC0xODI4NCkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorKGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9jb21taXQvMGIyOTdkNGZmMWMwZTQ0ODBhZDMzYWNhZTc5M2ZiYWY0YmYwMTViNCkKKworQ1ZFOiBDVkUtMjAyMC04NDkyCisKK1RoZSBBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIgY2xhc3Mgb2YgdGhlIHVybGxpYi5yZXF1ZXN0IG1vZHVsZSB1c2VzCithbiBpbmVmZmljaWVudCByZWd1bGFyIGV4cHJlc3Npb24gd2hpY2ggY2FuIGJlIGV4cGxvaXRlZCBieSBhbgorYXR0YWNrZXIgdG8gY2F1c2UgYSBkZW5pYWwgb2Ygc2VydmljZS4gRml4IHRoZSByZWdleCB0byBwcmV2ZW50IHRoZQorY2F0YXN0cm9waGljIGJhY2t0cmFja2luZy4gVnVsbmVyYWJpbGl0eSByZXBvcnRlZCBieSBCZW4gQ2FsbGVyCithbmQgTWF0dCBTY2h3YWdlci4KKworQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyIG9mIHVybGxpYi5yZXF1ZXN0IG5vdyBwYXJzZXMgYWxsCitXV1ctQXV0aGVudGljYXRlIEhUVFAgaGVhZGVycyBhbmQgYWNjZXB0cyBtdWx0aXBsZSBjaGFsbGVuZ2VzIHBlcgoraGVhZGVyOiB1c2UgdGhlIHJlYWxtIG9mIHRoZSBmaXJzdCBCYXNpYyBjaGFsbGVuZ2UuCisKK0NvLUF1dGhvcmVkLUJ5OiBTZXJoaXkgU3RvcmNoYWthIDxzdG9yY2hha2FAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogVHJldm9yIEdhbWJsaW4gPHRyZXZvci5nYW1ibGluQHdpbmRyaXZlci5jb20+CistLS0KKyBMaWIvdGVzdC90ZXN0X3VybGxpYjIucHkgICAgICAgICAgICAgICAgICAgICAgfCA5MCArKysrKysrKysrKystLS0tLS0tCisgTGliL3VybGxpYi9yZXF1ZXN0LnB5ICAgICAgICAgICAgICAgICAgICAgICAgIHwgNjkgKysrKysrKysrKy0tLS0KKyAuLi4vMjAyMC0wMy0yNS0xNi0wMi0xNi5icG8tMzk1MDMuWW1NYlluLnJzdCAgfCAgMyArCisgLi4uLzIwMjAtMDEtMzAtMTYtMTUtMjkuYnBvLTM5NTAzLkIyOTlZcS5yc3QgIHwgIDUgKysKKyA0IGZpbGVzIGNoYW5nZWQsIDExNSBpbnNlcnRpb25zKCspLCA1MiBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMjAtMDMtMjUtMTYtMDItMTYuYnBvLTM5NTAzLlltTWJZbi5yc3QKKyBjcmVhdGUgbW9kZSAxMDA2NDQgTWlzYy9ORVdTLmQvbmV4dC9TZWN1cml0eS8yMDIwLTAxLTMwLTE2LTE1LTI5LmJwby0zOTUwMy5CMjk5WXEucnN0CisKK2RpZmYgLS1naXQgYS9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkgYi9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKK2luZGV4IDhhYmVkYWFjOTguLmU2OWFjM2UyMTMgMTAwNjQ0CistLS0gYS9MaWIvdGVzdC90ZXN0X3VybGxpYjIucHkKKysrKyBiL0xpYi90ZXN0L3Rlc3RfdXJsbGliMi5weQorQEAgLTE0NDYsNDAgKzE0NDYsNjQgQEAgY2xhc3MgSGFuZGxlclRlc3RzKHVuaXR0ZXN0LlRlc3RDYXNlKToKKyAgICAgICAgIGJ5cGFzcyA9IHsnZXhjbHVkZV9zaW1wbGUnOiBUcnVlLCAnZXhjZXB0aW9ucyc6IFtdfQorICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKF9wcm94eV9ieXBhc3NfbWFjb3N4X3N5c2NvbmYoJ3Rlc3QnLCBieXBhc3MpKQorIAorLSAgICBkZWYgdGVzdF9iYXNpY19hdXRoKHNlbGYsIHF1b3RlX2NoYXI9JyInKToKKy0gICAgICAgIG9wZW5lciA9IE9wZW5lckRpcmVjdG9yKCkKKy0gICAgICAgIHBhc3N3b3JkX21hbmFnZXIgPSBNb2NrUGFzc3dvcmRNYW5hZ2VyKCkKKy0gICAgICAgIGF1dGhfaGFuZGxlciA9IHVybGxpYi5yZXF1ZXN0LkhUVFBCYXNpY0F1dGhIYW5kbGVyKHBhc3N3b3JkX21hbmFnZXIpCistICAgICAgICByZWFsbSA9ICJBQ01FIFdpZGdldCBTdG9yZSIKKy0gICAgICAgIGh0dHBfaGFuZGxlciA9IE1vY2tIVFRQSGFuZGxlcigKKy0gICAgICAgICAgICA0MDEsICdXV1ctQXV0aGVudGljYXRlOiBCYXNpYyByZWFsbT0lcyVzJXNcclxuXHJcbicgJQorLSAgICAgICAgICAgIChxdW90ZV9jaGFyLCByZWFsbSwgcXVvdGVfY2hhcikpCistICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoYXV0aF9oYW5kbGVyKQorLSAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGh0dHBfaGFuZGxlcikKKy0gICAgICAgIHNlbGYuX3Rlc3RfYmFzaWNfYXV0aChvcGVuZXIsIGF1dGhfaGFuZGxlciwgIkF1dGhvcml6YXRpb24iLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxtLCBodHRwX2hhbmRsZXIsIHBhc3N3b3JkX21hbmFnZXIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9hY21lLmV4YW1wbGUuY29tL3Byb3RlY3RlZCIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9hY21lLmV4YW1wbGUuY29tL3Byb3RlY3RlZCIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorLQorLSAgICBkZWYgdGVzdF9iYXNpY19hdXRoX3dpdGhfc2luZ2xlX3F1b3RlZF9yZWFsbShzZWxmKToKKy0gICAgICAgIHNlbGYudGVzdF9iYXNpY19hdXRoKHF1b3RlX2NoYXI9IiciKQorLQorLSAgICBkZWYgdGVzdF9iYXNpY19hdXRoX3dpdGhfdW5xdW90ZWRfcmVhbG0oc2VsZik6CistICAgICAgICBvcGVuZXIgPSBPcGVuZXJEaXJlY3RvcigpCistICAgICAgICBwYXNzd29yZF9tYW5hZ2VyID0gTW9ja1Bhc3N3b3JkTWFuYWdlcigpCistICAgICAgICBhdXRoX2hhbmRsZXIgPSB1cmxsaWIucmVxdWVzdC5IVFRQQmFzaWNBdXRoSGFuZGxlcihwYXNzd29yZF9tYW5hZ2VyKQorLSAgICAgICAgcmVhbG0gPSAiQUNNRSBXaWRnZXQgU3RvcmUiCistICAgICAgICBodHRwX2hhbmRsZXIgPSBNb2NrSFRUUEhhbmRsZXIoCistICAgICAgICAgICAgNDAxLCAnV1dXLUF1dGhlbnRpY2F0ZTogQmFzaWMgcmVhbG09JXNcclxuXHJcbicgJSByZWFsbSkKKy0gICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihhdXRoX2hhbmRsZXIpCistICAgICAgICBvcGVuZXIuYWRkX2hhbmRsZXIoaHR0cF9oYW5kbGVyKQorLSAgICAgICAgd2l0aCBzZWxmLmFzc2VydFdhcm5zKFVzZXJXYXJuaW5nKToKKysgICAgZGVmIGNoZWNrX2Jhc2ljX2F1dGgoc2VsZiwgaGVhZGVycywgcmVhbG0pOgorKyAgICAgICAgd2l0aCBzZWxmLnN1YlRlc3QocmVhbG09cmVhbG0sIGhlYWRlcnM9aGVhZGVycyk6CisrICAgICAgICAgICAgb3BlbmVyID0gT3BlbmVyRGlyZWN0b3IoKQorKyAgICAgICAgICAgIHBhc3N3b3JkX21hbmFnZXIgPSBNb2NrUGFzc3dvcmRNYW5hZ2VyKCkKKysgICAgICAgICAgICBhdXRoX2hhbmRsZXIgPSB1cmxsaWIucmVxdWVzdC5IVFRQQmFzaWNBdXRoSGFuZGxlcihwYXNzd29yZF9tYW5hZ2VyKQorKyAgICAgICAgICAgIGJvZHkgPSAnXHJcbicuam9pbihoZWFkZXJzKSArICdcclxuXHJcbicKKysgICAgICAgICAgICBodHRwX2hhbmRsZXIgPSBNb2NrSFRUUEhhbmRsZXIoNDAxLCBib2R5KQorKyAgICAgICAgICAgIG9wZW5lci5hZGRfaGFuZGxlcihhdXRoX2hhbmRsZXIpCisrICAgICAgICAgICAgb3BlbmVyLmFkZF9oYW5kbGVyKGh0dHBfaGFuZGxlcikKKyAgICAgICAgICAgICBzZWxmLl90ZXN0X2Jhc2ljX2F1dGgob3BlbmVyLCBhdXRoX2hhbmRsZXIsICJBdXRob3JpemF0aW9uIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJlYWxtLCBodHRwX2hhbmRsZXIsIHBhc3N3b3JkX21hbmFnZXIsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL2FjbWUuZXhhbXBsZS5jb20vcHJvdGVjdGVkIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJodHRwOi8vYWNtZS5leGFtcGxlLmNvbS9wcm90ZWN0ZWQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZWFsbSwgaHR0cF9oYW5kbGVyLCBwYXNzd29yZF9tYW5hZ2VyLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiaHR0cDovL2FjbWUuZXhhbXBsZS5jb20vcHJvdGVjdGVkIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImh0dHA6Ly9hY21lLmV4YW1wbGUuY29tL3Byb3RlY3RlZCIpCisrCisrICAgIGRlZiB0ZXN0X2Jhc2ljX2F1dGgoc2VsZik6CisrICAgICAgICByZWFsbSA9ICJyZWFsbTJAZXhhbXBsZS5jb20iCisrICAgICAgICByZWFsbTIgPSAicmVhbG0yQGV4YW1wbGUuY29tIgorKyAgICAgICAgYmFzaWMgPSBmJ0Jhc2ljIHJlYWxtPSJ7cmVhbG19IicKKysgICAgICAgIGJhc2ljMiA9IGYnQmFzaWMgcmVhbG09IntyZWFsbTJ9IicKKysgICAgICAgIG90aGVyX25vX3JlYWxtID0gJ090aGVyc2NoZW1lIHh4eCcKKysgICAgICAgIGRpZ2VzdCA9IChmJ0RpZ2VzdCByZWFsbT0ie3JlYWxtMn0iLCAnCisrICAgICAgICAgICAgICAgICAgZidxb3A9ImF1dGgsIGF1dGgtaW50IiwgJworKyAgICAgICAgICAgICAgICAgIGYnbm9uY2U9ImRjZDk4YjcxMDJkZDJmMGU4YjExZDBmNjAwYmZiMGMwOTMiLCAnCisrICAgICAgICAgICAgICAgICAgZidvcGFxdWU9IjVjY2MwNjljNDAzZWJhZjlmMDE3MWU5NTE3ZjQwZTQxIicpCisrICAgICAgICBmb3IgcmVhbG1fc3RyIGluICgKKysgICAgICAgICAgICAjIHRlc3QgInF1b3RlIiBhbmQgJ3F1b3RlJworKyAgICAgICAgICAgIGYnQmFzaWMgcmVhbG09IntyZWFsbX0iJywKKysgICAgICAgICAgICBmIkJhc2ljIHJlYWxtPSd7cmVhbG19JyIsCisrCisrICAgICAgICAgICAgIyBjaGFyc2V0IGlzIGlnbm9yZWQKKysgICAgICAgICAgICBmJ0Jhc2ljIHJlYWxtPSJ7cmVhbG19IiwgY2hhcnNldD0iVVRGLTgiJywKKysKKysgICAgICAgICAgICAjIE11bHRpcGxlIGNoYWxsZW5nZXMgcGVyIGhlYWRlcgorKyAgICAgICAgICAgIGYne2Jhc2ljfSwge2Jhc2ljMn0nLAorKyAgICAgICAgICAgIGYne2Jhc2ljfSwge290aGVyX25vX3JlYWxtfScsCisrICAgICAgICAgICAgZid7b3RoZXJfbm9fcmVhbG19LCB7YmFzaWN9JywKKysgICAgICAgICAgICBmJ3tiYXNpY30sIHtkaWdlc3R9JywKKysgICAgICAgICAgICBmJ3tkaWdlc3R9LCB7YmFzaWN9JywKKysgICAgICAgICk6CisrICAgICAgICAgICAgaGVhZGVycyA9IFtmJ1dXVy1BdXRoZW50aWNhdGU6IHtyZWFsbV9zdHJ9J10KKysgICAgICAgICAgICBzZWxmLmNoZWNrX2Jhc2ljX2F1dGgoaGVhZGVycywgcmVhbG0pCisrCisrICAgICAgICAjIG5vIHF1b3RlOiBleHBlY3QgYSB3YXJuaW5nCisrICAgICAgICB3aXRoIHN1cHBvcnQuY2hlY2tfd2FybmluZ3MoKCJCYXNpYyBBdXRoIFJlYWxtIHdhcyB1bnF1b3RlZCIsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFVzZXJXYXJuaW5nKSk6CisrICAgICAgICAgICAgaGVhZGVycyA9IFtmJ1dXVy1BdXRoZW50aWNhdGU6IEJhc2ljIHJlYWxtPXtyZWFsbX0nXQorKyAgICAgICAgICAgIHNlbGYuY2hlY2tfYmFzaWNfYXV0aChoZWFkZXJzLCByZWFsbSkKKysKKysgICAgICAgICMgTXVsdGlwbGUgaGVhZGVyczogb25lIGNoYWxsZW5nZSBwZXIgaGVhZGVyLgorKyAgICAgICAgIyBVc2UgdGhlIGZpcnN0IEJhc2ljIHJlYWxtLgorKyAgICAgICAgZm9yIGNoYWxsZW5nZXMgaW4gKAorKyAgICAgICAgICAgIFtiYXNpYywgIGJhc2ljMl0sCisrICAgICAgICAgICAgW2Jhc2ljLCAgZGlnZXN0XSwKKysgICAgICAgICAgICBbZGlnZXN0LCBiYXNpY10sCisrICAgICAgICApOgorKyAgICAgICAgICAgIGhlYWRlcnMgPSBbZidXV1ctQXV0aGVudGljYXRlOiB7Y2hhbGxlbmdlfScKKysgICAgICAgICAgICAgICAgICAgICAgIGZvciBjaGFsbGVuZ2UgaW4gY2hhbGxlbmdlc10KKysgICAgICAgICAgICBzZWxmLmNoZWNrX2Jhc2ljX2F1dGgoaGVhZGVycywgcmVhbG0pCisgCisgICAgIGRlZiB0ZXN0X3Byb3h5X2Jhc2ljX2F1dGgoc2VsZik6CisgICAgICAgICBvcGVuZXIgPSBPcGVuZXJEaXJlY3RvcigpCitkaWZmIC0tZ2l0IGEvTGliL3VybGxpYi9yZXF1ZXN0LnB5IGIvTGliL3VybGxpYi9yZXF1ZXN0LnB5CitpbmRleCA3ZmU1MDUzNWRhLi4yYTNkNzE1NTRmIDEwMDY0NAorLS0tIGEvTGliL3VybGxpYi9yZXF1ZXN0LnB5CisrKysgYi9MaWIvdXJsbGliL3JlcXVlc3QucHkKK0BAIC05MzcsOCArOTM3LDE1IEBAIGNsYXNzIEFic3RyYWN0QmFzaWNBdXRoSGFuZGxlcjoKKyAKKyAgICAgIyBhbGxvdyBmb3IgZG91YmxlLSBhbmQgc2luZ2xlLXF1b3RlZCByZWFsbSB2YWx1ZXMKKyAgICAgIyAoc2luZ2xlIHF1b3RlcyBhcmUgYSB2aW9sYXRpb24gb2YgdGhlIFJGQywgYnV0IGFwcGVhciBpbiB0aGUgd2lsZCkKKy0gICAgcnggPSByZS5jb21waWxlKCcoPzouKiwpKlsgXHRdKihbXiBcdF0rKVsgXHRdKycKKy0gICAgICAgICAgICAgICAgICAgICdyZWFsbT0oWyJcJ10/KShbXiJcJ10qKVxcMicsIHJlLkkpCisrICAgIHJ4ID0gcmUuY29tcGlsZSgnKD86XnwsKScgICAjIHN0YXJ0IG9mIHRoZSBzdHJpbmcgb3IgJywnCisrICAgICAgICAgICAgICAgICAgICAnWyBcdF0qJyAgICAjIG9wdGlvbmFsIHdoaXRlc3BhY2VzCisrICAgICAgICAgICAgICAgICAgICAnKFteIFx0XSspJyAjIHNjaGVtZSBsaWtlICJCYXNpYyIKKysgICAgICAgICAgICAgICAgICAgICdbIFx0XSsnICAgICMgbWFuZGF0b3J5IHdoaXRlc3BhY2VzCisrICAgICAgICAgICAgICAgICAgICAjIHJlYWxtPXh4eAorKyAgICAgICAgICAgICAgICAgICAgIyByZWFsbT0neHh4JworKyAgICAgICAgICAgICAgICAgICAgIyByZWFsbT0ieHh4IgorKyAgICAgICAgICAgICAgICAgICAgJ3JlYWxtPShbIlwnXT8pKFteIlwnXSopXFwyJywKKysgICAgICAgICAgICAgICAgICAgIHJlLkkpCisgCisgICAgICMgWFhYIGNvdWxkIHByZS1lbXB0aXZlbHkgc2VuZCBhdXRoIGluZm8gYWxyZWFkeSBhY2NlcHRlZCAoUkZDIDI2MTcsCisgICAgICMgZW5kIG9mIHNlY3Rpb24gMiwgYW5kIHNlY3Rpb24gMS4yIGltbWVkaWF0ZWx5IGFmdGVyICJjcmVkZW50aWFscyIKK0BAIC05NTAsMjcgKzk1Nyw1MSBAQCBjbGFzcyBBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXI6CisgICAgICAgICBzZWxmLnBhc3N3ZCA9IHBhc3N3b3JkX21ncgorICAgICAgICAgc2VsZi5hZGRfcGFzc3dvcmQgPSBzZWxmLnBhc3N3ZC5hZGRfcGFzc3dvcmQKKyAKKysgICAgZGVmIF9wYXJzZV9yZWFsbShzZWxmLCBoZWFkZXIpOgorKyAgICAgICAgIyBwYXJzZSBXV1ctQXV0aGVudGljYXRlIGhlYWRlcjogYWNjZXB0IG11bHRpcGxlIGNoYWxsZW5nZXMgcGVyIGhlYWRlcgorKyAgICAgICAgZm91bmRfY2hhbGxlbmdlID0gRmFsc2UKKysgICAgICAgIGZvciBtbyBpbiBBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIucnguZmluZGl0ZXIoaGVhZGVyKToKKysgICAgICAgICAgICBzY2hlbWUsIHF1b3RlLCByZWFsbSA9IG1vLmdyb3VwcygpCisrICAgICAgICAgICAgaWYgcXVvdGUgbm90IGluIFsnIicsICInIl06CisrICAgICAgICAgICAgICAgIHdhcm5pbmdzLndhcm4oIkJhc2ljIEF1dGggUmVhbG0gd2FzIHVucXVvdGVkIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBVc2VyV2FybmluZywgMykKKysKKysgICAgICAgICAgICB5aWVsZCAoc2NoZW1lLCByZWFsbSkKKysKKysgICAgICAgICAgICBmb3VuZF9jaGFsbGVuZ2UgPSBUcnVlCisrCisrICAgICAgICBpZiBub3QgZm91bmRfY2hhbGxlbmdlOgorKyAgICAgICAgICAgIGlmIGhlYWRlcjoKKysgICAgICAgICAgICAgICAgc2NoZW1lID0gaGVhZGVyLnNwbGl0KClbMF0KKysgICAgICAgICAgICBlbHNlOgorKyAgICAgICAgICAgICAgICBzY2hlbWUgPSAnJworKyAgICAgICAgICAgIHlpZWxkIChzY2hlbWUsIE5vbmUpCisrCisgICAgIGRlZiBodHRwX2Vycm9yX2F1dGhfcmVxZWQoc2VsZiwgYXV0aHJlcSwgaG9zdCwgcmVxLCBoZWFkZXJzKToKKyAgICAgICAgICMgaG9zdCBtYXkgYmUgYW4gYXV0aG9yaXR5ICh3aXRob3V0IHVzZXJpbmZvKSBvciBhIFVSTCB3aXRoIGFuCisgICAgICAgICAjIGF1dGhvcml0eQorLSAgICAgICAgIyBYWFggY291bGQgYmUgbXVsdGlwbGUgaGVhZGVycworLSAgICAgICAgYXV0aHJlcSA9IGhlYWRlcnMuZ2V0KGF1dGhyZXEsIE5vbmUpCisrICAgICAgICBoZWFkZXJzID0gaGVhZGVycy5nZXRfYWxsKGF1dGhyZXEpCisrICAgICAgICBpZiBub3QgaGVhZGVyczoKKysgICAgICAgICAgICAjIG5vIGhlYWRlciBmb3VuZAorKyAgICAgICAgICAgIHJldHVybgorIAorLSAgICAgICAgaWYgYXV0aHJlcToKKy0gICAgICAgICAgICBzY2hlbWUgPSBhdXRocmVxLnNwbGl0KClbMF0KKy0gICAgICAgICAgICBpZiBzY2hlbWUubG93ZXIoKSAhPSAnYmFzaWMnOgorLSAgICAgICAgICAgICAgICByYWlzZSBWYWx1ZUVycm9yKCJBYnN0cmFjdEJhc2ljQXV0aEhhbmRsZXIgZG9lcyBub3QiCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiBzdXBwb3J0IHRoZSBmb2xsb3dpbmcgc2NoZW1lOiAnJXMnIiAlCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2NoZW1lKQorLSAgICAgICAgICAgIGVsc2U6CistICAgICAgICAgICAgICAgIG1vID0gQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyLnJ4LnNlYXJjaChhdXRocmVxKQorLSAgICAgICAgICAgICAgICBpZiBtbzoKKy0gICAgICAgICAgICAgICAgICAgIHNjaGVtZSwgcXVvdGUsIHJlYWxtID0gbW8uZ3JvdXBzKCkKKy0gICAgICAgICAgICAgICAgICAgIGlmIHF1b3RlIG5vdCBpbiBbJyInLCInIl06CistICAgICAgICAgICAgICAgICAgICAgICAgd2FybmluZ3Mud2FybigiQmFzaWMgQXV0aCBSZWFsbSB3YXMgdW5xdW90ZWQiLAorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgVXNlcldhcm5pbmcsIDIpCistICAgICAgICAgICAgICAgICAgICBpZiBzY2hlbWUubG93ZXIoKSA9PSAnYmFzaWMnOgorLSAgICAgICAgICAgICAgICAgICAgICAgIHJldHVybiBzZWxmLnJldHJ5X2h0dHBfYmFzaWNfYXV0aChob3N0LCByZXEsIHJlYWxtKQorKyAgICAgICAgdW5zdXBwb3J0ZWQgPSBOb25lCisrICAgICAgICBmb3IgaGVhZGVyIGluIGhlYWRlcnM6CisrICAgICAgICAgICAgZm9yIHNjaGVtZSwgcmVhbG0gaW4gc2VsZi5fcGFyc2VfcmVhbG0oaGVhZGVyKToKKysgICAgICAgICAgICAgICAgaWYgc2NoZW1lLmxvd2VyKCkgIT0gJ2Jhc2ljJzoKKysgICAgICAgICAgICAgICAgICAgIHVuc3VwcG9ydGVkID0gc2NoZW1lCisrICAgICAgICAgICAgICAgICAgICBjb250aW51ZQorKworKyAgICAgICAgICAgICAgICBpZiByZWFsbSBpcyBub3QgTm9uZToKKysgICAgICAgICAgICAgICAgICAgICMgVXNlIHRoZSBmaXJzdCBtYXRjaGluZyBCYXNpYyBjaGFsbGVuZ2UuCisrICAgICAgICAgICAgICAgICAgICAjIElnbm9yZSBmb2xsb3dpbmcgY2hhbGxlbmdlcyBldmVuIGlmIHRoZXkgdXNlIHRoZSBCYXNpYworKyAgICAgICAgICAgICAgICAgICAgIyBzY2hlbWUuCisrICAgICAgICAgICAgICAgICAgICByZXR1cm4gc2VsZi5yZXRyeV9odHRwX2Jhc2ljX2F1dGgoaG9zdCwgcmVxLCByZWFsbSkKKysKKysgICAgICAgIGlmIHVuc3VwcG9ydGVkIGlzIG5vdCBOb25lOgorKyAgICAgICAgICAgIHJhaXNlIFZhbHVlRXJyb3IoIkFic3RyYWN0QmFzaWNBdXRoSGFuZGxlciBkb2VzIG5vdCAiCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic3VwcG9ydCB0aGUgZm9sbG93aW5nIHNjaGVtZTogJXIiCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzY2hlbWUsKSkKKyAKKyAgICAgZGVmIHJldHJ5X2h0dHBfYmFzaWNfYXV0aChzZWxmLCBob3N0LCByZXEsIHJlYWxtKToKKyAgICAgICAgIHVzZXIsIHB3ID0gc2VsZi5wYXNzd2QuZmluZF91c2VyX3Bhc3N3b3JkKHJlYWxtLCBob3N0KQorZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvTGlicmFyeS8yMDIwLTAzLTI1LTE2LTAyLTE2LmJwby0zOTUwMy5ZbU1iWW4ucnN0IGIvTWlzYy9ORVdTLmQvbmV4dC9MaWJyYXJ5LzIwMjAtMDMtMjUtMTYtMDItMTYuYnBvLTM5NTAzLlltTWJZbi5yc3QKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMDAwLi5iZTgwY2U3OWQ5CistLS0gL2Rldi9udWxsCisrKysgYi9NaXNjL05FV1MuZC9uZXh0L0xpYnJhcnkvMjAyMC0wMy0yNS0xNi0wMi0xNi5icG8tMzk1MDMuWW1NYlluLnJzdAorQEAgLTAsMCArMSwzIEBACisrOmNsYXNzOmB+dXJsbGliLnJlcXVlc3QuQWJzdHJhY3RCYXNpY0F1dGhIYW5kbGVyYCBvZiA6bW9kOmB1cmxsaWIucmVxdWVzdGAKKytub3cgcGFyc2VzIGFsbCBXV1ctQXV0aGVudGljYXRlIEhUVFAgaGVhZGVycyBhbmQgYWNjZXB0cyBtdWx0aXBsZSBjaGFsbGVuZ2VzCisrcGVyIGhlYWRlcjogdXNlIHRoZSByZWFsbSBvZiB0aGUgZmlyc3QgQmFzaWMgY2hhbGxlbmdlLgorZGlmZiAtLWdpdCBhL01pc2MvTkVXUy5kL25leHQvU2VjdXJpdHkvMjAyMC0wMS0zMC0xNi0xNS0yOS5icG8tMzk1MDMuQjI5OVlxLnJzdCBiL01pc2MvTkVXUy5kL25leHQvU2VjdXJpdHkvMjAyMC0wMS0zMC0xNi0xNS0yOS5icG8tMzk1MDMuQjI5OVlxLnJzdAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwMDAuLjlmMjgwMDU4MWMKKy0tLSAvZGV2L251bGwKKysrKyBiL01pc2MvTkVXUy5kL25leHQvU2VjdXJpdHkvMjAyMC0wMS0zMC0xNi0xNS0yOS5icG8tMzk1MDMuQjI5OVlxLnJzdAorQEAgLTAsMCArMSw1IEBACisrQ1ZFLTIwMjAtODQ5MjogVGhlIDpjbGFzczpgfnVybGxpYi5yZXF1ZXN0LkFic3RyYWN0QmFzaWNBdXRoSGFuZGxlcmAgY2xhc3Mgb2YgdGhlCisrOm1vZDpgdXJsbGliLnJlcXVlc3RgIG1vZHVsZSB1c2VzIGFuIGluZWZmaWNpZW50IHJlZ3VsYXIgZXhwcmVzc2lvbiB3aGljaCBjYW4KKytiZSBleHBsb2l0ZWQgYnkgYW4gYXR0YWNrZXIgdG8gY2F1c2UgYSBkZW5pYWwgb2Ygc2VydmljZS4gRml4IHRoZSByZWdleCB0bworK3ByZXZlbnQgdGhlIGNhdGFzdHJvcGhpYyBiYWNrdHJhY2tpbmcuIFZ1bG5lcmFiaWxpdHkgcmVwb3J0ZWQgYnkgQmVuIENhbGxlcgorK2FuZCBNYXR0IFNjaHdhZ2VyLgorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL2ZpbGVzLzAwMDEtY29uZGl0aW9uYWxseS1kby1ub3QtZmV0Y2gtY29kZS1ieS1lYXN5X2luc3RhbGwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vZmlsZXMvMDAwMS1jb25kaXRpb25hbGx5LWRvLW5vdC1mZXRjaC1jb2RlLWJ5LWVhc3lfaW5zdGFsbC5wYXRjaAppbmRleCAxNjlkMWIxLi41Zjk5Y2QyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vZmlsZXMvMDAwMS1jb25kaXRpb25hbGx5LWRvLW5vdC1mZXRjaC1jb2RlLWJ5LWVhc3lfaW5zdGFsbC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vZmlsZXMvMDAwMS1jb25kaXRpb25hbGx5LWRvLW5vdC1mZXRjaC1jb2RlLWJ5LWVhc3lfaW5zdGFsbC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNWJiYTRmNTdmMDQ4MDE2YWE5MmNlNTkwOWU5ZTM3MmRiNjE5NTU0ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYThmODcxYzllYmM0ZmNiOTlkNDE2M2IyMjZhYWJlZWYyNjU2NzA5OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KIERhdGU6IFR1ZSwgMTcgSnVsIDIwMTggMTA6MTM6MzggKzA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gY29uZGl0aW9uYWxseSBkbyBub3QgZmV0Y2ggY29kZSBieSBlYXN5X2luc3RhbGwKQEAgLTE1LDEwICsxNSwxMCBAQAogIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NldHVwdG9vbHMvY29tbWFuZC9lYXN5X2luc3RhbGwucHkgYi9zZXR1cHRvb2xzL2NvbW1hbmQvZWFzeV9pbnN0YWxsLnB5Ci1pbmRleCAwNTUwOGNlLi45NDVlMTE4IDEwMDc1NQoraW5kZXggNDI2MzAxZC4uNTVjODA2MiAxMDA2NDQKIC0tLSBhL3NldHVwdG9vbHMvY29tbWFuZC9lYXN5X2luc3RhbGwucHkKICsrKyBiL3NldHVwdG9vbHMvY29tbWFuZC9lYXN5X2luc3RhbGwucHkKLUBAIC02NDAsNiArNjQwLDExIEBAIGNsYXNzIGVhc3lfaW5zdGFsbChDb21tYW5kKToKK0BAIC02NDksNiArNjQ5LDExIEBAIGNsYXNzIGVhc3lfaW5zdGFsbChDb21tYW5kKToKICAgICAgICAgICAgICBvcy5wYXRoLmV4aXN0cyh0bXBkaXIpIGFuZCBybXRyZWUocm10cmVlX3NhZmUodG1wZGlyKSkKICAKICAgICAgZGVmIGVhc3lfaW5zdGFsbChzZWxmLCBzcGVjLCBkZXBzPUZhbHNlKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3l0aG9uLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tY3l0aG9uLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MzdlNzk2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1jeXRob24uaW5jCkBAIC0wLDAgKzEsNDEgQEAKK0RFU0NSSVBUSU9OID0gIkN5dGhvbiBpcyBhIGxhbmd1YWdlIHNwZWNpYWxseSBkZXNpZ25lZCBmb3Igd3JpdGluZyBQeXRob24gZXh0ZW5zaW9uIG1vZHVsZXMuIFwKK0l0J3MgZGVzaWduZWQgdG8gYnJpZGdlIHRoZSBnYXAgYmV0d2VlbiB0aGUgbmljZSwgaGlnaC1sZXZlbCwgZWFzeS10by11c2Ugd29ybGQgb2YgUHl0aG9uIFwKK2FuZCB0aGUgbWVzc3ksIGxvdy1sZXZlbCB3b3JsZCBvZiBDLiIKK1NFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgorTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWUyM2ZhZGQ2Y2VlZjhjNjE4ZmMxYzY1MTkxZDg0NmZhIgorUFlQSV9QQUNLQUdFID0gIkN5dGhvbiIKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworU1JDX1VSSVttZDVzdW1dID0gImE4OTlhYmFhNDhiNjhiYjY3OWFlZjQ1Y2ViNGI4OWQzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIzMjc1NTI4NGY5NDJjYmIzYjQzYTA2Y2Q4NTk3NGVmM2M5NzBhMDIxYWVmMTliNTI0M2MwM2VlMmIwOGZhMDUiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJDeXRob24tKD9QPHB2ZXI+LiopXC50YXIiCisKK2luaGVyaXQgcHlwaQorCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgKz0gIlwKKyAgICAke1BZVEhPTl9QTn0tbWlzYyBcCisgICAgJHtQWVRIT05fUE59LW5ldHNlcnZlciBcCisgICAgJHtQWVRIT05fUE59LXBrZ3V0aWwgXAorICAgICR7UFlUSE9OX1BOfS1weXBhcnNpbmcgXAorICAgICR7UFlUSE9OX1BOfS1zZXR1cHRvb2xzIFwKKyAgICAke1BZVEhPTl9QTn0tc2hlbGwgXAorICAgICR7UFlUSE9OX1BOfS14bWwgXAorIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgKz0gIlwKKyAgICBuYXRpdmVzZGstJHtQWVRIT05fUE59LW1pc2MgXAorICAgIG5hdGl2ZXNkay0ke1BZVEhPTl9QTn0tbmV0c2VydmVyIFwKKyAgICBuYXRpdmVzZGstJHtQWVRIT05fUE59LXBrZ3V0aWwgXAorICAgIG5hdGl2ZXNkay0ke1BZVEhPTl9QTn0tcHlwYXJzaW5nIFwKKyAgICBuYXRpdmVzZGstJHtQWVRIT05fUE59LXNldHVwdG9vbHMgXAorICAgIG5hdGl2ZXNkay0ke1BZVEhPTl9QTn0tc2hlbGwgXAorICAgIG5hdGl2ZXNkay0ke1BZVEhPTl9QTn0teG1sIFwKKyIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBweXRob24KKwlmb3IgUFlUSFNDUklQVCBpbiBgZ3JlcCAtcklsICdeIyEuKnB5dGhvbicgJHtEfWA7IGRvCisJCXNlZCAtaSAtZSAnMXN8XiMhLip8IyEvdXNyL2Jpbi9lbnYgJHtQWVRIT05fUE59fCcgJFBZVEhTQ1JJUFQKKwlkb25lCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLWdpdGRiLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0ZGIuaW5jCmluZGV4IDYzMzc1MmYuLjIzZWMyOTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0ZGIuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tZ2l0ZGIuaW5jCkBAIC04LDggKzgsOCBAQAogCiBQWVBJX1BBQ0tBR0UgPSAiZ2l0ZGIyIgogCi1TUkNfVVJJW21kNXN1bV0gPSAiOTRlNTllNWZiMDA5NjA1NDFmNmUxMzdiMTQ1NmFiMGEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODMzNjExMzFhMTgzNjY2MWExNTUxNzI5MzJhMTNjMDhiZGEyZGIzNjc0ZTRjYWEzMjM2OGFhNmViMDJmMzhjMiIKK1NSQ19VUklbbWQ1c3VtXSA9ICIxYTdlYTMzNjJlNDA1ZjhhNTYzNGY3ZWU1MzYzNjA5NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxYjZkZjE0MzM1NjdhNTFhNGE5YzFhNWEwZGU5NzdhYTM1MWE0MDVjYzU2ZDdkMzVmMzM4OGJhZDFmNjMwMzUwIgogCiBERVBFTkRTID0gIiR7UFlUSE9OX1BOfS1hc3luYyAke1BZVEhPTl9QTn0tc2V0dXB0b29scy1uYXRpdmUgJHtQWVRIT05fUE59LXNtbWFwIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS8wMDAxLXB5dGhvbi1uYXRpdmUtZml4LW9uZS1kb19wb3B1bGF0ZV9zeXNyb290LXdhcm5pbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS8wMDAxLXB5dGhvbi1uYXRpdmUtZml4LW9uZS1kb19wb3B1bGF0ZV9zeXNyb290LXdhcm5pbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwN2VlNTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvMDAwMS1weXRob24tbmF0aXZlLWZpeC1vbmUtZG9fcG9wdWxhdGVfc3lzcm9vdC13YXJuaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSA2Y2JiNzUyOWNmN2ZmMGRhM2NhNjQ5ZmIzNDg2ZmFjZDk2MjBkNjI1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjUgT2N0IDIwMTggMDc6MzI6MTQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gcHl0aG9uLW5hdGl2ZTogZml4IG9uZSBkb19wb3B1bGF0ZV9zeXNyb290IHdhcm5pbmcKLQotRml4IGJlbG93IHdhcm5pbmc6Ci1XQVJOSU5HOiBTa2lwcGluZyBSUEFUSCAvdXNyL2xpYjY0IGFzIGlzIGEgc3RhbmRhcmQgc2VhcmNoIHBhdGggZm9yCi13b3JrL3g4Nl82NC1saW51eC9weXRob24tbmF0aXZlLzIuNy4xNS1yMS4xL3JlY2lwZS1zeXNyb290LW5hdGl2ZS8KLXVzci9saWIvcHl0aG9uMi43L2xpYi1keW5sb2FkL19ic2RkYi5zbwotCi1zZXR1cC5weSB3aWxsIGNoZWNrIGRiLmggdW5kZXIgaW5jbHVkZV9kaXJzLCBmb3IgbmF0aXZlIGJ1aWxkLAotL3Vzci9saWI2NCB3aWxsIGJlIGluc2VydCB0byBwb3N0aW9uIDAgb2YgaW5jbHVkZV9kaXJzLCBzbwotaXQncyBwcmlvcml0eSBpcyBoaWdoZXIgdGhlbiBvdXIgc3lzcm9vdCwgY2F1c2UgZGIuaCBzeXNyb290Ci1pcyBpZ25vcmVkLCBhbmQgcnBhdGggc2V0IHRvIC91c3IvbGliNjQuIGFuZCB0aGlzIGNhdXNlIHdhcm5pbmcKLXdoZW4gZG9fcG9wdWxhdGVfc3lzcm9vdC4gdXNlIGFwcGVuZCB0byBmaXggaXQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Utc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0KLS0tLQotIHNldHVwLnB5IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggYTJjODEyNy4uMjJmOWUyMyAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTQ3LDcgKzQ3LDcgQEAgZGVmIGFkZF9kaXJfdG9fbGlzdChkaXJsaXN0LCBkaXIpOgotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICBkaXJfZXhpc3RzID0gb3MucGF0aC5pc2RpcihkaXIpCi0gICAgICAgICBpZiBkaXJfZXhpc3RzOgotLSAgICAgICAgICAgIGRpcmxpc3QuaW5zZXJ0KDAsIGRpcikKLSsgICAgICAgICAgICBkaXJsaXN0LmFwcGVuZChkaXIpCi0gCi0gTUFDT1NfU0RLX1JPT1QgPSBOb25lCi0gCi0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS8xMC1kaXN0dXRpbHMtZml4LXN3aWctcGFyYW1ldGVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvMTAtZGlzdHV0aWxzLWZpeC1zd2lnLXBhcmFtZXRlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTM5MjQ3Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS8xMC1kaXN0dXRpbHMtZml4LXN3aWctcGFyYW1ldGVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSMgU29tZSB2ZXJzaW9ucyBvZiBTV0lHIGRvIG5vdCB1c2UgdGhlIGV4dGVuc2lvbiBwYXJhbWV0ZXIuCi0jIE1ha2UgaXQgb3B0aW9uYWwuCi0jIFNpZ25lZC1PZmY6IE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1pY2tleUB2YW5pbGxlLW1lZGlhLmRlPgotSW5kZXg6IFB5dGhvbi0yLjYuMS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNi4xLm9yaWcvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX2V4dC5weQotKysrIFB5dGhvbi0yLjYuMS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvYnVpbGRfZXh0LnB5Ci1AQCAtNTY2LDcgKzU2Niw3IEBAIGNsYXNzIGJ1aWxkX2V4dCAoQ29tbWFuZCk6Ci0gICAgICAgICAgICAgdGFyZ2V0X2xhbmc9bGFuZ3VhZ2UpCi0gCi0gCi0tICAgIGRlZiBzd2lnX3NvdXJjZXMgKHNlbGYsIHNvdXJjZXMsIGV4dGVuc2lvbik6Ci0rICAgIGRlZiBzd2lnX3NvdXJjZXMgKHNlbGYsIHNvdXJjZXMsIGV4dGVuc2lvbj1Ob25lKToKLSAKLSAgICAgICAgICIiIldhbGsgdGhlIGxpc3Qgb2Ygc291cmNlIGZpbGVzIGluICdzb3VyY2VzJywgbG9va2luZyBmb3IgU1dJRwotICAgICAgICAgaW50ZXJmYWNlICguaSkgZmlsZXMuICBSdW4gU1dJRyBvbiBhbGwgdGhhdCBhcmUgZm91bmQsIGFuZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvMTEtZGlzdHV0aWxzLW5ldmVyLW1vZGlmeS1zaGViYW5nLWxpbmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS8xMS1kaXN0dXRpbHMtbmV2ZXItbW9kaWZ5LXNoZWJhbmctbGluZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzkyNDY5Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS8xMS1kaXN0dXRpbHMtbmV2ZXItbW9kaWZ5LXNoZWJhbmctbGluZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0jIERvbid0IG1vZGlmeSB0aGUgc2hlLWJhbmcgbGluZSBmb3IgYSBjcm9zcy1idWlsZC4KLSMgT3RoZXJ3aXNlIGl0IHBvaW50cyB0byBvdXIgaG9zdHB5dGhvbiAod2hpY2ggd2UgZG8gbm90IHdhbnQpCi0jCi0jIFNpZ25lZC1PZmY6IE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1pY2tleUB2YW5pbGxlLW1lZGlhLmRlPgotCi1JbmRleDogUHl0aG9uLTIuNi4xL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9idWlsZF9zY3JpcHRzLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNi4xLm9yaWcvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkKLSsrKyBQeXRob24tMi42LjEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2J1aWxkX3NjcmlwdHMucHkKLUBAIC04Nyw3ICs4Nyw3IEBAIGNsYXNzIGJ1aWxkX3NjcmlwdHMgKENvbW1hbmQpOgotICAgICAgICAgICAgICAgICAgICAgY29udGludWUKLSAKLSAgICAgICAgICAgICAgICAgbWF0Y2ggPSBmaXJzdF9saW5lX3JlLm1hdGNoKGZpcnN0X2xpbmUpCi0tICAgICAgICAgICAgICAgIGlmIG1hdGNoOgotKyAgICAgICAgICAgICAgICBpZiBGYWxzZTogI21hdGNoOgotICAgICAgICAgICAgICAgICAgICAgYWRqdXN0ID0gMQotICAgICAgICAgICAgICAgICAgICAgcG9zdF9pbnRlcnAgPSBtYXRjaC5ncm91cCgxKSBvciAnJwotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvbXVsdGlsaWIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS9tdWx0aWxpYi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWYwZjE3My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS9tdWx0aWxpYi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzNSArMCwwIEBACi1SZWJhc2VkIGZvciBQeXRob24gMi43LjkKLQotU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+Ci0KLTIwMTEvMDkvMjkKLVRoZSBweXRob24gcmVjaXBlIGJ1aWxkaW5nIHdhcyBmYWlsaW5nIGJlY2F1c2UgcHl0aG9uLW5hdGl2ZSAKLWNvdWxkIG5vdCBoYW5kbGUgc3lzLmxpYiB2YXIuIHN5cy5saWIgdmFyIGlzIGRlZmluZWQgaW4gdGhlIAotbXVsdGlsaWIgcGF0Y2ggaGVuY2UgYWRkZWQgdGhpcyBtdWx0aWxpYi5wYXRjaCBmb3IgcHl0aG9uLW5hdGl2ZSAKLXJlY2lwZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1zcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLQotSW5kZXg6IFB5dGhvbi0yLjcuMTQvSW5jbHVkZS9weXRob25ydW4uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9JbmNsdWRlL3B5dGhvbnJ1bi5oCi0rKysgUHl0aG9uLTIuNy4xNC9JbmNsdWRlL3B5dGhvbnJ1bi5oCi1AQCAtMTA4LDYgKzEwOCw3IEBAIFB5QVBJX0ZVTkMoY2hhciAqKSBQeV9HZXRQYXRoKHZvaWQpOwotIC8qIEluIHRoZWlyIG93biBmaWxlcyAqLwotIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRWZXJzaW9uKHZvaWQpOwotIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRQbGF0Zm9ybSh2b2lkKTsKLStQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0TGliKHZvaWQpOwotIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb3B5cmlnaHQodm9pZCk7Ci0gUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldENvbXBpbGVyKHZvaWQpOwotIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRCdWlsZEluZm8odm9pZCk7Ci1JbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQotKysrIFB5dGhvbi0yLjcuMTQvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKLUBAIC0yMiw2ICsyMiw4IEBAIGZyb20gc2l0ZSBpbXBvcnQgVVNFUl9CQVNFCi0gZnJvbSBzaXRlIGltcG9ydCBVU0VSX1NJVEUKLSAKLSAKLStsaWJuYW1lID0gc3lzLmxpYgotKwotIGlmIHN5cy52ZXJzaW9uIDwgIjIuMiI6Ci0gICAgIFdJTkRPV1NfU0NIRU1FID0gewotICAgICAgICAgJ3B1cmVsaWInOiAnJGJhc2UnLAotQEAgLTQyLDcgKzQ0LDcgQEAgZWxzZToKLSBJTlNUQUxMX1NDSEVNRVMgPSB7Ci0gICAgICd1bml4X3ByZWZpeCc6IHsKLSAgICAgICAgICdwdXJlbGliJzogJyRiYXNlL2xpYi9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKLS0gICAgICAgICdwbGF0bGliJzogJyRwbGF0YmFzZS9saWIvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCi0rICAgICAgICAncGxhdGxpYic6ICckcGxhdGJhc2UvJytsaWJuYW1lKycvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCi0gICAgICAgICAnaGVhZGVycyc6ICckYmFzZS9pbmNsdWRlL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0LyRkaXN0X25hbWUnLAotICAgICAgICAgJ3NjcmlwdHMnOiAnJGJhc2UvYmluJywKLSAgICAgICAgICdkYXRhJyAgIDogJyRiYXNlJywKLUluZGV4OiBQeXRob24tMi43LjE0L0xpYi9weWRvYy5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvcHlkb2MucHkKLSsrKyBQeXRob24tMi43LjE0L0xpYi9weWRvYy5weQotQEAgLTM3NSw3ICszNzUsNyBAQCBjbGFzcyBEb2M6Ci0gICAgIGRvY21vZHVsZSA9IGRvY2NsYXNzID0gZG9jcm91dGluZSA9IGRvY290aGVyID0gZG9jcHJvcGVydHkgPSBkb2NkYXRhID0gZmFpbAotIAotICAgICBkZWYgZ2V0ZG9jbG9jKHNlbGYsIG9iamVjdCwKLS0gICAgICAgICAgICAgICAgICBiYXNlZGlyPW9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICJsaWIiLAotKyAgICAgICAgICAgICAgICAgIGJhc2VkaXI9b3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgInN5cy5saWIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iK3N5cy52ZXJzaW9uWzA6M10pKToKLSAgICAgICAgICIiIlJldHVybiB0aGUgbG9jYXRpb24gb2YgbW9kdWxlIGRvY3Mgb3IgTm9uZSIiIgotIAotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3NpdGUucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3NpdGUucHkKLSsrKyBQeXRob24tMi43LjE0L0xpYi9zaXRlLnB5Ci1AQCAtMjg4LDEzICsyODgsMTkgQEAgZGVmIGdldHNpdGVwYWNrYWdlcygpOgotICAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnb3MyZW14JywgJ3Jpc2NvcycpOgotICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgIkxpYiIsICJzaXRlLXBhY2thZ2VzIikpCi0gICAgICAgICBlbGlmIG9zLnNlcCA9PSAnLyc6Ci0tICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAibGliIiwKLSsgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsIHN5cy5saWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2l0ZS1wYWNrYWdlcyIpKQotLSAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsICJzaXRlLXB5dGhvbiIpKQotKyAgICAgICAgICAgIGlmIHN5cy5saWIgIT0gImxpYiI6Ci0rICAgICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2l0ZS1wYWNrYWdlcyIpKQotKyAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgc3lzLmxpYiwgInNpdGUtcHl0aG9uIikpCi0rICAgICAgICAgICAgaWYgc3lzLmxpYiAhPSAibGliIjoKLSsgICAgICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAibGliIiwgInNpdGUtcHl0aG9uIikpCi0gICAgICAgICBlbHNlOgotICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQocHJlZml4KQotLSAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsICJzaXRlLXBhY2thZ2VzIikpCi0rICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCBzeXMubGliLCAic2l0ZS1wYWNrYWdlcyIpKQotICAgICByZXR1cm4gc2l0ZXBhY2thZ2VzCi0gCi0gZGVmIGFkZHNpdGVwYWNrYWdlcyhrbm93bl9wYXRocyk6Ci1JbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvdGVzdC90ZXN0X2RsLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi90ZXN0L3Rlc3RfZGwucHkKLSsrKyBQeXRob24tMi43LjE0L0xpYi90ZXN0L3Rlc3RfZGwucHkKLUBAIC00LDEwICs0LDExIEBACi0gaW1wb3J0IHVuaXR0ZXN0Ci0gZnJvbSB0ZXN0LnRlc3Rfc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgaW1wb3J0X21vZHVsZQotIGRsID0gaW1wb3J0X21vZHVsZSgnZGwnLCBkZXByZWNhdGVkPVRydWUpCi0raW1wb3J0IHN5cwotIAotIHNoYXJlZGxpYnMgPSBbCi0tICAgICgnL3Vzci9saWIvbGliYy5zbycsICdnZXRwaWQnKSwKLS0gICAgKCcvbGliL2xpYmMuc28uNicsICdnZXRwaWQnKSwKLSsgICAgKCcvdXNyLycrc3lzLmxpYisnL2xpYmMuc28nLCAnZ2V0cGlkJyksCi0rICAgICgnLycrc3lzLmxpYisnL2xpYmMuc28uNicsICdnZXRwaWQnKSwKLSAgICAgKCcvdXNyL2Jpbi9jeWd3aW4xLmRsbCcsICdnZXRwaWQnKSwKLSAgICAgKCcvdXNyL2xpYi9saWJjLmR5bGliJywgJ2dldHBpZCcpLAotICAgICBdCi1JbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvdHJhY2UucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3RyYWNlLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvdHJhY2UucHkKLUBAIC03NTQsMTAgKzc1NCwxMCBAQCBkZWYgbWFpbihhcmd2PU5vbmUpOgotICAgICAgICAgICAgICAgICAjIHNob3VsZCBJIGFsc28gY2FsbCBleHBhbmR1c2VyPyAoYWZ0ZXIgYWxsLCBjb3VsZCB1c2UgJEhPTUUpCi0gCi0gICAgICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoIiRwcmVmaXgiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMucHJlZml4LCAibGliIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcy5wYXRoLmpvaW4oc3lzLnByZWZpeCwgc3lzLmxpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10pKQotICAgICAgICAgICAgICAgICBzID0gcy5yZXBsYWNlKCIkZXhlY19wcmVmaXgiLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICJsaWIiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsIHN5cy5saWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdKSkKLSAgICAgICAgICAgICAgICAgcyA9IG9zLnBhdGgubm9ybXBhdGgocykKLSAgICAgICAgICAgICAgICAgaWdub3JlX2RpcnMuYXBwZW5kKHMpCi1JbmRleDogUHl0aG9uLTIuNy4xNC9NYWtlZmlsZS5wcmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTWFrZWZpbGUucHJlLmluCi0rKysgUHl0aG9uLTIuNy4xNC9NYWtlZmlsZS5wcmUuaW4KLUBAIC05MSw2ICs5MSw3IEBAIFBZX0NGTEFHUz0JJChDRkxBR1MpICQoQ1BQRkxBR1MpICQoQ0ZMQUcKLSAKLSAjIE1hY2hpbmUtZGVwZW5kZW50IHN1YmRpcmVjdG9yaWVzCi0gTUFDSERFUD0JQE1BQ0hERVBACi0rTElCPQkJQExJQkAKLSAKLSAjIE11bHRpYXJjaCBkaXJlY3RvcnkgKG1heSBiZSBlbXB0eSkKLSBNVUxUSUFSQ0g9CUBNVUxUSUFSQ0hACi1AQCAtMTEwLDcgKzExMSw3IEBAIExJQkRJUj0JCUBsaWJkaXJACi0gTUFORElSPQkJQG1hbmRpckAKLSBJTkNMVURFRElSPQlAaW5jbHVkZWRpckAKLSBDT05GSU5DTFVERURJUj0JJChleGVjX3ByZWZpeCkvaW5jbHVkZQotLVNDUklQVERJUj0JJChwcmVmaXgpL2xpYgotK1NDUklQVERJUj0JJChwcmVmaXgpL0BMSUJACi0gCi0gIyBEZXRhaWxlZCBkZXN0aW5hdGlvbiBkaXJlY3RvcmllcwotIEJJTkxJQkRFU1Q9CSQoTElCRElSKS9weXRob24kKFZFUlNJT04pCi1AQCAtNjQ0LDYgKzY0NSw3IEBAIE1vZHVsZXMvZ2V0cGF0aC5vOiAkKHNyY2RpcikvTW9kdWxlcy9nZXQKLSAJCS1ERVhFQ19QUkVGSVg9JyIkKGV4ZWNfcHJlZml4KSInIFwKLSAJCS1EVkVSU0lPTj0nIiQoVkVSU0lPTikiJyBcCi0gCQktRFZQQVRIPSciJChWUEFUSCkiJyBcCi0rCQktRExJQj0nIiQoTElCKSInIFwKLSAJCS1vICRAICQoc3JjZGlyKS9Nb2R1bGVzL2dldHBhdGguYwotIAotIE1vZHVsZXMvcHl0aG9uLm86ICQoc3JjZGlyKS9Nb2R1bGVzL3B5dGhvbi5jCi1AQCAtNjkyLDcgKzY5NCw3IEBAIHJlZ2VuLWFzdDoKLSBQeXRob24vY29tcGlsZS5vIFB5dGhvbi9zeW10YWJsZS5vIFB5dGhvbi9hc3QubzogJChzcmNkaXIpL0luY2x1ZGUvZ3JhbWluaXQuaCAkKHNyY2RpcikvSW5jbHVkZS9QeXRob24tYXN0LmgKLSAKLSBQeXRob24vZ2V0cGxhdGZvcm0ubzogJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi0tCQkkKENDKSAtYyAkKFBZX0NGTEFHUykgLURQTEFURk9STT0nIiQoTUFDSERFUCkiJyAtbyAkQCAkKHNyY2RpcikvUHl0aG9uL2dldHBsYXRmb3JtLmMKLSsJCSQoQ0MpIC1jICQoUFlfQ0ZMQUdTKSAtRFBMQVRGT1JNPSciJChNQUNIREVQKSInIC1ETElCPSciJChMSUIpIicgLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi0gCi0gUHl0aG9uL2ltcG9ydGRsLm86ICQoc3JjZGlyKS9QeXRob24vaW1wb3J0ZGwuYwotIAkJJChDQykgLWMgJChQWV9DRkxBR1MpIC1JJChETElOQ0xESVIpIC1vICRAICQoc3JjZGlyKS9QeXRob24vaW1wb3J0ZGwuYwotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTW9kdWxlcy9nZXRwYXRoLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTW9kdWxlcy9nZXRwYXRoLmMKLSsrKyBQeXRob24tMi43LjE0L01vZHVsZXMvZ2V0cGF0aC5jCi1AQCAtMTAwLDYgKzEwMCwxMyBAQAotICNlcnJvciAiUFJFRklYLCBFWEVDX1BSRUZJWCwgVkVSU0lPTiwgYW5kIFZQQVRIIG11c3QgYmUgY29uc3RhbnQgZGVmaW5lZCIKLSAjZW5kaWYKLSAKLSsjZGVmaW5lIExJQl9QWVRIT04gTElCICIvcHl0aG9uIiBWRVJTSU9OCi0rCi0rI2lmbmRlZiBQWVRIT05QQVRICi0rI2RlZmluZSBQWVRIT05QQVRIIFBSRUZJWCAiLyIgTElCX1BZVEhPTiAiOiIgXAotKyAgICAgICAgRVhFQ19QUkVGSVggIi8iIExJQl9QWVRIT04gIi9saWItZHlubG9hZCIKLSsjZW5kaWYKLSsKLSAjaWZuZGVmIExBTkRNQVJLCi0gI2RlZmluZSBMQU5ETUFSSyAib3MucHkiCi0gI2VuZGlmCi1AQCAtMTA4LDcgKzExNSw3IEBAIHN0YXRpYyBjaGFyIHByZWZpeFtNQVhQQVRITEVOKzFdOwotIHN0YXRpYyBjaGFyIGV4ZWNfcHJlZml4W01BWFBBVEhMRU4rMV07Ci0gc3RhdGljIGNoYXIgcHJvZ3BhdGhbTUFYUEFUSExFTisxXTsKLSBzdGF0aWMgY2hhciAqbW9kdWxlX3NlYXJjaF9wYXRoID0gTlVMTDsKLS1zdGF0aWMgY2hhciBsaWJfcHl0aG9uW10gPSAibGliL3B5dGhvbiIgVkVSU0lPTjsKLStzdGF0aWMgY2hhciBsaWJfcHl0aG9uW10gPSBMSUJfUFlUSE9OOwotIAotIHN0YXRpYyB2b2lkCi0gcmVkdWNlKGNoYXIgKmRpcikKLUluZGV4OiBQeXRob24tMi43LjE0L1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi0rKysgUHl0aG9uLTIuNy4xNC9QeXRob24vZ2V0cGxhdGZvcm0uYwotQEAgLTEwLDMgKzEwLDEzIEBAIFB5X0dldFBsYXRmb3JtKHZvaWQpCi0gewotIAlyZXR1cm4gUExBVEZPUk07Ci0gfQotKwotKyNpZm5kZWYgTElCCi0rI2RlZmluZSBMSUIgImxpYiIKLSsjZW5kaWYKLSsKLStjb25zdCBjaGFyICoKLStQeV9HZXRMaWIodm9pZCkKLSt7Ci0rCXJldHVybiBMSUI7Ci0rfQotSW5kZXg6IFB5dGhvbi0yLjcuMTQvUHl0aG9uL3N5c21vZHVsZS5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL1B5dGhvbi9zeXNtb2R1bGUuYwotKysrIFB5dGhvbi0yLjcuMTQvUHl0aG9uL3N5c21vZHVsZS5jCi1AQCAtMTQzNyw2ICsxNDM3LDggQEAgX1B5U3lzX0luaXQodm9pZCkKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeVN0cmluZ19Gcm9tU3RyaW5nKFB5X0dldENvcHlyaWdodCgpKSk7Ci0gICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInBsYXRmb3JtIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeVN0cmluZ19Gcm9tU3RyaW5nKFB5X0dldFBsYXRmb3JtKCkpKTsKLSsgICAgU0VUX1NZU19GUk9NX1NUUklORygibGliIiwKLSsgICAgICAgICAgICAgICAgUHlTdHJpbmdfRnJvbVN0cmluZyhQeV9HZXRMaWIoKSkpOwotICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJleGVjdXRhYmxlIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICBQeVN0cmluZ19Gcm9tU3RyaW5nKFB5X0dldFByb2dyYW1GdWxsUGF0aCgpKSk7Ci0gICAgIFNFVF9TWVNfRlJPTV9TVFJJTkcoInByZWZpeCIsCi1JbmRleDogUHl0aG9uLTIuNy4xNC9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgUHl0aG9uLTIuNy4xNC9jb25maWd1cmUuYWMKLUBAIC03NTgsNiArNzU4LDExIEBAIFN1bk9TKikKLSAgICAgOzsKLSBlc2FjCi0gCi0rQUNfU1VCU1QoTElCKQotK0FDX01TR19DSEVDS0lORyhMSUIpCi0rTElCPWBiYXNlbmFtZSAke2xpYmRpcn1gCi0rQUNfTVNHX1JFU1VMVCgkTElCKQotKwotIAotIEFDX1NVQlNUKExJQlJBUlkpCi0gQUNfTVNHX0NIRUNLSU5HKExJQlJBUlkpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS9ub2hvc3RsaWJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvbm9ob3N0bGlicy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDc4MDYwYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS9ub2hvc3RsaWJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTQgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotMjAxNC8xMi8xNQotUmViYXNlZCBmb3IgcHl0aG9uLTIuNy45Ci1TaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+Ci0KLUluZGV4OiBQeXRob24tMi43Ljkvc2V0dXAucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43Ljkub3JpZy9zZXR1cC5weQotKysrIFB5dGhvbi0yLjcuOS9zZXR1cC5weQotQEAgLTQzOSw5ICs0MzksOSBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gCi0gICAgIGRlZiBkZXRlY3RfbW9kdWxlcyhzZWxmKToKLSAgICAgICAgICMgRW5zdXJlIHRoYXQgL3Vzci9sb2NhbCBpcyBhbHdheXMgdXNlZAotLSAgICAgICAgaWYgbm90IGNyb3NzX2NvbXBpbGluZzoKLS0gICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMsICcvdXNyL2xvY2FsL2xpYicpCi0tICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzLCAnL3Vzci9sb2NhbC9pbmNsdWRlJykKLSsgICAgICAgICMgaWYgbm90IGNyb3NzX2NvbXBpbGluZzoKLSsgICAgICAgICAgICAjIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycywgJy91c3IvbG9jYWwvbGliJykKLSsgICAgICAgICAgICAjIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywgJy91c3IvbG9jYWwvaW5jbHVkZScpCi0gICAgICAgICBpZiBjcm9zc19jb21waWxpbmc6Ci0gICAgICAgICAgICAgc2VsZi5hZGRfZ2NjX3BhdGhzKCkKLSAgICAgICAgIHNlbGYuYWRkX211bHRpYXJjaF9wYXRocygpCi1AQCAtNDgwLDE1ICs0ODAsMTUgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgICAgICAgICAgICAgZm9yIGRpcmVjdG9yeSBpbiByZXZlcnNlZChvcHRpb25zLmRpcnMpOgotICAgICAgICAgICAgICAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChkaXJfbGlzdCwgZGlyZWN0b3J5KQotIAotLSAgICAgICAgaWYgb3MucGF0aC5ub3JtcGF0aChzeXMucHJlZml4KSAhPSAnL3VzcicgXAotLSAgICAgICAgICAgICAgICBhbmQgbm90IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcignUFlUSE9ORlJBTUVXT1JLJyk6Ci0rICAgICAgICAjaWYgb3MucGF0aC5ub3JtcGF0aChzeXMucHJlZml4KSAhPSAnL3VzcicgXAotKyAgICAgICAgICAgICAgICAjYW5kIG5vdCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BZVEhPTkZSQU1FV09SSycpOgotICAgICAgICAgICAgICMgT1NYIG5vdGU6IERvbid0IGFkZCBMSUJESVIgYW5kIElOQ0xVREVESVIgdG8gYnVpbGRpbmcgYSBmcmFtZXdvcmsKLSAgICAgICAgICAgICAjIChQWVRIT05GUkFNRVdPUksgaXMgc2V0KSB0byBhdm9pZCAjIGxpbmtpbmcgcHJvYmxlbXMgd2hlbgotICAgICAgICAgICAgICMgYnVpbGRpbmcgYSBmcmFtZXdvcmsgd2l0aCBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlcyB0aGFuCi0gICAgICAgICAgICAgIyB0aGUgb25lIHRoYXQgaXMgY3VycmVudGx5IGluc3RhbGxlZCAoaXNzdWUgIzc0NzMpCi0tICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzLAotKyAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkxJQkRJUiIpKQotLSAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywKLSsgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmluY2x1ZGVfZGlycywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJJTkNMVURFRElSIikpCi0gCi0gICAgICAgICB0cnk6Ci1AQCAtNzYxLDggKzc2MSw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgICAgICAgICAgcGFzcyAjIElzc3VlIDczODQ6IEFscmVhZHkgbGlua2VkIGFnYWluc3QgY3Vyc2VzIG9yIHRpbmZvLgotICAgICAgICAgICAgIGVsaWYgY3Vyc2VzX2xpYnJhcnk6Ci0gICAgICAgICAgICAgICAgIHJlYWRsaW5lX2xpYnMuYXBwZW5kKGN1cnNlc19saWJyYXJ5KQotLSAgICAgICAgICAgIGVsaWYgc2VsZi5jb21waWxlci5maW5kX2xpYnJhcnlfZmlsZShsaWJfZGlycyArCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbJy91c3IvbGliL3Rlcm1jYXAnXSwKLSsgICAgICAgICAgICBlbGlmIHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAndGVybWNhcCcpOgotICAgICAgICAgICAgICAgICByZWFkbGluZV9saWJzLmFwcGVuZCgndGVybWNhcCcpCi0gICAgICAgICAgICAgZXh0cy5hcHBlbmQoIEV4dGVuc2lvbigncmVhZGxpbmUnLCBbJ3JlYWRsaW5lLmMnXSwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL3JldmVydF91c2Vfb2Zfc3lzY29uZmlnZGF0YS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tbmF0aXZlL3JldmVydF91c2Vfb2Zfc3lzY29uZmlnZGF0YS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjAyYWFmMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS9yZXZlcnRfdXNlX29mX3N5c2NvbmZpZ2RhdGEucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4NiArMCwwIEBACi1PbiBvbGRlciB2ZXJzaW9ucyBvZiBQeXRob24sIHN5c2NvbmZpZyByZWFkIHRoZSBkYXRhIGZyb20gYm90aCB0aGUgTWFrZWZpbGUgYW5kCi10aGUgUHl0aG9uLmggZmlsZSBnZW5lcmF0ZWQgYXQgYnVpbGQgdGltZSwgY3JlYXRlZCBkaWN0aW9uYXJpZXMgd2l0aCB0aGVpciB2YXJpYWJsZXMKLWFuZCB1c2VkIHRob3NlIHdoZW4gdXNpbmcgZ2V0X2NvbmZpZ192YXIoKSwgbm93IGl0IHVzZXMgX3N5c2NvbmZpZ2RhdGEuYnVpbGRfdGltZV92YXJzW10KLXdoaWNoIGNvbnRhaW5zIGluZm9ybWF0aW9uIGZyb20gdGhlIEhPU1QsIGVycm9uZW91cyBpbiBvdXIgY2FzZSwgdGhpcyBwYXRjaCByZXZlcnRzIHRoaXMKLWJlaGF2aW9yIGFuZCB1c2VzIFB5dGhvbi5oIGFuZCBNYWtlZmlsZSB0byBnZXQgaW5mb3JtYXRpb24uCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2Utc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEFsZWphbmRybyBIZXJuYW5kZXogPGFsZWphbmRyby5oZXJuYW5kZXpAbGludXguaW50ZWwuY29tPgotCi1JbmRleDogUHl0aG9uLTIuNy45L0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLSsrKyBQeXRob24tMi43LjkvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLUBAIC00MDEsMTIgKzQwMSw2NiBAQCBfY29uZmlnX3ZhcnMgPSBOb25lCi0gCi0gZGVmIF9pbml0X3Bvc2l4KCk6Ci0gICAgICIiIkluaXRpYWxpemUgdGhlIG1vZHVsZSBhcyBhcHByb3ByaWF0ZSBmb3IgUE9TSVggc3lzdGVtcy4iIiIKLS0gICAgIyBfc3lzY29uZmlnZGF0YSBpcyBnZW5lcmF0ZWQgYXQgYnVpbGQgdGltZSwgc2VlIHRoZSBzeXNjb25maWcgbW9kdWxlCi0tICAgIGZyb20gX3N5c2NvbmZpZ2RhdGEgaW1wb3J0IGJ1aWxkX3RpbWVfdmFycwotLSAgICBnbG9iYWwgX2NvbmZpZ192YXJzCi0tICAgIF9jb25maWdfdmFycyA9IHt9Ci0tICAgIF9jb25maWdfdmFycy51cGRhdGUoYnVpbGRfdGltZV92YXJzKQotKyAgICBnID0ge30KLSsgICAgIyBsb2FkIHRoZSBpbnN0YWxsZWQgTWFrZWZpbGU6Ci0rICAgIHRyeToKLSsgICAgICAgIGZpbGVuYW1lID0gZ2V0X21ha2VmaWxlX2ZpbGVuYW1lKCkKLSsgICAgICAgIHBhcnNlX21ha2VmaWxlKGZpbGVuYW1lLCBnKQotKyAgICBleGNlcHQgSU9FcnJvciwgbXNnOgotKyAgICAgICAgbXlfbXNnID0gImludmFsaWQgUHl0aG9uIGluc3RhbGxhdGlvbjogdW5hYmxlIHRvIG9wZW4gJXMiICUgZmlsZW5hbWUKLSsgICAgICAgIGlmIGhhc2F0dHIobXNnLCAic3RyZXJyb3IiKToKLSsgICAgICAgICAgICBteV9tc2cgPSBteV9tc2cgKyAiICglcykiICUgbXNnLnN0cmVycm9yCi0rCi0rICAgICAgICByYWlzZSBEaXN0dXRpbHNQbGF0Zm9ybUVycm9yKG15X21zZykKLSsKLSsgICAgIyBsb2FkIHRoZSBpbnN0YWxsZWQgcHljb25maWcuaDoKLSsgICAgdHJ5OgotKyAgICAgICAgZmlsZW5hbWUgPSBnZXRfY29uZmlnX2hfZmlsZW5hbWUoKQotKyAgICAgICAgcGFyc2VfY29uZmlnX2goZmlsZShmaWxlbmFtZSksIGcpCi0rICAgIGV4Y2VwdCBJT0Vycm9yLCBtc2c6Ci0rICAgICAgICBteV9tc2cgPSAiaW52YWxpZCBQeXRob24gaW5zdGFsbGF0aW9uOiB1bmFibGUgdG8gb3BlbiAlcyIgJSBmaWxlbmFtZQotKyAgICAgICAgaWYgaGFzYXR0cihtc2csICJzdHJlcnJvciIpOgotKyAgICAgICAgICAgIG15X21zZyA9IG15X21zZyArICIgKCVzKSIgJSBtc2cuc3RyZXJyb3IKLSsKLSsgICAgICAgIHJhaXNlIERpc3R1dGlsc1BsYXRmb3JtRXJyb3IobXlfbXNnKQotKwotKyAgICAjIE9uIEFJWCwgdGhlcmUgYXJlIHdyb25nIHBhdGhzIHRvIHRoZSBsaW5rZXIgc2NyaXB0cyBpbiB0aGUgTWFrZWZpbGUKLSsgICAgIyAtLSB0aGVzZSBwYXRocyBhcmUgcmVsYXRpdmUgdG8gdGhlIFB5dGhvbiBzb3VyY2UsIGJ1dCB3aGVuIGluc3RhbGxlZAotKyAgICAjIHRoZSBzY3JpcHRzIGFyZSBpbiBhbm90aGVyIGRpcmVjdG9yeS4KLSsgICAgaWYgcHl0aG9uX2J1aWxkOgotKyAgICAgICAgZ1snTERTSEFSRUQnXSA9IGdbJ0JMRFNIQVJFRCddCi0gCi0rICAgIGVsaWYgZ2V0X3B5dGhvbl92ZXJzaW9uKCkgPCAnMi4xJzoKLSsgICAgICAgICMgVGhlIGZvbGxvd2luZyB0d28gYnJhbmNoZXMgYXJlIGZvciAxLjUuMiBjb21wYXRpYmlsaXR5LgotKyAgICAgICAgaWYgc3lzLnBsYXRmb3JtID09ICdhaXg0JzogICAgICAgICAgIyB3aGF0IGFib3V0IEFJWCAzLnggPwotKyAgICAgICAgICAgICMgTGlua2VyIHNjcmlwdCBpcyBpbiB0aGUgY29uZmlnIGRpcmVjdG9yeSwgbm90IGluIE1vZHVsZXMgYXMgdGhlCi0rICAgICAgICAgICAgIyBNYWtlZmlsZSBzYXlzLgotKyAgICAgICAgICAgIHB5dGhvbl9saWIgPSBnZXRfcHl0aG9uX2xpYihzdGFuZGFyZF9saWI9MSkKLSsgICAgICAgICAgICBsZF9zb19haXggPSBvcy5wYXRoLmpvaW4ocHl0aG9uX2xpYiwgJ2NvbmZpZycsICdsZF9zb19haXgnKQotKyAgICAgICAgICAgIHB5dGhvbl9leHAgPSBvcy5wYXRoLmpvaW4ocHl0aG9uX2xpYiwgJ2NvbmZpZycsICdweXRob24uZXhwJykKLSsKLSsgICAgICAgICAgICBnWydMRFNIQVJFRCddID0gIiVzICVzIC1iSTolcyIgJSAobGRfc29fYWl4LCBnWydDQyddLCBweXRob25fZXhwKQotKwotKyAgICAgICAgZWxpZiBzeXMucGxhdGZvcm0gPT0gJ2Jlb3MnOgotKyAgICAgICAgICAgICMgTGlua2VyIHNjcmlwdCBpcyBpbiB0aGUgY29uZmlnIGRpcmVjdG9yeS4gIEluIHRoZSBNYWtlZmlsZSBpdCBpcwotKyAgICAgICAgICAgICMgcmVsYXRpdmUgdG8gdGhlIHNyY2Rpciwgd2hpY2ggYWZ0ZXIgaW5zdGFsbGF0aW9uIG5vIGxvbmdlciBtYWtlcwotKyAgICAgICAgICAgICMgc2Vuc2UuCi0rICAgICAgICAgICAgcHl0aG9uX2xpYiA9IGdldF9weXRob25fbGliKHN0YW5kYXJkX2xpYj0xKQotKyAgICAgICAgICAgIGxpbmtlcnNjcmlwdF9wYXRoID0gc3RyaW5nLnNwbGl0KGdbJ0xEU0hBUkVEJ10pWzBdCi0rICAgICAgICAgICAgbGlua2Vyc2NyaXB0X25hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGxpbmtlcnNjcmlwdF9wYXRoKQotKyAgICAgICAgICAgIGxpbmtlcnNjcmlwdCA9IG9zLnBhdGguam9pbihweXRob25fbGliLCAnY29uZmlnJywKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlua2Vyc2NyaXB0X25hbWUpCi0rCi0rICAgICAgICAgICAgIyBYWFggdGhpcyBpc24ndCB0aGUgcmlnaHQgcGxhY2UgdG8gZG8gdGhpczogYWRkaW5nIHRoZSBQeXRob24KLSsgICAgICAgICAgICAjIGxpYnJhcnkgdG8gdGhlIGxpbmssIGlmIG5lZWRlZCwgc2hvdWxkIGJlIGluIHRoZSAiYnVpbGRfZXh0IgotKyAgICAgICAgICAgICMgY29tbWFuZC4gIChJdCdzIGFsc28gbmVlZGVkIGZvciBub24tTVMgY29tcGlsZXJzIG9uIFdpbmRvd3MsIGFuZAotKyAgICAgICAgICAgICMgaXQncyB0YWtlbiBjYXJlIG9mIGZvciB0aGVtIGJ5IHRoZSAnYnVpbGRfZXh0LmdldF9saWJyYXJpZXMoKScKLSsgICAgICAgICAgICAjIG1ldGhvZC4pCi0rICAgICAgICAgICAgZ1snTERTSEFSRUQnXSA9ICgiJXMgLUwlcy9saWIgLWxweXRob24lcyIgJQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKGxpbmtlcnNjcmlwdCwgUFJFRklYLCBnZXRfcHl0aG9uX3ZlcnNpb24oKSkpCi0rCi0rICAgIGdsb2JhbCBfY29uZmlnX3ZhcnMKLSsgICAgX2NvbmZpZ192YXJzID0gZwotIAotIGRlZiBfaW5pdF9udCgpOgotICAgICAiIiJJbml0aWFsaXplIHRoZSBtb2R1bGUgYXMgYXBwcm9wcmlhdGUgZm9yIE5UIiIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS91bml4Y2NvbXBpbGVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmUvdW5peGNjb21waWxlci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDUwMjgyOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZS91bml4Y2NvbXBpbGVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVRoZSBDQyB2YXJpYWJsZSxzb21ldGltZXMgbGlrZToieDg2XzY0LXBva3ktbGludXgtZ2NjICAgLW02NCAtLXN5c3Jvb3Q9LyR7VE1QRElSfS9zeXNyb290cy9xZW11eDg2LTY0IiwgY29udGFpbnMgb3B0aW9uIGluZm9ybWF0aW9uLiAKLVRoaXMgd2lsbCBsZWFkIHRvIHdyb25nIGNvbXBpbGVyIG5hbWUgInFlbXV4ODYtNjQiIHJhdGhlciB0aGFuICJ4ODZfNjQtcG9reS1saW51eC1nY2MiIHdoZW4gcHl0aG9uIGZpbmRpbmcgdGhlIGNvbXBpbGVyIG5hbWUuCi0KLVNpZ25lZC1vZmYtYnk6IE1laSBMZWkgPGxlaS5tZWlAaW50ZWwuY29tPgotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLUluZGV4OiBQeXRob24tMi43LjIvTGliL2Rpc3R1dGlscy91bml4Y2NvbXBpbGVyLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4yLm9yaWcvTGliL2Rpc3R1dGlscy91bml4Y2NvbXBpbGVyLnB5CTIwMTEtMTEtMjQgMTM6NTE6MTAuNTM5OTk4NzIyIC0wODAwCi0rKysgUHl0aG9uLTIuNy4yL0xpYi9kaXN0dXRpbHMvdW5peGNjb21waWxlci5weQkyMDExLTExLTI0IDE1OjU0OjM2Ljg3MjEzNzc2NiAtMDgwMAotQEAgLTI4Miw3ICsyODIsNyBAQAotICAgICAgICAgIyB0aGlzIHRpbWUsIHRoZXJlJ3Mgbm8gd2F5IHRvIGRldGVybWluZSB0aGlzIGluZm9ybWF0aW9uIGZyb20KLSAgICAgICAgICMgdGhlIGNvbmZpZ3VyYXRpb24gZGF0YSBzdG9yZWQgaW4gdGhlIFB5dGhvbiBpbnN0YWxsYXRpb24sIHNvCi0gICAgICAgICAjIHdlIHVzZSB0aGlzIGhhY2suCi0tICAgICAgICBjb21waWxlciA9IG9zLnBhdGguYmFzZW5hbWUoc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJDQyIpKQotKyAgICAgICAgY29tcGlsZXIgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkNDIikKLSAgICAgICAgIGlmIHN5cy5wbGF0Zm9ybVs6Nl0gPT0gImRhcndpbiI6Ci0gICAgICAgICAgICAgIyBNYWNPU1gncyBsaW5rZXIgZG9lc24ndCB1bmRlcnN0YW5kIHRoZSAtUiBmbGFnIGF0IGFsbAotICAgICAgICAgICAgIHJldHVybiAiLUwiICsgZGlyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZV8yLjcuMTcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLW5hdGl2ZV8yLjcuMTcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkzNjgxMGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1uYXRpdmVfMi43LjE3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsODggKzAsMCBAQAotcmVxdWlyZSBweXRob24uaW5jCi1FWFRSQU5BVElWRVBBVEggKz0gImJ6aXAyLW5hdGl2ZSIKLURFUEVORFMgPSAib3BlbnNzbC1uYXRpdmUgYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIHpsaWItbmF0aXZlIHJlYWRsaW5lLW5hdGl2ZSBzcWxpdGUzLW5hdGl2ZSBleHBhdC1uYXRpdmUgZ2RibS1uYXRpdmUgZGItbmF0aXZlIgotCi1TUkNfVVJJICs9ICJcCi0gICAgICAgICAgICBmaWxlOi8vMDUtZW5hYmxlLWN0eXBlcy1jcm9zcy1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMTAtZGlzdHV0aWxzLWZpeC1zd2lnLXBhcmFtZXRlci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMTEtZGlzdHV0aWxzLW5ldmVyLW1vZGlmeS1zaGViYW5nLWxpbmUucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtZGlzdHV0aWxzLXNldC10aGUtcHJlZml4LXRvLWJlLWluc2lkZS1zdGFnaW5nLWRpcmVjdC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vdW5peGNjb21waWxlci5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbm9ob3N0bGlicy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vbXVsdGlsaWIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2FkZC1tZDVtb2R1bGUtc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1weXRob24tUmVzb2x2ZS1pbnRlcm1lZGlhdGUtc3RhZ2luZy1pc3N1ZXMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3BhcmFsbGVsLW1ha2VpbnN0LWNyZWF0ZS1iaW5kaXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3JldmVydF91c2Vfb2Zfc3lzY29uZmlnZGF0YS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1weXRob24tbmF0aXZlLWZpeC1vbmUtZG9fcG9wdWxhdGVfc3lzcm9vdC13YXJuaW5nLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgotCi1GSUxFU0VYVFJBUEFUSFMgPS4gIiR7RklMRV9ESVJOQU1FfS8ke1BOfToiCi0KLWluaGVyaXQgbmF0aXZlCi0KLUVYVFJBX09FQ09ORl9hcHBlbmQgPSAiIC0tYmluZGlyPSR7YmluZGlyfS8ke1BOfSAtLXdpdGgtc3lzdGVtLWV4cGF0PSR7U1RBR0lOR19ESVJfSE9TVH0iCi0KLUVYVFJBX09FTUFLRSA9ICdcCi0gIExJQkM9IiIgXAotICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0gXAotICBTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSX05BVElWRX0gXAotJwotCi1kb19jb25maWd1cmVfYXBwZW5kKCkgewotCWF1dG9yZWNvbmYgLS12ZXJib3NlIC0taW5zdGFsbCAtLWZvcmNlIC0tZXhjbHVkZT1hdXRvcG9pbnQgLi4vUHl0aG9uLSR7UFZ9L01vZHVsZXMvX2N0eXBlcy9saWJmZmkKLX0KLQotIyBSZWdlbmVyYXRlIGFsbCBvZiB0aGUgZ2VuZXJhdGVkIGZpbGVzCi0jIFRoaXMgZW5zdXJlcyB0aGF0IHBnZW4gYW5kIGZyaWVuZHMgZ2V0IGNyZWF0ZWQgZHVyaW5nIHRoZSBjb21waWxlIHBoYXNlCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgb2VfcnVubWFrZSByZWdlbi1hbGwKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQlpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vJHtQTn0KLQlpbnN0YWxsIC1tIDA3NTUgUGFyc2VyL3BnZW4gJHtEfSR7YmluZGlyfS8ke1BOfQotCi0JIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBweXRob24KLQlmb3IgUFlUSFNDUklQVCBpbiBgZ3JlcCAtcklsICR7YmluZGlyfS8ke1BOfS9weXRob24gJHtEfSR7YmluZGlyfS8ke1BOfWA7IGRvCi0JCXNlZCAtaSAtZSAnMXN8XiMhLip8IyEvdXNyL2Jpbi9lbnYgcHl0aG9ufCcgJFBZVEhTQ1JJUFQKLQlkb25lCi0KLQkjIEFkZCBhIHN5bWxpbmsgdG8gdGhlIG5hdGl2ZSBQeXRob24gc28gdGhhdCBzY3JpcHRzIGNhbiBqdXN0IGludm9rZQotCSMgIm5hdGl2ZXB5dGhvbiIgYW5kIGdldCB0aGUgcmlnaHQgb25lIHdpdGhvdXQgbmVlZGluZyBhYnNvbHV0ZSBwYXRocwotCSMgKHRoZXNlIG9mdGVuIGVuZCB1cCB0b28gbG9uZyBmb3IgdGhlICMhIHBhcnNlciBpbiB0aGUga2VybmVsIGFzIHRoZQotCSMgYnVmZmVyIGlzIDEyOCBieXRlcyBsb25nKS4KLQlsbiAtcyBweXRob24tbmF0aXZlL3B5dGhvbiAke0R9JHtiaW5kaXJ9L25hdGl2ZXB5dGhvbgotCi0JIyBXZSBkb24ndCB3YW50IG1vZHVsZXMgaW4gfi8ubG9jYWwgYmVpbmcgdXNlZCBpbiBwcmVmZXJlbmNlIHRvIHRob3NlCi0JIyBpbnN0YWxsZWQgaW4gdGhlIG5hdGl2ZSBzeXNyb290LCBzbyBkaXNhYmxlIHVzZXIgc2l0ZSBzdXBwb3J0LgotCXNlZCAtaSAtZSAncyxeXChFTkFCTEVfVVNFUl9TSVRFID0gXCkuKixcMUZhbHNlLCcgJHtEfSR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NpdGUucHkKLX0KLQotcHl0aG9uKCl7Ci0KLSAgICAjIFJlYWQgSlNPTiBtYW5pZmVzdAotICAgIGltcG9ydCBqc29uCi0gICAgcHl0aG9uZGlyID0gZC5nZXRWYXIoJ1RISVNESVInKQotICAgIHdpdGggb3BlbihweXRob25kaXIrJy9weXRob24vcHl0aG9uMi1tYW5pZmVzdC5qc29uJykgYXMgbWFuaWZlc3RfZmlsZToKLSAgICAgICAgbWFuaWZlc3Rfc3RyID0gIG1hbmlmZXN0X2ZpbGUucmVhZCgpCi0gICAgICAgIGpzb25fc3RhcnQgPSBtYW5pZmVzdF9zdHIuZmluZCgnIyBFT0MnKSArIDYKLSAgICAgICAgbWFuaWZlc3RfZmlsZS5zZWVrKGpzb25fc3RhcnQpCi0gICAgICAgIG1hbmlmZXN0X3N0ciA9IG1hbmlmZXN0X2ZpbGUucmVhZCgpCi0gICAgICAgIHB5dGhvbl9tYW5pZmVzdCA9IGpzb24ubG9hZHMobWFuaWZlc3Rfc3RyKQotCi0gICAgcnByb3ZpZGVzID0gZC5nZXRWYXIoJ1JQUk9WSURFUycpLnNwbGl0KCkKLQotICAgICMgSGFyZGNvZGVkIHNpbmNlIGl0IGNhbnQgYmUgcHl0aG9uLW5hdGl2ZS1mb28sIHNob3VsZCBiZSBweXRob24tZm9vLW5hdGl2ZQotICAgIHBuID0gJ3B5dGhvbicKLQotICAgIGZvciBrZXkgaW4gcHl0aG9uX21hbmlmZXN0OgotICAgICAgICBweXBhY2thZ2UgPSBwbiArICctJyArIGtleSArICctbmF0aXZlJwotICAgICAgICBpZiBweXBhY2thZ2Ugbm90IGluIHJwcm92aWRlczoKLSAgICAgICAgICAgICAgcnByb3ZpZGVzLmFwcGVuZChweXBhY2thZ2UpCi0KLSAgICBkLnNldFZhcignUlBST1ZJREVTJywgJyAnLmpvaW4ocnByb3ZpZGVzKSkKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGJyLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcGJyLmluYwppbmRleCAwZTY0NTAxLi5jZTNjMjI0IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXBici5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1wYnIuaW5jCkBAIC01LDYgKzUsOCBAQAogTElDRU5TRSA9ICJBcGFjaGUtMi4wIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MWRlY2U3ODIxYmYzZmQ3MGZlMTMwOWVhYTM3ZDUyYTIiCiAKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWNoYW5nZS1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2giCisKIGluaGVyaXQgcHlwaQogCiBSREVQRU5EU18ke1BOfSArPSAiJHtQWVRIT05fUE59LXBpcCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwYXJzaW5nLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tcHlwYXJzaW5nLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zNDhiMzI0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1weXBhcnNpbmcuaW5jCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIHBhcnNpbmcgbW9kdWxlIgorSE9NRVBBR0UgPSAiaHR0cDovL3B5cGFyc2luZy53aWtpc3BhY2VzLmNvbS8iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY1N2E1NjYyMzM4ODg1MTNlMWYwN2JhMTNlMmY0N2YxIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjA5NTNlNDdhMDExMmY3YTY1YWVjMjMwNWZmZGY3YjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzIwM2VjODc4M2JmNzcxYTE1NWIyMDcyNzliOWJjY2I4ZGVhMDJkOGYwYzllNWY4ZWFkNTA3YmMzMjQ2ZWNjMSIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInB5cGFyc2luZy0oP1A8cHZlcj4uKilcLnRhciIKKworaW5oZXJpdCBweXBpCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisgICAgJHtQWVRIT05fUE59LWRlYnVnZ2VyIFwKKyAgICAke1BZVEhPTl9QTn0tanNvbiBcCisgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCisgICAgJHtQWVRIT05fUE59LXBwcmludCBcCisgICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCisgICAgJHtQWVRIT05fUE59LXRocmVhZGluZyBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHMuaW5jCmluZGV4IDAyN2UyNTkuLjA3YzJmOGIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2V0dXB0b29scy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzLmluYwpAQCAtMTAsOCArMTAsMTAgQEAKIAogU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vMDAwMS1jb25kaXRpb25hbGx5LWRvLW5vdC1mZXRjaC1jb2RlLWJ5LWVhc3lfaW5zdGFsbC5wYXRjaCIKIAotU1JDX1VSSVttZDVzdW1dID0gIjg5YTU5MmQ3MzNiMzFlMTgwYTRiNmFkNzYwYzA2ODVhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlYWU3ODJjY2YzNmI3OTBjMjFiZGU3ZDg2YTRmMzAzYTQ0MWNkNzcwMzZiMjVjNTU5YTYwMmNmNTE4NmNlNGQiCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1jaGFuZ2Utc2hlYmFuZy10by1weXRob24zLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMGM5NTZlZWExNDJhZjljMmIwMmQ3MmUzYzA0MmFmMzAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODljNmU2MDExZWMyZjZkNTdkNDNhM2Y5Mjk2YzRlZjAyMmMyY2JmNDliYWIyNmI0MDdmZTY3OTkyYWUzMzk3ZiIKIAogREVQRU5EUyArPSAiJHtQWVRIT05fUE59IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHNfNDEuNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zZXR1cHRvb2xzXzQxLjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2Y5NDQwNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNldHVwdG9vbHNfNDEuNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOSArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi1zZXR1cHRvb2xzLmluYwotCi1QUk9WSURFUyA9ICJweXRob24tZGlzdHJpYnV0ZSIKLQotaW5oZXJpdCBzZXR1cHRvb2xzCi0KLVJSRVBMQUNFU18ke1BOfSA9ICJweXRob24tZGlzdHJpYnV0ZSIKLVJQUk9WSURFU18ke1BOfSA9ICJweXRob24tZGlzdHJpYnV0ZSIKLVJDT05GTElDVFNfJHtQTn0gPSAicHl0aG9uLWRpc3RyaWJ1dGUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLXNpeC5pbmMKaW5kZXggYzM4NjA5MC4uMDViMzI4MSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi1zaXguaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24tc2l4LmluYwpAQCAtMiwxMCArMiw3IEBACiBIT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3NpeC8iCiBTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZjgyZWIzYTFhN2ZhZGU2MGJkYTU5ODA5MzUwODRiNjIiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlOTJjMjNjODgyYzdkNTU2NGNlNTc3M2ZlMzFiMjc3MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMGY2MTAyNzllOGIyNTc4Y2FiNmRiMjA3NDExMzAzMzE3MzVjNzgxYjU2MDUzYzU5YzQwNzZkYTI3ZjA2YjY2IgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NDNjZmM5ZTRhYzBlMzc3YWNmYjliNzZmNTZiODQxNWQiCiAKIGluaGVyaXQgcHlwaQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjMwYzI2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24uaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgUHl0aG9uIFByb2dyYW1taW5nIExhbmd1YWdlIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5weXRob24ub3JnIgotTElDRU5TRSA9ICJQU0Z2MiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotIyBidW1wIHRoaXMgb24gZXZlcnkgY2hhbmdlIGluIGNvbnRyaWIvcHl0aG9uL2dlbmVyYXRlLW1hbmlmZXN0LTIuNy5weQotSU5DX1BSID0gInIxIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNDY2MjQyOTg5YmQzM2MxYmQyYjZhNTI2YTc0MjQ5OCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8ke1BWfS9QeXRob24tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjNiNmQyYzkyZjQyYTYwNjY3ODE0MzU4YWI5ZjBjZmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGQ0M2YwMzNjZGJkMGFhN2I3MDIzYzgxYjBlOTg2ZmQxMWU2NTNiNTI0OGRhYzkxNDRkNTA4ZjExODEyYmE0MSIKLQotIyBweXRob24gcmVjaXBlIGlzIGFjdHVhbGx5IHB5dGhvbiAyLngKLSMgYWxzbywgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54Ci1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbUHBdeXRob24tKD9QPHB2ZXI+MihcLlxkKykrKS50YXIiCi0KLUNWRV9QUk9EVUNUID0gInB5dGhvbiIKLQotUFlUSE9OX01BSk1JTiA9ICIyLjciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAtLXdpdGgtdGhyZWFkcyBcCi0gIC0td2l0aC1weW1hbGxvYyBcCi0gIC0td2l0aG91dC1jeHgtbWFpbiBcCi0gIC0td2l0aC1zaWduYWwtbW9kdWxlIFwKLSAgLS1lbmFibGUtc2hhcmVkIFwKLSAgLS1lbmFibGUtaXB2Nj0ke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCAneWVzJywgJ25vJywgZCl9IFwKLSAgYWNfY3ZfaGVhZGVyX2JsdWV0b290aF9ibHVldG9vdGhfaD1ubyBhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2g9bm8gXAotIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQlsaWJkaXJsZWFmPSIkKGVjaG8gJHtsaWJkaXJ9IHwgc2VkIC1lICdzOiR7cHJlZml4fS86OicpIgotCXNlZCAtaSAtZSAiczpTRURNRUxJQkxFQUY6JHtsaWJkaXJsZWFmfTpnIiBcCi0JCSR7U30vY29uZmlndXJlLmFjCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlzZWQgLWkgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS9pbnN0YWxsOmluc3RhbGw6ZycgXAotCQktZSAnczoke0hPU1RUT09MU19ESVJ9L21rZGlyOm1rZGlyOmcnIFwKLQkJJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLWRpc3R1dGlscy1zZXQtdGhlLXByZWZpeC10by1iZS1pbnNpZGUtc3RhZ2luZy1kaXJlY3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtZGlzdHV0aWxzLXNldC10aGUtcHJlZml4LXRvLWJlLWluc2lkZS1zdGFnaW5nLWRpcmVjdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTAyZjg0OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtZGlzdHV0aWxzLXNldC10aGUtcHJlZml4LXRvLWJlLWluc2lkZS1zdGFnaW5nLWRpcmVjdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gNGNkZjJlOWRmMTNjNjMyN2ZjYzk0ZDUzZTQ5NTMwMDU1NDNhZWYzZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogV2VkLCA2IEFwciAyMDE2IDE3OjQzOjAyICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMDEvMTBdIGRpc3R1dGlsczogc2V0IHRoZSBwcmVmaXggdG8gYmUgaW5zaWRlIHN0YWdpbmcKLSBkaXJlY3RvcnkKLQotVGhlIHByb3BlciBwcmVmaXggaXMgaW5zaWRlIG91ciBzdGFnaW5nIGFyZWEuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi1TaWduZWQtb2ZmLWJ5OiBNaWNoYWVsICdNaWNrZXknIExhdWVyIDxtaWNrZXlAdmFuaWxsZS1tZWRpYS5kZT4KLVNpZ25lZC1vZmYtYnk6IFBoaWwgQmx1bmRlbGwgPHBoaWxiQGdudS5vcmc+Ci1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIExpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5IHwgMTAgKysrKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci1pbmRleCBkZTdkYTFkLi5mM2FhY2Y3IDEwMDY0NAotLS0tIGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLSsrKyBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci1AQCAtNzUsNyArNzUsNyBAQCBkZWYgZ2V0X3B5dGhvbl9pbmMocGxhdF9zcGVjaWZpYz0wLCBwcmVmaXg9Tm9uZSk6Ci0gICAgIHN5cy5leGVjX3ByZWZpeCAtLSBpLmUuLCBpZ25vcmUgJ3BsYXRfc3BlY2lmaWMnLgotICAgICAiIiIKLSAgICAgaWYgcHJlZml4IGlzIE5vbmU6Ci0tICAgICAgICBwcmVmaXggPSBwbGF0X3NwZWNpZmljIGFuZCBFWEVDX1BSRUZJWCBvciBQUkVGSVgKLSsgICAgICAgIHByZWZpeCA9IG9zLmVudmlyb25bJ1NUQUdJTkdfSU5DRElSJ10ucnN0cmlwKCdpbmNsdWRlJykKLSAKLSAgICAgaWYgb3MubmFtZSA9PSAicG9zaXgiOgotICAgICAgICAgaWYgcHl0aG9uX2J1aWxkOgotQEAgLTExNSwxMiArMTE1LDE2IEBAIGRlZiBnZXRfcHl0aG9uX2xpYihwbGF0X3NwZWNpZmljPTAsIHN0YW5kYXJkX2xpYj0wLCBwcmVmaXg9Tm9uZSk6Ci0gICAgIElmICdwcmVmaXgnIGlzIHN1cHBsaWVkLCB1c2UgaXQgaW5zdGVhZCBvZiBzeXMucHJlZml4IG9yCi0gICAgIHN5cy5leGVjX3ByZWZpeCAtLSBpLmUuLCBpZ25vcmUgJ3BsYXRfc3BlY2lmaWMnLgotICAgICAiIiIKLSsgICAgbGliX2Jhc2VuYW1lID0gb3MuZW52aXJvblsnU1RBR0lOR19MSUJESVInXS5zcGxpdCgnLycpWy0xXQotICAgICBpZiBwcmVmaXggaXMgTm9uZToKLS0gICAgICAgIHByZWZpeCA9IHBsYXRfc3BlY2lmaWMgYW5kIEVYRUNfUFJFRklYIG9yIFBSRUZJWAotKyAgICAgICAgaWYgcGxhdF9zcGVjaWZpYzoKLSsgICAgICAgICAgICBwcmVmaXggPSBvcy5lbnZpcm9uWydTVEFHSU5HX0xJQkRJUiddLnJzdHJpcChsaWJfYmFzZW5hbWUpCi0rICAgICAgICBlbHNlOgotKyAgICAgICAgICAgIHByZWZpeCA9IFBSRUZJWAotIAotICAgICBpZiBvcy5uYW1lID09ICJwb3NpeCI6Ci0gICAgICAgICBsaWJweXRob24gPSBvcy5wYXRoLmpvaW4ocHJlZml4LAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJsaWIiLCAicHl0aG9uIiArIGdldF9weXRob25fdmVyc2lvbigpKQotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYl9iYXNlbmFtZSwgInB5dGhvbiIgKyBnZXRfcHl0aG9uX3ZlcnNpb24oKSkKLSAgICAgICAgIGlmIHN0YW5kYXJkX2xpYjoKLSAgICAgICAgICAgICByZXR1cm4gbGlicHl0aG9uCi0gICAgICAgICBlbHNlOgotLS0gCi0yLjguMC5yYzMKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLXB5dGhvbi1SZXNvbHZlLWludGVybWVkaWF0ZS1zdGFnaW5nLWlzc3Vlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS1weXRob24tUmVzb2x2ZS1pbnRlcm1lZGlhdGUtc3RhZ2luZy1pc3N1ZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJmZjJjY2MuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMDAxLXB5dGhvbi1SZXNvbHZlLWludGVybWVkaWF0ZS1zdGFnaW5nLWlzc3Vlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUZyb20gNzdiY2IzMjM4YjI4NTNkNTExNzE0NTQ0ZTBmODRhMzdiZTZjNzliZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgotRGF0ZTogV2VkLCAxNCBOb3YgMjAxMiAxNDozMToyNCArMDAwMAotU3ViamVjdDogW1BBVENIXSBweXRob246IFJlc29sdmUgaW50ZXJtZWRpYXRlIHN0YWdpbmcgaXNzdWVzCi0KLVdoZW4gY3Jvc3MgY29tcGlsaW5nIHB5dGhvbiwgd2UgdXNlZCB0byBuZWVkIHRvIGluc3RhbGwgdGhlIE1ha2VmaWxlLCBweWNvbmZpZy5oCi1hbmQgdGhlIHB5dGhvbiBsaWJyYXJ5IHRvIHRoZWlyIGZpbmFsIGxvY2F0aW9uIGJlZm9yZSBiZWluZyBhYmxlIHRvIGNvbXBpbGUgdGhlCi1yZXN0IG9mIHB5dGhvbi4gVGhpcyBjaGFuZ2UgYWxsb3dzIHVzIHRvIHBvaW50IHB5dGhvbiBhdCBpdHMgb3duIHNvdXJjZSB3aGVuCi1idWlsZGluZywgYXZvaWRpbmcgYSB2YXJpZXR5IG9mIHN5c3Jvb3Qgc3RhZ2luZyBpc3N1ZXMgYW5kIHNpbXBsaWZ5aW5nIHRoZSBtYWluCi1weXRob24gcmVjaXBlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUKLVJQIDIwMTIvMTEvMTMKLQotLS0tCi0gTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgfCAzICsrKwotIExpYi9zeXNjb25maWcucHkgICAgICAgICAgIHwgNSArKysrLQotIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci1pbmRleCAyZjRiOGNhLi4xNWJjZWI1IDEwMDY0NAotLS0tIGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLSsrKyBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci1AQCAtMzEsNiArMzEsOSBAQCBlbHNlOgotICAgICAjIHN5cy5leGVjdXRhYmxlIGNhbiBiZSBlbXB0eSBpZiBhcmd2WzBdIGhhcyBiZWVuIGNoYW5nZWQgYW5kIFB5dGhvbiBpcwotICAgICAjIHVuYWJsZSB0byByZXRyaWV2ZSB0aGUgcmVhbCBwcm9ncmFtIG5hbWUKLSAgICAgcHJvamVjdF9iYXNlID0gb3MuZ2V0Y3dkKCkKLStfUFlUSE9OQlVJTERESVIgPSBvcy5lbnZpcm9uLmdldCgiUFlUSE9OQlVJTERESVIiLCBOb25lKQotK2lmIF9QWVRIT05CVUlMRERJUjoKLSsgICAgcHJvamVjdF9iYXNlID0gX1BZVEhPTkJVSUxERElSCi0gaWYgb3MubmFtZSA9PSAibnQiIGFuZCAicGNidWlsZCIgaW4gcHJvamVjdF9iYXNlWy04Ol0ubG93ZXIoKToKLSAgICAgcHJvamVjdF9iYXNlID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguam9pbihwcm9qZWN0X2Jhc2UsIG9zLnBhdGgucGFyZGlyKSkKLSAjIFBDL1ZTNy4xCi1kaWZmIC0tZ2l0IGEvTGliL3N5c2NvbmZpZy5weSBiL0xpYi9zeXNjb25maWcucHkKLWluZGV4IDljODM1MGQuLmJkZGJlMmUgMTAwNjQ0Ci0tLS0gYS9MaWIvc3lzY29uZmlnLnB5Ci0rKysgYi9MaWIvc3lzY29uZmlnLnB5Ci1AQCAtOTMsNiArOTMsNyBAQCBfUFJFRklYID0gb3MucGF0aC5ub3JtcGF0aChzeXMucHJlZml4KQotIF9FWEVDX1BSRUZJWCA9IG9zLnBhdGgubm9ybXBhdGgoc3lzLmV4ZWNfcHJlZml4KQotIF9DT05GSUdfVkFSUyA9IE5vbmUKLSBfVVNFUl9CQVNFID0gTm9uZQotK19QWVRIT05CVUlMRERJUiA9IG9zLmVudmlyb24uZ2V0KCJQWVRIT05CVUlMRERJUiIsIE5vbmUpCi0gCi0gZGVmIF9zYWZlX3JlYWxwYXRoKHBhdGgpOgotICAgICB0cnk6Ci1AQCAtMTAwLDcgKzEwMSw5IEBAIGRlZiBfc2FmZV9yZWFscGF0aChwYXRoKToKLSAgICAgZXhjZXB0IE9TRXJyb3I6Ci0gICAgICAgICByZXR1cm4gcGF0aAotIAotLWlmIHN5cy5leGVjdXRhYmxlOgotK2lmIF9QWVRIT05CVUlMRERJUjoKLSsgICAgX1BST0pFQ1RfQkFTRSA9IF9QWVRIT05CVUlMRERJUgotK2VsaWYgc3lzLmV4ZWN1dGFibGU6Ci0gICAgIF9QUk9KRUNUX0JBU0UgPSBvcy5wYXRoLmRpcm5hbWUoX3NhZmVfcmVhbHBhdGgoc3lzLmV4ZWN1dGFibGUpKQotIGVsc2U6Ci0gICAgICMgc3lzLmV4ZWN1dGFibGUgY2FuIGJlIGVtcHR5IGlmIGFyZ3ZbMF0gaGFzIGJlZW4gY2hhbmdlZCBhbmQgUHl0aG9uIGlzCi0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAwMDEtcHl0aG9uMi11c2UtY2NfYmFzZW5hbWUtdG8tcmVwbGFjZS1DQy1mb3ItY2hlY2tpbmctYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS1weXRob24yLXVzZS1jY19iYXNlbmFtZS10by1yZXBsYWNlLUNDLWZvci1jaGVja2luZy1jLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZTRmODIwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDAwMS1weXRob24yLXVzZS1jY19iYXNlbmFtZS10by1yZXBsYWNlLUNDLWZvci1jaGVja2luZy1jLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTE0ICswLDAgQEAKLUZyb20gM2Y0OWJlODFlMzFjMTY0NjU0YWViMTBiNjVlYmFkZTk4MmNhMmVkOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBNb24sIDIyIE9jdCAyMDE4IDE1OjI0OjQ4ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHB5dGhvbjI6IHVzZSBjY19iYXNlbmFtZSB0byByZXBsYWNlIENDIGZvciBjaGVja2luZyBjb21waWxlcgotCi1XaGVuIHdvcmtpbmcgcGF0aCBjb250YWlucyAiY2xhbmciLyJnY2MiLyJpY2MiLCBpdCBtaWdodCBiZSBwYXJ0IG9mICRDQwotYmVjYXVzZSBvZiB0aGUgIi0tc3lzcm9vdCIgcGFyYW1ldGVyLiBUaGF0IGNvdWxkIGNhdXNlIGp1ZGdlbWVudCBlcnJvcgotYWJvdXQgY2xhbmcvZ2NjL2ljYyBjb21waWxlcnMuIGUuZy4KLVdoZW4gImljYyIgaXMgY29udGFpbmRlZCBpbiB3b3JraW5nIHBhdGgsIGJlbG93IGVycm9ycyBhcmUgcmVwb3J0ZWQgd2hlbgotY29tcGlsaW5nIHB5dGhvbjoKLXg4Nl82NC13cnMtbGludXgtZ2NjOiBlcnJvcjogc3RyaWN0OiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci14ODZfNjQtd3JzLWxpbnV4LWdjYzogZXJyb3I6IHVucmVjb2duaXplZCBjb21tYW5kIGxpbmUgb3B0aW9uICctZnAtbW9kZWwnCi0KLUhlcmUgdXNlIGNjX2Jhc2VuYW1lIHRvIHJlcGxhY2UgQ0MgZm9yIGNoZWNraW5nIGNvbXBpbGVyIHRvIGF2b2lkIHN1Y2gKLWtpbmQgb2YgaXNzdWUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+Ci0KLVBhdGNoIG9yaWduYWxseSBmcm9tIExpIFpob3UsIEkganVzdCByZXdvcmsgaXQgdG8gbmV3IHZlcnNpb24KLQotU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDE4ICsrKysrKysrKy0tLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA5IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGRiMWM5NDAuLmRmY2Q4OWEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTY4NCw3ICs2ODQsNyBAQCBBQ19NU0dfUkVTVUxUKCR3aXRoX2N4eF9tYWluKQotIHByZXNldF9jeHg9IiRDWFgiCi0gaWYgdGVzdCAteiAiJENYWCIKLSB0aGVuCi0tICAgICAgICBjYXNlICIkQ0MiIGluCi0rICAgICAgICBjYXNlICIkY2NfYmFzZW5hbWUiIGluCi0gICAgICAgICBnY2MpICAgIEFDX1BBVEhfVE9PTChDWFgsIFtnKytdLCBbZysrXSwgW25vdGZvdW5kXSkgOzsKLSAgICAgICAgIGNjKSAgICAgQUNfUEFUSF9UT09MKENYWCwgW2MrK10sIFtjKytdLCBbbm90Zm91bmRdKSA7OwotICAgICAgICAgZXNhYwotQEAgLTc1NywxNCArNzU3LDE0IEBAIHJtZGlyIENhc2VTZW5zaXRpdmVUZXN0RGlyCi0gCi0gY2FzZSAkTUFDSERFUCBpbgotIGJzZG9zKikKLS0gICAgY2FzZSAkQ0MgaW4KLSsgICAgY2FzZSAkY2NfYmFzZW5hbWUgaW4KLSAgICAgZ2NjKSBDQz0iJENDIC1EX0hBVkVfQlNESSI7OwotICAgICBlc2FjOzsKLSBlc2FjCi0gCi0gY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgotIGhwKnxIUCopCi0tICAgIGNhc2UgJENDIGluCi0rICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgIGNjfCovY2MpIENDPSIkQ0MgLUFlIjs7Ci0gICAgIGVzYWM7OwotIFN1bk9TKikKLUBAIC0xMDg0LDcgKzEwODQsNyBAQCB0aGVuCi0gICAgICAgICBmaQotIAotICAgICAgICAgIyBDbGFuZyBhbHNvIG5lZWRzIC1md3JhcHYKLS0gICAgICAgIGNhc2UgJENDIGluCi0rICAgICAgICBjYXNlICRjY19iYXNlbmFtZSBpbgotICAgICAgICAgICAgICpjbGFuZyopIFdSQVA9Ii1md3JhcHYiCi0gICAgICAgICAgICAgOzsKLSAgICAgICAgIGVzYWMKLUBAIC0xMzA0LDcgKzEzMDQsNyBAQCB5ZXMpCi0gZXNhYwotIAotICMgSUNDIG5lZWRzIC1mcC1tb2RlbCBzdHJpY3Qgb3IgZmxvYXRzIGJlaGF2ZSBiYWRseQotLWNhc2UgIiRDQyIgaW4KLStjYXNlICIkY2NfYmFzZW5hbWUiIGluCi0gKmljYyopCi0gICAgIEJBU0VDRkxBR1M9IiRCQVNFQ0ZMQUdTIC1mcC1tb2RlbCBzdHJpY3QiCi0gICAgIDs7Ci1AQCAtMTQ0Myw3ICsxNDQzLDcgQEAgZWxzZQotIGZpXSwKLSBbQUNfTVNHX1JFU1VMVChubyldKQotIGlmIHRlc3QgIiRQeV9MVE8iID0gJ3RydWUnIDsgdGhlbgotLSAgY2FzZSAkQ0MgaW4KLSsgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICpjbGFuZyopCi0gICAgICAgIyBBbnkgY2hhbmdlcyBtYWRlIGhlcmUgc2hvdWxkIGJlIHJlZmxlY3RlZCBpbiB0aGUgR0NDK0RhcndpbiBjYXNlIGJlbG93Ci0gICAgICAgTFRPRkxBR1M9Ii1mbHRvIgotQEAgLTE1MDgsNyArMTUwOCw3IEBAIHRoZW4KLSAgIGZpCi0gZmkKLSBMTFZNX1BST0ZfRVJSPW5vCi0tY2FzZSAkQ0MgaW4KLStjYXNlICRjY19iYXNlbmFtZSBpbgotICAgKmNsYW5nKikKLSAgICAgIyBBbnkgY2hhbmdlcyBtYWRlIGhlcmUgc2hvdWxkIGJlIHJlZmxlY3RlZCBpbiB0aGUgR0NDK0RhcndpbiBjYXNlIGJlbG93Ci0gICAgIFBHT19QUk9GX0dFTl9GTEFHPSItZnByb2ZpbGUtaW5zdHItZ2VuZXJhdGUiCi1AQCAtMjMyMiw3ICsyMzIyLDcgQEAgdGhlbgotIAkJdGhlbiBDQ1NIQVJFRD0iLWZQSUMiCi0gCQllbHNlIENDU0hBUkVEPSItS3BpYyAtYmVsZiIKLSAJCWZpOzsKLS0JSVJJWCovNiopICBjYXNlICRDQyBpbgotKwlJUklYKi82KikgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gCQkgICAqZ2NjKikgQ0NTSEFSRUQ9Ii1zaGFyZWQiOzsKLSAJCSAgICopIENDU0hBUkVEPSIiOzsKLSAJCSAgIGVzYWM7OwotQEAgLTIzNjYsNyArMjM2Niw3IEBAIHRoZW4KLSAJCXRoZW4KLSAJCQlMSU5LRk9SU0hBUkVEPSItV2wsLS1leHBvcnQtZHluYW1pYyIKLSAJCWZpOzsKLS0JU3VuT1MvNSopIGNhc2UgJENDIGluCi0rCVN1bk9TLzUqKSBjYXNlICRjY19iYXNlbmFtZSBpbgotIAkJICAqZ2NjKikKLSAJCSAgICBpZiAkQ0MgLVhsaW5rZXIgLS1oZWxwIDI+JjEgfCBncmVwIGV4cG9ydC1keW5hbWljID4vZGV2L251bGwKLSAJCSAgICB0aGVuCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDEtdXNlLXByb3Blci10b29scy1mb3ItY3Jvc3MtYnVpbGQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAxLXVzZS1wcm9wZXItdG9vbHMtZm9yLWNyb3NzLWJ1aWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNzk1YTc0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDEtdXNlLXByb3Blci10b29scy1mb3ItY3Jvc3MtYnVpbGQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDAgKzAsMCBAQAotV2UgbmVlZCB0byBlbnN1cmUgb3VyIGhvc3QgdG9vbHMgZ2V0IHJ1biBkdXJpbmcgYnVpbGQsIG5vdCB0aGUgZnJlc2hseQotYnVpbHQgY3Jvc3MtdG9vbHMgKHRoaXMgd2lsbCBub3Qgd29yayksIHNvIHdlIGludHJvZHVjZSBIT1NUUFlUSE9OIGFuZCBIT1NUUEdFTi4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogTWljaGFlbCAnTWlja2V5JyBMYXVlciA8bWlja2V5QHZhbmlsbGUtbWVkaWEuZGU+Ci1TaWduZWQtb2ZmLWJ5OiBQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4KLQotUmViYXNlZCBmb3IgcHl0aG9uLTIuNy45Ci1TaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4KLQotUmViYXNlZCBmb3IgcHl0aG9uLTIuNy4xNAotU2lnbmVkLW9mZi1ieTogRGVyZWsgU3RyYWthIDxkZXJla0Bhc3Rlcml1cy5pbz4KLQotSW5kZXg6IFB5dGhvbi0yLjcuMTMvTWFrZWZpbGUucHJlLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL01ha2VmaWxlLnByZS5pbgotKysrIFB5dGhvbi0yLjcuMTMvTWFrZWZpbGUucHJlLmluCi1AQCAtMjQ1LDYgKzI0NSw3IEBAIExJQkZGSV9JTkNMVURFRElSPQlATElCRkZJX0lOQ0xVREVESVJACi0gIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKLSAjIFBhcnNlcgotIFBHRU49CQlQYXJzZXIvcGdlbiQoRVhFKQotK0hPU1RQR0VOPQkkKFBHRU4pJChFWEUpCi0gCi0gUFNSQ1M9CQlcCi0gCQlQYXJzZXIvYWNjZWxlci5jIFwKLUBAIC01MTIsNyArNTEzLDcgQEAgJChCVUlMRFBZVEhPTik6CU1vZHVsZXMvcHl0aG9uLm8gJChMSUJSQQotIAkJCSQoQkxETElCUkFSWSkgJChMSUJTKSAkKE1PRExJQlMpICQoU1lTTElCUykgJChMRExBU1QpCi0gCi0gcGxhdGZvcm06ICQoQlVJTERQWVRIT04pIHB5YnVpbGRkaXIudHh0Ci0tCSQoUlVOU0hBUkVEKSAkKFBZVEhPTl9GT1JfQlVJTEQpIC1jICdpbXBvcnQgc3lzIDsgZnJvbSBzeXNjb25maWcgaW1wb3J0IGdldF9wbGF0Zm9ybSA7IHByaW50IGdldF9wbGF0Zm9ybSgpKyItIitzeXMudmVyc2lvblswOjNdJyA+cGxhdGZvcm0KLSsJJChSVU5TSEFSRUQpICQoUFlUSE9OX0ZPUl9CVUlMRCkgLWMgJ2ltcG9ydCBzeXMgOyBmcm9tIGRpc3R1dGlscy51dGlsIGltcG9ydCBnZXRfcGxhdGZvcm0gOyBwcmludCBnZXRfcGxhdGZvcm0oKSsiLSIrc3lzLnZlcnNpb25bMDozXScgPnBsYXRmb3JtCi0gCi0gIyBDcmVhdGUgYnVpbGQgZGlyZWN0b3J5IGFuZCBnZW5lcmF0ZSB0aGUgc3lzY29uZmlnIGJ1aWxkLXRpbWUgZGF0YSB0aGVyZS4KLSAjIHB5YnVpbGRkaXIudHh0IGNvbnRhaW5zIHRoZSBuYW1lIG9mIHRoZSBidWlsZCBkaXIgYW5kIGlzIHVzZWQgZm9yCi1AQCAtNjYzLDcgKzY2Myw3IEBACi0gCSMgUmVnZW5lcmF0ZSBJbmNsdWRlL2dyYW1pbml0LmggYW5kIFB5dGhvbi9ncmFtaW5pdC5jCi0gCSMgZnJvbSBHcmFtbWFyL0dyYW1tYXIgdXNpbmcgcGdlbgotIAlAJChNS0RJUl9QKSBJbmNsdWRlCi0tCSQoUEdFTikgJChzcmNkaXIpL0dyYW1tYXIvR3JhbW1hciBcCi0rCSQoSE9TVFBHRU4pICQoc3JjZGlyKS9HcmFtbWFyL0dyYW1tYXIgXAotIAkJJChzcmNkaXIpL0luY2x1ZGUvZ3JhbWluaXQuaCBcCi0gCQkkKHNyY2RpcikvUHl0aG9uL2dyYW1pbml0LmMKLSAKLUBAIC0xMTIxLDI3ICsxMTIyLDI3IEBAIGxpYmluc3RhbGw6CWJ1aWxkX2FsbCAkKHNyY2RpcikvTGliLyQoUEwKLSAJCQkkKERFU1RESVIpJChMSUJERVNUKS9kaXN0dXRpbHMvdGVzdHMgOyBcCi0gCWZpCi0gCVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgICQoUlVOU0hBUkVEKSBcCi0tCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAtdHQgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCi0rCQkkKEhPU1RQWVRIT04pIC1XaSAtdHQgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCi0gCQktZCAkKExJQkRFU1QpIC1mIFwKLSAJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAotIAkJJChERVNURElSKSQoTElCREVTVCkKLSAJUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAotLQkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgLXR0IC1PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAotKwkJJChIT1NUUFlUSE9OKSAtV2kgLXR0ICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAotIAkJLWQgJChMSUJERVNUKSAtZiBcCi0gCQkteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKLSAJCSQoREVTVERJUikkKExJQkRFU1QpCi0gCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICAkKFJVTlNIQVJFRCkgXAotLQkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgLXQgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCi0rCQkkKEhPU1RQWVRIT04pIC1XaSAtdHQgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCi0gCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAotIAkJLXggYmFkc3ludGF4ICQoREVTVERJUikkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMKLSAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLS0JCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC10IC1PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAotKwkJJChIT1NUUFlUSE9OKSAtV2kgLXR0ICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAotIAkJLWQgJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzIC1mIFwKLSAJCS14IGJhZHN5bnRheCAkKERFU1RESVIpJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzCi0gCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCi0tCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvR3JhbW1hci50eHQKLSsJCSQoSE9TVFBZVEhPTikgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9HcmFtbWFyLnR4dAotIAktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAotLQkJJChQWVRIT05fRk9SX0JVSUxEKSAtbSBsaWIydG8zLnBnZW4yLmRyaXZlciAkKERFU1RESVIpJChMSUJERVNUKS9saWIydG8zL1BhdHRlcm5HcmFtbWFyLnR4dAotKwkJJChIT1NUUFlUSE9OKSAtbSBsaWIydG8zLnBnZW4yLmRyaXZlciAkKERFU1RESVIpJChMSUJERVNUKS9saWIydG8zL1BhdHRlcm5HcmFtbWFyLnR4dAotIAotICMgQ3JlYXRlIHRoZSBQTEFURElSIHNvdXJjZSBkaXJlY3RvcnksIGlmIG9uZSB3YXNuJ3QgZGlzdHJpYnV0ZWQuLgotICQoc3JjZGlyKS9MaWIvJChQTEFURElSKToKLUluZGV4OiBQeXRob24tMi43LjEzL3NldHVwLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL3NldHVwLnB5Ci0rKysgUHl0aG9uLTIuNy4xMy9zZXR1cC5weQotQEAgLTM1MCw2ICszNTAsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICAgICAgc2VsZi5mYWlsZWQuYXBwZW5kKGV4dC5uYW1lKQotICAgICAgICAgICAgIHNlbGYuYW5ub3VuY2UoJyoqKiBXQVJOSU5HOiByZW5hbWluZyAiJXMiIHNpbmNlIGltcG9ydGluZyBpdCcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICcgZmFpbGVkOiAlcycgJSAoZXh0Lm5hbWUsIHdoeSksIGxldmVsPTMpCi0rICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgICAgICAgYXNzZXJ0IG5vdCBzZWxmLmlucGxhY2UKLSAgICAgICAgICAgICBiYXNlbmFtZSwgdGFpbCA9IG9zLnBhdGguc3BsaXRleHQoZXh0X2ZpbGVuYW1lKQotICAgICAgICAgICAgIG5ld25hbWUgPSBiYXNlbmFtZSArICJfZmFpbGVkIiArIHRhaWwKLUBAIC01NzQsNiArNTc1LDkgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotIAotICAgICAgICAgIyBYWFggT21pdHRlZCBtb2R1bGVzOiBnbCwgcHVyZSwgZGwsIFNHSS1zcGVjaWZpYyBtb2R1bGVzCi0gCi0rICAgICAgICBsaWJfZGlycyA9IFsgb3MuZ2V0ZW52KCJTVEFHSU5HX0xJQkRJUiIpLCAgb3MuZ2V0ZW52KCJTVEFHSU5HX0JBU0VMSUJESVIiKSBdCi0rICAgICAgICBpbmNfZGlycyA9IFsgb3MuZ2V0ZW52KCJTVEFHSU5HX0lOQ0RJUiIpIF0KLSsKLSAgICAgICAgICMKLSAgICAgICAgICMgVGhlIGZvbGxvd2luZyBtb2R1bGVzIGFyZSBhbGwgcHJldHR5IHN0cmFpZ2h0Zm9yd2FyZCwgYW5kIGNvbXBpbGUKLSAgICAgICAgICMgb24gcHJldHR5IG11Y2ggYW55IFBPU0lYaXNoIHBsYXRmb3JtLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjUwY2ViNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uLzAzLWZpeC10a2ludGVyLWRldGVjdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLVdlIG5lZWQgdG8gc3VwcGx5IFNUQUdJTkdfSU5DRElSIGhlcmUsIG90aGVyd2lzZSB0aGUgVGsgaGVhZGVycwotd2lsbCBub3QgYmUgZm91bmQuCi0KLVNpZ25lZC1vZmYtYnk6IE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1pY2tleUB2YW5pbGxlLmRlPgotU2lnbmVkLW9mZi1ieTogUGF1bCBFZ2dsZXRvbiA8cGF1bC5lZ2dsZXRvbkBsaW51eC5pbnRlbC5jb20+Ci0KLVJlYmFzZWQgZm9yIHB5dGhvbi0yLjcuOQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggOGZlMWZiOC4uNjdlZGE3NCAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTE4OTIsNyArMTg5Miw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgICAgICAgICAgZG90dmVyc2lvbiA9IGRvdHZlcnNpb25bOi0xXSArICcuJyArIGRvdHZlcnNpb25bLTFdCi0gICAgICAgICAgICAgdGNsX2luY2x1ZGVfc3ViID0gW10KLSAgICAgICAgICAgICB0a19pbmNsdWRlX3N1YiA9IFtdCi0tICAgICAgICAgICAgZm9yIGRpciBpbiBpbmNfZGlyczoKLSsgICAgICAgICAgICBmb3IgZGlyIGluIFtvcy5nZXRlbnYoIlNUQUdJTkdfSU5DRElSIildOgotICAgICAgICAgICAgICAgICB0Y2xfaW5jbHVkZV9zdWIgKz0gW2RpciArIG9zLnNlcCArICJ0Y2wiICsgZG90dmVyc2lvbl0KLSAgICAgICAgICAgICAgICAgdGtfaW5jbHVkZV9zdWIgKz0gW2RpciArIG9zLnNlcCArICJ0ayIgKyBkb3R2ZXJzaW9uXQotICAgICAgICAgICAgIHRrX2luY2x1ZGVfc3ViICs9IHRjbF9pbmNsdWRlX3N1YgotQEAgLTE5MTEsMjIgKzE5MTEsNiBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICAgICAgaWYgZGlyIG5vdCBpbiBpbmNsdWRlX2RpcnM6Ci0gICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycy5hcHBlbmQoZGlyKQotIAotLSAgICAgICAgIyBDaGVjayBmb3IgdmFyaW91cyBwbGF0Zm9ybS1zcGVjaWZpYyBkaXJlY3RvcmllcwotLSAgICAgICAgaWYgaG9zdF9wbGF0Zm9ybSA9PSAnc3Vub3M1JzoKLS0gICAgICAgICAgICBpbmNsdWRlX2RpcnMuYXBwZW5kKCcvdXNyL29wZW53aW4vaW5jbHVkZScpCi0tICAgICAgICAgICAgYWRkZWRfbGliX2RpcnMuYXBwZW5kKCcvdXNyL29wZW53aW4vbGliJykKLS0gICAgICAgIGVsaWYgb3MucGF0aC5leGlzdHMoJy91c3IvWDExUjYvaW5jbHVkZScpOgotLSAgICAgICAgICAgIGluY2x1ZGVfZGlycy5hcHBlbmQoJy91c3IvWDExUjYvaW5jbHVkZScpCi0tICAgICAgICAgICAgYWRkZWRfbGliX2RpcnMuYXBwZW5kKCcvdXNyL1gxMVI2L2xpYjY0JykKLS0gICAgICAgICAgICBhZGRlZF9saWJfZGlycy5hcHBlbmQoJy91c3IvWDExUjYvbGliJykKLS0gICAgICAgIGVsaWYgb3MucGF0aC5leGlzdHMoJy91c3IvWDExUjUvaW5jbHVkZScpOgotLSAgICAgICAgICAgIGluY2x1ZGVfZGlycy5hcHBlbmQoJy91c3IvWDExUjUvaW5jbHVkZScpCi0tICAgICAgICAgICAgYWRkZWRfbGliX2RpcnMuYXBwZW5kKCcvdXNyL1gxMVI1L2xpYicpCi0tICAgICAgICBlbHNlOgotLSAgICAgICAgICAgICMgQXNzdW1lIGRlZmF1bHQgbG9jYXRpb24gZm9yIFgxMQotLSAgICAgICAgICAgIGluY2x1ZGVfZGlycy5hcHBlbmQoJy91c3IvWDExL2luY2x1ZGUnKQotLSAgICAgICAgICAgIGFkZGVkX2xpYl9kaXJzLmFwcGVuZCgnL3Vzci9YMTEvbGliJykKLS0KLSAgICAgICAgICMgSWYgQ3lnd2luLCB0aGVuIHZlcmlmeSB0aGF0IFggaXMgaW5zdGFsbGVkIGJlZm9yZSBwcm9jZWVkaW5nCi0gICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdjeWd3aW4nOgotICAgICAgICAgICAgIHgxMV9pbmMgPSBmaW5kX2ZpbGUoJ1gxMS9YbGliLmgnLCBbXSwgaW5jbHVkZV9kaXJzKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wNS1lbmFibGUtY3R5cGVzLWNyb3NzLWJ1aWxkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wNS1lbmFibGUtY3R5cGVzLWNyb3NzLWJ1aWxkLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA1Y2M4NzQyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDUtZW5hYmxlLWN0eXBlcy1jcm9zcy1idWlsZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVJlYmFzZWQgZm9yIHB5dGhvbiAyLjcuOQotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi0jIENUeXBlcyBuZWVkIHRvIGtub3cgdGhlIGFjdHVhbCBob3N0IHdlIGFyZSBidWlsZGluZyBvbi4KLSMgU2lnbmVkLU9mZjogTWljaGFlbCBEaWV0cmljaCA8bWR0QGVtZGV0ZS5kZT4KLQotSW5kZXg6IFB5dGhvbi0yLjcuOS9zZXR1cC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuOS5vcmlnL3NldHVwLnB5Ci0rKysgUHl0aG9uLTIuNy45L3NldHVwLnB5Ci1AQCAtMjAyOCwxMiArMjAyOCwxMiBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gCi0gICAgICAgICAgICAgICAgICMgUGFzcyBlbXB0eSBDRkxBR1MgYmVjYXVzZSB3ZSdsbCBqdXN0IGFwcGVuZCB0aGUgcmVzdWx0aW5nCi0gICAgICAgICAgICAgICAgICMgQ0ZMQUdTIHRvIFB5dGhvbidzOyAtZyBvciAtTzIgaXMgdG8gYmUgYXZvaWRlZC4KLS0gICAgICAgICAgICAgICAgY21kID0gImNkICVzICYmIGVudiBDRkxBR1M9JycgJyVzL2NvbmZpZ3VyZScgJXMiIFwKLS0gICAgICAgICAgICAgICAgICAgICAgJSAoZmZpX2J1aWxkZGlyLCBmZmlfc3JjZGlyLCAiICIuam9pbihjb25maWdfYXJncykpCi0rICAgICAgICAgICAgICAgIGNtZCA9ICIoY2QgJXMgJiYgYXV0b2NvbmYgLVcgY3Jvc3MpICYmIChjZCAlcyAmJiBlbnYgQ0ZMQUdTPScnICclcy9jb25maWd1cmUnICVzKSIgXAotKyAgICAgICAgICAgICAgICAgICAgJSAoZmZpX3NyY2RpciwgZmZpX2J1aWxkZGlyLCBmZmlfc3JjZGlyLCAiICIuam9pbihjb25maWdfYXJncykpCi0gCi0gICAgICAgICAgICAgICAgIHJlcyA9IG9zLnN5c3RlbShjbWQpCi0gICAgICAgICAgICAgICAgIGlmIHJlcyBvciBub3Qgb3MucGF0aC5leGlzdHMoZmZpX2NvbmZpZ2ZpbGUpOgotLSAgICAgICAgICAgICAgICAgICAgcHJpbnQgIkZhaWxlZCB0byBjb25maWd1cmUgX2N0eXBlcyBtb2R1bGUiCi0rICAgICAgICAgICAgICAgICAgICBwcmludCAiRmFpbGVkIHRvIGNvbmZpZ3VyZSBfY3R5cGVzIG1vZHVsZSAocmVzPSVkKSBvciBtaXNzaW5nIGNvbmZmaWxlPSVzIiAlICggcmVzLCBmZmlfY29uZmlnZmlsZSApCi0gICAgICAgICAgICAgICAgICAgICByZXR1cm4gRmFsc2UKLSAKLSAgICAgICAgICAgICBmZmljb25maWcgPSB7fQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wNi1hdm9pZF91c3JfbGliX3Rlcm1jYXBfcGF0aF9pbl9saW5raW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi8wNi1hdm9pZF91c3JfbGliX3Rlcm1jYXBfcGF0aF9pbl9saW5raW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0MzViMzE5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vMDYtYXZvaWRfdXNyX2xpYl90ZXJtY2FwX3BhdGhfaW5fbGlua2luZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1UaGUgcG9pc29uIGRpcmVjdG9yaWVzIHBhdGNoIGhhcyBkZXRlY3RlZCBsaWJyYXJ5IHBhdGggaXNzdWUgd2hpbGUgCi1jb21waWxpbmcgdGhlIHB5dGhvbiBpbiBjcm9zcyBlbnZpcm9ubWVudCwgYXMgc2VlbiBiZWxsb3cuCi0KLXdhcm5pbmc6IGxpYnJhcnkgc2VhcmNoIHBhdGggIi91c3IvbGliL3Rlcm1jYXAiIGlzIHVuc2FmZSBmb3IgY3Jvc3MtY29tcGlsYXRpb24KLQotVGhpcyBQYXRjaCBmaXhlcyB0aGlzIGlzc3VlIGluIHRoZSBweXRob24gYnVpbGQgZW52aXJvbm1lbnQuCi0xMSBPY3QgMjAxMAotTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLQotMjAxMS8wOS8yOQotUmViYXNlZCBmb3IgcHl0aG9uIDIuNy4yCi1TaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotCi1TaWduZWQtb2ZmLWJ5OiBQYXVsIEVnZ2xldG9uIDxwYXVsLmVnZ2xldG9uQGxpbnV4LmludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IDY3ZWRhNzQuLjU5YzUzN2UgMTAwNjQ0Ci0tLS0gYS9zZXR1cC5weQotKysrIGIvc2V0dXAucHkKLUBAIC03NjEsMTIgKzc2MSwxMCBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICAgICAgICAgIHBhc3MgIyBJc3N1ZSA3Mzg0OiBBbHJlYWR5IGxpbmtlZCBhZ2FpbnN0IGN1cnNlcyBvciB0aW5mby4KLSAgICAgICAgICAgICBlbGlmIGN1cnNlc19saWJyYXJ5OgotICAgICAgICAgICAgICAgICByZWFkbGluZV9saWJzLmFwcGVuZChjdXJzZXNfbGlicmFyeSkKLS0gICAgICAgICAgICBlbGlmIHNlbGYuY29tcGlsZXIuZmluZF9saWJyYXJ5X2ZpbGUobGliX2RpcnMgKwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgWycvdXNyL2xpYi90ZXJtY2FwJ10sCi0rICAgICAgICAgICAgZWxpZiBzZWxmLmNvbXBpbGVyLmZpbmRfbGlicmFyeV9maWxlKGxpYl9kaXJzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlcm1jYXAnKToKLSAgICAgICAgICAgICAgICAgcmVhZGxpbmVfbGlicy5hcHBlbmQoJ3Rlcm1jYXAnKQotICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3JlYWRsaW5lJywgWydyZWFkbGluZS5jJ10sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5X2RpcnM9WycvdXNyL2xpYi90ZXJtY2FwJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9saW5rX2FyZ3M9cmVhZGxpbmVfZXh0cmFfbGlua19hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPXJlYWRsaW5lX2xpYnMpICkKLSAgICAgICAgIGVsc2U6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2FkZC1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2FkZC1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMyOTczNDAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hZGQtQ1JPU1NQWVRIT05QQVRILWZvci1QWVRIT05fRk9SX0JVSUxELnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotY29uZmlndXJlLmFjOiBhZGQgQ1JPU1NQWVRIT05QQVRIIGludG8gUFlUSE9OUEFUSCBmb3IgUFlUSE9OX0ZPUl9CVUlMRAotCi1XaGVuIGJ1aWxkaW5nIHg4Ni0+eDg2IHRoZSBzeXN0ZW0gd2lsbCB0cnkgdG8gZXhlY3V0ZSAuc28gYW5kIHJlbGF0ZWQgaXRlbXMKLWZyb20gdGhlIGRlZmF1bHQgUFlUSE9OUEFUSC4gIFRoaXMgd2lsbCBmYWlsIGlmIHRoZSB0YXJnZXQgQ1BVIGNvbnRhaW5zCi1pbnN0cnVjdGlvbnMgdGhhdCB0aGUgaG9zdCBDUFUgZG9lcyBub3QgaGF2ZSwgYWRkIENST1NTUFlUSE9OUEFUSAotaW50byBQWVRIT05QQVRIIHNvIHdlIGNhbiBwcmVwZW5kIHRoZSBsaXN0IHRvIGZpbmQgY29ycmVjdCBsaWJzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FLUNvcmUgaW50ZWdyYXRpb24gc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEphY2tpZSBIdWFuZyA8amFja2llLmh1YW5nQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLUluZGV4OiBQeXRob24tMi43LjE0L2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9jb25maWd1cmUuYWMKLSsrKyBQeXRob24tMi43LjE0L2NvbmZpZ3VyZS5hYwotQEAgLTM2LDcgKzM2LDcgQEAgaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSB5ZXM7IHRoZW4KLSAJICAgIEFDX01TR19FUlJPUihbcHl0aG9uJFBBQ0tBR0VfVkVSU0lPTiBpbnRlcnByZXRlciBub3QgZm91bmRdKQotIAlmaQotICAgICAgICAgQUNfTVNHX1JFU1VMVCgkaW50ZXJwKQotLQlQWVRIT05fRk9SX0JVSUxEPSdfUFlUSE9OX1BST0pFQ1RfQkFTRT0kKGFic19idWlsZGRpcikgX1BZVEhPTl9IT1NUX1BMQVRGT1JNPSQoX1BZVEhPTl9IT1NUX1BMQVRGT1JNKSBQWVRIT05QQVRIPSQoc2hlbGwgdGVzdCAtZiBweWJ1aWxkZGlyLnR4dCAmJiBlY2hvICQoYWJzX2J1aWxkZGlyKS9gY2F0IHB5YnVpbGRkaXIudHh0YDopJChzcmNkaXIpL0xpYjokKHNyY2RpcikvTGliLyQoUExBVERJUikgJyRpbnRlcnAKLSsJUFlUSE9OX0ZPUl9CVUlMRD0nX1BZVEhPTl9QUk9KRUNUX0JBU0U9JChhYnNfYnVpbGRkaXIpIF9QWVRIT05fSE9TVF9QTEFURk9STT0kKF9QWVRIT05fSE9TVF9QTEFURk9STSkgUFlUSE9OUEFUSD0kKENST1NTUFlUSE9OUEFUSCk6JChzaGVsbCB0ZXN0IC1mIHB5YnVpbGRkaXIudHh0ICYmIGVjaG8gJChhYnNfYnVpbGRkaXIpL2BjYXQgcHlidWlsZGRpci50eHRgOikkKHNyY2RpcikvTGliOiQoc3JjZGlyKS9MaWIvcGxhdC0kKE1BQ0hERVApICckaW50ZXJwCi0gICAgIGZpCi0gZWxpZiB0ZXN0ICIkY3Jvc3NfY29tcGlsaW5nIiA9IG1heWJlOyB0aGVuCi0gICAgIEFDX01TR19FUlJPUihbQ3Jvc3MgY29tcGlsaW5nIHJlcXVpcmVkIC0taG9zdD1IT1NULVRVUExFIGFuZCAtLWJ1aWxkPUFSQ0hdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hZGQtbWQ1bW9kdWxlLXN1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2FkZC1tZDVtb2R1bGUtc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzNmZWE3Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2FkZC1tZDVtb2R1bGUtc3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotCi1TaWduZWQtb2ZmLWJ5OiBTYXVsIFdvbGQgPHNnd0BsaW51eC5pbnRlbC5jb20+Ci0KLUluZGV4OiBQeXRob24tMi43LjIvTW9kdWxlcy9TZXR1cC5kaXN0Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4yLm9yaWcvTW9kdWxlcy9TZXR1cC5kaXN0CTIwMTEtMDYtMTEgMDg6NDY6MjYuMDAwMDAwMDAwIC0wNzAwCi0rKysgUHl0aG9uLTIuNy4yL01vZHVsZXMvU2V0dXAuZGlzdAkyMDExLTEyLTI3IDE1OjUxOjQxLjI0NDYyMzIxOSAtMDgwMAotQEAgLTI0OCw3ICsyNDgsNyBAQAotICMgTWVzc2FnZS1EaWdlc3QgQWxnb3JpdGhtLCBkZXNjcmliZWQgaW4gUkZDIDEzMjEuICBUaGUgbmVjZXNzYXJ5IGZpbGVzCi0gIyBtZDUuYyBhbmQgbWQ1LmggYXJlIGluY2x1ZGVkIGhlcmUuCi0gCi0tI19tZDUgbWQ1bW9kdWxlLmMgbWQ1LmMKLStfbWQ1IG1kNW1vZHVsZS5jIG1kNS5jCi0gCi0gCi0gIyBUaGUgX3NoYSBtb2R1bGUgaW1wbGVtZW50cyB0aGUgU0hBIGNoZWNrc3VtIGFsZ29yaXRobXMuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODcwOTVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjkgKzAsMCBAQAotX3RraW50ZXIgbW9kdWxlIG5lZWRzIHRrIG1vZHVsZSBhbG9uZyB3aXRoIHRjbC4gdGsgaXMgbm90IHlldCBpbnRlZ3JhdGVkCi1pbiB5b2N0byBzbyB3ZSBza2lwIHRoZSBjaGVjayBmb3IgdGhpcyBtb2R1bGUuCi1Bdm9pZCBhIHdhcm5pbmcgYnkgbm90IGFkZGluZyB0aGlzIG1vZHVsZSB0byBtaXNzaW5nIHZhcmlhYmxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc3RyaWJ1dGlvbl0KLQotQWxzbyBzaW1wbHkgZGlzYWJsZSB0aGUgdGsgbW9kdWxlIHNpbmNlIGl0cyBub3QgaW4gREVQRU5EUy4KLVNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KLQotSW5kZXg6IFB5dGhvbi0yLjcuMTMvc2V0dXAucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjEzLm9yaWcvc2V0dXAucHkKLSsrKyBQeXRob24tMi43LjEzL3NldHVwLnB5Ci1AQCAtMTc4MywxMCArMTc4MywxMiBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICBzZWxmLmV4dGVuc2lvbnMuZXh0ZW5kKGV4dHMpCi0gCi0gICAgICAgICAjIENhbGwgdGhlIG1ldGhvZCBmb3IgZGV0ZWN0aW5nIHdoZXRoZXIgX3RraW50ZXIgY2FuIGJlIGNvbXBpbGVkCi0tICAgICAgICBzZWxmLmRldGVjdF90a2ludGVyKGluY19kaXJzLCBsaWJfZGlycykKLSsgICAgICAgICMgc2VsZi5kZXRlY3RfdGtpbnRlcihpbmNfZGlycywgbGliX2RpcnMpCi0gCi0tICAgICAgICBpZiAnX3RraW50ZXInIG5vdCBpbiBbZS5uYW1lIGZvciBlIGluIHNlbGYuZXh0ZW5zaW9uc106Ci0tICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ190a2ludGVyJykKLSsgICAgICAgICMgdGtpbnRlciBtb2R1bGUgd2lsbCBub3QgYmUgYXZhbGFpYmxlIGFzIHlvY3RvCi0rICAgICAgICAjIGRvZXNuJ3QgaGF2ZSB0ayBpbnRlZ3JhdGVkICh5ZXQpCi0rICAgICAgICAjaWYgJ190a2ludGVyJyBub3QgaW4gW2UubmFtZSBmb3IgZSBpbiBzZWxmLmV4dGVuc2lvbnNdOgotKyAgICAgICAgIyAgICBtaXNzaW5nLmFwcGVuZCgnX3RraW50ZXInKQotIAotICMjICAgICAgICAgIyBVbmNvbW1lbnQgdGhlc2UgbGluZXMgaWYgeW91IHdhbnQgdG8gcGxheSB3aXRoIHh4bW9kdWxlLmMKLSAjIyAgICAgICAgIGV4dCA9IEV4dGVuc2lvbigneHgnLCBbJ3h4bW9kdWxlLmMnXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vYXZvaWRfd2FybmluZ19mb3Jfc3Vub3Nfc3BlY2lmaWNfbW9kdWxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hdm9pZF93YXJuaW5nX2Zvcl9zdW5vc19zcGVjaWZpY19tb2R1bGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhiYTU4MjMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9hdm9pZF93YXJuaW5nX2Zvcl9zdW5vc19zcGVjaWZpY19tb2R1bGUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1zdW5hdWRpb2RldiBtb2R1bGUgaXMgc3Vub3Mgc3BlY2lmaWMgc28gd2UgYXZvaWQgYSB3YXJuaW5nIGJ5IG5vdCAKLWFkZGluZyB0aGlzIG1vZHVsZSB0byBtaXNzaW5nIHZhcmlhYmxlLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Rpc3RyaWJ1dGlvbl0KLQotU2lnbmVkLW9mZi1ieTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgotCi1JbmRleDogUHl0aG9uLTIuNy4xMy9zZXR1cC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTMub3JpZy9zZXR1cC5weQotKysrIFB5dGhvbi0yLjcuMTMvc2V0dXAucHkKLUBAIC0xNjcxLDggKzE2NzEsOSBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdzdW5vczUnOgotICAgICAgICAgICAgICMgU3VuT1Mgc3BlY2lmaWMgbW9kdWxlcwotICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3N1bmF1ZGlvZGV2JywgWydzdW5hdWRpb2Rldi5jJ10pICkKLS0gICAgICAgIGVsc2U6Ci0tICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ3N1bmF1ZGlvZGV2JykKLSsgICAgICAgICMgSWYgcGxhdGZvcm0gaXMgbm90IHN1bm9zIHdhcm5pbmcgaXMgdXNlbGVzcwotKyAgICAgICAgI2Vsc2U6Ci0rICAgICAgICAjICAgIG1pc3NpbmcuYXBwZW5kKCdzdW5hdWRpb2RldicpCi0gCi0gICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgotICAgICAgICAgICAgICMgX3NjcHJveHkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vY2dpX3B5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9jZ2lfcHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRlNTA0ZjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9jZ2lfcHkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMyArMCwwIEBACi1MaWIvY2dpLnB5OiBVcGRhdGUgdGhlIHNjcmlwdCBhcyBtZW50aW9uZWQgaW4gdGhlIGNvbW1lbnQKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXN0cmlidXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IE1hcmsgSGF0bGUgPG1hcmsuaGF0bGVAd2luZHJpdmVyLmNvbT4KLQotLS0tIFB5dGhvbi0yLjYuNi9MaWIvY2dpLnB5Lm9yaWcJMjAxMC0wOC0wMSAyMjoxNDoyNy4wMDAwMDAwMDAgLTA1MDAKLSsrKyBQeXRob24tMi42LjYvTGliL2NnaS5weQkyMDExLTA5LTIxIDE1OjI4OjQwLjQ3ODIwODYzMSAtMDUwMAotQEAgLTEsMTMgKzEsNCBAQAotLSMhIC91c3IvbG9jYWwvYmluL3B5dGhvbgotLQotLSMgTk9URTogdGhlIGFib3ZlICIvdXNyL2xvY2FsL2Jpbi9weXRob24iIGlzIE5PVCBhIG1pc3Rha2UuICBJdCBpcwotLSMgaW50ZW50aW9uYWxseSBOT1QgIi91c3IvYmluL2VudiBweXRob24iLiAgT24gbWFueSBzeXN0ZW1zCi0tIyAoZS5nLiBTb2xhcmlzKSwgL3Vzci9sb2NhbC9iaW4gaXMgbm90IGluICRQQVRIIGFzIHBhc3NlZCB0byBDR0kKLS0jIHNjcmlwdHMsIGFuZCAvdXNyL2xvY2FsL2JpbiBpcyB0aGUgZGVmYXVsdCBkaXJlY3Rvcnkgd2hlcmUgUHl0aG9uIGlzCi0tIyBpbnN0YWxsZWQsIHNvIC91c3IvYmluL2VudiB3b3VsZCBiZSB1bmFibGUgdG8gZmluZCBweXRob24uICBHcmFudGVkLAotLSMgYmluYXJ5IGluc3RhbGxhdGlvbnMgYnkgTGludXggdmVuZG9ycyBvZnRlbiBpbnN0YWxsIFB5dGhvbiBpbgotLSMgL3Vzci9iaW4uICBTbyBsZXQgdGhvc2UgdmVuZG9ycyBwYXRjaCBjZ2kucHkgdG8gbWF0Y2ggdGhlaXIgY2hvaWNlCi0tIyBvZiBpbnN0YWxsYXRpb24uCi0rIyEgL3Vzci9iaW4vZW52IHB5dGhvbgotIAotICIiIlN1cHBvcnQgbW9kdWxlIGZvciBDR0kgKENvbW1vbiBHYXRld2F5IEludGVyZmFjZSkgc2NyaXB0cy4KLSAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vY2hlY2staWYtdGFyZ2V0LWlzLTY0Yi1ub3QtaG9zdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vY2hlY2staWYtdGFyZ2V0LWlzLTY0Yi1ub3QtaG9zdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTZkNmM2NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2NoZWNrLWlmLXRhcmdldC1pcy02NGItbm90LWhvc3QucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1BdXRob3I6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KLURhdGU6ICAgU3VuIE1hciAyNSAwMjowMjoyNyAyMDEyICswMjAwCi0KLVRoaXMgcGF0Y2ggd2FzIGFkZGVkIGZvciA2NGJpdCBob3N0IG1hY2hpbmVzLiBJbiB0aGUgY29tcGlsZSBwcm9jZXNzIHB5dGhvbgotaXMgY2hlY2tpbmcgaWYgcGxhdGZvcm0gaXMgYSA2NGJpdCBwbGF0Zm9ybSB1c2luZyBzeXMubWF4aW50IHdoaWNoIGlzIHRoZSBob3N0J3MKLXZhbHVlLiBUaGUgcGF0Y2ggZml4ZXMgdGhpcyBpc3N1ZSBzbyB0aGF0IHB5dGhvbiB3b3VsZCBjaGVjayBpZiBUQVJHRVQgbWFjaGluZQotaXMgNjRiaXQgbm90IHRoZSBIT1NUIG1hY2hpbmUuIEluIHRoaXMgd2F5IHdpbGwgaGF2ZSAiZGwiIGFuZCAiaW1hZ2VvcCIgbW9kdWxlcwotYnVpbHQgaWYgSE9TVCBtYWNoaW5lIGlzIDY0Yml0IGJ1dCB0aGUgdGFyZ2V0IG1hY2hpbmUgaXMgMzJiaXQuCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiBQeXRob24tMi43LjExL3NldHVwLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMS5vcmlnL3NldHVwLnB5Ci0rKysgUHl0aG9uLTIuNy4xMS9zZXR1cC5weQotQEAgLTM1LDYgKzM1LDIxIEBAIENPTVBJTEVEX1dJVEhfUFlERUJVRyA9ICgnLS13aXRoLXB5ZGVidWcKLSAjIFRoaXMgZ2xvYmFsIHZhcmlhYmxlIGlzIHVzZWQgdG8gaG9sZCB0aGUgbGlzdCBvZiBtb2R1bGVzIHRvIGJlIGRpc2FibGVkLgotIGRpc2FibGVkX21vZHVsZV9saXN0ID0gW10KLSAKLStkZWYgdGFyZ2V0X2lzXzY0Yml0X3BsYXRmb3JtICgpOgotKyAgICAiIiIKLSsgICAgSW4gY2FzZSBvZiBjcm9zcy1jb21waWxlLCBzb21lIG1vZHVsZXMgYXJlIG5vdCBidWlsZCBhcyBzZXR1cCBjaGVja3MgaWYgSE9TVAotKyAgICBpcyA2NGJpdCBhbmQgbm90IFRBUkdFVC4KLSsgICAgQXMgcHl0aG9uIHdhcyBidWlsdCBmb3IgVEFSR0VUIHdlIGNhbiBjaGVjayB0aGlzIGluIHB5Y29uZmlnLmggaW4gdGhpcyB3YXk6Ci0rCVNpemVvZiBMT05HIG9uIGEgMzIgYml0IHBsYXRmb3JtIGlzIDQgYnl0ZXMKLSsJU2l6ZW9mIExPTkcgb24gYSA2NCBiaXQgcGxhdGZvcm0gaXMgOCBieXRlcwotKyAgICAiIiIKLSsgICAgcHljb25mID0gb3BlbigicHljb25maWcuaCIpLnJlYWQoKQotKyAgICBhdXggPSByZS5zZWFyY2gociIjcypkZWZpbmVccytTSVpFT0ZfTE9OR1xzKzhccyoiLCBweWNvbmYpCi0rICAgIGlmIGF1eCBpcyBub3QgTm9uZToKLSsJcmV0dXJuIFRydWUKLSsgICAgZWxzZToKLSsJcmV0dXJuIEZhbHNlCi0rCi0gZGVmIGFkZF9kaXJfdG9fbGlzdChkaXJsaXN0LCBkaXIpOgotICAgICAiIiJBZGQgdGhlIGRpcmVjdG9yeSAnZGlyJyB0byB0aGUgbGlzdCAnZGlybGlzdCcgKGF0IHRoZSBmcm9udCkgaWYKLSAgICAgMSkgJ2RpcicgaXMgbm90IGFscmVhZHkgaW4gJ2Rpcmxpc3QnCi1AQCAtNzE2LDcgKzczMSw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ2F1ZGlvb3AnLCBbJ2F1ZGlvb3AuYyddKSApCi0gCi0gICAgICAgICAjIERpc2FibGVkIG9uIDY0LWJpdCBwbGF0Zm9ybXMKLS0gICAgICAgIGlmIHN5cy5tYXhzaXplICE9IDkyMjMzNzIwMzY4NTQ3NzU4MDdMOgotKyAgICAgICAgaWYgbm90IHRhcmdldF9pc182NGJpdF9wbGF0Zm9ybSgpOgotICAgICAgICAgICAgICMgT3BlcmF0aW9ucyBvbiBpbWFnZXMKLSAgICAgICAgICAgICBleHRzLmFwcGVuZCggRXh0ZW5zaW9uKCdpbWFnZW9wJywgWydpbWFnZW9wLmMnXSkgKQotICAgICAgICAgZWxzZToKLUBAIC0xNTQ1LDcgKzE1NjAsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfY29kZWNzXyVzJyAlIGxvYykKLSAKLSAgICAgICAgICMgRHluYW1pYyBsb2FkaW5nIG1vZHVsZQotLSAgICAgICAgaWYgc3lzLm1heGludCA9PSAweDdmZmZmZmZmOgotKyAgICAgICAgaWYgbm90IHRhcmdldF9pc182NGJpdF9wbGF0Zm9ybSgpOgotICAgICAgICAgICAgICMgVGhpcyByZXF1aXJlcyBzaXplb2YoaW50KSA9PSBzaXplb2YobG9uZykgPT0gc2l6ZW9mKGNoYXIqKQotICAgICAgICAgICAgIGRsX2luYyA9IGZpbmRfZmlsZSgnZGxmY24uaCcsIFtdLCBpbmNfZGlycykKLSAgICAgICAgICAgICBpZiAoZGxfaW5jIGlzIG5vdCBOb25lKSBhbmQgKGhvc3RfcGxhdGZvcm0gbm90IGluIFsnYXRoZW9zJ10pOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9jcmVhdGVfbWFuaWZlc3QyLnB5IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9jcmVhdGVfbWFuaWZlc3QyLnB5CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNDY1OTUxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vY3JlYXRlX21hbmlmZXN0Mi5weQorKysgL2Rldi9udWxsCkBAIC0xLDI5OCArMCwwIEBACi0jIFRoaXMgc2NyaXB0IGlzIHVzZWQgYXMgYSBiaXRiYWtlIHRhc2sgdG8gY3JlYXRlIGEgbmV3IHB5dGhvbiBtYW5pZmVzdAotIyAkIGJpdGJha2UgcHl0aG9uIC1jIGNyZWF0ZV9tYW5pZmVzdAotIwotIyBPdXIgZ29hbCBpcyB0byBrZWVwIHB5dGhvbi1jb3JlIGFzIHNtYWxsIGFzIHBvc2libGUgYW5kIGFkZCBvdGhlciBweXRob24KLSMgcGFja2FnZXMgb25seSB3aGVuIHRoZSB1c2VyIG5lZWRzIHRoZW0sIGhlbmNlIHdoeSB3ZSBzcGxpdCB1cHN0cmVhbSBweXRob24KLSMgaW50byBzZXZlcmFsIHBhY2thZ2VzLgotIwotIyBJbiBhIHZlcnkgc2ltcGxpc3RpYyB3YXkgd2hhdCB0aGlzIGRvZXMgaXM6IAotIyBMYXVuY2ggcHl0aG9uIGFuZCBzZWUgc3BlY2lmaWNhbGx5IHdoYXQgaXMgcmVxdWlyZWQgZm9yIGl0IHRvIHJ1biBhdCBhIG1pbmltdW0KLSMKLSMgR28gdGhyb3VnaCB0aGUgcHl0aG9uLW1hbmlmZXN0IGZpbGUgYW5kIGxhdW5jaCBhIHNlcGFyYXRlIHRhc2sgZm9yIGV2ZXJ5IHNpbmdsZQotIyBvbmUgb2YgdGhlIGZpbGVzIG9uIGVhY2ggcGFja2FnZSwgdGhpcyB0YXNrIHdpbGwgY2hlY2sgd2hhdCB3YXMgcmVxdWlyZWQgZm9yIHRoYXQKLSMgc3BlY2lmaWMgbW9kdWxlIHRvIHJ1biwgdGhlc2UgbW9kdWxlcyB3aWxsIGJlIGNhbGxlZCBkZXBlbmRlbmNpZXMuCi0jIFRoZSBvdXRwdXQgb2Ygc3VjaCB0YXNrIHdpbGwgYmUgYSBsaXN0IG9mIHRoZSBtb2R1bGVzIG9yIGRlcGVuZGVuY2llcyB0aGF0IHdlcmUKLSMgZm91bmQgZm9yIHRoYXQgZmlsZS4KLSMKLSMgU3VjaCBvdXRwdXQgd2lsbCBiZSBwYXJzZWQgYnkgdGhpcyBzY3JpcHQsIHdlIHdpbGwgbG9vayBmb3IgZWFjaCBkZXBlbmRlbmN5IG9uIHRoZQotIyBtYW5pZmVzdCBhbmQgaWYgd2UgZmluZCB0aGF0IGFub3RoZXIgcGFja2FnZSBhbHJlYWR5IGluY2x1ZGVzIGl0LCB0aGVuIHdlIHdpbGwgYWRkCi0jIHRoYXQgcGFja2FnZSBhcyBhbiBSREVQRU5EUyB0byB0aGUgcGFja2FnZSB3ZSBhcmUgY3VycmVudGx5IGNoZWNraW5nOyBpbiBjYXNlIHdlIGRvbnQKLSMgZmluZCB0aGUgY3VycmVudCBkZXBlbmRlbmN5IG9uIGFueSBvdGhlciBwYWNrYWdlIHdlIHdpbGwgYWRkIGl0IHRvIHRoZSBjdXJyZW50IHBhY2thZ2UKLSMgYXMgcGFydCBvZiBGSUxFUy4KLSMKLSMKLSMgVGhpcyB3YXkgd2Ugd2lsbCBjcmVhdGUgYSBuZXcgbWFuaWZlc3QgZnJvbSB0aGUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCB3YXMgYnVpbHQgZHVyaW5nCi0jIHRoaXMgcHJvY2Vzcywgb24gdGhpcyBuZXcgbWFuaWZlc3QgZWFjaCBwYWNrYWdlIHdpbGwgY29udGFpbiBzcGVjaWZpY2FsbHkgb25seQotIyB3aGF0IGl0IG5lZWRzIHRvIHJ1bi4KLSMKLSMgVGhlcmUgYXJlIHNvbWUgY2F2ZWF0cyB3aGljaCB3ZSB0cnkgdG8gZGVhbCB3aXRoLCBzdWNoIGFzIHJlcGVhdGVkIGZpbGVzIG9uIGRpZmZlcmVudAotIyBwYWNrYWdlcywgcGFja2FnZXMgdGhhdCBpbmNsdWRlIGZvbGRlcnMsIHdpbGRjYXJkcywgYW5kIHNwZWNpYWwgcGFja2FnZXMuCi0jIEl0cyBhbHNvIGltcG9ydGFudCB0byBub3RlIHRoYXQgdGhpcyBtZXRob2Qgb25seSB3b3JrcyBmb3IgcHl0aG9uIGZpbGVzLCBhbmQgc2hhcmVkCi0jIGxpYnJhcmllcy4gU3RhdGljIGxpYnJhcmllcywgaGVhZGVyIGZpbGVzIGFuZCBiaW5hcmllcyBuZWVkIHRvIGJlIGRlYWx0IHdpdGggbWFudWFsbHkuCi0jCi0jIEF1dGhvcjogQWxlamFuZHJvIEVuZWRpbm8gSGVybmFuZGV6IFNhbWFuaWVnbyAiYWVoczI5IiA8YWVoczI5IGF0IGdtYWlsIGRvdCBjb20+Ci0KLQotaW1wb3J0IHN5cwotaW1wb3J0IHN1YnByb2Nlc3MKLWltcG9ydCBqc29uCi1pbXBvcnQgb3MKLWltcG9ydCBjb2xsZWN0aW9ucwotCi0jIEhhY2sgdG8gZ2V0IG5hdGl2ZSBweXRob24gc2VhcmNoIHBhdGggKGZvciBmb2xkZXJzKSwgbm90IGZvbmQgb2YgaXQgYnV0IGl0IHdvcmtzIGZvciBub3cKLXBpdm90PSdyZWNpcGUtc3lzcm9vdC1uYXRpdmUnCi1mb3IgcCBpbiBzeXMucGF0aDoKLSAgaWYgcGl2b3QgaW4gcDoKLSAgICBuYXRpdmVsaWJmb2xkZXI9cFs6cC5maW5kKHBpdm90KStsZW4ocGl2b3QpXQotCi0jIEVtcHR5IGRpY3QgdG8gaG9sZCB0aGUgd2hvbGUgbWFuaWZlc3QKLW5ld19tYW5pZmVzdCA9IGNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KCkKLQotIyBDaGVjayBmb3IgcmVwZWF0ZWQgZmlsZXMsIGZvbGRlcnMgYW5kIHdpbGRjYXJkcwotYWxsZmlsZXM9W10KLXJlcGVhdGVkPVtdCi13aWxkY2FyZHM9W10KLQotaGFzZm9sZGVycz1bXQotYWxsZm9sZGVycz1bXQotCi1kZWYgaXNGb2xkZXIodmFsdWUpOgotICBpZiBvcy5wYXRoLmlzZGlyKHZhbHVlLnJlcGxhY2UoJyR7bGliZGlyfScsbmF0aXZlbGliZm9sZGVyKycvdXNyL2xpYicpKSBvciBvcy5wYXRoLmlzZGlyKHZhbHVlLnJlcGxhY2UoJyR7bGliZGlyfScsbmF0aXZlbGliZm9sZGVyKycvdXNyL2xpYjY0JykpIG9yIG9zLnBhdGguaXNkaXIodmFsdWUucmVwbGFjZSgnJHtsaWJkaXJ9JyxuYXRpdmVsaWJmb2xkZXIrJy91c3IvbGliMzInKSk6Ci0gICAgcmV0dXJuIFRydWUKLSAgZWxzZToKLSAgICByZXR1cm4gRmFsc2UKLQotZGVmIHByZXBlbmRfY29tbWVudHMoY29tbWVudHMsIGpzb25fbWFuaWZlc3QpOgotICAgIHdpdGggb3Blbihqc29uX21hbmlmZXN0LCAncisnKSBhcyBtYW5pZmVzdDoKLSAgICAgICAganNvbl9jb250ZW50cyA9IG1hbmlmZXN0LnJlYWQoKQotICAgICAgICBtYW5pZmVzdC5zZWVrKDAsIDApCi0gICAgICAgIG1hbmlmZXN0LndyaXRlKGNvbW1lbnRzICsganNvbl9jb250ZW50cykKLQotIyBSZWFkIGV4aXN0aW5nIEpTT04gbWFuaWZlc3QKLXdpdGggb3BlbigncHl0aG9uMi1tYW5pZmVzdC5qc29uJykgYXMgbWFuaWZlc3Q6Ci0gICAgIyBUaGUgSlNPTiBmb3JtYXQgZG9lc24ndCBhbGxvdyBjb21tZW50cyBzbyB3ZSBoYWNrIHRoZSBjYWxsIHRvIGtlZXAgdGhlIGNvbW1lbnRzIHVzaW5nIGEgbWFya2VyCi0gICAgbWFuaWZlc3Rfc3RyID0gIG1hbmlmZXN0LnJlYWQoKQotICAgIGpzb25fc3RhcnQgPSBtYW5pZmVzdF9zdHIuZmluZCgnIyBFT0MnKSArIDYgIyBFT0MgKyBcbgotICAgIG1hbmlmZXN0LnNlZWsoMCkKLSAgICBjb21tZW50cyA9IG1hbmlmZXN0LnJlYWQoanNvbl9zdGFydCkKLSAgICBtYW5pZmVzdF9zdHIgPSBtYW5pZmVzdC5yZWFkKCkKLSAgICBvbGRfbWFuaWZlc3QgPSBqc29uLmxvYWRzKG1hbmlmZXN0X3N0ciwgb2JqZWN0X3BhaXJzX2hvb2s9Y29sbGVjdGlvbnMuT3JkZXJlZERpY3QpCi0KLSMgRmlyc3QgcGFzcyB0byBnZXQgY29yZS1wYWNrYWdlIGZ1bmN0aW9uYWxpdHksIGJlY2F1c2Ugd2UgYmFzZSBldmVyeXRoaW5nIG9uIHRoZSBmYWN0IHRoYXQgY29yZSBpcyBhY3R1YWxseSB3b3JraW5nCi0jIE5vdCBleGFjdGx5IHRoZSBzYW1lIHNvIGl0IHNob3VsZCBub3QgYmUgYSBmdW5jdGlvbgotcHJpbnQgKCJHZXR0aW5nIGRlcGVuZGVuY2llcyBmb3IgY29yZSBwYWNrYWdlOiIpCi0KLSMgU3BlY2lhbCBjYWxsIHRvIGNoZWNrIGZvciBjb3JlIHBhY2thZ2UKLW91dHB1dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KFtzeXMuZXhlY3V0YWJsZSwgJ2dldF9tb2R1bGVfZGVwczIucHknLCAncHl0aG9uLWNvcmUtcGFja2FnZSddKQotZm9yIGl0ZW0gaW4gb3V0cHV0LnNwbGl0KCk6Ci0gICAgIyBXZSBhcHBlbmQgaXQgc28gaXQgZG9lc250IGh1cnQgd2hhdCB3ZSBjdXJyZW50bHkgaGF2ZToKLSAgICBpZiBpdGVtIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKLSAgICAgICAgIyBXZSB1c2UgdGhlIHNhbWUgZGF0YSBzdHJ1Y3R1cmUgc2luY2UgaXRzIHRoZSBvbmUgd2hpY2ggd2lsbCBiZSB1c2VkIHRvIGNoZWNrCi0gICAgICAgICMgZGVwZW5kZW5jaWVzIGZvciBvdGhlciBwYWNrYWdlcwotICAgICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQoaXRlbSkKLQotZm9yIHZhbHVlIGluIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddOgotICAjIElnbm9yZSBmb2xkZXJzLCBzaW5jZSB3ZSBkb24ndCBpbXBvcnQgdGhvc2UsIGRpZmZpY3VsdCB0byBoYW5kbGUgbXVsdGlsaWIKLSAgaWYgaXNGb2xkZXIodmFsdWUpOgotICAgICMgUGFzcyBpdCBkaXJlY3RseQotICAgIGlmIHZhbHVlIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKLSAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKLSAgIyBJZ25vcmUgYmluYXJpZXMsIHNpbmNlIHdlIGRvbid0IGltcG9ydCB0aG9zZSwgYXNzdW1lIGl0IHdhcyBhZGRlZCBjb3JyZWN0bHkgKG1hbnVhbGx5KQotICBpZiAnJHtiaW5kaXJ9JyBpbiB2YWx1ZToKLSAgICAjIFBhc3MgaXQgZGlyZWN0bHkKLSAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106Ci0gICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCi0gICAgY29udGludWUKLSAgIyBJZ25vcmUgZW1wdHkgdmFsdWVzCi0gIGlmIHZhbHVlID09ICcnOgotICAgIGNvbnRpbnVlCi0gIGlmICcke2luY2x1ZGVkaXJ9JyBpbiB2YWx1ZToKLSAgICBpZiB2YWx1ZSBub3QgaW4gb2xkX21hbmlmZXN0Wydjb3JlJ11bJ2ZpbGVzJ106Ci0gICAgICBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCi0gICAgY29udGludWUKLSAgIyBHZXQgbW9kdWxlIG5hbWUgLCBzaG91bGRudCBiZSBhZmZlY3RlZCBieSBsaWJkaXIvYmluZGlyCi0gIHZhbHVlID0gb3MucGF0aC5zcGxpdGV4dChvcy5wYXRoLmJhc2VuYW1lKG9zLnBhdGgubm9ybXBhdGgodmFsdWUpKSlbMF0KLQotCi0gICMgTGF1bmNoIHNlcGFyYXRlIHRhc2sgZm9yIGVhY2ggbW9kdWxlIGZvciBkZXRlcm1pbmlzdGljIGJlaGF2aW9yCi0gICMgRWFjaCBtb2R1bGUgd2lsbCBvbmx5IGltcG9ydCB3aGF0IGlzIG5lY2Vzc2FyeSBmb3IgaXQgdG8gd29yayBpbiBzcGVjaWZpYwotICBwcmludCAoJ0dldHRpbmcgZGVwZW5kZW5jaWVzIGZvciBtb2R1bGU6ICVzJyAlIHZhbHVlKQotICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbc3lzLmV4ZWN1dGFibGUsICdnZXRfbW9kdWxlX2RlcHMyLnB5JywgJyVzJyAlIHZhbHVlXSkKLSAgZm9yIGl0ZW0gaW4gb3V0cHV0LnNwbGl0KCk6Ci0gICAgIyBXZSBhcHBlbmQgaXQgc28gaXQgZG9lc250IGh1cnQgd2hhdCB3ZSBjdXJyZW50bHkgaGF2ZToKLSAgICBpZiBpdGVtIG5vdCBpbiBvbGRfbWFuaWZlc3RbJ2NvcmUnXVsnZmlsZXMnXToKLSAgICAgIG9sZF9tYW5pZmVzdFsnY29yZSddWydmaWxlcyddLmFwcGVuZChpdGVtKQotCi0jIFdlIGNoZWNrIHdoaWNoIHBhY2thZ2VzIGluY2x1ZGUgZm9sZGVycwotZm9yIGtleSBpbiBvbGRfbWFuaWZlc3Q6Ci0gICAgZm9yIHZhbHVlIGluIG9sZF9tYW5pZmVzdFtrZXldWydmaWxlcyddOgotICAgICAgICAjIElnbm9yZSBmb2xkZXJzLCBzaW5jZSB3ZSBkb24ndCBpbXBvcnQgdGhvc2UsIGRpZmZpY3VsdCB0byBoYW5kbGUgbXVsdGlsaWIKLSAgICAgICAgaWYgaXNGb2xkZXIodmFsdWUpOgotICAgICAgICAgICAgcHJpbnQgKCclcyBpcyBhIGZvbGRlcicgJSB2YWx1ZSkKLSAgICAgICAgICAgIGlmIGtleSBub3QgaW4gaGFzZm9sZGVyczoKLSAgICAgICAgICAgICAgICBoYXNmb2xkZXJzLmFwcGVuZChrZXkpCi0gICAgICAgICAgICBpZiB2YWx1ZSBub3QgaW4gYWxsZm9sZGVyczoKLSAgICAgICAgICAgICAgICBhbGxmb2xkZXJzLmFwcGVuZCh2YWx1ZSkKLQotZm9yIGtleSBpbiBvbGRfbWFuaWZlc3Q6Ci0gICAgIyBVc2UgYW4gZW1wdHkgZGljdCBhcyBkYXRhIHN0cnVjdHVyZSB0byBob2xkIGRhdGEgZm9yIGVhY2ggcGFja2FnZSBhbmQgZmlsbCBpdCB1cAotICAgIG5ld19tYW5pZmVzdFtrZXldID0gY29sbGVjdGlvbnMuT3JkZXJlZERpY3QoKQotICAgIG5ld19tYW5pZmVzdFtrZXldWydzdW1tYXJ5J10gPSBvbGRfbWFuaWZlc3Rba2V5XVsnc3VtbWFyeSddCi0gICAgbmV3X21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ109W10KLSAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXSA9IFtdCi0KLSAgICAjIEFsbCBwYWNrYWdlcyBzaG91bGQgZGVwZW5kIG9uIGNvcmUKLSAgICBpZiBrZXkgIT0gJ2NvcmUnOgotICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXS5hcHBlbmQoJ2NvcmUnKQotCi0gICAgIyBIYW5kbGUgc3BlY2lhbCBjYXNlcywgd2UgYXNzdW1lIHRoYXQgd2hlbiB0aGV5IHdlcmUgbWFudWFsbHkgYWRkZWQgCi0gICAgIyB0byB0aGUgbWFuaWZlc3Qgd2Uga25ldyB3aGF0IHdlIHdlcmUgZG9pbmcuCi0gICAgcHJpbnQgKCdIYW5kbGluZyBwYWNrYWdlICVzJyAlIGtleSkKLSAgICBzcGVjaWFsX3BhY2thZ2VzPVsnbWlzYycsICdtb2R1bGVzJywgJ3Rlc3RzJywgJ2RldiddCi0gICAgaWYga2V5IGluIHNwZWNpYWxfcGFja2FnZXMgb3IgJ3N0YXRpY2RldicgaW4ga2V5OgotICAgICAgICBwcmludCgnUGFzc2luZyAlcyBwYWNrYWdlIGRpcmVjdGx5JyAlIGtleSkKLSAgICAgICAgbmV3X21hbmlmZXN0W2tleV09b2xkX21hbmlmZXN0W2tleV0KLSAgICAgICAgY29udGludWUKLQotICAgIGZvciB2YWx1ZSBpbiBvbGRfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKLSAgICAgICAgIyBXZSBhbHJlYWR5IGhhbmRsZWQgY29yZSBvbiB0aGUgZmlyc3QgcGFzcwotICAgICAgICBpZiBrZXkgPT0gJ2NvcmUnOgotICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKHZhbHVlKQotICAgICAgICAgICAgY29udGludWUKLSAgICAgICAgIyBJZ25vcmUgZm9sZGVycywgc2luY2Ugd2UgZG9uJ3QgaW1wb3J0IHRob3NlLCBkaWZmaWN1bHQgdG8gaGFuZGxlIG11bHRpbGliCi0gICAgICAgIGlmIGlzRm9sZGVyKHZhbHVlKToKLSAgICAgICAgICAgICMgUGFzcyBmb2xkZXJzIGRpcmVjdGx5Ci0gICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCi0gICAgICAgICMgSWdub3JlIGJpbmFyaWVzLCBzaW5jZSB3ZSBkb24ndCBpbXBvcnQgdGhvc2UKLSAgICAgICAgaWYgJyR7YmluZGlyfScgaW4gdmFsdWU6Ci0gICAgICAgICAgICAjIFBhc3MgaXQgZGlyZWN0bHkgdG8gdGhlIG5ldyBtYW5pZmVzdCBkYXRhIHN0cnVjdHVyZQotICAgICAgICAgICAgaWYgdmFsdWUgbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddOgotICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLmFwcGVuZCh2YWx1ZSkKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgICMgSWdub3JlIGVtcHR5IHZhbHVlcwotICAgICAgICBpZiB2YWx1ZSA9PSAnJzoKLSAgICAgICAgICAgIGNvbnRpbnVlCi0gICAgICAgIGlmICcke2luY2x1ZGVkaXJ9JyBpbiB2YWx1ZToKLSAgICAgICAgICAgIGlmIHZhbHVlIG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKLSAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQodmFsdWUpCi0gICAgICAgICAgICBjb250aW51ZQotICAgICAgICAjIEdldCBtb2R1bGUgbmFtZSAsIHNob3VsZG50IGJlIGFmZmVjdGVkIGJ5IGxpYmRpci9iaW5kaXIKLSAgICAgICAgdmFsdWUgPSBvcy5wYXRoLnNwbGl0ZXh0KG9zLnBhdGguYmFzZW5hbWUob3MucGF0aC5ub3JtcGF0aCh2YWx1ZSkpKVswXQotCi0gICAgICAgICMgTGF1bmNoIHNlcGFyYXRlIHRhc2sgZm9yIGVhY2ggbW9kdWxlIGZvciBkZXRlcm1pbmlzdGljIGJlaGF2aW9yCi0gICAgICAgICMgRWFjaCBtb2R1bGUgd2lsbCBvbmx5IGltcG9ydCB3aGF0IGlzIG5lY2Vzc2FyeSBmb3IgaXQgdG8gd29yayBpbiBzcGVjaWZpYwotICAgICAgICBwcmludCAoJ0dldHRpbmcgZGVwZW5kZW5jaWVzIGZvciBtb2R1bGU6ICVzJyAlIHZhbHVlKQotICAgICAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChbc3lzLmV4ZWN1dGFibGUsICdnZXRfbW9kdWxlX2RlcHMyLnB5JywgJyVzJyAlIHZhbHVlXSkKLQotICAgICAgICAjIFdlIGNhbiBwcmludCBkZXBlbmRlbmNpZXMgZm9yIGRlYnVnZ2luZyBwdXJwb3NlcwotICAgICAgICAjcHJpbnQgKG91dHB1dCkKLSAgICAgICAgIyBPdXRwdXQgd2lsbCBoYXZlIGFsbCBkZXBlbmRlbmNpZXMKLSAgICAgICAgZm9yIGl0ZW0gaW4gb3V0cHV0LnNwbGl0KCk6Ci0KLSAgICAgICAgICAgICMgV2FybmluZzogVGhpcyBmaXJzdCBwYXJ0IGlzIHVnbHkKLSAgICAgICAgICAgICMgT25lIG9mIHRoZSBkZXBlbmRlbmNpZXMgdGhhdCB3YXMgZm91bmQsIGNvdWxkIGJlIGluc2lkZSBvZiBvbmUgb2YgdGhlIGZvbGRlcnMgaW5jbHVkZWQgYnkgYW5vdGhlciBwYWNrYWdlCi0gICAgICAgICAgICAjIFdlIG5lZWQgdG8gY2hlY2sgaWYgdGhpcyBoYXBwZW5zIHNvIHdlIGNhbiBhZGQgdGhlIHBhY2thZ2UgY29udGFpbmluZyB0aGUgZm9sZGVyIGFzIGFuIFJERVBFTkRTCi0gICAgICAgICAgICAjIGUuZy4gRm9sZGVyIGVuY29kaW5ncyBjb250YWluZWQgaW4gY29kZWNzCi0gICAgICAgICAgICAjIFRoaXMgd291bGQgYmUgc29sdmVkIGlmIG5vIHBhY2thZ2VzIGluY2x1ZGVkIGFueSBmb2xkZXJzCi0KLSAgICAgICAgICAgICMgVGhpcyBjYW4gYmUgZG9uZSBpbiB0d28gd2F5czoKLSAgICAgICAgICAgICMgMSAtIFdlIGFzc3VtZSB0aGF0IGlmIHdlIHRha2Ugb3V0IHRoZSBmaWxlbmFtZSBmcm9tIHRoZSBwYXRoIHdlIHdvdWxkIGdldAotICAgICAgICAgICAgIyAgIHRoZSBmb2xkZXIgc3RyaW5nLCB0aGVuIHdlIHdvdWxkIGNoZWNrIGlmIGZvbGRlciBzdHJpbmcgaXMgaW4gdGhlIGxpc3Qgb2YgZm9sZGVycwotICAgICAgICAgICAgIyAgIFRoaXMgd291bGQgbm90IHdvcmsgaWYgYSBwYWNrYWdlIGNvbnRhaW5zIGEgZm9sZGVyIHdoaWNoIGNvbnRhaW5zIGFub3RoZXIgZm9sZGVyCi0gICAgICAgICAgICAjICAgZS5nLiBwYXRoL2ZvbGRlcjEvZm9sZGVyMi9maWxlbmFtZSAgZm9sZGVyX3N0cmluZz0gcGF0aC9mb2xkZXIxL2ZvbGRlcjIKLSAgICAgICAgICAgICMgICBmb2xkZXJfc3RyaW5nIHdvdWxkIG5vdCBtYXRjaCBhbnkgdmFsdWUgY29udGFpbmVkIGluIHRoZSBsaXN0IG9mIGZvbGRlcnMKLSAgICAgICAgICAgICMKLSAgICAgICAgICAgICMgMiAtIFdlIGRvIGl0IHRoZSBvdGhlciB3YXkgYXJvdW5kLCBjaGVja2luZyBpZiB0aGUgZm9sZGVyIGlzIGNvbnRhaW5lZCBpbiB0aGUgcGF0aAotICAgICAgICAgICAgIyAgIGUuZy4gcGF0aC9mb2xkZXIxL2ZvbGRlcjIvZmlsZW5hbWUgIGZvbGRlcl9zdHJpbmc9IHBhdGgvZm9sZGVyMS9mb2xkZXIyCi0gICAgICAgICAgICAjICAgaXMgZm9sZGVyX3N0cmluZyBpbnNpZGUgcGF0aC9mb2xkZXIxL2ZvbGRlcjIvZmlsZW5hbWU/LCAKLSAgICAgICAgICAgICMgICBZZXMsIGl0IHdvcmtzLCBidXQgd2Ugd2FzdGUgYSBjb3VwbGUgb2YgbWlsbGlzZWNvbmRzLgotCi0gICAgICAgICAgICBpbkZvbGRlcnM9RmFsc2UKLSAgICAgICAgICAgIGZvciBmb2xkZXIgaW4gYWxsZm9sZGVyczoKLSAgICAgICAgICAgICAgICAjIFRoZSBtb2R1bGUgY291bGQgaGF2ZSBhIGRpcmVjdG9yeSBuYW1lZCBhZnRlciBpdCwgZS5nLiB4bWwsIGlmIHdlIHRha2Ugb3V0IHRoZSBmaWxlbmFtZSBmcm9tIHRoZSBwYXRoCi0gICAgICAgICAgICAgICAgIyB3ZSdsbCBlbmQgdXAgd2l0aCAke2xpYmRpcn0sIGFuZCB3ZSB3YW50ICR7bGliZGlyfS94bWwKLSAgICAgICAgICAgICAgICBpZiBpc0ZvbGRlcihpdGVtKToKLSAgICAgICAgICAgICAgICAgICAgY2hlY2tfcGF0aCA9IGl0ZW0KLSAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICBjaGVja19wYXRoID0gb3MucGF0aC5kaXJuYW1lKGl0ZW0pCi0gICAgICAgICAgICAgICAgaWYgZm9sZGVyIGluIGNoZWNrX3BhdGggOgotICAgICAgICAgICAgICAgICAgICBpbkZvbGRlcnMgPSBUcnVlICMgRGlkIHdlIGZpbmQgYSBmb2xkZXI/Ci0gICAgICAgICAgICAgICAgICAgIGZvbGRlckZvdW5kID0gRmFsc2UgIyBTZWNvbmQgZmxhZyB0byBicmVhayBpbm5lciBmb3IKLSAgICAgICAgICAgICAgICAgICAgIyBMb29wIG9ubHkgdGhyb3VnaCBwYWNrYWdlcyB3aGljaCBjb250YWluIGZvbGRlcnMKLSAgICAgICAgICAgICAgICAgICAgZm9yIGtleWZvbGRlciBpbiBoYXNmb2xkZXJzOgotICAgICAgICAgICAgICAgICAgICAgICAgaWYgKGZvbGRlckZvdW5kID09IEZhbHNlKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAjcHJpbnQoIkNoZWNraW5nIGZvbGRlciAlcyBvbiBwYWNrYWdlICVzIiAlIChpdGVtLGtleWZvbGRlcikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9yIGZpbGVfZm9sZGVyIGluIG9sZF9tYW5pZmVzdFtrZXlmb2xkZXJdWydmaWxlcyddOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBmaWxlX2ZvbGRlcj09Zm9sZGVyOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgKCclcyBmb3VuZCBpbiAlcycgJSAoZm9sZGVyLCBrZXlmb2xkZXIpKQotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZm9sZGVyRm91bmQgPSBUcnVlCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBrZXlmb2xkZXIgbm90IGluIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddIGFuZCBrZXlmb2xkZXIgIT0ga2V5OgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddLmFwcGVuZChrZXlmb2xkZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJyZWFrCi0KLSAgICAgICAgICAgICMgQSBmb2xkZXIgd2FzIGZvdW5kIHNvIHdlJ3JlIGRvbmUgd2l0aCB0aGlzIGl0ZW0sIHdlIGNhbiBnbyBvbgotICAgICAgICAgICAgaWYgaW5Gb2xkZXJzOgotICAgICAgICAgICAgICAgIGNvbnRpbnVlCi0KLSAgICAgICAgICAgICMgV2UgbWlnaHQgYWxyZWFkeSBoYXZlIGl0IG9uIHRoZSBkaWN0aW9uYXJ5IHNpbmNlIGl0IGNvdWxkIGRlcGVuZCBvbiBhIChwcmV2aW91c2x5IGNoZWNrZWQpIG1vZHVsZQotICAgICAgICAgICAgaWYgaXRlbSBub3QgaW4gbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106Ci0gICAgICAgICAgICAgICAgIyBIYW5kbGUgY29yZSBhcyBhIHNwZWNpYWwgcGFja2FnZSwgd2UgYWxyZWFkeSBkaWQgaXQgc28gd2UgcGFzcyBpdCB0byBORVcgZGF0YSBzdHJ1Y3R1cmUgZGlyZWN0bHkKLSAgICAgICAgICAgICAgICBpZiBrZXk9PSdjb3JlJzoKLSAgICAgICAgICAgICAgICAgIHByaW50KCdBZGRpbmcgJXMgdG8gJXMgRklMRVMnICUgKGl0ZW0sIGtleSkpCi0gICAgICAgICAgICAgICAgICBpZiBpdGVtLmVuZHN3aXRoKCcqJyk6Ci0gICAgICAgICAgICAgICAgICAgICAgd2lsZGNhcmRzLmFwcGVuZChpdGVtKQotICAgICAgICAgICAgICAgICAgbmV3X21hbmlmZXN0W2tleV1bJ2ZpbGVzJ10uYXBwZW5kKGl0ZW0pCi0KLSAgICAgICAgICAgICAgICAgICMgQ2hlY2sgZm9yIHJlcGVhdGVkIGZpbGVzCi0gICAgICAgICAgICAgICAgICBpZiBpdGVtIG5vdCBpbiBhbGxmaWxlczoKLSAgICAgICAgICAgICAgICAgICAgICBhbGxmaWxlcy5hcHBlbmQoaXRlbSkKLSAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgcmVwZWF0ZWQuYXBwZW5kKGl0ZW0pCi0KLSAgICAgICAgICAgICAgICBlbHNlOgotCi0gICAgICAgICAgICAgICAgICAgICMgQ2hlY2sgaWYgdGhpcyBkZXBlbmRlbmN5IGlzIGFscmVhZHkgY29udGFpbmVkIG9uIGFub3RoZXIgcGFja2FnZSwgc28gd2UgYWRkIGl0Ci0gICAgICAgICAgICAgICAgICAgICMgYXMgYW4gUkRFUEVORFMsIG9yIGlmIGl0cyBub3QsIGl0IG1lYW5zIGl0IHNob3VsZCBiZSBjb250YWluZWQgb24gdGhlIGN1cnJlbnQKLSAgICAgICAgICAgICAgICAgICAgIyBwYWNrYWdlLCBzbyB3ZSBzaG91bGQgYWRkIGl0IHRvIEZJTEVTCi0gICAgICAgICAgICAgICAgICAgIGZvciBuZXdrZXkgaW4gb2xkX21hbmlmZXN0OgotICAgICAgICAgICAgICAgICAgICAgICAgIyBEZWJ1ZwotICAgICAgICAgICAgICAgICAgICAgICAgI3ByaW50KCJDaGVja2luZyAlcyAiICUgaXRlbSArICIgaW4gJXMiICUgbmV3a2V5KQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgaXRlbSBpbiBvbGRfbWFuaWZlc3RbbmV3a2V5XVsnZmlsZXMnXTogICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBTaW5jZSB3ZXJlIG5lc3RpbmcsIHdlIG5lZWQgdG8gY2hlY2sgaXRzIG5vdCB0aGUgc2FtZSBrZXkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYobmV3a2V5IT1rZXkpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgbmV3a2V5IG5vdCBpbiBuZXdfbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgQWRkIGl0IHRvIHRoZSBuZXcgbWFuaWZlc3QgZGF0YSBzdHJ1Y3QKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgRGVidWcKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdBZGRpbmcgJXMgdG8gJXMgUkRFUEVORFMsIGJlY2F1c2UgaXQgY29udGFpbnMgJXMnICUgKG5ld2tleSwga2V5LCBpdGVtKSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddLmFwcGVuZChuZXdrZXkpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgICAgIyBEZWJ1ZwotICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQoJ0FkZGluZyAlcyB0byAlcyBGSUxFUycgJSAoaXRlbSwga2V5KSkKLSAgICAgICAgICAgICAgICAgICAgICAgICMgU2luY2UgaXQgd2FzbnQgZm91bmQgb24gYW5vdGhlciBwYWNrYWdlLCBpdHMgbm90IGFuIFJERVAsIHNvIGFkZCBpdCB0byBGSUxFUyBmb3IgdGhpcyBwYWNrYWdlCi0gICAgICAgICAgICAgICAgICAgICAgICBuZXdfbWFuaWZlc3Rba2V5XVsnZmlsZXMnXS5hcHBlbmQoaXRlbSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0ZW0uZW5kc3dpdGgoJyonKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICB3aWxkY2FyZHMuYXBwZW5kKGl0ZW0pCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBpdGVtIG5vdCBpbiBhbGxmaWxlczoKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhbGxmaWxlcy5hcHBlbmQoaXRlbSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgcmVwZWF0ZWQuYXBwZW5kKGl0ZW0pCi0KLXByaW50ICgnVGhlIGZvbGxvd2luZyBmaWxlcyBhcmUgcmVwZWF0ZWQgKGNvbnRhaW5lZCBpbiBtb3JlIHRoYW4gb25lIHBhY2thZ2UpLCBwbGVhc2UgY2hlY2sgd2hpY2ggcGFja2FnZSBzaG91bGQgZ2V0IGl0OicpCi1wcmludCAocmVwZWF0ZWQpCi1wcmludCgnVGhlIGZvbGxvd2luZyBmaWxlcyBjb250YWluIHdpbGRjYXJkcywgcGxlYXNlIGNoZWNrIHRoZXkgYXJlIG5lY2Vzc2FyeScpCi1wcmludCh3aWxkY2FyZHMpCi1wcmludCgnVGhlIGZvbGxvd2luZyBmaWxlcyBjb250YWluIGZvbGRlcnMsIHBsZWFzZSBjaGVjayB0aGV5IGFyZSBuZWNlc3NhcnknKQotcHJpbnQoaGFzZm9sZGVycykKLQotIyBTb3J0IGl0IGp1c3Qgc28gaXQgbG9va3MgbmljZSAKLWZvciBrZXkgaW4gbmV3X21hbmlmZXN0OgotICAgIG5ld19tYW5pZmVzdFtrZXldWydmaWxlcyddLnNvcnQoKQotICAgIG5ld19tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddLnNvcnQoKQotCi0jIENyZWF0ZSB0aGUgbWFuaWZlc3QgZnJvbSB0aGUgZGF0YSBzdHJ1Y3R1cmUgdGhhdCB3YXMgYnVpbHQKLXdpdGggb3BlbigncHl0aG9uMi1tYW5pZmVzdC5qc29uLm5ldycsJ3cnKSBhcyBvdXRmaWxlOgotICAgIGpzb24uZHVtcChuZXdfbWFuaWZlc3Qsb3V0ZmlsZSwgaW5kZW50PTQpCi0KLXByZXBlbmRfY29tbWVudHMoY29tbWVudHMsJ3B5dGhvbjItbWFuaWZlc3QuanNvbi5uZXcnKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9maXhfZm9yX3VzaW5nX2RpZmZlcmVudF9saWJkaXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2ZpeF9mb3JfdXNpbmdfZGlmZmVyZW50X2xpYmRpci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWY3MzA5My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2ZpeF9mb3JfdXNpbmdfZGlmZmVyZW50X2xpYmRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc3ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbRW1iZWRkZWQgc3BlY2lmaWNdCi0KLVRoaXMgcGF0Y2ggZml4ZXMgaXNzdWluZyB3aXRoIGRpZmZlcmVudCBsaWJkaXIgbGlrZSBsaWI2NC4KLVRoaXMgcGF0Y2ggbWFrZXMgdGhlIG5hdGl2ZSBweXRob24gYmluYXJ5IG1vZHVsZXMgZmluZGFibGUKLWluIHRoZSBpbnN0YWxsIHByb2Nlc3Mgb2YgdGhlIGhvc3QgcHl0aG9uLgotCi1TaWduZWQtb2ZmLWJ5OiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotRGF0ZTogMjAxMi8wMy8xNAotCi1VcGRhdGVkIGZvciBweXRob24gMi43LjMKLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci1EYXRlOiAyMDEyLzA1LzAxCi0KLVJlYmFzZWQgZm9yIHB5dGhvbi0yLjcuOQotU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+Ci0KLQotSW5kZXg6IFB5dGhvbi0yLjcuOS9MaWIvc3lzY29uZmlnLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvTGliL3N5c2NvbmZpZy5weQotKysrIFB5dGhvbi0yLjcuOS9MaWIvc3lzY29uZmlnLnB5Ci1AQCAtOSw3ICs5LDcgQEAgX0lOU1RBTExfU0NIRU1FUyA9IHsKLSAgICAgJ3Bvc2l4X3ByZWZpeCc6IHsKLSAgICAgICAgICdzdGRsaWInOiAne2Jhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0gICAgICAgICAncGxhdHN0ZGxpYic6ICd7cGxhdGJhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0tICAgICAgICAncHVyZWxpYic6ICd7YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKLSsgICAgICAgICdwdXJlbGliJzogJ3tiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0gICAgICAgICAncGxhdGxpYic6ICd7cGxhdGJhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKLSAgICAgICAgICdpbmNsdWRlJzogJ3tiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0gICAgICAgICAncGxhdGluY2x1ZGUnOiAne3BsYXRiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi1AQCAtNjcsNyArNjcsNyBAQCBfSU5TVEFMTF9TQ0hFTUVTID0gewotICAgICAncG9zaXhfdXNlcic6IHsKLSAgICAgICAgICdzdGRsaWInOiAne3VzZXJiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAgJ3BsYXRzdGRsaWInOiAne3VzZXJiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotLSAgICAgICAgJ3B1cmVsaWInOiAne3VzZXJiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9L3NpdGUtcGFja2FnZXMnLAotKyAgICAgICAgJ3B1cmVsaWInOiAne3VzZXJiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0gICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKLSAgICAgICAgICdpbmNsdWRlJzogJ3t1c2VyYmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAgJ3NjcmlwdHMnOiAne3VzZXJiYXNlfS9iaW4nLAotSW5kZXg6IFB5dGhvbi0yLjcuOS9NYWtlZmlsZS5wcmUuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43Ljkub3JpZy9NYWtlZmlsZS5wcmUuaW4KLSsrKyBQeXRob24tMi43LjkvTWFrZWZpbGUucHJlLmluCi1AQCAtMTA0NiwyNyArMTA0NiwyNyBAQCBsaWJpbnN0YWxsOglidWlsZF9hbGwgJChzcmNkaXIpL0xpYi8kKFBMCi0gCQkkKElOU1RBTExfREFUQSkgJChzcmNkaXIpL01vZHVsZXMveHhtb2R1bGUuYyBcCi0gCQkJJChERVNURElSKSQoTElCREVTVCkvZGlzdHV0aWxzL3Rlc3RzIDsgXAotIAlmaQotLQlQWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICAkKFJVTlNIQVJFRCkgXAotKwlQWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpOiR7Q1JPU1NQWVRIT05QQVRIfSAkKFJVTlNIQVJFRCkgXAotIAkJJChIT1NUUFlUSE9OKSAtV2kgLXR0ICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAotIAkJLWQgJChMSUJERVNUKSAtZiBcCi0gCQkteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKLSAJCSQoREVTVERJUikkKExJQkRFU1QpCi0tCVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKLSsJUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKToke0NST1NTUFlUSE9OUEFUSH0kKFJVTlNIQVJFRCkgXAotIAkJJChIT1NUUFlUSE9OKSAtV2kgLXR0ICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAotIAkJLWQgJChMSUJERVNUKSAtZiBcCi0gCQkteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKLSAJCSQoREVTVERJUikkKExJQkRFU1QpCi0tCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICAkKFJVTlNIQVJFRCkgXAotKwktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKToke0NST1NTUFlUSE9OUEFUSH0gJChSVU5TSEFSRUQpIFwKLSAJCSQoSE9TVFBZVEhPTikgLVdpIC10dCAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKLSAJCS1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCi0gCQkteCBiYWRzeW50YXggJChERVNURElSKSQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcwotLQktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAotKwktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKToke0NST1NTUFlUSE9OUEFUSH0gJChSVU5TSEFSRUQpIFwKLSAJCSQoSE9TVFBZVEhPTikgLVdpIC10dCAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKLSAJCS1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCi0gCQkteCBiYWRzeW50YXggJChERVNURElSKSQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcwotLQktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAotKwktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKToke0NST1NTUFlUSE9OUEFUSH0gJChSVU5TSEFSRUQpIFwKLSAJCSQoSE9TVFBZVEhPTikgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9HcmFtbWFyLnR4dAotLQktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKSAkKFJVTlNIQVJFRCkgXAotKwktUFlUSE9OUEFUSD0kKERFU1RESVIpJChMSUJERVNUKToke0NST1NTUFlUSE9OUEFUSH0gJChSVU5TSEFSRUQpIFwKLSAJCSQoSE9TVFBZVEhPTikgLW0gbGliMnRvMy5wZ2VuMi5kcml2ZXIgJChERVNURElSKSQoTElCREVTVCkvbGliMnRvMy9QYXR0ZXJuR3JhbW1hci50eHQKLSAKLSAjIENyZWF0ZSB0aGUgUExBVERJUiBzb3VyY2UgZGlyZWN0b3J5LCBpZiBvbmUgd2Fzbid0IGRpc3RyaWJ1dGVkLi4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vZmxvYXQtZW5kaWFuLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9mbG9hdC1lbmRpYW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhhNWM5MGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9mbG9hdC1lbmRpYW4ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMTYgKzAsMCBAQAotUHl0aG9uIHVzZXMgQUNfUlVOX0lGRUxTRSB0byBkZXRlcm1pbmUgdGhlIGJ5dGUgb3JkZXIgZm9yIGZsb2F0cyBhbmQgZG91YmxlcywKLWFuZCBmYWxscyBiYWNrIG9udG8gIkkgZG9uJ3Qga25vdyIgaWYgaXQgY2FuJ3QgcnVuIGNvZGUuICBUaGlzIHJlc3VsdHMgaW4KLWNyaXBwbGVkIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgaW4gUHl0aG9uLCBhbmQgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgZmFpbC4KLQotSW5zdGVhZCBvZiBydW5uaW5nIGNvZGUsIHRha2UgYSBtYWNybyBmcm9tIGF1dG9jb25mLWFyY2hpdmUgd2hpY2ggY29tcGlsZXMgQwotd2l0aCBhIHNwZWNpYWwgZG91YmxlIGluIHdoaWNoIGhhcyBhbiBBU0NJSSByZXByZXNlbnRhdGlvbiwgYW5kIHRoZW4gZ3JlcHMgdGhlCi1iaW5hcnkgdG8gaWRlbnRpZnkgdGhlIGZvcm1hdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSAyNTNmNDdiMjgxMjBjNDJjZmU1M2E0ZTJmNWVkMGFiMGVkNDY5ZGViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3NAYnVydG9uaW5pLmNvbT4KLURhdGU6IFdlZCwgMTkgU2VwIDIwMTggMDc6MjU6NDggKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gY2xvc2VzIGJwby0zNDU4NTogRG9uJ3QgZG8gcnVudGltZSB0ZXN0IHRvIGdldCBmbG9hdCBieXRlCi0gb3JkZXIuIChHSC05MDg1KQotCi1DdXJyZW50bHkgY29uZmlndXJlLmFjIHVzZXMgQUNfUlVOX0lGRUxTRSB0byBkZXRlcm1pbmUgdGhlIGJ5dGUgb3JkZXIgb2YgZG91YmxlcywgYnV0IHRoaXMgc2lsZW50bHkgZmFpbHMgdW5kZXIgY3Jvc3MgY29tcGlsYXRpb24gYW5kIFB5dGhvbiBkb2Vzbid0IGRvIGZsb2F0cyBwcm9wZXJseS4KLQotSW5zdGVhZCwgc3RlYWwgYSBtYWNybyBmcm9tIGF1dG9jb25mLWFyY2hpdmUgd2hpY2ggY29tcGlsZXMgY29kZSB1c2luZyBtYWdpYyBkb3VibGVzICh3aGljaCBlbmNvZGUgdG8gQVNDSUkpIGFuZCBncmVwIGZvciB0aGUgcmVwcmVzZW50YXRpb24gaW4gdGhlIGJpbmFyeS4KLQotUkZDIGJlY2F1c2UgdGhpcyBkb2Vzbid0IHlldCBoYW5kbGUgdGhlIHdlaXJkIGFuY2llbnQgQVJNdjQgT0FCSSAnbWl4ZWQtZW5kaWFuJyBlbmNvZGluZyBwcm9wZXJseS4gVGhpcyBlbmNvZGluZyBpcyBhbmNpZW50IGFuZCBJIGRvbid0IGJlbGlldmUgdGhlIHVuaW9uIG9mICJQeXRob24gMy44IHVzZXJzIiBhbmQgIk9BQkkgdXNlcnMiIGhhcyBhbnl0aGluZyBpbi4gU2hvdWxkIHRoZSBzdXBwb3J0IGZvciB0aGlzIGp1c3QgYmUgZHJvcHBlZCB0b28/IEFsdGVybmF0aXZlbHksIHNvbWVvbmUgd2lsbCBuZWVkIHRvIGZpbmQgYW4gT0FCSSB0b29sY2hhaW4gdG8gdmVyaWZ5IHRoZSBlbmNvZGluZyBvZiB0aGUgbWFnaWMgZG91YmxlLgotCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gLi4uL0J1aWxkLzIwMTgtMDktMTgtMTYtMjgtMzEuYnBvLTM0NTg1LkNHTXUwaC5yc3QgfCAgMyArCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA3NiArKysrLS0tLS0tLS0tLS0tLS0tLQotIG00L2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLm00ICAgICAgICAgICAgICAgICAgIHwgODMgKysrKysrKysrKysrKysrKysrKysrKwotIDMgZmlsZXMgY2hhbmdlZCwgOTkgaW5zZXJ0aW9ucygrKSwgNjMgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IE1pc2MvTkVXUy5kL25leHQvQnVpbGQvMjAxOC0wOS0xOC0xNi0yOC0zMS5icG8tMzQ1ODUuQ0dNdTBoLnJzdAotIGNyZWF0ZSBtb2RlIDEwMDY0NCBtNC9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5tNAotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA5MTNkNTQ2OWQwLi43NjcyNzM1Mzk2IDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zODM1LDc0ICszODM1LDI0IEBAIGZpXSwKLSAjICogQ2hlY2sgZm9yIHZhcmlvdXMgcHJvcGVydGllcyBvZiBmbG9hdGluZyBwb2ludCAqCi0gIyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgotIAotLUFDX01TR19DSEVDS0lORyh3aGV0aGVyIEMgZG91YmxlcyBhcmUgbGl0dGxlLWVuZGlhbiBJRUVFIDc1NCBiaW5hcnk2NCkKLS1BQ19DQUNIRV9WQUwoYWNfY3ZfbGl0dGxlX2VuZGlhbl9kb3VibGUsIFsKLS1BQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwotLSNpbmNsdWRlIDxzdHJpbmcuaD4KLS1pbnQgbWFpbigpIHsKLS0gICAgZG91YmxlIHggPSA5MDA2MTA0MDcxODMyNTgxLjA7Ci0tICAgIGlmIChtZW1jbXAoJngsICJceDA1XHgwNFx4MDNceDAyXHgwMVx4ZmZceDNmXHg0MyIsIDgpID09IDApCi0tICAgICAgICByZXR1cm4gMDsKLS0gICAgZWxzZQotLSAgICAgICAgcmV0dXJuIDE7Ci0tfQotLV1dKV0sCi0tW2FjX2N2X2xpdHRsZV9lbmRpYW5fZG91YmxlPXllc10sCi0tW2FjX2N2X2xpdHRsZV9lbmRpYW5fZG91YmxlPW5vXSwKLS1bYWNfY3ZfbGl0dGxlX2VuZGlhbl9kb3VibGU9bm9dKV0pCi0tQUNfTVNHX1JFU1VMVCgkYWNfY3ZfbGl0dGxlX2VuZGlhbl9kb3VibGUpCi0taWYgdGVzdCAiJGFjX2N2X2xpdHRsZV9lbmRpYW5fZG91YmxlIiA9IHllcwotLXRoZW4KLS0gIEFDX0RFRklORShET1VCTEVfSVNfTElUVExFX0VORElBTl9JRUVFNzU0LCAxLAotLSAgW0RlZmluZSBpZiBDIGRvdWJsZXMgYXJlIDY0LWJpdCBJRUVFIDc1NCBiaW5hcnkgZm9ybWF0LCBzdG9yZWQKLS0gICB3aXRoIHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlIGZpcnN0XSkKLS1maQotLQotLUFDX01TR19DSEVDS0lORyh3aGV0aGVyIEMgZG91YmxlcyBhcmUgYmlnLWVuZGlhbiBJRUVFIDc1NCBiaW5hcnk2NCkKLS1BQ19DQUNIRV9WQUwoYWNfY3ZfYmlnX2VuZGlhbl9kb3VibGUsIFsKLS1BQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwotLSNpbmNsdWRlIDxzdHJpbmcuaD4KLS1pbnQgbWFpbigpIHsKLS0gICAgZG91YmxlIHggPSA5MDA2MTA0MDcxODMyNTgxLjA7Ci0tICAgIGlmIChtZW1jbXAoJngsICJceDQzXHgzZlx4ZmZceDAxXHgwMlx4MDNceDA0XHgwNSIsIDgpID09IDApCi0tICAgICAgICByZXR1cm4gMDsKLS0gICAgZWxzZQotLSAgICAgICAgcmV0dXJuIDE7Ci0tfQotLV1dKV0sCi0tW2FjX2N2X2JpZ19lbmRpYW5fZG91YmxlPXllc10sCi0tW2FjX2N2X2JpZ19lbmRpYW5fZG91YmxlPW5vXSwKLS1bYWNfY3ZfYmlnX2VuZGlhbl9kb3VibGU9bm9dKV0pCi0tQUNfTVNHX1JFU1VMVCgkYWNfY3ZfYmlnX2VuZGlhbl9kb3VibGUpCi0taWYgdGVzdCAiJGFjX2N2X2JpZ19lbmRpYW5fZG91YmxlIiA9IHllcwotK0FYX0NfRkxPQVRfV09SRFNfQklHRU5ESUFOCi0raWYgdGVzdCAiJGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuIiA9ICJ5ZXMiCi0gdGhlbgotICAgQUNfREVGSU5FKERPVUJMRV9JU19CSUdfRU5ESUFOX0lFRUU3NTQsIDEsCi0gICBbRGVmaW5lIGlmIEMgZG91YmxlcyBhcmUgNjQtYml0IElFRUUgNzU0IGJpbmFyeSBmb3JtYXQsIHN0b3JlZAotICAgIHdpdGggdGhlIG1vc3Qgc2lnbmlmaWNhbnQgYnl0ZSBmaXJzdF0pCi0tZmkKLS0KLS0jIFNvbWUgQVJNIHBsYXRmb3JtcyB1c2UgYSBtaXhlZC1lbmRpYW4gcmVwcmVzZW50YXRpb24gZm9yIGRvdWJsZXMuCi0tIyBXaGlsZSBQeXRob24gZG9lc24ndCBjdXJyZW50bHkgaGF2ZSBmdWxsIHN1cHBvcnQgZm9yIHRoZXNlIHBsYXRmb3JtcwotLSMgKHNlZSBlLmcuLCBpc3N1ZSAxNzYyNTYxKSwgd2UgY2FuIGF0IGxlYXN0IG1ha2Ugc3VyZSB0aGF0IGZsb2F0IDwtPiBzdHJpbmcKLS0jIGNvbnZlcnNpb25zIHdvcmsuCi0tQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgQyBkb3VibGVzIGFyZSBBUk0gbWl4ZWQtZW5kaWFuIElFRUUgNzU0IGJpbmFyeTY0KQotLUFDX0NBQ0hFX1ZBTChhY19jdl9taXhlZF9lbmRpYW5fZG91YmxlLCBbCi0tQUNfUlVOX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKLS0jaW5jbHVkZSA8c3RyaW5nLmg+Ci0taW50IG1haW4oKSB7Ci0tICAgIGRvdWJsZSB4ID0gOTAwNjEwNDA3MTgzMjU4MS4wOwotLSAgICBpZiAobWVtY21wKCZ4LCAiXHgwMVx4ZmZceDNmXHg0M1x4MDVceDA0XHgwM1x4MDIiLCA4KSA9PSAwKQotLSAgICAgICAgcmV0dXJuIDA7Ci0tICAgIGVsc2UKLS0gICAgICAgIHJldHVybiAxOwotLX0KLS1dXSldLAotLVthY19jdl9taXhlZF9lbmRpYW5fZG91YmxlPXllc10sCi0tW2FjX2N2X21peGVkX2VuZGlhbl9kb3VibGU9bm9dLAotLVthY19jdl9taXhlZF9lbmRpYW5fZG91YmxlPW5vXSldKQotLUFDX01TR19SRVNVTFQoJGFjX2N2X21peGVkX2VuZGlhbl9kb3VibGUpCi0taWYgdGVzdCAiJGFjX2N2X21peGVkX2VuZGlhbl9kb3VibGUiID0geWVzCi0rZWxpZiB0ZXN0ICIkYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4iID0gIm5vIgotIHRoZW4KLSsgIEFDX0RFRklORShET1VCTEVfSVNfTElUVExFX0VORElBTl9JRUVFNzU0LCAxLAotKyAgW0RlZmluZSBpZiBDIGRvdWJsZXMgYXJlIDY0LWJpdCBJRUVFIDc1NCBiaW5hcnkgZm9ybWF0LCBzdG9yZWQKLSsgICB3aXRoIHRoZSBsZWFzdCBzaWduaWZpY2FudCBieXRlIGZpcnN0XSkKLStlbHNlCi0rICAjIFNvbWUgQVJNIHBsYXRmb3JtcyB1c2UgYSBtaXhlZC1lbmRpYW4gcmVwcmVzZW50YXRpb24gZm9yIGRvdWJsZXMuCi0rICAjIFdoaWxlIFB5dGhvbiBkb2Vzbid0IGN1cnJlbnRseSBoYXZlIGZ1bGwgc3VwcG9ydCBmb3IgdGhlc2UgcGxhdGZvcm1zCi0rICAjIChzZWUgZS5nLiwgaXNzdWUgMTc2MjU2MSksIHdlIGNhbiBhdCBsZWFzdCBtYWtlIHN1cmUgdGhhdCBmbG9hdCA8LT4gc3RyaW5nCi0rICAjIGNvbnZlcnNpb25zIHdvcmsuCi0rICAjIEZMT0FUX1dPUkRTX0JJR0VORElBTiBkb2VzbnQgYWN0dWFsbHkgZGV0ZWN0IHRoaXMgY2FzZSwgYnV0IGlmIGl0J3Mgbm90IGJpZwotKyAgIyBvciBsaXR0bGUsIHRoZW4gaXQgbXVzdCBiZSB0aGlzPwotICAgQUNfREVGSU5FKERPVUJMRV9JU19BUk1fTUlYRURfRU5ESUFOX0lFRUU3NTQsIDEsCi0gICBbRGVmaW5lIGlmIEMgZG91YmxlcyBhcmUgNjQtYml0IElFRUUgNzU0IGJpbmFyeSBmb3JtYXQsIHN0b3JlZAotICAgIGluIEFSTSBtaXhlZC1lbmRpYW4gb3JkZXIgKGJ5dGUgb3JkZXIgNDU2NzAxMjMpXSkKLWRpZmYgLS1naXQgYS9tNC9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5tNCBiL200L2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLm00Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uMjE2YjkwZDgwMwotLS0tIC9kZXYvbnVsbAotKysrIGIvbTQvYXhfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4ubTQKLUBAIC0wLDAgKzEsODMgQEAKLSsjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsjICBodHRwczovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2F1dG9jb25mLWFyY2hpdmUvYXhfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4uaHRtbAotKyMgPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotKyMKLSsjIFNZTk9QU0lTCi0rIwotKyMgICBBWF9DX0ZMT0FUX1dPUkRTX0JJR0VORElBTihbQUNUSU9OLUlGLVRSVUVdLCBbQUNUSU9OLUlGLUZBTFNFXSwgW0FDVElPTi1JRi1VTktOT1dOXSkKLSsjCi0rIyBERVNDUklQVElPTgotKyMKLSsjICAgQ2hlY2tzIHRoZSBvcmRlcmluZyBvZiB3b3JkcyB3aXRoaW4gYSBtdWx0aS13b3JkIGZsb2F0LiBUaGlzIGNoZWNrIGlzCi0rIyAgIG5lY2Vzc2FyeSBiZWNhdXNlIG9uIHNvbWUgc3lzdGVtcyAoZS5nLiBjZXJ0YWluIEFSTSBzeXN0ZW1zKSwgdGhlIGZsb2F0Ci0rIyAgIHdvcmQgb3JkZXJpbmcgY2FuIGJlIGRpZmZlcmVudCBmcm9tIHRoZSBieXRlIG9yZGVyaW5nLiBJbiBhIG11bHRpLXdvcmQKLSsjICAgZmxvYXQgY29udGV4dCwgImJpZy1lbmRpYW4iIGltcGxpZXMgdGhhdCB0aGUgd29yZCBjb250YWluaW5nIHRoZSBzaWduCi0rIyAgIGJpdCBpcyBmb3VuZCBpbiB0aGUgbWVtb3J5IGxvY2F0aW9uIHdpdGggdGhlIGxvd2VzdCBhZGRyZXNzLiBUaGlzCi0rIyAgIGltcGxlbWVudGF0aW9uIHdhcyBpbnNwaXJlZCBieSB0aGUgQUNfQ19CSUdFTkRJQU4gbWFjcm8gaW4gYXV0b2NvbmYuCi0rIwotKyMgICBUaGUgZW5kaWFubmVzcyBpcyBkZXRlY3RlZCBieSBmaXJzdCBjb21waWxpbmcgQyBjb2RlIHRoYXQgY29udGFpbnMgYQotKyMgICBzcGVjaWFsIGRvdWJsZSBmbG9hdCB2YWx1ZSwgdGhlbiBncmVwcGluZyB0aGUgcmVzdWx0aW5nIG9iamVjdCBmaWxlIGZvcgotKyMgICBjZXJ0YWluIHN0cmluZ3Mgb2YgQVNDSUkgdmFsdWVzLiBUaGUgZG91YmxlIGlzIHNwZWNpYWxseSBjcmFmdGVkIHRvIGhhdmUKLSsjICAgYSBiaW5hcnkgcmVwcmVzZW50YXRpb24gdGhhdCBjb3JyZXNwb25kcyB3aXRoIGEgc2ltcGxlIHN0cmluZy4gSW4gdGhpcwotKyMgICBpbXBsZW1lbnRhdGlvbiwgdGhlIHN0cmluZyAibm9vbnNlZXMiIHdhcyBzZWxlY3RlZCBiZWNhdXNlIHRoZQotKyMgICBpbmRpdmlkdWFsIHdvcmQgdmFsdWVzICgibm9vbiIgYW5kICJzZWVzIikgYXJlIHBhbGluZHJvbWVzLCB0aHVzIG1ha2luZwotKyMgICB0aGlzIHRlc3QgYnl0ZS1vcmRlciBhZ25vc3RpYy4gSWYgZ3JlcCBmaW5kcyB0aGUgc3RyaW5nICJub29uc2VlcyIgaW4KLSsjICAgdGhlIG9iamVjdCBmaWxlLCB0aGUgdGFyZ2V0IHBsYXRmb3JtIHN0b3JlcyBmbG9hdCB3b3JkcyBpbiBiaWctZW5kaWFuCi0rIyAgIG9yZGVyLiBJZiBncmVwIGZpbmRzICJzZWVzbm9vbiIsIGZsb2F0IHdvcmRzIGFyZSBpbiBsaXR0bGUtZW5kaWFuIG9yZGVyLgotKyMgICBJZiBuZWl0aGVyIHZhbHVlIGlzIGZvdW5kLCB0aGUgdXNlciBpcyBpbnN0cnVjdGVkIHRvIHNwZWNpZnkgdGhlCi0rIyAgIG9yZGVyaW5nLgotKyMKLSsjIExJQ0VOU0UKLSsjCi0rIyAgIENvcHlyaWdodCAoYykgMjAwOCBEYW5pZWwgQW1lbGFuZyA8ZGFuQGFtZWxhbmcubmV0PgotKyMKLSsjICAgQ29weWluZyBhbmQgZGlzdHJpYnV0aW9uIG9mIHRoaXMgZmlsZSwgd2l0aCBvciB3aXRob3V0IG1vZGlmaWNhdGlvbiwgYXJlCi0rIyAgIHBlcm1pdHRlZCBpbiBhbnkgbWVkaXVtIHdpdGhvdXQgcm95YWx0eSBwcm92aWRlZCB0aGUgY29weXJpZ2h0IG5vdGljZQotKyMgICBhbmQgdGhpcyBub3RpY2UgYXJlIHByZXNlcnZlZC4gVGhpcyBmaWxlIGlzIG9mZmVyZWQgYXMtaXMsIHdpdGhvdXQgYW55Ci0rIyAgIHdhcnJhbnR5LgotKwotKyNzZXJpYWwgMTEKLSsKLStBQ19ERUZVTihbQVhfQ19GTE9BVF9XT1JEU19CSUdFTkRJQU5dLAotKyAgW0FDX0NBQ0hFX0NIRUNLKHdoZXRoZXIgZmxvYXQgd29yZCBvcmRlcmluZyBpcyBiaWdlbmRpYW4sCi0rICAgICAgICAgICAgICAgICAgYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4sIFsKLSsKLStheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbj11bmtub3duCi0rQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCi0rCi0rZG91YmxlIGQgPSA5MDkwNDIzNDk2NzAzNjgxMDMzNzQ3MDQ3ODkwNTUwNTAxMTQ3NjIxMTY5MjczNTYxNTYzMjAxNDc5NzEyMDg0NDA1MzQ4ODg2NTgxNjY5NTI3MzcyMzQ2OTA5Nzg1ODA1NjI1NzUxNzAyMDE5MTI0NzQ4NzQyOTUxNjkzMjEzMDUwMzU2MDY1MDAwMjMyNzU2NDUxNzU3MDc3ODQ4MDIzNjcyNDUyNTE0MDUyMDEyMTM3MTczOTIwMTQ5NjU0MDEzMjY0MDEwOTk3Nzc3OTQyMDU2NTc3NjU2ODk0MjU5Mi4wOwotKwotK11dKV0sIFsKLSsKLStpZiBncmVwIG5vb25zZWVzIGNvbmZ0ZXN0LiRhY19vYmpleHQgPi9kZXYvbnVsbCA7IHRoZW4KLSsgIGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuPXllcwotK2ZpCi0raWYgZ3JlcCBzZWVzbm9vbiBjb25mdGVzdC4kYWNfb2JqZXh0ID4vZGV2L251bGwgOyB0aGVuCi0rICBpZiB0ZXN0ICIkYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4iID0gdW5rbm93bjsgdGhlbgotKyAgICBheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbj1ubwotKyAgZWxzZQotKyAgICBheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbj11bmtub3duCi0rICBmaQotK2ZpCi0rCi0rXSldKQotKwotK2Nhc2UgJGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuIGluCi0rICB5ZXMpCi0rICAgIG00X2RlZmF1bHQoWyQxXSwKLSsgICAgICBbQUNfREVGSU5FKFtGTE9BVF9XT1JEU19CSUdFTkRJQU5dLCAxLAotKyAgICAgICAgICAgICAgICAgW0RlZmluZSB0byAxIGlmIHlvdXIgc3lzdGVtIHN0b3JlcyB3b3JkcyB3aXRoaW4gZmxvYXRzCi0rICAgICAgICAgICAgICAgICAgd2l0aCB0aGUgbW9zdCBzaWduaWZpY2FudCB3b3JkIGZpcnN0XSldKSA7OwotKyAgbm8pCi0rICAgICQyIDs7Ci0rICAqKQotKyAgICBtNF9kZWZhdWx0KFskM10sCi0rICAgICAgW0FDX01TR19FUlJPUihbCi0rCi0rVW5rbm93biBmbG9hdCB3b3JkIG9yZGVyaW5nLiBZb3UgbmVlZCB0byBtYW51YWxseSBwcmVzZXQKLStheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbj1ubyAob3IgeWVzKSBhY2NvcmRpbmcgdG8geW91ciBzeXN0ZW0uCi0rCi0rICAgIF0pXSkgOzsKLStlc2FjCi0rCi0rXSkjIEFYX0NfRkxPQVRfV09SRFNfQklHRU5ESUFOCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2dldF9tb2R1bGVfZGVwczIucHkgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2dldF9tb2R1bGVfZGVwczIucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDczZTdjNmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9nZXRfbW9kdWxlX2RlcHMyLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMTEyICswLDAgQEAKLSMgVGhpcyBzY3JpcHQgaXMgbGF1bmNoZWQgb24gc2VwYXJhdGUgdGFzayBmb3IgZWFjaCBweXRob24gbW9kdWxlCi0jIEl0IGNoZWNrcyBmb3IgZGVwZW5kZW5jaWVzIGZvciB0aGF0IHNwZWNpZmljIG1vZHVsZSBhbmQgcHJpbnRzIAotIyB0aGVtIG91dCwgdGhlIG91dHB1dCBvZiB0aGlzIGV4ZWN1dGlvbiB3aWxsIGhhdmUgYWxsIGRlcGVuZGVuY2llcwotIyBmb3IgYSBzcGVjaWZpYyBtb2R1bGUsIHdoaWNoIHdpbGwgYmUgcGFyc2VkIGFuIGRlYWx0IG9uIGNyZWF0ZV9tYW5pZmVzdC5weQotIwotIyBBdXRob3I6IEFsZWphbmRybyBFbmVkaW5vIEhlcm5hbmRleiBTYW1hbmllZ28gImFlaHMyOSIgPGFlaHMyOUBnbWFpbC5jb20+Ci0KLQotIyBXZSBjYW4gZ2V0IGEgbG9nIHBlciBtb2R1bGUsIGZvciBhbGwgdGhlIGRlcGVuZGVuY2llcyB0aGF0IHdlcmUgZm91bmQsIGJ1dCBpdHMgbWVzc3kuCi1kZWJ1Zz1GYWxzZQotCi1pbXBvcnQgc3lzCi0KLSMgV2UgY2FuIGdldCBhIGxpc3Qgb2YgdGhlIG1vZHVsZXMgd2hpY2ggYXJlIGN1cnJlbnRseSByZXF1aXJlZCB0byBydW4gcHl0aG9uCi0jIHNvIHdlIHJ1biBweXRob24tY29yZSBhbmQgZ2V0IGl0cyBtb2R1bGVzLCB3ZSB0aGVuIGltcG9ydCB3aGF0IHdlIG5lZWQKLSMgYW5kIGNoZWNrIHdoYXQgbW9kdWxlcyBhcmUgY3VycmVudGx5IHJ1bm5pbmcsIGlmIHdlIHN1YnN0cmFjdCB0aGVtIGZyb20gdGhlCi0jIG1vZHVsZXMgd2UgaGFkIGluaXRpYWxseSwgd2UgZ2V0IHRoZSBkZXBlbmRlbmNpZXMgZm9yIHRoZSBtb2R1bGUgd2UgaW1wb3J0ZWQuCi0KLSMgV2UgdXNlIGltcG9ydGxpYiB0byBhY2hpZXZlIHRoaXMsIHNvIHdlIGFsc28gbmVlZCB0byBrbm93IHdoYXQgbW9kdWxlcyBpbXBvcnRsaWIgbmVlZHMKLWltcG9ydCBpbXBvcnRsaWIKLQotY29yZV9kZXBzPXNldChzeXMubW9kdWxlcykKLQotZGVmIGZpeF9wYXRoKGRlcF9wYXRoKToKLSAgICBpbXBvcnQgb3MKLSAgICAjIFdlIERPTlQgd2FudCB0aGUgcGF0aCBvbiBvdXIgSE9TVCBzeXN0ZW0KLSAgICBwaXZvdD0ncmVjaXBlLXN5c3Jvb3QtbmF0aXZlJwotICAgIGRlcF9wYXRoPWRlcF9wYXRoW2RlcF9wYXRoLmZpbmQocGl2b3QpK2xlbihwaXZvdCk6XQotCi0gICAgaWYgJy91c3IvYmluJyBpbiBkZXBfcGF0aDoKLSAgICAgICAgZGVwX3BhdGggPSBkZXBfcGF0aC5yZXBsYWNlKCcvdXNyL2JpbicnJHtiaW5kaXJ9JykKLQotICAgICMgSGFuZGxlIG11bHRpbGliLCBpcyB0aGVyZSBhIGJldHRlciB3YXk/Ci0gICAgaWYgJy91c3IvbGliMzInIGluIGRlcF9wYXRoOgotICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy91c3IvbGliMzInLCcke2xpYmRpcn0nKQotICAgIGlmICcvdXNyL2xpYjY0JyBpbiBkZXBfcGF0aDoKLSAgICAgICAgZGVwX3BhdGggPSBkZXBfcGF0aC5yZXBsYWNlKCcvdXNyL2xpYjY0JywnJHtsaWJkaXJ9JykKLSAgICBpZiAnL3Vzci9saWInIGluIGRlcF9wYXRoOgotICAgICAgICBkZXBfcGF0aCA9IGRlcF9wYXRoLnJlcGxhY2UoJy91c3IvbGliJywnJHtsaWJkaXJ9JykKLSAgICBpZiAnL3Vzci9pbmNsdWRlJyBpbiBkZXBfcGF0aDoKLSAgICAgICAgZGVwX3BhdGggPSBkZXBfcGF0aC5yZXBsYWNlKCcvdXNyL2luY2x1ZGUnLCcke2luY2x1ZGVkaXJ9JykKLSAgICBpZiAnX19pbml0X18uJyBpbiBkZXBfcGF0aDoKLSAgICAgICAgZGVwX3BhdGggPSAgb3MucGF0aC5zcGxpdChkZXBfcGF0aClbMF0KLQotICAgICMgSWYgYSAqLnB5YyBmaWxlIHdhcyBpbXBvcnRlZCwgd2UgcmVwbGFjZSBpdCB3aXRoICoucHkgKHNpbmNlIHdlIGRlYWwgd2l0aCBQWUNzIG9uIGNyZWF0ZV9tYW5pZmVzdCkKLSAgICBpZiAnLnB5YycgaW4gZGVwX3BhdGg6Ci0gICAgICAgIGRlcF9wYXRoID0gZGVwX3BhdGgucmVwbGFjZSgnLnB5YycsJy5weScpCi0KLSAgICByZXR1cm4gZGVwX3BhdGgKLQotIyBNb2R1bGUgdG8gaW1wb3J0IHdhcyBwYXNzZWQgYXMgYW4gYXJndW1lbnQKLWN1cnJlbnRfbW9kdWxlID0gIHN0cihzeXMuYXJndlsxXSkucnN0cmlwKCkKLWlmKGRlYnVnPT1UcnVlKToKLQlsb2cgPSBvcGVuKCdsb2dfJXMnICUgY3VycmVudF9tb2R1bGUsJ3cnKQotICAgICAgICBsb2cud3JpdGUoJ01vZHVsZSAlcyBnZW5lcmF0ZWQgdGhlIGZvbGxvd2luZyBkZXBlbmRlbmNpZXM6XG4nICUgY3VycmVudF9tb2R1bGUpCi10cnk6Ci0gICAgaW1wb3J0bGliLmltcG9ydF9tb2R1bGUoJyVzJyAlIGN1cnJlbnRfbW9kdWxlKQotZXhjZXB0IEltcG9ydEVycm9yIGFzIGU6Ci0gICAgaWYgKGRlYnVnPT1UcnVlKToKLSAgICAgICAgbG9nLndyaXRlKCdNb2R1bGUgd2FzIG5vdCBmb3VuZCcpCi0gICAgcGFzcwotCi0KLSMgR2V0IGN1cnJlbnQgbW9kdWxlIGRlcGVuZGVuY2llcywgZGlmIHdpbGwgY29udGFpbiBhIGxpc3Qgb2Ygc3BlY2lmaWMgZGVwcyBmb3IgdGhpcyBtb2R1bGUKLW1vZHVsZV9kZXBzPXNldChzeXMubW9kdWxlcykKLQotIyBXZSBoYW5kbGUgdGhlIGNvcmUgcGFja2FnZSAoMXN0IHBhc3Mgb24gY3JlYXRlX21hbmlmZXN0LnB5KSBhcyBhIHNwZWNpYWwgY2FzZQotaWYgY3VycmVudF9tb2R1bGUgPT0gJ3B5dGhvbi1jb3JlLXBhY2thZ2UnOgotICAgIGRpZiA9IGNvcmVfZGVwcwotZWxzZToKLSAgICBkaWYgPSBtb2R1bGVfZGVwcy1jb3JlX2RlcHMKLQotCi0jIENoZWNrIHdoZXJlIGVhY2ggZGVwZW5kZW5jeSBjYW1lIGZyb20KLWZvciBpdGVtIGluIGRpZjoKLSAgICBkZXBfcGF0aD0nJwotICAgIHRyeToKLSAgICAgICAgaWYgKGRlYnVnPT1UcnVlKToKLSAgICAgICAgICAgIGxvZy53cml0ZSgnQ2FsbGluZzogc3lzLm1vZHVsZXNbJyArICclcycgJSBpdGVtICsgJ10uX19maWxlX19cbicpCi0gICAgICAgIGRlcF9wYXRoID0gc3lzLm1vZHVsZXNbJyVzJyAlIGl0ZW1dLl9fZmlsZV9fCi0gICAgZXhjZXB0IEF0dHJpYnV0ZUVycm9yIGFzIGU6Ci0gICAgICAgICMgRGVhbHMgd2l0aCB0aHJlYWQgKGJ1aWx0aW4gbW9kdWxlKSBub3QgaGF2aW5nIF9fZmlsZV9fIGF0dHJpYnV0ZQotCWlmIGRlYnVnPT1UcnVlOgotICAgICAgICAgICAgbG9nLndyaXRlKGl0ZW0gKyAnICcpCi0gICAgICAgICAgICBsb2cud3JpdGUoc3RyKGUpKQotCSAgICBsb2cud3JpdGUoJ1xuJykKLSAgICAgICAgICAgIHBhc3MKLSAgICBleGNlcHQgTmFtZUVycm9yIGFzIGU6Ci0gICAgICAgICMgRGVhbHMgd2l0aCBOYW1lRXJyb3I6IG5hbWUgJ2RlcF9wYXRoJyBpcyBub3QgZGVmaW5lZAotICAgICAgICAjIGJlY2F1c2UgbW9kdWxlIGlzIG5vdCBmb3VuZCAod2Fzbid0IGNvbXBpbGVkPyksIGUuZy4gYmRkc20KLSAgICAgICAgaWYgKGRlYnVnPT1UcnVlKToKLSAgICAgICAgICAgIGxvZy53cml0ZShpdGVtKycgJykgCi0gICAgICAgICAgICBsb2cud3JpdGUoc3RyKGUpKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgcGFzcwotCi0gICAgIyBTaXRlLWN1c3RvbWl6ZSBpcyBhIHNwZWNpYWwgY2FzZSBzaW5jZSB3ZSAoT3BlbkVtYmVkZGVkKSBwdXQgaXQgdGhlcmUgbWFudWFsbHkKLSAgICBpZiAnc2l0ZWN1c3RvbWl6ZScgaW4gZGVwX3BhdGg6Ci0gICAgICAgIGRlcF9wYXRoID0gJyR7bGliZGlyfS9weXRob24yLjcvc2l0ZWN1c3RvbWl6ZS5weScKLSAgICAgICAgIyBQcmludHMgb3V0IHJlc3VsdCwgd2hpY2ggaXMgd2hhdCB3aWxsIGJlIHVzZWQgYnkgY3JlYXRlX21hbmlmZXN0Ci0gICAgICAgIHByaW50IChkZXBfcGF0aCkKLSAgICAgICAgY29udGludWUKLQotICAgIGRlcF9wYXRoID0gZml4X3BhdGgoZGVwX3BhdGgpCi0KLSAgICBpZiAoZGVidWc9PVRydWUpOgotICAgICAgICBsb2cud3JpdGUoZGVwX3BhdGgrJ1xuJykKLQotICAgICMgUHJpbnRzIG91dCByZXN1bHQsIHdoaWNoIGlzIHdoYXQgd2lsbCBiZSB1c2VkIGJ5IGNyZWF0ZV9tYW5pZmVzdAotICAgIHByaW50IChkZXBfcGF0aCkKLQotaWYgZGVidWc9PVRydWU6Ci0gICAgbG9nLmNsb3NlKCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vaG9zdF9pbmNsdWRlX2NvbnRhbWluYXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL2hvc3RfaW5jbHVkZV9jb250YW1pbmF0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMGFhZmIyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vaG9zdF9pbmNsdWRlX2NvbnRhbWluYXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi13aGVuIGJ1aWxkaW5nIHB5dGhvbiBmb3IgcWVtdXg4Ni02NCBvbiB1YnVudHUgMTEuMTAvNjRiaXQKLWl0IGdyb3BlcyBpbnRvIGhvc3QgaW5jbHVkZXMgYW5kIHRoZW4gbWl4ZXMgdGhlbSB3aXRoIGNyb3NzCi1pbmNsdWRlcyBhbmQgYXMgYSByZXN1bHQgc29tZSBtb2R1bGVzIGZhaWwgdG8gY29tcGlsZSBhbmQgbGluawotb25lIG9mIHRoZSBtb2R1bGVzIGlzIHB5dGhvbi1lbGVtZW50dHJlZSB3aGljaCBpcyB0aGVuIG5vdAotZm91bmQgZHVyaW5nIGltYWdlIGNyZWF0aW9uCi0KLVByb2JsZSBpcyB0aGF0IHNldHVwLnB5IHRyaWVzIHRvIGFkZCBuYXRpdmUgaW5jbHVkZXMgdGhhdCBuZXdlcgotdWJ1bnR1IGhhcyBpbnRyb2R1Y2VkIGZvciBtdWx0aWFyY2ggc3VwcG9ydC4gQnV0IHRoYXQgc2hvdWxkCi1vbmx5IGhhcHBlbiBmb3IgbmF0aXZlIGJ1aWxkcyBhbmQgbm90IGNyb3NzIGJ1aWxkaW5nIHB5dGhvbgotc28gd2UgYWRkIGEgY2hlY2sgaGVyZS4KLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0KLWRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5Ci1pbmRleCBiYTJkMjQyLi5iZjg1OWJlIDEwMDY0NAotLS0tIGEvc2V0dXAucHkKLSsrKyBiL3NldHVwLnB5Ci1AQCAtMzkzLDYgKzM5Myw4IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAKLSAgICAgICAgIGlmIG5vdCBmaW5kX2V4ZWN1dGFibGUoJ2Rwa2ctYXJjaGl0ZWN0dXJlJyk6Ci0gICAgICAgICAgICAgcmV0dXJuCi0rICAgICAgICBpZiBvcy5lbnZpcm9uLmdldCgnQ1JPU1NfQ09NUElMRScpIGlzIG5vdCBOb25lOgotKyAgICAgICAgICAgIHJldHVybgotICAgICAgICAgb3B0ID0gJycKLSAgICAgICAgIGlmIGNyb3NzX2NvbXBpbGluZzoKLSAgICAgICAgICAgICBvcHQgPSAnLXQnICsgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdIT1NUX0dOVV9UWVBFJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vbXVsdGlsaWIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL211bHRpbGliLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjRiYzE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vbXVsdGlsaWIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOTggKzAsMCBAQAotUmViYXNlZCBmb3IgcHl0aG9uLTIuNy45Ci1TaWduZWQtb2ZmLWJ5OiBBbGVqYW5kcm8gSGVybmFuZGV6IDxhbGVqYW5kcm8uaGVybmFuZGV6QGxpbnV4LmludGVsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotSW5kZXg6IFB5dGhvbi0yLjcuMTQvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIFB5dGhvbi0yLjcuMTQvY29uZmlndXJlLmFjCi1AQCAtNzU4LDYgKzc1OCwxMCBAQCBTdW5PUyopCi0gICAgIDs7Ci0gZXNhYwotIAotK0FDX1NVQlNUKExJQikKLStBQ19NU0dfQ0hFQ0tJTkcoTElCKQotK0xJQj0iU0VETUVMSUJMRUFGIgotK0FDX01TR19SRVNVTFQoJExJQikKLSAKLSBBQ19TVUJTVChMSUJSQVJZKQotIEFDX01TR19DSEVDS0lORyhMSUJSQVJZKQotSW5kZXg6IFB5dGhvbi0yLjcuMTQvSW5jbHVkZS9weXRob25ydW4uaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9JbmNsdWRlL3B5dGhvbnJ1bi5oCi0rKysgUHl0aG9uLTIuNy4xNC9JbmNsdWRlL3B5dGhvbnJ1bi5oCi1AQCAtMTA4LDYgKzEwOCw3IEBAIFB5QVBJX0ZVTkMoY2hhciAqKSBQeV9HZXRQYXRoKHZvaWQpOwotIC8qIEluIHRoZWlyIG93biBmaWxlcyAqLwotIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRWZXJzaW9uKHZvaWQpOwotIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRQbGF0Zm9ybSh2b2lkKTsKLStQeUFQSV9GVU5DKGNvbnN0IGNoYXIgKikgUHlfR2V0TGliKHZvaWQpOwotIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRDb3B5cmlnaHQodm9pZCk7Ci0gUHlBUElfRlVOQyhjb25zdCBjaGFyICopIFB5X0dldENvbXBpbGVyKHZvaWQpOwotIFB5QVBJX0ZVTkMoY29uc3QgY2hhciAqKSBQeV9HZXRCdWlsZEluZm8odm9pZCk7Ci1JbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weQotKysrIFB5dGhvbi0yLjcuMTQvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKLUBAIC0yMiw2ICsyMiw4IEBAIGZyb20gc2l0ZSBpbXBvcnQgVVNFUl9CQVNFCi0gZnJvbSBzaXRlIGltcG9ydCBVU0VSX1NJVEUKLSAKLSAKLStsaWJuYW1lID0gc3lzLmxpYgotKwotIGlmIHN5cy52ZXJzaW9uIDwgIjIuMiI6Ci0gICAgIFdJTkRPV1NfU0NIRU1FID0gewotICAgICAgICAgJ3B1cmVsaWInOiAnJGJhc2UnLAotQEAgLTQxLDggKzQzLDggQEAgZWxzZToKLSAKLSBJTlNUQUxMX1NDSEVNRVMgPSB7Ci0gICAgICd1bml4X3ByZWZpeCc6IHsKLS0gICAgICAgICdwdXJlbGliJzogJyRiYXNlL2xpYi9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKLS0gICAgICAgICdwbGF0bGliJzogJyRwbGF0YmFzZS9saWIvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCi0rICAgICAgICAncHVyZWxpYic6ICckcGxhdGJhc2UvJytsaWJuYW1lKycvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCi0rICAgICAgICAncGxhdGxpYic6ICckcGxhdGJhc2UvJytsaWJuYW1lKycvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCi0gICAgICAgICAnaGVhZGVycyc6ICckYmFzZS9pbmNsdWRlL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0LyRkaXN0X25hbWUnLAotICAgICAgICAgJ3NjcmlwdHMnOiAnJGJhc2UvYmluJywKLSAgICAgICAgICdkYXRhJyAgIDogJyRiYXNlJywKLUluZGV4OiBQeXRob24tMi43LjE0L0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotQEAgLTExOSw4ICsxMTksMTEgQEAgZGVmIGdldF9weXRob25fbGliKHBsYXRfc3BlY2lmaWM9MCwgc3RhbgotICAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgRVhFQ19QUkVGSVggb3IgUFJFRklYCi0gCi0gICAgIGlmIG9zLm5hbWUgPT0gInBvc2l4IjoKLS0gICAgICAgIGxpYnB5dGhvbiA9IG9zLnBhdGguam9pbihwcmVmaXgsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgImxpYiIsICJweXRob24iICsgZ2V0X3B5dGhvbl92ZXJzaW9uKCkpCi0rICAgICAgICBpZiBwbGF0X3NwZWNpZmljIG9yIHN0YW5kYXJkX2xpYjoKLSsgICAgICAgICAgICBsaWIgPSBzeXMubGliCi0rICAgICAgICBlbHNlOgotKyAgICAgICAgICAgIGxpYiA9ICJsaWIiCi0rICAgICAgICBsaWJweXRob24gPSBvcy5wYXRoLmpvaW4ocHJlZml4LCBsaWIsICJweXRob24iICsgZ2V0X3B5dGhvbl92ZXJzaW9uKCkpCi0gICAgICAgICBpZiBzdGFuZGFyZF9saWI6Ci0gICAgICAgICAgICAgcmV0dXJuIGxpYnB5dGhvbgotICAgICAgICAgZWxzZToKLUluZGV4OiBQeXRob24tMi43LjE0L0xpYi9weWRvYy5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvcHlkb2MucHkKLSsrKyBQeXRob24tMi43LjE0L0xpYi9weWRvYy5weQotQEAgLTM3NSw3ICszNzUsNyBAQCBjbGFzcyBEb2M6Ci0gICAgIGRvY21vZHVsZSA9IGRvY2NsYXNzID0gZG9jcm91dGluZSA9IGRvY290aGVyID0gZG9jcHJvcGVydHkgPSBkb2NkYXRhID0gZmFpbAotIAotICAgICBkZWYgZ2V0ZG9jbG9jKHNlbGYsIG9iamVjdCwKLS0gICAgICAgICAgICAgICAgICBiYXNlZGlyPW9zLnBhdGguam9pbihzeXMuZXhlY19wcmVmaXgsICJsaWIiLAotKyAgICAgICAgICAgICAgICAgIGJhc2VkaXI9b3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgInN5cy5saWIiLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iK3N5cy52ZXJzaW9uWzA6M10pKToKLSAgICAgICAgICIiIlJldHVybiB0aGUgbG9jYXRpb24gb2YgbW9kdWxlIGRvY3Mgb3IgTm9uZSIiIgotIAotSW5kZXg6IFB5dGhvbi0yLjcuMTQvTGliL3NpdGUucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3NpdGUucHkKLSsrKyBQeXRob24tMi43LjE0L0xpYi9zaXRlLnB5Ci1AQCAtMjg4LDEzICsyODgsMTggQEAgZGVmIGdldHNpdGVwYWNrYWdlcygpOgotICAgICAgICAgaWYgc3lzLnBsYXRmb3JtIGluICgnb3MyZW14JywgJ3Jpc2NvcycpOgotICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgIkxpYiIsICJzaXRlLXBhY2thZ2VzIikpCi0gICAgICAgICBlbGlmIG9zLnNlcCA9PSAnLyc6Ci0tICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAibGliIiwKLSsgICAgICAgICAgICBzaXRlcGFja2FnZXMuYXBwZW5kKG9zLnBhdGguam9pbihwcmVmaXgsIHN5cy5saWIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAic2l0ZS1wYWNrYWdlcyIpKQotLSAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsICJzaXRlLXB5dGhvbiIpKQotKyAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgc3lzLmxpYiwgInNpdGUtcHl0aG9uIikpCi0rICAgICAgICAgICAgaWYgc3lzLmxpYiAhPSAibGliIjoKLSsgICAgICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAibGliIiwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJweXRob24iICsgc3lzLnZlcnNpb25bOjNdLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInNpdGUtcGFja2FnZXMiKSkKLSsgICAgICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCAibGliIiwgInNpdGUtcHl0aG9uIikpCi0gICAgICAgICBlbHNlOgotICAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQocHJlZml4KQotLSAgICAgICAgICAgIHNpdGVwYWNrYWdlcy5hcHBlbmQob3MucGF0aC5qb2luKHByZWZpeCwgImxpYiIsICJzaXRlLXBhY2thZ2VzIikpCi0rICAgICAgICAgICAgc2l0ZXBhY2thZ2VzLmFwcGVuZChvcy5wYXRoLmpvaW4ocHJlZml4LCBzeXMubGliLCAic2l0ZS1wYWNrYWdlcyIpKQotICAgICByZXR1cm4gc2l0ZXBhY2thZ2VzCi0gCi0gZGVmIGFkZHNpdGVwYWNrYWdlcyhrbm93bl9wYXRocyk6Ci1JbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvc3lzY29uZmlnLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi9zeXNjb25maWcucHkKLSsrKyBQeXRob24tMi43LjE0L0xpYi9zeXNjb25maWcucHkKLUBAIC03LDEwICs3LDEwIEBAIGZyb20gb3MucGF0aCBpbXBvcnQgcGFyZGlyLCByZWFscGF0aAotIAotIF9JTlNUQUxMX1NDSEVNRVMgPSB7Ci0gICAgICdwb3NpeF9wcmVmaXgnOiB7Ci0tICAgICAgICAnc3RkbGliJzogJ3tiYXNlfS9saWIvcHl0aG9ue3B5X3ZlcnNpb25fc2hvcnR9JywKLS0gICAgICAgICdwbGF0c3RkbGliJzogJ3twbGF0YmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0rICAgICAgICAnc3RkbGliJzogJ3tiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotKyAgICAgICAgJ3BsYXRzdGRsaWInOiAne3BsYXRiYXNlfS8nK3N5cy5saWIrJy9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAgJ3B1cmVsaWInOiAne2Jhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0tICAgICAgICAncGxhdGxpYic6ICd7cGxhdGJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0rICAgICAgICAncGxhdGxpYic6ICd7cGxhdGJhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKLSAgICAgICAgICdpbmNsdWRlJzogJ3tiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0gICAgICAgICAncGxhdGluY2x1ZGUnOiAne3BsYXRiYXNlfS9pbmNsdWRlL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0gICAgICAgICAnc2NyaXB0cyc6ICd7YmFzZX0vYmluJywKLUBAIC02NSwxMCArNjUsMTAgQEAgX0lOU1RBTExfU0NIRU1FUyA9IHsKLSAgICAgICAgICdkYXRhJyAgIDogJ3t1c2VyYmFzZX0nLAotICAgICAgICAgfSwKLSAgICAgJ3Bvc2l4X3VzZXInOiB7Ci0tICAgICAgICAnc3RkbGliJzogJ3t1c2VyYmFzZX0vbGliL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0tICAgICAgICAncGxhdHN0ZGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotKyAgICAgICAgJ3N0ZGxpYic6ICd7dXNlcmJhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0rICAgICAgICAncGxhdHN0ZGxpYic6ICd7dXNlcmJhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fScsCi0gICAgICAgICAncHVyZWxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0tICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9L2xpYi9weXRob257cHlfdmVyc2lvbl9zaG9ydH0vc2l0ZS1wYWNrYWdlcycsCi0rICAgICAgICAncGxhdGxpYic6ICd7dXNlcmJhc2V9Lycrc3lzLmxpYisnL3B5dGhvbntweV92ZXJzaW9uX3Nob3J0fS9zaXRlLXBhY2thZ2VzJywKLSAgICAgICAgICdpbmNsdWRlJzogJ3t1c2VyYmFzZX0vaW5jbHVkZS9weXRob257cHlfdmVyc2lvbl9zaG9ydH0nLAotICAgICAgICAgJ3NjcmlwdHMnOiAne3VzZXJiYXNlfS9iaW4nLAotICAgICAgICAgJ2RhdGEnICAgOiAne3VzZXJiYXNlfScsCi1JbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvdGVzdC90ZXN0X2RsLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xNC5vcmlnL0xpYi90ZXN0L3Rlc3RfZGwucHkKLSsrKyBQeXRob24tMi43LjE0L0xpYi90ZXN0L3Rlc3RfZGwucHkKLUBAIC00LDEwICs0LDExIEBACi0gaW1wb3J0IHVuaXR0ZXN0Ci0gZnJvbSB0ZXN0LnRlc3Rfc3VwcG9ydCBpbXBvcnQgdmVyYm9zZSwgaW1wb3J0X21vZHVsZQotIGRsID0gaW1wb3J0X21vZHVsZSgnZGwnLCBkZXByZWNhdGVkPVRydWUpCi0raW1wb3J0IHN5cwotIAotIHNoYXJlZGxpYnMgPSBbCi0tICAgICgnL3Vzci9saWIvbGliYy5zbycsICdnZXRwaWQnKSwKLS0gICAgKCcvbGliL2xpYmMuc28uNicsICdnZXRwaWQnKSwKLSsgICAgKCcvdXNyLycrc3lzLmxpYisnL2xpYmMuc28nLCAnZ2V0cGlkJyksCi0rICAgICgnLycrc3lzLmxpYisnL2xpYmMuc28uNicsICdnZXRwaWQnKSwKLSAgICAgKCcvdXNyL2Jpbi9jeWd3aW4xLmRsbCcsICdnZXRwaWQnKSwKLSAgICAgKCcvdXNyL2xpYi9saWJjLmR5bGliJywgJ2dldHBpZCcpLAotICAgICBdCi1JbmRleDogUHl0aG9uLTIuNy4xNC9MaWIvdGVzdC90ZXN0X3NpdGUucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvTGliL3Rlc3QvdGVzdF9zaXRlLnB5Ci0rKysgUHl0aG9uLTIuNy4xNC9MaWIvdGVzdC90ZXN0X3NpdGUucHkKLUBAIC0yNTIsMTIgKzI1MiwxNiBAQCBjbGFzcyBIZWxwZXJGdW5jdGlvbnNUZXN0cyh1bml0dGVzdC5UZXN0Ci0gICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXJzWzBdLCB3YW50ZWQpCi0gICAgICAgICBlbGlmIG9zLnNlcCA9PSAnLyc6Ci0gICAgICAgICAgICAgIyBPUyBYLCBMaW51eCwgRnJlZUJTRCwgZXRjCi0tICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChsZW4oZGlycyksIDIpCi0gICAgICAgICAgICAgd2FudGVkID0gb3MucGF0aC5qb2luKCd4b3hvJywgJ2xpYicsICdweXRob24nICsgc3lzLnZlcnNpb25bOjNdLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnc2l0ZS1wYWNrYWdlcycpCi0tICAgICAgICAgICAgc2VsZi5hc3NlcnRFcXVhbChkaXJzWzBdLCB3YW50ZWQpCi0rICAgICAgICAgICAgc2VsZi5hc3NlcnRUcnVlKHdhbnRlZCBpbiBkaXJzKQotICAgICAgICAgICAgIHdhbnRlZCA9IG9zLnBhdGguam9pbigneG94bycsICdsaWInLCAnc2l0ZS1weXRob24nKQotLSAgICAgICAgICAgIHNlbGYuYXNzZXJ0RXF1YWwoZGlyc1sxXSwgd2FudGVkKQotKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3YW50ZWQgaW4gZGlycykKLSsgICAgICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oJ3hveG8nLCBzeXMubGliLCAncHl0aG9uJyArIHN5cy52ZXJzaW9uWzozXSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3NpdGUtcGFja2FnZXMnKQotKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3YW50ZWQgaW4gZGlycykKLSsgICAgICAgICAgICB3YW50ZWQgPSBvcy5wYXRoLmpvaW4oJ3hveG8nLCBzeXMubGliLCAnc2l0ZS1weXRob24nKQotKyAgICAgICAgICAgIHNlbGYuYXNzZXJ0VHJ1ZSh3YW50ZWQgaW4gZGlycykKLSAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgIyBvdGhlciBwbGF0Zm9ybXMKLSAgICAgICAgICAgICBzZWxmLmFzc2VydEVxdWFsKGxlbihkaXJzKSwgMikKLUluZGV4OiBQeXRob24tMi43LjE0L0xpYi90cmFjZS5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9MaWIvdHJhY2UucHkKLSsrKyBQeXRob24tMi43LjE0L0xpYi90cmFjZS5weQotQEAgLTc1NCwxMCArNzU0LDEwIEBAIGRlZiBtYWluKGFyZ3Y9Tm9uZSk6Ci0gICAgICAgICAgICAgICAgICMgc2hvdWxkIEkgYWxzbyBjYWxsIGV4cGFuZHVzZXI/IChhZnRlciBhbGwsIGNvdWxkIHVzZSAkSE9NRSkKLSAKLSAgICAgICAgICAgICAgICAgcyA9IHMucmVwbGFjZSgiJHByZWZpeCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5wcmVmaXgsICJsaWIiLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLnBhdGguam9pbihzeXMucHJlZml4LCBzeXMubGliLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAicHl0aG9uIiArIHN5cy52ZXJzaW9uWzozXSkpCi0gICAgICAgICAgICAgICAgIHMgPSBzLnJlcGxhY2UoIiRleGVjX3ByZWZpeCIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgImxpYiIsCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKHN5cy5leGVjX3ByZWZpeCwgc3lzLmxpYiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgInB5dGhvbiIgKyBzeXMudmVyc2lvbls6M10pKQotICAgICAgICAgICAgICAgICBzID0gb3MucGF0aC5ub3JtcGF0aChzKQotICAgICAgICAgICAgICAgICBpZ25vcmVfZGlycy5hcHBlbmQocykKLUluZGV4OiBQeXRob24tMi43LjE0L01ha2VmaWxlLnByZS5pbgotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9NYWtlZmlsZS5wcmUuaW4KLSsrKyBQeXRob24tMi43LjE0L01ha2VmaWxlLnByZS5pbgotQEAgLTkxLDYgKzkxLDcgQEAgUFlfQ0ZMQUdTPQkkKENGTEFHUykgJChDUFBGTEFHUykgJChDRkxBRwotIAotICMgTWFjaGluZS1kZXBlbmRlbnQgc3ViZGlyZWN0b3JpZXMKLSBNQUNIREVQPQlATUFDSERFUEAKLStMSUI9CQlATElCQAotIAotICMgTXVsdGlhcmNoIGRpcmVjdG9yeSAobWF5IGJlIGVtcHR5KQotIE1VTFRJQVJDSD0JQE1VTFRJQVJDSEAKLUBAIC0xMTAsNyArMTExLDcgQEAgTElCRElSPQkJQGxpYmRpckAKLSBNQU5ESVI9CQlAbWFuZGlyQAotIElOQ0xVREVESVI9CUBpbmNsdWRlZGlyQAotIENPTkZJTkNMVURFRElSPQkkKGV4ZWNfcHJlZml4KS9pbmNsdWRlCi0tU0NSSVBURElSPQkkKHByZWZpeCkvbGliCi0rU0NSSVBURElSPQkkKHByZWZpeCkvQExJQkAKLSAKLSAjIERldGFpbGVkIGRlc3RpbmF0aW9uIGRpcmVjdG9yaWVzCi0gQklOTElCREVTVD0JJChMSUJESVIpL3B5dGhvbiQoVkVSU0lPTikKLUBAIC02NDUsNiArNjQ2LDcgQEAgTW9kdWxlcy9nZXRwYXRoLm86ICQoc3JjZGlyKS9Nb2R1bGVzL2dldAotIAkJLURFWEVDX1BSRUZJWD0nIiQoZXhlY19wcmVmaXgpIicgXAotIAkJLURWRVJTSU9OPSciJChWRVJTSU9OKSInIFwKLSAJCS1EVlBBVEg9JyIkKFZQQVRIKSInIFwKLSsJCS1ETElCPSciJChMSUIpIicgXAotIAkJLW8gJEAgJChzcmNkaXIpL01vZHVsZXMvZ2V0cGF0aC5jCi0gCi0gTW9kdWxlcy9weXRob24ubzogJChzcmNkaXIpL01vZHVsZXMvcHl0aG9uLmMKLUBAIC02OTMsNyArNjk1LDcgQEAgcmVnZW4tYXN0OgotIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdC5vOiAkKHNyY2RpcikvSW5jbHVkZS9ncmFtaW5pdC5oICQoc3JjZGlyKS9JbmNsdWRlL1B5dGhvbi1hc3QuaAotIAotIFB5dGhvbi9nZXRwbGF0Zm9ybS5vOiAkKHNyY2RpcikvUHl0aG9uL2dldHBsYXRmb3JtLmMKLS0JCSQoQ0MpIC1jICQoUFlfQ0ZMQUdTKSAtRFBMQVRGT1JNPSciJChNQUNIREVQKSInIC1vICRAICQoc3JjZGlyKS9QeXRob24vZ2V0cGxhdGZvcm0uYwotKwkJJChDQykgLWMgJChQWV9DRkxBR1MpIC1EUExBVEZPUk09JyIkKE1BQ0hERVApIicgLURMSUI9JyIkKExJQikiJyAtbyAkQCAkKHNyY2RpcikvUHl0aG9uL2dldHBsYXRmb3JtLmMKLSAKLSBQeXRob24vaW1wb3J0ZGwubzogJChzcmNkaXIpL1B5dGhvbi9pbXBvcnRkbC5jCi0gCQkkKENDKSAtYyAkKFBZX0NGTEFHUykgLUkkKERMSU5DTERJUikgLW8gJEAgJChzcmNkaXIpL1B5dGhvbi9pbXBvcnRkbC5jCi1JbmRleDogUHl0aG9uLTIuNy4xNC9Nb2R1bGVzL2dldHBhdGguYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMTQub3JpZy9Nb2R1bGVzL2dldHBhdGguYwotKysrIFB5dGhvbi0yLjcuMTQvTW9kdWxlcy9nZXRwYXRoLmMKLUBAIC0xMDAsNiArMTAwLDEzIEBACi0gI2Vycm9yICJQUkVGSVgsIEVYRUNfUFJFRklYLCBWRVJTSU9OLCBhbmQgVlBBVEggbXVzdCBiZSBjb25zdGFudCBkZWZpbmVkIgotICNlbmRpZgotIAotKyNkZWZpbmUgTElCX1BZVEhPTiBMSUIgIi9weXRob24iIFZFUlNJT04KLSsKLSsjaWZuZGVmIFBZVEhPTlBBVEgKLSsjZGVmaW5lIFBZVEhPTlBBVEggUFJFRklYICIvIiBMSUJfUFlUSE9OICI6IiBcCi0rICAgICAgICAgICAgICBFWEVDX1BSRUZJWCAiLyIgTElCX1BZVEhPTiAiL2xpYi1keW5sb2FkIgotKyNlbmRpZgotKwotICNpZm5kZWYgTEFORE1BUksKLSAjZGVmaW5lIExBTkRNQVJLICJvcy5weSIKLSAjZW5kaWYKLUBAIC0xMDgsNyArMTE1LDcgQEAgc3RhdGljIGNoYXIgcHJlZml4W01BWFBBVEhMRU4rMV07Ci0gc3RhdGljIGNoYXIgZXhlY19wcmVmaXhbTUFYUEFUSExFTisxXTsKLSBzdGF0aWMgY2hhciBwcm9ncGF0aFtNQVhQQVRITEVOKzFdOwotIHN0YXRpYyBjaGFyICptb2R1bGVfc2VhcmNoX3BhdGggPSBOVUxMOwotLXN0YXRpYyBjaGFyIGxpYl9weXRob25bXSA9ICJsaWIvcHl0aG9uIiBWRVJTSU9OOwotK3N0YXRpYyBjaGFyIGxpYl9weXRob25bXSA9IExJQl9QWVRIT047Ci0gCi0gc3RhdGljIHZvaWQKLSByZWR1Y2UoY2hhciAqZGlyKQotSW5kZXg6IFB5dGhvbi0yLjcuMTQvUHl0aG9uL2dldHBsYXRmb3JtLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvUHl0aG9uL2dldHBsYXRmb3JtLmMKLSsrKyBQeXRob24tMi43LjE0L1B5dGhvbi9nZXRwbGF0Zm9ybS5jCi1AQCAtMTAsMyArMTAsMTMgQEAgUHlfR2V0UGxhdGZvcm0odm9pZCkKLSB7Ci0gCXJldHVybiBQTEFURk9STTsKLSB9Ci0rCi0rI2lmbmRlZiBMSUIKLSsjZGVmaW5lIExJQiAibGliIgotKyNlbmRpZgotKwotK2NvbnN0IGNoYXIgKgotK1B5X0dldExpYih2b2lkKQotK3sKLSsJcmV0dXJuIExJQjsKLSt9Ci1JbmRleDogUHl0aG9uLTIuNy4xNC9QeXRob24vc3lzbW9kdWxlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjE0Lm9yaWcvUHl0aG9uL3N5c21vZHVsZS5jCi0rKysgUHl0aG9uLTIuNy4xNC9QeXRob24vc3lzbW9kdWxlLmMKLUBAIC0xNDM3LDYgKzE0MzcsOCBAQCBfUHlTeXNfSW5pdCh2b2lkKQotICAgICAgICAgICAgICAgICAgICAgICAgIFB5U3RyaW5nX0Zyb21TdHJpbmcoUHlfR2V0Q29weXJpZ2h0KCkpKTsKLSAgICAgU0VUX1NZU19GUk9NX1NUUklORygicGxhdGZvcm0iLAotICAgICAgICAgICAgICAgICAgICAgICAgIFB5U3RyaW5nX0Zyb21TdHJpbmcoUHlfR2V0UGxhdGZvcm0oKSkpOwotKyAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJsaWIiLAotKyAgICAgICAgICAgICAgICAgICAgICAgIFB5U3RyaW5nX0Zyb21TdHJpbmcoUHlfR2V0TGliKCkpKTsKLSAgICAgU0VUX1NZU19GUk9NX1NUUklORygiZXhlY3V0YWJsZSIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgUHlTdHJpbmdfRnJvbVN0cmluZyhQeV9HZXRQcm9ncmFtRnVsbFBhdGgoKSkpOwotICAgICBTRVRfU1lTX0ZST01fU1RSSU5HKCJwcmVmaXgiLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9wYXJhbGxlbC1tYWtlaW5zdC1jcmVhdGUtYmluZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9wYXJhbGxlbC1tYWtlaW5zdC1jcmVhdGUtYmluZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYmFiNDFlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcGFyYWxsZWwtbWFrZWluc3QtY3JlYXRlLWJpbmRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVdoZW4gdXNpbmcgbWFrZSAtaiB3aXRoIHRoZSAnaW5zdGFsbCcgdGFyZ2V0LCBpdCdzIHBvc3NpYmxlIGZvciBhbHRiaW5pbnN0YWxsCi0od2hpY2ggbm9ybWFsbHkgY3JlYXRlcyBCSU5ESVIpIGFuZCBsaWJhaW5zdGFsbCAod2hpY2ggZG9lc24ndCwgdGhvdWdoIGl0Ci1pbnN0YWxscyBweXRob24tY29uZmlnIHRoZXJlKSB0byByYWNlLCByZXN1bHRpbmcgaW4gYSBmYWlsdXJlIGR1ZSB0bwotYXR0ZW1wdGluZyB0byBpbnN0YWxsIHB5dGhvbi1jb25maWcgaW50byBhIG5vbmV4aXN0ZW50IEJJTkRJUi4gRW5zdXJlIGl0IGFsc28KLWV4aXN0cyBpbiB0aGUgbGliYWluc3RhbGwgdGFyZ2V0LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotLS0tIFB5dGhvbi0yLjcuMy5vcmlnL01ha2VmaWxlLnByZS5pbgotKysrIFB5dGhvbi0yLjcuMy9NYWtlZmlsZS5wcmUuaW4KLUBAIC0xMTg3LDcgKzExODcsNyBAQAotIExJQlBDPQkJJChMSUJESVIpL3BrZ2NvbmZpZwotIAotIGxpYmFpbnN0YWxsOglAREVGX01BS0VfUlVMRUAgcHl0aG9uLWNvbmZpZwotLQlAZm9yIGkgaW4gJChMSUJESVIpICQoTElCUCkgJChMSUJQTCkgJChMSUJQQyk7IFwKLSsJQGZvciBpIGluICQoTElCRElSKSAkKExJQlApICQoTElCUEwpICQoTElCUEMpICQoQklORElSKTsgXAotIAlkbyBcCi0gCQlpZiB0ZXN0ICEgLWQgJChERVNURElSKSQkaTsgdGhlbiBcCi0gCQkJZWNobyAiQ3JlYXRpbmcgZGlyZWN0b3J5ICQkaSI7IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDRmY2FhYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3Bhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw4MiArMCwwIEBACi1Gcm9tIDcxNDQ3ZjA0OTc5YjI2N2Y4ODY2NTczYjY3YTQzNDBiMjcxOWQ3OTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBGcmksIDQgQXVnIDIwMTcgMTQ6MTA6NDMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gc2V0dXAucHk6IHBhc3MgbWlzc2luZyBsaWJyYXJpZXMgdG8gRXh0ZW5zaW9uIGZvciBtdWx0aXByb2Nlc3NpbmcgbW9kdWxlCi0KLUluIHRoZSBmb2xsb3dpbmcgY29tbWl0OgotLi4uCi1jb21taXQgZTcxMWNhZmFiMTNlZmM5YzFmZTZjNWNkNzU4MjY0MDE0NDVlYjU4NQotQXV0aG9yOiBCZW5qYW1pbiBQZXRlcnNvbiA8YmVuamFtaW5AcHl0aG9uLm9yZz4KLURhdGU6ICAgV2VkIEp1biAxMSAxNjo0NDowNCAyMDA4ICswMDAwCi0KLSAgICBNZXJnZWQgcmV2aXNpb25zIDY0MTA0LDY0MTE3IHZpYSBzdm5tZXJnZSBmcm9tCi0gICAgc3ZuK3NzaDovL3B5dGhvbmRldkBzdm4ucHl0aG9uLm9yZy9weXRob24vdHJ1bmsKLS4uLgotKHNlZSBkaWZmIGluIHNldHVwLnB5KQotSXQgYXNzaWduZWQgbGlicmFyaWVzIGZvciBtdWx0aXByb2Nlc3NpbmcgbW9kdWxlIGFjY29yZGluZwotdGhlIGhvc3RfcGxhdGZvcm0sIGJ1dCBub3QgcGFzcyBpdCB0byBFeHRlbnNpb24uCi0KLUluIGdsaWJjLCB0aGUgZm9sbG93aW5nIGNvbW1pdCBjYXVzZWQgdHdvIGRlZmluaXRpb24gb2YKLXNlbV9nZXR2YWx1ZSBhcmUgZGlmZmVyZW50LgotaHR0cHM6Ly9zb3VyY2V3YXJlLm9yZy9naXQvP3A9Z2xpYmMuZ2l0O2E9Y29tbWl0O2g9MDQyZTE1MjFjNzk0YTk0NWVkYzQzYjViZmE3ZTY5YWQ3MDQyMDUyNAotKHNlZSBkaWZmIGluIG5wdGwvc2VtX2dldHZhbHVlLmMgZm9yIGRldGFpbCkKLWBfX25ld19zZW1fZ2V0dmFsdWUnIGlzIHRoZSBsYXRlc3Qgc2VtX2dldHZhbHVlQEBHTElCQ18yLjEKLWFuZCBgX19vbGRfc2VtX2dldHZhbHVlJyBpcyB0byBjb21wYXQgdGhlIG9sZCB2ZXJzaW9uCi1zZW1fZ2V0dmFsdWVAR0xJQkNfMi4wLgotCi1UbyBidWlsZCBweXRob24gZm9yIGVtYmVkZGVkIExpbnV4IHN5c3RlbXM6Ci1odHRwOi8vd3d3LnlvY3RvcHJvamVjdC5vcmcvZG9jcy8yLjMuMS95b2N0by1wcm9qZWN0LXFzL3lvY3RvLXByb2plY3QtcXMuaHRtbAotSWYgbm90IGV4cGxpY2l0bHkgbGluayB0byBsaWJyYXJ5IHB0aHJlYWQgKC1scHRocmVhZCksIGl0IHdpbGwKLWxvYWQgZ2xpYmMncyBzZW1fZ2V0dmFsdWUgcmFuZG9tbHkgYXQgcnVudGltZS4KLQotU3VjaCBhcyBidWlsZCBweXRob24gb24gbGludXggeDg2XzY0IGhvc3QgYW5kIHJ1biB0aGUgcHl0aG9uCi1vbiBsaW51eCB4ODZfMzIgdGFyZ2V0LiBJZiBub3QgbGluayBsaWJyYXJ5IHB0aHJlYWQsIGl0IGNhdXNlZAotbXVsdGlwcm9jZXNzaW5nIGJvdW5kZWQgc2VtYXBob3JlIGNvdWxkIG5vdCB3b3JrIGNvcnJlY3RseS4KLS4uLgotPj4+IGltcG9ydCBtdWx0aXByb2Nlc3NpbmcKLT4+PiBwb29sX3NlbWEgPSBtdWx0aXByb2Nlc3NpbmcuQm91bmRlZFNlbWFwaG9yZSh2YWx1ZT0xKQotPj4+IHBvb2xfc2VtYS5hY3F1aXJlKCkKLVRydWUKLT4+PiBwb29sX3NlbWEucmVsZWFzZSgpCi1UcmFjZWJhY2sgKG1vc3QgcmVjZW50IGNhbGwgbGFzdCk6Ci0gIEZpbGUgIjxzdGRpbj4iLCBsaW5lIDEsIGluIDxtb2R1bGU+Ci1WYWx1ZUVycm9yOiBzZW1hcGhvcmUgb3IgbG9jayByZWxlYXNlZCB0b28gbWFueSB0aW1lcwotLi4uCi0KLUFuZCB0aGUgc2VtYXBob3JlIGlzc3VlIGFsc28gY2F1c2VkIG11bHRpcHJvY2Vzc2luZy5RdWV1ZSgpLnB1dCgpIGh1bmcuCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vcHl0aG9uL2NweXRob24vcHVsbC8yOTk5XQotCi1TaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBzZXR1cC5weSB8IDcgKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5Ci1pbmRleCA1NDA1NGMyLi45NjQ2YmZjIDEwMDY0NAotLS0tIGEvc2V0dXAucHkKLSsrKyBiL3NldHVwLnB5Ci1AQCAtMTU4Niw4ICsxNTg2LDEwIEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybS5zdGFydHN3aXRoKCduZXRic2QnKToKLSAgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKLSAgICAgICAgICAgICBsaWJyYXJpZXMgPSBbXQotLQotLSAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgTGludXggYW5kIG90aGVyIHVuaWNlcwotKyAgICAgICAgZWxpZiBob3N0X3BsYXRmb3JtLnN0YXJ0c3dpdGgoKCdsaW51eCcpKToKLSsgICAgICAgICAgICBtYWNyb3MgPSBkaWN0KCkKLSsgICAgICAgICAgICBsaWJyYXJpZXMgPSBbJ3B0aHJlYWQnXQotKyAgICAgICAgZWxzZTogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICMgT3RoZXIgdW5pY2VzCi0gICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCi0gICAgICAgICAgICAgbGlicmFyaWVzID0gWydydCddCi0gCi1AQCAtMTYxMCw2ICsxNjEyLDcgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgaWYgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdXSVRIX1RIUkVBRCcpOgotICAgICAgICAgICAgIGV4dHMuYXBwZW5kICggRXh0ZW5zaW9uKCdfbXVsdGlwcm9jZXNzaW5nJywgbXVsdGlwcm9jZXNzaW5nX3NyY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVmaW5lX21hY3Jvcz1tYWNyb3MuaXRlbXMoKSwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bGlicmFyaWVzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1bIk1vZHVsZXMvX211bHRpcHJvY2Vzc2luZyJdKSkKLSAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgbWlzc2luZy5hcHBlbmQoJ19tdWx0aXByb2Nlc3NpbmcnKQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3B5dGhvbi0yLjcuMy1yZW1vdmUtYnNkYi1ycGF0aC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcHl0aG9uLTIuNy4zLXJlbW92ZS1ic2RiLXJwYXRoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMTZiZTBhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcHl0aG9uLTIuNy4zLXJlbW92ZS1ic2RiLXJwYXRoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotUmVtb3ZlIHRoZSBSUEFUSCB0byBhdm9pZCBRQSBpc3N1ZSB3YXJuaW5nLgotCi1SUDogQWRkZWQgc2Vjb25kYXJ5IHVubmVjZXNzYXJ5IHJwYXRoIHRvIHRoZSBsaXN0IDIwMTIvOC83Ci1TaWduZWQtb2ZmLWJ5OiBKYWNraWUgSHVhbmcgPGphY2tpZS5odWFuZ0B3aW5kcml2ZXIuY29tPgotCi0KLUluZGV4OiBQeXRob24tMi43LjMvc2V0dXAucHkKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMi43LjMub3JpZy9zZXR1cC5weQkyMDEyLTA4LTA3IDEwOjQxOjU4LjU2MDEzMjUyOSArMDAwMAotKysrIFB5dGhvbi0yLjcuMy9zZXR1cC5weQkyMDEyLTA4LTA3IDExOjA5OjQ3Ljg1MjA5NDUxNSArMDAwMAotQEAgLTEwNDIsNyArMTA0Miw2IEBACi0gICAgICAgICAgICAgZXh0cy5hcHBlbmQoRXh0ZW5zaW9uKCdfYnNkZGInLCBbJ19ic2RkYi5jJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZHMgPSBbJ2JzZGRiLmgnXSwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyeV9kaXJzPWRibGliX2RpciwKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcnVudGltZV9saWJyYXJ5X2RpcnM9ZGJsaWJfZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnM9ZGJfaW5jcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPWRibGlicykpCi0gICAgICAgICBlbHNlOgotQEAgLTEyNTIsNyArMTI1MSw2IEBACi0gICAgICAgICAgICAgICAgICAgICAgICAgcHJpbnQgImJ1aWxkaW5nIGRibSB1c2luZyBiZGIiCi0gICAgICAgICAgICAgICAgICAgICAgICAgZGJtZXh0ID0gRXh0ZW5zaW9uKCdkYm0nLCBbJ2RibW1vZHVsZS5jJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnlfZGlycz1kYmxpYl9kaXIsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHJ1bnRpbWVfbGlicmFyeV9kaXJzPWRibGliX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9kaXJzPWRiX2luY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlZmluZV9tYWNyb3M9WwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKCdIQVZFX0JFUktEQl9IJywgTm9uZSksCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3B5dGhvbjItbWFuaWZlc3QuanNvbiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcHl0aG9uMi1tYW5pZmVzdC5qc29uCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlYjUyZTg2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcHl0aG9uMi1tYW5pZmVzdC5qc29uCisrKyAvZGV2L251bGwKQEAgLTEsMTEzOCArMCwwIEBACi0jIERPIE5PVCAoZW50aXJlbHkpIG1vZGlmeSB0aGlzIGZpbGUgbWFudWFsbHksIHBsZWFzZSByZWFkLgotIwotIyBJTVBPUlRBTlQgTk9URToKLSMgUGxlYXNlIGtlZXAgaW4gbWluZCB0aGF0IHRoZSBjcmVhdGVfbWFuaWZlc3QgdGFzayByZWxpZXMgb24gdGhlIGZhY3QgdGhlIHRoZQotIyB0YXJnZXQgYW5kIG5hdGl2ZSBQeXRob24gcGFja2FnZXMgYXJlIHRoZSBzYW1lLCBhbmQgaXQgYWxzbyBuZWVkcyB0byBiZSBleGVjdXRlZAotIyB3aXRoIGEgZnVsbHkgd29ya2luZyBuYXRpdmUgcGFja2FnZSAod2l0aCBhbGwgdGhlIFBBQ0tBR0VDT05GSUdzIGVuYWJsZWQgYW5kIGFsbAotIyBhbmQgYWxsIHRoZSBtb2R1bGVzIHNob3VsZCBiZSB3b3JraW5nLCBjaGVjayBsb2cuZG9fY29tcGlsZSksIG90aGVyd2lzZSB0aGUgc2NyaXB0Ci0jIHdpbGwgZmFpbCB0byBmaW5kIGRlcGVuZGVuY2llcyBjb3JyZWN0bHksIHRoaXMgbm90ZSBpcyB2YWxpZCBlaXRoZXIgaWYgeW91IGFyZQotIyB1cGdyYWRpbmcgdG8gYSBuZXcgUHl0aG9uIHZlcnNpb24gb3IgYWRkaW5nIGEgbmV3IHBhY2thZ2UuCi0jCi0jCi0jIElmIHlvdSBhcmUgYWRkaW5nIGEgbmV3IHBhY2thZ2UgcGxlYXNlIGZvbGxvdyB0aGUgbmV4dCBzdGVwczoKLSMgICAgIEhvdyB0byBhZGQgYSBuZXcgcGFja2FnZToKLSMgICAgIC0gSWYgYSB1c2VyIHdhbnRzIHRvIGFkZCBhIG5ldyBwYWNrYWdlIGFsbCB0aGF0IGhhcyB0byBiZSBkb25lIGlzOgotIyAgICAgTW9kaWZ5IHRoZSBweXRob24yLW1hbmlmZXN0Lmpzb24gZmlsZSwgYW5kIGFkZCB0aGUgcmVxdWlyZWQgZmlsZShzKSB0byB0aGUgRklMRVMgbGlzdCwKLSMgICAgIGZpbGwgdXAgdGhlIFNVTU1BUlkgc2VjdGlvbiBhcyB3ZWxsLCB0aGUgc2NyaXB0IHNob3VsZCBoYW5kbGUgYWxsIHRoZSByZXN0LgotIwotIyAgICAgUmVhbCBleGFtcGxlOgotIyAgICAgV2Ugd2FudCB0byBhZGQgYSB3ZWIgYnJvd3NlciBwYWNrYWdlLCBpbmNsdWRpbmcgdGhlIGZpbGUgd2ViYnJvd3Nlci5weQotIyAgICAgd2hpY2ggYXQgdGhlIG1vbWVudCBpcyBvbiBweXRob24tbWlzYy4KLSMgICAgICJ3ZWJicm93c2VyIjogewotIyAgICAgICAgICJmaWxlcyI6IFsiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC93ZWJicm93c2VyLnB5Il0sCi0jICAgICAgICAgInJkZXBlbmRzIjogW10sCi0jICAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIFdlYiBCcm93c2VyIHN1cHBvcnQifQotIwotIyAgICAgKiBOb3RlIHRoYXQgdGhlIHJkZXBlbmRzIGZpZWxkIHdhcyBsZWZ0IGVtcHR5Ci0jCi0jICAgICBXZSBydW4gJCBiaXRiYWtlIHB5dGhvbiAtYyBjcmVhdGVfbWFuaWZlc3QgYW5kIHRoZSByZXN1bHRpbmcgbWFuaWZlc3QKLSMgICAgIHNob3VsZCBiZSBjb21wbGV0ZWQgYWZ0ZXIgYSBmZXcgc2Vjb25kcywgc2hvd2luZyBzb21ldGhpbmcgbGlrZToKLSMgICAgICJ3ZWJicm93c2VyIjogewotIyAgICAgICAgICJmaWxlcyI6IFsiJHtsaWJkaXJ9L3B5dGhvbjIuNy93ZWJicm93c2VyLnB5Il0sCi0jICAgICAgICAgInJkZXBlbmRzIjogWyJjb3JlIiwiZmNudGwiLCJpbyIsInBpY2tsZSIsInNoZWxsIiwic3VicHJvY2VzcyJdLAotIyAgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBXZWIgQnJvd3NlciBzdXBwb3J0In0KLSMKLSMKLSMgSWYgeW91IGFyZSB1cGdyYWRpbmcgUHl0aG9uIHRvIGEgbmV3IHZlcnNpb24gcGxlYXNlIGZvbGxvdyB0aGUgbmV4dCBzdGVwczoKLSMgICAgIEFmdGVyIGVhY2ggUHl0aG9uIHVwZ3JhZGUsIHRoZSBjcmVhdGVfbWFuaWZlc3QgdGFzayBzaG91bGQgYmUgZXhlY3V0ZWQsIGJlY2F1c2Ugd2UKLSMgICAgIGRvbid0IGNvbnRyb2wgd2hhdCBjaGFuZ2VzIG9uIHVwc3RyZWFtIFB5dGhvbiwgc28sIHNvbWUgbW9kdWxlIGRlcGVuZGVuY3kKLSMgICAgIG1pZ2h0IGhhdmUgY2hhbmdlZCB3aXRob3V0IHVzIHJlYWxpemluZyBpdCwgYSBjZXJ0YWluIG1vZHVsZSBjYW4gZWl0aGVyIGhhdmUKLSMgICAgIG1vcmUgb3IgbGVzcyBkZXBlbmRlbmNpZXMsIG9yIGNvdWxkIGJlIGRlcGVuZGluZyBvbiBhIG5ldyBmaWxlIHRoYXQgd2FzIGp1c3QKLSMgICAgIGNyZWF0ZWQgb24gdGhlIG5ldyByZWxlYXNlIGFuZCBmb3Igb2J2aW91cyByZWFzb25zIHdlIHdvdWxkbid0IGhhdmUgaXQgb24gb3VyCi0jICAgICBvbGQgbWFuaWZlc3QsIGFsbCBvZiB0aGVzZSBpc3N1ZXMgd291bGQgY2F1c2UgcnVudGltZSBlcnJvcnMgb24gb3VyIHN5c3RlbS4KLSMKLSMgICAgIC0gVXBncmFkZSBib3RoIHRoZSBuYXRpdmUgYW5kIHRhcmdldCBQeXRob24gcGFja2FnZXMgdG8gYSBuZXcgdmVyc2lvbgotIyAgICAgLSBSdW4gdGhlIGNyZWF0ZV9tYW5pZmVzdCB0YXNrIGZvciB0aGUgdGFyZ2V0IFB5dGhvbiBwYWNrYWdlIGFzIGl0cyBzaG93biBiZWxvdzoKLSMKLSMgICAgICQgYml0YmFrZSBweXRob24gLWMgY3JlYXRlX21hbmlmZXN0Ci0jCi0jICAgICBUaGlzIHdpbGwgYXV0b21hdGljYWxseSByZXBsYWNlIHlvdXIgbWFuaWZlc3QgZmlsZSBsb2NhdGVkIHVuZGVyIHRoZSBQeXRob24gZGlyZWN0b3J5Ci0jICAgICB3aXRoIGFuIG5ldyBvbmUsIHdoaWNoIGNvbnRhaW5zIHRoZSBuZXcgZGVwZW5kZW5jaWVzIChpZiBhbnkpLgotIwotIyAgICAgU2V2ZXJhbCB0aGluZ3MgY291bGQgaGF2ZSBnb25lIHdyb25nIGhlcmUsIEkgd2lsbCB0cnkgdG8gZXhwbGFpbiBhIGZldzoKLSMKLSMgICAgIGEpIEEgbmV3IGZpbGUgd2FzIGludHJvZHVjZWQgb24gdGhpcyByZWxlYXNlLCBlLmcuIHNoYTMqLnNvOgotIyAgICAgICAgVGhlIHRhc2sgd2lsbCBjaGVjayB3aGF0IGl0cyBuZWVkZWQgdG8gaW1wb3J0IGV2ZXJ5IG1vZHVsZSwgbW9yZSB0aGFuIG9uZSBtb2R1bGUgd291bGQKLSMgICAgICAgIHdvdWxkIHByb2JhYmx5IGRlcGVuZCBvbiBzaGEzKi5zbywgYWx0aG91Z2ggb25seSBvbmUgbW9kdWxlIHNob3VsZCBjb250YWluIGl0LgotIwotIyAgICAgICAgQWZ0ZXIgcnVubmluZyB0aGUgdGFzaywgdGhlIG5ldyBtYW5pZmVzdCB3aWxsIGhhdmUgdGhlIHNoYTMqLnNvIGZpbGUgb24gbW9yZSB0aGFuIG9uZQotIyAgICAgICAgbW9kdWxlLCB5b3UgbmVlZCB0byBtYW51YWxseSBkZWNpZGUgd2hpY2ggb25lIG9mIHRoZW0gc2hvdWxkIGdldCBpdCBhbmQgZGVsZXRlIGl0IGZyb20KLSMgICAgICAgIHRoZSBvdGhlcnMsIGZvciBleGFtcGxlIHNoYTMqLnNvIHNob3VsZCBsaWtlbHkgYmUgb24gJHtQTn0tY3J5cHQuCi0jICAgICAgICBPbmNlIHlvdSBoYXZlIGRlbGV0ZWQgZnJvbSB0aGUgb3RoZXJzIHlvdSBuZWVkIHRvIHJ1biB0aGUgY3JlYXRlX21hbmlmZXN0IHRhc2sgYWdhaW4sCi0jICAgICAgICB0aGlzIHdpbGwgcG9wdWxhdGUgdGhlIG90aGVyIG1vZHVsZSdzIHJkZXBlbmRzIGZpZWxkcywgd2l0aCAke1BOfS1jcnlwdCBhbmQgeW91IHNob3VsZCBiZQotIyAgICAgICAgZ29vZCB0byBnby4KLSMKLSMgICAgIGIpIFRoZSBuYXRpdmUgcGFja2FnZSB3YXNuJ3QgYnVpbHQgY29ycmVjdGx5IGFuZCBpdHMgbWlzc2luZyBhIGNlcnRhaW4gbW9kdWxlOgotIyAgICAgICAgQXMgbWVudGlvbmVkIGJlZm9yZSwgeW91IG5lZWQgdG8gbWFrZSBzdXJlIHRoZSBuYXRpdmUgcGFja2FnZSB3YXMgYnVpbHQgd2l0aCBhbGwgdGhlIG1vZHVsZXMKLSMgICAgICAgIGJlY2F1c2UgaXQgaXMgdXNlZCBhcyBiYXNlIHRvIGJ1aWxkIHRoZSBtYW5pZmVzdCBmaWxlLCB5b3UgbmVlZCB0byBtYW51YWxseSBjaGVjayBsb2cuZG9fY29tcGlsZQotIyAgICAgICAgc2luY2UgaXQgd29uJ3QgZXJyb3Igb3V0IHRoZSBjb21waWxlIGZ1bmN0aW9uIGlmIGl0cyBvbmx5IG1pc3NpbmcgYSBjb3VwbGUgb2YgbW9kdWxlcy4KLSMKLSMgICAgICAgIGUuZy4gbWlzc2luZyB0aGUgX3V1aWQgbW9kdWxlLCBsb2cuZG9fY29tcGlsZSB3b3VsZCBzaG93IHRoZSBmb2xsb3dpbmc6Ci0jICAgICAgICBQeXRob24gYnVpbGQgZmluaXNoZWQgc3VjY2Vzc2Z1bGx5IQotIyAgICAgICAgVGhlIG5lY2Vzc2FyeSBiaXRzIHRvIGJ1aWxkIHRoZXNlIG9wdGlvbmFsIG1vZHVsZXMgd2VyZSBub3QgZm91bmQ6Ci0jICAgICAgICBfdXVpZAotIwotIyAgICAgICAgV2hhdCB3aWxsIGhhcHBlbiBoZXJlIGlzIHRoYXQgdGhlIG5ldyBtYW5pZmVzdCB3b3VsZCBub3QgYmUgYXdhcmUgdGhhdCB0aGUgX3V1aWQgbW9kdWxlIGV4aXN0cywgc28KLSMgICAgICAgIG5vdCBvbmx5IHdlIHdvbid0IGtub3cgb2YgYW55IGRlcGVuZGVuY2llcyB0byBpdCwgYnV0IGFsc28sIHRoZSBfdXVpZCogZmlsZXMgd2lsbCBiZSBwYWNrYWdlZCBvbgotIyAgICAgICAgdGhlIG1pc2MgcGFja2FnZSAod2hpY2ggaXMgd2hlcmUgYW55IGZpbGUgdGhhdCBkb2Vzbid0IGJlbG9uZyBhbnl3aGVyZSBlbHNlIGVuZHMgdXApLgotIwotIyAgICAgICAgVGhpcyB3aWxsIGV2ZW50dWFsbHkgY2F1c2UgcnVudGltZSBlcnJvcnMgb24gb3VyIHN5c3RlbSBpZiB3ZSBkb24ndCBpbmNsdWRlIHRoZSBtaXNjIHBhY2thZ2Ugb24KLSMgICAgICAgIG9uIG91ciBpbWFnZSwgYmVjYXVzZSB0aGUgX3V1aWQgZmlsZXMgd2lsbCBiZSBtaXNzaW5nLgotIyAgICAgICAgSWYgd2UgYnVpbGQgdGhlIF91dWlkIG1vZHVsZSBjb3JyZWN0bHkgYW5kIHJ1biB0aGUgY3JlYXRlX21hbmlmZXN0IHRhc2sgdGhlIF91dWlkIGZpbGVzIHdpbGwgYmUKLSMgICAgICAgIGRldGVjdGVkIGNvcnJlY3RseSBhbG9uZyB3aXRoIGl0cyBkZXBlbmRlbmNpZXMsIGFuZCB3ZSB3aWxsIGdldCBhIHdvcmtpbmcgbWFuaWZlc3QuCi0jCi0jICAgICAgICBUaGlzIGlzIHRoZSByZWFzb24gd2h5IGl0IGlzIGltcG9ydGFudCB0byBtYWtlIHN1cmUgd2UgaGF2ZSBhIGZ1bGx5IHdvcmtpbmcgbmF0aXZlIGJ1aWxkLAotIyAgICAgICAgc28gd2UgY2FuIGF2b2lkIHRoZXNlIGVycm9ycy4KLSMKLSMKLSMKLSMgRE8gTk9UIE1PRElGWSBUSEUgTkVYVCBMSU5FISwgSVQgSVMgVVNFRCBBUyBBIE1BUktFUiBGT1IgVEhFIEFDVFVBTCBKU09OIE1BTklGRVNUCi0jIEVPQwotewotICAgICJ0ZXN0cyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHRlc3Qgc3VpdGUiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJtb2R1bGVzIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvKi90ZXN0IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy8qL3Rlc3RzIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9pZGxlbGliL2lkbGVfdGVzdC8iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3Rlc3QiCi0gICAgICAgIF0sIAotICAgICAgICAiY2FjaGVkIjogW10KLSAgICB9LCAKLSAgICAiMnRvMyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGF1dG9tYXRlZCBQeXRob24gMiB0byAzIGNvZGUgdHJhbnNsYXRvciIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2JpbmRpcn0vMnRvMyoiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliMnRvMyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJhcmdwYXJzZSI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGNvbW1hbmQgbGluZSBhcmd1bWVudCBwYXJzZXIiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvZGVjcyIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAidGV4dHV0aWxzIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYXJncGFyc2UucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiYXVkaW8iOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBBdWRpbyBIYW5kbGluZyIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImNyeXB0IiwgCi0gICAgICAgICAgICAiZmNudGwiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgIm1hdGgiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hdWRpb2Rldi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY2h1bmsucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2F1ZGlvb3Auc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL29zc2F1ZGlvZGV2LnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zbmRoZHIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3N1bmF1LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdW5hdWRpby5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdG9haWZmLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy93YXZlLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImJzZGRiIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gYmluZGluZ3MgZm9yIHRoZSBCZXJrZWxleSBEYXRhYmFzZSIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2JzZGRiIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fYnNkZGIuc28iCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiY29kZWNzIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY29kZWMiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgImxhbmciCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9nZXR0ZXh0LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY29kZWNzX2NuLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY29kZWNzX2hrLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY29kZWNzX2lzbzIwMjIuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jb2RlY3NfanAuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jb2RlY3Nfa3Iuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jb2RlY3NfdHcuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19tdWx0aWJ5dGVjb2RlYy5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvdW5pY29kZWRhdGEuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xvY2FsZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3RyaW5ncHJlcC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcveGRybGliLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImNvbXBpbGUiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBieXRlY29kZSBjb21waWxhdGlvbiBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29tcGlsZWFsbC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHlfY29tcGlsZS5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJjb21waWxlciI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGNvbXBpbGVyIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgImxhbmciCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb21waWxlciIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJjb21wcmVzc2lvbiI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGhpZ2gtbGV2ZWwgY29tcHJlc3Npb24gc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAic2hlbGwiLCAKLSAgICAgICAgICAgICJ1bml4YWRtaW4iLCAKLSAgICAgICAgICAgICJ6bGliIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZ3ppcC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvYnoyLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90YXJmaWxlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy96aXBmaWxlLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImNvbnRleHRsaWIiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB1dGlsaXRpZXMgZm9yIHdpdGgtc3RhdGVtZW50Y29udGV4dHMuIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAibGFuZyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvbnRleHRsaWIucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiY29yZSI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGludGVycHJldGVyIGFuZCBjb3JlIG1vZHVsZXMiLCAKLSAgICAgICAgInJkZXBlbmRzIjogW10sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtiaW5kaXJ9L3B5dGhvbioiLCAKLSAgICAgICAgICAgICIke2luY2x1ZGVkaXJ9L3B5dGhvbjIuNy9weWNvbmZpZyouaCIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvQ29uZmlnUGFyc2VyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9Vc2VyRGljdC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvVXNlckxpc3QucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L1VzZXJTdHJpbmcucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L19fZnV0dXJlX18ucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L19hYmNvbGwucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L19zeXNjb25maWdkYXRhLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fd2Vha3JlZnNldC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYWJjLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hc3QucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2F0ZXhpdC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29kZWNzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb2xsZWN0aW9ucy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29weS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29weV9yZWcucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2VuY29kaW5ncyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZW5jb2RpbmdzL2FsaWFzZXMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2VuY29kaW5ncy91dGZfOC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZ2VuZXJpY3BhdGgucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2dldG9wdC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaGVhcHEucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2ltcG9ydGxpYiIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcva2V5d29yZC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2NvbGxlY3Rpb25zLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9faGVhcHEuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19sb2NhbGUuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19zdHJ1Y3Quc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2JpbmFzY2lpLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9pdGVydG9vbHMuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL29wZXJhdG9yLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9yZWFkbGluZS5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvc3Ryb3Auc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3RpbWUuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3hyZWFkbGluZXMuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpbmVjYWNoZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbmV3LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9vcy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcGxhdGZvcm0ucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3Bvc2l4cGF0aC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcmUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3JsY29tcGxldGVyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaXRlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaXRlY3VzdG9taXplLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zcmVfY29tcGlsZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3JlX2NvbnN0YW50cy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3JlX3BhcnNlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdGF0LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zdHJpbmcucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3N0cnVjdC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc3lzY29uZmlnLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90cmFjZWJhY2sucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3R5cGVzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy93YXJuaW5ncy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvd2Vha3JlZi5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJjcnlwdCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJhc2ljIGNyeXB0b2dyYXBoaWMgYW5kIGhhc2hpbmcgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2hhc2hsaWIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19oYXNobGliLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9jcnlwdC5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbWQ1LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaGEucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiY3R5cGVzIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gQyB0eXBlcyBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY3R5cGVzIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY3R5cGVzLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fY3R5cGVzX3Rlc3Quc28iCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiY3Vyc2VzIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gY3Vyc2VzIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jdXJzZXMiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jdXJzZXMuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jdXJzZXNfcGFuZWwuc28iCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiZGF0ZXRpbWUiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBjYWxlbmRhciBhbmQgdGltZSBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb2RlY3MiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAibGFuZyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L19zdHJwdGltZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY2FsZW5kYXIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2RhdGV0aW1lLnNvIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImRiIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZmlsZS1iYXNlZCBkYXRhYmFzZSBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJic2RkYiIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJnZGJtIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYW55ZGJtLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kYmhhc2gucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2R1bWJkYm0ucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2RibS5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvd2hpY2hkYi5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJkZWJ1Z2dlciI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGRlYnVnZ2VyIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAicHByaW50IiwgCi0gICAgICAgICAgICAic2hlbGwiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9iZGIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BkYi5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJkZXYiOiB7Ci0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2Jhc2VfbGliZGlyfS8qLmEiLCAKLSAgICAgICAgICAgICIke2Jhc2VfbGliZGlyfS8qLm8iLCAKLSAgICAgICAgICAgICIke2RhdGFkaXJ9L2FjbG9jYWwiLCAKLSAgICAgICAgICAgICIke2RhdGFkaXJ9L3BrZ2NvbmZpZyIsIAotICAgICAgICAgICAgIiR7aW5jbHVkZWRpcn0iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vKi5hIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9LyoubGEiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vKi5vIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L2xpYioke1NPTElCU0RFVn0iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcGtnY29uZmlnIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb25maWcvTWFrZWZpbGUiCi0gICAgICAgIF0sIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBkZXZlbG9wbWVudCBwYWNrYWdlIgotICAgIH0sIAotICAgICJkaWZmbGliIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaGVscGVycyBmb3IgY29tcHV0aW5nIGRlbHRhcyBiZXR3ZWVuIG9iamVjdHMiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJsYW5nIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZGlmZmxpYi5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJkaXN0dXRpbHMtc3RhdGljZGV2IjogewotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb25maWcvbGliKi5hIgotICAgICAgICBdLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImRpc3R1dGlscyIKLSAgICAgICAgXSwgCi0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBkaXN0cmlidXRpb24gdXRpbGl0aWVzIChzdGF0aWMgbGlicmFyaWVzKSIKLSAgICB9LCAKLSAgICAiZGlzdHV0aWxzIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gRGlzdHJpYnV0aW9uIFV0aWxpdGllcyIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvbmZpZyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZGlzdHV0aWxzIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImRvY3Rlc3QiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBmcmFtZXdvcmsgZm9yIHJ1bm5pbmcgZXhhbXBsZXMgaW4gZG9jc3RyaW5ncyIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImNyeXB0IiwgCi0gICAgICAgICAgICAiZGVidWdnZXIiLCAKLSAgICAgICAgICAgICJkaWZmbGliIiwgCi0gICAgICAgICAgICAiZmNudGwiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgImxhbmciLCAKLSAgICAgICAgICAgICJtYXRoIiwgCi0gICAgICAgICAgICAicHByaW50IiwgCi0gICAgICAgICAgICAic2hlbGwiLCAKLSAgICAgICAgICAgICJ1bml0dGVzdCIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2RvY3Rlc3QucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiZW1haWwiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBlbWFpbCBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb250ZXh0bGliIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImNyeXB0IiwgCi0gICAgICAgICAgICAiZmNudGwiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgImxhbmciLCAKLSAgICAgICAgICAgICJtYXRoIiwgCi0gICAgICAgICAgICAibmV0Y2xpZW50IiwgCi0gICAgICAgICAgICAicGlja2xlIiwgCi0gICAgICAgICAgICAic3VicHJvY2VzcyIsIAotICAgICAgICAgICAgInRleHR1dGlscyIsIAotICAgICAgICAgICAgInRocmVhZGluZyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2VtYWlsIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9pbWFwbGliLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImZjbnRsIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24ncyBmY250bCBpbnRlcmZhY2UiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9mY250bC5zbyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJnZGJtIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gR05VIGRhdGFiYXNlIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9nZGJtLnNvIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImhvdHNob3QiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBob3RzaG90IHBlcmZvcm1hbmNlIHByb2ZpbGVyIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaG90c2hvdCIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2hvdHNob3Quc28iCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiaHRtbCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEhUTUwgcHJvY2Vzc2luZyBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvSFRNTFBhcnNlci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvZm9ybWF0dGVyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9odG1sZW50aXR5ZGVmcy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaHRtbGxpYi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbWFya3VwYmFzZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvc2dtbGxpYi5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJpZGxlIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSW50ZWdyYXRlZCBEZXZlbG9wbWVudCBFbnZpcm9ubWVudCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2JpbmRpcn0vaWRsZSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaWRsZWxpYiIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJpbWFnZSI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGdyYXBoaWNhbCBpbWFnZSBoYW5kbGluZyIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NvbG9yc3lzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9pbWdoZHIucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAiaW8iOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBsb3ctbGV2ZWwgSS9PIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb250ZXh0bGliIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImNyeXB0IiwgCi0gICAgICAgICAgICAiZmNudGwiLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAibWF0aCIsIAotICAgICAgICAgICAgIm5ldGNsaWVudCIsIAotICAgICAgICAgICAgInRleHR1dGlscyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L1N0cmluZ0lPLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fcHlpby5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaW8ucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19pby5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3NvY2tldC5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX3NzbC5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvY1N0cmluZ0lPLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9zZWxlY3Quc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3Rlcm1pb3Muc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BpcGVzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zb2NrZXQucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NzbC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdGVtcGZpbGUucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAianNvbiI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIEpTT04gc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2pzb24iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19qc29uLnNvIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgImxhbmciOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBsb3ctbGV2ZWwgbGFuZ3VhZ2Ugc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Jpc2VjdC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29kZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29kZW9wLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kaXMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Z1bmN0b29scy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaW5zcGVjdC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2Jpc2VjdC5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2Z1bmN0b29scy5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvYXJyYXkuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3BhcnNlci5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvb3Bjb2RlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9yZXByLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zeW1ib2wucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3Rva2VuLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90b2tlbml6ZS5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJsb2dnaW5nIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbG9nZ2luZyBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJ0aHJlYWRpbmciCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9sb2dnaW5nIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgIm1haWxib3giOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBtYWlsYm94IGZvcm1hdCBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb2RlY3MiLCAKLSAgICAgICAgICAgICJjb250ZXh0bGliIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImNyeXB0IiwgCi0gICAgICAgICAgICAiZGF0ZXRpbWUiLCAKLSAgICAgICAgICAgICJlbWFpbCIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAibWF0aCIsIAotICAgICAgICAgICAgIm1pbWUiLCAKLSAgICAgICAgICAgICJuZXRjbGllbnQiLCAKLSAgICAgICAgICAgICJ0ZXh0dXRpbHMiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9tYWlsYm94LnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgIm1hdGgiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBtYXRoIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJjcnlwdCIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19yYW5kb20uc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2NtYXRoLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9tYXRoLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9yYW5kb20ucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NldHMucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAibWltZSI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIE1JTUUgaGFuZGxpbmcgQVBJcyIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29udGV4dGxpYiIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJjcnlwdCIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAibWF0aCIsIAotICAgICAgICAgICAgIm5ldGNsaWVudCIsIAotICAgICAgICAgICAgInRleHR1dGlscyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L01pbWVXcml0ZXIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L21pbWV0b29scy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbWltZXR5cGVzLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9xdW9wcmkucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3JmYzgyMi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdXUucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAibW1hcCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG1lbW9yeS1tYXBwZWQgZmlsZSBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvbW1hcC5zbyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJtb2R1bGVzIjogewotICAgICAgICAiZmlsZXMiOiBbXSwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICIydG8zIiwgCi0gICAgICAgICAgICAiYXJncGFyc2UiLCAKLSAgICAgICAgICAgICJhdWRpbyIsIAotICAgICAgICAgICAgImJzZGRiIiwgCi0gICAgICAgICAgICAiY29kZWNzIiwgCi0gICAgICAgICAgICAiY29tcGlsZSIsIAotICAgICAgICAgICAgImNvbXBpbGVyIiwgCi0gICAgICAgICAgICAiY29tcHJlc3Npb24iLCAKLSAgICAgICAgICAgICJjb250ZXh0bGliIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImNyeXB0IiwgCi0gICAgICAgICAgICAiY3R5cGVzIiwgCi0gICAgICAgICAgICAiY3Vyc2VzIiwgCi0gICAgICAgICAgICAiZGF0ZXRpbWUiLCAKLSAgICAgICAgICAgICJkYiIsIAotICAgICAgICAgICAgImRlYnVnZ2VyIiwgCi0gICAgICAgICAgICAiZGlmZmxpYiIsIAotICAgICAgICAgICAgImRpc3R1dGlscyIsIAotICAgICAgICAgICAgImRvY3Rlc3QiLCAKLSAgICAgICAgICAgICJlbWFpbCIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAiZ2RibSIsIAotICAgICAgICAgICAgImhvdHNob3QiLCAKLSAgICAgICAgICAgICJodG1sIiwgCi0gICAgICAgICAgICAiaWRsZSIsIAotICAgICAgICAgICAgImltYWdlIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJqc29uIiwgCi0gICAgICAgICAgICAibGFuZyIsIAotICAgICAgICAgICAgImxvZ2dpbmciLCAKLSAgICAgICAgICAgICJtYWlsYm94IiwgCi0gICAgICAgICAgICAibWF0aCIsIAotICAgICAgICAgICAgIm1pbWUiLCAKLSAgICAgICAgICAgICJtbWFwIiwgCi0gICAgICAgICAgICAibXVsdGlwcm9jZXNzaW5nIiwgCi0gICAgICAgICAgICAibmV0Y2xpZW50IiwgCi0gICAgICAgICAgICAibmV0c2VydmVyIiwgCi0gICAgICAgICAgICAibnVtYmVycyIsIAotICAgICAgICAgICAgInBpY2tsZSIsIAotICAgICAgICAgICAgInBrZ3V0aWwiLCAKLSAgICAgICAgICAgICJwbGlzdGxpYiIsIAotICAgICAgICAgICAgInBwcmludCIsIAotICAgICAgICAgICAgInByb2ZpbGUiLCAKLSAgICAgICAgICAgICJweWRvYyIsIAotICAgICAgICAgICAgInJlIiwgCi0gICAgICAgICAgICAicmVzb3VyY2UiLCAKLSAgICAgICAgICAgICJyb2JvdHBhcnNlciIsIAotICAgICAgICAgICAgInJ1bnB5IiwgCi0gICAgICAgICAgICAic2hlbGwiLCAKLSAgICAgICAgICAgICJzbXRwZCIsIAotICAgICAgICAgICAgInNxbGl0ZTMiLCAKLSAgICAgICAgICAgICJzcWxpdGUzIiwgCi0gICAgICAgICAgICAic3RyaW5nb2xkIiwgCi0gICAgICAgICAgICAic3VicHJvY2VzcyIsIAotICAgICAgICAgICAgInN5c2xvZyIsIAotICAgICAgICAgICAgInRlcm1pbmFsIiwgCi0gICAgICAgICAgICAidGV4dHV0aWxzIiwgCi0gICAgICAgICAgICAidGhyZWFkaW5nIiwgCi0gICAgICAgICAgICAidGtpbnRlciIsIAotICAgICAgICAgICAgInVuaXR0ZXN0IiwgCi0gICAgICAgICAgICAidW5peGFkbWluIiwgCi0gICAgICAgICAgICAieG1sIiwgCi0gICAgICAgICAgICAieG1scnBjIiwgCi0gICAgICAgICAgICAiemxpYiIKLSAgICAgICAgXSwgCi0gICAgICAgICJzdW1tYXJ5IjogIkFsbCBQeXRob24gbW9kdWxlcyIKLSAgICB9LCAKLSAgICAibXVsdGlwcm9jZXNzaW5nIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbXVsdGlwcm9jZXNzaW5nIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJmY250bCIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAicGlja2xlIiwgCi0gICAgICAgICAgICAic3VicHJvY2VzcyIsIAotICAgICAgICAgICAgInRocmVhZGluZyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19tdWx0aXByb2Nlc3Npbmcuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L211bHRpcHJvY2Vzc2luZyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJuZXRjbGllbnQiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBJbnRlcm5ldCBQcm90b2NvbCBjbGllbnRzIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb2RlY3MiLCAKLSAgICAgICAgICAgICJjb250ZXh0bGliIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImNyeXB0IiwgCi0gICAgICAgICAgICAiY3R5cGVzIiwgCi0gICAgICAgICAgICAiZGF0ZXRpbWUiLCAKLSAgICAgICAgICAgICJlbWFpbCIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAibWF0aCIsIAotICAgICAgICAgICAgIm1pbWUiLCAKLSAgICAgICAgICAgICJwaWNrbGUiLCAKLSAgICAgICAgICAgICJzdWJwcm9jZXNzIiwgCi0gICAgICAgICAgICAidGV4dHV0aWxzIiwgCi0gICAgICAgICAgICAidGhyZWFkaW5nIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvQ29va2llLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fTFdQQ29va2llSmFyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fTW96aWxsYUNvb2tpZUphci5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYmFzZTY0LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jb29raWVsaWIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2Z0cGxpYi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaG1hYy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvaHR0cGxpYi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbm50cGxpYi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcG9wbGliLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zbXRwbGliLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90ZWxuZXRsaWIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3VybGxpYi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdXJsbGliMi5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdXJscGFyc2UucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3V1aWQucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAibmV0c2VydmVyIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gSW50ZXJuZXQgUHJvdG9jb2wgc2VydmVycyIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29tcHJlc3Npb24iLCAKLSAgICAgICAgICAgICJjb250ZXh0bGliIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImNyeXB0IiwgCi0gICAgICAgICAgICAiZmNudGwiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgImxhbmciLCAKLSAgICAgICAgICAgICJtYXRoIiwgCi0gICAgICAgICAgICAibWltZSIsIAotICAgICAgICAgICAgIm5ldGNsaWVudCIsIAotICAgICAgICAgICAgInNoZWxsIiwgCi0gICAgICAgICAgICAidGV4dHV0aWxzIiwgCi0gICAgICAgICAgICAidGhyZWFkaW5nIiwgCi0gICAgICAgICAgICAidW5peGFkbWluIiwgCi0gICAgICAgICAgICAiemxpYiIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L0Jhc2VIVFRQU2VydmVyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9DR0lIVFRQU2VydmVyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9TaW1wbGVIVFRQU2VydmVyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9Tb2NrZXRTZXJ2ZXIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NnaS5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJudW1iZXJzIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gbnVtYmVyIEFQSXMiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvZGVjcyIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAibWF0aCIsIAotICAgICAgICAgICAgInRocmVhZGluZyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2RlY2ltYWwucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2ZyYWN0aW9ucy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbnVtYmVycy5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJwaWNrbGUiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzZXJpYWxpc2F0aW9uL3BlcnNpc3RlbmNlIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJpbyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2NQaWNrbGUuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3BpY2tsZS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcGlja2xldG9vbHMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NoZWx2ZS5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJwa2d1dGlsIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gcGFja2FnZSBleHRlbnNpb24gdXRpbGl0eSBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcGtndXRpbC5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJwbGlzdGxpYiI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiR2VuZXJhdGUgYW5kIHBhcnNlIE1hYyBPUyBYIC5wbGlzdCBmaWxlcyIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImRhdGV0aW1lIiwgCi0gICAgICAgICAgICAiaW8iCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wbGlzdGxpYi5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJwcHJpbnQiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBwcmV0dHktcHJpbnQgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImlvIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcHByaW50LnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInByb2ZpbGUiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBiYXNpYyBwZXJmb3JtYW5jZSBwcm9maWxpbmcgc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29kZWNzIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImxhbmciLCAKLSAgICAgICAgICAgICJyZXNvdXJjZSIsIAotICAgICAgICAgICAgInRleHR1dGlscyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NQcm9maWxlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9fbHNwcm9mLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wcm9maWxlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wc3RhdHMucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAicHlkb2MiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBpbnRlcmFjdGl2ZSBoZWxwIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvZGVjcyIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAicGtndXRpbCIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2JpbmRpcn0vcHlkb2MiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3B5ZG9jLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9weWRvY19kYXRhIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInJlIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gUmVndWxhciBFeHByZXNzaW9uIEFQSXMiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zcmUucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAicmVzb3VyY2UiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiByZXNvdXJjZSBjb250cm9sIGludGVyZmFjZSIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3Jlc291cmNlLnNvIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInJvYm90cGFyc2VyIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gcm9ib3RzLnR4dCBwYXJzZXIiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvbnRleHRsaWIiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAibmV0Y2xpZW50IiwgCi0gICAgICAgICAgICAidGV4dHV0aWxzIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcm9ib3RwYXJzZXIucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAicnVucHkiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBoZWxwZXIgZm9yIGxvY2F0aW5nL2V4ZWN1dGluZyBzY3JpcHRzIGluIG1vZHVsZSBuYW1lc3BhY2UiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJwa2d1dGlsIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvcnVucHkucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAic2hlbGwiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBzaGVsbC1saWtlIGZ1bmN0aW9uYWxpdHkiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvbXByZXNzaW9uIiwgCi0gICAgICAgICAgICAiY29yZSIsIAotICAgICAgICAgICAgImlvIiwgCi0gICAgICAgICAgICAidW5peGFkbWluIiwgCi0gICAgICAgICAgICAiemxpYiIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2NtZC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvY29tbWFuZHMucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2RpcmNhY2hlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9mbm1hdGNoLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9nbG9iLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9wb3BlbjIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NobGV4LnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zaHV0aWwucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAic210cGQiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBTaW1wbGUgTWFpbCBUcmFuc3BvcnQgRGFlbW9uIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiZmNudGwiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgImxhbmciCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtiaW5kaXJ9L3NtdHBkLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9hc3luY2hhdC5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvYXN5bmNvcmUucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3NtdHBkLnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInNxbGl0ZTMiOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBTcWxpdGUzIGRhdGFiYXNlIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJkYXRldGltZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19zcWxpdGUzLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9zcWxpdGUzIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInN0cmluZ29sZCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHN0cmluZyBBUElzIFtkZXByZWNhdGVkXSIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3N0cmluZ29sZC5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJzdWJwcm9jZXNzIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gc3VicHJvY2VzcyBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiZmNudGwiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgInBpY2tsZSIsIAotICAgICAgICAgICAgInRocmVhZGluZyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3N1YnByb2Nlc3MucHkiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAic3lzbG9nIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gc3lzbG9nIGludGVyZmFjZSIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL3N5c2xvZy5zbyIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJ0ZXJtaW5hbCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHRlcm1pbmFsIGNvbnRyb2xsaW5nIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJpbyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3B0eS5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvdHR5LnB5IgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInRleHR1dGlscyI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIG9wdGlvbiBwYXJzaW4iLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvZGVjcyIsIAotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJpbyIsIAotICAgICAgICAgICAgImxhbmciCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9jc3YucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL19jc3Yuc28iLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L29wdHBhcnNlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy90ZXh0d3JhcC5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJ0aHJlYWRpbmciOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB0aHJlYWRpbmcgJiBzeW5jaHJvbml6YXRpb24gc3VwcG9ydCIsIAotICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L1F1ZXVlLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9fdGhyZWFkaW5nX2xvY2FsLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9kdW1teV90aHJlYWQucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2R1bW15X3RocmVhZGluZy5weSIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbXV0ZXgucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3RocmVhZGluZy5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJ0a2ludGVyIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gVGNsL1RrIGJpbmRpbmdzIiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL190a2ludGVyLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi10ayIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJ1bml0dGVzdCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIHVuaXQgdGVzdGluZyBmcmFtZXdvcmsiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJkaWZmbGliIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAicHByaW50IiwgCi0gICAgICAgICAgICAic2hlbGwiCi0gICAgICAgIF0sIAotICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy91bml0dGVzdCIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJ1bml4YWRtaW4iOiB7Ci0gICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBVbml4IGFkbWluaXN0cmF0aW9uIHN1cHBvcnQiLCAKLSAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImNvcmUiLCAKLSAgICAgICAgICAgICJpbyIKLSAgICAgICAgXSwgCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2dldHBhc3MucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L2xpYi1keW5sb2FkL2dycC5zbyIsIAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvbmlzLnNvIgotICAgICAgICBdCi0gICAgfSwgCi0gICAgInhtbCI6IHsKLSAgICAgICAgInN1bW1hcnkiOiAiUHl0aG9uIGJhc2ljIFhNTCBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvX2VsZW1lbnR0cmVlLnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9saWItZHlubG9hZC9weWV4cGF0LnNvIiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy94bWwiCi0gICAgICAgIF0KLSAgICB9LCAKLSAgICAieG1scnBjIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gWE1MLVJQQyBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb2RlY3MiLCAKLSAgICAgICAgICAgICJjb21wcmVzc2lvbiIsIAotICAgICAgICAgICAgImNvbnRleHRsaWIiLCAKLSAgICAgICAgICAgICJjb3JlIiwgCi0gICAgICAgICAgICAiY3J5cHQiLCAKLSAgICAgICAgICAgICJkYXRldGltZSIsIAotICAgICAgICAgICAgImZjbnRsIiwgCi0gICAgICAgICAgICAiaW8iLCAKLSAgICAgICAgICAgICJsYW5nIiwgCi0gICAgICAgICAgICAibWF0aCIsIAotICAgICAgICAgICAgIm1pbWUiLCAKLSAgICAgICAgICAgICJuZXRjbGllbnQiLCAKLSAgICAgICAgICAgICJuZXRzZXJ2ZXIiLCAKLSAgICAgICAgICAgICJwa2d1dGlsIiwgCi0gICAgICAgICAgICAicHlkb2MiLCAKLSAgICAgICAgICAgICJ0ZXh0dXRpbHMiLCAKLSAgICAgICAgICAgICJ0aHJlYWRpbmciLCAKLSAgICAgICAgICAgICJ4bWwiLCAKLSAgICAgICAgICAgICJ6bGliIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvRG9jWE1MUlBDU2VydmVyLnB5IiwgCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbjIuNy9TaW1wbGVYTUxSUENTZXJ2ZXIucHkiLCAKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uMi43L3htbHJwY2xpYi5weSIKLSAgICAgICAgXQotICAgIH0sIAotICAgICJ6bGliIjogewotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gemxpYiBjb21wcmVzc2lvbiBzdXBwb3J0IiwgCi0gICAgICAgICJyZGVwZW5kcyI6IFsKLSAgICAgICAgICAgICJjb3JlIgotICAgICAgICBdLCAKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24yLjcvbGliLWR5bmxvYWQvemxpYi5zbyIKLSAgICAgICAgXQotICAgIH0KLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9ydW4tcHRlc3QKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MDAyYTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9ydW4tcHRlc3QKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLSMhL2Jpbi9zaAotCi1weXRob24gLW10ZXN0IC1XIHwgc2VkIC11IC1lICcvXC5cLlwuIG9rLyBzL14vUEFTUzogL2cnIC1lICcvXC5cLlwuIFtFUlJPUnxGQUlMXS8gcy9eL0ZBSUw6IC9nJyAtZSAnL1wuXC5cLiBza2lwcGVkLyBzL14vU0tJUDogL2cnIC1lICdzLyBcLlwuXC4gb2svL2cnIC1lICdzLyBcLlwuXC4gRVJST1IvL2cnIC1lICdzLyBcLlwuXC4gRkFJTC8vZycgLWUgJ3MvIFwuXC5cLiBza2lwcGVkLy9nJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zZWFyY2hfZGJfaF9pbl9pbmNfZGlyc19hbmRfYXZvaWRfd2FybmluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2VhcmNoX2RiX2hfaW5faW5jX2RpcnNfYW5kX2F2b2lkX3dhcm5pbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRhY2I1NTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zZWFyY2hfZGJfaF9pbl9pbmNfZGlyc19hbmRfYXZvaWRfd2FybmluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLXB5dGhvbiBzaG91bGQgc2VhcmNoIGZvciBkYi5oIGluIGluY19kaXJzIGFuZCBub3QgaW4gYSBoYXJkY29kZWQgcGF0aC4KLUlmIGRiLmggaXMgZm91bmQgYnV0IEhBU0hWRVJTSU9OIGlzIG5vdCAyIHdlIGF2b2lkIGEgd2FybmluZyBieSBub3QgCi1hZGRpbmcgdGhpcyBtb2R1bGUgdG8gbWlzc2luZyB2YXJpYWJsZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtkaXN0cmlidXRpb25dCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlaSBHaGVyemFuIDxhbmRyZWlAZ2hlcnphbi5ybz4KLQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggYjg4NzgwOC4uYWU1MTYwNyAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTEyMzcsNiArMTIzNyw4IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAgICAgICAgICMgdGhlIG1vcmUgcmVjZW50IGJlcmtlbGV5ZGIncyBkYi5oIGZpbGUgZmlyc3QgaW4gdGhlIGluY2x1ZGUgcGF0aAotICAgICAgICAgIyB3aGVuIGF0dGVtcHRpbmcgdG8gY29tcGlsZSBhbmQgaXQgd2lsbCBmYWlsLgotICAgICAgICAgZiA9ICIvdXNyL2luY2x1ZGUvZGIuaCIKLSsgICAgICAgIGlmIGxlbihpbmNfZGlycykgIT0gMDoKLSsgICAgICAgICAgICBmID0gb3MucGF0aC5qb2luKGluY19kaXJzWzBdLCAiZGIuaCIpCi0gCi0gICAgICAgICBpZiBob3N0X3BsYXRmb3JtID09ICdkYXJ3aW4nOgotICAgICAgICAgICAgIGlmIGlzX21hY29zeF9zZGtfcGF0aChmKToKLUBAIC0xMjU3LDggKzEyNTksMTAgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcmllcz1saWJyYXJpZXMpKQotICAgICAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgICAgICAgZXh0cy5hcHBlbmQoRXh0ZW5zaW9uKCdic2RkYjE4NScsIFsnYnNkZGJtb2R1bGUuYyddKSkKLS0gICAgICAgICAgICBlbHNlOgotLSAgICAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnYnNkZGIxODUnKQotKyAgICAgICAgICAgICMgSWYgYSBuZXdlciB2ZXJzaW9uIGlzIGRldGVjdGVkIGRvbid0IHJlcG9ydCBhbiB1c2VsZXNzCi0rICAgICAgICAgICAgIyB3YXJuaW5nCi0rICAgICAgICAgICAgI2Vsc2U6Ci0rICAgICAgICAgICAgIyAgICBtaXNzaW5nLmFwcGVuZCgnYnNkZGIxODUnKQotICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICBtaXNzaW5nLmFwcGVuZCgnYnNkZGIxODUnKQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zZXR1cF9weV9za2lwX2Nyb3NzX2ltcG9ydF9jaGVjay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2V0dXBfcHlfc2tpcF9jcm9zc19pbXBvcnRfY2hlY2sucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjY2RiOTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zZXR1cF9weV9za2lwX2Nyb3NzX2ltcG9ydF9jaGVjay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVRoaXMgcGF0Y2ggc2tpcHMgb3ZlciB0aGUgJ2ltcG9ydCBjaGVjaycgc2V0dXAucHkgZG9lcyB3aGVuIGJ1aWxkaW5nCi1leHRlbnNpb25zLiAgVGhpcyBnZW5lcmFsbHkgd29uJ3Qgd29yayB3aGVuIGNyb3NzLWNvbXBpbGluZy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZC1zcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogVG9tIFphbnVzc2kgPHRvbS56YW51c3NpQGludGVsLmNvbT4KLQotSW5kZXg6IFB5dGhvbi0yLjcuMi9zZXR1cC5weQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIFB5dGhvbi0yLjcuMi5vcmlnL3NldHVwLnB5CTIwMTEtMTEtMDQgMTY6NDY6MzQuNTUzNzk2NDEwIC0wNTAwCi0rKysgUHl0aG9uLTIuNy4yL3NldHVwLnB5CTIwMTEtMTEtMDQgMTY6NTk6NDkuNjkyODAyMzEzIC0wNTAwCi1AQCAtMjg3LDYgKzI4NywxNSBAQAotICAgICAgICAgICAgICAgICAgICAgICAgICAgKGV4dC5uYW1lLCBzeXMuZXhjX2luZm8oKVsxXSkpCi0gICAgICAgICAgICAgc2VsZi5mYWlsZWQuYXBwZW5kKGV4dC5uYW1lKQotICAgICAgICAgICAgIHJldHVybgotKwotKyAgICAgICAgIyBJZiB3ZSdyZSBjcm9zcy1jb21waWxpbmcsIHdlIHdhbnQgdG8gc2tpcCB0aGUgaW1wb3J0IGNoZWNrCi0rICAgICAgICAjIGkuZS4gd2Ugc2hvdWxkbid0IGJlIGR5bmFtaWNhbGx5IGxvYWRpbmcgdGFyZ2V0IHNoYXJlZCBsaWJzCi0rICAgICAgICBpZiBvcy5lbnZpcm9uLmdldCgnQ1JPU1NfQ09NUElMRScpIGlzIG5vdCBOb25lOgotKyAgICAgICAgICAgIHNlbGYuYW5ub3VuY2UoCi0rICAgICAgICAgICAgICAgICdXQVJOSU5HOiBza2lwcGluZyBpbXBvcnQgY2hlY2sgZm9yIGNyb3NzLWNvbXBpbGVkICIlcyInICUKLSsgICAgICAgICAgICAgICAgZXh0Lm5hbWUpCi0rICAgICAgICAgICAgcmV0dXJuCi0rCi0gICAgICAgICAjIFdvcmthcm91bmQgZm9yIE1hYyBPUyBYOiBUaGUgQ2FyYm9uLWJhc2VkIG1vZHVsZXMgY2Fubm90IGJlCi0gICAgICAgICAjIHJlbGlhYmx5IGltcG9ydGVkIGludG8gYSBjb21tYW5kLWxpbmUgUHl0aG9uCi0gICAgICAgICBpZiAnQ2FyYm9uJyBpbiBleHQuZXh0cmFfbGlua19hcmdzOgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zZXR1cHR3ZWFrcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vc2V0dXB0d2Vha3MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNhOTFiMTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zZXR1cHR3ZWFrcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLVRoaXMgcGF0Y2ggcmVtb3ZlcyB2YXJpb3VzIHdheXMgbmF0aXZlIHN5c3RlbSBvcHRpb25zIGNhbiBwYXNzIGludG8gdGhlIHB5dGhvbiAKLWNvbXBpbGF0aW9uIGFuZCBzb21laG93IGJyZWFrIEMgbW9kdWxlcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBTcGVjaWZpY10KLQotUlAgMjAxMi8wNC8yMwotCi1JbmRleDogUHl0aG9uLTIuNy4yL3NldHVwLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4yLm9yaWcvc2V0dXAucHkJMjAxMi0wNC0yMyAyMDowMzo0Ny4yOTU1ODI1NTMgKzAwMDAKLSsrKyBQeXRob24tMi43LjIvc2V0dXAucHkJMjAxMi0wNC0yMyAyMDowMzoxNS4wMDAwMDAwMDAgKzAwMDAKLUBAIC0yMzEsNyArMjMxLDEzIEBACi0gICAgICAgICAjIGNvbXBpbGVycwotICAgICAgICAgaWYgY29tcGlsZXIgaXMgbm90IE5vbmU6Ci0gICAgICAgICAgICAgKGNjc2hhcmVkLGNmbGFncykgPSBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXJzKCdDQ1NIQVJFRCcsJ0NGTEFHUycpCi0tICAgICAgICAgICAgYXJnc1snY29tcGlsZXJfc28nXSA9IGNvbXBpbGVyICsgJyAnICsgY2NzaGFyZWQgKyAnICcgKyBjZmxhZ3MKLSsgICAgICAgICAgICAjIE5lZWQgdG8gZmlsdGVyIG91dCAtaXN5c3Jvb3QgZnJvbSB0aGUgZmxhZ3MuIElkZWFsbHkgc2hvdWxkIAotKyAgICAgICAgICAgICMgZmlndXJlIG91dCB0YXJnZXQgZmxhZ3MgaGVyZS4KLSsgICAgICAgICAgICBmbGFncyA9IFtdCi0rICAgICAgICAgICAgZm9yIGYgaW4gY2ZsYWdzLnNwbGl0KCk6Ci0rICAgICAgICAgICAgICAgIGlmIG5vdCBmLnN0YXJ0c3dpdGgoIi1pc3lzdGVtIik6Ci0rICAgICAgICAgICAgICAgICAgICBmbGFncy5hcHBlbmQoZikKLSsgICAgICAgICAgICBhcmdzWydjb21waWxlcl9zbyddID0gY29tcGlsZXIgKyAnICcgKyBjY3NoYXJlZCArICcgJyArICcgJy5qb2luKGZsYWdzKQotICAgICAgICAgc2VsZi5jb21waWxlci5zZXRfZXhlY3V0YWJsZXMoKiphcmdzKQotIAotICAgICAgICAgYnVpbGRfZXh0LmJ1aWxkX2V4dGVuc2lvbnMoc2VsZikKLUBAIC0zOTMsNyArMzk5LDYgQEAKLSAgICAgICAgICMgaW50byBjb25maWd1cmUgYW5kIHN0b3JlZCBpbiB0aGUgTWFrZWZpbGUgKGlzc3VlIGZvdW5kIG9uIE9TIFggMTAuMykuCi0gICAgICAgICBmb3IgZW52X3ZhciwgYXJnX25hbWUsIGRpcl9saXN0IGluICgKLSAgICAgICAgICAgICAgICAgKCdMREZMQUdTJywgJy1SJywgc2VsZi5jb21waWxlci5ydW50aW1lX2xpYnJhcnlfZGlycyksCi0tICAgICAgICAgICAgICAgICgnTERGTEFHUycsICctTCcsIHNlbGYuY29tcGlsZXIubGlicmFyeV9kaXJzKSwKLSAgICAgICAgICAgICAgICAgKCdDUFBGTEFHUycsICctSScsIHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzKSk6Ci0gICAgICAgICAgICAgZW52X3ZhbCA9IHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcihlbnZfdmFyKQotICAgICAgICAgICAgIGlmIGVudl92YWw6Ci1AQCAtNDE5LDE2ICs0MjQsMTYgQEAKLSAgICAgICAgICAgICAgICAgICAgIGZvciBkaXJlY3RvcnkgaW4gcmV2ZXJzZWQob3B0aW9ucy5kaXJzKToKLSAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3QoZGlyX2xpc3QsIGRpcmVjdG9yeSkKLSAKLS0gICAgICAgIGlmIG9zLnBhdGgubm9ybXBhdGgoc3lzLnByZWZpeCkgIT0gJy91c3InIFwKLS0gICAgICAgICAgICAgICAgYW5kIG5vdCBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoJ1BZVEhPTkZSQU1FV09SSycpOgotKyMgICAgICAgIGlmIG9zLnBhdGgubm9ybXBhdGgoc3lzLnByZWZpeCkgIT0gJy91c3InIFwKLSsjICAgICAgICAgICAgICAgIGFuZCBub3Qgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCdQWVRIT05GUkFNRVdPUksnKToKLSAgICAgICAgICAgICAjIE9TWCBub3RlOiBEb24ndCBhZGQgTElCRElSIGFuZCBJTkNMVURFRElSIHRvIGJ1aWxkaW5nIGEgZnJhbWV3b3JrCi0gICAgICAgICAgICAgIyAoUFlUSE9ORlJBTUVXT1JLIGlzIHNldCkgdG8gYXZvaWQgIyBsaW5raW5nIHByb2JsZW1zIHdoZW4KLSAgICAgICAgICAgICAjIGJ1aWxkaW5nIGEgZnJhbWV3b3JrIHdpdGggZGlmZmVyZW50IGFyY2hpdGVjdHVyZXMgdGhhbgotICAgICAgICAgICAgICMgdGhlIG9uZSB0aGF0IGlzIGN1cnJlbnRseSBpbnN0YWxsZWQgKGlzc3VlICM3NDczKQotLSAgICAgICAgICAgIGFkZF9kaXJfdG9fbGlzdChzZWxmLmNvbXBpbGVyLmxpYnJhcnlfZGlycywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgc3lzY29uZmlnLmdldF9jb25maWdfdmFyKCJMSUJESVIiKSkKLS0gICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMsCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgIHN5c2NvbmZpZy5nZXRfY29uZmlnX3ZhcigiSU5DTFVERURJUiIpKQotKyMgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5saWJyYXJ5X2RpcnMsCi0rIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIkxJQkRJUiIpKQotKyMgICAgICAgICAgICBhZGRfZGlyX3RvX2xpc3Qoc2VsZi5jb21waWxlci5pbmNsdWRlX2RpcnMsCi0rIyAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIklOQ0xVREVESVIiKSkKLSAKLSAgICAgICAgIHRyeToKLSAgICAgICAgICAgICBoYXZlX3VuaWNvZGUgPSB1bmljb2RlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3NpdGVjdXN0b21pemUucHkgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3NpdGVjdXN0b21pemUucHkKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRjOGI1ZTIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zaXRlY3VzdG9taXplLnB5CisrKyAvZGV2L251bGwKQEAgLTEsMzcgKzAsMCBAQAotIyBPcGVuRW1iZWRkZWQgc2l0ZWN1c3RvbWl6ZS5weSAoQykgMjAwMi0yMDA4IE1pY2hhZWwgJ01pY2tleScgTGF1ZXIgPG1sYXVlckB2YW5pbGxlLW1lZGlhLmRlPgotIyBHUEx2MiBvciBsYXRlcgotIyBWZXJzaW9uOiAyMDA4MTEyMwotIyBGZWF0dXJlczoKLSMgKiBzZXQgcHJvcGVyIGRlZmF1bHQgZW5jb2RpbmcKLSMgKiBlbmFibGUgcmVhZGxpbmUgY29tcGxldGlvbiBpbiB0aGUgaW50ZXJhY3RpdmUgaW50ZXJwcmV0ZXIKLSMgKiBsb2FkIGNvbW1hbmQgbGluZSBoaXN0b3J5IG9uIHN0YXJ0dXAKLSMgKiBzYXZlIGNvbW1hbmQgbGluZSBoaXN0b3J5IG9uIGV4aXQgCi0KLWltcG9ydCBvcwotCi1kZWYgX19leGl0aGFuZGxlcigpOgotICAgIHRyeToKLSAgICAgICAgcmVhZGxpbmUud3JpdGVfaGlzdG9yeV9maWxlKCAiJXMvLnB5dGhvbi1oaXN0b3J5IiAlIG9zLmdldGVudiggIkhPTUUiLCAiL3RtcCIgKSApCi0gICAgZXhjZXB0IElPRXJyb3I6Ci0gICAgICAgIHBhc3MKLQotZGVmIF9fcmVnaXN0ZXJFeGl0SGFuZGxlcigpOgotICAgIGltcG9ydCBhdGV4aXQKLSAgICBhdGV4aXQucmVnaXN0ZXIoIF9fZXhpdGhhbmRsZXIgKQotCi1kZWYgX19lbmFibGVSZWFkbGluZVN1cHBvcnQoKToKLSAgICByZWFkbGluZS5zZXRfaGlzdG9yeV9sZW5ndGgoIDEwMDAgKQotICAgIHJlYWRsaW5lLnBhcnNlX2FuZF9iaW5kKCAidGFiOiBjb21wbGV0ZSIgKQotICAgIHRyeToKLSAgICAgICAgcmVhZGxpbmUucmVhZF9oaXN0b3J5X2ZpbGUoICIlcy8ucHl0aG9uLWhpc3RvcnkiICUgb3MuZ2V0ZW52KCAiSE9NRSIsICIvdG1wIiApICkKLSAgICBleGNlcHQgSU9FcnJvcjoKLSAgICAgICAgcGFzcwotCi1pbXBvcnQgc3lzCi10cnk6Ci0gICAgaW1wb3J0IHJsY29tcGxldGVyLCByZWFkbGluZQotZXhjZXB0IEltcG9ydEVycm9yOgotICAgIHBhc3MKLWVsc2U6Ci0gICAgX19yZWdpc3RlckV4aXRIYW5kbGVyKCkKLSAgICBfX2VuYWJsZVJlYWRsaW5lU3VwcG9ydCgpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZV8yLjcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uL3N1cHBvcnRfU09VUkNFX0RBVEVfRVBPQ0hfaW5fcHlfY29tcGlsZV8yLjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEyNjUxNzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGVfMi43LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotVGhlIGNvbXBpbGVkIC5weWMgZmlsZXMgY29udGFpbiB0aW1lIHN0YW1wIGNvcnJlc3BvbmRpbmcgdG8gdGhlIGNvbXBpbGUgdGltZS4KLVRoaXMgcHJldmVudHMgYmluYXJ5IHJlcHJvZHVjaWJpbGl0eS4gVGhpcyBwYXRjaCBhbGxvd3MgdG8gYWNoaWV2ZSBiaW5hcnkKLXJlcHJvZHVjaWJpbGl0eSBieSBvdmVycmlkaW5nIHRoZSBidWlsZCB0aW1lIHN0YW1wIGJ5IHRoZSB2YWx1ZSAKLWV4cG9ydGVkIHZpYSBTT1VSQ0VfREFURV9FUE9DSC4gCi0KLVBhdGNoIGJ5IEJlcm5oYXJkIE0uIFdpZWRlbWFubgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci0KLVNpZ25lZC1vZmYtYnk6IEp1cm8gQnlzdHJpY2t5IDxqdXJvLmJ5c3RyaWNreUBpbnRlbC5jb20+Ci0KLUZyaSBGZWIgMjQgMTc6MDg6MjUgVVRDIDIwMTcgLSBid2llZGVtYW5uQHN1c2UuY29tCi0KLS0gQWRkIHJlcHJvZHVjaWJsZS5wYXRjaCB0byBhbGxvdyByZXByb2R1Y2libGUgYnVpbGRzIG9mIHZhcmlvdXMKLSAgcHl0aG9uIHBhY2thZ2VzIGxpa2UgcHl0aG9uLWFtcXAKLSAgVXBzdHJlYW06IGh0dHBzOi8vZ2l0aHViLmNvbS9weXRob24vY3B5dGhvbi9wdWxsLzI5NgotCi0KLUBAIC0wLDAgKzEsMTUgQEAKLUluZGV4OiBQeXRob24tMi43LjEzL0xpYi9weV9jb21waWxlLnB5Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy4xMy5vcmlnL0xpYi9weV9jb21waWxlLnB5Ci0rKysgUHl0aG9uLTIuNy4xMy9MaWIvcHlfY29tcGlsZS5weQotQEAgLTEwOCw2ICsxMDgsMTAgQEAgZGVmIGNvbXBpbGUoZmlsZSwgY2ZpbGU9Tm9uZSwgZGZpbGU9Tm9uZQotICAgICAgICAgICAgIHRpbWVzdGFtcCA9IGxvbmcob3MuZnN0YXQoZi5maWxlbm8oKSkuc3RfbXRpbWUpCi0gICAgICAgICBleGNlcHQgQXR0cmlidXRlRXJyb3I6Ci0gICAgICAgICAgICAgdGltZXN0YW1wID0gbG9uZyhvcy5zdGF0KGZpbGUpLnN0X210aW1lKQotKyAgICAgICAgc2RlID0gb3MuZW52aXJvbi5nZXQoJ1NPVVJDRV9EQVRFX0VQT0NIJykKLSsgICAgICAgIGlmIHNkZSBhbmQgdGltZXN0YW1wID4gaW50KHNkZSk6Ci0rICAgICAgICAgICAgdGltZXN0YW1wID0gaW50KHNkZSkKLSsgICAgICAgICAgICBvcy51dGltZShmaWxlLCAodGltZXN0YW1wLCB0aW1lc3RhbXApKQotICAgICAgICAgY29kZXN0cmluZyA9IGYucmVhZCgpCi0gICAgIHRyeToKLSAgICAgICAgIGNvZGVvYmplY3QgPSBfX2J1aWx0aW5fXy5jb21waWxlKGNvZGVzdHJpbmcsIGRmaWxlIG9yIGZpbGUsJ2V4ZWMnKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi91c2Vfc3lzcm9vdF9uY3Vyc2VzX2luc3RlYWRfb2ZfaG9zdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24vdXNlX3N5c3Jvb3RfbmN1cnNlc19pbnN0ZWFkX29mX2hvc3QucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZiNGEzYmMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbi91c2Vfc3lzcm9vdF9uY3Vyc2VzX2luc3RlYWRfb2ZfaG9zdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVB5dGhvbiB0cmllcyB0byB1c2UgbmN1cnNlc3cgZnJvbSB0aGUgaG9zdCwKLWlmIGl0IGlzIG5vdCBmb3VuZCBjYXVzZXMgYW4gZXJyb3Igb24gY29uZmlndXJlLAotd2Ugc2hvdWxkIHVzZSBuY3Vyc2VzdyBmcm9tIHN5c3Jvb3QgaW5zdGVhZAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQWxlamFuZHJvIEhlcm5hbmRleiA8YWxlamFuZHJvLmhlcm5hbmRlekBsaW51eC5pbnRlbC5jb20+Ci0KLUluZGV4OiBQeXRob24tMi43LjkvY29uZmlndXJlLmFjCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gUHl0aG9uLTIuNy45Lm9yaWcvY29uZmlndXJlLmFjCi0rKysgUHl0aG9uLTIuNy45L2NvbmZpZ3VyZS5hYwotQEAgLTQzMTEsNyArNDMxMSw3IEBAIGZpCi0gCi0gIyBmaXJzdCBjdXJzZXMgY29uZmlndXJlIGNoZWNrCi0gYWNfc2F2ZV9jcHBmbGFncz0iJENQUEZMQUdTIgotLUNQUEZMQUdTPSIkQ1BQRkxBR1MgLUkvdXNyL2luY2x1ZGUvbmN1cnNlc3ciCi0rQ1BQRkxBR1M9IiRDUFBGTEFHUyAtST0vdXNyL2luY2x1ZGUvbmN1cnNlc3ciCi0gCi0gQUNfQ0hFQ0tfSEVBREVSUyhjdXJzZXMuaCBuY3Vyc2VzLmgpCi0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jeXRob25fMC4yOS4xNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWN5dGhvbl8wLjI5LjE2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJjZTZiZGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1jeXRob25fMC4yOS4xNi5iYgpAQCAtMCwwICsxLDE4IEBACitpbmhlcml0IHNldHVwdG9vbHMzCityZXF1aXJlIHB5dGhvbi1jeXRob24uaW5jCisKK1JERVBFTkRTXyR7UE59ICs9ICJcCisgICAgcHl0aG9uMy1zZXR1cHRvb2xzIFwKKyIKKworIyBydW5uaW5nIGJ1aWxkX2V4dCBhIHNlY29uZCB0aW1lIGR1cmluZyBpbnN0YWxsIGZhaWxzLCBiZWNhdXNlIFB5dGhvbgorIyB3b3VsZCB0aGVuIGF0dGVtcHQgdG8gaW1wb3J0IGN5dGhvbml6ZWQgbW9kdWxlcyBidWlsdCBmb3IgdGhlIHRhcmdldAorIyBhcmNoaXRlY3R1cmUuCitESVNUVVRJTFNfSU5TVEFMTF9BUkdTICs9ICItLXNraXAtYnVpbGQiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICMgcmVuYW1lIHNjcmlwdHMgdGhhdCB3b3VsZCBjb25mbGljdCB3aXRoIHRoZSBQeXRob24gMiBidWlsZCBvZiBDeXRob24KKyAgICBtdiAke0R9JHtiaW5kaXJ9L2N5dGhvbiAke0R9JHtiaW5kaXJ9L2N5dGhvbjMKKyAgICBtdiAke0R9JHtiaW5kaXJ9L2N5dGhvbml6ZSAke0R9JHtiaW5kaXJ9L2N5dGhvbml6ZTMKKyAgICBtdiAke0R9JHtiaW5kaXJ9L2N5Z2RiICR7RH0ke2JpbmRpcn0vY3lnZGIzCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kYnVzXzEuMi4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDA1ZGM0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotU1VNTUFSWSA9ICJQeXRob24gYmluZGluZ3MgZm9yIHRoZSBEQnVzIGludGVyLXByb2Nlc3MgY29tbXVuaWNhdGlvbiBzeXN0ZW0iCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL1NvZnR3YXJlL2RidXMiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIwMzI0MDUxODk5NGRmNmQ4Yzk3NDY3NTY3NWU1Y2E0IgotREVQRU5EUyA9ICJleHBhdCBkYnVzIGdsaWItMi4wIHZpcnR1YWwvbGliaW50bCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZGJ1cy5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvZGJ1cy1weXRob24vZGJ1cy1weXRob24tJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDI4YjdhOWU3ZTJkMTU0YTdjZWIzZTEzNTM2MjgzZTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2RkNGRlMmM0ZjVlNThmMjg3YjEyMDEzZWQ3YjQxZGVlODFkNTAzYzhkMGQyMzk3YzViZDJmYjAxYmFkZjI2MCIKLQotUyA9ICIke1dPUktESVJ9L2RidXMtcHl0aG9uLSR7UFZ9IgotCi1pbmhlcml0IGRpc3R1dGlsczMtYmFzZSBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLSMgZG9jdW1lbnRhdGlvbiBuZWVkcyBweXRob24zLXNwaGlueCwgd2hpY2ggaXMgbm90IGluIG9lLWNvcmUgb3IgbWV0YS1weXRob24gZm9yIG5vdwotIyBjaGFuZ2UgdG8gdXNlIFBBQ0tBR0VDT05GSUcgd2hlbiBweXRob24zLXNwaGlueCBpcyBhZGRlZCB0byBvZS1jb3JlCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1kb2N1bWVudGF0aW9uIgotCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtaW8gcHl0aG9uMy1sb2dnaW5nIHB5dGhvbjMtc3RyaW5nb2xkIHB5dGhvbjMtdGhyZWFkaW5nIHB5dGhvbjMteG1sIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9wa2djb25maWciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjE2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZGJ1c18xLjIuMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTE3MDBmYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWRidXNfMS4yLjE2LmJiCkBAIC0wLDAgKzEsMjYgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgREJ1cyBpbnRlci1wcm9jZXNzIGNvbW11bmljYXRpb24gc3lzdGVtIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9Tb2Z0d2FyZS9kYnVzIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMDMyNDA1MTg5OTRkZjZkOGM5NzQ2NzU2NzVlNWNhNCIKK0RFUEVORFMgPSAiZXhwYXQgZGJ1cyBnbGliLTIuMCB2aXJ0dWFsL2xpYmludGwiCisKK1NSQ19VUkkgPSAiaHR0cDovL2RidXMuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2RidXMtcHl0aG9uL2RidXMtcHl0aG9uLSR7UFZ9LnRhci5neiIKKworU1JDX1VSSVttZDVzdW1dID0gIjUxYTQ1Yzk3M2Q4MmJlZGZmMDMzYTRiNTdkNjlkNWQ4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjExMjM4ZjFkODZjOTk1ZDhhZWQyZTIyZjA0YTFlMzc3OWYwZDcwZTU4N2NhZmZlYWI0ODU3ZjNjNjYyZWQ1YTQiCisKK1MgPSAiJHtXT1JLRElSfS9kYnVzLXB5dGhvbi0ke1BWfSIKKworaW5oZXJpdCBkaXN0dXRpbHMzLWJhc2UgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCisjIGRvY3VtZW50YXRpb24gbmVlZHMgcHl0aG9uMy1zcGhpbngsIHdoaWNoIGlzIG5vdCBpbiBvZS1jb3JlIG9yIG1ldGEtcHl0aG9uIGZvciBub3cKKyMgY2hhbmdlIHRvIHVzZSBQQUNLQUdFQ09ORklHIHdoZW4gcHl0aG9uMy1zcGhpbnggaXMgYWRkZWQgdG8gb2UtY29yZQorRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtZG9jdW1lbnRhdGlvbiIKKworCitSREVQRU5EU18ke1BOfSA9ICJweXRob24zLWlvIHB5dGhvbjMtbG9nZ2luZyBweXRob24zLXN0cmluZ29sZCBweXRob24zLXRocmVhZGluZyBweXRob24zLXhtbCIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcGtnY29uZmlnIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb2N1dGlsc18wLjE1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9jdXRpbHNfMC4xNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjVjM2Y1ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb2N1dGlsc18wLjE1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotU1VNTUFSWSA9ICJUZXh0IHByb2Nlc3Npbmcgc3lzdGVtIGZvciBkb2N1bWVudGF0aW9uIgotSE9NRVBBR0UgPSAiaHR0cDovL2RvY3V0aWxzLnNvdXJjZWZvcmdlLm5ldCIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJQU0YgJiBCU0QtMi1DbGF1c2UgJiBHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT0zNWEyM2Q0MmI2MTU0NzA1ODM1NjMxMzI4NzJjOTdkNiIKLQotREVQRU5EUyA9ICJweXRob24zIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9kb2N1dGlscy9kb2N1dGlscy0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiZjUxNzI5ZjE5ZTcwYTlkYzQ4Mzc0MzMxOTNhNWU3OTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzM1ZTg3ZTk4NWY3MDEwNmY2Zjk3ZTA1MGYzYmVkOTkwNjQxZTBlMTA0NTY2MTM0YjljZDIzODQ5YTQ2MGU5NiIKLQotUyA9ICIke1dPUktESVJ9L2RvY3V0aWxzLSR7UFZ9IgotCi1pbmhlcml0IGRpc3R1dGlsczMKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1kb2N1dGlsc18wLjE2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9jdXRpbHNfMC4xNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDU0N2ExCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZG9jdXRpbHNfMC4xNi5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIlRleHQgcHJvY2Vzc2luZyBzeXN0ZW0gZm9yIGRvY3VtZW50YXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vZG9jdXRpbHMuc291cmNlZm9yZ2UubmV0IgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIlBTRiAmIEJTRC0yLUNsYXVzZSAmIEdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PTdhNDY0NjkwN2FiOTA4M2M4MjYyODBiMTllMTAzMTA2IgorCitERVBFTkRTID0gInB5dGhvbjMiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2RvY3V0aWxzL2RvY3V0aWxzLSR7UFZ9LnRhci5neiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5Y2NiNmYzMzJlMjMzNjBmOTY0ZGU3MmM4ZWE1ZjBlZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZDRlOTk5Y2NhNzRhNTI2MTE3NzNhNDI5MTIwODgwNzgzNjNhMzA5MTJlODgyMmY3YTNkMzgwNDNiNzY3NTczIgorCitTID0gIiR7V09SS0RJUn0vZG9jdXRpbHMtJHtQVn0iCisKK2luaGVyaXQgZGlzdHV0aWxzMworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8zLjAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8zLjAuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWRkNzUzZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMy4wLjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBsaWJyYXJ5IHVzZWQgdG8gaW50ZXJhY3Qgd2l0aCBHaXQgcmVwb3NpdG9yaWVzIgotREVTQ1JJUFRJT04gPSAiR2l0UHl0aG9uIHByb3ZpZGVzIG9iamVjdCBtb2RlbCByZWFkIGFuZCB3cml0ZSBhY2Nlc3MgdG8gXAotYSBnaXQgcmVwb3NpdG9yeS4gQWNjZXNzIHJlcG9zaXRvcnkgaW5mb3JtYXRpb24gY29udmVuaWVudGx5LCBhbHRlciB0aGUgXAotaW5kZXggZGlyZWN0bHksIGhhbmRsZSByZW1vdGVzLCBvciBnbyBkb3duIHRvIGxvdy1sZXZlbCBvYmplY3QgZGF0YWJhc2UgXAotYWNjZXNzIHdpdGggYmlnLWZpbGVzIHN1cHBvcnQuIgotSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vZ2l0cHl0aG9uLWRldmVsb3BlcnMvR2l0UHl0aG9uIgotU0VDVElPTiA9ICJkZXZlbC9weXRob24iCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThiOGQyNmMzN2MxZDVhMDRmOWIwMTg2ZWRiZWJjMTgzIgotCi1QWVBJX1BBQ0tBR0UgPSAiR2l0UHl0aG9uIgotCi1pbmhlcml0IHB5cGkgc2V0dXB0b29sczMKLQotU1JDX1VSSVttZDVzdW1dID0gImNjZWMxNGE1YzlmMTg3MDI0MDYxMjI5ODNkODAwMzJjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQyZjQ5NDVmODI2MGY2OTgxZDcyNGY1OTU3YmMwNzYzOThhZGE1NWNiNWQyNWFhZWUxMDEwOGJjZGM4OTQxMDAiCi0KLURFUEVORFMgKz0gIiAke1BZVEhPTl9QTn0tZ2l0ZGIiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIgXAotICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWdpdGRiIFwKLSAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0taW8gXAotICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKLSAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbWF0aCBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCi0gICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXVuaXR0ZXN0IFwKLSAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tdW5peGFkbWluIFwKLSAgICAgICAgICAgICAgICAgICBnaXQgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMy4wLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRfMy4wLjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzYzMTNlZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdF8zLjAuNS5iYgpAQCAtMCwwICsxLDMzIEBACitTVU1NQVJZID0gIlB5dGhvbiBsaWJyYXJ5IHVzZWQgdG8gaW50ZXJhY3Qgd2l0aCBHaXQgcmVwb3NpdG9yaWVzIgorREVTQ1JJUFRJT04gPSAiR2l0UHl0aG9uIHByb3ZpZGVzIG9iamVjdCBtb2RlbCByZWFkIGFuZCB3cml0ZSBhY2Nlc3MgdG8gXAorYSBnaXQgcmVwb3NpdG9yeS4gQWNjZXNzIHJlcG9zaXRvcnkgaW5mb3JtYXRpb24gY29udmVuaWVudGx5LCBhbHRlciB0aGUgXAoraW5kZXggZGlyZWN0bHksIGhhbmRsZSByZW1vdGVzLCBvciBnbyBkb3duIHRvIGxvdy1sZXZlbCBvYmplY3QgZGF0YWJhc2UgXAorYWNjZXNzIHdpdGggYmlnLWZpbGVzIHN1cHBvcnQuIgorSE9NRVBBR0UgPSAiaHR0cDovL2dpdGh1Yi5jb20vZ2l0cHl0aG9uLWRldmVsb3BlcnMvR2l0UHl0aG9uIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PThiOGQyNmMzN2MxZDVhMDRmOWIwMTg2ZWRiZWJjMTgzIgorCitQWVBJX1BBQ0tBR0UgPSAiR2l0UHl0aG9uIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gIjc1NTVhZDg5YTIyZjY2M2MyNWNjZWQ1ZjYyM2JkZWYwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljMjM5OGZmYzNkY2IzYzQwYjI3MzI0YjMxNmYwOGE0ZjkzYWQ2NDZkNWE2MzI4Y2FmYmI4NzFhYTc5ZjVlNDIiCisKK0RFUEVORFMgKz0gIiAke1BZVEhPTl9QTn0tZ2l0ZGIiCisKK1JERVBFTkRTXyR7UE59ICs9ICIgXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1kYXRldGltZSBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LWdpdGRiIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0taW8gXAorICAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS1sb2dnaW5nIFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbWF0aCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXN0cmluZ29sZCBcCisgICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LXVuaXR0ZXN0IFwKKyAgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tdW5peGFkbWluIFwKKyAgICAgICAgICAgICAgICAgICBnaXQgXAorIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1naXRkYl8yLjAuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdGRiXzIuMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZTE1ODMyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdGRiXzIuMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMiArMCwwIEBACi1pbmhlcml0IHNldHVwdG9vbHMzCi1yZXF1aXJlIHB5dGhvbi1naXRkYi5pbmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdGRiXzIuMC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtZ2l0ZGJfMi4wLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmRjZDljOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWdpdGRiXzIuMC42LmJiCkBAIC0wLDAgKzEsMyBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tZ2l0ZGIuaW5jCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLWxpYmFyY2hpdmUtY18yLjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1saWJhcmNoaXZlLWNfMi45LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQ5ODNhZTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1saWJhcmNoaXZlLWNfMi45LmJiCkBAIC0wLDAgKzEsMTcgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIGludGVyZmFjZSB0byBsaWJhcmNoaXZlIgorREVTQ1JJUFRJT04gPSAiQSBQeXRob24gaW50ZXJmYWNlIHRvIGxpYmFyY2hpdmUuIEl0IHVzZXMgdGhlIHN0YW5kYXJkIGN0eXBlcyBtb2R1bGUgdG8gXAorICAgIGR5bmFtaWNhbGx5IGxvYWQgYW5kIGFjY2VzcyB0aGUgQyBsaWJyYXJ5LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9DaGFuZ2Fjby9weXRob24tbGliYXJjaGl2ZS1jIgorTElDRU5TRSA9ICJDQzAtMS4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5tZDttZDU9YmNhYjM4MDIyN2E4M2JjMTQ3MzUwYjQwYTgxZTZmZmMiCisKK1BZUElfUEFDS0FHRSA9ICJsaWJhcmNoaXZlLWMiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiMDgzYmQyY2IwMDQzYzFlMjJhNTJjYjlhMDVlMzE1MzIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTkxOTM0NGNlYzIwM2Y1ZGI2NTk2YTI5YjViYzI2YjA3YmE5NjYyOTI1YTA1ZTI0OTgwYjg0NzA5MjMyZWY2MCIKKworUkRFUEVORFNfJHtQTn0gKz0gImxpYmFyY2hpdmUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFnaWNfMC40LjE1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFnaWNfMC40LjE1LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY5ODAxNmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1tYWdpY18wLjQuMTUuYmIKQEAgLTAsMCArMSwxOSBAQAorU1VNTUFSWSA9ICJGaWxlIHR5cGUgaWRlbnRpZmljYXRpb24gdXNpbmcgbGlibWFnaWMiCitERVNDUklQVElPTiA9ICJUaGlzIG1vZHVsZSB1c2VzIGN0eXBlcyB0byBhY2Nlc3MgdGhlIGxpYm1hZ2ljIGZpbGUgdHlwZSBcCisgICAgaWRlbnRpZmljYXRpb24gbGlicmFyeS4gSXQgbWFrZXMgdXNlIG9mIHRoZSBsb2NhbCBtYWdpYyBkYXRhYmFzZSBhbmQgc3VwcG9ydHMgXAorICAgIGJvdGggdGV4dHVhbCBhbmQgTUlNRS10eXBlIG91dHB1dC4iCitIT01FUEFHRSA9ICJodHRwOi8vZ2l0aHViLmNvbS9haHVwcC9weXRob24tbWFnaWMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTZhOTM0ZjE2NWU4YzMyNDVmMjQxZTc3ZDQwMWJiODgiCisKK1BZUElfUEFDS0FHRSA9ICJweXRob24tbWFnaWMiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitTUkNfVVJJW21kNXN1bV0gPSAiZTM4NGM5NWE0NzIxOGY2NmM2NTAxY2Q2ZGQ0NWZmNTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjM3NjVjMGY1ODJkMmRmYzcyYzE1ZjNiNWE4MmFlY2ZhZTk0OThiZDI5Y2E4NDBkNzJmMzdkN2JkMzhiZmNkNSIKKworUkRFUEVORFNfJHtQTn0gKz0gImZpbGUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFrb18xLjEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1ha29fMS4xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIxMzllNWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFrb18xLjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLVNVTU1BUlkgPSAiVGVtcGxhdGluZyBsaWJyYXJ5IGZvciBQeXRob24iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm1ha290ZW1wbGF0ZXMub3JnLyIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1kZjdlNmM3YzgyOTkwYWNmMDIyOGE1NWUwMGQyOWJjOSIKLQotUFlQSV9QQUNLQUdFID0gIk1ha28iCi0KLWluaGVyaXQgcHlwaSBzZXR1cHRvb2xzMwotCi1TUkNfVVJJW21kNXN1bV0gPSAiNmMzZjJkYTBiNzRhZjUyOWE0YzRhNTM3ZDA4NDhiZjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTM2OTE5NTk5YTliN2RjNWQ4NmE3YTg5ODhmMjNhOWEzYTNkMDgzMDcwMDIzYmFiMjNkNjRmN2YxZDFlMGE0YiIKLQotUkRFUEVORFNfJHtQTn0gPSAiJHtQWVRIT05fUE59LWh0bWwgXAotICAgICAgICAgICAgICAgICAgJHtQWVRIT05fUE59LW5ldGNsaWVudCBcCi0gICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tdGhyZWFkaW5nIFwKLSIKLQotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtbWFrb18xLjEuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1ha29fMS4xLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmMzODAwOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLW1ha29fMS4xLjEuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJUZW1wbGF0aW5nIGxpYnJhcnkgZm9yIFB5dGhvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubWFrb3RlbXBsYXRlcy5vcmcvIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTk0M2ViNjc3MTgyMjJkYjIxZDQ0YTRlZjE4MzY2NzVmIgorCitQWVBJX1BBQ0tBR0UgPSAiTWFrbyIKKworaW5oZXJpdCBweXBpIHNldHVwdG9vbHMzCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNjYwYTQ5MTZmMmY2MzQ1NmU2ODg1YzcyN2I3Y2QyZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyOTg0YTY3MzNlMWQ0NzI3OTZjZWVmMzdhZDQ4YzI2ZjRhOTg0YmIxODExOWJiMmRiYzM3YTQ0ZDhmNmU3NWE0IgorCitSREVQRU5EU18ke1BOfSA9ICIke1BZVEhPTl9QTn0taHRtbCBcCisgICAgICAgICAgICAgICAgICAke1BZVEhPTl9QTn0tbmV0Y2xpZW50IFwKKyAgICAgICAgICAgICAgICAgICR7UFlUSE9OX1BOfS10aHJlYWRpbmcgXAorIgorCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnIvMDAwMS1jaGFuZ2Utc2hlYmFuZy10by1weXRob24zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGJyLzAwMDEtY2hhbmdlLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42ODhkYTZiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGJyLzAwMDEtY2hhbmdlLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaApAQCAtMCwwICsxLDQyIEBACitGcm9tIDA5YmQ4MzY4YmYwZDUzODU2NjNhMTBlZWI4OTAxMzE0ODE2ODFiZGQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyMyBBcHIgMjAyMCAwOToyODo1OCArMDAwMAorU3ViamVjdDogW1BBVENIXSBjaGFuZ2Ugc2hlYmFuZyB0byBweXRob24zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgcGJyL3Rlc3RzL3Rlc3RfaW50ZWdyYXRpb24ucHkgfCAyICstCisgcGJyL3Rlc3RzL3Rlc3RfcGFja2FnaW5nLnB5ICAgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9wYnIvdGVzdHMvdGVzdF9pbnRlZ3JhdGlvbi5weSBiL3Bici90ZXN0cy90ZXN0X2ludGVncmF0aW9uLnB5CitpbmRleCA4ZTk2ZjIxLi5iMDdjYmUzIDEwMDY0NAorLS0tIGEvcGJyL3Rlc3RzL3Rlc3RfaW50ZWdyYXRpb24ucHkKKysrKyBiL3Bici90ZXN0cy90ZXN0X2ludGVncmF0aW9uLnB5CitAQCAtMTUwLDcgKzE1MCw3IEBAIGNsYXNzIFRlc3RJbnN0YWxsV2l0aG91dFBicihiYXNlLkJhc2VUZXN0Q2FzZSk6CisgICAgICAgICBwa2dzID0geworICAgICAgICAgICAgICdwa2dUZXN0JzogeworICAgICAgICAgICAgICAgICAnc2V0dXAucHknOiB0ZXh0d3JhcC5kZWRlbnQoIiIiXAorLSAgICAgICAgICAgICAgICAgICAgIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrICAgICAgICAgICAgICAgICAgICAjIS91c3IvYmluL2VudiBweXRob24zCisgICAgICAgICAgICAgICAgICAgICBpbXBvcnQgc2V0dXB0b29scworICAgICAgICAgICAgICAgICAgICAgc2V0dXB0b29scy5zZXR1cCgKKyAgICAgICAgICAgICAgICAgICAgICAgICBuYW1lID0gJ3BrZ1Rlc3QnLAorZGlmZiAtLWdpdCBhL3Bici90ZXN0cy90ZXN0X3BhY2thZ2luZy5weSBiL3Bici90ZXN0cy90ZXN0X3BhY2thZ2luZy5weQoraW5kZXggMDdiZTU0Ny4uZjZhOTQxMiAxMDA2NDQKKy0tLSBhL3Bici90ZXN0cy90ZXN0X3BhY2thZ2luZy5weQorKysrIGIvcGJyL3Rlc3RzL3Rlc3RfcGFja2FnaW5nLnB5CitAQCAtMjA2LDcgKzIwNiw3IEBAIGNsYXNzIENyZWF0ZVBhY2thZ2VzKGZpeHR1cmVzLkZpeHR1cmUpOgorIAorICAgICBkZWZhdWx0cyA9IHsKKyAgICAgICAgICdzZXR1cC5weSc6IHRleHR3cmFwLmRlZGVudChzaXgudSgiIiJcCistICAgICAgICAgICAgIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrICAgICAgICAgICAgIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICAgICAgICAgICAgIGltcG9ydCBzZXR1cHRvb2xzCisgICAgICAgICAgICAgc2V0dXB0b29scy5zZXR1cCgKKyAgICAgICAgICAgICAgICAgc2V0dXBfcmVxdWlyZXM9WydwYnInXSwKKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBicl81LjQuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBicl81LjQuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTc4MzVlNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnJfNS40LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1ICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXBici5pbmMKLQotU1JDX1VSSVttZDVzdW1dID0gIjQ3N2QyYWEyODVhZDk3MjUwYTE3MmIxOTlmNDA2MGI3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJjOGU0MjBjZDRlZDRjZWM0ZTc5OTllZTQ3NDA5ZTg3NmFmNTc1ZDRjMzVhNDU4NDBkNTllOGI1ZjMxNTVhYjgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnJfNS40LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1wYnJfNS40LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmYzMzVlYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBicl81LjQuNC5iYgpAQCAtMCwwICsxLDUgQEAKK2luaGVyaXQgc2V0dXB0b29sczMKK3JlcXVpcmUgcHl0aG9uLXBici5pbmMKKworU1JDX1VSSVttZDVzdW1dID0gIjY1Y2RjMzJlMWExZmY1NmQ0ODFmYzE1YWE4Y2FmOTg4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEzOWQyNjI1NTQ3ZGJmYTVmYjBiODFkYWViYjM5NjAxYzQ3OGMyMTk1NmRjNTdlMmUwN2I3NDQ1MGE4YzUwNmIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXAvMDAwMS1jaGFuZ2Utc2hlYmFuZy10by1weXRob24zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwLzAwMDEtY2hhbmdlLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wMGNmZmUxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwLzAwMDEtY2hhbmdlLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaApAQCAtMCwwICsxLDYwIEBACitGcm9tIGU3YTAwZTliNTEwNGFlMmZiY2VhMzJhMzVjODU3NjBiNzdmYWU3ZTUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAyMyBBcHIgMjAyMCAwOTo0MjoxMCArMDAwMAorU3ViamVjdDogW1BBVENIXSBjaGFuZ2Ugc2hlYmFuZyB0byBweXRob24zCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitwaXAgd2lsbCBkcm9wIHN1cHBvcnQgb2YgcHl0aG9uMiBmcm9tIDIxLjAKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIHNyYy9waXAvX2ludGVybmFsL19faW5pdF9fLnB5ICAgICAgICAgICAgIHwgMiArLQorIHNyYy9waXAvX3ZlbmRvci9hcHBkaXJzLnB5ICAgICAgICAgICAgICAgIHwgMiArLQorIHNyYy9waXAvX3ZlbmRvci9jaGFyZGV0L2NsaS9jaGFyZGV0ZWN0LnB5IHwgMiArLQorIHNyYy9waXAvX3ZlbmRvci9yZXF1ZXN0cy9jZXJ0cy5weSAgICAgICAgIHwgMiArLQorIDQgZmlsZXMgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3BpcC9faW50ZXJuYWwvX19pbml0X18ucHkgYi9zcmMvcGlwL19pbnRlcm5hbC9fX2luaXRfXy5weQoraW5kZXggM2FhOGE0Ni4uZTFhZDE3OSAxMDA3NTUKKy0tLSBhL3NyYy9waXAvX2ludGVybmFsL19faW5pdF9fLnB5CisrKysgYi9zcmMvcGlwL19pbnRlcm5hbC9fX2luaXRfXy5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworIGltcG9ydCBwaXAuX2ludGVybmFsLnV0aWxzLmluamVjdF9zZWN1cmV0cmFuc3BvcnQgICMgbm9xYQorIGZyb20gcGlwLl9pbnRlcm5hbC51dGlscy50eXBpbmcgaW1wb3J0IE1ZUFlfQ0hFQ0tfUlVOTklORworIAorZGlmZiAtLWdpdCBhL3NyYy9waXAvX3ZlbmRvci9hcHBkaXJzLnB5IGIvc3JjL3BpcC9fdmVuZG9yL2FwcGRpcnMucHkKK2luZGV4IDNhNTJiNzUuLmFkM2Y4MWQgMTAwNjQ0CistLS0gYS9zcmMvcGlwL192ZW5kb3IvYXBwZGlycy5weQorKysrIGIvc3JjL3BpcC9fdmVuZG9yL2FwcGRpcnMucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorICMgQ29weXJpZ2h0IChjKSAyMDA1LTIwMTAgQWN0aXZlU3RhdGUgU29mdHdhcmUgSW5jLgorICMgQ29weXJpZ2h0IChjKSAyMDEzIEVkZHkgUGV0cmnImW9yCitkaWZmIC0tZ2l0IGEvc3JjL3BpcC9fdmVuZG9yL2NoYXJkZXQvY2xpL2NoYXJkZXRlY3QucHkgYi9zcmMvcGlwL192ZW5kb3IvY2hhcmRldC9jbGkvY2hhcmRldGVjdC5weQoraW5kZXggYzYxMTM2Yi4uYTQ5N2U5OCAxMDA2NDQKKy0tLSBhL3NyYy9waXAvX3ZlbmRvci9jaGFyZGV0L2NsaS9jaGFyZGV0ZWN0LnB5CisrKysgYi9zcmMvcGlwL192ZW5kb3IvY2hhcmRldC9jbGkvY2hhcmRldGVjdC5weQorQEAgLTEsNCArMSw0IEBACistIyEvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworICIiIgorIFNjcmlwdCB3aGljaCB0YWtlcyBvbmUgb3IgbW9yZSBmaWxlIHBhdGhzIGFuZCByZXBvcnRzIG9uIHRoZWlyIGRldGVjdGVkCisgZW5jb2RpbmdzCitkaWZmIC0tZ2l0IGEvc3JjL3BpcC9fdmVuZG9yL3JlcXVlc3RzL2NlcnRzLnB5IGIvc3JjL3BpcC9fdmVuZG9yL3JlcXVlc3RzL2NlcnRzLnB5CitpbmRleCAwNmE1OTRlLi5iZmE3ODM5IDEwMDY0NAorLS0tIGEvc3JjL3BpcC9fdmVuZG9yL3JlcXVlc3RzL2NlcnRzLnB5CisrKysgYi9zcmMvcGlwL192ZW5kb3IvcmVxdWVzdHMvY2VydHMucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorIAorICIiIgorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzE5LjMuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXBpcF8xOS4zLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQyN2U2ZmMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzE5LjMuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiVGhlIFB5UEEgcmVjb21tZW5kZWQgdG9vbCBmb3IgaW5zdGFsbGluZyBQeXRob24gcGFja2FnZXMiCi1IT01FUEFHRSA9ICJodHRwczovL3B5cGkucHl0aG9uLm9yZy9weXBpL3BpcCIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9OGJhMDZkNTI5Yzk1NTA0OGU1ZGRkN2M0NTQ1OWViMmUiCi0KLURFUEVORFMgKz0gInB5dGhvbjMgcHl0aG9uMy1zZXR1cHRvb2xzLW5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFhYWFmOTBmYmFmYzUwZTdiYTFlNjZmZmNlYjAwOTYwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjIxMjA3ZDc2YzEwMzFlNTE3NjY4ODk4YTZiNDZhOWZiMTUwMWM3YTQ3MTBlZjVkZmQ2YTQwYWQ5ZTY3NTdlYTciCi0KLWluaGVyaXQgcHlwaSBkaXN0dXRpbHMzCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICMgSW5zdGFsbCBhcyBwaXAzIGFuZCBsZWF2ZSBwaXAyIGFzIGRlZmF1bHQKLSAgICBybSAke0R9LyR7YmluZGlyfS9waXAKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICBweXRob24zLWNvbXBpbGUgXAotICBweXRob24zLWlvIFwKLSAgcHl0aG9uMy1odG1sIFwKLSAgcHl0aG9uMy1qc29uIFwKLSAgcHl0aG9uMy1uZXRzZXJ2ZXIgXAotICBweXRob24zLXNldHVwdG9vbHMgXAotICBweXRob24zLXVuaXhhZG1pbiBcCi0gIHB5dGhvbjMteG1scnBjIFwKLSAgcHl0aG9uMy1waWNrbGUgXAotIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1waXBfMjAuMC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzIwLjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45Njk3M2RiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcGlwXzIwLjAuMi5iYgpAQCAtMCwwICsxLDMzIEBACitTVU1NQVJZID0gIlRoZSBQeVBBIHJlY29tbWVuZGVkIHRvb2wgZm9yIGluc3RhbGxpbmcgUHl0aG9uIHBhY2thZ2VzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXBpLnB5dGhvbi5vcmcvcHlwaS9waXAiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PThiYTA2ZDUyOWM5NTUwNDhlNWRkZDdjNDU0NTllYjJlIgorCitERVBFTkRTICs9ICJweXRob24zIHB5dGhvbjMtc2V0dXB0b29scy1uYXRpdmUiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWNoYW5nZS1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI3ZDQyYmE0OWI4MDk2MDRmMGRmM2Q1NWRmMWMzZmQ4NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZGIwYzhlYTRjN2VhNTFjODA0OTY0MGU4ZTZlN2ZkZTk0OWRlNjcyYmZhNDk0OTkyMDY3NTU2M2E1YTY5NjdmIgorCitpbmhlcml0IHB5cGkgZGlzdHV0aWxzMworCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAjIEluc3RhbGwgYXMgcGlwMyBhbmQgbGVhdmUgcGlwMiBhcyBkZWZhdWx0CisgICAgcm0gJHtEfS8ke2JpbmRpcn0vcGlwCit9CisKK1JERVBFTkRTXyR7UE59ID0gIlwKKyAgcHl0aG9uMy1jb21waWxlIFwKKyAgcHl0aG9uMy1pbyBcCisgIHB5dGhvbjMtaHRtbCBcCisgIHB5dGhvbjMtanNvbiBcCisgIHB5dGhvbjMtbmV0c2VydmVyIFwKKyAgcHl0aG9uMy1zZXR1cHRvb2xzIFwKKyAgcHl0aG9uMy11bml4YWRtaW4gXAorICBweXRob24zLXhtbHJwYyBcCisgIHB5dGhvbjMtcGlja2xlIFwKKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjE4LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNhaXJvXzEuMTguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWFhYTAxYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWNhaXJvXzEuMTguMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI3ICswLDAgQEAKLVNVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgQ2Fpcm8gY2FudmFzIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmcvcHljYWlybyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnIgotU0VDVElPTiA9ICJweXRob24tZGV2ZWwiCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgTVBMdjEuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYyZTA3MWFiNzI5Nzg0MzFiMjk0YTBkNjk2MzI3NDIxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctTEdQTC0yLjE7bWQ1PWZhZDliMzMzMmJlODk0YmFiOWJjNTAxNTcyODY0YjI5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctTVBMLTEuMTttZDU9YmZlMWY3NWQ2MDY5MTJhNDExMWM5MDc0M2Q2YzczMjUiCi0KLSMgY2Fpcm8gPj0gMS4xNAotREVQRU5EUyA9ICJjYWlybyBweXRob24zIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9weWdvYmplY3QvcHljYWlyby9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vcHljYWlyby0ke1BWfS50YXIuZ3oiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3B5Z29iamVjdC9weWNhaXJvL3JlbGVhc2VzLyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjc2MTBkYThhNDBhN2JlZDU0ODk5MWFhMzQxNjQzMWQxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcwMTcyZTU4YjZiYWQ3NTcyYTM1MThjMjY3MjliMDc0YWNkZGUxNWU2ZmVlNmNiYWI2ZDM1MjhhZDU1MmI3ODYiCi0KLVMgPSAiJHtXT1JLRElSfS9weWNhaXJvLSR7UFZ9IgotCi1pbmhlcml0IG1lc29uIHBrZ2NvbmZpZwotCi1DRkxBR1MgKz0gIi1mUElDIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotRklMRVNfJHtQTn0gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2Fpcm9fMS4xOS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHljYWlyb18xLjE5LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOGY2MDgzNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Y2Fpcm9fMS4xOS4wLmJiCkBAIC0wLDAgKzEsMjcgQEAKK1NVTU1BUlkgPSAiUHl0aG9uIGJpbmRpbmdzIGZvciB0aGUgQ2Fpcm8gY2FudmFzIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmcvcHljYWlybyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3MuZnJlZWRlc2t0b3Aub3JnIgorU0VDVElPTiA9ICJweXRob24tZGV2ZWwiCitMSUNFTlNFID0gIkxHUEx2Mi4xICYgTVBMdjEuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWYzNzEzY2EyYzI4ZDkzMTJhZDcxODUyMGI2ZGMzZWVlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctTEdQTC0yLjE7bWQ1PWZhZDliMzMzMmJlODk0YmFiOWJjNTAxNTcyODY0YjI5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkctTVBMLTEuMTttZDU9YmZlMWY3NWQ2MDY5MTJhNDExMWM5MDc0M2Q2YzczMjUiCisKKyMgY2Fpcm8gPj0gMS4xNAorREVQRU5EUyA9ICJjYWlybyBweXRob24zIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9weWdvYmplY3QvcHljYWlyby9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vcHljYWlyby0ke1BWfS50YXIuZ3oiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3B5Z29iamVjdC9weWNhaXJvL3JlbGVhc2VzLyIKKworU1JDX1VSSVttZDVzdW1dID0gIjM4Yjg0NDE2MDIxNjQwYjAxMjUwYzhmOGVjNGM1MmQ0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRmNWJhOTM3NGE0NmM5ODcyOWRkMzcyN2Q5OTNmNWUxN2VkMDI4NmZkNjczOGVkNDY0ZmU0ZWZhMDYxMmQxOWMiCisKK1MgPSAiJHtXT1JLRElSfS9weWNhaXJvLSR7UFZ9IgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZworCitDRkxBR1MgKz0gIi1mUElDIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworRklMRVNfJHtQTn0gPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5Z21lbnRzXzIuNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnbWVudHNfMi40LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM1YzBhYzYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnbWVudHNfMi40LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMCArMCwwIEBACi1TVU1NQVJZID0gIlB5Z21lbnRzIGlzIGEgc3ludGF4IGhpZ2hsaWdodGluZyBwYWNrYWdlIHdyaXR0ZW4gaW4gUHl0aG9uLiIKLURFU0NSSVBUSU9OID0gIlB5Z21lbnRzIGlzIGEgc3ludGF4IGhpZ2hsaWdodGluZyBwYWNrYWdlIHdyaXR0ZW4gaW4gUHl0aG9uLiIKLUhPTUVQQUdFID0gImh0dHA6Ly9weWdtZW50cy5vcmcvIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lMWQ3YjdiZmZiZmVhYTE0MDgzZmQyYmQzMjM2YWVhOCIKLQotaW5oZXJpdCBzZXR1cHRvb2xzMwotU1JDX1VSSVttZDVzdW1dID0gIjVlY2MzZmJiMmE3ODNlOTE3YjM2OTI3MWZjMGU2Y2QxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjg4MWM0YzE1N2U0NWYzMGFmMTg1YzFmZmU4ZDU0OWQ0OGFjOTEyNzQzM2YyYzM4MGMyNGI4NDU3MmFkNjYyOTciCi0KLURFUEVORFMgKz0gIlwKLSAgICAgICAgICAgICR7UFlUSE9OX1BOfSBcCi0gICAgICAgICAgICAiCi0KLVBZUElfUEFDS0FHRSA9ICJQeWdtZW50cyIKLQotaW5oZXJpdCBweXBpCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnbWVudHNfMi41LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1weWdtZW50c18yLjUuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40NzRiOTU0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlnbWVudHNfMi41LjIuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJQeWdtZW50cyBpcyBhIHN5bnRheCBoaWdobGlnaHRpbmcgcGFja2FnZSB3cml0dGVuIGluIFB5dGhvbi4iCitERVNDUklQVElPTiA9ICJQeWdtZW50cyBpcyBhIHN5bnRheCBoaWdobGlnaHRpbmcgcGFja2FnZSB3cml0dGVuIGluIFB5dGhvbi4iCitIT01FUEFHRSA9ICJodHRwOi8vcHlnbWVudHMub3JnLyIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9ZTFkN2I3YmZmYmZlYWExNDA4M2ZkMmJkMzIzNmFlYTgiCisKK2luaGVyaXQgc2V0dXB0b29sczMKK1NSQ19VUklbbWQ1c3VtXSA9ICI0NjVhMzU1NTk4NjMwODlkOTU5ZDc4M2E2OWY3OWI5ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5OGM4YWE1YTlmNzc4ZmNkMTAyNmExNzM2MWRkYWY3MzMwZDFiN2M2MmFlOTdjM2JiMGFlNzNlMGI5YjZiMGZlIgorCitERVBFTkRTICs9ICJcCisgICAgICAgICAgICAke1BZVEhPTl9QTn0gXAorICAgICAgICAgICAgIgorCitQWVBJX1BBQ0tBR0UgPSAiUHlnbWVudHMiCisKK2luaGVyaXQgcHlwaQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cGFyc2luZ18yLjQuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXB5cGFyc2luZ18yLjQuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGMzZDBiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtcHlwYXJzaW5nXzIuNC43LmJiCkBAIC0wLDAgKzEsMyBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tcHlwYXJzaW5nLmluYworCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY29ucy1uYXRpdmVfMy4xLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY29ucy1uYXRpdmVfMy4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjZDU5NTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NvbnMtbmF0aXZlXzMuMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1yZXF1aXJlIHB5dGhvbjMtc2NvbnNfJHtQVn0uYmIKLWluaGVyaXQgbmF0aXZlIHB5dGhvbjNuYXRpdmUKLURFUEVORFMgPSAicHl0aG9uMy1uYXRpdmUiCi1SREVQRU5EU18ke1BOfSA9ICIiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vc2NvbnMgU0NPTlNfTElCX0RJUj0nJHtTVEFHSU5HX0RJUl9IT1NUfS8ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgUFlUSE9OTk9VU0VSU0lURT0nMScKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjb25zLW5hdGl2ZV8zLjEuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjb25zLW5hdGl2ZV8zLjEuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZTEyNzMwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NvbnMtbmF0aXZlXzMuMS4yLmJiCkBAIC0wLDAgKzEsNyBAQAorcmVxdWlyZSBweXRob24zLXNjb25zXyR7UFZ9LmJiCitpbmhlcml0IG5hdGl2ZSBweXRob24zbmF0aXZlCitERVBFTkRTID0gInB5dGhvbjMtbmF0aXZlIHB5dGhvbjMtc2V0dXB0b29scy1uYXRpdmUiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vc2NvbnMgU0NPTlNfTElCX0RJUj0nJHtTVEFHSU5HX0RJUl9IT1NUfS8ke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgUFlUSE9OTk9VU0VSU0lURT0nMScKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNjb25zXzMuMS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NvbnNfMy4xLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjN2FhZWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NvbnNfMy4xLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOSArMCwwIEBACi1TVU1NQVJZID0gIlNvZnR3YXJlIENvbnN0cnVjdGlvbiB0b29sIChtYWtlL2F1dG90b29scyByZXBsYWNlbWVudCkiCi1TRUNUSU9OID0gImRldmVsL3B5dGhvbiIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTM3YmI1M2EwOGU2YmVhZWEwYzkwZTc4MjFkNzMxMjg0IgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9zY29ucy9zY29ucy0ke1BWfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiMzViMmEzOTkzMzEzYmJlZGQyMjFkNGQ1NzU4ZmQyZmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGNlYTQxN2ZkZDc0OTlhMzZmNDA3OTIzZDAzYjRiNzAwMGIwZjllOGZkN2IzMWIzMTZiOWNlN2ViYTkxNDNhNSIKLQotUyA9ICIke1dPUktESVJ9L3Njb25zLSR7UFZ9IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3Njb25zLm9yZy9wYWdlcy9kb3dubG9hZC5odG1sIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCi0KLWluaGVyaXQgc2V0dXB0b29sczMKLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotICAgIHNlZCAtaSAtZSAiMXMsIyEuKnB5dGhvbi4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywiICR7U30vc2NyaXB0LyoKLX0KLQotUkRFUEVORFNfJHtQTn0gPSAiXAotICBweXRob24zLWNvcmUgXAotICBweXRob24zLWZjbnRsIFwKLSAgcHl0aG9uMy1pbyBcCi0gIHB5dGhvbjMtanNvbiBcCi0gIHB5dGhvbjMtc2hlbGwgXAotICBweXRob24zLXBpY2tsZSBcCi0gIHB5dGhvbjMtcHByaW50IFwKLSAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NvbnNfMy4xLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zY29uc18zLjEuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZTExN2E5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2NvbnNfMy4xLjIuYmIKQEAgLTAsMCArMSwzMyBAQAorU1VNTUFSWSA9ICJTb2Z0d2FyZSBDb25zdHJ1Y3Rpb24gdG9vbCAobWFrZS9hdXRvdG9vbHMgcmVwbGFjZW1lbnQpIgorU0VDVElPTiA9ICJkZXZlbC9weXRob24iCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLyR7V09SS0RJUn0vTElDRU5TRS1weXRob24zLXNjb25zLSR7UFZ9O21kNT1lMTRlMWIzMzQyOGRmMjRhNDBhNzgyYWUxNDI3ODVkMCIKKworIyBweXBpIHBhY2thZ2UgZG9lcyBub3QgaGF2ZSBhIHZhbGlkIGxpY2Vuc2UgZmlsZQorU1JDX1VSSSArPSAiaHR0cHM6Ly9yYXcuZ2l0aHVidXNlcmNvbnRlbnQuY29tL1NDb25zL3Njb25zLyR7UFZ9L0xJQ0VOU0U7ZG93bmxvYWRmaWxlbmFtZT1MSUNFTlNFLXB5dGhvbjMtc2NvbnMtJHtQVn07bmFtZT1saWNlbnNlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjljNGFkMDZkY2YxNDI3YmU5NTQ3MmVhZjM4MGM4MWEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOGFhYTQ4M2MzMDNlZmViNjc4ZTZmN2M3NzZjODQ0NGE0ODJmOGRkYzNhZDg5MWY4YjZjZGQzNTI2NGRhOWExZiIKK1NSQ19VUklbbGljZW5zZS5tZDVzdW1dID0gImUxNGUxYjMzNDI4ZGYyNGE0MGE3ODJhZTE0Mjc4NWQwIgorU1JDX1VSSVtsaWNlbnNlLnNoYTI1NnN1bV0gPSAiNzJlZDg4OTE2NWZiMjgzNzhjYWRhYzE0NTUyYmU0YTk1OWYxZWJhYjZiMTQ4YWJiNWRkMmI0OTcxMmMzYzZmNiIKKworUyA9ICIke1dPUktESVJ9L3Njb25zLSR7UFZ9IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3Njb25zLm9yZy9wYWdlcy9kb3dubG9hZC5odG1sIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCisKK2luaGVyaXQgcHlwaSBzZXR1cHRvb2xzMworCitkb19pbnN0YWxsX3ByZXBlbmQoKSB7CisgICAgc2VkIC1pIC1lICIxcywjIS4qcHl0aG9uLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCIgJHtTfS9zY3JpcHQvKgorfQorCitSREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiXAorICBweXRob24zLWNvcmUgXAorICBweXRob24zLWZjbnRsIFwKKyAgcHl0aG9uMy1pbyBcCisgIHB5dGhvbjMtanNvbiBcCisgIHB5dGhvbjMtc2hlbGwgXAorICBweXRob24zLXBpY2tsZSBcCisgIHB5dGhvbjMtcHByaW50IFwKKyAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29scy8wMDAxLWNoYW5nZS1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzLzAwMDEtY2hhbmdlLXNoZWJhbmctdG8tcHl0aG9uMy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zM2FmOGRhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29scy8wMDAxLWNoYW5nZS1zaGViYW5nLXRvLXB5dGhvbjMucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSBjMzlkMDg5NjkzMGUyNWMyMjRjYzg5NzY2MGZjODUxMWNjYWUzMGM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjMgQXByIDIwMjAgMTA6MDE6MTIgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gY2hhbmdlIHNoZWJhbmcgdG8gcHl0aG9uMworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKy0tLQorIHBrZ19yZXNvdXJjZXMvX3ZlbmRvci9hcHBkaXJzLnB5ICAgfCAyICstCisgc2V0dXB0b29scy9jb21tYW5kL2Vhc3lfaW5zdGFsbC5weSB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3BrZ19yZXNvdXJjZXMvX3ZlbmRvci9hcHBkaXJzLnB5IGIvcGtnX3Jlc291cmNlcy9fdmVuZG9yL2FwcGRpcnMucHkKK2luZGV4IGFlNjcwMDEuLjkzM2UzOTggMTAwNjQ0CistLS0gYS9wa2dfcmVzb3VyY2VzL192ZW5kb3IvYXBwZGlycy5weQorKysrIGIvcGtnX3Jlc291cmNlcy9fdmVuZG9yL2FwcGRpcnMucHkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjIC0qLSBjb2Rpbmc6IHV0Zi04IC0qLQorICMgQ29weXJpZ2h0IChjKSAyMDA1LTIwMTAgQWN0aXZlU3RhdGUgU29mdHdhcmUgSW5jLgorICMgQ29weXJpZ2h0IChjKSAyMDEzIEVkZHkgUGV0cmnImW9yCitkaWZmIC0tZ2l0IGEvc2V0dXB0b29scy9jb21tYW5kL2Vhc3lfaW5zdGFsbC5weSBiL3NldHVwdG9vbHMvY29tbWFuZC9lYXN5X2luc3RhbGwucHkKK2luZGV4IGFiY2ExYWUuLjZiY2RjOTggMTAwNjQ0CistLS0gYS9zZXR1cHRvb2xzL2NvbW1hbmQvZWFzeV9pbnN0YWxsLnB5CisrKysgYi9zZXR1cHRvb2xzL2NvbW1hbmQvZWFzeV9pbnN0YWxsLnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jIS91c3IvYmluL2VudiBweXRob24KKysjIS91c3IvYmluL2VudiBweXRob24zCisgIiIiCisgRWFzeSBJbnN0YWxsCisgLS0tLS0tLS0tLS0tCistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzQxLjQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNldHVwdG9vbHNfNDUuMi4wLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zZXR1cHRvb2xzXzQxLjQuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtc2V0dXB0b29sc180NS4yLjAuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpeF8xLjEzLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaXhfMS4xMy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Nzk1MzEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpeF8xLjEzLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyICswLDAgQEAKLWluaGVyaXQgc2V0dXB0b29sczMKLXJlcXVpcmUgcHl0aG9uLXNpeC5pbmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXNpeF8xLjE0LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaXhfMS4xNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1MWMzNjYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy1zaXhfMS4xNC4wLmJiCkBAIC0wLDAgKzEsNSBAQAoraW5oZXJpdCBzZXR1cHRvb2xzMworcmVxdWlyZSBweXRob24tc2l4LmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiMjE2NzQ1ODhhNTdlNjQ5ZDFhNmQ5NzdlYzMxMjIxNDAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjM2YmRiZGNlNDZlNmU2YTNkNjFhMzM3YzBmOGI3NjNjYTFlODcxN2MwM2IzNjllODdhN2VjN2NlMTMxOWMwYSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRlc3R0b29scy9ub190cmFjZWJhY2syLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdGVzdHRvb2xzL25vX3RyYWNlYmFjazIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk0NTEwMwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRlc3R0b29scy9ub190cmFjZWJhY2syLnBhdGNoCkBAIC0wLDAgKzEsMjMgQEAKK3RyYWNlYmFjazIgYWRkcyB0cmFjZWJhY2sgZm9yIHB5dGhvbjIuIFJhdGhlciB0aGFuIGRlcGVuZCBvbiB0cmFjZWJhY2syLCB3ZSdyZQorcHl0aG9uMyBvbmx5IHNvIGp1c3QgdXNlIHRyYWNlYmFjay4KK1RoaXMgY2F1c2VkIGJyZWFrYWdlIGluIG9lLXNlbGZ0ZXN0IC1qIHdoaWNoIHVzZXMgdGVzdHRvb2xzIG9uIHRoZSBhdXRvYnVpbGRlcgordXNpbmcgYnVpbGR0b29scy10YXJiYWxsLgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW091ciByZWNpcGUgaXMgcHl0aG9uMyBzcGVjaWZpY10KKyhPbmNlIHB5MiBpcyBFT0wgdXBzdHJlYW0gcHJvYmFibHkgY291bGQvc2hvdWxkIHRha2UgdGhpcykKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorCitJbmRleDogdGVzdHRvb2xzLTIuMy4wL3Rlc3R0b29scy9jb250ZW50LnB5Cis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gdGVzdHRvb2xzLTIuMy4wLm9yaWcvdGVzdHRvb2xzL2NvbnRlbnQucHkKKysrKyB0ZXN0dG9vbHMtMi4zLjAvdGVzdHRvb2xzL2NvbnRlbnQucHkKK0BAIC0xOSw4ICsxOSw3IEBAIGltcG9ydCBvcworIGltcG9ydCBzeXMKKyAKKyBmcm9tIGV4dHJhcyBpbXBvcnQgdHJ5X2ltcG9ydAorLSMgVG8gbGV0IHNldHVwLnB5IHdvcmssIG1ha2UgdGhpcyBhIGNvbmRpdGlvbmFsIGltcG9ydC4KKy10cmFjZWJhY2sgPSB0cnlfaW1wb3J0KCd0cmFjZWJhY2syJykKKytpbXBvcnQgdHJhY2ViYWNrCisgCisgZnJvbSB0ZXN0dG9vbHMuY29tcGF0IGltcG9ydCAoCisgICAgIF9iLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdGVzdHRvb2xzXzIuMy4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMtdGVzdHRvb2xzXzIuMy4wLmJiCmluZGV4IDg5NmVjZWUuLmEyNTRiOTAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLXRlc3R0b29sc18yLjMuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy10ZXN0dG9vbHNfMi4zLjAuYmIKQEAgLTEsMiArMSw0IEBACiBpbmhlcml0IHNldHVwdG9vbHMzCiByZXF1aXJlIHB5dGhvbi10ZXN0dG9vbHMuaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly9ub190cmFjZWJhY2syLnBhdGNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Eby1ub3QtYWRkLXVzci1saWItdGVybWNhcC10by1saW5rZXItZmxhZ3MtdG8tYXZvaWQtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Eby1ub3QtYWRkLXVzci1saWItdGVybWNhcC10by1saW5rZXItZmxhZ3MtdG8tYXZvaWQtLnBhdGNoCmluZGV4IDA5ZjI3OWJhLi41OTU5MjgyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvLW5vdC1hZGQtdXNyLWxpYi10ZXJtY2FwLXRvLWxpbmtlci1mbGFncy10by1hdm9pZC0ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Eby1ub3QtYWRkLXVzci1saWItdGVybWNhcC10by1saW5rZXItZmxhZ3MtdG8tYXZvaWQtLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAyMzI5NGM2YmE2ODk2MTE1ODI4MjkzZmRiN2U2N2I0N2IzOGJhNjc1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAwMzljNTNkZDViYWRkZWMzMzU5YTA1YmUwYmZmNDZhM2IzMmJiYjg0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBGcmksIDI1IEphbiAyMDE5IDE5OjA0OjEzICswMTAwCiBTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBhZGQgL3Vzci9saWIvdGVybWNhcCB0byBsaW5rZXIgZmxhZ3MgdG8gYXZvaWQgaG9zdApAQCAtMTIsMTQgKzEyLDE0IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IGI0MzU3ZTMuLmZiZWMwMGQgMTAwNjQ0CitpbmRleCAyMGQ3ZjM1Li5hYjE4ZmYwIDEwMDY0NAogLS0tIGEvc2V0dXAucHkKICsrKyBiL3NldHVwLnB5Ci1AQCAtODU2LDcgKzg1Niw2IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKK0BAIC05NTcsNyArOTU3LDYgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Rlcm1jYXAnKToKICAgICAgICAgICAgICAgICAgcmVhZGxpbmVfbGlicy5hcHBlbmQoJ3Rlcm1jYXAnKQotICAgICAgICAgICAgIGV4dHMuYXBwZW5kKCBFeHRlbnNpb24oJ3JlYWRsaW5lJywgWydyZWFkbGluZS5jJ10sCi0tICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJ5X2RpcnM9WycvdXNyL2xpYi90ZXJtY2FwJ10sCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBleHRyYV9saW5rX2FyZ3M9cmVhZGxpbmVfZXh0cmFfbGlua19hcmdzLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPXJlYWRsaW5lX2xpYnMpICkKKyAgICAgICAgICAgICBzZWxmLmFkZChFeHRlbnNpb24oJ3JlYWRsaW5lJywgWydyZWFkbGluZS5jJ10sCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpYnJhcnlfZGlycz1bJy91c3IvbGliL3Rlcm1jYXAnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfbGlua19hcmdzPXJlYWRsaW5lX2V4dHJhX2xpbmtfYXJncywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPXJlYWRsaW5lX2xpYnMpKQogICAgICAgICAgZWxzZToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1hcy1sb2NhdGlvbi1mb3Itc2l0ZS1wYWNrYWdlcy1hbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1hcy1sb2NhdGlvbi1mb3Itc2l0ZS1wYWNrYWdlcy1hbi5wYXRjaAppbmRleCBlYTc1MjYyLi4xMTJjOTc5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItYXMtbG9jYXRpb24tZm9yLXNpdGUtcGFja2FnZXMtYW4ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1Eby1ub3QtaGFyZGNvZGUtbGliLWFzLWxvY2F0aW9uLWZvci1zaXRlLXBhY2thZ2VzLWFuLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAwZmJkYWQxZWFmNTQxYThlOTJiZTgxZjM5NTE0Y2QyNDliM2IwODAxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhMDc4YjZmZjE0OTJlODQ4YWQxMDU1NzY0ZmI5YTQxNGFiYWYzZTEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiBEYXRlOiBUdWUsIDUgRmViIDIwMTkgMTU6NTI6MDIgKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGhhcmRjb2RlICJsaWIiIGFzIGxvY2F0aW9uIGZvciBtb2R1bGVzLCBzaXRlLXBhY2thZ2VzCkBAIC0xMSwxMyArMTEsMTMgQEAKICBJbmNsdWRlL3B5dGhvbnJ1bi5oICB8ICAyICsrCiAgTGliL3NpdGUucHkgICAgICAgICAgfCAgNCArKy0tCiAgTWFrZWZpbGUucHJlLmluICAgICAgfCAgNSArKystLQotIE1vZHVsZXMvZ2V0cGF0aC5jICAgIHwgMTggKysrKysrKysrKysrLS0tLS0tCisgTW9kdWxlcy9nZXRwYXRoLmMgICAgfCAyMiArKysrKysrKysrKysrKy0tLS0tLS0tCiAgUHl0aG9uL2dldHBsYXRmb3JtLmMgfCAxMCArKysrKysrKysrCiAgUHl0aG9uL3N5c21vZHVsZS5jICAgfCAgMiArKwotIDYgZmlsZXMgY2hhbmdlZCwgMzEgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisgNiBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL0luY2x1ZGUvcHl0aG9ucnVuLmggYi9JbmNsdWRlL3B5dGhvbnJ1bi5oCi1pbmRleCA2ZjBjNmZjLi4wYTE3ZWRkIDEwMDY0NAoraW5kZXggNDYwOTFlMC4uNjFiMmUxNSAxMDA2NDQKIC0tLSBhL0luY2x1ZGUvcHl0aG9ucnVuLmgKICsrKyBiL0luY2x1ZGUvcHl0aG9ucnVuLmgKIEBAIC03LDYgKzcsOCBAQApAQCAtMjgsMTIgKzI4LDEyIEBACiArCiAgI2lmbmRlZiBQeV9MSU1JVEVEX0FQSQogIFB5QVBJX0ZVTkMoaW50KSBQeVJ1bl9TaW1wbGVTdHJpbmdGbGFncyhjb25zdCBjaGFyICosIFB5Q29tcGlsZXJGbGFncyAqKTsKLSBQeUFQSV9GVU5DKGludCkgUHlSdW5fQW55RmlsZUZsYWdzKEZJTEUgKiwgY29uc3QgY2hhciAqLCBQeUNvbXBpbGVyRmxhZ3MgKik7CisgUHlBUElfRlVOQyhpbnQpIFB5UnVuX0FueUZpbGVFeEZsYWdzKAogZGlmZiAtLWdpdCBhL0xpYi9zaXRlLnB5IGIvTGliL3NpdGUucHkKLWluZGV4IGZmZDEzMmIuLmI1NWY2ZDggMTAwNjQ0CitpbmRleCBhMDY1YWIwLi4xZDcyMGVmIDEwMDY0NAogLS0tIGEvTGliL3NpdGUucHkKICsrKyBiL0xpYi9zaXRlLnB5Ci1AQCAtMzM0LDEyICszMzQsMTIgQEAgZGVmIGdldHNpdGVwYWNrYWdlcyhwcmVmaXhlcz1Ob25lKToKK0BAIC0zMzUsMTIgKzMzNSwxMiBAQCBkZWYgZ2V0c2l0ZXBhY2thZ2VzKHByZWZpeGVzPU5vbmUpOgogICAgICAgICAgc2Vlbi5hZGQocHJlZml4KQogIAogICAgICAgICAgaWYgb3Muc2VwID09ICcvJzoKQEAgLTQ5LDEwICs0OSwxMCBAQAogIAogIGRlZiBhZGRzaXRlcGFja2FnZXMoa25vd25fcGF0aHMsIHByZWZpeGVzPU5vbmUpOgogZGlmZiAtLWdpdCBhL01ha2VmaWxlLnByZS5pbiBiL01ha2VmaWxlLnByZS5pbgotaW5kZXggNmU4MWIyZi4uNjcxYTIwZSAxMDA2NDQKK2luZGV4IDY1NjY1ZGYuLmJlNDkxNDAgMTAwNjQ0CiAtLS0gYS9NYWtlZmlsZS5wcmUuaW4KICsrKyBiL01ha2VmaWxlLnByZS5pbgotQEAgLTE0Miw3ICsxNDIsNyBAQCBMSUJESVI9CQlAbGliZGlyQAorQEAgLTE0Myw3ICsxNDMsNyBAQCBMSUJESVI9CQlAbGliZGlyQAogIE1BTkRJUj0JCUBtYW5kaXJACiAgSU5DTFVERURJUj0JQGluY2x1ZGVkaXJACiAgQ09ORklOQ0xVREVESVI9CSQoZXhlY19wcmVmaXgpL2luY2x1ZGUKQEAgLTYxLDcgKzYxLDcgQEAKICBBQklGTEFHUz0JQEFCSUZMQUdTQAogIAogICMgRGV0YWlsZWQgZGVzdGluYXRpb24gZGlyZWN0b3JpZXMKLUBAIC03NjgsNiArNzY4LDcgQEAgTW9kdWxlcy9nZXRwYXRoLm86ICQoc3JjZGlyKS9Nb2R1bGVzL2dldHBhdGguYyBNYWtlZmlsZQorQEAgLTc1Myw2ICs3NTMsNyBAQCBNb2R1bGVzL2dldHBhdGgubzogJChzcmNkaXIpL01vZHVsZXMvZ2V0cGF0aC5jIE1ha2VmaWxlCiAgCQktREVYRUNfUFJFRklYPSciJChleGVjX3ByZWZpeCkiJyBcCiAgCQktRFZFUlNJT049JyIkKFZFUlNJT04pIicgXAogIAkJLURWUEFUSD0nIiQoVlBBVEgpIicgXApAQCAtNjksNyArNjksNyBAQAogIAkJLW8gJEAgJChzcmNkaXIpL01vZHVsZXMvZ2V0cGF0aC5jCiAgCiAgUHJvZ3JhbXMvcHl0aG9uLm86ICQoc3JjZGlyKS9Qcm9ncmFtcy9weXRob24uYwotQEAgLTg1Niw3ICs4NTcsNyBAQCByZWdlbi1vcGNvZGU6CitAQCAtODY4LDcgKzg2OSw3IEBAIHJlZ2VuLXN5bWJvbDogJChzcmNkaXIpL0luY2x1ZGUvZ3JhbWluaXQuaAogIFB5dGhvbi9jb21waWxlLm8gUHl0aG9uL3N5bXRhYmxlLm8gUHl0aG9uL2FzdF91bnBhcnNlLm8gUHl0aG9uL2FzdC5vIFB5dGhvbi9mdXR1cmUubyBQYXJzZXIvcGFyc2V0b2subzogJChzcmNkaXIpL0luY2x1ZGUvZ3JhbWluaXQuaCAkKHNyY2RpcikvSW5jbHVkZS9QeXRob24tYXN0LmgKICAKICBQeXRob24vZ2V0cGxhdGZvcm0ubzogJChzcmNkaXIpL1B5dGhvbi9nZXRwbGF0Zm9ybS5jCkBAIC03OSw3MiArNzksOTAgQEAKICBQeXRob24vaW1wb3J0ZGwubzogJChzcmNkaXIpL1B5dGhvbi9pbXBvcnRkbC5jCiAgCQkkKENDKSAtYyAkKFBZX0NPUkVfQ0ZMQUdTKSAtSSQoRExJTkNMRElSKSAtbyAkQCAkKHNyY2RpcikvUHl0aG9uL2ltcG9ydGRsLmMKIGRpZmYgLS1naXQgYS9Nb2R1bGVzL2dldHBhdGguYyBiL01vZHVsZXMvZ2V0cGF0aC5jCi1pbmRleCBlNmEzZThlLi4wYzYyYWY2IDEwMDY0NAoraW5kZXggYjcyN2Y2Ni4uYzAwM2U0NiAxMDA2NDQKIC0tLSBhL01vZHVsZXMvZ2V0cGF0aC5jCiArKysgYi9Nb2R1bGVzL2dldHBhdGguYwotQEAgLTEyMyw2ICsxMjMsNyBAQCB0eXBlZGVmIHN0cnVjdCB7Ci0gICAgIHdjaGFyX3QgKmV4ZWNfcHJlZml4OyAgICAgICAgICAgICAgLyogRVhFQ19QUkVGSVggZGVmaW5lICovCitAQCAtMTI4LDYgKzEyOCw3IEBAIHR5cGVkZWYgc3RydWN0IHsKKyAgICAgd2NoYXJfdCAqZXhlY19wcmVmaXg7ICAgICAgICAgICAgICAvKiBFWEVDX1BSRUZJWCBtYWNybyAqLwogIAogICAgICB3Y2hhcl90ICpsaWJfcHl0aG9uOyAgICAgICAgICAgICAgIC8qICJsaWIvcHl0aG9uWC5ZIiAqLwogKyAgICB3Y2hhcl90ICptdWx0aWxpYl9weXRob247ICAgICAgICAgICAgICAgLyogImxpYltzdWZmaXhdL3B5dGhvblguWSIgKi8KLSAgICAgd2NoYXJfdCBhcmd2MF9wYXRoW01BWFBBVEhMRU4rMV07Ci0gICAgIHdjaGFyX3QgemlwX3BhdGhbTUFYUEFUSExFTisxXTsgICAgLyogIi4uLi9saWIvcHl0aG9uWFkuemlwIiAqLwogIAotQEAgLTMxNCw3ICszMTUsNyBAQCBzZWFyY2hfZm9yX3ByZWZpeChjb25zdCBfUHlDb3JlQ29uZmlnICpjb3JlX2NvbmZpZywKKyAgICAgaW50IHByZWZpeF9mb3VuZDsgICAgICAgICAvKiBmb3VuZCBwbGF0Zm9ybSBpbmRlcGVuZGVudCBsaWJyYXJpZXM/ICovCisgICAgIGludCBleGVjX3ByZWZpeF9mb3VuZDsgICAgLyogZm91bmQgdGhlIHBsYXRmb3JtIGRlcGVuZGVudCBsaWJyYXJpZXM/ICovCitAQCAtMzg2LDcgKzM4Nyw3IEBAIHNlYXJjaF9mb3JfcHJlZml4KFB5Q2FsY3VsYXRlUGF0aCAqY2FsY3VsYXRlLCBfUHlQYXRoQ29uZmlnICpwYXRoY29uZmlnLAogICAgICAgICAgaWYgKGRlbGltKSB7CiAgICAgICAgICAgICAgKmRlbGltID0gTCdcMCc7CiAgICAgICAgICB9Ci0tICAgICAgICBqb2lucGF0aChwcmVmaXgsIGNhbGN1bGF0ZS0+bGliX3B5dGhvbik7Ci0rICAgICAgICBqb2lucGF0aChwcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uKTsKLSAgICAgICAgIGpvaW5wYXRoKHByZWZpeCwgTEFORE1BUkspOwotICAgICAgICAgcmV0dXJuIDE7Ci0gICAgIH0KLUBAIC0zNDMsNyArMzQ0LDcgQEAgc2VhcmNoX2Zvcl9wcmVmaXgoY29uc3QgX1B5Q29yZUNvbmZpZyAqY29yZV9jb25maWcsCi0gICAgIGNvcHlfYWJzb2x1dGUocHJlZml4LCBjYWxjdWxhdGUtPmFyZ3YwX3BhdGgsIE1BWFBBVEhMRU4rMSk7Ci0gICAgIGRvIHsKLSAgICAgICAgIG4gPSB3Y3NsZW4ocHJlZml4KTsKLS0gICAgICAgIGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uKTsKLSsgICAgICAgIGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5tdWx0aWxpYl9weXRob24pOwotICAgICAgICAgam9pbnBhdGgocHJlZml4LCBMQU5ETUFSSyk7Ci0gICAgICAgICBpZiAoaXNtb2R1bGUocHJlZml4KSkgewotICAgICAgICAgICAgIHJldHVybiAxOwotQEAgLTM1NSw3ICszNTYsNyBAQCBzZWFyY2hfZm9yX3ByZWZpeChjb25zdCBfUHlDb3JlQ29uZmlnICpjb3JlX2NvbmZpZywKLSAgICAgLyogTG9vayBhdCBjb25maWd1cmUncyBQUkVGSVggKi8KLSAgICAgd2NzbmNweShwcmVmaXgsIGNhbGN1bGF0ZS0+cHJlZml4LCBNQVhQQVRITEVOKTsKLSAgICAgcHJlZml4W01BWFBBVEhMRU5dID0gTCdcMCc7Ci0tICAgIGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uKTsKLSsgICAgam9pbnBhdGgocHJlZml4LCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbik7Ci0gICAgIGpvaW5wYXRoKHByZWZpeCwgTEFORE1BUkspOwotICAgICBpZiAoaXNtb2R1bGUocHJlZml4KSkgewotICAgICAgICAgcmV0dXJuIDE7Ci1AQCAtNDI3LDcgKzQyOCw3IEBAIHNlYXJjaF9mb3JfZXhlY19wcmVmaXgoY29uc3QgX1B5Q29yZUNvbmZpZyAqY29yZV9jb25maWcsCi0gICAgICAgICAgICAgd2NzbmNweShleGVjX3ByZWZpeCwgY29yZV9jb25maWctPmhvbWUsIE1BWFBBVEhMRU4pOworLSAgICAgICAgc3RhdHVzID0gam9pbnBhdGgocHJlZml4LCBjYWxjdWxhdGUtPmxpYl9weXRob24sIHByZWZpeF9sZW4pOworKyAgICAgICAgc3RhdHVzID0gam9pbnBhdGgocHJlZml4LCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbiwgcHJlZml4X2xlbik7CisgICAgICAgICBpZiAoX1B5U3RhdHVzX0VYQ0VQVElPTihzdGF0dXMpKSB7CisgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKICAgICAgICAgIH0KLSAgICAgICAgIGV4ZWNfcHJlZml4W01BWFBBVEhMRU5dID0gTCdcMCc7Ci0tICAgICAgICBqb2lucGF0aChleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uKTsKLSsgICAgICAgIGpvaW5wYXRoKGV4ZWNfcHJlZml4LCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbik7Ci0gICAgICAgICBqb2lucGF0aChleGVjX3ByZWZpeCwgTCJsaWItZHlubG9hZCIpOwotICAgICAgICAgcmV0dXJuIDE7Ci0gICAgIH0KLUBAIC00NjQsNyArNDY1LDcgQEAgc2VhcmNoX2Zvcl9leGVjX3ByZWZpeChjb25zdCBfUHlDb3JlQ29uZmlnICpjb3JlX2NvbmZpZywKLSAgICAgY29weV9hYnNvbHV0ZShleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5hcmd2MF9wYXRoLCBNQVhQQVRITEVOKzEpOworQEAgLTQ0NCw3ICs0NDUsNyBAQCBzZWFyY2hfZm9yX3ByZWZpeChQeUNhbGN1bGF0ZVBhdGggKmNhbGN1bGF0ZSwgX1B5UGF0aENvbmZpZyAqcGF0aGNvbmZpZywKICAgICAgZG8gewotICAgICAgICAgbiA9IHdjc2xlbihleGVjX3ByZWZpeCk7Ci0tICAgICAgICBqb2lucGF0aChleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uKTsKLSsgICAgICAgIGpvaW5wYXRoKGV4ZWNfcHJlZml4LCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbik7Ci0gICAgICAgICBqb2lucGF0aChleGVjX3ByZWZpeCwgTCJsaWItZHlubG9hZCIpOwotICAgICAgICAgaWYgKGlzZGlyKGV4ZWNfcHJlZml4KSkgewotICAgICAgICAgICAgIHJldHVybiAxOwotQEAgLTQ3Niw3ICs0NzcsNyBAQCBzZWFyY2hfZm9yX2V4ZWNfcHJlZml4KGNvbnN0IF9QeUNvcmVDb25maWcgKmNvcmVfY29uZmlnLAotICAgICAvKiBMb29rIGF0IGNvbmZpZ3VyZSdzIEVYRUNfUFJFRklYICovCi0gICAgIHdjc25jcHkoZXhlY19wcmVmaXgsIGNhbGN1bGF0ZS0+ZXhlY19wcmVmaXgsIE1BWFBBVEhMRU4pOwotICAgICBleGVjX3ByZWZpeFtNQVhQQVRITEVOXSA9IEwnXDAnOwotLSAgICBqb2lucGF0aChleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uKTsKLSsgICAgam9pbnBhdGgoZXhlY19wcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uKTsKLSAgICAgam9pbnBhdGgoZXhlY19wcmVmaXgsIEwibGliLWR5bmxvYWQiKTsKLSAgICAgaWYgKGlzZGlyKGV4ZWNfcHJlZml4KSkgewotICAgICAgICAgcmV0dXJuIDE7Ci1AQCAtODcxLDYgKzg3MiwxMCBAQCBjYWxjdWxhdGVfaW5pdChQeUNhbGN1bGF0ZVBhdGggKmNhbGN1bGF0ZSwKKyAgICAgICAgIC8qIFBhdGg6IDxhcmd2MF9wYXRoIG9yIHN1YnN0cmluZz4gLyA8bGliX3B5dGhvbj4gLyBMQU5ETUFSSyAqLworICAgICAgICAgc2l6ZV90IG4gPSB3Y3NsZW4ocHJlZml4KTsKKy0gICAgICAgIHN0YXR1cyA9IGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uLCBwcmVmaXhfbGVuKTsKKysgICAgICAgIHN0YXR1cyA9IGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5tdWx0aWxpYl9weXRob24sIHByZWZpeF9sZW4pOworICAgICAgICAgaWYgKF9QeVN0YXR1c19FWENFUFRJT04oc3RhdHVzKSkgeworICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgICB9CitAQCAtNDY3LDcgKzQ2OCw3IEBAIHNlYXJjaF9mb3JfcHJlZml4KFB5Q2FsY3VsYXRlUGF0aCAqY2FsY3VsYXRlLCBfUHlQYXRoQ29uZmlnICpwYXRoY29uZmlnLAorICAgICBpZiAoc2FmZV93Y3NjcHkocHJlZml4LCBjYWxjdWxhdGUtPnByZWZpeCwgcHJlZml4X2xlbikgPCAwKSB7CisgICAgICAgICByZXR1cm4gUEFUSExFTl9FUlIoKTsKKyAgICAgfQorLSAgICBzdGF0dXMgPSBqb2lucGF0aChwcmVmaXgsIGNhbGN1bGF0ZS0+bGliX3B5dGhvbiwgcHJlZml4X2xlbik7CisrICAgIHN0YXR1cyA9IGpvaW5wYXRoKHByZWZpeCwgY2FsY3VsYXRlLT5tdWx0aWxpYl9weXRob24sIHByZWZpeF9sZW4pOworICAgICBpZiAoX1B5U3RhdHVzX0VYQ0VQVElPTihzdGF0dXMpKSB7CisgICAgICAgICByZXR1cm4gc3RhdHVzOworICAgICB9CitAQCAtNTEwLDcgKzUxMSw3IEBAIGNhbGN1bGF0ZV9wcmVmaXgoUHlDYWxjdWxhdGVQYXRoICpjYWxjdWxhdGUsIF9QeVBhdGhDb25maWcgKnBhdGhjb25maWcsCisgICAgICAgICBpZiAoc2FmZV93Y3NjcHkocHJlZml4LCBjYWxjdWxhdGUtPnByZWZpeCwgcHJlZml4X2xlbikgPCAwKSB7CisgICAgICAgICAgICAgcmV0dXJuIFBBVEhMRU5fRVJSKCk7CisgICAgICAgICB9CistICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChwcmVmaXgsIGNhbGN1bGF0ZS0+bGliX3B5dGhvbiwgcHJlZml4X2xlbik7CisrICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChwcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uLCBwcmVmaXhfbGVuKTsKKyAgICAgICAgIGlmIChfUHlTdGF0dXNfRVhDRVBUSU9OKHN0YXR1cykpIHsKKyAgICAgICAgICAgICByZXR1cm4gc3RhdHVzOworICAgICAgICAgfQorQEAgLTYzNSw3ICs2MzYsNyBAQCBzZWFyY2hfZm9yX2V4ZWNfcHJlZml4KFB5Q2FsY3VsYXRlUGF0aCAqY2FsY3VsYXRlLCBfUHlQYXRoQ29uZmlnICpwYXRoY29uZmlnLAorICAgICAgICAgICAgICAgICByZXR1cm4gUEFUSExFTl9FUlIoKTsKKyAgICAgICAgICAgICB9CisgICAgICAgICB9CistICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uLCBleGVjX3ByZWZpeF9sZW4pOworKyAgICAgICAgc3RhdHVzID0gam9pbnBhdGgoZXhlY19wcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uLCBleGVjX3ByZWZpeF9sZW4pOworICAgICAgICAgaWYgKF9QeVN0YXR1c19FWENFUFRJT04oc3RhdHVzKSkgeworICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgICB9CitAQCAtNjY3LDcgKzY2OCw3IEBAIHNlYXJjaF9mb3JfZXhlY19wcmVmaXgoUHlDYWxjdWxhdGVQYXRoICpjYWxjdWxhdGUsIF9QeVBhdGhDb25maWcgKnBhdGhjb25maWcsCisgICAgIGRvIHsKKyAgICAgICAgIC8qIFBhdGg6IDxhcmd2MF9wYXRoIG9yIHN1YnN0cmluZz4gLyA8bGliX3B5dGhvbj4gLyAibGliLWR5bmxvYWQiICovCisgICAgICAgICBzaXplX3QgbiA9IHdjc2xlbihleGVjX3ByZWZpeCk7CistICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uLCBleGVjX3ByZWZpeF9sZW4pOworKyAgICAgICAgc3RhdHVzID0gam9pbnBhdGgoZXhlY19wcmVmaXgsIGNhbGN1bGF0ZS0+bXVsdGlsaWJfcHl0aG9uLCBleGVjX3ByZWZpeF9sZW4pOworICAgICAgICAgaWYgKF9QeVN0YXR1c19FWENFUFRJT04oc3RhdHVzKSkgeworICAgICAgICAgICAgIHJldHVybiBzdGF0dXM7CisgICAgICAgICB9CitAQCAtNjg5LDcgKzY5MCw3IEBAIHNlYXJjaF9mb3JfZXhlY19wcmVmaXgoUHlDYWxjdWxhdGVQYXRoICpjYWxjdWxhdGUsIF9QeVBhdGhDb25maWcgKnBhdGhjb25maWcsCisgICAgIGlmIChzYWZlX3djc2NweShleGVjX3ByZWZpeCwgY2FsY3VsYXRlLT5leGVjX3ByZWZpeCwgZXhlY19wcmVmaXhfbGVuKSA8IDApIHsKKyAgICAgICAgIHJldHVybiBQQVRITEVOX0VSUigpOworICAgICB9CistICAgIHN0YXR1cyA9IGpvaW5wYXRoKGV4ZWNfcHJlZml4LCBjYWxjdWxhdGUtPmxpYl9weXRob24sIGV4ZWNfcHJlZml4X2xlbik7CisrICAgIHN0YXR1cyA9IGpvaW5wYXRoKGV4ZWNfcHJlZml4LCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbiwgZXhlY19wcmVmaXhfbGVuKTsKKyAgICAgaWYgKF9QeVN0YXR1c19FWENFUFRJT04oc3RhdHVzKSkgeworICAgICAgICAgcmV0dXJuIHN0YXR1czsKKyAgICAgfQorQEAgLTkyOCw3ICs5MjksNyBAQCBjYWxjdWxhdGVfYXJndjBfcGF0aChQeUNhbGN1bGF0ZVBhdGggKmNhbGN1bGF0ZSwgY29uc3Qgd2NoYXJfdCAqcHJvZ3JhbV9mdWxsX3BhdAorICAgICAgICAgICAgIHJldHVybiBQQVRITEVOX0VSUigpOworICAgICAgICAgfQorICAgICAgICAgcmVkdWNlKGFyZ3YwX3BhdGgpOworLSAgICAgICAgc3RhdHVzID0gam9pbnBhdGgoYXJndjBfcGF0aCwgY2FsY3VsYXRlLT5saWJfcHl0aG9uLCBhcmd2MF9wYXRoX2xlbik7CisrICAgICAgICBzdGF0dXMgPSBqb2lucGF0aChhcmd2MF9wYXRoLCBjYWxjdWxhdGUtPm11bHRpbGliX3B5dGhvbiwgYXJndjBfcGF0aF9sZW4pOworICAgICAgICAgaWYgKF9QeVN0YXR1c19FWENFUFRJT04oc3RhdHVzKSkgeworICAgICAgICAgICAgIFB5TWVtX1Jhd0ZyZWUod2J1Zik7CisgICAgICAgICAgICAgcmV0dXJuIHN0YXR1czsKK0BAIC0xMjAxLDYgKzEyMDIsMTAgQEAgY2FsY3VsYXRlX2luaXQoUHlDYWxjdWxhdGVQYXRoICpjYWxjdWxhdGUsIGNvbnN0IFB5Q29uZmlnICpjb25maWcpCiAgICAgIGlmICghY2FsY3VsYXRlLT5saWJfcHl0aG9uKSB7CiAgICAgICAgICByZXR1cm4gREVDT0RFX0xPQ0FMRV9FUlIoIkVYRUNfUFJFRklYIGRlZmluZSIsIGxlbik7CiAgICAgIH0KQEAgLTE1MiwxMCArMTcwLDEwIEBACiArICAgIGlmICghY2FsY3VsYXRlLT5tdWx0aWxpYl9weXRob24pIHsKICsgICAgICAgIHJldHVybiBERUNPREVfTE9DQUxFX0VSUigiRVhFQ19QUkVGSVggZGVmaW5lIiwgbGVuKTsKICsgICAgfQotICAgICByZXR1cm4gX1B5X0lOSVRfT0soKTsKLSB9CiAgCi1AQCAtODgyLDYgKzg4Nyw3IEBAIGNhbGN1bGF0ZV9mcmVlKFB5Q2FsY3VsYXRlUGF0aCAqY2FsY3VsYXRlKQorICAgICBjYWxjdWxhdGUtPndhcm5pbmdzID0gY29uZmlnLT5wYXRoY29uZmlnX3dhcm5pbmdzOworICAgICBjYWxjdWxhdGUtPnB5dGhvbnBhdGhfZW52ID0gY29uZmlnLT5weXRob25wYXRoX2VudjsKK0BAIC0xMjE2LDYgKzEyMjEsNyBAQCBjYWxjdWxhdGVfZnJlZShQeUNhbGN1bGF0ZVBhdGggKmNhbGN1bGF0ZSkKICAgICAgUHlNZW1fUmF3RnJlZShjYWxjdWxhdGUtPnByZWZpeCk7CiAgICAgIFB5TWVtX1Jhd0ZyZWUoY2FsY3VsYXRlLT5leGVjX3ByZWZpeCk7CiAgICAgIFB5TWVtX1Jhd0ZyZWUoY2FsY3VsYXRlLT5saWJfcHl0aG9uKTsKQEAgLTE4MiwxMCArMjAwLDEwIEBACiArCXJldHVybiBMSUI7CiArfQogZGlmZiAtLWdpdCBhL1B5dGhvbi9zeXNtb2R1bGUuYyBiL1B5dGhvbi9zeXNtb2R1bGUuYwotaW5kZXggZWZlNWIyOS4uZGU3N2IxNyAxMDA2NDQKK2luZGV4IDViMGZiODEuLjBkY2U3NTQgMTAwNjQ0CiAtLS0gYS9QeXRob24vc3lzbW9kdWxlLmMKICsrKyBiL1B5dGhvbi9zeXNtb2R1bGUuYwotQEAgLTIzMTksNiArMjMxOSw4IEBAIF9QeVN5c19CZWdpbkluaXQoUHlPYmplY3QgKipzeXNtb2QpCitAQCAtMjY2OCw2ICsyNjY4LDggQEAgX1B5U3lzX0luaXRDb3JlKF9QeVJ1bnRpbWVTdGF0ZSAqcnVudGltZSwgUHlJbnRlcnByZXRlclN0YXRlICppbnRlcnAsCiAgICAgICAgICAgICAgICAgICAgICAgICAgUHlVbmljb2RlX0Zyb21TdHJpbmcoUHlfR2V0Q29weXJpZ2h0KCkpKTsKICAgICAgU0VUX1NZU19GUk9NX1NUUklORygicGxhdGZvcm0iLAogICAgICAgICAgICAgICAgICAgICAgICAgIFB5VW5pY29kZV9Gcm9tU3RyaW5nKFB5X0dldFBsYXRmb3JtKCkpKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtRG9uLXQtc2VhcmNoLXN5c3RlbS1mb3ItaGVhZGVycy1saWJyYXJpZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvbi10LXNlYXJjaC1zeXN0ZW0tZm9yLWhlYWRlcnMtbGlicmFyaWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjZjhlMWUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLURvbi10LXNlYXJjaC1zeXN0ZW0tZm9yLWhlYWRlcnMtbGlicmFyaWVzLnBhdGNoCkBAIC0wLDAgKzEsMjkgQEAKK0Zyb20gODVlOGY4NmFkMmI3ZGVjMDg0OGNkNTViOGU4MTBhNWUyNzIyYjIwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorRGF0ZTogV2VkLCA0IE1hciAyMDIwIDAwOjA2OjQyICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIERvbid0IHNlYXJjaCBzeXN0ZW0gZm9yIGhlYWRlcnMvbGlicmFyaWVzCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorLS0tCisgc2V0dXAucHkgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQoraW5kZXggOWRhMWIzYS4uNTk3ODJjMCAxMDA2NDQKKy0tLSBhL3NldHVwLnB5CisrKysgYi9zZXR1cC5weQorQEAgLTY3NCw4ICs2NzQsOCBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CisgICAgICAgICAgICAgYWRkX2Rpcl90b19saXN0KHNlbGYuY29tcGlsZXIuaW5jbHVkZV9kaXJzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzeXNjb25maWcuZ2V0X2NvbmZpZ192YXIoIklOQ0xVREVESVIiKSkKKyAKKy0gICAgICAgIHN5c3RlbV9saWJfZGlycyA9IFsnL2xpYjY0JywgJy91c3IvbGliNjQnLCAnL2xpYicsICcvdXNyL2xpYiddCistICAgICAgICBzeXN0ZW1faW5jbHVkZV9kaXJzID0gWycvdXNyL2luY2x1ZGUnXQorKyAgICAgICAgc3lzdGVtX2xpYl9kaXJzID0gW10KKysgICAgICAgIHN5c3RlbV9pbmNsdWRlX2RpcnMgPSBbXQorICAgICAgICAgIyBsaWJfZGlycyBhbmQgaW5jX2RpcnMgYXJlIHVzZWQgdG8gc2VhcmNoIGZvciBmaWxlczsKKyAgICAgICAgICMgaWYgYSBmaWxlIGlzIGZvdW5kIGluIG9uZSBvZiB0aG9zZSBkaXJlY3RvcmllcywgaXQgY2FuCisgICAgICAgICAjIGJlIGFzc3VtZWQgdGhhdCBubyBhZGRpdGlvbmFsIC1JLC1MIGRpcmVjdGl2ZXMgYXJlIG5lZWRlZC4KKy0tIAorMi4yNC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtTWFrZWZpbGUtZG8tbm90LWNvbXBpbGUtLnB5Yy1pbi1wYXJhbGxlbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtTWFrZWZpbGUtZG8tbm90LWNvbXBpbGUtLnB5Yy1pbi1wYXJhbGxlbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iMWJjZWFjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1NYWtlZmlsZS1kby1ub3QtY29tcGlsZS0ucHljLWluLXBhcmFsbGVsLnBhdGNoCkBAIC0wLDAgKzEsNTggQEAKK0Zyb20gYzUwMWUxMjFhODcyY2JjZWY4ZmZlNjI2YzFkZTE3M2ExMjViZTlmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxNiBKYW4gMjAyMCAxMjozNDoyMCArMDEwMAorU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogZG8gbm90IGNvbXBpbGUgLnB5YyBpbiBwYXJhbGxlbAorCitUaGlzIHdhcyBmb3VuZCB0byBicmVhayByZXByb2R1Y2liaWxpdHksIGFuZCBwcm9kdWNlIHN0cmFuZ2UgZmlsZSBvd25lcnNoaXAKK3JhY2VzLgorCitUaGUgdXBzdHJlYW0gY29tbWl0IGludHJvZHVjaW5nIHRoZSBjaGFuZ2Ugd2FzOgoraHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL2NvbW1pdC8xYTJkZDgyZjU2YmQ4MTNhYWNjNTcwZTE3MmNlZmU1NWE4YTQxNTA0CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBNYWtlZmlsZS5wcmUuaW4gfCAxMiArKysrKystLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvTWFrZWZpbGUucHJlLmluIGIvTWFrZWZpbGUucHJlLmluCitpbmRleCAxMjQxMTEyLi41ZGZkZjQ0IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUucHJlLmluCisrKysgYi9NYWtlZmlsZS5wcmUuaW4KK0BAIC0xNDU3LDMwICsxNDU3LDMwIEBAIGxpYmluc3RhbGw6CWJ1aWxkX2FsbCAkKHNyY2RpcikvTW9kdWxlcy94eG1vZHVsZS5jCisgCWZpCisgCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICAkKFJVTlNIQVJFRCkgXAorIAkJJChQWVRIT05fRk9SX0JVSUxEKSAtV2kgJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCistCQktajAgLWQgJChMSUJERVNUKSAtZiBcCisrCQktZCAkKExJQkRFU1QpIC1mIFwKKyAJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAorIAkJJChERVNURElSKSQoTElCREVTVCkKKyAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKKyAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC1PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorLQkJLWowIC1kICQoTElCREVTVCkgLWYgXAorKwkJLWQgJChMSUJERVNUKSAtZiBcCisgCQkteCAnYmFkX2NvZGluZ3xiYWRzeW50YXh8c2l0ZS1wYWNrYWdlc3xsaWIydG8zL3Rlc3RzL2RhdGEnIFwKKyAJCSQoREVTVERJUikkKExJQkRFU1QpCisgCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCisgCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1XaSAtT08gJChERVNURElSKSQoTElCREVTVCkvY29tcGlsZWFsbC5weSBcCistCQktajAgLWQgJChMSUJERVNUKSAtZiBcCisrCQktZCAkKExJQkRFU1QpIC1mIFwKKyAJCS14ICdiYWRfY29kaW5nfGJhZHN5bnRheHxzaXRlLXBhY2thZ2VzfGxpYjJ0bzMvdGVzdHMvZGF0YScgXAorIAkJJChERVNURElSKSQoTElCREVTVCkKKyAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKKyAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorLQkJLWowIC1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCisrCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAorIAkJLXggYmFkc3ludGF4ICQoREVTVERJUikkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMKKyAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKKyAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC1PICQoREVTVERJUikkKExJQkRFU1QpL2NvbXBpbGVhbGwucHkgXAorLQkJLWowIC1kICQoTElCREVTVCkvc2l0ZS1wYWNrYWdlcyAtZiBcCisrCQktZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAorIAkJLXggYmFkc3ludGF4ICQoREVTVERJUikkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMKKyAJLVBZVEhPTlBBVEg9JChERVNURElSKSQoTElCREVTVCkgJChSVU5TSEFSRUQpIFwKKyAJCSQoUFlUSE9OX0ZPUl9CVUlMRCkgLVdpIC1PTyAkKERFU1RESVIpJChMSUJERVNUKS9jb21waWxlYWxsLnB5IFwKKy0JCS1qMCAtZCAkKExJQkRFU1QpL3NpdGUtcGFja2FnZXMgLWYgXAorKwkJLWQgJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzIC1mIFwKKyAJCS14IGJhZHN5bnRheCAkKERFU1RESVIpJChMSUJERVNUKS9zaXRlLXBhY2thZ2VzCisgCS1QWVRIT05QQVRIPSQoREVTVERJUikkKExJQkRFU1QpICQoUlVOU0hBUkVEKSBcCisgCQkkKFBZVEhPTl9GT1JfQlVJTEQpIC1tIGxpYjJ0bzMucGdlbjIuZHJpdmVyICQoREVTVERJUikkKExJQkRFU1QpL2xpYjJ0bzMvR3JhbW1hci50eHQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtYnBvLTM2ODUyLXByb3Blci1kZXRlY3Rpb24tb2YtbWlwcy1hcmNoaXRlY3R1cmUtZm9yLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtYnBvLTM2ODUyLXByb3Blci1kZXRlY3Rpb24tb2YtbWlwcy1hcmNoaXRlY3R1cmUtZm9yLS5wYXRjaAppbmRleCBlN2FmODg2Li5jNGZhZTA5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWJwby0zNjg1Mi1wcm9wZXItZGV0ZWN0aW9uLW9mLW1pcHMtYXJjaGl0ZWN0dXJlLWZvci0ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1icG8tMzY4NTItcHJvcGVyLWRldGVjdGlvbi1vZi1taXBzLWFyY2hpdGVjdHVyZS1mb3ItLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA3NTM1YzM5OTUxYjlkMTVkZDY0YzQ2NjkwOTJhODU4MmJhNTU1NDY2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxYWQ3NzFkODY3MjhlZTJlZDMwZTIwMmU5NzY4ZDhkODI1Zjk2NDY3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWF0dGhpYXMgU2Nob2VwZmVyIDxtYXR0aGlhcy5zY2hvZXBmZXJAaXRoaW54LmlvPgogRGF0ZTogRnJpLCAzMSBNYXkgMjAxOSAxNTozNDozNCArMDIwMAogU3ViamVjdDogW1BBVENIXSBicG8tMzY4NTI6IHByb3BlciBkZXRlY3Rpb24gb2YgbWlwcyBhcmNoaXRlY3R1cmUgZm9yIHNvZnQKQEAgLTEyLDE1ICsxMiwxNyBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL3B1bGwvMTMxOTZdCiBTaWduZWQtb2ZmLWJ5OiBNYXR0aGlhcyBTY2hvZXBmZXIgPG1hdHRoaWFzLnNjaG9lcGZlckBpdGhpbnguaW8+CisKKyUlIG9yaWdpbmFsIHBhdGNoOiAwMDAxLWJwby0zNjg1Mi1wcm9wZXItZGV0ZWN0aW9uLW9mLW1pcHMtYXJjaGl0ZWN0dXJlLWZvci0ucGF0Y2gKIC0tLQotIGNvbmZpZ3VyZS5hYyB8IDE2OSArKysrKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTcgaW5zZXJ0aW9ucygrKSwgMTUyIGRlbGV0aW9ucygtKQorIGNvbmZpZ3VyZS5hYyB8IDE3NSArKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMjEgaW5zZXJ0aW9ucygrKSwgMTU0IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBhN2RlOTAxZTA4Li5hNzNlMmRlNTFiIDEwMDY0NAoraW5kZXggZWRlNzEwZS4uYmM4MWIwYiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNzI3LDE1OCArNzI3LDIzIEBAIGZpCitAQCAtNzEwLDE2MCArNzEwLDI3IEBAIGZpCiAgTVVMVElBUkNIPSQoJENDIC0tcHJpbnQtbXVsdGlhcmNoIDI+L2Rldi9udWxsKQogIEFDX1NVQlNUKE1VTFRJQVJDSCkKICAKQEAgLTE2Myw2ICsxNjUsOCBAQAogLSAgICAgICAgaTM4Ni1nbnUKIC0jZWxpZiBkZWZpbmVkKF9fQVBQTEVfXykKIC0gICAgICAgIGRhcndpbgorLSNlbGlmIGRlZmluZWQoX19WWFdPUktTX18pCistICAgICAgICB2eHdvcmtzCiAtI2Vsc2UKIC0jIGVycm9yIHVua25vd24gcGxhdGZvcm0gdHJpcGxldAogLSNlbmRpZgpAQCAtMTkwLDEyICsxOTQsMTYgQEAKICsgICAgIAlQTEFURk9STV9UUklQTEVUPXZ4d29ya3MKICsJOzsKICsgICAgICopCi0rCVBMQVRGT1JNX1RSSVBMRVQ9JHt0YXJnZXRfY3B1fS0ke3RhcmdldF9vc30KKysgICAgICAgIGlmIHRlc3QgIiR7dGFyZ2V0X2NwdX0iICE9ICJpNjg2IjsgdGhlbgorKwkJUExBVEZPUk1fVFJJUExFVD0ke3RhcmdldF9jcHV9LSR7dGFyZ2V0X29zfQorKwllbHNlCisrCQlQTEFURk9STV9UUklQTEVUPWkzODYtJHt0YXJnZXRfb3N9CisrCWZpCiArCTs7CiArZXNhYwkKICAKICBpZiB0ZXN0IHgkUExBVEZPUk1fVFJJUExFVCAhPSB4ICYmIHRlc3QgeCRNVUxUSUFSQ0ggIT0geDsgdGhlbgogICAgaWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgIT0geCRNVUxUSUFSQ0g7IHRoZW4KIC0tIAotMi4yMS4wCisyLjI0LjEKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1jb25maWd1cmUuYWMtZml4LUxJQlBMLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1jb25maWd1cmUuYWMtZml4LUxJQlBMLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyM2NlM2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtTElCUEwucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorRnJvbSBhY2NlM2Q0NDFlN2VhZGFkZDJkM2NlMzg2NTQxNTVkYzQzZjFmNjA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IEZyaSwgNyBGZWIgMjAyMCAwOTozNjoyNSArMDgwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGZpeCBMSUJQTAorCitVc2UgTElCRElSIHJhdGhlciB0aGFuIHByZWZpeC9saWIsIHNvIHRoYXQgaXQgd291bGQgd29yayB3aGVuIGxpYjY0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogTGkgWmhvdSA8bGkuemhvdUB3aW5kcml2ZXIuYz4KK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCitpbmRleCBjZTA0MjU4Li45MTVmNDc1IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC00NTMyLDkgKzQ1MzIsOSBAQCBmaQorIGRubCBkZWZpbmUgTElCUEwgYWZ0ZXIgQUJJRkxBR1MgYW5kIExEVkVSU0lPTiBpcyBkZWZpbmVkLgorIEFDX1NVQlNUKFBZX0VOQUJMRV9TSEFSRUQpCisgaWYgdGVzdCB4JFBMQVRGT1JNX1RSSVBMRVQgPSB4OyB0aGVuCistICBMSUJQTD0nJChwcmVmaXgpJyIvbGliL3B5dGhvbiR7VkVSU0lPTn0vY29uZmlnLSR7TERWRVJTSU9OfSIKKysgIExJQlBMPSckKExJQkRJUiknIi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0iCisgZWxzZQorLSAgTElCUEw9JyQocHJlZml4KSciL2xpYi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0tJHtQTEFURk9STV9UUklQTEVUfSIKKysgIExJQlBMPSckKExJQkRJUiknIi9weXRob24ke1ZFUlNJT059L2NvbmZpZy0ke0xEVkVSU0lPTn0tJHtQTEFURk9STV9UUklQTEVUfSIKKyBmaQorIEFDX1NVQlNUKExJQlBMKQorCistLQorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1kaXN0dXRpbHMtc3lzY29uZmlnLWFwcGVuZC1TVEFHSU5HX0xJQkRJUi1weXRob24tc3lzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1kaXN0dXRpbHMtc3lzY29uZmlnLWFwcGVuZC1TVEFHSU5HX0xJQkRJUi1weXRob24tc3lzLnBhdGNoCmluZGV4IDE3MDkwMTEuLmU3YWYzYzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtZGlzdHV0aWxzLXN5c2NvbmZpZy1hcHBlbmQtU1RBR0lOR19MSUJESVItcHl0aG9uLXN5cy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLWRpc3R1dGlscy1zeXNjb25maWctYXBwZW5kLVNUQUdJTkdfTElCRElSLXB5dGhvbi1zeXMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGVmZjkwM2M2MDBmNGM0MGY1NzUzZTk1YWIxNTU3MTI2ZmM2ZTBjOWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDdhZGE5Yzc0OWY2YmViNTFjMTNhM2RlYmM4NTA3NTVlOTExNTQ4YTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMzEgSmFuIDIwMTkgMTY6NDY6MzAgKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gZGlzdHV0aWxzL3N5c2NvbmZpZzogYXBwZW5kCkBAIC0xNSwxMCArMTUsMTAgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotaW5kZXggMGEwMzRlZS4uM2RmZDBhMyAxMDA2NDQKK2luZGV4IGI1MTYyOWUuLjJkZjM0OGMgMTAwNjQ0CiAtLS0gYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQogKysrIGIvTGliL2Rpc3R1dGlscy9zeXNjb25maWcucHkKLUBAIC00MzksNiArNDM5LDggQEAgZGVmIF9pbml0X3Bvc2l4KCk6CitAQCAtNDM4LDYgKzQzOCw4IEBAIGRlZiBfaW5pdF9wb3NpeCgpOgogICAgICAgICAgcGxhdGZvcm09c3lzLnBsYXRmb3JtLAogICAgICAgICAgbXVsdGlhcmNoPWdldGF0dHIoc3lzLmltcGxlbWVudGF0aW9uLCAnX211bHRpYXJjaCcsICcnKSwKICAgICAgKSkKQEAgLTI4LDcgKzI4LDcgQEAKICAgICAgYnVpbGRfdGltZV92YXJzID0gX3RlbXAuYnVpbGRfdGltZV92YXJzCiAgICAgIGdsb2JhbCBfY29uZmlnX3ZhcnMKIGRpZmYgLS1naXQgYS9MaWIvc3lzY29uZmlnLnB5IGIvTGliL3N5c2NvbmZpZy5weQotaW5kZXggODdmYTVlNi4uNzU2YTQxYyAxMDA2NDQKK2luZGV4IGIyZDc5MGIuLjQwNTI3M2MgMTAwNjQ0CiAtLS0gYS9MaWIvc3lzY29uZmlnLnB5CiArKysgYi9MaWIvc3lzY29uZmlnLnB5CiBAQCAtNDE5LDYgKzQxOSw4IEBAIGRlZiBfaW5pdF9wb3NpeCh2YXJzKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtbWFpbi5jLWlmLU9FUFlUSE9OM0hPTUUtaXMtc2V0LXVzZS1pbnN0ZWFkLW9mLVBZVEhPTi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtbWFpbi5jLWlmLU9FUFlUSE9OM0hPTUUtaXMtc2V0LXVzZS1pbnN0ZWFkLW9mLVBZVEhPTi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTE0NmM3NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLW1haW4uYy1pZi1PRVBZVEhPTjNIT01FLWlzLXNldC11c2UtaW5zdGVhZC1vZi1QWVRIT04ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NyArMCwwIEBACi1Gcm9tIDVjZTNhYzU5NTMxODI4ZmY2ODI2NDZmYmJhNTliMjEyNmIyOGE4YWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKYWV3b24gTGVlIDxqYWV3b24ubGVlQHhpbGlueC5jb20+Ci1EYXRlOiBUaHUsIDI1IEFwciAyMDE5IDE1OjM0OjI2IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIG1haW4uYzogaWYgT0VQWVRIT04zSE9NRSBpcyBzZXQgdXNlIGluc3RlYWQgb2YgUFlUSE9OSE9NRQotCi1UaGVyZSBpcyBvbmUgdmFyaWFibGUgUFlUSE9OSE9NRSB0byBkZXRlcm1pbmUgd2hlcmUgbGlicmFyaWVzIGFyZSBjb21pbmcKLWZyb20gZm9yIGJvdGggcHl0aG9uMiBhbmQgcHl0aG9uMy4gVGhpcyBiZWNvbWVzIGFuIGlzc3VlIGlmIG9ubHkgb25lIGhhcwotbGlicmFyaWVzIGluIHRoZSBzcGVjaWZpZWQgUFlUSE9OSE9NRSBwYXRoLCBidXQgdGhleSBhcmUgdXNpbmcgdGhlIHNhbWUKLVBZVEhPTkhPTUUuIENyZWF0aW5nIGFub3RoZXIgdmFyaWFibGUgT0VQWVRIT04zSE9NRSB0byBhbGxvdyBmb3IgYSB3YXkKLXRvIHNldCBhIGRpZmZlcmVudCBwYXRoIGZvciBweXRob24zCi0KLVNpZ25lZC1vZmYtYnk6IEphZXdvbiBMZWUgPGphZXdvbi5sZWVAeGlsaW54LmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpYyBjb25maWd1cmF0aW9uXQotCi0tLS0KLSBNb2R1bGVzL21haW4uYyB8IDE3ICsrKysrKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDEzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9Nb2R1bGVzL21haW4uYyBiL01vZHVsZXMvbWFpbi5jCi1pbmRleCBhY2M1OWM2Li40MDcwODVhIDEwMDY0NAotLS0tIGEvTW9kdWxlcy9tYWluLmMKLSsrKyBiL01vZHVsZXMvbWFpbi5jCi1AQCAtMTgzNCwxMCArMTgzNCwxOSBAQCBjb25maWdfaW5pdF9ob21lKF9QeUNvcmVDb25maWcgKmNvbmZpZykKLSAgICAgICAgIH0KLSAgICAgICAgIHJldHVybiBfUHlfSU5JVF9PSygpOwotICAgICB9Ci0tCi0tICAgIGludCByZXMgPSBjb25maWdfZ2V0X2Vudl92YXJfZHVwKCZob21lLCBMIlBZVEhPTkhPTUUiLCAiUFlUSE9OSE9NRSIpOwotLSAgICBpZiAocmVzIDwgMCkgewotLSAgICAgICAgcmV0dXJuIERFQ09ERV9MT0NBTEVfRVJSKCJQWVRIT05IT01FIiwgcmVzKTsKLSsgICAgaW50IHJlczsKLSsgICAgY29uc3QgY2hhciAqb2VweXRob24zaG9tZSA9IGNvbmZpZ19nZXRfZW52X3ZhcigiT0VQWVRIT04zSE9NRSIpOwotKyAgICBpZiAob2VweXRob24zaG9tZSkgewotKyAgICAgICAgcmVzID0gY29uZmlnX2dldF9lbnZfdmFyX2R1cCgmaG9tZSwgTCJPRVBZVEhPTjNIT01FIiwgIk9FUFlUSE9OM0hPTUUiKTsKLSsgICAgICAgIGlmIChyZXMgPCAwKSB7Ci0rICAgICAgICAgICAgcmV0dXJuIERFQ09ERV9MT0NBTEVfRVJSKCJPRVBZVEhPTjNIT01FIiwgcmVzKTsKLSsgICAgICAgIH0KLSsgICAgfQotKyAgICBlbHNlIHsKLSsgICAgICAgIHJlcyA9IGNvbmZpZ19nZXRfZW52X3Zhcl9kdXAoJmhvbWUsIEwiUFlUSE9OSE9NRSIsICJQWVRIT05IT01FIik7Ci0rICAgICAgICBpZiAocmVzIDwgMCkgewotKyAgICAgICAgICAgIHJldHVybiBERUNPREVfTE9DQUxFX0VSUigiUFlUSE9OSE9NRSIsIHJlcyk7Ci0rICAgICAgICB9Ci0gICAgIH0KLSAgICAgY29uZmlnLT5ob21lID0gaG9tZTsKLSAgICAgcmV0dXJuIF9QeV9JTklUX09LKCk7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLXB5dGhvbjMtRG8tbm90LWhhcmRjb2RlLWxpYi1mb3ItZGlzdHV0aWxzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1weXRob24zLURvLW5vdC1oYXJkY29kZS1saWItZm9yLWRpc3R1dGlscy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mZTAzMWI5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1weXRob24zLURvLW5vdC1oYXJkY29kZS1saWItZm9yLWRpc3R1dGlscy5wYXRjaApAQCAtMCwwICsxLDQzIEBACitGcm9tIGJiNzExYjUzZjEwZDMyYTkwYTI3Y2NmNGIwZGM1MWU0YTcwMWQ4NjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorRGF0ZTogRnJpLCA3IEZlYiAyMDIwIDA5OjQyOjA5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHB5dGhvbjM6IERvIG5vdCBoYXJkY29kZSAibGliIiBmb3IgZGlzdHV0aWxzCisKK0dldCB0aGUgc3lzLmxpYiBmcm9tIHB5dGhvbjMgaXRzZWxmIGFuZCBkbyBub3QgdXNlCitoYXJkY29kZWQgdmFsdWUgb2YgJ2xpYicgZm9yIGRpc3R1dGlscy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBMaSBaaG91IDxsaS56aG91QHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkgfCA2ICsrKystLQorIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL2NvbW1hbmQvaW5zdGFsbC5weSBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CitpbmRleCBjNjI1Yzk1Li44ZTMyZjU0IDEwMDY0NAorLS0tIGEvTGliL2Rpc3R1dGlscy9jb21tYW5kL2luc3RhbGwucHkKKysrKyBiL0xpYi9kaXN0dXRpbHMvY29tbWFuZC9pbnN0YWxsLnB5CitAQCAtMTksNiArMTksOCBAQCBmcm9tIHNpdGUgaW1wb3J0IFVTRVJfQkFTRQorIGZyb20gc2l0ZSBpbXBvcnQgVVNFUl9TSVRFCisgSEFTX1VTRVJfU0lURSA9IFRydWUKKworK2xpYm5hbWUgPSBzeXMubGliCisrCisgV0lORE9XU19TQ0hFTUUgPSB7CisgICAgICdwdXJlbGliJzogJyRiYXNlL0xpYi9zaXRlLXBhY2thZ2VzJywKKyAgICAgJ3BsYXRsaWInOiAnJGJhc2UvTGliL3NpdGUtcGFja2FnZXMnLAorQEAgLTI5LDggKzMxLDggQEAgV0lORE9XU19TQ0hFTUUgPSB7CisKKyBJTlNUQUxMX1NDSEVNRVMgPSB7CisgICAgICd1bml4X3ByZWZpeCc6IHsKKy0gICAgICAgICdwdXJlbGliJzogJyRiYXNlL2xpYi9weXRob24kcHlfdmVyc2lvbl9zaG9ydC9zaXRlLXBhY2thZ2VzJywKKy0gICAgICAgICdwbGF0bGliJzogJyRwbGF0YmFzZS9saWIvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCisrICAgICAgICAncHVyZWxpYic6ICckYmFzZS8nICsgbGlibmFtZSArICcvcHl0aG9uJHB5X3ZlcnNpb25fc2hvcnQvc2l0ZS1wYWNrYWdlcycsCisrICAgICAgICAncGxhdGxpYic6ICckcGxhdGJhc2UvJyArIGxpYm5hbWUgKyAnL3B5dGhvbiRweV92ZXJzaW9uX3Nob3J0L3NpdGUtcGFja2FnZXMnLAorICAgICAgICAgJ2hlYWRlcnMnOiAnJGJhc2UvaW5jbHVkZS9weXRob24kcHlfdmVyc2lvbl9zaG9ydCRhYmlmbGFncy8kZGlzdF9uYW1lJywKKyAgICAgICAgICdzY3JpcHRzJzogJyRiYXNlL2JpbicsCisgICAgICAgICAnZGF0YScgICA6ICckYmFzZScsCistLQorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1weXRob24zLXVzZS1jY19iYXNlbmFtZS10by1yZXBsYWNlLUNDLWZvci1jaGVja2luZy1jLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMS1weXRob24zLXVzZS1jY19iYXNlbmFtZS10by1yZXBsYWNlLUNDLWZvci1jaGVja2luZy1jLnBhdGNoCmluZGV4IGEwZWE4OTcuLmZiMTBjYTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtcHl0aG9uMy11c2UtY2NfYmFzZW5hbWUtdG8tcmVwbGFjZS1DQy1mb3ItY2hlY2tpbmctYy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLXB5dGhvbjMtdXNlLWNjX2Jhc2VuYW1lLXRvLXJlcGxhY2UtQ0MtZm9yLWNoZWNraW5nLWMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDI2NDUzMTdmZWYwOWFmZTMxYjAxYmIyYzFkNGZlNWI5YWZkYmIxMWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDk5NDc4M2RhNWMyMWNhYjgxYjY1ODllZDJkNDI3NWU2NjVhOTQ2ZjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgogRGF0ZTogTW9uLCAyMiBPY3QgMjAxOCAxNToxOTo1MSArMDgwMAogU3ViamVjdDogW1BBVENIXSBweXRob24zOiB1c2UgY2NfYmFzZW5hbWUgdG8gcmVwbGFjZSBDQyBmb3IgY2hlY2tpbmcgY29tcGlsZXIKQEAgLTIxLDEyICsyMSwxMyBAQAogcGF0Y2ggb3JpZ2luYWxseSBmcm9tIExpIFpob3UsIEkganVzdCByZXdvcmsgaXQgdG8gbmV3IHZlcnNpb24KIAogU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKwogLS0tCiAgY29uZmlndXJlLmFjIHwgMTkgKysrKysrKysrKy0tLS0tLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspLCA5IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCBhN2RlOTAxLi40YTM2ODFmIDEwMDY0NAoraW5kZXggYTE4OWQ0Mi4uMGY4NTQ4NiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCiBAQCAtNTQsNiArNTQsNyBAQCBBQ19DT05GSUdfSEVBREVSKHB5Y29uZmlnLmgpCkBAIC0zNyw3ICszOCw3IEBACiAgCiAgIyBweWJ1aWxkZGlyLnR4dCB3aWxsIGJlIGNyZWF0ZWQgYnkgLS1nZW5lcmF0ZS1wb3NpeC12YXJzIGluIHRoZSBNYWtlZmlsZQogIHJtIC1mIHB5YnVpbGRkaXIudHh0Ci1AQCAtNjk1LDcgKzY5Niw3IEBAIEFDX01TR19SRVNVTFQoJHdpdGhfY3h4X21haW4pCitAQCAtNjcxLDcgKzY3Miw3IEBAIEFDX01TR19SRVNVTFQoJHdpdGhfY3h4X21haW4pCiAgcHJlc2V0X2N4eD0iJENYWCIKICBpZiB0ZXN0IC16ICIkQ1hYIgogIHRoZW4KQEAgLTQ2LDcgKzQ3LDcgQEAKICAgICAgICAgIGdjYykgICAgQUNfUEFUSF9UT09MKENYWCwgW2crK10sIFtnKytdLCBbbm90Zm91bmRdKSA7OwogICAgICAgICAgY2MpICAgICBBQ19QQVRIX1RPT0woQ1hYLCBbYysrXSwgW2MrK10sIFtub3Rmb3VuZF0pIDs7CiAgICAgICAgICBjbGFuZ3wqL2NsYW5nKSAgICAgQUNfUEFUSF9UT09MKENYWCwgW2NsYW5nKytdLCBbY2xhbmcrK10sIFtub3Rmb3VuZF0pIDs7Ci1AQCAtOTc5LDcgKzk4MCw3IEBAIHJtZGlyIENhc2VTZW5zaXRpdmVUZXN0RGlyCitAQCAtOTU3LDcgKzk1OCw3IEBAIHJtZGlyIENhc2VTZW5zaXRpdmVUZXN0RGlyCiAgCiAgY2FzZSAkYWNfc3lzX3N5c3RlbSBpbgogIGhwKnxIUCopCkBAIC01NSw3ICs1Niw3IEBACiAgICAgIGNjfCovY2MpIENDPSIkQ0MgLUFlIjs7CiAgICAgIGVzYWM7OwogIGVzYWMKLUBAIC0xMzM2LDcgKzEzMzcsNyBAQCBlbHNlCitAQCAtMTMzNSw3ICsxMzM2LDcgQEAgZWxzZQogIGZpXSwKICBbQUNfTVNHX1JFU1VMVChubyldKQogIGlmIHRlc3QgIiRQeV9MVE8iID0gJ3RydWUnIDsgdGhlbgpAQCAtNjQsNyArNjUsNyBAQAogICAgICAqY2xhbmcqKQogICAgICAgIEFDX1NVQlNUKExMVk1fQVIpCiAgICAgICAgQUNfUEFUSF9UT09MKExMVk1fQVIsIGxsdm0tYXIsICcnLCAke2xsdm1fcGF0aH0pCi1AQCAtMTQyNiw3ICsxNDI3LDcgQEAgdGhlbgorQEAgLTE0MjUsNyArMTQyNiw3IEBAIHRoZW4KICAgIGZpCiAgZmkKICBMTFZNX1BST0ZfRVJSPW5vCkBAIC03MywxNiArNzQsMTYgQEAKICAgICpjbGFuZyopCiAgICAgICMgQW55IGNoYW5nZXMgbWFkZSBoZXJlIHNob3VsZCBiZSByZWZsZWN0ZWQgaW4gdGhlIEdDQytEYXJ3aW4gY2FzZSBiZWxvdwogICAgICBQR09fUFJPRl9HRU5fRkxBRz0iLWZwcm9maWxlLWluc3RyLWdlbmVyYXRlIgotQEAgLTE1MDAsNyArMTUwMSw3IEBAIHRoZW4KLSAgICAgICAgICAgIFdSQVA9Ii1md3JhcHYiCi0gICAgICAgICBmaQorQEAgLTE0ODYsNyArMTQ4Nyw3IEBAIGVzYWMKKyAjIGNvbXBpbGVyIGFuZCBwbGF0Zm9ybS4gIEJBU0VDRkxBR1MgdHdlYWtzIG5lZWQgdG8gYmUgbWFkZSBldmVuIGlmIHRoZQorICMgdXNlciBzZXQgT1BULgogIAotLSAgICAgICAgY2FzZSAkQ0MgaW4KLSsgICAgICAgIGNhc2UgJGNjX2Jhc2VuYW1lIGluCi0gICAgICAgICAgICAgKmNsYW5nKikKLSAgICAgICAgICAgICAgICAgY2NfaXNfY2xhbmc9MQotICAgICAgICAgICAgICAgICA7OwotQEAgLTE2MjMsNyArMTYyNCw3IEBAIHllcykKKy1jYXNlICRDQyBpbgorK2Nhc2UgJGNjX2Jhc2VuYW1lIGluCisgICAgICpjbGFuZyopCisgICAgICAgICBjY19pc19jbGFuZz0xCisgICAgICAgICA7OworQEAgLTE2MjIsNyArMTYyMyw3IEBAIHllcykKICAKICAgICAgIyBJQ0MgZG9lc24ndCByZWNvZ25pemUgdGhlIG9wdGlvbiwgYnV0IG9ubHkgZW1pdHMgYSB3YXJuaW5nCiAgICAgICMjIFhYWCBkb2VzIGl0IGVtaXQgYW4gdW51c2VkIHJlc3VsdCB3YXJuaW5nIGFuZCBjYW4gaXQgYmUgZGlzYWJsZWQ/CkBAIC05MSw3ICs5Miw3IEBACiAgICAgICppY2MqKQogICAgICBhY19jdl9kaXNhYmxlX3VudXNlZF9yZXN1bHRfd2FybmluZz1ubwogICAgICA7OwotQEAgLTE5NjUsNyArMTk2Niw3IEBAIHllcykKK0BAIC0xOTQzLDcgKzE5NDQsNyBAQCB5ZXMpCiAgZXNhYwogIAogICMgSUNDIG5lZWRzIC1mcC1tb2RlbCBzdHJpY3Qgb3IgZmxvYXRzIGJlaGF2ZSBiYWRseQpAQCAtMTAwLDcgKzEwMSw3IEBACiAgKmljYyopCiAgICAgIENGTEFHU19OT0RJU1Q9IiRDRkxBR1NfTk9ESVNUIC1mcC1tb2RlbCBzdHJpY3QiCiAgICAgIDs7Ci1AQCAtMjcyNyw3ICsyNzI4LDcgQEAgdGhlbgorQEAgLTI3MTEsNyArMjcxMiw3IEBAIHRoZW4KICAJCXRoZW4KICAJCQlMSU5LRk9SU0hBUkVEPSItV2wsLS1leHBvcnQtZHluYW1pYyIKICAJCWZpOzsKQEAgLTEwOSw3ICsxMTAsNyBAQAogIAkJICAqZ2NjKikKICAJCSAgICBpZiAkQ0MgLVhsaW5rZXIgLS1oZWxwIDI+JjEgfCBncmVwIGV4cG9ydC1keW5hbWljID4vZGV2L251bGwKICAJCSAgICB0aGVuCi1AQCAtNTQyOSw3ICs1NDMwLDcgQEAgaWYgdGVzdCAiJGhhdmVfZ2NjX2FzbV9mb3JfeDg3IiA9IHllczsgdGhlbgorQEAgLTUzNjIsNyArNTM2Myw3IEBAIGlmIHRlc3QgIiRoYXZlX2djY19hc21fZm9yX3g4NyIgPSB5ZXM7IHRoZW4KICAgICAgIyBTb21lIHZlcnNpb25zIG9mIGdjYyBtaXNjb21waWxlIGlubGluZSBhc206CiAgICAgICMgaHR0cDovL2djYy5nbnUub3JnL2J1Z3ppbGxhL3Nob3dfYnVnLmNnaT9pZD00NjQ5MQogICAgICAjIGh0dHA6Ly9nY2MuZ251Lm9yZy9tbC9nY2MvMjAxMC0xMS9tc2cwMDM2Ni5odG1sCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLXNldHVwLnB5LXBhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDAxLXNldHVwLnB5LXBhc3MtbWlzc2luZy1saWJyYXJpZXMtdG8tRXh0ZW5zaW9uLWZvci1tdWwucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDM4ZWQ2MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDEtc2V0dXAucHktcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaApAQCAtMCwwICsxLDY5IEBACitGcm9tIDcwMTliYTE4NGI4MjhlZDcyNTM3NTBjZjQwOWZjNTc2MGVmOTBhNTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgOSBKYW4gMjAyMCAxNzo0NDowNSArMDEwMAorU3ViamVjdDogW1BBVENIXSBzZXR1cC5weTogcGFzcyBtaXNzaW5nIGxpYnJhcmllcyB0byBFeHRlbnNpb24gZm9yCisgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZQorCitJbiB0aGUgZm9sbG93aW5nIGNvbW1pdDoKKy4uLgorY29tbWl0IGU3MTFjYWZhYjEzZWZjOWMxZmU2YzVjZDc1ODI2NDAxNDQ1ZWI1ODUKK0F1dGhvcjogQmVuamFtaW4gUGV0ZXJzb24gPGJlbmphbWluQHB5dGhvbi5vcmc+CitEYXRlOiAgIFdlZCBKdW4gMTEgMTY6NDQ6MDQgMjAwOCArMDAwMAorCisgICAgTWVyZ2VkIHJldmlzaW9ucyA2NDEwNCw2NDExNyB2aWEgc3ZubWVyZ2UgZnJvbQorICAgIHN2bitzc2g6Ly9weXRob25kZXZAc3ZuLnB5dGhvbi5vcmcvcHl0aG9uL3RydW5rCisuLi4KKyhzZWUgZGlmZiBpbiBzZXR1cC5weSkKK0l0IGFzc2lnbmVkIGxpYnJhcmllcyBmb3IgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSBhY2NvcmRpbmcKK3RoZSBob3N0X3BsYXRmb3JtLCBidXQgbm90IHBhc3MgaXQgdG8gRXh0ZW5zaW9uLgorCitJbiBnbGliYywgdGhlIGZvbGxvd2luZyBjb21taXQgY2F1c2VkIHR3byBkZWZpbml0aW9uIG9mCitzZW1fZ2V0dmFsdWUgYXJlIGRpZmZlcmVudC4KK2h0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPWdsaWJjLmdpdDthPWNvbW1pdDtoPTA0MmUxNTIxYzc5NGE5NDVlZGM0M2I1YmZhN2U2OWFkNzA0MjA1MjQKKyhzZWUgZGlmZiBpbiBucHRsL3NlbV9nZXR2YWx1ZS5jIGZvciBkZXRhaWwpCitgX19uZXdfc2VtX2dldHZhbHVlJyBpcyB0aGUgbGF0ZXN0IHNlbV9nZXR2YWx1ZUBAR0xJQkNfMi4xCithbmQgYF9fb2xkX3NlbV9nZXR2YWx1ZScgaXMgdG8gY29tcGF0IHRoZSBvbGQgdmVyc2lvbgorc2VtX2dldHZhbHVlQEdMSUJDXzIuMC4KKworVG8gYnVpbGQgcHl0aG9uIGZvciBlbWJlZGRlZCBMaW51eCBzeXN0ZW1zOgoraHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi4zLjEveW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLmh0bWwKK0lmIG5vdCBleHBsaWNpdGx5IGxpbmsgdG8gbGlicmFyeSBwdGhyZWFkICgtbHB0aHJlYWQpLCBpdCB3aWxsCitsb2FkIGdsaWJjJ3Mgc2VtX2dldHZhbHVlIHJhbmRvbWx5IGF0IHJ1bnRpbWUuCisKK1N1Y2ggYXMgYnVpbGQgcHl0aG9uIG9uIGxpbnV4IHg4Nl82NCBob3N0IGFuZCBydW4gdGhlIHB5dGhvbgorb24gbGludXggeDg2XzMyIHRhcmdldC4gSWYgbm90IGxpbmsgbGlicmFyeSBwdGhyZWFkLCBpdCBjYXVzZWQKK211bHRpcHJvY2Vzc2luZyBib3VuZGVkIHNlbWFwaG9yZSBjb3VsZCBub3Qgd29yayBjb3JyZWN0bHkuCisuLi4KKz4+PiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCis+Pj4gcG9vbF9zZW1hID0gbXVsdGlwcm9jZXNzaW5nLkJvdW5kZWRTZW1hcGhvcmUodmFsdWU9MSkKKz4+PiBwb29sX3NlbWEuYWNxdWlyZSgpCitUcnVlCis+Pj4gcG9vbF9zZW1hLnJlbGVhc2UoKQorVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgorICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgorVmFsdWVFcnJvcjogc2VtYXBob3JlIG9yIGxvY2sgcmVsZWFzZWQgdG9vIG1hbnkgdGltZXMKKy4uLgorCitBbmQgdGhlIHNlbWFwaG9yZSBpc3N1ZSBhbHNvIGNhdXNlZCBtdWx0aXByb2Nlc3NpbmcuUXVldWUoKS5wdXQoKSBodW5nLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbnNpbmcKKworU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBzZXR1cC5weSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKK2luZGV4IGVjM2YyYTQuLmIwZjE1NDEgMTAwNjQ0CistLS0gYS9zZXR1cC5weQorKysrIGIvc2V0dXAucHkKK0BAIC0xNjcxLDcgKzE2NzEsNyBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsaWJyYXJpZXM9bGlicywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1bIk1vZHVsZXMvX211bHRpcHJvY2Vzc2luZyJdKSkKKyAKKy0gICAgICAgIHNlbGYuYWRkKEV4dGVuc2lvbignX211bHRpcHJvY2Vzc2luZycsIG11bHRpcHJvY2Vzc2luZ19zcmNzLAorKyAgICAgICAgc2VsZi5hZGQoRXh0ZW5zaW9uKCdfbXVsdGlwcm9jZXNzaW5nJywgbXVsdGlwcm9jZXNzaW5nX3NyY3MsIGxpYnJhcmllcz1bJ3B0aHJlYWQnXSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX2RpcnM9WyJNb2R1bGVzL19tdWx0aXByb2Nlc3NpbmciXSkpCisgCisgICAgIGRlZiBkZXRlY3RfdXVpZChzZWxmKToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDItRG9uLXQtZG8tcnVudGltZS10ZXN0LXRvLWdldC1mbG9hdC1ieXRlLW9yZGVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMi1Eb24tdC1kby1ydW50aW1lLXRlc3QtdG8tZ2V0LWZsb2F0LWJ5dGUtb3JkZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM3MjFlN2MuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMi1Eb24tdC1kby1ydW50aW1lLXRlc3QtdG8tZ2V0LWZsb2F0LWJ5dGUtb3JkZXIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOTkgKzAsMCBAQAotRnJvbSBmYTk2YTdmZDE5ZTE3YjljNmI0ZGQwMWMzYzM3NzRmYjM4MmRkZGM2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLURhdGU6IFdlZCwgNSBTZXAgMjAxOCAxMTo0NTo1MiArMDEwMAotU3ViamVjdDogW1BBVENIXSBEb24ndCBkbyBydW50aW1lIHRlc3QgdG8gZ2V0IGZsb2F0IGJ5dGUgb3JkZXIKLQotUHl0aG9uIHVzZXMgQUNfUlVOX0lGRUxTRSB0byBkZXRlcm1pbmUgdGhlIGJ5dGUgb3JkZXIgZm9yIGZsb2F0cyBhbmQgZG91YmxlcywKLWFuZCBmYWxscyBiYWNrIG9udG8gIkkgZG9uJ3Qga25vdyIgaWYgaXQgY2FuJ3QgcnVuIGNvZGUuICBUaGlzIHJlc3VsdHMgaW4KLWNyaXBwbGVkIGZsb2F0aW5nIHBvaW50IG51bWJlcnMgaW4gUHl0aG9uLCBhbmQgdGhlIHJlZ3Jlc3Npb24gdGVzdHMgZmFpbC4KLQotSW5zdGVhZCBvZiBydW5uaW5nIGNvZGUsIHRha2UgYSBtYWNybyBmcm9tIGF1dG9jb25mLWFyY2hpdmUgd2hpY2ggY29tcGlsZXMgQwotd2l0aCBhIHNwZWNpYWwgZG91YmxlIGluIHdoaWNoIGhhcyBhbiBBU0NJSSByZXByZXNlbnRhdGlvbiwgYW5kIHRoZW4gZ3JlcHMgdGhlCi1iaW5hcnkgdG8gaWRlbnRpZnkgdGhlIGZvcm1hdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzQ1ODVdCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgfCA3MiArKystLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSBtNC9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5tNCB8IDgzICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCA5MCBpbnNlcnRpb25zKCspLCA2NSBkZWxldGlvbnMoLSkKLSBjcmVhdGUgbW9kZSAxMDA2NDQgbTQvYXhfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4ubTQKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggNGEzNjgxZi4uNGFiMTlhNiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNDMyOCw3NyArNDMyOCwxOSBAQCBmaQotICMgKiBDaGVjayBmb3IgdmFyaW91cyBwcm9wZXJ0aWVzIG9mIGZsb2F0aW5nIHBvaW50ICoKLSAjICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCi0gCi0tQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgQyBkb3VibGVzIGFyZSBsaXR0bGUtZW5kaWFuIElFRUUgNzU0IGJpbmFyeTY0KQotLUFDX0NBQ0hFX1ZBTChhY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZSwgWwotLUFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCi0tI2luY2x1ZGUgPHN0cmluZy5oPgotLWludCBtYWluKCkgewotLSAgICBkb3VibGUgeCA9IDkwMDYxMDQwNzE4MzI1ODEuMDsKLS0gICAgaWYgKG1lbWNtcCgmeCwgIlx4MDVceDA0XHgwM1x4MDJceDAxXHhmZlx4M2ZceDQzIiwgOCkgPT0gMCkKLS0gICAgICAgIHJldHVybiAwOwotLSAgICBlbHNlCi0tICAgICAgICByZXR1cm4gMTsKLS19Ci0tXV0pXSwKLS1bYWNfY3ZfbGl0dGxlX2VuZGlhbl9kb3VibGU9eWVzXSwKLS1bYWNfY3ZfbGl0dGxlX2VuZGlhbl9kb3VibGU9bm9dLAotLVthY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZT1ub10pXSkKLS1BQ19NU0dfUkVTVUxUKCRhY19jdl9saXR0bGVfZW5kaWFuX2RvdWJsZSkKLS1pZiB0ZXN0ICIkYWNfY3ZfbGl0dGxlX2VuZGlhbl9kb3VibGUiID0geWVzCi0tdGhlbgotLSAgQUNfREVGSU5FKERPVUJMRV9JU19MSVRUTEVfRU5ESUFOX0lFRUU3NTQsIDEsCi0tICBbRGVmaW5lIGlmIEMgZG91YmxlcyBhcmUgNjQtYml0IElFRUUgNzU0IGJpbmFyeSBmb3JtYXQsIHN0b3JlZAotLSAgIHdpdGggdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUgZmlyc3RdKQotLWZpCi0tCi0tQUNfTVNHX0NIRUNLSU5HKHdoZXRoZXIgQyBkb3VibGVzIGFyZSBiaWctZW5kaWFuIElFRUUgNzU0IGJpbmFyeTY0KQotLUFDX0NBQ0hFX1ZBTChhY19jdl9iaWdfZW5kaWFuX2RvdWJsZSwgWwotLUFDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbCi0tI2luY2x1ZGUgPHN0cmluZy5oPgotLWludCBtYWluKCkgewotLSAgICBkb3VibGUgeCA9IDkwMDYxMDQwNzE4MzI1ODEuMDsKLS0gICAgaWYgKG1lbWNtcCgmeCwgIlx4NDNceDNmXHhmZlx4MDFceDAyXHgwM1x4MDRceDA1IiwgOCkgPT0gMCkKLS0gICAgICAgIHJldHVybiAwOwotLSAgICBlbHNlCi0tICAgICAgICByZXR1cm4gMTsKLS19Ci0tXV0pXSwKLS1bYWNfY3ZfYmlnX2VuZGlhbl9kb3VibGU9eWVzXSwKLS1bYWNfY3ZfYmlnX2VuZGlhbl9kb3VibGU9bm9dLAotLVthY19jdl9iaWdfZW5kaWFuX2RvdWJsZT1ub10pXSkKLS1BQ19NU0dfUkVTVUxUKCRhY19jdl9iaWdfZW5kaWFuX2RvdWJsZSkKLS1pZiB0ZXN0ICIkYWNfY3ZfYmlnX2VuZGlhbl9kb3VibGUiID0geWVzCi0rQVhfQ19GTE9BVF9XT1JEU19CSUdFTkRJQU4KLStpZiB0ZXN0ICIkYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4iID0gInllcyIKLSB0aGVuCi0gICBBQ19ERUZJTkUoRE9VQkxFX0lTX0JJR19FTkRJQU5fSUVFRTc1NCwgMSwKLSAgIFtEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkCi0gICAgd2l0aCB0aGUgbW9zdCBzaWduaWZpY2FudCBieXRlIGZpcnN0XSkKLS1maQotLQotLSMgU29tZSBBUk0gcGxhdGZvcm1zIHVzZSBhIG1peGVkLWVuZGlhbiByZXByZXNlbnRhdGlvbiBmb3IgZG91Ymxlcy4KLS0jIFdoaWxlIFB5dGhvbiBkb2Vzbid0IGN1cnJlbnRseSBoYXZlIGZ1bGwgc3VwcG9ydCBmb3IgdGhlc2UgcGxhdGZvcm1zCi0tIyAoc2VlIGUuZy4sIGlzc3VlIDE3NjI1NjEpLCB3ZSBjYW4gYXQgbGVhc3QgbWFrZSBzdXJlIHRoYXQgZmxvYXQgPC0+IHN0cmluZwotLSMgY29udmVyc2lvbnMgd29yay4KLS1BQ19NU0dfQ0hFQ0tJTkcod2hldGhlciBDIGRvdWJsZXMgYXJlIEFSTSBtaXhlZC1lbmRpYW4gSUVFRSA3NTQgYmluYXJ5NjQpCi0tQUNfQ0FDSEVfVkFMKGFjX2N2X21peGVkX2VuZGlhbl9kb3VibGUsIFsKLS1BQ19SVU5fSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwotLSNpbmNsdWRlIDxzdHJpbmcuaD4KLS1pbnQgbWFpbigpIHsKLS0gICAgZG91YmxlIHggPSA5MDA2MTA0MDcxODMyNTgxLjA7Ci0tICAgIGlmIChtZW1jbXAoJngsICJceDAxXHhmZlx4M2ZceDQzXHgwNVx4MDRceDAzXHgwMiIsIDgpID09IDApCi0tICAgICAgICByZXR1cm4gMDsKLS0gICAgZWxzZQotLSAgICAgICAgcmV0dXJuIDE7Ci0tfQotLV1dKV0sCi0tW2FjX2N2X21peGVkX2VuZGlhbl9kb3VibGU9eWVzXSwKLS1bYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZT1ub10sCi0tW2FjX2N2X21peGVkX2VuZGlhbl9kb3VibGU9bm9dKV0pCi0tQUNfTVNHX1JFU1VMVCgkYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZSkKLS1pZiB0ZXN0ICIkYWNfY3ZfbWl4ZWRfZW5kaWFuX2RvdWJsZSIgPSB5ZXMKLStlbGlmIHRlc3QgIiRheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbiIgPSAibm8iCi0gdGhlbgotLSAgQUNfREVGSU5FKERPVUJMRV9JU19BUk1fTUlYRURfRU5ESUFOX0lFRUU3NTQsIDEsCi0rICBBQ19ERUZJTkUoRE9VQkxFX0lTX0xJVFRMRV9FTkRJQU5fSUVFRTc1NCwgMSwKLSAgIFtEZWZpbmUgaWYgQyBkb3VibGVzIGFyZSA2NC1iaXQgSUVFRSA3NTQgYmluYXJ5IGZvcm1hdCwgc3RvcmVkCi0tICAgaW4gQVJNIG1peGVkLWVuZGlhbiBvcmRlciAoYnl0ZSBvcmRlciA0NTY3MDEyMyldKQotKyAgIHdpdGggdGhlIGxlYXN0IHNpZ25pZmljYW50IGJ5dGUgZmlyc3RdKQotK2Vsc2UKLSsgIEFDX01TR19FUlJPUihbQ2Fubm90IGlkZW50aWZ5IGZsb2F0aW5nIHBvaW50IGJ5dGUgb3JkZXJdKQotIGZpCi0gCi0gIyBUaGUgc2hvcnQgZmxvYXQgcmVwciBpbnRyb2R1Y2VkIGluIFB5dGhvbiAzLjEgcmVxdWlyZXMgdGhlCi1kaWZmIC0tZ2l0IGEvbTQvYXhfY19mbG9hdF93b3Jkc19iaWdlbmRpYW4ubTQgYi9tNC9heF9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbi5tNAotbmV3IGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDAwMDAwMDAuLjIxNmI5MGQKLS0tLSAvZGV2L251bGwKLSsrKyBiL200L2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLm00Ci1AQCAtMCwwICsxLDgzIEBACi0rIyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0rIyAgaHR0cHM6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9hdXRvY29uZi1hcmNoaXZlL2F4X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLmh0bWwKLSsjID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLSsjCi0rIyBTWU5PUFNJUwotKyMKLSsjICAgQVhfQ19GTE9BVF9XT1JEU19CSUdFTkRJQU4oW0FDVElPTi1JRi1UUlVFXSwgW0FDVElPTi1JRi1GQUxTRV0sIFtBQ1RJT04tSUYtVU5LTk9XTl0pCi0rIwotKyMgREVTQ1JJUFRJT04KLSsjCi0rIyAgIENoZWNrcyB0aGUgb3JkZXJpbmcgb2Ygd29yZHMgd2l0aGluIGEgbXVsdGktd29yZCBmbG9hdC4gVGhpcyBjaGVjayBpcwotKyMgICBuZWNlc3NhcnkgYmVjYXVzZSBvbiBzb21lIHN5c3RlbXMgKGUuZy4gY2VydGFpbiBBUk0gc3lzdGVtcyksIHRoZSBmbG9hdAotKyMgICB3b3JkIG9yZGVyaW5nIGNhbiBiZSBkaWZmZXJlbnQgZnJvbSB0aGUgYnl0ZSBvcmRlcmluZy4gSW4gYSBtdWx0aS13b3JkCi0rIyAgIGZsb2F0IGNvbnRleHQsICJiaWctZW5kaWFuIiBpbXBsaWVzIHRoYXQgdGhlIHdvcmQgY29udGFpbmluZyB0aGUgc2lnbgotKyMgICBiaXQgaXMgZm91bmQgaW4gdGhlIG1lbW9yeSBsb2NhdGlvbiB3aXRoIHRoZSBsb3dlc3QgYWRkcmVzcy4gVGhpcwotKyMgICBpbXBsZW1lbnRhdGlvbiB3YXMgaW5zcGlyZWQgYnkgdGhlIEFDX0NfQklHRU5ESUFOIG1hY3JvIGluIGF1dG9jb25mLgotKyMKLSsjICAgVGhlIGVuZGlhbm5lc3MgaXMgZGV0ZWN0ZWQgYnkgZmlyc3QgY29tcGlsaW5nIEMgY29kZSB0aGF0IGNvbnRhaW5zIGEKLSsjICAgc3BlY2lhbCBkb3VibGUgZmxvYXQgdmFsdWUsIHRoZW4gZ3JlcHBpbmcgdGhlIHJlc3VsdGluZyBvYmplY3QgZmlsZSBmb3IKLSsjICAgY2VydGFpbiBzdHJpbmdzIG9mIEFTQ0lJIHZhbHVlcy4gVGhlIGRvdWJsZSBpcyBzcGVjaWFsbHkgY3JhZnRlZCB0byBoYXZlCi0rIyAgIGEgYmluYXJ5IHJlcHJlc2VudGF0aW9uIHRoYXQgY29ycmVzcG9uZHMgd2l0aCBhIHNpbXBsZSBzdHJpbmcuIEluIHRoaXMKLSsjICAgaW1wbGVtZW50YXRpb24sIHRoZSBzdHJpbmcgIm5vb25zZWVzIiB3YXMgc2VsZWN0ZWQgYmVjYXVzZSB0aGUKLSsjICAgaW5kaXZpZHVhbCB3b3JkIHZhbHVlcyAoIm5vb24iIGFuZCAic2VlcyIpIGFyZSBwYWxpbmRyb21lcywgdGh1cyBtYWtpbmcKLSsjICAgdGhpcyB0ZXN0IGJ5dGUtb3JkZXIgYWdub3N0aWMuIElmIGdyZXAgZmluZHMgdGhlIHN0cmluZyAibm9vbnNlZXMiIGluCi0rIyAgIHRoZSBvYmplY3QgZmlsZSwgdGhlIHRhcmdldCBwbGF0Zm9ybSBzdG9yZXMgZmxvYXQgd29yZHMgaW4gYmlnLWVuZGlhbgotKyMgICBvcmRlci4gSWYgZ3JlcCBmaW5kcyAic2Vlc25vb24iLCBmbG9hdCB3b3JkcyBhcmUgaW4gbGl0dGxlLWVuZGlhbiBvcmRlci4KLSsjICAgSWYgbmVpdGhlciB2YWx1ZSBpcyBmb3VuZCwgdGhlIHVzZXIgaXMgaW5zdHJ1Y3RlZCB0byBzcGVjaWZ5IHRoZQotKyMgICBvcmRlcmluZy4KLSsjCi0rIyBMSUNFTlNFCi0rIwotKyMgICBDb3B5cmlnaHQgKGMpIDIwMDggRGFuaWVsIEFtZWxhbmcgPGRhbkBhbWVsYW5nLm5ldD4KLSsjCi0rIyAgIENvcHlpbmcgYW5kIGRpc3RyaWJ1dGlvbiBvZiB0aGlzIGZpbGUsIHdpdGggb3Igd2l0aG91dCBtb2RpZmljYXRpb24sIGFyZQotKyMgICBwZXJtaXR0ZWQgaW4gYW55IG1lZGl1bSB3aXRob3V0IHJveWFsdHkgcHJvdmlkZWQgdGhlIGNvcHlyaWdodCBub3RpY2UKLSsjICAgYW5kIHRoaXMgbm90aWNlIGFyZSBwcmVzZXJ2ZWQuIFRoaXMgZmlsZSBpcyBvZmZlcmVkIGFzLWlzLCB3aXRob3V0IGFueQotKyMgICB3YXJyYW50eS4KLSsKLSsjc2VyaWFsIDExCi0rCi0rQUNfREVGVU4oW0FYX0NfRkxPQVRfV09SRFNfQklHRU5ESUFOXSwKLSsgIFtBQ19DQUNIRV9DSEVDSyh3aGV0aGVyIGZsb2F0IHdvcmQgb3JkZXJpbmcgaXMgYmlnZW5kaWFuLAotKyAgICAgICAgICAgICAgICAgIGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuLCBbCi0rCi0rYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49dW5rbm93bgotK0FDX0NPTVBJTEVfSUZFTFNFKFtBQ19MQU5HX1NPVVJDRShbWwotKwotK2RvdWJsZSBkID0gOTA5MDQyMzQ5NjcwMzY4MTAzMzc0NzA0Nzg5MDU1MDUwMTE0NzYyMTE2OTI3MzU2MTU2MzIwMTQ3OTcxMjA4NDQwNTM0ODg4NjU4MTY2OTUyNzM3MjM0NjkwOTc4NTgwNTYyNTc1MTcwMjAxOTEyNDc0ODc0Mjk1MTY5MzIxMzA1MDM1NjA2NTAwMDIzMjc1NjQ1MTc1NzA3Nzg0ODAyMzY3MjQ1MjUxNDA1MjAxMjEzNzE3MzkyMDE0OTY1NDAxMzI2NDAxMDk5Nzc3Nzk0MjA1NjU3NzY1Njg5NDI1OTIuMDsKLSsKLStdXSldLCBbCi0rCi0raWYgZ3JlcCBub29uc2VlcyBjb25mdGVzdC4kYWNfb2JqZXh0ID4vZGV2L251bGwgOyB0aGVuCi0rICBheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbj15ZXMKLStmaQotK2lmIGdyZXAgc2Vlc25vb24gY29uZnRlc3QuJGFjX29iamV4dCA+L2Rldi9udWxsIDsgdGhlbgotKyAgaWYgdGVzdCAiJGF4X2N2X2NfZmxvYXRfd29yZHNfYmlnZW5kaWFuIiA9IHVua25vd247IHRoZW4KLSsgICAgYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49bm8KLSsgIGVsc2UKLSsgICAgYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49dW5rbm93bgotKyAgZmkKLStmaQotKwotK10pXSkKLSsKLStjYXNlICRheF9jdl9jX2Zsb2F0X3dvcmRzX2JpZ2VuZGlhbiBpbgotKyAgeWVzKQotKyAgICBtNF9kZWZhdWx0KFskMV0sCi0rICAgICAgW0FDX0RFRklORShbRkxPQVRfV09SRFNfQklHRU5ESUFOXSwgMSwKLSsgICAgICAgICAgICAgICAgIFtEZWZpbmUgdG8gMSBpZiB5b3VyIHN5c3RlbSBzdG9yZXMgd29yZHMgd2l0aGluIGZsb2F0cwotKyAgICAgICAgICAgICAgICAgIHdpdGggdGhlIG1vc3Qgc2lnbmlmaWNhbnQgd29yZCBmaXJzdF0pXSkgOzsKLSsgIG5vKQotKyAgICAkMiA7OwotKyAgKikKLSsgICAgbTRfZGVmYXVsdChbJDNdLAotKyAgICAgIFtBQ19NU0dfRVJST1IoWwotKwotK1Vua25vd24gZmxvYXQgd29yZCBvcmRlcmluZy4gWW91IG5lZWQgdG8gbWFudWFsbHkgcHJlc2V0Ci0rYXhfY3ZfY19mbG9hdF93b3Jkc19iaWdlbmRpYW49bm8gKG9yIHllcykgYWNjb3JkaW5nIHRvIHlvdXIgc3lzdGVtLgotKwotKyAgICBdKV0pIDs7Ci0rZXNhYwotKwotK10pIyBBWF9DX0ZMT0FUX1dPUkRTX0JJR0VORElBTgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMy1zZXR1cC5weS1wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAwMy1zZXR1cC5weS1wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOWQ1YmM5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMDMtc2V0dXAucHktcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLUZyb20gYjg4MWE3OWFkY2Q0YWU1YWM4ZmU0ZjQ5ZDBmYzc3YzQ3Zjc3NzkxOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgNCBBdWcgMjAxNyAxMToxNjoxNCArMDgwMAotU3ViamVjdDogW1BBVENIXSBzZXR1cC5weTogcGFzcyBtaXNzaW5nIGxpYnJhcmllcyB0byBFeHRlbnNpb24gZm9yCi0gbXVsdGlwcm9jZXNzaW5nIG1vZHVsZQotCi1JbiB0aGUgZm9sbG93aW5nIGNvbW1pdDoKLS4uLgotY29tbWl0IGU3MTFjYWZhYjEzZWZjOWMxZmU2YzVjZDc1ODI2NDAxNDQ1ZWI1ODUKLUF1dGhvcjogQmVuamFtaW4gUGV0ZXJzb24gPGJlbmphbWluQHB5dGhvbi5vcmc+Ci1EYXRlOiAgIFdlZCBKdW4gMTEgMTY6NDQ6MDQgMjAwOCArMDAwMAotCi0gICAgTWVyZ2VkIHJldmlzaW9ucyA2NDEwNCw2NDExNyB2aWEgc3ZubWVyZ2UgZnJvbQotICAgIHN2bitzc2g6Ly9weXRob25kZXZAc3ZuLnB5dGhvbi5vcmcvcHl0aG9uL3RydW5rCi0uLi4KLShzZWUgZGlmZiBpbiBzZXR1cC5weSkKLUl0IGFzc2lnbmVkIGxpYnJhcmllcyBmb3IgbXVsdGlwcm9jZXNzaW5nIG1vZHVsZSBhY2NvcmRpbmcKLXRoZSBob3N0X3BsYXRmb3JtLCBidXQgbm90IHBhc3MgaXQgdG8gRXh0ZW5zaW9uLgotCi1JbiBnbGliYywgdGhlIGZvbGxvd2luZyBjb21taXQgY2F1c2VkIHR3byBkZWZpbml0aW9uIG9mCi1zZW1fZ2V0dmFsdWUgYXJlIGRpZmZlcmVudC4KLWh0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPWdsaWJjLmdpdDthPWNvbW1pdDtoPTA0MmUxNTIxYzc5NGE5NDVlZGM0M2I1YmZhN2U2OWFkNzA0MjA1MjQKLShzZWUgZGlmZiBpbiBucHRsL3NlbV9nZXR2YWx1ZS5jIGZvciBkZXRhaWwpCi1gX19uZXdfc2VtX2dldHZhbHVlJyBpcyB0aGUgbGF0ZXN0IHNlbV9nZXR2YWx1ZUBAR0xJQkNfMi4xCi1hbmQgYF9fb2xkX3NlbV9nZXR2YWx1ZScgaXMgdG8gY29tcGF0IHRoZSBvbGQgdmVyc2lvbgotc2VtX2dldHZhbHVlQEdMSUJDXzIuMC4KLQotVG8gYnVpbGQgcHl0aG9uIGZvciBlbWJlZGRlZCBMaW51eCBzeXN0ZW1zOgotaHR0cDovL3d3dy55b2N0b3Byb2plY3Qub3JnL2RvY3MvMi4zLjEveW9jdG8tcHJvamVjdC1xcy95b2N0by1wcm9qZWN0LXFzLmh0bWwKLUlmIG5vdCBleHBsaWNpdGx5IGxpbmsgdG8gbGlicmFyeSBwdGhyZWFkICgtbHB0aHJlYWQpLCBpdCB3aWxsCi1sb2FkIGdsaWJjJ3Mgc2VtX2dldHZhbHVlIHJhbmRvbWx5IGF0IHJ1bnRpbWUuCi0KLVN1Y2ggYXMgYnVpbGQgcHl0aG9uIG9uIGxpbnV4IHg4Nl82NCBob3N0IGFuZCBydW4gdGhlIHB5dGhvbgotb24gbGludXggeDg2XzMyIHRhcmdldC4gSWYgbm90IGxpbmsgbGlicmFyeSBwdGhyZWFkLCBpdCBjYXVzZWQKLW11bHRpcHJvY2Vzc2luZyBib3VuZGVkIHNlbWFwaG9yZSBjb3VsZCBub3Qgd29yayBjb3JyZWN0bHkuCi0uLi4KLT4+PiBpbXBvcnQgbXVsdGlwcm9jZXNzaW5nCi0+Pj4gcG9vbF9zZW1hID0gbXVsdGlwcm9jZXNzaW5nLkJvdW5kZWRTZW1hcGhvcmUodmFsdWU9MSkKLT4+PiBwb29sX3NlbWEuYWNxdWlyZSgpCi1UcnVlCi0+Pj4gcG9vbF9zZW1hLnJlbGVhc2UoKQotVHJhY2ViYWNrIChtb3N0IHJlY2VudCBjYWxsIGxhc3QpOgotICBGaWxlICI8c3RkaW4+IiwgbGluZSAxLCBpbiA8bW9kdWxlPgotVmFsdWVFcnJvcjogc2VtYXBob3JlIG9yIGxvY2sgcmVsZWFzZWQgdG9vIG1hbnkgdGltZXMKLS4uLgotCi1BbmQgdGhlIHNlbWFwaG9yZSBpc3N1ZSBhbHNvIGNhdXNlZCBtdWx0aXByb2Nlc3NpbmcuUXVldWUoKS5wdXQoKSBodW5nLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3B5dGhvbi9jcHl0aG9uL3B1bGwvMjk5OV0KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgotLS0tCi0gc2V0dXAucHkgfCA3ICsrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQotaW5kZXggYjdhMzZhNi4uNjU4ZWFkMyAxMDA2NDQKLS0tLSBhL3NldHVwLnB5Ci0rKysgYi9zZXR1cC5weQotQEAgLTE1ODQsOCArMTU4NCwxMCBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICBlbGlmIGhvc3RfcGxhdGZvcm0uc3RhcnRzd2l0aCgnbmV0YnNkJyk6Ci0gICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCi0gICAgICAgICAgICAgbGlicmFyaWVzID0gW10KLS0KLS0gICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIExpbnV4IGFuZCBvdGhlciB1bmljZXMKLSsgICAgICAgIGVsaWYgaG9zdF9wbGF0Zm9ybS5zdGFydHN3aXRoKCgnbGludXgnKSk6Ci0rICAgICAgICAgICAgbWFjcm9zID0gZGljdCgpCi0rICAgICAgICAgICAgbGlicmFyaWVzID0gWydwdGhyZWFkJ10KLSsgICAgICAgIGVsc2U6ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAjIE90aGVyIHVuaWNlcwotICAgICAgICAgICAgIG1hY3JvcyA9IGRpY3QoKQotICAgICAgICAgICAgIGxpYnJhcmllcyA9IFsncnQnXQotIAotQEAgLTE2MDMsNiArMTYwNSw3IEBAIGNsYXNzIFB5QnVpbGRFeHQoYnVpbGRfZXh0KToKLSAKLSAgICAgICAgIGV4dHMuYXBwZW5kICggRXh0ZW5zaW9uKCdfbXVsdGlwcm9jZXNzaW5nJywgbXVsdGlwcm9jZXNzaW5nX3NyY3MsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZWZpbmVfbWFjcm9zPWxpc3QobWFjcm9zLml0ZW1zKCkpLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlicmFyaWVzPWxpYnJhcmllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfZGlycz1bIk1vZHVsZXMvX211bHRpcHJvY2Vzc2luZyJdKSkKLSAgICAgICAgICMgRW5kIG11bHRpcHJvY2Vzc2luZwotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAxNy1zZXR1cC5weS1kby1ub3QtcmVwb3J0LW1pc3NpbmctZGVwZW5kZW5jaWVzLWZvci1kaXNhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAxNy1zZXR1cC5weS1kby1ub3QtcmVwb3J0LW1pc3NpbmctZGVwZW5kZW5jaWVzLWZvci1kaXNhLnBhdGNoCmluZGV4IGMxNTI5NWMuLjRiZDk4ZjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMTctc2V0dXAucHktZG8tbm90LXJlcG9ydC1taXNzaW5nLWRlcGVuZGVuY2llcy1mb3ItZGlzYS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8wMDE3LXNldHVwLnB5LWRvLW5vdC1yZXBvcnQtbWlzc2luZy1kZXBlbmRlbmNpZXMtZm9yLWRpc2EucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGUzYjU5Y2I5NjU4ZTFkM2VmYTM1MzU4NDA5MzlhMGZhOTJhNzBhNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGEyZGQxMjdiNDE2M2FmZjZjYzM1YWYwZDAyNTEzMjE5NjQyMzJhZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgNyBPY3QgMjAxOSAxMzoyMjoxNCArMDIwMAogU3ViamVjdDogW1BBVENIXSBzZXR1cC5weTogZG8gbm90IHJlcG9ydCBtaXNzaW5nIGRlcGVuZGVuY2llcyBmb3IgZGlzYWJsZWQKQEAgLTEwLDIyICsxMCwyMyBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgc2V0dXAucHkgfCA0ICsrKysKICAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCiAKIGRpZmYgLS1naXQgYS9zZXR1cC5weSBiL3NldHVwLnB5Ci1pbmRleCA0YjUzNjY4Li4wMDk3NjQzIDEwMDY0NAoraW5kZXggNzY5MTI1OC4uZWMzZjJhNCAxMDA2NDQKIC0tLSBhL3NldHVwLnB5CiArKysgYi9zZXR1cC5weQotQEAgLTM2NSw2ICszNjUsMTAgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgorQEAgLTQwOCw2ICs0MDgsMTAgQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgogICAgICAgICAgICAgICAgICBwcmludCgiJS0qcyAgICUtKnMgICAlLSpzIiAlIChsb25nZXN0LCBlLCBsb25nZXN0LCBmLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsb25nZXN0LCBnKSkKICAKICsgICAgICAgICMgVGhlcmUgaXMgbm8gbmVlZCB0byByZXBvcnQgbWlzc2luZyBtb2R1bGUgZGVwZW5kZW5jaWVzLAogKyAgICAgICAgIyBpZiB0aGUgbW9kdWxlcyBoYXZlIGJlZW4gZGlzYWJsZWQgaW4gdGhlIGZpcnN0IHBsYWNlLgotKyAgICAgICAgbWlzc2luZyA9IGxpc3Qoc2V0KG1pc3NpbmcpIC0gc2V0KHN5c2NvbmZfZGlzKSkKKysgICAgICAgIHNlbGYubWlzc2luZyA9IGxpc3Qoc2V0KHNlbGYubWlzc2luZykgLSBzZXQoc3lzY29uZl9kaXMpKQogKwotICAgICAgICAgaWYgbWlzc2luZzoKKyAgICAgICAgIGlmIHNlbGYubWlzc2luZzoKICAgICAgICAgICAgICBwcmludCgpCiAgICAgICAgICAgICAgcHJpbnQoIlB5dGhvbiBidWlsZCBmaW5pc2hlZCBzdWNjZXNzZnVsbHkhIikKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMjAtY29uZmlndXJlLmFjLXNldHVwLnB5LWRvLW5vdC1hZGQtYS1jdXJzZXMtaW5jbHVkZS1wYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzAwMjAtY29uZmlndXJlLmFjLXNldHVwLnB5LWRvLW5vdC1hZGQtYS1jdXJzZXMtaW5jbHVkZS1wYS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMDRhOTE2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMDAyMC1jb25maWd1cmUuYWMtc2V0dXAucHktZG8tbm90LWFkZC1hLWN1cnNlcy1pbmNsdWRlLXBhLnBhdGNoCkBAIC0wLDAgKzEsNDggQEAKK0Zyb20gODYzYzA5ZjY0MGE1ZGZkMzNmZjIyOTE1YjBkNWZlZTdiYzVkZjcwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxNiBGZWIgMjAyMCAxNzo1MDoyNSArMDEwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWMsIHNldHVwLnB5OiBkbyBub3QgYWRkIGEgY3Vyc2VzIGluY2x1ZGUgcGF0aCBmcm9tCisgdGhlIGhvc3QKKworVGhpcyBsZWFkcyB0byBob3N0IGNvbnRhbWluYXRpb24sIGFuZCBwYXJ0aWN1bGFybHkgY2FuIGNhdXNlCitjdXJzZXMgbW9kdWxlcyB0byBmYWlsIGF0IHJ1bnRpbWUgaWYgdGhlIGhvc3QgY3Vyc2VzIGlzIGNvbmZpZ3VyZWQKK2RpZmZlcmVudGx5IHRvIG5hdGl2ZSBjdXJzZXMgKG9ic2VydmVkIG9uIGN1cnJlbnQgT3BlblN1c2UgVHVtYmxld2VlZAorYXMgZG5mIGZhaWx1cmVzKS4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA2IC0tLS0tLQorIHNldHVwLnB5ICAgICB8IDIgLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDkxNWY0NzUuLmM5MTEwMTEgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTQ4MjgsMTIgKzQ4MjgsNiBAQCB0aGVuCisgICBbRGVmaW5lIGlmIHlvdSBoYXZlIHN0cnVjdCBzdGF0LnN0X210aW1lbnNlY10pCisgZmkKKyAKKy0jIGZpcnN0IGN1cnNlcyBoZWFkZXIgY2hlY2sKKy1hY19zYXZlX2NwcGZsYWdzPSIkQ1BQRkxBR1MiCistaWYgdGVzdCAiJGNyb3NzX2NvbXBpbGluZyIgPSBubzsgdGhlbgorLSAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSS91c3IvaW5jbHVkZS9uY3Vyc2VzdyIKKy1maQorLQorIEFDX0NIRUNLX0hFQURFUlMoY3Vyc2VzLmggbmN1cnNlcy5oKQorIAorICMgT24gU29sYXJpcywgdGVybS5oIHJlcXVpcmVzIGN1cnNlcy5oCitkaWZmIC0tZ2l0IGEvc2V0dXAucHkgYi9zZXR1cC5weQoraW5kZXggYjBmMTU0MS4uNzIwOGNkMCAxMDA2NDQKKy0tLSBhL3NldHVwLnB5CisrKysgYi9zZXR1cC5weQorQEAgLTk3Myw4ICs5NzMsNiBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6CisgICAgICAgICBwYW5lbF9saWJyYXJ5ID0gJ3BhbmVsJworICAgICAgICAgaWYgY3Vyc2VzX2xpYnJhcnkgPT0gJ25jdXJzZXN3JzoKKyAgICAgICAgICAgICBjdXJzZXNfZGVmaW5lcy5hcHBlbmQoKCdIQVZFX05DVVJTRVNXJywgJzEnKSkKKy0gICAgICAgICAgICBpZiBub3QgQ1JPU1NfQ09NUElMSU5HOgorLSAgICAgICAgICAgICAgICBjdXJzZXNfaW5jbHVkZXMuYXBwZW5kKCcvdXNyL2luY2x1ZGUvbmN1cnNlc3cnKQorICAgICAgICAgICAgICMgQnVnIDE0NjQwNTY6IElmIF9jdXJzZXMuc28gbGlua3Mgd2l0aCBuY3Vyc2VzdywKKyAgICAgICAgICAgICAjIF9jdXJzZXNfcGFuZWwuc28gbXVzdCBsaW5rIHdpdGggcGFuZWx3LgorICAgICAgICAgICAgIHBhbmVsX2xpYnJhcnkgPSAncGFuZWx3JwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMTItZGlzdHV0aWxzLXByZWZpeC1pcy1pbnNpZGUtc3RhZ2luZy1hcmVhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvMTItZGlzdHV0aWxzLXByZWZpeC1pcy1pbnNpZGUtc3RhZ2luZy1hcmVhLnBhdGNoCmluZGV4IGQ0OTYwNGIuLjYxYWMzZTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zLzEyLWRpc3R1dGlscy1wcmVmaXgtaXMtaW5zaWRlLXN0YWdpbmctYXJlYS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy8xMi1kaXN0dXRpbHMtcHJlZml4LWlzLWluc2lkZS1zdGFnaW5nLWFyZWEucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGEyNzRiYTc3ODgzODgyNGVmY2FjYWJhNTdjNDE1YjcyNjJmNzc5ZWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDI1MTM0N2ZjOTcwYTM5N2E5Y2Q2M2VkM2Y4N2M1ZTZjNTJlMTUxODcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVHVlLCAxNCBNYXkgMjAxMyAxNTowMDoyNiAtMDcwMAogU3ViamVjdDogW1BBVENIXSBweXRob24zOiBBZGQgdGFyZ2V0IGFuZCBuYXRpdmUgcmVjaXBlcwpAQCAtMTgsMTAgKzE4LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weSBiL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5Ci1pbmRleCAzZGZkMGEzLi42YzZiMDlhIDEwMDY0NAoraW5kZXggMmRmMzQ4Yy4uNGY4ZGI4NCAxMDA2NDQKIC0tLSBhL0xpYi9kaXN0dXRpbHMvc3lzY29uZmlnLnB5CiArKysgYi9MaWIvZGlzdHV0aWxzL3N5c2NvbmZpZy5weQotQEAgLTk3LDcgKzk3LDkgQEAgZGVmIGdldF9weXRob25faW5jKHBsYXRfc3BlY2lmaWM9MCwgcHJlZml4PU5vbmUpOgorQEAgLTk2LDcgKzk2LDkgQEAgZGVmIGdldF9weXRob25faW5jKHBsYXRfc3BlY2lmaWM9MCwgcHJlZml4PU5vbmUpOgogICAgICBJZiAncHJlZml4JyBpcyBzdXBwbGllZCwgdXNlIGl0IGluc3RlYWQgb2Ygc3lzLmJhc2VfcHJlZml4IG9yCiAgICAgIHN5cy5iYXNlX2V4ZWNfcHJlZml4IC0tIGkuZS4sIGlnbm9yZSAncGxhdF9zcGVjaWZpYycuCiAgICAgICIiIgpAQCAtMzIsNyArMzIsNyBAQAogICAgICAgICAgcHJlZml4ID0gcGxhdF9zcGVjaWZpYyBhbmQgQkFTRV9FWEVDX1BSRUZJWCBvciBCQVNFX1BSRUZJWAogICAgICBpZiBvcy5uYW1lID09ICJwb3NpeCI6CiAgICAgICAgICBpZiBweXRob25fYnVpbGQ6Ci1AQCAtMTQwLDcgKzE0MiwxMyBAQCBkZWYgZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MCwgcHJlZml4PU5vbmUpOgorQEAgLTEzOSw3ICsxNDEsMTMgQEAgZGVmIGdldF9weXRob25fbGliKHBsYXRfc3BlY2lmaWM9MCwgc3RhbmRhcmRfbGliPTAsIHByZWZpeD1Ob25lKToKICAgICAgSWYgJ3ByZWZpeCcgaXMgc3VwcGxpZWQsIHVzZSBpdCBpbnN0ZWFkIG9mIHN5cy5iYXNlX3ByZWZpeCBvcgogICAgICBzeXMuYmFzZV9leGVjX3ByZWZpeCAtLSBpLmUuLCBpZ25vcmUgJ3BsYXRfc3BlY2lmaWMnLgogICAgICAiIiIKQEAgLTQ3LDcgKzQ3LDcgQEAKICAgICAgICAgIGlmIHN0YW5kYXJkX2xpYjoKICAgICAgICAgICAgICBwcmVmaXggPSBwbGF0X3NwZWNpZmljIGFuZCBCQVNFX0VYRUNfUFJFRklYIG9yIEJBU0VfUFJFRklYCiAgICAgICAgICBlbHNlOgotQEAgLTE0OCw3ICsxNTYsNyBAQCBkZWYgZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MCwgcHJlZml4PU5vbmUpOgorQEAgLTE0Nyw3ICsxNTUsNyBAQCBkZWYgZ2V0X3B5dGhvbl9saWIocGxhdF9zcGVjaWZpYz0wLCBzdGFuZGFyZF9saWI9MCwgcHJlZml4PU5vbmUpOgogIAogICAgICBpZiBvcy5uYW1lID09ICJwb3NpeCI6CiAgICAgICAgICBsaWJweXRob24gPSBvcy5wYXRoLmpvaW4ocHJlZml4LApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoCmluZGV4IDI0ZTY3YjQuLjE4NDU0MGUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGZlYWQ0OGM4YjUwMWE4ZDdjM2RiMjFkZjJlNTk5ZjkwZjM4ZjExZDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGJhNzIwMjcwMDU3OGQ0MzViMDdjZmRmYjdiNTdlODMxODU3NTI4MDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbmRyZWkgR2hlcnphbiA8YW5kcmVpQGdoZXJ6YW4ucm8+CiBEYXRlOiBNb24sIDI4IEphbiAyMDE5IDE1OjU3OjU0ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIF90a2ludGVyIG1vZHVsZSBuZWVkcyB0ayBtb2R1bGUgYWxvbmcgd2l0aCB0Y2wuIHRrIGlzIG5vdCB5ZXQKQEAgLTExLDI2ICsxMSwyMSBAQAogU2lnbmVkLW9mZi1ieTogQW5kcmVpIEdoZXJ6YW4gPGFuZHJlaUBnaGVyemFuLnJvPgogCiAtLS0KLSBzZXR1cC5weSB8IDggKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorIHNldHVwLnB5IHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3NldHVwLnB5IGIvc2V0dXAucHkKLWluZGV4IGZiZWMwMGQuLmI3YTM2YTYgMTAwNjQ0CitpbmRleCBhYjE4ZmYwLi43NjkxMjU4IDEwMDY0NAogLS0tIGEvc2V0dXAucHkKICsrKyBiL3NldHVwLnB5Ci1AQCAtMTYyMywxMCArMTYyMywxMiBAQCBjbGFzcyBQeUJ1aWxkRXh0KGJ1aWxkX2V4dCk6Ci0gICAgICAgICBzZWxmLmV4dGVuc2lvbnMuZXh0ZW5kKGV4dHMpCitAQCAtMTcwNiw4ICsxNzA2LDggQEAgY2xhc3MgUHlCdWlsZEV4dChidWlsZF9leHQpOgorICAgICAgICAgc2VsZi5kZXRlY3RfZGVjaW1hbCgpCisgICAgICAgICBzZWxmLmRldGVjdF9jdHlwZXMoKQorICAgICAgICAgc2VsZi5kZXRlY3RfbXVsdGlwcm9jZXNzaW5nKCkKKy0gICAgICAgIGlmIG5vdCBzZWxmLmRldGVjdF90a2ludGVyKCk6CistICAgICAgICAgICAgc2VsZi5taXNzaW5nLmFwcGVuZCgnX3RraW50ZXInKQorKyMgICAgICAgIGlmIG5vdCBzZWxmLmRldGVjdF90a2ludGVyKCk6CisrIyAgICAgICAgICAgIHNlbGYubWlzc2luZy5hcHBlbmQoJ190a2ludGVyJykKKyAgICAgICAgIHNlbGYuZGV0ZWN0X3V1aWQoKQogIAotICAgICAgICAgIyBDYWxsIHRoZSBtZXRob2QgZm9yIGRldGVjdGluZyB3aGV0aGVyIF90a2ludGVyIGNhbiBiZSBjb21waWxlZAotLSAgICAgICAgc2VsZi5kZXRlY3RfdGtpbnRlcihpbmNfZGlycywgbGliX2RpcnMpCi0rICAgICAgICAjIHNlbGYuZGV0ZWN0X3RraW50ZXIoaW5jX2RpcnMsIGxpYl9kaXJzKQotIAotLSAgICAgICAgaWYgJ190a2ludGVyJyBub3QgaW4gW2UubmFtZSBmb3IgZSBpbiBzZWxmLmV4dGVuc2lvbnNdOgotLSAgICAgICAgICAgIG1pc3NpbmcuYXBwZW5kKCdfdGtpbnRlcicpCi0rICAgICAgICAjIHRraW50ZXIgbW9kdWxlIHdpbGwgbm90IGJlIGF2YWxhaWJsZSBhcyB5b2N0bwotKyAgICAgICAgIyBkb2Vzbid0IGhhdmUgdGsgaW50ZWdyYXRlZCAoeWV0KQotKyAgICAgICAgI2lmICdfdGtpbnRlcicgbm90IGluIFtlLm5hbWUgZm9yIGUgaW4gc2VsZi5leHRlbnNpb25zXToKLSsgICAgICAgICMgICAgbWlzc2luZy5hcHBlbmQoJ190a2ludGVyJykKLSAKLSAgICAgICAgICMgQnVpbGQgdGhlIF91dWlkIG1vZHVsZSBpZiBwb3NzaWJsZQotICAgICAgICAgdXVpZF9pbmNzID0gZmluZF9maWxlKCJ1dWlkLmgiLCBpbmNfZGlycywgWyIvdXNyL2luY2x1ZGUvdXVpZCJdKQorICMjICAgICAgICAgIyBVbmNvbW1lbnQgdGhlc2UgbGluZXMgaWYgeW91IHdhbnQgdG8gcGxheSB3aXRoIHh4bW9kdWxlLmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbi1jb25maWcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24tY29uZmlnLnBhdGNoCmluZGV4IGYyM2I4YjcuLmM4YThmM2QgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbi1jb25maWcucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uLWNvbmZpZy5wYXRjaApAQCAtMSw0ICsxLDcgQEAKLXB5dGhvbi1jb25maWc6IFJldmVydCB0byB1c2luZyBkaXN0dXRpbHMuc3lzY29uZmlnCitGcm9tIDA3ZGYwYWUwZDcwY2JhNmQxODQ3ZmUxYzI0YTcxMDYzOTMwYmVjNjAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUeWxlciBIYWxsIDx0eWxlcndoYWxsQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgNCBNYXkgMjAxNCAyMDowNjo0MyAtMDQwMAorU3ViamVjdDogW1BBVENIXSBweXRob24tY29uZmlnOiBSZXZlcnQgdG8gdXNpbmcgZGlzdHV0aWxzLnN5c2NvbmZpZwogCiBUaGUgbmV3ZXIgc3lzY29uZmlnIG1vZHVsZSBzaGFyZXMgc29tZSBjb2RlIHdpdGggZGlzdHV0aWxzLnN5c2NvbmZpZywgYnV0IHRoZSBzYW1lIG1vZGlmaWNhdGlvbnMgYXMgaW4KIApAQCAtMTIsMTEgKzE1LDE2IEBACiAKIFNpZ25lZC1vZmYtYnk6IFR5bGVyIEhhbGwgPHR5bGVyd2hhbGxAZ21haWwuY29tPgogOgotSW5kZXg6IFB5dGhvbi0zLjMuMy9NaXNjL3B5dGhvbi1jb25maWcuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBQeXRob24tMy4zLjMub3JpZy9NaXNjL3B5dGhvbi1jb25maWcuaW4KLSsrKyBQeXRob24tMy4zLjMvTWlzYy9weXRob24tY29uZmlnLmluCi1AQCAtNCw3ICs0LDcgQEAKKworLS0tCisgTWlzYy9weXRob24tY29uZmlnLmluIHwgMTAgKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NaXNjL3B5dGhvbi1jb25maWcuaW4gYi9NaXNjL3B5dGhvbi1jb25maWcuaW4KK2luZGV4IDcyN2M0YTguLmM3MDI4MjkgMTAwNjQ0CistLS0gYS9NaXNjL3B5dGhvbi1jb25maWcuaW4KKysrKyBiL01pc2MvcHl0aG9uLWNvbmZpZy5pbgorQEAgLTYsNyArNiw3IEBACiAgaW1wb3J0IGdldG9wdAogIGltcG9ydCBvcwogIGltcG9ydCBzeXMKQEAgLTI0LDggKzMyLDggQEAKICtmcm9tIGRpc3R1dGlscyBpbXBvcnQgc3lzY29uZmlnCiAgCiAgdmFsaWRfb3B0cyA9IFsncHJlZml4JywgJ2V4ZWMtcHJlZml4JywgJ2luY2x1ZGVzJywgJ2xpYnMnLCAnY2ZsYWdzJywKLSAgICAgICAgICAgICAgICdsZGZsYWdzJywgJ2V4dGVuc2lvbi1zdWZmaXgnLCAnaGVscCcsICdhYmlmbGFncycsICdjb25maWdkaXInXQotQEAgLTMyLDE0ICszMiwxNCBAQCBpZiAnLS1oZWxwJyBpbiBvcHRfZmxhZ3M6CisgICAgICAgICAgICAgICAnbGRmbGFncycsICdleHRlbnNpb24tc3VmZml4JywgJ2hlbHAnLCAnYWJpZmxhZ3MnLCAnY29uZmlnZGlyJywKK0BAIC0zNSwxNCArMzUsMTQgQEAgaWYgJy0taGVscCcgaW4gb3B0X2ZsYWdzOgogIAogIGZvciBvcHQgaW4gb3B0X2ZsYWdzOgogICAgICBpZiBvcHQgPT0gJy0tcHJlZml4JzoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbgppbmRleCBkYmE5MmIwLi4zYmNjOWI4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24KKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcHl0aG9uMy1tYW5pZmVzdC5qc29uCkBAIC0xMjIsNyArMTIyLDggQEAKICAgICAgICAgICAgICJsb2dnaW5nIiwKICAgICAgICAgICAgICJuZXRjbGllbnQiLAogICAgICAgICAgICAgIm51bWJlcnMiLAotICAgICAgICAgICAgInN0cmluZ29sZCIKKyAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInR5cGluZyIKICAgICAgICAgXSwKICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2FzeW5jaW8iLApAQCAtMTgyLDI2ICsxODMsMTUgQEAKICAgICAiY29tcHJlc3Npb24iOiB7CiAgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBoaWdoLWxldmVsIGNvbXByZXNzaW9uIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCi0gICAgICAgICAgICAiY29yZSIsCi0gICAgICAgICAgICAic2hlbGwiLAotICAgICAgICAgICAgInVuaXhhZG1pbiIKKyAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAogICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX2NvbXByZXNzaW9uLnB5IiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9iejIucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2d6aXAucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19iejIuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2x6bWEuKi5zbyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvemxpYi4qLnNvIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9sem1hLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS90YXJmaWxlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS96aXBmaWxlLnB5IgogICAgICAgICBdLAogICAgICAgICAiY2FjaGVkIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19jb21wcmVzc2lvbi4qLnB5YyIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vYnoyLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9nemlwLioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9sem1hLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy90YXJmaWxlLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy96aXBmaWxlLioucHljIgogICAgICAgICBdCkBAIC0yMTAsMTIgKzIwMCwxMCBAQAogICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gaW50ZXJwcmV0ZXIgYW5kIGNvcmUgbW9kdWxlcyIsCiAgICAgICAgICJyZGVwZW5kcyI6IFtdLAogICAgICAgICAiZmlsZXMiOiBbCi0gICAgICAgICAgICAiJHtiaW5kaXJ9L3B5dGhvbjMiLAogICAgICAgICAgICAgIiR7YmluZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IiwKICAgICAgICAgICAgICIke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS5yZWFsIiwKLSAgICAgICAgICAgICIke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fQklOQUJJfSIsCi0gICAgICAgICAgICAiJHtpbmNsdWRlZGlyfS9weXRob24ke1BZVEhPTl9CSU5BQkl9L3B5Y29uZmlnKi5oIiwKLSAgICAgICAgICAgICIke3ByZWZpeH0vbGliL3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnKi8qWyEuYV0iLAorICAgICAgICAgICAgIiR7YmluZGlyfS9weXRob24zIiwKKyAgICAgICAgICAgICIke2luY2x1ZGVkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcHljb25maWcqLmgiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L1VzZXJEaWN0LnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9Vc2VyTGlzdC5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vVXNlclN0cmluZy5weSIsCkBAIC0yMjMsNiArMjExLDcgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fYWJjb2xsLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fYm9vdGxvY2FsZS5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX2NvbGxlY3Rpb25zX2FiYy5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX2NvbXByZXNzaW9uLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fbWFya3VwYmFzZS5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3NpdGVidWlsdGlucy5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEqLnB5IiwKQEAgLTIzMSw2ICsyMjAsNyBAQAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2FyZ3BhcnNlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9hc3QucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2Jpc2VjdC5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vYnoyLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb2RlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb2RlY3MucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvZGVvcC5weSIsCkBAIC0yNDcsNiArMjM3LDcgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9lbmNvZGluZ3MvbGF0aW5fMS5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZW5jb2RpbmdzL3V0Zl84LnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9lbnVtLnB5IiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9mbm1hdGNoLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9mdW5jdG9vbHMucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2dlbmVyaWNwYXRoLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9nZXRvcHQucHkiLApAQCAtMjY3LDEzICsyNTgsMTYgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fX3B5Y2FjaGVfXy90aW1lLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19fcHljYWNoZV9fL3hyZWFkbGluZXMuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2Jpc2VjdC4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fYnoyLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19jc3YuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2hlYXBxLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19sem1hLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19vcGNvZGUuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX3Bvc2l4c3VicHJvY2Vzcy4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fc3RydWN0Liouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL2FycmF5Liouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL2JpbmFzY2lpLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL2dycC4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9tYXRoLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL3BhcnNlci4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9yZWFkbGluZS4qLnNvIiwKQEAgLTI4MSwxNCArMjc1LDE4IEBACiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvdGltZS4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC91bmljb2RlZGF0YS4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC94cmVhZGxpbmVzLiouc28iLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL3psaWIuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGluZWNhY2hlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9sb2NhbGUucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2x6bWEucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L25ldy5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbnRwYXRoLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9vcGNvZGUucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L29wZXJhdG9yLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9vcHRwYXJzZS5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vb3MucHkiLAorCSAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcGF0aGxpYi5weSIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcGtndXRpbC5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcGxhdGZvcm0ucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3Bvc2l4cGF0aC5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcmUucHkiLApAQCAtMjk2LDYgKzI5NCw3IEBACiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vcmxjb21wbGV0ZXIucHkiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3J1bnB5LnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zZWxlY3RvcnMucHkiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NodXRpbC5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2lnbmFsLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaXRlLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaXRlY3VzdG9taXplLnB5IiwKQEAgLTMxNSwxMiArMzE0LDE0IEBACiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vdHJhY2ViYWNrLnB5IiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS90eXBlcy5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vd2FybmluZ3MucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3dlYWtyZWYucHkiCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vd2Vha3JlZi5weSIsCisgICAgICAgICAgICAiJHtwcmVmaXh9L2xpYi9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZyovKlshLmFdIgogICAgICAgICBdLAogICAgICAgICAiY2FjaGVkIjogWwogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19fZnV0dXJlX18uKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19ib290bG9jYWxlLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fY29sbGVjdGlvbnNfYWJjLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fY29tcHJlc3Npb24uKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL19tYXJrdXBiYXNlLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fc2l0ZWJ1aWx0aW5zLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9fc3lzY29uZmlnZGF0YS4qLnB5YyIsCkBAIC0zMjksNiArMzMwLDcgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9hcmdwYXJzZS4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vYXN0LioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9iaXNlY3QuKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2J6Mi4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY29kZS4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY29kZWNzLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9jb2Rlb3AuKi5weWMiLApAQCAtMzM5LDYgKzM0MSw3IEBACiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vY3N2LioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9kaXMuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2VudW0uKi5weWMiLAorICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2ZubWF0Y2guKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2Z1bmN0b29scy4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vZ2VuZXJpY3BhdGguKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2dldG9wdC4qLnB5YyIsCkBAIC0zNTAsMTAgKzM1MywxNCBAQAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2tleXdvcmQuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2xpbmVjYWNoZS4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vbG9jYWxlLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9sem1hLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9udHBhdGguKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL29wY29kZS4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vb3BlcmF0b3IuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL29wdHBhcnNlLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9vcy4qLnB5YyIsCisJICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9wYXRobGliLioucHljIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9wa2d1dGlsLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9wbGF0Zm9ybS4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcG9zaXhwYXRoLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9yZS4qLnB5YyIsCkBAIC0zNjEsNiArMzY4LDcgQEAKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9ybGNvbXBsZXRlci4qLnB5YyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcnVucHkuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NlbGVjdG9ycy4qLnB5YyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc2h1dGlsLioucHljIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zaWduYWwuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NpdGUuKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NyZV9jb21waWxlLioucHljIiwKQEAgLTQwNSwxMCArNDEzLDEwIEBACiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2JsYWtlMi4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fY3J5cHQuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX2hhc2hsaWIuKi5zbyIsCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX21kNS4qLnNvIiwKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fc2hhMS4qLnNvIiwKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC9fc2hhMjU2Liouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19zaGEzLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19zaGExLiouc28iLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL19tZDUuKi5zbyIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvX3NoYTUxMi4qLnNvIgogICAgICAgICBdLAogICAgICAgICAiY2FjaGVkIjogWwpAQCAtNTE5LDE0ICs1MjcsMTIgQEAKICAgICAgICAgXQogICAgIH0sCiAgICAgImRpc3R1dGlscy13aW5kb3dzIjogewotICAgICAgICAiY2FjaGVkIjogW10sCi0gICAgICAgICJmaWxlcyI6IFsKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9kaXN0dXRpbHMvY29tbWFuZC93aW5pbnN0LSouZXhlIgotICAgICAgICBdLAorICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGlzdHJpYnV0aW9uIHV0aWxpdGllcyAoV2luZG93cyBpbnN0YWxsZXIgc3R1YnMpIiwKICAgICAgICAgInJkZXBlbmRzIjogWwotICAgICAgICAgICAgImRpc3R1dGlscyIKKyAgICAgICAgICAgICJjb3JlIgogICAgICAgICBdLAotICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZGlzdHJpYnV0aW9uIHV0aWxpdGllcyAoV2luZG93cyBpbnN0YWxsZXIgc3R1YnMpIgorICAgICAgICAiZmlsZXMiOiBbXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAiZGlzdHV0aWxzIjogewogICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gRGlzdHJpYnV0aW9uIFV0aWxpdGllcyIsCkBAIC01NDEsMTMgKzU0NywxOSBAQAogICAgICJkb2N0ZXN0IjogewogICAgICAgICAic3VtbWFyeSI6ICJQeXRob24gZnJhbWV3b3JrIGZvciBydW5uaW5nIGV4YW1wbGVzIGluIGRvY3N0cmluZ3MiLAogICAgICAgICAicmRlcGVuZHMiOiBbCisgICAgICAgICAgICAiYXN5bmNpbyIsCisgICAgICAgICAgICAiY29tcHJlc3Npb24iLAogICAgICAgICAgICAgImNvcmUiLAogICAgICAgICAgICAgImRlYnVnZ2VyIiwKICAgICAgICAgICAgICJkaWZmbGliIiwKKyAgICAgICAgICAgICJpbyIsCiAgICAgICAgICAgICAibG9nZ2luZyIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJudW1iZXJzIiwKICAgICAgICAgICAgICJwcHJpbnQiLAogICAgICAgICAgICAgInNoZWxsIiwKICAgICAgICAgICAgICJzdHJpbmdvbGQiLAorICAgICAgICAgICAgInR5cGluZyIsCiAgICAgICAgICAgICAidW5pdHRlc3QiCiAgICAgICAgIF0sCiAgICAgICAgICJmaWxlcyI6IFsKQEAgLTY0MSw4ICs2NTMsNyBAQAogICAgICAgICAgICAgImNyeXB0IiwKICAgICAgICAgICAgICJtYXRoIiwKICAgICAgICAgICAgICJuZXRjbGllbnQiLAotICAgICAgICAgICAgInNoZWxsIiwKLSAgICAgICAgICAgICJ1bml4YWRtaW4iCisgICAgICAgICAgICAic2hlbGwiCiAgICAgICAgIF0sCiAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fcHlpby5weSIsCkBAIC04NzUsOSArODg2LDcgQEAKICAgICAgICAgICAgICJtYXRoIiwKICAgICAgICAgICAgICJtaW1lIiwKICAgICAgICAgICAgICJuZXRjbGllbnQiLAotICAgICAgICAgICAgInNoZWxsIiwKLSAgICAgICAgICAgICJzdHJpbmdvbGQiLAotICAgICAgICAgICAgInVuaXhhZG1pbiIKKyAgICAgICAgICAgICJzdHJpbmdvbGQiCiAgICAgICAgIF0sCiAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jZ2kucHkiLApAQCAtOTM0LDEyICs5NDMsOCBAQAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIKICAgICAgICAgXSwKLSAgICAgICAgImZpbGVzIjogWwotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3BrZ3V0aWwucHkiCi0gICAgICAgIF0sCi0gICAgICAgICJjYWNoZWQiOiBbCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vcGtndXRpbC4qLnB5YyIKLSAgICAgICAgXQorICAgICAgICAiZmlsZXMiOiBbXSwKKyAgICAgICAgImNhY2hlZCI6IFtdCiAgICAgfSwKICAgICAicGxpc3RsaWIiOiB7CiAgICAgICAgICJzdW1tYXJ5IjogIkdlbmVyYXRlIGFuZCBwYXJzZSBNYWMgT1MgWCAucGxpc3QgZmlsZXMiLApAQCAtOTg4LDggKzk5Myw3IEBACiAgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiBpbnRlcmFjdGl2ZSBoZWxwIHN1cHBvcnQiLAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29yZSIsCi0gICAgICAgICAgICAibmV0Y2xpZW50IiwKLSAgICAgICAgICAgICJwa2d1dGlsIgorICAgICAgICAgICAgIm5ldGNsaWVudCIKICAgICAgICAgXSwKICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgIiR7YmluZGlyfS9weWRvYyoiLApAQCAtMTAxNSwyMiArMTAxOSwxNyBAQAogICAgICAgICAicmRlcGVuZHMiOiBbCiAgICAgICAgICAgICAiY29tcHJlc3Npb24iLAogICAgICAgICAgICAgImNvcmUiLAotICAgICAgICAgICAgInN0cmluZ29sZCIsCi0gICAgICAgICAgICAidW5peGFkbWluIgorICAgICAgICAgICAgInN0cmluZ29sZCIKICAgICAgICAgXSwKICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NtZC5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZm5tYXRjaC5weSIsCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZ2xvYi5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vc2hsZXgucHkiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L3NodXRpbC5weSIKKyAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9zaGxleC5weSIKICAgICAgICAgXSwKICAgICAgICAgImNhY2hlZCI6IFsKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9jbWQuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2ZubWF0Y2guKi5weWMiLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL2dsb2IuKi5weWMiLAotICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19fcHljYWNoZV9fL3NobGV4LioucHljIiwKLSAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fX3B5Y2FjaGVfXy9zaHV0aWwuKi5weWMiCisgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX19weWNhY2hlX18vc2hsZXguKi5weWMiCiAgICAgICAgIF0KICAgICB9LAogICAgICJzbXRwZCI6IHsKQEAgLTExNTAsMTIgKzExNDksMTcgQEAKICAgICAidW5pdHRlc3QiOiB7CiAgICAgICAgICJzdW1tYXJ5IjogIlB5dGhvbiB1bml0IHRlc3RpbmcgZnJhbWV3b3JrIiwKICAgICAgICAgInJkZXBlbmRzIjogWworICAgICAgICAgICAgImFzeW5jaW8iLAorICAgICAgICAgICAgImNvbXByZXNzaW9uIiwKICAgICAgICAgICAgICJjb3JlIiwKICAgICAgICAgICAgICJkaWZmbGliIiwKKyAgICAgICAgICAgICJpbyIsCiAgICAgICAgICAgICAibG9nZ2luZyIsCisgICAgICAgICAgICAibmV0Y2xpZW50IiwKKyAgICAgICAgICAgICJudW1iZXJzIiwKICAgICAgICAgICAgICJwcHJpbnQiLAotICAgICAgICAgICAgInNoZWxsIiwKLSAgICAgICAgICAgICJzdHJpbmdvbGQiCisgICAgICAgICAgICAic3RyaW5nb2xkIiwKKyAgICAgICAgICAgICJ0eXBpbmciCiAgICAgICAgIF0sCiAgICAgICAgICJmaWxlcyI6IFsKICAgICAgICAgICAgICIke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS91bml0dGVzdCIsCkBAIC0xMTcyLDcgKzExNzYsNiBAQAogICAgICAgICBdLAogICAgICAgICAiZmlsZXMiOiBbCiAgICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vZ2V0cGFzcy5weSIsCi0gICAgICAgICAgICAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvZ3JwLiouc28iLAogICAgICAgICAgICAgIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkL25pcy4qLnNvIgogICAgICAgICBdLAogICAgICAgICAiY2FjaGVkIjogWwpAQCAtMTE4NSw5ICsxMTg4LDcgQEAKICAgICAgICAgICAgICJjb21wcmVzc2lvbiIsCiAgICAgICAgICAgICAiY29yZSIsCiAgICAgICAgICAgICAibG9nZ2luZyIsCi0gICAgICAgICAgICAic2hlbGwiLAotICAgICAgICAgICAgInN0cmluZ29sZCIsCi0gICAgICAgICAgICAidW5peGFkbWluIgorICAgICAgICAgICAgInN0cmluZ29sZCIKICAgICAgICAgXSwKICAgICAgICAgImZpbGVzIjogWwogICAgICAgICAgICAgIiR7YmluZGlyfS9weXZlbnYqIiwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zL3J1bi1wdGVzdAppbmRleCAzZTQ1ZDM5Li40MDViMDdmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uMy9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjMvcnVuLXB0ZXN0CkBAIC0xLDMgKzEsMyBAQAogIyEvYmluL3NoCiAKLXB5dGhvbjMgLW0gdGVzdCAtdiB8IHNlZCAtdSAtZSAnL1wuXC5cLiBvay8gcy9eL1BBU1M6IC9nJyAtZSAnL1wuXC5cLiBbRVJST1J8RkFJTF0vIHMvXi9GQUlMOiAvZycgLWUgJy9cLlwuXC4gc2tpcHBlZC8gcy9eL1NLSVA6IC9nJyAtZSAncy8gXC5cLlwuIG9rLy9nJyAtZSAncy8gXC5cLlwuIEVSUk9SLy9nJyAtZSAncy8gXC5cLlwuIEZBSUwvL2cnIC1lICdzLyBcLlwuXC4gc2tpcHBlZC8vZycKK3B5dGhvbjMgLW0gdGVzdCAtdiB8IHNlZCAtdSAtZSAnL1wuXC5cLiBvay8gcy9eL1BBU1M6IC9nJyAtciAtZSAnL1wuXC5cLiAoRVJST1J8RkFJTCkvIHMvXi9GQUlMOiAvZycgLWUgJy9cLlwuXC4gc2tpcHBlZC8gcy9eL1NLSVA6IC9nJyAtZSAncy8gXC5cLlwuIG9rLy9nJyAtZSAncy8gXC5cLlwuIEVSUk9SLy9nJyAtZSAncy8gXC5cLlwuIEZBSUwvL2cnIC1lICdzLyBcLlwuXC4gc2tpcHBlZC8vZycKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3B5dGhvbi9weXRob24zXzMuNy41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy43LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDkwOTE0ZjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy43LjUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNDAgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgUHl0aG9uIFByb2dyYW1taW5nIExhbmd1YWdlIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5weXRob24ub3JnIgotTElDRU5TRSA9ICJQU0Z2MiIKLVNFQ1RJT04gPSAiZGV2ZWwvcHl0aG9uIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNDY2MjQyOTg5YmQzM2MxYmQyYjZhNTI2YTc0MjQ5OCIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LnB5dGhvbi5vcmcvZnRwL3B5dGhvbi8ke1BWfS9QeXRob24tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9jcmVhdGVfbWFuaWZlc3QzLnB5IFwKLSAgICAgICAgICAgZmlsZTovL2dldF9tb2R1bGVfZGVwczMucHkgXAotICAgICAgICAgICBmaWxlOi8vcHl0aG9uMy1tYW5pZmVzdC5qc29uIFwKLSAgICAgICAgICAgZmlsZTovL2NoZWNrX2J1aWxkX2NvbXBsZXRlbmVzcy5weSBcCi0gICAgICAgICAgIGZpbGU6Ly9jZ2lfcHkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtYWRkLXVzci1saWItdGVybWNhcC10by1saW5rZXItZmxhZ3MtdG8tYXZvaWQtLnBhdGNoIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGsnLCAnJywgJ2ZpbGU6Ly9hdm9pZF93YXJuaW5nX2Fib3V0X3RraW50ZXIucGF0Y2gnLCBkKX0gXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtdXNlLXRoZS1zaGVsbC12ZXJzaW9uLW9mLXB5dGhvbi1jb25maWctdGhhdC13LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3B5dGhvbi1jb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5wcmUtdXNlLXFlbXUtd3JhcHBlci13aGVuLWdhdGhlcmluZy1wcm9maWxlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWhhcmRjb2RlLWxpYi1hcy1sb2NhdGlvbi1mb3Itc2l0ZS1wYWNrYWdlcy1hbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXB5dGhvbjMtdXNlLWNjX2Jhc2VuYW1lLXRvLXJlcGxhY2UtQ0MtZm9yLWNoZWNraW5nLWMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1Eb24tdC1kby1ydW50aW1lLXRlc3QtdG8tZ2V0LWZsb2F0LWJ5dGUtb3JkZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1zZXR1cC5weS1wYXNzLW1pc3NpbmctbGlicmFyaWVzLXRvLUV4dGVuc2lvbi1mb3ItbXVsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtTGliLXN5c2NvbmZpZy5weS1maXgtYW5vdGhlci1wbGFjZS13aGVyZS1saWItaXMtaGFyZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLWZpeC1Jc3N1ZTM2NDY0LXBhcmFsbGVsLWJ1aWxkLXJhY2UtcHJvYmxlbS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWJwby0zNjg1Mi1wcm9wZXItZGV0ZWN0aW9uLW9mLW1pcHMtYXJjaGl0ZWN0dXJlLWZvci0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vY3Jvc3NweXRob25wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlZm9ybWF0X3N5c2NvbmZpZy5weSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1GTEFHX1JFRi1hbHdheXMtZm9yLWludGVybmVkLXN0cmluZ3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0X2xvY2FsZS5weS1jb3JyZWN0LXRoZS10ZXN0LW91dHB1dC1mb3JtYXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxNy1zZXR1cC5weS1kby1ub3QtcmVwb3J0LW1pc3NpbmctZGVwZW5kZW5jaWVzLWZvci1kaXNhLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZGlzdHV0aWxzLXN5c2NvbmZpZy1hcHBlbmQtU1RBR0lOR19MSUJESVItcHl0aG9uLXN5cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8xMi1kaXN0dXRpbHMtcHJlZml4LWlzLWluc2lkZS1zdGFnaW5nLWFyZWEucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbWFpbi5jLWlmLU9FUFlUSE9OM0hPTUUtaXMtc2V0LXVzZS1pbnN0ZWFkLW9mLVBZVEhPTi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA4ZWQ4MDMwYjExODMxMDdjNDhmMjA5MmU3OWE4N2UyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4NWE3NmVhOWYzZDZjNDg1ZWMxNzgwZmNhNGU1MDA3MjVhNGE3YmJjNjNjNzhlYmM0NDE3MGRlOWI2MTlkOTQiCi0KLSMgZXhjbHVkZSBwcmUtcmVsZWFzZXMgZm9yIGJvdGggcHl0aG9uIDIueCBhbmQgMy54Ci1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJbUHBdeXRob24tKD9QPHB2ZXI+XGQrKFwuXGQrKSspLnRhciIKLQotQ1ZFX1BST0RVQ1QgPSAicHl0aG9uIgotCi1QWVRIT05fTUFKTUlOID0gIjMuNyIKLVBZVEhPTl9CSU5BQkkgPSAiJHtQWVRIT05fTUFKTUlOfW0iCi0KLVMgPSAiJHtXT1JLRElSfS9QeXRob24tJHtQVn0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHFlbXUgcHRlc3QgbXVsdGlsaWJfaGVhZGVyIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotTVVMVElMSUJfU1VGRklYID0gIiR7QGQuZ2V0VmFyKCdiYXNlX2xpYmRpcicsMSkuc3BsaXQoJy8nKVstMV19IgotCi1BTFRFUk5BVElWRV8ke1BOfS1kZXYgPSAicHl0aG9uMy1jb25maWciCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbcHl0aG9uMy1jb25maWddID0gIiR7YmluZGlyfS9weXRob24ke1BZVEhPTl9CSU5BQkl9LWNvbmZpZyIKLUFMVEVSTkFUSVZFX1RBUkdFVFtweXRob24zLWNvbmZpZ10gPSAiJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0tY29uZmlnLSR7TVVMVElMSUJfU1VGRklYfSIKLQotCi1ERVBFTkRTID0gImJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSBsaWJmZmkgYnppcDIgb3BlbnNzbCBzcWxpdGUzIHpsaWIgdmlydHVhbC9saWJpbnRsIHh6IHZpcnR1YWwvY3J5cHQgdXRpbC1saW51eCBsaWJ0aXJwYyBsaWJuc2wyIgotREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBweXRob24zLW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgcHl0aG9uMy1uYXRpdmUiCi0KLUVYVFJBX09FQ09ORiA9ICIgLS13aXRob3V0LWVuc3VyZXBpcCAtLWVuYWJsZS1zaGFyZWQiCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLS1iaW5kaXI9JHtiaW5kaXJ9LyR7UE59IgotCi1leHBvcnQgQ1JPU1NQWVRIT05QQVRIPSIke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8iCi0KLUVYVFJBTkFUSVZFUEFUSCArPSAicHl0aG9uMy1uYXRpdmUiCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTID0gIiBcCi0gICAgICAgICAgICAgICAgYWNfY3ZfZmlsZV9fZGV2X3B0bXg9eWVzIFwKLSAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRjPW5vIFwKLSAgICAgICAgICAgICAgICBhY19jdl93b3JraW5nX3R6c2V0PXllcyBcCi0iCi1weXRob24oKSB7Ci0gICAgIyBQR08gY3VycmVudGx5IGNhdXNlcyBidWlsZHMgdG8gbm90IGJlIHJlcHJvZHVjaWJsZSwgc28gZGlzYWJsZSBpdCBmb3IKLSAgICAjIG5vdy4gU2VlIFlPQ1RPICMxMzQwNwotICAgIGlmIGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3FlbXUtdXNlcm1vZGUnLCBUcnVlLCBGYWxzZSwgZCkgYW5kIGQuZ2V0VmFyKCdCVUlMRF9SRVBST0RVQ0lCTEVfQklOQVJJRVMnKSAhPSAnMSc6Ci0gICAgICAgIGQuc2V0VmFyKCdQQUNLQUdFQ09ORklHX1BHTycsICdwZ28nKQotICAgIGVsc2U6Ci0gICAgICAgIGQuc2V0VmFyKCdQQUNLQUdFQ09ORklHX1BHTycsICcnKQotfQotCi1QQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gInJlYWRsaW5lICR7UEFDS0FHRUNPTkZJR19QR099IGdkYm0iCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA/Pz0gInJlYWRsaW5lIGdkYm0iCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA/Pz0gInJlYWRsaW5lIGdkYm0iCi1QQUNLQUdFQ09ORklHW3JlYWRsaW5lXSA9ICIsLHJlYWRsaW5lIgotIyBVc2UgcHJvZmlsZSBndWlkZWQgb3B0aW1pc2F0aW9uIGJ5IHJ1bm5pbmcgUHlCZW5jaCBpbnNpZGUgcWVtdS11c2VyCi1QQUNLQUdFQ09ORklHW3Bnb10gPSAiLS1lbmFibGUtb3B0aW1pemF0aW9ucywscWVtdS1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW3RrXSA9ICIsLHRrIgotUEFDS0FHRUNPTkZJR1tnZGJtXSA9ICIsLGdkYm0iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKLSAgICBta2RpciAtcCAke0J9L01vZHVsZXMKLSAgICBjYXQgPiAke0J9L01vZHVsZXMvU2V0dXAubG9jYWwgPDwgRU9GCi0qZGlzYWJsZWQqCi0ke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdnZGJtJywgJycsICdfZ2RibSBfZGJtJywgZCl9Ci0ke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdyZWFkbGluZScsICcnLCAncmVhZGxpbmUnLCBkKX0KLUVPRgotfQotCi1DUFBGTEFHU19hcHBlbmQgPSAiIC1JJHtTVEFHSU5HX0lOQ0RJUn0vbmN1cnNlc3cgLUkke1NUQUdJTkdfSU5DRElSfS91dWlkIgotCi1FWFRSQV9PRU1BS0UgPSAnXAotICBTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0gIFNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLSAgTElCPSR7YmFzZWxpYn0gXAotJwotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BnbycsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCi0gICAgICAgICAgICAgICAgcWVtdV9iaW5hcnk9IiR7QHFlbXVfd3JhcHBlcl9jbWRsaW5lKGQsICcke1NUQUdJTkdfRElSX1RBUkdFVH0nLCBbJyR7Qn0nLCAnJHtTVEFHSU5HX0RJUl9UQVJHRVR9LyR7YmFzZV9saWJkaXJ9J10pfSIKLSAgICAgICAgICAgICAgICBjYXQgPnBnby13cmFwcGVyIDw8RU9GCi0jIS9iaW4vc2gKLWNkICR7Qn0KLSRxZW11X2JpbmFyeSAiXCRAIgotRU9GCi0gICAgICAgICAgICAgICAgY2htb2QgK3ggcGdvLXdyYXBwZXIKLSAgICAgICAgZmkKLX0KLQotZG9faW5zdGFsbF9wcmVwZW5kKCkgewotICAgICAgICAke1dPUktESVJ9L2NoZWNrX2J1aWxkX2NvbXBsZXRlbmVzcy5weSAke1R9L2xvZy5kb19jb21waWxlCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAgICAgb2VfbXVsdGlsaWJfaGVhZGVyIHB5dGhvbiR7UFlUSE9OX0JJTkFCSX0vcHljb25maWcuaAotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gICAgICAgICMgTWFrZSBzdXJlIHdlIHVzZSAvdXNyL2Jpbi9lbnYgcHl0aG9uCi0gICAgICAgIGZvciBQWVRIU0NSSVBUIGluIGBncmVwIC1ySWwgJHtiaW5kaXJ9LyR7UE59L3B5dGhvbiAke0R9JHtiaW5kaXJ9LyR7UE59YDsgZG8KLSAgICAgICAgICAgICAgICBzZWQgLWkgLWUgJzFzfF4jIS4qfCMhL3Vzci9iaW4vZW52IHB5dGhvbjN8JyAkUFlUSFNDUklQVAotICAgICAgICBkb25lCi0gICAgICAgICMgQWRkIGEgc3ltbGluayB0byB0aGUgbmF0aXZlIFB5dGhvbiBzbyB0aGF0IHNjcmlwdHMgY2FuIGp1c3QgaW52b2tlCi0gICAgICAgICMgIm5hdGl2ZXB5dGhvbiIgYW5kIGdldCB0aGUgcmlnaHQgb25lIHdpdGhvdXQgbmVlZGluZyBhYnNvbHV0ZSBwYXRocwotICAgICAgICAjICh0aGVzZSBvZnRlbiBlbmQgdXAgdG9vIGxvbmcgZm9yIHRoZSAjISBwYXJzZXIgaW4gdGhlIGtlcm5lbCBhcyB0aGUKLSAgICAgICAgIyBidWZmZXIgaXMgMTI4IGJ5dGVzIGxvbmcpLgotICAgICAgICBsbiAtcyBweXRob24zLW5hdGl2ZS9weXRob24zICR7RH0ke2JpbmRpcn0vbmF0aXZlcHl0aG9uMwotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICAgbWtkaXIgLXAgJHtEfSR7bGliZGlyfS9weXRob24tc3lzY29uZmlnZGF0YQotICAgICAgICBzeXNjb25maWdmaWxlPWBmaW5kICR7RH0gLW5hbWUgX3N5c2NvbmZpZyoucHlgCi0gICAgICAgIGNwICRzeXNjb25maWdmaWxlICR7RH0ke2xpYmRpcn0vcHl0aG9uLXN5c2NvbmZpZ2RhdGEvX3N5c2NvbmZpZ2RhdGEucHkKLQotICAgICAgICBzZWQgLWkgIFwKLSAgICAgICAgICAgICAgICAtZSAicyxeICdMSUJESVInLiosICdMSUJESVInOiAnJHtTVEFHSU5HX0xJQkRJUn0nXCwsZyIgXAotICAgICAgICAgICAgICAgIC1lICJzLF4gJ0lOQ0xVREVESVInLiosICdJTkNMVURFRElSJzogJyR7U1RBR0lOR19JTkNESVJ9J1wsLGciIFwKLSAgICAgICAgICAgICAgICAtZSAicyxeICdDT05GSU5DTFVERURJUicuKiwgJ0NPTkZJTkNMVURFRElSJzogJyR7U1RBR0lOR19JTkNESVJ9J1wsLGciIFwKLSAgICAgICAgICAgICAgICAtZSAiL14gJ0lOQ0xESVJTVE9NQUtFJy97TjsgcywvdXNyL2luY2x1ZGUsJHtTVEFHSU5HX0lOQ0RJUn0sZ30iIFwKLSAgICAgICAgICAgICAgICAtZSAiL14gJ0lOQ0xVREVQWScvcywvdXNyL2luY2x1ZGUsJHtTVEFHSU5HX0lOQ0RJUn0sZyIgXAotICAgICAgICAgICAgICAgICR7RH0ke2xpYmRpcn0vcHl0aG9uLXN5c2NvbmZpZ2RhdGEvX3N5c2NvbmZpZ2RhdGEucHkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrICgpIHsKLSAgICBjcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0gT0VQWVRIT04zSE9NRT0nJHtwcmVmaXh9JyBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycgUFlUSE9OTk9VU0VSU0lURT0nMScKLX0KLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIF9zeXNjb25maWdkYXRhLnB5IgotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCi0KLXB5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7Ci0gICAgICAgICMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBNYWtlZmlsZSBhbmQgX3N5c2NvbmZpZ2RhdGEKLSAgICAgICAgc2VkIC1pIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCi0gICAgICAgICAgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAotICAgICAgICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCi0gICAgICAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0gICAgICAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKLSAgICAgICAgICAgICAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKLSAgICAgICAgICAgICAgICAke1BLR0R9LyR7cHJlZml4fS9saWIvcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9jb25maWctJHtQWVRIT05fTUFKTUlOfSR7UFlUSE9OX0FCSX0qL01ha2VmaWxlIFwKLSAgICAgICAgICAgICAgICAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhKi5weSBcCi0gICAgICAgICAgICAgICAgJHtQS0dEfS8ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fQklOQUJJfS1jb25maWcKLQotICAgICAgICAjIFJlZm9ybWF0IF9zeXNjb25maWdkYXRhIGFmdGVyIG1vZGlmeWluZyBpdCBzbyB0aGF0IGl0IHJlbWFpbnMKLSAgICAgICAgIyByZXByb2R1Y2libGUKLSAgICAgICAgZm9yIGMgaW4gJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YSoucHk7IGRvCi0gICAgICAgICAgICBweXRob24zICR7V09SS0RJUn0vcmVmb3JtYXRfc3lzY29uZmlnLnB5ICRjCi0gICAgICAgIGRvbmUKLQotICAgICAgICAjIFJlY29tcGlsZSBfc3lzY29uZmlnZGF0YSBhZnRlciBtb2RpZnlpbmcgaXQKLSAgICAgICAgY2QgJHtQS0dEfQotICAgICAgICBzeXNjb25maWdmaWxlPWBmaW5kIC4gLW5hbWUgX3N5c2NvbmZpZ2RhdGFfKi5weWAKLSAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAotICAgICAgICAgICAgIC1jICJmcm9tIHB5X2NvbXBpbGUgaW1wb3J0IGNvbXBpbGU7IGNvbXBpbGUoJyRzeXNjb25maWdmaWxlJykiCi0gICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKLSAgICAgICAgICAgICAtYyAiZnJvbSBweV9jb21waWxlIGltcG9ydCBjb21waWxlOyBjb21waWxlKCckc3lzY29uZmlnZmlsZScsIG9wdGltaXplPTEpIgotICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCi0gICAgICAgICAgICAgLWMgImZyb20gcHlfY29tcGlsZSBpbXBvcnQgY29tcGlsZTsgY29tcGlsZSgnJHN5c2NvbmZpZ2ZpbGUnLCBvcHRpbWl6ZT0yKSIKLSAgICAgICAgY2QgLQotCi0gICAgICAgIG12ICR7UEtHRH0vJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0tY29uZmlnICR7UEtHRH0vJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX0JJTkFCSX0tY29uZmlnLSR7TVVMVElMSUJfU1VGRklYfQotICAgICAgICAKLSAgICAgICAgI1JlbW92ZSB0aGUgdW5uZWVkZWQgY29weSBvZiB0YXJnZXQgc3lzY29uZmlnIGRhdGEKLSAgICAgICAgcm0gLXJmICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbi1zeXNjb25maWdkYXRhCi19Ci0KLSMgV2Ugd2FudCBieXRlY29kZSBwcmVjb21waWxlZCAucHkgZmlsZXMgKC5weWMncykgYnkgZGVmYXVsdAotIyBidXQgdGhlIHVzZXIgbWF5IHNldCBpdCBvbiB0aGVpciBvd24gY29uZgotSU5DTFVERV9QWUNTID89ICIxIgotCi1weXRob24oKXsKLSAgICBpbXBvcnQgY29sbGVjdGlvbnMsIGpzb24KLQotICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdUSElTRElSJyksICdweXRob24zJywgJ3B5dGhvbjMtbWFuaWZlc3QuanNvbicpCi0gICAgIyBUaGlzIHB5dGhvbiBjaGFuZ2VzIHRoZSBkYXRhc3RvcmUgYmFzZWQgb24gdGhlIGNvbnRlbnRzIG9mIGEgZmlsZSwgc28gbWFyawotICAgICMgdGhhdCBkZXBlbmRlbmN5LgotICAgIGJiLnBhcnNlLm1hcmtfZGVwZW5kZW5jeShkLCBmaWxlbmFtZSkKLQotICAgIHdpdGggb3BlbihmaWxlbmFtZSkgYXMgbWFuaWZlc3RfZmlsZToKLSAgICAgICAgbWFuaWZlc3Rfc3RyID0gIG1hbmlmZXN0X2ZpbGUucmVhZCgpCi0gICAgICAgIGpzb25fc3RhcnQgPSBtYW5pZmVzdF9zdHIuZmluZCgnIyBFT0MnKSArIDYKLSAgICAgICAgbWFuaWZlc3RfZmlsZS5zZWVrKGpzb25fc3RhcnQpCi0gICAgICAgIG1hbmlmZXN0X3N0ciA9IG1hbmlmZXN0X2ZpbGUucmVhZCgpCi0gICAgICAgIHB5dGhvbl9tYW5pZmVzdCA9IGpzb24ubG9hZHMobWFuaWZlc3Rfc3RyLCBvYmplY3RfcGFpcnNfaG9vaz1jb2xsZWN0aW9ucy5PcmRlcmVkRGljdCkKLQotICAgICMgRmlyc3Qgc2V0IFJQUk9WSURFUyBmb3IgLW5hdGl2ZSBjYXNlCi0gICAgIyBIYXJkY29kZWQgc2luY2UgaXQgY2FudCBiZSBweXRob24zLW5hdGl2ZS1mb28sIHNob3VsZCBiZSBweXRob24zLWZvby1uYXRpdmUKLSAgICBwbiA9ICdweXRob24zJwotICAgIHJwcm92aWRlcyA9IGQuZ2V0VmFyKCdSUFJPVklERVMnKS5zcGxpdCgpCi0KLSAgICBmb3Iga2V5IGluIHB5dGhvbl9tYW5pZmVzdDoKLSAgICAgICAgcHlwYWNrYWdlID0gcG4gKyAnLScgKyBrZXkgKyAnLW5hdGl2ZScKLSAgICAgICAgaWYgcHlwYWNrYWdlIG5vdCBpbiBycHJvdmlkZXM6Ci0gICAgICAgICAgICAgIHJwcm92aWRlcy5hcHBlbmQocHlwYWNrYWdlKQotCi0gICAgZC5zZXRWYXIoJ1JQUk9WSURFU19jbGFzcy1uYXRpdmUnLCAnICcuam9pbihycHJvdmlkZXMpKQotCi0gICAgIyBUaGVuIHdvcmsgb24gdGhlIHRhcmdldAotICAgIGluY2x1ZGVfcHljcyA9IGQuZ2V0VmFyKCdJTkNMVURFX1BZQ1MnKQotCi0gICAgcGFja2FnZXMgPSBkLmdldFZhcignUEFDS0FHRVMnKS5zcGxpdCgpCi0gICAgcG4gPSBkLmdldFZhcignUE4nKQotCi0gICAgbmV3cGFja2FnZXM9W10KLSAgICBmb3Iga2V5IGluIHB5dGhvbl9tYW5pZmVzdDoKLSAgICAgICAgcHlwYWNrYWdlID0gcG4gKyAnLScgKyBrZXkKLQotICAgICAgICBpZiBweXBhY2thZ2Ugbm90IGluIHBhY2thZ2VzOgotICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHByZXBlbmQsIG90aGVyd2lzZSBweXRob24tbWlzYyBnZXRzIGV2ZXJ5dGhpbmcKLSAgICAgICAgICAgICMgc28gd2UgdXNlIGEgbmV3IHZhcmlhYmxlCi0gICAgICAgICAgICBuZXdwYWNrYWdlcy5hcHBlbmQocHlwYWNrYWdlKQotCi0gICAgICAgICMgIkJ1aWxkIiBweXRob24ncyBtYW5pZmVzdCBGSUxFUywgUkRFUEVORFMgYW5kIFNVTU1BUlkKLSAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcnKQotICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106Ci0gICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUpCi0KLSAgICAgICAgIyBBZGQgY2FjaGVkIGZpbGVzCi0gICAgICAgIGlmIGluY2x1ZGVfcHljcyA9PSAnMSc6Ci0gICAgICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ2NhY2hlZCddOgotICAgICAgICAgICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUpCi0KLSAgICAgICAgZm9yIHZhbHVlIGluIHB5dGhvbl9tYW5pZmVzdFtrZXldWydyZGVwZW5kcyddOgotICAgICAgICAgICAgIyBNYWtlIGl0IHdvcmsgd2l0aCBvciB3aXRob3V0ICRQTgotICAgICAgICAgICAgaWYgJyR7UE59JyBpbiB2YWx1ZToKLSAgICAgICAgICAgICAgICB2YWx1ZT12YWx1ZS5zcGxpdCgnLScsIDEpWzFdCi0gICAgICAgICAgICBkLmFwcGVuZFZhcignUkRFUEVORFNfJyArIHB5cGFja2FnZSwgJyAnICsgcG4gKyAnLScgKyB2YWx1ZSkKLQotICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV0uZ2V0KCdycmVjb21tZW5kcycsICgpKToKLSAgICAgICAgICAgIGlmICcke1BOfScgaW4gdmFsdWU6Ci0gICAgICAgICAgICAgICAgdmFsdWU9dmFsdWUuc3BsaXQoJy0nLCAxKVsxXQotICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTXycgKyBweXBhY2thZ2UsICcgJyArIHBuICsgJy0nICsgdmFsdWUpCi0KLSAgICAgICAgZC5zZXRWYXIoJ1NVTU1BUllfJyArIHB5cGFja2FnZSwgcHl0aG9uX21hbmlmZXN0W2tleV1bJ3N1bW1hcnknXSkKLQotICAgICMgUHJlcGVuZGluZyBzbyB0byBhdm9pZCBweXRob24tbWlzYyBnZXR0aW5nIGV2ZXJ5dGhpbmcKLSAgICBwYWNrYWdlcyA9IG5ld3BhY2thZ2VzICsgcGFja2FnZXMKLSAgICBkLnNldFZhcignUEFDS0FHRVMnLCAnICcuam9pbihwYWNrYWdlcykpCi0gICAgZC5zZXRWYXIoJ0FMTE9XX0VNUFRZXyR7UE59LW1vZHVsZXMnLCAnMScpCi19Ci0KLSMgRmlsZXMgbmVlZGVkIHRvIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAotCi1kb19jcmVhdGVfbWFuaWZlc3QoKSB7Ci0gICAgIyBUaGlzIHRhc2sgc2hvdWxkIGJlIHJ1biB3aXRoIGV2ZXJ5IG5ldyByZWxlYXNlIG9mIFB5dGhvbi4KLSAgICAjIFdlIG11c3QgZW5zdXJlIHRoYXQgUEFDS0FHRUNPTkZJRyBlbmFibGVzIGV2ZXJ5dGhpbmcgd2hlbiBjcmVhdGluZwotICAgICMgYSBuZXcgbWFuaWZlc3QsIHRoaXMgaXMgdG8gYmFzZSBvdXIgbmV3IG1hbmlmZXN0IG9uIGEgY29tcGxldGUKLSAgICAjIG5hdGl2ZSBweXRob24gYnVpbGQsIGNvbnRhaW5pbmcgYWxsIGRlcGVuZGVuY2llcywgb3RoZXJ3aXNlIHRoZSB0YXNrCi0gICAgIyB3b250IGJlIGFibGUgdG8gZmluZCB0aGUgcmVxdWlyZWQgZmlsZXMuCi0gICAgIyBlLmcuIEJlcmtlbGV5REIgaXMgYW4gb3B0aW9uYWwgYnVpbGQgZGVwZW5kZW5jeSBzbyBpdCBtYXkgb3IgbWF5IG5vdAotICAgICMgYmUgcHJlc2VudCwgd2UgbXVzdCBlbnN1cmUgaXQgaXMuCi0KLSAgICBjZCAke1dPUktESVJ9Ci0gICAgIyBUaGlzIG5lZWRzIHRvIGJlIGV4ZWN1dGVkIGJ5IHB5dGhvbi1uYXRpdmUgYW5kIE5PVCBieSBIT1NUJ3MgcHl0aG9uCi0gICAgbmF0aXZlcHl0aG9uMyBjcmVhdGVfbWFuaWZlc3QzLnB5ICR7UFlUSE9OX01BSk1JTn0KLSAgICBjcCBweXRob24zLW1hbmlmZXN0Lmpzb24ubmV3ICR7VEhJU0RJUn0vcHl0aG9uMy9weXRob24zLW1hbmlmZXN0Lmpzb24KLX0KLQotIyBiaXRiYWtlIHB5dGhvbiAtYyBjcmVhdGVfbWFuaWZlc3QKLWFkZHRhc2sgZG9fY3JlYXRlX21hbmlmZXN0Ci0KLSMgTWFrZSBzdXJlIHdlIGhhdmUgbmF0aXZlIHB5dGhvbiByZWFkeSB3aGVuIHdlIGNyZWF0ZSBhIG5ldyBtYW5pZmVzdAotZG9fY3JlYXRlX21hbmlmZXN0W2RlcGVuZHNdICs9ICIke1BOfTpkb19wcmVwYXJlX3JlY2lwZV9zeXNyb290IgotZG9fY3JlYXRlX21hbmlmZXN0W2RlcGVuZHNdICs9ICIke1BOfTpkb19wYXRjaCIKLQotIyBtYW51YWwgZGVwZW5kZW5jeSBhZGRpdGlvbnMKLVJSRUNPTU1FTkRTXyR7UE59LWNvcmVfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgbmF0aXZlc2RrLXB5dGhvbjMtbW9kdWxlcyIKLVJSRUNPTU1FTkRTXyR7UE59LWNyeXB0X2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIG9wZW5zc2wgY2EtY2VydGlmaWNhdGVzIgotUlJFQ09NTUVORFNfJHtQTn0tY3J5cHRfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgb3BlbnNzbCBjYS1jZXJ0aWZpY2F0ZXMiCi0KLSMgRm9yIGhpc3RvcmljYWwgcmVhc29ucyBQTiBpcyBlbXB0eSBhbmQgcHJvdmlkZWQgYnkgcHl0aG9uMy1tb2R1bGVzCi1GSUxFU18ke1BOfSA9ICIiCi1SUFJPVklERVNfJHtQTn0tbW9kdWxlcyA9ICIke1BOfSIKLQotRklMRVNfJHtQTn0tcHlkb2MgKz0gIiR7YmluZGlyfS9weWRvYyR7UFlUSE9OX01BSk1JTn0gJHtiaW5kaXJ9L3B5ZG9jMyIKLUZJTEVTXyR7UE59LWlkbGUgKz0gIiR7YmluZGlyfS9pZGxlMyAke2JpbmRpcn0vaWRsZSR7UFlUSE9OX01BSk1JTn0iCi0KLSMgcHJvdmlkZSBweXRob24tcHl2ZW52IGZyb20gcHl0aG9uMy12ZW52Ci1SUFJPVklERVNfJHtQTn0tdmVudiArPSAicHl0aG9uMy1weXZlbnYiCi0KLSMgcGFja2FnZSBsaWJweXRob24zCi1QQUNLQUdFUyA9KyAibGlicHl0aG9uMyBsaWJweXRob24zLXN0YXRpY2RldiIKLUZJTEVTX2xpYnB5dGhvbjMgPSAiJHtsaWJkaXJ9L2xpYnB5dGhvbiouc28uKiIKLUZJTEVTX2xpYnB5dGhvbjMtc3RhdGljZGV2ICs9ICIke3ByZWZpeH0vbGliL3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnLSR7UFlUSE9OX0JJTkFCSX0tKi9saWJweXRob24ke1BZVEhPTl9CSU5BQkl9LmEiCi1JTlNBTkVfU0tJUF8ke1BOfS1kZXYgKz0gImRldi1lbGYiCi0KLSMgY2F0Y2ggYWxsIHRoZSByZXN0ICh1bnNvcnRlZCkKLVBBQ0tBR0VTICs9ICIke1BOfS1taXNjIgotUkRFUEVORFNfJHtQTn0tbWlzYyArPSAicHl0aG9uMy1jb3JlIHB5dGhvbjMtZW1haWwgcHl0aG9uMy1jb2RlY3MgcHl0aG9uMy1weWRvYyBweXRob24zLXBpY2tsZSBweXRob24zLWF1ZGlvIgotUkRFUEVORFNfJHtQTn0tbW9kdWxlc19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBweXRob24zLW1pc2MiCi1SREVQRU5EU18ke1BOfS1tb2R1bGVzX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIHB5dGhvbjMtbWlzYyIKLUZJTEVTXyR7UE59LW1pc2MgPSAiJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0gJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQiCi0KLSMgY2F0Y2ggbWFucGFnZQotUEFDS0FHRVMgKz0gIiR7UE59LW1hbiIKLUZJTEVTXyR7UE59LW1hbiA9ICIke2RhdGFkaXJ9L21hbiIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiJHtQTn0tbW9kdWxlcyAke1BOfS10ZXN0cyB1bnppcCBiemlwMiBsaWJnY2MgdHpkYXRhLWV1cm9wZSBjb3JldXRpbHMgc2VkIgotUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxvY2FsZS1iYXNlLXRyLXRyLmlzby04ODU5LTkiCi1SREVQRU5EU18ke1BOfS10a2ludGVyICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aycsICd0ayB0ay1saWInLCAnJywgZCl9IgotUkRFUEVORFNfJHtQTn0tZGV2ID0gIiIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy44LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uM18zLjguMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hNGExNmZkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbjNfMy44LjIuYmIKQEAgLTAsMCArMSwzNTIgQEAKK1NVTU1BUlkgPSAiVGhlIFB5dGhvbiBQcm9ncmFtbWluZyBMYW5ndWFnZSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucHl0aG9uLm9yZyIKK0xJQ0VOU0UgPSAiUFNGdjIiCitTRUNUSU9OID0gImRldmVsL3B5dGhvbiIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MjAzYTZkYmM4MDJlZTg5NjAyMGE0NzE2MWU3NTk2NDIiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5weXRob24ub3JnL2Z0cC9weXRob24vJHtQVn0vUHl0aG9uLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vY3JlYXRlX21hbmlmZXN0My5weSBcCisgICAgICAgICAgIGZpbGU6Ly9nZXRfbW9kdWxlX2RlcHMzLnB5IFwKKyAgICAgICAgICAgZmlsZTovL3B5dGhvbjMtbWFuaWZlc3QuanNvbiBcCisgICAgICAgICAgIGZpbGU6Ly9jaGVja19idWlsZF9jb21wbGV0ZW5lc3MucHkgXAorICAgICAgICAgICBmaWxlOi8vY2dpX3B5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWFkZC11c3ItbGliLXRlcm1jYXAtdG8tbGlua2VyLWZsYWdzLXRvLWF2b2lkLS5wYXRjaCBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3RrJywgJycsICdmaWxlOi8vYXZvaWRfd2FybmluZ19hYm91dF90a2ludGVyLnBhdGNoJywgZCl9IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LXVzZS10aGUtc2hlbGwtdmVyc2lvbi1vZi1weXRob24tY29uZmlnLXRoYXQtdy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9weXRob24tY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZWZpbGUucHJlLXVzZS1xZW11LXdyYXBwZXItd2hlbi1nYXRoZXJpbmctcHJvZmlsZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1oYXJkY29kZS1saWItYXMtbG9jYXRpb24tZm9yLXNpdGUtcGFja2FnZXMtYW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1weXRob24zLXVzZS1jY19iYXNlbmFtZS10by1yZXBsYWNlLUNDLWZvci1jaGVja2luZy1jLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTGliLXN5c2NvbmZpZy5weS1maXgtYW5vdGhlci1wbGFjZS13aGVyZS1saWItaXMtaGFyZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLWZpeC1Jc3N1ZTM2NDY0LXBhcmFsbGVsLWJ1aWxkLXJhY2UtcHJvYmxlbS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJwby0zNjg1Mi1wcm9wZXItZGV0ZWN0aW9uLW9mLW1pcHMtYXJjaGl0ZWN0dXJlLWZvci0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vY3Jvc3NweXRob25wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3JlZm9ybWF0X3N5c2NvbmZpZy5weSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1GTEFHX1JFRi1hbHdheXMtZm9yLWludGVybmVkLXN0cmluZ3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0X2xvY2FsZS5weS1jb3JyZWN0LXRoZS10ZXN0LW91dHB1dC1mb3JtYXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxNy1zZXR1cC5weS1kby1ub3QtcmVwb3J0LW1pc3NpbmctZGVwZW5kZW5jaWVzLWZvci1kaXNhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc2V0dXAucHktcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2VmaWxlLWRvLW5vdC1jb21waWxlLS5weWMtaW4tcGFyYWxsZWwucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZml4LUxJQlBMLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcHl0aG9uMy1Eby1ub3QtaGFyZGNvZGUtbGliLWZvci1kaXN0dXRpbHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAyMC1jb25maWd1cmUuYWMtc2V0dXAucHktZG8tbm90LWFkZC1hLWN1cnNlcy1pbmNsdWRlLXBhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnBvLTM5NTAzLUNWRS0yMDIwLTg0OTItRml4LUFic3RyYWN0QmFzaWNBdXRoSGFuZGxlci5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc3R1dGlscy1zeXNjb25maWctYXBwZW5kLVNUQUdJTkdfTElCRElSLXB5dGhvbi1zeXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMTItZGlzdHV0aWxzLXByZWZpeC1pcy1pbnNpZGUtc3RhZ2luZy1hcmVhLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtc2VhcmNoLXN5c3RlbS1mb3ItaGVhZGVycy1saWJyYXJpZXMucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJlOWQ2ZWJjOTIxODNhMTc3YjhlOGE1OGNhZDViOGQ2NyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIyNjQ2ZTdkYzIzMzM2MmY1OTcxNGM2MTkzMDE3YmIyZDZmN2IzOGQ2YWI0YTBjYjVmYmFjNWMzNmM0ZDg0NWRmIgorCisjIGV4Y2x1ZGUgcHJlLXJlbGVhc2VzIGZvciBib3RoIHB5dGhvbiAyLnggYW5kIDMueAorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiW1BwXXl0aG9uLSg/UDxwdmVyPlxkKyhcLlxkKykrKS50YXIiCisKK0NWRV9QUk9EVUNUID0gInB5dGhvbiIKKworIyBUaGlzIGlzIG5vdCBleHBsb2l0YWJsZSB3aGVuIGdsaWJjIGhhcyBDVkUtMjAxNi0xMDczOSBmaXhlZC4KK0NWRV9DSEVDS19XSElURUxJU1QgKz0gIkNWRS0yMDE5LTE4MzQ4IgorCitQWVRIT05fTUFKTUlOID0gIjMuOCIKKworUyA9ICIke1dPUktESVJ9L1B5dGhvbi0ke1BWfSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcWVtdSBwdGVzdCBtdWx0aWxpYl9oZWFkZXIgdXBkYXRlLWFsdGVybmF0aXZlcworCitNVUxUSUxJQl9TVUZGSVggPSAiJHtAZC5nZXRWYXIoJ2Jhc2VfbGliZGlyJywxKS5zcGxpdCgnLycpWy0xXX0iCisKK0FMVEVSTkFUSVZFXyR7UE59LWRldiA9ICJweXRob24zLWNvbmZpZyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtweXRob24zLWNvbmZpZ10gPSAiJHtiaW5kaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0tY29uZmlnIgorQUxURVJOQVRJVkVfVEFSR0VUW3B5dGhvbjMtY29uZmlnXSA9ICIke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS1jb25maWctJHtNVUxUSUxJQl9TVUZGSVh9IgorCisKK0RFUEVORFMgPSAiYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIGxpYmZmaSBiemlwMiBvcGVuc3NsIHNxbGl0ZTMgemxpYiB2aXJ0dWFsL2xpYmludGwgeHogdmlydHVhbC9jcnlwdCB1dGlsLWxpbnV4IGxpYnRpcnBjIGxpYm5zbDIiCitERVBFTkRTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIHB5dGhvbjMtbmF0aXZlIgorREVQRU5EU19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBweXRob24zLW5hdGl2ZSIKKworRVhUUkFfT0VDT05GID0gIiAtLXdpdGhvdXQtZW5zdXJlcGlwIC0tZW5hYmxlLXNoYXJlZCIKK0VYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLWJpbmRpcj0ke2JpbmRpcn0vJHtQTn0iCisKK2V4cG9ydCBDUk9TU1BZVEhPTlBBVEg9IiR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkLyIKKworRVhUUkFOQVRJVkVQQVRIICs9ICJweXRob24zLW5hdGl2ZSIKKworQ0FDSEVEX0NPTkZJR1VSRVZBUlMgPSAiIFwKKyAgICAgICAgICAgICAgICBhY19jdl9maWxlX19kZXZfcHRteD15ZXMgXAorICAgICAgICAgICAgICAgIGFjX2N2X2ZpbGVfX2Rldl9wdGM9bm8gXAorICAgICAgICAgICAgICAgIGFjX2N2X3dvcmtpbmdfdHpzZXQ9eWVzIFwKKyIKK3B5dGhvbigpIHsKKyAgICAjIFBHTyBjdXJyZW50bHkgY2F1c2VzIGJ1aWxkcyB0byBub3QgYmUgcmVwcm9kdWNpYmxlLCBzbyBkaXNhYmxlIGl0IGZvcgorICAgICMgbm93LiBTZWUgWU9DVE8gIzEzNDA3CisgICAgaWYgYmIudXRpbHMuY29udGFpbnMoJ01BQ0hJTkVfRkVBVFVSRVMnLCAncWVtdS11c2VybW9kZScsIFRydWUsIEZhbHNlLCBkKSBhbmQgZC5nZXRWYXIoJ0JVSUxEX1JFUFJPRFVDSUJMRV9CSU5BUklFUycpICE9ICcxJzoKKyAgICAgICAgZC5zZXRWYXIoJ1BBQ0tBR0VDT05GSUdfUEdPJywgJ3BnbycpCisgICAgZWxzZToKKyAgICAgICAgZC5zZXRWYXIoJ1BBQ0tBR0VDT05GSUdfUEdPJywgJycpCit9CisKK1BBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAicmVhZGxpbmUgJHtQQUNLQUdFQ09ORklHX1BHT30gZ2RibSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID8/PSAicmVhZGxpbmUgZ2RibSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID8/PSAicmVhZGxpbmUgZ2RibSIKK1BBQ0tBR0VDT05GSUdbcmVhZGxpbmVdID0gIiwscmVhZGxpbmUiCisjIFVzZSBwcm9maWxlIGd1aWRlZCBvcHRpbWlzYXRpb24gYnkgcnVubmluZyBQeUJlbmNoIGluc2lkZSBxZW11LXVzZXIKK1BBQ0tBR0VDT05GSUdbcGdvXSA9ICItLWVuYWJsZS1vcHRpbWl6YXRpb25zLCxxZW11LW5hdGl2ZSIKK1BBQ0tBR0VDT05GSUdbdGtdID0gIiwsdGsiCitQQUNLQUdFQ09ORklHW2dkYm1dID0gIiwsZ2RibSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworICAgIG1rZGlyIC1wICR7Qn0vTW9kdWxlcworICAgIGNhdCA+ICR7Qn0vTW9kdWxlcy9TZXR1cC5sb2NhbCA8PCBFT0YKKypkaXNhYmxlZCoKKyR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dkYm0nLCAnJywgJ19nZGJtIF9kYm0nLCBkKX0KKyR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3JlYWRsaW5lJywgJycsICdyZWFkbGluZScsIGQpfQorRU9GCit9CisKK0NQUEZMQUdTX2FwcGVuZCA9ICIgLUkke1NUQUdJTkdfSU5DRElSfS9uY3Vyc2VzdyAtSSR7U1RBR0lOR19JTkNESVJ9L3V1aWQiCisKK0VYVFJBX09FTUFLRSA9ICdcCisgIFNUQUdJTkdfTElCRElSPSR7U1RBR0lOR19MSUJESVJ9IFwKKyAgU1RBR0lOR19JTkNESVI9JHtTVEFHSU5HX0lOQ0RJUn0gXAorICBMSUI9JHtiYXNlbGlifSBcCisnCisKK2RvX2NvbXBpbGVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7CisgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncGdvJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgICAgICAgICBxZW11X2JpbmFyeT0iJHtAcWVtdV93cmFwcGVyX2NtZGxpbmUoZCwgJyR7U1RBR0lOR19ESVJfVEFSR0VUfScsIFsnJHtCfScsICcke1NUQUdJTkdfRElSX1RBUkdFVH0vJHtiYXNlX2xpYmRpcn0nXSl9IgorICAgICAgICAgICAgICAgIGNhdCA+cGdvLXdyYXBwZXIgPDxFT0YKKyMhL2Jpbi9zaAorY2QgJHtCfQorJHFlbXVfYmluYXJ5ICJcJEAiCitFT0YKKyAgICAgICAgICAgICAgICBjaG1vZCAreCBwZ28td3JhcHBlcgorICAgICAgICBmaQorfQorCitkb19pbnN0YWxsX3ByZXBlbmQoKSB7CisgICAgICAgICR7V09SS0RJUn0vY2hlY2tfYnVpbGRfY29tcGxldGVuZXNzLnB5ICR7VH0vbG9nLmRvX2NvbXBpbGUKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICAgICBvZV9tdWx0aWxpYl9oZWFkZXIgcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9weWNvbmZpZy5oCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICAgICAgIyBNYWtlIHN1cmUgd2UgdXNlIC91c3IvYmluL2VudiBweXRob24KKyAgICAgICAgZm9yIFBZVEhTQ1JJUFQgaW4gYGdyZXAgLXJJbCAke2JpbmRpcn0vJHtQTn0vcHl0aG9uICR7RH0ke2JpbmRpcn0vJHtQTn1gOyBkbworICAgICAgICAgICAgICAgIHNlZCAtaSAtZSAnMXN8XiMhLip8IyEvdXNyL2Jpbi9lbnYgcHl0aG9uM3wnICRQWVRIU0NSSVBUCisgICAgICAgIGRvbmUKKyAgICAgICAgIyBBZGQgYSBzeW1saW5rIHRvIHRoZSBuYXRpdmUgUHl0aG9uIHNvIHRoYXQgc2NyaXB0cyBjYW4ganVzdCBpbnZva2UKKyAgICAgICAgIyAibmF0aXZlcHl0aG9uIiBhbmQgZ2V0IHRoZSByaWdodCBvbmUgd2l0aG91dCBuZWVkaW5nIGFic29sdXRlIHBhdGhzCisgICAgICAgICMgKHRoZXNlIG9mdGVuIGVuZCB1cCB0b28gbG9uZyBmb3IgdGhlICMhIHBhcnNlciBpbiB0aGUga2VybmVsIGFzIHRoZQorICAgICAgICAjIGJ1ZmZlciBpcyAxMjggYnl0ZXMgbG9uZykuCisgICAgICAgIGxuIC1zIHB5dGhvbjMtbmF0aXZlL3B5dGhvbjMgJHtEfSR7YmluZGlyfS9uYXRpdmVweXRob24zCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgICAgICBta2RpciAtcCAke0R9JHtsaWJkaXJ9L3B5dGhvbi1zeXNjb25maWdkYXRhCisgICAgICAgIHN5c2NvbmZpZ2ZpbGU9YGZpbmQgJHtEfSAtbmFtZSBfc3lzY29uZmlnKi5weWAKKyAgICAgICAgY3AgJHN5c2NvbmZpZ2ZpbGUgJHtEfSR7bGliZGlyfS9weXRob24tc3lzY29uZmlnZGF0YS9fc3lzY29uZmlnZGF0YS5weQorCisgICAgICAgIHNlZCAtaSAgXAorICAgICAgICAgICAgICAgIC1lICJzLF4gJ0xJQkRJUicuKiwgJ0xJQkRJUic6ICcke1NUQUdJTkdfTElCRElSfSdcLCxnIiBcCisgICAgICAgICAgICAgICAgLWUgInMsXiAnSU5DTFVERURJUicuKiwgJ0lOQ0xVREVESVInOiAnJHtTVEFHSU5HX0lOQ0RJUn0nXCwsZyIgXAorICAgICAgICAgICAgICAgIC1lICJzLF4gJ0NPTkZJTkNMVURFRElSJy4qLCAnQ09ORklOQ0xVREVESVInOiAnJHtTVEFHSU5HX0lOQ0RJUn0nXCwsZyIgXAorICAgICAgICAgICAgICAgIC1lICIvXiAnSU5DTERJUlNUT01BS0UnL3tOOyBzLC91c3IvaW5jbHVkZSwke1NUQUdJTkdfSU5DRElSfSxnfSIgXAorICAgICAgICAgICAgICAgIC1lICIvXiAnSU5DTFVERVBZJy9zLC91c3IvaW5jbHVkZSwke1NUQUdJTkdfSU5DRElSfSxnIiBcCisgICAgICAgICAgICAgICAgJHtEfSR7bGliZGlyfS9weXRob24tc3lzY29uZmlnZGF0YS9fc3lzY29uZmlnZGF0YS5weQorfQorCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgKCkgeworICAgIGNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfSBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycgUFlUSE9OTk9VU0VSU0lURT0nMScKK30KKworU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIF9zeXNjb25maWdkYXRhLnB5IgorUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCisKK3B5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7CisgICAgICAgICMgUmVtb3ZlIHJlZmVyZW5jZXMgdG8gYnVpbGRtYWNoaW5lIHBhdGhzIGluIHRhcmdldCBNYWtlZmlsZSBhbmQgX3N5c2NvbmZpZ2RhdGEKKyAgICAgICAgc2VkIC1pIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCisgICAgICAgICAgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorICAgICAgICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisgICAgICAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisgICAgICAgICAgICAgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVH06OmcnIFwKKyAgICAgICAgICAgICAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKyAgICAgICAgICAgICAgICAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59JHtQWVRIT05fQUJJfSovTWFrZWZpbGUgXAorICAgICAgICAgICAgICAgICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEqLnB5IFwKKyAgICAgICAgICAgICAgICAke1BLR0R9LyR7YmluZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59LWNvbmZpZworCisgICAgICAgICMgUmVmb3JtYXQgX3N5c2NvbmZpZ2RhdGEgYWZ0ZXIgbW9kaWZ5aW5nIGl0IHNvIHRoYXQgaXQgcmVtYWlucworICAgICAgICAjIHJlcHJvZHVjaWJsZQorICAgICAgICBmb3IgYyBpbiAke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L19zeXNjb25maWdkYXRhKi5weTsgZG8KKyAgICAgICAgICAgIHB5dGhvbjMgJHtXT1JLRElSfS9yZWZvcm1hdF9zeXNjb25maWcucHkgJGMKKyAgICAgICAgZG9uZQorCisgICAgICAgICMgUmVjb21waWxlIF9zeXNjb25maWdkYXRhIGFmdGVyIG1vZGlmeWluZyBpdAorICAgICAgICBjZCAke1BLR0R9CisgICAgICAgIHN5c2NvbmZpZ2ZpbGU9YGZpbmQgLiAtbmFtZSBfc3lzY29uZmlnZGF0YV8qLnB5YAorICAgICAgICAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uMy1uYXRpdmUvcHl0aG9uMyBcCisgICAgICAgICAgICAgLWMgImZyb20gcHlfY29tcGlsZSBpbXBvcnQgY29tcGlsZTsgY29tcGlsZSgnJHN5c2NvbmZpZ2ZpbGUnKSIKKyAgICAgICAgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbjMtbmF0aXZlL3B5dGhvbjMgXAorICAgICAgICAgICAgIC1jICJmcm9tIHB5X2NvbXBpbGUgaW1wb3J0IGNvbXBpbGU7IGNvbXBpbGUoJyRzeXNjb25maWdmaWxlJywgb3B0aW1pemU9MSkiCisgICAgICAgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24zLW5hdGl2ZS9weXRob24zIFwKKyAgICAgICAgICAgICAtYyAiZnJvbSBweV9jb21waWxlIGltcG9ydCBjb21waWxlOyBjb21waWxlKCckc3lzY29uZmlnZmlsZScsIG9wdGltaXplPTIpIgorICAgICAgICBjZCAtCisKKyAgICAgICAgbXYgJHtQS0dEfS8ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS1jb25maWcgJHtQS0dEfS8ke2JpbmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS1jb25maWctJHtNVUxUSUxJQl9TVUZGSVh9CisgICAgICAgIAorICAgICAgICAjUmVtb3ZlIHRoZSB1bm5lZWRlZCBjb3B5IG9mIHRhcmdldCBzeXNjb25maWcgZGF0YQorICAgICAgICBybSAtcmYgJHtQS0dEfS8ke2xpYmRpcn0vcHl0aG9uLXN5c2NvbmZpZ2RhdGEKK30KKworIyBXZSB3YW50IGJ5dGVjb2RlIHByZWNvbXBpbGVkIC5weSBmaWxlcyAoLnB5YydzKSBieSBkZWZhdWx0CisjIGJ1dCB0aGUgdXNlciBtYXkgc2V0IGl0IG9uIHRoZWlyIG93biBjb25mCitJTkNMVURFX1BZQ1MgPz0gIjEiCisKK3B5dGhvbigpeworICAgIGltcG9ydCBjb2xsZWN0aW9ucywganNvbgorCisgICAgZmlsZW5hbWUgPSBvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ1RISVNESVInKSwgJ3B5dGhvbjMnLCAncHl0aG9uMy1tYW5pZmVzdC5qc29uJykKKyAgICAjIFRoaXMgcHl0aG9uIGNoYW5nZXMgdGhlIGRhdGFzdG9yZSBiYXNlZCBvbiB0aGUgY29udGVudHMgb2YgYSBmaWxlLCBzbyBtYXJrCisgICAgIyB0aGF0IGRlcGVuZGVuY3kuCisgICAgYmIucGFyc2UubWFya19kZXBlbmRlbmN5KGQsIGZpbGVuYW1lKQorCisgICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBtYW5pZmVzdF9maWxlOgorICAgICAgICBtYW5pZmVzdF9zdHIgPSAgbWFuaWZlc3RfZmlsZS5yZWFkKCkKKyAgICAgICAganNvbl9zdGFydCA9IG1hbmlmZXN0X3N0ci5maW5kKCcjIEVPQycpICsgNgorICAgICAgICBtYW5pZmVzdF9maWxlLnNlZWsoanNvbl9zdGFydCkKKyAgICAgICAgbWFuaWZlc3Rfc3RyID0gbWFuaWZlc3RfZmlsZS5yZWFkKCkKKyAgICAgICAgcHl0aG9uX21hbmlmZXN0ID0ganNvbi5sb2FkcyhtYW5pZmVzdF9zdHIsIG9iamVjdF9wYWlyc19ob29rPWNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KQorCisgICAgIyBGaXJzdCBzZXQgUlBST1ZJREVTIGZvciAtbmF0aXZlIGNhc2UKKyAgICAjIEhhcmRjb2RlZCBzaW5jZSBpdCBjYW50IGJlIHB5dGhvbjMtbmF0aXZlLWZvbywgc2hvdWxkIGJlIHB5dGhvbjMtZm9vLW5hdGl2ZQorICAgIHBuID0gJ3B5dGhvbjMnCisgICAgcnByb3ZpZGVzID0gZC5nZXRWYXIoJ1JQUk9WSURFUycpLnNwbGl0KCkKKworICAgICMgJHtQTn0tbWlzYy1uYXRpdmUgaXMgbm90IGluIHRoZSBtYW5pZmVzdAorICAgIHJwcm92aWRlcy5hcHBlbmQocG4gKyAnLW1pc2MtbmF0aXZlJykKKworICAgIGZvciBrZXkgaW4gcHl0aG9uX21hbmlmZXN0OgorICAgICAgICBweXBhY2thZ2UgPSBwbiArICctJyArIGtleSArICctbmF0aXZlJworICAgICAgICBpZiBweXBhY2thZ2Ugbm90IGluIHJwcm92aWRlczoKKyAgICAgICAgICAgICAgcnByb3ZpZGVzLmFwcGVuZChweXBhY2thZ2UpCisKKyAgICBkLnNldFZhcignUlBST1ZJREVTX2NsYXNzLW5hdGl2ZScsICcgJy5qb2luKHJwcm92aWRlcykpCisKKyAgICAjIFRoZW4gd29yayBvbiB0aGUgdGFyZ2V0CisgICAgaW5jbHVkZV9weWNzID0gZC5nZXRWYXIoJ0lOQ0xVREVfUFlDUycpCisKKyAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKKyAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCisKKyAgICBuZXdwYWNrYWdlcz1bXQorICAgIGZvciBrZXkgaW4gcHl0aG9uX21hbmlmZXN0OgorICAgICAgICBweXBhY2thZ2UgPSBwbiArICctJyArIGtleQorCisgICAgICAgIGlmIHB5cGFja2FnZSBub3QgaW4gcGFja2FnZXM6CisgICAgICAgICAgICAjIFdlIG5lZWQgdG8gcHJlcGVuZCwgb3RoZXJ3aXNlIHB5dGhvbi1taXNjIGdldHMgZXZlcnl0aGluZworICAgICAgICAgICAgIyBzbyB3ZSB1c2UgYSBuZXcgdmFyaWFibGUKKyAgICAgICAgICAgIG5ld3BhY2thZ2VzLmFwcGVuZChweXBhY2thZ2UpCisKKyAgICAgICAgIyAiQnVpbGQiIHB5dGhvbidzIG1hbmlmZXN0IEZJTEVTLCBSREVQRU5EUyBhbmQgU1VNTUFSWQorICAgICAgICBkLnNldFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJycpCisgICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsnZmlsZXMnXToKKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnICcgKyB2YWx1ZSkKKworICAgICAgICAjIEFkZCBjYWNoZWQgZmlsZXMKKyAgICAgICAgaWYgaW5jbHVkZV9weWNzID09ICcxJzoKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsnY2FjaGVkJ106CisgICAgICAgICAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdGSUxFU18nICsgcHlwYWNrYWdlLCAnICcgKyB2YWx1ZSkKKworICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ3JkZXBlbmRzJ106CisgICAgICAgICAgICAjIE1ha2UgaXQgd29yayB3aXRoIG9yIHdpdGhvdXQgJFBOCisgICAgICAgICAgICBpZiAnJHtQTn0nIGluIHZhbHVlOgorICAgICAgICAgICAgICAgIHZhbHVlPXZhbHVlLnNwbGl0KCctJywgMSlbMV0KKyAgICAgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgcHlwYWNrYWdlLCAnICcgKyBwbiArICctJyArIHZhbHVlKQorCisgICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XS5nZXQoJ3JyZWNvbW1lbmRzJywgKCkpOgorICAgICAgICAgICAgaWYgJyR7UE59JyBpbiB2YWx1ZToKKyAgICAgICAgICAgICAgICB2YWx1ZT12YWx1ZS5zcGxpdCgnLScsIDEpWzFdCisgICAgICAgICAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfJyArIHB5cGFja2FnZSwgJyAnICsgcG4gKyAnLScgKyB2YWx1ZSkKKworICAgICAgICBkLnNldFZhcignU1VNTUFSWV8nICsgcHlwYWNrYWdlLCBweXRob25fbWFuaWZlc3Rba2V5XVsnc3VtbWFyeSddKQorCisgICAgIyBQcmVwZW5kaW5nIHNvIHRvIGF2b2lkIHB5dGhvbi1taXNjIGdldHRpbmcgZXZlcnl0aGluZworICAgIHBhY2thZ2VzID0gbmV3cGFja2FnZXMgKyBwYWNrYWdlcworICAgIGQuc2V0VmFyKCdQQUNLQUdFUycsICcgJy5qb2luKHBhY2thZ2VzKSkKKyAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJHtQTn0tbW9kdWxlcycsICcxJykKKyAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJHtQTn0tcGtndXRpbCcsICcxJykKK30KKworIyBGaWxlcyBuZWVkZWQgdG8gY3JlYXRlIGEgbmV3IG1hbmlmZXN0CisKK2RvX2NyZWF0ZV9tYW5pZmVzdCgpIHsKKyAgICAjIFRoaXMgdGFzayBzaG91bGQgYmUgcnVuIHdpdGggZXZlcnkgbmV3IHJlbGVhc2Ugb2YgUHl0aG9uLgorICAgICMgV2UgbXVzdCBlbnN1cmUgdGhhdCBQQUNLQUdFQ09ORklHIGVuYWJsZXMgZXZlcnl0aGluZyB3aGVuIGNyZWF0aW5nCisgICAgIyBhIG5ldyBtYW5pZmVzdCwgdGhpcyBpcyB0byBiYXNlIG91ciBuZXcgbWFuaWZlc3Qgb24gYSBjb21wbGV0ZQorICAgICMgbmF0aXZlIHB5dGhvbiBidWlsZCwgY29udGFpbmluZyBhbGwgZGVwZW5kZW5jaWVzLCBvdGhlcndpc2UgdGhlIHRhc2sKKyAgICAjIHdvbnQgYmUgYWJsZSB0byBmaW5kIHRoZSByZXF1aXJlZCBmaWxlcy4KKyAgICAjIGUuZy4gQmVya2VsZXlEQiBpcyBhbiBvcHRpb25hbCBidWlsZCBkZXBlbmRlbmN5IHNvIGl0IG1heSBvciBtYXkgbm90CisgICAgIyBiZSBwcmVzZW50LCB3ZSBtdXN0IGVuc3VyZSBpdCBpcy4KKworICAgIGNkICR7V09SS0RJUn0KKyAgICAjIFRoaXMgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgYnkgcHl0aG9uLW5hdGl2ZSBhbmQgTk9UIGJ5IEhPU1QncyBweXRob24KKyAgICBuYXRpdmVweXRob24zIGNyZWF0ZV9tYW5pZmVzdDMucHkgJHtQWVRIT05fTUFKTUlOfQorICAgIGNwIHB5dGhvbjMtbWFuaWZlc3QuanNvbi5uZXcgJHtUSElTRElSfS9weXRob24zL3B5dGhvbjMtbWFuaWZlc3QuanNvbgorfQorCisjIGJpdGJha2UgcHl0aG9uIC1jIGNyZWF0ZV9tYW5pZmVzdAorYWRkdGFzayBkb19jcmVhdGVfbWFuaWZlc3QKKworIyBNYWtlIHN1cmUgd2UgaGF2ZSBuYXRpdmUgcHl0aG9uIHJlYWR5IHdoZW4gd2UgY3JlYXRlIGEgbmV3IG1hbmlmZXN0Citkb19jcmVhdGVfbWFuaWZlc3RbZGVwZW5kc10gKz0gIiR7UE59OmRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QiCitkb19jcmVhdGVfbWFuaWZlc3RbZGVwZW5kc10gKz0gIiR7UE59OmRvX3BhdGNoIgorCisjIG1hbnVhbCBkZXBlbmRlbmN5IGFkZGl0aW9ucworUlJFQ09NTUVORFNfJHtQTn0tY29yZV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBuYXRpdmVzZGstcHl0aG9uMy1tb2R1bGVzIgorUlJFQ09NTUVORFNfJHtQTn0tY3J5cHRfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgb3BlbnNzbCBjYS1jZXJ0aWZpY2F0ZXMiCitSUkVDT01NRU5EU18ke1BOfS1jcnlwdF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBvcGVuc3NsIGNhLWNlcnRpZmljYXRlcyIKKworIyBGb3IgaGlzdG9yaWNhbCByZWFzb25zIFBOIGlzIGVtcHR5IGFuZCBwcm92aWRlZCBieSBweXRob24zLW1vZHVsZXMKK0ZJTEVTXyR7UE59ID0gIiIKK1JQUk9WSURFU18ke1BOfS1tb2R1bGVzID0gIiR7UE59IgorCitGSUxFU18ke1BOfS1weWRvYyArPSAiJHtiaW5kaXJ9L3B5ZG9jJHtQWVRIT05fTUFKTUlOfSAke2JpbmRpcn0vcHlkb2MzIgorRklMRVNfJHtQTn0taWRsZSArPSAiJHtiaW5kaXJ9L2lkbGUzICR7YmluZGlyfS9pZGxlJHtQWVRIT05fTUFKTUlOfSIKKworIyBwcm92aWRlIHB5dGhvbi1weXZlbnYgZnJvbSBweXRob24zLXZlbnYKK1JQUk9WSURFU18ke1BOfS12ZW52ICs9ICJweXRob24zLXB5dmVudiIKKworIyBwYWNrYWdlIGxpYnB5dGhvbjMKK1BBQ0tBR0VTID0rICJsaWJweXRob24zIGxpYnB5dGhvbjMtc3RhdGljZGV2IgorRklMRVNfbGlicHl0aG9uMyA9ICIke2xpYmRpcn0vbGlicHl0aG9uKi5zby4qIgorRklMRVNfbGlicHl0aG9uMy1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy0ke1BZVEhPTl9NQUpNSU59LSovbGlicHl0aG9uJHtQWVRIT05fTUFKTUlOfS5hIgorSU5TQU5FX1NLSVBfJHtQTn0tZGV2ICs9ICJkZXYtZWxmIgorCisjIGNhdGNoIGFsbCB0aGUgcmVzdCAodW5zb3J0ZWQpCitQQUNLQUdFUyArPSAiJHtQTn0tbWlzYyIKK1JERVBFTkRTXyR7UE59LW1pc2MgKz0gInB5dGhvbjMtY29yZSBweXRob24zLWVtYWlsIHB5dGhvbjMtY29kZWNzIHB5dGhvbjMtcHlkb2MgcHl0aG9uMy1waWNrbGUgcHl0aG9uMy1hdWRpbyIKK1JERVBFTkRTXyR7UE59LW1vZHVsZXNfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgcHl0aG9uMy1taXNjIgorUkRFUEVORFNfJHtQTn0tbW9kdWxlc19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBweXRob24zLW1pc2MiCitGSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59ICR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2xpYi1keW5sb2FkIgorCisjIGNhdGNoIG1hbnBhZ2UKK1BBQ0tBR0VTICs9ICIke1BOfS1tYW4iCitGSUxFU18ke1BOfS1tYW4gPSAiJHtkYXRhZGlyfS9tYW4iCisKKyMgU2VlIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMTg3NDggYW5kIGh0dHBzOi8vYnVncy5weXRob24ub3JnL2lzc3VlMzczOTUKK1JERVBFTkRTX2xpYnB5dGhvbjNfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxpYmdjYyIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gIiR7UE59LW1vZHVsZXMgJHtQTn0tdGVzdHMgdW56aXAgYnppcDIgbGliZ2NjIHR6ZGF0YS1ldXJvcGUgY29yZXV0aWxzIHNlZCIKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBsb2NhbGUtYmFzZS10ci10ci5pc28tODg1OS05IgorUkRFUEVORFNfJHtQTn0tdGtpbnRlciArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAndGsnLCAndGsgdGstbGliJywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCisKK1JERVBFTkRTXyR7UE59LXRlc3RzX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGJhc2giCitSREVQRU5EU18ke1BOfS10ZXN0c19hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBiYXNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcHl0aG9uL3B5dGhvbl8yLjcuMTcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWI4NTZhNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9weXRob24vcHl0aG9uXzIuNy4xNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2NyArMCwwIEBACi1yZXF1aXJlIHB5dGhvbi5pbmMKLQotREVQRU5EUyA9ICJweXRob24tbmF0aXZlIGxpYmZmaSBiemlwMiBnZGJtIG9wZW5zc2wgXAotICAgICAgICAgICByZWFkbGluZSBzcWxpdGUzIHpsaWIgdmlydHVhbC9jcnlwdCIKLQotRElTVFJPX1NSQ19VUkkgPz0gImZpbGU6Ly9zaXRlY3VzdG9taXplLnB5IgotRElTVFJPX1NSQ19VUklfbGludXhzdGRiYXNlID0gIiIKLVNSQ19VUkkgKz0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMS11c2UtcHJvcGVyLXRvb2xzLWZvci1jcm9zcy1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMy1maXgtdGtpbnRlci1kZXRlY3Rpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDYtYXZvaWRfdXNyX2xpYl90ZXJtY2FwX3BhdGhfaW5fbGlua2luZy5wYXRjaCBcCi0gICAgICAgICAgICR7RElTVFJPX1NSQ19VUkl9IFwKLSAgICAgICAgICAgZmlsZTovL211bHRpbGliLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NnaV9weS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zZXR1cF9weV9za2lwX2Nyb3NzX2ltcG9ydF9jaGVjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hZGQtbWQ1bW9kdWxlLXN1cHBvcnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vaG9zdF9pbmNsdWRlX2NvbnRhbWluYXRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4X2Zvcl91c2luZ19kaWZmZXJlbnRfbGliZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NldHVwdHdlYWtzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2NoZWNrLWlmLXRhcmdldC1pcy02NGItbm90LWhvc3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vc2VhcmNoX2RiX2hfaW5faW5jX2RpcnNfYW5kX2F2b2lkX3dhcm5pbmcucGF0Y2ggXAotICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aycsICcnLCAnZmlsZTovL2F2b2lkX3dhcm5pbmdfYWJvdXRfdGtpbnRlci5wYXRjaCcsIGQpfSBcCi0gICAgICAgICAgIGZpbGU6Ly9hdm9pZF93YXJuaW5nX2Zvcl9zdW5vc19zcGVjaWZpY19tb2R1bGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcHl0aG9uLTIuNy4zLXJlbW92ZS1ic2RiLXJwYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9wYXJhbGxlbC1tYWtlaW5zdC1jcmVhdGUtYmluZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VzZV9zeXNyb290X25jdXJzZXNfaW5zdGVhZF9vZl9ob3N0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FkZC1DUk9TU1BZVEhPTlBBVEgtZm9yLVBZVEhPTl9GT1JfQlVJTEQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcGFzcy1taXNzaW5nLWxpYnJhcmllcy10by1FeHRlbnNpb24tZm9yLW11bC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9zdXBwb3J0X1NPVVJDRV9EQVRFX0VQT0NIX2luX3B5X2NvbXBpbGVfMi43LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Zsb2F0LWVuZGlhbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXB5dGhvbjItdXNlLWNjX2Jhc2VuYW1lLXRvLXJlcGxhY2UtQ0MtZm9yLWNoZWNraW5nLWMucGF0Y2ggXAotIgotCi1TID0gIiR7V09SS0RJUn0vUHl0aG9uLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBtdWx0aWxpYl9oZWFkZXIgcHl0aG9uLWRpciBweXRob25uYXRpdmUgcHRlc3QKLQotQ09ORklHVVJFT1BUUyArPSAiIC0td2l0aC1zeXN0ZW0tZmZpICIKLQotRVhUUkFfT0VDT05GICs9ICJhY19jdl9maWxlX19kZXZfcHRteD15ZXMgYWNfY3ZfZmlsZV9fZGV2X3B0Yz1ubyBhY19jdl93b3JraW5nX3R6c2V0PXllcyIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImJkYiIKLVBBQ0tBR0VDT05GSUdbYmRiXSA9ICIsLGRiIgotUEFDS0FHRUNPTkZJR1t0a10gPSAiLCx0ayIKLQotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlybSAtZiAke1N9L01ha2VmaWxlLm9yaWcKLSAgICAgICAgYXV0b3JlY29uZiAtV2Nyb3NzIC0tdmVyYm9zZSAtLWluc3RhbGwgLS1mb3JjZSAtLWV4Y2x1ZGU9YXV0b3BvaW50IC4uL1B5dGhvbi0ke1BWfS9Nb2R1bGVzL19jdHlwZXMvbGliZmZpCi19Ci0KLWRvX2NvbXBpbGUoKSB7Ci0gICAgICAgICMgcmVnZW5lcmF0ZSBwbGF0Zm9ybSBzcGVjaWZpYyBmaWxlcywgYmVjYXVzZSB0aGV5IGRlcGVuZCBvbiBzeXN0ZW0gaGVhZGVycwotICAgICAgICBjZCAke1N9L0xpYi9wbGF0LWxpbnV4MgotICAgICAgICBpbmNsdWRlPSR7U1RBR0lOR19JTkNESVJ9ICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCi0gICAgICAgICAgICAgICAgJHtTfS9Ub29scy9zY3JpcHRzL2gycHkucHkgLWkgJyh1X2xvbmcpJyBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vZGxmY24uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbGludXgvY2Ryb20uaCBcCi0gICAgICAgICAgICAgICAgJHtTVEFHSU5HX0lOQ0RJUn0vbmV0aW5ldC9pbi5oIFwKLSAgICAgICAgICAgICAgICAke1NUQUdJTkdfSU5DRElSfS9zeXMvdHlwZXMuaAotICAgICAgICBzZWQgLWUgJ3MsJHtTVEFHSU5HX0RJUl9IT1NUfSwsZycgLWkgKi5weQotICAgICAgICBjZCAtCi0KLQkjIHJlbW92ZSBhbnkgYm9ndXMgTERfTElCUkFSWV9QQVRICi0Jc2VkIC1pIC1lIHMsUlVOU0hBUkVEPS4qLFJVTlNIQVJFRD0sIE1ha2VmaWxlCi0KLQlpZiBbICEgLWYgTWFrZWZpbGUub3JpZyBdOyB0aGVuCi0JCWluc3RhbGwgLW0gMDY0NCBNYWtlZmlsZSBNYWtlZmlsZS5vcmlnCi0JZmkKLQlzZWQgLWkgLWUgJ3MjXkxERkxBR1M9LiojTERGTEFHUz0ke0xERkxBR1N9IC1MLiAtTCR7U1RBR0lOR19MSUJESVJ9I2cnIFwKLQkJLWUgJ3MsbGliZGlyPSR7bGliZGlyfSxsaWJkaXI9JHtTVEFHSU5HX0xJQkRJUn0sZycgXAotCQktZSAncyxsaWJleGVjZGlyPSR7bGliZXhlY2Rpcn0sbGliZXhlY2Rpcj0ke1NUQUdJTkdfRElSX0hPU1R9JHtsaWJleGVjZGlyfSxnJyBcCi0JCS1lICdzLF5MSUJESVI9LiosTElCRElSPSR7U1RBR0lOR19MSUJESVJ9LGcnIFwKLQkJLWUgJ3MsaW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9LGluY2x1ZGVkaXI9JHtTVEFHSU5HX0lOQ0RJUn0sZycgXAotCQktZSAncyxeSU5DTFVERURJUj0uKixJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKLQkJLWUgJ3MsXkNPTkZJTkNMVURFRElSPS4qLENPTkZJTkNMVURFPSR7U1RBR0lOR19JTkNESVJ9LGcnIFwKLQkJTWFrZWZpbGUKLQkjIHNhdmUgY29weSBvZiBpdCBub3csIGJlY2F1c2UgaWYgd2UgZG8gaXQgaW4gZG9faW5zdGFsbCBhbmQgCi0JIyB0aGVuIGNhbGwgZG9faW5zdGFsbCB0d2ljZSB3ZSBnZXQgTWFrZWZpbGUub3JpZyA9PSBNYWtlZmlsZS5zeXNyb290Ci0JaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlIE1ha2VmaWxlLnN5c3Jvb3QKLQotCWV4cG9ydCBDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IgotCWV4cG9ydCBQWVRIT05CVUlMRERJUj0iJHtCfSIKLQotCW9lX3J1bm1ha2UgSE9TVFBHRU49JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcGdlbiBcCi0JCUhPU1RQWVRIT049JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9L3B5dGhvbi1uYXRpdmUvcHl0aG9uIFwKLQkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlPUFQ9IiR7Q0ZMQUdTfSIKLX0KLQotZG9faW5zdGFsbCgpIHsKLQkjIG1ha2UgaW5zdGFsbCBuZWVkcyB0aGUgb3JpZ2luYWwgTWFrZWZpbGUsIG9yIG90aGVyd2lzZSB0aGUgaW5jbHVlcyB3b3VsZAotCSMgZ28gdG8gJHtEfSR7U1RBR0lORy4uLn0vLi4uCi0JaW5zdGFsbCAtbSAwNjQ0IE1ha2VmaWxlLm9yaWcgTWFrZWZpbGUKLQotCWV4cG9ydCBDUk9TU19DT01QSUxFPSIke1RBUkdFVF9QUkVGSVh9IgotCWV4cG9ydCBQWVRIT05CVUlMRERJUj0iJHtCfSIKLQotCSMgQWZ0ZXIgc3dpenpsaW5nIHRoZSBtYWtlZmlsZSwgd2UgbmVlZCB0byBydW4gdGhlIGJ1aWxkIGFnYWluLgotCSMgaW5zdGFsbCBjYW4gcmFjZSB3aXRoIHRoZSBidWlsZCBzbyB3ZSBoYXZlIHRvIHJ1biB0aGlzIGZpcnN0LCB0aGVuIGluc3RhbGwKLQlvZV9ydW5tYWtlIEhPU1RQR0VOPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3BnZW4gXAotCQlIT1NUUFlUSE9OPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24tbmF0aXZlL3B5dGhvbiBcCi0JCUNST1NTUFlUSE9OUEFUSD0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9saWItZHlubG9hZC8gXAotCQlTVEFHSU5HX0xJQkRJUj0ke1NUQUdJTkdfTElCRElSfSBcCi0JCVNUQUdJTkdfSU5DRElSPSR7U1RBR0lOR19JTkNESVJ9IFwKLQkJU1RBR0lOR19CQVNFTElCRElSPSR7U1RBR0lOR19CQVNFTElCRElSfSBcCi0JCURFU1RESVI9JHtEfSBMSUJESVI9JHtsaWJkaXJ9Ci0JCi0Jb2VfcnVubWFrZSBIT1NUUEdFTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9wZ2VuIFwKLQkJSE9TVFBZVEhPTj0ke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uLW5hdGl2ZS9weXRob24gXAotCQlDUk9TU1BZVEhPTlBBVEg9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vbGliLWR5bmxvYWQvIFwKLQkJU1RBR0lOR19MSUJESVI9JHtTVEFHSU5HX0xJQkRJUn0gXAotCQlTVEFHSU5HX0lOQ0RJUj0ke1NUQUdJTkdfSU5DRElSfSBcCi0JCVNUQUdJTkdfQkFTRUxJQkRJUj0ke1NUQUdJTkdfQkFTRUxJQkRJUn0gXAotCQlERVNURElSPSR7RH0gTElCRElSPSR7bGliZGlyfSBpbnN0YWxsCi0KLQlpbnN0YWxsIC1tIDA2NDQgTWFrZWZpbGUuc3lzcm9vdCAke0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZQotCi0JaWYgWyAtZSAke1dPUktESVJ9L3NpdGVjdXN0b21pemUucHkgXTsgdGhlbgotCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zaXRlY3VzdG9taXplLnB5ICR7RH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0KLQlmaQotCi0Jb2VfbXVsdGlsaWJfaGVhZGVyIHB5dGhvbiR7UFlUSE9OX01BSk1JTn0vcHljb25maWcuaAotCi0gICAgaWYgWyAteiAiJHtAYmIudXRpbHMuZmlsdGVyKCdQQUNLQUdFQ09ORklHJywgJ2JkYicsIGQpfSIgXTsgdGhlbgotICAgICAgICBybSAtcmYgJHtEfS8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9ic2RkYgotICAgIGZpCi0KLSAgICAjIFB5dGhvbiAzLnggdmVyc2lvbiBvZiAydG8zIGlzIG5vdyB0aGUgZGVmYXVsdAotICAgIG12ICR7RH0vJHtiaW5kaXJ9LzJ0bzMgJHtEfS8ke2JpbmRpcn0vMnRvMy0ke1BZVEhPTl9NQUpNSU59Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayAoKSB7Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9weXRob24yLjcgUFlUSE9OSE9NRT0nJHtwcmVmaXh9JyBURVJNSU5GT19ESVJTPScke3N5c2NvbmZkaXJ9L3Rlcm1pbmZvOi9ldGMvdGVybWluZm86L3Vzci9zaGFyZS90ZXJtaW5mbzovdXNyL3NoYXJlL21pc2MvdGVybWluZm86L2xpYi90ZXJtaW5mbycgUFlUSE9OTk9VU0VSU0lURT0nMScKLX0KLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gIk1ha2VmaWxlIgotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJweV9wYWNrYWdlX3ByZXByb2Nlc3MiCi0KLXB5X3BhY2thZ2VfcHJlcHJvY2VzcyAoKSB7Ci0JIyBjb3B5IGJhY2sgdGhlIG9sZCBNYWtlZmlsZSB0byBmaXggdGFyZ2V0IHBhY2thZ2UKLQlpbnN0YWxsIC1tIDA2NDQgJHtCfS9NYWtlZmlsZS5vcmlnICR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vY29uZmlnL01ha2VmaWxlCi0KLQkjIFJlbW92ZSByZWZlcmVuY2VzIHRvIGJ1aWxkbWFjaGluZSBwYXRocyBpbiB0YXJnZXQgTWFrZWZpbGUgYW5kIF9zeXNjb25maWdkYXRhCi0Jc2VkIC1pIC1lICdzOi0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH06OmcnIC1lIHM6Jy0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9Jzo6ZyBcCi0JCS1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKLQkJLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLQkJLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCi0JCS1lICdzOiR7UkVDSVBFX1NZU1JPT1R9OjpnJyBcCi0JCS1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAotCQkke1BLR0R9LyR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59L2NvbmZpZy9NYWtlZmlsZSBcCi0JCSR7UEtHRH0vJHtsaWJkaXJ9L3B5dGhvbiR7UFlUSE9OX01BSk1JTn0vX3N5c2NvbmZpZ2RhdGEucHkKLQkoY2QgJHtQS0dEfTsgcHl0aG9uIC1tIHB5X2NvbXBpbGUgLi8ke2xpYmRpcn0vcHl0aG9uJHtQWVRIT05fTUFKTUlOfS9fc3lzY29uZmlnZGF0YS5weSkKLX0KLQotUEFDS0FHRVNfcmVtb3ZlID0gIiR7UE59IgotCi0jIG1hbnVhbCBkZXBlbmRlbmN5IGFkZGl0aW9ucwotUlBST1ZJREVTXyR7UE59LW1vZHVsZXMgPSAiJHtQTn0iCi1SUkVDT01NRU5EU18ke1BOfS1jb3JlX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIG5hdGl2ZXNkay1weXRob24tbW9kdWxlcyIKLVJSRUNPTU1FTkRTXyR7UE59LWNyeXB0ID0gIm9wZW5zc2wiCi0KLSMgcGFja2FnZSBsaWJweXRob24yCi1QQUNLQUdFUyA9KyAibGliJHtCUE59MiIKLUZJTEVTX2xpYiR7QlBOfTIgPSAiJHtsaWJkaXJ9L2xpYnB5dGhvbiouc28uKiIKLQotIyBjYXRjaCBhbGwgdGhlIHJlc3QgKHVuc29ydGVkKQotUEFDS0FHRVMgKz0gIiR7UE59LW1pc2MiCi1GSUxFU18ke1BOfS1taXNjID0gIiR7bGliZGlyfS9weXRob24ke1BZVEhPTl9NQUpNSU59IgotUkRFUEVORFNfJHtQTn0tbW9kdWxlcyArPSAiJHtQTn0tbWlzYyIKLQotIyBwdGVzdAotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiJHtQTn0tbW9kdWxlcyAke1BOfS10ZXN0cyB1bnppcCB0emRhdGEtZXVyb3BlIGNvcmV1dGlscyBzZWQiCi1SREVQRU5EU18ke1BOfS10a2ludGVyICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd0aycsICd0ayB0ay1saWInLCAnJywgZCl9IgotIyBjYXRjaCBtYW5wYWdlCi1QQUNLQUdFUyArPSAiJHtQTn0tbWFuIgotRklMRVNfJHtQTn0tbWFuID0gIiR7ZGF0YWRpcn0vbWFuIgotCi0jIE5hc3R5IGJ1dCBpZiBiZGIgaXNuJ3QgZW5hYmxlZCB0aGUgcGFja2FnZSB3b24ndCBiZSBnZW5lcmF0ZWQKLVJERVBFTkRTXyR7UE59LW1vZHVsZXNfcmVtb3ZlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2JkYicsICcnLCAnJHtQTn0tYnNkZGInLCBkKX0iCi0KLVJERVBFTkRTXyR7UE59LWRldiA9ICIiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgotCi0jIFdlIHdhbnQgYnl0ZWNvZGUgcHJlY29tcGlsZWQgLnB5IGZpbGVzICgucHljJ3MpIGJ5IGRlZmF1bHQKLSMgYnV0IHRoZSB1c2VyIG1heSBzZXQgaXQgb24gdGhlaXIgb3duIGNvbmYKLQotSU5DTFVERV9QWUNTID89ICIxIgotCi1weXRob24oKXsKLSAgICBpbXBvcnQgY29sbGVjdGlvbnMsIGpzb24KLQotICAgIGZpbGVuYW1lID0gb3MucGF0aC5qb2luKGQuZ2V0VmFyKCdUSElTRElSJyksICdweXRob24nLCAncHl0aG9uMi1tYW5pZmVzdC5qc29uJykKLSAgICAjIFRoaXMgcHl0aG9uIGNoYW5nZXMgdGhlIGRhdGFzdG9yZSBiYXNlZCBvbiB0aGUgY29udGVudHMgb2YgYSBmaWxlLCBzbyBtYXJrCi0gICAgIyB0aGF0IGRlcGVuZGVuY3kuCi0gICAgYmIucGFyc2UubWFya19kZXBlbmRlbmN5KGQsIGZpbGVuYW1lKQotCi0gICAgd2l0aCBvcGVuKGZpbGVuYW1lKSBhcyBtYW5pZmVzdF9maWxlOgotICAgICAgICBtYW5pZmVzdF9zdHIgPSAgbWFuaWZlc3RfZmlsZS5yZWFkKCkKLSAgICAgICAganNvbl9zdGFydCA9IG1hbmlmZXN0X3N0ci5maW5kKCcjIEVPQycpICsgNgotICAgICAgICBtYW5pZmVzdF9maWxlLnNlZWsoanNvbl9zdGFydCkKLSAgICAgICAgbWFuaWZlc3Rfc3RyID0gbWFuaWZlc3RfZmlsZS5yZWFkKCkKLSAgICAgICAgcHl0aG9uX21hbmlmZXN0ID0ganNvbi5sb2FkcyhtYW5pZmVzdF9zdHIsIG9iamVjdF9wYWlyc19ob29rPWNvbGxlY3Rpb25zLk9yZGVyZWREaWN0KQotCi0gICAgaW5jbHVkZV9weWNzID0gZC5nZXRWYXIoJ0lOQ0xVREVfUFlDUycpCi0KLSAgICBwYWNrYWdlcyA9IGQuZ2V0VmFyKCdQQUNLQUdFUycpLnNwbGl0KCkKLSAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCi0KLSAgICBuZXdwYWNrYWdlcz1bXQotCi0gICAgZm9yIGtleSBpbiBweXRob25fbWFuaWZlc3Q6Ci0gICAgICAgIHB5cGFja2FnZT0gcG4gKyAnLScgKyBrZXkKLQotICAgICAgICBpZiBweXBhY2thZ2Ugbm90IGluIHBhY2thZ2VzOgotICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHByZXBlbmQsIG90aGVyd2lzZSBweXRob24tbWlzYyBnZXRzIGV2ZXJ5dGhpbmcKLSAgICAgICAgICAgICMgc28gd2UgdXNlIGEgbmV3IHZhcmlhYmxlCi0gICAgICAgICAgICBuZXdwYWNrYWdlcy5hcHBlbmQocHlwYWNrYWdlKQotCi0gICAgICAgICMgIkJ1aWxkIiBweXRob24ncyBtYW5pZmVzdCBGSUxFUywgUkRFUEVORFMgYW5kIFNVTU1BUlkKLSAgICAgICAgZC5zZXRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcnKQotICAgICAgICBmb3IgdmFsdWUgaW4gcHl0aG9uX21hbmlmZXN0W2tleV1bJ2ZpbGVzJ106Ci0gICAgICAgICAgICBkLmFwcGVuZFZhcignRklMRVNfJyArIHB5cGFja2FnZSwgJyAnICsgdmFsdWUpCi0gICAgICAgICAgICBpZiBpbmNsdWRlX3B5Y3MgPT0gJzEnOgotICAgICAgICAgICAgICAgIGlmIHZhbHVlLmVuZHN3aXRoKCcucHknKToKLSAgICAgICAgICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ0ZJTEVTXycgKyBweXBhY2thZ2UsICcgJyArIHZhbHVlICsgJ2MnKQotCi0gICAgICAgIGZvciB2YWx1ZSBpbiBweXRob25fbWFuaWZlc3Rba2V5XVsncmRlcGVuZHMnXToKLSAgICAgICAgICAgICMgTWFrZSBpdCB3b3JrIHdpdGggb3Igd2l0aG91dCAkUE4KLSAgICAgICAgICAgIGlmICcke1BOfScgaW4gdmFsdWU6Ci0gICAgICAgICAgICAgICAgdmFsdWU9dmFsdWUuc3BsaXQoJy0nKVsxXQotICAgICAgICAgICAgZC5hcHBlbmRWYXIoJ1JERVBFTkRTXycgKyBweXBhY2thZ2UsICcgJyArIHBuICsgJy0nICsgdmFsdWUpCi0gICAgICAgIGQuc2V0VmFyKCdTVU1NQVJZXycgKyBweXBhY2thZ2UsIHB5dGhvbl9tYW5pZmVzdFtrZXldWydzdW1tYXJ5J10pCi0KLSAgICAjIFByZXBlbmRpbmcgc28gdG8gYXZvaWQgcHl0aG9uLW1pc2MgZ2V0dGluZyBldmVyeXRoaW5nCi0gICAgcGFja2FnZXMgPSBuZXdwYWNrYWdlcyArIHBhY2thZ2VzCi0gICAgZC5zZXRWYXIoJ1BBQ0tBR0VTJywgJyAnLmpvaW4ocGFja2FnZXMpKQotICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzJywgJzEnKQotfQotCi0jIEZpbGVzIG5lZWRlZCB0byBjcmVhdGUgYSBuZXcgbWFuaWZlc3QKLVNSQ19VUkkgKz0gImZpbGU6Ly9jcmVhdGVfbWFuaWZlc3QyLnB5IGZpbGU6Ly9nZXRfbW9kdWxlX2RlcHMyLnB5IGZpbGU6Ly9weXRob24yLW1hbmlmZXN0Lmpzb24iCi0KLWRvX2NyZWF0ZV9tYW5pZmVzdCgpIHsKLSAgICAjIFRoaXMgdGFzayBzaG91bGQgYmUgcnVuIHdpdGggZXZlcnkgbmV3IHJlbGVhc2Ugb2YgUHl0aG9uLgotICAgICMgV2UgbXVzdCBlbnN1cmUgdGhhdCBQQUNLQUdFQ09ORklHIGVuYWJsZXMgZXZlcnl0aGluZyB3aGVuIGNyZWF0aW5nCi0gICAgIyBhIG5ldyBtYW5pZmVzdCwgdGhpcyBpcyB0byBiYXNlIG91ciBuZXcgbWFuaWZlc3Qgb24gYSBjb21wbGV0ZQotICAgICMgbmF0aXZlIHB5dGhvbiBidWlsZCwgY29udGFpbmluZyBhbGwgZGVwZW5kZW5jaWVzLCBvdGhlcndpc2UgdGhlIHRhc2sKLSAgICAjIHdvbnQgYmUgYWJsZSB0byBmaW5kIHRoZSByZXF1aXJlZCBmaWxlcy4KLSAgICAjIGUuZy4gQmVya2VsZXlEQiBpcyBhbiBvcHRpb25hbCBidWlsZCBkZXBlbmRlbmN5IHNvIGl0IG1heSBvciBtYXkgbm90Ci0gICAgIyBiZSBwcmVzZW50LCB3ZSBtdXN0IGVuc3VyZSBpdCBpcy4KLQotICAgIGNkICR7V09SS0RJUn0KLSAgICAjIFRoaXMgbmVlZHMgdG8gYmUgZXhlY3V0ZWQgYnkgcHl0aG9uLW5hdGl2ZSBhbmQgTk9UIGJ5IEhPU1QncyBweXRob24KLSAgICBuYXRpdmVweXRob24gY3JlYXRlX21hbmlmZXN0Mi5weQotICAgIGNwIHB5dGhvbjItbWFuaWZlc3QuanNvbi5uZXcgJHtUSElTRElSfS9weXRob24vcHl0aG9uMi1tYW5pZmVzdC5qc29uCi19Ci0KLSMgYml0YmFrZSBweXRob24gLWMgY3JlYXRlX21hbmlmZXN0Ci1hZGR0YXNrIGRvX2NyZWF0ZV9tYW5pZmVzdAotCi0jIE1ha2Ugc3VyZSB3ZSBoYXZlIG5hdGl2ZSBweXRob24gcmVhZHkgd2hlbiB3ZSBjcmVhdGUgYSBuZXcgbWFuaWZlc3QKLWRvX2NyZWF0ZV9tYW5pZmVzdFtkZXBlbmRzXSArPSAicHl0aG9uOmRvX3ByZXBhcmVfcmVjaXBlX3N5c3Jvb3QiCi1kb19jcmVhdGVfbWFuaWZlc3RbZGVwZW5kc10gKz0gInB5dGhvbjpkb19wYXRjaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXItbmF0aXZlXzEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXItbmF0aXZlXzEuMC5iYgppbmRleCAzNzJlZWJkLi4yZmMwNzY2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtaGVscGVyLW5hdGl2ZV8xLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LWhlbHBlci1uYXRpdmVfMS4wLmJiCkBAIC01LDcgKzUsMTAgQEAKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vJHtXT1JLRElSfS90dW5jdGwuYztlbmRsaW5lPTQ7bWQ1PWZmM2EwOTk5NmJjNWZmZjZiYzVkNGUwYjRjMjhmOTk5IgogCi1TUkNfVVJJID0gImZpbGU6Ly90dW5jdGwuYyIKK1NSQ19VUkkgPSAiXAorICAgIGZpbGU6Ly90dW5jdGwuYyBcCisgICAgZmlsZTovL3FlbXUtb2UtYnJpZGdlLWhlbHBlciBcCisgICAgIgogCiBTID0gIiR7V09SS0RJUn0iCiAKQEAgLTE4LDYgKzIxLDggQEAKIGRvX2luc3RhbGwoKSB7CiAJaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9CiAJaW5zdGFsbCB0dW5jdGwgJHtEfSR7YmluZGlyfS8KKworICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vcWVtdS1vZS1icmlkZ2UtaGVscGVyICR7RH0ke2JpbmRpcn0vCiB9CiAKIERFUEVORFMgKz0gInFlbXUtc3lzdGVtLW5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXIvcWVtdS1vZS1icmlkZ2UtaGVscGVyIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LWhlbHBlci9xZW11LW9lLWJyaWRnZS1oZWxwZXIKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjA1N2Q0ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1oZWxwZXIvcWVtdS1vZS1icmlkZ2UtaGVscGVyCkBAIC0wLDAgKzEsMjUgQEAKKyMhIC9iaW4vc2gKKyMgQ29weXJpZ2h0IDIwMjAgR2FybWluIEx0ZC4gb3IgaXRzIHN1YnNpZGlhcmllcworIworIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMAorIworIyBBdHRlbXB0cyB0byBmaW5kIGFuZCBleGVjIHRoZSBob3N0IHFlbXUtYnJpZGdlLWhlbHBlciBwcm9ncmFtCisKKyMgSWYgdGhlIFFFTVVfQlJJREdFX0hFTFBFUiB2YXJpYWJsZSBpcyBzZXQgYnkgdGhlIHVzZXIsIGV4ZWMgaXQuCitpZiBbIC1uICIkUUVNVV9CUklER0VfSEVMUEVSIiBdOyB0aGVuCisgICAgZXhlYyAiJFFFTVVfQlJJREdFX0hFTFBFUiIgIiRAIgorZmkKKworIyBTZWFyY2ggY29tbW9uIHBhdGhzIGZvciB0aGUgaGVscGVyIHByb2dyYW0KK0JOPSJxZW11LWJyaWRnZS1oZWxwZXIiCitQQVRIUz0iL3Vzci9saWJleGVjLyAvdXNyL2xpYi9xZW11LyIKKworZm9yIHAgaW4gJFBBVEhTOyBkbworICAgIGlmIFsgLWUgIiRwLyRCTiIgXTsgdGhlbgorICAgICAgICBleGVjICIkcC8kQk4iICIkQCIKKyAgICBmaQorZG9uZQorCitlY2hvICIkQk4gbm90IGZvdW5kISIgPiAvZGV2L3N0ZGVycgorZXhpdCAxCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1uYXRpdmUuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LW5hdGl2ZS5pbmMKaW5kZXggNjljMmM0My4uMjhjZmQyYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LW5hdGl2ZS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LW5hdGl2ZS5pbmMKQEAgLTMsOCArMyw4IEBACiByZXF1aXJlIHFlbXUuaW5jCiAKIFNSQ19VUklfYXBwZW5kID0gIiBcCi0gICAgICAgICAgICBmaWxlOi8vMDAxMC1maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAxMS1jcHVzLmMtQWRkLWVycm9yLW1lc3NhZ2VzLXdoZW4tcWVtaV9jcHVfa2lja190aHJlYWQtLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDEyLWZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDEzLWNwdXMuYy1BZGQtZXJyb3ItbWVzc2FnZXMtd2hlbi1xZW1pX2NwdV9raWNrX3RocmVhZC0ucGF0Y2ggXAogICAgICAgICAgICAgIgogCiBFWFRSQV9PRU1BS0VfYXBwZW5kID0gIiBMRD0nJHtMRH0nIEFSPScke0FSfScgT0JKQ09QWT0nJHtPQkpDT1BZfScgTERGTEFHUz0nJHtMREZMQUdTfSciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtbmF0aXZlXzQuMS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LW5hdGl2ZV80LjIuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LW5hdGl2ZV80LjEuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LW5hdGl2ZV80LjIuMC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LXN5c3RlbS1uYXRpdmVfNC4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtc3lzdGVtLW5hdGl2ZV80LjIuMC5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LXN5c3RlbS1uYXRpdmVfNC4xLjAuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS1zeXN0ZW0tbmF0aXZlXzQuMi4wLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtdGFyZ2V0cy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUtdGFyZ2V0cy5pbmMKaW5kZXggODE4NGVmNS4uMjRmOWEwMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LXRhcmdldHMuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS10YXJnZXRzLmluYwpAQCAtMTMsNyArMTMsNyBAQAogICAgICAgICAgICAgc29mdG1tdW9ubHkgKz0gYXJjaCArICItc29mdG1tdSwiCiAgICAgICAgICAgICBhcmNocy5yZW1vdmUoYXJjaCkKICAgICBsaW51eHVzZXJvbmx5ID0gIiIKLSAgICBmb3IgYXJjaCBpbiBbJ2FybWViJywgJ2FscGhhJywgJ3BwYzY0YWJpMzInLCAnc3BhcmMzMnBsdXMnLCAnYWFyY2g2NF9iZSddOgorICAgIGZvciBhcmNoIGluIFsnYXJtZWInLCAnYWxwaGEnLCAncHBjNjRhYmkzMicsICdwcGM2NGxlJywgJ3NwYXJjMzJwbHVzJywgJ2FhcmNoNjRfYmUnXToKICAgICAgICAgaWYgYXJjaCBpbiBhcmNoczoKICAgICAgICAgICAgIGxpbnV4dXNlcm9ubHkgKz0gYXJjaCArICItbGludXgtdXNlciwiCiAgICAgICAgICAgICBhcmNocy5yZW1vdmUoYXJjaCkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUuaW5jCmluZGV4IDYwMWZjMjIuLjdhMWNjZjIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LmluYwpAQCAtMjcsMTMgKzI3LDIxIEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDA4LWxpbnV4LXVzZXItRml4LXdlYmtpdGd0ay1oYW5ncy1vbi0zMi1iaXQteDg2LXRhcmdldC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA5LUZpeC13ZWJraXRndGstYnVpbGRzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMTAtY29uZmlndXJlLUFkZC1wa2ctY29uZmlnLWhhbmRsaW5nLWZvci1saWJnY3J5cHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAxMS1ody1pMzg2LXBjLWZpeC1yZWdyZXNzaW9uLWluLXBhcnNpbmctdmdhLWNtZGxpbmUtcGFyLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE1ODkwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTEyMDY4LnBhdGNoIFwKLSAgICAgICAgICAgIgorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMjAtMTcxMS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAyMC03MDM5LTEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMjAtNzAzOS0yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0NWRS0yMDIwLTcwMzktMy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1lbmFibGUtZGlzYWJsZS11ZGV2LnBhdGNoIFwKKwkgICBmaWxlOi8vQ1ZFLTIwMjAtNzIxMS5wYXRjaCBcCisJICAgZmlsZTovLzAwMDEtcWVtdS1Eby1ub3QtaW5jbHVkZS1maWxlLWlmLW5vdC1leGlzdHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMjAtMTExMDIucGF0Y2ggXAorCSAgICIKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInFlbXUtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICJjZGYyYjVjYTUyYjlhYmFjOWJhY2I1ODQyZmE0MjBmOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2NTZlNjAyMTg2ODliZGVlYzY5OTAzMDg3ZmQ3NTgyZDVkM2U3MjIzOGQwMmY0NDgxZDhkYzZkNzlmZDkwOWM2IgorU1JDX1VSSVttZDVzdW1dID0gIjI3OGVlYjI5NGU0YjQ5N2U3OWFmN2E1N2U2NjBjYjlhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQzNDgxZDQxMDhjZTIxMWEwNTNlZjE1YmU2OWFmMWJkZDlkZGUxNTEwZmRhODBkOTJiZTBmNmMzZTk4NzY4ZjAiCiAKIENPTVBBVElCTEVfSE9TVF9taXBzYXJjaG4zMiA9ICJudWxsIgogQ09NUEFUSUJMRV9IT1NUX21pcHNhcmNobjY0ID0gIm51bGwiCkBAIC01NSwxMCArNjMsMTIgQEAKIAkjIERvbid0IGNoZWNrIHRoZSBmaWxlIGdlbnJlYXRlZCBieSBjb25maWd1cmUKIAlzZWQgLWkgLWUgJy93aWxkY2FyZCBjb25maWctaG9zdC5tYWsvZCcgXAogCSAgICAgICAtZSAnJCB7L2VuZGlmL2R9JyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZS5pbmNsdWRlCisgICAgICAgIHNlZCAtaSAtZSAncywke0hPU1RUT09MU19ESVJ9L3B5dGhvbjMsJHtiaW5kaXJ9L3B5dGhvbjMsJyBcCisgICAgICAgICAgICAke0R9LyR7UFRFU1RfUEFUSH0vdGVzdHMvcWVtdS1pb3Rlc3RzL2NvbW1vbi5lbnYgCiB9CiAKICMgUUVNVV9UQVJHRVRTIGlzIG92ZXJyaWRhYmxlIHZhcmlhYmxlCi1RRU1VX1RBUkdFVFMgPz0gImFybSBhYXJjaDY0IGkzODYgbWlwcyBtaXBzZWwgbWlwczY0IG1pcHM2NGVsIHBwYyBwcGM2NCByaXNjdjMyIHJpc2N2NjQgc2g0IHg4Nl82NCIKK1FFTVVfVEFSR0VUUyA/PSAiYXJtIGFhcmNoNjQgaTM4NiBtaXBzIG1pcHNlbCBtaXBzNjQgbWlwczY0ZWwgcHBjIHBwYzY0IHBwYzY0bGUgcmlzY3YzMiByaXNjdjY0IHNoNCB4ODZfNjQiCiAKIEVYVFJBX09FQ09ORiA9ICIgXAogICAgIC0tcHJlZml4PSR7cHJlZml4fSBcCkBAIC03NSw2ICs4NSw4IEBACiAgICAgLS1kaXNhYmxlLXN0cmlwIFwKICAgICAtLWRpc2FibGUtd2Vycm9yIFwKICAgICAtLWV4dHJhLWNmbGFncz0nJHtDRkxBR1N9JyBcCisgICAgLS13aXRoLWdpdD0vYmluL2ZhbHNlIFwKKyAgICAtLWRpc2FibGUtZ2l0LXVwZGF0ZSBcCiAgICAgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBcCiAgICAgIgogCkBAIC0xMzUsNyArMTQ3LDcgQEAKIFBBQ0tBR0VDT05GSUdbdmlydGZzXSA9ICItLWVuYWJsZS12aXJ0ZnMgLS1lbmFibGUtYXR0ciwtLWRpc2FibGUtdmlydGZzLGxpYmNhcCBhdHRyLCIKIFBBQ0tBR0VDT05GSUdbYWlvXSA9ICItLWVuYWJsZS1saW51eC1haW8sLS1kaXNhYmxlLWxpbnV4LWFpbyxsaWJhaW8sIgogUEFDS0FHRUNPTkZJR1t4ZnNdID0gIi0tZW5hYmxlLXhmc2N0bCwtLWRpc2FibGUteGZzY3RsLHhmc3Byb2dzLCIKLVBBQ0tBR0VDT05GSUdbeGVuXSA9ICItLWVuYWJsZS14ZW4sLS1kaXNhYmxlLXhlbix4ZW4seGVuLWxpYnhlbnN0b3JlIHhlbi1saWJ4ZW5jdHJsIHhlbi1saWJ4ZW5ndWVzdCIKK1BBQ0tBR0VDT05GSUdbeGVuXSA9ICItLWVuYWJsZS14ZW4sLS1kaXNhYmxlLXhlbix4ZW4tdG9vbHMseGVuLXRvb2xzLWxpYnhlbnN0b3JlIHhlbi10b29scy1saWJ4ZW5jdHJsIHhlbi10b29scy1saWJ4ZW5ndWVzdCIKIFBBQ0tBR0VDT05GSUdbdm5jLXNhc2xdID0gIi0tZW5hYmxlLXZuYyAtLWVuYWJsZS12bmMtc2FzbCwtLWRpc2FibGUtdm5jLXNhc2wsY3lydXMtc2FzbCwiCiBQQUNLQUdFQ09ORklHW3ZuYy1qcGVnXSA9ICItLWVuYWJsZS12bmMgLS1lbmFibGUtdm5jLWpwZWcsLS1kaXNhYmxlLXZuYy1qcGVnLGpwZWcsIgogUEFDS0FHRUNPTkZJR1t2bmMtcG5nXSA9ICItLWVuYWJsZS12bmMgLS1lbmFibGUtdm5jLXBuZywtLWRpc2FibGUtdm5jLXBuZyxsaWJwbmcsIgpAQCAtMTY1LDYgKzE3NywxMCBAQAogIyB1c2JyZWRpciB3aWxsIGJlIGluIG1ldGEtbmV0d29ya2luZyBsYXllcgogUEFDS0FHRUNPTkZJR1t1c2ItcmVkaXJdID0gIi0tZW5hYmxlLXVzYi1yZWRpciwtLWRpc2FibGUtdXNiLXJlZGlyLHVzYnJlZGlyIgogUEFDS0FHRUNPTkZJR1tzbmFwcHldID0gIi0tZW5hYmxlLXNuYXBweSwtLWRpc2FibGUtc25hcHB5LHNuYXBweSIKK1BBQ0tBR0VDT05GSUdbZ2x1c3RlcmZzXSA9ICItLWVuYWJsZS1nbHVzdGVyZnMsLS1kaXNhYmxlLWdsdXN0ZXJmcyIKK1BBQ0tBR0VDT05GSUdbeGtiY29tbW9uXSA9ICItLWVuYWJsZS14a2Jjb21tb24sLS1kaXNhYmxlLXhrYmNvbW1vbixsaWJ4a2Jjb21tb24iCitQQUNLQUdFQ09ORklHW2xpYnVkZXZdID0gIi0tZW5hYmxlLWxpYnVkZXYsLS1kaXNhYmxlLWxpYnVkZXYsZXVkZXYiCitQQUNLQUdFQ09ORklHW2xpYnhtbDJdID0gIi0tZW5hYmxlLWxpYnhtbDIsLS1kaXNhYmxlLWxpYnhtbDIsbGlieG1sMiIKIAogSU5TQU5FX1NLSVBfJHtQTn0gPSAiYXJjaCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtQWRkLWVuYWJsZS1kaXNhYmxlLXVkZXYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1BZGQtZW5hYmxlLWRpc2FibGUtdWRldi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jMmM1ODQ5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtQWRkLWVuYWJsZS1kaXNhYmxlLXVkZXYucGF0Y2gKQEAgLTAsMCArMSwyOSBAQAorRnJvbSBhNDcxY2Y0ZTRjNzMzNTBlMDkwZWIyY2Q4N2VjOTU5ZDEzODAxMmU1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CitEYXRlOiBUaHUsIDE5IE1hciAyMDIwIDExOjU0OjI2IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBlbmFibGUvZGlzYWJsZSBsaWJ1ZGV2CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CistLS0KKyBjb25maWd1cmUgfCA0ICsrKysKKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKK2luZGV4IGNhYzI3MWMuLmJkMTE2ZWIgMTAwNzU1CistLS0gYS9jb25maWd1cmUKKysrKyBiL2NvbmZpZ3VyZQorQEAgLTE1MzksNiArMTUzOSwxMCBAQCBmb3Igb3B0IGRvCisgICA7OworICAgLS1kaXNhYmxlLXBsdWdpbnMpIHBsdWdpbnM9Im5vIgorICAgOzsKKysgIC0tZW5hYmxlLWxpYnVkZXYpIGxpYnVkZXY9InllcyIKKysgIDs7CisrICAtLWRpc2FibGUtbGlidWRldikgbGlidWRldj0ibm8iCisrICA7OworICAgKikKKyAgICAgICBlY2hvICJFUlJPUjogdW5rbm93biBvcHRpb24gJG9wdCIKKyAgICAgICBlY2hvICJUcnkgJyQwIC0taGVscCcgZm9yIG1vcmUgaW5mb3JtYXRpb24iCistLSAKKzEuOC4zLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtcWVtdS1BZGQtbWlzc2luZy13YWNvbS1ISUQtZGVzY3JpcHRvci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAxLXFlbXUtQWRkLW1pc3Npbmctd2Fjb20tSElELWRlc2NyaXB0b3IucGF0Y2gKaW5kZXggOTQ3ODEwMi4uNjZmZjk5NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtcWVtdS1BZGQtbWlzc2luZy13YWNvbS1ISUQtZGVzY3JpcHRvci5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1xZW11LUFkZC1taXNzaW5nLXdhY29tLUhJRC1kZXNjcmlwdG9yLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA0NjU1ZGMxODA3NGUwYmU5ZDIzOWY1MWRhYzMyYjYxNDM1ZGE4NTQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1MjZjYjdlMjZmNmRkOTZjOWVlMmZmYTA1Y2UwYTM1OGQzYmZiZmIzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CiBEYXRlOiBUaHUsIDI3IE5vdiAyMDE0IDE0OjA0OjI5ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIHFlbXU6IEFkZCBtaXNzaW5nIHdhY29tIEhJRCBkZXNjcmlwdG9yCkBAIC0xOSw3ICsxOSw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDkzIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL2h3L3VzYi9kZXYtd2Fjb20uYyBiL2h3L3VzYi9kZXYtd2Fjb20uYwotaW5kZXggOGM0M2RiOTMuLjNmZjhjYTI4IDEwMDY0NAoraW5kZXggOGVkNTdiM2IuLjE1MDI5MjhiIDEwMDY0NAogLS0tIGEvaHcvdXNiL2Rldi13YWNvbS5jCiArKysgYi9ody91c2IvZGV2LXdhY29tLmMKIEBAIC03NCw2ICs3NCw4OSBAQCBzdGF0aWMgY29uc3QgVVNCRGVzY1N0cmluZ3MgZGVzY19zdHJpbmdzID0gewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtcWVtdS1Eby1ub3QtaW5jbHVkZS1maWxlLWlmLW5vdC1leGlzdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMS1xZW11LURvLW5vdC1pbmNsdWRlLWZpbGUtaWYtbm90LWV4aXN0cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lY2NhYzA1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDEtcWVtdS1Eby1ub3QtaW5jbHVkZS1maWxlLWlmLW5vdC1leGlzdHMucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSA5OGMyZGExMjlkYjE5ZWU2M2Q3ZTIxYjc3YTBlZjcwODIyYzk1MDY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT2xla3NpeSBPYml0b3Rza3l5IDxvb2JpdG90c0BjaXNjby5jb20+CitEYXRlOiBXZWQsIDI1IE1hciAyMDIwIDIxOjIxOjM1ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIHFlbXU6IERvIG5vdCBpbmNsdWRlIGZpbGUgaWYgbm90IGV4aXN0cworCitTY3JpcHQgY29uZmlndXJlIGNoZWNrcyBmb3IgaWZfYWxnLmggYW5kIGNoZWNrIGZhaWxlZCBidXQKK2lmX2FsZy5oIHN0aWxsIGluY2x1ZGVkLgorCitVcHN0cmVhbS1zdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy5nbnUub3JnL2FyY2hpdmUvaHRtbC9xZW11LWRldmVsLzIwMjAtMDMvbXNnMDcxODguaHRtbF0KK1NpZ25lZC1vZmYtYnk6IE9sZWtzaXkgT2JpdG90c2t5eSA8b29iaXRvdHNAY2lzY28uY29tPgorLS0tCisgbGludXgtdXNlci9zeXNjYWxsLmMgfCAyICsrCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvbGludXgtdXNlci9zeXNjYWxsLmMgYi9saW51eC11c2VyL3N5c2NhbGwuYworaW5kZXggZmMxOGYyNDQuLjY4ZDYyNjY2IDEwMDY0NAorLS0tIGEvbGludXgtdXNlci9zeXNjYWxsLmMKKysrKyBiL2xpbnV4LXVzZXIvc3lzY2FsbC5jCitAQCAtMTA2LDcgKzEwNiw5IEBACisgI2luY2x1ZGUgPGxpbnV4L2Jsa3BnLmg+CisgI2luY2x1ZGUgPG5ldHBhY2tldC9wYWNrZXQuaD4KKyAjaW5jbHVkZSA8bGludXgvbmV0bGluay5oPgorKyNpZiBkZWZpbmVkKENPTkZJR19BRl9BTEcpCisgI2luY2x1ZGUgPGxpbnV4L2lmX2FsZy5oPgorKyNlbmRpZgorICNpbmNsdWRlICJsaW51eF9sb29wLmgiCisgI2luY2x1ZGUgInVuYW1lLmgiCisgCistLSAKKzIuMjAuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMi1BZGQtc3VicGFja2FnZS1wdGVzdC13aGljaC1ydW5zLWFsbC11bml0LXRlc3QtY2FzZXMtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDItQWRkLXN1YnBhY2thZ2UtcHRlc3Qtd2hpY2gtcnVucy1hbGwtdW5pdC10ZXN0LWNhc2VzLS5wYXRjaAppbmRleCAyY2NkZGQ1Li43ZjdkYTUxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMi1BZGQtc3VicGFja2FnZS1wdGVzdC13aGljaC1ydW5zLWFsbC11bml0LXRlc3QtY2FzZXMtLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAyLUFkZC1zdWJwYWNrYWdlLXB0ZXN0LXdoaWNoLXJ1bnMtYWxsLXVuaXQtdGVzdC1jYXNlcy0ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDY3NzUxZjNhMjNlM2RiMzAxMmYzOTFiM2IzYjczYTQ0ODQ0ODhjZTkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDhlZTYyODE1MTZiZDkyMTBlNzVlOTFkNzA1ZGE4OTE2YmFiM2JmNTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXJvIEJ5c3RyaWNreSA8anVyby5ieXN0cmlja3lAaW50ZWwuY29tPgogRGF0ZTogVGh1LCAzMSBBdWcgMjAxNyAxMTowNjo1NiAtMDcwMAogU3ViamVjdDogW1BBVENIXSBBZGQgc3VicGFja2FnZSAtcHRlc3Qgd2hpY2ggcnVucyBhbGwgdW5pdCB0ZXN0IGNhc2VzIGZvcgpAQCAtMTUsMTAgKzE1LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuaW5jbHVkZSBiL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKLWluZGV4IGZkN2ZkYjg2Li44M2I3ZjQwOSAxMDA2NDQKK2luZGV4IDg1NjZmNWYxLi41MmQwMzIwYiAxMDA2NDQKIC0tLSBhL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKICsrKyBiL3Rlc3RzL01ha2VmaWxlLmluY2x1ZGUKLUBAIC0xMTgzLDQgKzExODMsMTIgQEAgYWxsOiAkKFFFTVVfSU9URVNUU19IRUxQRVJTLXkpCitAQCAtMTIxMCw0ICsxMjEwLDEyIEBAIGFsbDogJChRRU1VX0lPVEVTVFNfSEVMUEVSUy15KQogIC1pbmNsdWRlICQod2lsZGNhcmQgdGVzdHMvKi5kKQogIC1pbmNsdWRlICQod2lsZGNhcmQgdGVzdHMvbGlicW9zLyouZCkKICAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAzLXFlbXUtQWRkLWFkZGl0aW9uLWVudmlyb25tZW50LXNwYWNlLXRvLWJvb3QtbG9hZGVyLXEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwMy1xZW11LUFkZC1hZGRpdGlvbi1lbnZpcm9ubWVudC1zcGFjZS10by1ib290LWxvYWRlci1xLnBhdGNoCmluZGV4IDVjNDJkNjguLjAxMmQ2MGQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDAzLXFlbXUtQWRkLWFkZGl0aW9uLWVudmlyb25tZW50LXNwYWNlLXRvLWJvb3QtbG9hZGVyLXEucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDMtcWVtdS1BZGQtYWRkaXRpb24tZW52aXJvbm1lbnQtc3BhY2UtdG8tYm9vdC1sb2FkZXItcS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMjM1Yjk0ZjExODg1OTc4NzNjODc3NmIwMTlmZWQ0OTk0Nzk4MzM5MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gY2UxZWNlYWIyMzUwZDI3OTYwZWMyNTQ2NTA3MTcwODVmNmExMWM5YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEphc29uIFdlc3NlbCA8amFzb24ud2Vzc2VsQHdpbmRyaXZlci5jb20+CiBEYXRlOiBGcmksIDI4IE1hciAyMDE0IDE3OjQyOjQzICswODAwCiBTdWJqZWN0OiBbUEFUQ0hdIHFlbXU6IEFkZCBhZGRpdGlvbiBlbnZpcm9ubWVudCBzcGFjZSB0byBib290IGxvYWRlcgpAQCAtMTksMTUgKzE5LDE1IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9ody9taXBzL21pcHNfbWFsdGEuYyBiL2h3L21pcHMvbWlwc19tYWx0YS5jCi1pbmRleCAyMGUwMTliZi4uZDE1MGIwMWMgMTAwNjQ0CitpbmRleCA5MmU5Y2E1Yi4uM2E3ZjM5NTQgMTAwNjQ0CiAtLS0gYS9ody9taXBzL21pcHNfbWFsdGEuYwogKysrIGIvaHcvbWlwcy9taXBzX21hbHRhLmMKLUBAIC02MCw3ICs2MCw3IEBACitAQCAtNTksNyArNTksNyBAQAogIAotICNkZWZpbmUgRU5WUF9BRERSCQkweDgwMDAyMDAwbAotICNkZWZpbmUgRU5WUF9OQl9FTlRSSUVTCSAJMTYKLS0jZGVmaW5lIEVOVlBfRU5UUllfU0laRQkgCTI1NgotKyNkZWZpbmUgRU5WUF9FTlRSWV9TSVpFCSAJMTAyNAorICNkZWZpbmUgRU5WUF9BRERSICAgICAgICAgICAweDgwMDAyMDAwbAorICNkZWZpbmUgRU5WUF9OQl9FTlRSSUVTICAgICAxNgorLSNkZWZpbmUgRU5WUF9FTlRSWV9TSVpFICAgICAyNTYKKysjZGVmaW5lIEVOVlBfRU5UUllfU0laRSAgICAgMTAyNAogIAogIC8qIEhhcmR3YXJlIGFkZHJlc3NlcyAqLwotICNkZWZpbmUgRkxBU0hfQUREUkVTUyAweDFlMDAwMDAwVUxMCisgI2RlZmluZSBGTEFTSF9BRERSRVNTICAgICAgIDB4MWUwMDAwMDBVTEwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA0LXFlbXUtZGlzYWJsZS1WYWxncmluZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA0LXFlbXUtZGlzYWJsZS1WYWxncmluZC5wYXRjaAppbmRleCAwYWM0YWI0Li5iYzMwMzk3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNC1xZW11LWRpc2FibGUtVmFsZ3JpbmQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDQtcWVtdS1kaXNhYmxlLVZhbGdyaW5kLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAzYWQ3YTM3NTAxNWQ0N2ZkZjUwMTZlMDNlMTFmYTkzNDQwZDZkOGJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0MTI3Mjk2YmIxMDQ2Y2RmNzM5OTRiYTY5ZGM5MTNkOGMwMmZkNzRmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KIERhdGU6IFR1ZSwgMjAgT2N0IDIwMTUgMjI6MTk6MDggKzAxMDAKIFN1YmplY3Q6IFtQQVRDSF0gcWVtdTogZGlzYWJsZSBWYWxncmluZApAQCAtMTMsMTAgKzEzLDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDkgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IDcxNGU3ZmI2Li5kYWQ0ZmM1OSAxMDA3NTUKK2luZGV4IDYwOTliZTFkLi5hNzY2MDE3YiAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZQogKysrIGIvY29uZmlndXJlCi1AQCAtNTMzNSwxNSArNTMzNSw2IEBAIGZpCitAQCAtNTM5MCwxNSArNTM5MCw2IEBAIGZpCiAgIyBjaGVjayBpZiB3ZSBoYXZlIHZhbGdyaW5kL3ZhbGdyaW5kLmgKICAKICB2YWxncmluZF9oPW5vCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNS1xZW11LW5hdGl2ZS1zZXQtbGQuYmZkLWZpeC1jZmxhZ3MtYW5kLXNldC1zb21lLWVudmlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDUtcWVtdS1uYXRpdmUtc2V0LWxkLmJmZC1maXgtY2ZsYWdzLWFuZC1zZXQtc29tZS1lbnZpci5wYXRjaAppbmRleCBhNzM2ODE1Li5lYzMwMzM3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNS1xZW11LW5hdGl2ZS1zZXQtbGQuYmZkLWZpeC1jZmxhZ3MtYW5kLXNldC1zb21lLWVudmlyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA1LXFlbXUtbmF0aXZlLXNldC1sZC5iZmQtZml4LWNmbGFncy1hbmQtc2V0LXNvbWUtZW52aXIucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDgwZTYwNzBiY2RmZTYzNmIxMDNhMTM1OThlNmMzOGFkMGQwZTc2MjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDZjZGY4MmFmMmViYTMxMmI5YjhkYTg2ZGRhMjhiOThkM2Q1MWY0ZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBTdGVwaGVuIEFybm9sZCA8c2Fybm9sZEB2Y3RsYWJzLmNvbT4KIERhdGU6IFN1biwgMTIgSnVuIDIwMTYgMTg6MDk6NTYgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gcWVtdS1uYXRpdmU6IHNldCBsZC5iZmQsIGZpeCBjZmxhZ3MsIGFuZCBzZXQgc29tZSBlbnZpcm9ubWVudApAQCAtMTAsMTAgKzEwLDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUgYi9jb25maWd1cmUKLWluZGV4IGRhZDRmYzU5Li42ODViYmU1ZSAxMDA3NTUKK2luZGV4IGE3NjYwMTdiLi43MmYxMWFjYSAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZQogKysrIGIvY29uZmlndXJlCi1AQCAtNTk3MSwxMCArNTk3MSw2IEBAIHdyaXRlX2Nfc2tlbGV0b24KK0BAIC02MDg1LDEwICs2MDg1LDYgQEAgd3JpdGVfY19za2VsZXRvbgogIGlmIHRlc3QgIiRnY292IiA9ICJ5ZXMiIDsgdGhlbgogICAgQ0ZMQUdTPSItZnByb2ZpbGUtYXJjcyAtZnRlc3QtY292ZXJhZ2UgLWcgJENGTEFHUyIKICAgIExERkxBR1M9Ii1mcHJvZmlsZS1hcmNzIC1mdGVzdC1jb3ZlcmFnZSAkTERGTEFHUyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA2LWNoYXJkZXYtY29ubmVjdC1zb2NrZXQtdG8tYS1zcGF3bmVkLWNvbW1hbmQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNi1jaGFyZGV2LWNvbm5lY3Qtc29ja2V0LXRvLWEtc3Bhd25lZC1jb21tYW5kLnBhdGNoCmluZGV4IGE0MjM4NTUuLjA4MTBhZTggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA2LWNoYXJkZXYtY29ubmVjdC1zb2NrZXQtdG8tYS1zcGF3bmVkLWNvbW1hbmQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDYtY2hhcmRldi1jb25uZWN0LXNvY2tldC10by1hLXNwYXduZWQtY29tbWFuZC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gYWQ4NTM2MDFlNzVmNmQwZGQwOTY3MmJjY2EwNWZiZTRmYWM3NjZhNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gYmNjNjNmNzc1ZTI2NWRmNjk5NjNhNGFkNzgwNWI4Njc4YWNlNjhmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAeGlsaW54LmNvbT4KIERhdGU6IFRodSwgMjEgRGVjIDIwMTcgMTE6MzU6MTYgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gY2hhcmRldjogY29ubmVjdCBzb2NrZXQgdG8gYSBzcGF3bmVkIGNvbW1hbmQKQEAgLTUyLDEwICs1MiwxMCBAQAogIDMgZmlsZXMgY2hhbmdlZCwgMTA5IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL2NoYXJkZXYvY2hhci1zb2NrZXQuYyBiL2NoYXJkZXYvY2hhci1zb2NrZXQuYwotaW5kZXggN2NhNWQ5N2EuLjIwN2ZhZTRhIDEwMDY0NAoraW5kZXggMTg1ZmUzOGQuLjU0ZmE0MjM0IDEwMDY0NAogLS0tIGEvY2hhcmRldi9jaGFyLXNvY2tldC5jCiArKysgYi9jaGFyZGV2L2NoYXItc29ja2V0LmMKLUBAIC0xMjc4LDYgKzEyNzgsNjcgQEAgc3RhdGljIGJvb2wgcW1wX2NoYXJkZXZfdmFsaWRhdGVfc29ja2V0KENoYXJkZXZTb2NrZXQgKnNvY2ssCitAQCAtMTI4OCw2ICsxMjg4LDY3IEBAIHN0YXRpYyBib29sIHFtcF9jaGFyZGV2X3ZhbGlkYXRlX3NvY2tldChDaGFyZGV2U29ja2V0ICpzb2NrLAogICAgICByZXR1cm4gdHJ1ZTsKICB9CiAgCkBAIC0xMjMsNyArMTIzLDcgQEAKICAKICBzdGF0aWMgdm9pZCBxbXBfY2hhcmRldl9vcGVuX3NvY2tldChDaGFyZGV2ICpjaHIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgQ2hhcmRldkJhY2tlbmQgKmJhY2tlbmQsCi1AQCAtMTI4Niw2ICsxMzQ3LDkgQEAgc3RhdGljIHZvaWQgcW1wX2NoYXJkZXZfb3Blbl9zb2NrZXQoQ2hhcmRldiAqY2hyLAorQEAgLTEyOTYsNiArMTM1Nyw5IEBAIHN0YXRpYyB2b2lkIHFtcF9jaGFyZGV2X29wZW5fc29ja2V0KENoYXJkZXYgKmNociwKICB7CiAgICAgIFNvY2tldENoYXJkZXYgKnMgPSBTT0NLRVRfQ0hBUkRFVihjaHIpOwogICAgICBDaGFyZGV2U29ja2V0ICpzb2NrID0gYmFja2VuZC0+dS5zb2NrZXQuZGF0YTsKQEAgLTEzMyw3ICsxMzMsNyBAQAogICAgICBib29sIGRvX25vZGVsYXkgICAgID0gc29jay0+aGFzX25vZGVsYXkgPyBzb2NrLT5ub2RlbGF5IDogZmFsc2U7CiAgICAgIGJvb2wgaXNfbGlzdGVuICAgICAgPSBzb2NrLT5oYXNfc2VydmVyICA/IHNvY2stPnNlcnZlciAgOiB0cnVlOwogICAgICBib29sIGlzX3RlbG5ldCAgICAgID0gc29jay0+aGFzX3RlbG5ldCAgPyBzb2NrLT50ZWxuZXQgIDogZmFsc2U7Ci1AQCAtMTM1MSw2ICsxNDE1LDE0IEBAIHN0YXRpYyB2b2lkIHFtcF9jaGFyZGV2X29wZW5fc29ja2V0KENoYXJkZXYgKmNociwKK0BAIC0xMzYxLDYgKzE0MjUsMTQgQEAgc3RhdGljIHZvaWQgcW1wX2NoYXJkZXZfb3Blbl9zb2NrZXQoQ2hhcmRldiAqY2hyLAogIAogICAgICB1cGRhdGVfZGlzY29ubmVjdGVkX2ZpbGVuYW1lKHMpOwogIApAQCAtMTQ4LDcgKzE0OCw3IEBACiAgICAgIGlmIChzLT5pc19saXN0ZW4pIHsKICAgICAgICAgIGlmIChxbXBfY2hhcmRldl9vcGVuX3NvY2tldF9zZXJ2ZXIoY2hyLCBpc190ZWxuZXQgfHwgaXNfdG4zMjcwLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpc193YWl0Y29ubmVjdCwgZXJycCkgPCAwKSB7Ci1AQCAtMTM3MCw5ICsxNDQyLDI2IEBAIHN0YXRpYyB2b2lkIHFlbXVfY2hyX3BhcnNlX3NvY2tldChRZW11T3B0cyAqb3B0cywgQ2hhcmRldkJhY2tlbmQgKmJhY2tlbmQsCitAQCAtMTM4MCw5ICsxNDUyLDI2IEBAIHN0YXRpYyB2b2lkIHFlbXVfY2hyX3BhcnNlX3NvY2tldChRZW11T3B0cyAqb3B0cywgQ2hhcmRldkJhY2tlbmQgKmJhY2tlbmQsCiAgICAgIGNvbnN0IGNoYXIgKmhvc3QgPSBxZW11X29wdF9nZXQob3B0cywgImhvc3QiKTsKICAgICAgY29uc3QgY2hhciAqcG9ydCA9IHFlbXVfb3B0X2dldChvcHRzLCAicG9ydCIpOwogICAgICBjb25zdCBjaGFyICpmZCA9IHFlbXVfb3B0X2dldChvcHRzLCAiZmQiKTsKQEAgLTE3NSw3ICsxNzUsNyBAQAogICAgICBpZiAoKCEhcGF0aCArICEhZmQgKyAhIWhvc3QpICE9IDEpIHsKICAgICAgICAgIGVycm9yX3NldGcoZXJycCwKICAgICAgICAgICAgICAgICAgICAgIkV4YWN0bHkgb25lIG9mICdwYXRoJywgJ2ZkJyBvciAnaG9zdCcgcmVxdWlyZWQiKTsKLUBAIC0xNDE1LDEyICsxNTA0LDI0IEBAIHN0YXRpYyB2b2lkIHFlbXVfY2hyX3BhcnNlX3NvY2tldChRZW11T3B0cyAqb3B0cywgQ2hhcmRldkJhY2tlbmQgKmJhY2tlbmQsCitAQCAtMTQyNSwxMiArMTUxNCwyNCBAQCBzdGF0aWMgdm9pZCBxZW11X2Nocl9wYXJzZV9zb2NrZXQoUWVtdU9wdHMgKm9wdHMsIENoYXJkZXZCYWNrZW5kICpiYWNrZW5kLAogICAgICBzb2NrLT5oYXNfdGxzX2F1dGh6ID0gcWVtdV9vcHRfZ2V0KG9wdHMsICJ0bHMtYXV0aHoiKTsKICAgICAgc29jay0+dGxzX2F1dGh6ID0gZ19zdHJkdXAocWVtdV9vcHRfZ2V0KG9wdHMsICJ0bHMtYXV0aHoiKSk7CiAgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwNy1hcGljLWZpeHVwLWZhbGx0aHJvdWdoLXRvLVBJQy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA3LWFwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoCmluZGV4IGI1MGU4YzIuLjg5YmFhZDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA3LWFwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA3LWFwaWMtZml4dXAtZmFsbHRocm91Z2gtdG8tUElDLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBmNTFlNDllN2Q3ZDg3YjcyNTQyNDJiNzM2MGY5OWMyZGY5NGE1YTJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBhNTlhOThkMTAwMTIzMDMwYTQxNDVlN2VmZTNiOGEwMDE5MjBhOWYxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KIERhdGU6IFR1ZSwgMjYgRmViIDIwMTMgMTE6NDM6MjggLTA1MDAKIFN1YmplY3Q6IFtQQVRDSF0gYXBpYzogZml4dXAgZmFsbHRocm91Z2ggdG8gUElDCkBAIC0zMCw3ICszMCw3IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9ody9pbnRjL2FwaWMuYyBiL2h3L2ludGMvYXBpYy5jCi1pbmRleCBiY2U4OTkxMS4uZGY0YjU4MmUgMTAwNjQ0CitpbmRleCAyYTc0ZjdiNC4uNGQ1ZGEzNjUgMTAwNjQ0CiAtLS0gYS9ody9pbnRjL2FwaWMuYwogKysrIGIvaHcvaW50Yy9hcGljLmMKIEBAIC02MDMsNyArNjAzLDcgQEAgaW50IGFwaWNfYWNjZXB0X3BpY19pbnRyKERldmljZVN0YXRlICpkZXYpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwOC1saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAwOC1saW51eC11c2VyLUZpeC13ZWJraXRndGstaGFuZ3Mtb24tMzItYml0LXg4Ni10YXJnZXQucGF0Y2gKaW5kZXggZTU2MmYyNS4uMzBiYjRkZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDgtbGludXgtdXNlci1GaXgtd2Via2l0Z3RrLWhhbmdzLW9uLTMyLWJpdC14ODYtdGFyZ2V0LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA4LWxpbnV4LXVzZXItRml4LXdlYmtpdGd0ay1oYW5ncy1vbi0zMi1iaXQteDg2LXRhcmdldC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMjVhMDY0ZjkxZjczNjMwZTVkZmYyYTZhZWIyM2Q5NTNjNDY5Y2VhNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gY2Y4YzlhYWM1MjQzZjUwNmExYTNlOGUyODQ0MTRmMzExY2RlMDRmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAeGlsaW54LmNvbT4KIERhdGU6IFdlZCwgMTcgSmFuIDIwMTggMTA6NTE6NDkgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gbGludXgtdXNlcjogRml4IHdlYmtpdGd0ayBoYW5ncyBvbiAzMi1iaXQgeDg2IHRhcmdldApAQCAtMTksMTUgKzE5LDE1IEBACiAgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9saW51eC11c2VyL21haW4uYyBiL2xpbnV4LXVzZXIvbWFpbi5jCi1pbmRleCA4ZmZjNTI1MS4uNDA2N2U3MzkgMTAwNjQ0CitpbmRleCA2ZmY3ODUxZS4uZWJmZjA0ODUgMTAwNjQ0CiAtLS0gYS9saW51eC11c2VyL21haW4uYwogKysrIGIvbGludXgtdXNlci9tYWluLmMKLUBAIC03Nyw3ICs3Nyw3IEBAIGludCBoYXZlX2d1ZXN0X2Jhc2U7CitAQCAtNzgsNyArNzgsNyBAQCBpbnQgaGF2ZV9ndWVzdF9iYXNlOwogICAgICAgIChUQVJHRVRfTE9OR19CSVRTID09IDMyIHx8IGRlZmluZWQoVEFSR0VUX0FCSTMyKSkKICAvKiBUaGVyZSBhcmUgYSBudW1iZXIgb2YgcGxhY2VzIHdoZXJlIHdlIGFzc2lnbiByZXNlcnZlZF92YSB0byBhIHZhcmlhYmxlCiAgICAgb2YgdHlwZSBhYmlfdWxvbmcgYW5kIGV4cGVjdCBpdCB0byBmaXQuICBBdm9pZCB0aGUgbGFzdCBwYWdlLiAgKi8KLS0jICAgZGVmaW5lIE1BWF9SRVNFUlZFRF9WQSAgKDB4ZmZmZmZmZmZ1bCAmIFRBUkdFVF9QQUdFX01BU0spCi0rIyAgIGRlZmluZSBNQVhfUkVTRVJWRURfVkEgICgweDdmZmZmZmZmdWwgJiBUQVJHRVRfUEFHRV9NQVNLKQorLSMgICBkZWZpbmUgTUFYX1JFU0VSVkVEX1ZBKENQVSkgICgweGZmZmZmZmZmdWwgJiBUQVJHRVRfUEFHRV9NQVNLKQorKyMgICBkZWZpbmUgTUFYX1JFU0VSVkVEX1ZBKENQVSkgICgweDdmZmZmZmZmdWwgJiBUQVJHRVRfUEFHRV9NQVNLKQogICMgIGVsc2UKLSAjICAgZGVmaW5lIE1BWF9SRVNFUlZFRF9WQSAgKDF1bCA8PCBUQVJHRVRfVklSVF9BRERSX1NQQUNFX0JJVFMpCisgIyAgIGRlZmluZSBNQVhfUkVTRVJWRURfVkEoQ1BVKSAgKDF1bCA8PCBUQVJHRVRfVklSVF9BRERSX1NQQUNFX0JJVFMpCiAgIyAgZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDA5LUZpeC13ZWJraXRndGstYnVpbGRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDktRml4LXdlYmtpdGd0ay1idWlsZHMucGF0Y2gKaW5kZXggNDA3MmQ5NC4uN2UyNzNlZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDktRml4LXdlYmtpdGd0ay1idWlsZHMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMDktRml4LXdlYmtpdGd0ay1idWlsZHMucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGI2MzNiOWExODEzZmNkNzE1ZGNlNDQ2NTlhODkyOTNmMWM2NGFlOGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDYxMzE2NjAwN2UzYjg1MmM5OWNhZjJjZDM0YTk3MmUyYzg0NjA3MzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBNYXJ0aW4gSmFuc2EgPG1hcnRpbi5qYW5zYUBsZ2UuY29tPgogRGF0ZTogRnJpLCAxIEp1biAyMDE4IDA4OjQxOjA3ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIEZpeCB3ZWJraXRndGsgYnVpbGRzCkBAIC0xOCw2ICsxOCw3IEBACiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorCiAtLS0KICBpbmNsdWRlL2V4ZWMvY3B1LWFsbC5oICB8ICA2ICstLS0tLQogIGluY2x1ZGUvZXhlYy9jcHVfbGRzdC5oIHwgIDUgKysrKy0KQEAgLTI2LDcgKzI3LDcgQEAKICA0IGZpbGVzIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKyksIDIzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvaW5jbHVkZS9leGVjL2NwdS1hbGwuaCBiL2luY2x1ZGUvZXhlYy9jcHUtYWxsLmgKLWluZGV4IDUzNmVhNThmODEuLjRjNjNhNmEyZTQgMTAwNjQ0CitpbmRleCBlOTY3ODFhNC4uYTM2OWY4MWEgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2V4ZWMvY3B1LWFsbC5oCiArKysgYi9pbmNsdWRlL2V4ZWMvY3B1LWFsbC5oCiBAQCAtMTYyLDEyICsxNjIsOCBAQCBleHRlcm4gdW5zaWduZWQgbG9uZyBndWVzdF9iYXNlOwpAQCAtNDQsNyArNDUsNyBAQAogIAogICNpbmNsdWRlICJleGVjL2h3YWRkci5oIgogZGlmZiAtLWdpdCBhL2luY2x1ZGUvZXhlYy9jcHVfbGRzdC5oIGIvaW5jbHVkZS9leGVjL2NwdV9sZHN0LmgKLWluZGV4IDkxNTFmZGIwNDIuLmNiMmI4ZjMyOWYgMTAwNjQ0CitpbmRleCBmZDQ5OWY3ZS4uMzA1NzVmNjAgMTAwNjQ0CiAtLS0gYS9pbmNsdWRlL2V4ZWMvY3B1X2xkc3QuaAogKysrIGIvaW5jbHVkZS9leGVjL2NwdV9sZHN0LmgKIEBAIC02NSw3ICs2NSwxMCBAQCB0eXBlZGVmIHVpbnQ2NF90IGFiaV9wdHI7CkBAIC02MCw3ICs2MSw3IEBACiAgI2RlZmluZSBoMmdfdmFsaWQoeCkgZ3Vlc3RfYWRkcl92YWxpZCgodW5zaWduZWQgbG9uZykoeCkgLSBndWVzdF9iYXNlKQogIAogZGlmZiAtLWdpdCBhL2xpbnV4LXVzZXIvbW1hcC5jIGIvbGludXgtdXNlci9tbWFwLmMKLWluZGV4IDQ2YTZlM2E3NjEuLjc3MzU0NjU0NjIgMTAwNjQ0CitpbmRleCA0NmE2ZTNhNy4uNzczNTQ2NTQgMTAwNjQ0CiAtLS0gYS9saW51eC11c2VyL21tYXAuYwogKysrIGIvbGludXgtdXNlci9tbWFwLmMKIEBAIC03OCw3ICs3OCw3IEBAIGludCB0YXJnZXRfbXByb3RlY3QoYWJpX3Vsb25nIHN0YXJ0LCBhYmlfdWxvbmcgbGVuLCBpbnQgcHJvdCkKQEAgLTExMCwxMCArMTExLDEwIEBACiAgCiAgICAgIGlmIChmbGFncyAmIE1SRU1BUF9GSVhFRCkgewogZGlmZiAtLWdpdCBhL2xpbnV4LXVzZXIvc3lzY2FsbC5jIGIvbGludXgtdXNlci9zeXNjYWxsLmMKLWluZGV4IDhiNDFhMDM5MDEuLmJjNWQ4NWRlMDIgMTAwNjQ0CitpbmRleCAxNzFjMGNhZS4uZmMxOGYyNDQgMTAwNjQ0CiAtLS0gYS9saW51eC11c2VyL3N5c2NhbGwuYwogKysrIGIvbGludXgtdXNlci9zeXNjYWxsLmMKLUBAIC00MDMxLDkgKzQwMzEsNiBAQCBzdGF0aWMgaW5saW5lIGFiaV91bG9uZyBkb19zaG1hdChDUFVBcmNoU3RhdGUgKmNwdV9lbnYsCitAQCAtNDEzOCw5ICs0MTM4LDYgQEAgc3RhdGljIGlubGluZSBhYmlfdWxvbmcgZG9fc2htYXQoQ1BVQXJjaFN0YXRlICpjcHVfZW52LAogICAgICAgICAgICAgIHJldHVybiAtVEFSR0VUX0VJTlZBTDsKICAgICAgICAgIH0KICAgICAgfQpAQCAtMTIzLDcgKzEyNCw3IEBACiAgCiAgICAgIG1tYXBfbG9jaygpOwogIAotQEAgLTY4ODEsNyArNjg3OCw3IEBAIHN0YXRpYyBpbnQgb3Blbl9zZWxmX21hcHModm9pZCAqY3B1X2VudiwgaW50IGZkKQorQEAgLTY5OTAsNyArNjk4Nyw3IEBAIHN0YXRpYyBpbnQgb3Blbl9zZWxmX21hcHModm9pZCAqY3B1X2VudiwgaW50IGZkKQogICAgICAgICAgfQogICAgICAgICAgaWYgKGgyZ192YWxpZChtaW4pKSB7CiAgICAgICAgICAgICAgaW50IGZsYWdzID0gcGFnZV9nZXRfZmxhZ3MoaDJnKG1pbikpOwpAQCAtMTMyLDYgKzEzMywzIEBACiAgICAgICAgICAgICAgaWYgKHBhZ2VfY2hlY2tfcmFuZ2UoaDJnKG1pbiksIG1heCAtIG1pbiwgZmxhZ3MpID09IC0xKSB7CiAgICAgICAgICAgICAgICAgIGNvbnRpbnVlOwogICAgICAgICAgICAgIH0KLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEwLWNvbmZpZ3VyZS1BZGQtcGtnLWNvbmZpZy1oYW5kbGluZy1mb3ItbGliZ2NyeXB0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTAtY29uZmlndXJlLUFkZC1wa2ctY29uZmlnLWhhbmRsaW5nLWZvci1saWJnY3J5cHQucGF0Y2gKaW5kZXggYThhYjdkYS4uMzRkZjc4YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTAtY29uZmlndXJlLUFkZC1wa2ctY29uZmlnLWhhbmRsaW5nLWZvci1saWJnY3J5cHQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTAtY29uZmlndXJlLUFkZC1wa2ctY29uZmlnLWhhbmRsaW5nLWZvci1saWJnY3J5cHQucGF0Y2gKQEAgLTEsNyArMSw3IEBACi1Gcm9tIDUyMTRkZDQ0NjFmMjA5MGVmMDk2NWI0ZDI1MThmNDk5MjdkNjFjYmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGMyMDc2MDdjZGYzOTk2YWQ5NzgzYzNiZmZiY2QzZDY1ZTc0YzAxNTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgogRGF0ZTogV2VkLCAyOCBBdWcgMjAxOSAxOTo1NjoyOCArMDgwMAotU3ViamVjdDogW1FlbXUtZGV2ZWxdIFtQQVRDSF0gY29uZmlndXJlOiBBZGQgcGtnLWNvbmZpZyBoYW5kbGluZyBmb3IgbGliZ2NyeXB0CitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZTogQWRkIHBrZy1jb25maWcgaGFuZGxpbmcgZm9yIGxpYmdjcnlwdAogCiBsaWJnY3J5cHQgbWF5IGFsc28gYmUgY29udHJvbGxlZCBieSBwa2ctY29uZmlnLCB0aGlzIHBhdGNoIGFkZHMgcGtnLWNvbmZpZwogaGFuZGxpbmcgZm9yIGxpYmdjcnlwdC4KQEAgLTksMTIgKzksMTMgQEAKIFVwc3RyZWFtLVN0YXR1czogRGVuaWVkIFtodHRwczovL2xpc3RzLm5vbmdudS5vcmcvYXJjaGl2ZS9odG1sL3FlbXUtZGV2ZWwvMjAxOS0wOC9tc2cwNjMzMy5odG1sXQogCiBTaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgorCiAtLS0KICBjb25maWd1cmUgfCA0OCArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgNDAgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggZTQ0ZTQ1NC4uMGYzNjJhNyAxMDA3NTUKK2luZGV4IDcyZjExYWNhLi5jYWMyNzFjZSAxMDA3NTUKIC0tLSBhL2NvbmZpZ3VyZQogKysrIGIvY29uZmlndXJlCiBAQCAtMjg3NSw2ICsyODc1LDMwIEBAIGhhc19saWJnY3J5cHQoKSB7CkBAIC00OCw3ICs0OSw3IEBACiAgCiAgaWYgdGVzdCAiJG5ldHRsZSIgIT0gIm5vIjsgdGhlbgogICAgICBwYXNzPSJubyIKLUBAIC0yOTAyLDcgKzI5MjYsMTQgQEAgZmkKK0BAIC0yOTE1LDcgKzI5MzksMTQgQEAgZmkKICAKICBpZiB0ZXN0ICIkZ2NyeXB0IiAhPSAibm8iOyB0aGVuCiAgICAgIHBhc3M9Im5vIgpAQCAtNjQsNyArNjUsNyBAQAogICAgICAgICAgZ2NyeXB0X2NmbGFncz0kKGxpYmdjcnlwdC1jb25maWcgLS1jZmxhZ3MpCiAgICAgICAgICBnY3J5cHRfbGlicz0kKGxpYmdjcnlwdC1jb25maWcgLS1saWJzKQogICAgICAgICAgIyBEZWJpYW4gaGFzIHJlbW92ZWQgLWxncGctZXJyb3IgZnJvbSBsaWJnY3J5cHQtY29uZmlnCi1AQCAtMjkxMiwxNSArMjk0MywxNiBAQCBpZiB0ZXN0ICIkZ2NyeXB0IiAhPSAibm8iOyB0aGVuCitAQCAtMjkyNSwxNSArMjk1NiwxNiBAQCBpZiB0ZXN0ICIkZ2NyeXB0IiAhPSAibm8iOyB0aGVuCiAgICAgICAgICB0aGVuCiAgICAgICAgICAgICAgZ2NyeXB0X2xpYnM9IiRnY3J5cHRfbGlicyAtbGdwZy1lcnJvciIKICAgICAgICAgIGZpCkBAIC04OCw2ICs4OSwzIEBACiAgICAgIGlmIHRlc3QgIiRwYXNzIiA9ICJ5ZXMiOyB0aGVuCiAgICAgICAgICBnY3J5cHQ9InllcyIKICAgICAgICAgIGNhdCA+ICRUTVBDIDw8IEVPRgotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMS1ody1pMzg2LXBjLWZpeC1yZWdyZXNzaW9uLWluLXBhcnNpbmctdmdhLWNtZGxpbmUtcGFyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTEtaHctaTM4Ni1wYy1maXgtcmVncmVzc2lvbi1pbi1wYXJzaW5nLXZnYS1jbWRsaW5lLXBhci5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmUwODUwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTEtaHctaTM4Ni1wYy1maXgtcmVncmVzc2lvbi1pbi1wYXJzaW5nLXZnYS1jbWRsaW5lLXBhci5wYXRjaApAQCAtMCwwICsxLDU0IEBACitGcm9tIGE4OGM0MGYwMmFjZTg4ZjA5YjJhODVhNjQ4MzFiMjc3YjJlYmM4OGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQZXRlciBXdSA8cGV0ZXJAbGVrZW5zdGV5bi5ubD4KK0RhdGU6IFNhdCwgMjEgRGVjIDIwMTkgMTc6MjE6MjQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gaHcvaTM4Ni9wYzogZml4IHJlZ3Jlc3Npb24gaW4gcGFyc2luZyB2Z2EgY21kbGluZSBwYXJhbWV0ZXIKKworV2hlbiB0aGUgJ3ZnYT0nIHBhcmFtZXRlciBpcyBzdWNjZWVkZWQgYnkgYW5vdGhlciBwYXJhbWV0ZXIsIFFFTVUgNC4yLjAKK3dvdWxkIHJlZnVzZSB0byBzdGFydCB3aXRoIGEgcmF0aGVyIGNyeXB0aWMgbWVzc2FnZToKKworICAgICQgcWVtdS1zeXN0ZW0teDg2XzY0IC1rZXJuZWwgL2Jvb3Qvdm1saW51ei1saW51eCAtYXBwZW5kICd2Z2E9NzkyIHF1aWV0JworICAgIHFlbXU6IGNhbid0IHBhcnNlICd2Z2EnIHBhcmFtZXRlcjogSW52YWxpZCBhcmd1bWVudAorCitJdCB3YXMgbm90IGNsZWFyIHdoZXRoZXIgdGhpcyBhcHBsaWVkIHRvIHRoZSAnLXZnYSBzdGQnIHBhcmFtZXRlciBvciB0aGUKKyctYXBwZW5kJyBvbmUuIEZpeCB0aGUgcGFyc2luZyByZWdyZXNzaW9uIGFuZCBjbGFyaWZ5IHRoZSBlcnJvci4KKworRml4ZXM6IDEzM2VmMDc0YmQgKCJody9pMzg2L3BjOiByZXBsYWNlIHVzZSBvZiBzdHJ0b2wgd2l0aCBxZW11X3N0cnRvdWkgaW4geDg2X2xvYWRfbGludXgoKSIpCitDYzogU2VyZ2lvIExvcGV6IDxzbHBAcmVkaGF0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IFBldGVyIFd1IDxwZXRlckBsZWtlbnN0ZXluLm5sPgorTWVzc2FnZS1JZDogPDIwMTkxMjIxMTYyMTI0LjExNTkyOTEtMS1wZXRlckBsZWtlbnN0ZXluLm5sPgorQ2M6IHFlbXUtc3RhYmxlQG5vbmdudS5vcmcKK1NpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdGRpZmY7aD1hODhjNDBmMDJhY2U4OGYwOWIyYTg1YTY0ODMxYjI3N2IyZWJjODhjXQorLS0tCisgaHcvaTM4Ni94ODYuYyB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaHcvaTM4Ni94ODYuYyBiL2h3L2kzODYveDg2LmMKK2luZGV4IGQ4YmI1YzJhOTYuLjliOWE0ZDU4MzcgMTAwNjQ0CistLS0gYS9ody9pMzg2L3g4Ni5jCisrKysgYi9ody9pMzg2L3g4Ni5jCitAQCAtNjEyLDYgKzYxMiw3IEBAIHZvaWQgeDg2X2xvYWRfbGludXgoWDg2TWFjaGluZVN0YXRlICp4ODZtcywKKyAgICAgdm1vZGUgPSBzdHJzdHIoa2VybmVsX2NtZGxpbmUsICJ2Z2E9Iik7CisgICAgIGlmICh2bW9kZSkgeworICAgICAgICAgdW5zaWduZWQgaW50IHZpZGVvX21vZGU7CisrICAgICAgICBjb25zdCBjaGFyICplbmQ7CisgICAgICAgICBpbnQgcmV0OworICAgICAgICAgLyogc2tpcCAidmdhPSIgKi8KKyAgICAgICAgIHZtb2RlICs9IDQ7CitAQCAtNjIyLDEwICs2MjMsOSBAQCB2b2lkIHg4Nl9sb2FkX2xpbnV4KFg4Nk1hY2hpbmVTdGF0ZSAqeDg2bXMsCisgICAgICAgICB9IGVsc2UgaWYgKCFzdHJuY21wKHZtb2RlLCAiYXNrIiwgMykpIHsKKyAgICAgICAgICAgICB2aWRlb19tb2RlID0gMHhmZmZkOworICAgICAgICAgfSBlbHNlIHsKKy0gICAgICAgICAgICByZXQgPSBxZW11X3N0cnRvdWkodm1vZGUsIE5VTEwsIDAsICZ2aWRlb19tb2RlKTsKKy0gICAgICAgICAgICBpZiAocmV0ICE9IDApIHsKKy0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICJxZW11OiBjYW4ndCBwYXJzZSAndmdhJyBwYXJhbWV0ZXI6ICVzXG4iLAorLSAgICAgICAgICAgICAgICAgICAgICAgIHN0cmVycm9yKC1yZXQpKTsKKysgICAgICAgICAgICByZXQgPSBxZW11X3N0cnRvdWkodm1vZGUsICZlbmQsIDAsICZ2aWRlb19tb2RlKTsKKysgICAgICAgICAgICBpZiAocmV0ICE9IDAgfHwgKCplbmQgJiYgKmVuZCAhPSAnICcpKSB7CisrICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAicWVtdTogaW52YWxpZCAndmdhPScga2VybmVsIHBhcmFtZXRlci5cbiIpOworICAgICAgICAgICAgICAgICBleGl0KDEpOworICAgICAgICAgICAgIH0KKyAgICAgICAgIH0KKy0tIAorMi4yNS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEwLWZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTItZml4LWxpYmNhcC1oZWFkZXItaXNzdWUtb24tc29tZS1kaXN0cm8ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEwLWZpeC1saWJjYXAtaGVhZGVyLWlzc3VlLW9uLXNvbWUtZGlzdHJvLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvMDAxMi1maXgtbGliY2FwLWhlYWRlci1pc3N1ZS1vbi1zb21lLWRpc3Ryby5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11LzAwMTEtY3B1cy5jLUFkZC1lcnJvci1tZXNzYWdlcy13aGVuLXFlbWlfY3B1X2tpY2tfdGhyZWFkLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEzLWNwdXMuYy1BZGQtZXJyb3ItbWVzc2FnZXMtd2hlbi1xZW1pX2NwdV9raWNrX3RocmVhZC0ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDExLWNwdXMuYy1BZGQtZXJyb3ItbWVzc2FnZXMtd2hlbi1xZW1pX2NwdV9raWNrX3RocmVhZC0ucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS8wMDEzLWNwdXMuYy1BZGQtZXJyb3ItbWVzc2FnZXMtd2hlbi1xZW1pX2NwdV9raWNrX3RocmVhZC0ucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOS0xMjA2OC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAxOS0xMjA2OC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE2NTVlNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMTktMTIwNjgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMDggKzAsMCBAQAotRnJvbSBkZTU5NGU0NzY1OTAyOTMxNmJiZjkzOTFlZmI3OWRhMGExYTA4ZTA4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUGFvbG8gQm9uemluaSA8cGJvbnppbmlAcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgMTQgQXVnIDIwMTkgMTc6MzU6MjEgKzA1MzAKLVN1YmplY3Q6IFtQQVRDSF0gc2NzaTogbHNpOiBleGl0IGluZmluaXRlIGxvb3Agd2hpbGUgZXhlY3V0aW5nIHNjcmlwdAotIChDVkUtMjAxOS0xMjA2OCkKLQotV2hlbiBleGVjdXRpbmcgc2NyaXB0IGluIGxzaV9leGVjdXRlX3NjcmlwdCgpLCB0aGUgTFNJIHNjc2kgYWRhcHRlcgotZW11bGF0b3IgYWR2YW5jZXMgJ3MtPmRzcCcgaW5kZXggdG8gcmVhZCBuZXh0IG9wY29kZS4gVGhpcyBjYW4gbGVhZAotdG8gYW4gaW5maW5pdGUgbG9vcCBpZiB0aGUgbmV4dCBvcGNvZGUgaXMgZW1wdHkuIE1vdmUgdGhlIGV4aXN0aW5nCi1sb29wIGV4aXQgYWZ0ZXIgMTBrIGl0ZXJhdGlvbnMgc28gdGhhdCBpdCBjb3ZlcnMgbm8tb3Agb3Bjb2RlcyBhcwotd2VsbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQucWVtdS5vcmcvP3A9cWVtdS5naXQ7YT1jb21taXQ7aD1kZTU5NGU0NzY1OTAyOTMxNmJiZjkzOTFlZmI3OWRhMGExYTA4ZTA4XQotQ1ZFOiBDVkUtMjAxOS0xMjA2OAotCi1SZXBvcnRlZC1ieTogQnVncyBTeXNTZWMgPGJ1Z3Mtc3lzc2VjQHJ1Yi5kZT4KLVNpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBQcmFzYWQgSiBQYW5kaXQgPHBqcEBmZWRvcmFwcm9qZWN0Lm9yZz4KLVNpZ25lZC1vZmYtYnk6IFBhb2xvIEJvbnppbmkgPHBib256aW5pQHJlZGhhdC5jb20+Ci0KLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBody9zY3NpL2xzaTUzYzg5NWEuYyB8IDQxICsrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDE0IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaHcvc2NzaS9sc2k1M2M4OTVhLmMgYi9ody9zY3NpL2xzaTUzYzg5NWEuYwotaW5kZXggMjIyYTI4Ni4uZWM1M2IxNCAxMDA2NDQKLS0tLSBhL2h3L3Njc2kvbHNpNTNjODk1YS5jCi0rKysgYi9ody9zY3NpL2xzaTUzYzg5NWEuYwotQEAgLTE4Niw2ICsxODYsOSBAQCBzdGF0aWMgY29uc3QgY2hhciAqbmFtZXNbXSA9IHsKLSAvKiBGbGFnIHNldCBpZiB0aGlzIGlzIGEgdGFnZ2VkIGNvbW1hbmQuICAqLwotICNkZWZpbmUgTFNJX1RBR19WQUxJRCAgICAgKDEgPDwgMTYpCi0gCi0rLyogTWF4aW11bSBpbnN0cnVjdGlvbnMgdG8gcHJvY2Vzcy4gKi8KLSsjZGVmaW5lIExTSV9NQVhfSU5TTiAgICAxMDAwMAotKwotIHR5cGVkZWYgc3RydWN0IGxzaV9yZXF1ZXN0IHsKLSAgICAgU0NTSVJlcXVlc3QgKnJlcTsKLSAgICAgdWludDMyX3QgdGFnOwotQEAgLTExMzMsNyArMTEzNiwyMSBAQCBzdGF0aWMgdm9pZCBsc2lfZXhlY3V0ZV9zY3JpcHQoTFNJU3RhdGUgKnMpCi0gCi0gICAgIHMtPmlzdGF0MSB8PSBMU0lfSVNUQVQxX1NSVU47Ci0gYWdhaW46Ci0tICAgIGluc25fcHJvY2Vzc2VkKys7Ci0rICAgIGlmICgrK2luc25fcHJvY2Vzc2VkID4gTFNJX01BWF9JTlNOKSB7Ci0rICAgICAgICAvKiBTb21lIHdpbmRvd3MgZHJpdmVycyBtYWtlIHRoZSBkZXZpY2Ugc3BpbiB3YWl0aW5nIGZvciBhIG1lbW9yeQotKyAgICAgICAgICAgbG9jYXRpb24gdG8gY2hhbmdlLiAgSWYgd2UgaGF2ZSBiZWVuIGV4ZWN1dGVkIGEgbG90IG9mIGNvZGUgdGhlbgotKyAgICAgICAgICAgYXNzdW1lIHRoaXMgaXMgdGhlIGNhc2UgYW5kIGZvcmNlIGFuIHVuZXhwZWN0ZWQgZGV2aWNlIGRpc2Nvbm5lY3QuCi0rICAgICAgICAgICBUaGlzIGlzIGFwcGFyZW50bHkgc3VmZmljaWVudCB0byBiZWF0IHRoZSBkcml2ZXJzIGludG8gc3VibWlzc2lvbi4KLSsgICAgICAgICAqLwotKyAgICAgICAgaWYgKCEocy0+c2llbjAgJiBMU0lfU0lTVDBfVURDKSkgewotKyAgICAgICAgICAgIHFlbXVfbG9nX21hc2soTE9HX0dVRVNUX0VSUk9SLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgImxzaV9zY3NpOiBpbmYuIGxvb3Agd2l0aCBVREMgbWFza2VkIik7Ci0rICAgICAgICB9Ci0rICAgICAgICBsc2lfc2NyaXB0X3Njc2lfaW50ZXJydXB0KHMsIExTSV9TSVNUMF9VREMsIDApOwotKyAgICAgICAgbHNpX2Rpc2Nvbm5lY3Qocyk7Ci0rICAgICAgICB0cmFjZV9sc2lfZXhlY3V0ZV9zY3JpcHRfc3RvcCgpOwotKyAgICAgICAgcmV0dXJuOwotKyAgICB9Ci0gICAgIGluc24gPSByZWFkX2R3b3JkKHMsIHMtPmRzcCk7Ci0gICAgIGlmICghaW5zbikgewotICAgICAgICAgLyogSWYgd2UgcmVjZWl2ZSBhbiBlbXB0eSBvcGNvZGUgaW5jcmVtZW50IHRoZSBEU1AgYnkgNCBieXRlcwotQEAgLTE1NzAsMTkgKzE1ODcsNyBAQCBhZ2FpbjoKLSAgICAgICAgICAgICB9Ci0gICAgICAgICB9Ci0gICAgIH0KLS0gICAgaWYgKGluc25fcHJvY2Vzc2VkID4gMTAwMDAgJiYgcy0+d2FpdGluZyA9PSBMU0lfTk9XQUlUKSB7Ci0tICAgICAgICAvKiBTb21lIHdpbmRvd3MgZHJpdmVycyBtYWtlIHRoZSBkZXZpY2Ugc3BpbiB3YWl0aW5nIGZvciBhIG1lbW9yeQotLSAgICAgICAgICAgbG9jYXRpb24gdG8gY2hhbmdlLiAgSWYgd2UgaGF2ZSBiZWVuIGV4ZWN1dGVkIGEgbG90IG9mIGNvZGUgdGhlbgotLSAgICAgICAgICAgYXNzdW1lIHRoaXMgaXMgdGhlIGNhc2UgYW5kIGZvcmNlIGFuIHVuZXhwZWN0ZWQgZGV2aWNlIGRpc2Nvbm5lY3QuCi0tICAgICAgICAgICBUaGlzIGlzIGFwcGFyZW50bHkgc3VmZmljaWVudCB0byBiZWF0IHRoZSBkcml2ZXJzIGludG8gc3VibWlzc2lvbi4KLS0gICAgICAgICAqLwotLSAgICAgICAgaWYgKCEocy0+c2llbjAgJiBMU0lfU0lTVDBfVURDKSkgewotLSAgICAgICAgICAgIHFlbXVfbG9nX21hc2soTE9HX0dVRVNUX0VSUk9SLAotLSAgICAgICAgICAgICAgICAgICAgICAgICAgImxzaV9zY3NpOiBpbmYuIGxvb3Agd2l0aCBVREMgbWFza2VkIik7Ci0tICAgICAgICB9Ci0tICAgICAgICBsc2lfc2NyaXB0X3Njc2lfaW50ZXJydXB0KHMsIExTSV9TSVNUMF9VREMsIDApOwotLSAgICAgICAgbHNpX2Rpc2Nvbm5lY3Qocyk7Ci0tICAgIH0gZWxzZSBpZiAocy0+aXN0YXQxICYgTFNJX0lTVEFUMV9TUlVOICYmIHMtPndhaXRpbmcgPT0gTFNJX05PV0FJVCkgewotKyAgICBpZiAocy0+aXN0YXQxICYgTFNJX0lTVEFUMV9TUlVOICYmIHMtPndhaXRpbmcgPT0gTFNJX05PV0FJVCkgewotICAgICAgICAgaWYgKHMtPmRjbnRsICYgTFNJX0RDTlRMX1NTTSkgewotICAgICAgICAgICAgIGxzaV9zY3JpcHRfZG1hX2ludGVycnVwdChzLCBMU0lfRFNUQVRfU1NJKTsKLSAgICAgICAgIH0gZWxzZSB7Ci1AQCAtMTk3MCw2ICsxOTc1LDEwIEBAIHN0YXRpYyB2b2lkIGxzaV9yZWdfd3JpdGViKExTSVN0YXRlICpzLCBpbnQgb2Zmc2V0LCB1aW50OF90IHZhbCkKLSAgICAgY2FzZSAweDJmOiAvKiBEU1BbMjQ6MzFdICovCi0gICAgICAgICBzLT5kc3AgJj0gMHgwMGZmZmZmZjsKLSAgICAgICAgIHMtPmRzcCB8PSB2YWwgPDwgMjQ7Ci0rICAgICAgICAvKgotKyAgICAgICAgICogRklYTUU6IGlmIHMtPndhaXRpbmcgIT0gTFNJX05PV0FJVCwgdGhpcyB3aWxsIG9ubHkgZXhlY3V0ZSBvbmUKLSsgICAgICAgICAqIGluc3RydWN0aW9uLiAgSXMgdGhpcyBjb3JyZWN0PwotKyAgICAgICAgICovCi0gICAgICAgICBpZiAoKHMtPmRtb2RlICYgTFNJX0RNT0RFX01BTikgPT0gMAotICAgICAgICAgICAgICYmIChzLT5pc3RhdDEgJiBMU0lfSVNUQVQxX1NSVU4pID09IDApCi0gICAgICAgICAgICAgbHNpX2V4ZWN1dGVfc2NyaXB0KHMpOwotQEAgLTE5ODgsNiArMTk5NywxMCBAQCBzdGF0aWMgdm9pZCBsc2lfcmVnX3dyaXRlYihMU0lTdGF0ZSAqcywgaW50IG9mZnNldCwgdWludDhfdCB2YWwpCi0gICAgICAgICBicmVhazsKLSAgICAgY2FzZSAweDNiOiAvKiBEQ05UTCAqLwotICAgICAgICAgcy0+ZGNudGwgPSB2YWwgJiB+KExTSV9EQ05UTF9QRkYgfCBMU0lfRENOVExfU1REKTsKLSsgICAgICAgIC8qCi0rICAgICAgICAgKiBGSVhNRTogaWYgcy0+d2FpdGluZyAhPSBMU0lfTk9XQUlULCB0aGlzIHdpbGwgb25seSBleGVjdXRlIG9uZQotKyAgICAgICAgICogaW5zdHJ1Y3Rpb24uICBJcyB0aGlzIGNvcnJlY3Q/Ci0rICAgICAgICAgKi8KLSAgICAgICAgIGlmICgodmFsICYgTFNJX0RDTlRMX1NURCkgJiYgKHMtPmlzdGF0MSAmIExTSV9JU1RBVDFfU1JVTikgPT0gMCkKLSAgICAgICAgICAgICBsc2lfZXhlY3V0ZV9zY3JpcHQocyk7Ci0gICAgICAgICBicmVhazsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTExMTAyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTExMTAyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU4ZjNlMWQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtMTExMDIucGF0Y2gKQEAgLTAsMCArMSwxNDggQEAKK0Zyb20gOGZmYjcyNjVhZjY0ZWM4MTc0ODMzNWVjOGYyMGU3YWI1NDJjMzg1MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgorRGF0ZTogVHVlLCAyNCBNYXIgMjAyMCAyMjo1NzoyMiArMDUzMAorU3ViamVjdDogW1BBVENIXSBuZXQ6IHR1bGlwOiBjaGVjayBmcmFtZSBzaXplIGFuZCByL3cgZGF0YSBsZW5ndGgKKworVHVsaXAgbmV0d29yayBkcml2ZXIgd2hpbGUgY29weWluZyB0eC9yeCBidWZmZXJzIGRvZXMgbm90IGNoZWNrCitmcmFtZSBzaXplIGFnYWluc3Qgci93IGRhdGEgbGVuZ3RoLiBUaGlzIG1heSBsZWFkIHRvIE9PQiBidWZmZXIKK2FjY2Vzcy4gQWRkIGNoZWNrIHRvIGF2b2lkIGl0LgorCitMaW1pdCBpdGVyYXRpb25zIG92ZXIgZGVzY3JpcHRvcnMgdG8gYXZvaWQgcG90ZW50aWFsIGluZmluaXRlCitsb29wIGlzc3VlIGluIHR1bGlwX3htaXRfbGlzdF91cGRhdGUuCisKK1JlcG9ydGVkLWJ5OiBMaSBRaWFuZyA8cGFuZ3BlaS5scUBhbnRmaW4uY29tPgorUmVwb3J0ZWQtYnk6IFppbWluZyBaaGFuZyA8ZXpyYWtpZXpAZ21haWwuY29tPgorUmVwb3J0ZWQtYnk6IEphc29uIFdhbmcgPGphc293YW5nQHJlZGhhdC5jb20+CitUZXN0ZWQtYnk6IExpIFFpYW5nIDxsaXEzZWFAZ21haWwuY29tPgorUmV2aWV3ZWQtYnk6IExpIFFpYW5nIDxsaXEzZWFAZ21haWwuY29tPgorU2lnbmVkLW9mZi1ieTogUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+CitTaWduZWQtb2ZmLWJ5OiBKYXNvbiBXYW5nIDxqYXNvd2FuZ0ByZWRoYXQuY29tPgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdC5xZW11Lm9yZy8/cD1xZW11LmdpdDthPWNvbW1pdDtoPThmZmI3MjY1YWY2NGVjODE3NDgzMzVlYzhmMjBlN2FiNTQyYzM4NTBdCitDVkU6IENWRS0yMDIwLTExMTAyCitTaWduZWQtb2ZmLWJ5OiBDaGVlIFlhbmcgTGVlIDxjaGVlLnlhbmcubGVlQGludGVsLmNvbT4KKy0tLQorIGh3L25ldC90dWxpcC5jIHwgMzYgKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDI3IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ody9uZXQvdHVsaXAuYyBiL2h3L25ldC90dWxpcC5jCitpbmRleCBjZmFjMjcxLi4xMjk1ZjUxIDEwMDY0NAorLS0tIGEvaHcvbmV0L3R1bGlwLmMKKysrKyBiL2h3L25ldC90dWxpcC5jCitAQCAtMTcwLDYgKzE3MCwxMCBAQCBzdGF0aWMgdm9pZCB0dWxpcF9jb3B5X3J4X2J5dGVzKFRVTElQU3RhdGUgKnMsIHN0cnVjdCB0dWxpcF9kZXNjcmlwdG9yICpkZXNjKQorICAgICAgICAgfSBlbHNlIHsKKyAgICAgICAgICAgICBsZW4gPSBzLT5yeF9mcmFtZV9sZW47CisgICAgICAgICB9CisrCisrICAgICAgICBpZiAocy0+cnhfZnJhbWVfbGVuICsgbGVuID4gc2l6ZW9mKHMtPnJ4X2ZyYW1lKSkgeworKyAgICAgICAgICAgIHJldHVybjsKKysgICAgICAgIH0KKyAgICAgICAgIHBjaV9kbWFfd3JpdGUoJnMtPmRldiwgZGVzYy0+YnVmX2FkZHIxLCBzLT5yeF9mcmFtZSArCisgICAgICAgICAgICAgKHMtPnJ4X2ZyYW1lX3NpemUgLSBzLT5yeF9mcmFtZV9sZW4pLCBsZW4pOworICAgICAgICAgcy0+cnhfZnJhbWVfbGVuIC09IGxlbjsKK0BAIC0xODEsNiArMTg1LDEwIEBAIHN0YXRpYyB2b2lkIHR1bGlwX2NvcHlfcnhfYnl0ZXMoVFVMSVBTdGF0ZSAqcywgc3RydWN0IHR1bGlwX2Rlc2NyaXB0b3IgKmRlc2MpCisgICAgICAgICB9IGVsc2UgeworICAgICAgICAgICAgIGxlbiA9IHMtPnJ4X2ZyYW1lX2xlbjsKKyAgICAgICAgIH0KKysKKysgICAgICAgIGlmIChzLT5yeF9mcmFtZV9sZW4gKyBsZW4gPiBzaXplb2Yocy0+cnhfZnJhbWUpKSB7CisrICAgICAgICAgICAgcmV0dXJuOworKyAgICAgICAgfQorICAgICAgICAgcGNpX2RtYV93cml0ZSgmcy0+ZGV2LCBkZXNjLT5idWZfYWRkcjIsIHMtPnJ4X2ZyYW1lICsKKyAgICAgICAgICAgICAocy0+cnhfZnJhbWVfc2l6ZSAtIHMtPnJ4X2ZyYW1lX2xlbiksIGxlbik7CisgICAgICAgICBzLT5yeF9mcmFtZV9sZW4gLT0gbGVuOworQEAgLTIyNyw3ICsyMzUsOCBAQCBzdGF0aWMgc3NpemVfdCB0dWxpcF9yZWNlaXZlKFRVTElQU3RhdGUgKnMsIGNvbnN0IHVpbnQ4X3QgKmJ1Ziwgc2l6ZV90IHNpemUpCisgCisgICAgIHRyYWNlX3R1bGlwX3JlY2VpdmUoYnVmLCBzaXplKTsKKyAKKy0gICAgaWYgKHNpemUgPCAxNCB8fCBzaXplID4gMjA0OCB8fCBzLT5yeF9mcmFtZV9sZW4gfHwgdHVsaXBfcnhfc3RvcHBlZChzKSkgeworKyAgICBpZiAoc2l6ZSA8IDE0IHx8IHNpemUgPiBzaXplb2Yocy0+cnhfZnJhbWUpIC0gNAorKyAgICAgICAgfHwgcy0+cnhfZnJhbWVfbGVuIHx8IHR1bGlwX3J4X3N0b3BwZWQocykpIHsKKyAgICAgICAgIHJldHVybiAwOworICAgICB9CisgCitAQCAtMjc1LDcgKzI4NCw2IEBAIHN0YXRpYyBzc2l6ZV90IHR1bGlwX3JlY2VpdmVfbmMoTmV0Q2xpZW50U3RhdGUgKm5jLAorICAgICByZXR1cm4gdHVsaXBfcmVjZWl2ZShxZW11X2dldF9uaWNfb3BhcXVlKG5jKSwgYnVmLCBzaXplKTsKKyB9CisgCistCisgc3RhdGljIE5ldENsaWVudEluZm8gbmV0X3R1bGlwX2luZm8gPSB7CisgICAgIC50eXBlID0gTkVUX0NMSUVOVF9EUklWRVJfTklDLAorICAgICAuc2l6ZSA9IHNpemVvZihOSUNTdGF0ZSksCitAQCAtNTU4LDcgKzU2Niw3IEBAIHN0YXRpYyB2b2lkIHR1bGlwX3R4KFRVTElQU3RhdGUgKnMsIHN0cnVjdCB0dWxpcF9kZXNjcmlwdG9yICpkZXNjKQorICAgICAgICAgaWYgKChzLT5jc3JbNl0gPj4gQ1NSNl9PTV9TSElGVCkgJiBDU1I2X09NX01BU0spIHsKKyAgICAgICAgICAgICAvKiBJbnRlcm5hbCBvciBleHRlcm5hbCBMb29wYmFjayAqLworICAgICAgICAgICAgIHR1bGlwX3JlY2VpdmUocywgcy0+dHhfZnJhbWUsIHMtPnR4X2ZyYW1lX2xlbik7CistICAgICAgICB9IGVsc2UgeworKyAgICAgICAgfSBlbHNlIGlmIChzLT50eF9mcmFtZV9sZW4gPD0gc2l6ZW9mKHMtPnR4X2ZyYW1lKSkgeworICAgICAgICAgICAgIHFlbXVfc2VuZF9wYWNrZXQocWVtdV9nZXRfcXVldWUocy0+bmljKSwKKyAgICAgICAgICAgICAgICAgcy0+dHhfZnJhbWUsIHMtPnR4X2ZyYW1lX2xlbik7CisgICAgICAgICB9CitAQCAtNTcwLDIzICs1NzgsMzEgQEAgc3RhdGljIHZvaWQgdHVsaXBfdHgoVFVMSVBTdGF0ZSAqcywgc3RydWN0IHR1bGlwX2Rlc2NyaXB0b3IgKmRlc2MpCisgICAgIH0KKyB9CisgCistc3RhdGljIHZvaWQgdHVsaXBfY29weV90eF9idWZmZXJzKFRVTElQU3RhdGUgKnMsIHN0cnVjdCB0dWxpcF9kZXNjcmlwdG9yICpkZXNjKQorK3N0YXRpYyBpbnQgdHVsaXBfY29weV90eF9idWZmZXJzKFRVTElQU3RhdGUgKnMsIHN0cnVjdCB0dWxpcF9kZXNjcmlwdG9yICpkZXNjKQorIHsKKyAgICAgaW50IGxlbjEgPSAoZGVzYy0+Y29udHJvbCA+PiBUREVTMV9CVUYxX1NJWkVfU0hJRlQpICYgVERFUzFfQlVGMV9TSVpFX01BU0s7CisgICAgIGludCBsZW4yID0gKGRlc2MtPmNvbnRyb2wgPj4gVERFUzFfQlVGMl9TSVpFX1NISUZUKSAmIFRERVMxX0JVRjJfU0laRV9NQVNLOworIAorKyAgICBpZiAocy0+dHhfZnJhbWVfbGVuICsgbGVuMSA+IHNpemVvZihzLT50eF9mcmFtZSkpIHsKKysgICAgICAgIHJldHVybiAtMTsKKysgICAgfQorICAgICBpZiAobGVuMSkgeworICAgICAgICAgcGNpX2RtYV9yZWFkKCZzLT5kZXYsIGRlc2MtPmJ1Zl9hZGRyMSwKKyAgICAgICAgICAgICBzLT50eF9mcmFtZSArIHMtPnR4X2ZyYW1lX2xlbiwgbGVuMSk7CisgICAgICAgICBzLT50eF9mcmFtZV9sZW4gKz0gbGVuMTsKKyAgICAgfQorIAorKyAgICBpZiAocy0+dHhfZnJhbWVfbGVuICsgbGVuMiA+IHNpemVvZihzLT50eF9mcmFtZSkpIHsKKysgICAgICAgIHJldHVybiAtMTsKKysgICAgfQorICAgICBpZiAobGVuMikgeworICAgICAgICAgcGNpX2RtYV9yZWFkKCZzLT5kZXYsIGRlc2MtPmJ1Zl9hZGRyMiwKKyAgICAgICAgICAgICBzLT50eF9mcmFtZSArIHMtPnR4X2ZyYW1lX2xlbiwgbGVuMik7CisgICAgICAgICBzLT50eF9mcmFtZV9sZW4gKz0gbGVuMjsKKyAgICAgfQorICAgICBkZXNjLT5zdGF0dXMgPSAobGVuMSArIGxlbjIpID8gMCA6IDB4N2ZmZmZmZmY7CisrCisrICAgIHJldHVybiAwOworIH0KKyAKKyBzdGF0aWMgdm9pZCB0dWxpcF9zZXR1cF9maWx0ZXJfYWRkcihUVUxJUFN0YXRlICpzLCB1aW50OF90ICpidWYsIGludCBuKQorQEAgLTY1MSwxMyArNjY3LDE1IEBAIHN0YXRpYyB1aW50MzJfdCB0dWxpcF90cyhUVUxJUFN0YXRlICpzKQorIAorIHN0YXRpYyB2b2lkIHR1bGlwX3htaXRfbGlzdF91cGRhdGUoVFVMSVBTdGF0ZSAqcykKKyB7CisrI2RlZmluZSBUVUxJUF9ERVNDX01BWCAxMjgKKysgICAgdWludDhfdCBpID0gMDsKKyAgICAgc3RydWN0IHR1bGlwX2Rlc2NyaXB0b3IgZGVzYzsKKyAKKyAgICAgaWYgKHR1bGlwX3RzKHMpICE9IENTUjVfVFNfU1VTUEVOREVEKSB7CisgICAgICAgICByZXR1cm47CisgICAgIH0KKyAKKy0gICAgZm9yICg7OykgeworKyAgICBmb3IgKGkgPSAwOyBpIDwgVFVMSVBfREVTQ19NQVg7IGkrKykgeworICAgICAgICAgdHVsaXBfZGVzY19yZWFkKHMsIHMtPmN1cnJlbnRfdHhfZGVzYywgJmRlc2MpOworICAgICAgICAgdHVsaXBfZHVtcF90eF9kZXNjcmlwdG9yKHMsICZkZXNjKTsKKyAKK0BAIC02NzUsMTAgKzY5MywxMCBAQCBzdGF0aWMgdm9pZCB0dWxpcF94bWl0X2xpc3RfdXBkYXRlKFRVTElQU3RhdGUgKnMpCisgICAgICAgICAgICAgICAgIHMtPnR4X2ZyYW1lX2xlbiA9IDA7CisgICAgICAgICAgICAgfQorIAorLSAgICAgICAgICAgIHR1bGlwX2NvcHlfdHhfYnVmZmVycyhzLCAmZGVzYyk7CistCistICAgICAgICAgICAgaWYgKGRlc2MuY29udHJvbCAmIFRERVMxX0xTKSB7CistICAgICAgICAgICAgICAgIHR1bGlwX3R4KHMsICZkZXNjKTsKKysgICAgICAgICAgICBpZiAoIXR1bGlwX2NvcHlfdHhfYnVmZmVycyhzLCAmZGVzYykpIHsKKysgICAgICAgICAgICAgICAgaWYgKGRlc2MuY29udHJvbCAmIFRERVMxX0xTKSB7CisrICAgICAgICAgICAgICAgICAgICB0dWxpcF90eChzLCAmZGVzYyk7CisrICAgICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICB9CisgICAgICAgICB9CisgICAgICAgICB0dWxpcF9kZXNjX3dyaXRlKHMsIHMtPmN1cnJlbnRfdHhfZGVzYywgJmRlc2MpOworLS0gCisxLjguMy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC0xNzExLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTE3MTEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWE3YmM4MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC0xNzExLnBhdGNoCkBAIC0wLDAgKzEsNjQgQEAKK0Zyb20gNjkzZmQyYWNkZjE0ZGQ4NmMwYmY4NTI2MTBmMWMyY2NhODBhNzRkYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEZlbGlwZSBGcmFuY2lvc2kgPGZlbGlwZUBudXRhbml4LmNvbT4KK0RhdGU6IFRodSwgMjMgSmFuIDIwMjAgMTI6NDQ6NTkgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gaXNjc2k6IENhcCBibG9jayBjb3VudCBmcm9tIEdFVCBMQkEgU1RBVFVTIChDVkUtMjAyMC0xNzExKQorCitXaGVuIHF1ZXJ5aW5nIGFuIGlTQ1NJIHNlcnZlciBmb3IgdGhlIHByb3Zpc2lvbmluZyBzdGF0dXMgb2YgYmxvY2tzICh2aWEKK0dFVCBMQkEgU1RBVFVTKSwgUWVtdSBvbmx5IHZhbGlkYXRlcyB0aGF0IHRoZSByZXNwb25zZSBkZXNjcmlwdG9yIHplcm8ncworTEJBIG1hdGNoZXMgdGhlIG9uZSByZXF1ZXN0ZWQuIEdpdmVuIHRoZSBTQ1NJIHNwZWMgYWxsb3dzIHNlcnZlcnMgdG8KK3Jlc3BvbmQgd2l0aCB0aGUgc3RhdHVzIG9mIGJsb2NrcyBiZXlvbmQgdGhlIGVuZCBvZiB0aGUgTFVOLCBRZW11IG1heQoraGF2ZSBpdHMgaGVhcCBjb3JydXB0ZWQgYnkgY2xlYXJpbmcvc2V0dGluZyB0b28gbWFueSBiaXRzIGF0IHRoZSBlbmQgb2YKK2l0cyBhbGxvY21hcCBmb3IgdGhlIExVTi4KKworQSBtYWxpY2lvdXMgZ3Vlc3QgaW4gY29udHJvbCBvZiB0aGUgaVNDU0kgc2VydmVyIGNvdWxkIGNhcmVmdWxseSBwcm9ncmFtCitRZW11J3MgaGVhcCAoYnkgc2VsZWN0aXZlbHkgc2V0dGluZyB0aGUgYml0bWFwKSBhbmQgdGhlbiBzbWFzaCBpdC4KKworVGhpcyBsaW1pdHMgdGhlIG51bWJlciBvZiBiaXRzIHRoYXQgaXNjc2lfY29fYmxvY2tfc3RhdHVzKCkgd2lsbCB0cnkgdG8KK3VwZGF0ZSBpbiB0aGUgYWxsb2NtYXAgc28gaXQgY2FuJ3Qgb3ZlcmZsb3cgdGhlIGJpdG1hcC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXQucWVtdS5vcmcvP3A9cWVtdS5naXQ7YT1wYXRjaDtoPTY5M2ZkMmFjZGYxNGRkODZjMGJmODUyNjEwZjFjMmNjYTgwYTc0ZGNdCitDVkU6IENWRS0yMDIwLTE3MTEKKworRml4ZXM6IENWRS0yMDIwLTE3MTEKK0NjOiBxZW11LXN0YWJsZUBub25nbnUub3JnCitTaWduZWQtb2ZmLWJ5OiBGZWxpcGUgRnJhbmNpb3NpIDxmZWxpcGVAbnV0YW5peC5jb20+CitTaWduZWQtb2ZmLWJ5OiBQZXRlciBUdXJzY2htaWQgPHBldGVyLnR1cnNjaG1AbnV0YW5peC5jb20+CitTaWduZWQtb2ZmLWJ5OiBSYXBoYWVsIE5vcndpdHogPHJhcGhhZWwubm9yd2l0ekBudXRhbml4LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEtldmluIFdvbGYgPGt3b2xmQHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBMZWUgQ2hlZSBZYW5nIDxjaGVlLnlhbmcubGVlQGludGVsLmNvbT4KKy0tLQorIGJsb2NrL2lzY3NpLmMgfCA1ICsrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2Jsb2NrL2lzY3NpLmMgYi9ibG9jay9pc2NzaS5jCitpbmRleCAyYWVhN2UzLi5jYmQ1NzI5IDEwMDY0NAorLS0tIGEvYmxvY2svaXNjc2kuYworKysrIGIvYmxvY2svaXNjc2kuYworQEAgLTcwMSw3ICs3MDEsNyBAQCBzdGF0aWMgaW50IGNvcm91dGluZV9mbiBpc2NzaV9jb19ibG9ja19zdGF0dXMoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsCisgICAgIHN0cnVjdCBzY3NpX2dldF9sYmFfc3RhdHVzICpsYmFzID0gTlVMTDsKKyAgICAgc3RydWN0IHNjc2lfbGJhX3N0YXR1c19kZXNjcmlwdG9yICpsYmFzZCA9IE5VTEw7CisgICAgIHN0cnVjdCBJc2NzaVRhc2sgaVRhc2s7CistICAgIHVpbnQ2NF90IGxiYTsKKysgICAgdWludDY0X3QgbGJhLCBtYXhfYnl0ZXM7CisgICAgIGludCByZXQ7CisgCisgICAgIGlzY3NpX2NvX2luaXRfaXNjc2l0YXNrKGlzY3NpbHVuLCAmaVRhc2spOworQEAgLTcyMSw2ICs3MjEsNyBAQCBzdGF0aWMgaW50IGNvcm91dGluZV9mbiBpc2NzaV9jb19ibG9ja19zdGF0dXMoQmxvY2tEcml2ZXJTdGF0ZSAqYnMsCisgICAgIH0KKyAKKyAgICAgbGJhID0gb2Zmc2V0IC8gaXNjc2lsdW4tPmJsb2NrX3NpemU7CisrICAgIG1heF9ieXRlcyA9IChpc2NzaWx1bi0+bnVtX2Jsb2NrcyAtIGxiYSkgKiBpc2NzaWx1bi0+YmxvY2tfc2l6ZTsKKyAKKyAgICAgcWVtdV9tdXRleF9sb2NrKCZpc2NzaWx1bi0+bXV0ZXgpOworIHJldHJ5OgorQEAgLTc2NCw3ICs3NjUsNyBAQCByZXRyeToKKyAgICAgICAgIGdvdG8gb3V0X3VubG9jazsKKyAgICAgfQorIAorLSAgICAqcG51bSA9IChpbnQ2NF90KSBsYmFzZC0+bnVtX2Jsb2NrcyAqIGlzY3NpbHVuLT5ibG9ja19zaXplOworKyAgICAqcG51bSA9IE1JTigoaW50NjRfdCkgbGJhc2QtPm51bV9ibG9ja3MgKiBpc2NzaWx1bi0+YmxvY2tfc2l6ZSwgbWF4X2J5dGVzKTsKKyAKKyAgICAgaWYgKGxiYXNkLT5wcm92aXNpb25pbmcgPT0gU0NTSV9QUk9WSVNJT05JTkdfVFlQRV9ERUFMTE9DQVRFRCB8fAorICAgICAgICAgbGJhc2QtPnByb3Zpc2lvbmluZyA9PSBTQ1NJX1BST1ZJU0lPTklOR19UWVBFX0FOQ0hPUkVEKSB7CistLSAKKzEuOC4zLjEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MDM5LTEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtNzAzOS0xLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRmNmJjYTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtNzAzOS0xLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gYjI2NjNkNTI3YTE5OTJiYTk4YzAyNjY0NThiMjFhZGEzYjlkMGQyZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUaHUsIDI3IEZlYiAyMDIwIDEyOjA3OjM1ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHRjcF9lbXU6IEZpeCBvb2IgYWNjZXNzCisKK1RoZSBtYWluIGxvb3Agb25seSBjaGVja3MgZm9yIG9uZSBhdmFpbGFibGUgYnl0ZSwgd2hpbGUgd2Ugc29tZXRpbWVzCituZWVkIHR3byBieXRlcy4KKworQ1ZFOiBDVkUtMjAyMC03MDM5CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL3NsaXJwL2xpYnNsaXJwL2NvbW1pdC8yNjU1ZmZmZWQ3YTllNzY1YmNiNDcwMWRkODc2ZTlkYWI5NzVmMjg5XQorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgc2xpcnAvc3JjL3RjcF9zdWJyLmMgfCA2ICsrKysrKworIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NsaXJwL3NyYy90Y3Bfc3Vici5jIGIvc2xpcnAvc3JjL3RjcF9zdWJyLmMKK2luZGV4IGQ2ZGQxMzMuLjRiZWEyZDQgMTAwNjQ0CistLS0gYS9zbGlycC9zcmMvdGNwX3N1YnIuYworKysrIGIvc2xpcnAvc3JjL3RjcF9zdWJyLmMKK0BAIC04ODYsNiArODg2LDggQEAgaW50IHRjcF9lbXUoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICptKQorICAgICAgICAgICAgICAgICBicmVhazsKKyAKKyAgICAgICAgICAgICBjYXNlIDU6CisrICAgICAgICAgICAgICAgIGlmIChicHRyID09IG0tPm1fZGF0YSArIG0tPm1fbGVuIC0gMSkKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsgLyogV2UgbmVlZCB0d28gYnl0ZXMgKi8KKyAgICAgICAgICAgICAgICAgLyoKKyAgICAgICAgICAgICAgICAgICogVGhlIGRpZmZlcmVuY2UgYmV0d2VlbiB2ZXJzaW9ucyAxLjAgYW5kCisgICAgICAgICAgICAgICAgICAqIDIuMCBpcyBoZXJlLiBGb3IgZnV0dXJlIHZlcnNpb25zIG9mCitAQCAtOTAxLDYgKzkwMywxMCBAQCBpbnQgdGNwX2VtdShzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm0pCisgICAgICAgICAgICAgICAgIC8qIFRoaXMgaXMgdGhlIGZpZWxkIGNvbnRhaW5pbmcgdGhlIHBvcnQKKyAgICAgICAgICAgICAgICAgICogbnVtYmVyIHRoYXQgUkEtcGxheWVyIGlzIGxpc3RlbmluZyB0by4KKyAgICAgICAgICAgICAgICAgICovCisrCisrICAgICAgICAgICAgICAgIGlmIChicHRyID09IG0tPm1fZGF0YSArIG0tPm1fbGVuIC0gMSkKKysgICAgICAgICAgICAgICAgICAgICAgICByZXR1cm4gMTsgLyogV2UgbmVlZCB0d28gYnl0ZXMgKi8KKysKKyAgICAgICAgICAgICAgICAgbHBvcnQgPSAoKCh1aW50OF90ICopYnB0cilbMF0gPDwgOCkgKyAoKHVpbnQ4X3QgKilicHRyKVsxXTsKKyAgICAgICAgICAgICAgICAgaWYgKGxwb3J0IDwgNjk3MCkKKyAgICAgICAgICAgICAgICAgICAgIGxwb3J0ICs9IDI1NjsgLyogZG9uJ3Qga25vdyB3aHkgKi8KKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTcwMzktMi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MDM5LTIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGEwMGZhMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MDM5LTIucGF0Y2gKQEAgLTAsMCArMSw1OSBAQAorRnJvbSA4ZjY3ZTc2ZTQxNDhlMzdmM2Q4ZDJiY2JkZWU3NDE3ZmRlZGI3NjY5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjcgRmViIDIwMjAgMTI6MTA6MzQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc2xpcnA6IHVzZSBjb3JyZWN0IHNpemUgd2hpbGUgZW11bGF0aW5nIGNvbW1hbmRzCisKK1doaWxlIGVtdWxhdGluZyBzZXJ2aWNlcyBpbiB0Y3BfZW11KCksIGl0IHVzZXMgJ21idWYnIHNpemUKKydtLT5tX3NpemUnIHRvIHdyaXRlIGNvbW1hbmRzIHZpYSBzbnByaW50ZigzKS4gVXNlIE1fRlJFRVJPT00obSkKK3NpemUgdG8gYXZvaWQgcG9zc2libGUgT09CIGFjY2Vzcy4KK1NpZ25lZC1vZmYtYnk6IGRlZmF1bHQgYXZhdGFyUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+CitTaWduZWQtb2ZmLWJ5OiBTYW11ZWwgVGhpYmF1bHQncyBhdmF0YXJTYW11ZWwgVGhpYmF1bHQKKzxzYW11ZWwudGhpYmF1bHRAZW5zLWx5b24ub3JnPgorTWVzc2FnZS1JZDogPDIwMjAwMTA5MDk0MjI4Ljc5NzY0LTMtcHBhbmRpdEByZWRoYXQuY29tPgorCitDVkU6IENWRS0yMDIwLTcwMzkKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvc2xpcnAvbGlic2xpcnAvY29tbWl0LzgyZWJlOWMzNzBhMGUyOTcwZmI1Njk1YWExOWFhNTIxNGE2YTFjODBdCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBzbGlycC9zcmMvdGNwX3N1YnIuYyB8IDkgKysrKy0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NsaXJwL3NyYy90Y3Bfc3Vici5jIGIvc2xpcnAvc3JjL3RjcF9zdWJyLmMKK2luZGV4IDRiZWEyZDQuLmU4ZWQ0ZWYgMTAwNjQ0CistLS0gYS9zbGlycC9zcmMvdGNwX3N1YnIuYworKysrIGIvc2xpcnAvc3JjL3RjcF9zdWJyLmMKK0BAIC02OTYsNyArNjk2LDcgQEAgaW50IHRjcF9lbXUoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICptKQorICAgICAgICAgICAgIG40ID0gKGxhZGRyICYgMHhmZik7CisgCisgICAgICAgICAgICAgbS0+bV9sZW4gPSBicHRyIC0gbS0+bV9kYXRhOyAvKiBBZGp1c3QgbGVuZ3RoICovCistICAgICAgICAgICAgbS0+bV9sZW4gKz0gc25wcmludGYoYnB0ciwgbS0+bV9zaXplIC0gbS0+bV9sZW4sCisrICAgICAgICAgICAgbS0+bV9sZW4gKz0gc25wcmludGYoYnB0ciwgTV9GUkVFUk9PTShtKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiT1JUICVkLCVkLCVkLCVkLCVkLCVkXHJcbiVzIiwgbjEsIG4yLCBuMywgbjQsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbjUsIG42LCB4ID09IDcgPyBidWZmIDogIiIpOworICAgICAgICAgICAgIHJldHVybiAxOworQEAgLTczMSw4ICs3MzEsNyBAQCBpbnQgdGNwX2VtdShzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm0pCisgICAgICAgICAgICAgbjQgPSAobGFkZHIgJiAweGZmKTsKKyAKKyAgICAgICAgICAgICBtLT5tX2xlbiA9IGJwdHIgLSBtLT5tX2RhdGE7IC8qIEFkanVzdCBsZW5ndGggKi8KKy0gICAgICAgICAgICBtLT5tX2xlbiArPQorLSAgICAgICAgICAgICAgICBzbnByaW50ZihicHRyLCBtLT5tX3NpemUgLSBtLT5tX2xlbiwKKysgICAgICAgICAgICBtLT5tX2xlbiArPSBzbnByaW50ZihicHRyLCBNX0ZSRUVST09NKG0pLAorICAgICAgICAgICAgICAgICAgICAgICAgICAiMjcgRW50ZXJpbmcgUGFzc2l2ZSBNb2RlICglZCwlZCwlZCwlZCwlZCwlZClcclxuJXMiLAorICAgICAgICAgICAgICAgICAgICAgICAgICBuMSwgbjIsIG4zLCBuNCwgbjUsIG42LCB4ID09IDcgPyBidWZmIDogIiIpOworIAorQEAgLTc1OCw4ICs3NTcsOCBAQCBpbnQgdGNwX2VtdShzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm0pCisgICAgICAgICBpZiAobS0+bV9kYXRhW20tPm1fbGVuIC0gMV0gPT0gJ1wwJyAmJiBscG9ydCAhPSAwICYmCisgICAgICAgICAgICAgKHNvID0gdGNwX2xpc3RlbihzbGlycCwgSU5BRERSX0FOWSwgMCwgc28tPnNvX2xhZGRyLnNfYWRkciwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGh0b25zKGxwb3J0KSwgU1NfRkFDQ0VQVE9OQ0UpKSAhPSBOVUxMKQorLSAgICAgICAgICAgIG0tPm1fbGVuID0KKy0gICAgICAgICAgICAgICAgc25wcmludGYobS0+bV9kYXRhLCBtLT5tX3NpemUsICIlZCIsIG50b2hzKHNvLT5zb19mcG9ydCkpICsgMTsKKysgICAgICAgICAgICBtLT5tX2xlbiA9IHNucHJpbnRmKG0tPm1fZGF0YSwgTV9ST09NKG0pLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVkIiwgbnRvaHMoc28tPnNvX2Zwb3J0KSkgKyAxOworICAgICAgICAgcmV0dXJuIDE7CisgCisgICAgIGNhc2UgRU1VX0lSQzoKKy0tIAorMi43LjQKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L0NWRS0yMDIwLTcwMzktMy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MDM5LTMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzBjZTQ4MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MDM5LTMucGF0Y2gKQEAgLTAsMCArMSw2NCBAQAorRnJvbSAwYjAzOTU5YjcyMDM2YWZjZTE1MTc4MzcyMGQ5ZTU0OTg4Y2Y3NmVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IFRodSwgMjcgRmViIDIwMjAgMTI6MTU6MDQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc2xpcnA6IHVzZSBjb3JyZWN0IHNpemUgd2hpbGUgZW11bGF0aW5nIElSQyBjb21tYW5kcworCitXaGlsZSBlbXVsYXRpbmcgSVJDIERDQyBjb21tYW5kcywgdGNwX2VtdSgpIHVzZXMgJ21idWYnIHNpemUKKydtLT5tX3NpemUnIHRvIHdyaXRlIERDQyBjb21tYW5kcyB2aWEgc25wcmludGYoMykuIFRoaXMgbWF5CitsZWFkIHRvIE9PQiB3cml0ZSBhY2Nlc3MsIGJlY2F1c2UgJ2JwdHInIHBvaW50cyBzb21ld2hlcmUgaW4KK3RoZSBtaWRkbGUgb2YgJ21idWYnIGJ1ZmZlciwgbm90IGF0IHRoZSBzdGFydC4gVXNlIE1fRlJFRVJPT00obSkKK3NpemUgdG8gYXZvaWQgT09CIGFjY2Vzcy4KK1JlcG9ydGVkLWJ5OiBkZWZhdWx0IGF2YXRhclZpc2hudSBEZXYgVEogPHZpc2hudWRldnRqQGdtYWlsLmNvbT4KK1NpZ25lZC1vZmYtYnk6IGRlZmF1bHQgYXZhdGFyUHJhc2FkIEogUGFuZGl0IDxwanBAZmVkb3JhcHJvamVjdC5vcmc+CitSZXZpZXdlZC1ieTogU2FtdWVsIFRoaWJhdWx0J3MgYXZhdGFyU2FtdWVsIFRoaWJhdWx0Cis8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9yZz4KK01lc3NhZ2UtSWQ6IDwyMDIwMDEwOTA5NDIyOC43OTc2NC0yLXBwYW5kaXRAcmVkaGF0LmNvbT4KKworQ1ZFOiBDVkUtMjAyMC03MDM5CitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitbaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL3NsaXJwL2xpYnNsaXJwL2NvbW1pdC9jZTEzMTAyOWQ2ZDRhNDA1Y2I3ZDNhYzY3MTZkMDNlNThmYjRhNWQ5XQorCitTaWduZWQtb2ZmLWJ5OiBDaGFuZ3FpbmcgTGkgPGNoYW5ncWluZy5saUB3aW5kcml2ZXIuY29tPgorLS0tCisgc2xpcnAvc3JjL3RjcF9zdWJyLmMgfCAxMSArKysrKystLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zbGlycC9zcmMvdGNwX3N1YnIuYyBiL3NsaXJwL3NyYy90Y3Bfc3Vici5jCitpbmRleCBlOGVkNGVmLi4zYTRhOGVlIDEwMDY0NAorLS0tIGEvc2xpcnAvc3JjL3RjcF9zdWJyLmMKKysrKyBiL3NsaXJwL3NyYy90Y3Bfc3Vici5jCitAQCAtNzc3LDcgKzc3Nyw4IEBAIGludCB0Y3BfZW11KHN0cnVjdCBzb2NrZXQgKnNvLCBzdHJ1Y3QgbWJ1ZiAqbSkKKyAgICAgICAgICAgICAgICAgcmV0dXJuIDE7CisgICAgICAgICAgICAgfQorICAgICAgICAgICAgIG0tPm1fbGVuID0gYnB0ciAtIG0tPm1fZGF0YTsgLyogQWRqdXN0IGxlbmd0aCAqLworLSAgICAgICAgICAgIG0tPm1fbGVuICs9IHNucHJpbnRmKGJwdHIsIG0tPm1fc2l6ZSwgIkRDQyBDSEFUIGNoYXQgJWx1ICV1JWNcbiIsCisrICAgICAgICAgICAgbS0+bV9sZW4gKz0gc25wcmludGYoYnB0ciwgTV9GUkVFUk9PTShtKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAiRENDIENIQVQgY2hhdCAlbHUgJXUlY1xuIiwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZyludG9obChzby0+c29fZmFkZHIuc19hZGRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBudG9ocyhzby0+c29fZnBvcnQpLCAxKTsKKyAgICAgICAgIH0gZWxzZSBpZiAoc3NjYW5mKGJwdHIsICJEQ0MgU0VORCAlMjU2cyAldSAldSAldSIsIGJ1ZmYsICZsYWRkciwgJmxwb3J0LAorQEAgLTc4Nyw4ICs3ODgsOCBAQCBpbnQgdGNwX2VtdShzdHJ1Y3Qgc29ja2V0ICpzbywgc3RydWN0IG1idWYgKm0pCisgICAgICAgICAgICAgICAgIHJldHVybiAxOworICAgICAgICAgICAgIH0KKyAgICAgICAgICAgICBtLT5tX2xlbiA9IGJwdHIgLSBtLT5tX2RhdGE7IC8qIEFkanVzdCBsZW5ndGggKi8KKy0gICAgICAgICAgICBtLT5tX2xlbiArPQorLSAgICAgICAgICAgICAgICBzbnByaW50ZihicHRyLCBtLT5tX3NpemUsICJEQ0MgU0VORCAlcyAlbHUgJXUgJXUlY1xuIiwgYnVmZiwKKysgICAgICAgICAgICBtLT5tX2xlbiArPSBzbnByaW50ZihicHRyLCBNX0ZSRUVST09NKG0pLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAiRENDIFNFTkQgJXMgJWx1ICV1ICV1JWNcbiIsIGJ1ZmYsCisgICAgICAgICAgICAgICAgICAgICAgICAgICh1bnNpZ25lZCBsb25nKW50b2hsKHNvLT5zb19mYWRkci5zX2FkZHIpLAorICAgICAgICAgICAgICAgICAgICAgICAgICBudG9ocyhzby0+c29fZnBvcnQpLCBuMSwgMSk7CisgICAgICAgICB9IGVsc2UgaWYgKHNzY2FuZihicHRyLCAiRENDIE1PVkUgJTI1NnMgJXUgJXUgJXUiLCBidWZmLCAmbGFkZHIsICZscG9ydCwKK0BAIC03OTgsOCArNzk5LDggQEAgaW50IHRjcF9lbXUoc3RydWN0IHNvY2tldCAqc28sIHN0cnVjdCBtYnVmICptKQorICAgICAgICAgICAgICAgICByZXR1cm4gMTsKKyAgICAgICAgICAgICB9CisgICAgICAgICAgICAgbS0+bV9sZW4gPSBicHRyIC0gbS0+bV9kYXRhOyAvKiBBZGp1c3QgbGVuZ3RoICovCistICAgICAgICAgICAgbS0+bV9sZW4gKz0KKy0gICAgICAgICAgICAgICAgc25wcmludGYoYnB0ciwgbS0+bV9zaXplLCAiRENDIE1PVkUgJXMgJWx1ICV1ICV1JWNcbiIsIGJ1ZmYsCisrICAgICAgICAgICAgbS0+bV9sZW4gKz0gc25wcmludGYoYnB0ciwgTV9GUkVFUk9PTShtKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIkRDQyBNT1ZFICVzICVsdSAldSAldSVjXG4iLCBidWZmLAorICAgICAgICAgICAgICAgICAgICAgICAgICAodW5zaWduZWQgbG9uZyludG9obChzby0+c29fZmFkZHIuc19hZGRyKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgbnRvaHMoc28tPnNvX2Zwb3J0KSwgbjEsIDEpOworICAgICAgICAgfQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtNzIxMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9DVkUtMjAyMC03MjExLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjExYmU0YzkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvQ1ZFLTIwMjAtNzIxMS5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDE0ZWMzNmUxMDdhOGM5YWY3ZDBhODBjMzU3MWZlMzliMjkxZmYxZDQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQcmFzYWQgSiBQYW5kaXQgPHBqcEBmZWRvcmFwcm9qZWN0Lm9yZz4KK0RhdGU6IE1vbiwgMTMgSmFuIDIwMjAgMTc6NDQ6MzEgKzA1MzAKK1N1YmplY3Q6IFtQQVRDSF0gc2xpcnA6IHRmdHA6IHJlc3RyaWN0IHJlbGF0aXZlIHBhdGggYWNjZXNzCisKK3RmdHAgcmVzdHJpY3RzIHJlbGF0aXZlIG9yIGRpcmVjdG9yeSBwYXRoIGFjY2VzcyBvbiBMaW51eCBzeXN0ZW1zLgorQXBwbHkgc2FtZSByZXN0cmljdGlvbnMgb24gV2luZG93cyBzeXN0ZW1zIHRvby4gSXQgaGVscHMgdG8gYXZvaWQKK2RpcmVjdG9yeSB0cmF2ZXJzYWwgaXNzdWUuCisKK0ZpeGVzOiBodHRwczovL2J1Z3MubGF1bmNocGFkLm5ldC9xZW11LytidWcvMTgxMjQ1MQorUmVwb3J0ZWQtYnk6IFBldGVyIE1heWRlbGwgPHBldGVyLm1heWRlbGxAbGluYXJvLm9yZz4KK1NpZ25lZC1vZmYtYnk6IFByYXNhZCBKIFBhbmRpdCA8cGpwQGZlZG9yYXByb2plY3Qub3JnPgorUmV2aWV3ZWQtYnk6IFNhbXVlbCBUaGliYXVsdCA8c2FtdWVsLnRoaWJhdWx0QGVucy1seW9uLm9yZz4KK01lc3NhZ2UtSWQ6IDwyMDIwMDExMzEyMTQzMS4xNTY3MDgtMS1wcGFuZGl0QHJlZGhhdC5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy9zbGlycC9saWJzbGlycC8tL2NvbW1pdC8xNGVjMzZlMTA3YThjOWFmN2QwYTgwYzM1NzFmZTM5YjI5MWZmMWQ0LnBhdGNoXQorQ1ZFOiBDVkUtMjAyMC03MjExCitTaWduZWQtb2ZmLWJ5OiBDaGVlIFlhbmcgTGVlIDxjaGVlLnlhbmcubGVlQGludGVsLmNvbT4KKworLS0tCisgc2xpcnAvc3JjL3RmdHAuYyB8IDkgKysrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NsaXJwL3NyYy90ZnRwLmMgYi9zbGlycC9zcmMvdGZ0cC5jCitpbmRleCAwOTNjMmUwLi5lNTJlNzFiIDEwMDY0NAorLS0tIGEvc2xpcnAvc3JjL3RmdHAuYworKysrIGIvc2xpcnAvc3JjL3RmdHAuYworQEAgLTM0NCw4ICszNDQsMTMgQEAgc3RhdGljIHZvaWQgdGZ0cF9oYW5kbGVfcnJxKFNsaXJwICpzbGlycCwgc3RydWN0IHNvY2thZGRyX3N0b3JhZ2UgKnNyY3NhcywKKyAgICAgayArPSA2OyAvKiBza2lwcGluZyBvY3RldCAqLworIAorICAgICAvKiBkbyBzYW5pdHkgY2hlY2tzIG9uIHRoZSBmaWxlbmFtZSAqLworLSAgICBpZiAoIXN0cm5jbXAocmVxX2ZuYW1lLCAiLi4vIiwgMykgfHwKKy0gICAgICAgIHJlcV9mbmFtZVtzdHJsZW4ocmVxX2ZuYW1lKSAtIDFdID09ICcvJyB8fCBzdHJzdHIocmVxX2ZuYW1lLCAiLy4uLyIpKSB7CisrICAgIGlmICgKKysjaWZkZWYgR19PU19XSU4zMgorKyAgICAgICAgc3Ryc3RyKHJlcV9mbmFtZSwgIi4uXFwiKSB8fAorKyAgICAgICAgcmVxX2ZuYW1lW3N0cmxlbihyZXFfZm5hbWUpIC0gMV0gPT0gJ1xcJyB8fAorKyNlbmRpZgorKyAgICAgICAgc3Ryc3RyKHJlcV9mbmFtZSwgIi4uLyIpIHx8CisrICAgICAgICByZXFfZm5hbWVbc3RybGVuKHJlcV9mbmFtZSkgLSAxXSA9PSAnLycpIHsKKyAgICAgICAgIHRmdHBfc2VuZF9lcnJvcihzcHQsIDIsICJBY2Nlc3MgdmlvbGF0aW9uIiwgdHApOworICAgICAgICAgcmV0dXJuOworICAgICB9CistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11L3J1bi1wdGVzdAppbmRleCAyMjA2YjMxLi5iMjVhNzkyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXUvcnVuLXB0ZXN0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdS9ydW4tcHRlc3QKQEAgLTcsNCArNyw0IEBACiBleHBvcnQgU1JDX1BBVEg9JHB0ZXN0ZGlyCiAKIGNkICRwdGVzdGRpci90ZXN0cwotbWFrZSAtZiBNYWtlZmlsZS5pbmNsdWRlIC1rIHJ1bnRlc3QtVEVTVFMgfCBzZWQgJy86IE9LLyBzL14vUEFTUzogL2cnCittYWtlIC1mIE1ha2VmaWxlLmluY2x1ZGUgLWsgcnVudGVzdC1URVNUUyB8IHNlZCAnL15vayAvcy9vayAvUEFTUzogL2cnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfNC4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9xZW11L3FlbXVfNC4yLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3FlbXUvcWVtdV80LjEuMC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcWVtdS9xZW11XzQuMi4wLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1SaXAtb3V0LXBhcnRpYWwtc3VwcG9ydC1mb3ItdW51c2VkLU1EMi1hbmQtUklQRU1EMTYwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtUmlwLW91dC1wYXJ0aWFsLXN1cHBvcnQtZm9yLXVudXNlZC1NRDItYW5kLVJJUEVNRDE2MC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MzRlMzhiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtUmlwLW91dC1wYXJ0aWFsLXN1cHBvcnQtZm9yLXVudXNlZC1NRDItYW5kLVJJUEVNRDE2MC5wYXRjaApAQCAtMCwwICsxLDgxIEBACitGcm9tIDJkNTNkMWUzMDhhNWJkMTVhMTZjYzI4OWZhN2UxZjI2NGVhNzA2YmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBQYW51IE1hdGlsYWluZW4gPHBtYXRpbGFpQHJlZGhhdC5jb20+CitEYXRlOiBUdWUsIDI2IEp1biAyMDE4IDEwOjQ2OjE0ICswMzAwCitTdWJqZWN0OiBbUEFUQ0hdIFJpcCBvdXQgcGFydGlhbCBzdXBwb3J0IGZvciB1bnVzZWQgTUQyIGFuZCBSSVBFTUQxNjAgZGlnZXN0cworCitJbnNwaXJlZCBieSAjNDUzLCBhZGRpbmcgY29uZmlndXJlLWNoZWNrcyBmb3IgdW51c2VkIGRpZ2VzdHMgYWxnb3JpdGhtcworc2VlbXMgbm9uc2Vuc2ljYWwsIGF0IG5vIHBvaW50IGluIHJwbSBoaXN0b3J5IGhhdmUgdGhlc2UgYWxnb3JpdGhtcyBiZWVuCit1c2VkIGZvciBhbnl0aGluZyBpbiBycG0gc28gdGhlcmUncyBub3QgZXZlbiBiYWNrd2FyZCBjb21wYXRpYmlsaXR5IHRvCitjYXJlIGFib3V0LiBTbyB0aGUgcXVlc3Rpb24gYmVjb21lcyB3aHkgZG8gd2UgYXBwZWFyIHRvIGhhdmUgKHNvbWUpCitzdXBwb3J0IGZvciB0aG9zZSB1bnVzZWQgYWxnb3JpdGhtcz8gU28gbGV0cyBkb24ndCwgcHJvYmxlbSBzb2x2ZWQuLi4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9jb21taXQvZmY0YjkxMTFhZWJhMDFkZDAyNWRkMTMzY2U2MTdmYjgwZjczOThhMF0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgcnBtaW8vZGlnZXN0X2JlZWNyeXB0LmMgfCA3IC0tLS0tLS0KKyBycG1pby9kaWdlc3RfbnNzLmMgICAgICB8IDIgLS0KKyBycG1pby9kaWdlc3Rfb3BlbnNzbC5jICB8IDYgLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3JwbWlvL2RpZ2VzdF9iZWVjcnlwdC5jIGIvcnBtaW8vZGlnZXN0X2JlZWNyeXB0LmMKK2luZGV4IDU5NzAyN2UyNS4uNjUzYTM5NDkxIDEwMDY0NAorLS0tIGEvcnBtaW8vZGlnZXN0X2JlZWNyeXB0LmMKKysrKyBiL3JwbWlvL2RpZ2VzdF9iZWVjcnlwdC5jCitAQCAtMTMyLDEwICsxMzIsNiBAQCBESUdFU1RfQ1RYIHJwbURpZ2VzdEluaXQoaW50IGhhc2hhbGdvLCBycG1EaWdlc3RGbGFncyBmbGFncykKKyAJY3R4LT5EaWdlc3QgPSAodm9pZCAqKSBzaGE1MTJEaWdlc3Q7CisgCWJyZWFrOworICNlbmRpZgorLSAgICBjYXNlIFBHUEhBU0hBTEdPX1JJUEVNRDE2MDoKKy0gICAgY2FzZSBQR1BIQVNIQUxHT19NRDI6CistICAgIGNhc2UgUEdQSEFTSEFMR09fVElHRVIxOTI6CistICAgIGNhc2UgUEdQSEFTSEFMR09fSEFWQUxfNV8xNjA6CisgICAgIGRlZmF1bHQ6CisgCWZyZWUoY3R4KTsKKyAJcmV0dXJuIE5VTEw7CitAQCAtMjkyLDkgKzI4OCw2IEBAIHN0YXRpYyBpbnQgcGdwVmVyaWZ5U2lnUlNBKHBncERpZ0FsZyBwZ3BrZXksIHBncERpZ0FsZyBwZ3BzaWcsIHVpbnQ4X3QgKmhhc2gsIHNpCisgICAgIGNhc2UgUEdQSEFTSEFMR09fU0hBMToKKyAgICAgICAgIHByZWZpeCA9ICIzMDIxMzAwOTA2MDUyYjBlMDMwMjFhMDUwMDA0MTQiOworICAgICAgICAgYnJlYWs7CistICAgIGNhc2UgUEdQSEFTSEFMR09fTUQyOgorLSAgICAgICAgcHJlZml4ID0gIjMwMjAzMDBjMDYwODJhODY0ODg2ZjcwZDAyMDIwNTAwMDQxMCI7CistICAgICAgICBicmVhazsKKyAgICAgY2FzZSBQR1BIQVNIQUxHT19TSEEyNTY6CisgICAgICAgICBwcmVmaXggPSAiMzAzMTMwMGQwNjA5NjA4NjQ4MDE2NTAzMDQwMjAxMDUwMDA0MjAiOworICAgICAgICAgYnJlYWs7CitkaWZmIC0tZ2l0IGEvcnBtaW8vZGlnZXN0X25zcy5jIGIvcnBtaW8vZGlnZXN0X25zcy5jCitpbmRleCBlMTE5MjBlM2UuLmIzZDJiNTU5NSAxMDA2NDQKKy0tLSBhL3JwbWlvL2RpZ2VzdF9uc3MuYworKysrIGIvcnBtaW8vZGlnZXN0X25zcy5jCitAQCAtMTE3LDcgKzExNyw2IEBAIHN0YXRpYyBIQVNIX0hhc2hUeXBlIGdldEhhc2hUeXBlKGludCBoYXNoYWxnbykKKyB7CisgICAgIHN3aXRjaCAoaGFzaGFsZ28pIHsKKyAgICAgY2FzZSBQR1BIQVNIQUxHT19NRDU6CXJldHVybiBIQVNIX0FsZ01ENTsKKy0gICAgY2FzZSBQR1BIQVNIQUxHT19NRDI6CXJldHVybiBIQVNIX0FsZ01EMjsKKyAgICAgY2FzZSBQR1BIQVNIQUxHT19TSEExOglyZXR1cm4gSEFTSF9BbGdTSEExOworICNpZmRlZiBTSEEyMjRfTEVOR1RICisgICAgIGNhc2UgUEdQSEFTSEFMR09fU0hBMjI0OglyZXR1cm4gSEFTSF9BbGdTSEEyMjQ7CitAQCAtMjE3LDcgKzIxNiw2IEBAIHN0YXRpYyBTRUNPaWRUYWcgZ2V0SGFzaEFsZyh1bnNpZ25lZCBpbnQgaGFzaGFsZ28pCisgeworICAgICBzd2l0Y2ggKGhhc2hhbGdvKSB7CisgICAgIGNhc2UgUEdQSEFTSEFMR09fTUQ1OglyZXR1cm4gU0VDX09JRF9NRDU7CistICAgIGNhc2UgUEdQSEFTSEFMR09fTUQyOglyZXR1cm4gU0VDX09JRF9NRDI7CisgICAgIGNhc2UgUEdQSEFTSEFMR09fU0hBMToJcmV0dXJuIFNFQ19PSURfU0hBMTsKKyAjaWZkZWYgU0hBMjI0X0xFTkdUSAorICAgICBjYXNlIFBHUEhBU0hBTEdPX1NIQTIyNDoJcmV0dXJuIFNFQ19PSURfU0hBMjI0OworZGlmZiAtLWdpdCBhL3JwbWlvL2RpZ2VzdF9vcGVuc3NsLmMgYi9ycG1pby9kaWdlc3Rfb3BlbnNzbC5jCitpbmRleCAxOGU1MmE3MjQuLjBhZTQ4ZGQxZCAxMDA2NDQKKy0tLSBhL3JwbWlvL2RpZ2VzdF9vcGVuc3NsLmMKKysrKyBiL3JwbWlvL2RpZ2VzdF9vcGVuc3NsLmMKK0BAIC0xNzIsMTIgKzE3Miw2IEBAIHN0YXRpYyBjb25zdCBFVlBfTUQgKmdldEVWUE1EKGludCBoYXNoYWxnbykKKyAgICAgY2FzZSBQR1BIQVNIQUxHT19TSEExOgorICAgICAgICAgcmV0dXJuIEVWUF9zaGExKCk7CisgCistICAgIGNhc2UgUEdQSEFTSEFMR09fUklQRU1EMTYwOgorLSAgICAgICAgcmV0dXJuIEVWUF9yaXBlbWQxNjAoKTsKKy0KKy0gICAgY2FzZSBQR1BIQVNIQUxHT19NRDI6CistICAgICAgICByZXR1cm4gRVZQX21kMigpOworLQorICAgICBjYXNlIFBHUEhBU0hBTEdPX1NIQTI1NjoKKyAgICAgICAgIHJldHVybiBFVlBfc2hhMjU2KCk7CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vZmlsZXMvMDAwMS1ycG1wbHVnaW5zLmMtY2FsbC1kbGVycm9yLXByaW9yLXRvLWRsc3ltLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtcnBtcGx1Z2lucy5jLWNhbGwtZGxlcnJvci1wcmlvci10by1kbHN5bS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODQyZTNlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL2ZpbGVzLzAwMDEtcnBtcGx1Z2lucy5jLWNhbGwtZGxlcnJvci1wcmlvci10by1kbHN5bS5wYXRjaApAQCAtMCwwICsxLDI5IEBACitGcm9tIDY4NzhhODNmOWJhYzAxNWM2NGQ4M2NlZTQyNTMwYTIwYTI2NGNjNWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgNyBKYW4gMjAyMCAxMjowMjowNiArMDEwMAorU3ViamVjdDogW1BBVENIXSBycG1wbHVnaW5zLmM6IGNhbGwgZGxlcnJvcigpIHByaW9yIHRvIGRsc3ltKCkKKworVGhpcyBpcyB0aGUgcmVjb21tZW5kZWQgd2F5IGluIHRoZSBtYW5wYWdlOyBpZiB0aGVyZSBpcworYSBsaW5nZXJpbmcgZXJyb3IgZnJvbSBhbiB1bnJlbGF0ZWQgZGwqKCkgY2FsbCB0aGF0IHdhcworbmV2ZXIgb2J0YWluZWQgdmlhIGRsZXJyb3IoKSwgaXQgbmVlZHMgdG8gYmUgY2xlYXJlZAorcHJpb3IgdG8gY2FsbGluZyBkbHN5bSgpLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRodWIuY29tL3JwbS1zb2Z0d2FyZS1tYW5hZ2VtZW50L3JwbS9wdWxsLzk5OF0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgbGliL3JwbXBsdWdpbnMuYyB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9saWIvcnBtcGx1Z2lucy5jIGIvbGliL3JwbXBsdWdpbnMuYworaW5kZXggNjVlNjg0ZTg0Li5iOTUwZjg1Y2YgMTAwNjQ0CistLS0gYS9saWIvcnBtcGx1Z2lucy5jCisrKysgYi9saWIvcnBtcGx1Z2lucy5jCitAQCAtNjgsNiArNjgsOCBAQCBzdGF0aWMgcnBtUGx1Z2luIHJwbVBsdWdpbk5ldyhjb25zdCBjaGFyICpuYW1lLCBjb25zdCBjaGFyICpwYXRoLAorIAorICAgICAvKiBtYWtlIHN1cmUgdGhlIHBsdWdpbiBoYXMgdGhlIHN1cHBvcnRlZCBob29rcyBmbGFnICovCisgICAgIGhvb2tzX25hbWUgPSByc3Ryc2NhdChOVUxMLCBuYW1lLCAiX2hvb2tzIiwgTlVMTCk7CisrICAgIC8qIGNsZWFyIG91dCBhbnkgb2xkIGVycm9ycyB0aGF0IHdlcmVuJ3QgZmV0Y2hlZCAqLworKyAgICBkbGVycm9yKCk7CisgICAgIGhvb2tzID0gZGxzeW0oaGFuZGxlLCBob29rc19uYW1lKTsKKyAgICAgaWYgKChlcnJvciA9IGRsZXJyb3IoKSkgIT0gTlVMTCkgeworIAlycG1sb2coUlBNTE9HX0VSUiwgXygiRmFpbGVkIHRvIHJlc29sdmUgc3ltYm9sICVzOiAlc1xuIiksCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnBtL3JwbV80LjE0LjIuMS5iYgppbmRleCBjMzczMzBlLi4xNzI1NWRjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ycG0vcnBtXzQuMTQuMi4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JwbS9ycG1fNC4xNC4yLjEuYmIKQEAgLTQyLDYgKzQyLDggQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtcnBtLXJwbWlvLmMtcmVzdHJpY3QtdmlydHVhbC1tZW1vcnktdXNhZ2UtaWYtbGltaXQtcy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDE2LXJwbXNjcmlwdC5jLWNoYW5nZS1sb2dnaW5nLWxldmVsLWFyb3VuZC1zY3JpcHRsZXRzLXQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1tb25vLWZpbmQtcHJvdmlkZXMtcmVxdWlyZXMtZG8tbm90LXVzZS1tb25vZGlzLWZyb20tLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmlwLW91dC1wYXJ0aWFsLXN1cHBvcnQtZm9yLXVudXNlZC1NRDItYW5kLVJJUEVNRDE2MC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJwbXBsdWdpbnMuYy1jYWxsLWRsZXJyb3ItcHJpb3ItdG8tZGxzeW0ucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFBFID0gIjEiCkBAIC00OSw3ICs1MSw3IEBACiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLURFUEVORFMgPSAibnNzIGxpYmFyY2hpdmUgZGIgZmlsZSBwb3B0IHh6IGJ6aXAyIGRidXMgZWxmdXRpbHMgcHl0aG9uMyIKK0RFUEVORFMgPSAib3BlbnNzbCBsaWJhcmNoaXZlIGRiIGZpbGUgcG9wdCB4eiBiemlwMiBkYnVzIGVsZnV0aWxzIHB5dGhvbjMiCiBERVBFTkRTX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGUtcmVwbGFjZW1lbnQtbmF0aXZlIGJ6aXAyLXJlcGxhY2VtZW50LW5hdGl2ZSIKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgcHl0aG9uM25hdGl2ZQpAQCAtNTgsNyArNjAsNyBAQAogIyBPRS1jb3JlIHBhdGNoZXMgYXV0b3JlY29uZiB0byBhZGRpdGlvbmFsbHkgcnVuIGdudS1jb25maWdpemUsIHdoaWNoIGZhaWxzIHdpdGggdGhpcyByZWNpcGUKIEVYVFJBX0FVVE9SRUNPTkZfYXBwZW5kID0gIiAtLWV4Y2x1ZGU9Z251LWNvbmZpZ2l6ZSIKIAotRVhUUkFfT0VDT05GX2FwcGVuZCA9ICIgLS13aXRob3V0LWx1YSAtLWVuYWJsZS1weXRob24iCitFWFRSQV9PRUNPTkZfYXBwZW5kID0gIiAtLXdpdGhvdXQtbHVhIC0tZW5hYmxlLXB5dGhvbiAtLXdpdGgtY3J5cHRvPW9wZW5zc2wiCiBFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLS1kaXNhYmxlLW5scyIKIAogIyAtLXN5c2NvbmZkaXIgcHJldmVudHMgcnBtIGZyb20gYXR0ZW1wdGluZyB0byBhY2Nlc3MgbWFjaGluZS1zcGVjaWZpYyBjb25maWd1cmF0aW9uIGluIHN5c3Jvb3QvZXRjOyB3ZSBuZWVkIHRvIGhhdmUgaXQgaW4gcm9vdGZzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9yc3luYy9yc3luY18zLjEuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jXzMuMS4zLmJiCmluZGV4IGZmYjFkMDYuLjE1MmZmMDIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jXzMuMS4zLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3JzeW5jL3JzeW5jXzMuMS4zLmJiCkBAIC0yMCw2ICsyMCw5IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiMTU4MWE1ODhmZGU5ZDg5ZjZiYzYyMDFlODEyOWFmYWYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTVjYzU1NGVmZWM1ZmRhYWQ3MGRlOTIxY2Q1YTVlZWI2YzI5YTk1NTI0YzcxNWYzYmJmODQ5MjM1YjA4MDBjMCIKIAorIyAtMTY1NDggcmVxdWlyZWQgZm9yIHYzLjEuM3ByZTEuIEFscmVhZHkgaW4gdjMuMS4zLgorQ1ZFX0NIRUNLX1dISVRFTElTVCArPSAiIENWRS0yMDE3LTE2NTQ4ICIKKwogaW5oZXJpdCBhdXRvdG9vbHMKIAogUEFDS0FHRUNPTkZJRyA/Pz0gImFjbCBhdHRyIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkuaW5jCmluZGV4IGNlMWIwMmYuLmEzOGIzZmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LmluYwpAQCAtOCwxMCArOCwxMCBAQAogU0VDVElPTiA9ICJkZXZlbC9ydWJ5IgogTElDRU5TRSA9ICJSdWJ5IHwgQlNELTItQ2xhdXNlIHwgQlNELTMtQ2xhdXNlIHwgR1BMdjIgfCBJU0MgfCBNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gIlwKLSAgICBmaWxlOi8vQ09QWUlORzttZDU9MzQwOTQ4ZTE4ODJlNTc5NzMxODQxYmY0OWNkYzIyYzEgXAorICAgIGZpbGU6Ly9DT1BZSU5HO21kNT01YjhjODc1NTk4Njg3OTY5Nzk4MDYxMDBkYjNmMzgwNSBcCiAgICAgZmlsZTovL0JTREw7bWQ1PTE5YWFmNjVjODhhNDBiNTA4ZDE3YWU0YmU1MzljNGI1XAogICAgIGZpbGU6Ly9HUEw7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzXAotICAgIGZpbGU6Ly9MRUdBTDttZDU9NGFjMGI4NGQxZjdmNDIwYmNhMjgyZTFhZGVmYzdmOTkgXAorICAgIGZpbGU6Ly9MRUdBTDttZDU9MmI2ZDYyZGMwZDYwOGYzNGQ1MTBjYTNmNDI4MTEwZWMgXAogIgogCiBERVBFTkRTID0gInJ1YnktbmF0aXZlIHpsaWIgb3BlbnNzbCB0Y2wgbGlieWFtbCBnZGJtIHJlYWRsaW5lIGxpYmZmaSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAxLU1vZGlmeS1zaGViYW5nLW9mLWxpYmV4ZWMteTJyYWNjLWFuZC1saWJleGVjLXJhY2MyeS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAxLU1vZGlmeS1zaGViYW5nLW9mLWxpYmV4ZWMteTJyYWNjLWFuZC1saWJleGVjLXJhY2MyeS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMzE2YmVkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LzAwMDEtTW9kaWZ5LXNoZWJhbmctb2YtbGliZXhlYy15MnJhY2MtYW5kLWxpYmV4ZWMtcmFjYzJ5LnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gZWVkN2JjODU1ZmQ4ZDIzMmQ0ZDIwM2NjOTAyN2RkMDdjZWU4ZWNhMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFdhbmcgTWluZ3l1IDx3YW5nbXlAY24uZnVqaXRzdS5jb20+CitEYXRlOiBTYXQsIDggRmViIDIwMjAgMTU6MTY6MTQgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gTW9kaWZ5IHNoZWJhbmcgb2YgbGliZXhlYy95MnJhY2MgYW5kIGxpYmV4ZWMvcmFjYzJ5LgorCitjaGFuZ2UgL3Vzci9sb2NhbC9iaW4vcnVieSB0byAvdXNyL2Jpbi9lbnYgcnVieS4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IFdhbmcgTWluZ3l1IDx3YW5nbXlAY24uZnVqaXRzdS5jb20+CistLS0KKyBsaWJleGVjL3JhY2MyeSB8IDIgKy0KKyBsaWJleGVjL3kycmFjYyB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYmV4ZWMvcmFjYzJ5IGIvbGliZXhlYy9yYWNjMnkKK2luZGV4IGY4OGQ3M2VkMmMuLjc0ZTQ5Y2ZhMjEgMTAwNzU1CistLS0gYS9saWJleGVjL3JhY2MyeQorKysrIGIvbGliZXhlYy9yYWNjMnkKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9sb2NhbC9iaW4vcnVieQorKyMhL3Vzci9iaW4vZW52IHJ1YnkKKyAjCisgIyAkSWQkCisgIworZGlmZiAtLWdpdCBhL2xpYmV4ZWMveTJyYWNjIGIvbGliZXhlYy95MnJhY2MKK2luZGV4IDc5MzNmOTQxNTMuLjM2ZGFmODY0ZTEgMTAwNzU1CistLS0gYS9saWJleGVjL3kycmFjYworKysrIGIvbGliZXhlYy95MnJhY2MKK0BAIC0xLDQgKzEsNCBAQAorLSMhL3Vzci9sb2NhbC9iaW4vcnVieQorKyMhL3Vzci9iaW4vZW52IHJ1YnkKKyAjCisgIyAkSWQkCisgIworLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LzAwMDItT2JleS1MREZMQUdTLWZvci10aGUtbGluay1vZi1saWJydWJ5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LzAwMDItT2JleS1MREZMQUdTLWZvci10aGUtbGluay1vZi1saWJydWJ5LnBhdGNoCmluZGV4IDU5NzlkOGIuLmIzMWRlZTEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS8wMDAyLU9iZXktTERGTEFHUy1mb3ItdGhlLWxpbmstb2YtbGlicnVieS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvMDAwMi1PYmV5LUxERkxBR1MtZm9yLXRoZS1saW5rLW9mLWxpYnJ1YnkucGF0Y2gKQEAgLTYsMTMgKzYsMTMgQEAKIFNpZ25lZC1vZmYtYnk6IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIC0tLQotIE1ha2VmaWxlLmluIHwgMiArLQorIHRlbXBsYXRlL01ha2VmaWxlLmluIHwgMiArLQogIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQogCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgorZGlmZiAtLWdpdCBhL3RlbXBsYXRlL01ha2VmaWxlLmluIGIvdGVtcGxhdGUvTWFrZWZpbGUuaW4KIGluZGV4IGZhMWUxOWVmMzcuLmJiZDA3ZmEzNGIgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5pbgotKysrIGIvTWFrZWZpbGUuaW4KKy0tLSBhL3RlbXBsYXRlL01ha2VmaWxlLmluCisrKysgYi90ZW1wbGF0ZS9NYWtlZmlsZS5pbgogQEAgLTEwOSw3ICsxMDksNyBAQCBNSVNTSU5HID0gQExJQk9CSlNAIEBBTExPQ0FACiAgRU5BQkxFX1NIQVJFRCA9IEBFTkFCTEVfU0hBUkVEQAogIExEU0hBUkVEID0gQExJQlJVQllfTERTSEFSRURACmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvMDAwMy1jb25maWd1cmUuYWMtY2hlY2stZmluaXRlLWlzaW5mLWlzbmFuLWFzLW1hY3Jvcy1maXJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5LzAwMDMtY29uZmlndXJlLmFjLWNoZWNrLWZpbml0ZS1pc2luZi1pc25hbi1hcy1tYWNyb3MtZmlycy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWE4Y2ZmMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnkvMDAwMy1jb25maWd1cmUuYWMtY2hlY2stZmluaXRlLWlzaW5mLWlzbmFuLWFzLW1hY3Jvcy1maXJzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAzICswLDAgQEAKLUZyb20gYmQ3MWI2OThiZjczM2U2ZTkzMjgyY2QyYjFiOTNmNTFlMWEzM2M3YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IG5vYnUgPG5vYnVAYjJkZDAzYzgtMzlkNC00ZDhmLTk4ZmYtODIzZmU2OWIwODBlPgotRGF0ZTogRnJpLCA4IEZlYiAyMDE5IDA3OjIyOjU1ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0ggMy8zXSBjb25maWd1cmUuYWM6IGNoZWNrIGZpbml0ZSxpc2luZixpc25hbiBhcyBtYWNyb3MgZmlyc3QKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotW3J1YnktY29yZTo5MTQ4N10gW0J1ZyAjMTU1OTVdCi0KLWdpdC1zdm4taWQ6IHN2bitzc2g6Ly9jaS5ydWJ5LWxhbmcub3JnL3J1YnkvdHJ1bmtANjcwMzYgYjJkZDAzYzgtMzlkNC00ZDhmLTk4ZmYtODIzZmU2OWIwODBlCi0KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL3J1YnkvcnVieS9jb21taXQvNzRmOTRiM2U2ZWJmMTViNzZmM2IzNTdlNzU0MDk1NDEyYjAwNmU5NF0KLVNpZ25lZC1vZmYtYnk6IEFuZHLDqSBEcmFzemlrIDxhbmRyZS5kcmFzemlrQGpjaS5jb20+Ci0tLS0KLSBhY2xvY2FsLm00ICAgICAgICAgICAgICAgICAgICB8ICAxICsKLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICB8IDEzICsrKystLS0tLS0tLS0KLSB0b29sL200L3J1YnlfcmVwbGFjZV9mdW5jcy5tNCB8IDEzICsrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHRvb2wvbTQvcnVieV9yZXBsYWNlX2Z1bmNzLm00Ci0KLWRpZmYgLS1naXQgYS9hY2xvY2FsLm00IGIvYWNsb2NhbC5tNAotaW5kZXggYjBmZTNlYjk1OS4uZWQ3ZDE0ZWY2MyAxMDA2NDQKLS0tLSBhL2FjbG9jYWwubTQKLSsrKyBiL2FjbG9jYWwubTQKLUBAIC0zNSw2ICszNSw3IEBAIG00X2luY2x1ZGUoW3Rvb2wvbTQvcnVieV9mdW5jX2F0dHJpYnV0ZS5tNF0pCi0gbTRfaW5jbHVkZShbdG9vbC9tNC9ydWJ5X21pbmd3MzIubTRdKQotIG00X2luY2x1ZGUoW3Rvb2wvbTQvcnVieV9wcmVwZW5kX29wdGlvbi5tNF0pCi0gbTRfaW5jbHVkZShbdG9vbC9tNC9ydWJ5X3Byb2dfZ251X2xkLm00XSkKLSttNF9pbmNsdWRlKFt0b29sL200L3J1YnlfcmVwbGFjZV9mdW5jcy5tNF0pCi0gbTRfaW5jbHVkZShbdG9vbC9tNC9ydWJ5X3JlcGxhY2VfdHlwZS5tNF0pCi0gbTRfaW5jbHVkZShbdG9vbC9tNC9ydWJ5X3JtX3JlY3Vyc2l2ZS5tNF0pCi0gbTRfaW5jbHVkZShbdG9vbC9tNC9ydWJ5X3NldGptcF90eXBlLm00XSkKLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDJjNGQyODg4ZDIuLjI2OTFkYTZhM2MgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTk0Niw5ICs5NDYsNiBAQCBtYWluKCkKLSAJCWFjX2N2X2Z1bmNfZnN5bmM9eWVzCi0gCQlhY19jdl9mdW5jX3NlZWtkaXI9eWVzCi0gCQlhY19jdl9mdW5jX3RlbGxkaXI9eWVzCi0tCQlhY19jdl9mdW5jX2lzaW5mPXllcwotLQkJYWNfY3ZfZnVuY19pc25hbj15ZXMKLS0JCWFjX2N2X2Z1bmNfZmluaXRlPXllcwotIAkJYWNfY3ZfZnVuY19sY2hvd249eWVzCi0gCQlhY19jdl9mdW5jX2xpbms9eWVzCi0gCQlhY19jdl9mdW5jX3JlYWRsaW5rPXllcwotQEAgLTk5OSw5ICs5OTYsNiBAQCBtYWluKCkKLSBbbmV0YnNkKl0sIFsJTElCUz0iLWxtICRMSUJTIgotIAkJXSwKLSBbZHJhZ29uZmx5Kl0sIFsJTElCUz0iLWxtICRMSUJTIgotLQkJIyBpc2luZigpIGFuZCBpc25hbigpIGFyZSBtYWNyb3Mgb24gRHJhZ29uRmx5LgotLQkJYWNfY3ZfZnVuY19pc2luZj15ZXMKLS0JCWFjX2N2X2Z1bmNfaXNuYW49eWVzCi0gCQldLAotIFthaXgqXSxbCUxJQlM9Ii1sbSAkTElCUyIKLSAJCWFjX2N2X2Z1bmNfcm91bmQ9bm8KLUBAIC0xNzI0LDExICsxNzE4LDggQEAgQUNfUkVQTEFDRV9GVU5DUyhkdXAyKQotIEFDX1JFUExBQ0VfRlVOQ1MoZXJmKQotIEFDX1JFUExBQ0VfRlVOQ1MoZXhwbGljaXRfYnplcm8pCi0gQUNfUkVQTEFDRV9GVU5DUyhmZnMpCi0tQUNfUkVQTEFDRV9GVU5DUyhmaW5pdGUpCi0gQUNfUkVQTEFDRV9GVU5DUyhmbG9jaykKLSBBQ19SRVBMQUNFX0ZVTkNTKGh5cG90KQotLUFDX1JFUExBQ0VfRlVOQ1MoaXNpbmYpCi0tQUNfUkVQTEFDRV9GVU5DUyhpc25hbikKLSBBQ19SRVBMQUNFX0ZVTkNTKGxnYW1tYV9yKQotIEFDX1JFUExBQ0VfRlVOQ1MobWVtbW92ZSkKLSBBQ19SRVBMQUNFX0ZVTkNTKG5hbikKLUBAIC0xNzQxLDYgKzE3MzIsMTAgQEAgQUNfUkVQTEFDRV9GVU5DUyhzdHJsY3B5KQotIEFDX1JFUExBQ0VfRlVOQ1Moc3Ryc3RyKQotIEFDX1JFUExBQ0VfRlVOQ1ModGdhbW1hKQotIAotK1JVQllfUkVQTEFDRV9GVU5DKFtmaW5pdGVdLCBbQCU6QGluY2x1ZGUgPG1hdGguaD5dKQotK1JVQllfUkVQTEFDRV9GVU5DKFtpc2luZl0sIFtAJTpAaW5jbHVkZSA8bWF0aC5oPl0pCi0rUlVCWV9SRVBMQUNFX0ZVTkMoW2lzbmFuXSwgW0AlOkBpbmNsdWRlIDxtYXRoLmg+XSkKLSsKLSAjIGZvciBtaXNzaW5nL3NldHByb2N0aXRsZS5jCi0gQVNfQ0FTRShbIiR0YXJnZXRfb3MiXSwKLSBbYWl4KiB8IGsqYnNkKi1nbnUgfCBrb3BlbnNvbGFyaXMqLWdudSB8IGxpbnV4KiB8IGRhcndpbipdLCBbQUNfREVGSU5FKFNQVF9UWVBFLFNQVF9SRVVTRUFSR1YpXSwKLWRpZmYgLS1naXQgYS90b29sL200L3J1YnlfcmVwbGFjZV9mdW5jcy5tNCBiL3Rvb2wvbTQvcnVieV9yZXBsYWNlX2Z1bmNzLm00Ci1uZXcgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggMDAwMDAwMDAwMC4uZDA2MTJlMjlhMAotLS0tIC9kZXYvbnVsbAotKysrIGIvdG9vbC9tNC9ydWJ5X3JlcGxhY2VfZnVuY3MubTQKLUBAIC0wLDAgKzEsMTMgQEAKLSsjIC0qLSBBdXRvY29uZiAtKi0KLStkbmwgUlVCWV9SRVBMQUNFX0ZVTkMgW2Z1bmNdIFtpbmNsdWRlZF0KLStBQ19ERUZVTihbUlVCWV9SRVBMQUNFX0ZVTkNdLCBbZG5sCi0rICAgIEFDX0NIRUNLX0RFQ0woWyQxXSxkbmwKLSsgICAgICAgIFtBQ19ERUZJTkUoQVNfVFJfQ1BQKEhBVkVfWyQxXSkpXSxkbmwKLSsgICAgICAgIFtBQ19SRVBMQUNFX0ZVTkNTKCQxKV0sZG5sCi0rICAgICAgICBbJDJdKWRubAotK10pCi0rCi0rZG5sIFJVQllfUkVQTEFDRV9GVU5DUyBbZnVuY3NdIFtpbmNsdWRlZF0KLStBQ19ERUZVTihbUlVCWV9SRVBMQUNFX0ZVTkNTXSBbZG5sCi0rICAgIG00X21hcF9hcmdzX3coWyQxXSwgW1JVQllfUkVQTEFDRV9GVU5DKF0sIFspLCBbJDJdXSlkbmwKLStdKQotLS0gCi0yLjIzLjAucmMxCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9yZW1vdmVfaGFzX2luY2x1ZGVfbWFjcm9zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5L3JlbW92ZV9oYXNfaW5jbHVkZV9tYWNyb3MucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTFlNjMzMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1YnkvcnVieS9yZW1vdmVfaGFzX2luY2x1ZGVfbWFjcm9zLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0ZpbHRlciBvdXQgX19oYXNfaW5jbHVkZSogY29tcGlsZXIgZGVmaW5lcworCitUaGV5IGFyZSBpbnRlcm5hbCB0byBjb21waWxlciBhbmQgdGhpcyBoZWFkZXIgaXMgbGF0ZXIgb24gaW5jbHVkZXMgaW4gQworZmlsZXMsIGJ1dCBuZXdlciBnY2MgPj0gMTAgY29tcGxhaW5zIGFib3V0IGl0LgorCitlcnJvciBpbiBpbml0aWFsIGhlYWRlciBmaWxlOgorfCBJbiBmaWxlIGluY2x1ZGVkIGZyb20gL3RtcC8yMDIwMDEyNC04NjYyNS0xNGhpanU0LmM6MToKK3wgL3RtcC8yMDIwMDEyNC04NjYyNS0xMXk2bDZpLmg6MTM4NDk6OTogZXJyb3I6ICJfX2hhc19pbmNsdWRlIiBjYW5ub3QgYmUgdXNlZCBhcyBhIG1hY3JvIG5hbWUKK3wgMTM4NDkgfCAjZGVmaW5lIF9faGFzX2luY2x1ZGUgX19oYXNfaW5jbHVkZQorfCAgICAgICB8ICAgICAgICAgXn5+fn5+fn5+fn5+fgorfCBjb21waWxhdGlvbiB0ZXJtaW5hdGVkIGR1ZSB0byAtV2ZhdGFsLWVycm9ycy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0gYS9jb21tb24ubWsKKysrKyBiL2NvbW1vbi5taworQEAgLTIyMSw2ICsyMjEsOCBAQCAkKFRJTUVTVEFNUERJUikvJChNSklUX0hFQURFUjouaD0pJChNSklUCisgCQkkKFRJTUVTVEFNUERJUikvJChhcmNoKS8udGltZQorIAkkKEVDSE8pIGJ1aWxkaW5nICQoQEY6LnRpbWU9LmgpCisgCSQoUSkgJChDUFApIC1ETUpJVF9IRUFERVIgJChNSklUX0hFQURFUl9GTEFHUykgJChDRkxBR1MpICQoWENGTEFHUykgJChDUFBGTEFHUykgJChzcmNkaXIpL3ZtLmMgJChDUFBPVVRGTEFHKSQoQEY6LnRpbWU9LmgpLm5ldworKwkkKFEpc2VkIC1pIC1lICIvI2RlZmluZSBfX2hhc19pbmNsdWRlIF9faGFzX2luY2x1ZGUvZCIgJChARjoudGltZT0uaCkubmV3CisrCSQoUSlzZWQgLWkgLWUgIi8jZGVmaW5lIF9faGFzX2luY2x1ZGVfbmV4dCBfX2hhc19pbmNsdWRlX25leHQvZCIgJChARjoudGltZT0uaCkubmV3CisgCSQoUSkgJChJRkNIQU5HRSkgIi0tdGltZXN0YW1wPSRAIiAkKEBGOi50aW1lPS5oKSAkKEBGOi50aW1lPS5oKS5uZXcKKyAKKyAkKE1KSVRfSEVBREVSOi5oPSkkKE1KSVRfSEVBREVSX1NVRkZJWCkuaDogJChUSU1FU1RBTVBESVIpLyQoTUpJVF9IRUFERVI6Lmg9KSQoTUpJVF9IRUFERVJfU1VGRklYKS50aW1lCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi42LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi42LjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MjhmNjUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzcgKzAsMCBAQAotcmVxdWlyZSBydWJ5LmluYwotCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1jb25maWd1cmUuYWMtY2hlY2stZmluaXRlLWlzaW5mLWlzbmFuLWFzLW1hY3Jvcy1maXJzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg3NTRiZmIzNmQ1MmMyYmYxZmIzZDNkZGM3MTAxNjA2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2OTc2YjcxNmVjYzFmZDM0ZjliN2MzYzJiMDdiYmQzNzYzMTgxNTM3N2EyZTNlODVhNWIxOTRjZmRjYmVkN2QiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHICs9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLXdpdGgtdmFsZ3JpbmQ9eWVzLCAtLXdpdGgtdmFsZ3JpbmQ9bm8sIHZhbGdyaW5kIgotUEFDS0FHRUNPTkZJR1tnbXBdID0gIi0td2l0aC1nbXA9eWVzLCAtLXdpdGgtZ21wPW5vLCBnbXAiCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsIC0tZGlzYWJsZS1pcHY2LCIKLQotRVhUUkFfT0VDT05GID0gIlwKLSAgICAtLWRpc2FibGUtdmVyc2lvbmVkLXBhdGhzIFwKLSAgICAtLWRpc2FibGUtcnBhdGggXAotICAgIC0tZGlzYWJsZS1kdHJhY2UgXAotICAgIC0tZW5hYmxlLXNoYXJlZCBcCi0gICAgLS1lbmFibGUtbG9hZC1yZWxhdGl2ZSBcCi0gICAgLS13aXRoLXBrZy1jb25maWc9cGtnLWNvbmZpZyBcCi0iCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7Ci0gICAgIyBGaW5kIG91dCByYmNvbmZpZy5yYiBmcm9tIC5pbnN0YWxsZWQubGlzdAotICAgIHJiY29uZmlnX3JiPWBncmVwIHJiY29uZmlnLnJiICR7Qn0vLmluc3RhbGxlZC5saXN0YAotICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgZGlyZWN0b3JpZXMKLSAgICBzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgXAotICAgICAgICAgICAtZSBzOictLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSc6OmcgXAotICAgICAgICAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCi0gICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCi0gICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAotICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAotICAgICAgICAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKLSAgICAgICAgJHtEfSRyYmNvbmZpZ19yYgotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLSAgICBjcCAtcmYgJHtTfS90ZXN0ICR7RH0ke1BURVNUX1BBVEh9LwotICAgICMgaW5zdGFsbCB0ZXN0LWJpbmFyaWVzCi0gICAgZmluZCAkKGZpbmQgLi8uZXh0IC1wYXRoICcqLy10ZXN0LScpIC1uYW1lICcqLnNvJyAtcHJpbnQwIFwKLSAgICAgICAgfCB0YXIgLS1uby1yZWN1cnNpb24gLS1udWxsIC1UIC0gLS1uby1zYW1lLW93bmVyIC0tcHJlc2VydmUtcGVybWlzc2lvbnMgLWNmIC0gXAotICAgICAgICB8IHRhciAtQyAke0R9JHtsaWJkaXJ9L3J1YnkvJHtTSFJUX1ZFUn0uMC8gLS1uby1zYW1lLW93bmVyIC0tcHJlc2VydmUtcGVybWlzc2lvbnMgLS1zdHJpcC1jb21wb25lbnRzPTIgLXhmIC0KLSAgICAjIGFkanVzdCBwYXRoIHRvIG5vdCBhc3N1bWUgYnVpbGQgZGlyZWN0b3J5IGxheW91dAotICAgIHNlZCAtZSAnc3xGaWxlLmV4cGFuZF9wYXRoKC4qXC5cLi9iaW4vZXJiW14pXSp8RmlsZS5leHBhbmRfcGF0aCgiJHtiaW5kaXJ9L2VyYiJ8ZycgXAotICAgICAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L2VyYi90ZXN0X2VyYl9jb21tYW5kLnJiCi0KLSAgICBjcCAtciAke1N9L2luY2x1ZGUgJHtEfS8ke2xpYmRpcn0vcnVieS8KLSAgICB0ZXN0X2Nhc2VfcmI9YGdyZXAgcnVieWdlbXMvdGVzdF9jYXNlLnJiICR7Qn0vLmluc3RhbGxlZC5saXN0YAotICAgIHNlZCAtaSAtZSAnczouLi8uLi8uLi90ZXN0LzouLi8uLi8uLi9wdGVzdC90ZXN0LzpnJyAke0R9LyR0ZXN0X2Nhc2VfcmIKLX0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXJpLWRvY3MgJHtQTn0tcmRvYyIKLQotU1VNTUFSWV8ke1BOfS1yaS1kb2NzID0gInJpIChSdWJ5IEludGVyYWN0aXZlKSBkb2N1bWVudGF0aW9uIGZvciB0aGUgUnVieSBzdGFuZGFyZCBsaWJyYXJ5IgotUkRFUEVORFNfJHtQTn0tcmktZG9jcyA9ICIke1BOfSIKLUZJTEVTXyR7UE59LXJpLWRvY3MgKz0gIiR7ZGF0YWRpcn0vcmkiCi0KLVNVTU1BUllfJHtQTn0tcmRvYyA9ICJSRG9jIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZyb20gUnVieSBzb3VyY2UiCi1SREVQRU5EU18ke1BOfS1yZG9jID0gIiR7UE59IgotRklMRVNfJHtQTn0tcmRvYyArPSAiJHtsaWJkaXJ9L3J1YnkvKi9yZG9jICR7YmluZGlyfS9yZG9jIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9ydWJ5Z2VtcyIKLQotRklMRVNfJHtQTn0tcHRlc3RfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCi0gICAgJHtsaWJkaXJ9L3J1YnkvaW5jbHVkZSBcCi0gICAgJHtsaWJkaXJ9L3J1YnkvJHtTSFJUX1ZFUn0uMC8qLy10ZXN0LSBcCi0iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNy4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVieS9ydWJ5XzIuNy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdmMDcwODAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydWJ5L3J1YnlfMi43LjAuYmIKQEAgLTAsMCArMSw5MiBAQAorcmVxdWlyZSBydWJ5LmluYworCitERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGxpYnVjb250ZXh0IgorCitTUkNfVVJJICs9ICIgXAorICAgICAgICAgICBmaWxlOi8vcmVtb3ZlX2hhc19pbmNsdWRlX21hY3Jvcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Nb2RpZnktc2hlYmFuZy1vZi1saWJleGVjLXkycmFjYy1hbmQtbGliZXhlYy1yYWNjMnkucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZjRhNTRlODIzMTE3NmUxMDlhNDJjNTQ2YjQ3MjVhOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4Yzk5YWE5M2I1ZTJmMWJjODQzN2QxYmJiZWZkMjdiMTNlNzY5NDAyNTMzMWY3NzI0NWQwYzA2OGVmMWY4Y2JlIgorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJRyArPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSIKKworUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kPXllcywgLS13aXRoLXZhbGdyaW5kPW5vLCB2YWxncmluZCIKK1BBQ0tBR0VDT05GSUdbZ21wXSA9ICItLXdpdGgtZ21wPXllcywgLS13aXRoLWdtcD1ubywgZ21wIgorUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LCAtLWRpc2FibGUtaXB2NiwiCisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgLS1kaXNhYmxlLXZlcnNpb25lZC1wYXRocyBcCisgICAgLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAtLWRpc2FibGUtZHRyYWNlIFwKKyAgICAtLWVuYWJsZS1zaGFyZWQgXAorICAgIC0tZW5hYmxlLWxvYWQtcmVsYXRpdmUgXAorICAgIC0td2l0aC1wa2ctY29uZmlnPXBrZy1jb25maWcgXAorIgorCitFWFRSQV9PRUNPTkZfYXBwZW5kX2xpYmMtbXVzbCA9ICJcCisgICAgTElCUz0nLWx1Y29udGV4dCcgXAorICAgIGFjX2N2X2Z1bmNfaXNuYW49eWVzIFwKKyAgICBhY19jdl9mdW5jX2lzaW5mPXllcyBcCisiCisKK2RvX2luc3RhbGwoKSB7CisgICAgb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisgICAgIyBGaW5kIG91dCByYmNvbmZpZy5yYiBmcm9tIC5pbnN0YWxsZWQubGlzdAorICAgIHJiY29uZmlnX3JiPWBncmVwIHJiY29uZmlnLnJiICR7Qn0vLmluc3RhbGxlZC5saXN0YAorICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgZGlyZWN0b3JpZXMKKyAgICBzZWQgLWkgLWUgJ3M6LS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfTo6ZycgXAorICAgICAgICAgICAtZSBzOictLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSc6OmcgXAorICAgICAgICAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCisgICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisgICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UfTo6ZycgXAorICAgICAgICAgICAtZSAnczoke0JBU0VfV09SS0RJUn0vJHtNVUxUSU1BQ0hfVEFSR0VUX1NZU306OmcnIFwKKyAgICAgICAgJHtEfSRyYmNvbmZpZ19yYgorfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKyAgICBjcCAtcmYgJHtTfS90ZXN0ICR7RH0ke1BURVNUX1BBVEh9LworCisgICAgaW5zdGFsbCAtRCAke1N9L3Rvb2wvdGVzdC9ydW5uZXIucmIgJHtEfSR7UFRFU1RfUEFUSH0vdG9vbC90ZXN0L3J1bm5lci5yYgorICAgIGNwIC1yICR7U30vdG9vbC9saWIgJHtEfSR7UFRFU1RfUEFUSH0vdG9vbC8KKyAgICBta2RpciAtcCAke0R9JHtQVEVTVF9QQVRIfS9saWIKKyAgICBjcCAtciAke1N9L2xpYi9kaWRfeW91X21lYW4gJHtTfS9saWIvcmRvYyAke0R9JHtQVEVTVF9QQVRIfS9saWIKKworICAgICMgaW5zdGFsbCB0ZXN0LWJpbmFyaWVzCisgICAgZmluZCAkKGZpbmQgLi8uZXh0IC1wYXRoICcqLy10ZXN0LScpIC1uYW1lICcqLnNvJyAtcHJpbnQwIFwKKyAgICAgICAgfCB0YXIgLS1uby1yZWN1cnNpb24gLS1udWxsIC1UIC0gLS1uby1zYW1lLW93bmVyIC0tcHJlc2VydmUtcGVybWlzc2lvbnMgLWNmIC0gXAorICAgICAgICB8IHRhciAtQyAke0R9JHtsaWJkaXJ9L3J1YnkvJHtTSFJUX1ZFUn0uMC8gLS1uby1zYW1lLW93bmVyIC0tcHJlc2VydmUtcGVybWlzc2lvbnMgLS1zdHJpcC1jb21wb25lbnRzPTIgLXhmIC0KKyAgICAjIGFkanVzdCBwYXRoIHRvIG5vdCBhc3N1bWUgYnVpbGQgZGlyZWN0b3J5IGxheW91dAorICAgIHNlZCAtZSAnc3xGaWxlLmV4cGFuZF9wYXRoKC4qXC5cLi9iaW4vZXJiW14pXSp8RmlsZS5leHBhbmRfcGF0aCgiJHtiaW5kaXJ9L2VyYiJ8ZycgXAorICAgICAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0L2VyYi90ZXN0X2VyYl9jb21tYW5kLnJiCisKKyAgICBjcCAtciAke1N9L2luY2x1ZGUgJHtEfS8ke2xpYmRpcn0vcnVieS8KKyAgICB0ZXN0X2Nhc2VfcmI9YGdyZXAgcnVieWdlbXMvdGVzdF9jYXNlLnJiICR7Qn0vLmluc3RhbGxlZC5saXN0YAorICAgIHNlZCAtaSAtZSAnczouLi8uLi8uLi90ZXN0LzouLi8uLi8uLi9wdGVzdC90ZXN0LzpnJyAke0R9LyR0ZXN0X2Nhc2VfcmIKK30KKworUEFDS0FHRVMgPSsgIiR7UE59LXJpLWRvY3MgJHtQTn0tcmRvYyIKKworU1VNTUFSWV8ke1BOfS1yaS1kb2NzID0gInJpIChSdWJ5IEludGVyYWN0aXZlKSBkb2N1bWVudGF0aW9uIGZvciB0aGUgUnVieSBzdGFuZGFyZCBsaWJyYXJ5IgorUkRFUEVORFNfJHtQTn0tcmktZG9jcyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59LXJpLWRvY3MgKz0gIiR7ZGF0YWRpcn0vcmkiCisKK1NVTU1BUllfJHtQTn0tcmRvYyA9ICJSRG9jIGRvY3VtZW50YXRpb24gZ2VuZXJhdG9yIGZyb20gUnVieSBzb3VyY2UiCitSREVQRU5EU18ke1BOfS1yZG9jID0gIiR7UE59IgorRklMRVNfJHtQTn0tcmRvYyArPSAiJHtsaWJkaXJ9L3J1YnkvKi9yZG9jICR7YmluZGlyfS9yZG9jIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9ydWJ5Z2VtcyIKKworRklMRVNfJHtQTn0tcHRlc3RfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCisgICAgJHtsaWJkaXJ9L3J1YnkvaW5jbHVkZSBcCisgICAgJHtsaWJkaXJ9L3J1YnkvJHtTSFJUX1ZFUn0uMC8qLy10ZXN0LSBcCisiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMuc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzLnNlcnZpY2UKaW5kZXggZDQyYWRkZi4uN2Y3MmYzMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvcnVuLXBvc3RpbnN0cy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMuc2VydmljZQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9ydW4tcG9zdGluc3RzL3J1bi1wb3N0aW5zdHMvcnVuLXBvc3RpbnN0cy5zZXJ2aWNlCkBAIC04LDcgKzgsNyBAQAogVHlwZT1vbmVzaG90CiBFeGVjU3RhcnQ9I1NCSU5ESVIjL3J1bi1wb3N0aW5zdHMKIEV4ZWNTdGFydFBvc3Q9I0JBU0VfQklORElSIy9zeXN0ZW1jdGwgLS1uby1yZWxvYWQgZGlzYWJsZSBydW4tcG9zdGluc3RzLnNlcnZpY2UKLVJlbWFpbkFmdGVyRXhpdD1ObworUmVtYWluQWZ0ZXJFeGl0PXllcwogVGltZW91dFNlYz0wCiAKIFtJbnN0YWxsXQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHNfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3F1YXNoZnMtdG9vbHMvc3F1YXNoZnMtdG9vbHNfZ2l0LmJiCmluZGV4IDRmZDMzZjguLjliY2YwMjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3NxdWFzaGZzLXRvb2xzL3NxdWFzaGZzLXRvb2xzX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zcXVhc2hmcy10b29scy9zcXVhc2hmcy10b29sc19naXQuYmIKQEAgLTEyLDkgKzEyLDYgQEAKIAogUyA9ICIke1dPUktESVJ9L2dpdC9zcXVhc2hmcy10b29scyIKIAotIyBuZWVkcyBGTk1fRVhUTUFUQ0gKLUNPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAnbnVsbCcKLQogRVhUUkFfT0VNQUtFID0gIiR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30iCiAKIFBBQ0tBR0VDT05GSUcgPz89ICJnemlwIHh6IGx6byBsejQgbHptYSB4YXR0ciByZXByb2R1Y2libGUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtY2Fwcy1hYmJyZXYuYXdrLWZpeC1nYXdrLXMtcGF0aC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoCmluZGV4IDUyZDJjZGMuLjIzNWU4MDMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBkMjI1YWFhODg0MWY0N2JhOGFhN2IzNTNiMGFjMzAyOGQ1OTEzZWZlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1OTdjYzIwNmQ5ODJlNzIzN2ViOTNmZGMzM2U4YzRiYjZiYjJkNzk2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CiBEYXRlOiBUaHUsIDkgRmViIDIwMTcgMDE6Mjc6NDkgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gY2Fwcy1hYmJyZXYuYXdrOiBmaXggZ2F3aydzIHBhdGgKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1zdHJhY2UtZml4LXJlcHJvZHVjaWJpbHR5LWlzc3Vlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvMDAwMS1zdHJhY2UtZml4LXJlcHJvZHVjaWJpbHR5LWlzc3Vlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNGMxNzZlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLXN0cmFjZS1maXgtcmVwcm9kdWNpYmlsdHktaXNzdWVzLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gNjMwOTc5MmM0OWNhOTAwY2VjNmE3ZjFkYzViNTFiZjc1YjYyOWUxMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorRGF0ZTogV2VkLCAxMSBNYXIgMjAyMCAxOTo1Njo1NSArMDAwMAorU3ViamVjdDogW1BBVENIXSBzdHJhY2U6IGZpeCByZXByb2R1Y2liaWx0eSBpc3N1ZXMKKworVGhlIGZ1bGwgcGF0aCB0byB0aGUgZ2VuX3Rlc3RzLnNoIHNjcmlwdCBpcyBlbmNvZGVkIGluIHRoZSB0ZXN0cworCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CistLS0KKyB0ZXN0cy9nZW5fdGVzdHMuc2ggfCA0ICsrLS0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvZ2VuX3Rlc3RzLnNoIGIvdGVzdHMvZ2VuX3Rlc3RzLnNoCitpbmRleCA1ZTFlN2M5Li4xZTY1ZWFjIDEwMDc1NQorLS0tIGEvdGVzdHMvZ2VuX3Rlc3RzLnNoCisrKysgYi90ZXN0cy9nZW5fdGVzdHMuc2gKK0BAIC00Niw3ICs0Niw3IEBAIHdoaWxlIHJlYWQgLXIgbmFtZSBhcmcwIGFyZ3M7IGRvIHsKKyAKKyAJaGRyPSJcCisgIyEvYmluL3NoIC1lZnUKKy0jIEdlbmVyYXRlZCBieSAkMCBmcm9tICRpbnB1dCAoJG5hbWUgJGFyZzAgJGFyZ3MpOyBkbyBub3QgZWRpdC4iCisrIyBHZW5lcmF0ZWQgYnkgJChiYXNlbmFtZSAkMCkgZnJvbSAkaW5wdXQgKCRuYW1lICRhcmcwICRhcmdzKTsgZG8gbm90IGVkaXQuIgorIAorIAljYXNlICIkYXJnMCIgaW4KKyAJCSsqKQorQEAgLTgwLDcgKzgwLDcgQEAgd2hpbGUgcmVhZCAtciBuYW1lIGFyZzAgYXJnczsgZG8geworIAorIGlmIFsgLW4gIiRuYW1lcyIgXTsgdGhlbgorIAl7CistCQlwcmludGYgJyMgR2VuZXJhdGVkIGJ5ICVzIGZyb20gJXM7IGRvIG5vdCBlZGl0LlxuJyAiJDAiICIkaW5wdXQiCisrCQlwcmludGYgJyMgR2VuZXJhdGVkIGJ5ICVzIGZyb20gJXM7IGRvIG5vdCBlZGl0LlxuJyAiJChiYXNlbmFtZSAkMCkiICIkaW5wdXQiCisgCQlwcmludGYgJ0dFTl9URVNUUyA9JworIAkJcHJpbnRmICcgJXMuZ2VuLnRlc3QnICRuYW1lcworIAkJZWNobworLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS8wMDAxLXRlc3RzLXNpZ2FjdGlvbi1DaGVjay1mb3ItbWlwcy1hbmQtYWxwaGEtYmVmb3JlLXVzaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtdGVzdHMtc2lnYWN0aW9uLUNoZWNrLWZvci1taXBzLWFuZC1hbHBoYS1iZWZvcmUtdXNpbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTVkODViZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlLzAwMDEtdGVzdHMtc2lnYWN0aW9uLUNoZWNrLWZvci1taXBzLWFuZC1hbHBoYS1iZWZvcmUtdXNpbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMyICswLDAgQEAKLUZyb20gODc5YWU3MWM0NzJjZTUyMmYxYjM1MTRkMmFiZjZhZDQ5YjRhY2MwNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDE4IFNlcCAyMDE3IDIyOjUxOjMyIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIHRlc3RzL3NpZ2FjdGlvbjogQ2hlY2sgZm9yIG1pcHMgYW5kIGFscGhhIGJlZm9yZSB1c2luZwotIHNhX3Jlc3RvcmVyCi0KLWxvY2FsIHN0cnVjdHVyZSBkb2VzIG5vdCBkZWZpbmUgcmVzdG9yZXIgbWVtYmVyIGZvciBtaXBzIGFuZCBhbHBoYQotaW4gZGVmaW5pdGlvbiwgd2UgbmVlZCB0byBtYXRjaCB0aGF0IGFzc3VtcHRpb24gaGVyZSB3aGVyZSB0aGV5IGFyZQotYmVpbmcgc2V0Ci0KLUZpeGVzCi18IC4uLy4uL3N0cmFjZS00LjE4L3Rlc3RzL3NpZ2FjdGlvbi5jOjE3NzozNjogZXJyb3I6ICdzdHJ1Y3Rfc2V0X3NhIHtha2Egc3RydWN0IHNldF9zYX0nIGhhcyBubyBtZW1iZXIgbmFtZWQgJ3Jlc3RvcmVyJwotfCAgIyBkZWZpbmUgU0FfUkVTVE9SRVJfQVJHUyAsIG5ld19hY3QtPnJlc3RvcmVyCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotLS0tCi0gdGVzdHMvc2lnYWN0aW9uLmMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLS0tLSBhL3Rlc3RzL3NpZ2FjdGlvbi5jCi0rKysgYi90ZXN0cy9zaWdhY3Rpb24uYwotQEAgLTE1Niw3ICsxNTYsNyBAQCBtYWluKHZvaWQpCi0gCXNpZ2RlbHNldChtYXNrLmxpYmMsIFNJR0hVUCk7Ci0gCi0gCW1lbWNweShuZXdfYWN0LT5tYXNrLCBtYXNrLm9sZCwgc2l6ZW9mKG1hc2sub2xkKSk7Ci0tIyBpZmRlZiBTQV9SRVNUT1JFUgotKyNpZiBkZWZpbmVkKFNBX1JFU1RPUkVSKSAmJiAhZGVmaW5lZChNSVBTKSAmJiAhZGVmaW5lZChBTFBIQSkKLSAJbmV3X2FjdC0+ZmxhZ3MgPSBTQV9SRVNUT1JFUjsKLSAJbmV3X2FjdC0+cmVzdG9yZXIgPSAodW5zaWduZWQgbG9uZykgMHhkZWFkZmFjZWNhZmVmMDBkVUxMOwotICMgIGRlZmluZSBTQV9SRVNUT1JFUl9GTVQgIiwgc2FfZmxhZ3M9U0FfUkVTVE9SRVIsIHNhX3Jlc3RvcmVyPSUjbHgiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9NYWtlZmlsZS1wdGVzdC5wYXRjaAppbmRleCAwOGZhNWM1Li40MmMxODkzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL01ha2VmaWxlLXB0ZXN0LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvTWFrZWZpbGUtcHRlc3QucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGVmNTA0MGI0ZjE1MDA2YTIyYWM2M2EzYmFjZmNlYWMzNmZmYzIwNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGVlNDdlMjA1MjU1OTI4Njc5NzAxYTViNzY5YmQ3YWUwZjgxNTExOWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBHYWJyaWVsIEJhcmJ1IDxnYWJyaWVsLmJhcmJ1QGVuZWEuY29tPgogRGF0ZTogVGh1LCAyNSBKdWwgMjAxMyAxNToyODozMyArMDIwMAogU3ViamVjdDogW1BBVENIXSBzdHJhY2U6IEFkZCBwdGVzdApAQCAtMTQsMTAgKzE0LDEwIEBACiAgMSBmaWxlIGNoYW5nZWQsIDE5IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlLmFtIGIvdGVzdHMvTWFrZWZpbGUuYW0KLWluZGV4IDgyNWM5ODkuLjQ2MjNjNDggMTAwNjQ0CitpbmRleCA4Y2Y0YzM2Li42NjE2MmViIDEwMDY0NAogLS0tIGEvdGVzdHMvTWFrZWZpbGUuYW0KICsrKyBiL3Rlc3RzL01ha2VmaWxlLmFtCi1AQCAtMTQsNiArMTQsNyBAQCBTSVpFT0ZfTE9ORyA9IEBTSVpFT0ZfTE9OR0AKK0BAIC0xNSw2ICsxNSw3IEBAIFNJWkVPRl9MT05HID0gQFNJWkVPRl9MT05HQAogIE1QRVJTX05BTUUgPQogIE1QRVJTX0NDX0ZMQUdTID0KICBBUkNIX01GTEFHUyA9CkBAIC0yNSw3ICsyNSw3IEBACiAgQU1fQ0ZMQUdTID0gJChXQVJOX0NGTEFHUykKICBBTV9DUFBGTEFHUyA9ICQoQVJDSF9NRkxBR1MpIFwKICAJICAgICAgLUkkKGJ1aWxkZGlyKSBcCi1AQCAtNDc3LDMgKzQ3OCwyMSBAQCBCVUlMVF9TT1VSQ0VTID0ga3N5c2VudC5oCitAQCAtNTM4LDMgKzUzOSwyMSBAQCBCVUlMVF9TT1VSQ0VTID0ga3N5c2VudC5oCiAgQ0xFQU5GSUxFUyA9IGtzeXNlbnQuaAogIAogIGluY2x1ZGUgLi4vc2Nuby5hbQpAQCAtNDQsNiArNDQsNiBAQAogKwlkb25lCiArCWZvciBmaWxlIGluICQoRVhUUkFfRElTVCk7IGRvIFwKICsJCWluc3RhbGwgJChzcmNkaXIpLyQkZmlsZSAkKERFU1RESVIpLyQoVEVTVERJUik7IFwKLSsJCXNlZCAtaSAtZSAncy8kJHtzcmNkaXI9Ln0vLi9nJyAkKERFU1RESVIpLyQoVEVTVERJUikvJCRmaWxlOyBcCisrCQkjc2VkIC1pIC1lICdzLyQke3NyY2Rpcj0ufS8uL2cnICQoREVTVERJUikvJChURVNURElSKS8kJGZpbGU7IFwKICsJZG9uZQogKwlmb3IgaSBpbiBuZXQgc2NtX3JpZ2h0cy1mZCBydF9zaWdhY3Rpb247IGRvIHNlZCAtaSAtZSAncy8kJHNyY2Rpci8uL2cnICQoREVTVERJUikvJChURVNURElSKS8kJGkudGVzdDsgZG9uZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9kaXNhYmxlLWdpdC12ZXJzaW9uLWdlbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvZGlzYWJsZS1naXQtdmVyc2lvbi1nZW4ucGF0Y2gKaW5kZXggNWZlZmZmMy4uZThkYmQ3ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9kaXNhYmxlLWdpdC12ZXJzaW9uLWdlbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL2Rpc2FibGUtZ2l0LXZlcnNpb24tZ2VuLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAzYmM0NzUwMmFiMDExZWE4ZDdjOWNkNzI0YjI1MTc0ZWNkOTUwNmJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBkODdhN2ZlYjVlYTc1ZGE3MDYxYWZkZDQ3M2ZhYmEwNDRlYzhlYjBmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMTggSmFuIDIwMTYgMTM6MzM6NTAgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gc3RyYWNlOiByZW1vdmUgbmVlZCBmb3Igc2NyaXB0cwpAQCAtMTYsNyArMTYsNyBAQAogIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDk0OWIwNTguLjRiYTk4OWMgMTAwNjQ0CitpbmRleCBkZDRmMTNmLi42NWYwMDBiIDEwMDY0NAogLS0tIGEvY29uZmlndXJlLmFjCiArKysgYi9jb25maWd1cmUuYWMKIEBAIC0xMiwxMiArMTIsMTIgQEAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvbWlwcy1TSUdFTVQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL21pcHMtU0lHRU1ULnBhdGNoCmluZGV4IDBkMzE5MmIuLmU4NmRhOTcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvbWlwcy1TSUdFTVQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9taXBzLVNJR0VNVC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMjBjMTg0YTdhYjNmYjdiZTY3ZmI3NjI2YzQxMWU3NTZlYTYxZDJmNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNzk0NjQ4ZDg0NjcyYmJkYTMwYTkyMGEwNTU0MGI1NmNkMTU1ZWQ5ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBTdW4sIDcgQXVnIDIwMTYgMjM6NDc6NTcgLTA3MDAKIFN1YmplY3Q6IFtQQVRDSF0gc3RyYWNlOiBGaXggYnVpbGQgd2l0aCBtaXBzL21pcHM2NCBvbiBtdXNsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL21vcmUtcm9idXN0LXRlc3QtZm9yLW0zMi1teDMyLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvbW9yZS1yb2J1c3QtdGVzdC1mb3ItbTMyLW14MzItY29tcGlsZS1zdXBwb3J0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOWJkOTAwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvbW9yZS1yb2J1c3QtdGVzdC1mb3ItbTMyLW14MzItY29tcGlsZS1zdXBwb3J0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSBjYzk3MzA3ZThlMzlhODE5OTljNmEzNjVkMDU3NDg3YTAyZTYxMjhlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTggSmFuIDIwMTYgMTE6MDA6MDAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbXBlcnMubTQ6IG1vcmUgcm9idXN0IHRlc3QgZm9yIC1tMzIvLW14MzIgY29tcGlsZSBzdXBwb3J0Ci0KLVdoZW4gdXNpbmcgdGhlIGRlZmF1bHQgT0UgdG9vbGNoYWluIGZvciB4ODYtNjQsIHRoZSBiYXNpYyBjaGVja3MgZm9yCi0tbTMyIGFuZCAtbXgzMiBjb21waWxlIHN1cHBvcnQgaW4gbXBlcnMubTQgcGFzcyBidXQgbGF0ZXIgYXR0ZW1wdHMgdG8KLWFjdHVhbGx5IHVzZSB0aGUgdG9vbGNoYWluIHdpdGggLW0zMiBmYWlsLCBlLmcuCi0KLSB8IEluIGZpbGUgaW5jbHVkZWQgZnJvbSAvaG9tZS9hbmRyZS9idWlsZC90bXAvc3lzcm9vdHMvcWVtdXg4Ni02NC91c3IvaW5jbHVkZS9zeXMvc3lzY2FsbC5oOjMxOjAsCi0gfCAgICAgICAgICAgICAgICAgIGZyb20gLi4vc3RyYWNlLTQuMTEvZGVmcy5oOjU1LAotIHwgICAgICAgICAgICAgICAgICBmcm9tIG1wZXJzLW0zMi9rZXJuZWxfZGlyZW50LmM6MzI6Ci0gfCAvaG9tZS9hbmRyZS9idWlsZC90bXAvc3lzcm9vdHMvcWVtdXg4Ni02NC91c3IvaW5jbHVkZS9iaXRzL3N5c2NhbGwuaDo0MToyOTogZmF0YWwgZXJyb3I6IGJpdHMvc3lzY2FsbC0zMi5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0KLU1ha2UgdGhlIG1wZXJzLm00IHRlc3RzIG1vcmUgcm9idXN0IHNvIHRoYXQgY29uZmlndXJlIGNvcnJlY3RseQotZGV0ZWN0cyB0aGUgbGltaXRhdGlvbnMgb2YgdGhlIE9FIHRvb2xjaGFpbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEFuZHJlIE1jQ3VyZHkgPGFybWNjdXJkeUBnbWFpbC5jb20+Ci0KLS0tLQotIG00L21wZXJzLm00IHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL200L21wZXJzLm00IGIvbTQvbXBlcnMubTQKLWluZGV4IDEzNzI1ZDcuLmQ4NTc4ZWEgMTAwNjQ0Ci0tLS0gYS9tNC9tcGVycy5tNAotKysrIGIvbTQvbXBlcnMubTQKLUBAIC04OCw2ICs4OCw3IEBAIGNhc2UgIiRhcmNoIiBpbgotIAlDRkxBR1M9IiRDRkxBR1MgTVBFUlNfQ0ZMQUdTICRJRkxBRyIKLSAJQUNfQ0FDSEVfQ0hFQ0soW2ZvciBtcGVyc19uYW1lIHBlcnNvbmFsaXR5IGNvbXBpbGUgc3VwcG9ydF0sIFtzdF9jdl9jY10sCi0gCQlbQUNfQ09NUElMRV9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbI2luY2x1ZGUgPHN0ZGludC5oPgotKwkJCQkJCSAgICAgI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0gCQkJCQkJICAgICBpbnQgbWFpbigpe3JldHVybiAwO31dXSldLAotIAkJCQkgICBbc3RfY3ZfY2M9eWVzXSwKLSAJCQkJICAgW3N0X2N2X2NjPW5vXSldKQotQEAgLTk1LDYgKzk2LDcgQEAgY2FzZSAiJGFyY2giIGluCi0gCQlBQ19DQUNIRV9DSEVDSyhbZm9yIG1wZXJzX25hbWUgcGVyc29uYWxpdHkgcnVudGltZSBzdXBwb3J0XSwKLSAJCQlbc3RfY3ZfcnVudGltZV0sCi0gCQkJW0FDX1JVTl9JRkVMU0UoW0FDX0xBTkdfU09VUkNFKFtbI2luY2x1ZGUgPHN0ZGludC5oPgotKwkJCQkJCQkgI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+Ci0gCQkJCQkJCSBpbnQgbWFpbigpe3JldHVybiAwO31dXSldLAotIAkJCQkgICAgICAgW3N0X2N2X3J1bnRpbWU9eWVzXSwKLSAJCQkJICAgICAgIFtzdF9jdl9ydW50aW1lPW5vXSwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvcHRlc3Qtc3BhY2VzYXZlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9wdGVzdC1zcGFjZXNhdmUucGF0Y2gKaW5kZXggM2UzMmNjMy4uYzVkOGZmOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9wdGVzdC1zcGFjZXNhdmUucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9wdGVzdC1zcGFjZXNhdmUucGF0Y2gKQEAgLTEsMyArMSw4IEBACitGcm9tIDNmYWQ0ODIxZDkwY2QyNjRkMWI5NDI1M2I5Y2Y0ZmRmNWQ0MDM0YjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KK0RhdGU6IFdlZCwgMjkgTWF5IDIwMTkgMDA6MTA6MzIgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gc3RyYWNlOiBUd2VhayBwdGVzdCBkaXNrIHNwYWNlIG1hbmFnZW1lbnQKKwogSWYgdGhlIHRlc3QgaXMgc3VjY2Vzc2Z1bCwgcmVtb3ZlIHRoZSBsb2cgYW5kIGV4cCBmaWxlcy4gVGhpcyBzdG9wcyBzdHJhY2UKIHVzaW5nIGFyb3VuZCA2MDBNQiBvZiBkaXNrIHNwYWNlIGFuZCBydW5uaW5nIG91ciBwdGVzdCBpbWFnZXMgb3V0IG9mIHNwYWNlLgogCkBAIC01LDEwICsxMCwxNCBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3NwZWNpZmljIHRvIE9FIGltYWdlIHNwYWNlIGlzc3Vlc10KIAotSW5kZXg6IHN0cmFjZS00LjI2L3Rlc3RzL2dlbl90ZXN0cy5zaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN0cmFjZS00LjI2Lm9yaWcvdGVzdHMvZ2VuX3Rlc3RzLnNoCi0rKysgc3RyYWNlLTQuMjYvdGVzdHMvZ2VuX3Rlc3RzLnNoCistLS0KKyB0ZXN0cy9nZW5fdGVzdHMuc2ggfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3Rlc3RzL2dlbl90ZXN0cy5zaCBiL3Rlc3RzL2dlbl90ZXN0cy5zaAoraW5kZXggMzU0MDIwNC4uNWUxZTdjOSAxMDA3NTUKKy0tLSBhL3Rlc3RzL2dlbl90ZXN0cy5zaAorKysrIGIvdGVzdHMvZ2VuX3Rlc3RzLnNoCiBAQCAtNjIsNiArNjIsNyBAQCB3aGlsZSByZWFkIC1yIG5hbWUgYXJnMCBhcmdzOyBkbyB7CiAgCQkkaGRyCiAgCQkuICJcJHtzcmNkaXI9Ln0vaW5pdC5zaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9ydW4tcHRlc3QKaW5kZXggMmZlZDk4NC4uNDY2MDIwNyAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9ydW4tcHRlc3QKQEAgLTEsMyArMSw2IEBACiAjIS9iaW4vc2gKLWV4cG9ydCBUSU1FT1VUX0RVUkFUSU9OPTMwCi1tYWtlIC1CIC1DIHRlc3RzIC1rIHRlc3Qtc3VpdGUubG9nCitleHBvcnQgVElNRU9VVF9EVVJBVElPTj0xMjAKK2Nob3duIG5vYm9keSB0ZXN0cworY2hvd24gbm9ib2R5IHRlc3RzLyoKK2Nob3duIG5vYm9keSAuLi9wdGVzdAorc3Ugbm9ib2R5IC1jICJtYWtlIC1CIC1DIHRlc3RzIC1rIHRlc3Qtc3VpdGUubG9nIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9zeXNfaGVhZGVycy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2Uvc3lzX2hlYWRlcnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU0NmYyYzMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS9zeXNfaGVhZGVycy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVJlbW92ZSBjb25maWd1cmUgY2hlY2tzIGZvciBmZXcgc3lzLyBoZWFkZXJzCi0KLXN5cy9pcGMuaCwgc3lzL3NlbS5oLCBzeXMvc2htLmgsIGFuZCBzeXMvbXNnLmggYXJlIGFjdHVhbGx5IHdyYXBwZXJzCi1mb3Iga2VybmVsIGhlYWRlcnMgaW4gbGliYyBpZiBhdmFpbGFibGUsIGhlcmUgc3RyYWNlIGlzIHRyeWluZyB0byBtYXRjaAotdHJhY2VkIHByb2Nlc3MncyBBUElzIHRvIHN5c2NhbGxzIGtlcm5lbCBzdHJ1Y3R1cmVzCi0KLVJlbW92aW5nIHRoZSBjaGVja3MgbWFrZXMgaXQgZGVmYXVsdCB0byByaWdodCBrZXJuZWwgVUFQSSBoZWFkZXJzIHVuZGVyIGxpbnV4LwotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy5zdHJhY2UuaW8vcGlwZXJtYWlsL3N0cmFjZS1kZXZlbC8yMDE5LU5vdmVtYmVyLzAwOTIyMi5odG1sXQotU3VnZ2VzdGVkLWJ5OiBSaWNoIEZlbGtlciA8ZGFsaWFzQGFlcmlmYWwuY3g+Ci1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC00MzksMTEgKzQzOSw3IEBAIEFDX0NIRUNLX0hFQURFUlMobTRfbm9ybWFsaXplKFsKLSAJc3lzL2NvbmYuaAotIAlzeXMvZXZlbnRmZC5oCi0gCXN5cy9mYW5vdGlmeS5oCi0tCXN5cy9pcGMuaAotLQlzeXMvbXNnLmgKLSAJc3lzL3F1b3RhLmgKLS0Jc3lzL3NlbS5oCi0tCXN5cy9zaG0uaAotIAlzeXMvc2lnbmFsZmQuaAotIAlzeXMveGF0dHIuaAotIAl1c3RhdC5oCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3VpbnRwdHJfdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvdWludHB0cl90LnBhdGNoCmluZGV4IDZkM2RkNmYuLjA4OGQ2ODUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvdWludHB0cl90LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvdWludHB0cl90LnBhdGNoCkBAIC0xLDEwICsxLDIwIEBACi1pbmNsdWRlIHN0ZGludC5oIGZvciBnZXR0aW5nIHVpbnRwdHJfdCBkZWZpbml0aW9uCitGcm9tIGE2YzkzNjZiZmJjZWY2ZjNmNGJiMDY4YjFmMWE1NjIzOTM1YjUwMTMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCA1IE5vdiAyMDE5IDIwOjA1OjA4IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGluY2x1ZGUgc3RkaW50LmggZm9yIGdldHRpbmcgdWludHB0cl90IGRlZmluaXRpb24KIAogZml4ZXMgZG9fY29tcGlsZV9wdGVzdF9iYXNlCiB0ZXN0cy9mYW5vdGlmeV9tYXJrLmM6MTkxOjIzOiBlcnJvcjogJ3VpbnRwdHJfdCcgdW5kZWNsYXJlZCAoZmlyc3QgdXNlIGluIHRoaXMgZnVuY3Rpb24pOyBkaWQgeW91IG1lYW4gJ2ludHB0cl90Jz8KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0KKyB0ZXN0cy9mYW5vdGlmeV9tYXJrLmMgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3Rlc3RzL2Zhbm90aWZ5X21hcmsuYyBiL3Rlc3RzL2Zhbm90aWZ5X21hcmsuYworaW5kZXggYWFkZTY0My4uZGU1NzlmMyAxMDA2NDQKIC0tLSBhL3Rlc3RzL2Zhbm90aWZ5X21hcmsuYwogKysrIGIvdGVzdHMvZmFub3RpZnlfbWFyay5jCiBAQCAtMTgsNiArMTgsNyBAQApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2UvdXBkYXRlLWdhd2stcGF0aHMucGF0Y2gKaW5kZXggNzA3NzA0OC4uZDQ2YjE0NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZS91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlL3VwZGF0ZS1nYXdrLXBhdGhzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBmMGQ3ZWJmNDg0NDFlMGIwOTBjM2U2MDUzYjhjODQ1ZDBhNGEzYjE4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxMmE3MjZiMjgwZWNhOTQ4ODNlZGNiNGRhMWVhYWY4ZTkzZDQxNzM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KIERhdGU6IE1vbiwgMTggSmFuIDIwMTYgMTE6MDE6MDAgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gdXBkYXRlIGdhd2sgcGF0aHMsIC9iaW4vZ2F3ayAtPiAvdXNyL2Jpbi9nYXdrCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdHJhY2Uvc3RyYWNlXzUuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNS4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiMDAwYWZiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNS4zLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTggKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0gY2FsbCB0cmFjaW5nIHRvb2wiCi1IT01FUEFHRSA9ICJodHRwOi8vc3RyYWNlLmlvIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJMR1BMLTIuMSsgJiBHUEwtMisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wMTY5YTA0ODEwODMwZTk0ZjRiMWNmYjgyM2M5ZjU5MiIKLQotU1JDX1VSSSA9ICJodHRwczovL3N0cmFjZS5pby9maWxlcy8ke1BWfS9zdHJhY2UtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtZ2l0LXZlcnNpb24tZ2VuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21vcmUtcm9idXN0LXRlc3QtZm9yLW0zMi1teDMyLWNvbXBpbGUtc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1wdGVzdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAotICAgICAgICAgICBmaWxlOi8vbWlwcy1TSUdFTVQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtc2lnYWN0aW9uLUNoZWNrLWZvci1taXBzLWFuZC1hbHBoYS1iZWZvcmUtdXNpbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9wdGVzdC1zcGFjZXNhdmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vdWludHB0cl90LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3N5c19oZWFkZXJzLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjg0ZjVlNzJkZTgxM2M5YjFiYjYwNTdlZThhYjQyOGQ4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZjMTMxMTk4NzQ5NjU2NDAxZmUzZWZkNmI0YjE2YTA3ZWE4NjdlOGY1MzA4NjdjZWFlODkzMGJiYzkzN2EwNDciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0Ci0KLVBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbYmx1ZXpdID0gImFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9eWVzLGFjX2N2X2hlYWRlcl9ibHVldG9vdGhfYmx1ZXRvb3RoX2g9bm8sYmx1ZXo1IgotUEFDS0FHRUNPTkZJR1tsaWJ1bndpbmRdID0gIi0td2l0aC1saWJ1bndpbmQsLS13aXRob3V0LWxpYnVud2luZCxsaWJ1bndpbmQiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbXBlcnM9bm8iCi0KLUNGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtRHNpZ2NvbnRleHRfc3RydWN0PXNpZ2NvbnRleHQiCi0KLVRFU1RESVIgPSAidGVzdHMiCi1QVEVTVF9CVUlMRF9IT1NUX1BBVFRFUk4gPSAiXihERUJfQ0hBTkdFTE9HVElNRXxSUE1fQ0hBTkdFTE9HVElNRXxXQVJOX0NGTEFHU19GT1JfQlVJTER8TERGTEFHU19GT1JfQlVJTEQpIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIFdlIGRvbid0IHNoaXAgc3RyYWNlLWdyYXBoIGhlcmUgYmVjYXVzZSBpdCBuZWVkcyBwZXJsCi0Jcm0gJHtEfSR7YmluZGlyfS9zdHJhY2UtZ3JhcGgKLX0KLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gYnVpbGR0ZXN0LVRFU1RTCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGluc3RhbGwtcHRlc3QgQlVJTERESVI9JHtCfSBERVNURElSPSR7RH0ke1BURVNUX1BBVEh9IFRFU1RESVI9JHtURVNURElSfQotCWluc3RhbGwgLW0gNzU1ICR7U30vdGVzdC1kcml2ZXIgJHtEfSR7UFRFU1RfUEFUSH0KLQlpbnN0YWxsIC1tIDY0NCAke0J9L2NvbmZpZy5oICR7RH0ke1BURVNUX1BBVEh9Ci0gICAgICAgIHNlZCAtaSAtZSAnL15zcmMvcy9zdHJhY2UuKlsxLTldL3B0ZXN0LycgJHtEfS8ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgY29yZXV0aWxzIGdyZXAgZ2F3ayBzZWQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotVE9PTENIQUlOID0gImdjYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNS41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3RyYWNlL3N0cmFjZV81LjUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWU1NTJkYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N0cmFjZS9zdHJhY2VfNS41LmJiCkBAIC0wLDAgKzEsNTYgQEAKK1NVTU1BUlkgPSAiU3lzdGVtIGNhbGwgdHJhY2luZyB0b29sIgorSE9NRVBBR0UgPSAiaHR0cDovL3N0cmFjZS5pbyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiTEdQTC0yLjErICYgR1BMLTIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzc1NmQ5ZDVkYWJjMjc2NjNkZjY0ZjBiZjQ5MjE2NmMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9zdHJhY2UuaW8vZmlsZXMvJHtQVn0vc3RyYWNlLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLWdpdC12ZXJzaW9uLWdlbi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91cGRhdGUtZ2F3ay1wYXRocy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1wdGVzdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vbWlwcy1TSUdFTVQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jYXBzLWFiYnJldi5hd2stZml4LWdhd2stcy1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3B0ZXN0LXNwYWNlc2F2ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly91aW50cHRyX3QucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1zdHJhY2UtZml4LXJlcHJvZHVjaWJpbHR5LWlzc3Vlcy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJkYmNlMmU4NDYzMmIzOWE0ZWQ4NmI5ZmM2MDQ0N2FmOSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5ZjU4OTU4YzhlNTllYTYyMjkzZDkwN2QxMDU3MmUzNTJiNTgyYmQ3OTQ4ZWQyMWFhMjhlYmI0N2U1YmYzMGZmIgorCitpbmhlcml0IGF1dG90b29scyBwdGVzdAorCitQQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gIlwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2JsdWV0b290aCcsICdibHVleicsICcnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHW2JsdWV6XSA9ICJhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPXllcyxhY19jdl9oZWFkZXJfYmx1ZXRvb3RoX2JsdWV0b290aF9oPW5vLGJsdWV6NSIKK1BBQ0tBR0VDT05GSUdbbGlidW53aW5kXSA9ICItLXdpdGgtbGlidW53aW5kLC0td2l0aG91dC1saWJ1bndpbmQsbGlidW53aW5kIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLW1wZXJzPW5vIgorCitDRkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLURzaWdjb250ZXh0X3N0cnVjdD1zaWdjb250ZXh0IgorCitURVNURElSID0gInRlc3RzIgorUFRFU1RfQlVJTERfSE9TVF9QQVRURVJOID0gIl4oREVCX0NIQU5HRUxPR1RJTUV8UlBNX0NIQU5HRUxPR1RJTUV8V0FSTl9DRkxBR1NfRk9SX0JVSUxEfExERkxBR1NfRk9SX0JVSUxEKSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBXZSBkb24ndCBzaGlwIHN0cmFjZS1ncmFwaCBoZXJlIGJlY2F1c2UgaXQgbmVlZHMgcGVybAorCXJtICR7RH0ke2JpbmRpcn0vc3RyYWNlLWdyYXBoCit9CisKK2RvX2NvbXBpbGVfcHRlc3QoKSB7CisJb2VfcnVubWFrZSAtQyAke1RFU1RESVJ9IGJ1aWxkdGVzdC1URVNUUworfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBpbnN0YWxsLXB0ZXN0IEJVSUxERElSPSR7Qn0gREVTVERJUj0ke0R9JHtQVEVTVF9QQVRIfSBURVNURElSPSR7VEVTVERJUn0KKwlpbnN0YWxsIC1tIDc1NSAke1N9L3Rlc3QtZHJpdmVyICR7RH0ke1BURVNUX1BBVEh9CisJaW5zdGFsbCAtbSA2NDQgJHtCfS9jb25maWcuaCAke0R9JHtQVEVTVF9QQVRIfQorICAgICAgICBzZWQgLWkgLWUgJy9ec3JjL3Mvc3RyYWNlLipbMS05XS9wdGVzdC8nICR7RH0vJHtQVEVTVF9QQVRIfS8ke1RFU1RESVJ9L01ha2VmaWxlCit9CisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIGNvcmV1dGlscyBncmVwIGdhd2sgc2VkIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKK1RPT0xDSEFJTiA9ICJnY2MiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS4xMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGZmYTFjNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zdWJ2ZXJzaW9uL3N1YnZlcnNpb25fMS4xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotU1VNTUFSWSA9ICJTdWJ2ZXJzaW9uIChzdm4pIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gY2xpZW50IgotSE9NRVBBR0UgPSAiaHR0cDovL3N1YnZlcnNpb24uYXBhY2hlLm9yZyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJBcGFjaGUtMiAmIE1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY0ODdhZTcwOTRkMzU5ZmE5MGZiOWM0MDk2ZTUyZTJiIgotCi1ERVBFTkRTID0gImFwci11dGlsIHNlcmYgc3FsaXRlMyBmaWxlIGx6NCIKLURFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV9tYWNvcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1saWJ0b29sLW5hbWUtaW4tY29uZmlndXJlLmFjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3NlcmZtYWNyby5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjFmZjI0OWY4NDhmODM0ZGVkODg1MzY1NDNlMDMxOTc1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNiZDBiNWM4ZTRjNTE3NTI2M2RjOWE5MmZkOWFlZjk0Y2U5MTdlODBhZjAzNGYyNmZlNWM0NWZkZTdlMGY3NzEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0Ci0KLUNWRV9QUk9EVUNUID0gImFwYWNoZTpzdWJ2ZXJzaW9uIgotCi1QQUNLQUdFQ09ORklHID89ICIiCi0KLVBBQ0tBR0VDT05GSUdbYm9vc3RdID0gIi0td2l0aC1ib29zdD0ke1JFQ0lQRV9TWVNST09UfSR7ZXhlY19wcmVmaXh9LC0td2l0aG91dC1ib29zdCxib29zdCIKLVBBQ0tBR0VDT05GSUdbc2FzbF0gPSAiLS13aXRoLXNhc2wsLS13aXRob3V0LXNhc2wsY3lydXMtc2FzbCIKLVBBQ0tBR0VDT05GSUdbZ25vbWUta2V5cmluZ10gPSAiLS13aXRoLWdub21lLWtleXJpbmcsLS13aXRob3V0LWdub21lLWtleXJpbmcsZ2xpYi0yLjAgZ25vbWUta2V5cmluZyIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCi0gICAgLS13aXRoLWFwci11dGlsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKLSAgICAtLXdpdGhvdXQtYXB4cyBcCi0gICAgLS13aXRob3V0LWJlcmtlbGV5LWRiIFwKLSAgICAtLXdpdGhvdXQtc3dpZyBcCi0gICAgLS1kaXNhYmxlLWtleWNoYWluIFwKLSAgICAtLXdpdGgtdXRmOHByb2M9aW50ZXJuYWwgXAotICAgIGFjX2N2X3BhdGhfUlVCWT1ub25lIFwKLSIKLQotYWNwYXRocyA9ICItSSBidWlsZC8gLUkgYnVpbGQvYWMtbWFjcm9zLyIKLQotQ1BQRkxBR1MgKz0gIi1QIgotQlVJTERfQ1BQRkxBR1MgKz0gIi1QIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0Jcm0gLWYgJHtTfS9saWJ0b29sCi0Jcm0gLWYgJHtTfS9idWlsZC9saWJ0b29sLm00ICR7U30vYnVpbGQvbHRtYWluLnNoICR7U30vYnVpbGQvbHRvcHRpb25zLm00ICR7U30vYnVpbGQvbHRzdWdhci5tNCAke1N9L2J1aWxkL2x0dmVyc2lvbi5tNCAke1N9L2J1aWxkL2x0fm9ic29sZXRlLm00Ci0Jcm0gLWYgJHtTfS9hY2xvY2FsLm00Ci0Jc2VkIC1pIC1lICdzOndpdGhfc2FzbD0iL3Vzci9sb2NhbCI6d2l0aF9zYXNsPSIke1NUQUdJTkdfRElSfSI6JyAke1N9L2J1aWxkL2FjLW1hY3Jvcy9zYXNsLm00Ci19Ci0KLSN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfbG9jYWwvbGlic3ZuX3JhX2xvY2FsLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCAvdXNyL2Jpbi9sZDogY2Fubm90IGZpbmQgLWxzdm5fZGVsdGEtMXwgY29sbGVjdDI6IGxkIHJldHVybmVkIDEgZXhpdCBzdGF0dXN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmFfc3ZuL2xpYnN2bl9yYV9zdm4tMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX3NlcmYvbGlic3ZuX3JhX3NlcmYtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCi0jfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogZXJyb3I6IHJlbGluayBgbGlic3ZuX3JhX3NlcmYtMS5sYScgd2l0aCB0aGUgYWJvdmUgY29tbWFuZCBiZWZvcmUgaW5zdGFsbGluZyBpdAotI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAuLi8uLi9zdWJ2ZXJzaW9uL2xpYnN2bl9yZXBvcy9saWJzdm5fcmVwb3MtMS5sYScgaGFzIG5vdCBiZWVuIGluc3RhbGxlZCBpbiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvc3lzcm9vdHMveDg2XzY0LWxpbnV4L3Vzci9saWInCi0jfCAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9zdWJ2ZXJzaW9uLTEuOC45L2J1aWxkLW91dHB1dHMubWs6MTA5MDogcmVjaXBlIGZvciB0YXJnZXQgJ2luc3RhbGwtc2VyZi1saWInIGZhaWxlZAotI3wgbWFrZTogKioqIFtpbnN0YWxsLXNlcmYtbGliXSBFcnJvciAxCi1QQVJBTExFTF9NQUtFSU5TVCA9ICIiCi0KLVJERVBFTkRTXyR7UE59ID0gInNlcmYiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3VidmVyc2lvbi9zdWJ2ZXJzaW9uXzEuMTMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjEzLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjg3OWYxMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N1YnZlcnNpb24vc3VidmVyc2lvbl8xLjEzLjAuYmIKQEAgLTAsMCArMSw2MyBAQAorU1VNTUFSWSA9ICJTdWJ2ZXJzaW9uIChzdm4pIHZlcnNpb24gY29udHJvbCBzeXN0ZW0gY2xpZW50IgorSE9NRVBBR0UgPSAiaHR0cDovL3N1YnZlcnNpb24uYXBhY2hlLm9yZyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJBcGFjaGUtMiAmIE1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTY0ODdhZTcwOTRkMzU5ZmE5MGZiOWM0MDk2ZTUyZTJiIgorCitERVBFTkRTID0gImFwci11dGlsIHNlcmYgc3FsaXRlMyBmaWxlIGx6NCIKK0RFUEVORFNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgZmlsZS1yZXBsYWNlbWVudC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiJHtBUEFDSEVfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV9tYWNvcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1saWJ0b29sLW5hbWUtaW4tY29uZmlndXJlLmFjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NlcmZtYWNyby5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjMwMDRiNGRhZTE4YmY0NWEwYjZlYTRlZjg4MjAwNjRkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJjNTBjZTJjM2ZhYTdiMWFlOTEwM2M0MzIwMTdkZjk4ZGZkOTg5YzQyMzlmOWY4MjcwYmIzYTMxNGVkOWU1YmQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0CisKK0NWRV9QUk9EVUNUID0gImFwYWNoZTpzdWJ2ZXJzaW9uIgorCitQQUNLQUdFQ09ORklHID89ICIiCisKK1BBQ0tBR0VDT05GSUdbYm9vc3RdID0gIi0td2l0aC1ib29zdD0ke1JFQ0lQRV9TWVNST09UfSR7ZXhlY19wcmVmaXh9LC0td2l0aG91dC1ib29zdCxib29zdCIKK1BBQ0tBR0VDT05GSUdbc2FzbF0gPSAiLS13aXRoLXNhc2wsLS13aXRob3V0LXNhc2wsY3lydXMtc2FzbCIKK1BBQ0tBR0VDT05GSUdbZ25vbWUta2V5cmluZ10gPSAiLS13aXRoLWdub21lLWtleXJpbmcsLS13aXRob3V0LWdub21lLWtleXJpbmcsZ2xpYi0yLjAgZ25vbWUta2V5cmluZyIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS13aXRoLWFwcj0ke1NUQUdJTkdfQklORElSX0NST1NTfSBcCisgICAgLS13aXRoLWFwci11dGlsPSR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9IFwKKyAgICAtLXdpdGhvdXQtYXB4cyBcCisgICAgLS13aXRob3V0LWJlcmtlbGV5LWRiIFwKKyAgICAtLXdpdGhvdXQtc3dpZyBcCisgICAgLS1kaXNhYmxlLWtleWNoYWluIFwKKyAgICAtLXdpdGgtdXRmOHByb2M9aW50ZXJuYWwgXAorICAgIGFjX2N2X3BhdGhfUlVCWT1ub25lIFwKKyIKKworRVhUUkFfT0VNQUtFICs9ICJwa2djb25maWdfZGlyPSR7bGliZGlyfS9wa2djb25maWciCisKK2FjcGF0aHMgPSAiLUkgYnVpbGQvIC1JIGJ1aWxkL2FjLW1hY3Jvcy8iCisKK0NQUEZMQUdTICs9ICItUCIKK0JVSUxEX0NQUEZMQUdTICs9ICItUCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCXJtIC1mICR7U30vbGlidG9vbAorCXJtIC1mICR7U30vYnVpbGQvbGlidG9vbC5tNCAke1N9L2J1aWxkL2x0bWFpbi5zaCAke1N9L2J1aWxkL2x0b3B0aW9ucy5tNCAke1N9L2J1aWxkL2x0c3VnYXIubTQgJHtTfS9idWlsZC9sdHZlcnNpb24ubTQgJHtTfS9idWlsZC9sdH5vYnNvbGV0ZS5tNAorCXJtIC1mICR7U30vYWNsb2NhbC5tNAorCXNlZCAtaSAtZSAnczp3aXRoX3Nhc2w9Ii91c3IvbG9jYWwiOndpdGhfc2FzbD0iJHtTVEFHSU5HX0RJUn0iOicgJHtTfS9idWlsZC9hYy1tYWNyb3Mvc2FzbC5tNAorfQorCisjfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX2xvY2FsL2xpYnN2bl9yYV9sb2NhbC0xLmxhJyBoYXMgbm90IGJlZW4gaW5zdGFsbGVkIGluIGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL2xpYid8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvYnVpbGQvc3VidmVyc2lvbi9saWJzdm5fcmVwb3MvbGlic3ZuX3JlcG9zLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgL3Vzci9iaW4vbGQ6IGNhbm5vdCBmaW5kIC1sc3ZuX2RlbHRhLTF8IGNvbGxlY3QyOiBsZCByZXR1cm5lZCAxIGV4aXQgc3RhdHVzfCB4ODZfNjQtbGludXgtbGlidG9vbDogaW5zdGFsbDogd2FybmluZzogYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LWxpbnV4L3N1YnZlcnNpb24tbmF0aXZlLzEuOC45LXIwL2J1aWxkL3N1YnZlcnNpb24vbGlic3ZuX3JhX3N2bi9saWJzdm5fcmFfc3ZuLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJ3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IHdhcm5pbmc6IGAvaG9tZS9wb2t5YnVpbGQveW9jdG8tYXV0b2J1aWxkZXIveW9jdG8td29ya2VyL25pZ2h0bHktcWEtbG9ncm90YXRlL2J1aWxkL2J1aWxkL3RtcC93b3JrL3g4Nl82NC1saW51eC9zdWJ2ZXJzaW9uLW5hdGl2ZS8xLjguOS1yMC9idWlsZC9zdWJ2ZXJzaW9uL2xpYnN2bl9yYV9zZXJmL2xpYnN2bl9yYV9zZXJmLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJworI3wgeDg2XzY0LWxpbnV4LWxpYnRvb2w6IGluc3RhbGw6IGVycm9yOiByZWxpbmsgYGxpYnN2bl9yYV9zZXJmLTEubGEnIHdpdGggdGhlIGFib3ZlIGNvbW1hbmQgYmVmb3JlIGluc3RhbGxpbmcgaXQKKyN8IHg4Nl82NC1saW51eC1saWJ0b29sOiBpbnN0YWxsOiB3YXJuaW5nOiBgLi4vLi4vc3VidmVyc2lvbi9saWJzdm5fcmVwb3MvbGlic3ZuX3JlcG9zLTEubGEnIGhhcyBub3QgYmVlbiBpbnN0YWxsZWQgaW4gYC9ob21lL3Bva3lidWlsZC95b2N0by1hdXRvYnVpbGRlci95b2N0by13b3JrZXIvbmlnaHRseS1xYS1sb2dyb3RhdGUvYnVpbGQvYnVpbGQvdG1wL3N5c3Jvb3RzL3g4Nl82NC1saW51eC91c3IvbGliJworI3wgL2hvbWUvcG9reWJ1aWxkL3lvY3RvLWF1dG9idWlsZGVyL3lvY3RvLXdvcmtlci9uaWdodGx5LXFhLWxvZ3JvdGF0ZS9idWlsZC9idWlsZC90bXAvd29yay94ODZfNjQtbGludXgvc3VidmVyc2lvbi1uYXRpdmUvMS44LjktcjAvc3VidmVyc2lvbi0xLjguOS9idWlsZC1vdXRwdXRzLm1rOjEwOTA6IHJlY2lwZSBmb3IgdGFyZ2V0ICdpbnN0YWxsLXNlcmYtbGliJyBmYWlsZWQKKyN8IG1ha2U6ICoqKiBbaW5zdGFsbC1zZXJmLWxpYl0gRXJyb3IgMQorUEFSQUxMRUxfTUFLRUlOU1QgPSAiIgorCitSREVQRU5EU18ke1BOfSA9ICJzZXJmIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0LzAwMDEtYXJjaGl0ZWN0dXJlLVJlY29nbmlzZS1SSVNDVi0zMi1SSVNDVi02NC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0LzAwMDEtYXJjaGl0ZWN0dXJlLVJlY29nbmlzZS1SSVNDVi0zMi1SSVNDVi02NC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mYzAzODEyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvMDAwMS1hcmNoaXRlY3R1cmUtUmVjb2duaXNlLVJJU0NWLTMyLVJJU0NWLTY0LnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gNGE2YWNlMGE5NjU5NjVlYTE1ZTg4YzM0MThjNzE1OGNhNWNjOWY4ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDIxIE5vdiAyMDE5IDEwOjEyOjA1IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGFyY2hpdGVjdHVyZTogUmVjb2duaXNlIFJJU0NWLTMyL1JJU0NWLTY0CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvY29tbWl0LzE3MWI1MzM4MDA4NWIxMjg4YjAzYjE5YTJiOTc4ZjM2YTVjMDAzZDBdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2FyY2hpdGVjdHVyZS5oIHwgMTMgKysrKysrKysrKysrKworIDEgZmlsZSBjaGFuZ2VkLCAxMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvYXJjaGl0ZWN0dXJlLmggYi9zcmMvYXJjaGl0ZWN0dXJlLmgKK2luZGV4IDI2Njc5ZTIuLjg5YzdkMzIgMTAwNjQ0CistLS0gYS9zcmMvYXJjaGl0ZWN0dXJlLmgKKysrKyBiL3NyYy9hcmNoaXRlY3R1cmUuaAorQEAgLTU3LDYgKzU3LDggQEAgZW51bSB7CisgICAgICAgICBBUkNISVRFQ1RVUkVfTTY4SywKKyAgICAgICAgIEFSQ0hJVEVDVFVSRV9USUxFR1gsCisgICAgICAgICBBUkNISVRFQ1RVUkVfQ1JJUywKKysgICAgICAgQVJDSElURUNUVVJFX1JJU0NWMzIsCisrICAgICAgIEFSQ0hJVEVDVFVSRV9SSVNDVjY0LAorICAgICAgICAgX0FSQ0hJVEVDVFVSRV9NQVgsCisgICAgICAgICBfQVJDSElURUNUVVJFX0lOVkFMSUQgPSAtMQorIH07CitAQCAtMTk0LDYgKzE5NiwxNyBAQCBpbnQgdW5hbWVfYXJjaGl0ZWN0dXJlKHZvaWQpOworICNlbGlmIGRlZmluZWQoX19jcmlzX18pCisgIyAgZGVmaW5lIG5hdGl2ZV9hcmNoaXRlY3R1cmUoKSBBUkNISVRFQ1RVUkVfQ1JJUworICMgIGVycm9yICJNaXNzaW5nIExJQl9BUkNIX1RVUExFIGZvciBDUklTIgorKyNlbGlmIGRlZmluZWQoX19yaXNjdikKKysjICBpZiBfX1NJWkVPRl9QT0lOVEVSX18gPT0gNAorKyMgICAgZGVmaW5lIG5hdGl2ZV9hcmNoaXRlY3R1cmUoKSBBUkNISVRFQ1RVUkVfUklTQ1YzMgorKyMgICAgZGVmaW5lIExJQl9BUkNIX1RVUExFICJyaXNjdjMyLWxpbnV4LWdudSIKKysjICBlbGlmIF9fU0laRU9GX1BPSU5URVJfXyA9PSA4CisrIyAgICBkZWZpbmUgbmF0aXZlX2FyY2hpdGVjdHVyZSgpIEFSQ0hJVEVDVFVSRV9SSVNDVjY0CisrIyAgICBkZWZpbmUgTElCX0FSQ0hfVFVQTEUgInJpc2N2NjQtbGludXgtZ251IgorKyMgIGVsc2UKKysjICAgIGVycm9yICJVbnJlY29nbml6ZWQgcmlzY3YgYXJjaGl0ZWN0dXJlIHZhcmlhbnQiCisrIyAgZW5kaWYKKysjICBkZWZpbmUgUFJPQ19DUFVJTkZPX01PREVMICJjcHUgbW9kZWwiCisgI2Vsc2UKKyAjICBlcnJvciAiUGxlYXNlIHJlZ2lzdGVyIHlvdXIgYXJjaGl0ZWN0dXJlIGhlcmUhIgorICNlbmRpZgorLS0gCisyLjI0LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvbWlwczY0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnQvbWlwczY0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYyMDZiYzQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydC9taXBzNjQucGF0Y2gKQEAgLTAsMCArMSwzNSBAQAorUmVjb2duaXNlIG1pcHM2NCBuMzIvbjY0CisKK1RoZXNlIGFyZSBzdXBwb3J0ZWQgaW4gc3lzdGVtZCBub3cgYSBkYXlzCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zeXN0ZW1kL3N5c3RlbWQvY29tbWl0L2NhZjQ5Yjk1YjNhNmVmZTk0NTUwNzgwOThjNzI5ZDgzYjA4ZTUyMDZdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0gYS9zcmMvYXJjaGl0ZWN0dXJlLmgKKysrKyBiL3NyYy9hcmNoaXRlY3R1cmUuaAorQEAgLTEyNywxMyArMTI3LDIyIEBAIGludCB1bmFtZV9hcmNoaXRlY3R1cmUodm9pZCk7CisgIyAgZGVmaW5lIG5hdGl2ZV9hcmNoaXRlY3R1cmUoKSBBUkNISVRFQ1RVUkVfU1BBUkMKKyAjICBkZWZpbmUgTElCX0FSQ0hfVFVQTEUgInNwYXJjLWxpbnV4LWdudSIKKyAjICBkZWZpbmUgUFJPQ19DUFVJTkZPX01PREVMICJjcHUiCistI2VsaWYgZGVmaW5lZChfX21pcHM2NF9fKQorKyNlbGlmIGRlZmluZWQoX19taXBzNjQpICYmIGRlZmluZWQoX19MUDY0X18pCisgIyAgaWYgX19CWVRFX09SREVSID09IF9fQklHX0VORElBTgorICMgICAgZGVmaW5lIG5hdGl2ZV9hcmNoaXRlY3R1cmUoKSBBUkNISVRFQ1RVUkVfTUlQUzY0CistIyAgICBlcnJvciAiTWlzc2luZyBMSUJfQVJDSF9UVVBMRSBmb3IgTUlQUzY0IgorKyMgICAgZGVmaW5lIExJQl9BUkNIX1RVUExFICJtaXBzNjQtbGludXgtZ251YWJpNjQiCisgIyAgZWxzZQorICMgICAgZGVmaW5lIG5hdGl2ZV9hcmNoaXRlY3R1cmUoKSBBUkNISVRFQ1RVUkVfTUlQUzY0X0xFCistIyAgICBlcnJvciAiTWlzc2luZyBMSUJfQVJDSF9UVVBMRSBmb3IgTUlQUzY0X0xFIgorKyMgICAgZGVmaW5lIExJQl9BUkNIX1RVUExFICJtaXBzNjRlbC1saW51eC1nbnVhYmk2NCIKKysjICBlbmRpZgorKyMgIGRlZmluZSBQUk9DX0NQVUlORk9fTU9ERUwgImNwdSBtb2RlbCIKKysjZWxpZiBkZWZpbmVkKF9fbWlwczY0KQorKyMgIGlmIF9fQllURV9PUkRFUiA9PSBfX0JJR19FTkRJQU4KKysjICAgIGRlZmluZSBuYXRpdmVfYXJjaGl0ZWN0dXJlKCkgQVJDSElURUNUVVJFX01JUFM2NAorKyMgICAgZGVmaW5lIExJQl9BUkNIX1RVUExFICJtaXBzNjQtbGludXgtZ251YWJpbjMyIgorKyMgIGVsc2UKKysjICAgIGRlZmluZSBuYXRpdmVfYXJjaGl0ZWN0dXJlKCkgQVJDSElURUNUVVJFX01JUFM2NF9MRQorKyMgICAgZGVmaW5lIExJQl9BUkNIX1RVUExFICJtaXBzNjRlbC1saW51eC1nbnVhYmluMzIiCisgIyAgZW5kaWYKKyAjICBkZWZpbmUgUFJPQ19DUFVJTkZPX01PREVMICJjcHUgbW9kZWwiCisgI2VsaWYgZGVmaW5lZChfX21pcHNfXykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3N5c3RlbWQtYm9vdGNoYXJ0L3N5c3RlbWQtYm9vdGNoYXJ0XzIzMy5iYgppbmRleCBhZWY4ODM5Li5hN2ExZjBmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy9zeXN0ZW1kLWJvb3RjaGFydC9zeXN0ZW1kLWJvb3RjaGFydF8yMzMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvc3lzdGVtZC1ib290Y2hhcnQvc3lzdGVtZC1ib290Y2hhcnRfMjMzLmJiCkBAIC0zLDYgKzMsOCBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5HUEwyO21kNT03NTE0MTkyNjBhYTk1NDQ5OWY3YWJhYWJhYTg4MmJiZSIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL3N5c3RlbWQvc3lzdGVtZC1ib290Y2hhcnQuZ2l0O3Byb3RvY29sPWh0dHBzIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYXJjaGl0ZWN0dXJlLVJlY29nbmlzZS1SSVNDVi0zMi1SSVNDVi02NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9taXBzNjQucGF0Y2ggXAogIgogCiBTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjZi1hZ2VudC90Y2YtYWdlbnRfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKaW5kZXggYjRiZDRjYS4uZWQxNGZlNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNmLWFnZW50L3RjZi1hZ2VudF9naXQuYmIKQEAgLTI5LDcgKzI5LDcgQEAKIElOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDk5IDMgNSAuIHN0b3AgMjAgMCAxIDIgNiAuIgogCiAjIG1hbmdsaW5nIG5lZWRlZCBmb3IgbWFrZQotTUFLRV9BUkNIID0gImBlY2hvICR7VEFSR0VUX0FSQ0h9IHwgc2VkIHMsaS44NixpNjg2LCB8IHNlZCBzLGFhcmNoNjQuKixhNjQsYCIKK01BS0VfQVJDSCA9ICJgZWNobyAke1RBUkdFVF9BUkNIfSB8IHNlZCBzLGkuODYsaTY4NiwgfCBzZWQgcyxhYXJjaDY0LiosYTY0LCB8IHNlZCBzLGFybWViLGFybSxgIgogTUFLRV9PUyA9ICJgZWNobyAke1RBUkdFVF9PU30gfCBzZWQgcyxebGludXguKixHTlUvTGludXgsYCIKIAogRVhUUkFfT0VNQUtFID0gIk1BQ0hJTkU9JHtNQUtFX0FSQ0h9IE9QU1lTPSR7TUFLRV9PU30gJ0NDPSR7Q0N9JyAnQVI9JHtBUn0nIgpAQCAtNDYsNiArNDYsNyBAQAogQ0ZMQUdTX2FwcGVuZF9taXBzNjQgPSAiICR7TENMX1NUT1BfU0VSVklDRVN9IgogQ0ZMQUdTX2FwcGVuZF9saWJjLW11c2wgPSAiICR7TENMX1NUT1BfU0VSVklDRVN9IgogQ0ZMQUdTX2FwcGVuZF9wb3dlcnBjNjQgPSAiICR7TENMX1NUT1BfU0VSVklDRVN9IgorQ0ZMQUdTX2FwcGVuZF9wb3dlcnBjNjRsZSA9ICIgJHtMQ0xfU1RPUF9TRVJWSUNFU30iCiBDRkxBR1NfYXBwZW5kX3Jpc2N2NjQgPSAiICR7TENMX1NUT1BfU0VSVklDRVN9IgogCiBkb19pbnN0YWxsKCkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsLzAwMDEtRml4LWFiZDRhYmVkZDItRmFpbGVkLXRvLWJ1aWxkLXRrLTguNi4xMC13aXRoLWNyb3NzLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC8wMDAxLUZpeC1hYmQ0YWJlZGQyLUZhaWxlZC10by1idWlsZC10ay04LjYuMTAtd2l0aC1jcm9zcy0ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2NkMzQxNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC8wMDAxLUZpeC1hYmQ0YWJlZGQyLUZhaWxlZC10by1idWlsZC10ay04LjYuMTAtd2l0aC1jcm9zcy0ucGF0Y2gKQEAgLTAsMCArMSw0NCBAQAorRnJvbSBmN2ZhNDhjNGM3NWExZTc0OGRjNTA3MWU3MDljMGI2MmZmNzM5ZWFhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogImphbi5uaWp0bWFucyIgPG5panRtYW5zQHVzZXJzLnNvdXJjZWZvcmdlLm5ldD4KK0RhdGU6IE1vbiwgOSBEZWMgMjAxOSAxMDowMjoyMCArMDAwMAorU3ViamVjdDogW1BBVENIXSBGaXggW2FiZDRhYmVkZDJdOiBGYWlsZWQgdG8gYnVpbGQgdGsgOC42LjEwIHdpdGggY3Jvc3MKKyBjb21waWxlCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKK1todHRwczovL2dpdGh1Yi5jb20vdGNsdGsvdGNsL2NvbW1pdC9mN2ZhNDhjNGM3NWExZTc0OGRjNTA3MWU3MDljMGI2MmZmNzM5ZWFhXQorCitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CistLS0KKyBjb21wYXQvc3RydG9sLmMgIHwgMiArLQorIGNvbXBhdC9zdHJ0b3VsLmMgfCAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9jb21wYXQvc3RydG9sLmMgYi9jb21wYXQvc3RydG9sLmMKK2luZGV4IGI3ZjY5MTk2Yy4uODExMDA2YTY0IDEwMDY0NAorLS0tIGEvY29tcGF0L3N0cnRvbC5jCisrKysgYi9jb21wYXQvc3RydG9sLmMKK0BAIC01Myw3ICs1Myw3IEBAIHN0cnRvbCgKKyAgICAgICovCisgCisgICAgIHAgPSBzdHJpbmc7CistICAgIHdoaWxlIChUY2xJc1NwYWNlUHJvYygqcCkpIHsKKysgICAgd2hpbGUgKGlzc3BhY2UoVUNIQVIoKnApKSkgeworIAlwICs9IDE7CisgICAgIH0KKyAKK2RpZmYgLS1naXQgYS9jb21wYXQvc3RydG91bC5jIGIvY29tcGF0L3N0cnRvdWwuYworaW5kZXggZTM3ZWIwNWY4Li4xNTU4N2YxZGEgMTAwNjQ0CistLS0gYS9jb21wYXQvc3RydG91bC5jCisrKysgYi9jb21wYXQvc3RydG91bC5jCitAQCAtNzQsNyArNzQsNyBAQCBzdHJ0b3VsKAorICAgICAgKi8KKyAKKyAgICAgcCA9IHN0cmluZzsKKy0gICAgd2hpbGUgKFRjbElzU3BhY2VQcm9jKCpwKSkgeworKyAgICB3aGlsZSAoaXNzcGFjZShVQ0hBUigqcCkpKSB7CisgCXAgKz0gMTsKKyAgICAgfQorICAgICBpZiAoKnAgPT0gJy0nKSB7CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2wvYWx0ZXItaW5jbHVkZWRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC9hbHRlci1pbmNsdWRlZGlyLnBhdGNoCmluZGV4IGM4NTMwZTEuLjg2NjMyZDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC9hbHRlci1pbmNsdWRlZGlyLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC9hbHRlci1pbmNsdWRlZGlyLnBhdGNoCkBAIC04LDYgKzgsNyBAQAogRml4ZWQgdGhlIFRDTF9JTkNMVURFX1NQRUMKIAogU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+CitTaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+CiAtLS0KICBNYWtlZmlsZS5pbiAgfCAgICAyICstCiAgY29uZmlndXJlICAgIHwgICAgNCArKy0tCkBAIC0zNCw3ICszNSw3IEBACiBAQCAtMTkxMzQsNyArMTkxMzQsNyBAQCBldmFsICJUQ0xfTElCX0ZJTEU9bGlidGNsJHtMSUJfU1VGRklYfSIKICBldmFsICJUQ0xfTElCX0ZJTEU9JHtUQ0xfTElCX0ZJTEV9IgogIAotIFRDTF9MSUJSQVJZPSckKGxpYmRpcikvdGNsJChWRVJTSU9OKScKKyB0ZXN0IC16ICIkVENMX0xJQlJBUlkiICYmIFRDTF9MSUJSQVJZPSckKGxpYmRpcikvdGNsJChWRVJTSU9OKScKIC1QUklWQVRFX0lOQ0xVREVfRElSPSckKGluY2x1ZGVkaXIpJwogK1BSSVZBVEVfSU5DTFVERV9ESVI9JyQoaW5jbHVkZWRpcikvdGNsJChWRVJTSU9OKScKICBIVE1MX0RJUj0nJChESVNURElSKS9odG1sJwpAQCAtNTYsNyArNTcsNyBAQAogQEAgLTc5MSw3ICs3OTEsNyBAQCBldmFsICJUQ0xfTElCX0ZJTEU9bGlidGNsJHtMSUJfU1VGRklYfSIKICBldmFsICJUQ0xfTElCX0ZJTEU9JHtUQ0xfTElCX0ZJTEV9IgogIAotIFRDTF9MSUJSQVJZPSckKGxpYmRpcikvdGNsJChWRVJTSU9OKScKKyB0ZXN0IC16ICIkVENMX0xJQlJBUlkiICYmIFRDTF9MSUJSQVJZPSckKGxpYmRpcikvdGNsJChWRVJTSU9OKScKIC1QUklWQVRFX0lOQ0xVREVfRElSPSckKGluY2x1ZGVkaXIpJwogK1BSSVZBVEVfSU5DTFVERV9ESVI9JyQoaW5jbHVkZWRpcikvdGNsJChWRVJTSU9OKScKICBIVE1MX0RJUj0nJChESVNURElSKS9odG1sJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsL3RjbC1yZW1vdmUtaGFyZGNvZGVkLWluc3RhbGwtcGF0aC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbC90Y2wtcmVtb3ZlLWhhcmRjb2RlZC1pbnN0YWxsLXBhdGgucGF0Y2gKaW5kZXggMTZmN2M4MC4uMTdkMjUxZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsL3RjbC1yZW1vdmUtaGFyZGNvZGVkLWluc3RhbGwtcGF0aC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2wvdGNsLXJlbW92ZS1oYXJkY29kZWQtaW5zdGFsbC1wYXRoLnBhdGNoCkBAIC0xNCwxMCArMTQsMTEgQEAKIAogU2lnbmVkLW9mZi1ieTogU29uZy5MaSA8U29uZy5MaUB3aW5kcml2ZXIuY29tPgogU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KK1NpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KIC0tLQotIGNvbmZpZ3VyZSB8ICAgIDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKyBjb25maWd1cmUgICAgfCAyICstCisgY29uZmlndXJlLmluIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBJbmRleDogdW5peC9jb25maWd1cmUKID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KQEAgLTI3LDggKzI4LDggQEAKICAKICBldmFsICJUQ0xfTElCX0ZJTEU9JHtUQ0xfTElCX0ZJTEV9IgogIAotLVRDTF9MSUJSQVJZPSckKHByZWZpeCkvbGliL3RjbCQoVkVSU0lPTiknCi0rVENMX0xJQlJBUlk9JyQobGliZGlyKS90Y2wkKFZFUlNJT04pJworLXRlc3QgLXogIiRUQ0xfTElCUkFSWSIgJiYgVENMX0xJQlJBUlk9JyQocHJlZml4KS9saWIvdGNsJChWRVJTSU9OKScKKyt0ZXN0IC16ICIkVENMX0xJQlJBUlkiICYmIFRDTF9MSUJSQVJZPSckKGxpYmRpcikvdGNsJChWRVJTSU9OKScKICBQUklWQVRFX0lOQ0xVREVfRElSPSckKGluY2x1ZGVkaXIpJwogIEhUTUxfRElSPSckKERJU1RESVIpL2h0bWwnCiAgCkBAIC00MCw4ICs0MSw4IEBACiAgCiAgZXZhbCAiVENMX0xJQl9GSUxFPSR7VENMX0xJQl9GSUxFfSIKICAKLS1UQ0xfTElCUkFSWT0nJChwcmVmaXgpL2xpYi90Y2wkKFZFUlNJT04pJwotK1RDTF9MSUJSQVJZPSckKGxpYmRpcikvdGNsJChWRVJTSU9OKScKKy10ZXN0IC16ICIkVENMX0xJQlJBUlkiICYmIFRDTF9MSUJSQVJZPSckKHByZWZpeCkvbGliL3RjbCQoVkVSU0lPTiknCisrdGVzdCAteiAiJFRDTF9MSUJSQVJZIiAmJiBUQ0xfTElCUkFSWT0nJChsaWJkaXIpL3RjbCQoVkVSU0lPTiknCiAgUFJJVkFURV9JTkNMVURFX0RJUj0nJChpbmNsdWRlZGlyKScKICBIVE1MX0RJUj0nJChESVNURElSKS9odG1sJwogIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWVkZDk2YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3RjbHRrL3RjbF84LjYuMTAuYmIKQEAgLTAsMCArMSwxMDUgQEAKK1NVTU1BUlkgPSAiVG9vbCBDb21tYW5kIExhbmd1YWdlIgorSE9NRVBBR0UgPSAiaHR0cDovL3RjbC5zb3VyY2Vmb3JnZS5uZXQiCitTRUNUSU9OID0gImRldmVsL3RjbHRrIgorCisjIGh0dHA6Ly93d3cudGNsLnRrL3NvZnR3YXJlL3RjbHRrL2xpY2Vuc2UuaHRtbAorTElDRU5TRSA9ICJ0Y2wgJiBCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL2NvbXBhdC9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL2xpYnJhcnkvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAorICAgIGZpbGU6Ly8uLi9tYWNvc3gvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAorICAgIGZpbGU6Ly8uLi90ZXN0cy9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisgICAgZmlsZTovLy4uL3dpbi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCisiCisKK0RFUEVORFMgPSAidGNsLW5hdGl2ZSB6bGliIgorCitCQVNFX1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3RjbC8ke0JQTn0ke1BWfS1zcmMudGFyLmd6IFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vdGNsLWFkZC1zb25hbWUucGF0Y2giCitTUkNfVVJJID0gIiR7QkFTRV9TUkNfVVJJfSBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfbm9uX25hdGl2ZV9idWlsZF9pc3N1ZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9maXhfaXNzdWVfd2l0aF9vbGRfZGlzdHJvX2dsaWJjLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25vX3BhY2thZ2VzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3RjbC1yZW1vdmUtaGFyZGNvZGVkLWluc3RhbGwtcGF0aC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9hbHRlci1pbmNsdWRlZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWFiZDRhYmVkZDItRmFpbGVkLXRvLWJ1aWxkLXRrLTguNi4xMC13aXRoLWNyb3NzLS5wYXRjaDtwYXRjaGRpcj0uLiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjk3YzU1NTczZjg1MjBiY2FiNzRlMjFiZmQ4ZDBhYWRjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUxOTZkYmY2NjM4ZTNkZjhkNWM4N2I1ODE1YzhjMmI3NTg0OTZlYjZmMGU0MTQ0NjU5NmM5YTRlNjM4ZDg3ZWQiCisKK1NSQ19VUklfY2xhc3MtbmF0aXZlID0gIiR7QkFTRV9TUkNfVVJJfSIKKworUyA9ICIke1dPUktESVJ9LyR7QlBOfSR7UFZ9L3VuaXgiCisKK1ZFUiA9ICIke1BWfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgYmluY29uZmlnIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRocmVhZHMgLS1kaXNhYmxlLXJwYXRoIC0tbGliZGlyPSR7bGliZGlyfSIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCWVjaG8gPiAke1N9Ly4uL2NvbXBhdC9maXhzdHJ0b2QuYworfQorCitkb19pbnN0YWxsKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisJb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLXByaXZhdGUtaGVhZGVycworCWxuIC1zZiAuL3RjbHNoJHtWRVJ9ICR7RH0ke2JpbmRpcn0vdGNsc2gKKwlsbiAtc2YgdGNsc2g4LjYgJHtEfSR7YmluZGlyfS90Y2xzaCR7VkVSfQorCXNlZCAtaSAiczstTCR7Qn07LUwke1NUQUdJTkdfTElCRElSfTtnIiB0Y2xDb25maWcuc2gKKwlzZWQgLWkgInM7JyR7V09SS0RJUn07JyR7U1RBR0lOR19JTkNESVJ9O2ciIHRjbENvbmZpZy5zaAorCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KKwlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9CisJaW5zdGFsbCAtbSAwNzU1IHRjbENvbmZpZy5zaCAke0R9JHtsaWJkaXJ9CisJZm9yIGRpciBpbiBjb21wYXQgZ2VuZXJpYyB1bml4OyBkbworCQlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyCisJCWluc3RhbGwgLW0gMDY0NCAke1N9Ly4uLyRkaXIvKi5oICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyLworCWRvbmUKK30KKworU1lTUk9PVF9ESVJTICs9ICIke2JpbmRpcl9jcm9zc3NjcmlwdHN9IgorCitQQUNLQUdFUyA9KyAidGNsLWxpYiIKK0ZJTEVTX3RjbC1saWIgPSAiJHtsaWJkaXJ9L2xpYnRjbDguNi5zby4qIgorRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS90Y2wke1ZFUn0gJHtsaWJkaXJ9L3RjbDguNiAke2xpYmRpcn0vdGNsOCIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCAke2xpYmRpcn0vdGNsb29Db25maWcuc2giCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJUaHJlYWQuMyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtUaHJlYWQuM10gPSAiJHttYW5kaXJ9L21hbjMvVGhyZWFkLjMiCisKKyMgaXNuJ3QgZ2V0dGluZyBwaWNrZWQgdXAgYnkgc2hsaWJzIGNvZGUKK1JERVBFTkRTXyR7UE59ICs9ICJ0Y2wtbGliIgorUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJnY2MiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKwlvZV9ydW5tYWtlIHRjbHRlc3QKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAke0J9L3RjbHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAke1N9Ly4uL2xpYnJhcnkgJHtEfSR7UFRFU1RfUEFUSH0KKwljcCAtciAke1N9Ly4uL3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9Cit9CisKKyMgRml4IHNvbWUgcGF0aHMgdGhhdCBtaWdodCBiZSB1c2VkIGJ5IFRjbCBleHRlbnNpb25zCitCSU5DT05GSUdfR0xPQiA9ICIqQ29uZmlnLnNoIgorCisjIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICIqQ29uZmlnLnNoIgorCisjIENsZWFudXAgaG9zdCBwYXRoIGZyb20gJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCBhbmQgcmVtb3ZlIHRoZQorIyAke2JpbmRpcl9jcm9zc3NjcmlwdHN9L3RjbENvbmZpZy5zaCBmcm9tIHRhcmdldAorUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJ0Y2xfcGFja2FnZV9wcmVwcm9jZXNzIgordGNsX3BhY2thZ2VfcHJlcHJvY2VzcygpIHsKKwlzZWQgLWkgLWUgInM7JHtERUJVR19QUkVGSVhfTUFQfTs7ZyIgXAorCSAgICAgICAtZSAiczstTCR7U1RBR0lOR19MSUJESVJ9Oy1MJHtsaWJkaXJ9O2ciIFwKKwkgICAgICAgLWUgInM7JHtTVEFHSU5HX0lOQ0RJUn07JHtpbmNsdWRlZGlyfTtnIiBcCisJICAgICAgIC1lICJzOy0tc3lzcm9vdD0ke1JFQ0lQRV9TWVNST09UfTs7ZyIgXAorCSAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3RjbENvbmZpZy5zaAorCisJcm0gLWYgJHtQS0dEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vdGNsQ29uZmlnLnNoCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy90Y2x0ay90Y2xfOC42LjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdmMzc3ODEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdGNsdGsvdGNsXzguNi45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTAxICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbCBDb21tYW5kIExhbmd1YWdlIgotSE9NRVBBR0UgPSAiaHR0cDovL3RjbC5zb3VyY2Vmb3JnZS5uZXQiCi1TRUNUSU9OID0gImRldmVsL3RjbHRrIgotCi0jIGh0dHA6Ly93d3cudGNsLnRrL3NvZnR3YXJlL3RjbHRrL2xpY2Vuc2UuaHRtbAotTElDRU5TRSA9ICJ0Y2wgJiBCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8uLi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL2NvbXBhdC9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL2xpYnJhcnkvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi9tYWNvc3gvbGljZW5zZS50ZXJtczttZDU9MDU4ZjYyMjk3OTgyODFiYmNhYzQyMzljNzg4Y2ZhMzggXAotICAgIGZpbGU6Ly8uLi90ZXN0cy9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0gICAgZmlsZTovLy4uL3dpbi9saWNlbnNlLnRlcm1zO21kNT0wNThmNjIyOTc5ODI4MWJiY2FjNDIzOWM3ODhjZmEzOCBcCi0iCi0KLURFUEVORFMgPSAidGNsLW5hdGl2ZSB6bGliIgotCi1CQVNFX1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3RjbC8ke0JQTn0ke1BWfS1zcmMudGFyLmd6IFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vdGNsLWFkZC1zb25hbWUucGF0Y2giCi1TUkNfVVJJID0gIiR7QkFTRV9TUkNfVVJJfSBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfbm9uX25hdGl2ZV9idWlsZF9pc3N1ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXhfaXNzdWVfd2l0aF9vbGRfZGlzdHJvX2dsaWJjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25vX3BhY2thZ2VzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3RjbC1yZW1vdmUtaGFyZGNvZGVkLWluc3RhbGwtcGF0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hbHRlci1pbmNsdWRlZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiYWEwYTEyMWQ5NWEwZTdiNzNhMDM2ZjI2MDI4NTM4ZDQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWQwY2QyZGUyYzg3YjliYTgwODZiNDM5NTdhMGRlM2ViMmViNTY1YzcxNTlkNWY1M2NjYmJhM2ZlYjkxNWY0ZSIKLQotU1JDX1VSSV9jbGFzcy1uYXRpdmUgPSAiJHtCQVNFX1NSQ19VUkl9IgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59JHtQVn0vdW5peCIKLQotVkVSID0gIiR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdCBiaW5jb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRocmVhZHMgLS1kaXNhYmxlLXJwYXRoIC0tbGliZGlyPSR7bGliZGlyfSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCWVjaG8gPiAke1N9Ly4uL2NvbXBhdC9maXhzdHJ0b2QuYwotfQotCi1kb19pbnN0YWxsKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLXByaXZhdGUtaGVhZGVycwotCWxuIC1zZiAuL3RjbHNoJHtWRVJ9ICR7RH0ke2JpbmRpcn0vdGNsc2gKLQlsbiAtc2YgdGNsc2g4LjYgJHtEfSR7YmluZGlyfS90Y2xzaCR7VkVSfQotCXNlZCAtaSAiczstTCR7Qn07LUwke1NUQUdJTkdfTElCRElSfTtnIiB0Y2xDb25maWcuc2gKLQlzZWQgLWkgInM7JyR7V09SS0RJUn07JyR7U1RBR0lOR19JTkNESVJ9O2ciIHRjbENvbmZpZy5zaAotCWluc3RhbGwgLWQgJHtEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30KLQlpbnN0YWxsIC1tIDA3NTUgdGNsQ29uZmlnLnNoICR7RH0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9Ci0JaW5zdGFsbCAtbSAwNzU1IHRjbENvbmZpZy5zaCAke0R9JHtsaWJkaXJ9Ci0JZm9yIGRpciBpbiBjb21wYXQgZ2VuZXJpYyB1bml4OyBkbwotCQlpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyCi0JCWluc3RhbGwgLW0gMDY0NCAke1N9Ly4uLyRkaXIvKi5oICR7RH0ke2luY2x1ZGVkaXJ9LyR7QlBOfSR7VkVSfS8kZGlyLwotCWRvbmUKLX0KLQotU1lTUk9PVF9ESVJTICs9ICIke2JpbmRpcl9jcm9zc3NjcmlwdHN9IgotCi1QQUNLQUdFUyA9KyAidGNsLWxpYiIKLUZJTEVTX3RjbC1saWIgPSAiJHtsaWJkaXJ9L2xpYnRjbDguNi5zby4qIgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS90Y2wke1ZFUn0gJHtsaWJkaXJ9L3RjbDguNiAke2xpYmRpcn0vdGNsOCIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCAke2xpYmRpcn0vdGNsb29Db25maWcuc2giCi0KLSMgaXNuJ3QgZ2V0dGluZyBwaWNrZWQgdXAgYnkgc2hsaWJzIGNvZGUKLVJERVBFTkRTXyR7UE59ICs9ICJ0Y2wtbGliIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJsaWJnY2MiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIHRjbHRlc3QKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQljcCAke0J9L3RjbHRlc3QgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke1N9Ly4uL2xpYnJhcnkgJHtEfSR7UFRFU1RfUEFUSH0KLQljcCAtciAke1N9Ly4uL3Rlc3RzICR7RH0ke1BURVNUX1BBVEh9Ci19Ci0KLSMgRml4IHNvbWUgcGF0aHMgdGhhdCBtaWdodCBiZSB1c2VkIGJ5IFRjbCBleHRlbnNpb25zCi1CSU5DT05GSUdfR0xPQiA9ICIqQ29uZmlnLnNoIgotCi0jIEZpeCB0aGUgcGF0aCBpbiBzc3RhdGUKLVNTVEFURV9TQ0FOX0ZJTEVTICs9ICIqQ29uZmlnLnNoIgotCi0jIENsZWFudXAgaG9zdCBwYXRoIGZyb20gJHtsaWJkaXJ9L3RjbENvbmZpZy5zaCBhbmQgcmVtb3ZlIHRoZQotIyAke2JpbmRpcl9jcm9zc3NjcmlwdHN9L3RjbENvbmZpZy5zaCBmcm9tIHRhcmdldAotUEFDS0FHRV9QUkVQUk9DRVNTX0ZVTkNTICs9ICJ0Y2xfcGFja2FnZV9wcmVwcm9jZXNzIgotdGNsX3BhY2thZ2VfcHJlcHJvY2VzcygpIHsKLQlzZWQgLWkgLWUgInM7JHtERUJVR19QUkVGSVhfTUFQfTs7ZyIgXAotCSAgICAgICAtZSAiczstTCR7U1RBR0lOR19MSUJESVJ9Oy1MJHtsaWJkaXJ9O2ciIFwKLQkgICAgICAgLWUgInM7JHtTVEFHSU5HX0lOQ0RJUn07JHtpbmNsdWRlZGlyfTtnIiBcCi0JICAgICAgIC1lICJzOy0tc3lzcm9vdD0ke1JFQ0lQRV9TWVNST09UfTs7ZyIgXAotCSAgICAgICAke1BLR0R9JHtsaWJkaXJ9L3RjbENvbmZpZy5zaAotCi0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyX2Nyb3Nzc2NyaXB0c30vdGNsQ29uZmlnLnNoCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy91bmlmZGVmL3VuaWZkZWZfMi4xMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuaWZkZWYvdW5pZmRlZl8yLjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxZmZjMTFlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3VuaWZkZWYvdW5pZmRlZl8yLjExLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkgKzAsMCBAQAotU1VNTUFSWSA9ICJTZWxlY3RpdmVseSByZW1vdmUgI2lmZGVmIHN0YXRlbWVudHMgZnJvbSBzb3VyY2VzIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgotSE9NRVBBR0UgPSAiaHR0cDovL2RvdGF0LmF0L3Byb2cvdW5pZmRlZi8iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTc4ZmM2YzJjMWRjNGYxOGM4OTFlZDViN2E0NjlmZTMyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3VuaWZkZWYuYztlbmRsaW5lPTMyO21kNT1hYWVjODRkOGI2OGQ4YjZkZWE3MWY0NWU5OTQ5ZWJmZSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG90YXQuYXQvcHJvZy8ke0JQTn0vJHtCUH0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjMzNzA1M2ZkOGE3ZDlhYjNhZGY1ZTUwZjg4YWY5NWI3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgyOGZmYzI3MGFjMjYyYjg4ZmUwMTExMzZhY2VmMjc4MGMwNWIwZGMzYzU0MzVkMDA1NjUxNzQwNzg4ZDQ1MzciCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInVuaWZkZWYtKD9QPHB2ZXI+KChcZCtcLiopKykoPyFbYS1mMC05XXs2LH0pKS50YXIiCi0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBwcmVmaXg9JHtwcmVmaXh9Ci19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdW5pZmRlZi91bmlmZGVmXzIuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy91bmlmZGVmL3VuaWZkZWZfMi4xMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMmIxMGJhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdW5pZmRlZi91bmlmZGVmXzIuMTIuYmIKQEAgLTAsMCArMSwyMCBAQAorU1VNTUFSWSA9ICJTZWxlY3RpdmVseSByZW1vdmUgI2lmZGVmIHN0YXRlbWVudHMgZnJvbSBzb3VyY2VzIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorSE9NRVBBR0UgPSAiaHR0cDovL2RvdGF0LmF0L3Byb2cvdW5pZmRlZi8iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM0OThjYWYzNDZmNmI3NzkzNDg4MjEwMTc0OWFkYTIzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3VuaWZkZWYuYztlbmRsaW5lPTMyO21kNT02ZjRlZTgwODVkNmU2YWIwZjdjYjQzOTBlMWE5YzQ5NyBcCisgICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSSA9ICJodHRwOi8vZG90YXQuYXQvcHJvZy8ke0JQTn0vJHtCUH0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImFlOGMwYjNiNGM0M2MxZjZiYzVmMzI0MTJhODIwODE4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQzY2UwZjAyZWNkY2RjNzIzYjI0NzU1NzU1NjNkZGIxOTJlOTg4Yzg4NmQzNjgyNjBiYzBhNjNhZWUzYWM0MDAiCisKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gInVuaWZkZWYtKD9QPHB2ZXI+KChcZCtcLiopKykoPyFbYS1mMC05XXs2LH0pKS50YXIiCisKK2RvX2luc3RhbGwoKSB7CisJb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfSBwcmVmaXg9JHtwcmVmaXh9Cit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuNDYuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjQ2LjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0Y2Q2ZGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsYS92YWxhXzAuNDYuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSAke0JQTn0uaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWdpdC12ZXJzaW9uLWdlbi1kb24tdC1hcHBlbmQtZGlydHktaWYtd2UtcmUtbm90LWluLWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS12YXBpZ2VuLm00LXVzZS1QS0dfQ09ORklHX1NZU1JPT1RfRElSLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjc5YmJhZjg5MjllYzhlZDM1OTExYjM1NzFmNWEyNDgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGJiOWI2MGZjMDIzMGIwZGIyYzhhMGUyYTgwZWMyOWYxYzEwYjQzZGM3ODM1NWFiYmE3OGFkZWRiYzJlMDNhMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGEvdmFsYV8wLjQ2LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC40Ni42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY2ZjYyMDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxhL3ZhbGFfMC40Ni42LmJiCkBAIC0wLDAgKzEsOCBAQAorcmVxdWlyZSAke0JQTn0uaW5jCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWdpdC12ZXJzaW9uLWdlbi1kb24tdC1hcHBlbmQtZGlydHktaWYtd2UtcmUtbm90LWluLWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS12YXBpZ2VuLm00LXVzZS1QS0dfQ09ORklHX1NZU1JPT1RfRElSLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDlhZjEyNTY0ODUwNTUwM2IxMzllYmMyZDJjOWVlZTUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZWYzMTY0OTkzMjg3MmYwOTQ5NzFkNDY0NTNiMjFjNjBhNDE2NjE2NzBmOThhZmEzMzQwNjI0MjViNGFlYzQ3YSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWVtY2hlY2stdGVzdHMtRml4LXRpbWVyZmQtc3lzY2FsbC10ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1tZW1jaGVjay10ZXN0cy1GaXgtdGltZXJmZC1zeXNjYWxsLXRlc3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTVmYmJlOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtbWVtY2hlY2stdGVzdHMtRml4LXRpbWVyZmQtc3lzY2FsbC10ZXN0LnBhdGNoCkBAIC0wLDAgKzEsOTggQEAKK0Zyb20gNWQ0MTFmZDE0N2Q2NTJlOWQ3YmIyNTlmNDA0ODY5M2M2ZTQ3NDJhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDkgTWFyIDIwMjAgMTY6MzA6MTkgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWVtY2hlY2svdGVzdHM6IEZpeCB0aW1lcmZkIHN5c2NhbGwgdGVzdAorCittb2Rlcm4gbGliYyBwcm92aWRlcyB0aGVzZSBmdW5jdGlvbnMsIG1vcmVvdmVyIHRoaXMgYWxzbyBlbnN1cmVzIHRoYXQgd2UKK2FyZSA2NGJpdCB0aW1lX3Qgc2FmZS4gRmFsbGJhY2sgdG8gZXhpc3RpbmcgZGVmaW5pdGlvbnMgaWYgbGliYyBkb2VzIG5vdAoraGF2ZSB0aGUgaW1wbGVtZW50YXRpb24gb3Igc3lzY2FsbCBpcyBub3QgZGVmaW5lZAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcC92YWxncmluZC9tYWlsbWFuL21lc3NhZ2UvMzY5NDM4OTcvXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGNvbmZpZy5oLmluICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgIDkgKysrKysrKysrCisgY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArKysKKyBtZW1jaGVjay90ZXN0cy9saW51eC90aW1lcmZkLXN5c2NhbGwuYyB8IDEwICsrKysrKysrLS0KKyA1IGZpbGVzIGNoYW5nZWQsIDMyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKKy0tLSBhL2NvbmZpZy5oLmluCisrKysgYi9jb25maWcuaC5pbgorQEAgLTMwMSw2ICszMDEsOSBAQAorIC8qIERlZmluZSB0byAxIGlmIHlvdSBoYXZlIHRoZSA8c3lzL3N5c252bC5oPiBoZWFkZXIgZmlsZS4gKi8KKyAjdW5kZWYgSEFWRV9TWVNfU1lTTlZMX0gKKyAKKysvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90aW1lcmZkLmg+IGhlYWRlciBmaWxlLiAqLworKyN1bmRlZiBIQVZFX1NZU19USU1FUkZEX0gKKysKKyAvKiBEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgPHN5cy90aW1lLmg+IGhlYWRlciBmaWxlLiAqLworICN1bmRlZiBIQVZFX1NZU19USU1FX0gKKyAKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNDA5OCw2ICs0MDk4LDcgQEAgQUNfQ0hFQ0tfSEVBREVSUyhbICAgICAgIFwKKyAgICAgICAgIHN5cy9zeXNjYWxsLmggICAgXAorICAgICAgICAgc3lzL3N5c252bC5oICAgICBcCisgICAgICAgICBzeXMvdGltZS5oICAgICAgIFwKKysgICAgICAgIHN5cy90aW1lcmZkLmggICAgXAorICAgICAgICAgc3lzL3R5cGVzLmggICAgICBcCisgICAgICAgICBdKQorIAorLS0tIGEvbWVtY2hlY2svdGVzdHMvbGludXgvdGltZXJmZC1zeXNjYWxsLmMKKysrKyBiL21lbWNoZWNrL3Rlc3RzL2xpbnV4L3RpbWVyZmQtc3lzY2FsbC5jCitAQCAtNDUsNiArNDUsOSBAQAorICNpZiBkZWZpbmVkKEhBVkVfU1lTX1RJTUVfSCkKKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyAjZW5kaWYKKysjaWYgZGVmaW5lZChIQVZFX1NZU19USU1FUkZEX0gpCisrI2luY2x1ZGUgPHN5cy90aW1lcmZkLmg+CisrI2VuZGlmCisgI2lmIGRlZmluZWQoSEFWRV9TWVNfVFlQRVNfSCkKKyAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+CisgI2VuZGlmCitAQCAtNTQsNyArNTcsOCBAQAorICAqIHRpbWVyZmRfKiBzeXN0ZW0gY2FsbCBudW1iZXJzIGludHJvZHVjZWQgaW4gMi42LjIzLiBUaGVzZSBjb25zdGFudHMgYXJlCisgICogbm90IHlldCBpbiB0aGUgZ2xpYmMgMi43IGhlYWRlcnMsIHRoYXQgaXMgd2h5IHRoZXkgYXJlIGRlZmluZWQgaGVyZS4KKyAgKi8KKy0jaWZuZGVmIF9fTlJfdGltZXJmZF9jcmVhdGUKKysjaWYgIWRlZmluZWQoSEFWRV9TWVNfVElNRVJGRF9IKQorKyNpZiAhZGVmaW5lZChfX05SX3RpbWVyZmRfY3JlYXRlKQorICNpZiBkZWZpbmVkKF9feDg2XzY0X18pCisgI2RlZmluZSBfX05SX3RpbWVyZmRfY3JlYXRlICAyODMKKyAjZWxpZiBkZWZpbmVkKF9faTM4Nl9fKQorQEAgLTY3LDggKzcxLDEwIEBACisgI2Vycm9yIENhbm5vdCBkZXRlY3QgeW91ciBhcmNoaXRlY3R1cmUhCisgI2VuZGlmCisgI2VuZGlmCisrI2VuZGlmCisgCistI2lmbmRlZiBfX05SX3RpbWVyZmRfc2V0dGltZQorKyNpZiAhZGVmaW5lZChIQVZFX1NZU19USU1FUkZEX0gpCisrI2lmICFkZWZpbmVkKF9fTlJfdGltZXJmZF9zZXR0aW1lKQorICNpZiBkZWZpbmVkKF9feDg2XzY0X18pCisgI2RlZmluZSBfX05SX3RpbWVyZmRfc2V0dGltZSAyODYKKyAjZGVmaW5lIF9fTlJfdGltZXJmZF9nZXR0aW1lIDI4NworQEAgLTg1LDcgKzkxLDcgQEAKKyAjZXJyb3IgQ2Fubm90IGRldGVjdCB5b3VyIGFyY2hpdGVjdHVyZSEKKyAjZW5kaWYKKyAjZW5kaWYKKy0KKysjZW5kaWYKKyAKKyAKKyAvKiBEZWZpbml0aW9ucyBmcm9tIGluY2x1ZGUvbGludXgvdGltZXJmZC5oICovCitAQCAtMTI3LDYgKzEzMyw3IEBAIHZvaWQgc2V0X3RpbWVzcGVjKHN0cnVjdCB0aW1lc3BlYyAqdG1yLAorICAgdG1yLT50dl9uc2VjID0gKGxvbmcpICgxMDAwVUxMICogKHVzdGltZSAlIDEwMDAwMDBVTEwpKTsKKyB9CisgCisrI2lmICFkZWZpbmVkKEhBVkVfU1lTX1RJTUVSRkRfSCkKKyBpbnQgdGltZXJmZF9jcmVhdGUoaW50IGNsb2NraWQsIGludCBmbGFncykKKyB7CisgICByZXR1cm4gc3lzY2FsbChfX05SX3RpbWVyZmRfY3JlYXRlLCBjbG9ja2lkLCBmbGFncyk7CitAQCAtMTQyLDYgKzE0OSw3IEBAIGludCB0aW1lcmZkX2dldHRpbWUoaW50IHVmYywgc3RydWN0IGl0aW0KKyB7CisgICByZXR1cm4gc3lzY2FsbChfX05SX3RpbWVyZmRfZ2V0dGltZSwgdWZjLCBvdG1yKTsKKyB9CisrI2VuZGlmCisgCisgbG9uZyB3YWl0dG1yKGludCB0ZmQsIGludCB0aW1lbykKKyB7CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLW5vbmUtdGVzdHMtZmRsZWFrX2Ntc2cuc3RkZXJyLmV4cC1hZGp1c3QtdG1wLXBhdGhzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1ub25lLXRlc3RzLWZkbGVha19jbXNnLnN0ZGVyci5leHAtYWRqdXN0LXRtcC1wYXRocy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNjQxOTk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMS1ub25lLXRlc3RzLWZkbGVha19jbXNnLnN0ZGVyci5leHAtYWRqdXN0LXRtcC1wYXRocy5wYXRjaApAQCAtMCwwICsxLDM0IEBACitGcm9tIGY0MDUyOTdkMzM4MmNkOTgzOTFkMDJmMzk3ZTIzODdkYTFmNDI4NzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjQgSmFuIDIwMjAgMTc6NTU6MzkgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gbm9uZS90ZXN0cy9mZGxlYWtfY21zZy5zdGRlcnIuZXhwOiBhZGp1c3QgL3RtcCBwYXRocworCitJbiBvZS1jb3JlLCAvdG1wIGlzIGxpbmtlZCB0byAvdmFyL3ZvbGF0aWxlL3RtcCBhbmQKK3ZhbGdyaW5kIG91dHB1dCBjaGFuZ2VzIGFjY29yZGluZ2x5CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgbm9uZS90ZXN0cy9mZGxlYWtfY21zZy5zdGRlcnIuZXhwIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL25vbmUvdGVzdHMvZmRsZWFrX2Ntc2cuc3RkZXJyLmV4cCBiL25vbmUvdGVzdHMvZmRsZWFrX2Ntc2cuc3RkZXJyLmV4cAoraW5kZXggNmU1YTc5N2I5Li4wZWRlMWFiMTggMTAwNjQ0CistLS0gYS9ub25lL3Rlc3RzL2ZkbGVha19jbXNnLnN0ZGVyci5leHAKKysrKyBiL25vbmUvdGVzdHMvZmRsZWFrX2Ntc2cuc3RkZXJyLmV4cAorQEAgLTI1LDEwICsyNSwxMCBAQCBPcGVuIGZpbGUgZGVzY3JpcHRvciAuLi46IC9kZXYvbnVsbAorIAorIAorIEZJTEUgREVTQ1JJUFRPUlM6IDYgb3BlbiBhdCBleGl0LgorLU9wZW4gZmlsZSBkZXNjcmlwdG9yIC4uLjogL3RtcC9kYXRhMgorK09wZW4gZmlsZSBkZXNjcmlwdG9yIC4uLjogLi4uCisgICAgLi4uCisgCistT3BlbiBmaWxlIGRlc2NyaXB0b3IgLi4uOiAvdG1wL2RhdGExCisrT3BlbiBmaWxlIGRlc2NyaXB0b3IgLi4uOiAuLi4KKyAgICAuLi4KKyAKKyBPcGVuIEFGX1VOSVggc29ja2V0IC4uLjogPHVua25vd24+CistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLXRlc3RzLU1ha2UtcHRocmVhZF9kZXRhdGNoLWNhbGwtcG9ydGFibGUtYWNyb3NzLXBsYXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAxLXRlc3RzLU1ha2UtcHRocmVhZF9kZXRhdGNoLWNhbGwtcG9ydGFibGUtYWNyb3NzLXBsYXQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjQwN2Q4MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kLzAwMDEtdGVzdHMtTWFrZS1wdGhyZWFkX2RldGF0Y2gtY2FsbC1wb3J0YWJsZS1hY3Jvc3MtcGxhdC5wYXRjaApAQCAtMCwwICsxLDg3IEBACitGcm9tIDkyZmNmNzVkNmQzOTAzZTQ1NDkyYjA0MWJmNGFkMDc3ODdkMmU1OGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyNyBKYW4gMjAyMCAxOTo1MDowNCAtMDgwMAorU3ViamVjdDogW1BBVENIXSBkcmQvdGVzdHMvcHRoX2RldGFjaGVkMzogTWFrZSBwdGhyZWFkX2RldGFjaCgpIGNhbGwgcG9ydGFibGUKKyBhY3Jvc3MgcGxhdGZvcm1zCisKK3B0aHJlYWRfdCBpcyBvcGFxdWUgdHlwZSB0aGVyZWZvcmUgd2UgY2FuIG5vdCBhcHBseSBzaW1wbGUgYXJpdGhtZXRpYyB0bwordmFyaWFibGVzIG9mIHB0aHJlYWRfdCB0eXBlIHRoaXMgdGVzdCBuZWVkcyB0byBwYXNzIGEgaW52YWxpZCBwdGhyZWFkX3QKK2hhbmRsZSwgdHlwY2FzdGluZyB0byB1aW50cHRyX3Qgd29ya3MgdG9vIGFuZCBpcyBwb3J0YWJsZSBhY3Jvc3MgZ2xpYmMgYW5kCittdXNsCisKK0ZpeGVzCit8IHB0aF9kZXRhY2hlZDMuYzoyNDoyNTogZXJyb3I6IGludmFsaWQgdXNlIG9mIHVuZGVmaW5lZCB0eXBlICdzdHJ1Y3QgX19wdGhyZWFkJworfCAgICAyNCB8ICAgcHRocmVhZF9kZXRhY2godGhyZWFkICsgOCk7Cit8ICAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgICAgXgorCitbIGJ2YW5hc3NjaGU6IHJlZm9ybWF0dGVkIHBhdGNoIGRlc2NyaXB0aW9uIGFuZCBmaXhlZCB1cCBsaW5lIG51bWJlcnMgXQorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL3NvdXJjZXdhcmUub3JnL2dpdC8/cD12YWxncmluZC5naXQ7YT1jb21taXQ7aD05MmZjZjc1ZDZkMzkwM2U0NTQ5MmIwNDFiZjRhZDA3Nzg3ZDJlNThhXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGRyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMgICAgICAgICAgIHwgMyArKy0KKyBkcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5zdGRlcnIuZXhwMSB8IDQgKystLQorIGRyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLnN0ZGVyci5leHAyIHwgNCArKy0tCisgMyBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5jIGIvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuYworaW5kZXggYzAyZWVmMS4uZWZlYjE1YiAxMDA2NDQKKy0tLSBhL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMKKysrKyBiL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMKK0BAIC00LDYgKzQsNyBAQAorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlIDxwdGhyZWFkLmg+CisgI2luY2x1ZGUgPHN0ZGlvLmg+CisrI2luY2x1ZGUgPHN0ZGludC5oPgorIAorIHN0YXRpYyB2b2lkKiB0aHJlYWRfZnVuYyh2b2lkKiBhcmcpCisgeworQEAgLTIxLDcgKzIyLDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIqKiBhcmd2KQorICAgcHRocmVhZF9kZXRhY2godGhyZWFkKTsKKyAKKyAgIC8qIEludm9rZSBwdGhyZWFkX2RldGFjaCgpIHdpdGggYW4gaW52YWxpZCB0aHJlYWQgSUQuICovCistICBwdGhyZWFkX2RldGFjaCh0aHJlYWQgKyA4KTsKKysgIHB0aHJlYWRfZGV0YWNoKChwdGhyZWFkX3QpKCh1aW50cHRyX3QpdGhyZWFkICsgOCkpOworIAorICAgZnByaW50ZihzdGRlcnIsICJGaW5pc2hlZC5cbiIpOworIAorZGlmZiAtLWdpdCBhL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLnN0ZGVyci5leHAxIGIvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuc3RkZXJyLmV4cDEKK2luZGV4IDU4NDEyZWMuLjhkZDU4YmEgMTAwNjQ0CistLS0gYS9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5zdGRlcnIuZXhwMQorKysrIGIvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuc3RkZXJyLmV4cDEKK0BAIC0xLDExICsxLDExIEBACisgCisgcHRocmVhZF9kZXRhY2goKTogaW52YWxpZCB0aHJlYWQgSUQgMHguLi4uLi4uLgorICAgIGF0IDB4Li4uLi4uLi46IHB0aHJlYWRfZGV0YWNoIChkcmRfcHRocmVhZF9pbnRlcmNlcHRzLmM6PykKKy0gICBieSAweC4uLi4uLi4uOiBtYWluIChwdGhfZGV0YWNoZWQzLmM6MjEpCisrICAgYnkgMHguLi4uLi4uLjogbWFpbiAocHRoX2RldGFjaGVkMy5jOjIyKQorIAorIHB0aHJlYWRfZGV0YWNoKCk6IGludmFsaWQgdGhyZWFkIElEIDB4Li4uLi4uLi4KKyAgICBhdCAweC4uLi4uLi4uOiBwdGhyZWFkX2RldGFjaCAoZHJkX3B0aHJlYWRfaW50ZXJjZXB0cy5jOj8pCistICAgYnkgMHguLi4uLi4uLjogbWFpbiAocHRoX2RldGFjaGVkMy5jOjI0KQorKyAgIGJ5IDB4Li4uLi4uLi46IG1haW4gKHB0aF9kZXRhY2hlZDMuYzoyNSkKKyAKKyBGaW5pc2hlZC4KKyAKK2RpZmYgLS1naXQgYS9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5zdGRlcnIuZXhwMiBiL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLnN0ZGVyci5leHAyCitpbmRleCBiZGM1Y2Y4Li5lODJkZWUxIDEwMDY0NAorLS0tIGEvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuc3RkZXJyLmV4cDIKKysrKyBiL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLnN0ZGVyci5leHAyCitAQCAtMiwxMiArMiwxMiBAQAorIHB0aHJlYWRfZGV0YWNoKCk6IGludmFsaWQgdGhyZWFkIElEIDB4Li4uLi4uLi4KKyAgICBhdCAweC4uLi4uLi4uOiB2Z0RyZF9zZXRfam9pbmFibGUgKGRyZF9wdGhyZWFkX2ludGVyY2VwdHMuYzo/KQorICAgIGJ5IDB4Li4uLi4uLi46IHB0aHJlYWRfZGV0YWNoIChkcmRfcHRocmVhZF9pbnRlcmNlcHRzLmM6PykKKy0gICBieSAweC4uLi4uLi4uOiBtYWluIChwdGhfZGV0YWNoZWQzLmM6MjEpCisrICAgYnkgMHguLi4uLi4uLjogbWFpbiAocHRoX2RldGFjaGVkMy5jOjIyKQorIAorIHB0aHJlYWRfZGV0YWNoKCk6IGludmFsaWQgdGhyZWFkIElEIDB4Li4uLi4uLi4KKyAgICBhdCAweC4uLi4uLi4uOiB2Z0RyZF9zZXRfam9pbmFibGUgKGRyZF9wdGhyZWFkX2ludGVyY2VwdHMuYzo/KQorICAgIGJ5IDB4Li4uLi4uLi46IHB0aHJlYWRfZGV0YWNoIChkcmRfcHRocmVhZF9pbnRlcmNlcHRzLmM6PykKKy0gICBieSAweC4uLi4uLi4uOiBtYWluIChwdGhfZGV0YWNoZWQzLmM6MjQpCisrICAgYnkgMHguLi4uLi4uLjogbWFpbiAocHRoX2RldGFjaGVkMy5jOjI1KQorIAorIEZpbmlzaGVkLgorIAorLS0gCisyLjkuMworCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLXZhbGdyaW5kLWFkanVzdC1zdGRfbGlzdC1leHBlY3RlZC1vdXRwdXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDAyLXZhbGdyaW5kLWFkanVzdC1zdGRfbGlzdC1leHBlY3RlZC1vdXRwdXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE4Mjk3MmUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwMi12YWxncmluZC1hZGp1c3Qtc3RkX2xpc3QtZXhwZWN0ZWQtb3V0cHV0LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSA2ZTFlOTI2NWIwM2NmNTFkMDljMDI4ZDY1N2ZlODI2ZDcxNTZhNzgzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUmFuZHkgTWFjTGVvZCA8UmFuZHkuTWFjTGVvZEB3aW5kcml2ZXIuY29tPgotRGF0ZTogTW9uLCAxMyBNYXkgMjAxOSAxNzoyNjoyNiAtMDQwMAotU3ViamVjdDogW1BBVENIIDIvMl0gdmFsZ3JpbmQ6IGFkanVzdCBzdGRfbGlzdCBleHBlY3RlZCBvdXRwdXQKLQotVGhlIHJ1bi1wdGVzdCBzY3JpcHQgdXNlcyBhIGN1c3RvbSAtLXlvY3RvLXB0ZXN0IG9wdGlvbgotdG8gY2hhbmdlIHRoZSBzdW1tYXJ5IHN0YXRpc3RpY3MgdGhhdCB2YWxncmluZCBpc3N1ZXMKLXRvIGEgZm9ybWF0IHRoYXQgbWF0Y2hlcyB3aGF0IHB0ZXN0LXJ1bm5lciBleHBlY3RzLgotCi1Pbmx5IHRoaXMgc3RkX2xpc3QgdGVzdCB3aGljaCBjaGVja3MgdGhhdCBzdHJjcHkoKSB3b3JrcwotcHJvcGVybHkgb24gVWJ1bnR1LTEyLjA0IGFuZCBsYXRlciBpcyBhZmZlY3RlZCBieSB0aGlzIGNoYW5nZS4KLUl0J3Mgbm9ybWFsIG91dHB1dCB3aGVuIGNhbGxlZCB3aXRoIC0teW9jdG8tcHRlc3QgaXMgYSBibGFuawotbGluZSBzbyBhZGp1c3QgdGhlIGV4cGVjdGVkIG91dHB1dC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtZb2N0byBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogUmFuZHkgTWFjTGVvZCA8UmFuZHkuTWFjTGVvZEB3aW5kcml2ZXIuY29tPgotLS0tCi0gZHJkL3Rlc3RzL3N0ZF9saXN0LnN0ZGVyci5leHAgfCAyIC0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9kcmQvdGVzdHMvc3RkX2xpc3Quc3RkZXJyLmV4cCBiL2RyZC90ZXN0cy9zdGRfbGlzdC5zdGRlcnIuZXhwCi1pbmRleCBkMTg3ODZmODAuLjhiMTM3ODkxNyAxMDA2NDQKLS0tLSBhL2RyZC90ZXN0cy9zdGRfbGlzdC5zdGRlcnIuZXhwCi0rKysgYi9kcmQvdGVzdHMvc3RkX2xpc3Quc3RkZXJyLmV4cAotQEAgLTEsMyArMSBAQAotIAotLQotLUVSUk9SIFNVTU1BUlk6IDAgZXJyb3JzIGZyb20gMCBjb250ZXh0cyAoc3VwcHJlc3NlZDogMCBmcm9tIDApCi0tLSAKLTIuMTcuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDA2LXB0aF9kZXRhY2hlZDMuYy1EZXJlZmVyZW5jZS1wdGhyZWFkX3QtYmVmb3JlLWFkZGluZy0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC8wMDA2LXB0aF9kZXRhY2hlZDMuYy1EZXJlZmVyZW5jZS1wdGhyZWFkX3QtYmVmb3JlLWFkZGluZy0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA1ODg2YzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvMDAwNi1wdGhfZGV0YWNoZWQzLmMtRGVyZWZlcmVuY2UtcHRocmVhZF90LWJlZm9yZS1hZGRpbmctLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotRnJvbSBhNjU0N2ZjMTdjMTIwZGJkOTViODUyZjUwYjBjNGJkZWU0ZmVkYjlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFNhdCwgMTAgSnVuIDIwMTcgMDE6MjA6MzIgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCA2LzZdIHB0aF9kZXRhY2hlZDMuYzogRGVyZWZlcmVuY2UgcHRocmVhZF90IGJlZm9yZSBhZGRpbmcKLSBvZmZzZXQgdG8gaXQKLQotRml4ZXMKLWVycm9yOiBpbnZhbGlkIHVzZSBvZiB1bmRlZmluZWQgdHlwZSAnc3RydWN0IF9fcHRocmVhZCcKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBkcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMuYyBiL2RyZC90ZXN0cy9wdGhfZGV0YWNoZWQzLmMKLWluZGV4IGMwMmVlZjEuLjM1ZDQzYTYgMTAwNjQ0Ci0tLS0gYS9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5jCi0rKysgYi9kcmQvdGVzdHMvcHRoX2RldGFjaGVkMy5jCi1AQCAtMjEsNyArMjEsNyBAQCBpbnQgbWFpbihpbnQgYXJnYywgY2hhcioqIGFyZ3YpCi0gICBwdGhyZWFkX2RldGFjaCh0aHJlYWQpOwotIAotICAgLyogSW52b2tlIHB0aHJlYWRfZGV0YWNoKCkgd2l0aCBhbiBpbnZhbGlkIHRocmVhZCBJRC4gKi8KLS0gIHB0aHJlYWRfZGV0YWNoKHRocmVhZCArIDgpOwotKyAgcHRocmVhZF9kZXRhY2goKHB0aHJlYWRfdCopKCZ0aHJlYWQgKyA4KSk7Ci0gCi0gICBmcHJpbnRmKHN0ZGVyciwgIkZpbmlzaGVkLlxuIik7Ci0gCi0tLSAKLTIuMTMuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9yZW1vdmUtZm9yLWFhcmNoNjQgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9yZW1vdmUtZm9yLWFhcmNoNjQKaW5kZXggYWNmNGZkMS4uYTNhMGM2ZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvcmVtb3ZlLWZvci1hYXJjaDY0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kL3JlbW92ZS1mb3ItYWFyY2g2NApAQCAtMSwzICsxLDQgQEAKK2dkYnNlcnZlcl90ZXN0cy9oZ3RscwogY2FjaGVncmluZC90ZXN0cy9hbm4xCiBjYWxsZ3JpbmQvdGVzdHMvc2ltd29yazEKIGNhbGxncmluZC90ZXN0cy9zaW13b3JrMgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvczM5MHhfdmVjX29wX3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZC9zMzkweF92ZWNfb3BfdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lZWE2NzFkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmQvczM5MHhfdmVjX29wX3QucGF0Y2gKQEAgLTAsMCArMSwxOSBAQAorczM5MHhfdmVjX29wX3QgaXMgbm90IG5lZWRlZCBhbnl3aGVyZSwgb25seSBlbGVtZW50cyBvZiBlbnVtIGFyZSBhY2Nlc3NlZAorcmVtb3ZpbmcgaXQgZW5zdXJlcyB0aGF0IHZhbGdyaW5kIGNhbiBiZSBidWlsdCB3aXRoIC1mbm8tY29tbW9uIG9wdGlvbgorCitGaXhlcworbGQ6IC4uLy4uL1ZFWC9saWJ2ZXgtYW1kNjQtbGludXguYShsaWJ2ZXhfYW1kNjRfbGludXhfYS1ndWVzdF9zMzkwX2hlbHBlcnMubyk6L3Vzci9zcmMvZGVidWcvdmFsZ3JpbmQvMy4xNS4wLXIwL2J1aWxkL1ZFWC8uLi8uLi92YWxncmluZC0zLjE1LjAvVkVYL3ByaXYvZ3Vlc3RfczM5MF9kZWZzLmg6Mjg5OiBtdWx0aXBsZSBkZWZpbml0aW9uIG9mIGBzMzkweF92ZWNfb3BfdCc7IC4uLy4uL1ZFWC9saWJ2ZXhtdWx0aWFyY2gtYW1kNjQtbGludXguYShsaWJ2ZXhtdWx0aWFyY2hfYW1kNjRfbGludXhfYS1tdWx0aWFyY2hfbWFpbl9tYWluLm8pOi91c3Ivc3JjL2RlYnVnL3ZhbGdyaW5kLzMuMTUuMC1yMC9idWlsZC9WRVgvLi4vLi4vdmFsZ3JpbmQtMy4xNS4wL1ZFWC9wcml2L2d1ZXN0X3MzOTBfZGVmcy5oOjI4OTogZmlyc3QgZGVmaW5lZCBoZXJlCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLSBhL1ZFWC9wcml2L2d1ZXN0X3MzOTBfZGVmcy5oCisrKysgYi9WRVgvcHJpdi9ndWVzdF9zMzkwX2RlZnMuaAorQEAgLTI4Niw3ICsyODYsNyBAQCBlbnVtIHsKKyAgICBTMzkwX1ZFQ19PUF9WRkNIRSA9IDE4LAorICAgIFMzOTBfVkVDX09QX1ZGVENJID0gMTksCisgICAgUzM5MF9WRUNfT1BfTEFTVCA9IDIwIC8vIHN1cHBvc2VkIHRvIGJlIHRoZSBsYXN0IGVsZW1lbnQgaW4gZW51bQorLX0gczM5MHhfdmVjX29wX3Q7CisrfTsKKyAKKyAvKiBBcmd1bWVudHMgb2YgczM5MHhfZGlydHloZWxwZXJfdmVjX29wKC4uLikgd2hpY2ggYXJlIHBhY2tlZCBpbnRvIG9uZQorICAgIFVMb25nIHZhcmlhYmxlLgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmRfMy4xNS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMvdmFsZ3JpbmQvdmFsZ3JpbmRfMy4xNS4wLmJiCmluZGV4IDYzZjk3MjkuLjc5NTQ0MzcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3ZhbGdyaW5kL3ZhbGdyaW5kXzMuMTUuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy92YWxncmluZC92YWxncmluZF8zLjE1LjAuYmIKQEAgLTI5LDcgKzI5LDYgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDMtY29ycmVjdC1pbmNsdWRlLWRpcmVjdGl2ZS1wYXRoLWZvci1jb25maWcuaC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA0LXB0aF9hdGZvcmsxLmMtRGVmaW5lLWVycm9yLUFQSS1mb3ItbXVzbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDA1LXRjMjBfdmVyaWZ5d3JhcC5jLUZha2UtX19HTElCQ19QUkVSRVEtd2l0aC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtcHRoX2RldGFjaGVkMy5jLURlcmVmZXJlbmNlLXB0aHJlYWRfdC1iZWZvcmUtYWRkaW5nLS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lbWNoZWNrLWFybTY0LURlZmluZS1fX1RIUk9XLWlmLW5vdC1hbHJlYWR5LWRlZmluZWQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMi1tZW1jaGVjay14ODYtRGVmaW5lLV9fVEhST1ctaWYtbm90LWRlZmluZWQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMy10ZXN0cy1zZWdfb3ZlcnJpZGUtUmVwbGFjZS1fX21vZGlmeV9sZHQtd2l0aC1zeXNjYWxsLnBhdGNoIFwKQEAgLTM4LDggKzM3LDExIEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtbG9jYWwtZnVuY3Rpb25zLXN0YXRpYy10by1hdm9pZC1hc3NlbWJsZXItZXJyb3IucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1SZXR1cm4tYS12YWxpZC1leGl0X2NvZGUtZnJvbS12Z19yZWd0ZXN0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtdmFsZ3JpbmQtZmlsdGVyX3htbF9mcmFtZXMtZG8tbm90LWZpbHRlci11c3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi12YWxncmluZC1hZGp1c3Qtc3RkX2xpc3QtZXhwZWN0ZWQtb3V0cHV0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtYWRqdXN0LXBhdGgtZmlsdGVyLWZvci0yLW1lbWNoZWNrLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3MzOTB4X3ZlY19vcF90LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbm9uZS10ZXN0cy1mZGxlYWtfY21zZy5zdGRlcnIuZXhwLWFkanVzdC10bXAtcGF0aHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0cy1NYWtlLXB0aHJlYWRfZGV0YXRjaC1jYWxsLXBvcnRhYmxlLWFjcm9zcy1wbGF0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVtY2hlY2stdGVzdHMtRml4LXRpbWVyZmQtc3lzY2FsbC10ZXN0LnBhdGNoIFwKICAgICAgICAgICAgIgogU1JDX1VSSVttZDVzdW1dID0gIjQ2ZTVmYmRjYmMzNTAyYTU5NzZhMzE3YTA4NjBhOTc1IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQxN2M3YTlkYThmNjBkZDA1Njk4YjNhN2JjNjAwMmU0ZWY5OTZmMTRjMTNmMGZmOTY2NzlhMTY4NzNlNzhhYjEiCkBAIC02Myw3ICs2NSw4IEBACiAjIERpc2FibGUgZm9yIHBvd2VycGM2NCB3aXRoIG11c2wKIENPTVBBVElCTEVfSE9TVF9saWJjLW11c2xfcG93ZXJwYzY0ID0gJ251bGwnCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IG11bHRpbGliX2hlYWRlcgorIyBicm9rZW5zZWlwIGlzIHVuZm9ydHVuYXRlbHkgcmVxdWlyZWQgYnkgcHRlc3RzIHRvIHBhc3MKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBwdGVzdCBtdWx0aWxpYl9oZWFkZXIKIAogRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXRscyAtLXdpdGhvdXQtbXBpY2MiCiBFWFRSQV9PRUNPTkYgKz0gIiR7QFsnLS1lbmFibGUtb25seTMyYml0JywnLS1lbmFibGUtb25seTY0Yml0J11bZC5nZXRWYXIoJ1NJVEVJTkZPX0JJVFMnKSAhPSAnMzInXX0iCkBAIC0xMTUsNyArMTE4LDcgQEAKICAgIGdkYiBsaWJnb21wIFwKICAgIHBlcmwgXAogICAgcGVybC1tb2R1bGUtZ2V0b3B0LWxvbmcgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBwZXJsLW1vZHVsZS1maWxlLWdsb2IgXAotICAgcHJvY3BzIHNlZCAke1BOfS1kYmciCisgICBwcm9jcHMgc2VkICR7UE59LWRiZyAke1BOfS1zcmMiCiBSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtdXRpbHMiCiAKICMgT25lIG9mIHRoZSB0ZXN0cyBjb250YWlucyBhIGJvZ3VzIGludGVycHJldGVyIHBhdGggb24gcHVycG9zZS4KQEAgLTIwMyw0ICsyMDYsMjQgQEAKICAgICAjIGhhbmRsZSBtdWx0aWxpYgogICAgIHNlZCAtaSBzOkBsaWJkaXJAOiR7bGliZGlyfTpnICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAogICAgIHNlZCAtaSBzOkBiaW5kaXJAOiR7YmluZGlyfTpnICR7RH0ke1BURVNUX1BBVEh9L3J1bi1wdGVzdAorCisgICAgIyBUaGlzIHRlc3QgZmFpbHMgb24gdGhlIGhvc3QgYXMgd2VsbCwgdXNpbmcgYm90aCAzLjE1IGFuZCBnaXQgbWFzdGVyIChhcyBvZiBKYW4gMjQgMjAyMCkKKyAgICAjIGh0dHBzOi8vYnVncy5rZGUub3JnL3Nob3dfYnVnLmNnaT9pZD00MDI4MzMKKyAgICBybSAke0R9JHtQVEVTVF9QQVRIfS9tZW1jaGVjay90ZXN0cy9vdmVybGFwLnZndGVzdAorCisgICAgIyBBcyB0aGUgYmluYXJ5IGlzbid0IHN0cmlwcGVkIG9yIGRlYnVnLXNwbGl0dGVkLCB0aGUgc291cmNlIGZpbGUgaXNuJ3QgZmV0Y2hlZAorICAgICMgdmlhIGR3YXJmc3JjZmlsZXMgZWl0aGVyLCBzbyBpdCBuZWVkcyB0byBiZSBpbnN0YWxsZWQgbWFudWFsbHkuCisgICAgbWtkaXIgLXAgJHtEfS91c3Ivc3JjL2RlYnVnLyR7UE59LyR7RVhURU5EUEV9JHtQVn0tJHtQUn0vJHtCUH0vbm9uZS90ZXN0cy8KKyAgICBpbnN0YWxsICR7U30vbm9uZS90ZXN0cy90bHMuYyAke0R9L3Vzci9zcmMvZGVidWcvJHtQTn0vJHtFWFRFTkRQRX0ke1BWfS0ke1BSfS8ke0JQfS9ub25lL3Rlc3RzLwogfQorCisjIGF2b2lkIHN0cmlwcGluZyBzb21lIGdlbmVyYXRlZCBiaW5hcmllcyBvdGhlcndpc2Ugc29tZSBvZiB0aGUgdGVzdHMgd2lsbCBmYWlsCisjIHJ1bi1zdHJpcC1yZWxvYy5zaCwgcnVuLXN0cmlwLXN0cm1lcmdlLnNoIGFuZCBzbyBvbiB3aWxsIGZhaWwKK0lOSElCSVRfUEFDS0FHRV9TVFJJUF9GSUxFUyA9ICJcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vbm9uZS90ZXN0cy90bHMgXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L25vbmUvdGVzdHMvdGxzLnNvIFwKKyAgICAke1BLR0R9JHtQVEVTVF9QQVRIfS9ub25lL3Rlc3RzL3RsczIuc28gXAorICAgICR7UEtHRH0ke1BURVNUX1BBVEh9L2hlbGdyaW5kL3Rlc3RzL3RjMDlfYmFkX3VubG9jayBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vbWVtY2hlY2svdGVzdHMvbWFudWVsMSBcCisgICAgJHtQS0dEfSR7UFRFU1RfUEFUSH0vZHJkL3Rlc3RzL3B0aF9kZXRhY2hlZDMgXAorIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMveG1sdG8veG1sdG9fMC4wLjI4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZGV2dG9vbHMveG1sdG8veG1sdG9fMC4wLjI4LmJiCmluZGV4IGRmNzk4ZGYuLjdkMjdjNDMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWRldnRvb2xzL3htbHRvL3htbHRvXzAuMC4yOC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1kZXZ0b29scy94bWx0by94bWx0b18wLjAuMjguYmIKQEAgLTEzLDYgKzEzLDggQEAKIAogaW5oZXJpdCBhdXRvdG9vbHMKIAorQ0xFQU5CUk9LRU4gPSAiMSIKKwogREVQRU5EUyA9ICJsaWJ4bWwyLW5hdGl2ZSIKIAogUkRFUEVORFNfJHtQTn0gPSAiZG9jYm9vay14bWwtZHRkNCBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTkxMDE4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDE5MTAxOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDY5MjI3NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMTkxMDE4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDkgKzAsMCBAQAotU1VNTUFSWSA9ICJBQ1BJQ0EgdG9vbHMgZm9yIHRoZSBkZXZlbG9wbWVudCBhbmQgZGVidWcgb2YgQUNQSSB0YWJsZXMiCi1ERVNDUklQVElPTiA9ICJUaGUgQUNQSSBDb21wb25lbnQgQXJjaGl0ZWN0dXJlIChBQ1BJQ0EpIHByb2plY3QgcHJvdmlkZXMgYW4gXAotT1MtaW5kZXBlbmRlbnQgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mIHRoZSBBZHZhbmNlZCBDb25maWd1cmF0aW9uIGFuZCBcCi1Qb3dlciBJbnRlcmZhY2UgU3BlY2lmaWNhdGlvbiAoQUNQSSkuIEFDUElDQSBjb2RlIGNvbnRhaW5zIHRob3NlIHBvcnRpb25zIG9mIFwKLUFDUEkgbWVhbnQgdG8gYmUgZGlyZWN0bHkgaW50ZWdyYXRlZCBpbnRvIHRoZSBob3N0IE9TIGFzIGEga2VybmVsLXJlc2lkZW50IFwKLXN1YnN5c3RlbSwgYW5kIGEgc21hbGwgc2V0IG9mIHRvb2xzIHRvIGFzc2lzdCBpbiBkZXZlbG9waW5nIGFuZCBkZWJ1Z2dpbmcgXAotQUNQSSB0YWJsZXMuIgotCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFjcGljYS5vcmcvIgotU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgotCi1MSUNFTlNFID0gIkludGVsIHwgQlNEIHwgR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zb3VyY2UvY29tcGlsZXIvYXNsY29tcGlsZS5jO2JlZ2lubGluZT03O2VuZGxpbmU9MTUwO21kNT1iNTY5MGQ5ZWY4ZDU0YjJiMWUxY2M5OGFhZDY0Y2Q4NyIKLQotQ09NUEFUSUJMRV9IT1NUID0gIihpLjg2fHg4Nl82NHxhcm18YWFyY2g2NCkuKi1saW51eCIKLQotREVQRU5EUyA9ICJiaXNvbiBmbGV4IGJpc29uLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwczovL2FjcGljYS5vcmcvc2l0ZXMvYWNwaWNhL2ZpbGVzL2FjcGljYS11bml4LSR7UFZ9LnRhci5neiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1MzlhMDI1MmJjYjQyYzM4M2NlZWFlYjEyYWU5YTYwZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMjlkYjQwMTQ2MDBlNGI3NzFiMTFhODQyNzZkMmQ3NmViNDBmYjI2ZWFiYzg1ODY0ODUyZWYxZjk2MmJlOTVmIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vYWNwaWNhLm9yZy9kb3dubG9hZHMiCi0KLVMgPSAiJHtXT1JLRElSfS9hY3BpY2EtdW5peC0ke1BWfSIKLQotaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLUFMVEVSTkFUSVZFXyR7UE59ID0gImFjcGl4dHJhY3QgYWNwaWR1bXAiCi0KLUVYVFJBX09FTUFLRSA9ICJDQz0nJHtDQ30nIFwKLSAgICAgICAgICAgICAgICBPUFRfQ0ZMQUdTPS1XYWxsIFwKLSAgICAgICAgICAgICAgICBERVNURElSPSR7RH0gXAotICAgICAgICAgICAgICAgIFBSRUZJWD0ke3ByZWZpeH0gXAotICAgICAgICAgICAgICAgIElOU1RBTExESVI9JHtiaW5kaXJ9IFwKLSAgICAgICAgICAgICAgICBJTlNUQUxMRkxBR1M9IFwKLSAgICAgICAgICAgICAgICAiCi0KLWRvX2luc3RhbGwoKSB7Ci0gICAgb2VfcnVubWFrZSBpbnN0YWxsCi19Ci0KLSMgaWFzbCouYmIgaXMgYSBzdWJzZXQgb2YgdGhpcyByZWNpcGUsIHNvIFJSRVBMQUNFIGl0Ci1QUk9WSURFUyA9ICJpYXNsIgotUlBST1ZJREVTXyR7UE59ICs9ICJpYXNsIgotUlJFUExBQ0VTXyR7UE59ICs9ICJpYXNsIgotUkNPTkZMSUNUU18ke1BOfSArPSAiaWFzbCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9hY3BpY2EvYWNwaWNhXzIwMjAwMjE0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDIwMDIxNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZmE5ZmVjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYWNwaWNhL2FjcGljYV8yMDIwMDIxNC5iYgpAQCAtMCwwICsxLDQ5IEBACitTVU1NQVJZID0gIkFDUElDQSB0b29scyBmb3IgdGhlIGRldmVsb3BtZW50IGFuZCBkZWJ1ZyBvZiBBQ1BJIHRhYmxlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBBQ1BJIENvbXBvbmVudCBBcmNoaXRlY3R1cmUgKEFDUElDQSkgcHJvamVjdCBwcm92aWRlcyBhbiBcCitPUy1pbmRlcGVuZGVudCByZWZlcmVuY2UgaW1wbGVtZW50YXRpb24gb2YgdGhlIEFkdmFuY2VkIENvbmZpZ3VyYXRpb24gYW5kIFwKK1Bvd2VyIEludGVyZmFjZSBTcGVjaWZpY2F0aW9uIChBQ1BJKS4gQUNQSUNBIGNvZGUgY29udGFpbnMgdGhvc2UgcG9ydGlvbnMgb2YgXAorQUNQSSBtZWFudCB0byBiZSBkaXJlY3RseSBpbnRlZ3JhdGVkIGludG8gdGhlIGhvc3QgT1MgYXMgYSBrZXJuZWwtcmVzaWRlbnQgXAorc3Vic3lzdGVtLCBhbmQgYSBzbWFsbCBzZXQgb2YgdG9vbHMgdG8gYXNzaXN0IGluIGRldmVsb3BpbmcgYW5kIGRlYnVnZ2luZyBcCitBQ1BJIHRhYmxlcy4iCisKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYWNwaWNhLm9yZy8iCitTRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCisKK0xJQ0VOU0UgPSAiSW50ZWwgfCBCU0QgfCBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3NvdXJjZS9jb21waWxlci9hc2xjb21waWxlLmM7YmVnaW5saW5lPTc7ZW5kbGluZT0xNTA7bWQ1PTZhZGJjYjgxZTllZTZhZTUwYzU2OWI5NGZlMTJmN2M1IgorCitDT01QQVRJQkxFX0hPU1QgPSAiKGkuODZ8eDg2XzY0fGFybXxhYXJjaDY0KS4qLWxpbnV4IgorCitERVBFTkRTID0gIm00LW5hdGl2ZSBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9hY3BpY2Eub3JnL3NpdGVzL2FjcGljYS9maWxlcy9hY3BpY2EtdW5peC0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMzUwNWJhNjE3MGI3N2RiMTM5OWVhZTBlMmE5NTkxMTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTc3YWI5Zjg1NTdjYTEwNGY2ZThmNDllZmFhOGVlYWQyOWY3OGNhMTFjYWRmYzg5ODkwMTI0NjllY2MwNzM4ZSIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2FjcGljYS5vcmcvZG93bmxvYWRzIgorCitTID0gIiR7V09SS0RJUn0vYWNwaWNhLXVuaXgtJHtQVn0iCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJhY3BpeHRyYWN0IGFjcGlkdW1wIgorCitFWFRSQV9PRU1BS0UgPSAiQ0M9JyR7Q0N9JyBcCisgICAgICAgICAgICAgICAgT1BUX0NGTEFHUz0tV2FsbCBcCisgICAgICAgICAgICAgICAgREVTVERJUj0ke0R9IFwKKyAgICAgICAgICAgICAgICBQUkVGSVg9JHtwcmVmaXh9IFwKKyAgICAgICAgICAgICAgICBJTlNUQUxMRElSPSR7YmluZGlyfSBcCisgICAgICAgICAgICAgICAgSU5TVEFMTEZMQUdTPSBcCisgICAgICAgICAgICAgICAgIgorCitkb19pbnN0YWxsKCkgeworICAgIG9lX3J1bm1ha2UgaW5zdGFsbAorfQorCisjIGlhc2wqLmJiIGlzIGEgc3Vic2V0IG9mIHRoaXMgcmVjaXBlLCBzbyBSUkVQTEFDRSBpdAorUFJPVklERVMgPSAiaWFzbCIKK1JQUk9WSURFU18ke1BOfSArPSAiaWFzbCIKK1JSRVBMQUNFU18ke1BOfSArPSAiaWFzbCIKK1JDT05GTElDVFNfJHtQTn0gKz0gImlhc2wiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaC5pbmMKaW5kZXggMDM5Yjg2OC4uMWViYjMzYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2guaW5jCkBAIC0yNSw3ICsyNSw2IEBACiBSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmVzZGsgPSAiIgogUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgY29yZXV0aWxzIHBlcmwgc2VkIHNoYWRvdyB1dGlsLWxpbnV4LXNldHByaXYiCiAKLURFUEVORFNfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIHZpcnR1YWwvbGliYy1sb2NhbGUiCiBSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgXAogCWdsaWJjLWdjb252LWJpZzVoa3NjcyBcCiAJZ2xpYmMtZ2NvbnYtaXNvODg1OS0xIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF81LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9iYXNoL2Jhc2hfNS4wLmJiCmluZGV4IGVhZGM4MjIuLjhmZjllNmUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Jhc2gvYmFzaF81LjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYmFzaC9iYXNoXzUuMC5iYgpAQCAtMTIsNiArMTIsMTUgQEAKICAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtJHtQVn0tcGF0Y2hlcy9iYXNoNTAtMDA1O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwNSBcCiAgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLSR7UFZ9LXBhdGNoZXMvYmFzaDUwLTAwNjthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDYgXAogICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC0ke1BWfS1wYXRjaGVzL2Jhc2g1MC0wMDc7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDA3IFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtJHtQVn0tcGF0Y2hlcy9iYXNoNTAtMDA4O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAwOCBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLSR7UFZ9LXBhdGNoZXMvYmFzaDUwLTAwOTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMDkgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC0ke1BWfS1wYXRjaGVzL2Jhc2g1MC0wMTA7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDEwIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtJHtQVn0tcGF0Y2hlcy9iYXNoNTAtMDExO2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAxMSBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLSR7UFZ9LXBhdGNoZXMvYmFzaDUwLTAxMjthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMTIgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC0ke1BWfS1wYXRjaGVzL2Jhc2g1MC0wMTM7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDEzIFwKKyAgICAgICAgICAgJHtHTlVfTUlSUk9SfS9iYXNoL2Jhc2gtJHtQVn0tcGF0Y2hlcy9iYXNoNTAtMDE0O2FwcGx5PXllcztzdHJpcGxldmVsPTA7bmFtZT1wYXRjaDAxNCBcCisgICAgICAgICAgICR7R05VX01JUlJPUn0vYmFzaC9iYXNoLSR7UFZ9LXBhdGNoZXMvYmFzaDUwLTAxNTthcHBseT15ZXM7c3RyaXBsZXZlbD0wO25hbWU9cGF0Y2gwMTUgXAorICAgICAgICAgICAke0dOVV9NSVJST1J9L2Jhc2gvYmFzaC0ke1BWfS1wYXRjaGVzL2Jhc2g1MC0wMTY7YXBwbHk9eWVzO3N0cmlwbGV2ZWw9MDtuYW1lPXBhdGNoMDE2IFwKICAgICAgICAgICAgZmlsZTovL2V4ZWN1dGVfY21kLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL21rYnVpbHRpbnNfaGF2ZV9zdHJpbmdpemUucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vYnVpbGQtdGVzdHMucGF0Y2ggXApAQCAtMzgsNiArNDcsMjQgQEAKIFNSQ19VUklbcGF0Y2gwMDYuc2hhMjU2c3VtXSA9ICJkNjg1MjlhNmZmMjAxYjZmZjU5MTUzMThhYjEyZmMxNmI4YTBlYmI3N2ZkYTMzMDgzMDNmY2MxZTEzMzk4NDIwIgogU1JDX1VSSVtwYXRjaDAwNy5tZDVzdW1dID0gIjQxMTU2MGQ4MWZkZTJkYzViMTdiODNjM2YzYjU4YzZmIgogU1JDX1VSSVtwYXRjaDAwNy5zaGEyNTZzdW1dID0gIjE3YjQxZTdlZTM2NzNkODg4N2RkMjU5OTI0MTdhMzk4Njc3NTMzYWI4ODI3OTM4YWE0MWZhZDcwZGYxOWFmOWIiCitTUkNfVVJJW3BhdGNoMDA4Lm1kNXN1bV0gPSAiZGQ3Y2Y3YTc4NGQxODM4ODIyY2FkOGQ0MTkzMTU5OTEiCitTUkNfVVJJW3BhdGNoMDA4LnNoYTI1NnN1bV0gPSAiZWVjNjQ1ODg2MjJhODJhNTAyOWIyNzc2ZTIxOGE3NWEzNjQwYmVmNDk1M2YwOWQ2ZWUxZjQxOTk2NzBhZDdlMyIKK1NSQ19VUklbcGF0Y2gwMDkubWQ1c3VtXSA9ICJjMWIzZTkzN2NkNmRjY2JiN2ZkNzcyZjMyODEyYTBkYSIKK1NSQ19VUklbcGF0Y2gwMDkuc2hhMjU2c3VtXSA9ICJlZDNjYTIxNzY3MzAzZmMzZGU5MzkzNGFhNTI0YzJlOTIwNzg3YzUwNmI2MDFjYzQwYTQ4OTdkNGIwOTRkOTAzIgorU1JDX1VSSVtwYXRjaDAxMC5tZDVzdW1dID0gIjE5YjQxZTczYjAzNjAyZDBlMjYxYzQ3MWI1M2U2NzBjIgorU1JDX1VSSVtwYXRjaDAxMC5zaGEyNTZzdW1dID0gImQ2ZmJjMzI1ZjBiNWRjNTRkZGJlOGVlNDMwMjBiY2VkOGJkNTg5ZGRmZmVhNTlkMTI4ZGIxNGIyZTUyYThhMTEiCitTUkNfVVJJW3BhdGNoMDExLm1kNXN1bV0gPSAiNDE0MzM5MzMwYTM2MzQxMzcwODFhOTdmMmM4NjE1YTgiCitTUkNfVVJJW3BhdGNoMDExLnNoYTI1NnN1bV0gPSAiMmM0ZGUzMzJiOTFlYWY3OTdhYmJiZDZjNzk3MDk2OTBiNWNiZDQ4YjEyZThkZmU3NDgwOTZkYmQ3YmY0NzRlYSIKK1NSQ19VUklbcGF0Y2gwMTIubWQ1c3VtXSA9ICIxODcwMjY4ZjYyYjkwNzIyMWIwNzhhZDEwOWUxZmE5NCIKK1NSQ19VUklbcGF0Y2gwMTIuc2hhMjU2c3VtXSA9ICIyOTQzZWUxOTY4ODAxODI5NmYyYTA0ZGJmZTMwYjcxMzhiODg5NzAwZWZhOGZmMWMwNTI0YWYyNzFlMGVlMjMzIgorU1JDX1VSSVtwYXRjaDAxMy5tZDVzdW1dID0gIjQwZDkyM2FmNGI5NTJiMDE5ODNlZDRjODg5YWUyNjUzIgorU1JDX1VSSVtwYXRjaDAxMy5zaGEyNTZzdW1dID0gImY1ZDcxNzhkOGRhMzA3OTllMDFiODNhMDgwMjAxOGQ5MTNkNmFhOTcyZGQyZGRhZDNiOTI3ZjNmM2ViNzA5OWEiCitTUkNfVVJJW3BhdGNoMDE0Lm1kNXN1bV0gPSAiNTc4NTdiMjIwNTNjODE2NzY3N2U1ZTVhYzVjNjY2OWIiCitTUkNfVVJJW3BhdGNoMDE0LnNoYTI1NnN1bV0gPSAiNWQ2ZWVlNjUxNGVlNmUyMmE4N2JiYThkMjJiZTBhODYyMWEwYWUxMTkyNDZmMWM1YTlhMzVkYjFmNzJhZjU4OSIKK1NSQ19VUklbcGF0Y2gwMTUubWQ1c3VtXSA9ICJjNGM2ZWEyM2QwOWE3NGVhYTkzODU0MzhlNDhmZGYwMiIKK1NSQ19VUklbcGF0Y2gwMTUuc2hhMjU2c3VtXSA9ICJhNTE3ZGYyZGRhOTNiMjZkNWNiZjAwZWZmZWZlYTkzZTNhNGNjZDY2NTJmMTUyZjQxMDkxNzA1NDRlYmZhMDVlIgorU1JDX1VSSVtwYXRjaDAxNi5tZDVzdW1dID0gImE2ODJlZDZmYTJjMmU3YTdjM2JhNmJkZWFkYTA3ZmI1IgorU1JDX1VSSVtwYXRjaDAxNi5zaGEyNTZzdW1dID0gImZmZDFkN2E1NGE5OWZhN2Y1YjE4MjVlNGY3ZTk1ZDhjODg3NmJjMmNhMTUxZjE1MGU3NTFkNDI5YzY1MGIwNmQiCiAKIERFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfYXJtdjQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHUycsICctbXRodW1iJywgJy1mb21pdC1mcmFtZS1wb2ludGVyJywgJycsIGQpfSIKIERFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfYXJtdjUgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHUycsICctbXRodW1iJywgJy1mb21pdC1mcmFtZS1wb2ludGVyJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2J6aXAyL2J6aXAyXzEuMC44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjguYmIKaW5kZXggOGU5Yjc3OS4uZDU4ZjU1MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjguYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvYnppcDIvYnppcDJfMS4wLjguYmIKQEAgLTQsNyArNCw3IEBACiBMWjc3L0xaNzgtYmFzZWQgY29tcHJlc3NvcnMsIGFuZCBhcHByb2FjaGVzIHRoZSBwZXJmb3JtYW5jZSBvZiB0aGUgUFBNIGZhbWlseSBvZiBzdGF0aXN0aWNhbCBjb21wcmVzc29ycy4iCiBIT01FUEFHRSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL2J6aXAyLyIKIFNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiYnppcDIiCitMSUNFTlNFID0gImJ6aXAyLTEuMC42IgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTtiZWdpbmxpbmU9NDtlbmRsaW5lPTM3O21kNT02MDBhZjQzYzUwZjFmY2I4MmUzMmYxOWIzMmRmNDY2NCIKIAogU1JDX1VSSSA9ICJodHRwczovL3NvdXJjZXdhcmUub3JnL3B1Yi8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jaGtjb25maWcvY2hrY29uZmlnLWFsdGVybmF0aXZlcy1uYXRpdmVfMS4zLjU5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY2hrY29uZmlnL2Noa2NvbmZpZy1hbHRlcm5hdGl2ZXMtbmF0aXZlXzEuMy41OS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODdmYThlYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jaGtjb25maWcvY2hrY29uZmlnLWFsdGVybmF0aXZlcy1uYXRpdmVfMS4zLjU5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotcmVxdWlyZSByZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWdfMS4zLjU4LmJiCi0KLVNVTU1BUlkgPSAiJHtTVU1NQVJZX2Noa2NvbmZpZy1hbHRlcm5hdGl2ZXN9IgotREVTQ1JJUFRJT04gPSAiJHtERVNDUklQVElPTl9jaGtjb25maWctYWx0ZXJuYXRpdmVzfSIKLURFUEVORFMgPSAiIgotUFJPVklERVMgKz0gInZpcnR1YWwvdXBkYXRlLWFsdGVybmF0aXZlcy1uYXRpdmUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyIKLQotIyBUaGUgc3lzcm9vdCBicmFuY2ggaXMgMS4zLjU5ICsgc29tZSBnaXQgY29tbWl0cyBmcm9tIG1hc3RlciArIC0tc3lzcm9vdAotIyBzdXBwb3J0IGZvciBhbHRlcm5hdGl2ZXMuCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20va2VyZ290aC9jaGtjb25maWc7YnJhbmNoPXN5c3Jvb3QiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiY2hrY29uZmlnLSg/UDxwdmVyPihcZCsoXC5cZCspKykpIgotCi1TUkNSRVYgPSAiY2Q0MzdlY2JkODk4NmM4OTQ0NDJmOGZjZTFlMDA2MWUyMGYwNGRlZSIKLVBWID0gIjEuMy41OSske1NSQ1BWfSIKLQotaW5oZXJpdCBuYXRpdmUKLQotIyBXZSB3YW50IG91ciBuYXRpdmUgcmVjaXBlcyB0byBidWlsZCB1c2luZyB0aGUgdGFyZ2V0IHBhdGhzIHJhdGhlciB0aGFuIHBhdGhzCi0jIGludG8gdGhlIHN5c3Jvb3QsIGFzIHdlIG1heSB1c2UgdGhlbSB0byBjb25zdHJ1Y3QgdGhlIHJvb3Rmcy4gQXMgc3VjaCwgd2UKLSMgb25seSBhZGp1c3QgdGhlIHBhdGhzIHRvIG1hdGNoIHRoZSBtZXRhZGF0YSBmb3IgdGhlIHRhcmdldCwgbm90IG5hdGl2ZS4KLW9iZXlfdmFyaWFibGVzICgpIHsKLQlzZWQgLWkgJ3MsQUxURVJOQVRJVkVTX1JPT1QsT1BLR19PRkZMSU5FX1JPT1QsJyAke1N9L2FsdGVybmF0aXZlcy5jCi19Ci0KLWRvX2NvbXBpbGUgKCkgewotCW9lX3J1bm1ha2UgYWx0ZXJuYXRpdmVzCi19Ci0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYWx0ZXJuYXRpdmVzIFwKLQkgICAgICAgICAgICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L2xpYi9hbHRlcm5hdGl2ZXMKLQotCWluc3RhbGwgLUQgLW0gMDc1NSBhbHRlcm5hdGl2ZXMgJHtEfSR7YmluZGlyfS9hbHRlcm5hdGl2ZXMKLQlpbnN0YWxsIC1EIC1tIDA2NDQgYWx0ZXJuYXRpdmVzLjggJHtEfSR7bWFuZGlyfS9tYW44L2FsdGVybmF0aXZlcy44Ci0KLQlsbiAtcyBhbHRlcm5hdGl2ZXMgJHtEfSR7YmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzCi0JbG4gLXMgYWx0ZXJuYXRpdmVzLjggJHtEfSR7bWFuZGlyfS9tYW44L3VwZGF0ZS1hbHRlcm5hdGl2ZXMuOAotfQotCi1kb19pbnN0YWxsX2FwcGVuZF9saW51eHN0ZGJhc2UoKSB7Ci0Jcm0gLXJmICR7RH0ke2xpYmRpcn0vbHNiCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jaGtjb25maWcvY2hrY29uZmlnL3JlcGxhY2VfY2FkZHJfdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWcvcmVwbGFjZV9jYWRkcl90LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NmQxOTM4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWcvcmVwbGFjZV9jYWRkcl90LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotY2FkZHJfdCBpcyBhIGxlZ2FjeSBCU0QgdHlwZSB3aGljaCB3YXMgcmVqZWN0ZWQgYnkgdGhlIFBPU0lYIHN0YW5kYXJkLgotVXNlIHZvaWQgKiBpbnN0ZWFkLgotCi1zeXMvdW5pdHN0ZC5oIGlzIG5vdCBuZWVkZWQgYW5kIG1vcmVvdmVyIGl0cyBub3QgYXZhaWxhYmxlIG9uIGFsbCBDIGxpYnJhcnkKLWltcGxlbWVudGF0aW9ucyBlLmcuIG11c2wKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotSW5kZXg6IGNoa2NvbmZpZy0xLjMuNTgvYWx0ZXJuYXRpdmVzLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjaGtjb25maWctMS4zLjU4Lm9yaWcvYWx0ZXJuYXRpdmVzLmMKLSsrKyBjaGtjb25maWctMS4zLjU4L2FsdGVybmF0aXZlcy5jCi1AQCAtMjIsNyArMjIsNiBAQAotICNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KLS0jaW5jbHVkZSA8c3lzL3VuaXN0ZC5oPgotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAKLSAjZGVmaW5lCUZMQUdTX1RFU1QJKDEgPDwgMCkKLUluZGV4OiBjaGtjb25maWctMS4zLjU4L2xldmVsZGIuYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGNoa2NvbmZpZy0xLjMuNTgub3JpZy9sZXZlbGRiLmMKLSsrKyBjaGtjb25maWctMS4zLjU4L2xldmVsZGIuYwotQEAgLTQ0Miw3ICs0NDIsNyBAQCBpbnQgcGFyc2VTZXJ2aWNlSW5mbyhpbnQgZmQsIGNoYXIgKiBuYW1lCi0gICAgIGZzdGF0KGZkLCAmc2IpOwotIAotICAgICBidWZzdGFydCA9IG1tYXAoTlVMTCwgc2Iuc3Rfc2l6ZSwgUFJPVF9SRUFELCBNQVBfU0hBUkVELCBmZCwgMCk7Ci0tICAgIGlmIChidWZzdGFydCA9PSAoKGNhZGRyX3QpIC0xKSkgewotKyAgICBpZiAoYnVmc3RhcnQgPT0gKCh2b2lkKikgLTEpKSB7Ci0gCWNsb3NlKGZkKTsKLSAJcmV0dXJuIC0xOwotICAgICB9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jaGtjb25maWcvY2hrY29uZmlnXzEuMy41OC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWdfMS4zLjU4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMjFkZDY5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Noa2NvbmZpZy9jaGtjb25maWdfMS4zLjU4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzEgKzAsMCBAQAotU1VNTUFSWSA9ICJBIHN5c3RlbSB0b29sIGZvciBtYWludGFpbmluZyB0aGUgL2V0Yy9yYyouZCBoaWVyYXJjaHkiCi1ERVNDUklQVElPTiA9ICJDaGtjb25maWcgaXMgYSBiYXNpYyBzeXN0ZW0gdXRpbGl0eS4gIEl0IHVwZGF0ZXMgYW5kIHF1ZXJpZXMgcnVubGV2ZWwgXAotaW5mb3JtYXRpb24gZm9yIHN5c3RlbSBzZXJ2aWNlcy4gIENoa2NvbmZpZyBtYW5pcHVsYXRlcyB0aGUgbnVtZXJvdXMgXAotc3ltYm9saWMgbGlua3MgaW4gL2V0Yy9yYy5kLCB0byByZWxpZXZlIHN5c3RlbSBhZG1pbmlzdHJhdG9ycyBvZiBzb21lIFwKLW9mIHRoZSBkcnVkZ2VyeSBvZiBtYW51YWxseSBlZGl0aW5nIHRoZSBzeW1ib2xpYyBsaW5rcy4iCi0KLVJFQ0lQRV9OT19VUERBVEVfUkVBU09OID0gIlZlcnNpb24gMS41IHJlcXVpcmVzIHNlbGludXgiCi0KLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9mZWRvcmEtc3lzdiIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU1NzRjNjk2NWFlNWY1ODNlNTU4ODBlMzk3ZmJiMDE4IgotCi1ERVBFTkRTID0gImxpYm5ld3QgcG9wdCIKLVBST1ZJREVTICs9ICJ2aXJ0dWFsL3VwZGF0ZS1hbHRlcm5hdGl2ZXMiCi0KLVBSID0gInI3IgotCi1TID0gIiR7V09SS0RJUn0vJHtCUE59LSR7QlBOfS0ke1BWfSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2ZlZG9yYS1zeXN2L2Noa2NvbmZpZy5naXQgXAotICAgICAgICAgICBmaWxlOi8vcmVwbGFjZV9jYWRkcl90LnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ1JFViA9ICIzZTBiMzkwOWZmNjMyOGQyMzJiMjdiOWMzMmYxYTkzMDljNmNkMGE0IgotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGdldHRleHQKLQotIyBNYWtlZmlsZSB1c2VzIFJQTV9PUFRfRkxBR1MgdG8gY29uc3RydWN0IENGTEFHUwotIwotRVhUUkFfT0VNQUtFID0gIlwKLSAgICAnUlBNX09QVF9GTEFHUz0ke0NGTEFHU30nIFwKLSAgICAnTERGTEFHUz0ke0xERkxBR1N9JyBcCi0gICAgJ0JJTkRJUj0ke2Jhc2Vfc2JpbmRpcn0nIFwKLSAgICAnU0JJTkRJUj0ke3NiaW5kaXJ9JyBcCi0gICAgJ01BTkRJUj0ke21hbmRpcn0nIFwKLSAgICAnQUxURElSPSR7bG9jYWxzdGF0ZWRpcn0vbGliL2FsdGVybmF0aXZlcycgXAotICAgICdBTFREQVRBRElSPSR7c3lzY29uZmRpcn0vYWx0ZXJuYXRpdmVzJyBcCi0iCi0KLWRvX3VucGFja1twb3N0ZnVuY3NdICs9ICJvYmV5X3ZhcmlhYmxlcyIKLWRvX3VucGFja1t2YXJkZXBzXSArPSAib2JleV92YXJpYWJsZXMiCi1vYmV5X3ZhcmlhYmxlcyAoKSB7Ci0Jc2VkIC1pIC1lICdzLC9ldGMsJHtzeXNjb25mZGlyfSw7IHMsL2xpYi9zeXN0ZW1kLCR7YmFzZV9saWJkaXJ9L3N5c3RlbWQsJyAke1N9L2xldmVsZGIuaAotCXNlZCAtaSAtZSAncywvZXRjL2FsdGVybmF0aXZlcywke3N5c2NvbmZkaXJ9L2FsdGVybmF0aXZlcywnIFwKLQkgICAgICAgLWUgJ3MsL3Zhci9saWIvYWx0ZXJuYXRpdmVzLCR7bG9jYWxzdGF0ZWRpcn0vbGliL2FsdGVybmF0aXZlcywnIFwKLQkgICAgICAgLWUgJ3MsL3Vzci9zaGFyZS9sb2NhbGUsJHtkYXRhZGlyfS9sb2NhbGUsJyAke1N9L2FsdGVybmF0aXZlcy5jCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyAnSU5TVEFMTE5MU0RJUj0ke0R9JHtkYXRhZGlyfS9sb2NhbGUnIFwKLQkJJ0JJTkRJUj0ke3NiaW5kaXJ9JyBpbnN0YWxsCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9jaGtjb25maWcuZAotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tYWx0ZXJuYXRpdmVzICR7UE59LWFsdGVybmF0aXZlcy1kb2MiCi1TVU1NQVJZXyR7UE59LWFsdGVybmF0aXZlcyA9ICJNYWludGFpbiBzeW1ib2xpYyBsaW5rcyBkZXRlcm1pbmluZyBkZWZhdWx0IGNvbW1hbmRzIgotREVTQ1JJUFRJT05fJHtQTn0tYWx0ZXJuYXRpdmVzID0gImFsdGVybmF0aXZlcyBjcmVhdGVzLCByZW1vdmVzLCBtYWludGFpbnMgYW5kIGRpc3BsYXlzIFwKLWluZm9ybWF0aW9uIGFib3V0IHRoZSBzeW1ib2xpYyBsaW5rcyBjb21wcmlzaW5nIHRoZSBhbHRlcm5hdGl2ZXMgc3lzdGVtLiIKLVNVTU1BUllfJHtQTn0tYWx0ZXJuYXRpdmVzLWRvYyA9ICIke1NVTU1BUllfJHtQTn0tYWx0ZXJuYXRpdmVzfSAtIERvY3VtZW50YXRpb24gZmlsZXMiCi1ERVNDUklQVElPTl8ke1BOfS1hbHRlcm5hdGl2ZXMtZG9jID0gIiR7REVTQ1JJUFRJT05fJHtQTn0tYWx0ZXJuYXRpdmVzfSAgXAotVGhpcyBwYWNrYWdlIGNvbnRhaW5zIGRvY3VtZW50YXRpb24uIgotUlBST1ZJREVTXyR7UE59LWFsdGVybmF0aXZlcyArPSAidXBkYXRlLWFsdGVybmF0aXZlcyIKLVJDT05GTElDVFNfJHtQTn0tYWx0ZXJuYXRpdmVzID0gInVwZGF0ZS1hbHRlcm5hdGl2ZXMtb3BrZyB1cGRhdGUtYWx0ZXJuYXRpdmVzLWRwa2ciCi1GSUxFU18ke1BOfS1hbHRlcm5hdGl2ZXMgPSAiJHtzYmluZGlyfS9hbHRlcm5hdGl2ZXMgJHtzYmluZGlyfS91cGRhdGUtYWx0ZXJuYXRpdmVzIFwKLQkJCSAgICAke3N5c2NvbmZkaXJ9L2FsdGVybmF0aXZlcyAke2xvY2Fsc3RhdGVkaXJ9L2xpYi9hbHRlcm5hdGl2ZXMiCi1GSUxFU18ke1BOfS1hbHRlcm5hdGl2ZXMtZG9jID0gIiR7bWFuZGlyfS9tYW44L2FsdGVybmF0aXZlcy44IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjgvdXBkYXRlLWFsdGVybmF0aXZlcy44IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1DVkUtMjAxNi0yMDM3LTEtYnl0ZS1vdXQtb2YtYm91bmRzLXdyaXRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1DVkUtMjAxNi0yMDM3LTEtYnl0ZS1vdXQtb2YtYm91bmRzLXdyaXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTMwNTQ0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjEyLzAwMDEtQ1ZFLTIwMTYtMjAzNy0xLWJ5dGUtb3V0LW9mLWJvdW5kcy13cml0ZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM0NiArMCwwIEBACi1Gcm9tIGViZjlhMmQ3NzY0NzQxODE5MzZhNzIwY2U4MTFkNzJiYmQxZGEzYjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQYXZlbCBSYWlza3VwIDxwcmFpc2t1cEByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAyNiBKYW4gMjAxNiAyMzoxNzo1NCArMDEwMAotU3ViamVjdDogW1BBVENIXSBDVkUtMjAxNi0yMDM3IC0gMSBieXRlIG91dC1vZi1ib3VuZHMgd3JpdGUKLQotRW5zdXJlIHRoYXQgY3Bpb19zYWZlcl9uYW1lX3N1ZmZpeCBhbHdheXMgd29ya3Mgd2l0aCBkeW5hbWljYWxseQotYWxsb2NhdGVkIGJ1ZmZlciwgYW5kIHRoYXQgaXQgaGFzIHNpemUgb2YgYXQgbGVhc3QgMzIgYnl0ZXMuCi1UaGVuLCBhbnkgY2FsbCB0byBjcGlvX3NhZmVyX25hbWVfc3VmZml4IGlzIHNhZmUgKGl0IHJlcXVpcmVzIGF0Ci1sZWFzdCAyIGJ5dGVzIGluIHRoZSBidWZmZXIpLgotCi1BbHNvIGVuc3VyZSB0aGF0IGNfbmFtZXNpemUgaXMgYWx3YXlzIGNvcnJlY3RseSBpbml0aWFsaXplZCAoYnkKLWNwaW9fc2V0X2NfbmFtZSkgdG8gYXZvaWQgdW5kZWZpbmVkIGJlaGF2aW9yIHdoZW4gcmVhZGluZwotZmlsZV9oZHIuY19uYW1lc2l6ZSAocHJldmlvdXNseSBoYXBwZW5lZCBmb3IgdGFyIGFyY2hpdmVzKS4KLQotUmVmZXJlbmNlczoKLWh0dHA6Ly93d3cubWFpbC1hcmNoaXZlLmNvbS9idWctY3Bpb0BnbnUub3JnL21zZzAwNTQ1Lmh0bWwKLQotKiBzcmMvY29weWluLmMgKHF1ZXJ5X3JlbmFtZSk6IERyb3AgdGhlIGhhY2ssIGFzIHdlIG5vdyB3b3JrIHdpdGgKLWR5bmFtaWNhbGx5IGFsbG9jYXRlZCBidWZmZXIuICBVc2UgY3Bpb19zZXRfY19uYW1lLgotKGNyZWF0ZV9kZWZlcmVkX2xpbmtzX3RvX3NraXBwZWQpOiBVc2UgY3Bpb19zZXRfY19uYW1lIHJhdGhlciB0aGFuCi1tYW51YWwgYXNzaWdubWVudC4KLShyZWFkX25hbWVfZnJvbV9maWxlKTogTmV3IGZ1bmN0aW9uIHRvIGF2b2lkIEMmUC4KLShyZWFkX2luX29sZF9hc2NpaSwgcmVhZF9pbl9uZXdfYXNjaWksIHJlYWRfaW5fYmluYXJ5KTogVXNlCi1yZWFkX25hbWVfZnJvbV9maWxlLgotKHByb2Nlc3NfY29weV9pbik6IEluaXRpYWxpemUgZmlsZV9oZHIuY19uYW1lc2l6ZS4KLSogc3JjL2NvcHlvdXQuYyAocHJvY2Vzc19jb3B5X291dCk6IFVzZSBjcGlvX3NldF9jX25hbWUuCi0qIHNyYy9jcGlvaGRyLmggKGNwaW9fc2V0X2NfbmFtZSk6IE5ldyBwcm90b3R5cGUuCi0qIHNyYy90YXIuYyAocmVhZF9pbl90YXJfaGVhZGVyKTogVXNlIGNwaW9fc2V0X2NfbmFtZS4KLSogc3JjL3V0aWwuYyAoY3Bpb19zZXRfY19uYW1lKTogTmV3IGZ1bmN0aW9uIHRvIHNldAotZmlsZV9oZHItPmNfbmFtZSBhbmQgY19uYW1lc2l6ZSBmcm9tIGFyYml0cmFyeSBzdHJpbmcuCi0oY3Bpb19zYWZlcl9uYW1lX3N1ZmZpeCk6IFNvbWUgZG9jcyBmaXhlcy4KLSogdGVzdHMvaW5vdXQuYXQ6IEFsc28gdGVzdCBjb3B5LWluLCBhbmQgdHJ5IHZhcmlvdXMgZm9ybWF0cy4KLQotQ1ZFOiBDVkUtMjAxNi0yMDM3Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2NwaW8uZ2l0L2NvbW1pdC8/aWQ9ZDM2ZWM1ZjRlOTMxMzBlZmIyNGZiOTY3OGFhZmQ4OGU4MDcwMDk1Yl0KLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLS0tLQotIHNyYy9jb3B5aW4uYyAgIHwgNjggKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIHNyYy9jb3B5b3V0LmMgIHwgMTMgKysrKystLS0tLS0KLSBzcmMvY3Bpb2hkci5oICB8ICAxICsKLSBzcmMvdGFyLmMgICAgICB8IDEwICsrKysrLS0tLQotIHNyYy91dGlsLmMgICAgIHwgMzIgKysrKysrKysrKysrKysrKysrKysrKysrKystCi0gdGVzdHMvaW5vdXQuYXQgfCAxOSArKysrKysrKysrKysrKy0tCi0gNiBmaWxlcyBjaGFuZ2VkLCA4MiBpbnNlcnRpb25zKCspLCA2MSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy9jb3B5aW4uYyBiL3NyYy9jb3B5aW4uYwotaW5kZXggY2RlOTExZS4uOTcyZjhhNiAxMDA2NDQKLS0tLSBhL3NyYy9jb3B5aW4uYwotKysrIGIvc3JjL2NvcHlpbi5jCi1AQCAtNzYsMjggKzc2LDcgQEAgcXVlcnlfcmVuYW1lKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCogZmlsZV9oZHIsIEZJTEUgKnR0eV9pbiwgRklMRSAqdHR5X291dCwKLSAgICAgICByZXR1cm4gLTE7Ci0gICAgIH0KLSAgIGVsc2UKLS0gIC8qIERlYmlhbiBoYWNrOiBmaWxlX2hyZC5jX25hbWUgaXMgc29tZXRpbWVzIHNldCB0bwotLSAgICAgcG9pbnQgdG8gc3RhdGljIG1lbW9yeSBieSBjb2RlIGluIHRhci5jLiAgVGhpcwotLSAgICAgY2F1c2VzIGEgc2VnZmF1bHQuICBUaGlzIGhhcyBiZWVuIGZpeGVkIGFuZCBhbgotLSAgICAgYWRkaXRpb25hbCBjaGVjayB0byBlbnN1cmUgdGhhdCB0aGUgZmlsZSBuYW1lCi0tICAgICBpcyBub3QgdG9vIGxvbmcgaGFzIGJlZW4gYWRkZWQuICAoUmVwb3J0ZWQgYnkKLS0gICAgIEhvcnN0IEtub2Jsb2NoLikgIFRoaXMgYnVnIGhhcyBiZWVuIHJlcG9ydGVkIHRvCi0tICAgICAiYnVnLWdudS11dGlsc0BwcmVwLmFpLm1pdC5lZHUiLiAoOTkvMS82KSAtQkVNICovCi0tICAgIHsKLS0gICAgICBpZiAoYXJjaGl2ZV9mb3JtYXQgIT0gYXJmX3RhciAmJiBhcmNoaXZlX2Zvcm1hdCAhPSBhcmZfdXN0YXIpCi0tCXsKLS0JICBmcmVlIChmaWxlX2hkci0+Y19uYW1lKTsKLS0JICBmaWxlX2hkci0+Y19uYW1lID0geHN0cmR1cCAobmV3X25hbWUuZHNfc3RyaW5nKTsKLS0JfQotLSAgICAgIGVsc2UKLS0JewotLQkgIGlmIChpc190YXJfZmlsZW5hbWVfdG9vX2xvbmcgKG5ld19uYW1lLmRzX3N0cmluZykpCi0tCSAgICBlcnJvciAoMCwgMCwgXygiJXM6IGZpbGUgbmFtZSB0b28gbG9uZyIpLAotLQkJICAgbmV3X25hbWUuZHNfc3RyaW5nKTsKLS0JICBlbHNlCi0tCSAgICBzdHJjcHkgKGZpbGVfaGRyLT5jX25hbWUsIG5ld19uYW1lLmRzX3N0cmluZyk7Ci0tCX0KLS0gICAgfQotKyAgICBjcGlvX3NldF9jX25hbWUgKGZpbGVfaGRyLCBuZXdfbmFtZS5kc19zdHJpbmcpOwotICAgcmV0dXJuIDA7Ci0gfQotIAwKLUBAIC0zNDQsOCArMzIzLDcgQEAgY3JlYXRlX2RlZmVyZWRfbGlua3NfdG9fc2tpcHBlZCAoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlX2hkciwKLSAJICAgIGRfcHJldi0+bmV4dCA9IGQtPm5leHQ7Ci0gCSAgZWxzZQotIAkgICAgZGVmZXJtZW50cyA9IGQtPm5leHQ7Ci0tCSAgZnJlZSAoZmlsZV9oZHItPmNfbmFtZSk7Ci0tCSAgZmlsZV9oZHItPmNfbmFtZSA9IHhzdHJkdXAoZC0+aGVhZGVyLmNfbmFtZSk7Ci0rCSAgY3Bpb19zZXRfY19uYW1lIChmaWxlX2hkciwgZC0+aGVhZGVyLmNfbmFtZSk7Ci0gCSAgZnJlZV9kZWZlcm1lbnQgKGQpOwotIAkgIGNvcHlpbl9yZWd1bGFyX2ZpbGUoZmlsZV9oZHIsIGluX2ZpbGVfZGVzKTsKLSAJICByZXR1cm4gMDsKLUBAIC0xMDY0LDYgKzEwNDIsMjIgQEAgcmVhZF9pbl9oZWFkZXIgKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCAqZmlsZV9oZHIsIGludCBpbl9kZXMpCi0gICAgIH0KLSB9Ci0gCi0rc3RhdGljIHZvaWQKLStyZWFkX25hbWVfZnJvbV9maWxlIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBpbnQgZmQsIHVpbnRtYXhfdCBsZW4pCi0rewotKyAgc3RhdGljIGNoYXIgKnRtcF9maWxlbmFtZTsKLSsgIHN0YXRpYyBzaXplX3QgYnVmbGVuOwotKwotKyAgaWYgKGJ1ZmxlbiA8IGxlbikKLSsgICAgewotKyAgICAgIGJ1ZmxlbiA9IGxlbjsKLSsgICAgICB0bXBfZmlsZW5hbWUgPSB4cmVhbGxvYyAodG1wX2ZpbGVuYW1lLCBidWZsZW4pOwotKyAgICB9Ci0rCi0rICB0YXBlX2J1ZmZlcmVkX3JlYWQgKHRtcF9maWxlbmFtZSwgZmQsIGxlbik7Ci0rICBjcGlvX3NldF9jX25hbWUgKGZpbGVfaGRyLCB0bXBfZmlsZW5hbWUpOwotK30KLSsKLSAvKiBGaWxsIGluIEZJTEVfSERSIGJ5IHJlYWRpbmcgYW4gb2xkLWZvcm1hdCBBU0NJSSBmb3JtYXQgY3BpbyBoZWFkZXIgZnJvbQotICAgIGZpbGUgZGVzY3JpcHRvciBJTl9ERVMsIGV4Y2VwdCBmb3IgdGhlIG1hZ2ljIG51bWJlciwgd2hpY2ggaXMKLSAgICBhbHJlYWR5IGZpbGxlZCBpbi4gICovCi1AQCAtMTA5MCwxNCArMTA4NCw4IEBAIHJlYWRfaW5fb2xkX2FzY2lpIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBpbnQgaW5fZGVzKQotICAgZmlsZV9oZHItPmNfcmRldl9taW4gPSBtaW5vciAoZGV2KTsKLSAKLSAgIGZpbGVfaGRyLT5jX210aW1lID0gRlJPTV9PQ1RBTCAoYXNjaWlfaGVhZGVyLmNfbXRpbWUpOwotLSAgZmlsZV9oZHItPmNfbmFtZXNpemUgPSBGUk9NX09DVEFMIChhc2NpaV9oZWFkZXIuY19uYW1lc2l6ZSk7Ci0gICBmaWxlX2hkci0+Y19maWxlc2l6ZSA9IEZST01fT0NUQUwgKGFzY2lpX2hlYWRlci5jX2ZpbGVzaXplKTsKLS0gIAotLSAgLyogUmVhZCBmaWxlIG5hbWUgZnJvbSBpbnB1dC4gICovCi0tICBpZiAoZmlsZV9oZHItPmNfbmFtZSAhPSBOVUxMKQotLSAgICBmcmVlIChmaWxlX2hkci0+Y19uYW1lKTsKLS0gIGZpbGVfaGRyLT5jX25hbWUgPSAoY2hhciAqKSB4bWFsbG9jIChmaWxlX2hkci0+Y19uYW1lc2l6ZSArIDEpOwotLSAgdGFwZV9idWZmZXJlZF9yZWFkIChmaWxlX2hkci0+Y19uYW1lLCBpbl9kZXMsIChsb25nKSBmaWxlX2hkci0+Y19uYW1lc2l6ZSk7Ci0rICByZWFkX25hbWVfZnJvbV9maWxlIChmaWxlX2hkciwgaW5fZGVzLCBGUk9NX09DVEFMIChhc2NpaV9oZWFkZXIuY19uYW1lc2l6ZSkpOwotIAotICAgLyogSFAvVVggY3BpbyBjcmVhdGVzIGFyY2hpdmVzIHRoYXQgbG9vayBqdXN0IGxpa2Ugb3JkaW5hcnkgYXJjaGl2ZXMsCi0gICAgICBidXQgZm9yIGRldmljZXMgaXQgc2V0cyBtYWpvciA9IDAsIG1pbm9yID0gMSwgYW5kIHB1dHMgdGhlCi1AQCAtMTE1MiwxNCArMTE0MCw4IEBAIHJlYWRfaW5fbmV3X2FzY2lpIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBpbnQgaW5fZGVzKQotICAgZmlsZV9oZHItPmNfZGV2X21pbiA9IEZST01fSEVYIChhc2NpaV9oZWFkZXIuY19kZXZfbWluKTsKLSAgIGZpbGVfaGRyLT5jX3JkZXZfbWFqID0gRlJPTV9IRVggKGFzY2lpX2hlYWRlci5jX3JkZXZfbWFqKTsKLSAgIGZpbGVfaGRyLT5jX3JkZXZfbWluID0gRlJPTV9IRVggKGFzY2lpX2hlYWRlci5jX3JkZXZfbWluKTsKLS0gIGZpbGVfaGRyLT5jX25hbWVzaXplID0gRlJPTV9IRVggKGFzY2lpX2hlYWRlci5jX25hbWVzaXplKTsKLSAgIGZpbGVfaGRyLT5jX2Noa3N1bSA9IEZST01fSEVYIChhc2NpaV9oZWFkZXIuY19jaGtzdW0pOwotLSAgCi0tICAvKiBSZWFkIGZpbGUgbmFtZSBmcm9tIGlucHV0LiAgKi8KLS0gIGlmIChmaWxlX2hkci0+Y19uYW1lICE9IE5VTEwpCi0tICAgIGZyZWUgKGZpbGVfaGRyLT5jX25hbWUpOwotLSAgZmlsZV9oZHItPmNfbmFtZSA9IChjaGFyICopIHhtYWxsb2MgKGZpbGVfaGRyLT5jX25hbWVzaXplKTsKLS0gIHRhcGVfYnVmZmVyZWRfcmVhZCAoZmlsZV9oZHItPmNfbmFtZSwgaW5fZGVzLCAobG9uZykgZmlsZV9oZHItPmNfbmFtZXNpemUpOwotKyAgcmVhZF9uYW1lX2Zyb21fZmlsZSAoZmlsZV9oZHIsIGluX2RlcywgRlJPTV9IRVggKGFzY2lpX2hlYWRlci5jX25hbWVzaXplKSk7Ci0gCi0gICAvKiBJbiBTVlI0IEFTQ0lJIGZvcm1hdCwgdGhlIGFtb3VudCBvZiBzcGFjZSBhbGxvY2F0ZWQgZm9yIHRoZSBoZWFkZXIKLSAgICAgIGlzIHJvdW5kZWQgdXAgdG8gdGhlIG5leHQgbG9uZy13b3JkLCBzbyB3ZSBtaWdodCBuZWVkIHRvIGRyb3AKLUBAIC0xMjA3LDE2ICsxMTg5LDkgQEAgcmVhZF9pbl9iaW5hcnkgKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCAqZmlsZV9oZHIsCi0gICBmaWxlX2hkci0+Y19yZGV2X21pbiA9IG1pbm9yIChzaG9ydF9oZHItPmNfcmRldik7Ci0gICBmaWxlX2hkci0+Y19tdGltZSA9ICh1bnNpZ25lZCBsb25nKSBzaG9ydF9oZHItPmNfbXRpbWVzWzBdIDw8IDE2Ci0gICAgICAgICAgICAgICAgICAgICAgIHwgc2hvcnRfaGRyLT5jX210aW1lc1sxXTsKLS0KLS0gIGZpbGVfaGRyLT5jX25hbWVzaXplID0gc2hvcnRfaGRyLT5jX25hbWVzaXplOwotICAgZmlsZV9oZHItPmNfZmlsZXNpemUgPSAodW5zaWduZWQgbG9uZykgc2hvcnRfaGRyLT5jX2ZpbGVzaXplc1swXSA8PCAxNgotICAgICAgICAgICAgICAgICAgICAgICB8IHNob3J0X2hkci0+Y19maWxlc2l6ZXNbMV07Ci0tCi0tICAvKiBSZWFkIGZpbGUgbmFtZSBmcm9tIGlucHV0LiAgKi8KLS0gIGlmIChmaWxlX2hkci0+Y19uYW1lICE9IE5VTEwpCi0tICAgIGZyZWUgKGZpbGVfaGRyLT5jX25hbWUpOwotLSAgZmlsZV9oZHItPmNfbmFtZSA9IChjaGFyICopIHhtYWxsb2MgKGZpbGVfaGRyLT5jX25hbWVzaXplKTsKLS0gIHRhcGVfYnVmZmVyZWRfcmVhZCAoZmlsZV9oZHItPmNfbmFtZSwgaW5fZGVzLCAobG9uZykgZmlsZV9oZHItPmNfbmFtZXNpemUpOwotKyAgcmVhZF9uYW1lX2Zyb21fZmlsZSAoZmlsZV9oZHIsIGluX2Rlcywgc2hvcnRfaGRyLT5jX25hbWVzaXplKTsKLSAKLSAgIC8qIEluIGJpbmFyeSBtb2RlLCB0aGUgYW1vdW50IG9mIHNwYWNlIGFsbG9jYXRlZCBpbiB0aGUgaGVhZGVyIGZvcgotICAgICAgdGhlIGZpbGVuYW1lIGlzIGBjX25hbWVzaXplJyByb3VuZGVkIHVwIHRvIHRoZSBuZXh0IHNob3J0LXdvcmQsCi1AQCAtMTI5Nyw2ICsxMjcyLDcgQEAgcHJvY2Vzc19jb3B5X2luICgpCi0gICAgICAgcmVhZF9wYXR0ZXJuX2ZpbGUgKCk7Ci0gICAgIH0KLSAgIGZpbGVfaGRyLmNfbmFtZSA9IE5VTEw7Ci0rICBmaWxlX2hkci5jX25hbWVzaXplID0gMDsKLSAKLSAgIGlmIChyZW5hbWVfYmF0Y2hfZmlsZSkKLSAgICAgewotZGlmZiAtLWdpdCBhL3NyYy9jb3B5b3V0LmMgYi9zcmMvY29weW91dC5jCi1pbmRleCAxZjA5ODdhLi5iYjM5NTU5IDEwMDY0NAotLS0tIGEvc3JjL2NvcHlvdXQuYwotKysrIGIvc3JjL2NvcHlvdXQuYwotQEAgLTY2MCw4ICs2NjAsNyBAQCBwcm9jZXNzX2NvcHlfb3V0ICgpCi0gCSAgY3Bpb19zYWZlcl9uYW1lX3N1ZmZpeCAoaW5wdXRfbmFtZS5kc19zdHJpbmcsIGZhbHNlLAotIAkJCQkgICFub19hYnNfcGF0aHNfZmxhZywgdHJ1ZSk7Ci0gI2lmbmRlZiBIUFVYX0NERgotLQkgIGZpbGVfaGRyLmNfbmFtZSA9IGlucHV0X25hbWUuZHNfc3RyaW5nOwotLQkgIGZpbGVfaGRyLmNfbmFtZXNpemUgPSBzdHJsZW4gKGlucHV0X25hbWUuZHNfc3RyaW5nKSArIDE7Ci0rCSAgY3Bpb19zZXRfY19uYW1lICgmZmlsZV9oZHIsIGlucHV0X25hbWUuZHNfc3RyaW5nKTsKLSAjZWxzZQotIAkgIGlmICggKGFyY2hpdmVfZm9ybWF0ICE9IGFyZl90YXIpICYmIChhcmNoaXZlX2Zvcm1hdCAhPSBhcmZfdXN0YXIpICkKLSAJICAgIHsKLUBAIC02NzAsMTYgKzY2OSwxNSBAQCBwcm9jZXNzX2NvcHlfb3V0ICgpCi0gCQkgcHJvcGVybHkgcmVjcmVhdGUgdGhlIGRpcmVjdG9yeSBhcyBoaWRkZW4gKGluIGNhc2UgdGhlCi0gCQkgZmlsZXMgb2YgYSBkaXJlY3RvcnkgZ28gaW50byB0aGUgYXJjaGl2ZSBiZWZvcmUgdGhlCi0gCQkgZGlyZWN0b3J5IGl0c2VsZiAoZS5nIGZyb20gImZpbmQgLi4uIC1kZXB0aCAuLi4gfCBjcGlvIikpLiAgKi8KLS0JICAgICAgZmlsZV9oZHIuY19uYW1lID0gYWRkX2NkZl9kb3VibGVfc2xhc2hlcyAoaW5wdXRfbmFtZS5kc19zdHJpbmcpOwotLQkgICAgICBmaWxlX2hkci5jX25hbWVzaXplID0gc3RybGVuIChmaWxlX2hkci5jX25hbWUpICsgMTsKLSsgICAgICAgICAgICAgIGNwaW9fc2V0X2NfbmFtZSAoJmZpbGVfaGRyLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBhZGRfY2RmX2RvdWJsZV9zbGFzaGVzIChpbnB1dF9uYW1lLmRzX3N0cmluZykpOwotIAkgICAgfQotIAkgIGVsc2UKLSAJICAgIHsKLSAJICAgICAgLyogV2UgZG9uJ3QgbWFyayBDREYncyBpbiB0YXIgZmlsZXMuICBXZSBhc3N1bWUgdGhlICJoaWRkZW4iCi0gCQkgZGlyZWN0b3J5IHdpbGwgYWx3YXlzIGdvIGludG8gdGhlIGFyY2hpdmUgYmVmb3JlIGFueSBvZgotIAkJIGl0cyBmaWxlcy4gICovCi0tCSAgICAgIGZpbGVfaGRyLmNfbmFtZSA9IGlucHV0X25hbWUuZHNfc3RyaW5nOwotLQkgICAgICBmaWxlX2hkci5jX25hbWVzaXplID0gc3RybGVuIChpbnB1dF9uYW1lLmRzX3N0cmluZykgKyAxOwotKyAgICAgICAgICAgICAgY3Bpb19zZXRfY19uYW1lICgmZmlsZV9oZHIsIGlucHV0X25hbWUuZHNfc3RyaW5nKTsKLSAJICAgIH0KLSAjZW5kaWYKLSAKLUBAIC04NjYsOCArODY0LDcgQEAgcHJvY2Vzc19jb3B5X291dCAoKQotICAgZmlsZV9oZHIuY19jaGtzdW0gPSAwOwotIAotICAgZmlsZV9oZHIuY19maWxlc2l6ZSA9IDA7Ci0tICBmaWxlX2hkci5jX25hbWVzaXplID0gMTE7Ci0tICBmaWxlX2hkci5jX25hbWUgPSBDUElPX1RSQUlMRVJfTkFNRTsKLSsgIGNwaW9fc2V0X2NfbmFtZSAoJmZpbGVfaGRyLCBDUElPX1RSQUlMRVJfTkFNRSk7Ci0gICBpZiAoYXJjaGl2ZV9mb3JtYXQgIT0gYXJmX3RhciAmJiBhcmNoaXZlX2Zvcm1hdCAhPSBhcmZfdXN0YXIpCi0gICAgIHdyaXRlX291dF9oZWFkZXIgKCZmaWxlX2hkciwgb3V0X2ZpbGVfZGVzKTsKLSAgIGVsc2UKLWRpZmYgLS1naXQgYS9zcmMvY3Bpb2hkci5oIGIvc3JjL2NwaW9oZHIuaAotaW5kZXggYjI5ZTZmYi4uZjRjNjNiZSAxMDA2NDQKLS0tLSBhL3NyYy9jcGlvaGRyLmgKLSsrKyBiL3NyYy9jcGlvaGRyLmgKLUBAIC0xMjksNSArMTI5LDYgQEAgc3RydWN0IGNwaW9fZmlsZV9zdGF0IC8qIEludGVybmFsIHJlcHJlc2VudGF0aW9uIG9mIGEgQ1BJTyBoZWFkZXIgKi8KLSAgIGNoYXIgKmNfdGFyX2xpbmtuYW1lOwotIH07Ci0gCi0rdm9pZCBjcGlvX3NldF9jX25hbWUoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlX2hkciwgY2hhciAqbmFtZSk7Ci0gCi0gI2VuZGlmIC8qIGNwaW9oZHIuaCAqLwotZGlmZiAtLWdpdCBhL3NyYy90YXIuYyBiL3NyYy90YXIuYwotaW5kZXggYTJjZTE3MS4uZTQxZjg5ZCAxMDA2NDQKLS0tLSBhL3NyYy90YXIuYwotKysrIGIvc3JjL3Rhci5jCi1AQCAtMjgyLDcgKzI4Miw3IEBAIHJlYWRfaW5fdGFyX2hlYWRlciAoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlX2hkciwgaW50IGluX2RlcykKLSAgICAgICBpZiAobnVsbF9ibG9jayAoKGxvbmcgKikgJnRhcl9yZWMsIFRBUlJFQ09SRFNJWkUpKQotICNlbmRpZgotIAl7Ci0tCSAgZmlsZV9oZHItPmNfbmFtZSA9IENQSU9fVFJBSUxFUl9OQU1FOwotKwkgIGNwaW9fc2V0X2NfbmFtZSAoZmlsZV9oZHIsIENQSU9fVFJBSUxFUl9OQU1FKTsKLSAJICByZXR1cm47Ci0gCX0KLSAjaWYgMAotQEAgLTMxNiw5ICszMTYsMTEgQEAgcmVhZF9pbl90YXJfaGVhZGVyIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBpbnQgaW5fZGVzKQotIAl9Ci0gCi0gICAgICAgaWYgKGFyY2hpdmVfZm9ybWF0ICE9IGFyZl91c3RhcikKLS0JZmlsZV9oZHItPmNfbmFtZSA9IHN0YXNoX3Rhcl9maWxlbmFtZSAoTlVMTCwgdGFyX2hkci0+bmFtZSk7Ci0rICAgICAgICBjcGlvX3NldF9jX25hbWUgKGZpbGVfaGRyLCBzdGFzaF90YXJfZmlsZW5hbWUgKE5VTEwsIHRhcl9oZHItPm5hbWUpKTsKLSAgICAgICBlbHNlCi0tCWZpbGVfaGRyLT5jX25hbWUgPSBzdGFzaF90YXJfZmlsZW5hbWUgKHRhcl9oZHItPnByZWZpeCwgdGFyX2hkci0+bmFtZSk7Ci0rICAgICAgICBjcGlvX3NldF9jX25hbWUgKGZpbGVfaGRyLCBzdGFzaF90YXJfZmlsZW5hbWUgKHRhcl9oZHItPnByZWZpeCwKLSsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJfaGRyLT5uYW1lKSk7Ci0rCi0gICAgICAgZmlsZV9oZHItPmNfbmxpbmsgPSAxOwotICAgICAgIGZpbGVfaGRyLT5jX21vZGUgPSBGUk9NX09DVEFMICh0YXJfaGRyLT5tb2RlKTsKLSAgICAgICBmaWxlX2hkci0+Y19tb2RlID0gZmlsZV9oZHItPmNfbW9kZSAmIDA3Nzc3OwotQEAgLTM5OCw3ICs0MDAsNyBAQCByZWFkX2luX3Rhcl9oZWFkZXIgKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCAqZmlsZV9oZHIsIGludCBpbl9kZXMpCi0gCWNhc2UgQVJFR1RZUEU6Ci0gCSAgLyogT2xkIHRhciBmb3JtYXQ7IGlmIHRoZSBsYXN0IGNoYXIgaW4gZmlsZW5hbWUgaXMgJy8nIHRoZW4gaXQgaXMKLSAJICAgICBhIGRpcmVjdG9yeSwgb3RoZXJ3aXNlIGl0J3MgYSByZWd1bGFyIGZpbGUuICAqLwotLQkgIGlmIChmaWxlX2hkci0+Y19uYW1lW3N0cmxlbiAoZmlsZV9oZHItPmNfbmFtZSkgLSAxXSA9PSAnLycpCi0rCSAgaWYgKGZpbGVfaGRyLT5jX25hbWVbZmlsZV9oZHItPmNfbmFtZXNpemUgLSAxXSA9PSAnLycpCi0gCSAgICBmaWxlX2hkci0+Y19tb2RlIHw9IENQX0lGRElSOwotIAkgIGVsc2UKLSAJICAgIGZpbGVfaGRyLT5jX21vZGUgfD0gQ1BfSUZSRUc7Ci1kaWZmIC0tZ2l0IGEvc3JjL3V0aWwuYyBiL3NyYy91dGlsLmMKLWluZGV4IDZmZjYwMzIuLjRmM2MwNzMgMTAwNjQ0Ci0tLS0gYS9zcmMvdXRpbC5jCi0rKysgYi9zcmMvdXRpbC5jCi1AQCAtMTQxMCw4ICsxNDEwLDM0IEBAIHNldF9maWxlX3RpbWVzIChpbnQgZmQsCi0gICAgIHV0aW1lX2Vycm9yIChuYW1lKTsKLSB9Ci0gCi0rCi0rdm9pZAotK2NwaW9fc2V0X2NfbmFtZSAoc3RydWN0IGNwaW9fZmlsZV9zdGF0ICpmaWxlX2hkciwgY2hhciAqbmFtZSkKLSt7Ci0rICBzdGF0aWMgc2l6ZV90IGJ1ZmxlbiA9IDA7Ci0rICBzaXplX3QgbGVuID0gc3RybGVuIChuYW1lKSArIDE7Ci0rCi0rICBpZiAoYnVmbGVuID09IDApCi0rICAgIHsKLSsgICAgICBidWZsZW4gPSBsZW47Ci0rICAgICAgaWYgKGJ1ZmxlbiA8IDMyKQotKyAgICAgICAgYnVmbGVuID0gMzI7Ci0rICAgICAgZmlsZV9oZHItPmNfbmFtZSA9IHhtYWxsb2MgKGJ1Zmxlbik7Ci0rICAgIH0KLSsgIGVsc2UgaWYgKGJ1ZmxlbiA8IGxlbikKLSsgICAgewotKyAgICAgIGJ1ZmxlbiA9IGxlbjsKLSsgICAgICBmaWxlX2hkci0+Y19uYW1lID0geHJlYWxsb2MgKGZpbGVfaGRyLT5jX25hbWUsIGJ1Zmxlbik7Ci0rICAgIH0KLSsKLSsgIGZpbGVfaGRyLT5jX25hbWVzaXplID0gbGVuOwotKyAgbWVtbW92ZSAoZmlsZV9oZHItPmNfbmFtZSwgbmFtZSwgbGVuKTsKLSt9Ci0rCi0gLyogRG8gd2UgaGF2ZSB0byBpZ25vcmUgYWJzb2x1dGUgcGF0aHMsIGFuZCBpZiBzbywgZG9lcyB0aGUgZmlsZW5hbWUKLS0gICBoYXZlIGFuIGFic29sdXRlIHBhdGg/ICAqLwotKyAgIGhhdmUgYW4gYWJzb2x1dGUgcGF0aD8gIEJlZm9yZSBjYWxsaW5nIHRoaXMgZnVuY3Rpb24gbWFrZSBzdXJlIHRoYXQgdGhlCi0rICAgYWxsb2NhdGVkIE5BTUUgYnVmZmVyIGhhcyBjYXBhY2l0eSBhdCBsZWFzdCAyIGJ5dGVzLiAqLwotKwotIHZvaWQKLSBjcGlvX3NhZmVyX25hbWVfc3VmZml4IChjaGFyICpuYW1lLCBib29sIGxpbmtfdGFyZ2V0LCBib29sIGFic29sdXRlX25hbWVzLAotIAkJCWJvb2wgc3RyaXBfbGVhZGluZ19kb3RzKQotQEAgLTE0MjYsNiArMTQ1MiwxMCBAQCBjcGlvX3NhZmVyX25hbWVfc3VmZml4IChjaGFyICpuYW1lLCBib29sIGxpbmtfdGFyZ2V0LCBib29sIGFic29sdXRlX25hbWVzLAotIAkgICsrcDsKLSAgICAgICB9Ci0gICBpZiAocCAhPSBuYW1lKQotKyAgICAvKiBUaGUgJ3AnIHN0cmluZyBpcyBzaG9ydGVuZWQgdmVyc2lvbiBvZiAnbmFtZScgd2l0aCBvbmUgZXhjZXB0aW9uOyAgd2hlbgotKyAgICAgICB0aGUgJ25hbWUnIHBvaW50cyB0byBhbiBlbXB0eSBzdHJpbmcgKGJ1ZmZlciB3aGVyZSBuYW1lWzBdID09ICdcMCcpIHRoZQotKyAgICAgICAncCcgdGhlbiBwb2ludHMgdG8gc3RhdGljIHN0cmluZyAiLiIuICBTbyBjYWxsZXIgbmVlZHMgdG8gZW5zdXJlIHRoZXJlCi0rICAgICAgIGFyZSBhdCBsZWFzdCB0d28gYnl0ZXMgYXZhaWxhYmxlIGluICduYW1lJyBidWZmZXIgc28gbWVtbW92ZSBzdWNjZWVkcy4gKi8KLSAgICAgbWVtbW92ZSAobmFtZSwgcCwgKHNpemVfdCkoc3RybGVuIChwKSArIDEpKTsKLSB9Ci0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvaW5vdXQuYXQgYi90ZXN0cy9pbm91dC5hdAotaW5kZXggNjBjMzcxNi4uNzMwY2JkMiAxMDA2NDQKLS0tLSBhL3Rlc3RzL2lub3V0LmF0Ci0rKysgYi90ZXN0cy9pbm91dC5hdAotQEAgLTM1LDcgKzM1LDIyIEBAIHdoaWxlIHJlYWQgTkFNRSBMRU5HVEgKLSBkbwotIAlnZW5maWxlIC0tbGVuZ3RoICRMRU5HVEggPiAkTkFNRQotIAllY2hvICROQU1FCi0tZG9uZSA8IGZpbGVsaXN0IHwKLS0gY3BpbyAtLXF1aWV0IC1vID4gYXJjaGl2ZV0pCi0rZG9uZSA8IGZpbGVsaXN0ID4gZmlsZWxpc3RfcmF3Ci0rCi0rZm9yIGZvcm1hdCBpbiBiaW4gb2RjIG5ld2MgY3JjIHRhciB1c3RhciBocGJpbiBocG9kYwotK2RvCi0rICAgIGNwaW8gLS1mb3JtYXQ9JGZvcm1hdCAtLXF1aWV0IC1vIDwgZmlsZWxpc3RfcmF3ID4gYXJjaGl2ZS4kZm9ybWF0Ci0rICAgIHJtIC1yZiBvdXRwdXQKLSsgICAgbWtkaXIgb3V0cHV0ICYmIGNkIG91dHB1dAotKyAgICBjcGlvIC1pIC0tcXVpZXQgPCAuLi9hcmNoaXZlLiRmb3JtYXQKLSsKLSsgICAgd2hpbGUgcmVhZCBmaWxlCi0rICAgIGRvCi0rICAgICAgICB0ZXN0IC1mICRmaWxlIHx8IGVjaG8gIiRmaWxlIG5vdCBmb3VuZCIKLSsgICAgZG9uZSA8IC4uL2ZpbGVsaXN0X3JhdwotKwotKyAgICBjZCAuLgotK2RvbmUKLStdKQotIAotIEFUX0NMRUFOVVAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1GaXgtQ1ZFLTIwMTUtMTE5Ny5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjEyLzAwMDEtRml4LUNWRS0yMDE1LTExOTcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVjOTk5MTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1GaXgtQ1ZFLTIwMTUtMTE5Ny5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3OCArMCwwIEBACi1Gcm9tIGRjZWU0ODlmODIxYzEyNjBhMDEzNmZjZGZkYjZmZjRkZDExMDg2YWMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgOSBEZWMgMjAxNSAxNzo1ODowMyArMDIwMAotU3ViamVjdDogW1BBVENIXSBGaXggQ1ZFLTIwMTUtMTE5NwotCi1BcHBseSBwYXRjaCBieSBWaXRlenNsYXYgQ2l6ZWsgb2YgU3VTRSB0byBmaXggQ1ZFLTIwMTUtMTE5Ny4KLVVwc3RyZWFtIGlzIGRvcm1hbnQgb3Igbm8gbG9uZ2VyIGV4aXN0aW5nLiBUbyByZXN0b3JlIHRoZSBvbGQKLWJlaGF2aW91ciB1c2UgLS1leHRyYWN0LW92ZXItc3ltbGlua3MgKENsb3NlczogIzc3NDY2OSkKLVRoaXMgaXNzdWUgaGFzIGJlZW4gZGlzY292ZXJlZCBieSBBbGV4YW5kZXIgQ2hlcmVwYW5vdi4KLUF1dGhvcjogVml0ZXpzbGF2IENpemVrIDx2Y2l6ZWtAc3VzZS5jej4KLUJ1Zy1EZWJpYW46IGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzc3NDY2OQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLUNWRTogQ1ZFLTIwMTUtMTE5NwotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLQotLS0tCi0gZG9jL2NwaW8uMSAgIHwgIDEgKwotIHNyYy9jb3B5aW4uYyB8IDYyICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKwotIHNyYy9leHRlcm4uaCB8ICAxICsKLSBzcmMvZ2xvYmFsLmMgfCAgMyArKysKLSBzcmMvbWFpbi5jICAgfCAgNyArKysrKysrCi0gNSBmaWxlcyBjaGFuZ2VkLCA3NCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9kb2MvY3Bpby4xIGIvZG9jL2NwaW8uMQotaW5kZXggMmE2ODI0MS4uZGM0Njc2YyAxMDA2NDQKLS0tLSBhL2RvYy9jcGlvLjEKLSsrKyBiL2RvYy9jcGlvLjEKLUBAIC00OSw2ICs0OSw3IEBAIGNwaW8gXC0gY29weSBmaWxlcyB0byBhbmQgZnJvbSBhcmNoaXZlcwotIFtcZkJcLVwtbm9cLXByZXNlcnZlXC1vd25lclxmUl0gW1xmQlwtXC1tZXNzYWdlPVxmSU1FU1NBR0VcZlJdCi0gW1xmQlwtXC1mb3JjZVwtbG9jYWxcZlJdIFtcZkJcLVwtbm9cLWFic29sdXRlXC1maWxlbmFtZXNcZlJdIFtcZkJcLVwtc3BhcnNlXGZSXQotIFtcZkJcLVwtb25seVwtdmVyaWZ5XC1jcmNcZlJdIFtcZkJcLVwtdG9cLXN0ZG91dFxmUl0gW1xmQlwtXC1xdWlldFxmUl0KLStbXGZCXC1cLWV4dHJhY3RcLW92ZXJcLXN5bWxpbmtzXGZSXQotIFtcZkJcLVwtcnNoXC1jb21tYW5kPVxmSUNPTU1BTkRcZlJdCi0gW1xmSXBhdHRlcm5cZlIuLi5dIFtcZkI8XGZSIFxmSWFyY2hpdmVcZlJdCi0gCi1kaWZmIC0tZ2l0IGEvc3JjL2NvcHlpbi5jIGIvc3JjL2NvcHlpbi5jCi1pbmRleCBjZGU5MTFlLi4wNTNhZmU3IDEwMDY0NAotLS0tIGEvc3JjL2NvcHlpbi5jCi0rKysgYi9zcmMvY29weWluLmMKLUBAIC02OTUsNiArNjk1LDUxIEBAIGNvcHlpbl9saW5rIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBpbnQgaW5fZmlsZV9kZXMpCi0gICBmcmVlIChsaW5rX25hbWUpOwotIH0KLSAMCi0rCi0rc3RhdGljIGludAotK3BhdGhfY29udGFpbnNfc3ltbGluayhjaGFyICpwYXRoKQotK3sKLSsgIHN0cnVjdCBzdGF0IHN0OwotKyAgY2hhciAqc2xhc2g7Ci0rICBjaGFyICpuZXh0c2xhc2g7Ci0rCi0rICAvKiB3ZSBnb3QgTlVMTCBwb2ludGVyIG9yIGVtcHR5IHN0cmluZyAqLwotKyAgaWYgKCFwYXRoIHx8ICEqcGF0aCkgewotKyAgICByZXR1cm4gZmFsc2U7Ci0rICB9Ci0rCi0rICBzbGFzaCA9IHBhdGg7Ci0rCi0rICB3aGlsZSAoKG5leHRzbGFzaCA9IHN0cmNocihzbGFzaCArIDEsICcvJykpICE9IE5VTEwpIHsKLSsgICAgc2xhc2ggPSBuZXh0c2xhc2g7Ci0rICAgICpzbGFzaCA9ICdcMCc7Ci0rCi0rICAgIGlmIChsc3RhdChwYXRoLCAmc3QpICE9IDApIHsKLSsgICAgICBpZiAoZXJybm8gPT0gRUxPT1ApIHsKLSsgICAgICAgIC8qIEVMT09QIC0gdG9vIG1hbnkgc3ltbGlua3MgKi8KLSsgICAgICAgICpzbGFzaCA9ICcvJzsKLSsgICAgICAgIHJldHVybiB0cnVlOwotKyAgICAgIH0gZWxzZSBpZiAoZXJybm8gPT0gRU5PTUVNKSB7Ci0rICAgICAgICAvKiBObyBtZW1vcnkgZm9yIGxzdGF0IC0gdGVybWluYXRlICovCi0rICAgICAgICB4YWxsb2NfZGllKCk7Ci0rICAgICAgfSBlbHNlIHsKLSsgICAgICAgIC8qIGNhbm5vdCBsc3RhdCBwYXRoIC0gZ2l2ZSB1cCAqLwotKyAgICAgICAgKnNsYXNoID0gJy8nOwotKyAgICAgICAgcmV0dXJuIGZhbHNlOwotKyAgICAgIH0KLSsgICAgfQotKwotKyAgICBpZiAoU19JU0xOSyhzdC5zdF9tb2RlKSkgewotKyAgICAgICpzbGFzaCA9ICcvJzsKLSsgICAgICByZXR1cm4gdHJ1ZTsKLSsgICAgfQotKwotKyAgICAqc2xhc2ggPSAnLyc7Ci0rICB9Ci0rCi0rICByZXR1cm4gZmFsc2U7Ci0rfQotKwotIHN0YXRpYyB2b2lkCi0gY29weWluX2ZpbGUgKHN0cnVjdCBjcGlvX2ZpbGVfc3RhdCAqZmlsZV9oZHIsIGludCBpbl9maWxlX2RlcykKLSB7Ci1AQCAtMTQ2OCw2ICsxNTEzLDIzIEBAIHByb2Nlc3NfY29weV9pbiAoKQotIAl7Ci0gCSAgLyogQ29weSB0aGUgaW5wdXQgZmlsZSBpbnRvIHRoZSBkaXJlY3Rvcnkgc3RydWN0dXJlLiAgKi8KLSAKLSsgICAgICAgICAgLyogQ2FuIHdlIHdyaXRlIGZpbGVzIG92ZXIgc3ltbGlua3M/ICovCi0rICAgICAgICAgIGlmICghZXh0cmFjdF9vdmVyX3N5bWxpbmtzKQotKyAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgIGlmIChwYXRoX2NvbnRhaW5zX3N5bWxpbmsoZmlsZV9oZHIuY19uYW1lKSkKLSsgICAgICAgICAgICAgICAgewotKyAgICAgICAgICAgICAgICAgIC8qIHNraXAgdGhlIGZpbGUgKi8KLSsgICAgICAgICAgICAgICAgICAvKgotKyAgICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiQ2FuJ3Qgd3JpdGUgb3ZlciBzeW1saW5rcy4gU2tpcHBpbmcgJXNcbiIsIGZpbGVfaGRyLmNfbmFtZSk7Ci0rICAgICAgICAgICAgICAgICAgdGFwZV90b3NzX2lucHV0IChpbl9maWxlX2RlcywgZmlsZV9oZHIuY19maWxlc2l6ZSk7Ci0rICAgICAgICAgICAgICAgICAgdGFwZV9za2lwX3BhZGRpbmcgKGluX2ZpbGVfZGVzLCBmaWxlX2hkci5jX2ZpbGVzaXplKTsKLSsgICAgICAgICAgICAgICAgICBjb250aW51ZTsKLSsgICAgICAgICAgICAgICAgICAqLwotKyAgICAgICAgICAgICAgICAgIC8qIHRlcm1pbmF0ZSAqLwotKwkgICAgICAgICAgZXJyb3IgKDEsIDAsIF8oIkNhbid0IHdyaXRlIG92ZXIgc3ltbGlua3M6ICVzXG4iKSwgZmlsZV9oZHIuY19uYW1lKTsKLSsgICAgICAgICAgICAgICAgfQotKyAgICAgICAgICAgIH0KLSsKLSAJICAvKiBEbyB3ZSBuZWVkIHRvIHJlbmFtZSB0aGUgZmlsZT8gKi8KLSAJICBpZiAocmVuYW1lX2ZsYWcgfHwgcmVuYW1lX2JhdGNoX2ZpbGUpCi0gCSAgICB7Ci1kaWZmIC0tZ2l0IGEvc3JjL2V4dGVybi5oIGIvc3JjL2V4dGVybi5oCi1pbmRleCBlMjdkNjYyLi5kODY0YmRlIDEwMDY0NAotLS0tIGEvc3JjL2V4dGVybi5oCi0rKysgYi9zcmMvZXh0ZXJuLmgKLUBAIC05Niw2ICs5Niw3IEBAIGV4dGVybiBjaGFyIGlucHV0X2lzX3NwZWNpYWw7Ci0gZXh0ZXJuIGNoYXIgb3V0cHV0X2lzX3NwZWNpYWw7Ci0gZXh0ZXJuIGNoYXIgaW5wdXRfaXNfc2Vla2FibGU7Ci0gZXh0ZXJuIGNoYXIgb3V0cHV0X2lzX3NlZWthYmxlOwotK2V4dGVybiBib29sIGV4dHJhY3Rfb3Zlcl9zeW1saW5rczsKLSBleHRlcm4gaW50ICgqeHN0YXQpICgpOwotIGV4dGVybiB2b2lkICgqY29weV9mdW5jdGlvbikgKCk7Ci0gZXh0ZXJuIGNoYXIgKmNoYW5nZV9kaXJlY3Rvcnlfb3B0aW9uOwotZGlmZiAtLWdpdCBhL3NyYy9nbG9iYWwuYyBiL3NyYy9nbG9iYWwuYwotaW5kZXggNTdlNTA1YS4uMzM2ZmNlNCAxMDA2NDQKLS0tLSBhL3NyYy9nbG9iYWwuYwotKysrIGIvc3JjL2dsb2JhbC5jCi1AQCAtMTg3LDYgKzE4Nyw5IEBAIGJvb2wgdG9fc3Rkb3V0X29wdGlvbiA9IGZhbHNlOwotIC8qIFRoZSBuYW1lIHRoaXMgcHJvZ3JhbSB3YXMgcnVuIHdpdGguICAqLwotIGNoYXIgKnByb2dyYW1fbmFtZTsKLSAKLSsvKiBFeHRyYWN0IGZpbGVzIG92ZXIgc3ltYm9saWMgbGlua3MgKi8KLStib29sIGV4dHJhY3Rfb3Zlcl9zeW1saW5rczsKLSsKLSAvKiBBIHBvaW50ZXIgdG8gZWl0aGVyIGxzdGF0IG9yIHN0YXQsIGRlcGVuZGluZyBvbiB3aGV0aGVyCi0gICAgZGVyZWZlcmVuY2luZyBvZiBzeW1saW5rcyBpcyBkb25lIGZvciBpbnB1dCBmaWxlcy4gICovCi0gaW50ICgqeHN0YXQpICgpOwotZGlmZiAtLWdpdCBhL3NyYy9tYWluLmMgYi9zcmMvbWFpbi5jCi1pbmRleCBhMTM4NjFmLi44N2NiMzA5IDEwMDY0NAotLS0tIGEvc3JjL21haW4uYwotKysrIGIvc3JjL21haW4uYwotQEAgLTU5LDYgKzU5LDcgQEAgZW51bSBjcGlvX29wdGlvbnMgewotICAgREVCVUdfT1BUSU9OLCAgICAgICAgICAgICAgICAgIAotICAgQkxPQ0tfU0laRV9PUFRJT04sICAgICAgICAgICAgIAotICAgVE9fU1RET1VUX09QVElPTiwKLSsgIEVYVFJBQ1RfT1ZFUl9TWU1MSU5LUywKLSAgIFJFTlVNQkVSX0lOT0RFU19PUFRJT04sCi0gICBJR05PUkVfREVWTk9fT1BUSU9OLAotICAgREVWSUNFX0lOREVQRU5ERU5UX09QVElPTgotQEAgLTI0Myw2ICsyNDQsOCBAQCBzdGF0aWMgc3RydWN0IGFyZ3Bfb3B0aW9uIG9wdGlvbnNbXSA9IHsKLSAgICBOXygiQ3JlYXRlIGxlYWRpbmcgZGlyZWN0b3JpZXMgd2hlcmUgbmVlZGVkIiksIEdSSUQrMSB9LAotICAgeyJuby1wcmVzZXJ2ZS1vd25lciIsIE5PX1BSRVNFUlZFX09XTkVSX09QVElPTiwgMCwgMCwKLSAgICBOXygiRG8gbm90IGNoYW5nZSB0aGUgb3duZXJzaGlwIG9mIHRoZSBmaWxlcyIpLCBHUklEKzEgfSwKLSsgIHsiZXh0cmFjdC1vdmVyLXN5bWxpbmtzIiwgRVhUUkFDVF9PVkVSX1NZTUxJTktTLCAwLCAwLAotKyAgIE5fKCJGb3JjZSB3cml0aW5nIG92ZXIgc3ltYm9saWMgbGlua3MiKSwgR1JJRCsxIH0sCi0gICB7InVuY29uZGl0aW9uYWwiLCAndScsIE5VTEwsIDAsCi0gICAgTl8oIlJlcGxhY2UgYWxsIGZpbGVzIHVuY29uZGl0aW9uYWxseSIpLCBHUklEKzEgfSwKLSAgIHsic3BhcnNlIiwgU1BBUlNFX09QVElPTiwgTlVMTCwgMCwKLUBAIC00MzIsNiArNDM1LDEwIEBAIGNyYyBuZXdjIG9kYyBiaW4gdXN0YXIgdGFyIChhbGwtY2FwcyBhbHNvIHJlY29nbml6ZWQpIiksIGFyZykpOwotICAgICAgIG5vX2Nob3duX2ZsYWcgPSB0cnVlOwotICAgICAgIGJyZWFrOwotIAotKyAgICBjYXNlIEVYVFJBQ1RfT1ZFUl9TWU1MSU5LUzogICAgICAgICAgICAgICAgICAgICAgICAvKiAtLWV4dHJhY3Qtb3Zlci1zeW1saW5rcyAqLwotKyAgICAgIGV4dHJhY3Rfb3Zlcl9zeW1saW5rcyA9IHRydWU7Ci0rICAgICAgYnJlYWs7Ci0rCi0gICAgIGNhc2UgJ28nOgkJLyogQ29weS1vdXQgbW9kZS4gICovCi0gICAgICAgaWYgKGNvcHlfZnVuY3Rpb24gIT0gMCkKLSAJVVNBR0VfRVJST1IgKCgwLCAwLCBfKCJNb2RlIGFscmVhZHkgZGVmaW5lZCIpKSk7Ci0tLSAKLTIuNi4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjEyLzAwMDEtRml4LXNlZ2ZhdWx0LXdpdGgtYXBwZW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1GaXgtc2VnZmF1bHQtd2l0aC1hcHBlbmQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVjOGIzMDMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvLTIuMTIvMDAwMS1GaXgtc2VnZmF1bHQtd2l0aC1hcHBlbmQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1MSArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDMyZDk1ZmUwYzkwYzU5MzUyYTBjZTMxMDJmYzk4NjZjYmZiMGY2MjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBTZXJnZXkgUG96bnlha29mZiA8Z3JheUBnbnUub3JnPgotRGF0ZTogU2F0LCAxIERlYyAyMDE4IDExOjQwOjAyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBzaWdmYXVsdCB3aGVuIGFwcGVuZGluZyB0byBhcmNoaXZlCi0KLUJ1ZyByZXBvcnRlZCBieSBSb3NzIEJ1cnRvbi4gU2VlCi08aHR0cDovL2xpc3RzLmdudS5vcmcvYXJjaGl2ZS9odG1sL2J1Zy1jcGlvLzIwMTgtMTEvbXNnMDAwMDAuaHRtbD4KLQotKiBzcmMvdXRpbC5jOiBLZWVwIHN0YXRpYyBjb3B5IG9mIHRoZSBidWZmZXIgcG9pbnRlcjsgYWx3YXlzCi1hc3NpZ24gaXQgdG8gZmlsZV9oZHItPmNfbmFtZS4gVXNlIHgycmVhbGxvYyBmb3IgbWVtb3J5IG1hbmFnZW1lbnQuCi0tLS0KLSBzcmMvdXRpbC5jIHwgMTcgKysrKy0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAxMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3NyYy91dGlsLmMgYi9zcmMvdXRpbC5jCi1pbmRleCAxMDQ4NmRjLi40ZTQ5MTI0IDEwMDY0NAotLS0tIGEvc3JjL3V0aWwuYwotKysrIGIvc3JjL3V0aWwuYwotQEAgLTE0MTMsMjIgKzE0MTMsMTMgQEAgc2V0X2ZpbGVfdGltZXMgKGludCBmZCwKLSB2b2lkCi0gY3Bpb19zZXRfY19uYW1lIChzdHJ1Y3QgY3Bpb19maWxlX3N0YXQgKmZpbGVfaGRyLCBjaGFyICpuYW1lKQotIHsKLSsgIHN0YXRpYyBjaGFyICpidWYgPSBOVUxMOwotICAgc3RhdGljIHNpemVfdCBidWZsZW4gPSAwOwotICAgc2l6ZV90IGxlbiA9IHN0cmxlbiAobmFtZSkgKyAxOwotIAotLSAgaWYgKGJ1ZmxlbiA9PSAwKQotLSAgICB7Ci0tICAgICAgYnVmbGVuID0gbGVuOwotLSAgICAgIGlmIChidWZsZW4gPCAzMikKLS0gICAgICAgIGJ1ZmxlbiA9IDMyOwotLSAgICAgIGZpbGVfaGRyLT5jX25hbWUgPSB4bWFsbG9jIChidWZsZW4pOwotLSAgICB9Ci0tICBlbHNlIGlmIChidWZsZW4gPCBsZW4pCi0tICAgIHsKLS0gICAgICBidWZsZW4gPSBsZW47Ci0tICAgICAgZmlsZV9oZHItPmNfbmFtZSA9IHhyZWFsbG9jIChmaWxlX2hkci0+Y19uYW1lLCBidWZsZW4pOwotLSAgICB9Ci0tCi0rICB3aGlsZSAoYnVmbGVuIDwgbGVuKQotKyAgICBidWYgPSB4MnJlYWxsb2MgKGJ1ZiwgJmJ1Zmxlbik7Ci0rICBmaWxlX2hkci0+Y19uYW1lID0gYnVmOwotICAgZmlsZV9oZHItPmNfbmFtZXNpemUgPSBsZW47Ci0gICBtZW1tb3ZlIChmaWxlX2hkci0+Y19uYW1lLCBuYW1lLCBsZW4pOwotIH0KLS0tIAotMi4xOC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpby0yLjEyLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMi8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW8tMi4xMy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcGlvL2NwaW9fMi4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpb18yLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNzEzYmYwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpb18yLjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTEgKzAsMCBAQAotU1VNTUFSWSA9ICJHTlUgY3BpbyBpcyBhIHByb2dyYW0gdG8gbWFuYWdlIGFyY2hpdmVzIG9mIGZpbGVzIgotREVTQ1JJUFRJT04gPSAiR05VIGNwaW8gaXMgYSB0b29sIGZvciBjcmVhdGluZyBhbmQgZXh0cmFjdGluZyBhcmNoaXZlcywgb3IgY29weWluZyBmaWxlcyBmcm9tIG9uZSBwbGFjZSB0byBcCi1hbm90aGVyLiBJdCBoYW5kbGVzIGEgbnVtYmVyIG9mIGNwaW8gZm9ybWF0cyBhcyB3ZWxsIGFzIHJlYWRpbmcgYW5kIHdyaXRpbmcgdGFyIGZpbGVzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9jcGlvLyIKLVNFQ1RJT04gPSAiYmFzZSIKLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMjdkZWZlMWU5NmMyZTFlY2Q0ZTBjOWJlODk2Nzk0OSIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2NwaW8vY3Bpby0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1DVkUtMjAxNS0xMTk3LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQ1ZFLTIwMTYtMjAzNy0xLWJ5dGUtb3V0LW9mLWJvdW5kcy13cml0ZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1zZWdmYXVsdC13aXRoLWFwcGVuZC5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImZjMjA3NTYxYTg2YjYzODYyZWVhNGI4MzAwMzEzZTg2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA4YTM1ZTkyZGViM2M4NWQyNjlhMDA1OWEyN2Q0MTQwYTk2NjdhNjM2OTQ1OTI5OWQwOGMxN2Y3MTNhOTJlNzMiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbwotCi1FWFRSQV9PRUNPTkYgKz0gIkRFRkFVTFRfUk1UX0RJUj0ke3NiaW5kaXJ9IgotCi1kb19pbnN0YWxsICgpIHsKLSAgICBhdXRvdG9vbHNfZG9faW5zdGFsbAotICAgIGlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9LwotICAgICAgICBtdiAiJHtEfSR7YmluZGlyfS9jcGlvIiAiJHtEfSR7YmFzZV9iaW5kaXJ9L2NwaW8iCi0gICAgICAgIHJtZGlyICR7RH0ke2JpbmRpcn0vCi0gICAgZmkKLQotICAgICMgQXZvaWQgY29uZmxpY3RzIHdpdGggdGhlIHZlcnNpb24gZnJvbSB0YXIKLSAgICBtdiAiJHtEfSR7bWFuZGlyfS9tYW44L3JtdC44IiAiJHtEfSR7bWFuZGlyfS9tYW44L3JtdC1jcGlvLjgiCi19Ci0KLVBBQ0tBR0VTID0rICIke1BOfS1ybXQiCi0KLUZJTEVTXyR7UE59LXJtdCA9ICIke3NiaW5kaXJ9L3JtdCoiCi0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLUFMVEVSTkFUSVZFXyR7UE59ID0gImNwaW8iCi1BTFRFUk5BVElWRV8ke1BOfS1ybXQgPSAicm10IgotCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbY3Bpb10gPSAiJHtiYXNlX2JpbmRpcn0vY3BpbyIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFlbcm10XSA9ICI1MCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtybXRdID0gIiR7c2JpbmRpcn0vcm10IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpb18yLjEzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Bpby9jcGlvXzIuMTMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWNlYThjNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2NwaW8vY3Bpb18yLjEzLmJiCkBAIC0wLDAgKzEsNDggQEAKK1NVTU1BUlkgPSAiR05VIGNwaW8gaXMgYSBwcm9ncmFtIHRvIG1hbmFnZSBhcmNoaXZlcyBvZiBmaWxlcyIKK0RFU0NSSVBUSU9OID0gIkdOVSBjcGlvIGlzIGEgdG9vbCBmb3IgY3JlYXRpbmcgYW5kIGV4dHJhY3RpbmcgYXJjaGl2ZXMsIG9yIGNvcHlpbmcgZmlsZXMgZnJvbSBvbmUgcGxhY2UgdG8gXAorYW5vdGhlci4gSXQgaGFuZGxlcyBhIG51bWJlciBvZiBjcGlvIGZvcm1hdHMgYXMgd2VsbCBhcyByZWFkaW5nIGFuZCB3cml0aW5nIHRhciBmaWxlcy4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvY3Bpby8iCitTRUNUSU9OID0gImJhc2UiCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjI3ZGVmZTFlOTZjMmUxZWNkNGUwYzliZTg5Njc5NDkiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9jcGlvL2NwaW8tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIzODljNTQ1MmQ2NjdjMjNiNWVjZWIyMDZmNTAwMDgxMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlODc0NzBkOWM5ODQzMTdmNjU4NTY3YzAzYmZlZmI2YjBjODI5ZmYxN2RiZjZiMGRlNDhkNzFhNGM4ZjNkYjg4IgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8KKworRVhUUkFfT0VDT05GICs9ICJERUZBVUxUX1JNVF9ESVI9JHtzYmluZGlyfSIKKworZG9faW5zdGFsbCAoKSB7CisgICAgYXV0b3Rvb2xzX2RvX2luc3RhbGwKKyAgICBpZiBbICIke2Jhc2VfYmluZGlyfSIgIT0gIiR7YmluZGlyfSIgXTsgdGhlbgorICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfS8KKyAgICAgICAgbXYgIiR7RH0ke2JpbmRpcn0vY3BpbyIgIiR7RH0ke2Jhc2VfYmluZGlyfS9jcGlvIgorICAgICAgICBybWRpciAke0R9JHtiaW5kaXJ9LworICAgIGZpCisKKyAgICAjIEF2b2lkIGNvbmZsaWN0cyB3aXRoIHRoZSB2ZXJzaW9uIGZyb20gdGFyCisgICAgbXYgIiR7RH0ke21hbmRpcn0vbWFuOC9ybXQuOCIgIiR7RH0ke21hbmRpcn0vbWFuOC9ybXQtY3Bpby44IgorfQorCitQQUNLQUdFUyA9KyAiJHtQTn0tcm10IgorCitGSUxFU18ke1BOfS1ybXQgPSAiJHtzYmluZGlyfS9ybXQqIgorCitpbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJjcGlvIgorQUxURVJOQVRJVkVfJHtQTn0tcm10ID0gInJtdCIKKworQUxURVJOQVRJVkVfTElOS19OQU1FW2NwaW9dID0gIiR7YmFzZV9iaW5kaXJ9L2NwaW8iCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3JtdF0gPSAiNTAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcm10XSA9ICIke3NiaW5kaXJ9L3JtdCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3JvbmllL2Nyb25pZV8xLjUuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDM1YzY2Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS40LmJiCisrKyAvZGV2L251bGwKQEAgLTEsODMgKzAsMCBAQAotU1VNTUFSWSA9ICJDcm9uIGRhZW1vbiBmb3IgZXhlY3V0aW5nIHByb2dyYW1zIGF0IHNldCB0aW1lcyIKLURFU0NSSVBUSU9OID0gIkNyb25pZSBjb250YWlucyB0aGUgc3RhbmRhcmQgVU5JWCBkYWVtb24gY3JvbmQgdGhhdCBydW5zIFwKLXNwZWNpZmllZCBwcm9ncmFtcyBhdCBzY2hlZHVsZWQgdGltZXMgYW5kIHJlbGF0ZWQgdG9vbHMuIEl0IGlzIGJhc2VkIG9uIHRoZSBcCi1vcmlnaW5hbCBjcm9uIGFuZCBoYXMgc2VjdXJpdHkgYW5kIGNvbmZpZ3VyYXRpb24gZW5oYW5jZW1lbnRzIGxpa2UgdGhlIFwKLWFiaWxpdHkgdG8gdXNlIHBhbSBhbmQgU0VMaW51eC4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3JvbmllLWNyb25kL2Nyb25pZS8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbSIKLQotIyBJbnRlcm5ldCBTeXN0ZW1zIENvbnNvcnRpdW0gTGljZW5zZQotTElDRU5TRSA9ICJJU0MgJiBCU0QtMy1DbGF1c2UgJiBCU0QtMi1DbGF1c2UgJiBHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kZDJhNTkyMTcwNzYwZTEzODZjNzY5ZTEwNDNiMzcyMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvY3Jvbi5jO2VuZGxpbmU9MjA7bWQ1PWI0MjVjMzM0MjY1MDI2MTc3MTI4MzUzYTE0MjYzM2I0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9wb3Blbi5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MzE7bWQ1PWVkZDUwNzQyZDhkZWY3MTJlOTQ3MmRiYTM1MzY2OGE5IgotCi1TRUNUSU9OID0gInV0aWxzIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Nyb25pZS1jcm9uZC8ke0JQTn0vcmVsZWFzZXMvIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9jcm9uaWUtY3JvbmQvY3JvbmllL3JlbGVhc2VzL2Rvd25sb2FkL2Nyb25pZS0ke1BWfS1maW5hbC9jcm9uaWUtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2Nyb25kLmluaXQgXAotICAgICAgICAgICBmaWxlOi8vY3JvbnRhYiBcCi0gICAgICAgICAgIGZpbGU6Ly9jcm9uZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IgotCi1QQU1fU1JDX1VSSSA9ICJmaWxlOi8vY3JvbmRfcGFtX2NvbmZpZy5wYXRjaCIKLVBBTV9ERVBTID0gImxpYnBhbSBsaWJwYW0tcnVudGltZSBwYW0tcGx1Z2luLWFjY2VzcyBwYW0tcGx1Z2luLWxvZ2ludWlkIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMjAyMzNiOTY5OTdlMTdhMTQyZTFmYmUwZDdjZTgyMjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWY4OTcwNTU5Y2FkNDI2MmY4ZmZkN2VjNzJhYmY2ODJkMmRjY2UwNGZkZmI4ZjIwNmE3MWQ5NjU2NmFiYTg4MiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgdXNlcmFkZCBzeXN0ZW1kCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLS13aXRoLWF1ZGl0LC0td2l0aG91dC1hdWRpdCxhdWRpdCwiCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiLS13aXRoLXBhbSwtLXdpdGhvdXQtcGFtLGxpYnBhbSwke1BBTV9ERVBTfSIKLQotSU5JVFNDUklQVF9OQU1FID0gImNyb25kIgotSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgOTAgMiAzIDQgNSAuIHN0b3AgNjAgMCAxIDYgLiIKLQotVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKLUdST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIGNyb250YWIiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjcm9uZC5zZXJ2aWNlIgotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCi0JaW5zdGFsbCAtbSAwNjQ0ICR7U30vY3JvbmQuc3lzY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9jcm9uZAotCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2Nyb25kLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Nyb25kCi0KLQkjIGluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGVzCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Nyb25kLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCi0JICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vY3JvbmQuc2VydmljZQotCi0JIyBiZWxvdyBhcmUgbmVjZXNzYXJ5IGZvciBhIGNvbXBsZXRlIGNyb24gZW52aXJvbm1lbnQKLQlpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KLQlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9jcm9udGFiICR7RH0ke3N5c2NvbmZkaXJ9LwotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZAotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uaG91cmx5Ci0JbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseQotCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24ud2Vla2x5Ci0JbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5tb250aGx5Ci0JdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kZW55Ci0KLQkjIGJlbG93IHNldHRpbmcgaXMgbmVjZXNzYXJ5IHRvIGFsbG93IG5vcm1hbCB1c2VyIHVzaW5nIGNyb250YWIKLQotCSMgc2V0Z2lkIGZvciBjcm9udGFiIGJpbmFyeQotCWNob3duIHJvb3Q6Y3JvbnRhYiAke0R9JHtiaW5kaXJ9L2Nyb250YWIKLQljaG1vZCAyNzU1ICR7RH0ke2JpbmRpcn0vY3JvbnRhYgotCi0JIyBhbGxvdyAnY3JvbnRhYicgZ3JvdXAgd3JpdGUgdG8gL3Zhci9zcG9vbC9jcm9uCi0JY2hvd24gcm9vdDpjcm9udGFiICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KLQljaG1vZCA3NzAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvY3JvbgotCi0JY2htb2QgNjAwICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb250YWIKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbioiCi1DT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbnRhYiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Nyb25pZS9jcm9uaWVfMS41LjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS41LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBkZWY0YTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jcm9uaWUvY3JvbmllXzEuNS41LmJiCkBAIC0wLDAgKzEsODQgQEAKK1NVTU1BUlkgPSAiQ3JvbiBkYWVtb24gZm9yIGV4ZWN1dGluZyBwcm9ncmFtcyBhdCBzZXQgdGltZXMiCitERVNDUklQVElPTiA9ICJDcm9uaWUgY29udGFpbnMgdGhlIHN0YW5kYXJkIFVOSVggZGFlbW9uIGNyb25kIHRoYXQgcnVucyBcCitzcGVjaWZpZWQgcHJvZ3JhbXMgYXQgc2NoZWR1bGVkIHRpbWVzIGFuZCByZWxhdGVkIHRvb2xzLiBJdCBpcyBiYXNlZCBvbiB0aGUgXAorb3JpZ2luYWwgY3JvbiBhbmQgaGFzIHNlY3VyaXR5IGFuZCBjb25maWd1cmF0aW9uIGVuaGFuY2VtZW50cyBsaWtlIHRoZSBcCithYmlsaXR5IHRvIHVzZSBwYW0gYW5kIFNFTGludXguIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2Nyb25pZS1jcm9uZC9jcm9uaWUvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLnJlZGhhdC5jb20iCisKKyMgSW50ZXJuZXQgU3lzdGVtcyBDb25zb3J0aXVtIExpY2Vuc2UKK0xJQ0VOU0UgPSAiSVNDICYgQlNELTMtQ2xhdXNlICYgQlNELTItQ2xhdXNlICYgR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGQyYTU5MjE3MDc2MGUxMzg2Yzc2OWUxMDQzYjM3MjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2Nyb24uYztlbmRsaW5lPTIwO21kNT1iNDI1YzMzNDI2NTAyNjE3NzEyODM1M2ExNDI2MzNiNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvcG9wZW4uYztiZWdpbmxpbmU9MztlbmRsaW5lPTMxO21kNT1lZGQ1MDc0MmQ4ZGVmNzEyZTk0NzJkYmEzNTM2NjhhOSIKKworU0VDVElPTiA9ICJ1dGlscyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9jcm9uaWUtY3JvbmQvJHtCUE59L3JlbGVhc2VzLyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vY3JvbmllLWNyb25kL2Nyb25pZS9yZWxlYXNlcy9kb3dubG9hZC9jcm9uaWUtJHtQVn0vY3JvbmllLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9jcm9uZC5pbml0IFwKKyAgICAgICAgICAgZmlsZTovL2Nyb250YWIgXAorICAgICAgICAgICBmaWxlOi8vY3JvbmQuc2VydmljZSBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJyR7UEFNX1NSQ19VUkl9JywgJycsIGQpfSIKKworUEFNX1NSQ19VUkkgPSAiZmlsZTovL2Nyb25kX3BhbV9jb25maWcucGF0Y2giCitQQU1fREVQUyA9ICJsaWJwYW0gbGlicGFtLXJ1bnRpbWUgcGFtLXBsdWdpbi1hY2Nlc3MgcGFtLXBsdWdpbi1sb2dpbnVpZCIKKworU1JDX1VSSVttZDVzdW1dID0gIjM1MWEzN2QwYjViZDAxNDQ4MTY3MjRiNDQ4Mjc0N2FkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJlMzRjNzk1MDVlNTU0NDMyMzI4MTg1NDc0NGI5OTU1ZmYxNmIxNjBlZTU2OWY5ZGY3YzBkZGRhZTU3MjBlYWMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHVzZXJhZGQgc3lzdGVtZAorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbYXVkaXRdID0gIi0td2l0aC1hdWRpdCwtLXdpdGhvdXQtYXVkaXQsYXVkaXQsIgorUEFDS0FHRUNPTkZJR1twYW1dID0gIi0td2l0aC1wYW0sLS13aXRob3V0LXBhbSxsaWJwYW0sJHtQQU1fREVQU30iCitQQUNLQUdFQ09ORklHW2FuYWNyb25dID0gIi0tZW5hYmxlLWFuYWNyb24sLS1kaXNhYmxlLWFuYWNyb24sYW5hY3JvbiIKKworSU5JVFNDUklQVF9OQU1FID0gImNyb25kIgorSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgOTAgMiAzIDQgNSAuIHN0b3AgNjAgMCAxIDYgLiIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gIi0tc3lzdGVtIGNyb250YWIiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJjcm9uZC5zZXJ2aWNlIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcvCisJaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvCisJaW5zdGFsbCAtbSAwNjQ0ICR7U30vY3JvbmQuc3lzY29uZmlnICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9jcm9uZAorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2Nyb25kLmluaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2Nyb25kCisKKwkjIGluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGVzCisJaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2Nyb25kLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlzZWQgLWkgLWUgJ3MsQEJBU0VfQklORElSQCwke2Jhc2VfYmluZGlyfSxnJyBcCisJICAgICAgIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkgICAgICAgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vY3JvbmQuc2VydmljZQorCisJIyBiZWxvdyBhcmUgbmVjZXNzYXJ5IGZvciBhIGNvbXBsZXRlIGNyb24gZW52aXJvbm1lbnQKKwlpbnN0YWxsIC1kICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KKwlpbnN0YWxsIC1tIDA3NTUgJHtXT1JLRElSfS9jcm9udGFiICR7RH0ke3N5c2NvbmZkaXJ9LworCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uZAorCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24uaG91cmx5CisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kYWlseQorCW1rZGlyIC1wICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb24ud2Vla2x5CisJbWtkaXIgLXAgJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5tb250aGx5CisJdG91Y2ggJHtEfSR7c3lzY29uZmRpcn0vY3Jvbi5kZW55CisKKwkjIGJlbG93IHNldHRpbmcgaXMgbmVjZXNzYXJ5IHRvIGFsbG93IG5vcm1hbCB1c2VyIHVzaW5nIGNyb250YWIKKworCSMgc2V0Z2lkIGZvciBjcm9udGFiIGJpbmFyeQorCWNob3duIHJvb3Q6Y3JvbnRhYiAke0R9JHtiaW5kaXJ9L2Nyb250YWIKKwljaG1vZCAyNzU1ICR7RH0ke2JpbmRpcn0vY3JvbnRhYgorCisJIyBhbGxvdyAnY3JvbnRhYicgZ3JvdXAgd3JpdGUgdG8gL3Zhci9zcG9vbC9jcm9uCisJY2hvd24gcm9vdDpjcm9udGFiICR7RH0ke2xvY2Fsc3RhdGVkaXJ9L3Nwb29sL2Nyb24KKwljaG1vZCA3NzAgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vc3Bvb2wvY3JvbgorCisJY2htb2QgNjAwICR7RH0ke3N5c2NvbmZkaXJ9L2Nyb250YWIKK30KKworRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbioiCitDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0vY3JvbnRhYiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMuaW5jCmluZGV4IDIxNDljYmUuLmUzODlkOGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLmluYwpAQCAtNSwxNCArNSwxNiBAQAogZG9jdW1lbnQgdHlwZXMuIgogSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuY3Vwcy5vcmcvIgogU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2MiIKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKIERFUEVORFMgPSAiZ251dGxzIGxpYnBuZyBqcGVnIGRidXMgemxpYiBsaWJ1c2IxIgogCiBTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hcHBsZS9jdXBzL3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQfS1zb3VyY2UudGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL3VzZV9lY2hvX29ubHlfaW5faW5pdC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2N1cHNfc2VydmVyYmluLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2N1cHMtYXZvaWQtaW5zdGFsbC1maWxlLWNvbmZsaWN0cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXVzZS1lY2hvLW9ubHktaW4taW5pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtY3Vwc18xLjQuNi5iYi1GaXgtYnVpbGQtb24tcHBjNjQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1jdXBzLWZpeC1tdWx0aWxpYi1pbnN0YWxsLWZpbGUtY29uZmxpY3RzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3ZvbGF0aWxlcy45OV9jdXBzIFwKKyAgICAgICAgICAgZmlsZTovL2N1cHMtdm9sYXRpbGVzLmNvbmYgXAogICAgICAgICAgICAiCiAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYXBwbGUvY3Vwcy9yZWxlYXNlcyIKQEAgLTIyLDcgKzI0LDcgQEAKIAogQ0xFQU5CUk9LRU4gPSAiMSIKIAotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGJpbmNvbmZpZyB1c2VyYWRkIHN5c3RlbWQgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgYmluY29uZmlnIHVzZXJhZGQgc3lzdGVtZCBwa2djb25maWcgbXVsdGlsaWJfc2NyaXB0CiAKIFVTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCiBHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSBscGFkbWluIgpAQCAtNDUsMTAgKzQ3LDYgQEAKICAgICAgICAgICAgICAgIC0tZW5hYmxlLWRlYnVnIFwKICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1yZWxybyBcCiAgICAgICAgICAgICAgICAtLWVuYWJsZS1saWJ1c2IgXAotICAgICAgICAgICAgICAgLS13aXRob3V0LXBocCBcCi0gICAgICAgICAgICAgICAtLXdpdGhvdXQtcGVybCBcCi0gICAgICAgICAgICAgICAtLXdpdGhvdXQtcHl0aG9uIFwKLSAgICAgICAgICAgICAgIC0td2l0aG91dC1qYXZhIFwKICAgICAgICAgICAgICAgIERTT0ZMQUdTPScke0xERkxBR1N9JyBcCiAgICAgICAgICAgICAgICAiCiAKQEAgLTcxLDYgKzY5LDcgQEAKIAogCSMgUmVtb3ZlIC92YXIvcnVuIGZyb20gcGFja2FnZSBhcyBjdXBzZCB3aWxsIHBvcHVsYXRlIGl0IG9uIHN0YXJ0dXAKIAlybSAtZnIgJHtEfS8ke2xvY2Fsc3RhdGVkaXJ9L3J1bgorCXJtIC1mciAke0R9LyR7bG9jYWxzdGF0ZWRpcn0vbG9nCiAJcm1kaXIgJHtEfS8ke2xpYmV4ZWNkaXJ9LyR7QlBOfS9kcml2ZXIKIAogCSMgRml4IHRoZSBwYW0gY29uZmlndXJhdGlvbiBmaWxlIHBlcm1pc3Npb25zCkBAIC04MiwxOCArODEsMjAgQEAKIAlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdmluaXQnLCdmYWxzZScsJ3RydWUnLGQpfTsgdGhlbgogCSAgICBybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kLwogCSAgICBybSAtcmYgJHtEfSR7c3lzY29uZmRpcn0vcmMqCisJICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vdG1wZmlsZXMuZAorCSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9jdXBzLXZvbGF0aWxlcy5jb25mIFwKKwkJICAgICR7RH0ke3N5c2NvbmZkaXJ9L3RtcGZpbGVzLmQvY3Vwcy5jb25mCisJZWxzZQorCSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzCisJICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3ZvbGF0aWxlcy45OV9jdXBzIFwKKwkJICAgICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvdm9sYXRpbGVzLzk5X2N1cHMKIAlmaQogfQogCiBQQUNLQUdFUyA9KyAiJHtQTn0tbGliICR7UE59LWxpYmltYWdlIgogCiBSREVQRU5EU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICdwcm9jcHMnLCAnJywgZCl9IgotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9jdXBzL2JhY2tlbmQgXAotCQkke2xpYmRpcn0vY3Vwcy9jZ2ktYmluIFwKLQkJJHtsaWJkaXJ9L2N1cHMvZmlsdGVyIFwKLQkJJHtsaWJkaXJ9L2N1cHMvbW9uaXRvciBcCi0JCSR7bGliZGlyfS9jdXBzL25vdGlmaWVyIFwKLQkJJHtsaWJkaXJ9L2N1cHMvZGFlbW9uIFwKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmV4ZWNkaXJ9L2N1cHMvIFwKIAkgICAgICAgIgogCiBGSUxFU18ke1BOfS1saWIgPSAiJHtsaWJkaXJ9L2xpYmN1cHMuc28uKiIKQEAgLTEwOSw3ICsxMTAsOSBAQAogICAgICAgICAgICAgICAgIgogQ09ORkZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9L2N1cHMvY3Vwc2QuY29uZiIKIAorTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfS1kZXY6JHtiaW5kaXJ9L2N1cHMtY29uZmlnIgorCiBTWVNST09UX1BSRVBST0NFU1NfRlVOQ1MgKz0gImN1cHNfc3lzcm9vdF9wcmVwcm9jZXNzIgogY3Vwc19zeXNyb290X3ByZXByb2Nlc3MgKCkgewotCXNlZCAtaSAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L2N1cHMtY29uZmlnIC1lICdzOmN1cHNfZGF0YWRpcj0uKjpjdXBzX2RhdGFkaXI9JHtkYXRhZGlyfS9jdXBzOicgLWUgJ3M6Y3Vwc19zZXJ2ZXJiaW49Lio6Y3Vwc19zZXJ2ZXJiaW49JHtsaWJkaXJ9L2N1cHM6JworCXNlZCAtaSAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcl9jcm9zc3NjcmlwdHN9L2N1cHMtY29uZmlnIC1lICdzOmN1cHNfZGF0YWRpcj0uKjpjdXBzX2RhdGFkaXI9JHtkYXRhZGlyfS9jdXBzOicgLWUgJ3M6Y3Vwc19zZXJ2ZXJiaW49Lio6Y3Vwc19zZXJ2ZXJiaW49JHtsaWJleGVjZGlyfS9jdXBzOicKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAxLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1nZW5lcmF0ZWQtYmluYXJpZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2YTY5ZjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtZG9uLXQtdHJ5LXRvLXJ1bi1nZW5lcmF0ZWQtYmluYXJpZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIDFmYjA3MTYyYTllZDE4N2NjY2YwNmUzNGM5YmY4NDFkMTVjNmU2NGUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotRGF0ZTogU3VuLCAzMCBKYW4gMjAxMSAxNjozNzoyNyArMDEwMAotU3ViamVjdDogW1BBVENIXSBkb24ndCB0cnkgdG8gcnVuIGdlbmVyYXRlZCBiaW5hcmllcwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2VtYmVkZGVkIHNwZWNpZmljXQotCi1TaWduZWQtb2ZmLWJ5OiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgotCi0tLS0KLSBwcGRjL01ha2VmaWxlIHwgMzIgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTYgaW5zZXJ0aW9ucygrKSwgMTYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9wcGRjL01ha2VmaWxlIGIvcHBkYy9NYWtlZmlsZQotaW5kZXggZTU2Mzk4OC4uOTczZGQzZiAxMDA2NDQKLS0tLSBhL3BwZGMvTWFrZWZpbGUKLSsrKyBiL3BwZGMvTWFrZWZpbGUKLUBAIC0xODksOCArMTg5LDggQEAgZ2Vuc3RyaW5nczoJCWdlbnN0cmluZ3MubyBsaWJjdXBzcHBkYy5hIC4uL2N1cHMvJChMSUJDVVBTU1RBVElDKSBcCi0gCSQoTERfQ1hYKSAkKEFSQ0hGTEFHUykgJChMREZMQUdTKSAtbyBnZW5zdHJpbmdzIGdlbnN0cmluZ3MubyBcCi0gCQlsaWJjdXBzcHBkYy5hIC4uL2N1cHMvJChMSUJDVVBTU1RBVElDKSAkKExJQkdTU0FQSSkgJChTU0xMSUJTKSBcCi0gCQkkKEROU1NETElCUykgJChDT01NT05MSUJTKSAkKExJQlopCi0tCWVjaG8gR2VuZXJhdGluZyBsb2NhbGl6YXRpb24gc3RyaW5ncy4uLgotLQkuL2dlbnN0cmluZ3MgPnNhbXBsZS5jCi0rIwllY2hvIEdlbmVyYXRpbmcgbG9jYWxpemF0aW9uIHN0cmluZ3MuLi4KLSsjCS4vZ2Vuc3RyaW5ncyA+c2FtcGxlLmMKLSAKLSAKLSAjCi1AQCAtMjA5LDkgKzIwOSw5IEBAIHBwZGMtc3RhdGljOgkJcHBkYy5vIGxpYmN1cHNwcGRjLmEgLi4vY3Vwcy8kKExJQkNVUFNTVEFUSUMpIGZvby5kcnYgZm9vLWZyLnBvCi0gCQkuLi9jdXBzLyQoTElCQ1VQU1NUQVRJQykgJChMSUJHU1NBUEkpICQoU1NMTElCUykgJChETlNTRExJQlMpIFwKLSAJCSQoQ09NTU9OTElCUykgJChMSUJaKQotIAkkKENPREVfU0lHTikgLXMgIiQoQ09ERV9TSUdOX0lERU5USVRZKSIgJEAKLS0JZWNobyBUZXN0aW5nIFBQRCBjb21waWxlci4uLgotLQkuL3BwZGMtc3RhdGljIC1sIGVuLGZyIC1JIC4uL2RhdGEgZm9vLmRydgotLQkuL3BwZGMtc3RhdGljIC1sIGVuLGZyIC16IC1JIC4uL2RhdGEgZm9vLmRydgotKyMJZWNobyBUZXN0aW5nIFBQRCBjb21waWxlci4uLgotKyMJLi9wcGRjLXN0YXRpYyAtbCBlbixmciAtSSAuLi9kYXRhIGZvby5kcnYKLSsjCS4vcHBkYy1zdGF0aWMgLWwgZW4sZnIgLXogLUkgLi4vZGF0YSBmb28uZHJ2Ci0gCi0gCi0gIwotQEAgLTI0MCwxNyArMjQwLDE3IEBAIHBwZGktc3RhdGljOgkJcHBkYy1zdGF0aWMgcHBkaS5vIGxpYmN1cHNwcGRjLmEgIC4uL2N1cHMvJChMSUJDVVBTU1RBVElDKQotIAkJLi4vY3Vwcy8kKExJQkNVUFNTVEFUSUMpICQoTElCR1NTQVBJKSAkKFNTTExJQlMpICQoRE5TU0RMSUJTKSBcCi0gCQkkKENPTU1PTkxJQlMpICQoTElCWikKLSAJJChDT0RFX1NJR04pIC1zICIkKENPREVfU0lHTl9JREVOVElUWSkiICRACi0tCWVjaG8gVGVzdGluZyBQUEQgaW1wb3J0ZXIuLi4KLS0JJChSTSkgLXIgcHBkIHBwZDIgc2FtcGxlLWltcG9ydC5kcnYKLS0JLi9wcGRjLXN0YXRpYyAtbCBlbiAtSSAuLi9kYXRhIHNhbXBsZS5kcnYKLS0JLi9wcGRpLXN0YXRpYyAtSSAuLi9kYXRhIC1vIHNhbXBsZS1pbXBvcnQuZHJ2IHBwZC8qCi0tCS4vcHBkYy1zdGF0aWMgLWwgZW4gLUkgLi4vZGF0YSAtZCBwcGQyIHNhbXBsZS1pbXBvcnQuZHJ2Ci0tCWlmIGRpZmYgLXIgcHBkIHBwZDIgPi9kZXYvbnVsbDsgdGhlbiBcCi0tCQllY2hvIFBQRCBpbXBvcnQgT0s7IFwKLS0JZWxzZSBcCi0tCQllY2hvIFBQRCBpbXBvcnQgRkFJTEVEOyBcCi0tCQlleGl0IDE7IFwKLS0JZmkKLSsjCWVjaG8gVGVzdGluZyBQUEQgaW1wb3J0ZXIuLi4KLSsjCSQoUk0pIC1yIHBwZCBwcGQyIHNhbXBsZS1pbXBvcnQuZHJ2Ci0rIwkuL3BwZGMtc3RhdGljIC1sIGVuIC1JIC4uL2RhdGEgc2FtcGxlLmRydgotKyMJLi9wcGRpLXN0YXRpYyAtSSAuLi9kYXRhIC1vIHNhbXBsZS1pbXBvcnQuZHJ2IHBwZC8qCi0rIwkuL3BwZGMtc3RhdGljIC1sIGVuIC1JIC4uL2RhdGEgLWQgcHBkMiBzYW1wbGUtaW1wb3J0LmRydgotKyMJaWYgZGlmZiAtciBwcGQgcHBkMiA+L2Rldi9udWxsOyB0aGVuIFwKLSsjCQllY2hvIFBQRCBpbXBvcnQgT0s7IFwKLSsjCWVsc2UgXAotKyMJCWVjaG8gUFBEIGltcG9ydCBGQUlMRUQ7IFwKLSsjCQlleGl0IDE7IFwKLSsjCWZpCi0gCi0gCi0gIwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtdXNlLWVjaG8tb25seS1pbi1pbml0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDEtdXNlLWVjaG8tb25seS1pbi1pbml0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwYmJhZDAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwMS11c2UtZWNoby1vbmx5LWluLWluaXQucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBhM2Y0ZDhiYTk3ZjQ2NjlhOTU5NDNhN2U2NWViNjFhYTQ0Y2U3OTk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2F1bCBXb2xkIDxzZ3dAbGludXguaW50ZWwuY29tPgorRGF0ZTogVGh1LCAxMyBEZWMgMjAxMiAxOTowMzo1MiAtMDgwMAorU3ViamVjdDogW1BBVENIIDEvNF0gdXNlIGVjaG8gb25seSBpbiBpbml0CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHNjaGVkdWxlci9jdXBzLnNoLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc2NoZWR1bGVyL2N1cHMuc2guaW4gYi9zY2hlZHVsZXIvY3Vwcy5zaC5pbgoraW5kZXggODlhYzM2ZC4uNjYxOGEwZiAxMDA2NDQKKy0tLSBhL3NjaGVkdWxlci9jdXBzLnNoLmluCisrKysgYi9zY2hlZHVsZXIvY3Vwcy5zaC5pbgorQEAgLTUwLDcgKzUwLDcgQEAgY2FzZSAiYHVuYW1lYCIgaW4KKyAJCUVDSE9fRVJST1I9OgorIAkJOzsKKyAKKy0JTGludXgqKQorKwlEaXNhYmxlTGludXgqKQorIAkJSVNfT049L2Jpbi90cnVlCisgCQlpZiB0ZXN0IC1mIC9ldGMvaW5pdC5kL2Z1bmN0aW9uczsgdGhlbgorIAkJCS4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwMi1kb24tdC10cnktdG8tcnVuLWdlbmVyYXRlZC1iaW5hcmllcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAyLWRvbi10LXRyeS10by1ydW4tZ2VuZXJhdGVkLWJpbmFyaWVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmVhMjQ4ZTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwMi1kb24tdC10cnktdG8tcnVuLWdlbmVyYXRlZC1iaW5hcmllcy5wYXRjaApAQCAtMCwwICsxLDczIEBACitGcm9tIDNlOWE5NjVkY2Q2NWFiMmQ0MGI3NTNiNmY3OTJhMWE0NTU5MTgyYWEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLb2VuIEtvb2kgPGtvZW5AZG9taW5pb24udGhydWhlcmUubmV0PgorRGF0ZTogU3VuLCAzMCBKYW4gMjAxMSAxNjozNzoyNyArMDEwMAorU3ViamVjdDogW1BBVENIIDIvNF0gZG9uJ3QgdHJ5IHRvIHJ1biBnZW5lcmF0ZWQgYmluYXJpZXMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS29lbiBLb29pIDxrb2VuQGRvbWluaW9uLnRocnVoZXJlLm5ldD4KKworLS0tCisgcHBkYy9NYWtlZmlsZSB8IDMyICsrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvcHBkYy9NYWtlZmlsZSBiL3BwZGMvTWFrZWZpbGUKK2luZGV4IDMyZTJlMGIuLmYxNDc4ZDQgMTAwNjQ0CistLS0gYS9wcGRjL01ha2VmaWxlCisrKysgYi9wcGRjL01ha2VmaWxlCitAQCAtMTg2LDggKzE4Niw4IEBAIGdlbnN0cmluZ3M6CQlnZW5zdHJpbmdzLm8gbGliY3Vwc3BwZGMuYSAuLi9jdXBzLyQoTElCQ1VQU1NUQVRJQykgXAorIAkkKExEX0NYWCkgJChBUkNIRkxBR1MpICQoQUxMX0xERkxBR1MpIC1vIGdlbnN0cmluZ3MgZ2Vuc3RyaW5ncy5vIFwKKyAJCWxpYmN1cHNwcGRjLmEgJChMSU5LQ1VQU1NUQVRJQykKKyAJJChDT0RFX1NJR04pIC1zICIkKENPREVfU0lHTl9JREVOVElUWSkiICRACistCWVjaG8gR2VuZXJhdGluZyBsb2NhbGl6YXRpb24gc3RyaW5ncy4uLgorLQkuL2dlbnN0cmluZ3MgPnNhbXBsZS5jCisrIwllY2hvIEdlbmVyYXRpbmcgbG9jYWxpemF0aW9uIHN0cmluZ3MuLi4KKysjCS4vZ2Vuc3RyaW5ncyA+c2FtcGxlLmMKKyAKKyAKKyAjCitAQCAtMjA1LDkgKzIwNSw5IEBAIHBwZGMtc3RhdGljOgkJcHBkYy5vIGxpYmN1cHNwcGRjLmEgLi4vY3Vwcy8kKExJQkNVUFNTVEFUSUMpIGZvby5kcnYgZm9vLWZyLnBvCisgCSQoTERfQ1hYKSAkKEFSQ0hGTEFHUykgJChBTExfTERGTEFHUykgLW8gcHBkYy1zdGF0aWMgcHBkYy5vIGxpYmN1cHNwcGRjLmEgXAorIAkJJChMSU5LQ1VQU1NUQVRJQykKKyAJJChDT0RFX1NJR04pIC1zICIkKENPREVfU0lHTl9JREVOVElUWSkiICRACistCWVjaG8gVGVzdGluZyBQUEQgY29tcGlsZXIuLi4KKy0JLi9wcGRjLXN0YXRpYyAtbCBlbixmciAtSSAuLi9kYXRhIGZvby5kcnYKKy0JLi9wcGRjLXN0YXRpYyAtbCBlbixmciAteiAtSSAuLi9kYXRhIGZvby5kcnYKKysjCWVjaG8gVGVzdGluZyBQUEQgY29tcGlsZXIuLi4KKysjCS4vcHBkYy1zdGF0aWMgLWwgZW4sZnIgLUkgLi4vZGF0YSBmb28uZHJ2CisrIwkuL3BwZGMtc3RhdGljIC1sIGVuLGZyIC16IC1JIC4uL2RhdGEgZm9vLmRydgorIAorIAorICMKK0BAIC0yMzUsMTcgKzIzNSwxNyBAQCBwcGRpLXN0YXRpYzoJCXBwZGMtc3RhdGljIHBwZGkubyBsaWJjdXBzcHBkYy5hIC4uL2N1cHMvJChMSUJDVVBTU1RBVElDKQorIAkkKExEX0NYWCkgJChBUkNIRkxBR1MpICQoQUxMX0xERkxBR1MpIC1vIHBwZGktc3RhdGljIHBwZGkubyBsaWJjdXBzcHBkYy5hIFwKKyAJCSQoTElOS0NVUFNTVEFUSUMpCisgCSQoQ09ERV9TSUdOKSAtcyAiJChDT0RFX1NJR05fSURFTlRJVFkpIiAkQAorLQllY2hvIFRlc3RpbmcgUFBEIGltcG9ydGVyLi4uCistCSQoUk0pIC1yIHBwZCBwcGQyIHNhbXBsZS1pbXBvcnQuZHJ2CistCS4vcHBkYy1zdGF0aWMgLWwgZW4gLUkgLi4vZGF0YSBzYW1wbGUuZHJ2CistCS4vcHBkaS1zdGF0aWMgLUkgLi4vZGF0YSAtbyBzYW1wbGUtaW1wb3J0LmRydiBwcGQvKgorLQkuL3BwZGMtc3RhdGljIC1sIGVuIC1JIC4uL2RhdGEgLWQgcHBkMiBzYW1wbGUtaW1wb3J0LmRydgorLQlpZiBkaWZmIC1yIHBwZCBwcGQyID4vZGV2L251bGw7IHRoZW4gXAorLQkJZWNobyBQUEQgaW1wb3J0IE9LOyBcCistCWVsc2UgXAorLQkJZWNobyBQUEQgaW1wb3J0IEZBSUxFRDsgXAorLQkJZXhpdCAxOyBcCistCWZpCisrIwllY2hvIFRlc3RpbmcgUFBEIGltcG9ydGVyLi4uCisrIwkkKFJNKSAtciBwcGQgcHBkMiBzYW1wbGUtaW1wb3J0LmRydgorKyMJLi9wcGRjLXN0YXRpYyAtbCBlbiAtSSAuLi9kYXRhIHNhbXBsZS5kcnYKKysjCS4vcHBkaS1zdGF0aWMgLUkgLi4vZGF0YSAtbyBzYW1wbGUtaW1wb3J0LmRydiBwcGQvKgorKyMJLi9wcGRjLXN0YXRpYyAtbCBlbiAtSSAuLi9kYXRhIC1kIHBwZDIgc2FtcGxlLWltcG9ydC5kcnYKKysjCWlmIGRpZmYgLXIgcHBkIHBwZDIgPi9kZXYvbnVsbDsgdGhlbiBcCisrIwkJZWNobyBQUEQgaW1wb3J0IE9LOyBcCisrIwllbHNlIFwKKysjCQllY2hvIFBQRCBpbXBvcnQgRkFJTEVEOyBcCisrIwkJZXhpdCAxOyBcCisrIwlmaQorIAorIAorICMKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAzLWN1cHNfMS40LjYuYmItRml4LWJ1aWxkLW9uLXBwYzY0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzLzAwMDMtY3Vwc18xLjQuNi5iYi1GaXgtYnVpbGQtb24tcHBjNjQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjQ4YzdhOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDAzLWN1cHNfMS40LjYuYmItRml4LWJ1aWxkLW9uLXBwYzY0LnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gNjZjMjA3OWFlOTEzODllZTBmOWQ3MDRiZjBkMmNjY2Q1M2IyYzYwMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBTdW4sIDIyIEp1bCAyMDEyIDE2OjU0OjE3IC0wNzAwCitTdWJqZWN0OiBbUEFUQ0ggMy80XSBjdXBzXzEuNC42LmJiOiBGaXggYnVpbGQgb24gcHBjNjQKKworTWFrZSBDVVBTX1NFUlZFUkJJTiByZWxhdGl2ZSB0byBsaWJkaXIgb3RoZXJ3aXNlIG9uIDY0Yml0IGFyY2hlcworZS5nLiBwcGM2NCB3aGVyZSBiYXNlIGxpYmRpciBpcyBsaWI2NCB0aGlzIGRvZXMgbm90IGdvIHdlbGwKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQorCitVcGRhdGUgb24gMjAxOTA5MDQ6CitSZWRlZmluZSBDVVBTX1NFUlZFUkJJTiB0byAiJGxpYmV4ZWNkaXIvY3VwcyIgd2hpY2ggc29sdmVzIGZpbGUgY29uZmxpY3Rpb24KK3doZW4gbXVsdGlsaWIgaXMgZW5hYmxlZC4KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGNvbmZpZy1zY3JpcHRzL2N1cHMtZGlyZWN0b3JpZXMubTQgfCAyICstCisgY29uZmlndXJlICAgICAgICAgICAgICAgICAgICAgICAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZy1zY3JpcHRzL2N1cHMtZGlyZWN0b3JpZXMubTQgYi9jb25maWctc2NyaXB0cy9jdXBzLWRpcmVjdG9yaWVzLm00CitpbmRleCBiNzQwODNhLi45YTVhYmIyIDEwMDY0NAorLS0tIGEvY29uZmlnLXNjcmlwdHMvY3Vwcy1kaXJlY3Rvcmllcy5tNAorKysrIGIvY29uZmlnLXNjcmlwdHMvY3Vwcy1kaXJlY3Rvcmllcy5tNAorQEAgLTI3MCw3ICsyNzAsNyBAQCBjYXNlICIkaG9zdF9vc19uYW1lIiBpbgorIAkqKQorIAkJIyBBbGwgb3RoZXJzCisgCQlJTlNUQUxMX1NZU1Y9Imluc3RhbGwtc3lzdiIKKy0JCUNVUFNfU0VSVkVSQklOPSIkZXhlY19wcmVmaXgvbGliL2N1cHMiCisrCQlDVVBTX1NFUlZFUkJJTj0iJGxpYmV4ZWNkaXIvY3VwcyIKKyAJCTs7CisgZXNhYworIAorZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQoraW5kZXggZDNkZjE0NS4uYmM2OGE2YyAxMDA3NTUKKy0tLSBhL2NvbmZpZ3VyZQorKysrIGIvY29uZmlndXJlCitAQCAtNjQyMCw3ICs2NDIwLDcgQEAgY2FzZSAiJGhvc3Rfb3NfbmFtZSIgaW4KKyAJKikKKyAJCSMgQWxsIG90aGVycworIAkJSU5TVEFMTF9TWVNWPSJpbnN0YWxsLXN5c3YiCistCQlDVVBTX1NFUlZFUkJJTj0iJGV4ZWNfcHJlZml4L2xpYi9jdXBzIgorKwkJQ1VQU19TRVJWRVJCSU49IiRsaWJleGVjZGlyL2N1cHMiCisgCQk7OworIGVzYWMKKyAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy8wMDA0LWN1cHMtZml4LW11bHRpbGliLWluc3RhbGwtZmlsZS1jb25mbGljdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwNC1jdXBzLWZpeC1tdWx0aWxpYi1pbnN0YWxsLWZpbGUtY29uZmxpY3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmJjOTI2MDMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvMDAwNC1jdXBzLWZpeC1tdWx0aWxpYi1pbnN0YWxsLWZpbGUtY29uZmxpY3RzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gN2RiZGExODg3YWExOWFiNzIwYWZmMjIzMTJmNGNhZmYyZDU3NWY2MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEthaSBLYW5nIDxrYWkua2FuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAzIE9jdCAyMDE4IDAwOjI3OjExICswODAwCitTdWJqZWN0OiBbUEFUQ0ggNC80XSBjdXBzOiBmaXggbXVsdGlsaWIgaW5zdGFsbCBmaWxlIGNvbmZsaWN0cworCitAQ1VQU19TRVJWRVJCSU5AIGlzICR7bGliZGlyfSByZWxhdGVkIHRoYXQgY2F1c2VzIG11bHRpbGliIGluc3RhbGwgZmlsZQorY29uZmxpY3QuIFJlbW92ZSBAQ1VQU19TRVJWRVJCSU5AIGZyb20gdGhlIGNvbW1lbnQgbGluZSBvZiBjdXBzLWZpbGVzLmNvbmYgdG8KK2F2b2lkIHRoZSBjb25mbGljdC4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KKworU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGNvbmYvY3Vwcy1maWxlcy5jb25mLmluIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvY29uZi9jdXBzLWZpbGVzLmNvbmYuaW4gYi9jb25mL2N1cHMtZmlsZXMuY29uZi5pbgoraW5kZXggNGE3OGJhNi4uMDNjNjU4MiAxMDA2NDQKKy0tLSBhL2NvbmYvY3Vwcy1maWxlcy5jb25mLmluCisrKysgYi9jb25mL2N1cHMtZmlsZXMuY29uZi5pbgorQEAgLTczLDcgKzczLDcgQEAgUGFnZUxvZyBAQ1VQU19MT0dESVJAL3BhZ2VfbG9nCisgI1JlcXVlc3RSb290IEBDVVBTX1JFUVVFU1RTQAorIAorICMgTG9jYXRpb24gb2YgaGVscGVyIHByb2dyYW1zLi4uCistI1NlcnZlckJpbiBAQ1VQU19TRVJWRVJCSU5ACisrI1NlcnZlckJpbgorIAorICMgU1NML1RMUyBrZXljaGFpbiBmb3IgdGhlIHNjaGVkdWxlci4uLgorICNTZXJ2ZXJLZXljaGFpbiBAQ1VQU19TRVJWRVJLRVlDSEFJTkAKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy9jdXBzLWF2b2lkLWluc3RhbGwtZmlsZS1jb25mbGljdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwcy1hdm9pZC1pbnN0YWxsLWZpbGUtY29uZmxpY3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ODg4NWZhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy9jdXBzLWF2b2lkLWluc3RhbGwtZmlsZS1jb25mbGljdHMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1AQ1VQU19TRVJWRVJCSU5AIGlzICR7bGliZGlyfSByZWxhdGVkIHRoYXQgY2F1c2VzIG11bHRpbGliIGluc3RhbGwgZmlsZQotY29uZmxpY3QuIFJlbW92ZSBAQ1VQU19TRVJWRVJCSU5AIGZyb20gdGhlIGNvbW1lbnQgbGluZSBvZiBjdXBzLWZpbGVzLmNvbmYgdG8KLWF2b2lkIHRoZSBjb25mbGljdC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLWRpZmYgLS1naXQgYS9jb25mL2N1cHMtZmlsZXMuY29uZi5pbiBiL2NvbmYvY3Vwcy1maWxlcy5jb25mLmluCi1pbmRleCA0YTc4YmE2Li4wM2M2NTgyIDEwMDY0NAotLS0tIGEvY29uZi9jdXBzLWZpbGVzLmNvbmYuaW4KLSsrKyBiL2NvbmYvY3Vwcy1maWxlcy5jb25mLmluCi1AQCAtNzMsNyArNzMsNyBAQCBQYWdlTG9nIEBDVVBTX0xPR0RJUkAvcGFnZV9sb2cKLSAjUmVxdWVzdFJvb3QgQENVUFNfUkVRVUVTVFNACi0gCi0gIyBMb2NhdGlvbiBvZiBoZWxwZXIgcHJvZ3JhbXMuLi4KLS0jU2VydmVyQmluIEBDVVBTX1NFUlZFUkJJTkAKLSsjU2VydmVyQmluCi0gCi0gIyBTU0wvVExTIGtleWNoYWluIGZvciB0aGUgc2NoZWR1bGVyLi4uCi0gI1NlcnZlcktleWNoYWluIEBDVVBTX1NFUlZFUktFWUNIQUlOQApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHMtdm9sYXRpbGVzLmNvbmYgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwcy12b2xhdGlsZXMuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWRlNzhlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHMtdm9sYXRpbGVzLmNvbmYKQEAgLTAsMCArMSBAQAorZCAgL3Zhci9sb2cvY3VwcyAwNzU1IHJvb3Qgcm9vdCAtCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwc19zZXJ2ZXJiaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvY3Vwc19zZXJ2ZXJiaW4ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg1YzZhZjEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL2N1cHNfc2VydmVyYmluLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotTWFrZSBDVVBTX1NFUlZFUkJJTiByZWxhdGl2ZSB0byBsaWJkaXIgb3RoZXJ3aXNlIG9uIDY0Yml0IGFyY2hlcwotZS5nLiBwcGM2NCB3aGVyZSBiYXNlIGxpYmRpciBpcyBsaWI2NCB0aGlzIGRvZXMgbm90IGdvIHdlbGwKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0UgY29uZmlnIHNwZWNpZmljXQotCi1VcGRhdGUgb24gMjAxOTA5MDQ6Ci1SZWRlZmluZSBDVVBTX1NFUlZFUkJJTiB0byAiJGxpYmV4ZWNkaXIvY3VwcyIgd2hpY2ggc29sdmVzIGZpbGUgY29uZmxpY3Rpb24KLXdoZW4gbXVsdGlsaWIgaXMgZW5hYmxlZC4KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLUluZGV4OiBjdXBzLTEuNC42L2NvbmZpZy1zY3JpcHRzL2N1cHMtZGlyZWN0b3JpZXMubTQKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBjdXBzLTEuNC42Lm9yaWcvY29uZmlnLXNjcmlwdHMvY3Vwcy1kaXJlY3Rvcmllcy5tNAkyMDA5LTA0LTEyIDE2OjA0OjUxLjAwMDAwMDAwMCAtMDcwMAotKysrIGN1cHMtMS40LjYvY29uZmlnLXNjcmlwdHMvY3Vwcy1kaXJlY3Rvcmllcy5tNAkyMDEyLTA3LTIxIDEyOjEyOjA1Ljg5NjQwNTkyMyAtMDcwMAotQEAgLTM5Nyw3ICszOTcsNyBAQAotIAkqKQotIAkJIyBBbGwgb3RoZXJzCi0gCQlJTlNUQUxMX1NZU1Y9Imluc3RhbGwtc3lzdiIKLS0JCUNVUFNfU0VSVkVSQklOPSIkZXhlY19wcmVmaXgvbGliL2N1cHMiCi0rCQlDVVBTX1NFUlZFUkJJTj0iJGxpYmV4ZWNkaXIvY3VwcyIKLSAJCTs7Ci0gZXNhYwotIAotSW5kZXg6IGN1cHMtMS40LjYvY29uZmlndXJlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY3Vwcy0xLjQuNi5vcmlnL2NvbmZpZ3VyZQkyMDEyLTA3LTIxIDEyOjEzOjM0LjUxMjQwNTk1MCAtMDcwMAotKysrIGN1cHMtMS40LjYvY29uZmlndXJlCTIwMTItMDctMjEgMTI6MTQ6MDUuNzI0NDA2MDE3IC0wNzAwCi1AQCAtMTExODEsNyArMTExODEsNyBAQAotIAkqKQotIAkJIyBBbGwgb3RoZXJzCi0gCQlJTlNUQUxMX1NZU1Y9Imluc3RhbGwtc3lzdiIKLS0JCUNVUFNfU0VSVkVSQklOPSIkZXhlY19wcmVmaXgvbGliL2N1cHMiCi0rCQlDVVBTX1NFUlZFUkJJTj0iJGxpYmV4ZWNkaXIvY3VwcyIKLSAJCTs7Ci0gZXNhYwotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL3VzZV9lY2hvX29ubHlfaW5faW5pdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy91c2VfZWNob19vbmx5X2luX2luaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY5NmYxMzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzL3VzZV9lY2hvX29ubHlfaW5faW5pdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZW1iZWRkZWQgc3BlY2lmaWNdCi0KLUluZGV4OiBjdXBzLTEuNi4xL3NjaGVkdWxlci9jdXBzLnNoLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gY3Vwcy0xLjYuMS5vcmlnL3NjaGVkdWxlci9jdXBzLnNoLmluCi0rKysgY3Vwcy0xLjYuMS9zY2hlZHVsZXIvY3Vwcy5zaC5pbgotQEAgLTY3LDcgKzY3LDcgQEAgY2FzZSAiYHVuYW1lYCIgaW4KLSAJCUVDSE9fRVJST1I9OgotIAkJOzsKLSAKLS0JTGludXgqKQotKwlEaXNhYmxlTGludXgqKQotIAkJSVNfT049L2Jpbi90cnVlCi0gCQlpZiB0ZXN0IC1mIC9ldGMvaW5pdC5kL2Z1bmN0aW9uczsgdGhlbgotIAkJCS4gL2V0Yy9pbml0LmQvZnVuY3Rpb25zCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvdm9sYXRpbGVzLjk5X2N1cHMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHMvdm9sYXRpbGVzLjk5X2N1cHMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uY2MwZTE5ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwcy92b2xhdGlsZXMuOTlfY3VwcwpAQCAtMCwwICsxLDIgQEAKKyMgPHR5cGU+IDxvd25lcj4gPGdyb3VwPiA8bW9kZT4gPHBhdGg+IDxsaW5rc291cmNlPgorZCByb290IHJvb3QgMDc1NSAvdmFyL2xvZy9jdXBzIG5vbmUKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjIuMTIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9jdXBzL2N1cHNfMi4yLjEyLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZTU1MzRhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjIuMTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2ICswLDAgQEAKLXJlcXVpcmUgY3Vwcy5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PWYyMTJiNDMzOGRiMGRhOGNiODkyZTk0YmYyOTQ5NDYwIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTc2MzY4OWY3NzM1ZDNmZTk1YTI5NDMzOTcxODllNDAiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGY2MWFiNDQ5ZTQ3NDhhMjRjNmFiMzU1YjQ4MWZmNzY5MTI0N2ExNDBkMzI3YjJiNzUyNmZjZTM0YjdmOWFhOCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjMuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2N1cHMvY3Vwc18yLjMuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTIzMGZhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvY3Vwcy9jdXBzXzIuMy4xLmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBjdXBzLmluYworCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKKworU1JDX1VSSVttZDVzdW1dID0gIjhhZDg4OTdjOTdjZjRkOTBmMjBkYWM0MzE4ZjQ3NDIxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjFiY2E5ZDg5NTA3ZTNmNjhjYmM4NDQ4MmZlNDZhZThkNTMzM2FmNWJjMmI5MDYxMzQ3YjIwMDcxODJhYzc3Y2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9lZC9lZF8xLjE1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZWQvZWRfMS4xNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODg2YzNkZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9lZC9lZF8xLjE1LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzggKzAsMCBAQAotU1VNTUFSWSA9ICJMaW5lLW9yaWVudGVkIHRleHQgZWRpdG9yIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2VkLyIKLQotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wYzcwNTFhZWY5MjE5ZGM3MjM3ZjIwNmM1YzQxNzlhNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lZC5oO2VuZGxpbmU9MjA7bWQ1PThhZjhlN2RjNzI3NWRjYTA1Y2U2YzllN2VjZTdhZWM4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL21haW4uYztlbmRsaW5lPTE3O21kNT1kNGRkNmE2MmM1MDI3MTIzNThjYTE4NTUxZjk3ODc4MSBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotU0VDVElPTiA9ICJiYXNlIgotCi1DVkVfUFJPRFVDVCA9ICJnbnU6ZWQiCi0KLSMgTFNCIHN0YXRlcyB0aGF0IGVkIHNob3VsZCBiZSBpbiAvYmluLwotYmluZGlyID0gIiR7YmFzZV9iaW5kaXJ9IgotCi0jIFVwc3RyZWFtIHJlZ3VsYXJseSByZW1vdmVzIHByZXZpb3VzIHJlbGVhc2VzIGZyb20gaHR0cHM6Ly9mdHAuZ251Lm9yZy9nbnUvZWQvCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZWQvJHtCUH0udGFyLmx6IgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7R05VX01JUlJPUn0vZWQvIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZDNhYWViNWViMDMyMTQyOTQ4ZDdhMmY5OGEyNDg5OWIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWQ0NDg5YzBhZDdhMTA4YzUxNDI2MmRhMjhlNmMyYTQyNjk0NmZiNDA4YTM5NzdlZjFlZDM0MzA4YmRmZDE3NCIKLQotRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCi0KLWluaGVyaXQgdGV4aW5mbwotCi1kb19jb25maWd1cmUoKSB7Ci0JJHtTfS9jb25maWd1cmUKLX0KLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKLQkjIEluZm8gZGlyIGxpc3RpbmcgaXNuJ3QgaW50ZXJlc3RpbmcgYXQgdGhpcyBwb2ludCBzbyByZW1vdmUgaXQgaWYgaXQgZXhpc3RzLgotCWlmIFsgLWUgIiR7RH0ke2luZm9kaXJ9L2RpciIgXTsgdGhlbgotCQlybSAtZiAke0R9JHtpbmZvZGlyfS9kaXIKLQlmaQotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZWQvZWRfMS4xNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2VkL2VkXzEuMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjM4MzAwNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2VkL2VkXzEuMTYuYmIKQEAgLTAsMCArMSwzOCBAQAorU1VNTUFSWSA9ICJMaW5lLW9yaWVudGVkIHRleHQgZWRpdG9yIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2VkLyIKKworTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wYzcwNTFhZWY5MjE5ZGM3MjM3ZjIwNmM1YzQxNzlhNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9lZC5oO2VuZGxpbmU9MjA7bWQ1PTAyMjZhOGRkODhjNzZhZmJhNzczZjJmMGY3YzgzZjVlIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL21haW4uYztlbmRsaW5lPTE3O21kNT1lYmQ0YWZmODZkYzlmYTUwMjdkNTViYzUxOTE3NDZiOSBcCisgICAgICAgICAgICAgICAgICAgICIKKworU0VDVElPTiA9ICJiYXNlIgorCitDVkVfUFJPRFVDVCA9ICJnbnU6ZWQiCisKKyMgTFNCIHN0YXRlcyB0aGF0IGVkIHNob3VsZCBiZSBpbiAvYmluLworYmluZGlyID0gIiR7YmFzZV9iaW5kaXJ9IgorCisjIFVwc3RyZWFtIHJlZ3VsYXJseSByZW1vdmVzIHByZXZpb3VzIHJlbGVhc2VzIGZyb20gaHR0cHM6Ly9mdHAuZ251Lm9yZy9nbnUvZWQvCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZWQvJHtCUH0udGFyLmx6IgorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7R05VX01JUlJPUn0vZWQvIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYWI0ODBkOTgyMjg5MDY0Y2EwNDBiYzVjNzVmY2VmZmQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2ZjMDdhMTRhYjA0OGE3NTg0NzNjZTIyMmU3ODRmYmYwMzE0ODViY2Q1NGE3NmY3NGFjZmVlMWYzOTBkOGIyYyIKKworRVhUUkFfT0VNQUtFID0gIi1lIE1BS0VGTEFHUz0iCisKK2luaGVyaXQgdGV4aW5mbworCitkb19jb25maWd1cmUoKSB7CisJJHtTfS9jb25maWd1cmUKK30KKworZG9faW5zdGFsbCgpIHsKKwlvZV9ydW5tYWtlICdERVNURElSPSR7RH0nIGluc3RhbGwKKwkjIEluZm8gZGlyIGxpc3RpbmcgaXNuJ3QgaW50ZXJlc3RpbmcgYXQgdGhpcyBwb2ludCBzbyByZW1vdmUgaXQgaWYgaXQgZXhpc3RzLgorCWlmIFsgLWUgIiR7RH0ke2luZm9kaXJ9L2RpciIgXTsgdGhlbgorCQlybSAtZiAke0R9JHtpbmZvZGlyfS9kaXIKKwlmaQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoCmluZGV4IDE1M2VhNTUuLmQ1YzkzMjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbC9hdm9pZF9wYXJhbGxlbF90ZXN0cy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2wvYXZvaWRfcGFyYWxsZWxfdGVzdHMucGF0Y2gKQEAgLTE5LDcgKzE5LDcgQEAKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCiBAQCAtMiw3ICsyLDcgQEAgZG5sIFByb2Nlc3MgdGhpcyBmaWxlIHdpdGggYXV0b2NvbmYgdG8gcHJvZHVjZSBhIGNvbmZpZ3VyZSBzY3JpcHQuCi0gQUNfSU5JVChldGh0b29sLCA1LjMsIG5ldGRldkB2Z2VyLmtlcm5lbC5vcmcpCisgQUNfSU5JVChldGh0b29sLCA1LjQsIG5ldGRldkB2Z2VyLmtlcm5lbC5vcmcpCiAgQUNfUFJFUkVRKDIuNTIpCiAgQUNfQ09ORklHX1NSQ0RJUihbZXRodG9vbC5jXSkKIC1BTV9JTklUX0FVVE9NQUtFKFtnbnVdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzUuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF81LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQwMTMzMWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZXRodG9vbC9ldGh0b29sXzUuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLVNVTU1BUlkgPSAiRGlzcGxheSBvciBjaGFuZ2UgZXRoZXJuZXQgY2FyZCBzZXR0aW5ncyIKLURFU0NSSVBUSU9OID0gIkEgc21hbGwgdXRpbGl0eSBmb3IgZXhhbWluaW5nIGFuZCB0dW5pbmcgdGhlIHNldHRpbmdzIG9mIHlvdXIgZXRoZXJuZXQtYmFzZWQgbmV0d29yayBpbnRlcmZhY2VzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9ldGh0b29sLyIKLVNFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ldGh0b29sLmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNzttZDU9YzE5YjMwNTQ4YzU4MjU3N2ZjNmI0NDM2MjZmYzEyMTYiCi0KLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvZXRodG9vbC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNjNkMWM4MzViODYxOTEyZWEwZGZkNTJjZjY2YTJkYTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2QyZDhlYTM2MDQzMWEyZWEzNWZmNjFjMjc2YmNmMmFmZWUxYWQ5MDE2NjhhMGI1MGFlOWYxYzU4MTQ3NTZiZCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC8iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IGJhc2gtY29tcGxldGlvbgotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKLQotZG9fY29tcGlsZV9wdGVzdCgpIHsKLSAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QgKCkgewotICAgY3AgJHtCfS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KLSAgIGluc3RhbGwgJHtCfS90ZXN0LWNtZGxpbmUgICAgICAgICR7RH0ke1BURVNUX1BBVEh9Ci0gICBpbnN0YWxsICR7Qn0vdGVzdC1mZWF0dXJlcyAgICAgICAke0R9JHtQVEVTVF9QQVRIfQotICAgaW5zdGFsbCAke0J9L2V0aHRvb2wgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vZXRodG9vbAotICAgc2VkIC1pICdzL15NYWtlZmlsZS9fTWFrZWZpbGUvJyAgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2V0aHRvb2wvZXRodG9vbF81LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZWFmYWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ldGh0b29sL2V0aHRvb2xfNS40LmJiCkBAIC0wLDAgKzEsMzMgQEAKK1NVTU1BUlkgPSAiRGlzcGxheSBvciBjaGFuZ2UgZXRoZXJuZXQgY2FyZCBzZXR0aW5ncyIKK0RFU0NSSVBUSU9OID0gIkEgc21hbGwgdXRpbGl0eSBmb3IgZXhhbWluaW5nIGFuZCB0dW5pbmcgdGhlIHNldHRpbmdzIG9mIHlvdXIgZXRoZXJuZXQtYmFzZWQgbmV0d29yayBpbnRlcmZhY2VzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvc29mdHdhcmUvbmV0d29yay9ldGh0b29sLyIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9ldGh0b29sLmM7YmVnaW5saW5lPTQ7ZW5kbGluZT0xNzttZDU9YzE5YjMwNTQ4YzU4MjU3N2ZjNmI0NDM2MjZmYzEyMTYiCisKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9zb2Z0d2FyZS9uZXR3b3JrL2V0aHRvb2wvZXRodG9vbC0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL2F2b2lkX3BhcmFsbGVsX3Rlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZmJiMjRhYTQxNGFiOWExMWZmNjZkMzUxYjViODQ5M2IiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGIyNWE0NmI2MWJjNmUyNmY1NmRjYjk3M2ZjMjhhY2VhMTU5ZTJjMzJjOWQ2ZGE0MmMwZmE4ZDFhNjMzOTgyOSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL3NvZnR3YXJlL25ldHdvcmsvZXRodG9vbC8iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB0ZXN0IGJhc2gtY29tcGxldGlvbgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKKworZG9fY29tcGlsZV9wdGVzdCgpIHsKKyAgIG9lX3J1bm1ha2UgYnVpbGR0ZXN0LVRFU1RTCit9CisKK2RvX2luc3RhbGxfcHRlc3QgKCkgeworICAgY3AgJHtCfS9NYWtlZmlsZSAgICAgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0KKyAgIGluc3RhbGwgJHtCfS90ZXN0LWNtZGxpbmUgICAgICAgICR7RH0ke1BURVNUX1BBVEh9CisgICBpbnN0YWxsICR7Qn0vdGVzdC1mZWF0dXJlcyAgICAgICAke0R9JHtQVEVTVF9QQVRIfQorICAgaW5zdGFsbCAke0J9L2V0aHRvb2wgICAgICAgICAgICAgJHtEfSR7UFRFU1RfUEFUSH0vZXRodG9vbAorICAgc2VkIC1pICdzL15NYWtlZmlsZS9fTWFrZWZpbGUvJyAgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy5pbmMKaW5kZXggYWQzNjQyOS4uOWFhNzIzOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy5pbmMKQEAgLTYsOSArNiw5IEBACiBCVUdUUkFDS0VSID0gImh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL2J1Z3MvP2dyb3VwPWZpbmR1dGlscyIKIFNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKIAotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9LyR7QlBOfS8ke0JQfS50YXIuZ3oiCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci54eiIKIAotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcwogCiBBTFRFUk5BVElWRV8ke1BOfSA9ICJmaW5kIHhhcmdzIgogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MDY0ZDE4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gODZkYjJhNWYzYjdlZjgxMTNlNTM4NGI0ZTAyZDJiMjk5Yzg3YTA0NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEzIEFwciAyMDE1IDE3OjAyOjEzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVuc2V0IG5lZWRfY2hhcnNldF9hbGlhcyB3aGVuIGJ1aWxkaW5nIGZvciBtdXNsCi0KLWxvY2FsY2hhcnNldCB1c2VzIGFjX2N2X2dudV9saWJyYXJ5XzJfMSBmcm9tIGdsaWJjMjEubTQKLXdoaWNoIGFjdHVhbGx5IHNob3VkbCBiZSBmaXhlZCBpbiBnbnVsaWIgYW5kIHRoZW4gYWxsIGRvd25zdHJlYW0KLXByb2plY3RzIHdpbGwgZ2V0IGl0IGV2ZW50dWFsbHkuIEZvciBub3cgd2UgYXBwbHkgdGhlIGZpeCB0bwotY29yZXV0aWxzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi0tLS0KLSBnbC9saWIvTWFrZWZpbGUuYW0gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9nbC9saWIvTWFrZWZpbGUuYW0gYi9nbC9saWIvTWFrZWZpbGUuYW0KLWluZGV4IGE5ZTJmZTQuLjFjNmVhOWMgMTAwNjQ0Ci0tLS0gYS9nbC9saWIvTWFrZWZpbGUuYW0KLSsrKyBiL2dsL2xpYi9NYWtlZmlsZS5hbQotQEAgLTEyMzQsNyArMTIzNCw3IEBAIGluc3RhbGwtZXhlYy1sb2NhbGNoYXJzZXQ6IGFsbC1sb2NhbAotIAkgIGNhc2UgJyQoaG9zdF9vcyknIGluIFwKLSAJICAgIGRhcndpbls1Nl0qKSBcCi0gCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKLS0JICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopIFwKLSsJICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyogfCBsaW51eC1tdXNsKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9ZmFsc2UgOzsgXAotIAkgICAgKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzLzAwMDEtZmluZC1tYWtlLWRlbGV0ZS1ob25vdXItdGhlLWlnbm9yZV9yZWFkZGlyX3JhY2Utb3B0aS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvMDAwMS1maW5kLW1ha2UtZGVsZXRlLWhvbm91ci10aGUtaWdub3JlX3JlYWRkaXJfcmFjZS1vcHRpLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNTcwNDczLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHMvMDAwMS1maW5kLW1ha2UtZGVsZXRlLWhvbm91ci10aGUtaWdub3JlX3JlYWRkaXJfcmFjZS1vcHRpLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQ0ICswLDAgQEAKLUZyb20gYTNmNDgyMWM0YTNmNzIzZDIxYzkyOThkNTRiZWU4YTY1NmJmZDdmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJlcm5oYXJkIFZvZWxrZXIgPG1haWxAYmVybmhhcmQtdm9lbGtlci5kZT4KLURhdGU6IFR1ZSwgMzAgSmFuIDIwMTggMjM6MzA6MDkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gZmluZDogbWFrZSAtZGVsZXRlIGhvbm91ciB0aGUgLWlnbm9yZV9yZWFkZGlyX3JhY2Ugb3B0aW9uCi0KLSogZmluZC9wcmVkLmMgKHByZWRfZGVsZXRlKTogUmV0dXJuIHRydWUgd2hlbiB0aGUgLWlnbm9yZV9yZWFkZGlyX3JhY2UKLW9wdGlvbiBpcyBhY3RpdmUgYW5kIHVubGlua2F0KCkgY2FtZSBiYWNrIHdpdGggRU5PRU5ULgotKiBkb2MvZmluZC50ZXhpIChPcHRpb24gLWlnbm9yZV9yZWFkZGlyX3JhY2UpOiBEb2N1bWVudCB0aGUgY2hhbmdlLgotKEFjdGlvbiAtZGVsZXRlKTogTGlrZXdpc2UuCi0qIGZpbmQvZmluZC4xOiBMaWtld2lzZS4KLSogTkVXUyAoQnVnIEZpeGVzKTogTWVudGlvbiB0aGUgZml4LgotCi1Gb3Igbm93LCBpdCBzZWVtcyBhIGJpdCBoYXJkIHRvIGFkZCBhIHByb3BlciB0ZXN0IGZvciB0aGlzLAotc28gdGhlIGZvbGxvd2luZyBzaGVsbCBzbmlwcGV0IGRlbW9uc3RyYXRlcyB0aGUgcmFjZToKLQotICAkIHNlcSAxMCB8IHhhcmdzIHRvdWNoCi0gICQgZW52IHRpbWUgLWYgJ2ZpbmQgZXhpdCBzdGF0dXM6ICV4XG5maW5kIHRpbWU6ICVlJyBcCi0gICAgICBmaW5kIC1pZ25vcmVfcmVhZGRpcl9yYWNlIC10eXBlIGYgXAotICAgICAgICAtZGVsZXRlIFwKLSAgICAgICAgLWV4ZWMgc2ggLWMgJ3NsZWVwICQoYmFzZW5hbWUge30pJyBcOyBcCi0gICAgICAgIC1wcmludGYgJ2ZpbmQgZGVsZXRlZDogJXBcbicgXAotICAgICAgICAmIFwKLSAgICBzbGVlcCAyMDsgXAotICAgIHNlcSAxMCB8IHhhcmdzIHJtIC1mdjsgXAotICAgIHdhaXQgJCEKLQotUmVwb3J0ZWQgYnkgQWxleGFuZGVyIEdvbHViZXYgaW4KLWh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz81Mjk4MQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBaaGl4aW9uZyBDaGkgPHpoaXhpb25nLmNoaUB3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBORVdTICAgICAgICAgIHwgIDQgKysrKwotIGRvYy9maW5kLnRleGkgfCAxNSArKysrKysrKysrKysrKy0KLSBmaW5kL2ZpbmQuMSAgIHwgMjIgKysrKysrKysrKysrKysrKysrKysrKwotIGZpbmQvcHJlZC5jICAgfCAgNiArKysrKysKLSA0IGZpbGVzIGNoYW5nZWQsIDQ2IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL05FV1MgYi9ORVdTCi1pbmRleCA2NjBjMjQxLi5iODZlYzFlIDEwMDY0NAotLS0tIGEvTkVXUwotKysrIGIvTkVXUwotQEAgLTQyLDYgKzQyLDEwIEBAIFVwZGF0ZWQgdGhlIERhbmlzaCB0cmFuc2xhdGlvbi4KLSAKLSAqKiBCdWcgRml4ZXM6Ci0gCi0rIzUyOTgxOiBmaW5kOiB0aGUgJy1kZWxldGUnIGFjdGlvbiBubyBsb25nZXIgY29tcGxhaW5zIGFib3V0IGRpc2FwcGVhcmVkIGZpbGVzCi0rICAgICAgICB3aGVuIHRoZSAnLWlnbm9yZV9yZWFkZGlyX3JhY2UnIG9wdGlvbiBpcyBnaXZlbiwgdG9vLiAgVGhhdCBhY3Rpb24gd2lsbAotKyAgICAgICAgYWxzbyByZXR1cm5zIHRydWUgaW4gc3VjaCBhIGNhc2Ugbm93LgotKwotIEFwcGxpZWQgcGF0Y2ggIzg2ODg6IFNwZWxsaW5nIGZpeGVzLgotIAotICogTWFqb3IgY2hhbmdlcyBpbiByZWxlYXNlIDQuNS4xOCwgMjAxNS0xMi0yNwotZGlmZiAtLWdpdCBhL2RvYy9maW5kLnRleGkgYi9kb2MvZmluZC50ZXhpCi1pbmRleCBmZGViODQxLi4yNDdjMTlhIDEwMDY0NAotLS0tIGEvZG9jL2ZpbmQudGV4aQotKysrIGIvZG9jL2ZpbmQudGV4aQotQEAgLTE0MTgsNyArMTQxOCwxNSBAQCBnaXZlcyBhIHNpZ25pZmljYW50IGluY3JlYXNlIGluIHNlYXJjaCBzcGVlZC4KLSBJZiBhIGZpbGUgZGlzYXBwZWFycyBhZnRlciBpdHMgbmFtZSBoYXMgYmVlbiByZWFkIGZyb20gYSBkaXJlY3RvcnkgYnV0Ci0gYmVmb3JlIEBjb2Rle2ZpbmR9IGdldHMgYXJvdW5kIHRvIGV4YW1pbmluZyB0aGUgZmlsZSB3aXRoIEBjb2Rle3N0YXR9LAotIGRvbid0IGlzc3VlIGFuIGVycm9yIG1lc3NhZ2UuICBJZiB5b3UgZG9uJ3Qgc3BlY2lmeSB0aGlzIG9wdGlvbiwgYW4KLS1lcnJvciBtZXNzYWdlIHdpbGwgYmUgaXNzdWVkLiAgVGhpcyBvcHRpb24gY2FuIGJlIHVzZWZ1bCBpbiBzeXN0ZW0KLStlcnJvciBtZXNzYWdlIHdpbGwgYmUgaXNzdWVkLgotKwotK0Z1cnRoZXJtb3JlLCBAY29kZXtmaW5kfSB3aXRoIHRoZSBAc2FtcHstaWdub3JlX3JlYWRkaXJfcmFjZX0gb3B0aW9uCi0rd2lsbCBpZ25vcmUgZXJyb3JzIG9mIHRoZSBAc2FtcHstZGVsZXRlfSBhY3Rpb24gaW4gdGhlIGNhc2UgdGhlIGZpbGUKLStoYXMgZGlzYXBwZWFyZWQgc2luY2UgdGhlIHBhcmVudCBkaXJlY3Rvcnkgd2FzIHJlYWQ6IGl0IHdpbGwgbm90IG91dHB1dAotK2FuIGVycm9yIGRpYWdub3N0aWMsIGFuZCB0aGUgcmV0dXJuIGNvZGUgb2YgdGhlIEBzYW1wey1kZWxldGV9IGFjdGlvbgotK3dpbGwgYmUgdHJ1ZS4KLSsKLStUaGlzIG9wdGlvbiBjYW4gYmUgdXNlZnVsIGluIHN5c3RlbQotIHNjcmlwdHMgKGNyb24gc2NyaXB0cywgZm9yIGV4YW1wbGUpIHRoYXQgZXhhbWluZSBhcmVhcyBvZiB0aGUKLSBmaWxlc3lzdGVtIHRoYXQgY2hhbmdlIGZyZXF1ZW50bHkgKG1haWwgcXVldWVzLCB0ZW1wb3JhcnkgZGlyZWN0b3JpZXMsCi0gYW5kIHNvIGZvcnRoKSwgYmVjYXVzZSB0aGlzIHNjZW5hcmlvIGlzIGNvbW1vbiBmb3IgdGhvc2Ugc29ydHMgb2YKLUBAIC0yNzc5LDYgKzI3ODcsMTEgQEAgZXhwbGljaXRseS4KLSAKLSBJZiBAc2FtcHstZGVsZXRlfSBmYWlscywgQGNvZGV7ZmluZH0ncyBleGl0IHN0YXR1cyB3aWxsIGJlIG5vbnplcm8KLSAod2hlbiBpdCBldmVudHVhbGx5IGV4aXRzKS4KLSsKLStUb2dldGhlciB3aXRoIHRoZSBAc2FtcHstaWdub3JlX3JlYWRkaXJfcmFjZX0gb3B0aW9uLCBAY29kZXtmaW5kfSB3aWxsCi0raWdub3JlIGVycm9ycyBvZiB0aGUgQHNhbXB7LWRlbGV0ZX0gYWN0aW9uIGluIHRoZSBjYXNlIHRoZSBmaWxlIGhhcyBkaXNhcHBlYXJlZAotK3NpbmNlIHRoZSBwYXJlbnQgZGlyZWN0b3J5IHdhcyByZWFkOiBpdCB3aWxsIG5vdCBvdXRwdXQgYW4gZXJyb3IgZGlhZ25vc3RpYywgYW5kCi0rdGhlIHJldHVybiBjb2RlIG9mIHRoZSBAc2FtcHstZGVsZXRlfSBhY3Rpb24gd2lsbCBiZSB0cnVlLgotIEBlbmQgZGVmZm4KLSAKLSBAbm9kZSBBZGRpbmcgVGVzdHMKLWRpZmYgLS1naXQgYS9maW5kL2ZpbmQuMSBiL2ZpbmQvZmluZC4xCi1pbmRleCA3YjE0MWI4Li4wZWVjNDFjIDEwMDY0NAotLS0tIGEvZmluZC9maW5kLjEKLSsrKyBiL2ZpbmQvZmluZC4xCi1AQCAtNDc5LDYgKzQ3OSwxNyBAQCBvbmUgcGFydCBvZiB0aGUgZmlsZXN5c3RlbSB3aXRoIHRoaXMgb3B0aW9uIG9uIGFuZCBwYXJ0IG9mIGl0IHdpdGggdGhpcyBvcHRpb24KLSBvZmYgKGlmIHlvdSBuZWVkIHRvIGRvIHRoYXQsIHlvdSB3aWxsIG5lZWQgdG8gaXNzdWUgdHdvIFxmQmZpbmRcZlIgY29tbWFuZHMKLSBpbnN0ZWFkLCBvbmUgd2l0aCB0aGUgb3B0aW9uIGFuZCBvbmUgd2l0aG91dCBpdCkuCi0gCi0rRnVydGhlcm1vcmUsCi0rLkIgZmluZAotK3dpdGggdGhlCi0rLkIgXC1pZ25vcmVfcmVhZGRpcl9yYWNlCi0rb3B0aW9uIHdpbGwgaWdub3JlIGVycm9ycyBvZiB0aGUKLSsuQiBcLWRlbGV0ZQotK2FjdGlvbiBpbiB0aGUgY2FzZSB0aGUgZmlsZSBoYXMgZGlzYXBwZWFyZWQgc2luY2UgdGhlIHBhcmVudCBkaXJlY3Rvcnkgd2FzIHJlYWQ6Ci0raXQgd2lsbCBub3Qgb3V0cHV0IGFuIGVycm9yIGRpYWdub3N0aWMsIGFuZCB0aGUgcmV0dXJuIGNvZGUgb2YgdGhlCi0rLkIgXC1kZWxldGUKLSthY3Rpb24gd2lsbCBiZSB0cnVlLgotKwotIC5JUCAiXC1tYXhkZXB0aCBcZklsZXZlbHNcZlIiCi0gRGVzY2VuZCBhdCBtb3N0IFxmSWxldmVsc1xmUiAoYSBub24tbmVnYXRpdmUgaW50ZWdlcikgbGV2ZWxzIG9mCi0gZGlyZWN0b3JpZXMgYmVsb3cgdGhlIHN0YXJ0aW5nLXBvaW50cy4KLUBAIC0xMDMwLDYgKzEwNDEsMTcgQEAgYW5kCi0gLkIgXC1kZWxldGUKLSB0b2dldGhlci4KLSAKLStUb2dldGhlciB3aXRoIHRoZQotKy5CIFwtaWdub3JlX3JlYWRkaXJfcmFjZQotK29wdGlvbiwKLSsuQiBmaW5kCi0rd2lsbCBpZ25vcmUgZXJyb3JzIG9mIHRoZQotKy5CIFwtZGVsZXRlCi0rYWN0aW9uIGluIHRoZSBjYXNlIHRoZSBmaWxlIGhhcyBkaXNhcHBlYXJlZCBzaW5jZSB0aGUgcGFyZW50IGRpcmVjdG9yeSB3YXMKLStyZWFkOiBpdCB3aWxsIG5vdCBvdXRwdXQgYW4gZXJyb3IgZGlhZ25vc3RpYywgYW5kIHRoZSByZXR1cm4gY29kZSBvZiB0aGUKLSsuQiBcLWRlbGV0ZQotK2FjdGlvbiB3aWxsIGJlIHRydWUuCi0rCi0gLklQICJcLWV4ZWMgXGZJY29tbWFuZFxmUiA7IgotIEV4ZWN1dGUgXGZJY29tbWFuZFxmUjsgdHJ1ZSBpZiAwIHN0YXR1cyBpcyByZXR1cm5lZC4gIEFsbCBmb2xsb3dpbmcKLSBhcmd1bWVudHMgdG8KLWRpZmYgLS1naXQgYS9maW5kL3ByZWQuYyBiL2ZpbmQvcHJlZC5jCi1pbmRleCAzMjkzOGZiLi40MzFmMDY1IDEwMDY0NAotLS0tIGEvZmluZC9wcmVkLmMKLSsrKyBiL2ZpbmQvcHJlZC5jCi1AQCAtMzI0LDYgKzMyNCwxMiBAQCBwcmVkX2RlbGV0ZSAoY29uc3QgY2hhciAqcGF0aG5hbWUsIHN0cnVjdCBzdGF0ICpzdGF0X2J1Ziwgc3RydWN0IHByZWRpY2F0ZSAqcHJlZAotIAl9Ci0gICAgICAgZWxzZQotIAl7Ci0rCSAgaWYgKEVOT0VOVCA9PSBlcnJubyAmJiBvcHRpb25zLmlnbm9yZV9yZWFkZGlyX3JhY2UpCi0rCSAgICB7Ci0rCSAgICAgIC8qIElnbm9yZSB1bmxpbmsoKSBlcnJvciBmb3IgdmFuaXNoZWQgZmlsZXMuICAqLwotKwkgICAgICBlcnJubyA9IDA7Ci0rCSAgICAgIHJldHVybiB0cnVlOwotKwkgICAgfQotIAkgIGlmIChFSVNESVIgPT0gZXJybm8pCi0gCSAgICB7Ci0gCSAgICAgIGlmICgoZmxhZ3MgJiBBVF9SRU1PVkVESVIpID09IDApCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItZmZsdXNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy9maW5kdXRpbHMtNC42LjAtZ251bGliLWZmbHVzaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDEzZThlZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItZmZsdXNoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTQwICswLDAgQEAKLUZyb20gODBjZGZiYTA3OTYyN2UxNTEyOWE5MjZhMTMzODI1Yjk2MWQ0MWUzNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFBhdWwgRWdnZXJ0IDxlZ2dlcnRAY3MudWNsYS5lZHU+Ci1EYXRlOiBNb24sIDUgTWFyIDIwMTggMTA6NTY6MjkgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gZmZsdXNoOiBhZGp1c3QgdG8gZ2xpYmMgMi4yOCBsaWJpby5oIHJlbW92YWwKLU1JTUUtVmVyc2lvbjogMS4wCi1Db250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKLUNvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKLQotUHJvYmxlbSByZXBvcnRlZCBieSBEYW5pZWwgUC4gQmVycmFuZ8OpIGluOgotaHR0cHM6Ly9saXN0cy5nbnUub3JnL3IvYnVnLWdudWxpYi8yMDE4LTAzL21zZzAwMDAwLmh0bWwKLSogbGliL2ZmbHVzaC5jIChjbGVhcl91bmdldGNfYnVmZmVyX3ByZXNlcnZpbmdfcG9zaXRpb24pCi0oZGlzYWJsZV9zZWVrX29wdGltaXphdGlvbiwgcnBsX2ZmbHVzaCk6Ci0qIGxpYi9mcHVyZ2UuYyAoZnB1cmdlKToKLSogbGliL2ZyZWFkYWhlYWQuYyAoZnJlYWRhaGVhZCk6Ci0qIGxpYi9mcmVhZGluZy5jIChmcmVhZGluZyk6Ci0qIGxpYi9mc2Vla28uYyAoZnNlZWtvKToKLSogbGliL3N0ZGlvLWltcGwuaCAoX0lPX0lOX0JBQ0tVUCkgW19JT19FT0ZfU0VFTl06Ci1EZWZpbmUgaWYgbm90IGFscmVhZHkgZGVmaW5lZC4KLQotVXBzdHJlYW0tY29tbWl0OiA0YWY0YTRhNzE4MjdjMGJjNWUwZWM2N2FmMjNlZGVmNGYxNWNlZThlCi1TaWduZWQtb2ZmLWJ5OiBLYW1pbCBEdWRrYSA8a2R1ZGthQHJlZGhhdC5jb20+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFs0YWY0YTRhNzE4MjdjMGJjNWUwZWM2N2FmMjNlZGVmNGYxNWNlZThlXQotLS0tCi0gZ2wvbGliL2ZmbHVzaC5jICAgICB8IDYgKysrLS0tCi0gZ2wvbGliL2ZwdXJnZS5jICAgICB8IDIgKy0KLSBnbC9saWIvZnJlYWRhaGVhZC5jIHwgMiArLQotIGdsL2xpYi9mcmVhZGluZy5jICAgfCAyICstCi0gZ2wvbGliL2ZzZWVrby5jICAgICB8IDQgKystLQotIGdsL2xpYi9zdGRpby1pbXBsLmggfCA2ICsrKysrKwotIDYgZmlsZXMgY2hhbmdlZCwgMTQgaW5zZXJ0aW9ucygrKSwgOCBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGZpbmR1dGlscy00LjYuMC9nbC9saWIvZmZsdXNoLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZmZsdXNoLmMKLSsrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZmbHVzaC5jCi1AQCAtMzMsNyArMzMsNyBAQAotICN1bmRlZiBmZmx1c2gKLSAKLSAKLS0jaWYgZGVmaW5lZCBfSU9fZnRyeWxvY2tmaWxlIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KLSsjaWYgZGVmaW5lZCBfSU9fRU9GX1NFRU4gfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLwotIAotIC8qIENsZWFyIHRoZSBzdHJlYW0ncyB1bmdldGMgYnVmZmVyLCBwcmVzZXJ2aW5nIHRoZSB2YWx1ZSBvZiBmdGVsbG8gKGZwKS4gICovCi0gc3RhdGljIHZvaWQKLUBAIC03Miw3ICs3Miw3IEBAIGNsZWFyX3VuZ2V0Y19idWZmZXIgKEZJTEUgKmZwKQotIAotICNlbmRpZgotIAotLSNpZiAhIChkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLykKLSsjaWYgISAoZGVmaW5lZCBfSU9fRU9GX1NFRU4gfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLykKLSAKLSAjIGlmIChkZWZpbmVkIF9fc2ZlcnJvciB8fCBkZWZpbmVkIF9fRHJhZ29uRmx5X18gfHwgZGVmaW5lZCBfX0FORFJPSURfXykgJiYgZGVmaW5lZCBfX1NOUFQKLSAvKiBGcmVlQlNELCBOZXRCU0QsIE9wZW5CU0QsIERyYWdvbkZseSwgTWFjIE9TIFgsIEN5Z3dpbiwgQW5kcm9pZCAqLwotQEAgLTE0OCw3ICsxNDgsNyBAQCBycGxfZmZsdXNoIChGSUxFICpzdHJlYW0pCi0gICBpZiAoc3RyZWFtID09IE5VTEwgfHwgISBmcmVhZGluZyAoc3RyZWFtKSkKLSAgICAgcmV0dXJuIGZmbHVzaCAoc3RyZWFtKTsKLSAKLS0jaWYgZGVmaW5lZCBfSU9fZnRyeWxvY2tmaWxlIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KLSsjaWYgZGVmaW5lZCBfSU9fRU9GX1NFRU4gfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLwotIAotICAgY2xlYXJfdW5nZXRjX2J1ZmZlcl9wcmVzZXJ2aW5nX3Bvc2l0aW9uIChzdHJlYW0pOwotIAotSW5kZXg6IGZpbmR1dGlscy00LjYuMC9nbC9saWIvZnB1cmdlLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZnB1cmdlLmMKLSsrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZwdXJnZS5jCi1AQCAtNjIsNyArNjIsNyBAQCBmcHVyZ2UgKEZJTEUgKmZwKQotICAgLyogTW9zdCBzeXN0ZW1zIHByb3ZpZGUgRklMRSBhcyBhIHN0cnVjdCBhbmQgdGhlIG5lY2Vzc2FyeSBiaXRtYXNrIGluCi0gICAgICA8c3RkaW8uaD4sIGJlY2F1c2UgdGhleSBuZWVkIGl0IGZvciBpbXBsZW1lbnRpbmcgZ2V0YygpIGFuZCBwdXRjKCkgYXMKLSAgICAgIGZhc3QgbWFjcm9zLiAgKi8KLS0jIGlmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0rIyBpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0gICBmcC0+X0lPX3JlYWRfZW5kID0gZnAtPl9JT19yZWFkX3B0cjsKLSAgIGZwLT5fSU9fd3JpdGVfcHRyID0gZnAtPl9JT193cml0ZV9iYXNlOwotICAgLyogQXZvaWQgbWVtb3J5IGxlYWsgd2hlbiB0aGVyZSBpcyBhbiBhY3RpdmUgdW5nZXRjIGJ1ZmZlci4gICovCi1JbmRleDogZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9mcmVhZGFoZWFkLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZnJlYWRhaGVhZC5jCi0rKysgZmluZHV0aWxzLTQuNi4wL2dsL2xpYi9mcmVhZGFoZWFkLmMKLUBAIC0yNSw3ICsyNSw3IEBACi0gc2l6ZV90Ci0gZnJlYWRhaGVhZCAoRklMRSAqZnApCi0gewotLSNpZiBkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLwotKyNpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0gICBpZiAoZnAtPl9JT193cml0ZV9wdHIgPiBmcC0+X0lPX3dyaXRlX2Jhc2UpCi0gICAgIHJldHVybiAwOwotICAgcmV0dXJuIChmcC0+X0lPX3JlYWRfZW5kIC0gZnAtPl9JT19yZWFkX3B0cikKLUluZGV4OiBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZyZWFkaW5nLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZnJlYWRpbmcuYwotKysrIGZpbmR1dGlscy00LjYuMC9nbC9saWIvZnJlYWRpbmcuYwotQEAgLTMxLDcgKzMxLDcgQEAgZnJlYWRpbmcgKEZJTEUgKmZwKQotICAgLyogTW9zdCBzeXN0ZW1zIHByb3ZpZGUgRklMRSBhcyBhIHN0cnVjdCBhbmQgdGhlIG5lY2Vzc2FyeSBiaXRtYXNrIGluCi0gICAgICA8c3RkaW8uaD4sIGJlY2F1c2UgdGhleSBuZWVkIGl0IGZvciBpbXBsZW1lbnRpbmcgZ2V0YygpIGFuZCBwdXRjKCkgYXMKLSAgICAgIGZhc3QgbWFjcm9zLiAgKi8KLS0jIGlmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0rIyBpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0gICByZXR1cm4gKChmcC0+X2ZsYWdzICYgX0lPX05PX1dSSVRFUykgIT0gMAotICAgICAgICAgICB8fCAoKGZwLT5fZmxhZ3MgJiAoX0lPX05PX1JFQURTIHwgX0lPX0NVUlJFTlRMWV9QVVRUSU5HKSkgPT0gMAotICAgICAgICAgICAgICAgJiYgZnAtPl9JT19yZWFkX2Jhc2UgIT0gTlVMTCkpOwotSW5kZXg6IGZpbmR1dGlscy00LjYuMC9nbC9saWIvZnNlZWtvLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvZnNlZWtvLmMKLSsrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL2ZzZWVrby5jCi1AQCAtNDcsNyArNDcsNyBAQCBmc2Vla28gKEZJTEUgKmZwLCBvZmZfdCBvZmZzZXQsIGludCB3aGVuCi0gI2VuZGlmCi0gCi0gICAvKiBUaGVzZSB0ZXN0cyBhcmUgYmFzZWQgb24gZnB1cmdlLmMuICAqLwotLSNpZiBkZWZpbmVkIF9JT19mdHJ5bG9ja2ZpbGUgfHwgX19HTlVfTElCUkFSWV9fID09IDEgLyogR05VIGxpYmMsIEJlT1MsIEhhaWt1LCBMaW51eCBsaWJjNSAqLwotKyNpZiBkZWZpbmVkIF9JT19FT0ZfU0VFTiB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0gICBpZiAoZnAtPl9JT19yZWFkX2VuZCA9PSBmcC0+X0lPX3JlYWRfcHRyCi0gICAgICAgJiYgZnAtPl9JT193cml0ZV9wdHIgPT0gZnAtPl9JT193cml0ZV9iYXNlCi0gICAgICAgJiYgZnAtPl9JT19zYXZlX2Jhc2UgPT0gTlVMTCkKLUBAIC0xMjMsNyArMTIzLDcgQEAgZnNlZWtvIChGSUxFICpmcCwgb2ZmX3Qgb2Zmc2V0LCBpbnQgd2hlbgotICAgICAgICAgICByZXR1cm4gLTE7Ci0gICAgICAgICB9Ci0gCi0tI2lmIGRlZmluZWQgX0lPX2Z0cnlsb2NrZmlsZSB8fCBfX0dOVV9MSUJSQVJZX18gPT0gMSAvKiBHTlUgbGliYywgQmVPUywgSGFpa3UsIExpbnV4IGxpYmM1ICovCi0rI2lmIGRlZmluZWQgX0lPX0VPRl9TRUVOIHx8IF9fR05VX0xJQlJBUllfXyA9PSAxIC8qIEdOVSBsaWJjLCBCZU9TLCBIYWlrdSwgTGludXggbGliYzUgKi8KLSAgICAgICBmcC0+X2ZsYWdzICY9IH5fSU9fRU9GX1NFRU47Ci0gICAgICAgZnAtPl9vZmZzZXQgPSBwb3M7Ci0gI2VsaWYgZGVmaW5lZCBfX3NmZXJyb3IgfHwgZGVmaW5lZCBfX0RyYWdvbkZseV9fIHx8IGRlZmluZWQgX19BTkRST0lEX18KLUluZGV4OiBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL3N0ZGlvLWltcGwuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZpbmR1dGlscy00LjYuMC5vcmlnL2dsL2xpYi9zdGRpby1pbXBsLmgKLSsrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL3N0ZGlvLWltcGwuaAotQEAgLTE4LDYgKzE4LDEyIEBACi0gICAgdGhlIHNhbWUgaW1wbGVtZW50YXRpb24gb2Ygc3RkaW8gZXh0ZW5zaW9uIEFQSSwgZXhjZXB0IHRoYXQgc29tZSBmaWVsZHMKLSAgICBoYXZlIGRpZmZlcmVudCBuYW1pbmcgY29udmVudGlvbnMsIG9yIHRoZWlyIGFjY2VzcyByZXF1aXJlcyBzb21lIGNhc3RzLiAgKi8KLSAKLSsvKiBHbGliYyAyLjI4IG1hZGUgX0lPX0lOX0JBQ0tVUCBwcml2YXRlLiAgRm9yIG5vdywgd29yayBhcm91bmQgdGhpcwotKyAgIHByb2JsZW0gYnkgZGVmaW5pbmcgaXQgb3Vyc2VsdmVzLiAgRklYTUU6IERvIG5vdCByZWx5IG9uIGdsaWJjCi0rICAgaW50ZXJuYWxzLiAgKi8KLSsjaWYgIWRlZmluZWQgX0lPX0lOX0JBQ0tVUCAmJiBkZWZpbmVkIF9JT19FT0ZfU0VFTgotKyMgZGVmaW5lIF9JT19JTl9CQUNLVVAgMHgxMDAKLSsjZW5kaWYKLSAKLSAvKiBCU0Qgc3RkaW8gZGVyaXZlZCBpbXBsZW1lbnRhdGlvbnMuICAqLwotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlscy9maW5kdXRpbHMtNC42LjAtZ251bGliLW1ha2VkZXYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItbWFrZWRldi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZiMzk1My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItbWFrZWRldi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDc4ICswLDAgQEAKLUZyb20gODA2MjgwNDdhNmNjODNmODJlMGM0MTBhODJiOGY3ZmFjZDlkNTBmMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEVyaWMgQmxha2UgPGVibGFrZUByZWRoYXQuY29tPgotRGF0ZTogV2VkLCAxNCBTZXAgMjAxNiAxOToyMTo0MiAtMDUwMAotU3ViamVjdDogW1BBVENIXSBtb3VudGxpc3Q6IGluY2x1ZGUgc3lzbWFjcm9zLmggZm9yIGdsaWJjCi0KLU9uIEZlZG9yYSByYXdoaWRlIChnbGliYyAyLjI1KSwgJy4vZ251bGliLXRvb2wgLS10ZXN0IG1vdW50bGlzdCcKLXJlcG9ydHM6Ci0uLi8uLi9nbGxpYi9tb3VudGxpc3QuYzogSW4gZnVuY3Rpb24gJ3JlYWRfZmlsZV9zeXN0ZW1fbGlzdCc6Ci0uLi8uLi9nbGxpYi9tb3VudGxpc3QuYzo1MzQ6MTM6IHdhcm5pbmc6ICdfX21ha2VkZXZfZnJvbV9zeXNfdHlwZXMnIGlzIGRlcHJlY2F0ZWQ6Ci0gIEluIHRoZSBHTlUgQyBMaWJyYXJ5LCBgbWFrZWRldicgaXMgZGVmaW5lZCBieSA8c3lzL3N5c21hY3Jvcy5oPi4KLSAgRm9yIGhpc3RvcmljYWwgY29tcGF0aWJpbGl0eSwgaXQgaXMgY3VycmVudGx5IGRlZmluZWQgYnkKLSAgPHN5cy90eXBlcy5oPiBhcyB3ZWxsLCBidXQgd2UgcGxhbiB0byByZW1vdmUgdGhpcyBzb29uLgotICBUbyB1c2UgYG1ha2VkZXYnLCBpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+IGRpcmVjdGx5LgotICBJZiB5b3UgZGlkIG5vdCBpbnRlbmQgdG8gdXNlIGEgc3lzdGVtLWRlZmluZWQgbWFjcm8gYG1ha2VkZXYnLAotICB5b3Ugc2hvdWxkICN1bmRlZiBpdCBhZnRlciBpbmNsdWRpbmcgPHN5cy90eXBlcy5oPi4KLSAgWy1XZGVwcmVjYXRlZC1kZWNsYXJhdGlvbnNdCi0gICAgICAgICAgICAgbWUtPm1lX2RldiA9IG1ha2VkZXYgKGRldm1haiwgZGV2bWluKTsKLSAgICAgICAgICAgICBefgotSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC91c3IvaW5jbHVkZS9mZWF0dXJlcy5oOjM5NzowLAotICAgICAgICAgICAgICAgICBmcm9tIC91c3IvaW5jbHVkZS9zeXMvdHlwZXMuaDoyNSwKLSAgICAgICAgICAgICAgICAgZnJvbSAuL3N5cy90eXBlcy5oOjI4LAotICAgICAgICAgICAgICAgICBmcm9tIC4uLy4uL2dsbGliL21vdW50bGlzdC5oOjIzLAotICAgICAgICAgICAgICAgICBmcm9tIC4uLy4uL2dsbGliL21vdW50bGlzdC5jOjIwOgotL3Vzci9pbmNsdWRlL3N5cy9zeXNtYWNyb3MuaDo4OToxOiBub3RlOiBkZWNsYXJlZCBoZXJlCi0gX19TWVNNQUNST1NfREVGSU5FX01BS0VERVYgKF9fU1lTTUFDUk9TX0ZTVF9JTVBMX1RFTVBMKQotIF4KLQotRml4IGl0IGJ5IGluY2x1ZGluZyB0aGUgcmlnaHQgaGVhZGVycy4gIFdlIGFsc28gbmVlZCBhIGZpeCB0bwotYXV0b2NvbmYncyBBQ19IRUFERVJfTUFKT1IsIGJ1dCB0aGF0J3MgYSBzZXBhcmF0ZSBwYXRjaC4KLQotKiBtNC9tb3VudGxpc3QubTQgKGdsX1BSRVJFUV9NT1VUTElTVF9FWFRSQSk6IEluY2x1ZGUKLUFDX0hFQURFUl9NQUpPUi4KLSogbGliL21vdW50bGlzdC5jIChpbmNsdWRlcyk6IFVzZSBjb3JyZWN0IGhlYWRlcnMuCi0KLVNpZ25lZC1vZmYtYnk6IEVyaWMgQmxha2UgPGVibGFrZUByZWRoYXQuY29tPgotCi1VcHN0cmVhbS1jb21taXQ6IDRkYTYzYzU4ODFmNjBmNzE5OTlhOTQzNjEyZGE5MTEyMjMyYjkxNjEKLVNpZ25lZC1vZmYtYnk6IEthbWlsIER1ZGthIDxrZHVka2FAcmVkaGF0LmNvbT4KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzRkYTYzYzU4ODFmNjBmNzE5OTlhOTQzNjEyZGE5MTEyMjMyYjkxNjFdCi0tLS0KLSBnbC9saWIvbW91bnRsaXN0LmMgfCA2ICsrKysrKwotIGdsL200L21vdW50bGlzdC5tNCB8IDMgKystCi0gMiBmaWxlcyBjaGFuZ2VkLCA4IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IGZpbmR1dGlscy00LjYuMC9nbC9saWIvbW91bnRsaXN0LmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBmaW5kdXRpbHMtNC42LjAub3JpZy9nbC9saWIvbW91bnRsaXN0LmMKLSsrKyBmaW5kdXRpbHMtNC42LjAvZ2wvbGliL21vdW50bGlzdC5jCi1AQCAtMzcsNiArMzcsMTIgQEAKLSAjIGluY2x1ZGUgPHN5cy9wYXJhbS5oPgotICNlbmRpZgotIAotKyNpZiBNQUpPUl9JTl9NS0RFVgotKyMgaW5jbHVkZSA8c3lzL21rZGV2Lmg+Ci0rI2VsaWYgTUFKT1JfSU5fU1lTTUFDUk9TCi0rIyBpbmNsdWRlIDxzeXMvc3lzbWFjcm9zLmg+Ci0rI2VuZGlmCi0rCi0gI2lmIGRlZmluZWQgTU9VTlRFRF9HRVRGU1NUQVQgICAvKiBPU0ZfMSBhbmQgRGFyd2luMS4zLnggKi8KLSAjIGlmIEhBVkVfU1lTX1VDUkVEX0gKLSAjICBpbmNsdWRlIDxncnAuaD4gLyogbmVlZGVkIG9uIE9TRiBWNC4wIGZvciBkZWZpbml0aW9uIG9mIE5HUk9VUFMsCi1JbmRleDogZmluZHV0aWxzLTQuNi4wL2dsL200L21vdW50bGlzdC5tNAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGZpbmR1dGlscy00LjYuMC5vcmlnL2dsL200L21vdW50bGlzdC5tNAotKysrIGZpbmR1dGlscy00LjYuMC9nbC9tNC9tb3VudGxpc3QubTQKLUBAIC0xLDQgKzEsNCBAQAotLSMgc2VyaWFsIDExCi0rIyBzZXJpYWwgMTIKLSBkbmwgQ29weXJpZ2h0IChDKSAyMDAyLTIwMDYsIDIwMDktMjAxNSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIEluYy4KLSBkbmwgVGhpcyBmaWxlIGlzIGZyZWUgc29mdHdhcmU7IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24KLSBkbmwgZ2l2ZXMgdW5saW1pdGVkIHBlcm1pc3Npb24gdG8gY29weSBhbmQvb3IgZGlzdHJpYnV0ZSBpdCwKLUBAIC0xNSw1ICsxNSw2IEBAIEFDX0RFRlVOKFtnbF9QUkVSRVFfTU9VTlRMSVNUX0VYVFJBXSwKLSBbCi0gICBkbmwgTm90ZSBnbF9MSVNUX01PVU5URURfRklMRV9TWVNURU1TIGNoZWNrcyBmb3IgbW50ZW50LmgsIG5vdCBzeXMvbW50ZW50LmguCi0gICBBQ19DSEVDS19IRUFERVJTKFtzeXMvbW50ZW50LmhdKQotKyAgQUNfSEVBREVSX01BSk9SKClkbmwgZm9yIHVzZSBvZiBtYWtlZGV2ICgpCi0gICBnbF9GU1RZUEVOQU1FCi0gXSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHNfNC42LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9maW5kdXRpbHMvZmluZHV0aWxzXzQuNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzYjYyZWQ5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHNfNC42LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1yZXF1aXJlIGZpbmR1dGlscy5pbmMKLQotIyBHUEx2MisgKDw8IDQuMi4zMiksIEdQTHYzKyAoPj0gNC4yLjMyKQotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mMjdkZWZlMWU5NmMyZTFlY2Q0ZTBjOWJlODk2Nzk0OSIKLQotREVQRU5EUyA9ICJiaXNvbi1uYXRpdmUiCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpbmQtbWFrZS1kZWxldGUtaG9ub3VyLXRoZS1pZ25vcmVfcmVhZGRpcl9yYWNlLW9wdGkucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2ZpbmR1dGlscy00LjYuMC1nbnVsaWItZmZsdXNoLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9maW5kdXRpbHMtNC42LjAtZ251bGliLW1ha2VkZXYucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTkzNmFhODAwOTQzOGNlMTg1YmVhMjY5NGE5OTdmYzEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGVkNGM5ZjczNzMxY2Q0OGZlYzNiNmJkYWNjY2U4OTY0NzNiNmQ4ZTMzN2U5NjEyZTE2Y2YxNDMxYmIxMTY5ZCIKLQotIyBodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz8yNzI5OQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImdsX2N2X2Z1bmNfd2N3aWR0aF93b3Jrcz15ZXMiCi0KLUVYVFJBX09FQ09ORiArPSAiYWNfY3ZfcGF0aF9TT1JUPSR7YmluZGlyfS9zb3J0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZmluZHV0aWxzL2ZpbmR1dGlsc180LjcuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHNfNC43LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTk2ODhlNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ZpbmR1dGlscy9maW5kdXRpbHNfNC43LjAuYmIKQEAgLTAsMCArMSwxNSBAQAorcmVxdWlyZSBmaW5kdXRpbHMuaW5jCisKKyMgR1BMdjIrICg8PCA0LjIuMzIpLCBHUEx2MysgKD49IDQuMi4zMikKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWViYmQzZTM0MjM3YWYyNmRhNWRjMDhhNGU0NDA0NjQiCisKK0RFUEVORFMgPSAiYmlzb24tbmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzMxMzU2ZGVjNGIxMTA5YjgxMmZlY2ZkZGZlYWQ2YjIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzVmZWZiZGY5ODU4ZjdlNGZlYjg2ZjAzNmUxMjQ3YTU0Yzc5ZmMyZDhlNGI3MDY0ZDVhYWExZjQ3ZGZhNzg5YSIKKworIyBodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz8yNzI5OQorQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImdsX2N2X2Z1bmNfd2N3aWR0aF93b3Jrcz15ZXMiCisKK0VYVFJBX09FQ09ORiArPSAiYWNfY3ZfcGF0aF9TT1JUPSR7YmluZGlyfS9zb3J0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy00LjAuMTcvQ1ZFLTIwMTUtODMyNy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnMtNC4wLjE3L0NWRS0yMDE1LTgzMjcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFhZWRjODguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy00LjAuMTcvQ1ZFLTIwMTUtODMyNy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotCi1odHRwOi8vYnpyLmxpbnV4Zm91bmRhdGlvbi5vcmcvbG9nZ2VyaGVhZC9vcGVucHJpbnRpbmcvY3Vwcy1maWx0ZXJzL3JldmlzaW9uLzc0MDYKLQotSGFuZCBhcHBsaWVkIGNoYW5nZSB0byB1dGlsLmMuIEZpeCB3YXMgZm9yIGN1cHMtZmlsdGVycyBidXQgYWxzbyBhcHBsaWVkIHRvIGZvb21hdGljLWZpbHRlcnMuCi0KLUNWRTogQ1ZFLTIwMTUtODMyNwotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLUluZGV4OiB1dGlsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL3V0aWwuYwotKysrIGIvdXRpbC5jCi1AQCAtMzEsNyArMzEsNyBAQAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAKLSAKLS1jb25zdCBjaGFyKiBzaGVsbGVzY2FwZXMgPSAifDs8PiYhJFwnXCIjKj8oKVtde30iOwotK2NvbnN0IGNoYXIqIHNoZWxsZXNjYXBlcyA9ICJ8Ozw+JiEkXCdcImAjKj8oKVtde30iOwotIAotIGNvbnN0IGNoYXIgKiB0ZW1wX2RpcigpCi0gewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy00LjAuMTcvQ1ZFLTIwMTUtODU2MC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnMtNC4wLjE3L0NWRS0yMDE1LTg1NjAucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjOTczYzQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVycy00LjAuMTcvQ1ZFLTIwMTUtODU2MC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIzICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotCi1odHRwOi8vYnpyLmxpbnV4Zm91bmRhdGlvbi5vcmcvbG9nZ2VyaGVhZC9vcGVucHJpbnRpbmcvY3Vwcy1maWx0ZXJzL3JldmlzaW9uLzc0MTkKLQotSGFuZCBhcHBsaWVkIGNoYW5nZSB0byB1dGlsLmMuIEZpeCB3YXMgZm9yIGN1cHMtZmlsdGVycyBidXQgYWxzbyBhcHBsaWVkIHRvIGZvb21hdGljLWZpbHRlcnMuCi0KLUNWRTogQ1ZFLTIwMTUtODU2MAotU2lnbmVkLW9mZi1ieTogQXJtaW4gS3VzdGVyIDxha3VzdGVyQG12aXN0YS5jb20+Ci0KLUluZGV4OiB1dGlsLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhL3V0aWwuYwotKysrIGIvdXRpbC5jCi1AQCAtMzEsNyArMzEsNyBAQAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAKLSAKLS1jb25zdCBjaGFyKiBzaGVsbGVzY2FwZXMgPSAifDw+JiEkXCdcIiMqPygpW117fSI7Ci0rY29uc3QgY2hhciogc2hlbGxlc2NhcGVzID0gInw7PD4mISRcJ1wiIyo/KClbXXt9IjsKLSAKLSBjb25zdCBjaGFyICogdGVtcF9kaXIoKQotIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnNfNC4wLjE3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVyc180LjAuMTcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDc0MmM5YTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZm9vbWF0aWMvZm9vbWF0aWMtZmlsdGVyc180LjAuMTcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIk9wZW5QcmludGluZyBwcmludGVyIHN1cHBvcnQgLSBmaWx0ZXJzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvb3BlbnByaW50aW5nL3N0YXJ0IgotREVTQ1JJUFRJT04gPSAiRm9vbWF0aWMgaXMgYSBwcmludGVyIGRhdGFiYXNlIGRlc2lnbmVkIHRvIG1ha2UgaXQgZWFzaWVyIHRvIHNldCB1cCBcCi1jb21tb24gcHJpbnRlcnMgZm9yIHVzZSB3aXRoIFVOSVgtbGlrZSBvcGVyYXRpbmcgc3lzdGVtcy5cCi1JdCBwcm92aWRlcyB0aGUgImdsdWUiIGJldHdlZW4gYSBwcmludCBzcG9vbGVyIChsaWtlIENVUFMgb3IgbHByKSBhbmQgXAotdGhlIHByaW50ZXIsIGJ5IHByb2Nlc3NpbmcgZmlsZXMgc2VudCB0byB0aGUgcHJpbnRlci4gXAotIFwKLVRoaXMgcGFja2FnZSBjb25zaXN0cyBvZiBmaWx0ZXJzIHVzZWQgYnkgdGhlIHByaW50ZXIgc3Bvb2xlcnMgXAotdG8gY29udmVydCB0aGUgaW5jb21pbmcgUG9zdFNjcmlwdCBkYXRhIGludG8gdGhlIHByaW50ZXIncyBuYXRpdmUgXAotZm9ybWF0IHVzaW5nIGEgcHJpbnRlci1zcGVjaWZpYywgYnV0IHNwb29sZXItaW5kZXBlbmRlbnQgUFBEIGZpbGUuIFwKLSIKLQotREVQRU5EUyArPSAiY3VwcyBwZXJsIGxpYnhtbDIiCi1QUiA9ICJyMSIKLQotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly8ke1dPUktESVJ9L2Zvb21hdGljLWZpbHRlcnMtJHtQVn0vQ09QWUlORzttZDU9MzkzYTVjYTQ0NWY2OTY1ODczZWNhMDI1OWExN2Y4MzMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5vcGVucHJpbnRpbmcub3JnL2Rvd25sb2FkL2Zvb21hdGljL2Zvb21hdGljLWZpbHRlcnMtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJICs9ICJmaWxlOi8vQ1ZFLTIwMTUtODU2MC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTUtODMyNy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImIwNWY1ZGNiZmUzNTlmMTk4ZWVmM2RmNWIyODNkODk2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyZTJlNTNlNTAyNTcxZTg4ZWViOTAxMGM0NWEwZDU0NjcxZjE1NzA3ZWUxMDRmNWM5YzIyYjU5ZWE3YTMzZTMiCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImZvb21hdGljLWZpbHRlcnMtKD9QPHB2ZXI+KChcZHxcZFxkKVwuKikrKVwudGFyXC5neiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWZpbGUtY29udmVydGVyLWNoZWNrIC0td2l0aC1maWxlLWNvbnZlcnRlcj10ZXh0dG9wcyIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgZXhwb3J0IFBFUkw9IiR7YmluZGlyfS9lbnYgcGVybCIKLSAgICBleHBvcnQgQ1VQU19TRVJWRVJCSU49JHtleGVjX3ByZWZpeH0vbGliL2N1cHMgICAgICAgIyAvdXNyL2xpYiBOT1QgbGliZGlyCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2xpbnV4c3RkYmFzZSgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvY3Vwcy9maWx0ZXIKLSAgICBsbiAtc2YgJHtiaW5kaXJ9L2Zvb21hdGljLXJpcCAke0R9JHtleGVjX3ByZWZpeH0vbGliL2N1cHMvZmlsdGVyCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2V4ZWNfcHJlZml4fS9saWIvY3Vwcy8gJHtleGVjX3ByZWZpeH0vbGliL3Bwci8iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNS4wLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nYXdrL2dhd2tfNS4wLjEuYmIKaW5kZXggZWFiYTZjNy4uZTc5Y2NmZCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2F3ay9nYXdrXzUuMC4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dhd2svZ2F3a181LjAuMS5iYgpAQCAtNDYsNiArNDYsOCBAQAogCWRvbmUKIAlzZWQgLWkgLWUgJ3N8L3Vzci9sb2NhbC9iaW58JHtiaW5kaXJ9fGcnIFwKIAkgICAgLWUgJ3N8IyEke2Jhc2VfYmluZGlyfS9hd2t8IyEke2JpbmRpcn0vYXdrfGcnICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvKi5hd2sKKworICAgICAgICBzZWQgLWkgLWUgInN8R0FXS0xPQ0FMRXxMQU5HfGciICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvTWFrZXRlc3RzCiB9CiAKIFJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4MTEtMDAwMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE5LTE0ODExLTAwMDEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNmMjg1NTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4MTEtMDAwMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gODg1NDQ0ZmNiZTEwZGM0Mjc4N2VjYjc2Njg2YzhlZTRkZDMzYmYzMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtlbiBTaGFycCA8a2VuLnNoYXJwQGFydGlmZXguY29tPgotRGF0ZTogVHVlLCAyMCBBdWcgMjAxOSAxMDoxMDoyOCArMDEwMAotU3ViamVjdDogW1BBVENIXSBtYWtlIC5mb3JjZXB1dCBpbmFjY2Vzc2libGUKLQotQnVnICM3MDEzNDMsICM3MDEzNDQsICM3MDEzNDUKLQotTW9yZSBkZWZlbnNpdmUgcHJvZ3JhbW1pbmcuIFdlIGRvbid0IHdhbnQgcGVvcGxlIHRvIGFjY2VzcyAuZm9yZWNwdXQKLWV2ZW4gdGhvdWdoIGl0IGlzIG5vIGxvbmdlciBzdWZmaWNpZW50IHRvIGJ5cGFzcyBTQUZFUi4gVGhlIGV4cGxvaXQKLWluICM3MDEzNDMgZGlkbid0IHdvcmsgYW55d2F5IGJlY2F1c2Ugb2YgZWFybGllciB3b3JrIHRvIHN0b3AgdGhlIGVycm9yCi1oYW5kbGVyIGJlaW5nIHVzZWQsIGJ1dCBuZXZlcnRoZWxlc3MsIHByZXZlbnQgYWNjZXNzIHRvIC5mb3JjZXB1dCBmcm9tCi0uc2V0dXNlcnBhcmFtczIuCi0KLUNWRTogQ1ZFLTIwMTktMTQ4MTEKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5naG9zdHNjcmlwdC5jb20vZ2hvc3RwZGwuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBTdGVmYW4gR2hpbmVhIDxzdGVmYW4uZ2hpbmVhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBSZXNvdXJjZS9Jbml0L2dzX2xldjIucHMgIHwgNiArKystLS0KLSBSZXNvdXJjZS9Jbml0L2dzX3BkZndyLnBzIHwgNCArKy0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L2dzX2xldjIucHMgYi9SZXNvdXJjZS9Jbml0L2dzX2xldjIucHMKLWluZGV4IDk4ZDU1ZmUuLmYxYjc3MWYgMTAwNjQ0Ci0tLS0gYS9SZXNvdXJjZS9Jbml0L2dzX2xldjIucHMKLSsrKyBiL1Jlc291cmNlL0luaXQvZ3NfbGV2Mi5wcwotQEAgLTE1OCw3ICsxNTgsNyBAQCBlbmQKLSAgICAgewotICAgICAgIHBvcCBwb3AKLSAgICAgfSBpZmVsc2UKLS0gIH0gZm9yYWxsCi0rICB9IGV4ZWN1dGVvbmx5IGZvcmFsbAotICAgICAgICAgJSBBIGNvbnRleHQgc3dpdGNoIG1pZ2h0IGhhdmUgb2NjdXJyZWQgZHVyaW5nIHRoZSBhYm92ZSBsb29wLAotICAgICAgICAgJSBjYXVzaW5nIHRoZSBpbnRlcnByZXRlci1sZXZlbCBwYXJhbWV0ZXJzIHRvIGJlIHJlc2V0LgotICAgICAgICAgJSBTZXQgdGhlbSBhZ2FpbiB0byB0aGUgbmV3IHZhbHVlcy4gIEZyb20gaGVyZSBvbiwgd2UgYXJlIHNhZmUsCi1AQCAtMjI5LDkgKzIyOSw5IEBAIGVuZAotICAgICAgICB7IHBvcCBwb3AKLSAgICAgICAgfQotICAgICAgIGlmZWxzZQotLSAgICB9Ci0rICAgIH0gZXhlY3V0ZW9ubHkKLSAgICBmb3JhbGwgcG9wCi0tfSAuYmluZCBvZGVmCi0rfSAuYmluZCBleGVjdXRlb25seSBvZGVmCi0gCi0gJSBJbml0aWFsaXplIHRoZSBwYXNzd29yZHMuCi0gJSBOT1RFOiB0aGUgbmFtZXMgU3RhcnRKb2JQYXNzd29yZCBhbmQgU3lzdGVtUGFyYW1zUGFzc3dvcmQgYXJlIGtub3duIHRvCi1kaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc19wZGZ3ci5wcyBiL1Jlc291cmNlL0luaXQvZ3NfcGRmd3IucHMKLWluZGV4IDAwYzE5ZmEuLmRmZTUwNGQgMTAwNjQ0Ci0tLS0gYS9SZXNvdXJjZS9Jbml0L2dzX3BkZndyLnBzCi0rKysgYi9SZXNvdXJjZS9Jbml0L2dzX3BkZndyLnBzCi1AQCAtNjUyLDExICs2NTIsMTEgQEAgY3VycmVudGRpY3QgLy5wZGZtYXJrcGFyYW1zIC51bmRlZgotICAgICAgICAgICBzeXN0ZW1kaWN0IC8ucGRmX2hvb2tlZF9EU0NfQ3JlYXRvciAvL3RydWUgLmZvcmNlcHV0Ci0gICAgICAgICB9IGV4ZWN1dGVvbmx5IGlmCi0gICAgICAgICBwb3AKLS0gICAgICB9IGlmCi0rICAgICAgfSBleGVjdXRlb25seSBpZgotICAgICB9IHsKLSAgICAgICBwb3AKLSAgICAgfSBpZmVsc2UKLS0gIH0KLSsgIH0gZXhlY3V0ZW9ubHkKLSAgIHsKLSAgICAgcG9wCi0gICB9IGlmZWxzZQotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4MTctMDAwMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE5LTE0ODE3LTAwMDEucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3NmUyMWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4MTctMDAwMS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI3MCArMCwwIEBACi1Gcm9tIDBiYWZiZDljMTI3M2ZhYjBkYzc5ZmQyMGRiMGZmYzQ0NDM2ODNmOTYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLZW4gU2hhcnAgPGtlbi5zaGFycEBhcnRpZmV4LmNvbT4KLURhdGU6IE1vbiwgMjkgQXByIDIwMTkgMTE6MTQ6MDYgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIFBERiBpbnRlcnByZXRlciAtIERlY29kZSBUb1VuaWNvZGUgZW50cmllcyBvZiB0aGUgZm9ybQotIC9JZGVudGl0eS1IL1YKLQotQnVnICM3MDEwMDMgIlRleHQgc2VhcmNoYWJpbGl0eSBicm9rZW4gZHVlIHRvIG9taXNzaW9uIG9mIC9Ub1VuaWNvZGUgL0lkZW50aXR5LUgiCi0KLVRoZSBQREYgcmVmZXJlbmNlcyBmcm9tIDEuMiB0b28gMi4wIGFsbCBzdGF0ZSB0aGF0IHRoZSB2YWx1ZSBhc3NvY2lhdGVkCi13aXRoIGEgVG9Vbmljb2RlIGtleSBpbiBhIEZvbnREZXNjcmlwdG9yIG11c3QgYmUgYSBzdHJlYW0gb2JqZWN0LiBIb3dldmVyCi10aGlzIGZpbGUgKGFuZCBvbmUgY2FzZSBzZWVuIHByZXZpb3VzbHksIGJ1ZyA2ODczNTEpIGhhdmUgRm9udERlc2NyaXB0b3IKLWRpY3Rpb25hcmllcyB3aGVyZSB0aGUgdmFsdWUgYXNzb2NpYXRlZCB3aXRoIGEgL1RvVW5pY29kZSBrZXkgaXMgYQotbmFtZSBvYmplY3QsIGluIGJvdGggY2FzZXMgL0lkZW50aXR5LUguCi0KLUFsdGhvdWdoIHRoaXMgaXMgY2xlYXJseSBub3QgbGVnYWwsIEFjcm9iYXQgbm90IG9ubHkgdG9sZXJhdGVzIGl0LCBpdAotYWN0dWFsbHkgdXNlcyBpdCBmb3Igc2VhcmNoL2NvcHkvcGFzdGUgKHNlZSBidWcgNzAxMDAzIGZvciBkZXRhaWxzKS4KLVdpdGhvdXQgdGhlIGtleSBBY3JvYmF0IGlzIHVuYWJsZSB0byBzdWNjZXNzZnVsbHkgc2VhcmNoIHRoZSBvdXRwdXQgZmlsZS4KLQotV2UgY2FuJ3Qgc2ltcGx5IHByZXNlcnZlIHRoZSBuYW1lIG9iamVjdCBhcyBhIFRvVW5pY29kZSB2YWx1ZTsgd2hlbgotaGFuZGxpbmcgVG9Vbmljb2RlIHdlIGFjdHVhbGx5IGRlY29kZSB0aGUgQ01hcCBhbmQgYnVpbGQgYQotR2x5cGhOYW1lczJVbmljb2RlIG1hcCAoYW4gaW50ZXJuYWwgcmVwcmVzZW50YXRpb24gb2YgdGhlIEcyVSBkYXRhCi1wcm9kdWNlZCBieSB0aGUgTWljcm9zb2Z0IFBvc3RTY3JpcHQgcHJpbnRlciBkcml2ZXIpLiBXaGVuIHdyaXRpbmcgdGhlCi1vdXRwdXQgZmlsZSB3ZSB1c2UgdGhhdCBpbmZvcm1hdGlvbiB0byBnZXQgYSBVbmljb2RlIHZhbHVlIGZvciBlYWNoCi1jaGFyYWN0ZXIgd2Ugd3JpdGUsIGFuZCBidWlsZCBhIG5ldyBUb1VuaWNvZGUgQ01hcCB1c2luZyB0aGF0LgotCi1UaGlzIGNvbW1pdCB0YWNrbGVzIHRoZSBwcm9ibGVtIGJ5IHByZS1zY2FubmluZyBmb3IgYSBuYW1lIG9iamVjdCBhbmQKLXRoZW4gY2hlY2tpbmcgdG8gc2VlIGlmIGl0cyBJZGVudGl0eS1IIG9yIElkZW50aXR5LVYgKGFsdGhvdWdoIHdlIGhhdmUKLW5vdCBzZWVuIGFuIElkZW50aXR5LVYsIHRoZXJlIHNlZW1zIG5vIHJlYXNvbiB3aHkgaXQgd291bGRuJ3QgYmUKLWVxdWFsbHkgdmFsaWQpLiBJZiB3ZSBmaW5kIGVpdGhlciBvZiB0aGVzZSB0aGVuIHdlIGNvbnN0cnVjdCBhCi1HbHlwaE5hbWVzMlVuaWNvZGUgdGFibGUgZm9yIGFsbCBwb3NzaWJsZSB2YWx1ZXMgKDAgLSA2NTUzNSkgYW5kIHN0b3JlCi10aGF0IHdpdGggdGhlIGZvbnQgYXMgbm9ybWFsLiBXaGVuIHdlIHdyaXRlIHRoZSBvdXRwdXQgZmlsZSB3ZSBvbmx5Ci13cml0ZSB0aGUgcmVxdWlyZWQgZW50cmllcyBmb3IgdGhlIHN1YnNldCBmb250LCBzbyB3ZSB3cml0ZSBhIG5vdwotY29tcGxldGVseSBsZWdhbCBUb1VuaWNvZGUgQ01hcCwgYW5kIEFjcm9iYXQgaXMgZXF1YWxseSBoYXBweSB3aXRoIHRoYXQKLWFzIHRoZSBvcmlnaW5hbCBuYW1lLgotCi1JZiB0aGUgVG9Vbmljb2RlIHZhbHVlIGlzbid0IGEgbmFtZSBvYmplY3QsIG9yIGlzbid0IG9uZSBvZiB0aGUKLWlkZW50aXRpZXMgdGhlbiB3ZSBwcm9jZWVkIGFzIGJlZm9yZS4gVGhpcyBtZWFucyB3ZSB3aWxsIHByaW50IGEKLXdhcm5pbmcgZm9yIG5vbiBjb25mb3JtaW5nIFRvVW5pY29kZSBlbnRyaWVzIGFuZCBpZ25vcmUgdGhlbS4KLQotQ1ZFOiBDVkUtMjAxOS0xNDgxNwotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbZ2l0Oi8vZ2l0Lmdob3N0c2NyaXB0LmNvbS9naG9zdHBkbC5naXRdCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZWZhbiBHaGluZWEgPHN0ZWZhbi5naGluZWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIFJlc291cmNlL0luaXQvcGRmX2ZvbnQucHMgfCAyMDAgKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTI5IGluc2VydGlvbnMoKyksIDcxIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9wZGZfZm9udC5wcyBiL1Jlc291cmNlL0luaXQvcGRmX2ZvbnQucHMKLWluZGV4IDlmYjg1ZjYuLjJkZjMzMDMgMTAwNjQ0Ci0tLS0gYS9SZXNvdXJjZS9Jbml0L3BkZl9mb250LnBzCi0rKysgYi9SZXNvdXJjZS9Jbml0L3BkZl9mb250LnBzCi1AQCAtNjIxLDg2ICs2MjEsMTQ0IEBAIGN1cnJlbnRkaWN0IGVuZCByZWFkb25seSBkZWYKLSAgICAgICAgIFBERkRFQlVHIHsKLSAgICAgICAgICAgKC5wcm9jZXNzVG9Vbmljb2RlIGJlZykgPQotICAgICAgICAgfSBpZgotLSAgICAgICAgMiBpbmRleCAvVG9Vbmljb2RlIGtub3dub2dldCB7Ci0tICAgICAgICAgIGR1cCB0eXBlIC9kaWN0dHlwZSBlcSB7IGR1cCAvRmlsZSBrbm93biBub3QgfSB7IC8vdHJ1ZSB9IGlmZWxzZSB7Ci0tICAgICAgICAgICAgJSBXZSB1bmRlZmluZSB3cm9uZyAvTGVuZ3RoIGFuZCBkZWZpbmUgL0ZpbGUgaW4gc3RyZWFtIGRpY3Rpb25hcmllcy4KLS0gICAgICAgICAgICAlIEJ1ZzY4NzM1MS5wZGYgZGVmaW5lcyAvVG9Vbmljb2RlIC9JZGVudGl0eS1ILCB3aGF0IGlzIGluY29ycmVjdC4KLS0gICAgICAgICAgICAoICAgKioqKiBXYXJuaW5nOiBJZ25vcmluZyBiYWQgVG9Vbmljb2RlIENNYXAuXG4pICBwZGZmb3JtYXR3YXJuaW5nCi0tICAgICAgICAgICAgcG9wCi0rCi0rICAgICAgICAyIGluZGV4IC9Ub1VuaWNvZGUga25vd25vZ2V0Ci0rICAgICAgICB7Ci0rICAgICAgICAgICAgZHVwIHR5cGUgL25hbWV0eXBlIGVxIHsKLSsgICAgICAgICAgICAgICUgVGhpcyBpcyBjb250cmFyeSB0byB0aGUgc3BlY2lmaWNhdGlvbiBidXQgaXQgc2VlbXMgdGhhdCBBY3JvYmF0IGF0IGxlYXN0IHdpbGwgYWNjZXB0Ci0rICAgICAgICAgICAgICAlIGEgVG9Vbmljb2RlIHdpdGggYSB2YWx1ZSBvZiBJZGVudGl0eS1IICphbmQqIHdpbGwgdXNlIHRoYXQgZm9yIHNlYXJjaCwgY29weS9wYXN0ZS4KLSsgICAgICAgICAgICAgICUgV2UgY2FuJ3QgcGFzcyB0aHJvdWdoIGEgbmFtZSwgc28gdGhlIGJlc3Qgd2UgY2FuIGRvIGlzIGJ1aWxkIGEgR2x5cGhOYW1lczJVbmljb2RlCi0rICAgICAgICAgICAgICAlIG1hcCBtYXRjaGluZyB0aGF0IHdoaWNoIHdvdWxkIGhhdmUgYmVlbiBnZW5lcmF0ZWQgYnkgYSBmdWxsIDE2LWJpdCBJZGVudGl0eSBDTWFwCi0rICAgICAgICAgICAgICAlCi0rICAgICAgICAgICAgICAlIFNlZSBidWcgbnVtYmVycyA3MDEwMDMgYW5kIDY4NzM1MQotKyAgICAgICAgICAgICAgJQotKyAgICAgICAgICAgICAgZHVwIC9JZGVudGl0eS1IIGVxIDEgaW5kZXggL0lkZW50aXR5LVYgZXEgb3J7Ci0rICAgICAgICAgICAgICAgIHBvcAotKyAgICAgICAgICAgICAgICAxIGluZGV4IC9Gb250SW5mbyAua25vd25nZXQgbm90IHsKLSsgICAgICAgICAgICAgICAgICBjdXJyZW50Z2xvYmFsIDIgaW5kZXggZHVwIGdjaGVjayBzZXRnbG9iYWwKLSsgICAgICAgICAgICAgICAgICAvRm9udEluZm8gNSBkaWN0IGR1cCA1IDEgcm9sbCAuZm9yY2VwdXQKLSsgICAgICAgICAgICAgICAgICBzZXRnbG9iYWwKLSsgICAgICAgICAgICAgICAgfSBpZgotKyAgICAgICAgICAgICAgICBkdXAgL0dseXBoTmFtZXMyVW5pY29kZSAua25vd25nZXQgbm90IHsKLSsgICAgICAgICAgICAgICAgICAvL3RydWUgICAgICAgICAgICAgICAgICAgICAgICAlIE5vIGV4aXN0aW5nIEcyVSwgbWFrZSBvbmUKLSsgICAgICAgICAgICAgICAgfSB7Ci0rICAgICAgICAgICAgICAgICAgZHVwIHdjaGVjayB7Ci0rICAgICAgICAgICAgICAgICAgICAvL2ZhbHNlICAgICAgICAgICAgICAgICAgICAgJSBFeGlzdGluZywgd3JpdGVhYmxlIEcyVSwgZG9uJ3QgbWFrZSBuZXcgb25lCi0rICAgICAgICAgICAgICAgICAgfSB7Ci0rICAgICAgICAgICAgICAgICAgICBwb3AgLy90cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAlIEV4aXN0aW5nIHJlYWQgb25seSBHMlUsIG1ha2UgbmV3IG9uZQotKyAgICAgICAgICAgICAgICAgIH0gaWZlbHNlCi0rICAgICAgICAgICAgICAgIH0gaWZlbHNlCi0rICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICBjdXJyZW50Z2xvYmFsIGV4Y2ggZHVwIGdjaGVjayBzZXRnbG9iYWwKLSsgICAgICAgICAgICAgICAgICBkdXAgL0dseXBoTmFtZXMyVW5pY29kZSAxMDAgZGljdCBkdXAgNCAxIHJvbGwgLmZvcmNlcHV0Ci0rICAgICAgICAgICAgICAgICAgMyAyIHJvbGwgc2V0Z2xvYmFsCi0rICAgICAgICAgICAgICAgIH0gaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCBlbmNvZGluZ3xudWxsIGZvbnQtaW5mbyBnMnUKLSsKLSsgICAgICAgICAgICAgICAgMCAxIDY1NTM1ewotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBnMnUgaW5kZXgKLSsgICAgICAgICAgICAgICAgICBkdXAgZHVwIDI1NiBtb2QgZXhjaCAyNTYgaWRpdiAgICAgICAgICUgZzJ1IGluZGV4IGxvLWJ5dGUgaGktYnl0ZQotKyAgICAgICAgICAgICAgICAgIDIgc3RyaW5nIGR1cCAwIDQgLTEgcm9sbCAgICAgICAgICAgICAgJSBnMnUgaW5kZXggbG8tYnl0ZSAoKSAoKSAwIGhpLWJ5dGUKLSsgICAgICAgICAgICAgICAgICBwdXQgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZzJ1IGluZGV4IGxvLWJ5dGUgKHgpCi0rICAgICAgICAgICAgICAgICAgZHVwIDEgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGcydSBpbmRleCBsby1ieXRlICh4KSAoeCkgMQotKyAgICAgICAgICAgICAgICAgIDQgLTEgcm9sbCBwdXQgICAgICAgICAgICAgICAgICAgICAgICAgJSBnMnUgaW5kZXggKHgpICh4KSAxIGxvLWJ5dGUgLT4gZGljdCBpbmRleCAoeHgpCi0rICAgICAgICAgICAgICAgICAgMiBpbmRleCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGcydSBpbmRleCAoeHgpIGRpY3QKLSsgICAgICAgICAgICAgICAgICAzIDEgcm9sbCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZzJ1IGcydSBpbmRleCAoeHgpCi0rICAgICAgICAgICAgICAgICAgcHV0ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGcydQotKyAgICAgICAgICAgICAgICB9IGZvcgotKyAgICAgICAgICAgICAgICBwb3AgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBmb250LXJlcyBmb250LWRpY3QgZW5jb2Rpbmd8bnVsbCBmb250LWluZm8KLSsgICAgICAgICAgICAgICAgcG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IGVuY29kaW5nfG51bGwKLSsgICAgICAgICAgICAgICAgLy9mYWxzZSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgV2UgYnVpbHQgYSBHbHlwaE5hbWVzMlVuaWNvZGUgdGFibGUsIGRvbid0IG5lZWQgdG8gcHJvY2VzcyBmdXJ0aGVyCi0rICAgICAgICAgICAgICB9ewotKyAgICAgICAgICAgICAgICAvL3RydWUgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBuYW1lIGlzIG5vdCBJZGVudGl0eS1WIG9yIEgsIGZhaWwgYnkgZmFsbGluZyB0aHJvdWdoCi0rICAgICAgICAgICAgICB9aWZlbHNlCi0gICAgICAgICAgIH0gewotLSAgICAgICAgICAgIC9QREZTY2FuUnVsZXMgLmdldHVzZXJwYXJhbSBkdXAgLy9udWxsIGVxIHsKLS0gICAgICAgICAgICAgIHBvcCAvL1BERlNjYW5SdWxlc19udWxsCi0tICAgICAgICAgICAgfSB7Ci0tICAgICAgICAgICAgICAxIGRpY3QgZHVwIC9QREZTY2FuUnVsZXMgNCAtMSByb2xsIHB1dAotLSAgICAgICAgICAgIH0gaWZlbHNlCi0tICAgICAgICAgICAgLy9QREZTY2FuUnVsZXNfdHJ1ZSBzZXR1c2VycGFyYW1zCi0tICAgICAgICAgICAgUERGZmlsZSBmaWxlcG9zaXRpb24KLS0gICAgICAgICAgICAzIC0xIHJvbGwKLS0gICAgICAgICAgICBjb3VudCAxIHN1YgotLSAgICAgICAgICAgIGNvdW50ZGljdHN0YWNrCi0tICAgICAgICAgICAgeyAvL2ZhbHNlIHJlc29sdmVzdHJlYW0KLS0gICAgICAgICAgICAgICUgRm9sbG93aW5nIEFjcm9iYXQgd2UgaWdub3JlIGV2ZXJ5dGhpbmcgb3V0c2lkZQotLSAgICAgICAgICAgICAgJSAgIGJlZ2luY29kZXNwYWNlcmFuZ2UgLi4gZW5kY21hcC4KLS0gICAgICAgICAgICAgIGR1cCAwIChiZWdpbmNvZGVzcGFjZXJhbmdlKSAvU3ViRmlsZURlY29kZSBmaWx0ZXIgZmx1c2hmaWxlCi0tICAgICAgICAgICAgICAvQ0lESW5pdCAvUHJvY1NldCBmaW5kcmVzb3VyY2UgYmVnaW4KLS0gICAgICAgICAgICAgIC8vVG9Vbmljb2RlQ01hcFJlYWRlciBiZWdpbgotLSAgICAgICAgICAgICAgMTIgZGljdCBiZWdpbgotLSAgICAgICAgICAgICAgL0NNYXBUeXBlIDIgZGVmCi0tICAgICAgICAgICAgICBtYXJrIGV4Y2ggJSBlbXVsYXRlICdiZWdpbmNvZGVzcGFjZXJhbmdlJwotLSAgICAgICAgICAgICAgMCAoZW5kY21hcCkgL1N1YkZpbGVEZWNvZGUgZmlsdGVyIGN2eCAvYmVnaW5jbWFwIGN2eCBleGNoIDIgLmV4ZWNuCi0tICAgICAgICAgICAgICBlbmRjbWFwCi0tICAgICAgICAgICAgICB1c2VyZGljdCAvLmxhc3RUb1VuaWNvZGUgY3VycmVudGRpY3QgcHV0Ci0tICAgICAgICAgICAgICBlbmQgZW5kIGVuZAotLSAgICAgICAgICAgIH0KLSsgICAgICAgICAgICAvL3RydWUKLSsgICAgICAgICAgfSBpZmVsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbm90IGEgbmFtZSwgdHJ5IGFzIGEgZGljdGlvbmFyeSAoYXMgc3BlY2lmaWVkKQotIAotLSAgICAgICAgICAgIFBERlNUT1BPTkVSUk9SIHsKLS0gICAgICAgICAgICAgIHsgZXhlYyB9IDAgZ2V0Ci0tICAgICAgICAgICAgICAvL2ZhbHNlCi0tICAgICAgICAgICAgICA1IC0yIHJvbGwKLS0gICAgICAgICAgICAgIDUKLSsgICAgICAgICAgJSBJZiB0aGUgVG9Vbmljb2RlIGlzbid0IGEgbmFtZSwgb3IgdGhlIG5hbWUgaXNuJ3QgSWRlbnRpdHktViBvciAtSCB0aGVuIGZvbGxvdyB0aGUgc3BlY2lmaWNhdGlvbgotKyAgICAgICAgICAlIElmIGl0cyBub3QgYSBkaWN0aW9uYXJ5IHR5cGUgdGhyb3cgYW4gZXJyb3IsIG90aGVyd2lzZSBkZWNvZGUgaXQgYW5kIGJ1aWxkIGEgR2x5cGhOYW1lczJVbmljb2RlCi0rICAgICAgICAgICUKLSsgICAgICAgICAgewotKyAgICAgICAgICAgIGR1cCB0eXBlIC9kaWN0dHlwZSBlcSB7IGR1cCAvRmlsZSBrbm93biBub3QgfSB7IC8vdHJ1ZSB9IGlmZWxzZSB7Ci0rICAgICAgICAgICAgICAlIFdlIHVuZGVmaW5lIHdyb25nIC9MZW5ndGggYW5kIGRlZmluZSAvRmlsZSBpbiBzdHJlYW0gZGljdGlvbmFyaWVzLgotKyAgICAgICAgICAgICAgJSBCdWc2ODczNTEucGRmIGRlZmluZXMgL1RvVW5pY29kZSAvSWRlbnRpdHktSCwgd2hhdCBpcyBpbmNvcnJlY3QuCi0rICAgICAgICAgICAgICAoICAgKioqKiBXYXJuaW5nOiBJZ25vcmluZyBiYWQgVG9Vbmljb2RlIENNYXAuXG4pICBwZGZmb3JtYXR3YXJuaW5nCi0rICAgICAgICAgICAgICBwb3AKLSAgICAgICAgICAgICB9IHsKLS0gICAgICAgICAgICAgIHsgc3RvcHBlZCB9IDAgZ2V0Ci0tICAgICAgICAgICAgICA0IDIgcm9sbAotLSAgICAgICAgICAgICAgNAotLSAgICAgICAgICAgIH0gaWZlbHNlCi0tICAgICAgICAgICAgYXJyYXkgYXN0b3JlIGN2eCBleGVjCi0rICAgICAgICAgICAgICAvUERGU2NhblJ1bGVzIC5nZXR1c2VycGFyYW0gZHVwIC8vbnVsbCBlcSB7Ci0rICAgICAgICAgICAgICAgIHBvcCAvL1BERlNjYW5SdWxlc19udWxsCi0rICAgICAgICAgICAgICB9IHsKLSsgICAgICAgICAgICAgICAgMSBkaWN0IGR1cCAvUERGU2NhblJ1bGVzIDQgLTEgcm9sbCBwdXQKLSsgICAgICAgICAgICAgIH0gaWZlbHNlCi0rICAgICAgICAgICAgICAvL1BERlNjYW5SdWxlc190cnVlIHNldHVzZXJwYXJhbXMKLSsgICAgICAgICAgICAgIFBERmZpbGUgZmlsZXBvc2l0aW9uCi0rICAgICAgICAgICAgICAzIC0xIHJvbGwKLSsgICAgICAgICAgICAgIGNvdW50IDEgc3ViCi0rICAgICAgICAgICAgICBjb3VudGRpY3RzdGFjawotKyAgICAgICAgICAgICAgeyAvL2ZhbHNlIHJlc29sdmVzdHJlYW0KLSsgICAgICAgICAgICAgICAgJSBGb2xsb3dpbmcgQWNyb2JhdCB3ZSBpZ25vcmUgZXZlcnl0aGluZyBvdXRzaWRlCi0rICAgICAgICAgICAgICAgICUgICBiZWdpbmNvZGVzcGFjZXJhbmdlIC4uIGVuZGNtYXAuCi0rICAgICAgICAgICAgICAgIGR1cCAwIChiZWdpbmNvZGVzcGFjZXJhbmdlKSAvU3ViRmlsZURlY29kZSBmaWx0ZXIgZmx1c2hmaWxlCi0rICAgICAgICAgICAgICAgIC9DSURJbml0IC9Qcm9jU2V0IGZpbmRyZXNvdXJjZSBiZWdpbgotKyAgICAgICAgICAgICAgICAvL1RvVW5pY29kZUNNYXBSZWFkZXIgYmVnaW4KLSsgICAgICAgICAgICAgICAgMTIgZGljdCBiZWdpbgotKyAgICAgICAgICAgICAgICAvQ01hcFR5cGUgMiBkZWYKLSsgICAgICAgICAgICAgICAgbWFyayBleGNoICUgZW11bGF0ZSAnYmVnaW5jb2Rlc3BhY2VyYW5nZScKLSsgICAgICAgICAgICAgICAgMCAoZW5kY21hcCkgL1N1YkZpbGVEZWNvZGUgZmlsdGVyIGN2eCAvYmVnaW5jbWFwIGN2eCBleGNoIDIgLmV4ZWNuCi0rICAgICAgICAgICAgICAgIGVuZGNtYXAKLSsgICAgICAgICAgICAgICAgdXNlcmRpY3QgLy5sYXN0VG9Vbmljb2RlIGN1cnJlbnRkaWN0IHB1dAotKyAgICAgICAgICAgICAgICBlbmQgZW5kIGVuZAotKyAgICAgICAgICAgICAgfQotIAotLSAgICAgICAgICAgIGNvdW50ZGljdHN0YWNrIGV4Y2ggc3ViIDAgLm1heCB7IGVuZCB9IHJlcGVhdAotLSAgICAgICAgICAgIGNvdW50IGV4Y2ggc3ViIDIgc3ViIDAgLm1heCB7IGV4Y2ggcG9wIH0gcmVwZWF0Ci0tICAgICAgICAgICAgMyAxIHJvbGwgICAgICAgICAgICAgICAgICAgICAlIFN0YWNoIHRoZSBzdG9wIGZsYWcuCi0tICAgICAgICAgICAgUERGZmlsZSBleGNoIHNldGZpbGVwb3NpdGlvbgotLSAgICAgICAgICAgIHNldHVzZXJwYXJhbXMKLS0gICAgICAgICAgICB7Ci0tICAgICAgICAgICAgICAoICAgKioqKiBXYXJuaW5nOiBGYWlsZWQgdG8gcmVhZCBUb1VuaWNvZGUgQ01hcC5cbikgIHBkZmZvcm1hdHdhcm5pbmcKLS0gICAgICAgICAgICB9IHsKLS0gICAgICAgICAgICAgIDEgaW5kZXggL0ZvbnRJbmZvIC5rbm93bmdldCBub3QgewotLSAgICAgICAgICAgICAgICBjdXJyZW50Z2xvYmFsIDIgaW5kZXggZHVwIGdjaGVjayBzZXRnbG9iYWwKLS0gICAgICAgICAgICAgICAgL0ZvbnRJbmZvIDUgZGljdCBkdXAgNSAxIHJvbGwgLmZvcmNlcHV0Ci0tICAgICAgICAgICAgICAgIHNldGdsb2JhbAotLSAgICAgICAgICAgICAgfSBpZgotLSAgICAgICAgICAgICAgZHVwIC9HbHlwaE5hbWVzMlVuaWNvZGUgLmtub3duZ2V0IG5vdCB7Ci0tICAgICAgICAgICAgICAgIC8vdHJ1ZSAgICAgICAgICAgICAgICAgICAgICAgICUgTm8gZXhpc3RpbmcgRzJVLCBtYWtlIG9uZQotKyAgICAgICAgICAgICAgUERGU1RPUE9ORVJST1IgewotKyAgICAgICAgICAgICAgICB7IGV4ZWMgfSAwIGdldAotKyAgICAgICAgICAgICAgICAvL2ZhbHNlCi0rICAgICAgICAgICAgICAgIDUgLTIgcm9sbAotKyAgICAgICAgICAgICAgICA1Ci0rICAgICAgICAgICAgICB9IHsKLSsgICAgICAgICAgICAgICAgeyBzdG9wcGVkIH0gMCBnZXQKLSsgICAgICAgICAgICAgICAgNCAyIHJvbGwKLSsgICAgICAgICAgICAgICAgNAotKyAgICAgICAgICAgICAgfSBpZmVsc2UKLSsgICAgICAgICAgICAgIGFycmF5IGFzdG9yZSBjdnggZXhlYwotKwotKyAgICAgICAgICAgICAgY291bnRkaWN0c3RhY2sgZXhjaCBzdWIgMCAubWF4IHsgZW5kIH0gcmVwZWF0Ci0rICAgICAgICAgICAgICBjb3VudCBleGNoIHN1YiAyIHN1YiAwIC5tYXggeyBleGNoIHBvcCB9IHJlcGVhdAotKyAgICAgICAgICAgICAgMyAxIHJvbGwgICAgICAgICAgICAgICAgICAgICAlIFN0YWNoIHRoZSBzdG9wIGZsYWcuCi0rICAgICAgICAgICAgICBQREZmaWxlIGV4Y2ggc2V0ZmlsZXBvc2l0aW9uCi0rICAgICAgICAgICAgICBzZXR1c2VycGFyYW1zCi0rICAgICAgICAgICAgICB7Ci0rICAgICAgICAgICAgICAgICggICAqKioqIFdhcm5pbmc6IEZhaWxlZCB0byByZWFkIFRvVW5pY29kZSBDTWFwLlxuKSAgcGRmZm9ybWF0d2FybmluZwotICAgICAgICAgICAgICAgfSB7Ci0tICAgICAgICAgICAgICAgIGR1cCB3Y2hlY2sgewotLSAgICAgICAgICAgICAgICAgIC8vZmFsc2UgICAgICAgICAgICAgICAgICAgICAlIEV4aXN0aW5nLCB3cml0ZWFibGUgRzJVLCBkb24ndCBtYWtlIG5ldyBvbmUKLSsgICAgICAgICAgICAgICAgMSBpbmRleCAvRm9udEluZm8gLmtub3duZ2V0IG5vdCB7Ci0rICAgICAgICAgICAgICAgICAgY3VycmVudGdsb2JhbCAyIGluZGV4IGR1cCBnY2hlY2sgc2V0Z2xvYmFsCi0rICAgICAgICAgICAgICAgICAgL0ZvbnRJbmZvIDUgZGljdCBkdXAgNSAxIHJvbGwgLmZvcmNlcHV0Ci0rICAgICAgICAgICAgICAgICAgc2V0Z2xvYmFsCi0rICAgICAgICAgICAgICAgIH0gaWYKLSsgICAgICAgICAgICAgICAgZHVwIC9HbHlwaE5hbWVzMlVuaWNvZGUgLmtub3duZ2V0IG5vdCB7Ci0rICAgICAgICAgICAgICAgICAgLy90cnVlICAgICAgICAgICAgICAgICAgICAgICAgJSBObyBleGlzdGluZyBHMlUsIG1ha2Ugb25lCi0gICAgICAgICAgICAgICAgIH0gewotLSAgICAgICAgICAgICAgICAgIHBvcCAvL3RydWUgICAgICAgICAgICAgICAgICAgICAgICAgICUgRXhpc3RpbmcgcmVhZCBvbmx5IEcyVSwgbWFrZSBuZXcgb25lCi0rICAgICAgICAgICAgICAgICAgZHVwIHdjaGVjayB7Ci0rICAgICAgICAgICAgICAgICAgICAvL2ZhbHNlICAgICAgICAgICAgICAgICAgICAgJSBFeGlzdGluZywgd3JpdGVhYmxlIEcyVSwgZG9uJ3QgbWFrZSBuZXcgb25lCi0rICAgICAgICAgICAgICAgICAgfSB7Ci0rICAgICAgICAgICAgICAgICAgICBwb3AgLy90cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAlIEV4aXN0aW5nIHJlYWQgb25seSBHMlUsIG1ha2UgbmV3IG9uZQotKyAgICAgICAgICAgICAgICAgIH0gaWZlbHNlCi0gICAgICAgICAgICAgICAgIH0gaWZlbHNlCi0rICAgICAgICAgICAgICAgIHsKLSsgICAgICAgICAgICAgICAgICBjdXJyZW50Z2xvYmFsIGV4Y2ggZHVwIGdjaGVjayBzZXRnbG9iYWwKLSsgICAgICAgICAgICAgICAgICBkdXAgL0dseXBoTmFtZXMyVW5pY29kZSAxMDAgZGljdCBkdXAgNCAxIHJvbGwgLmZvcmNlcHV0Ci0rICAgICAgICAgICAgICAgICAgMyAyIHJvbGwgc2V0Z2xvYmFsCi0rICAgICAgICAgICAgICAgIH0gaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCBlbmNvZGluZ3xudWxsIGZvbnQtaW5mbyBnMnUKLSsgICAgICAgICAgICAgICAgZXhjaCBwb3AgZXhjaCAgICAgICAgICAgICAgICAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IGcydSBlbmNvZGluZ3xudWxsCi0rICAgICAgICAgICAgICAgIHVzZXJkaWN0IC8ubGFzdFRvVW5pY29kZSBnZXQgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCBnMnUgRW5jb2Rpbmd8bnVsbCBDTWFwCi0rICAgICAgICAgICAgICAgIC5jb252ZXJ0X1RvVW5pY29kZS1pbnRvLWcydSAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdAotKyAgICAgICAgICAgICAgICAvL251bGwgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSBmb250LXJlcyBmb250LWRpY3QgLy9udWxsCi0gICAgICAgICAgICAgICB9IGlmZWxzZQotLSAgICAgICAgICAgICAgewotLSAgICAgICAgICAgICAgICBjdXJyZW50Z2xvYmFsIGV4Y2ggZHVwIGdjaGVjayBzZXRnbG9iYWwKLS0gICAgICAgICAgICAgICAgZHVwIC9HbHlwaE5hbWVzMlVuaWNvZGUgMTAwIGRpY3QgZHVwIDQgMSByb2xsIC5mb3JjZXB1dAotLSAgICAgICAgICAgICAgICAzIDIgcm9sbCBzZXRnbG9iYWwKLS0gICAgICAgICAgICAgIH0gaWYgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCBlbmNvZGluZ3xudWxsIGZvbnQtaW5mbyBnMnUKLS0gICAgICAgICAgICAgIGV4Y2ggcG9wIGV4Y2ggICAgICAgICAgICAgICAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCBnMnUgZW5jb2Rpbmd8bnVsbAotLSAgICAgICAgICAgICAgdXNlcmRpY3QgLy5sYXN0VG9Vbmljb2RlIGdldCAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IGcydSBFbmNvZGluZ3xudWxsIENNYXAKLS0gICAgICAgICAgICAgIC5jb252ZXJ0X1RvVW5pY29kZS1pbnRvLWcydSAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdAotLSAgICAgICAgICAgICAgLy9udWxsICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IC8vbnVsbAotICAgICAgICAgICAgIH0gaWZlbHNlCi0tICAgICAgICAgIH0gaWZlbHNlCi0tICAgICAgICB9IGlmCi0tICAgICAgICBQREZERUJVRyB7Ci0tICAgICAgICAgICgucHJvY2Vzc1RvVW5pY29kZSBlbmQpID0KLSsgICAgICAgICAgfSBpZgotKyAgICAgICAgICBQREZERUJVRyB7Ci0rICAgICAgICAgICAgKC5wcm9jZXNzVG9Vbmljb2RlIGVuZCkgPQotKyAgICAgICAgICB9IGlmCi0gICAgICAgICB9IGlmCi0gICAgICAgfSBpZgotICAgICB9IHN0b3BwZWQKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE5LTE0ODE3LTAwMDIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9DVkUtMjAxOS0xNDgxNy0wMDAyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2MzQ4ZmZmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE5LTE0ODE3LTAwMDIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMzYgKzAsMCBAQAotRnJvbSBjZDFiMWNhY2FkYWMyNDc5ZTI5MWVmZTYxMTk3OWJkYzFiM2JkYjE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2VuIFNoYXJwIDxrZW4uc2hhcnBAYXJ0aWZleC5jb20+Ci1EYXRlOiBXZWQsIDIxIEF1ZyAyMDE5IDEwOjEwOjUxICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBQREYgaW50ZXJwcmV0ZXIgLSByZXZpZXcgLmZvcmNlcHV0IHNlY3VyaXR5Ci0KLUJ1ZyAjNzAxNDUwICJTYWZlciBNb2RlIEJ5cGFzcyBieSAuZm9yY2VwdXQgRXhwb3N1cmUgaW4gLnBkZmV4ZWN0b2tlbiIKLQotQnkgYWJ1c2luZyB0aGUgZXJyb3IgaGFuZGxlciBpdCB3YXMgcG9zc2libGUgdG8gZ2V0IHRoZSBQREZERUJVRyBwb3J0aW9uCi1vZiAucGRmZXhlY3Rva2VuLCB3aGljaCB1c2VzIC5mb3JjZXB1dCBsZWZ0IHJlYWRhYmxlLgotCi1BZGQgYW4gZXhlY3V0ZW9ubHkgYXBwcm9wcmlhdGVseSB0byBtYWtlIHN1cmUgdGhhdCBjbGF1c2UgaXNuJ3QgcmVhZGFibGUKLW5vIG1zdHRlciB3aGF0LgotCi1SZXZpZXcgYWxsIHRoZSB1c2VzIG9mIC5mb3JjZXB1dCBzZWFyY2hpbmcgZm9yIHNpbWlsYXIgY2FzZXMsIGFkZAotZXhlY3V0ZW9ubHkgYXMgcmVxdWlyZWQgdG8gc2VjdXJlIHRob3NlLiBBbGwgY2FzZXMgaW4gdGhlIFBvc3RTY3JpcHQKLXN1cHBvcnQgZmlsZXMgc2VlbSB0byBiZSBjb3ZlcmVkIGFscmVhZHkuCi0KLUNWRTogQ1ZFLTIwMTktMTQ4MTcKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5naG9zdHNjcmlwdC5jb20vZ2hvc3RwZGwuZ2l0XQotCi1TaWduZWQtb2ZmLWJ5OiBTdGVmYW4gR2hpbmVhIDxzdGVmYW4uZ2hpbmVhQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBSZXNvdXJjZS9Jbml0L3BkZl9iYXNlLnBzIHwgIDIgKy0KLSBSZXNvdXJjZS9Jbml0L3BkZl9kcmF3LnBzIHwgMTQgKysrKysrKy0tLS0tLS0KLSBSZXNvdXJjZS9Jbml0L3BkZl9mb250LnBzIHwgMjkgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0KLSBSZXNvdXJjZS9Jbml0L3BkZl9tYWluLnBzIHwgIDYgKysrLS0tCi0gUmVzb3VyY2UvSW5pdC9wZGZfb3BzLnBzICB8IDExICsrKysrKy0tLS0tCi0gNSBmaWxlcyBjaGFuZ2VkLCAzMyBpbnNlcnRpb25zKCspLCAyOSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvcGRmX2Jhc2UucHMgYi9SZXNvdXJjZS9Jbml0L3BkZl9iYXNlLnBzCi1pbmRleCAxYTIxOGY0Li5jZmZkZTVjIDEwMDY0NAotLS0tIGEvUmVzb3VyY2UvSW5pdC9wZGZfYmFzZS5wcwotKysrIGIvUmVzb3VyY2UvSW5pdC9wZGZfYmFzZS5wcwotQEAgLTE1Nyw3ICsxNTcsNyBAQCBjdXJyZW50ZGljdCAvbnVtLWNoYXJzLWRpY3QgLnVuZGVmCi0gICAgIHsKLSAgICAgICBkdXAgPT1vbmx5ICgpID0gZmx1c2gKLSAgICAgfSBpZmVsc2UgJSBQREZTVEVQCi0tICB9IGlmICUgUERGREVCVUcKLSsgIH0gZXhlY3V0ZW9ubHkgaWYgJSBQREZERUJVRwotICAgMiBjb3B5IC5rbm93bmdldCB7Ci0gICAgIGV4Y2ggcG9wIGV4Y2ggcG9wIGV4Y2ggcG9wIGV4ZWMKLSAgIH0gewotZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvcGRmX2RyYXcucHMgYi9SZXNvdXJjZS9Jbml0L3BkZl9kcmF3LnBzCi1pbmRleCBlMThhN2MyLi4wYTM5MjRjIDEwMDY0NAotLS0tIGEvUmVzb3VyY2UvSW5pdC9wZGZfZHJhdy5wcwotKysrIGIvUmVzb3VyY2UvSW5pdC9wZGZfZHJhdy5wcwotQEAgLTUwMSw4ICs1MDEsOCBAQCBlbmQKLSAgICAgICAoICAgICAgICBPdXRwdXQgbWF5IGJlIGluY29ycmVjdC5cbikgcGRmZm9ybWF0ZXJyb3IKLSAgICAgICAvL3BkZmRpY3QgLy5nc193YXJuaW5nX2lzc3VlZCAvL3RydWUgLmZvcmNlcHV0Ci0gICAgICAgUERGU1RPUE9ORVJST1IgeyAvZ3MgL3VuZGVmaW5lZCBzaWduYWxlcnJvciB9IGlmCi0tICAgIH0gaWYKLS0gIH0KLSsgICAgfSBleGVjdXRlb25seSBpZgotKyAgfSBleGVjdXRlb25seQotICAgaWZlbHNlCi0gfSBiaW5kIGV4ZWN1dGVvbmx5IGRlZgotIAotQEAgLTExNDIsNyArMTE0Miw3IEBAIGN1cnJlbnRkaWN0IGVuZCByZWFkb25seSBkZWYKLSAgICAgICAgICAgLnNldGdsb2JhbAotICAgICAgICAgICBwZGZmb3JtYXRlcnJvcgotICAgICAgICAgfSBleGVjdXRlb25seSBpZmVsc2UKLS0gICAgICB9Ci0rICAgICAgfSBleGVjdXRlb25seQotICAgICAgIHsKLSAgICAgICAgIGN1cnJlbnRnbG9iYWwgLy9wZGZkaWN0IGdjaGVjayAuc2V0Z2xvYmFsCi0gICAgICAgICAvL3BkZmRpY3QgLy5RcXdhcm5pbmdfaXNzdWVkIC8vdHJ1ZSAuZm9yY2VwdXQKLUBAIC0xMTUwLDggKzExNTAsOCBAQCBjdXJyZW50ZGljdCBlbmQgcmVhZG9ubHkgZGVmCi0gICAgICAgICBwZGZmb3JtYXRlcnJvcgotICAgICAgIH0gZXhlY3V0ZW9ubHkgaWZlbHNlCi0gICAgICAgZW5kCi0tICAgIH0gaWZlbHNlCi0tICB9IGxvb3AKLSsgICAgfSBleGVjdXRlb25seSBpZmVsc2UKLSsgIH0gZXhlY3V0ZW9ubHkgbG9vcAotICAgewotICAgICAoXG4gICAqKioqIEVycm9yOiBGaWxlIGhhcyB1bmJhbGFuY2VkIHEvUSBvcGVyYXRvcnMgXCh0b28gbWFueSBxJ3NcKVxuICAgICAgICAgICAgICAgT3V0cHV0IG1heSBiZSBpbmNvcnJlY3QuXG4pCi0gICAgIC8vcGRmZGljdCAvLlFxd2FybmluZ19pc3N1ZWQgLmtub3duZ2V0Ci1AQCAtMTE2NSwxNCArMTE2NSwxNCBAQCBjdXJyZW50ZGljdCBlbmQgcmVhZG9ubHkgZGVmCi0gICAgICAgICAuc2V0Z2xvYmFsCi0gICAgICAgICBwZGZmb3JtYXRlcnJvcgotICAgICAgIH0gZXhlY3V0ZW9ubHkgaWZlbHNlCi0tICAgIH0KLSsgICAgfSBleGVjdXRlb25seQotICAgICB7Ci0gICAgICAgY3VycmVudGdsb2JhbCAvL3BkZmRpY3QgZ2NoZWNrIC5zZXRnbG9iYWwKLSAgICAgICAvL3BkZmRpY3QgLy5RcXdhcm5pbmdfaXNzdWVkIC8vdHJ1ZSAuZm9yY2VwdXQKLSAgICAgICAuc2V0Z2xvYmFsCi0gICAgICAgcGRmZm9ybWF0ZXJyb3IKLSAgICAgfSBleGVjdXRlb25seSBpZmVsc2UKLS0gIH0gaWYKLSsgIH0gZXhlY3V0ZW9ubHkgaWYKLSAgIHBvcAotIAotICAgJSByZXN0b3JlIHBkZmVtcHR5Y291bnQKLWRpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L3BkZl9mb250LnBzIGIvUmVzb3VyY2UvSW5pdC9wZGZfZm9udC5wcwotaW5kZXggMmRmMzMwMy4uNmE2YTVmZSAxMDA2NDQKLS0tLSBhL1Jlc291cmNlL0luaXQvcGRmX2ZvbnQucHMKLSsrKyBiL1Jlc291cmNlL0luaXQvcGRmX2ZvbnQucHMKLUBAIC02MzgsNyArNjM4LDcgQEAgY3VycmVudGRpY3QgZW5kIHJlYWRvbmx5IGRlZgotICAgICAgICAgICAgICAgICAgIGN1cnJlbnRnbG9iYWwgMiBpbmRleCBkdXAgZ2NoZWNrIHNldGdsb2JhbAotICAgICAgICAgICAgICAgICAgIC9Gb250SW5mbyA1IGRpY3QgZHVwIDUgMSByb2xsIC5mb3JjZXB1dAotICAgICAgICAgICAgICAgICAgIHNldGdsb2JhbAotLSAgICAgICAgICAgICAgICB9IGlmCi0rICAgICAgICAgICAgICAgIH0gZXhlY3V0ZW9ubHkgaWYKLSAgICAgICAgICAgICAgICAgZHVwIC9HbHlwaE5hbWVzMlVuaWNvZGUgLmtub3duZ2V0IG5vdCB7Ci0gICAgICAgICAgICAgICAgICAgLy90cnVlICAgICAgICAgICAgICAgICAgICAgICAgJSBObyBleGlzdGluZyBHMlUsIG1ha2Ugb25lCi0gICAgICAgICAgICAgICAgIH0gewotQEAgLTY2OCwxMCArNjY4LDEyIEBAIGN1cnJlbnRkaWN0IGVuZCByZWFkb25seSBkZWYKLSAgICAgICAgICAgICAgICAgcG9wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgZm9udC1yZXMgZm9udC1kaWN0IGVuY29kaW5nfG51bGwgZm9udC1pbmZvCi0gICAgICAgICAgICAgICAgIHBvcCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIGZvbnQtcmVzIGZvbnQtZGljdCBlbmNvZGluZ3xudWxsCi0gICAgICAgICAgICAgICAgIC8vZmFsc2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIFdlIGJ1aWx0IGEgR2x5cGhOYW1lczJVbmljb2RlIHRhYmxlLCBkb24ndCBuZWVkIHRvIHByb2Nlc3MgZnVydGhlcgotLSAgICAgICAgICAgICAgfXsKLSsgICAgICAgICAgICAgIH0gZXhlY3V0ZW9ubHkKLSsgICAgICAgICAgICAgIHsKLSAgICAgICAgICAgICAgICAgLy90cnVlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgbmFtZSBpcyBub3QgSWRlbnRpdHktViBvciBILCBmYWlsIGJ5IGZhbGxpbmcgdGhyb3VnaAotICAgICAgICAgICAgICAgfWlmZWxzZQotLSAgICAgICAgICB9IHsKLSsgICAgICAgICAgfSBleGVjdXRlb25seQotKyAgICAgICAgICB7Ci0gICAgICAgICAgICAgLy90cnVlCi0gICAgICAgICAgIH0gaWZlbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIG5vdCBhIG5hbWUsIHRyeSBhcyBhIGRpY3Rpb25hcnkgKGFzIHNwZWNpZmllZCkKLSAKLUBAIC03NTksOSArNzYxLDkgQEAgY3VycmVudGRpY3QgZW5kIHJlYWRvbmx5IGRlZgotICAgICAgICAgICBQREZERUJVRyB7Ci0gICAgICAgICAgICAgKC5wcm9jZXNzVG9Vbmljb2RlIGVuZCkgPQotICAgICAgICAgICB9IGlmCi0tICAgICAgICB9IGlmCi0tICAgICAgfSBpZgotLSAgICB9IHN0b3BwZWQKLSsgICAgICAgIH0gZXhlY3V0ZW9ubHkgaWYKLSsgICAgICB9IGV4ZWN1dGVvbmx5IGlmCi0rICAgIH0gZXhlY3V0ZW9ubHkgc3RvcHBlZAotICAgICB7Ci0gICAgICAgLmRzdGFja2RlcHRoIDEgY291bnRkaWN0c3RhY2sgMSBzdWIKLSAgICAgICB7cG9wIGVuZH0gZm9yCi1AQCAtMTI5MSwxOSArMTI5MywyMCBAQCBjdXJyZW50ZGljdCAvZWV4ZWNfcGRmX3BhcmFtX2RpY3QgLnVuZGVmCi0gICAgICAgICAgICAgICAgIC8vcGRmZGljdCAvLlFxd2FybmluZ19pc3N1ZWQgLy90cnVlIC5mb3JjZXB1dAotICAgICAgICAgICAgICAgfSBleGVjdXRlb25seSBpZgotICAgICAgICAgICAgICAgUQotLSAgICAgICAgICAgIH0gcmVwZWF0Ci0rICAgICAgICAgICAgfSBleGVjdXRlb25seSByZXBlYXQKLSAgICAgICAgICAgICBRCi0tICAgICAgICAgIH0gUERGZmlsZSBmaWxlcG9zaXRpb24gMiAuZXhlY24gJSBLZWVwIHBkZmNvdW50IHZhbGlkLgotKyAgICAgICAgICB9IGV4ZWN1dGVvbmx5IFBERmZpbGUgZmlsZXBvc2l0aW9uIDIgLmV4ZWNuICUgS2VlcCBwZGZjb3VudCB2YWxpZC4KLSAgICAgICAgICAgUERGZmlsZSBleGNoIHNldGZpbGVwb3NpdGlvbgotLSAgICAgICAgfSBpZmVsc2UKLS0gICAgICB9IHsKLSsgICAgICAgIH0gZXhlY3V0ZW9ubHkgaWZlbHNlCi0rICAgICAgfSBleGVjdXRlb25seQotKyAgICAgIHsKLSAgICAgICAgICUgUERGIFR5cGUgMyBmb250cyBkb24ndCB1c2UgLm5vdGRlZgotICAgICAgICAgJSBkMSBpbXBsZW1lbnRhdGlvbiBhZGp1c3RzIHRoZSB3aWR0aCBhcyBuZWVkZWQKLSAgICAgICAgIDAgMCAwIDAgMCAwCi0gICAgICAgICBwZGZvcGRpY3QgL2QxIGdldCBleGVjCi0gICAgICAgfSBpZmVsc2UKLSAgICAgICBlbmQgZW5kCi0tICAgIH0gYmRlZgotKyAgICB9IGV4ZWN1dGVvbmx5IGJkZWYKLSAgICAgZHVwIGN1cnJlbnRkaWN0IEVuY29kaW5nIC5wcm9jZXNzVG9Vbmljb2RlCi0gICAgIGN1cnJlbnRkaWN0IGVuZCAuY29tcGxldGVmb250IGV4Y2ggcG9wCi0gfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKLUBAIC0yMTAzLDkgKzIxMDYsOSBAQCBjdXJyZW50ZGljdCAvQ01hcF9yZWFkX2RpY3QgdW5kZWYKLSAgICAgICAgICAgKFdpbGwgY29udGludWUsIGJ1dCBjb250ZW50IG1heSBiZSBtaXNzaW5nLikgPSBmbHVzaAotICAgICAgICAgfSBpZmVsc2UKLSAgICAgICB9IGlmCi0tICAgIH0gaWYKLSsgICAgfSBleGVjdXRlb25seSBpZgotICAgICAvZmluZHJlc291cmNlIGN2eCAvdW5kZWZpbmVkIHNpZ25hbGVycm9yCi0tICB9IGxvb3AKLSsgIH0gZXhlY3V0ZW9ubHkgbG9vcAotIH0gYmluZCBleGVjdXRlb25seSBvZGVmCi0gCi0gL2J1aWxkQ0lEVHlwZTAgewklIDxDSURGb250VHlwZTAtZm9udC1yZXNvdXJjZT4gYnVpbGRDSURUeXBlMCA8Zm9udD4KLWRpZmYgLS1naXQgYS9SZXNvdXJjZS9Jbml0L3BkZl9tYWluLnBzIGIvUmVzb3VyY2UvSW5pdC9wZGZfbWFpbi5wcwotaW5kZXggNTMwNWVhNi4uYTU5ZTYzYyAxMDA2NDQKLS0tLSBhL1Jlc291cmNlL0luaXQvcGRmX21haW4ucHMKLSsrKyBiL1Jlc291cmNlL0luaXQvcGRmX21haW4ucHMKLUBAIC0yNzQ5LDE1ICsyNzQ5LDE1IEBAIGN1cnJlbnRkaWN0IC9QREYyUFNfbWF0cml4X2tleSB1bmRlZgotICAgICAgICAgICAuc2V0Z2xvYmFsCi0gICAgICAgICAgIHBkZmZvcm1hdGVycm9yCi0gICAgICAgICB9IGV4ZWN1dGVvbmx5IGlmZWxzZQotLSAgICAgIH0KLSsgICAgICB9IGV4ZWN1dGVvbmx5Ci0gICAgICAgewotICAgICAgICAgY3VycmVudGdsb2JhbCAvL3BkZmRpY3QgZ2NoZWNrIC5zZXRnbG9iYWwKLSAgICAgICAgIC8vcGRmZGljdCAvLlFxd2FybmluZ19pc3N1ZWQgLy90cnVlIC5mb3JjZXB1dAotICAgICAgICAgLnNldGdsb2JhbAotICAgICAgICAgcGRmZm9ybWF0ZXJyb3IKLSAgICAgICB9IGV4ZWN1dGVvbmx5IGlmZWxzZQotLSAgICB9IGlmCi0tICB9IGlmCi0rICAgIH0gZXhlY3V0ZW9ubHkgaWYKLSsgIH0gZXhlY3V0ZW9ubHkgaWYKLSAgIHBvcAotICAgY291bnQgUERGZXhlY3N0YWNrY291bnQgc3ViIHsgcG9wIH0gcmVwZWF0Ci0gICAoYWZ0ZXIgZXhlYykgVk1ERUJVRwotZGlmZiAtLWdpdCBhL1Jlc291cmNlL0luaXQvcGRmX29wcy5wcyBiL1Jlc291cmNlL0luaXQvcGRmX29wcy5wcwotaW5kZXggMjg1ZTU4Mi4uNmMxZjEwMCAxMDA2NDQKLS0tLSBhL1Jlc291cmNlL0luaXQvcGRmX29wcy5wcwotKysrIGIvUmVzb3VyY2UvSW5pdC9wZGZfb3BzLnBzCi1AQCAtMTg2LDE0ICsxODYsMTQgQEAgY3VycmVudGRpY3QgL2dwdXRfYWx3YXlzX2FsbG93IC51bmRlZgotICAgICAgICAgLnNldGdsb2JhbAotICAgICAgICAgcGRmZm9ybWF0ZXJyb3IKLSAgICAgICB9IGV4ZWN1dGVvbmx5IGlmZWxzZQotLSAgICB9Ci0rICAgIH0gZXhlY3V0ZW9ubHkKLSAgICAgewotICAgICAgIGN1cnJlbnRnbG9iYWwgLy9wZGZkaWN0IGdjaGVjayAuc2V0Z2xvYmFsCi0gICAgICAgLy9wZGZkaWN0IC8uUXF3YXJuaW5nX2lzc3VlZCAvL3RydWUgLmZvcmNlcHV0Ci0gICAgICAgLnNldGdsb2JhbAotICAgICAgIHBkZmZvcm1hdGVycm9yCi0gICAgIH0gZXhlY3V0ZW9ubHkgaWZlbHNlCi0tICB9IGlmCi0rICB9IGV4ZWN1dGVvbmx5IGlmCi0gfSBiaW5kIGV4ZWN1dGVvbmx5IG9kZWYKLSAKLSAlIFNhdmUgUERGIGdzdGF0ZQotQEAgLTQ0MCwxMSArNDQwLDEyIEBAIGN1cnJlbnRkaWN0IC9ncHV0X2Fsd2F5c19hbGxvdyAudW5kZWYKLSAgIGR1cCB0eXBlIC9ib29sZWFudHlwZSBlcSB7Ci0gICAgIC5jdXJyZW50U01hc2sgdHlwZSAvZGljdHR5cGUgZXEgewotICAgICAgIC5jdXJyZW50U01hc2sgL1Byb2Nlc3NlZCAyIGluZGV4IC5mb3JjZXB1dAotKyAgICB9IGV4ZWN1dGVvbmx5Ci0rICAgIHsKLSsgICAgICAuc2V0U01hc2sKLSsgICAgfWlmZWxzZQotICAgfSBleGVjdXRlb25seQotICAgewotLSAgICAgIC5zZXRTTWFzawotLSAgfWlmZWxzZQotLSAgfXsKLSAgIC5zZXRTTWFzawotICAgfWlmZWxzZQotIAotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvQ1ZFLTIwMTktMTQ4NjktMDAwMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE5LTE0ODY5LTAwMDEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE1ZWMxYwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L0NWRS0yMDE5LTE0ODY5LTAwMDEucGF0Y2gKQEAgLTAsMCArMSw3MCBAQAorRnJvbSA0ODU5MDQ3NzJjNWYwYWExMTQwMDMyNzQ2ZTVhMGFiZmM0MGY0Y2VmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hyaXMgTGlkZGVsbCA8Y2hyaXMubGlkZGVsbEBhcnRpZmV4LmNvbT4KK0RhdGU6IFR1ZSwgNSBOb3YgMjAxOSAwOTo0NToyNyArMDAwMAorU3ViamVjdDogW1BBVENIXSBCdWcgNzAxODQxOiByZW1vdmUgLmZvcmNlcHV0IGZyb20gLy5jaGFya2V5cworCitXaGVuIGxvYWRpbmcgVHlwZSAxIG9yIFRydWV0eXBlIGZvbnRzIGZyb20gZGlzaywgd2UgYXR0ZW1wdCB0byBleHRlbmQgdGhlIGdseXBoCituYW1lIHRhYmxlIHRvIGluY2x1ZGUgYWxsIGlkZW50aWZpYWJsZSBnbHlwaCBuYW1lcyBmcm9tIHRoZSBBZG9iZSBHbHlwaCBMaXN0LgorCitJbiB0aGUgY2FzZSBvZiBUeXBlIDEgZm9udHMsIHRoZSBmb250IGl0c2VsZiAoYWxtb3N0IGFsd2F5cykgbWFya3MgdGhlCitDaGFyU3RyaW5ncyBkaWN0aW9uYXJ5IGFzIHJlYWQtb25seSwgaGVuY2Ugd2UgaGF2ZSB0byB1c2UgLmZvcmNlcHV0IGZvciB0aGF0CitjYXNlLgorCitCdXQgZm9yIFRydWV0eXBlIGZvbnRzLCB0aGUgQ2hhclN0cmluZ3MgZGljdGlvbmFyeSBpcyBjcmVhdGVkIGludGVybmFsbHkgYW5kIGlzCitub3QgcmVhZC1vbmx5IHVudGlsICphZnRlciogd2UgaGF2ZSBmdWxseSBwb3B1bGF0ZWQgaXQgKGluY2x1ZGluZyB0aGUgZXh0ZW5kZWQKK2dseXBoIG5hbWVzIGZyb20gdGhlIEFHTCksIGhlbmNlIHRoZXJlIGlzIG5vIG5lZWQgZm9yIC5mb3JjZXB1dCwgYW5kIG5vIG5lZWQgdG8KK2NhcnJ5IHRoZSBzZWN1cml0eSByaXNrIG9mIHVzaW5nIGl0LgorCitSZXBsYWNlIHdpdGggcmVndWxhciBwdXQuCisKK0NWRTogQ1ZFLTIwMTktMTQ4NjkKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5naG9zdHNjcmlwdC5jb20vZ2hvc3RwZGwuZ2l0XQorCitTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gR2hpbmVhIDxzdGVmYW4uZ2hpbmVhQHdpbmRyaXZlci5jb20+CistLS0KKyBSZXNvdXJjZS9Jbml0L2dzX3R0Zi5wcyB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvUmVzb3VyY2UvSW5pdC9nc190dGYucHMgYi9SZXNvdXJjZS9Jbml0L2dzX3R0Zi5wcworaW5kZXggZTM0OTY3ZC4uNTM1NGZmMCAxMDA2NDQKKy0tLSBhL1Jlc291cmNlL0luaXQvZ3NfdHRmLnBzCisrKysgYi9SZXNvdXJjZS9Jbml0L2dzX3R0Zi5wcworQEAgLTEzMDEsNyArMTMwMSw3IEBAIGN1cnJlbnRkaWN0IC8ucGlja2NtYXBfd2l0aF9ub194bGF0bWFwIC51bmRlZgorICAgICAgICAgICBUVEZERUJVRyB7IChcbjEgc2V0dGluZyBhbGlhczogKSBwcmludCBkdXAgPT1vbmx5CisgICAgICAgICAgICAgICAgICggdG8gYmUgdGhlIHNhbWUgYXMgICkgcHJpbnQgMiBpbmRleCAvLz09IGV4ZWMgfSBpZgorIAorLSAgICAgICAgICA3IGluZGV4IDIgaW5kZXggMyAtMSByb2xsIGV4Y2ggLmZvcmNlcHV0CisrICAgICAgICAgIDcgaW5kZXggMiBpbmRleCAzIC0xIHJvbGwgZXhjaCBwdXQKKyAgICAgICAgIH0gZm9yYWxsCisgICAgICAgICBwb3AgcG9wIHBvcAorICAgICAgIH0KK0BAIC0xMzE5LDcgKzEzMTksNyBAQCBjdXJyZW50ZGljdCAvLnBpY2tjbWFwX3dpdGhfbm9feGxhdG1hcCAudW5kZWYKKyAgICAgICAgICAgZXhjaCBwb3AKKyAgICAgICAgICAgVFRGREVCVUcgeyAoXG4yIHNldHRpbmcgYWxpYXM6ICkgcHJpbnQgMSBpbmRleCA9PW9ubHkKKyAgICAgICAgICAgICAgICAgICAgICAoIHRvIHVzZSBnbHlwaCBpbmRleDogKSBwcmludCBkdXAgLy89PSBleGVjIH0gaWYKKy0gICAgICAgICAgNSBpbmRleCAzIDEgcm9sbCAuZm9yY2VwdXQKKysgICAgICAgICAgNSBpbmRleCAzIDEgcm9sbCBwdXQKKyAgICAgICAgICAgLy9mYWxzZQorICAgICAgICAgfQorICAgICAgICAgeworQEAgLTEzMzYsNyArMTMzNiw3IEBAIGN1cnJlbnRkaWN0IC8ucGlja2NtYXBfd2l0aF9ub194bGF0bWFwIC51bmRlZgorICAgICAgICAgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAlICBDaGFyU3RyaW5ncyhkaWN0KSBpc3VuaWNvZGUoYm9vbGVhbikgY21hcChkaWN0KSBSQUdMKGRpY3QpIGduYW1lKG5hbWUpIGNvZGVwKGludGVnZXIpIGdpbmRleChpbnRlZ2VyKQorICAgICAgICAgICBUVEZERUJVRyB7IChcMyBuc2V0dGluZyBhbGlhczogKSBwcmludCAxIGluZGV4ID09b25seQorICAgICAgICAgICAgICAgICAoIHRvIGJlIGluZGV4OiApIHByaW50IGR1cCAvLz09IGV4ZWMgfSBpZgorLSAgICAgICAgICBleGNoIHBvcCA1IGluZGV4IDMgMSByb2xsIC5mb3JjZXB1dAorKyAgICAgICAgICBleGNoIHBvcCA1IGluZGV4IDMgMSByb2xsIHB1dAorICAgICAgICAgfQorICAgICAgICAgeworICAgICAgICAgICBwb3AgcG9wCitAQCAtMTM2Niw3ICsxMzY2LDcgQEAgY3VycmVudGRpY3QgLy5waWNrY21hcF93aXRoX25vX3hsYXRtYXAgLnVuZGVmCisgICAgICAgfSBpZmVsc2UKKyAgICAgXQorICAgVFRGREVCVUcgeyAoRW5jb2Rpbmc6ICkgcHJpbnQgZHVwID09PSBmbHVzaCB9IGlmCistfSAuYmluZCBleGVjdXRlb25seSBvZGVmCQklIGhpZGVzIC5mb3JjZXB1dAorK30gLmJpbmQgb2RlZgorIAorICUgLS0tLS0tLS0tLS0tLS0tLSBDSURGb250VHlwZSAyIGZvbnQgbG9hZGluZyAtLS0tLS0tLS0tLS0tLS0tICUKKyAKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L21pY3JvYmxhemVlYi9vYmphcmNoLmggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdC9taWNyb2JsYXplL29iamFyY2guaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWljcm9ibGF6ZWViL29iamFyY2guaApyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvbWljcm9ibGF6ZS9vYmphcmNoLmgKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L3Bvd2VycGM2NGxlL29iamFyY2guaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0L3Bvd2VycGM2NGxlL29iamFyY2guaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDVkZTI5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHQvcG93ZXJwYzY0bGUvb2JqYXJjaC5oCkBAIC0wLDAgKzEsNDAgQEAKKy8qIFBhcmFtZXRlcnMgZGVyaXZlZCBmcm9tIG1hY2hpbmUgYW5kIGNvbXBpbGVyIGFyY2hpdGVjdHVyZS4gKi8KKy8qIFRoaXMgZmlsZSBpcyBnZW5lcmF0ZWQgbWVjaGFuaWNhbGx5IGJ5IGdlbmFyY2guYy4gKi8KKworCSAvKiAtLS0tLS0tLS0tLS0tLS0tIFNjYWxhciBhbGlnbm1lbnRzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX0FMSUdOX1NIT1JUX01PRCAyCisjZGVmaW5lIEFSQ0hfQUxJR05fSU5UX01PRCA0CisjZGVmaW5lIEFSQ0hfQUxJR05fTE9OR19NT0QgOAorI2RlZmluZSBBUkNIX0FMSUdOX1BUUl9NT0QgOAorI2RlZmluZSBBUkNIX0FMSUdOX0ZMT0FUX01PRCA0CisjZGVmaW5lIEFSQ0hfQUxJR05fRE9VQkxFX01PRCA4CisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBTY2FsYXIgc2l6ZXMgLS0tLS0tLS0tLS0tLS0tLSAqLworCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfQ0hBUiAwCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfU0hPUlQgMQorI2RlZmluZSBBUkNIX0xPRzJfU0laRU9GX0lOVCAyCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfTE9ORyAzCisjZGVmaW5lIEFSQ0hfTE9HMl9TSVpFT0ZfTE9OR19MT05HIDMKKyNkZWZpbmUgQVJDSF9TSVpFT0ZfR1hfQ09MT1JfSU5ERVggOAorI2RlZmluZSBBUkNIX1NJWkVPRl9QVFIgOAorI2RlZmluZSBBUkNIX1NJWkVPRl9GTE9BVCA0CisjZGVmaW5lIEFSQ0hfU0laRU9GX0RPVUJMRSA4CisjZGVmaW5lIEFSQ0hfRkxPQVRfTUFOVElTU0FfQklUUyAyNAorI2RlZmluZSBBUkNIX0RPVUJMRV9NQU5USVNTQV9CSVRTIDUzCisKKwkgLyogLS0tLS0tLS0tLS0tLS0tLSBVbnNpZ25lZCBtYXggdmFsdWVzIC0tLS0tLS0tLS0tLS0tLS0gKi8KKworI2RlZmluZSBBUkNIX01BWF9VQ0hBUiAoKHVuc2lnbmVkIGNoYXIpMHhmZiArICh1bnNpZ25lZCBjaGFyKTApCisjZGVmaW5lIEFSQ0hfTUFYX1VTSE9SVCAoKHVuc2lnbmVkIHNob3J0KTB4ZmZmZiArICh1bnNpZ25lZCBzaG9ydCkwKQorI2RlZmluZSBBUkNIX01BWF9VSU5UICgodW5zaWduZWQgaW50KX4wICsgKHVuc2lnbmVkIGludCkwKQorI2RlZmluZSBBUkNIX01BWF9VTE9ORyAoKHVuc2lnbmVkIGxvbmcpfjBMICsgKHVuc2lnbmVkIGxvbmcpMCkKKworCSAvKiAtLS0tLS0tLS0tLS0tLS0tIE1pc2NlbGxhbmVvdXMgLS0tLS0tLS0tLS0tLS0tLSAqLworCisjZGVmaW5lIEFSQ0hfSVNfQklHX0VORElBTiAwCisjZGVmaW5lIEFSQ0hfUFRSU19BUkVfU0lHTkVEIDAKKyNkZWZpbmUgQVJDSF9GTE9BVFNfQVJFX0lFRUUgMQorI2RlZmluZSBBUkNIX0FSSVRIX1JTSElGVCAyCisjZGVmaW5lIEFSQ0hfRElWX05FR19QT1NfVFJVTkNBVEVTIDEKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZTFmM2UyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dob3N0c2NyaXB0L2dob3N0c2NyaXB0XzkuMjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJUaGUgR1BMIEdob3N0c2NyaXB0IFBvc3RTY3JpcHQvUERGIGludGVycHJldGVyIgotREVTQ1JJUFRJT04gPSAiR2hvc3RzY3JpcHQgaXMgdXNlZCBmb3IgUG9zdFNjcmlwdC9QREYgcHJldmlldyBhbmQgcHJpbnRpbmcuICBVc3VhbGx5IGFzIFwKLWEgYmFjay1lbmQgdG8gYSBwcm9ncmFtIHN1Y2ggYXMgZ2hvc3R2aWV3LCBpdCBjYW4gZGlzcGxheSBQb3N0U2NyaXB0IGFuZCBQREYgXAotZG9jdW1lbnRzIGluIGFuIFgxMSBlbnZpcm9ubWVudC4gXAotXAotRnVydGhlcm1vcmUsIGl0IGNhbiByZW5kZXIgUG9zdFNjcmlwdCBhbmQgUERGIGZpbGVzIGFzIGdyYXBoaWNzIHRvIGJlIHByaW50ZWQgXAotb24gbm9uLVBvc3RTY3JpcHQgcHJpbnRlcnMuIFN1cHBvcnRlZCBwcmludGVycyBpbmNsdWRlIGNvbW1vbiBcCi1kb3QtbWF0cml4LCBpbmtqZXQgYW5kIGxhc2VyIG1vZGVscy4gXAotIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5naG9zdHNjcmlwdC5jb20iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLUxJQ0VOU0UgPSAiR1BMdjMiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03MGRjMmJhYzRkMGNlNDQ0OGRhODczY2Q4NmIxMjNmYyIKLQotREVQRU5EUyA9ICJnaG9zdHNjcmlwdC1uYXRpdmUgdGlmZiBqcGVnIGZvbnRjb25maWcgY3VwcyBsaWJwbmciCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJsaWJwbmctbmF0aXZlIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FydGlmZXhTb2Z0d2FyZS9naG9zdHBkbC1kb3dubG9hZHMvcmVsZWFzZXMiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKLQotU1JDX1VSSV9CQVNFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9BcnRpZmV4U29mdHdhcmUvZ2hvc3RwZGwtZG93bmxvYWRzL3JlbGVhc2VzL2Rvd25sb2FkL2dzOTI3LyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2ggXAotICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE2LVdlcnJvci1yZXR1cm4tdHlwZS5wYXRjaCBcCi0gICAgICAgICAgICAgICAgZmlsZTovL2RvLW5vdC1jaGVjay1sb2NhbC1saWJwbmctc291cmNlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vYXZvaWQtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vbWtkaXItcC5wYXRjaCBcCi0gICAgICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE0ODExLTAwMDEucGF0Y2ggXAotICAgICAgICAgICAgICAgIGZpbGU6Ly9DVkUtMjAxOS0xNDgxNy0wMDAxLnBhdGNoIFwKLSAgICAgICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTktMTQ4MTctMDAwMi5wYXRjaCBcCi0iCi0KLVNSQ19VUkkgPSAiJHtTUkNfVVJJX0JBU0V9IFwKLSAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMjEtcHJldmVudF9yZWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjAyLWdlbmFyY2gucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vb2JqYXJjaC5oIFwKLSAgICAgICAgICAgZmlsZTovL2N1cHMtbm8tZ2NyeXB0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2NsYXNzLW5hdGl2ZSA9ICIke1NSQ19VUklfQkFTRX0gXAotICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dob3N0c2NyaXB0LTkuMjEtbmF0aXZlLWZpeC1kaXNhYmxlLXN5c3RlbS1saWJ0aWZmLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9iYXNlLWdlbmh0LmMtYWRkLWEtcHJlcHJvY2Vzc29yLWRlZmluZS10by1hbGxvdy1mb3BlLnBhdGNoIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImMzOTkwYTUwNGEzYTIzYjliYWJlOWRlMDBlZDY1OTdkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk3NjBlOGJkZDA3YTA4ZGJkNDQ1MTg4YTY1NTdjYjcwZTYwY2NiNmE1NjAxZjdkYmZiYTBkMjI1ZTI4Y2UyODUiCi0KLSMgUHV0IHNvbWV0aGluZyBsaWtlCi0jCi0jICAgUEFDS0FHRUNPTkZJR19hcHBlbmRfcG4tZ2hvc3RzY3JpcHQgPSAiIHgxMSIKLSMKLSMgaW4gbG9jYWwuY29uZiB0byBlbmFibGUgYnVpbGRpbmcgd2l0aCBYMTEuICBCZSBjYXJlZnVsLiAgVGhlIG9yZGVyCi0jIG9mIHRoZSBvdmVycmlkZXMgbWF0dGVycyEKLSMKLSNQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneDExJywgJycsIGQpfSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiIKLQotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0td2l0aC14IC0teC1pbmNsdWRlcz0ke1NUQUdJTkdfSU5DRElSfSAtLXgtbGlicmFyaWVzPSR7U1RBR0lOR19MSUJESVJ9LCBcCi0gICAgICAgICAgICAgICAgICAgICAgLS13aXRob3V0LXgsIHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHQgZ3RrKzNcCi0gICAgICAgICAgICAgICAgICAgICAgIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRob3V0LWxpYnBhcGVyIC0td2l0aC1zeXN0ZW0tbGlidGlmZiAtLXdpdGhvdXQtamJpZzJkZWMgXAotICAgICAgICAgICAgICAgIC0td2l0aC1mb250cGF0aD0ke2RhdGFkaXJ9L2ZvbnRzIFwKLSAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbGliaWRuIC0td2l0aC1jdXBzLXNlcnZlcmJpbj0ke2V4ZWNfcHJlZml4fS9saWIvY3VwcyBcCi0gICAgICAgICAgICAgICAgLS13aXRoLWN1cHMtZGF0YWRpcj0ke2RhdGFkaXJ9L2N1cHMgXAotICAgICAgICAgICAgICAgIENVUFNDT05GSUc9IiR7U1RBR0lOR19CSU5ESVJfQ1JPU1N9L2N1cHMtY29uZmlnIiBcCi0gICAgICAgICAgICAgICAgIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX21pcHNhcmNobzMyID0gIiAtLXdpdGgtbGFyZ2VfY29sb3JfaW5kZXg9MCIKLQotIyBFeHBsaWNpdHkgZGlzYWJsZSBsaWJ0aWZmLCBmb250Y29uZmlnLAotIyBmcmVldHlwZSwgY3VwcyBmb3IgZ2hvc3RzY3JpcHQtbmF0aXZlCi1FWFRSQV9PRUNPTkZfY2xhc3MtbmF0aXZlID0gIi0td2l0aG91dC14IC0td2l0aC1zeXN0ZW0tbGlidGlmZj1ubyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1qYmlnMmRlYyAtLXdpdGhvdXQtbGlicGFwZXIgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGgtZm9udHBhdGg9JHtkYXRhZGlyfS9mb250cyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC1saWJpZG4gLS1kaXNhYmxlLWZvbnRjb25maWcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZnJlZXR5cGUgLS1kaXNhYmxlLWN1cHMiCi0KLSMgVGhpcyBoYXMgYmVlbiBmaXhlZCB1cHN0cmVhbSBidXQgZm9yIG5vdyB3ZSBuZWVkIHRvIHN1YnZlcnQgdGhlIGNoZWNrIGZvciB0aW1lLmgKLSMgaHR0cDovL2J1Z3MuZ2hvc3RzY3JpcHQuY29tL3Nob3dfYnVnLmNnaT9pZD02OTI0NDMKLSMgaHR0cDovL2J1Z3MuZ2hvc3RzY3JpcHQuY29tL3Nob3dfYnVnLmNnaT9pZD02OTI0MjYKLUNGTEFHUyArPSAiLURIQVZFX1NZU19USU1FX0g9MSIKLUJVSUxEX0NGTEFHUyArPSAiLURIQVZFX1NZU19USU1FX0g9MSIKLQotaW5oZXJpdCBhdXRvdG9vbHMKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCW1rZGlyIC1wIG9iagotCW1rZGlyIC1wIHNvb2JqCi0JaWYgWyAtZSAke1dPUktESVJ9L29iamFyY2guaCBdOyB0aGVuCi0JCWNwICR7V09SS0RJUn0vb2JqYXJjaC5oIG9iai9hcmNoLmgKLQlmaQotfQotCi1kb19jb25maWd1cmVfYXBwZW5kICgpIHsKLQkjIGNvcHkgdG9vbHMgZnJvbSB0aGUgbmF0aXZlIGdob3N0c2NyaXB0IGJ1aWxkCi0JaWYgWyAiJHtQTn0iICE9ICJnaG9zdHNjcmlwdC1uYXRpdmUiIF07IHRoZW4KLQkJbWtkaXIgLXAgb2JqL2F1eCBzb29iagotCQlmb3IgaSBpbiBnZW5hcmNoIGdlbmNvbmYgbWtyb21mcyBlY2hvZ3MgZ2VuZGV2IGdlbmh0IHBhY2twczsgZG8KLQkJCWNwICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9naG9zdHNjcmlwdC0ke1BWfS8kaSBvYmovYXV4LyRpCi0JCWRvbmUKLQlmaQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCAoKSB7Ci0gICAgbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCi0gICAgY3AgLXIgJHtTfS9SZXNvdXJjZSAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KLSAgICBjcCAtciAke1N9L2ljY3Byb2ZpbGVzICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LwotfQotCi1kb19jb21waWxlX2NsYXNzLW5hdGl2ZSAoKSB7Ci0gICAgbWtkaXIgLXAgb2JqCi0gICAgZm9yIGkgaW4gZ2VuYXJjaCBnZW5jb25mIG1rcm9tZnMgZWNob2dzIGdlbmRldiBnZW5odCBwYWNrcHM7IGRvCi0gICAgICAgIG9lX3J1bm1ha2Ugb2JqL2F1eC8kaQotICAgIGRvbmUKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgewotICAgIGluc3RhbGwgLWQgJHtEfSR7YmluZGlyfS9naG9zdHNjcmlwdC0ke1BWfQotICAgIGZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQgcGFja3BzOyBkbwotICAgICAgICBpbnN0YWxsIC1tIDc1NSBvYmovYXV4LyRpICR7RH0ke2JpbmRpcn0vZ2hvc3RzY3JpcHQtJHtQVn0vJGkKLSAgICBkb25lCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgotCi0jIGdob3N0c2NyaXB0IGRvZXMgbm90IHN1cHBvcnRzICJhcmMiCi1DT01QQVRJQkxFX0hPU1QgPSAiXig/IWFyYykuKiIKLQotIyBzb21lIGVudHJpZXMgaW4gTlZEIHVzZXMgZ3BsX2dob3N0c2NyaXB0Ci1DVkVfUFJPRFVDVCA9ICJnaG9zdHNjcmlwdCBncGxfZ2hvc3RzY3JpcHQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9naG9zdHNjcmlwdC9naG9zdHNjcmlwdF85LjUwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS41MC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zOWMzMjY0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ2hvc3RzY3JpcHQvZ2hvc3RzY3JpcHRfOS41MC5iYgpAQCAtMCwwICsxLDEyOSBAQAorU1VNTUFSWSA9ICJUaGUgR1BMIEdob3N0c2NyaXB0IFBvc3RTY3JpcHQvUERGIGludGVycHJldGVyIgorREVTQ1JJUFRJT04gPSAiR2hvc3RzY3JpcHQgaXMgdXNlZCBmb3IgUG9zdFNjcmlwdC9QREYgcHJldmlldyBhbmQgcHJpbnRpbmcuICBVc3VhbGx5IGFzIFwKK2EgYmFjay1lbmQgdG8gYSBwcm9ncmFtIHN1Y2ggYXMgZ2hvc3R2aWV3LCBpdCBjYW4gZGlzcGxheSBQb3N0U2NyaXB0IGFuZCBQREYgXAorZG9jdW1lbnRzIGluIGFuIFgxMSBlbnZpcm9ubWVudC4gXAorXAorRnVydGhlcm1vcmUsIGl0IGNhbiByZW5kZXIgUG9zdFNjcmlwdCBhbmQgUERGIGZpbGVzIGFzIGdyYXBoaWNzIHRvIGJlIHByaW50ZWQgXAorb24gbm9uLVBvc3RTY3JpcHQgcHJpbnRlcnMuIFN1cHBvcnRlZCBwcmludGVycyBpbmNsdWRlIGNvbW1vbiBcCitkb3QtbWF0cml4LCBpbmtqZXQgYW5kIGxhc2VyIG1vZGVscy4gXAorIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5naG9zdHNjcmlwdC5jb20iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03MGRjMmJhYzRkMGNlNDQ0OGRhODczY2Q4NmIxMjNmYyIKKworREVQRU5EUyA9ICJnaG9zdHNjcmlwdC1uYXRpdmUgdGlmZiBqcGVnIGZvbnRjb25maWcgY3VwcyBsaWJwbmciCitERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJsaWJwbmctbmF0aXZlIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL0FydGlmZXhTb2Z0d2FyZS9naG9zdHBkbC1kb3dubG9hZHMvcmVsZWFzZXMiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKylcLnRhciIKKworU1JDX1VSSV9CQVNFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9BcnRpZmV4U29mdHdhcmUvZ2hvc3RwZGwtZG93bmxvYWRzL3JlbGVhc2VzL2Rvd25sb2FkL2dzOTUwLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE1LXBhcmFsbGVsLW1ha2UucGF0Y2ggXAorICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjE2LVdlcnJvci1yZXR1cm4tdHlwZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovL2RvLW5vdC1jaGVjay1sb2NhbC1saWJwbmctc291cmNlLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vYXZvaWQtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoIFwKKyAgICAgICAgICAgICAgICBmaWxlOi8vbWtkaXItcC5wYXRjaCBcCisgICAgICAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE0ODY5LTAwMDEucGF0Y2ggXAorIgorCitTUkNfVVJJID0gIiR7U1JDX1VSSV9CQVNFfSBcCisgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjIxLXByZXZlbnRfcmVjb21waWxpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZ2hvc3RzY3JpcHQtOS4wMi1nZW5hcmNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL29iamFyY2guaCBcCisgICAgICAgICAgIGZpbGU6Ly9jdXBzLW5vLWdjcnlwdC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSV9jbGFzcy1uYXRpdmUgPSAiJHtTUkNfVVJJX0JBU0V9IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naG9zdHNjcmlwdC05LjIxLW5hdGl2ZS1maXgtZGlzYWJsZS1zeXN0ZW0tbGlidGlmZi5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYmFzZS1nZW5odC5jLWFkZC1hLXByZXByb2Nlc3Nvci1kZWZpbmUtdG8tYWxsb3ctZm9wZS5wYXRjaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwMDk3MGNmNjIyYmQ1YjQ2ZjY4ZWVjOTM4Mzc1Mzg3MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwZjUzZTg5ZmQ2NDc4MTU4MjhmYzUxNzE2MTNlODYwZTg1MzViNjhmN2FmYmM5MWJmODlhZWU4ODY3NjljZTg5IgorCisjIFB1dCBzb21ldGhpbmcgbGlrZQorIworIyAgIFBBQ0tBR0VDT05GSUdfYXBwZW5kX3BuLWdob3N0c2NyaXB0ID0gIiB4MTEiCisjCisjIGluIGxvY2FsLmNvbmYgdG8gZW5hYmxlIGJ1aWxkaW5nIHdpdGggWDExLiAgQmUgY2FyZWZ1bC4gIFRoZSBvcmRlcgorIyBvZiB0aGUgb3ZlcnJpZGVzIG1hdHRlcnMhCisjCisjUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMScsICcnLCBkKX0iCitQQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICIiCisKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteCAtLXgtaW5jbHVkZXM9JHtTVEFHSU5HX0lOQ0RJUn0gLS14LWxpYnJhcmllcz0ke1NUQUdJTkdfTElCRElSfSwgXAorICAgICAgICAgICAgICAgICAgICAgIC0td2l0aG91dC14LCB2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnh0IGd0ayszXAorICAgICAgICAgICAgICAgICAgICAgICIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1saWJwYXBlciAtLXdpdGgtc3lzdGVtLWxpYnRpZmYgLS13aXRob3V0LWpiaWcyZGVjIFwKKyAgICAgICAgICAgICAgICAtLXdpdGgtZm9udHBhdGg9JHtkYXRhZGlyfS9mb250cyBcCisgICAgICAgICAgICAgICAgLS13aXRob3V0LWxpYmlkbiAtLXdpdGgtY3Vwcy1zZXJ2ZXJiaW49JHtleGVjX3ByZWZpeH0vbGliL2N1cHMgXAorICAgICAgICAgICAgICAgIC0td2l0aC1jdXBzLWRhdGFkaXI9JHtkYXRhZGlyfS9jdXBzIFwKKyAgICAgICAgICAgICAgICBDVVBTQ09ORklHPSIke1NUQUdJTkdfQklORElSX0NST1NTfS9jdXBzLWNvbmZpZyIgXAorICAgICAgICAgICAgICAgICIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9taXBzYXJjaG8zMiA9ICIgLS13aXRoLWxhcmdlX2NvbG9yX2luZGV4PTAiCisKKyMgRXhwbGljaXR5IGRpc2FibGUgbGlidGlmZiwgZm9udGNvbmZpZywKKyMgZnJlZXR5cGUsIGN1cHMgZm9yIGdob3N0c2NyaXB0LW5hdGl2ZQorRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLXdpdGhvdXQteCAtLXdpdGgtc3lzdGVtLWxpYnRpZmY9bm8gXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtamJpZzJkZWMgLS13aXRob3V0LWxpYnBhcGVyIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS13aXRoLWZvbnRwYXRoPSR7ZGF0YWRpcn0vZm9udHMgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtbGliaWRuIC0tZGlzYWJsZS1mb250Y29uZmlnIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZyZWV0eXBlIC0tZGlzYWJsZS1jdXBzIgorCisjIFRoaXMgaGFzIGJlZW4gZml4ZWQgdXBzdHJlYW0gYnV0IGZvciBub3cgd2UgbmVlZCB0byBzdWJ2ZXJ0IHRoZSBjaGVjayBmb3IgdGltZS5oCisjIGh0dHA6Ly9idWdzLmdob3N0c2NyaXB0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjkyNDQzCisjIGh0dHA6Ly9idWdzLmdob3N0c2NyaXB0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9NjkyNDI2CitDRkxBR1MgKz0gIi1ESEFWRV9TWVNfVElNRV9IPTEiCitCVUlMRF9DRkxBR1MgKz0gIi1ESEFWRV9TWVNfVElNRV9IPTEiCisKK2luaGVyaXQgYXV0b3Rvb2xzCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlta2RpciAtcCBvYmoKKwlta2RpciAtcCBzb29iagorCWlmIFsgLWUgJHtXT1JLRElSfS9vYmphcmNoLmggXTsgdGhlbgorCQljcCAke1dPUktESVJ9L29iamFyY2guaCBvYmovYXJjaC5oCisJZmkKK30KKworZG9fY29uZmlndXJlX2FwcGVuZCAoKSB7CisJIyBjb3B5IHRvb2xzIGZyb20gdGhlIG5hdGl2ZSBnaG9zdHNjcmlwdCBidWlsZAorCWlmIFsgIiR7UE59IiAhPSAiZ2hvc3RzY3JpcHQtbmF0aXZlIiBdOyB0aGVuCisJCW1rZGlyIC1wIG9iai9hdXggc29vYmoKKwkJZm9yIGkgaW4gZ2VuYXJjaCBnZW5jb25mIG1rcm9tZnMgZWNob2dzIGdlbmRldiBnZW5odCBwYWNrcHM7IGRvCisJCQljcCAke1NUQUdJTkdfQklORElSX05BVElWRX0vZ2hvc3RzY3JpcHQtJHtQVn0vJGkgb2JqL2F1eC8kaQorCQlkb25lCisJZmkKK30KKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIG1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9L2dob3N0c2NyaXB0LyR7UFZ9LworICAgIGNwIC1yICR7U30vUmVzb3VyY2UgJHtEfSR7ZGF0YWRpcn0vZ2hvc3RzY3JpcHQvJHtQVn0vCisgICAgY3AgLXIgJHtTfS9pY2Nwcm9maWxlcyAke0R9JHtkYXRhZGlyfS9naG9zdHNjcmlwdC8ke1BWfS8KK30KKworZG9fY29tcGlsZV9jbGFzcy1uYXRpdmUgKCkgeworICAgIG1rZGlyIC1wIG9iagorICAgIGZvciBpIGluIGdlbmFyY2ggZ2VuY29uZiBta3JvbWZzIGVjaG9ncyBnZW5kZXYgZ2VuaHQgcGFja3BzOyBkbworICAgICAgICBvZV9ydW5tYWtlIG9iai9hdXgvJGkKKyAgICBkb25lCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vZ2hvc3RzY3JpcHQtJHtQVn0KKyAgICBmb3IgaSBpbiBnZW5hcmNoIGdlbmNvbmYgbWtyb21mcyBlY2hvZ3MgZ2VuZGV2IGdlbmh0IHBhY2twczsgZG8KKyAgICAgICAgaW5zdGFsbCAtbSA3NTUgb2JqL2F1eC8kaSAke0R9JHtiaW5kaXJ9L2dob3N0c2NyaXB0LSR7UFZ9LyRpCisgICAgZG9uZQorfQorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworIyBnaG9zdHNjcmlwdCBkb2VzIG5vdCBzdXBwb3J0cyAiYXJjIgorQ09NUEFUSUJMRV9IT1NUID0gIl4oPyFhcmMpLioiCisKKyMgc29tZSBlbnRyaWVzIGluIE5WRCB1c2VzIGdwbF9naG9zdHNjcmlwdAorQ1ZFX1BST0RVQ1QgPSAiZ2hvc3RzY3JpcHQgZ3BsX2dob3N0c2NyaXB0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyZXAvZ3JlcF8zLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcwNGEzZWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLVNVTU1BUlkgPSAiR05VIGdyZXAgdXRpbGl0eSIKLUhPTUVQQUdFID0gImh0dHA6Ly9zYXZhbm5haC5nbnUub3JnL3Byb2plY3RzL2dyZXAvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz9ncm91cD1ncmVwIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFlYmJkM2UzNDIzN2FmMjZkYTVkYzA4YTRlNDQwNDY0IgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vZ3JlcC9ncmVwLSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjA1ZDA3MThhMWI3Y2M3MDZhNGJkZjgxMTUzNjNmMWVkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI5NjA1NDFjNDk5NjE5ZWZkNmFmZTFmYTc5NTQwMmU0NzMzYzhlMTFlYmY5ZmFmY2NjMGJiNGJjY2RjNWI1MTQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKLQotIyBGaXggIkFyZ3VtZW50IGxpc3QgdG9vIGxvbmciIGVycm9yIHdoZW4gbGVuKFRNUERJUikgPSA0MTAKLWFjcGF0aHMgPSAiLUkgLi9tNCIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCXJtIC1mICR7U30vbTQvaW5pdC5tNAotfQotCi1kb19pbnN0YWxsICgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCWlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCi0JCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0JCW12ICR7RH0ke2JpbmRpcn0vZ3JlcCAke0R9JHtiYXNlX2JpbmRpcn0vZ3JlcAotCQltdiAke0R9JHtiaW5kaXJ9L2VncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9lZ3JlcAotCQltdiAke0R9JHtiaW5kaXJ9L2ZncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9mZ3JlcAotCQlybWRpciAke0R9JHtiaW5kaXJ9LwotCWZpCi19Ci0KLWluaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1QQUNLQUdFQ09ORklHID8/PSAicGNyZSIKLVBBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS1lbmFibGUtcGVybC1yZWdleHAsLS1kaXNhYmxlLXBlcmwtcmVnZXhwLGxpYnBjcmUiCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKLQotQUxURVJOQVRJVkVfJHtQTn0gPSAiZ3JlcCBlZ3JlcCBmZ3JlcCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9ncmVwIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2VncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9lZ3JlcCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtmZ3JlcF0gPSAiJHtiYXNlX2JpbmRpcn0vZmdyZXAiCi0KLWV4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vc2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncmVwL2dyZXBfMy40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMTc2ZGQ3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JlcC9ncmVwXzMuNC5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIkdOVSBncmVwIHV0aWxpdHkiCitIT01FUEFHRSA9ICJodHRwOi8vc2F2YW5uYWguZ251Lm9yZy9wcm9qZWN0cy9ncmVwLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/Z3JvdXA9Z3JlcCIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjMiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xZWJiZDNlMzQyMzdhZjI2ZGE1ZGMwOGE0ZTQ0MDQ2NCIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2dyZXAvZ3JlcC0ke1BWfS50YXIueHoiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxMTFiMTE3ZDIyZDZhN2QwNDlkNmFlNzUwNWU5YzRkMiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1OGU2NzUxYzQxYTdjMjViZmM2ZTkzNjNhNDE3ODZjZmYzYmE1NzA5Y2YxMWQ1YWQ5MDNjZjdjY2UzMWNjM2ZiIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gcGtnY29uZmlnCisKKyMgRml4ICJBcmd1bWVudCBsaXN0IHRvbyBsb25nIiBlcnJvciB3aGVuIGxlbihUTVBESVIpID0gNDEwCithY3BhdGhzID0gIi1JIC4vbTQiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKKwlzZWQgLWkgLWUgJzFzLCMhQFNIRUxMQCwjIS9iaW4vc2gsJyAke1N9L3NyYy9lZ3JlcC5zaAorCXJtIC1mICR7U30vbTQvaW5pdC5tNAorfQorCitkb19pbnN0YWxsICgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCWlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisJCW12ICR7RH0ke2JpbmRpcn0vZ3JlcCAke0R9JHtiYXNlX2JpbmRpcn0vZ3JlcAorCQltdiAke0R9JHtiaW5kaXJ9L2VncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9lZ3JlcAorCQltdiAke0R9JHtiaW5kaXJ9L2ZncmVwICR7RH0ke2Jhc2VfYmluZGlyfS9mZ3JlcAorCQlybWRpciAke0R9JHtiaW5kaXJ9LworCWZpCit9CisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitQQUNLQUdFQ09ORklHID8/PSAicGNyZSIKK1BBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS1lbmFibGUtcGVybC1yZWdleHAsLS1kaXNhYmxlLXBlcmwtcmVnZXhwLGxpYnBjcmUiCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKKworQUxURVJOQVRJVkVfJHtQTn0gPSAiZ3JlcCBlZ3JlcCBmZ3JlcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9ncmVwIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2VncmVwXSA9ICIke2Jhc2VfYmluZGlyfS9lZ3JlcCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtmZ3JlcF0gPSAiJHtiYXNlX2JpbmRpcn0vZmdyZXAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9maWxlcy8wMDAxLU1ha2UtbWFucGFnZXMtbXVsaXRsaWItaWRlbnRpY2FsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZmlsZXMvMDAwMS1NYWtlLW1hbnBhZ2VzLW11bGl0bGliLWlkZW50aWNhbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MTA1ZGE2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZmlsZXMvMDAwMS1NYWtlLW1hbnBhZ2VzLW11bGl0bGliLWlkZW50aWNhbC5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIGU3MzhmOTE4NWJhOTBmMjA4M2M4NDZhZGUzNTUxMjM0YmI1YTdjYmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KK0RhdGU6IFNhdCwgNyBNYXIgMjAyMCAwMDo1OToxMyArMDAwMAorU3ViamVjdDogW1BBVENIXSBNYWtlIG1hbnBhZ2VzIG11bGl0bGliIGlkZW50aWNhbAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCBkMThjNDliLi42MTc1ZmU5IDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtOTE3LDcgKzkxNyw3IEBAIFNVRkZJWEVTICs9IC5tYW4KKyAJICAgICAtZSAic3xbQF1NREFURVtAXXxgJChQRVJMKSAkKHRvcF9zcmNkaXIpL21kYXRlLnBsICQ8YHxnIiBcCisgCSAgICAgLWUgInN8W0BdT0xERk9OVERJUltAXXxgZWNobyAkKG9sZGZvbnRkaXIpIHwgc2VkIC1mICQobWFrZXZhcmVzY2FwZSlgfGciIFwKKyAJICAgICAtZSAic3xbQF1QREZET0NESVJbQF18YGVjaG8gJChwZGZkb2NkaXIpIHwgc2VkIC1mICQobWFrZXZhcmVzY2FwZSlgfGciIFwKKy0JICAgICAtZSAic3xbQF1TWVNURU1NQUNST0RJUltAXXxgZWNobyAkKHN5c3RlbXRtYWNkaXIpIHwgc2VkIC1mICQobWFrZXZhcmVzY2FwZSlgfGciIFwKKysJICAgICAtZSAic3xbQF1TWVNURU1NQUNST0RJUltAXXxgZWNobyAkKHN5c3RlbXRtYWNkaXIpIHwgc2VkIC1lICdzLCQobGliZGlyKSwkKHByZWZpeCkvbGliKiwnIHwgc2VkIC1mICQobWFrZXZhcmVzY2FwZSlgfGciIFwKKyAJICAgICAtZSAic3xbQF1UTUFDX0FOX1BSRUZJWFtAXXwkKHRtYWNfYW5fcHJlZml4KXxnIiBcCisgCSAgICAgLWUgInN8W0BdVE1BQ19NX1BSRUZJWFtAXXwkKHRtYWNfbV9wcmVmaXgpfGciIFwKKyAJICAgICAtZSAic3xbQF1UTUFDX01ESVJbQF18JCh0bWFjZGlyKS9tbXxnIiBcCistLSAKKzIuMjMuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZl8xLjIyLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ncm9mZi9ncm9mZl8xLjIyLjQuYmIKaW5kZXggMDgyNTk3Zi4uZTM5ODQ3OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3JvZmYvZ3JvZmZfMS4yMi40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2dyb2ZmL2dyb2ZmXzEuMjIuNC5iYgpAQCAtMTIsNiArMTIsNyBAQAogCWZpbGU6Ly9ncm9mZi1ub3Qtc2VhcmNoLWZvbnRzLW9uLWJ1aWxkLWhvc3QucGF0Y2ggXAogCWZpbGU6Ly8wMDAxLXN1cHBvcnQtbXVzbC5wYXRjaCBcCiAJZmlsZTovLzAwMDEtSW5jbHVkZS1jb25maWcuaC5wYXRjaCBcCisgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtbWFucGFnZXMtbXVsaXRsaWItaWRlbnRpY2FsLnBhdGNoIFwKICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjA4ZmIwNDMzNWUyZjVlNzNmMjNlYTRjM2FkYmYwYzVmIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvZ3ppcC9nemlwXzEuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS4xMC5iYgppbmRleCA1MGRhZDdiLi45Nzc4ZTY4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS4xMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9nemlwL2d6aXBfMS4xMC5iYgpAQCAtMTIsNyArMTIsNyBAQAogCiBQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBnemlwLXJlcGxhY2VtZW50LW5hdGl2ZSIKIAotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgcGVybCBwZXJsLXB0ZXN0IGdyZXAgZGlmZnV0aWxzIgorUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgcGVybCBncmVwIGRpZmZ1dGlscyIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY29yZS1pbWFnZS10ZXN0bWFzdGVyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaW1hZ2VzL2NvcmUtaW1hZ2UtdGVzdG1hc3Rlci5iYgppbmRleCA3ODI5NWM1Li4wZmFmMThmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pbWFnZXMvY29yZS1pbWFnZS10ZXN0bWFzdGVyLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2ltYWdlcy9jb3JlLWltYWdlLXRlc3RtYXN0ZXIuYmIKQEAgLTgsNyArOCw3IEBACiAjIG5vcm1hbCBsaW51eCB1dGlsaXRpZXMgbm90IGJ1c3lib3ggb25lcwogSU1BR0VfSU5TVEFMTCArPSAiXAogICAgIGJhc2ggY29yZXV0aWxzIHV0aWwtbGludXggdGFyIGd6aXAgYnppcDIga21vZCBcCi0gICAgcHl0aG9uLW1vZHVsZXMgcHl0aG9uLW1pc2MgXAorICAgIHB5dGhvbjMtbW9kdWxlcyBweXRob24zLW1pc2MgXAogICAgIGUyZnNwcm9ncyBlMmZzcHJvZ3MtbWtlMmZzIHBhcnRlZCBcCiAgICAgIgogIyB3ZSBuZWVkIGEgcGFydGljdWxhciBpbml0cmFtZnMgZm9yIGxpdmUgaW1hZ2VzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy9pcDZ0YWJsZXMucnVsZXMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy9pcDZ0YWJsZXMucnVsZXMKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL2lwNnRhYmxlcy5ydWxlcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMvaXA2dGFibGVzLnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy9pcDZ0YWJsZXMuc2VydmljZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YzA1OWZjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMvaXA2dGFibGVzLnNlcnZpY2UKQEAgLTAsMCArMSwxMyBAQAorW1VuaXRdCitEZXNjcmlwdGlvbj1JUHY2IFBhY2tldCBGaWx0ZXJpbmcgRnJhbWV3b3JrCitCZWZvcmU9bmV0d29yay1wcmUudGFyZ2V0CitXYW50cz1uZXR3b3JrLXByZS50YXJnZXQKKworW1NlcnZpY2VdCitUeXBlPW9uZXNob3QKK0V4ZWNTdGFydD1AU0JJTkRJUkAvaXA2dGFibGVzLXJlc3RvcmUgLXcgLS0gQFJVTEVTRElSQC9pcDZ0YWJsZXMucnVsZXMKK0V4ZWNSZWxvYWQ9QFNCSU5ESVJAL2lwNnRhYmxlcy1yZXN0b3JlIC13IC0tIEBSVUxFU0RJUkAvaXA2dGFibGVzLnJ1bGVzCitSZW1haW5BZnRlckV4aXQ9eWVzCisKK1tJbnN0YWxsXQorV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL2lwdGFibGVzLnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlcy9pcHRhYmxlcy5zZXJ2aWNlCmluZGV4IDA0MTMxNmUuLjBlYjNjMzQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdGFibGVzL2lwdGFibGVzL2lwdGFibGVzLnNlcnZpY2UKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXMvaXB0YWJsZXMuc2VydmljZQpAQCAtMSwxMiArMSwxMiBAQAogW1VuaXRdCi1EZXNjcmlwdGlvbj1QYWNrZXQgRmlsdGVyaW5nIEZyYW1ld29yaworRGVzY3JpcHRpb249SVB2NCBQYWNrZXQgRmlsdGVyaW5nIEZyYW1ld29yawogQmVmb3JlPW5ldHdvcmstcHJlLnRhcmdldAogV2FudHM9bmV0d29yay1wcmUudGFyZ2V0CiAKIFtTZXJ2aWNlXQogVHlwZT1vbmVzaG90Ci1FeGVjU3RhcnQ9QFNCSU5ESVJAL2lwdGFibGVzLXJlc3RvcmUgL2V0Yy9pcHRhYmxlcy9pcHRhYmxlcy5ydWxlcwotRXhlY1JlbG9hZD1AU0JJTkRJUkAvaXB0YWJsZXMtcmVzdG9yZSAvZXRjL2lwdGFibGVzL2lwdGFibGVzLnJ1bGVzCitFeGVjU3RhcnQ9QFNCSU5ESVJAL2lwdGFibGVzLXJlc3RvcmUgLXcgLS0gQFJVTEVTRElSQC9pcHRhYmxlcy5ydWxlcworRXhlY1JlbG9hZD1AU0JJTkRJUkAvaXB0YWJsZXMtcmVzdG9yZSAtdyAtLSBAUlVMRVNESVJAL2lwdGFibGVzLnJ1bGVzCiBSZW1haW5BZnRlckV4aXQ9eWVzCiAKIFtJbnN0YWxsXQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXNfMS44LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjguMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmY5ZmNiMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjguMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDg2ICswLDAgQEAKLVNVTU1BUlkgPSAiVG9vbHMgZm9yIG1hbmFnaW5nIGtlcm5lbCBwYWNrZXQgZmlsdGVyaW5nIGNhcGFiaWxpdGllcyIKLURFU0NSSVBUSU9OID0gImlwdGFibGVzIGlzIHRoZSB1c2Vyc3BhY2UgY29tbWFuZCBsaW5lIHByb2dyYW0gdXNlZCB0byBjb25maWd1cmUgYW5kIGNvbnRyb2wgbmV0d29yayBwYWNrZXQgXAotZmlsdGVyaW5nIGNvZGUgaW4gTGludXguIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5uZXRmaWx0ZXIub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLm5ldGZpbHRlci5vcmcvIgotTElDRU5TRSA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2M1wKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2lwdGFibGVzL2lwdGFibGVzLmM7YmVnaW5saW5lPTEzO2VuZGxpbmU9MjU7bWQ1PWM1Y2ZmZDA5OTc0NTU4Y2YyN2QwZjc2M2RmMmExMmRjIgotCi1TUkNfVVJJID0gImh0dHA6Ly9uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2lwdGFibGVzL2ZpbGVzL2lwdGFibGVzLSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtQWRkLW9wdGlvbi10by1lbmFibGUtZGlzYWJsZS1saWJuZm5ldGxpbmsucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1jb25maWd1cmUuYWMtb25seS1jaGVjay1jb25udHJhY2std2hlbi1saWJuZm5ldGxpbmstZW5hYmxlZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9pcHRhYmxlcy5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2lwdGFibGVzLnJ1bGVzIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjI5ZGU3MTFkMTVjMDQwYzQwMmNmMzAzOGM2OWZmNTEzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEyM2NhYzAzNDE4MTIwNmI0NTQ1ZjRlN2U3MzBlNzZlMDhiNWYzZGQ3ODc3MWJhOTY0NWE2NzU2ZGU5Y2RkODAiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBzeXN0ZW1kCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgta2VybmVsPSR7U1RBR0lOR19JTkNESVJ9IgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotCi1QQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgotCi0jIGxpYm5mbmV0bGluayByZWNpcGUgaXMgaW4gbWV0YS1uZXR3b3JraW5nIGxheWVyCi1QQUNLQUdFQ09ORklHW2xpYm5mbmV0bGlua10gPSAiLS1lbmFibGUtbGlibmZuZXRsaW5rLC0tZGlzYWJsZS1saWJuZm5ldGxpbmssbGlibmZuZXRsaW5rIGxpYm5ldGZpbHRlci1jb25udHJhY2siCi0KLSMgbGlibmZ0bmwgcmVjaXBlIGlzIGluIG1ldGEtbmV0d29ya2luZyBsYXllcihwcmV2aW91c2x5IGtub3duIGFzIGxpYm5mdGFibGVzKQotUEFDS0FHRUNPTkZJR1tsaWJuZnRubF0gPSAiLS1lbmFibGUtbmZ0YWJsZXMsLS1kaXNhYmxlLW5mdGFibGVzLGxpYm5mdG5sIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQkjIFJlbW92ZSBzb21lIGxpYnRvb2wgbTQgZmlsZXMKLQkjIEtlZXAgYXhfY2hlY2tfbGlua2VyX2ZsYWdzLm00IHdoaWNoIGJlbG9uZ3MgdG8gYXV0b2NvbmYtYXJjaGl2ZS4KLQlybSAtZiBsaWJ0b29sLm00IGx0fm9ic29sZXRlLm00IGx0b3B0aW9ucy5tNCBsdHN1Z2FyLm00IGx0dmVyc2lvbi5tNAotfQotCi1QQUNLQUdFUyArPSAiJHtQTn0tbW9kdWxlcyIKLVBBQ0tBR0VTX0RZTkFNSUMgKz0gIl4ke1BOfS1tb2R1bGUtLioiCi0KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgewotICAgIG1vZHVsZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCAnJHtsaWJkaXJ9L3h0YWJsZXMnLCByJ2xpYiguKilcLnNvJCcsICcke1BOfS1tb2R1bGUtJXMnLCAnJHtQTn0gbW9kdWxlICVzJywgZXh0cmFfZGVwZW5kcz0nJykKLSAgICBpZiBtb2R1bGVzOgotICAgICAgICBtZXRhcGtnID0gZC5nZXRWYXIoJ1BOJykgKyAnLW1vZHVsZXMnCi0gICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnICsgJyAnLmpvaW4obW9kdWxlcykpCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3h0YWJsZXMiCi0KLSMgSW5jbHVkZSB0aGUgc3ltbGlua3MgYXMgd2VsbCBpbiByZXNwZWN0aXZlIHBhY2thZ2VzCi1GSUxFU18ke1BOfS1tb2R1bGUteHQtY29ubnRyYWNrICs9ICIke2xpYmRpcn0veHRhYmxlcy9saWJ4dF9zdGF0ZS5zbyIKLUZJTEVTXyR7UE59LW1vZHVsZS14dC1jdCArPSAiJHtsaWJkaXJ9L3h0YWJsZXMvbGlieHRfTk9UUkFDSy5zbyIKLQotSU5TQU5FX1NLSVBfJHtQTn0tbW9kdWxlLXh0LWNvbm50cmFjayA9ICJkZXYtc28iCi1JTlNBTkVfU0tJUF8ke1BOfS1tb2R1bGUteHQtY3QgPSAiZGV2LXNvIgotCi1BTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzID0gIjEiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaXB0YWJsZXMKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaXB0YWJsZXMucnVsZXMgJHtEfSR7c3lzY29uZmRpcn0vaXB0YWJsZXMKLQotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9Ci0gICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2lwdGFibGVzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KLQotCXNlZCAtaSAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9pcHRhYmxlcy5zZXJ2aWNlCi19Ci0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJpcHRhYmxlcy5zZXJ2aWNlIgotCi1SREVQRU5EU18ke1BOfSA9ICIke1BOfS1tb2R1bGUteHQtc3RhbmRhcmQiCi1SUkVDT01NRU5EU18ke1BOfSA9ICIgXAotICAgICR7UE59LW1vZHVsZXMgXAotICAgIGtlcm5lbC1tb2R1bGUteC10YWJsZXMgXAotICAgIGtlcm5lbC1tb2R1bGUtaXAtdGFibGVzIFwKLSAgICBrZXJuZWwtbW9kdWxlLWlwdGFibGUtZmlsdGVyIFwKLSAgICBrZXJuZWwtbW9kdWxlLWlwdGFibGUtbmF0IFwKLSAgICBrZXJuZWwtbW9kdWxlLW5mLWRlZnJhZy1pcHY0IFwKLSAgICBrZXJuZWwtbW9kdWxlLW5mLWNvbm50cmFjayBcCi0gICAga2VybmVsLW1vZHVsZS1uZi1jb25udHJhY2staXB2NCBcCi0gICAga2VybmVsLW1vZHVsZS1uZi1uYXQgXAotICAgIGtlcm5lbC1tb2R1bGUtaXB0LW1hc3F1ZXJhZGUgXAotIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXNfMS44LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHRhYmxlcy9pcHRhYmxlc18xLjguNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jZjEzODhjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB0YWJsZXMvaXB0YWJsZXNfMS44LjQuYmIKQEAgLTAsMCArMSwxMDggQEAKK1NVTU1BUlkgPSAiVG9vbHMgZm9yIG1hbmFnaW5nIGtlcm5lbCBwYWNrZXQgZmlsdGVyaW5nIGNhcGFiaWxpdGllcyIKK0RFU0NSSVBUSU9OID0gImlwdGFibGVzIGlzIHRoZSB1c2Vyc3BhY2UgY29tbWFuZCBsaW5lIHByb2dyYW0gdXNlZCB0byBjb25maWd1cmUgYW5kIGNvbnRyb2wgbmV0d29yayBwYWNrZXQgXAorZmlsdGVyaW5nIGNvZGUgaW4gTGludXguIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5uZXRmaWx0ZXIub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLm5ldGZpbHRlci5vcmcvIgorTElDRU5TRSA9ICJHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9pcHRhYmxlcy9pcHRhYmxlcy5jO2JlZ2lubGluZT0xMztlbmRsaW5lPTI1O21kNT1jNWNmZmQwOTk3NDU1OGNmMjdkMGY3NjNkZjJhMTJkYyBcCisiCisKK1NSQ19VUkkgPSAiaHR0cDovL25ldGZpbHRlci5vcmcvcHJvamVjdHMvaXB0YWJsZXMvZmlsZXMvaXB0YWJsZXMtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BZGQtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLWxpYm5mbmV0bGluay5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbmZpZ3VyZS5hYy1vbmx5LWNoZWNrLWNvbm50cmFjay13aGVuLWxpYm5mbmV0bGluay1lbmFibGVkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2lwdGFibGVzLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vaXB0YWJsZXMucnVsZXMgXAorICAgICAgICAgICBmaWxlOi8vaXA2dGFibGVzLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vaXA2dGFibGVzLnJ1bGVzIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI5YjIwMTEwNzk1N2ZiZjYyNzA5YzNkODIyNjIzOWIwZCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5OTNhM2E1NDkwYTU0NGMyY2JmMmVmMTVjZjdlN2VkMjFhZjE4NDViYWYyMjgzMThkNWMzNmVmODgyN2UxNTdjIgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAiXAorICAgIGlwdGFibGVzLnNlcnZpY2UgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2lwdjYnLCAnaXA2dGFibGVzLnNlcnZpY2UnLCAnJywgZCl9IFwKKyIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHN5c3RlbWQKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1rZXJuZWw9JHtTVEFHSU5HX0lOQ0RJUn0iCisKK1BBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorCisjIGxpYm5mbmV0bGluayByZWNpcGUgaXMgaW4gbWV0YS1uZXR3b3JraW5nIGxheWVyCitQQUNLQUdFQ09ORklHW2xpYm5mbmV0bGlua10gPSAiLS1lbmFibGUtbGlibmZuZXRsaW5rLC0tZGlzYWJsZS1saWJuZm5ldGxpbmssbGlibmZuZXRsaW5rIGxpYm5ldGZpbHRlci1jb25udHJhY2siCisKKyMgbGlibmZ0bmwgcmVjaXBlIGlzIGluIG1ldGEtbmV0d29ya2luZyBsYXllcihwcmV2aW91c2x5IGtub3duIGFzIGxpYm5mdGFibGVzKQorUEFDS0FHRUNPTkZJR1tsaWJuZnRubF0gPSAiLS1lbmFibGUtbmZ0YWJsZXMsLS1kaXNhYmxlLW5mdGFibGVzLGxpYm5mdG5sIgorCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAjIFJlbW92ZSBzb21lIGxpYnRvb2wgbTQgZmlsZXMKKyAgICAjIEtlZXAgYXhfY2hlY2tfbGlua2VyX2ZsYWdzLm00IHdoaWNoIGJlbG9uZ3MgdG8gYXV0b2NvbmYtYXJjaGl2ZS4KKyAgICBybSAtZiBsaWJ0b29sLm00IGx0fm9ic29sZXRlLm00IGx0b3B0aW9ucy5tNCBsdHN1Z2FyLm00IGx0dmVyc2lvbi5tNAorfQorCitJUFRBQkxFU19SVUxFU19ESVIgPz0gIiR7c3lzY29uZmRpcn0vJHtCUE59IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke0lQVEFCTEVTX1JVTEVTX0RJUn0KKyAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pcHRhYmxlcy5ydWxlcyAke0R9JHtJUFRBQkxFU19SVUxFU19ESVJ9CisKKyAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9CisgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaXB0YWJsZXMuc2VydmljZSAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfQorCisgICAgc2VkIC1pIFwKKyAgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorICAgICAgICAtZSAncyxAUlVMRVNESVJALCR7SVBUQUJMRVNfUlVMRVNfRElSfSxnJyBcCisgICAgICAgICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L2lwdGFibGVzLnNlcnZpY2UKKworICAgIGlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2lwdjYnLCAndHJ1ZScsICdmYWxzZScsIGQpfSA7IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaXA2dGFibGVzLnJ1bGVzICR7RH0ke0lQVEFCTEVTX1JVTEVTX0RJUn0KKyAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vaXA2dGFibGVzLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0KKworICAgICAgICBzZWQgLWkgXAorICAgICAgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAorICAgICAgICAgICAgLWUgJ3MsQFJVTEVTRElSQCwke0lQVEFCTEVTX1JVTEVTX0RJUn0sZycgXAorICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vaXA2dGFibGVzLnNlcnZpY2UKKyAgICBmaQorfQorCitQQUNLQUdFUyArPSAiJHtQTn0tbW9kdWxlcyIKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl4ke1BOfS1tb2R1bGUtLioiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgeworICAgIG1vZHVsZXMgPSBkb19zcGxpdF9wYWNrYWdlcyhkLCAnJHtsaWJkaXJ9L3h0YWJsZXMnLCByJ2xpYiguKilcLnNvJCcsICcke1BOfS1tb2R1bGUtJXMnLCAnJHtQTn0gbW9kdWxlICVzJywgZXh0cmFfZGVwZW5kcz0nJykKKyAgICBpZiBtb2R1bGVzOgorICAgICAgICBtZXRhcGtnID0gZC5nZXRWYXIoJ1BOJykgKyAnLW1vZHVsZXMnCisgICAgICAgIGQuYXBwZW5kVmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnICsgJyAnLmpvaW4obW9kdWxlcykpCit9CisKK1JERVBFTkRTXyR7UE59ID0gIiR7UE59LW1vZHVsZS14dC1zdGFuZGFyZCIKK1JSRUNPTU1FTkRTXyR7UE59ID0gIiBcCisgICAgJHtQTn0tbW9kdWxlcyBcCisgICAga2VybmVsLW1vZHVsZS14LXRhYmxlcyBcCisgICAga2VybmVsLW1vZHVsZS1pcC10YWJsZXMgXAorICAgIGtlcm5lbC1tb2R1bGUtaXB0YWJsZS1maWx0ZXIgXAorICAgIGtlcm5lbC1tb2R1bGUtaXB0YWJsZS1uYXQgXAorICAgIGtlcm5lbC1tb2R1bGUtbmYtZGVmcmFnLWlwdjQgXAorICAgIGtlcm5lbC1tb2R1bGUtbmYtY29ubnRyYWNrIFwKKyAgICBrZXJuZWwtbW9kdWxlLW5mLWNvbm50cmFjay1pcHY0IFwKKyAgICBrZXJuZWwtbW9kdWxlLW5mLW5hdCBcCisgICAga2VybmVsLW1vZHVsZS1pcHQtbWFzcXVlcmFkZSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnaXB2NicsICdcCisgICAgICAgIGtlcm5lbC1tb2R1bGUtaXA2dGFibGUtZmlsdGVyIFwKKyAgICAgICAga2VybmVsLW1vZHVsZS1pcDYtdGFibGVzIFwKKyAgICAnLCAnJywgZCl9IFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0veHRhYmxlcyIKKworIyBJbmNsdWRlIHRoZSBzeW1saW5rcyBhcyB3ZWxsIGluIHJlc3BlY3RpdmUgcGFja2FnZXMKK0ZJTEVTXyR7UE59LW1vZHVsZS14dC1jb25udHJhY2sgKz0gIiR7bGliZGlyfS94dGFibGVzL2xpYnh0X3N0YXRlLnNvIgorRklMRVNfJHtQTn0tbW9kdWxlLXh0LWN0ICs9ICIke2xpYmRpcn0veHRhYmxlcy9saWJ4dF9OT1RSQUNLLnNvIgorCitBTExPV19FTVBUWV8ke1BOfS1tb2R1bGVzID0gIjEiCisKK0lOU0FORV9TS0lQXyR7UE59LW1vZHVsZS14dC1jb25udHJhY2sgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtQTn0tbW9kdWxlLXh0LWN0ID0gImRldi1zbyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlscy8wMDAxLW5pbmZvZC1jaGFuZ2UtdmFyaWFibGUtbmFtZS10by1hdm9pZC1jb2xsaWRpbmctd2l0aC0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvMDAwMS1uaW5mb2QtY2hhbmdlLXZhcmlhYmxlLW5hbWUtdG8tYXZvaWQtY29sbGlkaW5nLXdpdGgtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmUxMDZhMGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvMDAwMS1uaW5mb2QtY2hhbmdlLXZhcmlhYmxlLW5hbWUtdG8tYXZvaWQtY29sbGlkaW5nLXdpdGgtLnBhdGNoCkBAIC0wLDAgKzEsNTEgQEAKK0Zyb20gYWIxYWEyZWIwMDk3YTdlZjA1ZmZjY2FjMDU4YjA2ODEyZGViMjY5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNhbWkgS2Vyb2xhIDxrZXJvbGFzYUBpa2kuZmk+CitEYXRlOiBTYXQsIDI4IERlYyAyMDE5IDE3OjE2OjI3ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIG5pbmZvZDogY2hhbmdlIHZhcmlhYmxlIG5hbWUgdG8gYXZvaWQgY29sbGlkaW5nIHdpdGggZnVuY3Rpb24KKyBuYW1lCisKK1RoZSBzeXMvY2FwYWJpbGl0eS5oIGhlYWRlciBoYXMgJ2V4dGVybiBpbnQgY2FwX3NldHVpZCh1aWRfdCB1aWQpOycKK2Z1bmN0aW9uIHByb3RvdHlwZS4KKworQWRkcmVzc2VzOiBodHRwczovL2dpdGh1Yi5jb20vaXB1dGlscy9pcHV0aWxzL2lzc3Vlcy8yNDYKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2lwdXRpbHMvaXB1dGlscy9jb21taXQvMThmOWE4NGUwZTcwMjg0MWQ2Y2M0ZDVmNTkzZGU0ZmJkMTM0OGU4M10KK1NpZ25lZC1vZmYtYnk6IFNhbWkgS2Vyb2xhIDxrZXJvbGFzYUBpa2kuZmk+CitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIG5pbmZvZC9uaW5mb2QuYyB8IDggKysrKy0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCA0IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbmluZm9kL25pbmZvZC5jIGIvbmluZm9kL25pbmZvZC5jCitpbmRleCBiYWRiZjgwLi4yOGYwM2FmIDEwMDY0NAorLS0tIGEvbmluZm9kL25pbmZvZC5jCisrKysgYi9uaW5mb2QvbmluZm9kLmMKK0BAIC00NTQsNyArNDU0LDcgQEAgc3RhdGljIHZvaWQgZG9fZGFlbW9uaXplKHZvaWQpCisgLyogLS0tLS0tLS0tICovCisgI2lmZGVmIEhBVkVfTElCQ0FQCisgc3RhdGljIGNvbnN0IGNhcF92YWx1ZV90IGNhcF9uZXRfcmF3ID0gQ0FQX05FVF9SQVc7Cistc3RhdGljIGNvbnN0IGNhcF92YWx1ZV90IGNhcF9zZXR1aWQgPSAgQ0FQX1NFVFVJRDsgCisrc3RhdGljIGNvbnN0IGNhcF92YWx1ZV90IGNhcF9zZXR1c2VyaWQgPSBDQVBfU0VUVUlEOworIHN0YXRpYyBjYXBfZmxhZ192YWx1ZV90IGNhcF9vazsKKyAjZWxzZQorIHN0YXRpYyB1aWRfdCBldWlkOworQEAgLTQ4Niw3ICs0ODYsNyBAQCBzdGF0aWMgdm9pZCBsaW1pdF9jYXBhYmlsaXRpZXModm9pZCkKKyAKKyAJY2FwX2dldF9mbGFnKGNhcF9jdXJfcCwgQ0FQX1NFVFVJRCwgQ0FQX1BFUk1JVFRFRCwgJmNhcF9vayk7CisgCWlmIChjYXBfb2sgIT0gQ0FQX0NMRUFSKQorLQkJY2FwX3NldF9mbGFnKGNhcF9wLCBDQVBfUEVSTUlUVEVELCAxLCAmY2FwX3NldHVpZCwgQ0FQX1NFVCk7CisrCQljYXBfc2V0X2ZsYWcoY2FwX3AsIENBUF9QRVJNSVRURUQsIDEsICZjYXBfc2V0dXNlcmlkLCBDQVBfU0VUKTsKKyAKKyAJaWYgKGNhcF9zZXRfcHJvYyhjYXBfcCkgPCAwKSB7CisgCQlERUJVRyhMT0dfRVJSLCAiY2FwX3NldF9wcm9jOiAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKK0BAIC01MTksOCArNTE5LDggQEAgc3RhdGljIHZvaWQgZHJvcF9jYXBhYmlsaXRpZXModm9pZCkKKyAKKyAJLyogc2V0dWlkIC8gc2V0dWlkICovCisgCWlmIChjYXBfb2sgIT0gQ0FQX0NMRUFSKSB7CistCQljYXBfc2V0X2ZsYWcoY2FwX3AsIENBUF9QRVJNSVRURUQsIDEsICZjYXBfc2V0dWlkLCBDQVBfU0VUKTsKKy0JCWNhcF9zZXRfZmxhZyhjYXBfcCwgQ0FQX0VGRkVDVElWRSwgMSwgJmNhcF9zZXR1aWQsIENBUF9TRVQpOworKwkJY2FwX3NldF9mbGFnKGNhcF9wLCBDQVBfUEVSTUlUVEVELCAxLCAmY2FwX3NldHVzZXJpZCwgQ0FQX1NFVCk7CisrCQljYXBfc2V0X2ZsYWcoY2FwX3AsIENBUF9FRkZFQ1RJVkUsIDEsICZjYXBfc2V0dXNlcmlkLCBDQVBfU0VUKTsKKyAKKyAJCWlmIChjYXBfc2V0X3Byb2MoY2FwX3ApIDwgMCkgeworIAkJCURFQlVHKExPR19FUlIsICJjYXBfc2V0X3Byb2M6ICVzXG4iLCBzdHJlcnJvcihlcnJubykpOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzLzAwMDEtbmluZm9kLWZpeC1zeXN0ZW1kLURvY3VtZW50YXRpb24tdXJsLWVycm9yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzLzAwMDEtbmluZm9kLWZpeC1zeXN0ZW1kLURvY3VtZW50YXRpb24tdXJsLWVycm9yLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAzYTNmNTYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvMDAwMS1uaW5mb2QtZml4LXN5c3RlbWQtRG9jdW1lbnRhdGlvbi11cmwtZXJyb3IucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSBjMWYxNTI3ZWIzMGQ0YTVmZWViZjlhMDc1NzU4MmJiZjdmZTNlYWU5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQW5kcmVhIFN0ZXZhbmF0byA8YW5kcmVhLnN0ZXZhbmF0by45NUBob3RtYWlsLml0PgorRGF0ZTogVHVlLCA1IE5vdiAyMDE5IDE5OjA4OjMwICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIG5pbmZvZDogZml4IHN5c3RlbWQgRG9jdW1lbnRhdGlvbiB1cmwgZXJyb3IKKworc3lzdGVtZFsxXTogL3Vzci9saWIvc3lzdGVtZC9zeXN0ZW0vbmluZm9kLnNlcnZpY2U6MzogSW52YWxpZCBVUkwsIGlnbm9yaW5nOiBuaW5mb2QoOCkKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2lwdXRpbHMvaXB1dGlscy9jb21taXQvYzFmMTUyN2ViMzBkNGE1ZmVlYmY5YTA3NTc1ODJiYmY3ZmUzZWFlOV0KK1NpZ25lZC1vZmYtYnk6IEFsZXggS2llcm5hbiA8YWxleC5raWVybmFuQGdtYWlsLmNvbT4KKy0tLQorIHN5c3RlbWQvbmluZm9kLnNlcnZpY2UuaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zeXN0ZW1kL25pbmZvZC5zZXJ2aWNlLmluIGIvc3lzdGVtZC9uaW5mb2Quc2VydmljZS5pbgoraW5kZXggNWFiNjljYTAwZTk2Li44ZTc5ZmNkOTIzOGUgMTAwNjQ0CistLS0gYS9zeXN0ZW1kL25pbmZvZC5zZXJ2aWNlLmluCisrKysgYi9zeXN0ZW1kL25pbmZvZC5zZXJ2aWNlLmluCitAQCAtMSw2ICsxLDYgQEAKKyBbVW5pdF0KKyBEZXNjcmlwdGlvbj1SZXNwb25kIHRvIElQdjYgTm9kZSBJbmZvcm1hdGlvbiBRdWVyaWVzCistRG9jdW1lbnRhdGlvbj1uaW5mb2QoOCkKKytEb2N1bWVudGF0aW9uPW1hbjpuaW5mb2QoOCkKKyBSZXF1aXJlcz1uZXR3b3JrLnRhcmdldAorIEFmdGVyPW5ldHdvcmsudGFyZ2V0CisgCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvMDAwMS1yYXJwZC1yZGlzYy1Ecm9wLVByaXZhdGVVc2Vycy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlscy8wMDAxLXJhcnBkLXJkaXNjLURyb3AtUHJpdmF0ZVVzZXJzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ3MzY3Y2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHMvMDAwMS1yYXJwZC1yZGlzYy1Ecm9wLVByaXZhdGVVc2Vycy5wYXRjaApAQCAtMCwwICsxLDQ2IEBACitGcm9tIDZlNTFkNTI5OTg4Y2ZjMGJiMzU3NzUxZmQ3NjdlOWYxNDc4ZTJiODEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4IEtpZXJuYW4gPGFsZXgua2llcm5hbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDEzIEZlYiAyMDIwIDA2OjA4OjQ1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHJhcnBkOiByZGlzYzogRHJvcCBQcml2YXRlVXNlcnMKKworTmVpdGhlciByYXJwZCBub3IgcmRpc2MgY2FuIGdhaW4gdGhlIG5lY2Vzc2FyeSBjYXBhYmlsaXRpZXMgd2l0aAorUHJpdmF0ZVVzZXJzIGVuYWJsZWQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleCBLaWVybmFuIDxhbGV4LmtpZXJuYW5AZ21haWwuY29tPgorLS0tCisgc3lzdGVtZC9yYXJwZC5zZXJ2aWNlLmluIHwgMSAtCisgc3lzdGVtZC9yZGlzYy5zZXJ2aWNlLmluIHwgMyArKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3N5c3RlbWQvcmFycGQuc2VydmljZS5pbiBiL3N5c3RlbWQvcmFycGQuc2VydmljZS5pbgoraW5kZXggZTYwMGMxMGM5M2U2Li5mNWQ3NjIxYTdjZTggMTAwNjQ0CistLS0gYS9zeXN0ZW1kL3JhcnBkLnNlcnZpY2UuaW4KKysrKyBiL3N5c3RlbWQvcmFycGQuc2VydmljZS5pbgorQEAgLTEyLDcgKzEyLDYgQEAgQW1iaWVudENhcGFiaWxpdGllcz1DQVBfTkVUX1JBVworIER5bmFtaWNVc2VyPXllcworIFByaXZhdGVUbXA9eWVzCisgUHJpdmF0ZURldmljZXM9eWVzCistUHJpdmF0ZVVzZXJzPXllcworIFByb3RlY3RTeXN0ZW09c3RyaWN0CisgUHJvdGVjdEhvbWU9eWVzCisgUHJvdGVjdENvbnRyb2xHcm91cHM9eWVzCitkaWZmIC0tZ2l0IGEvc3lzdGVtZC9yZGlzYy5zZXJ2aWNlLmluIGIvc3lzdGVtZC9yZGlzYy5zZXJ2aWNlLmluCitpbmRleCA0ZTJhMWVjOWQwZTUuLmE3MWI4N2QzNmIzNyAxMDA2NDQKKy0tLSBhL3N5c3RlbWQvcmRpc2Muc2VydmljZS5pbgorKysrIGIvc3lzdGVtZC9yZGlzYy5zZXJ2aWNlLmluCitAQCAtOCw5ICs4LDEwIEBAIEFmdGVyPW5ldHdvcmsudGFyZ2V0CisgRW52aXJvbm1lbnRGaWxlPS0vZXRjL3N5c2NvbmZpZy9yZGlzYworIEV4ZWNTdGFydD1Ac2JpbmRpckAvcmRpc2MgLWYgLXQgJE9QVElPTlMgJFNFTkRfQUREUkVTUyAkUkVDRUlWRV9BRERSRVNTCisgCisrQ2FwYWJpbGl0eUJvdW5kaW5nU2V0PUNBUF9ORVRfUkFXCisgQW1iaWVudENhcGFiaWxpdGllcz1DQVBfTkVUX1JBVworIFByaXZhdGVUbXA9eWVzCistUHJpdmF0ZVVzZXJzPXllcworK0R5bmFtaWNVc2VyPXllcworIFByb3RlY3RTeXN0ZW09c3RyaWN0CisgUHJvdGVjdEhvbWU9eWVzCisgUHJvdGVjdENvbnRyb2xHcm91cHM9eWVzCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTkwNzA5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvaXB1dGlscy9pcHV0aWxzX3MyMDE5MDcwOS5iYgppbmRleCAzZjllOTkxLi4yYWVkNmI1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9pcHV0aWxzL2lwdXRpbHNfczIwMTkwNzA5LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2lwdXRpbHMvaXB1dGlsc19zMjAxOTA3MDkuYmIKQEAgLTEwLDcgKzEwLDExIEBACiAKIERFUEVORFMgPSAiZ251dGxzIgogCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vaXB1dGlscy9pcHV0aWxzIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL2lwdXRpbHMvaXB1dGlscyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLW5pbmZvZC1jaGFuZ2UtdmFyaWFibGUtbmFtZS10by1hdm9pZC1jb2xsaWRpbmctd2l0aC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1uaW5mb2QtZml4LXN5c3RlbWQtRG9jdW1lbnRhdGlvbi11cmwtZXJyb3IucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1yYXJwZC1yZGlzYy1Ecm9wLVByaXZhdGVVc2Vycy5wYXRjaCBcCisgICAgICAgICAgICIKIFNSQ1JFViA9ICIxM2UwMDg0NzE3NmFhMjM2ODNkNjhmY2UxZDE3ZmZiNTIzNTEwOTQ2IgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgpAQCAtMjEsMzAgKzI1LDM1IEBACiAjIGJyZWFrcyB0aGUgdmVyc2lvbiBvcmRlci4KIENWRV9DSEVDS19XSElURUxJU1QgKz0gIkNWRS0yMDAwLTEyMTMgQ1ZFLTIwMDAtMTIxNCIKIAotUEFDS0FHRUNPTkZJRyA/Pz0gImxpYmNhcCBsaWJnY3J5cHQgcmFycGQgdHJhY2Vyb3V0ZTYiCitQQUNLQUdFQ09ORklHID8/PSAibGliY2FwIGxpYmdjcnlwdCByYXJwZCBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJ25pbmZvZCB0cmFjZXJvdXRlNicsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCBkKX0iCiBQQUNLQUdFQ09ORklHW2xpYmNhcF0gPSAiLURVU0VfQ0FQPXRydWUsIC1EVVNFX0NBUD1mYWxzZSwgbGliY2FwIgogUEFDS0FHRUNPTkZJR1tsaWJnY3J5cHRdID0gIi1EVVNFX0NSWVBUTz1nY3J5cHQsIC1EVVNFX0NSWVBUTz1ub25lLCBsaWJnY3J5cHQiCiBQQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLURVU0VfSUROPXRydWUsIC1EVVNFX0lETj1mYWxzZSwgbGliaWRuMiIKIFBBQ0tBR0VDT05GSUdbZ2V0dGV4dF0gPSAiLURVU0VfR0VUVEVYVD10cnVlLCAtRFVTRV9HRVRURVhUPWZhbHNlLCBnZXR0ZXh0IgorUEFDS0FHRUNPTkZJR1tuaW5mb2RdID0gIi1EQlVJTERfTklORk9EPXRydWUsLURCVUlMRF9OSU5GT0Q9ZmFsc2UsIgogUEFDS0FHRUNPTkZJR1tyYXJwZF0gPSAiLURCVUlMRF9SQVJQRD10cnVlLC1EQlVJTERfUkFSUEQ9ZmFsc2UsIgorUEFDS0FHRUNPTkZJR1tzeXN0ZW1kXSA9ICItRHN5c3RlbWR1bml0ZGlyPSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0sLHN5c3RlbWQiCiBQQUNLQUdFQ09ORklHW3RyYWNlcm91dGU2XSA9ICItREJVSUxEX1RSQUNFUk9VVEU2PXRydWUsLURCVUlMRF9UUkFDRVJPVVRFNj1mYWxzZSwiCiBQQUNLQUdFQ09ORklHW2RvY3NdID0gIi1EQlVJTERfSFRNTF9NQU5TPXRydWUgLURCVUlMRF9NQU5TPXRydWUsLURCVUlMRF9IVE1MX01BTlM9ZmFsc2UgLURCVUlMRF9NQU5TPWZhbHNlLCBsaWJ4c2x0IgogCi1pbmhlcml0IG1lc29uIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKK2luaGVyaXQgbWVzb24gc3lzdGVtZCB1cGRhdGUtYWx0ZXJuYXRpdmVzCiAKLUVYVFJBX09FTUVTT04gKz0gIi0tcHJlZml4PSR7cm9vdF9wcmVmaXh9LyIKKyMgSGF2ZSB0byBkaXNhYmxlIHNldGNhcC9zdWlkIGFzIGl0cyBub3QgZGV0ZXJtaW5pc3RpYworRVhUUkFfT0VNRVNPTiArPSAiLS1wcmVmaXg9JHtyb290X3ByZWZpeH0vIC1ETk9fU0VUQ0FQX09SX1NVSUQ9dHJ1ZSIKIAogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgogCiBBTFRFUk5BVElWRV8ke1BOfS1waW5nID0gInBpbmciCiBBTFRFUk5BVElWRV9MSU5LX05BTUVbcGluZ10gPSAiJHtiYXNlX2JpbmRpcn0vcGluZyIKIAotU1BMSVRQS0dTID0gIiR7UE59LXBpbmcgJHtQTn0tYXJwaW5nICR7UE59LXRyYWNlcGF0aCAke1BOfS10cmFjZXJvdXRlNiAke1BOfS1jbG9ja2RpZmYgJHtQTn0tdGZ0cGQgJHtQTn0tcmFycGQgJHtQTn0tcmRpc2MgJHtQTn0tbmluZm9kIgorU1BMSVRQS0dTID0gIiR7UE59LXBpbmcgJHtQTn0tYXJwaW5nICR7UE59LXRyYWNlcGF0aCAke1BOfS1jbG9ja2RpZmYgJHtQTn0tdGZ0cGQgJHtQTn0tcmRpc2MgXAorICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3JhcnBkJywgJyR7UE59LXJhcnBkJywgJycsIGQpfSBcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJyR7UE59LXRyYWNlcm91dGU2ICR7UE59LW5pbmZvZCcsICcnLCBkKX0iCiBQQUNLQUdFUyArPSAiJHtTUExJVFBLR1N9IgogCiBBTExPV19FTVBUWV8ke1BOfSA9ICIxIgotQUxMT1dfRU1QVFlfJHtQTn0tcmFycGQgPSAiMSIKLUFMTE9XX0VNUFRZXyR7UE59LXRyYWNlcm91dGU2ID0gIjEiCiBSREVQRU5EU18ke1BOfSArPSAiJHtTUExJVFBLR1N9IgogCiBGSUxFU18ke1BOfSA9ICIiCkBAIC01NCw2ICs2MywxMSBAQAogRklMRVNfJHtQTn0tdHJhY2Vyb3V0ZTYJPSAiJHtiYXNlX2JpbmRpcn0vdHJhY2Vyb3V0ZTYiCiBGSUxFU18ke1BOfS1jbG9ja2RpZmYgPSAiJHtiYXNlX2JpbmRpcn0vY2xvY2tkaWZmIgogRklMRVNfJHtQTn0tdGZ0cGQgPSAiJHtiYXNlX2JpbmRpcn0vdGZ0cGQiCi1GSUxFU18ke1BOfS1yYXJwZCA9ICIke2Jhc2Vfc2JpbmRpcn0vcmFycGQiCitGSUxFU18ke1BOfS1yYXJwZCA9ICIke2Jhc2Vfc2JpbmRpcn0vcmFycGQgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vcmFycGRALnNlcnZpY2UiCiBGSUxFU18ke1BOfS1yZGlzYyA9ICIke2Jhc2Vfc2JpbmRpcn0vcmRpc2MiCiBGSUxFU18ke1BOfS1uaW5mb2QgPSAiJHtiYXNlX3NiaW5kaXJ9L25pbmZvZCAke3N5c2NvbmZkaXJ9L2luaXQuZC9uaW5mb2Quc2giCisKK1NZU1RFTURfUEFDS0FHRVMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgJyR7UE59LW5pbmZvZCcsICcnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1yZGlzYyIKK1NZU1RFTURfU0VSVklDRV8ke1BOfS1uaW5mb2QgPSAibmluZm9kLnNlcnZpY2UiCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0tcmRpc2MgPSAicmRpc2Muc2VydmljZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmFyY2hpdmUvbGliYXJjaGl2ZV8zLjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWMwZDVlMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy40LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2NyArMCwwIEBACi1TVU1NQVJZID0gIlN1cHBvcnQgZm9yIHJlYWRpbmcgdmFyaW91cyBhcmNoaXZlIGZvcm1hdHMiCi1ERVNDUklQVElPTiA9ICJDIGxpYnJhcnkgYW5kIGNvbW1hbmQtbGluZSB0b29scyBmb3IgcmVhZGluZyBhbmQgd3JpdGluZyB0YXIsIGNwaW8sIHppcCwgSVNPLCBhbmQgb3RoZXIgYXJjaGl2ZSBmb3JtYXRzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJhcmNoaXZlLm9yZy8iCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mZTAxZjVlMDJiMWYwY2M5MzRkNTkzYTdiMGRkY2ViNiIKLQotREVQRU5EUyA9ICJlMmZzcHJvZ3MtbmF0aXZlIgotCi1QQUNLQUdFQ09ORklHID89ICJ6bGliIGJ6MiB4eiBsem8iCi0KLVBBQ0tBR0VDT05GSUdfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICJcCi0JbGlieG1sMiBcCi0JJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWNsIHhhdHRyJywgZCl9IFwKLSIKLQotREVQRU5EU19CWklQMiA9ICJiemlwMi1yZXBsYWNlbWVudC1uYXRpdmUiCi1ERVBFTkRTX0JaSVAyX2NsYXNzLXRhcmdldCA9ICJiemlwMiIKLQotUEFDS0FHRUNPTkZJR1thY2xdID0gIi0tZW5hYmxlLWFjbCwtLWRpc2FibGUtYWNsLGFjbCwiCi1QQUNLQUdFQ09ORklHW3hhdHRyXSA9ICItLWVuYWJsZS14YXR0ciwtLWRpc2FibGUteGF0dHIsYXR0ciwiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIsIgotUEFDS0FHRUNPTkZJR1tiejJdID0gIi0td2l0aC1iejJsaWIsLS13aXRob3V0LWJ6MmxpYiwke0RFUEVORFNfQlpJUDJ9LCIKLVBBQ0tBR0VDT05GSUdbeHpdID0gIi0td2l0aC1sem1hLC0td2l0aG91dC1sem1hLHh6LCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCwiCi1QQUNLQUdFQ09ORklHW2xpYnhtbDJdID0gIi0td2l0aC14bWwyLC0td2l0aG91dC14bWwyLGxpYnhtbDIsIgotUEFDS0FHRUNPTkZJR1tleHBhdF0gPSAiLS13aXRoLWV4cGF0LC0td2l0aG91dC1leHBhdCxleHBhdCwiCi1QQUNLQUdFQ09ORklHW2x6b10gPSAiLS13aXRoLWx6bzIsLS13aXRob3V0LWx6bzIsbHpvLCIKLVBBQ0tBR0VDT05GSUdbbmV0dGxlXSA9ICItLXdpdGgtbmV0dGxlLC0td2l0aG91dC1uZXR0bGUsbmV0dGxlLCIKLVBBQ0tBR0VDT05GSUdbbHo0XSA9ICItLXdpdGgtbHo0LC0td2l0aG91dC1sejQsbHo0LCIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1sYXJnZWZpbGUiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2xpYmFyY2hpdmUub3JnL2Rvd25sb2Fkcy9saWJhcmNoaXZlLSR7UFZ9LnRhci5neiBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2MDQ2Mzk2MjU1YmQ3Y2Y2ZDBmNjYwM2E5YmRhMzlhYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NjQzZDUwZWQ0MGM3NTlmNTQxMmEzYWY0ZTM1M2NmZmJjZTRmZGYzYjVjZjMyMWNiNzJjYWNmMDZiMmQ4MjVlIgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzIHBrZ2NvbmZpZwotCi1DUFBGTEFHUyArPSAiLUkke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzIgotCi1kb19jb25maWd1cmVbY2xlYW5kaXJzXSArPSAiJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcyIKLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCSMgV2UganVzdCBuZWVkIHRoZSBoZWFkZXJzIGZvciBzb21lIHR5cGUgY29uc3RhbnRzLCBzbyBubyBuZWVkIHRvCi0JIyBidWlsZCBhbGwgb2YgZTJmc3Byb2dzIGZvciB0aGUgdGFyZ2V0Ci0JY3AgLVIgJHtTVEFHSU5HX0lOQ0RJUl9OQVRJVkV9L2V4dDJmcyAke1dPUktESVJ9L2V4dHJhLWluY2x1ZGVzLwotfQotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICI4MCIKLQotUEFDS0FHRVMgPSsgImJzZHRhciIKLUZJTEVTX2JzZHRhciA9ICIke2JpbmRpcn0vYnNkdGFyIgotCi1BTFRFUk5BVElWRV9ic2R0YXIgPSAidGFyIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Rhcl0gPSAiJHtiYXNlX2JpbmRpcn0vdGFyIgotQUxURVJOQVRJVkVfVEFSR0VUW3Rhcl0gPSAiJHtiaW5kaXJ9L2JzZHRhciIKLQotUEFDS0FHRVMgPSsgImJzZGNwaW8iCi1GSUxFU19ic2RjcGlvID0gIiR7YmluZGlyfS9ic2RjcGlvIgotCi1BTFRFUk5BVElWRV9ic2RjcGlvID0gImNwaW8iCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbY3Bpb10gPSAiJHtiYXNlX2JpbmRpcn0vY3BpbyIKLUFMVEVSTkFUSVZFX1RBUkdFVFtjcGlvXSA9ICIke2JpbmRpcn0vYnNkY3BpbyIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuNC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliYXJjaGl2ZS9saWJhcmNoaXZlXzMuNC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBhYjQwZmMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJhcmNoaXZlL2xpYmFyY2hpdmVfMy40LjIuYmIKQEAgLTAsMCArMSw2NyBAQAorU1VNTUFSWSA9ICJTdXBwb3J0IGZvciByZWFkaW5nIHZhcmlvdXMgYXJjaGl2ZSBmb3JtYXRzIgorREVTQ1JJUFRJT04gPSAiQyBsaWJyYXJ5IGFuZCBjb21tYW5kLWxpbmUgdG9vbHMgZm9yIHJlYWRpbmcgYW5kIHdyaXRpbmcgdGFyLCBjcGlvLCB6aXAsIElTTywgYW5kIG90aGVyIGFyY2hpdmUgZm9ybWF0cyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGliYXJjaGl2ZS5vcmcvIgorU0VDVElPTiA9ICJkZXZlbCIKK0xJQ0VOU0UgPSAiQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZmUwMWY1ZTAyYjFmMGNjOTM0ZDU5M2E3YjBkZGNlYjYiCisKK0RFUEVORFMgPSAiZTJmc3Byb2dzLW5hdGl2ZSIKKworUEFDS0FHRUNPTkZJRyA/PSAiemxpYiBiejIgeHogbHpvIgorCitQQUNLQUdFQ09ORklHX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAorCWxpYnhtbDIgXAorCSR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2FjbCB4YXR0cicsIGQpfSBcCisiCisKK0RFUEVORFNfQlpJUDIgPSAiYnppcDItcmVwbGFjZW1lbnQtbmF0aXZlIgorREVQRU5EU19CWklQMl9jbGFzcy10YXJnZXQgPSAiYnppcDIiCisKK1BBQ0tBR0VDT05GSUdbYWNsXSA9ICItLWVuYWJsZS1hY2wsLS1kaXNhYmxlLWFjbCxhY2wsIgorUEFDS0FHRUNPTkZJR1t4YXR0cl0gPSAiLS1lbmFibGUteGF0dHIsLS1kaXNhYmxlLXhhdHRyLGF0dHIsIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYiwtLXdpdGhvdXQtemxpYix6bGliLCIKK1BBQ0tBR0VDT05GSUdbYnoyXSA9ICItLXdpdGgtYnoybGliLC0td2l0aG91dC1iejJsaWIsJHtERVBFTkRTX0JaSVAyfSwiCitQQUNLQUdFQ09ORklHW3h6XSA9ICItLXdpdGgtbHptYSwtLXdpdGhvdXQtbHptYSx4eiwiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wsIgorUEFDS0FHRUNPTkZJR1tsaWJ4bWwyXSA9ICItLXdpdGgteG1sMiwtLXdpdGhvdXQteG1sMixsaWJ4bWwyLCIKK1BBQ0tBR0VDT05GSUdbZXhwYXRdID0gIi0td2l0aC1leHBhdCwtLXdpdGhvdXQtZXhwYXQsZXhwYXQsIgorUEFDS0FHRUNPTkZJR1tsem9dID0gIi0td2l0aC1sem8yLC0td2l0aG91dC1sem8yLGx6bywiCitQQUNLQUdFQ09ORklHW25ldHRsZV0gPSAiLS13aXRoLW5ldHRsZSwtLXdpdGhvdXQtbmV0dGxlLG5ldHRsZSwiCitQQUNLQUdFQ09ORklHW2x6NF0gPSAiLS13aXRoLWx6NCwtLXdpdGhvdXQtbHo0LGx6NCwiCitQQUNLQUdFQ09ORklHW21iZWR0bHNdID0gIi0td2l0aC1tYmVkdGxzLC0td2l0aG91dC1tYmVkdGxzLG1iZWR0bHMsIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZW5hYmxlLWxhcmdlZmlsZSIKKworU1JDX1VSSSA9ICJodHRwOi8vbGliYXJjaGl2ZS5vcmcvZG93bmxvYWRzL2xpYmFyY2hpdmUtJHtQVn0udGFyLmd6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDk1M2VkNmI0NzY5NGRhZGYwZTYwNDJmOGY5ZmY0NTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjYwZDU4ZDEyNjMyZWNmMWU4ZmFkNzMxNmRjODJjNmI5NzM4YTM1NjI1NzQ2YjQ3ZWNkY2FmNGFlZDE3NjE3NiIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcyBwa2djb25maWcKKworQ1BQRkxBR1MgKz0gIi1JJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcyIKKworZG9fY29uZmlndXJlW2NsZWFuZGlyc10gKz0gIiR7V09SS0RJUn0vZXh0cmEtaW5jbHVkZXMiCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKwkjIFdlIGp1c3QgbmVlZCB0aGUgaGVhZGVycyBmb3Igc29tZSB0eXBlIGNvbnN0YW50cywgc28gbm8gbmVlZCB0bworCSMgYnVpbGQgYWxsIG9mIGUyZnNwcm9ncyBmb3IgdGhlIHRhcmdldAorCWNwIC1SICR7U1RBR0lOR19JTkNESVJfTkFUSVZFfS9leHQyZnMgJHtXT1JLRElSfS9leHRyYS1pbmNsdWRlcy8KK30KKworQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiODAiCisKK1BBQ0tBR0VTID0rICJic2R0YXIiCitGSUxFU19ic2R0YXIgPSAiJHtiaW5kaXJ9L2JzZHRhciIKKworQUxURVJOQVRJVkVfYnNkdGFyID0gInRhciIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt0YXJdID0gIiR7YmFzZV9iaW5kaXJ9L3RhciIKK0FMVEVSTkFUSVZFX1RBUkdFVFt0YXJdID0gIiR7YmluZGlyfS9ic2R0YXIiCisKK1BBQ0tBR0VTID0rICJic2RjcGlvIgorRklMRVNfYnNkY3BpbyA9ICIke2JpbmRpcn0vYnNkY3BpbyIKKworQUxURVJOQVRJVkVfYnNkY3BpbyA9ICJjcGlvIgorQUxURVJOQVRJVkVfTElOS19OQU1FW2NwaW9dID0gIiR7YmFzZV9iaW5kaXJ9L2NwaW8iCitBTFRFUk5BVElWRV9UQVJHRVRbY3Bpb10gPSAiJHtiaW5kaXJ9L2JzZGNwaW8iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4vYXZvaWRfQU1fUFJPR19NS0RJUl9QX3dhcm5pbmdfZXJyb3Jfd2l0aF9hdXRvbWFrZV8xLjEyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9hdm9pZF9BTV9QUk9HX01LRElSX1Bfd2FybmluZ19lcnJvcl93aXRoX2F1dG9tYWtlXzEuMTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQzYmQyMzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9hdm9pZF9BTV9QUk9HX01LRElSX1Bfd2FybmluZ19lcnJvcl93aXRoX2F1dG9tYWtlXzEuMTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1Gcm9tIGNkZDllMmU5NjBlZWI0ZWRhN2IwOGYwMTEzZDBjZDAzNTI0YzFkNDUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOaXRpbiBBIEthbWJsZSA8bml0aW4uYS5rYW1ibGVAaW50ZWwuY29tPgotRGF0ZTogVHVlLCAxMCBKdWwgMjAxMiAwMjo0NDozMCAtMDcwMAotU3ViamVjdDogW1BBVENIXSBsaWJpZG46IGZpeCBidWlsZCB3aXRoIGF1dG9tYWtlIDEuMTIKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0KLWF1dG9tYWtlIDEuMTIueCBoYXMgZGVwcmVjYXRlZCBBTV9QUk9HX01LRElSX1AgLCBhbmQgdGhyb3dzIGEgd2FybmluZyBmb3IgdGhhdCwKLWFuZCB0aGUgd2FybmluZ3MgYXJlIHRyZWF0ZWQgYXMgZXJyb3JzIGJlY2F1c2Ugb2YgdGhlIC1XZXJyb3IgcGFyYW1ldGVyLgotCi1UaGVzZSBBTV9QUk9HX01LRElSX1AgYXJlIGNvbWluZyBmcm9tIGdldHRleHQsIGFuZCB0aGUgbGF0ZXN0IGdldHRleHQgY29kZSBoYXMgbm90Ci1lbGltaW5hdGVkIHRoZXNlIGRlcHJlY2F0ZWQgbWFjcm9zIHlldC4gU28gZGlzYWJsZSB0aGUgdHJlYXRtZW50IG9mIHdhcm5pbmdzCi1hcyBlcnJvcnMgdW50aWwgZ2V0dGV4dCBpcyB1cGRhdGVkIHRvIHJlbW92ZSB0aGUgZGVwcmVjYXRlZCBtYWNyb3MuCi0KLVNpZ25lZC1vZmYtYnk6IE5pdGluIEEgS2FtYmxlIDxuaXRpbi5hLmthbWJsZUBpbnRlbC5jb20+Ci0yMDEyLzA3LzEwCi0KLS0tLQotIGNvbmZpZ3VyZS5hYyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMjYxZGFkMi4uYzRmOTM1ZSAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMjIsNyArMjIsNyBAQCBBQ19JTklUKFtHTlUgTGliaWRuXSwgWzEuMzRdLCBbYnVnLWxpYmlkbkBnbnUub3JnXSkKLSBBQ19DT05GSUdfQVVYX0RJUihbYnVpbGQtYXV4XSkKLSBBQ19DT05GSUdfTUFDUk9fRElSKFttNF0pCi0gQUNfQ09ORklHX0hFQURFUlMoY29uZmlnLmgpCi0tQU1fSU5JVF9BVVRPTUFLRShbMS4xMCAtV2FsbCAtV2Vycm9yIC1Xbm8tb3ZlcnJpZGVdKQotK0FNX0lOSVRfQVVUT01BS0UoWzEuMTAgLVdhbGwgLVduby1vdmVycmlkZV0pCi0gbTRfaWZkZWYoW0FNX1NJTEVOVF9SVUxFU10sIFtBTV9TSUxFTlRfUlVMRVMoW3llc10pXSkKLSAKLSAjIExpYnJhcnkgY29kZSBtb2RpZmllZDogICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSRVZJU0lPTisrCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2xpYmlkbl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuL2xpYmlkbl9maXhfZm9yX2F1dG9tYWtlLTEuMTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNjMDU1OWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbi9saWJpZG5fZml4X2Zvcl9hdXRvbWFrZS0xLjEyLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSBkNGY2NGI3ODQxOTEzOWVkYTNjMGUxYzZlZTExNmJiNWY3MGVhNjdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLURhdGU6IFdlZCwgMiBNYXkgMjAxMiAxODowNToxOSAtMDcwMAotU3ViamVjdDogW1BBVENIXSBsaWJ0YXNuMTogZml4IGJ1aWxkIHdpdGggYXV0b21ha2UgMS4xMgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotVGhpcyBwYXRjaCBmaXhlcyBmb2xsb3dpbmcgaXNzdWUgd2l0aCBhdXRvbWFrZSAxLjEyCi0KLXwgYXV0b21ha2U6IHdhcm5pbmdzIGFyZSB0cmVhdGVkIGFzIGVycm9ycwotfCAvc3J2L2hvbWUvbml0aW4vYnVpbGRzL2J1aWxkLWdjYzQ3L3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL3NoYXJlL2F1dG9tYWtlLTEuMTIvYW0vbHRsaWJyYXJ5LmFtOiB3YXJuaW5nOiAnbGliaWRuLmxhJzogbGlua2luZyBsaWJ0b29sIGxpYnJhcmllcyB1c2luZyBhIG5vbi1QT1NJWAotfCAvc3J2L2hvbWUvbml0aW4vYnVpbGRzL2J1aWxkLWdjYzQ3L3RtcC9zeXNyb290cy94ODZfNjQtbGludXgvdXNyL3NoYXJlL2F1dG9tYWtlLTEuMTIvYW0vbHRsaWJyYXJ5LmFtOiBhcmNoaXZlciByZXF1aXJlcyAnQU1fUFJPR19BUicgaW4gJ2NvbmZpZ3VyZS5hYycKLQotU2lnbmVkLW9mZi1ieTogTml0aW4gQSBLYW1ibGUgPG5pdGluLmEua2FtYmxlQGludGVsLmNvbT4KLTIwMTIvMDUvMDMKLQotLS0tCi0gY29uZmlndXJlLmFjIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA4Mjk3NjQ5Li43Yjk2MjZlIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0zMyw2ICszMywxMCBAQCBBQ19TVUJTVChMVF9DVVJSRU5ULCAxOCkKLSBBQ19TVUJTVChMVF9SRVZJU0lPTiwgMCkKLSBBQ19TVUJTVChMVF9BR0UsIDYpCi0gCi0rIyBhdXRvbWFrZSAxLjEyIHNlZW1zIHRvIHJlcXVpcmUgdGhpcywgYnV0IGF1dG9tYWtlIDEuMTEgZG9lc24ndCByZWNvZ25pemUgaXQKLSttNF9wYXR0ZXJuX2FsbG93KFtBTV9QUk9HX0FSXSkKLStBTV9QUk9HX0FSCi0rCi0gQUNfUFJPR19DQwotIGdsX0VBUkxZCi0gbGdsX0VBUkxZCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuMl8yLjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4yXzIuMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiY2JmZGQ4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4yXzIuMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotU1VNTUFSWSA9ICJJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZSBzdXBwb3J0IGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJJbXBsZW1lbnRhdGlvbiBvZiB0aGUgU3RyaW5ncHJlcCwgUHVueWNvZGUgYW5kIElETkEgc3BlY2lmaWNhdGlvbnMgZGVmaW5lZCBieSB0aGUgSUVURiBJbnRlcm5hdGlvbmFsaXplZCBEb21haW4gTmFtZXMgKElETikgd29ya2luZyBncm91cC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGliaWRuLyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiKEdQTHYyKyB8IExHUEx2MykgJiBHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZDgzNGVhN2Q0ODA0MzhhZGEwNGU1ZDg0NjE1MjM5NSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUnYzO21kNT1lNmE2MDBmZDVlMWQ5Y2JkZTJkOTgzNjgwMjMzYWQwMiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9pZG4yLmM7ZW5kbGluZT0xNjttZDU9NDI2Yjc0ZDZkZWI2MjBhYjZkMzljOGE2ZWZkNGMxM2EgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL2lkbjIuaC5pbjtlbmRsaW5lPTI3O21kNT1jMmNkMjhkM2Y4NzI2MGYxNTdmMDIyZWFiYjgzNzE0ZiIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L2xpYmlkbi8ke0JQTn0tJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gImI4NDZkNGQyMGUyMmI5OWQ2ZjczODdiYjY2ZTAwYTFmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZjNzM0NzMyYjUwNmQ4Nzg3NTNlYzY2MDY5ODJiZjdiOTM2ZTg2OGMyNWMzMGRkYjBkODNmN2Q3MDU2MzgxZmUiCi0KLURFUEVORFMgPSAidmlydHVhbC9saWJpY29udiBsaWJ1bmlzdHJpbmciCi0KLWluaGVyaXQgcGtnY29uZmlnIGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gZ3RrLWRvYyBsaWJfcGFja2FnZQotCi1FWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1ycGF0aCBcCi0gICAgICAgICAgICAgICAgIC0td2l0aC1saWJ1bmlzdHJpbmctcHJlZml4PSR7U1RBR0lOR19FWEVDUFJFRklYRElSfSBcCi0gICAgICAgICAgICAgICAgICIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jc2VkIC1pIC1lICdzfC1MJHtTVEFHSU5HX0xJQkRJUn18fCcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbGliaWRuMi5wYwotfQotCi1MSUNFTlNFXyR7UE59ID0gIihHUEx2MisgfCBMR1BMdjMpIgotTElDRU5TRV8ke1BOfS1iaW4gPSAiR1BMdjMrIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuMl8yLjMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG4yXzIuMy4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjdhZGY5MjQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJpZG4vbGliaWRuMl8yLjMuMC5iYgpAQCAtMCwwICsxLDMyIEBACitTVU1NQVJZID0gIkludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lIHN1cHBvcnQgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIkltcGxlbWVudGF0aW9uIG9mIHRoZSBTdHJpbmdwcmVwLCBQdW55Y29kZSBhbmQgSUROQSBzcGVjaWZpY2F0aW9ucyBkZWZpbmVkIGJ5IHRoZSBJRVRGIEludGVybmF0aW9uYWxpemVkIERvbWFpbiBOYW1lcyAoSUROKSB3b3JraW5nIGdyb3VwLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9saWJpZG4vIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICIoR1BMdjIrIHwgTEdQTHYzKSAmIEdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJkODM0ZWE3ZDQ4MDQzOGFkYTA0ZTVkODQ2MTUyMzk1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEVTU0VSdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkd2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2lkbjIuYztlbmRsaW5lPTE2O21kNT00MjZiNzRkNmRlYjYyMGFiNmQzOWM4YTZlZmQ0YzEzYSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvaWRuMi5oLmluO2VuZGxpbmU9Mjc7bWQ1PWMyY2QyOGQzZjg3MjYwZjE1N2YwMjJlYWJiODM3MTRmIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGliaWRuLyR7QlBOfS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMDFjNTA4NDk5NTI5NWU1MTlmOTU5NzhhZTk3ODVlZTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTFjYjFkYjNkMmUyNDlhNmEzZWI2ZjA5NDY3NzdjMmU4OTJkNWM1ZGM3YmQ5MWM3NDM5NGZjM2EwMWNhYjhiNSIKKworREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmljb252IGxpYnVuaXN0cmluZyIKKworaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBndGstZG9jIGxpYl9wYWNrYWdlCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXJwYXRoIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLWxpYnVuaXN0cmluZy1wcmVmaXg9JHtTVEFHSU5HX0VYRUNQUkVGSVhESVJ9IFwKKyAgICAgICAgICAgICAgICAgIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIE5lZWQgdG8gcmVtb3ZlIGFueSBkdXBsaWNhdGUgd2hpdGVzcGFjZSB0b28gZm9yIHJlcHJvZHVjaWJpbGl0eQorCXNlZCAtaSAtZSAnc3wtTCR7U1RBR0lOR19MSUJESVJ9fHwnIC1lICdzLyAgKi8gL2cnICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL2xpYmlkbjIucGMKK30KKworTElDRU5TRV8ke1BOfSA9ICIoR1BMdjIrIHwgTEdQTHYzKSIKK0xJQ0VOU0VfJHtQTn0tYmluID0gIkdQTHYzKyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8xLjM1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGliaWRuL2xpYmlkbl8xLjM1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkNWNlNWI0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYmlkbi9saWJpZG5fMS4zNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLVNVTU1BUlkgPSAiSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWUgc3VwcG9ydCBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiSW1wbGVtZW50YXRpb24gb2YgdGhlIFN0cmluZ3ByZXAsIFB1bnljb2RlIGFuZCBJRE5BIHNwZWNpZmljYXRpb25zIGRlZmluZWQgYnkgdGhlIElFVEYgSW50ZXJuYXRpb25hbGl6ZWQgRG9tYWluIE5hbWVzIChJRE4pIHdvcmtpbmcgZ3JvdXAuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYmlkbi8iCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIihMR1BMdjIuMSsgfCBMR1BMdjMpICYgR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZGY0YmU0Nzk0MGE5MWVlNjk1NTZmNWY3MWVlZDRhZWMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlOR3YyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi9pZG5hLmg7ZW5kbGluZT0yMTttZDU9MzdjZmZhZDI0ODA3ZjQ0NmEyNGRlM2U3MzcxZjIwYjkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2lkbi5jO2VuZGxpbmU9MjA7bWQ1PTA5ZTk3MDM0YTg4NzdiMzQ1MWNiNjUwNjVmYzJjMDZlIgotREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYmljb252IGF1dG9jb25mLWFyY2hpdmUiCi0KLWluaGVyaXQgcGtnY29uZmlnIGF1dG90b29scyBnZXR0ZXh0IHRleGluZm8gZ3RrLWRvYwotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGliaWRuLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbGliaWRuX2ZpeF9mb3JfYXV0b21ha2UtMS4xMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9hdm9pZF9BTV9QUk9HX01LRElSX1Bfd2FybmluZ19lcnJvcl93aXRoX2F1dG9tYWtlXzEuMTIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1pZG4tZm9ybWF0LXNlY3VyaXR5LXdhcm5pbmdzLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYmVmNjM0MTQxZmUzOTMyNmNiMzU0Yjc1ZTg5MWZlYWQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZjExYWYxMDA1YjQ2YjdiMTVkMDU3ZDdmMTA3MzE1YTFhZDQ2OTM1YzdmY2RmMjQzYzE2ZTQ2ZWMxNGYwZmUxZSIKLQotIyBjb21tYW5kIHRvb2wgaXMgdW5kZXIgR1BMdjMrLCB3aGlsZSBsaWJpZG4gaXRzZWxmIGlzIHVuZGVyIExHUEx2Mi4xKyBvciBMR1BMdjMKLSMgc28gcGFja2FnZSBjb21tYW5kIGludG8gYSBzZXBhcmF0ZSBwYWNrYWdlCi1QQUNLQUdFUyA9KyAiaWRuIgotRklMRVNfaWRuID0gIiR7YmluZGlyfS8qIgotCi1MSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyB8IExHUEx2MyIKLUxJQ0VOU0VfaWRuID0gIkdQTHYzKyIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1jc2hhcnAiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXJtIC1yZiAke0R9JHtkYXRhZGlyfS9lbWFjcwotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm1ubC9saWJtbmxfMS4wLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJtbmwvbGlibW5sXzEuMC40LmJiCmluZGV4IDIzMjYyZTguLmI1NWJiMzEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYm1ubC9saWJtbmxfMS4wLjQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlibW5sL2xpYm1ubF8xLjAuNC5iYgpAQCAtMSwxMiArMSwxMiBAQAogU1VNTUFSWSA9ICJNaW5pbWFsaXN0aWMgdXNlci1zcGFjZSBOZXRsaW5rIHV0aWxpdHkgbGlicmFyeSIKIERFU0NSSVBUSU9OID0gIk1pbmltYWxpc3RpYyB1c2VyLXNwYWNlIGxpYnJhcnkgb3JpZW50ZWQgdG8gTmV0bGluayBkZXZlbG9wZXJzLCBwcm92aWRpbmcgXAogICAgIGZ1bmN0aW9ucyBmb3IgY29tbW9uIHRhc2tzIGluIHBhcnNpbmcsIHZhbGlkYXRpbmcsIGFuZCBjb25zdHJ1Y3RpbmcgYm90aCB0aGUgTmV0bGluayBoZWFkZXIgYW5kIFRMVnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2xpYm1ubC9pbmRleC5odG1sIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cubmV0ZmlsdGVyLm9yZy9wcm9qZWN0cy9saWJtbmwvaW5kZXguaHRtbCIKIFNFQ1RJT04gPSAibGlicyIKIExJQ0VOU0UgPSAiTEdQTHYyLjErIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2xpYm1ubC9maWxlcy9saWJtbmwtJHtQVn0udGFyLmJ6MjtuYW1lPXRhciIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9uZXRmaWx0ZXIub3JnL3Byb2plY3RzL2xpYm1ubC9maWxlcy9saWJtbmwtJHtQVn0udGFyLmJ6MjtuYW1lPXRhciIKIFNSQ19VUklbdGFyLm1kNXN1bV0gPSAiYmU5YjRiNTMyOGM2ZGExYmRhNTY1YWM1ZGZmYWRiMmQiCiBTUkNfVVJJW3Rhci5zaGEyNTZzdW1dID0gIjE3MWY4OTY5OWYyODZhNTg1NGI3MmI5MWQwNmU4ZjhlMzY4MzA2NGM1OTAxZmIwOWQ5NTRhOWFiNmY1NTFmODEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lXzEuNS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlicGlwZWxpbmUvbGlicGlwZWxpbmVfMS41LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1ODAyMDcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlicGlwZWxpbmUvbGlicGlwZWxpbmVfMS41LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNSArMCwwIEBACi1TVU1NQVJZID0gInBpcGVsaW5lIG1hbmlwdWxhdGlvbiBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiVGhpcyBpcyBhIEMgbGlicmFyeSBmb3Igc2V0dGluZyB1cCBhbmQgcnVubmluZyBwaXBlbGluZXMgb2YgcHJvY2Vzc2VzLCBcCi13aXRob3V0IG5lZWRpbmcgdG8gaW52b2x2ZSBzaGVsbCBjb21tYW5kLWxpbmUgcGFyc2luZyB3aGljaCBpcyBvZnRlbiBcCi1lcnJvci1wcm9uZSBhbmQgaW5zZWN1cmUuIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpYnBpcGVsaW5lLm5vbmdudS5vcmcvIgotTElDRU5TRSA9ICJHUEx2MyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IgotCi1TUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vbGlicGlwZWxpbmUvbGlicGlwZWxpbmUtJHtQVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjRjOGZlNmNkODU0MjJiYWFmZDZlMDYwZjg5NmM2MWJjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2MzM3MDZiN2Q4NDVmMDhiNDJiYzY2ZGRiZTg0NWQ1N2U3MjZiZjg5Mjk4ZTJjZWUyOWYwOTU3N2UyZjkwMmYiCi0KLWluaGVyaXQgcGtnY29uZmlnIGF1dG90b29scwotCi1hY3BhdGhzID0gIi1JICR7U30vZ2wvbTQgLUkgJHtTfS9tNCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lXzEuNS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlicGlwZWxpbmUvbGlicGlwZWxpbmVfMS41LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTE4MjQ2MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnBpcGVsaW5lL2xpYnBpcGVsaW5lXzEuNS4yLmJiCkBAIC0wLDAgKzEsMTUgQEAKK1NVTU1BUlkgPSAicGlwZWxpbmUgbWFuaXB1bGF0aW9uIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJUaGlzIGlzIGEgQyBsaWJyYXJ5IGZvciBzZXR0aW5nIHVwIGFuZCBydW5uaW5nIHBpcGVsaW5lcyBvZiBwcm9jZXNzZXMsIFwKK3dpdGhvdXQgbmVlZGluZyB0byBpbnZvbHZlIHNoZWxsIGNvbW1hbmQtbGluZSBwYXJzaW5nIHdoaWNoIGlzIG9mdGVuIFwKK2Vycm9yLXByb25lIGFuZCBpbnNlY3VyZS4iCitIT01FUEFHRSA9ICJodHRwOi8vbGlicGlwZWxpbmUubm9uZ251Lm9yZy8iCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9saWJwaXBlbGluZS9saWJwaXBlbGluZS0ke1BWfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiMTY5ZGU0Y2MxZjZmN2Y3ZDQzMGE1YmVkODU4YjJmZDMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZmQ1OWM2NDljMWFlOWQ2NzYwNGQxNjQ0ZjExNmFkNGQyOTdlYWE2NmY4MzhlM2RmYWI5NmI0MWU4NWIwNTlmYiIKKworaW5oZXJpdCBwa2djb25maWcgYXV0b3Rvb2xzCisKK2FjcGF0aHMgPSAiLUkgJHtTfS9nbC9tNCAtSSAke1N9L200IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNy4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjcuMTAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjY1YTI3YwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjcuMTAuYmIKQEAgLTAsMCArMSwzMSBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBzb2x2aW5nIHBhY2thZ2VzIGFuZCByZWFkaW5nIHJlcG9zaXRvcmllcyIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdi9pc3N1ZXMiCitTRUNUSU9OID0gImRldmVsIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLkJTRDttZDU9NjIyNzJiZDExYzk3Mzk2ZDRhYWYxYzQxYmMxMWY3ZDgiCisKK0RFUEVORFMgPSAiZXhwYXQgemxpYiIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYuZ2l0IFwKKyIKKworU1JDUkVWID0gIjYwNWRkMjY0NWVmODk5ZTJiN2M5NTcwOTQ3NmZiNTFlMjhkN2UzNzgiCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKSIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VfQ0xBU1NFUycsJ3BhY2thZ2VfcnBtJywncnBtJywnJyxkKX0iCitQQUNLQUdFQ09ORklHW3JwbV0gPSAiLURFTkFCTEVfUlBNTUQ9T04gLURFTkFCTEVfUlBNREI9T04sLHJwbSIKKworRVhUUkFfT0VDTUFLRSA9ICItRE1VTFRJX1NFTUFOVElDUz1PTiAtREVOQUJMRV9DT01QTEVYX0RFUFM9T04iCisKK1BBQ0tBR0VTID0rICIke1BOfS10b29scyAke1BOfWV4dCIKKworRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCitGSUxFU18ke1BOfWV4dCA9ICIke2xpYmRpcn0vJHtQTn1leHQuc28uKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNy44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlic29sdi9saWJzb2x2XzAuNy44LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4ZmU5YWUwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnNvbHYvbGlic29sdl8wLjcuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiTGlicmFyeSBmb3Igc29sdmluZyBwYWNrYWdlcyBhbmQgcmVhZGluZyByZXBvc2l0b3JpZXMiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vb3BlblNVU0UvbGlic29sdiIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL29wZW5TVVNFL2xpYnNvbHYvaXNzdWVzIgotU0VDVElPTiA9ICJkZXZlbCIKLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS5CU0Q7bWQ1PTYyMjcyYmQxMWM5NzM5NmQ0YWFmMWM0MWJjMTFmN2Q4IgotCi1ERVBFTkRTID0gImV4cGF0IHpsaWIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9vcGVuU1VTRS9saWJzb2x2LmdpdCBcCi0iCi0KLVNSQ1JFViA9ICI1MjA1YzU2ODNjZTJjOGI4Mjg4NTM0MDU5YmE0MGEzMThhMmExNjFkIgotCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInJwbSIKLVBBQ0tBR0VDT05GSUdbcnBtXSA9ICItREVOQUJMRV9SUE1NRD1PTiAtREVOQUJMRV9SUE1EQj1PTiwscnBtIgotCi1FWFRSQV9PRUNNQUtFID0gIi1ETVVMVElfU0VNQU5USUNTPU9OIC1ERU5BQkxFX0NPTVBMRVhfREVQUz1PTiIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRvb2xzICR7UE59ZXh0IgotCi1GSUxFU18ke1BOfS10b29scyA9ICIke2JpbmRpcn0vKiIKLUZJTEVTXyR7UE59ZXh0ID0gIiR7bGliZGlyfS8ke1BOfWV4dC5zby4qIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGMvbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFjZDlmOS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwYy9tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzAgKzAsMCBAQAotQ29uc2lkZXIgbXVzbCBwcm92aWRlZCBidWlsdC1pbiBkZWZpbmVzCi0KLUhlbHBzIGNvbXBpbGUgbGlidGlycGMgd2l0aCBtdXNsCi1iaXRzL2VuZGlhbi5oIGlzIG5vdCBzdXBwb3NlZCB0byBiZSBpbmNsdWRlZCBkaXJlY3RseQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLS0tLSBhL3RpcnBjL3JwYy90eXBlcy5oCi0rKysgYi90aXJwYy9ycGMvdHlwZXMuaAotQEAgLTY2LDcgKzY2LDcgQEAgdHlwZWRlZiAgIGludDMyX3QgcnBjX2lubGluZV90OwotICNkZWZpbmUgbWVtX2ZyZWUocHRyLCBic2l6ZSkJZnJlZShwdHIpCi0gCi0gCi0tI2lmIGRlZmluZWQgX19BUFBMRV9DQ19fIHx8IGRlZmluZWQgX19GcmVlQlNEX18KLSsjaWYgZGVmaW5lZCBfX0FQUExFX0NDX18gfHwgZGVmaW5lZCBfX0ZyZWVCU0RfXyB8fCAhZGVmaW5lZChfX0dMSUJDX18pCi0gIyBkZWZpbmUgX191X2NoYXJfZGVmaW5lZAotICMgZGVmaW5lIF9fZGFkZHJfdF9kZWZpbmVkCi0gI2VuZGlmCi0tLS0gYS9zcmMveGRyX2Zsb2F0LmMKLSsrKyBiL3NyYy94ZHJfZmxvYXQuYwotQEAgLTgzLDcgKzgzLDcgQEAgc3RhdGljIHN0cnVjdCBzZ2xfbGltaXRzIHsKLSB9OwotICNlbHNlCi0gCi0tI2luY2x1ZGUgPGJpdHMvZW5kaWFuLmg+Ci0rI2luY2x1ZGUgPGVuZGlhbi5oPgotICNkZWZpbmUgSUVFRUZQCi0gCi0gI2VuZGlmIC8qIHZheCAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlidGlycGMvbGlidGlycGNfMS4xLjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjEuNC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjMzY2VjZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjEuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQyICswLDAgQEAKLVNVTU1BUlkgPSAiVHJhbnNwb3J0LUluZGVwZW5kZW50IFJQQyBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAiTGlidGlycGMgaXMgYSBwb3J0IG9mIFN1bnMgVHJhbnNwb3J0LUluZGVwZW5kZW50IFJQQyBsaWJyYXJ5IHRvIExpbnV4IgotU0VDVElPTiA9ICJsaWJzL25ldHdvcmsiCi1IT01FUEFHRSA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYnRpcnBjLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC90cmFja2VyLz9ncm91cF9pZD0xODMwNzUmYXRpZD05MDM3ODQiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWY4MzVjY2U4ODUyNDgxZTRiMmJiYmRkMjNiNWU0N2YzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9uZXRuYW1lLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yNzttZDU9ZjhhOGNkMmNiMjVhYzVhYTE2NzY3MzY0ZmIwZTNjMjQiCi0KLVBST1ZJREVTID0gInZpcnR1YWwvbGlicnBjIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUH0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vc291cmNlZm9yZ2UubmV0L3Byb2plY3RzL2xpYnRpcnBjL2ZpbGVzL2xpYnRpcnBjLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIig/UDxwdmVyPlxkKyhcLlxkKykrKS8iCi1TUkNfVVJJW21kNXN1bV0gPSAiZjVkMmE2MjNlOWRmYmQ4MThkMmYzZjNhNGE4NzhlM2EiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmNhNTI5ZjAyMjkyZTEwYzE1ODU2MjI5NWExZmZkOTVkMmNlOGFmOTc4MjBlMzUzNGZlMWIwZTNhZWM3NTYxZCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZ3NzYXBpIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICAgICAgY2hvd24gcm9vdDpyb290ICR7RH0ke3N5c2NvbmZkaXJ9L25ldGNvbmZpZwotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L3JwYwotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2luY2x1ZGVkaXJ9L3JwY3N2YwotICAgICAgICBmb3IgbGlua19oZWFkZXIgaW4gJHtEfSR7aW5jbHVkZWRpcn0vdGlycGMvcnBjLyo7IGRvCi0gICAgICAgICAgICBpZiBbIC1mICRsaW5rX2hlYWRlciAtYSAhIC1lICR7RH0vJHtpbmNsdWRlZGlyfS9ycGMvJChiYXNlbmFtZSAkbGlua19oZWFkZXIpIF07IHRoZW4KLSAgICAgICAgICAgICAgICBsbiAtc2YgLi4vdGlycGMvcnBjLyQoYmFzZW5hbWUgJGxpbmtfaGVhZGVyKSAke0R9JHtpbmNsdWRlZGlyfS9ycGMvJChiYXNlbmFtZSAkbGlua19oZWFkZXIpCi0gICAgICAgICAgICBmaQotICAgICAgICBkb25lCi0gICAgICAgIGZvciBsaW5rX2hlYWRlciBpbiAke0R9JHtpbmNsdWRlZGlyfS90aXJwYy9ycGNzdmMvKjsgZG8KLSAgICAgICAgICAgIGlmIFsgLWYgJGxpbmtfaGVhZGVyIC1hICEgLWUgJHtEfS8ke2luY2x1ZGVkaXJ9L3JwY3N2Yy8kKGJhc2VuYW1lICRsaW5rX2hlYWRlcikgXTsgdGhlbgotICAgICAgICAgICAgICAgIGxuIC1zZiAuLi90aXJwYy9ycGMvJChiYXNlbmFtZSAkbGlua19oZWFkZXIpICR7RH0ke2luY2x1ZGVkaXJ9L3JwY3N2Yy8kKGJhc2VuYW1lICRsaW5rX2hlYWRlcikKLSAgICAgICAgICAgIGZpCi0gICAgICAgIGRvbmUKLSAgICAgICAgbG4gLXNmICB0aXJwYy9uZXRjb25maWcuaCAke0R9LyR7aW5jbHVkZWRpcn0vbmV0Y29uZmlnLmgKLQotfQotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjIuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpYnRpcnBjL2xpYnRpcnBjXzEuMi42LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjYxMDBkMTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWJ0aXJwYy9saWJ0aXJwY18xLjIuNi5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIlRyYW5zcG9ydC1JbmRlcGVuZGVudCBSUEMgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIkxpYnRpcnBjIGlzIGEgcG9ydCBvZiBTdW5zIFRyYW5zcG9ydC1JbmRlcGVuZGVudCBSUEMgbGlicmFyeSB0byBMaW51eCIKK1NFQ1RJT04gPSAibGlicy9uZXR3b3JrIgorSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJ0aXJwYy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvdHJhY2tlci8/Z3JvdXBfaWQ9MTgzMDc1JmF0aWQ9OTAzNzg0IgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1mODM1Y2NlODg1MjQ4MWU0YjJiYmJkZDIzYjVlNDdmMyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvbmV0bmFtZS5jO2JlZ2lubGluZT0xO2VuZGxpbmU9Mjc7bWQ1PWY4YThjZDJjYjI1YWM1YWExNjc2NzM2NGZiMGUzYzI0IgorCitQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYnJwYyIKKworU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vJHtCUE59LyR7QlB9LnRhci5iejIiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlidGlycGMvZmlsZXMvbGlidGlycGMvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiKD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMjVmOWNjMThiZmFkNTBmN2M0NDZjNzdmNGFlMDBiYiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0Mjc4ZTlhNTE4MWQ1YWY5Y2Q3ODg1MzIyZmRlY2ViYzQ0NGY5YTNkYTg3YzUyNmU3ZDQ3ZjdhMTJhMzdkMWNjIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1nc3NhcGkiCisKK0NGTEFHUyArPSAiLWZjb21tb24iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCWNob3duIHJvb3Q6cm9vdCAke0R9JHtzeXNjb25mZGlyfS9uZXRjb25maWcKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjU0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbGlnaHR0cGQvbGlnaHR0cGRfMS40LjU0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyMGNlNjk4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC41NC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDgzICswLDAgQEAKLVNVTU1BUlkgPSAiTGlnaHR3ZWlnaHQgaGlnaC1wZXJmb3JtYW5jZSB3ZWIgc2VydmVyIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWdodHRwZC5uZXQvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vcmVkbWluZS5saWdodHRwZC5uZXQvcHJvamVjdHMvbGlnaHR0cGQvaXNzdWVzIgotCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWU0ZGFjNWM2YWIxNjlhYTIxMmZlYjUwMjg4NTNhNTc5IgotCi1TRUNUSU9OID0gIm5ldCIKLVJERVBFTkRTXyR7UE59ID0gImxpZ2h0dHBkLW1vZHVsZS1kaXJsaXN0aW5nIFwKLSAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1pbmRleGZpbGUgXAotICAgICAgICAgICAgICAgICAgbGlnaHR0cGQtbW9kdWxlLXN0YXRpY2ZpbGUiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJsaWdodHRwZC1tb2R1bGUtYWNjZXNzIFwKLSAgICAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1hY2Nlc3Nsb2ciCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLmxpZ2h0dHBkLm5ldC9saWdodHRwZC9yZWxlYXNlcy0xLjQueC9saWdodHRwZC0ke1BWfS50YXIueHogXAotICAgICAgICBmaWxlOi8vaW5kZXguaHRtbC5saWdodHRwZCBcCi0gICAgICAgIGZpbGU6Ly9saWdodHRwZC5jb25mIFwKLSAgICAgICAgZmlsZTovL2xpZ2h0dHBkIFwKLSAgICAgICAgZmlsZTovLzAwMDEtVXNlLXBrZy1jb25maWctZm9yLXBjcmUtZGVwZW5kZW5jeS1pbnN0ZWFkLW9mLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjdhYmM3NzYyNDNjODExZTk4NzJmNzNhYjM4YjdmOGI1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNmMTRjY2UyMjU0YTk2ZDhmY2I2ZDMxODFlMWEzYzI5YThmODMyNTMxYzNlODZmZjZmMjUyNGVjZGE5YTg3MjEiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJvcGVuc3NsIHBjcmUgemxpYiBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnaXB2NicsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4YXR0cicsICdhdHRyJywgJycsIGQpfSBcCi0iCi0KLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiIKLVBBQ0tBR0VDT05GSUdbbW1hcF0gPSAiLS1lbmFibGUtbW1hcCwtLWRpc2FibGUtbW1hcCIKLVBBQ0tBR0VDT05GSUdbbGliZXZdID0gIi0td2l0aC1saWJldiwtLXdpdGhvdXQtbGliZXYsbGliZXYiCi1QQUNLQUdFQ09ORklHW215c3FsXSA9ICItLXdpdGgtbXlzcWwsLS13aXRob3V0LW15c3FsLG1hcmlhZGIiCi1QQUNLQUdFQ09ORklHW2xkYXBdID0gIi0td2l0aC1sZGFwLC0td2l0aG91dC1sZGFwLG9wZW5sZGFwIgotUEFDS0FHRUNPTkZJR1thdHRyXSA9ICItLXdpdGgtYXR0ciwtLXdpdGhvdXQtYXR0cixhdHRyIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS13aXRoLXZhbGdyaW5kLC0td2l0aG91dC12YWxncmluZCx2YWxncmluZCIKLVBBQ0tBR0VDT05GSUdbb3BlbnNzbF0gPSAiLS13aXRoLW9wZW5zc2wsLS13aXRob3V0LW9wZW5zc2wsb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdba3JiNV0gPSAiLS13aXRoLWtyYjUsLS13aXRob3V0LWtyYjUsa3JiNSIKLVBBQ0tBR0VDT05GSUdbcGNyZV0gPSAiLS13aXRoLXBjcmUsLS13aXRob3V0LXBjcmUsbGlicGNyZSIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWIsLS13aXRob3V0LXpsaWIsemxpYiIKLVBBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0td2l0aC1iemlwMiwtLXdpdGhvdXQtYnppcDIsYnppcDIiCi1QQUNLQUdFQ09ORklHW3dlYmRhdi1wcm9wc10gPSAiLS13aXRoLXdlYmRhdi1wcm9wcywtLXdpdGhvdXQtd2ViZGF2LXByb3BzLGxpYnhtbDIgc3FsaXRlMyIKLVBBQ0tBR0VDT05GSUdbd2ViZGF2LWxvY2tzXSA9ICItLXdpdGgtd2ViZGF2LWxvY2tzLC0td2l0aG91dC13ZWJkYXYtbG9ja3MsdXRpbC1saW51eCIKLVBBQ0tBR0VDT05GSUdbZ2RibV0gPSAiLS13aXRoLWdkYm0sLS13aXRob3V0LWdkYm0sZ2RibSIKLVBBQ0tBR0VDT05GSUdbbWVtY2FjaGVdID0gIi0td2l0aC1tZW1jYWNoZWQsLS13aXRob3V0LW1lbWNhY2hlZCxsaWJtZW1jYWNoZWQiCi1QQUNLQUdFQ09ORklHW2x1YV0gPSAiLS13aXRoLWx1YSwtLXdpdGhvdXQtbHVhLGx1YSIKLQotRVhUUkFfT0VDT05GICs9ICItLWVuYWJsZS1sZnMgLS13aXRob3V0LWZhbSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwZGF0ZS1yYy5kIGdldHRleHQgc3lzdGVtZAotCi1JTklUU0NSSVBUX05BTUUgPSAibGlnaHR0cGQiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJkZWZhdWx0cyA3MCIKLQotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gImxpZ2h0dHBkLnNlcnZpY2UiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kICR7RH0ke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkICR7RH0ke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkLmQgJHtEfS93d3cvcGFnZXMvZGF2Ci0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vbGlnaHR0cGQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbGlnaHR0cGQuY29uZiAke0R9JHtzeXNjb25mZGlyfS9saWdodHRwZAotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2luZGV4Lmh0bWwubGlnaHR0cGQgJHtEfS93d3cvcGFnZXMvaW5kZXguaHRtbAotCi0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gMDY0NCAke1N9L2RvYy9zeXN0ZW1kL2xpZ2h0dHBkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlzZWQgLWkgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotCQktZSAncyxAU1lTQ09ORkRJUkAsJHtzeXNjb25mZGlyfSxnJyBcCi0JCS1lICdzLEBCQVNFX0JJTkRJUkAsJHtiYXNlX2JpbmRpcn0sZycgXAotCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9saWdodHRwZC5zZXJ2aWNlCi0JI0ZvciBGSFMgY29tcGxpYW5jZSwgY3JlYXRlIHN5bWJvbGljIGxpbmtzIHRvIC92YXIvbG9nIGFuZCAvdmFyL3RtcCBmb3IgbG9ncyBhbmQgdGVtcG9yYXJ5IGRhdGEKLQlsbiAtc2YgJHtsb2NhbHN0YXRlZGlyfS9sb2cgJHtEfS93d3cvbG9ncwotCWxuIC1zZiAke2xvY2Fsc3RhdGVkaXJ9L3RtcCAke0R9L3d3dy92YXIKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0gL3d3dyIKLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vbGlnaHR0cGQvbGlnaHR0cGQuY29uZiIKLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmxpZ2h0dHBkLW1vZHVsZS0uKiIKLQotcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgewotICAgIGxpZ2h0dHBkX2xpYmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0nKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxpZ2h0dHBkX2xpYmRpciwgcidebW9kXyguKilcLnNvJCcsICdsaWdodHRwZC1tb2R1bGUtJXMnLCAnTGlnaHR0cGQgbW9kdWxlIGZvciAlcycsIGV4dHJhX2RlcGVuZHM9JycpCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNTUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9saWdodHRwZC9saWdodHRwZF8xLjQuNTUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EyNTVjZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xpZ2h0dHBkL2xpZ2h0dHBkXzEuNC41NS5iYgpAQCAtMCwwICsxLDgzIEBACitTVU1NQVJZID0gIkxpZ2h0d2VpZ2h0IGhpZ2gtcGVyZm9ybWFuY2Ugd2ViIHNlcnZlciIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cubGlnaHR0cGQubmV0LyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL3JlZG1pbmUubGlnaHR0cGQubmV0L3Byb2plY3RzL2xpZ2h0dHBkL2lzc3VlcyIKKworTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lNGRhYzVjNmFiMTY5YWEyMTJmZWI1MDI4ODUzYTU3OSIKKworU0VDVElPTiA9ICJuZXQiCitSREVQRU5EU18ke1BOfSA9ICJsaWdodHRwZC1tb2R1bGUtZGlybGlzdGluZyBcCisgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtaW5kZXhmaWxlIFwKKyAgICAgICAgICAgICAgICAgIGxpZ2h0dHBkLW1vZHVsZS1zdGF0aWNmaWxlIgorUlJFQ09NTUVORFNfJHtQTn0gPSAibGlnaHR0cGQtbW9kdWxlLWFjY2VzcyBcCisgICAgICAgICAgICAgICAgICAgICBsaWdodHRwZC1tb2R1bGUtYWNjZXNzbG9nIgorCitTUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5saWdodHRwZC5uZXQvbGlnaHR0cGQvcmVsZWFzZXMtMS40LngvbGlnaHR0cGQtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgZmlsZTovL2luZGV4Lmh0bWwubGlnaHR0cGQgXAorICAgICAgICBmaWxlOi8vbGlnaHR0cGQuY29uZiBcCisgICAgICAgIGZpbGU6Ly9saWdodHRwZCBcCisgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLWZvci1wY3JlLWRlcGVuZGVuY3ktaW5zdGVhZC1vZi1jb25maWcucGF0Y2ggXAorICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiZTRiZGEyYzI4YmNiZGFjNmViOTQxNTI4ZjZlZGYwMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2YTBiNTBlOWM5ZDVjYzNkOWU0ODU5MjMxNWMyNWEyZDY0NTg1OGY4NjNlMWNjZDEyMDUwN2EzMGNlMjFlOTI3IgorCitQQUNLQUdFQ09ORklHID8/PSAib3BlbnNzbCBwY3JlIHpsaWIgXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneGF0dHInLCAnYXR0cicsICcnLCBkKX0gXAorIgorCitQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYiCitQQUNLQUdFQ09ORklHW21tYXBdID0gIi0tZW5hYmxlLW1tYXAsLS1kaXNhYmxlLW1tYXAiCitQQUNLQUdFQ09ORklHW2xpYmV2XSA9ICItLXdpdGgtbGliZXYsLS13aXRob3V0LWxpYmV2LGxpYmV2IgorUEFDS0FHRUNPTkZJR1tteXNxbF0gPSAiLS13aXRoLW15c3FsLC0td2l0aG91dC1teXNxbCxtYXJpYWRiIgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLXdpdGgtbGRhcCwtLXdpdGhvdXQtbGRhcCxvcGVubGRhcCIKK1BBQ0tBR0VDT05GSUdbYXR0cl0gPSAiLS13aXRoLWF0dHIsLS13aXRob3V0LWF0dHIsYXR0ciIKK1BBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0td2l0aC12YWxncmluZCwtLXdpdGhvdXQtdmFsZ3JpbmQsdmFsZ3JpbmQiCitQQUNLQUdFQ09ORklHW29wZW5zc2xdID0gIi0td2l0aC1vcGVuc3NsLC0td2l0aG91dC1vcGVuc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1rcmI1LC0td2l0aG91dC1rcmI1LGtyYjUiCitQQUNLQUdFQ09ORklHW3BjcmVdID0gIi0td2l0aC1wY3JlLC0td2l0aG91dC1wY3JlLGxpYnBjcmUiCitQQUNLQUdFQ09ORklHW3psaWJdID0gIi0td2l0aC16bGliLC0td2l0aG91dC16bGliLHpsaWIiCitQQUNLQUdFQ09ORklHW2J6aXAyXSA9ICItLXdpdGgtYnppcDIsLS13aXRob3V0LWJ6aXAyLGJ6aXAyIgorUEFDS0FHRUNPTkZJR1t3ZWJkYXYtcHJvcHNdID0gIi0td2l0aC13ZWJkYXYtcHJvcHMsLS13aXRob3V0LXdlYmRhdi1wcm9wcyxsaWJ4bWwyIHNxbGl0ZTMiCitQQUNLQUdFQ09ORklHW3dlYmRhdi1sb2Nrc10gPSAiLS13aXRoLXdlYmRhdi1sb2NrcywtLXdpdGhvdXQtd2ViZGF2LWxvY2tzLHV0aWwtbGludXgiCitQQUNLQUdFQ09ORklHW2dkYm1dID0gIi0td2l0aC1nZGJtLC0td2l0aG91dC1nZGJtLGdkYm0iCitQQUNLQUdFQ09ORklHW21lbWNhY2hlXSA9ICItLXdpdGgtbWVtY2FjaGVkLC0td2l0aG91dC1tZW1jYWNoZWQsbGlibWVtY2FjaGVkIgorUEFDS0FHRUNPTkZJR1tsdWFdID0gIi0td2l0aC1sdWEsLS13aXRob3V0LWx1YSxsdWEiCisKK0VYVFJBX09FQ09ORiArPSAiLS1lbmFibGUtbGZzIC0td2l0aG91dC1mYW0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB1cGRhdGUtcmMuZCBnZXR0ZXh0IHN5c3RlbWQKKworSU5JVFNDUklQVF9OQU1FID0gImxpZ2h0dHBkIgorSU5JVFNDUklQVF9QQVJBTVMgPSAiZGVmYXVsdHMgNzAiCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJsaWdodHRwZC5zZXJ2aWNlIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZCAke0R9JHtzeXNjb25mZGlyfS9saWdodHRwZCAke0R9JHtzeXNjb25mZGlyfS9saWdodHRwZC5kICR7RH0vd3d3L3BhZ2VzL2RhdgorCWluc3RhbGwgLW0gMDc1NSAke1dPUktESVJ9L2xpZ2h0dHBkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2xpZ2h0dHBkLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vbGlnaHR0cGQKKwlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9pbmRleC5odG1sLmxpZ2h0dHBkICR7RH0vd3d3L3BhZ2VzL2luZGV4Lmh0bWwKKworCWluc3RhbGwgLWQgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KKwlpbnN0YWxsIC1tIDA2NDQgJHtTfS9kb2Mvc3lzdGVtZC9saWdodHRwZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCisJc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKKwkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorCQktZSAncyxAQkFTRV9CSU5ESVJALCR7YmFzZV9iaW5kaXJ9LGcnIFwKKwkJJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0vbGlnaHR0cGQuc2VydmljZQorCSNGb3IgRkhTIGNvbXBsaWFuY2UsIGNyZWF0ZSBzeW1ib2xpYyBsaW5rcyB0byAvdmFyL2xvZyBhbmQgL3Zhci90bXAgZm9yIGxvZ3MgYW5kIHRlbXBvcmFyeSBkYXRhCisJbG4gLXNmICR7bG9jYWxzdGF0ZWRpcn0vbG9nICR7RH0vd3d3L2xvZ3MKKwlsbiAtc2YgJHtsb2NhbHN0YXRlZGlyfS90bXAgJHtEfS93d3cvdmFyCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke3N5c2NvbmZkaXJ9IC93d3ciCisKK0NPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L2xpZ2h0dHBkL2xpZ2h0dHBkLmNvbmYiCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5saWdodHRwZC1tb2R1bGUtLioiCisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKKyAgICBsaWdodHRwZF9saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9JykKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBsaWdodHRwZF9saWJkaXIsIHInXm1vZF8oLiopXC5zbyQnLCAnbGlnaHR0cGQtbW9kdWxlLSVzJywgJ0xpZ2h0dHBkIG1vZHVsZSBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKQorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi1yZWxlYXNlLzAwMDEtUmVtb3ZlLXRpbWVzdGFtcC1mcm9tLW1hbnBhZ2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiLXJlbGVhc2UvMDAwMS1SZW1vdmUtdGltZXN0YW1wLWZyb20tbWFucGFnZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjA5NWZkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi1yZWxlYXNlLzAwMDEtUmVtb3ZlLXRpbWVzdGFtcC1mcm9tLW1hbnBhZ2UucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBmYjBiNThiZTkzOGJhYjU1NzFhYzBiZGVjMzcyNWY2ZDg4YjA3ZTlmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CitEYXRlOiBTYXQsIDIyIEZlYiAyMDIwIDE5OjAxOjI4ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSB0aW1lc3RhbXAgZnJvbSBtYW5wYWdlCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtsc2ItZGlzY3Vzc0BsaXN0cy5saW51eC1mb3VuZGF0aW9uLm9yZ10KK1NpZ25lZC1vZmYtYnk6IEplcmVteSBBLiBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorLS0tCisgTWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCAwNGZkZWNkLi41YmU4MDgxIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMTcsNyArMTcsNyBAQCBtYW46IGxzYl9yZWxlYXNlLjEuZ3oKKyAKKyBsc2JfcmVsZWFzZS4xLmd6OiBsc2JfcmVsZWFzZQorIAlALi9oZWxwMm1hbiAtTiAtLWluY2x1ZGUgLi9sc2JfcmVsZWFzZS5leGFtcGxlcyAtLWFsdF92ZXJzaW9uX2tleT1wcm9ncmFtX3ZlcnNpb24gLi9sc2JfcmVsZWFzZSA+bHNiX3JlbGVhc2UuMQorLQlAZ3ppcCAtOWYgbHNiX3JlbGVhc2UuMQorKwlAZ3ppcCAtOWZuIGxzYl9yZWxlYXNlLjEKKyAKKyBpbnN0YWxsOiBhbGwKKyAJaW5zdGFsbCAtRCAtbSA2NDQgbHNiX3JlbGVhc2UuMS5neiAke21hbmRpcn0vbWFuMS9sc2JfcmVsZWFzZS4xLmd6CistLSAKKzIuMTMuMworCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiLXJlbGVhc2VfMS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHNiL2xzYi1yZWxlYXNlXzEuNC5iYgppbmRleCA1MmUzMDI2Li5hMDZjYmNmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sc2IvbHNiLXJlbGVhc2VfMS40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2xzYi9sc2ItcmVsZWFzZV8xLjQuYmIKQEAgLTEwLDYgKzEwLDcgQEAKIAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC9sc2IvbHNiX3JlbGVhc2UvMS40L2xzYi1yZWxlYXNlLTEuNC50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtbHNiX3JlbGVhc2UtdG8td29yay13aXRoLWJ1c3lib3gtaGVhZC1hbmQtZmluZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS10aW1lc3RhbXAtZnJvbS1tYW5wYWdlLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiMzA1MzdlZjVhMDFlMGNhOTRiN2I4ZWI2YTM2YmIxZTQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtQWRkLWNvbmZpZ3VyZS10aW1lLWNoZWNrLWZvci1nZXRkZW50cy1nZXRkZW50czY0LUFQSS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1BZGQtY29uZmlndXJlLXRpbWUtY2hlY2stZm9yLWdldGRlbnRzLWdldGRlbnRzNjQtQVBJLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmNlYWRiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1BZGQtY29uZmlndXJlLXRpbWUtY2hlY2stZm9yLWdldGRlbnRzLWdldGRlbnRzNjQtQVBJLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzIgKzAsMCBAQAotRnJvbSA0MDRkZmViNGZhZWYyMTNiMDQ1MGYxNzNiNjBjZDcwODBlZGVjMzQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjYgSnVsIDIwMTkgMTA6MzI6MjkgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIEFkZCBjb25maWd1cmUgdGltZSBjaGVjayBmb3IgZ2V0ZGVudHMvZ2V0ZGVudHM2NCBBUElzCi0KLWdsaWJjIDIuMzAgaGFzIGFkZGVkIHdyYXBwZXIgZm9yIGdldGRlbnRzNjQgdGhpcyB3aWxsIGhlbHAgaW4gZGV0ZWN0aW5nCi1yaWdodCBjb25kaXRpb24gdG8gdXNlIGZhbGxiYWNrCi0KLUNoZWNrIGZvciBnZXRkZW50cyBBUEkgYXMgd2VsbCB3aGlsZSBoZXJlCi0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwOi8vbGlzdHMubGludXguaXQvcGlwZXJtYWlsL2x0cC8yMDE5LUp1bHkvMDEyOTU0Lmh0bWxdCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMiArKwotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0ZGVudHMvZ2V0ZGVudHMuaCB8IDggKysrKysrLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC02NSw2ICs2NSw4IEBAIEFDX0NIRUNLX0ZVTkNTKFsgXAotICAgICBmYWxsb2NhdGUgXAotICAgICBmY2hvd25hdCBcCi0gICAgIGZzdGF0YXQgXAotKyAgICBnZXRkZW50cyBcCi0rICAgIGdldGRlbnRzNjQgXAotICAgICBrY21wIFwKLSAgICAgbWtkaXJhdCBcCi0gICAgIG1rbm9kYXQgXAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXRkZW50cy9nZXRkZW50cy5oCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldGRlbnRzL2dldGRlbnRzLmgKLUBAIC0yMyw3ICsyMyw3IEBACi0gI2luY2x1ZGUgPHN0ZGludC5oPgotICNpbmNsdWRlICJ0ZXN0LmgiCi0gI2luY2x1ZGUgImxhcGkvc3lzY2FsbHMuaCIKLS0KLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0gLyoKLSAgKiBTZWUgZnMvY29tcGF0LmMgc3RydWN0IGNvbXBhdF9saW51eF9kaXJlbnQKLSAgKi8KLUBAIC0zNCwxMiArMzQsMTcgQEAgc3RydWN0IGxpbnV4X2RpcmVudCB7Ci0gCWNoYXIgICAgICAgICAgICBkX25hbWVbXTsKLSB9OwotIAotKyNpZiBIQVZFX0dFVERFTlRTCi0rI2luY2x1ZGUgPHVuaXN0ZC5oPgotKyNlbHNlCi0gc3RhdGljIGlubGluZSBpbnQKLSBnZXRkZW50cyh1bnNpZ25lZCBpbnQgZmQsIHN0cnVjdCBsaW51eF9kaXJlbnQgKmRpcnAsIHVuc2lnbmVkIGludCBzaXplKQotIHsKLSAJcmV0dXJuIGx0cF9zeXNjYWxsKF9fTlJfZ2V0ZGVudHMsIGZkLCBkaXJwLCBzaXplKTsKLSB9Ci0gCi0rI2VuZGlmIC8qIEhBVkVfR0VUREVOVFMgKi8KLSsKLSBzdHJ1Y3QgbGludXhfZGlyZW50NjQgewotIAl1aW50NjRfdAlkX2lubzsKLSAJaW50NjRfdAkJZF9vZmY7Ci1AQCAtNDgsMTAgKzUzLDEzIEBAIHN0cnVjdCBsaW51eF9kaXJlbnQ2NCB7Ci0gCWNoYXIJCWRfbmFtZVtdOwotIH07Ci0gCi0rI2lmIEhBVkVfR0VUREVOVFM2NAotKyNpbmNsdWRlIDx1bmlzdGQuaD4KLSsjZWxzZQotIHN0YXRpYyBpbmxpbmUgaW50Ci0gZ2V0ZGVudHM2NCh1bnNpZ25lZCBpbnQgZmQsIHN0cnVjdCBsaW51eF9kaXJlbnQ2NCAqZGlycDY0LCB1bnNpZ25lZCBpbnQgc2l6ZSkKLSB7Ci0gCXJldHVybiBsdHBfc3lzY2FsbChfX05SX2dldGRlbnRzNjQsIGZkLCBkaXJwNjQsIHNpemUpOwotIH0KLS0KLSsjZW5kaWYgLyogSEFWRV9HRVRERU5UUzY0ICovCi0gI2VuZGlmIC8qIEdFVERFTlRTX0ggKi8KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1BZGQtbW9yZS1tdXNsLWV4Y2x1c2lvbnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtQWRkLW1vcmUtbXVzbC1leGNsdXNpb25zLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyYzJmZWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtQWRkLW1vcmUtbXVzbC1leGNsdXNpb25zLnBhdGNoCkBAIC0wLDAgKzEsNDQgQEAKK0Zyb20gNzg4YzQ3Y2VlZjdmMTE1YWI3ZjdhYTE3ZjkxOGU1ODc5NWY0ZTZjNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBEZWMgMjAxOSAxMzowNjowNSArMDEwMAorU3ViamVjdDogW1BBVENIXSBBZGQgbW9yZSBtdXNsIGV4Y2x1c2lvbnMKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK1sgcHZvcmVsOiByZWJhc2UgZm9yIDIwMjAwMTIwOiBlbmFibGUgZmFub3RpZnkxMywgZmFub3RpZnkxNSwgc2V0eGF0dHIwMyBdCitTaWduZWQtb2ZmLWJ5OiBQZXRyIFZvcmVsIDxwZXRyLnZvcmVsQGdtYWlsLmNvbT4KKy0tLQorIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvYWNjZXB0NC9NYWtlZmlsZSAgICAgIHwgNCArKysrCisgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy90aW1lcl9jcmVhdGUvTWFrZWZpbGUgfCA0ICsrKysKKyAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9hY2NlcHQ0L01ha2VmaWxlIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9hY2NlcHQ0L01ha2VmaWxlCitpbmRleCA1MDQwNDJlMTEuLjk0ZGIwNjI2NiAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvYWNjZXB0NC9NYWtlZmlsZQorKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9hY2NlcHQ0L01ha2VmaWxlCitAQCAtMjAsNCArMjAsOCBAQCB0b3Bfc3JjZGlyCQk/PSAuLi8uLi8uLi8uLgorIAorIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL3Rlc3RjYXNlcy5taworIAorK2lmZXEgKCQoTElCQyksbXVzbCkKKytGSUxURVJfT1VUX01BS0VfVEFSR0VUUyAgICAgICAgOj0gYWNjZXB0NF8wMQorK2VuZGlmCisrCisgaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY19sZWFmX3RhcmdldC5taworZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdGltZXJfY3JlYXRlL01ha2VmaWxlIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy90aW1lcl9jcmVhdGUvTWFrZWZpbGUKK2luZGV4IDhkZTI0NzA3NS4uZWIyNDBmNDMyIDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy90aW1lcl9jcmVhdGUvTWFrZWZpbGUKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdGltZXJfY3JlYXRlL01ha2VmaWxlCitAQCAtMjAsNiArMjAsMTAgQEAgdG9wX3NyY2RpcgkJPz0gLi4vLi4vLi4vLi4KKyAKKyBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay90ZXN0Y2FzZXMubWsKKyAKKytpZmVxICgkKExJQkMpLG11c2wpCisrRklMVEVSX09VVF9NQUtFX1RBUkdFVFMgICAgICAgIDo9IHRpbWVyX2NyZWF0ZTAxIHRpbWVyX2NyZWF0ZTAzCisrZW5kaWYKKysKKyBDUFBGTEFHUwkJKz0gLURfR05VX1NPVVJDRSAtSSQoYWJzX3NyY2RpcikvLi4vaW5jbHVkZQorIAorIExETElCUwkJCSs9IC1scHRocmVhZCAtbHJ0CistLQorMi4yNS4xCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtYnVpbGQtQWRkLW9wdGlvbi10by1zZWxlY3QtbGliYy1pbXBsZW1lbnRhdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoCmluZGV4IGI1YzI1YzUuLmIxYTk5OTUgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSBlYzI4Mjk4MGU2ZWVlOTZmNWI3NGFiYTQ2NDE0MWY4NjA0OTI2M2U2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSBiZTQ1M2QxYmU4MjZiODYyZDQ3ZTA4NjYzZmQ2OWVlYTlkZDYyNzMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgNyBKYW4gMjAxNiAxODoxOTowMyArMDAwMAotU3ViamVjdDogW1BBVENIXSBidWlsZDogQWRkIG9wdGlvbiB0byBzZWxlY3QgbGliYyBpbXBsZW1lbnRhdGlvbgorU3ViamVjdDogW1BBVENIIDEvNl0gYnVpbGQ6IEFkZCBvcHRpb24gdG8gc2VsZWN0IGxpYmMgaW1wbGVtZW50YXRpb24KIAogVGhlcmUgYXJlIG1vcmUgdGhhbiBnbGliYyBmb3IgQyBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIGF2YWlsYWJsZSBvbgogbGludXggbm93IGEgZGF5cywgdWNsaWJjIGNsb2FrZWQgbGlrZSBnbGliYyBidXQgbXVzbCBlLmcuIGlzIHZlcnkKQEAgLTExLDIwICsxMSwyOSBAQAogCiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAorcnRfdGdzaWdxdWV1ZWluZm8gZmFpbHMgd2l0aDoKK3J0X3Rnc2lncXVldWVpbmZvMDEuYzogSW4gZnVuY3Rpb24gJ3NpZ3VzcjFfaGFuZGxlcic6CitydF90Z3NpZ3F1ZXVlaW5mbzAxLmM6NDI6MjI6IGVycm9yOiAnc2lnaW5mb190JyB7YWthICdzdHJ1Y3QgPGFub255bW91cz4nfSBoYXMgbm8gbWVtYmVyIG5hbWVkICdfc2lmaWVsZHMnOyBkaWQgeW91IG1lYW4gJ19fc2lfZmllbGRzJz8KKyAgIDQyIHwgIHNpZ3ZhbF9yY3YgPSB1aW5mby0+X3NpZmllbGRzLl9ydC5TSV9TSUdWQUwuc2l2YWxfcHRyOworICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBefn5+fn5+fn4KKyAgICAgIHwgICAgICAgICAgICAgICAgICAgICAgX19zaV9maWVsZHMKKwogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK1sgcHZvcmVsOiByZWJhc2UgZm9yIDIwMjAwMTIwOiBlbmFibGUgbWFsbG9wdCwgcHJvZmlsLCBycGMwMTYsCitydF9zaWdzdXNwZW5kLCBzYnJrX211dGV4LCBzZXRkb21haW5uYW1lLCBzZXRob3N0bmFtZSwgc2lnc3VzcGVuZCwKK3Rlc3RwaS0zLCB0ZXN0cGktNSwgdGVzdHBpLTYsIHVzdGF0OyBtb3ZlIHJ0X3Rnc2lncXVldWVpbmZvCitmcm9tIDAwMDYtcnRfdGdzaWdxdWV1ZWluZm8tZGlzYWJsZS10ZXN0LW9uLW11c2wucGF0Y2ggXQorU2lnbmVkLW9mZi1ieTogUGV0ciBWb3JlbCA8cGV0ci52b3JlbEBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBQZXRyIFZvcmVsIDxwdm9yZWxAc3VzZS5jej4KIC0tLQotIE1ha2VmaWxlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA1ICsrKysrCi0gdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZSAgICAgICAgICAgICAgICAgICB8IDUgKysrKy0KLSB0ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlICAgICAgICAgICAgIHwgNCArKystCi0gdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZSAgICAgICAgICB8IDUgKysrKysKLSB0ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvTWFrZWZpbGUgICAgICAgIHwgNCArKysrCi0gdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlICB8IDUgKysrKysKLSB0ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9NYWtlZmlsZSAgIHwgNCArKysrCi0gdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZSB8IDUgKysrKysKLSA4IGZpbGVzIGNoYW5nZWQsIDM1IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgTWFrZWZpbGUgICAgICAgICAgICAgICAgICAgICAgICAgICB8IDUgKysrKysKKyB0ZXN0Y2FzZXMva2VybmVsL01ha2VmaWxlICAgICAgICAgIHwgNSArKysrLQorIHRlc3RjYXNlcy9rZXJuZWwvc2NoZWQvTWFrZWZpbGUgICAgfCA0ICsrKy0KKyB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlIHwgNCArKysrCisgNCBmaWxlcyBjaGFuZ2VkLCAxNiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggNzY4Y2E0Ni4uZTlkNjc5YSAxMDA2NDQKK2luZGV4IDc2OGNhNDYwNi4uZTlkNjc5YTcxIDEwMDY0NAogLS0tIGEvTWFrZWZpbGUKICsrKyBiL01ha2VmaWxlCiBAQCAtNDEsNiArNDEsMTEgQEAgdnBhdGggJS5tawkJJCh0b3Bfc3JjZGlyKS9tazokKHRvcF9zcmNkaXIpL21rL2luY2x1ZGUKQEAgLTQwLDE4ICs0OSwxOSBAQAogICMgQ09NTU9OX1RBUkdFVFM6CVRhcmdldHMgd2hpY2ggZXhpc3QgaW4gYWxsLCBjbGVhbiwgYW5kIGluc3RhbGwuCiAgIyBJTlNUQUxMX1RBUkdFVFM6CVRhcmdldHMgd2hpY2ggZXhpc3QgaW4gY2xlYW4gYW5kIGluc3RhbGwgKGNvbnRhaW5zCiBkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUKLWluZGV4IDM5ZDc5YzcuLjI0YTU3ZDkgMTAwNjQ0CitpbmRleCAzMzE5YjMxNjMuLjk0ZWEzNjJjOCAxMDA2NDQKIC0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUKICsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvTWFrZWZpbGUKLUBAIC00OSwxMiArNDksMTUgQEAgU1VCRElSUwkJCSs9IGNvbm5lY3RvcnMgXAorQEAgLTQ5LDEzICs0OSwxNiBAQCBTVUJESVJTCQkJKz0gY29ubmVjdG9ycyBcCiAgCQkJICAgbG9nZ2luZyBcCiAgCQkJICAgbWVtIFwKICAJCQkgICBudW1hIFwKIC0JCQkgICBwdHkgXAogIAkJCSAgIHNjaGVkIFwKICAJCQkgICBzZWN1cml0eSBcCi0gCQkJICAgdGltZXJzIFwKKyAJCQkgICBzb3VuZCBcCiAgCQkJICAgdHJhY2luZyBcCisgCQkJICAgdWV2ZW50cyBcCiAgCiAraWZuZXEgKCQoTElCQyksbXVzbCkKICtTVUJESVJTCQkJKz0gcHR5CkBAIC02MSw3ICs3MSw3IEBACiAgU1VCRElSUwkJCSs9IHBvd2VyX21hbmFnZW1lbnQKICBlbmRpZgogZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc2NoZWQvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCi1pbmRleCA2YTU3ZDc5Li43NGJiOTMzIDEwMDY0NAoraW5kZXggNmE1N2Q3OWVlLi43NGJiOTMzNzAgMTAwNjQ0CiAtLS0gYS90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCiArKysgYi90ZXN0Y2FzZXMva2VybmVsL3NjaGVkL01ha2VmaWxlCiBAQCAtMjMsNSArMjMsNyBAQApAQCAtNzQsNzYgKzg0LDE5IEBACiArZW5kaWYKICBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX3RydW5rX3RhcmdldC5tawogZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCi1pbmRleCA0NWEwMGNmLi5kMWJlY2QwIDEwMDY0NAoraW5kZXggNDVhMDBjZjdkLi5hZjVhNTkxYTAgMTAwNjQ0CiAtLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCiArKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCi1AQCAtMjgsNiArMjgsMTEgQEAgaWZlcSAoJChVQ0xJTlVYKSwxKQotIEZJTFRFUl9PVVRfRElSUwkrPSBjYXBnZXQgY2Fwc2V0IGNobW9kIGNob3duIGNsb25lIGZvcmsgZ2V0Y29udGV4dCBsbHNlZWsgXAorQEAgLTI5LDYgKzI5LDEwIEBAIEZJTFRFUl9PVVRfRElSUwkrPSBjYXBnZXQgY2Fwc2V0IGNobW9kIGNob3duIGNsb25lIGZvcmsgZ2V0Y29udGV4dCBsbHNlZWsgXAogIAkJICAgbWluY29yZSBtcHJvdGVjdCBuZnR3IHByb2ZpbCByZW1hcF9maWxlX3BhZ2VzIHNicmsKICBlbmRpZgotK2lmZXEgKCQoTElCQyksbXVzbCkKLStGSUxURVJfT1VUX0RJUlMJKz0gY29uZnN0ciBmbXRtc2cgZ2V0Y29udGV4dCBpb2N0bCBtYWxsb3B0IHByb2ZpbCBcCi0rCQkgICBydF9zaWdzdXNwZW5kIHNldGRvbWFpbm5hbWUgc2V0aG9zdG5hbWUgc2lnc3VzcGVuZCBcCi0rCQkgICB1c3RhdAotK2VuZGlmCiAgCisraWZlcSAoJChMSUJDKSxtdXNsKQorK0ZJTFRFUl9PVVRfRElSUwkrPSBjb25mc3RyIGZtdG1zZyBnZXRjb250ZXh0IGlvY3RsIHJ0X3Rnc2lncXVldWVpbmZvCisrZW5kaWYKKysKICBpZmVxICgkKFVDTElCQyksMSkKICBGSUxURVJfT1VUX0RJUlMJKz0gcHJvZmlsCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlIGIvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlCi1pbmRleCA4YzU1YTZiLi5mN2NkYTYyIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL01ha2VmaWxlCi0rKysgYi90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvTWFrZWZpbGUKLUBAIC0yNiw0ICsyNiw4IEBAIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUubWsKLSAKLSBMRExJQlMJCQkrPSAkKEFDTF9MSUJTKQotIAotK2lmZXEgKCQoTElCQyksbXVzbCkKLStGSUxURVJfT1VUX01BS0VfVEFSR0VUUwk6PSBhY2wxCi0rZW5kaWYKLSsKLSBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX2xlYWZfdGFyZ2V0Lm1rCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlIGIvdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlCi1pbmRleCA2NmU5ZDU2Li5lYThlYjhhIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvcnBjL2Jhc2ljX3Rlc3RzL01ha2VmaWxlCi0rKysgYi90ZXN0Y2FzZXMvbmV0d29yay9ycGMvYmFzaWNfdGVzdHMvTWFrZWZpbGUKLUBAIC0yMyw0ICsyMyw5IEBACi0gdG9wX3NyY2RpcgkJPz0gLi4vLi4vLi4vLi4KLSAKLSBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9lbnZfcHJlLm1rCi0rCi0raWZlcSAoJChMSUJDKSxtdXNsKQotK0ZJTFRFUl9PVVRfRElSUyArPSBycGMwMQotK2VuZGlmCi0rCi0gaW5jbHVkZSAkKHRvcF9zcmNkaXIpL2luY2x1ZGUvbWsvZ2VuZXJpY190cnVua190YXJnZXQubWsKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCi1pbmRleCA2ODYxNmE3Li43NDg3NTRiIDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvTWFrZWZpbGUKLSsrKyBiL3Rlc3RjYXNlcy9yZWFsdGltZS9mdW5jL3BpLXRlc3RzL01ha2VmaWxlCi1AQCAtMjcsNSArMjcsOSBAQCBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9lbnZfcHJlLm1rCi0gaW5jbHVkZSAkKGFic19zcmNkaXIpLy4uLy4uL2NvbmZpZy5tawotIAotIE1BS0VfVEFSR0VUUwkJOj0gdGVzdHBpLTAgdGVzdHBpLTEgdGVzdHBpLTIgdGVzdHBpLTQgdGVzdHBpLTUgdGVzdHBpLTYgdGVzdHBpLTcgc2Jya19tdXRleAotK2lmZXEgKCQoTElCQyksbXVzbCkKLStGSUxURVJfT1VUX01BS0VfVEFSR0VUUwk6PSB0ZXN0cGktNSB0ZXN0cGktNiBzYnJrX211dGV4Ci0rZW5kaWYKLSsKLSAKLSBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX2xlYWZfdGFyZ2V0Lm1rCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL3JlYWx0aW1lL3N0cmVzcy9waS10ZXN0cy9NYWtlZmlsZSBiL3Rlc3RjYXNlcy9yZWFsdGltZS9zdHJlc3MvcGktdGVzdHMvTWFrZWZpbGUKLWluZGV4IDE4ODFmNzUuLjI2NmUwYjggMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlCi0rKysgYi90ZXN0Y2FzZXMvcmVhbHRpbWUvc3RyZXNzL3BpLXRlc3RzL01ha2VmaWxlCi1AQCAtMjQsNCArMjQsOSBAQCB0b3Bfc3JjZGlyCQk/PSAuLi8uLi8uLi8uLgotIAotIGluY2x1ZGUgJCh0b3Bfc3JjZGlyKS9pbmNsdWRlL21rL2Vudl9wcmUubWsKLSBpbmNsdWRlICQoYWJzX3NyY2RpcikvLi4vLi4vY29uZmlnLm1rCi0rCi0raWZlcSAoJChMSUJDKSxtdXNsKQotK0ZJTFRFUl9PVVRfTUFLRV9UQVJHRVRTCTo9IHRlc3RwaS0zCi0rZW5kaWYKLSsKLSBpbmNsdWRlICQodG9wX3NyY2RpcikvaW5jbHVkZS9tay9nZW5lcmljX2xlYWZfdGFyZ2V0Lm1rCi0tLSAKLTIuNy40Ci0KKyBlbmRpZgorLS0KKzIuMjUuMQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWN2ZS0yMDE3LTE3MDUyLUF2b2lkLXVuc2FmZS1leGl0cy1pbi10aHJlYWRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLWN2ZS0yMDE3LTE3MDUyLUF2b2lkLXVuc2FmZS1leGl0cy1pbi10aHJlYWRzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYzQwMDgxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jdmUtMjAxNy0xNzA1Mi1Bdm9pZC11bnNhZmUtZXhpdHMtaW4tdGhyZWFkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUZyb20gZTNhODUwMmQwYTRmOGE0NGRkZDAyY2E0YjJlZmMwOTcxMzNmYjlmNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IE1hdGhpYXMgRmllZGxlciA8bWF0aGlhcy5maWVkbGVyQGFveC10ZWNoLmRlPgotRGF0ZTogRnJpLCAyMyBBdWcgMjAxOSAxMjo0Njo0OCArMDIwMAotU3ViamVjdDogW1BBVENIXSBjdmUtMjAxNy0xNzA1MjogQXZvaWQgdW5zYWZlIGV4aXRzIGluIHRocmVhZHMKLQotQWNjb3JkaW5nIHRvIG1hbnBhZ2UgZXhpdCgzKSBjYWxsaW5nIGV4aXQgaXMgbm90IHRocmVhZC1zYWZlLgotQW5kIHdpdGggZ2xpYmMgMi4yOCAoYW5kIHByb2JhYmx5IGFsc28gd2l0aCBnbGliYyA+PTIuMjcpIHNvbWV0aW1lcwotY2hpbGQgcHJvY2Vzc2VzIGNyZWF0ZWQgaW4gZm9ya190aHJlYWQgY2FuIGdldCBzdHVjayBvbiBwcm9jZXNzIGV4aXQgaW4KLWdsaWJjJ3MgX19ydW5fZXhpdF9oYW5kbGVycyB0cnlpbmcgdG8gYWNxdWlyZSBzb21lIGxvY2sgd2hpY2ggd2FzIGluCi1sb2NrZWQgc3RhdGUgd2hpbGUgdGhlIGZvcmsgd2FzIGNyZWF0ZWQuIFRoaXMgY2FuIGhhcHBlbiB3aGVuIGV4aXQgaXMKLWNhbGxlZCBpbiBtbWFwX3RocmVhZCBjb25jdXJyZW50bHkgdG8gdGhlIGZvcmsuCi1XaGlsZSB0aGUgbWFpbiBwcm9jZXNzIHdpbGwgc3RpbGwgcmV0dXJuIHdpdGggUEFTU0VEIHNvbWUgb2YgaXRzCi1jaGlsZHJlbiBhcmUgbGVmdCBiZWhpbmQuCi0KLUNvbXBhcmluZyB0aGUgc291cmNlIGNvZGUgd2l0aCB0aGUgb3JpZ2luYWwgcHJvZ3JhbSBhcyBkZXNjcmliZWQgaW4gdGhlCi1jb21taXQgMmI3ZTg2NjViNGZmNTFjMDM0YzU1ZGYzY2ZmNzY1MThkMWE5ZWUzYSBvZiBsaW51eCBrZXJuZWwgPj00LjEzCi10aGUgZXhpdHMgaW4gbW1hcF90aHJlYWQgYW5kIGZvcmtfdGhyZWFkIHNob3VsZCBub3QgYmUgbmVjZXNzYXJ5IHRvCi10cmlnZ2VyIHRoZSBvcmlnaW5hbCBidWcuCi0KLVRoZXJlZm9yZSB0aG9zZSBleGl0IGNhbGxzIGFyZSByZW1vdmVkLiBUaGUgbW1hcF90aHJlYWQgYW5kIGZvcmtfdGhyZWFkCi1zaG91bGQgc3RpbGwgZXhpdCB3aGVuIHRoZWlyIGNvcnJlc3BvbmRpbmcgbWFpbiB0aHJlYWQgaW4gZG9fdGVzdF9mb3JrCi1jYWxscyBleGl0X2dyb3VwLiBUaGUgcmVtYWluaW5nIGV4aXQgaW4gZG9fdGVzdF9mb3JrIHdpbGwgYmUgY2FsbGVkIGluCi10aGUgbWFpbiB0aHJlYWQgd2l0aG91dCBhbnkgY29uY3VycmVudCB0aHJlYWQgaW4gdGhlIHNhbWUgcHJvY2Vzcy4KLQotU2lnbmVkLW9mZi1ieTogTWF0aGlhcyBGaWVkbGVyIDxtYXRoaWFzLmZpZWRsZXJAYW94LXRlY2guZGU+Ci1BY2tlZC1ieTogQ3lyaWwgSHJ1YmlzIDxjaHJ1YmlzQHN1c2UuY3o+Ci1BY2tlZC1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9jb21taXQvOWYwYjQ1MmMxYWY0YmNiNTRkYTM1NzExZWIzZmE3NzMzNGEzNTBiNF0KLQotQ1ZFOiBDVkUtMjAxNy0xNzA1MgotCi1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdGNhc2VzL2N2ZS9jdmUtMjAxNy0xNzA1Mi5jIHwgNSAtLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2N2ZS9jdmUtMjAxNy0xNzA1Mi5jIGIvdGVzdGNhc2VzL2N2ZS9jdmUtMjAxNy0xNzA1Mi5jCi1pbmRleCBkN2RhN2U5MTkuLjE4Y2QyYTZkNyAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9jdmUvY3ZlLTIwMTctMTcwNTIuYwotKysrIGIvdGVzdGNhc2VzL2N2ZS9jdmUtMjAxNy0xNzA1Mi5jCi1AQCAtNTgsOCArNTgsNiBAQCBzdGF0aWMgdm9pZCAqbW1hcF90aHJlYWQodm9pZCAqYXJnKQotIAlmb3IgKDs7KSB7Ci0gCQlTQUZFX01NQVAoTlVMTCwgMHgxMDAwMDAwLCBQUk9UX1JFQUQsCi0gCQkJCU1BUF9QT1BVTEFURXxNQVBfQU5PTllNT1VTfE1BUF9QUklWQVRFLCAtMSwgMCk7Ci0tCQlpZiAoKmRvX2V4aXQpCi0tCQkJZXhpdCgwKTsKLSAJfQotIAotIAlyZXR1cm4gYXJnOwotQEAgLTY3LDkgKzY1LDYgQEAgc3RhdGljIHZvaWQgKm1tYXBfdGhyZWFkKHZvaWQgKmFyZykKLSAKLSBzdGF0aWMgdm9pZCAqZm9ya190aHJlYWQodm9pZCAqYXJnKQotIHsKLS0JaWYgKCpkb19leGl0KQotLQkJZXhpdCgwKTsKLS0KLSAJdXNsZWVwKHJhbmQoKSAlIDEwMDAwKTsKLSAJU0FGRV9GT1JLKCk7Ci0gCi0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtY3ZlLW1lbHRkb3duLmMtRml4LWtlcm5lbC1zeW1ib2wtZmluZGluZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jdmUtbWVsdGRvd24uYy1GaXgta2VybmVsLXN5bWJvbC1maW5kaW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NGY2ZjVhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1jdmUtbWVsdGRvd24uYy1GaXgta2VybmVsLXN5bWJvbC1maW5kaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotRnJvbSBmYmVkYTgyZjQ0MGEwMDk4YmU0MmRkNjY4Y2JjNDcyMTJhODZhYjQ4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMjEgQXVnIDIwMTkgMTY6Mjc6MjQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY3ZlL21lbHRkb3duLmM6IEZpeCBrZXJuZWwgc3ltYm9sIGZpbmRpbmcKLQotbWVsdGRvd24gY2FzZSBmYWlscyBhcyBiZWxvdy4KLXNhZmVfZmlsZV9vcHMuYzoyMTk6IEJST0s6IEV4cGVjdGVkIDMgY29udmVyc2lvbnMgZ290IDIgYXQgbWVsdGRvd24uYzoyNzIKLQotZmluZF9rZXJuZWxfc3ltYm9sIGlzIGRlZmluZWQgdG8gdHJ5IHR3aWNlIHdpdGggZWFjaCBvZiAvcHJvYy9rYWxsc3ltcyBhbmQKLS9ib290L1N5c3RlbS5tYXAtJXMuIEN1cnJlbnRseSBpZiB0aGUgc3ltYm9sIGlzIG5vdCBmb3VuZCBpbiAvcHJvYy9rYWxsc3ltcywKLXdoZW4ga2VybmVsIG9wdGlvbiBDT05GSUdfS0FMTFNZTVNfQUxMIGlzIGRpc2FibGVkLCBpdCB3b3VsZCBzdG9wIHRoZSBjYXNlCi1pbW1lZGlhdGVseSBkdWUgdG8gU0FGRV9GSUxFX0xJTkVTX1NDQU5GLgotCi1UaGlzIHBhdGNoIHR1cm5zIHRvIHVzZSBGSUxFX0xJTkVTX1NDQU5GIHRvIGdpdmUgZmluZF9rZXJuZWxfc3ltYm9sIHNlY29uZAotY2hhbmNlLgotCi1banN0YW5jZWtdIEZpeCBhbHNvIGNvbmRpdGlvbiBpbnRyb2R1Y2VkIGluIDc3MDlkMmFlOTJlYSwgZXZlbiBpZgotICAgICAgICAgICAvcHJvYy9rYWxsc3ltcyBpcyBkaXNhYmxlZCwgd2Ugc3RpbGwgd2FudCB0byB0cnkgU3lzdGVtLm1hcC4KLQotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvY29tbWl0L2MyMDQ5YjVjODc0YmMwNzFmODE4NWJmZmI1ZmQ3ZGNiMDQyZDllYzhdCi0KLVJlbW92ZSB0aGUgaHVuayBmb3IgdXBzdHJlYW0gNzcwOWQyYWU5MmVhICgiY3ZlL21lbHRkb3duLmM6IGFib3J0IHRoZSB0ZXN0IGlmIGthbGxzeW1zIHdhcyBub3QgZW5hYmxlZCIpCi10aGF0IGhhcyBiZWVuIGNvdmVyZWQgYnkgdGhpcyBwYXRjaC4KLQotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9jdmUvbWVsdGRvd24uYyB8IDEzICsrKysrKysrKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTAgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9jdmUvbWVsdGRvd24uYyBiL3Rlc3RjYXNlcy9jdmUvbWVsdGRvd24uYwotaW5kZXggYTUzZWE5Yi4uMjI2NTFhNiAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9jdmUvbWVsdGRvd24uYwotKysrIGIvdGVzdGNhc2VzL2N2ZS9tZWx0ZG93bi5jCi1AQCAtMjY3LDkgKzI2NywxNSBAQCBmaW5kX3N5bWJvbF9pbl9maWxlKGNvbnN0IGNoYXIgKmZpbGVuYW1lLCBjb25zdCBjaGFyICpzeW1uYW1lKQotIAlpbnQgcmV0LCByZWFkOwotIAljaGFyIGZtdFtzdHJsZW4oc3ltbmFtZSkgKyA2NF07Ci0gCi0rCXRzdF9yZXMoVElORk8sICJMb29raW5nIGZvciAlcyBpbiAlcyIsIHN5bW5hbWUsIGZpbGVuYW1lKTsKLSsJaWYgKGFjY2VzcyhmaWxlbmFtZSwgRl9PSykgPT0gLTEpIHsKLSsJCXRzdF9yZXMoVElORk8sICIlcyBub3QgYXZhaWxhYmxlIiwgZmlsZW5hbWUpOwotKwkJcmV0dXJuIDA7Ci0rCX0KLSsKLSAJc3ByaW50ZihmbXQsICIlJWx4ICUlYyAlcyUlYyIsIHN5bW5hbWUpOwotIAotLQlyZXQgPSBTQUZFX0ZJTEVfTElORVNfU0NBTkYoZmlsZW5hbWUsIGZtdCwgJmFkZHIsICZ0eXBlLCAmcmVhZCk7Ci0rCXJldCA9IEZJTEVfTElORVNfU0NBTkYoZmlsZW5hbWUsIGZtdCwgJmFkZHIsICZ0eXBlLCAmcmVhZCk7Ci0gCWlmIChyZXQpCi0gCQlyZXR1cm4gMDsKLSAKLUBAIC0yODcsMTMgKzI5MywxMSBAQCBmaW5kX2tlcm5lbF9zeW1ib2woY29uc3QgY2hhciAqbmFtZSkKLSAJaWYgKGFkZHIpCi0gCQlyZXR1cm4gYWRkcjsKLSAKLS0JdHN0X3JlcyhUSU5GTywgIm5vdCBmb3VuZCAnJXMnIGluIC9wcm9jL2thbGxzeW1zIiwgbmFtZSk7Ci0gCWlmICh1bmFtZSgmdXRzbmFtZSkgPCAwKQotIAkJdHN0X2JyayhUQlJPSyB8IFRFUlJOTywgInVuYW1lIik7Ci0gCi0gCXNwcmludGYoc3lzdGVtbWFwLCAiL2Jvb3QvU3lzdGVtLm1hcC0lcyIsIHV0c25hbWUucmVsZWFzZSk7Ci0gCi0tCXRzdF9yZXMoVElORk8sICJsb29raW5nIGluICclcydcbiIsIHN5c3RlbW1hcCk7Ci0gCWFkZHIgPSBmaW5kX3N5bWJvbF9pbl9maWxlKHN5c3RlbW1hcCwgbmFtZSk7Ci0gCXJldHVybiBhZGRyOwotIH0KLUBAIC0zMDgsNiArMzEyLDkgQEAgc3RhdGljIHZvaWQgc2V0dXAodm9pZCkKLSAJc2F2ZWRfY21kbGluZV9hZGRyID0gZmluZF9rZXJuZWxfc3ltYm9sKCJzYXZlZF9jb21tYW5kX2xpbmUiKTsKLSAJdHN0X3JlcyhUSU5GTywgIiZzYXZlZF9jb21tYW5kX2xpbmUgPT0gMHglbHgiLCBzYXZlZF9jbWRsaW5lX2FkZHIpOwotIAotKwlpZiAoIXNhdmVkX2NtZGxpbmVfYWRkcikKLSsJCXRzdF9icmsoVENPTkYsICJzYXZlZF9jb21tYW5kX2xpbmUgbm90IGZvdW5kIik7Ci0rCi0gCXNwZWNfZmQgPSBTQUZFX09QRU4oIi9wcm9jL2NtZGxpbmUiLCBPX1JET05MWSk7Ci0gCi0gCW1lbXNldCh0YXJnZXRfYXJyYXksIDEsIHNpemVvZih0YXJnZXRfYXJyYXkpKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLW1rc3dhcDAxLnNoLUFkZC11ZGV2YWRtLXRyaWdnZXItYmVmb3JlLXN3YXAtdmVyaWZpY2EucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtbWtzd2FwMDEuc2gtQWRkLXVkZXZhZG0tdHJpZ2dlci1iZWZvcmUtc3dhcC12ZXJpZmljYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWI0MzNkMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtbWtzd2FwMDEuc2gtQWRkLXVkZXZhZG0tdHJpZ2dlci1iZWZvcmUtc3dhcC12ZXJpZmljYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLUZyb20gZmFlODg1MmE2M2Q5ZmE2ZTU2ZmI4YjI0ZWFmMTA1NjBiZDEzNzU3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFlvbmd4aW4gTGl1IDx5b25neGluLmxpdUB3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAxMiBOb3YgMjAxOSAxMTozMzo1MCArMDgwMAotU3ViamVjdDogW1BBVENIXSBta3N3YXAwMS5zaDogQWRkICJ1ZGV2YWRtIHRyaWdnZXIiIGJlZm9yZSBzd2FwIHZlcmlmaWNhdGlvbgotCi1GaXg6IGh0dHBzOi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwL2lzc3Vlcy80NTgKLQotU29tZXRpbWVzIHRoZSBzd2FwIGRldmljZSBjYW5ub3Qgc2hvdyB1cCBpbiAvZGV2L2Rpc2svYnktdXVpZC8KLW9yIC9kZXYvZGlzay9ieS1sYWJsZS8gZHVlIHRvIHRoZSBpc3N1ZSAjNDU4LiBXaGVuIHRoaXMgaXNzdWUKLWhhcHBlbnMsICJibGtpZCAtYyAvZGV2L251bGwiIGFuZCAibHMgL2Rldi9kaXNrL2J5LXV1aWQvIiBzaG93Ci1kaWZmZXJlbnQgVVVJRCBvZiB0aGUgZGV2aWNlLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9wYXRjaHdvcmsub3psYWJzLm9yZy9wYXRjaC8xMTkzNDE0XQotCi1TaWduZWQtb2ZmLWJ5OiBZb25neGluIExpdSA8eW9uZ3hpbi5saXVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9jb21tYW5kcy9ta3N3YXAvbWtzd2FwMDEuc2ggfCAyICsrCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2NvbW1hbmRzL21rc3dhcC9ta3N3YXAwMS5zaCBiL3Rlc3RjYXNlcy9jb21tYW5kcy9ta3N3YXAvbWtzd2FwMDEuc2gKLWluZGV4IDNhMzQ4YzZlNi4uOTQzN2M0YTRlIDEwMDc1NQotLS0tIGEvdGVzdGNhc2VzL2NvbW1hbmRzL21rc3dhcC9ta3N3YXAwMS5zaAotKysrIGIvdGVzdGNhc2VzL2NvbW1hbmRzL21rc3dhcC9ta3N3YXAwMS5zaAotQEAgLTEyOSw2ICsxMjksOCBAQCBta3N3YXBfdGVzdCgpCi0gCQlyZXR1cm4KLSAJZmkKLSAKLSsJdWRldmFkbSB0cmlnZ2VyIC0tbmFtZS1tYXRjaD0kVFNUX0RFVklDRQotKwotIAlpZiBbIC1uICIkZGV2aWNlIiBdOyB0aGVuCi0gCQlta3N3YXBfdmVyaWZ5ICIkbWtzd2FwX29wIiAiJG9wX2FyZyIgIiRkZXZpY2UiICIkc2l6ZSIgIiRkZXZfZmlsZSIKLSAJCWlmIFsgJD8gLW5lIDAgXTsgdGhlbgotLS0gCi0yLjE0LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLW92ZXJjb21taXRfbWVtb3J5LXVwZGF0ZS1mb3ItbW0tZml4LWZhbHNlLXBvc2l0aXZlLU8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtb3ZlcmNvbW1pdF9tZW1vcnktdXBkYXRlLWZvci1tbS1maXgtZmFsc2UtcG9zaXRpdmUtTy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmVkODQ3MS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtb3ZlcmNvbW1pdF9tZW1vcnktdXBkYXRlLWZvci1tbS1maXgtZmFsc2UtcG9zaXRpdmUtTy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU3ICswLDAgQEAKLUZyb20gZDY1NmE0NDc4OTNkY2NjMzEwYzk3NWEyMzlmNDgyMjc4NTUwYzNlMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAyMSBNYXkgMjAxOSAxMDoxMDo0NCArMDIwMAotU3ViamVjdDogW1BBVENIXSBvdmVyY29tbWl0X21lbW9yeTogdXBkYXRlIGZvciAibW06IGZpeCBmYWxzZS1wb3NpdGl2ZQotIE9WRVJDT01NSVRfR1VFU1MgZmFpbHVyZXMiCi0KLWNvbW1pdCA4Yzc4MjliMDRjNTIgKCJtbTogZml4IGZhbHNlLXBvc2l0aXZlIE9WRVJDT01NSVRfR1VFU1MgZmFpbHVyZXMiKQotY2hhbmdlcyBsb2dpYyBvZiBfX3ZtX2Vub3VnaF9tZW1vcnkoKSwgc2ltcGxpZnlpbmcgaXQgdG86Ci0gICAgV2hlbiBpbiBHVUVTUyBtb2RlLCBjYXRjaCB3aWxkIGFsbG9jYXRpb25zIGJ5IGNvbXBhcmluZyB0aGVpciByZXF1ZXN0Ci0gICAgc2l6ZSB0byB0b3RhbCBhbW91bnQgb2YgcmFtIGFuZCBzd2FwIGluIHRoZSBzeXN0ZW0uCi0KLVRlc3RjYXNlIGN1cnJlbnRseSBhbGxvY2F0ZXMgbWVtX3RvdGFsICsgc3dhcF90b3RhbCwgd2hpY2ggZG9lc24ndCB0cmlnZ2VyCi1uZXcgY29uZGl0aW9uLiBNYWtlIGl0IG1vcmUgZXh0cmVtZSwgYnV0IGFzc3VtaW5nIGZyZWVfdG90YWwgLyAyIHdpbGwgUEFTUywKLWFuZCAyKnN1bV90b3RhbCB3aWxsIEZBSUwuCi0KLVNpZ25lZC1vZmYtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotQWNrZWQtYnk6IEN5cmlsIEhydWJpcyA8Y2hydWJpc0BzdXNlLmN6PgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9jb21taXQvZDY1NmE0NDc4OTNkY2NjMzEwYzk3NWEyMzlmNDgyMjc4NTUwYzNlMF0KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL21lbS90dW5hYmxlL292ZXJjb21taXRfbWVtb3J5LmMgfCAxMSArKysrLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL21lbS90dW5hYmxlL292ZXJjb21taXRfbWVtb3J5LmMgYi90ZXN0Y2FzZXMva2VybmVsL21lbS90dW5hYmxlL292ZXJjb21taXRfbWVtb3J5LmMKLWluZGV4IDU1NTI5OGYuLjM0NTc2NGQgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL21lbS90dW5hYmxlL292ZXJjb21taXRfbWVtb3J5LmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvbWVtL3R1bmFibGUvb3ZlcmNvbW1pdF9tZW1vcnkuYwotQEAgLTM2LDExICszNiwxMCBAQAotICAqCi0gICogVGhlIHByb2dyYW0gaXMgZGVzaWduZWQgdG8gdGVzdCB0aGUgdHdvIHR1bmFibGVzOgotICAqCi0tICogV2hlbiBvdmVyY29tbWl0X21lbW9yeSA9IDAsIGFsbG9jYXRhYmxlIG1lbW9yeSBjYW4ndCBvdmVyZXh0ZW5kcwotLSAqIHRoZSBhbW91bnQgb2YgZnJlZSBtZW1vcnkuIEkgY2hvb3NlIHRoZSB0aHJlZSBjYXNlczoKLSsgKiBXaGVuIG92ZXJjb21taXRfbWVtb3J5ID0gMCwgYWxsb2NhdGFibGUgbWVtb3J5IGNhbid0IG92ZXJleHRlbmQKLSsgKiB0aGUgYW1vdW50IG9mIHRvdGFsIG1lbW9yeToKLSAgKiBhLiBsZXNzIHRoYW4gZnJlZV90b3RhbDogICAgZnJlZV90b3RhbCAvIDIsIGFsbG9jIHNob3VsZCBwYXNzLgotLSAqIGIuIGdyZWF0ZXIgdGhhbiBmcmVlX3RvdGFsOiBmcmVlX3RvdGFsICogMiwgYWxsb2Mgc2hvdWxkIGZhaWwuCi0tICogYy4gZXF1YWwgdG8gc3VtX3RvdGFsOiAgICAgIHN1bV90YXRhbCwgICAgICBhbGxvYyBzaG91bGQgZmFpbAotKyAqIGIuIGdyZWF0ZXIgdGhhbiBzdW1fdG90YWw6ICAgc3VtX3RvdGFsICogMiwgYWxsb2Mgc2hvdWxkIGZhaWwuCi0gICoKLSAgKiBXaGVuIG92ZXJjb21taXRfbWVtb3J5ID0gMSwgaXQgY2FuIGFsbG9jIGVub3VnaCBtdWNoIG1lbW9yeSwgSQotICAqIGNob29zZSB0aGUgdGhyZWUgY2FzZXM6Ci1AQCAtMTY0LDkgKzE2Myw3IEBAIHN0YXRpYyB2b2lkIG92ZXJjb21taXRfbWVtb3J5X3Rlc3Qodm9pZCkKLSAKLSAJdXBkYXRlX21lbSgpOwotIAlhbGxvY19hbmRfY2hlY2soZnJlZV90b3RhbCAvIDIsIEVYUEVDVF9QQVNTKTsKLS0JdXBkYXRlX21lbSgpOwotLQlhbGxvY19hbmRfY2hlY2soZnJlZV90b3RhbCAqIDIsIEVYUEVDVF9GQUlMKTsKLS0JYWxsb2NfYW5kX2NoZWNrKHN1bV90b3RhbCwgRVhQRUNUX0ZBSUwpOwotKwlhbGxvY19hbmRfY2hlY2soc3VtX3RvdGFsICogMiwgRVhQRUNUX0ZBSUwpOwotIAotIAkvKiBzdGFydCB0byB0ZXN0IG92ZXJjb21taXRfbWVtb3J5PTEgKi8KLSAJc2V0X3N5c190dW5lKCJvdmVyY29tbWl0X21lbW9yeSIsIDEsIDEpOwotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbC1ydF9zaWd0aW1lZHdhaXQwMS1GaXgtd3Jvbmctc2lnc2V0LWxlbmd0aC1mby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxsLXJ0X3NpZ3RpbWVkd2FpdDAxLUZpeC13cm9uZy1zaWdzZXQtbGVuZ3RoLWZvLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwZTU2YzA4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxsLXJ0X3NpZ3RpbWVkd2FpdDAxLUZpeC13cm9uZy1zaWdzZXQtbGVuZ3RoLWZvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotRnJvbSBhNTA0NjYyNWVhZWVkMmQzZmJhNDU2YzNiYTg0YzZjMTQxYzJhZDdjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjkgQXVnIDIwMTkgMjE6MDk6NDYgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gc3lzY2FsbC9ydF9zaWd0aW1lZHdhaXQwMTogRml4IHdyb25nIHNpZ3NldCBsZW5ndGggZm9yIE1JUFMKLQotcnRfc2lndGltZWR3YWl0MDEgZmFpbHMgYXMgZm9sbG93IG9uIE1JUFMgYXJjaGVzCi1ydF9zaWd0aW1lZHdhaXQwMSAgICAxICBURkFJTCAgOiAgLi4uL3NpZ3dhaXRpbmZvMDEuYzo1ODogdGVzdF9lbXB0eV9zZXQKLSguLi4vc2lnd2FpdGluZm8wMS5jOiAxNDgpOiBVbmV4cGVjdGVkIGZhaWx1cmU6Ci1URVNUX0VSUk5PPUVJTlZBTCgyMik6IEludmFsaWQgYXJndW1lbnQKLQotQXMgdGhpcyBjYXNlIHB1cnBvc2VseSBieXBhc3NlcyBnbGliYywgaXQgc2hvdWxkIGFsaWduIHdpdGggdGhlIHNpemUgb2Yga2VybmVsCi1kZWZpbml0aW9uIG9mIHNpZ3NldF90IHdoaWNoIGlzIGRpZmZlcmVudCBmcm9tIG90aGVyIGFyY2hlcy4KLWh0dHBzOi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L3RvcnZhbGRzL2xpbnV4LmdpdC90cmVlL2FyY2gvbWlwcy9pbmNsdWRlL3VhcGkvYXNtL3NpZ25hbC5oI24xNQotCi1UaGlzIHBhdGNoIHR1cm5zIHRvIHVzZSBfTlNJRyB3aGljaCBpcyBhbHdheXMgcmlnaHQgZm9yIGFsbCBhcmNoZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2E1MDQ2NjI1ZWFlZWQyZDNmYmE0NTZjM2JhODRjNmMxNDFjMmFkN2NdCi0KLVN1Z2dlc3RlZC1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1BY2tlZC1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1BY2tlZC1ieTogQ3lyaWwgSHJ1YmlzIDxjaHJ1YmlzQHN1c2UuY3o+Ci1TaWduZWQtb2ZmLWJ5OiBIZSBaaGUgPHpoZS5oZUB3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogUGV0ciBWb3JlbCA8cHZvcmVsQHN1c2UuY3o+Ci0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3dhaXRpbmZvL3NpZ3dhaXRpbmZvMDEuYyB8IDUgKystLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9zaWd3YWl0aW5mby9zaWd3YWl0aW5mbzAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3dhaXRpbmZvL3NpZ3dhaXRpbmZvMDEuYwotaW5kZXggNWEzMmNlMS4uNmEzMGMyNyAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvc2lnd2FpdGluZm8vc2lnd2FpdGluZm8wMS5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3NpZ3dhaXRpbmZvL3NpZ3dhaXRpbmZvMDEuYwotQEAgLTEyOCw5ICsxMjgsOCBAQCBzdGF0aWMgaW50IG15X3NpZ3RpbWVkd2FpdChjb25zdCBzaWdzZXRfdCAqIHNldCwgc2lnaW5mb190ICogaW5mbywKLSBzdGF0aWMgaW50IG15X3J0X3NpZ3RpbWVkd2FpdChjb25zdCBzaWdzZXRfdCAqIHNldCwgc2lnaW5mb190ICogaW5mbywKLSAJCQkgICAgICBzdHJ1Y3QgdGltZXNwZWMgKnRpbWVvdXQpCi0gewotLQotLQkvKiBUaGUgbGFzdCBhcmd1bWVudCBpcyAobnVtYmVyX29mX3NpZ25hbHMpLyhiaXRzX3Blcl9ieXRlKSwgd2hpY2ggYXJlIDY0IGFuZCA4LCByZXNwLiAqLwotLQlyZXR1cm4gbHRwX3N5c2NhbGwoX19OUl9ydF9zaWd0aW1lZHdhaXQsIHNldCwgaW5mbywgdGltZW91dCwgOCk7Ci0rCS8qIF9OU0lHIGlzIGFsd2F5cyB0aGUgcmlnaHQgbnVtYmVyIG9mIGJpdHMgb2Ygc2lnbmFsIG1hcCBmb3IgYWxsIGFyY2hlcyAqLwotKwlyZXR1cm4gbHRwX3N5c2NhbGwoX19OUl9ydF9zaWd0aW1lZHdhaXQsIHNldCwgaW5mbywgdGltZW91dCwgX05TSUcvOCk7Ci0gfQotICNlbmRpZgotIAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbHMtQ2hlY2stZm9yLXRpbWU2NC11bnNhZmUtc3lzY2FsbHMtYmVmb3JlLXVzaS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxscy1DaGVjay1mb3ItdGltZTY0LXVuc2FmZS1zeXNjYWxscy1iZWZvcmUtdXNpLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFjOGYwOGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbHMtQ2hlY2stZm9yLXRpbWU2NC11bnNhZmUtc3lzY2FsbHMtYmVmb3JlLXVzaS5wYXRjaApAQCAtMCwwICsxLDEyMiBAQAorRnJvbSA4OWM1ODQxYmQxNDhhN2FlNzBjNjVmNGExY2E1OTk2YjdmMGNkZGZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTkgRmViIDIwMjAgMjI6NTI6MDQgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gc3lzY2FsbHM6IENoZWNrIGZvciB0aW1lNjQgdW5zYWZlIHN5c2NhbGxzIGJlZm9yZSB1c2luZyB0aGVtCisKK211c2wgaXMgdXNpbmcgNjRiaXQgdGltZV90IG5vdyBvbiAzMmJpdCBhcmNoaXRlY3R1cmVzIGFuZCB0aGVzZSBzeXNjYWxscworbm8gbG9uZ2VyIGV4aXN0LCB0aGVyZWZvcmUgaXRzIGJldHRlciB0byBjaGVjayBmb3IgdGhlbSBiZWluZyBhdmFpbGFibGUKK2JlZm9yZSB1c2luZyB0aGVtCisKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitSZXZpZXdlZC1ieTogWWFuZyBYdSA8eHV5YW5nMjAxOC5qeUBjbi5mdWppdHN1LmNvbT4KK1Jldmlld2VkLWJ5OiBQZXRyIFZvcmVsIDxwdm9yZWxAc3VzZS5jej4KK1NpZ25lZC1vZmYtYnk6IFBldHIgVm9yZWwgPHB2b3JlbEBzdXNlLmN6PgorVXBzdHJlYW0tU3RhdHVzOiBhY2NlcHRlZCBhcyA1YjU3YWUyOTEzZTJkMmQxNjdjYmQzODIyNzg0YjRjNGJhMzM2ODEyCistLS0KKyBsaWIvdHN0X2Nsb2Nrcy5jICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxNiArKysrKystLS0tLS0tLS0tCisgLi4uL3N5c2NhbGxzL2dldHRpbWVvZmRheS9nZXR0aW1lb2ZkYXkwMS5jICAgICAgIHwgIDYgKystLS0tCisgLi4uL3N5c2NhbGxzL2dldHRpbWVvZmRheS9nZXR0aW1lb2ZkYXkwMi5jICAgICAgIHwgIDggKysrLS0tLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDExIGluc2VydGlvbnMoKyksIDE5IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvbGliL3RzdF9jbG9ja3MuYyBiL2xpYi90c3RfY2xvY2tzLmMKK2luZGV4IDUxOTVkYTM4Zi4uZmEyZjFjYjg0IDEwMDY0NAorLS0tIGEvbGliL3RzdF9jbG9ja3MuYworKysrIGIvbGliL3RzdF9jbG9ja3MuYworQEAgLTMsMjggKzMsMjQgQEAKKyAgKiBDb3B5cmlnaHQgKGMpIDIwMTcgQ3lyaWwgSHJ1YmlzIDxjaHJ1YmlzQHN1c2UuY3o+CisgICovCisKKy0vKgorLSAqIGNsb2NrX2dldHRpbWUoKSBhbmQgY2xvY2tfZ2V0cmVzKCkgZnVuY3Rpb25zCistICovCistCistI2RlZmluZSBfR05VX1NPVVJDRQorLSNpbmNsdWRlIDx1bmlzdGQuaD4KKyAjaW5jbHVkZSA8dGltZS5oPgorLSNpbmNsdWRlIDxzeXMvc3lzY2FsbC5oPgorCisrI2RlZmluZSBUU1RfTk9fREVGQVVMVF9NQUlOCisrI2luY2x1ZGUgInRzdF90ZXN0LmgiCisgI2luY2x1ZGUgInRzdF9jbG9ja3MuaCIKKysjaW5jbHVkZSAibGFwaS9zeXNjYWxscy5oIgorIAorIGludCB0c3RfY2xvY2tfZ2V0cmVzKGNsb2NraWRfdCBjbGtfaWQsIHN0cnVjdCB0aW1lc3BlYyAqcmVzKQorIHsKKy0JcmV0dXJuIHN5c2NhbGwoU1lTX2Nsb2NrX2dldHJlcywgY2xrX2lkLCByZXMpOworKwlyZXR1cm4gdHN0X3N5c2NhbGwoX19OUl9jbG9ja19nZXRyZXMsIGNsa19pZCwgcmVzKTsKKyB9CisgCisgaW50IHRzdF9jbG9ja19nZXR0aW1lKGNsb2NraWRfdCBjbGtfaWQsIHN0cnVjdCB0aW1lc3BlYyAqdHMpCisgeworLQlyZXR1cm4gc3lzY2FsbChTWVNfY2xvY2tfZ2V0dGltZSwgY2xrX2lkLCB0cyk7CisrCXJldHVybiB0c3Rfc3lzY2FsbChfX05SX2Nsb2NrX2dldHRpbWUsIGNsa19pZCwgdHMpOworIH0KKyAKKyBpbnQgdHN0X2Nsb2NrX3NldHRpbWUoY2xvY2tpZF90IGNsa19pZCwgc3RydWN0IHRpbWVzcGVjICp0cykKKyB7CistCXJldHVybiBzeXNjYWxsKFNZU19jbG9ja19zZXR0aW1lLCBjbGtfaWQsIHRzKTsKKysJcmV0dXJuIHRzdF9zeXNjYWxsKF9fTlJfY2xvY2tfc2V0dGltZSwgY2xrX2lkLCB0cyk7CisgfQorZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0dGltZW9mZGF5L2dldHRpbWVvZmRheTAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldHRpbWVvZmRheS9nZXR0aW1lb2ZkYXkwMS5jCitpbmRleCA1ODNkOGY3YjkuLjA4ZWExNjczYSAxMDA2NDQKKy0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0dGltZW9mZGF5L2dldHRpbWVvZmRheTAxLmMKKysrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0dGltZW9mZGF5L2dldHRpbWVvZmRheTAxLmMKK0BAIC0zOCwxMCArMzgsOCBAQAorICNpbmNsdWRlIDxzeXMvdGltZS5oPgorICNpbmNsdWRlIDxlcnJuby5oPgorICNpbmNsdWRlICJ0ZXN0LmgiCistI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorLQorLSNkZWZpbmUgZ2V0dGltZW9mZGF5KGEsYikgIHN5c2NhbGwoX19OUl9nZXR0aW1lb2ZkYXksYSxiKQorKyNpbmNsdWRlICJsYXBpL3N5c2NhbGxzLmgiCisgCisgY2hhciAqVENJRCA9ICJnZXR0aW1lb2ZkYXkwMSI7CisgaW50IFRTVF9UT1RBTCA9IDE7CitAQCAtNjMsNyArNjEsNyBAQCBpbnQgbWFpbihpbnQgYWMsIGNoYXIgKiphdikKKyAJZm9yIChsYyA9IDA7IFRFU1RfTE9PUElORyhsYyk7IGxjKyspIHsKKyAJCXRzdF9jb3VudCA9IDA7CisgCistCQlURVNUKGdldHRpbWVvZmRheSgodm9pZCAqKS0xLCAodm9pZCAqKS0xKSk7CisrCQlURVNUKGx0cF9zeXNjYWxsKF9fTlJfZ2V0dGltZW9mZGF5LCAodm9pZCAqKS0xLCAodm9pZCAqKS0xKSk7CisgCisgCQkvKiBnZXR0aW1lb2ZkYXkgcmV0dXJucyBhbiBpbnQsIHNvIHdlIG5lZWQgdG8gdHVybiB0aGUgbG9uZworIAkJICogVEVTVF9SRVRVUk4gaW50byBhbiBpbnQgdG8gdGVzdCB3aXRoICovCitkaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXR0aW1lb2ZkYXkvZ2V0dGltZW9mZGF5MDIuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0dGltZW9mZGF5L2dldHRpbWVvZmRheTAyLmMKK2luZGV4IDFkNjBmNDQ4ZS4uNTE3MGFkMmY3IDEwMDY0NAorLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXR0aW1lb2ZkYXkvZ2V0dGltZW9mZGF5MDIuYworKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXR0aW1lb2ZkYXkvZ2V0dGltZW9mZGF5MDIuYworQEAgLTE2LDE0ICsxNiwxMiBAQAorICNpbmNsdWRlIDxzdGRpbnQuaD4KKyAjaW5jbHVkZSA8c3lzL3RpbWUuaD4KKyAjaW5jbHVkZSA8c3RkbGliLmg+CistI2luY2x1ZGUgPHN5cy9zeXNjYWxsLmg+CisgI2luY2x1ZGUgPHVuaXN0ZC5oPgorICNpbmNsdWRlIDx0aW1lLmg+CisgI2luY2x1ZGUgPGVycm5vLmg+CisgCisgI2luY2x1ZGUgInRzdF90ZXN0LmgiCistCistI2RlZmluZSBnZXR0aW1lb2ZkYXkoYSxiKSAgc3lzY2FsbChfX05SX2dldHRpbWVvZmRheSxhLGIpCisrI2luY2x1ZGUgImxhcGkvc3lzY2FsbHMuaCIKKyAKKyBzdGF0aWMgdm9sYXRpbGUgc2lnX2F0b21pY190IGRvbmU7Cisgc3RhdGljIGNoYXIgKnN0cl9ydGltZTsKK0BAIC00OCwxMyArNDYsMTMgQEAgc3RhdGljIHZvaWQgdmVyaWZ5X2dldHRpbWVvZmRheSh2b2lkKQorIAorIAlhbGFybShydGltZSk7CisgCistCWlmIChnZXR0aW1lb2ZkYXkoJnR2MSwgTlVMTCkpIHsKKysJaWYgKHRzdF9zeXNjYWxsKF9fTlJfZ2V0dGltZW9mZGF5LCAmdHYxLCBOVUxMKSkgeworIAkJdHN0X3JlcyhUQlJPSyB8IFRFUlJOTywgImdldHRpbWVvZmRheSgpIGZhaWxlZCIpOworIAkJcmV0dXJuOworIAl9CisgCisgCXdoaWxlICghZG9uZSkgeworLQkJaWYgKGdldHRpbWVvZmRheSgmdHYyLCBOVUxMKSkgeworKwkJaWYgKHRzdF9zeXNjYWxsKF9fTlJfZ2V0dGltZW9mZGF5LCAmdHYyLCBOVUxMKSkgeworIAkJCXRzdF9yZXMoVEJST0sgfCBURVJSTk8sICJnZXR0aW1lb2ZkYXkoKSBmYWlsZWQiKTsKKyAJCQlyZXR1cm47CisgCQl9CistLQorMi4yNS4xCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtc3lzY2FsbHMtdGdraWxsMDMtd2FpdC1mb3ItZGVmdW5jdC10aWQtdG8tZ2V0LWRldGFjaC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxscy10Z2tpbGwwMy13YWl0LWZvci1kZWZ1bmN0LXRpZC10by1nZXQtZGV0YWNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2ZWEyNjE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS1zeXNjYWxscy10Z2tpbGwwMy13YWl0LWZvci1kZWZ1bmN0LXRpZC10by1nZXQtZGV0YWNoLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotRnJvbSBlNzQ3ZDA0NTZhZGMwODBhMWQzMWZiNjUzYmRhOWRjNDkxNzk1YzgwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1EYXRlOiBTdW4sIDE2IEp1biAyMDE5IDExOjE0OjE2ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHN5c2NhbGxzL3Rna2lsbDAzOiB3YWl0IGZvciBkZWZ1bmN0IHRpZCB0byBnZXQgZGV0YWNoZWQKLQotQ2FzZSB3aGVyZSBkZWZ1bmN0IHRpZCBpcyB1c2VkIGhhcyBiZWVuIG9ic2VydmVkIHRvIHNwb3JhZGljYWxseSBmYWlsOgotICB0Z2tpbGwwMy5jOjk2OiBGQUlMOiBEZWZ1bmN0IHRpZCBzaG91bGQgaGF2ZSBmYWlsZWQgd2l0aCBFU1JDSDogU1VDQ0VTUwotCi1nbGliYyBfX3B0aHJlYWRfdGltZWRqb2luX2V4KCkgd2FpdHMgZm9yIENMT05FX0NISUxEX0NMRUFSVElEIHRvIGNsZWFyIHRpZCwKLWFuZCB0aGVuIHJlc3VtZXMuIEtlcm5lbCBjbGVhcnMgaXQgKGdsaWJjIHBkLT50aWQpIGF0OgotICBkb19leGl0Ci0gICAgZXhpdF9tbQotICAgICAgbW1fcmVsZWFzZQotICAgICAgICBwdXRfdXNlcigwLCB0c2stPmNsZWFyX2NoaWxkX3RpZCk7Ci0KLWJ1dCBrZXJuZWwgdGlkIGlzIHN0aWxsIHZhbGlkLCBwcmVzdW1hYmx5IHVudGlsOgotICByZWxlYXNlX3Rhc2sKLSAgICBfX2V4aXRfc2lnbmFsCi0gICAgICBfX3VuaGFzaF9wcm9jZXNzCi0gICAgICAgIGRldGFjaF9waWQKLQotVG8gYXZvaWQgcmFjZSB3YWl0IHVudGlsIC9wcm9jLzxwaWQ+L3Rhc2svPHRpZD4gZGlzYXBwZWFycy4KLQotU2lnbmVkLW9mZi1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1SZXZpZXdlZC1ieTogTGkgV2FuZyA8bGl3YW5nQHJlZGhhdC5jb20+Ci1BY2tlZC1ieTogU3VtaXQgR2FyZyA8c3VtaXQuZ2FyZ0BsaW5hcm8ub3JnPgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvY29tbWl0L2U3NDdkMDQ1NmFkYzA4MGExZDMxZmI2NTNiZGE5ZGM0OTE3OTVjODBdCi0KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3Rna2lsbC90Z2tpbGwwMy5jIHwgNiArKysrKy0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3Rna2lsbC90Z2tpbGwwMy5jIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy90Z2tpbGwvdGdraWxsMDMuYwotaW5kZXggZjViYmRjNS4uNTkzYTIxNyAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdGdraWxsL3Rna2lsbDAzLmMKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdGdraWxsL3Rna2lsbDAzLmMKLUBAIC03LDYgKzcsNyBAQAotIAotICNpbmNsdWRlIDxwdGhyZWFkLmg+Ci0gI2luY2x1ZGUgPHB3ZC5oPgotKyNpbmNsdWRlIDxzdGRpby5oPgotICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLSAjaW5jbHVkZSAidHN0X3NhZmVfcHRocmVhZC5oIgotQEAgLTQyLDYgKzQzLDcgQEAgc3RhdGljIHZvaWQgc2V0dXAodm9pZCkKLSB7Ci0gCXNpZ3NldF90IHNpZ3VzcjE7Ci0gCXB0aHJlYWRfdCBkZWZ1bmN0X3RocmVhZDsKLSsJY2hhciBkZWZ1bmN0X3RpZF9wYXRoW1BBVEhfTUFYXTsKLSAKLSAJc2lnZW1wdHlzZXQoJnNpZ3VzcjEpOwotIAlzaWdhZGRzZXQoJnNpZ3VzcjEsIFNJR1VTUjEpOwotQEAgLTU1LDggKzU3LDkgQEAgc3RhdGljIHZvaWQgc2V0dXAodm9pZCkKLSAJVFNUX0NIRUNLUE9JTlRfV0FJVCgwKTsKLSAKLSAJU0FGRV9QVEhSRUFEX0NSRUFURSgmZGVmdW5jdF90aHJlYWQsIE5VTEwsIGRlZnVuY3RfdGhyZWFkX2Z1bmMsIE5VTEwpOwotLQotIAlTQUZFX1BUSFJFQURfSk9JTihkZWZ1bmN0X3RocmVhZCwgTlVMTCk7Ci0rCXNwcmludGYoZGVmdW5jdF90aWRfcGF0aCwgIi9wcm9jLyVkL3Rhc2svJWQiLCBnZXRwaWQoKSwgZGVmdW5jdF90aWQpOwotKwlUU1RfUkVUUllfRk5fRVhQX0JBQ0tPRkYoYWNjZXNzKGRlZnVuY3RfdGlkX3BhdGgsIFJfT0spLCAtMSwgMTUpOwotIH0KLSAKLSBzdGF0aWMgdm9pZCBjbGVhbnVwKHZvaWQpCi1AQCAtMTA4LDQgKzExMSw1IEBAIHN0YXRpYyBzdHJ1Y3QgdHN0X3Rlc3QgdGVzdCA9IHsKLSAJLnNldHVwID0gc2V0dXAsCi0gCS5jbGVhbnVwID0gY2xlYW51cCwKLSAJLnRlc3QgPSBydW4sCi0rCS50aW1lb3V0ID0gMjAsCi0gfTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAxLXRlc3RjYXNlcy11c2UtcHl0aG9uMy1ldmVyeXdoZXJlLXRvLXJ1bi1weXRob24tc2NyaXAucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtdGVzdGNhc2VzLXVzZS1weXRob24zLWV2ZXJ5d2hlcmUtdG8tcnVuLXB5dGhvbi1zY3JpcC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjRmODdmMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtdGVzdGNhc2VzLXVzZS1weXRob24zLWV2ZXJ5d2hlcmUtdG8tcnVuLXB5dGhvbi1zY3JpcC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE2MSArMCwwIEBACi1Gcm9tIDA0NjNkNzkzNTY2NzcyYTYwNjI1NTk1NzkxNWY5OWQxNjZkNTc0MGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjggQXVnIDIwMTkgMTg6MzA6MjMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gdGVzdGNhc2VzOiB1c2UgcHl0aG9uMyBldmVyeXdoZXJlIHRvIHJ1biBweXRob24gc2NyaXB0cwotCi1UaGUgc2NyaXB0cyB0aGVtc2VsdmVzIGhhdmUgIyEvdXNyL2Jpbi9weXRob24zIGluIHRoZW0sCi1zbyBJIHRydXN0IHRoZXkgYXJlIGFscmVhZHkgcHkzLWNvbXBhdGlibGUuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0czA1LnNoICB8ICAyICstCi0gLi4uL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMS5zaCAgICAgfCAgMiArLQotIC4uLi9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDIuc2ggICAgIHwgIDIgKy0KLSAuLi4vcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAzLnNoICAgICB8ICAyICstCi0gLi4uL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwNC5zaCAgICAgfCAgMiArLQotIC4uLi9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDUuc2ggICAgIHwgIDIgKy0KLSB0ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvcnVudGVzdCAgICAgICAgICAgICAgICB8IDE0ICsrKysrKystLS0tLS0tCi0gdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvcnVuX2F1dG8uc2ggICAgICAgfCAgNiArKystLS0KLSA4IGZpbGVzIGNoYW5nZWQsIDE2IGluc2VydGlvbnMoKyksIDE2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHMwNS5zaCBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzMDUuc2gKLWluZGV4IDhhN2QwZjZlMC4uNDNlMjM0ZDAxIDEwMDc1NQotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHMwNS5zaAotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHMwNS5zaAotQEAgLTM1LDcgKzM1LDcgQEAgZWxzZQotIAltYXhfc2NoZWRfc210PTEKLSBmaQotIAotLXRzdF90ZXN0X2NtZHMgcHl0aG9uCi0rdHN0X3Rlc3RfY21kcyBweXRob24zCi0gCi0gaWYgISBncmVwIHNjaGVkX2RlYnVnIC1xdyAvcHJvYy9jbWRsaW5lIDsgdGhlbgotIAl0c3RfYnJrbSBUQ09ORiAiS2VybmVsIGNtZGxpbmUgcGFyYW1ldGVyICdzY2hlZF9kZWJ1ZycgbmVlZGVkLCIgXAotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAxLnNoIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDEuc2gKLWluZGV4IGVjNzgzMTllMi4uOWZlZmNiZjZlIDEwMDc1NQotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDEuc2gKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAxLnNoCi1AQCAtMzUsNyArMzUsNyBAQCBlbHNlCi0gCW1heF9zY2hlZF9zbXQ9MQotIGZpCi0gCi0tdHN0X3Rlc3RfY21kcyBweXRob24KLSt0c3RfdGVzdF9jbWRzIHB5dGhvbjMKLSAKLSBoeXBlcl90aHJlYWRlZD0kKGlzX2h5cGVyX3RocmVhZGVkKQotIG11bHRpX3NvY2tldD0kKGlzX211bHRpX3NvY2tldCkKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMi5zaCBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAyLnNoCi1pbmRleCBlMTA3ZmNlMzUuLjJjZDBlY2IwNSAxMDA3NTUKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTAyLnNoCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMi5zaAotQEAgLTMzLDcgKzMzLDcgQEAgZWxzZQotIAltYXhfc2NoZWRfc210PTEKLSBmaQotIAotLXRzdF90ZXN0X2NtZHMgcHl0aG9uCi0rdHN0X3Rlc3RfY21kcyBweXRob24zCi0gCi0gaHlwZXJfdGhyZWFkZWQ9JChpc19oeXBlcl90aHJlYWRlZCkKLSBtdWx0aV9zb2NrZXQ9JChpc19tdWx0aV9zb2NrZXQpCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDMuc2ggYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMy5zaAotaW5kZXggNDkwMzQ0YmIzLi5hYjNhNWQxMWQgMTAwNzU1Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwMy5zaAotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDMuc2gKLUBAIC0zNSw3ICszNSw3IEBAIGVsc2UKLSAJbWF4X3NjaGVkX3NtdD0xCi0gZmkKLSAKLS10c3RfdGVzdF9jbWRzIHB5dGhvbgotK3RzdF90ZXN0X2NtZHMgcHl0aG9uMwotIAotIGh5cGVyX3RocmVhZGVkPSQoaXNfaHlwZXJfdGhyZWFkZWQpCi0gbXVsdGlfc29ja2V0PSQoaXNfbXVsdGlfc29ja2V0KQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTA0LnNoIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDQuc2gKLWluZGV4IDk3OGNhMDJhZS4uNDM4ZWY2MDNmIDEwMDc1NQotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDQuc2gKLSsrKyBiL3Rlc3RjYXNlcy9rZXJuZWwvcG93ZXJfbWFuYWdlbWVudC9ydW5wd3Rlc3RzX2V4Y2x1c2l2ZTA0LnNoCi1AQCAtMjcsNyArMjcsNyBAQCBleHBvcnQgVFNUX1RPVEFMPTIKLSAjIENoZWNraW5nIHRlc3QgZW52aXJvbm1lbnQKLSBjaGVja19rZXJ2ZWxfYXJjaAotIAotLXRzdF90ZXN0X2NtZHMgcHl0aG9uCi0rdHN0X3Rlc3RfY21kcyBweXRob24zCi0gCi0gaHlwZXJfdGhyZWFkZWQ9JChpc19oeXBlcl90aHJlYWRlZCkKLSBtdWx0aV9zb2NrZXQ9JChpc19tdWx0aV9zb2NrZXQpCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDUuc2ggYi90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwNS5zaAotaW5kZXggYTBkYWQ1ODM0Li4zYTlhZmRiZjIgMTAwNzU1Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3Bvd2VyX21hbmFnZW1lbnQvcnVucHd0ZXN0c19leGNsdXNpdmUwNS5zaAotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9wb3dlcl9tYW5hZ2VtZW50L3J1bnB3dGVzdHNfZXhjbHVzaXZlMDUuc2gKLUBAIC0zNSw3ICszNSw3IEBAIGVsc2UKLSAJbWF4X3NjaGVkX3NtdD0xCi0gZmkKLSAKLS10c3RfdGVzdF9jbWRzIHB5dGhvbgotK3RzdF90ZXN0X2NtZHMgcHl0aG9uMwotIAotIGh5cGVyX3RocmVhZGVkPSQoaXNfaHlwZXJfdGhyZWFkZWQpCi0gbXVsdGlfc29ja2V0PSQoaXNfbXVsdGlfc29ja2V0KQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9ydW50ZXN0IGIvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL3J1bnRlc3QKLWluZGV4IGQyZTFiNGM0OS4uYTg1OWU4NWJjIDEwMDc1NQotLS0tIGEvdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL3J1bnRlc3QKLSsrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9ydW50ZXN0Ci1AQCAtMjIsNyArMjIsNyBAQCBkbwotIGRvbmUKLSAKLSAjICBjcmVhdGlvbiBvZiB1c2VycyBvbiB0aGUgcmVtb3RlIG1hY2hpbmUgKHJlbW92ZWQgb25seSBhdCB0aGUgZW5kIG9mIHRoZSB0ZXN0cykKLS1yc2ggLW4gJFJFTU9URUhPU1QgcHl0aG9uICRQV0QvY3JlYXRlX3VzZXJzLnB5IC11IDUwIC1nIDUwCi0rcnNoIC1uICRSRU1PVEVIT1NUIHB5dGhvbjMgJFBXRC9jcmVhdGVfdXNlcnMucHkgLXUgNTAgLWcgNTAKLSAKLSBlY2hvICJTdGFydGluZyBBQ0wgdGVzdGluZyIKLSAKLUBAIC01MSwxOSArNTEsMTkgQEAgZWNobyAiQmFzaWMgdGVzdHMgZmluaXNoZWQiCi0gCi0gZWNobyAiTE9ORyBBQ0wgVEVTVCIKLSBlY2hvICJjcmVhdGluZyBuZWNlc3NhcnkgdXNlcnMgYW5kIGdyb3VwcyIKLS1weXRob24gY3JlYXRlX3VzZXJzLnB5IC11IDUwIC1nIDUwCi0rcHl0aG9uMyBjcmVhdGVfdXNlcnMucHkgLXUgNTAgLWcgNTAKLSBlY2hvICJjcmVhdGluZyBuZWNlc3NhcnkgdXNlcnMgYW5kIGdyb3VwcyBvbiB0aGUgcmVtb3RlIGhvc3QiCi0gbWtkaXIgJE5GU01OVERJUi9sYWNsLXRlc3RkaXIKLS1weXRob24gdGVzdF9sb25nX2FjbC5weSAtbCAkTUFYTEVOR1RIIC1wICRORlNNTlRESVIvbGFjbC10ZXN0ZGlyCi0rcHl0aG9uMyB0ZXN0X2xvbmdfYWNsLnB5IC1sICRNQVhMRU5HVEggLXAgJE5GU01OVERJUi9sYWNsLXRlc3RkaXIKLSBybSAtcmYgJE5GU01OVERJUi9sYWNsLXRlc3RkaXIKLSBlY2hvICJMb25nIEFDTCB0ZXN0IE9LIHdpdGggJE1BWExFTkdUSCBlbnRyaWVzIgotIGVjaG8gIkFDTCBTVFJFU1NJTkcgVEVTVCIKLS1weXRob24gc2V0YWNsX3N0cmVzcy5weSAtbiAxMDAgLXUgJFVTRVJfTkIgLWcgJEdSUF9OQiAtZiAkRklMRV9OQiAtcCAkTkZTTU5URElSCi0rcHl0aG9uMyBzZXRhY2xfc3RyZXNzLnB5IC1uIDEwMCAtdSAkVVNFUl9OQiAtZyAkR1JQX05CIC1mICRGSUxFX05CIC1wICRORlNNTlRESVIKLSAKLSAjIHJlbW92ZSBsb2NhbCBhbiByZW1vdGUgdXNlcnMKLS1weXRob24gY2xlYW51c2Vycy5weQotLXB5dGhvbiBjbGVhbmdyb3Vwcy5weQotLXJzaCAtbiAkUkVNT1RFSE9TVCBweXRob24gJFBXRC9jbGVhbnVzZXJzLnB5Ci0rcHl0aG9uMyBjbGVhbnVzZXJzLnB5Ci0rcHl0aG9uMyBjbGVhbmdyb3Vwcy5weQotK3JzaCAtbiAkUkVNT1RFSE9TVCBweXRob24zICRQV0QvY2xlYW51c2Vycy5weQotIAotIGVjaG8gIlRlc3QgT0siCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvcnVuX2F1dG8uc2ggYi90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9ydW5fYXV0by5zaAotaW5kZXggZDEzMDI2MDQ5Li4yNzc5ODg1NjggMTAwNzU1Ci0tLS0gYS90ZXN0Y2FzZXMvcmVhbHRpbWUvZnVuYy9waS10ZXN0cy9ydW5fYXV0by5zaAotKysrIGIvdGVzdGNhc2VzL3JlYWx0aW1lL2Z1bmMvcGktdGVzdHMvcnVuX2F1dG8uc2gKLUBAIC0xNSwxNSArMTUsMTUgQEAgJFNDUklQVFNfRElSL3J1bl9jX2ZpbGVzLnNoICRwcm9maWxlIHRlc3RwaS0wCi0gCi0gZXhwb3J0IExPR19GSUxFPSIkTE9HX0RJUi8kTE9HX0ZPUk1BVC10ZXN0cGktMS5sb2ciCi0gJFNDUklQVFNfRElSL3J1bl9jX2ZpbGVzLnNoICRwcm9maWxlIHRlc3RwaS0xCi0tUFlUSE9OUEFUSD0uLi8uLi8gIHB5dGhvbiBwYXJzZS10ZXN0cGkxLnB5ICRMT0dfRklMRSAyPiYxIHwgdGVlIC1hICRMT0dfRklMRQotK1BZVEhPTlBBVEg9Li4vLi4vICBweXRob24zIHBhcnNlLXRlc3RwaTEucHkgJExPR19GSUxFIDI+JjEgfCB0ZWUgLWEgJExPR19GSUxFCi0gCi0gZXhwb3J0IExPR19GSUxFPSIkTE9HX0RJUi8kTE9HX0ZPUk1BVC10ZXN0cGktMi5sb2ciCi0gJFNDUklQVFNfRElSL3J1bl9jX2ZpbGVzLnNoICRwcm9maWxlIHRlc3RwaS0yCi0tUFlUSE9OUEFUSD0uLi8uLi8gIHB5dGhvbiBwYXJzZS10ZXN0cGkyLnB5ICRMT0dfRklMRSAyPiYxIHwgdGVlIC1hICRMT0dfRklMRQotK1BZVEhPTlBBVEg9Li4vLi4vICBweXRob24zIHBhcnNlLXRlc3RwaTIucHkgJExPR19GSUxFIDI+JjEgfCB0ZWUgLWEgJExPR19GSUxFCi0gCi0gZXhwb3J0IExPR19GSUxFPSIkTE9HX0RJUi8kTE9HX0ZPUk1BVC10ZXN0cGktNC5sb2ciCi0gJFNDUklQVFNfRElSL3J1bl9jX2ZpbGVzLnNoICRwcm9maWxlIHRlc3RwaS00Ci0tUFlUSE9OUEFUSD0uLi8uLi8gIHB5dGhvbiBwYXJzZS10ZXN0cGkxLnB5ICRMT0dfRklMRSAyPiYxIHwgdGVlIC1hICRMT0dfRklMRQotK1BZVEhPTlBBVEg9Li4vLi4vICBweXRob24zIHBhcnNlLXRlc3RwaTEucHkgJExPR19GSUxFIDI+JjEgfCB0ZWUgLWEgJExPR19GSUxFCi0gCi0gCi0gZXhwb3J0IExPR19GSUxFPSIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDEtdXN0YXQwMi1GaXgtRUZBVUxULWluLTMyYml0LWNvbXBhdGliaWxpdHktbW9kZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS11c3RhdDAyLUZpeC1FRkFVTFQtaW4tMzJiaXQtY29tcGF0aWJpbGl0eS1tb2RlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjOTM2Yjc4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMS11c3RhdDAyLUZpeC1FRkFVTFQtaW4tMzJiaXQtY29tcGF0aWJpbGl0eS1tb2RlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRnJvbSAxNTY3NzZhM2UyOTQ5MWIzNjNmZGM5ODExOTEyZTEyOTg2NTVkMDYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU3RldmVuIFByaWNlIDxzdGV2ZW4ucHJpY2VAYXJtLmNvbT4KLURhdGU6IEZyaSwgMTkgSnVsIDIwMTkgMTM6NDg6MTcgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gdXN0YXQwMjogRml4IEVGQVVMVCBpbiAzMmJpdCBjb21wYXRpYmlsaXR5IG1vZGUKLQotVGhlIHNpemUgb2YgZGV2X3QgaXMgbGFyZ2VyIHRoYW4gMzIgYml0cyB3aGljaCBjYXVzZXMgdGhlIGRldiBhcmd1bWVudAotdG8gYmUgcGFzc2VkIGluY29ycmVjdGx5LiBPbiBBcm0gdGhpcyBtZWFucyB0aGF0IHRoZSBFRkFVTFQgdGVzdCBjYXNlCi1hY3R1YWxseSByZXR1cm5zIEVJTlZBTCBiZWNhdXNlIHRoZSBkZXZpY2UgbnVtYmVyIGlzbid0IHJlY29nbmlzZWQuCi0KLVNpZ25lZC1vZmYtYnk6IFN0ZXZlbiBQcmljZSA8c3RldmVuLnByaWNlQGFybS5jb20+Ci1BY2tlZC1ieTogTGkgV2FuZyA8bGl3YW5nQHJlZGhhdC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9jb21taXQvMTU2Nzc2YTNlMjk0OTFiMzYzZmRjOTgxMTkxMmUxMjk4NjU1ZDA2MF0KLQotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdXN0YXQvdXN0YXQwMi5jIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy91c3RhdC91c3RhdDAyLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3VzdGF0L3VzdGF0MDIuYwotaW5kZXggOWJiZTRmMy4uMWEwZTllMCAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvdXN0YXQvdXN0YXQwMi5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL3VzdGF0L3VzdGF0MDIuYwotQEAgLTM2LDcgKzM2LDcgQEAgaW50IFRTVF9UT1RBTCA9IEFSUkFZX1NJWkUodGMpOwotIAotIHZvaWQgcnVuKHVuc2lnbmVkIGludCB0ZXN0KQotIHsKLS0JVEVTVCh0c3Rfc3lzY2FsbChfX05SX3VzdGF0LCAqdGNbdGVzdF0uZGV2LCB0Y1t0ZXN0XS5idWYpKTsKLSsJVEVTVCh0c3Rfc3lzY2FsbChfX05SX3VzdGF0LCAodW5zaWduZWQgaW50KSp0Y1t0ZXN0XS5kZXYsIHRjW3Rlc3RdLmJ1ZikpOwotIAotIAlpZiAoKFRTVF9SRVQgPT0gLTEpICYmIChUU1RfRVJSID09IHRjW3Rlc3RdLmV4cF9lcnJubykpCi0gCQl0c3RfcmVzKFRQQVNTIHwgVFRFUlJOTywgInVzdGF0KDIpIGV4cGVjdGVkIGZhaWx1cmUiKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAyLWNoZWNrLWZvci1SRVNfVVNFX0lORVQ2LWR1cmluZy1jb25maWd1cmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDItY2hlY2stZm9yLVJFU19VU0VfSU5FVDYtZHVyaW5nLWNvbmZpZ3VyZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMTJlNDdlYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDItY2hlY2stZm9yLVJFU19VU0VfSU5FVDYtZHVyaW5nLWNvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gN2JjMTM0NTQ1YjdiZWIwOTcxN2E2MDU0MTUzMGMyMGExYTU3NDBkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDI2IEp1bCAyMDE5IDEwOjU1OjI4IC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBjaGVjayBmb3IgUkVTX1VTRV9JTkVUNiBkdXJpbmcgY29uZmlndXJlCi0KLWdsaWJjIDIuMzAgaGFzIHJlbW92ZSBSRVNfVVNFX0lORVQ2IGRlZmluZSB3aGljaCBoYXMgYmVlbiBvbiBpdHMgd2F5IG91dAotc2luY2UgMi4yNiByZWxlYXNlLCB0aGlzIGNoZWNrIGVuc3VyZXMgdGhhdCB3ZSBkZXRlY3QgaXQgYmVmb3JlIHVzaW5nIGl0Ci0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwOi8vbGlzdHMubGludXguaXQvcGlwZXJtYWlsL2x0cC8yMDE5LUp1bHkvMDEyOTU1Lmh0bWxdCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTMgKysrKysrKysrKysrKwotIHRlc3RjYXNlcy9uZXR3b3JrL211bHRpY2FzdC9tY19nZXRob3N0L21jX2dldGhvc3QuYyB8ICA2ICsrKysrKwotIDIgZmlsZXMgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAyMjU1YjVjMTgxLi5lZDdhY2NjYjAxIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC05MSw2ICs5MSwxOSBAQCBBQ19DSEVDS19GVU5DUyhbIFwKLSAgICAgdm1zcGxpY2UgXAotIF0pCi0gCi0rI2NoZWNrIGRlZmluZXMKLStBQ19NU0dfQ0hFQ0tJTkcoW2ZvciBSRVNfVVNFX0lORVQ2XSkKLStBQ19DT01QSUxFX0lGRUxTRSggW0FDX0xBTkdfUFJPR1JBTShbWyNpbmNsdWRlIDxyZXNvbHYuaD5dXSwKLSsgIFtbY2hhciBkdW1teVtSRVNfVVNFX0lORVQ2XTtdXSldLAotKyAgWwotKyAgICBBQ19NU0dfUkVTVUxUKFt5ZXNdKQotKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoW0hBVkVfUkVTX1VTRV9JTkVUNl0sIDEsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgUkVTX1VTRV9JTkVUNiBtYWNyby5dKQotKyAgXSwKLSsgIFsKLSsgICAgQUNfTVNHX1JFU1VMVChbbm9dKQotKyAgICBBQ19ERUZJTkVfVU5RVU9URUQoW0hBVkVfUkVTX1VTRV9JTkVUNl0sIDAsIFtEZWZpbmUgdG8gMSBpZiB5b3UgaGF2ZSB0aGUgUkVTX1VTRV9JTkVUNiBtYWNyby5dKQotKyAgXQotKykKLSAjIFRvb2xzIGtub2JzCi0gCi0gIyBFeHBlY3QKLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvbmV0d29yay9tdWx0aWNhc3QvbWNfZ2V0aG9zdC9tY19nZXRob3N0LmMgYi90ZXN0Y2FzZXMvbmV0d29yay9tdWx0aWNhc3QvbWNfZ2V0aG9zdC9tY19nZXRob3N0LmMKLWluZGV4IDljYzE1ZDA4NmIuLmQxY2FlNTQ0MWEgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9tdWx0aWNhc3QvbWNfZ2V0aG9zdC9tY19nZXRob3N0LmMKLSsrKyBiL3Rlc3RjYXNlcy9uZXR3b3JrL211bHRpY2FzdC9tY19nZXRob3N0L21jX2dldGhvc3QuYwotQEAgLTE3LDYgKzE3LDggQEAKLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotIAotKyNpbmNsdWRlICJjb25maWcuaCIKLSsKLSAjaWZuZGVmIExPR19QRVJST1IKLSAjZGVmaW5lIExPR19QRVJST1IgMAotICNlbmRpZgotQEAgLTUwLDggKzUyLDEyIEBAIHVzYWdlOgotIAkJYXJndisrLCBhcmdjLS07Ci0gCX0KLSAJaWYgKGFyZ2MgPj0gMSAmJiAhc3RyY21wKCphcmd2LCAiLTYiKSkgewotKyNpZiBIQVZFX1JFU19VU0VfSU5FVDYKLSAJCWFmID0gQUZfSU5FVDYsIHNpemUgPSBJTjZBRERSU1o7Ci0gCQlfcmVzLm9wdGlvbnMgfD0gUkVTX1VTRV9JTkVUNjsKLSsjZWxzZQotKwkJYWYgPSBBRl9JTkVULCBzaXplID0gSU5BRERSU1o7Ci0rI2VuZGlmCi0gCQlhcmd2KyssIGFyZ2MtLTsKLSAJfQotIAlpZiAoYXJnYyA+PSAxICYmICFzdHJjbXAoKmFyZ3YsICItZiIpKSB7Ci0tLSAKLTIuMjIuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDIta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMi1rZXJuZWwtY29udHJvbGxlcnMtTGluay13aXRoLWxpYmZ0cy1leHBsaWNpdGx5LW9uLW11LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZmY5ZWQwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMi1rZXJuZWwtY29udHJvbGxlcnMtTGluay13aXRoLWxpYmZ0cy1leHBsaWNpdGx5LW9uLW11LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSA4MWU1YmQ1NDQyMzM3YTRhNjQ4YTBkYmJmZjQ3ZWFhYzBkMzUxMjg3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgNyBKYW4gMjAxNiAxODoyMjozOCArMDAwMAotU3ViamVjdDogW1BBVENIXSBrZXJuZWwvY29udHJvbGxlcnM6IExpbmsgd2l0aCBsaWJmdHMgZXhwbGljaXRseSBvbiBtdXNsCi0KLW11c2wgZG9lcyBub3QgaW1wbGVtZW50IGZ0cyBsaWtlIGdsaWJjIGFuZCB0aGVyZWZvcmUgaXQgZGVwZW5kcyBvbgotZXh0ZXJuYWwgaW1wbGVtZW50YXRpb24gZm9yIGFsbCBmdHMgQVBJcwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvTWFrZWZpbGUuaW5jICAgICAgICB8IDMgKysrCi0gdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9jcHVzZXQvTWFrZWZpbGUuaW5jIHwgMyArKysKLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9NYWtlZmlsZS5pbmMgYi90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL01ha2VmaWxlLmluYwotaW5kZXggNGNhMGI1YS4uMWQ4NWU0ZCAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvTWFrZWZpbGUuaW5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL2NvbnRyb2xsZXJzL01ha2VmaWxlLmluYwotQEAgLTM2LDYgKzM2LDkgQEAgTUFLRV9ERVBTCQk6PSAkKExJQikKLSBDUFBGTEFHUwkJKz0gLUkkKGFic19zcmNkaXIpLy4uLyQoTElCRElSKQotIAotIExERkxBR1MJCQkrPSAtTCQoYWJzX2J1aWxkZGlyKS8uLi8kKExJQkRJUikKLStpZmVxICgkKExJQkMpLG11c2wpCi0rTERMSUJTCQkJKz0gLWxmdHMKLStlbmRpZgotIAotIElOU1RBTExfVEFSR0VUUwkJPz0gKi5zaAotIAotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvY3B1c2V0L01ha2VmaWxlLmluYyBiL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvY3B1c2V0L01ha2VmaWxlLmluYwotaW5kZXggZGI2YTg0My4uODZkZDJhOCAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvY3B1c2V0L01ha2VmaWxlLmluYwotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9jcHVzZXQvTWFrZWZpbGUuaW5jCi1AQCAtNDIsNiArNDIsOSBAQCBNQUtFX0RFUFMJCTo9ICQoTElCQ09OVFJPTExFUlMpICQoTElCQ1BVU0VUKQotIExERkxBR1MJCQkrPSAtTCQoYWJzX2J1aWxkZGlyKS8kKExJQkNQVVNFVF9ESVIpIC1MJChhYnNfYnVpbGRkaXIpLyQoTElCQ09OVFJPTExFUlNfRElSKQotIAotIExETElCUwkJCSs9IC1sY3B1X3NldCAtbGNvbnRyb2xsZXJzIC1sbHRwCi0raWZlcSAoJChMSUJDKSxtdXNsKQotK0xETElCUwkJCSs9IC1sZnRzCi0rZW5kaWYKLSAKLSBJTlNUQUxMX1RBUkdFVFMJCT89ICouc2gKLSAKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAzLUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDAzLUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoCmluZGV4IGMwZjY5ZWMuLmRmM2U4ODMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwMy1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDMtQ2hlY2staWYtX19HTElCQ19QUkVSRVEtaXMtZGVmaW5lZC1iZWZvcmUtdXNpbmctaXQucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDI5Y2U5ZmRhYjNiZDM0ZTY5ZDczYjViODkwNzk1NTU5YzA2NTUzZjcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDFjZTQ3YTZlZDgxMWZkNzhlZDA0ZWEyZjgyZTYzMjFjNmJjYTU3YjYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgogRGF0ZTogVGh1LCA3IEphbiAyMDE2IDE5OjQwOjA4ICswMDAwCiBTdWJqZWN0OiBbUEFUQ0hdIENoZWNrIGlmIF9fR0xJQkNfUFJFUkVRIGlzIGRlZmluZWQgYmVmb3JlIHVzaW5nIGl0CkBAIC0xMCwxNiArMTAsMTcgQEAKIAogU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KKwogLS0tCiAgdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9hY2NlcHQ0L2FjY2VwdDRfMDEuYyB8IDcgKysrKysrKwogIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvYWNjZXB0NC9hY2NlcHQ0XzAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2FjY2VwdDQvYWNjZXB0NF8wMS5jCi1pbmRleCBkZDI4OWNmLi43NmFhOTY5IDEwMDY0NAoraW5kZXggMjllMThmMjdkLi4wNzQ0NGE0NmYgMTAwNjQ0CiAtLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2FjY2VwdDQvYWNjZXB0NF8wMS5jCiArKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2FjY2VwdDQvYWNjZXB0NF8wMS5jCiBAQCAtMzgsNiArMzgsNyBAQAotIHN0YXRpYyBzdHJ1Y3Qgc29ja2FkZHJfaW4gY29ubl9hZGRyOworIHN0YXRpYyBzdHJ1Y3Qgc29ja2FkZHJfaW4gKmNvbm5fYWRkciwgKmFjY2VwdF9hZGRyOwogIHN0YXRpYyBpbnQgbGlzdGVuaW5nX2ZkOwogIAogKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgZGVmaW5lZChfX0dMSUJDX1BSRVJFUSkKQEAgLTM0LDI1ICszNSwyMSBAQAogIAogIHN0YXRpYyBpbnQgY3JlYXRlX2xpc3RlbmluZ19zb2NrZXQodm9pZCkKICB7Ci1AQCAtMTE1LDYgKzExNyw3IEBAIHN0YXRpYyB2b2lkIHZlcmlmeV9hY2NlcHQ0KHVuc2lnbmVkIGludCBucikKLSAJU0FGRV9DT05ORUNUKGNvbm5mZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZjb25uX2FkZHIsIHNpemVvZihjb25uX2FkZHIpKTsKLSAJYWRkcmxlbiA9IHNpemVvZihjbGFkZHIpOworQEAgLTExNCwxMiArMTE2LDE3IEBAIHN0YXRpYyB2b2lkIHZlcmlmeV9hY2NlcHQ0KHVuc2lnbmVkIGludCBucikKKyAJU0FGRV9DT05ORUNUKGNvbm5mZCwgKHN0cnVjdCBzb2NrYWRkciAqKWNvbm5fYWRkciwgc2l6ZW9mKCpjb25uX2FkZHIpKTsKKyAJYWRkcmxlbiA9IHNpemVvZigqYWNjZXB0X2FkZHIpOwogIAogKyNpZiBkZWZpbmVkKF9fR0xJQkNfXykgJiYgZGVmaW5lZChfX0dMSUJDX1BSRVJFUSkKICAjaWYgIShfX0dMSUJDX1BSRVJFUSgyLCAxMCkpCi0gCVRFU1QoYWNjZXB0NF8wMShsaXN0ZW5pbmdfZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKikmY2xhZGRyLCAmYWRkcmxlbiwKKyAJVEVTVChhY2NlcHQ0XzAxKGxpc3RlbmluZ19mZCwgKHN0cnVjdCBzb2NrYWRkciAqKWFjY2VwdF9hZGRyLCAmYWRkcmxlbiwKICAJCQkJdGNhc2UtPmNsb2V4ZWMgfCB0Y2FzZS0+bm9uYmxvY2spKTsKLUBAIC0xMjIsNiArMTI1LDEwIEBAIHN0YXRpYyB2b2lkIHZlcmlmeV9hY2NlcHQ0KHVuc2lnbmVkIGludCBucikKLSAJVEVTVChhY2NlcHQ0KGxpc3RlbmluZ19mZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZjbGFkZHIsICZhZGRybGVuLAorICNlbHNlCisgCVRFU1QoYWNjZXB0NChsaXN0ZW5pbmdfZmQsIChzdHJ1Y3Qgc29ja2FkZHIgKilhY2NlcHRfYWRkciwgJmFkZHJsZW4sCiAgCQkJCXRjYXNlLT5jbG9leGVjIHwgdGNhc2UtPm5vbmJsb2NrKSk7Ci0gI2VuZGlmCisrI2VuZGlmCiArI2Vsc2UKICsJVEVTVChhY2NlcHQ0KGxpc3RlbmluZ19mZCwgKHN0cnVjdCBzb2NrYWRkciAqKSZjbGFkZHIsICZhZGRybGVuLAogKwkJCQl0Y2FzZS0+Y2xvZXhlYyB8IHRjYXNlLT5ub25ibG9jaykpOwotKyNlbmRpZgorICNlbmRpZgogIAlpZiAoVFNUX1JFVCA9PSAtMSkgewogIAkJaWYgKFRTVF9FUlIgPT0gRU5PU1lTKQotIAkJCXRzdF9icmsoVENPTkYsICJzeXNjYWxsIF9fTlJfYWNjZXB0NCBub3Qgc3VwcG9ydGVkIik7Ci0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNi1ydF90Z3NpZ3F1ZXVlaW5mby1kaXNhYmxlLXRlc3Qtb24tbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwNi1ydF90Z3NpZ3F1ZXVlaW5mby1kaXNhYmxlLXRlc3Qtb24tbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODA0ZWRmYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDYtcnRfdGdzaWdxdWV1ZWluZm8tZGlzYWJsZS10ZXN0LW9uLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDYwMDU0Njg2ZTJjMWE0YmVkZjFkNTA3YWY5N2ViYmI3ZmY0OTFlNzcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBUaHUsIDE4IEp1bCAyMDE5IDE1OjIzOjE1ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIHJ0X3Rnc2lncXVldWVpbmZvOiBkaXNhYmxlIHRlc3Qgb24gbXVzbAotCi1GaXggYnVpbGQgZXJyb3Igd2l0aCBtdXNsOgotcnRfdGdzaWdxdWV1ZWluZm8wMS5jOiBJbiBmdW5jdGlvbiAnc2lndXNyMV9oYW5kbGVyJzoKLXJ0X3Rnc2lncXVldWVpbmZvMDEuYzo0MjoyMjogZXJyb3I6ICdzaWdpbmZvX3QnIHtha2EgJ3N0cnVjdCA8YW5vbnltb3VzPid9IGhhcyBubyBtZW1iZXIgbmFtZWQgJ19zaWZpZWxkcyc7IGRpZCB5b3UgbWVhbiAnX19zaV9maWVsZHMnPwotICAgNDIgfCAgc2lndmFsX3JjdiA9IHVpbmZvLT5fc2lmaWVsZHMuX3J0LlNJX1NJR1ZBTC5zaXZhbF9wdHI7Ci0gICAgICB8ICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fgotICAgICAgfCAgICAgICAgICAgICAgICAgICAgICBfX3NpX2ZpZWxkcwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvTWFrZWZpbGUgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL01ha2VmaWxlCi1pbmRleCBkMWJlY2QwLi4xZjNmZjM0IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQotKysrIGIvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9NYWtlZmlsZQotQEAgLTMxLDcgKzMxLDcgQEAgZW5kaWYKLSBpZmVxICgkKExJQkMpLG11c2wpCi0gRklMVEVSX09VVF9ESVJTCSs9IGNvbmZzdHIgZm10bXNnIGdldGNvbnRleHQgaW9jdGwgbWFsbG9wdCBwcm9maWwgXAotIAkJICAgcnRfc2lnc3VzcGVuZCBzZXRkb21haW5uYW1lIHNldGhvc3RuYW1lIHNpZ3N1c3BlbmQgXAotLQkJICAgdXN0YXQKLSsJCSAgIHVzdGF0IHJ0X3Rnc2lncXVldWVpbmZvCi0gZW5kaWYKLSAKLSBpZmVxICgkKFVDTElCQyksMSkKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA4LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDgtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaAppbmRleCBiNDYzMjVlLi4zNTAwOTFhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDgtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMDgtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaApAQCAtMSwzMyArMSwzNCBAQAotRnJvbSBhYTdhOTE4NWEwMzdhZDU5MDEyYmQ0NjcxM2FjMzQwNDU4ZTk1MjA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA0YjdkYjA5NGQ2ZmM1NjU5MDAxYWU4ZGMxNzA3OGJiNjVkNDZiOWM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogPT9VVEYtOD9xP0FuPUMzPUFEYmFsPTIwTGltPUMzPUIzbj89IDxhbmliYWwubGltb25AbGludXguaW50ZWwuY29tPgogRGF0ZTogRnJpLCAxMyBNYXkgMjAxNiAxMToxMToyOCAtMDUwMAotU3ViamVjdDogW1BBVENIXSB0ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvYWNsMS5jOiBTZWN1cml0eSBmaXggb24KLSBzdHJpbmcgcHJpbnRmCitTdWJqZWN0OiBbUEFUQ0hdIGFjbDogU2VjdXJpdHkgZml4IG9uIHN0cmluZyBwcmludGYKIE1JTUUtVmVyc2lvbjogMS4wCiBDb250ZW50LVR5cGU6IHRleHQvcGxhaW47IGNoYXJzZXQ9VVRGLTgKIENvbnRlbnQtVHJhbnNmZXItRW5jb2Rpbmc6IDhiaXQKIAotRml4ZXM6CitGaXhlcyBidWlsZCBlcnJvciB3aGVuIGNvbXBpbGVkIHdpdGggLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHk6CiAKLWFjbDEuYzogSW4gZnVuY3Rpb24gJ3Rlc3RfYWNsX2RlZmF1bHQnOgotYWNsMS5jOjMxNzoyOiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzCi1bLVdlcnJvcj1mb3JtYXQtc2VjdXJpdHldCi0gIHByaW50ZihjbWQpOworYWNsMS5jOiBJbiBmdW5jdGlvbiDigJh0ZXN0X2FjbF9kZWZhdWx04oCZOgorYWNsMS5jOjMwNToyOiBlcnJvcjogZm9ybWF0IG5vdCBhIHN0cmluZyBsaXRlcmFsIGFuZCBubyBmb3JtYXQgYXJndW1lbnRzIFstV2Vycm9yPWZvcm1hdC1zZWN1cml0eV0KKyAgMzA1IHwgIHByaW50ZihjbWQpOworCitQYXRjaCB0YWtlbiBmcm9tIG9wZW5lbWJlZGRlZC1jb3JlLAorb3JpZ2luYWwgYnVnIHJlcG9ydDogaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnLzk1NDgKIAogW1lPQ1RPICM5NTQ4XQogCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQogU2lnbmVkLW9mZi1ieTogQW7DrWJhbCBMaW3Ds24gPGFuaWJhbC5saW1vbkBsaW51eC5pbnRlbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBQZXRyIFZvcmVsIDxwdm9yZWxAc3VzZS5jej4KK1Vwc3RyZWFtLVN0YXR1czogYWNjZXB0ZWQgaW4gNGI3ZGIwOTRkNmZjNTY1OTAwMWFlOGRjMTcwNzhiYjY1ZDQ2YjljOQogLS0tCiAgdGVzdGNhc2VzL25ldHdvcmsvbmZzdjQvYWNsL2FjbDEuYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3Rlc3RjYXNlcy9uZXR3b3JrL25mc3Y0L2FjbC9hY2wxLmMgYi90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvYWNsMS5jCi1pbmRleCBiZGYwMTgwLi44OThiN2NhIDEwMDY0NAoraW5kZXggYWFlOTQ4NGU1Li5hZDc3OGNkMzMgMTAwNjQ0CiAtLS0gYS90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvYWNsMS5jCiArKysgYi90ZXN0Y2FzZXMvbmV0d29yay9uZnN2NC9hY2wvYWNsMS5jCi1AQCAtMzAzLDcgKzMwMyw3IEBAIHZvaWQgdGVzdF9hY2xfZGVmYXVsdChjaGFyICpkaXIsIGFjbF90IGFjbCkKK0BAIC0zMDIsNyArMzAyLDcgQEAgdm9pZCB0ZXN0X2FjbF9kZWZhdWx0KGNoYXIgKmRpciwgYWNsX3QgYWNsKQogIAljaGFyICpjbWQgPSBtYWxsb2MoMjU2KTsKICAKICAJc3RyY3B5KGNtZCwgImNobW9kIDc3NzcgIik7CkBAIC0zNyw1ICszOCw1IEBACiAgCXN5c3RlbShjbWQpOwogIAlhY2wyID0gYWNsX2dldF9maWxlKHBhdGgsIEFDTF9UWVBFX0FDQ0VTUyk7CiAtLSAKLTIuNy40CisyLjI1LjEKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA5LW9wZW5fcG9zaXhfdGVzdHN1aXRlLW1tYXAyNC0yLVJlbGF4LWNvbmRpdGlvbi1hLWJpdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAwOS1vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS1tbWFwMjQtMi1SZWxheC1jb25kaXRpb24tYS1iaXQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQzMmFjMWQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDA5LW9wZW5fcG9zaXhfdGVzdHN1aXRlLW1tYXAyNC0yLVJlbGF4LWNvbmRpdGlvbi1hLWJpdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY4ICswLDAgQEAKLUZyb20gYTg3MTVhMTQ0NjMwNWZmZDc2NDA2ZjYzYzdmMTYwYzEzYTViMmU3MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJIb25nemhpLlNvbmciIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IFdlZCwgMTAgT2N0IDIwMTggMjI6MDc6MDUgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gb3Blbl9wb3NpeF90ZXN0c3VpdGUvbW1hcDI0LTI6IFJlbGF4IGNvbmRpdGlvbiBhIGJpdAotCi1NaXBzIHdpbGwgcmV0dXJuIEVJTlZBTCBpbnN0ZWFkIG9mIEVOT01FTSBhcyBleHBlY3RlZAotaWYgdGhlIHJhbmdlIFthZGRyICsgbGVuKSBleGNlZWRzIFRBU0tfU0laRS4KLQotTGludXgga2VybmVsIGNvZGU6IGFyY2gvbWlwcy9tbS9tbWFwLmMKLWlmIChmbGFncyAmIE1BUF9GSVhFRCkgewotICAgIC8qIEV2ZW4gTUFQX0ZJWEVEIG1hcHBpbmdzIG11c3QgcmVzaWRlIHdpdGhpbiBUQVNLX1NJWkUgKi8KLSAgICBpZiAoVEFTS19TSVpFIC0gbGVuIDwgYWRkcikKLSAgICAgICAgcmV0dXJuIC1FSU5WQUw7Ci0KLVJlbGF4IHRoZSBjb25kaXRpb24gYW5kIGFjY2VwdCBib3RoIEVOT01FTSBhbmQgRUlOVkFMCi1hcyBleHBlY3RlZCBvdXRjb21lLgotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy5saW51eC5pdC9waXBlcm1haWwvbHRwLzIwMTgtT2N0b2Jlci8wMDk2MjQuaHRtbF0KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3poaS5Tb25nIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIC4uLi9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS9pbnRlcmZhY2VzL21tYXAvMjQtMi5jICAgIHwgMTAgKysrKystLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvY29uZm9ybWFuY2UvaW50ZXJmYWNlcy9tbWFwLzI0LTIuYyBiL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS9pbnRlcmZhY2VzL21tYXAvMjQtMi5jCi1pbmRleCA5Y2Y4M2Q5Li41NTA5MGE2IDEwMDY0NAotLS0tIGEvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2NvbmZvcm1hbmNlL2ludGVyZmFjZXMvbW1hcC8yNC0yLmMKLSsrKyBiL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS9pbnRlcmZhY2VzL21tYXAvMjQtMi5jCi1AQCAtNyw3ICs3LDcgQEAKLSAgKiBzb3VyY2UgdHJlZS4KLSAgKgotICAqIFRoZSBtbWFwKCkgZnVuY3Rpb24gc2hhbGwgZmFpbCBpZjoKLS0gKiBbRU5PTUVNXSBNQVBfRklYRUQgd2FzIHNwZWNpZmllZCwKLSsgKiBbRU5PTUVNIG9yIEVJTlZBTF0gTUFQX0ZJWEVEIHdhcyBzcGVjaWZpZWQsCi0gICogYW5kIHRoZSByYW5nZSBbYWRkcixhZGRyK2xlbikgZXhjZWVkcyB0aGF0IGFsbG93ZWQKLSAgKiBmb3IgdGhlIGFkZHJlc3Mgc3BhY2Ugb2YgYSBwcm9jZXNzOyBvciwgaWYgTUFQX0ZJWEVEIHdhcyBub3Qgc3BlY2lmaWVkIGFuZAotICAqIHRoZXJlIGlzIGluc3VmZmljaWVudCByb29tIGluIHRoZSBhZGRyZXNzIHNwYWNlIHRvIGVmZmVjdCB0aGUgbWFwcGluZy4KLUBAIC0xNSw3ICsxNSw3IEBACi0gICogVGVzdCBTdGVwOgotICAqIDEuIE1hcCBhIHNoYXJlZCBtZW1vcnkgb2JqZWN0LCB3aXRoIHNpemUgZXhjZWVkaW5nIHRoZSB2YWx1ZSBnZXQgZnJvbQotICAqICAgIHJsaW1fY3VyIG9mIHJlc291cmNlIFJMSU1JVF9BUywgc2V0dGluZyBNQVBfRklYRUQ7Ci0tICogMy4gU2hvdWxkIGdldCBFTk9NRU0uCi0rICogMy4gU2hvdWxkIGdldCBFTk9NRU0gb3IgRUlOVkFMLgotICAqLwotIAotICNpbmNsdWRlIDxzdGRpby5oPgotQEAgLTkyLDggKzkyLDggQEAgaW50IG1haW4odm9pZCkKLSAJICAgICAgICh1bnNpZ25lZCBsb25nKWxlbik7Ci0gCXBhID0gbW1hcChhZGRyLCBsZW4sIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsIE1BUF9GSVhFRCB8IE1BUF9TSEFSRUQsIGZkLAotIAkJICAwKTsKLS0JaWYgKHBhID09IE1BUF9GQUlMRUQgJiYgZXJybm8gPT0gRU5PTUVNKSB7Ci0tCQlwcmludGYoIkdvdCBFTk9NRU06ICVzXG5UZXN0IFBBU1NFRFxuIiwgc3RyZXJyb3IoZXJybm8pKTsKLSsJaWYgKHBhID09IE1BUF9GQUlMRUQgJiYgKGVycm5vID09IEVOT01FTSB8fCBlcnJubyA9PSBFSU5WQUwpKSB7Ci0rCQlwcmludGYoIkdvdCBFTk9NRU0gb3IgRUlOVkFMOiAlc1xuVGVzdCBQQVNTRURcbiIsIHN0cmVycm9yKGVycm5vKSk7Ci0gCQlleGl0KFBUU19QQVNTKTsKLSAJfQotIAotQEAgLTEwMiw2ICsxMDIsNiBAQCBpbnQgbWFpbih2b2lkKQotIAllbHNlCi0gCQltdW5tYXAocGEsIGxlbik7Ci0gCWNsb3NlKGZkKTsKLS0JcHJpbnRmKCJUZXN0IEZhaWw6IERpZCBub3QgZ2V0IEVOT01FTSBhcyBleHBlY3RlZFxuIik7Ci0rCXByaW50ZigiVGVzdCBGYWlsZWQ6IERpZCBub3QgZ2V0IEVOT01FTSBvciBFSU5WQUwgYXMgZXhwZWN0ZWRcbiIpOwotIAlyZXR1cm4gUFRTX0ZBSUw7Ci0gfQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTAtc2htY3RsMDEtZG9uLXQtdXNlLWhhcmRjb2RlZC1pbmRleC0wLWZvci1TSE1fU1RBVC10ZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMC1zaG1jdGwwMS1kb24tdC11c2UtaGFyZGNvZGVkLWluZGV4LTAtZm9yLVNITV9TVEFULXRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4NzA0ZTVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMC1zaG1jdGwwMS1kb24tdC11c2UtaGFyZGNvZGVkLWluZGV4LTAtZm9yLVNITV9TVEFULXRlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODIgKzAsMCBAQAotRnJvbSA3OTQ5MzNiMzgzNTRhMjYxMmNmMmM0NzFmMTE3OThiMzA2ZjM1MzE1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1EYXRlOiBNb24sIDIwIE1heSAyMDE5IDIwOjQ3OjIwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIHNobWN0bDAxOiBkb24ndCB1c2UgaGFyZGNvZGVkIGluZGV4ID09IDAgZm9yIFNITV9TVEFUIHRlc3QKLQotVGVzdCBmYWlscyBvbiBTSE1fU1RBVCB0ZXN0Y2FzZToKLSAgIHNobWN0bDAxICAgIDUgIFRGQUlMICA6ICBzaG1jdGwwMS5jOjE3Mzogc2htY3RsMDEgY2FsbCBmYWlsZWQKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBlcnJubyA9IDIyIDogSW52YWxpZCBhcmd1bWVudAotICAgc2htY3RsKDAsIFNITV9TVEFULCAweDYwMTA2MCkgICAgICAgICAgID0gLUVJTlZBTAotCi1zaW5jZSBmb2xsb3dpbmcgY29tbWl0OgotICAgY29tbWl0IDk5ZGI0NmVhMjkyNzgwY2Q5NzhkNTY5MzJkOTQ0NWIxZThiZGFmZTgKLSAgIEF1dGhvcjogTWFuZnJlZCBTcHJhdWwgPG1hbmZyZWRAY29sb3JmdWxsaWZlLmNvbT4KLSAgIERhdGU6ICAgVHVlIE1heSAxNCAxNTo0NjozNiAyMDE5IC0wNzAwCi0gICAgIGlwYzogZG8gY3ljbGljIGlkIGFsbG9jYXRpb24gZm9yIHRoZSBpcGMgb2JqZWN0LgotCi1Eb24ndCByZWx5IG9uIGluZGV4IDAgYmVpbmcgYWx3YXlzIGF2YWlsYWJsZSwgYnV0IGluc3RlYWQKLXVzZSAobWF4aW11bSkgaW5kZXggcmV0dXJuZWQgYnkgU0hNX0lORk8uCi0KLVNpZ25lZC1vZmYtYnk6IEphbiBTdGFuY2VrIDxqc3RhbmNla0ByZWRoYXQuY29tPgotUmV2aWV3ZWQtYnk6IFBldHIgVm9yZWwgPHB2b3JlbEBzdXNlLmN6PgotQWNrZWQtYnk6IEN5cmlsIEhydWJpcyA8Y2hydWJpc0BzdXNlLmN6PgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1baHR0cHM6Ly9naXRodWIuY29tL2xpbnV4LXRlc3QtcHJvamVjdC9sdHAvY29tbWl0L2RiMGE0M2Q5Mzg4YmUyYzM0N2E4MzA2NzUxYmJlNmJlYzA4NmQwNjJdCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd6aGkgU29uZyA8aG9uZ3poaS5zb25nQHdpbmRyaXZlci5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2lwYy9zaG1jdGwvc2htY3RsMDEuYyB8IDIxICsrKysrKysrKysrKysrKysrKy0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxOCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9pcGMvc2htY3RsL3NobWN0bDAxLmMgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2lwYy9zaG1jdGwvc2htY3RsMDEuYwotaW5kZXggMWI0Njk3Ny4uNTJiZjIzYSAxMDA2NDQKLS0tLSBhL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvaXBjL3NobWN0bC9zaG1jdGwwMS5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2lwYy9zaG1jdGwvc2htY3RsMDEuYwotQEAgLTc5LDYgKzc5LDcgQEAgc3RhdGljIHZvaWQgZnVuY19pbmZvKGludCByZXQpOwotIAotIC8qIENoZWNrIHJvdXRpbmUgZm9yIFNITV9TVEFUICovCi0gc3RhdGljIHZvaWQgZnVuY19zc3RhdChpbnQgcmV0KTsKLStzdGF0aWMgdm9pZCBmdW5jX3NzdGF0X3NldHVwKHZvaWQpOwotIAotIC8qIENoZWNrIHJvdXRpbmUgZm9yIFNITV9MT0NLICovCi0gc3RhdGljIHZvaWQgZnVuY19sb2NrKGludCByZXQpOwotQEAgLTExMCw3ICsxMTEsNyBAQCBzdGF0aWMgc3RydWN0IHRlc3RfY2FzZV90IHsKLSAjZW5kaWYKLSAJeyZzaG1faWRfMSwgSVBDX1NFVCwgJmJ1ZiwgZnVuY19zZXQsIHNldF9zZXR1cH0sCi0gCXsmc2htX2lkXzEsIElQQ19JTkZPLCAoc3RydWN0IHNobWlkX2RzICopICZpbmZvLCBmdW5jX2luZm8sIE5VTEx9LAotLQl7JnNobV9pbmRleCwgU0hNX1NUQVQsICZidWYsIGZ1bmNfc3N0YXQsIE5VTEx9LAotKwl7JnNobV9pbmRleCwgU0hNX1NUQVQsICZidWYsIGZ1bmNfc3N0YXQsIGZ1bmNfc3N0YXRfc2V0dXB9LAotIAl7JnNobV9pZF8xLCBTSE1fTE9DSywgTlVMTCwgZnVuY19sb2NrLCBOVUxMfSwKLSAJeyZzaG1faWRfMSwgU0hNX1VOTE9DSywgTlVMTCwgZnVuY191bmxvY2ssIE5VTEx9LAotIAl7JnNobV9pZF8xLCBJUENfUk1JRCwgTlVMTCwgZnVuY19ybWlkLCBOVUxMfSwKLUBAIC00MDcsOSArNDA4LDIzIEBAIHN0YXRpYyB2b2lkIGZ1bmNfaW5mbyhpbnQgcmV0KQotIHN0YXRpYyB2b2lkIGZ1bmNfc3N0YXQoaW50IHJldCkKLSB7Ci0gCWlmIChyZXQgPj0gMCkKLS0JCXRzdF9yZXNtKFRQQVNTLCAiZ2V0IGNvcnJlY3Qgc2hhcmVkIG1lbW9yeSBpZCIpOwotKwkJdHN0X3Jlc20oVFBBU1MsICJnZXQgY29ycmVjdCBzaGFyZWQgbWVtb3J5IGlkIGZvciBpbmRleDogJWQiLAotKwkJCXNobV9pbmRleCk7Ci0gCWVsc2UKLS0JCXRzdF9yZXNtKFRGQUlMLCAic2hhcmVkIG1lbW9yeSBpZCBpcyBpbmNvcnJlY3QiKTsKLSsJCXRzdF9yZXNtKFRGQUlMLCAic2hhcmVkIG1lbW9yeSBpZCBpcyBpbmNvcnJlY3QsIGluZGV4OiAlZCIsCi0rCQkJc2htX2luZGV4KTsKLSt9Ci0rCi0rc3RhdGljIHZvaWQgZnVuY19zc3RhdF9zZXR1cCh2b2lkKQotK3sKLSsJc3RydWN0IHNobV9pbmZvIHRtcDsKLSsJaW50IHJldDsKLSsKLSsJcmV0ID0gc2htY3RsKHNobV9pZF8xLCBTSE1fSU5GTywgKHZvaWQgKikmdG1wKTsKLSsJaWYgKHJldCA8IDApCi0rCQl0c3RfcmVzbShURkFJTHxURVJSTk8sICJzaG1jdGwoU0hNX0lORk8pIik7Ci0rCWVsc2UKLSsJCXNobV9pbmRleCA9IHJldDsKLSB9Ci0gCi0gc3RhdGljIHZvaWQgZnVuY19sb2NrKGludCByZXQpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMS1kaXJlY3RfaW8tZGlvdGVzdDQtZHJvcC1NQVBfRklYRUQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTEtZGlyZWN0X2lvLWRpb3Rlc3Q0LWRyb3AtTUFQX0ZJWEVELnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5Y2QxODhmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL2x0cC9sdHAvMDAxMS1kaXJlY3RfaW8tZGlvdGVzdDQtZHJvcC1NQVBfRklYRUQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1Gcm9tIGYyMTBkN2UxOWI3MjEwNDFmMzFiN2YyNThhMTY5Zjg5ZGM4NTAzMDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KLURhdGU6IFRodSwgNCBKdWwgMjAxOSAxNjo0NToyMyArMDIwMAotU3ViamVjdDogW1BBVENIXSBkaXJlY3RfaW8vZGlvdGVzdDQ6IGRyb3AgTUFQX0ZJWEVECi0KLUhvbmd6aGkgcmVwb3J0cyB0aGF0IHRoaXMgdGVzdCBpcyBmYWlsaW5nIG9uIG1pcHM2NCB3aXRoIDUuMSs6Ci0gIGRpb3Rlc3Q0IDEwIFRCUk9LIDogZGlvdGVzdDQuYzozNjg6IGNhbid0IG1tYXAgZmlsZTogSW52YWxpZCBhcmd1bWVudAotICBkaW90ZXN0NCAxMSBUQlJPSyA6IGRpb3Rlc3Q0LmM6MzY4OiBSZW1haW5pbmcgY2FzZXMgYnJva2VuCi1JIGNvdWxkIHJlcHJvZHVjZSBpdCBvbiBlbXVsYXRlZCA1a2MtbWFsdGEsIHJ1bm5pbmcgNS4yLjAtcmM3LgotCi1UZXN0IGlzIHRyeWluZyB0byBtYXAgaW50byBhcmVhIGltbWVkaWF0ZWx5IGZvbGxvd2luZyBoZWFwIGFzIE1BUF9TSEFSRUQsCi1idXQgaXQgdXNlZCB3cm9uZyBhbGlnbm1lbnQgKGZpeGVkIGJ5ICdsYXBpL21tYXAuaDogaW5jbHVkZSBjb25maWcuaCcpLgotCi1Vc2FnZSBvZiBNQVBfRklYRUQgc2VlbXMgdW5uZWNlc3NhcnksIHNvIGRyb3AgdGhhdCB0b28gYW5kIGxldCB0aGUga2VybmVsCi1waWNrIGFuIGFkZHJlc3MuCi0KLVJlcG9ydGVkLWJ5OiBIb25nemhpLlNvbmcgPGhvbmd6aGkuc29uZ0B3aW5kcml2ZXIuY29tPgotU2lnbmVkLW9mZi1ieTogSmFuIFN0YW5jZWsgPGpzdGFuY2VrQHJlZGhhdC5jb20+Ci1BY2tlZC1ieTogQ3lyaWwgSHJ1YmlzIDxjaHJ1YmlzQHN1c2UuY3o+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9jb21taXQvZjU0NDRlZWVhYmYyNTJiODg4NGI5NDY1ZDI3N2I2YWY4NTM4MTllM10KLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gdGVzdGNhc2VzL2tlcm5lbC9pby9kaXJlY3RfaW8vZGlvdGVzdDQuYyB8IDggKystLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9pby9kaXJlY3RfaW8vZGlvdGVzdDQuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvaW8vZGlyZWN0X2lvL2Rpb3Rlc3Q0LmMKLWluZGV4IGU0NjE2ZTQuLmJmMjAwY2QgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL2lvL2RpcmVjdF9pby9kaW90ZXN0NC5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL2lvL2RpcmVjdF9pby9kaW90ZXN0NC5jCi1AQCAtMzUyLDE4ICszNTIsMTQgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKLSAJdG90YWwrKzsKLSAKLSAJLyogVGVzdC0xMDogcmVhZCwgd3JpdGUgdG8gYSBtbWFwZWQgZmlsZSAqLwotLQlzaG1fYmFzZSA9IChjaGFyICopKCgobG9uZylzYnJrKDApICsgKHNobXN6IC0gMSkpICYgfihzaG1zeiAtIDEpKTsKLS0JaWYgKHNobV9iYXNlID09IE5VTEwpIHsKLS0JCXRzdF9icmttKFRCUk9LLCBjbGVhbnVwLCAic2JyayBmYWlsZWQ6ICVzIiwgc3RyZXJyb3IoZXJybm8pKTsKLS0JfQotIAlvZmZzZXQgPSA0MDk2OwotIAljb3VudCA9IGJ1ZnNpemU7Ci0gCWlmICgoZmQgPSBvcGVuKGZpbGVuYW1lLCBPX0RJUkVDVCB8IE9fUkRXUikpIDwgMCkgewotIAkJdHN0X2Jya20oVEJST0ssIGNsZWFudXAsICJjYW4ndCBvcGVuICVzOiAlcyIsCi0gCQkJIGZpbGVuYW1lLCBzdHJlcnJvcihlcnJubykpOwotIAl9Ci0tCXNobV9iYXNlID0gbW1hcChzaG1fYmFzZSwgMHgxMDAwMDAsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCi0tCQkJTUFQX1NIQVJFRCB8IE1BUF9GSVhFRCwgZmQsIDApOwotKwlzaG1fYmFzZSA9IG1tYXAoMCwgMHgxMDAwMDAsIFBST1RfUkVBRCB8IFBST1RfV1JJVEUsCi0rCQkJTUFQX1NIQVJFRCwgZmQsIDApOwotIAlpZiAoc2htX2Jhc2UgPT0gKGNhZGRyX3QpIC0gMSkgewotIAkJdHN0X2Jya20oVEJST0ssIGNsZWFudXAsICJjYW4ndCBtbWFwIGZpbGU6ICVzIiwKLSAJCQkgc3RyZXJyb3IoZXJybm8pKTsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cC8wMDEyLWdldHJsaW1pdDAzLWFkanVzdC1hLWJpdC1vZi1jb2RlLXRvLWNvbXBhdGlhYmxlLXdpdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTItZ2V0cmxpbWl0MDMtYWRqdXN0LWEtYml0LW9mLWNvZGUtdG8tY29tcGF0aWFibGUtd2l0aC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWVjYmM4MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwLzAwMTItZ2V0cmxpbWl0MDMtYWRqdXN0LWEtYml0LW9mLWNvZGUtdG8tY29tcGF0aWFibGUtd2l0aC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY0ICswLDAgQEAKLUZyb20gNGFjNzQ3YzFmN2ZmOGUyZWMyNTY3ZDY2NzI4MjJlOTVhOWI1NmU1NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJIb25nemhpLlNvbmciIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMTUgSnVsIDIwMTkgMDM6Mzk6MDYgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gZ2V0cmxpbWl0MDM6IGFkanVzdCBhIGJpdCBvZiBjb2RlIHRvIGNvbXBhdGlhYmxlIHdpdGggbWlwczMyCi0KLUVycm9yIGluZm86Ci1nZXRybGltaXQwMy5jOjEwNDogRkFJTDogX19OUl9wcmxpbWl0NjQoMCkgaGFkIHJsaW1fY3VyID0KLWZmZmZmZmZmZmZmZmZmZmYgYnV0IF9fTlJfZ2V0cmxpbWl0KDApIGhhZCBybGltX2N1ciA9IDdmZmZmZmZmCi0KLUFjY29yZGluZyB0byBrZXJuZWwgY29kZTogW2FyY2gvbWlwcy9pbmNsdWRlL3VhcGkvYXNtL3Jlc291cmNlLmhdCi1STElNX0lORklOSVRZIGlzIHNldCB0byAweDdmZmZmZmZmVUwgaW5zdGVhZCBvZiBVTE9OR19NQVggb24gbWlwczMyLgotCi0gLyoKLSAqIFN1UyBzYXlzIGxpbWl0cyBoYXZlIHRvIGJlIHVuc2lnbmVkLgotICogV2hpY2ggbWFrZXMgYSB0b24gbW9yZSBzZW5zZSBhbnl3YXksCi0gKiBidXQgd2Uga2VlcCB0aGUgb2xkIHZhbHVlIG9uIE1JUFMzMiwKLSAqIGZvciBjb21wYXRpYmlsaXR5OgotICovCi0gI2lmbmRlZiBfX21pcHM2NAotICMgZGVmaW5lIFJMSU1fSU5GSU5JVFkgICAgICAweDdmZmZmZmZmVUwKLSAjZW5kaWYKLQotQWRkaW5nIGNvbmRpdGlvbmFsIHN0YXRlbWVudCBhYm91dCBtaXBzIHRvIGZpeCB0aGlzLgotCi1TaWduZWQtb2ZmLWJ5OiBKYW4gU3RhbmNlayA8anN0YW5jZWtAcmVkaGF0LmNvbT4KLVNpZ25lZC1vZmYtYnk6IEhvbmd6aGkuU29uZyA8aG9uZ3poaS5zb25nQHdpbmRyaXZlci5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC9jb21taXQvN2EzYmNhNjNjZDdmMDU5ZDQ5MGI2Mjc0ZjBmZGYzMjQ3YmU5M2ZkZV0KLQotU2lnbmVkLW9mZi1ieTogSG9uZ3poaS5Tb25nIDxob25nemhpLnNvbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0cmxpbWl0L2dldHJsaW1pdDAzLmMgfCA4ICsrKysrKystCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdGNhc2VzL2tlcm5lbC9zeXNjYWxscy9nZXRybGltaXQvZ2V0cmxpbWl0MDMuYyBiL3Rlc3RjYXNlcy9rZXJuZWwvc3lzY2FsbHMvZ2V0cmxpbWl0L2dldHJsaW1pdDAzLmMKLWluZGV4IGU0ZDU2YzQuLjMxOWJjNDkgMTAwNjQ0Ci0tLS0gYS90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldHJsaW1pdC9nZXRybGltaXQwMy5jCi0rKysgYi90ZXN0Y2FzZXMva2VybmVsL3N5c2NhbGxzL2dldHJsaW1pdC9nZXRybGltaXQwMy5jCi1AQCAtMjYsNiArMjYsNyBAQAotIAotICNpbmNsdWRlICJ0c3RfdGVzdC5oIgotICNpbmNsdWRlICJsYXBpL3N5c2NhbGxzLmgiCi0rI2luY2x1ZGUgImxhcGkvYWJpc2l6ZS5oIgotIAotIC8qKgotICAqIExpbnV4IHByb3ZpZGVzIGFuICJvbGQiIGdldHJsaW1pdCBzeXNjYWxsIGhhbmRsZXIgdGhhdCB1c2VzIHNpZ25lZCBsb25nLAotQEAgLTYxLDcgKzYyLDEyIEBAIHN0cnVjdCBybGltaXRfdWxvbmcgewotIAl1bnNpZ25lZCBsb25nIHJsaW1fY3VyOwotIAl1bnNpZ25lZCBsb25nIHJsaW1fbWF4OwotIH07Ci0tY29uc3QgdW5zaWduZWQgbG9uZyBSTElNX0lORklOSVRZX1VMID0gVUxPTkdfTUFYOwotKwotKyNpZiBkZWZpbmVkKF9fbWlwc19fKSAmJiBkZWZpbmVkKFRTVF9BQkkzMikKLSsJY29uc3QgdW5zaWduZWQgbG9uZyBSTElNX0lORklOSVRZX1VMID0gMHg3ZmZmZmZmZlVMOwotKyNlbHNlCi0rCWNvbnN0IHVuc2lnbmVkIGxvbmcgUkxJTV9JTkZJTklUWV9VTCA9IFVMT05HX01BWDsKLSsjZW5kaWYKLSAKLSBzdGF0aWMgaW50IGdldHJsaW1pdF91bG9uZyhpbnQgcmVzb3VyY2UsIHN0cnVjdCBybGltaXRfdWxvbmcgKnJsaW0pCi0gewotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTkwNTE3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDE5MDUxNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdhYTk2Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMTkwNTE3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTI0ICswLDAgQEAKLVNVTU1BUlkgPSAiTGludXggVGVzdCBQcm9qZWN0IgotREVTQ1JJUFRJT04gPSAiVGhlIExpbnV4IFRlc3QgUHJvamVjdCBpcyBhIGpvaW50IHByb2plY3Qgd2l0aCBTR0ksIElCTSwgT1NETCwgYW5kIEJ1bGwgd2l0aCBhIGdvYWwgdG8gZGVsaXZlciB0ZXN0IHN1aXRlcyB0byB0aGUgb3BlbiBzb3VyY2UgY29tbXVuaXR5IHRoYXQgdmFsaWRhdGUgdGhlIHJlbGlhYmlsaXR5LCByb2J1c3RuZXNzLCBhbmQgc3RhYmlsaXR5IG9mIExpbnV4LiBUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgY29sbGVjdGlvbiBvZiB0b29scyBmb3IgdGVzdGluZyB0aGUgTGludXgga2VybmVsIGFuZCByZWxhdGVkIGZlYXR1cmVzLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vbGludXgtdGVzdC1wcm9qZWN0LmdpdGh1Yi5pby8iCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyICYgR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyAmIEJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiXAotICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9DT1BZSU5HO21kNT0wNjM2ZTczZmYwMjE1ZThkNjcyZGM0YzMyYzMxN2JiMyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvY29udHJvbGxlcnMvZnJlZXplci9ydW5fZnJlZXplci5zaDtiZWdpbmxpbmU9NTtlbmRsaW5lPTE3O21kNT04NmE2MWQyYzA0MmQ1OTgzNmZmYjM1M2EyMTQ1NjQ5OCBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9tZW1vcnlfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9rZXJuZWwvaG90cGx1Zy9jcHVfaG90cGx1Zy9DT1BZSU5HO21kNT1lMDRhMmU1NDJiMmI4NjI5YmY5Y2QyYmEyOWIwZmU0MSBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9DT1BZSU5HO21kNT00OGIxYzVlYzYzM2UzZTMwZWMyY2Y4ODRhZTY5OTk0NyBcCi0gICAgZmlsZTovL3Rlc3RjYXNlcy9yZWFsdGltZS9DT1BZSU5HO21kNT0xMmY4ODRkMmFlMWZmODdjMDllNWI3Y2NjMmM0Y2E3ZSBcCi0gICAgZmlsZTovL3V0aWxzL2JlbmNobWFyay9rZXJuYmVuY2gtMC40Mi9DT1BZSU5HO21kNT05NGQ1NWQ1MTJhOWJhMzZjYWE5YjdkZjA3OWJhZTE5ZiBcCi0gICAgZmlsZTovL3V0aWxzL2Zmc2ItNi4wLXJjMi9DT1BZSU5HO21kNT1jNDYwODIxNjdhMzE0ZDc4NWQwMTJhMjQ0NzQ4ZDgwMyBcCi0iCi0KLURFUEVORFMgPSAiYXR0ciBsaWJhaW8gbGliY2FwIGFjbCBvcGVuc3NsIHppcC1uYXRpdmUiCi1ERVBFTkRTX2FwcGVuZF9saWJjLW11c2wgPSAiIGZ0cyAiCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2xpYmMtbXVzbCA9ICIgTElCQz1tdXNsICIKLQotIyBzaW5jZSBsdHAgY29udGFpbnMgeDg2LTY0IGFzc2VtYmxlciB3aGljaCB1c2VzIHRoZSBmcmFtZS1wb2ludGVyIHJlZ2lzdGVyLAotIyBzZXQgLWZvbWl0LWZyYW1lLXBvaW50ZXIgeDg2LTY0IHRvIGhhbmRsZSBjYXNlcyB3aGVyZSBvcHRpbWlzYXRpb24KLSMgaXMgc2V0IHRvIC1PMCBvciBmcmFtZSBwb2ludGVycyBoYXZlIGJlZW4gZW5hYmxlZCBieSAtZm5vLW9taXQtZnJhbWUtcG9pbnRlcgotIyBlYXJsaWVyIGluIENGTEFHUywgZXRjLgotQ0ZMQUdTX2FwcGVuZF94ODYtNjQgPSAiIC1mb21pdC1mcmFtZS1wb2ludGVyIgotCi1DRkxBR1NfYXBwZW5kX3Bvd2VycGM2NCA9ICIgLURfX1NBTkVfVVNFUlNQQUNFX1RZUEVTX18iCi1DRkxBR1NfYXBwZW5kX21pcHNhcmNobjY0ID0gIiAtRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXyIKLVNSQ1JFViA9ICJhYzMzZWY4N2YwYjlkYzU2NTMzMDI2NDM1YmUzZWE4YzY3Y2U4NmQyIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vbGludXgtdGVzdC1wcm9qZWN0L2x0cC5naXQgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1idWlsZC1BZGQtb3B0aW9uLXRvLXNlbGVjdC1saWJjLWltcGxlbWVudGF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDIta2VybmVsLWNvbnRyb2xsZXJzLUxpbmstd2l0aC1saWJmdHMtZXhwbGljaXRseS1vbi1tdS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLUNoZWNrLWlmLV9fR0xJQkNfUFJFUkVRLWlzLWRlZmluZWQtYmVmb3JlLXVzaW5nLWl0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDQtZ3VhcmQtbWFsbG9jb3B0LXdpdGgtX19HTElCQ19fLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDYtcnRfdGdzaWdxdWV1ZWluZm8tZGlzYWJsZS10ZXN0LW9uLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNy1GaXgtdGVzdF9wcm9jX2tpbGwtaGFuZ2luZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA4LXRlc3RjYXNlcy1uZXR3b3JrLW5mc3Y0LWFjbC1hY2wxLmMtU2VjdXJpdHktZml4LW9uLXMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwOS1vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS1tbWFwMjQtMi1SZWxheC1jb25kaXRpb24tYS1iaXQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAxMC1zaG1jdGwwMS1kb24tdC11c2UtaGFyZGNvZGVkLWluZGV4LTAtZm9yLVNITV9TVEFULXRlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTEtZGlyZWN0X2lvLWRpb3Rlc3Q0LWRyb3AtTUFQX0ZJWEVELnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMTItZ2V0cmxpbWl0MDMtYWRqdXN0LWEtYml0LW9mLWNvZGUtdG8tY29tcGF0aWFibGUtd2l0aC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1jb25maWd1cmUtdGltZS1jaGVjay1mb3ItZ2V0ZGVudHMtZ2V0ZGVudHM2NC1BUEkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1jaGVjay1mb3ItUkVTX1VTRV9JTkVUNi1kdXJpbmctY29uZmlndXJlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc3lzY2FsbHMtdGdraWxsMDMtd2FpdC1mb3ItZGVmdW5jdC10aWQtdG8tZ2V0LWRldGFjaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXVzdGF0MDItRml4LUVGQVVMVC1pbi0zMmJpdC1jb21wYXRpYmlsaXR5LW1vZGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jdmUtbWVsdGRvd24uYy1GaXgta2VybmVsLXN5bWJvbC1maW5kaW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdGNhc2VzLXVzZS1weXRob24zLWV2ZXJ5d2hlcmUtdG8tcnVuLXB5dGhvbi1zY3JpcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXN5c2NhbGwtcnRfc2lndGltZWR3YWl0MDEtRml4LXdyb25nLXNpZ3NldC1sZW5ndGgtZm8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jdmUtMjAxNy0xNzA1Mi1Bdm9pZC11bnNhZmUtZXhpdHMtaW4tdGhyZWFkcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW92ZXJjb21taXRfbWVtb3J5LXVwZGF0ZS1mb3ItbW0tZml4LWZhbHNlLXBvc2l0aXZlLU8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1ta3N3YXAwMS5zaC1BZGQtdWRldmFkbS10cmlnZ2VyLWJlZm9yZS1zd2FwLXZlcmlmaWNhLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWV4cG9ydCBwcmVmaXggPSAiL29wdC9sdHAiCi1leHBvcnQgZXhlY19wcmVmaXggPSAiL29wdC9sdHAiCi0KLVBBQ0tBR0VDT05GSUdbbnVtYV0gPSAiLS13aXRoLW51bWEsIC0td2l0aG91dC1udW1hLCBudW1hY3RsLCIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vdGVzdGNhc2VzL3JlYWx0aW1lL200IgotRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcG93ZXItbWFuYWdlbWVudC10ZXN0c3VpdGUgLS13aXRoLXJlYWx0aW1lLXRlc3RzdWl0ZSAtLXdpdGgtb3Blbi1wb3NpeC10ZXN0c3VpdGUgIgotIyBsdHAgbmV0d29yay9ycGMgdGVzdCBjYXNlcyBmdGJmcyB3aGVuIGxpYnRpcnBjIGlzIGZvdW5kCi1FWFRSQV9PRUNPTkYgKz0gIiAtLXdpdGhvdXQtdGlycGMgIgotCi1kb19pbnN0YWxsKCl7Ci0gICAgaW5zdGFsbCAtZCAke0R9L29wdC9sdHAvCi0gICAgb2VfcnVubWFrZSBERVNURElSPSR7RH0gU0tJUF9JRENIRUNLPTEgaW5zdGFsbAotCi0gICAgIyBmaXh1cCBub3QgZGVwbG95IFNUUGZhaWx1cmVfcmVwb3J0LnBsIHRvIGF2b2lkIGNvbmZ1c2luZyBhYm91dCBpdCBmYWlscyB0byBydW4KLSAgICAjIGFzIGl0IGxhY2tzIGRlcGVuZGVuY3kgb24gc29tZSBwZXJsIG1vdWRsZSBzdWNoIGFzIExXUDo6U2ltcGxlCi0gICAgIyBBbmQgdGhpcyBzY3JpcHQgcHJldmlvdXNseSB3b3JrcyBhcyBhIHRvb2wgZm9yIGFuYWx5emluZyBmYWlsdXJlcyBmcm9tIExUUAotICAgICMgcnVucyBvbiB0aGUgT1NETCdzIFNjYWxlYWJsZSBUZXN0IFBsYXRmb3JtIChTVFApIGFuZCBpdCBtYWlubHkgYWNjZXNzZXMKLSAgICAjIGh0dHA6Ly9raGFjay5vc2RsLm9yZyB0byByZXRyaWV2ZSBsdHAgdGVzdCByZXN1bHRzIHJ1biBvbgotICAgICMgT1NETCdzIFNjYWxlYWJsZSBUZXN0IFBsYXRmb3JtLCBidXQgbm93IGh0dHA6Ly9raGFjay5vc2RsLm9yZyB1bmFjY2Vzc2libGUKLSAgICBybSAtcmYgJHtEfS9vcHQvbHRwL2Jpbi9TVFBmYWlsdXJlX3JlcG9ydC5wbAotCi0gICAgIyBDb3B5IFBPU0lYIHRlc3Qgc3VpdGUgaW50byAke0R9L29wdC9sdHAvdGVzdGNhc2VzIGJ5IG1hbnVhbAotICAgIGNwIC1yIHRlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZSAke0R9L29wdC9sdHAvdGVzdGNhc2VzCi19Ci0KLVJERVBFTkRTXyR7UE59ID0gIlwKLSAgICBhY2wgXAotICAgIGF0IFwKLSAgICBhdHRyIFwKLSAgICBiYXNoIFwKLSAgICBjcGlvIFwKLSAgICBjcm9uaWUgXAotICAgIGN1cmwgXAotICAgIGUyZnNwcm9ncy1ta2UyZnMgXAotICAgIGV4cGVjdCBcCi0gICAgZmlsZSBcCi0gICAgZ2F3ayBcCi0gICAgZ3ppcCBcCi0gICAgaXByb3V0ZTIgXAotICAgIGxkZCBcCi0gICAgbGliYWlvIFwKLSAgICBsb2dyb3RhdGUgXAotICAgIHBlcmwgXAotICAgIHB5dGhvbjMtY29yZSBcCi0gICAgcHJvY3BzIFwKLSAgICBxdW90YSBcCi0gICAgdW56aXAgXAotICAgIHV0aWwtbGludXggXAotICAgIHdoaWNoIFwKLSAgICB0YXIgXAotIgotCi1GSUxFU18ke1BOfSArPSAiL29wdC9sdHAvKiAvb3B0L2x0cC9ydW50ZXN0LyogL29wdC9sdHAvc2NlbmFyaW9fZ3JvdXBzLyogL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9iaW4vKi9iaW4vKiAvb3B0L2x0cC90ZXN0c2NyaXB0cy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9Eb2N1bWVudGF0aW9uLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL2Z1bmN0aW9uYWwvKiAvb3B0L2x0cC90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvaW5jbHVkZS8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9zY3JpcHRzLyogL29wdC9sdHAvdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL3N0cmVzcy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS90b29scy8qIC9vcHQvbHRwL3Rlc3RjYXNlcy9kYXRhL25tMDEvbGliLmEgL29wdC9sdHAvbGliL2xpYm1lbS5hIgotCi0jIEF2b2lkIHN0cmlwcGluZyBzb21lIGdlbmVyYXRlZCBiaW5hcmllcyBvdGhlcndpc2Ugc29tZSBvZiB0aGUgbHRwIHRlc3RzIHN1Y2ggYXMgbGRkMDEgJiBubTAxIGZhaWwKLUlOSElCSVRfUEFDS0FHRV9TVFJJUF9GSUxFUyA9ICIvb3B0L2x0cC90ZXN0Y2FzZXMvYmluL25tMDEgL29wdC9sdHAvdGVzdGNhc2VzL2Jpbi9sZGQwMSIKLUlOU0FORV9TS0lQXyR7UE59ICs9ICJhbHJlYWR5LXN0cmlwcGVkIHN0YXRpY2RldiIKLQotIyBBdm9pZCBmaWxlIGRlcGVuZGVuY3kgc2NhbnMsIGFzIExUUCBjaGVja3MgZm9yIHRoaW5ncyB0aGF0IG1heSBvciBtYXkgbm90Ci0jIGV4aXN0IG9uIHRoZSBydW5uaW5nIHN5c3RlbS4gIEZvciBpbnN0YW5jZSBpdCBoYXMgc3BlY2lmaWMgY2hlY2tzIGZvcgotIyBjc2ggYW5kIGtzaCB3aGljaCBhcmUgbm90IHR5cGljYWxseSBwYXJ0IG9mIE9wZW5FbWJlZGRlZCBzeXN0ZW1zIChidXQKLSMgY2FuIGJlIGFkZGVkIHZpYSBhZGRpdGlvbmFsIGxheWVycy4pCi1TS0lQX0ZJTEVERVBTXyR7UE59ID0gJzEnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9sdHAvbHRwXzIwMjAwMTIwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDIwMDEyMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZWFjMzkxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbHRwL2x0cF8yMDIwMDEyMC5iYgpAQCAtMCwwICsxLDExNCBAQAorU1VNTUFSWSA9ICJMaW51eCBUZXN0IFByb2plY3QiCitERVNDUklQVElPTiA9ICJUaGUgTGludXggVGVzdCBQcm9qZWN0IGlzIGEgam9pbnQgcHJvamVjdCB3aXRoIFNHSSwgSUJNLCBPU0RMLCBhbmQgQnVsbCB3aXRoIGEgZ29hbCB0byBkZWxpdmVyIHRlc3Qgc3VpdGVzIHRvIHRoZSBvcGVuIHNvdXJjZSBjb21tdW5pdHkgdGhhdCB2YWxpZGF0ZSB0aGUgcmVsaWFiaWxpdHksIHJvYnVzdG5lc3MsIGFuZCBzdGFiaWxpdHkgb2YgTGludXguIFRoZSBMaW51eCBUZXN0IFByb2plY3QgaXMgYSBjb2xsZWN0aW9uIG9mIHRvb2xzIGZvciB0ZXN0aW5nIHRoZSBMaW51eCBrZXJuZWwgYW5kIHJlbGF0ZWQgZmVhdHVyZXMuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9saW51eC10ZXN0LXByb2plY3QuZ2l0aHViLmlvLyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBHUEx2MisgJiBMR1BMdjIrICYgTEdQTHYyLjErICYgQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJcCisgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9mcmVlemVyL0NPUFlJTkc7bWQ1PTA2MzZlNzNmZjAyMTVlOGQ2NzJkYzRjMzJjMzE3YmIzIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9jb250cm9sbGVycy9mcmVlemVyL3J1bl9mcmVlemVyLnNoO2JlZ2lubGluZT01O2VuZGxpbmU9MTc7bWQ1PTg2YTYxZDJjMDQyZDU5ODM2ZmZiMzUzYTIxNDU2NDk4IFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9ob3RwbHVnL21lbW9yeV9ob3RwbHVnL0NPUFlJTkc7bWQ1PWUwNGEyZTU0MmIyYjg2MjliZjljZDJiYTI5YjBmZTQxIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL2tlcm5lbC9ob3RwbHVnL2NwdV9ob3RwbHVnL0NPUFlJTkc7bWQ1PWUwNGEyZTU0MmIyYjg2MjliZjljZDJiYTI5YjBmZTQxIFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlL0NPUFlJTkc7bWQ1PTQ4YjFjNWVjNjMzZTNlMzBlYzJjZjg4NGFlNjk5OTQ3IFwKKyAgICBmaWxlOi8vdGVzdGNhc2VzL3JlYWx0aW1lL0NPUFlJTkc7bWQ1PTEyZjg4NGQyYWUxZmY4N2MwOWU1YjdjY2MyYzRjYTdlIFwKKyAgICBmaWxlOi8vdXRpbHMvYmVuY2htYXJrL2tlcm5iZW5jaC0wLjQyL0NPUFlJTkc7bWQ1PTk0ZDU1ZDUxMmE5YmEzNmNhYTliN2RmMDc5YmFlMTlmIFwKKyIKKworREVQRU5EUyA9ICJhdHRyIGxpYmFpbyBsaWJjYXAgYWNsIG9wZW5zc2wgemlwLW5hdGl2ZSIKK0RFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgZnRzICIKK0VYVFJBX09FTUFLRV9hcHBlbmRfbGliYy1tdXNsID0gIiBMSUJDPW11c2wgIgorRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIExJQlM9LWxmdHMgIgorCisjIHNpbmNlIGx0cCBjb250YWlucyB4ODYtNjQgYXNzZW1ibGVyIHdoaWNoIHVzZXMgdGhlIGZyYW1lLXBvaW50ZXIgcmVnaXN0ZXIsCisjIHNldCAtZm9taXQtZnJhbWUtcG9pbnRlciB4ODYtNjQgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIG9wdGltaXNhdGlvbgorIyBpcyBzZXQgdG8gLU8wIG9yIGZyYW1lIHBvaW50ZXJzIGhhdmUgYmVlbiBlbmFibGVkIGJ5IC1mbm8tb21pdC1mcmFtZS1wb2ludGVyCisjIGVhcmxpZXIgaW4gQ0ZMQUdTLCBldGMuCitDRkxBR1NfYXBwZW5kX3g4Ni02NCA9ICIgLWZvbWl0LWZyYW1lLXBvaW50ZXIiCisKK0NGTEFHU19hcHBlbmRfcG93ZXJwYzY0ID0gIiAtRF9fU0FORV9VU0VSU1BBQ0VfVFlQRVNfXyIKK0NGTEFHU19hcHBlbmRfbWlwc2FyY2huNjQgPSAiIC1EX19TQU5FX1VTRVJTUEFDRV9UWVBFU19fIgorU1JDUkVWID0gIjQwNzlhYWYyNjRkMGU5ZWFkMDQyYjU5ZDFjNWY0ZTY0MzYyMGQwZDUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9saW51eC10ZXN0LXByb2plY3QvbHRwLmdpdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWJ1aWxkLUFkZC1vcHRpb24tdG8tc2VsZWN0LWxpYmMtaW1wbGVtZW50YXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1DaGVjay1pZi1fX0dMSUJDX1BSRVJFUS1pcy1kZWZpbmVkLWJlZm9yZS11c2luZy1pdC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA0LWd1YXJkLW1hbGxvY29wdC13aXRoLV9fR0xJQkNfXy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LUZpeC10ZXN0X3Byb2Nfa2lsbC1oYW5naW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDgtdGVzdGNhc2VzLW5ldHdvcmstbmZzdjQtYWNsLWFjbDEuYy1TZWN1cml0eS1maXgtb24tcy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1tb3JlLW11c2wtZXhjbHVzaW9ucy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXN5c2NhbGxzLUNoZWNrLWZvci10aW1lNjQtdW5zYWZlLXN5c2NhbGxzLWJlZm9yZS11c2kucGF0Y2ggXAorICAgICAgICAgICAiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcAorCitUQVJHRVRfQ0NfQVJDSCArPSAiJHtMREZMQUdTfSIKKworZXhwb3J0IHByZWZpeCA9ICIvb3B0LyR7UE59IgorZXhwb3J0IGV4ZWNfcHJlZml4ID0gIi9vcHQvJHtQTn0iCisKK1BBQ0tBR0VDT05GSUdbbnVtYV0gPSAiLS13aXRoLW51bWEsIC0td2l0aG91dC1udW1hLCBudW1hY3RsLCIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vdGVzdGNhc2VzL3JlYWx0aW1lL200IgorRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtcG93ZXItbWFuYWdlbWVudC10ZXN0c3VpdGUgLS13aXRoLXJlYWx0aW1lLXRlc3RzdWl0ZSAtLXdpdGgtb3Blbi1wb3NpeC10ZXN0c3VpdGUgIgorIyBsdHAgbmV0d29yay9ycGMgdGVzdCBjYXNlcyBmdGJmcyB3aGVuIGxpYnRpcnBjIGlzIGZvdW5kCitFWFRSQV9PRUNPTkYgKz0gIiAtLXdpdGhvdXQtdGlycGMgIgorCitkb19pbnN0YWxsKCl7CisgICAgaW5zdGFsbCAtZCAke0R9JHtwcmVmaXh9LworICAgIG9lX3J1bm1ha2UgREVTVERJUj0ke0R9IFNLSVBfSURDSEVDSz0xIGluc3RhbGwKKworICAgICMgZml4dXAgbm90IGRlcGxveSBTVFBmYWlsdXJlX3JlcG9ydC5wbCB0byBhdm9pZCBjb25mdXNpbmcgYWJvdXQgaXQgZmFpbHMgdG8gcnVuCisgICAgIyBhcyBpdCBsYWNrcyBkZXBlbmRlbmN5IG9uIHNvbWUgcGVybCBtb3VkbGUgc3VjaCBhcyBMV1A6OlNpbXBsZQorICAgICMgQW5kIHRoaXMgc2NyaXB0IHByZXZpb3VzbHkgd29ya3MgYXMgYSB0b29sIGZvciBhbmFseXppbmcgZmFpbHVyZXMgZnJvbSBMVFAKKyAgICAjIHJ1bnMgb24gdGhlIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSAoU1RQKSBhbmQgaXQgbWFpbmx5IGFjY2Vzc2VzCisgICAgIyBodHRwOi8va2hhY2sub3NkbC5vcmcgdG8gcmV0cmlldmUgbHRwIHRlc3QgcmVzdWx0cyBydW4gb24KKyAgICAjIE9TREwncyBTY2FsZWFibGUgVGVzdCBQbGF0Zm9ybSwgYnV0IG5vdyBodHRwOi8va2hhY2sub3NkbC5vcmcgdW5hY2Nlc3NpYmxlCisgICAgcm0gLXJmICR7RH0ke3ByZWZpeH0vYmluL1NUUGZhaWx1cmVfcmVwb3J0LnBsCisKKyAgICAjIENvcHkgUE9TSVggdGVzdCBzdWl0ZSBpbnRvICR7RH0ke3ByZWZpeH0vdGVzdGNhc2VzIGJ5IG1hbnVhbAorICAgIGNwIC1yIHRlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZSAke0R9JHtwcmVmaXh9L3Rlc3RjYXNlcworCisgICAgIyBNYWtlZmlsZSB3ZXJlIGNvbmZpZ3VyZWQgaW4gdGhlIGJ1aWxkIHN5c3RlbQorICAgIGZpbmQgJHtEfSR7cHJlZml4fSAtbmFtZSBNYWtlZmlsZSB8IHhhcmdzIC1uIDEgc2VkIC1pIFwKKyAgICAgICAgIC1lICdzQFteIF0qLWZkZWJ1Zy1wcmVmaXgtbWFwPVteICJdKkBAZycgXAorICAgICAgICAgLWUgJ3NAW14gXSotZm1hY3JvLXByZWZpeC1tYXA9W14gIl0qQEBnJyBcCisgICAgICAgICAtZSAnc0BbXiBdKi0tc3lzcm9vdD1bXiAiXSpAQGcnIAorfQorCitSREVQRU5EU18ke1BOfSA9ICJcCisgICAgYXR0ciBcCisgICAgYmFzaCBcCisgICAgY3BpbyBcCisgICAgY3JvbmllIFwKKyAgICBjdXJsIFwKKyAgICBlMmZzcHJvZ3MtbWtlMmZzIFwKKyAgICBleHBlY3QgXAorICAgIGZpbGUgXAorICAgIGdhd2sgXAorICAgIGd6aXAgXAorICAgIGlwcm91dGUyIFwKKyAgICBsZGQgXAorICAgIGxpYmFpbyBcCisgICAgbG9ncm90YXRlIFwKKyAgICBwZXJsIFwKKyAgICBweXRob24zLWNvcmUgXAorICAgIHByb2NwcyBcCisgICAgcXVvdGEgXAorICAgIHVuemlwIFwKKyAgICB1dGlsLWxpbnV4IFwKKyAgICB3aGljaCBcCisgICAgdGFyIFwKKyIKKworRklMRVNfJHtQTn0gKz0gIiR7cHJlZml4fS8qICR7cHJlZml4fS9ydW50ZXN0LyogJHtwcmVmaXh9L3NjZW5hcmlvX2dyb3Vwcy8qICR7cHJlZml4fS90ZXN0Y2FzZXMvYmluLyogJHtwcmVmaXh9L3Rlc3RjYXNlcy9iaW4vKi9iaW4vKiAke3ByZWZpeH0vdGVzdHNjcmlwdHMvKiAke3ByZWZpeH0vdGVzdGNhc2VzL29wZW5fcG9zaXhfdGVzdHN1aXRlLyogJHtwcmVmaXh9L3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS9jb25mb3JtYW5jZS8qICR7cHJlZml4fS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvRG9jdW1lbnRhdGlvbi8qICR7cHJlZml4fS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvZnVuY3Rpb25hbC8qICR7cHJlZml4fS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvaW5jbHVkZS8qICR7cHJlZml4fS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvc2NyaXB0cy8qICR7cHJlZml4fS90ZXN0Y2FzZXMvb3Blbl9wb3NpeF90ZXN0c3VpdGUvc3RyZXNzLyogJHtwcmVmaXh9L3Rlc3RjYXNlcy9vcGVuX3Bvc2l4X3Rlc3RzdWl0ZS90b29scy8qICR7cHJlZml4fS90ZXN0Y2FzZXMvZGF0YS9ubTAxL2xpYi5hICR7cHJlZml4fS9saWIvbGlibWVtLmEiCisKKyMgQXZvaWQgc3RyaXBwaW5nIHNvbWUgZ2VuZXJhdGVkIGJpbmFyaWVzIG90aGVyd2lzZSBzb21lIG9mIHRoZSBsdHAgdGVzdHMgc3VjaCBhcyBsZGQwMSAmIG5tMDEgZmFpbAorSU5ISUJJVF9QQUNLQUdFX1NUUklQX0ZJTEVTID0gIiR7cHJlZml4fS90ZXN0Y2FzZXMvYmluL25tMDEgJHtwcmVmaXh9L3Rlc3RjYXNlcy9iaW4vbGRkMDEiCitJTlNBTkVfU0tJUF8ke1BOfSArPSAiYWxyZWFkeS1zdHJpcHBlZCBzdGF0aWNkZXYiCisKKyMgQXZvaWQgZmlsZSBkZXBlbmRlbmN5IHNjYW5zLCBhcyBMVFAgY2hlY2tzIGZvciB0aGluZ3MgdGhhdCBtYXkgb3IgbWF5IG5vdAorIyBleGlzdCBvbiB0aGUgcnVubmluZyBzeXN0ZW0uICBGb3IgaW5zdGFuY2UgaXQgaGFzIHNwZWNpZmljIGNoZWNrcyBmb3IKKyMgY3NoIGFuZCBrc2ggd2hpY2ggYXJlIG5vdCB0eXBpY2FsbHkgcGFydCBvZiBPcGVuRW1iZWRkZWQgc3lzdGVtcyAoYnV0CisjIGNhbiBiZSBhZGRlZCB2aWEgYWRkaXRpb25hbCBsYXllcnMuKQorU0tJUF9GSUxFREVQU18ke1BOfSA9ICcxJwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjguNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi44LjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4M2IyMzcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWFuLWRiL21hbi1kYl8yLjguNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLVNVTU1BUlkgPSAiQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YW5kYXJkIFVuaXggZG9jdW1lbnRhdGlvbiBzeXN0ZW0gYWNjZXNzZWQgdXNpbmcgdGhlIG1hbiBjb21tYW5kIgotSE9NRVBBR0UgPSAiaHR0cDovL21hbi1kYi5ub25nbnUub3JnLyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvQ09QWUlORy5MSUI7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvQ09QWUlORzttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCi0KLVNSQ19VUkkgPSAiJHtTQVZBTk5BSF9OT05HTlVfTUlSUk9SfS9tYW4tZGIvbWFuLWRiLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly85OV9tYW5kYiBcCi0gICAgICAgICAgIGZpbGU6Ly9tYW5fZGIuY29uZi1hdm9pZC1tdWx0aWxpYi1pbnN0YWxsLWZpbGUtY29uZmxpY3QucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiZWMwYjIzYzgzMTRhMTY1NGM0ZDA1OWIyYzE4Y2U0M2QiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjljZDViYjk5NjMwNWQwOGJmZTllMTExNGVkYzMwYjRjOTdiZTgwNzA5M2I4OGFmODAzM2VkMWNmOWJlYjMyNiIKLQotREVQRU5EUyA9ICJsaWJwaXBlbGluZSBnZGJtIGdyb2ZmLW5hdGl2ZSBiYXNlLXBhc3N3ZCIKLVJERVBFTkRTXyR7UE59ICs9ICJiYXNlLXBhc3N3ZCIKLQotIyB8IC91c3Ivc3JjL2RlYnVnL21hbi1kYi8yLjguMC1yMC9tYW4tZGItMi44LjAvc3JjL3doYXRpcy5jOjkzOTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX25sX21zZ19jYXRfY250cicKLVVTRV9OTFNfbGliYy1tdXNsID0gIm5vIgotCi1pbmhlcml0IGdldHRleHQgcGtnY29uZmlnIGF1dG90b29scyBzeXN0ZW1kCi0KLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtcGFnZXI9bGVzcyAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vZ2wvbTQiCi0KLWRvX2luc3RhbGwoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotCSAgICAgICAgaW5zdGFsbCAtZCAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcwotCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9tYW5kYiAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcwotCWZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2xpYmMtbXVzbCgpIHsKLSAgICAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCi19Ci0KLUZJTEVTXyR7UE59ICs9ICIke3ByZWZpeH0vbGliL3RtcGZpbGVzLmQiCi0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L21hbi1kYi9saWJtYW4uc28gJHtsaWJkaXJ9LyR7QlBOfS9saWJtYW5kYi5zbyIKLQotUkRFUEVORFNfJHtQTn0gKz0gImdyb2ZmIgotUlJFQ09NTUVORFNfJHtQTn0gKz0gImxlc3MiCi1SUFJPVklERVNfJHtQTn0gKz0gIiBtYW4iCi0KLWRlZiBjb21wcmVzc19wa2coZCk6Ci0gICAgaWYgYmIudXRpbHMuY29udGFpbnMoIklOSEVSSVQiLCAiY29tcHJlc3NfZG9jIiwgVHJ1ZSwgRmFsc2UsIGQpOgotICAgICAgICAgY29tcHJlc3MgPSBkLmdldFZhcigiRE9DX0NPTVBSRVNTIikKLSAgICAgICAgIGlmIGNvbXByZXNzID09ICJneiI6Ci0gICAgICAgICAgICAgcmV0dXJuICJnemlwIgotICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAiYnoyIjoKLSAgICAgICAgICAgICByZXR1cm4gImJ6aXAyIgotICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAieHoiOgotICAgICAgICAgICAgIHJldHVybiAieHoiCi0gICAgcmV0dXJuICIiCi0KLVJERVBFTkRTXyR7UE59ICs9ICIke0Bjb21wcmVzc19wa2coZCl9IgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibWFuLWRiLnRpbWVyIG1hbi1kYi5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA/PSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1kYi9tYW4tZGJfMi45LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tZGIvbWFuLWRiXzIuOS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3MTQ5ZGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tZGIvbWFuLWRiXzIuOS4xLmJiCkBAIC0wLDAgKzEsNTkgQEAKK1NVTU1BUlkgPSAiQW4gaW1wbGVtZW50YXRpb24gb2YgdGhlIHN0YW5kYXJkIFVuaXggZG9jdW1lbnRhdGlvbiBzeXN0ZW0gYWNjZXNzZWQgdXNpbmcgdGhlIG1hbiBjb21tYW5kIgorSE9NRVBBR0UgPSAiaHR0cDovL21hbi1kYi5ub25nbnUub3JnLyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvY3MvQ09QWUlORy5MSUI7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvY3MvQ09QWUlORzttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEiCisKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9OT05HTlVfTUlSUk9SfS9tYW4tZGIvbWFuLWRiLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly85OV9tYW5kYiBcCisgICAgICAgICAgIGZpbGU6Ly9tYW5fZGIuY29uZi1hdm9pZC1tdWx0aWxpYi1pbnN0YWxsLWZpbGUtY29uZmxpY3QucGF0Y2giCitTUkNfVVJJW21kNXN1bV0gPSAiNTkzZjRmMGEyNmFiNGY2NmY1YjgxY2Y2YzBjNzM2NGMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmEzZDhhZmM1YzA5YTcyNjVhOGRhYmZhMGU3YzFmNGIzYWI5N2RmOWFiZjFmNjgxMGZhYThmMzAxMDU2Yzc0ZiIKKworREVQRU5EUyA9ICJsaWJwaXBlbGluZSBnZGJtIGdyb2ZmLW5hdGl2ZSBiYXNlLXBhc3N3ZCIKK1JERVBFTkRTXyR7UE59ICs9ICJiYXNlLXBhc3N3ZCIKKworIyB8IC91c3Ivc3JjL2RlYnVnL21hbi1kYi8yLjguMC1yMC9tYW4tZGItMi44LjAvc3JjL3doYXRpcy5jOjkzOTogdW5kZWZpbmVkIHJlZmVyZW5jZSB0byBgX25sX21zZ19jYXRfY250cicKK1VTRV9OTFNfbGliYy1tdXNsID0gIm5vIgorCitpbmhlcml0IGdldHRleHQgcGtnY29uZmlnIGF1dG90b29scyBzeXN0ZW1kCisKK0VYVFJBX09FQ09ORiA9ICItLXdpdGgtcGFnZXI9bGVzcyAtLXdpdGgtc3lzdGVtZHN5c3RlbXVuaXRkaXI9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbSIKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vZ2wvbTQiCisKK2RvX2luc3RhbGwoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgorCSAgICAgICAgaW5zdGFsbCAtZCAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcworCQlpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS85OV9tYW5kYiAke0R9L2V0Yy9kZWZhdWx0L3ZvbGF0aWxlcworCWZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2xpYmMtbXVzbCgpIHsKKyAgICAgICAgcm0gLWYgJHtEfSR7bGliZGlyfS9jaGFyc2V0LmFsaWFzCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke3ByZWZpeH0vbGliL3RtcGZpbGVzLmQiCisKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L21hbi1kYi9saWJtYW4uc28gJHtsaWJkaXJ9LyR7QlBOfS9saWJtYW5kYi5zbyIKKworUkRFUEVORFNfJHtQTn0gKz0gImdyb2ZmIgorUlJFQ09NTUVORFNfJHtQTn0gKz0gImxlc3MiCitSUFJPVklERVNfJHtQTn0gKz0gIiBtYW4iCisKK2RlZiBjb21wcmVzc19wa2coZCk6CisgICAgaWYgYmIudXRpbHMuY29udGFpbnMoIklOSEVSSVQiLCAiY29tcHJlc3NfZG9jIiwgVHJ1ZSwgRmFsc2UsIGQpOgorICAgICAgICAgY29tcHJlc3MgPSBkLmdldFZhcigiRE9DX0NPTVBSRVNTIikKKyAgICAgICAgIGlmIGNvbXByZXNzID09ICJneiI6CisgICAgICAgICAgICAgcmV0dXJuICJnemlwIgorICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAiYnoyIjoKKyAgICAgICAgICAgICByZXR1cm4gImJ6aXAyIgorICAgICAgICAgZWxpZiBjb21wcmVzcyA9PSAieHoiOgorICAgICAgICAgICAgIHJldHVybiAieHoiCisgICAgcmV0dXJuICIiCisKK1JERVBFTkRTXyR7UE59ICs9ICIke0Bjb21wcmVzc19wa2coZCl9IgorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibWFuLWRiLnRpbWVyIG1hbi1kYi5zZXJ2aWNlIgorU1lTVEVNRF9BVVRPX0VOQUJMRSA/PSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNS4wMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNS4wMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjg1MjVmNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzUuMDEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIkxpbnV4IG1hbi1wYWdlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdCBkb2N1bWVudHMgdGhlIExpbnV4IGtlcm5lbCBhbmQgQyBsaWJyYXJ5IGludGVyZmFjZXMgdGhhdCBhcmUgZW1wbG95ZWQgYnkgdXNlciBwcm9ncmFtcyIKLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvZG9jcy9tYW4tcGFnZXMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT03OTRmNzAxNjE3Y2MwM2ZlNTBjNTMyNTc2NjBkOGVjNCIKLVNSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9kb2NzLyR7QlBOfS9BcmNoaXZlLyR7QlB9LnRhci5neiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjM4YWJlYWQ3NzZhNTA2MTA5ZTEyOGFiOTZiY2JiZTU4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA3MGJlZjc5NGM2ODI2YjNmYjM5NjVkMWEyZWZkYjQ2YzI1Y2IzN2MwNmM3MTU5ODdmODhhNTA5MDZjZDViNmYiCi0KLWluaGVyaXQgbWFucGFnZXMKLQotTUFOX1BLRyA9ICIke1BOfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIiIKLQotZG9fY29uZmlndXJlW25vZXhlY10gPSAiMSIKLWRvX2NvbXBpbGVbbm9leGVjXSA9ICIxIgotCi1kb19pbnN0YWxsKCkgewotICAgICAgICBvZV9ydW5tYWtlIGluc3RhbGwgREVTVERJUj0ke0R9Ci19Ci0KLSMgT25seSBkZWxpdmVyZXMgbWFuLXBhZ2VzIHNvIEZJTEVTXyR7UE59IGdldHMgZXZlcnl0aGluZwotRklMRVNfJHtQTn0tZG9jID0gIiIKLUZJTEVTXyR7UE59ID0gIiR7bWFuZGlyfS8qIgotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAicGFzc3dkLjUgZ2V0c3BuYW0uMyBjcnlwdC4zIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3Bhc3N3ZC41XSA9ICIke21hbmRpcn0vbWFuNS9wYXNzd2QuNSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtnZXRzcG5hbS4zXSA9ICIke21hbmRpcn0vbWFuMy9nZXRzcG5hbS4zIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2NyeXB0LjNdID0gIiR7bWFuZGlyfS9tYW4zL2NyeXB0LjMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzUuMDUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYW4tcGFnZXMvbWFuLXBhZ2VzXzUuMDUuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjk1ODcyZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21hbi1wYWdlcy9tYW4tcGFnZXNfNS4wNS5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIkxpbnV4IG1hbi1wYWdlcyIKK0RFU0NSSVBUSU9OID0gIlRoZSBMaW51eCBtYW4tcGFnZXMgcHJvamVjdCBkb2N1bWVudHMgdGhlIExpbnV4IGtlcm5lbCBhbmQgQyBsaWJyYXJ5IGludGVyZmFjZXMgdGhhdCBhcmUgZW1wbG95ZWQgYnkgdXNlciBwcm9ncmFtcyIKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cua2VybmVsLm9yZy9wdWIvbGludXgvZG9jcy9tYW4tcGFnZXMiCitMSUNFTlNFID0gIkdQTHYyKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vUkVBRE1FO21kNT03OTRmNzAxNjE3Y2MwM2ZlNTBjNTMyNTc2NjBkOGVjNCIKK1NSQ19VUkkgPSAiJHtLRVJORUxPUkdfTUlSUk9SfS9saW51eC9kb2NzLyR7QlBOfS8ke0JQfS50YXIuZ3oiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJjZGFkNWRlYjE1MTE3ZTYwYTZkOWUzYTZiZGMwMzViNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0M2MzM2QyZWVhOWJhOTg5YzE4ZWVmOTAyOThjZjZkNTUyMWZmMDM4ZGViNTFjZGEwZWNkMGZkYzNjZWMyYjdkIgorCitpbmhlcml0IG1hbnBhZ2VzCisKK01BTl9QS0cgPSAiJHtQTn0iCisKK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICIiCisKK2RvX2NvbmZpZ3VyZVtub2V4ZWNdID0gIjEiCitkb19jb21waWxlW25vZXhlY10gPSAiMSIKKworZG9faW5zdGFsbCgpIHsKKyAgICAgICAgb2VfcnVubWFrZSBpbnN0YWxsIERFU1RESVI9JHtEfQorfQorCisjIE9ubHkgZGVsaXZlcmVzIG1hbi1wYWdlcyBzbyBGSUxFU18ke1BOfSBnZXRzIGV2ZXJ5dGhpbmcKK0ZJTEVTXyR7UE59LWRvYyA9ICIiCitGSUxFU18ke1BOfSA9ICIke21hbmRpcn0vKiIKKworaW5oZXJpdCB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gInBhc3N3ZC41IGdldHNwbmFtLjMgY3J5cHQuMyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtwYXNzd2QuNV0gPSAiJHttYW5kaXJ9L21hbjUvcGFzc3dkLjUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbZ2V0c3BuYW0uM10gPSAiJHttYW5kaXJ9L21hbjMvZ2V0c3BuYW0uMyIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtjcnlwdC4zXSA9ICIke21hbmRpcn0vbWFuMy9jcnlwdC4zIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvZmlsZXMvMDAwMS1UaWNrZXQtMzYyOS1jb25maWd1cmUuYWMtZHJvcC1idW5kbGVkLWdldHRleHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy8wMDAxLVRpY2tldC0zNjI5LWNvbmZpZ3VyZS5hYy1kcm9wLWJ1bmRsZWQtZ2V0dGV4dC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ZjM1NzM3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvZmlsZXMvMDAwMS1UaWNrZXQtMzYyOS1jb25maWd1cmUuYWMtZHJvcC1idW5kbGVkLWdldHRleHQucGF0Y2gKQEAgLTAsMCArMSwxMTAgQEAKK0Zyb20gMGQ2NzdhMDE0YTg3Yjk2OGQ3OWVlYTIzNTNhYzRlMzQyYjBmZDRjYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNlcmdlaSBUcm9maW1vdmljaCA8c2x5Zm94QGdlbnRvby5vcmc+CitEYXRlOiBXZWQsIDExIFNlcCAyMDE5IDIyOjU4OjE4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIFRpY2tldCAjMzYyOTogY29uZmlndXJlLmFjOiBkcm9wIGJ1bmRsZWQgZ2V0dGV4dAorCitCdW5kbGVkIGxpYmludGwgZGlkIG5vdCBzdXBwb3J0IGxpbmtpbmcgdG8gaW50ZXJuYWwgc3RhdGljCitsaWJyYXJpZXMgKGxpYm1jIGluIG91ciBjYXNlKTogZGlyZWN0bHkgc3BlY2lmaWVkIHN0YXRpYworbGlicmFyaWVzIGFyZSBub3QgcHVsbGVkIGJ5IGxpYnRvb2wgYW5kIGFyZSBub3QgdXNhYmxlIGZvcgorZHluYW1pYyBsaWJyYXJpZXMgYXMgUElDLXJlbGF0ZWQgZmxhZ3MgYXJlIG5vdCBwYXNzZWQgZm9yCitjb21waWxhdGlvbi4KKworVGhpcyByZW5kZXJzIGJ1bmRsZWQgbGliaW50bCBsaWJyYXJ5IHVudXNhYmxlLgorCitUaGUgY2hhbmdlIGRyb3BzIGxpYmludGwgYnVuZGxpbmcgc3VwcG9ydCBhbmQgYWx3YXlzIHJlbGllcworb24gZXh0ZXJuYWwgbGliaW50bCAob3IgZmFsbHMgYmFjayB0byBkaXNhYmxlZCBOTFMpLgorCitPbiBhIHJlbGF0ZWQgbm90ZSBnZXR0ZXh0LTAuMjAgZHJvcHMgc3VwcG9ydCBmb3IgYnVuZGxpbmcKK29yIGxpYmludGwgYW5kIHRoaXMgY2hhbmdlIHdpbGwgZWFzZSBtaWdyYXRpb24gdG8gbmV3ZXIgdmVyc2lvbi4KKworVGhlIGNoYW5nZSBpcyB0ZXN0ZWQgb24geDg2XzY0LWdlbnRvby1saW51eC1tdXNsOiBtYyBidWlsZHMKK2FuZCBsaW5rcyBhbGwgdGVzdHMgc3VjY2Vzc2Z1bGx5LiBBIGZldyB0ZXN0cyBmYWlsIGZvciBsYWNrCitvZiBOTFMgc3VwcG9ydC4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL01pZG5pZ2h0Q29tbWFuZGVyL21jL2NvbW1pdC9mMzBlNmZmMjgzZjRiYzg2MTc3ZTQzNjBkZTk0ZGFkNzk0Njc4Mzk1XQorU2lnbmVkLW9mZi1ieTogU2VyZ2VpIFRyb2ZpbW92aWNoIDxzbHlmb3hAZ2VudG9vLm9yZz4KK1NpZ25lZC1vZmYtYnk6IEFuZHJldyBCb3JvZGluIDxhYm9yb2RpbkB2bWFpbC5ydT4KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUuYW0gICAgICAgICAgIHwgMiArLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICB8IDUgKysrLS0KKyBkb2MvZG94eWdlbi5jZmcgICAgICAgfCAyICstCisgbGliL01ha2VmaWxlLmFtICAgICAgIHwgMiArLQorIG00LmluY2x1ZGUvbWMtaTE4bi5tNCB8IDUgLS0tLS0KKyA1IGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMTAgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZS5hbSBiL01ha2VmaWxlLmFtCitpbmRleCBhYzA1YTgzLi5mODZmNmVkIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUuYW0KKysrKyBiL01ha2VmaWxlLmFtCitAQCAtMSw3ICsxLDcgQEAKKyAjIyBQcm9jZXNzIHRoaXMgZmlsZSB3aXRoIGF1dG9tYWtlIHRvIGNyZWF0ZSBNYWtlZmlsZS5pbi4KKyBBVVRPTUFLRV9PUFRJT05TID0gMS41CisgCistU1VCRElSUyA9IGludGwgcG8gbGliIHNyYyBkb2MgY29udHJpYiBtaXNjCisrU1VCRElSUyA9IHBvIGxpYiBzcmMgZG9jIGNvbnRyaWIgbWlzYworIAorIGlmIEhBVkVfVEVTVFMKKyAgICAgU1VCRElSUyArPSB0ZXN0cworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggYTE5NDhmNi4uYmJjOWU3MSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtMjcyLDcgKzI3Miw5IEBAIGRubCAjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjCisgZG5sIEludGVybmF0aW9uYWxpemF0aW9uCisgZG5sICMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMjIyMKKyAKKy1BTV9HTlVfR0VUVEVYVChbbm8tbGlidG9vbF0sIFtuZWVkLW5nZXR0ZXh0XSkKKytBQ19DSEVDS19GVU5DUyhbc2V0bG9jYWxlXSkKKysKKytBTV9HTlVfR0VUVEVYVChbZXh0ZXJuYWxdLCBbbmVlZC1uZ2V0dGV4dF0pCisgQU1fR05VX0dFVFRFWFRfVkVSU0lPTihbMC4xOC4xXSkKKyAKKyBtY19JMThOCitAQCAtNjgwLDcgKzY4Miw2IEBAIGRvYy9obHAvcGwvTWFrZWZpbGUKKyBkb2MvaGxwL3J1L01ha2VmaWxlCisgZG9jL2hscC9zci9NYWtlZmlsZQorIAorLWludGwvTWFrZWZpbGUKKyBwby9NYWtlZmlsZS5pbgorIF0pCisgCitkaWZmIC0tZ2l0IGEvZG9jL2RveHlnZW4uY2ZnIGIvZG9jL2RveHlnZW4uY2ZnCitpbmRleCAwN2JjOTczLi4xMTE4MDYyIDEwMDY0NAorLS0tIGEvZG9jL2RveHlnZW4uY2ZnCisrKysgYi9kb2MvZG94eWdlbi5jZmcKK0BAIC05MSw3ICs5MSw3IEBAIEZJTEVfUEFUVEVSTlMgICAgICAgICAgPSAqLmMgXAorIFJFQ1VSU0lWRSAgICAgICAgICAgICAgPSBZRVMKKyBFWENMVURFICAgICAgICAgICAgICAgID0KKyBFWENMVURFX1NZTUxJTktTICAgICAgID0gTk8KKy1FWENMVURFX1BBVFRFUk5TICAgICAgID0gKi9pbnRsLyogKi90ZXN0cy8qICovLmdpdC8qCisrRVhDTFVERV9QQVRURVJOUyAgICAgICA9ICovdGVzdHMvKiAqLy5naXQvKgorIEVYQ0xVREVfU1lNQk9MUyAgICAgICAgPQorIEVYQU1QTEVfUEFUSCAgICAgICAgICAgPSAkKFNSQ0RJUikKKyBFWEFNUExFX1BBVFRFUk5TICAgICAgID0KK2RpZmYgLS1naXQgYS9saWIvTWFrZWZpbGUuYW0gYi9saWIvTWFrZWZpbGUuYW0KK2luZGV4IGM0NDhlMmQuLjQ1NWY5ZGQgMTAwNjQ0CistLS0gYS9saWIvTWFrZWZpbGUuYW0KKysrKyBiL2xpYi9NYWtlZmlsZS5hbQorQEAgLTc0LDQgKzc0LDQgQEAgZWxzZQorICAgICBsaWJtY19sYV9MSUJBREQgKz0gJChHTElCX0xJQlMpCisgZW5kaWYKKyAKKy1saWJtY19sYV9MSUJBREQgKz0gJChQQ1JFX0xJQlMpICQoTElCSUNPTlYpICQoTElCSU5UTCkKKytsaWJtY19sYV9MSUJBREQgKz0gJChQQ1JFX0xJQlMpCitkaWZmIC0tZ2l0IGEvbTQuaW5jbHVkZS9tYy1pMThuLm00IGIvbTQuaW5jbHVkZS9tYy1pMThuLm00CitpbmRleCBkZDEwZDAwLi5lYzA4MzI0IDEwMDY0NAorLS0tIGEvbTQuaW5jbHVkZS9tYy1pMThuLm00CisrKysgYi9tNC5pbmNsdWRlL21jLWkxOG4ubTQKK0BAIC04LDExICs4LDYgQEAgZG5sIEBsaWNlbnNlIEdQTAorIGRubCBAY29weXJpZ2h0IEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbiwgSW5jLgorIAorIEFDX0RFRlVOKFttY19JMThOXSxbCistCistICAgIGlmIHRlc3QgIngkVVNFX0lOQ0xVREVEX0xJQklOVEwiID0geHllczsgdGhlbgorLSAgICAgICAgQ1BQRkxBR1M9IiRDUFBGTEFHUyAtSVwkKHRvcF9idWlsZGRpcikvaW50bCAtSVwkKHRvcF9zcmNkaXIpL2ludGwiCistICAgIGZpCistCisgICAgIGRubCBVc2VyIHZpc2libGUgc3VwcG9ydCBmb3IgY2hhcnNldCBjb252ZXJzaW9uLgorICAgICBBQ19BUkdfRU5BQkxFKFtjaGFyc2V0XSwKKyAgICAgICAgIEFTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1jaGFyc2V0XSwgW1N1cHBvcnQgZm9yIGNoYXJzZXQgc2VsZWN0aW9uIGFuZCBjb252ZXJzaW9uIEA8OkB5ZXNAOj5AXSkpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy9ub21hbmRhdGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9maWxlcy9ub21hbmRhdGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDhiZDczYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL2ZpbGVzL25vbWFuZGF0ZS5wYXRjaApAQCAtMCwwICsxLDIxIEBACitUaGUgbWFuIHBhZ2UgZGF0ZSBjYW4gdmFyeSBkZXBlbmRpbmcgdXBvbiB0aGUgaG9zdCBwZXJsLCBlLmcuIGluIFJ1c3NpYW4KK3NvbWUgdmVyc2lvbnMgcHJpbnQgJ9C40Y7QvdGPJywgb3RoZXJzICfQmNGO0L3RjCcgb3IgUG9saXNoICdjemVyd2NhJyBvciAnY3plcndpZWMnLgorUmF0aGVyIHRoYW4gZGVwZW5kIHVwb24gcGVybC1uYXRpdmUgdG8gZml4IHRoaXMsIGp1c3QgcmVtb3ZlIHRoZSBkYXRlIGZyb20gCit0aGUgbWFucGFnZXMuCisKK1JQIDIwMjAvMi80CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2ZpY2ljIHJlcHJvZHVjaWJpbGl0eSB3b3JrYXJvdW5kXQorU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK0luZGV4OiBtYy00LjguMjMvZG9jL21hbi9kYXRlLW9mLW1hbi1pbmNsdWRlLmFtCis9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09CistLS0gbWMtNC44LjIzLm9yaWcvZG9jL21hbi9kYXRlLW9mLW1hbi1pbmNsdWRlLmFtCisrKysgbWMtNC44LjIzL2RvYy9tYW4vZGF0ZS1vZi1tYW4taW5jbHVkZS5hbQorQEAgLTEsNSArMSw1IEBACisgU0VEX1BBUkFNRVRFUlMgPSBcCistCS1lICJzLyVEQVRFX09GX01BTl9QQUdFJS8kJHtNQU5fREFURX0vZyIgXAorKwktZSAicy8lREFURV9PRl9NQU5fUEFHRSUvL2ciIFwKKyAJLWUgInMvJURJU1RSX1ZFUlNJT04lL0BESVNUUl9WRVJTSU9OQC9nIiBcCisgCS1lICJzeyVwcmVmaXgle0BwcmVmaXhAe2ciIFwKKyAJLWUgInN7JXN5c2NvbmZkaXIle0BzeXNjb25mZGlyQHtnIiBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tYy9tY180LjguMjMuYmIKaW5kZXggNzFmNjFiNC4uZWFkMzQ4YiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWMvbWNfNC44LjIzLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21jL21jXzQuOC4yMy5iYgpAQCAtNCwxMSArNCwxNCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjcwYmJhZmUzNjBlNzNmOTg0MGJkNzk4MTYyMWY5YzIiCiBTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCiBERVBFTkRTID0gIm5jdXJzZXMgZ2xpYi0yLjAgdXRpbC1saW51eCIKLVJERVBFTkRTXyR7UE59ID0gIm5jdXJzZXMtdGVybWluZm8iCitSREVQRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvLWJhc2UiCitSUkVDT01NRU5EU18ke1BOfSA9ICJuY3Vyc2VzLXRlcm1pbmZvIgogCiBTUkNfVVJJID0gImh0dHA6Ly93d3cubWlkbmlnaHQtY29tbWFuZGVyLm9yZy9kb3dubG9hZHMvJHtCUE59LSR7UFZ9LnRhci5iejIgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1tYy1yZXBsYWNlLXBlcmwtdy13aXRoLXVzZS13YXJuaW5ncy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZC1vcHRpb24tdG8tY29udHJvbC1jb25maWd1cmUtYXJncy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVRpY2tldC0zNjI5LWNvbmZpZ3VyZS5hYy1kcm9wLWJ1bmRsZWQtZ2V0dGV4dC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ub21hbmRhdGUucGF0Y2ggXAogICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiMTUyOTI3YWMyOWNmMGU2MWQ3ZDAxOWYyNjFiYjdkODkiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjM4YzQ1NTI1NDVkY2YzMDY1MzU5YmQ1MDc1M2FiYmIxNTBjMWIyMmVjNWEzNmVhYTAyYzgyODA4MjkzMjY3ZCIKQEAgLTI3LDYgKzMwLDcgQEAKIENBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BFUkw9Jy91c3IvYmluL2VudiBwZXJsJyIKIENBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX1BZVEhPTj0nL3Vzci9iaW4vZW52IHB5dGhvbiciCiBDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9HUkVQPScvdXNyL2Jpbi9lbnYgZ3JlcCciCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAibWNfY3ZfaGF2ZV96aXBpbmZvPXllcyIKIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEke2JpbmRpcn0vZW52IHBlcmwsJyAke0R9JHtsaWJleGVjZGlyfS9tYy9leHRmcy5kLyoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL2ZpbGVzL3J1bi1wdGVzdAppbmRleCBlNGE5YzJiLi5mYWU4MDcxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9maWxlcy9ydW4tcHRlc3QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vZmlsZXMvcnVuLXB0ZXN0CkBAIC0xLDQgKzEsNyBAQAogIyEvYmluL3NoCiAKK21rZGlyIC1wIC9tZGFkbS10ZXN0aW5nLWRpcgogIyBtYWtlIHRoZSB0ZXN0IGNvbnRpbnVlIHRvIGV4ZWN1dGUgZXZlbiBvbmUgZmFpbAotLi90ZXN0IC0ta2VlcC1nb2luZworZGlyPS4gLi90ZXN0IC0ta2VlcC1nb2luZyAtLWRpc2FibGUtaW50ZWdyaXR5CisKK3JtIC1yZiAvbWRhZG0tdGVzdGluZy1kaXIvKgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fNC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbWRhZG0vbWRhZG1fNC4xLmJiCmluZGV4IDY0ZjUxOWUuLjQwYzUyNzMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21kYWRtL21kYWRtXzQuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tZGFkbS9tZGFkbV80LjEuYmIKQEAgLTc1LDcgKzc1LDggQEAKIGRvX2luc3RhbGxfcHRlc3QoKSB7CiAJY3AgLVIgLS1uby1kZXJlZmVyZW5jZSAtLXByZXNlcnZlPW1vZGUsbGlua3MgLXYgJHtTfS90ZXN0cyAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cwogCWNwICR7U30vdGVzdCAke0R9JHtQVEVTVF9QQVRIfQotCXNlZCAtZSAncyFzbGVlcCAwLiohc2xlZXAgMSFnOyBzIS92YXIvdG1wIS8hZycgLWkgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdAorCXNlZCAtZSAncyFzbGVlcCAwLiohc2xlZXAgMSFnOyBzIS92YXIvdG1wIS9tZGFkbS10ZXN0aW5nLWRpciFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0CisJc2VkIC1lICdzIS92YXIvdG1wIS9tZGFkbS10ZXN0aW5nLWRpciFnJyAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8qCiAgICAgICAgIHNlZCAtaSAtZSAnL2VjaG8gLW5lICIkX3NjcmlwdC4uLiAiL2QnIFwKICAgICAgICAgICAgICAgIC1lICdzL2VjaG8gInN1Y2NlZWRlZCIvZWNobyAtZSAiUEFTUzogJF9zY3JpcHQiL2cnIFwKICAgICAgICAgICAgICAgIC1lICcvc2F2ZV9sb2cgZmFpbC9OOyAvX2ZhaWw9MS9pXFx0XHRcdGVjaG8gLW5lICJGQUlMOiAkX3NjcmlwdCInIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21zbXRwL21zbXRwXzEuOC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbXNtdHAvbXNtdHBfMS44LjYuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDgwOTE0NGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvbXNtdHAvbXNtdHBfMS44LjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyOCArMCwwIEBACi1TVU1NQVJZID0gIm1zbXRwIGlzIGFuIFNNVFAgY2xpZW50IgotREVTQ1JJUFRJT04gPSAiQSBzZW5kbWFpbCByZXBsYWNlbWVudCBmb3IgdXNlIGluIE1UQXMgbGlrZSBtdXR0IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9tYXJsYW0uZGUvbXNtdHAvIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi0KLUxJQ0VOU0UgPSAiR1BMdjMiCi1ERVBFTkRTID0gInpsaWIgZ251dGxzIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vbWFybGFtLmRlL21zbXRwL2Rvd25sb2FkLyIKLQotU1JDX1VSSSA9ICJodHRwczovL21hcmxhbS5kZS8ke0JQTn0vcmVsZWFzZXMvJHtCUH0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImFkZmY0YTk5OTJlMWI0N2FhNTQ2OGI5NzQ1NTAzMDRlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2MjVmMTQ3NDMwYzY1YmE4NTI3ZjUyYzRmZTVkNGQzMzU1MmQzYzBmYjZkNzkzYmE3ZGY4MTlhM2IzMDQyZTEiCi0KLWluaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlic2VjcmV0IC0td2l0aG91dC1saWJnc2FzbCAtLXdpdGhvdXQtbGliaWRuIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJzZW5kbWFpbCIKLSMgL3Vzci9saWIvc2VuZG1pYWwgaXMgcmVxdWlyZWQgYnkgTFNCIGNvcmUgdGVzdAotQUxURVJOQVRJVkVfJHtQTn1fbGludXhzdGRiYXNlID0gInNlbmRtYWlsIHVzci1saWItc2VuZG1haWwiCi1BTFRFUk5BVElWRV9UQVJHRVRbc2VuZG1haWxdID0gIiR7YmluZGlyfS9tc210cCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzZW5kbWFpbF0gPSAiJHtzYmluZGlyfS9zZW5kbWFpbCIKLUFMVEVSTkFUSVZFX1RBUkdFVFt1c3ItbGliLXNlbmRtYWlsXSA9ICIke2JpbmRpcn0vbXNtdHAiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbdXNyLWxpYi1zZW5kbWFpbF0gPSAiL3Vzci9saWIvc2VuZG1haWwiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tc210cC9tc210cF8xLjguOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL21zbXRwL21zbXRwXzEuOC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNhMzU5YTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9tc210cC9tc210cF8xLjguOC5iYgpAQCAtMCwwICsxLDI4IEBACitTVU1NQVJZID0gIm1zbXRwIGlzIGFuIFNNVFAgY2xpZW50IgorREVTQ1JJUFRJT04gPSAiQSBzZW5kbWFpbCByZXBsYWNlbWVudCBmb3IgdXNlIGluIE1UQXMgbGlrZSBtdXR0IgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9tYXJsYW0uZGUvbXNtdHAvIgorU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCisKK0xJQ0VOU0UgPSAiR1BMdjMiCitERVBFTkRTID0gInpsaWIgZ251dGxzIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vbWFybGFtLmRlL21zbXRwL2Rvd25sb2FkLyIKKworU1JDX1VSSSA9ICJodHRwczovL21hcmxhbS5kZS8ke0JQTn0vcmVsZWFzZXMvJHtCUH0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gIjAxNmU0MzJkMTJlMTJkYzVkNzM5NjBlMmJjNjdmMGZiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImVjY2I1M2U0OGYwMjVmN2U2ZjYwMjEwMzE2ZGY2MWNmNjA5N2E0OTE3MjgzNDFjMWUzNzVmYzFhY2M2NDU5ZTUiCisKK2luaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMgdXBkYXRlLWFsdGVybmF0aXZlcyBwa2djb25maWcKKworRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtbGlic2VjcmV0IC0td2l0aG91dC1saWJnc2FzbCAtLXdpdGhvdXQtbGliaWRuIgorCitBTFRFUk5BVElWRV8ke1BOfSA9ICJzZW5kbWFpbCIKKyMgL3Vzci9saWIvc2VuZG1pYWwgaXMgcmVxdWlyZWQgYnkgTFNCIGNvcmUgdGVzdAorQUxURVJOQVRJVkVfJHtQTn1fbGludXhzdGRiYXNlID0gInNlbmRtYWlsIHVzci1saWItc2VuZG1haWwiCitBTFRFUk5BVElWRV9UQVJHRVRbc2VuZG1haWxdID0gIiR7YmluZGlyfS9tc210cCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtzZW5kbWFpbF0gPSAiJHtzYmluZGlyfS9zZW5kbWFpbCIKK0FMVEVSTkFUSVZFX1RBUkdFVFt1c3ItbGliLXNlbmRtYWlsXSA9ICIke2JpbmRpcn0vbXNtdHAiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdXNyLWxpYi1zZW5kbWFpbF0gPSAiL3Vzci9saWIvc2VuZG1haWwiCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2ZpeHNlcGJ1aWxkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9maXhzZXBidWlsZC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGE5YzNiMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2ZpeHNlcGJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjQgKzAsMCBAQAotRml4IHRoZSBidWlsZCBlcnJvciB3aGVuIGEgc2VwYXJhdGUgYnVpbGQgZGlyZWN0b3J5IGlzIHVzZWQ6Ci0KLU1ha2luZyBpbnN0YWxsIGluIHh0ZXN0c21ha2VbMV06IEVudGVyaW5nIGRpcmVjdG9yeSBgL21lZGlhL2J1aWxkMS9wb2t5L2J1aWxkMS90bXAvd29yay9pNTg2LXBva3ktbGludXgvbGlicGFtLzEuMS42LXIyL2J1aWxkL3h0ZXN0cycvdXNyL2Jpbi9pbnN0YWxsIC1jIC1kIC9tZWRpYS9idWlsZDEvcG9reS9idWlsZDEvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L2xpYnBhbS8xLjEuNi1yMi9pbWFnZS91c3Ivc2hhcmUvTGludXgtUEFNL3h0ZXN0c2ZvciBmaWxlIGluIHJ1bi14dGVzdHMuc2ggdHN0LXBhbV9kaXNwYXRjaDEucGFtZCB0c3QtcGFtX2Rpc3BhdGNoMi5wYW1kIHRzdC1wYW1fZGlzcGF0Y2gzLnBhbWQgdHN0LXBhbV9kaXNwYXRjaDQucGFtZCB0c3QtcGFtX2Rpc3BhdGNoNS5wYW1kIHRzdC1wYW1fY3JhY2tsaWIxLnBhbWQgdHN0LXBhbV9jcmFja2xpYjIucGFtZCB0c3QtcGFtX3VuaXgxLnBhbWQgdHN0LXBhbV91bml4Mi5wYW1kIHRzdC1wYW1fdW5peDMucGFtZCB0c3QtcGFtX3VuaXg0LnBhbWQgdHN0LXBhbV91bml4MS5zaCB0c3QtcGFtX3VuaXgyLnNoIHRzdC1wYW1fdW5peDMuc2ggdHN0LXBhbV91bml4NC5zaCBhY2Nlc3MuY29uZiB0c3QtcGFtX2FjY2VzczEucGFtZCB0c3QtcGFtX2FjY2VzczEuc2ggdHN0LXBhbV9hY2Nlc3MyLnBhbWQgdHN0LXBhbV9hY2Nlc3MyLnNoIHRzdC1wYW1fYWNjZXNzMy5wYW1kIHRzdC1wYW1fYWNjZXNzMy5zaCB0c3QtcGFtX2FjY2VzczQucGFtZCB0c3QtcGFtX2FjY2VzczQuc2ggbGltaXRzLmNvbmYgdHN0LXBhbV9saW1pdHMxLnBhbWQgdHN0LXBhbV9saW1pdHMxLnNoIHRzdC1wYW1fc3VjY2VlZF9pZjEucGFtZCB0c3QtcGFtX3N1Y2NlZWRfaWYxLnNoIGdyb3VwLmNvbmYgdHN0LXBhbV9ncm91cDEucGFtZCB0c3QtcGFtX2dyb3VwMS5zaCB0c3QtcGFtX2F1dGhmYWlsLnBhbWQgdHN0LXBhbV9hdXRoc3VjY2VlZC5wYW1kIHRzdC1wYW1fc3Vic3RhY2sxLnBhbWQgdHN0LXBhbV9zdWJzdGFjazFhLnBhbWQgdHN0LXBhbV9zdWJzdGFjazEuc2ggdHN0LXBhbV9zdWJzdGFjazIucGFtZCB0c3QtcGFtX3N1YnN0YWNrMmEucGFtZCB0c3QtcGFtX3N1YnN0YWNrMi5zaCB0c3QtcGFtX3N1YnN0YWNrMy5wYW1kIHRzdC1wYW1fc3Vic3RhY2szYS5wYW1kIHRzdC1wYW1fc3Vic3RhY2szLnNoIHRzdC1wYW1fc3Vic3RhY2s0LnBhbWQgdHN0LXBhbV9zdWJzdGFjazRhLnBhbWQgdHN0LXBhbV9zdWJzdGFjazQuc2ggdHN0LXBhbV9zdWJzdGFjazUucGFtZCB0c3QtcGFtX3N1YnN0YWNrNWEucGFtZCB0c3QtcGFtX3N1YnN0YWNrNS5zaCB0c3QtcGFtX2Fzc2VtYmxlX2xpbmUxLnBhbWQgdHN0LXBhbV9hc3NlbWJsZV9saW5lMS5zaCB0c3QtcGFtX3B3aGlzdG9yeTEucGFtZCB0c3QtcGFtX3B3aGlzdG9yeTEuc2ggdHN0LXBhbV90aW1lMS5wYW1kIHRpbWUuY29uZiA7IGRvIFwvdXNyL2Jpbi9pbnN0YWxsIC1jICRmaWxlIC9tZWRpYS9idWlsZDEvcG9reS9idWlsZDEvdG1wL3dvcmsvaTU4Ni1wb2t5LWxpbnV4L2xpYnBhbS8xLjEuNi1yMi9pbWFnZS91c3Ivc2hhcmUvTGludXgtUEFNL3h0ZXN0cyA7IFwJZG9uZQotL3Vzci9iaW4vaW5zdGFsbDogY2Fubm90IHN0YXQgYHJ1bi14dGVzdHMuc2gnOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0vdXNyL2Jpbi9pbnN0YWxsOiBjYW5ub3Qgc3RhdCBgdHN0LXBhbV9kaXNwYXRjaDEucGFtZCc6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLS91c3IvYmluL2luc3RhbGw6IGNhbm5vdCBzdGF0IGB0c3QtcGFtX2Rpc3BhdGNoMi5wYW1kJzogTm8gc3VjaCBmaWxlIG9yIGRpcmVjdG9yeQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotUlAgMjAxMy8wMy8yMQotCi1JbmRleDogTGludXgtUEFNLTEuMS42L3h0ZXN0cy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIExpbnV4LVBBTS0xLjEuNi5vcmlnL3h0ZXN0cy9NYWtlZmlsZS5hbQkyMDEzLTAzLTA4IDEyOjI2OjMwLjM2MDI2NjAwMCArMDAwMAotKysrIExpbnV4LVBBTS0xLjEuNi94dGVzdHMvTWFrZWZpbGUuYW0JMjAxMy0wMy0yMSAxMTozOTo1OC41NTcxNjY2NTAgKzAwMDAKLUBAIC01OSw3ICs1OSw3IEBACi0gaW5zdGFsbF94dGVzdHM6Ci0gCSQoSU5TVEFMTCkgLWQgJChERVNURElSKSQocGtnZGF0YWRpcikveHRlc3RzCi0gCWZvciBmaWxlIGluICQoRVhUUkFfRElTVCkgOyBkbyBcCi0tCQkkKElOU1RBTEwpICQkZmlsZSAkKERFU1RESVIpJChwa2dkYXRhZGlyKS94dGVzdHMgOyBcCi0rCQkkKElOU1RBTEwpICQoc3JjZGlyKS8kJGZpbGUgJChERVNURElSKSQocGtnZGF0YWRpcikveHRlc3RzIDsgXAotIAlkb25lCi0gCWZvciBmaWxlIGluICQoWFRFU1RTKTsgZG8gXAotIAkJJChJTlNUQUxMKSAubGlicy8kJGZpbGUgJChERVNURElSKSQocGtnZGF0YWRpcikveHRlc3RzIDsgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbS9saWJwYW0teHRlc3RzLnBhdGNoCmluZGV4IDdlZGY2NmYuLmVhMTQ1ODkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW0vbGlicGFtLXh0ZXN0cy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtL2xpYnBhbS14dGVzdHMucGF0Y2gKQEAgLTI4LDcgKzI4LDcgQEAKICtpbnN0YWxsX3h0ZXN0czoKICsJJChJTlNUQUxMKSAtZCAkKERFU1RESVIpJChwa2dkYXRhZGlyKS94dGVzdHMKICsJZm9yIGZpbGUgaW4gJChFWFRSQV9ESVNUKSA7IGRvIFwKLSsJCSQoSU5TVEFMTCkgJCRmaWxlICQoREVTVERJUikkKHBrZ2RhdGFkaXIpL3h0ZXN0cyA7IFwKKysJCSQoSU5TVEFMTCkgJChzcmNkaXIpLyQkZmlsZSAkKERFU1RESVIpJChwa2dkYXRhZGlyKS94dGVzdHMgOyBcCiArCWRvbmUKICsJZm9yIGZpbGUgaW4gJChYVEVTVFMpOyBkbyBcCiArCQkkKElOU1RBTEwpIC5saWJzLyQkZmlsZSAkKERFU1RESVIpJChwa2dkYXRhZGlyKS94dGVzdHMgOyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMy4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFtL2xpYnBhbV8xLjMuMS5iYgppbmRleCAxMTk0OTMzLi5iYzcyYWZlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYW0vbGlicGFtXzEuMy4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhbS9saWJwYW1fMS4zLjEuYmIKQEAgLTEsMyArMSw0IEBACitESVNBQkxFX1NUQVRJQyA9ICIiCiBTVU1NQVJZID0gIkxpbnV4LVBBTSAoUGx1Z2dhYmxlIEF1dGhlbnRpY2F0aW9uIE1vZHVsZXMpIgogREVTQ1JJUFRJT04gPSAiTGludXgtUEFNIChQbHVnZ2FibGUgQXV0aGVudGljYXRpb24gTW9kdWxlcyBmb3IgTGludXgpLCBhIGZsZXhpYmxlIG1lY2hhbmlzbSBmb3IgYXV0aGVudGljYXRpbmcgdXNlcnMiCiBIT01FUEFHRSA9ICJodHRwczovL2ZlZG9yYWhvc3RlZC5vcmcvbGludXgtcGFtLyIKQEAgLTIwLDcgKzIxLDYgQEAKICAgICAgICAgICAgZmlsZTovL3BhbS5kL2NvbW1vbi1zZXNzaW9uLW5vbmludGVyYWN0aXZlIFwKICAgICAgICAgICAgZmlsZTovL3BhbS5kL290aGVyIFwKICAgICAgICAgICAgZmlsZTovL2xpYnBhbS14dGVzdHMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZml4c2VwYnVpbGQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vcGFtLXNlY3VyaXR5LWFic3RyYWN0LXNlY3VyZXR0eS1oYW5kbGluZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9wYW0tdW5peC1udWxsb2stc2VjdXJlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2NyeXB0X2NvbmZpZ3VyZS5wYXRjaCBcCkBAIC0zNSw4ICszNSw3IEBACiAKIERFUEVORFMgPSAiYmlzb24tbmF0aXZlIGZsZXggZmxleC1uYXRpdmUgY3JhY2tsaWIgbGlieG1sMi1uYXRpdmUgdmlydHVhbC9jcnlwdCIKIAotRVhUUkFfT0VDT05GID0gIi0td2l0aC1kYi11bmlxdWVuYW1lPV9wYW0gXAotICAgICAgICAgICAgICAgIC0taW5jbHVkZWRpcj0ke2luY2x1ZGVkaXJ9L3NlY3VyaXR5IFwKK0VYVFJBX09FQ09ORiA9ICItLWluY2x1ZGVkaXI9JHtpbmNsdWRlZGlyfS9zZWN1cml0eSBcCiAgICAgICAgICAgICAgICAgLS1saWJkaXI9JHtiYXNlX2xpYmRpcn0gXAogICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1uaXMgXAogICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1yZWdlbmVyYXRlLWRvY3UgXApAQCAtNDgsNyArNDcsOSBAQAogCiBpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZwogCitQQUNLQUdFQ09ORklHID8/PSAiIgogUEFDS0FHRUNPTkZJR1thdWRpdF0gPSAiLS1lbmFibGUtYXVkaXQsLS1kaXNhYmxlLWF1ZGl0LGF1ZGl0LCIKK1BBQ0tBR0VDT05GSUdbdXNlcmRiXSA9ICItLWVuYWJsZS1kYj1kYiwtLWVuYWJsZS1kYj1ubyxkYiwiCiAKIFBBQ0tBR0VTICs9ICIke1BOfS1ydW50aW1lICR7UE59LXh0ZXN0cyIKIEZJTEVTXyR7UE59ID0gIiR7YmFzZV9saWJkaXJ9L2xpYioke1NPTElCU30iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1JbmNsdWRlLWZjbnRsLmgtaW4tcGxhdGZvcm1fZGVmcy5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtSW5jbHVkZS1mY250bC5oLWluLXBsYXRmb3JtX2RlZnMuaC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDA3MDEyNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1JbmNsdWRlLWZjbnRsLmgtaW4tcGxhdGZvcm1fZGVmcy5oLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSBhMzg3NzExNWYxOTU2OTQ5MDk2ZDc3YWNhNWE3MDNhNDdlZDY4Mzk3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVsaXggSmFuZGEgPGZlbGl4LmphbmRhQHBvc3Rlby5kZT4KLURhdGU6IFN1biwgMyBNYXkgMjAxNSAxMDozMzozMSArMDIwMAotU3ViamVjdDogW1BBVENIXSBsaWJwYXJ0ZWQvZnMveGZzL3BsYXRmb3JtX2RlZnMuaDogSW5jbHVkZSA8ZmNudGwuaD4gZm9yCi0gbG9mZl90Ci0KLVRoaXMgaXMgbmVlZGVkIGZvciBjb21waWxhdGlvbiB3aXRoIG11c2wgbGliYwotCi1TdWdnZXN0ZWQtYnk6IFRyYXZpcyBUaWxsZXkgPHR0aWxsZXlAZ21haWwuY29tPgotCi1TaWduZWQtb2ZmLWJ5OiBCcmlhbiBDLiBMYW5lIDxiY2xAcmVkaGF0LmNvbT4KLS0tLQotIGxpYnBhcnRlZC9mcy94ZnMvcGxhdGZvcm1fZGVmcy5oIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9saWJwYXJ0ZWQvZnMveGZzL3BsYXRmb3JtX2RlZnMuaCBiL2xpYnBhcnRlZC9mcy94ZnMvcGxhdGZvcm1fZGVmcy5oCi1pbmRleCAyYjU1NzUyLi5hNmVjOGZiIDEwMDY0NAotLS0tIGEvbGlicGFydGVkL2ZzL3hmcy9wbGF0Zm9ybV9kZWZzLmgKLSsrKyBiL2xpYnBhcnRlZC9mcy94ZnMvcGxhdGZvcm1fZGVmcy5oCi1AQCAtMzgsNiArMzgsNyBAQAotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8YXNzZXJ0Lmg+Ci0gI2luY2x1ZGUgPGVuZGlhbi5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzdGRkZWYuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtTW92ZS1weXRob24taGVscGVyLXNjcmlwdHMtdXNlZC1vbmx5LWluLXRlc3RzLXRvLVB5dC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLU1vdmUtcHl0aG9uLWhlbHBlci1zY3JpcHRzLXVzZWQtb25seS1pbi10ZXN0cy10by1QeXQucGF0Y2gKaW5kZXggNDI4YjE0ZS4uODI5YzBjOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtTW92ZS1weXRob24taGVscGVyLXNjcmlwdHMtdXNlZC1vbmx5LWluLXRlc3RzLXRvLVB5dC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1Nb3ZlLXB5dGhvbi1oZWxwZXItc2NyaXB0cy11c2VkLW9ubHktaW4tdGVzdHMtdG8tUHl0LnBhdGNoCkBAIC0xLDE3ICsxLDE4IEBACi1Gcm9tIDZlODJhZjU0NzE0MzkyZGNkZjc0YThhZWRhYWU3ZGU3ZDBhZjEwODAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGRkYmVmZDgwZDc0YzNiYWFhZTMyODMzMjQ1OGRiNDQ3ZTE2NjYyNDAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgMjcgQXByIDIwMTcgMTY6Mzc6MjQgKzAzMDAKIFN1YmplY3Q6IFtQQVRDSF0gTW92ZSBweXRob24gaGVscGVyIHNjcmlwdHMgKHVzZWQgb25seSBpbiB0ZXN0cykgdG8gUHl0aG9uIDMKIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiBTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKwogLS0tCiAgdGVzdHMvZ3B0LWhlYWRlci1tb3ZlIHwgMiArLQotIHRlc3RzL21zZG9zLW92ZXJsYXAgICB8IDQgKystLQotIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorIHRlc3RzL21zZG9zLW92ZXJsYXAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL3Rlc3RzL2dwdC1oZWFkZXItbW92ZSBiL3Rlc3RzL2dwdC1oZWFkZXItbW92ZQotaW5kZXggMDVjZGM2NS4uM2NiY2I3ZSAxMDA3NTUKK2luZGV4IDNkZGE1Y2IuLmEyYjk1MDggMTAwNzU1CiAtLS0gYS90ZXN0cy9ncHQtaGVhZGVyLW1vdmUKICsrKyBiL3Rlc3RzL2dwdC1oZWFkZXItbW92ZQogQEAgLTEsNCArMSw0IEBACkBAIC0yMSw3ICsyMiw3IEBACiAgIyBvcGVuIGltZyBmaWxlLCBzdWJ0cmFjdCAzMyBmcm9tIGFsdGxiYSBhZGRyZXNzLCBhbmQgbW92ZSB0aGUgbGFzdCAzMyBzZWN0b3JzCiAgIyBiYWNrIGJ5IDMzIHNlY3RvcnMKIGRpZmYgLS1naXQgYS90ZXN0cy9tc2Rvcy1vdmVybGFwIGIvdGVzdHMvbXNkb3Mtb3ZlcmxhcAotaW5kZXggNWJkZGZiMC4uM2RlN2QyZSAxMDA3NTUKK2luZGV4IGQ2YWU4ZDYuLjJjNjc0N2IgMTAwNzU1CiAtLS0gYS90ZXN0cy9tc2Rvcy1vdmVybGFwCiArKysgYi90ZXN0cy9tc2Rvcy1vdmVybGFwCiBAQCAtMSw0ICsxLDQgQEAKQEAgLTMwLDE1ICszMSwzIEBACiAgIiIiCiAgICAgIFdyaXRlIGFuIG92ZXJsYXBwaW5nIHBhcnRpdGlvbiB0byBhIG1zZG9zIGRpc2sKICAKLUBAIC0xNCw3ICsxNCw3IEBAIEJBRF9FTlRSWSA9ICgweDcyLCAweGY1LCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLCAweDAwLAotIE9GRlNFVCA9IDB4MWI4Ci0gCi0gaWYgbGVuKHN5cy5hcmd2KSA8IDI6Ci0tICAgIHByaW50ICIlczogPGltYWdlIG9yIGRldmljZT4iCi0rICAgIHByaW50KCIlczogPGltYWdlIG9yIGRldmljZT4iKQotICAgICBzeXMuZXhpdCgxKQotIAotIGRhdGEgPSAiIi5qb2luKGNocihjKSBmb3IgYyBpbiBCQURfRU5UUlkpCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYTFhNGJhLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzMgKzAsMCBAQAotRnJvbSBiOTU2NWRjMmZlMGM0ZjdkYWFlYzkxYjdlODNiYzczMTNkZWUyZjRhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTMgQXByIDIwMTUgMTc6MDI6MTMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gVW5zZXQgbmVlZF9jaGFyc2V0X2FsaWFzIHdoZW4gYnVpbGRpbmcgZm9yIG11c2wKLQotbG9jYWxjaGFyc2V0IHVzZXMgYWNfY3ZfZ251X2xpYnJhcnlfMl8xIGZyb20gZ2xpYmMyMS5tNAotd2hpY2ggYWN0dWFsbHkgc2hvdWRsIGJlIGZpeGVkIGluIGdudWxpYiBhbmQgdGhlbiBhbGwgZG93bnN0cmVhbQotcHJvamVjdHMgd2lsbCBnZXQgaXQgZXZlbnR1YWxseS4gRm9yIG5vdyB3ZSBhcHBseSB0aGUgZml4IHRvCi1jb3JldXRpbHMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBsaWIvZ251bGliLm1rIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbGliL2dudWxpYi5tayBiL2xpYi9nbnVsaWIubWsKLWluZGV4IGUxZDc0ZGIuLmMwZTkyZGQgMTAwNjQ0Ci0tLS0gYS9saWIvZ251bGliLm1rCi0rKysgYi9saWIvZ251bGliLm1rCi1AQCAtMTg4Miw3ICsxODgyLDcgQEAgaW5zdGFsbC1leGVjLWxvY2FsY2hhcnNldDogYWxsLWxvY2FsCi0gCSAgY2FzZSAnJChob3N0X29zKScgaW4gXAotIAkgICAgZGFyd2luWzU2XSopIFwKLSAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXAotLQkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKikgXAotKwkgICAgZGFyd2luKiB8IGN5Z3dpbiogfCBtaW5ndyogfCBwdzMyKiB8IGNlZ2NjKiB8IGxpbnV4LW11c2wqKSBcCi0gCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz1mYWxzZSA7OyBcCi0gCSAgICAqKSBcCi0gCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGlicGFydGVkLVVzZS1yZWFkLW9ubHktd2hlbi1wcm9iaW5nLWRldmljZXMtb24tbGludS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAxLWxpYnBhcnRlZC1Vc2UtcmVhZC1vbmx5LXdoZW4tcHJvYmluZy1kZXZpY2VzLW9uLWxpbnUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM5MTA3NjIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGlicGFydGVkLVVzZS1yZWFkLW9ubHktd2hlbi1wcm9iaW5nLWRldmljZXMtb24tbGludS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDIyMiArMCwwIEBACi1Gcm9tIDg0MzIyNWFhOWQ1MDc3YmViZGIwOGJiZjk2OTljMDJhZWMwYjgzZWIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiAiQnJpYW4gQy4gTGFuZSIgPGJjbEByZWRoYXQuY29tPgotRGF0ZTogVHVlLCAyNiBTZXAgMjAxNyAwODowNDo1OCArMDAwMAotU3ViamVjdDogW1BBVENIXSBsaWJwYXJ0ZWQ6IFVzZSByZWFkIG9ubHkgd2hlbiBwcm9iaW5nIGRldmljZXMgb24gbGludXgKLQotICgjMTI0NTE0NCkKLQotV2hlbiBhIGRldmljZSBpcyBvcGVuZWQgZm9yIFJXIGNsb3NpbmcgaXQgY2FuIHRyaWdnZXIgb3RoZXIgYWN0aW9ucywKLWxpa2UgdWRldiBzY2FubmluZyBpdCBmb3IgcGFydGl0aW9uIGNoYW5nZXMuIFVzZSByZWFkIG9ubHkgZm9yIHRoZQotaW5pdF8qIG1ldGhvZHMgYW5kIFJXIGZvciBhY3R1YWwgY2hhbmdlcyB0byB0aGUgZGV2aWNlLgotCi1UaGlzIGFkZHMgX2RldmljZV9vcGVuIHdoaWNoIHRha2VzIG1vZGUgZmxhZ3MgYXMgYW4gYXJndW1lbnQgYW5kIHR1cm5zCi1saW51eF9vcGVuIGludG8gYSB3cmFwcGVyIGZvciBpdCB3aXRoIFJXX01PREUuCi0KLV9kZXZpY2Vfb3Blbl9ybyBpcyBhZGRlZCB0byBvcGVuIHRoZSBkZXZpY2Ugd2l0aCBSRF9NT0RFIGFuZCBpbmNyZW1lbnQKLXRoZSBvcGVuX2NvdW50ZXIuIFRoaXMgaXMgdXNlZCBpbiB0aGUgaW5pdF8qIGZ1bmN0aW9ucy4KLQotX2RldmljZV9jbG9zZSBpcyBhIHdyYXBwZXIgYXJvdW5kIGxpbnV4X2Nsb3NlIHRoYXQgZGVjcmVtZW50cyB0aGUKLW9wZW5fY291bnRlciBhbmQgaXMgdXNlZCBpbiB0aGUgaW5pdF8qIGZ1bmN0aW9ucy4KLQotQWxsIG9mIHRoZXNlIGNoYW5nZXMgYXJlIHNlbGYtY29udGFpbmVkIHdpdGggbm8gZXh0ZXJuYWwgQVBJIGNoYW5nZXMuCi1UaGUgb25seSB2aXNpYmxlIGNoYW5nZSBpbiBiZWhhdmlvciBpcyB0aGF0IHdoZW4gYSBuZXcgUGVkRGV2aWNlIGlzCi1jcmVhdGVkIHRoZSBkZXZpY2UgaXMgb3BlbmVkIGluIFJPX01PREUgaW5zdGVhZCBvZiBSV19NT0RFLgotCi1SZXNvbHZlczogcmhieiMxMjQ1MTQ0Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotU2lnbmVkLW9mZi1ieTogT3ZpZGl1IFBhbmFpdCA8b3ZpZGl1LnBhbmFpdEB3aW5kcml2ZXIuY29tPgotCi0tLS0KLSBsaWJwYXJ0ZWQvYXJjaC9saW51eC5jIHwgNjIgKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNDQgaW5zZXJ0aW9ucygrKSwgMTggZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJwYXJ0ZWQvYXJjaC9saW51eC5jIGIvbGlicGFydGVkL2FyY2gvbGludXguYwotaW5kZXggN2YxMmY1OC4uNGRkZWE1OCAxMDA2NDQKLS0tLSBhL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKLSsrKyBiL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKLUBAIC0yOTIsNyArMjkyLDkgQEAgc3RydWN0IGJsa2Rldl9pb2N0bF9wYXJhbSB7Ci0gc3RhdGljIGNoYXIqIF9kZXZpY2VfZ2V0X3BhcnRfcGF0aCAoUGVkRGV2aWNlIGNvbnN0ICpkZXYsIGludCBudW0pOwotIHN0YXRpYyBpbnQgX3BhcnRpdGlvbl9pc19tb3VudGVkX2J5X3BhdGggKGNvbnN0IGNoYXIqIHBhdGgpOwotIHN0YXRpYyB1bnNpZ25lZCBpbnQgX2RldmljZV9nZXRfcGFydGl0aW9uX3JhbmdlKFBlZERldmljZSBjb25zdCogZGV2KTsKLS0KLStzdGF0aWMgaW50IF9kZXZpY2Vfb3BlbiAoUGVkRGV2aWNlKiBkZXYsIGludCBmbGFncyk7Ci0rc3RhdGljIGludCBfZGV2aWNlX29wZW5fcm8gKFBlZERldmljZSogZGV2KTsKLStzdGF0aWMgaW50IF9kZXZpY2VfY2xvc2UgKFBlZERldmljZSogZGV2KTsKLSAKLSBzdGF0aWMgaW50Ci0gX3JlYWRfZmQgKGludCBmZCwgY2hhciAqKmJ1ZikKLUBAIC05MTEsNyArOTEzLDcgQEAgaW5pdF9pZGUgKFBlZERldmljZSogZGV2KQotICAgICAgICAgaWYgKCFfZGV2aWNlX3N0YXQgKGRldiwgJmRldl9zdGF0KSkKLSAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAKLS0gICAgICAgIGlmICghcGVkX2RldmljZV9vcGVuIChkZXYpKQotKyAgICAgICAgaWYgKCFfZGV2aWNlX29wZW5fcm8gKGRldikpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gCi0gICAgICAgICBpZiAoaW9jdGwgKGFyY2hfc3BlY2lmaWMtPmZkLCBIRElPX0dFVF9JREVOVElUWSwgJmhkaSkpIHsKLUBAIC05ODAsMTEgKzk4MiwxMSBAQCBpbml0X2lkZSAoUGVkRGV2aWNlKiBkZXYpCi0gICAgICAgICBpZiAoIV9kZXZpY2VfcHJvYmVfZ2VvbWV0cnkgKGRldikpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfY2xvc2VfZGV2OwotIAotLSAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKLSsgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7Ci0gICAgICAgICByZXR1cm4gMTsKLSAKLSBlcnJvcl9jbG9zZV9kZXY6Ci0tICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOwotKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKLSBlcnJvcjoKLSAgICAgICAgIHJldHVybiAwOwotIH0KLUBAIC0xMTE3LDcgKzExMTksNyBAQCBpbml0X3Njc2kgKFBlZERldmljZSogZGV2KQotICAgICAgICAgY2hhciogdmVuZG9yOwotICAgICAgICAgY2hhciogcHJvZHVjdDsKLSAKLS0gICAgICAgIGlmICghcGVkX2RldmljZV9vcGVuIChkZXYpKQotKyAgICAgICAgaWYgKCFfZGV2aWNlX29wZW5fcm8gKGRldikpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gCi0gICAgICAgICBpZiAoaW9jdGwgKGFyY2hfc3BlY2lmaWMtPmZkLCBTQ1NJX0lPQ1RMX0dFVF9JRExVTiwgJmlkbHVuKSA8IDApIHsKLUBAIC0xMTMxLDcgKzExMzMsNyBAQCBpbml0X3Njc2kgKFBlZERldmljZSogZGV2KQotICAgICAgICAgICAgICAgICAgICAgICAgIGdvdG8gZXJyb3JfY2xvc2VfZGV2OwotICAgICAgICAgICAgICAgICBpZiAoIV9kZXZpY2VfcHJvYmVfZ2VvbWV0cnkgKGRldikpCi0gICAgICAgICAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9jbG9zZV9kZXY7Ci0tICAgICAgICAgICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICAgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7Ci0gICAgICAgICAgICAgICAgIHJldHVybiAxOwotICAgICAgICAgfQotIAotQEAgLTExNTMsMTEgKzExNTUsMTEgQEAgaW5pdF9zY3NpIChQZWREZXZpY2UqIGRldikKLSAgICAgICAgIGlmICghX2RldmljZV9wcm9iZV9nZW9tZXRyeSAoZGV2KSkKLSAgICAgICAgICAgICAgICAgZ290byBlcnJvcl9jbG9zZV9kZXY7Ci0gCi0tICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOwotKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKLSAgICAgICAgIHJldHVybiAxOwotIAotIGVycm9yX2Nsb3NlX2RldjoKLS0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOwotIGVycm9yOgotICAgICAgICAgcmV0dXJuIDA7Ci0gfQotQEAgLTExNjksNyArMTE3MSw3IEBAIGluaXRfZmlsZSAoUGVkRGV2aWNlKiBkZXYpCi0gCi0gICAgICAgICBpZiAoIV9kZXZpY2Vfc3RhdCAoZGV2LCAmZGV2X3N0YXQpKQotICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotLSAgICAgICAgaWYgKCFwZWRfZGV2aWNlX29wZW4gKGRldikpCi0rICAgICAgICBpZiAoIV9kZXZpY2Vfb3Blbl9ybyAoZGV2KSkKLSAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAKLSAgICAgICAgIGRldi0+c2VjdG9yX3NpemUgPSBQRURfU0VDVE9SX1NJWkVfREVGQVVMVDsKLUBAIC0xMTk2LDcgKzExOTgsNyBAQCBpbml0X2ZpbGUgKFBlZERldmljZSogZGV2KQotICAgICAgICAgICAgICAgICBnb3RvIGVycm9yX2Nsb3NlX2RldjsKLSAgICAgICAgIH0KLSAKLS0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOwotIAotICAgICAgICAgZGV2LT5iaW9zX2dlb20uY3lsaW5kZXJzID0gZGV2LT5sZW5ndGggLyA0IC8gMzI7Ci0gICAgICAgICBkZXYtPmJpb3NfZ2VvbS5oZWFkcyA9IDQ7Ci1AQCAtMTIwNyw3ICsxMjA5LDcgQEAgaW5pdF9maWxlIChQZWREZXZpY2UqIGRldikKLSAgICAgICAgIHJldHVybiAxOwotIAotIGVycm9yX2Nsb3NlX2RldjoKLS0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOwotIGVycm9yOgotICAgICAgICAgcmV0dXJuIDA7Ci0gfQotQEAgLTEyMjMsNyArMTIyNSw3IEBAIGluaXRfZGFzZCAoUGVkRGV2aWNlKiBkZXYsIGNvbnN0IGNoYXIqIG1vZGVsX25hbWUpCi0gICAgICAgICBpZiAoIV9kZXZpY2Vfc3RhdCAoZGV2LCAmZGV2X3N0YXQpKQotICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotIAotLSAgICAgICAgaWYgKCFwZWRfZGV2aWNlX29wZW4gKGRldikpCi0rICAgICAgICBpZiAoIV9kZXZpY2Vfb3Blbl9ybyAoZGV2KSkKLSAgICAgICAgICAgICAgICAgZ290byBlcnJvcjsKLSAKLSAgICAgICAgIExpbnV4U3BlY2lmaWMqIGFyY2hfc3BlY2lmaWMgPSBMSU5VWF9TUEVDSUZJQyAoZGV2KTsKLUBAIC0xMjYzLDExICsxMjY1LDExIEBAIGluaXRfZGFzZCAoUGVkRGV2aWNlKiBkZXYsIGNvbnN0IGNoYXIqIG1vZGVsX25hbWUpCi0gCi0gICAgICAgICBkZXYtPm1vZGVsID0gc3RyZHVwIChtb2RlbF9uYW1lKTsKLSAKLS0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOwotICAgICAgICAgcmV0dXJuIDE7Ci0gCi0gZXJyb3JfY2xvc2VfZGV2OgotLSAgICAgICAgcGVkX2RldmljZV9jbG9zZSAoZGV2KTsKLSsgICAgICAgIF9kZXZpY2VfY2xvc2UgKGRldik7Ci0gZXJyb3I6Ci0gICAgICAgICByZXR1cm4gMDsKLSB9Ci1AQCAtMTI4Miw3ICsxMjg0LDcgQEAgaW5pdF9nZW5lcmljIChQZWREZXZpY2UqIGRldiwgY29uc3QgY2hhciogbW9kZWxfbmFtZSkKLSAgICAgICAgIGlmICghX2RldmljZV9zdGF0IChkZXYsICZkZXZfc3RhdCkpCi0gICAgICAgICAgICAgICAgIGdvdG8gZXJyb3I7Ci0gCi0tICAgICAgICBpZiAoIXBlZF9kZXZpY2Vfb3BlbiAoZGV2KSkKLSsgICAgICAgIGlmICghX2RldmljZV9vcGVuX3JvIChkZXYpKQotICAgICAgICAgICAgICAgICBnb3RvIGVycm9yOwotIAotICAgICAgICAgcGVkX2V4Y2VwdGlvbl9mZXRjaF9hbGwgKCk7Ci1AQCAtMTMzMCwxMSArMTMzMiwxMSBAQCBpbml0X2dlbmVyaWMgKFBlZERldmljZSogZGV2LCBjb25zdCBjaGFyKiBtb2RlbF9uYW1lKQotIAotICAgICAgICAgZGV2LT5tb2RlbCA9IHN0cmR1cCAobW9kZWxfbmFtZSk7Ci0gCi0tICAgICAgICBwZWRfZGV2aWNlX2Nsb3NlIChkZXYpOwotKyAgICAgICAgX2RldmljZV9jbG9zZSAoZGV2KTsKLSAgICAgICAgIHJldHVybiAxOwotIAotIGVycm9yX2Nsb3NlX2RldjoKLS0gICAgICAgIHBlZF9kZXZpY2VfY2xvc2UgKGRldik7Ci0rICAgICAgICBfZGV2aWNlX2Nsb3NlIChkZXYpOwotIGVycm9yOgotICAgICAgICAgcmV0dXJuIDA7Ci0gfQotQEAgLTE2MjEsMTIgKzE2MjMsMjcgQEAgcmV0cnk6Ci0gfQotIAotIHN0YXRpYyBpbnQKLStfZGV2aWNlX29wZW5fcm8gKFBlZERldmljZSogZGV2KQotK3sKLSsgICAgaW50IHJjID0gX2RldmljZV9vcGVuIChkZXYsIFJEX01PREUpOwotKyAgICBpZiAocmMpCi0rICAgICAgICBkZXYtPm9wZW5fY291bnQrKzsKLSsgICAgcmV0dXJuIHJjOwotK30KLSsKLStzdGF0aWMgaW50Ci0gbGludXhfb3BlbiAoUGVkRGV2aWNlKiBkZXYpCi0gewotKyAgICByZXR1cm4gX2RldmljZV9vcGVuIChkZXYsIFJXX01PREUpOwotK30KLSsKLStzdGF0aWMgaW50Ci0rX2RldmljZV9vcGVuIChQZWREZXZpY2UqIGRldiwgaW50IGZsYWdzKQotK3sKLSAgICAgICAgIExpbnV4U3BlY2lmaWMqICBhcmNoX3NwZWNpZmljID0gTElOVVhfU1BFQ0lGSUMgKGRldik7Ci0gCi0gcmV0cnk6Ci0tICAgICAgICBhcmNoX3NwZWNpZmljLT5mZCA9IG9wZW4gKGRldi0+cGF0aCwgUldfTU9ERSk7Ci0rICAgICAgICBhcmNoX3NwZWNpZmljLT5mZCA9IG9wZW4gKGRldi0+cGF0aCwgZmxhZ3MpOwotIAotICAgICAgICAgaWYgKGFyY2hfc3BlY2lmaWMtPmZkID09IC0xKSB7Ci0gICAgICAgICAgICAgICAgIGNoYXIqICAgcndfZXJyb3JfbXNnID0gc3RyZXJyb3IgKGVycm5vKTsKLUBAIC0xNjk1LDYgKzE3MTIsMTUgQEAgbGludXhfcmVmcmVzaF9jbG9zZSAoUGVkRGV2aWNlKiBkZXYpCi0gICAgICAgICByZXR1cm4gMTsKLSB9Ci0gCi0rc3RhdGljIGludAotK19kZXZpY2VfY2xvc2UgKFBlZERldmljZSogZGV2KQotK3sKLSsgICAgaW50IHJjID0gbGludXhfY2xvc2UgKGRldik7Ci0rICAgIGlmIChkZXYtPm9wZW5fY291bnQgPiAwKQotKyAgICAgICAgZGV2LT5vcGVuX2NvdW50LS07Ci0rICAgIHJldHVybiByYzsKLSt9Ci0rCi0gI2lmIFNJWkVPRl9PRkZfVCA8IDgKLSAKLSBzdGF0aWMgX3N5c2NhbGw1KGludCxfbGxzZWVrLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGlicGFydGVkLWZzLWFkZC1zb3VyY2VkaXItbGliLXRvLWluY2x1ZGUtcGF0aHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1saWJwYXJ0ZWQtZnMtYWRkLXNvdXJjZWRpci1saWItdG8taW5jbHVkZS1wYXRocy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGMyYWIyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGlicGFydGVkLWZzLWFkZC1zb3VyY2VkaXItbGliLXRvLWluY2x1ZGUtcGF0aHMucGF0Y2gKQEAgLTAsMCArMSwyNiBAQAorRnJvbSBkNjBhOGE4NmY2NTkzNzM4YjUzMjRjY2Q4ZmUzZTZkODRhMWZlN2JjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBXZWQsIDExIERlYyAyMDE5IDE0OjE4OjM2ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGxpYnBhcnRlZC9mczogYWRkICRzb3VyY2VkaXIvbGliIHRvIGluY2x1ZGUgcGF0aHMKKworT3RoZXJ3aXNlLCBnZXRvcHQtcGZ4LWNvcmUuaCB3b24ndCBiZSBmb3VuZC4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGxpYnBhcnRlZC9mcy9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2xpYnBhcnRlZC9mcy9NYWtlZmlsZS5hbSBiL2xpYnBhcnRlZC9mcy9NYWtlZmlsZS5hbQoraW5kZXggMjg2YmZmNi4uNjVmNDVkMyAxMDA2NDQKKy0tLSBhL2xpYnBhcnRlZC9mcy9NYWtlZmlsZS5hbQorKysrIGIvbGlicGFydGVkL2ZzL01ha2VmaWxlLmFtCitAQCAtMyw3ICszLDcgQEAKKyAjCisgIyBUaGlzIGZpbGUgbWF5IGJlIG1vZGlmaWVkIGFuZC9vciBkaXN0cmlidXRlZCB3aXRob3V0IHJlc3RyaWN0aW9uLgorIAorLXBhcnRlZGluY2x1ZGVkaXIgPSAtSSQodG9wX2J1aWxkZGlyKS9pbmNsdWRlIC1JJCh0b3Bfc3JjZGlyKS9pbmNsdWRlCisrcGFydGVkaW5jbHVkZWRpciA9IC1JJCh0b3BfYnVpbGRkaXIpL2luY2x1ZGUgLUkkKHRvcF9zcmNkaXIpL2luY2x1ZGUgLUkkKHRvcF9zcmNkaXIpL2xpYgorIAorIEFNX0NGTEFHUyA9ICQoV0FSTl9DRkxBR1MpCisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1saW51eC1JbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWFjcm8ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMS1saW51eC1JbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWFjcm8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxMjYyZTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzLzAwMDEtbGludXgtSW5jbHVkZS1zeXMtc3lzbWFjcm9zLmgtZm9yLW1ham9yLW1hY3JvLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSAwYjcyYjhlYjQxNDM4YjYyZWViOWUzNTQ4YjBiOGYzMDk0YTc4NjgxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIlJpY2hhcmQgVy5NLiBKb25lcyIgPHJqb25lc0ByZWRoYXQuY29tPgotRGF0ZTogU2F0LCAyNCBNYXIgMjAxOCAxNzozNzowMiArMDAwMAotU3ViamVjdDogW1BBVENIXSBsaW51eDogSW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPiBmb3IgbWFqb3IoKSBtYWNyby4KLQotU2luY2UgZ2xpYmMgMi4yNyB0aGlzIGhlYWRlciBpcyByZXF1aXJlZC4KLS0tLQotIGxpYnBhcnRlZC9hcmNoL2xpbnV4LmMgfCAxICsKLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKLQotZGlmZiAtLWdpdCBhL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMgYi9saWJwYXJ0ZWQvYXJjaC9saW51eC5jCi1pbmRleCAwZjE4OTA0Li5hMTU4NTRmIDEwMDY0NAotLS0tIGEvbGlicGFydGVkL2FyY2gvbGludXguYwotKysrIGIvbGlicGFydGVkL2FyY2gvbGludXguYwotQEAgLTQxLDYgKzQxLDcgQEAKLSAjaW5jbHVkZSA8c3lzL3V0c25hbWUuaD4gICAgICAgIC8qIGZvciB1bmFtZSgpICovCi0gI2luY2x1ZGUgPHNjc2kvc2NzaS5oPgotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSsjaW5jbHVkZSA8c3lzL3N5c21hY3Jvcy5oPgotICNpZmRlZiBFTkFCTEVfREVWSUNFX01BUFBFUgotICNpbmNsdWRlIDxsaWJkZXZtYXBwZXIuaD4KLSAjZW5kaWYKLS0tIAotMi4xMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy8wMDAyLXRlc3RzLXVzZS1za2lwXy1yYXRoZXItdGhhbi1za2lwX3Rlc3RfLXdoaWNoLWlzLXVuZGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMi10ZXN0cy11c2Utc2tpcF8tcmF0aGVyLXRoYW4tc2tpcF90ZXN0Xy13aGljaC1pcy11bmRlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjk1MjRhZGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvMDAwMi10ZXN0cy11c2Utc2tpcF8tcmF0aGVyLXRoYW4tc2tpcF90ZXN0Xy13aGljaC1pcy11bmRlLnBhdGNoCkBAIC0wLDAgKzEsNjYgQEAKK0Zyb20gOWY4NDQ0ODRjZWRiMzllMzAxYjAxNmU5ZGE3ODUyYzFhMGZiNmVlYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogV2VkLCAxMSBEZWMgMjAxOSAxNjoyNzo0OCArMDEwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0czogdXNlIHNraXBfIHJhdGhlciB0aGFuIHNraXBfdGVzdF8gKHdoaWNoIGlzIHVuZGVmaW5lZCkKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHRlc3RzL3Q2MDAxLXBzZXAuc2ggICAgICAgICAgICAgICB8IDIgKy0KKyB0ZXN0cy90NjAwNC1kbS1tYW55LXBhcnRpdGlvbnMuc2ggfCAyICstCisgdGVzdHMvdDYwMDUtZG0tdXVpZC5zaCAgICAgICAgICAgIHwgMiArLQorIHRlc3RzL3Q2MDA2LWRtLTUxMmItc2VjdG9ycy5zaCAgICB8IDIgKy0KKyA0IGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL3Q2MDAxLXBzZXAuc2ggYi90ZXN0cy90NjAwMS1wc2VwLnNoCitpbmRleCBlMzUwYmQyLi42NzAxNGEwIDEwMDY0NAorLS0tIGEvdGVzdHMvdDYwMDEtcHNlcC5zaAorKysrIGIvdGVzdHMvdDYwMDEtcHNlcC5zaAorQEAgLTIxLDcgKzIxLDcgQEAKKyByZXF1aXJlX3Jvb3RfCisgcmVxdWlyZV91ZGV2YWRtX3NldHRsZV8KKyAKKy0oZG1zZXR1cCAtLWhlbHApID4gL2Rldi9udWxsIDI+JjEgfHwgc2tpcF90ZXN0XyAiTm8gZG1zZXR1cCBpbnN0YWxsZWQiCisrKGRtc2V0dXAgLS1oZWxwKSA+IC9kZXYvbnVsbCAyPiYxIHx8IHNraXBfICJObyBkbXNldHVwIGluc3RhbGxlZCIKKyAKKyAjIERldmljZSBtYXBzIG5hbWVzIC0gc2hvdWxkIGJlIHJhbmRvbSB0byBub3QgY29uZmxpY3Qgd2l0aCBleGlzdGluZyBvbmVzIG9uCisgIyB0aGUgc3lzdGVtCitkaWZmIC0tZ2l0IGEvdGVzdHMvdDYwMDQtZG0tbWFueS1wYXJ0aXRpb25zLnNoIGIvdGVzdHMvdDYwMDQtZG0tbWFueS1wYXJ0aXRpb25zLnNoCitpbmRleCBiNGJlOTc1Li43MjE0ZjYwIDEwMDc1NQorLS0tIGEvdGVzdHMvdDYwMDQtZG0tbWFueS1wYXJ0aXRpb25zLnNoCisrKysgYi90ZXN0cy90NjAwNC1kbS1tYW55LXBhcnRpdGlvbnMuc2gKK0BAIC0yMSw3ICsyMSw3IEBACisgCisgcmVxdWlyZV9yb290XworIHJlcXVpcmVfdWRldmFkbV9zZXR0bGVfCistKGRtc2V0dXAgLS1oZWxwKSA+IC9kZXYvbnVsbCAyPiYxIHx8IHNraXBfdGVzdF8gIk5vIGRtc2V0dXAgaW5zdGFsbGVkIgorKyhkbXNldHVwIC0taGVscCkgPiAvZGV2L251bGwgMj4mMSB8fCBza2lwXyAiTm8gZG1zZXR1cCBpbnN0YWxsZWQiCisgCisgc3M9JHNlY3Rvcl9zaXplXworIG5zPTMwMAorZGlmZiAtLWdpdCBhL3Rlc3RzL3Q2MDA1LWRtLXV1aWQuc2ggYi90ZXN0cy90NjAwNS1kbS11dWlkLnNoCitpbmRleCA0MjY2NzQ3Li40NzkwYThiIDEwMDc1NQorLS0tIGEvdGVzdHMvdDYwMDUtZG0tdXVpZC5zaAorKysrIGIvdGVzdHMvdDYwMDUtZG0tdXVpZC5zaAorQEAgLTIxLDcgKzIxLDcgQEAKKyAKKyByZXF1aXJlX3Jvb3RfCisgcmVxdWlyZV91ZGV2YWRtX3NldHRsZV8KKy0oZG1zZXR1cCAtLWhlbHApID4gL2Rldi9udWxsIDI+JjEgfHwgc2tpcF90ZXN0XyAiTm8gZG1zZXR1cCBpbnN0YWxsZWQiCisrKGRtc2V0dXAgLS1oZWxwKSA+IC9kZXYvbnVsbCAyPiYxIHx8IHNraXBfICJObyBkbXNldHVwIGluc3RhbGxlZCIKKyAKKyBzcz0kc2VjdG9yX3NpemVfCisgbnM9MzAwCitkaWZmIC0tZ2l0IGEvdGVzdHMvdDYwMDYtZG0tNTEyYi1zZWN0b3JzLnNoIGIvdGVzdHMvdDYwMDYtZG0tNTEyYi1zZWN0b3JzLnNoCitpbmRleCBiZjMyMTM1Li5iNjc5YWRiIDEwMDY0NAorLS0tIGEvdGVzdHMvdDYwMDYtZG0tNTEyYi1zZWN0b3JzLnNoCisrKysgYi90ZXN0cy90NjAwNi1kbS01MTJiLXNlY3RvcnMuc2gKK0BAIC0yNSw3ICsyNSw3IEBAIHJlcXVpcmVfc2NzaV9kZWJ1Z19tb2R1bGVfCisgZ3JlcCAnXiNkZWZpbmUgVVNFX0JMS0lEIDEnICIkQ09ORklHX0hFQURFUiIgPiAvZGV2L251bGwgfHwKKyAgIHNraXBfICd0aGlzIHN5c3RlbSBsYWNrcyBhIG5ldy1lbm91Z2ggbGliYmxraWQnCisgCistKGRtc2V0dXAgLS1oZWxwKSA+IC9kZXYvbnVsbCAyPiYxIHx8IHNraXBfdGVzdF8gIk5vIGRtc2V0dXAgaW5zdGFsbGVkIgorKyhkbXNldHVwIC0taGVscCkgPiAvZGV2L251bGwgMj4mMSB8fCBza2lwXyAiTm8gZG1zZXR1cCBpbnN0YWxsZWQiCisgCisgIyBEZXZpY2UgbWFwcyBuYW1lcyAtIHNob3VsZCBiZSByYW5kb20gdG8gbm90IGNvbmZsaWN0IHdpdGggZXhpc3Rpbmcgb25lcyBvbgorICMgdGhlIHN5c3RlbQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL01ha2VmaWxlIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL01ha2VmaWxlCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZTkwYmUwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9NYWtlZmlsZQorKysgL2Rldi9udWxsCkBAIC0xLDI4NSArMCwwIEBACi1hbV9fdHR5X2NvbG9yc19kdW1teSA9IFwKLSAgbWduPSByZWQ9IGdybj0gbGduPSBibHU9IGJyZz0gc3RkPTsgXAotICBhbV9fY29sb3JfdGVzdHM9bm8KLQotYW1fX3R0eV9jb2xvcnMgPSBcCi0kKGFtX190dHlfY29sb3JzX2R1bW15KTsgXAotdGVzdCAiWCQoQU1fQ09MT1JfVEVTVFMpIiAhPSBYbm8gXAotJiYgdGVzdCAiWCQkVEVSTSIgIT0gWGR1bWIgXAotJiYgeyB0ZXN0ICJYJChBTV9DT0xPUl9URVNUUykiID0gWGFsd2F5cyB8fCB0ZXN0IC10IDEgMj4vZGV2L251bGw7IH0gXAotJiYgeyBcCi0gIGFtX19jb2xvcl90ZXN0cz15ZXM7IFwKLSAgcmVkPScbWzA7MzFtJzsgXAotICBncm49JxtbMDszMm0nOyBcCi0gIGxnbj0nG1sxOzMybSc7IFwKLSAgYmx1PScbWzE7MzRtJzsgXAotICBtZ249JxtbMDszNW0nOyBcCi0gIGJyZz0nG1sxbSc7IFwKLSAgc3RkPScbW20nOyBcCi19Ci0KLWFtX192cGF0aF9hZGpfc2V0dXAgPSBzcmNkaXJzdHJpcD1gZWNobyAiJChzcmNkaXIpIiB8IHNlZCAnc3wufC58ZydgOwotYW1fX3ZwYXRoX2FkaiA9IGNhc2UgJCRwIGluIFwKLSAgICAkKHNyY2RpcikvKikgZj1gZWNobyAiJCRwIiB8IHNlZCAic3xeJCRzcmNkaXJzdHJpcC98fCJgOzsgXAotICAgICopIGY9JCRwOzsgXAotICBlc2FjOwotYW1fX3JzdF90aXRsZSA9IHsgc2VkICdzLy4qLyAgICYgICAvO2g7cy8uLz0vZztwO3g7cy8gKiQkLy87cDtnJyAmJiBlY2hvOyB9Ci1hbV9fcnN0X3NlY3Rpb24gPSB7IHNlZCAncDtzLy4vPS9nOycgJiYgZWNobzsgfQotYW1fX3NoX2Vfc2V0dXAgPSBjYXNlICQkLSBpbiAqZSopIHNldCArZTs7IGVzYWMKLQotYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MgPSBcCi0gIC0tY29sb3ItdGVzdHMgIiQkYW1fX2NvbG9yX3Rlc3RzIiBcCi0gIC0tZW5hYmxlLWhhcmQtZXJyb3JzICIkJGFtX19lbmFibGVfaGFyZF9lcnJvcnMiIFwKLSAgLS1leHBlY3QtZmFpbHVyZSAiJCRhbV9fZXhwZWN0X2ZhaWx1cmUiCi1hbV9fY2hlY2tfcHJlID0gXAotJChhbV9fc2hfZV9zZXR1cCk7CQkJCQlcCi0kKGFtX192cGF0aF9hZGpfc2V0dXApICQoYW1fX3ZwYXRoX2FkaikJCQlcCi0kKGFtX190dHlfY29sb3JzKTsJCQkJCVwKLXNyY2Rpcj0kKHNyY2Rpcik7IGV4cG9ydCBzcmNkaXI7CQkJXAotYW1fX29kaXI9YGVjaG8gIi4vJEAiIHwgc2VkICdzfC9bXi9dKiQkfHwnYDsJCVwKLXRlc3QgIngkJGFtX19vZGlyIiA9IHguIHx8ICQoTUtESVJfUCkgIiQkYW1fX29kaXIiIHx8IGV4aXQgJCQ/OwlcCi1pZiB0ZXN0IC1mICIuLyQkZiI7IHRoZW4gZGlyPS4vOwkJCVwKLWVsaWYgdGVzdCAtZiAiJCRmIjsgdGhlbiBkaXI9OwkJCQlcCi1lbHNlIGRpcj0iJChzcmNkaXIpLyI7IGZpOwkJCQlcCi10c3Q9JCRkaXIkJGY7IGxvZz0nJEAnOyAJCQkJXAotaWYgdGVzdCAtbiAnJChESVNBQkxFX0hBUkRfRVJST1JTKSc7IHRoZW4JCVwKLSAgYW1fX2VuYWJsZV9oYXJkX2Vycm9ycz1ubzsgCQkJCVwKLWVsc2UJCQkJCQkJXAotICBhbV9fZW5hYmxlX2hhcmRfZXJyb3JzPXllczsgCQkJCVwKLWZpOyAJCQkJCQkJXAotJChBTV9URVNUU19FTlZJUk9OTUVOVCkgJChURVNUU19FTlZJUk9OTUVOVCkKLQotYW1fX3NldF9URVNUU19iYXNlcyA9IFwKLSAgYmFzZXM9JyQoVEVTVF9MT0dTKSc7IFwKLSAgYmFzZXM9YGZvciBpIGluICQkYmFzZXM7IGRvIGVjaG8gJCRpOyBkb25lIHwgc2VkICdzL1wubG9nJCQvLydgOyBcCi0gIGJhc2VzPWBlY2hvICQkYmFzZXNgCi0KLVJFQ0hFQ0tfTE9HUyA9ICQoVEVTVF9MT0dTKQotVEVTVF9TVUlURV9MT0cgPSB0ZXN0LXN1aXRlLmxvZwotYW1fX3Rlc3RfbG9nczEgPSAkKFRFU1RTOj0ubG9nKQotYW1fX3Rlc3RfbG9nczIgPSAkKGFtX190ZXN0X2xvZ3MxOi5sb2c9LmxvZykKLVRFU1RfTE9HUyA9ICQoYW1fX3Rlc3RfbG9nczI6LnNoLmxvZz0ubG9nKQotU0hfTE9HX0RSSVZFUiA9ICQoU0hFTEwpICQodG9wX3NyY2RpcikvYnVpbGQtYXV4L3Rlc3QtZHJpdmVyCi1TSF9MT0dfQ09NUElMRSA9ICQoU0hfTE9HX0NPTVBJTEVSKQotCi1hbV9fc2V0X2IgPSBcCi0gIGNhc2UgJyRAJyBpbiBcCi0gICAgKi8qKSBcCi0gICAgICBjYXNlICckKicgaW4gXAotICAgICAgICAqLyopIGI9JyQqJzs7IFwKLSAgICAgICAgICAqKSBiPWBlY2hvICckQCcgfCBzZWQgJ3MvXC5sb2ckJC8vJ2A7IFwKLSAgICAgICBlc2FjOzsgXAotICAgICopIFwKLSAgICAgIGI9JyQqJzs7IFwKLSAgZXNhYwotCi1NS0RJUl9QID0gL2Jpbi9ta2RpciAtcAotU0hFTEwgPSAvYmluL2Jhc2gKLVZFUlNJT04gPSAzLjEKLVBBQ0tBR0VfU1RSSU5HID0gR05VIHBhcnRlZCAzLjEKLVBBQ0tBR0VfQlVHUkVQT1JUID0gYnVnLXBhcnRlZEBnbnUub3JnCi1hYnNfc3JjZGlyID0gJChQV0QpCi1hYnNfdG9wX2J1aWxkZGlyID0gJChQV0QpLy4uCi1hYnNfdG9wX3NyY2RpciA9ICQoUFdEKS8uLgotc3JjZGlyID0gLgotdG9wX3NyY2RpciA9IC4uCi1zdWJkaXIgPSB0ZXN0cwotU0hfTE9HX0NPTVBJTEVSID0gJChTSEVMTCkKLQotVEVTVFMgPSBcCi0gIGhlbHAtdmVyc2lvbi5zaCBcCi0gIHQwMDAwLWJhc2ljLnNoIFwKLSAgdDAwMDEtdGlueS5zaCBcCi0gIHQwMDEwLXNjcmlwdC1uby1jdHJsLWNoYXJzLnNoIFwKLSAgdDAxMDAtcHJpbnQuc2ggXAotICB0MDEwMS1wcmludC1lbXB0eS5zaCBcCi0gIHQwMjAwLWdwdC5zaCBcCi0gIHQwMjAxLWdwdC5zaCBcCi0gIHQwMjAyLWdwdC1wbWJyLnNoIFwKLSAgdDAyMDMtZ3B0LXRpbnktZGV2aWNlLWFib3J0LnNoIFwKLSAgdDAyMDMtZ3B0LXNob3J0ZW5lZC1kZXZpY2UtcHJpbWFyeS12YWxpZC5zaCBcCi0gIHQwMjA1LWdwdC1saXN0LWNsb2JiZXJzLXBtYnIuc2ggXAotICB0MDIwNi1ncHQtcHJpbnQtd2l0aC1jb3JydXB0LXByaW1hcnktY2xvYmJlcnMtcG1ici5zaCBcCi0gIHQwMjA3LUlFQy1iaW5hcnktbm90YXRpb24uc2ggXAotICB0MDIwOC1ta3BhcnQtZW5kLWluLUlFQy5zaCBcCi0gIHQwMjA5LWdwdC1wbWJyX2Jvb3Quc2ggXAotICB0MDIxMC1ncHQtcmVzaXplZC1wYXJ0aXRpb24tZW50cnktYXJyYXkuc2ggXAotICB0MDIxMS1ncHQtcmV3cml0ZS1oZWFkZXIuc2ggXAotICB0MDIxMi1ncHQtbWFueS1wYXJ0aXRpb25zLnNoIFwKLSAgdDAyMjAtZ3B0LW1zZnRyZXMuc2ggXAotICB0MDI1MC1ncHQuc2ggXAotICB0MDI4MC1ncHQtY29ycnVwdC5zaCBcCi0gIHQwMzAwLWRvcy1vbi1ncHQuc2ggXAotICB0MDQwMC1sb29wLWNsb2JiZXItaW5mbG9vcC5zaCBcCi0gIHQwNTAwLWR1cC1jbG9iYmVyLnNoIFwKLSAgdDA1MDEtZHVwbGljYXRlLnNoIFwKLSAgdDExMDAtYnVzeS1sYWJlbC5zaCBcCi0gIHQxMTAxLWJ1c3ktcGFydGl0aW9uLnNoIFwKLSAgdDE3MDAtcHJvYmUtZnMuc2ggXAotICB0MjIwMC1kb3MtbGFiZWwtcmVjb2cuc2ggXAotICB0MjIwMS1wYzk4LWxhYmVsLXJlY29nLnNoIFwKLSAgdDIzMDAtZG9zLWxhYmVsLWV4dGVuZGVkLWJvb3Rjb2RlLnNoIFwKLSAgdDIzMTAtZG9zLWV4dGVuZGVkLTItc2VjdG9yLW1pbi1vZmZzZXQuc2ggXAotICB0MjQwMC1kb3MtaGZzLXBhcnRpdGlvbi10eXBlLnNoIFwKLSAgdDI1MDAtcHJvYmUtY29ycnVwdC1oZnMuc2ggXAotICB0MzAwMC1yZXNpemUtZnMuc2ggXAotICB0MzIwMC10eXBlLWNoYW5nZS5zaCBcCi0gIHQzMzAwLXBhbG8tcHJlcC5zaCBcCi0gIHQzMzEwLWZsYWdzLnNoIFwKLSAgdDM0MDAtd2hvbGUtZGlzay1GQVQtcGFydGl0aW9uLnNoIFwKLSAgdDQwMDAtc3VuLXJhaWQtdHlwZS5zaCBcCi0gIHQ0MDAxLXN1bi12dG9jLnNoIFwKLSAgdDQxMDAtbXNkb3MtcGFydGl0aW9uLWxpbWl0cy5zaCBcCi0gIHQ0MTAwLWR2aC1wYXJ0aXRpb24tbGltaXRzLnNoIFwKLSAgdDQxMDAtbXNkb3Mtc3RhcnRpbmctc2VjdG9yLnNoIFwKLSAgdDQyMDAtcGFydHByb2JlLnNoIFwKLSAgdDQzMDAtbmlsZnMyLXRpbnkuc2ggXAotICB0NTAwMC10YWdzLnNoIFwKLSAgdDYwMDAtZG0uc2ggXAotICB0NjAwMS1wc2VwLnNoIFwKLSAgdDYxMDAtbWRyYWlkLXBhcnRpdGlvbnMuc2ggXAotICB0NzAwMC1zY3JpcHRpbmcuc2ggXAotICB0ODAwMC1sb29wLnNoIFwKLSAgdDgwMDEtbG9vcC1ibGtwZy5zaCBcCi0gIHQ5MDEwLWJpZy1zZWN0b3Iuc2ggXAotICB0OTAyMC1hbGlnbm1lbnQuc2ggXAotICB0OTAyMS1tYXhpbWEuc2ggXAotICB0OTAyMi1vbmUtdW5pdC1zbmFwLnNoIFwKLSAgdDkwMjMtdmFsdWUtbHQtb25lLnNoIFwKLSAgdDkwMzAtYWxpZ24tY2hlY2suc2ggXAotICB0OTA0MC1tYW55LXBhcnRpdGlvbnMuc2ggXAotICB0OTA0MS11bmRldGVjdGVkLWluLXVzZS0xNnRoLXBhcnRpdGlvbi5zaCBcCi0gIHQ5MDQyLWRvcy1wYXJ0aXRpb24tbGltaXQuc2ggXAotICB0OTA1MC1wYXJ0aXRpb24tdGFibGUtdHlwZXMuc2gKLQotVEVTVFNfRU5WSVJPTk1FTlQgPSBcCi0gIGV4cG9ydAkJCQkJXAotICBhYnNfdG9wX2J1aWxkZGlyPSckKGFic190b3BfYnVpbGRkaXIpJwlcCi0gIGFic190b3Bfc3JjZGlyPSckKGFic190b3Bfc3JjZGlyKScJCVwKLSAgYWJzX3NyY2Rpcj0nJChhYnNfc3JjZGlyKScJCQlcCi0gIGJ1aWx0X3Byb2dyYW1zPXBhcnRlZAkJCQlcCi0gIHNyY2Rpcj0nJChzcmNkaXIpJwkJCQlcCi0gIHRvcF9zcmNkaXI9JyQodG9wX3NyY2RpciknCQkJXAotICBWRVJTSU9OPSQoVkVSU0lPTikJCQkJXAotICA7IDk+JjIKLQotLlNVRkZJWEVTOiAubG9nCi0KLSQoVEVTVF9TVUlURV9MT0cpOiAkKFRFU1RfTE9HUykKLQlAJChhbV9fc2hfZV9zZXR1cCk7ICQoYW1fX3R0eV9jb2xvcnMpOyAkKGFtX19zZXRfVEVTVFNfYmFzZXMpOyBcCi0Jd3M9J1sgCV0nOyBcCi0JcmVzdWx0cz1gZm9yIGIgaW4gJCRiYXNlczsgZG8gZWNobyAkJGIudHJzOyBkb25lYDsgXAotCXRlc3QgLW4gIiQkcmVzdWx0cyIgfHwgcmVzdWx0cz0vZGV2L251bGw7IFwKLQlhbGw9YCAgZ3JlcCAiXiQkd3MqOnRlc3QtcmVzdWx0OiIgICAgICAgICAgICQkcmVzdWx0cyB8IHdjIC1sYDsgXAotCXBhc3M9YCBncmVwICJeJCR3cyo6dGVzdC1yZXN1bHQ6JCR3cypQQVNTIiAgJCRyZXN1bHRzIHwgd2MgLWxgOyBcCi0JZmFpbD1gIGdyZXAgIl4kJHdzKjp0ZXN0LXJlc3VsdDokJHdzKkZBSUwiICAkJHJlc3VsdHMgfCB3YyAtbGA7IFwKLQlza2lwPWAgZ3JlcCAiXiQkd3MqOnRlc3QtcmVzdWx0OiQkd3MqU0tJUCIgICQkcmVzdWx0cyB8IHdjIC1sYDsgXAotCXhmYWlsPWBncmVwICJeJCR3cyo6dGVzdC1yZXN1bHQ6JCR3cypYRkFJTCIgJCRyZXN1bHRzIHwgd2MgLWxgOyBcCi0JeHBhc3M9YGdyZXAgIl4kJHdzKjp0ZXN0LXJlc3VsdDokJHdzKlhQQVNTIiAkJHJlc3VsdHMgfCB3YyAtbGA7IFwKLQllcnJvcj1gZ3JlcCAiXiQkd3MqOnRlc3QtcmVzdWx0OiQkd3MqRVJST1IiICQkcmVzdWx0cyB8IHdjIC1sYDsgXAotCWlmIHRlc3QgYGV4cHIgJCRmYWlsICsgJCR4cGFzcyArICQkZXJyb3JgIC1lcSAwOyB0aGVuIFwKLQkgIHN1Y2Nlc3M9dHJ1ZTsgXAotCWVsc2UgXAotCSAgc3VjY2Vzcz1mYWxzZTsgXAotCWZpOyBcCi0JYnI9Jz09PT09PT09PT09PT09PT09PT0nOyBicj0kJGJyJCRiciQkYnIkJGJyOyBcCi0JcmVzdWx0X2NvdW50ICgpIFwKLQl7IFwKLQkgICAgaWYgdGVzdCB4IiQkMSIgPSB4Ii0tbWF5YmUtY29sb3IiOyB0aGVuIFwKLQkgICAgICBtYXliZV9jb2xvcml6ZT15ZXM7IFwKLQkgICAgZWxpZiB0ZXN0IHgiJCQxIiA9IHgiLS1uby1jb2xvciI7IHRoZW4gXAotCSAgICAgIG1heWJlX2NvbG9yaXplPW5vOyBcCi0JICAgIGVsc2UgXAotCSAgICAgIGVjaG8gIiRAOiBpbnZhbGlkICdyZXN1bHRfY291bnQnIHVzYWdlIiA+JjI7IGV4aXQgNDsgXAotCSAgICBmaTsgXAotCSAgICBzaGlmdDsgXAotCSAgICBkZXNjPSQkMSBjb3VudD0kJDI7IFwKLQkgICAgaWYgdGVzdCAkJG1heWJlX2NvbG9yaXplID0geWVzICYmIHRlc3QgJCRjb3VudCAtZ3QgMDsgdGhlbiBcCi0JICAgICAgY29sb3Jfc3RhcnQ9JCQzIGNvbG9yX2VuZD0kJHN0ZDsgXAotCSAgICBlbHNlIFwKLQkgICAgICBjb2xvcl9zdGFydD0gY29sb3JfZW5kPTsgXAotCSAgICBmaTsgXAotCSAgICBlY2hvICIkJHtjb2xvcl9zdGFydH0jICQkZGVzYyAkJGNvdW50JCR7Y29sb3JfZW5kfSI7IFwKLQl9OyBcCi0JY3JlYXRlX3Rlc3RzdWl0ZV9yZXBvcnQgKCkgXAotCXsgXAotCSAgcmVzdWx0X2NvdW50ICQkMSAiVE9UQUw6IiAkJGFsbCAgICIkJGJyZyI7IFwKLQkgIHJlc3VsdF9jb3VudCAkJDEgIlBBU1M6ICIgJCRwYXNzICAiJCRncm4iOyBcCi0JICByZXN1bHRfY291bnQgJCQxICJTS0lQOiAiICQkc2tpcCAgIiQkYmx1IjsgXAotCSAgcmVzdWx0X2NvdW50ICQkMSAiWEZBSUw6IiAkJHhmYWlsICIkJGxnbiI7IFwKLQkgIHJlc3VsdF9jb3VudCAkJDEgIkZBSUw6ICIgJCRmYWlsICAiJCRyZWQiOyBcCi0JICByZXN1bHRfY291bnQgJCQxICJYUEFTUzoiICQkeHBhc3MgIiQkcmVkIjsgXAotCSAgcmVzdWx0X2NvdW50ICQkMSAiRVJST1I6IiAkJGVycm9yICIkJG1nbiI7IFwKLQl9OyBcCi0JewkJCQkJCQkJXAotCSAgZWNobyAiJChQQUNLQUdFX1NUUklORyk6ICQoc3ViZGlyKS8kKFRFU1RfU1VJVEVfTE9HKSIgfAlcCi0JICAgICQoYW1fX3JzdF90aXRsZSk7CQkJCQkJXAotCSAgY3JlYXRlX3Rlc3RzdWl0ZV9yZXBvcnQgLS1uby1jb2xvcjsJCQkJXAotCSAgZWNobzsJCQkJCQkJCVwKLQkgIGVjaG8gIi4uIGNvbnRlbnRzOjogOmRlcHRoOiAyIjsJCQkJXAotCSAgZWNobzsJCQkJCQkJCVwKLQkgIGZvciBpIGluICQkYmFzZXM7IGRvCQkJCQkJXAotCSAgICBpZiBncmVwICJeJCR3cyo6Y29weS1pbi1nbG9iYWwtbG9nOiQkd3Mqbm8kJHdzKiQkIiAkJGkudHJzIFwKLQkgICAgICAgICA+L2Rldi9udWxsOyB0aGVuIGNvbnRpbnVlOyBcCi0JICAgIGZpOyBcCi0JICAgIGdsb2JfcmVzPWBzZWQgLW4gLWUgInMvJCR3cyokJC8vIiBcCi0JICAgICAgICAgICAgICAgICAgICAgLWUgInMvXiQkd3MqOmdsb2JhbC10ZXN0LXJlc3VsdDokJHdzKi8vcCIgXAotCQkgICAgICAgICQkaS50cnNgOyBcCi0JICAgIHRlc3QgLW4gIiQkZ2xvYl9yZXMiIHx8IGdsb2JfcmVzPVJVTjsgXAotCSAgICBlY2hvICIkJGdsb2JfcmVzOiAkJGkiIHwgJChhbV9fcnN0X3NlY3Rpb24pOyBcCi0JICAgIGlmIHRlc3QgISAtciAkJGkubG9nOyB0aGVuIFwKLQkgICAgICBlY2hvICJmYXRhbDogbWFraW5nICRAOiAkJGkubG9nIGlzIHVucmVhZGFibGUiID4mMjsgXAotCSAgICAgIGV4aXQgMTsgXAotCSAgICBmaTsgXAotCSAgICBjYXQgJCRpLmxvZzsgZWNobzsgXAotCSAgZG9uZTsJXAotCX0gPiQoVEVTVF9TVUlURV9MT0cpLnRtcDsJCQkJCVwKLQltdiAkKFRFU1RfU1VJVEVfTE9HKS50bXAgJChURVNUX1NVSVRFX0xPRyk7CQkJXAotCWlmICQkc3VjY2VzczsgdGhlbgkJCQkJCVwKLQkgIGNvbD0iJCRncm4iOwkJCQkJCQlcCi0JIGVsc2UJCQkJCQkJCVwKLQkgIGNvbD0iJCRyZWQiOwkJCQkJCQlcCi0JICB0ZXN0IHgiJCRWRVJCT1NFIiA9IHggfHwgY2F0ICQoVEVTVF9TVUlURV9MT0cpOwkJXAotCWZpOwkJCQkJCQkJXAotCWVjaG8gIiQke2NvbH0kJGJyJCR7c3RkfSI7IAkJCQkJXAotCWVjaG8gIiQke2NvbH1UZXN0c3VpdGUgc3VtbWFyeSBmb3IgJChQQUNLQUdFX1NUUklORykkJHtzdGR9IjsJXAotCWVjaG8gIiQke2NvbH0kJGJyJCR7c3RkfSI7IAkJCQkJXAotCWNyZWF0ZV90ZXN0c3VpdGVfcmVwb3J0IC0tbWF5YmUtY29sb3I7CQkJCVwKLQllY2hvICIkJGNvbCQkYnIkJHN0ZCI7CQkJCQkJXAotCWlmICQkc3VjY2VzczsgdGhlbiA6OyBlbHNlCQkJCQlcCi0JICBlY2hvICIkJHtjb2x9U2VlICQoc3ViZGlyKS8kKFRFU1RfU1VJVEVfTE9HKSQke3N0ZH0iOwkJXAotCSAgaWYgdGVzdCAtbiAiJChQQUNLQUdFX0JVR1JFUE9SVCkiOyB0aGVuCQkJXAotCSAgICBlY2hvICIkJHtjb2x9UGxlYXNlIHJlcG9ydCB0byAkKFBBQ0tBR0VfQlVHUkVQT1JUKSQke3N0ZH0iOwlcCi0JICBmaTsJCQkJCQkJCVwKLQkgIGVjaG8gIiQkY29sJCRiciQkc3RkIjsJCQkJCVwKLQlmaTsJCQkJCQkJCVwKLQkkJHN1Y2Nlc3MgfHwgZXhpdCAxCi0KLWNoZWNrLVRFU1RTOgotCUBpZiB0ZXN0ICRAICE9IHJlY2hlY2s7IHRoZW4gXAotCSAgIGxpc3Q9JyQoUkVDSEVDS19MT0dTKSc7IFwKLQkgICB0ZXN0IC16ICIkJGxpc3QiIHx8IHJtIC1mICQkbGlzdDsgXAotCSBmaQotCUB0ZXN0IC16ICIkKFRFU1RfU1VJVEVfTE9HKSIgfHwgcm0gLWYgJChURVNUX1NVSVRFX0xPRykKLQlAd3M9J1sgCV0nOyBcCi0JbG9nX2xpc3Q9JycgdHJzX2xpc3Q9Jyc7ICQoYW1fX3NldF9URVNUU19iYXNlcyk7IFwKLQlmb3IgaSBpbiAkJGJhc2VzOyBkbyBcCi0JICBpZiB0ZXN0IC16ICIkJGxvZ19saXN0IjsgdGhlbiBcCi0JICAgIGxvZ19saXN0PSIkJGkubG9nIjsgXAotCSAgZWxzZSBcCi0JICAgIGxvZ19saXN0PSIkJGxvZ19saXN0ICQkaS5sb2ciOyBcCi0JICBmaTsgXAotCSAgaWYgdGVzdCAteiAiJCR0cnNfbGlzdCI7IHRoZW4gXAotCSAgICB0cnNfbGlzdD0iJCRpLnRycyI7IFwKLQkgIGVsc2UgXAotCSAgICB0cnNfbGlzdD0iJCR0cnNfbGlzdCAkJGkudHJzIjsgXAotCSAgZmk7IFwKLQlkb25lOyBcCi0JJChNQUtFKSAkKEFNX01BS0VGTEFHUykgJChURVNUX1NVSVRFX0xPRykgVEVTVF9MT0dTPSIkJGxvZ19saXN0IgotCi0uc2gubG9nOgotCUBwPSckPCc7IFwKLQkkKGFtX19zZXRfYik7IFwKLQkkKGFtX19jaGVja19wcmUpICQoU0hfTE9HX0RSSVZFUikgLS10ZXN0LW5hbWUgIiQkZiIgXAotCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgXAotCSQoYW1fX2NvbW1vbl9kcml2ZXJfZmxhZ3MpIC0tICQoU0hfTE9HX0NPTVBJTEUpICIkJHRzdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9kbV9jaGVjay5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9kbV9jaGVjay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWYzYzRkZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvZG1fY2hlY2sucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1wYXJ0ZWQ6IGNoYW5nZSBjaGVjayBmb3IgZGV2aWNlLW1hbmFnZXIKLQotT3RoZXIgcHRlc3RzIHVzZSB0aGlzIG1ldGhvZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2J1Zy1wYXJ0ZWRAZ251Lm9yZ10KLQotU2lnbmVkLW9mZi1ieTogSm9lIFNsYXRlciA8am9lLnNsYXRlckB3aW5kcml2ZXIuY29tPgotCi0KLS0tLSBhL3Rlc3RzL3Q2MDAxLXBzZXAuc2gKLSsrKyBiL3Rlc3RzL3Q2MDAxLXBzZXAuc2gKLUBAIC0xOSw3ICsxOSw5IEBACi0gLiAiJHtzcmNkaXI9Ln0vaW5pdC5zaCI7IHBhdGhfcHJlcGVuZF8gLi4vcGFydGVkCi0gCi0gcmVxdWlyZV9yb290XwotLShkbXNldHVwIC0taGVscCkgPiAvZGV2L251bGwgMj4mMSB8fCBza2lwX3Rlc3RfICJObyBkbXNldHVwIGluc3RhbGxlZCIKLSsKLSt0ZXN0ICJ4JEVOQUJMRV9ERVZJQ0VfTUFQUEVSIiA9IHh5ZXMgXAotKyAgfHwgc2tpcF8gIm5vIGRldmljZS1tYXBwZXIgc3VwcG9ydCIKLSAKLSAjIERldmljZSBtYXBzIG5hbWVzIC0gc2hvdWxkIGJlIHJhbmRvbSB0byBub3QgY29uZmxpY3Qgd2l0aCBleGlzdGluZyBvbmVzIG9uCi0gIyB0aGUgc3lzdGVtCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvZml4LWNvbXBpbGUtZmFpbHVyZS13aGlsZS1kaXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvZml4LWNvbXBpbGUtZmFpbHVyZS13aGlsZS1kaXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjNGQyYWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL2ZpeC1jb21waWxlLWZhaWx1cmUtd2hpbGUtZGlzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsODEgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotRnJvbSBkYTNmMTI5NzEwOTI5YWJlOWE0MDM5MDFmYTdkMTY4MzU1YjBlOTVhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRmVsaXggSmFuZGEgPGZlbGl4LmphbmRhQHBvc3Rlby5kZT4KLURhdGU6IFN1biwgMyBNYXkgMjAxNSAxMDozMzoxNSArMDIwMAotU3ViamVjdDogW1BBVENIXSBsaWJwYXJ0ZWQvYXJjaC9saW51eC5jOiBDb21waWxlIHdpdGhvdXQgRU5BQkxFX0RFVklDRV9NQVBQRVIKLQotU2lnbmVkLW9mZi1ieTogQnJpYW4gQy4gTGFuZSA8YmNsQHJlZGhhdC5jb20+Ci0tLS0KLSBsaWJwYXJ0ZWQvYXJjaC9saW51eC5jIHwgMjEgKysrKysrKysrKysrKysrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDE3IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJwYXJ0ZWQvYXJjaC9saW51eC5jIGIvbGlicGFydGVkL2FyY2gvbGludXguYwotaW5kZXggYTE1ODU0Zi4uN2YxMmY1OCAxMDA2NDQKLS0tLSBhL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKLSsrKyBiL2xpYnBhcnRlZC9hcmNoL2xpbnV4LmMKLUBAIC0yMzA1LDYgKzIzMDUsNyBAQCB6YXNwcmludGYgKGNvbnN0IGNoYXIgKmZvcm1hdCwgLi4uKQotICAgcmV0dXJuIHIgPCAwID8gTlVMTCA6IHJlc3VsdHA7Ci0gfQotIAotKyNpZmRlZiBFTkFCTEVfREVWSUNFX01BUFBFUgotIHN0YXRpYyBjaGFyICoKLSBkbV9jYW5vbmljYWxfcGF0aCAoUGVkRGV2aWNlIGNvbnN0ICpkZXYpCi0gewotQEAgLTIzMjcsMTQgKzIzMjgsMjEgQEAgZG1fY2Fub25pY2FsX3BhdGggKFBlZERldmljZSBjb25zdCAqZGV2KQotIGVycjoKLSAgICAgICAgIHJldHVybiBOVUxMOwotIH0KLSsjZW5kaWYKLSAKLSBzdGF0aWMgY2hhcioKLSBfZGV2aWNlX2dldF9wYXJ0X3BhdGggKFBlZERldmljZSBjb25zdCAqZGV2LCBpbnQgbnVtKQotIHsKLS0gICAgICAgIGNoYXIgKmRldnBhdGggPSAoZGV2LT50eXBlID09IFBFRF9ERVZJQ0VfRE0KLS0gICAgICAgICAgICAgICAgICAgICAgICAgPyBkbV9jYW5vbmljYWxfcGF0aCAoZGV2KSA6IGRldi0+cGF0aCk7Ci0tICAgICAgICBzaXplX3QgcGF0aF9sZW4gPSBzdHJsZW4gKGRldnBhdGgpOwotKyAgICAgICAgY2hhciAqZGV2cGF0aDsKLSsgICAgICAgIHNpemVfdCBwYXRoX2xlbjsKLSAgICAgICAgIGNoYXIgKnJlc3VsdDsKLSsjaWZkZWYgRU5BQkxFX0RFVklDRV9NQVBQRVIKLSsgICAgICAgIGRldnBhdGggPSAoZGV2LT50eXBlID09IFBFRF9ERVZJQ0VfRE0KLSsgICAgICAgICAgICAgICAgICAgICAgICAgPyBkbV9jYW5vbmljYWxfcGF0aCAoZGV2KSA6IGRldi0+cGF0aCk7Ci0rI2Vsc2UKLSsgICAgICAgIGRldnBhdGggPSBkZXYtPnBhdGg7Ci0rI2VuZGlmCi0rICAgICAgICBwYXRoX2xlbiA9IHN0cmxlbiAoZGV2cGF0aCk7Ci0gICAgICAgICAvKiBDaGVjayBmb3IgZGV2ZnMtc3R5bGUgL2Rpc2MgPT4gL3BhcnROIHRyYW5zZm9ybWF0aW9uCi0gICAgICAgICAgICB1bmNvbmRpdGlvbmFsbHk7IHRoZSBzeXN0ZW0gbWlnaHQgYmUgdXNpbmcgdWRldiB3aXRoIGRldmZzIHJ1bGVzLAotICAgICAgICAgICAgYW5kIGlmIG5vdCB0aGUgdGVzdCBpcyBoYXJtbGVzcy4gKi8KLUBAIC0yMzUwLDggKzIzNTgsMTAgQEAgX2RldmljZV9nZXRfcGFydF9wYXRoIChQZWREZXZpY2UgY29uc3QgKmRldiwgaW50IG51bSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA/ICJwIiA6ICIiKTsKLSAgICAgICAgICAgICAgICAgcmVzdWx0ID0gemFzcHJpbnRmICgiJXMlcyVkIiwgZGV2cGF0aCwgcCwgbnVtKTsKLSAgICAgICAgIH0KLSsjaWZkZWYgRU5BQkxFX0RFVklDRV9NQVBQRVIKLSAgICAgICAgIGlmIChkZXYtPnR5cGUgPT0gUEVEX0RFVklDRV9ETSkKLSAgICAgICAgICAgICAgICAgZnJlZSAoZGV2cGF0aCk7Ci0rI2VuZGlmCi0gICAgICAgICByZXR1cm4gcmVzdWx0OwotIH0KLSAKLUBAIC0yOTQ2LDEyICsyOTU2LDE1IEBAIF9kaXNrX3N5bmNfcGFydF90YWJsZSAoUGVkRGlzayogZGlzaykKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGxvbmcgbG9uZyAqbGVuZ3RoKTsKLSAKLSAKLSsjaWZkZWYgRU5BQkxFX0RFVklDRV9NQVBQRVIKLSAgICAgICAgIGlmIChkaXNrLT5kZXYtPnR5cGUgPT0gUEVEX0RFVklDRV9ETSkgewotICAgICAgICAgICAgICAgICBhZGRfcGFydGl0aW9uID0gX2RtX2FkZF9wYXJ0aXRpb247Ci0gICAgICAgICAgICAgICAgIHJlbW92ZV9wYXJ0aXRpb24gPSBfZG1fcmVtb3ZlX3BhcnRpdGlvbjsKLSAgICAgICAgICAgICAgICAgcmVzaXplX3BhcnRpdGlvbiA9IF9kbV9yZXNpemVfcGFydGl0aW9uOwotICAgICAgICAgICAgICAgICBnZXRfcGFydGl0aW9uX3N0YXJ0X2FuZF9sZW5ndGggPSBfZG1fZ2V0X3BhcnRpdGlvbl9zdGFydF9hbmRfbGVuZ3RoOwotLSAgICAgICAgfSBlbHNlIHsKLSsgICAgICAgIH0gZWxzZQotKyNlbmRpZgotKyAgICAgICAgewotICAgICAgICAgICAgICAgICBhZGRfcGFydGl0aW9uID0gX2Jsa3BnX2FkZF9wYXJ0aXRpb247Ci0gICAgICAgICAgICAgICAgIHJlbW92ZV9wYXJ0aXRpb24gPSBfYmxrcGdfcmVtb3ZlX3BhcnRpdGlvbjsKLSAjaWZkZWYgQkxLUEdfUkVTSVpFX1BBUlRJVElPTgotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9maWxlcy9ydW4tcHRlc3QKaW5kZXggNjk1YzVlOC4uZjM5YzQ3OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL2ZpbGVzL3J1bi1wdGVzdAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvZmlsZXMvcnVuLXB0ZXN0CkBAIC0xLDMgKzEsNSBAQAogIyEvYmluL3NoCiAKLW1ha2UgLUMgdGVzdHMgY2hlY2stVEVTVFMKK2VjaG8gL2Rldi9zZGExID4+IC9ldGMvdWRldi9tb3VudC5ibGFja2xpc3QuZC9wYXJ0ZWQtdG1wCittYWtlIC1DIHRlc3RzIHRlc3Qtc3VpdGUubG9nCitybSAvZXRjL3VkZXYvbW91bnQuYmxhY2tsaXN0LmQvcGFydGVkLXRtcApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGFydGVkL3BhcnRlZF8zLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjFhODE1My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU2ICswLDAgQEAKLVNVTU1BUlkgPSAiRGlzayBwYXJ0aXRpb24gZWRpdGluZy9yZXNpemluZyB1dGlsaXR5IgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3BhcnRlZC9wYXJ0ZWQuaHRtbCIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmYzMWIyNjZkMzQ0MGRkN2VlNTBmOTJjZjY3ZDhlNmMiCi1TRUNUSU9OID0gImNvbnNvbGUvdG9vbHMiCi1ERVBFTkRTID0gIm5jdXJzZXMgcmVhZGxpbmUgdXRpbC1saW51eCB2aXJ0dWFsL2xpYmljb252IgotUFIgPSAicjEiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9wYXJ0ZWQvcGFydGVkLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9ub19jaGVjay5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtZG9jLW1hbmRpci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtY29tcGlsZS1mYWlsdXJlLXdoaWxlLWRpcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUluY2x1ZGUtZmNudGwuaC1pbi1wbGF0Zm9ybV9kZWZzLmgucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWxpYnBhcnRlZF9mc19yZXNpemUtbGluay1hZ2FpbnN0LWxpYnV1aWQtZXhwbGljaXRseS0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Nb3ZlLXB5dGhvbi1oZWxwZXItc2NyaXB0cy11c2VkLW9ubHktaW4tdGVzdHMtdG8tUHl0LnBhdGNoIFwKLQkgICBmaWxlOi8vMDAwMS1saW51eC1JbmNsdWRlLXN5cy1zeXNtYWNyb3MuaC1mb3ItbWFqb3ItbWFjcm8ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbGlicGFydGVkLVVzZS1yZWFkLW9ubHktd2hlbi1wcm9iaW5nLWRldmljZXMtb24tbGludS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kbV9jaGVjay5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwMjQ3YjZhN2IzMTRmOGVkZWI2MTgxNTlmYTk1ZjljYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NThiNTg5YzIyMjk3Y2FjZGY0MzdmM2JhZmY2ZjA0YjMzMzA4NzUyMWFiMjc0ZjdhYjY3N2NiOGM2YmI3OGU0IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWRldmljZS1tYXBwZXIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IHRleGluZm8gcHRlc3QKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0Jb2VfcnVubWFrZSAtQyB0ZXN0cyBwcmludC1hbGlnbiBwcmludC1tYXggZHVwLWNsb2JiZXIgZHVwbGljYXRlIGZzLXJlc2l6ZQotfQotCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXQ9JHtEfSR7UFRFU1RfUEFUSH0KLQlta2RpciAkdC9idWlsZC1hdXgKLQljcCAke1N9L2J1aWxkLWF1eC90ZXN0LWRyaXZlciAkdC9idWlsZC1hdXgvCi0JY3AgLXIgJHtTfS90ZXN0cyAkdAotCWNwICR7V09SS0RJUn0vTWFrZWZpbGUgJHQvdGVzdHMvCi0Jc2VkIC1pICJzfF5WRVJTSU9OLip8VkVSU0lPTiA9ICR7UFZ9fGciICR0L3Rlc3RzL01ha2VmaWxlCi0JZm9yIGkgaW4gcHJpbnQtYWxpZ24gcHJpbnQtbWF4IGR1cC1jbG9iYmVyIGR1cGxpY2F0ZSBmcy1yZXNpemU7IFwKLQkgIGRvIGNwICR7Qn0vdGVzdHMvLmxpYnMvJGkgJHQvdGVzdHMvOyBcCi0JZG9uZQotCXNlZCAtZSAnc3wgLi4vcGFydGVkfHwnIC1pICR0L3Rlc3RzLyouc2gKLX0KLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYmFzaCBjb3JldXRpbHMgcGVybCB1dGlsLWxpbnV4LWxvc2V0dXAgcHl0aG9uMyBtYWtlIgotCi1pbmhlcml0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAicGFydHByb2JlIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3BhcnRwcm9iZV0gPSAiJHtzYmluZGlyfS9wYXJ0cHJvYmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BhcnRlZC9wYXJ0ZWRfMy4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjFjZmQ5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wYXJ0ZWQvcGFydGVkXzMuMy5iYgpAQCAtMCwwICsxLDU5IEBACitTVU1NQVJZID0gIkRpc2sgcGFydGl0aW9uIGVkaXRpbmcvcmVzaXppbmcgdXRpbGl0eSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9wYXJ0ZWQvcGFydGVkLmh0bWwiCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJmMzFiMjY2ZDM0NDBkZDdlZTUwZjkyY2Y2N2Q4ZTZjIgorU0VDVElPTiA9ICJjb25zb2xlL3Rvb2xzIgorREVQRU5EUyA9ICJuY3Vyc2VzIHJlYWRsaW5lIHV0aWwtbGludXggdmlydHVhbC9saWJpY29udiIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3BhcnRlZC9wYXJ0ZWQtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL25vX2NoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1kb2MtbWFuZGlyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbGlicGFydGVkX2ZzX3Jlc2l6ZS1saW5rLWFnYWluc3QtbGlidXVpZC1leHBsaWNpdGx5LS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1vdmUtcHl0aG9uLWhlbHBlci1zY3JpcHRzLXVzZWQtb25seS1pbi10ZXN0cy10by1QeXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGlicGFydGVkLWZzLWFkZC1zb3VyY2VkaXItbGliLXRvLWluY2x1ZGUtcGF0aHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi10ZXN0cy11c2Utc2tpcF8tcmF0aGVyLXRoYW4tc2tpcF90ZXN0Xy13aGljaC1pcy11bmRlLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMDkwNjU1ZDA1ZjNjNDcxYWE4ZTE1YTI3NTM2ODg5ZWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTdlMmI0YmQ4NzAxODYyNWM1MTU0MjFkNDUyNGY2ZTNiNTUxNzViNDcyMzAyMDU2MzkxYzVmN2VjY2I4M2Q0NCIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZXZpY2UtbWFwcGVyIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCB0ZXhpbmZvIHB0ZXN0CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgLUMgdGVzdHMgcHJpbnQtYWxpZ24gcHJpbnQtbWF4IGR1cC1jbG9iYmVyIGR1cGxpY2F0ZSBmcy1yZXNpemUgcHJpbnQtZmxhZ3MKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwl0PSR7RH0ke1BURVNUX1BBVEh9CisJbWtkaXIgJHQvYnVpbGQtYXV4CisJY3AgJHtTfS9idWlsZC1hdXgvdGVzdC1kcml2ZXIgJHQvYnVpbGQtYXV4LworCWNwIC1yICR7U30vdGVzdHMgJHQKKwljcCAke0J9L3Rlc3RzL01ha2VmaWxlICR0L3Rlc3RzLworCXNlZCAtaSAic3xeVkVSU0lPTi4qfFZFUlNJT04gPSAke1BWfXxnIiAkdC90ZXN0cy9NYWtlZmlsZQorCXNlZCAtaSAic3xec3JjZGlyID0uKnxzcmNkaXIgPSBcLnxnIiAkdC90ZXN0cy9NYWtlZmlsZQorCXNlZCAtaSAic3xeYWJzX3NyY2RpciA9Lip8YWJzX3NyY2RpciA9IFwufGciICR0L3Rlc3RzL01ha2VmaWxlCisJc2VkIC1pICJzfF5hYnNfdG9wX3NyY2RpciA9Lip8YWJzX3RvcF9zcmNkaXIgPSBcLlwufGciICR0L3Rlc3RzL01ha2VmaWxlCisJc2VkIC1pICJzfF5NYWtlZmlsZTouKnxNYWtlZmlsZTp8ZyIgJHQvdGVzdHMvTWFrZWZpbGUKKwlmb3IgaSBpbiBwcmludC1hbGlnbiBwcmludC1tYXggcHJpbnQtZmxhZ3MgZHVwLWNsb2JiZXIgZHVwbGljYXRlIGZzLXJlc2l6ZTsgXAorCSAgZG8gY3AgJHtCfS90ZXN0cy8ubGlicy8kaSAkdC90ZXN0cy87IFwKKwlkb25lCisJc2VkIC1lICdzfCAuLi9wYXJ0ZWR8fCcgLWkgJHQvdGVzdHMvKi5zaAorfQorCitSREVQRU5EU18ke1BOfS1wdGVzdCA9ICJiYXNoIGNvcmV1dGlscyBwZXJsIHV0aWwtbGludXgtbG9zZXR1cCBweXRob24zIG1ha2UgZ2F3ayBlMmZzcHJvZ3MtbWtlMmZzIgorCitSREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICJcCisgICAgICAgIGdsaWJjLXV0aWxzIFwKKyAgICAgICAgbG9jYWxlLWJhc2UtZW4tdXMgXAorICAgICAgICAiCisKK2luaGVyaXQgdXBkYXRlLWFsdGVybmF0aXZlcworCitBTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCitBTFRFUk5BVElWRV8ke1BOfSA9ICJwYXJ0cHJvYmUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbcGFydHByb2JlXSA9ICIke3NiaW5kaXJ9L3BhcnRwcm9iZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BiemlwMi9wYnppcDJfMS4xLjEzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGJ6aXAyL3BiemlwMl8xLjEuMTMuYmIKaW5kZXggMTI3NWNjMC4uZTMyMWNkMiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGJ6aXAyL3BiemlwMl8xLjEuMTMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcGJ6aXAyL3BiemlwMl8xLjEuMTMuYmIKQEAgLTUsNyArNSw3IEBACiBuZXdlciAoaWU6IGFueXRoaW5nIGNvbXByZXNzZWQgd2l0aCBwYnppcDIgY2FuIGJlIGRlY29tcHJlc3NlZCB3aXRoIGJ6aXAyKS4iCiBIT01FUEFHRSA9ICJodHRwOi8vY29tcHJlc3Npb24uY2EvcGJ6aXAyLyIKIFNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLUxJQ0VOU0UgPSAiQlNELTQtQ2xhdXNlIgorTElDRU5TRSA9ICJiemlwMi0xLjAuNiIKIExJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM5OGI4ODMyYzZmODQwY2ZlYmQyMGFiMmJlNmEzNzQzIgogCiBERVBFTkRTID0gImJ6aXAyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwcy8wMDAxLUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzLzAwMDEtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZTU0ODE5NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wcm9jcHMvcHJvY3BzLzAwMDEtRml4LW91dC1vZi10cmVlLWJ1aWxkcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUZyb20gMDgyNWRiOTRmYzkxZmEyMTUwYzBlNjQ5ZTkyY2M4ZGNjNDRmNGIzOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogV2VkLCA0IEFwciAyMDE4IDE0OjA5OjQ1ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBvdXQgb2YgdHJlZSBidWlsZHMKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLS0tLQotIGluY2x1ZGUvbmxzLmggfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9pbmNsdWRlL25scy5oIGIvaW5jbHVkZS9ubHMuaAotaW5kZXggMTE2NmI3Yi4uZjVhYmUwNSAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvbmxzLmgKLSsrKyBiL2luY2x1ZGUvbmxzLmgKLUBAIC02LDcgKzYsNyBAQAotICNkZWZpbmUgUFJPQ1BTX05HX05MU19ICi0gCi0gLyogcHJvZ3JhbXMgaXNzdWluZyB0ZXh0ZG9tYWluKCkgbmVlZCBQQUNLQUdFIHN0cmluZyAqLwotLSNpbmNsdWRlICIuLi9jb25maWcuaCIKLSsjaW5jbHVkZSAiY29uZmlnLmgiCi0gCi0gLyogcHJvZ3JhbXMgaXNzdWluZyBiaW5kdGV4dGRvbWFpbigpIGFsc28gbmVlZCBMT0NBTEVESVIgc3RyaW5nICovCi0gI2lmbmRlZiBMT0NBTEVESVIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjE1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYyNDBlNTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw2OSArMCwwIEBACi1TVU1NQVJZID0gIlN5c3RlbSBhbmQgcHJvY2VzcyBtb25pdG9yaW5nIHV0aWxpdGllcyIKLURFU0NSSVBUSU9OID0gIlByb2NwcyBjb250YWlucyBhIHNldCBvZiBzeXN0ZW0gdXRpbGl0aWVzIHRoYXQgcHJvdmlkZSBzeXN0ZW0gaW5mb3JtYXRpb24gYWJvdXQgcHJvY2Vzc2VzIHVzaW5nIFwKLXRoZSAvcHJvYyBmaWxlc3lzdGVtLiBUaGUgcGFja2FnZSBpbmNsdWRlcyB0aGUgcHJvZ3JhbXMgcHMsIHRvcCwgdm1zdGF0LCB3LCBraWxsLCBhbmQgc2tpbGwuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRsYWIuY29tL3Byb2Nwcy1uZy9wcm9jcHMiCi1TRUNUSU9OID0gImJhc2UiCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGNmNjZhNDk4NDEyMDAwN2M5ODgxY2M4NzFjZjQ5ZGIgXAotICAgICAgICAgICAgICAgICAgICAiCi0KLURFUEVORFMgPSAibmN1cnNlcyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgdXBkYXRlLWFsdGVybmF0aXZlcwotCi1TUkNfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMuc291cmNlZm9yZ2UubmV0L3Byb2plY3QvcHJvY3BzLW5nL1Byb2R1Y3Rpb24vcHJvY3BzLW5nLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXNjdGwuY29uZiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1vdXQtb2YtdHJlZS1idWlsZHMucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIyYjA3MTdhN2NiNDc0YjNkNmRmZGVlZGZiYWQyZWNjYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxMGJkNzQ0ZmZjYjNkZTJkNTkxZDJmNmFjZjFhNTRhN2JhMDcwZmRjYzQzMmE4NTU5MzFhNTA1NzE0OWYwNDY1IgotCi1TID0gIiR7V09SS0RJUn0vcHJvY3BzLW5nLSR7UFZ9IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1lbmFibGUtc2tpbGwgLS1kaXNhYmxlLW1vZGVybi10b3AiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQotCVsgIiR7YmluZGlyfSIgIT0gIiR7YmFzZV9iaW5kaXJ9IiBdICYmIGZvciBpIGluICR7YmFzZV9iaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtiaW5kaXJ9LyRpICR7RH0ke2Jhc2VfYmluZGlyfS8kaTsgZG9uZQotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9zYmluZGlyfQotCVsgIiR7c2JpbmRpcn0iICE9ICIke2Jhc2Vfc2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtiYXNlX3NiaW5kaXJfcHJvZ3N9OyBkbyBtdiAke0R9JHtzYmluZGlyfS8kaSAke0R9JHtiYXNlX3NiaW5kaXJ9LyRpOyBkb25lCi0gICAgICAgIGlmIFsgIiR7YmFzZV9zYmluZGlyfSIgIT0gIiR7c2JpbmRpcn0iIF07IHRoZW4KLSAgICAgICAgICAgICAgICBybWRpciAke0R9JHtzYmluZGlyfQotICAgICAgICBmaQotCi0gICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vc3lzY3RsLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY3RsLmNvbmYKLSAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsJ3N5c3RlbWQnLCd0cnVlJywnZmFsc2UnLGQpfTsgdGhlbgotICAgICAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY3RsLmQKLSAgICAgICAgICAgICAgICBsbiAtc2YgLi4vc3lzY3RsLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY3RsLmQvOTktc3lzY3RsLmNvbmYKLSAgICAgICAgZmkKLX0KLQotQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vc3lzY3RsLmNvbmYiCi0KLWJpbmRpcl9wcm9ncyA9ICJmcmVlIHBraWxsIHBtYXAgcGdyZXAgcHdkeCBza2lsbCBzbmljZSB0b3AgdXB0aW1lIHciCi1iYXNlX2JpbmRpcl9wcm9ncyArPSAia2lsbCBwaWRvZiBwcyB3YXRjaCIKLWJhc2Vfc2JpbmRpcl9wcm9ncyArPSAic3lzY3RsIgotCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIyMDAiCi1BTFRFUk5BVElWRV9QUklPUklUWVtwaWRvZl0gPSAiMTUwIgotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICIke2JpbmRpcl9wcm9nc30gJHtiYXNlX2JpbmRpcl9wcm9nc30gJHtiYXNlX3NiaW5kaXJfcHJvZ3N9IgotCi1BTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAia2lsbC4xIHVwdGltZS4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW2tpbGwuMV0gPSAiJHttYW5kaXJ9L21hbjEva2lsbC4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3VwdGltZS4xXSA9ICIke21hbmRpcn0vbWFuMS91cHRpbWUuMSIKLQotcHl0aG9uIF9fYW5vbnltb3VzKCkgewotICAgIGZvciBwcm9nIGluIGQuZ2V0VmFyKCdiYXNlX2JpbmRpcl9wcm9ncycpLnNwbGl0KCk6Ci0gICAgICAgIGQuc2V0VmFyRmxhZygnQUxURVJOQVRJVkVfTElOS19OQU1FJywgcHJvZywgJyVzLyVzJyAlIChkLmdldFZhcignYmFzZV9iaW5kaXInKSwgcHJvZykpCi0KLSAgICBmb3IgcHJvZyBpbiBkLmdldFZhcignYmFzZV9zYmluZGlyX3Byb2dzJykuc3BsaXQoKToKLSAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdiYXNlX3NiaW5kaXInKSwgcHJvZykpCi19Ci0KLSMgJ3BzJyBpc24ndCBzdWl0YWJsZSBmb3IgdXNlIGFzIGEgc2VjdXJpdHkgdG9vbCBzbyB3aGl0ZWxpc3QgdGhpcyBDVkUuCi0jIGh0dHBzOi8vYnVnemlsbGEucmVkaGF0LmNvbS9zaG93X2J1Zy5jZ2k/aWQ9MTU3NTQ3MyNjMwotQ1ZFX0NIRUNLX1dISVRFTElTVCArPSAiQ1ZFLTIwMTgtMTEyMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjE2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHJvY3BzL3Byb2Nwc18zLjMuMTYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMjgxMGViZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Byb2Nwcy9wcm9jcHNfMy4zLjE2LmJiCkBAIC0wLDAgKzEsNzYgQEAKK1NVTU1BUlkgPSAiU3lzdGVtIGFuZCBwcm9jZXNzIG1vbml0b3JpbmcgdXRpbGl0aWVzIgorREVTQ1JJUFRJT04gPSAiUHJvY3BzIGNvbnRhaW5zIGEgc2V0IG9mIHN5c3RlbSB1dGlsaXRpZXMgdGhhdCBwcm92aWRlIHN5c3RlbSBpbmZvcm1hdGlvbiBhYm91dCBwcm9jZXNzZXMgdXNpbmcgXAordGhlIC9wcm9jIGZpbGVzeXN0ZW0uIFRoZSBwYWNrYWdlIGluY2x1ZGVzIHRoZSBwcm9ncmFtcyBwcywgdG9wLCB2bXN0YXQsIHcsIGtpbGwsIGFuZCBza2lsbC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGxhYi5jb20vcHJvY3BzLW5nL3Byb2NwcyIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT00Y2Y2NmE0OTg0MTIwMDA3Yzk4ODFjYzg3MWNmNDlkYiBcCisgICAgICAgICAgICAgICAgICAgICIKKworREVQRU5EUyA9ICJuY3Vyc2VzIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0bGFiLmNvbS9wcm9jcHMtbmcvcHJvY3BzLmdpdDtwcm90b2NvbD1odHRwcyBcCisgICAgICAgICAgIGZpbGU6Ly9zeXNjdGwuY29uZiBcCisgICAgICAgICAgICIKK1NSQ1JFViA9ICI1OWM4OGUxOGYyOTAwMGNlYWY3ZTVmOTgxODFiMDdiZTQ0M2NmMTJmIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCisjIFVwc3RyZWFtIGhhcyBhIGN1c3RvbSBhdXRvZ2VuLnNoIHdoaWNoIGludm9rZXMgcG8vdXBkYXRlLXBvdGZpbGVzIGFzIHRoZXkKKyMgZG9uJ3Qgc2hpcCBhIHBvL1BPVEZJTEVTLmluICh3aGljaCBpcyBzaWxseSkuICBXaXRob3V0IHRoYXQgZmlsZSBnZXR0ZXh0CisjIGRvZXNuJ3QgYmVsaWV2ZSBwby8gaXMgYSBnZXR0ZXh0IGRpcmVjdG9yeSBhbmQgd29uJ3QgZ2VuZXJhdGUgcG8vTWFrZWZpbGUuCitkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKKyAgICAoIGNkICR7U30gJiYgcG8vdXBkYXRlLXBvdGZpbGVzICkKK30KKworRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXNraWxsIC0tZGlzYWJsZS1tb2Rlcm4tdG9wIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdGVtZCcsIGQpfSIKK1BBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLS13aXRoLXN5c3RlbWQsLS13aXRob3V0LXN5c3RlbWQsc3lzdGVtZCIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisJWyAiJHtiaW5kaXJ9IiAhPSAiJHtiYXNlX2JpbmRpcn0iIF0gJiYgZm9yIGkgaW4gJHtiYXNlX2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke2JpbmRpcn0vJGkgJHtEfSR7YmFzZV9iaW5kaXJ9LyRpOyBkb25lCisJaW5zdGFsbCAtZCAke0R9JHtiYXNlX3NiaW5kaXJ9CisJWyAiJHtzYmluZGlyfSIgIT0gIiR7YmFzZV9zYmluZGlyfSIgXSAmJiBmb3IgaSBpbiAke2Jhc2Vfc2JpbmRpcl9wcm9nc307IGRvIG12ICR7RH0ke3NiaW5kaXJ9LyRpICR7RH0ke2Jhc2Vfc2JpbmRpcn0vJGk7IGRvbmUKKyAgICAgICAgaWYgWyAiJHtiYXNlX3NiaW5kaXJ9IiAhPSAiJHtzYmluZGlyfSIgXTsgdGhlbgorICAgICAgICAgICAgICAgIHJtZGlyICR7RH0ke3NiaW5kaXJ9CisgICAgICAgIGZpCisKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorICAgICAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zeXNjdGwuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNjdGwuY29uZgorICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCdmYWxzZScsZCl9OyB0aGVuCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjdGwuZAorICAgICAgICAgICAgICAgIGxuIC1zZiAuLi9zeXNjdGwuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNjdGwuZC85OS1zeXNjdGwuY29uZgorICAgICAgICBmaQorfQorCitDT05GRklMRVNfJHtQTn0gPSAiJHtzeXNjb25mZGlyfS9zeXNjdGwuY29uZiIKKworYmluZGlyX3Byb2dzID0gImZyZWUgcGtpbGwgcG1hcCBwZ3JlcCBwd2R4IHNraWxsIHNuaWNlIHRvcCB1cHRpbWUgdyIKK2Jhc2VfYmluZGlyX3Byb2dzICs9ICJraWxsIHBpZG9mIHBzIHdhdGNoIgorYmFzZV9zYmluZGlyX3Byb2dzICs9ICJzeXNjdGwiCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjIwMCIKK0FMVEVSTkFUSVZFX1BSSU9SSVRZW3BpZG9mXSA9ICIxNTAiCisKK0FMVEVSTkFUSVZFXyR7UE59ID0gIiR7YmluZGlyX3Byb2dzfSAke2Jhc2VfYmluZGlyX3Byb2dzfSAke2Jhc2Vfc2JpbmRpcl9wcm9nc30iCisKK0FMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJraWxsLjEgdXB0aW1lLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVba2lsbC4xXSA9ICIke21hbmRpcn0vbWFuMS9raWxsLjEiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbdXB0aW1lLjFdID0gIiR7bWFuZGlyfS9tYW4xL3VwdGltZS4xIgorCitweXRob24gX19hbm9ueW1vdXMoKSB7CisgICAgZm9yIHByb2cgaW4gZC5nZXRWYXIoJ2Jhc2VfYmluZGlyX3Byb2dzJykuc3BsaXQoKToKKyAgICAgICAgZC5zZXRWYXJGbGFnKCdBTFRFUk5BVElWRV9MSU5LX05BTUUnLCBwcm9nLCAnJXMvJXMnICUgKGQuZ2V0VmFyKCdiYXNlX2JpbmRpcicpLCBwcm9nKSkKKworICAgIGZvciBwcm9nIGluIGQuZ2V0VmFyKCdiYXNlX3NiaW5kaXJfcHJvZ3MnKS5zcGxpdCgpOgorICAgICAgICBkLnNldFZhckZsYWcoJ0FMVEVSTkFUSVZFX0xJTktfTkFNRScsIHByb2csICclcy8lcycgJSAoZC5nZXRWYXIoJ2Jhc2Vfc2JpbmRpcicpLCBwcm9nKSkKK30KKworIyAncHMnIGlzbid0IHN1aXRhYmxlIGZvciB1c2UgYXMgYSBzZWN1cml0eSB0b29sIHNvIHdoaXRlbGlzdCB0aGlzIENWRS4KKyMgaHR0cHM6Ly9idWd6aWxsYS5yZWRoYXQuY29tL3Nob3dfYnVnLmNnaT9pZD0xNTc1NDczI2MzCitDVkVfQ0hFQ0tfV0hJVEVMSVNUICs9ICJDVkUtMjAxOC0xMTIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYwppbmRleCA1OTRhMTBjLi42YWIxMjg4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLmluYwpAQCAtNyw3ICs3LDcgQEAKIHByb2Nlc3NlcyBpZGVudGlmaWVkIGJ5IG5hbWUuICBUaGUgZnVzZXIgY29tbWFuZCBpZGVudGlmaWVzIHRoZSBQSURzIFwKIG9mIHByb2Nlc3NlcyB0aGF0IGFyZSB1c2luZyBzcGVjaWZpZWQgZmlsZXMgb3IgZmlsZXN5c3RlbXMuIgogU0VDVElPTiA9ICJiYXNlIgotREVQRU5EUyA9ICJuY3Vyc2VzIHZpcnR1YWwvbGliaW50bCBnZXR0ZXh0LW5hdGl2ZSIKK0RFUEVORFMgPSAibmN1cnNlcyB2aXJ0dWFsL2xpYmludGwiCiBMSUNFTlNFID0gIkdQTHYyIgogCiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9wc21pc2MvcHNtaXNjLSR7UFZ9LnRhci5neiIKQEAgLTE5LDcgKzE5LDYgQEAKICMgVXBzdHJlYW0gaGFzIGEgY3VzdG9tIGF1dG9nZW4uc2ggd2hpY2ggaW52b2tlcyBwby91cGRhdGUtcG90ZmlsZXMgYXMgdGhleSAKICMgZG9uJ3Qgc2hpcCBhIHBvL1BPVEZJTEVTLmluICh3aGljaCBpcyBzaWxseSkuICBXaXRob3V0IHRoYXQgZmlsZSBnZXR0ZXh0IAogIyBkb2Vzbid0IGJlbGlldmUgcG8vIGlzIGEgZ2V0dGV4dCBkaXJlY3RvcnkgYW5kIHdvbid0IGdlbmVyYXRlIHBvL01ha2VmaWxlLgotRVhUUkFfQVVUT1JFQ09ORl9yZW1vdmUgPSAiLS1leGNsdWRlPWF1dG9wb2ludCIKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewogICAgICggY2QgJHtTfSAmJiBwby91cGRhdGUtcG90ZmlsZXMgKQogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzYy8wMDAxLU1ha2VmaWxlLmFtLWNyZWF0ZS1zcmMtZGlyZWN0b3J5LWJlZm9yZS1hdHRlbXB0aW5nLXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLzAwMDEtTWFrZWZpbGUuYW0tY3JlYXRlLXNyYy1kaXJlY3RvcnktYmVmb3JlLWF0dGVtcHRpbmctdC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTQ1MTMwMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjLzAwMDEtTWFrZWZpbGUuYW0tY3JlYXRlLXNyYy1kaXJlY3RvcnktYmVmb3JlLWF0dGVtcHRpbmctdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLUZyb20gZGFjMzc1ZjY0MGZlY2Q0NWU2MjU0YThkODcwZWUzN2VjOGY0MTY3MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVGh1LCAyIE5vdiAyMDE3IDE2OjIxOjIyICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlLmFtOiBjcmVhdGUgc3JjIGRpcmVjdG9yeSBiZWZvcmUgYXR0ZW1wdGluZyB0byB3cml0ZQotIHRoZXJlCi0KLU90aGVyd2lzZSBvdXQgb2YgdHJlZSBidWlsZHMgd2lsbCBmYWlsLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotCi0tLS0KLSBNYWtlZmlsZS5hbSB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IDQ0MWFlOTQuLjg4Mjk2OWQgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC04Niw3ICs4Niw3IEBAIEVYVFJBX0RJU1QgPSBzcmMvc2lnbmFtZXMuYyBSRUFETUUubWQgbWlzYy9naXQtdmVyc2lvbi1nZW4KLSBDTEVBTkZJTEVTID0gc3JjL3NpZ25hbWVzLmgKLSAKLSBzcmMvc2lnbmFtZXMuaDogc3JjL3NpZ25hbWVzLmMgTWFrZWZpbGUgc3JjLyQoYW1fX2RpcnN0YW1wKQotLQkJZXhwb3J0IExDX0FMTD1DIDsgXAotKwkJZXhwb3J0IExDX0FMTD1DIDsgbWtkaXIgLXAgc3JjIDsgXAotIAkJQENQUEAgLWRNICQ8IHxcCi0gCQl0ciAtcyAnXHQgJyAnICcgfCBzb3J0IC1uIC1rIDMgfCBzZWQgXAotIAknczojZGVmaW5lIFNJR1woW0EtWl1bQS1aXSpbMC05XSpcKSBcKFswLTldWzAtOV0qXCkuKiRcOntcIFwyLCJcMSIgfSw6cDtkJyB8IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2NfMjMuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3BzbWlzYy9wc21pc2NfMjMuMy5iYgppbmRleCBiM2MzYzdlLi5lNTY5ZjEwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9wc21pc2MvcHNtaXNjXzIzLjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcHNtaXNjL3BzbWlzY18yMy4zLmJiCkBAIC00LDcgKzQsNiBAQAogCiBTUkNfVVJJID0gImdpdDovL2dpdGxhYi5jb20vcHNtaXNjL3BzbWlzYy5naXQ7cHJvdG9jb2w9aHR0cHMgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtVUlOVFBUUl9NQVgtaW5zdGVhZC1vZi1fX1dPUkRTSVpFLnBhdGNoIFwKLQkgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS5hbS1jcmVhdGUtc3JjLWRpcmVjdG9yeS1iZWZvcmUtYXR0ZW1wdGluZy10LnBhdGNowqBcCiAgICAgICAgICAgICIKIFNSQ1JFViA9ICI3OGJkZTg0OTA0MWU2YzkxNGEyYTUxN2ViZTEyNTViODZkYzk4NzcyIgogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC8wMDAxLXN5c3RlbWQtdXNlLUVudmlyb25tZW50RmlsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC8wMDAxLXN5c3RlbWQtdXNlLUVudmlyb25tZW50RmlsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTJmMmNmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kLzAwMDEtc3lzdGVtZC11c2UtRW52aXJvbm1lbnRGaWxlLnBhdGNoCkBAIC0wLDAgKzEsNDIgQEAKK0Zyb20gZGE1MjhkNWQ2MDEzN2YxMzIwMjEwMmI1M2NmMTc4YWJhNDU4NDlhNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFN0ZWZhbiBBZ25lciA8c3RlZmFuLmFnbmVyQHRvcmFkZXguY29tPgorRGF0ZTogU3VuLCA2IE9jdCAyMDE5IDAwOjA1OjU0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIHN5c3RlbWQ6IHVzZSBFbnZpcm9ubWVudEZpbGUKKworVXNlIE9FIHNwZWNpZmljIGVudmlyb25tZW50IGZpbGUuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBTdGVmYW4gQWduZXIgPHN0ZWZhbi5hZ25lckB0b3JhZGV4LmNvbT4KKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgIHwgMiArKworIHN5c3RlbWQvcnBjYmluZC5zZXJ2aWNlLmluIHwgMiArLQorIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDJkZDk0NzEuLjQ3YTQ2YzAgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTY5LDUgKzY5LDcgQEAgQUNfQ0hFQ0tfSEVBREVSUyhbbnNzLmggcnBjc3ZjL21vdW50LmhdKQorICMgMiAiZXZhbHMiIG5lZWRlZCB0byBleHBhbmQgdmFyaWFibGUgbmFtZXMKKyBBQ19TVUJTVChbX3NiaW5kaXJdKQorIEFDX0NPTkZJR19DT01NQU5EU19QUkUoW2V2YWwgZXZhbCBfc2JpbmRpcj0kc2JpbmRpcl0pCisrQUNfU1VCU1QoW19zeXNjb25mZGlyXSkKKytBQ19DT05GSUdfQ09NTUFORFNfUFJFKFtldmFsIGV2YWwgX3N5c2NvbmZkaXI9JHNiaW5kaXJdKQorIAorIEFDX09VVFBVVChbTWFrZWZpbGUgc3lzdGVtZC9ycGNiaW5kLnNlcnZpY2VdKQorZGlmZiAtLWdpdCBhL3N5c3RlbWQvcnBjYmluZC5zZXJ2aWNlLmluIGIvc3lzdGVtZC9ycGNiaW5kLnNlcnZpY2UuaW4KK2luZGV4IDdiMWM3NGIuLmY0NWVlMWUgMTAwNjQ0CistLS0gYS9zeXN0ZW1kL3JwY2JpbmQuc2VydmljZS5pbgorKysrIGIvc3lzdGVtZC9ycGNiaW5kLnNlcnZpY2UuaW4KK0BAIC0xMSw3ICsxMSw3IEBAIFdhbnRzPXJwY2JpbmQudGFyZ2V0CisgCisgW1NlcnZpY2VdCisgVHlwZT1ub3RpZnkKKy0jIGRpc3RybyBjYW4gcHJvdmlkZSBhIGRyb3AtaW4gYWRkaW5nIEVudmlyb25tZW50RmlsZT0tLz8/PyBpZiBuZWVkZWQuCisrRW52aXJvbm1lbnRGaWxlPS1AX3N5c2NvbmZkaXJAL3JwY2JpbmQuY29uZgorIEV4ZWNTdGFydD1AX3NiaW5kaXJAL3JwY2JpbmQgJFJQQ0JJTkRfT1BUSU9OUyAtdyAtZgorIAorIFtJbnN0YWxsXQorLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmQuY29uZiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNiaW5kLmNvbmYKaW5kZXggMmE0ZGZiYy4uZjQyM2FjMSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmQuY29uZgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcnBjYmluZC5jb25mCkBAIC0xLDMgKzEsMyBAQAogIyBPcHRpb25hbCBhcmd1bWVudHMgcGFzc2VkIHRvIHJwY2JpbmQuCiAjCi1SUENCSU5EX09QVFM9IiIKK1JQQ0JJTkRfT1BUSU9OUz0iIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmQuc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZC9ycGNiaW5kLnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDljZGFkZTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmQuc2VydmljZQorKysgL2Rldi9udWxsCkBAIC0xLDEyICswLDAgQEAKLVtVbml0XQotRGVzY3JpcHRpb249UlBDIEJpbmQgU2VydmljZQotUmVxdWlyZXM9cnBjYmluZC5zb2NrZXQKLQotW1NlcnZpY2VdCi1UeXBlPWZvcmtpbmcKLUVudmlyb25tZW50RmlsZT0tQFNZU0NPTkZESVJAL3JwY2JpbmQuY29uZgotRXhlY1N0YXJ0PUBTQklORElSQC9ycGNiaW5kICRSUENCSU5EX09QVFMKLVN1Y2Nlc3NFeGl0U3RhdHVzPTIKLQotW0luc3RhbGxdCi1BbHNvPXJwY2JpbmQuc29ja2V0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcnBjYmluZC5zb2NrZXQgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmQvcnBjYmluZC5zb2NrZXQKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ2M2MxZDkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kL3JwY2JpbmQuc29ja2V0CisrKyAvZGV2L251bGwKQEAgLTEsOCArMCwwIEBACi1bVW5pdF0KLURlc2NyaXB0aW9uPVJQQ2JpbmQgU2VydmVyIEFjdGl2YXRpb24gU29ja2V0Ci0KLVtTb2NrZXRdCi1MaXN0ZW5TdHJlYW09L3Zhci9ydW4vcnBjYmluZC5zb2NrCi0KLVtJbnN0YWxsXQotV2FudGVkQnk9c29ja2V0cy50YXJnZXQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8xLjIuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3JwY2JpbmQvcnBjYmluZF8xLjIuNS5iYgppbmRleCAxOWQ3NzhiLi5hZmYwMGU1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9ycGNiaW5kL3JwY2JpbmRfMS4yLjUuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvcnBjYmluZC9ycGNiaW5kXzEuMi41LmJiCkBAIC0xMyw5ICsxMyw4IEBACiBTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS9ycGNiaW5kL3JwY2JpbmQtJHtQVn0udGFyLmJ6MiBcCiAgICAgICAgICAgIGZpbGU6Ly9pbml0LmQgXAogICAgICAgICAgICBmaWxlOi8vcnBjYmluZC5jb25mIFwKLSAgICAgICAgICAgZmlsZTovL3JwY2JpbmQuc29ja2V0IFwKLSAgICAgICAgICAgZmlsZTovL3JwY2JpbmQuc2VydmljZSBcCiAgICAgICAgICAgIGZpbGU6Ly9ycGNiaW5kX2FkZF9vcHRpb25fdG9fZml4X3BvcnRfbnVtYmVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtc3lzdGVtZC11c2UtRW52aXJvbm1lbnRGaWxlLnBhdGNoIFwKICAgICAgICAgICAiCiBTUkNfVVJJW21kNXN1bV0gPSAiZWQ0NmYwOWI5YzBmYTJkNDkwMTVmNjQzMWJjNWVhN2IiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmNlMzYwNjgzOTYzYjM1YzE5YzQzZjBlZTJjN2YxOGFhNWI4MWVmNDFjM2ZkYmQxNWZmY2IwMGI4YmZmZGE3YSIKQEAgLTI4LDcgKzI3LDcgQEAKIElOSVRTQ1JJUFRfTkFNRSA9ICJycGNiaW5kIgogSU5JVFNDUklQVF9QQVJBTVMgPSAic3RhcnQgMTIgMiAzIDQgNSAuIHN0b3AgNjAgMCAxIDYgLiIKIAotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInJwY2JpbmQuc2VydmljZSIKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJycGNiaW5kLnNlcnZpY2UgcnBjYmluZC5zb2NrZXQiCiAKIGluaGVyaXQgdXNlcmFkZAogCkBAIC01MCwxMiArNDksNCBAQAogCQktZSAncywvc2Jpbi8sJHtzYmluZGlyfS8sZycgXAogCQkke1dPUktESVJ9L2luaXQuZCA+ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9ycGNiaW5kCiAJY2htb2QgMDc1NSAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcnBjYmluZAotCi0JaW5zdGFsbCAtbSAwNzU1ICR7V09SS0RJUn0vcnBjYmluZC5jb25mICR7RH0ke3N5c2NvbmZkaXJ9Ci0JaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotCWluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L3JwY2JpbmQuc29ja2V0ICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vcnBjYmluZC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0Jc2VkIC1pIC1lICdzLEBTQklORElSQCwke3NiaW5kaXJ9LGcnIFwKLQkJLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAotCQkke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9ycGNiaW5kLnNlcnZpY2UKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC43LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zY3JlZW4vc2NyZWVuXzQuNy4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2N2FhNWYxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC43LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1TVU1NQVJZID0gIk11bHRpcGxleGluZyB0ZXJtaW5hbCBtYW5hZ2VyIgotREVTQ1JJUFRJT04gPSAiU2NyZWVuIGlzIGEgZnVsbC1zY3JlZW4gd2luZG93IG1hbmFnZXIgXAotdGhhdCBtdWx0aXBsZXhlcyBhIHBoeXNpY2FsIHRlcm1pbmFsIGJldHdlZW4gc2V2ZXJhbCBcCi1wcm9jZXNzZXMsIHR5cGljYWxseSBpbnRlcmFjdGl2ZSBzaGVsbHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3NjcmVlbi8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vc2F2YW5uYWguZ251Lm9yZy9idWdzLz9mdW5jPWFkZGl0ZW0mZ3JvdXA9c2NyZWVuIgotCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi0KLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2NyZWVuLmg7ZW5kbGluZT0yNjttZDU9Mzk3MTE0Mjk4OTI4OWE4MTk4YTU0NDIyMDcwM2MyYmYiCi0KLURFUEVORFMgPSAibmN1cnNlcyB2aXJ0dWFsL2NyeXB0IFwKLSAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICdsaWJwYW0nLCAnJywgZCl9IgotUkRFUEVORFNfJHtQTn0gPSAiYmFzZS1maWxlcyIKLQotU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3NjcmVlbi9zY3JlZW4tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnZmlsZTovL3NjcmVlbi5wYW0nLCAnJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItY29tbS5oLW5vdy1kZXBlbmRzLW9uLXRlcm0uaC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1mb3ItbXVsdGlqb2ItYnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtbW9yZS1jb21wYXRpYmlsaXR5LXN0dWZmLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiODk3MWViZDY4ZDA0NmYyODE0ZDEwNDBjYjhlNjY0MSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkYTc3NTMyOGZhNzgzYmQyYTc4N2Q3MjIwMTRkYmQ5OWM2MDkzZWZmYzExZjMzNzgyNzYwNGMyZWZjNWQyMGMxIgotCi1pbmhlcml0IGF1dG90b29scyB0ZXhpbmZvCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW3V0ZW1wdGVyXSA9ICJhY19jdl9oZWFkZXJfdXRlbXB0ZXJfaD15ZXMsYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9bm8sbGlidXRlbXB0ZXIsIgotCi1FWFRSQV9PRUNPTkYgPSAiLS13aXRoLXB0eS1tb2RlPTA2MjAgLS13aXRoLXB0eS1ncm91cD01IC0td2l0aC1zeXMtc2NyZWVucmM9JHtzeXNjb25mZGlyfS9zY3JlZW5yYyBcCi0gICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICctLWVuYWJsZS1wYW0nLCAnLS1kaXNhYmxlLXBhbScsIGQpfSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCWluc3RhbGwgLUQgLW0gNjQ0ICR7U30vZXRjL2V0Y3NjcmVlbnJjICR7RH0vJHtzeXNjb25mZGlyfS9zY3JlZW5yYwotCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgotCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3NjcmVlbi5wYW0gJHtEfS8ke3N5c2NvbmZkaXJ9L3BhbS5kL3NjcmVlbgotCWZpCi19Ci0KLXBrZ19wb3N0aW5zdF8ke1BOfSAoKSB7Ci0JZ3JlcCAtcSAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzIHx8IGVjaG8gJHtiaW5kaXJ9L3NjcmVlbiA+PiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzCi19Ci0KLXBrZ19wb3N0cm1fJHtQTn0gKCkgewotCXByaW50ZiAiJChncmVwIC12ICJeJHtiaW5kaXJ9L3NjcmVlbiQiICREJHtzeXNjb25mZGlyfS9zaGVsbHMpXG4iID4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscwotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2NyZWVuL3NjcmVlbl80LjguMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC44LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDc3MmViNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NjcmVlbi9zY3JlZW5fNC44LjAuYmIKQEAgLTAsMCArMSw1MCBAQAorU1VNTUFSWSA9ICJNdWx0aXBsZXhpbmcgdGVybWluYWwgbWFuYWdlciIKK0RFU0NSSVBUSU9OID0gIlNjcmVlbiBpcyBhIGZ1bGwtc2NyZWVuIHdpbmRvdyBtYW5hZ2VyIFwKK3RoYXQgbXVsdGlwbGV4ZXMgYSBwaHlzaWNhbCB0ZXJtaW5hbCBiZXR3ZWVuIHNldmVyYWwgXAorcHJvY2Vzc2VzLCB0eXBpY2FsbHkgaW50ZXJhY3RpdmUgc2hlbGxzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9zY3JlZW4vIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL3NhdmFubmFoLmdudS5vcmcvYnVncy8/ZnVuYz1hZGRpdGVtJmdyb3VwPXNjcmVlbiIKKworU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NjcmVlbi5oO2VuZGxpbmU9MjY7bWQ1PWI4ZGM3MTdjOWEzZGJhODQyYWU2YzQ0Y2EwZjczZjUyIFwKKyAgICAgICAgICAgICAgICAgICAgIgorCitERVBFTkRTID0gIm5jdXJzZXMgdmlydHVhbC9jcnlwdCBcCisgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKK1JERVBFTkRTXyR7UE59ID0gImJhc2UtZmlsZXMiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9zY3JlZW4vc2NyZWVuLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2ZpbGU6Ly9zY3JlZW4ucGFtJywgJycsIGQpfSBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLWNvbW0uaC1ub3ctZGVwZW5kcy1vbi10ZXJtLmgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtZm9yLW11bHRpam9iLWJ1aWxkLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtUmVtb3ZlLW1vcmUtY29tcGF0aWJpbGl0eS1zdHVmZi5wYXRjaCBcCisgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZDI3NjIxM2QzYWNkMTAzMzljZDM3ODQ4YjhjNGFiMWUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmUxMWIxM2Q4NDg5OTI1ZmRlMjVkZmIwOTM1YmY2ZWQ3MWY5ZWI0N2VmZjIzM2ExODFlMDc4ZmRlNTY1NWFhMSIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbworCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1t1dGVtcHRlcl0gPSAiYWNfY3ZfaGVhZGVyX3V0ZW1wdGVyX2g9eWVzLGFjX2N2X2hlYWRlcl91dGVtcHRlcl9oPW5vLGxpYnV0ZW1wdGVyLCIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC1wdHktbW9kZT0wNjIwIC0td2l0aC1wdHktZ3JvdXA9NSAtLXdpdGgtc3lzLXNjcmVlbnJjPSR7c3lzY29uZmRpcn0vc2NyZWVucmMgXAorICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS1lbmFibGUtcGFtJywgJy0tZGlzYWJsZS1wYW0nLCBkKX0iCisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKwlpbnN0YWxsIC1EIC1tIDY0NCAke1N9L2V0Yy9ldGNzY3JlZW5yYyAke0R9LyR7c3lzY29uZmRpcn0vc2NyZWVucmMKKwlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KKwkJaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS9zY3JlZW4ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zY3JlZW4KKwlmaQorfQorCitwa2dfcG9zdGluc3RfJHtQTn0gKCkgeworCWdyZXAgLXEgIl4ke2JpbmRpcn0vc2NyZWVuJCIgJEQke3N5c2NvbmZkaXJ9L3NoZWxscyB8fCBlY2hvICR7YmluZGlyfS9zY3JlZW4gPj4gJEQke3N5c2NvbmZkaXJ9L3NoZWxscworfQorCitwa2dfcG9zdHJtXyR7UE59ICgpIHsKKwlwcmludGYgIiQoZ3JlcCAtdiAiXiR7YmluZGlyfS9zY3JlZW4kIiAkRCR7c3lzY29uZmRpcn0vc2hlbGxzKVxuIiA+ICREJHtzeXNjb25mZGlyfS9zaGVsbHMKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYmExYTRiYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMi4yLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIGI5NTY1ZGMyZmUwYzRmN2RhYWVjOTFiN2U4M2JjNzMxM2RlZTJmNGEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAxMyBBcHIgMjAxNSAxNzowMjoxMyAtMDcwMAotU3ViamVjdDogW1BBVENIXSBVbnNldCBuZWVkX2NoYXJzZXRfYWxpYXMgd2hlbiBidWlsZGluZyBmb3IgbXVzbAotCi1sb2NhbGNoYXJzZXQgdXNlcyBhY19jdl9nbnVfbGlicmFyeV8yXzEgZnJvbSBnbGliYzIxLm00Ci13aGljaCBhY3R1YWxseSBzaG91ZGwgYmUgZml4ZWQgaW4gZ251bGliIGFuZCB0aGVuIGFsbCBkb3duc3RyZWFtCi1wcm9qZWN0cyB3aWxsIGdldCBpdCBldmVudHVhbGx5LiBGb3Igbm93IHdlIGFwcGx5IHRoZSBmaXggdG8KLWNvcmV1dGlscwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGxpYi9nbnVsaWIubWsgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvZ251bGliLm1rIGIvbGliL2dudWxpYi5tawotaW5kZXggZTFkNzRkYi4uYzBlOTJkZCAxMDA2NDQKLS0tLSBhL2xpYi9nbnVsaWIubWsKLSsrKyBiL2xpYi9nbnVsaWIubWsKLUBAIC0xODgyLDcgKzE4ODIsNyBAQCBpbnN0YWxsLWV4ZWMtbG9jYWxjaGFyc2V0OiBhbGwtbG9jYWwKLSAJICBjYXNlICckKGhvc3Rfb3MpJyBpbiBcCi0gCSAgICBkYXJ3aW5bNTZdKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCi0tCSAgICBkYXJ3aW4qIHwgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqKSBcCi0rCSAgICBkYXJ3aW4qIHwgY3lnd2luKiB8IG1pbmd3KiB8IHB3MzIqIHwgY2VnY2MqIHwgbGludXgtbXVzbCopIFwKLSAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPWZhbHNlIDs7IFwKLSAJICAgICopIFwKLSAJICAgICAgbmVlZF9jaGFyc2V0X2FsaWFzPXRydWUgOzsgXAotLS0gCi0yLjEuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zZWQvc2VkLTQuMi4yL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvcnVuLXB0ZXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3YzBmNjI3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvcnVuLXB0ZXN0CisrKyAvZGV2L251bGwKQEAgLTEsMyArMCwwIEBACi0jIS9iaW4vc2gKLQotbWFrZSAtQyB0ZXN0c3VpdGUgLWsgcnVudGVzdC1URVNUUwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZC00LjIuMi9zZWQtYWRkLXB0ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZC00LjIuMi9zZWQtYWRkLXB0ZXN0LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjkzOTAwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQtNC4yLjIvc2VkLWFkZC1wdGVzdC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY2ICswLDAgQEAKLXNlZDogYWRkIHB0ZXN0Ci0KLXB0ZXN0IG5lZWRzIGJ1aWxkdGVzdC1URVNUUyBhbmQgcnVudGVzdC1URVNUUyB0YXJnZXRzLgotc2VyaWFsLXRlc3RzIGlzIHJlcXVpcmVkIHRvIGdlbmVyYXRlIHRob3NlIHRhcmdldHMuCi0KLUFuZCBmaXggZm9sbG93aW5nIGVycm9yIGFmdGVyIGFkZCBzZXJpYWwtdGVzdHMuCi0KLVtzbmlwXQotaGVscDJtYW46IGNhbid0IGdldCBgLS1oZWxwJyBpbmZvIGZyb20gLi4vc2VkL3NlZAotbWFrZVsyXTogKioqIFtzZWQuMV0gRXJyb3IgMgotW3NuaXBdCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotCi1TaWduZWQtb2ZmLWJ5OiBDaG9uZyBMdSA8Q2hvbmcuTHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICB8ICAgIDIgKy0KLSBkb2MvTWFrZWZpbGUuYW0gICAgICAgfCAgICAyICstCi0gdGVzdHN1aXRlL01ha2VmaWxlLmFtIHwgICAgNiArKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggOWQzM2VjOS4uNGYwYzUzMiAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtNCw3ICs0LDcgQEAgQUNfQ09ORklHX0FVWF9ESVIoYnVpbGQtYXV4KQotIEFDX0NPTkZJR19TUkNESVIoW3NlZC9zZWQuY10pCi0gQU1fQ09ORklHX0hFQURFUihjb25maWcuaDpjb25maWdfaC5pbikKLSBBQ19QUkVSRVEoMi42MCkKLS1BTV9JTklUX0FVVE9NQUtFCi0rQU1fSU5JVF9BVVRPTUFLRShbc2VyaWFsLXRlc3RzXSkKLSAKLSBTRURfRkVBVFVSRV9WRVJTSU9OPTQuMi4yCi0gQUNfREVGSU5FX1VOUVVPVEVEKFNFRF9GRUFUVVJFX1ZFUlNJT04sICIkU0VEX0ZFQVRVUkVfVkVSU0lPTiIsCi1kaWZmIC0tZ2l0IGEvZG9jL01ha2VmaWxlLmFtIGIvZG9jL01ha2VmaWxlLmFtCi1pbmRleCBhZjY5NzVjLi42ZmQ4YzlhIDEwMDY0NAotLS0tIGEvZG9jL01ha2VmaWxlLmFtCi0rKysgYi9kb2MvTWFrZWZpbGUuYW0KLUBAIC0yNSw3ICsyNSw3IEBAICQoc3JjZGlyKS9zLXRleGk6IHNlZC1pbi50ZXhpICQoc3JjZGlyKS9ncm91cGlmeS5zZWQKLSAJZmkKLSAJZWNobyBzdGFtcCA+ICQoc3JjZGlyKS9zLXRleGkKLSAKLS1zZWQuMTogJCh0b3Bfc3JjZGlyKS9zZWQvc2VkLmMgJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWMgJChzcmNkaXIpL3NlZC54Ci0rX3NlZC4xOiAkKHRvcF9zcmNkaXIpL3NlZC9zZWQuYyAkKHRvcF9zcmNkaXIpL2NvbmZpZ3VyZS5hYyAkKHNyY2Rpcikvc2VkLngKLSAJJChIRUxQMk1BTikgLS1uYW1lICJzdHJlYW0gZWRpdG9yIGZvciBmaWx0ZXJpbmcgYW5kIHRyYW5zZm9ybWluZyB0ZXh0IiBcCi0gCSAgLXAgc2VkIC0taW5jbHVkZSAkKHNyY2Rpcikvc2VkLnggLW8gJChzcmNkaXIpL3NlZC4xICQoU0VEKSAKLSAKLWRpZmYgLS1naXQgYS90ZXN0c3VpdGUvTWFrZWZpbGUuYW0gYi90ZXN0c3VpdGUvTWFrZWZpbGUuYW0KLWluZGV4IGQ4MGU3MmMuLmIwNWYwMWUgMTAwNjQ0Ci0tLS0gYS90ZXN0c3VpdGUvTWFrZWZpbGUuYW0KLSsrKyBiL3Rlc3RzdWl0ZS9NYWtlZmlsZS5hbQotQEAgLTk5LDUgKzk5LDExIEBAIEVYVFJBX0RJU1QgPSBcCi0gIyBhdXRvbWFrZSBtYWtlcyBgY2hlY2snIGRlcGVuZCBvbiAkKFRFU1RTKS4gIERlY2xhcmUKLSAjIGR1bW15IHRhcmdldHMgZm9yICQoVEVTVFMpIHNvIHRoYXQgbWFrZSBkb2VzIG5vdCBjb21wbGFpbi4KLSAKLStpbnN0YWxsLXB0ZXN0OgotKwljZCAkKEJVSUxERElSKTsgdGFyIC1jIC0tZXhjbHVkZT0qLm8gJChURVNURElSKSB8ICggY2QgJChERVNURElSKSAmJiB0YXIgLXhmIC0gKQotKwlmb3IgaSBpbiAkKEVYVFJBX0RJU1QpIHRzdC1yZWdleDIuYzsgZG8gaW5zdGFsbCAkKHNyY2RpcikvJCRpICQoREVTVERJUikvJChURVNURElSKTsgZG9uZQotKwlzZWQgLWUgJ3MvXk1ha2VmaWxlOi9fTWFrZWZpbGU6LycgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgLWUgJ3MvYmFzaC9zaC8nIC1pICQoREVTVERJUikvJChURVNURElSKS9NYWtlZmlsZQotKwlmb3IgaSBpbiBgZ3JlcCAtcmwgIi4uL3NlZC9zZWQiICQoREVTVERJUikvJChURVNURElSKWA7IGRvIHNlZCAtZSAncy8uLlwvc2VkXC9zZWQvc2VkLycgLWkgJCRpOyBkb25lCi0rCi0gLlBIT05ZOiAkKFNFRFRFU1RTKQotICQoU0VEVEVTVFMpOgotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZC9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTkzZDdkNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWQvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsNSBAQAorIyEvYmluL3NoCisKK2Nob3duIG5vYm9keSB0ZXN0c3VpdGUKK2Nob3duIG5vYm9keSAuLi9wdGVzdAorc3Ugbm9ib2R5IC1jICJtYWtlIHRlc3Qtc3VpdGUubG9nIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjIuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC4yLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhlNDM2YmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjIuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLVNVTU1BUlkgPSAiU3RyZWFtIEVEaXRvciAodGV4dCBmaWx0ZXJpbmcgdXRpbGl0eSkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvc2VkLyIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjI3ZGVmZTFlOTZjMmUxZWNkNGUwYzliZTg5Njc5NDkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2VkL3NlZC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTc7bWQ1PTc2N2FiM2EwNmQ3NTg0ZjZmZDA0NjlhYmFlYzQ0MTJmIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vc2VkL3NlZC0ke1BWfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vc2VkLWFkZC1wdGVzdC5wYXRjaCBcCi0JICAgZmlsZTovLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQxMTFkZTRmYWEzYjk4NDhhMDY4NmIyZjI2MGM1MDU2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZlYTBhOTRkNGI2MDU4OTRmM2UyZDU1NzJlM2Y5NmU0NDEzYmNhZDNhMDg1YWFlNzM2N2MyY2YwNzkwOGIyZmYiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcyBnZXR0ZXh0IHB0ZXN0Ci1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKLVJSRUNPTU1FTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBsb2NhbGUtYmFzZS1ydS1ydSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1hY2wgXAotICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnLS1lbmFibGUtcmVnZXgtdGVzdHMnLCAnJywgZCl9IgotCi1kb19pbnN0YWxsICgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9Ci0JaWYgWyAhICR7RH0ke2JpbmRpcn0gLWVmICR7RH0ke2Jhc2VfYmluZGlyfSBdOyB0aGVuCi0JICAgIG12ICR7RH0ke2JpbmRpcn0vc2VkICR7RH0ke2Jhc2VfYmluZGlyfS9zZWQKLQkgICAgcm1kaXIgJHtEfSR7YmluZGlyfS8KLQlmaQotfQotCi1BTFRFUk5BVElWRV8ke1BOfSA9ICJzZWQiCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbc2VkXSA9ICIke2Jhc2VfYmluZGlyfS9zZWQiCi1BTFRFUk5BVElWRV9QUklPUklUWSA9ICIxMDAiCi0KLVRFU1RESVIgPSAidGVzdHN1aXRlIgotCi1kb19jb21waWxlX3B0ZXN0KCkgewotCW9lX3J1bm1ha2UgLUMgJHtURVNURElSfSBidWlsZHRlc3QtVEVTVFMKLX0KLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQlvZV9ydW5tYWtlIC1DICR7VEVTVERJUn0gaW5zdGFsbC1wdGVzdCBCVUlMRERJUj0ke0J9IERFU1RESVI9JHtEfSR7UFRFU1RfUEFUSH0gVEVTVERJUj0ke1RFU1RESVJ9Ci0Jc2VkIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKLQkgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAotCSAgICAtZSAnczoke0hPU1RUT09MU19ESVJ9Lzo6ZycgXAotCSAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKLQkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCi0JICAgIC1pICR7RH0ke1BURVNUX1BBVEh9LyR7VEVTVERJUn0vTWFrZWZpbGUKLX0KLQotUlBST1ZJREVTXyR7UE59ICs9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3Vzcm1lcmdlJywgJy9iaW4vc2VkJywgJycsIGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2VkL3NlZF80LjguYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzllM2E2MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NlZC9zZWRfNC44LmJiCkBAIC0wLDAgKzEsNjUgQEAKK1NVTU1BUlkgPSAiU3RyZWFtIEVEaXRvciAodGV4dCBmaWx0ZXJpbmcgdXRpbGl0eSkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvc2VkLyIKK0xJQ0VOU0UgPSAiR1BMdjMrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzY3ODk1N2IwYzhlOTY0YWE2YzcwZmQ3NzY0MWE3MWUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc2VkL3NlZC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MTU7bWQ1PWZiM2M3ZTZmYmNhNmY2Njk0Mzg1OTE1M2Q0YmU4ZWZlIFwKKyAgICAgICAgICAgICAgICAgICAgIgorU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgorCitTUkNfVVJJID0gIiR7R05VX01JUlJPUn0vc2VkL3NlZC0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gIjZkOTA2ZWRmZGIzMjAyMzA0MDU5MjMzZjUxZjlhNzFkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImY3OWIwY2ZlYTcxYjM3YThlZWVjODQ5MGRiNmM1ZjdhZTc3MTljMzU1ODdmMjFlZGIwNjE3ZjM3MGVlZmY2MzMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gdXBkYXRlLWFsdGVybmF0aXZlcyBnZXR0ZXh0IHB0ZXN0CisKK1BBQ0tBR0VDT05GSUdbc2VsaW51eF0gPSAiLS13aXRoLXNlbGludXgsLS13aXRob3V0LXNlbGludXgsbGlic2VsaW51eCIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UgZ2F3ayBwZXJsIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgcGVybC1tb2R1bGUtZmlsZS1jb21wYXJlIHBlcmwtbW9kdWxlLWZpbGUtZmluZCBwZXJsLW1vZHVsZS1maWxlLXRlbXAgcGVybC1tb2R1bGUtZmlsZS1zdGF0IgorUlJFQ09NTUVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxvY2FsZS1iYXNlLXJ1LXJ1IGxvY2FsZS1iYXNlLWVuLXVzIGxvY2FsZS1iYXNlLWVsLWdyLmlzby04ODU5LTciCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtYWNsIFwKKyAgICAgICAgICAgICAgICIKKworZG9faW5zdGFsbCAoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKwlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfYmluZGlyfQorCWlmIFsgISAke0R9JHtiaW5kaXJ9IC1lZiAke0R9JHtiYXNlX2JpbmRpcn0gXTsgdGhlbgorCSAgICBtdiAke0R9JHtiaW5kaXJ9L3NlZCAke0R9JHtiYXNlX2JpbmRpcn0vc2VkCisJICAgIHJtZGlyICR7RH0ke2JpbmRpcn0vCisJZmkKK30KKworQUxURVJOQVRJVkVfJHtQTn0gPSAic2VkIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3NlZF0gPSAiJHtiYXNlX2JpbmRpcn0vc2VkIgorQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworCW9lX3J1bm1ha2UgdGVzdHN1aXRlL2dldC1tYi1jdXItbWF4IHRlc3RzdWl0ZS90ZXN0LW1icnRvd2MKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKyAgICAgICAgY3AgLXJmICR7U30vdGVzdHN1aXRlLyAke0R9JHtQVEVTVF9QQVRIfQorICAgICAgICBjcCAtcmYgJHtCfS90ZXN0c3VpdGUvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0c3VpdGUvCisgICAgICAgIGNwIC1yZiAke1N9L2J1aWxkLWF1eC8gJHtEfSR7UFRFU1RfUEFUSH0vCisgICAgICAgIGNwICR7Qn0vTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0KKyAgICAgICAgY3AgJHtTfS9pbml0LmNmZyAke0R9JHtQVEVTVF9QQVRIfQorCisgICAgICAgIHNlZCAtZSAncy9eTWFrZWZpbGU6L19NYWtlZmlsZTovJyAtZSAncy9ec3JjZGlyID0gXCguKlwpL3NyY2RpciA9IC4vJyAtZSAncy9iYXNoL3NoLycgLWkgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICAgICAgZm9yIGkgaW4gYGdyZXAgLXJsICJzZWQvc2VkIiAke0R9JHtQVEVTVF9QQVRIfWA7IGRvIHNlZCAtZSAncy8uLlwvc2VkXC9zZWQvc2VkLycgLWkgJGk7IGRvbmUKKworCXNlZCAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKwkgICAgLWUgJ3M6JHtSRUNJUEVfU1lTUk9PVF9OQVRJVkV9OjpnJyBcCisJICAgIC1lICdzOmFic190b3BfYnVpbGRkaXIgPS4qOmFic190b3BfYnVpbGRkaXIgPSAuLjpnJyBcCisJICAgIC1lICdzOmFic190b3Bfc3JjZGlyID0uKjphYnNfdG9wX3NyY2RpciA9IC4uOmcnIFwKKwkgICAgLWUgJ3M6YWJzX3NyY2RpciA9Lio6YWJzX3NyY2RpciA9IC4uOmcnIFwKKwkgICAgLWUgJ3M6dG9wX3NyY2RpciA9Lio6dG9wX3NyY2RpciA9IC4uOmcnIFwKKwkgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisJICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCit9CisKK1JQUk9WSURFU18ke1BOfSArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd1c3JtZXJnZScsICcvYmluL3NlZCcsICcnLCBkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS1EaXNhYmxlLXVzZS1vZi1zeXNsb2ctZm9yLXN5c3Jvb3QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvMDAwMS1EaXNhYmxlLXVzZS1vZi1zeXNsb2ctZm9yLXN5c3Jvb3QucGF0Y2gKaW5kZXggYWFjMmQ0Mi4uYWIzMTdiOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtRGlzYWJsZS11c2Utb2Ytc3lzbG9nLWZvci1zeXNyb290LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLURpc2FibGUtdXNlLW9mLXN5c2xvZy1mb3Itc3lzcm9vdC5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gOGNmMzQ1NGQ1NjdmNzcyMzMwMjNiZTQ5YTM5YTMzZTlmMDgzNmY4OSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gZmEyZDk0NTM2NTY2NDEwMDI4MDJkODE2NWU4MGFkYjllNmE3MjlkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgogRGF0ZTogVGh1LCAxNCBBcHIgMjAxNiAxMjoyODo1NyArMDIwMAogU3ViamVjdDogW1BBVENIXSBEaXNhYmxlIHVzZSBvZiBzeXNsb2cgZm9yIHN5c3Jvb3QKQEAgLTEyLDYgKzEyLDcgQEAKIFNpZ25lZC1vZmYtYnk6IFNjb3R0IEdhcm1hbiA8c2NvdHQuYS5nYXJtYW5AaW50ZWwuY29tPgogU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+CiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKIC0tLQogIHNyYy9ncm91cGFkZC5jICB8IDMgKysrCiAgc3JjL2dyb3VwZGVsLmMgIHwgMyArKysKQEAgLTIzLDcgKzI0LDcgQEAKICA3IGZpbGVzIGNoYW5nZWQsIDIxIGluc2VydGlvbnMoKykKIAogZGlmZiAtLWdpdCBhL3NyYy9ncm91cGFkZC5jIGIvc3JjL2dyb3VwYWRkLmMKLWluZGV4IDYzZTFjNDguLmE1OTZjNDkgMTAwNjQ0CitpbmRleCAyZGQ4ZWVjLi5lOWM0YmI3IDEwMDY0NAogLS0tIGEvc3JjL2dyb3VwYWRkLmMKICsrKyBiL3NyYy9ncm91cGFkZC5jCiBAQCAtMzQsNiArMzQsOSBAQApAQCAtMzcsNyArMzgsNyBAQAogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlIDxnZXRvcHQuaD4KIGRpZmYgLS1naXQgYS9zcmMvZ3JvdXBkZWwuYyBiL3NyYy9ncm91cGRlbC5jCi1pbmRleCA3MGJlZDAxLi5hYmFiZDgxIDEwMDY0NAoraW5kZXggZjk0MWE4NC4uNWE3MDA1NiAxMDA2NDQKIC0tLSBhL3NyYy9ncm91cGRlbC5jCiArKysgYi9zcmMvZ3JvdXBkZWwuYwogQEAgLTM0LDYgKzM0LDkgQEAKQEAgLTY1LDcgKzY2LDcgQEAKICAjaW5jbHVkZSA8Z2V0b3B0Lmg+CiAgI2luY2x1ZGUgPGdycC5oPgogZGlmZiAtLWdpdCBhL3NyYy9ncm91cG1vZC5jIGIvc3JjL2dyb3VwbW9kLmMKLWluZGV4IDcyZGFmMmMuLjg5NjVmOWQgMTAwNjQ0CitpbmRleCAxZGNhNWZjLi5iYzE0NDM4IDEwMDY0NAogLS0tIGEvc3JjL2dyb3VwbW9kLmMKICsrKyBiL3NyYy9ncm91cG1vZC5jCiBAQCAtMzQsNiArMzQsOSBAQApAQCAtNzksNyArODAsNyBAQAogICNpbmNsdWRlIDxmY250bC5oPgogICNpbmNsdWRlIDxnZXRvcHQuaD4KIGRpZmYgLS1naXQgYS9zcmMvdXNlcmFkZC5jIGIvc3JjL3VzZXJhZGQuYwotaW5kZXggM2FhZjQ1Yy4uMWFiOTE3NCAxMDA2NDQKK2luZGV4IDRhZjBmN2MuLjFiN2JmMDYgMTAwNjQ0CiAtLS0gYS9zcmMvdXNlcmFkZC5jCiArKysgYi9zcmMvdXNlcmFkZC5jCiBAQCAtMzQsNiArMzQsOSBAQApAQCAtOTMsNyArOTQsNyBAQAogICNpbmNsdWRlIDxjdHlwZS5oPgogICNpbmNsdWRlIDxlcnJuby5oPgogZGlmZiAtLWdpdCBhL3NyYy91c2VyZGVsLmMgYi9zcmMvdXNlcmRlbC5jCi1pbmRleCBjOGRlMWQzLi4yNGQzZWE5IDEwMDY0NAoraW5kZXggY2M5NTFlNS4uMTUzZTBiZSAxMDA2NDQKIC0tLSBhL3NyYy91c2VyZGVsLmMKICsrKyBiL3NyYy91c2VyZGVsLmMKIEBAIC0zNCw2ICszNCw5IEBACkBAIC0xMDcsNyArMTA4LDcgQEAKICAjaW5jbHVkZSA8ZXJybm8uaD4KICAjaW5jbHVkZSA8ZmNudGwuaD4KIGRpZmYgLS1naXQgYS9zcmMvdXNlcm1vZC5jIGIvc3JjL3VzZXJtb2QuYwotaW5kZXggY2NmYmI5OS4uMjRmYjYwZCAxMDA2NDQKK2luZGV4IDA1Yjk4NzEuLjIxYzZkYTkgMTAwNjQ0CiAtLS0gYS9zcmMvdXNlcm1vZC5jCiArKysgYi9zcmMvdXNlcm1vZC5jCiBAQCAtMzQsNiArMzQsOSBAQApAQCAtMTIwLDYgKzEyMSwzIEBACiAgI2luY2x1ZGUgPGFzc2VydC5oPgogICNpbmNsdWRlIDxjdHlwZS5oPgogICNpbmNsdWRlIDxlcnJuby5oPgotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtTWFrZS10aGUtc3BfbHN0Y2hnLXNoYWRvdy1maWVsZC1yZXByb2R1Y2libGUtcmUuLTcxLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtTWFrZS10aGUtc3BfbHN0Y2hnLXNoYWRvdy1maWVsZC1yZXByb2R1Y2libGUtcmUuLTcxLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZTBiYTNlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLU1ha2UtdGhlLXNwX2xzdGNoZy1zaGFkb3ctZmllbGQtcmVwcm9kdWNpYmxlLXJlLi03MS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg5ICswLDAgQEAKLUZyb20gZmUzNGEyYTBlNDRiYzgwZmYyMTNiZmQxODUwNDZhNWYxMGM5NDk5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IENocmlzIExhbWIgPGNocmlzQGNocmlzLWxhbWIuY28udWs+Ci1EYXRlOiBXZWQsIDIgSmFuIDIwMTkgMTg6MDY6MTYgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIE1ha2UgdGhlIHNwX2xzdGNoZyBzaGFkb3cgZmllbGQgcmVwcm9kdWNpYmxlIChyZS4gIzcxKQotCi1Gcm9tIDxodHRwczovL2dpdGh1Yi5jb20vc2hhZG93LW1haW50L3NoYWRvdy9wdWxsLzcxPjoKLQotYGBgCi1UaGUgdGhpcmQgZmllbGQgaW4gdGhlIC9ldGMvc2hhZG93IGZpbGUgKHNwX2xzdGNoZykgY29udGFpbnMgdGhlIGRhdGUgb2YKLXRoZSBsYXN0IHBhc3N3b3JkIGNoYW5nZSBleHByZXNzZWQgYXMgdGhlIG51bWJlciBvZiBkYXlzIHNpbmNlIEphbiAxLCAxOTcwLgotQXMgdGhpcyBpcyBhIHJlbGF0aXZlIHRpbWUsIGNyZWF0aW5nIGEgdXNlciB0b2RheSB3aWxsIHJlc3VsdCBpbjoKLQotdXNlcm5hbWU6MTcyMzg6MDo5OTk5OTo3Ojo6Ci13aGlsc3QgY3JlYXRpbmcgdGhlIHNhbWUgdXNlciB0b21vcnJvdyB3aWxsIHJlc3VsdCBpbjoKLQotdXNlcm5hbWU6MTcyMzk6MDo5OTk5OTo3Ojo6Ci1UaGlzIGhhcyBhbiBpbXBhY3QgZm9yIHRoZSBSZXByb2R1Y2libGUgQnVpbGRzWzBdIHByb2plY3Qgd2hlcmUgd2UgYWltIHRvCi1iZSBpbmRlcGVuZGVudCBvZiBhcyBtYW55IGVsZW1lbnRzIHRoZSBidWlsZCBlbnZpcm9ubWVudCBhcyBwb3NzaWJsZSwKLWluY2x1ZGluZyB0aGUgY3VycmVudCBkYXRlLgotCi1UaGlzIHBhdGNoIGNoYW5nZXMgdGhlIGJlaGF2aW91ciB0byB1c2UgdGhlIFNPVVJDRV9EQVRFX0VQT0NIWzFdCi1lbnZpcm9ubWVudCB2YXJpYWJsZSAoaW5zdGVhZCBvZiBKYW4gMSwgMTk3MCkgaWYgdmFsaWQuCi1gYGAKLQotVGhpcyB1cGRhdGVkIFBSIGFkZHMgc29tZSBtaXNzaW5nIGNhbGxzIHRvIGdldHRpbWUgKCkuIFRoaXMgd2FzIG9yaWdpbmFsbHkKLWZpbGVkIGJ5IEpvaGFubmVzIFNjaGF1ZXIgaW4gRGViaWFuIGFzICM5MTc3NzMgWzJdLgotCi1bMF0gaHR0cHM6Ly9yZXByb2R1Y2libGUtYnVpbGRzLm9yZy8KLVsxXSBodHRwczovL3JlcHJvZHVjaWJsZS1idWlsZHMub3JnL3NwZWNzL3NvdXJjZS1kYXRlLWVwb2NoLwotWzJdIGh0dHBzOi8vYnVncy5kZWJpYW4ub3JnLzkxNzc3MwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBBbGV4IEtpZXJuYW4gPGFsZXgua2llcm5hbkBnbWFpbC5jb20+Ci0tLS0KLSBsaWJtaXNjL3B3ZDJzcHdkLmMgfCAzICstLQotIHNyYy9wd2NrLmMgICAgICAgICB8IDIgKy0KLSBzcmMvcHdjb252LmMgICAgICAgfCAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWJtaXNjL3B3ZDJzcHdkLmMgYi9saWJtaXNjL3B3ZDJzcHdkLmMKLWluZGV4IGMxYjliMjlhYzg3My4uNjc5OWRkNTBkNDkwIDEwMDY0NAotLS0tIGEvbGlibWlzYy9wd2Qyc3B3ZC5jCi0rKysgYi9saWJtaXNjL3B3ZDJzcHdkLmMKLUBAIC00MCw3ICs0MCw2IEBACi0gI2luY2x1ZGUgInByb3RvdHlwZXMuaCIKLSAjaW5jbHVkZSAiZGVmaW5lcy5oIgotICNpbmNsdWRlIDxwd2QuaD4KLS1leHRlcm4gdGltZV90IHRpbWUgKHRpbWVfdCAqKTsKLSAKLSAvKgotICAqIHB3ZF90b19zcHdkIC0gY3JlYXRlIGVudHJpZXMgZm9yIG5ldyBzcHdkIHN0cnVjdHVyZQotQEAgLTY2LDcgKzY1LDcgQEAgc3RydWN0IHNwd2QgKnB3ZF90b19zcHdkIChjb25zdCBzdHJ1Y3QgcGFzc3dkICpwdykKLSAJCSAqLwotIAkJc3Auc3BfbWluID0gMDsKLSAJCXNwLnNwX21heCA9ICgxMDAwMEwgKiBEQVkpIC8gU0NBTEU7Ci0tCQlzcC5zcF9sc3RjaGcgPSAobG9uZykgdGltZSAoKHRpbWVfdCAqKSAwKSAvIFNDQUxFOwotKwkJc3Auc3BfbHN0Y2hnID0gKGxvbmcpIGdldHRpbWUgKCkgLyBTQ0FMRTsKLSAJCWlmICgwID09IHNwLnNwX2xzdGNoZykgewotIAkJCS8qIEJldHRlciBkaXNhYmxlIGFnaW5nIHRoYW4gcmVxdWlyaW5nIGEgcGFzc3dvcmQKLSAJCQkgKiBjaGFuZ2UgKi8KLWRpZmYgLS1naXQgYS9zcmMvcHdjay5jIGIvc3JjL3B3Y2suYwotaW5kZXggMGZmYjcxMWVmYjEzLi5mNzAwNzFiMTI1MDAgMTAwNjQ0Ci0tLS0gYS9zcmMvcHdjay5jCi0rKysgYi9zcmMvcHdjay5jCi1AQCAtNjA5LDcgKzYwOSw3IEBAIHN0YXRpYyB2b2lkIGNoZWNrX3B3X2ZpbGUgKGludCAqZXJyb3JzLCBib29sICpjaGFuZ2VkKQotIAkJCQkJc3Auc3BfaW5hY3QgID0gLTE7Ci0gCQkJCQlzcC5zcF9leHBpcmUgPSAtMTsKLSAJCQkJCXNwLnNwX2ZsYWcgICA9IFNIQURPV19TUF9GTEFHX1VOU0VUOwotLQkJCQkJc3Auc3BfbHN0Y2hnID0gKGxvbmcpIHRpbWUgKCh0aW1lX3QgKikgMCkgLyBTQ0FMRTsKLSsJCQkJCXNwLnNwX2xzdGNoZyA9IChsb25nKSBnZXR0aW1lICgpIC8gU0NBTEU7Ci0gCQkJCQlpZiAoMCA9PSBzcC5zcF9sc3RjaGcpIHsKLSAJCQkJCQkvKiBCZXR0ZXIgZGlzYWJsZSBhZ2luZyB0aGFuCi0gCQkJCQkJICogcmVxdWlyaW5nIGEgcGFzc3dvcmQgY2hhbmdlCi1kaWZmIC0tZ2l0IGEvc3JjL3B3Y29udi5jIGIvc3JjL3B3Y29udi5jCi1pbmRleCA5YzY5ZmExMzFkOGUuLmY5MzJmMjY2YzU5YyAxMDA2NDQKLS0tLSBhL3NyYy9wd2NvbnYuYwotKysrIGIvc3JjL3B3Y29udi5jCi1AQCAtMjY3LDcgKzI2Nyw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQkJc3BlbnQuc3BfZmxhZyAgID0gU0hBRE9XX1NQX0ZMQUdfVU5TRVQ7Ci0gCQl9Ci0gCQlzcGVudC5zcF9wd2RwID0gcHctPnB3X3Bhc3N3ZDsKLS0JCXNwZW50LnNwX2xzdGNoZyA9IChsb25nKSB0aW1lICgodGltZV90ICopIDApIC8gU0NBTEU7Ci0rCQlzcGVudC5zcF9sc3RjaGcgPSAobG9uZykgZ2V0dGltZSAoKSAvIFNDQUxFOwotIAkJaWYgKDAgPT0gc3BlbnQuc3BfbHN0Y2hnKSB7Ci0gCQkJLyogQmV0dGVyIGRpc2FibGUgYWdpbmcgdGhhbiByZXF1aXJpbmcgYSBwYXNzd29yZAotIAkJCSAqIGNoYW5nZSAqLwotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZXJyb3Itd2l0aC1kYXNoLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtY29uZmlndXJlLmFjLWZpeC1jb25maWd1cmUtZXJyb3Itd2l0aC1kYXNoLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNzRjYmIwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLWNvbmZpZ3VyZS5hYy1maXgtY29uZmlndXJlLWVycm9yLXdpdGgtZGFzaC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM2ICswLDAgQEAKLUZyb20gM2M1MmE4NGZmODc3NTU5MGU3ZTlkYTljMGQ0NDA4YzIzNDk0MzA1ZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFlpIFpoYW8gPHlpLnpoYW9Ad2luZHJpdmVyLmNvbT4KLURhdGU6IE1vbiwgMTcgSnVuIDIwMTkgMTU6MzY6MzQgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlLmFjOiBmaXggY29uZmlndXJlIGVycm9yIHdpdGggZGFzaAotCi1BIGNvbmZpZ3VyZSBlcnJvciBvY2N1cnMgd2hlbiAvYmluL3NoIC0+IGRhc2g6Ci0gIGNoZWNraW5nIGZvciBpc19zZWxpbnV4X2VuYWJsZWQgaW4gLWxzZWxpbnV4Li4uIHllcwotICBjaGVja2luZyBmb3Igc2VtYW5hZ2VfY29ubmVjdCBpbiAtbHNlbWFuYWdlLi4uIHllcwotICBjb25maWd1cmU6IDE2MzIyOiB0ZXN0OiB5ZXN5ZXM6IHVuZXhwZWN0ZWQgb3BlcmF0b3IKLQotVXNlICI9IiBpbnN0ZWFkIG9mICI9PSIgc2luY2UgZGFzaCBkb2Vzbid0IHN1cHBvcnQgdGhpcyBvcGVyYXRvci4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotW2h0dHBzOi8vZ2l0aHViLmNvbS9zaGFkb3ctbWFpbnQvc2hhZG93L2NvbW1pdC8zYzUyYTg0ZmY4Nzc1NTkwZTdlOWRhOWMwZDQ0MDhjMjM0OTQzMDVlXQotCi1TaWduZWQtb2ZmLWJ5OiBZaSBaaGFvIDx5aS56aGFvQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDY3NjI1NTYuLjE5MDdhZmIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTUwMCw3ICs1MDAsNyBAQCBpZiB0ZXN0ICIkd2l0aF9zZWxpbnV4IiAhPSAibm8iOyB0aGVuCi0gCQkJQUNfTVNHX0VSUk9SKFtsaWJzZW1hbmFnZSBub3QgZm91bmRdKQotIAkJZmkKLSAKLS0JCWlmIHRlc3QgIiRzZWxpbnV4X2xpYiRzZW1hbmFnZV9saWIiID09ICJ5ZXN5ZXMiIDsgdGhlbgotKwkJaWYgdGVzdCAiJHNlbGludXhfbGliJHNlbWFuYWdlX2xpYiIgPSAieWVzeWVzIiA7IHRoZW4KLSAJCQlBQ19ERUZJTkUoV0lUSF9TRUxJTlVYLCAxLAotIAkJCSAgICAgICAgICBbQnVpbGQgc2hhZG93IHdpdGggU0VMaW51eCBzdXBwb3J0XSkKLSAJCQlMSUJTRUxJTlVYPSItbHNlbGludXgiCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAxLXVzZXJhZGQuYy1jcmVhdGUtcGFyZW50LWRpcmVjdG9yaWVzLXdoZW4tbmVjZXNzYXJ5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtdXNlcmFkZC5jLWNyZWF0ZS1wYXJlbnQtZGlyZWN0b3JpZXMtd2hlbi1uZWNlc3NhcnkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGZhYTZmNjguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDEtdXNlcmFkZC5jLWNyZWF0ZS1wYXJlbnQtZGlyZWN0b3JpZXMtd2hlbi1uZWNlc3NhcnkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTYgKzAsMCBAQAotU3ViamVjdDogW1BBVENIXSB1c2VyYWRkLmM6IGNyZWF0ZSBwYXJlbnQgZGlyZWN0b3JpZXMgd2hlbiBuZWNlc3NhcnkKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL3VzZXJhZGQuYyB8IDgwICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDUzIGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3VzZXJhZGQuYyBiL3NyYy91c2VyYWRkLmMKLWluZGV4IDAwYTNjMzAuLjllY2JiNTggMTAwNjQ0Ci0tLS0gYS9zcmMvdXNlcmFkZC5jCi0rKysgYi9zcmMvdXNlcmFkZC5jCi1AQCAtMjAyMSw2ICsyMDIxLDM1IEBAIHN0YXRpYyB2b2lkIHVzcl91cGRhdGUgKHZvaWQpCi0gfQotIAotIC8qCi0rICogbWtkaXJfcCAtIGNyZWF0ZSBkaXJlY3RvcmllcywgaW5jbHVkaW5nIHBhcmVudCBkaXJlY3RvcmllcyB3aGVuIG5lZWRlZAotKyAqCi0rICogc2ltaWxhciB0byBgbWtkaXIgLXAnCi0rICovCi0rdm9pZCBta2Rpcl9wKGNvbnN0IGNoYXIgKnBhdGgpIHsKLSsJaW50IGxlbiA9IHN0cmxlbihwYXRoKTsKLSsJY2hhciBuZXdkaXJbbGVuICsgMV07Ci0rCW1vZGVfdCBtb2RlID0gMDc1NTsKLSsJaW50IGkgPSAwOwotKwotKwlpZiAocGF0aFtpXSA9PSAnXDAnKSB7Ci0rCQlyZXR1cm47Ci0rCX0KLSsKLSsJLyogc2tpcCB0aGUgbGVhZGluZyAnLycgKi8KLSsJaSsrOwotKwotKwl3aGlsZShwYXRoW2ldICE9ICdcMCcpIHsKLSsJCWlmIChwYXRoW2ldID09ICcvJykgewotKwkJCXN0cm5jcHkobmV3ZGlyLCBwYXRoLCBpKTsKLSsJCQluZXdkaXJbaV0gPSAnXDAnOwotKwkJCW1rZGlyKG5ld2RpciwgbW9kZSk7Ci0rCQl9Ci0rCQlpKys7Ci0rCX0KLSsJbWtkaXIocGF0aCwgbW9kZSk7Ci0rfQotKwotKy8qCi0gICogY3JlYXRlX2hvbWUgLSBjcmVhdGUgdGhlIHVzZXIncyBob21lIGRpcmVjdG9yeQotICAqCi0gICoJY3JlYXRlX2hvbWUoKSBjcmVhdGVzIHRoZSB1c2VyJ3MgaG9tZSBkaXJlY3RvcnkgaWYgaXQgZG9lcyBub3QKLUBAIC0yMDM4LDM5ICsyMDY3LDM2IEBAIHN0YXRpYyB2b2lkIGNyZWF0ZV9ob21lICh2b2lkKQotIAkJCWZhaWxfZXhpdCAoRV9IT01FRElSKTsKLSAJCX0KLSAjZW5kaWYKLS0JCS8qIFhYWCAtIGNyZWF0ZSBtaXNzaW5nIHBhcmVudCBkaXJlY3Rvcmllcy4gIC0tbWFyZWttICovCi0tCQlpZiAobWtkaXIgKHByZWZpeF91c2VyX2hvbWUsIDApICE9IDApIHsKLS0JCQlmcHJpbnRmIChzdGRlcnIsCi0tCQkJICAgICAgICAgXygiJXM6IGNhbm5vdCBjcmVhdGUgZGlyZWN0b3J5ICVzXG4iKSwKLS0JCQkgICAgICAgICBQcm9nLCBwcmVmaXhfdXNlcl9ob21lKTsKLSsJCW1rZGlyX3AodXNlcl9ob21lKTsKLSsJfQotKwlpZiAoYWNjZXNzIChwcmVmaXhfdXNlcl9ob21lLCBGX09LKSAhPSAwKSB7Ci0gI2lmZGVmIFdJVEhfQVVESVQKLS0JCQlhdWRpdF9sb2dnZXIgKEFVRElUX0FERF9VU0VSLCBQcm9nLAotLQkJCSAgICAgICAgICAgICAgImFkZGluZyBob21lIGRpcmVjdG9yeSIsCi0tCQkJICAgICAgICAgICAgICB1c2VyX25hbWUsICh1bnNpZ25lZCBpbnQpIHVzZXJfaWQsCi0tCQkJICAgICAgICAgICAgICBTSEFET1dfQVVESVRfRkFJTFVSRSk7Ci0rCQlhdWRpdF9sb2dnZXIgKEFVRElUX0FERF9VU0VSLCBQcm9nLAotKwkJCSAgICAgICJhZGRpbmcgaG9tZSBkaXJlY3RvcnkiLAotKwkJCSAgICAgIHVzZXJfbmFtZSwgKHVuc2lnbmVkIGludCkgdXNlcl9pZCwKLSsJCQkgICAgICBTSEFET1dfQVVESVRfRkFJTFVSRSk7Ci0gI2VuZGlmCi0tCQkJZmFpbF9leGl0IChFX0hPTUVESVIpOwotLQkJfQotLQkJKHZvaWQpIGNob3duIChwcmVmaXhfdXNlcl9ob21lLCB1c2VyX2lkLCB1c2VyX2dpZCk7Ci0tCQljaG1vZCAocHJlZml4X3VzZXJfaG9tZSwKLS0JCSAgICAgICAwNzc3ICYgfmdldGRlZl9udW0gKCJVTUFTSyIsIEdFVERFRl9ERUZBVUxUX1VNQVNLKSk7Ci0tCQlob21lX2FkZGVkID0gdHJ1ZTsKLSsJCWZhaWxfZXhpdCAoRV9IT01FRElSKTsKLSsJfQotKwkodm9pZCkgY2hvd24gKHByZWZpeF91c2VyX2hvbWUsIHVzZXJfaWQsIHVzZXJfZ2lkKTsKLSsJY2htb2QgKHByZWZpeF91c2VyX2hvbWUsCi0rCSAgICAgICAwNzc3ICYgfmdldGRlZl9udW0gKCJVTUFTSyIsIEdFVERFRl9ERUZBVUxUX1VNQVNLKSk7Ci0rCWhvbWVfYWRkZWQgPSB0cnVlOwotICNpZmRlZiBXSVRIX0FVRElUCi0tCQlhdWRpdF9sb2dnZXIgKEFVRElUX0FERF9VU0VSLCBQcm9nLAotLQkJICAgICAgICAgICAgICAiYWRkaW5nIGhvbWUgZGlyZWN0b3J5IiwKLS0JCSAgICAgICAgICAgICAgdXNlcl9uYW1lLCAodW5zaWduZWQgaW50KSB1c2VyX2lkLAotLQkJICAgICAgICAgICAgICBTSEFET1dfQVVESVRfU1VDQ0VTUyk7Ci0rCWF1ZGl0X2xvZ2dlciAoQVVESVRfQUREX1VTRVIsIFByb2csCi0rCQkgICAgICAiYWRkaW5nIGhvbWUgZGlyZWN0b3J5IiwKLSsJCSAgICAgIHVzZXJfbmFtZSwgKHVuc2lnbmVkIGludCkgdXNlcl9pZCwKLSsJCSAgICAgIFNIQURPV19BVURJVF9TVUNDRVNTKTsKLSAjZW5kaWYKLSAjaWZkZWYgV0lUSF9TRUxJTlVYCi0tCQkvKiBSZXNldCBTRUxpbnV4IHRvIGNyZWF0ZSBmaWxlcyB3aXRoIGRlZmF1bHQgY29udGV4dHMgKi8KLS0JCWlmIChyZXNldF9zZWxpbnV4X2ZpbGVfY29udGV4dCAoKSAhPSAwKSB7Ci0tCQkJZnByaW50ZiAoc3RkZXJyLAotLQkJCSAgICAgICAgIF8oIiVzOiBjYW5ub3QgcmVzZXQgU0VMaW51eCBmaWxlIGNyZWF0aW9uIGNvbnRleHRcbiIpLAotLQkJCSAgICAgICAgIFByb2cpOwotLQkJCWZhaWxfZXhpdCAoRV9IT01FRElSKTsKLS0JCX0KLS0jZW5kaWYKLSsJLyogUmVzZXQgU0VMaW51eCB0byBjcmVhdGUgZmlsZXMgd2l0aCBkZWZhdWx0IGNvbnRleHRzICovCi0rCWlmIChyZXNldF9zZWxpbnV4X2ZpbGVfY29udGV4dCAoKSAhPSAwKSB7Ci0rCQlmcHJpbnRmIChzdGRlcnIsCi0rCQkJIF8oIiVzOiBjYW5ub3QgcmVzZXQgU0VMaW51eCBmaWxlIGNyZWF0aW9uIGNvbnRleHRcbiIpLAotKwkJCSBQcm9nKTsKLSsJCWZhaWxfZXhpdCAoRV9IT01FRElSKTsKLSAJfQotKyNlbmRpZgotIH0KLSAKLSAvKgotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzLzAwMDItQWxsb3ctZm9yLXNldHRpbmctcGFzc3dvcmQtaW4tY2xlYXItdGV4dC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAyLUFsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzYzMzJlNAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy8wMDAyLUFsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2gKQEAgLTAsMCArMSwzMDEgQEAKK0Zyb20gYTdkOTk1MjI4NDkxYWQ1MjU1YWQ4NmMxZjA0YmEwNzFmNjg4MDg5NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENoZW4gUWkgPFFpLkNoZW5Ad2luZHJpdmVyLmNvbT4KK0RhdGU6IFNhdCwgMTYgTm92IDIwMTMgMTU6Mjc6NDcgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gQWxsb3cgZm9yIHNldHRpbmcgcGFzc3dvcmQgaW4gY2xlYXIgdGV4dAorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW09FIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKKy0tLQorIHNyYy9NYWtlZmlsZS5hbSB8ICA4ICsrKystLS0tCisgc3JjL2dyb3VwYWRkLmMgIHwgMjAgKysrKysrKysrKysrKysrLS0tLS0KKyBzcmMvZ3JvdXBtb2QuYyAgfCAyMCArKysrKysrKysrKysrKystLS0tLQorIHNyYy91c2VyYWRkLmMgICB8IDIxICsrKysrKysrKysrKysrKy0tLS0tLQorIHNyYy91c2VybW9kLmMgICB8IDIwICsrKysrKysrKysrKysrKy0tLS0tCisgNSBmaWxlcyBjaGFuZ2VkLCA2NCBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggZjMxZmQ3YS4uNGEzMTdhMyAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtMTAzLDEwICsxMDMsMTAgQEAgY2hzaF9MREFERCAgICAgPSAkKExEQUREKSAkKExJQlBBTSkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkNSWVBUX05PUEFNKQorIGNocGFzc3dkX0xEQUREID0gJChMREFERCkgJChMSUJQQU0pICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJDUllQVCkgJChMSUJFQ09ORikKKyBleHBpcnlfTERBREQgPSAkKExEQUREKSAkKExJQkVDT05GKQorIGdwYXNzd2RfTERBREQgID0gJChMREFERCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkNSWVBUKSAkKExJQkVDT05GKQorLWdyb3VwYWRkX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKQorK2dyb3VwYWRkX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKSAkKExJQkNSWVBUKQorIGdyb3VwZGVsX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKQorIGdyb3VwbWVtc19MREFERCA9ICQoTERBREQpICQoTElCUEFNKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCRUNPTkYpCistZ3JvdXBtb2RfTERBREQgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCRUNPTkYpCisrZ3JvdXBtb2RfTERBREQgPSAkKExEQUREKSAkKExJQlBBTV9TVUlEKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCRUNPTkYpICQoTElCQ1JZUFQpCisgZ3JwY2tfTERBREQgICAgPSAkKExEQUREKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCRUNPTkYpCisgZ3JwY29udl9MREFERCAgPSAkKExEQUREKSAkKExJQkFVRElUKSAkKExJQlNFTElOVVgpICQoTElCRUNPTkYpCisgZ3JwdW5jb252X0xEQUREID0gJChMREFERCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKQorQEAgLTEyNyw5ICsxMjcsOSBAQCBzdV9TT1VSQ0VTICAgICA9IFwKKyAJc3VhdXRoLmMKKyBzdV9MREFERCAgICAgICA9ICQoTERBREQpICQoTElCUEFNKSAkKExJQkFVRElUKSAkKExJQkNSWVBUX05PUEFNKSAkKExJQlNLRVkpICQoTElCTUQpICQoTElCRUNPTkYpCisgc3Vsb2dpbl9MREFERCAgPSAkKExEQUREKSAkKExJQkNSWVBUKSAkKExJQkVDT05GKQorLXVzZXJhZGRfTERBREQgID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQlNFTUFOQUdFKSAkKExJQkFDTCkgJChMSUJBVFRSKSAkKExJQkVDT05GKQorK3VzZXJhZGRfTERBREQgID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQlNFTUFOQUdFKSAkKExJQkFDTCkgJChMSUJBVFRSKSAkKExJQkVDT05GKSAkKExJQkNSWVBUKQorIHVzZXJkZWxfTERBREQgID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQlNFTUFOQUdFKSAkKExJQkVDT05GKQorLXVzZXJtb2RfTERBREQgID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQlNFTUFOQUdFKSAkKExJQkFDTCkgJChMSUJBVFRSKSAkKExJQkVDT05GKQorK3VzZXJtb2RfTERBREQgID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQlNFTUFOQUdFKSAkKExJQkFDTCkgJChMSUJBVFRSKSAkKExJQkVDT05GKSAkKExJQkNSWVBUKQorIHZpcHdfTERBREQgICAgID0gJChMREFERCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkVDT05GKQorIAorIGluc3RhbGwtYW06IGFsbC1hbQorZGlmZiAtLWdpdCBhL3NyYy9ncm91cGFkZC5jIGIvc3JjL2dyb3VwYWRkLmMKK2luZGV4IGU5YzRiYjcuLmQ1NzJjMDAgMTAwNjQ0CistLS0gYS9zcmMvZ3JvdXBhZGQuYworKysrIGIvc3JjL2dyb3VwYWRkLmMKK0BAIC0xMjcsOSArMTI3LDEwIEBAIHN0YXRpYyAvKkBub3JldHVybkAqL3ZvaWQgdXNhZ2UgKGludCBzdGF0dXMpCisgCSh2b2lkKSBmcHV0cyAoXygiICAtbywgLS1ub24tdW5pcXVlICAgICAgICAgICAgICBhbGxvdyB0byBjcmVhdGUgZ3JvdXBzIHdpdGggZHVwbGljYXRlXG4iCisgCSAgICAgICAgICAgICAgICAiICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAobm9uLXVuaXF1ZSkgR0lEXG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKF8oIiAgLXAsIC0tcGFzc3dvcmQgUEFTU1dPUkQgICAgICAgdXNlIHRoaXMgZW5jcnlwdGVkIHBhc3N3b3JkIGZvciB0aGUgbmV3IGdyb3VwXG4iKSwgdXNhZ2VvdXQpOworKwkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tY2xlYXItcGFzc3dvcmQgUEFTU1dPUkQgdXNlIHRoaXMgY2xlYXIgcGFzc3dvcmQgZm9yIHRoZSBuZXcgZ3JvdXBcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtciwgLS1zeXN0ZW0gICAgICAgICAgICAgICAgICBjcmVhdGUgYSBzeXN0ZW0gYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1SLCAtLXJvb3QgQ0hST09UX0RJUiAgICAgICAgIGRpcmVjdG9yeSB0byBjaHJvb3QgaW50b1xuIiksIHVzYWdlb3V0KTsKKy0JKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIGRpcmVjdG9yeSBwcmVmaXhcbiIpLCB1c2FnZW91dCk7CisrCSh2b2lkKSBmcHV0cyAoXygiICAtQSwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBkaXJlY3RvcnkgcHJlZml4XG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKCJcbiIsIHVzYWdlb3V0KTsKKyAJZXhpdCAoc3RhdHVzKTsKKyB9CitAQCAtMzkxLDEzICszOTIsMTQgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkJeyJrZXkiLCAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdLJ30sCisgCQl7Im5vbi11bmlxdWUiLCBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ28nfSwKKyAJCXsicGFzc3dvcmQiLCAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAorKwkJeyJjbGVhci1wYXNzd29yZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorIAkJeyJzeXN0ZW0iLCAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdyJ30sCisgCQl7InJvb3QiLCAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1InfSwKKy0JCXsicHJlZml4IiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorKwkJeyJwcmVmaXgiLCAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdBJ30sCisgCQl7TlVMTCwgMCwgTlVMTCwgJ1wwJ30KKyAJfTsKKyAKKy0Jd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICJmZzpoSzpvcDpyUjpQOiIsCisrCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZmc6aEs6b3A6UDpyUjpBOiIsCisgCQkgICAgICAgICAgICAgICAgIGxvbmdfb3B0aW9ucywgTlVMTCkpICE9IC0xKSB7CisgCQlzd2l0Y2ggKGMpIHsKKyAJCWNhc2UgJ2YnOgorQEAgLTQ0OSwxMiArNDUxLDIwIEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQlwZmxnID0gdHJ1ZTsKKyAJCQlncm91cF9wYXNzd2QgPSBvcHRhcmc7CisgCQkJYnJlYWs7CisrCQljYXNlICdQJzoKKysJCQlwZmxnID0gdHJ1ZTsKKysJCQlncm91cF9wYXNzd2QgPSBwd19lbmNyeXB0IChvcHRhcmcsIGNyeXB0X21ha2Vfc2FsdCAoTlVMTCwgTlVMTCkpOworKwkJCWJyZWFrOworIAkJY2FzZSAncic6CisgCQkJcmZsZyA9IHRydWU7CisgCQkJYnJlYWs7CisgCQljYXNlICdSJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19yb290X2ZsYWcgKCkgKi8KKyAJCQlicmVhazsKKy0JCWNhc2UgJ1AnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCisrCQljYXNlICdBJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLworKwkJCWZwcmludGYgKHN0ZGVyciwKKysJCQkJIF8oIiVzOiAtQSBpcyBkZWxpYmVyYXRlbHkgbm90IHN1cHBvcnRlZCBcbiIpLAorKwkJCQkgUHJvZyk7CisrCQkJZXhpdCAoRV9CQURfQVJHKTsKKyAJCQlicmVhazsKKyAJCWRlZmF1bHQ6CisgCQkJdXNhZ2UgKEVfVVNBR0UpOworQEAgLTU4OCw3ICs1OTgsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQorIAkodm9pZCkgdGV4dGRvbWFpbiAoUEFDS0FHRSk7CisgCisgCXByb2Nlc3Nfcm9vdF9mbGFnICgiLVIiLCBhcmdjLCBhcmd2KTsKKy0JcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZyAoIi1QIiwgYXJnYywgYXJndik7CisrCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItQSIsIGFyZ2MsIGFyZ3YpOworIAorIAlPUEVOTE9HICgiZ3JvdXBhZGQiKTsKKyAjaWZkZWYgV0lUSF9BVURJVAorZGlmZiAtLWdpdCBhL3NyYy9ncm91cG1vZC5jIGIvc3JjL2dyb3VwbW9kLmMKK2luZGV4IGJjMTQ0MzguLjI1Y2NiNDQgMTAwNjQ0CistLS0gYS9zcmMvZ3JvdXBtb2QuYworKysrIGIvc3JjL2dyb3VwbW9kLmMKK0BAIC0xMzgsOCArMTM4LDkgQEAgc3RhdGljIHZvaWQgdXNhZ2UgKGludCBzdGF0dXMpCisgCSh2b2lkKSBmcHV0cyAoXygiICAtbywgLS1ub24tdW5pcXVlICAgICAgICAgICAgICBhbGxvdyB0byB1c2UgYSBkdXBsaWNhdGUgKG5vbi11bmlxdWUpIEdJRFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1wLCAtLXBhc3N3b3JkIFBBU1NXT1JEICAgICAgIGNoYW5nZSB0aGUgcGFzc3dvcmQgdG8gdGhpcyAoZW5jcnlwdGVkKVxuIgorIAkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUEFTU1dPUkRcbiIpLCB1c2FnZW91dCk7CisrCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1jbGVhci1wYXNzd29yZCBQQVNTV09SRCBjaGFuZ2UgdGhlIHBhc3N3b3JkIHRvIHRoaXMgY2xlYXIgUEFTU1dPUkRcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7CistCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7CisrCSh2b2lkKSBmcHV0cyAoXygiICAtQSwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoIlxuIiwgdXNhZ2VvdXQpOworIAlleGl0IChzdGF0dXMpOworIH0KK0BAIC0zODcsMTEgKzM4OCwxMiBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQl7Im5ldy1uYW1lIiwgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ24nfSwKKyAJCXsibm9uLXVuaXF1ZSIsIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnbyd9LAorIAkJeyJwYXNzd29yZCIsICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdwJ30sCisrCQl7ImNsZWFyLXBhc3N3b3JkIiwgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdQJ30sCisgCQl7InJvb3QiLCAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1InfSwKKy0JCXsicHJlZml4IiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorKwkJeyJwcmVmaXgiLCAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdBJ30sCisgCQl7TlVMTCwgMCwgTlVMTCwgJ1wwJ30KKyAJfTsKKy0Jd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICJnOmhuOm9wOlI6UDoiLAorKwl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgImc6aG46b3A6UDpSOkE6IiwKKyAJCSAgICAgICAgICAgICAgICAgbG9uZ19vcHRpb25zLCBOVUxMKSkgIT0gLTEpIHsKKyAJCXN3aXRjaCAoYykgeworIAkJY2FzZSAnZyc6CitAQCAtNDE4LDkgKzQyMCwxNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJZ3JvdXBfcGFzc3dkID0gb3B0YXJnOworIAkJCXBmbGcgPSB0cnVlOworIAkJCWJyZWFrOworKwkJY2FzZSAnUCc6CisrCQkJZ3JvdXBfcGFzc3dkID0gcHdfZW5jcnlwdCAob3B0YXJnLCBjcnlwdF9tYWtlX3NhbHQgKE5VTEwsIE5VTEwpKTsKKysJCQlwZmxnID0gdHJ1ZTsKKysJCQlicmVhazsKKyAJCWNhc2UgJ1InOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3Jvb3RfZmxhZyAoKSAqLworIAkJCWJyZWFrOworLQkJY2FzZSAnUCc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KKysJCWNhc2UgJ0EnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCisrCQkJZnByaW50ZiAoc3RkZXJyLAorKwkJCQkgXygiJXM6IC1BIGlzIGRlbGliZXJhdGVseSBub3Qgc3VwcG9ydGVkIFxuIiksCisrCQkJCSBQcm9nKTsKKysJCQlleGl0IChFX0JBRF9BUkcpOworIAkJCWJyZWFrOworIAkJZGVmYXVsdDoKKyAJCQl1c2FnZSAoRV9VU0FHRSk7CitAQCAtNzYxLDcgKzc3MSw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCSh2b2lkKSB0ZXh0ZG9tYWluIChQQUNLQUdFKTsKKyAKKyAJcHJvY2Vzc19yb290X2ZsYWcgKCItUiIsIGFyZ2MsIGFyZ3YpOworLQlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnICgiLVAiLCBhcmdjLCBhcmd2KTsKKysJcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZyAoIi1BIiwgYXJnYywgYXJndik7CisgCisgCU9QRU5MT0cgKCJncm91cG1vZCIpOworICNpZmRlZiBXSVRIX0FVRElUCitkaWZmIC0tZ2l0IGEvc3JjL3VzZXJhZGQuYyBiL3NyYy91c2VyYWRkLmMKK2luZGV4IDFiN2JmMDYuLjQ0ZjA5ZTIgMTAwNjQ0CistLS0gYS9zcmMvdXNlcmFkZC5jCisrKysgYi9zcmMvdXNlcmFkZC5jCitAQCAtODUzLDkgKzg1MywxMCBAQCBzdGF0aWMgdm9pZCB1c2FnZSAoaW50IHN0YXR1cykKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1vLCAtLW5vbi11bmlxdWUgICAgICAgICAgICAgIGFsbG93IHRvIGNyZWF0ZSB1c2VycyB3aXRoIGR1cGxpY2F0ZVxuIgorIAkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbi11bmlxdWUpIFVJRFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1wLCAtLXBhc3N3b3JkIFBBU1NXT1JEICAgICAgIGVuY3J5cHRlZCBwYXNzd29yZCBvZiB0aGUgbmV3IGFjY291bnRcbiIpLCB1c2FnZW91dCk7CisrCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1jbGVhci1wYXNzd29yZCBQQVNTV09SRCBjbGVhciBwYXNzd29yZCBvZiB0aGUgbmV3IGFjY291bnRcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtciwgLS1zeXN0ZW0gICAgICAgICAgICAgICAgICBjcmVhdGUgYSBzeXN0ZW0gYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1SLCAtLXJvb3QgQ0hST09UX0RJUiAgICAgICAgIGRpcmVjdG9yeSB0byBjaHJvb3QgaW50b1xuIiksIHVzYWdlb3V0KTsKKy0JKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIHByZWZpeCBkaXJlY3Rvcnkgd2hlcmUgYXJlIGxvY2F0ZWQgdGhlIC9ldGMvKiBmaWxlc1xuIiksIHVzYWdlb3V0KTsKKysJKHZvaWQpIGZwdXRzIChfKCIgIC1BLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIHByZWZpeCBkaXJlY3Rvcnkgd2hlcmUgYXJlIGxvY2F0ZWQgdGhlIC9ldGMvKiBmaWxlc1xuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1zLCAtLXNoZWxsIFNIRUxMICAgICAgICAgICAgIGxvZ2luIHNoZWxsIG9mIHRoZSBuZXcgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC11LCAtLXVpZCBVSUQgICAgICAgICAgICAgICAgIHVzZXIgSUQgb2YgdGhlIG5ldyBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKF8oIiAgLVUsIC0tdXNlci1ncm91cCAgICAgICAgICAgICAgY3JlYXRlIGEgZ3JvdXAgd2l0aCB0aGUgc2FtZSBuYW1lIGFzIHRoZSB1c2VyXG4iKSwgdXNhZ2VvdXQpOworQEAgLTExMzMsOSArMTEzNCwxMCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJeyJuby11c2VyLWdyb3VwIiwgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnTid9LAorIAkJCXsibm9uLXVuaXF1ZSIsICAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ28nfSwKKyAJCQl7InBhc3N3b3JkIiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdwJ30sCisrCQkJeyJjbGVhci1wYXNzd29yZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorIAkJCXsic3lzdGVtIiwgICAgICAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ3InfSwKKyAJCQl7InJvb3QiLCAgICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdSJ30sCistCQkJeyJwcmVmaXgiLCAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorKwkJCXsicHJlZml4IiwgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ0EnfSwKKyAJCQl7InNoZWxsIiwgICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdzJ30sCisgCQkJeyJ1aWQiLCAgICAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAndSd9LAorIAkJCXsidXNlci1ncm91cCIsICAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ1UnfSwKK0BAIC0xMTQ2LDkgKzExNDgsOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQl9OworIAkJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsCisgI2lmZGVmIFdJVEhfU0VMSU5VWAorLQkJICAgICAgICAgICAgICAgICAgICAgICAgICJiOmM6ZDpEZTpmOmc6RzpoazpLOmxtTU5vcDpyUjpQOnM6dTpVWjoiLAorKwkJICAgICAgICAgICAgICAgICAgICAgICAgICJiOmM6ZDpEZTpmOmc6RzpoazpLOmxtTU5vcDpQOnJSOkE6czp1OlVaOiIsCisgI2Vsc2UJCQkJLyogIVdJVEhfU0VMSU5VWCAqLworLQkJICAgICAgICAgICAgICAgICAgICAgICAgICJiOmM6ZDpEZTpmOmc6RzpoazpLOmxtTU5vcDpyUjpQOnM6dTpVIiwKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6UDpyUjpBOnM6dTpVIiwKKyAjZW5kaWYJCQkJLyogIVdJVEhfU0VMSU5VWCAqLworIAkJICAgICAgICAgICAgICAgICAgICAgICAgIGxvbmdfb3B0aW9ucywgTlVMTCkpICE9IC0xKSB7CisgCQkJc3dpdGNoIChjKSB7CitAQCAtMTMyMCwxMiArMTMyMiwxOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJCX0KKyAJCQkJdXNlcl9wYXNzID0gb3B0YXJnOworIAkJCQlicmVhazsKKysJCQljYXNlICdQJzogLyogc2V0IGNsZWFyIHRleHQgcGFzc3dvcmQgKi8KKysJCQkJdXNlcl9wYXNzID0gcHdfZW5jcnlwdCAob3B0YXJnLCBjcnlwdF9tYWtlX3NhbHQgKE5VTEwsIE5VTEwpKTsKKysJCQkJYnJlYWs7CisgCQkJY2FzZSAncic6CisgCQkJCXJmbGcgPSB0cnVlOworIAkJCQlicmVhazsKKyAJCQljYXNlICdSJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19yb290X2ZsYWcgKCkgKi8KKyAJCQkJYnJlYWs7CistCQkJY2FzZSAnUCc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KKysJCQljYXNlICdBJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLworKwkJCQlmcHJpbnRmIChzdGRlcnIsCisrCQkJCQkgXygiJXM6IC1BIGlzIGRlbGliZXJhdGVseSBub3Qgc3VwcG9ydGVkIFxuIiksCisrCQkJCQkgUHJvZyk7CisrCQkJCWV4aXQgKEVfQkFEX0FSRyk7CisgCQkJCWJyZWFrOworIAkJCWNhc2UgJ3MnOgorIAkJCQlpZiAoICAgKCAhVkFMSUQgKG9wdGFyZykgKQorQEAgLTIyNTcsNyArMjI2Niw3IEBAIGludCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCisgCXByb2Nlc3Nfcm9vdF9mbGFnICgiLVIiLCBhcmdjLCBhcmd2KTsKKyAKKy0JcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZygiLVAiLCBhcmdjLCBhcmd2KTsKKysJcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZygiLUEiLCBhcmdjLCBhcmd2KTsKKyAKKyAJT1BFTkxPRyAoInVzZXJhZGQiKTsKKyAjaWZkZWYgV0lUSF9BVURJVAorZGlmZiAtLWdpdCBhL3NyYy91c2VybW9kLmMgYi9zcmMvdXNlcm1vZC5jCitpbmRleCAyMWM2ZGE5Li5jZmZkYjNlIDEwMDY0NAorLS0tIGEvc3JjL3VzZXJtb2QuYworKysrIGIvc3JjL3VzZXJtb2QuYworQEAgLTQzMSw4ICs0MzEsOSBAQCBzdGF0aWMgLypAbm9yZXR1cm5AKi92b2lkIHVzYWdlIChpbnQgc3RhdHVzKQorIAkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbmV3IGxvY2F0aW9uICh1c2Ugb25seSB3aXRoIC1kKVxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1vLCAtLW5vbi11bmlxdWUgICAgICAgICAgICAgIGFsbG93IHVzaW5nIGR1cGxpY2F0ZSAobm9uLXVuaXF1ZSkgVUlEXG4iKSwgdXNhZ2VvdXQpOworIAkodm9pZCkgZnB1dHMgKF8oIiAgLXAsIC0tcGFzc3dvcmQgUEFTU1dPUkQgICAgICAgdXNlIGVuY3J5cHRlZCBwYXNzd29yZCBmb3IgdGhlIG5ldyBwYXNzd29yZFxuIiksIHVzYWdlb3V0KTsKKysJKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLWNsZWFyLXBhc3N3b3JkIFBBU1NXT1JEIHVzZSBjbGVhciBwYXNzd29yZCBmb3IgdGhlIG5ldyBwYXNzd29yZFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1SLCAtLXJvb3QgQ0hST09UX0RJUiAgICAgICAgIGRpcmVjdG9yeSB0byBjaHJvb3QgaW50b1xuIiksIHVzYWdlb3V0KTsKKy0JKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIHByZWZpeCBkaXJlY3Rvcnkgd2hlcmUgYXJlIGxvY2F0ZWQgdGhlIC9ldGMvKiBmaWxlc1xuIiksIHVzYWdlb3V0KTsKKysJKHZvaWQpIGZwdXRzIChfKCIgIC1BLCAtLXByZWZpeCBQUkVGSVhfRElSICAgICAgIHByZWZpeCBkaXJlY3Rvcnkgd2hlcmUgYXJlIGxvY2F0ZWQgdGhlIC9ldGMvKiBmaWxlc1xuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC1zLCAtLXNoZWxsIFNIRUxMICAgICAgICAgICAgIG5ldyBsb2dpbiBzaGVsbCBmb3IgdGhlIHVzZXIgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKKyAJKHZvaWQpIGZwdXRzIChfKCIgIC11LCAtLXVpZCBVSUQgICAgICAgICAgICAgICAgIG5ldyBVSUQgZm9yIHRoZSB1c2VyIGFjY291bnRcbiIpLCB1c2FnZW91dCk7CisgCSh2b2lkKSBmcHV0cyAoXygiICAtVSwgLS11bmxvY2sgICAgICAgICAgICAgICAgICB1bmxvY2sgdGhlIHVzZXIgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKK0BAIC0xMDEwLDggKzEwMTEsOSBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCisgCQkJeyJtb3ZlLWhvbWUiLCAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ20nfSwKKyAJCQl7Im5vbi11bmlxdWUiLCAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnbyd9LAorIAkJCXsicGFzc3dvcmQiLCAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdwJ30sCisrCQkJeyJjbGVhci1wYXNzd29yZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAorIAkJCXsicm9vdCIsICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdSJ30sCistCQkJeyJwcmVmaXgiLCAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKKysJCQl7InByZWZpeCIsICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnQSd9LAorIAkJCXsic2hlbGwiLCAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdzJ30sCisgCQkJeyJ1aWQiLCAgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3UnfSwKKyAJCQl7InVubG9jayIsICAgICAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnVSd9LAorQEAgLTEwMjcsNyArMTAyOSw3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQl7TlVMTCwgMCwgTlVMTCwgJ1wwJ30KKyAJCX07CisgCQl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwKKy0JCSAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjOmQ6ZTpmOmc6RzpobDpMbW9wOlI6czp1OlVQOiIKKysJCSAgICAgICAgICAgICAgICAgICAgICAgICAiYWJjOmQ6ZTpmOmc6RzpobDpMbW9wOlA6UjpzOnU6VUE6IgorICNpZmRlZiBFTkFCTEVfU1VCSURTCisgCQkgICAgICAgICAgICAgICAgICAgICAgICAgInY6dzpWOlc6IgorICNlbmRpZgkJCQkvKiBFTkFCTEVfU1VCSURTICovCitAQCAtMTEzMCw5ICsxMTMyLDE3IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJCQkJdXNlcl9wYXNzID0gb3B0YXJnOworIAkJCQlwZmxnID0gdHJ1ZTsKKyAJCQkJYnJlYWs7CisrCQkJY2FzZSAnUCc6CisrCQkJCXVzZXJfcGFzcyA9IHB3X2VuY3J5cHQgKG9wdGFyZywgY3J5cHRfbWFrZV9zYWx0IChOVUxMLCBOVUxMKSk7CisrCQkJCXBmbGcgPSB0cnVlOworKwkJCQlicmVhazsKKyAJCQljYXNlICdSJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19yb290X2ZsYWcgKCkgKi8KKyAJCQkJYnJlYWs7CistCQkJY2FzZSAnUCc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KKysJCQljYXNlICdBJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLworKwkJCQlmcHJpbnRmIChzdGRlcnIsCisrCQkJCQkgXygiJXM6IC1BIGlzIGRlbGliZXJhdGVseSBub3Qgc3VwcG9ydGVkIFxuIiksCisrCQkJCQkgUHJvZyk7CisrCQkJCWV4aXQgKEVfQkFEX0FSRyk7CisgCQkJCWJyZWFrOworIAkJCWNhc2UgJ3MnOgorIAkJCQlpZiAoIVZBTElEIChvcHRhcmcpKSB7CitAQCAtMjEyNyw3ICsyMTM3LDcgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKKyAJKHZvaWQpIHRleHRkb21haW4gKFBBQ0tBR0UpOworIAorIAlwcm9jZXNzX3Jvb3RfZmxhZyAoIi1SIiwgYXJnYywgYXJndik7CistCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItUCIsIGFyZ2MsIGFyZ3YpOworKwlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnICgiLUEiLCBhcmdjLCBhcmd2KTsKKyAKKyAJT1BFTkxPRyAoInVzZXJtb2QiKTsKKyAjaWZkZWYgV0lUSF9BVURJVApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL2FsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvYWxsb3ctZm9yLXNldHRpbmctcGFzc3dvcmQtaW4tY2xlYXItdGV4dC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmE3ZWIwNy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvYWxsb3ctZm9yLXNldHRpbmctcGFzc3dvcmQtaW4tY2xlYXItdGV4dC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwMCArMCwwIEBACi1TdWJqZWN0OiBbUEFUQ0hdIEFsbG93IGZvciBzZXR0aW5nIHBhc3N3b3JkIGluIGNsZWFyIHRleHQKLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRSBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL01ha2VmaWxlLmFtIHwgIDggKysrKy0tLS0KLSBzcmMvZ3JvdXBhZGQuYyAgfCAyMCArKysrKysrKysrKysrKystLS0tLQotIHNyYy9ncm91cG1vZC5jICB8IDIwICsrKysrKysrKysrKysrKy0tLS0tCi0gc3JjL3VzZXJhZGQuYyAgIHwgMjEgKysrKysrKysrKysrKysrLS0tLS0tCi0gc3JjL3VzZXJtb2QuYyAgIHwgMjAgKysrKysrKysrKysrKysrLS0tLS0KLSA1IGZpbGVzIGNoYW5nZWQsIDY0IGluc2VydGlvbnMoKyksIDI1IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCAzYzk4YThkLi5iODA5M2Q1IDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC05MywxMCArOTMsMTAgQEAgY2hncGFzc3dkX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJTRUxJTlVYKSAkKExJQkNSWVBUKQotIGNoc2hfTERBREQgICAgID0gJChMREFERCkgJChMSUJQQU0pICQoTElCU0VMSU5VWCkgJChMSUJDUllQVF9OT1BBTSkgJChMSUJTS0VZKSAkKExJQk1EKQotIGNocGFzc3dkX0xEQUREID0gJChMREFERCkgJChMSUJQQU0pICQoTElCU0VMSU5VWCkgJChMSUJDUllQVCkKLSBncGFzc3dkX0xEQUREICA9ICQoTERBREQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJDUllQVCkKLS1ncm91cGFkZF9MREFERCA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkKLStncm91cGFkZF9MREFERCA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJDUllQVCkKLSBncm91cGRlbF9MREFERCA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkKLSBncm91cG1lbXNfTERBREQgPSAkKExEQUREKSAkKExJQlBBTSkgJChMSUJTRUxJTlVYKQotLWdyb3VwbW9kX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKQotK2dyb3VwbW9kX0xEQUREID0gJChMREFERCkgJChMSUJQQU1fU1VJRCkgJChMSUJBVURJVCkgJChMSUJTRUxJTlVYKSAkKExJQkNSWVBUKQotIGdycGNrX0xEQUREICAgID0gJChMREFERCkgJChMSUJTRUxJTlVYKQotIGdycGNvbnZfTERBREQgID0gJChMREFERCkgJChMSUJTRUxJTlVYKQotIGdycHVuY29udl9MREFERCA9ICQoTERBREQpICQoTElCU0VMSU5VWCkKLUBAIC0xMTcsOSArMTE3LDkgQEAgc3VfU09VUkNFUyAgICAgPSBcCi0gCXN1YXV0aC5jCi0gc3VfTERBREQgICAgICAgPSAkKExEQUREKSAkKExJQlBBTSkgJChMSUJBVURJVCkgJChMSUJDUllQVF9OT1BBTSkgJChMSUJTS0VZKSAkKExJQk1EKQotIHN1bG9naW5fTERBREQgID0gJChMREFERCkgJChMSUJDUllQVCkKLS11c2VyYWRkX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkgJChMSUJBQ0wpICQoTElCQVRUUikKLSt1c2VyYWRkX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkgJChMSUJBQ0wpICQoTElCQVRUUikgJChMSUJDUllQVCkKLSB1c2VyZGVsX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkKLS11c2VybW9kX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkgJChMSUJBQ0wpICQoTElCQVRUUikKLSt1c2VybW9kX0xEQUREICA9ICQoTERBREQpICQoTElCUEFNX1NVSUQpICQoTElCQVVESVQpICQoTElCU0VMSU5VWCkgJChMSUJTRU1BTkFHRSkgJChMSUJBQ0wpICQoTElCQVRUUikgJChMSUJDUllQVCkKLSB2aXB3X0xEQUREICAgICA9ICQoTERBREQpICQoTElCU0VMSU5VWCkKLSAKLSBpbnN0YWxsLWFtOiBhbGwtYW0KLWRpZmYgLS1naXQgYS9zcmMvZ3JvdXBhZGQuYyBiL3NyYy9ncm91cGFkZC5jCi1pbmRleCBiNTcwMDZjLi42M2UxYzQ4IDEwMDY0NAotLS0tIGEvc3JjL2dyb3VwYWRkLmMKLSsrKyBiL3NyYy9ncm91cGFkZC5jCi1AQCAtMTIzLDkgKzEyMywxMCBAQCBzdGF0aWMgLypAbm9yZXR1cm5AKi92b2lkIHVzYWdlIChpbnQgc3RhdHVzKQotIAkodm9pZCkgZnB1dHMgKF8oIiAgLW8sIC0tbm9uLXVuaXF1ZSAgICAgICAgICAgICAgYWxsb3cgdG8gY3JlYXRlIGdyb3VwcyB3aXRoIGR1cGxpY2F0ZVxuIgotIAkgICAgICAgICAgICAgICAgIiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKG5vbi11bmlxdWUpIEdJRFxuIiksIHVzYWdlb3V0KTsKLSAJKHZvaWQpIGZwdXRzIChfKCIgIC1wLCAtLXBhc3N3b3JkIFBBU1NXT1JEICAgICAgIHVzZSB0aGlzIGVuY3J5cHRlZCBwYXNzd29yZCBmb3IgdGhlIG5ldyBncm91cFxuIiksIHVzYWdlb3V0KTsKLSsJKHZvaWQpIGZwdXRzIChfKCIgIC1QLCAtLWNsZWFyLXBhc3N3b3JkIFBBU1NXT1JEIHVzZSB0aGlzIGNsZWFyIHBhc3N3b3JkIGZvciB0aGUgbmV3IGdyb3VwXG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLXIsIC0tc3lzdGVtICAgICAgICAgICAgICAgICAgY3JlYXRlIGEgc3lzdGVtIGFjY291bnRcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7Ci0tCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBkaXJlY3RvcnkgcHJlZml4XG4iKSwgdXNhZ2VvdXQpOwotKwkodm9pZCkgZnB1dHMgKF8oIiAgLUEsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgZGlyZWN0b3J5IHByZWZpeFxuIiksIHVzYWdlb3V0KTsKLSAJKHZvaWQpIGZwdXRzICgiXG4iLCB1c2FnZW91dCk7Ci0gCWV4aXQgKHN0YXR1cyk7Ci0gfQotQEAgLTM4NywxMyArMzg4LDE0IEBAIHN0YXRpYyB2b2lkIHByb2Nlc3NfZmxhZ3MgKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJCXsia2V5IiwgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnSyd9LAotIAkJeyJub24tdW5pcXVlIiwgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdvJ30sCi0gCQl7InBhc3N3b3JkIiwgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3AnfSwKLSsJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKLSAJCXsic3lzdGVtIiwgICAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAncid9LAotIAkJeyJyb290IiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdSJ30sCi0tCQl7InByZWZpeCIsICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKLSsJCXsicHJlZml4IiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnQSd9LAotIAkJe05VTEwsIDAsIE5VTEwsICdcMCd9Ci0gCX07Ci0gCi0tCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZmc6aEs6b3A6clI6UDoiLAotKwl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyAoYXJnYywgYXJndiwgImZnOmhLOm9wOlA6clI6QToiLAotIAkJICAgICAgICAgICAgICAgICBsb25nX29wdGlvbnMsIE5VTEwpKSAhPSAtMSkgewotIAkJc3dpdGNoIChjKSB7Ci0gCQljYXNlICdmJzoKLUBAIC00NDUsMTIgKzQ0NywyMCBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQkJcGZsZyA9IHRydWU7Ci0gCQkJZ3JvdXBfcGFzc3dkID0gb3B0YXJnOwotIAkJCWJyZWFrOwotKwkJY2FzZSAnUCc6Ci0rCQkJcGZsZyA9IHRydWU7Ci0rCQkJZ3JvdXBfcGFzc3dkID0gcHdfZW5jcnlwdCAob3B0YXJnLCBjcnlwdF9tYWtlX3NhbHQgKE5VTEwsIE5VTEwpKTsKLSsJCQlicmVhazsKLSAJCWNhc2UgJ3InOgotIAkJCXJmbGcgPSB0cnVlOwotIAkJCWJyZWFrOwotIAkJY2FzZSAnUic6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3Nfcm9vdF9mbGFnICgpICovCi0gCQkJYnJlYWs7Ci0tCQljYXNlICdQJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLwotKwkJY2FzZSAnQSc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KLSsJCQlmcHJpbnRmIChzdGRlcnIsCi0rCQkJCSBfKCIlczogLUEgaXMgZGVsaWJlcmF0ZWx5IG5vdCBzdXBwb3J0ZWQgXG4iKSwKLSsJCQkJIFByb2cpOwotKwkJCWV4aXQgKEVfQkFEX0FSRyk7Ci0gCQkJYnJlYWs7Ci0gCQlkZWZhdWx0OgotIAkJCXVzYWdlIChFX1VTQUdFKTsKLUBAIC01ODQsNyArNTk0LDcgQEAgaW50IG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKLSAJKHZvaWQpIHRleHRkb21haW4gKFBBQ0tBR0UpOwotIAotIAlwcm9jZXNzX3Jvb3RfZmxhZyAoIi1SIiwgYXJnYywgYXJndik7Ci0tCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItUCIsIGFyZ2MsIGFyZ3YpOwotKwlwcmVmaXggPSBwcm9jZXNzX3ByZWZpeF9mbGFnICgiLUEiLCBhcmdjLCBhcmd2KTsKLSAKLSAJT1BFTkxPRyAoImdyb3VwYWRkIik7Ci0gI2lmZGVmIFdJVEhfQVVESVQKLWRpZmYgLS1naXQgYS9zcmMvZ3JvdXBtb2QuYyBiL3NyYy9ncm91cG1vZC5jCi1pbmRleCBiMjkzYjk4Li43MmRhZjJjIDEwMDY0NAotLS0tIGEvc3JjL2dyb3VwbW9kLmMKLSsrKyBiL3NyYy9ncm91cG1vZC5jCi1AQCAtMTM0LDggKzEzNCw5IEBAIHN0YXRpYyB2b2lkIHVzYWdlIChpbnQgc3RhdHVzKQotIAkodm9pZCkgZnB1dHMgKF8oIiAgLW8sIC0tbm9uLXVuaXF1ZSAgICAgICAgICAgICAgYWxsb3cgdG8gdXNlIGEgZHVwbGljYXRlIChub24tdW5pcXVlKSBHSURcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtcCwgLS1wYXNzd29yZCBQQVNTV09SRCAgICAgICBjaGFuZ2UgdGhlIHBhc3N3b3JkIHRvIHRoaXMgKGVuY3J5cHRlZClcbiIKLSAJICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFBBU1NXT1JEXG4iKSwgdXNhZ2VvdXQpOwotKwkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tY2xlYXItcGFzc3dvcmQgUEFTU1dPUkQgY2hhbmdlIHRoZSBwYXNzd29yZCB0byB0aGlzIGNsZWFyIFBBU1NXT1JEXG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLVIsIC0tcm9vdCBDSFJPT1RfRElSICAgICAgICAgZGlyZWN0b3J5IHRvIGNocm9vdCBpbnRvXG4iKSwgdXNhZ2VvdXQpOwotLQkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgcHJlZml4IGRpcmVjdG9yeSB3aGVyZSBhcmUgbG9jYXRlZCB0aGUgL2V0Yy8qIGZpbGVzXG4iKSwgdXNhZ2VvdXQpOwotKwkodm9pZCkgZnB1dHMgKF8oIiAgLUEsIC0tcHJlZml4IFBSRUZJWF9ESVIgICAgICAgcHJlZml4IGRpcmVjdG9yeSB3aGVyZSBhcmUgbG9jYXRlZCB0aGUgL2V0Yy8qIGZpbGVzXG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKCJcbiIsIHVzYWdlb3V0KTsKLSAJZXhpdCAoc3RhdHVzKTsKLSB9Ci1AQCAtMzgzLDExICszODQsMTIgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJeyJuZXctbmFtZSIsICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICduJ30sCi0gCQl7Im5vbi11bmlxdWUiLCBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ28nfSwKLSAJCXsicGFzc3dvcmQiLCAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAotKwkJeyJjbGVhci1wYXNzd29yZCIsIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUCd9LAotIAkJeyJyb290IiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdSJ30sCi0tCQl7InByZWZpeCIsICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKLSsJCXsicHJlZml4IiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnQSd9LAotIAkJe05VTEwsIDAsIE5VTEwsICdcMCd9Ci0gCX07Ci0tCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LCAiZzpobjpvcDpSOlA6IiwKLSsJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsICJnOmhuOm9wOlA6UjpBOiIsCi0gCQkgICAgICAgICAgICAgICAgIGxvbmdfb3B0aW9ucywgTlVMTCkpICE9IC0xKSB7Ci0gCQlzd2l0Y2ggKGMpIHsKLSAJCWNhc2UgJ2cnOgotQEAgLTQxNCw5ICs0MTYsMTcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCWdyb3VwX3Bhc3N3ZCA9IG9wdGFyZzsKLSAJCQlwZmxnID0gdHJ1ZTsKLSAJCQlicmVhazsKLSsJCWNhc2UgJ1AnOgotKwkJCWdyb3VwX3Bhc3N3ZCA9IHB3X2VuY3J5cHQgKG9wdGFyZywgY3J5cHRfbWFrZV9zYWx0IChOVUxMLCBOVUxMKSk7Ci0rCQkJcGZsZyA9IHRydWU7Ci0rCQkJYnJlYWs7Ci0gCQljYXNlICdSJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19yb290X2ZsYWcgKCkgKi8KLSAJCQlicmVhazsKLS0JCWNhc2UgJ1AnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCi0rCQljYXNlICdBJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLwotKwkJCWZwcmludGYgKHN0ZGVyciwKLSsJCQkJIF8oIiVzOiAtQSBpcyBkZWxpYmVyYXRlbHkgbm90IHN1cHBvcnRlZCBcbiIpLAotKwkJCQkgUHJvZyk7Ci0rCQkJZXhpdCAoRV9CQURfQVJHKTsKLSAJCQlicmVhazsKLSAJCWRlZmF1bHQ6Ci0gCQkJdXNhZ2UgKEVfVVNBR0UpOwotQEAgLTc1Nyw3ICs3NjcsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkodm9pZCkgdGV4dGRvbWFpbiAoUEFDS0FHRSk7Ci0gCi0gCXByb2Nlc3Nfcm9vdF9mbGFnICgiLVIiLCBhcmdjLCBhcmd2KTsKLS0JcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZyAoIi1QIiwgYXJnYywgYXJndik7Ci0rCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItQSIsIGFyZ2MsIGFyZ3YpOwotIAotIAlPUEVOTE9HICgiZ3JvdXBtb2QiKTsKLSAjaWZkZWYgV0lUSF9BVURJVAotZGlmZiAtLWdpdCBhL3NyYy91c2VyYWRkLmMgYi9zcmMvdXNlcmFkZC5jCi1pbmRleCBjNzRlNDkxLi43MjE0ZTcyIDEwMDY0NAotLS0tIGEvc3JjL3VzZXJhZGQuYwotKysrIGIvc3JjL3VzZXJhZGQuYwotQEAgLTgyOSw5ICs4MjksMTAgQEAgc3RhdGljIHZvaWQgdXNhZ2UgKGludCBzdGF0dXMpCi0gCSh2b2lkKSBmcHV0cyAoXygiICAtbywgLS1ub24tdW5pcXVlICAgICAgICAgICAgICBhbGxvdyB0byBjcmVhdGUgdXNlcnMgd2l0aCBkdXBsaWNhdGVcbiIKLSAJICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChub24tdW5pcXVlKSBVSURcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtcCwgLS1wYXNzd29yZCBQQVNTV09SRCAgICAgICBlbmNyeXB0ZWQgcGFzc3dvcmQgb2YgdGhlIG5ldyBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOwotKwkodm9pZCkgZnB1dHMgKF8oIiAgLVAsIC0tY2xlYXItcGFzc3dvcmQgUEFTU1dPUkQgY2xlYXIgcGFzc3dvcmQgb2YgdGhlIG5ldyBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLXIsIC0tc3lzdGVtICAgICAgICAgICAgICAgICAgY3JlYXRlIGEgc3lzdGVtIGFjY291bnRcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7Ci0tCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7Ci0rCSh2b2lkKSBmcHV0cyAoXygiICAtQSwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtcywgLS1zaGVsbCBTSEVMTCAgICAgICAgICAgICBsb2dpbiBzaGVsbCBvZiB0aGUgbmV3IGFjY291bnRcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtdSwgLS11aWQgVUlEICAgICAgICAgICAgICAgICB1c2VyIElEIG9mIHRoZSBuZXcgYWNjb3VudFxuIiksIHVzYWdlb3V0KTsKLSAJKHZvaWQpIGZwdXRzIChfKCIgIC1VLCAtLXVzZXItZ3JvdXAgICAgICAgICAgICAgIGNyZWF0ZSBhIGdyb3VwIHdpdGggdGhlIHNhbWUgbmFtZSBhcyB0aGUgdXNlclxuIiksIHVzYWdlb3V0KTsKLUBAIC0xMTA0LDkgKzExMDUsMTAgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCXsibm8tdXNlci1ncm91cCIsICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ04nfSwKLSAJCQl7Im5vbi11bmlxdWUiLCAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdvJ30sCi0gCQkJeyJwYXNzd29yZCIsICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAotKwkJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKLSAJCQl7InN5c3RlbSIsICAgICAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdyJ30sCi0gCQkJeyJyb290IiwgICAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUid9LAotLQkJCXsicHJlZml4IiwgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKLSsJCQl7InByZWZpeCIsICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdBJ30sCi0gCQkJeyJzaGVsbCIsICAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncyd9LAotIAkJCXsidWlkIiwgICAgICAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3UnfSwKLSAJCQl7InVzZXItZ3JvdXAiLCAgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdVJ30sCi1AQCAtMTExNyw5ICsxMTE5LDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJfTsKLSAJCXdoaWxlICgoYyA9IGdldG9wdF9sb25nIChhcmdjLCBhcmd2LAotICNpZmRlZiBXSVRIX1NFTElOVVgKLS0JCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6clI6UDpzOnU6VVo6IiwKLSsJCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6UDpyUjpBOnM6dTpVWjoiLAotICNlbHNlCQkJCS8qICFXSVRIX1NFTElOVVggKi8KLS0JCSAgICAgICAgICAgICAgICAgICAgICAgICAiYjpjOmQ6RGU6ZjpnOkc6aGs6SzpsbU1Ob3A6clI6UDpzOnU6VSIsCi0rCQkgICAgICAgICAgICAgICAgICAgICAgICAgImI6YzpkOkRlOmY6ZzpHOmhrOks6bG1NTm9wOlA6clI6QTpzOnU6VSIsCi0gI2VuZGlmCQkJCS8qICFXSVRIX1NFTElOVVggKi8KLSAJCSAgICAgICAgICAgICAgICAgICAgICAgICBsb25nX29wdGlvbnMsIE5VTEwpKSAhPSAtMSkgewotIAkJCXN3aXRjaCAoYykgewotQEAgLTEyODUsMTIgKzEyODcsMTkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCQl9Ci0gCQkJCXVzZXJfcGFzcyA9IG9wdGFyZzsKLSAJCQkJYnJlYWs7Ci0rCQkJY2FzZSAnUCc6IC8qIHNldCBjbGVhciB0ZXh0IHBhc3N3b3JkICovCi0rCQkJCXVzZXJfcGFzcyA9IHB3X2VuY3J5cHQgKG9wdGFyZywgY3J5cHRfbWFrZV9zYWx0IChOVUxMLCBOVUxMKSk7Ci0rCQkJCWJyZWFrOwotIAkJCWNhc2UgJ3InOgotIAkJCQlyZmxnID0gdHJ1ZTsKLSAJCQkJYnJlYWs7Ci0gCQkJY2FzZSAnUic6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3Nfcm9vdF9mbGFnICgpICovCi0gCQkJCWJyZWFrOwotLQkJCWNhc2UgJ1AnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCi0rCQkJY2FzZSAnQSc6IC8qIG5vLW9wLCBoYW5kbGVkIGluIHByb2Nlc3NfcHJlZml4X2ZsYWcgKCkgKi8KLSsJCQkJZnByaW50ZiAoc3RkZXJyLAotKwkJCQkJIF8oIiVzOiAtQSBpcyBkZWxpYmVyYXRlbHkgbm90IHN1cHBvcnRlZCBcbiIpLAotKwkJCQkJIFByb2cpOwotKwkJCQlleGl0IChFX0JBRF9BUkcpOwotIAkJCQlicmVhazsKLSAJCQljYXNlICdzJzoKLSAJCQkJaWYgKCAgICggIVZBTElEIChvcHRhcmcpICkKLUBAIC0yMTQ4LDcgKzIxNTcsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAotIAlwcm9jZXNzX3Jvb3RfZmxhZyAoIi1SIiwgYXJnYywgYXJndik7Ci0gCi0tCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcoIi1QIiwgYXJnYywgYXJndik7Ci0rCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcoIi1BIiwgYXJnYywgYXJndik7Ci0gCi0gCU9QRU5MT0cgKCJ1c2VyYWRkIik7Ci0gI2lmZGVmIFdJVEhfQVVESVQKLWRpZmYgLS1naXQgYS9zcmMvdXNlcm1vZC5jIGIvc3JjL3VzZXJtb2QuYwotaW5kZXggZTU3MTQyNi4uY2NmYmI5OSAxMDA2NDQKLS0tLSBhL3NyYy91c2VybW9kLmMKLSsrKyBiL3NyYy91c2VybW9kLmMKLUBAIC00MjQsOCArNDI0LDkgQEAgc3RhdGljIC8qQG5vcmV0dXJuQCovdm9pZCB1c2FnZSAoaW50IHN0YXR1cykKLSAJICAgICAgICAgICAgICAgICIgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ldyBsb2NhdGlvbiAodXNlIG9ubHkgd2l0aCAtZClcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtbywgLS1ub24tdW5pcXVlICAgICAgICAgICAgICBhbGxvdyB1c2luZyBkdXBsaWNhdGUgKG5vbi11bmlxdWUpIFVJRFxuIiksIHVzYWdlb3V0KTsKLSAJKHZvaWQpIGZwdXRzIChfKCIgIC1wLCAtLXBhc3N3b3JkIFBBU1NXT1JEICAgICAgIHVzZSBlbmNyeXB0ZWQgcGFzc3dvcmQgZm9yIHRoZSBuZXcgcGFzc3dvcmRcbiIpLCB1c2FnZW91dCk7Ci0rCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1jbGVhci1wYXNzd29yZCBQQVNTV09SRCB1c2UgY2xlYXIgcGFzc3dvcmQgZm9yIHRoZSBuZXcgcGFzc3dvcmRcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtUiwgLS1yb290IENIUk9PVF9ESVIgICAgICAgICBkaXJlY3RvcnkgdG8gY2hyb290IGludG9cbiIpLCB1c2FnZW91dCk7Ci0tCSh2b2lkKSBmcHV0cyAoXygiICAtUCwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7Ci0rCSh2b2lkKSBmcHV0cyAoXygiICAtQSwgLS1wcmVmaXggUFJFRklYX0RJUiAgICAgICBwcmVmaXggZGlyZWN0b3J5IHdoZXJlIGFyZSBsb2NhdGVkIHRoZSAvZXRjLyogZmlsZXNcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtcywgLS1zaGVsbCBTSEVMTCAgICAgICAgICAgICBuZXcgbG9naW4gc2hlbGwgZm9yIHRoZSB1c2VyIGFjY291bnRcbiIpLCB1c2FnZW91dCk7Ci0gCSh2b2lkKSBmcHV0cyAoXygiICAtdSwgLS11aWQgVUlEICAgICAgICAgICAgICAgICBuZXcgVUlEIGZvciB0aGUgdXNlciBhY2NvdW50XG4iKSwgdXNhZ2VvdXQpOwotIAkodm9pZCkgZnB1dHMgKF8oIiAgLVUsIC0tdW5sb2NrICAgICAgICAgICAgICAgICAgdW5sb2NrIHRoZSB1c2VyIGFjY291bnRcbiIpLCB1c2FnZW91dCk7Ci1AQCAtMTAwMiw4ICsxMDAzLDkgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCXsibW92ZS1ob21lIiwgICAgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICdtJ30sCi0gCQkJeyJub24tdW5pcXVlIiwgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ28nfSwKLSAJCQl7InBhc3N3b3JkIiwgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncCd9LAotKwkJCXsiY2xlYXItcGFzc3dvcmQiLCByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ1AnfSwKLSAJCQl7InJvb3QiLCAgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAnUid9LAotLQkJCXsicHJlZml4IiwgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICdQJ30sCi0rCQkJeyJwcmVmaXgiLCAgICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ0EnfSwKLSAJCQl7InNoZWxsIiwgICAgICAgIHJlcXVpcmVkX2FyZ3VtZW50LCBOVUxMLCAncyd9LAotIAkJCXsidWlkIiwgICAgICAgICAgcmVxdWlyZWRfYXJndW1lbnQsIE5VTEwsICd1J30sCi0gCQkJeyJ1bmxvY2siLCAgICAgICBub19hcmd1bWVudCwgICAgICAgTlVMTCwgJ1UnfSwKLUBAIC0xMDE5LDcgKzEwMjEsNyBAQCBzdGF0aWMgdm9pZCBwcm9jZXNzX2ZsYWdzIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCi0gCQkJe05VTEwsIDAsIE5VTEwsICdcMCd9Ci0gCQl9OwotIAkJd2hpbGUgKChjID0gZ2V0b3B0X2xvbmcgKGFyZ2MsIGFyZ3YsCi0tCQkgICAgICAgICAgICAgICAgICAgICAgICAgImFjOmQ6ZTpmOmc6RzpobDpMbW9wOlI6czp1OlVQOiIKLSsJCSAgICAgICAgICAgICAgICAgICAgICAgICAiYWM6ZDplOmY6ZzpHOmhsOkxtb3A6UDpSOnM6dTpVQToiCi0gI2lmZGVmIEVOQUJMRV9TVUJJRFMKLSAJCSAgICAgICAgICAgICAgICAgICAgICAgICAidjp3OlY6VzoiCi0gI2VuZGlmCQkJCS8qIEVOQUJMRV9TVUJJRFMgKi8KLUBAIC0xMTE5LDkgKzExMjEsMTcgQEAgc3RhdGljIHZvaWQgcHJvY2Vzc19mbGFncyAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkJCQl1c2VyX3Bhc3MgPSBvcHRhcmc7Ci0gCQkJCXBmbGcgPSB0cnVlOwotIAkJCQlicmVhazsKLSsJCQljYXNlICdQJzoKLSsJCQkJdXNlcl9wYXNzID0gcHdfZW5jcnlwdCAob3B0YXJnLCBjcnlwdF9tYWtlX3NhbHQgKE5VTEwsIE5VTEwpKTsKLSsJCQkJcGZsZyA9IHRydWU7Ci0rCQkJCWJyZWFrOwotIAkJCWNhc2UgJ1InOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3Jvb3RfZmxhZyAoKSAqLwotIAkJCQlicmVhazsKLS0JCQljYXNlICdQJzogLyogbm8tb3AsIGhhbmRsZWQgaW4gcHJvY2Vzc19wcmVmaXhfZmxhZyAoKSAqLwotKwkJCWNhc2UgJ0EnOiAvKiBuby1vcCwgaGFuZGxlZCBpbiBwcm9jZXNzX3ByZWZpeF9mbGFnICgpICovCi0rCQkJCWZwcmludGYgKHN0ZGVyciwKLSsJCQkJCSBfKCIlczogLUEgaXMgZGVsaWJlcmF0ZWx5IG5vdCBzdXBwb3J0ZWQgXG4iKSwKLSsJCQkJCSBQcm9nKTsKLSsJCQkJZXhpdCAoRV9CQURfQVJHKTsKLSAJCQkJYnJlYWs7Ci0gCQkJY2FzZSAncyc6Ci0gCQkJCWlmICghVkFMSUQgKG9wdGFyZykpIHsKLUBAIC0yMDk4LDcgKzIxMDgsNyBAQCBpbnQgbWFpbiAoaW50IGFyZ2MsIGNoYXIgKiphcmd2KQotIAkodm9pZCkgdGV4dGRvbWFpbiAoUEFDS0FHRSk7Ci0gCi0gCXByb2Nlc3Nfcm9vdF9mbGFnICgiLVIiLCBhcmdjLCBhcmd2KTsKLS0JcHJlZml4ID0gcHJvY2Vzc19wcmVmaXhfZmxhZyAoIi1QIiwgYXJnYywgYXJndik7Ci0rCXByZWZpeCA9IHByb2Nlc3NfcHJlZml4X2ZsYWcgKCItQSIsIGFyZ2MsIGFyZ3YpOwotIAotIAlPUEVOTE9HICgidXNlcm1vZCIpOwotICNpZmRlZiBXSVRIX0FVRElUCi0tLSAKLTIuMTEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvY29tbW9uaW8uYy1maXgtdW5leHBlY3RlZC1vcGVuLWZhaWx1cmUtaW4tY2hyb290LWVudi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9jb21tb25pby5jLWZpeC11bmV4cGVjdGVkLW9wZW4tZmFpbHVyZS1pbi1jaHJvb3QtZW52LnBhdGNoCmluZGV4IDRmYTNkMTguLjk4MjUyMTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9jb21tb25pby5jLWZpeC11bmV4cGVjdGVkLW9wZW4tZmFpbHVyZS1pbi1jaHJvb3QtZW52LnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9jb21tb25pby5jLWZpeC11bmV4cGVjdGVkLW9wZW4tZmFpbHVyZS1pbi1jaHJvb3QtZW52LnBhdGNoCkBAIC0xLDMgKzEsOCBAQAorRnJvbSA2NjUzM2M3YzZmMzQ3ZDI1NzAyMDY3NWExZWQ2ZTBjNTljYmJjM2YwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hlbiBRaSA8UWkuQ2hlbkB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxNyBKdWwgMjAxNCAxNTo1MzozNCArMDgwMAorU3ViamVjdDogW1BBVENIXSBjb21tb25pby5jLWZpeC11bmV4cGVjdGVkLW9wZW4tZmFpbHVyZS1pbi1jaHJvb3QtZW52CisKIFVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Ugc3BlY2lmaWNdCiAKIGNvbW1vbmlvLmM6IGZpeCB1bmV4cGVjdGVkIG9wZW4gZmFpbHVyZSBpbiBjaHJvb3QgZW52aXJvbm1lbnQKQEAgLTEwLDE1ICsxNSwxNiBAQAogdGhlIGNvZGVzLgogCiBTaWduZWQtb2ZmLWJ5OiBDaGVuIFFpIDxRaS5DaGVuQHdpbmRyaXZlci5jb20+CisKIC0tLQotIGxpYi9jb21tb25pby5jIHwgICAxNiArKysrKysrKysrKystLS0tCisgbGliL2NvbW1vbmlvLmMgfCAxNiArKysrKysrKysrKystLS0tCiAgMSBmaWxlIGNoYW5nZWQsIDEyIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9saWIvY29tbW9uaW8uYyBiL2xpYi9jb21tb25pby5jCi1pbmRleCBjYzUzNmJmLi41MWNhZmQ5IDEwMDY0NAoraW5kZXggMTZmYTdlNy4uZDZiYzI5NyAxMDA2NDQKIC0tLSBhL2xpYi9jb21tb25pby5jCiArKysgYi9saWIvY29tbW9uaW8uYwotQEAgLTYxMywxMCArNjEzLDE4IEBAIGludCBjb21tb25pb19vcGVuIChzdHJ1Y3QgY29tbW9uaW9fZGIgKmRiLCBpbnQgbW9kZSkKK0BAIC02MzIsMTAgKzYzMiwxOCBAQCBpbnQgY29tbW9uaW9fb3BlbiAoc3RydWN0IGNvbW1vbmlvX2RiICpkYiwgaW50IG1vZGUpCiAgCWRiLT5jdXJzb3IgPSBOVUxMOwogIAlkYi0+Y2hhbmdlZCA9IGZhbHNlOwogIApAQCAtNDEsNiArNDcsMyBAQAogIAlkYi0+ZnAgPSBOVUxMOwogIAlpZiAoZmQgPj0gMCkgewogICNpZmRlZiBXSVRIX1RDQgotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9zaGFkb3ctcmVsYXhlZC11c2VybmFtZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zaGFkb3cvZmlsZXMvc2hhZG93LXJlbGF4ZWQtdXNlcm5hbWVzLnBhdGNoCmluZGV4IDFhZjA0ZDUuLmNjODMzMzYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9maWxlcy9zaGFkb3ctcmVsYXhlZC11c2VybmFtZXMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L2ZpbGVzL3NoYWRvdy1yZWxheGVkLXVzZXJuYW1lcy5wYXRjaApAQCAtMSwyNiArMSwzNyBAQAorRnJvbSBjYTQ3MmQ2ODY2ZTU0NWFhYTcwYTcwMDIwZTMyMjZmMjM2YThhYWZjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogU2hhbiBIYWkgPHNoYW4uaGFpQHdpbmRyaXZlci5jb20+CitEYXRlOiBUdWUsIDEzIFNlcCAyMDE2IDEzOjQ1OjQ2ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIHNoYWRvdzogdXNlIHJlbGF4ZWQgdXNlcm5hbWVzCiAKIFRoZSBncm91cGFkZCBmcm9tIHNoYWRvdyBkb2VzIG5vdCBhbGxvdyB1cHBlciBjYXNlIGdyb3VwIG5hbWVzLCB0aGUKIHNhbWUgaXMgdHJ1ZSBmb3IgdGhlIHVwc3RyZWFtIHNoYWRvdy4gQnV0IGRpc3RyaWJ1dGlvbnMgbGlrZQogRGViaWFuL1VidW50dS9DZW50T1MgaGFzIHRoZWlyIG93biB3YXkgdG8gY29wZSB3aXRoIHRoaXMgcHJvYmxlbSwKIHRoaXMgcGF0Y2ggaXMgcGlja2VkIHVwIGZyb20gQ2VudE9TIHJlbGVhc2UgNy4wIHRvIHJlbGF4IHRoZSB1c2VybmFtZXMKIHJlc3RyaWN0aW9ucyB0byBhbGxvdyB0aGUgdXBwZXIgY2FzZSBncm91cCBuYW1lcywgYW5kIHRoZSByZWxheGF0aW9uIGlzCi1QT1NJWCBjb21wbGlhbnQgYmVjYXVzZSBQT1NJWCBpbmRpY2F0ZSB0aGF0IHVzZXJuYW1lcyBhcmUgY29tcG9zZWQgb2YgCitQT1NJWCBjb21wbGlhbnQgYmVjYXVzZSBQT1NJWCBpbmRpY2F0ZSB0aGF0IHVzZXJuYW1lcyBhcmUgY29tcG9zZWQgb2YKIGNoYXJhY3RlcnMgZnJvbSB0aGUgcG9ydGFibGUgZmlsZW5hbWUgY2hhcmFjdGVyIHNldCBbQS1aYS16MC05Ll8tXS4KIAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKLVNpZ25lZC1vZmYtYnk6IFNoYW4gSGFpIDxzaGFuLmhhaUB3aW5kcml2ZXIuY29tPiAKK1NpZ25lZC1vZmYtYnk6IFNoYW4gSGFpIDxzaGFuLmhhaUB3aW5kcml2ZXIuY29tPgogCi1kaWZmIC11cnBOIGEvbGlibWlzYy9jaGtuYW1lLmMgYi9saWJtaXNjL2Noa25hbWUuYwotaW5kZXggNTA4OTExMi4uZjQwYTBkYSAxMDA2NDQKKy0tLQorIGxpYm1pc2MvY2hrbmFtZS5jICB8IDMwICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLQorIG1hbi9ncm91cGFkZC44LnhtbCB8ICA2IC0tLS0tLQorIG1hbi91c2VyYWRkLjgueG1sICB8ICA4ICstLS0tLS0tCisgMyBmaWxlcyBjaGFuZ2VkLCAxOSBpbnNlcnRpb25zKCspLCAyNSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2xpYm1pc2MvY2hrbmFtZS5jIGIvbGlibWlzYy9jaGtuYW1lLmMKK2luZGV4IDkwZjE4NWMuLjY1NzYyYjQgMTAwNjQ0CiAtLS0gYS9saWJtaXNjL2Noa25hbWUuYwogKysrIGIvbGlibWlzYy9jaGtuYW1lLmMKLUBAIC00OSwyMSArNDksMjggQEAKLSBzdGF0aWMgYm9vbCBpc192YWxpZF9uYW1lIChjb25zdCBjaGFyICpuYW1lKQotIHsKK0BAIC01NSwyMiArNTUsMjggQEAgc3RhdGljIGJvb2wgaXNfdmFsaWRfbmFtZSAoY29uc3QgY2hhciAqbmFtZSkKKyAJfQorIAogIAkvKgogLQkgKiBVc2VyL2dyb3VwIG5hbWVzIG11c3QgbWF0Y2ggW2Etel9dW2EtejAtOV8tXSpbJF0KIC0JICovCistCiAtCWlmICgoJ1wwJyA9PSAqbmFtZSkgfHwKIC0JICAgICEoKCgnYScgPD0gKm5hbWUpICYmICgneicgPj0gKm5hbWUpKSB8fCAoJ18nID09ICpuYW1lKSkpIHsKICsgICAgICAgICAqIFVzZXIvZ3JvdXAgbmFtZXMgbXVzdCBtYXRjaCBnbnUgZS1yZWdleDoKQEAgLTU1LDI4ICs2NiwyOCBAQAogIAkJCXJldHVybiBmYWxzZTsKICAJCX0KICAJfQotZGlmZiAtdXJwTiBhL21hbi9ncm91cGFkZC44LnhtbCBiL21hbi9ncm91cGFkZC44LnhtbAotaW5kZXggMjMwZmQwYy4uOTRmNzgwNyAxMDA2NDQKK2RpZmYgLS1naXQgYS9tYW4vZ3JvdXBhZGQuOC54bWwgYi9tYW4vZ3JvdXBhZGQuOC54bWwKK2luZGV4IDFlNThmMDkuLmQ4MDRiNjEgMTAwNjQ0CiAtLS0gYS9tYW4vZ3JvdXBhZGQuOC54bWwKICsrKyBiL21hbi9ncm91cGFkZC44LnhtbAotQEAgLTIyMiwxMiArMjIyLDYgQEAKK0BAIC0yNzIsMTIgKzI3Miw2IEBACisgCiAgICAgPHJlZnNlY3QxIGlkPSdjYXZlYXRzJz4KICAgICAgIDx0aXRsZT5DQVZFQVRTPC90aXRsZT4KLSAgICAgIDxwYXJhPgorLSAgICAgPHBhcmE+CiAtICAgICAgIEdyb3VwbmFtZXMgbXVzdCBzdGFydCB3aXRoIGEgbG93ZXIgY2FzZSBsZXR0ZXIgb3IgYW4gdW5kZXJzY29yZSwKIC0gICAgICAgZm9sbG93ZWQgYnkgbG93ZXIgY2FzZSBsZXR0ZXJzLCBkaWdpdHMsIHVuZGVyc2NvcmVzLCBvciBkYXNoZXMuCiAtICAgICAgIFRoZXkgY2FuIGVuZCB3aXRoIGEgZG9sbGFyIHNpZ24uCiAtICAgICAgIEluIHJlZ3VsYXIgZXhwcmVzc2lvbiB0ZXJtczogW2Etel9dW2EtejAtOV8tXSpbJF0/CiAtICAgICA8L3BhcmE+Ci0tICAgICA8cGFyYT4KKyAgICAgIDxwYXJhPgogICAgICAgICBHcm91cG5hbWVzIG1heSBvbmx5IGJlIHVwIHRvICZHUk9VUF9OQU1FX01BWF9MRU5HVEg7IGNoYXJhY3RlcnMgbG9uZy4KICAgICAgIDwvcGFyYT4KLSAgICAgIDxwYXJhPgotZGlmZiAtdXJwTiBhL21hbi91c2VyYWRkLjgueG1sIGIvbWFuL3VzZXJhZGQuOC54bWwKLWluZGV4IDVkZWM5ODkuLmZlNjIzYjkgMTAwNjQ0CitkaWZmIC0tZ2l0IGEvbWFuL3VzZXJhZGQuOC54bWwgYi9tYW4vdXNlcmFkZC44LnhtbAoraW5kZXggYTE2ZDczMC4uYzBiZDc3NyAxMDA2NDQKIC0tLSBhL21hbi91c2VyYWRkLjgueG1sCiArKysgYi9tYW4vdXNlcmFkZC44LnhtbAotQEAgLTMzNiw3ICszMzYsNyBAQAorQEAgLTM2Niw3ICszNjYsNyBAQAogIAk8L3Rlcm0+CiAgCTxsaXN0aXRlbT4KICAJICA8cGFyYT4KQEAgLTg1LDE2ICs5NiwxNiBAQAogIAkgICAgd2lkZSBzZXR0aW5nIGZyb20gPGZpbGVuYW1lPi9ldGMvbG9naW4uZGVmczwvZmlsZW5hbWU+CiAgCSAgICAoPG9wdGlvbj5DUkVBVEVfSE9NRTwvb3B0aW9uPikgaXMgc2V0IHRvCiAgCSAgICA8cmVwbGFjZWFibGU+eWVzPC9yZXBsYWNlYWJsZT4uCi1AQCAtNjA3LDEyICs2MDcsNiBAQAorQEAgLTY2MCwxMiArNjYwLDYgQEAKKyAgICAgICB0aGUgdXNlciBhY2NvdW50IGNyZWF0aW9uIHJlcXVlc3QuCiAgICAgIDwvcGFyYT4KICAKLSAgICAgPHBhcmE+CistICAgIDxwYXJhPgogLSAgICAgIFVzZXJuYW1lcyBtdXN0IHN0YXJ0IHdpdGggYSBsb3dlciBjYXNlIGxldHRlciBvciBhbiB1bmRlcnNjb3JlLAogLSAgICAgIGZvbGxvd2VkIGJ5IGxvd2VyIGNhc2UgbGV0dGVycywgZGlnaXRzLCB1bmRlcnNjb3Jlcywgb3IgZGFzaGVzLgogLSAgICAgIFRoZXkgY2FuIGVuZCB3aXRoIGEgZG9sbGFyIHNpZ24uCiAtICAgICAgSW4gcmVndWxhciBleHByZXNzaW9uIHRlcm1zOiBbYS16X11bYS16MC05Xy1dKlskXT8KIC0gICAgPC9wYXJhPgotLSAgICA8cGFyYT4KKyAgICAgPHBhcmE+CiAgICAgICAgVXNlcm5hbWVzIG1heSBvbmx5IGJlIHVwIHRvIDMyIGNoYXJhY3RlcnMgbG9uZy4KICAgICAgPC9wYXJhPgotICAgPC9yZWZzZWN0MT4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3cuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKaW5kZXggNzcwYzIzOS4uZjg2ZTVlMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvdy5pbmMKQEAgLTExLDggKzExLDYgQEAKIFVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2hhZG93LW1haW50L3NoYWRvdy9yZWxlYXNlcyIKIFNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3NoYWRvdy1tYWludC9zaGFkb3cvcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovL3NoYWRvdy00LjEuMy1kb3RzLWluLXVzZXJuYW1lcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtdGhlLXNwX2xzdGNoZy1zaGFkb3ctZmllbGQtcmVwcm9kdWNpYmxlLXJlLi03MS5wYXRjaCAgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtZml4LWNvbmZpZ3VyZS1lcnJvci13aXRoLWRhc2gucGF0Y2ggXAogICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKICAgICAgICAgICAgZmlsZTovL3NoYWRvdy1yZWxheGVkLXVzZXJuYW1lcy5wYXRjaCBcCiAgICAgICAgICAgICIKQEAgLTI0LDE2ICsyMiwxNSBAQAogCiBTUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRGlzYWJsZS11c2Utb2Ytc3lzbG9nLWZvci1zeXNyb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2FsbG93LWZvci1zZXR0aW5nLXBhc3N3b3JkLWluLWNsZWFyLXRleHQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1BbGxvdy1mb3Itc2V0dGluZy1wYXNzd29yZC1pbi1jbGVhci10ZXh0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2NvbW1vbmlvLmMtZml4LXVuZXhwZWN0ZWQtb3Blbi1mYWlsdXJlLWluLWNocm9vdC1lbnYucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS11c2VyYWRkLmMtY3JlYXRlLXBhcmVudC1kaXJlY3Rvcmllcy13aGVuLW5lY2Vzc2FyeS5wYXRjaCBcCiAgICAgICAgICAgICIKIFNSQ19VUklfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgXAogICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLXVzZS1vZi1zeXNsb2ctZm9yLXN5c3Jvb3QucGF0Y2ggXAogICAgICAgICAgICAiCiAKLVNSQ19VUklbbWQ1c3VtXSA9ICIzNmZlYjE1NjY1MzM4YWUzZGU0MTRmMmE4OGU0MzRkYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0NjY4Zjk5YmQwODczOTljNGE1ODYwODRkYzNiMDQ2Yjc1ZjU2MDcyMGQ4M2U5MmZkMjNiZjdhODlkZGE0ZDMxIgorU1JDX1VSSVttZDVzdW1dID0gIjNkOTdmMTFlNjZiZmIwYjE0NzAyYjExNWZhOGJlNDgwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNlZTMwODFmYmJjYmNmZWE1Yzg5MTY0MTllNDZiYzcyNDgwN2JhYjI3MTA3MjEwNGYyM2U3YTI5ZTk2NjhmM2EiCiAKICMgQWRkaXRpb25hbCBQb2xpY3kgZmlsZXMgZm9yIFBBTQogUEFNX1NSQ19VUkkgPSAiZmlsZTovL3BhbS5kL2NoZm4gXApAQCAtNTMsNiArNTAsNyBAQAogICAgICAgICAgICAgICAgICAtLXdpdGhvdXQtc2VsaW51eCBcCiAgICAgICAgICAgICAgICAgIC0td2l0aC1ncm91cC1uYW1lLW1heC1sZW5ndGg9MjQgXAogICAgICAgICAgICAgICAgICAtLWVuYWJsZS1zdWJvcmRpbmF0ZS1pZHM9eWVzIFwKKyAgICAgICAgICAgICAgICAgLS13aXRob3V0LXNzc2QgXAogICAgICAgICAgICAgICAgICAke05TQ0RPUFR9IgogCiBOU0NET1BUID0gIiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3dfNC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvd180LjguMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc2hhZG93L3NoYWRvd180LjYuYmIKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3NoYWRvdy9zaGFkb3dfNC44LjEuYmIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0cmVzcy1uZy9zdHJlc3MtbmdfMC4xMC4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0cmVzcy1uZy9zdHJlc3MtbmdfMC4xMC4xMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDdhOThmMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdHJlc3Mtbmcvc3RyZXNzLW5nXzAuMTAuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNSArMCwwIEBACi1TVU1NQVJZID0gIlN5c3RlbSBsb2FkIHRlc3RpbmcgdXRpbGl0eSIKLURFU0NSSVBUSU9OID0gIkRlbGliZXJhdGVseSBzaW1wbGUgd29ya2xvYWQgZ2VuZXJhdG9yIGZvciBQT1NJWCBzeXN0ZW1zLiBJdCBcCi1pbXBvc2VzIGEgY29uZmlndXJhYmxlIGFtb3VudCBvZiBDUFUsIG1lbW9yeSwgSS9PLCBhbmQgZGlzayBzdHJlc3Mgb24gdGhlIHN5c3RlbS4iCi1IT01FUEFHRSA9ICJodHRwczovL2tlcm5lbC51YnVudHUuY29tL35ja2luZy9zdHJlc3MtbmcvIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1TUkNfVVJJID0gImh0dHBzOi8va2VybmVsLnVidW50dS5jb20vfmNraW5nL3RhcmJhbGxzLyR7QlBOfS8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcHJlc2VydmUtb3duZXJzaGlwLXdoZW4taW5zdGFsbGluZy1leGFtcGxlLWpvLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImFkNGRlMzhkNmZmMWNjZjM2NDA1NzNlOTY3ZGZiMTM2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAzMWRlNWViYzQ0YjQ5OTkyYzExNjMzZjEwYWFlOTZkYTA1YTg1YjMyNmFlYmRmZmQ4OGJhOGM0NDVkMjNjZjQiCi0KLURFUEVORFMgPSAiY29yZXV0aWxzLW5hdGl2ZSIKLQotUFJPVklERVMgPSAic3RyZXNzIgotUlBST1ZJREVTXyR7UE59ID0gInN0cmVzcyIKLVJSRVBMQUNFU18ke1BOfSA9ICJzdHJlc3MiCi1SQ09ORkxJQ1RTXyR7UE59ID0gInN0cmVzcyIKLQotaW5oZXJpdCBiYXNoLWNvbXBsZXRpb24KLQotZG9faW5zdGFsbCgpIHsKLSAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdHJlc3Mtbmcvc3RyZXNzLW5nXzAuMTEuMDEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdHJlc3Mtbmcvc3RyZXNzLW5nXzAuMTEuMDEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzQ4NmJlMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N0cmVzcy1uZy9zdHJlc3MtbmdfMC4xMS4wMS5iYgpAQCAtMCwwICsxLDI1IEBACitTVU1NQVJZID0gIlN5c3RlbSBsb2FkIHRlc3RpbmcgdXRpbGl0eSIKK0RFU0NSSVBUSU9OID0gIkRlbGliZXJhdGVseSBzaW1wbGUgd29ya2xvYWQgZ2VuZXJhdG9yIGZvciBQT1NJWCBzeXN0ZW1zLiBJdCBcCitpbXBvc2VzIGEgY29uZmlndXJhYmxlIGFtb3VudCBvZiBDUFUsIG1lbW9yeSwgSS9PLCBhbmQgZGlzayBzdHJlc3Mgb24gdGhlIHN5c3RlbS4iCitIT01FUEFHRSA9ICJodHRwczovL2tlcm5lbC51YnVudHUuY29tL35ja2luZy9zdHJlc3MtbmcvIgorTElDRU5TRSA9ICJHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgorCitTUkNfVVJJID0gImh0dHBzOi8va2VybmVsLnVidW50dS5jb20vfmNraW5nL3RhcmJhbGxzLyR7QlBOfS8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Eby1ub3QtcHJlc2VydmUtb3duZXJzaGlwLXdoZW4taW5zdGFsbGluZy1leGFtcGxlLWpvLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImE1NThmYzdmYjlkMGE4NTFhZmU2ZGUwOTA4MGI1NDAxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmZTE5NTQ4Yzg3YWExYTFiOWIyYmUzYjM1OWVjMjYyMWI4OGJjYjE2OTk4Yjc3NTI3NTQ5YTc3MzZmNjU0OTQiCisKK0RFUEVORFMgPSAiY29yZXV0aWxzLW5hdGl2ZSIKKworUFJPVklERVMgPSAic3RyZXNzIgorUlBST1ZJREVTXyR7UE59ID0gInN0cmVzcyIKK1JSRVBMQUNFU18ke1BOfSA9ICJzdHJlc3MiCitSQ09ORkxJQ1RTXyR7UE59ID0gInN0cmVzcyIKKworaW5oZXJpdCBiYXNoLWNvbXBsZXRpb24KKworZG9faW5zdGFsbCgpIHsKKyAgICBvZV9ydW5tYWtlIERFU1RESVI9JHtEfSBpbnN0YWxsCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvLmluYwppbmRleCAxNTA3NWJjLi41ZDI3ZDQ2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby5pbmMKQEAgLTQsMTggKzQsMTggQEAKIEJVR1RSQUNLRVIgPSAiaHR0cDovL3d3dy5zdWRvLndzL2J1Z3MvIgogU0VDVElPTiA9ICJhZG1pbiIKIExJQ0VOU0UgPSAiSVNDICYgQlNEICYgWmxpYiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9MSUNFTlNFO21kNT02Yzc2YjczNjAzYWM3NzYzYWIwNTE2ZWJmYmU2N2I0MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9wbHVnaW5zL3N1ZG9lcnMvcmVkYmxhY2suYztiZWdpbmxpbmU9MTtlbmRsaW5lPTQ2O21kNT00YTE2MmZjMDRiODZiMDNmNTYzMjE4MGZlNjA3NmNkYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9yZWFsbG9jYXJyYXkuYztiZWdpbmxpbmU9MztlbmRsaW5lPTE1O21kNT1iNDdmMWY4NWExMmYwNWEwNzQ0Y2Q4YjFiNmY0MWEwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9mbm1hdGNoLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0yNzttZDU9NjdmODNlZTliZDQ1NjU1NzM5NzA4MmY4ZjFiZTBlZmQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvZ2V0Y3dkLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0yNzttZDU9MDkwNjhhMTliNGY2YjZmMGEwOTU4NjU1YmZlOThiNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvZ2xvYi5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MzE7bWQ1PTFmMmY3NzFjMzVmYjA2NThkNTY3YTc4MjQwMDdlNTZkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL3NucHJpbnRmLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0zMzttZDU9NjNlNDhlMWI5OTJiY2U3NDlhMTlkZDliMjI1NmU5YTAgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS9zdWRvX3F1ZXVlLmg7YmVnaW5saW5lPTI7ZW5kbGluZT0yNzttZDU9MDgyYjEzOGI3MmJhM2U1NjhhMTNhMjVjM2JmMjU0ZGMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvaW5ldF9wdG9uLmM7YmVnaW5saW5lPTM7ZW5kbGluZT0xNzttZDU9Mzk3MGFiMDUxOGFiNzljYmQwYmFmYjY5N2YxMGIzM2EgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvYXJjNHJhbmRvbS5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MjA7bWQ1PTE1YmRjODljMWIwMDNmYTRkNzM1M2U2Mjk2ZWJmZDY4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2FyYzRyYW5kb21fdW5pZm9ybS5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MTc7bWQ1PTMxZTYzMGFjODE0ZDY5MmZkMGFiN2E5NDI2NTliNDZmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2dldGVudHJvcHkuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTE5O21kNT05ZjFhMjc1ZWNkNDRjYzI2NGEyYTRkNWUwNmE3NTI5MiBcCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvTElDRU5TRTttZDU9NGQxYjQ0YjE1NzZlZWEwMzZkNzhiOGNjOTYxYWE5M2QgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcGx1Z2lucy9zdWRvZXJzL3JlZGJsYWNrLmM7YmVnaW5saW5lPTE7ZW5kbGluZT00NjttZDU9MDNlMzUzMTc2OTliYTAwYjQ5NjI1MWUwZGZlOWYxMDkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvcmVhbGxvY2FycmF5LmM7YmVnaW5saW5lPTM7ZW5kbGluZT0xNTttZDU9Mzk3ZGQ0NWM3NjgzZTkwYjlmOGJmMjQ2MzhjZjAzYmYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliL3V0aWwvZm5tYXRjaC5jO2JlZ2lubGluZT0zO2VuZGxpbmU9Mjc7bWQ1PTAwNGQ3ZDI4NjZiYTFmNWI0MTE3NDkwNjg0OWQyZTBmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2dldGN3ZC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9Mjc7bWQ1PTUwZjhkOTY2Nzc1MGUxOGRlYTRlODRhOTM1YzEyMDA5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2dsb2IuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTMxO21kNT0yODUyZjY4Njg3NTQ0ZTNlYjhhMGE2MTY2NTUwNmYwZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9zbnByaW50Zi5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MzM7bWQ1PWI3MGRmNjE3OTk2OWUzOGZjZjY4ZGE5MWI1M2I4MDI5IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvc3Vkb19xdWV1ZS5oO2JlZ2lubGluZT0yO2VuZGxpbmU9Mjc7bWQ1PWFkNTc4ZTk2NjRkMTdhMDEwYjYzZTRiYzA1NzZlZThkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2luZXRfcHRvbi5jO2JlZ2lubGluZT0zO2VuZGxpbmU9MTc7bWQ1PTI3Nzg1YzlmNTgzNTA5M2VkYTQyYWEwODE2YTJkMGI0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYi91dGlsL2FyYzRyYW5kb20uYztiZWdpbmxpbmU9MztlbmRsaW5lPTIwO21kNT1jZWQ4NjM2ZWNlZmEyYmE5MDdjZmUzOTBiYzNiZDk2NCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9hcmM0cmFuZG9tX3VuaWZvcm0uYztiZWdpbmxpbmU9MztlbmRsaW5lPTE3O21kNT1lMzBjMmI3NzdjZGMwMGNmY2FmN2M0NDVhMTBiMjYyZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvdXRpbC9nZXRlbnRyb3B5LmM7YmVnaW5saW5lPTE7ZW5kbGluZT0xOTttZDU9YTBmNThiZTNkNjBiNmRjZDg5OGVjNWZlMDg2NmQzNmYgXAogICAgICAgICAgICAgICAgICAgICAiCiAKIGluaGVyaXQgYXV0b3Rvb2xzCkBAIC0yNiw3ICsyNiw3IEBACiAKIENPTkZGSUxFU18ke1BOfSA9ICIke3N5c2NvbmZkaXJ9L3N1ZG9lcnMiCiAKLUVYVFJBX09FQ09ORiA9ICItLXdpdGgtZWRpdG9yPS9iaW4vdmkgLS13aXRoLWVudi1lZGl0b3IiCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLWVkaXRvcj0ke2Jhc2VfYmluZGlyfS92aSAtLXdpdGgtZW52LWVkaXRvciIKIAogRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIC0tZGlzYWJsZS1oYXJkZW5pbmcgIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG8vQ1ZFLTIwMTktMTQyODctMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby9DVkUtMjAxOS0xNDI4Ny0xLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyYTExZTNmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby9DVkUtMjAxOS0xNDI4Ny0xLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTc4ICswLDAgQEAKLUZyb20gZjc1MmFlNWNlZTE2MzI1MzczMGZmN2NkZjI5M2UzNGE5MWFhNTUyMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJUb2RkIEMuIE1pbGxlciIgPFRvZGQuTWlsbGVyQHN1ZG8ud3M+Ci1EYXRlOiBUaHUsIDEwIE9jdCAyMDE5IDEwOjA0OjEzIC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0hdIFRyZWF0IGFuIElEIG9mIC0xIGFzIGludmFsaWQgc2luY2UgdGhhdCBtZWFucyAibm8gY2hhbmdlIi4KLSBGaXhlcyBDVkUtMjAxOS0xNDI4Ny4gRm91bmQgYnkgSm9lIFZlbm5peCBmcm9tIEFwcGxlIEluZm9ybWF0aW9uIFNlY3VyaXR5LgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vc3Vkby1wcm9qZWN0L3N1ZG8vY29tbWl0L2Y3NTJhZTVjZWUxNjMyNTM3MzBmZjdjZGYyOTNlMzRhOTFhYTU1MjBdCi1DVkU6IENWRS0yMDE5LTE0Mjg3Ci0KLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0KLS0tLQotIGxpYi91dGlsL3N0cnRvaWQuYyB8IDEwMCArKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIDEgZmlsZXMgY2hhbmdlZCwgNTMgaW5zZXJ0aW9ucygrKSwgNDYgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9saWIvdXRpbC9zdHJ0b2lkLmMgYi9saWIvdXRpbC9zdHJ0b2lkLmMKLWluZGV4IDJkZmNlNzUuLjZiMzkxNmIgMTAwNjQ0Ci0tLS0gYS9saWIvdXRpbC9zdHJ0b2lkLmMKLSsrKyBiL2xpYi91dGlsL3N0cnRvaWQuYwotQEAgLTQ5LDYgKzQ5LDI3IEBACi0gI2luY2x1ZGUgInN1ZG9fdXRpbC5oIgotIAotIC8qCi0rICogTWFrZSBzdXJlIHRoYXQgdGhlIElEIGVuZHMgd2l0aCBhIHZhbGlkIHNlcGFyYXRvciBjaGFyLgotKyAqLwotK3N0YXRpYyBib29sCi0rdmFsaWRfc2VwYXJhdG9yKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGNoYXIgKmVwLCBjb25zdCBjaGFyICpzZXApCi0rewotKyAgICBib29sIHZhbGlkID0gZmFsc2U7Ci0rICAgIGRlYnVnX2RlY2wodmFsaWRfc2VwYXJhdG9yLCBTVURPX0RFQlVHX1VUSUwpCi0rCi0rICAgIGlmIChlcCAhPSBwKSB7Ci0rCS8qIGNoZWNrIGZvciB2YWxpZCBzZXBhcmF0b3IgKGluY2x1ZGluZyAnXDAnKSAqLwotKwlpZiAoc2VwID09IE5VTEwpCi0rCSAgICBzZXAgPSAiIjsKLSsJZG8gewotKwkgICAgaWYgKCplcCA9PSAqc2VwKQotKwkJdmFsaWQgPSB0cnVlOwotKwl9IHdoaWxlICgqc2VwKysgIT0gJ1wwJyk7Ci0rICAgIH0KLSsgICAgZGVidWdfcmV0dXJuX2Jvb2wodmFsaWQpOwotK30KLSsKLSsvKgotICAqIFBhcnNlIGEgdWlkL2dpZCBpbiBzdHJpbmcgZm9ybS4KLSAgKiBJZiBzZXAgaXMgbm9uLU5VTEwsIGl0IGNvbnRhaW5zIHZhbGlkIHNlcGFyYXRvciBjaGFyYWN0ZXJzIChlLmcuIGNvbW1hLCBzcGFjZSkKLSAgKiBJZiBlbmRwIGlzIG5vbi1OVUxMIGl0IGlzIHNldCB0byB0aGUgbmV4dCBjaGFyIGFmdGVyIHRoZSBJRC4KLUBAIC02MiwzNiArODMsMzMgQEAgc3Vkb19zdHJ0b2lkX3YxKGNvbnN0IGNoYXIgKnAsIGNvbnN0IGNoYXIgKnNlcCwgY2hhciAqKmVuZHAsIGNvbnN0IGNoYXIgKiplcnJzdHIKLSAgICAgY2hhciAqZXA7Ci0gICAgIGlkX3QgcmV0ID0gMDsKLSAgICAgbG9uZyBsb25nIGxsdmFsOwotLSAgICBib29sIHZhbGlkID0gZmFsc2U7Ci0gICAgIGRlYnVnX2RlY2woc3Vkb19zdHJ0b2lkLCBTVURPX0RFQlVHX1VUSUwpCi0gCi0gICAgIC8qIHNraXAgbGVhZGluZyBzcGFjZSBzbyB3ZSBjYW4gcGljayB1cCB0aGUgc2lnbiwgaWYgYW55ICovCi0gICAgIHdoaWxlIChpc3NwYWNlKCh1bnNpZ25lZCBjaGFyKSpwKSkKLSAJcCsrOwotLSAgICBpZiAoc2VwID09IE5VTEwpCi0tCXNlcCA9ICIiOwotKwotKyAgICAvKiBXaGlsZSBpZF90IG1heSBiZSA2NC1iaXQgc2lnbmVkLCB1aWRfdCBhbmQgZ2lkX3QgYXJlIDMyLWJpdCB1bnNpZ25lZC4gKi8KLSAgICAgZXJybm8gPSAwOwotICAgICBsbHZhbCA9IHN0cnRvbGwocCwgJmVwLCAxMCk7Ci0tICAgIGlmIChlcCAhPSBwKSB7Ci0tCS8qIGNoZWNrIGZvciB2YWxpZCBzZXBhcmF0b3IgKGluY2x1ZGluZyAnXDAnKSAqLwotLQlkbyB7Ci0tCSAgICBpZiAoKmVwID09ICpzZXApCi0tCQl2YWxpZCA9IHRydWU7Ci0tCX0gd2hpbGUgKCpzZXArKyAhPSAnXDAnKTsKLSsgICAgaWYgKChlcnJubyA9PSBFUkFOR0UgJiYgbGx2YWwgPT0gTExPTkdfTUFYKSB8fCBsbHZhbCA+IChpZF90KVVJTlRfTUFYKSB7Ci0rCWVycm5vID0gRVJBTkdFOwotKwlpZiAoZXJyc3RyICE9IE5VTEwpCi0rCSAgICAqZXJyc3RyID0gTl8oInZhbHVlIHRvbyBsYXJnZSIpOwotKwlnb3RvIGRvbmU7Ci0gICAgIH0KLS0gICAgaWYgKCF2YWxpZCkgewotKyAgICBpZiAoKGVycm5vID09IEVSQU5HRSAmJiBsbHZhbCA9PSBMTE9OR19NSU4pIHx8IGxsdmFsIDwgSU5UX01JTikgewotKwllcnJubyA9IEVSQU5HRTsKLSAJaWYgKGVycnN0ciAhPSBOVUxMKQotLQkgICAgKmVycnN0ciA9IE5fKCJpbnZhbGlkIHZhbHVlIik7Ci0tCWVycm5vID0gRUlOVkFMOwotKwkgICAgKmVycnN0ciA9IE5fKCJ2YWx1ZSB0b28gc21hbGwiKTsKLSAJZ290byBkb25lOwotICAgICB9Ci0tICAgIGlmIChlcnJubyA9PSBFUkFOR0UpIHsKLS0JaWYgKGVycnN0ciAhPSBOVUxMKSB7Ci0tCSAgICBpZiAobGx2YWwgPT0gTExPTkdfTUFYKQotLQkJKmVycnN0ciA9IE5fKCJ2YWx1ZSB0b28gbGFyZ2UiKTsKLS0JICAgIGVsc2UKLS0JCSplcnJzdHIgPSBOXygidmFsdWUgdG9vIHNtYWxsIik7Ci0tCX0KLSsKLSsgICAgLyogRGlzYWxsb3cgaWQgLTEsIHdoaWNoIG1lYW5zICJubyBjaGFuZ2UiLiAqLwotKyAgICBpZiAoIXZhbGlkX3NlcGFyYXRvcihwLCBlcCwgc2VwKSB8fCBsbHZhbCA9PSAtMSB8fCBsbHZhbCA9PSAoaWRfdClVSU5UX01BWCkgewotKwlpZiAoZXJyc3RyICE9IE5VTEwpCi0rCSAgICAqZXJyc3RyID0gTl8oImludmFsaWQgdmFsdWUiKTsKLSsJZXJybm8gPSBFSU5WQUw7Ci0gCWdvdG8gZG9uZTsKLSAgICAgfQotICAgICByZXQgPSAoaWRfdClsbHZhbDsKLUBAIC0xMDgsMzAgKzEyNiwxNSBAQCBzdWRvX3N0cnRvaWRfdjEoY29uc3QgY2hhciAqcCwgY29uc3QgY2hhciAqc2VwLCBjaGFyICoqZW5kcCwgY29uc3QgY2hhciAqKmVycnN0cgotIHsKLSAgICAgY2hhciAqZXA7Ci0gICAgIGlkX3QgcmV0ID0gMDsKLS0gICAgYm9vbCB2YWxpZCA9IGZhbHNlOwotICAgICBkZWJ1Z19kZWNsKHN1ZG9fc3RydG9pZCwgU1VET19ERUJVR19VVElMKQotIAotICAgICAvKiBza2lwIGxlYWRpbmcgc3BhY2Ugc28gd2UgY2FuIHBpY2sgdXAgdGhlIHNpZ24sIGlmIGFueSAqLwotICAgICB3aGlsZSAoaXNzcGFjZSgodW5zaWduZWQgY2hhcikqcCkpCi0gCXArKzsKLS0gICAgaWYgKHNlcCA9PSBOVUxMKQotLQlzZXAgPSAiIjsKLSsKLSAgICAgZXJybm8gPSAwOwotICAgICBpZiAoKnAgPT0gJy0nKSB7Ci0gCWxvbmcgbHZhbCA9IHN0cnRvbChwLCAmZXAsIDEwKTsKLS0JaWYgKGVwICE9IHApIHsKLS0JICAgIC8qIGNoZWNrIGZvciB2YWxpZCBzZXBhcmF0b3IgKGluY2x1ZGluZyAnXDAnKSAqLwotLQkgICAgZG8gewotLQkJaWYgKCplcCA9PSAqc2VwKQotLQkJICAgIHZhbGlkID0gdHJ1ZTsKLS0JICAgIH0gd2hpbGUgKCpzZXArKyAhPSAnXDAnKTsKLS0JfQotLQlpZiAoIXZhbGlkKSB7Ci0tCSAgICBpZiAoZXJyc3RyICE9IE5VTEwpCi0tCQkqZXJyc3RyID0gTl8oImludmFsaWQgdmFsdWUiKTsKLS0JICAgIGVycm5vID0gRUlOVkFMOwotLQkgICAgZ290byBkb25lOwotLQl9Ci0gCWlmICgoZXJybm8gPT0gRVJBTkdFICYmIGx2YWwgPT0gTE9OR19NQVgpIHx8IGx2YWwgPiBJTlRfTUFYKSB7Ci0gCSAgICBlcnJubyA9IEVSQU5HRTsKLSAJICAgIGlmIChlcnJzdHIgIT0gTlVMTCkKLUBAIC0xNDQsMjggKzE0NywzMSBAQCBzdWRvX3N0cnRvaWRfdjEoY29uc3QgY2hhciAqcCwgY29uc3QgY2hhciAqc2VwLCBjaGFyICoqZW5kcCwgY29uc3QgY2hhciAqKmVycnN0cgotIAkJKmVycnN0ciA9IE5fKCJ2YWx1ZSB0b28gc21hbGwiKTsKLSAJICAgIGdvdG8gZG9uZTsKLSAJfQotLQlyZXQgPSAoaWRfdClsdmFsOwotLSAgICB9IGVsc2UgewotLQl1bnNpZ25lZCBsb25nIHVsdmFsID0gc3RydG91bChwLCAmZXAsIDEwKTsKLS0JaWYgKGVwICE9IHApIHsKLS0JICAgIC8qIGNoZWNrIGZvciB2YWxpZCBzZXBhcmF0b3IgKGluY2x1ZGluZyAnXDAnKSAqLwotLQkgICAgZG8gewotLQkJaWYgKCplcCA9PSAqc2VwKQotLQkJICAgIHZhbGlkID0gdHJ1ZTsKLS0JICAgIH0gd2hpbGUgKCpzZXArKyAhPSAnXDAnKTsKLS0JfQotLQlpZiAoIXZhbGlkKSB7Ci0rCi0rCS8qIERpc2FsbG93IGlkIC0xLCB3aGljaCBtZWFucyAibm8gY2hhbmdlIi4gKi8KLSsJaWYgKCF2YWxpZF9zZXBhcmF0b3IocCwgZXAsIHNlcCkgfHwgbHZhbCA9PSAtMSkgewotIAkgICAgaWYgKGVycnN0ciAhPSBOVUxMKQotIAkJKmVycnN0ciA9IE5fKCJpbnZhbGlkIHZhbHVlIik7Ci0gCSAgICBlcnJubyA9IEVJTlZBTDsKLSAJICAgIGdvdG8gZG9uZTsKLSAJfQotKwlyZXQgPSAoaWRfdClsdmFsOwotKyAgICB9IGVsc2UgewotKwl1bnNpZ25lZCBsb25nIHVsdmFsID0gc3RydG91bChwLCAmZXAsIDEwKTsKLSAJaWYgKChlcnJubyA9PSBFUkFOR0UgJiYgdWx2YWwgPT0gVUxPTkdfTUFYKSB8fCB1bHZhbCA+IFVJTlRfTUFYKSB7Ci0gCSAgICBlcnJubyA9IEVSQU5HRTsKLSAJICAgIGlmIChlcnJzdHIgIT0gTlVMTCkKLSAJCSplcnJzdHIgPSBOXygidmFsdWUgdG9vIGxhcmdlIik7Ci0gCSAgICBnb3RvIGRvbmU7Ci0gCX0KLSsKLSsJLyogRGlzYWxsb3cgaWQgLTEsIHdoaWNoIG1lYW5zICJubyBjaGFuZ2UiLiAqLwotKwlpZiAoIXZhbGlkX3NlcGFyYXRvcihwLCBlcCwgc2VwKSB8fCB1bHZhbCA9PSBVSU5UX01BWCkgewotKwkgICAgaWYgKGVycnN0ciAhPSBOVUxMKQotKwkJKmVycnN0ciA9IE5fKCJpbnZhbGlkIHZhbHVlIik7Ci0rCSAgICBlcnJubyA9IEVJTlZBTDsKLSsJICAgIGdvdG8gZG9uZTsKLSsJfQotIAlyZXQgPSAoaWRfdCl1bHZhbDsKLSAgICAgfQotICAgICBpZiAoZXJyc3RyICE9IE5VTEwpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkby9DVkUtMjAxOS0xNDI4Ny0yLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvL0NWRS0yMDE5LTE0Mjg3LTIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ1M2E4YjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3Vkby9zdWRvL0NWRS0yMDE5LTE0Mjg3LTIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxMTIgKzAsMCBAQAotRnJvbSAzOTZiYzU3ZmVmZjNlMzYwMDA3NjM0ZjYyNDQ4YjY0ZTA2MjYzOTBjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogIlRvZGQgQy4gTWlsbGVyIiA8VG9kZC5NaWxsZXJAc3Vkby53cz4KLURhdGU6IFRodSwgMTAgT2N0IDIwMTkgMTA6MDQ6MTMgLTA2MDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIHN1ZG9fc3RydG9pZCgpIHRlc3RzIGZvciAtMSBhbmQgcmFuZ2UgZXJyb3JzLiBBbHNvIGFkanVzdAotIHRlc3RzdWRvZXJzL3Rlc3Q1IHdoaWNoIHJlbGllZCB1cG9uIGdpZCAtMSBwYXJzaW5nLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vc3Vkby1wcm9qZWN0L3N1ZG8vY29tbWl0LzM5NmJjNTddCi1DVkU6IENWRS0yMDE5LTE0Mjg3Ci0KLVNpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+Ci0KLS0tLQotIGxpYi91dGlsL3JlZ3Jlc3MvYXRvZm9vL2F0b2Zvb190ZXN0LmMgICAgICAgICAgICB8IDM2ICsrKysrKysrKysrKysrKystLS0tLS0KLSBwbHVnaW5zL3N1ZG9lcnMvcmVncmVzcy90ZXN0c3Vkb2Vycy90ZXN0NS5vdXQub2sgfCAgMiArLQotIHBsdWdpbnMvc3Vkb2Vycy9yZWdyZXNzL3Rlc3RzdWRvZXJzL3Rlc3Q1LnNoICAgICB8ICAyICstCi0gMyBmaWxlcyBjaGFuZ2VkLCAyOSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2xpYi91dGlsL3JlZ3Jlc3MvYXRvZm9vL2F0b2Zvb190ZXN0LmMgYi9saWIvdXRpbC9yZWdyZXNzL2F0b2Zvby9hdG9mb29fdGVzdC5jCi1pbmRleCAwMzFhN2VkLi5mYjQxYzFhIDEwMDY0NAotLS0tIGEvbGliL3V0aWwvcmVncmVzcy9hdG9mb28vYXRvZm9vX3Rlc3QuYwotKysrIGIvbGliL3V0aWwvcmVncmVzcy9hdG9mb28vYXRvZm9vX3Rlc3QuYwotQEAgLTI2LDYgKzI2LDcgQEAKLSAjZWxzZQotICMgaW5jbHVkZSAiY29tcGF0L3N0ZGJvb2wuaCIKLSAjZW5kaWYKLSsjaW5jbHVkZSA8ZXJybm8uaD4KLSAKLSAjaW5jbHVkZSAic3Vkb19jb21wYXQuaCIKLSAjaW5jbHVkZSAic3Vkb191dGlsLmgiCi1AQCAtODAsMTUgKzgxLDIwIEBAIHN0YXRpYyBzdHJ1Y3Qgc3RydG9pZF9kYXRhIHsKLSAgICAgaWRfdCBpZDsKLSAgICAgY29uc3QgY2hhciAqc2VwOwotICAgICBjb25zdCBjaGFyICplcDsKLSsgICAgaW50IGVycm51bTsKLSB9IHN0cnRvaWRfZGF0YVtdID0gewotLSAgICB7ICIwLDEiLCAwLCAiLCIsICIsIiB9LAotLSAgICB7ICIxMCIsIDEwLCBOVUxMLCBOVUxMIH0sCi0tICAgIHsgIi0yIiwgLTIsIE5VTEwsIE5VTEwgfSwKLSsgICAgeyAiMCwxIiwgMCwgIiwiLCAiLCIsIDAgfSwKLSsgICAgeyAiMTAiLCAxMCwgTlVMTCwgTlVMTCwgMCB9LAotKyAgICB7ICItMSIsIDAsIE5VTEwsIE5VTEwsIEVJTlZBTCB9LAotKyAgICB7ICI0Mjk0OTY3Mjk1IiwgMCwgTlVMTCwgTlVMTCwgRUlOVkFMIH0sCi0rICAgIHsgIjQyOTQ5NjcyOTYiLCAwLCBOVUxMLCBOVUxMLCBFUkFOR0UgfSwKLSsgICAgeyAiLTIxNDc0ODM2NDkiLCAwLCBOVUxMLCBOVUxMLCBFUkFOR0UgfSwKLSsgICAgeyAiLTIiLCAtMiwgTlVMTCwgTlVMTCwgMCB9LAotICNpZiBTSVpFT0ZfSURfVCAhPSBTSVpFT0ZfTE9OR19MT05HCi0tICAgIHsgIi0yIiwgKGlkX3QpNDI5NDk2NzI5NFUsIE5VTEwsIE5VTEwgfSwKLSsgICAgeyAiLTIiLCAoaWRfdCk0Mjk0OTY3Mjk0VSwgTlVMTCwgTlVMTCwgMCB9LAotICNlbmRpZgotLSAgICB7ICI0Mjk0OTY3Mjk0IiwgKGlkX3QpNDI5NDk2NzI5NFUsIE5VTEwsIE5VTEwgfSwKLS0gICAgeyBOVUxMLCAwLCBOVUxMLCBOVUxMIH0KLSsgICAgeyAiNDI5NDk2NzI5NCIsIChpZF90KTQyOTQ5NjcyOTRVLCBOVUxMLCBOVUxMLCAwIH0sCi0rICAgIHsgTlVMTCwgMCwgTlVMTCwgTlVMTCwgMCB9Ci0gfTsKLSAKLSBzdGF0aWMgaW50Ci1AQCAtMTA0LDExICsxMTAsMjMgQEAgdGVzdF9zdHJ0b2lkKGludCAqbnRlc3RzKQotIAkoKm50ZXN0cykrKzsKLSAJZXJyc3RyID0gInNvbWUgZXJyb3IiOwotIAl2YWx1ZSA9IHN1ZG9fc3RydG9pZChkLT5pZHN0ciwgZC0+c2VwLCAmZXAsICZlcnJzdHIpOwotLQlpZiAoZXJyc3RyICE9IE5VTEwpIHsKLS0JICAgIGlmIChkLT5pZCAhPSAoaWRfdCktMSkgewotLQkJc3Vkb193YXJueF9ub2RlYnVnKCJGQUlMOiAlczogJXMiLCBkLT5pZHN0ciwgZXJyc3RyKTsKLSsJaWYgKGQtPmVycm51bSAhPSAwKSB7Ci0rCSAgICBpZiAoZXJyc3RyID09IE5VTEwpIHsKLSsJCXN1ZG9fd2Fybnhfbm9kZWJ1ZygiRkFJTDogJXM6IG1pc3NpbmcgZXJyc3RyIGZvciBlcnJubyAlZCIsCi0rCQkgICAgZC0+aWRzdHIsIGQtPmVycm51bSk7Ci0rCQllcnJvcnMrKzsKLSsJICAgIH0gZWxzZSBpZiAodmFsdWUgIT0gMCkgewotKwkJc3Vkb193YXJueF9ub2RlYnVnKCJGQUlMOiAlcyBzaG91bGQgcmV0dXJuIDAgb24gZXJyb3IiLAotKwkJICAgIGQtPmlkc3RyKTsKLSsJCWVycm9ycysrOwotKwkgICAgfSBlbHNlIGlmIChlcnJubyAhPSBkLT5lcnJudW0pIHsKLSsJCXN1ZG9fd2Fybnhfbm9kZWJ1ZygiRkFJTDogJXM6IGVycm5vIG1pc21hdGNoLCAlZCAhPSAlZCIsCi0rCQkgICAgZC0+aWRzdHIsIGVycm5vLCBkLT5lcnJudW0pOwotIAkJZXJyb3JzKys7Ci0gCSAgICB9Ci0rCX0gZWxzZSBpZiAoZXJyc3RyICE9IE5VTEwpIHsKLSsJICAgIHN1ZG9fd2Fybnhfbm9kZWJ1ZygiRkFJTDogJXM6ICVzIiwgZC0+aWRzdHIsIGVycnN0cik7Ci0rCSAgICBlcnJvcnMrKzsKLSAJfSBlbHNlIGlmICh2YWx1ZSAhPSBkLT5pZCkgewotIAkgICAgc3Vkb193YXJueF9ub2RlYnVnKCJGQUlMOiAlcyAhPSAldSIsIGQtPmlkc3RyLCAodW5zaWduZWQgaW50KWQtPmlkKTsKLSAJICAgIGVycm9ycysrOwotZGlmZiAtLWdpdCBhL3BsdWdpbnMvc3Vkb2Vycy9yZWdyZXNzL3Rlc3RzdWRvZXJzL3Rlc3Q1Lm91dC5vayBiL3BsdWdpbnMvc3Vkb2Vycy9yZWdyZXNzL3Rlc3RzdWRvZXJzL3Rlc3Q1Lm91dC5vawotaW5kZXggNWUzMTljOS4uY2VjZjcwMCAxMDA2NDQKLS0tLSBhL3BsdWdpbnMvc3Vkb2Vycy9yZWdyZXNzL3Rlc3RzdWRvZXJzL3Rlc3Q1Lm91dC5vawotKysrIGIvcGx1Z2lucy9zdWRvZXJzL3JlZ3Jlc3MvdGVzdHN1ZG9lcnMvdGVzdDUub3V0Lm9rCi1AQCAtNCw3ICs0LDcgQEAgUGFyc2UgZXJyb3IgaW4gc3Vkb2VycyBuZWFyIGxpbmUgMS4KLSBFbnRyaWVzIGZvciB1c2VyIHJvb3Q6Ci0gCi0gQ29tbWFuZCB1bm1hdGNoZWQKLS10ZXN0c3Vkb2VyczogdGVzdDUuaW5jIHNob3VsZCBiZSBvd25lZCBieSBnaWQgNDI5NDk2NzI5NQotK3Rlc3RzdWRvZXJzOiB0ZXN0NS5pbmMgc2hvdWxkIGJlIG93bmVkIGJ5IGdpZCA0Mjk0OTY3Mjk0Ci0gUGFyc2UgZXJyb3IgaW4gc3Vkb2VycyBuZWFyIGxpbmUgMS4KLSAKLSBFbnRyaWVzIGZvciB1c2VyIHJvb3Q6Ci1kaWZmIC0tZ2l0IGEvcGx1Z2lucy9zdWRvZXJzL3JlZ3Jlc3MvdGVzdHN1ZG9lcnMvdGVzdDUuc2ggYi9wbHVnaW5zL3N1ZG9lcnMvcmVncmVzcy90ZXN0c3Vkb2Vycy90ZXN0NS5zaAotaW5kZXggOWU2OTBhNi4uOTRkNTg1YyAxMDA3NTUKLS0tLSBhL3BsdWdpbnMvc3Vkb2Vycy9yZWdyZXNzL3Rlc3RzdWRvZXJzL3Rlc3Q1LnNoCi0rKysgYi9wbHVnaW5zL3N1ZG9lcnMvcmVncmVzcy90ZXN0c3Vkb2Vycy90ZXN0NS5zaAotQEAgLTI0LDcgKzI0LDcgQEAgRU9GCi0gCi0gIyBUZXN0IGdyb3VwIHdyaXRhYmxlCi0gY2htb2QgNjY0ICRURVNURklMRQotLS4vdGVzdHN1ZG9lcnMgLVUgJE1ZVUlEIC1HIC0xIHJvb3QgaWQgPDxFT0YKLSsuL3Rlc3RzdWRvZXJzIC1VICRNWVVJRCAtRyAtMiByb290IGlkIDw8RU9GCi0gI2luY2x1ZGUgJFRFU1RGSUxFCi0gRU9GCi0gCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwYTExYTFiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMjcuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1yZXF1aXJlIHN1ZG8uaW5jCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly93d3cuc3Vkby53cy9kaXN0L3N1ZG8tJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnJHtQQU1fU1JDX1VSSX0nLCAnJywgZCl9IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtSW5jbHVkZS1zeXMtdHlwZXMuaC1mb3ItaWRfdC1kZWZpbml0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0NWRS0yMDE5LTE0Mjg3LTEucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTktMTQyODctMi5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUEFNX1NSQ19VUkkgPSAiZmlsZTovL3N1ZG8ucGFtIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYjVjMTg0YjEzYjZiNWRlMzJhZjYzMGFmMmZkMDEzZmQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiN2JlYjY4Yjk0NDcxZWY1NmQ4YTEwMzZkYmNkYzA5YTdiNThhOTQ5YTY4ZmZjZTQ4YjgzZjgzN2RkMzNlMmVjMCIKLQotREVQRU5EUyArPSAiIHZpcnR1YWwvY3J5cHQgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnbGlicGFtJywgJycsIGQpfSIKLVJERVBFTkRTXyR7UE59ICs9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAncGFtLXBsdWdpbi1saW1pdHMgcGFtLXBsdWdpbi1rZXlpbml0JywgJycsIGQpfSIKLQotRVhUUkFfT0VDT05GICs9ICIgXAotICAgICAgICAgICAgIGFjX2N2X3R5cGVfcnNpemVfdD1ubyBcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKLSAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS1lbmFibGUtdG1wZmlsZXMuZD0ke25vbmFyY2hfbGliZGlyfS90bXBmaWxlcy5kJywgJy0tZGlzYWJsZS10bXBmaWxlcy5kJywgZCl9IFwKLSAgICAgICAgICAgICAiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCBkKX0iIF07IHRoZW4KLQkJaW5zdGFsbCAtRCAtbSA2NDQgJHtXT1JLRElSfS9zdWRvLnBhbSAke0R9LyR7c3lzY29uZmRpcn0vcGFtLmQvc3VkbwotCQlpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwYW0td2hlZWwnLCAndHJ1ZScsICdmYWxzZScsIGQpfSA7IHRoZW4KLQkJCWVjaG8gJ2F1dGggICAgICAgcmVxdWlyZWQgICAgIHBhbV93aGVlbC5zbyB1c2VfdWlkJyA+PiR7RH0ke3N5c2NvbmZkaXJ9L3BhbS5kL3N1ZG8KLQkJCXNlZCAtaSAncy8jIFwoJXdoZWVsIEFMTD0oQUxMKSBBTExcKS9cMS8nICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMKLQkJZmkKLQlmaQotCi0JY2htb2QgNDExMSAke0R9JHtiaW5kaXJ9L3N1ZG8KLQljaG1vZCAwNDQwICR7RH0ke3N5c2NvbmZkaXJ9L3N1ZG9lcnMKLQotCSMgRXhwbGljaXRseSByZW1vdmUgdGhlIC9ydW4gZGlyZWN0b3J5IHRvIGF2b2lkIFFBIGVycm9yCi0Jcm1kaXIgLXAgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfS9ydW4vc3VkbwotfQotCi1GSUxFU18ke1BOfSArPSAiJHtub25hcmNoX2xpYmRpcn0vdG1wZmlsZXMuZCIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJleGVjZGlyfS8ke0JQTn0vbGliKiR7U09MSUJTREVWfSAke2xpYmV4ZWNkaXJ9LyR7QlBOfS8qLmxhIFwKLSAgICAgICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZXhlY2Rpcn0vKi5sYSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N1ZG8vc3Vkb18xLjguMzEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjMxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM5ZDg4MTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zdWRvL3N1ZG9fMS44LjMxLmJiCkBAIC0wLDAgKzEsNDggQEAKK3JlcXVpcmUgc3Vkby5pbmMKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5zdWRvLndzL2Rpc3Qvc3Vkby0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsICcke1BBTV9TUkNfVVJJfScsICcnLCBkKX0gXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1JbmNsdWRlLXN5cy10eXBlcy5oLWZvci1pZF90LWRlZmluaXRpb24ucGF0Y2ggXAorICAgICAgICAgICAiCisKK1BBTV9TUkNfVVJJID0gImZpbGU6Ly9zdWRvLnBhbSIKKworU1JDX1VSSVttZDVzdW1dID0gImNlMTdmZjZlNzJhNzBmOGQ1ZGFiYmE4YWJmM2NkMmRlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdlYThkOTdhM2NlZTRjODQ0ZTA4ODdlYTdhMWJkODBlYjU0Y2M5OGZkNzc5NjY3NzZjYjFhODA2NTNhZDQ1NGYiCisKK0RFUEVORFMgKz0gIiB2aXJ0dWFsL2NyeXB0ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ2xpYnBhbScsICcnLCBkKX0iCitSREVQRU5EU18ke1BOfSArPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgJ3BhbS1wbHVnaW4tbGltaXRzIHBhbS1wbHVnaW4ta2V5aW5pdCcsICcnLCBkKX0iCisKK0NBQ0hFRF9DT05GSUdVUkVWQVJTID0gIiBcCisgICAgICAgIGFjX2N2X3R5cGVfcnNpemVfdD1ubyBcCisgICAgICAgIGFjX2N2X3BhdGhfTVZQUk9HPSR7YmFzZV9iaW5kaXJ9L212IFwKKyAgICAgICAgYWNfY3ZfcGF0aF9CU0hFTExQUk9HPSR7YmFzZV9iaW5kaXJ9L3NoIFwKKyAgICAgICAgYWNfY3ZfcGF0aF9TRU5ETUFJTFBST0c9JHtzYmluZGlyfS9zZW5kbWFpbCBcCisgICAgICAgIGFjX2N2X3BhdGhfVklQUk9HPSR7YmFzZV9iaW5kaXJ9L3ZpIFwKKyAgICAgICAgIgorCitFWFRSQV9PRUNPTkYgKz0gIiBcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdwYW0nLCAnLS13aXRoLXBhbScsICctLXdpdGhvdXQtcGFtJywgZCl9IFwKKyAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAnLS1lbmFibGUtdG1wZmlsZXMuZD0ke25vbmFyY2hfbGliZGlyfS90bXBmaWxlcy5kJywgJy0tZGlzYWJsZS10bXBmaWxlcy5kJywgZCl9IFwKKyAgICAgICAgICAgICAtLXdpdGgtdmFyZGlyPS92YXIvbGliL3N1ZG8gXAorICAgICAgICAgICAgICIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworCWlmIFsgIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIgXTsgdGhlbgorCQlpbnN0YWxsIC1EIC1tIDY0NCAke1dPUktESVJ9L3N1ZG8ucGFtICR7RH0vJHtzeXNjb25mZGlyfS9wYW0uZC9zdWRvCisJCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3BhbS13aGVlbCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9IDsgdGhlbgorCQkJZWNobyAnYXV0aCAgICAgICByZXF1aXJlZCAgICAgcGFtX3doZWVsLnNvIHVzZV91aWQnID4+JHtEfSR7c3lzY29uZmRpcn0vcGFtLmQvc3VkbworCQkJc2VkIC1pICdzLyMgXCgld2hlZWwgQUxMPShBTEwpIEFMTFwpL1wxLycgJHtEfSR7c3lzY29uZmRpcn0vc3Vkb2VycworCQlmaQorCWZpCisKKwljaG1vZCA0MTExICR7RH0ke2JpbmRpcn0vc3VkbworCWNobW9kIDA0NDAgJHtEfSR7c3lzY29uZmRpcn0vc3Vkb2VycworCisJIyBFeHBsaWNpdGx5IHJlbW92ZSB0aGUgL3J1biBkaXJlY3RvcnkgdG8gYXZvaWQgUUEgZXJyb3IKKwlybWRpciAtcCAtLWlnbm9yZS1mYWlsLW9uLW5vbi1lbXB0eSAke0R9L3J1bi9zdWRvCit9CisKK0ZJTEVTXyR7UE59ICs9ICIke25vbmFyY2hfbGliZGlyfS90bXBmaWxlcy5kIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmV4ZWNkaXJ9LyR7QlBOfS9saWIqJHtTT0xJQlNERVZ9ICR7bGliZXhlY2Rpcn0vJHtCUE59LyoubGEgXAorICAgICAgICAgICAgICAgICAgICAke2xpYmV4ZWNkaXJ9L2xpYioke1NPTElCU0RFVn0gJHtsaWJleGVjZGlyfS8qLmxhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5NTY3OTQ2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDEtRml4LWJ1aWxkLXdpdGgtbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDEzMiArMCwwIEBACi1Gcm9tIGYwYWY1YmNmZDc1MzY5MTY1MmVhYzM1ZWZiY2IyMDhjOTMzMjUzZjEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogTW9uLCAzMSBBdWcgMjAxNSAwNToxMTo1MyArMDAwMAotU3ViamVjdDogW1BBVENIXSBGaXggYnVpbGQgd2l0aCBtdXNsCi0KLUV4cGxpY2l0bHkgaW5jbHVkZSBmY250bC5oIHNpbmNlIHdpdGggZ2xpYmMgaXMgY29tZXMgaW4gYXMgaW5kaXJlY3QKLWluY2x1ZGUgYnV0IG5vdCB3aXRoIG11c2wKLQotbGludXgvdGltZS5oIGluY2x1c2lvbiBpcyBub3QgcmVxdWlyZWQgb24gbXVzbCBzbyB1c2luZyAhX19HTElCQ19fIGlzCi1ub3QgcmlnaHQgZm9yIG11c2wgaGVyZQotCi13YWl0IHR5cGUgaXMgZ2xpYmMgc3BlY2lmaWMKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLSBrbG9nZC5jICAgIHwgMTAgKy0tLS0tLS0tLQotIGtzeW1fbW9kLmMgfCAgNSArLS0tLQotIHBpZGZpbGUuYyAgfCAgMSArCi0gc3lzbG9nLmMgICB8ICAzICsrLQotIHN5c2xvZ2QuYyAgfCAgNCArLS0tCi0gNSBmaWxlcyBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKyksIDE3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEva2xvZ2QuYyBiL2tsb2dkLmMKLWluZGV4IDZjYzgwZWQuLjkyMTk2NzEgMTAwNjQ0Ci0tLS0gYS9rbG9nZC5jCi0rKysgYi9rbG9nZC5jCi1AQCAtMjYwLDExICsyNjAsOCBAQAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPHN5cy9mY250bC5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotLSNpZiAhZGVmaW5lZChfX0dMSUJDX18pCi0tI2luY2x1ZGUgPGxpbnV4L3RpbWUuaD4KLS0jZW5kaWYgLyogX19HTElCQ19fICovCi0gI2luY2x1ZGUgPHN0ZGFyZy5oPgotICNpbmNsdWRlIDxwYXRocy5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLUBAIC0yNzcsMTMgKzI3NCw4IEBACi0gCi0gI2RlZmluZSBfX0xJQlJBUllfXwotICNpbmNsdWRlIDxsaW51eC91bmlzdGQuaD4KLS0jaWYgIWRlZmluZWQoX19HTElCQ19fKQotLSMgZGVmaW5lIF9fTlJfa3N5c2xvZyBfX05SX3N5c2xvZwotLV9zeXNjYWxsMyhpbnQsa3N5c2xvZyxpbnQsIHR5cGUsIGNoYXIgKiwgYnVmLCBpbnQsIGxlbik7Ci0tI2Vsc2UKLSAjaW5jbHVkZSA8c3lzL2tsb2cuaD4KLSAjZGVmaW5lIGtzeXNsb2cga2xvZ2N0bAotLSNlbmRpZgotIAotICNkZWZpbmUgTE9HX0JVRkZFUl9TSVpFIDQwOTYKLSAjZGVmaW5lIExPR19MSU5FX0xFTkdUSCAxMDAwCi1kaWZmIC0tZ2l0IGEva3N5bV9tb2QuYyBiL2tzeW1fbW9kLmMKLWluZGV4IDY4Y2Q2YjYuLjZlMjZkYTEgMTAwNjQ0Ci0tLS0gYS9rc3ltX21vZC5jCi0rKysgYi9rc3ltX21vZC5jCi1AQCAtMTEzLDEyICsxMTMsOSBAQAotICNpbmNsdWRlIDx1bmlzdGQuaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0gI2luY2x1ZGUgPGVycm5vLmg+Ci0tI2luY2x1ZGUgPHN5cy9mY250bC5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotICNpbmNsdWRlICJtb2R1bGUuaCIKLS0jaWYgIWRlZmluZWQoX19HTElCQ19fKQotLSNpbmNsdWRlIDxsaW51eC90aW1lLmg+Ci0tI2VuZGlmIC8qIF9fR0xJQkNfXyAqLwotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8cGF0aHMuaD4KLSAjaW5jbHVkZSA8bGludXgvdmVyc2lvbi5oPgotZGlmZiAtLWdpdCBhL3BpZGZpbGUuYyBiL3BpZGZpbGUuYwotaW5kZXggZTA5NTlhMC4uNmRhYTJlMCAxMDA2NDQKLS0tLSBhL3BpZGZpbGUuYwotKysrIGIvcGlkZmlsZS5jCi1AQCAtMzEsNiArMzEsNyBAQAotICNpbmNsdWRlIDxzdHJpbmcuaD4KLSAjaW5jbHVkZSA8ZXJybm8uaD4KLSAjaW5jbHVkZSA8c2lnbmFsLmg+Ci0rI2luY2x1ZGUgPGZjbnRsLmg+Ci0gCi0gLyogcmVhZF9waWQKLSAgKgotZGlmZiAtLWdpdCBhL3N5c2xvZy5jIGIvc3lzbG9nLmMKLWluZGV4IGJkYjNmZjIuLmVmN2IzNGUgMTAwNjQ0Ci0tLS0gYS9zeXNsb2cuYwotKysrIGIvc3lzbG9nLmMKLUBAIC01NSw3ICs1NSw3IEBAIHN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylzeXNsb2cuYwk1LjI4IChCZXJrZWxleSkgNi8yNy85MCI7Ci0gI2luY2x1ZGUgPHN5cy90eXBlcy5oPgotICNpbmNsdWRlIDxzeXMvc29ja2V0Lmg+Ci0gI2luY2x1ZGUgPHN5cy9maWxlLmg+Ci0tI2luY2x1ZGUgPHN5cy9zaWduYWwuaD4KLSsvLyNpbmNsdWRlIDxzeXMvc2lnbmFsLmg+Ci0gI2luY2x1ZGUgPHN5cy9zeXNsb2cuaD4KLSAjaWYgMAotICNpbmNsdWRlICJzeXNsb2cuaCIKLUBAIC03Miw2ICs3Miw3IEBAIHN0YXRpYyBjaGFyIHNjY3NpZFtdID0gIkAoIylzeXNsb2cuYwk1LjI4IChCZXJrZWxleSkgNi8yNy85MCI7Ci0gI2luY2x1ZGUgPHN0ZGFyZy5oPgotICNpbmNsdWRlIDxwYXRocy5oPgotICNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxmY250bC5oPgotIAotICNkZWZpbmUJX1BBVEhfTE9HTkFNRQkiL2Rldi9sb2ciCi0gCi1kaWZmIC0tZ2l0IGEvc3lzbG9nZC5jIGIvc3lzbG9nZC5jCi1pbmRleCBlYTczZWE1Li4xY2EwNTk1IDEwMDY0NAotLS0tIGEvc3lzbG9nZC5jCi0rKysgYi9zeXNsb2dkLmMKLUBAIC04MTgsOSArODE4LDcgQEAgdm9pZCBkb2V4aXQoaW50IHNpZyk7Ci0gdm9pZCBpbml0KCk7Ci0gdm9pZCBjZmxpbmUoY2hhciAqbGluZSwgcmVnaXN0ZXIgc3RydWN0IGZpbGVkICpmKTsKLSBpbnQgZGVjb2RlKGNoYXIgKm5hbWUsIHN0cnVjdCBjb2RlICpjb2RldGFiKTsKLS0jaWYgZGVmaW5lZChfX0dMSUJDX18pCi0gI2RlZmluZSBkcHJpbnRmIG15ZHByaW50ZgotLSNlbmRpZiAvKiBfX0dMSUJDX18gKi8KLSBzdGF0aWMgdm9pZCBkcHJpbnRmKGNoYXIgKiwgLi4uKTsKLSBzdGF0aWMgdm9pZCBhbGxvY2F0ZV9sb2codm9pZCk7Ci0gdm9pZCBzaWdodXBfaGFuZGxlcigpOwotQEAgLTIwOTQsNyArMjA5Miw3IEBAIHZvaWQgcmVhcGNoaWxkKCkKLSAJKHZvaWQpIHNpZ25hbChTSUdDSExELCByZWFwY2hpbGQpOwkvKiByZXNldCBzaWduYWwgaGFuZGxlciAtQVNQICovCi0gCXdhaXQgKChpbnQgKikwKTsKLSAjZWxzZQotLQl1bmlvbiB3YWl0IHN0YXR1czsKLSsJaW50IHN0YXR1czsKLSAKLSAJd2hpbGUgKHdhaXQzKCZzdGF0dXMsIFdOT0hBTkcsIChzdHJ1Y3QgcnVzYWdlICopIE5VTEwpID4gMCkKLSAJCTsKLS0tIAotMi41LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1maXgtb25lLXJhcmVseS1yZXByb2R1Y2VkLXBhcmFsbGVsLWJ1aWxkLXByb2JsZW0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAxLWZpeC1vbmUtcmFyZWx5LXJlcHJvZHVjZWQtcGFyYWxsZWwtYnVpbGQtcHJvYmxlbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45N2JmNmFlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1maXgtb25lLXJhcmVseS1yZXByb2R1Y2VkLXBhcmFsbGVsLWJ1aWxkLXByb2JsZW0ucGF0Y2gKQEAgLTAsMCArMSw0MCBAQAorRnJvbSBkY2FhNzUzOTFmZjI2N2MzOGU3NzZkNDhjNTc5Y2RiNzM0YjkxYWYzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KK0RhdGU6IE1vbiwgMjMgTWFyIDIwMjAgMTU6NTI6MzIgKzA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gZml4IG9uZSByYXJlbHkgcmVwcm9kdWNlZCBwYXJhbGxlbCBidWlsZCBwcm9ibGVtCisKK2ZpeCBmb3IgdGhpcyBpc3N1ZToKK2h0dHBzOi8vZ2l0aHViLmNvbS90cm9nbG9iaXQvc3lza2xvZ2QvaXNzdWVzLzE3CisKK1NpZ25lZC1vZmYtYnk6IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgorU2lnbmVkLW9mZi1ieTogQ2hhbmdxaW5nIExpIDxjaGFuZ3FpbmcubGlAd2luZHJpdmVyLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorW2h0dHBzOi8vZ2l0aHViLmNvbS90cm9nbG9iaXQvc3lza2xvZ2QvY29tbWl0L2I4OGUyMWQxNzcwYTI2MmYwZTVkMGY2Yjg0ZjBhYmQ0YTVkZTU1YjddCisKK1NpZ25lZC1vZmYtYnk6IENoYW5ncWluZyBMaSA8Y2hhbmdxaW5nLmxpQHdpbmRyaXZlci5jb20+CistLS0KKyBzcmMvTWFrZWZpbGUuYW0gfCAxMCArKysrKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDEwIGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggOTkzZGJmZC4uMDZiNzA2ZCAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtNTYsMyArNTYsMTMgQEAgbGlic3lzbG9nX2xhX1NPVVJDRVMgID0gc3lzbG9nLmMgc3lzbG9nLmggY29tcGF0LmgKKyBsaWJzeXNsb2dfbGFfQ1BQRkxBR1MgPSAkKEFNX0NQUEZMQUdTKSAtRF9YT1BFTl9TT1VSQ0U9NjAwCisgbGlic3lzbG9nX2xhX0xERkxBR1MgID0gJChBTV9MREZMQUdTKSAtdmVyc2lvbi1pbmZvIDA6MDowCisgbGlic3lzbG9nX2xhX0xJQkFERCAgID0gJChMVExJQk9CSlMpCisrCisrIyBCb3RoIGxpYnN5c2xvZ19sYSBhbmQgc3lzbG9nZC9sb2dnZXIgcmVxdWlyZXMgb2JqZWN0cyBsaWtlIGxpYi9waWRmaWxlLm8sIGZvcgorKyMgbGlic3lzbG9nX2xhLCB0aGUgb2JqZWN0cyBzaG91bGQgYmUgY29tcGlsZWQgd2l0aCAtZlBJQywgYnV0IGZvcgorKyMgc3lzbG9nZC9sb2dnZXIsIGl0IGRvZXNuJ3QgbmVlZCAtZlBJQywgc28gdGhlcmUgaXMgYSByYWNlIGlzc3VlIHdoZW4gdGhlIHR3bworKyMgZGlmZmVyZW50IGxpYi9waWRmaWxlLm8gYXJlIGNvbXBpbGVkIGF0IHRoZSBzYW1lIHRpbWUsIHdoaWNoIHdvdWxkIGNhdXNlIGVycm9ycyBsaWtlOgorKyMgbGQ6IHN5c2xvZ2Qtc3lzbG9nZC5vOiBpbiBmdW5jdGlvbiBgbWFpbic6CisrIyBzeXNsb2dkLmM6NDE3OiB1bmRlZmluZWQgcmVmZXJlbmNlIHRvIGBfX3BpZGZpbGUnCisrIworKyMgTWFrZSBMSUJPQkpTIGRlcGVuZCBvbiBMVExJQk9CSlMgdG8gZml4IHRoZSBwcm9ibGVtLgorKyQoTElCT0JKUyk6ICQoTFRMSUJPQkpTKQorLS0gCisyLjcuNAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAxLWZpeC1wcm9ibGVtcy10aGF0LWNhdXNlcy1hLXNlZ21lbnRhdGlvbi1mYXVsdC11bmRlci0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAxLWZpeC1wcm9ibGVtcy10aGF0LWNhdXNlcy1hLXNlZ21lbnRhdGlvbi1mYXVsdC11bmRlci0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDU2NDMxYWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvMDAwMS1maXgtcHJvYmxlbXMtdGhhdC1jYXVzZXMtYS1zZWdtZW50YXRpb24tZmF1bHQtdW5kZXItLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSBjYjcyYjNlMTcyYzIzOGI0YjVhZTU5MzVkYzZiZTU0ZjUwMzRmY2YxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMzAgSnVuIDIwMTcgMTg6MjA6MDYgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIGZpeCBwcm9ibGVtcyB0aGF0IGNhdXNlcyBhIHNlZ21lbnRhdGlvbiBmYXVsdCB1bmRlciBzb21lCi0gY29uZGl0aW9ucwotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBubyB1cHN0cmVhbSBdCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBrc3ltX21vZC5jIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL2tzeW1fbW9kLmMgYi9rc3ltX21vZC5jCi1pbmRleCA2ZTI2ZGExLi5hM2RhYTdkIDEwMDY0NAotLS0tIGEva3N5bV9tb2QuYwotKysrIGIva3N5bV9tb2QuYwotQEAgLTE4Niw3ICsxODYsNiBAQCBleHRlcm4gaW50IEluaXRNc3ltcygpCi0gCQllbHNlCi0gCQkJU3lzbG9nKExPR19FUlIsICJFcnJvciBsb2FkaW5nIGtlcm5lbCBzeW1ib2xzICIgXAotIAkJCSAgICAgICAiLSAlc1xuIiwgc3RyZXJyb3IoZXJybm8pKTsKLS0JCWZjbG9zZShrc3ltcyk7Ci0gCQlyZXR1cm4oMCk7Ci0gCX0KLSAKLS0tIAotMi4xMy4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDItTWFrZS13YXktZm9yLXJlc3BlY3RpbmctZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzLzAwMDItTWFrZS13YXktZm9yLXJlc3BlY3RpbmctZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWJiZGVmMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy8wMDAyLU1ha2Utd2F5LWZvci1yZXNwZWN0aW5nLWZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIGIyMmYyNDQ3MzJjZDBmNDc1YWYyZjgyZmM3ZWVjZWM0OWY5MDYyM2IgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogU2F0LCAxIEp1bCAyMDE3IDAwOjAxOjUwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBNYWtlIHdheSBmb3IgcmVzcGVjdGluZyBmbGFncyBmcm9tIGVudmlyb25tZW50Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUgfCA0ICstLS0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDMgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCA1YWYxNjg5Li5hZjY5OWQyIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtMTcsMTQgKzE3LDEyIEBACi0gIyAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCi0gIyAgIEZvdW5kYXRpb24sIEluYy4sIDY3NSBNYXNzIEF2ZSwgQ2FtYnJpZGdlLCBNQSAwMjEzOSwgVVNBLgotIAotLUNDPSBnY2MKLSAjU0tGTEFHUz0gLWcgLURTWVNWIC1XYWxsCi0gI0xERkxBR1M9IC1nCi0tU0tGTEFHUz0gJChSUE1fT1BUX0ZMQUdTKSAtTzMgLURTWVNWIC1mb21pdC1mcmFtZS1wb2ludGVyIC1XYWxsIC1mbm8tc3RyZW5ndGgtcmVkdWNlCi0rU0tGTEFHUyA9ICQoQ0ZMQUdTKSAkKENQUEZMQUdTKSAtRFNZU1YgLVdhbGwgLWZuby1zdHJlbmd0aC1yZWR1Y2UKLSAjIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURfTEFSR0VGSUxFX1NPVVJDRQotICMgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UKLSAjICQoc2hlbGwgZ2V0Y29uZiBMRlNfU0tGTEFHUykKLS1MREZMQUdTPSAtcwotIAotICMgTG9vayB3aGVyZSB5b3VyIGluc3RhbGwgcHJvZ3JhbSBpcy4KLSBJTlNUQUxMID0gL3Vzci9iaW4vaW5zdGFsbAotLS0gCi0yLjEzLjIKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMva2xvZ2Quc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL2tsb2dkLnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjODg4YzQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMva2xvZ2Quc2VydmljZQorKysgL2Rldi9udWxsCkBAIC0xLDEzICswLDAgQEAKLVtVbml0XQotRGVzY3JpcHRpb249S2VybmVsIExvZ2dpbmcgU2VydmljZQotQWZ0ZXI9c3lzbG9nZC5zZXJ2aWNlCi0KLVtTZXJ2aWNlXQotVHlwZT1mb3JraW5nCi1FeGVjU3RhcnQ9L3NiaW4va2xvZ2QKLVBJREZpbGU9L3Zhci9ydW4va2xvZ2QucGlkCi1TdGFuZGFyZE91dHB1dD1udWxsCi1SZXN0YXJ0PW9uLWZhaWx1cmUKLQotW0luc3RhbGxdCi1XYW50ZWRCeT1tdWx0aS11c2VyLnRhcmdldApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tc3RyaXAtaW5zdGFsbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL25vLXN0cmlwLWluc3RhbGwucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0MjZjODMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tc3RyaXAtaW5zdGFsbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotSW5kZXg6IHN5c2tsb2dkLTEuNS4xL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3lza2xvZ2QtMS41LjEub3JpZy9NYWtlZmlsZQotKysrIHN5c2tsb2dkLTEuNS4xL01ha2VmaWxlCi1AQCAtMTI3LDggKzEyNyw4IEBAIGNsb2JiZXI6IGNsZWFuCi0gCXJtIC1mIHN5c2xvZ2Qga2xvZ2Qga3N5bSBzeXNsb2dfdHN0IG9vcHNfdGVzdCBUQUdTIHRzeXNsb2dkIHRrbG9nZAotIAotIGluc3RhbGxfZXhlYzogc3lzbG9nZCBrbG9nZAotLQkke0lOU1RBTEx9IC1tIDUwMCAtcyBzeXNsb2dkICR7QklORElSfS9zeXNsb2dkCi0tCSR7SU5TVEFMTH0gLW0gNTAwIC1zIGtsb2dkICR7QklORElSfS9rbG9nZAotKwkke0lOU1RBTEx9IC1tIDUwMCBzeXNsb2dkICR7QklORElSfS9zeXNsb2dkCi0rCSR7SU5TVEFMTH0gLW0gNTAwIGtsb2dkICR7QklORElSfS9rbG9nZAotIAotIGluc3RhbGxfbWFuOgotIAkke0lOU1RBTEx9IC1vICR7TUFOX1VTRVJ9IC1nICR7TUFOX0dST1VQfSAtbSAke01BTl9QRVJNU30gc3lza2xvZ2QuOCAke01BTkRJUn0vbWFuOC9zeXNrbG9nZC44CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9uby12ZWN0b3JpemF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvbm8tdmVjdG9yaXphdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzFjYzA0Mi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9uby12ZWN0b3JpemF0aW9uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi0KLVRoZSBjb21waWxlciBzaG91bGQgbm90IGJlIGdlbmVyYXRpbmcgdmVjdG9yaXplZCBpbnN0cnVjdGlvbnMgb24gdGhpcyB0YXJnZXQuCi1UaGlzIGlzIGEgd29yayBhcm91bmQgdW50aWwgSSBjYW4gZGV0ZXJtaW5lIHdoeSB0aGlzIGlzIG9jY3VyaW5nIG9uIHRoaXMKLXBhcnRpY3VsYXIgcmVjaXBlCi0KLUluZGV4OiBzeXNrbG9nZC0xLjUvTWFrZWZpbGUKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzeXNrbG9nZC0xLjUub3JpZy9NYWtlZmlsZQotKysrIHN5c2tsb2dkLTEuNS9NYWtlZmlsZQotQEAgLTIwLDcgKzIwLDggQEAKLSBDQz0gZ2NjCi0gI1NLRkxBR1M9IC1nIC1EU1lTViAtV2FsbAotICNMREZMQUdTPSAtZwotLVNLRkxBR1M9ICQoUlBNX09QVF9GTEFHUykgLU8zIC1EU1lTViAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbCAtZm5vLXN0cmVuZ3RoLXJlZHVjZQotK1NLRkxBR1M9ICQoUlBNX09QVF9GTEFHUykgLU8zIC1EU1lTViAtZm9taXQtZnJhbWUtcG9pbnRlciAtV2FsbCAtZm5vLXN0cmVuZ3RoLXJlZHVjZSBcCi0rCS1mbm8tdHJlZS12ZWN0b3JpemUKLSAjIC1EX0ZJTEVfT0ZGU0VUX0JJVFM9NjQgLURfTEFSR0VGSUxFX1NPVVJDRQotICMgLURfRklMRV9PRkZTRVRfQklUUz02NCAtRF9MQVJHRUZJTEU2NF9TT1VSQ0UKLSAjICQoc2hlbGwgZ2V0Y29uZiBMRlNfU0tGTEFHUykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL3N5c2tsb2dkIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lza2xvZ2QKaW5kZXggNzM0MjQ4NC4uMmEzNTZhNiAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lza2xvZ2QKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lza2xvZ2QKQEAgLTE4LDkgKzE4LDcgQEAKIFBBVEg9L2JpbjovdXNyL2Jpbjovc2JpbjovdXNyL3NiaW4KIAogcGlkZmlsZV9zeXNsb2dkPS92YXIvcnVuL3N5c2xvZ2QucGlkCi1waWRmaWxlX2tsb2dkPS92YXIvcnVuL2tsb2dkLnBpZAotYmlucGF0aF9zeXNsb2dkPS9zYmluL3N5c2xvZ2QKLWJpbnBhdGhfa2xvZ2Q9L3NiaW4va2xvZ2QKK2JpbnBhdGhfc3lzbG9nZD0vdXNyL3NiaW4vc3lzbG9nZAogCiB0ZXN0IC14ICRiaW5wYXRoIHx8IGV4aXQgMAogCkBAIC0xMTIsMjggKzExMCwxNiBAQAogICAgIGNyZWF0ZV94Y29uc29sZQogICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RhcnQgLS1xdWlldCAtLXBpZGZpbGUgJHBpZGZpbGVfc3lzbG9nZCAtLW5hbWUgc3lzbG9nZCAtLXN0YXJ0YXMgJGJpbnBhdGhfc3lzbG9nZCAtLSAkU1lTTE9HRAogICAgIGxvZ19lbmRfbXNnICQ/Ci0gICAgbG9nX2JlZ2luX21zZyAiU3RhcnRpbmcga2VybmVsIGxvZyBkYWVtb24uLi4iCi0gICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tcGlkZmlsZSAkcGlkZmlsZV9rbG9nZCAtLW5hbWUga2xvZ2QgLS1zdGFydGFzICRiaW5wYXRoX2tsb2dkIC0tICRLTE9HRAotICAgIGxvZ19lbmRfbXNnICQ/CiAgICAgOzsKICAgc3RvcCkKICAgICBsb2dfYmVnaW5fbXNnICJTdG9wcGluZyBzeXN0ZW0gbG9nIGRhZW1vbi4uLiIKICAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0b3AgLS1xdWlldCAtLXBpZGZpbGUgJHBpZGZpbGVfc3lzbG9nZCAtLW5hbWUgc3lzbG9nZAogICAgIGxvZ19lbmRfbXNnICQ/Ci0gICAgbG9nX2JlZ2luX21zZyAiU3RvcHBpbmcga2VybmVsIGxvZyBkYWVtb24uLi4iCi0gICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1yZXRyeSAzIC0tZXhlYyAkYmlucGF0aF9rbG9nZCAtLXBpZGZpbGUgJHBpZGZpbGVfa2xvZ2QKLSAgICBsb2dfZW5kX21zZyAkPwogICAgIDs7CiAgIHJlbG9hZHxmb3JjZS1yZWxvYWQpCiAgICAgbG9nX2JlZ2luX21zZyAiUmVsb2FkaW5nIHN5c3RlbSBsb2cgZGFlbW9uLi4uIgogICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tc2lnbmFsIDEgLS1waWRmaWxlICRwaWRmaWxlX3N5c2xvZ2QgLS1uYW1lIHN5c2xvZ2QKICAgICBsb2dfZW5kX21zZyAkPwotICAgIGxvZ19iZWdpbl9tc2cgIlJlbG9hZGluZyBrZXJuZWwgbG9nIGRhZW1vbi4uLiIKLSAgICBwaWQ9YGNhdCAkcGlkZmlsZV9rbG9nZCAyPiAvZGV2L251bGxgCi0gICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdG9wIC0tcXVpZXQgLS1yZXRyeSAzIC0tZXhlYyAkYmlucGF0aF9rbG9nZCAtLXBpZGZpbGUgJHBpZGZpbGVfa2xvZ2QKLSAgICB3YWl0cGlkICRwaWQKLSAgICBzdGFydC1zdG9wLWRhZW1vbiAtLXN0YXJ0IC0tcXVpZXQgLS1waWRmaWxlICRwaWRmaWxlX2tsb2dkIC0tbmFtZSBrbG9nZCAtLXN0YXJ0YXMgJGJpbnBhdGhfa2xvZ2QgLS0gJEtMT0dECi0gICAgbG9nX2VuZF9tc2cgJD8KICAgICA7OwogICByZXN0YXJ0KQogICAgIGxvZ19iZWdpbl9tc2cgIlJlc3RhcnRpbmcgc3lzdGVtIGxvZyBkYWVtb24uLi4iCkBAIC0xNDIsMTIgKzEyOCw2IEBACiAgICAgd2FpdHBpZCAkcGlkCiAgICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tcGlkZmlsZSAkcGlkZmlsZV9zeXNsb2dkIC0tbmFtZSBzeXNsb2dkIC0tc3RhcnRhcyAkYmlucGF0aF9zeXNsb2dkIC0tICRTWVNMT0dECiAgICAgbG9nX2VuZF9tc2cgJD8KLSAgICBsb2dfYmVnaW5fbXNnICJSZWxvYWRpbmcga2VybmVsIGxvZyBkYWVtb24uLi4iCi0gICAgcGlkPWBjYXQgJHBpZGZpbGVfa2xvZ2QgMj4gL2Rldi9udWxsYAotICAgIHN0YXJ0LXN0b3AtZGFlbW9uIC0tc3RvcCAtLXF1aWV0IC0tcmV0cnkgMyAtLWV4ZWMgJGJpbnBhdGhfa2xvZ2QgLS1waWRmaWxlICRwaWRmaWxlX2tsb2dkCi0gICAgd2FpdHBpZCAkcGlkCi0gICAgc3RhcnQtc3RvcC1kYWVtb24gLS1zdGFydCAtLXF1aWV0IC0tcGlkZmlsZSAkcGlkZmlsZV9rbG9nZCAtLW5hbWUga2xvZ2QgLS1zdGFydGFzICRiaW5wYXRoX2tsb2dkIC0tICRLTE9HRAotICAgIGxvZ19lbmRfbXNnICQ/CiAgICAgOzsKICAgcmVsb2FkLW9yLXJlc3RhcnQpCiAgICAgaWYgcnVubmluZwpAQCAtMTYwLDggKzE0MCw2IEBACiAgIHN0YXR1cykKICAgICBzdGF0dXMgc3lzbG9nZAogICAgIFJFVFZBTD0kPwotICAgIHN0YXR1cyBrbG9nZAotICAgIHJ2YWw9JD8KICAgICBbICRSRVRWQUwgLWVxIDAgXSAmJiBleGl0ICRydmFsCiAgICAgZXhpdCAkUkVUVkFMCiAgICAgOzsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL2ZpbGVzL3N5c2xvZy5jb25mIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lzbG9nLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4NDlkZTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lzbG9nLmNvbmYKKysrIC9kZXYvbnVsbApAQCAtMSw3MSArMCwwIEBACi0jICAvZXRjL3N5c2xvZy5jb25mCUNvbmZpZ3VyYXRpb24gZmlsZSBmb3Igc3lzbG9nZC4KLSMKLSMgIFBvcnRlZCBmcm9tIGRlYmlhbiBieSBZdSBLZSA8a2UueXVAaW50ZWwuY29tPgotIwotCi0jCi0jIEZpcnN0IHNvbWUgc3RhbmRhcmQgbG9nZmlsZXMuICBMb2cgYnkgZmFjaWxpdHkuCi0jCi0KLWF1dGgsYXV0aHByaXYuKgkJCS92YXIvbG9nL2F1dGgubG9nCi0qLio7YXV0aCxhdXRocHJpdi5ub25lCQktL3Zhci9sb2cvc3lzbG9nCi0jY3Jvbi4qCQkJCS92YXIvbG9nL2Nyb24ubG9nCi1kYWVtb24uKgkJCS0vdmFyL2xvZy9kYWVtb24ubG9nCi1rZXJuLioJCQkJLS92YXIvbG9nL2tlcm4ubG9nCi1scHIuKgkJCQktL3Zhci9sb2cvbHByLmxvZwotbWFpbC4qCQkJCS0vdmFyL2xvZy9tYWlsLmxvZwotdXNlci4qCQkJCS0vdmFyL2xvZy91c2VyLmxvZwotCi0jCi0jIExvZ2dpbmcgZm9yIHRoZSBtYWlsIHN5c3RlbS4gIFNwbGl0IGl0IHVwIHNvIHRoYXQKLSMgaXQgaXMgZWFzeSB0byB3cml0ZSBzY3JpcHRzIHRvIHBhcnNlIHRoZXNlIGZpbGVzLgotIwotbWFpbC5pbmZvCQkJLS92YXIvbG9nL21haWwuaW5mbwotbWFpbC53YXJuCQkJLS92YXIvbG9nL21haWwud2FybgotbWFpbC5lcnIJCQkvdmFyL2xvZy9tYWlsLmVycgotCi0jIExvZ2dpbmcgZm9yIElOTiBuZXdzIHN5c3RlbQotIwotbmV3cy5jcml0CQkJL3Zhci9sb2cvbmV3cy5jcml0Ci1uZXdzLmVycgkJCS92YXIvbG9nL25ld3MuZXJyCi1uZXdzLm5vdGljZQkJCS0vdmFyL2xvZy9uZXdzLm5vdGljZQotCi0jCi0jIFNvbWUgYGNhdGNoLWFsbCcgbG9nZmlsZXMuCi0jCi0qLj1kZWJ1ZztcCi1hdXRoLGF1dGhwcml2Lm5vbmU7XAotbmV3cy5ub25lO21haWwubm9uZQktL3Zhci9sb2cvZGVidWcKLQotKi49aW5mbzsqLj1ub3RpY2U7Ki49d2FybjtcCi1hdXRoLGF1dGhwcml2Lm5vbmU7XAotY3JvbixkYWVtb24ubm9uZTtcCi1tYWlsLG5ld3Mubm9uZQkJLS92YXIvbG9nL21lc3NhZ2VzCi0KLSMKLSMgRW1lcmdlbmNpZXMgYXJlIHNlbnQgdG8gZXZlcnlib2R5IGxvZ2dlZCBpbi4KLSMKLSouZW1lcmcJCQkJKgotCi0jCi0jIEkgbGlrZSB0byBoYXZlIG1lc3NhZ2VzIGRpc3BsYXllZCBvbiB0aGUgY29uc29sZSwgYnV0IG9ubHkgb24gYSB2aXJ0dWFsCi0jIGNvbnNvbGUgSSB1c3VhbGx5IGxlYXZlIGlkbGUuCi0jCi0jZGFlbW9uLG1haWwuKjtcCi0jbmV3cy49Y3JpdDtuZXdzLj1lcnI7bmV3cy49bm90aWNlO1wKLSMqLj1kZWJ1ZzsqLj1pbmZvO1wKLSMqLj1ub3RpY2U7Ki49d2FybgkvZGV2L3R0eTgKLQotIyBUaGUgbmFtZWQgcGlwZSAvZGV2L3hjb25zb2xlIGlzIGZvciB0aGUgYHhjb25zb2xlJyB1dGlsaXR5LiAgVG8gdXNlIGl0LAotIyB5b3UgbXVzdCBpbnZva2UgYHhjb25zb2xlJyB3aXRoIHRoZSBgLWZpbGUnIG9wdGlvbjoKLSMKLSMgICAgJCB4Y29uc29sZSAtZmlsZSAvZGV2L3hjb25zb2xlIFsuLi5dCi0jCi0jIE5PVEU6IGFkanVzdCB0aGUgbGlzdCBiZWxvdywgb3IgeW91J2xsIGdvIGNyYXp5IGlmIHlvdSBoYXZlIGEgcmVhc29uYWJseQotIyAgICAgIGJ1c3kgc2l0ZS4uCi0jCi1kYWVtb24uKjttYWlsLio7XAotbmV3cy5lcnI7XAotKi49ZGVidWc7Ki49aW5mbztcCi0qLj1ub3RpY2U7Ki49d2Fybgl8L2Rldi94Y29uc29sZQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9zeXNsb2dkLnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy9zeXNsb2dkLnNlcnZpY2UKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVlYWZmM2QuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvc3lzbG9nZC5zZXJ2aWNlCisrKyAvZGV2L251bGwKQEAgLTEsMTQgKzAsMCBAQAotW1VuaXRdCi1EZXNjcmlwdGlvbj1TeXN0ZW0gTG9nZ2luZyBTZXJ2aWNlCi1SZXF1aXJlcz1zeXNsb2cuc29ja2V0Ci0KLVtTZXJ2aWNlXQotVHlwZT1mb3JraW5nCi1FeGVjU3RhcnQ9L3NiaW4vc3lzbG9nZAotUElERmlsZT0vdmFyL3J1bi9zeXNsb2dkLnBpZAotU3RhbmRhcmRPdXRwdXQ9bnVsbAotUmVzdGFydD1vbi1mYWlsdXJlCi0KLVtJbnN0YWxsXQotV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKLUFsaWFzPXN5c2xvZy5zZXJ2aWNlCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy90bXBmaWxlcy5zeXNrbG9nZC5jb25mIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2QvZmlsZXMvdG1wZmlsZXMuc3lza2xvZ2QuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjRhZWNkMy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9maWxlcy90bXBmaWxlcy5zeXNrbG9nZC5jb25mCisrKyAvZGV2L251bGwKQEAgLTEgKzAsMCBAQAotcCAvZGV2L3hjb25zb2xlIDA2NDAgcm9vdCBhZG0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkLmluYwppbmRleCA3NDkwMjZmLi44ODk5ZGFhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2QuaW5jCkBAIC0xLDYyICsxLDM4IEBACiBTVU1NQVJZID0gIlN5c3RlbSBMb2cgRGFlbW9ucyIKLURFU0NSSVBUSU9OID0gIlRoZSBzeXNrbG9nZCBwYWNrYWdlIGltcGxlbWVudHMgdHdvIHN5c3RlbSBsb2cgZGFlbW9uczogc3lzbG9nZCwga2xvZ2QiCitERVNDUklQVElPTiA9ICJUaGUgc3lza2xvZ2QgcGFja2FnZSBpbXBsZW1lbnRzIHN5c3RlbSBsb2cgZGFlbW9uczogc3lzbG9nZCIKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cuaW5mb2Ryb20ub3JnL3Byb2plY3RzL3N5c2tsb2dkLyIKIFNFQ1RJT04gPSAiYmFzZSIKIAotTElDRU5TRSA9ICJHUEx2MisgJiBCU0QiCi1MSUNFTlNFX3N5c2xvZ2QgPSAiQlNEIgotTElDRU5TRV9rbG9nZCA9ICJHUEx2MisiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT04Y2E0M2NiYzg0MmMyMzM2ZTgzNTkyNmMyMTY2YzI4YiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zeXNsb2dkLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9NzdmZmIyZmVjNDhjNDZkN2NhMGFiYjJkNTgxM2U3ZmQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8va2xvZ2QuYztiZWdpbmxpbmU9MjtlbmRsaW5lPTE5O21kNT03ZTg3ZWQwYWU2MTQyZGUwNzliY2U3MzhjMTBjODk5ZCBcCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTViNGJlNGIyNTQ5MzM4NTI2NzU4ZWY0NzljMDQwOTQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9zeXNsb2dkLmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNTttZDU9YTg4MGZlY2JjMDQ1MDNmMDcxYzQ5NGE5YzBkZDRmOTcgXAogICAgICAgICAgICAgICAgICAgICIKIAotaW5oZXJpdCB1cGRhdGUtcmMuZCB1cGRhdGUtYWx0ZXJuYXRpdmVzIHN5c3RlbWQKK2luaGVyaXQgdXBkYXRlLXJjLmQgdXBkYXRlLWFsdGVybmF0aXZlcyBzeXN0ZW1kIGF1dG90b29scwogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdHJvZ2xvYml0L3N5c2tsb2dkLmdpdDtub2JyYW5jaD0xIFwKLSAgICAgICAgICAgZmlsZTovL25vLXN0cmlwLWluc3RhbGwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LXByb2JsZW1zLXRoYXQtY2F1c2VzLWEtc2VnbWVudGF0aW9uLWZhdWx0LXVuZGVyLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLU1ha2Utd2F5LWZvci1yZXNwZWN0aW5nLWZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vc3lza2xvZ2QgXAotICAgICAgICAgICBmaWxlOi8vc3lzbG9nLmNvbmYgXAotICAgICAgICAgICBmaWxlOi8vc3lzbG9nZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgZmlsZTovL2tsb2dkLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vdG1wZmlsZXMuc3lza2xvZ2QuY29uZiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWZpeC1vbmUtcmFyZWx5LXJlcHJvZHVjZWQtcGFyYWxsZWwtYnVpbGQtcHJvYmxlbS5wYXRjaCBcCiAgICAgICAgICAgICIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKLVNSQ19VUklfYXBwZW5kX2U1MDB2MiA9ICIgZmlsZTovL25vLXZlY3Rvcml6YXRpb24ucGF0Y2giCitFWFRSQV9PRUNPTkYgPSAiLS13aXRoLXN5c3RlbWQ9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfSAtLXdpdGhvdXQtbG9nZ2VyIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfQorICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7U30vc3lzbG9nLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzbG9nLmNvbmYKKyAgICAgICBpbnN0YWxsIC1kICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZAorICAgICAgIGluc3RhbGwgLW0gNzU1ICR7V09SS0RJUn0vc3lza2xvZ2QgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3N5c2xvZworfQogCiBTWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInN5c2xvZ2Quc2VydmljZSBrbG9nZC5zZXJ2aWNlIgorU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInN5c2xvZ2Quc2VydmljZSIKIFNZU1RFTURfQVVUT19FTkFCTEUgPSAiZW5hYmxlIgogCiBJTklUU0NSSVBUX05BTUUgPSAic3lzbG9nIgogQ09ORkZJTEVTXyR7UE59ID0gIiR7c3lzY29uZmRpcn0vc3lzbG9nLmNvbmYiCiBSQ09ORkxJQ1RTXyR7UE59ID0gInJzeXNsb2cgYnVzeWJveC1zeXNsb2cgc3lzbG9nLW5nIgogCi1DRkxBR1MgKz0gIi1EU1lTViAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IC1EX0xBUkdFRklMRV9TT1VSQ0UiCi0KLWRvX2luc3RhbGwgKCkgewotCWluc3RhbGwgLWQgJHtEfSR7bWFuZGlyfS9tYW44IFwKLQkJCSR7RH0ke21hbmRpcn0vbWFuNSBcCi0JCQkke0R9JHtiYXNlX3NiaW5kaXJ9Ci0Jb2VfcnVubWFrZSAnQklORElSPSR7RH0ke2Jhc2Vfc2JpbmRpcn0nIFwKLQkJCSdNQU5ESVI9JHtEfSR7bWFuZGlyfScgaW5zdGFsbAotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0KLQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L3N5c2xvZy5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3N5c2xvZy5jb25mCi0JaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQKLQlpbnN0YWxsIC1tIDc1NSAke1dPUktESVJ9L3N5c2tsb2dkICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9zeXNsb2cKLQlpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0JaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS9zeXNsb2dkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpbnN0YWxsIC1tIDY0NCAke1dPUktESVJ9L2tsb2dkLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KLQlpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywnc3lzdGVtZCcsJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQKLQkJaW5zdGFsbCAtbSA2NDQgJHtXT1JLRElSfS90bXBmaWxlcy5zeXNrbG9nZC5jb25mICR7RH0ke2V4ZWNfcHJlZml4fS9saWIvdG1wZmlsZXMuZC9zeXNrbG9nZC5jb25mCi0JZmkKLX0KLQogRklMRVNfJHtQTn0gKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCdzeXN0ZW1kJywnJHtleGVjX3ByZWZpeH0vbGliL3RtcGZpbGVzLmQvc3lza2xvZ2QuY29uZicsICcnLCBkKX0iCiAKIEFMVEVSTkFUSVZFX1BSSU9SSVRZID0gIjEwMCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c2tsb2dkL3N5c2tsb2dkXzEuNS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2RfMS41LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg4YmNmZDkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2RfMS41LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzICswLDAgQEAKLXJlcXVpcmUgc3lza2xvZ2QuaW5jCi0KLVNSQ1JFViA9ICI5MzBhMmIxYzBkMTViMTQzMDlhNDlmMTRlM2YzMGU5MDU0NTZhZjRkIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2RfMi4xLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNrbG9nZC9zeXNrbG9nZF8yLjEuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lYjZiNGVmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lza2xvZ2Qvc3lza2xvZ2RfMi4xLjEuYmIKQEAgLTAsMCArMSwzIEBACityZXF1aXJlIHN5c2tsb2dkLmluYworCitTUkNSRVYgPSAiMjRkYWZlOWEyN2FjOTU5ZWJlYjg5YWNkM2ViZDNkNjJjY2E0Yjc1NSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXQuaW5jCmluZGV4IDc3Y2M2ZjIuLjhmZDg3YjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LmluYwpAQCAtMjMsMTAgKzIzLDYgQEAKIAogRVhUUkFfT0VDT05GICs9ICItLWRpc2FibGUtc3RyaXBwaW5nIgogCi1TWVNURU1EX1BBQ0tBR0VTID0gIiR7UE59IgotU1lTVEVNRF9TRVJWSUNFXyR7UE59ID0gInN5c3N0YXQuc2VydmljZSIKLVNZU1RFTURfQVVUT19FTkFCTEUgPSAiZW5hYmxlIgotCiBkb19jb25maWd1cmVfcHJlcGVuZCgpIHsKICAgICBleHBvcnQgc2FfbGliX2Rpcj0ke2xpYmV4ZWNkaXJ9L3NhCiB9CkBAIC0zNCw2ICszMCw5IEBACiBkb19pbnN0YWxsKCkgewogCWF1dG90b29sc19kb19pbnN0YWxsCiAKKwkjIERvbid0IHZlcnNpb24gdGhlIGRvY3VtZW50YXRpb24KKwltdiAke0R9JHtkb2NkaXJ9LyR7QlB9ICR7RH0ke2RvY2Rpcn0vJHtCUE59CisKIAkjIGRvbid0IGluc3RhbGwgL3Zhci9sb2cvc2Egd2hlbiBwb3B1bGF0aW5nIHJvb3Rmcy4gRG8gaXQgdGhyb3VnaCB2b2xhdGlsZQogCXJtIC1yZiAke0R9L3ZhcgogCWlmICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnc3lzdmluaXQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtRml4LTIzMi1NZW1vcnktY29ycnVwdGlvbi1idWctZHVlLXRvLUludGVnZXItT3ZlcmZsby5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLUZpeC0yMzItTWVtb3J5LWNvcnJ1cHRpb24tYnVnLWR1ZS10by1JbnRlZ2VyLU92ZXJmbG8ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDQ2YjExMTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtRml4LTIzMi1NZW1vcnktY29ycnVwdGlvbi1idWctZHVlLXRvLUludGVnZXItT3ZlcmZsby5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gNjAzYWU0ZWQ4Y2Q2NWFiZjA3NzZlZjdmNjgzNTRhNWMyNGEzNDExYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFNlYmFzdGllbiBHT0RBUkQgPHN5c3N0YXRAdXNlcnMubm9yZXBseS5naXRodWIuY29tPgotRGF0ZTogVHVlLCAxNSBPY3QgMjAxOSAxNDozOTozMyArMDgwMAotU3ViamVjdDogW1BBVENIXSBGaXggIzIzMjogTWVtb3J5IGNvcnJ1cHRpb24gYnVnIGR1ZSB0byBJbnRlZ2VyIE92ZXJmbG93IGluCi0gcmVtYXBfc3RydWN0KCkKLQotVHJ5IHRvIGF2b2lkIGludGVnZXIgb3ZlcmZsb3cgd2hlbiByZWFkaW5nIGEgY29ycnVwdGVkIGJpbmFyeSBkYXRhZmlsZQotd2l0aCBzYWRmLgotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vc3lzc3RhdC9zeXNzdGF0L2NvbW1pdC84M2ZhZDljODk1ZDFhYzEzZjc2YWY1ODgzYjc0NTFiMzMwMmJlZWY1XQotQ1ZFOiBDVkUtMjAxOS0xNjE2NwotCi1TaWduZWQtb2ZmLWJ5OiBTZWJhc3RpZW4gR09EQVJEIDxzeXNzdGF0QHVzZXJzLm5vcmVwbHkuZ2l0aHViLmNvbT4KLVNpZ25lZC1vZmYtYnk6IFdlbmxpbiBLYW5nIDx3ZW5saW4ua2FuZ0B3aW5kcml2ZXIuY29tPgotLS0tCi0gc2FfY29tbW9uLmMgfCA3ICsrKysrLS0KLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvc2FfY29tbW9uLmMgYi9zYV9jb21tb24uYwotaW5kZXggMzk1YzExYy4uY2ZhOTAwNyAxMDA2NDQKLS0tLSBhL3NhX2NvbW1vbi5jCi0rKysgYi9zYV9jb21tb24uYwotQEAgLTEzMzYsNyArMTMzNiw4IEBAIGludCByZW1hcF9zdHJ1Y3QodW5zaWduZWQgaW50IGd0eXBlc19ucltdLCB1bnNpZ25lZCBpbnQgZnR5cGVzX25yW10sCi0gCS8qIFJlbWFwIFt1bnNpZ25lZF0gaW50IGZpZWxkcyAqLwotIAlkID0gZ3R5cGVzX25yWzFdIC0gZnR5cGVzX25yWzFdOwotIAlpZiAoZCkgewotLQkJaWYgKGZ0eXBlc19uclsxXSAqIFVMX0FMSUdOTUVOVF9XSURUSCA8IGZ0eXBlc19uclsxXSkKLSsJCWlmIChndHlwZXNfbnJbMF0gKiBVTExfQUxJR05NRU5UX1dJRFRIICsKLSsJCSAgICBmdHlwZXNfbnJbMV0gKiBVTF9BTElHTk1FTlRfV0lEVEggPCBmdHlwZXNfbnJbMV0pCi0gCQkJLyogT3ZlcmZsb3cgKi8KLSAJCQlyZXR1cm4gLTE7Ci0gCi1AQCAtMTM2NSw3ICsxMzY2LDkgQEAgaW50IHJlbWFwX3N0cnVjdCh1bnNpZ25lZCBpbnQgZ3R5cGVzX25yW10sIHVuc2lnbmVkIGludCBmdHlwZXNfbnJbXSwKLSAJLyogUmVtYXAgcG9zc2libGUgZmllbGRzIChsaWtlIHN0cmluZ3Mgb2YgY2hhcnMpIGZvbGxvd2luZyBpbnQgZmllbGRzICovCi0gCWQgPSBndHlwZXNfbnJbMl0gLSBmdHlwZXNfbnJbMl07Ci0gCWlmIChkKSB7Ci0tCQlpZiAoZnR5cGVzX25yWzJdICogVV9BTElHTk1FTlRfV0lEVEggPCBmdHlwZXNfbnJbMl0pCi0rCQlpZiAoZ3R5cGVzX25yWzBdICogVUxMX0FMSUdOTUVOVF9XSURUSCArCi0rCQkgICAgZ3R5cGVzX25yWzFdICogVUxfQUxJR05NRU5UX1dJRFRIICsKLSsJCSAgICBmdHlwZXNfbnJbMl0gKiBVX0FMSUdOTUVOVF9XSURUSCA8IGZ0eXBlc19uclsyXSkKLSAJCQkvKiBPdmVyZmxvdyAqLwotIAkJCXJldHVybiAtMTsKLSAKLS0tIAotMS45LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtSW5jbHVkZS1uZWVkZWQtaGVhZGVycy1leHBsaWNpdGx5LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYjYzMjk5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLUluY2x1ZGUtbmVlZGVkLWhlYWRlcnMtZXhwbGljaXRseS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU5ICswLDAgQEAKLUZyb20gNDIzMjVmYWE4OGQ2NGNjZTc5OTk3N2Q2MTFiMjc5MmJlYjE1NDY0MyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDE0IFNlcCAyMDE1IDA4OjM2OjU5ICswMDAwCi1TdWJqZWN0OiBbUEFUQ0hdIEluY2x1ZGUgbmVlZGVkIGhlYWRlcnMgZXhwbGljaXRseQotCi1vbiBnbGliYyB0aGVzZSBoZWFkZXJzIGdldCBwdWxsZWQgaW4gaW5kaXJlY3RseSB2aWEgb3RoZXIgLmggZmlsZXMKLWJ1dCByaWdodCBmaXggaXMgdG8gaW5jbHVkZSB0aGVtIGRpcmVjdGx5IHdoZW4gdXNlZAotCi1maXhlcwotCi1lcnJvcjogdXNlIG9mIHVuZGVjbGFyZWQgaWRlbnRpZmllciAnUEFUSF9NQVgnCi1lcnJvcjogY2FsbGVkIG9iamVjdCB0eXBlICd1bnNpZ25lZCBpbnQnIGlzIG5vdCBhIGZ1bmN0aW9uIG9yIGZ1bmN0aW9uIHBvaW50ZXIKLWRtX21ham9yID0gbWFqb3IoYXV4LnN0X3JkZXYpOwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIGNvbW1vbi5jICAgIHwgMSArCi0gaW9jb25mLmMgICAgfCAxICsKLSBzYV9jb21tb24uYyB8IDEgKwotIDMgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCi0KLUluZGV4OiBzeXNzdGF0LTExLjcuMS9jb21tb24uYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHN5c3N0YXQtMTEuNy4xLm9yaWcvY29tbW9uLmMKLSsrKyBzeXNzdGF0LTExLjcuMS9jb21tb24uYwotQEAgLTIwLDYgKzIwLDcgQEAKLSAgKi8KLSAKLSAjaW5jbHVkZSA8c3RkaW8uaD4KLSsjaW5jbHVkZSA8bGltaXRzLmg+Ci0gI2luY2x1ZGUgPHN0cmluZy5oPgotICNpbmNsdWRlIDxzdGRsaWIuaD4KLSAjaW5jbHVkZSA8c3RkYXJnLmg+Ci1JbmRleDogc3lzc3RhdC0xMS43LjEvaW9jb25mLmMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBzeXNzdGF0LTExLjcuMS5vcmlnL2lvY29uZi5jCi0rKysgc3lzc3RhdC0xMS43LjEvaW9jb25mLmMKLUBAIC0yNyw2ICsyNyw3IEBACi0gI2luY2x1ZGUgPGVycm5vLmg+Ci0gI2luY2x1ZGUgPGRpcmVudC5oPgotICNpbmNsdWRlIDxzeXMvc3RhdC5oPgotKyNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLSAKLSAjaW5jbHVkZSAiaW9jb25mLmgiCi0gI2luY2x1ZGUgImNvbW1vbi5oIgotSW5kZXg6IHN5c3N0YXQtMTEuNy4xL3NhX2NvbW1vbi5jCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc3lzc3RhdC0xMS43LjEub3JpZy9zYV9jb21tb24uYwotKysrIHN5c3N0YXQtMTEuNy4xL3NhX2NvbW1vbi5jCi1AQCAtMjAsNiArMjAsNyBAQAotICAqLwotIAotICNpbmNsdWRlIDxzdGRpby5oPgotKyNpbmNsdWRlIDxsaW1pdHMuaD4KLSAjaW5jbHVkZSA8c3RyaW5nLmg+Ci0gI2luY2x1ZGUgPHN0ZGxpYi5oPgotICNpbmNsdWRlIDxzdGRpbnQuaD4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtY2hlY2stZm9yLWNoa2NvbmZpZy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdC8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtY2hlY2stZm9yLWNoa2NvbmZpZy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40MDY3YmI5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0LzAwMDEtY29uZmlndXJlLmluLXJlbW92ZS1jaGVjay1mb3ItY2hrY29uZmlnLnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gMTU5MGNjNjE0YWFmMGZiODFjZDgwNDQxNGQ2YzlkNWE5MjI3MzUyYyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFdlbmxpbiBLYW5nIDx3ZW5saW4ua2FuZ0B3aW5kcml2ZXIuY29tPgorRGF0ZTogVHVlLCA1IE5vdiAyMDE5IDE2OjE2OjQ0ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5pbjogcmVtb3ZlIGNoZWNrIGZvciBjaGtjb25maWcKKworY2hrY29uZmlnIGNhbid0IHdvcmsgb24gY3Jvc3MtcGxhdGZvcm0sIHNvIHNob3VsZCByZW1vdmUgY2hlY2sgZm9yIGl0LgorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgWyBlbWJlZGRlZCBzcGVjaWZpYyBdCisKK1NpZ25lZC1vZmYtYnk6IFdlbmxpbiBLYW5nIDx3ZW5saW4ua2FuZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgY29uZmlndXJlLmluIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuaW4gYi9jb25maWd1cmUuaW4KK2luZGV4IDQ4YjlhMzEuLmNlZGViNDMgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuaW4KKysrKyBiL2NvbmZpZ3VyZS5pbgorQEAgLTQyLDcgKzQyLDggQEAgQUNfU1VCU1QoVkVSX0pTT04pCisgQUNfU1VCU1QoVkVSX1hNTCkKKyAKKyBBQ19QQVRIX1BST0coUEFUSF9DUCwgY3ApCistQUNfUEFUSF9QUk9HKFBBVEhfQ0hLQ09ORklHLCBjaGtjb25maWcpCisrI0FDX1BBVEhfUFJPRyhQQVRIX0NIS0NPTkZJRywgY2hrY29uZmlnKQorK0FDX1NVQlNUKFBBVEhfQ0hLQ09ORklHKQorIAorICMgQ2hlY2sgZm9yIHN5c3RlbWQKKyBBQ19DSEVDS19QUk9HKFBLR19DT05GSUcsIHBrZy1jb25maWcsIHBrZy1jb25maWcpCistLSAKKzEuOS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMi4xLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTIuMS42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNjI4ODhkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3N5c3N0YXQvc3lzc3RhdF8xMi4xLjYuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMCArMCwwIEBACi1yZXF1aXJlIHN5c3N0YXQuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWEyM2E3NGIzZjRjYWY5NjE2MjMwNzg5ZDk0MjE3YWNiIgotCi1TUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1JbmNsdWRlLW5lZWRlZC1oZWFkZXJzLWV4cGxpY2l0bHkucGF0Y2ggXAotCSAgICBmaWxlOi8vMDAwMS1GaXgtMjMyLU1lbW9yeS1jb3JydXB0aW9uLWJ1Zy1kdWUtdG8tSW50ZWdlci1PdmVyZmxvLnBhdGNoIFwKLSIKLQotU1JDX1VSSVttZDVzdW1dID0gImQ4ZTNiYmI5Yzg3M2RkMzcwZjZkMzM2NjRlMzI2NTcwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImY3NTJmM2M0MDYxNTNhNmZjNDQ2NDk2ZjExMDI4NzI1MDVhY2UzZjA5MzFkOTc1YzFkNjY0YzgxZWMwOWYxMjkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC9zeXNzdGF0L3N5c3N0YXRfMTIuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzEyLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yYTkwZjg5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvc3lzc3RhdC9zeXNzdGF0XzEyLjIuMS5iYgpAQCAtMCwwICsxLDggQEAKK3JlcXVpcmUgc3lzc3RhdC5pbmMKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTIzYTc0YjNmNGNhZjk2MTYyMzA3ODlkOTQyMTdhY2IiCisKK1NSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5pbi1yZW1vdmUtY2hlY2stZm9yLWNoa2NvbmZpZy5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjlkZmZmNWZhYzI0ZTM1YmQ5MmZiNzg5NmRlYmYyZmZiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhlZGIwZTE5YjUxNGFjNTYwYTA5OGEwMjkzM2E0NzM1Yjg4MTI5NmQ2MTAxNGRiODliZjgwZjA1ZGQ3YTQ3MzIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMzIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90YXIvdGFyXzEuMzIuYmIKaW5kZXggMThmMDliNS4uZWJlNmNiMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGFyL3Rhcl8xLjMyLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3Rhci90YXJfMS4zMi5iYgpAQCAtMjIsNiArMjIsOCBAQAogCiBFWFRSQV9PRUNPTkYgKz0gIkRFRkFVTFRfUk1UX0RJUj0ke3NiaW5kaXJ9IgogCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAidGFyX2N2X3BhdGhfUlNIPW5vIgorCiAjIExldCBhY2xvY2FsIHVzZSB0aGUgcmVsYXRpdmUgcGF0aCBmb3IgdGhlIG00IGZpbGUgcmF0aGVyIHRoYW4gdGhlCiAjIGFic29sdXRlIHNpbmNlIHRhciBoYXMgYSBsb3Qgb2YgbTQgZmlsZXMsIG90aGVyd2lzZSB0aGVyZSBtaWdodAogIyBiZSBhbiAiQXJndW1lbnQgbGlzdCB0b28gbG9uZyIgZXJyb3Igd2hlbiBpdCBpcyBidWlsdCBpbiBhIGxvbmcvZGVlcApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMDAwMS1SZW1vdmUtZmdldHMtZXh0ZXJuLWRlY2xhcmF0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVycy03LjYvMDAwMS1SZW1vdmUtZmdldHMtZXh0ZXJuLWRlY2xhcmF0aW9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg4YzhkOWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzLTcuNi8wMDAxLVJlbW92ZS1mZ2V0cy1leHRlcm4tZGVjbGFyYXRpb24ucGF0Y2gKQEAgLTAsMCArMSw0MyBAQAorRnJvbSAyNGQxMDkxOWI0YmM1ZTM3YTJkODBiMjc0ZDJjZDJlZTc3YjAzNTQ5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTMgSmFuIDIwMjAgMTQ6MjU6NDcgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gUmVtb3ZlIGZnZXRzKCkgZXh0ZXJuIGRlY2xhcmF0aW9uCisKK1RoZXNlIHNvdXJjZXMgYWxyZWFkeSBpbmNsdWRlIDxzdGRpby5oPiB3aGljaCBzaG91bGQgYnJpbmcgdGhlIGNvcnJlY3QKK2RlY2xhcmF0aW9uCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIGhvc3RzX2FjY2Vzcy5jIHwgMSAtCisgbWlzYy5jICAgICAgICAgfCAyIC0tCisgMiBmaWxlcyBjaGFuZ2VkLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaG9zdHNfYWNjZXNzLmMgYi9ob3N0c19hY2Nlc3MuYworaW5kZXggMzI5YjM1ZS4uMDEzM2U1ZSAxMDA2NDQKKy0tLSBhL2hvc3RzX2FjY2Vzcy5jCisrKysgYi9ob3N0c19hY2Nlc3MuYworQEAgLTQ0LDcgKzQ0LDYgQEAgc3RhdGljIGNoYXIgc2Njc2lkW10gPSAiQCgjKSBob3N0c19hY2Nlc3MuYyAxLjIxIDk3LzAyLzEyIDAyOjEzOjIyIjsKKyAjaW5jbHVkZSA8bmV0ZGIuaD4KKyAjZW5kaWYKKyAKKy1leHRlcm4gY2hhciAqZmdldHMoKTsKKyBleHRlcm4gaW50IGVycm5vOworIAorICNpZm5kZWYJSU5BRERSX05PTkUKK2RpZmYgLS1naXQgYS9taXNjLmMgYi9taXNjLmMKK2luZGV4IDc0Y2EzMTkuLjlhNWU3M2EgMTAwNjQ0CistLS0gYS9taXNjLmMKKysrKyBiL21pc2MuYworQEAgLTE4LDggKzE4LDYgQEAgc3RhdGljIGNoYXIgc2Njc2ljW10gPSAiQCgjKSBtaXNjLmMgMS4yIDk2LzAyLzExIDE3OjAxOjI5IjsKKyAKKyAjaW5jbHVkZSAidGNwZC5oIgorIAorLWV4dGVybiBjaGFyICpmZ2V0cygpOworLQorICNpZm5kZWYJSU5BRERSX05PTkUKKyAjZGVmaW5lCUlOQUREUl9OT05FCSgtMSkJCS8qIFhYWCBzaG91bGQgYmUgMHhmZmZmZmZmZiAqLworICNlbmRpZgorLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGNwLXdyYXBwZXJzL3RjcC13cmFwcGVyc183LjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYgppbmRleCBiZDBjODRjLi5lOTAzYjlkIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90Y3Atd3JhcHBlcnMvdGNwLXdyYXBwZXJzXzcuNi5iYgpAQCAtNDksNiArNDksNyBAQAogICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1jbGFuZy5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly9maXhfd2FybmluZ3MucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vZml4X3dhcm5pbmdzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJlbW92ZS1mZ2V0cy1leHRlcm4tZGVjbGFyYXRpb24ucGF0Y2ggXAogICAgICAgICAgICAiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJlNmZhMjVmNzEyMjZkMDkwZjM0ZGUzZjZiMTIyZmI1YSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGkyaHRtbC9maWxlcy8wMDAxLUFsbG93LWNvbXBpbGluZy1vdXQtb2Ytc291cmNlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aTJodG1sL2ZpbGVzLzAwMDEtQWxsb3ctY29tcGlsaW5nLW91dC1vZi1zb3VyY2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDBjZjAyNWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aTJodG1sL2ZpbGVzLzAwMDEtQWxsb3ctY29tcGlsaW5nLW91dC1vZi1zb3VyY2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Gcm9tOiBPbGFmIE1hbmRlbCA8by5tYW5kZWxAbWVubG9zeXN0ZW1zLmNvbT4KLURhdGU6IEZyaSwgMjEgT2N0IDIwMTYgMTM6MDQ6NDQgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWxsb3cgY29tcGlsaW5nIG91dC1vZi1zb3VyY2UKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBvZiBbc3ZuOi8vc3ZuLnN2LmdudS5vcmcvdGV4aW5mby90cnVuayByMzYwMl0KLS0tLQotIE1ha2VmaWxlLmFtIHwgMiArLQotIE1ha2VmaWxlLmluIHwgMiArLQotIDIgZmlsZXMgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuYW0gYi9NYWtlZmlsZS5hbQotaW5kZXggMzQ0NzQ2My4uYzliNWI1YyAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmFtCi0rKysgYi9NYWtlZmlsZS5hbQotQEAgLTIwOCw3ICsyMDgsNyBAQCBpMThuL2VuLnRobCBpMThuLzogJChwb19kb2N1bWVudF9kaXIpL3BvX2RvY3VtZW50LyQoUEFDS0FHRSlfZG9jdW1lbnQucG90Ci0gCSAgZG9uZTsgXAotIAkgIG1zZ2V4ZWMgLWkgJDwgIiQoc3JjZGlyKS9nZXR0ZXh0X3RvX3NlcGFyYXRlZC5wbCIgfCAiJChzcmNkaXIpL3NlcGFyYXRlZF90b19oYXNoLnBsIiBlbiA+IGkxOG4vZW4udGhsOyBcCi0gCWVsc2UgXAotLQkgIGNwIC1wIGkxOG5fcmVmLyoudGhsIGkxOG47IFwKLSsJICBjcCAtcCAiJChzcmNkaXIpL2kxOG5fcmVmLyIqLnRobCBpMThuOyBcCi0gCWZpCi0gCi0gaTE4bl9yZWY6Ci1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUuaW4gYi9NYWtlZmlsZS5pbgotaW5kZXggNDI2NGIzNy4uYTEzZjg0ZCAxMDA2NDQKLS0tLSBhL01ha2VmaWxlLmluCi0rKysgYi9NYWtlZmlsZS5pbgotQEAgLTExMjYsNyArMTEyNiw3IEBAIGkxOG4vZW4udGhsIGkxOG4vOiAkKHBvX2RvY3VtZW50X2RpcikvcG9fZG9jdW1lbnQvJChQQUNLQUdFKV9kb2N1bWVudC5wb3QKLSAJICBkb25lOyBcCi0gCSAgbXNnZXhlYyAtaSAkPCAiJChzcmNkaXIpL2dldHRleHRfdG9fc2VwYXJhdGVkLnBsIiB8ICIkKHNyY2Rpcikvc2VwYXJhdGVkX3RvX2hhc2gucGwiIGVuID4gaTE4bi9lbi50aGw7IFwKLSAJZWxzZSBcCi0tCSAgY3AgLXAgaTE4bl9yZWYvKi50aGwgaTE4bjsgXAotKwkgIGNwIC1wICIkKHNyY2RpcikvaTE4bl9yZWYvIioudGhsIGkxOG47IFwKLSAJZmkKLSAKLSBpMThuX3JlZjoKLS0tIAotMi4xLjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aTJodG1sL3RleGkyaHRtbF81LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpMmh0bWwvdGV4aTJodG1sXzUuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWZkMTI1Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpMmh0bWwvdGV4aTJodG1sXzUuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiUGVybCBzY3JpcHQgdGhhdCBjb252ZXJ0cyBUZXhpbmZvIHRvIEhUTUwiCi1IT01FUEFHRSAgICA9ICJodHRwOi8vd3d3Lm5vbmdudS5vcmcvdGV4aTJodG1sLyIKLVNFQ1RJT04gICAgID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFICAgICA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIgotCi1QUiA9ICJyMiIKLQotU1JDX1VSSSAgICAgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS90ZXhpMmh0bWwvJHtCUE59LSR7UFZ9LnRhci5iejIgXAotICAgICAgICAgICAgICAgZmlsZTovLzAwMDEtQWxsb3ctY29tcGlsaW5nLW91dC1vZi1zb3VyY2UucGF0Y2ggXAotICAgICAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZjE1YWM4NzZmY2RjOGJlODY1YjE2NTM1ZjQ4MGFhNTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZThhOThiMGVlMjBjNDk1YTZhYjg5NDM5OGEwNjVlZjU4MDI3MmRiZDVhMTViMWIxOWU4YmQxYmM4OWQ5ZjlmYSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgewotCSMgYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZSB1cGRhdGVzIHBvL01ha2VmaWxlLmluLmluLCB3ZSBhbHNvIG5lZWQKLQkjIHVwZGF0ZSBwb19kb2N1bWVudC4KLQljcCAtZiAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gJHtTfS9wb19kb2N1bWVudC8KLQljcCAtZiAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gJHtTfS9wb19tZXNzYWdlcy8KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotCXNlZCAtaSAtZSAnMXMsIyEuKnBlcmwsIyEgJHtVU1JCSU5QQVRIfS9lbnYgcGVybCwnICR7RH0ke2JpbmRpcn0vdGV4aTJodG1sCi19Ci0KLUZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS90ZXhpbmZvIgotCi1SREVQRU5EU18ke1BOfSA9ICJwZXJsIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby1kdW1teS1uYXRpdmUvdGV4aW5mby1kdW1teS1uYXRpdmUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvLWR1bW15LW5hdGl2ZS90ZXhpbmZvLWR1bW15LW5hdGl2ZS5iYgppbmRleCAxMjU0YmM4Li5lYzA0YmZlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvLWR1bW15LW5hdGl2ZS90ZXhpbmZvLWR1bW15LW5hdGl2ZS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvLWR1bW15LW5hdGl2ZS90ZXhpbmZvLWR1bW15LW5hdGl2ZS5iYgpAQCAtOSwxOSArOSwyMSBAQAogCiBTID0gIiR7V09SS0RJUn0iCiAKLU5BVElWRV9QQUNLQUdFX1BBVEhfU1VGRklYID0gIi8ke1BOfSIKLQogaW5oZXJpdCBuYXRpdmUKIAorIworIyBUbyBhdm9pZCB0ZXhpbmZvLWR1bW15LW5hdGl2ZSBhbmQgdGV4aW5mby1uYXRpdmUgY29uZmxpY3Rpbmcgd2UgaW5zdGFsbCB0byBiYXNlX2JpbmRpcgorIyB3aGljaCBpcyBsYXRlciBpbiBQQVRIIHRoYW4gYmluZGlyIHdoZXJlIHRleGluZm8tbmF0aXZlIGluc3RhbGxzCisjCiBkb19pbnN0YWxsX25hbWUoKSB7Ci0gICAgRklMRU5BTUU9IiR7RH0ke2JpbmRpcn0vJDEiCisgICAgRklMRU5BTUU9IiR7RH0ke2Jhc2VfYmluZGlyfS8kMSIKICAgICAjIFVzaW5nIGxuIGNhdXNlcyBwcm9ibGVtcyB3aXRoIHJtX3dvcmsKICAgICBjcCAtVCAiJHtTfS90ZW1wbGF0ZS5weSIgIiRGSUxFTkFNRSIKICAgICBjaG1vZCAreCAkRklMRU5BTUUKIH0KIAogZG9faW5zdGFsbCgpIHsKLSAgICBta2RpciAtcCAiJHtEfSR7YmluZGlyfSIKKyAgICBta2RpciAtcCAiJHtEfSR7YmFzZV9iaW5kaXJ9IgogICAgIGZvciBpIGluIG1ha2VpbmZvIHBvZDJ0ZXhpIHRleGkyZHZpIHBkZnRleGkyZHZpIHRleGluZGV4IHRleGkycGRmIFwKICAgICAgICAgICAgICB0eGl4bWwydGV4aSB0ZXhpMmFueSBpbnN0YWxsLWluZm8gZ2luc3RhbGwtaW5mbyBcCiAgICAgICAgICAgICAgdXBkYXRlLWluZm8tZGlyOyBkbwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvLzAwMDEtVW5zZXQtbmVlZF9jaGFyc2V0X2FsaWFzLXdoZW4tYnVpbGRpbmctZm9yLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzczMzhhYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vMDAwMS1VbnNldC1uZWVkX2NoYXJzZXRfYWxpYXMtd2hlbi1idWlsZGluZy1mb3ItbXVzbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gYjk1NjVkYzJmZTBjNGY3ZGFhZWM5MWI3ZTgzYmM3MzEzZGVlMmY0YSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDEzIEFwciAyMDE1IDE3OjAyOjEzIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVuc2V0IG5lZWRfY2hhcnNldF9hbGlhcyB3aGVuIGJ1aWxkaW5nIGZvciBtdXNsCi0KLWxvY2FsY2hhcnNldCB1c2VzIGFjX2N2X2dudV9saWJyYXJ5XzJfMSBmcm9tIGdsaWJjMjEubTQKLXdoaWNoIGFjdHVhbGx5IHNob3VkbCBiZSBmaXhlZCBpbiBnbnVsaWIgYW5kIHRoZW4gYWxsIGRvd25zdHJlYW0KLXByb2plY3RzIHdpbGwgZ2V0IGl0IGV2ZW50dWFsbHkuIEZvciBub3cgd2UgYXBwbHkgdGhlIGZpeCB0bwotY29yZXV0aWxzCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi0gbGliL2dudWxpYi5tayB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotSW5kZXg6IHRleGluZm8tNS4yL2dudWxpYi9saWIvTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0ZXhpbmZvLTUuMi5vcmlnL2dudWxpYi9saWIvTWFrZWZpbGUuYW0KLSsrKyB0ZXhpbmZvLTUuMi9nbnVsaWIvbGliL01ha2VmaWxlLmFtCi1AQCAtMzc4LDcgKzM3OCw3IEBAIGluc3RhbGwtZXhlYy1sb2NhbGNoYXJzZXQ6IGFsbC1sb2NhbAotIAkgIGNhc2UgJyQoaG9zdF9vcyknIGluIFwKLSAJICAgIGRhcndpbls1Nl0qKSBcCi0gCSAgICAgIG5lZWRfY2hhcnNldF9hbGlhcz10cnVlIDs7IFwKLS0JICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyopIFwKLSsJICAgIGRhcndpbiogfCBjeWd3aW4qIHwgbWluZ3cqIHwgcHczMiogfCBjZWdjYyogfCBsaW51eC1tdXNsKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9ZmFsc2UgOzsgXAotIAkgICAgKikgXAotIAkgICAgICBuZWVkX2NoYXJzZXRfYWxpYXM9dHJ1ZSA7OyBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2gKaW5kZXggZjQxODQzOS4uMGQ2YmJhZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gZTg5YjFjNTdkNzZmNWNmNWFjYmIwZDAxODczNzRmN2E3N2JjZTFlMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNjNhODAzZWFkMzY1NjM1MzMyOWE4MDE4NDZhOWEzYmViNzIxMGM0NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEVkd2luIFBsYXVjaHUgPGVkd2luLnBsYXVjaHUuY2FtYWNob0BpbnRlbC5jb20+CiBEYXRlOiBUdWUsIDI5IE5vdiAyMDE2IDEzOjQzOjI0IC0wNjAwCiBTdWJqZWN0OiBbUEFUQ0hdIGRvbnQtZGVwZW5kLW9uLWhlbHAybWFuCkBAIC03LDI5ICs3LDMwIEBACiAKIFNpZ25lZC1vZmYtYnk6IE1hcmtvIExpbmRxdmlzdCA8Y2F6Zmk3NEBnbWFpbC5jb20+CiBTaWduZWQtb2ZmLWJ5OiBFZHdpbiBQbGF1Y2h1IDxlZHdpbi5wbGF1Y2h1LmNhbWFjaG9AaW50ZWwuY29tPgorCiAtLS0KICBkb2MvTWFrZWZpbGUuYW0gfCAgMiArLQogIG1hbi9NYWtlZmlsZS5hbSB8IDEyICsrKysrKy0tLS0tLQogIDIgZmlsZXMgY2hhbmdlZCwgNyBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZG9jL01ha2VmaWxlLmFtIGIvZG9jL01ha2VmaWxlLmFtCi1pbmRleCAzOWRiODM0Li4xYmIyYTRmCitpbmRleCA3MzI4MzNlLi4wNDFjYjliIDEwMDY0NAogLS0tIGEvZG9jL01ha2VmaWxlLmFtCiArKysgYi9kb2MvTWFrZWZpbGUuYW0KLUBAIC0zOCw3ICszOCw3IEBAIHJlZmNhcmRfZmlsZXMgPSByZWZjYXJkL01ha2VmaWxlIHJlZmNhcmQvdHhpY21kY2hlY2sgXAorQEAgLTM3LDcgKzM3LDcgQEAgcmVmY2FyZF9maWxlcyA9IHJlZmNhcmQvTWFrZWZpbGUgcmVmY2FyZC90eGljbWRjaGVjayBcCiAgIyBJbmNsdWRlIG91ciB0ZXhpbmZvLnRleCwgbm90IEF1dG9tYWtlJ3MuCiAgRVhUUkFfRElTVCA9IGVwc2YudGV4IHRleGluZm8udGV4IFwKICAgICAgICAgICAgICAgZmRsLnRleGkgXAogLQkgICAgICQobWFuX01BTlMpICQoVFhJX1hMQVRFKSBcCiArCSAgICAgJChUWElfWExBVEUpIFwKLSAgICAgICAgICAgICAgJChyZWZjYXJkX2ZpbGVzKSB0ZXhpbmZvLXRleC10ZXN0LnRleGkgXAorICAgICAgICAgICAgICAkKHJlZmNhcmRfZmlsZXMpIFwKKyAJICAgICB0ZXhpbmZvLXRleC10ZXN0LnRleGkgdGV4aW5mby10ZXgtdGVzdC5XSURPV3MgXAogICAgICAgICAgICAgICB0ZXhpbmZvLWphLnRleCBzaG9ydC1zYW1wbGUtamEudGV4aQotIAogZGlmZiAtLWdpdCBhL21hbi9NYWtlZmlsZS5hbSBiL21hbi9NYWtlZmlsZS5hbQotaW5kZXggNmJmY2IzZC4uYTgyMGM5NgoraW5kZXggZDBjZDcyYy4uYTE5ZTUyYSAxMDA2NDQKIC0tLSBhL21hbi9NYWtlZmlsZS5hbQogKysrIGIvbWFuL01ha2VmaWxlLmFtCi1AQCAtMTMsMjQgKzEzLDI0IEBACitAQCAtMTEsMjcgKzExLDI3IEBACiAgIyBpbXBsaWVkIHdhcnJhbnR5IG9mIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4KICAKICAjIFRoZXNlIGFyZSBnZW5lcmF0ZWQgdXNpbmcgaGVscDJtYW4uCkBAIC00NywxMCArNDgsMTMgQEAKIC1tYW5fTUFOUyArPSBpbmZvLjUgdGV4aW5mby41CiArI21hbl9NQU5TICs9IGluZm8uNSB0ZXhpbmZvLjUKICAKLSAjIFRoaXMgaXMgZ2VuZXJhdGVkIGJ5IHBvZDJtYW4sIGJ1dCBsZXQncyBqdXN0IHJ1biBpdCBieSBoYW5kLgogLW1hbl9NQU5TICs9IHBvZDJ0ZXhpLjEKICsjbWFuX01BTlMgKz0gcG9kMnRleGkuMQogIAorIHBvZDJ0ZXhpLjE6ICQodG9wX3NyY2RpcikvUG9kLVNpbXBsZS1UZXhpbmZvL3BvZDJ0ZXhpLnBsCisgCSQoUE9EMk1BTikgJCh0b3Bfc3JjZGlyKS9Qb2QtU2ltcGxlLVRleGluZm8vcG9kMnRleGkucGwgPiIkQCIKKyAKKyAKICAjIFRoZXNlIGFyZSBqdXN0IC5zbydzIHRvIHRoZSBjb21tb24gcHJvZ3JhbS4KIC1tYW5fTUFOUyArPSB0ZXhpMmFueS4xIHRleGkycGRmLjEgcGRmdGV4aTJkdmkuMQogKyNtYW5fTUFOUyArPSB0ZXhpMmFueS4xIHRleGkycGRmLjEgcGRmdGV4aTJkdmkuMQpAQCAtNjAsNiArNjQsMyBAQAogIAogICMgTWFpbnRhaW5lcnMgc2hvdWxkIGJlIGFibGUgdG8gcmVnZW5lcmF0ZS4KICBNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9ICQobWFuX01BTlMpCi0tLSAKLTIuOS4zCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby9saW5rLXppcC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby9saW5rLXppcC5wYXRjaAppbmRleCAwYjZlOWZkLi4xNWMwMzBjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vbGluay16aXAucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL2xpbmstemlwLnBhdGNoCkBAIC0xLDE2ICsxLDIzIEBACi1pbnN0YWxsLWluZm8gdXNlcyBzeW1ib2xzIGZyb20gemxpYiBzbyBtdXN0IGxpbmsgYWdhaW5zdCBpdC4KK0Zyb20gYzEwMDIxMzgwMzNmY2NjYjJkMWFiZmM0MWY1YzJlNDZjODM2ZjdhMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvc2h1YSBMb2NrIDxqb3NoQGxpbnV4LmludGVsLmNvbT4KK0RhdGU6IE1vbiwgMjkgSnVsIDIwMTMgMTU6MDI6MzQgLTA3MDAKK1N1YmplY3Q6IFtQQVRDSF0gaW5zdGFsbC1pbmZvIHVzZXMgc3ltYm9scyBmcm9tIHpsaWIgc28gbXVzdCBsaW5rIGFnYWluc3QgaXQuCiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogCiBTaWduZWQtb2ZmLWJ5OiBKb3NodWEgTG9jayA8am9zaEBsaW51eC5pbnRlbC5jb20+CiAKLUluZGV4OiB0ZXhpbmZvLTUuMS9pbnN0YWxsLWluZm8vTWFrZWZpbGUuYW0KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB0ZXhpbmZvLTUuMS5vcmlnL2luc3RhbGwtaW5mby9NYWtlZmlsZS5hbQotKysrIHRleGluZm8tNS4xL2luc3RhbGwtaW5mby9NYWtlZmlsZS5hbQotQEAgLTM0LDQgKzM0LDQgQEAgQU1fQ1BQRkxBR1MgPSAJCQkJCVwKKy0tLQorIGluc3RhbGwtaW5mby9NYWtlZmlsZS5hbSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2luc3RhbGwtaW5mby9NYWtlZmlsZS5hbSBiL2luc3RhbGwtaW5mby9NYWtlZmlsZS5hbQoraW5kZXggOWJjZmY3MS4uNjgyNDdmOSAxMDA2NDQKKy0tLSBhL2luc3RhbGwtaW5mby9NYWtlZmlsZS5hbQorKysrIGIvaW5zdGFsbC1pbmZvL01ha2VmaWxlLmFtCitAQCAtMzMsNCArMzMsNCBAQCBBTV9DUFBGTEFHUyA9IAkJCQkJXAogICAgLUkkKHRvcF9zcmNkaXIpL2dudWxpYi9saWIJCQlcCiAgICAtSSQodG9wX2J1aWxkZGlyKS9nbnVsaWIvbGliCQkJXAogICAgLURMT0NBTEVESVI9XCIkKGxvY2FsZWRpcilcIgotLUxEQUREID0gJCh0b3BfYnVpbGRkaXIpL2dudWxpYi9saWIvbGliZ251LmEgJChMSUJJTlRMKQotK0xEQUREID0gJCh0b3BfYnVpbGRkaXIpL2dudWxpYi9saWIvbGliZ251LmEgJChMSUJJTlRMKSAtbHoKKy1MREFERCA9ICQodG9wX2J1aWxkZGlyKS9nbnVsaWIvbGliL2xpYmdudS5hICQoTElCSU5UTCkgJChMSUJUSFJFQUQpCisrTERBREQgPSAkKHRvcF9idWlsZGRpcikvZ251bGliL2xpYi9saWJnbnUuYSAkKExJQklOVEwpICQoTElCVEhSRUFEKSAtbHoKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby90ZXhpbmZvLTQuMTItemxpYi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RleGluZm8vdGV4aW5mby90ZXhpbmZvLTQuMTItemxpYi5wYXRjaAppbmRleCBmMjUzNTJjLi5mNzIwOTdlIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm8vdGV4aW5mby00LjEyLXpsaWIucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvL3RleGluZm8tNC4xMi16bGliLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSBmZTRmMDA0NTk2MDFlZmUwY2ZhNzVkOTI3NDlhMzIyMzc4MDBhNTMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzZDNiNjZjZjM5ODg1M2M2NjZlNzI0YzNkYmNjMzdkNTNhMjI0MGQ1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogRWR3aW4gUGxhdWNodSA8ZWR3aW4ucGxhdWNodS5jYW1hY2hvQGludGVsLmNvbT4KIERhdGU6IFR1ZSwgMjkgTm92IDIwMTYgMTI6Mjc6MTcgLTA2MDAKIFN1YmplY3Q6IFtQQVRDSF0gdGV4aW5mby00LjEyLXpsaWIKQEAgLTcsMTYgKzcsMTcgQEAKIAogU2lnbmVkLW9mZi1ieTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEVkd2luIFBsYXVjaHUgPGVkd2luLnBsYXVjaHUuY2FtYWNob0BpbnRlbC5jb20+CisKIC0tLQotIGluc3RhbGwtaW5mby9NYWtlZmlsZS5pbiAgICB8IDEyICsrLS0tLS0KLSBpbnN0YWxsLWluZm8vaW5zdGFsbC1pbmZvLmMgfCA3OSArKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLS0tLS0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDQ5IGluc2VydGlvbnMoKyksIDQyIGRlbGV0aW9ucygtKQorIGluc3RhbGwtaW5mby9NYWtlZmlsZS5pbiAgICB8ICAyICstCisgaW5zdGFsbC1pbmZvL2luc3RhbGwtaW5mby5jIHwgNzkgKysrKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLQorIDIgZmlsZXMgY2hhbmdlZCwgNDggaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9pbnN0YWxsLWluZm8vTWFrZWZpbGUuaW4gYi9pbnN0YWxsLWluZm8vTWFrZWZpbGUuaW4KLWluZGV4IDgzN2QwMjAuLmJhOTY1NzkgMTAwNjQ0CitpbmRleCBjOTI0NTA5Li43NDZkZjA1IDEwMDY0NAogLS0tIGEvaW5zdGFsbC1pbmZvL01ha2VmaWxlLmluCiArKysgYi9pbnN0YWxsLWluZm8vTWFrZWZpbGUuaW4KLUBAIC0yMTYsNyArMjA4LDcgQEAgYW1fX2luc3RhbGxkaXJzID0gIiQoREVTVERJUikkKGJpbmRpcikiICIkKERFU1RESVIpJChiaW5kaXIpIgorQEAgLTIxOCw3ICsyMTgsNyBAQCBhbV9faW5zdGFsbGRpcnMgPSAiJChERVNURElSKSQoYmluZGlyKSIgIiQoREVTVERJUikkKGJpbmRpcikiCiAgUFJPR1JBTVMgPSAkKGJpbl9QUk9HUkFNUykKICBhbV9naW5zdGFsbF9pbmZvX09CSkVDVFMgPSBpbnN0YWxsLWluZm8uJChPQkpFWFQpCiAgZ2luc3RhbGxfaW5mb19PQkpFQ1RTID0gJChhbV9naW5zdGFsbF9pbmZvX09CSkVDVFMpCkBAIC0yNCwxMiArMjUsMTIgQEAKICtnaW5zdGFsbF9pbmZvX0xEQUREID0gJChMREFERCkgLWx6CiAgYW1fX0RFUEVOREVOQ0lFU18xID0KICBnaW5zdGFsbF9pbmZvX0RFUEVOREVOQ0lFUyA9ICQodG9wX2J1aWxkZGlyKS9nbnVsaWIvbGliL2xpYmdudS5hIFwKLSAJJChhbV9fREVQRU5ERU5DSUVTXzEpCisgCSQoYW1fX0RFUEVOREVOQ0lFU18xKSAkKGFtX19ERVBFTkRFTkNJRVNfMSkKIGRpZmYgLS1naXQgYS9pbnN0YWxsLWluZm8vaW5zdGFsbC1pbmZvLmMgYi9pbnN0YWxsLWluZm8vaW5zdGFsbC1pbmZvLmMKLWluZGV4IGU1ODE4OWMuLjg2MTc3ODcgMTAwNjQ0CitpbmRleCAyMWY0ZmUzLi5hN2FiYTgyIDEwMDY0NAogLS0tIGEvaW5zdGFsbC1pbmZvL2luc3RhbGwtaW5mby5jCiArKysgYi9pbnN0YWxsLWluZm8vaW5zdGFsbC1pbmZvLmMKLUBAIC0yMiw2ICsyMiw3IEBACitAQCAtMTksNiArMTksNyBAQAogICNpbmNsdWRlIDxnZXRvcHQuaD4KICAjaW5jbHVkZSA8cmVnZXguaD4KICAjaW5jbHVkZSA8YXJnei5oPgpAQCAtMzcsNyArMzgsNyBAQAogIAogICNkZWZpbmUgVEFCX1dJRFRIIDgKICAKLUBAIC02ODQsMTUgKzY4NSwxNSBAQCBUaGUgZmlyc3QgdGltZSB5b3UgaW52b2tlIEluZm8geW91IHN0YXJ0IG9mZiBsb29raW5nIGF0IHRoaXMgbm9kZS5cblwKK0BAIC02ODEsMTUgKzY4MiwxNSBAQCBUaGUgZmlyc3QgdGltZSB5b3UgaW52b2tlIEluZm8geW91IHN0YXJ0IG9mZiBsb29raW5nIGF0IHRoaXMgbm9kZS5cblwKICAgICAKICAgICBSZXR1cm4gZWl0aGVyIHN0ZGluIHJlYWRpbmcgdGhlIGZpbGUsIG9yIGEgbm9uLXN0ZGluIHBpcGUgcmVhZGluZwogICAgIHRoZSBvdXRwdXQgb2YgdGhlIGNvbXByZXNzaW9uIHByb2dyYW0uICAqLwpAQCAtNTYsNyArNTcsNyBAQAogIAogICAgLyogV2UgbGV0IHRoZW0gcGFzcyBOVUxMIGlmIHRoZXkgZG9uJ3Qgd2FudCB0aGlzIGluZm8sIGJ1dCBpdCdzIGVhc2llcgogICAgICAgdG8gYWx3YXlzIGRldGVybWluZSBpdC4gICovCi1AQCAtNzAwLDQ4ICs3MDEsNDggQEAgb3Blbl9wb3NzaWJseV9jb21wcmVzc2VkX2ZpbGUgKGNoYXIgKmZpbGVuYW1lLAorQEAgLTY5Nyw0OCArNjk4LDQ4IEBAIG9wZW5fcG9zc2libHlfY29tcHJlc3NlZF9maWxlIChjaGFyICpmaWxlbmFtZSwKICAgICAgb3BlbmVkX2ZpbGVuYW1lID0gJmxvY2FsX29wZW5lZF9maWxlbmFtZTsKICAKICAgICpvcGVuZWRfZmlsZW5hbWUgPSBmaWxlbmFtZTsKQEAgLTExMyw3ICsxMTQsNyBAQAogICAgICB9CiAgI2VuZGlmIC8qIF9fTVNET1NfXyAqLwogICAgaWYgKCFmKQotQEAgLTc1Nyw3ICs3NTgsNyBAQCBvcGVuX3Bvc3NpYmx5X2NvbXByZXNzZWRfZmlsZSAoY2hhciAqZmlsZW5hbWUsCitAQCAtNzU0LDcgKzc1NSw3IEBAIG9wZW5fcG9zc2libHlfY29tcHJlc3NlZF9maWxlIChjaGFyICpmaWxlbmFtZSwKICAgICAgICAgICAgKCpjcmVhdGVfY2FsbGJhY2spIChmaWxlbmFtZSk7CiAgCiAgICAgICAgICAgIC8qIEFuZCB0cnkgb3BlbmluZyBpdCBhZ2Fpbi4gICovCkBAIC0xMjIsNyArMTIzLDcgQEAKICAgICAgICAgICAgaWYgKCFmKQogICAgICAgICAgICAgIHJldHVybiAwOwogICAgICAgICAgfQotQEAgLTc2NywyNiArNzY4LDI2IEBAIG9wZW5fcG9zc2libHlfY29tcHJlc3NlZF9maWxlIChjaGFyICpmaWxlbmFtZSwKK0BAIC03NjQsMjYgKzc2NSwyNiBAQCBvcGVuX3Bvc3NpYmx5X2NvbXByZXNzZWRfZmlsZSAoY2hhciAqZmlsZW5hbWUsCiAgCiAgICAvKiBSZWFkIGZpcnN0IGZldyBieXRlcyBvZiBmaWxlIHJhdGhlciB0aGFuIHJlbHlpbmcgb24gdGhlIGZpbGVuYW1lLgogICAgICAgSWYgdGhlIGZpbGUgaXMgc2hvcnRlciB0aGFuIHRoaXMgaXQgY2FuJ3QgYmUgdXNhYmxlIGFueXdheS4gICovCkBAIC0xNTgsNyArMTU5LDcgQEAKICAgICAgICAgICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgICAgICAgICBnb3RvIGRldGVybWluZV9maWxlX3R5cGU7IC8qIHN1Y2Nlc3MgKi8KICAgICAgICAgICAgICB9Ci1AQCAtODU3LDM1ICs4NTgsNDAgQEAgZGV0ZXJtaW5lX2ZpbGVfdHlwZToKK0BAIC04NTQsMzUgKzg1NSw0MCBAQCBkZXRlcm1pbmVfZmlsZV90eXBlOgogICAgICAqY29tcHJlc3Npb25fcHJvZ3JhbSA9IE5VTEw7CiAgCiAgICAvKiBTZWVrIGJhY2sgb3ZlciB0aGUgbWFnaWMgYnl0ZXMuICAqLwpAQCAtMjA2LDcgKzIwNyw3IEBACiAgICAgIH0KICAKICAgIHJldHVybiBmOwotQEAgLTkwNCw3ICs5MTAsOCBAQCByZWFkZmlsZSAoY2hhciAqZmlsZW5hbWUsIGludCAqc2l6ZXAsCitAQCAtOTAxLDcgKzkwNyw4IEBAIHJlYWRmaWxlIChjaGFyICpmaWxlbmFtZSwgaW50ICpzaXplcCwKICAgICAgdm9pZCAoKmNyZWF0ZV9jYWxsYmFjaykgKGNoYXIgKiksIGNoYXIgKipvcGVuZWRfZmlsZW5hbWUsCiAgICAgIGNoYXIgKipjb21wcmVzc2lvbl9wcm9ncmFtKQogIHsKQEAgLTIxNiw3ICsyMTcsNyBAQAogICAgaW50IGZpbGxlZCA9IDA7CiAgICBpbnQgZGF0YV9zaXplID0gODE5MjsKICAgIGNoYXIgKmRhdGEgPSB4bWFsbG9jIChkYXRhX3NpemUpOwotQEAgLTkxMiwxNCArOTE5LDIwIEBAIHJlYWRmaWxlIChjaGFyICpmaWxlbmFtZSwgaW50ICpzaXplcCwKK0BAIC05MDksMTQgKzkxNiwyMCBAQCByZWFkZmlsZSAoY2hhciAqZmlsZW5hbWUsIGludCAqc2l6ZXAsCiAgICAvKiBJZiB0aGV5IHBhc3NlZCB0aGUgc3BhY2UgZm9yIHRoZSBmaWxlIG5hbWUgdG8gcmV0dXJuLCB1c2UgaXQuICAqLwogICAgZiA9IG9wZW5fcG9zc2libHlfY29tcHJlc3NlZF9maWxlIChmaWxlbmFtZSwgY3JlYXRlX2NhbGxiYWNrLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcGVuZWRfZmlsZW5hbWUsCkBAIC0yMzksNyArMjQwLDcgQEAKICAgICAgICBpZiAobnJlYWQgPCAwKQogICAgICAgICAgcmV0dXJuIDA7CiAgICAgICAgaWYgKG5yZWFkID09IDApCi1AQCAtOTM4LDggKzk1MSwxMCBAQCByZWFkZmlsZSAoY2hhciAqZmlsZW5hbWUsIGludCAqc2l6ZXAsCitAQCAtOTM1LDggKzk0OCwxMCBAQCByZWFkZmlsZSAoY2hhciAqZmlsZW5hbWUsIGludCAqc2l6ZXAsCiAgICAvKiBXZSBuZWVkIHRvIGNsb3NlIHRoZSBzdHJlYW0sIHNpbmNlIG9uIHNvbWUgc3lzdGVtcyB0aGUgcGlwZSBjcmVhdGVkCiAgICAgICBieSBwb3BlbiBpcyBzaW11bGF0ZWQgYnkgYSB0ZW1wb3JhcnkgZmlsZSB3aGljaCBvbmx5IGdldHMgcmVtb3ZlZAogICAgICAgaW5zaWRlIHBjbG9zZS4gICovCkBAIC0yNTEsNiArMjUyLDMgQEAKICAKICAgICpzaXplcCA9IGZpbGxlZDsKICAgIHJldHVybiBkYXRhOwotLS0gCi0yLjkuMwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTBlYWU3Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsOTIgKzAsMCBAQAotU1VNTUFSWSA9ICJEb2N1bWVudGF0aW9uIHN5c3RlbSBmb3Igb24tbGluZSBpbmZvcm1hdGlvbiBhbmQgcHJpbnRlZCBvdXRwdXQiCi1ERVNDUklQVElPTiA9ICJUZXhpbmZvIGlzIGEgZG9jdW1lbnRhdGlvbiBzeXN0ZW0gdGhhdCBjYW4gcHJvZHVjZSBib3RoIFwKLW9ubGluZSBpbmZvcm1hdGlvbiBhbmQgcHJpbnRlZCBvdXRwdXQgZnJvbSBhIHNpbmdsZSBzb3VyY2UgZmlsZS4gVGhlIFwKLUdOVSBQcm9qZWN0IHVzZXMgdGhlIFRleGluZm8gZmlsZSBmb3JtYXQgZm9yIG1vc3Qgb2YgaXRzIGRvY3VtZW50YXRpb24uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL3RleGluZm8vIgotU0VDVElPTiA9ICJjb25zb2xlL3V0aWxzIgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKLQotUFJPVklERVNfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgdGV4aW5mby1yZXBsYWNlbWVudC1uYXRpdmUiCi0KLWRlZiBjb21wcmVzc19wa2coZCk6Ci0gICAgaWYgYmIuZGF0YS5pbmhlcml0c19jbGFzcygnY29tcHJlc3NfZG9jJywgZCk6Ci0gICAgICAgICBjb21wcmVzcyA9IGQuZ2V0VmFyKCJET0NfQ09NUFJFU1MiKQotICAgICAgICAgaWYgY29tcHJlc3MgPT0gImd6IjoKLSAgICAgICAgICAgICByZXR1cm4gImd6aXAiCi0gICAgICAgICBlbGlmIGNvbXByZXNzID09ICJiejIiOgotICAgICAgICAgICAgIHJldHVybiAiYnppcDIiCi0gICAgICAgICBlbGlmIGNvbXByZXNzID09ICJ4eiI6Ci0gICAgICAgICAgICAgcmV0dXJuICJ4eiIKLSAgICByZXR1cm4gIiIKLQotUkRFUEVORFNfaW5mbyArPSAiJHtAY29tcHJlc3NfcGtnKGQpfSIKLQotREVQRU5EUyA9ICJ6bGliIG5jdXJzZXMgdGV4aW5mby1yZXBsYWNlbWVudC1uYXRpdmUiCi1ERVBFTkRTX2NsYXNzLW5hdGl2ZSA9ICJ6bGliLW5hdGl2ZSBuY3Vyc2VzLW5hdGl2ZSIKLQotVEFSR0VUX1BBVENIID0gImZpbGU6Ly91c2VfaG9zdF9tYWtlZG9jLnBhdGNoIgotVEFSR0VUX1BBVENIX2NsYXNzLW5hdGl2ZSA9ICIiCi0KLVNSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS90ZXhpbmZvLyR7QlB9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly90ZXhpbmZvLTQuMTItemxpYi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlLW5hdGl2ZS10b29scy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9saW5rLXppcC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9kb250LWRlcGVuZC1vbi1oZWxwMm1hbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVuc2V0LW5lZWRfY2hhcnNldF9hbGlhcy13aGVuLWJ1aWxkaW5nLWZvci1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgJHtUQVJHRVRfUEFUQ0h9IFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI5NGU4ZjcxNDk4NzY3OTMwMzBlNTUxOGRkOGQ2ZTk1NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJkMzQyNzJlNDA0MmM0NjE4NmRkY2Q2NmJkNWQ5ODBjMGNhMTRmZjczNDQ0NDY4NmNjZjgxMzFmNmVjOGIxNDI3IgotCi10ZXhfdGV4aW5mbyA9ICJ0ZXhtZi90ZXgvdGV4aW5mbyIKLQotaW5oZXJpdCBnZXR0ZXh0IGF1dG90b29scyBtdWx0aWxpYl9zY3JpcHQKLQotTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfToke2JpbmRpcn0vdGV4aTJhbnkiCi0KLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi1JICR7U30vZ251bGliL200IgotCi1kb19jb25maWd1cmVfcHJlcGVuZCAoKSB7Ci0JIyBhdXRvdG9vbHNfZG9fY29uZmlndXJlIHVwZGF0ZXMgcG8vTWFrZWZpbGUuaW4uaW4sIHdlIGFsc28gbmVlZAotCSMgdXBkYXRlIHBvX2RvY3VtZW50LgotCWNwIC1mICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vZ2V0dGV4dC9wby9NYWtlZmlsZS5pbi5pbiAke1N9L3BvX2RvY3VtZW50LwotfQotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0JaWYgWyAtZCB0b29scyBdO3RoZW4KLQkJb2VfcnVubWFrZSAtQyB0b29scy9nbnVsaWIvbGliCi0JZmkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JbWtkaXIgLXAgJHtEfSR7ZGF0YWRpcn0vJHt0ZXhfdGV4aW5mb30KLQlpbnN0YWxsIC1wIC1tNjQ0ICR7U30vZG9jL3RleGluZm8udGV4ICR7U30vZG9jL3R4aS0/Py50ZXggJHtEfSR7ZGF0YWRpcn0vJHt0ZXhfdGV4aW5mb30KLQlzZWQgLWkgLWUgJzFzLCMhLipwZXJsLCMhICR7VVNSQklOUEFUSH0vZW52IHBlcmwsJyAke0R9JHtiaW5kaXJ9L3RleGkyYW55ICR7RH0ke2JpbmRpcn0vcG9kMnRleGkKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWluc3RhbGwgLW0gNzU1IGluZm8vbWFrZWRvYyAke0R9JHtiaW5kaXJ9Ci19Ci0KLVBBQ0tBR0VTICs9ICJpbmZvIGluZm8tZG9jIgotCi1GSUxFU19pbmZvID0gIiR7YmluZGlyfS9pbmZvICR7YmluZGlyfS9pbmZva2V5ICR7YmluZGlyfS9pbnN0YWxsLWluZm8iCi1GSUxFU19pbmZvLWRvYyA9ICIke2luZm9kaXJ9L2luZm8uaW5mbyogJHtpbmZvZGlyfS9kaXIgJHtpbmZvZGlyfS9pbmZvLSouaW5mbyogXAotICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEvaW5mby4xKiAke21hbmRpcn0vbWFuNS9pbmZvLjUqIFwKLSAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL2luZm9rZXkuMSogJHttYW5kaXJ9L21hbjEvaW5zdGFsbC1pbmZvLjEqIgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vbWFrZWluZm8gJHtiaW5kaXJ9L3RleGkqICR7YmluZGlyfS9wZGZ0ZXhpMmR2aSAke2JpbmRpcn0vcG9kMnRleGkgJHtkYXRhZGlyfS90ZXhpbmZvIgotUkRFUEVORFNfJHtQTn0gPSAicGVybCIKLUZJTEVTXyR7UE59LWRvYyA9ICIke2luZm9kaXJ9L3RleGluZm8qIFwKLSAgICAgICAgICAgICAgICAgICAke2RhdGFkaXJ9LyR7dGV4X3RleGluZm99IFwKLSAgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMSAke21hbmRpcn0vbWFuNSIKLQotIyBMaWUgYWJvdXQgcHJvdmlkaW5nIHRoZSBMb2NhbGU6OmdldHRleHRfeHMgbW9kdWxlLiBJdCBpcyBub3QgYWN0dWFsbHkgYnVpbHQsCi0jIGJ1dCB0aGUgY29kZSB3aWxsIHRlc3QgZm9yIGl0IGFuZCBpZiBub3QgZm91bmQgdXNlIExvY2FsZTo6Z2V0dGV4dF9wcCBpbnN0ZWFkLgotIyBIb3dldmVyLCB0aGlzIGNhdXNlcyBhIGZpbGUgZGVwZW5kZW5jeSBvbiBwZXJsKExvY2FsZTo6Z2V0dGV4dF94cykgdG8gYmUKLSMgZ2VuZXJhdGVkLCB3aGljaCBtdXN0IGJlIHNhdGlzZmllZC4KLVJQUk9WSURFU18ke1BOfSArPSAicGVybChMb2NhbGU6OmdldHRleHRfeHMpIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90ZXhpbmZvL3RleGluZm9fNi43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kNDIxYjc5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGV4aW5mby90ZXhpbmZvXzYuNy5iYgpAQCAtMCwwICsxLDkxIEBACitTVU1NQVJZID0gIkRvY3VtZW50YXRpb24gc3lzdGVtIGZvciBvbi1saW5lIGluZm9ybWF0aW9uIGFuZCBwcmludGVkIG91dHB1dCIKK0RFU0NSSVBUSU9OID0gIlRleGluZm8gaXMgYSBkb2N1bWVudGF0aW9uIHN5c3RlbSB0aGF0IGNhbiBwcm9kdWNlIGJvdGggXAorb25saW5lIGluZm9ybWF0aW9uIGFuZCBwcmludGVkIG91dHB1dCBmcm9tIGEgc2luZ2xlIHNvdXJjZSBmaWxlLiBUaGUgXAorR05VIFByb2plY3QgdXNlcyB0aGUgVGV4aW5mbyBmaWxlIGZvcm1hdCBmb3IgbW9zdCBvZiBpdHMgZG9jdW1lbnRhdGlvbi4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvdGV4aW5mby8iCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYzKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFlYmJkM2UzNDIzN2FmMjZkYTVkYzA4YTRlNDQwNDY0IgorCitQUk9WSURFU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiB0ZXhpbmZvLXJlcGxhY2VtZW50LW5hdGl2ZSIKKworZGVmIGNvbXByZXNzX3BrZyhkKToKKyAgICBpZiBiYi5kYXRhLmluaGVyaXRzX2NsYXNzKCdjb21wcmVzc19kb2MnLCBkKToKKyAgICAgICAgIGNvbXByZXNzID0gZC5nZXRWYXIoIkRPQ19DT01QUkVTUyIpCisgICAgICAgICBpZiBjb21wcmVzcyA9PSAiZ3oiOgorICAgICAgICAgICAgIHJldHVybiAiZ3ppcCIKKyAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gImJ6MiI6CisgICAgICAgICAgICAgcmV0dXJuICJiemlwMiIKKyAgICAgICAgIGVsaWYgY29tcHJlc3MgPT0gInh6IjoKKyAgICAgICAgICAgICByZXR1cm4gInh6IgorICAgIHJldHVybiAiIgorCitSREVQRU5EU19pbmZvICs9ICIke0Bjb21wcmVzc19wa2coZCl9IgorCitERVBFTkRTID0gInpsaWIgbmN1cnNlcyB0ZXhpbmZvLXJlcGxhY2VtZW50LW5hdGl2ZSIKK0RFUEVORFNfY2xhc3MtbmF0aXZlID0gInpsaWItbmF0aXZlIG5jdXJzZXMtbmF0aXZlIgorCitUQVJHRVRfUEFUQ0ggPSAiZmlsZTovL3VzZV9ob3N0X21ha2Vkb2MucGF0Y2giCitUQVJHRVRfUEFUQ0hfY2xhc3MtbmF0aXZlID0gIiIKKworU1JDX1VSSSA9ICIke0dOVV9NSVJST1J9L3RleGluZm8vJHtCUH0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL3RleGluZm8tNC4xMi16bGliLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Rpc2FibGUtbmF0aXZlLXRvb2xzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2xpbmstemlwLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKKyAgICAgICAgICAgJHtUQVJHRVRfUEFUQ0h9IFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiZjBjMTc4MmY2OGVmNzM3MzhkNzRiZDFlOWUzMDc5M2EiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTUyZDA1MDc2YjkwMDMyY2IyNTIzNjczYzUwZTUzMTg1OTM4NzQ2NDgyY2YzY2EwMjEzZTliNGI1MGFjMmQzZSIKKwordGV4X3RleGluZm8gPSAidGV4bWYvdGV4L3RleGluZm8iCisKK2luaGVyaXQgZ2V0dGV4dCBhdXRvdG9vbHMgbXVsdGlsaWJfc2NyaXB0CisKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn06JHtiaW5kaXJ9L3RleGkyYW55IgorCitFWFRSQV9BVVRPUkVDT05GICs9ICItSSAke1N9L2dudWxpYi9tNCIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCSMgYXV0b3Rvb2xzX2RvX2NvbmZpZ3VyZSB1cGRhdGVzIHBvL01ha2VmaWxlLmluLmluLCB3ZSBhbHNvIG5lZWQKKwkjIHVwZGF0ZSBwb19kb2N1bWVudC4KKwljcCAtZiAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2dldHRleHQvcG8vTWFrZWZpbGUuaW4uaW4gJHtTfS9wb19kb2N1bWVudC8KK30KKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworCWlmIFsgLWQgdG9vbHMgXTt0aGVuCisJCW9lX3J1bm1ha2UgLUMgdG9vbHMvZ251bGliL2xpYgorCWZpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCW1rZGlyIC1wICR7RH0ke2RhdGFkaXJ9LyR7dGV4X3RleGluZm99CisJaW5zdGFsbCAtcCAtbTY0NCAke1N9L2RvYy90ZXhpbmZvLnRleCAke1N9L2RvYy90eGktPz8udGV4ICR7RH0ke2RhdGFkaXJ9LyR7dGV4X3RleGluZm99CisJc2VkIC1pIC1lICcxcywjIS4qcGVybCwjISAke1VTUkJJTlBBVEh9L2VudiBwZXJsLCcgJHtEfSR7YmluZGlyfS90ZXhpMmFueSAke0R9JHtiaW5kaXJ9L3BvZDJ0ZXhpCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwlpbnN0YWxsIC1tIDc1NSBpbmZvL21ha2Vkb2MgJHtEfSR7YmluZGlyfQorfQorCitQQUNLQUdFUyArPSAiaW5mbyBpbmZvLWRvYyIKKworRklMRVNfaW5mbyA9ICIke2JpbmRpcn0vaW5mbyAke2JpbmRpcn0vaW5mb2tleSAke2JpbmRpcn0vaW5zdGFsbC1pbmZvIgorRklMRVNfaW5mby1kb2MgPSAiJHtpbmZvZGlyfS9pbmZvLmluZm8qICR7aW5mb2Rpcn0vZGlyICR7aW5mb2Rpcn0vaW5mby0qLmluZm8qIFwKKyAgICAgICAgICAgICAgICAgICR7bWFuZGlyfS9tYW4xL2luZm8uMSogJHttYW5kaXJ9L21hbjUvaW5mby41KiBcCisgICAgICAgICAgICAgICAgICAke21hbmRpcn0vbWFuMS9pbmZva2V5LjEqICR7bWFuZGlyfS9tYW4xL2luc3RhbGwtaW5mby4xKiIKKworRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L21ha2VpbmZvICR7YmluZGlyfS90ZXhpKiAke2JpbmRpcn0vcGRmdGV4aTJkdmkgJHtiaW5kaXJ9L3BvZDJ0ZXhpICR7ZGF0YWRpcn0vdGV4aW5mbyIKK1JERVBFTkRTXyR7UE59ID0gInBlcmwiCitGSUxFU18ke1BOfS1kb2MgPSAiJHtpbmZvZGlyfS90ZXhpbmZvKiBcCisgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS8ke3RleF90ZXhpbmZvfSBcCisgICAgICAgICAgICAgICAgICAgJHttYW5kaXJ9L21hbjEgJHttYW5kaXJ9L21hbjUiCisKKyMgTGllIGFib3V0IHByb3ZpZGluZyB0aGUgTG9jYWxlOjpnZXR0ZXh0X3hzIG1vZHVsZS4gSXQgaXMgbm90IGFjdHVhbGx5IGJ1aWx0LAorIyBidXQgdGhlIGNvZGUgd2lsbCB0ZXN0IGZvciBpdCBhbmQgaWYgbm90IGZvdW5kIHVzZSBMb2NhbGU6OmdldHRleHRfcHAgaW5zdGVhZC4KKyMgSG93ZXZlciwgdGhpcyBjYXVzZXMgYSBmaWxlIGRlcGVuZGVuY3kgb24gcGVybChMb2NhbGU6OmdldHRleHRfeHMpIHRvIGJlCisjIGdlbmVyYXRlZCwgd2hpY2ggbXVzdCBiZSBzYXRpc2ZpZWQuCitSUFJPVklERVNfJHtQTn0gKz0gInBlcmwoTG9jYWxlOjpnZXR0ZXh0X3hzKSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZXpvbmUvdHpkYXRhLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvdGltZXpvbmUvdHpkYXRhLmJiCmluZGV4IDFlMmQ5YmQuLjFlMmI0NDAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3RpbWV6b25lL3R6ZGF0YS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC90aW1lem9uZS90emRhdGEuYmIKQEAgLTYwLDEyICs2MCw4IEBACiAJaWYgWyAtZSAke3NyY30gXSA7IHRoZW4KIAkJdHo9JChzZWQgLWUgJ3M6Iy4qOjonIC1lICdzOltbOnNwYWNlOl1dKjo6ZycgLWUgJy9eJC9kJyAiJHtzcmN9IikKIAlmaQotCQotCWlmIFsgLXogIiR7dHp9IiBdIDsgdGhlbgotCQlleGl0IDAKLQlmaQotCQotCWlmIFsgISAtZSAiJEQke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IiBdIDsgdGhlbgorCisJaWYgWyAhIC16ICIke3R6fSIgLWEgISAtZSAiJEQke2RhdGFkaXJ9L3pvbmVpbmZvLyR7dHp9IiBdIDsgdGhlbgogCQllY2hvICJZb3UgaGF2ZSBhbiBpbnZhbGlkIFRJTUVaT05FIHNldHRpbmcgaW4gJHtzcmN9IgogCQllY2hvICJZb3VyICR7ZXRjX2x0fSBoYXMgYmVlbiByZXNldCB0byBVbml2ZXJzYWw7IGVuam95ISIKIAkJdHo9IlVuaXZlcnNhbCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ZGctdXRpbHMveGRnLXV0aWxzXzEuMS4zLmJiCmluZGV4IDc3ODhiNWYuLmQzNzFjNWMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3hkZy11dGlscy94ZGctdXRpbHNfMS4xLjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQveGRnLXV0aWxzL3hkZy11dGlsc18xLjEuMy5iYgpAQCAtMTcsNyArMTcsNyBAQAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNTM2N2E5MDkzNDA5OGQ2YjA1YWYzYjc0NjQwNTAxNCIKIAotU1JDX1VSSSA9ICJodHRwOi8vcG9ydGxhbmQuZnJlZWRlc2t0b3Aub3JnL2Rvd25sb2FkLyR7QlBOfS0ke1BWfS50YXIuZ3ogXAorU1JDX1VSSSA9ICJodHRwczovL3BvcnRsYW5kLmZyZWVkZXNrdG9wLm9yZy9kb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLmd6IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtUmVpbnN0YXRlLXhkZy10ZXJtaW5hbC5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LWJ1aWxkLXRoZS1pbi1zY3JpcHQtbWFudWFsLnBhdGNoIFwKICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC94ei94el81LjIuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3h6L3h6XzUuMi40LmJiCmluZGV4IDc5MTc0NmUuLjFjNDQ1MGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3h6L3h6XzUuMi40LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3h6L3h6XzUuMi40LmJiCkBAIC0xLDUgKzEsNSBAQAogU1VNTUFSWSA9ICJVdGlsaXRpZXMgZm9yIG1hbmFnaW5nIExaTUEgY29tcHJlc3NlZCBmaWxlcyIKLUhPTUVQQUdFID0gImh0dHA6Ly90dWthYW5pLm9yZy94ei8iCitIT01FUEFHRSA9ICJodHRwczovL3R1a2Fhbmkub3JnL3h6LyIKIFNFQ1RJT04gPSAiYmFzZSIKIAogIyBUaGUgc291cmNlIGluY2x1ZGVzIGJpdHMgb2YgUEQsIEdQTHYyLCBHUEx2MywgTEdQTHYyLjErLCBidXQgdGhlIG9ubHkgZmlsZQpAQCAtMjIsMTEgKzIyLDEzIEBACiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWIvZ2V0b3B0LmM7ZW5kbGluZT0yMzttZDU9MjA2OWIwZWU3MTA1NzJjMDNiYjMxMTRlNDUzMmNkODQgXAogICAgICAgICAgICAgICAgICAgICAiCiAKLVNSQ19VUkkgPSAiaHR0cDovL3R1a2Fhbmkub3JnL3h6L3h6LSR7UFZ9LnRhci5neiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly90dWthYW5pLm9yZy94ei94ei0ke1BWfS50YXIuZ3oiCiBTUkNfVVJJW21kNXN1bV0gPSAiNWFjZTMyNjRiZGQwMGM2NWVlZWMyODkxMzQ2ZjY1ZTYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjUxMmYzYjcyNmQzYjM3YjZkYzRjODU3MGUxMzdiOTMxMWU3NTUyZThjY2JhYjRkMzlkNDdjZTVmNDE3NzE0NSIKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInh6LSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgogCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiZ2xfY3ZfcG9zaXhfc2hlbGw9L2Jpbi9zaCIKKwogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dAogCiBQQUNLQUdFUyA9KyAibGlibHptYSIKQEAgLTM5LDUgKzQxLDMgQEAKICAgICAgICAgICAgICAgICAgICAgIGx6bWEgbHpjYXQgdW5sem1hIgogCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLWV4cG9ydCBDT05GSUdfU0hFTEw9Ii9iaW4vc2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwLTMuMC96aXBub3RlLWNyYXNoZXMtd2l0aC1zZWdmYXVsdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWV4dGVuZGVkL3ppcC96aXAtMy4wL3ppcG5vdGUtY3Jhc2hlcy13aXRoLXNlZ2ZhdWx0LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNlNmNhZmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwLTMuMC96aXBub3RlLWNyYXNoZXMtd2l0aC1zZWdmYXVsdC5wYXRjaApAQCAtMCwwICsxLDIyIEBACitDbG9zZSB0aGUgY29ycmVjdCBmaWxlIGRlc2NyaXB0b3IKKworaHR0cHM6Ly9idWdzLmFyY2hsaW51eC5vcmcvdGFzay80NzcxMworCitTaWduZWQtb2ZmLWJ5OiBKYXRlIFN1amphdmFuaWNoIDxqYXRlZGV2QGdtYWlsLmNvbT4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtubyB1cHN0cmVhbV0KKworZGlmZiAtLWdpdCBhL3ppcG5vdGUuYyBiL3ppcG5vdGUuYworaW5kZXggNWUwMmNiNi4uOTk2ZjAxMiAxMDA2NDQKKy0tLSBhL3ppcG5vdGUuYworKysrIGIvemlwbm90ZS5jCitAQCAtNjYxLDcgKzY2MSw3IEBAIGNoYXIgKiphcmd2OyAgICAgICAgICAgIC8qIGNvbW1hbmQgbGluZSB0b2tlbnMgKi8KKyAgICAgaWYgKChyID0gemlwY29weSh6KSkgIT0gWkVfT0spCisgICAgICAgemlwZXJyKHIsICJ3YXMgY29weWluZyBhbiBlbnRyeSIpOworICAgfQorLSAgZmNsb3NlKHgpOworKyAgZmNsb3NlKGluX2ZpbGUpOworIAorICAgLyogV3JpdGUgY2VudHJhbCBkaXJlY3RvcnkgYW5kIGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSB3aXRoIG5ldyBjb21tZW50cyAqLworICAgaWYgKChjID0gemZ0ZWxsbyh5KSkgPT0gKHpvZmZfdCktMSkgICAgLyogZ2V0IHN0YXJ0IG9mIGNlbnRyYWwgKi8KKyAgIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZXh0ZW5kZWQvemlwL3ppcF8zLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwXzMuMC5iYgppbmRleCBhMmNkNzcxLi5jMDBhOTMyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwXzMuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1leHRlbmRlZC96aXAvemlwXzMuMC5iYgpAQCAtMTIsNiArMTIsNyBAQAogU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vaW5mb3ppcC9aaXAlMjAzLnglMjAlMjhsYXRlc3QlMjkvMy4wL3ppcDMwLnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9maXgtc2VjdXJpdHktZm9ybWF0LnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzEwLXJlbW92ZS1idWlsZC1kYXRlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3ppcG5vdGUtY3Jhc2hlcy13aXRoLXNlZ2ZhdWx0LnBhdGNoIFwKICAgICAgICAgICAgIgogVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMzQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMzQuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ViZDU1ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9lcGlwaGFueS9lcGlwaGFueV8zLjM0LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMSArMCwwIEBACi1TVU1NQVJZID0gIldlYktpdCBiYXNlZCB3ZWIgYnJvd3NlciBmb3IgR05PTUUiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9lcGlwaGFueSIKLUxJQ0VOU0UgPSAiR1BMdjMrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCi0KLURFUEVORFMgPSAibGlic291cC0yLjQgd2Via2l0Z3RrIGd0ayszIGlzby1jb2RlcyBhdmFoaSBsaWJub3RpZnkgZ2NyIFwKLQkgICBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIGxpYnhtbDItbmF0aXZlIFwKLQkgICBnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUganNvbi1nbGliIGxpYmRhenpsZSIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ2V0dGV4dAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSBvcGVuZ2wiCi0KLVNSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7R05PTUVCTn0vJHtAZ25vbWVfdmVyZGlyKCIke1BWfSIpfS8ke0dOT01FQk59LSR7UFZ9LnRhci4ke0dOT01FX0NPTVBSRVNTX1RZUEV9O25hbWU9YXJjaGl2ZSBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLWhlbHAtbWVzb24uYnVpbGQtZGlzYWJsZS10aGUtdXNlLW9mLXllbHAucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI1MGI1MGUxOGQ5OWIxOWY0NGNjOWNkNDE5YzZhNGJhOCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImEwN2JjOTk3YWQyY2JmMTRkNTg1NTdiYjBiNjNlOTJkOGMzMzY4MzY4MGM1ZTUwZWE2ZjliNTNiMzZiZWMxZDkiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMSAke2RhdGFkaXJ9L2dub21lLXNoZWxsL3NlYXJjaC1wcm92aWRlcnMgJHtkYXRhZGlyfS9tZXRhaW5mbyIKLVJERVBFTkRTXyR7UE59ID0gImlzby1jb2RlcyBhZHdhaXRhLWljb24tdGhlbWUgZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMzQuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2VwaXBoYW55L2VwaXBoYW55XzMuMzQuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kZGI0YzI3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZXBpcGhhbnkvZXBpcGhhbnlfMy4zNC40LmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiV2ViS2l0IGJhc2VkIHdlYiBicm93c2VyIGZvciBHTk9NRSIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2VwaXBoYW55IgorTElDRU5TRSA9ICJHUEx2MysiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCIKKworREVQRU5EUyA9ICJsaWJzb3VwLTIuNCB3ZWJraXRndGsgZ3RrKzMgaXNvLWNvZGVzIGF2YWhpIGxpYm5vdGlmeSBnY3IgXAorCSAgIGdzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMgbGlieG1sMi1uYXRpdmUgXAorCSAgIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBqc29uLWdsaWIgbGliZGF6emxlIgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgoraW5oZXJpdCBnbm9tZWJhc2UgZ3NldHRpbmdzIGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnZXR0ZXh0IG1pbWUteGRnCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIG9wZW5nbCIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtHTk9NRUJOfS8ke0Bnbm9tZV92ZXJkaXIoIiR7UFZ9Iil9LyR7R05PTUVCTn0tJHtQVn0udGFyLiR7R05PTUVfQ09NUFJFU1NfVFlQRX07bmFtZT1hcmNoaXZlIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItaGVscC1tZXNvbi5idWlsZC1kaXNhYmxlLXRoZS11c2Utb2YteWVscC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImE1NTlmMTY0YmI3ZDZjYmVjZWIzNDg2NDgwNzY4MzBiIgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiNjBlMTkwZmMwN2VjN2UzMzQ3MmU2MGM3ZTYzM2UwNDAwNGY3ZTI3N2EwZmZjNWU5Y2Q0MTM3MDY4ODFlNTk4ZCIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZGJ1cy0xICR7ZGF0YWRpcn0vZ25vbWUtc2hlbGwvc2VhcmNoLXByb3ZpZGVycyAke2RhdGFkaXJ9L21ldGFpbmZvIgorUkRFUEVORFNfJHtQTn0gPSAiaXNvLWNvZGVzIGFkd2FpdGEtaWNvbi10aGVtZSBnc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2NyL2djcl8zLjM0LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMzQuMC5iYgppbmRleCBlM2U4OTk5Li45ODUzYjNmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMzQuMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nY3IvZ2NyXzMuMzQuMC5iYgpAQCAtMTEsNyArMTEsNyBAQAogREVQRU5EUyA9ICJndGsrMyBwMTEta2l0IGdsaWItMi4wIGxpYmdjcnlwdCBcCiAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICdsaWJ4c2x0LW5hdGl2ZScsICcnLCBkKX0iCiAKLWluaGVyaXQgZ25vbWViYXNlIGd0ay1pY29uLWNhY2hlIGd0ay1kb2MgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGdldHRleHQKK2luaGVyaXQgZ25vbWViYXNlIGd0ay1pY29uLWNhY2hlIGd0ay1kb2MgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGdldHRleHQgbWltZSBtaW1lLXhkZwogIyBkZXBlbmRzIG9uIGd0ayszLCBidXQgYWxzbyB4MTEgdGhyb3VnaCBndGsrLXgxMQogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmL21pc3NpbmctdGVzdC1kYXRhLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmL21pc3NpbmctdGVzdC1kYXRhLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjZjNzU4ZmQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWYvbWlzc2luZy10ZXN0LWRhdGEucGF0Y2gKQEAgLTAsMCArMSwzMCBAQAorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KKworRnJvbSBkOGQyMzFjMDFlZjJlNTk4NTZkYThhNWMyNmFjZTk1NWU1ZjI5MzcwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KK0RhdGU6IE1vbiwgMjUgTm92IDIwMTkgMTc6MDU6NDYgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdHM6IGluc3RhbGwgY2lyY3VsYXItdGFibGUuZ2lmCisKK1RoaXMgdGVzdCBkYXRhIHdhcyBhZGRlZCBmb3IgdGhlIHBpeGJ1Zi1naWYtY2lyY3VsYXItdGFibGUgdGVzdCAoYWRkZWQgT2N0b2JlcgorMjAxOCBpbiAwYjlkMDA0KSBidXQgYmVjYXVzZSB0aGUgZmlsZSB3YXMgbmV2ZXIgYWN0dWFsbHkgaW5zdGFsbGVkIHRoZSBpbnN0YWxsZWQKK3Rlc3Qgc3VpdGUgbmV2ZXIgcGFzc2VzLgorLS0tCisgdGVzdHMvbWVzb24uYnVpbGQgfCAxICsKKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKKworZGlmZiAtLWdpdCBhL3Rlc3RzL21lc29uLmJ1aWxkIGIvdGVzdHMvbWVzb24uYnVpbGQKK2luZGV4IDUxMTZmYzJiOS4uODBlZDNlOGIyIDEwMDY0NAorLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCitAQCAtOTcsNiArOTcsNyBAQCB0ZXN0X2RhdGEgPSBbCisgICAnYnVnNzc1NjkzLnBpeGRhdGEnLAorICAgJ2J1Zzc3NTIyOS5waXhkYXRhJywKKyAgICdhZXJvLmdpZicsCisrICAnY2lyY3VsYXItdGFibGUuZ2lmJworIF0KKyAKKyBpbnN0YWxsZWRfdGVzdF9iaW5kaXIgPSBqb2luX3BhdGhzKGdka19waXhidWZfbGliZXhlY2RpciwgJ2luc3RhbGxlZC10ZXN0cycsIG1lc29uLnByb2plY3RfbmFtZSgpKQorLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzguMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dkay1waXhidWYvZ2RrLXBpeGJ1Zl8yLjM4LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5OTUxMDYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuMzguMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEyNiArMCwwIEBACi1TVU1NQVJZID0gIkltYWdlIGxvYWRpbmcgbGlicmFyeSBmb3IgR1RLKyIKLURFU0NSSVBUSU9OID0gIlRoZSBHREsgUGl4YnVmIGxpYnJhcnkgcHJvdmlkZXM6IEltYWdlIGxvYWRpbmcgYW5kIHNhdmluZyBcCi1mYWNpbGl0aWVzLCBmYXN0IHNjYWxpbmcgYW5kIGNvbXBvc2l0aW5nIG9mIHBpeGJ1ZnMgYW5kIFNpbXBsZSBhbmltYXRpb24gXAotbG9hZGluZyAoaWUuIGFuaW1hdGVkIEdJRnMpIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9HZGtQaXhidWYiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9nZGstcGl4YnVmL2lzc3VlcyIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dkay1waXhidWYvZ2RrLXBpeGJ1Zi5oO2VuZGxpbmU9MjY7bWQ1PTcyYjM5ZGE3Y2JkZGUyZTY2NTMyOWZlZjYxOGUxZDZiIFwKLSAgICAgICAgICAgICAgICAgICAgIgotCi1TRUNUSU9OID0gImxpYnMiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2RrLXBpeGJ1Zi1uYXRpdmUgc2hhcmVkLW1pbWUtaW5mbyIKLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS8ke0JQTn0vJHtNQUpfVkVSfS8ke0JQTn0tJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9mYXRhbC1sb2FkZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Xb3JrLWFyb3VuZC10aHVtYm5haWxlci1jcm9zcy1jb21waWxlLWZhaWx1cmUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYS1jb3VwbGUtb2YtZGVjaXNpb25zLWFyb3VuZC1jcm9zcy1jb21waWxhdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LURvLW5vdC1ydW4tdGVzdHMtd2hlbi1idWlsZGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA2LUJ1aWxkLXRodW1ibmFpbGVyLWFuZC10ZXN0cy1hbHNvLWluLWNyb3NzLWJ1aWxkcy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLXRhcmdldC1vbmx5LVdvcmstYXJvdW5kLXRodW1ibmFpbGVyLWNyb3NzLWNvbXBpbGUtZmEucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtdGFyZ2V0LW9ubHktV29yay1hcm91bmQtdGh1bWJuYWlsZXItY3Jvc3MtY29tcGlsZS1mYS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImNjMWQ3MTJhMTY0M2I5MmZmMDkwNGQ1ODk5NjM5NzFmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjczZmE2NTFlYzBkODlkNzNkZDMwNzBiMTI5Y2UyMjAzYTY2MTcxZGZjMGJkMmNhYTM1NzBhOWM5M2QyZDA3ODEiCi0KLWluaGVyaXQgbWVzb24gcGtnY29uZmlnIGdldHRleHQgcGl4YnVmY2FjaGUgcHRlc3QtZ25vbWUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIGxpYl9wYWNrYWdlCi0KLUdJUl9NRVNPTl9PUFRJT04gPSAnZ2lyJwotCi1FWFRSQV9PRU1FU09OX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICctRGluc3RhbGxlZF90ZXN0cz10cnVlJywgJy1EaW5zdGFsbGVkX3Rlc3RzPWZhbHNlJywgZCl9IgotCi1MSUJWID0gIjIuMTAuMCIKLQotR0RLX1BJWEJVRl9MT0FERVJTID89ICJwbmcganBlZyIKLQotUEFDS0FHRUNPTkZJRyA9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0gJHtHREtfUElYQlVGX0xPQURFUlN9IgotUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiJHtHREtfUElYQlVGX0xPQURFUlN9IgotCi1QQUNLQUdFQ09ORklHW3BuZ10gPSAiLURwbmc9dHJ1ZSwtRHBuZz1mYWxzZSxsaWJwbmciCi1QQUNLQUdFQ09ORklHW2pwZWddID0gIi1EanBlZz10cnVlLC1EanBlZz1mYWxzZSxqcGVnIgotUEFDS0FHRUNPTkZJR1t0aWZmXSA9ICItRHRpZmY9dHJ1ZSwtRHRpZmY9ZmFsc2UsdGlmZiIKLVBBQ0tBR0VDT05GSUdbanBlZzIwMDBdID0gIi1EamFzcGVyPXRydWUsLURqYXNwZXI9ZmFsc2UsamFzcGVyIgotCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLUR4MTE9dHJ1ZSwtRHgxMT1mYWxzZSx2aXJ0dWFsL2xpYngxMSIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXhsaWIiCi0KLSMgRm9yIEdJTyBpbWFnZSB0eXBlIHNuaWZmaW5nCi1SREVQRU5EU18ke1BOfSA9ICJzaGFyZWQtbWltZS1pbmZvIgotCi1GSUxFU18ke1BOfS14bGliID0gIiR7bGliZGlyfS8qcGl4YnVmX3hsaWIqJHtTT0xJQlN9IgotQUxMT1dfRU1QVFlfJHtQTn0teGxpYiA9ICIxIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyIKLQotRklMRVNfJHtQTn0tYmluICs9ICIke2RhdGFkaXJ9L3RodW1ibmFpbGVycy9nZGstcGl4YnVmLXRodW1ibmFpbGVyLnRodW1ibmFpbGVyIgotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiBcCi0JJHtiaW5kaXJ9L2dkay1waXhidWYtY3NvdXJjZSBcCi0JJHtiaW5kaXJ9L2dkay1waXhidWYtcGl4ZGF0YSBcCi0gICAgICAgICR7YmluZGlyfS9nZGstcGl4YnVmLXByaW50LW1pbWUtdHlwZXMgXAotCSR7aW5jbHVkZWRpcn0vKiBcCi0JJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy8qLmxhIFwKLSIKLQotUEFDS0FHRVNfRFlOQU1JQyArPSAiXmdkay1waXhidWYtbG9hZGVyLS4qIgotUEFDS0FHRVNfRFlOQU1JQ19jbGFzcy1uYXRpdmUgPSAiIgotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7Ci0gICAgcG9zdGluc3RfcGl4YnVmbG9hZGVyID0gZC5nZXRWYXIoInBvc3RpbnN0X3BpeGJ1ZmxvYWRlciIpCi0KLSAgICBsb2FkZXJzX3Jvb3QgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycycpCi0KLSAgICBwYWNrYWdlcyA9ICcgJy5qb2luKGRvX3NwbGl0X3BhY2thZ2VzKGQsIGxvYWRlcnNfcm9vdCwgcidebGlicGl4YnVmbG9hZGVyLSguKilcLnNvJCcsICdnZGstcGl4YnVmLWxvYWRlci0lcycsICdHREsgcGl4YnVmIGxvYWRlciBmb3IgJXMnKSkKLSAgICBkLnNldFZhcignUElYQlVGX1BBQ0tBR0VTJywgcGFja2FnZXMpCi0KLSAgICAjIFRoZSB0ZXN0IHN1aXRlIGV4ZXJjaXNlcyBhbGwgdGhlIGxvYWRlcnMsIHNvIGVuc3VyZSB0aGV5IGFyZSBhbGwKLSAgICAjIGRlcGVuZGVuY2llcyBvZiB0aGUgcHRlc3QgcGFja2FnZS4KLSAgICBkLmFwcGVuZFZhcigiUkRFUEVORFNfJXMtcHRlc3QiICUgZC5nZXRWYXIoJ1BOJyksICIgIiArIHBhY2thZ2VzKQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIENvcHkgZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIGludG8gbGliZGlyIHNvIGl0IGlzIGFsd2F5cyBhdmFpbGFibGUKLQkjIGluIG11bHRpbGliIGJ1aWxkcy4KLQljcCAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMgJHtEfS8ke2xpYmRpcn0vZ2RrLXBpeGJ1Zi0yLjAvCi0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWZpbmQgJHtEfSR7bGliZGlyfSAtbmFtZSAibGlicGl4YnVmbG9hZGVyLSoubGEiIC1leGVjIHJtIFx7XH0gXDsKLQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtY3NvdXJjZSBcCi0JCVhER19EQVRBX0RJUlM9JHtTVEFHSU5HX0RBVEFESVJ9IFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCi0KLQljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAotCQlYREdfREFUQV9ESVJTPSR7U1RBR0lOR19EQVRBRElSfSBcCi0JCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKLQkJWERHX0RBVEFfRElSUz0ke1NUQUdJTkdfREFUQURJUn0gXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKLQotCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyBcCi0JCVhER19EQVRBX0RJUlM9JHtTVEFHSU5HX0RBVEFESVJ9IFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlIFwKLQkJR0RLX1BJWEJVRl9NT0RVTEVESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycwotCi0JY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIFwKLQkJWERHX0RBVEFfRElSUz0ke1NUQUdJTkdfREFUQURJUn0gXAotCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUgXAotCQlHREtfUElYQlVGX01PRFVMRURJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzCi19Ci1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nZGstcGl4YnVmL2dkay1waXhidWZfMi40MC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuNDAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5kMGRmNTAxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ2RrLXBpeGJ1Zi9nZGstcGl4YnVmXzIuNDAuMC5iYgpAQCAtMCwwICsxLDEzMiBAQAorU1VNTUFSWSA9ICJJbWFnZSBsb2FkaW5nIGxpYnJhcnkgZm9yIEdUSysiCitERVNDUklQVElPTiA9ICJUaGUgR0RLIFBpeGJ1ZiBsaWJyYXJ5IHByb3ZpZGVzOiBJbWFnZSBsb2FkaW5nIGFuZCBzYXZpbmcgXAorZmFjaWxpdGllcywgZmFzdCBzY2FsaW5nIGFuZCBjb21wb3NpdGluZyBvZiBwaXhidWZzIGFuZCBTaW1wbGUgYW5pbWF0aW9uIFwKK2xvYWRpbmcgKGllLiBhbmltYXRlZCBHSUZzKSIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5nbm9tZS5vcmcvUHJvamVjdHMvR2RrUGl4YnVmIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ2RrLXBpeGJ1Zi9pc3N1ZXMiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGstcGl4YnVmL2dkay1waXhidWYuaDtlbmRsaW5lPTI2O21kNT03MmIzOWRhN2NiZGRlMmU2NjUzMjlmZWY2MThlMWQ2YiBcCisgICAgICAgICAgICAgICAgICAgICIKKworU0VDVElPTiA9ICJsaWJzIgorCitERVBFTkRTID0gImdsaWItMi4wIGdkay1waXhidWYtbmF0aXZlIHNoYXJlZC1taW1lLWluZm8iCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICBmaWxlOi8vZmF0YWwtbG9hZGVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtV29yay1hcm91bmQtdGh1bWJuYWlsZXItY3Jvc3MtY29tcGlsZS1mYWlsdXJlLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWEtY291cGxlLW9mLWRlY2lzaW9ucy1hcm91bmQtY3Jvc3MtY29tcGlsYXRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC1Eby1ub3QtcnVuLXRlc3RzLXdoZW4tYnVpbGRpbmcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1CdWlsZC10aHVtYm5haWxlci1hbmQtdGVzdHMtYWxzby1pbi1jcm9zcy1idWlsZHMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWlzc2luZy10ZXN0LWRhdGEucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMy10YXJnZXQtb25seS1Xb3JrLWFyb3VuZC10aHVtYm5haWxlci1jcm9zcy1jb21waWxlLWZhLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLXRhcmdldC1vbmx5LVdvcmstYXJvdW5kLXRodW1ibmFpbGVyLWNyb3NzLWNvbXBpbGUtZmEucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIwNWViMWViYzI1OGJhOTA1ZjFjODY0NGVmNDlkZTA2NCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxNTgyNTk1MDk5NTM3Y2E4ZmYzYjk5YzY4MDQzNTBiNGMwNThiYjhhZDY3NDExYmJhYWUwMjRlZTdjZWFkNGU2IgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBnZXR0ZXh0IHBpeGJ1ZmNhY2hlIHB0ZXN0LWdub21lIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyBsaWJfcGFja2FnZQorCitHSVJfTUVTT05fT1BUSU9OID0gJ2dpcicKKworRVhUUkFfT0VNRVNPTl9hcHBlbmQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQVEVTVF9FTkFCTEVEJywgJzEnLCAnLURpbnN0YWxsZWRfdGVzdHM9dHJ1ZScsICctRGluc3RhbGxlZF90ZXN0cz1mYWxzZScsIGQpfSIKKworTElCViA9ICIyLjEwLjAiCisKK0dES19QSVhCVUZfTE9BREVSUyA/PSAicG5nIGpwZWciCisKK1BBQ0tBR0VDT05GSUcgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9ICR7R0RLX1BJWEJVRl9MT0FERVJTfSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gIiR7R0RLX1BJWEJVRl9MT0FERVJTfSIKKworUEFDS0FHRUNPTkZJR1twbmddID0gIi1EcG5nPXRydWUsLURwbmc9ZmFsc2UsbGlicG5nIgorUEFDS0FHRUNPTkZJR1tqcGVnXSA9ICItRGpwZWc9dHJ1ZSwtRGpwZWc9ZmFsc2UsanBlZyIKK1BBQ0tBR0VDT05GSUdbdGlmZl0gPSAiLUR0aWZmPXRydWUsLUR0aWZmPWZhbHNlLHRpZmYiCitQQUNLQUdFQ09ORklHW2pwZWcyMDAwXSA9ICItRGphc3Blcj10cnVlLC1EamFzcGVyPWZhbHNlLGphc3BlciIKKworUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EeDExPXRydWUsLUR4MTE9ZmFsc2UsdmlydHVhbC9saWJ4MTEiCisKK1BBQ0tBR0VTID0rICIke1BOfS14bGliIgorCisjIEZvciBHSU8gaW1hZ2UgdHlwZSBzbmlmZmluZworUkRFUEVORFNfJHtQTn0gPSAic2hhcmVkLW1pbWUtaW5mbyIKKworRklMRVNfJHtQTn0teGxpYiA9ICIke2xpYmRpcn0vKnBpeGJ1Zl94bGliKiR7U09MSUJTfSIKK0FMTE9XX0VNUFRZXyR7UE59LXhsaWIgPSAiMSIKKworRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC9nZGstcGl4YnVmLXF1ZXJ5LWxvYWRlcnMiCisKK0ZJTEVTXyR7UE59LWJpbiArPSAiJHtkYXRhZGlyfS90aHVtYm5haWxlcnMvZ2RrLXBpeGJ1Zi10aHVtYm5haWxlci50aHVtYm5haWxlciIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIgXAorCSR7YmluZGlyfS9nZGstcGl4YnVmLWNzb3VyY2UgXAorCSR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAorICAgICAgICAke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKKwkke2luY2x1ZGVkaXJ9LyogXAorCSR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMvKi5sYSBcCisiCisKK1BBQ0tBR0VTX0RZTkFNSUMgKz0gIl5nZGstcGl4YnVmLWxvYWRlci0uKiIKK1BBQ0tBR0VTX0RZTkFNSUNfY2xhc3MtbmF0aXZlID0gIiIKKworcHl0aG9uIHBvcHVsYXRlX3BhY2thZ2VzX3ByZXBlbmQgKCkgeworICAgIHBvc3RpbnN0X3BpeGJ1ZmxvYWRlciA9IGQuZ2V0VmFyKCJwb3N0aW5zdF9waXhidWZsb2FkZXIiKQorCisgICAgbG9hZGVyc19yb290ID0gZC5leHBhbmQoJyR7bGliZGlyfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMnKQorCisgICAgcGFja2FnZXMgPSAnICcuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBsb2FkZXJzX3Jvb3QsIHInXmxpYnBpeGJ1ZmxvYWRlci0oLiopXC5zbyQnLCAnZ2RrLXBpeGJ1Zi1sb2FkZXItJXMnLCAnR0RLIHBpeGJ1ZiBsb2FkZXIgZm9yICVzJykpCisgICAgZC5zZXRWYXIoJ1BJWEJVRl9QQUNLQUdFUycsIHBhY2thZ2VzKQorCisgICAgIyBUaGUgdGVzdCBzdWl0ZSBleGVyY2lzZXMgYWxsIHRoZSBsb2FkZXJzLCBzbyBlbnN1cmUgdGhleSBhcmUgYWxsCisgICAgIyBkZXBlbmRlbmNpZXMgb2YgdGhlIHB0ZXN0IHBhY2thZ2UuCisgICAgZC5hcHBlbmRWYXIoIlJERVBFTkRTXyVzLXB0ZXN0IiAlIGQuZ2V0VmFyKCdQTicpLCAiICIgKyBwYWNrYWdlcykKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBDb3B5IGdkay1waXhidWYtcXVlcnktbG9hZGVycyBpbnRvIGxpYmRpciBzbyBpdCBpcyBhbHdheXMgYXZhaWxhYmxlCisJIyBpbiBtdWx0aWxpYiBidWlsZHMuCisJY3AgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzICR7RH0vJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wLworCit9CisKKyMgUmVtb3ZlIGEgYmFkIGZ1enppbmcgYXR0ZW1wdCB0aGF0IHNwb3JhZGljYWxseSBmYWlscyB3aXRob3V0IGEgd2F5IHRvIHJlcHJvZHVjZQorZG9faW5zdGFsbF9wdGVzdCgpIHsKKwlybSAke0R9LyR7ZGF0YWRpcn0vaW5zdGFsbGVkLXRlc3RzL2dkay1waXhidWYvcGl4YnVmLXJhbmRvbWx5LW1vZGlmaWVkLnRlc3QKK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgeworCWZpbmQgJHtEfSR7bGliZGlyfSAtbmFtZSAibGlicGl4YnVmbG9hZGVyLSoubGEiIC1leGVjIHJtIFx7XH0gXDsKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L2dkay1waXhidWYtY3NvdXJjZSBcCisJCVhER19EQVRBX0RJUlM9JHtTVEFHSU5HX0RBVEFESVJ9IFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlCisKKwljcmVhdGVfd3JhcHBlciAke0R9LyR7YmluZGlyfS9nZGstcGl4YnVmLXBpeGRhdGEgXAorCQlYREdfREFUQV9ESVJTPSR7U1RBR0lOR19EQVRBRElSfSBcCisJCUdES19QSVhCVUZfTU9EVUxFX0ZJTEU9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycy5jYWNoZQorCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1wcmludC1taW1lLXR5cGVzIFwKKwkJWERHX0RBVEFfRElSUz0ke1NUQUdJTkdfREFUQURJUn0gXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUKKworCWNyZWF0ZV93cmFwcGVyICR7RH0vJHtsaWJkaXJ9L2dkay1waXhidWYtMi4wL2dkay1waXhidWYtcXVlcnktbG9hZGVycyBcCisJCVhER19EQVRBX0RJUlM9JHtTVEFHSU5HX0RBVEFESVJ9IFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVfRklMRT0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzLmNhY2hlIFwKKwkJR0RLX1BJWEJVRl9NT0RVTEVESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9L2dkay1waXhidWYtMi4wLyR7TElCVn0vbG9hZGVycworCisJY3JlYXRlX3dyYXBwZXIgJHtEfS8ke2JpbmRpcn0vZ2RrLXBpeGJ1Zi1xdWVyeS1sb2FkZXJzIFwKKwkJWERHX0RBVEFfRElSUz0ke1NUQUdJTkdfREFUQURJUn0gXAorCQlHREtfUElYQlVGX01PRFVMRV9GSUxFPSR7U1RBR0lOR19MSUJESVJfTkFUSVZFfS9nZGstcGl4YnVmLTIuMC8ke0xJQlZ9L2xvYWRlcnMuY2FjaGUgXAorCQlHREtfUElYQlVGX01PRFVMRURJUj0ke1NUQUdJTkdfTElCRElSX05BVElWRX0vZ2RrLXBpeGJ1Zi0yLjAvJHtMSUJWfS9sb2FkZXJzCit9CitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWUvMDAwMS1Eb24tdC11c2UtQUNfQ0FOT05JQ0FMX0hPU1QucGF0Y2gKaW5kZXggYTA2MmFhNi4uMzcyZjE0NCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lLzAwMDEtRG9uLXQtdXNlLUFDX0NBTk9OSUNBTF9IT1NULnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZS8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaApAQCAtMTksNyArMTksNyBAQAogKysrIGIvY29uZmlndXJlLmFjCiBAQCAtMyw3ICszLDYgQEAgQUNfUFJFUkVRKDIuNTMpCiAgCi0gQUNfSU5JVChbYWR3YWl0YS1pY29uLXRoZW1lXSwgWzMuMzQuMF0sCisgQUNfSU5JVChbYWR3YWl0YS1pY29uLXRoZW1lXSwgWzMuMzQuM10sCiAgICAgICAgICBbaHR0cDovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9YWR3YWl0YS1pY29uLXRoZW1lXSkKIC1BQ19DQU5PTklDQUxfSE9TVAogIEFDX0NPTkZJR19NQUNST19ESVIoW200XSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjM0LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4zNC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjZiNjBmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dub21lL2Fkd2FpdGEtaWNvbi10aGVtZV8zLjM0LjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MSArMCwwIEBACi1TVU1NQVJZID0gIkdUSysgaWNvbiB0aGVtZSIKLUhPTUVQQUdFID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9hZHdhaXRhLWljb24tdGhlbWUiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9hZHdhaXRhLWljb24tdGhlbWUvaXNzdWVzIgotU0VDVElPTiA9ICJ4MTEvZ25vbWUiCi0KLUxJQ0VOU0UgPSAiTEdQTC0zLjAgfCBDQy1CWS1TQS0zLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jODRjYWM4OGU0NmZjMDc2NDdlYTA3ZTZjMjRlZWI3YyIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstaWNvbi1jYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVJ1bi1pbnN0YWxsYXRpb24tY29tbWFuZHMtYXMtc2hlbGwtam9icy5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjQxYjg2MGMxN2VmZTA2NTg0OWIwY2JmNDZlODg4MTFhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwYjdlOTFmODI2MzU1MmI2NGQwZjliZWZmMzMxNTAyOTFiMDg2NjE4Y2U0OThjNzFiZjEwMDM1ZTQ4YzdjN2YiCi0KLURFUEVORFMgKz0gImxpYnJzdmctbmF0aXZlIgotCi1QQUNLQUdFUyA9ICIke1BOfS1jdXJzb3JzICR7UE59LXN5bWJvbGljLWhpcmVzICR7UE59LXN5bWJvbGljICR7UE59LWhpcmVzICR7UE59IgotCi1SUkVQTEFDRVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKLVJDT05GTElDVFNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKLVJQUk9WSURFU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgotCi1GSUxFU18ke1BOfS1jdXJzb3JzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL2N1cnNvcnMvIgotRklMRVNfJHtQTn0tc3ltYm9saWMtaGlyZXMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvOTZ4OTYvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS82NHg2NC8qLyouc3ltYm9saWMucG5nIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzQ4eDQ4LyovKi5zeW1ib2xpYy5wbmcgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMzJ4MzIvKi8qLnN5bWJvbGljLnBuZyIKLUZJTEVTXyR7UE59LXN5bWJvbGljID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzE2eDE2LyovKi5zeW1ib2xpYy5wbmcgXAotICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMjR4MjQvKi8qLnN5bWJvbGljLnBuZyBcCi0gICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9zY2FsYWJsZS8qLyotc3ltYm9saWMqLnN2ZyIKLUZJTEVTXyR7UE59LWhpcmVzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzI1NngyNTYvIFwKLSAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzUxMng1MTIvIgotRklMRVNfJHtQTn0gPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvIFwKLSAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9wa2djb25maWcvYWR3YWl0YS1pY29uLXRoZW1lLnBjIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nbm9tZS9hZHdhaXRhLWljb24tdGhlbWVfMy4zNC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMzQuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYTI3MjdiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ25vbWUvYWR3YWl0YS1pY29uLXRoZW1lXzMuMzQuMy5iYgpAQCAtMCwwICsxLDQxIEBACitTVU1NQVJZID0gIkdUSysgaWNvbiB0aGVtZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9hZHdhaXRhLWljb24tdGhlbWUiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9hZHdhaXRhLWljb24tdGhlbWUvaXNzdWVzIgorU0VDVElPTiA9ICJ4MTEvZ25vbWUiCisKK0xJQ0VOU0UgPSAiTEdQTC0zLjAgfCBDQy1CWS1TQS0zLjAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jODRjYWM4OGU0NmZjMDc2NDdlYTA3ZTZjMjRlZWI3YyIKKworaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcgZ2V0dGV4dCBndGstaWNvbi1jYWNoZSB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworTUFKX1ZFUiA9ICIke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9IgorU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXVzZS1BQ19DQU5PTklDQUxfSE9TVC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVJ1bi1pbnN0YWxsYXRpb24tY29tbWFuZHMtYXMtc2hlbGwtam9icy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjlhZWE0YWQ5YmMwMDJhYWNhZDE1NWVlMDc0OGIzNTdmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImU3YzJkOGMyNTkxMjVkNWYzNWVjMDk1MjJiODhjOGZlN2VjZjYyNTIyNGFiMDgxMTIxM2VmMGE5NWQ5MGI5MDgiCisKK0RFUEVORFMgKz0gImxpYnJzdmctbmF0aXZlIgorCitQQUNLQUdFUyA9ICIke1BOfS1jdXJzb3JzICR7UE59LXN5bWJvbGljLWhpcmVzICR7UE59LXN5bWJvbGljICR7UE59LWhpcmVzICR7UE59IgorCitSUkVQTEFDRVNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKK1JDT05GTElDVFNfJHtQTn0gPSAiZ25vbWUtaWNvbi10aGVtZSIKK1JQUk9WSURFU18ke1BOfSA9ICJnbm9tZS1pY29uLXRoZW1lIgorCitGSUxFU18ke1BOfS1jdXJzb3JzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhL2N1cnNvcnMvIgorRklMRVNfJHtQTn0tc3ltYm9saWMtaGlyZXMgPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvOTZ4OTYvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS82NHg2NC8qLyouc3ltYm9saWMucG5nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzQ4eDQ4LyovKi5zeW1ib2xpYy5wbmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMzJ4MzIvKi8qLnN5bWJvbGljLnBuZyIKK0ZJTEVTXyR7UE59LXN5bWJvbGljID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzE2eDE2LyovKi5zeW1ib2xpYy5wbmcgXAorICAgICAgICAgICAgICAgICAgICAgICAgJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvMjR4MjQvKi8qLnN5bWJvbGljLnBuZyBcCisgICAgICAgICAgICAgICAgICAgICAgICAke3ByZWZpeH0vc2hhcmUvaWNvbnMvQWR3YWl0YS9zY2FsYWJsZS8qLyotc3ltYm9saWMqLnN2ZyIKK0ZJTEVTXyR7UE59LWhpcmVzID0gIiR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzI1NngyNTYvIFwKKyAgICAgICAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9pY29ucy9BZHdhaXRhLzUxMng1MTIvIgorRklMRVNfJHtQTn0gPSAiJHtwcmVmaXh9L3NoYXJlL2ljb25zL0Fkd2FpdGEvIFwKKyAgICAgICAgICAgICAgICR7cHJlZml4fS9zaGFyZS9wa2djb25maWcvYWR3YWl0YS1pY29uLXRoZW1lLnBjIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtUG9ydC1jcm9zcy1jb21waWxhdGlvbi1zdXBwb3J0LXRvLW1lc29uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLVBvcnQtY3Jvc3MtY29tcGlsYXRpb24tc3VwcG9ydC10by1tZXNvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjM5ZjljOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtUG9ydC1jcm9zcy1jb21waWxhdGlvbi1zdXBwb3J0LXRvLW1lc29uLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLUZyb20gMDQxN2ExYmIwODc0NWYyYmY1MzEwZDIwYjM0MmMyYjNiOWIyMTJkMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVGh1LCAxNSBOb3YgMjAxOCAxNToxMDowNSArMDEwMAotU3ViamVjdDogW1BBVENIXSBQb3J0IGNyb3NzLWNvbXBpbGF0aW9uIHN1cHBvcnQgdG8gbWVzb24KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLQotLS0tCi0gZ2lyL21lc29uLmJ1aWxkICAgfCA2MiArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQotIG1lc29uLmJ1aWxkICAgICAgIHwgIDQgKystCi0gbWVzb25fb3B0aW9ucy50eHQgfCAyMCArKysrKysrKysrKysrKysKLSAzIGZpbGVzIGNoYW5nZWQsIDY4IGluc2VydGlvbnMoKyksIDE4IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ2lyL21lc29uLmJ1aWxkIGIvZ2lyL21lc29uLmJ1aWxkCi1pbmRleCBjMzEyMTAwLi5hMDI4MDMzIDEwMDY0NAotLS0tIGEvZ2lyL21lc29uLmJ1aWxkCi0rKysgYi9naXIvbWVzb24uYnVpbGQKLUBAIC00MSwxNiArNDEsMjkgQEAgZ2lyX2ZpbGVzID0gWwotIHR5cGVsaWJkaXIgPSBqb2luX3BhdGhzKGdldF9vcHRpb24oJ2xpYmRpcicpLCAnZ2lyZXBvc2l0b3J5LTEuMCcpCi0gaW5zdGFsbF9kYXRhKGdpcl9maWxlcywgaW5zdGFsbF9kaXI6IGdpcmRpcikKLSAKLS1zY2FubmVyX2NvbW1hbmQgPSBbCi0tICBweXRob24sCi0tICBnaXJzY2FubmVyLAotLSAgJy0tb3V0cHV0PUBPVVRQVVRAJywKLS0gICctLW5vLWxpYnRvb2wnLAotLSAgJy0tcXVpZXQnLAotLSAgJy0tcmVwYXJzZS12YWxpZGF0ZScsCi0tICAnLS1hZGQtaW5jbHVkZS1wYXRoJywgam9pbl9wYXRocyhtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpKSwKLS0gICctLWFkZC1pbmNsdWRlLXBhdGgnLCBqb2luX3BhdGhzKG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpKSwKLS1dCi0raWYgZ2V0X29wdGlvbignZW5hYmxlLWhvc3QtZ2knKQotKyAgICBzY2FubmVyX2NvbW1hbmQgPSBbCi0rICAgICAgJ2ctaXItc2Nhbm5lcicsCi0rICAgICAgJy0tb3V0cHV0PUBPVVRQVVRAJywKLSsgICAgICAnLS1uby1saWJ0b29sJywKLSsgICAgICAnLS1xdWlldCcsCi0rICAgICAgJy0tcmVwYXJzZS12YWxpZGF0ZScsCi0rICAgICAgJy0tYWRkLWluY2x1ZGUtcGF0aCcsIGpvaW5fcGF0aHMobWVzb24uY3VycmVudF9idWlsZF9kaXIoKSksCi0rICAgICAgJy0tYWRkLWluY2x1ZGUtcGF0aCcsIGpvaW5fcGF0aHMobWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCkpLAotKyAgICBdCi0rZWxzZQotKyAgICBzY2FubmVyX2NvbW1hbmQgPSBbCi0rICAgICAgcHl0aG9uLAotKyAgICAgIGdpcnNjYW5uZXIsCi0rICAgICAgJy0tb3V0cHV0PUBPVVRQVVRAJywKLSsgICAgICAnLS1uby1saWJ0b29sJywKLSsgICAgICAnLS1xdWlldCcsCi0rICAgICAgJy0tcmVwYXJzZS12YWxpZGF0ZScsCi0rICAgICAgJy0tYWRkLWluY2x1ZGUtcGF0aCcsIGpvaW5fcGF0aHMobWVzb24uY3VycmVudF9idWlsZF9kaXIoKSksCi0rICAgICAgJy0tYWRkLWluY2x1ZGUtcGF0aCcsIGpvaW5fcGF0aHMobWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCkpLAotKyAgICBdCi0rZW5kaWYKLSsKLSAKLSBkZXBfdHlwZSA9IGdsaWJfZGVwLnR5cGVfbmFtZSgpCi0gaWYgZGVwX3R5cGUgPT0gJ2ludGVybmFsJwotQEAgLTYzLDYgKzc2LDEyIEBAIGlmIGRlcF90eXBlID09ICdpbnRlcm5hbCcKLSAgICAgICAgICAgICAgICAgICAgICAgJy0tZXh0cmEtbGlicmFyeT1nbGliLTIuMCcsICctLWV4dHJhLWxpYnJhcnk9Z29iamVjdC0yLjAnXQotIGVuZGlmCi0gCi0raWYgZ2V0X29wdGlvbignZW5hYmxlLWdpLWNyb3NzLXdyYXBwZXInKSAhPSAnJwotKyAgc2Nhbm5lcl9jb21tYW5kICs9IFsnLS11c2UtYmluYXJ5LXdyYXBwZXI9JyArIGdldF9vcHRpb24oJ2VuYWJsZS1naS1jcm9zcy13cmFwcGVyJyldCi0rZW5kaWYKLStpZiBnZXRfb3B0aW9uKCdlbmFibGUtZ2ktbGRkLXdyYXBwZXInKSAhPSAnJwotKyAgc2Nhbm5lcl9jb21tYW5kICs9IFsnLS11c2UtbGRkLXdyYXBwZXI9JyArIGdldF9vcHRpb24oJ2VuYWJsZS1naS1sZGQtd3JhcHBlcicpXQotK2VuZGlmCi0gIyBUYWtlIGEgZ2xvYiBhbmQgcHJpbnQgdG8gbmV3bGluZXMKLSBnbG9iYmVyID0gJycnCi0gZnJvbSBnbG9iIGltcG9ydCBnbG9iCi1AQCAtODksOCArMTA4LDggQEAgZ2xpYl9jb21tYW5kID0gc2Nhbm5lcl9jb21tYW5kICsgWwotIAotIGlmIGRlcF90eXBlID09ICdwa2djb25maWcnCi0gICBnbGliX2NvbW1hbmQgKz0gWyctLWV4dGVybmFsLWxpYnJhcnknLCAnLS1wa2c9Z2xpYi0yLjAnXQotLSAgZ2xpYl9saWJkaXIgPSBnbGliX2RlcC5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdsaWJkaXInKQotLSAgZ2xpYl9pbmNkaXIgPSBqb2luX3BhdGhzKGdsaWJfZGVwLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2luY2x1ZGVkaXInKSwgJ2dsaWItMi4wJykKLSsgIGdsaWJfbGliZGlyID0gZ2V0X29wdGlvbigncGtnY29uZmlnLXN5c3Jvb3QtcGF0aCcpICsgZ2xpYl9kZXAuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnbGliZGlyJykKLSsgIGdsaWJfaW5jZGlyID0gZ2V0X29wdGlvbigncGtnY29uZmlnLXN5c3Jvb3QtcGF0aCcpICsgam9pbl9wYXRocyhnbGliX2RlcC5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdpbmNsdWRlZGlyJyksICdnbGliLTIuMCcpCi0gICBnbGliX2xpYmluY2RpciA9IGpvaW5fcGF0aHMoZ2xpYl9saWJkaXIsICdnbGliLTIuMCcsICdpbmNsdWRlJykKLSAgIGdsaWJfZmlsZXMgKz0gam9pbl9wYXRocyhnbGliX2luY2RpciwgJ2dvYmplY3QnLCAnZ2xpYi10eXBlcy5oJykKLSAgIGdsaWJfZmlsZXMgKz0gam9pbl9wYXRocyhnbGliX2xpYmluY2RpciwgJ2dsaWJjb25maWcuaCcpCi1AQCAtMzQ1LDcgKzM2NCw3IEBAIGlmIGdpb3VuaXhfZGVwLmZvdW5kKCkKLSAgIGRlcF90eXBlID0gZ2lvdW5peF9kZXAudHlwZV9uYW1lKCkKLSAgIGlmIGRlcF90eXBlID09ICdwa2djb25maWcnCi0gICAgIGdpb19jb21tYW5kICs9IFsnLS1wa2c9Z2lvLXVuaXgtMi4wJ10KLS0gICAgZ2lvdW5peF9pbmNsdWRlZGlyID0gam9pbl9wYXRocyhnaW91bml4X2RlcC5nZXRfcGtnY29uZmlnX3ZhcmlhYmxlKCdpbmNsdWRlZGlyJyksICdnaW8tdW5peC0yLjAnKQotKyAgICBnaW91bml4X2luY2x1ZGVkaXIgPSBnZXRfb3B0aW9uKCdwa2djb25maWctc3lzcm9vdC1wYXRoJykgKyBqb2luX3BhdGhzKGdpb3VuaXhfZGVwLmdldF9wa2djb25maWdfdmFyaWFibGUoJ2luY2x1ZGVkaXInKSwgJ2dpby11bml4LTIuMCcpCi0gICAgICMgR2V0IHRoZSBpbnN0YWxsZWQgZ2lvLXVuaXggaGVhZGVyIGxpc3QKLSAgICAgcmV0ID0gcnVuX2NvbW1hbmQocHl0aG9uLCAnLWMnLCBnbG9iYmVyLmZvcm1hdChqb2luX3BhdGhzKGdpb3VuaXhfaW5jbHVkZWRpciwgJ2dpbycsICcqLmgnKSkpCi0gICAgIGlmIHJldC5yZXR1cm5jb2RlKCkgIT0gMAotQEAgLTQyOCwxNSArNDQ3LDI0IEBAIGdpcl9maWxlcyArPSBjdXN0b21fdGFyZ2V0KCdnaXItZ2lyZXBvc2l0b3J5JywKLSApCi0gCi0gdHlwZWxpYnMgPSBbXQotK2lmIGdldF9vcHRpb24oJ2VuYWJsZS1naS1jcm9zcy13cmFwcGVyJykgIT0gJycKLSsgICAgZ2lyY29tcGlsZXJfY29tbWFuZCA9IFtnZXRfb3B0aW9uKCdlbmFibGUtZ2ktY3Jvc3Mtd3JhcHBlcicpLCBnaXJjb21waWxlci5mdWxsX3BhdGgoKSwgJy1vJywgJ0BPVVRQVVRAJywgJ0BJTlBVVEAnLAotKyAgICAgICAgICAgICAgJy0taW5jbHVkZWRpcicsIG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCi0rICAgICAgICAgICAgICAnLS1pbmNsdWRlZGlyJywgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCi0rICAgIF0KLStlbHNlCi0rICAgIGdpcmNvbXBpbGVyX2NvbW1hbmQgPSBbZ2lyY29tcGlsZXIsICctbycsICdAT1VUUFVUQCcsICdASU5QVVRAJywKLSsgICAgICAgICAgICAgICctLWluY2x1ZGVkaXInLCBtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpLAotKyAgICAgICAgICAgICAgJy0taW5jbHVkZWRpcicsIG1lc29uLmN1cnJlbnRfc291cmNlX2RpcigpLAotKyAgICBdCi0rZW5kaWYKLSsKLSBmb3JlYWNoIGdpciA6IGdpcl9maWxlcwotICAgdHlwZWxpYnMgKz0gY3VzdG9tX3RhcmdldCgnZ2VuZXJhdGUtdHlwZWxpYi1AMEAnLmZvcm1hdChnaXIpLnVuZGVyc2NvcmlmeSgpLAotICAgICBpbnB1dDogZ2lyLAotICAgICBvdXRwdXQ6ICdAQkFTRU5BTUVALnR5cGVsaWInLAotICAgICBkZXBlbmRzOiBbZ29iamVjdF9naXIsIF0sCi0tICAgIGNvbW1hbmQ6IFtnaXJjb21waWxlciwgJy1vJywgJ0BPVVRQVVRAJywgJ0BJTlBVVEAnLAotLSAgICAgICAgICAgICAgJy0taW5jbHVkZWRpcicsIG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCksCi0tICAgICAgICAgICAgICAnLS1pbmNsdWRlZGlyJywgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCksCi0tICAgIF0sCi0rICAgIGNvbW1hbmQ6IGdpcmNvbXBpbGVyX2NvbW1hbmQsCi0gICAgIGluc3RhbGw6IHRydWUsCi0gICAgIGluc3RhbGxfZGlyOiB0eXBlbGliZGlyLAotICAgKQotZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IGE1ZTgyNWYuLmEyODQ5MGEgMTAwNjQ0Ci0tLS0gYS9tZXNvbi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQKLUBAIC0xNjgsNyArMTY4LDkgQEAgZW5kaWYKLSBzdWJkaXIoJ2dpcmVwb3NpdG9yeScpCi0gc3ViZGlyKCd0b29scycpCi0gc3ViZGlyKCdnaXNjYW5uZXInKQotLXN1YmRpcignZ2lyJykKLStpZiBnZXRfb3B0aW9uKCdlbmFibGUtaW50cm9zcGVjdGlvbi1kYXRhJykgPT0gdHJ1ZQotKyAgICBzdWJkaXIoJ2dpcicpCi0rZW5kaWYKLSBzdWJkaXIoJ2V4YW1wbGVzJykKLSBzdWJkaXIoJ2RvY3MnKQotIHN1YmRpcigndGVzdHMnKQotZGlmZiAtLWdpdCBhL21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKLWluZGV4IDQ0NWE2OGEuLmEzMjU1MTEgMTAwNjQ0Ci0tLS0gYS9tZXNvbl9vcHRpb25zLnR4dAotKysrIGIvbWVzb25fb3B0aW9ucy50eHQKLUBAIC0yNSwzICsyNSwyMyBAQCBvcHRpb24oJ3B5dGhvbicsIHR5cGU6ICdzdHJpbmcnLCB2YWx1ZTogJ3B5dGhvbjMnLAotIG9wdGlvbignZ2lyX2Rpcl9wcmVmaXgnLCB0eXBlOiAnc3RyaW5nJywKLSAgIGRlc2NyaXB0aW9uOiAnSW50ZXJtZWRpYXRlIHByZWZpeCBmb3IgZ2lyIGluc3RhbGxhdGlvbiB1bmRlciAke3ByZWZpeH0nCi0gKQotKwotK29wdGlvbignZW5hYmxlLWhvc3QtZ2knLCB0eXBlOiAnYm9vbGVhbicsIHZhbHVlIDogZmFsc2UsCi0rICBkZXNjcmlwdGlvbjogJ1VzZSBnb2JqZWN0IGludHJvc3BlY3Rpb24gdG9vbHMgaW5zdGFsbGVkIGluIHRoZSBob3N0IHN5c3RlbSAodXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nKScKLSspCi0rCi0rb3B0aW9uKCdlbmFibGUtZ2ktY3Jvc3Mtd3JhcHBlcicsIHR5cGU6ICdzdHJpbmcnLAotKyAgZGVzY3JpcHRpb246ICdVc2UgYSB3cmFwcGVyIHRvIHJ1biBnaWNvbXBpbGVyIGFuZCBiaW5hcmllcyBwcm9kdWNlZCBieSBnaXNjYW5uZXIgKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZyknCi0rKQotKwotK29wdGlvbignZW5hYmxlLWdpLWxkZC13cmFwcGVyJywgdHlwZTogJ3N0cmluZycsCi0rICBkZXNjcmlwdGlvbjogJ1VzZSBhIGxkZCB3cmFwcGVyIGluc3RlYWQgb2Ygc3lzdGVtIGxkZCBjb21tYW5kIGluIGdpc2Nhbm5lciAodXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nKScKLSspCi0rCi0rb3B0aW9uKCdlbmFibGUtaW50cm9zcGVjdGlvbi1kYXRhJywgdHlwZTogJ2Jvb2xlYW4nLCB2YWx1ZSA6IHRydWUsCi0rICBkZXNjcmlwdGlvbjogJ0J1aWxkIGludHJvc3BlY3Rpb24gZGF0YSAoLmdpciBhbmQgLnR5cGVsaWIgZmlsZXMpIGluIGFkZGl0aW9uIHRvIGxpYnJhcnkgYW5kIHRvb2xzJwotKykKLSsKLStvcHRpb24oJ3BrZ2NvbmZpZy1zeXNyb290LXBhdGgnLCB0eXBlOiAnc3RyaW5nJywKLSsgIGRlc2NyaXB0aW9uOiAnU3BlY2lmeSBhIHN5c3Jvb3QgcGF0aCB0byBwcmVwZW5kIHRvIHBrZ2NvbmZpZyBvdXRwdXQgKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZyknCi0rKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLVJlbG9jYXRlLXRoZS1yZXBvc2l0b3J5LWRpcmVjdG9yeS1mb3ItbmF0aXZlLWJ1aWxkcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1SZWxvY2F0ZS10aGUtcmVwb3NpdG9yeS1kaXJlY3RvcnktZm9yLW5hdGl2ZS1idWlsZHMucGF0Y2gKaW5kZXggYTE1NDAxYS4uOWQ2ZjVkZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLVJlbG9jYXRlLXRoZS1yZXBvc2l0b3J5LWRpcmVjdG9yeS1mb3ItbmF0aXZlLWJ1aWxkcy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtUmVsb2NhdGUtdGhlLXJlcG9zaXRvcnktZGlyZWN0b3J5LWZvci1uYXRpdmUtYnVpbGRzLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA2NzM2MjM4NTFmYjcwYzBlNDNjZjc5Y2VmNjdiMzc1MTQzMmViZTcyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA4ZGZiNDQ0NTBjYTlmZmZjMTU5NzdlOTVlYWRjYjcwNTRhYjYwYTlhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogU2FzY2hhIFNpbGJlIDx4LXlvMTdAc2Utc2lsYmUuZGU+CiBEYXRlOiBGcmksIDggSnVuIDIwMTggMTM6NTU6MTAgKzAyMDAKIFN1YmplY3Q6IFtQQVRDSF0gUmVsb2NhdGUgdGhlIHJlcG9zaXRvcnkgZGlyZWN0b3J5IGZvciBuYXRpdmUgYnVpbGRzCkBAIC0yMSw3ICsyMSw3IEBACiAgMiBmaWxlcyBjaGFuZ2VkLCAxNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvZ2lyZXBvc2l0b3J5L2dpcmVwb3NpdG9yeS5jIGIvZ2lyZXBvc2l0b3J5L2dpcmVwb3NpdG9yeS5jCi1pbmRleCBjYTVkYzJiLi43YTRkMTdmIDEwMDY0NAoraW5kZXggYjc5NDhkNi4uMzlhMjU4NiAxMDA2NDQKIC0tLSBhL2dpcmVwb3NpdG9yeS9naXJlcG9zaXRvcnkuYwogKysrIGIvZ2lyZXBvc2l0b3J5L2dpcmVwb3NpdG9yeS5jCiBAQCAtMjEsNiArMjEsOCBAQApAQCAtNDIsNyArNDIsNyBAQAogIC8qKgogICAqIFNFQ1RJT046Z2lyZXBvc2l0b3J5CiAgICogQHNob3J0X2Rlc2NyaXB0aW9uOiBHT2JqZWN0IEludHJvc3BlY3Rpb24gcmVwb3NpdG9yeSBtYW5hZ2VyCi1AQCAtMjEyLDkgKzIxNiwxNiBAQCBpbml0X2dsb2JhbHMgKHZvaWQpCitAQCAtMjE1LDkgKzIxOSwxNiBAQCBpbml0X2dsb2JhbHMgKHZvaWQpCiAgICAgICAgICAgIGdfZnJlZSAoY3VzdG9tX2RpcnMpOwogICAgICAgICAgfQogIApAQCAtNjIsNyArNjIsNyBAQAogICAgICAgIHR5cGVsaWJfc2VhcmNoX3BhdGggPSBnX3NsaXN0X3ByZXBlbmQgKHR5cGVsaWJfc2VhcmNoX3BhdGgsIHR5cGVsaWJfZGlyKTsKICAKIGRpZmYgLS1naXQgYS9naXJlcG9zaXRvcnkvbWVzb24uYnVpbGQgYi9naXJlcG9zaXRvcnkvbWVzb24uYnVpbGQKLWluZGV4IDFkN2FlZDYuLjU2MzdmYjUgMTAwNjQ0CitpbmRleCAyMDQ2NTlmLi4zZTYxZDMxIDEwMDY0NAogLS0tIGEvZ2lyZXBvc2l0b3J5L21lc29uLmJ1aWxkCiArKysgYi9naXJlcG9zaXRvcnkvbWVzb24uYnVpbGQKIEBAIC00NCw3ICs0NCw3IEBAIGdpcmVwb19pbnRlcm5hbHNfbGliID0gc3RhdGljX2xpYnJhcnkoJ2dpcmVwb3NpdG9yeS1pbnRlcm5hbHMnLApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLWdpc2Nhbm5lci1hZGQtYS1saWItZGlycy1lbnZ2YXItb3B0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLWdpc2Nhbm5lci1hZGQtYS1saWItZGlycy1lbnZ2YXItb3B0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkZGQ5NTUzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMS1naXNjYW5uZXItYWRkLWEtbGliLWRpcnMtZW52dmFyLW9wdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLUZyb20gNjY1M2MyOGYwYjc2YWFkODZlMjZjNTEyYjAzZWZjZWM2ZDlkOWU5NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogV2VkLCAzIEphbiAyMDE4IDE3OjAyOjAxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdpc2Nhbm5lcjogYWRkIGEgLS1saWItZGlycy1lbnZ2YXIgb3B0aW9uCi0KLUJ5IGRlZmF1bHQgTERfTElCUkFSWV9QQVRIIGlzIHNldCB0byB0aGUgbGlzdCBvZiB0YXJnZXQgbGlicmFyeSBwYXRoczsKLXRoaXMgYnJlYWtzIGRvd24gaW4gY3Jvc3MtY29tcGlsYXRpb24gZW52aXJvbm1lbnQsIGFzIHdlIG5lZWQgdG8gcnVuIGEKLW5hdGl2ZSBlbXVsYXRpb24gd3JhcHBlciByYXRoZXIgdGhhbiB0aGUgdGFyZ2V0IGJpbmFyeSBpdHNlbGYuIFRoaXMgcGF0Y2gKLWFsbG93cyBleHBvcnRpbmcgdGhvc2UgcGF0aHMgdG8gYSBkaWZmZXJlbnQgZW52aXJvbm1lbnQgdmFyaWFibGUKLXdoaWNoIGNhbiBiZSBwaWNrZWQgdXAgYW5kIHVzZWQgYnkgdGhlIHdyYXBwZXIuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIGdpc2Nhbm5lci9jY29tcGlsZXIucHkgICB8IDQgKystLQotIGdpc2Nhbm5lci9kdW1wZXIucHkgICAgICB8IDMgKystCi0gZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5IHwgMyArKysKLSAzIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2dpc2Nhbm5lci9jY29tcGlsZXIucHkgYi9naXNjYW5uZXIvY2NvbXBpbGVyLnB5Ci1pbmRleCAzMmM5Mjk2Li4zZmIyNjJiIDEwMDY0NAotLS0tIGEvZ2lzY2FubmVyL2Njb21waWxlci5weQotKysrIGIvZ2lzY2FubmVyL2Njb21waWxlci5weQotQEAgLTE3NCw3ICsxNzQsNyBAQCBjbGFzcyBDQ29tcGlsZXIob2JqZWN0KToKLSAKLSAgICAgICAgICAgICBzZWxmLl9jZmxhZ3Nfbm9fZGVwcmVjYXRpb25fd2FybmluZ3MgPSAiLVduby1kZXByZWNhdGVkLWRlY2xhcmF0aW9ucyIKLSAKLS0gICAgZGVmIGdldF9pbnRlcm5hbF9saW5rX2ZsYWdzKHNlbGYsIGFyZ3MsIGxpYnRvb2wsIGxpYnJhcmllcywgZXh0cmFfbGlicmFyaWVzLCBsaWJwYXRocyk6Ci0rICAgIGRlZiBnZXRfaW50ZXJuYWxfbGlua19mbGFncyhzZWxmLCBhcmdzLCBsaWJ0b29sLCBsaWJyYXJpZXMsIGV4dHJhX2xpYnJhcmllcywgbGlicGF0aHMsIGxpYl9kaXJzX2VudnZhcik6Ci0gICAgICAgICAjIEFuICJpbnRlcm5hbCIgbGluayBpcyB3aGVyZSB0aGUgbGlicmFyeSB0byBiZSBpbnRyb3NwZWN0ZWQKLSAgICAgICAgICMgaXMgYmVpbmcgYnVpbHQgaW4gdGhlIGN1cnJlbnQgZGlyZWN0b3J5LgotIAotQEAgLTE4NCw3ICsxODQsNyBAQCBjbGFzcyBDQ29tcGlsZXIob2JqZWN0KToKLSAgICAgICAgIGlmIG9zLm5hbWUgPT0gJ250JzoKLSAgICAgICAgICAgICBydW50aW1lX3BhdGhfZW52dmFyID0gWydMSUInLCAnUEFUSCddCi0gICAgICAgICBlbHNlOgotLSAgICAgICAgICAgIHJ1bnRpbWVfcGF0aF9lbnZ2YXIgPSBbJ0xEX0xJQlJBUllfUEFUSCcsICdEWUxEX0ZBTExCQUNLX0xJQlJBUllfUEFUSCddCi0rICAgICAgICAgICAgcnVudGltZV9wYXRoX2VudnZhciA9IFsnTERfTElCUkFSWV9QQVRIJywgJ0RZTERfRkFMTEJBQ0tfTElCUkFSWV9QQVRIJ10gaWYgbm90IGxpYl9kaXJzX2VudnZhciBlbHNlIFtsaWJfZGlyc19lbnZ2YXJdCi0gICAgICAgICAgICAgIyBTZWFyY2ggdGhlIGN1cnJlbnQgZGlyZWN0b3J5IGZpcnN0Ci0gICAgICAgICAgICAgIyAoVGhpcyBmbGFnIGlzIG5vdCBzdXBwb3J0ZWQgbm9yIG5lZWRlZCBmb3IgVmlzdWFsIEMrKykKLSAgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLUwuJykKLWRpZmYgLS1naXQgYS9naXNjYW5uZXIvZHVtcGVyLnB5IGIvZ2lzY2FubmVyL2R1bXBlci5weQotaW5kZXggMmI4NTFhNS4uMTBhN2MzOSAxMDA2NDQKLS0tLSBhL2dpc2Nhbm5lci9kdW1wZXIucHkKLSsrKyBiL2dpc2Nhbm5lci9kdW1wZXIucHkKLUBAIC0yNDQsNyArMjQ0LDggQEAgY2xhc3MgRHVtcENvbXBpbGVyKG9iamVjdCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGlidG9vbCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxpYnJhcmllcywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmV4dHJhX2xpYnJhcmllcywKLS0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9vcHRpb25zLmxpYnJhcnlfcGF0aHMpCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fb3B0aW9ucy5saWJyYXJ5X3BhdGhzLAotKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNlbGYuX29wdGlvbnMubGliX2RpcnNfZW52dmFyKQotICAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKHBrZ19jb25maWdfbGlicykKLSAKLSAgICAgICAgIGVsc2U6Ci1kaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5IGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci1pbmRleCA5MDEzNTYyLi45YzlmZTEyIDEwMDY0NAotLS0tIGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci0rKysgYi9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKLUBAIC0xMjYsNiArMTI2LDkgQEAgZGVmIF9nZXRfb3B0aW9uX3BhcnNlcigpOgotICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tdXNlLWxkZC13cmFwcGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9ImxkZF93cmFwcGVyIiwgZGVmYXVsdD1Ob25lLAotICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJ3cmFwcGVyIHRvIHVzZSBpbnN0ZWFkIG9mIGxkZCAodXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nKSIpCi0rICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1saWItZGlycy1lbnZ2YXIiLAotKyAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlIiwgZGVzdD0ibGliX2RpcnNfZW52dmFyIiwgZGVmYXVsdD1Ob25lLAotKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJlbnZpcm9ubWVudCB2YXJpYWJsZSB0byB3cml0ZSBhIGxpc3Qgb2YgbGlicmFyeSBkaXJlY3RvcmllcyB0byAoZm9yIHJ1bm5pbmcgdGhlIHRyYW5zaWVudCBiaW5hcnkpLCBpbnN0ZWFkIG9mIHN0YW5kYXJkIExEX0xJQlJBUllfUEFUSCIpCi0gICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1wcm9ncmFtLWFyZyIsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0iYXBwZW5kIiwgZGVzdD0icHJvZ3JhbV9hcmdzIiwgZGVmYXVsdD1bXSwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iZXh0cmEgYXJndW1lbnRzIHRvIHByb2dyYW0iKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDAxLW1lc29uLmJ1aWxkLWRpc2FibGUtdGVzdHMtd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtbWVzb24uYnVpbGQtZGlzYWJsZS10ZXN0cy13aGVuLWNyb3NzLWNvbXBpbGluZy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYzQ5NTFiMi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDEtbWVzb24uYnVpbGQtZGlzYWJsZS10ZXN0cy13aGVuLWNyb3NzLWNvbXBpbGluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZyb20gMmMzODQxODdjYzIyMTEzYzBjOWIxY2QyMzM5NDgxMThmN2MwODVlZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyNSBNYXIgMjAxOSAxMzoyODo0OCArMDEwMAotU3ViamVjdDogW1BBVENIXSBtZXNvbi5idWlsZDogZGlzYWJsZSB0ZXN0cyB3aGVuIGNyb3NzLWNvbXBpbGluZwotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dvYmplY3QtaW50cm9zcGVjdGlvbi9tZXJnZV9yZXF1ZXN0cy82NF0KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotLS0tCi0gbWVzb24uYnVpbGQgfCA0ICsrKy0KLSAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCAyNTQ0ZmYzLi40YzE2ZmU1IDEwMDY0NAotLS0tIGEvbWVzb24uYnVpbGQKLSsrKyBiL21lc29uLmJ1aWxkCi1AQCAtMTY4LDcgKzE2OCw5IEBAIGlmIGdldF9vcHRpb24oJ2VuYWJsZS1pbnRyb3NwZWN0aW9uLWRhdGEnKSA9PSB0cnVlCi0gZW5kaWYKLSBzdWJkaXIoJ2V4YW1wbGVzJykKLSBzdWJkaXIoJ2RvY3MnKQotLXN1YmRpcigndGVzdHMnKQotK2lmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpCi0rICAgIHN1YmRpcigndGVzdHMnKQotK2VuZGlmCi0gCi0gaW5zdGFsbF9kYXRhKCdNYWtlZmlsZS5pbnRyb3NwZWN0aW9uJywgaW5zdGFsbF9kaXI6IGpvaW5fcGF0aHMoZ2V0X29wdGlvbignZGF0YWRpcicpLCAnZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCcpKQotIGluc3RhbGxfZGF0YSgnbTQvaW50cm9zcGVjdGlvbi5tNCcsIGluc3RhbGxfZGlyOiBqb2luX3BhdGhzKGdldF9vcHRpb24oJ2RhdGFkaXInKSwgJ2FjbG9jYWwnKSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMy1naXNjYW5uZXItYWRkLXVzZS1iaW5hcnktd3JhcHBlci1vcHRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDMtZ2lzY2FubmVyLWFkZC11c2UtYmluYXJ5LXdyYXBwZXItb3B0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTU0ZGNlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwMy1naXNjYW5uZXItYWRkLXVzZS1iaW5hcnktd3JhcHBlci1vcHRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1Gcm9tIDVmOTg1ZmQ4YTI0NzY0Y2NiMzhhZjYzMzVkNDU4NGQ3ZTMzZmMzYTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTkgT2N0IDIwMTUgMTg6MjY6NDAgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ2lzY2FubmVyOiBhZGQgLS11c2UtYmluYXJ5LXdyYXBwZXIgb3B0aW9uCi0KLVdpdGggdGhpcyBvcHRpb24sIGdpc2Nhbm5lciB3aWxsIHVzZSBhIHdyYXBwZXIgZXhlY3V0YWJsZSB0byBydW4KLWJpbmFyaWVzIGl0J3MgcHJvZHVjaW5nLCBpbnN0ZWFkIG9mIHJ1bm5pbmcgdGhlbSBkaXJlY3RseS4gVGhpcwotaXMgdXNlZnVsIHdoZW4gYmluYXJpZXMgYXJlIGNyb3NzLWNvbXBpbGVkIGFuZCBjYW5ub3QgYmUgcnVuIGRpcmVjdGx5LAotYnV0IHRoZXkgY2FuIGJlIHJ1biB1c2luZyBmb3IgZXhhbXBsZSBRRU1VIGVtdWxhdGlvbi4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBsaXN0XQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIGdpc2Nhbm5lci9zY2FubmVybWFpbi5weSB8IDE0ICsrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDE0IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weSBiL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQotaW5kZXggYzAwNGZiMS4uMGI2YTJkMiAxMDA2NDQKLS0tLSBhL2dpc2Nhbm5lci9zY2FubmVybWFpbi5weQotKysrIGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci1AQCAtMTIwLDYgKzEyMCw5IEBAIGRlZiBfZ2V0X29wdGlvbl9wYXJzZXIoKToKLSAgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXByb2dyYW0iLAotICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249InN0b3JlIiwgZGVzdD0icHJvZ3JhbSIsIGRlZmF1bHQ9Tm9uZSwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0icHJvZ3JhbSB0byBleGVjdXRlIikKLSsgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXVzZS1iaW5hcnktd3JhcHBlciIsCi0rICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJ3cmFwcGVyIiwgZGVmYXVsdD1Ob25lLAotKyAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJ3cmFwcGVyIHRvIHVzZSBmb3IgcnVubmluZyBwcm9ncmFtcyAodXNlZnVsIHdoZW4gY3Jvc3MtY29tcGlsaW5nKSIpCi0gICAgIHBhcnNlci5hZGRfb3B0aW9uKCIiLCAiLS1wcm9ncmFtLWFyZyIsCi0gICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0iYXBwZW5kIiwgZGVzdD0icHJvZ3JhbV9hcmdzIiwgZGVmYXVsdD1bXSwKLSAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iZXh0cmEgYXJndW1lbnRzIHRvIHByb2dyYW0iKQotQEAgLTQxNyw2ICs0MjAsMTcgQEAgZGVmIGNyZWF0ZV9iaW5hcnkodHJhbnNmb3JtZXIsIG9wdGlvbnMsIGFyZ3MpOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBnZHVtcF9wYXJzZXIuZ2V0X2Vycm9yX3F1YXJrX2Z1bmN0aW9ucygpKQotIAotICAgICBzaGxpYnMgPSByZXNvbHZlX3NobGlicyhvcHRpb25zLCBiaW5hcnksIG9wdGlvbnMubGlicmFyaWVzKQotKyAgICBpZiBvcHRpb25zLndyYXBwZXI6Ci0rICAgICAgICAjIFRoZSB3cmFwcGVyIG5lZWRzIHRoZSBiaW5hcnkgaXRzZWxmLCBub3QgdGhlIGxpYnRvb2wgd3JhcHBlciBzY3JpcHQsCi0rICAgICAgICAjIHNvIHdlIGNoZWNrIGlmIGxpYnRvb2wgaGFzIHNuZWFrZWQgdGhlIGJpbmFyeSBpbnRvIC5saWJzIHN1YmRpcmVjdG9yeQotKyAgICAgICAgIyBhbmQgYWRqdXN0IHRoZSBwYXRoIGFjY29yZGluZ2x5Ci0rICAgICAgICBpbXBvcnQgb3MucGF0aAotKyAgICAgICAgZGlyX25hbWUsIGJpbmFyeV9uYW1lICA9IG9zLnBhdGguc3BsaXQoYmluYXJ5LmFyZ3NbMF0pCi0rICAgICAgICBsaWJ0b29sX2JpbmFyeSA9IG9zLnBhdGguam9pbihkaXJfbmFtZSwgJy5saWJzJywgYmluYXJ5X25hbWUpCi0rICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhsaWJ0b29sX2JpbmFyeSk6Ci0rICAgICAgICAgICAgYmluYXJ5LmFyZ3NbMF0gPSBsaWJ0b29sX2JpbmFyeQotKwkjIFRoZW4gcHJlcGVuZCB0aGUgd3JhcHBlciB0byB0aGUgY29tbWFuZCBsaW5lIHRvIGV4ZWN1dGUKLSsgICAgICAgIGJpbmFyeS5hcmdzID0gW29wdGlvbnMud3JhcHBlcl0gKyBiaW5hcnkuYXJncwotICAgICBnZHVtcF9wYXJzZXIuc2V0X2ludHJvc3BlY3Rpb25fYmluYXJ5KGJpbmFyeSkKLSAgICAgZ2R1bXBfcGFyc2VyLnBhcnNlKCkKLSAgICAgcmV0dXJuIHNobGlicwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3OTI2NGVkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb24vMDAwNC1naXNjYW5uZXItYWRkLWEtdXNlLWxkZC13cmFwcGVyLW9wdGlvbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLUZyb20gY2JhNzgwNzg4OGE0YTFmMWQ2MzBkMTZjNTFjODk4NTkyMDkzMzRiMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogRnJpLCAzMCBPY3QgMjAxNSAxNjoyODo0NiArMDIwMAotU3ViamVjdDogW1BBVENIXSBnaXNjYW5uZXI6IGFkZCBhIC0tdXNlLWxkZC13cmFwcGVyIG9wdGlvbgotCi1UaGlzIGlzIHVzZWZ1bCBpbiBjcm9zcy1jb21waWxlIGVudmlyb25tZW50cyB3aGVyZSBzeXN0ZW0ncyBsZGQKLWNvbW1hbmQgZG9lcyBub3Qgd29yayBvbiBiaW5hcmllcyBidWlsdCBmb3IgYSBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IGluIG9lLWNvcmVdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLQotLS0tCi0gZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5IHwgMyArKysKLSBnaXNjYW5uZXIvc2hsaWJzLnB5ICAgICAgfCA0ICsrKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5IGIvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci1pbmRleCAwYjZhMmQyLi45MDEzNTYyIDEwMDY0NAotLS0tIGEvZ2lzY2FubmVyL3NjYW5uZXJtYWluLnB5Ci0rKysgYi9naXNjYW5uZXIvc2Nhbm5lcm1haW4ucHkKLUBAIC0xMjMsNiArMTIzLDkgQEAgZGVmIF9nZXRfb3B0aW9uX3BhcnNlcigpOgotICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tdXNlLWJpbmFyeS13cmFwcGVyIiwKLSAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSJzdG9yZSIsIGRlc3Q9IndyYXBwZXIiLCBkZWZhdWx0PU5vbmUsCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9IndyYXBwZXIgdG8gdXNlIGZvciBydW5uaW5nIHByb2dyYW1zICh1c2VmdWwgd2hlbiBjcm9zcy1jb21waWxpbmcpIikKLSsgICAgcGFyc2VyLmFkZF9vcHRpb24oIiIsICItLXVzZS1sZGQtd3JhcHBlciIsCi0rICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0ic3RvcmUiLCBkZXN0PSJsZGRfd3JhcHBlciIsIGRlZmF1bHQ9Tm9uZSwKLSsgICAgICAgICAgICAgICAgICAgICAgaGVscD0id3JhcHBlciB0byB1c2UgaW5zdGVhZCBvZiBsZGQgKHVzZWZ1bCB3aGVuIGNyb3NzLWNvbXBpbGluZykiKQotICAgICBwYXJzZXIuYWRkX29wdGlvbigiIiwgIi0tcHJvZ3JhbS1hcmciLAotICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249ImFwcGVuZCIsIGRlc3Q9InByb2dyYW1fYXJncyIsIGRlZmF1bHQ9W10sCi0gICAgICAgICAgICAgICAgICAgICAgIGhlbHA9ImV4dHJhIGFyZ3VtZW50cyB0byBwcm9ncmFtIikKLWRpZmYgLS1naXQgYS9naXNjYW5uZXIvc2hsaWJzLnB5IGIvZ2lzY2FubmVyL3NobGlicy5weQotaW5kZXggMmM2MWYyZi4uZDY3ZGY5NSAxMDA2NDQKLS0tLSBhL2dpc2Nhbm5lci9zaGxpYnMucHkKLSsrKyBiL2dpc2Nhbm5lci9zaGxpYnMucHkKLUBAIC05Niw3ICs5Niw5IEBAIGRlZiBfcmVzb2x2ZV9ub25fbGlidG9vbChvcHRpb25zLCBiaW5hcnksIGxpYnJhcmllcyk6Ci0gICAgICAgICAgICAgYXJncy5leHRlbmQobGlidG9vbCkKLSAgICAgICAgICAgICBhcmdzLmFwcGVuZCgnLS1tb2RlPWV4ZWN1dGUnKQotICAgICAgICAgcGxhdGZvcm1fc3lzdGVtID0gcGxhdGZvcm0uc3lzdGVtKCkKLS0gICAgICAgIGlmIHBsYXRmb3JtX3N5c3RlbSA9PSAnRGFyd2luJzoKLSsgICAgICAgIGlmIG9wdGlvbnMubGRkX3dyYXBwZXI6Ci0rICAgICAgICAgICAgYXJncy5leHRlbmQoW29wdGlvbnMubGRkX3dyYXBwZXIsIGJpbmFyeS5hcmdzWzBdXSkKLSsgICAgICAgIGVsaWYgcGxhdGZvcm1fc3lzdGVtID09ICdEYXJ3aW4nOgotICAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnb3Rvb2wnLCAnLUwnLCBiaW5hcnkuYXJnc1swXV0pCi0gICAgICAgICBlbHNlOgotICAgICAgICAgICAgIGFyZ3MuZXh0ZW5kKFsnbGRkJywgYmluYXJ5LmFyZ3NbMF1dKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbi8wMDA1LVByZWZpeC1wa2ctY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTkZJR19TWVNST09UX0RJUi0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjZmOGRhNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLUZyb20gNzQwZDkxMTUxZmZlNTc2ZTBjMDg1MTNhZjlkN2JjODEzM2ViOWRmYiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogVGh1LCA4IE9jdCAyMDE1IDE4OjMwOjM1ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIFByZWZpeCBwa2ctY29uZmlnIHBhdGhzIHdpdGggUEtHX0NPTkZJR19TWVNST09UX0RJUgotIGVudmlyb25tZW50IHZhcmlhYmxlCi0KLVRoaXMgZW52aXJvbm1lbnQgdmFyaWFibGUgc2V0cyB0aGUgbG9jYXRpb24gb2Ygc3lzcm9vdCBkaXJlY3RvcnkgaW4gY3Jvc3MtY29tcGlsYXRpb24KLWVudmlyb25tZW50czsgaWYgdGhlIHZhcmlhYmxlIGlzIG5vdCBzZXQsIHRoZSBwcmVmaXggd2lsbCBiZSBlbXB0eS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBsaXN0XQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIG00L2ludHJvc3BlY3Rpb24ubTQgfCA4ICsrKystLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL200L2ludHJvc3BlY3Rpb24ubTQgYi9tNC9pbnRyb3NwZWN0aW9uLm00Ci1pbmRleCBkODljM2Q5Li5iNTYyMjY2IDEwMDY0NAotLS0tIGEvbTQvaW50cm9zcGVjdGlvbi5tNAotKysrIGIvbTQvaW50cm9zcGVjdGlvbi5tNAotQEAgLTU2LDE0ICs1NiwxNCBAQCBtNF9kZWZpbmUoW19HT0JKRUNUX0lOVFJPU1BFQ1RJT05fQ0hFQ0tfSU5URVJOQUxdLAotICAgICBJTlRST1NQRUNUSU9OX0dJUkRJUj0KLSAgICAgSU5UUk9TUEVDVElPTl9UWVBFTElCRElSPQotICAgICBpZiB0ZXN0ICJ4JGZvdW5kX2ludHJvc3BlY3Rpb24iID0gInh5ZXMiOyB0aGVuCi0tICAgICAgIElOVFJPU1BFQ1RJT05fU0NBTk5FUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX3NjYW5uZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLS0gICAgICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2NvbXBpbGVyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgICAgIElOVFJPU1BFQ1RJT05fR0VORVJBVEU9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9nZW5lcmF0ZSBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotKyAgICAgICBJTlRST1NQRUNUSU9OX1NDQU5ORVI9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX3NjYW5uZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSsgICAgICAgSU5UUk9TUEVDVElPTl9DT01QSUxFUj0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfY29tcGlsZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSsgICAgICAgSU5UUk9TUEVDVElPTl9HRU5FUkFURT0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfZ2VuZXJhdGUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSAgICAgICAgSU5UUk9TUEVDVElPTl9HSVJESVI9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z2lyZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0gICAgICAgIElOVFJPU1BFQ1RJT05fVFlQRUxJQkRJUj0iJCgkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPXR5cGVsaWJkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMCkiCi0gICAgICAgIElOVFJPU1BFQ1RJT05fQ0ZMQUdTPWAkUEtHX0NPTkZJRyAtLWNmbGFncyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotICAgICAgICBJTlRST1NQRUNUSU9OX0xJQlM9YCRQS0dfQ09ORklHIC0tbGlicyBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgICAgICBJTlRST1NQRUNUSU9OX01BS0VGSUxFPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWRhdGFkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uCi0rICAgICAgIElOVFJPU1BFQ1RJT05fTUFLRUZJTEU9JFBLR19DT05GSUdfU1lTUk9PVF9ESVJgJFBLR19DT05GSUcgLS12YXJpYWJsZT1kYXRhZGlyIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvTWFrZWZpbGUuaW50cm9zcGVjdGlvbgotICAgICBmaQotICAgICBBQ19TVUJTVChJTlRST1NQRUNUSU9OX1NDQU5ORVIpCi0gICAgIEFDX1NVQlNUKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nb2JqZWN0LWludHJvc3BlY3Rpb24vZ29iamVjdC1pbnRyb3NwZWN0aW9uXzEuNjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS42Mi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhOTczOWNjLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS42Mi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjA4ICswLDAgQEAKLVNVTU1BUlkgPSAiTWlkZGxld2FyZSBsYXllciBiZXR3ZWVuIEdPYmplY3QtdXNpbmcgQyBsaWJyYXJpZXMgYW5kIGxhbmd1YWdlIGJpbmRpbmdzIgotREVTQ1JJUFRJT04gPSAiR09iamVjdCBJbnRyb3NwZWN0aW9uIGlzIGEgcHJvamVjdCBmb3IgcHJvdmlkaW5nIG1hY2hpbmUgXAotcmVhZGFibGUgaW50cm9zcGVjdGlvbiBkYXRhIG9mIHRoZSBBUEkgb2YgQyBsaWJyYXJpZXMuIFRoaXMgaW50cm9zcGVjdGlvbiBcCi1kYXRhIGNhbiBiZSB1c2VkIGluIHNldmVyYWwgZGlmZmVyZW50IHVzZSBjYXNlcywgZm9yIGV4YW1wbGUgYXV0b21hdGljIGNvZGUgXAotZ2VuZXJhdGlvbiBmb3IgYmluZGluZ3MsIEFQSSB2ZXJpZmljYXRpb24gYW5kIGRvY3VtZW50YXRpb24gZ2VuZXJhdGlvbi4iCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL2FjdGlvbi9zaG93L1Byb2plY3RzL0dPYmplY3RJbnRyb3NwZWN0aW9uIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2lzc3VlcyIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyKyAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWM0MzRlODEyOGE2OGJlZGQ1OWI4MGIyYWMxZWIxYzRhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rvb2xzL2NvbXBpbGVyLmM7ZW5kbGluZT0yMDttZDU9ZmM1MDA3ZmMyMDAyMjcyMGU2YzBiMGNkZGU0MWZhYmQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lzY2FubmVyL3NvdXJjZXNjYW5uZXIuYztlbmRsaW5lPTIyO21kNT0xOTRkNmUwYzFkMDA2NjJmMzJkMDMwY2U0NGRlOGQzOSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9naXJlcG9zaXRvcnkvZ2lyZWdpc3RlcmVkdHlwZWluZm8uYztlbmRsaW5lPTIxO21kNT02NjE4NDc2MTFhZTY5Nzk0NjU0MTVmMzFhNzU5YmEyNyBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0vJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWdpc2Nhbm5lci1hZGQtdXNlLWJpbmFyeS13cmFwcGVyLW9wdGlvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDA0LWdpc2Nhbm5lci1hZGQtYS11c2UtbGRkLXdyYXBwZXItb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDUtUHJlZml4LXBrZy1jb25maWctcGF0aHMtd2l0aC1QS0dfQ09ORklHX1NZU1JPT1RfRElSLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdpc2Nhbm5lci1hZGQtYS1saWItZGlycy1lbnZ2YXItb3B0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ2lzY2FubmVyLWlnbm9yZS1lcnJvci1yZXR1cm4tY29kZXMtZnJvbS1sZGQtd3JhcHBlci5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVBvcnQtY3Jvc3MtY29tcGlsYXRpb24tc3VwcG9ydC10by1tZXNvbi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lc29uLmJ1aWxkLWRpc2FibGUtdGVzdHMtd2hlbi1jcm9zcy1jb21waWxpbmcucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzNzI3OGVhYjM3MDRlNDIyMzRiNjA4MGI4Y2YyNDFmMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMWVlN2VkMjU3ZmRiYzAwODcwMmJkZmYwZmYzZTc4YTY2MGU3ZTYwMmVmYThmMjExZGM4OWI5ZDFlN2Q5MGEyIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly8wMDAxLVJlbG9jYXRlLXRoZS1yZXBvc2l0b3J5LWRpcmVjdG9yeS1mb3ItbmF0aXZlLWJ1aWxkcy5wYXRjaCIKLQotaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZ3RrLWRvYyBweXRob24zbmF0aXZlIHFlbXUgZ29iamVjdC1pbnRyb3NwZWN0aW9uLWRhdGEgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIG11bHRpbGliX3NjcmlwdAotCi1HVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCi0KLU1VTFRJTElCX1NDUklQVFMgPSAiJHtQTn06JHtiaW5kaXJ9L2ctaXItYW5ub3RhdGlvbi10b29sICR7UE59OiR7YmluZGlyfS9nLWlyLXNjYW5uZXIiCi0KLURFUEVORFNfYXBwZW5kID0gIiBsaWJmZmkgemxpYiBnbGliLTIuMCBweXRob24zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSBhdXRvY29uZi1hcmNoaXZlIgotCi0jIHRhcmdldCBidWlsZCBuZWVkcyBxZW11IHRvIHJ1biB0ZW1wb3JhcnkgaW50cm9zcGVjdGlvbiBiaW5hcmllcyBjcmVhdGVkCi0jIG9uIHRoZSBmbHkgYnkgZy1pci1zY2FubmVyIGFuZCBhIG5hdGl2ZSB2ZXJzaW9uIG9mIGl0c2VsZiB0byBydW4KLSMgbmF0aXZlIHZlcnNpb25zIG9mIGl0cyBvd24gdG9vbHMgZHVyaW5nIGJ1aWxkLgotIyBBbHNvIHByZWxpbmstcnRsZCBpcyB1c2VkIHRvIGZpbmQgb3V0IGxpYnJhcnkgZGVwZW5kZW5jaWVzIG9mIGludHJvc3BlY3Rpb24gYmluYXJpZXMKLSMgKHN0YW5kYXJkIGxkZCBkb2Vzbid0IHdvcmsgd2hlbiBjcm9zcy1jb21waWxpbmcpLgotREVQRU5EU19jbGFzcy10YXJnZXRfYXBwZW5kID0gIiBnb2JqZWN0LWludHJvc3BlY3Rpb24tbmF0aXZlIHFlbXUtbmF0aXZlIHByZWxpbmstbmF0aXZlIgotCi0jIG5lZWRlZCBmb3Igd3JpdGluZyBvdXQgdGhlIHFlbXUgd3JhcHBlciBzY3JpcHQKLWV4cG9ydCBTVEFHSU5HX0RJUl9IT1NUCi1leHBvcnQgQgotCi1QQUNLQUdFQ09ORklHID89ICIiCi1QQUNLQUdFQ09ORklHW2RvY3Rvb2xdID0gIi1EZG9jdG9vbD10cnVlLC1EZG9jdG9vbD1mYWxzZSxweXRob24zLW1ha28sIgotCi0jIENvbmZpZ3VyZSB0YXJnZXQgYnVpbGQgdG8gdXNlIG5hdGl2ZSB0b29scyBvZiBpdHNlbGYgYW5kIHRvIHVzZSBhIHFlbXUgd3JhcHBlcgotIyBhbmQgb3B0aW9uYWxseSB0byBnZW5lcmF0ZSBpbnRyb3NwZWN0aW9uIGRhdGEKLUVYVFJBX09FTUVTT05fY2xhc3MtdGFyZ2V0ID0gIiBcCi0gICAgLURlbmFibGUtaG9zdC1naT10cnVlIFwKLSAgICAtRGVuYWJsZS1naS1jcm9zcy13cmFwcGVyPSR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIFwKLSAgICAtRGVuYWJsZS1naS1sZGQtd3JhcHBlcj0ke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIFwKLSAgICAtRHBrZ2NvbmZpZy1zeXNyb290LXBhdGg9JHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy1EZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YT10cnVlJywgJy1EZW5hYmxlLWludHJvc3BlY3Rpb24tZGF0YT1mYWxzZScsIGQpfSBcCi0gICAgJHtAJy1EZ2lyX2Rpcl9wcmVmaXg9JHtsaWJkaXJ9JyBpZiBkLmdldFZhcignTVVMVElMSUJTJykgZWxzZSAnJ30gXAotIgotCi0jIE5lZWQgdG8gZW5zdXJlIGxkLnNvLmNvbmYgZXhpc3RzIHNvIHByZWxpbmstbmF0aXZlIHdvcmtzCi0jIGJvdGggYmVmb3JlIHdlIGJ1aWxkIGFuZCBpZiB3ZSBpbnN0YWxsIGZyb20gc3N0YXRlCi1kb19jb25maWd1cmVbcHJlZnVuY3NdICs9ICJnb2JqZWN0X2ludHJvc3BlY3Rpb25fcHJlY29uZmlndXJlIgotcHl0aG9uIGdvYmplY3RfaW50cm9zcGVjdGlvbl9wcmVjb25maWd1cmUgKCkgewotICAgIG9lLnV0aWxzLndyaXRlX2xkX3NvX2NvbmYoZCkKLX0KLQotZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgICAgICAjIFR3ZWFrIHRoZSBuYXRpdmUgcHl0aG9uIHNjcmlwdHMgc28gdGhhdCB0aGV5IGRvbid0IHJlZmVyIHRvIHRoZQotICAgICAgICAjIGZ1bGwgcGF0aCBvZiBuYXRpdmUgcHl0aG9uIGJpbmFyeSAodGhlIHNvbHV0aW9uIGlzIHRha2VuIGZyb20gZ2xpYi0yLjAgcmVjaXBlKQotICAgICAgICAjIFRoaXMgcmVtb3ZlcyB0aGUgcmlzayBvZiBleGNlZWRpbmcgTGludXgga2VybmVsJ3Mgc2hlYmFuZyBsaW5lIGxpbWl0ICgxMjggYnl0ZXMpCi0gICAgICAgIHNlZCAtaSAtZSAnMXMsIyEuKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsJyAke1N9L3Rvb2xzL2ctaXItdG9vbC10ZW1wbGF0ZS5pbgotfQotCi1kb19jb25maWd1cmVfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgICAgICMgV3JpdGUgb3V0IGEgcWVtdSB3cmFwcGVyIHRoYXQgd2lsbCBiZSBnaXZlbiB0byBnaS1zY2FubmVyIHNvIHRoYXQgaXQKLSAgICAgICAgIyBjYW4gcnVuIHRhcmdldCBoZWxwZXIgYmluYXJpZXMgdGhyb3VnaCB0aGF0LgotICAgICAgICBxZW11X2JpbmFyeT0iJHtAcWVtdV93cmFwcGVyX2NtZGxpbmUoZCwgJyRTVEFHSU5HX0RJUl9IT1NUJywgWydcXCRHSVJfRVhUUkFfTElCU19QQVRIJywnLmxpYnMnLCckU1RBR0lOR19ESVJfSE9TVC8ke2xpYmRpcn0nLCckU1RBR0lOR19ESVJfSE9TVC8ke2Jhc2VfbGliZGlyfSddKX0iCi0gICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0jIFVzZSBhIG1vZHVsZXMgZGlyZWN0b3J5IHdoaWNoIGRvZXNuJ3QgZXhpc3Qgc28gd2UgZG9uJ3QgbG9hZCByYW5kb20gdGhpbmdzCi0jIHdoaWNoIG1heSB0aGVuIGdldCBkZWxldGVkIChvciB0aGVpciBkZXBlbmRlbmNpZXMpIGFuZCBwb3RlbnRpYWxseSBzZWdmYXVsdAotZXhwb3J0IEdJT19NT0RVTEVfRElSPSR7U1RBR0lOR19MSUJESVJ9L2dpby9tb2R1bGVzLWR1bW15Ci0KLSRxZW11X2JpbmFyeSAiXCRAIgotaWYgWyBcJD8gLW5lIDAgXTsgdGhlbgotICAgIGVjaG8gIklmIHRoZSBhYm92ZSBlcnJvciBtZXNzYWdlIGlzIGFib3V0IG1pc3NpbmcgLnNvIGxpYnJhcmllcywgdGhlbiBzZXR0aW5nIHVwIEdJUl9FWFRSQV9MSUJTX1BBVEggaW4gdGhlIHJlY2lwZSBzaG91bGQgaGVscC4iCi0gICAgZWNobyAiKHR5cGljYWxseSBsaWtlIHRoaXM6IEdJUl9FWFRSQV9MSUJTX1BBVEg9XCIkIiJ7Qn0vc29tZXRoaW5nLy5saWJzXCIgKSIKLSAgICBleGl0IDEKLWZpCi1FT0YKLSAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIKLQotICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgZm9yIGctaXItc2Nhbm5lciBpdHNlbGYsIHdoaWNoIHdpbGwgYmUgdXNlZCB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMKLSAgICAgICAgIyBmb3IgZ2xpYi1iYXNlZCBwYWNrYWdlcy4gVGhpcyB3cmFwcGVyIGNhbGxzIHRoZSBuYXRpdmUgdmVyc2lvbiBvZiB0aGUgc2Nhbm5lciwgYW5kIHRlbGxzIGl0IHRvIHVzZQotICAgICAgICAjIGEgcWVtdSB3cmFwcGVyIGZvciBydW5uaW5nIHRyYW5zaWVudCB0YXJnZXQgYmluYXJpZXMgcHJvZHVjZWQgYnkgdGhlIHNjYW5uZXIsIGFuZCBhbiBpbmNsdWRlIGRpcmVjdG9yeQotICAgICAgICAjIGZyb20gdGhlIHRhcmdldCBzeXNyb290LgotICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyIDw8IEVPRgotIyEvYmluL3NoCi0jIFRoaXMgcHJldmVudHMgZy1pci1zY2FubmVyIGZyb20gd3JpdGluZyBjYWNoZSBkYXRhIHRvICRIT01FCi1leHBvcnQgR0lfU0NBTk5FUl9ESVNBQkxFX0NBQ0hFPTEKLQotZy1pci1zY2FubmVyIC0tbGliLWRpcnMtZW52dmFyPUdJUl9FWFRSQV9MSUJTX1BBVEggLS11c2UtYmluYXJ5LXdyYXBwZXI9JHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIC0tdXNlLWxkZC13cmFwcGVyPSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIC0tYWRkLWluY2x1ZGUtcGF0aD0ke1NUQUdJTkdfREFUQURJUn0vZ2lyLTEuMCAtLWFkZC1pbmNsdWRlLXBhdGg9JHtTVEFHSU5HX0xJQkRJUn0vZ2lyLTEuMCAiXCRAIgotRU9GCi0gICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLXdyYXBwZXIKLQotICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgZm9yIGctaXItY29tcGlsZXIsIHdoaWNoIHJ1bnMgdGhlIHRhcmdldCB2ZXJzaW9uIG9mIGl0IHRocm91Z2ggcWVtdS4KLSAgICAgICAgIyBnLWlyLWNvbXBpbGVyIHdyaXRlcyBvdXQgdGhlIHJhdyBjb250ZW50IG9mIGEgQyBzdHJ1Y3QgdG8gZGlzaywgYW5kIHRoZXJlZm9yZSBpcyBhcmNoaXRlY3R1cmUgZGVwZW5kZW50LgotICAgICAgICBjYXQgPiAke0J9L2ctaXItY29tcGlsZXItd3JhcHBlciA8PCBFT0YKLSMhL2Jpbi9zaAotJHtTVEFHSU5HX0JJTkRJUn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyICR7U1RBR0lOR19CSU5ESVJ9L2ctaXItY29tcGlsZXIgIlwkQCIKLUVPRgotICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItY29tcGlsZXItd3JhcHBlcgotCi0gICAgICAgICMgV3JpdGUgb3V0IGEgd3JhcHBlciB0byB1c2UgaW5zdGVhZCBvZiBsZGQsIHdoaWNoIGRvZXMgbm90IHdvcmsgd2hlbiBhIGJpbmFyeSBpcyBidWlsdAotICAgICAgICAjIGZvciBhIGRpZmZlcmVudCBhcmNoaXRlY3R1cmUKLSAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciA8PCBFT0YKLSMhL2Jpbi9zaAotcHJlbGluay1ydGxkIC0tcm9vdD0kU1RBR0lOR19ESVJfSE9TVCAiXCRAIgotRU9GCi0gICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIKLQotICAgICAgICAjIEFsc28gdHdlYWsgdGhlIHRhcmdldCBweXRob24gc2NyaXB0cyBzbyB0aGF0IHRoZXkgZG9uJ3QgcmVmZXIgdG8gdGhlCi0gICAgICAgICMgbmF0aXZlIHZlcnNpb24gb2YgcHl0aG9uIGJpbmFyeSAodGhlIHNvbHV0aW9uIGlzIHRha2VuIGZyb20gZ2xpYi0yLjAgcmVjaXBlKQotICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtTfS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICAgICAjIFRoaXMgcHJldmVudHMgZy1pci1zY2FubmVyIGZyb20gd3JpdGluZyBjYWNoZSBkYXRhIHRvICRIT01FCi0gICAgICAgIGV4cG9ydCBHSV9TQ0FOTkVSX0RJU0FCTEVfQ0FDSEU9MQotCi0gICAgICAgICMgTmVlZGVkIHRvIHJ1biBnLWlyIHVuaXQgdGVzdHMsIHdoaWNoIHdvbid0IGJlIGFibGUgdG8gZmluZCB0aGUgYnVpbHQgbGlicmFyaWVzIG90aGVyd2lzZQotICAgICAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0kQi8ubGlicwotfQotCi0jIE91ciB3cmFwcGVycyBuZWVkIHRvIGJlIGF2YWlsYWJsZSBzeXN0ZW0td2lkZSwgYmVjYXVzZSB0aGV5IHdpbGwgYmUgdXNlZAotIyB0byBidWlsZCBpbnRyb3NwZWN0aW9uIGZpbGVzIGZvciBhbGwgb3RoZXIgZ29iamVjdC1iYXNlZCBwYWNrYWdlcwotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgewotICAgICAgICBpbnN0YWxsIC1kICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItcWVtdXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCi0gICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgJHtEfSR7YmluZGlyfS8KLSAgICAgICAgaW5zdGFsbCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyICR7RH0ke2JpbmRpcn0vCi19Ci0KLSMgd2UgbmVlZCB0YXJnZXQgdmVyc2lvbnMgb2YgaW50cm9zcGVjdGlvbiB0b29scyBpbiBzeXNyb290IHNvIHRoYXQgdGhleSBjYW4gYmUgcnVuIHZpYSBxZW11Ci0jIHdoZW4gYnVpbGRpbmcgaW50cm9zcGVjdGlvbiBmaWxlcyBpbiBvdGhlciBwYWNrYWdlcwotU1lTUk9PVF9ESVJTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7YmluZGlyfSIKLQotU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiIGdpX2JpbmFyaWVzX3N5c3Jvb3RfcHJlcHJvY2VzcyIKLWdpX2JpbmFyaWVzX3N5c3Jvb3RfcHJlcHJvY2VzcygpIHsKLSAgICAgICAgIyBUd2VhayB0aGUgYmluYXJ5IG5hbWVzIGluIHRoZSBpbnRyb3NwZWN0aW9uIHBrZ2NvbmZpZyBmaWxlLCBzbyB0aGF0IGl0Ci0gICAgICAgICMgcGlja3MgdXAgb3VyIHdyYXBwZXJzIHdoaWNoIGRvIHRoZSBjcm9zcy1jb21waWxlIGFuZCBxZW11IG1hZ2ljLgotICAgICAgICBzZWQgLWkgXAotICAgICAgICAgICAtZSAic3xnX2lyX3NjYW5uZXI9Lip8Z19pcl9zY2FubmVyPSR7YmluZGlyfS9nLWlyLXNjYW5uZXItd3JhcHBlcnwiIFwKLSAgICAgICAgICAgLWUgInN8Z19pcl9jb21waWxlcj0uKnxnX2lyX2NvbXBpbGVyPSR7YmluZGlyfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXJ8IiBcCi0gICAgICAgICAgICR7U1lTUk9PVF9ERVNURElSfSR7bGliZGlyfS9wa2djb25maWcvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC5wYwotfQotCi1TWVNST09UX1BSRVBST0NFU1NfRlVOQ1NfYXBwZW5kID0gIiBnaV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MiCi1naV9sZHNvY29uZl9zeXNyb290X3ByZXByb2Nlc3MgKCkgewotCW1rZGlyIC1wICR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfQotCWRlc3Q9JHtTWVNST09UX0RFU1RESVJ9JHtiaW5kaXJ9L3Bvc3RpbnN0LWxkc29jb25mLSR7UE59Ci0JZWNobyAiIyEvYmluL3NoIiA+ICRkZXN0Ci0JZWNobyAibWtkaXIgLXAgJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfSIgPj4gJGRlc3QKLQllY2hvICJlY2hvICR7YmFzZV9saWJkaXJ9ID4+ICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0vbGQuc28uY29uZiIgPj4gJGRlc3QKLQllY2hvICJlY2hvICR7bGliZGlyfSA+PiAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYiID4+ICRkZXN0Ci0JY2htb2QgNzU1ICRkZXN0Ci19Ci0KLSMgUmVtb3ZlIHdyYXBwZXIgZmlsZXMgZnJvbSB0aGUgcGFja2FnZSwgb25seSB1c2VkIGZvciBjcm9zcy1jb21waWxpbmcKLVBBQ0tBR0VfUFJFUFJPQ0VTU19GVU5DUyArPSAiZ2lfcGFja2FnZV9wcmVwcm9jZXNzIgotZ2lfcGFja2FnZV9wcmVwcm9jZXNzKCkgewotCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCi0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItd3JhcHBlcgotCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyCi0Jcm0gLWYgJHtQS0dEfSR7YmluZGlyfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlcgotfQotCi1TU1RBVEVfU0NBTl9GSUxFUyArPSAiZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyIGctaXItc2Nhbm5lci13cmFwcGVyIGctaXItY29tcGlsZXItd3JhcHBlciBnLWlyLXNjYW5uZXItbGRkd3JhcHBlciBHaW8tMi4wLmdpciBwb3N0aW5zdC1sZHNvY29uZi0ke1BOfSIKLQotIyAudHlwZWxpYiBmaWxlcyBhcmUgbmVlZGVkIGF0IHJ1bnRpbWUgYW5kIHNvIHRoZXkgZ28gdG8gdGhlIG1haW4gcGFja2FnZQotRklMRVNfJHtQTn1fYXBwZW5kID0gIiAke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LSovKi50eXBlbGliIgotCi0jIC5naXIgZmlsZXMgZ28gdG8gZGV2IHBhY2thZ2UsIGFzIHRoZXkncmUgbmVlZGVkIGZvciBkZXZlbG9waW5nIChidXQgbm90IGZvciBydW5uaW5nKQotIyB0aGluZ3MgdGhhdCBkZXBlbmRzIG9uIGludHJvc3BlY3Rpb24uCi1GSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dpci0qLyouZ2lyICR7bGliZGlyfS9naXItKi8qLmdpciIKLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ2lyLSovKi5ybmMiCi0KLSMgVGhlc2UgYXJlIHVzZWQgYnkgZ29iamVjdC1iYXNlZCBwYWNrYWdlcwotIyB0byBnZW5lcmF0ZSB0cmFuc2llbnQgaW50cm9zcGVjdGlvbiBiaW5hcmllcwotRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL2dkdW1wLmMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL01ha2VmaWxlLmludHJvc3BlY3Rpb24iCi0KLSMgVGhlc2UgYXJlIHVzZWQgYnkgZGVwZW5kZW50IHBhY2thZ2VzIChlLmcuIHB5Z29iamVjdCkgdG8gYnVpbGQgdGhlaXIKLSMgdGVzdHN1aXRlcy4KLUZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmMgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL3Rlc3RzLyouaCIKLQotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dpc2Nhbm5lci8uZGVidWcvIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dpc2Nhbm5lci8qLmEiCi0KLVJERVBFTkRTXyR7UE59ID0gInB5dGhvbjMtcGlja2xlIHB5dGhvbjMteG1sIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS42NC4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ29iamVjdC1pbnRyb3NwZWN0aW9uL2dvYmplY3QtaW50cm9zcGVjdGlvbl8xLjY0LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOWRmYjU1ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dvYmplY3QtaW50cm9zcGVjdGlvbi9nb2JqZWN0LWludHJvc3BlY3Rpb25fMS42NC4xLmJiCkBAIC0wLDAgKzEsMjAyIEBACitTVU1NQVJZID0gIk1pZGRsZXdhcmUgbGF5ZXIgYmV0d2VlbiBHT2JqZWN0LXVzaW5nIEMgbGlicmFyaWVzIGFuZCBsYW5ndWFnZSBiaW5kaW5ncyIKK0RFU0NSSVBUSU9OID0gIkdPYmplY3QgSW50cm9zcGVjdGlvbiBpcyBhIHByb2plY3QgZm9yIHByb3ZpZGluZyBtYWNoaW5lIFwKK3JlYWRhYmxlIGludHJvc3BlY3Rpb24gZGF0YSBvZiB0aGUgQVBJIG9mIEMgbGlicmFyaWVzLiBUaGlzIGludHJvc3BlY3Rpb24gXAorZGF0YSBjYW4gYmUgdXNlZCBpbiBzZXZlcmFsIGRpZmZlcmVudCB1c2UgY2FzZXMsIGZvciBleGFtcGxlIGF1dG9tYXRpYyBjb2RlIFwKK2dlbmVyYXRpb24gZm9yIGJpbmRpbmdzLCBBUEkgdmVyaWZpY2F0aW9uIGFuZCBkb2N1bWVudGF0aW9uIGdlbmVyYXRpb24uIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9hY3Rpb24vc2hvdy9Qcm9qZWN0cy9HT2JqZWN0SW50cm9zcGVjdGlvbiIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dvYmplY3QtaW50cm9zcGVjdGlvbi9pc3N1ZXMiCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2MisgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jNDM0ZTgxMjhhNjhiZWRkNTliODBiMmFjMWViMWM0YSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly90b29scy9jb21waWxlci5jO2VuZGxpbmU9MjA7bWQ1PWZjNTAwN2ZjMjAwMjI3MjBlNmMwYjBjZGRlNDFmYWJkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dpc2Nhbm5lci9zb3VyY2VzY2FubmVyLmM7ZW5kbGluZT0yMjttZDU9MTk0ZDZlMGMxZDAwNjYyZjMyZDAzMGNlNDRkZThkMzkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ2lyZXBvc2l0b3J5L2dpcmVnaXN0ZXJlZHR5cGVpbmZvLmM7ZW5kbGluZT0yMTttZDU9NjYxODQ3NjExYWU2OTc5NDY1NDE1ZjMxYTc1OWJhMjcgXAorICAgICAgICAgICAgICAgICAgICAiCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke0BvZS51dGlscy50cmltX3ZlcnNpb24oIiR7UFZ9IiwgMil9LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1naXNjYW5uZXItaWdub3JlLWVycm9yLXJldHVybi1jb2Rlcy1mcm9tLWxkZC13cmFwcGVyLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzQxOWRmZDA4NmVmY2Y4Mzc2OGUwNTc5YWI2YWJkMmIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiODBiZWFlNjcyOGMxMzQ1MjE5MjZhZmZmZjliMmU5NzEyNTc0OWIzOGQzODc0NGRjOTAxZjQwMTBlZTNlN2ZhNyIKKworU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vMDAwMS1SZWxvY2F0ZS10aGUtcmVwb3NpdG9yeS1kaXJlY3RvcnktZm9yLW5hdGl2ZS1idWlsZHMucGF0Y2giCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIGd0ay1kb2MgcHl0aG9uM25hdGl2ZSBxZW11IGdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBtdWx0aWxpYl9zY3JpcHQKKworR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59OiR7YmluZGlyfS9nLWlyLWFubm90YXRpb24tdG9vbCAke1BOfToke2JpbmRpcn0vZy1pci1zY2FubmVyIgorCitERVBFTkRTX2FwcGVuZCA9ICIgbGliZmZpIHpsaWIgZ2xpYi0yLjAgcHl0aG9uMyBmbGV4LW5hdGl2ZSBiaXNvbi1uYXRpdmUgYXV0b2NvbmYtYXJjaGl2ZSIKKworIyB0YXJnZXQgYnVpbGQgbmVlZHMgcWVtdSB0byBydW4gdGVtcG9yYXJ5IGludHJvc3BlY3Rpb24gYmluYXJpZXMgY3JlYXRlZAorIyBvbiB0aGUgZmx5IGJ5IGctaXItc2Nhbm5lciBhbmQgYSBuYXRpdmUgdmVyc2lvbiBvZiBpdHNlbGYgdG8gcnVuCisjIG5hdGl2ZSB2ZXJzaW9ucyBvZiBpdHMgb3duIHRvb2xzIGR1cmluZyBidWlsZC4KKyMgQWxzbyBwcmVsaW5rLXJ0bGQgaXMgdXNlZCB0byBmaW5kIG91dCBsaWJyYXJ5IGRlcGVuZGVuY2llcyBvZiBpbnRyb3NwZWN0aW9uIGJpbmFyaWVzCisjIChzdGFuZGFyZCBsZGQgZG9lc24ndCB3b3JrIHdoZW4gY3Jvc3MtY29tcGlsaW5nKS4KK0RFUEVORFNfY2xhc3MtdGFyZ2V0X2FwcGVuZCA9ICIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLW5hdGl2ZSBxZW11LW5hdGl2ZSBwcmVsaW5rLW5hdGl2ZSIKKworIyBuZWVkZWQgZm9yIHdyaXRpbmcgb3V0IHRoZSBxZW11IHdyYXBwZXIgc2NyaXB0CitleHBvcnQgU1RBR0lOR19ESVJfSE9TVAorZXhwb3J0IEIKKworUEFDS0FHRUNPTkZJRyA/PSAiIgorUEFDS0FHRUNPTkZJR1tkb2N0b29sXSA9ICItRGRvY3Rvb2w9ZW5hYmxlZCwtRGRvY3Rvb2w9ZGlzYWJsZWQscHl0aG9uMy1tYWtvLCIKKworIyBDb25maWd1cmUgdGFyZ2V0IGJ1aWxkIHRvIHVzZSBuYXRpdmUgdG9vbHMgb2YgaXRzZWxmIGFuZCB0byB1c2UgYSBxZW11IHdyYXBwZXIKKyMgYW5kIG9wdGlvbmFsbHkgdG8gZ2VuZXJhdGUgaW50cm9zcGVjdGlvbiBkYXRhCitFWFRSQV9PRU1FU09OX2NsYXNzLXRhcmdldCA9ICIgXAorICAgIC1EZ2lfY3Jvc3NfdXNlX2hvc3RfZ2k9dHJ1ZSBcCisgICAgLURnaV9jcm9zc19iaW5hcnlfd3JhcHBlcj0ke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciBcCisgICAgLURnaV9jcm9zc19sZGRfd3JhcHBlcj0ke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyIFwKKyAgICAtRGdpX2Nyb3NzX3BrZ2NvbmZpZ19zeXNyb290X3BhdGg9JHtQS0dfQ09ORklHX1NZU1JPT1RfRElSfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0dJX0RBVEFfRU5BQkxFRCcsICdUcnVlJywgJy1EYnVpbGRfaW50cm9zcGVjdGlvbl9kYXRhPXRydWUnLCAnLURidWlsZF9pbnRyb3NwZWN0aW9uX2RhdGE9ZmFsc2UnLCBkKX0gXAorICAgICR7QCctRGdpcl9kaXJfcHJlZml4PSR7bGliZGlyfScgaWYgZC5nZXRWYXIoJ01VTFRJTElCUycpIGVsc2UgJyd9IFwKKyIKKworIyBOZWVkIHRvIGVuc3VyZSBsZC5zby5jb25mIGV4aXN0cyBzbyBwcmVsaW5rLW5hdGl2ZSB3b3JrcworIyBib3RoIGJlZm9yZSB3ZSBidWlsZCBhbmQgaWYgd2UgaW5zdGFsbCBmcm9tIHNzdGF0ZQorZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZ29iamVjdF9pbnRyb3NwZWN0aW9uX3ByZWNvbmZpZ3VyZSIKK3B5dGhvbiBnb2JqZWN0X2ludHJvc3BlY3Rpb25fcHJlY29uZmlndXJlICgpIHsKKyAgICBvZS51dGlscy53cml0ZV9sZF9zb19jb25mKGQpCit9CisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKyAgICAgICAgIyBUd2VhayB0aGUgbmF0aXZlIHB5dGhvbiBzY3JpcHRzIHNvIHRoYXQgdGhleSBkb24ndCByZWZlciB0byB0aGUKKyAgICAgICAgIyBmdWxsIHBhdGggb2YgbmF0aXZlIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKKyAgICAgICAgIyBUaGlzIHJlbW92ZXMgdGhlIHJpc2sgb2YgZXhjZWVkaW5nIExpbnV4IGtlcm5lbCdzIHNoZWJhbmcgbGluZSBsaW1pdCAoMTI4IGJ5dGVzKQorICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLiosIyEke1VTUkJJTlBBVEh9L2VudiBweXRob24zLCcgJHtTfS90b29scy9nLWlyLXRvb2wtdGVtcGxhdGUuaW4KK30KKworZG9fY29uZmlndXJlX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICAgICAjIFdyaXRlIG91dCBhIHFlbXUgd3JhcHBlciB0aGF0IHdpbGwgYmUgZ2l2ZW4gdG8gZ2ktc2Nhbm5lciBzbyB0aGF0IGl0CisgICAgICAgICMgY2FuIHJ1biB0YXJnZXQgaGVscGVyIGJpbmFyaWVzIHRocm91Z2ggdGhhdC4KKyAgICAgICAgcWVtdV9iaW5hcnk9IiR7QHFlbXVfd3JhcHBlcl9jbWRsaW5lKGQsICckU1RBR0lOR19ESVJfSE9TVCcsIFsnXFwkR0lSX0VYVFJBX0xJQlNfUEFUSCcsJy5saWJzJywnJFNUQUdJTkdfRElSX0hPU1QvJHtsaWJkaXJ9JywnJFNUQUdJTkdfRElSX0hPU1QvJHtiYXNlX2xpYmRpcn0nXSl9IgorICAgICAgICBjYXQgPiAke0J9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciA8PCBFT0YKKyMhL2Jpbi9zaAorIyBVc2UgYSBtb2R1bGVzIGRpcmVjdG9yeSB3aGljaCBkb2Vzbid0IGV4aXN0IHNvIHdlIGRvbid0IGxvYWQgcmFuZG9tIHRoaW5ncworIyB3aGljaCBtYXkgdGhlbiBnZXQgZGVsZXRlZCAob3IgdGhlaXIgZGVwZW5kZW5jaWVzKSBhbmQgcG90ZW50aWFsbHkgc2VnZmF1bHQKK2V4cG9ydCBHSU9fTU9EVUxFX0RJUj0ke1NUQUdJTkdfTElCRElSfS9naW8vbW9kdWxlcy1kdW1teQorCiskcWVtdV9iaW5hcnkgIlwkQCIKK2lmIFsgXCQ/IC1uZSAwIF07IHRoZW4KKyAgICBlY2hvICJJZiB0aGUgYWJvdmUgZXJyb3IgbWVzc2FnZSBpcyBhYm91dCBtaXNzaW5nIC5zbyBsaWJyYXJpZXMsIHRoZW4gc2V0dGluZyB1cCBHSVJfRVhUUkFfTElCU19QQVRIIGluIHRoZSByZWNpcGUgc2hvdWxkIGhlbHAuIgorICAgIGVjaG8gIih0eXBpY2FsbHkgbGlrZSB0aGlzOiBHSVJfRVhUUkFfTElCU19QQVRIPVwiJCIie0J9L3NvbWV0aGluZy8ubGlic1wiICkiCisgICAgZXhpdCAxCitmaQorRU9GCisgICAgICAgIGNobW9kICt4ICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLXNjYW5uZXIgaXRzZWxmLCB3aGljaCB3aWxsIGJlIHVzZWQgd2hlbiBidWlsZGluZyBpbnRyb3NwZWN0aW9uIGZpbGVzCisgICAgICAgICMgZm9yIGdsaWItYmFzZWQgcGFja2FnZXMuIFRoaXMgd3JhcHBlciBjYWxscyB0aGUgbmF0aXZlIHZlcnNpb24gb2YgdGhlIHNjYW5uZXIsIGFuZCB0ZWxscyBpdCB0byB1c2UKKyAgICAgICAgIyBhIHFlbXUgd3JhcHBlciBmb3IgcnVubmluZyB0cmFuc2llbnQgdGFyZ2V0IGJpbmFyaWVzIHByb2R1Y2VkIGJ5IHRoZSBzY2FubmVyLCBhbmQgYW4gaW5jbHVkZSBkaXJlY3RvcnkKKyAgICAgICAgIyBmcm9tIHRoZSB0YXJnZXQgc3lzcm9vdC4KKyAgICAgICAgY2F0ID4gJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciA8PCBFT0YKKyMhL2Jpbi9zaAorIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQorZXhwb3J0IEdJX1NDQU5ORVJfRElTQUJMRV9DQUNIRT0xCisKK2ctaXItc2Nhbm5lciAtLWxpYi1kaXJzLWVudnZhcj1HSVJfRVhUUkFfTElCU19QQVRIIC0tdXNlLWJpbmFyeS13cmFwcGVyPSR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAtLXVzZS1sZGQtd3JhcHBlcj0ke1NUQUdJTkdfQklORElSfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAtLWFkZC1pbmNsdWRlLXBhdGg9JHtTVEFHSU5HX0RBVEFESVJ9L2dpci0xLjAgLS1hZGQtaW5jbHVkZS1wYXRoPSR7U1RBR0lOR19MSUJESVJ9L2dpci0xLjAgIlwkQCIKK0VPRgorICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci13cmFwcGVyCisKKyAgICAgICAgIyBXcml0ZSBvdXQgYSB3cmFwcGVyIGZvciBnLWlyLWNvbXBpbGVyLCB3aGljaCBydW5zIHRoZSB0YXJnZXQgdmVyc2lvbiBvZiBpdCB0aHJvdWdoIHFlbXUuCisgICAgICAgICMgZy1pci1jb21waWxlciB3cml0ZXMgb3V0IHRoZSByYXcgY29udGVudCBvZiBhIEMgc3RydWN0IHRvIGRpc2ssIGFuZCB0aGVyZWZvcmUgaXMgYXJjaGl0ZWN0dXJlIGRlcGVuZGVudC4KKyAgICAgICAgY2F0ID4gJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKKyR7U1RBR0lOR19CSU5ESVJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlciAke1NUQUdJTkdfQklORElSfS9nLWlyLWNvbXBpbGVyICJcJEAiCitFT0YKKyAgICAgICAgY2htb2QgK3ggJHtCfS9nLWlyLWNvbXBpbGVyLXdyYXBwZXIKKworICAgICAgICAjIFdyaXRlIG91dCBhIHdyYXBwZXIgdG8gdXNlIGluc3RlYWQgb2YgbGRkLCB3aGljaCBkb2VzIG5vdCB3b3JrIHdoZW4gYSBiaW5hcnkgaXMgYnVpbHQKKyAgICAgICAgIyBmb3IgYSBkaWZmZXJlbnQgYXJjaGl0ZWN0dXJlCisgICAgICAgIGNhdCA+ICR7Qn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgPDwgRU9GCisjIS9iaW4vc2gKK3ByZWxpbmstcnRsZCAtLXJvb3Q9JFNUQUdJTkdfRElSX0hPU1QgIlwkQCIKK0VPRgorICAgICAgICBjaG1vZCAreCAke0J9L2ctaXItc2Nhbm5lci1sZGR3cmFwcGVyCisKKyAgICAgICAgIyBBbHNvIHR3ZWFrIHRoZSB0YXJnZXQgcHl0aG9uIHNjcmlwdHMgc28gdGhhdCB0aGV5IGRvbid0IHJlZmVyIHRvIHRoZQorICAgICAgICAjIG5hdGl2ZSB2ZXJzaW9uIG9mIHB5dGhvbiBiaW5hcnkgKHRoZSBzb2x1dGlvbiBpcyB0YWtlbiBmcm9tIGdsaWItMi4wIHJlY2lwZSkKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qLCMhJHtVU1JCSU5QQVRIfS9lbnYgcHl0aG9uMywnICR7U30vdG9vbHMvZy1pci10b29sLXRlbXBsYXRlLmluCit9CisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAgICAgIyBUaGlzIHByZXZlbnRzIGctaXItc2Nhbm5lciBmcm9tIHdyaXRpbmcgY2FjaGUgZGF0YSB0byAkSE9NRQorICAgICAgICBleHBvcnQgR0lfU0NBTk5FUl9ESVNBQkxFX0NBQ0hFPTEKKworICAgICAgICAjIE5lZWRlZCB0byBydW4gZy1pciB1bml0IHRlc3RzLCB3aGljaCB3b24ndCBiZSBhYmxlIHRvIGZpbmQgdGhlIGJ1aWx0IGxpYnJhcmllcyBvdGhlcndpc2UKKyAgICAgICAgZXhwb3J0IEdJUl9FWFRSQV9MSUJTX1BBVEg9JEIvLmxpYnMKK30KKworIyBPdXIgd3JhcHBlcnMgbmVlZCB0byBiZSBhdmFpbGFibGUgc3lzdGVtLXdpZGUsIGJlY2F1c2UgdGhleSB3aWxsIGJlIHVzZWQKKyMgdG8gYnVpbGQgaW50cm9zcGVjdGlvbiBmaWxlcyBmb3IgYWxsIG90aGVyIGdvYmplY3QtYmFzZWQgcGFja2FnZXMKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1zY2FubmVyLXFlbXV3cmFwcGVyICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItd3JhcHBlciAke0R9JHtiaW5kaXJ9LworICAgICAgICBpbnN0YWxsICR7Qn0vZy1pci1jb21waWxlci13cmFwcGVyICR7RH0ke2JpbmRpcn0vCisgICAgICAgIGluc3RhbGwgJHtCfS9nLWlyLXNjYW5uZXItbGRkd3JhcHBlciAke0R9JHtiaW5kaXJ9LworfQorCisjIHdlIG5lZWQgdGFyZ2V0IHZlcnNpb25zIG9mIGludHJvc3BlY3Rpb24gdG9vbHMgaW4gc3lzcm9vdCBzbyB0aGF0IHRoZXkgY2FuIGJlIHJ1biB2aWEgcWVtdQorIyB3aGVuIGJ1aWxkaW5nIGludHJvc3BlY3Rpb24gZmlsZXMgaW4gb3RoZXIgcGFja2FnZXMKK1NZU1JPT1RfRElSU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke2JpbmRpcn0iCisKK1NZU1JPT1RfUFJFUFJPQ0VTU19GVU5DU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBnaV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MiCitnaV9iaW5hcmllc19zeXNyb290X3ByZXByb2Nlc3MoKSB7CisgICAgICAgICMgVHdlYWsgdGhlIGJpbmFyeSBuYW1lcyBpbiB0aGUgaW50cm9zcGVjdGlvbiBwa2djb25maWcgZmlsZSwgc28gdGhhdCBpdAorICAgICAgICAjIHBpY2tzIHVwIG91ciB3cmFwcGVycyB3aGljaCBkbyB0aGUgY3Jvc3MtY29tcGlsZSBhbmQgcWVtdSBtYWdpYy4KKyAgICAgICAgc2VkIC1pIFwKKyAgICAgICAgICAgLWUgInN8Z19pcl9zY2FubmVyPS4qfGdfaXJfc2Nhbm5lcj0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXdyYXBwZXJ8IiBcCisgICAgICAgICAgIC1lICJzfGdfaXJfY29tcGlsZXI9Lip8Z19pcl9jb21waWxlcj0ke2JpbmRpcn0vZy1pci1jb21waWxlci13cmFwcGVyfCIgXAorICAgICAgICAgICAke1NZU1JPT1RfREVTVERJUn0ke2xpYmRpcn0vcGtnY29uZmlnL2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAucGMKK30KKworU1lTUk9PVF9QUkVQUk9DRVNTX0ZVTkNTX2FwcGVuZCA9ICIgZ2lfbGRzb2NvbmZfc3lzcm9vdF9wcmVwcm9jZXNzIgorZ2lfbGRzb2NvbmZfc3lzcm9vdF9wcmVwcm9jZXNzICgpIHsKKwlta2RpciAtcCAke1NZU1JPT1RfREVTVERJUn0ke2JpbmRpcn0KKwlkZXN0PSR7U1lTUk9PVF9ERVNURElSfSR7YmluZGlyfS9wb3N0aW5zdC1sZHNvY29uZi0ke1BOfQorCWVjaG8gIiMhL2Jpbi9zaCIgPiAkZGVzdAorCWVjaG8gIm1rZGlyIC1wICR7U1RBR0lOR19ESVJfVEFSR0VUfSR7c3lzY29uZmRpcn0iID4+ICRkZXN0CisJZWNobyAiZWNobyAke2Jhc2VfbGliZGlyfSA+PiAke1NUQUdJTkdfRElSX1RBUkdFVH0ke3N5c2NvbmZkaXJ9L2xkLnNvLmNvbmYiID4+ICRkZXN0CisJZWNobyAiZWNobyAke2xpYmRpcn0gPj4gJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtzeXNjb25mZGlyfS9sZC5zby5jb25mIiA+PiAkZGVzdAorCWNobW9kIDc1NSAkZGVzdAorfQorCisjIFJlbW92ZSB3cmFwcGVyIGZpbGVzIGZyb20gdGhlIHBhY2thZ2UsIG9ubHkgdXNlZCBmb3IgY3Jvc3MtY29tcGlsaW5nCitQQUNLQUdFX1BSRVBST0NFU1NfRlVOQ1MgKz0gImdpX3BhY2thZ2VfcHJlcHJvY2VzcyIKK2dpX3BhY2thZ2VfcHJlcHJvY2VzcygpIHsKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItc2Nhbm5lci1xZW11d3JhcHBlcgorCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLXdyYXBwZXIKKwlybSAtZiAke1BLR0R9JHtiaW5kaXJ9L2ctaXItY29tcGlsZXItd3JhcHBlcgorCXJtIC1mICR7UEtHRH0ke2JpbmRpcn0vZy1pci1zY2FubmVyLWxkZHdyYXBwZXIKK30KKworU1NUQVRFX1NDQU5fRklMRVMgKz0gImctaXItc2Nhbm5lci1xZW11d3JhcHBlciBnLWlyLXNjYW5uZXItd3JhcHBlciBnLWlyLWNvbXBpbGVyLXdyYXBwZXIgZy1pci1zY2FubmVyLWxkZHdyYXBwZXIgR2lvLTIuMC5naXIgcG9zdGluc3QtbGRzb2NvbmYtJHtQTn0iCisKKyMgLnR5cGVsaWIgZmlsZXMgYXJlIG5lZWRlZCBhdCBydW50aW1lIGFuZCBzbyB0aGV5IGdvIHRvIHRoZSBtYWluIHBhY2thZ2UKK0ZJTEVTXyR7UE59X2FwcGVuZCA9ICIgJHtsaWJkaXJ9L2dpcmVwb3NpdG9yeS0qLyoudHlwZWxpYiIKKworIyAuZ2lyIGZpbGVzIGdvIHRvIGRldiBwYWNrYWdlLCBhcyB0aGV5J3JlIG5lZWRlZCBmb3IgZGV2ZWxvcGluZyAoYnV0IG5vdCBmb3IgcnVubmluZykKKyMgdGhpbmdzIHRoYXQgZGVwZW5kcyBvbiBpbnRyb3NwZWN0aW9uLgorRklMRVNfJHtQTn0tZGV2X2FwcGVuZCA9ICIgJHtkYXRhZGlyfS9naXItKi8qLmdpciAke2xpYmRpcn0vZ2lyLSovKi5naXIiCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dpci0qLyoucm5jIgorCisjIFRoZXNlIGFyZSB1c2VkIGJ5IGdvYmplY3QtYmFzZWQgcGFja2FnZXMKKyMgdG8gZ2VuZXJhdGUgdHJhbnNpZW50IGludHJvc3BlY3Rpb24gYmluYXJpZXMKK0ZJTEVTXyR7UE59LWRldl9hcHBlbmQgPSAiICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9nZHVtcC5jIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uIgorCisjIFRoZXNlIGFyZSB1c2VkIGJ5IGRlcGVuZGVudCBwYWNrYWdlcyAoZS5nLiBweWdvYmplY3QpIHRvIGJ1aWxkIHRoZWlyCisjIHRlc3RzdWl0ZXMuCitGSUxFU18ke1BOfS1kZXZfYXBwZW5kID0gIiAke2RhdGFkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi0xLjAvdGVzdHMvKi5jIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC90ZXN0cy8qLmgiCisKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvLmRlYnVnLyIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dvYmplY3QtaW50cm9zcGVjdGlvbi9naXNjYW5uZXIvKi5hIgorCitSREVQRU5EU18ke1BOfSA9ICJweXRob24zLXBpY2tsZSBweXRob24zLXhtbCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXNfMy4zNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMzQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWVhNTc4Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXNfMy4zNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJHTk9NRSBkZXNrdG9wLXdpZGUgR1NldHRpbmdzIHNjaGVtYXMiCi1ERVNDUklQVElPTiA9ICJHU2V0dGluZ3MgZGVza3RvcC13aWRlIHNjaGVtYXMgY29udGFpbnMgYSBjb2xsZWN0aW9uIG9mIFwKLUdTZXR0aW5ncyBzY2hlbWFzIGZvciBzZXR0aW5ncyBzaGFyZWQgYnkgdmFyaW91cyBjb21wb25lbnRzIG9mIGEgZGVza3RvcC4iCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvaXNzdWVzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAiCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi0KLWluaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiOTc1OWVmNTNmYjJlNTNmYzhkMTkxOTBlNThmMmMzMzIiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIyODhiMDQyNjBmNzA0MGIwZTAwNGE4ZDU5Yzc3M2NmYjRlMzJkZjRmMWI0YTBmOWQ3MDVjNTFhZmNjYzk1ZWFkIgotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRG8tbm90LXNraXAtZ2lyLWluc3RhbGxhdGlvbi1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcy9nc2V0dGluZ3MtZGVza3RvcC1zY2hlbWFzXzMuMzYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjM2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTY4MTc1ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hc18zLjM2LjAuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJHTk9NRSBkZXNrdG9wLXdpZGUgR1NldHRpbmdzIHNjaGVtYXMiCitERVNDUklQVElPTiA9ICJHU2V0dGluZ3MgZGVza3RvcC13aWRlIHNjaGVtYXMgY29udGFpbnMgYSBjb2xsZWN0aW9uIG9mIFwKK0dTZXR0aW5ncyBzY2hlbWFzIGZvciBzZXR0aW5ncyBzaGFyZWQgYnkgdmFyaW91cyBjb21wb25lbnRzIG9mIGEgZGVza3RvcC4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvZ3NldHRpbmdzLWRlc2t0b3Atc2NoZW1hcyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRsYWIuZ25vbWUub3JnL0dOT01FL2dzZXR0aW5ncy1kZXNrdG9wLXNjaGVtYXMvaXNzdWVzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCisKK2luaGVyaXQgZ25vbWViYXNlIGdzZXR0aW5ncyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ2V0dGV4dCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNjk3ZGI5ZTZiMmFlMDU4ZjhhMGQwYjAyM2UzMmNlYWMiCitTUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICI3NjRhYjY4MzI4NjUzNjMyNDUzM2E1OGQ0ZTk1ZmM1N2Y4MWFkYWJhN2Q4ODBkZDBlYmJiY2VkNjNlOTYwZWE2IgorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRG8tbm90LXNraXAtZ2lyLWluc3RhbGxhdGlvbi1mb3ItY3Jvc3MtY29tcGlsaW5nLnBhdGNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLmluYwppbmRleCBlMWYxZTBkLi41ZDFmNTllIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLmluYwpAQCAtMzcsNyArMzcsNiBAQAogICAgICAgICAgICAgICAgICAtLWRpc2FibGUtZ2xpYnRlc3QgXAogICAgICAgICAgICAgICAgICAtLWRpc2FibGUteGluZXJhbWEgXAogICAgICAgICAgICAgICAgICAtLWVuYWJsZS1tb2R1bGVzIFwKLSAgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWNvbG9yZCBcCiAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJESVNUUk9fRkVBVFVSRVMiLCAieDExIiwgIiIsICItLWRpc2FibGUtZ3RrLWRvYyIsIGQpfSBcCiAgICAgICAgICAgICAgICAgICIKIApAQCAtNTQsNiArNTMsOCBAQAogUEFDS0FHRUNPTkZJR1tnbHhdID0gIi0tZW5hYmxlLWdseCwtLWRpc2FibGUtZ2x4LCxsaWJnbCIKIFBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZC1iYWNrZW5kLC0tZGlzYWJsZS13YXlsYW5kLWJhY2tlbmQsd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJ4a2Jjb21tb24gdmlydHVhbC9lZ2wgdmlydHVhbC9saWJnbGVzMiB3YXlsYW5kLW5hdGl2ZSIKIFBBQ0tBR0VDT05GSUdbY3Vwc10gPSAiLS1lbmFibGUtY3VwcywtLWRpc2FibGUtY3VwcyxjdXBzIgorUEFDS0FHRUNPTkZJR1tjbG91ZHByaW50XSA9ICItLWVuYWJsZS1jbG91ZHByaW50LC0tZGlzYWJsZS1jbG91ZHByaW50LHJlc3QganNvbi1nbGliIgorUEFDS0FHRUNPTkZJR1tjb2xvcmRdID0gIi0tZW5hYmxlLWNvbG9yZCwtLWRpc2FibGUtY29sb3JkLGNvbG9yZCIKIAogcHJlcGFyZV9ndGtfc2NyaXB0cygpIHsKICAgICBtdiAke0R9JHtiaW5kaXJ9L2d0ay11cGRhdGUtaWNvbi1jYWNoZSAke0R9JHtiaW5kaXJ9L2d0ay11cGRhdGUtaWNvbi1jYWNoZS0zLjAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMi1Eby1ub3QtdHJ5LXRvLWluaXRpYWxpemUtR0wtd2l0aG91dC1saWJHTC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMi1Eby1ub3QtdHJ5LXRvLWluaXRpYWxpemUtR0wtd2l0aG91dC1saWJHTC5wYXRjaAppbmRleCBjYzdlZGY3Li44MGRjMmQ3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDItRG8tbm90LXRyeS10by1pbml0aWFsaXplLUdMLXdpdGhvdXQtbGliR0wucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoCkBAIC0xLDcgKzEsNyBAQAotRnJvbSAyM2E1NjMxNTU0MDY5ODBkZmM4Y2Y2ZjdjMmRhNmNjZTBhYzMxMGYwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA2NTc1YWIwZjBlOGMxYmJhMDMzYWQxNjE2NTExZTM3YTJlYzk5NWZmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogSnVzc2kgS3Vra29uZW4gPGp1c3NpLmt1a2tvbmVuQGludGVsLmNvbT4KIERhdGU6IEZyaSwgMTYgT2N0IDIwMTUgMTY6MzU6MTYgKzAzMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzRdIERvIG5vdCB0cnkgdG8gaW5pdGlhbGl6ZSBHTCB3aXRob3V0IGxpYkdMCitTdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCB0cnkgdG8gaW5pdGlhbGl6ZSBHTCB3aXRob3V0IGxpYkdMCiAKIF9nZGtfeDExX3NjcmVlbl91cGRhdGVfdmlzdWFsc19mb3JfZ2woKSB3aWxsIGVuZCB1cCBjYWxsaW5nIGVwb3h5cwogR0xYIGFwaSB3aGljaCB3aWxsIGV4aXQoKSBpZiBsaWJHTC5zby4xIGlzIG5vdCBwcmVzZW50LiBXZSBkbyBub3QKQEAgLTIyLDEwICsyMiwxMCBAQAogIDIgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKQogCiBkaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCA3NTdmZDdjLi4wYTQ4ODc1IDEwMDY0NAoraW5kZXggZTlmNTU4My4uYmQ2NTFiYiAxMDA2NDQKIC0tLSBhL2NvbmZpZ3VyZS5hYwogKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMzUxLDYgKzM1MSwxMiBAQCBBQ19BUkdfRU5BQkxFKGNsb3VkcHJvdmlkZXJzLAorQEAgLTM0Niw2ICszNDYsMTIgQEAgQUNfQVJHX0VOQUJMRShjbG91ZHByb3ZpZGVycywKICAgICAgICAgICAgICAgIFtBU19IRUxQX1NUUklORyhbLS1lbmFibGUtY2xvdWRwcm92aWRlcnNdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtlbmFibGUgbGliY2xvdWRwcm92aWRlcnMgaW50ZWdyYXRpb25dKV0sCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgW2Nsb3VkcHJvdmlkZXJzX3NldD15ZXNdKQpAQCAtMzYsOCArMzYsOCBAQAogKyAgQUNfREVGSU5FKFtIQVZFX0dMWF0sIFtdLCBbR0xYIHdpbGwgYmUgYXZhaWxhYmxlIGF0IHJ1bnRpbWVdKQogK10pCiAgCi0gaWYgdGVzdCAteiAiJGJhY2tlbmRfc2V0IjsgdGhlbgotICAgaWYgdGVzdCAiJHBsYXRmb3JtX3dpbjMyIiA9IHllczsgdGhlbgorIEFDX0FSR19FTkFCTEUocHJvZmlsZXIsCisgICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLXByb2ZpbGVyXSwKIGRpZmYgLS1naXQgYS9nZGsveDExL2dka3Zpc3VhbC14MTEuYyBiL2dkay94MTEvZ2RrdmlzdWFsLXgxMS5jCiBpbmRleCA4MTQ3OWQ4Li4zYzhjNWMwIDEwMDY0NAogLS0tIGEvZ2RrL3gxMS9nZGt2aXN1YWwteDExLmMKQEAgLTU1LDYgKzU1LDMgQEAKICB9CiAgCiAgZ2ludAotLS0gCi0yLjE0LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy8wMDAzLUFkZC1kaXNhYmxlLW9wZW5nbC1jb25maWd1cmUtb3B0aW9uLnBhdGNoCmluZGV4IDg1MmRjOWQuLjM5OGM5YmMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzMvMDAwMy1BZGQtZGlzYWJsZS1vcGVuZ2wtY29uZmlndXJlLW9wdGlvbi5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIGQxMWI0MWE3ZmYwMjM0ZjM4MzJkNmFhYmRmNDk4ODA3ZDE0NjNjMTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIGY4M2ZjZjE5OTFhZmFkNmQ5YzE1NTQ2YjJjY2Q3NzVkYWQ0ZTMxNGMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogRGF0ZTogVHVlLCAyMSBKdW4gMjAxNiAxNToxMTozOSArMDMwMAogU3ViamVjdDogW1BBVENIXSBBZGQgLS1kaXNhYmxlLW9wZW5nbCBjb25maWd1cmUgb3B0aW9uCkBAIC0zNywyMCArMzcsMjAgQEAKICBnZGsveDExL2dka3gtYXV0b2NsZWFudXBzLmggICAgICAgICAgICAgICAgfCAgMiArCiAgZ2RrL3gxMS97Z2RreC5oID0+IGdka3gtd2l0aC1nbC1jb250ZXh0Lmh9IHwgIDEgLQogIGdkay94MTEvZ2RreC13aXRob3V0LWdsLWNvbnRleHQuaCAgICAgICAgICB8IDU4ICsrKysrKysrKysrKysrKysrKysrKysKLSBndGsvTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICAgICAgICAgICAgfCAgMyArLQorIGd0ay9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgICB8ICAyICstCiAgZ3RrL2d0a2dsYXJlYS5jICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMjAgKysrKysrKy0KICBndGsvaW5zcGVjdG9yL2dlbmVyYWwuYyAgICAgICAgICAgICAgICAgICAgfCAgNiArKysKICB0ZXN0cy9NYWtlZmlsZS5hbSAgICAgICAgICAgICAgICAgICAgICAgICAgfCAxMCArKy0tCiAgdGVzdHN1aXRlL2d0ay9vYmplY3RzLWZpbmFsaXplLmMgICAgICAgICAgIHwgIDIgKwotIDIxIGZpbGVzIGNoYW5nZWQsIDIwOCBpbnNlcnRpb25zKCspLCAyMCBkZWxldGlvbnMoLSkKKyAyMSBmaWxlcyBjaGFuZ2VkLCAyMDggaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCiAgcmVuYW1lIGdkay94MTEve2dka3guaCA9PiBnZGt4LXdpdGgtZ2wtY29udGV4dC5ofSAoOTglKQogIGNyZWF0ZSBtb2RlIDEwMDY0NCBnZGsveDExL2dka3gtd2l0aG91dC1nbC1jb250ZXh0LmgKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggMmM0NzMzYi4uMThhZTY2YyAxMDA2NDQKK2luZGV4IGJkNjUxYmIuLmI0YzA2MWYgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM1Miw2ICszNTIsMTUgQEAgQUNfQVJHX0VOQUJMRShjbG91ZHByb3ZpZGVycywKK0BAIC0zNDYsNiArMzQ2LDE1IEBAIEFDX0FSR19FTkFCTEUoY2xvdWRwcm92aWRlcnMsCiAgICAgICAgICAgICAgICBbQVNfSEVMUF9TVFJJTkcoWy0tZW5hYmxlLWNsb3VkcHJvdmlkZXJzXSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBbZW5hYmxlIGxpYmNsb3VkcHJvdmlkZXJzIGludGVncmF0aW9uXSldLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtjbG91ZHByb3ZpZGVyc19zZXQ9eWVzXSkKQEAgLTY2LDIxICs2NiwyMSBAQAogIEFDX0FSR19FTkFCTEUoZ2x4LAogICAgICAgICAgICAgICAgW0FTX0hFTFBfU1RSSU5HKFstLWVuYWJsZS1nbHhdLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIFtXaGVuIGVuYWJsZWQgR2RrIHdpbGwgdHJ5IHRvIGluaXRpYWxpemUgR0xYXSldKQotQEAgLTEzNzAsNyArMTM3OSw3IEBAIENGTEFHUz0iJHNhdmVkX2NmbGFncyIKK0BAIC0xMzQ1LDcgKzEzNTQsNyBAQCBDRkxBR1M9IiRzYXZlZF9jZmxhZ3MiCiAgTERGTEFHUz0iJHNhdmVkX2xkZmxhZ3MiCiAgCiAgR0RLX1BBQ0tBR0VTPSIkUEFOR09fUEFDS0FHRVMgZ2RrLXBpeGJ1Zi0yLjAgPj0gZ2RrX3BpeGJ1Zl9yZXF1aXJlZF92ZXJzaW9uIGNhaXJvID49IGNhaXJvX3JlcXVpcmVkX3ZlcnNpb24gY2Fpcm8tZ29iamVjdCA+PSBjYWlyb19yZXF1aXJlZF92ZXJzaW9uIgotLUdES19QUklWQVRFX1BBQ0tBR0VTPSIkR0RLX0dJT19QQUNLQUdFICRYX1BBQ0tBR0VTICRXQVlMQU5EX1BBQ0tBR0VTICRNSVJfUEFDS0FHRVMgJGNhaXJvX2JhY2tlbmRzIGVwb3h5ID49IGVwb3h5X3JlcXVpcmVkX3ZlcnNpb24gJENMT1VEUFJPVklERVJfUEFDS0FHRVMgZnJpYmlkaSA+PSBmcmliaWRpX3JlcXVpcmVkX3ZlcnNpb24iCi0rR0RLX1BSSVZBVEVfUEFDS0FHRVM9IiRHREtfR0lPX1BBQ0tBR0UgJFhfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgJE1JUl9QQUNLQUdFUyAkY2Fpcm9fYmFja2VuZHMgJEVQT1hZX1BBQ0tBR0VTICRDTE9VRFBST1ZJREVSX1BBQ0tBR0VTIGZyaWJpZGkgPj0gZnJpYmlkaV9yZXF1aXJlZF92ZXJzaW9uIgorLUdES19QUklWQVRFX1BBQ0tBR0VTPSIkR0RLX0dJT19QQUNLQUdFICRYX1BBQ0tBR0VTICRXQVlMQU5EX1BBQ0tBR0VTICRjYWlyb19iYWNrZW5kcyBlcG94eSA+PSBlcG94eV9yZXF1aXJlZF92ZXJzaW9uICRDTE9VRFBST1ZJREVSX1BBQ0tBR0VTICRQUk9GSUxFUl9QQUNLQUdFUyBmcmliaWRpID49IGZyaWJpZGlfcmVxdWlyZWRfdmVyc2lvbiIKKytHREtfUFJJVkFURV9QQUNLQUdFUz0iJEdES19HSU9fUEFDS0FHRSAkWF9QQUNLQUdFUyAkV0FZTEFORF9QQUNLQUdFUyAkY2Fpcm9fYmFja2VuZHMgJEVQT1hZX1BBQ0tBR0VTICRDTE9VRFBST1ZJREVSX1BBQ0tBR0VTICRQUk9GSUxFUl9QQUNLQUdFUyBmcmliaWRpID49IGZyaWJpZGlfcmVxdWlyZWRfdmVyc2lvbiIKICAKICBQS0dfQ0hFQ0tfTU9EVUxFUyhHREtfREVQLCAkR0RLX1BBQ0tBR0VTICRHREtfUFJJVkFURV9QQUNLQUdFUykKICBHREtfREVQX0xJQlM9IiRHREtfRVhUUkFfTElCUyAkR0RLX0RFUF9MSUJTICRNQVRIX0xJQiIKLUBAIC0xNDA0LDcgKzE0MTMsNyBAQCBmaQorQEAgLTEzNzksNyArMTM4OCw3IEBAIGZpCiAgUEtHX0NIRUNLX01PRFVMRVMoQVRLLCAkQVRLX1BBQ0tBR0VTKQogIAogIEdUS19QQUNLQUdFUz0iYXRrID49IGF0a19yZXF1aXJlZF92ZXJzaW9uIGNhaXJvID49IGNhaXJvX3JlcXVpcmVkX3ZlcnNpb24gY2Fpcm8tZ29iamVjdCA+PSBjYWlyb19yZXF1aXJlZF92ZXJzaW9uIGdkay1waXhidWYtMi4wID49IGdka19waXhidWZfcmVxdWlyZWRfdmVyc2lvbiBnaW8tMi4wID49IGdsaWJfcmVxdWlyZWRfdmVyc2lvbiIKLS1HVEtfUFJJVkFURV9QQUNLQUdFUz0iJEFUS19QQUNLQUdFUyAkV0FZTEFORF9QQUNLQUdFUyAkTUlSX1BBQ0tBR0VTIGVwb3h5ID49IGVwb3h5X3JlcXVpcmVkX3ZlcnNpb24gZnJpYmlkaSA+PSBmcmliaWRpX3JlcXVpcmVkX3ZlcnNpb24iCi0rR1RLX1BSSVZBVEVfUEFDS0FHRVM9IiRBVEtfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgJE1JUl9QQUNLQUdFUyAkRVBPWFlfUEFDS0FHRVMgZnJpYmlkaSA+PSBmcmliaWRpX3JlcXVpcmVkX3ZlcnNpb24iCistR1RLX1BSSVZBVEVfUEFDS0FHRVM9IiRBVEtfUEFDS0FHRVMgJFdBWUxBTkRfUEFDS0FHRVMgZXBveHkgPj0gZXBveHlfcmVxdWlyZWRfdmVyc2lvbiBmcmliaWRpID49IGZyaWJpZGlfcmVxdWlyZWRfdmVyc2lvbiIKKytHVEtfUFJJVkFURV9QQUNLQUdFUz0iJEFUS19QQUNLQUdFUyAkV0FZTEFORF9QQUNLQUdFUyAkRVBPWFlfUEFDS0FHRVMgZnJpYmlkaSA+PSBmcmliaWRpX3JlcXVpcmVkX3ZlcnNpb24iCiAgaWYgdGVzdCAieCRlbmFibGVfeDExX2JhY2tlbmQiID0geHllcyAtbyAieCRlbmFibGVfd2F5bGFuZF9iYWNrZW5kIiA9IHh5ZXM7IHRoZW4KICAgIEdUS19QUklWQVRFX1BBQ0tBR0VTPSIkR1RLX1BSSVZBVEVfUEFDS0FHRVMgcGFuZ29mdDIiCiAgZmkKQEAgLTE2OCw3ICsxNjgsNyBAQAogICAgcmV0dXJuIFRSVUU7CiAgfQogZGlmZiAtLWdpdCBhL2RvY3MvdG9vbHMvTWFrZWZpbGUuYW0gYi9kb2NzL3Rvb2xzL01ha2VmaWxlLmFtCi1pbmRleCA2YTZkNzBmLi41Y2RmMzEyIDEwMDY0NAoraW5kZXggYmVjNDNlMy4uMTg5ZThmYyAxMDA2NDQKIC0tLSBhL2RvY3MvdG9vbHMvTWFrZWZpbGUuYW0KICsrKyBiL2RvY3MvdG9vbHMvTWFrZWZpbGUuYW0KIEBAIC05LDEzICs5LDE4IEBAIEFNX0NQUEZMQUdTID0gXApAQCAtMjEwLDcgKzIxMCw3IEBACiAgCiAgICByZXR1cm4gaW5mbzsKIGRpZmYgLS1naXQgYS9nZGsvTWFrZWZpbGUuYW0gYi9nZGsvTWFrZWZpbGUuYW0KLWluZGV4IDY4OWVlNTIuLmQ2YjRlNzAgMTAwNjQ0CitpbmRleCA0NzlkNmExLi43ZWRiZWU4IDEwMDY0NAogLS0tIGEvZ2RrL01ha2VmaWxlLmFtCiArKysgYi9nZGsvTWFrZWZpbGUuYW0KIEBAIC0yNzQsNyArMjc0LDYgQEAgeDExX2ludHJvc3BlY3Rpb25fZmlsZXMgPSAJCVwKQEAgLTI0MywxMCArMjQzLDEwIEBACiAgR2RrWDExXzNfMF9naXJfU0NBTk5FUkZMQUdTID0gCQlcCiAgCS0taWRlbnRpZmllci1wcmVmaXg9R2RrCQlcCiBkaWZmIC0tZ2l0IGEvZ2RrL2dka2Rpc3BsYXkuYyBiL2dkay9nZGtkaXNwbGF5LmMKLWluZGV4IDA2ZDQxODcuLjgzMjcxMWMgMTAwNjQ0CitpbmRleCAyNDBjOTlmLi45ZWI0OWJmIDEwMDY0NAogLS0tIGEvZ2RrL2dka2Rpc3BsYXkuYwogKysrIGIvZ2RrL2dka2Rpc3BsYXkuYwotQEAgLTI0MTYsNyArMjQxNiw5IEBAIGdib29sZWFuCitAQCAtMjQxOSw3ICsyNDE5LDkgQEAgZ2Jvb2xlYW4KICBnZGtfZGlzcGxheV9tYWtlX2dsX2NvbnRleHRfY3VycmVudCAoR2RrRGlzcGxheSAgICpkaXNwbGF5LAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHZGtHTENvbnRleHQgKmNvbnRleHQpCiAgewpAQCAtMzgwLDcgKzM4MCw3IEBACiAgCiAgLyoqCiBkaWZmIC0tZ2l0IGEvZ2RrL2dka3dpbmRvdy5jIGIvZ2RrL2dka3dpbmRvdy5jCi1pbmRleCAxNDE2NDA5Li5lM2I1NjMwIDEwMDY0NAoraW5kZXggNmFlMGY4Ni4uNGU0OGEyYSAxMDA2NDQKIC0tLSBhL2dkay9nZGt3aW5kb3cuYwogKysrIGIvZ2RrL2dka3dpbmRvdy5jCiBAQCAtNDUsNyArNDUsOSBAQApAQCAtMzkzLDcgKzM5Myw3IEBACiAgCiAgLyogZm9yIHRoZSB1c2Ugb2Ygcm91bmQoKSAqLwogICNpbmNsdWRlICJmYWxsYmFjay1jODkuYyIKLUBAIC0yODIyLDYgKzI4MjQsMTMgQEAgZ2RrX3dpbmRvd19nZXRfcGFpbnRfZ2xfY29udGV4dCAoR2RrV2luZG93ICAqd2luZG93LAorQEAgLTI4NDQsNiArMjg0NiwxMyBAQCBnZGtfd2luZG93X2dldF9wYWludF9nbF9jb250ZXh0IChHZGtXaW5kb3cgICp3aW5kb3csCiAgewogICAgR0Vycm9yICppbnRlcm5hbF9lcnJvciA9IE5VTEw7CiAgCkBAIC00MDcsNyArNDA3LDcgQEAKICAgIGlmIChfZ2RrX2dsX2ZsYWdzICYgR0RLX0dMX0RJU0FCTEUpCiAgICAgIHsKICAgICAgICBnX3NldF9lcnJvcl9saXRlcmFsIChlcnJvciwgR0RLX0dMX0VSUk9SLAotQEAgLTI5NTcsNiArMjk2Niw3IEBAIGdka193aW5kb3dfYmVnaW5fcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAgICAgICAgICAgICp3aW5kb3csCitAQCAtMjk3OSw2ICsyOTg4LDcgQEAgZ2RrX3dpbmRvd19iZWdpbl9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICAgICAgICAgICAgKndpbmRvdywKICAgICAgICAgIH0KICAgICAgICBlbHNlCiAgICAgICAgICB7CkBAIC00MTUsNyArNDE1LDcgQEAKICAJICBnZGtfZ2xfY29udGV4dF9tYWtlX2N1cnJlbnQgKGNvbnRleHQpOwogICAgICAgICAgICAvKiBXaXRoIGdsIHdlIGFsd2F5cyBuZWVkIGEgc3VyZmFjZSB0byBjb21iaW5lIHRoZSBnbAogICAgICAgICAgICAgICBkcmF3aW5nIHdpdGggdGhlIG5hdGl2ZSBkcmF3aW5nLiAqLwotQEAgLTI5NzEsNiArMjk4MSw3IEBAIGdka193aW5kb3dfYmVnaW5fcGFpbnRfaW50ZXJuYWwgKEdka1dpbmRvdyAgICAgICAgICAgICp3aW5kb3csCitAQCAtMjk5Myw2ICszMDAzLDcgQEAgZ2RrX3dpbmRvd19iZWdpbl9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICAgICAgICAgICAgKndpbmRvdywKICAgICAgICAgICAgZ2xCbGVuZEZ1bmMgKEdMX09ORSwgR0xfT05FX01JTlVTX1NSQ19BTFBIQSk7CiAgCiAgICAgICAgICAgIGdsVmlld3BvcnQgKDAsIDAsIHd3LCB3aCk7CkBAIC00MjMsNyArNDIzLDcgQEAKICAgICAgICAgIH0KICAgICAgfQogIAotQEAgLTMwMzQsNiArMzA0NSw3IEBAIGdka193aW5kb3dfZW5kX3BhaW50X2ludGVybmFsIChHZGtXaW5kb3cgKndpbmRvdykKK0BAIC0zMDU2LDYgKzMwNjcsNyBAQCBnZGtfd2luZG93X2VuZF9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICp3aW5kb3cpCiAgCiAgICAgICAgICAgIGdka19nbF9jb250ZXh0X21ha2VfY3VycmVudCAod2luZG93LT5nbF9wYWludF9jb250ZXh0KTsKICAKQEAgLTQzMSw3ICs0MzEsNyBAQAogICAgICAgICAgICBpZiAoIWNhaXJvX3JlZ2lvbl9pc19lbXB0eSAob3BhcXVlX3JlZ2lvbikpCiAgICAgICAgICAgICAgZ2RrX2dsX3RleHR1cmVfZnJvbV9zdXJmYWNlICh3aW5kb3ctPmN1cnJlbnRfcGFpbnQuc3VyZmFjZSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9wYXF1ZV9yZWdpb24pOwotQEAgLTMwNDQsNiArMzA1Niw3IEBAIGdka193aW5kb3dfZW5kX3BhaW50X2ludGVybmFsIChHZGtXaW5kb3cgKndpbmRvdykKK0BAIC0zMDY2LDYgKzMwNzgsNyBAQCBnZGtfd2luZG93X2VuZF9wYWludF9pbnRlcm5hbCAoR2RrV2luZG93ICp3aW5kb3cpCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHdpbmRvdy0+Y3VycmVudF9wYWludC5uZWVkX2JsZW5kX3JlZ2lvbik7CiAgICAgICAgICAgICAgICBnbERpc2FibGUoR0xfQkxFTkQpOwogICAgICAgICAgICAgIH0KQEAgLTQ0MCw3ICs0NDAsNyBAQAogICAgICAgICAgICBjYWlyb19yZWdpb25fZGVzdHJveSAob3BhcXVlX3JlZ2lvbik7CiAgCiBkaWZmIC0tZ2l0IGEvZ2RrL3gxMS9NYWtlZmlsZS5hbSBiL2dkay94MTEvTWFrZWZpbGUuYW0KLWluZGV4IDYyODlmM2EuLmNiYmFjNzkgMTAwNjQ0CitpbmRleCAzMmIxZjI0Li42MzUyMzEzIDEwMDY0NAogLS0tIGEvZ2RrL3gxMS9NYWtlZmlsZS5hbQogKysrIGIvZ2RrL3gxMS9NYWtlZmlsZS5hbQogQEAgLTQwLDggKzQwLDYgQEAgbGliZ2RrX3gxMV9sYV9TT1VSQ0VTID0gCVwKQEAgLTQ5NCw3ICs0OTQsNyBAQAogIAlnZGt4MTFrZXlzLmgJCVwKICAJZ2RreDExbW9uaXRvci5oCQlcCiAgCWdka3gxMXByb3BlcnR5LmgJXAotQEAgLTg3LDkgKzEwMiwxNiBAQCBsaWJnZGt4MTFpbmNsdWRlX0hFQURFUlMgPSAJXAorQEAgLTg3LDEwICsxMDIsMTcgQEAgbGliZ2RreDExaW5jbHVkZV9IRUFERVJTID0gCVwKICAJZ2RreDExdmlzdWFsLmgJCVwKICAJZ2RreDExd2luZG93LmgKICAKQEAgLTUwNiwxMyArNTA2LDE0IEBACiAgIyBkb24ndCBzZWVtIHRvIGJlIGNvcnJlY3RseSBleHBhbmRlZCBmb3IgdGhlIGRpc3QgZmlsZXMuCiAgRVhUUkFfRElTVCArPSAJCQlcCiArCWdka3guaAkJCVwKLSAJZ2Rrc2V0dGluZ3MuYworIAlnZGtzZXR0aW5ncy5jCVwKKyAJbWVzb24uYnVpbGQKICAKICtNQUlOVEFJTkVSQ0xFQU5GSUxFUyA9IGdka3guaAogKwogIC1pbmNsdWRlICQodG9wX3NyY2RpcikvZ2l0Lm1rCiBkaWZmIC0tZ2l0IGEvZ2RrL3gxMS9nZGtkaXNwbGF5LXgxMS5jIGIvZ2RrL3gxMS9nZGtkaXNwbGF5LXgxMS5jCi1pbmRleCA1Yjk1MTk2Li45YTJmMmEyIDEwMDY0NAoraW5kZXggODE3OTQ0ZS4uZTdhMjk0NyAxMDA2NDQKIC0tLSBhL2dkay94MTEvZ2RrZGlzcGxheS14MTEuYwogKysrIGIvZ2RrL3gxMS9nZGtkaXNwbGF5LXgxMS5jCiBAQCAtMzcsNyArMzcsOSBAQApAQCAtNTIzLDkgKzUyNCw5IEBACiAgI2luY2x1ZGUgImdka2dsY29udGV4dC14MTEuaCIKICsjZW5kaWYKICAjaW5jbHVkZSAiZ2RrLXByaXZhdGUuaCIKKyAjaW5jbHVkZSAiZ2RrcHJvZmlsZXJwcml2YXRlLmgiCiAgCi0gI2luY2x1ZGUgPGdsaWIuaD4KLUBAIC0zMTg0LDcgKzMxODYsOSBAQCBnZGtfeDExX2Rpc3BsYXlfY2xhc3NfaW5pdCAoR2RrWDExRGlzcGxheUNsYXNzICogY2xhc3MpCitAQCAtMzE4OCw3ICszMTkwLDkgQEAgZ2RrX3gxMV9kaXNwbGF5X2NsYXNzX2luaXQgKEdka1gxMURpc3BsYXlDbGFzcyAqIGNsYXNzKQogICAgZGlzcGxheV9jbGFzcy0+dGV4dF9wcm9wZXJ0eV90b191dGY4X2xpc3QgPSBfZ2RrX3gxMV9kaXNwbGF5X3RleHRfcHJvcGVydHlfdG9fdXRmOF9saXN0OwogICAgZGlzcGxheV9jbGFzcy0+dXRmOF90b19zdHJpbmdfdGFyZ2V0ID0gX2dka194MTFfZGlzcGxheV91dGY4X3RvX3N0cmluZ190YXJnZXQ7CiAgCkBAIC01MzcsMTAgKzUzOCwxMCBAQAogICAgZGlzcGxheV9jbGFzcy0+Z2V0X2RlZmF1bHRfc2VhdCA9IGdka194MTFfZGlzcGxheV9nZXRfZGVmYXVsdF9zZWF0OwogIAogZGlmZiAtLWdpdCBhL2dkay94MTEvZ2Rrc2NyZWVuLXgxMS5jIGIvZ2RrL3gxMS9nZGtzY3JlZW4teDExLmMKLWluZGV4IDI3MmNlY2QuLjJiYjM0YWMgMTAwNjQ0CitpbmRleCA4OTM5YWU5Li45MzFiZmY5IDEwMDY0NAogLS0tIGEvZ2RrL3gxMS9nZGtzY3JlZW4teDExLmMKICsrKyBiL2dkay94MTEvZ2Rrc2NyZWVuLXgxMS5jCi1AQCAtMTY3NSwzICsxNjc1LDggQEAgZ2RrX3gxMV9zY3JlZW5fZ2V0X2N1cnJlbnRfZGVza3RvcCAoR2RrU2NyZWVuICpzY3JlZW4pCitAQCAtMTcyMywzICsxNzIzLDggQEAgZ2RrX3gxMV9zY3JlZW5fZ2V0X2N1cnJlbnRfZGVza3RvcCAoR2RrU2NyZWVuICpzY3JlZW4pCiAgewogICAgcmV0dXJuIGdldF9uZXR3bV9jYXJkaW5hbF9wcm9wZXJ0eSAoc2NyZWVuLCAiX05FVF9DVVJSRU5UX0RFU0tUT1AiKTsKICB9CkBAIC01NTAsNyArNTUxLDcgQEAKICt2b2lkIF9nZGtfeDExX3NjcmVlbl91cGRhdGVfdmlzdWFsc19mb3JfZ2wgKEdka1NjcmVlbiAqc2NyZWVuKSB7fQogKyNlbmRpZgogZGlmZiAtLWdpdCBhL2dkay94MTEvZ2Rrd2luZG93LXgxMS5jIGIvZ2RrL3gxMS9nZGt3aW5kb3cteDExLmMKLWluZGV4IGY5MmExNDYuLjg5ZjkwMGEgMTAwNjQ0CitpbmRleCAxZmU3YjkwLi5kMjNhMzQ3IDEwMDY0NAogLS0tIGEvZ2RrL3gxMS9nZGt3aW5kb3cteDExLmMKICsrKyBiL2dkay94MTEvZ2Rrd2luZG93LXgxMS5jCiBAQCAtMzYsNyArMzYsOSBAQApAQCAtNTYzLDcgKzU2NCw3IEBACiAgI2luY2x1ZGUgImdka3ByaXZhdGUteDExLmgiCiAgI2luY2x1ZGUgImdkay1wcml2YXRlLmgiCiAgCi1AQCAtNTgzOSw3ICs1ODQxLDkgQEAgZ2RrX3dpbmRvd19pbXBsX3gxMV9jbGFzc19pbml0IChHZGtXaW5kb3dJbXBsWDExQ2xhc3MgKmtsYXNzKQorQEAgLTU4NjEsNyArNTg2Myw5IEBAIGdka193aW5kb3dfaW1wbF94MTFfY2xhc3NfaW5pdCAoR2RrV2luZG93SW1wbFgxMUNsYXNzICprbGFzcykKICAgIGltcGxfY2xhc3MtPnNldF9vcGFxdWVfcmVnaW9uID0gZ2RrX3gxMV93aW5kb3dfc2V0X29wYXF1ZV9yZWdpb247CiAgICBpbXBsX2NsYXNzLT5zZXRfc2hhZG93X3dpZHRoID0gZ2RrX3gxMV93aW5kb3dfc2V0X3NoYWRvd193aWR0aDsKICAgIGltcGxfY2xhc3MtPnNob3dfd2luZG93X21lbnUgPSBnZGtfeDExX3dpbmRvd19zaG93X3dpbmRvd19tZW51OwpAQCAtNjY3LDMxICs2NjgsMjMgQEAKICsKICsjZW5kaWYgLyogX19HREtfWF9IX18gKi8KIGRpZmYgLS1naXQgYS9ndGsvTWFrZWZpbGUuYW0gYi9ndGsvTWFrZWZpbGUuYW0KLWluZGV4IGU1NTZlOWQuLmNlOTEyZDcgMTAwNjQ0CitpbmRleCBlYWNhNDczLi45OTM1MmQxIDEwMDY0NAogLS0tIGEvZ3RrL01ha2VmaWxlLmFtCiArKysgYi9ndGsvTWFrZWZpbGUuYW0KLUBAIC0xNDQxLDcgKzE0NDEsNiBAQCBndGtwcml2YXRldHlwZWJ1aWx0aW5zLmM6ICQoZ3RrX3ByaXZhdGVfdHlwZV9oX3NvdXJjZXMpICBndGtwcml2YXRldHlwZWJ1aWx0aW5zLgotIAkmJiBjcCB4Z2VuLWdwdGJjIGd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuYyAgXAotIAkmJiBybSAtZiB4Z2VuLWdwdGJjCi0gCi0tCi0gZ3RrdHlwZWZ1bmNzLmM6IHN0YW1wLWd0a3R5cGVidWlsdGlucy5oIHN0YW1wLWd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuaCAkKHRvcF9zcmNkaXIpL2d0ay8qLmggJCh0b3Bfc3JjZGlyKS9ndGsvYTExeS8qLmggJCh0b3Bfc3JjZGlyKS9ndGsvZGVwcmVjYXRlZC8qLmggJCh0b3Bfc3JjZGlyKS9nZGsvKi5oIE1ha2VmaWxlCi0gCSQoQU1fVl9HRU4pIGV4cG9ydCBMQ19BTEw9QyA7IFwKLSAJICAoZWNobyAnI3VuZGVmIEdUS19DT01QSUxBVElPTicgJiYgZWNobyAnI2luY2x1ZGUgPGd0ay9ndGt4Lmg+JykgPiB4Z2VuLWd0ZnNyYy5jICYmIFwKLUBAIC0xNDQ5LDcgKzE0NDgsNyBAQCBndGt0eXBlZnVuY3MuYzogc3RhbXAtZ3RrdHlwZWJ1aWx0aW5zLmggc3RhbXAtZ3RrcHJpdmF0ZXR5cGVidWlsdGlucy5oICQodG9wX3NyYworQEAgLTE0NDksNyArMTQ0OSw3IEBAIGd0a3R5cGVmdW5jcy5pbmM6IHN0YW1wLWd0a3R5cGVidWlsdGlucy5oIHN0YW1wLWd0a3ByaXZhdGV0eXBlYnVpbHRpbnMuaCAkKHRvcF9zCiAgCSAgJHtDUFB9ICQoREVGUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKSB4Z2VuLWd0ZnNyYy5jIHwgXAogIAkgICQoR1JFUCkgLW8gJ1xiZ1t0ZF1rX1thLXpBLVowLTlfXSpfZ2V0X3R5cGVcYicgfCBcCiAgCSAgc29ydCB8IHVuaXEgfCBcCiAtCSAgJChTRUQpICd7IHMvXi8qdHArKyA9IC87IHMvJCQvKCk7Lzsgcy9eLipcKGdka194MTFcfGd0a19wbHVnX1x8Z3RrX3NvY2tldF9cKS4qJCQvI2lmZGVmIEdES19XSU5ET1dJTkdfWDExXG4mXG4jZW5kaWYvOyB9JyA+PiB4Z2VuLWd0ZiBcCiArCSAgJChTRUQpICd7IHMvXi8qdHArKyA9IC87IHMvJCQvKCk7Lzsgcy9eLipcKGdka194MTFcfGd0a19wbHVnX1x8Z3RrX3NvY2tldF9cKS4qJCQvI2lmZGVmIEdES19XSU5ET1dJTkdfWDExXG4mXG4jZW5kaWYvOyBzL14uKmdka194MTFfZ2wuKiQkLyNpZmRlZiBIQVZFX09QRU5HTFxuJlxuI2VuZGlmLzsgfScgPj4geGdlbi1ndGYgXAogIAkmJiBjcCB4Z2VuLWd0ZiAkQCAmJiBybSAtZiB4Z2VuLWd0ZgotICQoc3JjZGlyKS9ndGt0ZXN0dXRpbHMuYzogZ3RrdHlwZWZ1bmNzLmMKKyAkKHNyY2RpcikvZ3RrdGVzdHV0aWxzLmM6IGd0a3R5cGVmdW5jcy5pbmMKICAKIGRpZmYgLS1naXQgYS9ndGsvZ3RrZ2xhcmVhLmMgYi9ndGsvZ3RrZ2xhcmVhLmMKLWluZGV4IGVhMzgzYzAuLmJiNGViNjQgMTAwNjQ0CitpbmRleCA5YTU2NDQzLi43ZGUwZGIyIDEwMDY0NAogLS0tIGEvZ3RrL2d0a2dsYXJlYS5jCiArKysgYi9ndGsvZ3RrZ2xhcmVhLmMKLUBAIC0yOCw3ICsyOCw5IEBACitAQCAtMjksNyArMjksOSBAQAogICNpbmNsdWRlICJndGtwcml2YXRlLmgiCiAgI2luY2x1ZGUgImd0a3JlbmRlci5oIgogIApAQCAtNzAxLDcgKzY5NCw3IEBACiAgCiAgLyoqCiAgICogU0VDVElPTjpndGtnbGFyZWEKLUBAIC0zNjgsOSArMzcwLDEyIEBAIGd0a19nbF9hcmVhX3JlYWxfY3JlYXRlX2NvbnRleHQgKEd0a0dMQXJlYSAqYXJlYSkKK0BAIC0zNjksOSArMzcxLDEyIEBAIGd0a19nbF9hcmVhX3JlYWxfY3JlYXRlX2NvbnRleHQgKEd0a0dMQXJlYSAqYXJlYSkKICBzdGF0aWMgdm9pZAogIGd0a19nbF9hcmVhX3Jlc2l6ZSAoR3RrR0xBcmVhICphcmVhLCBpbnQgd2lkdGgsIGludCBoZWlnaHQpCiAgewpAQCAtNzE0LDcgKzcwNyw3IEBACiAgLyoKICAgKiBDcmVhdGVzIGFsbCB0aGUgYnVmZmVyIG9iamVjdHMgbmVlZGVkIGZvciByZW5kZXJpbmcgdGhlIHNjZW5lCiAgICovCi1AQCAtNDgyLDYgKzQ4Nyw3IEBAIGd0a19nbF9hcmVhX2FsbG9jYXRlX2J1ZmZlcnMgKEd0a0dMQXJlYSAqYXJlYSkKK0BAIC00ODMsNiArNDg4LDcgQEAgZ3RrX2dsX2FyZWFfYWxsb2NhdGVfYnVmZmVycyAoR3RrR0xBcmVhICphcmVhKQogIAogICAgcHJpdi0+bmVlZHNfcmVuZGVyID0gVFJVRTsKICB9CkBAIC03MjIsNyArNzE1LDcgQEAKICAKICAvKioKICAgKiBndGtfZ2xfYXJlYV9hdHRhY2hfYnVmZmVyczoKLUBAIC01MDAsNiArNTA2LDcgQEAgZ3RrX2dsX2FyZWFfYWxsb2NhdGVfYnVmZmVycyAoR3RrR0xBcmVhICphcmVhKQorQEAgLTUwMSw2ICs1MDcsNyBAQCBndGtfZ2xfYXJlYV9hbGxvY2F0ZV9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCiAgdm9pZAogIGd0a19nbF9hcmVhX2F0dGFjaF9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCiAgewpAQCAtNzMwLDcgKzcyMyw3IEBACiAgICBHdGtHTEFyZWFQcml2YXRlICpwcml2ID0gZ3RrX2dsX2FyZWFfZ2V0X2luc3RhbmNlX3ByaXZhdGUgKGFyZWEpOwogIAogICAgZ19yZXR1cm5faWZfZmFpbCAoR1RLX0lTX0dMX0FSRUEgKGFyZWEpKTsKLUBAIC01MzIsMTEgKzUzOSwxMyBAQCBndGtfZ2xfYXJlYV9hdHRhY2hfYnVmZmVycyAoR3RrR0xBcmVhICphcmVhKQorQEAgLTUzMywxMSArNTQwLDEzIEBAIGd0a19nbF9hcmVhX2F0dGFjaF9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCiAgICAgICAgICBnbEZyYW1lYnVmZmVyUmVuZGVyYnVmZmVyRVhUIChHTF9GUkFNRUJVRkZFUl9FWFQsIEdMX1NURU5DSUxfQVRUQUNITUVOVF9FWFQsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBHTF9SRU5ERVJCVUZGRVJfRVhULCBwcml2LT5kZXB0aF9zdGVuY2lsX2J1ZmZlcik7CiAgICAgIH0KQEAgLTc0NCw3ICs3MzcsNyBAQAogICAgR3RrR0xBcmVhUHJpdmF0ZSAqcHJpdiA9IGd0a19nbF9hcmVhX2dldF9pbnN0YW5jZV9wcml2YXRlIChhcmVhKTsKICAKICAgIGlmIChwcml2LT5jb250ZXh0ID09IE5VTEwpCi1AQCAtNTY4LDYgKzU3Nyw3IEBAIGd0a19nbF9hcmVhX2RlbGV0ZV9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCitAQCAtNTY5LDYgKzU3OCw3IEBAIGd0a19nbF9hcmVhX2RlbGV0ZV9idWZmZXJzIChHdGtHTEFyZWEgKmFyZWEpCiAgICAgICAgZ2xEZWxldGVGcmFtZWJ1ZmZlcnNFWFQgKDEsICZwcml2LT5mcmFtZV9idWZmZXIpOwogICAgICAgIHByaXYtPmZyYW1lX2J1ZmZlciA9IDA7CiAgICAgIH0KQEAgLTc1Miw3ICs3NDUsNyBAQAogIH0KICAKICBzdGF0aWMgdm9pZAotQEAgLTY3OCw2ICs2ODgsNyBAQCBndGtfZ2xfYXJlYV9kcmF3IChHdGtXaWRnZXQgKndpZGdldCwKK0BAIC02NzksNiArNjg5LDcgQEAgZ3RrX2dsX2FyZWFfZHJhdyAoR3RrV2lkZ2V0ICp3aWRnZXQsCiAgICBHdGtHTEFyZWEgKmFyZWEgPSBHVEtfR0xfQVJFQSAod2lkZ2V0KTsKICAgIEd0a0dMQXJlYVByaXZhdGUgKnByaXYgPSBndGtfZ2xfYXJlYV9nZXRfaW5zdGFuY2VfcHJpdmF0ZSAoYXJlYSk7CiAgICBnYm9vbGVhbiB1bnVzZWQ7CkBAIC03NjAsNyArNzUzLDcgQEAKICAgIGludCB3LCBoLCBzY2FsZTsKICAgIEdMZW51bSBzdGF0dXM7CiAgCi1AQCAtNjg5LDcgKzcwMCw2IEBAIGd0a19nbF9hcmVhX2RyYXcgKEd0a1dpZGdldCAqd2lkZ2V0LAorQEAgLTY5MCw3ICs3MDEsNiBAQCBndGtfZ2xfYXJlYV9kcmF3IChHdGtXaWRnZXQgKndpZGdldCwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ3RrX3dpZGdldF9nZXRfYWxsb2NhdGVkX2hlaWdodCAod2lkZ2V0KSk7CiAgICAgICAgcmV0dXJuIEZBTFNFOwogICAgICB9CkBAIC03NjgsNyArNzYxLDcgQEAKICAgIGlmIChwcml2LT5jb250ZXh0ID09IE5VTEwpCiAgICAgIHJldHVybiBGQUxTRTsKICAKLUBAIC03MzUsNiArNzQ1LDE0IEBAIGd0a19nbF9hcmVhX2RyYXcgKEd0a1dpZGdldCAqd2lkZ2V0LAorQEAgLTczNiw2ICs3NDYsMTQgQEAgZ3RrX2dsX2FyZWFfZHJhdyAoR3RrV2lkZ2V0ICp3aWRnZXQsCiAgICAgIH0KICAKICAgIHJldHVybiBUUlVFOwpAQCAtODMxLDcgKzgyNCw3IEBACiAgICBpZiAoR0RLX0lTX1dBWUxBTkRfRElTUExBWSAoZ2RrX2Rpc3BsYXlfZ2V0X2RlZmF1bHQgKCkpKQogICAgICB7CiBkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUuYW0gYi90ZXN0cy9NYWtlZmlsZS5hbQotaW5kZXggN2M1Y2E5OS4uZTRhNDU0NiAxMDA2NDQKK2luZGV4IGVlMWU4YjUuLmU2YzY1MDIgMTAwNjQ0CiAtLS0gYS90ZXN0cy9NYWtlZmlsZS5hbQogKysrIGIvdGVzdHMvTWFrZWZpbGUuYW0KIEBAIC04MCw4ICs4MCw2IEBAIG5vaW5zdF9QUk9HUkFNUyA9ICAkKFRFU1RfUFJPR1MpCVwKQEAgLTg2NCwxMCArODU3LDEwIEBACiAgbm9pbnN0X1BST0dSQU1TICs9IHRlc3Rmb3JlaWduCiAgZW5kaWYKIGRpZmYgLS1naXQgYS90ZXN0c3VpdGUvZ3RrL29iamVjdHMtZmluYWxpemUuYyBiL3Rlc3RzdWl0ZS9ndGsvb2JqZWN0cy1maW5hbGl6ZS5jCi1pbmRleCAwYjNhNTE5Li4wN2IwOTZmIDEwMDY0NAoraW5kZXggMjQ1NDBlMy4uZTBmODYzYSAxMDA2NDQKIC0tLSBhL3Rlc3RzdWl0ZS9ndGsvb2JqZWN0cy1maW5hbGl6ZS5jCiArKysgYi90ZXN0c3VpdGUvZ3RrL29iamVjdHMtZmluYWxpemUuYwotQEAgLTExNSw3ICsxMTUsOSBAQCBtYWluIChpbnQgYXJnYywgY2hhciAqKmFyZ3YpCitAQCAtMTE2LDcgKzExNiw5IEBAIG1haW4gKGludCBhcmdjLCBjaGFyICoqYXJndikKICAJICBhbGxfdHlwZXNbaV0gIT0gR0RLX1RZUEVfWDExX0RFVklDRV9NQU5BR0VSX0NPUkUgJiYKICAJICBhbGxfdHlwZXNbaV0gIT0gR0RLX1RZUEVfWDExX0RFVklDRV9NQU5BR0VSX1hJMiAmJgogIAkgIGFsbF90eXBlc1tpXSAhPSBHREtfVFlQRV9YMTFfRElTUExBWV9NQU5BR0VSICYmCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszL3NvcnQtcmVzb3VyY2VzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy9zb3J0LXJlc291cmNlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Zjg3MzcyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrMy9zb3J0LXJlc291cmNlcy5wYXRjaApAQCAtMCwwICsxLDE5IEBACitJZiB0aGUgcmVzb3VyY2VzIGZpbGUgaXNuJ3Qgc29ydGVkIGluIHNvbWUgd2F5IHRoZW4gbGliZ2RrLnNvIHdpbGwgZGlmZmVyCitkZXBlbmRpbmcgb24gdGhlIGlub2RlIG9yZGVyIG9mIHRoZSByZXNvdXJjZSBmaWxlcy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitkaWZmIC0tZ2l0IGEvZ2RrL01ha2VmaWxlLmFtIGIvZ2RrL01ha2VmaWxlLmFtCitpbmRleCBlMjViNTdiYTUwLi4yNmYyZDU3YzZlIDEwMDY0NAorLS0tIGEvZ2RrL01ha2VmaWxlLmFtCisrKysgYi9nZGsvTWFrZWZpbGUuYW0KK0BAIC00NjUsNyArNDY1LDcgQEAgc3RhbXAtZ2MtaDogJCh0b3BfYnVpbGRkaXIpL2NvbmZpZy5zdGF0dXMKKyAjIFJlc291cmNlcworICMKKyAKKy1nbHNsX3NvdXJjZXMgOj0gJCh3aWxkY2FyZCAkKHNyY2RpcikvcmVzb3VyY2VzL2dsc2wvKi5nbHNsKQorK2dsc2xfc291cmNlcyA6PSAkKHNvcnQgJCh3aWxkY2FyZCAkKHNyY2RpcikvcmVzb3VyY2VzL2dsc2wvKi5nbHNsKSkKKyAKKyBnZGsuZ3Jlc291cmNlLnhtbDogTWFrZWZpbGUuYW0KKyAJJChBTV9WX0dFTikgZWNobyAiPD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4iID4gJEA7IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yNC4xNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2d0aysvZ3RrKzNfMy4yNC4xNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hYjFmODdjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjI0LjE0LmJiCkBAIC0wLDAgKzEsMjAgQEAKK3JlcXVpcmUgZ3RrKzMuaW5jCisKK01BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKKworU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1IYXJkY29kZWQtbGlidG9vbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbGlua19mcmliaWRpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3NvcnQtcmVzb3VyY2VzLnBhdGNoIFwKKyAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNjJlMzkyMTJmYTBhODQwMTZhMzM5MmE5ZDI5MWZhZjgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWM0ZDY5ZjkzYWI4ODRmZDgwYzZiOTUxMTViZmJjMTJkNTFlY2QwMjkxNzhiNmRhZDM2NzJmZGM1ZmY5MWU4OCIKKworUyA9ICIke1dPUktESVJ9L2d0aystJHtQVn0iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d0ay9ndGsuaDtlbmRsaW5lPTI1O21kNT0xZDhkYzBmY2NkYmZhMjYyODdhMjcxZGNlODhhZjczNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGsvZ2RrLmg7ZW5kbGluZT0yNTttZDU9YzkyMGNlMzlkYzg4YzZmMDZkM2U3YzUwZTA4MDg2ZjIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvdGVzdGd0ay5jO2VuZGxpbmU9MjU7bWQ1PWNiNzMyZGFlZTFkODJhZjdhMmJmOTUzY2YzY2YyNmYxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrKy9ndGsrM18zLjI0LjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjQuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc5YjE4Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGsrL2d0ayszXzMuMjQuOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLXJlcXVpcmUgZ3RrKzMuaW5jCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICJodHRwOi8vZnRwLmdub21lLm9yZy9wdWIvZ25vbWUvc291cmNlcy9ndGsrLyR7TUFKX1ZFUn0vZ3RrKy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1IYXJkY29kZWQtbGlidG9vbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLURvLW5vdC10cnktdG8taW5pdGlhbGl6ZS1HTC13aXRob3V0LWxpYkdMLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDMtQWRkLWRpc2FibGUtb3BlbmdsLWNvbmZpZ3VyZS1vcHRpb24ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGlua19mcmliaWRpLnBhdGNoIFwKLSAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZWVlZGRlMDE4NTYyMzgxMTRkY2Y0ZGYzZWJjOTQyYTUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjY2OTYyZGU5Yjk3NjhmZTljYTc4NWIwZTJmNDJjOGI5ZGIzODY4YTEyZmE5YjM1NmIxNjcyMzhkNzBhYzc5OSIKLQotUyA9ICIke1dPUktESVJ9L2d0aystJHtQVn0iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2d0ay9ndGsuaDtlbmRsaW5lPTI1O21kNT0xZDhkYzBmY2NkYmZhMjYyODdhMjcxZGNlODhhZjczNyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nZGsvZ2RrLmg7ZW5kbGluZT0yNTttZDU9YzkyMGNlMzlkYzg4YzZmMDZkM2U3YzUwZTA4MDg2ZjIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdGVzdHMvdGVzdGd0ay5jO2VuZGxpbmU9MjU7bWQ1PWNiNzMyZGFlZTFkODJhZjdhMmJmOTUzY2YzY2YyNmYxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvZ3RrLWRvYy9ndGstZG9jXzEuMzIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4zMi5iYgppbmRleCA1MGQ0ZDk5Li5iNTA4ZTYyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4zMi5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9ndGstZG9jL2d0ay1kb2NfMS4zMi5iYgpAQCAtMzYsNiArMzYsMTcgQEAKICAgICAgICAgc2VkIC1pIC1lICdzLF5KSF9DSEVDS19YTUxfQ0FUQUxPRy4qLCwnICR7U30vY29uZmlndXJlLmFjCiB9CiAKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICAjIGNvbmZpZ3VyZSB2YWx1ZXMgZm9yIHB5dGhvbjMgYW5kIHBrZy1jb25maWcgZW5jb2RlZCBpbiBzY3JpcHRzCisgICAgZm9yIGZuIGluICR7YmluZGlyfS9ndGtkb2MtZGVwc2NhbiBcCisgICAgICAgICR7YmluZGlyfS9ndGtkb2MtbWtodG1sMiBcCisgICAgICAgICR7ZGF0YWRpcn0vZ3RrLWRvYy9weXRob24vZ3RrZG9jL2NvbmZpZy5weTsgZG8gCisgICAgICAgIHNlZCAtZSAncywke1JFQ0lQRV9TWVNST09UX05BVElWRX0vdXNyL2Jpbi9wa2ctY29uZmlnLCR7YmluZGlyfS9wa2ctY29uZmlnLCcgXAorICAgICAgICAgICAgLWUgJ3MsJHtIT1NUVE9PTFNfRElSfS9weXRob24zLCR7YmluZGlyfS9weXRob24zLCcgXAorICAgICAgICAgICAgLWkgJHtEfSRmbgorICAgIGRvbmUKK30KKwogRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vc2dtbCIKIEZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2NtYWtlIgogRklMRVNfJHtQTn0tZG9jID0gIiIKQEAgLTQ4LDMgKzU5LDQgQEAKICAgICAgICAgICAgLWUgInN8R1RLRE9DX1JVTiA9Lip8R1RLRE9DX1JVTiA9IFwkKHRvcF9idWlsZGRpcikvZ3RrZG9jLXFlbXV3cmFwcGVyfCIgXAogICAgICAgICAgICAke1NZU1JPT1RfREVTVERJUn0ke2RhdGFkaXJ9L2d0ay1kb2MvZGF0YS9ndGstZG9jKm1ha2UKIH0KKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvaGljb2xvci1pY29uLXRoZW1lL2hpY29sb3ItaWNvbi10aGVtZV8wLjE3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvaGljb2xvci1pY29uLXRoZW1lL2hpY29sb3ItaWNvbi10aGVtZV8wLjE3LmJiCmluZGV4IGFhZDdlZmYuLjc0ZTM0MzAgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2hpY29sb3ItaWNvbi10aGVtZS9oaWNvbG9yLWljb24tdGhlbWVfMC4xNy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9oaWNvbG9yLWljb24tdGhlbWUvaGljb2xvci1pY29uLXRoZW1lXzAuMTcuYmIKQEAgLTcsNyArNyw3IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZjA4YTQ0NjgwOTkxM2ZjOWIzYzcxOGYwZWFlYTA0MjYiCiAKLVNSQ19VUkkgPSAiaHR0cDovL2ljb24tdGhlbWUuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJID0gImh0dHBzOi8vaWNvbi10aGVtZS5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiIKIFNSQ19VUklbbWQ1c3VtXSA9ICI4NGVlYzhkNmY4MTAyNDBhMDY5YzczMWYxODcwYjQ3NCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIzMTc0ODQzNTIyNzFkMThjYmJjZmFjMzg2OGVhYjc5OGQ2N2ZmZjFiODQwMmU3NDBiYWE2ZmY0MWQ1ODhhOWQ4IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmcvMDAwMS1SZW1vdmUtbm9uLXJlcHJvZHVjaWJsZS1TUkNESVIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJyc3ZnL2xpYnJzdmcvMDAwMS1SZW1vdmUtbm9uLXJlcHJvZHVjaWJsZS1TUkNESVIucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzVmYzdmOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Zy8wMDAxLVJlbW92ZS1ub24tcmVwcm9kdWNpYmxlLVNSQ0RJUi5wYXRjaApAQCAtMCwwICsxLDMwIEBACitGcm9tIGJlYTUxNTZjZDdlNzEyMjcxNWIyNmM3NjljMzU5MjgxNDFhMWRhMmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+CitEYXRlOiBNb24sIDE4IE5vdiAyMDE5IDE0OjQ2OjM0IC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hdIFJlbW92ZSBub24tcmVwcm9kdWNpYmxlIFNSQ0RJUgorCitSZW1vdmVzIFNSQ0RJUiBhcyB0aGUgcHJlZml4IGZvciBmaW5kaW5nIHRoZSB0ZXN0IGZvbnQuIFRoaXMgd291bGRuJ3QKK3dvcmsgYW55d2F5LCBzaW5jZSB0aGF0IHBhdGggaXMgbm90IHByZXNlbnQgb24gdGhlIHRhcmdldC4KKworVGhpcyBwYXRjaCBpcyBzcGVjaWZpYyB0byBPRSwgc2luY2UgaXQgYXBwZWFycyB0aGF0IHRoaXMgZW50aXJlIG1ldGhvZAorb2YgdGVzdGluZyB3YXMgcmVtb3ZlZCB3aGVuIHVwc3RyZWFtIHdhcyByZS13cml0dGVuIGluIHJ1c3QKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1zcGVjaWZpYywgbm8gbG9uZ2VyIHByZXNlbnQgdXBzdHJlYW1dCitTaWduZWQtb2ZmLWJ5OiBKb3NodWEgV2F0dCA8SlBFV2hhY2tlckBnbWFpbC5jb20+CistLS0KKyByc3ZnLWNhaXJvLWRyYXcuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3JzdmctY2Fpcm8tZHJhdy5jIGIvcnN2Zy1jYWlyby1kcmF3LmMKK2luZGV4IGNhYTkxMDQuLmNmYjdlZDIgMTAwNjQ0CistLS0gYS9yc3ZnLWNhaXJvLWRyYXcuYworKysrIGIvcnN2Zy1jYWlyby1kcmF3LmMKK0BAIC0zOTgsNyArMzk4LDcgQEAgc2V0X2ZvbnRfb3B0aW9uc19mb3JfdGVzdGluZyAoUGFuZ29Db250ZXh0ICpjb250ZXh0KQorIHN0YXRpYyB2b2lkCisgY3JlYXRlX2ZvbnRfY29uZmlnX2Zvcl90ZXN0aW5nIChSc3ZnQ2Fpcm9SZW5kZXIgKnJlbmRlcikKKyB7CistICAgIGNvbnN0IGNoYXIgKmZvbnRfcGF0aCA9IFNSQ0RJUiAiL3Rlc3RzL3Jlc291cmNlcy9MaWJlcmF0aW9uU2Fucy1SZWd1bGFyLnR0ZiI7CisrICAgIGNvbnN0IGNoYXIgKmZvbnRfcGF0aCA9ICIvdGVzdHMvcmVzb3VyY2VzL0xpYmVyYXRpb25TYW5zLVJlZ3VsYXIudHRmIjsKKyAKKyAgICAgaWYgKHJlbmRlci0+Zm9udF9jb25maWdfZm9yX3Rlc3RpbmcgIT0gTlVMTCkKKyAgICAgICAgIHJldHVybjsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnJzdmcvbGlicnN2Z18yLjQwLjIwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMjAuYmIKaW5kZXggN2Y5ODEyNy4uNmRkMDUzMyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlicnN2Zy9saWJyc3ZnXzIuNDAuMjAuYmIKQEAgLTIwLDYgKzIwLDcgQEAKIAogU1JDX1VSSSArPSAiZmlsZTovL2d0ay1vcHRpb24ucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovLzAwMDEtQXV0by1kZXRlY3QtQnN5bWJvbGljLWZpeGVzLWNvbmZpZ3VyZS1vbi1tYWNPUy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1SZW1vdmUtbm9uLXJlcHJvZHVjaWJsZS1TUkNESVIucGF0Y2ggXAogIgogCiBTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICI0OTQ5ZDMxM2IwYzVkOTE2MWE1YzI1OTEwNGFmNTU2OCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4xOS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlic2VjcmV0L2xpYnNlY3JldF8wLjE5LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDNkYTJhNGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ25vbWUvbGlic2VjcmV0L2xpYnNlY3JldF8wLjE5LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNyArMCwwIEBACi1TVU1NQVJZID0gImxpYnNlY3JldCBpcyBhIGxpYnJhcnkgZm9yIHN0b3JpbmcgYW5kIHJldHJpZXZpbmcgcGFzc3dvcmRzIGFuZCBvdGhlciBzZWNyZXRzIgotREVTQ1JJUFRJT04gPSAiQSBHT2JqZWN0LWJhc2VkIGxpYnJhcnkgZm9yIGFjY2Vzc2luZyB0aGUgU2VjcmV0IFNlcnZpY2UgQVBJIG9mIFwKLXRoZSBmcmVlZGVza3RvcC5vcmcgcHJvamVjdCwgYSBjcm9zcy1kZXNrdG9wIGVmZm9ydCB0byBhY2Nlc3MgcGFzc3dvcmRzLCBcCi10b2tlbnMgYW5kIG90aGVyIHR5cGVzIG9mIHNlY3JldHMuIGxpYnNlY3JldCBwcm92aWRlcyBhIGNvbnZlbmllbnQgd3JhcHBlciBcCi1mb3IgdGhlc2UgbWV0aG9kcyBzbyBjb25zdW1lcnMgZG8gbm90IGhhdmUgdG8gY2FsbCB0aGUgbG93LWxldmVsIERCdXMgbWV0aG9kcy4iCi1MSUNFTlNFID0gIkxHUEx2Mi4xIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic2VjcmV0L2lzc3VlcyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTIzYzJhNWUwMTA2Yjk5ZDc1MjM4OTg2NTU5YmI1ZmM2IgotCi1pbmhlcml0IGdub21lYmFzZSBndGstZG9jIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIG1hbnBhZ2VzCi0KLURFUEVORFMgKz0gImdsaWItMi4wIGxpYmdjcnlwdCBnZXR0ZXh0LW5hdGl2ZSIKLQotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFucGFnZXMsIC0tZGlzYWJsZS1tYW5wYWdlcywgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJlYTY3MzExOWMwMDU3MGQ2NDM0ZjhmZDM2MzZmMWViOCIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjg1ODNlMTAxNzk0NTZhZTJjODMwNzVkOTU0NTVmMTU2ZGMwOGRiNjI3OGIzMmJmNGJkNjE4MTkzMzVhMzBlM2EiCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwMjI4LwotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjYgPSAiYXJtIgotCi0jIHZhcGlnZW4ubTQgYnVuZGxlZCB3aXRoIHRoZSB0YXJiYWxsIGRvZXMgbm90IHlldCBoYXZlIG91ciBjcm9zcy1jb21waWxhdGlvbiBmaXhlcwotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgcm0gLWYgJHtTfS9idWlsZC9tNC92YXBpZ2VuLm00Ci19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJzZWNyZXQvbGlic2VjcmV0XzAuMjAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdub21lL2xpYnNlY3JldC9saWJzZWNyZXRfMC4yMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcyNTExYWYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1nbm9tZS9saWJzZWNyZXQvbGlic2VjcmV0XzAuMjAuMS5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gImxpYnNlY3JldCBpcyBhIGxpYnJhcnkgZm9yIHN0b3JpbmcgYW5kIHJldHJpZXZpbmcgcGFzc3dvcmRzIGFuZCBvdGhlciBzZWNyZXRzIgorREVTQ1JJUFRJT04gPSAiQSBHT2JqZWN0LWJhc2VkIGxpYnJhcnkgZm9yIGFjY2Vzc2luZyB0aGUgU2VjcmV0IFNlcnZpY2UgQVBJIG9mIFwKK3RoZSBmcmVlZGVza3RvcC5vcmcgcHJvamVjdCwgYSBjcm9zcy1kZXNrdG9wIGVmZm9ydCB0byBhY2Nlc3MgcGFzc3dvcmRzLCBcCit0b2tlbnMgYW5kIG90aGVyIHR5cGVzIG9mIHNlY3JldHMuIGxpYnNlY3JldCBwcm92aWRlcyBhIGNvbnZlbmllbnQgd3JhcHBlciBcCitmb3IgdGhlc2UgbWV0aG9kcyBzbyBjb25zdW1lcnMgZG8gbm90IGhhdmUgdG8gY2FsbCB0aGUgbG93LWxldmVsIERCdXMgbWV0aG9kcy4iCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic2VjcmV0L2lzc3VlcyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTIzYzJhNWUwMTA2Yjk5ZDc1MjM4OTg2NTU5YmI1ZmM2IgorCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIHZhbGEgZ29iamVjdC1pbnRyb3NwZWN0aW9uIG1hbnBhZ2VzCisKK0RFUEVORFMgKz0gImdsaWItMi4wIGxpYmdjcnlwdCBnZXR0ZXh0LW5hdGl2ZSIKKworUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFucGFnZXMsIC0tZGlzYWJsZS1tYW5wYWdlcywgbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkMmRkNjYwYThkNTAyMDk5MzE3YmM4YWY5ZjMwMzAyZSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjU3ZjczZTk0ZWM2MjYzYTE3YTA3N2ZiODA5Y2Y4Y2Y0MjQ2MzdhODk3YTdmMTViNGVlYzQyY2U0YWVmNTI0NDciCisKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwMjI4LworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjYgPSAiYXJtIgorCisjIHZhcGlnZW4ubTQgYnVuZGxlZCB3aXRoIHRoZSB0YXJiYWxsIGRvZXMgbm90IHlldCBoYXZlIG91ciBjcm9zcy1jb21waWxhdGlvbiBmaXhlcworZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CisgICAgcm0gLWYgJHtTfS9idWlsZC9tNC92YXBpZ2VuLm00Cit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE2LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jYWlyby9jYWlyb18xLjE2LjAuYmIKaW5kZXggZTNkZTNmNi4uYjc3MmMyZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvY2Fpcm8vY2Fpcm9fMS4xNi4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NhaXJvL2NhaXJvXzEuMTYuMC5iYgpAQCAtNDAsNyArNDAsOCBAQAogCiBQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZGlyZWN0ZmInLCBkKX0gXAogICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ3gxMSB4Y2InLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSBvcGVuZ2wnLCAnb3BlbmdsJywgJycsIGQpfSIKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSBvcGVuZ2wnLCAnb3BlbmdsJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgdHJhY2UiCiAKIFBBQ0tBR0VDT05GSUdbeDExXSA9ICItLXdpdGgteD15ZXMgLWVuYWJsZS14bGliLC0td2l0aC14PW5vIC0tZGlzYWJsZS14bGliLCR7WDExREVQRU5EU30iCiBQQUNLQUdFQ09ORklHW3hjYl0gPSAiLS1lbmFibGUteGNiLC0tZGlzYWJsZS14Y2IsbGlieGNiIgpAQCAtNDksNiArNTAsNyBAQAogUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbD15ZXMsLS1kaXNhYmxlLWVnbCx2aXJ0dWFsL2VnbCIKIFBBQ0tBR0VDT05GSUdbZ2xlc3YyXSA9ICItLWVuYWJsZS1nbGVzdjIsLS1kaXNhYmxlLWdsZXN2Mix2aXJ0dWFsL2xpYmdsZXMyIgogUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCx2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJR1t0cmFjZV0gPSAiLS1lbmFibGUtdHJhY2UsLS1kaXNhYmxlLXRyYWNlIgogCiBFWFRSQV9PRUNPTkYgKz0gIiBcCiAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RBUkdFVF9GUFUnLCAnc29mdCcsICctLWRpc2FibGUtc29tZS1mbG9hdGluZy1wb2ludCcsICcnLCBkKX0gXApAQCAtNjYsNiArNjgsOCBAQAogCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvL2NhaXJvLXNwaGlueCoKIAlybSAtcmYgJHtEfSR7bGliZGlyfS9jYWlyby8uZGVidWcvY2Fpcm8tZmRyKgogCXJtIC1yZiAke0R9JHtsaWJkaXJ9L2NhaXJvLy5kZWJ1Zy9jYWlyby1zcGhpbngqCisJcm1kaXIgLXAgLS1pZ25vcmUtZmFpbC1vbi1ub24tZW1wdHkgJHtEfSR7YmluZGlyfQorCXJtZGlyIC1wIC0taWdub3JlLWZhaWwtb24tbm9uLWVtcHR5ICR7RH0ke2xpYmRpcn0vY2Fpcm8KIH0KIAogUEFDS0FHRVMgPSsgImNhaXJvLWdvYmplY3QgY2Fpcm8tc2NyaXB0LWludGVycHJldGVyIGNhaXJvLXBlcmYtdXRpbHMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9jbHV0dGVyL2NsdXR0ZXItMS4wLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjAuaW5jCmluZGV4IDVkYzQ1ZWIuLmUwYWM4MTkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjAuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2NsdXR0ZXIvY2x1dHRlci0xLjAuaW5jCkBAIC0yNCwxMSArMjQsMTEgQEAKICMgRGlzYWJsZSBwcmV0dHkgbXVjaCBldmVyeXRoaW5nLCBvdmVycmlkZSBpbiBwbGF0Zm9ybSBzcGVjaWZpYyBzZXQgdXAKIEVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXF1YXJ0ei1iYWNrZW5kCVwKIAkgICAgIAkgLS1kaXNhYmxlLXdpbjMyLWJhY2tlbmQJXAotCSAgICAgCSAtLWRpc2FibGUtZ2RrLWJhY2tlbmQJCVwKIAkgICAgIAkgLS1kaXNhYmxlLWNleDEwMC1iYWNrZW5kCVwKIAkgICAgIAkgLS1kaXNhYmxlLXRzbGliLWlucHV0CQlcCiAJICAgIAkiCiAKK1BBQ0tBR0VDT05GSUdbZ2RrXSA9ICItLWVuYWJsZS1nZGstYmFja2VuZCwtLWRpc2FibGUtZ2RrLWJhY2tlbmQsZ3RrKzMiCiBQQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLWJhY2tlbmQsLS1kaXNhYmxlLXgxMS1iYWNrZW5kLCR7RURFUEVORFNfWDExfSIKIFBBQ0tBR0VDT05GSUdbZ2x4XSA9ICIsLCR7RURFUEVORFNfWDExfSAke0VERVBFTkRTX0dMWH0iCiBQQUNLQUdFQ09ORklHW2VnbF0gPSAiLS1lbmFibGUtZWdsLWJhY2tlbmQsLS1kaXNhYmxlLWVnbC1iYWNrZW5kLCR7RURFUEVORFNfRUdMfSIKQEAgLTM3LDcgKzM3LDcgQEAKIFBBQ0tBR0VDT05GSUdbd2F5bGFuZC1jb21wb3NpdG9yXSA9ICItLWVuYWJsZS13YXlsYW5kLWNvbXBvc2l0b3IsLS1kaXNhYmxlLXdheWxhbmQtY29tcG9zaXRvcix3YXlsYW5kIgogCiAjIERlZmF1bHQgY29uZmlndXJhdGlvbiwgZGlzdHJvcyBtaWdodCB3YW50IHRvIG92ZXJyaWRlCi1QQUNLQUdFQ09ORklHID8/PSAiZWdsIFwKK1BBQ0tBR0VDT05GSUcgPz89ICJlZ2wgZ2RrIFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdnbHggeDExJywgJycsIGQpfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybS9tdXNsLWlvY3RsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybS9tdXNsLWlvY3RsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlM2Q2YzViLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm0vbXVzbC1pb2N0bC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDQ2YzBmZDZjODI3YThjYjRkMDRlMDY3YmYwNGZhYjU3OWFjNDcxMmUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogTW9uLCAxOCBKdW4gMjAxOCAxNTowNzowMyArMDEwMAotU3ViamVjdDogW1BBVENIXSB0ZXN0cy9ub3V2ZWF1L3RocmVhZGVkOiBhZGFwdCBpb2N0bCBzaWduYXR1cmUKLQotUE9TSVggc2F5cyBpb2N0bCgpIGhhcyB0aGUgc2lnbmF0dXJlIChpbnQsIGludCwgLi4uKSBidXQgZ2xpYmMgaGFzIGRlY2lkZWQgdG8KLXVzZSAoaW50LCB1bnNpZ25lZCBsb25nIGludCwgLi4uKSBpbnN0ZWFkLgotCi1Vc2UgYSAjaWZkZWYgdG8gYWRhcHQgdGhlIHJlcGxhY2VtZW50IGZ1bmN0aW9uIGFzIGFwcHJvcHJpYXRlLgotLS0tCi0gdGVzdHMvbm91dmVhdS90aHJlYWRlZC5jIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvbm91dmVhdS90aHJlYWRlZC5jIGIvdGVzdHMvbm91dmVhdS90aHJlYWRlZC5jCi1pbmRleCAzNjY5YmNkMy4uZTFjMjdjMDEgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9ub3V2ZWF1L3RocmVhZGVkLmMKLSsrKyBiL3Rlc3RzL25vdXZlYXUvdGhyZWFkZWQuYwotQEAgLTM2LDcgKzM2LDExIEBAIHN0YXRpYyBpbnQgZmFpbGVkOwotIAotIHN0YXRpYyBpbnQgaW1wb3J0X2ZkOwotIAotKyNpZmRlZiBfX0dMSUJDX18KLSBpbnQgaW9jdGwoaW50IGZkLCB1bnNpZ25lZCBsb25nIHJlcXVlc3QsIC4uLikKLSsjZWxzZQotK2ludCBpb2N0bChpbnQgZmQsIGludCByZXF1ZXN0LCAuLi4pCi0rI2VuZGlmCi0gewotIAl2YV9saXN0IHZhOwotIAlpbnQgcmV0OwotLS0gCi0yLjExLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuMTAwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuMTAwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0ODU5NDI1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2RybS9saWJkcm1fMi40LjEwMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDYwICswLDAgQEAKLVNVTU1BUlkgPSAiVXNlcnNwYWNlIGludGVyZmFjZSB0byB0aGUga2VybmVsIERSTSBzZXJ2aWNlcyIKLURFU0NSSVBUSU9OID0gIlRoZSBydW50aW1lIGxpYnJhcnkgZm9yIGFjY2Vzc2luZyB0aGUga2VybmVsIERSTSBzZXJ2aWNlcy4gIERSTSBcCi1zdGFuZHMgZm9yIFwiRGlyZWN0IFJlbmRlcmluZyBNYW5hZ2VyXCIsIHdoaWNoIGlzIHRoZSBrZXJuZWwgcG9ydGlvbiBvZiB0aGUgXAotXCJEaXJlY3QgUmVuZGVyaW5nIEluZnJhc3RydWN0dXJlXCIgKERSSSkuICBEUkkgaXMgcmVxdWlyZWQgZm9yIG1hbnkgaGFyZHdhcmUgXAotYWNjZWxlcmF0ZWQgT3BlbkdMIGRyaXZlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmciCi1TRUNUSU9OID0gIngxMS9iYXNlIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly94Zjg2ZHJtLmM7YmVnaW5saW5lPTk7ZW5kbGluZT0zMjttZDU9YzhhM2I5NjFhZjc2NjdjNTMwODE2NzYxZTk0OWRjNzEiCi1QUk9WSURFUyA9ICJkcm0iCi1ERVBFTkRTID0gImxpYnB0aHJlYWQtc3R1YnMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2RyaS5mcmVlZGVza3RvcC5vcmcvbGliZHJtLyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICBmaWxlOi8vbXVzbC1pb2N0bC5wYXRjaCIKLVNSQ19VUklbbWQ1c3VtXSA9ICJmNDdiYzg3ZTI4MTk4YmE1MjdlNmI0NGZmZGQ2MmY2NSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjNzdjYzgyODE4NmM5Y2VlYzNlNTZhZTIwMmI0M2VlOTllYjkzMmI0YTg3MjU1MDM4YTgwZThhMTA2MGQwYTVkIgotCi1pbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBtYW5wYWdlcwotCi1QQUNLQUdFQ09ORklHID8/PSAibGlia21zIGludGVsIHJhZGVvbiBhbWRncHUgbm91dmVhdSB2bXdnZnggb21hcCBmcmVlZHJlbm8gdmM0IGV0bmF2aXYgaW5zdGFsbC10ZXN0LXByb2dyYW1zIgotUEFDS0FHRUNPTkZJR1tsaWJrbXNdID0gIi1EbGlia21zPXRydWUsLURsaWJrbXM9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2ludGVsXSA9ICItRGludGVsPXRydWUsLURpbnRlbD1mYWxzZSxsaWJwY2lhY2Nlc3MiCi1QQUNLQUdFQ09ORklHW3JhZGVvbl0gPSAiLURyYWRlb249dHJ1ZSwtRHJhZGVvbj1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbYW1kZ3B1XSA9ICItRGFtZGdwdT10cnVlLC1EYW1kZ3B1PWZhbHNlIgotUEFDS0FHRUNPTkZJR1tub3V2ZWF1XSA9ICItRG5vdXZlYXU9dHJ1ZSwtRG5vdXZlYXU9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW3Ztd2dmeF0gPSAiLUR2bXdnZng9dHJ1ZSwtRHZtd2dmeD1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbb21hcF0gPSAiLURvbWFwPXRydWUsLURvbWFwPWZhbHNlIgotUEFDS0FHRUNPTkZJR1tleHlub3NdID0gIi1EZXh5bm9zPXRydWUsLURleHlub3M9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2ZyZWVkcmVub10gPSAiLURmcmVlZHJlbm89dHJ1ZSwtRGZyZWVkcmVubz1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbdGVncmFdID0gIi1EdGVncmE9dHJ1ZSwtRHRlZ3JhPWZhbHNlIgotUEFDS0FHRUNPTkZJR1t2YzRdID0gIi1EdmM0PXRydWUsLUR2YzQ9ZmFsc2UiCi1QQUNLQUdFQ09ORklHW2V0bmF2aXZdID0gIi1EZXRuYXZpdj10cnVlLC1EZXRuYXZpdj1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbZnJlZWRyZW5vLWtnc2xdID0gIi1EZnJlZWRyZW5vLWtnc2w9dHJ1ZSwtRGZyZWVkcmVuby1rZ3NsPWZhbHNlIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLUR2YWxncmluZD10cnVlLC1EdmFsZ3JpbmQ9ZmFsc2UsdmFsZ3JpbmQiCi1QQUNLQUdFQ09ORklHW2luc3RhbGwtdGVzdC1wcm9ncmFtc10gPSAiLURpbnN0YWxsLXRlc3QtcHJvZ3JhbXM9dHJ1ZSwtRGluc3RhbGwtdGVzdC1wcm9ncmFtcz1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbY2Fpcm8tdGVzdHNdID0gIi1EY2Fpcm8tdGVzdHM9dHJ1ZSwtRGNhaXJvLXRlc3RzPWZhbHNlIgotUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItRHVkZXY9dHJ1ZSwtRHVkZXY9ZmFsc2UsdWRldiIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi1EbWFuLXBhZ2VzPXRydWUsLURtYW4tcGFnZXM9ZmFsc2UsbGlieHNsdC1uYXRpdmUgeG1sdG8tbmF0aXZlIgotCi1BTExPV19FTVBUWV8ke1BOfS1kcml2ZXJzID0gIjEiCi1QQUNLQUdFUyA9KyAiJHtQTn0tdGVzdHMgJHtQTn0tZHJpdmVycyAke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwIFwKLSAgICAgICAgICAgICAke1BOfS1pbnRlbCAke1BOfS1leHlub3MgJHtQTn0ta21zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAotICAgICAgICAgICAgICR7UE59LWV0bmF2aXYiCi0KLVJSRUNPTU1FTkRTXyR7UE59LWRyaXZlcnMgPSAiJHtQTn0tcmFkZW9uICR7UE59LW5vdXZlYXUgJHtQTn0tb21hcCAke1BOfS1pbnRlbCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LWV4eW5vcyAke1BOfS1mcmVlZHJlbm8gJHtQTn0tYW1kZ3B1IFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKLQotRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9LyoiCi1GSUxFU18ke1BOfS1yYWRlb24gPSAiJHtsaWJkaXJ9L2xpYmRybV9yYWRlb24uc28uKiIKLUZJTEVTXyR7UE59LW5vdXZlYXUgPSAiJHtsaWJkaXJ9L2xpYmRybV9ub3V2ZWF1LnNvLioiCi1GSUxFU18ke1BOfS1vbWFwID0gIiR7bGliZGlyfS9saWJkcm1fb21hcC5zby4qIgotRklMRVNfJHtQTn0taW50ZWwgPSAiJHtsaWJkaXJ9L2xpYmRybV9pbnRlbC5zby4qIgotRklMRVNfJHtQTn0tZXh5bm9zID0gIiR7bGliZGlyfS9saWJkcm1fZXh5bm9zLnNvLioiCi1GSUxFU18ke1BOfS1rbXMgPSAiJHtsaWJkaXJ9L2xpYmttcyouc28uKiIKLUZJTEVTXyR7UE59LWZyZWVkcmVubyA9ICIke2xpYmRpcn0vbGliZHJtX2ZyZWVkcmVuby5zby4qIgotRklMRVNfJHtQTn0tYW1kZ3B1ID0gIiR7bGliZGlyfS9saWJkcm1fYW1kZ3B1LnNvLiogJHtkYXRhZGlyfS8ke1BOfS9hbWRncHUuaWRzIgotRklMRVNfJHtQTn0tZXRuYXZpdiA9ICIke2xpYmRpcn0vbGliZHJtX2V0bmF2aXYuc28uKiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuMTAxLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZHJtL2xpYmRybV8yLjQuMTAxLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhlYzU2NmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9kcm0vbGliZHJtXzIuNC4xMDEuYmIKQEAgLTAsMCArMSw1OSBAQAorU1VNTUFSWSA9ICJVc2Vyc3BhY2UgaW50ZXJmYWNlIHRvIHRoZSBrZXJuZWwgRFJNIHNlcnZpY2VzIgorREVTQ1JJUFRJT04gPSAiVGhlIHJ1bnRpbWUgbGlicmFyeSBmb3IgYWNjZXNzaW5nIHRoZSBrZXJuZWwgRFJNIHNlcnZpY2VzLiAgRFJNIFwKK3N0YW5kcyBmb3IgXCJEaXJlY3QgUmVuZGVyaW5nIE1hbmFnZXJcIiwgd2hpY2ggaXMgdGhlIGtlcm5lbCBwb3J0aW9uIG9mIHRoZSBcCitcIkRpcmVjdCBSZW5kZXJpbmcgSW5mcmFzdHJ1Y3R1cmVcIiAoRFJJKS4gIERSSSBpcyByZXF1aXJlZCBmb3IgbWFueSBoYXJkd2FyZSBcCithY2NlbGVyYXRlZCBPcGVuR0wgZHJpdmVycy4iCitIT01FUEFHRSA9ICJodHRwOi8vZHJpLmZyZWVkZXNrdG9wLm9yZyIKK1NFQ1RJT04gPSAieDExL2Jhc2UiCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3hmODZkcm0uYztiZWdpbmxpbmU9OTtlbmRsaW5lPTMyO21kNT1jOGEzYjk2MWFmNzY2N2M1MzA4MTY3NjFlOTQ5ZGM3MSIKK1BST1ZJREVTID0gImRybSIKK0RFUEVORFMgPSAibGlicHRocmVhZC1zdHVicyIKKworU1JDX1VSSSA9ICJodHRwOi8vZHJpLmZyZWVkZXNrdG9wLm9yZy9saWJkcm0vJHtCUH0udGFyLnh6IgorU1JDX1VSSVttZDVzdW1dID0gImU2YTZmMWI4ODk2MzIxMGIzZDYyYWNkNzMxMGExY2M3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRkZjMxYmFhOGU0OTQ3MzYyNDg2MGJkMTY2Y2U2NTRkYzM0OTg3M2Y3YTZjN2IzMzA1OTY0MjQ5MzE1Yzc4YTciCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIG1hbnBhZ2VzCisKK1BBQ0tBR0VDT05GSUcgPz89ICJsaWJrbXMgaW50ZWwgcmFkZW9uIGFtZGdwdSBub3V2ZWF1IHZtd2dmeCBvbWFwIGZyZWVkcmVubyB2YzQgZXRuYXZpdiBpbnN0YWxsLXRlc3QtcHJvZ3JhbXMiCitQQUNLQUdFQ09ORklHW2xpYmttc10gPSAiLURsaWJrbXM9dHJ1ZSwtRGxpYmttcz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbaW50ZWxdID0gIi1EaW50ZWw9dHJ1ZSwtRGludGVsPWZhbHNlLGxpYnBjaWFjY2VzcyIKK1BBQ0tBR0VDT05GSUdbcmFkZW9uXSA9ICItRHJhZGVvbj10cnVlLC1EcmFkZW9uPWZhbHNlIgorUEFDS0FHRUNPTkZJR1thbWRncHVdID0gIi1EYW1kZ3B1PXRydWUsLURhbWRncHU9ZmFsc2UiCitQQUNLQUdFQ09ORklHW25vdXZlYXVdID0gIi1Ebm91dmVhdT10cnVlLC1Ebm91dmVhdT1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdm13Z2Z4XSA9ICItRHZtd2dmeD10cnVlLC1Edm13Z2Z4PWZhbHNlIgorUEFDS0FHRUNPTkZJR1tvbWFwXSA9ICItRG9tYXA9dHJ1ZSwtRG9tYXA9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2V4eW5vc10gPSAiLURleHlub3M9dHJ1ZSwtRGV4eW5vcz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbZnJlZWRyZW5vXSA9ICItRGZyZWVkcmVubz10cnVlLC1EZnJlZWRyZW5vPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t0ZWdyYV0gPSAiLUR0ZWdyYT10cnVlLC1EdGVncmE9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3ZjNF0gPSAiLUR2YzQ9dHJ1ZSwtRHZjND1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbZXRuYXZpdl0gPSAiLURldG5hdml2PXRydWUsLURldG5hdml2PWZhbHNlIgorUEFDS0FHRUNPTkZJR1tmcmVlZHJlbm8ta2dzbF0gPSAiLURmcmVlZHJlbm8ta2dzbD10cnVlLC1EZnJlZWRyZW5vLWtnc2w9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItRHZhbGdyaW5kPXRydWUsLUR2YWxncmluZD1mYWxzZSx2YWxncmluZCIKK1BBQ0tBR0VDT05GSUdbaW5zdGFsbC10ZXN0LXByb2dyYW1zXSA9ICItRGluc3RhbGwtdGVzdC1wcm9ncmFtcz10cnVlLC1EaW5zdGFsbC10ZXN0LXByb2dyYW1zPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tjYWlyby10ZXN0c10gPSAiLURjYWlyby10ZXN0cz10cnVlLC1EY2Fpcm8tdGVzdHM9ZmFsc2UiCitQQUNLQUdFQ09ORklHW3VkZXZdID0gIi1EdWRldj10cnVlLC1EdWRldj1mYWxzZSx1ZGV2IgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLURtYW4tcGFnZXM9dHJ1ZSwtRG1hbi1wYWdlcz1mYWxzZSxsaWJ4c2x0LW5hdGl2ZSB4bWx0by1uYXRpdmUiCisKK0FMTE9XX0VNUFRZXyR7UE59LWRyaXZlcnMgPSAiMSIKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0cyAke1BOfS1kcml2ZXJzICR7UE59LXJhZGVvbiAke1BOfS1ub3V2ZWF1ICR7UE59LW9tYXAgXAorICAgICAgICAgICAgICR7UE59LWludGVsICR7UE59LWV4eW5vcyAke1BOfS1rbXMgJHtQTn0tZnJlZWRyZW5vICR7UE59LWFtZGdwdSBcCisgICAgICAgICAgICAgJHtQTn0tZXRuYXZpdiIKKworUlJFQ09NTUVORFNfJHtQTn0tZHJpdmVycyA9ICIke1BOfS1yYWRlb24gJHtQTn0tbm91dmVhdSAke1BOfS1vbWFwICR7UE59LWludGVsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh5bm9zICR7UE59LWZyZWVkcmVubyAke1BOfS1hbWRncHUgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAke1BOfS1ldG5hdml2IgorCitGSUxFU18ke1BOfS10ZXN0cyA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTXyR7UE59LXJhZGVvbiA9ICIke2xpYmRpcn0vbGliZHJtX3JhZGVvbi5zby4qIgorRklMRVNfJHtQTn0tbm91dmVhdSA9ICIke2xpYmRpcn0vbGliZHJtX25vdXZlYXUuc28uKiIKK0ZJTEVTXyR7UE59LW9tYXAgPSAiJHtsaWJkaXJ9L2xpYmRybV9vbWFwLnNvLioiCitGSUxFU18ke1BOfS1pbnRlbCA9ICIke2xpYmRpcn0vbGliZHJtX2ludGVsLnNvLioiCitGSUxFU18ke1BOfS1leHlub3MgPSAiJHtsaWJkaXJ9L2xpYmRybV9leHlub3Muc28uKiIKK0ZJTEVTXyR7UE59LWttcyA9ICIke2xpYmRpcn0vbGlia21zKi5zby4qIgorRklMRVNfJHtQTn0tZnJlZWRyZW5vID0gIiR7bGliZGlyfS9saWJkcm1fZnJlZWRyZW5vLnNvLioiCitGSUxFU18ke1BOfS1hbWRncHUgPSAiJHtsaWJkaXJ9L2xpYmRybV9hbWRncHUuc28uKiAke2RhdGFkaXJ9LyR7UE59L2FtZGdwdS5pZHMiCitGSUxFU18ke1BOfS1ldG5hdml2ID0gIiR7bGliZGlyfS9saWJkcm1fZXRuYXZpdi5zby4qIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjEwLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9mcmVldHlwZS9mcmVldHlwZV8yLjEwLjEuYmIKaW5kZXggYjE3OWEwZS4uZDFjMDkzMCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZnJlZXR5cGUvZnJlZXR5cGVfMi4xMC4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ZyZWV0eXBlL2ZyZWV0eXBlXzIuMTAuMS5iYgpAQCAtMjcsNyArMjcsNyBAQAogQ09ORklHVVJFX1NDUklQVCA9ICIke1N9L2NvbmZpZ3VyZSIKIEVYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIC0tZXhjbHVkZT1hdXRvbWFrZSIKIAotUEFDS0FHRUNPTkZJRyA/Pz0gInpsaWIiCitQQUNLQUdFQ09ORklHID8/PSAiemxpYiBwaXhtYXAiCiAKIFBBQ0tBR0VDT05GSUdbYnppcDJdID0gIi0td2l0aC1iemlwMiwtLXdpdGhvdXQtYnppcDIsYnppcDIiCiAjIGhhcmZidXp6IHJlc3VsdHMgaW4gYSBjaXJjdWxhciBkZXBlbmRlbmN5IHNvIGVuYWJsaW5nIGlzIG5vbi10cml2aWFsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXcvMDAwMS1GaXhlZC1jb21waWxhdGlvbi13aXRoLWN1cnJlbnQtbWVzYS12ZXJzaW9ucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xldy8wMDAxLUZpeGVkLWNvbXBpbGF0aW9uLXdpdGgtY3VycmVudC1tZXNhLXZlcnNpb25zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NGYzZTJmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2dsZXcvZ2xldy8wMDAxLUZpeGVkLWNvbXBpbGF0aW9uLXdpdGgtY3VycmVudC1tZXNhLXZlcnNpb25zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotRnJvbSA3ZjY1YTM2ODY2ZjRlMjRkZDE0NDZmZTFjOWQyMTQyNGYyOGJjYWJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogRGV2ZSA8ZGV2ZWVlQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTQgTm92IDIwMTggMjE6MDc6MjkgKzAxMDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4ZWQgY29tcGlsYXRpb24gd2l0aCBjdXJyZW50IG1lc2EgdmVyc2lvbnMuCi0KLUFzIHlvdSBjYW4gc2VlIGluCi1odHRwczovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL21lc2EvbWVzYS90cmVlL2luY2x1ZGUvR0wvZ2xleHQuaAotbm93IHRoZSBmaWxlIHVzZXMgX19nbF9nbGV4dF9oXyBpbnN0ZWFkIG9mIF9fZ2xleHRfaF8KLUl0J3MgcHJlY2lzZWx5IGNhdXNlZCBieSBjb21taXQgZjdkNDJlZTdkMzE5MjU2NjA4YWQ2MDc3OGY2Nzg3YzE0MGJhZGFkYQotCi1CYWNrb3BydCBub3RlczogCi0KLSogVGhlIG9yaWdpbmFsIHBhdGNoIGFkanVzdHMgYXV0by9zcmMvZ2xld19oZWFkLmggb25seQotKiBpbmNsdWRlL0dML2dsZXcuaCBpcyBub3QgcGFydCBvZiBnaXQgcmVwbyBhbmQgZ2V0cyBjcmVhdGVkIG9uIHRhcmJhbGwKLSAgY3JlYXRpb24KLQotPT4gcGF0Y2ggaW5jbHVkZS9HTC9nbGV3LmggZWl0aGVyIHRvIGNhdXNlIHRoZSBkZXNpcmVkIGZpeAotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFsxXQotCi1bMV0gaHR0cHM6Ly9naXRodWIuY29tL25pZ2Vscy1jb20vZ2xldy9jb21taXQvN2Y2NWEzNjg2NmY0ZTI0ZGQxNDQ2ZmUxYzlkMjE0MjRmMjhiY2FiZAotCi1TaWduZWQtb2ZmLWJ5OiBBbmRyZWFzIE3DvGxsZXIgPHNjaG5pdHplbHRvbnlAZ21haWwuY29tPgotLS0tCi0gYXV0by9zcmMvZ2xld19oZWFkLmggfCAzICsrLQotIGluY2x1ZGUvR0wvZ2xldy5oICAgIHwgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2F1dG8vc3JjL2dsZXdfaGVhZC5oIGIvYXV0by9zcmMvZ2xld19oZWFkLmgKLWluZGV4IGMxOWNlZmIuLjhmMzEzZDkgMTAwNjQ0Ci0tLS0gYS9hdXRvL3NyYy9nbGV3X2hlYWQuaAotKysrIGIvYXV0by9zcmMvZ2xld19oZWFkLmgKLUBAIC0xNCw3ICsxNCw3IEBACi0gI2lmIGRlZmluZWQoX19SRUdBTF9IX18pCi0gI2Vycm9yIFJlZ2FsLmggaW5jbHVkZWQgYmVmb3JlIGdsZXcuaAotICNlbmRpZgotLSNpZiBkZWZpbmVkKF9fZ2xleHRfaF8pIHx8IGRlZmluZWQoX19HTEVYVF9IXykKLSsjaWYgZGVmaW5lZChfX2dsZXh0X2hfKSB8fCBkZWZpbmVkKF9fR0xFWFRfSF8pIHx8IGRlZmluZWQoX19nbF9nbGV4dF9oXykKLSAjZXJyb3IgZ2xleHQuaCBpbmNsdWRlZCBiZWZvcmUgZ2xldy5oCi0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19nbF9BVElfaF8pCi1AQCAtMzAsNiArMzAsNyBAQAotICNkZWZpbmUgX19YX0dMX0gKLSAjZGVmaW5lIF9fZ2xleHRfaF8KLSAjZGVmaW5lIF9fR0xFWFRfSF8KLSsjZGVmaW5lIF9fZ2xfZ2xleHRfaF8KLSAjZGVmaW5lIF9fZ2xfQVRJX2hfCi0gCi0gI2lmIGRlZmluZWQoX1dJTjMyKQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvR0wvZ2xldy5oIGIvaW5jbHVkZS9HTC9nbGV3LmgKLWluZGV4IGI1YjY5ODcuLmE5ZjllNGIgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL0dML2dsZXcuaAotKysrIGIvaW5jbHVkZS9HTC9nbGV3LmgKLUBAIC05Myw3ICs5Myw3IEBACi0gI2lmIGRlZmluZWQoX19SRUdBTF9IX18pCi0gI2Vycm9yIFJlZ2FsLmggaW5jbHVkZWQgYmVmb3JlIGdsZXcuaAotICNlbmRpZgotLSNpZiBkZWZpbmVkKF9fZ2xleHRfaF8pIHx8IGRlZmluZWQoX19HTEVYVF9IXykKLSsjaWYgZGVmaW5lZChfX2dsZXh0X2hfKSB8fCBkZWZpbmVkKF9fR0xFWFRfSF8pIHx8IGRlZmluZWQoX19nbF9nbGV4dF9oXykKLSAjZXJyb3IgZ2xleHQuaCBpbmNsdWRlZCBiZWZvcmUgZ2xldy5oCi0gI2VuZGlmCi0gI2lmIGRlZmluZWQoX19nbF9BVElfaF8pCi1AQCAtMTA5LDYgKzEwOSw3IEBACi0gI2RlZmluZSBfX1hfR0xfSAotICNkZWZpbmUgX19nbGV4dF9oXwotICNkZWZpbmUgX19HTEVYVF9IXwotKyNkZWZpbmUgX19nbF9nbGV4dF9oXwotICNkZWZpbmUgX19nbF9BVElfaF8KLSAKLSAjaWYgZGVmaW5lZChfV0lOMzIpCi0tLSAKLTIuMjAuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXdfMi4xLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXdfMi4xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY2ZjQzNDAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3XzIuMS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuR0wgZXh0ZW5zaW9uIGxvYWRpbmcgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIlRoZSBPcGVuR0wgRXh0ZW5zaW9uIFdyYW5nbGVyIExpYnJhcnkgKEdMRVcpIGlzIGEgY3Jvc3MtcGxhdGZvcm0gb3Blbi1zb3VyY2UgQy9DKysgZXh0ZW5zaW9uIGxvYWRpbmcgbGlicmFyeS4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ2xldy5zb3VyY2Vmb3JnZS5uZXQvIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTY3NTg2IgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MmFjMjUxNTU4ZGU2ODVjNmI5NDc4ZDg5YmUzMTQ5YzIiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvZ2xldy9nbGV3LyR7UFZ9L2dsZXctJHtQVn0udGd6IFwKLSAgICAgICAgICAgZmlsZTovL25vLXN0cmlwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4ZWQtY29tcGlsYXRpb24td2l0aC1jdXJyZW50LW1lc2EtdmVyc2lvbnMucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiMmFiMTIzMzEwMzNkZGZhYTUwZGMzOTM0NTM0Mzk4MCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNGRlOTFlN2U2NzYzMDM5YmMxMTk0MDA5NWNkOWM3Zjg4MGJhYmE4MjE5NmE3NzY1ZjcyN2FjMDVhOTkzYzk1IgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9nbGV3L2ZpbGVzL2dsZXciCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvZ2xldy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgotCi1pbmhlcml0IGxpYl9wYWNrYWdlIHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjawotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdvcGVuZ2wnLCAnZWdsLWdsZXMyJywgZCl9IgotCi0jIFRoZSBvcGVuZ2wgYW5kIGVnbC1YWFggb3B0aW9ucyBhcmUgZXhjbHVzaXZlLCBlbmFibGUgb25seSBvbmUuCi1QQUNLQUdFQ09ORklHW29wZW5nbF0gPSAiU1lTVEVNPSdsaW51eCcsLHZpcnR1YWwvbGlieDExIHZpcnR1YWwvbGliZ2wgbGliZ2x1IGxpYnhleHQgbGlieGkgbGlieG11IgotUEFDS0FHRUNPTkZJR1tlZ2wtZ2xlczJdID0gIlNZU1RFTT0nbGludXgtZWdsJyBHTEVXX05PX0dMVT0nLURHTEVXX05PX0dMVScgTERGTEFHUy5HTD0nLWxFR0wgLWxHTEVTdjInLCx2aXJ0dWFsL2VnbCB2aXJ0dWFsL2xpYmdsZXMyIgotCi1DRkxBR1MgKz0gIi1EX0dOVV9TT1VSQ0UiCi0jIE92ZXJyaWRlIFNZU1RFTSAodmlhIFBBQ0tBR0VDT05GSUdfQ09ORkFSR1MpIHRvIGF2b2lkIGNhbGxpbmcgY29uZmlnLmd1ZXNzLAotIyB3ZSdyZSBjcm9zcy1jb21waWxpbmcuIFBhc3Mgb3VyIENGTEFHUyB2aWEgUE9QVCBhcyB0aGF0J3MgdGhlIG9wdGltaXNhdGlvbgotIyB2YXJpYWJsZSBhbmQgc2FmZWx5IG92ZXJ3cml0dGVuLgotRVhUUkFfT0VNQUtFID0gIiR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gXAotICAgICAgICAgICAgICAgIENDPScke0NDfScgTEQ9JyR7Q0N9JyBTVFJJUD0nJyBcCi0gICAgICAgICAgICAgICAgTERGTEFHUy5FWFRSQT0nJHtMREZMQUdTfScgXAotICAgICAgICAgICAgICAgIFBPUFQ9JyR7Q0ZMQUdTfScgXAotICAgICAgICAgICAgICAgIEdMRVdfUFJFRklYPScke3ByZWZpeH0nIEJJTkRJUj0nJHtiaW5kaXJ9JyBcCi0gICAgICAgICAgICAgICAgTElCRElSPScke2xpYmRpcn0nIElOQ0RJUj0nJHtpbmNsdWRlZGlyfS9HTCcgUEtHRElSPScke2xpYmRpcn0vcGtnY29uZmlnJyIKLQotZG9fY29tcGlsZSgpIHsKLQlvZV9ydW5tYWtlCi19Ci0KLWRvX2luc3RhbGwoKSB7Ci0Jb2VfcnVubWFrZSAnREVTVERJUj0ke0R9JyBpbnN0YWxsLmFsbAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3XzIuMi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvZ2xldy9nbGV3XzIuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5NDg0NDQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9nbGV3L2dsZXdfMi4yLjAuYmIKQEAgLTAsMCArMSw0NCBAQAorU1VNTUFSWSA9ICJPcGVuR0wgZXh0ZW5zaW9uIGxvYWRpbmcgbGlicmFyeSIKK0RFU0NSSVBUSU9OID0gIlRoZSBPcGVuR0wgRXh0ZW5zaW9uIFdyYW5nbGVyIExpYnJhcnkgKEdMRVcpIGlzIGEgY3Jvc3MtcGxhdGZvcm0gb3Blbi1zb3VyY2UgQy9DKysgZXh0ZW5zaW9uIGxvYWRpbmcgbGlicmFyeS4iCitIT01FUEFHRSA9ICJodHRwOi8vZ2xldy5zb3VyY2Vmb3JnZS5uZXQvIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vc291cmNlZm9yZ2UubmV0L3RyYWNrZXIvP2dyb3VwX2lkPTY3NTg2IgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9MmFjMjUxNTU4ZGU2ODVjNmI5NDc4ZDg5YmUzMTQ5YzIiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvZ2xldy9nbGV3LyR7UFZ9L2dsZXctJHtQVn0udGd6IFwKKyAgICAgICAgICAgZmlsZTovL25vLXN0cmlwLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiMzU3OTE2NGJjY2FlZjA5ZTM2YzBhZjdmNGZkNWM3YzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDRmYzgyODkzY2ZiMDAxMDk1NzhkMGExYTIzMzdmYjhjYTMzNWIzY2VjY2Y5N2I5N2U1Y2M3ZjA4ZTQzNTNlMSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvZ2xldy9maWxlcy9nbGV3IgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiL2dsZXcvKD9QPHB2ZXI+KFxkK1tcLlwtX10qKSspLyIKKworaW5oZXJpdCBsaWJfcGFja2FnZSBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworUEFDS0FHRUNPTkZJRyA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnb3BlbmdsJywgJ2VnbC1nbGVzMicsIGQpfSIKKworIyBUaGUgb3BlbmdsIGFuZCBlZ2wtWFhYIG9wdGlvbnMgYXJlIGV4Y2x1c2l2ZSwgZW5hYmxlIG9ubHkgb25lLgorUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIlNZU1RFTT0nbGludXgnLCx2aXJ0dWFsL2xpYngxMSB2aXJ0dWFsL2xpYmdsIGxpYmdsdSBsaWJ4ZXh0IGxpYnhpIGxpYnhtdSwsLGVnbC1nbGVzMiIKK1BBQ0tBR0VDT05GSUdbZWdsLWdsZXMyXSA9ICJTWVNURU09J2xpbnV4LWVnbCcgR0xFV19OT19HTFU9Jy1ER0xFV19OT19HTFUnIExERkxBR1MuR0w9Jy1sRUdMIC1sR0xFU3YyJywsdmlydHVhbC9lZ2wgdmlydHVhbC9saWJnbGVzMiwsLG9wZW5nbCIKKworQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgorIyBPdmVycmlkZSBTWVNURU0gKHZpYSBQQUNLQUdFQ09ORklHX0NPTkZBUkdTKSB0byBhdm9pZCBjYWxsaW5nIGNvbmZpZy5ndWVzcywKKyMgd2UncmUgY3Jvc3MtY29tcGlsaW5nLiBQYXNzIG91ciBDRkxBR1MgdmlhIFBPUFQgYXMgdGhhdCdzIHRoZSBvcHRpbWlzYXRpb24KKyMgdmFyaWFibGUgYW5kIHNhZmVseSBvdmVyd3JpdHRlbi4KK0VYVFJBX09FTUFLRSA9ICIke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKKyAgICAgICAgICAgICAgICBDQz0nJHtDQ30nIExEPScke0NDfScgU1RSSVA9JycgXAorICAgICAgICAgICAgICAgIExERkxBR1MuRVhUUkE9JyR7TERGTEFHU30nIFwKKyAgICAgICAgICAgICAgICBQT1BUPScke0NGTEFHU30nIFwKKyAgICAgICAgICAgICAgICBHTEVXX1BSRUZJWD0nJHtwcmVmaXh9JyBCSU5ESVI9JyR7YmluZGlyfScgXAorICAgICAgICAgICAgICAgIExJQkRJUj0nJHtsaWJkaXJ9JyBJTkNESVI9JyR7aW5jbHVkZWRpcn0vR0wnIFBLR0RJUj0nJHtsaWJkaXJ9L3BrZ2NvbmZpZyciCisKK2RvX2NvbXBpbGUoKSB7CisJb2VfcnVubWFrZQorfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgJ0RFU1RESVI9JHtEfScgaW5zdGFsbC5hbGwKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18yLjAuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18yLjAuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMWNmODU0ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9qcGVnL2xpYmpwZWctdHVyYm9fMi4wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NyArMCwwIEBACi1TVU1NQVJZID0gIkhhcmR3YXJlIGFjY2VsZXJhdGVkIEpQRUcgY29tcHJlc3Npb24vZGVjb21wcmVzc2lvbiBsaWJyYXJ5IgotREVTQ1JJUFRJT04gPSAibGlianBlZy10dXJibyBpcyBhIGRlcml2YXRpdmUgb2YgbGlianBlZyB0aGF0IHVzZXMgU0lNRCBpbnN0cnVjdGlvbnMgKE1NWCwgU1NFMiwgTkVPTikgdG8gYWNjZWxlcmF0ZSBiYXNlbGluZSBKUEVHIGNvbXByZXNzaW9uIGFuZCBkZWNvbXByZXNzaW9uIgotSE9NRVBBR0UgPSAiaHR0cDovL2xpYmpwZWctdHVyYm8ub3JnLyIKLQotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jZGpwZWcuaDtlbmRsaW5lPTEzO21kNT04MTg0YmNjN2M0YWM3YjllZGM2YTdiYzAwZjIzMWQwYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9qcGVnbGliLmg7ZW5kbGluZT0xNjttZDU9N2VhOTdkYzgzYjBmNTkwNTJlZTgzN2U2MWVmMGUwOGYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZGpwZWcuYztlbmRsaW5lPTExO21kNT1jNTllMTk4MTFjMDA2Y2IzOGY4MmQ2NDc3MTM0ZDMxNCBcCi0iCi1ERVBFTkRTX2FwcGVuZF94ODYtNjRfY2xhc3MtdGFyZ2V0ID0gIiBuYXNtLW5hdGl2ZSIKLURFUEVORFNfYXBwZW5kX3g4Nl9jbGFzcy10YXJnZXQgICAgPSAiIG5hc20tbmF0aXZlIgotCi1TUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWxpYmpwZWctdHVyYm8tZml4LXBhY2thZ2VfcWEtZXJyb3IucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJiZDA3ZmRkZjI2ZjlkZWY3YmFiMDI3MzllYjY1NTExNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0MjQ2ZGU1MDA1NDRkNGVlNDA4ZWU1NzA0OGFhNGFhZGM2ZjE2NWZjMTdmMTQxZGE4NzY2OWYyMGVkMzI0MWI3IgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9zb3VyY2Vmb3JnZS5uZXQvcHJvamVjdHMvbGlianBlZy10dXJiby9maWxlcy8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIvbGlianBlZy10dXJiby9maWxlcy8oP1A8cHZlcj4oXGQrW1wuXC1fXSopKykvIgotCi1QRT0gIjEiCi0KLSMgRHJvcC1pbiByZXBsYWNlbWVudCBmb3IganBlZwotUFJPVklERVMgPSAianBlZyIKLVJQUk9WSURFU18ke1BOfSArPSAianBlZyIKLVJSRVBMQUNFU18ke1BOfSArPSAianBlZyIKLVJDT05GTElDVFNfJHtQTn0gKz0gImpwZWciCi0KLWluaGVyaXQgY21ha2UgcGtnY29uZmlnCi0KLSMgQWRkIG5hc20tbmF0aXZlIGRlcGVuZGVuY3kgY29uc2lzdGVudGx5IGZvciBhbGwgYnVpbGQgYXJjaGVzIGlzIGhhcmQKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZSA9ICIgLURXSVRIX1NJTUQ9RmFsc2UiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy1uYXRpdmVzZGsgPSAiIC1EV0lUSF9TSU1EPUZhbHNlIgotCi0jIFdvcmsgYXJvdW5kIG1pc3NpbmcgeDMyIEFCSSBzdXBwb3J0Ci1FWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm14MzIiLCAiLURXSVRIX1NJTUQ9RmFsc2UiLCAiIiwgZCl9IgotCi0jIFdvcmsgYXJvdW5kIG1pc3Npbmcgbm9uLWZsb2F0aW5nIHBvaW50IEFCSSBzdXBwb3J0IGluIE1JUFMKLUVYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIk1JUFNQS0dTRlhfRlBVIiwgIi1uZiIsICItRFdJVEhfU0lNRD1GYWxzZSIsICIiLCBkKX0iCi0KLSMgUHJvdmlkZSBhIHdvcmthcm91bmQgaWYgQWx0aXZlYyB1bml0IGlzIG5vdCBwcmVzZW50IGluIFBQQwotRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0X3Bvd2VycGMgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgImFsdGl2ZWMiLCAiIiwgIi1EV0lUSF9TSU1EPUZhbHNlIiwgZCl9IgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0X3Bvd2VycGM2NCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLURXSVRIX1NJTUQ9RmFsc2UiLCBkKX0iCi0KLURFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfYXJtdjQgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHUycsICctbXRodW1iJywgJy1mb21pdC1mcmFtZS1wb2ludGVyJywgJycsIGQpfSIKLURFQlVHX09QVElNSVpBVElPTl9hcHBlbmRfYXJtdjUgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUVU5FX0NDQVJHUycsICctbXRodW1iJywgJy1mb21pdC1mcmFtZS1wb2ludGVyJywgJycsIGQpfSIKLQotUEFDS0FHRVMgPSsgImpwZWctdG9vbHMgbGlidHVyYm9qcGVnIgotCi1ERVNDUklQVElPTl9qcGVnLXRvb2xzID0gIlRoZSBqcGVnLXRvb2xzIHBhY2thZ2UgaW5jbHVkZXMgY2xpZW50IHByb2dyYW1zIHRvIGFjY2VzcyBsaWJqcGVnIGZ1bmN0aW9uYWxpdHkuICBUaGVzZSB0b29scyBhbGxvdyBmb3IgdGhlIGNvbXByZXNzaW9uLCBkZWNvbXByZXNzaW9uLCB0cmFuc2Zvcm1hdGlvbiBhbmQgZGlzcGxheSBvZiBKUEVHIGZpbGVzIGFuZCBiZW5jaG1hcmtpbmcgb2YgdGhlIGxpYmpwZWcgbGlicmFyeS4iCi1GSUxFU19qcGVnLXRvb2xzID0gIiR7YmluZGlyfS8qIgotCi1ERVNDUklQVElPTl9saWJ0dXJib2pwZWcgPSAiQSBTSU1ELWFjY2VsZXJhdGVkIEpQRUcgY29kZWMgd2hpY2ggcHJvdmlkZXMgb25seSBUdXJib0pQRUcgQVBJcyIKLUZJTEVTX2xpYnR1cmJvanBlZyA9ICIke2xpYmRpcn0vbGlidHVyYm9qcGVnLnNvLioiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18yLjAuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2pwZWcvbGlianBlZy10dXJib18yLjAuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZjQ5ZmQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvanBlZy9saWJqcGVnLXR1cmJvXzIuMC40LmJiCkBAIC0wLDAgKzEsNTkgQEAKK1NVTU1BUlkgPSAiSGFyZHdhcmUgYWNjZWxlcmF0ZWQgSlBFRyBjb21wcmVzc2lvbi9kZWNvbXByZXNzaW9uIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJsaWJqcGVnLXR1cmJvIGlzIGEgZGVyaXZhdGl2ZSBvZiBsaWJqcGVnIHRoYXQgdXNlcyBTSU1EIGluc3RydWN0aW9ucyAoTU1YLCBTU0UyLCBORU9OKSB0byBhY2NlbGVyYXRlIGJhc2VsaW5lIEpQRUcgY29tcHJlc3Npb24gYW5kIGRlY29tcHJlc3Npb24iCitIT01FUEFHRSA9ICJodHRwOi8vbGlianBlZy10dXJiby5vcmcvIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2NkanBlZy5oO2VuZGxpbmU9MTM7bWQ1PTgxODRiY2M3YzRhYzdiOWVkYzZhN2JjMDBmMjMxZDBiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2pwZWdsaWIuaDtlbmRsaW5lPTE2O21kNT03ZWE5N2RjODNiMGY1OTA1MmVlODM3ZTYxZWYwZTA4ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kanBlZy5jO2VuZGxpbmU9MTE7bWQ1PWM1OWUxOTgxMWMwMDZjYjM4ZjgyZDY0NzcxMzRkMzE0IFwKKyIKK0RFUEVORFNfYXBwZW5kX3g4Ni02NF9jbGFzcy10YXJnZXQgPSAiIG5hc20tbmF0aXZlIgorREVQRU5EU19hcHBlbmRfeDg2X2NsYXNzLXRhcmdldCAgICA9ICIgbmFzbS1uYXRpdmUiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbGlianBlZy10dXJiby1maXgtcGFja2FnZV9xYS1lcnJvci5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImQwMWQ5ZTBjMjhjMjdiYzBkZTlmNGUyZThmZjQ5ODU1IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjMzZGQ4NTQ3ZWZkNTU0MzYzOWU4OTBlZmJmMmVmNTJkNWEyMWRmODFmYWY0MWJiOTQwNjU3YWY5MTZhMjM0MDYiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9saWJqcGVnLXR1cmJvL2ZpbGVzLyIKK1VQU1RSRUFNX0NIRUNLX1JFR0VYID0gIi9saWJqcGVnLXR1cmJvL2ZpbGVzLyg/UDxwdmVyPihcZCtbXC5cLV9dKikrKS8iCisKK1BFPSAiMSIKKworIyBEcm9wLWluIHJlcGxhY2VtZW50IGZvciBqcGVnCitQUk9WSURFUyA9ICJqcGVnIgorUlBST1ZJREVTXyR7UE59ICs9ICJqcGVnIgorUlJFUExBQ0VTXyR7UE59ICs9ICJqcGVnIgorUkNPTkZMSUNUU18ke1BOfSArPSAianBlZyIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcKKworZXhwb3J0IE5BU01FTlYgPSAiLS1kZWJ1Zy1wcmVmaXgtbWFwPSR7V09SS0RJUn09L3Vzci9zcmMvZGVidWcvJHtQTn0vJHtFWFRFTkRQRX0ke1BWfS0ke1BSfSIKKworIyBBZGQgbmFzbS1uYXRpdmUgZGVwZW5kZW5jeSBjb25zaXN0ZW50bHkgZm9yIGFsbCBidWlsZCBhcmNoZXMgaXMgaGFyZAorRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtRFdJVEhfU0lNRD1GYWxzZSIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICIgLURXSVRIX1NJTUQ9RmFsc2UiCisKKyMgV29yayBhcm91bmQgbWlzc2luZyB4MzIgQUJJIHN1cHBvcnQKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICItRFdJVEhfU0lNRD1GYWxzZSIsICIiLCBkKX0iCisKKyMgV29yayBhcm91bmQgbWlzc2luZyBub24tZmxvYXRpbmcgcG9pbnQgQUJJIHN1cHBvcnQgaW4gTUlQUworRVhUUkFfT0VDTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiTUlQU1BLR1NGWF9GUFUiLCAiLW5mIiwgIi1EV0lUSF9TSU1EPUZhbHNlIiwgIiIsIGQpfSIKKworIyBQcm92aWRlIGEgd29ya2Fyb3VuZCBpZiBBbHRpdmVjIHVuaXQgaXMgbm90IHByZXNlbnQgaW4gUFBDCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXRfcG93ZXJwYyA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIiLCAiLURXSVRIX1NJTUQ9RmFsc2UiLCBkKX0iCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9jbGFzcy10YXJnZXRfcG93ZXJwYzY0ID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJhbHRpdmVjIiwgIiIsICItRFdJVEhfU0lNRD1GYWxzZSIsIGQpfSIKKworREVCVUdfT1BUSU1JWkFUSU9OX2FwcGVuZF9hcm12NCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfQ0NBUkdTJywgJy1tdGh1bWInLCAnLWZvbWl0LWZyYW1lLXBvaW50ZXInLCAnJywgZCl9IgorREVCVUdfT1BUSU1JWkFUSU9OX2FwcGVuZF9hcm12NSA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfQ0NBUkdTJywgJy1tdGh1bWInLCAnLWZvbWl0LWZyYW1lLXBvaW50ZXInLCAnJywgZCl9IgorCitQQUNLQUdFUyA9KyAianBlZy10b29scyBsaWJ0dXJib2pwZWciCisKK0RFU0NSSVBUSU9OX2pwZWctdG9vbHMgPSAiVGhlIGpwZWctdG9vbHMgcGFja2FnZSBpbmNsdWRlcyBjbGllbnQgcHJvZ3JhbXMgdG8gYWNjZXNzIGxpYmpwZWcgZnVuY3Rpb25hbGl0eS4gIFRoZXNlIHRvb2xzIGFsbG93IGZvciB0aGUgY29tcHJlc3Npb24sIGRlY29tcHJlc3Npb24sIHRyYW5zZm9ybWF0aW9uIGFuZCBkaXNwbGF5IG9mIEpQRUcgZmlsZXMgYW5kIGJlbmNobWFya2luZyBvZiB0aGUgbGlianBlZyBsaWJyYXJ5LiIKK0ZJTEVTX2pwZWctdG9vbHMgPSAiJHtiaW5kaXJ9LyoiCisKK0RFU0NSSVBUSU9OX2xpYnR1cmJvanBlZyA9ICJBIFNJTUQtYWNjZWxlcmF0ZWQgSlBFRyBjb2RlYyB3aGljaCBwcm92aWRlcyBvbmx5IFR1cmJvSlBFRyBBUElzIgorRklMRVNfbGlidHVyYm9qcGVnID0gIiR7bGliZGlyfS9saWJ0dXJib2pwZWcuc28uKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2ttc2N1YmUva21zY3ViZV9naXQuYmIKaW5kZXggODI3MjAwNC4uYTFhMjk1ZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mva21zY3ViZS9rbXNjdWJlX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9rbXNjdWJlL2ttc2N1YmVfZ2l0LmJiCkBAIC02LDcgKzYsNyBAQAogCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9rbXNjdWJlLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9OGIzMDlkNGVlNjdiNzMxNWZmNzM4MTI3MGRkNjMxZmIiCiAKLVNSQ1JFViA9ICJmNjMyYjIzYTUyOGVkNmI0ZTFmZGRkNzc0ZGIwMDVjMzBhYjY1NTY4IgorU1JDUkVWID0gIjc2YmI1N2Q1MzljYjQzZDI2N2U1NjEwMjRjMzRlMDMxYmYzNTFlMDQiCiBTUkNfVVJJID0gImdpdDovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvbWVzYS9rbXNjdWJlO2JyYW5jaD1tYXN0ZXI7cHJvdG9jb2w9aHR0cHMgXAogICAgIGZpbGU6Ly9kZXRlY3QtZ3N0X2JvX21hcC1fdW5tYXAtYW5kLXVzZS1pdC1vci1hdm9pZC1pdC5wYXRjaCIKIFVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2ZpbGVzLzAwMDEtZGlzcGF0Y2hfY29tbW9uLmgtZGVmaW5lLWFsc28tRUdMX05PX1gxMS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2ZpbGVzLzAwMDEtZGlzcGF0Y2hfY29tbW9uLmgtZGVmaW5lLWFsc28tRUdMX05PX1gxMS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MjYyOTQ1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvZmlsZXMvMDAwMS1kaXNwYXRjaF9jb21tb24uaC1kZWZpbmUtYWxzby1FR0xfTk9fWDExLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gNmYxNWNjMjhkMTdjZmRkODZmNTk3NGYwNmFkOTdiOGFmZWRkNTYyNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IE1hcnRpbiBKYW5zYSA8TWFydGluLkphbnNhQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjUgT2N0IDIwMTkgMTE6MDk6MzQgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gZGlzcGF0Y2hfY29tbW9uLmg6IGRlZmluZSBhbHNvIEVHTF9OT19YMTEKKworTUVTQV9FR0xfTk9fWDExX0hFQURFUlMgd2FzIHJlbmFtZWQgdG8gRUdMX05PX1gxMSBpbjoKK2h0dHBzOi8vZ2l0aHViLmNvbS9tZXNhM2QvbWVzYS9jb21taXQvNjIwMmExM2I3MWUxOGRjMzFiYTdlMmY0ZWE5MTViNjdlYWNjMWRkYgorCitTaWduZWQtb2ZmLWJ5OiBNYXJ0aW4gSmFuc2EgPE1hcnRpbi5KYW5zYUBnbWFpbC5jb20+CitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKy0tLQorIHNyYy9kaXNwYXRjaF9jb21tb24uaCB8IDEgKworIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2Rpc3BhdGNoX2NvbW1vbi5oIGIvc3JjL2Rpc3BhdGNoX2NvbW1vbi5oCitpbmRleCBkY2IzYTM1Li5jMjA2MjUzIDEwMDY0NAorLS0tIGEvc3JjL2Rpc3BhdGNoX2NvbW1vbi5oCisrKysgYi9zcmMvZGlzcGF0Y2hfY29tbW9uLmgKK0BAIC01Miw2ICs1Miw3IEBACisgICogc2hvdWxkIGRvIHRoZSBzYW1lCisgICovCisgIyAgZGVmaW5lIE1FU0FfRUdMX05PX1gxMV9IRUFERVJTIDEKKysjICBkZWZpbmUgRUdMX05PX1gxMSAxCisgIyBlbmRpZgorICNpbmNsdWRlICJlcG94eS9lZ2wuaCIKKyAjZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYmVwb3h5L2xpYmVwb3h5XzEuNS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDcxYTJjOTEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIk9wZW5HTCBmdW5jdGlvbiBwb2ludGVyIG1hbmFnZW1lbnQgbGlicmFyeSIKLURFU0NSSVBUSU9OID0gIkl0IGhpZGVzIHRoZSBjb21wbGV4aXR5IG9mIGRsb3BlbigpLCBkbHN5bSgpLCBcCi1nbFhHZXRQcm9jQWRkcmVzcygpLCBlZ2xHZXRQcm9jQWRkcmVzcygpLCBldGMuIGZyb20gdGhlIGFwcCBkZXZlbG9wZXIsIHdpdGggXAotdmVyeSBsaXR0bGUga25vd2xlZGdlIG5lZWRlZCBvbiB0aGVpciBwYXJ0LiBUaGV5IGdldCB0byByZWFkIEdMIHNwZWNzIGFuZCBcCi13cml0ZSBjb2RlIHVzaW5nIHVuZGVjb3JhdGVkIGZ1bmN0aW9uIG5hbWVzIGxpa2UgZ2xDb21waWxlU2hhZGVyKCkuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NThlZjRjODBkNDAxZTA3YmQ5ZWU4YjZiNThjZjQ2NGIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gImUyODQ1ZGU4ZDI3ODJiMmQzMWMwMWFlOGQ3Y2Q0Y2JiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjAwMjk1OGM1NTI4MzIxZWRkNTM0NDAyMzVkM2M0NGU3MWI1YjFlMDliOTE3N2U4ZGFmNjc3NDUwYjZjNDQzM2QiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2FuaG9sdC9saWJlcG94eS9yZWxlYXNlcyIKLQotaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFU19jbGFzcy1uYXRpdmUgPSAiIgotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTX2NsYXNzLW5hdGl2ZXNkayA9ICIiCi0KLVBBQ0tBR0VDT05GSUdbZWdsXSA9ICItRGVnbD15ZXMsIC1EZWdsPW5vLCB2aXJ0dWFsL2VnbCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItRGdseD15ZXMsIC1EZ2x4PW5vIC1EeDExPWZhbHNlLCB2aXJ0dWFsL2xpYngxMSB2aXJ0dWFsL2xpYmdsIgotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsIGQpfSBlZ2wiCi0KLUVYVFJBX09FTUVTT04gKz0gIi1EdGVzdHM9ZmFsc2UiCi0KLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID0gImVnbCB4MTEiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICJlZ2wgeDExIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLSMgVGhpcyB3aWxsIGVuc3VyZSB0aGF0IGRsb3BlbiB3aWxsIGF0dGVtcHQgb25seSBHTCBsaWJyYXJpZXMgcHJvdmlkZWQgYnkgaG9zdAotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlKCkgewotCWNocnBhdGggLS1kZWxldGUgJHtEfSR7bGliZGlyfS8qLnNvCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLQljaHJwYXRoIC0tZGVsZXRlICR7RH0ke2xpYmRpcn0vKi5zbwotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJlcG94eS9saWJlcG94eV8xLjUuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hZjk4Njc0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGliZXBveHkvbGliZXBveHlfMS41LjQuYmIKQEAgLTAsMCArMSw0MyBAQAorU1VNTUFSWSA9ICJPcGVuR0wgZnVuY3Rpb24gcG9pbnRlciBtYW5hZ2VtZW50IGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJJdCBoaWRlcyB0aGUgY29tcGxleGl0eSBvZiBkbG9wZW4oKSwgZGxzeW0oKSwgXAorZ2xYR2V0UHJvY0FkZHJlc3MoKSwgZWdsR2V0UHJvY0FkZHJlc3MoKSwgZXRjLiBmcm9tIHRoZSBhcHAgZGV2ZWxvcGVyLCB3aXRoIFwKK3ZlcnkgbGl0dGxlIGtub3dsZWRnZSBuZWVkZWQgb24gdGhlaXIgcGFydC4gVGhleSBnZXQgdG8gcmVhZCBHTCBzcGVjcyBhbmQgXAord3JpdGUgY29kZSB1c2luZyB1bmRlY29yYXRlZCBmdW5jdGlvbiBuYW1lcyBsaWtlIGdsQ29tcGlsZVNoYWRlcigpLiIKK0hPTUVQQUdFID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvbGliZXBveHkvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU4ZWY0YzgwZDQwMWUwN2JkOWVlOGI2YjU4Y2Y0NjRiIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9hbmhvbHQvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRpc3BhdGNoX2NvbW1vbi5oLWRlZmluZS1hbHNvLUVHTF9OT19YMTEucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMDBmNDdhZDQ0NzMyMWY5ZGM1OWY4NWJjMWM5ZDA0NjciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGJkMmNjNjgxZGZlZmZkZWY3MzljYjI5OTEzZjhjM2NhYTQ3YTg4YTQ1MWZkMmJjNmU2MDZjMDI5OTcyODlkMiIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vYW5ob2x0L2xpYmVwb3h5L3JlbGVhc2VzIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTX2NsYXNzLW5hdGl2ZSA9ICIiCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNfY2xhc3MtbmF0aXZlc2RrID0gIiIKKworUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi1EZWdsPXllcywgLURlZ2w9bm8sIHZpcnR1YWwvZWdsIgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EZ2x4PXllcywgLURnbHg9bm8gLUR4MTE9ZmFsc2UsIHZpcnR1YWwvbGlieDExIHZpcnR1YWwvbGliZ2wiCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IGVnbCIKKworRVhUUkFfT0VNRVNPTiArPSAiLUR0ZXN0cz1mYWxzZSIKKworUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiZWdsIHgxMSIKK1BBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlc2RrID0gImVnbCB4MTEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworIyBUaGlzIHdpbGwgZW5zdXJlIHRoYXQgZGxvcGVuIHdpbGwgYXR0ZW1wdCBvbmx5IEdMIGxpYnJhcmllcyBwcm92aWRlZCBieSBob3N0Citkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisJY2hycGF0aCAtLWRlbGV0ZSAke0R9JHtsaWJkaXJ9Lyouc28KK30KKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrKCkgeworCWNocnBhdGggLS1kZWxldGUgJHtEfSR7bGliZGlyfS8qLnNvCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvMDAwMS1GaXhlZC1idWctNDUzOC12YWxpZGF0ZS1pbWFnZS1zaXplLXdoZW4tbG9hZGluZy1CTVAtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDEtRml4ZWQtYnVnLTQ1MzgtdmFsaWRhdGUtaW1hZ2Utc2l6ZS13aGVuLWxvYWRpbmctQk1QLS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjc0ZGVjYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDIvMDAwMS1GaXhlZC1idWctNDUzOC12YWxpZGF0ZS1pbWFnZS1zaXplLXdoZW4tbG9hZGluZy1CTVAtLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotRnJvbSA4NTEzOGMxZWM2NzNlMDUyNjNhZTY2NmJhZjYxZjc5Mzg0ZGFmN2UwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogU2FtIExhbnRpbmdhIDxzbG91a2VuQGxpYnNkbC5vcmc+Ci1EYXRlOiBUdWUsIDMwIEp1bCAyMDE5IDExOjAwOjAwIC0wNzAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeGVkIGJ1ZyA0NTM4IC0gdmFsaWRhdGUgaW1hZ2Ugc2l6ZSB3aGVuIGxvYWRpbmcgQk1QIGZpbGVzCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLVtodHRwczovL2hnLmxpYnNkbC5vcmcvU0RML3Jldi9lN2JhNjUwYTY0M2FdCi0KLUNWRTogQ1ZFLTIwMTktMTM2MTYKLQotU2lnbmVkLW9mZi1ieTogWWkgWmhhbyA8eWkuemhhb0B3aW5kcml2ZXIuY29tPgotLS0tCi0gc3JjL3ZpZGVvL1NETF9ibXAuYyB8IDUgKysrKysKLSAxIGZpbGUgY2hhbmdlZCwgNSBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9zcmMvdmlkZW8vU0RMX2JtcC5jIGIvc3JjL3ZpZGVvL1NETF9ibXAuYwotaW5kZXggMGI2ODkxOC4uYTA2YjBjOSAxMDA2NDQKLS0tLSBhL3NyYy92aWRlby9TRExfYm1wLmMKLSsrKyBiL3NyYy92aWRlby9TRExfYm1wLmMKLUBAIC0yMjYsNiArMjI2LDExIEBAIFNETF9Mb2FkQk1QX1JXKFNETF9SV29wcyAqIHNyYywgaW50IGZyZWVzcmMpCi0gICAgICAgICAgICAgU0RMX1JXc2VlayhzcmMsIChiaVNpemUgLSBoZWFkZXJTaXplKSwgUldfU0VFS19DVVIpOwotICAgICAgICAgfQotICAgICB9Ci0rICAgIGlmIChiaVdpZHRoIDw9IDAgfHwgYmlIZWlnaHQgPT0gMCkgewotKyAgICAgICAgU0RMX1NldEVycm9yKCJCTVAgZmlsZSB3aXRoIGJhZCBkaW1lbnNpb25zICglZHglZCkiLCBiaVdpZHRoLCBiaUhlaWdodCk7Ci0rICAgICAgICB3YXNfZXJyb3IgPSBTRExfVFJVRTsKLSsgICAgICAgIGdvdG8gZG9uZTsKLSsgICAgfQotICAgICBpZiAoYmlIZWlnaHQgPCAwKSB7Ci0gICAgICAgICB0b3BEb3duID0gU0RMX1RSVUU7Ci0gICAgICAgICBiaUhlaWdodCA9IC1iaUhlaWdodDsKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDEtY29uZmlndXJlLWNoZWNrLWZvci1idWlsZC1kaXItd2hlbi1idWlsZGluZy12ZXJzaW9uLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAxLWNvbmZpZ3VyZS1jaGVjay1mb3ItYnVpbGQtZGlyLXdoZW4tYnVpbGRpbmctdmVyc2lvbi0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIzODNiZDYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDEtY29uZmlndXJlLWNoZWNrLWZvci1idWlsZC1kaXItd2hlbi1idWlsZGluZy12ZXJzaW9uLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUzICswLDAgQEAKLSMgSEcgY2hhbmdlc2V0IHBhdGNoCi0jIFVzZXIgQW51aiBNaXR0YWwgPGFtLmRldmVsQGdtYWlsLmNvbT4KLSMgRGF0ZSAxNTczNjMxNDYyIC0xMDgwMAotIyBOb2RlIElEIDFmYjE4ODBkNWVkZmM3YzVhMzcwODQ2ZTEzZjkwYjI2MDI2MzYyN2MKLSMgUGFyZW50ICAwMDcwMDI1ODdkNWQzNGQ3ODFjMmI2MjhjMDVlOTkyZTBhYzVmNTJkCi1jb25maWd1cmU6IGNoZWNrIGZvciBidWlsZCBkaXIgd2hlbiBidWlsZGluZyB2ZXJzaW9uIHJlcyAoZml4IGJ1ZyAjNDg1OCkKLUZpeGVzIGEgcmFjZSB3aGVyZSB3ZSB0cnkgdG8gYnVpbGQgdmVyc2lvbiByZXMgZmlsZSBpbiBidWlsZCBkaXJlY3RvcnkKLWJlZm9yZSBpdCBoYXMgZXZlbiBiZWVuIGNyZWF0ZWQuIFByZXZlbnRzIGVycm9ycyBsaWtlOgotCi0vYmluL2Jhc2ggLi4vU0RMMi0yLjAuMTAvYnVpbGQtc2NyaXB0cy91cGRhdGVyZXYuc2gKLS9iaW4vYmFzaCAuLi9TREwyLTIuMC4xMC9idWlsZC1zY3JpcHRzL21raW5zdGFsbGRpcnMgYnVpbGQKLW1rZGlyIC1wIC0tIGJ1aWxkCi14ODZfNjQtcG9reXNkay1taW5ndzMyLXdpbmRyZXMgLS1pbmNsdWRlLWRpcj0vaG9tZS9wb2t5YnVpbGQveW9jdG8td29ya2VyL21ldGEtbWluZ3cvYnVpbGQvYnVpbGQvdG1wL3dvcmsveDg2XzY0LW5hdGl2ZXNkay1taW5ndzMyLXBva3lzZGstbWluZ3czMi9uYXRpdmVzZGstbGlic2RsMi8yLjAuMTAtcjAvcmVjaXBlLXN5c3Jvb3Qvb3B0L3Bva3kvMy4wL3N5c3Jvb3RzL3g4Nl82NC1wb2t5c2RrLW1pbmd3MzIvdXNyL2luY2x1ZGUgLi4vU0RMMi0yLjAuMTAvc3JjL21haW4vd2luZG93cy92ZXJzaW9uLnJjIGJ1aWxkL3ZlcnNpb24ubwoteDg2XzY0LXBva3lzZGstbWluZ3czMi13aW5kcmVzOiBidWlsZC92ZXJzaW9uLm86IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLU1ha2VmaWxlOjY5MjogcmVjaXBlIGZvciB0YXJnZXQgJ2J1aWxkL3ZlcnNpb24ubycgZmFpbGVkCi1tYWtlOiAqKiogW2J1aWxkL3ZlcnNpb24ub10gRXJyb3IgMQotbWFrZTogKioqIFdhaXRpbmcgZm9yIHVuZmluaXNoZWQgam9icy4uLi4KLXRvdWNoIGJ1aWxkLy5jcmVhdGVkCi1XQVJOSU5HOiBleGl0IGNvZGUgMSBmcm9tIGEgc2hlbGwgY29tbWFuZC4KLQotRXh0ZW5zaW9uIG9mIGZpeDoKLWh0dHBzOi8vaGcubGlic2RsLm9yZy9TREwvcmV2Lzk5ZDhiMThhY2Y4YQotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW0uZGV2ZWxAZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC1yIDAwNzAwMjU4N2Q1ZCAtciAxZmIxODgwZDVlZGYgY29uZmlndXJlCi0tLS0gYS9jb25maWd1cmUJVHVlIE5vdiAxMiAxNzoyNDozNyAyMDE5IC0wNTAwCi0rKysgYi9jb25maWd1cmUJV2VkIE5vdiAxMyAxMDo1MTowMiAyMDE5ICswMzAwCi1AQCAtMjU0OTMsNyArMjU0OTMsNyBAQAotIFZFUlNJT05fREVQRU5EUz1gZWNobyAkVkVSU0lPTl9TT1VSQ0VTYAotIFZFUlNJT05fT0JKRUNUUz1gZWNobyAiJFZFUlNJT05fT0JKRUNUUyIgfCBzZWQgJ3MsW14gXSovXChbXiBdKlwpXC5yYywkKG9iamVjdHMpL1wxLm8sZydgCi0gVkVSU0lPTl9ERVBFTkRTPWBlY2hvICIkVkVSU0lPTl9ERVBFTkRTIiB8IHNlZCAicyxcXChbXiBdKlxcKS9cXChbXiBdKlxcKVxcLnJjLFxcXFwKLS1cXCQob2JqZWN0cykvXFwyLm86IFxcMS9cXDIucmNcXFxcCi0rXFwkKG9iamVjdHMpL1xcMi5vOiBcXDEvXFwyLnJjIFxcJChvYmplY3RzKS8uY3JlYXRlZFxcXFwKLSAJXFwkKFdJTkRSRVMpIFxcJDwgXFwkQCxnImAKLSAKLSBTRExNQUlOX09CSkVDVFM9YGVjaG8gJFNETE1BSU5fU09VUkNFU2AKLWRpZmYgLXIgMDA3MDAyNTg3ZDVkIC1yIDFmYjE4ODBkNWVkZiBjb25maWd1cmUuYWMKLS0tLSBhL2NvbmZpZ3VyZS5hYwlUdWUgTm92IDEyIDE3OjI0OjM3IDIwMTkgLTA1MDAKLSsrKyBiL2NvbmZpZ3VyZS5hYwlXZWQgTm92IDEzIDEwOjUxOjAyIDIwMTkgKzAzMDAKLUBAIC00MTc3LDcgKzQxNzcsNyBAQAotIFZFUlNJT05fREVQRU5EUz1gZWNobyAkVkVSU0lPTl9TT1VSQ0VTYAotIFZFUlNJT05fT0JKRUNUUz1gZWNobyAiJFZFUlNJT05fT0JKRUNUUyIgfCBzZWQgJ3MsW1teIF1dKi9cKFtbXiBdXSpcKVwucmMsJChvYmplY3RzKS9cMS5vLGcnYAotIFZFUlNJT05fREVQRU5EUz1gZWNobyAiJFZFUlNJT05fREVQRU5EUyIgfCBzZWQgInMsXFwoW1teIF1dKlxcKS9cXChbW14gXV0qXFwpXFwucmMsXFxcXAotLVxcJChvYmplY3RzKS9cXDIubzogXFwxL1xcMi5yY1xcXFwKLStcXCQob2JqZWN0cykvXFwyLm86IFxcMS9cXDIucmMgXFwkKG9iamVjdHMpLy5jcmVhdGVkXFxcXAotIAlcXCQoV0lORFJFUykgXFwkPCBcXCRALGciYAotIAotIFNETE1BSU5fT0JKRUNUUz1gZWNobyAkU0RMTUFJTl9TT1VSQ0VTYApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDItRml4ZWQtYnVnLTQ3OTctU0RMLWZhaWxzLXRvLWNvbXBpbGUtd2l0aC1NZXNhLU1hc3Rlci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMi8wMDAyLUZpeGVkLWJ1Zy00Nzk3LVNETC1mYWlscy10by1jb21waWxlLXdpdGgtTWVzYS1NYXN0ZXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhmNWI2YTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyLzAwMDItRml4ZWQtYnVnLTQ3OTctU0RMLWZhaWxzLXRvLWNvbXBpbGUtd2l0aC1NZXNhLU1hc3Rlci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQxICswLDAgQEAKLSMgSEcgY2hhbmdlc2V0IHBhdGNoCi0jIFVzZXIgU3lsdmFpbiBCZWNrZXIgPHN5bHZhaW4uYmVja2VyQGdtYWlsLmNvbT4KLSMgRGF0ZSAxNTcwODk4ODc2IC03MjAwCi0jICAgICAgU2F0IE9jdCAxMiAxODo0Nzo1NiAyMDE5ICswMjAwCi0jIE5vZGUgSUQgMzY5YjAxMDA2ZWIyZjZmZDU2M2Y3YzMxNWQyOWFlM2ZlNTAzYzQzMgotIyBQYXJlbnQgIDRjYmFmZmQwMDgzYjhjZDE3MDcwZGJkOWQ0YWIxY2UwZmE5ZmNhMmQKLUZpeGVkIGJ1ZyA0Nzk3IC0gU0RMIGZhaWxzIHRvIGNvbXBpbGUgd2l0aCBNZXNhIE1hc3RlciAodGhhbmtzIE1pY2hhZWwgT2xicmljaCEpCi0KLWZpeCBidWlsZGluZyB3aXRoIE1lc2EgMTkuMgotCi1XaXRoIE1lc2EgMTkuMiBidWlsZGluZyBmYWlscyB3aXRoOgotCi0vaW5jbHVkZS9HTEVTL2dsLmg6NjM6MjU6IGVycm9yOiBjb25mbGljdGluZyB0eXBlcyBmb3IgJ0dMc2l6ZWlwdHInCi0KLVRoZSBzYW1lIHR5cGUgaXMgZGVmaW5lZCBpbiBpbmNsdWRlL1NETF9vcGVuZ2wuaCBmb3IgT3BlbkdMIGFuZCB0aGUgdHdvCi1oZWFkZXJzIHNob3VsZCBub3QgYmUgaW5jbHVkZWQgYXQgdGhlIHNhbWUgdGltZS4KLVRoaXMgd2FzIGp1c3QgbmV2ZXIgbm90aWNlZCBiZWNhdXNlIHRoZSBzYW1lIGhlYWRlciBndWFyZCAnX19nbF9oXycgd2FzCi11c2VkLiBUaGlzIHdhcyBjaGFuZ2VkIGluIE1lc2EuIFRoZSByZXN1bHQgaXMgdGhpcyBlcnJvci4KLQotRml4IHRoaXMgdGhlIHNhbWUgd2F5IEdMRVMyIGFscmVhZHkgaGFuZGxlcyB0aGlzOiBEb24ndCBpbmNsdWRlIHRoZSBHTEVTCi1oZWFkZXIgd2hlbiB0aGUgT3BlbkdMIGhlYWRlciB3YXMgYWxyZWFkeSBpbmNsdWRlZC4KLShodHRwczovL2hnLmxpYnNkbC5vcmcvU0RML3Jldi9hNjBiM2MyOTJmMGYpCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vaGcubGlic2RsLm9yZy9TREwvcmV2LzM2OWIwMTAwNmViMl0KLVNpZ25lZC1vZmYtYnk6IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KLQotZGlmZiAtLWdpdCBhL3NyYy92aWRlby9TRExfdmlkZW8uYyBiL3NyYy92aWRlby9TRExfdmlkZW8uYwotLS0tIGEvc3JjL3ZpZGVvL1NETF92aWRlby5jCi0rKysgYi9zcmMvdmlkZW8vU0RMX3ZpZGVvLmMKLUBAIC0zNyw5ICszNyw5IEBACi0gI2luY2x1ZGUgIlNETF9vcGVuZ2wuaCIKLSAjZW5kaWYgLyogU0RMX1ZJREVPX09QRU5HTCAqLwotIAotLSNpZiBTRExfVklERU9fT1BFTkdMX0VTCi0rI2lmIFNETF9WSURFT19PUEVOR0xfRVMgJiYgIVNETF9WSURFT19PUEVOR0wKLSAjaW5jbHVkZSAiU0RMX29wZW5nbGVzLmgiCi0tI2VuZGlmIC8qIFNETF9WSURFT19PUEVOR0xfRVMgKi8KLSsjZW5kaWYgLyogU0RMX1ZJREVPX09QRU5HTF9FUyAmJiAhU0RMX1ZJREVPX09QRU5HTCAqLwotIAotIC8qIEdMIGFuZCBHTEVTMiBoZWFkZXJzIGNvbmZsaWN0IG9uIExpbnV4IDMyIGJpdHMgKi8KLSAjaWYgU0RMX1ZJREVPX09QRU5HTF9FUzIgJiYgIVNETF9WSURFT19PUEVOR0wKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJzZGwyL2xpYnNkbDJfMi4wLjEwLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhYzRhMzU2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuMTAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NyArMCwwIEBACi1TVU1NQVJZID0gIlNpbXBsZSBEaXJlY3RNZWRpYSBMYXllciIKLURFU0NSSVBUSU9OID0gIlNpbXBsZSBEaXJlY3RNZWRpYSBMYXllciBpcyBhIGNyb3NzLXBsYXRmb3JtIG11bHRpbWVkaWEgXAotbGlicmFyeSBkZXNpZ25lZCB0byBwcm92aWRlIGxvdyBsZXZlbCBhY2Nlc3MgdG8gYXVkaW8sIGtleWJvYXJkLCBtb3VzZSwgXAotam95c3RpY2ssIDNEIGhhcmR3YXJlIHZpYSBPcGVuR0wsIGFuZCAyRCB2aWRlbyBmcmFtZWJ1ZmZlci4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmxpYnNkbC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5saWJzZGwub3JnLyIKLQotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIlpsaWIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9NTA0YTk0NTRjZWI4OWZkNzVhMjU4MzQ3M2IxMTQwOWUiCi0KLVBST1ZJREVTID0gInZpcnR1YWwvbGlic2RsMiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmxpYnNkbC5vcmcvcmVsZWFzZS9TREwyLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9tb3JlLWdlbi1kZXBlbmRzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4ZWQtYnVnLTQ1MzgtdmFsaWRhdGUtaW1hZ2Utc2l6ZS13aGVuLWxvYWRpbmctQk1QLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeGVkLWJ1Zy00Nzk3LVNETC1mYWlscy10by1jb21waWxlLXdpdGgtTWVzYS1NYXN0ZXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWJ1aWxkLWRpci13aGVuLWJ1aWxkaW5nLXZlcnNpb24tLnBhdGNoIFwKLSIKLQotUyA9ICIke1dPUktESVJ9L1NETDItJHtQVn0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI1YTIxMTRmMmE2ZjM0OGJkYWI1YmY1MmI5OTQ4MTFkYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiNDY1NmMxM2ExZjBkMDAyM2FlMmY0YTljZjA4ZWM5MmZmZmI0NjRlMGYyNDIzODMzNzc4NDE1OWI4YjkxZDU3IgotCi1pbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnCi0KLUJJTkNPTkZJRyA9ICIke2JpbmRpcn0vc2RsMi1jb25maWciCi0KLUNWRV9QUk9EVUNUID0gInNpbXBsZV9kaXJlY3RtZWRpYV9sYXllciBzZGwiCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtb3NzIC0tZGlzYWJsZS1lc2QgLS1kaXNhYmxlLWFydHMgXAotICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1kaXNrYXVkaW8gLS1kaXNhYmxlLW5hcyAtLWRpc2FibGUtZXNkLXNoYXJlZCAtLWRpc2FibGUtZXNkdGVzdCBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXZpZGVvLWR1bW15IFwKLSAgICAgICAgICAgICAgICAtLWVuYWJsZS1wdGhyZWFkcyBcCi0gICAgICAgICAgICAgICAgLS1lbmFibGUtc2RsLWRsb3BlbiBcCi0gICAgICAgICAgICAgICAgLS1kaXNhYmxlLXJwYXRoIFwKLSAgICAgICAgICAgICAgICAtLWRpc2FibGUtc25kaW8gXAotICAgICAgICAgICAgICAgICIKLQotIyBvcGVuZ2wgcGFja2FnZWNvbmZpZyBmYWN0b3JlZCBvdXQgdG8gbWFrZSBpdCBlYXN5IGZvciBkaXN0cm9zCi0jIGFuZCBCU1AgbGF5ZXJzIHRvIHBpY2sgZWl0aGVyIChkZXNrdG9wKSBvcGVuZ2wsIGdsZXMyLCBvciBubyBHTAotUEFDS0FHRUNPTkZJR19HTCA/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgZCl9IgotCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJ4MTEiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICAke1BBQ0tBR0VDT05GSUdfR0x9IFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhbHNhIGRpcmVjdGZiIHB1bHNlYXVkaW8geDExJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCBnbGVzMicsICcnLCBkKX0gXAotIgotUEFDS0FHRUNPTkZJR1thbHNhXSAgICAgICA9ICItLWVuYWJsZS1hbHNhIC0tZGlzYWJsZS1hbHNhdGVzdCwtLWRpc2FibGUtYWxzYSxhbHNhLWxpYiwiCi1QQUNLQUdFQ09ORklHW2RpcmVjdGZiXSAgID0gIi0tZW5hYmxlLXZpZGVvLWRpcmVjdGZiLC0tZGlzYWJsZS12aWRlby1kaXJlY3RmYixkaXJlY3RmYiIKLVBBQ0tBR0VDT05GSUdbZ2xlczJdICAgICAgPSAiLS1lbmFibGUtdmlkZW8tb3BlbmdsZXMsLS1kaXNhYmxlLXZpZGVvLW9wZW5nbGVzLHZpcnR1YWwvbGliZ2xlczIiCi1QQUNLQUdFQ09ORklHW2phY2tdICAgICAgID0gIi0tZW5hYmxlLWphY2ssLS1kaXNhYmxlLWphY2ssamFjayIKLVBBQ0tBR0VDT05GSUdba21zZHJtXSAgICAgPSAiLS1lbmFibGUtdmlkZW8ta21zZHJtLC0tZGlzYWJsZS12aWRlby1rbXNkcm0sbGliZHJtIHZpcnR1YWwvbGliZ2JtIgotUEFDS0FHRUNPTkZJR1tvcGVuZ2xdICAgICA9ICItLWVuYWJsZS12aWRlby1vcGVuZ2wsLS1kaXNhYmxlLXZpZGVvLW9wZW5nbCx2aXJ0dWFsL2xpYmdsIgotUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZWF1ZGlvLC0tZGlzYWJsZS1wdWxzZWF1ZGlvLHB1bHNlYXVkaW8iCi1QQUNLQUdFQ09ORklHW3RzbGliXSAgICAgID0gIi0tZW5hYmxlLWlucHV0LXRzbGliLC0tZGlzYWJsZS1pbnB1dC10c2xpYix0c2xpYiIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gICAgPSAiLS1lbmFibGUtdmlkZW8td2F5bGFuZCwtLWRpc2FibGUtdmlkZW8td2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYnhrYmNvbW1vbiIKLVBBQ0tBR0VDT05GSUdbeDExXSAgICAgICAgPSAiLS1lbmFibGUtdmlkZW8teDExLC0tZGlzYWJsZS12aWRlby14MTEsdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4cmFuZHIgbGlieHJlbmRlciIKLQotRVhUUkFfQVVUT1JFQ09ORiArPSAiLS1pbmNsdWRlPWFjaW5jbHVkZSAtLWV4Y2x1ZGU9YXV0b2hlYWRlciIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgICAgICMgUmVtb3ZlIG9sZCBsaWJ0b29sIG1hY3Jvcy4KLSAgICAgICAgTUFDUk9TPSJsaWJ0b29sLm00IGx0fm9ic29sZXRlLm00IGx0b3B0aW9ucy5tNCBsdHN1Z2FyLm00IGx0dmVyc2lvbi5tNCIKLSAgICAgICAgZm9yIGkgaW4gJHtNQUNST1N9OyBkbwotICAgICAgICAgICAgICAgcm0gLWYgJHtTfS9hY2luY2x1ZGUvJGkKLSAgICAgICAgZG9uZQotICAgICAgICBleHBvcnQgU1lTUk9PVD0kUEtHX0NPTkZJR19TWVNST09UX0RJUgotfQotCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9jbWFrZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlic2RsMi9saWJzZGwyXzIuMC4xMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuMTIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzFjOTQxZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnNkbDIvbGlic2RsMl8yLjAuMTIuYmIKQEAgLTAsMCArMSw4MSBAQAorU1VNTUFSWSA9ICJTaW1wbGUgRGlyZWN0TWVkaWEgTGF5ZXIiCitERVNDUklQVElPTiA9ICJTaW1wbGUgRGlyZWN0TWVkaWEgTGF5ZXIgaXMgYSBjcm9zcy1wbGF0Zm9ybSBtdWx0aW1lZGlhIFwKK2xpYnJhcnkgZGVzaWduZWQgdG8gcHJvdmlkZSBsb3cgbGV2ZWwgYWNjZXNzIHRvIGF1ZGlvLCBrZXlib2FyZCwgbW91c2UsIFwKK2pveXN0aWNrLCAzRCBoYXJkd2FyZSB2aWEgT3BlbkdMLCBhbmQgMkQgdmlkZW8gZnJhbWVidWZmZXIuIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5saWJzZGwub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYnVnemlsbGEubGlic2RsLm9yZy8iCisKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJabGliIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy50eHQ7bWQ1PTJkNGFmNmFkYjRkODlhYWQwY2RlZGJjYzE4YzlhMzJmIgorCisjIGFybS1uZW9uIGFkZHMgTUlUIGxpY2Vuc2UKK0xJQ0VOU0VfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdhcm0tbmVvbicsICcmIE1JVCcsICcnLCBkKX0iCitMSUNfRklMRVNfQ0hLU1VNX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYXJtLW5lb24nLCAnZmlsZTovL3NyYy92aWRlby9hcm0vcGl4bWFuLWFybS1uZW9uLWFzbS5oO21kNT05YTljYzFlNTFhYmJmMWRhNThmNGQ5NTI4ZWM5ZDQ5YjtiZWdpbmxpbmU9MTtlbmRsaW5lPTI0JywgJycsIGQpfSIKKworUFJPVklERVMgPSAidmlydHVhbC9saWJzZGwyIgorCitTUkNfVVJJID0gImh0dHA6Ly93d3cubGlic2RsLm9yZy9yZWxlYXNlL1NETDItJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL21vcmUtZ2VuLWRlcGVuZHMucGF0Y2ggXAorIgorCitTID0gIiR7V09SS0RJUn0vU0RMMi0ke1BWfSIKKworU1JDX1VSSVttZDVzdW1dID0gIjc4M2I2ZjJkZjhmZjAyYjE5YmI1Y2U0OTJiOTljOGZmIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM0OTI2OGY2OTVjMDJlZmJjOWI5MTQ4YTcwYjg1ZTU4Y2VmYmJmNzA0YWJkM2U5MWJlNjU0ZGI3ZjFlMmM4NjMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGxpYl9wYWNrYWdlIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9zZGwyLWNvbmZpZyIKKworQ1ZFX1BST0RVQ1QgPSAic2ltcGxlX2RpcmVjdG1lZGlhX2xheWVyIHNkbCIKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1vc3MgLS1kaXNhYmxlLWVzZCAtLWRpc2FibGUtYXJ0cyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWRpc2thdWRpbyAtLWRpc2FibGUtbmFzIC0tZGlzYWJsZS1lc2Qtc2hhcmVkIC0tZGlzYWJsZS1lc2R0ZXN0IFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtdmlkZW8tZHVtbXkgXAorICAgICAgICAgICAgICAgIC0tZW5hYmxlLXB0aHJlYWRzIFwKKyAgICAgICAgICAgICAgICAtLWVuYWJsZS1zZGwtZGxvcGVuIFwKKyAgICAgICAgICAgICAgICAtLWRpc2FibGUtcnBhdGggXAorICAgICAgICAgICAgICAgIC0tZGlzYWJsZS1zbmRpbyBcCisgICAgICAgICAgICAgICAgLS1kaXNhYmxlLWZjaXR4IC0tZGlzYWJsZS1pYnVzIFwKKyAgICAgICAgICAgICAgICAiCisKKyMgb3BlbmdsIHBhY2thZ2Vjb25maWcgZmFjdG9yZWQgb3V0IHRvIG1ha2UgaXQgZWFzeSBmb3IgZGlzdHJvcworIyBhbmQgQlNQIGxheWVycyB0byBwaWNrIGVpdGhlciAoZGVza3RvcCkgb3BlbmdsLCBnbGVzMiwgb3Igbm8gR0wKK1BBQ0tBR0VDT05GSUdfR0wgPz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsIGQpfSIKKworUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAieDExIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgorUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYSBkaXJlY3RmYiBwdWxzZWF1ZGlvIHgxMScsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ3dheWxhbmQgZ2xlczInLCAnJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJuZW9uIiwiYXJtLW5lb24iLCIiLGQpfSBcCisiCitQQUNLQUdFQ09ORklHW2Fsc2FdICAgICAgID0gIi0tZW5hYmxlLWFsc2EgLS1kaXNhYmxlLWFsc2F0ZXN0LC0tZGlzYWJsZS1hbHNhLGFsc2EtbGliLCIKK1BBQ0tBR0VDT05GSUdbYXJtLW5lb25dICAgPSAiLS1lbmFibGUtYXJtLW5lb24sLS1kaXNhYmxlLWFybS1uZW9uIgorUEFDS0FHRUNPTkZJR1tkaXJlY3RmYl0gICA9ICItLWVuYWJsZS12aWRlby1kaXJlY3RmYiwtLWRpc2FibGUtdmlkZW8tZGlyZWN0ZmIsZGlyZWN0ZmIiCitQQUNLQUdFQ09ORklHW2dsZXMyXSAgICAgID0gIi0tZW5hYmxlLXZpZGVvLW9wZW5nbGVzLC0tZGlzYWJsZS12aWRlby1vcGVuZ2xlcyx2aXJ0dWFsL2xpYmdsZXMyIgorUEFDS0FHRUNPTkZJR1tqYWNrXSAgICAgICA9ICItLWVuYWJsZS1qYWNrLC0tZGlzYWJsZS1qYWNrLGphY2siCitQQUNLQUdFQ09ORklHW2ttc2RybV0gICAgID0gIi0tZW5hYmxlLXZpZGVvLWttc2RybSwtLWRpc2FibGUtdmlkZW8ta21zZHJtLGxpYmRybSB2aXJ0dWFsL2xpYmdibSIKK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSAgICAgPSAiLS1lbmFibGUtdmlkZW8tb3BlbmdsLC0tZGlzYWJsZS12aWRlby1vcGVuZ2wsdmlydHVhbC9saWJnbCIKK1BBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1t0c2xpYl0gICAgICA9ICItLWVuYWJsZS1pbnB1dC10c2xpYiwtLWRpc2FibGUtaW5wdXQtdHNsaWIsdHNsaWIiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdICAgID0gIi0tZW5hYmxlLXZpZGVvLXdheWxhbmQsLS1kaXNhYmxlLXZpZGVvLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJ4a2Jjb21tb24iCitQQUNLQUdFQ09ORklHW3gxMV0gICAgICAgID0gIi0tZW5hYmxlLXZpZGVvLXgxMSwtLWRpc2FibGUtdmlkZW8teDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieHJhbmRyIGxpYnhyZW5kZXIiCisKK0VYVFJBX0FVVE9SRUNPTkYgKz0gIi0taW5jbHVkZT1hY2luY2x1ZGUgLS1leGNsdWRlPWF1dG9oZWFkZXIiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgICAgICAjIFJlbW92ZSBvbGQgbGlidG9vbCBtYWNyb3MuCisgICAgICAgIE1BQ1JPUz0ibGlidG9vbC5tNCBsdH5vYnNvbGV0ZS5tNCBsdG9wdGlvbnMubTQgbHRzdWdhci5tNCBsdHZlcnNpb24ubTQiCisgICAgICAgIGZvciBpIGluICR7TUFDUk9TfTsgZG8KKyAgICAgICAgICAgICAgIHJtIC1mICR7U30vYWNpbmNsdWRlLyRpCisgICAgICAgIGRvbmUKKyAgICAgICAgZXhwb3J0IFNZU1JPT1Q9JFBLR19DT05GSUdfU1lTUk9PVF9ESVIKK30KKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vY21ha2UiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzLzAwMDEtQnVpbGQtc2Zjc2FtcGxlLW9ubHktd2hlbi1YMTEtYmFja2VuZC1pcy1lbmFibGVkLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmEtdXRpbHMvMDAwMS1CdWlsZC1zZmNzYW1wbGUtb25seS13aGVuLVgxMS1iYWNrZW5kLWlzLWVuYWJsZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAxZmI3MTkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmEtdXRpbHMvMDAwMS1CdWlsZC1zZmNzYW1wbGUtb25seS13aGVuLVgxMS1iYWNrZW5kLWlzLWVuYWJsZWQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNSArMCwwIEBACi1Gcm9tIDhmYzE0ZTRiYzgxODg1YjgwYzMwNzJlNTQ5YzJlNmY1OTUzM2Q3ZWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotRGF0ZTogRnJpLCA4IEZlYiAyMDE5IDExOjQ1OjU1ICswODAwCi1TdWJqZWN0OiBbUEFUQ0hdIEJ1aWxkIHNmY3NhbXBsZSBvbmx5IHdoZW4gWDExIGJhY2tlbmQgaXMgZW5hYmxlZAotCi1TZWU6IGh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS11dGlscy9wdWxsLzE0OSwgYW5kCi1odHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEtdXRpbHMvaXNzdWVzLzE1MAotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCi1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gfCAzICsrLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IGQyODE3NWEuLmUyOTRlMjUgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC0yNCwxMCArMjQsMTEgQEAgQUNMT0NBTF9BTUZMQUdTID0gLUkgbTQgJHtBQ0xPQ0FMX0ZMQUdTfQotIAotIEFVVE9NQUtFX09QVElPTlMgPSBmb3JlaWduCi0gCi0tU1VCRElSUyA9IGNvbW1vbiBkZWNvZGUgZW5jb2RlIHZhaW5mbyB2aWRlb3Byb2Nlc3MgdmVuZG9yL2ludGVsIHZlbmRvci9pbnRlbC9zZmNzYW1wbGUKLStTVUJESVJTID0gY29tbW9uIGRlY29kZSBlbmNvZGUgdmFpbmZvIHZpZGVvcHJvY2VzcyB2ZW5kb3IvaW50ZWwKLSAKLSBpZiBVU0VfWDExCi0gU1VCRElSUyArPSBwdXRzdXJmYWNlCi0rU1VCRElSUyArPSB2ZW5kb3IvaW50ZWwvc2Zjc2FtcGxlCi0gZWxzZQotIGlmIFVTRV9XQVlMQU5ECi0gU1VCRElSUyArPSBwdXRzdXJmYWNlCi0tLSAKLTIuMTcuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18yLjUuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzIuNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNjhkMGNmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhLXV0aWxzXzIuNS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJsaWJ2YS11dGlscyBpcyBhIGNvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIGZyb20gbGlidmEgcHJvamVjdCIKLQotREVTQ1JJUFRJT04gPSAibGlidmEtdXRpbHMgaXMgYSBjb2xsZWN0aW9uIG9mIHV0aWxpdGllcyBcCi1hbmQgZXhhbXBsZXMgdG8gZXhlcmNpc2UgVkEtQVBJIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgbGlidmEgXAotcHJvamVjdC5WQS1BUEkgaXMgYW4gb3Blbi1zb3VyY2UgbGlicmFyeSBhbmQgQVBJIHNwZWNpZmljYXRpb24sIFwKLXdoaWNoIHByb3ZpZGVzIGFjY2VzcyB0byBncmFwaGljcyBoYXJkd2FyZSBhY2NlbGVyYXRpb24gY2FwYWJpbGl0aWVzIFwKLWZvciB2aWRlbyBwcm9jZXNzaW5nLiBJdCBjb25zaXN0cyBvZiBhIG1haW4gbGlicmFyeSBhbmQgZHJpdmVyLXNwZWNpZmljIFwKLWFjY2VsZXJhdGlvbiBiYWNrZW5kcyBmb3IgZWFjaCBzdXBwb3J0ZWQgaGFyZHdhcmUgdmVuZG9yIgotCi1IT01FUEFHRSA9ICJodHRwczovLzAxLm9yZy9saW51eG1lZGlhL3ZhYXBpIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEtdXRpbHMvaXNzdWVzIgotCi1TRUNUSU9OID0gIngxMSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjE0OGZjOGFkZjE5ZGM5YWVjMTdjZjljZDI5YTlhNWUiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQnVpbGQtc2Zjc2FtcGxlLW9ubHktd2hlbi1YMTEtYmFja2VuZC1pcy1lbmFibGVkLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiYzFmYWRhMjZjMjg2NjU0ODU5ZWZmMzNiMjU2MmNiNzkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTIzOGM5ZDUxMTBkNjBmOTM1NjgzMzkwYjgzODNmZGFjMzUwNzM0NjM4NGNkNWYxMTdhMjNjNmRiMWQ3MmExNyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS11dGlscy9yZWxlYXNlcyIKLQotREVQRU5EUyA9ICJsaWJ2YSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCi0KLSMgZGVwZW5kcyBvbiBsaWJ2YSB3aGljaCByZXF1aXJlcyBvcGVuZ2wKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSx2aXJ0dWFsL2xpYngxMSBsaWJ4ZXh0IGxpYnhmaXhlcyIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLS1lbmFibGUtd2F5bGFuZCwtLWRpc2FibGUtd2F5bGFuZCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmEtdXRpbHNfMi42LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YS11dGlsc18yLjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2IzODAyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbGlidmEvbGlidmEtdXRpbHNfMi42LjAuYmIKQEAgLTAsMCArMSwzMiBAQAorU1VNTUFSWSA9ICJsaWJ2YS11dGlscyBpcyBhIGNvbGxlY3Rpb24gb2YgdXRpbGl0aWVzIGZyb20gbGlidmEgcHJvamVjdCIKKworREVTQ1JJUFRJT04gPSAibGlidmEtdXRpbHMgaXMgYSBjb2xsZWN0aW9uIG9mIHV0aWxpdGllcyBcCithbmQgZXhhbXBsZXMgdG8gZXhlcmNpc2UgVkEtQVBJIGluIGFjY29yZGFuY2Ugd2l0aCB0aGUgbGlidmEgXAorcHJvamVjdC5WQS1BUEkgaXMgYW4gb3Blbi1zb3VyY2UgbGlicmFyeSBhbmQgQVBJIHNwZWNpZmljYXRpb24sIFwKK3doaWNoIHByb3ZpZGVzIGFjY2VzcyB0byBncmFwaGljcyBoYXJkd2FyZSBhY2NlbGVyYXRpb24gY2FwYWJpbGl0aWVzIFwKK2ZvciB2aWRlbyBwcm9jZXNzaW5nLiBJdCBjb25zaXN0cyBvZiBhIG1haW4gbGlicmFyeSBhbmQgZHJpdmVyLXNwZWNpZmljIFwKK2FjY2VsZXJhdGlvbiBiYWNrZW5kcyBmb3IgZWFjaCBzdXBwb3J0ZWQgaGFyZHdhcmUgdmVuZG9yIgorCitIT01FUEFHRSA9ICJodHRwczovLzAxLm9yZy9saW51eG1lZGlhL3ZhYXBpIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEtdXRpbHMvaXNzdWVzIgorCitTRUNUSU9OID0gIngxMSIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjE0OGZjOGFkZjE5ZGM5YWVjMTdjZjljZDI5YTlhNWUiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS11dGlscy5naXQ7YnJhbmNoPXYyLjYtYnJhbmNoIgorU1JDUkVWID0gIjhlYTFlYmE0MzNkY2JjZWIwZTVkY2I1NGI4ZTNmOTg0OTg3ZjdhMTciCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKKworREVQRU5EUyA9ICJsaWJ2YSIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKKworIyBkZXBlbmRzIG9uIGxpYnZhIHdoaWNoIHJlcXVpcmVzIG9wZW5nbAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EeDExPXRydWUsIC1EeDExPWZhbHNlLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieGZpeGVzIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItRHdheWxhbmQ9dHJ1ZSwgLUR3YXlsYW5kPWZhbHNlLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjUuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzIuNS4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3M2UyZTAxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzIuNS4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDYgKzAsMCBAQAotU1VNTUFSWSA9ICJWaWRlbyBBY2NlbGVyYXRpb24gKFZBKSBBUEkgZm9yIExpbnV4IgotREVTQ1JJUFRJT04gPSAiVmlkZW8gQWNjZWxlcmF0aW9uIEFQSSAoVkEgQVBJKSBpcyBhIGxpYnJhcnkgKGxpYlZBKSBcCi1hbmQgQVBJIHNwZWNpZmljYXRpb24gd2hpY2ggZW5hYmxlcyBhbmQgcHJvdmlkZXMgYWNjZXNzIHRvIGdyYXBoaWNzIFwKLWhhcmR3YXJlIChHUFUpIGFjY2VsZXJhdGlvbiBmb3IgdmlkZW8gcHJvY2Vzc2luZyBvbiBMaW51eCBhbmQgVU5JWCBcCi1iYXNlZCBvcGVyYXRpbmcgc3lzdGVtcy4gQWNjZWxlcmF0ZWQgcHJvY2Vzc2luZyBpbmNsdWRlcyB2aWRlbyBcCi1kZWNvZGluZywgdmlkZW8gZW5jb2RpbmcsIHN1YnBpY3R1cmUgYmxlbmRpbmcgYW5kIHJlbmRlcmluZy4gVGhlIFwKLXNwZWNpZmljYXRpb24gd2FzIG9yaWdpbmFsbHkgZGVzaWduZWQgYnkgSW50ZWwgZm9yIGl0cyBHTUEgKEdyYXBoaWNzIFwKLU1lZGlhIEFjY2VsZXJhdG9yKSBzZXJpZXMgb2YgR1BVIGhhcmR3YXJlLCB0aGUgQVBJIGlzIGhvd2V2ZXIgbm90IFwKLWxpbWl0ZWQgdG8gR1BVcyBvciBJbnRlbCBzcGVjaWZpYyBoYXJkd2FyZSwgYXMgb3RoZXIgaGFyZHdhcmUgYW5kIFwKLW1hbnVmYWN0dXJlcnMgY2FuIGFsc28gZnJlZWx5IHVzZSB0aGlzIEFQSSBmb3IgaGFyZHdhcmUgYWNjZWxlcmF0ZWQgXAotdmlkZW8gZGVjb2RpbmcuIgotCi1IT01FUEFHRSA9ICJodHRwczovLzAxLm9yZy9saW51eG1lZGlhL3ZhYXBpIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvbGlidmEvaXNzdWVzIgotCi1TRUNUSU9OID0gIngxMSIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MmU0ODk0MGY5NGFjYjBhZjU4MmU1ZWYwMzUzNzgwMGYiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2ludGVsLyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC8ke1BWfS8ke0JQfS50YXIuYnoyIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiMzY4ODIxMmZiN2E4Nzk0NzA3MGYzNzI5ZTkxZmY3Y2YiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2FhODljZDM2OWE1MDZhYzRkYmU1ZGU3YzBlZjVkYTRmM2QyMjBiZjk4NjQwM2YwMmZhMWY2ZjcwMmFmNjg3OCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS9yZWxlYXNlcyIKLQotREVQRU5EUyA9ICJsaWJkcm0gdmlydHVhbC9tZXNhIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLQotRVhUUkFfT0VDT05GID0gImFjX2N2X3Byb2dfV0FZTEFORF9TQ0FOTkVSPXdheWxhbmQtc2Nhbm5lciIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi0tZW5hYmxlLXgxMSwtLWRpc2FibGUteDExLHZpcnR1YWwvbGlieDExIGxpYnhleHQgbGlieGZpeGVzIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQiCi0KLVBBQ0tBR0VTID0rICIke1BOfS14MTEgJHtQTn0tZ2x4ICR7UE59LXdheWxhbmQiCi0KLVJERVBFTkRTXyR7UE59LXgxMSA9KyAiJHtQTn0iCi1SREVQRU5EU18ke1BOfS1nbHggPSsgIiR7UE59LXgxMSIKLQotRklMRVNfJHtQTn0teDExID0rICIke2xpYmRpcn0vbGlidmEteDExKiR7U09MSUJTfSIKLUZJTEVTXyR7UE59LWdseCA9KyAiJHtsaWJkaXJ9L2xpYnZhLWdseCoke1NPTElCU30iCi1GSUxFU18ke1BOfS13YXlsYW5kID0rICIke2xpYmRpcn0vbGlidmEtd2F5bGFuZCoke1NPTElCU30iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL2xpYnZhL2xpYnZhXzIuNi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyY2VhODMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9saWJ2YS9saWJ2YV8yLjYuMS5iYgpAQCAtMCwwICsxLDQzIEBACitTVU1NQVJZID0gIlZpZGVvIEFjY2VsZXJhdGlvbiAoVkEpIEFQSSBmb3IgTGludXgiCitERVNDUklQVElPTiA9ICJWaWRlbyBBY2NlbGVyYXRpb24gQVBJIChWQSBBUEkpIGlzIGEgbGlicmFyeSAobGliVkEpIFwKK2FuZCBBUEkgc3BlY2lmaWNhdGlvbiB3aGljaCBlbmFibGVzIGFuZCBwcm92aWRlcyBhY2Nlc3MgdG8gZ3JhcGhpY3MgXAoraGFyZHdhcmUgKEdQVSkgYWNjZWxlcmF0aW9uIGZvciB2aWRlbyBwcm9jZXNzaW5nIG9uIExpbnV4IGFuZCBVTklYIFwKK2Jhc2VkIG9wZXJhdGluZyBzeXN0ZW1zLiBBY2NlbGVyYXRlZCBwcm9jZXNzaW5nIGluY2x1ZGVzIHZpZGVvIFwKK2RlY29kaW5nLCB2aWRlbyBlbmNvZGluZywgc3VicGljdHVyZSBibGVuZGluZyBhbmQgcmVuZGVyaW5nLiBUaGUgXAorc3BlY2lmaWNhdGlvbiB3YXMgb3JpZ2luYWxseSBkZXNpZ25lZCBieSBJbnRlbCBmb3IgaXRzIEdNQSAoR3JhcGhpY3MgXAorTWVkaWEgQWNjZWxlcmF0b3IpIHNlcmllcyBvZiBHUFUgaGFyZHdhcmUsIHRoZSBBUEkgaXMgaG93ZXZlciBub3QgXAorbGltaXRlZCB0byBHUFVzIG9yIEludGVsIHNwZWNpZmljIGhhcmR3YXJlLCBhcyBvdGhlciBoYXJkd2FyZSBhbmQgXAorbWFudWZhY3R1cmVycyBjYW4gYWxzbyBmcmVlbHkgdXNlIHRoaXMgQVBJIGZvciBoYXJkd2FyZSBhY2NlbGVyYXRlZCBcCit2aWRlbyBkZWNvZGluZy4iCisKK0hPTUVQQUdFID0gImh0dHBzOi8vMDEub3JnL2xpbnV4bWVkaWEvdmFhcGkiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS9pc3N1ZXMiCisKK1NFQ1RJT04gPSAieDExIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZTQ4OTQwZjk0YWNiMGFmNTgyZTVlZjAzNTM3ODAwZiIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vaW50ZWwvJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9LyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiYWVmMTNlYjQ4ZTAxYTQ3ZDE0MTZkOTc0NjJhMjJhMTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNmM1N2ViNjQyZDgyOGFmMjQxMWFhMzhmNTVkYzEwMTExZThjOTg5NzZkYmFiOGZkNjJlNDg2Mjk0MDFlYWVhNSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9pbnRlbC9saWJ2YS9yZWxlYXNlcyIKKworREVQRU5EUyA9ICJsaWJkcm0gdmlydHVhbC9tZXNhIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLUR3aXRoX3gxMT15ZXMsIC1Ed2l0aF94MTE9bm8sdmlydHVhbC9saWJ4MTEgbGlieGV4dCBsaWJ4Zml4ZXMiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1Ed2l0aF93YXlsYW5kPXllcywgLUR3aXRoX3dheWxhbmQ9bm8sd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCIKKworUEFDS0FHRVMgPSsgIiR7UE59LXgxMSAke1BOfS1nbHggJHtQTn0td2F5bGFuZCIKKworUkRFUEVORFNfJHtQTn0teDExID0rICIke1BOfSIKK1JERVBFTkRTXyR7UE59LWdseCA9KyAiJHtQTn0teDExIgorCitGSUxFU18ke1BOfS14MTEgPSsgIiR7bGliZGlyfS9saWJ2YS14MTEqJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tZ2x4ID0rICIke2xpYmRpcn0vbGlidmEtZ2x4KiR7U09MSUJTfSIKK0ZJTEVTXyR7UE59LXdheWxhbmQgPSsgIiR7bGliZGlyfS9saWJ2YS13YXlsYW5kKiR7U09MSUJTfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21hdGNoYm94LXdtL21hdGNoYm94LXdtXzEuMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWF0Y2hib3gtd20vbWF0Y2hib3gtd21fMS4yLjIuYmIKaW5kZXggYjk5NjFjMy4uNjc1ZWU0MCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWF0Y2hib3gtd20vbWF0Y2hib3gtd21fMS4yLjIuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWF0Y2hib3gtd20vbWF0Y2hib3gtd21fMS4yLjIuYmIKQEAgLTIxLDYgKzIxLDggQEAKICMgZGVwZW5kcyBvbiB2aXJ0dWFsL2xpYngxMQogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIAorQ0ZMQUdTICs9ICItZmNvbW1vbiIKKwogRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9LyogXAogICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9tYXRjaGJveCBcCiAgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L21hdGNoYm94IFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lbnUtY2FjaGUvbWVudS1jYWNoZV8xLjEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lbnUtY2FjaGUvbWVudS1jYWNoZV8xLjEuMC5iYgppbmRleCBkZGJiZDk0Li43YTExMjI4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZW51LWNhY2hlL21lbnUtY2FjaGVfMS4xLjAuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVudS1jYWNoZS9tZW51LWNhY2hlXzEuMS4wLmJiCkBAIC0xNiwzICsxNiw1IEBACiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9seGRlL2ZpbGVzL21lbnUtY2FjaGUvMS4xLyIKIAogaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCBwa2djb25maWcgZ3RrLWRvYworCitDRkxBR1MgKz0gIi1mY29tbW9uIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLW1lc29uLW1pc2RldGVjdHMtNjRiaXQtYXRvbWljcy1vbi1taXBzLWNsYW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAxLW1lc29uLW1pc2RldGVjdHMtNjRiaXQtYXRvbWljcy1vbi1taXBzLWNsYW5nLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE1NDg1ZmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtbWVzb24tbWlzZGV0ZWN0cy02NGJpdC1hdG9taWNzLW9uLW1pcHMtY2xhbmcucGF0Y2gKQEAgLTAsMCArMSwyNyBAQAorRnJvbSBiYjJmMGJlYTU1M2Q1MWQ2NTlhOWJjNDZmN2FlMTg2ODg1NDA1MTUxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KK0RhdGU6IE1vbiwgMTMgSmFuIDIwMjAgMTU6MjM6NDcgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gbWVzb24gbWlzZGV0ZWN0cyA2NGJpdCBhdG9taWNzIG9uIG1pcHMvY2xhbmcKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL3V0aWwvdV9hdG9taWMuYyB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy91dGlsL3VfYXRvbWljLmMgYi9zcmMvdXRpbC91X2F0b21pYy5jCitpbmRleCBlNGJmZmE4Li41OGUxZGRkIDEwMDY0NAorLS0tIGEvc3JjL3V0aWwvdV9hdG9taWMuYworKysrIGIvc3JjL3V0aWwvdV9hdG9taWMuYworQEAgLTIxLDcgKzIxLDcgQEAKKyAgKiBJTiBUSEUgU09GVFdBUkUuCisgICovCisgCistI2lmIGRlZmluZWQoTUlTU0lOR182NEJJVF9BVE9NSUNTKSAmJiBkZWZpbmVkKEhBVkVfUFRIUkVBRCkKKysjaWYgIWRlZmluZWQoX19jbGFuZ19fKSAmJiBkZWZpbmVkKE1JU1NJTkdfNjRCSVRfQVRPTUlDUykgJiYgZGVmaW5lZChIQVZFX1BUSFJFQUQpCisgCisgI2luY2x1ZGUgPHN0ZGludC5oPgorICNpbmNsdWRlIDxwdGhyZWFkLmg+CistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDEtbWVzb24uYnVpbGQtY2hlY2stZm9yLWFsbC1saW51eC1ob3N0X29zLWNvbWJpbmF0aW9ucy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1tZXNvbi5idWlsZC1jaGVjay1mb3ItYWxsLWxpbnV4LWhvc3Rfb3MtY29tYmluYXRpb25zLnBhdGNoCmluZGV4IDE4NjllMTEuLjA4NTI1NDMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1tZXNvbi5idWlsZC1jaGVjay1mb3ItYWxsLWxpbnV4LWhvc3Rfb3MtY29tYmluYXRpb25zLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMS1tZXNvbi5idWlsZC1jaGVjay1mb3ItYWxsLWxpbnV4LWhvc3Rfb3MtY29tYmluYXRpb25zLnBhdGNoCkBAIC0xLDYgKzEsNiBAQAotRnJvbSBiNmQ5YmM5N2NiMGU4YzU0MGE0NWRiYTU0NDBiMDM2ZmI5NDBmZjk1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgotRGF0ZTogTW9uLCAxMSBOb3YgMjAxOSAwOTozODoxNSAtMDgwMAorRnJvbSAwZDllZDAwMmVmZjE3NmI5MDJkYTI2NmQ4OTgyOWE5YjBjYjEwOTQ2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXJAYWxpc3RhaXIyMy5tZT4KK0RhdGU6IFRodSwgMTQgTm92IDIwMTkgMTM6MDQ6NDkgLTA4MDAKIFN1YmplY3Q6IFtQQVRDSF0gbWVzb24uYnVpbGQ6IGNoZWNrIGZvciBhbGwgbGludXggaG9zdF9vcyBjb21iaW5hdGlvbnMKIAogTWFrZSBzdXJlIHRoYXQgd2UgYXJlIGFsc28gbG9va2luZyBmb3Igb3VyIGhvc3Rfb3MgY29tYmluYXRpb25zIGxpa2UKQEAgLTEzLDMwICsxMywzMCBAQAogU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KIFNpZ25lZC1vZmYtYnk6IEZhYmlvIEJlcnRvbiA8ZmFiaW8uYmVydG9uQG9zc3lzdGVtcy5jb20uYnI+CiBTaWduZWQtb2ZmLWJ5OiBPdGF2aW8gU2FsdmFkb3IgPG90YXZpb0Bvc3N5c3RlbXMuY29tLmJyPgotU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXJAYWxpc3RhaXIyMy5tZT4KIAogLS0tCiAgbWVzb24uYnVpbGQgfCA0ICsrLS0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQogCiBkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggZDU4NDE1Mi4uYTFmMDk4YyAxMDA2NDQKK2luZGV4IDg5OGQwMjUuLjA5ZTM3NTkgMTAwNjQ0CiAtLS0gYS9tZXNvbi5idWlsZAogKysrIGIvbWVzb24uYnVpbGQKLUBAIC0xMTcsNyArMTE3LDcgQEAgd2l0aF9hbnlfb3BlbmdsID0gd2l0aF9vcGVuZ2wgb3Igd2l0aF9nbGVzMSBvciB3aXRoX2dsZXMyCitAQCAtMTI0LDcgKzEyNCw3IEBAIHdpdGhfYW55X29wZW5nbCA9IHdpdGhfb3BlbmdsIG9yIHdpdGhfZ2xlczEgb3Igd2l0aF9nbGVzMgogICMgT25seSBidWlsZCBzaGFyZWRfZ2xhcGkgaWYgYXQgbGVhc3Qgb25lIE9wZW5HTCBBUEkgaXMgZW5hYmxlZAotIHdpdGhfc2hhcmVkX2dsYXBpID0gZ2V0X29wdGlvbignc2hhcmVkLWdsYXBpJykgYW5kIHdpdGhfYW55X29wZW5nbAorIHdpdGhfc2hhcmVkX2dsYXBpID0gd2l0aF9zaGFyZWRfZ2xhcGkgYW5kIHdpdGhfYW55X29wZW5nbAogIAogLXN5c3RlbV9oYXNfa21zX2RybSA9IFsnb3BlbmJzZCcsICduZXRic2QnLCAnZnJlZWJzZCcsICdnbnUva2ZyZWVic2QnLCAnZHJhZ29uZmx5JywgJ2xpbnV4JywgJ3N1bm9zJ10uY29udGFpbnMoaG9zdF9tYWNoaW5lLnN5c3RlbSgpKQogK3N5c3RlbV9oYXNfa21zX2RybSA9IFsnb3BlbmJzZCcsICduZXRic2QnLCAnZnJlZWJzZCcsICdkcmFnb25mbHknXS5jb250YWlucyhob3N0X21hY2hpbmUuc3lzdGVtKCkpIG9yIGhvc3RfbWFjaGluZS5zeXN0ZW0oKS5zdGFydHN3aXRoKCdsaW51eCcpCiAgCiAgZHJpX2RyaXZlcnMgPSBnZXRfb3B0aW9uKCdkcmktZHJpdmVycycpCiAgaWYgZHJpX2RyaXZlcnMuY29udGFpbnMoJ2F1dG8nKQotQEAgLTg1Niw3ICs4NTYsNyBAQCBpZiBjYy5jb21waWxlcygnX191aW50MTI4X3QgZm9vKHZvaWQpIHsgcmV0dXJuIDA7IH0nLAorQEAgLTg4NCw3ICs4ODQsNyBAQCBpZiBjYy5jb21waWxlcygnX191aW50MTI4X3QgZm9vKHZvaWQpIHsgcmV0dXJuIDA7IH0nLAogIGVuZGlmCiAgCiAgIyBUT0RPOiB0aGlzIGlzIHZlcnkgaW5jb21wbGV0ZQotLWlmIFsnbGludXgnLCAnY3lnd2luJywgJ2dudScsICdnbnUva2ZyZWVic2QnXS5jb250YWlucyhob3N0X21hY2hpbmUuc3lzdGVtKCkpCistaWYgWydsaW51eCcsICdjeWd3aW4nLCAnZ251JywgJ2ZyZWVic2QnLCAnZ251L2tmcmVlYnNkJ10uY29udGFpbnMoaG9zdF9tYWNoaW5lLnN5c3RlbSgpKQogK2lmIFsnY3lnd2luJywgJ2dudScsICdnbnUva2ZyZWVic2QnXS5jb250YWlucyhob3N0X21hY2hpbmUuc3lzdGVtKCkpIG9yIGhvc3RfbWFjaGluZS5zeXN0ZW0oKS5zdGFydHN3aXRoKCdsaW51eCcpCiAgICBwcmVfYXJncyArPSAnLURfR05VX1NPVVJDRScKICBlbGlmIGhvc3RfbWFjaGluZS5zeXN0ZW0oKSA9PSAnc3Vub3MnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDItbWVzb24uYnVpbGQtbWFrZS1UTFMtRUxGLW9wdGlvbmFsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAyLW1lc29uLmJ1aWxkLW1ha2UtVExTLUVMRi1vcHRpb25hbC5wYXRjaAppbmRleCAxOTllZDU3Li5jZDM1YTFmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDItbWVzb24uYnVpbGQtbWFrZS1UTFMtRUxGLW9wdGlvbmFsLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMi1tZXNvbi5idWlsZC1tYWtlLVRMUy1FTEYtb3B0aW9uYWwucGF0Y2gKQEAgLTEsMTMgKzEsMTMgQEAKLUZyb20gYWY2OTIzNTQ0ZGUwMmRlZDY0OGE3MzZlMDdiOWJkOGI3YzUyZGJhOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyLmZyYW5jaXNAd2RjLmNvbT4KLURhdGU6IFdlZCwgMjMgT2N0IDIwMTkgMDk6NDY6MjggLTA3MDAKK0Zyb20gZGY4MzUzODk2OTliMzJiYjY2MTBiMzk5NzI1MDJlMzIzZjhlMDllNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsaXN0YWlyIEZyYW5jaXMgPGFsaXN0YWlyQGFsaXN0YWlyMjMubWU+CitEYXRlOiBUaHUsIDE0IE5vdiAyMDE5IDEzOjA4OjMxIC0wODAwCiBTdWJqZWN0OiBbUEFUQ0hdIG1lc29uLmJ1aWxkOiBtYWtlIFRMUyBFTEYgb3B0aW9uYWwKIAogVVNFX0VMRl9UTFMgaGFzIHJlcGxhY2VkIEdMWF9VU0VfVExTIHNvIHRoaXMgcGF0Y2ggaXMgdGhlIG9yaWdpbmFsICJtYWtlCiBUTFMgR0xYIG9wdGlvbmFsIGFnYWluIiBwYXRjaCB1cGRhdGVkIHRvIHRoZSBsYXRlc3QgbWVzYS4KIAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtjb25maWd1cmF0aW9uXQotU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXIuZnJhbmNpc0B3ZGMuY29tPgorU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXJAYWxpc3RhaXIyMy5tZT4KIAogLS0tCiAgbWVzb24uYnVpbGQgICAgICAgfCAyICstCkBAIC0xNSwyMyArMTUsMjMgQEAKICAyIGZpbGVzIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQogCiBkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggYTFmMDk4Yy4uMWUzMWViNCAxMDA2NDQKK2luZGV4IDA5ZTM3NTkuLmE5NTQxMTggMTAwNjQ0CiAtLS0gYS9tZXNvbi5idWlsZAogKysrIGIvbWVzb24uYnVpbGQKLUBAIC0zNzgsNyArMzc4LDcgQEAgaWYgd2l0aF9lZ2wgYW5kIG5vdCAod2l0aF9wbGF0Zm9ybV9kcm0gb3Igd2l0aF9wbGF0Zm9ybV9zdXJmYWNlbGVzcyBvciB3aXRoX3BsYXQKK0BAIC0zODcsNyArMzg3LDcgQEAgaWYgd2l0aF9lZ2wgYW5kIG5vdCAod2l0aF9wbGF0Zm9ybV9kcm0gb3Igd2l0aF9wbGF0Zm9ybV9zdXJmYWNlbGVzcyBvciB3aXRoX3BsYXQKICBlbmRpZgogIAogICMgQW5kcm9pZCB1c2VzIGVtdXRscyBmb3IgdmVyc2lvbnMgPD0gUC8yOC4gRm9yIFVTRV9FTEZfVExTIHdlIG5lZWQgRUxGIFRMUy4KLS1pZiBub3Qgd2l0aF9wbGF0Zm9ybV9hbmRyb2lkIG9yIGdldF9vcHRpb24oJ3BsYXRmb3JtLXNkay12ZXJzaW9uJykgPj0gMjkKKy1pZiBob3N0X21hY2hpbmUuc3lzdGVtKCkgIT0gJ3dpbmRvd3MnIGFuZCAobm90IHdpdGhfcGxhdGZvcm1fYW5kcm9pZCBvciBnZXRfb3B0aW9uKCdwbGF0Zm9ybS1zZGstdmVyc2lvbicpID49IDI5KQogK2lmIChub3Qgd2l0aF9wbGF0Zm9ybV9hbmRyb2lkIG9yIGdldF9vcHRpb24oJ3BsYXRmb3JtLXNkay12ZXJzaW9uJykgPj0gMjkpIGFuZCBnZXRfb3B0aW9uKCdlbGYtdGxzJykKICAgIHByZV9hcmdzICs9ICctRFVTRV9FTEZfVExTJwogIGVuZGlmCiAgCiBkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAotaW5kZXggYjc2OGMxNS4uNzZjZWYyNCAxMDA2NDQKK2luZGV4IDYyNmJhZjMuLjYzN2ZmMTQgMTAwNjQ0CiAtLS0gYS9tZXNvbl9vcHRpb25zLnR4dAogKysrIGIvbWVzb25fb3B0aW9ucy50eHQKLUBAIC0zMzMsNiArMzMzLDEyIEBAIG9wdGlvbigKK0BAIC0zNDEsNiArMzQxLDEyIEBAIG9wdGlvbigKICAgIHZhbHVlIDogdHJ1ZSwKICAgIGRlc2NyaXB0aW9uIDogJ0VuYWJsZSBkaXJlY3QgcmVuZGVyaW5nIGluIEdMWCBhbmQgRUdMIGZvciBEUkknLAogICkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMy1BbGxvdy1lbmFibGUtRFJJLXdpdGhvdXQtRFJJLWRyaXZlcnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDMtQWxsb3ctZW5hYmxlLURSSS13aXRob3V0LURSSS1kcml2ZXJzLnBhdGNoCmluZGV4IGMyMGExZjcuLmEwNTM2YzggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwMy1BbGxvdy1lbmFibGUtRFJJLXdpdGhvdXQtRFJJLWRyaXZlcnMucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDAzLUFsbG93LWVuYWJsZS1EUkktd2l0aG91dC1EUkktZHJpdmVycy5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNWFkNjUxNTIzOGJjMDQyY2NjZjk5NTlhYmFkNDRmZGVlOWFlYjA3ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2VhYTIxYTc5Y2U2ZDZlOTJmNmJmOThjMjhiNjhlM2ZjYjRkNzg3NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEZhYmlvIEJlcnRvbiA8ZmFiaW8uYmVydG9uQG9zc3lzdGVtcy5jb20uYnI+CiBEYXRlOiBXZWQsIDEyIEp1biAyMDE5IDE0OjE4OjMxIC0wMzAwCiBTdWJqZWN0OiBbUEFUQ0hdIEFsbG93IGVuYWJsZSBEUkkgd2l0aG91dCBEUkkgZHJpdmVycwpAQCAtMTUsMTAgKzE1LDEwIEBACiAgMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IDFlMzFlYjQuLjUxMmVlYzYgMTAwNjQ0CitpbmRleCBhOTU0MTE4Li42Mjg2NGM2IDEwMDY0NAogLS0tIGEvbWVzb24uYnVpbGQKICsrKyBiL21lc29uLmJ1aWxkCi1AQCAtMTQ3LDcgKzE0Nyw3IEBAIHdpdGhfZHJpX3IyMDAgPSBkcmlfZHJpdmVycy5jb250YWlucygncjIwMCcpCitAQCAtMTU0LDcgKzE1NCw3IEBAIHdpdGhfZHJpX3IyMDAgPSBkcmlfZHJpdmVycy5jb250YWlucygncjIwMCcpCiAgd2l0aF9kcmlfbm91dmVhdSA9IGRyaV9kcml2ZXJzLmNvbnRhaW5zKCdub3V2ZWF1JykKICB3aXRoX2RyaV9zd3Jhc3QgPSBkcmlfZHJpdmVycy5jb250YWlucygnc3dyYXN0JykKICAKQEAgLTI4LDEwICsyOCwxMCBAQAogIGdhbGxpdW1fZHJpdmVycyA9IGdldF9vcHRpb24oJ2dhbGxpdW0tZHJpdmVycycpCiAgaWYgZ2FsbGl1bV9kcml2ZXJzLmNvbnRhaW5zKCdhdXRvJykKIGRpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0Ci1pbmRleCA3NmNlZjI0Li5hOGFiZDA0IDEwMDY0NAoraW5kZXggNjM3ZmYxNC4uNzAwYzM0YyAxMDA2NDQKIC0tLSBhL21lc29uX29wdGlvbnMudHh0CiArKysgYi9tZXNvbl9vcHRpb25zLnR4dAotQEAgLTM0LDYgKzM0LDEyIEBAIG9wdGlvbigKK0BAIC0zNSw2ICszNSwxMiBAQCBvcHRpb24oCiAgICBjaG9pY2VzIDogWydhdXRvJywgJ3RydWUnLCAnZmFsc2UnXSwKICAgIGRlc2NyaXB0aW9uIDogJ2VuYWJsZSBzdXBwb3J0IGZvciBkcmkzJwogICkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwNC1SZXZlcnQtbWVzYS1FbmFibGUtYXNtLXVuY29uZGl0aW9uYWxseS1ub3ctdGhhdC1nZW5fLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDA0LVJldmVydC1tZXNhLUVuYWJsZS1hc20tdW5jb25kaXRpb25hbGx5LW5vdy10aGF0LWdlbl8ucGF0Y2gKaW5kZXggYjU2NThkMC4uOGQ2MTRlNSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDA0LVJldmVydC1tZXNhLUVuYWJsZS1hc20tdW5jb25kaXRpb25hbGx5LW5vdy10aGF0LWdlbl8ucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9maWxlcy8wMDA0LVJldmVydC1tZXNhLUVuYWJsZS1hc20tdW5jb25kaXRpb25hbGx5LW5vdy10aGF0LWdlbl8ucGF0Y2gKQEAgLTEsNCArMSw0IEBACi1Gcm9tIDFiMWNiNmU1ZWEyNWVhYTk4NTczMzI4Yjk1NjU3MjhhMDgyNDU5OTcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tIDQxY2Q4ODM2ZDc4NWM3OTM4MTc2NGU3ZGU1OTMxOWY4Nzk1OWE1Y2YgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCiBGcm9tOiBBbGlzdGFpciBGcmFuY2lzIDxhbGlzdGFpckBhbGlzdGFpcjIzLm1lPgogRGF0ZTogVGh1LCAxNCBOb3YgMjAxOSAwOTowNjowMiAtMDgwMAogU3ViamVjdDogW1BBVENIXSBSZXZlcnQgIm1lc2E6IEVuYWJsZSBhc20gdW5jb25kaXRpb25hbGx5LCBub3cgdGhhdApAQCAtMTUsNyArMTUsNyBAQAogIDIgZmlsZXMgY2hhbmdlZCwgNjcgaW5zZXJ0aW9ucygrKSwgMzMgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCi1pbmRleCA1MTJlZWM2Li5hMmJjYzNhIDEwMDY0NAoraW5kZXggNjI4NjRjNi4uYjUzYmU4ZCAxMDA2NDQKIC0tLSBhL21lc29uLmJ1aWxkCiArKysgYi9tZXNvbi5idWlsZAogQEAgLTQ5LDYgKzQ5LDcgQEAgd2l0aF92dWxrYW5faWNkX2RpciA9IGdldF9vcHRpb24oJ3Z1bGthbi1pY2QtZGlyJykKQEAgLTI2LDcgKzI2LDcgQEAKICB3aXRoX2dseF9yZWFkX29ubHlfdGV4dCA9IGdldF9vcHRpb24oJ2dseC1yZWFkLW9ubHktdGV4dCcpCiAgd2l0aF9nbHhfZGlyZWN0ID0gZ2V0X29wdGlvbignZ2x4LWRpcmVjdCcpCiAgd2l0aF9vc21lc2EgPSBnZXRfb3B0aW9uKCdvc21lc2EnKQotQEAgLTk4NSw0MSArOTg2LDY4IEBAIGVuZGlmCitAQCAtMTA5Myw0MSArMTA5NCw2OCBAQCBkZXBfd3MyXzMyID0gY2MuZmluZF9saWJyYXJ5KCd3czJfMzInLCByZXF1aXJlZCA6IHdpdGhfcGxhdGZvcm1fd2luZG93cykKICAKICAjIFRPRE86IHNoYXJlZC9zdGF0aWM/IElzIHRoaXMgZXZlbiB3b3J0aCBkb2luZz8KICAKQEAgLTEyOSwxMCArMTI5LDEwIEBACiAgZW5kaWYKICAKIGRpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0Ci1pbmRleCBhOGFiZDA0Li4wZjRiZDgwIDEwMDY0NAoraW5kZXggNzAwYzM0Yy4uNjJlODQ3MiAxMDA2NDQKIC0tLSBhL21lc29uX29wdGlvbnMudHh0CiArKysgYi9tZXNvbl9vcHRpb25zLnR4dAotQEAgLTIzMyw2ICsyMzMsMTIgQEAgb3B0aW9uKAorQEAgLTI0MSw2ICsyNDEsMTIgQEAgb3B0aW9uKAogICAgdmFsdWUgOiBmYWxzZSwKICAgIGRlc2NyaXB0aW9uIDogJ0VuYWJsZSBHTFZORCBzdXBwb3J0LicKICApCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDUtdmM0LXVzZS1pbnRtYXhfdC1mb3ItZm9ybWF0dGVkLW91dHB1dC1vZi10aW1lc3BlYy1tZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvZmlsZXMvMDAwNS12YzQtdXNlLWludG1heF90LWZvci1mb3JtYXR0ZWQtb3V0cHV0LW9mLXRpbWVzcGVjLW1lLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkwMWZlY2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL2ZpbGVzLzAwMDUtdmM0LXVzZS1pbnRtYXhfdC1mb3ItZm9ybWF0dGVkLW91dHB1dC1vZi10aW1lc3BlYy1tZS5wYXRjaApAQCAtMCwwICsxLDUzIEBACitGcm9tIDM4YTMxMzQ3NGUxMjdkNjFlNzQ5ODY2NDIzZTcwOGZjODZlZDllYzUgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogV2VkLCA0IERlYyAyMDE5IDE0OjE1OjI4IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIHZjNDogdXNlIGludG1heF90IGZvciBmb3JtYXR0ZWQgb3V0cHV0IG9mIHRpbWVzcGVjIG1lbWJlcnMKKworMzJiaXQgYXJjaGl0ZWN0dXJlcyB3aGljaCBoYXZlIDY0Yml0IHRpbWVfdCBkb2VzIG5vdCBmaXQgdGhlIGFzc3VtcHRpb24KK29mIHRpbWVfdCBiZWluZyBzYW1lIGFzIHN5c3RlbSBsb25nIGludAorCitGaXhlcworZXJyb3I6IGZvcm1hdCBzcGVjaWZpZXMgdHlwZSAnbG9uZycgYnV0IHRoZSBhcmd1bWVudCBoYXMgdHlwZSAndGltZV90JyAoYWthICdsb25nIGxvbmcnKSBbLVdlcnJvciwtV2Zvcm1hdF0KKyAgICAgICAgICAgICAgICAgICAgICAgIHRpbWUudHZfc2VjKTsKKyAgICAgICAgICAgICAgICAgICAgICAgIF5+fn5+fn5+fn5+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvbWVzYS9tZXNhL21lcmdlX3JlcXVlc3RzLzI5NjZdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgc3JjL2dhbGxpdW0vZHJpdmVycy92M2QvdjNkX2J1Zm1nci5jIHwgNCArKy0tCisgc3JjL2dhbGxpdW0vZHJpdmVycy92YzQvdmM0X2J1Zm1nci5jIHwgNCArKy0tCisgMiBmaWxlcyBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvZ2FsbGl1bS9kcml2ZXJzL3YzZC92M2RfYnVmbWdyLmMgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL3YzZC92M2RfYnVmbWdyLmMKK2luZGV4IGIzZTRkMDUzY2MwLi5jNTE0YmYwMGJmMCAxMDA2NDQKKy0tLSBhL3NyYy9nYWxsaXVtL2RyaXZlcnMvdjNkL3YzZF9idWZtZ3IuYworKysrIGIvc3JjL2dhbGxpdW0vZHJpdmVycy92M2QvdjNkX2J1Zm1nci5jCitAQCAtODAsOCArODAsOCBAQCB2M2RfYm9fZHVtcF9zdGF0cyhzdHJ1Y3QgdjNkX3NjcmVlbiAqc2NyZWVuKQorIAorICAgICAgICAgICAgICAgICBzdHJ1Y3QgdGltZXNwZWMgdGltZTsKKyAgICAgICAgICAgICAgICAgY2xvY2tfZ2V0dGltZShDTE9DS19NT05PVE9OSUMsICZ0aW1lKTsKKy0gICAgICAgICAgICAgICAgZnByaW50ZihzdGRlcnIsICIgIG5vdzogICAgICAgICAgICAgICAlbGRcbiIsCistICAgICAgICAgICAgICAgICAgICAgICAgdGltZS50dl9zZWMpOworKyAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgbm93OiAgICAgICAgICAgICAgICVqZFxuIiwKKysgICAgICAgICAgICAgICAgICAgICAgICAoaW50bWF4X3QpdGltZS50dl9zZWMpOworICAgICAgICAgfQorIH0KKyAKK2RpZmYgLS1naXQgYS9zcmMvZ2FsbGl1bS9kcml2ZXJzL3ZjNC92YzRfYnVmbWdyLmMgYi9zcmMvZ2FsbGl1bS9kcml2ZXJzL3ZjNC92YzRfYnVmbWdyLmMKK2luZGV4IDVlYzM2MDkzNGMwLi5iZjA1ZjZjYWRkNiAxMDA2NDQKKy0tLSBhL3NyYy9nYWxsaXVtL2RyaXZlcnMvdmM0L3ZjNF9idWZtZ3IuYworKysrIGIvc3JjL2dhbGxpdW0vZHJpdmVycy92YzQvdmM0X2J1Zm1nci5jCitAQCAtMTA3LDggKzEwNyw4IEBAIHZjNF9ib19kdW1wX3N0YXRzKHN0cnVjdCB2YzRfc2NyZWVuICpzY3JlZW4pCisgCisgICAgICAgICAgICAgICAgIHN0cnVjdCB0aW1lc3BlYyB0aW1lOworICAgICAgICAgICAgICAgICBjbG9ja19nZXR0aW1lKENMT0NLX01PTk9UT05JQywgJnRpbWUpOworLSAgICAgICAgICAgICAgICBmcHJpbnRmKHN0ZGVyciwgIiAgbm93OiAgICAgICAgICAgICAgICVsZFxuIiwKKy0gICAgICAgICAgICAgICAgICAgICAgICB0aW1lLnR2X3NlYyk7CisrICAgICAgICAgICAgICAgIGZwcmludGYoc3RkZXJyLCAiICBub3c6ICAgICAgICAgICAgICAgJWpkXG4iLAorKyAgICAgICAgICAgICAgICAgICAgICAgIChpbnRtYXhfdCl0aW1lLnR2X3NlYyk7CisgICAgICAgICB9CisgfQorIAorLS0gCisyLjI0LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE5LjIuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS1nbF8xOS4yLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ0YjFjMWMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzE5LjIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgbWVzYV8ke1BWfS5iYgotCi1TVU1NQVJZICs9ICIgKE9wZW5HTCBvbmx5LCBubyBFR0wvR0xFUykiCi0KLVBST1ZJREVTID0gInZpcnR1YWwvbGliZ2wgdmlydHVhbC9tZXNhIgotCi1TID0gIiR7V09SS0RJUn0vbWVzYS0ke1BWfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIm9wZW5nbCBkcmkgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IgotUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPSAib3BlbmdsIGRyaSAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EtZ2xfMjAuMC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzIwLjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzg5N2NkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLWdsXzIwLjAuMi5iYgpAQCAtMCwwICsxLDE1IEBACityZXF1aXJlIG1lc2FfJHtQVn0uYmIKKworU1VNTUFSWSArPSAiIChPcGVuR0wgb25seSwgbm8gRUdML0dMRVMpIgorCitQUk9WSURFUyA9ICJ2aXJ0dWFsL2xpYmdsIHZpcnR1YWwvbWVzYSIKKworUyA9ICIke1dPUktESVJ9L21lc2EtJHtQVn0iCisKKyMgQXQgbGVhc3Qgb25lIERSSSByZW5kZXJpbmcgZW5naW5lIGlzIHJlcXVpcmVkIHRvIGJ1aWxkIG1lc2EuCisjIFdoZW4gbm8gWDExIGlzIGF2YWlsYWJsZSwgdXNlIG9zbWVzYSBmb3IgdGhlIHJlbmRlcmluZyBlbmdpbmUuCitQQUNLQUdFQ09ORklHID8/PSAib3BlbmdsIGRyaSAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnb3NtZXNhJywgZCl9IgorUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPSAib3BlbmdsIGRyaSAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnb3NtZXNhJywgZCl9IgorCisjIFdoZW4gTk9UIHVzaW5nIFgxMSwgd2UgbmVlZCB0byBtYWtlIHN1cmUgd2UgaGF2ZSBzd3Jhc3QgYXZhaWxhYmxlLgorRFJJRFJJVkVSU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnJywgJyxzd3Jhc3QnLCBkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhLmluYwppbmRleCA1ODM4MjA3Li5iN2VmNDk2IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2EuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYS5pbmMKQEAgLTEwLDcgKzEwLDcgQEAKIEJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZyIKIFNFQ1RJT04gPSAieDExIgogTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2NzL2xpY2Vuc2UuaHRtbDttZDU9M2E0OTk5Y2FmODJjYzUwM2FjOGI5ZTM3YzIzNTc4MmUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2NzL2xpY2Vuc2UuaHRtbDttZDU9YzE4NDNkOTNjNDYwYmJmNzc4ZDYwMzdjZTMyNGY5ZjciCiAKIFBFID0gIjIiCiAKQEAgLTQ2LDYgKzQ2LDE5IEBACiAKIE1FU0FfTExWTV9SRUxFQVNFID89ICIke0xMVk1WRVJTSU9OfSIKIAorIyBzZXQgdGhlIE1FU0FfQlVJTERfVFlQRSB0byBlaXRoZXIgJ3JlbGVhc2UnIChkZWZhdWx0KSBvciAnZGVidWcnCisjIGJ5IGRlZmF1bHQgdGhlIHVwc3RyZWFtIG1lc2Egc291cmNlcyBidWlsZCBhIGRlYnVnIHJlbGVhc2UKKyMgaGVyZSB3ZSBhc3N1bWUgdGhlIHVzZXIgd2lsbCB3YW50IGEgcmVsZWFzZSBidWlsZCBieSBkZWZhdWx0CitNRVNBX0JVSUxEX1RZUEUgPz0gInJlbGVhc2UiCitkZWYgY2hlY2tfYnVpbGR0eXBlKGQpOgorICAgIF9idWlsZHR5cGUgPSBkLmdldFZhcignTUVTQV9CVUlMRF9UWVBFJykKKyAgICBpZiBfYnVpbGR0eXBlIG5vdCBpbiBbJ3JlbGVhc2UnLCAnZGVidWcnXToKKyAgICAgICAgYmIuZmF0YWwoInVua25vd24gYnVpbGQgdHlwZSAoJXMpLCBwbGVhc2Ugc2V0IE1FU0FfQlVJTERfVFlQRSB0byBlaXRoZXIgJ3JlbGVhc2UnIG9yICdkZWJ1ZyciICUgX2J1aWxkdHlwZSkKKyAgICBpZiBfYnVpbGR0eXBlID09ICdkZWJ1Zyc6CisgICAgICAgIHJldHVybiAnZGVidWdvcHRpbWl6ZWQnCisgICAgcmV0dXJuICdwbGFpbicKK01FU09OX0JVSUxEVFlQRSA9ICIke0BjaGVja19idWlsZHR5cGUoZCl9IgorCiBFWFRSQV9PRU1FU09OID0gIiBcCiAgICAgLURzaGFyZWQtZ2xhcGk9dHJ1ZSBcCiAgICAgLURnYWxsaXVtLW9wZW5jbD1kaXNhYmxlZCBcCkBAIC01NCw3ICs2Nyw3IEBACiAiCiAKIFBBQ0tBR0VDT05GSUdfY2xhc3MtdGFyZ2V0ID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB2dWxrYW4nLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ29wZW5nbCBlZ2wgZ2xlcyBnYm0gZHJpIGdhbGxpdW0nLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdvcGVuZ2wgZWdsIGdsZXMgZ2JtIGRyaSBnYWxsaXVtIHZpcmdsJywgJycsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ3gxMSBkcmkzJywgJycsIGQpfSBcCiAgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgdnVsa2FuJywgJ2RyaTMnLCAnJywgZCl9IFwKICAgICAgICAgICAgICAgICAgICBlbGYtdGxzIFwKQEAgLTExOSwxMCArMTMyLDExIEBACiBHQUxMSVVNRFJJVkVSU19MTFZNID0gInIzMDAsc3ZnYSxub3V2ZWF1JHtAJywke0dBTExJVU1EUklWRVJTX0xMVk0zM30nIGlmICR7R0FMTElVTURSSVZFUlNfTExWTTMzX0VOQUJMRUR9IGVsc2UgJyd9IgogCiBQQUNLQUdFQ09ORklHW3I2MDBdID0gIiIKK1BBQ0tBR0VDT05GSUdbdmlyZ2xdID0gIiIKIAogR0FMTElVTURSSVZFUlNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dhbGxpdW0tbGx2bScsICcsJHtHQUxMSVVNRFJJVkVSU19MTFZNfScsICcnLCBkKX0iCiBHQUxMSVVNRFJJVkVSU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncjYwMCcsICcscjYwMCcsICcnLCBkKX0iCi1HQUxMSVVNRFJJVkVSU19hcHBlbmQgPSAiLHZpcmdsIgorR0FMTElVTURSSVZFUlNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3ZpcmdsJywgJyx2aXJnbCcsICcnLCBkKX0iCiAKIFBBQ0tBR0VDT05GSUdbZ2FsbGl1bV0gPSAiLURnYWxsaXVtLWRyaXZlcnM9JHtHQUxMSVVNRFJJVkVSU30sIC1EZ2FsbGl1bS1kcml2ZXJzPScnIgogUEFDS0FHRUNPTkZJR1tnYWxsaXVtLWxsdm1dID0gIi1EbGx2bT10cnVlIC1Ec2hhcmVkLWxsdm09dHJ1ZSwgLURsbHZtPWZhbHNlLCBsbHZtJHtNRVNBX0xMVk1fUkVMRUFTRX0gbGx2bS1uYXRpdmUgXApAQCAtMTQ3LDYgKzE2MSw3IEBACiBGVUxMX09QVElNSVpBVElPTl9hcHBlbmQgPSAiIC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIgogCiBDRkxBR1NfYXBwZW5kX2FybXY1ID0gIiAtRE1JU1NJTkdfNjRCSVRfQVRPTUlDUyIKK0NGTEFHU19hcHBlbmRfYXJtdjYgPSAiIC1ETUlTU0lOR182NEJJVF9BVE9NSUNTIgogCiAjIFJlbW92ZSB0aGUgbWVzYSBkZXBlbmRlbmN5IG9uIG1lc2EtZGV2LCBhcyBtZXNhIGlzIGVtcHR5CiBSREVQRU5EU18ke1BOfS1kZXYgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE5LjIuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL21lc2EvbWVzYV8xOS4yLjQuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGY0YjMzZGYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzE5LjIuNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLXJlcXVpcmUgJHtCUE59LmluYwotCi1TUkNfVVJJID0gImh0dHBzOi8vbWVzYS5mcmVlZGVza3RvcC5vcmcvYXJjaGl2ZS9tZXNhLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lc29uLmJ1aWxkLWNoZWNrLWZvci1hbGwtbGludXgtaG9zdF9vcy1jb21iaW5hdGlvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1tZXNvbi5idWlsZC1tYWtlLVRMUy1FTEYtb3B0aW9uYWwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMy1BbGxvdy1lbmFibGUtRFJJLXdpdGhvdXQtRFJJLWRyaXZlcnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1SZXZlcnQtbWVzYS1FbmFibGUtYXNtLXVuY29uZGl0aW9uYWxseS1ub3ctdGhhdC1nZW5fLnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNWMwNDc3MzJiODE2NTFkZGIzNDE1OTc1MjhiNGIwOTYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDkwMDBhMGY3ZGJiZDgyZTE5M2I4MWE4ZjFiZjBjMTE4ZWFiN2NhOTc1YzAzMjkxODE5Njg1OTZlNTQ4ZTMwZiIKLQotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAibWVzYS0oP1A8cHZlcj5cZCsoXC5cZCspKykiCi0KLSNiZWNhdXNlIHdlIGNhbm5vdCByZWx5IG9uIHRoZSBmYWN0IHRoYXQgYWxsIGFwcHMgd2lsbCB1c2UgcGtnY29uZmlnLAotI21ha2UgZWdscGxhdGZvcm0uaCBpbmRlcGVuZGVudCBvZiBNRVNBX0VHTF9OT19YMTFfSEVBREVSCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdlZ2wnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICBzZWQgLWkgLWUgJ3MvXiNpZiBkZWZpbmVkKE1FU0FfRUdMX05PX1gxMV9IRUFERVJTKSQvI2lmIGRlZmluZWQoTUVTQV9FR0xfTk9fWDExX0hFQURFUlMpIHx8ICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3gxMScsICcwJywgJzEnLCBkKX0vJyAke0R9JHtpbmNsdWRlZGlyfS9FR0wvZWdscGxhdGZvcm0uaAotICAgIGZpCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9tZXNhL21lc2FfMjAuMC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzIwLjAuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41NmVlMjhjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvbWVzYS9tZXNhXzIwLjAuMi5iYgpAQCAtMCwwICsxLDI1IEBACityZXF1aXJlICR7QlBOfS5pbmMKKworU1JDX1VSSSA9ICJodHRwczovL21lc2EuZnJlZWRlc2t0b3Aub3JnL2FyY2hpdmUvbWVzYS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tZXNvbi5idWlsZC1jaGVjay1mb3ItYWxsLWxpbnV4LWhvc3Rfb3MtY29tYmluYXRpb25zLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItbWVzb24uYnVpbGQtbWFrZS1UTFMtRUxGLW9wdGlvbmFsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDMtQWxsb3ctZW5hYmxlLURSSS13aXRob3V0LURSSS1kcml2ZXJzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtUmV2ZXJ0LW1lc2EtRW5hYmxlLWFzbS11bmNvbmRpdGlvbmFsbHktbm93LXRoYXQtZ2VuXy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LXZjNC11c2UtaW50bWF4X3QtZm9yLWZvcm1hdHRlZC1vdXRwdXQtb2YtdGltZXNwZWMtbWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tZXNvbi1taXNkZXRlY3RzLTY0Yml0LWF0b21pY3Mtb24tbWlwcy1jbGFuZy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjMxY2E1OWNkOTJjMzhjYjhlMWE1OGI2MmIwMWMzZTA4IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImFhNTRmMWNiNjY5NTUwNjA2YWFiOGNlYjQ3NTEwNWQxNWFlYjgxNGZjYTVhNzc4Y2U3MGQwZmQxMGU5OGU4NmYiCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIm1lc2EtKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgorCitDRkxBR1MgKz0gIi1mY29tbW9uIgorCisjYmVjYXVzZSB3ZSBjYW5ub3QgcmVseSBvbiB0aGUgZmFjdCB0aGF0IGFsbCBhcHBzIHdpbGwgdXNlIHBrZ2NvbmZpZywKKyNtYWtlIGVnbHBsYXRmb3JtLmggaW5kZXBlbmRlbnQgb2YgTUVTQV9FR0xfTk9fWDExX0hFQURFUgorZG9faW5zdGFsbF9hcHBlbmQoKSB7CisgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZWdsJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgc2VkIC1pIC1lICdzL14jZWxpZiBkZWZpbmVkKF9fdW5peF9fKSAmJiBkZWZpbmVkKEVHTF9OT19YMTEpJC8jZWxpZiBkZWZpbmVkKF9fdW5peF9fKSBcJlwmIGRlZmluZWQoRUdMX05PX1gxMSkgfHwgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneDExJywgJzAnLCAnMScsIGQpfS8nICR7RH0ke2luY2x1ZGVkaXJ9L0VHTC9lZ2xwbGF0Zm9ybS5oCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtRml4LWJ1aWxkLXJlcHJvZHVjaWJpbGl0eS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtRml4LWJ1aWxkLXJlcHJvZHVjaWJpbGl0eS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wM2FiZjg3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ28vMDAwMS1GaXgtYnVpbGQtcmVwcm9kdWNpYmlsaXR5LnBhdGNoCkBAIC0wLDAgKzEsMzEgQEAKK0Zyb20gZjhiMzI5MDE5ODFhMDZhOGRiNDE2OWI4MmE3MDRkY2Y3ZThiNjU2MCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMjAgTm92IDIwMTkgMTU6NDM6NTcgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIHJlcHJvZHVjaWJpbGl0eQorCitDaGFuZ2VzIHRoZSBjb21tZW50IGluIHBhbmdvLWVudW0tdHlwZXMuYyB0byByZWZlcmVuY2UgdGhlIGZpbGUgYmFzZW5hbWUKK2luc3RlYWQgb2YgdGhlIGZ1bGwgcGF0aC4gVGhpcyBlbnN1cmVzIHRoYXQgdGhlIGdlbmVyYXRlZCBmaWxlIGlzCityZXByb2R1Y2libGUgd2hlbiBpdCBpcyBpbmNsdWRlZCBpbiBzb3VyY2UgcGFja2FnZXMgbWVhbnQgZm9yIGRlYnVnZ2luZy4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvcGFuZ28vbWVyZ2VfcmVxdWVzdHMvMTU5XQorU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorLS0tCisgcGFuZ28vcGFuZ28tZW51bS10eXBlcy5jLnRlbXBsYXRlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvcGFuZ28vcGFuZ28tZW51bS10eXBlcy5jLnRlbXBsYXRlIGIvcGFuZ28vcGFuZ28tZW51bS10eXBlcy5jLnRlbXBsYXRlCitpbmRleCBkOTIyYzY5MS4uMGQ1NWVmNzQgMTAwNjQ0CistLS0gYS9wYW5nby9wYW5nby1lbnVtLXR5cGVzLmMudGVtcGxhdGUKKysrKyBiL3BhbmdvL3BhbmdvLWVudW0tdHlwZXMuYy50ZW1wbGF0ZQorQEAgLTYsNyArNiw3IEBACisgLyoqKiBFTkQgZmlsZS1oZWFkZXIgKioqLworIAorIC8qKiogQkVHSU4gZmlsZS1wcm9kdWN0aW9uICoqKi8KKy0vKiBlbnVtZXJhdGlvbnMgZnJvbSAiQGZpbGVuYW1lQCIgKi8KKysvKiBlbnVtZXJhdGlvbnMgZnJvbSAiQGJhc2VuYW1lQCIgKi8KKyAvKioqIEVORCBmaWxlLXByb2R1Y3Rpb24gKioqLworIAorIC8qKiogQkVHSU4gdmFsdWUtaGVhZGVyICoqKi8KKy0tIAorMi4yMy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtU2tpcC10aGFpLWJyZWFrLXRlc3RzLXdpdGhvdXQtbGlidGhhaS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvLzAwMDEtU2tpcC10aGFpLWJyZWFrLXRlc3RzLXdpdGhvdXQtbGlidGhhaS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2Y5ZWJmZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9wYW5nby9wYW5nby8wMDAxLVNraXAtdGhhaS1icmVhay10ZXN0cy13aXRob3V0LWxpYnRoYWkucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIDEyYmViMzk5MjViNWE0NTc0YTdjZmQ4NjA3M2I1OWJjZWI0OWY3OTEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBNYXR0aGlhcyBDbGFzZW4gPG1jbGFzZW5AcmVkaGF0LmNvbT4KLURhdGU6IFdlZCwgNCBTZXAgMjAxOSAxNTo1MTowNiAtMDQwMAotU3ViamVjdDogW1BBVENIXSBTa2lwIHRoYWkgYnJlYWsgdGVzdHMgd2l0aG91dCBsaWJ0aGFpCi0KLUlmIHdlIGRvbid0IGhhdmUgbGlidGhhaSwgdGhlc2UgdGVzdHMgZmFpbC4KLQotQ2xvc2VzOiBodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvcGFuZ28vaXNzdWVzLzQyMAotLS0tCi0gdGVzdHMvbWVzb24uYnVpbGQgfCA1ICsrKystCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvbWVzb24uYnVpbGQgYi90ZXN0cy9tZXNvbi5idWlsZAotaW5kZXggNGMyMmMxMmMuLmM2MTczMzFmIDEwMDY0NAotLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKLSsrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCi1AQCAtODksOSArODksMTIgQEAgdGVzdF9icmVha3NfZGF0YSA9IFsKLSAgICdicmVha3Mvb25lJywKLSAgICdicmVha3MvdHdvJywKLSAgICdicmVha3MvdGhyZWUnLAotLSAgJ2JyZWFrcy9mb3VyJywKLSBdCi0gCi0raWYgdGhhaV9kZXAuZm91bmQoKQotKyAgdGVzdF9icmVha3NfZGF0YSArPSBbICdicmVha3MvZm91cicsIF0KLStlbmRpZgotKwotIHRlc3RfaXRlbXNfZGF0YSA9IFsKLSAgICdpdGVtaXplL29uZScsCi0gXQotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40NC42LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40NC42LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4MTM4ZWY3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDQuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ1ICswLDAgQEAKLVNVTU1BUlkgPSAiRnJhbWV3b3JrIGZvciBsYXlvdXQgYW5kIHJlbmRlcmluZyBvZiBpbnRlcm5hdGlvbmFsaXplZCB0ZXh0IgotREVTQ1JJUFRJT04gPSAiUGFuZ28gaXMgYSBsaWJyYXJ5IGZvciBsYXlpbmcgb3V0IGFuZCByZW5kZXJpbmcgb2YgdGV4dCwgXAotd2l0aCBhbiBlbXBoYXNpcyBvbiBpbnRlcm5hdGlvbmFsaXphdGlvbi4gUGFuZ28gY2FuIGJlIHVzZWQgYW55d2hlcmUgXAotdGhhdCB0ZXh0IGxheW91dCBpcyBuZWVkZWQsIHRob3VnaCBtb3N0IG9mIHRoZSB3b3JrIG9uIFBhbmdvIHNvIGZhciBoYXMgXAotYmVlbiBkb25lIGluIHRoZSBjb250ZXh0IG9mIHRoZSBHVEsrIHdpZGdldCB0b29sa2l0LiBQYW5nbyBmb3JtcyB0aGUgXAotY29yZSBvZiB0ZXh0IGFuZCBmb250IGhhbmRsaW5nIGZvciBHVEsrLTIueC4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnBhbmdvLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmciCi1TRUNUSU9OID0gImxpYnMiCi1MSUNFTlNFID0gIkxHUEx2Mi4wKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTciCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi0KLWluaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgcHRlc3QtZ25vbWUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgotCi1TUkNfVVJJICs9ICJmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLVNraXAtdGhhaS1icmVhay10ZXN0cy13aXRob3V0LWxpYnRoYWkucGF0Y2giCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkYjBhMzI0M2JhMzNlMDJhYWE3NzU0MTJmOGU1ZjQxMiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjNlMWU0MWJhODM4NzM3ZTIwMDYxMWZmMDAxZTNiMzA0YzJjYTRjZGJiYTYzZDIwMGEyMGRiMGIwZGRjMGY4NmMiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGZvbnRjb25maWcgZnJlZXR5cGUgdmlydHVhbC9saWJpY29udiBjYWlybyBoYXJmYnV6eiBmcmliaWRpIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJ3Rlc3RzJywgJycsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1t4MTFdID0gIiwsdmlydHVhbC9saWJ4MTEgbGlieGZ0IgotUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLURpbnN0YWxsLXRlc3RzPXRydWUsIC1EaW5zdGFsbC10ZXN0cz1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbdGhhaV0gPSAiLCxsaWJ0aGFpIgotCi1HVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCi1HSVJfTUVTT05fT1BUSU9OID0gJ2ludHJvc3BlY3Rpb24nCi0KLUxFQURfU09OQU1FID0gImxpYnBhbmdvLTEuMCoiCi0KLUZJTEVTXyR7UE59ID0gIiR7YmluZGlyfS8qICR7bGliZGlyfS9saWJwYW5nbyoke1NPTElCU30iCi0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJjYW50YXJlbGwtZm9udHMiCi1SREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgbG9jYWxlLWJhc2UtZW4tdXMiCi0KLVJQUk9WSURFU18ke1BOfSArPSAicGFuZ28tbW9kdWxlcyBwYW5nby1tb2R1bGUtaW5kaWMtbGFuZyBcCi0gICAgICAgICAgICAgICAgICAgIHBhbmdvLW1vZHVsZS1iYXNpYy1mYyBwYW5nby1tb2R1bGUtYXJhYmljLWxhbmciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDQuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BhbmdvL3BhbmdvXzEuNDQuNy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZWU4YWJjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvcGFuZ28vcGFuZ29fMS40NC43LmJiCkBAIC0wLDAgKzEsNDkgQEAKK1NVTU1BUlkgPSAiRnJhbWV3b3JrIGZvciBsYXlvdXQgYW5kIHJlbmRlcmluZyBvZiBpbnRlcm5hdGlvbmFsaXplZCB0ZXh0IgorREVTQ1JJUFRJT04gPSAiUGFuZ28gaXMgYSBsaWJyYXJ5IGZvciBsYXlpbmcgb3V0IGFuZCByZW5kZXJpbmcgb2YgdGV4dCwgXAord2l0aCBhbiBlbXBoYXNpcyBvbiBpbnRlcm5hdGlvbmFsaXphdGlvbi4gUGFuZ28gY2FuIGJlIHVzZWQgYW55d2hlcmUgXAordGhhdCB0ZXh0IGxheW91dCBpcyBuZWVkZWQsIHRob3VnaCBtb3N0IG9mIHRoZSB3b3JrIG9uIFBhbmdvIHNvIGZhciBoYXMgXAorYmVlbiBkb25lIGluIHRoZSBjb250ZXh0IG9mIHRoZSBHVEsrIHdpZGdldCB0b29sa2l0LiBQYW5nbyBmb3JtcyB0aGUgXAorY29yZSBvZiB0ZXh0IGFuZCBmb250IGhhbmRsaW5nIGZvciBHVEsrLTIueC4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnBhbmdvLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5nbm9tZS5vcmciCitTRUNUSU9OID0gImxpYnMiCitMSUNFTlNFID0gIkxHUEx2Mi4wKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTciCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCisKK2luaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgcHRlc3QtZ25vbWUgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitTUkNfVVJJICs9ICJmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1idWlsZC1yZXByb2R1Y2liaWxpdHkucGF0Y2giCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJjNzVjYzViODMzZDkzNGQ5OGU4MzM0MzgzMmUyMGU1ZCIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gIjY2YTViNmNjMTNkYjczZWZlZDY3YjhlOTMzNTg0NTA5ZjhkZGI3YjEwYThhNDBjMzg1MGNhNGE5ODVlYTFiMWYiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGZvbnRjb25maWcgZnJlZXR5cGUgdmlydHVhbC9saWJpY29udiBjYWlybyBoYXJmYnV6eiBmcmliaWRpIgorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJ3Rlc3RzJywgJycsIGQpfSIKKworUEFDS0FHRUNPTkZJR1t4MTFdID0gIiwsdmlydHVhbC9saWJ4MTEgbGlieGZ0IgorUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLURpbnN0YWxsLXRlc3RzPXRydWUsIC1EaW5zdGFsbC10ZXN0cz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdGhhaV0gPSAiLCxsaWJ0aGFpIgorCitHVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCitHSVJfTUVTT05fT1BUSU9OID0gJ2ludHJvc3BlY3Rpb24nCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kX3Rvb2xjaGFpbi1jbGFuZygpIHsKKyAgICBzZWQgLWkgLWUgIi9XZXJyb3I9aW1wbGljaXQtZmFsbHRocm91Z2gvZCIgJHtTfS9tZXNvbi5idWlsZAorfQorCitMRUFEX1NPTkFNRSA9ICJsaWJwYW5nby0xLjAqIgorCitGSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vKiAke2xpYmRpcn0vbGlicGFuZ28qJHtTT0xJQlN9IgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiY2FudGFyZWxsLWZvbnRzIgorUkRFUEVORFNfJHtQTn0tcHRlc3RfYXBwZW5kX2xpYmMtZ2xpYmMgPSAiIGxvY2FsZS1iYXNlLWVuLXVzIgorCitSUFJPVklERVNfJHtQTn0gKz0gInBhbmdvLW1vZHVsZXMgcGFuZ28tbW9kdWxlLWluZGljLWxhbmcgXAorICAgICAgICAgICAgICAgICAgICBwYW5nby1tb2R1bGUtYmFzaWMtZmMgcGFuZ28tbW9kdWxlLWFyYWJpYy1sYW5nIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy9waWdsaXQvcGlnbGl0X2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfZ2l0LmJiCmluZGV4IDY5NmQ0MzguLjU4ZDEwZDYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3BpZ2xpdC9waWdsaXRfZ2l0LmJiCkBAIC0xMCw3ICsxMCw3IEBACiAgICAgICAgICAgICIKIFVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKIAotU1JDUkVWID0gIjBkMWE0N2E0YzEwZDRkZDcyMjViZDY1MTBmODE5MTY4NGIzMTIzNWUiCitTUkNSRVYgPSAiNjEyNmMyZDRlNDc2Yzc3NzBkMjE2ZmZhMTkzMmMxMGUyYTVhNzgxMyIKICMgKHdoZW4gUFYgZ29lcyBhYm92ZSAxLjAgcmVtb3ZlIHRoZSB0cmFpbGluZyByKQogUFYgPSAiMS4wK2dpdHIke1NSQ1BWfSIKIApAQCAtNDQsNiArNDQsNyBAQAogICAgZmkKIH0KIAorIyBGb3JjaWJseSBzdHJpcCBiZWNhdXNlIFBpZ2xpdCBpcyAqaHVnZSoKIE9FQ01BS0VfVEFSR0VUX0lOU1RBTEwgPSAiaW5zdGFsbC9zdHJpcCIKIAogUkRFUEVORFNfJHtQTn0gPSAid2FmZmxlIHdhZmZsZS1iaW4gcHl0aG9uMyBweXRob24zLW1ha28gcHl0aG9uMy1qc29uIFwKQEAgLTU1LDUgKzU2LDkgQEAKIAogSU5TQU5FX1NLSVBfJHtQTn0gKz0gImRldi1zbyBhbHJlYWR5LXN0cmlwcGVkIgogCisjIEFzIG5vdGhpbmcgYnVpbGRzIGFnYWluc3QgUGlnbGl0IHdlIGRvbid0IG5lZWQgdG8gaGF2ZSBhbnl0aGluZyBpbiB0aGUKKyMgc3lzcm9vdCwgZXNwZWNpYWxseSB3aGVuIHRoaXMgaXMgfjJHQiBvZiB0ZXN0IHN1aXRlCitTWVNST09UX0RJUlNfcmVtb3ZlID0gIiR7bGliZGlyfSIKKwogIyBDYW4ndCBiZSBidWlsdCB3aXRoIGNjYWNoZQogQ0NBQ0hFX0RJU0FCTEUgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3ZpcmdscmVuZGVyZXIvdmlyZ2xyZW5kZXJlci8wMDAxLW1lc29uLmJ1aWxkLXVzZS1weXRob24zLWRpcmVjdGx5LWZvci1weXRob24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXIvMDAwMS1tZXNvbi5idWlsZC11c2UtcHl0aG9uMy1kaXJlY3RseS1mb3ItcHl0aG9uLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBmZDFkNTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXIvMDAwMS1tZXNvbi5idWlsZC11c2UtcHl0aG9uMy1kaXJlY3RseS1mb3ItcHl0aG9uLnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gNjM3ODhjNjNlZDM5YTNjZTk5OTRmNDMxNWQ4OTk3ZTFhOTMwMGQ0ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogTW9uLCA2IEphbiAyMDIwIDEyOjQ0OjQyICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc29uLmJ1aWxkOiB1c2UgJ3B5dGhvbjMnIGRpcmVjdGx5IGZvciBweXRob24KKworVGhpcyBhdm9pZHMgYSBkZXBlbmRlbmN5IG9uIHRhcmdldCBweXRob24gKGR1ZSB0byBtZXNvbiBwcm9iaW5nCitpdHMgY29uZmlndXJhdGlvbikuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgbWVzb24uYnVpbGQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA2ODJkN2M4Li4xOWQyZWFlIDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtNjAsNyArNjAsNyBAQCBmb3JlYWNoIHcgOiB3YXJuaW5ncworICAgIGVuZGlmCisgZW5kZm9yZWFjaAorIAorLXByb2dfcHl0aG9uID0gaW1wb3J0KCdweXRob24nKS5maW5kX2luc3RhbGxhdGlvbigncHl0aG9uMycpCisrcHJvZ19weXRob24gPSAncHl0aG9uMycKKyAKKyBsaWJkcm1fZGVwID0gZGVwZW5kZW5jeSgnbGliZHJtJywgdmVyc2lvbiA6ICc+PTIuNC41MCcpCisgdGhyZWFkX2RlcCA9IGRlcGVuZGVuY3koJ3RocmVhZHMnKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyXzAuOC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdmlyZ2xyZW5kZXJlci92aXJnbHJlbmRlcmVyXzAuOC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NDIwZDg0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3ZpcmdscmVuZGVyZXIvdmlyZ2xyZW5kZXJlcl8wLjguMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiVmlyR0wgdmlydHVhbCBPcGVuR0wgcmVuZGVyZXIiCi1ERVNDUklQVElPTiA9ICJWaXJnaWwgaXMgYSByZXNlYXJjaCBwcm9qZWN0IHRvIGludmVzdGlnYXRlIHRoZSBwb3NzaWJpbGl0eSBvZiBcCi1jcmVhdGluZyBhIHZpcnR1YWwgM0QgR1BVIGZvciB1c2UgaW5zaWRlIHFlbXUgdmlydHVhbCBtYWNoaW5lcywgdGhhdCBhbGxvd3MgXAotdGhlIGd1ZXN0IG9wZXJhdGluZyBzeXN0ZW0gdG8gdXNlIHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIGhvc3QgR1BVIHRvIFwKLWFjY2VsZXJhdGUgM0QgcmVuZGVyaW5nLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vdmlyZ2lsM2QuZ2l0aHViLmlvLyIKLQotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jODFjMDhlZWVmZDk0MThmY2E4Zjg4MzA5YTc2ZGIxMCIKLQotREVQRU5EUyA9ICJsaWJkcm0gbWVzYSBsaWJlcG94eSIKLVNSQ1JFViA9ICI0OGNjOTZjOWFlYmI5ZDAxNjQ4MzBhMTU3ZWZjODkxNmYwOGYwMGMwIgotU1JDX1VSSSA9ICJnaXQ6Ly9hbm9uZ2l0LmZyZWVkZXNrdG9wLm9yZy92aXJnbHJlbmRlcmVyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZ2FsbGl1bS1FeHBhbmQtbGliYy1jaGVjay10by1iZS1wbGF0Zm9ybS1PUy1jaGVjay5wYXRjaCBcCi0gICAgICAgICAgICIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGZlYXR1cmVzX2NoZWNrCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFU19jbGFzcy1uYXRpdmUgPSAiIgotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTX2NsYXNzLW5hdGl2ZXNkayA9ICIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXJfMC44LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92aXJnbHJlbmRlcmVyL3ZpcmdscmVuZGVyZXJfMC44LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTA0NmI4NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3ZpcmdscmVuZGVyZXIvdmlyZ2xyZW5kZXJlcl8wLjguMi5iYgpAQCAtMCwwICsxLDI2IEBACitTVU1NQVJZID0gIlZpckdMIHZpcnR1YWwgT3BlbkdMIHJlbmRlcmVyIgorREVTQ1JJUFRJT04gPSAiVmlyZ2lsIGlzIGEgcmVzZWFyY2ggcHJvamVjdCB0byBpbnZlc3RpZ2F0ZSB0aGUgcG9zc2liaWxpdHkgb2YgXAorY3JlYXRpbmcgYSB2aXJ0dWFsIDNEIEdQVSBmb3IgdXNlIGluc2lkZSBxZW11IHZpcnR1YWwgbWFjaGluZXMsIHRoYXQgYWxsb3dzIFwKK3RoZSBndWVzdCBvcGVyYXRpbmcgc3lzdGVtIHRvIHVzZSB0aGUgY2FwYWJpbGl0aWVzIG9mIHRoZSBob3N0IEdQVSB0byBcCithY2NlbGVyYXRlIDNEIHJlbmRlcmluZy4iCitIT01FUEFHRSA9ICJodHRwczovL3ZpcmdpbDNkLmdpdGh1Yi5pby8iCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzgxYzA4ZWVlZmQ5NDE4ZmNhOGY4ODMwOWE3NmRiMTAiCisKK0RFUEVORFMgPSAibGliZHJtIG1lc2EgbGliZXBveHkiCitTUkNSRVYgPSAiN2QyMDRmMzkyN2JlNjVmYjMzNjVkY2UwMWRiY2QwNGQ0NDdhNDk4NSIKK1NSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcvdmlyZ2xyZW5kZXJlciBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWdhbGxpdW0tRXhwYW5kLWxpYmMtY2hlY2stdG8tYmUtcGxhdGZvcm0tT1MtY2hlY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1tZXNvbi5idWlsZC11c2UtcHl0aG9uMy1kaXJlY3RseS1mb3ItcHl0aG9uLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjaworCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVNfY2xhc3MtbmF0aXZlID0gIiIKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFU19jbGFzcy1uYXRpdmVzZGsgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcC8wMDAxLVVzZS1BU1NJTVBfTElCX0lOU1RBTExfRElSLXRvLXNlYXJjaC1saWJyYXJ5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcC8wMDAxLVVzZS1BU1NJTVBfTElCX0lOU1RBTExfRElSLXRvLXNlYXJjaC1saWJyYXJ5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM0YzViZmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wLzAwMDEtVXNlLUFTU0lNUF9MSUJfSU5TVEFMTF9ESVItdG8tc2VhcmNoLWxpYnJhcnkucGF0Y2gKQEAgLTAsMCArMSw2OCBAQAorRnJvbSA1OGY1NzZkNmYyNDBiMDg5NTdhNDAyOTYwY2RmMDZjNzQyMDFhYzdiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogVGh1LCAxMiBEZWMgMjAxOSAyMjoxNjoxNSAtMDgwMAorU3ViamVjdDogW1BBVENIXSBVc2UgQVNTSU1QX0xJQl9JTlNUQUxMX0RJUiB0byBzZWFyY2ggbGlicmFyeQorCitVc2UgQVNTSU1QX0xJQl9JTlNUQUxMX0RJUiByYXRoZXIgdGhhbiBoYXJkY29kZWQgL2xpYiB0byBzZWFyY2ggbGlicmFyeQorCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBIb25neHUgSmlhIDxob25neHUuamlhQHdpbmRyaXZlci5jb20+CisKKy0tLQorIGFzc2ltcFRhcmdldHMtcmVsZWFzZS5jbWFrZS5pbiB8IDE2ICsrKysrKysrLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgOCBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvYXNzaW1wVGFyZ2V0cy1yZWxlYXNlLmNtYWtlLmluIGIvYXNzaW1wVGFyZ2V0cy1yZWxlYXNlLmNtYWtlLmluCitpbmRleCBmM2RiOGYxLi5iOGEwNjZhIDEwMDY0NAorLS0tIGEvYXNzaW1wVGFyZ2V0cy1yZWxlYXNlLmNtYWtlLmluCisrKysgYi9hc3NpbXBUYXJnZXRzLXJlbGVhc2UuY21ha2UuaW4KK0BAIC00MiwxMSArNDIsMTEgQEAgaWYoTVNWQykKKyAgICAgIyBJbXBvcnQgdGFyZ2V0ICJhc3NpbXA6OmFzc2ltcCIgZm9yIGNvbmZpZ3VyYXRpb24gIlJlbGVhc2UiCisgICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgYXNzaW1wOjphc3NpbXAgQVBQRU5EIFBST1BFUlRZIElNUE9SVEVEX0NPTkZJR1VSQVRJT05TIFJFTEVBU0UpCisgICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhhc3NpbXA6OmFzc2ltcCBQUk9QRVJUSUVTCistICAgICAgSU1QT1JURURfSU1QTElCX1JFTEVBU0UgIiR7X0lNUE9SVF9QUkVGSVh9L2xpYi8ke2ltcG9ydExpYnJhcnlOYW1lfSIKKysgICAgICBJTVBPUlRFRF9JTVBMSUJfUkVMRUFTRSAiJHtfSU1QT1JUX1BSRUZJWH0vQEFTU0lNUF9MSUJfSU5TVEFMTF9ESVJALyR7aW1wb3J0TGlicmFyeU5hbWV9IgorICAgICAgIElNUE9SVEVEX0xPQ0FUSU9OX1JFTEVBU0UgIiR7X0lNUE9SVF9QUkVGSVh9L2Jpbi8ke3NoYXJlZExpYnJhcnlOYW1lfSIKKyAgICAgKQorICAgICBsaXN0KEFQUEVORCBfSU1QT1JUX0NIRUNLX1RBUkdFVFMgYXNzaW1wOjphc3NpbXAgKQorLSAgICBsaXN0KEFQUEVORCBfSU1QT1JUX0NIRUNLX0ZJTEVTX0ZPUl9hc3NpbXA6OmFzc2ltcCAiJHtfSU1QT1JUX1BSRUZJWH0vbGliLyR7aW1wb3J0TGlicmFyeU5hbWV9IikKKysgICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19GSUxFU19GT1JfYXNzaW1wOjphc3NpbXAgIiR7X0lNUE9SVF9QUkVGSVh9L0BBU1NJTVBfTElCX0lOU1RBTExfRElSQC8ke2ltcG9ydExpYnJhcnlOYW1lfSIpCisgICAgIGxpc3QoQVBQRU5EIF9JTVBPUlRfQ0hFQ0tfRklMRVNfRk9SX2Fzc2ltcDo6YXNzaW1wICIke19JTVBPUlRfUFJFRklYfS9iaW4vJHtzaGFyZWRMaWJyYXJ5TmFtZX0iICkKKyAgIGVsc2UoKQorICAgICBzZXQoc3RhdGljTGlicmFyeU5hbWUgImFzc2ltcCR7QVNTSU1QX0xJQlJBUllfU1VGRklYfUBDTUFLRV9TVEFUSUNfTElCUkFSWV9TVUZGSVhAIikKK0BAIC01NCwxMCArNTQsMTAgQEAgaWYoTVNWQykKKyAgICAgIyBJbXBvcnQgdGFyZ2V0ICJhc3NpbXA6OmFzc2ltcCIgZm9yIGNvbmZpZ3VyYXRpb24gIlJlbGVhc2UiCisgICAgIHNldF9wcm9wZXJ0eShUQVJHRVQgYXNzaW1wOjphc3NpbXAgQVBQRU5EIFBST1BFUlRZIElNUE9SVEVEX0NPTkZJR1VSQVRJT05TIFJFTEVBU0UpCisgICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhhc3NpbXA6OmFzc2ltcCBQUk9QRVJUSUVTCistICAgICAgSU1QT1JURURfTE9DQVRJT05fUkVMRUFTRSAiJHtfSU1QT1JUX1BSRUZJWH0vbGliLyR7c3RhdGljTGlicmFyeU5hbWV9IgorKyAgICAgIElNUE9SVEVEX0xPQ0FUSU9OX1JFTEVBU0UgIiR7X0lNUE9SVF9QUkVGSVh9L0BBU1NJTVBfTElCX0lOU1RBTExfRElSQC8ke3N0YXRpY0xpYnJhcnlOYW1lfSIKKyAgICAgKQorICAgICBsaXN0KEFQUEVORCBfSU1QT1JUX0NIRUNLX1RBUkdFVFMgYXNzaW1wOjphc3NpbXAgKQorLSAgICBsaXN0KEFQUEVORCBfSU1QT1JUX0NIRUNLX0ZJTEVTX0ZPUl9hc3NpbXA6OmFzc2ltcCAiJHtfSU1QT1JUX1BSRUZJWH0vbGliLyR7c3RhdGljTGlicmFyeU5hbWV9IikKKysgICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19GSUxFU19GT1JfYXNzaW1wOjphc3NpbXAgIiR7X0lNUE9SVF9QUkVGSVh9L0BBU1NJTVBfTElCX0lOU1RBTExfRElSQC8ke3N0YXRpY0xpYnJhcnlOYW1lfSIpCisgICBlbmRpZigpCisgCisgZWxzZSgpCitAQCAtNzAsMTcgKzcwLDE3IEBAIGVsc2UoKQorICAgICBlbmRpZigpCisgICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhhc3NpbXA6OmFzc2ltcCBQUk9QRVJUSUVTCisgICAgICAgSU1QT1JURURfU09OQU1FX1JFTEVBU0UgIiR7c2hhcmVkTGlicmFyeU5hbWV9IgorLSAgICAgIElNUE9SVEVEX0xPQ0FUSU9OX1JFTEVBU0UgIiR7X0lNUE9SVF9QUkVGSVh9L2xpYi8ke3NoYXJlZExpYnJhcnlOYW1lfSIKKysgICAgICBJTVBPUlRFRF9MT0NBVElPTl9SRUxFQVNFICIke19JTVBPUlRfUFJFRklYfS9AQVNTSU1QX0xJQl9JTlNUQUxMX0RJUkAvJHtzaGFyZWRMaWJyYXJ5TmFtZX0iCisgICAgICkKKyAgICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19UQVJHRVRTIGFzc2ltcDo6YXNzaW1wICkKKy0gICAgbGlzdChBUFBFTkQgX0lNUE9SVF9DSEVDS19GSUxFU19GT1JfYXNzaW1wOjphc3NpbXAgIiR7X0lNUE9SVF9QUkVGSVh9L2xpYi8ke3NoYXJlZExpYnJhcnlOYW1lfSIgKQorKyAgICBsaXN0KEFQUEVORCBfSU1QT1JUX0NIRUNLX0ZJTEVTX0ZPUl9hc3NpbXA6OmFzc2ltcCAiJHtfSU1QT1JUX1BSRUZJWH0vQEFTU0lNUF9MSUJfSU5TVEFMTF9ESVJALyR7c2hhcmVkTGlicmFyeU5hbWV9IiApCisgICBlbHNlKCkKKyAgICAgc2V0KHN0YXRpY0xpYnJhcnlOYW1lICJsaWJhc3NpbXAke0FTU0lNUF9MSUJSQVJZX1NVRkZJWH1AQ01BS0VfU1RBVElDX0xJQlJBUllfU1VGRklYQCIpCisgICAgIHNldF90YXJnZXRfcHJvcGVydGllcyhhc3NpbXA6OmFzc2ltcCBQUk9QRVJUSUVTCistICAgICAgSU1QT1JURURfTE9DQVRJT05fUkVMRUFTRSAiJHtfSU1QT1JUX1BSRUZJWH0vbGliLyR7c3RhdGljTGlicmFyeU5hbWV9IgorKyAgICAgIElNUE9SVEVEX0xPQ0FUSU9OX1JFTEVBU0UgIiR7X0lNUE9SVF9QUkVGSVh9L0BBU1NJTVBfTElCX0lOU1RBTExfRElSQC8ke3N0YXRpY0xpYnJhcnlOYW1lfSIKKyAgICAgKQorICAgICBsaXN0KEFQUEVORCBfSU1QT1JUX0NIRUNLX1RBUkdFVFMgYXNzaW1wOjphc3NpbXAgKQorLSAgICBsaXN0KEFQUEVORCBfSU1QT1JUX0NIRUNLX0ZJTEVTX0ZPUl9hc3NpbXA6OmFzc2ltcCAiJHtfSU1QT1JUX1BSRUZJWH0vbGliLyR7c3RhdGljTGlicmFyeU5hbWV9IiApCisrICAgIGxpc3QoQVBQRU5EIF9JTVBPUlRfQ0hFQ0tfRklMRVNfRk9SX2Fzc2ltcDo6YXNzaW1wICIke19JTVBPUlRfUFJFRklYfS9AQVNTSU1QX0xJQl9JTlNUQUxMX0RJUkAvJHtzdGF0aWNMaWJyYXJ5TmFtZX0iICkKKyAgIGVuZGlmKCkKKyBlbmRpZigpCisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wLzAwMDEtY2xvc2VzLWh0dHBzLWdpdGh1Yi5jb20tYXNzaW1wLWFzc2ltcC1pc3N1ZXMtMjczMy11cC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi9hc3NpbXAvMDAwMS1jbG9zZXMtaHR0cHMtZ2l0aHViLmNvbS1hc3NpbXAtYXNzaW1wLWlzc3Vlcy0yNzMzLXVwLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg3YTE2NTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wLzAwMDEtY2xvc2VzLWh0dHBzLWdpdGh1Yi5jb20tYXNzaW1wLWFzc2ltcC1pc3N1ZXMtMjczMy11cC5wYXRjaApAQCAtMCwwICsxLDE2NjQgQEAKK0Zyb20gN2ZjMjIwYjIzNTBkNzg5NDJmYjM5MzVjYWQwYjE1NjQ0MThlYmU4ZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtpbSBLdWxsaW5nIDxraW0ua3VsbGluZ0Bnb29nbGVtYWlsLmNvbT4KK0RhdGU6IFR1ZSwgMTkgTm92IDIwMTkgMjA6MzA6NDAgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gY2xvc2VzIGh0dHBzOi8vZ2l0aHViLmNvbS9hc3NpbXAvYXNzaW1wL2lzc3Vlcy8yNzMzOiB1cGRhdGUKKyBvZiB6bGlwIHRvIGZpeCBnY2MgYnVpbGQgZm9yIHY5LjIuMCAzMiBiaXQKKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2Fzc2ltcC9hc3NpbXAvY29tbWl0L2Y3ODQ0NmIxNGFmZjQ2ZGIyZWYyN2QwNjJhMjc1YjZhMDFmZDY4YjFdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIGNvbnRyaWIvemlwLy5naXRpZ25vcmUgICAgICAgICAgfCAgIDIgKworIGNvbnRyaWIvemlwL0NNYWtlTGlzdHMudHh0ICAgICAgfCAgODMgKysrKystCisgY29udHJpYi96aXAvUkVBRE1FLm1kICAgICAgICAgICB8ICAxMiArLQorIGNvbnRyaWIvemlwL2FwcHZleW9yLnltbCAgICAgICAgfCAgIDIgKy0KKyBjb250cmliL3ppcC9zcmMvbWluaXouaCAgICAgICAgIHwgNDU3ICsrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tCisgY29udHJpYi96aXAvc3JjL3ppcC5jICAgICAgICAgICB8ICA2MiArKystLQorIGNvbnRyaWIvemlwL3NyYy96aXAuaCAgICAgICAgICAgfCA0NTcgKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0KKyBjb250cmliL3ppcC90ZXN0L0NNYWtlTGlzdHMudHh0IHwgIDI3ICstCisgY29udHJpYi96aXAvdGVzdC90ZXN0LmMgICAgICAgICB8ICAzOCArKy0KKyBjb250cmliL3ppcC90ZXN0L3Rlc3RfbWluaXouYyAgIHwgIDI1ICstCisgMTAgZmlsZXMgY2hhbmdlZCwgODIxIGluc2VydGlvbnMoKyksIDM0NCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbnRyaWIvemlwLy5naXRpZ25vcmUgYi9jb250cmliL3ppcC8uZ2l0aWdub3JlCitpbmRleCBhNzkwNGExZS4uNDliMmNiMmYgMTAwNjQ0CistLS0gYS9jb250cmliL3ppcC8uZ2l0aWdub3JlCisrKysgYi9jb250cmliL3ppcC8uZ2l0aWdub3JlCitAQCAtMSw2ICsxLDcgQEAKKyAvYnVpbGQvCisgL3Rlc3QvYnVpbGQvCisgL3hjb2RlcHJvai8KKysudnNjb2RlLworIAorICMgT2JqZWN0IGZpbGVzCisgKi5vCitAQCAtNTQsMyArNTUsNCBAQCB6aXAuZGlyLworIHRlc3QvdGVzdC5leGUudmN4cHJvai5maWx0ZXJzCisgdGVzdC90ZXN0LmV4ZS52Y3hwcm9qCisgdGVzdC90ZXN0LmV4ZS5kaXIvCisrCitkaWZmIC0tZ2l0IGEvY29udHJpYi96aXAvQ01ha2VMaXN0cy50eHQgYi9jb250cmliL3ppcC9DTWFrZUxpc3RzLnR4dAoraW5kZXggYjQ2ZGJiMWQuLjc3OTE2ZDJlIDEwMDY0NAorLS0tIGEvY29udHJpYi96aXAvQ01ha2VMaXN0cy50eHQKKysrKyBiL2NvbnRyaWIvemlwL0NNYWtlTGlzdHMudHh0CitAQCAtMSwxMCArMSwxNCBAQAorLWNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAyLjgpCistcHJvamVjdCh6aXApCistZW5hYmxlX2xhbmd1YWdlKEMpCisrY21ha2VfbWluaW11bV9yZXF1aXJlZChWRVJTSU9OIDMuMCkKKysKKytwcm9qZWN0KHppcAorKyAgTEFOR1VBR0VTIEMKKysgIFZFUlNJT04gIjAuMS4xNSIpCisgc2V0KENNQUtFX01PRFVMRV9QQVRIICIke1BST0pFQ1RfU09VUkNFX0RJUn0vY21ha2UiICR7Q01BS0VfTU9EVUxFX1BBVEh9KQorIAorK29wdGlvbihDTUFLRV9ESVNBQkxFX1RFU1RJTkcgIkRpc2FibGUgdGVzdCBjcmVhdGlvbiIgT0ZGKQorKworIGlmIChNU1ZDKQorLSAgIyBVc2Ugc2VjdXJlIGZ1bmN0aW9ucyBieSBkZWZhdWFsdCBhbmQgc3VwcHJlc3Mgd2FybmluZ3MgYWJvdXQgImRlcHJlY2F0ZWQiIGZ1bmN0aW9ucworKyAgIyBVc2Ugc2VjdXJlIGZ1bmN0aW9ucyBieSBkZWZhdWx0IGFuZCBzdXBwcmVzcyB3YXJuaW5ncyBhYm91dCAiZGVwcmVjYXRlZCIgZnVuY3Rpb25zCisgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvRCBfQ1JUX1NFQ1VSRV9DUFBfT1ZFUkxPQURfU1RBTkRBUkRfTkFNRVM9MSIpCisgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvRCBfQ1JUX1NFQ1VSRV9DUFBfT1ZFUkxPQURfU1RBTkRBUkRfTkFNRVNfQ09VTlQ9MSIpCisgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAvRCBfQ1JUX05PTlNURENfTk9fV0FSTklOR1M9MSAvRCBfQ1JUX1NFQ1VSRV9OT19XQVJOSU5HUz0xIikKK0BAIC0xMiwyOCArMTYsODAgQEAgZWxzZWlmICgiJHtDTUFLRV9DX0NPTVBJTEVSX0lEfSIgU1RSRVFVQUwgIkdOVSIgT1IKKyAgICAgICAgICIke0NNQUtFX0NfQ09NUElMRVJfSUR9IiBTVFJFUVVBTCAiQ2xhbmciIE9SCisgICAgICAgICAiJHtDTUFLRV9DX0NPTVBJTEVSX0lEfSIgU1RSRVFVQUwgIkFwcGxlQ2xhbmciKQorICAgc2V0KENNQUtFX0NfRkxBR1MgIiR7Q01BS0VfQ19GTEFHU30gLXN0ZD1jOTkgLVdhbGwgLVdleHRyYSAtV2Vycm9yIC1wZWRhbnRpYyIpCisrICBpZihFTkFCTEVfQ09WRVJBR0UpCisrICAgIHNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1nIC1PMCAtZnByb2ZpbGUtYXJjcyAtZnRlc3QtY292ZXJhZ2UiKQorKyAgICBzZXQoQ01BS0VfRVhFX0xJTktFUl9GTEFHUyAiJHtDTUFLRV9FWEVfTElOS0VSX0ZMQUdTfSAtLWNvdmVyYWdlIikKKysgIGVuZGlmKCkKKyBlbmRpZiAoTVNWQykKKyAKKyAjIHppcAorIHNldChTUkMgc3JjL21pbml6Lmggc3JjL3ppcC5oIHNyYy96aXAuYykKKyBhZGRfbGlicmFyeSgke1BST0pFQ1RfTkFNRX0gJHtTUkN9KQorLXRhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKCR7UFJPSkVDVF9OQU1FfSBJTlRFUkZBQ0Ugc3JjKQorK3RhcmdldF9pbmNsdWRlX2RpcmVjdG9yaWVzKCR7UFJPSkVDVF9OQU1FfSBQVUJMSUMKKysgICQ8QlVJTERfSU5URVJGQUNFOiR7Q01BS0VfQ1VSUkVOVF9TT1VSQ0VfRElSfS9zcmM+CisrICAkPElOU1RBTExfSU5URVJGQUNFOmluY2x1ZGU+CisrKQorIAorICMgdGVzdAorIGlmIChOT1QgQ01BS0VfRElTQUJMRV9URVNUSU5HKQorICAgZW5hYmxlX3Rlc3RpbmcoKQorICAgYWRkX3N1YmRpcmVjdG9yeSh0ZXN0KQorICAgZmluZF9wYWNrYWdlKFNhbml0aXplcnMpCistICBhZGRfc2FuaXRpemVycygke1BST0pFQ1RfTkFNRX0gdGVzdC5leGUpCistICBhZGRfc2FuaXRpemVycygke1BST0pFQ1RfTkFNRX0gdGVzdF9taW5pei5leGUpCisrICBhZGRfc2FuaXRpemVycygke1BST0pFQ1RfTkFNRX0gJHt0ZXN0X291dH0gJHt0ZXN0X21pbml6X291dH0pCisgZW5kaWYoKQorIAorKyMjIyMKKysjIEluc3RhbGxhdGlvbiAoaHR0cHM6Ly9naXRodWIuY29tL2ZvcmV4YW1wbGUvcGFja2FnZS1leGFtcGxlKSB7CisrCisrc2V0KENPTkZJR19JTlNUQUxMX0RJUiAibGliL2NtYWtlLyR7UFJPSkVDVF9OQU1FfSIpCisrc2V0KElOQ0xVREVfSU5TVEFMTF9ESVIgImluY2x1ZGUiKQorKworK3NldChHRU5FUkFURURfRElSICIke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vZ2VuZXJhdGVkIikKKysKKysjIENvbmZpZ3VyYXRpb24KKytzZXQoVkVSU0lPTl9DT05GSUcgIiR7R0VORVJBVEVEX0RJUn0vJHtQUk9KRUNUX05BTUV9Q29uZmlnVmVyc2lvbi5jbWFrZSIpCisrc2V0KFBST0pFQ1RfQ09ORklHICIke0dFTkVSQVRFRF9ESVJ9LyR7UFJPSkVDVF9OQU1FfUNvbmZpZy5jbWFrZSIpCisrc2V0KFRBUkdFVFNfRVhQT1JUX05BTUUgIiR7UFJPSkVDVF9OQU1FfVRhcmdldHMiKQorK3NldChOQU1FU1BBQ0UgIiR7UFJPSkVDVF9OQU1FfTo6IikKKysKKysjIEluY2x1ZGUgbW9kdWxlIHdpdGggZnVjdGlvbiAnd3JpdGVfYmFzaWNfcGFja2FnZV92ZXJzaW9uX2ZpbGUnCisraW5jbHVkZShDTWFrZVBhY2thZ2VDb25maWdIZWxwZXJzKQorKworKyMgTm90ZTogUFJPSkVDVF9WRVJTSU9OIGlzIHVzZWQgYXMgYSBWRVJTSU9OCisrd3JpdGVfYmFzaWNfcGFja2FnZV92ZXJzaW9uX2ZpbGUoCisrICAgICIke1ZFUlNJT05fQ09ORklHfSIgQ09NUEFUSUJJTElUWSBTYW1lTWFqb3JWZXJzaW9uCisrKQorKworKyMgVXNlIHZhcmlhYmxlczoKKysjICAgKiBUQVJHRVRTX0VYUE9SVF9OQU1FCisrIyAgICogUFJPSkVDVF9OQU1FCisrY29uZmlndXJlX3BhY2thZ2VfY29uZmlnX2ZpbGUoCisrICAgICJjbWFrZS9Db25maWcuY21ha2UuaW4iCisrICAgICIke1BST0pFQ1RfQ09ORklHfSIKKysgICAgSU5TVEFMTF9ERVNUSU5BVElPTiAiJHtDT05GSUdfSU5TVEFMTF9ESVJ9IgorKykKKysKKytpbnN0YWxsKAorKyAgICBGSUxFUyAiJHtQUk9KRUNUX0NPTkZJR30iICIke1ZFUlNJT05fQ09ORklHfSIKKysgICAgREVTVElOQVRJT04gIiR7Q09ORklHX0lOU1RBTExfRElSfSIKKyspCisrCisraW5zdGFsbCgKKysgICAgRVhQT1JUICIke1RBUkdFVFNfRVhQT1JUX05BTUV9IgorKyAgICBOQU1FU1BBQ0UgIiR7TkFNRVNQQUNFfSIKKysgICAgREVTVElOQVRJT04gIiR7Q09ORklHX0lOU1RBTExfRElSfSIKKyspCisrCisrIyB9CisrCisgaW5zdGFsbChUQVJHRVRTICR7UFJPSkVDVF9OQU1FfQorKyAgICAgICAgRVhQT1JUICR7VEFSR0VUU19FWFBPUlRfTkFNRX0KKyAgICAgICAgIFJVTlRJTUUgREVTVElOQVRJT04gYmluCisgICAgICAgICBBUkNISVZFIERFU1RJTkFUSU9OIGxpYgorICAgICAgICAgTElCUkFSWSBERVNUSU5BVElPTiBsaWIKKy0gICAgICAgIENPTVBPTkVOVCBsaWJyYXJ5KQorLWluc3RhbGwoRklMRVMgJHtQUk9KRUNUX1NPVVJDRV9ESVJ9L3NyYy96aXAuaCBERVNUSU5BVElPTiBpbmNsdWRlKQorKyAgICAgICAgSU5DTFVERVMgREVTVElOQVRJT04gJHtJTkNMVURFX0lOU1RBTExfRElSfQorKykKKytpbnN0YWxsKEZJTEVTICR7UFJPSkVDVF9TT1VSQ0VfRElSfS9zcmMvemlwLmggREVTVElOQVRJT04gJHtJTkNMVURFX0lOU1RBTExfRElSfS96aXApCisgCisgIyB1bmluc3RhbGwgdGFyZ2V0IChodHRwczovL2dpdGxhYi5raXR3YXJlLmNvbS9jbWFrZS9jb21tdW5pdHkvd2lraXMvRkFRI2Nhbi1pLWRvLW1ha2UtdW5pbnN0YWxsLXdpdGgtY21ha2UpCisgaWYoTk9UIFRBUkdFVCB1bmluc3RhbGwpCitAQCAtNDUsMyArMTAxLDEyIEBAIGlmKE5PVCBUQVJHRVQgdW5pbnN0YWxsKQorICAgICBhZGRfY3VzdG9tX3RhcmdldCh1bmluc3RhbGwKKyAgICAgICAgIENPTU1BTkQgJHtDTUFLRV9DT01NQU5EfSAtUCAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vY21ha2UvY21ha2VfdW5pbnN0YWxsLmNtYWtlKQorIGVuZGlmKCkKKysKKytmaW5kX3BhY2thZ2UoRG94eWdlbikKKytpZihET1hZR0VOX0ZPVU5EKQorKyAgICBjb25maWd1cmVfZmlsZSgke0NNQUtFX0NVUlJFTlRfU09VUkNFX0RJUn0vRG94eWZpbGUuaW4gJHtDTUFLRV9DVVJSRU5UX0JJTkFSWV9ESVJ9L0RveHlmaWxlIEBPTkxZKQorKyAgICBhZGRfY3VzdG9tX3RhcmdldChkb2MKKysgICAgICAgICR7RE9YWUdFTl9FWEVDVVRBQkxFfSAke0NNQUtFX0NVUlJFTlRfQklOQVJZX0RJUn0vRG94eWZpbGUKKysgICAgICAgIFdPUktJTkdfRElSRUNUT1JZICR7Q01BS0VfQ1VSUkVOVF9CSU5BUllfRElSfQorKyAgICAgICAgQ09NTUVOVCAiR2VuZXJhdGluZyBBUEkgZG9jdW1lbnRhdGlvbiB3aXRoIERveHlnZW4iIFZFUkJBVElNKQorK2VuZGlmKCkKK2RpZmYgLS1naXQgYS9jb250cmliL3ppcC9SRUFETUUubWQgYi9jb250cmliL3ppcC9SRUFETUUubWQKK2luZGV4IGQ1ZmI4Y2QyLi4xNGViOWEzNCAxMDA2NDQKKy0tLSBhL2NvbnRyaWIvemlwL1JFQURNRS5tZAorKysrIGIvY29udHJpYi96aXAvUkVBRE1FLm1kCitAQCAtNzEsNyArNzEsNyBAQCBpbnQgYXJnID0gMjsKKyB6aXBfZXh0cmFjdCgiZm9vLnppcCIsICIvdG1wIiwgb25fZXh0cmFjdF9lbnRyeSwgJmFyZyk7CisgYGBgCisgCistKiAgIEV4dHJhY3QgYSB6aXAgZW50cnkgaW50byBtZW1vcnkuCisrKiBFeHRyYWN0IGEgemlwIGVudHJ5IGludG8gbWVtb3J5LgorIGBgYGMKKyB2b2lkICpidWYgPSBOVUxMOworIHNpemVfdCBidWZzaXplOworQEAgLTg5LDcgKzg5LDcgQEAgemlwX2Nsb3NlKHppcCk7CisgZnJlZShidWYpOworIGBgYAorIAorLSogICBFeHRyYWN0IGEgemlwIGVudHJ5IGludG8gbWVtb3J5IChubyBpbnRlcm5hbCBhbGxvY2F0aW9uKS4KKysqIEV4dHJhY3QgYSB6aXAgZW50cnkgaW50byBtZW1vcnkgKG5vIGludGVybmFsIGFsbG9jYXRpb24pLgorIGBgYGMKKyB1bnNpZ25lZCBjaGFyICpidWY7Cisgc2l6ZV90IGJ1ZnNpemU7CitAQCAtMTEwLDcgKzExMCw3IEBAIHppcF9jbG9zZSh6aXApOworIGZyZWUoYnVmKTsKKyBgYGAKKyAKKy0qICAgRXh0cmFjdCBhIHppcCBlbnRyeSBpbnRvIG1lbW9yeSB1c2luZyBjYWxsYmFjay4KKysqIEV4dHJhY3QgYSB6aXAgZW50cnkgaW50byBtZW1vcnkgdXNpbmcgY2FsbGJhY2suCisgYGBgYworIHN0cnVjdCBidWZmZXJfdCB7CisgICAgIGNoYXIgKmRhdGE7CitAQCAtMTQ0LDcgKzE0NCw3IEBAIGZyZWUoYnVmLmRhdGEpOworIGBgYAorIAorIAorLSogICBFeHRyYWN0IGEgemlwIGVudHJ5IGludG8gYSBmaWxlLgorKyogRXh0cmFjdCBhIHppcCBlbnRyeSBpbnRvIGEgZmlsZS4KKyBgYGBjCisgc3RydWN0IHppcF90ICp6aXAgPSB6aXBfb3BlbigiZm9vLnppcCIsIDAsICdyJyk7CisgeworQEAgLTE1Nyw3ICsxNTcsNyBAQCBzdHJ1Y3QgemlwX3QgKnppcCA9IHppcF9vcGVuKCJmb28uemlwIiwgMCwgJ3InKTsKKyB6aXBfY2xvc2UoemlwKTsKKyBgYGAKKyAKKy0qICAgTGlzdCBvZiBhbGwgemlwIGVudHJpZXMKKysqIExpc3Qgb2YgYWxsIHppcCBlbnRyaWVzCisgYGBgYworIHN0cnVjdCB6aXBfdCAqemlwID0gemlwX29wZW4oImZvby56aXAiLCAwLCAncicpOworIGludCBpLCBuID0gemlwX3RvdGFsX2VudHJpZXMoemlwKTsKK0BAIC0xNzQsNyArMTc0LDcgQEAgZm9yIChpID0gMDsgaSA8IG47ICsraSkgeworIHppcF9jbG9zZSh6aXApOworIGBgYAorIAorLSMjIEJpbmRpbmdzCisrIyBCaW5kaW5ncworIENvbXBpbGUgemlwIGxpYnJhcnkgYXMgYSBkeW5hbWljIGxpYnJhcnkuCisgYGBgc2hlbGwKKyAkIG1rZGlyIGJ1aWxkCitkaWZmIC0tZ2l0IGEvY29udHJpYi96aXAvYXBwdmV5b3IueW1sIGIvY29udHJpYi96aXAvYXBwdmV5b3IueW1sCitpbmRleCAwYmU2MzczYy4uZWExN2Y1ZGUgMTAwNjQ0CistLS0gYS9jb250cmliL3ppcC9hcHB2ZXlvci55bWwKKysrKyBiL2NvbnRyaWIvemlwL2FwcHZleW9yLnltbAorQEAgLTEsNCArMSw0IEBACistdmVyc2lvbjogemlwLTAuMS45LntidWlsZH0KKyt2ZXJzaW9uOiB6aXAtMC4xLjE1LntidWlsZH0KKyBidWlsZF9zY3JpcHQ6CisgLSBjbWQ6ID4tCisgICAgIGNkIGM6XHByb2plY3RzXHppcAorZGlmZiAtLWdpdCBhL2NvbnRyaWIvemlwL3NyYy9taW5pei5oIGIvY29udHJpYi96aXAvc3JjL21pbml6LmgKK2luZGV4IDJjMjdhOTRkLi5jNGZjZmI4MyAxMDA2NDQKKy0tLSBhL2NvbnRyaWIvemlwL3NyYy9taW5pei5oCisrKysgYi9jb250cmliL3ppcC9zcmMvbWluaXouaAorQEAgLTIyMSw2ICsyMjEsNyBAQAorICNpZm5kZWYgTUlOSVpfSEVBREVSX0lOQ0xVREVECisgI2RlZmluZSBNSU5JWl9IRUFERVJfSU5DTFVERUQKKyAKKysjaW5jbHVkZSA8c3RkaW50Lmg+CisgI2luY2x1ZGUgPHN0ZGxpYi5oPgorIAorIC8vIERlZmluZXMgdG8gY29tcGxldGVseSBkaXNhYmxlIHNwZWNpZmljIHBvcnRpb25zIG9mIG1pbml6LmM6CitAQCAtMjg0LDcgKzI4NSw4IEBACisgLyogU2V0IE1JTklaX1VTRV9VTkFMSUdORURfTE9BRFNfQU5EX1NUT1JFUyBvbmx5IGlmIG5vdCBzZXQgKi8KKyAjaWYgIWRlZmluZWQoTUlOSVpfVVNFX1VOQUxJR05FRF9MT0FEU19BTkRfU1RPUkVTKQorICNpZiBNSU5JWl9YODZfT1JfWDY0X0NQVQorLS8qIFNldCBNSU5JWl9VU0VfVU5BTElHTkVEX0xPQURTX0FORF9TVE9SRVMgdG8gMSBvbiBDUFUncyB0aGF0IHBlcm1pdCBlZmZpY2llbnQgaW50ZWdlciBsb2FkcyBhbmQgc3RvcmVzIGZyb20gdW5hbGlnbmVkIGFkZHJlc3Nlcy4gKi8KKysvKiBTZXQgTUlOSVpfVVNFX1VOQUxJR05FRF9MT0FEU19BTkRfU1RPUkVTIHRvIDEgb24gQ1BVJ3MgdGhhdCBwZXJtaXQgZWZmaWNpZW50CisrICogaW50ZWdlciBsb2FkcyBhbmQgc3RvcmVzIGZyb20gdW5hbGlnbmVkIGFkZHJlc3Nlcy4gKi8KKyAjZGVmaW5lIE1JTklaX1VTRV9VTkFMSUdORURfTE9BRFNfQU5EX1NUT1JFUyAxCisgI2RlZmluZSBNSU5JWl9VTkFMSUdORURfVVNFX01FTUNQWQorICNlbHNlCitAQCAtMzU0LDYgKzM1Niw0NCBAQCBlbnVtIHsKKyAgIE1aX0ZJWEVEID0gNAorIH07CisgCisrLyogbWluaXogZXJyb3IgY29kZXMuIEJlIHN1cmUgdG8gdXBkYXRlIG16X3ppcF9nZXRfZXJyb3Jfc3RyaW5nKCkgaWYgeW91IGFkZCBvcgorKyAqIG1vZGlmeSB0aGlzIGVudW0uICovCisrdHlwZWRlZiBlbnVtIHsKKysgIE1aX1pJUF9OT19FUlJPUiA9IDAsCisrICBNWl9aSVBfVU5ERUZJTkVEX0VSUk9SLAorKyAgTVpfWklQX1RPT19NQU5ZX0ZJTEVTLAorKyAgTVpfWklQX0ZJTEVfVE9PX0xBUkdFLAorKyAgTVpfWklQX1VOU1VQUE9SVEVEX01FVEhPRCwKKysgIE1aX1pJUF9VTlNVUFBPUlRFRF9FTkNSWVBUSU9OLAorKyAgTVpfWklQX1VOU1VQUE9SVEVEX0ZFQVRVUkUsCisrICBNWl9aSVBfRkFJTEVEX0ZJTkRJTkdfQ0VOVFJBTF9ESVIsCisrICBNWl9aSVBfTk9UX0FOX0FSQ0hJVkUsCisrICBNWl9aSVBfSU5WQUxJRF9IRUFERVJfT1JfQ09SUlVQVEVELAorKyAgTVpfWklQX1VOU1VQUE9SVEVEX01VTFRJRElTSywKKysgIE1aX1pJUF9ERUNPTVBSRVNTSU9OX0ZBSUxFRCwKKysgIE1aX1pJUF9DT01QUkVTU0lPTl9GQUlMRUQsCisrICBNWl9aSVBfVU5FWFBFQ1RFRF9ERUNPTVBSRVNTRURfU0laRSwKKysgIE1aX1pJUF9DUkNfQ0hFQ0tfRkFJTEVELAorKyAgTVpfWklQX1VOU1VQUE9SVEVEX0NESVJfU0laRSwKKysgIE1aX1pJUF9BTExPQ19GQUlMRUQsCisrICBNWl9aSVBfRklMRV9PUEVOX0ZBSUxFRCwKKysgIE1aX1pJUF9GSUxFX0NSRUFURV9GQUlMRUQsCisrICBNWl9aSVBfRklMRV9XUklURV9GQUlMRUQsCisrICBNWl9aSVBfRklMRV9SRUFEX0ZBSUxFRCwKKysgIE1aX1pJUF9GSUxFX0NMT1NFX0ZBSUxFRCwKKysgIE1aX1pJUF9GSUxFX1NFRUtfRkFJTEVELAorKyAgTVpfWklQX0ZJTEVfU1RBVF9GQUlMRUQsCisrICBNWl9aSVBfSU5WQUxJRF9QQVJBTUVURVIsCisrICBNWl9aSVBfSU5WQUxJRF9GSUxFTkFNRSwKKysgIE1aX1pJUF9CVUZfVE9PX1NNQUxMLAorKyAgTVpfWklQX0lOVEVSTkFMX0VSUk9SLAorKyAgTVpfWklQX0ZJTEVfTk9UX0ZPVU5ELAorKyAgTVpfWklQX0FSQ0hJVkVfVE9PX0xBUkdFLAorKyAgTVpfWklQX1ZBTElEQVRJT05fRkFJTEVELAorKyAgTVpfWklQX1dSSVRFX0NBTExCQUNLX0ZBSUxFRCwKKysgIE1aX1pJUF9UT1RBTF9FUlJPUlMKKyt9IG16X3ppcF9lcnJvcjsKKysKKyAvLyBNZXRob2QKKyAjZGVmaW5lIE1aX0RFRkxBVEVEIDgKKyAKK0BAIC02OTYsNiArNzM2LDcgQEAgdHlwZWRlZiBzaXplX3QgKCptel9maWxlX3JlYWRfZnVuYykodm9pZCAqcE9wYXF1ZSwgbXpfdWludDY0IGZpbGVfb2ZzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKnBCdWYsIHNpemVfdCBuKTsKKyB0eXBlZGVmIHNpemVfdCAoKm16X2ZpbGVfd3JpdGVfZnVuYykodm9pZCAqcE9wYXF1ZSwgbXpfdWludDY0IGZpbGVfb2ZzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25zdCB2b2lkICpwQnVmLCBzaXplX3Qgbik7CisrdHlwZWRlZiBtel9ib29sICgqbXpfZmlsZV9uZWVkc19rZWVwYWxpdmUpKHZvaWQgKnBPcGFxdWUpOworIAorIHN0cnVjdCBtel96aXBfaW50ZXJuYWxfc3RhdGVfdGFnOworIHR5cGVkZWYgc3RydWN0IG16X3ppcF9pbnRlcm5hbF9zdGF0ZV90YWcgbXpfemlwX2ludGVybmFsX3N0YXRlOworQEAgLTcwNywxMyArNzQ4LDI3IEBAIHR5cGVkZWYgZW51bSB7CisgICBNWl9aSVBfTU9ERV9XUklUSU5HX0hBU19CRUVOX0ZJTkFMSVpFRCA9IDMKKyB9IG16X3ppcF9tb2RlOworIAorLXR5cGVkZWYgc3RydWN0IG16X3ppcF9hcmNoaXZlX3RhZyB7CisrdHlwZWRlZiBlbnVtIHsKKysgIE1aX1pJUF9UWVBFX0lOVkFMSUQgPSAwLAorKyAgTVpfWklQX1RZUEVfVVNFUiwKKysgIE1aX1pJUF9UWVBFX01FTU9SWSwKKysgIE1aX1pJUF9UWVBFX0hFQVAsCisrICBNWl9aSVBfVFlQRV9GSUxFLAorKyAgTVpfWklQX1RZUEVfQ0ZJTEUsCisrICBNWl9aSVBfVE9UQUxfVFlQRVMKKyt9IG16X3ppcF90eXBlOworKworK3R5cGVkZWYgc3RydWN0IHsKKyAgIG16X3VpbnQ2NCBtX2FyY2hpdmVfc2l6ZTsKKyAgIG16X3VpbnQ2NCBtX2NlbnRyYWxfZGlyZWN0b3J5X2ZpbGVfb2ZzOworLSAgbXpfdWludCBtX3RvdGFsX2ZpbGVzOworKworKyAgLyogV2Ugb25seSBzdXBwb3J0IHVwIHRvIFVJTlQzMl9NQVggZmlsZXMgaW4gemlwNjQgbW9kZS4gKi8KKysgIG16X3VpbnQzMiBtX3RvdGFsX2ZpbGVzOworICAgbXpfemlwX21vZGUgbV96aXBfbW9kZTsKKysgIG16X3ppcF90eXBlIG1femlwX3R5cGU7CisrICBtel96aXBfZXJyb3IgbV9sYXN0X2Vycm9yOworIAorLSAgbXpfdWludCBtX2ZpbGVfb2Zmc2V0X2FsaWdubWVudDsKKysgIG16X3VpbnQ2NCBtX2ZpbGVfb2Zmc2V0X2FsaWdubWVudDsKKyAKKyAgIG16X2FsbG9jX2Z1bmMgbV9wQWxsb2M7CisgICBtel9mcmVlX2Z1bmMgbV9wRnJlZTsKK0BAIC03MjIsNiArNzc3LDcgQEAgdHlwZWRlZiBzdHJ1Y3QgbXpfemlwX2FyY2hpdmVfdGFnIHsKKyAKKyAgIG16X2ZpbGVfcmVhZF9mdW5jIG1fcFJlYWQ7CisgICBtel9maWxlX3dyaXRlX2Z1bmMgbV9wV3JpdGU7CisrICBtel9maWxlX25lZWRzX2tlZXBhbGl2ZSBtX3BOZWVkc19rZWVwYWxpdmU7CisgICB2b2lkICptX3BJT19vcGFxdWU7CisgCisgICBtel96aXBfaW50ZXJuYWxfc3RhdGUgKm1fcFN0YXRlOworQEAgLTEyNjMsNiArMTMxOSw5IEBAIG16X3VpbnQgdGRlZmxfY3JlYXRlX2NvbXBfZmxhZ3NfZnJvbV96aXBfcGFyYW1zKGludCBsZXZlbCwgaW50IHdpbmRvd19iaXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGludCBzdHJhdGVneSk7CisgI2VuZGlmIC8vICNpZm5kZWYgTUlOSVpfTk9fWkxJQl9BUElTCisgCisrI2RlZmluZSBNWl9VSU5UMTZfTUFYICgweEZGRkZVKQorKyNkZWZpbmUgTVpfVUlOVDMyX01BWCAoMHhGRkZGRkZGRlUpCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgfQorICNlbmRpZgorQEAgLTEzMTEsNiArMTM3MCwxMSBAQCB0eXBlZGVmIHVuc2lnbmVkIGNoYXIgbXpfdmFsaWRhdGVfdWludDY0W3NpemVvZihtel91aW50NjQpID09IDggPyAxIDogLTFdOworICAgICgobXpfdWludDMyKSgoKGNvbnN0IG16X3VpbnQ4ICopKHApKVszXSkgPDwgMjRVKSkKKyAjZW5kaWYKKyAKKysjZGVmaW5lIE1aX1JFQURfTEU2NChwKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorKyAgKCgobXpfdWludDY0KU1aX1JFQURfTEUzMihwKSkgfCAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBcCisrICAgKCgobXpfdWludDY0KU1aX1JFQURfTEUzMigoY29uc3QgbXpfdWludDggKikocCkgKyBzaXplb2YobXpfdWludDMyKSkpICAgICAgIFwKKysgICAgPDwgMzJVKSkKKysKKyAjaWZkZWYgX01TQ19WRVIKKyAjZGVmaW5lIE1aX0ZPUkNFSU5MSU5FIF9fZm9yY2VpbmxpbmUKKyAjZWxpZiBkZWZpbmVkKF9fR05VQ19fKQorQEAgLTQxNjAsNiArNDIyNCwxNyBAQCBlbnVtIHsKKyAgIE1aX1pJUF9MT0NBTF9ESVJfSEVBREVSX1NJWkUgPSAzMCwKKyAgIE1aX1pJUF9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSA9IDQ2LAorICAgTVpfWklQX0VORF9PRl9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSA9IDIyLAorKworKyAgLyogWklQNjQgYXJjaGl2ZSBpZGVudGlmaWVyIGFuZCByZWNvcmQgc2l6ZXMgKi8KKysgIE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9IRUFERVJfU0lHID0gMHgwNjA2NGI1MCwKKysgIE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9MT0NBVE9SX1NJRyA9IDB4MDcwNjRiNTAsCisrICBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUgPSA1NiwKKysgIE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9MT0NBVE9SX1NJWkUgPSAyMCwKKysgIE1aX1pJUDY0X0VYVEVOREVEX0lORk9STUFUSU9OX0ZJRUxEX0hFQURFUl9JRCA9IDB4MDAwMSwKKysgIE1aX1pJUF9EQVRBX0RFU0NSSVBUT1JfSUQgPSAweDA4MDc0YjUwLAorKyAgTVpfWklQX0RBVEFfREVTQ1JJUFRFUl9TSVpFNjQgPSAyNCwKKysgIE1aX1pJUF9EQVRBX0RFU0NSSVBURVJfU0laRTMyID0gMTYsCisrCisgICAvLyBDZW50cmFsIGRpcmVjdG9yeSBoZWFkZXIgcmVjb3JkIG9mZnNldHMKKyAgIE1aX1pJUF9DREhfU0lHX09GUyA9IDAsCisgICBNWl9aSVBfQ0RIX1ZFUlNJT05fTUFERV9CWV9PRlMgPSA0LAorQEAgLTQxOTksNiArNDI3NCwzMSBAQCBlbnVtIHsKKyAgIE1aX1pJUF9FQ0RIX0NESVJfU0laRV9PRlMgPSAxMiwKKyAgIE1aX1pJUF9FQ0RIX0NESVJfT0ZTX09GUyA9IDE2LAorICAgTVpfWklQX0VDREhfQ09NTUVOVF9TSVpFX09GUyA9IDIwLAorKworKyAgLyogWklQNjQgRW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5IGxvY2F0b3Igb2Zmc2V0cyAqLworKyAgTVpfWklQNjRfRUNETF9TSUdfT0ZTID0gMCwgICAgICAgICAgICAgICAgICAgIC8qIDQgYnl0ZXMgKi8KKysgIE1aX1pJUDY0X0VDRExfTlVNX0RJU0tfQ0RJUl9PRlMgPSA0LCAgICAgICAgICAvKiA0IGJ5dGVzICovCisrICBNWl9aSVA2NF9FQ0RMX1JFTF9PRlNfVE9fWklQNjRfRUNEUl9PRlMgPSA4LCAgLyogOCBieXRlcyAqLworKyAgTVpfWklQNjRfRUNETF9UT1RBTF9OVU1CRVJfT0ZfRElTS1NfT0ZTID0gMTYsIC8qIDQgYnl0ZXMgKi8KKysKKysgIC8qIFpJUDY0IEVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSBoZWFkZXIgb2Zmc2V0cyAqLworKyAgTVpfWklQNjRfRUNESF9TSUdfT0ZTID0gMCwgICAgICAgICAgICAgICAgICAgICAgIC8qIDQgYnl0ZXMgKi8KKysgIE1aX1pJUDY0X0VDREhfU0laRV9PRl9SRUNPUkRfT0ZTID0gNCwgICAgICAgICAgICAvKiA4IGJ5dGVzICovCisrICBNWl9aSVA2NF9FQ0RIX1ZFUlNJT05fTUFERV9CWV9PRlMgPSAxMiwgICAgICAgICAgLyogMiBieXRlcyAqLworKyAgTVpfWklQNjRfRUNESF9WRVJTSU9OX05FRURFRF9PRlMgPSAxNCwgICAgICAgICAgIC8qIDIgYnl0ZXMgKi8KKysgIE1aX1pJUDY0X0VDREhfTlVNX1RISVNfRElTS19PRlMgPSAxNiwgICAgICAgICAgICAvKiA0IGJ5dGVzICovCisrICBNWl9aSVA2NF9FQ0RIX05VTV9ESVNLX0NESVJfT0ZTID0gMjAsICAgICAgICAgICAgLyogNCBieXRlcyAqLworKyAgTVpfWklQNjRfRUNESF9DRElSX05VTV9FTlRSSUVTX09OX0RJU0tfT0ZTID0gMjQsIC8qIDggYnl0ZXMgKi8KKysgIE1aX1pJUDY0X0VDREhfQ0RJUl9UT1RBTF9FTlRSSUVTX09GUyA9IDMyLCAgICAgICAvKiA4IGJ5dGVzICovCisrICBNWl9aSVA2NF9FQ0RIX0NESVJfU0laRV9PRlMgPSA0MCwgICAgICAgICAgICAgICAgLyogOCBieXRlcyAqLworKyAgTVpfWklQNjRfRUNESF9DRElSX09GU19PRlMgPSA0OCwgICAgICAgICAgICAgICAgIC8qIDggYnl0ZXMgKi8KKysgIE1aX1pJUF9WRVJTSU9OX01BREVfQllfRE9TX0ZJTEVTWVNURU1fSUQgPSAwLAorKyAgTVpfWklQX0RPU19ESVJfQVRUUklCVVRFX0JJVEZMQUcgPSAweDEwLAorKyAgTVpfWklQX0dFTkVSQUxfUFVSUE9TRV9CSVRfRkxBR19JU19FTkNSWVBURUQgPSAxLAorKyAgTVpfWklQX0dFTkVSQUxfUFVSUE9TRV9CSVRfRkxBR19DT01QUkVTU0VEX1BBVENIX0ZMQUcgPSAzMiwKKysgIE1aX1pJUF9HRU5FUkFMX1BVUlBPU0VfQklUX0ZMQUdfVVNFU19TVFJPTkdfRU5DUllQVElPTiA9IDY0LAorKyAgTVpfWklQX0dFTkVSQUxfUFVSUE9TRV9CSVRfRkxBR19MT0NBTF9ESVJfSVNfTUFTS0VEID0gODE5MiwKKysgIE1aX1pJUF9HRU5FUkFMX1BVUlBPU0VfQklUX0ZMQUdfVVRGOCA9IDEgPDwgMTEKKyB9OworIAorIHR5cGVkZWYgc3RydWN0IHsKK0BAIC00MjExLDcgKzQzMTEsMjQgQEAgc3RydWN0IG16X3ppcF9pbnRlcm5hbF9zdGF0ZV90YWcgeworICAgbXpfemlwX2FycmF5IG1fY2VudHJhbF9kaXI7CisgICBtel96aXBfYXJyYXkgbV9jZW50cmFsX2Rpcl9vZmZzZXRzOworICAgbXpfemlwX2FycmF5IG1fc29ydGVkX2NlbnRyYWxfZGlyX29mZnNldHM7CisrCisrICAvKiBUaGUgZmxhZ3MgcGFzc2VkIGluIHdoZW4gdGhlIGFyY2hpdmUgaXMgaW5pdGlhbGx5IG9wZW5lZC4gKi8KKysgIHVpbnQzMl90IG1faW5pdF9mbGFnczsKKysKKysgIC8qIE1aX1RSVUUgaWYgdGhlIGFyY2hpdmUgaGFzIGEgemlwNjQgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5IGhlYWRlcnMsIGV0Yy4KKysgICAqLworKyAgbXpfYm9vbCBtX3ppcDY0OworKworKyAgLyogTVpfVFJVRSBpZiB3ZSBmb3VuZCB6aXA2NCBleHRlbmRlZCBpbmZvIGluIHRoZSBjZW50cmFsIGRpcmVjdG9yeSAobV96aXA2NAorKyAgICogd2lsbCBhbHNvIGJlIHNsYW1tZWQgdG8gdHJ1ZSB0b28sIGV2ZW4gaWYgd2UgZGlkbid0IGZpbmQgYSB6aXA2NCBlbmQgb2YKKysgICAqIGNlbnRyYWwgZGlyIGhlYWRlciwgZXRjLikgKi8KKysgIG16X2Jvb2wgbV96aXA2NF9oYXNfZXh0ZW5kZWRfaW5mb19maWVsZHM7CisrCisrICAvKiBUaGVzZSBmaWVsZHMgYXJlIHVzZWQgYnkgdGhlIGZpbGUsIEZJTEUsIG1lbW9yeSwgYW5kIG1lbW9yeS9oZWFwIHJlYWQvd3JpdGUKKysgICAqIGhlbHBlcnMuICovCisgICBNWl9GSUxFICptX3BGaWxlOworKyAgbXpfdWludDY0IG1fZmlsZV9hcmNoaXZlX3N0YXJ0X29mczsKKysKKyAgIHZvaWQgKm1fcE1lbTsKKyAgIHNpemVfdCBtX21lbV9zaXplOworICAgc2l6ZV90IG1fbWVtX2NhcGFjaXR5OworQEAgLTQzNjMsNiArNDQ4MCwxMyBAQCBzdGF0aWMgbXpfYm9vbCBtel96aXBfc2V0X2ZpbGVfdGltZXMoY29uc3QgY2hhciAqcEZpbGVuYW1lLCB0aW1lX3QgYWNjZXNzX3RpbWUsCisgI2VuZGlmIC8qICNpZm5kZWYgTUlOSVpfTk9fU1RESU8gKi8KKyAjZW5kaWYgLyogI2lmbmRlZiBNSU5JWl9OT19USU1FICovCisgCisrc3RhdGljIE1aX0ZPUkNFSU5MSU5FIG16X2Jvb2wgbXpfemlwX3NldF9lcnJvcihtel96aXBfYXJjaGl2ZSAqcFppcCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG16X3ppcF9lcnJvciBlcnJfbnVtKSB7CisrICBpZiAocFppcCkKKysgICAgcFppcC0+bV9sYXN0X2Vycm9yID0gZXJyX251bTsKKysgIHJldHVybiBNWl9GQUxTRTsKKyt9CisrCisgc3RhdGljIG16X2Jvb2wgbXpfemlwX3JlYWRlcl9pbml0X2ludGVybmFsKG16X3ppcF9hcmNoaXZlICpwWmlwLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtel91aW50MzIgZmxhZ3MpIHsKKyAgICh2b2lkKWZsYWdzOworQEAgLTQ0ODAsMTI3ICs0NjA0LDM0NiBAQCBtel96aXBfcmVhZGVyX3NvcnRfY2VudHJhbF9kaXJfb2Zmc2V0c19ieV9maWxlbmFtZShtel96aXBfYXJjaGl2ZSAqcFppcCkgeworICAgfQorIH0KKyAKKy1zdGF0aWMgbXpfYm9vbCBtel96aXBfcmVhZGVyX3JlYWRfY2VudHJhbF9kaXIobXpfemlwX2FyY2hpdmUgKnBaaXAsCistICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG16X3VpbnQzMiBmbGFncykgeworLSAgbXpfdWludCBjZGlyX3NpemUsIG51bV90aGlzX2Rpc2ssIGNkaXJfZGlza19pbmRleDsKKy0gIG16X3VpbnQ2NCBjZGlyX29mczsKKytzdGF0aWMgbXpfYm9vbCBtel96aXBfcmVhZGVyX2xvY2F0ZV9oZWFkZXJfc2lnKG16X3ppcF9hcmNoaXZlICpwWmlwLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXpfdWludDMyIHJlY29yZF9zaWcsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtel91aW50MzIgcmVjb3JkX3NpemUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtel9pbnQ2NCAqcE9mcykgeworICAgbXpfaW50NjQgY3VyX2ZpbGVfb2ZzOworLSAgY29uc3QgbXpfdWludDggKnA7CisgICBtel91aW50MzIgYnVmX3UzMls0MDk2IC8gc2l6ZW9mKG16X3VpbnQzMildOworICAgbXpfdWludDggKnBCdWYgPSAobXpfdWludDggKilidWZfdTMyOworLSAgbXpfYm9vbCBzb3J0X2NlbnRyYWxfZGlyID0KKy0gICAgICAoKGZsYWdzICYgTVpfWklQX0ZMQUdfRE9fTk9UX1NPUlRfQ0VOVFJBTF9ESVJFQ1RPUlkpID09IDApOworLSAgLy8gQmFzaWMgc2FuaXR5IGNoZWNrcyAtIHJlamVjdCBmaWxlcyB3aGljaCBhcmUgdG9vIHNtYWxsLCBhbmQgY2hlY2sgdGhlIGZpcnN0CistICAvLyA0IGJ5dGVzIG9mIHRoZSBmaWxlIHRvIG1ha2Ugc3VyZSBhIGxvY2FsIGhlYWRlciBpcyB0aGVyZS4KKy0gIGlmIChwWmlwLT5tX2FyY2hpdmVfc2l6ZSA8IE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpCisrCisrICAvKiBCYXNpYyBzYW5pdHkgY2hlY2tzIC0gcmVqZWN0IGZpbGVzIHdoaWNoIGFyZSB0b28gc21hbGwgKi8KKysgIGlmIChwWmlwLT5tX2FyY2hpdmVfc2l6ZSA8IHJlY29yZF9zaXplKQorICAgICByZXR1cm4gTVpfRkFMU0U7CistICAvLyBGaW5kIHRoZSBlbmQgb2YgY2VudHJhbCBkaXJlY3RvcnkgcmVjb3JkIGJ5IHNjYW5uaW5nIHRoZSBmaWxlIGZyb20gdGhlIGVuZAorLSAgLy8gdG93YXJkcyB0aGUgYmVnaW5uaW5nLgorKworKyAgLyogRmluZCB0aGUgcmVjb3JkIGJ5IHNjYW5uaW5nIHRoZSBmaWxlIGZyb20gdGhlIGVuZCB0b3dhcmRzIHRoZSBiZWdpbm5pbmcuICovCisgICBjdXJfZmlsZV9vZnMgPQorICAgICAgIE1aX01BWCgobXpfaW50NjQpcFppcC0+bV9hcmNoaXZlX3NpemUgLSAobXpfaW50NjQpc2l6ZW9mKGJ1Zl91MzIpLCAwKTsKKyAgIGZvciAoOzspIHsKKyAgICAgaW50IGksCisgICAgICAgICBuID0gKGludClNWl9NSU4oc2l6ZW9mKGJ1Zl91MzIpLCBwWmlwLT5tX2FyY2hpdmVfc2l6ZSAtIGN1cl9maWxlX29mcyk7CisrCisgICAgIGlmIChwWmlwLT5tX3BSZWFkKHBaaXAtPm1fcElPX29wYXF1ZSwgY3VyX2ZpbGVfb2ZzLCBwQnVmLCBuKSAhPSAobXpfdWludCluKQorICAgICAgIHJldHVybiBNWl9GQUxTRTsKKy0gICAgZm9yIChpID0gbiAtIDQ7IGkgPj0gMDsgLS1pKQorLSAgICAgIGlmIChNWl9SRUFEX0xFMzIocEJ1ZiArIGkpID09IE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJRykKKy0gICAgICAgIGJyZWFrOworKworKyAgICBmb3IgKGkgPSBuIC0gNDsgaSA+PSAwOyAtLWkpIHsKKysgICAgICBtel91aW50IHMgPSBNWl9SRUFEX0xFMzIocEJ1ZiArIGkpOworKyAgICAgIGlmIChzID09IHJlY29yZF9zaWcpIHsKKysgICAgICAgIGlmICgocFppcC0+bV9hcmNoaXZlX3NpemUgLSAoY3VyX2ZpbGVfb2ZzICsgaSkpID49IHJlY29yZF9zaXplKQorKyAgICAgICAgICBicmVhazsKKysgICAgICB9CisrICAgIH0KKysKKyAgICAgaWYgKGkgPj0gMCkgeworICAgICAgIGN1cl9maWxlX29mcyArPSBpOworICAgICAgIGJyZWFrOworICAgICB9CisrCisrICAgIC8qIEdpdmUgdXAgaWYgd2UndmUgc2VhcmNoZWQgdGhlIGVudGlyZSBmaWxlLCBvciB3ZSd2ZSBnb25lIGJhY2sgInRvbyBmYXIiCisrICAgICAqICh+NjRrYikgKi8KKyAgICAgaWYgKCghY3VyX2ZpbGVfb2ZzKSB8fCAoKHBaaXAtPm1fYXJjaGl2ZV9zaXplIC0gY3VyX2ZpbGVfb2ZzKSA+PQorLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAoMHhGRkZGICsgTVpfWklQX0VORF9PRl9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSkpKQorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAoTVpfVUlOVDE2X01BWCArIHJlY29yZF9zaXplKSkpCisgICAgICAgcmV0dXJuIE1aX0ZBTFNFOworKworICAgICBjdXJfZmlsZV9vZnMgPSBNWl9NQVgoY3VyX2ZpbGVfb2ZzIC0gKHNpemVvZihidWZfdTMyKSAtIDMpLCAwKTsKKyAgIH0KKy0gIC8vIFJlYWQgYW5kIHZlcmlmeSB0aGUgZW5kIG9mIGNlbnRyYWwgZGlyZWN0b3J5IHJlY29yZC4KKysKKysgICpwT2ZzID0gY3VyX2ZpbGVfb2ZzOworKyAgcmV0dXJuIE1aX1RSVUU7CisrfQorKworK3N0YXRpYyBtel9ib29sIG16X3ppcF9yZWFkZXJfcmVhZF9jZW50cmFsX2Rpcihtel96aXBfYXJjaGl2ZSAqcFppcCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXpfdWludCBmbGFncykgeworKyAgbXpfdWludCBjZGlyX3NpemUgPSAwLCBjZGlyX2VudHJpZXNfb25fdGhpc19kaXNrID0gMCwgbnVtX3RoaXNfZGlzayA9IDAsCisrICAgICAgICAgIGNkaXJfZGlza19pbmRleCA9IDA7CisrICBtel91aW50NjQgY2Rpcl9vZnMgPSAwOworKyAgbXpfaW50NjQgY3VyX2ZpbGVfb2ZzID0gMDsKKysgIGNvbnN0IG16X3VpbnQ4ICpwOworKworKyAgbXpfdWludDMyIGJ1Zl91MzJbNDA5NiAvIHNpemVvZihtel91aW50MzIpXTsKKysgIG16X3VpbnQ4ICpwQnVmID0gKG16X3VpbnQ4ICopYnVmX3UzMjsKKysgIG16X2Jvb2wgc29ydF9jZW50cmFsX2RpciA9CisrICAgICAgKChmbGFncyAmIE1aX1pJUF9GTEFHX0RPX05PVF9TT1JUX0NFTlRSQUxfRElSRUNUT1JZKSA9PSAwKTsKKysgIG16X3VpbnQzMiB6aXA2NF9lbmRfb2ZfY2VudHJhbF9kaXJfbG9jYXRvcl91MzIKKysgICAgICBbKE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9MT0NBVE9SX1NJWkUgKyBzaXplb2YobXpfdWludDMyKSAtIDEpIC8KKysgICAgICAgc2l6ZW9mKG16X3VpbnQzMildOworKyAgbXpfdWludDggKnBaaXA2NF9sb2NhdG9yID0gKG16X3VpbnQ4ICopemlwNjRfZW5kX29mX2NlbnRyYWxfZGlyX2xvY2F0b3JfdTMyOworKworKyAgbXpfdWludDMyIHppcDY0X2VuZF9vZl9jZW50cmFsX2Rpcl9oZWFkZXJfdTMyCisrICAgICAgWyhNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUgKyBzaXplb2YobXpfdWludDMyKSAtIDEpIC8KKysgICAgICAgc2l6ZW9mKG16X3VpbnQzMildOworKyAgbXpfdWludDggKnBaaXA2NF9lbmRfb2ZfY2VudHJhbF9kaXIgPQorKyAgICAgIChtel91aW50OCAqKXppcDY0X2VuZF9vZl9jZW50cmFsX2Rpcl9oZWFkZXJfdTMyOworKworKyAgbXpfdWludDY0IHppcDY0X2VuZF9vZl9jZW50cmFsX2Rpcl9vZnMgPSAwOworKworKyAgLyogQmFzaWMgc2FuaXR5IGNoZWNrcyAtIHJlamVjdCBmaWxlcyB3aGljaCBhcmUgdG9vIHNtYWxsLCBhbmQgY2hlY2sgdGhlIGZpcnN0CisrICAgKiA0IGJ5dGVzIG9mIHRoZSBmaWxlIHRvIG1ha2Ugc3VyZSBhIGxvY2FsIGhlYWRlciBpcyB0aGVyZS4gKi8KKysgIGlmIChwWmlwLT5tX2FyY2hpdmVfc2l6ZSA8IE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpCisrICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9OT1RfQU5fQVJDSElWRSk7CisrCisrICBpZiAoIW16X3ppcF9yZWFkZXJfbG9jYXRlX2hlYWRlcl9zaWcoCisrICAgICAgICAgIHBaaXAsIE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJRywKKysgICAgICAgICAgTVpfWklQX0VORF9PRl9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSwgJmN1cl9maWxlX29mcykpCisrICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9GQUlMRURfRklORElOR19DRU5UUkFMX0RJUik7CisrCisrICAvKiBSZWFkIGFuZCB2ZXJpZnkgdGhlIGVuZCBvZiBjZW50cmFsIGRpcmVjdG9yeSByZWNvcmQuICovCisgICBpZiAocFppcC0+bV9wUmVhZChwWmlwLT5tX3BJT19vcGFxdWUsIGN1cl9maWxlX29mcywgcEJ1ZiwKKyAgICAgICAgICAgICAgICAgICAgIE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpICE9CisgICAgICAgTVpfWklQX0VORF9PRl9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSkKKy0gICAgcmV0dXJuIE1aX0ZBTFNFOworLSAgaWYgKChNWl9SRUFEX0xFMzIocEJ1ZiArIE1aX1pJUF9FQ0RIX1NJR19PRlMpICE9CistICAgICAgIE1aX1pJUF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJRykgfHwKKy0gICAgICAoKHBaaXAtPm1fdG90YWxfZmlsZXMgPQorLSAgICAgICAgICAgIE1aX1JFQURfTEUxNihwQnVmICsgTVpfWklQX0VDREhfQ0RJUl9UT1RBTF9FTlRSSUVTX09GUykpICE9CistICAgICAgIE1aX1JFQURfTEUxNihwQnVmICsgTVpfWklQX0VDREhfQ0RJUl9OVU1fRU5UUklFU19PTl9ESVNLX09GUykpKQorLSAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9GSUxFX1JFQURfRkFJTEVEKTsKKysKKysgIGlmIChNWl9SRUFEX0xFMzIocEJ1ZiArIE1aX1pJUF9FQ0RIX1NJR19PRlMpICE9CisrICAgICAgTVpfWklQX0VORF9PRl9DRU5UUkFMX0RJUl9IRUFERVJfU0lHKQorKyAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfTk9UX0FOX0FSQ0hJVkUpOworKworKyAgaWYgKGN1cl9maWxlX29mcyA+PSAoTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0xPQ0FUT1JfU0laRSArCisrICAgICAgICAgICAgICAgICAgICAgICBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpKSB7CisrICAgIGlmIChwWmlwLT5tX3BSZWFkKHBaaXAtPm1fcElPX29wYXF1ZSwKKysgICAgICAgICAgICAgICAgICAgICAgY3VyX2ZpbGVfb2ZzIC0gTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0xPQ0FUT1JfU0laRSwKKysgICAgICAgICAgICAgICAgICAgICAgcFppcDY0X2xvY2F0b3IsCisrICAgICAgICAgICAgICAgICAgICAgIE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9MT0NBVE9SX1NJWkUpID09CisrICAgICAgICBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfTE9DQVRPUl9TSVpFKSB7CisrICAgICAgaWYgKE1aX1JFQURfTEUzMihwWmlwNjRfbG9jYXRvciArIE1aX1pJUDY0X0VDRExfU0lHX09GUykgPT0KKysgICAgICAgICAgTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0xPQ0FUT1JfU0lHKSB7CisrICAgICAgICB6aXA2NF9lbmRfb2ZfY2VudHJhbF9kaXJfb2ZzID0gTVpfUkVBRF9MRTY0KAorKyAgICAgICAgICAgIHBaaXA2NF9sb2NhdG9yICsgTVpfWklQNjRfRUNETF9SRUxfT0ZTX1RPX1pJUDY0X0VDRFJfT0ZTKTsKKysgICAgICAgIGlmICh6aXA2NF9lbmRfb2ZfY2VudHJhbF9kaXJfb2ZzID4KKysgICAgICAgICAgICAocFppcC0+bV9hcmNoaXZlX3NpemUgLSBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpKQorKyAgICAgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfTk9UX0FOX0FSQ0hJVkUpOworKworKyAgICAgICAgaWYgKHBaaXAtPm1fcFJlYWQocFppcC0+bV9wSU9fb3BhcXVlLCB6aXA2NF9lbmRfb2ZfY2VudHJhbF9kaXJfb2ZzLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgcFppcDY0X2VuZF9vZl9jZW50cmFsX2RpciwKKysgICAgICAgICAgICAgICAgICAgICAgICAgIE1aX1pJUDY0X0VORF9PRl9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSkgPT0KKysgICAgICAgICAgICBNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpIHsKKysgICAgICAgICAgaWYgKE1aX1JFQURfTEUzMihwWmlwNjRfZW5kX29mX2NlbnRyYWxfZGlyICsgTVpfWklQNjRfRUNESF9TSUdfT0ZTKSA9PQorKyAgICAgICAgICAgICAgTVpfWklQNjRfRU5EX09GX0NFTlRSQUxfRElSX0hFQURFUl9TSUcpIHsKKysgICAgICAgICAgICBwWmlwLT5tX3BTdGF0ZS0+bV96aXA2NCA9IE1aX1RSVUU7CisrICAgICAgICAgIH0KKysgICAgICAgIH0KKysgICAgICB9CisrICAgIH0KKysgIH0KKyAKKysgIHBaaXAtPm1fdG90YWxfZmlsZXMgPSBNWl9SRUFEX0xFMTYocEJ1ZiArIE1aX1pJUF9FQ0RIX0NESVJfVE9UQUxfRU5UUklFU19PRlMpOworKyAgY2Rpcl9lbnRyaWVzX29uX3RoaXNfZGlzayA9CisrICAgICAgTVpfUkVBRF9MRTE2KHBCdWYgKyBNWl9aSVBfRUNESF9DRElSX05VTV9FTlRSSUVTX09OX0RJU0tfT0ZTKTsKKyAgIG51bV90aGlzX2Rpc2sgPSBNWl9SRUFEX0xFMTYocEJ1ZiArIE1aX1pJUF9FQ0RIX05VTV9USElTX0RJU0tfT0ZTKTsKKyAgIGNkaXJfZGlza19pbmRleCA9IE1aX1JFQURfTEUxNihwQnVmICsgTVpfWklQX0VDREhfTlVNX0RJU0tfQ0RJUl9PRlMpOworKyAgY2Rpcl9zaXplID0gTVpfUkVBRF9MRTMyKHBCdWYgKyBNWl9aSVBfRUNESF9DRElSX1NJWkVfT0ZTKTsKKysgIGNkaXJfb2ZzID0gTVpfUkVBRF9MRTMyKHBCdWYgKyBNWl9aSVBfRUNESF9DRElSX09GU19PRlMpOworKworKyAgaWYgKHBaaXAtPm1fcFN0YXRlLT5tX3ppcDY0KSB7CisrICAgIG16X3VpbnQzMiB6aXA2NF90b3RhbF9udW1fb2ZfZGlza3MgPQorKyAgICAgICAgTVpfUkVBRF9MRTMyKHBaaXA2NF9sb2NhdG9yICsgTVpfWklQNjRfRUNETF9UT1RBTF9OVU1CRVJfT0ZfRElTS1NfT0ZTKTsKKysgICAgbXpfdWludDY0IHppcDY0X2NkaXJfdG90YWxfZW50cmllcyA9IE1aX1JFQURfTEU2NCgKKysgICAgICAgIHBaaXA2NF9lbmRfb2ZfY2VudHJhbF9kaXIgKyBNWl9aSVA2NF9FQ0RIX0NESVJfVE9UQUxfRU5UUklFU19PRlMpOworKyAgICBtel91aW50NjQgemlwNjRfY2Rpcl90b3RhbF9lbnRyaWVzX29uX3RoaXNfZGlzayA9IE1aX1JFQURfTEU2NCgKKysgICAgICAgIHBaaXA2NF9lbmRfb2ZfY2VudHJhbF9kaXIgKyBNWl9aSVA2NF9FQ0RIX0NESVJfTlVNX0VOVFJJRVNfT05fRElTS19PRlMpOworKyAgICBtel91aW50NjQgemlwNjRfc2l6ZV9vZl9lbmRfb2ZfY2VudHJhbF9kaXJfcmVjb3JkID0gTVpfUkVBRF9MRTY0KAorKyAgICAgICAgcFppcDY0X2VuZF9vZl9jZW50cmFsX2RpciArIE1aX1pJUDY0X0VDREhfU0laRV9PRl9SRUNPUkRfT0ZTKTsKKysgICAgbXpfdWludDY0IHppcDY0X3NpemVfb2ZfY2VudHJhbF9kaXJlY3RvcnkgPQorKyAgICAgICAgTVpfUkVBRF9MRTY0KHBaaXA2NF9lbmRfb2ZfY2VudHJhbF9kaXIgKyBNWl9aSVA2NF9FQ0RIX0NESVJfU0laRV9PRlMpOworKworKyAgICBpZiAoemlwNjRfc2l6ZV9vZl9lbmRfb2ZfY2VudHJhbF9kaXJfcmVjb3JkIDwKKysgICAgICAgIChNWl9aSVA2NF9FTkRfT0ZfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUgLSAxMikpCisrICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0lOVkFMSURfSEVBREVSX09SX0NPUlJVUFRFRCk7CisrCisrICAgIGlmICh6aXA2NF90b3RhbF9udW1fb2ZfZGlza3MgIT0gMVUpCisrICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX1VOU1VQUE9SVEVEX01VTFRJRElTSyk7CisrCisrICAgIC8qIENoZWNrIGZvciBtaW5peidzIHByYWN0aWNhbCBsaW1pdHMgKi8KKysgICAgaWYgKHppcDY0X2NkaXJfdG90YWxfZW50cmllcyA+IE1aX1VJTlQzMl9NQVgpCisrICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX1RPT19NQU5ZX0ZJTEVTKTsKKysKKysgICAgcFppcC0+bV90b3RhbF9maWxlcyA9IChtel91aW50MzIpemlwNjRfY2Rpcl90b3RhbF9lbnRyaWVzOworKworKyAgICBpZiAoemlwNjRfY2Rpcl90b3RhbF9lbnRyaWVzX29uX3RoaXNfZGlzayA+IE1aX1VJTlQzMl9NQVgpCisrICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX1RPT19NQU5ZX0ZJTEVTKTsKKysKKysgICAgY2Rpcl9lbnRyaWVzX29uX3RoaXNfZGlzayA9CisrICAgICAgICAobXpfdWludDMyKXppcDY0X2NkaXJfdG90YWxfZW50cmllc19vbl90aGlzX2Rpc2s7CisrCisrICAgIC8qIENoZWNrIGZvciBtaW5peidzIGN1cnJlbnQgcHJhY3RpY2FsIGxpbWl0cyAoc29ycnksIHRoaXMgc2hvdWxkIGJlIGVub3VnaAorKyAgICAgKiBmb3IgbWlsbGlvbnMgb2YgZmlsZXMpICovCisrICAgIGlmICh6aXA2NF9zaXplX29mX2NlbnRyYWxfZGlyZWN0b3J5ID4gTVpfVUlOVDMyX01BWCkKKysgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfVU5TVVBQT1JURURfQ0RJUl9TSVpFKTsKKysKKysgICAgY2Rpcl9zaXplID0gKG16X3VpbnQzMil6aXA2NF9zaXplX29mX2NlbnRyYWxfZGlyZWN0b3J5OworKworKyAgICBudW1fdGhpc19kaXNrID0gTVpfUkVBRF9MRTMyKHBaaXA2NF9lbmRfb2ZfY2VudHJhbF9kaXIgKworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1aX1pJUDY0X0VDREhfTlVNX1RISVNfRElTS19PRlMpOworKworKyAgICBjZGlyX2Rpc2tfaW5kZXggPSBNWl9SRUFEX0xFMzIocFppcDY0X2VuZF9vZl9jZW50cmFsX2RpciArCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBNWl9aSVA2NF9FQ0RIX05VTV9ESVNLX0NESVJfT0ZTKTsKKysKKysgICAgY2Rpcl9vZnMgPQorKyAgICAgICAgTVpfUkVBRF9MRTY0KHBaaXA2NF9lbmRfb2ZfY2VudHJhbF9kaXIgKyBNWl9aSVA2NF9FQ0RIX0NESVJfT0ZTX09GUyk7CisrICB9CisrCisrICBpZiAocFppcC0+bV90b3RhbF9maWxlcyAhPSBjZGlyX2VudHJpZXNfb25fdGhpc19kaXNrKQorKyAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfVU5TVVBQT1JURURfTVVMVElESVNLKTsKKysKKyAgIGlmICgoKG51bV90aGlzX2Rpc2sgfCBjZGlyX2Rpc2tfaW5kZXgpICE9IDApICYmCisgICAgICAgKChudW1fdGhpc19kaXNrICE9IDEpIHx8IChjZGlyX2Rpc2tfaW5kZXggIT0gMSkpKQorLSAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9VTlNVUFBPUlRFRF9NVUxUSURJU0spOworIAorLSAgaWYgKChjZGlyX3NpemUgPSBNWl9SRUFEX0xFMzIocEJ1ZiArIE1aX1pJUF9FQ0RIX0NESVJfU0laRV9PRlMpKSA8CistICAgICAgcFppcC0+bV90b3RhbF9maWxlcyAqIE1aX1pJUF9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSkKKy0gICAgcmV0dXJuIE1aX0ZBTFNFOworKyAgaWYgKGNkaXJfc2l6ZSA8IHBaaXAtPm1fdG90YWxfZmlsZXMgKiBNWl9aSVBfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUpCisrICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9JTlZBTElEX0hFQURFUl9PUl9DT1JSVVBURUQpOworIAorLSAgY2Rpcl9vZnMgPSBNWl9SRUFEX0xFMzIocEJ1ZiArIE1aX1pJUF9FQ0RIX0NESVJfT0ZTX09GUyk7CisgICBpZiAoKGNkaXJfb2ZzICsgKG16X3VpbnQ2NCljZGlyX3NpemUpID4gcFppcC0+bV9hcmNoaXZlX3NpemUpCistICAgIHJldHVybiBNWl9GQUxTRTsKKysgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0lOVkFMSURfSEVBREVSX09SX0NPUlJVUFRFRCk7CisgCisgICBwWmlwLT5tX2NlbnRyYWxfZGlyZWN0b3J5X2ZpbGVfb2ZzID0gY2Rpcl9vZnM7CisgCisgICBpZiAocFppcC0+bV90b3RhbF9maWxlcykgeworICAgICBtel91aW50IGksIG47CistCistICAgIC8vIFJlYWQgdGhlIGVudGlyZSBjZW50cmFsIGRpcmVjdG9yeSBpbnRvIGEgaGVhcCBibG9jaywgYW5kIGFsbG9jYXRlIGFub3RoZXIKKy0gICAgLy8gaGVhcCBibG9jayB0byBob2xkIHRoZSB1bnNvcnRlZCBjZW50cmFsIGRpciBmaWxlIHJlY29yZCBvZmZzZXRzLCBhbmQKKy0gICAgLy8gYW5vdGhlciB0byBob2xkIHRoZSBzb3J0ZWQgaW5kaWNlcy4KKysgICAgLyogUmVhZCB0aGUgZW50aXJlIGNlbnRyYWwgZGlyZWN0b3J5IGludG8gYSBoZWFwIGJsb2NrLCBhbmQgYWxsb2NhdGUgYW5vdGhlcgorKyAgICAgKiBoZWFwIGJsb2NrIHRvIGhvbGQgdGhlIHVuc29ydGVkIGNlbnRyYWwgZGlyIGZpbGUgcmVjb3JkIG9mZnNldHMsIGFuZAorKyAgICAgKiBwb3NzaWJseSBhbm90aGVyIHRvIGhvbGQgdGhlIHNvcnRlZCBpbmRpY2VzLiAqLworICAgICBpZiAoKCFtel96aXBfYXJyYXlfcmVzaXplKHBaaXAsICZwWmlwLT5tX3BTdGF0ZS0+bV9jZW50cmFsX2RpciwgY2Rpcl9zaXplLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1aX0ZBTFNFKSkgfHwKKyAgICAgICAgICghbXpfemlwX2FycmF5X3Jlc2l6ZShwWmlwLCAmcFppcC0+bV9wU3RhdGUtPm1fY2VudHJhbF9kaXJfb2Zmc2V0cywKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwWmlwLT5tX3RvdGFsX2ZpbGVzLCBNWl9GQUxTRSkpKQorLSAgICAgIHJldHVybiBNWl9GQUxTRTsKKysgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfQUxMT0NfRkFJTEVEKTsKKyAKKyAgICAgaWYgKHNvcnRfY2VudHJhbF9kaXIpIHsKKyAgICAgICBpZiAoIW16X3ppcF9hcnJheV9yZXNpemUocFppcCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJnBaaXAtPm1fcFN0YXRlLT5tX3NvcnRlZF9jZW50cmFsX2Rpcl9vZmZzZXRzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwWmlwLT5tX3RvdGFsX2ZpbGVzLCBNWl9GQUxTRSkpCistICAgICAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfQUxMT0NfRkFJTEVEKTsKKyAgICAgfQorIAorICAgICBpZiAocFppcC0+bV9wUmVhZChwWmlwLT5tX3BJT19vcGFxdWUsIGNkaXJfb2ZzLAorICAgICAgICAgICAgICAgICAgICAgICBwWmlwLT5tX3BTdGF0ZS0+bV9jZW50cmFsX2Rpci5tX3AsCisgICAgICAgICAgICAgICAgICAgICAgIGNkaXJfc2l6ZSkgIT0gY2Rpcl9zaXplKQorLSAgICAgIHJldHVybiBNWl9GQUxTRTsKKysgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfRklMRV9SRUFEX0ZBSUxFRCk7CisgCistICAgIC8vIE5vdyBjcmVhdGUgYW4gaW5kZXggaW50byB0aGUgY2VudHJhbCBkaXJlY3RvcnkgZmlsZSByZWNvcmRzLCBkbyBzb21lCistICAgIC8vIGJhc2ljIHNhbml0eSBjaGVja2luZyBvbiBlYWNoIHJlY29yZCwgYW5kIGNoZWNrIGZvciB6aXA2NCBlbnRyaWVzICh3aGljaAorLSAgICAvLyBhcmUgbm90IHlldCBzdXBwb3J0ZWQpLgorKyAgICAvKiBOb3cgY3JlYXRlIGFuIGluZGV4IGludG8gdGhlIGNlbnRyYWwgZGlyZWN0b3J5IGZpbGUgcmVjb3JkcywgZG8gc29tZQorKyAgICAgKiBiYXNpYyBzYW5pdHkgY2hlY2tpbmcgb24gZWFjaCByZWNvcmQgKi8KKyAgICAgcCA9IChjb25zdCBtel91aW50OCAqKXBaaXAtPm1fcFN0YXRlLT5tX2NlbnRyYWxfZGlyLm1fcDsKKyAgICAgZm9yIChuID0gY2Rpcl9zaXplLCBpID0gMDsgaSA8IHBaaXAtPm1fdG90YWxfZmlsZXM7ICsraSkgeworLSAgICAgIG16X3VpbnQgdG90YWxfaGVhZGVyX3NpemUsIGNvbXBfc2l6ZSwgZGVjb21wX3NpemUsIGRpc2tfaW5kZXg7CisrICAgICAgbXpfdWludCB0b3RhbF9oZWFkZXJfc2l6ZSwgZGlza19pbmRleCwgYml0X2ZsYWdzLCBmaWxlbmFtZV9zaXplLAorKyAgICAgICAgICBleHRfZGF0YV9zaXplOworKyAgICAgIG16X3VpbnQ2NCBjb21wX3NpemUsIGRlY29tcF9zaXplLCBsb2NhbF9oZWFkZXJfb2ZzOworKworICAgICAgIGlmICgobiA8IE1aX1pJUF9DRU5UUkFMX0RJUl9IRUFERVJfU0laRSkgfHwKKyAgICAgICAgICAgKE1aX1JFQURfTEUzMihwKSAhPSBNWl9aSVBfQ0VOVFJBTF9ESVJfSEVBREVSX1NJRykpCistICAgICAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfSU5WQUxJRF9IRUFERVJfT1JfQ09SUlVQVEVEKTsKKysKKyAgICAgICBNWl9aSVBfQVJSQVlfRUxFTUVOVCgmcFppcC0+bV9wU3RhdGUtPm1fY2VudHJhbF9kaXJfb2Zmc2V0cywgbXpfdWludDMyLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGkpID0KKyAgICAgICAgICAgKG16X3VpbnQzMikocCAtIChjb25zdCBtel91aW50OCAqKXBaaXAtPm1fcFN0YXRlLT5tX2NlbnRyYWxfZGlyLm1fcCk7CisrCisgICAgICAgaWYgKHNvcnRfY2VudHJhbF9kaXIpCisgICAgICAgICBNWl9aSVBfQVJSQVlfRUxFTUVOVCgmcFppcC0+bV9wU3RhdGUtPm1fc29ydGVkX2NlbnRyYWxfZGlyX29mZnNldHMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBtel91aW50MzIsIGkpID0gaTsKKysKKyAgICAgICBjb21wX3NpemUgPSBNWl9SRUFEX0xFMzIocCArIE1aX1pJUF9DREhfQ09NUFJFU1NFRF9TSVpFX09GUyk7CisgICAgICAgZGVjb21wX3NpemUgPSBNWl9SRUFEX0xFMzIocCArIE1aX1pJUF9DREhfREVDT01QUkVTU0VEX1NJWkVfT0ZTKTsKKy0gICAgICBpZiAoKCghTVpfUkVBRF9MRTMyKHAgKyBNWl9aSVBfQ0RIX01FVEhPRF9PRlMpKSAmJgorLSAgICAgICAgICAgKGRlY29tcF9zaXplICE9IGNvbXBfc2l6ZSkpIHx8CistICAgICAgICAgIChkZWNvbXBfc2l6ZSAmJiAhY29tcF9zaXplKSB8fCAoZGVjb21wX3NpemUgPT0gMHhGRkZGRkZGRikgfHwKKy0gICAgICAgICAgKGNvbXBfc2l6ZSA9PSAweEZGRkZGRkZGKSkKKy0gICAgICAgIHJldHVybiBNWl9GQUxTRTsKKysgICAgICBsb2NhbF9oZWFkZXJfb2ZzID0gTVpfUkVBRF9MRTMyKHAgKyBNWl9aSVBfQ0RIX0xPQ0FMX0hFQURFUl9PRlMpOworKyAgICAgIGZpbGVuYW1lX3NpemUgPSBNWl9SRUFEX0xFMTYocCArIE1aX1pJUF9DREhfRklMRU5BTUVfTEVOX09GUyk7CisrICAgICAgZXh0X2RhdGFfc2l6ZSA9IE1aX1JFQURfTEUxNihwICsgTVpfWklQX0NESF9FWFRSQV9MRU5fT0ZTKTsKKysKKysgICAgICBpZiAoKCFwWmlwLT5tX3BTdGF0ZS0+bV96aXA2NF9oYXNfZXh0ZW5kZWRfaW5mb19maWVsZHMpICYmCisrICAgICAgICAgIChleHRfZGF0YV9zaXplKSAmJgorKyAgICAgICAgICAoTVpfTUFYKE1aX01BWChjb21wX3NpemUsIGRlY29tcF9zaXplKSwgbG9jYWxfaGVhZGVyX29mcykgPT0KKysgICAgICAgICAgIE1aX1VJTlQzMl9NQVgpKSB7CisrICAgICAgICAvKiBBdHRlbXB0IHRvIGZpbmQgemlwNjQgZXh0ZW5kZWQgaW5mb3JtYXRpb24gZmllbGQgaW4gdGhlIGVudHJ5J3MgZXh0cmEKKysgICAgICAgICAqIGRhdGEgKi8KKysgICAgICAgIG16X3VpbnQzMiBleHRyYV9zaXplX3JlbWFpbmluZyA9IGV4dF9kYXRhX3NpemU7CisrCisrICAgICAgICBpZiAoZXh0cmFfc2l6ZV9yZW1haW5pbmcpIHsKKysgICAgICAgICAgY29uc3QgbXpfdWludDggKnBFeHRyYV9kYXRhOworKyAgICAgICAgICB2b2lkICpidWYgPSBOVUxMOworKworKyAgICAgICAgICBpZiAoTVpfWklQX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFICsgZmlsZW5hbWVfc2l6ZSArIGV4dF9kYXRhX3NpemUgPgorKyAgICAgICAgICAgICAgbikgeworKyAgICAgICAgICAgIGJ1ZiA9IE1aX01BTExPQyhleHRfZGF0YV9zaXplKTsKKysgICAgICAgICAgICBpZiAoYnVmID09IE5VTEwpCisrICAgICAgICAgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfQUxMT0NfRkFJTEVEKTsKKysKKysgICAgICAgICAgICBpZiAocFppcC0+bV9wUmVhZChwWmlwLT5tX3BJT19vcGFxdWUsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY2Rpcl9vZnMgKyBNWl9aSVBfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUgKworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZV9zaXplLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGJ1ZiwgZXh0X2RhdGFfc2l6ZSkgIT0gZXh0X2RhdGFfc2l6ZSkgeworKyAgICAgICAgICAgICAgTVpfRlJFRShidWYpOworKyAgICAgICAgICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0ZJTEVfUkVBRF9GQUlMRUQpOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBwRXh0cmFfZGF0YSA9IChtel91aW50OCAqKWJ1ZjsKKysgICAgICAgICAgfSBlbHNlIHsKKysgICAgICAgICAgICBwRXh0cmFfZGF0YSA9IHAgKyBNWl9aSVBfQ0VOVFJBTF9ESVJfSEVBREVSX1NJWkUgKyBmaWxlbmFtZV9zaXplOworKyAgICAgICAgICB9CisrCisrICAgICAgICAgIGRvIHsKKysgICAgICAgICAgICBtel91aW50MzIgZmllbGRfaWQ7CisrICAgICAgICAgICAgbXpfdWludDMyIGZpZWxkX2RhdGFfc2l6ZTsKKysKKysgICAgICAgICAgICBpZiAoZXh0cmFfc2l6ZV9yZW1haW5pbmcgPCAoc2l6ZW9mKG16X3VpbnQxNikgKiAyKSkgeworKyAgICAgICAgICAgICAgTVpfRlJFRShidWYpOworKyAgICAgICAgICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0lOVkFMSURfSEVBREVSX09SX0NPUlJVUFRFRCk7CisrICAgICAgICAgICAgfQorKworKyAgICAgICAgICAgIGZpZWxkX2lkID0gTVpfUkVBRF9MRTE2KHBFeHRyYV9kYXRhKTsKKysgICAgICAgICAgICBmaWVsZF9kYXRhX3NpemUgPSBNWl9SRUFEX0xFMTYocEV4dHJhX2RhdGEgKyBzaXplb2YobXpfdWludDE2KSk7CisrCisrICAgICAgICAgICAgaWYgKChmaWVsZF9kYXRhX3NpemUgKyBzaXplb2YobXpfdWludDE2KSAqIDIpID4KKysgICAgICAgICAgICAgICAgZXh0cmFfc2l6ZV9yZW1haW5pbmcpIHsKKysgICAgICAgICAgICAgIE1aX0ZSRUUoYnVmKTsKKysgICAgICAgICAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9JTlZBTElEX0hFQURFUl9PUl9DT1JSVVBURUQpOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBpZiAoZmllbGRfaWQgPT0gTVpfWklQNjRfRVhURU5ERURfSU5GT1JNQVRJT05fRklFTERfSEVBREVSX0lEKSB7CisrICAgICAgICAgICAgICAvKiBPaywgdGhlIGFyY2hpdmUgZGlkbid0IGhhdmUgYW55IHppcDY0IGhlYWRlcnMgYnV0IGl0IHVzZXMgYQorKyAgICAgICAgICAgICAgICogemlwNjQgZXh0ZW5kZWQgaW5mb3JtYXRpb24gZmllbGQgc28gbWFyayBpdCBhcyB6aXA2NCBhbnl3YXkKKysgICAgICAgICAgICAgICAqICh0aGlzIGNhbiBvY2N1ciB3aXRoIGluZm96aXAncyB6aXAgdXRpbCB3aGVuIGl0IHJlYWRzCisrICAgICAgICAgICAgICAgKiBjb21wcmVzc2VzIGZpbGVzIGZyb20gc3RkaW4pLiAqLworKyAgICAgICAgICAgICAgcFppcC0+bV9wU3RhdGUtPm1femlwNjQgPSBNWl9UUlVFOworKyAgICAgICAgICAgICAgcFppcC0+bV9wU3RhdGUtPm1femlwNjRfaGFzX2V4dGVuZGVkX2luZm9fZmllbGRzID0gTVpfVFJVRTsKKysgICAgICAgICAgICAgIGJyZWFrOworKyAgICAgICAgICAgIH0KKysKKysgICAgICAgICAgICBwRXh0cmFfZGF0YSArPSBzaXplb2YobXpfdWludDE2KSAqIDIgKyBmaWVsZF9kYXRhX3NpemU7CisrICAgICAgICAgICAgZXh0cmFfc2l6ZV9yZW1haW5pbmcgPQorKyAgICAgICAgICAgICAgICBleHRyYV9zaXplX3JlbWFpbmluZyAtIHNpemVvZihtel91aW50MTYpICogMiAtIGZpZWxkX2RhdGFfc2l6ZTsKKysgICAgICAgICAgfSB3aGlsZSAoZXh0cmFfc2l6ZV9yZW1haW5pbmcpOworKworKyAgICAgICAgICBNWl9GUkVFKGJ1Zik7CisrICAgICAgICB9CisrICAgICAgfQorKworKyAgICAgIC8qIEkndmUgc2VlbiBhcmNoaXZlcyB0aGF0IGFyZW4ndCBtYXJrZWQgYXMgemlwNjQgdGhhdCB1c2VzIHppcDY0IGV4dAorKyAgICAgICAqIGRhdGEsIGFyZ2ggKi8KKysgICAgICBpZiAoKGNvbXBfc2l6ZSAhPSBNWl9VSU5UMzJfTUFYKSAmJiAoZGVjb21wX3NpemUgIT0gTVpfVUlOVDMyX01BWCkpIHsKKysgICAgICAgIGlmICgoKCFNWl9SRUFEX0xFMzIocCArIE1aX1pJUF9DREhfTUVUSE9EX09GUykpICYmCisrICAgICAgICAgICAgIChkZWNvbXBfc2l6ZSAhPSBjb21wX3NpemUpKSB8fAorKyAgICAgICAgICAgIChkZWNvbXBfc2l6ZSAmJiAhY29tcF9zaXplKSkKKysgICAgICAgICAgcmV0dXJuIG16X3ppcF9zZXRfZXJyb3IocFppcCwgTVpfWklQX0lOVkFMSURfSEVBREVSX09SX0NPUlJVUFRFRCk7CisrICAgICAgfQorKworICAgICAgIGRpc2tfaW5kZXggPSBNWl9SRUFEX0xFMTYocCArIE1aX1pJUF9DREhfRElTS19TVEFSVF9PRlMpOworLSAgICAgIGlmICgoZGlza19pbmRleCAhPSBudW1fdGhpc19kaXNrKSAmJiAoZGlza19pbmRleCAhPSAxKSkKKy0gICAgICAgIHJldHVybiBNWl9GQUxTRTsKKy0gICAgICBpZiAoKChtel91aW50NjQpTVpfUkVBRF9MRTMyKHAgKyBNWl9aSVBfQ0RIX0xPQ0FMX0hFQURFUl9PRlMpICsKKy0gICAgICAgICAgIE1aX1pJUF9MT0NBTF9ESVJfSEVBREVSX1NJWkUgKyBjb21wX3NpemUpID4gcFppcC0+bV9hcmNoaXZlX3NpemUpCistICAgICAgICByZXR1cm4gTVpfRkFMU0U7CisrICAgICAgaWYgKChkaXNrX2luZGV4ID09IE1aX1VJTlQxNl9NQVgpIHx8CisrICAgICAgICAgICgoZGlza19pbmRleCAhPSBudW1fdGhpc19kaXNrKSAmJiAoZGlza19pbmRleCAhPSAxKSkpCisrICAgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfVU5TVVBQT1JURURfTVVMVElESVNLKTsKKysKKysgICAgICBpZiAoY29tcF9zaXplICE9IE1aX1VJTlQzMl9NQVgpIHsKKysgICAgICAgIGlmICgoKG16X3VpbnQ2NClNWl9SRUFEX0xFMzIocCArIE1aX1pJUF9DREhfTE9DQUxfSEVBREVSX09GUykgKworKyAgICAgICAgICAgICBNWl9aSVBfTE9DQUxfRElSX0hFQURFUl9TSVpFICsgY29tcF9zaXplKSA+IHBaaXAtPm1fYXJjaGl2ZV9zaXplKQorKyAgICAgICAgICByZXR1cm4gbXpfemlwX3NldF9lcnJvcihwWmlwLCBNWl9aSVBfSU5WQUxJRF9IRUFERVJfT1JfQ09SUlVQVEVEKTsKKysgICAgICB9CisrCisrICAgICAgYml0X2ZsYWdzID0gTVpfUkVBRF9MRTE2KHAgKyBNWl9aSVBfQ0RIX0JJVF9GTEFHX09GUyk7CisrICAgICAgaWYgKGJpdF9mbGFncyAmIE1aX1pJUF9HRU5FUkFMX1BVUlBPU0VfQklUX0ZMQUdfTE9DQUxfRElSX0lTX01BU0tFRCkKKysgICAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9VTlNVUFBPUlRFRF9FTkNSWVBUSU9OKTsKKysKKyAgICAgICBpZiAoKHRvdGFsX2hlYWRlcl9zaXplID0gTVpfWklQX0NFTlRSQUxfRElSX0hFQURFUl9TSVpFICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVpfUkVBRF9MRTE2KHAgKyBNWl9aSVBfQ0RIX0ZJTEVOQU1FX0xFTl9PRlMpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVpfUkVBRF9MRTE2KHAgKyBNWl9aSVBfQ0RIX0VYVFJBX0xFTl9PRlMpICsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTVpfUkVBRF9MRTE2KHAgKyBNWl9aSVBfQ0RIX0NPTU1FTlRfTEVOX09GUykpID4KKyAgICAgICAgICAgbikKKy0gICAgICAgIHJldHVybiBNWl9GQUxTRTsKKysgICAgICAgIHJldHVybiBtel96aXBfc2V0X2Vycm9yKHBaaXAsIE1aX1pJUF9JTlZBTElEX0hFQURFUl9PUl9DT1JSVVBURUQpOworKworICAgICAgIG4gLT0gdG90YWxfaGVhZGVyX3NpemU7CisgICAgICAgcCArPSB0b3RhbF9oZWFkZXJfc2l6ZTsKKyAgICAgfQorZGlmZiAtLWdpdCBhL2NvbnRyaWIvemlwL3NyYy96aXAuYyBiL2NvbnRyaWIvemlwL3NyYy96aXAuYworaW5kZXggZmYzYThmZTEuLjFhYmNmZDhmIDEwMDY0NAorLS0tIGEvY29udHJpYi96aXAvc3JjL3ppcC5jCisrKysgYi9jb250cmliL3ppcC9zcmMvemlwLmMKK0BAIC0yNCw3ICsyNCw2IEBACisgICAoKCgoUClbMF0gPj0gJ0EnICYmIChQKVswXSA8PSAnWicpIHx8ICgoUClbMF0gPj0gJ2EnICYmIChQKVswXSA8PSAneicpKSAmJiAgIFwKKyAgICAoUClbMV0gPT0gJzonKQorICNkZWZpbmUgRklMRVNZU1RFTV9QUkVGSVhfTEVOKFApIChIQVNfREVWSUNFKFApID8gMiA6IDApCistI2RlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gJy8nIHx8IChDKSA9PSAnXFwnKQorIAorICNlbHNlCisgCitAQCAtNDgsNyArNDcsNyBAQCBpbnQgc3ltbGluayhjb25zdCBjaGFyICp0YXJnZXQsIGNvbnN0IGNoYXIgKmxpbmtwYXRoKTsgLy8gbmVlZGVkIG9uIExpbnV4CisgI2VuZGlmCisgCisgI2lmbmRlZiBJU1NMQVNICistI2RlZmluZSBJU1NMQVNIKEMpICgoQykgPT0gJy8nKQorKyNkZWZpbmUgSVNTTEFTSChDKSAoKEMpID09ICcvJyB8fCAoQykgPT0gJ1xcJykKKyAjZW5kaWYKKyAKKyAjZGVmaW5lIENMRUFOVVAocHRyKSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorQEAgLTc4LDI2ICs3NywzNCBAQCBzdGF0aWMgY29uc3QgY2hhciAqYmFzZV9uYW1lKGNvbnN0IGNoYXIgKm5hbWUpIHsKKyAgIHJldHVybiBiYXNlOworIH0KKyAKKy1zdGF0aWMgaW50IG1rcGF0aChjb25zdCBjaGFyICpwYXRoKSB7CistICBjaGFyIGNvbnN0ICpwOworK3N0YXRpYyBpbnQgbWtwYXRoKGNoYXIgKnBhdGgpIHsKKysgIGNoYXIgKnA7CisgICBjaGFyIG5wYXRoW01BWF9QQVRIICsgMV07CisgICBpbnQgbGVuID0gMDsKKyAgIGludCBoYXNfZGV2aWNlID0gSEFTX0RFVklDRShwYXRoKTsKKyAKKyAgIG1lbXNldChucGF0aCwgMCwgTUFYX1BBVEggKyAxKTsKKy0KKy0jaWZkZWYgX1dJTjMyCistICAvLyBvbmx5IG9uIHdpbmRvd3MgZml4IHRoZSBwYXRoCistICBucGF0aFswXSA9IHBhdGhbMF07CistICBucGF0aFsxXSA9IHBhdGhbMV07CistICBsZW4gPSAyOworLSNlbmRpZiAvLyBfV0lOMzIKKy0gICAgCisrICBpZiAoaGFzX2RldmljZSkgeworKyAgICAvLyBvbmx5IG9uIHdpbmRvd3MKKysgICAgbnBhdGhbMF0gPSBwYXRoWzBdOworKyAgICBucGF0aFsxXSA9IHBhdGhbMV07CisrICAgIGxlbiA9IDI7CisrICB9CisgICBmb3IgKHAgPSBwYXRoICsgbGVuOyAqcCAmJiBsZW4gPCBNQVhfUEFUSDsgcCsrKSB7CisgICAgIGlmIChJU1NMQVNIKCpwKSAmJiAoKCFoYXNfZGV2aWNlICYmIGxlbiA+IDApIHx8IChoYXNfZGV2aWNlICYmIGxlbiA+IDIpKSkgeworLSAgICAgIGlmIChNS0RJUihucGF0aCkgPT0gLTEpCistICAgICAgICBpZiAoZXJybm8gIT0gRUVYSVNUKQorKyNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1dJTjMyX18pIHx8IGRlZmluZWQoX01TQ19WRVIpIHx8ICAgICAgICAgICAgICBcCisrICAgIGRlZmluZWQoX19NSU5HVzMyX18pCisrI2Vsc2UKKysgICAgICBpZiAoJ1xcJyA9PSAqcCkgeworKyAgICAgICAgKnAgPSAnLyc7CisrICAgICAgfQorKyNlbmRpZgorKworKyAgICAgIGlmIChNS0RJUihucGF0aCkgPT0gLTEpIHsKKysgICAgICAgIGlmIChlcnJubyAhPSBFRVhJU1QpIHsKKyAgICAgICAgICAgcmV0dXJuIC0xOworKyAgICAgICAgfQorKyAgICAgIH0KKyAgICAgfQorICAgICBucGF0aFtsZW4rK10gPSAqcDsKKyAgIH0KK0BAIC0yNzksNyArMjg2LDE0IEBAIGludCB6aXBfZW50cnlfb3BlbihzdHJ1Y3QgemlwX3QgKnppcCwgY29uc3QgY2hhciAqZW50cnluYW1lKSB7CisgICB6aXAtPmVudHJ5LmhlYWRlcl9vZmZzZXQgPSB6aXAtPmFyY2hpdmUubV9hcmNoaXZlX3NpemU7CisgICBtZW1zZXQoemlwLT5lbnRyeS5oZWFkZXIsIDAsIE1aX1pJUF9MT0NBTF9ESVJfSEVBREVSX1NJWkUgKiBzaXplb2YobXpfdWludDgpKTsKKyAgIHppcC0+ZW50cnkubWV0aG9kID0gMDsKKysKKysgIC8vIFVOSVggb3IgQVBQTEUKKysjaWYgTVpfUExBVEZPUk0gPT0gMyB8fCBNWl9QTEFURk9STSA9PSAxOQorKyAgLy8gcmVndWxhciBmaWxlIHdpdGggcnctci0tci0tIHBlcnNtaXNzaW9ucworKyAgemlwLT5lbnRyeS5leHRlcm5hbF9hdHRyID0gKG16X3VpbnQzMikoMDEwMDY0NCkgPDwgMTY7CisrI2Vsc2UKKyAgIHppcC0+ZW50cnkuZXh0ZXJuYWxfYXR0ciA9IDA7CisrI2VuZGlmCisgCisgICBudW1fYWxpZ25tZW50X3BhZGRpbmdfYnl0ZXMgPQorICAgICAgIG16X3ppcF93cml0ZXJfY29tcHV0ZV9wYWRkaW5nX25lZWRlZF9mb3JfZmlsZV9hbGlnbm1lbnQocHppcCk7CitAQCAtNjYwLDcgKzY3NCw3IEBAIHNzaXplX3QgemlwX2VudHJ5X25vYWxsb2NyZWFkKHN0cnVjdCB6aXBfdCAqemlwLCB2b2lkICpidWYsIHNpemVfdCBidWZzaXplKSB7CisgICB9CisgCisgICBpZiAoIW16X3ppcF9yZWFkZXJfZXh0cmFjdF90b19tZW1fbm9fYWxsb2MocHppcCwgKG16X3VpbnQpemlwLT5lbnRyeS5pbmRleCwKKy0gIGJ1ZiwgYnVmc2l6ZSwgMCwgTlVMTCwgIDApKSB7CisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYnVmLCBidWZzaXplLCAwLCBOVUxMLCAwKSkgeworICAgICByZXR1cm4gLTE7CisgICB9CisgCitAQCAtNjcwLDEwICs2ODQsNyBAQCBzc2l6ZV90IHppcF9lbnRyeV9ub2FsbG9jcmVhZChzdHJ1Y3QgemlwX3QgKnppcCwgdm9pZCAqYnVmLCBzaXplX3QgYnVmc2l6ZSkgeworIGludCB6aXBfZW50cnlfZnJlYWQoc3RydWN0IHppcF90ICp6aXAsIGNvbnN0IGNoYXIgKmZpbGVuYW1lKSB7CisgICBtel96aXBfYXJjaGl2ZSAqcHppcCA9IE5VTEw7CisgICBtel91aW50IGlkeDsKKy0jaWYgZGVmaW5lZChfTVNDX1ZFUikKKy0jZWxzZQorICAgbXpfdWludDMyIHhhdHRyID0gMDsKKy0jZW5kaWYKKyAgIG16X3ppcF9hcmNoaXZlX2ZpbGVfc3RhdCBpbmZvOworIAorICAgaWYgKCF6aXApIHsKK0BAIC04NzUsMTIgKzg4NiwxOSBAQCBpbnQgemlwX2V4dHJhY3QoY29uc3QgY2hhciAqemlwbmFtZSwgY29uc3QgY2hhciAqZGlyLAorICAgICAgIGdvdG8gb3V0OworICAgICB9CisgCistICAgIGlmICgoKChpbmZvLm1fdmVyc2lvbl9tYWRlX2J5ID4+IDgpID09IDMpIHx8ICgoaW5mby5tX3ZlcnNpb25fbWFkZV9ieSA+PiA4KSA9PSAxOSkpIC8vIGlmIHppcCBpcyBwcm9kdWNlZCBvbiBVbml4IG9yIG1hY09TICgzIGFuZCAxOSBmcm9tIHNlY3Rpb24gNC40LjIuMiBvZiB6aXAgc3RhbmRhcmQpCistICAgICAgICAmJiBpbmZvLm1fZXh0ZXJuYWxfYXR0ciAmICgweDIwIDw8IDI0KSkgeyAvLyBhbmQgaGFzIHN5bSBsaW5rIGF0dHJpYnV0ZSAoMHg4MCBpcyBmaWxlLCAweDQwIGlzIGRpcmVjdG9yeSkKKysgICAgaWYgKCgoKGluZm8ubV92ZXJzaW9uX21hZGVfYnkgPj4gOCkgPT0gMykgfHwKKysgICAgICAgICAoKGluZm8ubV92ZXJzaW9uX21hZGVfYnkgPj4gOCkgPT0KKysgICAgICAgICAgMTkpKSAvLyBpZiB6aXAgaXMgcHJvZHVjZWQgb24gVW5peCBvciBtYWNPUyAoMyBhbmQgMTkgZnJvbQorKyAgICAgICAgICAgICAgIC8vIHNlY3Rpb24gNC40LjIuMiBvZiB6aXAgc3RhbmRhcmQpCisrICAgICAgICAmJiBpbmZvLm1fZXh0ZXJuYWxfYXR0ciAmCisrICAgICAgICAgICAgICAgKDB4MjAgPDwgMjQpKSB7IC8vIGFuZCBoYXMgc3ltIGxpbmsgYXR0cmlidXRlICgweDgwIGlzIGZpbGUsIDB4NDAKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLy8gaXMgZGlyZWN0b3J5KQorICNpZiBkZWZpbmVkKF9XSU4zMikgfHwgZGVmaW5lZChfX1dJTjMyX18pIHx8IGRlZmluZWQoX01TQ19WRVIpIHx8ICAgICAgICAgICAgICBcCisgICAgIGRlZmluZWQoX19NSU5HVzMyX18pCistI2Vsc2UgICAgICAKKy0gICAgICBpZiAoaW5mby5tX3VuY29tcF9zaXplID4gTUFYX1BBVEggfHwgIW16X3ppcF9yZWFkZXJfZXh0cmFjdF90b19tZW1fbm9fYWxsb2MoJnppcF9hcmNoaXZlLCBpLCBzeW1saW5rX3RvLCBNQVhfUEFUSCwgMCwgTlVMTCwgMCkpIHsKKysjZWxzZQorKyAgICAgIGlmIChpbmZvLm1fdW5jb21wX3NpemUgPiBNQVhfUEFUSCB8fAorKyAgICAgICAgICAhbXpfemlwX3JlYWRlcl9leHRyYWN0X3RvX21lbV9ub19hbGxvYygmemlwX2FyY2hpdmUsIGksIHN5bWxpbmtfdG8sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1BWF9QQVRILCAwLCBOVUxMLCAwKSkgeworICAgICAgICAgZ290byBvdXQ7CisgICAgICAgfQorICAgICAgIHN5bWxpbmtfdG9baW5mby5tX3VuY29tcF9zaXplXSA9ICdcMCc7CitkaWZmIC0tZ2l0IGEvY29udHJpYi96aXAvc3JjL3ppcC5oIGIvY29udHJpYi96aXAvc3JjL3ppcC5oCitpbmRleCA1ZjM5ZGY1MC4uYTQ4ZDY0ZDYgMTAwNjQ0CistLS0gYS9jb250cmliL3ppcC9zcmMvemlwLmgKKysrKyBiL2NvbnRyaWIvemlwL3NyYy96aXAuaAorQEAgLTIwLDI0MSArMjAsMjQwIEBAIGV4dGVybiAiQyIgeworICNlbmRpZgorIAorICNpZiAhZGVmaW5lZChfU1NJWkVfVF9ERUZJTkVEKSAmJiAhZGVmaW5lZChfU1NJWkVfVF9ERUZJTkVEXykgJiYgICAgICAgICAgICAgICBcCistICAgICFkZWZpbmVkKF9TU0laRV9UKSAmJiAhZGVmaW5lZChfU1NJWkVfVF8pICYmICFkZWZpbmVkKF9fc3NpemVfdF9kZWZpbmVkKQorLSNkZWZpbmUgX1NTSVpFX1QKKysgICAgIWRlZmluZWQoX19ERUZJTkVEX3NzaXplX3QpICYmICFkZWZpbmVkKF9fc3NpemVfdF9kZWZpbmVkKSAmJiAgICAgICAgICAgICAgXAorKyAgICAhZGVmaW5lZChfU1NJWkVfVCkgJiYgIWRlZmluZWQoX1NTSVpFX1RfKQorKworIC8vIDY0LWJpdCBXaW5kb3dzIGlzIHRoZSBvbmx5IG1haW5zdHJlYW0gcGxhdGZvcm0KKyAvLyB3aGVyZSBzaXplb2YobG9uZykgIT0gc2l6ZW9mKHZvaWQqKQorICNpZmRlZiBfV0lONjQKKy10eXBlZGVmIGxvbmcgbG9uZyAgc3NpemVfdDsgIC8qIGJ5dGUgY291bnQgb3IgZXJyb3IgKi8KKyt0eXBlZGVmIGxvbmcgbG9uZyBzc2l6ZV90OyAvKiBieXRlIGNvdW50IG9yIGVycm9yICovCisgI2Vsc2UKKy10eXBlZGVmIGxvbmcgIHNzaXplX3Q7ICAvKiBieXRlIGNvdW50IG9yIGVycm9yICovCisrdHlwZWRlZiBsb25nIHNzaXplX3Q7IC8qIGJ5dGUgY291bnQgb3IgZXJyb3IgKi8KKyAjZW5kaWYKKysKKysjZGVmaW5lIF9TU0laRV9UX0RFRklORUQKKysjZGVmaW5lIF9TU0laRV9UX0RFRklORURfCisrI2RlZmluZSBfX0RFRklORURfc3NpemVfdAorKyNkZWZpbmUgX19zc2l6ZV90X2RlZmluZWQKKysjZGVmaW5lIF9TU0laRV9UCisrI2RlZmluZSBfU1NJWkVfVF8KKysKKyAjZW5kaWYKKyAKKyAjaWZuZGVmIE1BWF9QQVRICisgI2RlZmluZSBNQVhfUEFUSCAzMjc2NyAvKiAjIGNoYXJzIGluIGEgcGF0aCBuYW1lIGluY2x1ZGluZyBOVUxMICovCisgI2VuZGlmCisgCisrLyoqCisrICogQG1haW5wYWdlCisrICoKKysgKiBEb2N1bWVuYXRpb24gZm9yIEByZWYgemlwLgorKyAqLworKworKy8qKgorKyAqIEBhZGR0b2dyb3VwIHppcAorKyAqIEB7CisrICovCisrCisrLyoqCisrICogRGVmYXVsdCB6aXAgY29tcHJlc3Npb24gbGV2ZWwuCisrICovCisrCisgI2RlZmluZSBaSVBfREVGQVVMVF9DT01QUkVTU0lPTl9MRVZFTCA2CisgCistLyoKKy0gIFRoaXMgZGF0YSBzdHJ1Y3R1cmUgaXMgdXNlZCB0aHJvdWdob3V0IHRoZSBsaWJyYXJ5IHRvIHJlcHJlc2VudCB6aXAgYXJjaGl2ZQorLSAgLSBmb3J3YXJkIGRlY2xhcmF0aW9uLgorLSovCisrLyoqCisrICogQHN0cnVjdCB6aXBfdAorKyAqCisrICogVGhpcyBkYXRhIHN0cnVjdHVyZSBpcyB1c2VkIHRocm91Z2hvdXQgdGhlIGxpYnJhcnkgdG8gcmVwcmVzZW50IHppcCBhcmNoaXZlIC0KKysgKiBmb3J3YXJkIGRlY2xhcmF0aW9uLgorKyAqLworIHN0cnVjdCB6aXBfdDsKKyAKKy0vKgorLSAgT3BlbnMgemlwIGFyY2hpdmUgd2l0aCBjb21wcmVzc2lvbiBsZXZlbCB1c2luZyB0aGUgZ2l2ZW4gbW9kZS4KKy0KKy0gIEFyZ3M6CistICAgIHppcG5hbWU6IHppcCBhcmNoaXZlIGZpbGUgbmFtZS4KKy0gICAgbGV2ZWw6IGNvbXByZXNzaW9uIGxldmVsICgwLTkgYXJlIHRoZSBzdGFuZGFyZCB6bGliLXN0eWxlIGxldmVscykuCistICAgIG1vZGU6IGZpbGUgYWNjZXNzIG1vZGUuCistICAgICAgICAncic6IG9wZW5zIGEgZmlsZSBmb3IgcmVhZGluZy9leHRyYWN0aW5nICh0aGUgZmlsZSBtdXN0IGV4aXN0cykuCistICAgICAgICAndyc6IGNyZWF0ZXMgYW4gZW1wdHkgZmlsZSBmb3Igd3JpdGluZy4KKy0gICAgICAgICdhJzogYXBwZW5kcyB0byBhbiBleGlzdGluZyBhcmNoaXZlLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHppcCBhcmNoaXZlIGhhbmRsZXIgb3IgTlVMTCBvbiBlcnJvcgorLSovCisrLyoqCisrICogT3BlbnMgemlwIGFyY2hpdmUgd2l0aCBjb21wcmVzc2lvbiBsZXZlbCB1c2luZyB0aGUgZ2l2ZW4gbW9kZS4KKysgKgorKyAqIEBwYXJhbSB6aXBuYW1lIHppcCBhcmNoaXZlIGZpbGUgbmFtZS4KKysgKiBAcGFyYW0gbGV2ZWwgY29tcHJlc3Npb24gbGV2ZWwgKDAtOSBhcmUgdGhlIHN0YW5kYXJkIHpsaWItc3R5bGUgbGV2ZWxzKS4KKysgKiBAcGFyYW0gbW9kZSBmaWxlIGFjY2VzcyBtb2RlLgorKyAqICAgICAgICAtICdyJzogb3BlbnMgYSBmaWxlIGZvciByZWFkaW5nL2V4dHJhY3RpbmcgKHRoZSBmaWxlIG11c3QgZXhpc3RzKS4KKysgKiAgICAgICAgLSAndyc6IGNyZWF0ZXMgYW4gZW1wdHkgZmlsZSBmb3Igd3JpdGluZy4KKysgKiAgICAgICAgLSAnYSc6IGFwcGVuZHMgdG8gYW4gZXhpc3RpbmcgYXJjaGl2ZS4KKysgKgorKyAqIEByZXR1cm4gdGhlIHppcCBhcmNoaXZlIGhhbmRsZXIgb3IgTlVMTCBvbiBlcnJvcgorKyAqLworIGV4dGVybiBzdHJ1Y3QgemlwX3QgKnppcF9vcGVuKGNvbnN0IGNoYXIgKnppcG5hbWUsIGludCBsZXZlbCwgY2hhciBtb2RlKTsKKyAKKy0vKgorLSAgQ2xvc2VzIHRoZSB6aXAgYXJjaGl2ZSwgcmVsZWFzZXMgcmVzb3VyY2VzIC0gYWx3YXlzIGZpbmFsaXplLgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLSovCisrLyoqCisrICogQ2xvc2VzIHRoZSB6aXAgYXJjaGl2ZSwgcmVsZWFzZXMgcmVzb3VyY2VzIC0gYWx3YXlzIGZpbmFsaXplLgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqLworIGV4dGVybiB2b2lkIHppcF9jbG9zZShzdHJ1Y3QgemlwX3QgKnppcCk7CisgCistLyoKKy0gIE9wZW5zIGFuIGVudHJ5IGJ5IG5hbWUgaW4gdGhlIHppcCBhcmNoaXZlLgorLSAgRm9yIHppcCBhcmNoaXZlIG9wZW5lZCBpbiAndycgb3IgJ2EnIG1vZGUgdGhlIGZ1bmN0aW9uIHdpbGwgYXBwZW5kCistICBhIG5ldyBlbnRyeS4gSW4gcmVhZG9ubHkgbW9kZSB0aGUgZnVuY3Rpb24gdHJpZXMgdG8gbG9jYXRlIHRoZSBlbnRyeQorLSAgaW4gZ2xvYmFsIGRpY3Rpb25hcnkuCistCistICBBcmdzOgorLSAgICB6aXA6IHppcCBhcmNoaXZlIGhhbmRsZXIuCistICAgIGVudHJ5bmFtZTogYW4gZW50cnkgbmFtZSBpbiBsb2NhbCBkaWN0aW9uYXJ5LgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBPcGVucyBhbiBlbnRyeSBieSBuYW1lIGluIHRoZSB6aXAgYXJjaGl2ZS4KKysgKgorKyAqIEZvciB6aXAgYXJjaGl2ZSBvcGVuZWQgaW4gJ3cnIG9yICdhJyBtb2RlIHRoZSBmdW5jdGlvbiB3aWxsIGFwcGVuZAorKyAqIGEgbmV3IGVudHJ5LiBJbiByZWFkb25seSBtb2RlIHRoZSBmdW5jdGlvbiB0cmllcyB0byBsb2NhdGUgdGhlIGVudHJ5CisrICogaW4gZ2xvYmFsIGRpY3Rpb25hcnkuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICogQHBhcmFtIGVudHJ5bmFtZSBhbiBlbnRyeSBuYW1lIGluIGxvY2FsIGRpY3Rpb25hcnkuCisrICoKKysgKiBAcmV0dXJuIHRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBpbnQgemlwX2VudHJ5X29wZW4oc3RydWN0IHppcF90ICp6aXAsIGNvbnN0IGNoYXIgKmVudHJ5bmFtZSk7CisgCistLyoKKy0gIE9wZW5zIGEgbmV3IGVudHJ5IGJ5IGluZGV4IGluIHRoZSB6aXAgYXJjaGl2ZS4KKy0gIFRoaXMgZnVuY3Rpb24gaXMgb25seSB2YWxpZCBpZiB6aXAgYXJjaGl2ZSB3YXMgb3BlbmVkIGluICdyJyAocmVhZG9ubHkpIG1vZGUuCistCistICBBcmdzOgorLSAgICB6aXA6IHppcCBhcmNoaXZlIGhhbmRsZXIuCistICAgIGluZGV4OiBpbmRleCBpbiBsb2NhbCBkaWN0aW9uYXJ5LgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBPcGVucyBhIG5ldyBlbnRyeSBieSBpbmRleCBpbiB0aGUgemlwIGFyY2hpdmUuCisrICoKKysgKiBUaGlzIGZ1bmN0aW9uIGlzIG9ubHkgdmFsaWQgaWYgemlwIGFyY2hpdmUgd2FzIG9wZW5lZCBpbiAncicgKHJlYWRvbmx5KSBtb2RlLgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqIEBwYXJhbSBpbmRleCBpbmRleCBpbiBsb2NhbCBkaWN0aW9uYXJ5LgorKyAqCisrICogQHJldHVybiB0aGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKysgKi8KKyBleHRlcm4gaW50IHppcF9lbnRyeV9vcGVuYnlpbmRleChzdHJ1Y3QgemlwX3QgKnppcCwgaW50IGluZGV4KTsKKyAKKy0vKgorLSAgQ2xvc2VzIGEgemlwIGVudHJ5LCBmbHVzaGVzIGJ1ZmZlciBhbmQgcmVsZWFzZXMgcmVzb3VyY2VzLgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBDbG9zZXMgYSB6aXAgZW50cnksIGZsdXNoZXMgYnVmZmVyIGFuZCByZWxlYXNlcyByZXNvdXJjZXMuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICoKKysgKiBAcmV0dXJuIHRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBpbnQgemlwX2VudHJ5X2Nsb3NlKHN0cnVjdCB6aXBfdCAqemlwKTsKKyAKKy0vKgorLSAgUmV0dXJucyBhIGxvY2FsIG5hbWUgb2YgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorLSAgVGhlIG1haW4gZGlmZmVyZW5jZSBiZXR3ZWVuIHVzZXIncyBlbnRyeSBuYW1lIGFuZCBsb2NhbCBlbnRyeSBuYW1lCistICBpcyBvcHRpb25hbCByZWxhdGl2ZSBwYXRoLgorLSAgRm9sbG93aW5nIC5aSVAgRmlsZSBGb3JtYXQgU3BlY2lmaWNhdGlvbiAtIHRoZSBwYXRoIHN0b3JlZCBNVVNUIG5vdCBjb250YWluCistICBhIGRyaXZlIG9yIGRldmljZSBsZXR0ZXIsIG9yIGEgbGVhZGluZyBzbGFzaC4KKy0gIEFsbCBzbGFzaGVzIE1VU1QgYmUgZm9yd2FyZCBzbGFzaGVzICcvJyBhcyBvcHBvc2VkIHRvIGJhY2t3YXJkcyBzbGFzaGVzICdcJworLSAgZm9yIGNvbXBhdGliaWxpdHkgd2l0aCBBbWlnYSBhbmQgVU5JWCBmaWxlIHN5c3RlbXMgZXRjLgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHBvaW50ZXIgdG8gdGhlIGN1cnJlbnQgemlwIGVudHJ5IG5hbWUsIG9yIE5VTEwgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBSZXR1cm5zIGEgbG9jYWwgbmFtZSBvZiB0aGUgY3VycmVudCB6aXAgZW50cnkuCisrICoKKysgKiBUaGUgbWFpbiBkaWZmZXJlbmNlIGJldHdlZW4gdXNlcidzIGVudHJ5IG5hbWUgYW5kIGxvY2FsIGVudHJ5IG5hbWUKKysgKiBpcyBvcHRpb25hbCByZWxhdGl2ZSBwYXRoLgorKyAqIEZvbGxvd2luZyAuWklQIEZpbGUgRm9ybWF0IFNwZWNpZmljYXRpb24gLSB0aGUgcGF0aCBzdG9yZWQgTVVTVCBub3QgY29udGFpbgorKyAqIGEgZHJpdmUgb3IgZGV2aWNlIGxldHRlciwgb3IgYSBsZWFkaW5nIHNsYXNoLgorKyAqIEFsbCBzbGFzaGVzIE1VU1QgYmUgZm9yd2FyZCBzbGFzaGVzICcvJyBhcyBvcHBvc2VkIHRvIGJhY2t3YXJkcyBzbGFzaGVzICdcJworKyAqIGZvciBjb21wYXRpYmlsaXR5IHdpdGggQW1pZ2EgYW5kIFVOSVggZmlsZSBzeXN0ZW1zIGV0Yy4KKysgKgorKyAqIEBwYXJhbSB6aXA6IHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICoKKysgKiBAcmV0dXJuIHRoZSBwb2ludGVyIHRvIHRoZSBjdXJyZW50IHppcCBlbnRyeSBuYW1lLCBvciBOVUxMIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBjb25zdCBjaGFyICp6aXBfZW50cnlfbmFtZShzdHJ1Y3QgemlwX3QgKnppcCk7CisgCistLyoKKy0gIFJldHVybnMgYW4gaW5kZXggb2YgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIGluZGV4IG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKy0qLworKy8qKgorKyAqIFJldHVybnMgYW4gaW5kZXggb2YgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqCisrICogQHJldHVybiB0aGUgaW5kZXggb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBpbnQgemlwX2VudHJ5X2luZGV4KHN0cnVjdCB6aXBfdCAqemlwKTsKKyAKKy0vKgorLSAgRGV0ZXJtaW5lcyBpZiB0aGUgY3VycmVudCB6aXAgZW50cnkgaXMgYSBkaXJlY3RvcnkgZW50cnkuCistCistICBBcmdzOgorLSAgICB6aXA6IHppcCBhcmNoaXZlIGhhbmRsZXIuCistCistICBSZXR1cm5zOgorLSAgICBUaGUgcmV0dXJuIGNvZGUgLSAxICh0cnVlKSwgMCAoZmFsc2UpLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBEZXRlcm1pbmVzIGlmIHRoZSBjdXJyZW50IHppcCBlbnRyeSBpcyBhIGRpcmVjdG9yeSBlbnRyeS4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKgorKyAqIEByZXR1cm4gdGhlIHJldHVybiBjb2RlIC0gMSAodHJ1ZSksIDAgKGZhbHNlKSwgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uCisrICogICAgICAgICBlcnJvci4KKysgKi8KKyBleHRlcm4gaW50IHppcF9lbnRyeV9pc2RpcihzdHJ1Y3QgemlwX3QgKnppcCk7CisgCistLyoKKy0gIFJldHVybnMgYW4gdW5jb21wcmVzc2VkIHNpemUgb2YgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHVuY29tcHJlc3NlZCBzaXplIGluIGJ5dGVzLgorLSovCisrLyoqCisrICogUmV0dXJucyBhbiB1bmNvbXByZXNzZWQgc2l6ZSBvZiB0aGUgY3VycmVudCB6aXAgZW50cnkuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICoKKysgKiBAcmV0dXJuIHRoZSB1bmNvbXByZXNzZWQgc2l6ZSBpbiBieXRlcy4KKysgKi8KKyBleHRlcm4gdW5zaWduZWQgbG9uZyBsb25nIHppcF9lbnRyeV9zaXplKHN0cnVjdCB6aXBfdCAqemlwKTsKKyAKKy0vKgorLSAgUmV0dXJucyBDUkMtMzIgY2hlY2tzdW0gb2YgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIENSQy0zMiBjaGVja3N1bS4KKy0qLworKy8qKgorKyAqIFJldHVybnMgQ1JDLTMyIGNoZWNrc3VtIG9mIHRoZSBjdXJyZW50IHppcCBlbnRyeS4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKgorKyAqIEByZXR1cm4gdGhlIENSQy0zMiBjaGVja3N1bS4KKysgKi8KKyBleHRlcm4gdW5zaWduZWQgaW50IHppcF9lbnRyeV9jcmMzMihzdHJ1Y3QgemlwX3QgKnppcCk7CisgCistLyoKKy0gIENvbXByZXNzZXMgYW4gaW5wdXQgYnVmZmVyIGZvciB0aGUgY3VycmVudCB6aXAgZW50cnkuCistCistICBBcmdzOgorLSAgICB6aXA6IHppcCBhcmNoaXZlIGhhbmRsZXIuCistICAgIGJ1ZjogaW5wdXQgYnVmZmVyLgorLSAgICBidWZzaXplOiBpbnB1dCBidWZmZXIgc2l6ZSAoaW4gYnl0ZXMpLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCistKi8KKysvKioKKysgKiBDb21wcmVzc2VzIGFuIGlucHV0IGJ1ZmZlciBmb3IgdGhlIGN1cnJlbnQgemlwIGVudHJ5LgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqIEBwYXJhbSBidWYgaW5wdXQgYnVmZmVyLgorKyAqIEBwYXJhbSBidWZzaXplIGlucHV0IGJ1ZmZlciBzaXplIChpbiBieXRlcykuCisrICoKKysgKiBAcmV0dXJuIHRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBpbnQgemlwX2VudHJ5X3dyaXRlKHN0cnVjdCB6aXBfdCAqemlwLCBjb25zdCB2b2lkICpidWYsIHNpemVfdCBidWZzaXplKTsKKyAKKy0vKgorLSAgQ29tcHJlc3NlcyBhIGZpbGUgZm9yIHRoZSBjdXJyZW50IHppcCBlbnRyeS4KKy0KKy0gIEFyZ3M6CistICAgIHppcDogemlwIGFyY2hpdmUgaGFuZGxlci4KKy0gICAgZmlsZW5hbWU6IGlucHV0IGZpbGUuCistCistICBSZXR1cm5zOgorLSAgICBUaGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKy0qLworKy8qKgorKyAqIENvbXByZXNzZXMgYSBmaWxlIGZvciB0aGUgY3VycmVudCB6aXAgZW50cnkuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICogQHBhcmFtIGZpbGVuYW1lIGlucHV0IGZpbGUuCisrICoKKysgKiBAcmV0dXJuIHRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBpbnQgemlwX2VudHJ5X2Z3cml0ZShzdHJ1Y3QgemlwX3QgKnppcCwgY29uc3QgY2hhciAqZmlsZW5hbWUpOworIAorLS8qCistICBFeHRyYWN0cyB0aGUgY3VycmVudCB6aXAgZW50cnkgaW50byBvdXRwdXQgYnVmZmVyLgorLSAgVGhlIGZ1bmN0aW9uIGFsbG9jYXRlcyBzdWZmaWNpZW50IG1lbW9yeSBmb3IgYSBvdXRwdXQgYnVmZmVyLgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLSAgICBidWY6IG91dHB1dCBidWZmZXIuCistICAgIGJ1ZnNpemU6IG91dHB1dCBidWZmZXIgc2l6ZSAoaW4gYnl0ZXMpLgorLQorLSAgTm90ZToKKy0gICAgLSByZW1lbWJlciB0byByZWxlYXNlIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIGEgb3V0cHV0IGJ1ZmZlci4KKy0gICAgLSBmb3IgbGFyZ2UgZW50cmllcywgcGxlYXNlIHRha2UgYSBsb29rIGF0IHppcF9lbnRyeV9leHRyYWN0IGZ1bmN0aW9uLgorLQorLSAgUmV0dXJuczoKKy0gICAgVGhlIHJldHVybiBjb2RlIC0gdGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkIG9uIHN1Y2Nlc3MuCistICAgIE90aGVyd2lzZSBhIC0xIG9uIGVycm9yLgorLSovCisrLyoqCisrICogRXh0cmFjdHMgdGhlIGN1cnJlbnQgemlwIGVudHJ5IGludG8gb3V0cHV0IGJ1ZmZlci4KKysgKgorKyAqIFRoZSBmdW5jdGlvbiBhbGxvY2F0ZXMgc3VmZmljaWVudCBtZW1vcnkgZm9yIGEgb3V0cHV0IGJ1ZmZlci4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKiBAcGFyYW0gYnVmIG91dHB1dCBidWZmZXIuCisrICogQHBhcmFtIGJ1ZnNpemUgb3V0cHV0IGJ1ZmZlciBzaXplIChpbiBieXRlcykuCisrICoKKysgKiBAbm90ZSByZW1lbWJlciB0byByZWxlYXNlIG1lbW9yeSBhbGxvY2F0ZWQgZm9yIGEgb3V0cHV0IGJ1ZmZlci4KKysgKiAgICAgICBmb3IgbGFyZ2UgZW50cmllcywgcGxlYXNlIHRha2UgYSBsb29rIGF0IHppcF9lbnRyeV9leHRyYWN0IGZ1bmN0aW9uLgorKyAqCisrICogQHJldHVybiB0aGUgcmV0dXJuIGNvZGUgLSB0aGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHJlYWQgb24gc3VjY2Vzcy4KKysgKiAgICAgICAgIE90aGVyd2lzZSBhIC0xIG9uIGVycm9yLgorKyAqLworIGV4dGVybiBzc2l6ZV90IHppcF9lbnRyeV9yZWFkKHN0cnVjdCB6aXBfdCAqemlwLCB2b2lkICoqYnVmLCBzaXplX3QgKmJ1ZnNpemUpOworIAorLS8qCistICBFeHRyYWN0cyB0aGUgY3VycmVudCB6aXAgZW50cnkgaW50byBhIG1lbW9yeSBidWZmZXIgdXNpbmcgbm8gbWVtb3J5CistICBhbGxvY2F0aW9uLgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLSAgICBidWY6IHByZWFsbG9jYXRlZCBvdXRwdXQgYnVmZmVyLgorLSAgICBidWZzaXplOiBvdXRwdXQgYnVmZmVyIHNpemUgKGluIGJ5dGVzKS4KKy0KKy0gIE5vdGU6CistICAgIC0gZW5zdXJlIHN1cHBsaWVkIG91dHB1dCBidWZmZXIgaXMgbGFyZ2UgZW5vdWdoLgorLSAgICAtIHppcF9lbnRyeV9zaXplIGZ1bmN0aW9uIChyZXR1cm5zIHVuY29tcHJlc3NlZCBzaXplIGZvciB0aGUgY3VycmVudCBlbnRyeSkKKy0gICAgICBjYW4gYmUgaGFuZHkgdG8gZXN0aW1hdGUgaG93IGJpZyBidWZmZXIgaXMgbmVlZGVkLgorLSAgICAtIGZvciBsYXJnZSBlbnRyaWVzLCBwbGVhc2UgdGFrZSBhIGxvb2sgYXQgemlwX2VudHJ5X2V4dHJhY3QgZnVuY3Rpb24uCistCistICBSZXR1cm5zOgorLSAgICBUaGUgcmV0dXJuIGNvZGUgLSB0aGUgbnVtYmVyIG9mIGJ5dGVzIGFjdHVhbGx5IHJlYWQgb24gc3VjY2Vzcy4KKy0gICAgT3RoZXJ3aXNlIGEgLTEgb24gZXJyb3IgKGUuZy4gYnVmc2l6ZSBpcyBub3QgbGFyZ2UgZW5vdWdoKS4KKy0qLworLWV4dGVybiBzc2l6ZV90IHppcF9lbnRyeV9ub2FsbG9jcmVhZChzdHJ1Y3QgemlwX3QgKnppcCwgdm9pZCAqYnVmLCBzaXplX3QgYnVmc2l6ZSk7CistCistLyoKKy0gIEV4dHJhY3RzIHRoZSBjdXJyZW50IHppcCBlbnRyeSBpbnRvIG91dHB1dCBmaWxlLgorLQorLSAgQXJnczoKKy0gICAgemlwOiB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorLSAgICBmaWxlbmFtZTogb3V0cHV0IGZpbGUuCistCistICBSZXR1cm5zOgorLSAgICBUaGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKy0qLworKy8qKgorKyAqIEV4dHJhY3RzIHRoZSBjdXJyZW50IHppcCBlbnRyeSBpbnRvIGEgbWVtb3J5IGJ1ZmZlciB1c2luZyBubyBtZW1vcnkKKysgKiBhbGxvY2F0aW9uLgorKyAqCisrICogQHBhcmFtIHppcCB6aXAgYXJjaGl2ZSBoYW5kbGVyLgorKyAqIEBwYXJhbSBidWYgcHJlYWxsb2NhdGVkIG91dHB1dCBidWZmZXIuCisrICogQHBhcmFtIGJ1ZnNpemUgb3V0cHV0IGJ1ZmZlciBzaXplIChpbiBieXRlcykuCisrICoKKysgKiBAbm90ZSBlbnN1cmUgc3VwcGxpZWQgb3V0cHV0IGJ1ZmZlciBpcyBsYXJnZSBlbm91Z2guCisrICogICAgICAgemlwX2VudHJ5X3NpemUgZnVuY3Rpb24gKHJldHVybnMgdW5jb21wcmVzc2VkIHNpemUgZm9yIHRoZSBjdXJyZW50CisrICogICAgICAgZW50cnkpIGNhbiBiZSBoYW5keSB0byBlc3RpbWF0ZSBob3cgYmlnIGJ1ZmZlciBpcyBuZWVkZWQuIGZvciBsYXJnZQorKyAqIGVudHJpZXMsIHBsZWFzZSB0YWtlIGEgbG9vayBhdCB6aXBfZW50cnlfZXh0cmFjdCBmdW5jdGlvbi4KKysgKgorKyAqIEByZXR1cm4gdGhlIHJldHVybiBjb2RlIC0gdGhlIG51bWJlciBvZiBieXRlcyBhY3R1YWxseSByZWFkIG9uIHN1Y2Nlc3MuCisrICogICAgICAgICBPdGhlcndpc2UgYSAtMSBvbiBlcnJvciAoZS5nLiBidWZzaXplIGlzIG5vdCBsYXJnZSBlbm91Z2gpLgorKyAqLworK2V4dGVybiBzc2l6ZV90IHppcF9lbnRyeV9ub2FsbG9jcmVhZChzdHJ1Y3QgemlwX3QgKnppcCwgdm9pZCAqYnVmLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzaXplX3QgYnVmc2l6ZSk7CisrCisrLyoqCisrICogRXh0cmFjdHMgdGhlIGN1cnJlbnQgemlwIGVudHJ5IGludG8gb3V0cHV0IGZpbGUuCisrICoKKysgKiBAcGFyYW0gemlwIHppcCBhcmNoaXZlIGhhbmRsZXIuCisrICogQHBhcmFtIGZpbGVuYW1lIG91dHB1dCBmaWxlLgorKyAqCisrICogQHJldHVybiB0aGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKysgKi8KKyBleHRlcm4gaW50IHppcF9lbnRyeV9mcmVhZChzdHJ1Y3QgemlwX3QgKnppcCwgY29uc3QgY2hhciAqZmlsZW5hbWUpOworIAorLS8qCistICBFeHRyYWN0cyB0aGUgY3VycmVudCB6aXAgZW50cnkgdXNpbmcgYSBjYWxsYmFjayBmdW5jdGlvbiAob25fZXh0cmFjdCkuCistCistICBBcmdzOgorLSAgICB6aXA6IHppcCBhcmNoaXZlIGhhbmRsZXIuCistICAgIG9uX2V4dHJhY3Q6IGNhbGxiYWNrIGZ1bmN0aW9uLgorLSAgICBhcmc6IG9wYXF1ZSBwb2ludGVyIChvcHRpb25hbCBhcmd1bWVudCwKKy0gICAgICAgICAgICAgICAgICAgICAgICAgd2hpY2ggeW91IGNhbiBwYXNzIHRvIHRoZSBvbl9leHRyYWN0IGNhbGxiYWNrKQorLQorLSAgIFJldHVybnM6CistICAgIFRoZSByZXR1cm4gY29kZSAtIDAgb24gc3VjY2VzcywgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorKy8qKgorKyAqIEV4dHJhY3RzIHRoZSBjdXJyZW50IHppcCBlbnRyeSB1c2luZyBhIGNhbGxiYWNrIGZ1bmN0aW9uIChvbl9leHRyYWN0KS4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKiBAcGFyYW0gb25fZXh0cmFjdCBjYWxsYmFjayBmdW5jdGlvbi4KKysgKiBAcGFyYW0gYXJnIG9wYXF1ZSBwb2ludGVyIChvcHRpb25hbCBhcmd1bWVudCwgd2hpY2ggeW91IGNhbiBwYXNzIHRvIHRoZQorKyAqICAgICAgICBvbl9leHRyYWN0IGNhbGxiYWNrKQorKyAqCisrICogQHJldHVybiB0aGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKyAgKi8KKyBleHRlcm4gaW50CisgemlwX2VudHJ5X2V4dHJhY3Qoc3RydWN0IHppcF90ICp6aXAsCitAQCAtMjYyLDUzICsyNjEsNDkgQEAgemlwX2VudHJ5X2V4dHJhY3Qoc3RydWN0IHppcF90ICp6aXAsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3Qgdm9pZCAqZGF0YSwgc2l6ZV90IHNpemUpLAorICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7CisgCistLyoKKy0gIFJldHVybnMgdGhlIG51bWJlciBvZiBhbGwgZW50cmllcyAoZmlsZXMgYW5kIGRpcmVjdG9yaWVzKSBpbiB0aGUgemlwIGFyY2hpdmUuCistCistICBBcmdzOgorLSAgICB6aXA6IHppcCBhcmNoaXZlIGhhbmRsZXIuCistCistICBSZXR1cm5zOgorLSAgICBUaGUgcmV0dXJuIGNvZGUgLSB0aGUgbnVtYmVyIG9mIGVudHJpZXMgb24gc3VjY2VzcywKKy0gICAgbmVnYXRpdmUgbnVtYmVyICg8IDApIG9uIGVycm9yLgorLSovCisrLyoqCisrICogUmV0dXJucyB0aGUgbnVtYmVyIG9mIGFsbCBlbnRyaWVzIChmaWxlcyBhbmQgZGlyZWN0b3JpZXMpIGluIHRoZSB6aXAgYXJjaGl2ZS4KKysgKgorKyAqIEBwYXJhbSB6aXAgemlwIGFyY2hpdmUgaGFuZGxlci4KKysgKgorKyAqIEByZXR1cm4gdGhlIHJldHVybiBjb2RlIC0gdGhlIG51bWJlciBvZiBlbnRyaWVzIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlcgorKyAqICAgICAgICAgKDwgMCkgb24gZXJyb3IuCisrICovCisgZXh0ZXJuIGludCB6aXBfdG90YWxfZW50cmllcyhzdHJ1Y3QgemlwX3QgKnppcCk7CisgCistLyoKKy0gIENyZWF0ZXMgYSBuZXcgYXJjaGl2ZSBhbmQgcHV0cyBmaWxlcyBpbnRvIGEgc2luZ2xlIHppcCBhcmNoaXZlLgorLQorLSAgQXJnczoKKy0gICAgemlwbmFtZTogemlwIGFyY2hpdmUgZmlsZS4KKy0gICAgZmlsZW5hbWVzOiBpbnB1dCBmaWxlcy4KKy0gICAgbGVuOiBudW1iZXIgb2YgaW5wdXQgZmlsZXMuCistCistICBSZXR1cm5zOgorLSAgICBUaGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKy0qLworKy8qKgorKyAqIENyZWF0ZXMgYSBuZXcgYXJjaGl2ZSBhbmQgcHV0cyBmaWxlcyBpbnRvIGEgc2luZ2xlIHppcCBhcmNoaXZlLgorKyAqCisrICogQHBhcmFtIHppcG5hbWUgemlwIGFyY2hpdmUgZmlsZS4KKysgKiBAcGFyYW0gZmlsZW5hbWVzIGlucHV0IGZpbGVzLgorKyAqIEBwYXJhbSBsZW46IG51bWJlciBvZiBpbnB1dCBmaWxlcy4KKysgKgorKyAqIEByZXR1cm4gdGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCisrICovCisgZXh0ZXJuIGludCB6aXBfY3JlYXRlKGNvbnN0IGNoYXIgKnppcG5hbWUsIGNvbnN0IGNoYXIgKmZpbGVuYW1lc1tdLCBzaXplX3QgbGVuKTsKKyAKKy0vKgorLSAgRXh0cmFjdHMgYSB6aXAgYXJjaGl2ZSBmaWxlIGludG8gZGlyZWN0b3J5LgorLQorLSAgSWYgb25fZXh0cmFjdF9lbnRyeSBpcyBub3QgTlVMTCwgdGhlIGNhbGxiYWNrIHdpbGwgYmUgY2FsbGVkIGFmdGVyCistICBzdWNjZXNzZnVsbHkgZXh0cmFjdGVkIGVhY2ggemlwIGVudHJ5LgorLSAgUmV0dXJuaW5nIGEgbmVnYXRpdmUgdmFsdWUgZnJvbSB0aGUgY2FsbGJhY2sgd2lsbCBjYXVzZSBhYm9ydCBhbmQgcmV0dXJuIGFuCistICBlcnJvci4gVGhlIGxhc3QgYXJndW1lbnQgKHZvaWQgKmFyZykgaXMgb3B0aW9uYWwsIHdoaWNoIHlvdSBjYW4gdXNlIHRvIHBhc3MKKy0gIGRhdGEgdG8gdGhlIG9uX2V4dHJhY3RfZW50cnkgY2FsbGJhY2suCistCistICBBcmdzOgorLSAgICB6aXBuYW1lOiB6aXAgYXJjaGl2ZSBmaWxlLgorLSAgICBkaXI6IG91dHB1dCBkaXJlY3RvcnkuCistICAgIG9uX2V4dHJhY3RfZW50cnk6IG9uIGV4dHJhY3QgY2FsbGJhY2suCistICAgIGFyZzogb3BhcXVlIHBvaW50ZXIuCistCistICBSZXR1cm5zOgorLSAgICBUaGUgcmV0dXJuIGNvZGUgLSAwIG9uIHN1Y2Nlc3MsIG5lZ2F0aXZlIG51bWJlciAoPCAwKSBvbiBlcnJvci4KKy0qLworKy8qKgorKyAqIEV4dHJhY3RzIGEgemlwIGFyY2hpdmUgZmlsZSBpbnRvIGRpcmVjdG9yeS4KKysgKgorKyAqIElmIG9uX2V4dHJhY3RfZW50cnkgaXMgbm90IE5VTEwsIHRoZSBjYWxsYmFjayB3aWxsIGJlIGNhbGxlZCBhZnRlcgorKyAqIHN1Y2Nlc3NmdWxseSBleHRyYWN0ZWQgZWFjaCB6aXAgZW50cnkuCisrICogUmV0dXJuaW5nIGEgbmVnYXRpdmUgdmFsdWUgZnJvbSB0aGUgY2FsbGJhY2sgd2lsbCBjYXVzZSBhYm9ydCBhbmQgcmV0dXJuIGFuCisrICogZXJyb3IuIFRoZSBsYXN0IGFyZ3VtZW50ICh2b2lkICphcmcpIGlzIG9wdGlvbmFsLCB3aGljaCB5b3UgY2FuIHVzZSB0byBwYXNzCisrICogZGF0YSB0byB0aGUgb25fZXh0cmFjdF9lbnRyeSBjYWxsYmFjay4KKysgKgorKyAqIEBwYXJhbSB6aXBuYW1lIHppcCBhcmNoaXZlIGZpbGUuCisrICogQHBhcmFtIGRpciBvdXRwdXQgZGlyZWN0b3J5LgorKyAqIEBwYXJhbSBvbl9leHRyYWN0X2VudHJ5IG9uIGV4dHJhY3QgY2FsbGJhY2suCisrICogQHBhcmFtIGFyZyBvcGFxdWUgcG9pbnRlci4KKysgKgorKyAqIEByZXR1cm4gdGhlIHJldHVybiBjb2RlIC0gMCBvbiBzdWNjZXNzLCBuZWdhdGl2ZSBudW1iZXIgKDwgMCkgb24gZXJyb3IuCisrICovCisgZXh0ZXJuIGludCB6aXBfZXh0cmFjdChjb25zdCBjaGFyICp6aXBuYW1lLCBjb25zdCBjaGFyICpkaXIsCisgICAgICAgICAgICAgICAgICAgICAgICBpbnQgKCpvbl9leHRyYWN0X2VudHJ5KShjb25zdCBjaGFyICpmaWxlbmFtZSwgdm9pZCAqYXJnKSwKKyAgICAgICAgICAgICAgICAgICAgICAgIHZvaWQgKmFyZyk7CisgCisrLyoqIEB9ICovCisrCisgI2lmZGVmIF9fY3BsdXNwbHVzCisgfQorICNlbmRpZgorZGlmZiAtLWdpdCBhL2NvbnRyaWIvemlwL3Rlc3QvQ01ha2VMaXN0cy50eHQgYi9jb250cmliL3ppcC90ZXN0L0NNYWtlTGlzdHMudHh0CitpbmRleCA5YjJhOGRiMS4uY2MwNjBiMDAgMTAwNjQ0CistLS0gYS9jb250cmliL3ppcC90ZXN0L0NNYWtlTGlzdHMudHh0CisrKysgYi9jb250cmliL3ppcC90ZXN0L0NNYWtlTGlzdHMudHh0CitAQCAtMSwxOSArMSwxNiBAQAorIGNtYWtlX21pbmltdW1fcmVxdWlyZWQoVkVSU0lPTiAyLjgpCisgCistaWYgKCIke0NNQUtFX0NfQ09NUElMRVJfSUR9IiBTVFJFUVVBTCAiR05VIiBPUiAiJHtDTUFLRV9DX0NPTVBJTEVSX0lEfSIgU1RSRVFVQUwgIkNsYW5nIiBPUiAiJHtDTUFLRV9DX0NPTVBJTEVSX0lEfSIgU1RSRVFVQUwgIkFwcGxlQ2xhbmciKQorLSAgaWYoRU5BQkxFX0NPVkVSQUdFKQorLSAgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtZyAiKQorLSAgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtTzAiKQorLSAgICBzZXQoQ01BS0VfQ19GTEFHUyAiJHtDTUFLRV9DX0ZMQUdTfSAtZnByb2ZpbGUtYXJjcyIpCistICAgIHNldChDTUFLRV9DX0ZMQUdTICIke0NNQUtFX0NfRkxBR1N9IC1mdGVzdC1jb3ZlcmFnZSIpCistICAgIHNldChDTUFLRV9FWEVfTElOS0VSX0ZMQUdTICIke0NNQUtFX0VYRV9MSU5LRVJfRkxBR1N9IC0tY292ZXJhZ2UiKQorLSAgZW5kaWYoKQorLWVuZGlmICgpCistCisgIyB0ZXN0CistaW5jbHVkZV9kaXJlY3RvcmllcyguLi9zcmMpCistYWRkX2V4ZWN1dGFibGUodGVzdC5leGUgdGVzdC5jIC4uL3NyYy96aXAuYykKKy1hZGRfZXhlY3V0YWJsZSh0ZXN0X21pbml6LmV4ZSB0ZXN0X21pbml6LmMpCisrc2V0KHRlc3Rfb3V0IHRlc3Qub3V0KQorK3NldCh0ZXN0X21pbml6X291dCB0ZXN0X21pbml6Lm91dCkKKysKKythZGRfZXhlY3V0YWJsZSgke3Rlc3Rfb3V0fSB0ZXN0LmMpCisrdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7dGVzdF9vdXR9IHppcCkKKythZGRfZXhlY3V0YWJsZSgke3Rlc3RfbWluaXpfb3V0fSB0ZXN0X21pbml6LmMpCisrdGFyZ2V0X2xpbmtfbGlicmFyaWVzKCR7dGVzdF9taW5pel9vdXR9IHppcCkKKysKKythZGRfdGVzdChOQU1FICR7dGVzdF9vdXR9IENPTU1BTkQgJHt0ZXN0X291dH0pCisrYWRkX3Rlc3QoTkFNRSAke3Rlc3RfbWluaXpfb3V0fSBDT01NQU5EICR7dGVzdF9taW5pel9vdXR9KQorIAorLWFkZF90ZXN0KE5BTUUgdGVzdCBDT01NQU5EIHRlc3QuZXhlKQorLWFkZF90ZXN0KE5BTUUgdGVzdF9taW5peiBDT01NQU5EIHRlc3RfbWluaXouZXhlKQorK3NldCh0ZXN0X291dCAke3Rlc3Rfb3V0fSBQQVJFTlRfU0NPUEUpCisrc2V0KHRlc3RfbWluaXpfb3V0ICR7dGVzdF9taW5pel9vdXR9IFBBUkVOVF9TQ09QRSkKK2RpZmYgLS1naXQgYS9jb250cmliL3ppcC90ZXN0L3Rlc3QuYyBiL2NvbnRyaWIvemlwL3Rlc3QvdGVzdC5jCitpbmRleCA0NTQ0MzA1My4uYTliMmRkYWIgMTAwNjQ0CistLS0gYS9jb250cmliL3ppcC90ZXN0L3Rlc3QuYworKysrIGIvY29udHJpYi96aXAvdGVzdC90ZXN0LmMKK0BAIC0yOSw2ICsyOSw4IEBACisgI2RlZmluZSBYRklMRSAiNy50eHRcMCIKKyAjZGVmaW5lIFhNT0RFIDAxMDA3NzcKKyAKKysjZGVmaW5lIFVOSVhNT0RFIDAxMDA2NDQKKysKKyAjZGVmaW5lIFVOVVNFRCh4KSAodm9pZCl4CisgCisgc3RhdGljIGludCB0b3RhbF9lbnRyaWVzID0gMDsKK0BAIC0xMDIsNyArMTA0LDggQEAgc3RhdGljIHZvaWQgdGVzdF9yZWFkKHZvaWQpIHsKKyAgIGFzc2VydCgwID09IHppcF9lbnRyeV9jbG9zZSh6aXApKTsKKyAgIGZyZWUoYnVmKTsKKyAgIGJ1ZiA9IE5VTEw7CistICAKKysgIGJ1ZnNpemUgPSAwOworKworICAgYXNzZXJ0KDAgPT0gemlwX2VudHJ5X29wZW4oemlwLCAidGVzdC90ZXN0LTIudHh0IikpOworICAgYXNzZXJ0KHN0cmxlbihURVNUREFUQTIpID09IHppcF9lbnRyeV9zaXplKHppcCkpOworICAgYXNzZXJ0KENSQzMyREFUQTIgPT0gemlwX2VudHJ5X2NyYzMyKHppcCkpOworQEAgLTEzMSw3ICsxMzQsOCBAQCBzdGF0aWMgdm9pZCB0ZXN0X3JlYWQodm9pZCkgeworICAgYXNzZXJ0KDAgPT0gemlwX2VudHJ5X2Nsb3NlKHppcCkpOworICAgZnJlZShidWYpOworICAgYnVmID0gTlVMTDsKKy0gIAorKyAgYnVmc2l6ZSA9IDA7CisrCisgICBidWZ0bXAgPSBzdHJsZW4oVEVTVERBVEExKTsKKyAgIGJ1ZiA9IGNhbGxvYyhidWZ0bXAsIHNpemVvZihjaGFyKSk7CisgICBhc3NlcnQoMCA9PSB6aXBfZW50cnlfb3Blbih6aXAsICJ0ZXN0L3Rlc3QtMS50eHQiKSk7CitAQCAtNDMzLDYgKzQzNywzNSBAQCBzdGF0aWMgdm9pZCB0ZXN0X210aW1lKHZvaWQpIHsKKyAgIHJlbW92ZShaSVBOQU1FKTsKKyB9CisgCisrc3RhdGljIHZvaWQgdGVzdF91bml4X3Blcm1pc3Npb25zKHZvaWQpIHsKKysjaWYgZGVmaW5lZChfV0lONjQpIHx8IGRlZmluZWQoX1dJTjMyKSB8fCBkZWZpbmVkKF9fV0lOMzJfXykKKysjZWxzZQorKyAgLy8gVU5JWCBvciBBUFBMRQorKyAgc3RydWN0IE1aX0ZJTEVfU1RBVF9TVFJVQ1QgZmlsZV9zdGF0czsKKysKKysgIHJlbW92ZShaSVBOQU1FKTsKKysKKysgIHN0cnVjdCB6aXBfdCAqemlwID0gemlwX29wZW4oWklQTkFNRSwgWklQX0RFRkFVTFRfQ09NUFJFU1NJT05fTEVWRUwsICd3Jyk7CisrICBhc3NlcnQoemlwICE9IE5VTEwpOworKworKyAgYXNzZXJ0KDAgPT0gemlwX2VudHJ5X29wZW4oemlwLCBSRklMRSkpOworKyAgYXNzZXJ0KDAgPT0gemlwX2VudHJ5X3dyaXRlKHppcCwgVEVTVERBVEExLCBzdHJsZW4oVEVTVERBVEExKSkpOworKyAgYXNzZXJ0KDAgPT0gemlwX2VudHJ5X2Nsb3NlKHppcCkpOworKworKyAgemlwX2Nsb3NlKHppcCk7CisrCisrICByZW1vdmUoUkZJTEUpOworKworKyAgYXNzZXJ0KDAgPT0gemlwX2V4dHJhY3QoWklQTkFNRSwgIi4iLCBOVUxMLCBOVUxMKSk7CisrCisrICBhc3NlcnQoMCA9PSBNWl9GSUxFX1NUQVQoUkZJTEUsICZmaWxlX3N0YXRzKSk7CisrICBhc3NlcnQoVU5JWE1PREUgPT0gZmlsZV9zdGF0cy5zdF9tb2RlKTsKKysKKysgIHJlbW92ZShSRklMRSk7CisrICByZW1vdmUoWklQTkFNRSk7CisrI2VuZGlmCisrfQorKworIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgIFVOVVNFRChhcmdjKTsKKyAgIFVOVVNFRChhcmd2KTsKK0BAIC00NTMsNiArNDg2LDcgQEAgaW50IG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkgeworICAgdGVzdF93cml0ZV9wZXJtaXNzaW9ucygpOworICAgdGVzdF9leGVfcGVybWlzc2lvbnMoKTsKKyAgIHRlc3RfbXRpbWUoKTsKKysgIHRlc3RfdW5peF9wZXJtaXNzaW9ucygpOworIAorICAgcmVtb3ZlKFpJUE5BTUUpOworICAgcmV0dXJuIDA7CitkaWZmIC0tZ2l0IGEvY29udHJpYi96aXAvdGVzdC90ZXN0X21pbml6LmMgYi9jb250cmliL3ppcC90ZXN0L3Rlc3RfbWluaXouYworaW5kZXggZWJjMDU2NGQuLmJhYmNhZWNkIDEwMDY0NAorLS0tIGEvY29udHJpYi96aXAvdGVzdC90ZXN0X21pbml6LmMKKysrKyBiL2NvbnRyaWIvemlwL3Rlc3QvdGVzdF9taW5pei5jCitAQCAtMjMsMTYgKzIzLDM5IEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKKyAgIHVpbnQgc3RlcCA9IDA7CisgICBpbnQgY21wX3N0YXR1czsKKyAgIHVMb25nIHNyY19sZW4gPSAodUxvbmcpc3RybGVuKHNfcFN0cik7CistICB1TG9uZyBjbXBfbGVuID0gY29tcHJlc3NCb3VuZChzcmNfbGVuKTsKKyAgIHVMb25nIHVuY29tcF9sZW4gPSBzcmNfbGVuOworKyAgdUxvbmcgY21wX2xlbjsKKyAgIHVpbnQ4ICpwQ21wLCAqcFVuY29tcDsKKysgIHNpemVfdCBzejsKKyAgIHVpbnQgdG90YWxfc3VjY2VlZGVkID0gMDsKKyAgICh2b2lkKWFyZ2MsICh2b2lkKWFyZ3Y7CisgCisgICBwcmludGYoIm1pbml6LmMgdmVyc2lvbjogJXNcbiIsIE1aX1ZFUlNJT04pOworIAorICAgZG8geworKyAgICBwQ21wID0gKHVpbnQ4ICopdGRlZmxfY29tcHJlc3NfbWVtX3RvX2hlYXAoc19wU3RyLCBzcmNfbGVuLCAmY21wX2xlbiwgMCk7CisrICAgIGlmICghcENtcCkgeworKyAgICAgIHByaW50ZigidGRlZmxfY29tcHJlc3NfbWVtX3RvX2hlYXAgZmFpbGVkXG4iKTsKKysgICAgICByZXR1cm4gRVhJVF9GQUlMVVJFOworKyAgICB9CisrICAgIGlmIChzcmNfbGVuIDw9IGNtcF9sZW4pIHsKKysgICAgICBwcmludGYoInRkZWZsX2NvbXByZXNzX21lbV90b19oZWFwIGZhaWxlZDogZnJvbSAldSB0byAldSBieXRlc1xuIiwKKysgICAgICAgICAgICAgKG16X3VpbnQzMil1bmNvbXBfbGVuLCAobXpfdWludDMyKWNtcF9sZW4pOworKyAgICAgIGZyZWUocENtcCk7CisrICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKysgICAgfQorKworKyAgICBzeiA9IHRkZWZsX2NvbXByZXNzX21lbV90b19tZW0ocENtcCwgY21wX2xlbiwgc19wU3RyLCBzcmNfbGVuLCAwKTsKKysgICAgaWYgKHN6ICE9IGNtcF9sZW4pIHsKKysgICAgICBwcmludGYoInRkZWZsX2NvbXByZXNzX21lbV90b19tZW0gZmFpbGVkOiBleHBlY3RlZCAldSwgZ290ICV1XG4iLAorKyAgICAgICAgICAgICAobXpfdWludDMyKWNtcF9sZW4sIChtel91aW50MzIpc3opOworKyAgICAgIGZyZWUocENtcCk7CisrICAgICAgcmV0dXJuIEVYSVRfRkFJTFVSRTsKKysgICAgfQorKworICAgICAvLyBBbGxvY2F0ZSBidWZmZXJzIHRvIGhvbGQgY29tcHJlc3NlZCBhbmQgdW5jb21wcmVzc2VkIGRhdGEuCisrICAgIGZyZWUocENtcCk7CisrICAgIGNtcF9sZW4gPSBjb21wcmVzc0JvdW5kKHNyY19sZW4pOworICAgICBwQ21wID0gKG16X3VpbnQ4ICopbWFsbG9jKChzaXplX3QpY21wX2xlbik7CisgICAgIHBVbmNvbXAgPSAobXpfdWludDggKiltYWxsb2MoKHNpemVfdClzcmNfbGVuKTsKKyAgICAgaWYgKCghcENtcCkgfHwgKCFwVW5jb21wKSkgewpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi9hc3NpbXBfNC4xLjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE5NGNiZTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL2Fzc2ltcF80LjEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDIwICswLDAgQEAKLURFU0NSSVBUSU9OID0gIk9wZW4gQXNzZXQgSW1wb3J0IExpYnJhcnkgaXMgYSBwb3J0YWJsZSBPcGVuIFNvdXJjZSBsaWJyYXJ5IHRvIGltcG9ydCBcCi0gICAgICAgICAgICAgICB2YXJpb3VzIHdlbGwta25vd24gM0QgbW9kZWwgZm9ybWF0cyBpbiBhIHVuaWZvcm0gbWFubmVyLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYXNzaW1wLm9yZy8iCi1TRUNUSU9OID0gImRldmVsIgotCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIxMTllZGVmMDkxNmIwYmQ1MTFjYjNjNzMxMDc2MjcxIgotCi1ERVBFTkRTID0gInpsaWIiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9hc3NpbXAvYXNzaW1wLmdpdCIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKLQotU1JDUkVWID0gIjgwNzk5YmRiZjkwY2U2MjY0NzU2MzU4MTVlZTE4NTM3NzE4YTA1YjEiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UKLQotRVhUUkFfT0VDTUFLRSA9ICItREFTU0lNUF9CVUlMRF9BU1NJTVBfVE9PTFM9T0ZGIC1EQVNTSU1QX0JVSUxEX1RFU1RTPU9GRiAtREFTU0lNUF9MSUJfSU5TVEFMTF9ESVI9JHtiYXNlbGlifSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi9hc3NpbXBfNS4wLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wXzUuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjVhOGM2MmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vYXNzaW1wXzUuMC4xLmJiCkBAIC0wLDAgKzEsMjMgQEAKK0RFU0NSSVBUSU9OID0gIk9wZW4gQXNzZXQgSW1wb3J0IExpYnJhcnkgaXMgYSBwb3J0YWJsZSBPcGVuIFNvdXJjZSBsaWJyYXJ5IHRvIGltcG9ydCBcCisgICAgICAgICAgICAgICB2YXJpb3VzIHdlbGwta25vd24gM0QgbW9kZWwgZm9ybWF0cyBpbiBhIHVuaWZvcm0gbWFubmVyLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuYXNzaW1wLm9yZy8iCitTRUNUSU9OID0gImRldmVsIgorCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIxMTllZGVmMDkxNmIwYmQ1MTFjYjNjNzMxMDc2MjcxIgorCitERVBFTkRTID0gInpsaWIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9hc3NpbXAvYXNzaW1wLmdpdDticmFuY2g9YXNzaW1wXzUuMF9yZWxlYXNlIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY2xvc2VzLWh0dHBzLWdpdGh1Yi5jb20tYXNzaW1wLWFzc2ltcC1pc3N1ZXMtMjczMy11cC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1BU1NJTVBfTElCX0lOU1RBTExfRElSLXRvLXNlYXJjaC1saWJyYXJ5LnBhdGNoIFwKKyAgICAgICAgICAgIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPihcZCsoXC5cZCspKykpIgorCitTUkNSRVYgPSAiOGYwYzZiMDRiMjI1N2E1MjBhYWFiMzg0MjFiMmUwOTAyMDRiNjlkZiIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBjbWFrZQorCitFWFRSQV9PRUNNQUtFID0gIi1EQVNTSU1QX0JVSUxEX0FTU0lNUF9UT09MUz1PRkYgLURBU1NJTVBfQlVJTERfVEVTVFM9T0ZGIC1EQVNTSU1QX0xJQl9JTlNUQUxMX0RJUj0ke2Jhc2VsaWJ9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1kZW1vcy8wMDAxLURvbi10LWJ1aWxkLWRlbW9zLXdpdGgtcXVlc3Rpb25hYmx5LWxpY2Vuc2VkLWRhdGEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtRG9uLXQtYnVpbGQtZGVtb3Mtd2l0aC1xdWVzdGlvbmFibHktbGljZW5zZWQtZGF0YS5wYXRjaAppbmRleCA5M2JjZmJmLi43NjI0MDYxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtRG9uLXQtYnVpbGQtZGVtb3Mtd2l0aC1xdWVzdGlvbmFibHktbGljZW5zZWQtZGF0YS5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zLzAwMDEtRG9uLXQtYnVpbGQtZGVtb3Mtd2l0aC1xdWVzdGlvbmFibHktbGljZW5zZWQtZGF0YS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gMGEyNzE0NGQ0M2I3MDEyMWY1N2Y2MDM2NTE0ZDA2OWNhOWQyYjk3MSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gMGNiZjljOTgzMWY3NzNlMGRhNjYyMDliZTlhNmZmMjhkNTdjMjMyMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206ICJNYXhpbiBCLiBKb2huIiA8bWF4aW4uam9obkBpbnRlbC5jb20+CiBEYXRlOiBNb24sIDMwIEp1bCAyMDE4IDE3OjIzOjI5ICswMzAwCiBTdWJqZWN0OiBbUEFUQ0hdIERvbid0IGJ1aWxkIGRlbW9zIHdpdGggcXVlc3Rpb25hYmx5IGxpY2Vuc2VkIGRhdGEKQEAgLTMzLDE2ICszMywxNyBAQAogCiBTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogU2lnbmVkLW9mZi1ieTogTWF4aW4gQi4gSm9obiA8bWF4aW4uam9obkBpbnRlbC5jb20+CisKIC0tLQogIGV4YW1wbGVzL0NNYWtlTGlzdHMudHh0IHwgMTQgLS0tLS0tLS0tLS0tLS0KICAxIGZpbGUgY2hhbmdlZCwgMTQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9leGFtcGxlcy9DTWFrZUxpc3RzLnR4dCBiL2V4YW1wbGVzL0NNYWtlTGlzdHMudHh0Ci1pbmRleCA4ZWVlM2E0Li42OThkM2IzIDEwMDY0NAoraW5kZXggZTA3OTE4Yy4uMDhiNmUyMyAxMDA2NDQKIC0tLSBhL2V4YW1wbGVzL0NNYWtlTGlzdHMudHh0CiArKysgYi9leGFtcGxlcy9DTWFrZUxpc3RzLnR4dAotQEAgLTQ3LDE4ICs0NywxMiBAQCBzZXQoRVhBTVBMRVMKLSAJY29tcHV0ZXNoYWRlcgorQEAgLTU1LDE4ICs1NSwxMiBAQCBzZXQoRVhBTVBMRVMKKyAJY29uZGl0aW9uYWxyZW5kZXIKICAJY29uc2VydmF0aXZlcmFzdGVyCiAgCWRlYnVnbWFya2VyCiAtCWRlZmVycmVkCkBAIC01NywxMCArNTgsMTAgQEAKIC0JaGRyCiAtCWltZ3VpCiAtCWluZGlyZWN0ZHJhdworIAlpbmxpbmV1bmlmb3JtYmxvY2tzCiAgCWlucHV0YXR0YWNobWVudHMKICAJaW5zdGFuY2luZwotIAltZXNoCi1AQCAtNzAsOCArNjQsNiBAQCBzZXQoRVhBTVBMRVMKK0BAIC04MywyMyArNzcsMTYgQEAgc2V0KEVYQU1QTEVTCiAgCXBhcmFsbGF4bWFwcGluZwogIAlwYXJ0aWNsZWZpcmUKICAJcGJyYmFzaWMKQEAgLTY5LDkgKzcwLDggQEAKICAJcGlwZWxpbmVzCiAgCXBpcGVsaW5lc3RhdGlzdGljcwogIAlwdXNoY29uc3RhbnRzCi1AQCAtNzksMTUgKzcxLDEwIEBAIHNldChFWEFNUExFUworIAlwdXNoZGVzY3JpcHRvcnMKICAJcmFkaWFsYmx1cgotIAlyYXl0cmFjaW5nCiAgCXJlbmRlcmhlYWRsZXNzCiAtCXNjZW5lcmVuZGVyaW5nCiAgCXNjcmVlbnNob3QKQEAgLTg1LDcgKzg1LDcgQEAKICAJc3RlbmNpbGJ1ZmZlcgogIAlzdWJwYXNzZXMKICAJdGVycmFpbnRlc3NlbGxhdGlvbgotQEAgLTEwMSw3ICs4OCw2IEBAIHNldChFWEFNUExFUworQEAgLTExMyw3ICsxMDAsNiBAQCBzZXQoRVhBTVBMRVMKICAJdGV4dHVyZXNwYXJzZXJlc2lkZW5jeQogIAl0cmlhbmdsZQogIAl2aWV3cG9ydGFycmF5CkBAIC05Myw2ICs5MywzIEBACiAgKQogIAogIGJ1aWxkRXhhbXBsZXMoKQotLS0gCi0yLjQuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWRlbW9zX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3NfZ2l0LmJiCmluZGV4IDc0ZGMyYWQuLmM5NGU3NjggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3NfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tZGVtb3NfZ2l0LmJiCkBAIC01LDIzICs1LDIzIEBACiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLm1kO21kNT1kY2Y0NzM3MjNmYWFiZjE3YmFhOWI1ZjIyMDc1OTlkMCBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9leGFtcGxlcy90cmlhbmdsZS90cmlhbmdsZS5jcHA7ZW5kbGluZT0xMjttZDU9YmNjZDFiZjljYWRkOWUxMDA4NmNmNzg3MjE1N2U0ZmEiCiAKLVNSQ1JFVl9nbG0gPSAiMDFmOWFiNWI2ZDIxZTUwNjJhYzBmNmUwZjIwNWM3ZmEyY2E5ZDc2OSIKLVNSQ1JFVl9nbGkgPSAiOGU0MzAzMGIzZTEyYmI1OGE0NjYzZDg1YWRjNWM3NTJmODkwOTljMCIKK1NSQ1JFVl9nbG0gPSAiMWFkNTVjNTAxNjMzOWI4M2I3ZWVjOThjMzEwMDdlMGFlZTU3ZDJiZiIKK1NSQ1JFVl9nbGkgPSAiN2RhNWY1MDkzMTIyNWU5ODE5YTI2ZDVjYjMyM2M1ZjQyZGE1MGJjZCIKIAogU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL1Nhc2NoYVdpbGxlbXMvVnVsa2FuLmdpdCBcCiAgICAgICAgICAgIGdpdDovL2dpdGh1Yi5jb20vZy10cnVjL2dsbTtkZXN0c3VmZml4PWdpdC9leHRlcm5hbC9nbG07bmFtZT1nbG0gXAogICAgICAgICAgICBnaXQ6Ly9naXRodWIuY29tL2ctdHJ1Yy9nbGk7ZGVzdHN1ZmZpeD1naXQvZXh0ZXJuYWwvZ2xpO25hbWU9Z2xpIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtYnVpbGQtZGVtb3Mtd2l0aC1xdWVzdGlvbmFibHktbGljZW5zZWQtZGF0YS5wYXRjaCBcCi0iCisgICAgICAgICAgICIKIFVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKLVNSQ1JFViA9ICJhZTBiNTljNmUyZTg2MzBhMmFlMjZmNGEwYjdhNzJjYmU3NTQ3OTQ4IgorU1JDUkVWID0gIjZkNjNkYzMyYzMyMGE0OWJlMGE1NmMzNjUxNTFjOGYyZjE3NmJjNTkiCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJUaGVzZSBhcmUgbm90IHRoZSByZWxlYXNlcyB5b3UncmUgbG9va2luZyBmb3IiCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAndnVsa2FuJwogCiBpbmhlcml0IGNtYWtlIGZlYXR1cmVzX2NoZWNrCi1ERVBFTkRTID0gInZ1bGthbi1sb2FkZXIgYXNzaW1wIgorREVQRU5EUyA9ICJ2dWxrYW4tbG9hZGVyIGFzc2ltcCB3YXlsYW5kLXByb3RvY29scyB3YXlsYW5kLW5hdGl2ZSIKIAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogICAgICMgUmVtb3ZlIGFzc2V0cyB0aGF0IGhhdmUgdW5jZXJ0YWluIGxpY2Vuc2VzCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWhlYWRlcnNfMS4xLjEwOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4taGVhZGVyc18xLjEuMTA4LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAyODRjMTlkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4taGVhZGVyc18xLjEuMTA4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTggKzAsMCBAQAotU1VNTUFSWSA9ICJWdWxrYW4gSGVhZGVyIGZpbGVzIGFuZCBBUEkgcmVnaXN0cnkiCi1IT01FUEFHRSA9ICJodHRwczovL3d3dy5raHJvbm9zLm9yZy92dWxrYW4vIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1IZWFkZXJzIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9M2I4M2VmOTYzODdmMTQ2NTVmYzg1NGRkYzNjNmJkNTciCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1IZWFkZXJzLmdpdDticmFuY2g9c2RrLSR7UFZ9IgotCi1TUkNSRVYgPSAiMDk3YTEwNDUwOTgyMTM5MTlmZDU2NDQyZjUyYzcxNmZjNzhlZWIyNyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBjbWFrZQotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS92dWxrYW4iCi0KLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInNkay0oP1A8cHZlcj5cZCsoXC5cZCspKykiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWhlYWRlcnNfMS4xLjEyNi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1oZWFkZXJzXzEuMS4xMjYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43MmMyOWE3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1oZWFkZXJzXzEuMS4xMjYuMC5iYgpAQCAtMCwwICsxLDE4IEBACitTVU1NQVJZID0gIlZ1bGthbiBIZWFkZXIgZmlsZXMgYW5kIEFQSSByZWdpc3RyeSIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3Z1bGthbi8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUhlYWRlcnMiCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUhlYWRlcnMuZ2l0O2JyYW5jaD1zZGstMS4xLjEyNiIKKworU1JDUkVWID0gIjViYzQ1OWUyOTIxMzA0YzMyNTY4YjczZWRhYWM4ZDZkZjVmOThiODQiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgY21ha2UKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vdnVsa2FuIgorCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJzZGstKD9QPHB2ZXI+XGQrKFwuXGQrKSspIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1sb2FkZXJfMS4xLjEwOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tbG9hZGVyXzEuMS4xMDguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE1MzljNWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi1sb2FkZXJfMS4xLjEwOC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDM3ICswLDAgQEAKLVNVTU1BUlkgPSAiM0QgZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIGNvbW1vbiBsb2FkZXIiCi1ERVNDUklQVElPTiA9ICJWdWxrYW4gaXMgYSBuZXcgZ2VuZXJhdGlvbiBncmFwaGljcyBhbmQgY29tcHV0ZSBBUEkgXAotdGhhdCBwcm92aWRlcyBlZmZpY2llbnQgYWNjZXNzIHRvIG1vZGVybiBHUFVzLiBUaGVzZSBwYWNrYWdlcyBcCi1wcm92aWRlIG9ubHkgdGhlIGNvbW1vbiB2ZW5kb3ItYWdub3N0aWMgbGlicmFyeSBsb2FkZXIsIGhlYWRlcnMgYW5kIFwKLXRoZSB2dWxrYW5pbmZvIHV0aWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvdnVsa2FuLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkFwYWNoZS0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFLnR4dDttZDU9N2RiZWZlZDIzMjQyNzYwYWEzNDc1ZWU0MjgwMWM1YWMiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1Mb2FkZXIuZ2l0O2JyYW5jaD1zZGstJHtQVn0iCi1TUkNSRVYgPSAiZWNiMGIxZTY5ZmIyZjRkM2NhZTI2MmU2ZGEyNGMxNzBjZTYyYWUxMyIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInZ1bGthbiIKLQotaW5oZXJpdCBjbWFrZSBmZWF0dXJlc19jaGVjawotQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgd2F5bGFuZCIKLQotREVQRU5EUyArPSAidnVsa2FuLWhlYWRlcnMiCi0KLUVYVFJBX09FQ01BS0UgPSAiXAotICAgICAgICAgICAgICAgICAtREJVSUxEX1RFU1RTPU9GRiBcCi0gICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9JHtIT1NUVE9PTFNfRElSfS9weXRob24zIFwKLSAgICAgICAgICAgICAgICAgIgotCi0jIG11c3QgY2hvb3NlIHgxMSBvciB3YXlsYW5kIG9yIGJvdGgKLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PTiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PTiwgLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9GRiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PRkYsIGxpYnhjYiBsaWJ4MTEgbGlieHJhbmRyIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T04sIC1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PRkYsIHdheWxhbmQiCi0KLVJSRUNPTU1FTkRTXyR7UE59ID0gIm1lc2EtdnVsa2FuLWRyaXZlcnMiCi0KLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInNkay0oP1A8cHZlcj5cZCsoXC5cZCspKykiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWxvYWRlcl8xLjEuMTI2LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLWxvYWRlcl8xLjEuMTI2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTA0Y2Y4NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tbG9hZGVyXzEuMS4xMjYuMC5iYgpAQCAtMCwwICsxLDM4IEBACitTVU1NQVJZID0gIjNEIGdyYXBoaWNzIGFuZCBjb21wdXRlIEFQSSBjb21tb24gbG9hZGVyIgorREVTQ1JJUFRJT04gPSAiVnVsa2FuIGlzIGEgbmV3IGdlbmVyYXRpb24gZ3JhcGhpY3MgYW5kIGNvbXB1dGUgQVBJIFwKK3RoYXQgcHJvdmlkZXMgZWZmaWNpZW50IGFjY2VzcyB0byBtb2Rlcm4gR1BVcy4gVGhlc2UgcGFja2FnZXMgXAorcHJvdmlkZSBvbmx5IHRoZSBjb21tb24gdmVuZG9yLWFnbm9zdGljIGxpYnJhcnkgbG9hZGVyLCBoZWFkZXJzIGFuZCBcCit0aGUgdnVsa2FuaW5mbyB1dGlsaXR5LiIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lmtocm9ub3Mub3JnL3Z1bGthbi8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLUxvYWRlciIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTdkYmVmZWQyMzI0Mjc2MGFhMzQ3NWVlNDI4MDFjNWFjIgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tTG9hZGVyLmdpdDticmFuY2g9c2RrLTEuMS4xMjYiCitTUkNSRVYgPSAiNGFkYWQ0ZmY3MDVmYTc2ZjllZGIyZDM3Y2I1N2U1OTNkZWNiNjBlZCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInZ1bGthbiIKKworaW5oZXJpdCBjbWFrZSBmZWF0dXJlc19jaGVjaworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEgd2F5bGFuZCIKKworREVQRU5EUyArPSAidnVsa2FuLWhlYWRlcnMiCisKK0VYVFJBX09FQ01BS0UgPSAiXAorICAgICAgICAgICAgICAgICAtREJVSUxEX1RFU1RTPU9GRiBcCisgICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9JHtIT1NUVE9PTFNfRElSfS9weXRob24zIFwKKyAgICAgICAgICAgICAgICAgLURBU1NFTUJMRVJfV09SS1M9RkFMU0UgXAorICAgICAgICAgICAgICAgICAiCisKKyMgbXVzdCBjaG9vc2UgeDExIG9yIHdheWxhbmQgb3IgYm90aAorUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgorCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9OIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9OLCAtREJVSUxEX1dTSV9YTElCX1NVUFBPUlQ9T0ZGIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9GRiwgbGlieGNiIGxpYngxMSBsaWJ4cmFuZHIiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PTiwgLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9GRiwgd2F5bGFuZCIKKworUlJFQ09NTUVORFNfJHtQTn0gPSAibWVzYS12dWxrYW4tZHJpdmVycyIKKworVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAic2RrLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tdG9vbHNfMS4xLjEwOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tdG9vbHNfMS4xLjEwOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNGFjMWJhZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy92dWxrYW4vdnVsa2FuLXRvb2xzXzEuMS4xMDguYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMSArMCwwIEBACi1TVU1NQVJZID0gIlZ1bGthbiBVdGlsaXRpZXMgYW5kIFRvb2xzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cua2hyb25vcy5vcmcvdnVsa2FuLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tVG9vbHMiCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiQXBhY2hlLTIuMCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0UudHh0O21kNT0zYjgzZWY5NjM4N2YxNDY1NWZjODU0ZGRjM2M2YmQ1NyIKLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9LaHJvbm9zR3JvdXAvVnVsa2FuLVRvb2xzLmdpdDticmFuY2g9c2RrLSR7UFZ9IgotU1JDUkVWID0gIjNjY2Q3ZjZlYmFlM2UxOTE5YWRmODM3NzE4YzA0ZmViNmMyYWNjNjEiCi0KLVMgPSAiJHtXT1JLRElSfS9naXQiCi0KLWluaGVyaXQgY21ha2UgZmVhdHVyZXNfY2hlY2sKLUFOWV9PRl9ESVNUUk9fRkVBVFVSRVMgPSAieDExIHdheWxhbmQiCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAidnVsa2FuIgotCi1ERVBFTkRTICs9ICJ2dWxrYW4taGVhZGVycyB2dWxrYW4tbG9hZGVyIgotCi1FWFRSQV9PRUNNQUtFID0gIlwKLSAgICAgICAgICAgICAgICAgLURCVUlMRF9URVNUUz1PRkYgXAotICAgICAgICAgICAgICAgICAtREJVSUxEX0NVQkU9T0ZGIFwKLSAgICAgICAgICAgICAgICAgLURQWVRIT05fRVhFQ1VUQUJMRT0ke0hPU1RUT09MU19ESVJ9L3B5dGhvbjMgXAotICAgICAgICAgICAgICAgICAiCi0KLSMgbXVzdCBjaG9vc2UgeDExIG9yIHdheWxhbmQgb3IgYm90aAotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQgeDExJywgZCl9IgotCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9OIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9OLCAtREJVSUxEX1dTSV9YTElCX1NVUFBPUlQ9T0ZGIC1EQlVJTERfV1NJX1hDQl9TVVBQT1JUPU9GRiwgbGlieGNiIGxpYngxMSBsaWJ4cmFuZHIiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PTiwgLURCVUlMRF9XU0lfV0FZTEFORF9TVVBQT1JUPU9GRiwgd2F5bGFuZCIKLQotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAic2RrLSg/UDxwdmVyPlxkKyhcLlxkKykrKSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tdG9vbHNfMS4xLjEyNi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MvdnVsa2FuL3Z1bGthbi10b29sc18xLjEuMTI2LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmZkNjFjOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3Z1bGthbi92dWxrYW4tdG9vbHNfMS4xLjEyNi4wLmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiVnVsa2FuIFV0aWxpdGllcyBhbmQgVG9vbHMiCitIT01FUEFHRSA9ICJodHRwczovL3d3dy5raHJvbm9zLm9yZy92dWxrYW4vIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vS2hyb25vc0dyb3VwL1Z1bGthbi1Ub29scyIKK1NFQ1RJT04gPSAibGlicyIKKworTElDRU5TRSA9ICJBcGFjaGUtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRS50eHQ7bWQ1PTNiODNlZjk2Mzg3ZjE0NjU1ZmM4NTRkZGMzYzZiZDU3IgorU1JDX1VSSSA9ICJnaXQ6Ly9naXRodWIuY29tL0tocm9ub3NHcm91cC9WdWxrYW4tVG9vbHMuZ2l0O2JyYW5jaD1zZGstMS4xLjEyNiIKK1NSQ1JFViA9ICIwOTY5NWRmYzVkYmU1NGY4NjlhZWFmZjhkYjkzYmI3YmI2YTIyMGUwIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGNtYWtlIGZlYXR1cmVzX2NoZWNrCitBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIngxMSB3YXlsYW5kIgorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gInZ1bGthbiIKKworREVQRU5EUyArPSAidnVsa2FuLWhlYWRlcnMgdnVsa2FuLWxvYWRlciIKKworRVhUUkFfT0VDTUFLRSA9ICJcCisgICAgICAgICAgICAgICAgIC1EQlVJTERfVEVTVFM9T0ZGIFwKKyAgICAgICAgICAgICAgICAgLURCVUlMRF9DVUJFPU9GRiBcCisgICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9JHtIT1NUVE9PTFNfRElSfS9weXRob24zIFwKKyAgICAgICAgICAgICAgICAgIgorCisjIG11c3QgY2hvb3NlIHgxMSBvciB3YXlsYW5kIG9yIGJvdGgKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKKworUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1EQlVJTERfV1NJX1hMSUJfU1VQUE9SVD1PTiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PTiwgLURCVUlMRF9XU0lfWExJQl9TVVBQT1JUPU9GRiAtREJVSUxEX1dTSV9YQ0JfU1VQUE9SVD1PRkYsIGxpYnhjYiBsaWJ4MTEgbGlieHJhbmRyIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREJVSUxEX1dTSV9XQVlMQU5EX1NVUFBPUlQ9T04sIC1EQlVJTERfV1NJX1dBWUxBTkRfU1VQUE9SVD1PRkYsIHdheWxhbmQiCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInNkay0oP1A8cHZlcj5cZCsoXC5cZCspKykiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YWZmbGUvd2FmZmxlXzEuNi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2FmZmxlL3dhZmZsZV8xLjYuMC5iYgppbmRleCA1MmNiMWRmLi5hNjIwMjk1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YWZmbGUvd2FmZmxlXzEuNi4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dhZmZsZS93YWZmbGVfMS42LjAuYmIKQEAgLTExLDYgKzExLDggQEAKIAogaW5oZXJpdCBtZXNvbiBmZWF0dXJlc19jaGVjayBsaWJfcGFja2FnZSBiYXNoLWNvbXBsZXRpb24KIAorREVQRU5EU19hcHBlbmQgPSAiIHB5dGhvbjMiCisKICMgVGhpcyBzaG91bGQgYmUgb3ZlcnJpZGRlbiBwZXItbWFjaGluZSB0byByZWZsZWN0IHRoZSBjYXBhYmlsaXRpZXMgb2YgdGhlIEdMCiAjIHN0YWNrLgogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJ2dseCB4MTEtZWdsJywgJycsIGQpfSBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0L2RldGVybWluaXNtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dC9kZXRlcm1pbmlzbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYjU1NDAzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dC9kZXRlcm1pbmlzbS5wYXRjaApAQCAtMCwwICsxLDIxIEBACitUaGlzIGZpbmRzIG91ciBvdXRlciBnaXQgdHJlZSBhbmQgdGhhdCB2ZXJzaW9uIGluZm9ybWF0aW9uIGJyZWFrcworZGV0ZXJtaW5pc20gb2YgdGhpcyByZWNpcGUuIERpc2FibGUgaXQuCisKK1JQIDIwMjAvMi82CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogUmljaGFyZCBQdXJkaWUgPHJpY2hhcmQucHVyZGllQGxpbnV4Zm91bmRhdGlvbi5vcmc+CisKK0luZGV4OiBsaWJpbnB1dC0xLjE0LjMvbWVzb24uYnVpbGQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaWJpbnB1dC0xLjE0LjMub3JpZy9tZXNvbi5idWlsZAorKysrIGxpYmlucHV0LTEuMTQuMy9tZXNvbi5idWlsZAorQEAgLTM4Nyw3ICszODcsNyBAQCBwa2djb25maWcuZ2VuZXJhdGUoCisgCWxpYnJhcmllcyA6IGxpYl9saWJpbnB1dAorICkKKyAKKy1naXRfdmVyc2lvbl9oID0gdmNzX3RhZyhjb21tYW5kIDogWydnaXQnLCAnZGVzY3JpYmUnXSwKKytnaXRfdmVyc2lvbl9oID0gdmNzX3RhZyhjb21tYW5kIDogWydmYWxzZSddLAorIAkJCWZhbGxiYWNrIDogJ3Vua25vd24nLAorIAkJCWlucHV0IDogJ3NyYy9saWJpbnB1dC1naXQtdmVyc2lvbi5oLmluJywKKyAJCQlvdXRwdXQgOidsaWJpbnB1dC1naXQtdmVyc2lvbi5oJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbGliaW5wdXRfMS4xNC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjE0LjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYwNmE4ZDIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjE0LjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgdG8gaGFuZGxlIGlucHV0IGRldmljZXMgaW4gV2F5bGFuZCBjb21wb3NpdG9ycyIKLURFU0NSSVBUSU9OID0gImxpYmlucHV0IGlzIGEgbGlicmFyeSB0byBoYW5kbGUgaW5wdXQgZGV2aWNlcyBpbiBXYXlsYW5kIFwKLWNvbXBvc2l0b3JzIGFuZCB0byBwcm92aWRlIGEgZ2VuZXJpYyBYLk9yZyBpbnB1dCBkcml2ZXIuIEl0IHByb3ZpZGVzIFwKLWRldmljZSBkZXRlY3Rpb24sIGRldmljZSBoYW5kbGluZywgaW5wdXQgZGV2aWNlIGV2ZW50IHByb2Nlc3NpbmcgYW5kIFwKLWFic3RyYWN0aW9uIHNvIG1pbmltaXplIHRoZSBhbW91bnQgb2YgY3VzdG9tIGlucHV0IGNvZGUgY29tcG9zaXRvcnMgbmVlZCB0byBcCi1wcm92aWRlIHRoZSBjb21tb24gc2V0IG9mIGZ1bmN0aW9uYWxpdHkgdGhhdCB1c2VycyBleHBlY3QuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9saWJpbnB1dC8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWYyZWE5ZWJmZjNhMmM2ZDQ1OGZhZjU4NDkyZWZiNjMiCi0KLURFUEVORFMgPSAibGliZXZkZXYgdWRldiBtdGRldiIKLQotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS8ke0JQTn0vJHtCUH0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gImQwNTJmYWE2NGViNmQyZTY0OWU1ODJjYzBmY2Y2ZTMyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBmZWIzYTA1ODk3MDljYzEwMzI4OTNiZmFmNGM0OTE1MGQ1MzYwYmQ5NzgyYmVjODg4ZjllNGRkOTA0NGM1YjciCi0KLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImxpYmlucHV0LSg/UDxwdmVyPlxkK1wuXGQrXC4oPyE5XGQrKVxkKykiCi0KLWluaGVyaXQgbWVzb24gcGtnY29uZmlnIGxpYl9wYWNrYWdlCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2xpYndhY29tXSA9ICItRGxpYndhY29tPXRydWUsLURsaWJ3YWNvbT1mYWxzZSxsaWJ3YWNvbSIKLVBBQ0tBR0VDT05GSUdbZ3VpXSA9ICItRGRlYnVnLWd1aT10cnVlLC1EZGVidWctZ3VpPWZhbHNlLGNhaXJvIGd0ayszIgotCi1VREVWRElSID0gImBwa2ctY29uZmlnIC0tdmFyaWFibGU9dWRldmRpciB1ZGV2YCIKLQotRVhUUkFfT0VNRVNPTiArPSAiLUR1ZGV2LWRpcj0ke1VERVZESVJ9IFwKLSAgICAgICAgICAgICAgICAgIC1EZG9jdW1lbnRhdGlvbj1mYWxzZSBcCi0gICAgICAgICAgICAgICAgICAtRHRlc3RzPWZhbHNlIFwKLSAgICAgICAgICAgICAgICAgIC1EenNoY29tcGxldGlvbmRpcj1ubyIKLQotIyBwYWNrYWdlIG5hbWUgY2hhbmdlZCBpbiAxLjguMSB1cGdyYWRlOiBtYWtlIHN1cmUgcGFja2FnZSB1cGdyYWRlcyB3b3JrCi1SUFJPVklERVNfJHtQTn0gPSAibGliaW5wdXQiCi1SUkVQTEFDRVNfJHtQTn0gPSAibGliaW5wdXQiCi1SQ09ORkxJQ1RTXyR7UE59ID0gImxpYmlucHV0IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjE1LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL2xpYmlucHV0XzEuMTUuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MTA1MzI3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9saWJpbnB1dF8xLjE1LjIuYmIKQEAgLTAsMCArMSw0MCBAQAorU1VNTUFSWSA9ICJMaWJyYXJ5IHRvIGhhbmRsZSBpbnB1dCBkZXZpY2VzIGluIFdheWxhbmQgY29tcG9zaXRvcnMiCitERVNDUklQVElPTiA9ICJsaWJpbnB1dCBpcyBhIGxpYnJhcnkgdG8gaGFuZGxlIGlucHV0IGRldmljZXMgaW4gV2F5bGFuZCBcCitjb21wb3NpdG9ycyBhbmQgdG8gcHJvdmlkZSBhIGdlbmVyaWMgWC5PcmcgaW5wdXQgZHJpdmVyLiBJdCBwcm92aWRlcyBcCitkZXZpY2UgZGV0ZWN0aW9uLCBkZXZpY2UgaGFuZGxpbmcsIGlucHV0IGRldmljZSBldmVudCBwcm9jZXNzaW5nIGFuZCBcCithYnN0cmFjdGlvbiBzbyBtaW5pbWl6ZSB0aGUgYW1vdW50IG9mIGN1c3RvbSBpbnB1dCBjb2RlIGNvbXBvc2l0b3JzIG5lZWQgdG8gXAorcHJvdmlkZSB0aGUgY29tbW9uIHNldCBvZiBmdW5jdGlvbmFsaXR5IHRoYXQgdXNlcnMgZXhwZWN0LiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvbGliaW5wdXQvIgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTFmMmVhOWViZmYzYTJjNmQ0NThmYWY1ODQ5MmVmYjYzIgorCitERVBFTkRTID0gImxpYmV2ZGV2IHVkZXYgbXRkZXYiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvJHtCUE59LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9kZXRlcm1pbmlzbS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYjZiZDI5MDdhZDMzZDUzOTU0ZDcwZGZiODgxYTY0MyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NzFjM2ZiZmI2MjRmOTVjOTExYWRlYjI4MDNjMzcyZTRlMzY0N2QxYjk4ZjI3OGY2NjAwNTFmODM0NTk3NzQ3IgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJsaWJpbnB1dC0oP1A8cHZlcj5cZCtcLlxkK1wuKD8hOVxkKylcZCspIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBsaWJfcGFja2FnZQorCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tsaWJ3YWNvbV0gPSAiLURsaWJ3YWNvbT10cnVlLC1EbGlid2Fjb209ZmFsc2UsbGlid2Fjb20iCitQQUNLQUdFQ09ORklHW2d1aV0gPSAiLURkZWJ1Zy1ndWk9dHJ1ZSwtRGRlYnVnLWd1aT1mYWxzZSxjYWlybyBndGsrMyIKKworVURFVkRJUiA9ICJgcGtnLWNvbmZpZyAtLXZhcmlhYmxlPXVkZXZkaXIgdWRldmAiCisKK0VYVFJBX09FTUVTT04gKz0gIi1EdWRldi1kaXI9JHtVREVWRElSfSBcCisgICAgICAgICAgICAgICAgICAtRGRvY3VtZW50YXRpb249ZmFsc2UgXAorICAgICAgICAgICAgICAgICAgLUR0ZXN0cz1mYWxzZSBcCisgICAgICAgICAgICAgICAgICAtRHpzaGNvbXBsZXRpb25kaXI9bm8iCisKKyMgcGFja2FnZSBuYW1lIGNoYW5nZWQgaW4gMS44LjEgdXBncmFkZTogbWFrZSBzdXJlIHBhY2thZ2UgdXBncmFkZXMgd29yaworUlBST1ZJREVTXyR7UE59ID0gImxpYmlucHV0IgorUlJFUExBQ0VTXyR7UE59ID0gImxpYmlucHV0IgorUkNPTkZMSUNUU18ke1BOfSA9ICJsaWJpbnB1dCIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9tdGRldl8xLjEuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbXRkZXZfMS4xLjUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGNjZDBlYmIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9tdGRldl8xLjEuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLVNVTU1BUlkgPSAiTXVsdGl0b3VjaCBQcm90b2NvbCBUcmFuc2xhdGlvbiBMaWJyYXJ5IgotCi1ERVNDUklQVElPTiA9ICJtdGRldiBpcyBhIGxpYnJhcnkgd2hpY2ggdHJhbnNmb3JtcyBhbGwgdmFyaWFudHMgb2Yga2VybmVsIFwKLW11bHRpdG91Y2ggZXZlbnRzIHRvIHRoZSBzbG90dGVkIHR5cGUgQiBwcm90b2NvbC4gVGhlIGV2ZW50cyBwdXQgaW50byBtdGRldiBtYXkgXAotYmUgZnJvbSBhbnkgTVQgZGV2aWNlLCBzcGVjaWZpY2FsbHkgdHlwZSBBIHdpdGhvdXQgY29udGFjdCB0cmFja2luZywgdHlwZSBBIHdpdGggXAotY29udGFjdCB0cmFja2luZywgb3IgdHlwZSBCIHdpdGggY29udGFjdCB0cmFja2luZyIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2JpdG1hdGgub3JnL2NvZGUvbXRkZXYvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWVhNmJkMDI2OGJiMGZjZDZiMjc2OTg2MTZjZWVlNWQ2IgotCi1TUkNfVVJJID0gImh0dHA6Ly9iaXRtYXRoLm9yZy9jb2RlLyR7QlBOfS8ke0JQfS50YXIuYnoyIgotU1JDX1VSSVttZDVzdW1dID0gIjUyYzk2MTBiNjAwMmY3MWQxNjQyZGMxYTFjY2E1ZWMxIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjY2NzdkNTcwOGE3OTQ4ODQwZGU3MzRkOGI0Njc1ZDU5ODBkNDU2MTE3MWM1YThlODllNTRhZGY3YTEzZWJhN2YiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC9tdGRldl8xLjEuNi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbXRkZXZfMS4xLjYuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2MxY2I1ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvbXRkZXZfMS4xLjYuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJNdWx0aXRvdWNoIFByb3RvY29sIFRyYW5zbGF0aW9uIExpYnJhcnkiCisKK0RFU0NSSVBUSU9OID0gIm10ZGV2IGlzIGEgbGlicmFyeSB3aGljaCB0cmFuc2Zvcm1zIGFsbCB2YXJpYW50cyBvZiBrZXJuZWwgXAorbXVsdGl0b3VjaCBldmVudHMgdG8gdGhlIHNsb3R0ZWQgdHlwZSBCIHByb3RvY29sLiBUaGUgZXZlbnRzIHB1dCBpbnRvIG10ZGV2IG1heSBcCitiZSBmcm9tIGFueSBNVCBkZXZpY2UsIHNwZWNpZmljYWxseSB0eXBlIEEgd2l0aG91dCBjb250YWN0IHRyYWNraW5nLCB0eXBlIEEgd2l0aCBcCitjb250YWN0IHRyYWNraW5nLCBvciB0eXBlIEIgd2l0aCBjb250YWN0IHRyYWNraW5nIgorCitIT01FUEFHRSA9ICJodHRwOi8vYml0bWF0aC5vcmcvY29kZS9tdGRldi8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZWE2YmQwMjY4YmIwZmNkNmIyNzY5ODYxNmNlZWU1ZDYiCisKK1NSQ19VUkkgPSAiaHR0cDovL2JpdG1hdGgub3JnL2NvZGUvJHtCUE59LyR7QlB9LnRhci5iejIiCitTUkNfVVJJW21kNXN1bV0gPSAiYmY4ZWYyNDgyZTg0YTAwYjVkYjhmYmQzY2UwMGUyNDkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTVkN2IyOGRhOGFjNzFkOGJjOGM5Mjg3YzIwNDVmZDE3NDI2N2JjNzQwYmVjMTBjZmRhMzMyZGMxMjA0ZTBlMCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMTguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMTguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM4YmVjNjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLXByb3RvY29sc18xLjE4LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJDb2xsZWN0aW9uIG9mIGFkZGl0aW9uYWwgV2F5bGFuZCBwcm90b2NvbHMiCi1ERVNDUklQVElPTiA9ICJXYXlsYW5kIHByb3RvY29scyB0aGF0IGFkZCBmdW5jdGlvbmFsaXR5IG5vdCBcCi1hdmFpbGFibGUgaW4gdGhlIFdheWxhbmQgY29yZSBwcm90b2NvbC4gU3VjaCBwcm90b2NvbHMgZWl0aGVyIGFkZCBcCi1jb21wbGV0ZWx5IG5ldyBmdW5jdGlvbmFsaXR5LCBvciBleHRlbmQgdGhlIGZ1bmN0aW9uYWxpdHkgb2Ygc29tZSBvdGhlciBcCi1wcm90b2NvbCBlaXRoZXIgaW4gV2F5bGFuZCBjb3JlLCBvciBzb21lIG90aGVyIHByb3RvY29sIGluIFwKLXdheWxhbmQtcHJvdG9jb2xzLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YzdiMTJiNjcwMmRhMzhjYTAyOGFjZTU0YWFlM2Q0ODQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3RhYmxlL3ByZXNlbnRhdGlvbi10aW1lL3ByZXNlbnRhdGlvbi10aW1lLnhtbDtlbmRsaW5lPTI2O21kNT00NjQ2Y2Q3ZDllZGM5ZmE1NWRiOTQxZjJkM2E3ZGM1MyIKLQotU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYWYzOGYyMmQ4ZTIzM2MyZjJlMDBkZGM4ZGNjOTQ2OTQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiM2Q3M2I3ZTc2NjE3NjNkYzA5ZDdkOTEwNzY3ODQwMDEwMWVjZmYyYjViMWU1MzE2NzRhYmZhODFlMDQ4NzRiMyIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMuaHRtbCIKLQotaW5oZXJpdCBhbGxhcmNoIGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRVMgPSAiJHtQTn0iCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9wa2djb25maWcvd2F5bGFuZC1wcm90b2NvbHMucGMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQtcHJvdG9jb2xzXzEuMjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2ZiNzhmNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC1wcm90b2NvbHNfMS4yMC5iYgpAQCAtMCwwICsxLDIyIEBACitTVU1NQVJZID0gIkNvbGxlY3Rpb24gb2YgYWRkaXRpb25hbCBXYXlsYW5kIHByb3RvY29scyIKK0RFU0NSSVBUSU9OID0gIldheWxhbmQgcHJvdG9jb2xzIHRoYXQgYWRkIGZ1bmN0aW9uYWxpdHkgbm90IFwKK2F2YWlsYWJsZSBpbiB0aGUgV2F5bGFuZCBjb3JlIHByb3RvY29sLiBTdWNoIHByb3RvY29scyBlaXRoZXIgYWRkIFwKK2NvbXBsZXRlbHkgbmV3IGZ1bmN0aW9uYWxpdHksIG9yIGV4dGVuZCB0aGUgZnVuY3Rpb25hbGl0eSBvZiBzb21lIG90aGVyIFwKK3Byb3RvY29sIGVpdGhlciBpbiBXYXlsYW5kIGNvcmUsIG9yIHNvbWUgb3RoZXIgcHJvdG9jb2wgaW4gXAord2F5bGFuZC1wcm90b2NvbHMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jN2IxMmI2NzAyZGEzOGNhMDI4YWNlNTRhYWUzZDQ4NCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zdGFibGUvcHJlc2VudGF0aW9uLXRpbWUvcHJlc2VudGF0aW9uLXRpbWUueG1sO2VuZGxpbmU9MjY7bWQ1PTQ2NDZjZDdkOWVkYzlmYTU1ZGI5NDFmMmQzYTdkYzUzIgorCitTUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiMDgzNjUzM2EzZjJkYzY1ODViMWRhZTAwMzQxMTU3ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI5NzgyYjdhMWE4NjNkODJkN2M5MjQ3ODQ5N2QxM2M3NThmNTJlN2RhNGYxOTdhYTE2NDQzZjczZGU3N2U0ZGU3IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy5odG1sIgorCitpbmhlcml0IGFsbGFyY2ggYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFUyA9ICIke1BOfSIKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZy93YXlsYW5kLXByb3RvY29scy5wYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLWJ1aWxkLUZpeC1zdHJuZHVwLWRldGVjdGlvbi1vbi1NaW5HVy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLWJ1aWxkLUZpeC1zdHJuZHVwLWRldGVjdGlvbi1vbi1NaW5HVy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNDQ1ODM4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDEtYnVpbGQtRml4LXN0cm5kdXAtZGV0ZWN0aW9uLW9uLU1pbkdXLnBhdGNoCkBAIC0wLDAgKzEsMzkgQEAKK0Zyb20gZTY3ODNjOTlmMDUxYzZkODI1MmRiNWYzODhkODA1Y2VmMGUxNjM1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjAgRmViIDIwMjAgMTU6MjA6NDUgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gYnVpbGQ6IEZpeCBzdHJuZHVwIGRldGVjdGlvbiBvbiBNaW5HVworCitHQ0MgYW5kIG1lc29uIGNvbnNwaXJlIHRvZ2V0aGVyIHRvIGluY29ycmVjdGx5IGRldGVjdCB0aGF0IHN0cm5kdXAoKQorZXhpc3RzIG9uIE1pbkdXIGFzIF9fYnVpbHRpbl9zdHJuZHVwLCB3aGVuIG5vIHN1Y2ggZnVuY3Rpb24gZXhpc3RzLiBBcyBhCit3b3JrIGFyb3VuZCwgbWVzb24gd2lsbCBza2lwIGxvb2tpbmcgZm9yIF9fYnVpbHRpbiBmdW5jdGlvbnMgaWYgYW4KKycjaW5jbHVkZScgaXMgaW4gdGhlIHByZWZpeCwgc28gYWRkICcjaW5jbHVkZSA8c3RyaW5nLmg+JyB3aGVuIGxvb2tpbmcKK2ZvciBzdHJuZHVwKCkuCisKK1NlZTogaHR0cHM6Ly9naXRodWIuY29tL21lc29uYnVpbGQvbWVzb24vaXNzdWVzLzM2NzIKKworU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy93YXlsYW5kL3dheWxhbmQvbWVyZ2VfcmVxdWVzdHMvNjNdCistLS0KKyBtZXNvbi5idWlsZCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDI2YjA4NGYuLmMwNWQwMTkgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC0zNiwxMSArMzYsMTEgQEAgaGF2ZV9mdW5jcyA9IFsKKyAJJ3Bvc2l4X2ZhbGxvY2F0ZScsCisgCSdwcmN0bCcsCisgCSdtZW1mZF9jcmVhdGUnLAorLQknc3RybmR1cCcsCisgXQorIGZvcmVhY2ggZjogaGF2ZV9mdW5jcworIAljb25maWdfaC5zZXQoJ0hBVkVfJyArIGYudW5kZXJzY29yaWZ5KCkudG9fdXBwZXIoKSwgY2MuaGFzX2Z1bmN0aW9uKGYpKQorIGVuZGZvcmVhY2gKKytjb25maWdfaC5zZXQoJ0hBVkVfU1RSTkRVUCcsIGNjLmhhc19mdW5jdGlvbignc3RybmR1cCcsIHByZWZpeDonI2luY2x1ZGUgPHN0cmluZy5oPicpKQorIAorIGlmIGdldF9vcHRpb24oJ2xpYnJhcmllcycpCisgCWZmaV9kZXAgPSBkZXBlbmRlbmN5KCdsaWJmZmknKQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDEtbWVzb24tdGVzdHMtYWRkLW1pc3NpbmctZGVwZW5kZW5jaWVzLW9uLXByb3RvY29sLWhlYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLW1lc29uLXRlc3RzLWFkZC1taXNzaW5nLWRlcGVuZGVuY2llcy1vbi1wcm90b2NvbC1oZWEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjFkZTBlMAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLW1lc29uLXRlc3RzLWFkZC1taXNzaW5nLWRlcGVuZGVuY2llcy1vbi1wcm90b2NvbC1oZWEucGF0Y2gKQEAgLTAsMCArMSwxMTUgQEAKK0Zyb20gYjJjNzRmNmEzZGJlMGFlZTI0MTM4MDA4MzczMTQxMzY5NDdhNDk4NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphbiBCZWljaCA8amJlaWNoQEZyZWVCU0Qub3JnPgorRGF0ZTogU2F0LCAxNSBGZWIgMjAyMCAwMjowMzo0NSArMDAwMAorU3ViamVjdDogW1BBVENIXSBtZXNvbi90ZXN0czogYWRkIG1pc3NpbmcgZGVwZW5kZW5jaWVzIG9uIHByb3RvY29sIGhlYWRlcnMKKworSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3Rlc3RzL2Nvbm5lY3Rpb24tdGVzdC5jOjQzOgorSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3Rlc3RzL3Rlc3QtY29tcG9zaXRvci5oOjMwOgorLi4vc3JjL3dheWxhbmQtY2xpZW50Lmg6NDA6MTA6IGZhdGFsIGVycm9yOiAnd2F5bGFuZC1jbGllbnQtcHJvdG9jb2wuaCcgZmlsZSBub3QgZm91bmQKKyAjaW5jbHVkZSAid2F5bGFuZC1jbGllbnQtcHJvdG9jb2wuaCIKKyAgICAgICAgICBefn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+fn4KK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi90ZXN0cy9kaXNwbGF5LXRlc3QuYzo0NToKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi9zcmMvd2F5bGFuZC1zZXJ2ZXIuaDoxMDQ6CitzcmMvd2F5bGFuZC1zZXJ2ZXItcHJvdG9jb2wuaDo0NDU0OjI6IGVycm9yOiB1bnRlcm1pbmF0ZWQgLyogY29tbWVudAorICAgICAgICAvKioKKyAgICAgICAgXgorSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3Rlc3RzL2NwcC1jb21waWxlLXRlc3QuY3BwOjI6CitJbiBmaWxlIGluY2x1ZGVkIGZyb20gc3JjL3dheWxhbmQtc2VydmVyLXByb3RvY29sLmg6ODoKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi9zcmMvd2F5bGFuZC1zZXJ2ZXIuaDoxMDQ6CitzcmMvd2F5bGFuZC1zZXJ2ZXItcHJvdG9jb2wuaDozOjI6IGVycm9yOiB1bnRlcm1pbmF0ZWQgY29uZGl0aW9uYWwgZGlyZWN0aXZlCisgI2lmbmRlZiBXQVlMQU5EX1NFUlZFUl9QUk9UT0NPTF9ICisgIF4KKy4uL3Rlc3RzL2hlYWRlcnMtcHJvdG9jb2wtdGVzdC5jOjMzOjI6IGVycm9yOiBpbmNsdWRpbmcgd2F5bGFuZC1zZXJ2ZXItcHJvdG9jb2wuaCBkaWQgbm90IGluY2x1ZGUgd2F5bGFuZC1zZXJ2ZXIuaCEKKyAjZXJyb3IgaW5jbHVkaW5nIHdheWxhbmQtc2VydmVyLXByb3RvY29sLmggZGlkIG5vdCBpbmNsdWRlIHdheWxhbmQtc2VydmVyLmghCisgIF4KK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi90ZXN0cy9oZWFkZXJzLXByb3RvY29sLXRlc3QuYzoyNjoKK0luIGZpbGUgaW5jbHVkZWQgZnJvbSBzcmMvd2F5bGFuZC1jbGllbnQtcHJvdG9jb2wuaDo4OgorSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3NyYy93YXlsYW5kLWNsaWVudC5oOjQwOgorc3JjL3dheWxhbmQtY2xpZW50LXByb3RvY29sLmg6MTM1ODoyOiBlcnJvcjogdW50ZXJtaW5hdGVkIGNvbmRpdGlvbmFsIGRpcmVjdGl2ZQorICNpZm5kZWYgV0xfU0hNX0ZPUk1BVF9FTlVNCisgIF4KK0luIGZpbGUgaW5jbHVkZWQgZnJvbSAuLi90ZXN0cy9wcm90b2NvbC1sb2dnZXItdGVzdC5jOjM0OgorSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3NyYy93YXlsYW5kLWNsaWVudC5oOjQwOgorc3JjL3dheWxhbmQtY2xpZW50LXByb3RvY29sLmg6MjYxMzoxOiBlcnJvcjogdW50ZXJtaW5hdGVkIC8qIGNvbW1lbnQKKy8qKgorXgorLi4vdGVzdHMvcmVzb3VyY2VzLXRlc3QuYzo0OTozNjogZXJyb3I6IHVzZSBvZiB1bmRlY2xhcmVkIGlkZW50aWZpZXIgJ3dsX3NlYXRfaW50ZXJmYWNlJworICAgICAgICByZXMgPSB3bF9yZXNvdXJjZV9jcmVhdGUoY2xpZW50LCAmd2xfc2VhdF9pbnRlcmZhY2UsIDQsIDApOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyB0ZXN0cy9tZXNvbi5idWlsZCB8IDI2ICsrKysrKysrKysrKysrKysrKy0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDE4IGluc2VydGlvbnMoKyksIDggZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9tZXNvbi5idWlsZCBiL3Rlc3RzL21lc29uLmJ1aWxkCitpbmRleCBjMjhhMmEzLi5mMWFmN2I0IDEwMDY0NAorLS0tIGEvdGVzdHMvbWVzb24uYnVpbGQKKysrKyBiL3Rlc3RzL21lc29uLmJ1aWxkCitAQCAtNjksNyArNjksNyBAQCB0ZXN0KAorIAlleGVjdXRhYmxlKAorIAkJJ2NwcC1jb21waWxlLXRlc3QnLAorIAkJJ2NwcC1jb21waWxlLXRlc3QuY3BwJywKKy0JCXdheWxhbmRfc2VydmVyX3Byb3RvY29sX2NvcmVfaCwKKysJCXdheWxhbmRfc2VydmVyX3Byb3RvY29sX2gsCisgCQlpbmNsdWRlX2RpcmVjdG9yaWVzOiBzcmNfaW5jCisgCSkKKyApCitAQCAtOTEsMTcgKzkxLDI1IEBAIHRlc3RzID0geworIAknYXJyYXktdGVzdCc6IFtdLAorIAknY2xpZW50LXRlc3QnOiBbIHdheWxhbmRfc2VydmVyX3Byb3RvY29sX2ggXSwKKyAJJ2Rpc3BsYXktdGVzdCc6IFsKKysJCXdheWxhbmRfY2xpZW50X3Byb3RvY29sX2gsCisrCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oLAorIAkJdGVzdHNfc2VydmVyX3Byb3RvY29sX2gsCisgCQl0ZXN0c19jbGllbnRfcHJvdG9jb2xfYywKKyAJCXRlc3RzX3Byb3RvY29sX2MsCisgCV0sCistCSdjb25uZWN0aW9uLXRlc3QnOiBbIHdheWxhbmRfc2VydmVyX3Byb3RvY29sX2ggXSwKKysJJ2Nvbm5lY3Rpb24tdGVzdCc6IFsKKysJCXdheWxhbmRfY2xpZW50X3Byb3RvY29sX2gsCisrCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oLAorKwldLAorIAknZXZlbnQtbG9vcC10ZXN0JzogWyB3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oIF0sCisgCSdmaXhlZC10ZXN0JzogW10sCisgCSdpbnRlcmZhY2UtdGVzdCc6IFsgd2F5bGFuZF9jbGllbnRfcHJvdG9jb2xfaCBdLAorIAknbGlzdC10ZXN0JzogW10sCisgCSdtYXAtdGVzdCc6IFtdLAorLQknc2FuaXR5LXRlc3QnIDogWyB3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oIF0sCisrCSdzYW5pdHktdGVzdCcgOiBbCisrCQl3YXlsYW5kX2NsaWVudF9wcm90b2NvbF9oLAorKwkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfaCwKKysJXSwKKyAJJ3NvY2tldC10ZXN0JzogWworIAkJd2F5bGFuZF9jbGllbnRfcHJvdG9jb2xfaCwKKyAJCXdheWxhbmRfc2VydmVyX3Byb3RvY29sX2gsCitAQCAtMTE2LDcgKzEyNCw3IEBAIHRlc3RzID0geworIAkJZmlsZXMoJy4uL3NyYy93YXlsYW5kLXNlcnZlci5jJyksCisgCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oLAorIAldLAorLQkncmVzb3VyY2VzLXRlc3QnOiBbIHdheWxhbmRfc2VydmVyX3Byb3RvY29sX2NvcmVfaCBdLAorKwkncmVzb3VyY2VzLXRlc3QnOiBbIHdheWxhbmRfc2VydmVyX3Byb3RvY29sX2ggXSwKKyAJJ21lc3NhZ2UtdGVzdCc6IFsKKyAJCXdheWxhbmRfY2xpZW50X3Byb3RvY29sX2gsCisgCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9oLAorQEAgLTEyNiwxNCArMTM0LDE2IEBAIHRlc3RzID0geworIAkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfaCwKKyAJXSwKKyAJJ3Byb3RvY29sLWxvZ2dlci10ZXN0JzogWworLQkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfY29yZV9oLAorLQkJd2F5bGFuZF9jbGllbnRfcHJvdG9jb2xfY29yZV9oLAorKwkJd2F5bGFuZF9jbGllbnRfcHJvdG9jb2xfaCwKKysJCXdheWxhbmRfc2VydmVyX3Byb3RvY29sX2gsCisgCV0sCisgCSdoZWFkZXJzLXRlc3QnOiBbCisrCQl3YXlsYW5kX2NsaWVudF9wcm90b2NvbF9oLAorKwkJd2F5bGFuZF9zZXJ2ZXJfcHJvdG9jb2xfaCwKKyAJCSdoZWFkZXJzLXByb3RvY29sLXRlc3QuYycsCistCQknaGVhZGVycy1wcm90b2NvbC1jb3JlLXRlc3QuYycsCistCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9jb3JlX2gsCisgCQl3YXlsYW5kX2NsaWVudF9wcm90b2NvbF9jb3JlX2gsCisrCQl3YXlsYW5kX3NlcnZlcl9wcm90b2NvbF9jb3JlX2gsCisrCQknaGVhZGVycy1wcm90b2NvbC1jb3JlLXRlc3QuYycsCisgCV0sCisgCSdvcy13cmFwcGVycy10ZXN0JzogW10sCisgfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDEtc2Nhbm5lci1BZGQtY29uZmlndXJlLWNoZWNrLWZvci1zdHJuZHVwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDEtc2Nhbm5lci1BZGQtY29uZmlndXJlLWNoZWNrLWZvci1zdHJuZHVwLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjNDQzNTg3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAxLXNjYW5uZXItQWRkLWNvbmZpZ3VyZS1jaGVjay1mb3Itc3RybmR1cC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUwICswLDAgQEAKLUZyb20gM2M4YjQ0NjdhMWNhMjI5ZTcyZmI1MjIzNzg3ZWQ0MDBhMTljNjVjMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KLURhdGU6IEZyaSwgMjUgT2N0IDIwMTkgMjE6MDM6MjMgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gc2Nhbm5lcjogQWRkIGNvbmZpZ3VyZSBjaGVjayBmb3Igc3RybmR1cAotCi1Tb21lIHBsYXRmb3JtcyBtYXkgbm90IGhhdmUgc3RybmR1cCgpIChlLmcuIE1pbkdXKSwgc28gcHJvdmlkZSBhCi1lcXVpdmFsZW50IGltcGxlbWVudGF0aW9uIGlmIGl0J3Mgbm90IGZvdW5kLgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFs0YTFmMzQ4YzIwMTU3ZGI3YmQ3Yzc1OWZkZWIyM2ZiZTg3MjljNTcxXQotU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgotLS0tCi0gY29uZmlndXJlLmFjICB8ICAyICstCi0gc3JjL3NjYW5uZXIuYyB8IDExICsrKysrKysrKysrCi0gMiBmaWxlcyBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDhkNTZmMmIuLjFjOTllMjEgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTYzLDcgKzYzLDcgQEAgZmkKLSBBQ19TVUJTVChHQ0NfQ0ZMQUdTKQotIAotIEFDX0NIRUNLX0hFQURFUlMoW3N5cy9wcmN0bC5oXSkKLS1BQ19DSEVDS19GVU5DUyhbYWNjZXB0NCBta29zdGVtcCBwb3NpeF9mYWxsb2NhdGUgcHJjdGxdKQotK0FDX0NIRUNLX0ZVTkNTKFthY2NlcHQ0IG1rb3N0ZW1wIHBvc2l4X2ZhbGxvY2F0ZSBwcmN0bCBzdHJuZHVwXSkKLSAKLSBBQ19BUkdfRU5BQkxFKFtsaWJyYXJpZXNdLAotIAkgICAgICBbQUNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1saWJyYXJpZXNdLAotZGlmZiAtLWdpdCBhL3NyYy9zY2FubmVyLmMgYi9zcmMvc2Nhbm5lci5jCi1pbmRleCBhOTRiZTVkLi4yNzAwNGJjIDEwMDY0NAotLS0tIGEvc3JjL3NjYW5uZXIuYwotKysrIGIvc3JjL3NjYW5uZXIuYwotQEAgLTkxNiw2ICs5MTYsMTcgQEAgdmVyaWZ5X2FyZ3VtZW50cyhzdHJ1Y3QgcGFyc2VfY29udGV4dCAqY3R4LAotIAotIH0KLSAKLSsjaWZuZGVmIEhBVkVfU1RSTkRVUAotK2NoYXIgKgotK3N0cm5kdXAoY29uc3QgY2hhciAqcywgc2l6ZV90IHNpemUpCi0rewotKwljaGFyICpyID0gbWFsbG9jKHNpemUgKyAxKTsKLSsJc3RybmNweShyLCBzLCBzaXplKTsKLSsJcltzaXplXSA9ICdcMCc7Ci0rCXJldHVybiByOwotK30KLSsjZW5kaWYKLSsKLSBzdGF0aWMgdm9pZAotIGVuZF9lbGVtZW50KHZvaWQgKmRhdGEsIGNvbnN0IFhNTF9DaGFyICpuYW1lKQotIHsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAyLURvLW5vdC1oYXJkY29kZS10aGUtcGF0aC10by13YXlsYW5kLXNjYW5uZXIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMi1Eby1ub3QtaGFyZGNvZGUtdGhlLXBhdGgtdG8td2F5bGFuZC1zY2FubmVyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjIxOTk1NDgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMi1Eby1ub3QtaGFyZGNvZGUtdGhlLXBhdGgtdG8td2F5bGFuZC1zY2FubmVyLnBhdGNoCkBAIC0wLDAgKzEsMjYgQEAKK0Zyb20gY2JiMjg2MzVhMTA3OWQ2OGU2MmRiYWExZTIxNzkxYTIwZGJiYmFmNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogTW9uLCAxNyBGZWIgMjAyMCAyMTo0NjoxOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBEbyBub3QgaGFyZGNvZGUgdGhlIHBhdGggdG8gd2F5bGFuZC1zY2FubmVyCisKK1RoaXMgcmVzdWx0cyBpbiBob3N0IGNvbnRhbWluYXRpb24gZHVyaW5nIGJ1aWxkcy4KKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBzcmMvbWVzb24uYnVpbGQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvbWVzb24uYnVpbGQgYi9zcmMvbWVzb24uYnVpbGQKK2luZGV4IDI5NGFlZTAuLjdlNDEwZmEgMTAwNjQ0CistLS0gYS9zcmMvbWVzb24uYnVpbGQKKysrKyBiL3NyYy9tZXNvbi5idWlsZAorQEAgLTQ5LDcgKzQ5LDcgQEAgcGtnY29uZmlnLmdlbmVyYXRlKAorIAkJJ2RhdGFyb290ZGlyPScgKyBqb2luX3BhdGhzKCcke3ByZWZpeH0nLCBnZXRfb3B0aW9uKCdkYXRhZGlyJykpLAorIAkJJ3BrZ2RhdGFkaXI9JyArIGpvaW5fcGF0aHMoJyR7ZGF0YXJvb3RkaXJ9JywgbWVzb24ucHJvamVjdF9uYW1lKCkpLAorIAkJJ2JpbmRpcj0nICsgam9pbl9wYXRocygnJHtwcmVmaXh9JywgZ2V0X29wdGlvbignYmluZGlyJykpLAorLQkJJ3dheWxhbmRfc2Nhbm5lcj0ke2JpbmRpcn0vd2F5bGFuZC1zY2FubmVyJworKwkJJ3dheWxhbmRfc2Nhbm5lcj13YXlsYW5kLXNjYW5uZXInCisgCV0sCisgCWZpbGViYXNlOiAnd2F5bGFuZC1zY2FubmVyJworICkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAyLU1vdmUtd2xfcHJpdl9zaWduYWwtdG8td2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDItTW92ZS13bF9wcml2X3NpZ25hbC10by13YXlsYW5kLXNlcnZlci1wcml2YXRlLmgucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGIwNWI4NzUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kLzAwMDItTW92ZS13bF9wcml2X3NpZ25hbC10by13YXlsYW5kLXNlcnZlci1wcml2YXRlLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxNjYgKzAsMCBAQAotRnJvbSBlNzQ2ZjNiZjdjOGJiMmY1ZGNmOWU5M2VkZmZjMjNiNTZlZmYxMmQwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgotRGF0ZTogVHVlLCA1IE5vdiAyMDE5IDA5OjA5OjUwIC0wNjAwCi1TdWJqZWN0OiBbUEFUQ0hdIE1vdmUgd2xfcHJpdl9zaWduYWwgdG8gd2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oCi0KLUluY2x1ZGluZyB3YXlsYW5kLXNlcnZlci1jb3JlLmggaW4gd2F5bGFuZC1wcml2YXRlLmggaXMgcHJvYmxlbWF0aWMKLWJlY2F1c2Ugd2F5bGFuZC1wcml2YXRlLmggaXMgaW5jbHVkZWQgYnkgd2F5bGFuZC1zY2FubmVyIHdoaWNoIHNob3VsZCBiZQotYWJsZSB0byBidWlsZCBhZ2FpbnN0IG5vbi1QT1NJWCBwbGF0Zm9ybXMgKGUuZy4gTWluR1cpLiBUaGUgb25seSByZWFzb24KLXRoYXQgd2F5bGFuZC1zZXJ2ZXItY29yZS5oIHdhcyBpbmNsdWRlZCBpbiB3YXlsYW5kLXByaXZhdGUuaCB3YXMgZm9yIHRoZQotd2xfcHJpdmF0ZV9zaWduYWwgZGVmaW5pdGlvbnMsIHNvIG1vdmUgdGhvc2UgdG8gYQotd2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oIGZpbGUgdGhhdCBjYW4gYmUgaW5jbHVkZWQgYnkgYm90aAotd2F5bGFuZC1zZXJ2ZXIuYyBhbmQgdGhlIHRlc3RzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFtlN2Q4OGYzNWViODljZjBjYzc3Y2JkZGQ4MzRjYWNjNjM2ODNhOWNjXQotU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgotLS0tCi0gTWFrZWZpbGUuYW0gICAgICAgICAgICAgICAgICB8ICAzICstCi0gc3JjL3dheWxhbmQtcHJpdmF0ZS5oICAgICAgICB8IDIyICstLS0tLS0tLS0tLS0tLQotIHNyYy93YXlsYW5kLXNlcnZlci1wcml2YXRlLmggfCA1MyArKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysKLSBzcmMvd2F5bGFuZC1zZXJ2ZXIuYyAgICAgICAgIHwgIDEgKwotIHRlc3RzL25ld3NpZ25hbC10ZXN0LmMgICAgICAgfCAgMiArLQotIDUgZmlsZXMgY2hhbmdlZCwgNTggaW5zZXJ0aW9ucygrKSwgMjMgZGVsZXRpb25zKC0pCi0gY3JlYXRlIG1vZGUgMTAwNjQ0IHNyYy93YXlsYW5kLXNlcnZlci1wcml2YXRlLmgKLQotZGlmZiAtLWdpdCBhL01ha2VmaWxlLmFtIGIvTWFrZWZpbGUuYW0KLWluZGV4IGY0N2QwNTUuLjAyNmQ5ODEgMTAwNjQ0Ci0tLS0gYS9NYWtlZmlsZS5hbQotKysrIGIvTWFrZWZpbGUuYW0KLUBAIC01Niw3ICs1Niw4IEBAIGxpYndheWxhbmRfcHJpdmF0ZV9sYV9TT1VSQ0VTID0JCQlcCi0gCXNyYy9jb25uZWN0aW9uLmMJCQlcCi0gCXNyYy93YXlsYW5kLW9zLmMJCQlcCi0gCXNyYy93YXlsYW5kLW9zLmgJCQlcCi0tCXNyYy93YXlsYW5kLXByaXZhdGUuaAotKwlzcmMvd2F5bGFuZC1wcml2YXRlLmgJCQlcCi0rCXNyYy93YXlsYW5kLXNlcnZlci1wcml2YXRlLmgKLSAKLSBpbmNsdWRlX0hFQURFUlMgPQkJCQlcCi0gCXNyYy93YXlsYW5kLXV0aWwuaAkJCVwKLWRpZmYgLS1naXQgYS9zcmMvd2F5bGFuZC1wcml2YXRlLmggYi9zcmMvd2F5bGFuZC1wcml2YXRlLmgKLWluZGV4IDI5NTE2ZWMuLmRjN2QxMmYgMTAwNjQ0Ci0tLS0gYS9zcmMvd2F5bGFuZC1wcml2YXRlLmgKLSsrKyBiL3NyYy93YXlsYW5kLXByaXZhdGUuaAotQEAgLTMxLDExICszMSwxMSBAQAotICNpbmNsdWRlIDxzdGRhcmcuaD4KLSAjaW5jbHVkZSA8c3RkbGliLmg+Ci0gI2luY2x1ZGUgPHN0ZGludC5oPgotKyNpbmNsdWRlIDxzdGRib29sLmg+Ci0gCi0gI2RlZmluZSBXTF9ISURFX0RFUFJFQ0FURUQgMQotIAotICNpbmNsdWRlICJ3YXlsYW5kLXV0aWwuaCIKLS0jaW5jbHVkZSAid2F5bGFuZC1zZXJ2ZXItY29yZS5oIgotIAotIC8qIEludmFsaWQgbWVtb3J5IGFkZHJlc3MgKi8KLSAjZGVmaW5lIFdMX0FSUkFZX1BPSVNPTl9QVFIgKHZvaWQgKikgNAotQEAgLTIzNiwyNiArMjM2LDYgQEAgemFsbG9jKHNpemVfdCBzKQotIAlyZXR1cm4gY2FsbG9jKDEsIHMpOwotIH0KLSAKLS1zdHJ1Y3Qgd2xfcHJpdl9zaWduYWwgewotLQlzdHJ1Y3Qgd2xfbGlzdCBsaXN0ZW5lcl9saXN0OwotLQlzdHJ1Y3Qgd2xfbGlzdCBlbWl0X2xpc3Q7Ci0tfTsKLS0KLS12b2lkCi0td2xfcHJpdl9zaWduYWxfaW5pdChzdHJ1Y3Qgd2xfcHJpdl9zaWduYWwgKnNpZ25hbCk7Ci0tCi0tdm9pZAotLXdsX3ByaXZfc2lnbmFsX2FkZChzdHJ1Y3Qgd2xfcHJpdl9zaWduYWwgKnNpZ25hbCwgc3RydWN0IHdsX2xpc3RlbmVyICpsaXN0ZW5lcik7Ci0tCi0tc3RydWN0IHdsX2xpc3RlbmVyICoKLS13bF9wcml2X3NpZ25hbF9nZXQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwsIHdsX25vdGlmeV9mdW5jX3Qgbm90aWZ5KTsKLS0KLS12b2lkCi0td2xfcHJpdl9zaWduYWxfZW1pdChzdHJ1Y3Qgd2xfcHJpdl9zaWduYWwgKnNpZ25hbCwgdm9pZCAqZGF0YSk7Ci0tCi0tdm9pZAotLXdsX3ByaXZfc2lnbmFsX2ZpbmFsX2VtaXQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwsIHZvaWQgKmRhdGEpOwotLQotIHZvaWQKLSB3bF9jb25uZWN0aW9uX2Nsb3NlX2Zkc19pbihzdHJ1Y3Qgd2xfY29ubmVjdGlvbiAqY29ubmVjdGlvbiwgaW50IG1heCk7Ci0gCi1kaWZmIC0tZ2l0IGEvc3JjL3dheWxhbmQtc2VydmVyLXByaXZhdGUuaCBiL3NyYy93YXlsYW5kLXNlcnZlci1wcml2YXRlLmgKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi4yM2ZhNDU4Ci0tLS0gL2Rldi9udWxsCi0rKysgYi9zcmMvd2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oCi1AQCAtMCwwICsxLDUzIEBACi0rLyoKLSsgKiBDb3B5cmlnaHQgwqkgMjAwOC0yMDExIEtyaXN0aWFuIEjDuGdzYmVyZwotKyAqIENvcHlyaWdodCDCqSAyMDExIEludGVsIENvcnBvcmF0aW9uCi0rICogQ29weXJpZ2h0IMKpIDIwMTMgSmFzb24gRWtzdHJhbmQKLSsgKgotKyAqIFBlcm1pc3Npb24gaXMgaGVyZWJ5IGdyYW50ZWQsIGZyZWUgb2YgY2hhcmdlLCB0byBhbnkgcGVyc29uIG9idGFpbmluZwotKyAqIGEgY29weSBvZiB0aGlzIHNvZnR3YXJlIGFuZCBhc3NvY2lhdGVkIGRvY3VtZW50YXRpb24gZmlsZXMgKHRoZQotKyAqICJTb2Z0d2FyZSIpLCB0byBkZWFsIGluIHRoZSBTb2Z0d2FyZSB3aXRob3V0IHJlc3RyaWN0aW9uLCBpbmNsdWRpbmcKLSsgKiB3aXRob3V0IGxpbWl0YXRpb24gdGhlIHJpZ2h0cyB0byB1c2UsIGNvcHksIG1vZGlmeSwgbWVyZ2UsIHB1Ymxpc2gsCi0rICogZGlzdHJpYnV0ZSwgc3VibGljZW5zZSwgYW5kL29yIHNlbGwgY29waWVzIG9mIHRoZSBTb2Z0d2FyZSwgYW5kIHRvCi0rICogcGVybWl0IHBlcnNvbnMgdG8gd2hvbSB0aGUgU29mdHdhcmUgaXMgZnVybmlzaGVkIHRvIGRvIHNvLCBzdWJqZWN0IHRvCi0rICogdGhlIGZvbGxvd2luZyBjb25kaXRpb25zOgotKyAqCi0rICogVGhlIGFib3ZlIGNvcHlyaWdodCBub3RpY2UgYW5kIHRoaXMgcGVybWlzc2lvbiBub3RpY2UgKGluY2x1ZGluZyB0aGUKLSsgKiBuZXh0IHBhcmFncmFwaCkgc2hhbGwgYmUgaW5jbHVkZWQgaW4gYWxsIGNvcGllcyBvciBzdWJzdGFudGlhbAotKyAqIHBvcnRpb25zIG9mIHRoZSBTb2Z0d2FyZS4KLSsgKgotKyAqIFRIRSBTT0ZUV0FSRSBJUyBQUk9WSURFRCAiQVMgSVMiLCBXSVRIT1VUIFdBUlJBTlRZIE9GIEFOWSBLSU5ELAotKyAqIEVYUFJFU1MgT1IgSU1QTElFRCwgSU5DTFVESU5HIEJVVCBOT1QgTElNSVRFRCBUTyBUSEUgV0FSUkFOVElFUyBPRgotKyAqIE1FUkNIQU5UQUJJTElUWSwgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UgQU5ECi0rICogTk9OSU5GUklOR0VNRU5ULiAgSU4gTk8gRVZFTlQgU0hBTEwgVEhFIEFVVEhPUlMgT1IgQ09QWVJJR0hUIEhPTERFUlMKLSsgKiBCRSBMSUFCTEUgRk9SIEFOWSBDTEFJTSwgREFNQUdFUyBPUiBPVEhFUiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQU4KLSsgKiBBQ1RJT04gT0YgQ09OVFJBQ1QsIFRPUlQgT1IgT1RIRVJXSVNFLCBBUklTSU5HIEZST00sIE9VVCBPRiBPUiBJTgotKyAqIENPTk5FQ1RJT04gV0lUSCBUSEUgU09GVFdBUkUgT1IgVEhFIFVTRSBPUiBPVEhFUiBERUFMSU5HUyBJTiBUSEUKLSsgKiBTT0ZUV0FSRS4KLSsgKi8KLSsKLSsjaWZuZGVmIFdBWUxBTkRfU0VSVkVSX1BSSVZBVEVfSAotKyNkZWZpbmUgV0FZTEFORF9TRVJWRVJfUFJJVkFURV9ICi0rCi0rI2luY2x1ZGUgIndheWxhbmQtc2VydmVyLWNvcmUuaCIKLSsKLStzdHJ1Y3Qgd2xfcHJpdl9zaWduYWwgewotKwlzdHJ1Y3Qgd2xfbGlzdCBsaXN0ZW5lcl9saXN0OwotKwlzdHJ1Y3Qgd2xfbGlzdCBlbWl0X2xpc3Q7Ci0rfTsKLSsKLSt2b2lkCi0rd2xfcHJpdl9zaWduYWxfaW5pdChzdHJ1Y3Qgd2xfcHJpdl9zaWduYWwgKnNpZ25hbCk7Ci0rCi0rdm9pZAotK3dsX3ByaXZfc2lnbmFsX2FkZChzdHJ1Y3Qgd2xfcHJpdl9zaWduYWwgKnNpZ25hbCwgc3RydWN0IHdsX2xpc3RlbmVyICpsaXN0ZW5lcik7Ci0rCi0rc3RydWN0IHdsX2xpc3RlbmVyICoKLSt3bF9wcml2X3NpZ25hbF9nZXQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwsIHdsX25vdGlmeV9mdW5jX3Qgbm90aWZ5KTsKLSsKLSt2b2lkCi0rd2xfcHJpdl9zaWduYWxfZW1pdChzdHJ1Y3Qgd2xfcHJpdl9zaWduYWwgKnNpZ25hbCwgdm9pZCAqZGF0YSk7Ci0rCi0rdm9pZAotK3dsX3ByaXZfc2lnbmFsX2ZpbmFsX2VtaXQoc3RydWN0IHdsX3ByaXZfc2lnbmFsICpzaWduYWwsIHZvaWQgKmRhdGEpOwotKwotKyNlbmRpZgotZGlmZiAtLWdpdCBhL3NyYy93YXlsYW5kLXNlcnZlci5jIGIvc3JjL3dheWxhbmQtc2VydmVyLmMKLWluZGV4IDE5ZjZhNzYuLmQ2ZjAyMDYgMTAwNjQ0Ci0tLS0gYS9zcmMvd2F5bGFuZC1zZXJ2ZXIuYwotKysrIGIvc3JjL3dheWxhbmQtc2VydmVyLmMKLUBAIC00NSw2ICs0NSw3IEBACi0gCi0gI2luY2x1ZGUgIndheWxhbmQtdXRpbC5oIgotICNpbmNsdWRlICJ3YXlsYW5kLXByaXZhdGUuaCIKLSsjaW5jbHVkZSAid2F5bGFuZC1zZXJ2ZXItcHJpdmF0ZS5oIgotICNpbmNsdWRlICJ3YXlsYW5kLXNlcnZlci5oIgotICNpbmNsdWRlICJ3YXlsYW5kLW9zLmgiCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvbmV3c2lnbmFsLXRlc3QuYyBiL3Rlc3RzL25ld3NpZ25hbC10ZXN0LmMKLWluZGV4IDQ3YzQyOWIuLmYzYTdiZDkgMTAwNjQ0Ci0tLS0gYS90ZXN0cy9uZXdzaWduYWwtdGVzdC5jCi0rKysgYi90ZXN0cy9uZXdzaWduYWwtdGVzdC5jCi1AQCAtMjYsNyArMjYsNyBAQAotICNpbmNsdWRlIDxhc3NlcnQuaD4KLSAKLSAjaW5jbHVkZSAidGVzdC1ydW5uZXIuaCIKLS0jaW5jbHVkZSAid2F5bGFuZC1wcml2YXRlLmgiCi0rI2luY2x1ZGUgIndheWxhbmQtc2VydmVyLXByaXZhdGUuaCIKLSAKLSBzdGF0aWMgdm9pZAotIHNpZ25hbF9ub3RpZnkoc3RydWN0IHdsX2xpc3RlbmVyICpsaXN0ZW5lciwgdm9pZCAqZGF0YSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC8wMDAyLW1lc29uLmJ1aWxkLWZpbmQtdGhlLW5hdGl2ZS13YXlsYW5kLXNjYW5uZXItZGlyZWN0bHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMi1tZXNvbi5idWlsZC1maW5kLXRoZS1uYXRpdmUtd2F5bGFuZC1zY2FubmVyLWRpcmVjdGx5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY5ODAzN2EKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvMDAwMi1tZXNvbi5idWlsZC1maW5kLXRoZS1uYXRpdmUtd2F5bGFuZC1zY2FubmVyLWRpcmVjdGx5LnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gMjU4MmQyNjUzYmE4MDkxN2Q3YmM0NzA4OGUxYTVmNDk1MzBmZGRhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogU3VuLCAxNiBGZWIgMjAyMCAxNjoyOTo1MyArMDEwMAorU3ViamVjdDogW1BBVENIXSBtZXNvbi5idWlsZDogZmluZCB0aGUgbmF0aXZlIHdheWxhbmQtc2Nhbm5lciBkaXJlY3RseSBpbiBQQVRICisKK090aGVyd2lzZSwgbWVzb24gYXR0ZW1wdHMgdG8gdXNlIHRoZSB0YXJnZXQgcGtnLWNvbmZpZyBhbmQgZmFpbHMuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBzcmMvbWVzb24uYnVpbGQgfCAzICstLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9tZXNvbi5idWlsZCBiL3NyYy9tZXNvbi5idWlsZAoraW5kZXggM2U4YzliZi4uMjk0YWVlMCAxMDA2NDQKKy0tLSBhL3NyYy9tZXNvbi5idWlsZAorKysrIGIvc3JjL21lc29uLmJ1aWxkCitAQCAtNTUsOCArNTUsNyBAQCBwa2djb25maWcuZ2VuZXJhdGUoCisgKQorIAorIGlmIG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkKKy0Jc2Nhbm5lcl9kZXAgPSBkZXBlbmRlbmN5KCd3YXlsYW5kLXNjYW5uZXInLCBuYXRpdmU6IHRydWUsIHZlcnNpb246ICc+PTEuMTQuMCcpCistCXdheWxhbmRfc2Nhbm5lcl9mb3JfYnVpbGQgPSBmaW5kX3Byb2dyYW0oc2Nhbm5lcl9kZXAuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgnd2F5bGFuZF9zY2FubmVyJykpCisrCXdheWxhbmRfc2Nhbm5lcl9mb3JfYnVpbGQgPSBmaW5kX3Byb2dyYW0oJ3dheWxhbmQtc2Nhbm5lcicpCisgZWxzZQorIAl3YXlsYW5kX3NjYW5uZXJfZm9yX2J1aWxkID0gd2F5bGFuZF9zY2FubmVyCisgZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZC9maXhwYXRoaW5wY2ZpbGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kL2ZpeHBhdGhpbnBjZmlsZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkMzUyNmQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kL2ZpeHBhdGhpbnBjZmlsZXMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1GaXggd2F5bGFuZC1jbGllbnQgYW5kIHdheWxhbmQtc2Nhbm5lciBwYyBmaWxlcwotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogRmFiaWVuIExhaG91ZGVyZSA8ZmFiaWVuLmxhaG91ZGVyZUBjb2xsYWJvcmEuY28udWs+Ci0KLUluZGV4OiB3YXlsYW5kLTEuMTQuMC9zcmMvd2F5bGFuZC1jbGllbnQucGMuaW4KLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSB3YXlsYW5kLTEuMTQuMC5vcmlnL3NyYy93YXlsYW5kLWNsaWVudC5wYy5pbgotKysrIHdheWxhbmQtMS4xNC4wL3NyYy93YXlsYW5kLWNsaWVudC5wYy5pbgotQEAgLTEsNyArMSw3IEBACi0gcHJlZml4PUBwcmVmaXhACi0gZXhlY19wcmVmaXg9QGV4ZWNfcHJlZml4QAotIGRhdGFyb290ZGlyPUBkYXRhcm9vdGRpckAKLS1wa2dkYXRhZGlyPUBkYXRhZGlyQC9AUEFDS0FHRUAKLStwa2dkYXRhZGlyPSR7cGNfc3lzcm9vdGRpcn1AZGF0YWRpckAvQFBBQ0tBR0VACi0gbGliZGlyPUBsaWJkaXJACi0gaW5jbHVkZWRpcj1AaW5jbHVkZWRpckAKLSAKLUluZGV4OiB3YXlsYW5kLTEuMTQuMC9zcmMvd2F5bGFuZC1zY2FubmVyLnBjLmluCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gd2F5bGFuZC0xLjE0LjAub3JpZy9zcmMvd2F5bGFuZC1zY2FubmVyLnBjLmluCi0rKysgd2F5bGFuZC0xLjE0LjAvc3JjL3dheWxhbmQtc2Nhbm5lci5wYy5pbgotQEAgLTIsNyArMiw3IEBAIHByZWZpeD1AcHJlZml4QAotIGV4ZWNfcHJlZml4PUBleGVjX3ByZWZpeEAKLSBkYXRhcm9vdGRpcj1AZGF0YXJvb3RkaXJACi0gcGtnZGF0YWRpcj1AZGF0YWRpckAvQFBBQ0tBR0VACi0td2F5bGFuZF9zY2FubmVyPUBiaW5kaXJAL3dheWxhbmQtc2Nhbm5lcgotK3dheWxhbmRfc2Nhbm5lcj13YXlsYW5kLXNjYW5uZXIKLSAKLSBOYW1lOiBXYXlsYW5kIFNjYW5uZXIKLSBEZXNjcmlwdGlvbjogV2F5bGFuZCBzY2FubmVyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmQvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kL3J1bi1wdGVzdApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43ZThkOWRlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kL3J1bi1wdGVzdApAQCAtMCwwICsxLDE3IEBACisjIS9iaW4vc2gKKworZXhwb3J0IFdBWUxBTkRfU0NBTk5FUj13YXlsYW5kLXNjYW5uZXIKK2V4cG9ydCBURVNUX0RBVEFfRElSPXRlc3RzL2RhdGEKK2V4cG9ydCBURVNUX09VVFBVVF9ESVI9dGVzdHMvb3V0cHV0CitleHBvcnQgU0VEPXNlZAorZXhwb3J0IFdBWUxBTkRfRUdMX0xJQj0vdXNyL2xpYi9saWJ3YXlsYW5kLWVnbC5zby4xCitleHBvcnQgTk09bm0KKworZm9yIGkgaW4gYGxzIHRlc3RzLyotdGVzdCB0ZXN0cy93YXlsYW5kLWVnbC1zeW1ib2xzLWNoZWNrIHRlc3RzL3NjYW5uZXItdGVzdC5zaGA7IGRvCisgICAgJGkKKyAgICBpZiBbICQ/IC1lcSAwIF07IHRoZW4KKyAgICAgICAgZWNobyAiUEFTUzogJGkiCisgICAgZWxzZQorICAgICAgICBlY2hvICJGQUlMOiAkaSIKKyAgICBmaQorZG9uZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kXzEuMTcuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjE3LjAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJiNWE4ZjkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93YXlsYW5kXzEuMTcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLVNVTU1BUlkgPSAiV2F5bGFuZCwgYSBwcm90b2NvbCBiZXR3ZWVuIGEgY29tcG9zaXRvciBhbmQgY2xpZW50cyIKLURFU0NSSVBUSU9OID0gIldheWxhbmQgaXMgYSBwcm90b2NvbCBmb3IgYSBjb21wb3NpdG9yIHRvIHRhbGsgdG8gaXRzIGNsaWVudHMgXAotYXMgd2VsbCBhcyBhIEMgbGlicmFyeSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHByb3RvY29sLiBUaGUgY29tcG9zaXRvciBjYW4gYmUgXAotYSBzdGFuZGFsb25lIGRpc3BsYXkgc2VydmVyIHJ1bm5pbmcgb24gTGludXgga2VybmVsIG1vZGVzZXR0aW5nIGFuZCBldmRldiBcCi1pbnB1dCBkZXZpY2VzLCBhbiBYIGFwcGxpY2F0aW9uLCBvciBhIHdheWxhbmQgY2xpZW50IGl0c2VsZi4gVGhlIGNsaWVudHMgY2FuIFwKLWJlIHRyYWRpdGlvbmFsIGFwcGxpY2F0aW9ucywgWCBzZXJ2ZXJzIChyb290bGVzcyBvciBmdWxsc2NyZWVuKSBvciBvdGhlciBcCi1kaXNwbGF5IHNlcnZlcnMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMzFkOGY1M2I2YWFmMmI0OTg1ZDdkZDc4MTBhNzBkMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvd2F5bGFuZC1zZXJ2ZXIuYztlbmRsaW5lPTI0O21kNT1iOGUwNDYxNjRhNzY2YmIxZWRlOGJhMzhlOWRjZDdjZSIKLQotREVQRU5EUyA9ICJleHBhdCBsaWJ4bWwyIGxpYmZmaSB3YXlsYW5kLW5hdGl2ZSIKLQotU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotCSAgIGZpbGU6Ly9maXhwYXRoaW5wY2ZpbGVzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtc2Nhbm5lci1BZGQtY29uZmlndXJlLWNoZWNrLWZvci1zdHJuZHVwLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItTW92ZS13bF9wcml2X3NpZ25hbC10by13YXlsYW5kLXNlcnZlci1wcml2YXRlLmgucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiZDkxZjk3MGFlYTExZmQ1NDllYWUwMjNkMDZmOTFhZjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNzJhYTExYjhhYzZlMjJmNDc3NzMwMmM5MjUxZThmZWM3NjU1ZGMyMmY5ZDk0ZWU2NzZjNmIyNzZmOTVmOTFhNCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMuaHRtbCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLXdpdGgtaG9zdC1zY2FubmVyIgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWRpc2FibGUtZG9jdW1lbnRhdGlvbiAtLWRpc2FibGUtbGlicmFyaWVzIgotCi0jIFdheWxhbmQgaW5zdGFsbHMgYSBNNCBtYWNybyBmb3Igb3RoZXIgcHJvamVjdHMgdG8gdXNlLCB3aGljaCB1c2VzIHRoZSB0YXJnZXQKLSMgcGtnLWNvbmZpZyB0byBmaW5kIGZpbGVzLiAgUmVwbGFjZSBwa2ctY29uZmlnIHdpdGggcGtnLWNvbmZpZy1uYXRpdmUuCi1kb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7Ci0gIHNlZCAtZSAncyxQS0dfQ0hFQ0tfTU9EVUxFUyguKiksLGcnIFwKLSAgICAgIC1lICdzLCRQS0dfQ09ORklHLHBrZy1jb25maWctbmF0aXZlLGcnIFwKLSAgICAgIC1pICR7RH0vJHtkYXRhZGlyfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNAotfQotCi1zeXNyb290X3N0YWdlX2FsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKLQlybSAke1NZU1JPT1RfREVTVERJUn0vJHtkYXRhZGlyfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNAotCWNwICR7U1RBR0lOR19EQVRBRElSX05BVElWRX0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQgJHtTWVNST09UX0RFU1RESVJ9LyR7ZGF0YWRpcn0vYWNsb2NhbC8KLX0KLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9Lyoke1NPTElCU30iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfSAke2RhdGFkaXJ9L3dheWxhbmQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2F5bGFuZF8xLjE4LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xOC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAwYmUzYWEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dheWxhbmRfMS4xOC4wLmJiCkBAIC0wLDAgKzEsNjIgQEAKK1NVTU1BUlkgPSAiV2F5bGFuZCwgYSBwcm90b2NvbCBiZXR3ZWVuIGEgY29tcG9zaXRvciBhbmQgY2xpZW50cyIKK0RFU0NSSVBUSU9OID0gIldheWxhbmQgaXMgYSBwcm90b2NvbCBmb3IgYSBjb21wb3NpdG9yIHRvIHRhbGsgdG8gaXRzIGNsaWVudHMgXAorYXMgd2VsbCBhcyBhIEMgbGlicmFyeSBpbXBsZW1lbnRhdGlvbiBvZiB0aGF0IHByb3RvY29sLiBUaGUgY29tcG9zaXRvciBjYW4gYmUgXAorYSBzdGFuZGFsb25lIGRpc3BsYXkgc2VydmVyIHJ1bm5pbmcgb24gTGludXgga2VybmVsIG1vZGVzZXR0aW5nIGFuZCBldmRldiBcCitpbnB1dCBkZXZpY2VzLCBhbiBYIGFwcGxpY2F0aW9uLCBvciBhIHdheWxhbmQgY2xpZW50IGl0c2VsZi4gVGhlIGNsaWVudHMgY2FuIFwKK2JlIHRyYWRpdGlvbmFsIGFwcGxpY2F0aW9ucywgWCBzZXJ2ZXJzIChyb290bGVzcyBvciBmdWxsc2NyZWVuKSBvciBvdGhlciBcCitkaXNwbGF5IHNlcnZlcnMuIgorSE9NRVBBR0UgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMzFkOGY1M2I2YWFmMmI0OTg1ZDdkZDc4MTBhNzBkMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvd2F5bGFuZC1zZXJ2ZXIuYztlbmRsaW5lPTI0O21kNT1iOGUwNDYxNjRhNzY2YmIxZWRlOGJhMzhlOWRjZDdjZSIKKworREVQRU5EUyA9ICJleHBhdCBsaWJmZmkgd2F5bGFuZC1uYXRpdmUiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLW1lc29uLmJ1aWxkLWZpbmQtdGhlLW5hdGl2ZS13YXlsYW5kLXNjYW5uZXItZGlyZWN0bHkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1Eby1ub3QtaGFyZGNvZGUtdGhlLXBhdGgtdG8td2F5bGFuZC1zY2FubmVyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtYnVpbGQtRml4LXN0cm5kdXAtZGV0ZWN0aW9uLW9uLU1pbkdXLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVzb24tdGVzdHMtYWRkLW1pc3NpbmctZGVwZW5kZW5jaWVzLW9uLXByb3RvY29sLWhlYS5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMzMxNzY5N2I2ZTNmZjJlMWFjOGM1YmEzZWQ1N2I2NSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0Njc1YTc5ZjA5MTAyMDgxN2E5OGZkMDQ4NGU3MjA4Yzg3NjIyNDIyNjY5NjdmNTVhNjc3NzY5MzZjMmUyOTRkIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy5odG1sIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyBwdGVzdAorCitQQUNLQUdFQ09ORklHID8/PSAiZHRkLXZhbGlkYXRpb24iCitQQUNLQUdFQ09ORklHW2R0ZC12YWxpZGF0aW9uXSA9ICItRGR0ZF92YWxpZGF0aW9uPXRydWUsLURkdGRfdmFsaWRhdGlvbj1mYWxzZSxsaWJ4bWwyLCwiCisKK0VYVFJBX09FTUVTT04gPSAiLURkb2N1bWVudGF0aW9uPWZhbHNlIgorRVhUUkFfT0VNRVNPTl9jbGFzcy1uYXRpdmUgPSAiLURkb2N1bWVudGF0aW9uPWZhbHNlIC1EbGlicmFyaWVzPWZhbHNlIgorCisjIFdheWxhbmQgaW5zdGFsbHMgYSBNNCBtYWNybyBmb3Igb3RoZXIgcHJvamVjdHMgdG8gdXNlLCB3aGljaCB1c2VzIHRoZSB0YXJnZXQKKyMgcGtnLWNvbmZpZyB0byBmaW5kIGZpbGVzLiAgUmVwbGFjZSBwa2ctY29uZmlnIHdpdGggcGtnLWNvbmZpZy1uYXRpdmUuCitkb19pbnN0YWxsX2FwcGVuZF9jbGFzcy1uYXRpdmUoKSB7CisgIHNlZCAtZSAncyxQS0dfQ0hFQ0tfTU9EVUxFUyguKiksLGcnIFwKKyAgICAgIC1lICdzLCRQS0dfQ09ORklHLHBrZy1jb25maWctbmF0aXZlLGcnIFwKKyAgICAgIC1pICR7RH0vJHtkYXRhZGlyfS9hY2xvY2FsL3dheWxhbmQtc2Nhbm5lci5tNAorfQorCitkb19pbnN0YWxsX3B0ZXN0KCkgeworICAgIG1rZGlyIC1wICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2RhdGEKKyAgICBjcCAtcmYgJHtCfS90ZXN0cy8qLXRlc3QgJHtCfS90ZXN0cy8qLWNoZWNrZXIgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBjcCAtcmYgJHtCfS90ZXN0cy8qLWNoZWNrZXIgJHtEfSR7UFRFU1RfUEFUSH0KKyAgICBjcCAtcmYgJHtTfS90ZXN0cy9zY2FubmVyLXRlc3Quc2ggJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMKKyAgICBjcCAtcmYgJHtTfS90ZXN0cy9kYXRhLyogJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvZGF0YS8KKyAgICBjcCAtcmYgJHtTfS9lZ2wvd2F5bGFuZC1lZ2wtc3ltYm9scy1jaGVjayAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8KK30KKworc3lzcm9vdF9zdGFnZV9hbGxfYXBwZW5kX2NsYXNzLXRhcmdldCAoKSB7CisJcm0gJHtTWVNST09UX0RFU1RESVJ9LyR7ZGF0YWRpcn0vYWNsb2NhbC93YXlsYW5kLXNjYW5uZXIubTQKKwljcCAke1NUQUdJTkdfREFUQURJUl9OQVRJVkV9L2FjbG9jYWwvd2F5bGFuZC1zY2FubmVyLm00ICR7U1lTUk9PVF9ERVNURElSfS8ke2RhdGFkaXJ9L2FjbG9jYWwvCit9CisKK0ZJTEVTXyR7UE59ID0gIiR7bGliZGlyfS8qJHtTT0xJQlN9IgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0gJHtkYXRhZGlyfS93YXlsYW5kIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJiaW51dGlscyBzZWQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC5iYgppbmRleCBlM2U3MzllLi40MGFhNzYyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQuYmIKQEAgLTUsNiArNSw3IEBACiBQQUNLQUdFX0FSQ0ggPSAiJHtNQUNISU5FX0FSQ0h9IgogCiBTUkNfVVJJID0gImZpbGU6Ly9pbml0IFwKKyAgICAgICAgICAgZmlsZTovL3dlc3Rvbi5lbnYgXAogICAgICAgICAgICBmaWxlOi8vd2VzdG9uLmluaSBcCiAgICAgICAgICAgIGZpbGU6Ly93ZXN0b25ALnNlcnZpY2UgXAogICAgICAgICAgICBmaWxlOi8vNzEtd2VzdG9uLWRybS5ydWxlcyBcCkBAIC0xNSw2ICsxNiw3IEBACiBkb19pbnN0YWxsKCkgewogCWluc3RhbGwgLURtNzU1ICR7V09SS0RJUn0vaW5pdCAke0R9LyR7c3lzY29uZmRpcn0vaW5pdC5kL3dlc3RvbgogCWluc3RhbGwgLUQgLXAgLW0wNjQ0ICR7V09SS0RJUn0vd2VzdG9uLmluaSAke0R9JHtzeXNjb25mZGlyfS94ZGcvd2VzdG9uL3dlc3Rvbi5pbmkKKwlpbnN0YWxsIC1EbTY0NCAke1dPUktESVJ9L3dlc3Rvbi5lbnYgJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC93ZXN0b24KIAogCSMgSW5zdGFsbCBXZXN0b24gc3lzdGVtZCBzZXJ2aWNlIGFuZCBhY2NvbXBhbnlpbmcgdWRldiBydWxlCiAJaW5zdGFsbCAtRCAtcCAtbTA2NDQgJHtXT1JLRElSfS93ZXN0b25ALnNlcnZpY2UgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vd2VzdG9uQC5zZXJ2aWNlCkBAIC0zMCw2ICszMiwxNCBAQAogCXNlZCAtaSAncyxATE9DQUxTVEFURURJUkAsJHtsb2NhbHN0YXRlZGlyfSxnJyAke0R9JHtiaW5kaXJ9L3dlc3Rvbi1zdGFydAogfQogCitkb19pbnN0YWxsX2FwcGVuZF9saWJjLW11c2xfcWVtdXg4NigpIHsKKyAgICAgICAgZWNobyAiV0VTVE9OX0RJU0FCTEVfQVRPTUlDPVkiID4+ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvd2VzdG9uCit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2xpYmMtbXVzbF9xZW11eDg2LTY0KCkgeworICAgICAgICBlY2hvICJXRVNUT05fRElTQUJMRV9BVE9NSUM9WSIgPj4gJHtEfSR7c3lzY29uZmRpcn0vZGVmYXVsdC93ZXN0b24KK30KKwogaW5oZXJpdCB1cGRhdGUtcmMuZCBmZWF0dXJlc19jaGVjayBzeXN0ZW1kCiAKICMgcmRlcGVuZHMgb24gd2VzdG9uIHdoaWNoIGRlcGVuZHMgb24gdmlydHVhbC9lZ2wKQEAgLTQwLDkgKzUwLDkgQEAKIElOSVRTQ1JJUFRfTkFNRSA9ICJ3ZXN0b24iCiBJTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCA5IDUgMiAuIHN0b3AgMjAgMCAxIDYgLiIKIAotRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0veGRnL3dlc3Rvbi93ZXN0b24uaW5pICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vd2VzdG9uQC5zZXJ2aWNlIgorRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0veGRnL3dlc3Rvbi93ZXN0b24uaW5pICR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vd2VzdG9uQC5zZXJ2aWNlICR7c3lzY29uZmRpcn0vZGVmYXVsdC93ZXN0b24iCiAKLUNPTkZGSUxFU18ke1BOfSArPSAiJHtzeXNjb25mZGlyfS94ZGcvd2VzdG9uL3dlc3Rvbi5pbmkiCitDT05GRklMRVNfJHtQTn0gKz0gIiR7c3lzY29uZmRpcn0veGRnL3dlc3Rvbi93ZXN0b24uaW5pICR7c3lzY29uZmRpcn0vZGVmYXVsdC93ZXN0b24iCiAKIFNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJ3ZXN0b25AJWkuc2VydmljZSIKIFNZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvcWVtdWFsbC93ZXN0b24uaW5pIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC9xZW11YWxsL3dlc3Rvbi5pbmkKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTdlYmQ3ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvcWVtdWFsbC93ZXN0b24uaW5pCkBAIC0wLDAgKzEsMiBAQAorW2NvcmVdCitiYWNrZW5kPWZiZGV2LWJhY2tlbmQuc28KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvcWVtdXg4Ni02NC93ZXN0b24uaW5pIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC9xZW11eDg2LTY0L3dlc3Rvbi5pbmkKaW5kZXggMTdlYmQ3Zi4uZTY5ZGUyOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC9xZW11eDg2LTY0L3dlc3Rvbi5pbmkKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC9xZW11eDg2LTY0L3dlc3Rvbi5pbmkKQEAgLTEsMiArMCwwIEBACi1bY29yZV0KLWJhY2tlbmQ9ZmJkZXYtYmFja2VuZC5zbwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC9xZW11eDg2L3dlc3Rvbi5pbmkgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3FlbXV4ODYvd2VzdG9uLmluaQppbmRleCAxN2ViZDdmLi5lNjlkZTI5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3FlbXV4ODYvd2VzdG9uLmluaQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3FlbXV4ODYvd2VzdG9uLmluaQpAQCAtMSwyICswLDAgQEAKLVtjb3JlXQotYmFja2VuZD1mYmRldi1iYWNrZW5kLnNvCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3Rvbi5lbnYgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3Rvbi5lbnYKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTY5ZGUyOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvd2VzdG9uLmVudgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b24uaW5pIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b24uaW5pCmluZGV4IDFlZWNmNDguLjFlNmRmZjYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLWluaXQvd2VzdG9uLmluaQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3Rvbi5pbmkKQEAgLTEsOSArMSwxMCBAQAogIyBjb25maWd1cmF0aW9uIGZpbGUgZm9yIFdlc3RvbgogCi0jW2NvcmVdCitbY29yZV0KICNtb2R1bGVzPXh3YXlsYW5kLnNvLGNtcy1jb2xvcmQuc28KICNzaGVsbD1kZXNrdG9wLXNoZWxsLnNvCiAjZ2JtLWZvcm1hdD14cmdiMjEwMTAxMAorcmVxdWlyZS1pbnB1dD1mYWxzZQogCiAjW3NoZWxsXQogI2JhY2tncm91bmQtaW1hZ2U9L3Vzci9zaGFyZS9iYWNrZ3JvdW5kcy9nbm9tZS9BcXVhLmpwZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24taW5pdC93ZXN0b25ALnNlcnZpY2UgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3RvbkAuc2VydmljZQppbmRleCA5ZWNmMmFiLi4zOWUxOTMwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3RvbkAuc2VydmljZQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi1pbml0L3dlc3RvbkAuc2VydmljZQpAQCAtMSwzNyArMSwxNSBAQAogW1VuaXRdCi1EZXNjcmlwdGlvbj1XZXN0b24gV2F5bGFuZCBDb21wb3NpdG9yIChvbiB0dHk3KQorRGVzY3JpcHRpb249V2VzdG9uIFdheWxhbmQgQ29tcG9zaXRvcgogUmVxdWlyZXNNb3VudHNGb3I9L3J1bgotQ29uZmxpY3RzPWdldHR5QHR0eTcuc2VydmljZSBwbHltb3V0aC1xdWl0LnNlcnZpY2UKLUFmdGVyPXN5c3RlbWQtdXNlci1zZXNzaW9ucy5zZXJ2aWNlIGdldHR5QHR0eTcuc2VydmljZSBwbHltb3V0aC1xdWl0LXdhaXQuc2VydmljZQorQ29uZmxpY3RzPXBseW1vdXRoLXF1aXQuc2VydmljZQorQWZ0ZXI9c3lzdGVtZC11c2VyLXNlc3Npb25zLnNlcnZpY2UgcGx5bW91dGgtcXVpdC13YWl0LnNlcnZpY2UKIAogW1NlcnZpY2VdCiBVc2VyPSVpCi1QZXJtaXNzaW9uc1N0YXJ0T25seT10cnVlCi0KLSMgTG9nIHVzIGluIHZpYSBQQU0gc28gd2UgZ2V0IG91ciBYREcgJiBjby4gZW52aXJvbm1lbnQgYW5kCi0jIGFyZSB0cmVhdGVkIGFzIGxvZ2dlZCBpbiBzbyB3ZSBjYW4gdXNlIHRoZSB0dHk6CiBQQU1OYW1lPWxvZ2luCi0KLSMgR3JhYiB0dHk3Ci1VdG1wSWRlbnRpZmllcj10dHk3Ci1UVFlQYXRoPS9kZXYvdHR5NwotVFRZUmVzZXQ9eWVzCi1UVFlWSGFuZ3VwPXllcwotVFRZVlREaXNhbGxvY2F0ZT15ZXMKLQotIyBzdGRlcnIgdG8gam91cm5hbCBzbyBvdXIgbG9nZ2luZyBkb2Vzbid0IGdldCB0aHJvd24gaW50byAvZGV2L251bGwKLVN0YW5kYXJkT3V0cHV0PXR0eQotU3RhbmRhcmRJbnB1dD10dHkKLVN0YW5kYXJkRXJyb3I9am91cm5hbAotCiBFbnZpcm9ubWVudEZpbGU9LS9ldGMvZGVmYXVsdC93ZXN0b24KLQotIyBXZXN0b24gZG9lcyBub3Qgc3VjY2Vzc2Z1bGx5IGNoYW5nZSBWVCwgbm9yIGRvZXMgc3lzdGVtZCBwbGFjZSB1cyBvbgotIyB0aGUgVlQgaXQganVzdCBhY3RpdmF0ZWQgZm9yIHVzLiBTd2l0Y2ggbWFudWFsbHk6Ci1FeGVjU3RhcnRQcmU9L3Vzci9iaW4vY2h2dCA3Ci1FeGVjU3RhcnQ9L3Vzci9iaW4vd2VzdG9uIC0tbG9nPSR7WERHX1JVTlRJTUVfRElSfS93ZXN0b24ubG9nICRPUFRBUkdTCi0KK1N0YW5kYXJkRXJyb3I9am91cm5hbAorUGVybWlzc2lvbnNTdGFydE9ubHk9dHJ1ZQogSWdub3JlU0lHUElQRT1ubwogCi0jW0luc3RhbGxdCi0jQWxpYXM9bXVsdGktdXNlci50YXJnZXQud2FudHMvd2VzdG9uLnNlcnZpY2UKK0V4ZWNTdGFydD0vdXNyL2Jpbi93ZXN0b24tc3RhcnQgLXYgLWUgLS0gJE9QVEFSR1MKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uLzAwMDEtd2VzdG9uLWxhdW5jaC1Qcm92aWRlLWEtZGVmYXVsdC12ZXJzaW9uLXRoYXQtZG9lc24tdC5wYXRjaAppbmRleCBlNTA4NDViLi42MmI4NjRjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbi8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b24vMDAwMS13ZXN0b24tbGF1bmNoLVByb3ZpZGUtYS1kZWZhdWx0LXZlcnNpb24tdGhhdC1kb2Vzbi10LnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSA2ODJiN2Q3OWE3YjgxZWM4ZTM4NzYwMzgxMTA0YjI0YWQ1NDllOGMwIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSA1ZjJkNzE5OThlYjc3MDY4Y2JhZWUyZDQ2OGNiYjI5NmE0MmQ1NzM5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogVG9tIEhvY2hzdGVpbiA8dG9tLmhvY2hzdGVpbkBueHAuY29tPgogRGF0ZTogV2VkLCAyMiBGZWIgMjAxNyAxNTo1MzozMCArMDIwMAogU3ViamVjdDogW1BBVENIXSB3ZXN0b24tbGF1bmNoOiBQcm92aWRlIGEgZGVmYXVsdCB2ZXJzaW9uIHRoYXQgZG9lc24ndCByZXF1aXJlCkBAIC0xNiw2ICsxNiw3IEBACiBTaWduZWQtb2ZmLWJ5OiBKdXNzaSBLdWtrb25lbiA8anVzc2kua3Vra29uZW5AaW50ZWwuY29tPgogU2lnbmVkLW9mZi1ieTogRGVueXMgRG15dHJpeWVua28gPGRlbnlzQHRpLmNvbT4KIFNpZ25lZC1vZmYtYnk6IE1pbmcgTGl1IDxtaW5nLmxpdUB0b3JhZGV4LmNvbT4KKwogLS0tCiAgbGlid2VzdG9uL21lc29uLmJ1aWxkICAgICB8IDE2ICsrKysrKysrKysrKy0tLS0KICBsaWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jIHwgMjEgKysrKysrKysrKysrKysrKysrKysrCkBAIC0yMywxMCArMjQsMTAgQEAKICAzIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9saWJ3ZXN0b24vbWVzb24uYnVpbGQgYi9saWJ3ZXN0b24vbWVzb24uYnVpbGQKLWluZGV4IGQ4ZDNmYzAuLjMyNjY4M2YgMTAwNjQ0CitpbmRleCAwOGQyM2VjLi5jYjlmZDNmIDEwMDY0NAogLS0tIGEvbGlid2VzdG9uL21lc29uLmJ1aWxkCiArKysgYi9saWJ3ZXN0b24vbWVzb24uYnVpbGQKLUBAIC0xOTksMTYgKzE5OSwyNCBAQCBkZXBfdmVydGV4X2NsaXBwaW5nID0gZGVjbGFyZV9kZXBlbmRlbmN5KAorQEAgLTIxNiwxNiArMjE2LDI0IEBAIGRlcF92ZXJ0ZXhfY2xpcHBpbmcgPSBkZWNsYXJlX2RlcGVuZGVuY3koCiAgKQogIAogIGlmIGdldF9vcHRpb24oJ3dlc3Rvbi1sYXVuY2gnKQpAQCAtNTIsMTEgKzUzLDExIEBACiAgCQknd2VzdG9uLWxhdW5jaC5jJywKIC0JCWRlcGVuZGVuY2llczogW2RlcF9wYW0sIHN5c3RlbWRfZGVwLCBkZXBfbGliZHJtXSwKICsJCWRlcGVuZGVuY2llczogZGVwc193ZXN0b25fbGF1bmNoLAotIAkJaW5jbHVkZV9kaXJlY3RvcmllczogaW5jbHVkZV9kaXJlY3RvcmllcygnLi4nKSwKKyAJCWluY2x1ZGVfZGlyZWN0b3JpZXM6IGNvbW1vbl9pbmMsCiAgCQlpbnN0YWxsOiB0cnVlCiAgCSkKIGRpZmYgLS1naXQgYS9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jIGIvbGlid2VzdG9uL3dlc3Rvbi1sYXVuY2guYwotaW5kZXggNDk2MmJkNi4uZmM1MzFjNSAxMDA2NDQKK2luZGV4IDhhNzExYjQuLjU0YzU2N2EgMTAwNjQ0CiAtLS0gYS9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCiArKysgYi9saWJ3ZXN0b24vd2VzdG9uLWxhdW5jaC5jCiBAQCAtNTEsNyArNTEsOSBAQApAQCAtMTEyLDcgKzExMyw3IEBACiAgCiAgCWlmIChpb2N0bCh3bC0+dHR5LCBLRFNLQk1VVEUsIDApICYmCiAgCSAgICBpb2N0bCh3bC0+dHR5LCBLRFNLQk1PREUsIHdsLT5rYl9tb2RlKSkKLUBAIC02NjAsNiArNjY4LDcgQEAgc2V0dXBfc2Vzc2lvbihzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wsIGNoYXIgKipjaGlsZF9hcmd2KQorQEAgLTY2Niw2ICs2NzQsNyBAQCBzZXR1cF9zZXNzaW9uKHN0cnVjdCB3ZXN0b25fbGF1bmNoICp3bCwgY2hhciAqKmNoaWxkX2FyZ3YpCiAgCXNldGVudigiSE9NRSIsIHdsLT5wdy0+cHdfZGlyLCAxKTsKICAJc2V0ZW52KCJTSEVMTCIsIHdsLT5wdy0+cHdfc2hlbGwsIDEpOwogIApAQCAtMTIwLDcgKzEyMSw3IEBACiAgCWVudiA9IHBhbV9nZXRlbnZsaXN0KHdsLT5waCk7CiAgCWlmIChlbnYpIHsKICAJCWZvciAoaSA9IDA7IGVudltpXTsgKytpKSB7Ci1AQCAtNjY4LDYgKzY3Nyw3IEBAIHNldHVwX3Nlc3Npb24oc3RydWN0IHdlc3Rvbl9sYXVuY2ggKndsLCBjaGFyICoqY2hpbGRfYXJndikKK0BAIC02NzQsNiArNjgzLDcgQEAgc2V0dXBfc2Vzc2lvbihzdHJ1Y3Qgd2VzdG9uX2xhdW5jaCAqd2wsIGNoYXIgKipjaGlsZF9hcmd2KQogIAkJfQogIAkJZnJlZShlbnYpOwogIAl9CkBAIC0xMjgsNyArMTI5LDcgQEAKICAKICAJLyoKICAJICogV2Ugb3BlbiBhIG5ldyBzZXNzaW9uLCBzbyBpdCBtYWtlcyBzZW5zZQotQEAgLTczOSw4ICs3NDksMTAgQEAgc3RhdGljIHZvaWQKK0BAIC03NDUsOCArNzU1LDEwIEBAIHN0YXRpYyB2b2lkCiAgaGVscChjb25zdCBjaGFyICpuYW1lKQogIHsKICAJZnByaW50ZihzdGRlcnIsICJVc2FnZTogJXMgW2FyZ3MuLi5dIFstLSBbd2VzdG9uIGFyZ3MuLl1dXG4iLCBuYW1lKTsKQEAgLTEzOSw3ICsxNDAsNyBAQAogIAlmcHJpbnRmKHN0ZGVyciwgIiAgLXQsIC0tdHR5ICAgICAgIFN0YXJ0IHNlc3Npb24gb24gYWx0ZXJuYXRpdmUgdHR5LFxuIgogIAkJCSIgICAgICAgICAgICAgICAgICBlLmcuIC10IC9kZXYvdHR5NCwgcmVxdWlyZXMgLXUgb3B0aW9uLlxuIik7CiAgCWZwcmludGYoc3RkZXJyLCAiICAtdiwgLS12ZXJib3NlICAgQmUgdmVyYm9zZVxuIik7Ci1AQCAtNzU0LDcgKzc2Niw5IEBAIG1haW4oaW50IGFyZ2MsIGNoYXIgKmFyZ3ZbXSkKK0BAIC03NjAsNyArNzcyLDkgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogIAlpbnQgaSwgYzsKICAJY2hhciAqdHR5ID0gTlVMTDsKICAJc3RydWN0IG9wdGlvbiBvcHRzW10gPSB7CkBAIC0xNDksNyArMTUwLDcgQEAKICAJCXsgInR0eSIsICAgICByZXF1aXJlZF9hcmd1bWVudCwgTlVMTCwgJ3QnIH0sCiAgCQl7ICJ2ZXJib3NlIiwgbm9fYXJndW1lbnQsICAgICAgIE5VTEwsICd2JyB9LAogIAkJeyAiaGVscCIsICAgIG5vX2FyZ3VtZW50LCAgICAgICBOVUxMLCAnaCcgfSwKLUBAIC03NjYsMTEgKzc4MCwxNiBAQCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pCitAQCAtNzcyLDExICs3ODYsMTYgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogIAl3aGlsZSAoKGMgPSBnZXRvcHRfbG9uZyhhcmdjLCBhcmd2LCAidTp0OnZoIiwgb3B0cywgJmkpKSAhPSAtMSkgewogIAkJc3dpdGNoIChjKSB7CiAgCQljYXNlICd1JzoKQEAgLTE2Niw3ICsxNjcsNyBAQAogIAkJCWJyZWFrOwogIAkJY2FzZSAndCc6CiAgCQkJdHR5ID0gb3B0YXJnOwotQEAgLTgyMiw4ICs4NDEsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQorQEAgLTgyOCw4ICs4NDcsMTAgQEAgbWFpbihpbnQgYXJnYywgY2hhciAqYXJndltdKQogIAlpZiAoc2V0dXBfdHR5KCZ3bCwgdHR5KSA8IDApCiAgCQlleGl0KEVYSVRfRkFJTFVSRSk7CiAgCkBAIC0xNzgsNyArMTc5LDcgQEAKICAJaWYgKHNldHVwX2xhdW5jaGVyX3NvY2tldCgmd2wpIDwgMCkKICAJCWV4aXQoRVhJVF9GQUlMVVJFKTsKIGRpZmYgLS1naXQgYS9tZXNvbl9vcHRpb25zLnR4dCBiL21lc29uX29wdGlvbnMudHh0Ci1pbmRleCBkNWJmMWQ1Li4yNTRlYjJiIDEwMDY0NAoraW5kZXggYzg2MmVjYy4uNzNlZjJjMyAxMDA2NDQKIC0tLSBhL21lc29uX29wdGlvbnMudHh0CiArKysgYi9tZXNvbl9vcHRpb25zLnR4dAogQEAgLTczLDYgKzczLDEzIEBAIG9wdGlvbigKQEAgLTE5NSw2ICsxOTYsMyBAQAogIAkneHdheWxhbmQnLAogIAl0eXBlOiAnYm9vbGVhbicsCiAgCXZhbHVlOiB0cnVlLAotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy93YXlsYW5kL3dlc3Rvbl83LjAuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzcuMC4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlNjU0OGQzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzcuMC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTExICswLDAgQEAKLVNVTU1BUlkgPSAiV2VzdG9uLCBhIFdheWxhbmQgY29tcG9zaXRvciIKLURFU0NSSVBUSU9OID0gIldlc3RvbiBpcyB0aGUgcmVmZXJlbmNlIGltcGxlbWVudGF0aW9uIG9mIGEgV2F5bGFuZCBjb21wb3NpdG9yIgotSE9NRVBBR0UgPSAiaHR0cDovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnIgotTElDRU5TRSA9ICJNSVQiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kNzllZTllNjZiYjBmOTVkMzM4NmE3YWNhZTc4MGI3MCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9saWJ3ZXN0b24vY29tcG9zaXRvci5jO2VuZGxpbmU9Mjc7bWQ1PTZjNTNiYmJkOTkyNzNmNGY3YzRhZmZhODU1YzMzYzBhIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd2F5bGFuZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly93ZXN0b24ucG5nIFwKLSAgICAgICAgICAgZmlsZTovL3dlc3Rvbi5kZXNrdG9wIFwKLSAgICAgICAgICAgZmlsZTovL3h3YXlsYW5kLndlc3Rvbi1zdGFydCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLXdlc3Rvbi1sYXVuY2gtUHJvdmlkZS1hLWRlZmF1bHQtdmVyc2lvbi10aGF0LWRvZXNuLXQucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gImNiZmRhNDgzYmMyNTAxZDA4MzFhZjNmMzNjNzA3ODUwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImEwMGE2ZDIwN2I2YTQ1Zjk1ZjQ0MDFjNjA0NzcyYTMwN2MzNzY3ZTVlMmJlZWNmM2Q4NzkxMTBjNDM5MDlhNjQiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLmh0bWwiCi0KLWluaGVyaXQgbWVzb24gcGtnY29uZmlnIHVzZXJhZGQgZmVhdHVyZXNfY2hlY2sKLSMgZGVwZW5kcyBvbiB2aXJ0dWFsL2VnbAotUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIm9wZW5nbCIKLQotREVQRU5EUyA9ICJsaWJ4a2Jjb21tb24gZ2RrLXBpeGJ1ZiBwaXhtYW4gY2Fpcm8gZ2xpYi0yLjAganBlZyIKLURFUEVORFMgKz0gIndheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGliaW5wdXQgdmlydHVhbC9lZ2wgcGFuZ28gd2F5bGFuZC1uYXRpdmUiCi0KLVdFU1RPTl9NQUpPUl9WRVJTSU9OID0gIiR7QCcuJy5qb2luKGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMDoxXSl9IgotCi1FWFRSQV9PRU1FU09OICs9ICItRGJhY2tlbmQtZGVmYXVsdD1hdXRvIC1EYmFja2VuZC1yZHA9ZmFsc2UgLURwaXBld2lyZT1mYWxzZSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICdrbXMgZmJkZXYgd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSB3YXlsYW5kJywgJ3h3YXlsYW5kJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtIHN5c3RlbWQgeDExJywgZCl9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWluc19hbnkoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsICcnLCAnaGVhZGxlc3MnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgIGNsaWVudHMgbGF1bmNoIgotIwotIyBDb21wb3NpdG9yIGNob2ljZXMKLSMKLSMgV2VzdG9uIG9uIEtNUwotUEFDS0FHRUNPTkZJR1trbXNdID0gIi1EYmFja2VuZC1kcm09dHJ1ZSwtRGJhY2tlbmQtZHJtPWZhbHNlLGRybSB1ZGV2IHZpcnR1YWwvZWdsIHZpcnR1YWwvbGliZ2xlczIgdmlydHVhbC9saWJnYm0gbXRkZXYiCi0jIFdlc3RvbiBvbiBXYXlsYW5kIChuZXN0ZWQgV2VzdG9uKQotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItRGJhY2tlbmQtd2F5bGFuZD10cnVlLC1EYmFja2VuZC13YXlsYW5kPWZhbHNlLHZpcnR1YWwvZWdsIHZpcnR1YWwvbGliZ2xlczIiCi0jIFdlc3RvbiBvbiBYMTEKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItRGJhY2tlbmQteDExPXRydWUsLURiYWNrZW5kLXgxMT1mYWxzZSx2aXJ0dWFsL2xpYngxMSBsaWJ4Y2IgbGlieGNiIGxpYnhjdXJzb3IgY2Fpcm8iCi0jIEhlYWRsZXNzIFdlc3RvbgotUEFDS0FHRUNPTkZJR1toZWFkbGVzc10gPSAiLURiYWNrZW5kLWhlYWRsZXNzPXRydWUsLURiYWNrZW5kLWhlYWRsZXNzPWZhbHNlIgotIyBXZXN0b24gb24gZnJhbWVidWZmZXIKLVBBQ0tBR0VDT05GSUdbZmJkZXZdID0gIi1EYmFja2VuZC1mYmRldj10cnVlLC1EYmFja2VuZC1mYmRldj1mYWxzZSx1ZGV2IG10ZGV2IgotIyB3ZXN0b24tbGF1bmNoCi1QQUNLQUdFQ09ORklHW2xhdW5jaF0gPSAiLUR3ZXN0b24tbGF1bmNoPXRydWUsLUR3ZXN0b24tbGF1bmNoPWZhbHNlLGRybSIKLSMgVkEtQVBJIGRlc2t0b3AgcmVjb3JkZXIKLVBBQ0tBR0VDT05GSUdbdmFhcGldID0gIi1EYmFja2VuZC1kcm0tc2NyZWVuY2FzdC12YWFwaT10cnVlLC1EYmFja2VuZC1kcm0tc2NyZWVuY2FzdC12YWFwaT1mYWxzZSxsaWJ2YSIKLSMgV2VzdG9uIHdpdGggRUdMIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbZWdsXSA9ICItRHJlbmRlcmVyLWdsPXRydWUsLURyZW5kZXJlci1nbD1mYWxzZSx2aXJ0dWFsL2VnbCIKLSMgV2VzdG9uIHdpdGggbGNtcyBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2xjbXNdID0gIi1EY29sb3ItbWFuYWdlbWVudC1sY21zPXRydWUsLURjb2xvci1tYW5hZ2VtZW50LWxjbXM9ZmFsc2UsbGNtcyIKLSMgV2VzdG9uIHdpdGggd2VicCBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW3dlYnBdID0gIi1EaW1hZ2Utd2VicD10cnVlLC1EaW1hZ2Utd2VicD1mYWxzZSxsaWJ3ZWJwIgotIyBXZXN0b24gd2l0aCBzeXN0ZW1kLWxvZ2luIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbc3lzdGVtZF0gPSAiLURzeXN0ZW1kPXRydWUgLURsYXVuY2hlci1sb2dpbmQ9dHJ1ZSwtRHN5c3RlbWQ9ZmFsc2UgLURsYXVuY2hlci1sb2dpbmQ9ZmFsc2Usc3lzdGVtZCBkYnVzIgotIyBXZXN0b24gd2l0aCBYd2F5bGFuZCBzdXBwb3J0IChyZXF1aXJlcyBYMTEgYW5kIFdheWxhbmQpCi1QQUNLQUdFQ09ORklHW3h3YXlsYW5kXSA9ICItRHh3YXlsYW5kPXRydWUsLUR4d2F5bGFuZD1mYWxzZSIKLSMgY29sb3JkIENNUyBzdXBwb3J0Ci1QQUNLQUdFQ09ORklHW2NvbG9yZF0gPSAiLURjb2xvci1tYW5hZ2VtZW50LWNvbG9yZD10cnVlLC1EY29sb3ItbWFuYWdlbWVudC1jb2xvcmQ9ZmFsc2UsY29sb3JkIgotIyBDbGllbnRzIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbY2xpZW50c10gPSAiLURzaW1wbGUtY2xpZW50cz1hbGwgLURkZW1vLWNsaWVudHM9dHJ1ZSwtRHNpbXBsZS1jbGllbnRzPSAtRGRlbW8tY2xpZW50cz1mYWxzZSIKLSMgVmlydHVhbCByZW1vdGUgb3V0cHV0IHdpdGggR1N0cmVhbWVyIG9uIERSTSBiYWNrZW5kCi1QQUNLQUdFQ09ORklHW3JlbW90aW5nXSA9ICItRHJlbW90aW5nPXRydWUsLURyZW1vdGluZz1mYWxzZSxnc3RyZWFtZXItMS4wIgotIyBXZXN0b24gd2l0aCBQQU0gc3VwcG9ydAotUEFDS0FHRUNPTkZJR1twYW1dID0gIi1EcGFtPXRydWUsLURwYW09ZmFsc2UsbGlicGFtIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIFdlc3RvbiBkb2Vzbid0IG5lZWQgdGhlIC5sYSBmaWxlcyB0byBsb2FkIG1vZHVsZXMsIHNvIHdpcGUgdGhlbQotCXJtIC1mICR7RH0vJHtsaWJkaXJ9L2xpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfS8qLmxhCi0KLQkjIElmIFgxMSwgc2hpcCBhIGRlc2t0b3AgZmlsZSB0byBsYXVuY2ggaXQKLQlpZiBbICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iIF07IHRoZW4KLQkJaW5zdGFsbCAtZCAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMKLQkJaW5zdGFsbCAke1dPUktESVJ9L3dlc3Rvbi5kZXNrdG9wICR7RH0ke2RhdGFkaXJ9L2FwcGxpY2F0aW9ucwotCi0JCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vaWNvbnMvaGljb2xvci80OHg0OC9hcHBzCi0JCWluc3RhbGwgJHtXT1JLRElSfS93ZXN0b24ucG5nICR7RH0ke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNDh4NDgvYXBwcwotCWZpCi0KLQlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4d2F5bGFuZCcsICd5ZXMnLCAnbm8nLCBkKX0iID0gInllcyIgXTsgdGhlbgotCQlpbnN0YWxsIC1EbSA2NDQgJHtXT1JLRElSfS94d2F5bGFuZC53ZXN0b24tc3RhcnQgJHtEfSR7ZGF0YWRpcn0vd2VzdG9uLXN0YXJ0L3h3YXlsYW5kCi0JZmkKLQotCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2xhdW5jaCcsICd5ZXMnLCAnbm8nLCBkKX0iID0gInllcyIgXTsgdGhlbgotCQljaG1vZCB1K3MgJHtEfSR7YmluZGlyfS93ZXN0b24tbGF1bmNoCi0JZmkKLX0KLQotUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3h3YXlsYW5kJywgJyR7UE59LXh3YXlsYW5kJywgJycsIGQpfSBcCi0gICAgICAgICAgICAgbGlid2VzdG9uLSR7V0VTVE9OX01BSk9SX1ZFUlNJT059ICR7UE59LWV4YW1wbGVzIgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0vd2VzdG9uICR7YmluZGlyfS93ZXN0b24tdGVybWluYWwgJHtiaW5kaXJ9L3dlc3Rvbi1pbmZvICR7YmluZGlyfS93ZXN0b24tbGF1bmNoICR7YmluZGlyfS93Y2FwLWRlY29kZSAke2xpYmV4ZWNkaXJ9ICR7bGliZGlyfS8ke0JQTn0vKi5zbyAke2RhdGFkaXJ9IgotCi1GSUxFU19saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0gPSAiJHtsaWJkaXJ9L2xpYioke1NPTElCU30gJHtsaWJkaXJ9L2xpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfS8qLnNvIgotU1VNTUFSWV9saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0gPSAiSGVscGVyIGxpYnJhcnkgZm9yIGltcGxlbWVudGluZyAnd2F5bGFuZCB3aW5kb3cgbWFuYWdlcnMnLiIKLQotRklMRVNfJHtQTn0tZXhhbXBsZXMgPSAiJHtiaW5kaXJ9LyoiCi0KLUZJTEVTXyR7UE59LXh3YXlsYW5kID0gIiR7bGliZGlyfS9saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0veHdheWxhbmQuc28iCi1SREVQRU5EU18ke1BOfS14d2F5bGFuZCArPSAieHNlcnZlci14b3JnLXh3YXlsYW5kIgotCi1SREVQRU5EU18ke1BOfSArPSAieGtleWJvYXJkLWNvbmZpZyIKLVJSRUNPTU1FTkRTXyR7UE59ID0gIndlc3Rvbi1pbml0IGxpYmVyYXRpb24tZm9udHMiCi1SUkVDT01NRU5EU18ke1BOfS1kZXYgKz0gIndheWxhbmQtcHJvdG9jb2xzIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAiLS1zeXN0ZW0gd2VzdG9uLWxhdW5jaCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzguMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3Mvd2F5bGFuZC93ZXN0b25fOC4wLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjhlOWUxNQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3dheWxhbmQvd2VzdG9uXzguMC4wLmJiCkBAIC0wLDAgKzEsMTEyIEBACitTVU1NQVJZID0gIldlc3RvbiwgYSBXYXlsYW5kIGNvbXBvc2l0b3IiCitERVNDUklQVElPTiA9ICJXZXN0b24gaXMgdGhlIHJlZmVyZW5jZSBpbXBsZW1lbnRhdGlvbiBvZiBhIFdheWxhbmQgY29tcG9zaXRvciIKK0hPTUVQQUdFID0gImh0dHA6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZyIKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDc5ZWU5ZTY2YmIwZjk1ZDMzODZhN2FjYWU3ODBiNzAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGlid2VzdG9uL2NvbXBvc2l0b3IuYztlbmRsaW5lPTI3O21kNT02YzUzYmJiZDk5MjczZjRmN2M0YWZmYTg1NWMzM2MwYSIKKworU1JDX1VSSSA9ICJodHRwczovL3dheWxhbmQuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vd2VzdG9uLnBuZyBcCisgICAgICAgICAgIGZpbGU6Ly93ZXN0b24uZGVza3RvcCBcCisgICAgICAgICAgIGZpbGU6Ly94d2F5bGFuZC53ZXN0b24tc3RhcnQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS13ZXN0b24tbGF1bmNoLVByb3ZpZGUtYS1kZWZhdWx0LXZlcnNpb24tdGhhdC1kb2Vzbi10LnBhdGNoIFwKKyIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1M2U0ODEwZDg1MmRmMDYwMWQwMWZkOTg2YTViMjJiMyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NTE4YjQ5YjJlYWExYzMwOTFmMjQ2NzFiZGNjMTI0ZmQ0OWZjOGYxYWY1MTE2MTkyN2FmYTQzMjljMDI3ODQ4IgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly93YXlsYW5kLmZyZWVkZXNrdG9wLm9yZy9yZWxlYXNlcy5odG1sIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyB1c2VyYWRkIGZlYXR1cmVzX2NoZWNrCisjIGRlcGVuZHMgb24gdmlydHVhbC9lZ2wKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK0RFUEVORFMgPSAibGlieGtiY29tbW9uIGdkay1waXhidWYgcGl4bWFuIGNhaXJvIGdsaWItMi4wIGpwZWciCitERVBFTkRTICs9ICJ3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYmlucHV0IHZpcnR1YWwvZWdsIHBhbmdvIHdheWxhbmQtbmF0aXZlIgorCitXRVNUT05fTUFKT1JfVkVSU0lPTiA9ICIke0AnLicuam9pbihkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzA6MV0pfSIKKworRVhUUkFfT0VNRVNPTiArPSAiLURiYWNrZW5kLWRlZmF1bHQ9YXV0byAtRGJhY2tlbmQtcmRwPWZhbHNlIC1EcGlwZXdpcmU9ZmFsc2UiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAna21zIGZiZGV2IHdheWxhbmQgZWdsIGNsaWVudHMnLCAnJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMSB3YXlsYW5kJywgJ3h3YXlsYW5kJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtIHN5c3RlbWQgeDExJywgZCl9IFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWluc19hbnkoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsICcnLCAnaGVhZGxlc3MnLCBkKX0gXAorICAgICAgICAgICAgICAgICAgIGxhdW5jaCIKKyMKKyMgQ29tcG9zaXRvciBjaG9pY2VzCisjCisjIFdlc3RvbiBvbiBLTVMKK1BBQ0tBR0VDT05GSUdba21zXSA9ICItRGJhY2tlbmQtZHJtPXRydWUsLURiYWNrZW5kLWRybT1mYWxzZSxkcm0gdWRldiB2aXJ0dWFsL2VnbCB2aXJ0dWFsL2xpYmdsZXMyIHZpcnR1YWwvbGliZ2JtIG10ZGV2IgorIyBXZXN0b24gb24gV2F5bGFuZCAobmVzdGVkIFdlc3RvbikKK1BBQ0tBR0VDT05GSUdbd2F5bGFuZF0gPSAiLURiYWNrZW5kLXdheWxhbmQ9dHJ1ZSwtRGJhY2tlbmQtd2F5bGFuZD1mYWxzZSx2aXJ0dWFsL2VnbCB2aXJ0dWFsL2xpYmdsZXMyIgorIyBXZXN0b24gb24gWDExCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLURiYWNrZW5kLXgxMT10cnVlLC1EYmFja2VuZC14MTE9ZmFsc2UsdmlydHVhbC9saWJ4MTEgbGlieGNiIGxpYnhjYiBsaWJ4Y3Vyc29yIGNhaXJvIgorIyBIZWFkbGVzcyBXZXN0b24KK1BBQ0tBR0VDT05GSUdbaGVhZGxlc3NdID0gIi1EYmFja2VuZC1oZWFkbGVzcz10cnVlLC1EYmFja2VuZC1oZWFkbGVzcz1mYWxzZSIKKyMgV2VzdG9uIG9uIGZyYW1lYnVmZmVyCitQQUNLQUdFQ09ORklHW2ZiZGV2XSA9ICItRGJhY2tlbmQtZmJkZXY9dHJ1ZSwtRGJhY2tlbmQtZmJkZXY9ZmFsc2UsdWRldiBtdGRldiIKKyMgd2VzdG9uLWxhdW5jaAorUEFDS0FHRUNPTkZJR1tsYXVuY2hdID0gIi1Ed2VzdG9uLWxhdW5jaD10cnVlLC1Ed2VzdG9uLWxhdW5jaD1mYWxzZSxkcm0iCisjIFZBLUFQSSBkZXNrdG9wIHJlY29yZGVyCitQQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItRGJhY2tlbmQtZHJtLXNjcmVlbmNhc3QtdmFhcGk9dHJ1ZSwtRGJhY2tlbmQtZHJtLXNjcmVlbmNhc3QtdmFhcGk9ZmFsc2UsbGlidmEiCisjIFdlc3RvbiB3aXRoIEVHTCBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2VnbF0gPSAiLURyZW5kZXJlci1nbD10cnVlLC1EcmVuZGVyZXItZ2w9ZmFsc2UsdmlydHVhbC9lZ2wiCisjIFdlc3RvbiB3aXRoIGxjbXMgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tsY21zXSA9ICItRGNvbG9yLW1hbmFnZW1lbnQtbGNtcz10cnVlLC1EY29sb3ItbWFuYWdlbWVudC1sY21zPWZhbHNlLGxjbXMiCisjIFdlc3RvbiB3aXRoIHdlYnAgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1t3ZWJwXSA9ICItRGltYWdlLXdlYnA9dHJ1ZSwtRGltYWdlLXdlYnA9ZmFsc2UsbGlid2VicCIKKyMgV2VzdG9uIHdpdGggc3lzdGVtZC1sb2dpbiBzdXBwb3J0CitQQUNLQUdFQ09ORklHW3N5c3RlbWRdID0gIi1Ec3lzdGVtZD10cnVlIC1EbGF1bmNoZXItbG9naW5kPXRydWUsLURzeXN0ZW1kPWZhbHNlIC1EbGF1bmNoZXItbG9naW5kPWZhbHNlLHN5c3RlbWQgZGJ1cyIKKyMgV2VzdG9uIHdpdGggWHdheWxhbmQgc3VwcG9ydCAocmVxdWlyZXMgWDExIGFuZCBXYXlsYW5kKQorUEFDS0FHRUNPTkZJR1t4d2F5bGFuZF0gPSAiLUR4d2F5bGFuZD10cnVlLC1EeHdheWxhbmQ9ZmFsc2UiCisjIGNvbG9yZCBDTVMgc3VwcG9ydAorUEFDS0FHRUNPTkZJR1tjb2xvcmRdID0gIi1EY29sb3ItbWFuYWdlbWVudC1jb2xvcmQ9dHJ1ZSwtRGNvbG9yLW1hbmFnZW1lbnQtY29sb3JkPWZhbHNlLGNvbG9yZCIKKyMgQ2xpZW50cyBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2NsaWVudHNdID0gIi1Ec2ltcGxlLWNsaWVudHM9YWxsIC1EZGVtby1jbGllbnRzPXRydWUsLURzaW1wbGUtY2xpZW50cz0gLURkZW1vLWNsaWVudHM9ZmFsc2UiCisjIFZpcnR1YWwgcmVtb3RlIG91dHB1dCB3aXRoIEdTdHJlYW1lciBvbiBEUk0gYmFja2VuZAorUEFDS0FHRUNPTkZJR1tyZW1vdGluZ10gPSAiLURyZW1vdGluZz10cnVlLC1EcmVtb3Rpbmc9ZmFsc2UsZ3N0cmVhbWVyLTEuMCIKKyMgV2VzdG9uIHdpdGggUEFNIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICItRHBhbT10cnVlLC1EcGFtPWZhbHNlLGxpYnBhbSIKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJIyBXZXN0b24gZG9lc24ndCBuZWVkIHRoZSAubGEgZmlsZXMgdG8gbG9hZCBtb2R1bGVzLCBzbyB3aXBlIHRoZW0KKwlybSAtZiAke0R9LyR7bGliZGlyfS9saWJ3ZXN0b24tJHtXRVNUT05fTUFKT1JfVkVSU0lPTn0vKi5sYQorCisJIyBJZiBYMTEsIHNoaXAgYSBkZXNrdG9wIGZpbGUgdG8gbGF1bmNoIGl0CisJaWYgWyAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgZCl9IiBdOyB0aGVuCisJCWluc3RhbGwgLWQgJHtEfSR7ZGF0YWRpcn0vYXBwbGljYXRpb25zCisJCWluc3RhbGwgJHtXT1JLRElSfS93ZXN0b24uZGVza3RvcCAke0R9JHtkYXRhZGlyfS9hcHBsaWNhdGlvbnMKKworCQlpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L2ljb25zL2hpY29sb3IvNDh4NDgvYXBwcworCQlpbnN0YWxsICR7V09SS0RJUn0vd2VzdG9uLnBuZyAke0R9JHtkYXRhZGlyfS9pY29ucy9oaWNvbG9yLzQ4eDQ4L2FwcHMKKwlmaQorCisJaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAneHdheWxhbmQnLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KKwkJaW5zdGFsbCAtRG0gNjQ0ICR7V09SS0RJUn0veHdheWxhbmQud2VzdG9uLXN0YXJ0ICR7RH0ke2RhdGFkaXJ9L3dlc3Rvbi1zdGFydC94d2F5bGFuZAorCWZpCisKKwlpZiBbICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdsYXVuY2gnLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KKwkJY2htb2QgdStzICR7RH0ke2JpbmRpcn0vd2VzdG9uLWxhdW5jaAorCWZpCit9CisKK1BBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICd4d2F5bGFuZCcsICcke1BOfS14d2F5bGFuZCcsICcnLCBkKX0gXAorICAgICAgICAgICAgIGxpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfSAke1BOfS1leGFtcGxlcyIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vJHtCUE59L2xpYmV4ZWNfd2VzdG9uLnNvIgorRklMRVNfJHtQTn0gPSAiJHtiaW5kaXJ9L3dlc3RvbiAke2JpbmRpcn0vd2VzdG9uLXRlcm1pbmFsICR7YmluZGlyfS93ZXN0b24taW5mbyAke2JpbmRpcn0vd2VzdG9uLWxhdW5jaCAke2JpbmRpcn0vd2NhcC1kZWNvZGUgJHtsaWJleGVjZGlyfSAke2xpYmRpcn0vJHtCUE59Lyouc28qICR7ZGF0YWRpcn0iCisKK0ZJTEVTX2xpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfSA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSAke2xpYmRpcn0vbGlid2VzdG9uLSR7V0VTVE9OX01BSk9SX1ZFUlNJT059Lyouc28iCitTVU1NQVJZX2xpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfSA9ICJIZWxwZXIgbGlicmFyeSBmb3IgaW1wbGVtZW50aW5nICd3YXlsYW5kIHdpbmRvdyBtYW5hZ2VycycuIgorCitGSUxFU18ke1BOfS1leGFtcGxlcyA9ICIke2JpbmRpcn0vKiIKKworRklMRVNfJHtQTn0teHdheWxhbmQgPSAiJHtsaWJkaXJ9L2xpYndlc3Rvbi0ke1dFU1RPTl9NQUpPUl9WRVJTSU9OfS94d2F5bGFuZC5zbyIKK1JERVBFTkRTXyR7UE59LXh3YXlsYW5kICs9ICJ4c2VydmVyLXhvcmcteHdheWxhbmQiCisKK1JERVBFTkRTXyR7UE59ICs9ICJ4a2V5Ym9hcmQtY29uZmlnIgorUlJFQ09NTUVORFNfJHtQTn0gPSAid2VzdG9uLWluaXQgbGliZXJhdGlvbi1mb250cyIKK1JSRUNPTU1FTkRTXyR7UE59LWRldiArPSAid2F5bGFuZC1wcm90b2NvbHMiCisKK1VTRVJBRERfUEFDS0FHRVMgPSAiJHtQTn0iCitHUk9VUEFERF9QQVJBTV8ke1BOfSA9ICItLXN5c3RlbSB3ZXN0b24tbGF1bmNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC9jYXBhYmlsaXR5LmNvbmYgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L2NhcGFiaWxpdHkuY29uZgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YWI3NDYwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveDExLWNvbW1vbi94c2VydmVyLW5vZG0taW5pdC9jYXBhYmlsaXR5LmNvbmYKQEAgLTAsMCArMSwyIEBACitjYXBfc3lzX2FkbWluCUBVU0VSQAorbm9uZQkqCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0L3hzZXJ2ZXItbm9kbSBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQveHNlcnZlci1ub2RtCmluZGV4IDZjNTQ4NTUuLjExNmJiMjcgMTAwNzU1Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQveHNlcnZlci1ub2RtCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXQveHNlcnZlci1ub2RtCkBAIC0zOCw2ICszOCwxNCBAQAogICAgICAgICAgICBpZiBbIC1lIC9kZXYvaGlkcmF3MCBdOyB0aGVuCiAgICAgICAgICAgICAgICBjaG1vZCBvK3J3IC9kZXYvaGlkcmF3KgogICAgICAgICAgICBmaQorICAgICAgICAgICAjIE1ha2Ugc3VyZSB0aGF0IHRoZSBYb3JnIGhhcyB0aGUgY2FwX3N5c19hZG1pbiBjYXBhYmlsaXR5IHdoaWNoIGlzCisgICAgICAgICAgICMgbmVlZGVkIGZvciBzZXR0aW5nIHRoZSBkcm0gbWFzdGVyCisgICAgICAgICAgIGlmICEgZ3JlcCAtcSAiXmF1dGguKnBhbV9jYXBcLnNvIiAvZXRjL3BhbS5kL3N1OyB0aGVuCisgICAgICAgICAgICAgICBlY2hvICJhdXRoCW9wdGlvbmFsCXBhbV9jYXAuc28iID4+L2V0Yy9wYW0uZC9zdQorICAgICAgICAgICBmaQorICAgICAgICAgICBpZiAhIC91c3Ivc2Jpbi9nZXRjYXAgJFhTRVJWRVIgfCAgZ3JlcCAtcSBjYXBfc3lzX2FkbWluOyB0aGVuCisgICAgICAgICAgICAgICAvdXNyL3NiaW4vc2V0Y2FwIGNhcF9zeXNfYWRtaW4rZWlwICRYU0VSVkVSCisgICAgICAgICAgIGZpCiAgICAgICAgZmkKIAogICAgICAgICMgVXNpbmcgc3UgcmF0aGVyIHRoYW4gc3VkbyBhcyBsYXRlc3QgMS44LjEgY2F1c2UgZmFpbHVyZSBbWU9DVE8gIzEyMTFdCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94MTEtY29tbW9uL3hzZXJ2ZXItbm9kbS1pbml0XzMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXRfMy4wLmJiCmluZGV4IDM4NWZlYTUuLmMyOTk1ZjkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXRfMy4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3gxMS1jb21tb24veHNlcnZlci1ub2RtLWluaXRfMy4wLmJiCkBAIC0xMCw2ICsxMCw3IEBACiAgICAgICAgICAgIGZpbGU6Ly9ncGx2Mi1saWNlbnNlLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3hzZXJ2ZXItbm9kbS5zZXJ2aWNlLmluIFwKICAgICAgICAgICAgZmlsZTovL3hzZXJ2ZXItbm9kbS5jb25mLmluIFwKKyAgICAgICAgICAgZmlsZTovL2NhcGFiaWxpdHkuY29uZiBcCiAiCiAKIFMgPSAiJHtXT1JLRElSfSIKQEAgLTE5LDcgKzIwLDcgQEAKIAogaW5oZXJpdCB1cGRhdGUtcmMuZCBzeXN0ZW1kIGZlYXR1cmVzX2NoZWNrCiAKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJ4MTEiCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExICR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCdST09UTEVTU19YJywgJzEnLCAncGFtJywgJycsIGQpfSIKIAogUEFDS0FHRUNPTkZJRyA/Pz0gImJsYW5rIgogIyBkcG1zIGFuZCBzY3JlZW4gc2F2ZXIgd2lsbCBiZSBvbiBvbmx5IGlmICdibGFuaycgaXMgaW4gUEFDS0FHRUNPTkZJRwpAQCAtNDAsNiArNDEsOCBAQAogICAgIGlmIFsgIiR7Uk9PVExFU1NfWH0iID0gIjEiIF0gOyB0aGVuCiAgICAgICAgIFhVU0VSX0hPTUU9Ii9ob21lL3h1c2VyIgogICAgICAgICBYVVNFUj0ieHVzZXIiCisgICAgICAgIGluc3RhbGwgLUQgY2FwYWJpbGl0eS5jb25mICR7RH0ke3N5c2NvbmZkaXJ9L3NlY3VyaXR5L2NhcGFiaWxpdHkuY29uZgorICAgICAgICBzZWQgLWkgInM6QFVTRVJAOiR7WFVTRVJ9OiIgJHtEfSR7c3lzY29uZmRpcn0vc2VjdXJpdHkvY2FwYWJpbGl0eS5jb25mCiAgICAgZWxzZQogICAgICAgICBYVVNFUl9IT01FPSR7Uk9PVF9IT01FfQogICAgICAgICBYVVNFUj0icm9vdCIKQEAgLTYwLDcgKzYzLDcgQEAKICAgICBmaQogfQogCi1SREVQRU5EU18ke1BOfSA9ICJ4aW5pdCAke0BvZS51dGlscy5jb25kaXRpb25hbCgnUk9PVExFU1NfWCcsICcxJywgJ3h1c2VyLWFjY291bnQnLCAnJywgZCl9IgorUkRFUEVORFNfJHtQTn0gPSAieGluaXQgJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoJ1JPT1RMRVNTX1gnLCAnMScsICd4dXNlci1hY2NvdW50IGxpYmNhcCBsaWJjYXAtYmluJywgJycsIGQpfSIKIAogSU5JVFNDUklQVF9OQU1FID0gInhzZXJ2ZXItbm9kbSIKIElOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDkgNSAuIHN0b3AgMjAgMCAxIDIgMyA2IC4iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9ta2ZvbnRkaXJfMS4wLjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9ta2ZvbnRkaXJfMS4wLjcuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGE0NTNlMjQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvbWtmb250ZGlyXzEuMC43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotcmVxdWlyZSB4b3JnLWFwcC1jb21tb24uaW5jCi0KLVNVTU1BUlkgPSAiQSBwcm9ncmFtIHRvIGNyZWF0ZSBhbiBpbmRleCBvZiBYIGZvbnQgZmlsZXMgaW4gYSBkaXJlY3RvcnkiCi0KLURFU0NSSVBUSU9OID0gIkZvciBlYWNoIGRpcmVjdG9yeSBhcmd1bWVudCwgbWtmb250ZGlyIHJlYWRzIGFsbCBvZiB0aGUgXAotZm9udCBmaWxlcyBpbiB0aGUgZGlyZWN0b3J5LiBUaGUgZm9udCBuYW1lcyBhbmQgcmVsYXRlZCBkYXRhIGFyZSB3cml0dGVuIFwKLW91dCB0byB0aGUgZmlsZXMgXCJmb250cy5kaXJcIiwgXCJmb250cy5zY2FsZVwiLCBhbmQgXCJmb250cy5hbGlhc1wiLiAgXAotVGhlIFggc2VydmVyIGFuZCBmb250IHNlcnZlciB1c2UgdGhlc2UgZmlsZXMgdG8gZmluZCB0aGUgYXZhaWxhYmxlIGZvbnQgXAotZmlsZXMuIgotCi1QRSA9ICIxIgotUFIgPSAiJHtJTkNfUFJ9LjAiCi0KLVJERVBFTkRTXyR7UE59ICs9ICJta2ZvbnRzY2FsZSIKLVJERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSArPSAibWtmb250c2NhbGUtbmF0aXZlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjRmY2YyYjkwY2FkYmZjMTUwMDliOWUxMjRkYzNhM2YiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxOGM0MjkxNDhjOTZjMjA3OWVkZGE5MjJhMmI2NzYzMiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1NmQ1MmE0ODJkZjEzMDQ4NGU1MWZkMDY2ZDFiNmVkYTdjMmMwMmRkYmM5MWZlNmUyYmUxYjljNGU3MzA2NTMwIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvbWtmb250c2NhbGVfMS4xLjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9ta2ZvbnRzY2FsZV8xLjEuMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMmE2YmVjMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC9ta2ZvbnRzY2FsZV8xLjEuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYwotCi1TVU1NQVJZID0gIkEgcHJvZ3JhbSB0byBjcmVhdGUgYW4gaW5kZXggb2Ygc2NhbGFibGUgZm9udCBmaWxlcyBmb3IgWCIKLQotREVTQ1JJUFRJT04gPSAiRm9yIGVhY2ggZGlyZWN0b3J5IGFyZ3VtZW50LCBta2ZvbnRzY2FsZSByZWFkcyBhbGwgb2YgdGhlIFwKLXNjYWxhYmxlIGZvbnQgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS4gRm9yIGV2ZXJ5IGZvbnQgZmlsZSBmb3VuZCwgYW4gWDExIFwKLWZvbnQgbmFtZSAoWExGRCkgaXMgZ2VuZXJhdGVkLCBhbmQgaXMgd3JpdHRlbiB0b2dldGhlciB3aXRoIHRoZSBmaWxlIFwKLW5hbWUgdG8gYSBmaWxlIGZvbnRzLnNjYWxlIGluIHRoZSBkaXJlY3RvcnkuICBUaGUgcmVzdWx0aW5nIGZvbnRzLnNjYWxlIFwKLWlzIHVzZWQgYnkgdGhlIG1rZm9udGRpciBwcm9ncmFtLiIKLQotREVQRU5EUyA9ICJ1dGlsLW1hY3Jvcy1uYXRpdmUgemxpYiBsaWJmb250ZW5jIGZyZWV0eXBlIHhvcmdwcm90byIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTJlMGQxMjlkMDUzMDUxNzZkMWE3OTBlMGFjMWFjYjdmIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOTg3YzQzOGU3OWY1ZGRiODRhOWM1NzI2YTE2MTA4MTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMWU5OGRmNjllZTVmNDU0MmQ3MTFlMTQwZTFkOTNlMmMzZjI3NzU0MDdjY2JiNzg0OTExMGQ1MmI5MTc4MmE2YSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL21rZm9udHNjYWxlXzEuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAvbWtmb250c2NhbGVfMS4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTc2N2VlOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL21rZm9udHNjYWxlXzEuMi4xLmJiCkBAIC0wLDAgKzEsMjEgQEAKK3JlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYworCitTVU1NQVJZID0gIkEgcHJvZ3JhbSB0byBjcmVhdGUgYW4gaW5kZXggb2Ygc2NhbGFibGUgZm9udCBmaWxlcyBmb3IgWCIKKworREVTQ1JJUFRJT04gPSAiRm9yIGVhY2ggZGlyZWN0b3J5IGFyZ3VtZW50LCBta2ZvbnRzY2FsZSByZWFkcyBhbGwgb2YgdGhlIFwKK3NjYWxhYmxlIGZvbnQgZmlsZXMgaW4gdGhlIGRpcmVjdG9yeS4gRm9yIGV2ZXJ5IGZvbnQgZmlsZSBmb3VuZCwgYW4gWDExIFwKK2ZvbnQgbmFtZSAoWExGRCkgaXMgZ2VuZXJhdGVkLCBhbmQgaXMgd3JpdHRlbiB0b2dldGhlciB3aXRoIHRoZSBmaWxlIFwKK25hbWUgdG8gYSBmaWxlIGZvbnRzLnNjYWxlIGluIHRoZSBkaXJlY3RvcnkuICBUaGUgcmVzdWx0aW5nIGZvbnRzLnNjYWxlIFwKK2lzIHVzZWQgYnkgdGhlIG1rZm9udGRpciBwcm9ncmFtLiIKKworREVQRU5EUyA9ICJ1dGlsLW1hY3Jvcy1uYXRpdmUgemxpYiBsaWJmb250ZW5jIGZyZWV0eXBlIHhvcmdwcm90byIKKworUFJPVklERVMgKz0gIm1rZm9udGRpciIKK1JQUk9WSURFU18ke1BOfSArPSAibWtmb250ZGlyIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9OTliMWUxMjY5YWJhNTE3OTEzOWI5ZTQzODBmYzA5MzQiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyMTU5NDBkZTE1OGIxYTNkOGIzZjhiNDQyYzYwNmUyZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjYTA0OTVlYjk3NGExNzlkZDc0MmJmYTYxOTlkNTYxYmRhMWM4ZGE0YTBjNWE2NjdmMjFmZDgyYWFhYjZiYWM3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveDExcGVyZl8xLjYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3gxMXBlcmZfMS42LjEuYmIKaW5kZXggMzNjMGM4YS4uYzRkNDQzYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveDExcGVyZl8xLjYuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94MTFwZXJmXzEuNi4xLmJiCkBAIC0xMyw2ICsxMywxMCBAQAogCiBQRSA9ICIxIgogCitpbmhlcml0IG11bHRpbGliX3NjcmlwdAorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59OiR7YmluZGlyfS94MTFwZXJmY29tcCIKKwogZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0ICgpIHsKICAgICBzZWQgLWkgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnICR7RH0ke2JpbmRpcn0veDExcGVyZmNvbXAKIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hpbml0LzAwMDEtTWFrZS1tYW5wYWdlLW11bHRpbGliLWlkZW50aWNhbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hpbml0LzAwMDEtTWFrZS1tYW5wYWdlLW11bHRpbGliLWlkZW50aWNhbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42NDk5MDU1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGluaXQvMDAwMS1NYWtlLW1hbnBhZ2UtbXVsdGlsaWItaWRlbnRpY2FsLnBhdGNoCkBAIC0wLDAgKzEsMjggQEAKK0Zyb20gZDY0MmU2MGQ4OTYzZjFiOTA1NjljZDBhYjVjMjlhYzJjOWJmZTkzOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorRGF0ZTogRnJpLCA2IE1hciAyMDIwIDIyOjI4OjE0ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2UgbWFucGFnZSBtdWx0aWxpYiBpZGVudGljYWwKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQKKworU2lnbmVkLW9mZi1ieTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CistLS0KKyBtYW4vTWFrZWZpbGUuYW0gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tYW4vTWFrZWZpbGUuYW0gYi9tYW4vTWFrZWZpbGUuYW0KK2luZGV4IDljNjU2OWYuLjYwOGU5MzMgMTAwNjQ0CistLS0gYS9tYW4vTWFrZWZpbGUuYW0KKysrKyBiL21hbi9NYWtlZmlsZS5hbQorQEAgLTEyLDcgKzEyLDcgQEAgTUFOX1NVQlNUUys9CS1lICdzfF9fWFNFUlZFUk5BTUVfX3wkKFhTRVJWRVJOQU1FKXxnJyBcCisgCQktZSAnc3xfX1hDT05GSUdGSUxFTUFOX198JChYQ09ORklHRklMRU1BTil8ZycgXAorIAkJLWUgJ3N8X194aW5pdGRpcl9ffCQoWElOSVRESVIpfGcnIFwKKyAJCS1lICdzfF9fYmluZGlyX198JChiaW5kaXIpfGcnIFwKKy0JCS1lICdzfF9fbGliZGlyX198JChsaWJkaXIpfGcnIFwKKysJCS1lICdzfF9fbGliZGlyX198JChwcmVmaXgpL2xpYip8ZycgXAorIAkJLWUgJ3N8X19jb25maWdkaXJfX3wkKFhJTklURElSKXxnJworIAorIAorLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGluaXRfMS40LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94aW5pdF8xLjQuMS5iYgppbmRleCA1NjI2ZWJiLi5jOWUyOGQ5IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94aW5pdF8xLjQuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94aW5pdF8xLjQuMS5iYgpAQCAtMTIsNiArMTIsOCBAQAogCiBQRSA9ICIxIgogCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1NYWtlLW1hbnBhZ2UtbXVsdGlsaWItaWRlbnRpY2FsLnBhdGNoIgorCiBTUkNfVVJJW21kNXN1bV0gPSAiNmQ1MDZhYjJlZmMxN2EwOGU4Nzc3ODY1NGUwOTlkMzciCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGU5YjhmNjE3YjY4YTcwZjZjYWY4N2RhMDFmY2YwZWJkMmI3NTY5MGNkY2JhOWM5MjFkMGVmNTRmYTU0YWJiOSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiY29tcF8xLjQuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctYXBwL3hrYmNvbXBfMS40LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGVhZjhlYWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiY29tcF8xLjQuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLXJlcXVpcmUgeG9yZy1hcHAtY29tbW9uLmluYwotCi1TVU1NQVJZID0gIkEgcHJvZ3JhbSB0byBjb21waWxlIFhLQiBrZXlib2FyZCBkZXNjcmlwdGlvbiIKLQotREVTQ1JJUFRJT04gPSAiVGhlIHhrYmNvbXAga2V5bWFwIGNvbXBpbGVyIGNvbnZlcnRzIGEgZGVzY3JpcHRpb24gb2YgYW4gXAotWEtCIGtleW1hcCBpbnRvIG9uZSBvZiBzZXZlcmFsIG91dHB1dCBmb3JtYXRzLiBUaGUgbW9zdCBjb21tb24gdXNlIGZvciBcCi14a2Jjb21wIGlzIHRvIGNyZWF0ZSBhIGNvbXBpbGVkIGtleW1hcCBmaWxlICgueGttIGV4dGVuc2lvbikgd2hpY2ggY2FuIFwKLWJlIHJlYWQgZGlyZWN0bHkgYnkgWEtCLWNhcGFibGUgWCBzZXJ2ZXJzIG9yIHV0aWxpdGllcy4iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTA4NDM2ZTRmNDQ3Njk2NGUyZTJkZDdlN2U0MWUwNzZhIgotCi1ERVBFTkRTICs9ICJsaWJ4a2JmaWxlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjEyNjEwZGYxOWRmMmFmMzc5N2YyYzEzMGVlMmJjZTk3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjZkZDhiY2I5YmU3ZTg1YmQ3Mjk0YWJlMjYxYjhjN2IwNTM5ZDJmYzkzZTQxYjgwZmI4YmQwMTM3NjdjZTg0MjQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWFwcC94a2Jjb21wXzEuNC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiY29tcF8xLjQuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmE3OWM4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1hcHAveGtiY29tcF8xLjQuMy5iYgpAQCAtMCwwICsxLDE5IEBACityZXF1aXJlIHhvcmctYXBwLWNvbW1vbi5pbmMKKworU1VNTUFSWSA9ICJBIHByb2dyYW0gdG8gY29tcGlsZSBYS0Iga2V5Ym9hcmQgZGVzY3JpcHRpb24iCisKK0RFU0NSSVBUSU9OID0gIlRoZSB4a2Jjb21wIGtleW1hcCBjb21waWxlciBjb252ZXJ0cyBhIGRlc2NyaXB0aW9uIG9mIGFuIFwKK1hLQiBrZXltYXAgaW50byBvbmUgb2Ygc2V2ZXJhbCBvdXRwdXQgZm9ybWF0cy4gVGhlIG1vc3QgY29tbW9uIHVzZSBmb3IgXAoreGtiY29tcCBpcyB0byBjcmVhdGUgYSBjb21waWxlZCBrZXltYXAgZmlsZSAoLnhrbSBleHRlbnNpb24pIHdoaWNoIGNhbiBcCitiZSByZWFkIGRpcmVjdGx5IGJ5IFhLQi1jYXBhYmxlIFggc2VydmVycyBvciB1dGlsaXRpZXMuIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wODQzNmU0ZjQ0NzY5NjRlMmUyZGQ3ZTdlNDFlMDc2YSIKKworREVQRU5EUyArPSAibGlieGtiZmlsZSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCisKK0VYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXNlbGVjdGl2ZS13ZXJyb3IiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI2ZTQ3NTFkOTkzNzNmODVkNDU5YWI0ZGZmMjg4OTNmNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNjI0MmMxNjlmYzExY2FmNjAxY2FjNDZkNzgxZDQ2Nzc0OGM2YTMzMGUxNWIzNmRjZTQ2NTIwYjhhYzhkNDM1IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1zeW5hcHRpY3MvNjRiaXRfdGltZV90X3N1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LWlucHV0LXN5bmFwdGljcy82NGJpdF90aW1lX3Rfc3VwcG9ydC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmI3ZmIzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1zeW5hcHRpY3MvNjRiaXRfdGltZV90X3N1cHBvcnQucGF0Y2gKQEAgLTAsMCArMSw1MSBAQAorVGhpcyBwYXRjaCBhdm9pZHMgdXNpbmcgdGltZSBmaWVsZCBvZiBpbnB1dF9ldmVudCBzdHJ1Y3R1cmUgd2hpY2ggaXMgbm90IGF2YWlsYWJsZQorb24gMzJiaXQgYXJjaGVzIHN1cHBvcnRpbmcgNjRiaXQgdGltZV90IHN0cnVjdHMsIFBhdGNoIG1ha2VzIGl0IGNvbXBhdGlibGUgd2l0aCBuZXcKK2FuZCBrZWVwcyBvbGQgaW5wdXQuaCBpbXBsZW1lbnRhdGlvbiBmdW5jdGlvbmFsIGFzIHdlbGwuCisKK1NlZSBodHRwczovL3NvdXJjZXdhcmUub3JnL2dsaWJjL3dpa2kvWTIwMzhQcm9vZm5lc3NEZXNpZ24KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorCistLS0gYS9zcmMvZXZlbnRjb21tLmMKKysrKyBiL3NyYy9ldmVudGNvbW0uYworQEAgLTU3NSwxMCArNTc1LDEyIEBAIFN5bmFwdGljc1JlYWRFdmVudChJbnB1dEluZm9QdHIgcEluZm8sIHMKKyAgICAgICAgIGV2LT50eXBlID0gRVZfU1lOOworICAgICAgICAgZXYtPmNvZGUgPSBTWU5fUkVQT1JUOworICAgICAgICAgZXYtPnZhbHVlID0gMDsKKy0gICAgICAgIGV2LT50aW1lID0gbGFzdF9ldmVudF90aW1lOworLSAgICB9IGVsc2UgaWYgKGV2LT50eXBlID09IEVWX1NZTikKKy0gICAgICAgIGxhc3RfZXZlbnRfdGltZSA9IGV2LT50aW1lOworLQorKwlldi0+aW5wdXRfZXZlbnRfc2VjID0gbGFzdF9ldmVudF90aW1lLnR2X3NlYzsKKysJZXYtPmlucHV0X2V2ZW50X3VzZWMgPSBsYXN0X2V2ZW50X3RpbWUudHZfdXNlYzsKKysgICAgfSBlbHNlIGlmIChldi0+dHlwZSA9PSBFVl9TWU4pIHsKKysgICAgICAgIGxhc3RfZXZlbnRfdGltZS50dl9zZWMgPSBldi0+aW5wdXRfZXZlbnRfc2VjOworKyAgICAgICAgbGFzdF9ldmVudF90aW1lLnR2X3VzZWMgPSBldi0+aW5wdXRfZXZlbnRfdXNlYzsKKysgICAgfQorICAgICByZXR1cm4gVFJVRTsKKyB9CisgCitAQCAtNzI1LDcgKzcyNyw3IEBAIEV2ZW50UmVhZEh3U3RhdGUoSW5wdXRJbmZvUHRyIHBJbmZvLAorICAgICAgICAgICAgIGNhc2UgU1lOX1JFUE9SVDoKKyAgICAgICAgICAgICAgICAgaHctPm51bUZpbmdlcnMgPSBjb3VudF9maW5nZXJzKHBJbmZvLCBjb21tKTsKKyAgICAgICAgICAgICAgICAgaWYgKHByb3RvX2RhdGEtPmhhdmVfbW9ub3RvbmljX2Nsb2NrKQorLSAgICAgICAgICAgICAgICAgICAgaHctPm1pbGxpcyA9IDEwMDAgKiBldi50aW1lLnR2X3NlYyArIGV2LnRpbWUudHZfdXNlYyAvIDEwMDA7CisrICAgICAgICAgICAgICAgICAgICBody0+bWlsbGlzID0gMTAwMCAqIGV2LmlucHV0X2V2ZW50X3NlYyArIGV2LmlucHV0X2V2ZW50X3VzZWMgLyAxMDAwOworICAgICAgICAgICAgICAgICBlbHNlCisgICAgICAgICAgICAgICAgICAgICBody0+bWlsbGlzID0gR2V0VGltZUluTWlsbGlzKCk7CisgICAgICAgICAgICAgICAgIFN5bmFwdGljc0NvcHlId1N0YXRlKGh3UmV0LCBodyk7CistLS0gYS9zcmMvZXZlbnRjb21tLmgKKysrKyBiL3NyYy9ldmVudGNvbW0uaAorQEAgLTM0LDYgKzM0LDExIEBACisgI2luY2x1ZGUgPHhmODZYaW5wdXQuaD4KKyAjaW5jbHVkZSAic3lucHJvdG8uaCIKKyAKKysjaWZuZGVmIGlucHV0X2V2ZW50X3NlYworKyNkZWZpbmUgaW5wdXRfZXZlbnRfc2VjIHRpbWUudHZfc2VjCisrI2RlZmluZSBpbnB1dF9ldmVudF91c2VjIHRpbWUudHZfdXNlYworKyNlbmRpZgorKworIC8qIGZvciBhdXRvLWRldjogKi8KKyAjZGVmaW5lIERFVl9JTlBVVF9FVkVOVCAiL2Rldi9pbnB1dCIKKyAjZGVmaW5lIEVWRU5UX0RFVl9OQU1FICJldmVudCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtaW5wdXQtc3luYXB0aWNzXzEuOS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1zeW5hcHRpY3NfMS45LjEuYmIKaW5kZXggZGMzMTg5MC4uMzg4MzUwYyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1zeW5hcHRpY3NfMS45LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni1pbnB1dC1zeW5hcHRpY3NfMS45LjEuYmIKQEAgLTEwLDYgKzEwLDggQEAKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTVhYWNkMzUzNWE3NDE4MjQ5NTVjNWViOGYwNjEzOTgiCiAKK1NSQ19VUkkgKz0gImZpbGU6Ly82NGJpdF90aW1lX3Rfc3VwcG9ydC5wYXRjaCIKKwogU1JDX1VSSVttZDVzdW1dID0gImNmYjc5ZDNjOTc1MTUxZjliYmYzMGI3MjdjMjYwY2I5IgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdhZjgzNTI2ZWZmMWM3NmU4YjllMTU1M2IzNDI0NWMyMDNkMDI5MDI4ZDgwNDRkZDlkY2Y3MWVlZjEwMDE1NzYiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWwvMDAwMS1TeW5jLWk5MTVfcGNpaWRzLXVwdG8tODcxN2M2Yjc0MTRmLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC8wMDAxLVN5bmMtaTkxNV9wY2lpZHMtdXB0by04NzE3YzZiNzQxNGYucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZWYzYjFhZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWwvMDAwMS1TeW5jLWk5MTVfcGNpaWRzLXVwdG8tODcxN2M2Yjc0MTRmLnBhdGNoCkBAIC0wLDAgKzEsNTA1IEBACitGcm9tIDA1OTA5ZmVhOTNmMjliMmI2ZTFkNTU0ZGQ2NDIwMTU1MWJkN2EwMjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBMaXdlaSBTb25nIDxsaXdlaS5zb25nQHdpbmRyaXZlci5jb20+CitEYXRlOiBGcmksIDE3IEFwciAyMDIwIDE2OjExOjU5ICswODAwCitTdWJqZWN0OiBbUEFUQ0hdIFN5bmMgaTkxNV9wY2lpZHMgdXB0byA4NzE3YzZiNzQxNGYKKworSW1wb3J0IHRoZSBrZXJuZWwncyBpOTE1X3BjaWlkcy5oLCB1cCB0bzoKKworY29tbWl0IDg3MTdjNmI3NDE0ZmZiODkwNjcyMjc2ZGNjYzI4NGMyMzA3OGFjMGUKK0F1dGhvcjogTGVlIFNoYXduIEMgPHNoYXduLmMubGVlQGludGVsLmNvbT4KK0RhdGU6ICAgVHVlIERlYyAxMCAyMzowNDoxNSAyMDE5ICswODAwCisKKyAgICBkcm0vaTkxNS9jbWw6IFNlcGFyYXRlIFUgc2VyaWVzIHBjaSBpZCBmcm9tIG9yaWdpYW5sIGxpc3QuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL3BhdGNod29yay5rZXJuZWwub3JnL3BhdGNoLzExNDk0NjQ1L10KKworU2lnbmVkLW9mZi1ieTogTGl3ZWkgU29uZyA8bGl3ZWkuc29uZ0B3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL2k5MTVfcGNpaWRzLmggIHwgMjY1ICsrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQorIHNyYy9pbnRlbF9tb2R1bGUuYyB8ICAgMiArLQorIHRlc3QvZHJpMy10ZXN0LmMgICB8ICAgMiArLQorIDMgZmlsZXMgY2hhbmdlZCwgMjA2IGluc2VydGlvbnMoKyksIDYzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2k5MTVfcGNpaWRzLmggYi9zcmMvaTkxNV9wY2lpZHMuaAoraW5kZXggZmQ5NjVmZmJiOTJlLi4xZDJjMTIyMTlmNDQgMTAwNjQ0CistLS0gYS9zcmMvaTkxNV9wY2lpZHMuaAorKysrIGIvc3JjL2k5MTVfcGNpaWRzLmgKK0BAIC0xMDgsOCArMTA4LDEwIEBACisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgyZTQyLCBpbmZvKSwgLyogQjQzX0cgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MmU5MiwgaW5mbykJLyogQjQzX0cuMSAqLworIAorLSNkZWZpbmUgSU5URUxfUElORVZJRVdfSURTKGluZm8pCQkJXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4YTAwMSwgaW5mbyksCQkJXAorKyNkZWZpbmUgSU5URUxfUElORVZJRVdfR19JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4YTAwMSwgaW5mbykKKysKKysjZGVmaW5lIElOVEVMX1BJTkVWSUVXX01fSURTKGluZm8pIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweGEwMTEsIGluZm8pCisgCisgI2RlZmluZSBJTlRFTF9JUk9OTEFLRV9EX0lEUyhpbmZvKSBcCitAQCAtMTY2LDcgKzE2OCwxOCBAQAorICNkZWZpbmUgSU5URUxfSVZCX1FfSURTKGluZm8pIFwKKyAJSU5URUxfUVVBTlRBX1ZHQV9ERVZJQ0UoaW5mbykgLyogUXVhbnRhIHRyYW5zY29kZSAqLworIAorKyNkZWZpbmUgSU5URUxfSFNXX1VMVF9HVDFfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMDIsIGluZm8pLCAvKiBVTFQgR1QxIGRlc2t0b3AgKi8gXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MEEwQSwgaW5mbyksIC8qIFVMVCBHVDEgc2VydmVyICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMEIsIGluZm8pLCAvKiBVTFQgR1QxIHJlc2VydmVkICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMDYsIGluZm8pICAvKiBVTFQgR1QxIG1vYmlsZSAqLworKworKyNkZWZpbmUgSU5URUxfSFNXX1VMWF9HVDFfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMEUsIGluZm8pIC8qIFVMWCBHVDEgbW9iaWxlICovCisrCisgI2RlZmluZSBJTlRFTF9IU1dfR1QxX0lEUyhpbmZvKSBcCisrCUlOVEVMX0hTV19VTFRfR1QxX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9IU1dfVUxYX0dUMV9JRFMoaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MDIsIGluZm8pLCAvKiBHVDEgZGVza3RvcCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwNDBhLCBpbmZvKSwgLyogR1QxIHNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwNDBCLCBpbmZvKSwgLyogR1QxIHJlc2VydmVkICovIFwKK0BAIC0xNzUsMjAgKzE4OCwyNiBAQAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEMwQSwgaW5mbyksIC8qIFNEViBHVDEgc2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMEIsIGluZm8pLCAvKiBTRFYgR1QxIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMEUsIGluZm8pLCAvKiBTRFYgR1QxIHJlc2VydmVkICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMDIsIGluZm8pLCAvKiBVTFQgR1QxIGRlc2t0b3AgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MEEwQSwgaW5mbyksIC8qIFVMVCBHVDEgc2VydmVyICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMEIsIGluZm8pLCAvKiBVTFQgR1QxIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMDIsIGluZm8pLCAvKiBDUlcgR1QxIGRlc2t0b3AgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEQwQSwgaW5mbyksIC8qIENSVyBHVDEgc2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMEIsIGluZm8pLCAvKiBDUlcgR1QxIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMEUsIGluZm8pLCAvKiBDUlcgR1QxIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MDYsIGluZm8pLCAvKiBHVDEgbW9iaWxlICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMDYsIGluZm8pLCAvKiBTRFYgR1QxIG1vYmlsZSAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTA2LCBpbmZvKSwgLyogVUxUIEdUMSBtb2JpbGUgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MEEwRSwgaW5mbyksIC8qIFVMWCBHVDEgbW9iaWxlICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMDYsIGluZm8pICAvKiBDUlcgR1QxIG1vYmlsZSAqLworIAorKyNkZWZpbmUgSU5URUxfSFNXX1VMVF9HVDJfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMTIsIGluZm8pLCAvKiBVTFQgR1QyIGRlc2t0b3AgKi8gXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MEExQSwgaW5mbyksIC8qIFVMVCBHVDIgc2VydmVyICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMUIsIGluZm8pLCAvKiBVTFQgR1QyIHJlc2VydmVkICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMTYsIGluZm8pICAvKiBVTFQgR1QyIG1vYmlsZSAqLworKworKyNkZWZpbmUgSU5URUxfSFNXX1VMWF9HVDJfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMUUsIGluZm8pIC8qIFVMWCBHVDIgbW9iaWxlICovIFwKKysKKyAjZGVmaW5lIElOVEVMX0hTV19HVDJfSURTKGluZm8pIFwKKysJSU5URUxfSFNXX1VMVF9HVDJfSURTKGluZm8pLCBcCisrCUlOVEVMX0hTV19VTFhfR1QyX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MDQxMiwgaW5mbyksIC8qIEdUMiBkZXNrdG9wICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MWEsIGluZm8pLCAvKiBHVDIgc2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MUIsIGluZm8pLCAvKiBHVDIgcmVzZXJ2ZWQgKi8gXAorQEAgLTE5Nyw5ICsyMTYsNiBAQAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEMxQSwgaW5mbyksIC8qIFNEViBHVDIgc2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMUIsIGluZm8pLCAvKiBTRFYgR1QyIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBDMUUsIGluZm8pLCAvKiBTRFYgR1QyIHJlc2VydmVkICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMTIsIGluZm8pLCAvKiBVTFQgR1QyIGRlc2t0b3AgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MEExQSwgaW5mbyksIC8qIFVMVCBHVDIgc2VydmVyICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMUIsIGluZm8pLCAvKiBVTFQgR1QyIHJlc2VydmVkICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMTIsIGluZm8pLCAvKiBDUlcgR1QyIGRlc2t0b3AgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEQxQSwgaW5mbyksIC8qIENSVyBHVDIgc2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDBEMUIsIGluZm8pLCAvKiBDUlcgR1QyIHJlc2VydmVkICovIFwKK0BAIC0yMDcsMTEgKzIyMywxNyBAQAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MDQxNiwgaW5mbyksIC8qIEdUMiBtb2JpbGUgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MDQyNiwgaW5mbyksIC8qIEdUMiBtb2JpbGUgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEMxNiwgaW5mbyksIC8qIFNEViBHVDIgbW9iaWxlICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMTYsIGluZm8pLCAvKiBVTFQgR1QyIG1vYmlsZSAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTFFLCBpbmZvKSwgLyogVUxYIEdUMiBtb2JpbGUgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEQxNiwgaW5mbykgIC8qIENSVyBHVDIgbW9iaWxlICovCisgCisrI2RlZmluZSBJTlRFTF9IU1dfVUxUX0dUM19JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MEEyMiwgaW5mbyksIC8qIFVMVCBHVDMgZGVza3RvcCAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTJBLCBpbmZvKSwgLyogVUxUIEdUMyBzZXJ2ZXIgKi8gXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MEEyQiwgaW5mbyksIC8qIFVMVCBHVDMgcmVzZXJ2ZWQgKi8gXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MEEyNiwgaW5mbyksIC8qIFVMVCBHVDMgbW9iaWxlICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDBBMkUsIGluZm8pICAvKiBVTFQgR1QzIHJlc2VydmVkICovCisrCisgI2RlZmluZSBJTlRFTF9IU1dfR1QzX0lEUyhpbmZvKSBcCisrCUlOVEVMX0hTV19VTFRfR1QzX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MDQyMiwgaW5mbyksIC8qIEdUMyBkZXNrdG9wICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MmEsIGluZm8pLCAvKiBHVDMgc2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDA0MkIsIGluZm8pLCAvKiBHVDMgcmVzZXJ2ZWQgKi8gXAorQEAgLTIyMCwxNiArMjQyLDExIEBACisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQzJBLCBpbmZvKSwgLyogU0RWIEdUMyBzZXJ2ZXIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEMyQiwgaW5mbyksIC8qIFNEViBHVDMgcmVzZXJ2ZWQgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEMyRSwgaW5mbyksIC8qIFNEViBHVDMgcmVzZXJ2ZWQgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MEEyMiwgaW5mbyksIC8qIFVMVCBHVDMgZGVza3RvcCAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTJBLCBpbmZvKSwgLyogVUxUIEdUMyBzZXJ2ZXIgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MEEyQiwgaW5mbyksIC8qIFVMVCBHVDMgcmVzZXJ2ZWQgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEQyMiwgaW5mbyksIC8qIENSVyBHVDMgZGVza3RvcCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwRDJBLCBpbmZvKSwgLyogQ1JXIEdUMyBzZXJ2ZXIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEQyQiwgaW5mbyksIC8qIENSVyBHVDMgcmVzZXJ2ZWQgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEQyRSwgaW5mbyksIC8qIENSVyBHVDMgcmVzZXJ2ZWQgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MEMyNiwgaW5mbyksIC8qIFNEViBHVDMgbW9iaWxlICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDBBMjYsIGluZm8pLCAvKiBVTFQgR1QzIG1vYmlsZSAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwQTJFLCBpbmZvKSwgLyogVUxUIEdUMyByZXNlcnZlZCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwRDI2LCBpbmZvKSAgLyogQ1JXIEdUMyBtb2JpbGUgKi8KKyAKKyAjZGVmaW5lIElOVEVMX0hTV19JRFMoaW5mbykgXAorQEAgLTI0NSwzNSArMjYyLDU5IEBACisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgwMTU3LCBpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MDE1NSwgaW5mbykKKyAKKy0jZGVmaW5lIElOVEVMX0JEV19HVDFfSURTKGluZm8pICBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjAyLCBpbmZvKSwgLyogR1QxIFVMVCAqLyBcCisrI2RlZmluZSBJTlRFTF9CRFdfVUxUX0dUMV9JRFMoaW5mbykgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYwNiwgaW5mbyksIC8qIEdUMSBVTFQgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTYwQiwgaW5mbyksIC8qIEdUMSBJcmlzICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2MEUsIGluZm8pLCAvKiBHVDEgVUxYICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE2MEIsIGluZm8pICAvKiBHVDEgSXJpcyAqLworKworKyNkZWZpbmUgSU5URUxfQkRXX1VMWF9HVDFfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE2MEUsIGluZm8pIC8qIEdUMSBVTFggKi8KKysKKysjZGVmaW5lIElOVEVMX0JEV19HVDFfSURTKGluZm8pIFwKKysJSU5URUxfQkRXX1VMVF9HVDFfSURTKGluZm8pLCBcCisrCUlOVEVMX0JEV19VTFhfR1QxX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTYwMiwgaW5mbyksIC8qIEdUMSBVTFQgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYwQSwgaW5mbyksIC8qIEdUMSBTZXJ2ZXIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYwRCwgaW5mbykgIC8qIEdUMSBXb3Jrc3RhdGlvbiAqLworIAorLSNkZWZpbmUgSU5URUxfQkRXX0dUMl9JRFMoaW5mbykgIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2MTIsIGluZm8pLCAvKiBHVDIgSGFsbyAqLwlcCisrI2RlZmluZSBJTlRFTF9CRFdfVUxUX0dUMl9JRFMoaW5mbykgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTYxNiwgaW5mbyksIC8qIEdUMiBVTFQgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTYxQiwgaW5mbyksIC8qIEdUMiBVTFQgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTYxRSwgaW5mbyksIC8qIEdUMiBVTFggKi8gXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTYxQiwgaW5mbykgIC8qIEdUMiBVTFQgKi8KKysKKysjZGVmaW5lIElOVEVMX0JEV19VTFhfR1QyX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjFFLCBpbmZvKSAvKiBHVDIgVUxYICovCisrCisrI2RlZmluZSBJTlRFTF9CRFdfR1QyX0lEUyhpbmZvKSBcCisrCUlOVEVMX0JEV19VTFRfR1QyX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9CRFdfVUxYX0dUMl9JRFMoaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE2MTIsIGluZm8pLCAvKiBHVDIgSGFsbyAqLwlcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjFBLCBpbmZvKSwgLyogR1QyIFNlcnZlciAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjFELCBpbmZvKSAgLyogR1QyIFdvcmtzdGF0aW9uICovCisgCisrI2RlZmluZSBJTlRFTF9CRFdfVUxUX0dUM19JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTYyNiwgaW5mbyksIC8qIFVMVCAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjJCLCBpbmZvKSAgLyogSXJpcyAqLyBcCisrCisrI2RlZmluZSBJTlRFTF9CRFdfVUxYX0dUM19JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTYyRSwgaW5mbykgIC8qIFVMWCAqLworKworICNkZWZpbmUgSU5URUxfQkRXX0dUM19JRFMoaW5mbykgXAorKwlJTlRFTF9CRFdfVUxUX0dUM19JRFMoaW5mbyksIFwKKysJSU5URUxfQkRXX1VMWF9HVDNfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjIyLCBpbmZvKSwgLyogVUxUICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2MjYsIGluZm8pLCAvKiBVTFQgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTYyQiwgaW5mbyksIC8qIElyaXMgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTYyRSwgaW5mbyksICAvKiBVTFggKi9cCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjJBLCBpbmZvKSwgLyogU2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE2MkQsIGluZm8pICAvKiBXb3Jrc3RhdGlvbiAqLworIAorKyNkZWZpbmUgSU5URUxfQkRXX1VMVF9SU1ZEX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjM2LCBpbmZvKSwgLyogVUxUICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE2M0IsIGluZm8pICAvKiBJcmlzICovCisrCisrI2RlZmluZSBJTlRFTF9CRFdfVUxYX1JTVkRfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE2M0UsIGluZm8pIC8qIFVMWCAqLworKworICNkZWZpbmUgSU5URUxfQkRXX1JTVkRfSURTKGluZm8pIFwKKysJSU5URUxfQkRXX1VMVF9SU1ZEX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9CRFdfVUxYX1JTVkRfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjMyLCBpbmZvKSwgLyogVUxUICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE2MzYsIGluZm8pLCAvKiBVTFQgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTYzQiwgaW5mbyksIC8qIElyaXMgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTYzRSwgaW5mbyksIC8qIFVMWCAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxNjNBLCBpbmZvKSwgLyogU2VydmVyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE2M0QsIGluZm8pICAvKiBXb3Jrc3RhdGlvbiAqLworIAorQEAgLTI4OSwyNSArMzMwLDQwIEBACisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgyMmIyLCBpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MjJiMywgaW5mbykKKyAKKysjZGVmaW5lIElOVEVMX1NLTF9VTFRfR1QxX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTA2LCBpbmZvKSAvKiBVTFQgR1QxICovCisrCisrI2RlZmluZSBJTlRFTF9TS0xfVUxYX0dUMV9JRFMoaW5mbykgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4MTkwRSwgaW5mbykgLyogVUxYIEdUMSAqLworKworICNkZWZpbmUgSU5URUxfU0tMX0dUMV9JRFMoaW5mbykJXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTkwNiwgaW5mbyksIC8qIFVMVCBHVDEgKi8gXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4MTkwRSwgaW5mbyksIC8qIFVMWCBHVDEgKi8gXAorKwlJTlRFTF9TS0xfVUxUX0dUMV9JRFMoaW5mbyksIFwKKysJSU5URUxfU0tMX1VMWF9HVDFfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTAyLCBpbmZvKSwgLyogRFQgIEdUMSAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTBCLCBpbmZvKSwgLyogSGFsbyBHVDEgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTkwQSwgaW5mbykgLyogU1JWIEdUMSAqLworIAorLSNkZWZpbmUgSU5URUxfU0tMX0dUMl9JRFMoaW5mbykJXAorKyNkZWZpbmUgSU5URUxfU0tMX1VMVF9HVDJfSURTKGluZm8pIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE5MTYsIGluZm8pLCAvKiBVTFQgR1QyICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDE5MjEsIGluZm8pLCAvKiBVTFQgR1QyRiAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTFFLCBpbmZvKSwgLyogVUxYIEdUMiAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTIxLCBpbmZvKSAgLyogVUxUIEdUMkYgKi8KKysKKysjZGVmaW5lIElOVEVMX1NLTF9VTFhfR1QyX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTFFLCBpbmZvKSAvKiBVTFggR1QyICovCisrCisrI2RlZmluZSBJTlRFTF9TS0xfR1QyX0lEUyhpbmZvKQlcCisrCUlOVEVMX1NLTF9VTFRfR1QyX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9TS0xfVUxYX0dUMl9JRFMoaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE5MTIsIGluZm8pLCAvKiBEVCAgR1QyICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDE5MUIsIGluZm8pLCAvKiBIYWxvIEdUMiAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTFBLCBpbmZvKSwgLyogU1JWIEdUMiAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTFELCBpbmZvKSAgLyogV0tTIEdUMiAqLworIAorKyNkZWZpbmUgSU5URUxfU0tMX1VMVF9HVDNfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDE5MjYsIGluZm8pIC8qIFVMVCBHVDMgKi8KKysKKyAjZGVmaW5lIElOVEVMX1NLTF9HVDNfSURTKGluZm8pIFwKKysJSU5URUxfU0tMX1VMVF9HVDNfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTIzLCBpbmZvKSwgLyogVUxUIEdUMyAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTI2LCBpbmZvKSwgLyogVUxUIEdUMyAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTI3LCBpbmZvKSwgLyogVUxUIEdUMyAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgxOTJCLCBpbmZvKSwgLyogSGFsbyBHVDMgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MTkyRCwgaW5mbykgIC8qIFNSViBHVDMgKi8KK0BAIC0zMzYsNDUgKzM5Miw5MSBAQAorIAlJTlRFTF9WR0FfREVWSUNFKDB4MzE4NCwgaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDMxODUsIGluZm8pCisgCistI2RlZmluZSBJTlRFTF9LQkxfR1QxX0lEUyhpbmZvKQlcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTEzLCBpbmZvKSwgLyogVUxUIEdUMS41ICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDU5MTUsIGluZm8pLCAvKiBVTFggR1QxLjUgKi8gXAorKyNkZWZpbmUgSU5URUxfS0JMX1VMVF9HVDFfSURTKGluZm8pIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDU5MDYsIGluZm8pLCAvKiBVTFQgR1QxICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDU5MTMsIGluZm8pICAvKiBVTFQgR1QxLjUgKi8KKysKKysjZGVmaW5lIElOVEVMX0tCTF9VTFhfR1QxX0lEUyhpbmZvKSBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTBFLCBpbmZvKSwgLyogVUxYIEdUMSAqLyBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTE1LCBpbmZvKSAgLyogVUxYIEdUMS41ICovCisrCisrI2RlZmluZSBJTlRFTF9LQkxfR1QxX0lEUyhpbmZvKQlcCisrCUlOVEVMX0tCTF9VTFRfR1QxX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9LQkxfVUxYX0dUMV9JRFMoaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDU5MDIsIGluZm8pLCAvKiBEVCAgR1QxICovIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDU5MDgsIGluZm8pLCAvKiBIYWxvIEdUMSAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTBCLCBpbmZvKSwgLyogSGFsbyBHVDEgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkwQSwgaW5mbykgLyogU1JWIEdUMSAqLworIAorLSNkZWZpbmUgSU5URUxfS0JMX0dUMl9JRFMoaW5mbykJXAorKyNkZWZpbmUgSU5URUxfS0JMX1VMVF9HVDJfSURTKGluZm8pIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDU5MTYsIGluZm8pLCAvKiBVTFQgR1QyICovIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDU5MjEsIGluZm8pICAvKiBVTFQgR1QyRiAqLworKworKyNkZWZpbmUgSU5URUxfS0JMX1VMWF9HVDJfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDU5MUUsIGluZm8pICAvKiBVTFggR1QyICovCisrCisrI2RlZmluZSBJTlRFTF9LQkxfR1QyX0lEUyhpbmZvKQlcCisrCUlOVEVMX0tCTF9VTFRfR1QyX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9LQkxfVUxYX0dUMl9JRFMoaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDU5MTcsIGluZm8pLCAvKiBNb2JpbGUgR1QyICovIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDU5MjEsIGluZm8pLCAvKiBVTFQgR1QyRiAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTFFLCBpbmZvKSwgLyogVUxYIEdUMiAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTEyLCBpbmZvKSwgLyogRFQgIEdUMiAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTFCLCBpbmZvKSwgLyogSGFsbyBHVDIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkxQSwgaW5mbyksIC8qIFNSViBHVDIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NTkxRCwgaW5mbykgLyogV0tTIEdUMiAqLworIAorKyNkZWZpbmUgSU5URUxfS0JMX1VMVF9HVDNfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDU5MjYsIGluZm8pIC8qIFVMVCBHVDMgKi8KKysKKyAjZGVmaW5lIElOVEVMX0tCTF9HVDNfSURTKGluZm8pIFwKKysJSU5URUxfS0JMX1VMVF9HVDNfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTIzLCBpbmZvKSwgLyogVUxUIEdUMyAqLyBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTI2LCBpbmZvKSwgLyogVUxUIEdUMyAqLyBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTI3LCBpbmZvKSAvKiBVTFQgR1QzICovCisgCisgI2RlZmluZSBJTlRFTF9LQkxfR1Q0X0lEUyhpbmZvKSBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTNCLCBpbmZvKSAvKiBIYWxvIEdUNCAqLworIAorIC8qIEFNTC9LQkwgWSBHVDIgKi8KKy0jZGVmaW5lIElOVEVMX0FNTF9HVDJfSURTKGluZm8pIFwKKysjZGVmaW5lIElOVEVMX0FNTF9LQkxfR1QyX0lEUyhpbmZvKSBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1OTFDLCBpbmZvKSwgIC8qIFVMWCBHVDIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4ODdDMCwgaW5mbykgLyogVUxYIEdUMiAqLworIAorKy8qIEFNTC9DRkwgWSBHVDIgKi8KKysjZGVmaW5lIElOVEVMX0FNTF9DRkxfR1QyX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4N0NBLCBpbmZvKQorKworKy8qIENNTCBHVDEgKi8KKysjZGVmaW5lIElOVEVMX0NNTF9HVDFfSURTKGluZm8pCVwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCQTUsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkE4LCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJBNCwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCQTIsIGluZm8pCisrCisrI2RlZmluZSBJTlRFTF9DTUxfVV9HVDFfSURTKGluZm8pIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCMjEsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkFBLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJBQywgaW5mbykKKysKKysvKiBDTUwgR1QyICovCisrI2RlZmluZSBJTlRFTF9DTUxfR1QyX0lEUyhpbmZvKQlcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkM1LCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJDOCwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCQzQsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkMyLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJDNiwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCRTYsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QkY2LCBpbmZvKQorKworKyNkZWZpbmUgSU5URUxfQ01MX1VfR1QyX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QjQxLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUJDQSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlCQ0MsIGluZm8pCisrCisgI2RlZmluZSBJTlRFTF9LQkxfSURTKGluZm8pIFwKKyAJSU5URUxfS0JMX0dUMV9JRFMoaW5mbyksIFwKKyAJSU5URUxfS0JMX0dUMl9JRFMoaW5mbyksIFwKKyAJSU5URUxfS0JMX0dUM19JRFMoaW5mbyksIFwKKyAJSU5URUxfS0JMX0dUNF9JRFMoaW5mbyksIFwKKy0JSU5URUxfQU1MX0dUMl9JRFMoaW5mbykKKysJSU5URUxfQU1MX0tCTF9HVDJfSURTKGluZm8pCisgCisgLyogQ0ZMIFMgKi8KKyAjZGVmaW5lIElOVEVMX0NGTF9TX0dUMV9JRFMoaW5mbykgXAorQEAgLTM5MCw2ICs0OTIsOSBAQAorIAlJTlRFTF9WR0FfREVWSUNFKDB4M0U5QSwgaW5mbykgIC8qIFNSViBHVDIgKi8KKyAKKyAvKiBDRkwgSCAqLworKyNkZWZpbmUgSU5URUxfQ0ZMX0hfR1QxX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRTlDLCBpbmZvKQorKworICNkZWZpbmUgSU5URUxfQ0ZMX0hfR1QyX0lEUyhpbmZvKSBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRTlCLCBpbmZvKSwgLyogSGFsbyBHVDIgKi8gXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4M0U5NCwgaW5mbykgIC8qIEhhbG8gR1QyICovCitAQCAtNDA3LDMwICs1MTIsNDMgQEAKKyAKKyAvKiBXSEwvQ0ZMIFUgR1QxICovCisgI2RlZmluZSBJTlRFTF9XSExfVV9HVDFfSURTKGluZm8pIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDNFQTEsIGluZm8pCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRUExLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4M0VBNCwgaW5mbykKKyAKKyAvKiBXSEwvQ0ZMIFUgR1QyICovCisgI2RlZmluZSBJTlRFTF9XSExfVV9HVDJfSURTKGluZm8pIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDNFQTAsIGluZm8pCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRUEwLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4M0VBMywgaW5mbykKKyAKKyAvKiBXSEwvQ0ZMIFUgR1QzICovCisgI2RlZmluZSBJTlRFTF9XSExfVV9HVDNfSURTKGluZm8pIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDNFQTIsIGluZm8pLCBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHgzRUEzLCBpbmZvKSwgXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4M0VBNCwgaW5mbykKKysJSU5URUxfVkdBX0RFVklDRSgweDNFQTIsIGluZm8pCisgCisgI2RlZmluZSBJTlRFTF9DRkxfSURTKGluZm8pCSAgIFwKKyAJSU5URUxfQ0ZMX1NfR1QxX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9DRkxfU19HVDJfSURTKGluZm8pLCBcCisrCUlOVEVMX0NGTF9IX0dUMV9JRFMoaW5mbyksIFwKKyAJSU5URUxfQ0ZMX0hfR1QyX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9DRkxfVV9HVDJfSURTKGluZm8pLCBcCisgCUlOVEVMX0NGTF9VX0dUM19JRFMoaW5mbyksIFwKKyAJSU5URUxfV0hMX1VfR1QxX0lEUyhpbmZvKSwgXAorIAlJTlRFTF9XSExfVV9HVDJfSURTKGluZm8pLCBcCistCUlOVEVMX1dITF9VX0dUM19JRFMoaW5mbykKKysJSU5URUxfV0hMX1VfR1QzX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9BTUxfQ0ZMX0dUMl9JRFMoaW5mbyksIFwKKysJSU5URUxfQ01MX0dUMV9JRFMoaW5mbyksIFwKKysJSU5URUxfQ01MX0dUMl9JRFMoaW5mbyksIFwKKysJSU5URUxfQ01MX1VfR1QxX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9DTUxfVV9HVDJfSURTKGluZm8pCisgCisgLyogQ05MICovCisrI2RlZmluZSBJTlRFTF9DTkxfUE9SVF9GX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTU0LCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4NUE1QywgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDVBNDQsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTRDLCBpbmZvKQorKworICNkZWZpbmUgSU5URUxfQ05MX0lEUyhpbmZvKSBcCisrCUlOVEVMX0NOTF9QT1JUX0ZfSURTKGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTUxLCBpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NUE1OSwgaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDVBNDEsIGluZm8pLCBcCitAQCAtNDQwLDIyICs1NTgsNDcgQEAKKyAJSU5URUxfVkdBX0RFVklDRSgweDVBNDIsIGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTRBLCBpbmZvKSwgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4NUE1MCwgaW5mbyksIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDVBNDAsIGluZm8pLCBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTU0LCBpbmZvKSwgXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4NUE1QywgaW5mbyksIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDVBNDQsIGluZm8pLCBcCistCUlOVEVMX1ZHQV9ERVZJQ0UoMHg1QTRDLCBpbmZvKQorKwlJTlRFTF9WR0FfREVWSUNFKDB4NUE0MCwgaW5mbykKKyAKKyAvKiBJQ0wgKi8KKy0jZGVmaW5lIElOVEVMX0lDTF8xMV9JRFMoaW5mbykgXAorKyNkZWZpbmUgSU5URUxfSUNMX1BPUlRfRl9JRFMoaW5mbykgXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4OEE1MCwgaW5mbyksIFwKKy0JSU5URUxfVkdBX0RFVklDRSgweDhBNTEsIGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTVDLCBpbmZvKSwgXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4OEE1RCwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDhBNTksIGluZm8pLAlcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTU4LCBpbmZvKSwJXAorIAlJTlRFTF9WR0FfREVWSUNFKDB4OEE1MiwgaW5mbyksIFwKKyAJSU5URUxfVkdBX0RFVklDRSgweDhBNUEsIGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTVCLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OEE1NywgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDhBNTYsIGluZm8pLCBcCisgCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTcxLCBpbmZvKSwgXAorLQlJTlRFTF9WR0FfREVWSUNFKDB4OEE3MCwgaW5mbykKKysJSU5URUxfVkdBX0RFVklDRSgweDhBNzAsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg4QTUzLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OEE1NCwgaW5mbykKKysKKysjZGVmaW5lIElOVEVMX0lDTF8xMV9JRFMoaW5mbykgXAorKwlJTlRFTF9JQ0xfUE9SVF9GX0lEUyhpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OEE1MSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDhBNUQsIGluZm8pCisrCisrLyogRUhML0pTTCAqLworKyNkZWZpbmUgSU5URUxfRUhMX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg0NTAwLCBpbmZvKSwJXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4NDU3MSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDQ1NTEsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg0NTQxLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4NEU3MSwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDRFNjEsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg0RTUxLCBpbmZvKQorKworKy8qIFRHTCAqLworKyNkZWZpbmUgSU5URUxfVEdMXzEyX0lEUyhpbmZvKSBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QTQ5LCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUE0MCwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlBNTksIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QTYwLCBpbmZvKSwgXAorKwlJTlRFTF9WR0FfREVWSUNFKDB4OUE2OCwgaW5mbyksIFwKKysJSU5URUxfVkdBX0RFVklDRSgweDlBNzAsIGluZm8pLCBcCisrCUlOVEVMX1ZHQV9ERVZJQ0UoMHg5QTc4LCBpbmZvKQorIAorICNlbmRpZiAvKiBfSTkxNV9QQ0lJRFNfSCAqLworZGlmZiAtLWdpdCBhL3NyYy9pbnRlbF9tb2R1bGUuYyBiL3NyYy9pbnRlbF9tb2R1bGUuYworaW5kZXggYTcxYzJlNDBiNzc0Li5lMGI5NGMxOTAyNTQgMTAwNjQ0CistLS0gYS9zcmMvaW50ZWxfbW9kdWxlLmMKKysrKyBiL3NyYy9pbnRlbF9tb2R1bGUuYworQEAgLTM1Nyw3ICszNTcsNyBAQCBzdGF0aWMgY29uc3Qgc3RydWN0IHBjaV9pZF9tYXRjaCBpbnRlbF9kZXZpY2VfbWF0Y2hbXSA9IHsKKyAJSU5URUxfSTk0NUdNX0lEUygmaW50ZWxfaTk0NV9pbmZvKSwKKyAKKyAJSU5URUxfRzMzX0lEUygmaW50ZWxfZzMzX2luZm8pLAorLQlJTlRFTF9QSU5FVklFV19JRFMoJmludGVsX2czM19pbmZvKSwKKysJSU5URUxfUElORVZJRVdfR19JRFMoJmludGVsX2czM19pbmZvKSwKKyAKKyAJSU5URUxfSTk2NUdfSURTKCZpbnRlbF9pOTY1X2luZm8pLAorIAlJTlRFTF9JOTY1R01fSURTKCZpbnRlbF9pOTY1X2luZm8pLAorZGlmZiAtLWdpdCBhL3Rlc3QvZHJpMy10ZXN0LmMgYi90ZXN0L2RyaTMtdGVzdC5jCitpbmRleCA3OGUxMDVhOGI2NGEuLjUyNjVhMzBjZWExYiAxMDA2NDQKKy0tLSBhL3Rlc3QvZHJpMy10ZXN0LmMKKysrKyBiL3Rlc3QvZHJpMy10ZXN0LmMKK0BAIC03Niw3ICs3Niw3IEBAIHN0YXRpYyBjb25zdCBzdHJ1Y3QgcGNpX2lkX21hdGNoIGlkc1tdID0geworIAlJTlRFTF9JOTQ1R01fSURTKDAzMSksCisgCisgCUlOVEVMX0czM19JRFMoMDMzKSwKKy0JSU5URUxfUElORVZJRVdfSURTKDAzMyksCisrCUlOVEVMX1BJTkVWSUVXX0dfSURTKDAzMyksCisgCisgCUlOVEVMX0k5NjVHX0lEUygwNDApLAorIAlJTlRFTF9JOTY1R01fSURTKDA0MCksCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsLzAxX0ZpeC1idWlsZC1vbi1pNjg2LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbC8wMV9GaXgtYnVpbGQtb24taTY4Ni5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNTI5MTZmOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94Zjg2LXZpZGVvLWludGVsLzAxX0ZpeC1idWlsZC1vbi1pNjg2LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTUgKzAsMCBAQAotRnJvbSBhNDE0ZDRlMjQ0NjFkYTFjYjRjZWY4ZWU5MTBiYzU3YmFiMzYwY2ViIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWRhbSBKYWNrc29uIDxhamF4QHJlZGhhdC5jb20+Ci1EYXRlOiBUdWUsIDYgTWFyIDIwMTggMTI6MDc6NDYgLTA1MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4IGJ1aWxkIG9uIGk2ODYKLQotUHJlc3VtYWJseSB0aGlzIG9ubHkgbWF0dGVycyBmb3IgaTY4NiBiZWNhdXNlIGFtZDY0IGltcGxpZXMgc3NlMiwgYnV0OgotCi1CVUlMRFNUREVSUjogSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGdlbjRfdmVydGV4LmM6MzQ6Ci1CVUlMRFNUREVSUjogZ2VuNF92ZXJ0ZXguYzogSW4gZnVuY3Rpb24gJ2VtaXRfdmVydGV4JzoKLUJVSUxEU1RERVJSOiBzbmFfcmVuZGVyX2lubGluZS5oOjQwOjI2OiBlcnJvcjogaW5saW5pbmcgZmFpbGVkIGluIGNhbGwgdG8gYWx3YXlzX2lubGluZSAndmVydGV4X2VtaXRfMnMnOiB0YXJnZXQgc3BlY2lmaWMgb3B0aW9uIG1pc21hdGNoCi1CVUlMRFNUREVSUjogIHN0YXRpYyBmb3JjZV9pbmxpbmUgdm9pZCB2ZXJ0ZXhfZW1pdF8ycyhzdHJ1Y3Qgc25hICpzbmEsIGludDE2X3QgeCwgaW50MTZfdCB5KQotQlVJTERTVERFUlI6ICAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn4KLUJVSUxEU1RERVJSOiBnZW40X3ZlcnRleC5jOjMwODoyNTogbm90ZTogY2FsbGVkIGZyb20gaGVyZQotQlVJTERTVERFUlI6ICAjZGVmaW5lIE9VVF9WRVJURVgoeCx5KSB2ZXJ0ZXhfZW1pdF8ycyhzbmEsIHgseSkgLyogWFhYIGFzc2VydCghdG9vX2xhcmdlKHgsIHkpKTsgKi8KLUJVSUxEU1RERVJSOiAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+fn5+fn5+fn5+fn5+fn5+fn5+Ci1CVUlMRFNUREVSUjogZ2VuNF92ZXJ0ZXguYzozNjA6Mjogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvICdPVVRfVkVSVEVYJwotQlVJTERTVERFUlI6ICAgT1VUX1ZFUlRFWChkc3RYLCBkc3RZKTsKLUJVSUxEU1RERVJSOiAgIF5+fn5+fn5+fn4KLQotVGhlIGJ1ZyBoZXJlIGFwcGVhcnMgdG8gYmUgdGhhdCBlbWl0X3ZlcnRleCgpIGlzIGRlY2xhcmVkICdzc2UyJyBidXQKLXZlcnRleF9lbWl0XzJzIGlzIG1lcmVseSBhbHdheXNfaW5saW5lLiBnY2M4IGRlY2lkZXMgdGhhdCBzaW5jZSB5b3Ugc2FpZAotYWx3YXlzX2lubGluZSB5b3UgbmVlZCB0byBoYXZlIGV4cGxpY2l0bHkgY2xvbmVkIGl0IGZvciBldmVyeQotcGVybXV0YXRpb24gb2YgdGFyZ2V0cy4gTWVyZWx5IHNheWluZyBpbmxpbmUgc2VlbXMgdG8gZG8gdGhlIGpvYiBvZgotY2xvbmluZyB2ZXJ0ZXhfZW1pdF8ycyBhcyBtdWNoIGFzIG5lY2Vzc2FyeS4KLQotU28gdG8gcmVpdGVyYXRlOiBpZiB5b3Ugc2F5IGFsd2F5cy1pbmxpbmUsIGl0IHdvbid0LCBidXQgaWYgeW91IGp1c3Qgc2F5Ci1tYXliZSBpbmxpbmUsIGl0IHdpbGwuIFRoYW5rcyBnY2MsIHRoYXQncyBoZWxwZnVsLgotCi0tIGFqYXgKLQotUGF0Y2ggdGFrZW4gZnJvbSBGZWRvcmEuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLQotLS0tCi0gc3JjL3NuYS9jb21waWxlci5oIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL3NuYS9jb21waWxlci5oIGIvc3JjL3NuYS9jb21waWxlci5oCi1pbmRleCAzYzE3NmExNi4uYmM0NDdjN2EgMTAwNjQ0Ci0tLS0gYS9zcmMvc25hL2NvbXBpbGVyLmgKLSsrKyBiL3NyYy9zbmEvY29tcGlsZXIuaAotQEAgLTMyLDcgKzMyLDcgQEAKLSAjZGVmaW5lIGxpa2VseShleHByKSAoX19idWlsdGluX2V4cGVjdCAoISEoZXhwciksIDEpKQotICNkZWZpbmUgdW5saWtlbHkoZXhwcikgKF9fYnVpbHRpbl9leHBlY3QgKCEhKGV4cHIpLCAwKSkKLSAjZGVmaW5lIG5vaW5saW5lIF9fYXR0cmlidXRlX18oKG5vaW5saW5lKSkKLS0jZGVmaW5lIGZvcmNlX2lubGluZSBpbmxpbmUgX19hdHRyaWJ1dGVfXygoYWx3YXlzX2lubGluZSkpCi0rI2RlZmluZSBmb3JjZV9pbmxpbmUgaW5saW5lCi0gI2RlZmluZSBmYXN0Y2FsbCBfX2F0dHJpYnV0ZV9fKChyZWdwYXJtKDMpKSkKLSAjZGVmaW5lIG11c3RfY2hlY2sgX19hdHRyaWJ1dGVfXygod2Fybl91bnVzZWRfcmVzdWx0KSkKLSAjZGVmaW5lIGNvbnN0YW50IF9fYXR0cmlidXRlX18oKGNvbnN0KSkKLS0tIAotMi4xNi4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hmODYtdmlkZW8taW50ZWxfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF9naXQuYmIKaW5kZXggYmY5MDA5Yi4uN2FiMjIzNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveGY4Ni12aWRlby1pbnRlbF9naXQuYmIKQEAgLTksMTQgKzksMTMgQEAKIAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ODczMGFkNThkMTFjN2JiYWQ5YTcwNjZkNjlmNzgwOGUiCiAKLVNSQ1JFViA9ICIzM2VlMGMzYjIxZWEyNzllMDhkMDg2M2ZjYjJlODc0ZjA5NzRiMDBlIgorU1JDUkVWID0gImY2NmQzOTU0NGJiODMzOTEzMGM5NmQyODJhODBmODdjYTE2MDZjYWYiCiBQViA9ICIyLjk5LjkxNytnaXQke1NSQ1BWfSIKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vYW5vbmdpdC5mcmVlZGVza3RvcC5vcmcveG9yZy9kcml2ZXIveGY4Ni12aWRlby1pbnRlbCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSV9hcHBlbmRfcWVtdXg4NiA9ICJmaWxlOi8vMDFfRml4LWJ1aWxkLW9uLWk2ODYucGF0Y2giCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVN5bmMtaTkxNV9wY2lpZHMtdXB0by04NzE3YzZiNzQxNGYucGF0Y2ggXAorIgogCiBVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWNvbW1vbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWRyaXZlci94b3JnLWRyaXZlci1jb21tb24uaW5jCmluZGV4IDU0ZjA0YjEuLmUzMGYwNDQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctZHJpdmVyL3hvcmctZHJpdmVyLWNvbW1vbi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1kcml2ZXIveG9yZy1kcml2ZXItY29tbW9uLmluYwpAQCAtMTMsNyArMTMsOSBAQAogCiBGSUxFU18ke1BOfSArPSAiICR7bGliZGlyfS94b3JnL21vZHVsZXMvZHJpdmVycy8qLnNvIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKK1hPUkdCVUlMRENMQVNTID8/PSAiYXV0b3Rvb2xzIgoraW5oZXJpdCAke1hPUkdCVUlMRENMQVNTfSBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKKwogIyBkZXBlbmRzIG9uIHZpcnR1YWwveHNlcnZlcgogUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gIngxMSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvZmlsZXMvbGlieDExLXdoaXRlc3BhY2UucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9maWxlcy9saWJ4MTEtd2hpdGVzcGFjZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zZjk3MTQzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvZmlsZXMvbGlieDExLXdoaXRlc3BhY2UucGF0Y2gKQEAgLTAsMCArMSw1NiBAQAorVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy94b3JnL2xpYi9saWJ4MTEvbWVyZ2VfcmVxdWVzdHMvMzNdCitTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorCitGcm9tIGI0MTQ2OWM1ZjA4YjFmMzM2NTY2N2ZmM2M0MzBiMTA0YzliOGUyNWYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgorRGF0ZTogV2VkLCAyMiBKYW4gMjAyMCAxNzoxMToyMyArMDAwMAorU3ViamVjdDogW1BBVENIIGxpYlgxMV0gY3BwcnVsZXMuaW46IHNxdWFzaCB3aGl0ZXNwYWNlIGluIGdlbmVyYXRlZCBmaWxlcworCitDUFAgaXMgdXNlZCB0byBnZW5lcmF0ZSBmaWxlcywgYnV0IGFzIGNwcCByZWFkcyBmaWxlcyBmcm9tIHRoZSBidWlsZCBob3N0IHRoZQorb3V0cHV0IGhhcyBhIG51bWJlciBvZiBibGFuayBsaW5lcyBhdCB0aGUgYmVnaW5uaW5nIHdoaWNoIHZhcmllcyBkZXBlbmRpbmcgb24KK3doYXQgR0NDIGFuZCBmcmllbmRzIGlzIHVzZWQuCisKK1BhdGhhbG9naWNhbCBleGFtcGxlOgorCisgJCBjcHAgLXVuZGVmIC10cmFkaXRpb25hbCAvZGV2L251bGwKKyAjIDEgIi9kZXYvbnVsbCIKKyAjIDEgIjxidWlsdC1pbj4iCisgIyAxICI8Y29tbWFuZC1saW5lPiIKKyAjIDMxICI8Y29tbWFuZC1saW5lPiIKKyAjIDEgIi91c3IvaW5jbHVkZS9zdGRjLXByZWRlZi5oIiAxIDMgNAorCisgIyAxNyAiL3Vzci9pbmNsdWRlL3N0ZGMtcHJlZGVmLmgiIDMgNAorCisgWyA0MCBibGFuayBsaW5lIF0KKworICMgMzIgIjxjb21tYW5kLWxpbmU+IiAyCisgIyAxICIvZGV2L251bGwiCisKK1NvIGRlcGVuZGluZyBvbiB0aGUgY29udGVudCBvZiBzdGRjLXByZWRlZi5oIGFuZCB3aGF0IG90aGVyIGhlYWRlcnMgQ1BQIHdpbGwKK2xvYWQsIHRoZSBhbW91bnQgb2Ygd2hpdGVzcGFjZSBpbiB0aGUgZ2VuZXJhdGVzIGZpbGVzIHZhcmllcy4gVGhpcyBjYW4gcmVzdWx0IGluCitkaWZmZXJlbmNlcyBpbiByZXByb2R1Y2libGUgZW52aXJvbm1lbnRzLCBhbmQgZmlsZSBjb25mbGljdHMgaW4gbXVsdGlsaWIKK2Vudmlyb25tZW50cy4KKworQXMgd2hpdGVzcGFjZSBpcyBpcnJlbGV2YW50IHRvIHRoZXNlIG1hY2hpbmUtcmVhZGFibGUgZmlsZXMsIGV4dGVuZCB0aGUgc2VkIHRvCitqdXN0IGRlbGV0ZSBibGFuayBsaW5lcy4KKy0tLQorIGNwcHJ1bGVzLmluIHwgMyArKy0KKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jcHBydWxlcy5pbiBiL2NwcHJ1bGVzLmluCitpbmRleCAwM2Q2NzAxZS4uY2U2YjNjOTggMTAwNjQ0CistLS0gYS9jcHBydWxlcy5pbgorKysrIGIvY3BwcnVsZXMuaW4KK0BAIC0yMyw3ICsyMyw4IEBAIENQUF9TRURfTUFHSUMgPSAkKFNFRCkgLWUgJy9eXCMgICpbMC05XVswLTldKiAgKi4qJCQvZCcgXAorICAgICAgICAgICAgICAgICAgICAgICAgLWUgJy9eWwkgXSpYQ09NTVteYS16QS1aMC05X10vcy9YQ09NTS9cIy8nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIC1lICcvXlsJIF0qWEhBU0gvcy9YSEFTSC9cIy8nIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIC1lICdzLFgxMV9MT0NBTEVEQVRBRElSLCQoWDExX0xPQ0FMRURBVEFESVIpLGcnIFwKKy0gICAgICAgICAgICAgICAgICAgICAgIC1lICcvXEBcQCQkL3MvXEBcQCQkL1xcLycKKysgICAgICAgICAgICAgICAgICAgICAgIC1lICcvXEBcQCQkL3MvXEBcQCQkL1xcLycgXAorKyAgICAgICAgICAgICAgICAgICAgICAgLWUgJy9eJCQvZCcKKyAKKyAucHJlOgorIAlAJChNS0RJUl9QKSAkKEBEKQorLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLWNvbXBvc2UtZGF0YV8xLjYuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMS1jb21wb3NlLWRhdGFfMS42LjguYmIKaW5kZXggY2FiYjg0ZS4uM2Q5N2FkNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExLWNvbXBvc2UtZGF0YV8xLjYuOC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTEtY29tcG9zZS1kYXRhXzEuNi44LmJiCkBAIC0xNCw3ICsxNCw4IEBACiBTUkNfVVJJW21kNXN1bV0gPSAiYzVmYTVhODZhMjBlMzU5MWJlZDZjMDQ2NDk4ZDRiOGYiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjI4OWE4NDVjMTg5ZTI1MWUwZTg4NGNjMGY5MjY5YmJlOTdjMjM4ZGYzNzQxZTg1NGVjNGMxN2MyMWU0NzNkNSIKIAotU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRHJvcC14MTEtZGVwZW5kZW5jaWVzLnBhdGNoIgorU1JDX1VSSSArPSAiZmlsZTovLzAwMDEtRHJvcC14MTEtZGVwZW5kZW5jaWVzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9saWJ4MTEtd2hpdGVzcGFjZS5wYXRjaCIKIAogWE9SR19QTiA9ICJsaWJYMTEiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMV8xLjYuOS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYngxMV8xLjYuOS5iYgppbmRleCA4YzJhNTdjLi5mZjYwYTQyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4MTFfMS42LjkuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieDExXzEuNi45LmJiCkBAIC0xMSw3ICsxMSw4IEBACiBQRSA9ICIxIgogCiBTUkNfVVJJICs9ICJmaWxlOi8vRml4LWhhbmdpbmctaXNzdWUtaW4tX1hSZXBseS5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV90ZXN0cy5wYXRjaCIKKyAgICAgICAgICAgIGZpbGU6Ly9kaXNhYmxlX3Rlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly9saWJ4MTEtd2hpdGVzcGFjZS5wYXRjaCIKIAogU1JDX1VSSVttZDVzdW1dID0gIjU1YWRiZmI2ZDQzNzBlY2FjNWU3MDU5OGM0ZTdlZWQyIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljYzdlOGQwMDBkNjE5M2ZhNWFmNTgwZDUwZDY4OTM4MGI4Mjg3MDUyMjcwZjViYjI2YTVmYjZiNThiMmJlZDEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4a2Jjb21tb25fMC4xMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuMTAuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xNmQ5YzM2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuMTAuMC5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIkdlbmVyaWMgWEtCIGtleW1hcCBsaWJyYXJ5IgorREVTQ1JJUFRJT04gPSAibGlieGtiY29tbW9uIGlzIGEga2V5bWFwIGNvbXBpbGVyIGFuZCBzdXBwb3J0IGxpYnJhcnkgd2hpY2ggXAorcHJvY2Vzc2VzIGEgcmVkdWNlZCBzdWJzZXQgb2Yga2V5bWFwcyBhcyBkZWZpbmVkIGJ5IHRoZSBYS0Igc3BlY2lmaWNhdGlvbi4iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LnhrYmNvbW1vbi5vcmciCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1lNTI1ZWQ5ODA5ZTFmOGEwN2NmNGJjZThiMDllOGI4NyIKK0xJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlIgorCitERVBFTkRTID0gInV0aWwtbWFjcm9zIGZsZXgtbmF0aXZlIGJpc29uLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8veGtiY29tbW9uLm9yZy9kb3dubG9hZC8ke0JQTn0tJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiMmQ5YWQzYTQ2YjMxNzEzOGI1ZTcyYTkxY2YxMDU0NTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTdjMzYzMGNkYzM4ZmI0NzM0Y2Q1N2ZhMzQ5ZTkyMjQ0ZjVhZTM4NjI4MTNlNTMzY2VkYmQ4NjcyMWEwYjZmMiIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly94a2Jjb21tb24ub3JnLyIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcKKworRVhUUkFfT0VNRVNPTiA9ICItRGVuYWJsZS1kb2NzPWZhbHNlIgorCitQQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgd2F5bGFuZCcsIGQpfSIKK1BBQ0tBR0VDT05GSUdbeDExXSA9ICItRGVuYWJsZS14MTE9dHJ1ZSwtRGVuYWJsZS14MTE9ZmFsc2UsbGlieGNiIHhrZXlib2FyZC1jb25maWcsIgorUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItRGVuYWJsZS13YXlsYW5kPXRydWUsLURlbmFibGUtd2F5bGFuZD1mYWxzZSx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzLCIKKworIyBGaXggYSBmb2xsb3dpbmcgcnVudGltZSBlcnJvcjoKKyMgeGtiY29tbW9uOiBFUlJPUjogY291bGRuJ3QgZmluZCBhIENvbXBvc2UgZmlsZSBmb3IgbG9jYWxlICJDIgorUkRFUEVORFNfJHtQTn0gPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnbGlieDExLWxvY2FsZScsICdsaWJ4MTEtY29tcG9zZS1kYXRhJywgZCl9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuOC40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieGtiY29tbW9uXzAuOC40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNjA4ZmQ1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhrYmNvbW1vbl8wLjguNC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLVNVTU1BUlkgPSAiR2VuZXJpYyBYS0Iga2V5bWFwIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJsaWJ4a2Jjb21tb24gaXMgYSBrZXltYXAgY29tcGlsZXIgYW5kIHN1cHBvcnQgbGlicmFyeSB3aGljaCBcCi1wcm9jZXNzZXMgYSByZWR1Y2VkIHN1YnNldCBvZiBrZXltYXBzIGFzIGRlZmluZWQgYnkgdGhlIFhLQiBzcGVjaWZpY2F0aW9uLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cueGtiY29tbW9uLm9yZyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU1MjVlZDk4MDllMWY4YTA3Y2Y0YmNlOGIwOWU4Yjg3IgotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCi0KLURFUEVORFMgPSAidXRpbC1tYWNyb3MgZmxleC1uYXRpdmUgYmlzb24tbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly94a2Jjb21tb24ub3JnL2Rvd25sb2FkLyR7QlBOfS0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzYzQ0MDkwNThkZmQyMDNmNjQxYTU2MzM1OGUwMTg3ZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MGRkY2ZmOTMyYjdmZDM1Mjc1MmQ1MWE1YzRmMDRmM2QwNDAzMjMwYTU4NGRmOWEyZTBkNWVkODdjNDg2YzhiIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3hrYmNvbW1vbi5vcmcvIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kb2NzIgotCi1QQUNLQUdFQ09ORklHID89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCBkKX0iCi1QQUNLQUdFQ09ORklHW3gxMV0gPSAiLS1lbmFibGUteDExLC0tZGlzYWJsZS14MTEsbGlieGNiIHhrZXlib2FyZC1jb25maWcsIgotCi0jIEZpeCBhIGZvbGxvd2luZyBydW50aW1lIGVycm9yOgotIyB4a2Jjb21tb246IEVSUk9SOiBjb3VsZG4ndCBmaW5kIGEgQ29tcG9zZSBmaWxlIGZvciBsb2NhbGUgIkMiCi1SREVQRU5EU18ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICdsaWJ4MTEtbG9jYWxlJywgJ2xpYngxMS1jb21wb3NlLWRhdGEnLCBkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cG1fMy41LjEyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHBtXzMuNS4xMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjRkODI5Yi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4cG1fMy41LjEyLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotcmVxdWlyZSB4b3JnLWxpYi1jb21tb24uaW5jCi0KLSMgbGlieHBtIHJlcXVpcmVzIHhnZXR0ZXh0IHRvIGJ1aWxkCi1pbmhlcml0IGdldHRleHQKLQotU1VNTUFSWSA9ICJYcG06IFggUGl4bWFwIGV4dGVuc2lvbiBsaWJyYXJ5IgotCi1ERVNDUklQVElPTiA9ICJsaWJYcG0gcHJvdmlkZXMgc3VwcG9ydCBhbmQgY29tbW9uIG9wZXJhdGlvbiBmb3IgdGhlIFhQTSBcCi1waXhtYXAgZm9ybWF0LCB3aGljaCBpcyBjb21tb25seSB1c2VkIGluIGxlZ2FjeSBYIGFwcGxpY2F0aW9ucy4gIFhQTSBpcyBcCi1hbiBleHRlbnNpb24gb2YgdGhlIG1vbm9jaHJvbWUgWEJNIGJpdG1hcCBzcGVjaWZpY2llZCBpbiB0aGUgWCBcCi1wcm90b2NvbC4iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTFmNDI3MGIwMTJlY2Q0YWIxYTE2NGY1ZjRlZDZjZjciCi1ERVBFTkRTICs9ICJsaWJ4ZXh0IGxpYnNtIGxpYnh0IGdldHRleHQtbmF0aXZlIgotUEUgPSAiMSIKLQotWE9SR19QTiA9ICJsaWJYcG0iCi0KLVBBQ0tBR0VTID0rICJzeHBtIGN4cG0iCi1GSUxFU19jeHBtID0gIiR7YmluZGlyfS9jeHBtIgotRklMRVNfc3hwbSA9ICIke2JpbmRpcn0vc3hwbSIKLQotU1JDX1VSSVttZDVzdW1dID0gIjIwZjQ2Mjc2NzJlZGIyYmQwNmE3NDlmMTFhYTk3MzAyIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImZkNmE2ZGUzZGE0OGRlOGQxYmI3MzhhYjZiZTRhZDY3ZjdjYjA5ODZjMzliZDNmN2Q1MWRkMjRmNzg1NGJkZWMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHBtXzMuNS4xMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhwbV8zLjUuMTMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmRhOGUzMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhwbV8zLjUuMTMuYmIKQEAgLTAsMCArMSwyNyBAQAorcmVxdWlyZSB4b3JnLWxpYi1jb21tb24uaW5jCisKKyMgbGlieHBtIHJlcXVpcmVzIHhnZXR0ZXh0IHRvIGJ1aWxkCitpbmhlcml0IGdldHRleHQKKworU1VNTUFSWSA9ICJYcG06IFggUGl4bWFwIGV4dGVuc2lvbiBsaWJyYXJ5IgorCitERVNDUklQVElPTiA9ICJsaWJYcG0gcHJvdmlkZXMgc3VwcG9ydCBhbmQgY29tbW9uIG9wZXJhdGlvbiBmb3IgdGhlIFhQTSBcCitwaXhtYXAgZm9ybWF0LCB3aGljaCBpcyBjb21tb25seSB1c2VkIGluIGxlZ2FjeSBYIGFwcGxpY2F0aW9ucy4gIFhQTSBpcyBcCithbiBleHRlbnNpb24gb2YgdGhlIG1vbm9jaHJvbWUgWEJNIGJpdG1hcCBzcGVjaWZpY2llZCBpbiB0aGUgWCBcCitwcm90b2NvbC4iCisKK0xJQ0VOU0UgPSAiTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTFmNDI3MGIwMTJlY2Q0YWIxYTE2NGY1ZjRlZDZjZjciCitERVBFTkRTICs9ICJsaWJ4ZXh0IGxpYnNtIGxpYnh0IGdldHRleHQtbmF0aXZlIgorUEUgPSAiMSIKKworWE9SR19QTiA9ICJsaWJYcG0iCisKK1BBQ0tBR0VTID0rICJzeHBtIGN4cG0iCitGSUxFU19jeHBtID0gIiR7YmluZGlyfS9jeHBtIgorRklMRVNfc3hwbSA9ICIke2JpbmRpcn0vc3hwbSIKKworU1JDX1VSSVttZDVzdW1dID0gIjZmMGVjZjhkMTAzZDUyOGNmYzgwM2FhNDc1MTM3YWZhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjljZDFkYTU3NTg4YjZjYjcxNDUwZWZmMjI3M2VmNmI2NTc1MzdhOWFjNGQwMmQwMDE0MjI4ODQ1YjkzNWFjMjUiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlXzEuMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL2xpYnhzaG1mZW5jZV8xLjMuYmIKaW5kZXggODVhNDhlNC4uY2M0NTY5NiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvbGlieHNobWZlbmNlXzEuMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9saWJ4c2htZmVuY2VfMS4zLmJiCkBAIC0xMSw2ICsxMSw4IEBACiAKIERFUEVORFMgKz0gInZpcnR1YWwvbGlieDExIgogCitFWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1zaGFyZWQtbWVtb3J5LWRpcj0vZGV2L3NobSIKKwogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiNDJkZGE4MDE2OTQzZGMxMmFmZjJjMDNhMDM2ZTA5MzciCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9waXhtYW4vMDAwMS10ZXN0LXV0aWxzLUNoZWNrLWZvci1GRV9JTlZBTElELWRlZmluaXRpb24tYmVmb3JlLXVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuLzAwMDEtdGVzdC11dGlscy1DaGVjay1mb3ItRkVfSU5WQUxJRC1kZWZpbml0aW9uLWJlZm9yZS11cy5wYXRjaAppbmRleCA3ODJjMWRiLi4yM2NiZjUzIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9waXhtYW4vMDAwMS10ZXN0LXV0aWxzLUNoZWNrLWZvci1GRV9JTlZBTElELWRlZmluaXRpb24tYmVmb3JlLXVzLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3BpeG1hbi8wMDAxLXRlc3QtdXRpbHMtQ2hlY2stZm9yLUZFX0lOVkFMSUQtZGVmaW5pdGlvbi1iZWZvcmUtdXMucGF0Y2gKQEAgLTcsNyArNyw3IEBACiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiAtLS0KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL3BpeG1hbi9waXhtYW4vbWVyZ2VfcmVxdWVzdHMvMjRdCiAKICB0ZXN0L3V0aWxzLmMgfCAyICsrCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuXzAuMzguNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3BpeG1hbl8wLjM4LjQuYmIKaW5kZXggODJjMmU3My4uMjJlMTliYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIvcGl4bWFuXzAuMzguNC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLWxpYi9waXhtYW5fMC4zOC40LmJiCkBAIC0xLDQwICsxLDM2IEBACiBTVU1NQVJZID0gIlBpeG1hbjogUGl4ZWwgTWFuaXB1bGF0aW9uIGxpYnJhcnkiCi0KIERFU0NSSVBUSU9OID0gIlBpeG1hbiBwcm92aWRlcyBhIGxpYnJhcnkgZm9yIG1hbmlwdWxhdGluZyBwaXhlbCByZWdpb25zIFwKIC0tIGEgc2V0IG9mIFktWCBiYW5kZWQgcmVjdGFuZ2xlcywgaW1hZ2UgY29tcG9zaXRpbmcgdXNpbmcgdGhlIFwKIFBvcnRlci9EdWZmIG1vZGVsIGFuZCBpbXBsaWNpdCBtYXNrIGdlbmVyYXRpb24gZm9yIGdlb21ldHJpYyBwcmltaXRpdmVzIFwKIGluY2x1ZGluZyB0cmFwZXpvaWRzLCB0cmlhbmdsZXMsIGFuZCByZWN0YW5nbGVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cucGl4bWFuLm9yZyIKK1NFQ1RJT04gPSAieDExL2xpYnMiCitERVBFTkRTID0gInpsaWIiCiAKLXJlcXVpcmUgeG9yZy1saWItY29tbW9uLmluYworU1JDX1VSSSA9ICJodHRwczovL3d3dy5jYWlyb2dyYXBoaWNzLm9yZy9yZWxlYXNlcy8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BUk0tcWVtdS1yZWxhdGVkLXdvcmthcm91bmRzLWluLWNwdS1mZWF0dXJlcy1kZXRlY3RpLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdC11dGlscy1DaGVjay1mb3ItRkVfSU5WQUxJRC1kZWZpbml0aW9uLWJlZm9yZS11cy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyNjdhN2FmMjkwZjkzZjY0M2ExYmM3NDQ5MGQ5ZmRkMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJkYTY2ZDZmZDZlNDBhZWU3MGY3YmQwMmU0ZjhmNzZmYzNmMDA2ZWM4NzlkMzQ2YmFlNmE3MjMwMjVjZmJkZGU3IgogCiAjIHNlZSBodHRwOi8vY2Fpcm9ncmFwaGljcy5vcmcvcmVsZWFzZXMvIC0gb25seSBldmVuIG1pbm9yIHZlcnNpb25zIGFyZSBzdGFibGUKIFVQU1RSRUFNX0NIRUNLX1JFR0VYID0gInBpeG1hbi0oP1A8cHZlcj5cZCtcLihcZCpbMDI0NjhdKSsoXC5cZCspKykiCiAKK1BFID0gIjEiCisKIExJQ0VOU0UgPSAiTUlUICYgTUlULXN0eWxlICYgUEQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0xNDA5NmM3NjlhZTBjYmI1ZmNiOTRlYzQ2OGJlMTFiMyBcCiAgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9waXhtYW4vcGl4bWFuLW1hdHJpeC5jO2VuZGxpbmU9MjE7bWQ1PTRhMDE4ZGZmM2U0ZTI1MzAyNzI0Yzg4ZmY5NWMyNDU2IFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3BpeG1hbi9waXhtYW4tYXJtLW5lb24tYXNtLmg7ZW5kbGluZT0yNDttZDU9OWE5Y2MxZTUxYWJiZjFkYTU4ZjRkOTUyOGVjOWQ0OWIgXAogICAgICAgICAgICAgICAgICAgICIKLURFUEVORFMgKz0gInpsaWIgbGlicG5nIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZworCisjIFRoZXNlIGFyZSBmb3IgdGhlIHRlc3RzIGFuZCBkZW1vcywgd2hpY2ggd2UgZG9uJ3QgaW5zdGFsbAorRVhUUkFfT0VNRVNPTiA9ICItRGd0az1kaXNhYmxlZCAtRGxpYnBuZz1kaXNhYmxlZCIKKyMgbGQ6IHBpeG1hbi9saWJwaXhtYW4tbW14LmEocGl4bWFuLW1teC5jLm8pOgorIyBsaW5raW5nIG1pcHM6bG9vbmdzb25fMmYgbW9kdWxlIHdpdGggcHJldmlvdXMgbWlwczppc2E2NCBtb2R1bGVzIAorRVhUUkFfT0VNRVNPTiArPSAiLURsb29uZ3Nvbi1tbWk9ZGlzYWJsZWQiCisKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotUEUgPSAiMSIKLQotSVdNTVhUID0gIi0tZGlzYWJsZS1hcm0taXdtbXh0IgotTE9PTkdTT05fTU1JID0gIi0tZGlzYWJsZS1sb29uZ3Nvbi1tbWkiCi0jIElmIHRhcmdldCBzdXBwb3J0cyBuZW9uIHRoZW4gZGlzYWJsZSB0aGUgJ3NpbWQnIChpZSBWRlB2MikgZmFsbGJhY2ssIG90aGVyd2lzZSBkaXNhYmxlIG5lb24uCi1ORU9OID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgIm5lb24iLCAiLS1kaXNhYmxlLWFybS1zaW1kIiwgIi0tZGlzYWJsZS1hcm0tbmVvbiIgLGQpfSIKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1ndGsgJHtJV01NWFR9ICR7TE9PTkdTT05fTU1JfSAke05FT059IgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZSA9ICItLWRpc2FibGUtZ3RrIgotRVhUUkFfT0VDT05GX2NsYXNzLW5hdGl2ZXNkayA9ICItLWRpc2FibGUtZ3RrIgotCi1TUkNfVVJJICs9ICJcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1BUk0tcWVtdS1yZWxhdGVkLXdvcmthcm91bmRzLWluLWNwdS1mZWF0dXJlcy1kZXRlY3RpLnBhdGNoIFwKLQkgICAgZmlsZTovLzAwMDEtdGVzdC11dGlscy1DaGVjay1mb3ItRkVfSU5WQUxJRC1kZWZpbml0aW9uLWJlZm9yZS11cy5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxNmEzNTBhOGE0MDExNmRkZjY3NjMyYTFkMjYyMzcxMSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI4NGFiYjdmYTI1NDFhZjI0ZDljM2IzNGJmNzVkNmFjNjBjYzk0YWM0NDEwMDYxYmJiMjk1YjY2YTI5MjIxNTUwIgotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjI3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMjE1NmFkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLVNVTU1BUlkgPSAiS2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBXaW5kb3ciCi0KLURFU0NSSVBUSU9OID0gIlRoZSBub24tYXJjaCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGFiYXNlIGZvciBYIFwKLVdpbmRvdy4gIFRoZSBnb2FsIGlzIHRvIHByb3ZpZGUgdGhlIGNvbnNpc3RlbnQsIHdlbGwtc3RydWN0dXJlZCwgXAotZnJlcXVlbnRseSByZWxlYXNlZCBvcGVuIHNvdXJjZSBvZiBYIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YSBmb3IgWCBcCi1XaW5kb3cgU3lzdGVtIGltcGxlbWVudGF0aW9ucy4gIFRoZSBwcm9qZWN0IGlzIHRhcmdldGVkIHRvIFhLQi1iYXNlZCBcCi1zeXN0ZW1zLiIKLQotSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL1hLZXlib2FyZENvbmZpZyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9eGtleWJvYXJkLWNvbmZpZyIKLQotTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wZTdmMjFjYTdkYjk3NWM2MzQ2N2QyZTc2MjRhMTJmOSIKLQotU1JDX1VSSSA9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL2RhdGEveGtleWJvYXJkLWNvbmZpZy8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICIzMTY3NTNlMzVkMzkwNmQwNDJjNzQyMzA2MTJlYWI5ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2OTBkYWVjOGZlYTYzNTI2YzA3NjIwYzkwZTZmM2YxMGFhZTM0ZTk0YjZkYjZlMzA5MDYxNzM0ODA3MjE5MDFmIgotCi1TRUNUSU9OID0gIngxMS9saWJzIgotREVQRU5EUyA9ICJ1dGlsLW1hY3JvcyBsaWJ4c2x0LW5hdGl2ZSIKLQotRVhUUkFfT0VDT05GID0gIi0td2l0aC14a2ItcnVsZXMtc3ltbGluaz14b3JnIC0tZGlzYWJsZS1ydW50aW1lLWRlcHMiCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L1gxMS94a2IiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L1gxMS94a2IvY29tcGlsZWQKLSAgICBjZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL3J1bGVzICYmIGxuIC1zZiBiYXNlIHhvcmcKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctbGliL3hrZXlib2FyZC1jb25maWdfMi4yOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTNkNjk0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1saWIveGtleWJvYXJkLWNvbmZpZ18yLjI4LmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiS2V5Ym9hcmQgY29uZmlndXJhdGlvbiBkYXRhYmFzZSBmb3IgWCBXaW5kb3ciCisKK0RFU0NSSVBUSU9OID0gIlRoZSBub24tYXJjaCBrZXlib2FyZCBjb25maWd1cmF0aW9uIGRhdGFiYXNlIGZvciBYIFwKK1dpbmRvdy4gIFRoZSBnb2FsIGlzIHRvIHByb3ZpZGUgdGhlIGNvbnNpc3RlbnQsIHdlbGwtc3RydWN0dXJlZCwgXAorZnJlcXVlbnRseSByZWxlYXNlZCBvcGVuIHNvdXJjZSBvZiBYIGtleWJvYXJkIGNvbmZpZ3VyYXRpb24gZGF0YSBmb3IgWCBcCitXaW5kb3cgU3lzdGVtIGltcGxlbWVudGF0aW9ucy4gIFRoZSBwcm9qZWN0IGlzIHRhcmdldGVkIHRvIFhLQi1iYXNlZCBcCitzeXN0ZW1zLiIKKworSE9NRVBBR0UgPSAiaHR0cDovL2ZyZWVkZXNrdG9wLm9yZy93aWtpL1NvZnR3YXJlL1hLZXlib2FyZENvbmZpZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9eGtleWJvYXJkLWNvbmZpZyIKKworTElDRU5TRSA9ICJNSVQgJiBNSVQtc3R5bGUiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0wZTdmMjFjYTdkYjk3NWM2MzQ2N2QyZTc2MjRhMTJmOSIKKworU1JDX1VSSSA9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL2RhdGEveGtleWJvYXJkLWNvbmZpZy8ke0JQTn0tJHtQVn0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1YTk2OGFiNzc4NDZmZjg1YTA0MjQyNDEwYjJhNjFkZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2OWFkYjI1YjBmYzY0ZTQwNzVmOGVjMGVhYjhkODY5ODkyNDE5ZjQ3NGY5MWZiNjlkYjE3MTNkZTIwNjJiZGNlIgorCitTRUNUSU9OID0gIngxMS9saWJzIgorREVQRU5EUyA9ICJ1dGlsLW1hY3JvcyBsaWJ4c2x0LW5hdGl2ZSIKKworRVhUUkFfT0VDT05GID0gIi0td2l0aC14a2ItcnVsZXMtc3ltbGluaz14b3JnIC0tZGlzYWJsZS1ydW50aW1lLWRlcHMiCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L1gxMS94a2IiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0CisKK2RvX2luc3RhbGxfYXBwZW5kICgpIHsKKyAgICBpbnN0YWxsIC1kICR7RH0ke2RhdGFkaXJ9L1gxMS94a2IvY29tcGlsZWQKKyAgICBjZCAke0R9JHtkYXRhZGlyfS9YMTEveGtiL3J1bGVzICYmIGxuIC1zZiBiYXNlIHhvcmcKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZy1wcm90by1jb21tb24uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94b3JnLXByb3RvLWNvbW1vbi5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhNDE3YzkuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94b3JnLXByb3RvLWNvbW1vbi5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1TVU1NQVJZID0gIlggcHJvdG9jb2wgaGVhZGVyczogJHtYT1JHX1BOfSIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cueC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5mcmVlZGVza3RvcC5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PXhvcmciCi0KLVNFQ1RJT04gPSAieDExL2xpYnMiCi1MSUNFTlNFID0gIk1JVC1YIgotCi1YT1JHX1BOID0gIiR7QlBOfSIKLQotU1JDX1VSSSA9ICIke1hPUkdfTUlSUk9SfS9pbmRpdmlkdWFsL3Byb3RvLyR7WE9SR19QTn0tJHtQVn0udGFyLmJ6MiIKLQotUyA9ICIke1dPUktESVJ9LyR7WE9SR19QTn0tJHtQVn0iCi0KLURFUEVORFMgPSAidXRpbC1tYWNyb3MiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotRVhUUkFfT0VDT05GID0gIi0td2l0aG91dC1mb3AiCi0KLVVOS05PV05fQ09ORklHVVJFX1dISVRFTElTVCArPSAiLS13aXRob3V0LWZvcCAtLXdpdGhvdXQteG1sdG8gLS13aXRoLXhtbHRvIgotCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1t4bWx0b10gPSAiLS13aXRoLXhtbHRvLCAtLXdpdGhvdXQteG1sdG8sIHhtbHRvLW5hdGl2ZSBkb2Nib29rLXhtbC1kdGQ0LW5hdGl2ZSBkb2Nib29rLXhzbC1zdHlsZXNoZWV0cy1uYXRpdmUiCi0KLSMgJHtQTn0gaXMgZW1wdHkgc28gd2UgbmVlZCB0byB0d2VhayAtZGV2IGFuZCAtZGJnIHBhY2thZ2UgZGVwZW5kZW5jaWVzCi1SREVQRU5EU18ke1BOfS1kZXYgPSAiIgotUlJFQ09NTUVORFNfJHtQTn0tZGJnID0gIiR7UE59LWRldiAoPSAke0VYVEVORFBLR1Z9KSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZ3Byb3RvXzIwMTkuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZ3Byb3RvXzIwMTkuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFjYmU4OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXByb3RvL3hvcmdwcm90b18yMDE5LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxNCArMCwwIEBACi1yZXF1aXJlIHhvcmctcHJvdG8tY29tbW9uLmluYwotCi1TVU1NQVJZID0gIlggV2luZG93IFN5c3RlbSB1bmlmaWVkIHByb3RvY29sIGRlZmluaXRpb25zIgotCi1ERVNDUklQVElPTiA9ICJUaGlzIHBhY2thZ2UgcHJvdmlkZXMgdGhlIGhlYWRlcnMgYW5kIHNwZWNpZmljYXRpb24gZG9jdW1lbnRzIGRlZmluaW5nIFwKLXRoZSBjb3JlIHByb3RvY29sIGFuZCAobWFueSkgZXh0ZW5zaW9ucyBmb3IgdGhlIFggV2luZG93IFN5c3RlbSIKLQotTElDRU5TRSA9ICJNSVQtc3R5bGUiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLXgxMXByb3RvO21kNT1iOWUwNTExMDdkNTYyODk2NjczOWEwYjJlOWIzMjY3NiIKLQotU1JDX1VSSVttZDVzdW1dID0gImEwMmRjYWZmNDhiNDE0MWI5NDlhYzk5ZGZjMzQ0ZDg2IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ2ZWNkMDE1NmM1NjFkNDFlOGFhODdjZTc5MzQwOTEwY2RmMzgzNzNiNzU5ZTczN2ZjYmJhNWRmNTA4ZTdiOGUiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZ3Byb3RvXzIwMjAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmctcHJvdG8veG9yZ3Byb3RvXzIwMjAuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNzFiYzkwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy1wcm90by94b3JncHJvdG9fMjAyMC4xLmJiCkBAIC0wLDAgKzEsMjcgQEAKKworU1VNTUFSWSA9ICJYIFdpbmRvdyBTeXN0ZW0gdW5pZmllZCBwcm90b2NvbCBkZWZpbml0aW9ucyIKK0RFU0NSSVBUSU9OID0gIlRoaXMgcGFja2FnZSBwcm92aWRlcyB0aGUgaGVhZGVycyBhbmQgc3BlY2lmaWNhdGlvbiBkb2N1bWVudHMgZGVmaW5pbmcgXAordGhlIGNvcmUgcHJvdG9jb2wgYW5kIChtYW55KSBleHRlbnNpb25zIGZvciB0aGUgWCBXaW5kb3cgU3lzdGVtIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy54Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmZyZWVkZXNrdG9wLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9eG9yZyIKKworU0VDVElPTiA9ICJ4MTEvbGlicyIKK0xJQ0VOU0UgPSAiTUlULXN0eWxlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy14MTFwcm90bzttZDU9YjllMDUxMTA3ZDU2Mjg5NjY3MzlhMGIyZTliMzI2NzYiCisKK1NSQ19VUkkgPSAiJHtYT1JHX01JUlJPUn0vaW5kaXZpZHVhbC9wcm90by8ke0JQfS50YXIuYnoyIgorU1JDX1VSSVttZDVzdW1dID0gImMyOWY0ZmE3OGY1M2I1MmIzZWZkYzcxZWJkOTUwNmI2IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU0YTE1M2YxMzkwMzVhMzc2YzA3NTg0NWRkMDU4MDQ5MTc3MjEyZGE5NGQ3YTk3MDdjZjk0NjgzNjdiNjk5ZDIiCisKK2luaGVyaXQgbWVzb24KKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbbGVnYWN5XSA9ICItRGxlZ2FjeT10cnVlLC1EbGVnYWN5PWZhbHNlIgorCisjIERhdGFkaXIgb25seSB1c2VkIHRvIGluc3RhbGwgcGMgZmlsZXMsICRkYXRhZGlyL3BrZ2NvbmZpZworZGF0YWRpcj0iJHtsaWJkaXJ9IgorIyAke1BOfSBpcyBlbXB0eSBzbyB3ZSBuZWVkIHRvIHR3ZWFrIC1kZXYgYW5kIC1kYmcgcGFja2FnZSBkZXBlbmRlbmNpZXMKK1JERVBFTkRTXyR7UE59LWRldiA9ICIiCitSUkVDT01NRU5EU18ke1BOfS1kYmcgPSAiJHtQTn0tZGV2ICg9ICR7RVhURU5EUEtHVn0pIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9xZW11bWlwcy94b3JnLmNvbmYgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9xZW11bWlwcy94b3JnLmNvbmYKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkM2M2NGYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcWVtdW1pcHMveG9yZy5jb25mCisrKyAvZGV2L251bGwKQEAgLTEsMzkgKzAsMCBAQAotCi1TZWN0aW9uICJGaWxlcyIKLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiRGV2aWNlIgotICAgIElkZW50aWZpZXIgICAgIkdyYXBoaWNzIENvbnRyb2xsZXIiCi0gICAgRHJpdmVyICAgICAgICAiZmJkZXYiCi1FbmRTZWN0aW9uCi0KLVNlY3Rpb24gIk1vbml0b3IiCi0gICAgSWRlbnRpZmllciAgICAiR2VuZXJpYyBNb25pdG9yIgotICAgIE9wdGlvbiAgICAgICAgIkRQTVMiCi0gICAgIyAxMDI0eDYwMCA1OS44NSBIeiAoQ1ZUKSBoc3luYzogMzcuMzUga0h6OyBwY2xrOiA0OS4wMCBNSHoKLSAgICBNb2RlbGluZSAiMTAyNHg2MDBfNjAuMDAiICAgNDkuMDAgIDEwMjQgMTA3MiAxMTY4IDEzMTIgIDYwMCA2MDMgNjEzIDYyNCAtaHN5bmMgK3ZzeW5jCi0gICAgIyA2NDB4NDgwIEAgNjBIeiAoSW5kdXN0cnkgc3RhbmRhcmQpIGhzeW5jOiAzMS41a0h6Ci0gICAgTW9kZUxpbmUgIjY0MHg0ODAiICAgIDI1LjIgIDY0MCAgNjU2ICA3NTIgIDgwMCAgICA0ODAgIDQ5MCAgNDkyICA1MjUgLWhzeW5jIC12c3luYwotICAgICMgNjQweDQ4MCBAIDcySHogKFZFU0EpIGhzeW5jOiAzNy45a0h6Ci0gICAgTW9kZUxpbmUgIjY0MHg0ODAiICAgIDMxLjUgIDY0MCAgNjY0ICA3MDQgIDgzMiAgICA0ODAgIDQ4OSAgNDkxICA1MjAgLWhzeW5jIC12c3luYwotICAgICMgNjQweDQ4MCBAIDc1SHogKFZFU0EpIGhzeW5jOiAzNy41a0h6Ci0gICAgTW9kZUxpbmUgIjY0MHg0ODAiICAgIDMxLjUgIDY0MCAgNjU2ICA3MjAgIDg0MCAgICA0ODAgIDQ4MSAgNDg0ICA1MDAgLWhzeW5jIC12c3luYwotICAgICMgNjQweDQ4MCBAIDg1SHogKFZFU0EpIGhzeW5jOiA0My4za0h6Ci0gICAgTW9kZUxpbmUgIjY0MHg0ODAiICAgIDM2LjAgIDY0MCAgNjk2ICA3NTIgIDgzMiAgICA0ODAgIDQ4MSAgNDg0ICA1MDkgLWhzeW5jIC12c3luYwotRW5kU2VjdGlvbgotCi1TZWN0aW9uICJTY3JlZW4iCi0gICAgSWRlbnRpZmllciAgICAiRGVmYXVsdCBTY3JlZW4iCi0gICAgRGV2aWNlICAgICAgICAiR3JhcGhpY3MgQ29udHJvbGxlciIKLSAgICBNb25pdG9yICAgICAgICAiR2VuZXJpYyBNb25pdG9yIgotICAgIERlZmF1bHREZXB0aCAgMTYKLSAgICBTdWJTZWN0aW9uICJEaXNwbGF5IgotICAgICAgICBNb2RlcyAgICAgIjY0MHg0ODAiCi0gICAgRW5kU3ViU2VjdGlvbgotRW5kU2VjdGlvbgotCi1TZWN0aW9uICJTZXJ2ZXJMYXlvdXQiCi0gICAgSWRlbnRpZmllciAgICAiRGVmYXVsdCBMYXlvdXQiCi0gICAgU2NyZWVuICAgICAgICAiRGVmYXVsdCBTY3JlZW4iCi0gICAgT3B0aW9uICAgICAgICAgIkFsbG93RW1wdHlJbnB1dCIgIm5vIgotRW5kU2VjdGlvbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteGY4Ni1jb25maWcvcWVtdW1pcHM2NC94b3JnLmNvbmYgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9xZW11bWlwczY0L3hvcmcuY29uZgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNiOTRkYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14Zjg2LWNvbmZpZy9xZW11bWlwczY0L3hvcmcuY29uZgorKysgL2Rldi9udWxsCkBAIC0xLDM5ICswLDAgQEAKLQotU2VjdGlvbiAiRmlsZXMiCi1FbmRTZWN0aW9uCi0KLVNlY3Rpb24gIkRldmljZSIKLSAgICBJZGVudGlmaWVyICAgICJHcmFwaGljcyBDb250cm9sbGVyIgotICAgIERyaXZlciAgICAgICAgImZiZGV2IgotRW5kU2VjdGlvbgotCi1TZWN0aW9uICJNb25pdG9yIgotICAgIElkZW50aWZpZXIgICAgIkdlbmVyaWMgTW9uaXRvciIKLSAgICBPcHRpb24gICAgICAgICJEUE1TIgotICAgICMgMTAyNHg2MDAgNTkuODUgSHogKENWVCkgaHN5bmM6IDM3LjM1IGtIejsgcGNsazogNDkuMDAgTUh6Ci0gICAgTW9kZWxpbmUgIjEwMjR4NjAwXzYwLjAwIiAgIDQ5LjAwICAxMDI0IDEwNzIgMTE2OCAxMzEyICA2MDAgNjAzIDYxMyA2MjQgLWhzeW5jICt2c3luYwotICAgICMgNjQweDQ4MCBAIDYwSHogKEluZHVzdHJ5IHN0YW5kYXJkKSBoc3luYzogMzEuNWtIegotICAgIE1vZGVMaW5lICI2NDB4NDgwIiAgICAyNS4yICA2NDAgIDY1NiAgNzUyICA4MDAgICAgNDgwICA0OTAgIDQ5MiAgNTI1IC1oc3luYyAtdnN5bmMKLSAgICAjIDY0MHg0ODAgQCA3Mkh6IChWRVNBKSBoc3luYzogMzcuOWtIegotICAgIE1vZGVMaW5lICI2NDB4NDgwIiAgICAzMS41ICA2NDAgIDY2NCAgNzA0ICA4MzIgICAgNDgwICA0ODkgIDQ5MSAgNTIwIC1oc3luYyAtdnN5bmMKLSAgICAjIDY0MHg0ODAgQCA3NUh6IChWRVNBKSBoc3luYzogMzcuNWtIegotICAgIE1vZGVMaW5lICI2NDB4NDgwIiAgICAzMS41ICA2NDAgIDY1NiAgNzIwICA4NDAgICAgNDgwICA0ODEgIDQ4NCAgNTAwIC1oc3luYyAtdnN5bmMKLSAgICAjIDY0MHg0ODAgQCA4NUh6IChWRVNBKSBoc3luYzogNDMuM2tIegotICAgIE1vZGVMaW5lICI2NDB4NDgwIiAgICAzNi4wICA2NDAgIDY5NiAgNzUyICA4MzIgICAgNDgwICA0ODEgIDQ4NCAgNTA5IC1oc3luYyAtdnN5bmMKLUVuZFNlY3Rpb24KLQotU2VjdGlvbiAiU2NyZWVuIgotICAgIElkZW50aWZpZXIgICAgIkRlZmF1bHQgU2NyZWVuIgotICAgIERldmljZSAgICAgICAgIkdyYXBoaWNzIENvbnRyb2xsZXIiCi0gICAgTW9uaXRvciAgICAgICAgIkdlbmVyaWMgTW9uaXRvciIKLSAgICBEZWZhdWx0RGVwdGggICAgMTYKLSAgICBTdWJTZWN0aW9uICJEaXNwbGF5IgotICAgICAgICBNb2RlcyAgICAgIjY0MHg0ODAiCi0gICAgRW5kU3ViU2VjdGlvbgotRW5kU2VjdGlvbgotCi1TZWN0aW9uICJTZXJ2ZXJMYXlvdXQiCi0gICAgSWRlbnRpZmllciAgICAiRGVmYXVsdCBMYXlvdXQiCi0gICAgU2NyZWVuICAgICAgICAiRGVmYXVsdCBTY3JlZW4iCi0gICAgT3B0aW9uICAgICAgICAgIkFsbG93RW1wdHlJbnB1dCIgIm5vIgotRW5kU2VjdGlvbgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYwppbmRleCBhMGFlNjVjLi5iNGYwNzYwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLmluYwpAQCAtMTE3LDYgKzExNyw3IEBACiAgICAgICAgICAgICAgICAgIC0tc3lzY29uZmRpcj0vZXRjL1gxMSBcCiAgICAgICAgICAgICAgICAgIC0tbG9jYWxzdGF0ZWRpcj0vdmFyIFwKICAgICAgICAgICAgICAgICAgLS13aXRoLXhrYi1vdXRwdXQ9L3Zhci9saWIveGtiIFwKKyAgICAgICAgICAgICAgICAgLS13aXRoLW9zLW5hbWU9TGludXggXAogIgogCiBPUEVOR0xfUEtHQ09ORklHUyA9ICJkcmkgZ2x4IGdsYW1vciBkcmkzIHhzaG1mZW5jZSIKQEAgLTE1MSw2ICsxNTIsNyBAQAogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogCSMgSXRzIGFzc3VtZWQgYmFzZS1maWxlcyBjcmVhdGVzIHRoaXMgZm9yIHVzCiAJcm1kaXIgJHtEfSR7bG9jYWxzdGF0ZWRpcn0vbG9nLworICAgICAgICBzZWQgLWkgLWUgJ3MsJHtsaWJkaXJ9L3hvcmcvbW9kdWxlcywke3ByZWZpeH0vbGliKi94b3JnL21vZHVsZXMsJyAke0R9JHttYW5kaXJ9L21hbjUveG9yZy5jb25mLjUKIH0KIAogIyBBZGQgcnVudGltZSBwcm92aWRlcyBmb3IgdGhlIEFCSSB2ZXJzaW9ucyBvZiB0aGUgdmlkZW8gYW5kIGlucHV0IHN1YnN5c3RlbXMsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnLzAwMDEtY29tcGlsZXIuaC1Eby1ub3QtaW5jbHVkZS1zeXMtaW8uaC1vbi1BUk0td2l0aC1nbGliYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMS1jb21waWxlci5oLURvLW5vdC1pbmNsdWRlLXN5cy1pby5oLW9uLUFSTS13aXRoLWdsaWJjLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkYTlhNGYyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMS1jb21waWxlci5oLURvLW5vdC1pbmNsdWRlLXN5cy1pby5oLW9uLUFSTS13aXRoLWdsaWJjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotRnJvbSAyYmE5NTEwNzIxYjdhNzZjYjdmZTUwNzQ0OWZhMGFjOTk3YTRjY2UzIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogT2xpdmllciBGb3VyZGFuIDxvZm91cmRhbkByZWRoYXQuY29tPgotRGF0ZTogTW9uLCAxIEp1bCAyMDE5IDEzOjIwOjM5ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGNvbXBpbGVyLmg6IERvIG5vdCBpbmNsdWRlIHN5cy9pby5oIG9uIEFSTSB3aXRoIGdsaWJjCi0KLTxzeXMvaW8uaD4gb24gQVJNIGhhc24ndCB3b3JrZWQgZm9yIGEgbG9uZywgbG9uZyB0aW1lLCBzbyBpdCB3YXMgcmVtb3ZlZAotaXQgZnJvbSBnbGliYyB1cHN0cmVhbS4KLQotUmVtb3ZlIHRoZSBpbmNsdWRlIHRvIGF2b2lkIGEgY29tcGlsYXRpb24gZmFpbHVyZSBvbiBBUk0gd2l0aCBnbGliYy4KLQotU2lnbmVkLW9mZi1ieTogT2xpdmllciBGb3VyZGFuIDxvZm91cmRhbkByZWRoYXQuY29tPgotQ2xvc2VzOiBodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcveG9yZy94c2VydmVyL2lzc3Vlcy84NDAKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmZyZWVkZXNrdG9wLm9yZy94b3JnL3hzZXJ2ZXIvY29tbWl0L2ZlNGNkMGU3ZjVjNThmYTk0ZGIzNjMyNmFhZGMxYmQ0ZTZkNzNlYmFdCi0tLS0KLSBody94ZnJlZTg2L2NvbW1vbi9jb21waWxlci5oIHwgMzAgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDMwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvaHcveGZyZWU4Ni9jb21tb24vY29tcGlsZXIuaCBiL2h3L3hmcmVlODYvY29tbW9uL2NvbXBpbGVyLmgKLWluZGV4IDcxNDRjNmEuLjJiMjAwOGIgMTAwNjQ0Ci0tLS0gYS9ody94ZnJlZTg2L2NvbW1vbi9jb21waWxlci5oCi0rKysgYi9ody94ZnJlZTg2L2NvbW1vbi9jb21waWxlci5oCi1AQCAtNzU4LDM2ICs3NTgsNiBAQCBpbmwodW5zaWduZWQgc2hvcnQgcG9ydCkKLSAgICAgcmV0dXJuIHhmODZSZWFkTW1pbzMyTGUoKHZvaWQgKikgaW9CYXNlLCBwb3J0KTsKLSB9Ci0gCi0tI2VsaWYgZGVmaW5lZChfX2FybV9fKSAmJiBkZWZpbmVkKF9fbGludXhfXykKLS0KLS0vKiBmb3IgTGludXggb24gQVJNLCB3ZSB1c2UgdGhlIExJQkMgaW54L291dHggcm91dGluZXMgKi8KLS0vKiBub3RlIHRoYXQgdGhlIGFwcHJvcHJpYXRlIHNldHVwIHZpYSAiaW9wZXJtIiBuZWVkcyB0byBiZSBkb25lICovCi0tLyogICpiZWZvcmUqIGFueSBpbngvb3V0eCBpcyBkb25lLiAqLwotLQotLSNpbmNsdWRlIDxzeXMvaW8uaD4KLS0KLS1zdGF0aWMgX19pbmxpbmVfXyB2b2lkCi0teGZfb3V0Yih1bnNpZ25lZCBzaG9ydCBwb3J0LCB1bnNpZ25lZCBjaGFyIHZhbCkKLS17Ci0tICAgIG91dGIodmFsLCBwb3J0KTsKLS19Ci0tCi0tc3RhdGljIF9faW5saW5lX18gdm9pZAotLXhmX291dHcodW5zaWduZWQgc2hvcnQgcG9ydCwgdW5zaWduZWQgc2hvcnQgdmFsKQotLXsKLS0gICAgb3V0dyh2YWwsIHBvcnQpOwotLX0KLS0KLS1zdGF0aWMgX19pbmxpbmVfXyB2b2lkCi0teGZfb3V0bCh1bnNpZ25lZCBzaG9ydCBwb3J0LCB1bnNpZ25lZCBpbnQgdmFsKQotLXsKLS0gICAgb3V0bCh2YWwsIHBvcnQpOwotLX0KLS0KLS0jZGVmaW5lIG91dGIgeGZfb3V0YgotLSNkZWZpbmUgb3V0dyB4Zl9vdXR3Ci0tI2RlZmluZSBvdXRsIHhmX291dGwKLS0KLSAjZWxpZiBkZWZpbmVkKF9fbmRzMzJfXykKLSAKLSAvKgotLS0gCi0yLjIyLjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtZ3JhcGhpY3MveG9yZy14c2VydmVyL3hzZXJ2ZXIteG9yZy8wMDAxLWRybW1vZGVfZGlzcGxheS5jLWFkZC1taXNzaW5nLW1pLmgtaW5jbHVkZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMS1kcm1tb2RlX2Rpc3BsYXkuYy1hZGQtbWlzc2luZy1taS5oLWluY2x1ZGUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNGI4ZTQzZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmcvMDAwMS1kcm1tb2RlX2Rpc3BsYXkuYy1hZGQtbWlzc2luZy1taS5oLWluY2x1ZGUucGF0Y2gKQEAgLTAsMCArMSwyMyBAQAorRnJvbSA4NDMzODQ0NDE3OWNhYjdlZGUxMjUyYTExYjY2ZTNiOGY2NTdlNmE0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDcgRmViIDIwMjAgMjA6MzY6NDUgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gZHJtbW9kZV9kaXNwbGF5LmM6IGFkZCBtaXNzaW5nIG1pLmggaW5jbHVkZQorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgaHcveGZyZWU4Ni9kcml2ZXJzL21vZGVzZXR0aW5nL2RybW1vZGVfZGlzcGxheS5jIHwgMSArCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCisKK2RpZmYgLS1naXQgYS9ody94ZnJlZTg2L2RyaXZlcnMvbW9kZXNldHRpbmcvZHJtbW9kZV9kaXNwbGF5LmMgYi9ody94ZnJlZTg2L2RyaXZlcnMvbW9kZXNldHRpbmcvZHJtbW9kZV9kaXNwbGF5LmMKK2luZGV4IGUxOGNjMzcuLjM0NDVjY2UgMTAwNjQ0CistLS0gYS9ody94ZnJlZTg2L2RyaXZlcnMvbW9kZXNldHRpbmcvZHJtbW9kZV9kaXNwbGF5LmMKKysrKyBiL2h3L3hmcmVlODYvZHJpdmVycy9tb2Rlc2V0dGluZy9kcm1tb2RlX2Rpc3BsYXkuYworQEAgLTQ2LDYgKzQ2LDcgQEAKKyAjaW5jbHVkZSAieGY4NkNydGMuaCIKKyAjaW5jbHVkZSAiZHJtbW9kZV9kaXNwbGF5LmgiCisgI2luY2x1ZGUgInByZXNlbnQuaCIKKysjaW5jbHVkZSAibWkuaCIKKyAKKyAjaW5jbHVkZSA8Y3Vyc29yc3RyLmg+CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMjAuNS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4yMC41LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZGU2ZDIyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4yMC41LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotcmVxdWlyZSB4c2VydmVyLXhvcmcuaW5jCi0KLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLXhmODZwY2lCdXMuYy11c2UtSW50ZWwtZGR4LW9ubHktZm9yLXByZS1nZW40LWhhcmR3YXIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL3BrZ2NvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0LXh0ZXN0LUluaXRpYWxpemUtYXJyYXktd2l0aC1icmFjZXMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtY29tcGlsZXIuaC1Eby1ub3QtaW5jbHVkZS1zeXMtaW8uaC1vbi1BUk0td2l0aC1nbGliYy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vc2Rrc3ltcy1uby1idWlsZC1wYXRoLnBhdGNoIFwKLSAgICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjOWZjN2UyMWUxMTI4NmRiZWRkMjJjMDBkZjY1MjEzMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhODFkODI0M2YzN2U3NWEwM2Q0ZjhjNTVmOTZkMGJjMjU4MDJiZTZlYzQ1YzNiZmE1Y2I2MTRjNmQwMWJhYzlkIgotCi0jIFRoZXNlIGV4dGVuc2lvbnMgYXJlIG5vdyBpbnRlZ3JhdGVkIGludG8gdGhlIHNlcnZlciwgc28gZGVjbGFyZSB0aGUgbWlncmF0aW9uCi0jIHBhdGggZm9yIGluLXBsYWNlIHVwZ3JhZGVzLgotCi1SUkVQTEFDRVNfJHtQTn0gPSAgIiR7UE59LWV4dGVuc2lvbi1kcmkgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCi0gICAgICAgICAgICAgICAgICAgIgotUlBST1ZJREVTXyR7UE59ID0gICIke1BOfS1leHRlbnNpb24tZHJpIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAotICAgICAgICAgICAgICAgICAgICIKLVJDT05GTElDVFNfJHtQTn0gPSAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKLSAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCi0gICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAotICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKLSAgICAgICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMjAuOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWdyYXBoaWNzL3hvcmcteHNlcnZlci94c2VydmVyLXhvcmdfMS4yMC44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNmN2ZiZTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ncmFwaGljcy94b3JnLXhzZXJ2ZXIveHNlcnZlci14b3JnXzEuMjAuOC5iYgpAQCAtMCwwICsxLDM0IEBACityZXF1aXJlIHhzZXJ2ZXIteG9yZy5pbmMKKworU1JDX1VSSSArPSAiZmlsZTovLzAwMDEteGY4NnBjaUJ1cy5jLXVzZS1JbnRlbC1kZHgtb25seS1mb3ItcHJlLWdlbjQtaGFyZHdhci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS10ZXN0LXh0ZXN0LUluaXRpYWxpemUtYXJyYXktd2l0aC1icmFjZXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vc2Rrc3ltcy1uby1idWlsZC1wYXRoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZHJtbW9kZV9kaXNwbGF5LmMtYWRkLW1pc3NpbmctbWkuaC1pbmNsdWRlLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gImE3NzBhZWM2MDAxMTY0NDRhOTUzZmY2MzJmNTFmODM5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQxN2I2NDZiZWU0YmEwZmI3ODUwYzFjYzU1YjE4ZTNlODUxM2VkNWMwMmJkZjM4ZGE3ZTEwN2Y4NGUyZDAxNDYiCisKK0NGTEFHUyArPSAiLWZjb21tb24iCisKKyMgVGhlc2UgZXh0ZW5zaW9ucyBhcmUgbm93IGludGVncmF0ZWQgaW50byB0aGUgc2VydmVyLCBzbyBkZWNsYXJlIHRoZSBtaWdyYXRpb24KKyMgcGF0aCBmb3IgaW4tcGxhY2UgdXBncmFkZXMuCisKK1JSRVBMQUNFU18ke1BOfSA9ICAiJHtQTn0tZXh0ZW5zaW9uLWRyaSBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kcmkyIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLXJlY29yZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1leHRtb2QgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZGJlIFwKKyAgICAgICAgICAgICAgICAgICAiCitSUFJPVklERVNfJHtQTn0gPSAgIiR7UE59LWV4dGVuc2lvbi1kcmkgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZHJpMiBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1yZWNvcmQgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tZXh0bW9kIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRiZSBcCisgICAgICAgICAgICAgICAgICAgIgorUkNPTkZMSUNUU18ke1BOfSA9ICIke1BOfS1leHRlbnNpb24tZHJpIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWRyaTIgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1leHRlbnNpb24tcmVjb3JkIFwKKyAgICAgICAgICAgICAgICAgICAgJHtQTn0tZXh0ZW5zaW9uLWV4dG1vZCBcCisgICAgICAgICAgICAgICAgICAgICR7UE59LWV4dGVuc2lvbi1kYmUgXAorICAgICAgICAgICAgICAgICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZS9tYWtlLWJ0dC1zY3JpcHRzLXB5dGhvbjMtcmVhZHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2UvbWFrZS1idHQtc2NyaXB0cy1weXRob24zLXJlYWR5LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNiMGMxYzYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2UvbWFrZS1idHQtc2NyaXB0cy1weXRob24zLXJlYWR5LnBhdGNoCkBAIC0wLDAgKzEsMTk3IEBACitGcm9tIDcwZDVjYTJkNWYzZDZiOTdjMTFjNjQxYjdlMGM1ODM2OTgzMjE5YTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBFcmljIFNhbmRlZW4gPHNhbmRlZW5AcmVkaGF0LmNvbT4KK0RhdGU6IFdlZCwgMjggTWFyIDIwMTggMTU6MjY6MzYgLTA1MDAKK1N1YmplY3Q6IFtvZS1jb3JlXVtQQVRDSCAxLzFdIG1ha2UgYnR0IHNjcmlwdHMgcHl0aG9uMy1yZWFkeQorCitNYW55IGRpc3RyaWJ1dGlvbnMgYXJlIG1vdmluZyB0byBweXRob24zIGJ5IGRlZmF1bHQuICBIZXJlJ3MKK2FuIGF0dGVtcHQgdG8gbWFrZSB0aGUgcHl0aG9uIHNjcmlwdHMgaW4gYmxrdHJhY2UgcHl0aG9uMy1yZWFkeS4KKworTW9zdCBvZiB0aGlzIHdhcyBkb25lIHdpdGggYXV0b21hdGVkIHRvb2xzLiAgSSBoYW5kIGZpeGVkIHNvbWUKK3NwYWNlLXZzIHRhYiBpc3N1ZXMsIGFuZCBjYXN0IGFuIGFycmF5IGluZGV4IHRvIGludGVnZXIuICBJdAorcGFzc2VzIHJ1ZGltZW50YXJ5IHRlc3Rpbmcgd2hlbiBydW4gdW5kZXIgcHl0aG9uMi43IGFzIHdlbGwKK2FzIHB5dGhvbjMuCisKK1RoaXMgZG9lc24ndCBkbyBhbnl0aGluZyB3aXRoIHRoZSBzaGViYW5ncywgaXQgbGVhdmVzIHRoZW0gYm90aAoraW52b2tpbmcgd2hhdGV2ZXIgImVudiBweXRob24iIGNvdWdocyB1cCBvbiB0aGUgc3lzdGVtLgorCitTaWduZWQtb2ZmLWJ5OiBFcmljIFNhbmRlZW4gPHNhbmRlZW5AcmVkaGF0LmNvbT4KK1NpZ25lZC1vZmYtYnk6IEplbnMgQXhib2UgPGF4Ym9lQGtlcm5lbC5kaz4KKworVW5jaGFuZ2VkIGV4Y2VwdCB0byBtb2RpZnkgc2hlYmFuZ3MgdG8gdXNlIHB5dGhvbjMgc2luY2UKK29lLWNvcmUgZG9lcyBub3Qgc3VwcG9ydCBweXRob24yIGFueW1vcmUuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2dpdDovL2dpdC5rZXJuZWwuZGsvYmxrdHJhY2UuZ2l0IGNvbW1pdCA3MGQ1Y2EyZDUuLi5dCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworLS0tCisgYnR0L2Jub19wbG90LnB5IHwgMjggKysrKysrKysrKysrKysrLS0tLS0tLS0tLS0tLQorIGJ0dC9idHRfcGxvdC5weSB8IDIyICsrKysrKysrKysrKystLS0tLS0tLS0KKyAyIGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDIyIGRlbGV0aW9ucygtKQorCistLS0gZ2l0Lm9yaWcvYnR0L2Jub19wbG90LnB5CisrKysgZ2l0L2J0dC9ibm9fcGxvdC5weQorQEAgLTEsNCArMSw0IEBACistIyEgL3Vzci9iaW4vZW52IHB5dGhvbgorKyMhIC91c3IvYmluL2VudiBweXRob24zCisgIworICMgYnR0IGJsa25vIHBsb3R0aW5nIGludGVyZmFjZQorICMKK0BAIC0zOCw2ICszOCw4IEBAIGF1dG9tYXRpY2FsbHkgcHVzaCB0aGUga2V5cyB1bmRlciB0aGUgZ3IKKyBUbyBleGl0IHRoZSBwbG90dGVyLCBlbnRlciAncXVpdCcgb3IgXkQgYXQgdGhlICdnbnVwbG90PiAnIHByb21wdC4KKyAiIiIKKyAKKytmcm9tIF9fZnV0dXJlX18gaW1wb3J0IGFic29sdXRlX2ltcG9ydAorK2Zyb20gX19mdXR1cmVfXyBpbXBvcnQgcHJpbnRfZnVuY3Rpb24KKyBpbXBvcnQgZ2V0b3B0LCBnbG9iLCBvcywgc3lzLCB0ZW1wZmlsZQorIAorIHZlcmJvc2UJPSAwCitAQCAtNjAsMTQgKzYyLDE0IEBAIGRlZiBwYXJzZV9hcmdzKGluX2FyZ3MpOgorIAorIAl0cnk6CisgCQkob3B0cywgYXJncykgPSBnZXRvcHQuZ2V0b3B0KGluX2FyZ3MsIHNfb3B0cywgbF9vcHRzKQorLQlleGNlcHQgZ2V0b3B0LmVycm9yLCBtc2c6CistCQlwcmludCA+PnN5cy5zdGRlcnIsIG1zZworLQkJcHJpbnQgPj5zeXMuc3RkZXJyLCBfX2RvY19fCisrCWV4Y2VwdCBnZXRvcHQuZXJyb3IgYXMgbXNnOgorKwkJcHJpbnQobXNnLCBmaWxlPXN5cy5zdGRlcnIpCisrCQlwcmludChfX2RvY19fLCBmaWxlPXN5cy5zdGRlcnIpCisgCQlzeXMuZXhpdCgxKQorIAorIAlmb3IgKG8sIGEpIGluIG9wdHM6CisgCQlpZiBvIGluICgnLWgnLCAnLS1oZWxwJyk6CistCQkJcHJpbnQgX19kb2NfXworKwkJCXByaW50KF9fZG9jX18pCisgCQkJc3lzLmV4aXQoMCkKKyAJCWVsaWYgbyBpbiAoJy12JywgJy0tdmVyYm9zZScpOgorIAkJCXZlcmJvc2UgKz0gMQorQEAgLTg0LDEwICs4NiwxMCBAQCBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorIAkoYm5vcywga2V5c19iZWxvdykgPSBwYXJzZV9hcmdzKHN5cy5hcmd2WzE6XSkKKyAKKyAJaWYgdmVyYm9zZToKKy0JCXByaW50ICdVc2luZyBmaWxlczonLAorLQkJZm9yIGJubyBpbiBibm9zOiBwcmludCBibm8sCistCQlpZiBrZXlzX2JlbG93OglwcmludCAnXG5LZXlzIGFyZSB0byBiZSBwbGFjZWQgYmVsb3cgZ3JhcGgnCistCQllbHNlOgkJcHJpbnQgJycKKysJCXByaW50KCdVc2luZyBmaWxlczonLCBlbmQ9JyAnKQorKwkJZm9yIGJubyBpbiBibm9zOiBwcmludChibm8sIGVuZD0nICcpCisrCQlpZiBrZXlzX2JlbG93OglwcmludCgnXG5LZXlzIGFyZSB0byBiZSBwbGFjZWQgYmVsb3cgZ3JhcGgnKQorKwkJZWxzZToJCXByaW50KCcnKQorIAorIAl0bXBkaXIgPSB0ZW1wZmlsZS5ta3RlbXAoKQorIAlvcy5ta2Rpcih0bXBkaXIpCitAQCAtOTksNyArMTAxLDcgQEAgaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAJCWZvID0gb3Blbih0LCAndycpCisgCQlmb3IgbGluZSBpbiBvcGVuKGYsICdyJyk6CisgCQkJZmxkID0gbGluZS5zcGxpdChOb25lKQorLQkJCXByaW50ID4+Zm8sIGZsZFswXSwgZmxkWzFdLCBpbnQoZmxkWzJdKS1pbnQoZmxkWzFdKQorKwkJCXByaW50KGZsZFswXSwgZmxkWzFdLCBpbnQoZmxkWzJdKS1pbnQoZmxkWzFdKSwgZmlsZT1mbykKKyAJCWZvLmNsb3NlKCkKKyAKKyAJCXQgPSB0W3QucmZpbmQoJy8nKSsxOl0KK0BAIC0xMDcsMTYgKzEwOSwxNiBAQCBpZiBfX25hbWVfXyA9PSAnX19tYWluX18nOgorIAkJZWxzZTogICAgICAgICAgICAgICAgcGxvdF9jbWQgPSAiJXMsJyVzJyIgJSAocGxvdF9jbWQsIHQpCisgCisgCWZvID0gb3BlbignJXMvcGxvdC5jbWRzJyAlIHRtcGRpciwgJ3cnKQorLQlwcmludCA+PmZvLCBjbWRzCistCWlmIGxlbihibm9zKSA+IDEwIG9yIGtleXNfYmVsb3c6IHByaW50ID4+Zm8sICdzZXQga2V5IGJlbG93JworLQlwcmludCA+PmZvLCBwbG90X2NtZAorKwlwcmludChjbWRzLCBmaWxlPWZvKQorKwlpZiBsZW4oYm5vcykgPiAxMCBvciBrZXlzX2JlbG93OiBwcmludCgnc2V0IGtleSBiZWxvdycsIGZpbGU9Zm8pCisrCXByaW50KHBsb3RfY21kLCBmaWxlPWZvKQorIAlmby5jbG9zZSgpCisgCisgCXBpZCA9IG9zLmZvcmsoKQorIAlpZiBwaWQgPT0gMDoKKyAJCWNtZCA9ICdnbnVwbG90ICVzL3Bsb3QuY21kcyAtJyAlIHRtcGRpcgorIAorLQkJaWYgdmVyYm9zZTogcHJpbnQgJ0V4ZWN1dGluZyAlcycgJSBjbWQKKysJCWlmIHZlcmJvc2U6IHByaW50KCdFeGVjdXRpbmcgJXMnICUgY21kKQorIAorIAkJb3MuY2hkaXIodG1wZGlyKQorIAkJb3Muc3lzdGVtKGNtZCkKKy0tLSBnaXQub3JpZy9idHQvYnR0X3Bsb3QucHkKKysrKyBnaXQvYnR0L2J0dF9wbG90LnB5CitAQCAtMSw0ICsxLDQgQEAKKy0jISAvdXNyL2Jpbi9lbnYgcHl0aG9uCisrIyEgL3Vzci9iaW4vZW52IHB5dGhvbjMKKyAjCisgIyBidHRfcGxvdC5weTogR2VuZXJhdGUgbWF0cGxvdGxpYiBwbG90cyBmb3IgQlRUIGdlbmVyYXRlIGRhdGEgZmlsZXMKKyAjCitAQCAtNTUsNiArNTUsMTAgQEAgQXJndW1lbnRzOgorICAgYnV0IHRoZSAtbyAoLS1vdXRwdXQpIGFuZCAtVCAoLS10aXRsZSkgb3B0aW9ucyB3aWxsIGJlIGlnbm9yZWQuCisgIiIiCisgCisrZnJvbSBfX2Z1dHVyZV9fIGltcG9ydCBhYnNvbHV0ZV9pbXBvcnQKKytmcm9tIF9fZnV0dXJlX18gaW1wb3J0IHByaW50X2Z1bmN0aW9uCisraW1wb3J0IHNpeAorK2Zyb20gc2l4Lm1vdmVzIGltcG9ydCByYW5nZQorIF9fYXV0aG9yX18gPSAnQWxhbiBELiBCcnVuZWxsZSA8YWxhbi5icnVuZWxsZUBocC5jb20+JworIAorICMtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KK0BAIC04Miw3ICs4Niw3IEBAIGdldF9iYXNlIAk9IGxhbWJkYSBmaWxlOiBmaWxlW2ZpbGUuZmluZCgKKyBkZWYgZmF0YWwobXNnKToKKyAJIiIiR2VuZXJhdGUgZmF0YWwgZXJyb3IgbWVzc2FnZSBhbmQgZXhpdCIiIgorIAorLQlwcmludCA+PnN5cy5zdGRlcnIsICdGQVRBTDogJXMnICUgbXNnCisrCXByaW50KCdGQVRBTDogJXMnICUgbXNnLCBmaWxlPXN5cy5zdGRlcnIpCisgCXN5cy5leGl0KDEpCisgCisgIy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorQEAgLTE2Myw3ICsxNjcsNyBAQCBkZWYgZ2V0X2RhdGEoZmlsZXMpOgorIAkJaWYgbm90IG9zLnBhdGguZXhpc3RzKGZpbGUpOgorIAkJCWZhdGFsKCclcyBub3QgZm91bmQnICUgZmlsZSkKKyAJCWVsaWYgdmVyYm9zZToKKy0JCQlwcmludCAnUHJvY2Vzc2luZyAlcycgJSBmaWxlCisrCQkJcHJpbnQoJ1Byb2Nlc3NpbmcgJXMnICUgZmlsZSkKKyAKKyAJCXhzID0gW10KKyAJCXlzID0gW10KK0BAIC0yMTQsOCArMjE4LDggQEAgZGVmIHBhcnNlX2FyZ3MoYXJncyk6CisgCisgCXRyeToKKyAJCShvcHRzLCBhcmdzKSA9IGdldG9wdC5nZXRvcHQoYXJnc1sxOl0sIHNfb3B0cywgbF9vcHRzKQorLQlleGNlcHQgZ2V0b3B0LmVycm9yLCBtc2c6CistCQlwcmludCA+PnN5cy5zdGRlcnIsIG1zZworKwlleGNlcHQgZ2V0b3B0LmVycm9yIGFzIG1zZzoKKysJCXByaW50KG1zZywgZmlsZT1zeXMuc3RkZXJyKQorIAkJZmF0YWwoX19kb2NfXykKKyAKKyAJZm9yIChvLCBhKSBpbiBvcHRzOgorQEAgLTI5MywxNSArMjk3LDE1IEBAIGRlZiBnZW5lcmF0ZV9vdXRwdXQodHlwZSwgZGIpOgorIAlkZWYgY29sb3IoaWR4LCBzdHlsZSk6CisgCQkiIiJSZXR1cm5zIGEgY29sb3Ivc3ltYm9sIHR5cGUgYmFzZWQgdXBvbiB0aGUgaW5kZXggcGFzc2VkLiIiIgorIAorLSAgICAgICAgICAgICAgICBjb2xvcnMgPSBbICdiJywgJ2cnLCAncicsICdjJywgJ20nLCAneScsICdrJyBdCisrCQljb2xvcnMgPSBbICdiJywgJ2cnLCAncicsICdjJywgJ20nLCAneScsICdrJyBdCisgCQlsX3N0eWxlcyA9IFsgJy0nLCAnOicsICctLScsICctLicgXQorIAkJbV9zdHlsZXMgPSBbICdvJywgJysnLCAnLicsICcsJywgJ3MnLCAndicsICd4JywgJzwnLCAnPicgXQorIAorIAkJY29sb3IgPSBjb2xvcnNbaWR4ICUgbGVuKGNvbG9ycyldCisgCQlpZiBzdHlsZSA9PSAnbGluZSc6CistCQkJc3R5bGUgPSBsX3N0eWxlc1soaWR4IC8gbGVuKGxfc3R5bGVzKSkgJSBsZW4obF9zdHlsZXMpXQorKwkJCXN0eWxlID0gbF9zdHlsZXNbaW50KChpZHggLyBsZW4obF9zdHlsZXMpKSAlIGxlbihsX3N0eWxlcykpXQorIAkJZWxpZiBzdHlsZSA9PSAnbWFya2VyJzoKKy0JCQlzdHlsZSA9IG1fc3R5bGVzWyhpZHggLyBsZW4obV9zdHlsZXMpKSAlIGxlbihtX3N0eWxlcyldCisrCQkJc3R5bGUgPSBtX3N0eWxlc1tpbnQoKGlkeCAvIGxlbihtX3N0eWxlcykpICUgbGVuKG1fc3R5bGVzKSldCisgCisgCQlyZXR1cm4gJyVzJXMnICUgKGNvbG9yLCBzdHlsZSkKKyAKK0BAIC0zMTQsNyArMzE4LDcgQEAgZGVmIGdlbmVyYXRlX291dHB1dCh0eXBlLCBkYik6CisgCQlvZmlsZSA9ICclcy5wbmcnICUgdHlwZQorIAorIAlpZiB2ZXJib3NlOgorLQkJcHJpbnQgJ0dlbmVyYXRpbmcgcGxvdCBpbnRvICVzJyAlIG9maWxlCisrCQlwcmludCgnR2VuZXJhdGluZyBwbG90IGludG8gJXMnICUgb2ZpbGUpCisgCisgCWZpZyA9IHBsdC5maWd1cmUoZmlnc2l6ZT1wbG90X3NpemUpCisgCWF4ID0gZmlnLmFkZF9zdWJwbG90KDExMSkKK0BAIC0zMjksNyArMzMzLDcgQEAgZGVmIGdlbmVyYXRlX291dHB1dCh0eXBlLCBkYik6CisgCQlsZWdlbmRzID0gTm9uZQorIAorIAlrZXlzID0gW10KKy0JZm9yIGZpbGUgaW4gZGIuaXRlcmtleXMoKToKKysJZm9yIGZpbGUgaW4gc2l4Lml0ZXJrZXlzKGRiKToKKyAJCWlmIG5vdCBmaWxlIGluIFsnbWluX3gnLCAnbWF4X3gnLCAnbWluX3knLCAnbWF4X3knXToKKyAJCQlrZXlzLmFwcGVuZChmaWxlKQorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9ibGt0cmFjZS9ibGt0cmFjZV9naXQuYmIKaW5kZXggMjYwNWZmOS4uNjkwMzA1MyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2Jsa3RyYWNlL2Jsa3RyYWNlX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvYmxrdHJhY2UvYmxrdHJhY2VfZ2l0LmJiCkBAIC0xMiw2ICsxMiw3IEBACiBTUkNfVVJJID0gImdpdDovL2dpdC5rZXJuZWwuZGsvYmxrdHJhY2UuZ2l0IFwKICAgICAgICAgICAgZmlsZTovL2xkZmxhZ3MucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMTgtMTA2ODkucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vbWFrZS1idHQtc2NyaXB0cy1weXRob24zLXJlYWR5LnBhdGNoIFwKICIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9jcnlwdG9kZXYvY3J5cHRvZGV2LmluYwppbmRleCA5ZDhiYTQ0Li5mOTlmOGJjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2NyeXB0b2Rldi5pbmMKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9jcnlwdG9kZXYuaW5jCkBAIC00LDkgKzQsOCBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9jcnlwdG9kZXYtbGludXgvY3J5cHRvZGV2LWxpbnV4IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LW1vZHVsZS1sb2FkaW5nLXdpdGgtTGludXgtdjUuMC1yYzUucGF0Y2ggXAogICAgICAgICAgICAiCi1TUkNSRVYgPSAiZmQ4YjE1ZWYxYzgzOThhNjlhMzc5MzJlZTQ4Yzc0YWI0MDMyOWEyOSIKK1NSQ1JFViA9ICJhODcwNTNiZWU1NjgwODc4YzI5NWI3ZDIzY2YwZDcwNjU1NzZhYzJiIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtRml4LW1vZHVsZS1sb2FkaW5nLXdpdGgtTGludXgtdjUuMC1yYzUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvY3J5cHRvZGV2L2ZpbGVzLzAwMDEtRml4LW1vZHVsZS1sb2FkaW5nLXdpdGgtTGludXgtdjUuMC1yYzUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDM0ZWM4NzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2NyeXB0b2Rldi9maWxlcy8wMDAxLUZpeC1tb2R1bGUtbG9hZGluZy13aXRoLUxpbnV4LXY1LjAtcmM1LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTkgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRodWIuY29tL2NyeXB0b2Rldi1saW51eC9jcnlwdG9kZXYtbGludXgvY29tbWl0L2Y5NzFlMGNdCi0KLUJhY2twb3J0IHBhdGNoIGZyb20gdXBzdHJlYW0gdG8gZml4IG1vZHVsZSBjcnlwdG9kZXYgbG9hZGluZyBlcnJvci4KLQotU2lnbmVkLW9mZi1ieTogS2FpIEthbmcgPGthaS5rYW5nQHdpbmRyaXZlci5jb20+Ci0KLUZyb20gZjk3MWUwY2Q0YTBlYmU1OWZiMmU4ZTE3MjQwMzk5YmY2OTAxYjA5YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ICJEZXJhbGQgRC4gV29vZHMiIDx3b29kcy50ZWNobmljYWxAZ21haWwuY29tPgotRGF0ZTogU3VuLCAxMCBGZWIgMjAxOSAxMzoyMjoxOSAtMDYwMAotU3ViamVjdDogW1BBVENIXSBGaXggbW9kdWxlIGxvYWRpbmcgd2l0aCBMaW51eCB2NS4wLXJjNQotCi1UaGlzIGNvbW1pdCBmaXhlcyB0aGlzIG1vZHVsZSBsb2FkIGVycm9yOgotWy4uLl0KLVsgICAyOS4xMTIwOTFdIGNyeXB0b2RldjogbG9hZGluZyBvdXQtb2YtdHJlZSBtb2R1bGUgdGFpbnRzIGtlcm5lbC4KLVsgICAyOS4xMjg5MDZdIGNyeXB0b2RldjogVW5rbm93biBzeW1ib2wgY3J5cHRvX2dpdmNpcGhlcl90eXBlIChlcnIgLTIpCi1bICAgMjkuMTg4ODQyXSBjcnlwdG9kZXY6IFVua25vd24gc3ltYm9sIGNyeXB0b19naXZjaXBoZXJfdHlwZSAoZXJyIC0yKQotbW9kcHJvYmU6IGNhbid0IGxvYWQgbW9kdWxlIGNyeXB0b2RldiAoZXh0cmEvY3J5cHRvZGV2LmtvKTogdW5rbm93biBzeW1ib2wgaW4gbW9kdWxlLCBvciB1bmtub3duIHBhcmFtZXRlcgotWy4uLl0KLQotVXBzdHJlYW0gTGludXggc3VwcG9ydCBmb3IgdW51c2VkIEdJVkNJUEhFUiwgYW5kIG90aGVycywgd2FzIGRyb3BwZWQgaGVyZToKLQotYzc5YjQxMWVhYTcyIChjcnlwdG86IHNrY2lwaGVyIC0gcmVtb3ZlIHJlbW5hbnRzIG9mIGludGVybmFsIElWIGdlbmVyYXRvcnMpCi0KLVNpZ25lZC1vZmYtYnk6IERlcmFsZCBELiBXb29kcyA8d29vZHMudGVjaG5pY2FsQGdtYWlsLmNvbT4KLS0tLQotIGNyeXB0bGliLmMgfCA5ICsrKysrKystLQotIDEgZmlsZSBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jcnlwdGxpYi5jIGIvY3J5cHRsaWIuYwotaW5kZXggNmU2NjY5OC4uNGE4NzAzNyAxMDA2NDQKLS0tLSBhL2NyeXB0bGliLmMKLSsrKyBiL2NyeXB0bGliLmMKLUBAIC0zOCw3ICszOCw5IEBACi0gI2luY2x1ZGUgImNyeXB0b2Rldl9pbnQuaCIKLSAjaW5jbHVkZSAiY2lwaGVyYXBpLmgiCi0gCi0rI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPCBLRVJORUxfVkVSU0lPTig1LCAwLCAwKSkKLSBleHRlcm4gY29uc3Qgc3RydWN0IGNyeXB0b190eXBlIGNyeXB0b19naXZjaXBoZXJfdHlwZTsKLSsjZW5kaWYKLSAKLSBzdGF0aWMgdm9pZCBjcnlwdG9kZXZfY29tcGxldGUoc3RydWN0IGNyeXB0b19hc3luY19yZXF1ZXN0ICpyZXEsIGludCBlcnIpCi0gewotQEAgLTE1Nyw4ICsxNTksMTEgQEAgaW50IGNyeXB0b2Rldl9jaXBoZXJfaW5pdChzdHJ1Y3QgY2lwaGVyX2RhdGEgKm91dCwgY29uc3QgY2hhciAqYWxnX25hbWUsCi0gCi0gI2lmIChMSU5VWF9WRVJTSU9OX0NPREUgPj0gS0VSTkVMX1ZFUlNJT04oNCwgOCwgMCkpCi0gCQl0Zm0gPSBjcnlwdG9fc2tjaXBoZXJfdGZtKG91dC0+YXN5bmMucyk7Ci0tCQlpZiAoKHRmbS0+X19jcnRfYWxnLT5jcmFfdHlwZSA9PSAmY3J5cHRvX2FibGtjaXBoZXJfdHlwZSkgfHwKLS0JCSAgICAodGZtLT5fX2NydF9hbGctPmNyYV90eXBlID09ICZjcnlwdG9fZ2l2Y2lwaGVyX3R5cGUpKSB7Ci0rCQlpZiAoKHRmbS0+X19jcnRfYWxnLT5jcmFfdHlwZSA9PSAmY3J5cHRvX2FibGtjaXBoZXJfdHlwZSkKLSsjaWYgKExJTlVYX1ZFUlNJT05fQ09ERSA8IEtFUk5FTF9WRVJTSU9OKDUsIDAsIDApKQotKwkJICAgIHx8ICh0Zm0tPl9fY3J0X2FsZy0+Y3JhX3R5cGUgPT0gJmNyeXB0b19naXZjaXBoZXJfdHlwZSkKLSsjZW5kaWYKLSsJCQkJCQkJKSB7Ci0gCQkJc3RydWN0IGFibGtjaXBoZXJfYWxnICphbGc7Ci0gCi0gCQkJYWxnID0gJnRmbS0+X19jcnRfYWxnLT5jcmFfYWJsa2NpcGhlcjsKLS0tIAotMi4yMC4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXJuLXRvb2xzL2tlcm4tdG9vbHMtbmF0aXZlX2dpdC5iYgppbmRleCA4Y2E3MTkzLi40ZjFhZjczIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2Vybi10b29scy9rZXJuLXRvb2xzLW5hdGl2ZV9naXQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tlcm4tdG9vbHMva2Vybi10b29scy1uYXRpdmVfZ2l0LmJiCkBAIC0xLDI0ICsxLDI3IEBACiBTVU1NQVJZID0gIlRvb2xzIGZvciBtYW5hZ2luZyBZb2N0byBQcm9qZWN0IHN0eWxlIGJyYW5jaGVkIGtlcm5lbHMiCiBMSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZ2l0L3Rvb2xzL2tnaXQ7YmVnaW5saW5lPTU7ZW5kbGluZT05O21kNT05YzMwZTk3MWQ0MzVlMjQ5NjI0Mjc4YzNlMzQzZTUwMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3Rvb2xzL2tnaXQ7YmVnaW5saW5lPTU7ZW5kbGluZT05O21kNT05YzMwZTk3MWQ0MzVlMjQ5NjI0Mjc4YzNlMzQzZTUwMSIKIAogREVQRU5EUyA9ICJnaXQtbmF0aXZlIgogCi1TUkNSRVYgPSAiYmI2ZGYwZWYyMzY1Njg5Y2QzZGY2Zjc2YTg4MzhjZGRhZTBkOTM0MyIKK1NSQ1JFViA9ICJjNjY4MzNlMWNhYWMyNTI3OWE1MDUyZmNlYjEzMjEzZjVlNGY3OWY5IgogUFIgPSAicjEyIgogUFYgPSAiMC4yK2dpdCR7U1JDUFZ9IgogCiBpbmhlcml0IG5hdGl2ZQogCiBTUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC10b29scy5naXQiCi1TID0gIiR7V09SS0RJUn0iCitTID0gIiR7V09SS0RJUn0vZ2l0IgogVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgogCitkb19jb25maWd1cmUoKSB7CisJOgorfQorCiBkb19jb21waWxlKCkgeyAKIAk6CiB9CiAKIGRvX2luc3RhbGwoKSB7Ci0JY2QgJHtTfS9naXQKLQltYWtlIERFU1RESVI9JHtEfSR7YmluZGlyfSBpbnN0YWxsCisJb2VfcnVubWFrZSBERVNURElSPSR7RH0ke2JpbmRpcn0gaW5zdGFsbAogfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDcta2V4ZWMtdW4tYnJlYWstdGhlLWJ1aWxkLW9uLTMyLWJpdC14ODYucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHMvMDAwNy1rZXhlYy11bi1icmVhay10aGUtYnVpbGQtb24tMzItYml0LXg4Ni5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iOTE2MDhlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzLzAwMDcta2V4ZWMtdW4tYnJlYWstdGhlLWJ1aWxkLW9uLTMyLWJpdC14ODYucGF0Y2gKQEAgLTAsMCArMSw0MiBAQAorRnJvbSBkMjk0YzUwMzk3NTNhMzY1MDY5NDliYTVkYzc4MmE0YzBiMzA3Yjc0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDIwIERlYyAyMDE5IDE3OjIxOjA4ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIGtleGVjOiB1bi1icmVhayB0aGUgYnVpbGQgb24gMzIgYml0IHg4NgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisga2V4ZWMvYXJjaC9pMzg2L01ha2VmaWxlICAgIHwgMSArCisga2V4ZWMvYXJjaC9pMzg2L2tleGVjLXg4Ni5oIHwgNCArKysrCisgMiBmaWxlcyBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKykKKworZGlmZiAtLWdpdCBhL2tleGVjL2FyY2gvaTM4Ni9NYWtlZmlsZSBiL2tleGVjL2FyY2gvaTM4Ni9NYWtlZmlsZQoraW5kZXggMTA1Y2VmZC4uMjVkZjU3YSAxMDA2NDQKKy0tLSBhL2tleGVjL2FyY2gvaTM4Ni9NYWtlZmlsZQorKysrIGIva2V4ZWMvYXJjaC9pMzg2L01ha2VmaWxlCitAQCAtMTEsNiArMTEsNyBAQCBpMzg2X0tFWEVDX1NSQ1MgKz0ga2V4ZWMvYXJjaC9pMzg2L2tleGVjLWJlb2Jvb3QteDg2LmMKKyBpMzg2X0tFWEVDX1NSQ1MgKz0ga2V4ZWMvYXJjaC9pMzg2L2tleGVjLW5iaS5jCisgaTM4Nl9LRVhFQ19TUkNTICs9IGtleGVjL2FyY2gvaTM4Ni94ODYtbGludXgtc2V0dXAuYworIGkzODZfS0VYRUNfU1JDUyArPSBrZXhlYy9hcmNoL2kzODYvY3Jhc2hkdW1wLXg4Ni5jCisraTM4Nl9LRVhFQ19TUkNTICs9IGtleGVjL2FyY2gvaTM4Ni9rZXhlYy1tYjIteDg2LmMKKyAKKyBkaXN0ICs9IGtleGVjL2FyY2gvaTM4Ni9NYWtlZmlsZSAkKGkzODZfS0VYRUNfU1JDUykJCQlcCisgCWtleGVjL2FyY2gvaTM4Ni9jcmFzaGR1bXAteDg2LmgJCQkJCVwKK2RpZmYgLS1naXQgYS9rZXhlYy9hcmNoL2kzODYva2V4ZWMteDg2LmggYi9rZXhlYy9hcmNoL2kzODYva2V4ZWMteDg2LmgKK2luZGV4IDFiNThjM2IuLmQ2YjEwYzAgMTAwNjQ0CistLS0gYS9rZXhlYy9hcmNoL2kzODYva2V4ZWMteDg2LmgKKysrKyBiL2tleGVjL2FyY2gvaTM4Ni9rZXhlYy14ODYuaAorQEAgLTU2LDkgKzU2LDEzIEBAIHN0cnVjdCBhcmNoX29wdGlvbnNfdCB7CisgfTsKKyAKKyBpbnQgbXVsdGlib290X3g4Nl9wcm9iZShjb25zdCBjaGFyICpidWYsIG9mZl90IGxlbik7CisraW50IG11bHRpYm9vdDJfeDg2X3Byb2JlKGNvbnN0IGNoYXIgKmJ1Ziwgb2ZmX3QgbGVuKTsKKyBpbnQgbXVsdGlib290X3g4Nl9sb2FkKGludCBhcmdjLCBjaGFyICoqYXJndiwgY29uc3QgY2hhciAqYnVmLCBvZmZfdCBsZW4sCisgCXN0cnVjdCBrZXhlY19pbmZvICppbmZvKTsKKytpbnQgbXVsdGlib290Ml94ODZfbG9hZChpbnQgYXJnYywgY2hhciAqKmFyZ3YsIGNvbnN0IGNoYXIgKmJ1Ziwgb2ZmX3QgbGVuLAorKwlzdHJ1Y3Qga2V4ZWNfaW5mbyAqaW5mbyk7Cisgdm9pZCBtdWx0aWJvb3RfeDg2X3VzYWdlKHZvaWQpOworK3ZvaWQgbXVsdGlib290Ml94ODZfdXNhZ2Uodm9pZCk7CisgCisgaW50IGVsZl94ODZfcHJvYmUoY29uc3QgY2hhciAqYnVmLCBvZmZfdCBsZW4pOworIGludCBlbGZfeDg2X2xvYWQoaW50IGFyZ2MsIGNoYXIgKiphcmd2LCBjb25zdCBjaGFyICpidWYsIG9mZl90IGxlbiwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjE5LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjM2Y3NDM1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9rZXhlYy9rZXhlYy10b29sc18yLjAuMTkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw4OCArMCwwIEBACi0KLVNVTU1BUlkgPSAiS2V4ZWMgZmFzdCByZWJvb3QgdG9vbHMiCi1ERVNDUklQVElPTiA9ICJLZXhlYyBpcyBhIGZhc3QgcmVib290IGZlYXR1cmUgdGhhdCBsZXRzIHlvdSByZWJvb3QgdG8gYSBuZXcgTGludXgga2VybmVsIgotQVVUSE9SID0gIkVyaWMgQmllZGVybWFuIgotSE9NRVBBR0UgPSAiaHR0cDovL2tlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL2tlcm5lbC9rZXhlYy8iCi1TRUNUSU9OID0gImtlcm5lbC91c2VybGFuZCIKLUxJQ0VOU0UgPSAiR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYTViZWQyZjYwZDM1NzYxOGNhMTYxYWQ1MzlmN2MwYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9rZXhlYy9rZXhlYy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWFmMTBmNmFlNGE4NzE1OTY1ZTY0OGFhNjg3YWQzZTA5IgotREVQRU5EUyA9ICJ6bGliIHh6IgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMva2VybmVsL2tleGVjL2tleGVjLXRvb2xzLSR7UFZ9LnRhci5neiBcCi0gICAgZmlsZTovL2tkdW1wIFwKLSAgICBmaWxlOi8va2R1bXAuY29uZiBcCi0gICAgZmlsZTovL2tkdW1wLnNlcnZpY2UgXAotICAgIGZpbGU6Ly8wMDAxLXBvd2VycGMtY2hhbmdlLXRoZS1tZW1vcnktc2l6ZS1saW1pdC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItcHVyZ2F0b3J5LVBhc3Mtci1kaXJlY3RseS10by1saW5rZXIucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAzLWtleGVjLUFSTS1GaXgtYWRkX2J1ZmZlcl9waHlzX3ZpcnQtYWxpZ24taXNzdWUucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA0LXg4Nl82NC1BZGQtc3VwcG9ydC10by1idWlsZC1rZXhlYy10b29scy13aXRoLXgzMi1BQkkucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDA1LURpc2FibGUtUElFLWR1cmluZy1saW5rLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwNi1rZXhlYy1hcm0tdW5kZWZpbmUtX19OUl9rZXhlY19maWxlX2xvYWQtZm9yLWFybS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIwNTI0NThmMGEzNWMyYTNiMGQyMzAyY2FhMzMxOGU5ZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MTNjOGRlZTkxOGU1ODU1YTRiYTYwZDYwOTM3MTM5MDk3ODE0NGI0YzhkMTVkNjQ0NmNhMDA1N2I3YmM1ZTU4IgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kCi0KLWV4cG9ydCBMREZMQUdTID0gIi1MJHtTVEFHSU5HX0xJQkRJUn0iCi1FWFRSQV9PRUNPTkYgPSAiIC0td2l0aC16bGliPXllcyIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgICMgUmVtb3ZlIHRoZSBwcmVwYWNrYWdlZCBjb25maWcuaCBmcm9tIHRoZSBzb3VyY2UgdHJlZSBhcyBpdCBvdmVycmlkZXMKLSAgICAjIHRoZSBzYW1lIGZpbGUgZ2VuZXJhdGVkIGJ5IGNvbmZpZ3VyZSBhbmQgcGxhY2VkIGluIHRoZSBidWlsZCB0cmVlCi0gICAgcm0gLWYgJHtTfS9pbmNsdWRlL2NvbmZpZy5oCi0KLSAgICAjIFJlbW92ZSB0aGUgJyouZCcgZmlsZSB0byBtYWtlIHN1cmUgdGhlIHJlY29tcGlsZSBpcyBPSwotICAgIGZvciBkZXAgaW4gYGZpbmQgJHtCfSAtdHlwZSBmIC1uYW1lICcqLmQnYDsgZG8KLSAgICAgICAgZGVwX25vX2Q9ImBlY2hvICRkZXAgfCBzZWQgJ3MjLmQkIyMnYCIKLSAgICAgICAgIyBSZW1vdmUgZmlsZS5kIHdoZW4gdGhlcmUgaXMgYSBmaWxlLm8KLSAgICAgICAgaWYgWyAtZiAiJGRlcF9ub19kLm8iIF07IHRoZW4KLSAgICAgICAgICAgIHJtIC1mICRkZXAKLSAgICAgICAgZmkKLSAgICBkb25lCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcKLSAgICAgICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0va2R1bXAuY29uZiAke0R9JHtzeXNjb25mZGlyfS9zeXNjb25maWcKLQotICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3Zpbml0JywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KLSAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9rZHVtcCAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQva2R1bXAKLSAgICAgICAgZmkKLQotICAgICAgICBpZiAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3N5c3RlbWQnLCAndHJ1ZScsICdmYWxzZScsIGQpfTsgdGhlbgotICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gMDc1NSAke1dPUktESVJ9L2tkdW1wICR7RH0ke2xpYmV4ZWNkaXJ9L2tkdW1wLWhlbHBlcgotICAgICAgICAgICAgICAgIGluc3RhbGwgLUQgLW0gMDY0NCAke1dPUktESVJ9L2tkdW1wLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZQotICAgICAgICAgICAgICAgIHNlZCAtaSAtZSAncyxATElCRVhFQ0RJUkAsJHtsaWJleGVjZGlyfSxnJyAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rZHVtcC5zZXJ2aWNlCi0gICAgICAgIGZpCi19Ci0KLVBBQ0tBR0VTID0rICJrZXhlYyBrZHVtcCB2bWNvcmUtZG1lc2ciCi0KLUFMTE9XX0VNUFRZXyR7UE59ID0gIjEiCi1SUkVDT01NRU5EU18ke1BOfSA9ICJrZXhlYyBrZHVtcCB2bWNvcmUtZG1lc2ciCi0KLUZJTEVTX2tleGVjID0gIiR7c2JpbmRpcn0va2V4ZWMiCi1GSUxFU19rZHVtcCA9ICIke3NiaW5kaXJ9L2tkdW1wIFwKLSAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vc3lzY29uZmlnL2tkdW1wLmNvbmYgXAotICAgICAgICAgICAgICAgJHtzeXNjb25mZGlyfS9pbml0LmQva2R1bXAgXAotICAgICAgICAgICAgICAgJHtsaWJleGVjZGlyfS9rZHVtcC1oZWxwZXIgXAotICAgICAgICAgICAgICAgJHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbS9rZHVtcC5zZXJ2aWNlIFwKLSIKLQotRklMRVNfdm1jb3JlLWRtZXNnID0gIiR7c2JpbmRpcn0vdm1jb3JlLWRtZXNnIgotCi1JTklUU0NSSVBUX1BBQ0tBR0VTID0gImtkdW1wIgotSU5JVFNDUklQVF9OQU1FX2tkdW1wID0gImtkdW1wIgotSU5JVFNDUklQVF9QQVJBTVNfa2R1bXAgPSAic3RhcnQgNTYgMiAzIDQgNSAuIHN0b3AgNTYgMCAxIDYgLiIKLQotU1lTVEVNRF9QQUNLQUdFUyA9ICJrZHVtcCIKLVNZU1RFTURfU0VSVklDRV9rZHVtcCA9ICJrZHVtcC5zZXJ2aWNlIgotCi1TRUNVUklUWV9QSUVfQ0ZMQUdTX3JlbW92ZSA9ICItZlBJRSAtcGllIgotCi1DT01QQVRJQkxFX0hPU1QgPSAnKHg4Nl82NC4qfGkuODYuKnxhcm0uKnxhYXJjaDY0Lip8cG93ZXJwYy4qfG1pcHMuKiktKGxpbnV4fGZyZWVic2QuKiknCi0KLUlOU0FORV9TS0lQXyR7UE59ID0gImFyY2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwva2V4ZWMva2V4ZWMtdG9vbHNfMi4wLjIwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4yMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44NzFiMzY0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2tleGVjL2tleGVjLXRvb2xzXzIuMC4yMC5iYgpAQCAtMCwwICsxLDg5IEBACisKK1NVTU1BUlkgPSAiS2V4ZWMgZmFzdCByZWJvb3QgdG9vbHMiCitERVNDUklQVElPTiA9ICJLZXhlYyBpcyBhIGZhc3QgcmVib290IGZlYXR1cmUgdGhhdCBsZXRzIHlvdSByZWJvb3QgdG8gYSBuZXcgTGludXgga2VybmVsIgorQVVUSE9SID0gIkVyaWMgQmllZGVybWFuIgorSE9NRVBBR0UgPSAiaHR0cDovL2tlcm5lbC5vcmcvcHViL2xpbnV4L3V0aWxzL2tlcm5lbC9rZXhlYy8iCitTRUNUSU9OID0gImtlcm5lbC91c2VybGFuZCIKK0xJQ0VOU0UgPSAiR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lYTViZWQyZjYwZDM1NzYxOGNhMTYxYWQ1MzlmN2MwYSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9rZXhlYy9rZXhlYy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjA7bWQ1PWFmMTBmNmFlNGE4NzE1OTY1ZTY0OGFhNjg3YWQzZTA5IgorREVQRU5EUyA9ICJ6bGliIHh6IgorCitTUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvdXRpbHMva2VybmVsL2tleGVjL2tleGVjLXRvb2xzLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9rZHVtcCBcCisgICAgICAgICAgIGZpbGU6Ly9rZHVtcC5jb25mIFwKKyAgICAgICAgICAgZmlsZTovL2tkdW1wLnNlcnZpY2UgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1wb3dlcnBjLWNoYW5nZS10aGUtbWVtb3J5LXNpemUtbGltaXQucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi1wdXJnYXRvcnktUGFzcy1yLWRpcmVjdGx5LXRvLWxpbmtlci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAzLWtleGVjLUFSTS1GaXgtYWRkX2J1ZmZlcl9waHlzX3ZpcnQtYWxpZ24taXNzdWUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNC14ODZfNjQtQWRkLXN1cHBvcnQtdG8tYnVpbGQta2V4ZWMtdG9vbHMtd2l0aC14MzItQUJJLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDUtRGlzYWJsZS1QSUUtZHVyaW5nLWxpbmsucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwNi1rZXhlYy1hcm0tdW5kZWZpbmUtX19OUl9rZXhlY19maWxlX2xvYWQtZm9yLWFybS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA3LWtleGVjLXVuLWJyZWFrLXRoZS1idWlsZC1vbi0zMi1iaXQteDg2LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDY3MjRiNjdmMzI1MDFjNWQzZTc3ODE2MTM0N2NhZDkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2IxNmQ3OTgxOGUwYzlkZTNiYjNlMzNlZGU1Njc3YzM0YTFkMjhjNjQ2Mzc5YzdhYjQ0ZTBmYWEzZWI1N2ExNiIKKworaW5oZXJpdCBhdXRvdG9vbHMgdXBkYXRlLXJjLmQgc3lzdGVtZAorCitleHBvcnQgTERGTEFHUyA9ICItTCR7U1RBR0lOR19MSUJESVJ9IgorRVhUUkFfT0VDT05GID0gIiAtLXdpdGgtemxpYj15ZXMiCisKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICAjIFJlbW92ZSB0aGUgcHJlcGFja2FnZWQgY29uZmlnLmggZnJvbSB0aGUgc291cmNlIHRyZWUgYXMgaXQgb3ZlcnJpZGVzCisgICAgIyB0aGUgc2FtZSBmaWxlIGdlbmVyYXRlZCBieSBjb25maWd1cmUgYW5kIHBsYWNlZCBpbiB0aGUgYnVpbGQgdHJlZQorICAgIHJtIC1mICR7U30vaW5jbHVkZS9jb25maWcuaAorCisgICAgIyBSZW1vdmUgdGhlICcqLmQnIGZpbGUgdG8gbWFrZSBzdXJlIHRoZSByZWNvbXBpbGUgaXMgT0sKKyAgICBmb3IgZGVwIGluIGBmaW5kICR7Qn0gLXR5cGUgZiAtbmFtZSAnKi5kJ2A7IGRvCisgICAgICAgIGRlcF9ub19kPSJgZWNobyAkZGVwIHwgc2VkICdzIy5kJCMjJ2AiCisgICAgICAgICMgUmVtb3ZlIGZpbGUuZCB3aGVuIHRoZXJlIGlzIGEgZmlsZS5vCisgICAgICAgIGlmIFsgLWYgIiRkZXBfbm9fZC5vIiBdOyB0aGVuCisgICAgICAgICAgICBybSAtZiAkZGVwCisgICAgICAgIGZpCisgICAgZG9uZQorfQorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2tkdW1wLmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vc3lzY29uZmlnCisKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN2aW5pdCcsICd0cnVlJywgJ2ZhbHNlJywgZCl9OyB0aGVuCisgICAgICAgICAgICAgICAgaW5zdGFsbCAtRCAtbSAwNzU1ICR7V09SS0RJUn0va2R1bXAgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wCisgICAgICAgIGZpCisKKyAgICAgICAgaWYgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdzeXN0ZW1kJywgJ3RydWUnLCAnZmFsc2UnLCBkKX07IHRoZW4KKyAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA3NTUgJHtXT1JLRElSfS9rZHVtcCAke0R9JHtsaWJleGVjZGlyfS9rZHVtcC1oZWxwZXIKKyAgICAgICAgICAgICAgICBpbnN0YWxsIC1EIC1tIDA2NDQgJHtXT1JLRElSfS9rZHVtcC5zZXJ2aWNlICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtL2tkdW1wLnNlcnZpY2UKKyAgICAgICAgICAgICAgICBzZWQgLWkgLWUgJ3MsQExJQkVYRUNESVJALCR7bGliZXhlY2Rpcn0sZycgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZQorICAgICAgICBmaQorfQorCitQQUNLQUdFUyA9KyAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgorCitBTExPV19FTVBUWV8ke1BOfSA9ICIxIgorUlJFQ09NTUVORFNfJHtQTn0gPSAia2V4ZWMga2R1bXAgdm1jb3JlLWRtZXNnIgorCitGSUxFU19rZXhlYyA9ICIke3NiaW5kaXJ9L2tleGVjIgorRklMRVNfa2R1bXAgPSAiJHtzYmluZGlyfS9rZHVtcCBcCisgICAgICAgICAgICAgICAke3N5c2NvbmZkaXJ9L3N5c2NvbmZpZy9rZHVtcC5jb25mIFwKKyAgICAgICAgICAgICAgICR7c3lzY29uZmRpcn0vaW5pdC5kL2tkdW1wIFwKKyAgICAgICAgICAgICAgICR7bGliZXhlY2Rpcn0va2R1bXAtaGVscGVyIFwKKyAgICAgICAgICAgICAgICR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0va2R1bXAuc2VydmljZSBcCisiCisKK0ZJTEVTX3ZtY29yZS1kbWVzZyA9ICIke3NiaW5kaXJ9L3ZtY29yZS1kbWVzZyIKKworSU5JVFNDUklQVF9QQUNLQUdFUyA9ICJrZHVtcCIKK0lOSVRTQ1JJUFRfTkFNRV9rZHVtcCA9ICJrZHVtcCIKK0lOSVRTQ1JJUFRfUEFSQU1TX2tkdW1wID0gInN0YXJ0IDU2IDIgMyA0IDUgLiBzdG9wIDU2IDAgMSA2IC4iCisKK1NZU1RFTURfUEFDS0FHRVMgPSAia2R1bXAiCitTWVNURU1EX1NFUlZJQ0Vfa2R1bXAgPSAia2R1bXAuc2VydmljZSIKKworU0VDVVJJVFlfUElFX0NGTEFHU19yZW1vdmUgPSAiLWZQSUUgLXBpZSIKKworQ09NUEFUSUJMRV9IT1NUID0gJyh4ODZfNjQuKnxpLjg2Lip8YXJtLip8YWFyY2g2NC4qfHBvd2VycGMuKnxtaXBzLiopLShsaW51eHxmcmVlYnNkLiopJworCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJhcmNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlXzIwMTkwODE1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWZpcm13YXJlL2xpbnV4LWZpcm13YXJlXzIwMTkwODE1LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODMwMDBiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV8yMDE5MDgxNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDk0MyArMCwwIEBACi1TVU1NQVJZID0gIkZpcm13YXJlIGZpbGVzIGZvciB1c2Ugd2l0aCBMaW51eCBrZXJuZWwiCi1TRUNUSU9OID0gImtlcm5lbCIKLQotTElDRU5TRSA9ICJcCi0gICAgRmlybXdhcmUtQWJpbGlzIFwKLSAgICAmIEZpcm13YXJlLWFkc3Bfc3N0IFwKLSAgICAmIEZpcm13YXJlLWFnZXJlIFwKLSAgICAmIEZpcm13YXJlLWFtZGdwdSBcCi0gICAgJiBGaXJtd2FyZS1hbWQtdWNvZGUgXAotICAgICYgRmlybXdhcmUtYW1sb2dpY192ZGVjIFwKLSAgICAmIEZpcm13YXJlLWF0aGVyb3NfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtYXRtZWwgXAotICAgICYgRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCBcCi0gICAgJiBGaXJtd2FyZS1jYTAxMzIgXAotICAgICYgRmlybXdhcmUtY2F2aXVtIFwKLSAgICAmIEZpcm13YXJlLWNoZWxzaW9fZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtY3cxMjAwIFwKLSAgICAmIEZpcm13YXJlLWN5cHJlc3MgXAotICAgICYgRmlybXdhcmUtZGliMDcwMCBcCi0gICAgJiBGaXJtd2FyZS1lMTAwIFwKLSAgICAmIEZpcm13YXJlLWVuZV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1md19zc3RfMGYyOCBcCi0gICAgJiBGaXJtd2FyZS1nbzcwMDcgXAotICAgICYgRmlybXdhcmUtR1BMdjIgXAotICAgICYgRmlybXdhcmUtaGZpMV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1pMjQwMG0gXAotICAgICYgRmlybXdhcmUtaTkxNSBcCi0gICAgJiBGaXJtd2FyZS1pYnRfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtaXQ5MTN4IFwKLSAgICAmIEZpcm13YXJlLWl3bHdpZmlfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtSW50Y1NTVDIgXAotICAgICYgRmlybXdhcmUta2F3ZXRoIFwKLSAgICAmIEZpcm13YXJlLU1hcnZlbGwgXAotICAgICYgRmlybXdhcmUtbW94YSBcCi0gICAgJiBGaXJtd2FyZS1teXJpMTBnZV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1uZXRyb25vbWUgXAotICAgICYgRmlybXdhcmUtbnZpZGlhIFwKLSAgICAmIEZpcm13YXJlLU9MUEMgXAotICAgICYgRmlybXdhcmUtYXRoOWstaHRjIFwKLSAgICAmIEZpcm13YXJlLXBoYW5mdyBcCi0gICAgJiBGaXJtd2FyZS1xYXQgXAotICAgICYgRmlybXdhcmUtcWNvbSBcCi0gICAgJiBGaXJtd2FyZS1xbGExMjgwIFwKLSAgICAmIEZpcm13YXJlLXFsYTJ4eHggXAotICAgICYgRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hcjNrIFwKLSAgICAmIEZpcm13YXJlLXF1YWxjb21tQXRob3NfYXRoMTBrIFwKLSAgICAmIEZpcm13YXJlLXI4YTc3OXhfdXNiMyBcCi0gICAgJiBGaXJtd2FyZS1yYWRlb24gXAotICAgICYgRmlybXdhcmUtcmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1yYWxpbmstZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1pbXgtc2RtYV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1zaWFubyBcCi0gICAgJiBGaXJtd2FyZS10ZGE3NzA2LWZpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSBcCi0gICAgJiBGaXJtd2FyZS10aS1rZXlzdG9uZSBcCi0gICAgJiBGaXJtd2FyZS11ZWFnbGUtYXRtNC1maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS12aWFfdnQ2NjU2IFwKLSAgICAmIEZpcm13YXJlLXdsMTI1MSBcCi0gICAgJiBGaXJtd2FyZS14YzQwMDAgXAotICAgICYgRmlybXdhcmUteGM1MDAwIFwKLSAgICAmIEZpcm13YXJlLXhjNTAwMGMgXAotICAgICYgV0hFTkNFIFwKLSIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRS5BYmlsaXM7bWQ1PWI1ZWUzZjQxMDc4MGU1NjcxMWFkNDhlYWRjMjJiOGJjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuYWRzcF9zc3Q7bWQ1PTYxNWM0NWI5MWE1YTRhOWZlMDQ2ZDZhYjlhMmRmNzI4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuYWdlcmU7bWQ1PWFmMDEzM2RlNmI0YTliMjUyMmRlZmQ1ZjE4OGFmZDMxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuYW1kZ3B1O21kNT1hYjUxNWVmNjQ5NWFiNWM1YTNiMDhhYjJkYjYyZGYxMSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmFtZC11Y29kZTttZDU9M2M1Mzk5ZGM5MTQ4ZDdmMGUxZjQxZTM0YjY5Y2YxNGYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5hbWxvZ2ljX3ZkZWM7bWQ1PWRjNDRmNTliZjY0YTgxNjQzZTUwMGFkM2YzOWE0NjhhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuYXRoZXJvc19maXJtd2FyZTttZDU9MzBhMTRjNzgyM2JlZWRhYzlmYTM5YzY0ZmRkMDFhMTMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5hdG1lbDttZDU9YWE3NGFjMGM2MDU5NWRlZTRkNGUyMzkxMDdlYTc3YTMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5icm9hZGNvbV9iY200M3h4O21kNT0zMTYwYzE0ZGY3MjI4ODkxYjg2ODA2MGUxOTUxZGZiYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmNhMDEzMjttZDU9MjA5YjMzZTY2ZWU1YmUwNDYxZjEzZDMxZGEzOTIxOTggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5jYWRlbmNlO21kNT0wMDlmNDY4MTZmNjk1NmNmYjc1ZWRlMTNkM2UxY2VlMCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmNhdml1bTttZDU9YzM3YWFmZmIxZWJlNTkzOWIyNTgwZDA3M2E5NWRhZWEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5jaGVsc2lvX2Zpcm13YXJlO21kNT04MTlhYThjM2ZhNDUzZjFiMjU4ZWQ4ZDE2OGE5ZDkwMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmN3MTIwMDttZDU9ZjBmNzcwODY0ZTdhODQ0NGE1YzVhYTlkMTJhM2E3ZWQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5jeXByZXNzO21kNT00OGNkOTQzNmM3NjNiZjg3Mzk2MWY5ZWQ3YjVjMTQ3YiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmRpYjA3MDA7bWQ1PWY3NDExODI1YzhhNTU1YTFhM2U1ZWFiOWNhNzczNDMxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuZTEwMDttZDU9ZWMwZjg0MTM2NzY2ZGYxNTlhM2FlNmQwMmFjZGY1YTggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5lbmVfZmlybXdhcmU7bWQ1PWVkNjdmMGY2MmY4Zjc5ODEzMGMyOTY3MjBiN2QzOTIxIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuZndfc3N0XzBmMjg7bWQ1PTYzNTM5MzFjOTg4YWQ1MjgxOGFlNzMzYWM2MWNkMjkzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuZ283MDA3O21kNT1jMGJiOWY2YWFhYmE1NWIwNTI5ZWU5YjMwYWE2NmJlYiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9HUEwtMjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5oZmkxX2Zpcm13YXJlO21kNT01ZTdiNmU1ODZjZTczMzlkMTI2ODllNDk5MzFhZDQ0NCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmkyNDAwbTttZDU9MTRiOTAxOTY5ZTIzYzQxODgxMzI3YzBkOWU0YjdkMzYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5pOTE1O21kNT0yYjBiMmUwZDIwOTg0YWZmZDQ0OTBiYTJjYmEwMjU3MCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmlidF9maXJtd2FyZTttZDU9ZmRiZWUxZGRmZTBmYjdhYjBiMmZjZDZiNDU0YTM2NmIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5JbnRjU1NUMjttZDU9OWU3ZDhiZWE3NzYxMmQ3Y2M3ZDllOWI1NGI2MjMwNjIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5pdDkxM3g7bWQ1PTFmYmY3MjdiZmI2YTk0OTgxMGM0ZGJmYTdlNmNlNGY4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuaXdsd2lmaV9maXJtd2FyZTttZDU9M2ZkODQyOTExZWE5M2MyOWNkMzI2NzlhYTIzZTFjODggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5rYXdldGg7bWQ1PWIxZDg3NmU1NjJmNGIzYjhkMzkxYWQ4Mzk1ZGZlMDNmIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuTWFydmVsbDttZDU9MjhiNmVkOGJkMDRiYTEwNWFmNmU0ZGNkNmU5OTc3NzIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5tZWRpYXRlazttZDU9N2MxOTc2YjYzMjE3ZDc2Y2U0N2QwYTExZDhhNzljZjIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5tb3hhO21kNT0xMDg2NjE0NzY3ZDhjY2Y3NDRhOTIzMjg5ZDNkNDI2MSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLm15cmkxMGdlX2Zpcm13YXJlO21kNT00MmUzMmZiODlmNmI5NTljYTIyMmUyNWFjOGRmOGZlZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLk5ldHJvbm9tZTttZDU9NGFkZDA4ZjI1NzcwODZkNDQ0NDc5OTY1MDNjZGRmNWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5udmlkaWE7bWQ1PTQ0MjhhOTIyZWQzYmEyY2VlYzk1ZjA3NmE0ODhjZTA3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuT0xQQzttZDU9NWI5MTdmOWQ4YzA2MTk5MWJlNGY2ZjVmMTA4NzE5Y2QgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5vcGVuLWF0aDlrLWh0Yy1maXJtd2FyZTttZDU9MWIzM2M5ZjRkMTdiYzRkNDU3YmRiMjM3MjcwNDY4MzcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5waGFuZnc7bWQ1PTk1NGRjZWMwZTA1MWY5NDA5ODEyYjU2MWVhNzQzYmZhIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucWF0X2Zpcm13YXJlO21kNT05ZTdkOGJlYTc3NjEyZDdjYzdkOWU5YjU0YjYyMzA2MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLnFjb207bWQ1PTE2NGUzMzYyYTUzOGViMTFkM2FjNTFlOGUxMzQyOTRiIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucWxhMTI4MDttZDU9ZDY4OTU3MzJlNjIyZDk1MDYwOTA5MzIyM2EyYzRmNWQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5xbGEyeHh4O21kNT01MDU4NTVlOTIxYjc1ZjFiZTRhNDM3YWQ5Yjc5ZGZmMCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hcjNrO21kNT1iNWZlMjQ0ZmIyYjUzMjMxMWRlMTQ3MmEzYmMwNmRhNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hdGgxMGs7bWQ1PWNiNDJiNjg2ZWU1ZjVjYjg5MDI3NWU0MzIxZGI2MGE4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucjhhNzc5eF91c2IzO21kNT00YzE2NzE2NTYxNTMwMjVkNzA3NjEwNWE1ZGE3ZTQ5OCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLnJhZGVvbjttZDU9NjhlYzI4YmFjYjM2MTMyMDBiY2E0NGY0MDRjNjliMTYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlO21kNT03MjhmMWE4NWZkNTNmZDY3ZmE4ZDdhZmIwODBiYzQzNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnJhbGluay1maXJtd2FyZS50eHQ7bWQ1PWFiMmMyNjkyNzdjNDU0NzZmYjQ0OTY3MzkxMWEyZGZkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucnRsd2lmaV9maXJtd2FyZS50eHQ7bWQ1PTAwZDA2Y2ZkM2VkZGQ1YTI2OTg5NDhlYWQyYWQ1NGE1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0Uuc2RtYV9maXJtd2FyZTttZDU9NTFlOGMxOWVjYzIyNzBmNGI4ZWEzMDM0MWFkNjNjZTkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5zaWFubzttZDU9NDU1NmMxYmY4MzAwNjdmMTJjYTE1MWFkOTUzZWMyYTUgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS50ZGE3NzA2LWZpcm13YXJlLnR4dDttZDU9ODM1OTk3Y2Y1ZTNjMTMxZDBkZGRkNjk1YzdkOTEwM2UgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS50aS1jb25uZWN0aXZpdHk7bWQ1PWM1ZTAyYmU2MzNmMTQ5OWMxMDlkMTY1MjUxNGQ4NWVjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudGkta2V5c3RvbmU7bWQ1PTNhODYzMzVkMzI4NjRiMGJlZjk5NmJlZTI2Y2MwZjJjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudWVhZ2xlLWF0bTQtZmlybXdhcmU7bWQ1PTRlZDdlYTZiNTA3Y2NjNTgzYjlkNTk0NDE3NzE0MTE4IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudmlhX3Z0NjY1NjttZDU9ZTQxNTk2OTRjYmE0MmQ0Mzc3YTkxMmU3OGE2ZTg1MGYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS53bDEyNTE7bWQ1PWFkM2Y4MTkyMmJiOWUxOTcwMTRiYjE4NzI4OWQzYjViIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UueGM0MDAwO21kNT0wZmY1MWQyZGM0OWZjZTA0ODE0YzkxNTUwODEwOTJmMCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnhjNTAwMDttZDU9MWUxNzBjMTMxNzUzMjNjMzJjN2Y0ZDA5OThkNTNmNjYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS54YzUwMDBjO21kNT0xMmIwMmVmYTMwNDlkYjY1ZDUyNGFlYjQxOGRkODdjYSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9XSEVOQ0U7bWQ1PTM3YTAxZTM3OTIxOWQxZTA2ZGJjY2ZhOTBhOGZjMGFkIFwKLSAgICAgICAgICAgICAgICAgICAgIgotCi0jIFRoZXNlIGFyZSBub3QgY29tbW9uIGxpY2Vuc2VzLCBzZXQgTk9fR0VORVJJQ19MSUNFTlNFIGZvciB0aGVtCi0jIHNvIHRoYXQgdGhlIGxpY2Vuc2UgZmlsZXMgd2lsbCBiZSBjb3BpZWQgZnJvbSBmZXRjaGVkIHNvdXJjZQotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLUFiaWxpc10gPSAiTElDRU5DRS5BYmlsaXMiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYWRzcF9zc3RdID0gIkxJQ0VOQ0UuYWRzcF9zc3QiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYWdlcmVdID0gIkxJQ0VOQ0UuYWdlcmUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYW1kZ3B1XSA9ICJMSUNFTlNFLmFtZGdwdSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1hbWQtdWNvZGVdID0gIkxJQ0VOU0UuYW1kLXVjb2RlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWFtbG9naWNfdmRlY10gPSAiTElDRU5TRS5hbWxvZ2ljX3ZkZWMiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZV0gPSAiTElDRU5DRS5hdGhlcm9zX2Zpcm13YXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWF0bWVsXSA9ICJMSUNFTlNFLmF0bWVsIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWJyb2FkY29tX2JjbTQzeHhdID0gIkxJQ0VOQ0UuYnJvYWRjb21fYmNtNDN4eCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jYTAxMzJdID0gIkxJQ0VOQ0UuY2EwMTMyIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWNhZGVuY2VdID0gIkxJQ0VOQ0UuY2FkZW5jZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jYXZpdW1dID0gIkxJQ0VOQ0UuY2F2aXVtIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWNoZWxzaW9fZmlybXdhcmVdID0gIkxJQ0VOQ0UuY2hlbHNpb19maXJtd2FyZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jdzEyMDBdID0gIkxJQ0VOQ0UuY3cxMjAwIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWN5cHJlc3NdID0gIkxJQ0VOQ0UuY3lwcmVzcyIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1kaWIwNzAwXSA9ICJMSUNFTlNFLmRpYjA3MDAiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtZTEwMF0gPSAiTElDRU5DRS5lMTAwIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWVuZV9maXJtd2FyZV0gPSAiTElDRU5DRS5lbmVfZmlybXdhcmUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtZndfc3N0XzBmMjhdID0gIkxJQ0VOQ0UuZndfc3N0XzBmMjgiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtZ283MDA3XSA9ICJMSUNFTkNFLmdvNzAwNyIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1HUEx2Ml0gPSAiR1BMLTIiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaGZpMV9maXJtd2FyZV0gPSAiTElDRU5TRS5oZmkxX2Zpcm13YXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWkyNDAwbV0gPSAiTElDRU5DRS5pMjQwMG0iCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaTkxNV0gPSAiTElDRU5TRS5pOTE1IgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWlidF9maXJtd2FyZV0gPSAiTElDRU5DRS5pYnRfZmlybXdhcmUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtSW50Y1NTVDJdID0gIkxJQ0VOQ0UuSW50Y1NTVDIiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaXQ5MTN4XSA9ICJMSUNFTkNFLml0OTEzeCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlXSA9ICJMSUNFTkNFLml3bHdpZmlfZmlybXdhcmUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUta2F3ZXRoXSA9ICJMSUNFTkNFLmthd2V0aCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1NYXJ2ZWxsXSA9ICJMSUNFTkNFLk1hcnZlbGwiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtbWVkaWF0ZWtdID0gIkxJQ0VOQ0UubWVkaWF0ZWsiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtbW94YV0gPSAiTElDRU5DRS5tb3hhIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW15cmkxMGdlX2Zpcm13YXJlXSA9ICJMSUNFTkNFLm15cmkxMGdlX2Zpcm13YXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW5ldHJvbm9tZV0gPSAiTElDRU5DRS5OZXRyb25vbWUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtbnZpZGlhXSA9ICJMSUNFTkNFLm52aWRpYSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1PTFBDXSA9ICJMSUNFTkNFLk9MUEMiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYXRoOWstaHRjXSA9ICJMSUNFTkNFLm9wZW4tYXRoOWstaHRjLWZpcm13YXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXBoYW5md10gPSAiTElDRU5DRS5waGFuZnciCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcWF0XSA9ICJMSUNFTkNFLnFhdF9maXJtd2FyZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1xY29tXSA9ICJMSUNFTlNFLnFjb20iCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcWxhMTI4MF0gPSAiTElDRU5DRS5xbGExMjgwIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXFsYTJ4eHhdID0gIkxJQ0VOQ0UucWxhMnh4eCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2FyM2tdID0gIkxJQ0VOU0UuUXVhbGNvbW1BdGhlcm9zX2FyM2siCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hdGgxMGtdID0gIkxJQ0VOU0UuUXVhbGNvbW1BdGhlcm9zX2F0aDEwayIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1yOGE3Nzl4X3VzYjNdID0gIkxJQ0VOQ0UucjhhNzc5eF91c2IzIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXJhZGVvbl0gPSAiTElDRU5TRS5yYWRlb24iCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZV0gPSAiTElDRU5DRS5yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXJhbGluay1maXJtd2FyZV0gPSAiTElDRU5DRS5yYWxpbmstZmlybXdhcmUudHh0IgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmVdID0gIkxJQ0VOQ0UucnRsd2lmaV9maXJtd2FyZS50eHQiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtc2lhbm9dID0gIkxJQ0VOQ0Uuc2lhbm8iCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmVdID0gIkxJQ0VOU0Uuc2RtYV9maXJtd2FyZSIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS10ZGE3NzA2LWZpcm13YXJlXSA9ICJMSUNFTkNFLnRkYTc3MDYtZmlybXdhcmUudHh0IgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXRpLWNvbm5lY3Rpdml0eV0gPSAiTElDRU5DRS50aS1jb25uZWN0aXZpdHkiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtdGkta2V5c3RvbmVdID0gIkxJQ0VOQ0UudGkta2V5c3RvbmUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtdWVhZ2xlLWF0bTQtZmlybXdhcmVdID0gIkxJQ0VOQ0UudWVhZ2xlLWF0bTQtZmlybXdhcmUiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtdmlhX3Z0NjY1Nl0gPSAiTElDRU5DRS52aWFfdnQ2NjU2IgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXdsMTI1MV0gPSAiTElDRU5DRS53bDEyNTEiCi1OT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUteGM0MDAwXSA9ICJMSUNFTkNFLnhjNDAwMCIKLU5PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS14YzUwMDBdID0gIkxJQ0VOQ0UueGM1MDAwIgotTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXhjNTAwMGNdID0gIkxJQ0VOQ0UueGM1MDAwYyIKLU5PX0dFTkVSSUNfTElDRU5TRVtXSEVOQ0VdID0gIldIRU5DRSIKLQotUEUgPSAiMSIKLQotU1JDUkVWID0gIjA3YjkyNWI0NTBiZmI0Y2YzZTE0MWM2MTJlYzViMTA0NjU4Y2QwMjAiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS9saW51eC9rZXJuZWwvZ2l0L2Zpcm13YXJlL2xpbnV4LWZpcm13YXJlLmdpdCIKLQotVVBTVFJFQU1fQ0hFQ0tfQ09NTUlUUyA9ICIxIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGFsbGFyY2gKLQotQ0xFQU5CUk9LRU4gPSAiMSIKLQotZG9fY29tcGlsZSgpIHsKLQk6Ci19Ci0KLWRvX2luc3RhbGwoKSB7Ci0JaW5zdGFsbCAtZCAgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvCi0JY3AgLXIgKiAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS8KLQotCSMgQXZvaWQgTWFrZWZpbGUgdG8gYmUgZGVwbG95ZWQKLQlybSAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9NYWtlZmlsZQotCi0JIyBSZW1vdmUgdW5idWlsZCBmaXJtd2FyZSB3aGljaCBuZWVkcyBjbWFrZSBhbmQgYmFzaAotCXJtICR7RH0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2Nhcmw5MTcwZncgLXJmCi0KLQkjIFJlbW92ZSBwb2ludGxlc3MgYmFzaCBzY3JpcHQKLQlybSAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9jb25maWd1cmUKLQotCSMgUmVtb3ZlIHB5dGhvbiBzY3JpcHQgdXNlZCB0byBjaGVjayB0aGUgV0hFTkNFIGZpbGUKLQlybSAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9jaGVja193aGVuY2UucHkKLQotCSMgTGliZXJ0YXMgc2Q4Njg2Ci0JbG4gLXNmIGxpYmVydGFzL3NkODY4Nl92OS5iaW4gJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvc2Q4Njg2LmJpbgotCWxuIC1zZiBsaWJlcnRhcy9zZDg2ODZfdjlfaGVscGVyLmJpbiAke0R9JHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9zZDg2ODZfaGVscGVyLmJpbgotCi0JIyBmaXh1cCB3bDEyeHggbG9jYXRpb24sIGFmdGVyIDIuNi4zNyB0aGUga2VybmVsIHNlYXJjaGVzIGEgZGlmZmVyZW50IGxvY2F0aW9uIGZvciBpdAotCSggY2QgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUgOyBsbiAtc2YgdGktY29ubmVjdGl2aXR5LyogLiApCi19Ci0KLQotUEFDS0FHRVMgPSsgIiR7UE59LXJhbGluay1saWNlbnNlICR7UE59LXJhbGluayBcCi0gICAgICAgICAgICAgJHtQTn0tbXQ3NjAxdS1saWNlbnNlICR7UE59LW10NzYwMXUgXAotICAgICAgICAgICAgICR7UE59LXJhZGVvbi1saWNlbnNlICR7UE59LXJhZGVvbiBcCi0gICAgICAgICAgICAgJHtQTn0tbWFydmVsbC1saWNlbnNlICR7UE59LXBjaWU4ODk3ICR7UE59LXBjaWU4OTk3IFwKLSAgICAgICAgICAgICAke1BOfS1zZDg2ODYgJHtQTn0tc2Q4Njg4ICR7UE59LXNkODc4NyAke1BOfS1zZDg3OTcgJHtQTn0tc2Q4ODAxICR7UE59LXNkODg4NyAke1BOfS1zZDg4OTcgXAotICAgICAgICAgICAgICR7UE59LXVzYjg5OTcgXAotICAgICAgICAgICAgICR7UE59LXRpLWNvbm5lY3Rpdml0eS1saWNlbnNlICR7UE59LXdsY29tbW9uICR7UE59LXdsMTJ4eCAke1BOfS13bDE4eHggXAotICAgICAgICAgICAgICR7UE59LXZ0NjY1Ni1saWNlbnNlICR7UE59LXZ0NjY1NiBcCi0gICAgICAgICAgICAgJHtQTn0tcnRsLWxpY2Vuc2UgJHtQTn0tcnRsODE4OCAke1BOfS1ydGw4MTkyY3UgJHtQTn0tcnRsODE5MmNlICR7UE59LXJ0bDgxOTJzdSAke1BOfS1ydGw4NzIzICR7UE59LXJ0bDg4MjEgXAotICAgICAgICAgICAgICR7UE59LXJ0bDgxNjggXAotICAgICAgICAgICAgICR7UE59LWN5cHJlc3MtbGljZW5zZSBcCi0gICAgICAgICAgICAgJHtQTn0tYnJvYWRjb20tbGljZW5zZSBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtLTBiYjQtMDMwNiBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMxNDMgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMjM2YiBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMyNDFiMCBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMyNDFiNCBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMyNDFiNSBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMyNDJhIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzI5IFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzI5LWZ1bGxtYWMgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMzAgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMzQgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzMzQwIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzM1IFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzM2MiBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDMzOSBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDM0MzAgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNDMwYTAgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNDU1IFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzUwIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzUwYzIgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNTQgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNTYgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNTYtcGNpZSBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDM1NjkgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNTcwIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzU4IFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzYwMiBcCi0gICAgICAgICAgICAgJHtQTn0tYmNtNDM2NmIgXAotICAgICAgICAgICAgICR7UE59LWJjbTQzNjZjIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzcxIFwKLSAgICAgICAgICAgICAke1BOfS1iY200MzczIFwKLSAgICAgICAgICAgICAke1BOfS1iY200M3h4IFwKLSAgICAgICAgICAgICAke1BOfS1iY200M3h4LWhkciBcCi0gICAgICAgICAgICAgJHtQTn0tYXRoZXJvcy1saWNlbnNlICR7UE59LWFyOTE3MCAke1BOfS1hdGg2ayAke1BOfS1hdGg5ayBcCi0gICAgICAgICAgICAgJHtQTn0tZ3BsdjItbGljZW5zZSAke1BOfS1jYXJsOTE3MCBcCi0gICAgICAgICAgICAgJHtQTn0tYXIzay1saWNlbnNlICR7UE59LWFyM2sgJHtQTn0tYXRoMTBrLWxpY2Vuc2UgJHtQTn0tYXRoMTBrICR7UE59LXFjYSBcCi0gICAgICAgICAgICAgXAotICAgICAgICAgICAgICR7UE59LWlteC1zZG1hLWxpY2Vuc2UgJHtQTn0taW14LXNkbWEtaW14NnEgJHtQTn0taW14LXNkbWEtaW14N2QgXAotICAgICAgICAgICAgIFwKLSAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLWxpY2Vuc2UgJHtQTn0taXdsd2lmaSBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS0xMzUtNiBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS0zMTYwLTcgJHtQTn0taXdsd2lmaS0zMTYwLTggJHtQTn0taXdsd2lmaS0zMTYwLTkgXAotICAgICAgICAgICAgICR7UE59LWl3bHdpZmktMzE2MC0xMCAke1BOfS1pd2x3aWZpLTMxNjAtMTIgJHtQTn0taXdsd2lmaS0zMTYwLTEzIFwKLSAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTMxNjAtMTYgJHtQTn0taXdsd2lmaS0zMTYwLTE3IFwKLSAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTYwMDAtNCAke1BOfS1pd2x3aWZpLTYwMDBnMmEtNSAke1BOfS1pd2x3aWZpLTYwMDBnMmEtNiBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS02MDAwZzJiLTUgJHtQTn0taXdsd2lmaS02MDAwZzJiLTYgXAotICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNjA1MC00ICR7UE59LWl3bHdpZmktNjA1MC01IFwKLSAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTcyNjAgXAotICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNzI2NSBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS03MjY1ZCAke1BOfS1pd2x3aWZpLTgwMDBjICR7UE59LWl3bHdpZmktODI2NSBcCi0gICAgICAgICAgICAgJHtQTn0taXdsd2lmaS05MDAwIFwKLSAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLW1pc2MgXAotICAgICAgICAgICAgICR7UE59LWlidC1saWNlbnNlICR7UE59LWlidCAke1BOfS1pYnQtbWlzYyBcCi0gICAgICAgICAgICAgJHtQTn0taWJ0LTExLTUgJHtQTn0taWJ0LTEyLTE2ICR7UE59LWlidC1ody0zNy03ICR7UE59LWlidC1ody0zNy04IFwKLSAgICAgICAgICAgICAke1BOfS1pYnQtMTcgXAotICAgICAgICAgICAgICR7UE59LWk5MTUtbGljZW5zZSAke1BOfS1pOTE1IFwKLSAgICAgICAgICAgICAke1BOfS1hZHNwLXNzdC1saWNlbnNlICR7UE59LWFkc3Atc3N0IFwKLSAgICAgICAgICAgICAke1BOfS1ibngyLW1pcHMgXAotICAgICAgICAgICAgICR7UE59LWxpcXVpZGlvIFwKLSAgICAgICAgICAgICAke1BOfS1uZXRyb25vbWUtbGljZW5zZSAke1BOfS1uZXRyb25vbWUgXAotICAgICAgICAgICAgICR7UE59LXFhdCAke1BOfS1xYXQtbGljZW5zZSBcCi0gICAgICAgICAgICAgJHtQTn0tcWNvbS1saWNlbnNlIFwKLSAgICAgICAgICAgICAke1BOfS1xY29tLXZlbnVzLTEuOCAke1BOfS1xY29tLXZlbnVzLTQuMiBcCi0gICAgICAgICAgICAgJHtQTn0tcWNvbS1hZHJlbm8tYTN4eCAke1BOfS1xY29tLWFkcmVuby1hNTMwIFwKLSAgICAgICAgICAgICAke1BOfS13aGVuY2UtbGljZW5zZSBcCi0gICAgICAgICAgICAgJHtQTn0tbGljZW5zZSBcCi0gICAgICAgICAgICAgIgotCi0jIEZvciBhdGhlcm9zCi1MSUNFTlNFXyR7UE59LWFyOTE3MCA9ICJGaXJtd2FyZS1hdGhlcm9zX2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1hdGg2ayA9ICJGaXJtd2FyZS1hdGhlcm9zX2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1hdGg5ayA9ICJGaXJtd2FyZS1hdGhlcm9zX2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1hdGhlcm9zLWxpY2Vuc2UgPSAiRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSIKLQotRklMRVNfJHtQTn0tYXRoZXJvcy1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5hdGhlcm9zX2Zpcm13YXJlIgotRklMRVNfJHtQTn0tYXI5MTcwID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXI5MTcwKi5mdyBcCi0iCi1GSUxFU18ke1BOfS1hdGg2ayA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2F0aDZrIFwKLSIKLUZJTEVTXyR7UE59LWF0aDlrID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXI5MjcxLmZ3IFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hcjcwMTAqLmZ3IFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9odGNfOTI3MS5mdyBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaHRjXzcwMTAuZncgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2F0aDlrX2h0Yy9odGNfNzAxMC0xLjQuMC5mdyBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXRoOWtfaHRjL2h0Y185MjcxLTEuNC4wLmZ3IFwKLSIKLQotUkRFUEVORFNfJHtQTn0tYXI5MTcwICs9ICIke1BOfS1hdGhlcm9zLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1hdGg2ayArPSAiJHtQTn0tYXRoZXJvcy1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tYXRoOWsgKz0gIiR7UE59LWF0aGVyb3MtbGljZW5zZSIKLQotIyBGb3IgY2FybDkxNzAKLUxJQ0VOU0VfJHtQTn0tY2FybDkxNzAgPSAiRmlybXdhcmUtR1BMdjIiCi1MSUNFTlNFXyR7UE59LWdwbHYyLWxpY2Vuc2UgPSAiRmlybXdhcmUtR1BMdjIiCi0KLUZJTEVTXyR7UE59LWdwbHYyLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9HUEwtMiIKLUZJTEVTXyR7UE59LWNhcmw5MTcwID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvY2FybDkxNzAqLmZ3IFwKLSIKLQotUkRFUEVORFNfJHtQTn0tY2FybDkxNzAgKz0gIiR7UE59LWdwbHYyLWxpY2Vuc2UiCi0KLSMgRm9yIFF1YWxDb21tQXRob3MKLUxJQ0VOU0VfJHtQTn0tYXIzayA9ICJGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2FyM2siCi1MSUNFTlNFXyR7UE59LWFyM2stbGljZW5zZSA9ICJGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2FyM2siCi1MSUNFTlNFXyR7UE59LWF0aDEwayA9ICJGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2F0aDEwayIKLUxJQ0VOU0VfJHtQTn0tYXRoMTBrLWxpY2Vuc2UgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hdGgxMGsiCi1MSUNFTlNFXyR7UE59LXFjYSA9ICJGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2F0aDEwayIKLQotRklMRVNfJHtQTn0tYXIzay1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXIzayIKLUZJTEVTXyR7UE59LWFyM2sgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hcjNrIFwKLSIKLQotRklMRVNfJHtQTn0tYXRoMTBrLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hdGgxMGsiCi1GSUxFU18ke1BOfS1hdGgxMGsgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hdGgxMGsgXAotIgotCi1GSUxFU18ke1BOfS1xY2EgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY2EgXAotIgotCi1SREVQRU5EU18ke1BOfS1hcjNrICs9ICIke1BOfS1hcjNrLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1hdGgxMGsgKz0gIiR7UE59LWF0aDEway1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tcWNhICs9ICIke1BOfS1hdGgxMGstbGljZW5zZSIKLQotIyBGb3IgcmFsaW5rCi1MSUNFTlNFXyR7UE59LXJhbGluayA9ICJGaXJtd2FyZS1yYWxpbmstZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LXJhbGluay1saWNlbnNlID0gIkZpcm13YXJlLXJhbGluay1maXJtd2FyZSIKLQotRklMRVNfJHtQTn0tcmFsaW5rLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLnJhbGluay1maXJtd2FyZS50eHQiCi1GSUxFU18ke1BOfS1yYWxpbmsgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydCouYmluIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tcmFsaW5rICs9ICIke1BOfS1yYWxpbmstbGljZW5zZSIKLQotIyBGb3IgbWVkaWF0ZWsgTVQ3NjAxVQotTElDRU5TRV8ke1BOfS1tdDc2MDF1ID0gIkZpcm13YXJlLXJhbGlua19hX21lZGlhdGVrX2NvbXBhbnlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LW10NzYwMXUtbGljZW5zZSA9ICJGaXJtd2FyZS1yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIgotCi1GSUxFU18ke1BOfS1tdDc2MDF1LWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLnJhbGlua19hX21lZGlhdGVrX2NvbXBhbnlfZmlybXdhcmUiCi1GSUxFU18ke1BOfS1tdDc2MDF1ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXQ3NjAxdS5iaW4gXAotIgotCi1SREVQRU5EU18ke1BOfS1tdDc2MDF1ICs9ICIke1BOfS1tdDc2MDF1LWxpY2Vuc2UiCi0KLSMgRm9yIHJhZGVvbgotTElDRU5TRV8ke1BOfS1yYWRlb24gPSAiRmlybXdhcmUtcmFkZW9uIgotTElDRU5TRV8ke1BOfS1yYWRlb24tbGljZW5zZSA9ICJGaXJtd2FyZS1yYWRlb24iCi0KLUZJTEVTXyR7UE59LXJhZGVvbi1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5yYWRlb24iCi1GSUxFU18ke1BOfS1yYWRlb24gPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9yYWRlb24gXAotIgotCi1SREVQRU5EU18ke1BOfS1yYWRlb24gKz0gIiR7UE59LXJhZGVvbi1saWNlbnNlIgotCi0jIEZvciBtYXJ2ZWxsCi1MSUNFTlNFXyR7UE59LXBjaWU4ODk3ID0gIkZpcm13YXJlLU1hcnZlbGwiCi1MSUNFTlNFXyR7UE59LXBjaWU4OTk3ID0gIkZpcm13YXJlLU1hcnZlbGwiCi1MSUNFTlNFXyR7UE59LXNkODY4NiA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgotTElDRU5TRV8ke1BOfS1zZDg2ODggPSAiRmlybXdhcmUtTWFydmVsbCIKLUxJQ0VOU0VfJHtQTn0tc2Q4Nzg3ID0gIkZpcm13YXJlLU1hcnZlbGwiCi1MSUNFTlNFXyR7UE59LXNkODc5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgotTElDRU5TRV8ke1BOfS1zZDg4MDEgPSAiRmlybXdhcmUtTWFydmVsbCIKLUxJQ0VOU0VfJHtQTn0tc2Q4ODg3ID0gIkZpcm13YXJlLU1hcnZlbGwiCi1MSUNFTlNFXyR7UE59LXNkODg5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgotTElDRU5TRV8ke1BOfS11c2I4OTk3ID0gIkZpcm13YXJlLU1hcnZlbGwiCi1MSUNFTlNFXyR7UE59LW1hcnZlbGwtbGljZW5zZSA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgotCi1GSUxFU18ke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLk1hcnZlbGwiCi1GSUxFU18ke1BOfS1wY2llODg5NyA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvcGNpZTg4OTdfdWFwc3RhLmJpbiBcCi0iCi1GSUxFU18ke1BOfS1wY2llODk5NyA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvcGNpZTg5OTdfd2xhbl92NC5iaW4gXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvcGNpZXVhcnQ4OTk3X2NvbWJvX3Y0LmJpbiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9wY2lldXNiODk5N19jb21ib192NC5iaW4gXAotIgotRklMRVNfJHtQTn0tc2Q4Njg2ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbGliZXJ0YXMvc2Q4Njg2X3Y5KiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvc2Q4Njg2KiBcCi0iCi1GSUxFU18ke1BOfS1zZDg2ODggPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9saWJlcnRhcy9zZDg2ODgqIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3NkODY4OCogXAotIgotRklMRVNfJHtQTn0tc2Q4Nzg3ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg3ODdfdWFwc3RhLmJpbiBcCi0iCi1GSUxFU18ke1BOfS1zZDg3OTcgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3NkODc5N191YXBzdGEuYmluIFwKLSIKLUZJTEVTXyR7UE59LXNkODgwMSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvc2Q4ODAxX3VhcHN0YS5iaW4gXAotIgotRklMRVNfJHtQTn0tc2Q4ODg3ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg4ODdfdWFwc3RhLmJpbiBcCi0iCi1GSUxFU18ke1BOfS1zZDg4OTcgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3NkODg5N191YXBzdGEuYmluIFwKLSIKLUZJTEVTXyR7UE59LXVzYjg5OTcgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3VzYnVzYjg5OTdfY29tYm9fdjQuYmluIFwKLSIKLQotUkRFUEVORFNfJHtQTn0tc2Q4Njg2ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1zZDg2ODggKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXNkODc4NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tc2Q4Nzk3ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1zZDg4MDEgKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXNkODg4NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tc2Q4ODk3ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS11c2I4OTk3ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCi0KLSMgRm9yIG5ldHJvbm9tZQotTElDRU5TRV8ke1BOfS1uZXRyb25vbWUgPSAiRmlybXdhcmUtbmV0cm9ub21lIgotCi1GSUxFU18ke1BOfS1uZXRyb25vbWUtbGljZW5zZSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuTmV0cm9ub21lIFwKLSIKLUZJTEVTXyR7UE59LW5ldHJvbm9tZSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL25ldHJvbm9tZS9uaWNfQU1EQTAwODEqLm5mZncgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL25ldHJvbm9tZS9uaWNfQU1EQTAwOTYqLm5mZncgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL25ldHJvbm9tZS9uaWNfQU1EQTAwOTcqLm5mZncgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL25ldHJvbm9tZS9uaWNfQU1EQTAwOTkqLm5mZncgXAotIgotCi1SREVQRU5EU18ke1BOfS1uZXRyb25vbWUgKz0gIiR7UE59LW5ldHJvbm9tZS1saWNlbnNlIgotCi0jIEZvciBydGwKLUxJQ0VOU0VfJHtQTn0tcnRsODE4OCA9ICJGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1ydGw4MTkyY3UgPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0tcnRsODE5MmNlID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LXJ0bDgxOTJzdSA9ICJGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1ydGw4NzIzID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LXJ0bDg4MjEgPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0tcnRsLWxpY2Vuc2UgPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0tcnRsODE2OCA9ICJXSEVOQ0UiCi0KLUZJTEVTXyR7UE59LXJ0bC1saWNlbnNlID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5ydGx3aWZpX2Zpcm13YXJlLnR4dCBcCi0iCi1GSUxFU18ke1BOfS1ydGw4MTg4ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnRsd2lmaS9ydGw4MTg4Ki5iaW4gXAotIgotRklMRVNfJHtQTn0tcnRsODE5MmN1ID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnRsd2lmaS9ydGw4MTkyY3VmdyouYmluIFwKLSIKLUZJTEVTXyR7UE59LXJ0bDgxOTJjZSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODE5MmNmdyouYmluIFwKLSIKLUZJTEVTXyR7UE59LXJ0bDgxOTJzdSA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODcxMnUuYmluIFwKLSIKLUZJTEVTXyR7UE59LXJ0bDg3MjMgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydGx3aWZpL3J0bDg3MjMqLmJpbiBcCi0iCi1GSUxFU18ke1BOfS1ydGw4ODIxID0gIiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnRsd2lmaS9ydGw4ODIxKi5iaW4gXAotIgotRklMRVNfJHtQTn0tcnRsODE2OCA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bF9uaWMvcnRsODE2OCouZncgXAotIgotCi1SREVQRU5EU18ke1BOfS1ydGw4MTg4ICs9ICIke1BOfS1ydGwtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXJ0bDgxOTJjZSArPSAiJHtQTn0tcnRsLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1ydGw4MTkyY3UgKz0gIiR7UE59LXJ0bC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tcnRsODE5MnN1ID0gIiR7UE59LXJ0bC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tcnRsODcyMyArPSAiJHtQTn0tcnRsLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1ydGw4ODIxICs9ICIke1BOfS1ydGwtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LXJ0bDgxNjggKz0gIiR7UE59LXdoZW5jZS1saWNlbnNlIgotCi0jIEZvciB0aS1jb25uZWN0aXZpdHkKLUxJQ0VOU0VfJHtQTn0td2xjb21tb24gPSAiRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IgotTElDRU5TRV8ke1BOfS13bDEyeHggPSAiRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IgotTElDRU5TRV8ke1BOfS13bDE4eHggPSAiRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IgotTElDRU5TRV8ke1BOfS10aS1jb25uZWN0aXZpdHktbGljZW5zZSA9ICJGaXJtd2FyZS10aS1jb25uZWN0aXZpdHkiCi0KLUZJTEVTXyR7UE59LXRpLWNvbm5lY3Rpdml0eS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS50aS1jb25uZWN0aXZpdHkiCi1GSUxFU18ke1BOfS13bGNvbW1vbiA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL1RJKiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvdGktY29ubmVjdGl2aXR5L1RJKiBcCi0iCi1GSUxFU18ke1BOfS13bDEyeHggPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS93bDEyKiBcCi0gICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvdGktY29ubmVjdGl2aXR5L3dsMTIqIFwKLSIKLUZJTEVTXyR7UE59LXdsMTh4eCA9ICIgXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3dsMTgqIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS90aS1jb25uZWN0aXZpdHkvd2wxOCogXAotIgotCi1SREVQRU5EU18ke1BOfS13bDEyeHggPSAiJHtQTn0tdGktY29ubmVjdGl2aXR5LWxpY2Vuc2UgJHtQTn0td2xjb21tb24iCi1SREVQRU5EU18ke1BOfS13bDE4eHggPSAiJHtQTn0tdGktY29ubmVjdGl2aXR5LWxpY2Vuc2UgJHtQTn0td2xjb21tb24iCi0KLSMgRm9yIHZ0NjY1NgotTElDRU5TRV8ke1BOfS12dDY2NTYgPSAiRmlybXdhcmUtdmlhX3Z0NjY1NiIKLUxJQ0VOU0VfJHtQTn0tdnQ2NjU2LWxpY2Vuc2UgPSAiRmlybXdhcmUtdmlhX3Z0NjY1NiIKLQotRklMRVNfJHtQTn0tdnQ2NjU2LWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLnZpYV92dDY2NTYiCi1GSUxFU18ke1BOfS12dDY2NTYgPSAiIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS92bnR3dXNiLmZ3IFwKLSIKLQotUkRFUEVORFNfJHtQTn0tdnQ2NjU2ID0gIiR7UE59LXZ0NjY1Ni1saWNlbnNlIgotCi0jIEZvciBicm9hZGNvbQotCi0jIGZvciBpIGluIGBncmVwIGJyY20gV0hFTkNFICB8IGdyZXAgXkZpbGUgfCBzZWQgJ3MvRmlsZTogYnJjbS4vL2cnYDsgZG8gcGtnPWBlY2hvICRpIHwgc2VkICdzLy1bc3A0MF0uKi8vZzsgcy9cLmJpbi8vZzsgcy9icmNtZm1hYy9iY20vZzsgcy9faGRyLy1oZHIvZzsgcy9CQ00vYmNtLTBiYjQtMDMwNi9nJ2A7IGVjaG8gLWUgIiAgICAgICAgICAgICBcJHtQTn0tJHBrZyBcXCI7IGRvbmUgIHwgc29ydCAtdQotCi1MSUNFTlNFXyR7UE59LWJyb2FkY29tLWxpY2Vuc2UgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLUZJTEVTXyR7UE59LWJyb2FkY29tLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLmJyb2FkY29tX2JjbTQzeHgiCi0KLSMgZm9yIGkgaW4gYGdyZXAgYnJjbSBXSEVOQ0UgIHwgZ3JlcCBeRmlsZSB8IHNlZCAncy9GaWxlOiBicmNtLi8vZydgOyBkbyBwa2c9YGVjaG8gJGkgfCBzZWQgJ3MvLVtzcDQwXS4qLy9nOyBzL1wuYmluLy9nOyBzL2JyY21mbWFjL2JjbS9nOyBzL19oZHIvLWhkci9nOyBzL0JDTS9iY20tMGJiNC0wMzA2L2cnYDsgZWNobyAiJGkgLSAkcGtnIjsgZWNobyAtZSAiRklMRVNfXCR7UE59LSRwa2cgPSBcIlwke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vJGlcIiI7IGRvbmUgfCBncmVwIF5GSUxFUwotCi1GSUxFU18ke1BOfS1iY200M3h4ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9iY200M3h4LTAuZnciCi1GSUxFU18ke1BOfS1iY200M3h4LWhkciA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYmNtNDN4eF9oZHItMC5mdyIKLUZJTEVTXyR7UE59LWJjbTQzMjktZnVsbG1hYyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYmNtNDMyOS1mdWxsbWFjLTQuYmluIgotRklMRVNfJHtQTn0tYmNtNDMyMzZiID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMjM2Yi5iaW4iCi1GSUxFU18ke1BOfS1iY200MzI5ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMjktc2Rpby5iaW4iCi1GSUxFU18ke1BOfS1iY200MzMwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMzAtc2Rpby4qIgotRklMRVNfJHtQTn0tYmNtNDMzNCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzM0LXNkaW8uYmluIgotRklMRVNfJHtQTn0tYmNtNDMzNSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzM1LXNkaW8uYmluIgotRklMRVNfJHtQTn0tYmNtNDMzOSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzM5LXNkaW8uYmluIgotRklMRVNfJHtQTn0tYmNtNDMyNDFiMCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzI0MWIwLXNkaW8uYmluIgotRklMRVNfJHtQTn0tYmNtNDMyNDFiNCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzI0MWI0LXNkaW8uYmluIgotRklMRVNfJHtQTn0tYmNtNDMyNDFiNSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzI0MWI1LXNkaW8uYmluIgotRklMRVNfJHtQTn0tYmNtNDMyNDJhID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMjQyYS5iaW4iCi1GSUxFU18ke1BOfS1iY200MzE0MyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzE0My5iaW4gXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzE0My1zZGlvLmJpbiBcCi0iCi1GSUxFU18ke1BOfS1iY200MzQzMGEwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNDMwYTAtc2Rpby4qIgotRklMRVNfJHtQTn0tYmNtNDM0NTUgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM0NTUtc2Rpby4qIgotRklMRVNfJHtQTn0tYmNtNDM1MGMyID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTBjMi1wY2llLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzNTAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1MC1wY2llLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzNTYgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1Ni1zZGlvLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzNTY5ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTY5LmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzNTcwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTcwLXBjaWUuYmluIgotRklMRVNfJHtQTn0tYmNtNDM1OCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzU4LXBjaWUuYmluIgotRklMRVNfJHtQTn0tYmNtNDM2MDIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM2MDItcGNpZS5iaW4gXAotICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzYwMi1wY2llLmFwLmJpbiBcCi0iCi1GSUxFU18ke1BOfS1iY200MzY2YiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzY2Yi1wY2llLmJpbiIKLUZJTEVTXyR7UE59LWJjbTQzNjZjID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNjZjLXBjaWUuYmluIgotRklMRVNfJHtQTn0tYmNtNDM3MSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzcxLXBjaWUuYmluIgotCi0jIGZvciBpIGluIGBncmVwIGJyY20gV0hFTkNFICB8IGdyZXAgXkZpbGUgfCBzZWQgJ3MvRmlsZTogYnJjbS4vL2cnYDsgZG8gcGtnPWBlY2hvICRpIHwgc2VkICdzLy1bc3A0MF0uKi8vZzsgcy9cLmJpbi8vZzsgcy9icmNtZm1hYy9iY20vZzsgcy9faGRyLy1oZHIvZzsgcy9CQ00vYmNtLTBiYjQtMDMwNi9nJ2A7IGVjaG8gLWUgIkxJQ0VOU0VfXCR7UE59LSRwa2cgPSBcIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHhcIlxuUkRFUEVORFNfXCR7UE59LSRwa2cgKz0gXCJcJHtQTn0tYnJvYWRjb20tbGljZW5zZVwiIjsgZG9uZQotIyBDdXJyZW50bHkgMXN0IG9uZSBhbmQgbGFzdCA2IGhhdmUgY3lwcmVzcyBMSUNFTlNFCi0KLUxJQ0VOU0VfJHtQTn0tYmNtNDN4eCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDN4eCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDN4eC1oZHIgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzeHgtaGRyICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzI5LWZ1bGxtYWMgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMjktZnVsbG1hYyArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDMyMzZiID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzIzNmIgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMjkgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMjkgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMzAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMzAgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMzQgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMzQgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMzUgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMzUgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMzkgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMzkgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMjQxYjAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMjQxYjAgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMjQxYjQgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMjQxYjQgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMjQxYjUgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzMjQxYjUgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMjQyYSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDMyNDJhICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzE0MyA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDMxNDMgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNDMwYTAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzNDMwYTAgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNDU1ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzQ1NSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM1MGMyID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzUwYzIgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNTAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzNTAgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNTYgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzNTYgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNTY5ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzU2OSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM1NzAgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzNTcwICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzU4ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzU4ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzYwMiA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgotUkRFUEVORFNfJHtQTn0tYmNtNDM2MDIgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzNjZiID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzY2YiArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM2NmMgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKLVJERVBFTkRTXyR7UE59LWJjbTQzNjZjICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzcxID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCi1SREVQRU5EU18ke1BOfS1iY200MzcxICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgotCi0jIEZvciBicm9hZGNvbSBjeXByZXNzCi0KLUxJQ0VOU0VfJHtQTn0tY3lwcmVzcy1saWNlbnNlID0gIkZpcm13YXJlLWN5cHJlc3MiCi1GSUxFU18ke1BOfS1jeXByZXNzLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLmN5cHJlc3MiCi0KLUZJTEVTXyR7UE59LWJjbS0wYmI0LTAzMDYgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL0JDTS0wYmI0LTAzMDYuaGNkIgotRklMRVNfJHtQTn0tYmNtNDMzNDAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMzNDAtc2Rpby4qIgotRklMRVNfJHtQTn0tYmNtNDMzNjIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMzNjItc2Rpby4qIgotRklMRVNfJHtQTn0tYmNtNDM0MzAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM0MzAtc2Rpby4qIgotRklMRVNfJHtQTn0tYmNtNDM1NCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzU0LXNkaW8uYmluIgotRklMRVNfJHtQTn0tYmNtNDM1Ni1wY2llID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTYtcGNpZS4qIgotRklMRVNfJHtQTn0tYmNtNDM3MyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzczLXNkaW8uYmluIFwKLSAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM3My5iaW4gXAotIgotCi1MSUNFTlNFXyR7UE59LWJjbS0wYmI0LTAzMDYgPSAiRmlybXdhcmUtY3lwcmVzcyIKLVJERVBFTkRTXyR7UE59LWJjbS0wYmI0LTAzMDYgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDMzNDAgPSAiRmlybXdhcmUtY3lwcmVzcyIKLVJERVBFTkRTXyR7UE59LWJjbTQzMzQwICs9ICIke1BOfS1jeXByZXNzLWxpY2Vuc2UiCi1MSUNFTlNFXyR7UE59LWJjbTQzMzYyID0gIkZpcm13YXJlLWN5cHJlc3MiCi1SREVQRU5EU18ke1BOfS1iY200MzM2MiArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzQzMCA9ICJGaXJtd2FyZS1jeXByZXNzIgotUkRFUEVORFNfJHtQTn0tYmNtNDM0MzAgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKLUxJQ0VOU0VfJHtQTn0tYmNtNDM1NCA9ICJGaXJtd2FyZS1jeXByZXNzIgotUkRFUEVORFNfJHtQTn0tYmNtNDM1NCArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzU2LXBjaWUgPSAiRmlybXdhcmUtY3lwcmVzcyIKLVJERVBFTkRTXyR7UE59LWJjbTQzNTYtcGNpZSArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgotTElDRU5TRV8ke1BOfS1iY200MzczID0gIkZpcm13YXJlLWN5cHJlc3MiCi1SREVQRU5EU18ke1BOfS1iY200MzczICs9ICIke1BOfS1jeXByZXNzLWxpY2Vuc2UiCi0KLSMgRm9yIEJyb2FkY29tIGJueDItbWlwcwotIwotIyB3aGljaCBpcyBhIHNlcGFyYXRlIGNhc2UgdG8gdGhlIG90aGVyIEJyb2FkY29tIGZpcm13YXJlcyBzaW5jZSBpdHMKLSMgbGljZW5zZSBpcyBjb250YWluZWQgaW4gdGhlIHNoYXJlZCBXSEVOQ0UgZmlsZS4KLQotTElDRU5TRV8ke1BOfS1ibngyLW1pcHMgPSAiV0hFTkNFIgotTElDRU5TRV8ke1BOfS13aGVuY2UtbGljZW5zZSA9ICJXSEVOQ0UiCi0KLUZJTEVTXyR7UE59LWJueDItbWlwcyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JueDIvYm54Mi1taXBzLTA5LTYuMi4xYi5mdyIKLUZJTEVTXyR7UE59LXdoZW5jZS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvV0hFTkNFIgotCi1SREVQRU5EU18ke1BOfS1ibngyLW1pcHMgKz0gIiR7UE59LXdoZW5jZS1saWNlbnNlIgotCi0jIEZvciBpbXgtc2RtYQotTElDRU5TRV8ke1BOfS1pbXgtc2RtYS1pbXg2cSAgICAgICA9ICJGaXJtd2FyZS1pbXgtc2RtYV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taW14LXNkbWEtaW14N2QgICAgICAgPSAiRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWlteC1zZG1hLWxpY2Vuc2UgICAgICAgPSAiRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmUiCi0KLUZJTEVTXyR7UE59LWlteC1zZG1hLWlteDZxID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW14L3NkbWEvc2RtYS1pbXg2cS5iaW4iCi0KLVJQUk9WSURFU18ke1BOfS1pbXgtc2RtYS1pbXg2cSA9ICJmaXJtd2FyZS1pbXgtc2RtYS1pbXg2cSIKLVJSRVBMQUNFU18ke1BOfS1pbXgtc2RtYS1pbXg2cSA9ICJmaXJtd2FyZS1pbXgtc2RtYS1pbXg2cSIKLVJDT05GTElDVFNfJHtQTn0taW14LXNkbWEtaW14NnEgPSAiZmlybXdhcmUtaW14LXNkbWEtaW14NnEiCi0KLUZJTEVTXyR7UE59LWlteC1zZG1hLWlteDdkID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW14L3NkbWEvc2RtYS1pbXg3ZC5iaW4iCi0KLUZJTEVTXyR7UE59LWlteC1zZG1hLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTlNFLnNkbWFfZmlybXdhcmUiCi0KLVJERVBFTkRTXyR7UE59LWlteC1zZG1hLWlteDZxICs9ICIke1BOfS1pbXgtc2RtYS1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0taW14LXNkbWEtaW14N2QgKz0gIiR7UE59LWlteC1zZG1hLWxpY2Vuc2UiCi0KLSMgRm9yIGl3bHdpZmkKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaSAgICAgICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS0xMzUtNiAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTcgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTggICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTkgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTEwICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTEyICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTEzICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTE2ICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS0zMTYwLTE3ICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwLTQgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJhLTUgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJhLTYgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJiLTUgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDAwZzJiLTYgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDUwLTQgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS02MDUwLTUgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS03MjYwICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS03MjY1ICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS03MjY1ZCAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS04MDAwYyAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS04MjY1ICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS05MDAwICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS1taXNjICAgICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taXdsd2lmaS1saWNlbnNlICAgPSAiRmlybXdhcmUtaXdsd2lmaV9maXJtd2FyZSIKLQotCi1GSUxFU18ke1BOfS1pd2x3aWZpLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLml3bHdpZmlfZmlybXdhcmUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTEzNS02ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0xMzUtNi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC03ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0zMTYwLTcudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTMxNjAtOCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC04LnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS0zMTYwLTkgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTMxNjAtOS51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xMCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xMC51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xMiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xMi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xMyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xMy51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xNiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xNi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC0xNyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC0xNy51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktNjAwMC00ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDAwLTQudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTYwMDBnMmEtNSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNjAwMGcyYS01LnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS02MDAwZzJhLTYgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTYwMDBnMmEtNi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktNjAwMGcyYi01ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDAwZzJiLTUudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTYwMDBnMmItNiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNjAwMGcyYi02LnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS02MDUwLTQgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTYwNTAtNC51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktNjA1MC01ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDUwLTUudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTcyNjAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNzI2MC0qLnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS03MjY1ICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTcyNjUtKi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktNzI2NWQgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNzI2NUQtKi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktODAwMGMgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktODAwMEMtKi51Y29kZSIKLUZJTEVTXyR7UE59LWl3bHdpZmktODI2NSAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS04MjY1LSoudWNvZGUiCi1GSUxFU18ke1BOfS1pd2x3aWZpLTkwMDAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktOTAwMC0qLnVjb2RlIgotRklMRVNfJHtQTn0taXdsd2lmaS1taXNjICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLSoudWNvZGUiCi0KLVJERVBFTkRTXyR7UE59LWl3bHdpZmktMTM1LTYgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC03ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC04ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC05ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xMCAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xMiAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xMyAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xNiAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktMzE2MC0xNyAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMC00ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYS01ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYS02ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYi01ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNjAwMGcyYi02ID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNjA1MC00ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNjA1MC01ICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNzI2MCAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNzI2NSAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktNzI2NWQgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktODAwMGMgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktODI2NSAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktOTAwMCAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWl3bHdpZmktbWlzYyAgICAgID0gIiR7UE59LWl3bHdpZmktbGljZW5zZSIKLQotIyAtaXdsd2lmaS1taXNjIGlzIGEgImNhdGNoIGFsbCIgcGFja2FnZSB0aGF0IGluY2x1ZGVzIGFsbCB0aGUgaXdsd2lmaQotIyBmaXJtd2FyZXMgdGhhdCBhcmUgbm90IGFscmVhZHkgaW5jbHVkZWQgaW4gb3RoZXIgLWl3bHdpZmktIHBhY2thZ2VzLgotIyAtaXdsd2lmaSBpcyBhIHZpcnR1YWwgcGFja2FnZSB0aGF0IGRlcGVuZHMgdXBvbiBhbGwgaXdsd2lmaSBwYWNrYWdlcy4KLSMgVGhlc2UgYXJlIGRpc3RpbmN0IGluIG9yZGVyIHRvIGFsbG93IHRoZSAtbWlzYyBmaXJtd2FyZXMgdG8gYmUgaW5zdGFsbGVkCi0jIHdpdGhvdXQgcHVsbGluZyBpbiBldmVyeSBvdGhlciBpd2x3aWZpIHBhY2thZ2UuCi1BTExPV19FTVBUWV8ke1BOfS1pd2x3aWZpID0gIjEiCi1BTExPV19FTVBUWV8ke1BOfS1pd2x3aWZpLW1pc2MgPSAiMSIKLQotIyBIYW5kbGUgcGFja2FnZSB1cGRhdGluZyBmb3IgdGhlIG5ld2x5IG1lcmdlZCBpd2x3aWZpIGdyb3VwaW5ncwotUlBST1ZJREVTXyR7UE59LWl3bHdpZmktNzI2NSA9ICIke1BOfS1pd2x3aWZpLTcyNjUtOCAke1BOfS1pd2x3aWZpLTcyNjUtOSIKLVJSRVBMQUNFU18ke1BOfS1pd2x3aWZpLTcyNjUgPSAiJHtQTn0taXdsd2lmaS03MjY1LTggJHtQTn0taXdsd2lmaS03MjY1LTkiCi1SQ09ORkxJQ1RTXyR7UE59LWl3bHdpZmktNzI2NSA9ICIke1BOfS1pd2x3aWZpLTcyNjUtOCAke1BOfS1pd2x3aWZpLTcyNjUtOSIKLQotUlBST1ZJREVTXyR7UE59LWl3bHdpZmktNzI2MCA9ICIke1BOfS1pd2x3aWZpLTcyNjAtNyAke1BOfS1pd2x3aWZpLTcyNjAtOCAke1BOfS1pd2x3aWZpLTcyNjAtOSIKLVJSRVBMQUNFU18ke1BOfS1pd2x3aWZpLTcyNjAgPSAiJHtQTn0taXdsd2lmaS03MjYwLTcgJHtQTn0taXdsd2lmaS03MjYwLTggJHtQTn0taXdsd2lmaS03MjYwLTkiCi1SQ09ORkxJQ1RTXyR7UE59LWl3bHdpZmktNzI2MCA9ICIke1BOfS1pd2x3aWZpLTcyNjAtNyAke1BOfS1pd2x3aWZpLTcyNjAtOCAke1BOfS1pd2x3aWZpLTcyNjAtOSIKLQotIyBGb3IgaWJ0Ci1MSUNFTlNFXyR7UE59LWlidC1saWNlbnNlID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taWJ0LWh3LTM3LTcgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1pYnQtaHctMzctOCA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCi1MSUNFTlNFXyR7UE59LWlidC0xMS01ICAgID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKLUxJQ0VOU0VfJHtQTn0taWJ0LTEyLTE2ICAgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1pYnQtMTcgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgotTElDRU5TRV8ke1BOfS1pYnQtbWlzYyAgICA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCi0KLUZJTEVTXyR7UE59LWlidC1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5pYnRfZmlybXdhcmUiCi1GSUxFU18ke1BOfS1pYnQtaHctMzctNyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC1ody0zNy43Ki5ic2VxIgotRklMRVNfJHtQTn0taWJ0LWh3LTM3LTggPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtaHctMzcuOCouYnNlcSIKLUZJTEVTXyR7UE59LWlidC0xMS01ICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTExLTUuc2ZpICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTExLTUuZGRjIgotRklMRVNfJHtQTn0taWJ0LTEyLTE2ICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTItMTYuc2ZpICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTEyLTE2LmRkYyIKLUZJTEVTXyR7UE59LWlidC0xNyA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xNy0qLnNmaSAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xNy0qLmRkYyIKLUZJTEVTXyR7UE59LWlidC1taXNjICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaWJ0LSoiCi0KLVJERVBFTkRTXyR7UE59LWlidC1ody0zNy03ID0gIiR7UE59LWlidC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0taWJ0LWh3LTM3LjggPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1pYnQtMTEtNSAgICA9ICIke1BOfS1pYnQtbGljZW5zZSIKLVJERVBFTkRTXyR7UE59LWlidC0xMi0xNiAgID0gIiR7UE59LWlidC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0taWJ0LTE3ID0gIiR7UE59LWlidC1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0taWJ0LW1pc2MgICAgPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCi0KLUFMTE9XX0VNUFRZXyR7UE59LWlidD0gIjEiCi1BTExPV19FTVBUWV8ke1BOfS1pYnQtbWlzYyA9ICIxIgotCi1MSUNFTlNFXyR7UE59LWk5MTUgICAgICAgPSAiRmlybXdhcmUtaTkxNSIKLUxJQ0VOU0VfJHtQTn0taTkxNS1saWNlbnNlID0gIkZpcm13YXJlLWk5MTUiCi1GSUxFU18ke1BOfS1pOTE1LWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTlNFLmk5MTUiCi1GSUxFU18ke1BOfS1pOTE1ICAgICAgICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pOTE1IgotUkRFUEVORFNfJHtQTn0taTkxNSAgICAgID0gIiR7UE59LWk5MTUtbGljZW5zZSIKLQotRklMRVNfJHtQTn0tYWRzcC1zc3QtbGljZW5zZSAgICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5hZHNwX3NzdCIKLUxJQ0VOU0VfJHtQTn0tYWRzcC1zc3QgICAgICAgICAgICA9ICJGaXJtd2FyZS1hZHNwX3NzdCIKLUxJQ0VOU0VfJHtQTn0tYWRzcC1zc3QtbGljZW5zZSAgICA9ICJGaXJtd2FyZS1hZHNwX3NzdCIKLUZJTEVTXyR7UE59LWFkc3Atc3N0ICAgICAgICAgICAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2RzcF9mdyoiCi1SREVQRU5EU18ke1BOfS1hZHNwLXNzdCAgICAgICAgICAgPSAiJHtQTn0tYWRzcC1zc3QtbGljZW5zZSIKLQotIyBGb3IgUUFUCi1MSUNFTlNFXyR7UE59LXFhdCAgICAgICAgID0gIkZpcm13YXJlLXFhdCIKLUxJQ0VOU0VfJHtQTn0tcWF0LWxpY2Vuc2UgPSAiRmlybXdhcmUtcWF0IgotRklMRVNfJHtQTn0tcWF0LWxpY2Vuc2UgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UucWF0X2Zpcm13YXJlIgotRklMRVNfJHtQTn0tcWF0ICAgICAgICAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3FhdCouYmluIgotUkRFUEVORFNfJHtQTn0tcWF0ICAgICAgICA9ICIke1BOfS1xYXQtbGljZW5zZSIKLQotIyBGb3IgUUNPTSBWUFUvR1BVCi1MSUNFTlNFXyR7UE59LXFjb20tbGljZW5zZSA9ICJGaXJtd2FyZS1xY29tIgotRklMRVNfJHtQTn0tcWNvbS1saWNlbnNlICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTlNFLnFjb20gJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL05PVElDRS50eHQiCi1GSUxFU18ke1BOfS1xY29tLXZlbnVzLTEuOCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vdmVudXMtMS44LyoiCi1GSUxFU18ke1BOfS1xY29tLXZlbnVzLTQuMiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vdmVudXMtNC4yLyoiCi1GSUxFU18ke1BOfS1xY29tLWFkcmVuby1hM3h4ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9hMzAwXyouZncgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hMzAwXyouZnciCi1GSUxFU18ke1BOfS1xY29tLWFkcmVuby1hNTMwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9hNTMwKi4qIgotUkRFUEVORFNfJHtQTn0tcWNvbS12ZW51cy0xLjggPSAiJHtQTn0tcWNvbS1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tcWNvbS12ZW51cy00LjIgPSAiJHtQTn0tcWNvbS1saWNlbnNlIgotUkRFUEVORFNfJHtQTn0tcWNvbS1hZHJlbm8tYTN4eCA9ICIke1BOfS1xY29tLWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfS1xY29tLWFkcmVuby1hNTMwID0gIiR7UE59LXFjb20tbGljZW5zZSIKLQotRklMRVNfJHtQTn0tbGlxdWlkaW8gPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9saXF1aWRpbyIKLQotIyBGb3Igb3RoZXIgZmlybXdhcmVzCi0jIE1heWJlIHNwbGl0IG91dCB0byBzZXBhcmF0ZSBwYWNrYWdlcyB3aGVuIG5lZWRlZC4KLUxJQ0VOU0VfJHtQTn0gPSAiXAotICAgIEZpcm13YXJlLUFiaWxpcyBcCi0gICAgJiBGaXJtd2FyZS1hZ2VyZSBcCi0gICAgJiBGaXJtd2FyZS1hbWRncHUgXAotICAgICYgRmlybXdhcmUtYW1kLXVjb2RlIFwKLSAgICAmIEZpcm13YXJlLWF0bWVsIFwKLSAgICAmIEZpcm13YXJlLWNhMDEzMiBcCi0gICAgJiBGaXJtd2FyZS1jYXZpdW0gXAotICAgICYgRmlybXdhcmUtY2hlbHNpb19maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1jdzEyMDAgXAotICAgICYgRmlybXdhcmUtZGliMDcwMCBcCi0gICAgJiBGaXJtd2FyZS1lMTAwIFwKLSAgICAmIEZpcm13YXJlLWVuZV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1md19zc3RfMGYyOCBcCi0gICAgJiBGaXJtd2FyZS1nbzcwMDcgXAotICAgICYgRmlybXdhcmUtaGZpMV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1pMjQwMG0gXAotICAgICYgRmlybXdhcmUtaWJ0X2Zpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLWl0OTEzeCBcCi0gICAgJiBGaXJtd2FyZS1JbnRjU1NUMiBcCi0gICAgJiBGaXJtd2FyZS1rYXdldGggXAotICAgICYgRmlybXdhcmUtbW94YSBcCi0gICAgJiBGaXJtd2FyZS1teXJpMTBnZV9maXJtd2FyZSBcCi0gICAgJiBGaXJtd2FyZS1udmlkaWEgXAotICAgICYgRmlybXdhcmUtT0xQQyBcCi0gICAgJiBGaXJtd2FyZS1hdGg5ay1odGMgXAotICAgICYgRmlybXdhcmUtcGhhbmZ3IFwKLSAgICAmIEZpcm13YXJlLXFhdCBcCi0gICAgJiBGaXJtd2FyZS1xY29tIFwKLSAgICAmIEZpcm13YXJlLXFsYTEyODAgXAotICAgICYgRmlybXdhcmUtcWxhMnh4eCBcCi0gICAgJiBGaXJtd2FyZS1yOGE3Nzl4X3VzYjMgXAotICAgICYgRmlybXdhcmUtcmFkZW9uIFwKLSAgICAmIEZpcm13YXJlLXJhbGlua19hX21lZGlhdGVrX2NvbXBhbnlfZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtcmFsaW5rLWZpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLWlteC1zZG1hX2Zpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLXNpYW5vIFwKLSAgICAmIEZpcm13YXJlLXRkYTc3MDYtZmlybXdhcmUgXAotICAgICYgRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IFwKLSAgICAmIEZpcm13YXJlLXRpLWtleXN0b25lIFwKLSAgICAmIEZpcm13YXJlLXVlYWdsZS1hdG00LWZpcm13YXJlIFwKLSAgICAmIEZpcm13YXJlLXdsMTI1MSBcCi0gICAgJiBGaXJtd2FyZS14YzQwMDAgXAotICAgICYgRmlybXdhcmUteGM1MDAwIFwKLSAgICAmIEZpcm13YXJlLXhjNTAwMGMgXAotICAgICYgV0hFTkNFIFwKLSIKLQotRklMRVNfJHtQTn0tbGljZW5zZSArPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTioiCi1GSUxFU18ke1BOfSArPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS8qIgotUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LWxpY2Vuc2UiCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0td2hlbmNlLWxpY2Vuc2UiCi0KLSMgTWFrZSBsaW51eC1maXJtd2FyZSBkZXBlbmQgb24gYWxsIG9mIHRoZSBzcGxpdC1vdXQgcGFja2FnZXMuCi0jIE1ha2UgbGludXgtZmlybXdhcmUtaXdsd2lmaSBkZXBlbmQgb24gYWxsIG9mIHRoZSBzcGxpdC1vdXQgaXdsd2lmaSBwYWNrYWdlcy4KLSMgTWFrZSBsaW51eC1maXJtd2FyZS1pYnQgZGVwZW5kIG9uIGFsbCBvZiB0aGUgc3BsaXQtb3V0IGlidCBwYWNrYWdlcy4KLXB5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kICgpIHsKLSAgICBmaXJtd2FyZV9wa2dzID0gb2UudXRpbHMucGFja2FnZXNfZmlsdGVyX291dF9zeXN0ZW0oZCkKLSAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfbGludXgtZmlybXdhcmUnLCAnICcgKyAnICcuam9pbihmaXJtd2FyZV9wa2dzKSkKLQotICAgIGl3bHdpZmlfcGtncyA9IGZpbHRlcihsYW1iZGEgeDogeC5maW5kKCctaXdsd2lmaS0nKSAhPSAtMSwgZmlybXdhcmVfcGtncykKLSAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfbGludXgtZmlybXdhcmUtaXdsd2lmaScsICcgJyArICcgJy5qb2luKGl3bHdpZmlfcGtncykpCi0KLSAgICBpYnRfcGtncyA9IGZpbHRlcihsYW1iZGEgeDogeC5maW5kKCctaWJ0LScpICE9IC0xLCBmaXJtd2FyZV9wa2dzKQotICAgIGQuYXBwZW5kVmFyKCdSUkVDT01NRU5EU19saW51eC1maXJtd2FyZS1pYnQnLCAnICcgKyAnICcuam9pbihpYnRfcGtncykpCi19Ci0KLSMgRmlybXdhcmUgZmlsZXMgYXJlIGdlbmVyYWxseSBub3QgcmFuIG9uIHRoZSBDUFUsIHNvIHRoZXkgY2FuIGJlCi0jIGFsbGFyY2ggZGVzcGl0ZSBiZWluZyBhcmNoaXRlY3R1cmUgc3BlY2lmaWMKLUlOU0FORV9TS0lQID0gImFyY2giCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfMjAyMDAxMjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtZmlybXdhcmUvbGludXgtZmlybXdhcmVfMjAyMDAxMjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNzE3MzQwOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1maXJtd2FyZS9saW51eC1maXJtd2FyZV8yMDIwMDEyMi5iYgpAQCAtMCwwICsxLDkzNiBAQAorU1VNTUFSWSA9ICJGaXJtd2FyZSBmaWxlcyBmb3IgdXNlIHdpdGggTGludXgga2VybmVsIgorU0VDVElPTiA9ICJrZXJuZWwiCisKK0xJQ0VOU0UgPSAiXAorICAgIEZpcm13YXJlLUFiaWxpcyBcCisgICAgJiBGaXJtd2FyZS1hZHNwX3NzdCBcCisgICAgJiBGaXJtd2FyZS1hZ2VyZSBcCisgICAgJiBGaXJtd2FyZS1hbWRncHUgXAorICAgICYgRmlybXdhcmUtYW1kLXVjb2RlIFwKKyAgICAmIEZpcm13YXJlLWFtbG9naWNfdmRlYyBcCisgICAgJiBGaXJtd2FyZS1hdGhlcm9zX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLWF0bWVsIFwKKyAgICAmIEZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHggXAorICAgICYgRmlybXdhcmUtY2EwMTMyIFwKKyAgICAmIEZpcm13YXJlLWNhdml1bSBcCisgICAgJiBGaXJtd2FyZS1jaGVsc2lvX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLWN3MTIwMCBcCisgICAgJiBGaXJtd2FyZS1jeXByZXNzIFwKKyAgICAmIEZpcm13YXJlLWRpYjA3MDAgXAorICAgICYgRmlybXdhcmUtZTEwMCBcCisgICAgJiBGaXJtd2FyZS1lbmVfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtZndfc3N0XzBmMjggXAorICAgICYgRmlybXdhcmUtZ283MDA3IFwKKyAgICAmIEZpcm13YXJlLUdQTHYyIFwKKyAgICAmIEZpcm13YXJlLWhmaTFfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtaTI0MDBtIFwKKyAgICAmIEZpcm13YXJlLWk5MTUgXAorICAgICYgRmlybXdhcmUtaWJ0X2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLWl0OTEzeCBcCisgICAgJiBGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLUludGNTU1QyIFwKKyAgICAmIEZpcm13YXJlLWthd2V0aCBcCisgICAgJiBGaXJtd2FyZS1NYXJ2ZWxsIFwKKyAgICAmIEZpcm13YXJlLW1veGEgXAorICAgICYgRmlybXdhcmUtbXlyaTEwZ2VfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtbmV0cm9ub21lIFwKKyAgICAmIEZpcm13YXJlLW52aWRpYSBcCisgICAgJiBGaXJtd2FyZS1PTFBDIFwKKyAgICAmIEZpcm13YXJlLWF0aDlrLWh0YyBcCisgICAgJiBGaXJtd2FyZS1waGFuZncgXAorICAgICYgRmlybXdhcmUtcWF0IFwKKyAgICAmIEZpcm13YXJlLXFjb20gXAorICAgICYgRmlybXdhcmUtcWxhMTI4MCBcCisgICAgJiBGaXJtd2FyZS1xbGEyeHh4IFwKKyAgICAmIEZpcm13YXJlLXF1YWxjb21tQXRob3NfYXIzayBcCisgICAgJiBGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2F0aDEwayBcCisgICAgJiBGaXJtd2FyZS1yOGE3Nzl4X3VzYjMgXAorICAgICYgRmlybXdhcmUtcmFkZW9uIFwKKyAgICAmIEZpcm13YXJlLXJhbGlua19hX21lZGlhdGVrX2NvbXBhbnlfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtcmFsaW5rLWZpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtc2lhbm8gXAorICAgICYgRmlybXdhcmUtdGRhNzcwNi1maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS10aS1jb25uZWN0aXZpdHkgXAorICAgICYgRmlybXdhcmUtdGkta2V5c3RvbmUgXAorICAgICYgRmlybXdhcmUtdWVhZ2xlLWF0bTQtZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtdmlhX3Z0NjY1NiBcCisgICAgJiBGaXJtd2FyZS13bDEyNTEgXAorICAgICYgRmlybXdhcmUteGM0MDAwIFwKKyAgICAmIEZpcm13YXJlLXhjNTAwMCBcCisgICAgJiBGaXJtd2FyZS14YzUwMDBjIFwKKyAgICAmIFdIRU5DRSBcCisiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0UuQWJpbGlzO21kNT1iNWVlM2Y0MTA3ODBlNTY3MTFhZDQ4ZWFkYzIyYjhiYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmFkc3Bfc3N0O21kNT02MTVjNDViOTFhNWE0YTlmZTA0NmQ2YWI5YTJkZjcyOCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmFnZXJlO21kNT1hZjAxMzNkZTZiNGE5YjI1MjJkZWZkNWYxODhhZmQzMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLmFtZGdwdTttZDU9ZDM1NzUyNGY1MDk5ZTJhM2RiM2MxODM4OTIxYzU5M2YgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5hbWQtdWNvZGU7bWQ1PTNjNTM5OWRjOTE0OGQ3ZjBlMWY0MWUzNGI2OWNmMTRmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuYW1sb2dpY192ZGVjO21kNT1kYzQ0ZjU5YmY2NGE4MTY0M2U1MDBhZDNmMzlhNDY4YSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmF0aGVyb3NfZmlybXdhcmU7bWQ1PTMwYTE0Yzc4MjNiZWVkYWM5ZmEzOWM2NGZkZDAxYTEzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuYXRtZWw7bWQ1PWFhNzRhYzBjNjA1OTVkZWU0ZDRlMjM5MTA3ZWE3N2EzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuYnJvYWRjb21fYmNtNDN4eDttZDU9MzE2MGMxNGRmNzIyODg5MWI4NjgwNjBlMTk1MWRmYmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5jYTAxMzI7bWQ1PTIwOWIzM2U2NmVlNWJlMDQ2MWYxM2QzMWRhMzkyMTk4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuY2FkZW5jZTttZDU9MDA5ZjQ2ODE2ZjY5NTZjZmI3NWVkZTEzZDNlMWNlZTAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5jYXZpdW07bWQ1PWMzN2FhZmZiMWViZTU5MzliMjU4MGQwNzNhOTVkYWVhIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuY2hlbHNpb19maXJtd2FyZTttZDU9ODE5YWE4YzNmYTQ1M2YxYjI1OGVkOGQxNjhhOWQ5MDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5jdzEyMDA7bWQ1PWYwZjc3MDg2NGU3YTg0NDRhNWM1YWE5ZDEyYTNhN2VkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuY3lwcmVzczttZDU9NDhjZDk0MzZjNzYzYmY4NzM5NjFmOWVkN2I1YzE0N2IgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5kaWIwNzAwO21kNT1mNzQxMTgyNWM4YTU1NWExYTNlNWVhYjljYTc3MzQzMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmUxMDA7bWQ1PWVjMGY4NDEzNjc2NmRmMTU5YTNhZTZkMDJhY2RmNWE4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuZW5lX2Zpcm13YXJlO21kNT1lZDY3ZjBmNjJmOGY3OTgxMzBjMjk2NzIwYjdkMzkyMSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmZ3X3NzdF8wZjI4O21kNT02MzUzOTMxYzk4OGFkNTI4MThhZTczM2FjNjFjZDI5MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmdvNzAwNzttZDU9YzBiYjlmNmFhYWJhNTViMDUyOWVlOWIzMGFhNjZiZWIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vR1BMLTI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuaGZpMV9maXJtd2FyZTttZDU9NWU3YjZlNTg2Y2U3MzM5ZDEyNjg5ZTQ5OTMxYWQ0NDQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5pMjQwMG07bWQ1PTE0YjkwMTk2OWUyM2M0MTg4MTMyN2MwZDllNGI3ZDM2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuaTkxNTttZDU9MmIwYjJlMGQyMDk4NGFmZmQ0NDkwYmEyY2JhMDI1NzAgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5pYnRfZmlybXdhcmU7bWQ1PWZkYmVlMWRkZmUwZmI3YWIwYjJmY2Q2YjQ1NGEzNjZiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0UuaWNlO21kNT03NDJhYjQ4NTBmMjY3MDc5Mjk0MGU2ZDE1Yzk3NGIyZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLkludGNTU1QyO21kNT05ZTdkOGJlYTc3NjEyZDdjYzdkOWU5YjU0YjYyMzA2MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLml0OTEzeDttZDU9MWZiZjcyN2JmYjZhOTQ5ODEwYzRkYmZhN2U2Y2U0ZjggXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5pd2x3aWZpX2Zpcm13YXJlO21kNT0zZmQ4NDI5MTFlYTkzYzI5Y2QzMjY3OWFhMjNlMWM4OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLmthd2V0aDttZDU9YjFkODc2ZTU2MmY0YjNiOGQzOTFhZDgzOTVkZmUwM2YgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5NYXJ2ZWxsO21kNT0yOGI2ZWQ4YmQwNGJhMTA1YWY2ZTRkY2Q2ZTk5Nzc3MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLm1lZGlhdGVrO21kNT03YzE5NzZiNjMyMTdkNzZjZTQ3ZDBhMTFkOGE3OWNmMiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLm1veGE7bWQ1PTEwODY2MTQ3NjdkOGNjZjc0NGE5MjMyODlkM2Q0MjYxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UubXlyaTEwZ2VfZmlybXdhcmU7bWQ1PTQyZTMyZmI4OWY2Yjk1OWNhMjIyZTI1YWM4ZGY4ZmVkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuTmV0cm9ub21lO21kNT00YWRkMDhmMjU3NzA4NmQ0NDQ0Nzk5NjUwM2NkZGY1ZiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLm52aWRpYTttZDU9NDQyOGE5MjJlZDNiYTJjZWVjOTVmMDc2YTQ4OGNlMDcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5OWFA7bWQ1PTU4YmI4YmE2MzJjZDcyOWI5YmE2MTgzYmM2YWVkMzZmIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UuT0xQQzttZDU9NWI5MTdmOWQ4YzA2MTk5MWJlNGY2ZjVmMTA4NzE5Y2QgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5vcGVuLWF0aDlrLWh0Yy1maXJtd2FyZTttZDU9MWIzM2M5ZjRkMTdiYzRkNDU3YmRiMjM3MjcwNDY4MzcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5waGFuZnc7bWQ1PTk1NGRjZWMwZTA1MWY5NDA5ODEyYjU2MWVhNzQzYmZhIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucWF0X2Zpcm13YXJlO21kNT05ZTdkOGJlYTc3NjEyZDdjYzdkOWU5YjU0YjYyMzA2MiBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLnFjb207bWQ1PTE2NGUzMzYyYTUzOGViMTFkM2FjNTFlOGUxMzQyOTRiIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucWxhMTI4MDttZDU9ZDY4OTU3MzJlNjIyZDk1MDYwOTA5MzIyM2EyYzRmNWQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5xbGEyeHh4O21kNT01MDU4NTVlOTIxYjc1ZjFiZTRhNDM3YWQ5Yjc5ZGZmMCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hcjNrO21kNT1iNWZlMjQ0ZmIyYjUzMjMxMWRlMTQ3MmEzYmMwNmRhNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hdGgxMGs7bWQ1PWNiNDJiNjg2ZWU1ZjVjYjg5MDI3NWU0MzIxZGI2MGE4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucjhhNzc5eF91c2IzO21kNT00YzE2NzE2NTYxNTMwMjVkNzA3NjEwNWE1ZGE3ZTQ5OCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLnJhZGVvbjttZDU9NjhlYzI4YmFjYjM2MTMyMDBiY2E0NGY0MDRjNjliMTYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlO21kNT03MjhmMWE4NWZkNTNmZDY3ZmE4ZDdhZmIwODBiYzQzNSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnJhbGluay1maXJtd2FyZS50eHQ7bWQ1PWFiMmMyNjkyNzdjNDU0NzZmYjQ0OTY3MzkxMWEyZGZkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UucnRsd2lmaV9maXJtd2FyZS50eHQ7bWQ1PTAwZDA2Y2ZkM2VkZGQ1YTI2OTg5NDhlYWQyYWQ1NGE1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0Uuc2RtYV9maXJtd2FyZTttZDU9NTFlOGMxOWVjYzIyNzBmNGI4ZWEzMDM0MWFkNjNjZTkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS5zaWFubzttZDU9NDU1NmMxYmY4MzAwNjdmMTJjYTE1MWFkOTUzZWMyYTUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS50ZGE3NzA2LWZpcm13YXJlLnR4dDttZDU9ODM1OTk3Y2Y1ZTNjMTMxZDBkZGRkNjk1YzdkOTEwM2UgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS50aS1jb25uZWN0aXZpdHk7bWQ1PWM1ZTAyYmU2MzNmMTQ5OWMxMDlkMTY1MjUxNGQ4NWVjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudGkta2V5c3RvbmU7bWQ1PTNhODYzMzVkMzI4NjRiMGJlZjk5NmJlZTI2Y2MwZjJjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudWVhZ2xlLWF0bTQtZmlybXdhcmU7bWQ1PTRlZDdlYTZiNTA3Y2NjNTgzYjlkNTk0NDE3NzE0MTE4IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UudmlhX3Z0NjY1NjttZDU9ZTQxNTk2OTRjYmE0MmQ0Mzc3YTkxMmU3OGE2ZTg1MGYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS53bDEyNTE7bWQ1PWFkM2Y4MTkyMmJiOWUxOTcwMTRiYjE4NzI4OWQzYjViIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOQ0UueGM0MDAwO21kNT0wZmY1MWQyZGM0OWZjZTA0ODE0YzkxNTUwODEwOTJmMCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTkNFLnhjNTAwMDttZDU9MWUxNzBjMTMxNzUzMjNjMzJjN2Y0ZDA5OThkNTNmNjYgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5DRS54YzUwMDBjO21kNT0xMmIwMmVmYTMwNDlkYjY1ZDUyNGFlYjQxOGRkODdjYSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9XSEVOQ0U7bWQ1PWMyN2QwYzA2Y2Q1ZDM3NmQ4YWI1NTg2MGU2NWJhNGU0IFwKKyAgICAgICAgICAgICAgICAgICAgIgorCisjIFRoZXNlIGFyZSBub3QgY29tbW9uIGxpY2Vuc2VzLCBzZXQgTk9fR0VORVJJQ19MSUNFTlNFIGZvciB0aGVtCisjIHNvIHRoYXQgdGhlIGxpY2Vuc2UgZmlsZXMgd2lsbCBiZSBjb3BpZWQgZnJvbSBmZXRjaGVkIHNvdXJjZQorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLUFiaWxpc10gPSAiTElDRU5DRS5BYmlsaXMiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYWRzcF9zc3RdID0gIkxJQ0VOQ0UuYWRzcF9zc3QiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYWdlcmVdID0gIkxJQ0VOQ0UuYWdlcmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYW1kZ3B1XSA9ICJMSUNFTlNFLmFtZGdwdSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1hbWQtdWNvZGVdID0gIkxJQ0VOU0UuYW1kLXVjb2RlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWFtbG9naWNfdmRlY10gPSAiTElDRU5TRS5hbWxvZ2ljX3ZkZWMiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZV0gPSAiTElDRU5DRS5hdGhlcm9zX2Zpcm13YXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWF0bWVsXSA9ICJMSUNFTlNFLmF0bWVsIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWJyb2FkY29tX2JjbTQzeHhdID0gIkxJQ0VOQ0UuYnJvYWRjb21fYmNtNDN4eCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jYTAxMzJdID0gIkxJQ0VOQ0UuY2EwMTMyIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWNhZGVuY2VdID0gIkxJQ0VOQ0UuY2FkZW5jZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jYXZpdW1dID0gIkxJQ0VOQ0UuY2F2aXVtIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWNoZWxzaW9fZmlybXdhcmVdID0gIkxJQ0VOQ0UuY2hlbHNpb19maXJtd2FyZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1jdzEyMDBdID0gIkxJQ0VOQ0UuY3cxMjAwIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWN5cHJlc3NdID0gIkxJQ0VOQ0UuY3lwcmVzcyIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1kaWIwNzAwXSA9ICJMSUNFTlNFLmRpYjA3MDAiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtZTEwMF0gPSAiTElDRU5DRS5lMTAwIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWVuZV9maXJtd2FyZV0gPSAiTElDRU5DRS5lbmVfZmlybXdhcmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtZndfc3N0XzBmMjhdID0gIkxJQ0VOQ0UuZndfc3N0XzBmMjgiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtZ283MDA3XSA9ICJMSUNFTkNFLmdvNzAwNyIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1HUEx2Ml0gPSAiR1BMLTIiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaGZpMV9maXJtd2FyZV0gPSAiTElDRU5TRS5oZmkxX2Zpcm13YXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWkyNDAwbV0gPSAiTElDRU5DRS5pMjQwMG0iCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaTkxNV0gPSAiTElDRU5TRS5pOTE1IgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLWlidF9maXJtd2FyZV0gPSAiTElDRU5DRS5pYnRfZmlybXdhcmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtSW50Y1NTVDJdID0gIkxJQ0VOQ0UuSW50Y1NTVDIiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaXQ5MTN4XSA9ICJMSUNFTkNFLml0OTEzeCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlXSA9ICJMSUNFTkNFLml3bHdpZmlfZmlybXdhcmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUta2F3ZXRoXSA9ICJMSUNFTkNFLmthd2V0aCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1NYXJ2ZWxsXSA9ICJMSUNFTkNFLk1hcnZlbGwiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtbWVkaWF0ZWtdID0gIkxJQ0VOQ0UubWVkaWF0ZWsiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtbW94YV0gPSAiTElDRU5DRS5tb3hhIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW15cmkxMGdlX2Zpcm13YXJlXSA9ICJMSUNFTkNFLm15cmkxMGdlX2Zpcm13YXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLW5ldHJvbm9tZV0gPSAiTElDRU5DRS5OZXRyb25vbWUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtbnZpZGlhXSA9ICJMSUNFTkNFLm52aWRpYSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1PTFBDXSA9ICJMSUNFTkNFLk9MUEMiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtYXRoOWstaHRjXSA9ICJMSUNFTkNFLm9wZW4tYXRoOWstaHRjLWZpcm13YXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXBoYW5md10gPSAiTElDRU5DRS5waGFuZnciCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcWF0XSA9ICJMSUNFTkNFLnFhdF9maXJtd2FyZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1xY29tXSA9ICJMSUNFTlNFLnFjb20iCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcWxhMTI4MF0gPSAiTElDRU5DRS5xbGExMjgwIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXFsYTJ4eHhdID0gIkxJQ0VOQ0UucWxhMnh4eCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2FyM2tdID0gIkxJQ0VOU0UuUXVhbGNvbW1BdGhlcm9zX2FyM2siCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hdGgxMGtdID0gIkxJQ0VOU0UuUXVhbGNvbW1BdGhlcm9zX2F0aDEwayIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS1yOGE3Nzl4X3VzYjNdID0gIkxJQ0VOQ0UucjhhNzc5eF91c2IzIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXJhZGVvbl0gPSAiTElDRU5TRS5yYWRlb24iCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtcmFsaW5rX2FfbWVkaWF0ZWtfY29tcGFueV9maXJtd2FyZV0gPSAiTElDRU5DRS5yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXJhbGluay1maXJtd2FyZV0gPSAiTElDRU5DRS5yYWxpbmstZmlybXdhcmUudHh0IgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmVdID0gIkxJQ0VOQ0UucnRsd2lmaV9maXJtd2FyZS50eHQiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtc2lhbm9dID0gIkxJQ0VOQ0Uuc2lhbm8iCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtaW14LXNkbWFfZmlybXdhcmVdID0gIkxJQ0VOU0Uuc2RtYV9maXJtd2FyZSIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS10ZGE3NzA2LWZpcm13YXJlXSA9ICJMSUNFTkNFLnRkYTc3MDYtZmlybXdhcmUudHh0IgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXRpLWNvbm5lY3Rpdml0eV0gPSAiTElDRU5DRS50aS1jb25uZWN0aXZpdHkiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtdGkta2V5c3RvbmVdID0gIkxJQ0VOQ0UudGkta2V5c3RvbmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtdWVhZ2xlLWF0bTQtZmlybXdhcmVdID0gIkxJQ0VOQ0UudWVhZ2xlLWF0bTQtZmlybXdhcmUiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUtdmlhX3Z0NjY1Nl0gPSAiTElDRU5DRS52aWFfdnQ2NjU2IgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXdsMTI1MV0gPSAiTElDRU5DRS53bDEyNTEiCitOT19HRU5FUklDX0xJQ0VOU0VbRmlybXdhcmUteGM0MDAwXSA9ICJMSUNFTkNFLnhjNDAwMCIKK05PX0dFTkVSSUNfTElDRU5TRVtGaXJtd2FyZS14YzUwMDBdID0gIkxJQ0VOQ0UueGM1MDAwIgorTk9fR0VORVJJQ19MSUNFTlNFW0Zpcm13YXJlLXhjNTAwMGNdID0gIkxJQ0VOQ0UueGM1MDAwYyIKK05PX0dFTkVSSUNfTElDRU5TRVtXSEVOQ0VdID0gIldIRU5DRSIKKworUEUgPSAiMSIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2tlcm5lbC9maXJtd2FyZS8ke0JQTn0tJHtQVn0udGFyLnh6IgorCitTUkNfVVJJW21kNXN1bV0gPSAiYWMyOTFiMjFmMzY2YWUyYTM3MTkzZWM4ZjE0YzM5ZDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYTMwZTgxMWIzNzM2YTcyYjg3NGFjMjdlMTA2NjJmNWU1NDA5YjFjYWRmOGFhYjdiYTg4ZThmOGJjODA4Mzk4NiIKKworaW5oZXJpdCBhbGxhcmNoCisKK0NMRUFOQlJPS0VOID0gIjEiCisKK2RvX2NvbXBpbGUoKSB7CisJOgorfQorCitkb19pbnN0YWxsKCkgeworICAgICAgICBvZV9ydW5tYWtlICdERVNURElSPSR7RH0nICdGSVJNV0FSRURJUj0ke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlJyBpbnN0YWxsCisgICAgICAgIGNwIEdQTC0yIExJQ0VOW0NTXUUuKiBXSEVOQ0UgJHtEfSR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvCit9CisKKworUEFDS0FHRVMgPSsgIiR7UE59LXJhbGluay1saWNlbnNlICR7UE59LXJhbGluayBcCisgICAgICAgICAgICAgJHtQTn0tbXQ3NjAxdS1saWNlbnNlICR7UE59LW10NzYwMXUgXAorICAgICAgICAgICAgICR7UE59LXJhZGVvbi1saWNlbnNlICR7UE59LXJhZGVvbiBcCisgICAgICAgICAgICAgJHtQTn0tbWFydmVsbC1saWNlbnNlICR7UE59LXBjaWU4ODk3ICR7UE59LXBjaWU4OTk3IFwKKyAgICAgICAgICAgICAke1BOfS1zZDg2ODYgJHtQTn0tc2Q4Njg4ICR7UE59LXNkODc4NyAke1BOfS1zZDg3OTcgJHtQTn0tc2Q4ODAxICR7UE59LXNkODg4NyAke1BOfS1zZDg4OTcgXAorICAgICAgICAgICAgICR7UE59LXVzYjg5OTcgXAorICAgICAgICAgICAgICR7UE59LXRpLWNvbm5lY3Rpdml0eS1saWNlbnNlICR7UE59LXdsY29tbW9uICR7UE59LXdsMTJ4eCAke1BOfS13bDE4eHggXAorICAgICAgICAgICAgICR7UE59LXZ0NjY1Ni1saWNlbnNlICR7UE59LXZ0NjY1NiBcCisgICAgICAgICAgICAgJHtQTn0tcnRsLWxpY2Vuc2UgJHtQTn0tcnRsODE4OCAke1BOfS1ydGw4MTkyY3UgJHtQTn0tcnRsODE5MmNlICR7UE59LXJ0bDgxOTJzdSAke1BOfS1ydGw4NzIzICR7UE59LXJ0bDg4MjEgXAorICAgICAgICAgICAgICR7UE59LXJ0bDgxNjggXAorICAgICAgICAgICAgICR7UE59LWN5cHJlc3MtbGljZW5zZSBcCisgICAgICAgICAgICAgJHtQTn0tYnJvYWRjb20tbGljZW5zZSBcCisgICAgICAgICAgICAgJHtQTn0tYmNtLTBiYjQtMDMwNiBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMxNDMgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMjM2YiBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMyNDFiMCBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMyNDFiNCBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMyNDFiNSBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMyNDJhIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzI5IFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzI5LWZ1bGxtYWMgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMzAgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMzQgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzMzQwIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzM1IFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzM2MiBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDMzOSBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDM0MzAgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNDMwYTAgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNDU1IFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzUwIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzUwYzIgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNTQgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNTYgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNTYtcGNpZSBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDM1NjkgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNTcwIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzU4IFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzYwMiBcCisgICAgICAgICAgICAgJHtQTn0tYmNtNDM2NmIgXAorICAgICAgICAgICAgICR7UE59LWJjbTQzNjZjIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzcxIFwKKyAgICAgICAgICAgICAke1BOfS1iY200MzczIFwKKyAgICAgICAgICAgICAke1BOfS1iY200M3h4IFwKKyAgICAgICAgICAgICAke1BOfS1iY200M3h4LWhkciBcCisgICAgICAgICAgICAgJHtQTn0tYXRoZXJvcy1saWNlbnNlICR7UE59LWFyOTE3MCAke1BOfS1hdGg2ayAke1BOfS1hdGg5ayBcCisgICAgICAgICAgICAgJHtQTn0tZ3BsdjItbGljZW5zZSAke1BOfS1jYXJsOTE3MCBcCisgICAgICAgICAgICAgJHtQTn0tYXIzay1saWNlbnNlICR7UE59LWFyM2sgJHtQTn0tYXRoMTBrLWxpY2Vuc2UgJHtQTn0tYXRoMTBrICR7UE59LXFjYSBcCisgICAgICAgICAgICAgXAorICAgICAgICAgICAgICR7UE59LWlteC1zZG1hLWxpY2Vuc2UgJHtQTn0taW14LXNkbWEtaW14NnEgJHtQTn0taW14LXNkbWEtaW14N2QgXAorICAgICAgICAgICAgIFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLWxpY2Vuc2UgJHtQTn0taXdsd2lmaSBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS0xMzUtNiBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS0zMTYwLTcgJHtQTn0taXdsd2lmaS0zMTYwLTggJHtQTn0taXdsd2lmaS0zMTYwLTkgXAorICAgICAgICAgICAgICR7UE59LWl3bHdpZmktMzE2MC0xMCAke1BOfS1pd2x3aWZpLTMxNjAtMTIgJHtQTn0taXdsd2lmaS0zMTYwLTEzIFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTMxNjAtMTYgJHtQTn0taXdsd2lmaS0zMTYwLTE3IFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTYwMDAtNCAke1BOfS1pd2x3aWZpLTYwMDBnMmEtNSAke1BOfS1pd2x3aWZpLTYwMDBnMmEtNiBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS02MDAwZzJiLTUgJHtQTn0taXdsd2lmaS02MDAwZzJiLTYgXAorICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNjA1MC00ICR7UE59LWl3bHdpZmktNjA1MC01IFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLTcyNjAgXAorICAgICAgICAgICAgICR7UE59LWl3bHdpZmktNzI2NSBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS03MjY1ZCAke1BOfS1pd2x3aWZpLTgwMDBjICR7UE59LWl3bHdpZmktODI2NSBcCisgICAgICAgICAgICAgJHtQTn0taXdsd2lmaS05MDAwIFwKKyAgICAgICAgICAgICAke1BOfS1pd2x3aWZpLW1pc2MgXAorICAgICAgICAgICAgICR7UE59LWlidC1saWNlbnNlICR7UE59LWlidCAke1BOfS1pYnQtbWlzYyBcCisgICAgICAgICAgICAgJHtQTn0taWJ0LTExLTUgJHtQTn0taWJ0LTEyLTE2ICR7UE59LWlidC1ody0zNy03ICR7UE59LWlidC1ody0zNy04IFwKKyAgICAgICAgICAgICAke1BOfS1pYnQtMTcgXAorICAgICAgICAgICAgICR7UE59LWk5MTUtbGljZW5zZSAke1BOfS1pOTE1IFwKKyAgICAgICAgICAgICAke1BOfS1hZHNwLXNzdC1saWNlbnNlICR7UE59LWFkc3Atc3N0IFwKKyAgICAgICAgICAgICAke1BOfS1ibngyLW1pcHMgXAorICAgICAgICAgICAgICR7UE59LWxpcXVpZGlvIFwKKyAgICAgICAgICAgICAke1BOfS1uZXRyb25vbWUtbGljZW5zZSAke1BOfS1uZXRyb25vbWUgXAorICAgICAgICAgICAgICR7UE59LXFhdCAke1BOfS1xYXQtbGljZW5zZSBcCisgICAgICAgICAgICAgJHtQTn0tcWNvbS1saWNlbnNlIFwKKyAgICAgICAgICAgICAke1BOfS1xY29tLXZlbnVzLTEuOCAke1BOfS1xY29tLXZlbnVzLTQuMiBcCisgICAgICAgICAgICAgJHtQTn0tcWNvbS1hZHJlbm8tYTN4eCAke1BOfS1xY29tLWFkcmVuby1hNTMwIFwKKyAgICAgICAgICAgICAke1BOfS1xY29tLXNkbTg0NS1hdWRpbyAke1BOfS1xY29tLXNkbTg0NS1jb21wdXRlICR7UE59LXFjb20tc2RtODQ1LW1vZGVtIFwKKyAgICAgICAgICAgICAke1BOfS13aGVuY2UtbGljZW5zZSBcCisgICAgICAgICAgICAgJHtQTn0tbGljZW5zZSBcCisgICAgICAgICAgICAgIgorCisjIEZvciBhdGhlcm9zCitMSUNFTlNFXyR7UE59LWFyOTE3MCA9ICJGaXJtd2FyZS1hdGhlcm9zX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1hdGg2ayA9ICJGaXJtd2FyZS1hdGhlcm9zX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1hdGg5ayA9ICJGaXJtd2FyZS1hdGhlcm9zX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1hdGhlcm9zLWxpY2Vuc2UgPSAiRmlybXdhcmUtYXRoZXJvc19maXJtd2FyZSIKKworRklMRVNfJHtQTn0tYXRoZXJvcy1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5hdGhlcm9zX2Zpcm13YXJlIgorRklMRVNfJHtQTn0tYXI5MTcwID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXI5MTcwKi5mdyBcCisiCitGSUxFU18ke1BOfS1hdGg2ayA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2F0aDZrIFwKKyIKK0ZJTEVTXyR7UE59LWF0aDlrID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXI5MjcxLmZ3IFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hcjcwMTAqLmZ3IFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9odGNfOTI3MS5mdyBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaHRjXzcwMTAuZncgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2F0aDlrX2h0Yy9odGNfNzAxMC0xLjQuMC5mdyBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYXRoOWtfaHRjL2h0Y185MjcxLTEuNC4wLmZ3IFwKKyIKKworUkRFUEVORFNfJHtQTn0tYXI5MTcwICs9ICIke1BOfS1hdGhlcm9zLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1hdGg2ayArPSAiJHtQTn0tYXRoZXJvcy1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tYXRoOWsgKz0gIiR7UE59LWF0aGVyb3MtbGljZW5zZSIKKworIyBGb3IgY2FybDkxNzAKK0xJQ0VOU0VfJHtQTn0tY2FybDkxNzAgPSAiRmlybXdhcmUtR1BMdjIiCitMSUNFTlNFXyR7UE59LWdwbHYyLWxpY2Vuc2UgPSAiRmlybXdhcmUtR1BMdjIiCisKK0ZJTEVTXyR7UE59LWdwbHYyLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9HUEwtMiIKK0ZJTEVTXyR7UE59LWNhcmw5MTcwID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvY2FybDkxNzAqLmZ3IFwKKyIKKworUkRFUEVORFNfJHtQTn0tY2FybDkxNzAgKz0gIiR7UE59LWdwbHYyLWxpY2Vuc2UiCisKKyMgRm9yIFF1YWxDb21tQXRob3MKK0xJQ0VOU0VfJHtQTn0tYXIzayA9ICJGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2FyM2siCitMSUNFTlNFXyR7UE59LWFyM2stbGljZW5zZSA9ICJGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2FyM2siCitMSUNFTlNFXyR7UE59LWF0aDEwayA9ICJGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2F0aDEwayIKK0xJQ0VOU0VfJHtQTn0tYXRoMTBrLWxpY2Vuc2UgPSAiRmlybXdhcmUtcXVhbGNvbW1BdGhvc19hdGgxMGsiCitMSUNFTlNFXyR7UE59LXFjYSA9ICJGaXJtd2FyZS1xdWFsY29tbUF0aG9zX2F0aDEwayIKKworRklMRVNfJHtQTn0tYXIzay1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5RdWFsY29tbUF0aGVyb3NfYXIzayIKK0ZJTEVTXyR7UE59LWFyM2sgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hcjNrIFwKKyIKKworRklMRVNfJHtQTn0tYXRoMTBrLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTlNFLlF1YWxjb21tQXRoZXJvc19hdGgxMGsiCitGSUxFU18ke1BOfS1hdGgxMGsgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9hdGgxMGsgXAorIgorCitGSUxFU18ke1BOfS1xY2EgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY2EgXAorIgorCitSREVQRU5EU18ke1BOfS1hcjNrICs9ICIke1BOfS1hcjNrLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1hdGgxMGsgKz0gIiR7UE59LWF0aDEway1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcWNhICs9ICIke1BOfS1hdGgxMGstbGljZW5zZSIKKworIyBGb3IgcmFsaW5rCitMSUNFTlNFXyR7UE59LXJhbGluayA9ICJGaXJtd2FyZS1yYWxpbmstZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LXJhbGluay1saWNlbnNlID0gIkZpcm13YXJlLXJhbGluay1maXJtd2FyZSIKKworRklMRVNfJHtQTn0tcmFsaW5rLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLnJhbGluay1maXJtd2FyZS50eHQiCitGSUxFU18ke1BOfS1yYWxpbmsgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydCouYmluIFwKKyIKKworUkRFUEVORFNfJHtQTn0tcmFsaW5rICs9ICIke1BOfS1yYWxpbmstbGljZW5zZSIKKworIyBGb3IgbWVkaWF0ZWsgTVQ3NjAxVQorTElDRU5TRV8ke1BOfS1tdDc2MDF1ID0gIkZpcm13YXJlLXJhbGlua19hX21lZGlhdGVrX2NvbXBhbnlfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LW10NzYwMXUtbGljZW5zZSA9ICJGaXJtd2FyZS1yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIgorCitGSUxFU18ke1BOfS1tdDc2MDF1LWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLnJhbGlua19hX21lZGlhdGVrX2NvbXBhbnlfZmlybXdhcmUiCitGSUxFU18ke1BOfS1tdDc2MDF1ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXQ3NjAxdS5iaW4gXAorIgorCitSREVQRU5EU18ke1BOfS1tdDc2MDF1ICs9ICIke1BOfS1tdDc2MDF1LWxpY2Vuc2UiCisKKyMgRm9yIHJhZGVvbgorTElDRU5TRV8ke1BOfS1yYWRlb24gPSAiRmlybXdhcmUtcmFkZW9uIgorTElDRU5TRV8ke1BOfS1yYWRlb24tbGljZW5zZSA9ICJGaXJtd2FyZS1yYWRlb24iCisKK0ZJTEVTXyR7UE59LXJhZGVvbi1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5yYWRlb24iCitGSUxFU18ke1BOfS1yYWRlb24gPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9yYWRlb24gXAorIgorCitSREVQRU5EU18ke1BOfS1yYWRlb24gKz0gIiR7UE59LXJhZGVvbi1saWNlbnNlIgorCisjIEZvciBtYXJ2ZWxsCitMSUNFTlNFXyR7UE59LXBjaWU4ODk3ID0gIkZpcm13YXJlLU1hcnZlbGwiCitMSUNFTlNFXyR7UE59LXBjaWU4OTk3ID0gIkZpcm13YXJlLU1hcnZlbGwiCitMSUNFTlNFXyR7UE59LXNkODY4NiA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorTElDRU5TRV8ke1BOfS1zZDg2ODggPSAiRmlybXdhcmUtTWFydmVsbCIKK0xJQ0VOU0VfJHtQTn0tc2Q4Nzg3ID0gIkZpcm13YXJlLU1hcnZlbGwiCitMSUNFTlNFXyR7UE59LXNkODc5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorTElDRU5TRV8ke1BOfS1zZDg4MDEgPSAiRmlybXdhcmUtTWFydmVsbCIKK0xJQ0VOU0VfJHtQTn0tc2Q4ODg3ID0gIkZpcm13YXJlLU1hcnZlbGwiCitMSUNFTlNFXyR7UE59LXNkODg5NyA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorTElDRU5TRV8ke1BOfS11c2I4OTk3ID0gIkZpcm13YXJlLU1hcnZlbGwiCitMSUNFTlNFXyR7UE59LW1hcnZlbGwtbGljZW5zZSA9ICJGaXJtd2FyZS1NYXJ2ZWxsIgorCitGSUxFU18ke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLk1hcnZlbGwiCitGSUxFU18ke1BOfS1wY2llODg5NyA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvcGNpZTg4OTdfdWFwc3RhLmJpbiBcCisiCitGSUxFU18ke1BOfS1wY2llODk5NyA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvcGNpZTg5OTdfd2xhbl92NC5iaW4gXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvcGNpZXVhcnQ4OTk3X2NvbWJvX3Y0LmJpbiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9wY2lldXNiODk5N19jb21ib192NC5iaW4gXAorIgorRklMRVNfJHtQTn0tc2Q4Njg2ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbGliZXJ0YXMvc2Q4Njg2X3Y5KiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvc2Q4Njg2KiBcCisiCitGSUxFU18ke1BOfS1zZDg2ODggPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9saWJlcnRhcy9zZDg2ODgqIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3NkODY4OCogXAorIgorRklMRVNfJHtQTn0tc2Q4Nzg3ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg3ODdfdWFwc3RhLmJpbiBcCisiCitGSUxFU18ke1BOfS1zZDg3OTcgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3NkODc5N191YXBzdGEuYmluIFwKKyIKK0ZJTEVTXyR7UE59LXNkODgwMSA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL21ydmwvc2Q4ODAxX3VhcHN0YS5iaW4gXAorIgorRklMRVNfJHtQTn0tc2Q4ODg3ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbXJ2bC9zZDg4ODdfdWFwc3RhLmJpbiBcCisiCitGSUxFU18ke1BOfS1zZDg4OTcgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3NkODg5N191YXBzdGEuYmluIFwKKyIKK0ZJTEVTXyR7UE59LXVzYjg5OTcgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9tcnZsL3VzYnVzYjg5OTdfY29tYm9fdjQuYmluIFwKKyIKKworUkRFUEVORFNfJHtQTn0tc2Q4Njg2ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1zZDg2ODggKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXNkODc4NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tc2Q4Nzk3ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1zZDg4MDEgKz0gIiR7UE59LW1hcnZlbGwtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXNkODg4NyArPSAiJHtQTn0tbWFydmVsbC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tc2Q4ODk3ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS11c2I4OTk3ICs9ICIke1BOfS1tYXJ2ZWxsLWxpY2Vuc2UiCisKKyMgRm9yIG5ldHJvbm9tZQorTElDRU5TRV8ke1BOfS1uZXRyb25vbWUgPSAiRmlybXdhcmUtbmV0cm9ub21lIgorCitGSUxFU18ke1BOfS1uZXRyb25vbWUtbGljZW5zZSA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuTmV0cm9ub21lIFwKKyIKK0ZJTEVTXyR7UE59LW5ldHJvbm9tZSA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL25ldHJvbm9tZS9uaWNfQU1EQTAwODEqLm5mZncgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL25ldHJvbm9tZS9uaWNfQU1EQTAwOTYqLm5mZncgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL25ldHJvbm9tZS9uaWNfQU1EQTAwOTcqLm5mZncgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL25ldHJvbm9tZS9uaWNfQU1EQTAwOTkqLm5mZncgXAorIgorCitSREVQRU5EU18ke1BOfS1uZXRyb25vbWUgKz0gIiR7UE59LW5ldHJvbm9tZS1saWNlbnNlIgorCisjIEZvciBydGwKK0xJQ0VOU0VfJHtQTn0tcnRsODE4OCA9ICJGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1ydGw4MTkyY3UgPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0tcnRsODE5MmNlID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LXJ0bDgxOTJzdSA9ICJGaXJtd2FyZS1ydGx3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1ydGw4NzIzID0gIkZpcm13YXJlLXJ0bHdpZmlfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LXJ0bDg4MjEgPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0tcnRsLWxpY2Vuc2UgPSAiRmlybXdhcmUtcnRsd2lmaV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0tcnRsODE2OCA9ICJXSEVOQ0UiCisKK0ZJTEVTXyR7UE59LXJ0bC1saWNlbnNlID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5ydGx3aWZpX2Zpcm13YXJlLnR4dCBcCisiCitGSUxFU18ke1BOfS1ydGw4MTg4ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnRsd2lmaS9ydGw4MTg4Ki5iaW4gXAorIgorRklMRVNfJHtQTn0tcnRsODE5MmN1ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnRsd2lmaS9ydGw4MTkyY3VmdyouYmluIFwKKyIKK0ZJTEVTXyR7UE59LXJ0bDgxOTJjZSA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODE5MmNmdyouYmluIFwKKyIKK0ZJTEVTXyR7UE59LXJ0bDgxOTJzdSA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bHdpZmkvcnRsODcxMnUuYmluIFwKKyIKK0ZJTEVTXyR7UE59LXJ0bDg3MjMgPSAiIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9ydGx3aWZpL3J0bDg3MjMqLmJpbiBcCisiCitGSUxFU18ke1BOfS1ydGw4ODIxID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcnRsd2lmaS9ydGw4ODIxKi5iaW4gXAorIgorRklMRVNfJHtQTn0tcnRsODE2OCA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3J0bF9uaWMvcnRsODE2OCouZncgXAorIgorCitSREVQRU5EU18ke1BOfS1ydGw4MTg4ICs9ICIke1BOfS1ydGwtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXJ0bDgxOTJjZSArPSAiJHtQTn0tcnRsLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1ydGw4MTkyY3UgKz0gIiR7UE59LXJ0bC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcnRsODE5MnN1ID0gIiR7UE59LXJ0bC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcnRsODcyMyArPSAiJHtQTn0tcnRsLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1ydGw4ODIxICs9ICIke1BOfS1ydGwtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXJ0bDgxNjggKz0gIiR7UE59LXdoZW5jZS1saWNlbnNlIgorCisjIEZvciB0aS1jb25uZWN0aXZpdHkKK0xJQ0VOU0VfJHtQTn0td2xjb21tb24gPSAiRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IgorTElDRU5TRV8ke1BOfS13bDEyeHggPSAiRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IgorTElDRU5TRV8ke1BOfS13bDE4eHggPSAiRmlybXdhcmUtdGktY29ubmVjdGl2aXR5IgorTElDRU5TRV8ke1BOfS10aS1jb25uZWN0aXZpdHktbGljZW5zZSA9ICJGaXJtd2FyZS10aS1jb25uZWN0aXZpdHkiCisKK0ZJTEVTXyR7UE59LXRpLWNvbm5lY3Rpdml0eS1saWNlbnNlID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS50aS1jb25uZWN0aXZpdHkiCisjIHdsMTh4eCBvcHRpb25hbGx5IG5lZWRzIHdsMTI3MS1udnMuYmluICh3aGljaCBpdHNlbGYgaXMgYSBzeW1saW5rIHRvCisjIHdsMTI3eC1udnMuYmluKSAtIHNlZSBsaW51eC9kcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvc2Rpby5jCisjIGFuZCBkcml2ZXJzL25ldC93aXJlbGVzcy90aS93bGNvcmUvc3BpLmMuCisjIFdoaWxlIHRoZXkncmUgb3B0aW9uYWwgYW5kIGFjdHVhbGx5IG9ubHkgdXNlZCB0byBvdmVycmlkZSB0aGUgTUFDCisjIGFkZHJlc3Mgb24gd2wxOHh4LCBkcml2ZXIgbG9hZGluZyB3aWxsIGRlbGF5IChieSB1ZGV2IHRpbW91dCAtIDYwcykKKyMgaWYgbm90IHRoZXJlLiBTbyBsZXQncyBtYWtlIGl0IGF2YWlsYWJsZSBhbHdheXMuIEJlY2F1c2UgaXQncyBhCisjIHN5bWxpbmssIGJvdGggbmVlZCB0byBnbyB0byB3bGNvbW1vbi4KK0ZJTEVTXyR7UE59LXdsY29tbW9uID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvdGktY29ubmVjdGl2aXR5L1RJKiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvdGktY29ubmVjdGl2aXR5L3dsMTI3eC1udnMuYmluIFwKKyAgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS90aS1jb25uZWN0aXZpdHkvd2wxMjcxLW52cy5iaW4gXAorIgorRklMRVNfJHtQTn0td2wxMnh4ID0gIiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvdGktY29ubmVjdGl2aXR5L3dsMTIqIFwKKyIKK0ZJTEVTXyR7UE59LXdsMTh4eCA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3RpLWNvbm5lY3Rpdml0eS93bDE4KiBcCisiCisKK1JERVBFTkRTXyR7UE59LXdsMTJ4eCA9ICIke1BOfS10aS1jb25uZWN0aXZpdHktbGljZW5zZSAke1BOfS13bGNvbW1vbiIKK1JERVBFTkRTXyR7UE59LXdsMTh4eCA9ICIke1BOfS10aS1jb25uZWN0aXZpdHktbGljZW5zZSAke1BOfS13bGNvbW1vbiIKKworIyBGb3IgdnQ2NjU2CitMSUNFTlNFXyR7UE59LXZ0NjY1NiA9ICJGaXJtd2FyZS12aWFfdnQ2NjU2IgorTElDRU5TRV8ke1BOfS12dDY2NTYtbGljZW5zZSA9ICJGaXJtd2FyZS12aWFfdnQ2NjU2IgorCitGSUxFU18ke1BOfS12dDY2NTYtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UudmlhX3Z0NjY1NiIKK0ZJTEVTXyR7UE59LXZ0NjY1NiA9ICIgXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3ZudHd1c2IuZncgXAorIgorCitSREVQRU5EU18ke1BOfS12dDY2NTYgPSAiJHtQTn0tdnQ2NjU2LWxpY2Vuc2UiCisKKyMgRm9yIGJyb2FkY29tCisKKyMgZm9yIGkgaW4gYGdyZXAgYnJjbSBXSEVOQ0UgIHwgZ3JlcCBeRmlsZSB8IHNlZCAncy9GaWxlOiBicmNtLi8vZydgOyBkbyBwa2c9YGVjaG8gJGkgfCBzZWQgJ3MvLVtzcDQwXS4qLy9nOyBzL1wuYmluLy9nOyBzL2JyY21mbWFjL2JjbS9nOyBzL19oZHIvLWhkci9nOyBzL0JDTS9iY20tMGJiNC0wMzA2L2cnYDsgZWNobyAtZSAiICAgICAgICAgICAgIFwke1BOfS0kcGtnIFxcIjsgZG9uZSAgfCBzb3J0IC11CisKK0xJQ0VOU0VfJHtQTn0tYnJvYWRjb20tbGljZW5zZSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorRklMRVNfJHtQTn0tYnJvYWRjb20tbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuYnJvYWRjb21fYmNtNDN4eCIKKworIyBmb3IgaSBpbiBgZ3JlcCBicmNtIFdIRU5DRSAgfCBncmVwIF5GaWxlIHwgc2VkICdzL0ZpbGU6IGJyY20uLy9nJ2A7IGRvIHBrZz1gZWNobyAkaSB8IHNlZCAncy8tW3NwNDBdLiovL2c7IHMvXC5iaW4vL2c7IHMvYnJjbWZtYWMvYmNtL2c7IHMvX2hkci8taGRyL2c7IHMvQkNNL2JjbS0wYmI0LTAzMDYvZydgOyBlY2hvICIkaSAtICRwa2ciOyBlY2hvIC1lICJGSUxFU19cJHtQTn0tJHBrZyA9IFwiXCR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS8kaVwiIjsgZG9uZSB8IGdyZXAgXkZJTEVTCisKK0ZJTEVTXyR7UE59LWJjbTQzeHggPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JjbTQzeHgtMC5mdyIKK0ZJTEVTXyR7UE59LWJjbTQzeHgtaGRyID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9iY200M3h4X2hkci0wLmZ3IgorRklMRVNfJHtQTn0tYmNtNDMyOS1mdWxsbWFjID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9iY200MzI5LWZ1bGxtYWMtNC5iaW4iCitGSUxFU18ke1BOfS1iY200MzIzNmIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMyMzZiLmJpbiIKK0ZJTEVTXyR7UE59LWJjbTQzMjkgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMyOS1zZGlvLmJpbiIKK0ZJTEVTXyR7UE59LWJjbTQzMzAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMzMC1zZGlvLioiCitGSUxFU18ke1BOfS1iY200MzM0ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMzQtc2Rpby5iaW4iCitGSUxFU18ke1BOfS1iY200MzM1ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMzUtc2Rpby5iaW4iCitGSUxFU18ke1BOfS1iY200MzM5ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMzktc2Rpby5iaW4iCitGSUxFU18ke1BOfS1iY200MzI0MWIwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMjQxYjAtc2Rpby5iaW4iCitGSUxFU18ke1BOfS1iY200MzI0MWI0ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMjQxYjQtc2Rpby5iaW4iCitGSUxFU18ke1BOfS1iY200MzI0MWI1ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMjQxYjUtc2Rpby5iaW4iCitGSUxFU18ke1BOfS1iY200MzI0MmEgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDMyNDJhLmJpbiIKK0ZJTEVTXyR7UE59LWJjbTQzMTQzID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMTQzLmJpbiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzMTQzLXNkaW8uYmluIFwKKyIKK0ZJTEVTXyR7UE59LWJjbTQzNDMwYTAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM0MzBhMC1zZGlvLioiCitGSUxFU18ke1BOfS1iY200MzQ1NSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzQ1NS1zZGlvLioiCitGSUxFU18ke1BOfS1iY200MzUwYzIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1MGMyLXBjaWUuYmluIgorRklMRVNfJHtQTn0tYmNtNDM1MCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzUwLXBjaWUuYmluIgorRklMRVNfJHtQTn0tYmNtNDM1NiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzU2LXNkaW8uYmluIgorRklMRVNfJHtQTn0tYmNtNDM1NjkgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1NjkuYmluIgorRklMRVNfJHtQTn0tYmNtNDM1NzAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1NzAtcGNpZS5iaW4iCitGSUxFU18ke1BOfS1iY200MzU4ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTgtcGNpZS5iaW4iCitGSUxFU18ke1BOfS1iY200MzYwMiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzYwMi1wY2llLmJpbiBcCisgICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNjAyLXBjaWUuYXAuYmluIFwKKyIKK0ZJTEVTXyR7UE59LWJjbTQzNjZiID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNjZiLXBjaWUuYmluIgorRklMRVNfJHtQTn0tYmNtNDM2NmMgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM2NmMtcGNpZS5iaW4iCitGSUxFU18ke1BOfS1iY200MzcxID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNzEtcGNpZS5iaW4iCisKKyMgZm9yIGkgaW4gYGdyZXAgYnJjbSBXSEVOQ0UgIHwgZ3JlcCBeRmlsZSB8IHNlZCAncy9GaWxlOiBicmNtLi8vZydgOyBkbyBwa2c9YGVjaG8gJGkgfCBzZWQgJ3MvLVtzcDQwXS4qLy9nOyBzL1wuYmluLy9nOyBzL2JyY21mbWFjL2JjbS9nOyBzL19oZHIvLWhkci9nOyBzL0JDTS9iY20tMGJiNC0wMzA2L2cnYDsgZWNobyAtZSAiTElDRU5TRV9cJHtQTn0tJHBrZyA9IFwiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eFwiXG5SREVQRU5EU19cJHtQTn0tJHBrZyArPSBcIlwke1BOfS1icm9hZGNvbS1saWNlbnNlXCIiOyBkb25lCisjIEN1cnJlbnRseSAxc3Qgb25lIGFuZCBsYXN0IDYgaGF2ZSBjeXByZXNzIExJQ0VOU0UKKworTElDRU5TRV8ke1BOfS1iY200M3h4ID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200M3h4ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200M3h4LWhkciA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDN4eC1oZHIgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMjktZnVsbG1hYyA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMyOS1mdWxsbWFjICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzIzNmIgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzMjM2YiArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMyOSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMyOSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMzMCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMzMCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMzNCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMzNCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMzNSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMzNSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMzOSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMzOSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMyNDFiMCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMyNDFiMCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMyNDFiNCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMyNDFiNCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMyNDFiNSA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDMyNDFiNSArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMyNDJhID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzI0MmEgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzMTQzID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzE0MyArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM0MzBhMCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDM0MzBhMCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM0NTUgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNDU1ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzUwYzIgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNTBjMiArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM1MCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDM1MCArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM1NiA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDM1NiArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM1NjkgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNTY5ICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzU3MCA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDM1NzAgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNTggPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNTggKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNjAyID0gIkZpcm13YXJlLWJyb2FkY29tX2JjbTQzeHgiCitSREVQRU5EU18ke1BOfS1iY200MzYwMiArPSAiJHtQTn0tYnJvYWRjb20tbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDM2NmIgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNjZiICs9ICIke1BOfS1icm9hZGNvbS1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzY2YyA9ICJGaXJtd2FyZS1icm9hZGNvbV9iY200M3h4IgorUkRFUEVORFNfJHtQTn0tYmNtNDM2NmMgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNzEgPSAiRmlybXdhcmUtYnJvYWRjb21fYmNtNDN4eCIKK1JERVBFTkRTXyR7UE59LWJjbTQzNzEgKz0gIiR7UE59LWJyb2FkY29tLWxpY2Vuc2UiCisKKyMgRm9yIGJyb2FkY29tIGN5cHJlc3MKKworTElDRU5TRV8ke1BOfS1jeXByZXNzLWxpY2Vuc2UgPSAiRmlybXdhcmUtY3lwcmVzcyIKK0ZJTEVTXyR7UE59LWN5cHJlc3MtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuY3lwcmVzcyIKKworRklMRVNfJHtQTn0tYmNtLTBiYjQtMDMwNiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vQkNNLTBiYjQtMDMwNi5oY2QiCitGSUxFU18ke1BOfS1iY200MzM0MCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzM0MC1zZGlvLioiCitGSUxFU18ke1BOfS1iY200MzM2MiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzM2Mi1zZGlvLioiCitGSUxFU18ke1BOfS1iY200MzQzMCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzQzMC1zZGlvLioiCitGSUxFU18ke1BOfS1iY200MzU0ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNTQtc2Rpby5iaW4iCitGSUxFU18ke1BOfS1iY200MzU2LXBjaWUgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9icmNtL2JyY21mbWFjNDM1Ni1wY2llLioiCitGSUxFU18ke1BOfS1iY200MzczID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYnJjbS9icmNtZm1hYzQzNzMtc2Rpby5iaW4gXAorICAke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2JyY20vYnJjbWZtYWM0MzczLmJpbiBcCisiCisKK0xJQ0VOU0VfJHtQTn0tYmNtLTBiYjQtMDMwNiA9ICJGaXJtd2FyZS1jeXByZXNzIgorUkRFUEVORFNfJHtQTn0tYmNtLTBiYjQtMDMwNiArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzM0MCA9ICJGaXJtd2FyZS1jeXByZXNzIgorUkRFUEVORFNfJHtQTn0tYmNtNDMzNDAgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKK0xJQ0VOU0VfJHtQTn0tYmNtNDMzNjIgPSAiRmlybXdhcmUtY3lwcmVzcyIKK1JERVBFTkRTXyR7UE59LWJjbTQzMzYyICs9ICIke1BOfS1jeXByZXNzLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNDMwID0gIkZpcm13YXJlLWN5cHJlc3MiCitSREVQRU5EU18ke1BOfS1iY200MzQzMCArPSAiJHtQTn0tY3lwcmVzcy1saWNlbnNlIgorTElDRU5TRV8ke1BOfS1iY200MzU0ID0gIkZpcm13YXJlLWN5cHJlc3MiCitSREVQRU5EU18ke1BOfS1iY200MzU0ICs9ICIke1BOfS1jeXByZXNzLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNTYtcGNpZSA9ICJGaXJtd2FyZS1jeXByZXNzIgorUkRFUEVORFNfJHtQTn0tYmNtNDM1Ni1wY2llICs9ICIke1BOfS1jeXByZXNzLWxpY2Vuc2UiCitMSUNFTlNFXyR7UE59LWJjbTQzNzMgPSAiRmlybXdhcmUtY3lwcmVzcyIKK1JERVBFTkRTXyR7UE59LWJjbTQzNzMgKz0gIiR7UE59LWN5cHJlc3MtbGljZW5zZSIKKworIyBGb3IgQnJvYWRjb20gYm54Mi1taXBzCisjCisjIHdoaWNoIGlzIGEgc2VwYXJhdGUgY2FzZSB0byB0aGUgb3RoZXIgQnJvYWRjb20gZmlybXdhcmVzIHNpbmNlIGl0cworIyBsaWNlbnNlIGlzIGNvbnRhaW5lZCBpbiB0aGUgc2hhcmVkIFdIRU5DRSBmaWxlLgorCitMSUNFTlNFXyR7UE59LWJueDItbWlwcyA9ICJXSEVOQ0UiCitMSUNFTlNFXyR7UE59LXdoZW5jZS1saWNlbnNlID0gIldIRU5DRSIKKworRklMRVNfJHtQTn0tYm54Mi1taXBzID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYm54Mi9ibngyLW1pcHMtMDktNi4yLjFiLmZ3IgorRklMRVNfJHtQTn0td2hlbmNlLWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9XSEVOQ0UiCisKK1JERVBFTkRTXyR7UE59LWJueDItbWlwcyArPSAiJHtQTn0td2hlbmNlLWxpY2Vuc2UiCisKKyMgRm9yIGlteC1zZG1hCitMSUNFTlNFXyR7UE59LWlteC1zZG1hLWlteDZxICAgICAgID0gIkZpcm13YXJlLWlteC1zZG1hX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pbXgtc2RtYS1pbXg3ZCAgICAgICA9ICJGaXJtd2FyZS1pbXgtc2RtYV9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taW14LXNkbWEtbGljZW5zZSAgICAgICA9ICJGaXJtd2FyZS1pbXgtc2RtYV9maXJtd2FyZSIKKworRklMRVNfJHtQTn0taW14LXNkbWEtaW14NnEgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbXgvc2RtYS9zZG1hLWlteDZxLmJpbiIKKworUlBST1ZJREVTXyR7UE59LWlteC1zZG1hLWlteDZxID0gImZpcm13YXJlLWlteC1zZG1hLWlteDZxIgorUlJFUExBQ0VTXyR7UE59LWlteC1zZG1hLWlteDZxID0gImZpcm13YXJlLWlteC1zZG1hLWlteDZxIgorUkNPTkZMSUNUU18ke1BOfS1pbXgtc2RtYS1pbXg2cSA9ICJmaXJtd2FyZS1pbXgtc2RtYS1pbXg2cSIKKworRklMRVNfJHtQTn0taW14LXNkbWEtaW14N2QgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbXgvc2RtYS9zZG1hLWlteDdkLmJpbiIKKworRklMRVNfJHtQTn0taW14LXNkbWEtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOU0Uuc2RtYV9maXJtd2FyZSIKKworUkRFUEVORFNfJHtQTn0taW14LXNkbWEtaW14NnEgKz0gIiR7UE59LWlteC1zZG1hLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1pbXgtc2RtYS1pbXg3ZCArPSAiJHtQTn0taW14LXNkbWEtbGljZW5zZSIKKworIyBGb3IgaXdsd2lmaQorTElDRU5TRV8ke1BOfS1pd2x3aWZpICAgICAgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTEzNS02ICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTMxNjAtNyAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTMxNjAtOCAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTMxNjAtOSAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTMxNjAtMTAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTMxNjAtMTIgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTMxNjAtMTMgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTMxNjAtMTYgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTMxNjAtMTcgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTYwMDAtNCAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTYwMDBnMmEtNSA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTYwMDBnMmEtNiA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTYwMDBnMmItNSA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTYwMDBnMmItNiA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTYwNTAtNCAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTYwNTAtNSAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTcyNjAgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTcyNjUgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTcyNjVkICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTgwMDBjICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTgyNjUgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLTkwMDAgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLW1pc2MgICAgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pd2x3aWZpLWxpY2Vuc2UgICA9ICJGaXJtd2FyZS1pd2x3aWZpX2Zpcm13YXJlIgorCisKK0ZJTEVTXyR7UE59LWl3bHdpZmktbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOQ0UuaXdsd2lmaV9maXJtd2FyZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktMTM1LTYgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTEzNS02LnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS0zMTYwLTcgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTMxNjAtNy51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktMzE2MC04ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0zMTYwLTgudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTMxNjAtOSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktMzE2MC05LnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS0zMTYwLTEwID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0zMTYwLTEwLnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS0zMTYwLTEyID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0zMTYwLTEyLnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS0zMTYwLTEzID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0zMTYwLTEzLnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS0zMTYwLTE2ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0zMTYwLTE2LnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS0zMTYwLTE3ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS0zMTYwLTE3LnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS02MDAwLTQgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTYwMDAtNC51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktNjAwMGcyYS01ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDAwZzJhLTUudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTYwMDBnMmEtNiA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNjAwMGcyYS02LnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS02MDAwZzJiLTUgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTYwMDBnMmItNS51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktNjAwMGcyYi02ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS02MDAwZzJiLTYudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTYwNTAtNCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNjA1MC00LnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS02MDUwLTUgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTYwNTAtNS51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktNzI2MCAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS03MjYwLSoudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLTcyNjUgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktNzI2NS0qLnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS03MjY1ZCAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS03MjY1RC0qLnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS04MDAwYyAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS04MDAwQy0qLnVjb2RlIgorRklMRVNfJHtQTn0taXdsd2lmaS04MjY1ICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pd2x3aWZpLTgyNjUtKi51Y29kZSIKK0ZJTEVTXyR7UE59LWl3bHdpZmktOTAwMCAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaXdsd2lmaS05MDAwLSoudWNvZGUiCitGSUxFU18ke1BOfS1pd2x3aWZpLW1pc2MgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2l3bHdpZmktKi51Y29kZSIKKworUkRFUEVORFNfJHtQTn0taXdsd2lmaS0xMzUtNiAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS0zMTYwLTcgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS0zMTYwLTggICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS0zMTYwLTkgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS0zMTYwLTEwICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS0zMTYwLTEyICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS0zMTYwLTEzICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS0zMTYwLTE2ICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS0zMTYwLTE3ICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS02MDAwLTQgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS02MDAwZzJhLTUgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS02MDAwZzJhLTYgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS02MDAwZzJiLTUgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS02MDAwZzJiLTYgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS02MDUwLTQgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS02MDUwLTUgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS03MjYwICAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS03MjY1ICAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS03MjY1ZCAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS04MDAwYyAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS04MjY1ICAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS05MDAwICAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taXdsd2lmaS1taXNjICAgICAgPSAiJHtQTn0taXdsd2lmaS1saWNlbnNlIgorCisjIC1pd2x3aWZpLW1pc2MgaXMgYSAiY2F0Y2ggYWxsIiBwYWNrYWdlIHRoYXQgaW5jbHVkZXMgYWxsIHRoZSBpd2x3aWZpCisjIGZpcm13YXJlcyB0aGF0IGFyZSBub3QgYWxyZWFkeSBpbmNsdWRlZCBpbiBvdGhlciAtaXdsd2lmaS0gcGFja2FnZXMuCisjIC1pd2x3aWZpIGlzIGEgdmlydHVhbCBwYWNrYWdlIHRoYXQgZGVwZW5kcyB1cG9uIGFsbCBpd2x3aWZpIHBhY2thZ2VzLgorIyBUaGVzZSBhcmUgZGlzdGluY3QgaW4gb3JkZXIgdG8gYWxsb3cgdGhlIC1taXNjIGZpcm13YXJlcyB0byBiZSBpbnN0YWxsZWQKKyMgd2l0aG91dCBwdWxsaW5nIGluIGV2ZXJ5IG90aGVyIGl3bHdpZmkgcGFja2FnZS4KK0FMTE9XX0VNUFRZXyR7UE59LWl3bHdpZmkgPSAiMSIKK0FMTE9XX0VNUFRZXyR7UE59LWl3bHdpZmktbWlzYyA9ICIxIgorCisjIEhhbmRsZSBwYWNrYWdlIHVwZGF0aW5nIGZvciB0aGUgbmV3bHkgbWVyZ2VkIGl3bHdpZmkgZ3JvdXBpbmdzCitSUFJPVklERVNfJHtQTn0taXdsd2lmaS03MjY1ID0gIiR7UE59LWl3bHdpZmktNzI2NS04ICR7UE59LWl3bHdpZmktNzI2NS05IgorUlJFUExBQ0VTXyR7UE59LWl3bHdpZmktNzI2NSA9ICIke1BOfS1pd2x3aWZpLTcyNjUtOCAke1BOfS1pd2x3aWZpLTcyNjUtOSIKK1JDT05GTElDVFNfJHtQTn0taXdsd2lmaS03MjY1ID0gIiR7UE59LWl3bHdpZmktNzI2NS04ICR7UE59LWl3bHdpZmktNzI2NS05IgorCitSUFJPVklERVNfJHtQTn0taXdsd2lmaS03MjYwID0gIiR7UE59LWl3bHdpZmktNzI2MC03ICR7UE59LWl3bHdpZmktNzI2MC04ICR7UE59LWl3bHdpZmktNzI2MC05IgorUlJFUExBQ0VTXyR7UE59LWl3bHdpZmktNzI2MCA9ICIke1BOfS1pd2x3aWZpLTcyNjAtNyAke1BOfS1pd2x3aWZpLTcyNjAtOCAke1BOfS1pd2x3aWZpLTcyNjAtOSIKK1JDT05GTElDVFNfJHtQTn0taXdsd2lmaS03MjYwID0gIiR7UE59LWl3bHdpZmktNzI2MC03ICR7UE59LWl3bHdpZmktNzI2MC04ICR7UE59LWl3bHdpZmktNzI2MC05IgorCisjIEZvciBpYnQKK0xJQ0VOU0VfJHtQTn0taWJ0LWxpY2Vuc2UgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pYnQtaHctMzctNyA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LWlidC1ody0zNy04ID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKK0xJQ0VOU0VfJHtQTn0taWJ0LTExLTUgICAgPSAiRmlybXdhcmUtaWJ0X2Zpcm13YXJlIgorTElDRU5TRV8ke1BOfS1pYnQtMTItMTYgICA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LWlidC0xNyA9ICJGaXJtd2FyZS1pYnRfZmlybXdhcmUiCitMSUNFTlNFXyR7UE59LWlidC1taXNjICAgID0gIkZpcm13YXJlLWlidF9maXJtd2FyZSIKKworRklMRVNfJHtQTn0taWJ0LWxpY2Vuc2UgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLmlidF9maXJtd2FyZSIKK0ZJTEVTXyR7UE59LWlidC1ody0zNy03ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LWh3LTM3LjcqLmJzZXEiCitGSUxFU18ke1BOfS1pYnQtaHctMzctOCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC1ody0zNy44Ki5ic2VxIgorRklMRVNfJHtQTn0taWJ0LTExLTUgICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTEtNS5zZmkgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTEtNS5kZGMiCitGSUxFU18ke1BOfS1pYnQtMTItMTYgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2ludGVsL2lidC0xMi0xNi5zZmkgJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pbnRlbC9pYnQtMTItMTYuZGRjIgorRklMRVNfJHtQTn0taWJ0LTE3ID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTE3LSouc2ZpICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvaWJ0LTE3LSouZGRjIgorRklMRVNfJHtQTn0taWJ0LW1pc2MgICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9pYnQtKiIKKworUkRFUEVORFNfJHtQTn0taWJ0LWh3LTM3LTcgPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1pYnQtaHctMzcuOCA9ICIke1BOfS1pYnQtbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LWlidC0xMS01ICAgID0gIiR7UE59LWlidC1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0taWJ0LTEyLTE2ICAgPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1pYnQtMTcgPSAiJHtQTn0taWJ0LWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1pYnQtbWlzYyAgICA9ICIke1BOfS1pYnQtbGljZW5zZSIKKworQUxMT1dfRU1QVFlfJHtQTn0taWJ0PSAiMSIKK0FMTE9XX0VNUFRZXyR7UE59LWlidC1taXNjID0gIjEiCisKK0xJQ0VOU0VfJHtQTn0taTkxNSAgICAgICA9ICJGaXJtd2FyZS1pOTE1IgorTElDRU5TRV8ke1BOfS1pOTE1LWxpY2Vuc2UgPSAiRmlybXdhcmUtaTkxNSIKK0ZJTEVTXyR7UE59LWk5MTUtbGljZW5zZSA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL0xJQ0VOU0UuaTkxNSIKK0ZJTEVTXyR7UE59LWk5MTUgICAgICAgICA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL2k5MTUiCitSREVQRU5EU18ke1BOfS1pOTE1ICAgICAgPSAiJHtQTn0taTkxNS1saWNlbnNlIgorCitGSUxFU18ke1BOfS1hZHNwLXNzdC1saWNlbnNlICAgICAgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9MSUNFTkNFLmFkc3Bfc3N0IgorTElDRU5TRV8ke1BOfS1hZHNwLXNzdCAgICAgICAgICAgID0gIkZpcm13YXJlLWFkc3Bfc3N0IgorTElDRU5TRV8ke1BOfS1hZHNwLXNzdC1saWNlbnNlICAgID0gIkZpcm13YXJlLWFkc3Bfc3N0IgorRklMRVNfJHtQTn0tYWRzcC1zc3QgICAgICAgICAgICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvaW50ZWwvZHNwX2Z3KiIKK1JERVBFTkRTXyR7UE59LWFkc3Atc3N0ICAgICAgICAgICA9ICIke1BOfS1hZHNwLXNzdC1saWNlbnNlIgorCisjIEZvciBRQVQKK0xJQ0VOU0VfJHtQTn0tcWF0ICAgICAgICAgPSAiRmlybXdhcmUtcWF0IgorTElDRU5TRV8ke1BOfS1xYXQtbGljZW5zZSA9ICJGaXJtd2FyZS1xYXQiCitGSUxFU18ke1BOfS1xYXQtbGljZW5zZSAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5DRS5xYXRfZmlybXdhcmUiCitGSUxFU18ke1BOfS1xYXQgICAgICAgICAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWF0Ki5iaW4iCitSREVQRU5EU18ke1BOfS1xYXQgICAgICAgID0gIiR7UE59LXFhdC1saWNlbnNlIgorCisjIEZvciBRQ09NIFZQVS9HUFUgYW5kIFNETTg0NQorTElDRU5TRV8ke1BOfS1xY29tLWxpY2Vuc2UgPSAiRmlybXdhcmUtcWNvbSIKK0ZJTEVTXyR7UE59LXFjb20tbGljZW5zZSAgID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU5TRS5xY29tICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9OT1RJQ0UudHh0IgorRklMRVNfJHtQTn0tcWNvbS12ZW51cy0xLjggPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL3ZlbnVzLTEuOC8qIgorRklMRVNfJHtQTn0tcWNvbS12ZW51cy00LjIgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL3ZlbnVzLTQuMi8qIgorRklMRVNfJHtQTn0tcWNvbS1hZHJlbm8tYTN4eCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vYTMwMF8qLmZ3ICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvYTMwMF8qLmZ3IgorRklMRVNfJHtQTn0tcWNvbS1hZHJlbm8tYTUzMCA9ICIke25vbmFyY2hfYmFzZV9saWJkaXJ9L2Zpcm13YXJlL3Fjb20vYTUzMCouKiIKK0ZJTEVTXyR7UE59LXFjb20tc2RtODQ1LWF1ZGlvID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9zZG04NDUvYWRzcCouKiIKK0ZJTEVTXyR7UE59LXFjb20tc2RtODQ1LWNvbXB1dGUgPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL3NkbTg0NS9jZHNwKi4qIgorRklMRVNfJHtQTn0tcWNvbS1zZG04NDUtbW9kZW0gPSAiJHtub25hcmNoX2Jhc2VfbGliZGlyfS9maXJtd2FyZS9xY29tL3NkbTg0NS9tYmEubWJuICR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvcWNvbS9zZG04NDUvbW9kZW0qLioiCitSREVQRU5EU18ke1BOfS1xY29tLXZlbnVzLTEuOCA9ICIke1BOfS1xY29tLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1xY29tLXZlbnVzLTQuMiA9ICIke1BOfS1xY29tLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1xY29tLWFkcmVuby1hM3h4ID0gIiR7UE59LXFjb20tbGljZW5zZSIKK1JERVBFTkRTXyR7UE59LXFjb20tYWRyZW5vLWE1MzAgPSAiJHtQTn0tcWNvbS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcWNvbS1zZG04NDUtYXVkaW8gPSAiJHtQTn0tcWNvbS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0tcWNvbS1zZG04NDUtY29tcHV0ZSA9ICIke1BOfS1xY29tLWxpY2Vuc2UiCitSREVQRU5EU18ke1BOfS1xY29tLXNkbTg0NS1tb2RlbSA9ICIke1BOfS1xY29tLWxpY2Vuc2UiCisKK0ZJTEVTXyR7UE59LWxpcXVpZGlvID0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvbGlxdWlkaW8iCisKKyMgRm9yIG90aGVyIGZpcm13YXJlcworIyBNYXliZSBzcGxpdCBvdXQgdG8gc2VwYXJhdGUgcGFja2FnZXMgd2hlbiBuZWVkZWQuCitMSUNFTlNFXyR7UE59ID0gIlwKKyAgICBGaXJtd2FyZS1BYmlsaXMgXAorICAgICYgRmlybXdhcmUtYWdlcmUgXAorICAgICYgRmlybXdhcmUtYW1kZ3B1IFwKKyAgICAmIEZpcm13YXJlLWFtZC11Y29kZSBcCisgICAgJiBGaXJtd2FyZS1hdG1lbCBcCisgICAgJiBGaXJtd2FyZS1jYTAxMzIgXAorICAgICYgRmlybXdhcmUtY2F2aXVtIFwKKyAgICAmIEZpcm13YXJlLWNoZWxzaW9fZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtY3cxMjAwIFwKKyAgICAmIEZpcm13YXJlLWRpYjA3MDAgXAorICAgICYgRmlybXdhcmUtZTEwMCBcCisgICAgJiBGaXJtd2FyZS1lbmVfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtZndfc3N0XzBmMjggXAorICAgICYgRmlybXdhcmUtZ283MDA3IFwKKyAgICAmIEZpcm13YXJlLWhmaTFfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtaTI0MDBtIFwKKyAgICAmIEZpcm13YXJlLWlidF9maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS1pdDkxM3ggXAorICAgICYgRmlybXdhcmUtSW50Y1NTVDIgXAorICAgICYgRmlybXdhcmUta2F3ZXRoIFwKKyAgICAmIEZpcm13YXJlLW1veGEgXAorICAgICYgRmlybXdhcmUtbXlyaTEwZ2VfZmlybXdhcmUgXAorICAgICYgRmlybXdhcmUtbnZpZGlhIFwKKyAgICAmIEZpcm13YXJlLU9MUEMgXAorICAgICYgRmlybXdhcmUtYXRoOWstaHRjIFwKKyAgICAmIEZpcm13YXJlLXBoYW5mdyBcCisgICAgJiBGaXJtd2FyZS1xYXQgXAorICAgICYgRmlybXdhcmUtcWNvbSBcCisgICAgJiBGaXJtd2FyZS1xbGExMjgwIFwKKyAgICAmIEZpcm13YXJlLXFsYTJ4eHggXAorICAgICYgRmlybXdhcmUtcjhhNzc5eF91c2IzIFwKKyAgICAmIEZpcm13YXJlLXJhZGVvbiBcCisgICAgJiBGaXJtd2FyZS1yYWxpbmtfYV9tZWRpYXRla19jb21wYW55X2Zpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLXJhbGluay1maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS1pbXgtc2RtYV9maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS1zaWFubyBcCisgICAgJiBGaXJtd2FyZS10ZGE3NzA2LWZpcm13YXJlIFwKKyAgICAmIEZpcm13YXJlLXRpLWNvbm5lY3Rpdml0eSBcCisgICAgJiBGaXJtd2FyZS10aS1rZXlzdG9uZSBcCisgICAgJiBGaXJtd2FyZS11ZWFnbGUtYXRtNC1maXJtd2FyZSBcCisgICAgJiBGaXJtd2FyZS13bDEyNTEgXAorICAgICYgRmlybXdhcmUteGM0MDAwIFwKKyAgICAmIEZpcm13YXJlLXhjNTAwMCBcCisgICAgJiBGaXJtd2FyZS14YzUwMDBjIFwKKyAgICAmIFdIRU5DRSBcCisiCisKK0ZJTEVTXyR7UE59LWxpY2Vuc2UgKz0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvTElDRU4qIgorRklMRVNfJHtQTn0gKz0gIiR7bm9uYXJjaF9iYXNlX2xpYmRpcn0vZmlybXdhcmUvKiIKK1JERVBFTkRTXyR7UE59ICs9ICIke1BOfS1saWNlbnNlIgorUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXdoZW5jZS1saWNlbnNlIgorCisjIE1ha2UgbGludXgtZmlybXdhcmUgZGVwZW5kIG9uIGFsbCBvZiB0aGUgc3BsaXQtb3V0IHBhY2thZ2VzLgorIyBNYWtlIGxpbnV4LWZpcm13YXJlLWl3bHdpZmkgZGVwZW5kIG9uIGFsbCBvZiB0aGUgc3BsaXQtb3V0IGl3bHdpZmkgcGFja2FnZXMuCisjIE1ha2UgbGludXgtZmlybXdhcmUtaWJ0IGRlcGVuZCBvbiBhbGwgb2YgdGhlIHNwbGl0LW91dCBpYnQgcGFja2FnZXMuCitweXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCAoKSB7CisgICAgZmlybXdhcmVfcGtncyA9IG9lLnV0aWxzLnBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpCisgICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTX2xpbnV4LWZpcm13YXJlJywgJyAnICsgJyAnLmpvaW4oZmlybXdhcmVfcGtncykpCisKKyAgICBpd2x3aWZpX3BrZ3MgPSBmaWx0ZXIobGFtYmRhIHg6IHguZmluZCgnLWl3bHdpZmktJykgIT0gLTEsIGZpcm13YXJlX3BrZ3MpCisgICAgZC5hcHBlbmRWYXIoJ1JSRUNPTU1FTkRTX2xpbnV4LWZpcm13YXJlLWl3bHdpZmknLCAnICcgKyAnICcuam9pbihpd2x3aWZpX3BrZ3MpKQorCisgICAgaWJ0X3BrZ3MgPSBmaWx0ZXIobGFtYmRhIHg6IHguZmluZCgnLWlidC0nKSAhPSAtMSwgZmlybXdhcmVfcGtncykKKyAgICBkLmFwcGVuZFZhcignUlJFQ09NTUVORFNfbGludXgtZmlybXdhcmUtaWJ0JywgJyAnICsgJyAnLmpvaW4oaWJ0X3BrZ3MpKQorfQorCisjIEZpcm13YXJlIGZpbGVzIGFyZSBnZW5lcmFsbHkgbm90IHJhbiBvbiB0aGUgQ1BVLCBzbyB0aGV5IGNhbiBiZQorIyBhbGxhcmNoIGRlc3BpdGUgYmVpbmcgYXJjaGl0ZWN0dXJlIHNwZWNpZmljCitJTlNBTkVfU0tJUCA9ICJhcmNoIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMuaW5jCmluZGV4IDdmODM4ZjYuLjQ0ODFhYTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy5pbmMKQEAgLTkxLDQgKzkxLDQgQEAKIFJSRUNPTU1FTkRTXyR7UE59LWRiZyA9ICIke1BOfS1kZXYgKD0gJHtFWFRFTkRQS0dWfSkiCiAKIElOSElCSVRfREVGQVVMVF9ERVBTID0gIjEiCi1ERVBFTkRTICs9ICJ1bmlmZGVmLW5hdGl2ZSBiaXNvbi1uYXRpdmUiCitERVBFTkRTICs9ICJ1bmlmZGVmLW5hdGl2ZSBiaXNvbi1uYXRpdmUgcnN5bmMtbmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1pZl9ldGhlci1tb3ZlLW11c2xjLWV0aGhkci1wcm90ZWN0aW9uLXRvLXVhcGktZmlsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEtaWZfZXRoZXItbW92ZS1tdXNsYy1ldGhoZHItcHJvdGVjdGlvbi10by11YXBpLWZpbGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY4YjI0NDYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1pZl9ldGhlci1tb3ZlLW11c2xjLWV0aGhkci1wcm90ZWN0aW9uLXRvLXVhcGktZmlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gODk3NzM2MTY2ZmQ3MDk5MDZhNWZkZjE2ZWIyM2Y4ZmRkZmY3NzBiNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEJydWNlIEFzaGZpZWxkIDxicnVjZS5hc2hmaWVsZEB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxIE1hciAyMDE4IDE4OjMxOjAxIC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGlmX2V0aGVyOiBtb3ZlIG11c2xjIGV0aGhkciBwcm90ZWN0aW9uIHRvIHVhcGkgZmlsZQotCi1TaWduZWQtb2ZmLWJ5OiBCcnVjZSBBc2hmaWVsZCA8YnJ1Y2UuYXNoZmllbGRAd2luZHJpdmVyLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotLS0tCi0gaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmggfCA2ICsrKysrKwotIDEgZmlsZSBjaGFuZ2VkLCA2IGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2luY2x1ZGUvdWFwaS9saW51eC9pZl9ldGhlci5oIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmgKLWluZGV4IDE1M2M5YzIuLjdiNjliNzMgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaAotKysrIGIvaW5jbHVkZS91YXBpL2xpbnV4L2lmX2V0aGVyLmgKLUBAIC0xNDksNiArMTQ5LDEyIEBACi0gICoJVGhpcyBpcyBhbiBFdGhlcm5ldCBmcmFtZSBoZWFkZXIuCi0gICovCi0gCi0rI2lmZGVmIF9ORVRJTkVUX0lGX0VUSEVSX0ggLyogbXVzbCAqLwotKyNkZWZpbmUgX19VQVBJX0RFRl9FVEhIRFIgMAotKyNlbHNlIC8qIGdsaWJjIHVzZXMgX19ORVRJTkVUX0lGX0VUSEVSX0gsIGFuZCBpbmNsdWRlcyB0aGUga2VybmVsIGhlYWRlci4gKi8KLSsjZGVmaW5lIF9fVUFQSV9ERUZfRVRISERSIDEKLSsjZW5kaWYKLSsKLSAvKiBhbGxvdyBsaWJjcyBsaWtlIG11c2wgdG8gZGVhY3RpdmF0ZSB0aGlzLCBnbGliYyBkb2VzIG5vdCBpbXBsZW1lbnQgdGhpcy4gKi8KLSAjaWZuZGVmIF9fVUFQSV9ERUZfRVRISERSCi0gI2RlZmluZSBfX1VBUElfREVGX0VUSEhEUgkJMQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWtidWlsZC1pbnN0YWxsX2hlYWRlcnMuc2gtU3RyaXAtX1VBUEktZnJvbS1pZi1kZWZpbmUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAxLWtidWlsZC1pbnN0YWxsX2hlYWRlcnMuc2gtU3RyaXAtX1VBUEktZnJvbS1pZi1kZWZpbmUucGF0Y2gKaW5kZXggNzhlYmQzMS4uNTQ1MjhiNiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMS1rYnVpbGQtaW5zdGFsbF9oZWFkZXJzLnNoLVN0cmlwLV9VQVBJLWZyb20taWYtZGVmaW5lLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzLzAwMDEta2J1aWxkLWluc3RhbGxfaGVhZGVycy5zaC1TdHJpcC1fVUFQSS1mcm9tLWlmLWRlZmluZS5wYXRjaApAQCAtMjQsMTggKzI0LDE1IEBACiAgc2NyaXB0cy9oZWFkZXJzX2luc3RhbGwuc2ggfCAxICsKICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKykKIAotZGlmZiAtLWdpdCBhL3NjcmlwdHMvaGVhZGVyc19pbnN0YWxsLnNoIGIvc2NyaXB0cy9oZWFkZXJzX2luc3RhbGwuc2gKLWluZGV4IDU5M2Y4ODc5YzY0MS4uZmUxZDNmYzBkMzNhIDEwMDc1NQotLS0tIGEvc2NyaXB0cy9oZWFkZXJzX2luc3RhbGwuc2gKLSsrKyBiL3NjcmlwdHMvaGVhZGVyc19pbnN0YWxsLnNoCi1AQCAtMzgsNiArMzgsNyBAQCBkbwotIAkJLWUgJ3MvKF58W15hLXpBLVowLTldKV9fcGFja2VkKFteYS16QS1aMC05X118JCkvXDFfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKVwyL2cnIFwKLSAJCS1lICdzLyhefFtbOnNwYWNlOl0oXSkoaW5saW5lfGFzbXx2b2xhdGlsZSkoW1s6c3BhY2U6XShdfCQpL1wxX19cMl9fXDMvZycgXAotIAkJLWUgJ3NAIyhpZm5kZWZ8ZGVmaW5lfGVuZGlmW1s6c3BhY2U6XV0qL1sqXSlbWzpzcGFjZTpdXSpfVUFQSUAjXDEgQCcgXAotKwkJLWUgJzoxO3MvKCMoaWZ8ZWxpZikoLipbXkEtWmEtejAtOV9dKWRlZmluZWRcKFtbOnNwYWNlOl1dKilfVUFQSS9cMS87dDEnIFwKLSAJCSIkU1JDRElSLyRpIiA+ICIkT1VURElSLyRGSUxFLnNlZCIgfHwgZXhpdCAxCi0gCXNjcmlwdHMvdW5pZmRlZiAtVV9fS0VSTkVMX18gLURfX0VYUE9SVEVEX0hFQURFUlNfXyAiJE9VVERJUi8kRklMRS5zZWQiIFwKLSAJCT4gIiRPVVRESVIvJEZJTEUiCi0tLSAKLTIuNS4wCi0KK0luZGV4OiBsaW51eC01LjQvc2NyaXB0cy9oZWFkZXJzX2luc3RhbGwuc2gKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBsaW51eC01LjQub3JpZy9zY3JpcHRzL2hlYWRlcnNfaW5zdGFsbC5zaAorKysrIGxpbnV4LTUuNC9zY3JpcHRzL2hlYWRlcnNfaW5zdGFsbC5zaAorQEAgLTM2LDYgKzM2LDcgQEAKKyAJcy8oXnxbXmEtekEtWjAtOV0pX19wYWNrZWQoW15hLXpBLVowLTlfXXwkKS9cMV9fYXR0cmlidXRlX18oKHBhY2tlZCkpXDIvZworIAlzLyhefFtbOnNwYWNlOl0oXSkoaW5saW5lfGFzbXx2b2xhdGlsZSkoW1s6c3BhY2U6XShdfCQpL1wxX19cMl9fXDMvZworIAlzQCMoaWZuZGVmfGRlZmluZXxlbmRpZltbOnNwYWNlOl1dKi9bKl0pW1s6c3BhY2U6XV0qX1VBUElAI1wxIEAKKysgICAgICAgIDoxO3MvKCMoaWZ8ZWxpZikoLipbXkEtWmEtejAtOV9dKWRlZmluZWRcKFtbOnNwYWNlOl1dKilfVUFQSS9cMS87dDEKKyAnICRJTkZJTEUgPiAkVE1QRklMRSB8fCBleGl0IDEKKyAKKyBzY3JpcHRzL3VuaWZkZWYgLVVfX0tFUk5FTF9fIC1EX19FWFBPUlRFRF9IRUFERVJTX18gJFRNUEZJTEUgPiAkT1VURklMRQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnMvMDAwMi1saWJjLWNvbXBhdC5oLXByZXZlbnQtcmVkZWZpbml0aW9uLW9mLXN0cnVjdC1ldGhoZHIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmI3ZTFkZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgtbGliYy1oZWFkZXJzL2xpbnV4LWxpYmMtaGVhZGVycy8wMDAyLWxpYmMtY29tcGF0LmgtcHJldmVudC1yZWRlZmluaXRpb24tb2Ytc3RydWN0LWV0aGhkci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMwICswLDAgQEAKLUZyb20gNzViYTRhNTQ3MjgyZjkxZDY1Mzg3MmE0YmJhNWY1ZWFlMjM0ZWE2YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IHJvZmwwciA8cmV0bnlnQGdteC5uZXQ+Ci1EYXRlOiBXZWQsIDIyIEphbiAyMDE0IDAwOjU3OjQ4ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8zXSBsaWJjLWNvbXBhdC5oOiBwcmV2ZW50IHJlZGVmaW5pdGlvbiBvZiBzdHJ1Y3QgZXRoaGRyCi0KLS0tLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLVVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkCi0KLSBpbmNsdWRlL3VhcGkvbGludXgvaWZfZXRoZXIuaCAgICB8IDQgKysrLQotIGluY2x1ZGUvdWFwaS9saW51eC9saWJjLWNvbXBhdC5oIHwgNiArKysrKysKLSAyIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQotCi1JbmRleDogbGludXgtNC4xNS9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGxpbnV4LTQuMTUub3JpZy9pbmNsdWRlL3VhcGkvbGludXgvbGliYy1jb21wYXQuaAkyMDE4LTAyLTA1IDE3OjQwOjQyLjMzODM3MDczMSAtMDUwMAotKysrIGxpbnV4LTQuMTUvaW5jbHVkZS91YXBpL2xpbnV4L2xpYmMtY29tcGF0LmgJMjAxOC0wMi0wNSAxNzo0MDo0Mi4zMzQzNzA2MDMgLTA1MDAKLUBAIC01MSw2ICs1MSwxMiBAQAotIAotICNpZm5kZWYgX19LRVJORUxfXyAvKiB3ZSdyZSB1c2VkIGZyb20gdXNlcnNwYWNlICovCi0gCi0rI2lmZGVmIF9ORVRJTkVUX0lGX0VUSEVSX0ggLyogbXVzbCAqLwotKyNkZWZpbmUgX19VQVBJX0RFRl9FVEhIRFIgMAotKyNlbHNlIC8qIGdsaWJjIHVzZXMgX19ORVRJTkVUX0lGX0VUSEVSX0gsIGFuZCBpbmNsdWRlcyB0aGUga2VybmVsIGhlYWRlci4gKi8KLSsjZGVmaW5lIF9fVUFQSV9ERUZfRVRISERSIDEKLSsjZW5kaWYKLSsKLSAvKiBDb29yZGluYXRlIHdpdGggbGliYyBuZXQvaWYuaCBoZWFkZXIuICovCi0gI2lmIGRlZmluZWQoX05FVF9JRl9IKQotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDE4ZGY3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzUuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE4ICswLDAgQEAKLXJlcXVpcmUgbGludXgtbGliYy1oZWFkZXJzLmluYwotCi1TUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiXAotICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtZml4LXNvbWUtaXNzdWVzLWFyaXNpbmctZnJvbS1pbjYuaC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDItbGliYy1jb21wYXQuaC1wcmV2ZW50LXJlZGVmaW5pdGlvbi1vZi1zdHJ1Y3QtZXRoaGRyLnBhdGNoIFwKLSAgICBmaWxlOi8vMDAwMy1yZW1vdmUtaW5jbHVzaW9uLW9mLXN5c2luZm8uaC1pbi1rZXJuZWwuaC5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtbGliYy1jb21wYXQuaC1tdXNsLV9kb2VzXy1kZWZpbmUtSUZGX0xPV0VSX1VQLURPUk1BTi5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtaWZfZXRoZXItbW92ZS1tdXNsYy1ldGhoZHItcHJvdGVjdGlvbi10by11YXBpLWZpbGUucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtbGludXgtc3RkZGVmLmgtaW4tc3dhYi5oLXVhcGktaGVhZGVyLnBhdGNoIFwKLSAgICIKLQotU1JDX1VSSV9hcHBlbmQgPSAiXAotICAgIGZpbGU6Ly8wMDAxLXNjcmlwdHMtVXNlLWZpeGVkLWlucHV0LWFuZC1vdXRwdXQtZmlsZXMtaW5zdGVhZC1vZi0ucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWtidWlsZC1pbnN0YWxsX2hlYWRlcnMuc2gtU3RyaXAtX1VBUEktZnJvbS1pZi1kZWZpbmUucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGRmOTk0ZGUwMGQ3YjE4Mzk1ODg2ZGQ5YjMwYjkyNjIiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTRhZDY2ZjY3MmUxYTgzMWI1NzRmNWU3MDRlOGEwNWYxZTYxODBhODI0NWQ0YmRkODExMjA4YTZjYjBhYzFlNyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzUuNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC1saWJjLWhlYWRlcnMvbGludXgtbGliYy1oZWFkZXJzXzUuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44YTEyMTAzCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4LWxpYmMtaGVhZGVycy9saW51eC1saWJjLWhlYWRlcnNfNS40LmJiCkBAIC0wLDAgKzEsMTYgQEAKK3JlcXVpcmUgbGludXgtbGliYy1oZWFkZXJzLmluYworCitTUkNfVVJJX2FwcGVuZF9saWJjLW11c2wgPSAiXAorICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtZml4LXNvbWUtaXNzdWVzLWFyaXNpbmctZnJvbS1pbjYuaC5wYXRjaCBcCisgICAgZmlsZTovLzAwMDMtcmVtb3ZlLWluY2x1c2lvbi1vZi1zeXNpbmZvLmgtaW4ta2VybmVsLmgucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWxpYmMtY29tcGF0LmgtbXVzbC1fZG9lc18tZGVmaW5lLUlGRl9MT1dFUl9VUC1ET1JNQU4ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWluY2x1ZGUtbGludXgtc3RkZGVmLmgtaW4tc3dhYi5oLXVhcGktaGVhZGVyLnBhdGNoIFwKKyAgICIKKworU1JDX1VSSV9hcHBlbmQgPSAiXAorICAgIGZpbGU6Ly8wMDAxLXNjcmlwdHMtVXNlLWZpeGVkLWlucHV0LWFuZC1vdXRwdXQtZmlsZXMtaW5zdGVhZC1vZi0ucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAxLWtidWlsZC1pbnN0YWxsX2hlYWRlcnMuc2gtU3RyaXAtX1VBUEktZnJvbS1pZi1kZWZpbmUucGF0Y2ggXAorIgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2U5YjJkOTc0ZDI3NDA4YTYxYzUzYTMwZDNmOThmYjkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYmYzMzg5ODBiMTY3MGJjYTI4N2Y5OTk0Yjc0NDFjMjM2MTkwNzYzNTg3OTE2OWM2NGFlNzgzNjRlZmM1ZjQ5MSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9rZXJuZWwtZGV2c3JjLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKaW5kZXggYjY4ZDk0NS4uNTk0MGNjOSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2tlcm5lbC1kZXZzcmMuYmIKQEAgLTc4LDcgKzc4LDcgQEAKIAkgICAgY3AgTW9kdWxlLm1hcmtlcnMgJGtlcm5lbGRpci9idWlsZAogCWZpCiAKLQljcCAuY29uZmlnICRrZXJuZWxkaXIvYnVpbGQKKwljcCAtYSAuY29uZmlnICRrZXJuZWxkaXIvYnVpbGQKIAogCSMgVGhpcyBzY3JpcHRzIGNvcHkgYmxvdyB1cCBRQSwgc28gZm9yIG5vdywgd2UgcmVxdWlyZSBhIG1vcmUKIAkjIGNvbXBsZXggJ21ha2Ugc2NyaXB0cycgdG8gcmVzdG9yZSB0aGVzZSwgdmVyc3VzIGNvcHlpbmcgdGhlbQpAQCAtMTI4LDExICsxMjgsMTIgQEAKIAogCSAgICAjIGV4dHJhIGZpbGVzLCBqdXN0IGluIGNhc2UKIAkgICAgY3AgLWEgLS1wYXJlbnRzIHRvb2xzL29ianRvb2wvKiAka2VybmVsZGlyL2J1aWxkLwotCSAgICBjcCAtYSAtLXBhcmVudHMgdG9vbHMvbGliL3N0cl9lcnJvcl9yLmMgJGtlcm5lbGRpci9idWlsZC8KLQkgICAgY3AgLWEgLS1wYXJlbnRzIHRvb2xzL2xpYi9zdHJpbmcuYyAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgdG9vbHMvbGliLyogJGtlcm5lbGRpci9idWlsZC8KIAkgICAgY3AgLWEgLS1wYXJlbnRzIHRvb2xzL2xpYi9zdWJjbWQvKiAka2VybmVsZGlyL2J1aWxkLwogCiAJICAgIGNwIC1hIC0tcGFyZW50cyB0b29scy9pbmNsdWRlLyogJGtlcm5lbGRpci9idWlsZC8KKworCSAgICBjcCAtYSAtLXBhcmVudHMgJChmaW5kIHRvb2xzL2FyY2gvJHtBUkNIfS8gLXR5cGUgZikgJGtlcm5lbGRpci9idWlsZC8KIAlmaQogCiAJaWYgWyAiJHtBUkNIfSIgPSAiYXJtNjQiIF07IHRoZW4KQEAgLTE0Niw3ICsxNDcsNyBAQAogICAgICAgICAgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gvYXJtNjQva2VybmVsL3Zkc28vbm90ZS5TICRrZXJuZWxkaXIvYnVpbGQvCiAgICAgICAgICAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9hcm02NC9rZXJuZWwvdmRzby9nZW5fdmRzb19vZmZzZXRzLnNoICRrZXJuZWxkaXIvYnVpbGQvCiAKLSAgICAgICAgICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL2FybTY0L2tlcm5lbC9tb2R1bGUubGRzICRrZXJuZWxkaXIvYnVpbGQvCisgICAgICAgICAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC9hcm02NC9rZXJuZWwvbW9kdWxlLmxkcyAka2VybmVsZGlyL2J1aWxkLyAyPi9kZXYvbnVsbCB8fCA6CiAJZmkKIAogCWlmIFsgIiR7QVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KQEAgLTE4NSwxOSArMTg2LDIxIEBACiAJY3AgLWEgLS1wYXJlbnRzIHRvb2xzL2luY2x1ZGUvdG9vbHMvYmVfYnl0ZXNoaWZ0LmggJGtlcm5lbGRpci9idWlsZC8KIAogCSMgcmVxdWlyZWQgZm9yIGdlbmVyYXRlIG1pc3Npbmcgc3lzY2FsbHMgcHJlcGFyZSBwaGFzZQotCWNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9lbnRyeS9zeXNjYWxscy9zeXNjYWxsXzMyLnRibCAka2VybmVsZGlyL2J1aWxkCisJY3AgLWEgLS1wYXJlbnRzICQoZmluZCBhcmNoL3g4NiAtdHlwZSBmIC1uYW1lICJzeXNjYWxsXzMyLnRibCIpICRrZXJuZWxkaXIvYnVpbGQKKwljcCAtYSAtLXBhcmVudHMgJChmaW5kIGFyY2gvYXJtIC10eXBlIGYgLW5hbWUgIioudGJsIikgJGtlcm5lbGRpci9idWlsZCAyPi9kZXYvbnVsbCB8fCA6CiAKIAlpZiBbICIke0FSQ0h9IiA9ICJ4ODYiIF07IHRoZW4KIAkgICAgIyBmaWxlcyBmb3IgJ21ha2UgcHJlcGFyZScgdG8gc3VjY2VlZCB3aXRoIGtlcm5lbC1kZXZlbAotCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvZW50cnkvc3lzY2FsbHMvc3lzY2FsbF8zMi50YmwgJGtlcm5lbGRpci9idWlsZC8KLQkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGx0Ymwuc2ggJGtlcm5lbGRpci9idWlsZC8KLQkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxoZHIuc2ggJGtlcm5lbGRpci9idWlsZC8KLQkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L2VudHJ5L3N5c2NhbGxzL3N5c2NhbGxfNjQudGJsICRrZXJuZWxkaXIvYnVpbGQvCisJICAgIGNwIC1hIC0tcGFyZW50cyAkKGZpbmQgYXJjaC94ODYgLXR5cGUgZiAtbmFtZSAic3lzY2FsbF8zMi50YmwiKSAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgJChmaW5kIGFyY2gveDg2IC10eXBlIGYgLW5hbWUgInN5c2NhbGx0Ymwuc2giKSAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgJChmaW5kIGFyY2gveDg2IC10eXBlIGYgLW5hbWUgInN5c2NhbGxoZHIuc2giKSAka2VybmVsZGlyL2J1aWxkLworCSAgICBjcCAtYSAtLXBhcmVudHMgJChmaW5kIGFyY2gveDg2IC10eXBlIGYgLW5hbWUgInN5c2NhbGxfNjQudGJsIikgJGtlcm5lbGRpci9idWlsZC8KIAkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L3Rvb2xzL3JlbG9jc18zMi5jICRrZXJuZWxkaXIvYnVpbGQvCiAJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni90b29scy9yZWxvY3NfNjQuYyAka2VybmVsZGlyL2J1aWxkLwogCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvdG9vbHMvcmVsb2NzLmMgJGtlcm5lbGRpci9idWlsZC8KIAkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L3Rvb2xzL3JlbG9jc19jb21tb24uYyAka2VybmVsZGlyL2J1aWxkLwogCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvdG9vbHMvcmVsb2NzLmggJGtlcm5lbGRpci9idWlsZC8KKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L3Rvb2xzL2dlbi1pbnNuLWF0dHIteDg2LmF3ayAka2VybmVsZGlyL2J1aWxkLyAyPi9kZXYvbnVsbCB8fCA6CiAJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9wdXJnYXRvcnkvcHVyZ2F0b3J5LmMgJGtlcm5lbGRpci9idWlsZC8KIAogCSAgICAjIDQuMTggKyBoYXZlIHVuaWZpZWQgdGhlIHB1cmdhdG9yeSBmaWxlcywgc28gd2UgaWdub3JlIGFueSBlcnJvcnMgaWYKQEAgLTIxMyw2ICsyMTYsMTAgQEAKIAkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L2Jvb3Qvc3RyaW5nLmMgJGtlcm5lbGRpci9idWlsZC8KIAkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L2Jvb3QvY29tcHJlc3NlZC9zdHJpbmcuYyAka2VybmVsZGlyL2J1aWxkLyAyPi9kZXYvbnVsbCB8fCA6CiAJICAgIGNwIC1hIC0tcGFyZW50cyBhcmNoL3g4Ni9ib290L2N0eXBlLmggJGtlcm5lbGRpci9idWlsZC8KKworCSAgICAjIG9ianRvb2wgcmVxdWlyZXMgdGhlc2UgZmlsZXMKKwkgICAgY3AgLWEgLS1wYXJlbnRzIGFyY2gveDg2L2xpYi9pbmF0LmMgJGtlcm5lbGRpci9idWlsZC8gMj4vZGV2L251bGwgfHwgOgorCSAgICBjcCAtYSAtLXBhcmVudHMgYXJjaC94ODYvbGliL2luc24uYyAka2VybmVsZGlyL2J1aWxkLyAyPi9kZXYvbnVsbCB8fCA6CiAJZmkKIAogCWlmIFsgIiR7QVJDSH0iID0gIm1pcHMiIF07IHRoZW4KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tZGV2LmJiCmluZGV4IDE2M2YyODAuLjA2YTkxMDggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1kZXYuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLWRldi5iYgpAQCAtMzAsMTEgKzMwLDExIEBACiBTUkNSRVZfbWFjaGluZSA/PSAnJHtAb2UudXRpbHMuY29uZGl0aW9uYWwoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIsICJsaW51eC15b2N0by1kZXYiLCAiJHtBVVRPUkVWfSIsICIyOTU5NDQwNGQ3ZmU3M2NkODBlYWE0ZWU4YzQzZGNjNTM5NzBjNjBlIiwgZCl9JwogU1JDUkVWX21ldGEgPz0gJyR7QG9lLnV0aWxzLmNvbmRpdGlvbmFsKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiLCAibGludXgteW9jdG8tZGV2IiwgIiR7QVVUT1JFVn0iLCAiMjk1OTQ0MDRkN2ZlNzNjZDgwZWFhNGVlOGM0M2RjYzUzOTcwYzYwZSIsIGQpfScKIAotTElOVVhfVkVSU0lPTiA/PSAiNS4zLXJjKyIKK0xJTlVYX1ZFUlNJT04gPz0gIjUuNi1yYysiCiBMSU5VWF9WRVJTSU9OX0VYVEVOU0lPTiA/PSAiLXlvY3RvZGV2LSR7TElOVVhfS0VSTkVMX1RZUEV9IgogUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKIAotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02YmM1MzhlZDViZDlhN2ZjOTM5ODA4NmFlZGNkN2U0NiIKIAogREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCiBERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKQEAgLTQ4LDcgKzQ4LDcgQEAKIEtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKIEtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIGZlYXR1cmVzL2RybS1ib2Nocy9kcm0tYm9jaHMuc2NjIgogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgogCiBLRVJORUxfVkVSU0lPTl9TQU5JVFlfU0tJUCA9ICIxIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzQuMTkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzJlZGI2MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNC4xOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ0ICswLDAgQEAKLUtCUkFOQ0ggPz0gInY0LjE5L3N0YW5kYXJkL3ByZWVtcHQtcnQvYmFzZSIKLQotcmVxdWlyZSByZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKLQotIyBTa2lwIHByb2Nlc3Npbmcgb2YgdGhpcyByZWNpcGUgaWYgaXQgaXMgbm90IGV4cGxpY2l0bHkgc3BlY2lmaWVkIGFzIHRoZQotIyBQUkVGRVJSRURfUFJPVklERVIgZm9yIHZpcnR1YWwva2VybmVsLiBUaGlzIGF2b2lkcyBlcnJvcnMgd2hlbiB0cnlpbmcKLSMgdG8gYnVpbGQgbXVsdGlwbGUgdmlydHVhbC9rZXJuZWwgcHJvdmlkZXJzLCBlLmcuIGFzIGRlcGVuZGVuY3kgb2YKLSMgY29yZS1pbWFnZS1ydC1zZGssIGNvcmUtaW1hZ2UtcnQuCi1weXRob24gKCkgewotICAgIGlmIGQuZ2V0VmFyKCJLRVJORUxfUEFDS0FHRV9OQU1FIikgPT0gImtlcm5lbCIgYW5kIGQuZ2V0VmFyKCJQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwiKSAhPSAibGludXgteW9jdG8tcnQiOgotICAgICAgICByYWlzZSBiYi5wYXJzZS5Ta2lwUmVjaXBlKCJTZXQgUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIHRvIGxpbnV4LXlvY3RvLXJ0IHRvIGVuYWJsZSBpdCIpCi19Ci0KLVNSQ1JFVl9tYWNoaW5lID89ICIwZTRhNzllNjA4ZTkyODMwNjkzZTUxMWEzZGQyODJjZTdjM2IzZjQxIgotU1JDUkVWX21ldGEgPz0gImFkNmY4YjM1NzcyMGNhODE2N2EwOTA3MTNiNzc0NjIzMGNmNGIzMTQiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNC4xOTtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1MSU5VWF9WRVJTSU9OID89ICI0LjE5Ljc4IgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKLQotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCi1ERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKLQotUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11YXJtdjV8cWVtdWFybTY0fHFlbXVwcGN8cWVtdW1pcHMpIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtdjUgPSAidmVyc2F0aWxlLXBiLmR0YiIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIGZlYXR1cmVzL3Rhc2tzdGF0cy90YXNrc3RhdHMuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MgZmVhdHVyZXMvZHJtLWJvY2hzL2RybS1ib2Nocy5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwdGVzdCIsICIgZmVhdHVyZXMvc2NzaS9zY3NpLWRlYnVnLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNS4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXJ0XzUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNDIzMzMxZS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDQgKzAsMCBAQAotS0JSQU5DSCA/PSAidjUuMi9zdGFuZGFyZC9wcmVlbXB0LXJ0L2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgU2tpcCBwcm9jZXNzaW5nIG9mIHRoaXMgcmVjaXBlIGlmIGl0IGlzIG5vdCBleHBsaWNpdGx5IHNwZWNpZmllZCBhcyB0aGUKLSMgUFJFRkVSUkVEX1BST1ZJREVSIGZvciB2aXJ0dWFsL2tlcm5lbC4gVGhpcyBhdm9pZHMgZXJyb3JzIHdoZW4gdHJ5aW5nCi0jIHRvIGJ1aWxkIG11bHRpcGxlIHZpcnR1YWwva2VybmVsIHByb3ZpZGVycywgZS5nLiBhcyBkZXBlbmRlbmN5IG9mCi0jIGNvcmUtaW1hZ2UtcnQtc2RrLCBjb3JlLWltYWdlLXJ0LgotcHl0aG9uICgpIHsKLSAgICBpZiBkLmdldFZhcigiS0VSTkVMX1BBQ0tBR0VfTkFNRSIpID09ICJrZXJuZWwiIGFuZCBkLmdldFZhcigiUFJFRkVSUkVEX1BST1ZJREVSX3ZpcnR1YWwva2VybmVsIikgIT0gImxpbnV4LXlvY3RvLXJ0IjoKLSAgICAgICAgcmFpc2UgYmIucGFyc2UuU2tpcFJlY2lwZSgiU2V0IFBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCB0byBsaW51eC15b2N0by1ydCB0byBlbmFibGUgaXQiKQotfQotCi1TUkNSRVZfbWFjaGluZSA/PSAiNTVlM2VlMzg3YjA3M2Q4ZDYwOWU4ODk5ODU5NTYxMzQwZDhiNjkxMSIKLVNSQ1JFVl9tZXRhID89ICJiZDA3NjJjZDEzOGYxNjI0YjVhNWY4NjY5Y2ZhM2FjMmI3MWNiODdiIgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTUuMjtkZXN0c3VmZml4PSR7S01FVEF9IgotCi1MSU5VWF9WRVJTSU9OID89ICI1LjIuMjAiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgotCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKLURFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1MSU5VWF9LRVJORUxfVFlQRSA9ICJwcmVlbXB0LXJ0IgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAiKHFlbXV4ODZ8cWVtdXg4Ni02NHxxZW11YXJtfHFlbXVhcm12NXxxZW11YXJtNjR8cWVtdXBwY3xxZW11bWlwcykiCi0KLUtFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm12NSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MgZmVhdHVyZXMvdGFza3N0YXRzL3Rhc2tzdGF0cy5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyBmZWF0dXJlcy9kcm0tYm9jaHMvZHJtLWJvY2hzLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInB0ZXN0IiwgIiBmZWF0dXJlcy9zY3NpL3Njc2ktZGVidWcuc2NjIiwgIiIgLGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by1ydF81LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNS40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllNzRlYzEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tcnRfNS40LmJiCkBAIC0wLDAgKzEsNDQgQEAKK0tCUkFOQ0ggPz0gInY1LjQvc3RhbmRhcmQvcHJlZW1wdC1ydC9iYXNlIgorCityZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworCisjIFNraXAgcHJvY2Vzc2luZyBvZiB0aGlzIHJlY2lwZSBpZiBpdCBpcyBub3QgZXhwbGljaXRseSBzcGVjaWZpZWQgYXMgdGhlCisjIFBSRUZFUlJFRF9QUk9WSURFUiBmb3IgdmlydHVhbC9rZXJuZWwuIFRoaXMgYXZvaWRzIGVycm9ycyB3aGVuIHRyeWluZworIyB0byBidWlsZCBtdWx0aXBsZSB2aXJ0dWFsL2tlcm5lbCBwcm92aWRlcnMsIGUuZy4gYXMgZGVwZW5kZW5jeSBvZgorIyBjb3JlLWltYWdlLXJ0LXNkaywgY29yZS1pbWFnZS1ydC4KK3B5dGhvbiAoKSB7CisgICAgaWYgZC5nZXRWYXIoIktFUk5FTF9QQUNLQUdFX05BTUUiKSA9PSAia2VybmVsIiBhbmQgZC5nZXRWYXIoIlBSRUZFUlJFRF9QUk9WSURFUl92aXJ0dWFsL2tlcm5lbCIpICE9ICJsaW51eC15b2N0by1ydCI6CisgICAgICAgIHJhaXNlIGJiLnBhcnNlLlNraXBSZWNpcGUoIlNldCBQUkVGRVJSRURfUFJPVklERVJfdmlydHVhbC9rZXJuZWwgdG8gbGludXgteW9jdG8tcnQgdG8gZW5hYmxlIGl0IikKK30KKworU1JDUkVWX21hY2hpbmUgPz0gIjc5MDM3YWU1OGU2YjBkZmQwYzYzZDRhMGUxMzFmMWJkNWVmZTdlNTMiCitTUkNSRVZfbWV0YSA/PSAiYmVlNTU0ZTU5NWU0OWM5NjM5MDBkMWM3OGMwMWFiMmQwNDEzODJlNyIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7YnJhbmNoPSR7S0JSQU5DSH07bmFtZT1tYWNoaW5lIFwKKyAgICAgICAgICAgZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcveW9jdG8ta2VybmVsLWNhY2hlO3R5cGU9a21ldGE7bmFtZT1tZXRhO2JyYW5jaD15b2N0by01LjQ7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKKworTElOVVhfVkVSU0lPTiA/PSAiNS40LjI3IgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKKworREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCitERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKKworUFYgPSAiJHtMSU5VWF9WRVJTSU9OfStnaXQke1NSQ1BWfSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworTElOVVhfS0VSTkVMX1RZUEUgPSAicHJlZW1wdC1ydCIKKworQ09NUEFUSUJMRV9NQUNISU5FID0gIihxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11YXJtdjV8cWVtdWFybTY0fHFlbXVwcGN8cWVtdW1pcHMpIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtdjUgPSAidmVyc2F0aWxlLXBiLmR0YiIKKworIyBGdW5jdGlvbmFsaXR5IGZsYWdzCitLRVJORUxfRVhUUkFfRkVBVFVSRVMgPz0gImZlYXR1cmVzL25ldGZpbHRlci9uZXRmaWx0ZXIuc2NjIGZlYXR1cmVzL3Rhc2tzdGF0cy90YXNrc3RhdHMuc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtLRVJORUxfRVhUUkFfRkVBVFVSRVN9IgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgY2ZnL3ZpcnRpby5zY2MgZmVhdHVyZXMvZHJtLWJvY2hzL2RybS1ib2Nocy5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODY9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2LTY0PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwdGVzdCIsICIgZmVhdHVyZXMvc2NzaS9zY3NpLWRlYnVnLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjE5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLXRpbnlfNC4xOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDY4MmFlZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV80LjE5LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotS0JSQU5DSCA/PSAidjQuMTkvc3RhbmRhcmQvdGlueS9iYXNlIgotS0JSQU5DSF9xZW11YXJtICA/PSAidjQuMTkvc3RhbmRhcmQvdGlueS9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAidGlueSIKLUtDT05GSUdfTU9ERSA9ICItLWFsbG5vY29uZmlnIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi1MSU5VWF9WRVJTSU9OID89ICI0LjE5Ljc4IgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YmJlYTgxNWVlMjc5NWIyZjQyMzA4MjZjMGM2Yjg4MTQiCi0KLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgotREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCi0KLUtNRVRBID0gImtlcm5lbC1tZXRhIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCi0KLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm0gPz0gImJlNTAwMDE4MDhmMDBlZmVlNTM4YzJhM2U3YzBhNWEyYTJkZjY1ZGEiCi1TUkNSRVZfbWFjaGluZSA/PSAiYTkxNWZiZWFlOGVkOTg3NDAyZjY5NjY2ZDkwYmVmMTVhMDFjNTgyMyIKLVNSQ1JFVl9tZXRhID89ICJhZDZmOGIzNTc3MjBjYTgxNjdhMDkwNzEzYjc3NDYyMzBjZjRiMzE0IgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1TUkNfVVJJID0gImdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL2xpbnV4LXlvY3RvLmdpdDticmFuY2g9JHtLQlJBTkNIfTtuYW1lPW1hY2hpbmUgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTk7ZGVzdHN1ZmZpeD0ke0tNRVRBfSIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXV4ODZ8cWVtdXg4Ni02NHxxZW11YXJtfHFlbXVhcm12NSIKLQotIyBGdW5jdGlvbmFsaXR5IGZsYWdzCi1LRVJORUxfRkVBVFVSRVMgPSAiIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtdjUgPSAidmVyc2F0aWxlLXBiLmR0YiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzUuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzUuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjcyMzlkMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV81LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1LQlJBTkNIID89ICJ2NS4yL3N0YW5kYXJkL3RpbnkvYmFzZSIKLUtCUkFOQ0hfcWVtdWFybSAgPz0gInY1LjIvc3RhbmRhcmQvdGlueS9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKLQotTElOVVhfS0VSTkVMX1RZUEUgPSAidGlueSIKLUtDT05GSUdfTU9ERSA9ICItLWFsbG5vY29uZmlnIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi1MSU5VWF9WRVJTSU9OID89ICI1LjIuMjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKLQotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCi1ERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKLQotS01FVEEgPSAia2VybmVsLW1ldGEiCi1LQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKLQotU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiNTAxZDY4MDUzNTkwM2FjYzAwODA4YzM2ZjJjYzA3ZjJkYzcyNWFkYyIKLVNSQ1JFVl9tYWNoaW5lID89ICJkZDI1YTA0ZmM1ZTJlNDU0OWZjOWI4NjE1N2EwMWUwYzcyYjUzYjAzIgotU1JDUkVWX21ldGEgPz0gImJkMDc2MmNkMTM4ZjE2MjRiNWE1Zjg2NjljZmEzYWMyYjcxY2I4N2IiCi0KLVBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNS4yO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUNPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11YXJtdjUiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0ZFQVRVUkVTID0gIiIKLQotS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybXY1ID0gInZlcnNhdGlsZS1wYi5kdGIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV81LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8tdGlueV81LjQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmE1ZTY2OAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by10aW55XzUuNC5iYgpAQCAtMCwwICsxLDMyIEBACitLQlJBTkNIID89ICJ2NS40L3N0YW5kYXJkL3RpbnkvYmFzZSIKK0tCUkFOQ0hfcWVtdWFybSAgPz0gInY1LjQvc3RhbmRhcmQvdGlueS9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKKworTElOVVhfS0VSTkVMX1RZUEUgPSAidGlueSIKK0tDT05GSUdfTU9ERSA9ICItLWFsbG5vY29uZmlnIgorCityZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYworCitMSU5VWF9WRVJTSU9OID89ICI1LjQuMjciCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKKworREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0FSQ0gnLCAneDg2JywgJ2VsZnV0aWxzLW5hdGl2ZScsICcnLCBkKX0iCitERVBFTkRTICs9ICJvcGVuc3NsLW5hdGl2ZSB1dGlsLWxpbnV4LW5hdGl2ZSIKKworS01FVEEgPSAia2VybmVsLW1ldGEiCitLQ09ORl9CU1BfQVVESVRfTEVWRUwgPSAiMiIKKworU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiNWMyZDM1ZWViNGJlMGU4YmFlNGNmNWVlMDczM2U0MWZmMTI2MmZmMyIKK1NSQ1JFVl9tYWNoaW5lID89ICIwMzE0MmFjYmEwNmU4YjMzODg4NDEwYTUxODM1OGE2MjZkY2ViNzIwIgorU1JDUkVWX21ldGEgPz0gImJlZTU1NGU1OTVlNDljOTYzOTAwZDFjNzhjMDFhYjJkMDQxMzgyZTciCisKK1BWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O2JyYW5jaD0ke0tCUkFOQ0h9O25hbWU9bWFjaGluZSBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNS40O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCisKK0NPTVBBVElCTEVfTUFDSElORSA9ICJxZW11eDg2fHFlbXV4ODYtNjR8cWVtdWFybXxxZW11YXJtdjUiCisKKyMgRnVuY3Rpb25hbGl0eSBmbGFncworS0VSTkVMX0ZFQVRVUkVTID0gIiIKKworS0VSTkVMX0RFVklDRVRSRUVfcWVtdWFybXY1ID0gInZlcnNhdGlsZS1wYi5kdGIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwppbmRleCBmMTkxOTQ2Li45MWRmOWMxIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0by5pbmMKQEAgLTM5LDIyICszOSw2IEBACiAjIGFuZCBpdCBjYW4gYmUgc3BlY2lmaWMgdG8gdGhlIG1hY2hpbmUgb3Igc2hhcmVkCiAjIEtNQUNISU5FID0gIlVOREVGSU5FRCIKIAotIyBUaGUgZGlzdHJvIG9yIGxvY2FsLmNvbmYgc2hvdWxkIHNldCB0aGlzLCBidXQgaWYgbm9ib2R5IGNhcmVzLi4uCi1MSU5VWF9LRVJORUxfVFlQRSA/Pz0gInN0YW5kYXJkIgotCi0jIEtNRVRBID89ICIiCi1LQlJBTkNIID89ICJtYXN0ZXIiCi1LTUFDSElORSA/PSAiJHtNQUNISU5FfSIKLVNSQ1JFVl9GT1JNQVQgPz0gIm1ldGFfbWFjaGluZSIgCi0KLSMgTEVWRUxTOgotIyAgIDA6IG5vIHJlcG9ydGluZwotIyAgIDE6IHJlcG9ydCBvcHRpb25zIHRoYXQgYXJlIHNwZWNpZmllZCwgYnV0IG5vdCBpbiB0aGUgZmluYWwgY29uZmlnCi0jICAgMjogcmVwb3J0IG9wdGlvbnMgdGhhdCBhcmUgbm90IGhhcmR3YXJlIHJlbGF0ZWQsIGJ1dCBzZXQgYnkgYSBCU1AKLUtDT05GX0FVRElUX0xFVkVMID89ICIxIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID89ICIwIgotS01FVEFfQVVESVQgPz0gInllcyIKLQogTElOVVhfVkVSU0lPTl9FWFRFTlNJT04gPz89ICIteW9jdG8tJHtMSU5VWF9LRVJORUxfVFlQRX0iCiAKICMgUGljayB1cCBzaGFyZWQgZnVuY3Rpb25zCkBAIC02OSwxMCArNTMsNSBAQAogCWZpCiB9CiAKLSMgZXh0cmEgdGFza3MKLWFkZHRhc2sga2VybmVsX3ZlcnNpb25fc2FuaXR5X2NoZWNrIGFmdGVyIGRvX2tlcm5lbF9tZXRhZGF0YSBkb19rZXJuZWxfY2hlY2tvdXQgYmVmb3JlIGRvX2NvbXBpbGUKLWFkZHRhc2sgdmFsaWRhdGVfYnJhbmNoZXMgYmVmb3JlIGRvX3BhdGNoIGFmdGVyIGRvX2tlcm5lbF9jaGVja291dAotYWRkdGFzayBrZXJuZWxfY29uZmlnY2hlY2sgYWZ0ZXIgZG9fY29uZmlndXJlIGJlZm9yZSBkb19jb21waWxlCi0KICMgZW5hYmxlIGtlcm5lbC1zYW1wbGUgZm9yIG9lcWEvcnVudGltZS9jYXNlcydzIGtzYW1wbGUucHkgdGVzdAogS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11YWxsPSIgZmVhdHVyZXMva2VybmVsLXNhbXBsZS9rZXJuZWwtc2FtcGxlLnNjYyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b180LjE5LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ4Y2IyMGYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzQuMTkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MCArMCwwIEBACi1LQlJBTkNIID89ICJ2NC4xOS9zdGFuZGFyZC9iYXNlIgotCi1yZXF1aXJlIHJlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvLmluYwotCi0jIGJvYXJkIHNwZWNpZmljIGJyYW5jaGVzCi1LQlJBTkNIX3FlbXVhcm0gID89ICJ2NC4xOS9zdGFuZGFyZC9hcm0tdmVyc2F0aWxlLTkyNmVqcyIKLUtCUkFOQ0hfcWVtdWFybTY0ID89ICJ2NC4xOS9zdGFuZGFyZC9xZW11YXJtNjQiCi1LQlJBTkNIX3FlbXVtaXBzID89ICJ2NC4xOS9zdGFuZGFyZC9tdGktbWFsdGEzMiIKLUtCUkFOQ0hfcWVtdXBwYyAgPz0gInY0LjE5L3N0YW5kYXJkL3FlbXVwcGMiCi1LQlJBTkNIX3FlbXV4ODYgID89ICJ2NC4xOS9zdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9xZW11eDg2LTY0ID89ICJ2NC4xOS9zdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9xZW11bWlwczY0ID89ICJ2NC4xOS9zdGFuZGFyZC9tdGktbWFsdGE2NCIKLQotU1JDUkVWX21hY2hpbmVfcWVtdWFybSA/PSAiN2ZkZTUxYWJjYWYzODkxOTNjZTVkODdlYmZiOGU4ZmI2NmE5MjcxYSIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVhcm02NCA/PSAiYTkxNWZiZWFlOGVkOTg3NDAyZjY5NjY2ZDkwYmVmMTVhMDFjNTgyMyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzID89ICI4YWM2OGQ0MmJlYjI0YjI3NWFjMGQyYTU0YTBhMjI5MTk3MGU1ZGRlIgotU1JDUkVWX21hY2hpbmVfcWVtdXBwYyA/PSAiYTkxNWZiZWFlOGVkOTg3NDAyZjY5NjY2ZDkwYmVmMTVhMDFjNTgyMyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXV4ODYgPz0gImE5MTVmYmVhZThlZDk4NzQwMmY2OTY2NmQ5MGJlZjE1YTAxYzU4MjMiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2LTY0ID89ICJhOTE1ZmJlYWU4ZWQ5ODc0MDJmNjk2NjZkOTBiZWYxNWEwMWM1ODIzIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHM2NCA/PSAiZWEyY2I4NzMxMzA2ZjczNGJmMDIyNzU3NWUwNGNhZmFjN2RmYWRlMCIKLVNSQ1JFVl9tYWNoaW5lID89ICJhOTE1ZmJlYWU4ZWQ5ODc0MDJmNjk2NjZkOTBiZWYxNWEwMWM1ODIzIgotU1JDUkVWX21ldGEgPz0gImFkNmY4YjM1NzcyMGNhODE2N2EwOTA3MTNiNzc0NjIzMGNmNGIzMTQiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LnlvY3RvcHJvamVjdC5vcmcvbGludXgteW9jdG8uZ2l0O25hbWU9bWFjaGluZTticmFuY2g9JHtLQlJBTkNIfTsgXAotICAgICAgICAgICBnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy95b2N0by1rZXJuZWwtY2FjaGU7dHlwZT1rbWV0YTtuYW1lPW1ldGE7YnJhbmNoPXlvY3RvLTQuMTk7ZGVzdHN1ZmZpeD0ke0tNRVRBfSBcCi0gICAgICAgICAgIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iYmVhODE1ZWUyNzk1YjJmNDIzMDgyNmMwYzZiODgxNCIKLUxJTlVYX1ZFUlNJT04gPz0gIjQuMTkuNzgiCi0KLURFUEVORFMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBUkNIJywgJ3g4NicsICdlbGZ1dGlscy1uYXRpdmUnLCAnJywgZCl9IgotREVQRU5EUyArPSAib3BlbnNzbC1uYXRpdmUgdXRpbC1saW51eC1uYXRpdmUiCi0KLVBWID0gIiR7TElOVVhfVkVSU0lPTn0rZ2l0JHtTUkNQVn0iCi0KLUtNRVRBID0gImtlcm5lbC1tZXRhIgotS0NPTkZfQlNQX0FVRElUX0xFVkVMID0gIjIiCi0KLUtFUk5FTF9ERVZJQ0VUUkVFX3FlbXVhcm12NSA9ICJ2ZXJzYXRpbGUtcGIuZHRiIgotCi1DT01QQVRJQkxFX01BQ0hJTkUgPSAicWVtdWFybXxxZW11YXJtdjV8cWVtdWFybTY0fHFlbXV4ODZ8cWVtdXBwY3xxZW11bWlwc3xxZW11bWlwczY0fHFlbXV4ODYtNjQiCi0KLSMgRnVuY3Rpb25hbGl0eSBmbGFncwotS0VSTkVMX0VYVFJBX0ZFQVRVUkVTID89ICJmZWF0dXJlcy9uZXRmaWx0ZXIvbmV0ZmlsdGVyLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmQgPSAiICR7S0VSTkVMX0VYVFJBX0ZFQVRVUkVTfSIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdWFsbD0iIGNmZy92aXJ0aW8uc2NjIGZlYXR1cmVzL2RybS1ib2Nocy9kcm0tYm9jaHMuc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZF9xZW11eDg2PSIgY2ZnL3NvdW5kLnNjYyBjZmcvcGFyYXZpcnRfa3ZtLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Ni02ND0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIiBjZmcveDMyLnNjYyIsICIiICxkKX0iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0BiYi51dGlscy5jb250YWlucygiRElTVFJPX0ZFQVRVUkVTIiwgInB0ZXN0IiwgIiBmZWF0dXJlcy9zY3NpL3Njc2ktZGVidWcuc2NjIiwgIiIgLGQpfSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA4Zjc1ZjY3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9saW51eC9saW51eC15b2N0b181LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NCArMCwwIEBACi1LQlJBTkNIID89ICJ2NS4yL3N0YW5kYXJkL2Jhc2UiCi0KLXJlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCi0KLSMgYm9hcmQgc3BlY2lmaWMgYnJhbmNoZXMKLUtCUkFOQ0hfcWVtdWFybSAgPz0gInY1LjIvc3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCi1LQlJBTkNIX3FlbXVhcm02NCA/PSAidjUuMi9zdGFuZGFyZC9xZW11YXJtNjQiCi1LQlJBTkNIX3FlbXVtaXBzID89ICJ2NS4yL3N0YW5kYXJkL210aS1tYWx0YTMyIgotS0JSQU5DSF9xZW11cHBjICA/PSAidjUuMi9zdGFuZGFyZC9xZW11cHBjIgotS0JSQU5DSF9xZW11cmlzY3Y2NCAgPz0gInY1LjIvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdXg4NiAgPz0gInY1LjIvc3RhbmRhcmQvYmFzZSIKLUtCUkFOQ0hfcWVtdXg4Ni02NCA/PSAidjUuMi9zdGFuZGFyZC9iYXNlIgotS0JSQU5DSF9xZW11bWlwczY0ID89ICJ2NS4yL3N0YW5kYXJkL210aS1tYWx0YTY0IgotCi1TUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICJmY2JlNTFkZmEwYTc2M2EwN2U0Y2Q2NjIwNGQ2YzBiYTA1NDY2M2NlIgotU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICJkZDI1YTA0ZmM1ZTJlNDU0OWZjOWI4NjE1N2EwMWUwYzcyYjUzYjAzIgotU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjljYWQ3YmI4YmNkMzY4NmY1ODBhMzM2Mzg0N2VlOWM5ZTg2OTI4YjEiCi1TUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICJkZDI1YTA0ZmM1ZTJlNDU0OWZjOWI4NjE1N2EwMWUwYzcyYjUzYjAzIgotU1JDUkVWX21hY2hpbmVfcWVtdXJpc2N2NjQgPz0gImRkMjVhMDRmYzVlMmU0NTQ5ZmM5Yjg2MTU3YTAxZTBjNzJiNTNiMDMiCi1TUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICJkZDI1YTA0ZmM1ZTJlNDU0OWZjOWI4NjE1N2EwMWUwYzcyYjUzYjAzIgotU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiZGQyNWEwNGZjNWUyZTQ1NDlmYzliODYxNTdhMDFlMGM3MmI1M2IwMyIKLVNSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gImRjMmJlMWE1NDZlOTM3Mzc0NTkwY2UzODU4YjcxNzQ4OWRlZDJjMjEiCi1TUkNSRVZfbWFjaGluZSA/PSAiZGQyNWEwNGZjNWUyZTQ1NDlmYzliODYxNTdhMDFlMGM3MmI1M2IwMyIKLVNSQ1JFVl9tZXRhID89ICJiZDA3NjJjZDEzOGYxNjI0YjVhNWY4NjY5Y2ZhM2FjMmI3MWNiODdiIgotCi0jIHJlbWFwIHFlbXVhcm0gdG8gcWVtdWFybWExNSBmb3IgdGhlIDUuMiBrZXJuZWwKLSMgS01BQ0hJTkVfcWVtdWFybSA/PSAicWVtdWFybWExNSIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCi0gICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNS4yO2Rlc3RzdWZmaXg9JHtLTUVUQX0iCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgotTElOVVhfVkVSU0lPTiA/PSAiNS4yLjIwIgotCi1ERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKLURFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgotCi1QViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgotCi1LTUVUQSA9ICJrZXJuZWwtbWV0YSIKLUtDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgotCi1LRVJORUxfREVWSUNFVFJFRV9xZW11YXJtdjUgPSAidmVyc2F0aWxlLXBiLmR0YiIKLQotQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXVhcm18cWVtdWFybXY1fHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0fHFlbXVyaXNjdjY0IgotCi0jIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKLUtFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyBmZWF0dXJlcy9kcm0tYm9jaHMvZHJtLWJvY2hzLnNjYyIKLUtFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCi1LRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgotS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwdGVzdCIsICIgZmVhdHVyZXMvc2NzaS9zY3NpLWRlYnVnLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG9fNS40LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuNC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yNWU5MzNkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2xpbnV4L2xpbnV4LXlvY3RvXzUuNC5iYgpAQCAtMCwwICsxLDU0IEBACitLQlJBTkNIID89ICJ2NS40L3N0YW5kYXJkL2Jhc2UiCisKK3JlcXVpcmUgcmVjaXBlcy1rZXJuZWwvbGludXgvbGludXgteW9jdG8uaW5jCisKKyMgYm9hcmQgc3BlY2lmaWMgYnJhbmNoZXMKK0tCUkFOQ0hfcWVtdWFybSAgPz0gInY1LjQvc3RhbmRhcmQvYXJtLXZlcnNhdGlsZS05MjZlanMiCitLQlJBTkNIX3FlbXVhcm02NCA/PSAidjUuNC9zdGFuZGFyZC9xZW11YXJtNjQiCitLQlJBTkNIX3FlbXVtaXBzID89ICJ2NS40L3N0YW5kYXJkL210aS1tYWx0YTMyIgorS0JSQU5DSF9xZW11cHBjICA/PSAidjUuNC9zdGFuZGFyZC9xZW11cHBjIgorS0JSQU5DSF9xZW11cmlzY3Y2NCAgPz0gInY1LjQvc3RhbmRhcmQvYmFzZSIKK0tCUkFOQ0hfcWVtdXg4NiAgPz0gInY1LjQvc3RhbmRhcmQvYmFzZSIKK0tCUkFOQ0hfcWVtdXg4Ni02NCA/PSAidjUuNC9zdGFuZGFyZC9iYXNlIgorS0JSQU5DSF9xZW11bWlwczY0ID89ICJ2NS40L3N0YW5kYXJkL210aS1tYWx0YTY0IgorCitTUkNSRVZfbWFjaGluZV9xZW11YXJtID89ICJhYjg0OTI0OGI0NTQwM2M3ZDZmMWZiOGU4ZjU3ODQwY2MyODgwNjE4IgorU1JDUkVWX21hY2hpbmVfcWVtdWFybTY0ID89ICIwMzE0MmFjYmEwNmU4YjMzODg4NDEwYTUxODM1OGE2MjZkY2ViNzIwIgorU1JDUkVWX21hY2hpbmVfcWVtdW1pcHMgPz0gIjk2N2ExNzA4Y2JiZmUxYjUyNGRjMjhmMDRmYTVlMGQ3OWEyNzBiZjUiCitTUkNSRVZfbWFjaGluZV9xZW11cHBjID89ICIwMzE0MmFjYmEwNmU4YjMzODg4NDEwYTUxODM1OGE2MjZkY2ViNzIwIgorU1JDUkVWX21hY2hpbmVfcWVtdXJpc2N2NjQgPz0gIjAzMTQyYWNiYTA2ZThiMzM4ODg0MTBhNTE4MzU4YTYyNmRjZWI3MjAiCitTUkNSRVZfbWFjaGluZV9xZW11eDg2ID89ICIwMzE0MmFjYmEwNmU4YjMzODg4NDEwYTUxODM1OGE2MjZkY2ViNzIwIgorU1JDUkVWX21hY2hpbmVfcWVtdXg4Ni02NCA/PSAiMDMxNDJhY2JhMDZlOGIzMzg4ODQxMGE1MTgzNThhNjI2ZGNlYjcyMCIKK1NSQ1JFVl9tYWNoaW5lX3FlbXVtaXBzNjQgPz0gImQzZTg1MGRhODMwMjQxYzQyNGQ1NTdhNmEwNzI1MjdlMDllNzg0YWIiCitTUkNSRVZfbWFjaGluZSA/PSAiMDMxNDJhY2JhMDZlOGIzMzg4ODQxMGE1MTgzNThhNjI2ZGNlYjcyMCIKK1NSQ1JFVl9tZXRhID89ICJiZWU1NTRlNTk1ZTQ5Yzk2MzkwMGQxYzc4YzAxYWIyZDA0MTM4MmU3IgorCisjIHJlbWFwIHFlbXVhcm0gdG8gcWVtdWFybWExNSBmb3IgdGhlIDUuNCBrZXJuZWwKKyMgS01BQ0hJTkVfcWVtdWFybSA/PSAicWVtdWFybWExNSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQueW9jdG9wcm9qZWN0Lm9yZy9saW51eC15b2N0by5naXQ7bmFtZT1tYWNoaW5lO2JyYW5jaD0ke0tCUkFOQ0h9OyBcCisgICAgICAgICAgIGdpdDovL2dpdC55b2N0b3Byb2plY3Qub3JnL3lvY3RvLWtlcm5lbC1jYWNoZTt0eXBlPWttZXRhO25hbWU9bWV0YTticmFuY2g9eW9jdG8tNS40O2Rlc3RzdWZmaXg9JHtLTUVUQX0iCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJiZWE4MTVlZTI3OTViMmY0MjMwODI2YzBjNmI4ODE0IgorTElOVVhfVkVSU0lPTiA/PSAiNS40LjI3IgorCitERVBFTkRTICs9ICIke0BiYi51dGlscy5jb250YWlucygnQVJDSCcsICd4ODYnLCAnZWxmdXRpbHMtbmF0aXZlJywgJycsIGQpfSIKK0RFUEVORFMgKz0gIm9wZW5zc2wtbmF0aXZlIHV0aWwtbGludXgtbmF0aXZlIgorCitQViA9ICIke0xJTlVYX1ZFUlNJT059K2dpdCR7U1JDUFZ9IgorCitLTUVUQSA9ICJrZXJuZWwtbWV0YSIKK0tDT05GX0JTUF9BVURJVF9MRVZFTCA9ICIyIgorCitLRVJORUxfREVWSUNFVFJFRV9xZW11YXJtdjUgPSAidmVyc2F0aWxlLXBiLmR0YiIKKworQ09NUEFUSUJMRV9NQUNISU5FID0gInFlbXVhcm18cWVtdWFybXY1fHFlbXVhcm02NHxxZW11eDg2fHFlbXVwcGN8cWVtdW1pcHN8cWVtdW1pcHM2NHxxZW11eDg2LTY0fHFlbXVyaXNjdjY0IgorCisjIEZ1bmN0aW9uYWxpdHkgZmxhZ3MKK0tFUk5FTF9FWFRSQV9GRUFUVVJFUyA/PSAiZmVhdHVyZXMvbmV0ZmlsdGVyL25ldGZpbHRlci5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kID0gIiAke0tFUk5FTF9FWFRSQV9GRUFUVVJFU30iCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXVhbGw9IiBjZmcvdmlydGlvLnNjYyBmZWF0dXJlcy9kcm0tYm9jaHMvZHJtLWJvY2hzLnNjYyIKK0tFUk5FTF9GRUFUVVJFU19hcHBlbmRfcWVtdXg4Nj0iIGNmZy9zb3VuZC5zY2MgY2ZnL3BhcmF2aXJ0X2t2bS5zY2MiCitLRVJORUxfRkVBVFVSRVNfYXBwZW5kX3FlbXV4ODYtNjQ9IiBjZmcvc291bmQuc2NjIGNmZy9wYXJhdmlydF9rdm0uc2NjIgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICIgY2ZnL3gzMi5zY2MiLCAiIiAsZCl9IgorS0VSTkVMX0ZFQVRVUkVTX2FwcGVuZCA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoIkRJU1RST19GRUFUVVJFUyIsICJwdGVzdCIsICIgZmVhdHVyZXMvc2NzaS9zY3NpLWRlYnVnLnNjYyIsICIiICxkKX0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZS9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZS9ydW4tcHRlc3QKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uZjRiN2NlMQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlL3J1bi1wdGVzdApAQCAtMCwwICsxLDkgQEAKKyMhL2Jpbi9zaAorIyB1c2UgdGFyZ2V0PXJlY2hlY2sgaWYgeW91IHdhbnQgdG8gcmVjaGVjayBmYWlsaW5nIHRlc3RzCitbICIkdGFyZ2V0IiA9ICIiIF0gJiYgdGFyZ2V0PWNoZWNrCisKKyMgV2l0aG91dCAtLWlnbm9yZS1leGl0LCB0aGUgdGFwIGhhcm5lc3MgY2F1c2VzIGFueSBGQUlMcyB3aXRoaW4gYQorIyB0ZXN0IHBsYW4gdG8gcmFpc2UgRVJST1JzOyB0aGlzIGlzIGp1c3Qgbm9pc2UuCittYWtlYXJncz0iTE9HX0RSSVZFUl9GTEFHUz0tLWlnbm9yZS1leGl0IHRvcF9zcmNkaXI9JFBXRCB0b3BfYnVpbGRkaXI9JFBXRCIKKworZXhlYyBtYWtlIC1DIHRlc3RzIC1rIC1zICRtYWtlYXJncyAkdGFyZ2V0IDI+L2Rldi9udWxsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvMDAwMS1NYWtlLW1hbnBhZ2VzLW11bHRpbGliLWlkZW50aWNhbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlMi8wMDAxLU1ha2UtbWFucGFnZXMtbXVsdGlsaWItaWRlbnRpY2FsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI0MDFiMTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvMDAwMS1NYWtlLW1hbnBhZ2VzLW11bHRpbGliLWlkZW50aWNhbC5wYXRjaApAQCAtMCwwICsxLDI4IEBACitGcm9tIDU2OTg2MTkwZTRiMGMxMDk0NWNlNmFhYTdjYTEwZDZiZDhhMjZhMzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBKZXJlbXkgUHVobG1hbiA8anB1aGxtYW5AbXZpc3RhLmNvbT4KK0RhdGU6IE1vbiwgOSBNYXIgMjAyMCAyMToxMDozNSArMDAwMAorU3ViamVjdDogW1BBVENIXSBNYWtlIG1hbnBhZ2VzIG11bHRpbGliIGlkZW50aWNhbAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorLS0tCisgZG9jL21hbi9hc2NpaWRvYy1hdHRycy5jb25mLmluIHwgNCArKy0tCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2RvYy9tYW4vYXNjaWlkb2MtYXR0cnMuY29uZi5pbiBiL2RvYy9tYW4vYXNjaWlkb2MtYXR0cnMuY29uZi5pbgoraW5kZXggYWQxMTgzZjEuLmUxMWM3MDMxIDEwMDY0NAorLS0tIGEvZG9jL21hbi9hc2NpaWRvYy1hdHRycy5jb25mLmluCisrKysgYi9kb2MvbWFuL2FzY2lpZG9jLWF0dHJzLmNvbmYuaW4KK0BAIC0xLDcgKzEsNyBAQAorIFthdHRyaWJ1dGVzXQorICMgZGVmYXVsdCB2YWx1ZXMKKy1zeXN0ZW1fcGx1Z2luX3BhdGg9IkBMSUJESVJAL2JhYmVsdHJhY2UyL3BsdWdpbnMiCistc3lzdGVtX3BsdWdpbl9wcm92aWRlcl9wYXRoPSJATElCRElSQC9iYWJlbHRyYWNlMi9wbHVnaW4tcHJvdmlkZXJzIgorK3N5c3RlbV9wbHVnaW5fcGF0aD0iQHByZWZpeEAvbGliKi9iYWJlbHRyYWNlMi9wbHVnaW5zIgorK3N5c3RlbV9wbHVnaW5fcHJvdmlkZXJfcGF0aD0iQHByZWZpeEAvbGliKi9iYWJlbHRyYWNlMi9wbHVnaW4tcHJvdmlkZXJzIgorIGJhYmVsdHJhY2VfdmVyc2lvbj0iQFBBQ0tBR0VfVkVSU0lPTkAiCisgZW5hYmxlX2RlYnVnX2luZm89IkBFTkFCTEVfREVCVUdfSU5GT19WQUxAIgorIGRlZnJkcG9ydD01MzQ0CistLSAKKzIuMjQuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvMDAwMS1mcy5jLWluaXRpYWxpemUtb3RoZXJfZW50cnkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvMDAwMS1mcy5jLWluaXRpYWxpemUtb3RoZXJfZW50cnkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYjU2YjNiZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlMi8wMDAxLWZzLmMtaW5pdGlhbGl6ZS1vdGhlcl9lbnRyeS5wYXRjaApAQCAtMCwwICsxLDMzIEBACitGcm9tIDQyZGFlNjkyYjkwNTdkMDNjZTlhMDY1MWYwNjE0NzJlOWRkOTAxMzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaW5nbGkgWXUgPG1pbmdsaS55dUB3aW5kcml2ZXIuY29tPgorRGF0ZTogV2VkLCAxMSBNYXIgMjAyMCAwODo0NDo0MiArMDAwMAorU3ViamVjdDogW1BBVENIXSBmcy5jOiBpbml0aWFsaXplIHRoZSBvdGhlcl9lbnRyeSB2YXJpYWJsZQorCitJbml0aWFsaXplIHRoZSBwb2ludGVyIG90aGVyX2VudHJ5IHRvIGZpeCB0aGUgYmVsb3cgZXJyb3I6Cit8IC4uLy4uLy4uLy4uLy4uL2dpdC9zcmMvcGx1Z2lucy9jdGYvZnMtc3JjL2ZzLmM6IEluIGZ1bmN0aW9uICdkc19pbmRleF9pbnNlcnRfZHNfaW5kZXhfZW50cnlfc29ydGVkJzoKK3wgLi4vLi4vLi4vLi4vLi4vZ2l0L3NyYy9wbHVnaW5zL2N0Zi9mcy1zcmMvZnMuYzo3MDI6NTogZXJyb3I6ICdvdGhlcl9lbnRyeScgbWF5IGJlIHVzZWQgdW5pbml0aWFsaXplZCBpbiB0aGlzIGZ1bmN0aW9uIFstV2Vycm9yPW1heWJlLXVuaW5pdGlhbGl6ZWRdCit8ICAgNzAyIHwgICAgIWRzX2luZGV4X2VudHJpZXNfZXF1YWwoZW50cnksIG90aGVyX2VudHJ5KSkgeworCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy5sdHRuZy5vcmcvcGlwZXJtYWlsL2x0dG5nLWRldi8yMDIwLU1hcmNoLzAyOTU0OS5odG1sXQorCitTaWduZWQtb2ZmLWJ5OiBNaW5nbGkgWXUgPG1pbmdsaS55dUB3aW5kcml2ZXIuY29tPgorLS0tCisgc3JjL3BsdWdpbnMvY3RmL2ZzLXNyYy9mcy5jIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3BsdWdpbnMvY3RmL2ZzLXNyYy9mcy5jIGIvc3JjL3BsdWdpbnMvY3RmL2ZzLXNyYy9mcy5jCitpbmRleCBlODc1MjNhMy4uYTZiNTMxNWYgMTAwNjQ0CistLS0gYS9zcmMvcGx1Z2lucy9jdGYvZnMtc3JjL2ZzLmMKKysrKyBiL3NyYy9wbHVnaW5zL2N0Zi9mcy1zcmMvZnMuYworQEAgLTY4MCw3ICs2ODAsNyBAQCB2b2lkIGRzX2luZGV4X2luc2VydF9kc19pbmRleF9lbnRyeV9zb3J0ZWQoCisgCXN0cnVjdCBjdGZfZnNfZHNfaW5kZXhfZW50cnkgKmVudHJ5KQorIHsKKyAJZ3VpbnQgaTsKKy0Jc3RydWN0IGN0Zl9mc19kc19pbmRleF9lbnRyeSAqb3RoZXJfZW50cnk7CisrCXN0cnVjdCBjdGZfZnNfZHNfaW5kZXhfZW50cnkgKm90aGVyX2VudHJ5ID0gTlVMTDsKKyAKKyAJLyogRmluZCB0aGUgc3BvdCB3aGVyZSB0byBpbnNlcnQgdGhpcyBpbmRleCBlbnRyeS4gKi8KKyAJZm9yIChpID0gMDsgaSA8IGluZGV4LT5lbnRyaWVzLT5sZW47IGkrKykgeworLS0gCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyLzAwMDEtdGVzdHMtZG8tbm90LXJ1bi10ZXN0LWFwcGxpY2F0aW9ucy1mcm9tLS5saWJzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyLzAwMDEtdGVzdHMtZG8tbm90LXJ1bi10ZXN0LWFwcGxpY2F0aW9ucy1mcm9tLS5saWJzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgwNWRkZTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvMDAwMS10ZXN0cy1kby1ub3QtcnVuLXRlc3QtYXBwbGljYXRpb25zLWZyb20tLmxpYnMucGF0Y2gKQEAgLTAsMCArMSwyOCBAQAorRnJvbSA1ODI3MTNjYzlhMDEzNDgxZWVlZjI1MzE5NWQ2NDQwMjBmNjM3ZWM0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorTWVzc2FnZS1JZDogPDU4MjcxM2NjOWEwMTM0ODFlZWVmMjUzMTk1ZDY0NDAyMGY2MzdlYzQuMTU4MzQwMzYyMi5naXQud2FsbGludXhAZ21haWwuY29tPgorRnJvbTogQW5kZXJzIFdhbGxpbiA8d2FsbGludXhAZ21haWwuY29tPgorRGF0ZTogVGh1LCA1IE1hciAyMDIwIDExOjIwOjA0ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3RzOiBkbyBub3QgcnVuIHRlc3QgYXBwbGljYXRpb25zIGZyb20gLmxpYnMKKworQ3Jvc3MgY29tcGlsZSBzcGVjaWZpYyBjaGFuZ2UKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorCitTaWduZWQtb2ZmLWJ5OiBBbmRlcnMgV2FsbGluIDx3YWxsaW51eEBnbWFpbC5jb20+CistLS0KKyB0ZXN0cy9saWIvdGVzdF9wbHVnaW4gfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9saWIvdGVzdF9wbHVnaW4gYi90ZXN0cy9saWIvdGVzdF9wbHVnaW4KK2luZGV4IDY1MmM5MGNjLi4xZjgxN2M1MCAxMDA3NTUKKy0tLSBhL3Rlc3RzL2xpYi90ZXN0X3BsdWdpbgorKysrIGIvdGVzdHMvbGliL3Rlc3RfcGx1Z2luCitAQCAtMjYsNCArMjYsNCBAQCBmaQorICMgc2hlbGxjaGVjayBzb3VyY2U9Li4vdXRpbHMvdXRpbHMuc2gKKyBzb3VyY2UgIiRVVElMU1NIIgorIAorLSIke0JUX1RFU1RTX0JVSUxERElSfS9saWIvcGx1Z2luIiAiJHtCVF9URVNUU19CVUlMRERJUn0vbGliL3Rlc3QtcGx1Z2luLXBsdWdpbnMvLmxpYnMiCisrIiR7QlRfVEVTVFNfQlVJTERESVJ9L2xpYi9wbHVnaW4iICIke0JUX1RFU1RTX0JVSUxERElSfS9saWIvdGVzdC1wbHVnaW4tcGx1Z2lucyIKKy0tIAorMi4yNS4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlMi9ydW4tcHRlc3QgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjcyZmUyMjMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTIvcnVuLXB0ZXN0CkBAIC0wLDAgKzEsOSBAQAorIyEvYmluL3NoCisjIHVzZSB0YXJnZXQ9cmVjaGVjayBpZiB5b3Ugd2FudCB0byByZWNoZWNrIGZhaWxpbmcgdGVzdHMKK1sgIiR0YXJnZXQiID0gIiIgXSAmJiB0YXJnZXQ9Y2hlY2sKKworIyBXaXRob3V0IC0taWdub3JlLWV4aXQsIHRoZSB0YXAgaGFybmVzcyBjYXVzZXMgYW55IEZBSUxzIHdpdGhpbiBhCisjIHRlc3QgcGxhbiB0byByYWlzZSBFUlJPUnM7IHRoaXMgaXMganVzdCBub2lzZS4KK21ha2VhcmdzPSJMT0dfRFJJVkVSX0ZMQUdTPS0taWdub3JlLWV4aXQgYWJzX3RvcF9zcmNkaXI9JFBXRCBhYnNfdG9wX2J1aWxkZGlyPSRQV0QgR1JFUD1ncmVwIFNFRD1zZWQgUFlUSE9OPXB5dGhvbjMiCisKK2V4ZWMgbWFrZSAtQyB0ZXN0cyAtayAtcyAkbWFrZWFyZ3MgJHRhcmdldCAyPi9kZXYvbnVsbApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyXzIuMC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2UyXzIuMC4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA3OTFjNjUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZTJfMi4wLjIuYmIKQEAgLTAsMCArMSw5NCBAQAorU1VNTUFSWSA9ICJCYWJlbHRyYWNlMiAtIFRyYWNlIEZvcm1hdCBCYWJlbCBUb3dlciIKK0RFU0NSSVBUSU9OID0gIkJhYmVsdHJhY2UgcHJvdmlkZXMgdHJhY2UgcmVhZCBhbmQgd3JpdGUgbGlicmFyaWVzIGluIGhvc3Qgc2lkZSwgYXMgd2VsbCBhcyBhIHRyYWNlIGNvbnZlcnRlciwgd2hpY2ggdXNlZCB0byBjb252ZXJ0IExUVG5nIDIuMCB0cmFjZXMgaW50byBodW1hbi1yZWFkYWJsZSBsb2cuIgorSE9NRVBBR0UgPSAiaHR0cDovL2JhYmVsdHJhY2Uub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmx0dG5nLm9yZy9wcm9qZWN0cy9iYWJlbHRyYWNlIgorTElDRU5TRSA9ICJNSVQgJiBHUEx2MiAmIExHUEx2Mi4xICYgQlNELTItQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YTZhNDU4YzEzZjE4Mzg1YjdiYzUwNjlhNmQ3YjE3NmUiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgdXRpbC1saW51eCBwb3B0IGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXQubGludXhmb3VuZGF0aW9uLm9yZy9kaWFtb24vYmFiZWx0cmFjZS5naXQ7YnJhbmNoPXN0YWJsZS0yLjAgXAorCSAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorCSAgIGZpbGU6Ly8wMDAxLXRlc3RzLWRvLW5vdC1ydW4tdGVzdC1hcHBsaWNhdGlvbnMtZnJvbS0ubGlicy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLU1ha2UtbWFucGFnZXMtbXVsdGlsaWItaWRlbnRpY2FsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZnMuYy1pbml0aWFsaXplLW90aGVyX2VudHJ5LnBhdGNoIFwKKwkgICIKK1NSQ1JFViA9ICIzMzAwM2MzNTJlZDU2YWE0OWUwYjNkZjI3MmJiYWI2ZmFjMzZjYWU4IgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPjIoXC5cZCspKykkIgorCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHRlc3QKKworRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1kZWJ1Zy1pbmZvIgorCitQQUNLQUdFQ09ORklHID8/PSAibWFucGFnZXMiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICIsIC0tZGlzYWJsZS1tYW4tcGFnZXMsIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUiCisKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2JhYmVsdHJhY2UyL3BsdWdpbnMvKi5hIgorRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9iYWJlbHRyYWNlMi9wbHVnaW5zLyouc28iCisKK0FTTkVFREVEID0gIiIKKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gImJhc2ggZ2F3ayBweXRob24zIgorCitkb19jb21waWxlX3B0ZXN0ICgpIHsKKyAgICBtYWtlIC1DIHRlc3RzIGFsbAorfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKyAgICBpbnN0YWxsIC1kICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cyIKKworICAgICMgQ29weSByZXF1aXJlZCBmaWxlcyBmcm9tIHNvdXJjZSBkaXJlY3RvcnkKKyAgICBmb3IgZCBpbiAkKGZpbmQgIiR7U30vdGVzdHMiIC10eXBlIGQgLXByaW50ZiAnJVAgJykgOyBkbworCWluc3RhbGwgLWQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIgorCWZpbmQgIiR7U30vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1leGVjdXRhYmxlIC10eXBlIGYgXAorCSAgICAgLWV4ZWMgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiIHt9ICsKKwlmaW5kICIke1N9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtbmFtZSAqLnNoIFwKKwkgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSBcOworCWZpbmQgIiR7U30vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1uYW1lICoucHkgXAorCSAgICAgLWV4ZWMgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiIHt9IFw7CisJZmluZCAiJHtTfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLW5hbWUgKi5leHBlY3QgXAorCSAgICAgLWV4ZWMgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiIHt9IFw7CisgICAgZG9uZQorICAgIGluc3RhbGwgLWQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2RhdGEvY3RmLXRyYWNlcy8iCisgICAgY3AgLWEgJHtTfS90ZXN0cy9kYXRhL2N0Zi10cmFjZXMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9kYXRhL2N0Zi10cmFjZXMvCisKKyAgICAjIENvcHkgdGhlIHRlc3RzIGRpcmVjdG9yeSB0cmVlIGFuZCB0aGUgZXhlY3V0YWJsZXMgYW5kCisgICAgIyBNYWtlZmlsZXMgZm91bmQgd2l0aGluLgorICAgIGluc3RhbGwgLUQgIiR7Qn0vdGVzdHMvTWFrZWZpbGUiICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8iCisgICAgZm9yIGQgaW4gJChmaW5kICIke0J9L3Rlc3RzIiAtdHlwZSBkIC1ub3QgLW5hbWUgLmxpYnMgLXByaW50ZiAnJVAgJykgOyBkbworCWluc3RhbGwgLWQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIgorCWZpbmQgIiR7Qn0vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1leGVjdXRhYmxlIC10eXBlIGYgXAorCSAgICAgLWV4ZWMgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiIHt9ICsKKwl0ZXN0IC1yICIke0J9L3Rlc3RzLyRkL01ha2VmaWxlIiAmJiBcCisJICAgIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiAiJHtCfS90ZXN0cy8kZC9NYWtlZmlsZSIKKwlmaW5kICIke0J9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtbmFtZSAqLnNoIFwKKwkgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSBcOworICAgIGRvbmUKKworICAgIGZvciBkIGluICQoZmluZCAiJHtCfS90ZXN0cyIgLXR5cGUgZCAtbmFtZSAubGlicyAtcHJpbnRmICclUCAnKSA7IGRvCisJZm9yIGYgaW4gJChmaW5kICIke0J9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtZXhlY3V0YWJsZSAtdHlwZSBmIC1wcmludGYgJyVQICcpIDsgZG8KKwkgICAgY3AgJHtCfS90ZXN0cy8kZC8kZiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9gZGlybmFtZSAkZGAvJGYKKwlkb25lCisgICAgZG9uZQorCisgICAgIyBQcmV2ZW50IGF0dGVtcHRzIHRvIHVwZGF0ZSBNYWtlZmlsZXMgZHVyaW5nIHRlc3QgcnVucywgYW5kCisgICAgIyBzaWxlbmNlICJNYWtpbmcgY2hlY2sgaW4gJFNVQkRJUiIgbWVzc2FnZXMuCisgICAgZmluZCAiJHtEfSR7UFRFU1RfUEFUSH0iIC1uYW1lIE1ha2VmaWxlIC10eXBlIGYgLWV4ZWMgXAorCSBzZWQgLWkgXAorCSAtZSAnL01ha2VmaWxlOi8sL14kL2QnIFwKKwkgLWUgJy8lOiAlLmluLywvXiQvZCcgXAorCSAtZSAnL2VjaG8gIk1ha2luZyAkJHRhcmdldCBpbiAkJHN1YmRpciI7IFxcL2QnIFwKKwkgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgXAorCSAtZSAncy9eYnVpbGRkaXIgPSBcKC4qXCkvYnVpbGRkaXIgPSAuLycgXAorCSAtZSAncy9eYWxsLWFtOi4qL2FsbC1hbTovJyBcCisJIHt9ICsKKworICAgICMgU3Vic3RpdHV0ZSBsaW5rcyB0byBpbnN0YWxsZWQgYmluYXJpZXMuCisgICAgaW5zdGFsbCAtZCAiJHtEfSR7UFRFU1RfUEFUSH0vc3JjL2NsaS8iCisgICAgbG4gLXMgIiR7YmluZGlyfS9iYWJlbHRyYWNlMiIgJHtEfSR7UFRFU1RfUEFUSH0vc3JjL2NsaS8KKworICAgICMgUmVtb3ZlIGFyY2hpdGVjaHR1cmUgc3BlY2lmaWMgdGVzdGZpbGVzCisgICAgcm0gLXJmICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2RhdGEvcGx1Z2lucy9mbHQubHR0bmctdXRpbHMuZGVidWctaW5mby8qCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS43LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwNWVmNmQwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9iYWJlbHRyYWNlXzEuNS43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjAgKzAsMCBAQAotU1VNTUFSWSA9ICJCYWJlbHRyYWNlIC0gVHJhY2UgRm9ybWF0IEJhYmVsIFRvd2VyIgotREVTQ1JJUFRJT04gPSAiQmFiZWx0cmFjZSBwcm92aWRlcyB0cmFjZSByZWFkIGFuZCB3cml0ZSBsaWJyYXJpZXMgaW4gaG9zdCBzaWRlLCBhcyB3ZWxsIGFzIGEgdHJhY2UgY29udmVydGVyLCB3aGljaCB1c2VkIHRvIGNvbnZlcnQgTFRUbmcgMi4wIHRyYWNlcyBpbnRvIGh1bWFuLXJlYWRhYmxlIGxvZy4iCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmVmZmljaW9zLmNvbS9iYWJlbHRyYWNlLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLmx0dG5nLm9yZy9wcm9qZWN0cy9iYWJlbHRyYWNlIgotTElDRU5TRSA9ICJNSVQgJiBHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTc2YmExNWRkNzZhMjQ4ZTFkZDUyNmJjYTBlMjEyNWZhIgotCi1ERVBFTkRTID0gImdsaWItMi4wIHV0aWwtbGludXggcG9wdCBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCi0KLVNSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmxpbnV4Zm91bmRhdGlvbi5vcmcvZGlhbW9uL2JhYmVsdHJhY2UuZ2l0O2JyYW5jaD1zdGFibGUtMS41IgotU1JDUkVWID0gImQ0MDE0YWVlZjRiODlhNGFhYWIxYWY0MmQ3YjBkMTQzZDYyZGEwZmYiCi1VUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrKFwuXGQrKSspJCIKLQotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGVidWctaW5mbyIKLQotQVNORUVERUQgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvYmFiZWx0cmFjZV8xLjUuOC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZDI0OTJhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2JhYmVsdHJhY2VfMS41LjguYmIKQEAgLTAsMCArMSw5OCBAQAorU1VNTUFSWSA9ICJCYWJlbHRyYWNlIC0gVHJhY2UgRm9ybWF0IEJhYmVsIFRvd2VyIgorREVTQ1JJUFRJT04gPSAiQmFiZWx0cmFjZSBwcm92aWRlcyB0cmFjZSByZWFkIGFuZCB3cml0ZSBsaWJyYXJpZXMgaW4gaG9zdCBzaWRlLCBhcyB3ZWxsIGFzIGEgdHJhY2UgY29udmVydGVyLCB3aGljaCB1c2VkIHRvIGNvbnZlcnQgTFRUbmcgMi4wIHRyYWNlcyBpbnRvIGh1bWFuLXJlYWRhYmxlIGxvZy4iCitIT01FUEFHRSA9ICJodHRwOi8vYmFiZWx0cmFjZS5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MubHR0bmcub3JnL3Byb2plY3RzL2JhYmVsdHJhY2UiCitMSUNFTlNFID0gIk1JVCAmIEdQTHYyICYgTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03NmJhMTVkZDc2YTI0OGUxZGQ1MjZiY2EwZTIxMjVmYSIKKworREVQRU5EUyA9ICJnbGliLTIuMCB1dGlsLWxpbnV4IHBvcHQgYmlzb24tbmF0aXZlIGZsZXgtbmF0aXZlIgorCitTUkNfVVJJID0gImdpdDovL2dpdC5saW51eGZvdW5kYXRpb24ub3JnL2RpYW1vbi9iYWJlbHRyYWNlLmdpdDticmFuY2g9c3RhYmxlLTEuNSBcCisJICAgZmlsZTovL3J1bi1wdGVzdCBcCisJICAiCitTUkNSRVYgPSAiMDU0YTU0YWUxMGIwMWEyNzFhZmM0ZjE5NDk2YzA0MWIxMGZiNDE0YyIKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gInYoP1A8cHZlcj4xKFwuXGQrKSspJCIKKworUyA9ICIke1dPUktESVJ9L2dpdCIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHB0ZXN0CisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZGVidWctaW5mbyIKKworQVNORUVERUQgPSAiIgorCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAiYmFzaCBnYXdrIgorCithZGR0YXNrIGRvX3BhdGNoX3B0ZXN0X3BhdGggYWZ0ZXIgZG9fcGF0Y2ggYmVmb3JlIGRvX2NvbmZpZ3VyZQorZG9fcGF0Y2hfcHRlc3RfcGF0aCAoKSB7CisgICAgZm9yIGYgaW4gJChncmVwIC1sIC1yIGFic190b3Bfc3JjZGlyICR7U30vdGVzdHMpOyBkbworCXNlZCAtaSAnczpcQGFic190b3Bfc3JjZGlyXEA6JHtQVEVTVF9QQVRIfTonICR7Zn0KKyAgICBkb25lCisKKyAgICBmb3IgZiBpbiAkKGdyZXAgLWwgLXIgYWJzX3RvcF9idWlsZGRpciAke1N9L3Rlc3RzKTsgZG8KKwlzZWQgLWkgJ3M6XEBhYnNfdG9wX2J1aWxkZGlyXEA6JHtQVEVTVF9QQVRIfTonICR7Zn0KKyAgICBkb25lCisgICAgZm9yIGYgaW4gJChncmVwIC1sIC1yIEdSRVAgJHtTfS90ZXN0cyk7IGRvCisJc2VkIC1pICdzOlxAR1JFUFxAOmdyZXA6JyAke2Z9CisgICAgZG9uZQorCisgICAgZm9yIGYgaW4gJChncmVwIC1sIC1yIFNFRCAke1N9L3Rlc3RzKTsgZG8KKwlzZWQgLWkgJ3M6XEBTRURcQDpzZWQ6JyAke2Z9CisgICAgZG9uZQorfQorCitkb19jb21waWxlX3B0ZXN0ICgpIHsKKyAgICBtYWtlIC1DIHRlc3RzIGFsbAorfQorCitkb19pbnN0YWxsX3B0ZXN0ICgpIHsKKyAgICAjIENvcHkgcmVxdWlyZWQgZmlsZXMgZnJvbSBzb3VyY2UgZGlyZWN0b3J5CisgICAgZm9yIGYgaW4gY29uZmlnL3RhcC1kcml2ZXIuc2ggY29uZmlnL3Rlc3QtZHJpdmVyOyBkbworCWluc3RhbGwgLUQgIiR7U30vJGYiICIke0R9JHtQVEVTVF9QQVRIfS8kZiIKKyAgICBkb25lCisgICAgaW5zdGFsbCAtZCAiJGYiICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9jdGYtdHJhY2VzLyIKKyAgICBjcCAtYSAke1N9L3Rlc3RzL2N0Zi10cmFjZXMvKiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9jdGYtdHJhY2VzLworCisgICAgIyBDb3B5IHRoZSB0ZXN0cyBkaXJlY3RvcnkgdHJlZSBhbmQgdGhlIGV4ZWN1dGFibGVzIGFuZAorICAgICMgTWFrZWZpbGVzIGZvdW5kIHdpdGhpbi4KKyAgICBpbnN0YWxsIC1EICIke0J9L3Rlc3RzL01ha2VmaWxlIiAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvIgorICAgIGZvciBkIGluICQoZmluZCAiJHtCfS90ZXN0cyIgLXR5cGUgZCAtbm90IC1uYW1lIC5saWJzIC1wcmludGYgJyVQICcpIDsgZG8KKwlpbnN0YWxsIC1kICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIKKwlmaW5kICIke0J9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtZXhlY3V0YWJsZSAtdHlwZSBmIFwKKwkgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSArCisJdGVzdCAtciAiJHtCfS90ZXN0cy8kZC9NYWtlZmlsZSIgJiYgXAorCSAgICBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIgIiR7Qn0vdGVzdHMvJGQvTWFrZWZpbGUiCisJZmluZCAiJHtCfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLW5hbWUgKi5zaCBcCisJICAgICAtZXhlYyBpbnN0YWxsIC10ICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZCIge30gXDsKKyAgICBkb25lCisKKyAgICBmb3IgZCBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMiIC10eXBlIGQgLW5hbWUgLmxpYnMgLXByaW50ZiAnJVAgJykgOyBkbworCWZvciBmIGluICQoZmluZCAiJHtCfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLWV4ZWN1dGFibGUgLXR5cGUgZiAtcHJpbnRmICclUCAnKSA7IGRvCisJICAgIGNwICR7Qn0vdGVzdHMvJGQvJGYgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvYGRpcm5hbWUgJGRgLyRmCisJZG9uZQorICAgIGRvbmUKKworICAgIGluc3RhbGwgLUQgJHtCfS9mb3JtYXRzL2N0Zi9tZXRhZGF0YS8ubGlicy9jdGYtcGFyc2VyLXRlc3QgXAorCSAgICAke0R9JHtQVEVTVF9QQVRIfS9mb3JtYXRzL2N0Zi9tZXRhZGF0YS9jdGYtcGFyc2VyLXRlc3QKKworICAgICMgUHJldmVudCBhdHRlbXB0cyB0byB1cGRhdGUgTWFrZWZpbGVzIGR1cmluZyB0ZXN0IHJ1bnMsIGFuZAorICAgICMgc2lsZW5jZSAiTWFraW5nIGNoZWNrIGluICRTVUJESVIiIG1lc3NhZ2VzLgorICAgIGZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKKwkgc2VkIC1pIFwKKwkgLWUgJy9NYWtlZmlsZTovLC9eJC9kJyBcCisJIC1lICcvJChjaGVja19TQ1JJUFRTKS9zL14vIy8nIFwKKwkgLWUgJy8lOiAlLmluLywvXiQvZCcgXAorCSAtZSAnL2VjaG8gIk1ha2luZyAkJHRhcmdldCBpbiAkJHN1YmRpciI7IFxcL2QnIFwKKwkgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgXAorCSAtZSAncy9eYnVpbGRkaXIgPSBcKC4qXCkvYnVpbGRkaXIgPSAuLycgXAorCSAtZSAncy9eYWxsLWFtOi4qL2FsbC1hbTovJyBcCisJIHt9ICsKKworICAgICMgUmVtb3ZlIHBhdGggdG8gYmFiZWx0cmFjZS4KKyAgICBmb3IgZiBpbiAkKGdyZXAgLWwgLXIgIl5CQUJFTFRSQUNFX0JJTiIgJHtEfSR7UFRFU1RfUEFUSH0pOyBkbworCXNlZCAtaSAnczpeQkFCRUxUUkFDRV9CSU4uKjpCQUJFTFRSQUNFX0JJTj0vdXNyL2Jpbi9iYWJlbHRyYWNlOicgJHtmfQorICAgIGRvbmUKKyAgICBmb3IgZiBpbiAkKGdyZXAgLWwgLXIgIl5CVEJJTiIgJHtEfSR7UFRFU1RfUEFUSH0pOyBkbworCXNlZCAtaSAnczpeQlRCSU4uKjpCVEJJTj0vdXNyL2Jpbi9iYWJlbHRyYWNlOicgJHtmfQorICAgIGRvbmUKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzXzIuMTAuMTEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjEwLjExLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODlhM2JlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzXzIuMTAuMTEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1TRUNUSU9OID0gImRldmVsIgotU1VNTUFSWSA9ICJMaW51eCBUcmFjZSBUb29sa2l0IEtFUk5FTCBNT0RVTEUiCi1ERVNDUklQVElPTiA9ICJUaGUgbHR0bmctbW9kdWxlcyAyLjAgcGFja2FnZSBjb250YWlucyB0aGUga2VybmVsIHRyYWNlciBtb2R1bGVzIgotTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyICYgTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9YzQ2MTNkMWY4YTk1ODdiZDdiMzY2MTkxODMwMzY0YjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3BsLTIuMC50eHQ7bWQ1PTc1MTQxOTI2MGFhOTU0NDk5ZjdhYmFhYmFhODgyYmJlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xncGwtMi4xLnR4dDttZDU9MjQzYjcyNWQ3MWJiNWRmNGExZTU5MjBiMzQ0Yjg2YWQgXAotICAgICAgICAgICAgICAgICAgICAiCi0KLWluaGVyaXQgbW9kdWxlCi0KLUNPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0fGkuODZ8cG93ZXJwY3xhYXJjaDY0fG1pcHN8bmlvczJ8YXJtfHJpc2N2KS4qLWxpbnV4JwotCi1TUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1Eby1ub3QtZmFpbC1pZi1DT05GSUdfVFJBQ0VQT0lOVFMtaXMtbm90LWVuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL0JVSUxEX1JVTlRJTUVfQlVHX09OLXZzLWdjYzcucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJjNjE4ZmI2NDY1MTRkZmMxYmY5MTBjZmQ3Y2RhNDI1NiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3ZjkxZTM5YjJlOGU0NmQ4YmJiYTJiNGM4YzE2MTRmMWZiMzgwNjExY2QxYTFmY2NjMWQxODU5YmUyNjExMmYxIgotCi1leHBvcnQgSU5TVEFMTF9NT0RfRElSPSJrZXJuZWwvbHR0bmctbW9kdWxlcyIKLQotRVhUUkFfT0VNQUtFICs9ICJLRVJORUxESVI9JyR7U1RBR0lOR19LRVJORUxfRElSfSciCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgRGVsZXRlIGVtcHR5IGRpcmVjdG9yaWVzIHRvIGF2b2lkIFFBIGZhaWx1cmVzIGlmIG5vIG1vZHVsZXMgd2VyZSBidWlsdAotCWZpbmQgJHtEfS8ke25vbmFyY2hfYmFzZV9saWJkaXJ9IC1kZXB0aCAtdHlwZSBkIC1lbXB0eSAtZXhlYyBybWRpciB7fSBcOwotfQotCi1weXRob24gZG9fcGFja2FnZV9wcmVwZW5kKCkgewotICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ0QnKSwgZC5nZXRWYXIoJ25vbmFyY2hfYmFzZV9saWJkaXInKVsxOl0sICdtb2R1bGVzJykpOgotICAgICAgICBiYi53YXJuKCIlczogbm8gbW9kdWxlcyB3ZXJlIGNyZWF0ZWQ7IHRoaXMgbWF5IGJlIGR1ZSB0byBDT05GSUdfVFJBQ0VQT0lOVFMgbm90IGJlaW5nIGVuYWJsZWQgaW4geW91ciBrZXJuZWwuIiAlIGQuZ2V0VmFyKCdQTicpKQotfQotCi1CQkNMQVNTRVhURU5EID0gImRldnVwc3RyZWFtOnRhcmdldCIKLUxJQ19GSUxFU19DSEtTVU1fY2xhc3MtZGV2dXBzdHJlYW0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWM0NjEzZDFmOGE5NTg3YmQ3YjM2NjE5MTgzMDM2NGIzIgotREVGQVVMVF9QUkVGRVJFTkNFX2NsYXNzLWRldnVwc3RyZWFtID0gIi0xIgotU1JDX1VSSV9jbGFzcy1kZXZ1cHN0cmVhbSA9ICJnaXQ6Ly9naXQubHR0bmcub3JnL2x0dG5nLW1vZHVsZXM7YnJhbmNoPXN0YWJsZS0yLjEwIFwKLSAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLURvLW5vdC1mYWlsLWlmLUNPTkZJR19UUkFDRVBPSU5UUy1pcy1ub3QtZW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vQlVJTERfUlVOVElNRV9CVUdfT04tdnMtZ2NjNy5wYXRjaCBcCi0gICAgICAgICAgICIKLVNSQ1JFVl9jbGFzcy1kZXZ1cHN0cmVhbSA9ICI2MjRhY2E1ZDc1MDdmYmQxMWVhNGExYTQ3NGMzYWExMDMxYmQ5YTMxIgotUFZfY2xhc3MtZGV2dXBzdHJlYW0gPSAiMi4xMC4xMCtnaXQke1NSQ1BWfSIKLVNfY2xhc3MtZGV2dXBzdHJlYW0gPSAiJHtXT1JLRElSfS9naXQiCi1TUkNSRVZfRk9STUFUID89ICJsdHRuZ19naXQiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjExLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctbW9kdWxlc18yLjExLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNmZmZjA5NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy1tb2R1bGVzXzIuMTEuMi5iYgpAQCAtMCwwICsxLDQzIEBACitTRUNUSU9OID0gImRldmVsIgorU1VNTUFSWSA9ICJMaW51eCBUcmFjZSBUb29sa2l0IEtFUk5FTCBNT0RVTEUiCitERVNDUklQVElPTiA9ICJUaGUgbHR0bmctbW9kdWxlcyAyLjAgcGFja2FnZSBjb250YWlucyB0aGUga2VybmVsIHRyYWNlciBtb2R1bGVzIgorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyICYgTUlUIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9M2Y4ODJkNDMxZGMwZjMyZjFmNDRjMDcwN2FhNDExMjgiCisKK2luaGVyaXQgbW9kdWxlCisKK0NPTVBBVElCTEVfSE9TVCA9ICcoeDg2XzY0fGkuODZ8cG93ZXJwY3xhYXJjaDY0fG1pcHN8bmlvczJ8YXJtfHJpc2N2KS4qLWxpbnV4JworCitTUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzLyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS1Eby1ub3QtZmFpbC1pZi1DT05GSUdfVFJBQ0VQT0lOVFMtaXMtbm90LWVuLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL0JVSUxEX1JVTlRJTUVfQlVHX09OLXZzLWdjYzcucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZTNiYzhjZmIyNjRmYTEzZjM3NDYxOGI0NmYxNzBlNyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI4YTQyMjQwODEzYjhmZDFkMDAxODM1Y2Q2ZjVlYzY4N2Y3ZDdmM2IyNjA3MGQ0ZTIxNjA0YzM1YTUxYTY0NDFkIgorCitleHBvcnQgSU5TVEFMTF9NT0RfRElSPSJrZXJuZWwvbHR0bmctbW9kdWxlcyIKKworRVhUUkFfT0VNQUtFICs9ICJLRVJORUxESVI9JyR7U1RBR0lOR19LRVJORUxfRElSfSciCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgRGVsZXRlIGVtcHR5IGRpcmVjdG9yaWVzIHRvIGF2b2lkIFFBIGZhaWx1cmVzIGlmIG5vIG1vZHVsZXMgd2VyZSBidWlsdAorCWZpbmQgJHtEfS8ke25vbmFyY2hfYmFzZV9saWJkaXJ9IC1kZXB0aCAtdHlwZSBkIC1lbXB0eSAtZXhlYyBybWRpciB7fSBcOworfQorCitweXRob24gZG9fcGFja2FnZV9wcmVwZW5kKCkgeworICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmpvaW4oZC5nZXRWYXIoJ0QnKSwgZC5nZXRWYXIoJ25vbmFyY2hfYmFzZV9saWJkaXInKVsxOl0sICdtb2R1bGVzJykpOgorICAgICAgICBiYi53YXJuKCIlczogbm8gbW9kdWxlcyB3ZXJlIGNyZWF0ZWQ7IHRoaXMgbWF5IGJlIGR1ZSB0byBDT05GSUdfVFJBQ0VQT0lOVFMgbm90IGJlaW5nIGVuYWJsZWQgaW4geW91ciBrZXJuZWwuIiAlIGQuZ2V0VmFyKCdQTicpKQorfQorCitCQkNMQVNTRVhURU5EID0gImRldnVwc3RyZWFtOnRhcmdldCIKK0xJQ19GSUxFU19DSEtTVU1fY2xhc3MtZGV2dXBzdHJlYW0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTNmODgyZDQzMWRjMGYzMmYxZjQ0YzA3MDdhYTQxMTI4IgorREVGQVVMVF9QUkVGRVJFTkNFX2NsYXNzLWRldnVwc3RyZWFtID0gIi0xIgorU1JDX1VSSV9jbGFzcy1kZXZ1cHN0cmVhbSA9ICJnaXQ6Ly9naXQubHR0bmcub3JnL2x0dG5nLW1vZHVsZXM7YnJhbmNoPXN0YWJsZS0yLjExIFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLURvLW5vdC1mYWlsLWlmLUNPTkZJR19UUkFDRVBPSU5UUy1pcy1ub3QtZW4ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vQlVJTERfUlVOVElNRV9CVUdfT04tdnMtZ2NjNy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ1JFVl9jbGFzcy1kZXZ1cHN0cmVhbSA9ICIxN2M0MTM5NTM2MDNmMDYzZjJhOWQ2YzM3ODhiZWM5MTRjZTZmOTU1IgorUFZfY2xhc3MtZGV2dXBzdHJlYW0gPSAiMi4xMS4yK2dpdCR7U1JDUFZ9IgorU19jbGFzcy1kZXZ1cHN0cmVhbSA9ICIke1dPUktESVJ9L2dpdCIKK1NSQ1JFVl9GT1JNQVQgPz0gImx0dG5nX2dpdCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLVNraXAtd2hlbi10ZXN0YXBwLWlzLW5vdC1wcmVzZW50LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDEtU2tpcC13aGVuLXRlc3RhcHAtaXMtbm90LXByZXNlbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZjOWY3ZTQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDEtU2tpcC13aGVuLXRlc3RhcHAtaXMtbm90LXByZXNlbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw2MTAgKzAsMCBAQAotRnJvbSA5NWMyN2U2YWNjZWFlZGE1NWM3MjliOWU5MmU1OTQzMjJhZGVmMTNmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogSm9uYXRoYW4gUmFqb3R0ZSA8am9uYXRoYW4ucmFqb3R0ZS1qdWxpZW5AZWZmaWNpb3MuY29tPgotRGF0ZTogV2VkLCAzIEFwciAyMDE5IDE2OjMxOjE4IC0wNDAwCi1TdWJqZWN0OiBbUEFUQ0ggbHR0bmctdG9vbHNdIFNraXAgd2hlbiB0ZXN0YXBwIGlzIG5vdCBwcmVzZW50Ci0KLVdlIGV4cGVjdCBsdHRuZy11c3QgZG8gYmUgcHJlc2VudCwgdGhpcyBpcyBhIHdyb25nIGFzc3VtcHRpb25zLgotCi1UaGlzIGlzIGEgcXVpY2sgZml4LiBUaGUgcmVhbCBmaXggaXMgdG8gZWl0aGVyIGRldGVjdCBhdCBydW50aW1lCi1sdHRuZy11c3Qgc3VwcG9ydCBvciBhdCBidWlsZCB0aW1lIChIQVZFX0xJQkxUVE5HX1VTVF9DVEwpLgotCi1UaGlzIHByZXZlbnQgaGFuZyBmb3IgbWFrZSBjaGVjayBkb25lIG9uIGEgYnVpbGQgY29uZmlndXJlZCB3aXRoCi0tLXdpdGhvdXQtbHR0bmctdXN0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW290aGVyXSAKLVJlYXNvbjogVGhpcyBwYXRjaCBpcyBpbmFwcHJvcHJpYXRlIGZvciB1cHN0cmVhbSBmb3IgMi4xMCBzdGFibGUgcmVsZWFzZSAKLXNpbmNlIHdlIGRvIG5vdCBiYWNrcG9ydCAic3VwZXJmaWNpYWwiIGZpeCB0byB0aGUgdGVzdCBzdWl0ZS4gV2UgZG8gCi1iYWNrcG9ydCB3aGVuIGEgdGVzdCBpcyBicm9rZW4uIFRoZSBmYWN0IHRoYXQgb24gLS13aXRob3V0LWx0dG5nLXVzdCAKLWhhbmcgaXMgbm90IGEgImJyb2tlbiIgdGVzdCBwZXItc2VlLiBTdGlsbCwgYSB2YXJpYXRpb24gb2YgdGhpcyBmaXggd2lsbCAKLWJlIHVwc3RyZWFtZWQgaW4gb3VyIG1hc3RlciBicmFuY2ggYW5kIHBvc3NpYmx5IDIuMTEuIFRoZSB1cHN0cmVhbWVkIAotdmVyc2lvbiB3aWxsIHNwbGl0IHRoZSB0ZXN0IGluIGtlcm5lbC91c3QgdGVzdCBhbmQgc2tpcCB0aGVtIGF0IHRoZSAKLWJ1aWxkIHN5c3RlbSBsZXZlbC4gVGhpcyBwYXRjaCBpcyBtb3JlIHN1Y2NpbmN0LgotCi1TaWduZWQtb2ZmLWJ5OiBKb25hdGhhbiBSYWpvdHRlIDxqb25hdGhhbi5yYWpvdHRlLWp1bGllbkBlZmZpY2lvcy5jb20+Ci0tLS0KLSB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2NyYXNoL3Rlc3RfY3Jhc2ggICAgICAgfCAgNCArKwotIC4uLi9yZWdyZXNzaW9uL3Rvb2xzL2V4Y2x1c2lvbi90ZXN0X2V4Y2x1c2lvbiB8ICA0ICsrCi0gLi4uL3Rvb2xzL2ZpbHRlcmluZy90ZXN0X3ZhbGlkX2ZpbHRlciAgICAgICAgIHwgMjEgKysrKy0tCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9oZWFsdGgvdGVzdF90aHJlYWRfb2sgIHwgMjkgKysrKystLS0KLSB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvTWFrZWZpbGUuYW0gICAgICAgfCAgMiAtCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfbHR0bmdfdXN0ICAgIHwgIDQgKysKLSB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvdGVzdF91c3QgICAgICAgICAgfCAgNCArKwotIC4uLi90b29scy9saXZlL3Rlc3RfdXN0X3RyYWNlZmlsZV9jb3VudCAgICAgICB8ICA0ICsrCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9taS90ZXN0X21pICAgICAgICAgICAgIHwgIDQgKysKLSAuLi4vbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX211bHRpX2FwcCAgfCAxOCArKystLQotIC4uLi90b29scy9ub3RpZmljYXRpb24vdGVzdF9ub3RpZmljYXRpb25fdXN0ICB8ICA0ICsrCi0gLi4uL3JlZ3Jlc3Npb24vdG9vbHMvcmVnZW4tbWV0YWRhdGEvdGVzdF91c3QgIHwgIDIgKy0KLSAuLi4vcmVncmVzc2lvbi90b29scy9yZWdlbi1zdGF0ZWR1bXAvdGVzdF91c3QgfCAgMiArLQotIC4uLi9yZWdyZXNzaW9uL3Rvb2xzL3NhdmUtbG9hZC90ZXN0X2F1dG9sb2FkICB8ICA3ICsrCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9sb2FkICAgIHwgIDggKysrCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9zYXZlICAgIHwgIDcgKysKLSAuLi4vcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3RfZmFzdCAgfCAgMiArLQotIC4uLi9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9sb25nICB8ICAyICstCi0gLi4uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9zdHJlYW1pbmcgICAgICAgIHwgIDIgKy0KLSB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy91c3RfdGVzdCAgICAgfCAgMiArLQotIC4uLi9zdHJlYW1pbmcvdGVzdF9oaWdoX3Rocm91Z2hwdXRfbGltaXRzICAgICB8ICAyICstCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9zdHJlYW1pbmcvdGVzdF91c3QgICAgIHwgIDIgKy0KLSAuLi4vdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9jb3VudCAgICAgfCAgMiArLQotIC4uLi90cmFjZWZpbGUtbGltaXRzL3Rlc3RfdHJhY2VmaWxlX3NpemUgICAgICB8ICAyICstCi0gLi4uL3Rvb2xzL3dpbGRjYXJkL3Rlc3RfZXZlbnRfd2lsZGNhcmQgICAgICAgIHwgNjcgKysrKysrKysrKy0tLS0tLS0tLQotIDI1IGZpbGVzIGNoYW5nZWQsIDE0NyBpbnNlcnRpb25zKCspLCA2MCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvY3Jhc2gvdGVzdF9jcmFzaCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvY3Jhc2gvdGVzdF9jcmFzaAotaW5kZXggOGM2MmM1MTNkLi4zY2JlOTc2ODggMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2NyYXNoL3Rlc3RfY3Jhc2gKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvY3Jhc2gvdGVzdF9jcmFzaAotQEAgLTM1LDYgKzM1LDEwIEBAIE5VTV9URVNUUz03NwotIAotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotK2lmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLStmaQotKwotICMgR2xvYmFsIGRlY2xhcmF0aW9uIGZvciBzaW1wbGlmaWNhdGlvbgotIExUVE5HX0NSQVNIPSRURVNURElSLy4uL3NyYy9iaW4vbHR0bmctY3Jhc2gvJENSQVNIX0JJTgotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvZXhjbHVzaW9uL3Rlc3RfZXhjbHVzaW9uIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9leGNsdXNpb24vdGVzdF9leGNsdXNpb24KLWluZGV4IDk0OWNkNDFkZi4uNDJlNGQ3MmZiIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9leGNsdXNpb24vdGVzdF9leGNsdXNpb24KLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvZXhjbHVzaW9uL3Rlc3RfZXhjbHVzaW9uCi1AQCAtMzAsNiArMzAsMTAgQEAgTlVNX1RFU1RTPTE0OQotIAotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotK2lmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLStmaQotKwotIGZ1bmN0aW9uIGVuYWJsZV91c3RfbHR0bmdfYWxsX2V2ZW50X2V4Y2x1c2lvbigpCi0gewotIAlzZXNzX25hbWU9IiQxIgotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvZmlsdGVyaW5nL3Rlc3RfdmFsaWRfZmlsdGVyIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9maWx0ZXJpbmcvdGVzdF92YWxpZF9maWx0ZXIKLWluZGV4IDE2M2IzMjE4Mi4uMWU4ZGE2MzBiIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9maWx0ZXJpbmcvdGVzdF92YWxpZF9maWx0ZXIKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvZmlsdGVyaW5nL3Rlc3RfdmFsaWRfZmlsdGVyCi1AQCAtNDE4LDEyICs0MTgsMTggQEAgaXNzdWVfMzU2X2ZpbHRlcis9ImludGZpZWxkID4gNCAmJiBpbnRmaWVsZCA+IDUgJiYgIgotIGlzc3VlXzM1Nl9maWx0ZXIrPSJpbnRmaWVsZCA+IDYgJiYgaW50ZmllbGQgPiA3ICYmICIKLSBpc3N1ZV8zNTZfZmlsdGVyKz0iaW50ZmllbGQgPiA4IHx8IGludGZpZWxkID4gMCIKLSAKLStCSU5fTkFNRT0iZ2VuLXVzdC1ldmVudHMiCi0rCi0rc2tpcF91c3Q9MQotK2lmIFsgISAteCAiJENVUkRJUi8kQklOX05BTUUiIF07IHRoZW4KLSsJc2tpcF91c3Q9MAotKwlza2lwIDAgIk5vIFVTVCBuZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iICROVU1fVVNUX1RFU1RTCi0rZmkKLSsKLSBzdGFydF9sdHRuZ19zZXNzaW9uZAotIAotICMjIyBVU1QgVEVTVFMKLSAKLS1CSU5fTkFNRT0iZ2VuLXVzdC1ldmVudHMiCi0tCi0gS0lSS19LUkFVU1NfVEVTVFM9KAotIAkjIHRoZSB0ZXN0cyBiZWxvdyB3ZXJlIHdyaXR0ZW4gYnkgS2lyayBLcmF1c3MgaW4gdGhpcyBhcnRpY2xlOgotIAkjIGh0dHA6Ly93d3cuZHJkb2Jicy5jb20vYXJjaGl0ZWN0dXJlLWFuZC1kZXNpZ24vbWF0Y2hpbmctd2lsZGNhcmRzLWFuLWVtcGlyaWNhbC13YXktdG8tdC8yNDAxNjkxMjMKLUBAIC04OTcsOSArOTAzLDYgQEAgVVNUX1NUUl9GSUxURVJTPSgKLSAJRU5ECi0gKQotIAotLWlmIFsgISAteCAiJENVUkRJUi8kQklOX05BTUUiIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCBuZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0tZmkKLSAKLSBJRlM9IiRPTERJRlMiCi0gCi1AQCAtOTEwLDYgKzkxMywxMCBAQCBpPTAKLSB3aGlsZSB0cnVlOyBkbwotIAl2YWxpZGF0b3I9IiR7VVNUX0ZJTFRFUlNbJGldfSIKLSAKLSsJaWYgWyAkc2tpcF91c3QgLWVxIDAgXTsgdGhlbgotKwkJYnJlYWsKLSsJZmkKLSsKLSAJaWYgWyAiJHZhbGlkYXRvciIgPSBFTkQgXTsgdGhlbgotIAkJYnJlYWsKLSAJZmkKLUBAIC05MjksNiArOTM2LDEwIEBAIGk9MAotIHdoaWxlIHRydWU7IGRvCi0gCXZhbGlkYXRvcj0iJHtVU1RfU1RSX0ZJTFRFUlNbJGldfSIKLSAKLSsJaWYgWyAkc2tpcF91c3QgLWVxIDAgXTsgdGhlbgotKwkJYnJlYWsKLSsJZmkKLSsKLSAJaWYgWyAiJHZhbGlkYXRvciIgPSBFTkQgXTsgdGhlbgotIAkJYnJlYWsKLSAJZmkKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2hlYWx0aC90ZXN0X3RocmVhZF9vayBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvaGVhbHRoL3Rlc3RfdGhyZWFkX29rCi1pbmRleCBlODFkNmVkMjQuLjg0OWI3ZTcxZiAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvaGVhbHRoL3Rlc3RfdGhyZWFkX29rCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2hlYWx0aC90ZXN0X3RocmVhZF9vawotQEAgLTI3LDYgKzI3LDkgQEAgQ0hBTk5FTF9OQU1FPSJ0ZXN0Y2hhbiIKLSBIRUFMVEhfQ0hFQ0tfQklOPSJoZWFsdGhfY2hlY2siCi0gTlVNX1RFU1RTPTE3Ci0gU0xFRVBfVElNRT0zMAotK1RFU1RBUFBfUEFUSD0iJFRFU1RESVIvdXRpbHMvdGVzdGFwcCIKLStURVNUQVBQX05BTUU9Imdlbi11c3QtZXZlbnRzIgotK1RFU1RBUFBfQklOPSIkVEVTVEFQUF9QQVRILyRURVNUQVBQX05BTUUvJFRFU1RBUFBfTkFNRSIKLSAKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLUBAIC03NiwxNSArNzksMTkgQEAgZnVuY3Rpb24gdGVzdF90aHJlYWRfb2sKLSAJJENVUkRJUi8kSEVBTFRIX0NIRUNLX0JJTiA+ICR7U1RET1VUX1BBVEh9IDI+ICR7U1RERVJSX1BBVEh9Ci0gCXJlcG9ydF9lcnJvcnMKLSAKLS0JZGlhZyAiV2l0aCBVU1QgY29uc3VtZXIgZGFlbW9ucyIKLS0JY3JlYXRlX2x0dG5nX3Nlc3Npb25fbm9fb3V0cHV0ICRTRVNTSU9OX05BTUUKLS0JZW5hYmxlX3VzdF9sdHRuZ19ldmVudF9vayAkU0VTU0lPTl9OQU1FICRVU1RfRVZFTlRfTkFNRSAkQ0hBTk5FTF9OQU1FCi0tCXN0YXJ0X2x0dG5nX3RyYWNpbmdfb2sgJFNFU1NJT05fTkFNRQotLQlkZXN0cm95X2x0dG5nX3Nlc3Npb25fb2sgJFNFU1NJT05fTkFNRQotKwlza2lwICRza2lwX3VzdCAiVXN0IGRvZXMgbm90IHNlZW1zIHRvIGJlIHN1cHBvcnRlZCIgIjUiIHx8Ci0rCXsKLSsJCWRpYWcgIldpdGggVVNUIGNvbnN1bWVyIGRhZW1vbnMiCi0rCQljcmVhdGVfbHR0bmdfc2Vzc2lvbl9ub19vdXRwdXQgJFNFU1NJT05fTkFNRQotKwkJZW5hYmxlX3VzdF9sdHRuZ19ldmVudF9vayAkU0VTU0lPTl9OQU1FICRVU1RfRVZFTlRfTkFNRSAkQ0hBTk5FTF9OQU1FCi0rCQlzdGFydF9sdHRuZ190cmFjaW5nX29rICRTRVNTSU9OX05BTUUKLSsJCWRlc3Ryb3lfbHR0bmdfc2Vzc2lvbl9vayAkU0VTU0lPTl9OQU1FCi0gCi0tCSMgQ2hlY2sgaGVhbHRoIHN0YXR1cwotLQkkQ1VSRElSLyRIRUFMVEhfQ0hFQ0tfQklOID4gJHtTVERPVVRfUEFUSH0gMj4gJHtTVERFUlJfUEFUSH0KLS0JcmVwb3J0X2Vycm9ycwotKwotKwkJIyBDaGVjayBoZWFsdGggc3RhdHVzCi0rCQkkQ1VSRElSLyRIRUFMVEhfQ0hFQ0tfQklOID4gJHtTVERPVVRfUEFUSH0gMj4gJHtTVERFUlJfUEFUSH0KLSsJCXJlcG9ydF9lcnJvcnMKLSsJfQotIAotIAlza2lwICRpc3Jvb3QgIlJvb3QgYWNjZXNzIGlzIG5lZWRlZC4gU2tpcHBpbmcga2VybmVsIGNvbnN1bWVyIGhlYWx0aCBjaGVjayB0ZXN0LiIgIjUiIHx8Ci0gCXsKLUBAIC0xNDEsNiArMTQ4LDEyIEBAIGVsc2UKLSAJaXNyb290PTAKLSBmaQotIAotK2lmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0rCXNraXBfdXN0PTAKLStlbHNlCi0rCXNraXBfdXN0PTEKLStmaQotKwotIHRlc3RfdGhyZWFkX29rCi0gCi0gcm0gLXJmICR7SEVBTFRIX1BBVEh9Ci1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL01ha2VmaWxlLmFtIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL01ha2VmaWxlLmFtCi1pbmRleCA0NjE4NmQzODMuLmRiNzRkZThkNSAxMDA2NDQKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS9NYWtlZmlsZS5hbQotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL01ha2VmaWxlLmFtCi1AQCAtMTYsOSArMTYsNyBAQCBMSVZFPSQodG9wX2J1aWxkZGlyKS9zcmMvYmluL2x0dG5nLXNlc3Npb25kL3Nlc3Npb24uJChPQkpFWFQpIFwKLSBub2luc3RfUFJPR1JBTVMgPSBsaXZlX3Rlc3QKLSBFWFRSQV9ESVNUID0gdGVzdF9rZXJuZWwgdGVzdF9sdHRuZ19rZXJuZWwKLSAKLS1pZiBIQVZFX0xJQkxUVE5HX1VTVF9DVEwKLSBFWFRSQV9ESVNUICs9IHRlc3RfdXN0IHRlc3RfdXN0X3RyYWNlZmlsZV9jb3VudCB0ZXN0X2x0dG5nX3VzdAotLWVuZGlmCi0gCi0gbGl2ZV90ZXN0X1NPVVJDRVMgPSBsaXZlX3Rlc3QuYwotIGxpdmVfdGVzdF9MREFERCA9ICQoTElCVEFQKSAkKExJQkNPTU1PTikgJChMSUJSRUxBWUQpICQoTElCU0VTU0lPTkRfQ09NTSkgXAotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS90ZXN0X2x0dG5nX3VzdCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS90ZXN0X2x0dG5nX3VzdAotaW5kZXggMDYwMTdkMDFkLi5iZTliM2Q3ZjcgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvdGVzdF9sdHRuZ191c3QKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS90ZXN0X2x0dG5nX3VzdAotQEAgLTM4LDYgKzM4LDEwIEBAIE5VTV9URVNUUz0xMgotIAotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotK2lmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLStmaQotKwotICMgTVVTVCBzZXQgVEVTVERJUiBiZWZvcmUgY2FsbGluZyB0aG9zZSBmdW5jdGlvbnMKLSBwbGFuX3Rlc3RzICROVU1fVEVTVFMKLSAKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvdGVzdF91c3QgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvdGVzdF91c3QKLWluZGV4IDAzODRhNzA2Zi4uYWRkNTIxYmZjIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfdXN0Ci0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2xpdmUvdGVzdF91c3QKLUBAIC0zNiw2ICszNiwxMCBAQCBESVI9JChyZWFkbGluayAtZiAkVEVTVERJUikKLSAKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLStpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rZmkKLSsKLSBlY2hvICIkVEVTVF9ERVNDIgotIAotIGZ1bmN0aW9uIHNldHVwX2xpdmVfdHJhY2luZygpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfdXN0X3RyYWNlZmlsZV9jb3VudCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbGl2ZS90ZXN0X3VzdF90cmFjZWZpbGVfY291bnQKLWluZGV4IDZkYTM2OGZjNi4uMTA1MDRmOGM2IDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfdXN0X3RyYWNlZmlsZV9jb3VudAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9saXZlL3Rlc3RfdXN0X3RyYWNlZmlsZV9jb3VudAotQEAgLTM2LDYgKzM2LDEwIEBAIERJUj0kKHJlYWRsaW5rIC1mICRURVNURElSKQotIAotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotK2lmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLStmaQotKwotIGVjaG8gIiRURVNUX0RFU0MiCi0gCi0gZnVuY3Rpb24gc2V0dXBfbGl2ZV90cmFjaW5nKCkKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL21pL3Rlc3RfbWkgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL21pL3Rlc3RfbWkKLWluZGV4IDQ4ZGRhN2RhNi4uMmNjMzBiMjlhIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9taS90ZXN0X21pCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL21pL3Rlc3RfbWkKLUBAIC02MSw2ICs2MSwxMCBAQCBOVU1fVEVTVFM9MjI4Ci0gCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0raWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotK2ZpCi0rCi0gI092ZXJ3cml0ZSB0aGUgbHR0bmdfYmluIHRvIGdldCBtaSBvdXRwdXQKLSBMVFROR19CSU49Imx0dG5nIC0tbWkgeG1sIgotIAotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX211bHRpX2FwcCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX211bHRpX2FwcAotaW5kZXggMGEwNWVhNmEwLi4yOWIwZjYyZmEgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl9tdWx0aV9hcHAKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX211bHRpX2FwcAotQEAgLTUyLDYgKzUyLDExIEBAIHBsYW5fdGVzdHMgJE5VTV9URVNUUwotIAotIHByaW50X3Rlc3RfYmFubmVyICIkVEVTVF9ERVNDIgotIAotK3NraXBfdXN0PTEKLStpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlza2lwX3VzdD0wCi0rZmkKLSsKLSBhcHBfcGlkcz0oKQotIAotIGZ1bmN0aW9uIGtlcm5lbF9ldmVudF9nZW5lcmF0b3JfdG9vZ2xlX3N0YXRlCi1AQCAtNDY4LDEwICs0NzMsMTUgQEAgZnVuY3Rpb24gdGVzdF9vbl9yZWdpc3Rlcl9ldmFsdWF0aW9uICgpCi0gfQotIAotIAotLVRFU1RTPSgKLS0JdGVzdF9tdWx0aV9hcHBfdXN0Ci0tCXRlc3Rfb25fcmVnaXN0ZXJfZXZhbHVhdGlvbl91c3QKLS0pCi0rVEVTVFM9KCkKLStpZiBbICRza2lwX3VzdCAtZXEgIjEiIF07IHRoZW4KLSsJVEVTVFMrPSgKLSsJCXRlc3RfbXVsdGlfYXBwX3VzdAotKwkJdGVzdF9vbl9yZWdpc3Rlcl9ldmFsdWF0aW9uX3VzdAotKwkpCi0rZWxzZQotKwlza2lwIDAgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIgJE5VTV9URVNUX1VTVAotK2ZpCi0gCi0gaWYgWyAiJChpZCAtdSkiID09ICIwIiBdOyB0aGVuCi0gCVRFU1RTKz0oCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9ub3RpZmljYXRpb24vdGVzdF9ub3RpZmljYXRpb25fdXN0IGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9ub3RpZmljYXRpb24vdGVzdF9ub3RpZmljYXRpb25fdXN0Ci1pbmRleCA4OTQxZTQ3NmQuLmViMmUxNWNhZCAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX3VzdAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9ub3RpZmljYXRpb24vdGVzdF9ub3RpZmljYXRpb25fdXN0Ci1AQCAtNDYsNiArNDYsMTAgQEAgRElSPSQocmVhZGxpbmsgLWYgJFRFU1RESVIpCi0gCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0raWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotK2ZpCi0rCi0gZnVuY3Rpb24gdXN0X2V2ZW50X2dlbmVyYXRvcl90b29nbGVfc3RhdGUKLSB7Ci0gCXVzdF9ldmVudF9nZW5lcmF0b3Jfc3VzcGVuZGVkPSQoKHVzdF9ldmVudF9nZW5lcmF0b3Jfc3VzcGVuZGVkPT0wKSkKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3JlZ2VuLW1ldGFkYXRhL3Rlc3RfdXN0IGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9yZWdlbi1tZXRhZGF0YS90ZXN0X3VzdAotaW5kZXggYjdmMWFmMWQ4Li4zMTJjOGE0MGQgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3JlZ2VuLW1ldGFkYXRhL3Rlc3RfdXN0Ci0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3JlZ2VuLW1ldGFkYXRhL3Rlc3RfdXN0Ci1AQCAtMzQsNyArMzQsNyBAQCBOVU1fVEVTVFM9MzMKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLSBpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotLQlCQUlMX09VVCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0gZmkKLSAKLSBmdW5jdGlvbiBsdHRuZ19jcmVhdGVfc2Vzc2lvbl91cmkKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3JlZ2VuLXN0YXRlZHVtcC90ZXN0X3VzdCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvcmVnZW4tc3RhdGVkdW1wL3Rlc3RfdXN0Ci1pbmRleCA0ODZiOWE1NjAuLjhkNDU1YjI2YSAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvcmVnZW4tc3RhdGVkdW1wL3Rlc3RfdXN0Ci0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3JlZ2VuLXN0YXRlZHVtcC90ZXN0X3VzdAotQEAgLTM0LDcgKzM0LDcgQEAgTlVNX1RFU1RTPTExCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0gaWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotIGZpCi0gCi0gZnVuY3Rpb24gdGVzdF91c3RfbG9jYWwgKCkKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NhdmUtbG9hZC90ZXN0X2F1dG9sb2FkIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9hdXRvbG9hZAotaW5kZXggN2VlNWU5OTA2Li5lYzM3NmNmYjMgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NhdmUtbG9hZC90ZXN0X2F1dG9sb2FkCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NhdmUtbG9hZC90ZXN0X2F1dG9sb2FkCi1AQCAtMjEsNiArMjEsOSBAQCBDVVJESVI9JChkaXJuYW1lICQwKS8KLSBDT05GSUdfRElSPSIke0NVUkRJUn0vY29uZmlndXJhdGlvbiIKLSBURVNURElSPSRDVVJESVIvLi4vLi4vLi4vCi0gZXhwb3J0IExUVE5HX1NFU1NJT05fQ09ORklHX1hTRF9QQVRIPSQocmVhZGxpbmsgLW0gJHtURVNURElSfS4uL3NyYy9jb21tb24vY29uZmlnLykKLStURVNUQVBQX1BBVEg9IiRURVNURElSL3V0aWxzL3Rlc3RhcHAiCi0rVEVTVEFQUF9OQU1FPSJnZW4tdXN0LWV2ZW50cyIKLStURVNUQVBQX0JJTj0iJFRFU1RBUFBfUEFUSC8kVEVTVEFQUF9OQU1FLyRURVNUQVBQX05BTUUiCi0gCi0gRElSPSQocmVhZGxpbmsgLWYgJFRFU1RESVIpCi0gCi1AQCAtMjgsNiArMzEsMTAgQEAgTlVNX1RFU1RTPTkKLSAKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLStpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rZmkKLSsKLSAjIE1VU1Qgc2V0IFRFU1RESVIgYmVmb3JlIGNhbGxpbmcgdGhvc2UgZnVuY3Rpb25zCi0gcGxhbl90ZXN0cyAkTlVNX1RFU1RTCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9sb2FkIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9sb2FkCi1pbmRleCA1ZTM4YjQ2YjYuLmI2ZmRkODE5MiAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3RfbG9hZAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9sb2FkCi1AQCAtMjAsNiArMjAsMTAgQEAgVEVTVF9ERVNDPSJMb2FkIHNlc3Npb24ocykiCi0gQ1VSRElSPSQoZGlybmFtZSAkMCkvCi0gQ09ORklHX0RJUj0iJHtDVVJESVJ9L2NvbmZpZ3VyYXRpb24iCi0gVEVTVERJUj0kQ1VSRElSLy4uLy4uLy4uLwotK1RFU1RBUFBfUEFUSD0iJFRFU1RESVIvdXRpbHMvdGVzdGFwcCIKLStURVNUQVBQX05BTUU9Imdlbi11c3QtZXZlbnRzIgotK1RFU1RBUFBfQklOPSIkVEVTVEFQUF9QQVRILyRURVNUQVBQX05BTUUvJFRFU1RBUFBfTkFNRSIKLSsKLSBleHBvcnQgTFRUTkdfU0VTU0lPTl9DT05GSUdfWFNEX1BBVEg9JChyZWFkbGluayAtbSAke1RFU1RESVJ9Li4vc3JjL2NvbW1vbi9jb25maWcvKQotIAotIFNFU1NJT05fTkFNRT0ibG9hZC00MiIKLUBAIC0zMSw2ICszNSwxMCBAQCBOVU1fVEVTVFM9NjcKLSAKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLStpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rZmkKLSsKLSAjIE1VU1Qgc2V0IFRFU1RESVIgYmVmb3JlIGNhbGxpbmcgdGhvc2UgZnVuY3Rpb25zCi0gcGxhbl90ZXN0cyAkTlVNX1RFU1RTCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9zYXZlIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9zYXZlCi1pbmRleCBjNWY2YjEzNDEuLmNmYWY2N2I3YSAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc2F2ZS1sb2FkL3Rlc3Rfc2F2ZQotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvdGVzdF9zYXZlCi1AQCAtMjMsNiArMjMsOSBAQCBURVNURElSPSRDVVJESVIvLi4vLi4vLi4vCi0gU0VTU0lPTl9OQU1FPSJzYXZlLTQyIgotIENIQU5ORUxfTkFNRT0iY2hhbi1zYXZlIgotIEVWRU5UX05BTUU9InRwOnRwdGVzdCIKLStURVNUQVBQX1BBVEg9IiRURVNURElSL3V0aWxzL3Rlc3RhcHAiCi0rVEVTVEFQUF9OQU1FPSJnZW4tdXN0LWV2ZW50cyIKLStURVNUQVBQX0JJTj0iJFRFU1RBUFBfUEFUSC8kVEVTVEFQUF9OQU1FLyRURVNUQVBQX05BTUUiCi0gCi0gRElSPSQocmVhZGxpbmsgLWYgJFRFU1RESVIpCi0gCi1AQCAtMzAsNiArMzMsMTAgQEAgTlVNX1RFU1RTPTQxCi0gCi0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0raWYgWyAhIC14ICJURVNUQVBQX0JJTiIgXTsgdGhlbgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rZmkKLSsKLSAjIE1VU1Qgc2V0IFRFU1RESVIgYmVmb3JlIGNhbGxpbmcgdGhvc2UgZnVuY3Rpb25zCi0gcGxhbl90ZXN0cyAkTlVNX1RFU1RTCi0gCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3RfZmFzdCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X2Zhc3QKLWluZGV4IGVkYjQzNWM1Mi4uNWE2OGVjNTZkIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3RfZmFzdAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3RfZmFzdAotQEAgLTIzLDcgKzIzLDcgQEAgVEVTVF9CSU49InVzdF90ZXN0IgotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotIGlmIFsgISAteCAiJENVUkRJUi8kVEVTVF9CSU4iIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCB0ZXN0IGZvdW5kOiAkVEVTVF9CSU4iCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCB0ZXN0IGZvdW5kOiAkVEVTVF9CSU4iCi0gZmkKLSAKLSAuLyRDVVJESVIvJFRFU1RfQklOICROUl9TTkFQU0hPVAotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X2xvbmcgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9sb25nCi1pbmRleCA5ZTFhMGMyNjIuLmFmYTAxOWY2YSAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X2xvbmcKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X2xvbmcKLUBAIC0yMyw3ICsyMyw3IEBAIFRFU1RfQklOPSJ1c3RfdGVzdCIKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLSBpZiBbICEgLXggIiRDVVJESVIvJFRFU1RfQklOIiBdOyB0aGVuCi0tCUJBSUxfT1VUICJObyBVU1QgdGVzdCBmb3VuZDogJFRFU1RfQklOIgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgdGVzdCBmb3VuZDogJFRFU1RfQklOIgotIGZpCi0gCi0gLi8kQ1VSRElSLyRURVNUX0JJTiAkTlJfU05BUFNIT1QKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9zdHJlYW1pbmcgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9zdHJlYW1pbmcKLWluZGV4IDkzYjA5NTdmMy4uNjkyOTFhYjRkIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zbmFwc2hvdHMvdGVzdF91c3Rfc3RyZWFtaW5nCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9zdHJlYW1pbmcKLUBAIC0zNyw3ICszNyw3IEBAIE5VTV9URVNUUz03NQotIHNvdXJjZSAkVEVTVERJUi91dGlscy91dGlscy5zaAotIAotIGlmIFsgISAteCAiJFRFU1RBUFBfQklOIiBdOyB0aGVuCi0tCUJBSUxfT1VUICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rCXBsYW5fc2tpcF9hbGwgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSBmaQotIAotIGZ1bmN0aW9uIHNuYXBzaG90X2FkZF9vdXRwdXQgKCkKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy91c3RfdGVzdCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3VzdF90ZXN0Ci1pbmRleCA3NTVjZWY5ZTAuLjkyZjlmNmNmZiAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc25hcHNob3RzL3VzdF90ZXN0Ci0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NuYXBzaG90cy91c3RfdGVzdAotQEAgLTM0LDcgKzM0LDcgQEAgVFJBQ0VfUEFUSD0kKG1rdGVtcCAtZCkKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLSBpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotLQlCQUlMX09VVCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0gZmkKLSAKLSAjIE5lZWQgdGhlIG51bWJlciBvZiBzbmFwc2hvdCB0byBkby4KLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3N0cmVhbWluZy90ZXN0X2hpZ2hfdGhyb3VnaHB1dF9saW1pdHMgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3N0cmVhbWluZy90ZXN0X2hpZ2hfdGhyb3VnaHB1dF9saW1pdHMKLWluZGV4IDMyYzNmMWYyYi4uZjU0MTc4OTIzIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy9zdHJlYW1pbmcvdGVzdF9oaWdoX3Rocm91Z2hwdXRfbGltaXRzCi0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3N0cmVhbWluZy90ZXN0X2hpZ2hfdGhyb3VnaHB1dF9saW1pdHMKLUBAIC0zOCw3ICszOCw3IEBAIE5VTV9URVNUUz0xMDQKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLSBpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotLQlCQUlMX09VVCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0gZmkKLSAKLSBmdW5jdGlvbiBzZXRfYndfbGltaXQKLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3N0cmVhbWluZy90ZXN0X3VzdCBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc3RyZWFtaW5nL3Rlc3RfdXN0Ci1pbmRleCBhNWQ1YjVlOTIuLmUxZGQ5OGVlNyAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvc3RyZWFtaW5nL3Rlc3RfdXN0Ci0rKysgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3N0cmVhbWluZy90ZXN0X3VzdAotQEAgLTM0LDcgKzM0LDcgQEAgTlVNX1RFU1RTPTE2Ci0gc291cmNlICRURVNURElSL3V0aWxzL3V0aWxzLnNoCi0gCi0gaWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCBldmVudHMgYmluYXJ5IGRldGVjdGVkLiIKLSsJcGxhbl9za2lwX2FsbCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotIGZpCi0gCi0gZnVuY3Rpb24gbHR0bmdfY3JlYXRlX3Nlc3Npb25fdXJpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy90cmFjZWZpbGUtbGltaXRzL3Rlc3RfdHJhY2VmaWxlX2NvdW50IGIvdGVzdHMvcmVncmVzc2lvbi90b29scy90cmFjZWZpbGUtbGltaXRzL3Rlc3RfdHJhY2VmaWxlX2NvdW50Ci1pbmRleCA2YWRhODU4MGYuLjc1NTNjN2QxZiAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9jb3VudAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy90cmFjZWZpbGUtbGltaXRzL3Rlc3RfdHJhY2VmaWxlX2NvdW50Ci1AQCAtMzMsNyArMzMsNyBAQCBQQUdFX1NJWkU9JChnZXRjb25mIFBBR0VfU0laRSkKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLSBpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotLQlCQUlMX09VVCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0gZmkKLSAKLSBmdW5jdGlvbiBlbmFibGVfbHR0bmdfY2hhbm5lbF9jb3VudF9saW1pdCAoKQotZGlmZiAtLWdpdCBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9zaXplIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy90cmFjZWZpbGUtbGltaXRzL3Rlc3RfdHJhY2VmaWxlX3NpemUKLWluZGV4IDNkZGRiZTYxMy4uMTA4OTQ4N2ZmIDEwMDc1NQotLS0tIGEvdGVzdHMvcmVncmVzc2lvbi90b29scy90cmFjZWZpbGUtbGltaXRzL3Rlc3RfdHJhY2VmaWxlX3NpemUKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9zaXplCi1AQCAtMzMsNyArMzMsNyBAQCBOVU1fVEVTVFM9NjYKLSBzb3VyY2UgJFRFU1RESVIvdXRpbHMvdXRpbHMuc2gKLSAKLSBpZiBbICEgLXggIiRURVNUQVBQX0JJTiIgXTsgdGhlbgotLQlCQUlMX09VVCAiTm8gVVNUIGV2ZW50cyBiaW5hcnkgZGV0ZWN0ZWQuIgotKwlwbGFuX3NraXBfYWxsICJObyBVU1QgZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0gZmkKLSAKLSBmdW5jdGlvbiBlbmFibGVfbHR0bmdfY2hhbm5lbF9zaXplX2xpbWl0ICgpCi1kaWZmIC0tZ2l0IGEvdGVzdHMvcmVncmVzc2lvbi90b29scy93aWxkY2FyZC90ZXN0X2V2ZW50X3dpbGRjYXJkIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy93aWxkY2FyZC90ZXN0X2V2ZW50X3dpbGRjYXJkCi1pbmRleCA2MWVhNjdhNzIuLjkyMWEyMzAxZCAxMDA3NTUKLS0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvd2lsZGNhcmQvdGVzdF9ldmVudF93aWxkY2FyZAotKysrIGIvdGVzdHMvcmVncmVzc2lvbi90b29scy93aWxkY2FyZC90ZXN0X2V2ZW50X3dpbGRjYXJkCi1AQCAtOTcsNDIgKzk3LDQ3IEBAIHByaW50X3Rlc3RfYmFubmVyICIkVEVTVF9ERVNDIgotIAotIHN0YXJ0X2x0dG5nX3Nlc3Npb25kCi0gCi0tZGlhZyAiVGVzdCBVU1Qgd2lsZGNhcmQiCi0tCi0gaWYgWyAhIC14ICIkVEVTVEFQUF9CSU4iIF07IHRoZW4KLS0JQkFJTF9PVVQgIk5vIFVTVCBuZXZlbnRzIGJpbmFyeSBkZXRlY3RlZC4iCi0rCXNraXBfdXN0PTAKLStlbHNlCi0rCXNraXBfdXN0PTEKLSBmaQotIAotLUVWRU5UX05BTUU9InRwOnRwdGVzdCIKLStza2lwICRza2lwX3VzdCAiTm8gVVNUIG5ldmVudHMgYmluYXJ5IGRldGVjdGVkLiIgJE5VTV9VU1RfVEVTVFMgfHwKLSt7Ci0rCWRpYWcgIlRlc3QgVVNUIHdpbGRjYXJkIgotIAotLSMgbm9uLW1hdGNoaW5nCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMCAndHA6YWJjKicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICcqYWJjJwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJyp6KicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICcqXCoqJwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJypcKicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICdcKionCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMCAnKjoqdHB0ZSpzJwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJ3RwKip0cFRlc3QnCi0rCUVWRU5UX05BTUU9InRwOnRwdGVzdCIKLSAKLS0jIG1hdGNoaW5nCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAndHA6dHAqJwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyonCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAndHA6dHB0ZXN0KicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqKicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqKionCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKnRwdGVzdCcKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqKnRwdGVzdCcKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqdHB0ZSonCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKnRwKicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqdHAqKicKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqOip0cHRlc3QnCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKjoqdHB0ZSp0JwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJ3QqcCo6KnQqZSpzKnQnCi0tdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKnQqcCo6KnQqZSpzKnQqJwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJ3RwKnRwdGVzdCcKLS10ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICd0cCoqdHB0ZXN0JwotLXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJ3RwKnRlc3QnCi0rCSMgbm9uLW1hdGNoaW5nCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJ3RwOmFiYyonCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJyphYmMnCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJyp6KicKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMCAnKlwqKicKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMCAnKlwqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAwICdcKionCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDAgJyo6KnRwdGUqcycKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMCAndHAqKnRwVGVzdCcKLSsKLSsJIyBtYXRjaGluZwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICd0cDp0cConCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyonCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJ3RwOnRwdGVzdConCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyoqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqKionCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyp0cHRlc3QnCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyoqdHB0ZXN0JwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqdHB0ZSonCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyp0cConCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyp0cCoqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICcqOip0cHRlc3QnCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJyo6KnRwdGUqdCcKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAndCpwKjoqdCplKnMqdCcKLSsJdGVzdF9ldmVudF93aWxkY2FyZCB1c3QgMSAnKnQqcCo6KnQqZSpzKnQqJwotKwl0ZXN0X2V2ZW50X3dpbGRjYXJkIHVzdCAxICd0cCp0cHRlc3QnCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJ3RwKip0cHRlc3QnCi0rCXRlc3RfZXZlbnRfd2lsZGNhcmQgdXN0IDEgJ3RwKnRlc3QnCi0rfQotIAotIGlmIFsgIiQoaWQgLXUpIiA9PSAiMCIgXTsgdGhlbgotIAlpc3Jvb3Q9MQotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDEtY2hlY2stZm9yLWdldHRpZC1BUEktZHVyaW5nLWNvbmZpZ3VyZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLWNoZWNrLWZvci1nZXR0aWQtQVBJLWR1cmluZy1jb25maWd1cmUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM0OTRjZWUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDEtY2hlY2stZm9yLWdldHRpZC1BUEktZHVyaW5nLWNvbmZpZ3VyZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLUZyb20gNjljNjJmNWYzY2M0MjRiN2RkMGM4ZTQwOTc3NDNiMzlhOWM0ODMwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBTYXQsIDI3IEp1bCAyMDE5IDA4OjQ4OjEzIC0wNzAwCi1TdWJqZWN0OiBbbHR0bmctdG9vbHNdW1BBVENIXSBjaGVjayBmb3IgZ2V0dGlkIEFQSSBkdXJpbmcgY29uZmlndXJlCi0KLUFkZCBzdXBwb3J0IGZvciBnZXR0aWQoKSBwcm92aWRlZCBieSBnbGliYyAyLjMwKwotCi1TaW5jZSB2ZXJzaW9uIDIuMzAgZ2xpYmMgcHJvdmlkZXMgZ2V0dGlkIGFuZCBpdCBjYXVzZXMgY29uZmxpY3RzIHdpdGgKLWxvY2FsbHkgZGVmaW5lZCBnZXR0aWQoKS4gVXNlIHRoZSBsb2NhbCBkZWZpbml0aW9uIG9mCi1nZXR0aWQgb25seSBpZiBzeXN0ZW0gZ2V0dGlkIGlzIG5vdCBhdmFpbGFibGUuCi0KLWh0dHBzOi8vc291cmNld2FyZS5vcmcvZ2l0Lz9wPWdsaWJjLmdpdDthPWJsb2JfcGxhaW47Zj1ORVdTO2hiPUhFQUQ8UGFzdGU+Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgIHwgMiArLQotIHNyYy9jb21tb24vY29tcGF0L3RpZC5oIHwgMyArKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDMgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggN2I5OWY1Yy4uZTRiZDgyYyAxMDA2NDQKLS0tLSBhL2NvbmZpZ3VyZS5hYwotKysrIGIvY29uZmlndXJlLmFjCi1AQCAtMTkwLDcgKzE5MCw3IEBAIEFDX0NIRUNLX0hFQURFUlMoWyBcCi0gIyBCYXNpYyBmdW5jdGlvbnMgY2hlY2sKLSBBQ19DSEVDS19GVU5DUyhbIFwKLSAJYXRleGl0IGJ6ZXJvIGNsb2NrX2dldHRpbWUgZHVwMiBmZGF0YXN5bmMgZmxzIGZ0cnVuY2F0ZSBcCi0tCWdldGhvc3RieW5hbWUgZ2V0aG9zdG5hbWUgZ2V0cGFnZXNpemUgbG9jYWx0aW1lX3IgbWVtY2hyIG1lbXNldCBcCi0rCWdldGhvc3RieW5hbWUgZ2V0aG9zdG5hbWUgZ2V0cGFnZXNpemUgZ2V0dGlkIGxvY2FsdGltZV9yIG1lbWNociBtZW1zZXQgXAotIAlta2RpciBtdW5tYXAgcHV0ZW52IHJlYWxwYXRoIHJtZGlyIHNvY2tldCBzdHJjaHIgc3RyY3NwbiBzdHJkdXAgXAotIAlzdHJuY2FzZWNtcCBzdHJuZHVwIHN0cm5sZW4gc3RycGJyayBzdHJyY2hyIHN0cnN0ciBzdHJ0b2wgc3RydG91bCBcCi0gCXN0cnRvdWxsIGRpcmZkIGdldGhvc3RieW5hbWUyIGdldGlwbm9kZWJ5bmFtZSBlcG9sbF9jcmVhdGUxIFwKLWRpZmYgLS1naXQgYS9zcmMvY29tbW9uL2NvbXBhdC90aWQuaCBiL3NyYy9jb21tb24vY29tcGF0L3RpZC5oCi1pbmRleCA0MGY1NjJmLi5hYTA3YTg1IDEwMDY0NAotLS0tIGEvc3JjL2NvbW1vbi9jb21wYXQvdGlkLmgKLSsrKyBiL3NyYy9jb21tb24vY29tcGF0L3RpZC5oCi1AQCAtMjUsNiArMjUsNyBAQAotICNpZm5kZWYgTFRUTkdfVElEX0gKLSAjZGVmaW5lIExUVE5HX1RJRF9ICi0gCi0rI2lmICFIQVZFX0dFVFRJRAotICNpZmRlZiBfX2xpbnV4X18KLSAjaW5jbHVkZSA8c3lzY2FsbC5oPgotICNlbmRpZgotQEAgLTQ3LDUgKzQ4LDUgQEAgc3RhdGljIGlubGluZSBwaWRfdCBnZXR0aWQodm9pZCkKLSAJcmV0dXJuIGdldHBpZCgpOwotIH0KLSAjZW5kaWYKLS0KLSsjZW5kaWYgLyogSEFWRV9HRVRUSUQgKi8KLSAjZW5kaWYgLyogTFRUTkdfVElEX0ggKi8KLS0tIAotMi4yMi4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLXRlc3RzLWRvLW5vdC1zdHJpcC1hLWhlbHBlci1saWJyYXJ5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDEtdGVzdHMtZG8tbm90LXN0cmlwLWEtaGVscGVyLWxpYnJhcnkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmQwOGIwOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAxLXRlc3RzLWRvLW5vdC1zdHJpcC1hLWhlbHBlci1saWJyYXJ5LnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gYWIyMzhjMjEzZmFjMTkwOTcyZjU1ZTczY2YzZTBiYjFjNzg0NmViOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogVGh1LCAxMiBEZWMgMjAxOSAxNjo1MjowNyArMDEwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0czogZG8gbm90IHN0cmlwIGEgaGVscGVyIGxpYnJhcnkKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyB0ZXN0cy91dGlscy90ZXN0YXBwL3VzZXJzcGFjZS1wcm9iZS1lbGYtYmluYXJ5L01ha2VmaWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvdXRpbHMvdGVzdGFwcC91c2Vyc3BhY2UtcHJvYmUtZWxmLWJpbmFyeS9NYWtlZmlsZS5hbSBiL3Rlc3RzL3V0aWxzL3Rlc3RhcHAvdXNlcnNwYWNlLXByb2JlLWVsZi1iaW5hcnkvTWFrZWZpbGUuYW0KK2luZGV4IDAzZjVkNWEuLmQxMmMzNDMgMTAwNjQ0CistLS0gYS90ZXN0cy91dGlscy90ZXN0YXBwL3VzZXJzcGFjZS1wcm9iZS1lbGYtYmluYXJ5L01ha2VmaWxlLmFtCisrKysgYi90ZXN0cy91dGlscy90ZXN0YXBwL3VzZXJzcGFjZS1wcm9iZS1lbGYtYmluYXJ5L01ha2VmaWxlLmFtCitAQCAtMTIsNyArMTIsNyBAQCB1c2Vyc3BhY2VfcHJvYmVfZWxmX2JpbmFyeV9MREFERCA9IGxpYmZvby5sYQorIGxpYmZvby5zdHJpcDogbGliZm9vLmxhCisgCSQoT0JKQ09QWSkgLS1zdHJpcC1hbGwgLmxpYnMvbGliZm9vLnNvCisgCistYWxsLWxvY2FsOiBsaWJmb28uc3RyaXAKKythbGwtbG9jYWw6CisgCUBpZiBbIHgiJChzcmNkaXIpIiAhPSB4IiQoYnVpbGRkaXIpIiBdOyB0aGVuIFwKKyAJCWZvciBzY3JpcHQgaW4gJChFWFRSQV9ESVNUKTsgZG8gXAorIAkJCWNwIC1mICQoc3JjZGlyKS8kJHNjcmlwdCAkKGJ1aWxkZGlyKTsgXAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDEtdGVzdHMtcmVncmVzc2lvbi1kaXNhYmxlLXRoZS10b29scy1saXZlLXRlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDEtdGVzdHMtcmVncmVzc2lvbi1kaXNhYmxlLXRoZS10b29scy1saXZlLXRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYyYzE0ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHMvMDAwMS10ZXN0cy1yZWdyZXNzaW9uLWRpc2FibGUtdGhlLXRvb2xzLWxpdmUtdGVzdHMucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorRnJvbSBjNjliNjhlNWMwM2YxZDI2MDAyNWZiMWRkOWFiNzM0NWUzMWUxNWVmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBGcmksIDI0IEphbiAyMDIwIDE4OjAzOjI1ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3RzL3JlZ3Jlc3Npb246IGRpc2FibGUgdGhlIHRvb2xzL2xpdmUgdGVzdHMKKworVGhleSBoYXZlIGJlZW4gZm91bmQgdG8gc3BvcmFkaWNhbGx5IGZhaWw7IHRoZSBpc3N1ZSBoYXMgYmVlbgorcmVwb3J0ZWQgdXBzdHJlYW0gYW5kIHRoZXkgd2lsbCB3b3JrIHRvIGludmVzdGlnYXRlIGFuZCBmaXg6CitodHRwczovL2J1Z3MubHR0bmcub3JnL2lzc3Vlcy8xMjE3CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbdXBzdHJlYW0gaXMgd29ya2luZyBvbiBhIHJlYWwgZml4XQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyB0ZXN0cy9yZWdyZXNzaW9uL01ha2VmaWxlLmFtIHwgNCAtLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL01ha2VmaWxlLmFtIGIvdGVzdHMvcmVncmVzc2lvbi9NYWtlZmlsZS5hbQoraW5kZXggNzNlYjlmNy4uYjkyYmRiZCAxMDA2NDQKKy0tLSBhL3Rlc3RzL3JlZ3Jlc3Npb24vTWFrZWZpbGUuYW0KKysrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vTWFrZWZpbGUuYW0KK0BAIC05LDE0ICs5LDEwIEBAIFRFU1RTID0gdG9vbHMvZmlsdGVyaW5nL3Rlc3RfaW52YWxpZF9maWx0ZXIgXAorIAl0b29scy9maWx0ZXJpbmcvdGVzdF92YWxpZF9maWx0ZXIgXAorIAl0b29scy9zdHJlYW1pbmcvdGVzdF91c3QgXAorIAl0b29scy9oZWFsdGgvdGVzdF90aHJlYWRfb2sgXAorLQl0b29scy9saXZlL3Rlc3RfdXN0IFwKKy0JdG9vbHMvbGl2ZS90ZXN0X3VzdF90cmFjZWZpbGVfY291bnQgXAorLQl0b29scy9saXZlL3Rlc3RfbHR0bmdfdXN0IFwKKyAJdG9vbHMvdHJhY2VmaWxlLWxpbWl0cy90ZXN0X3RyYWNlZmlsZV9jb3VudCBcCisgCXRvb2xzL3RyYWNlZmlsZS1saW1pdHMvdGVzdF90cmFjZWZpbGVfc2l6ZSBcCisgCXRvb2xzL2V4Y2x1c2lvbi90ZXN0X2V4Y2x1c2lvbiBcCisgCXRvb2xzL3NuYXBzaG90cy90ZXN0X3VzdF9mYXN0IFwKKy0JdG9vbHMvc25hcHNob3RzL3Rlc3RfdXN0X3N0cmVhbWluZyBcCisgCXRvb2xzL3NhdmUtbG9hZC90ZXN0X3NhdmUgXAorIAl0b29scy9zYXZlLWxvYWQvdGVzdF9sb2FkIFwKKyAJdG9vbHMvc2F2ZS1sb2FkL3Rlc3RfYXV0b2xvYWQgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDItRml4LWNoZWNrLWZvci1sdHRuZy1tb2R1bGVzLXByZXNlbmNlLWJlZm9yZS10ZXN0aW5nLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzLzAwMDItRml4LWNoZWNrLWZvci1sdHRuZy1tb2R1bGVzLXByZXNlbmNlLWJlZm9yZS10ZXN0aW5nLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ODRhMDc5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29scy8wMDAyLUZpeC1jaGVjay1mb3ItbHR0bmctbW9kdWxlcy1wcmVzZW5jZS1iZWZvcmUtdGVzdGluZy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0ICswLDAgQEAKLUZyb20gNThlNGRjY2U0OGI0OGI2OGI2NWJmZmMwY2Q1MWQ5ZTI2YjQ0Yzc1ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEpvbmF0aGFuIFJham90dGUgPGpvbmF0aGFuLnJham90dGUtanVsaWVuQGVmZmljaW9zLmNvbT4KLURhdGU6IFdlZCwgMjIgTWF5IDIwMTkgMTY6NDQ6NTQgLTA0MDAKLVN1YmplY3Q6IFtQQVRDSF0gRml4OiBjaGVjayBmb3IgbHR0bmcgbW9kdWxlcyBwcmVzZW5jZSBiZWZvcmUgdGVzdGluZwotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9saXN0cy5sdHRuZy5vcmcvcGlwZXJtYWlsL2x0dG5nLWRldi8yMDE5LU1heS8wMjg5ODcuaHRtbF0KLQotU2lnbmVkLW9mZi1ieTogSm9uYXRoYW4gUmFqb3R0ZSA8am9uYXRoYW4ucmFqb3R0ZS1qdWxpZW5AZWZmaWNpb3MuY29tPgotLS0tCi0gdGVzdHMvcmVncmVzc2lvbi90b29scy9ub3RpZmljYXRpb24vdGVzdF9ub3RpZmljYXRpb25fbXVsdGlfYXBwIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl9tdWx0aV9hcHAgYi90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl9tdWx0aV9hcHAKLWluZGV4IDI5YjBmNjIuLmE2YmFmNjUgMTAwNzU1Ci0tLS0gYS90ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL25vdGlmaWNhdGlvbi90ZXN0X25vdGlmaWNhdGlvbl9tdWx0aV9hcHAKLSsrKyBiL3Rlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvbm90aWZpY2F0aW9uL3Rlc3Rfbm90aWZpY2F0aW9uX211bHRpX2FwcAotQEAgLTQ4NCw2ICs0ODQsNyBAQCBlbHNlCi0gZmkKLSAKLSBpZiBbICIkKGlkIC11KSIgPT0gIjAiIF07IHRoZW4KLSsJdmFsaWRhdGVfbHR0bmdfbW9kdWxlc19wcmVzZW50Ci0gCVRFU1RTKz0oCi0gCXRlc3RfbXVsdGlfYXBwX2tlcm5lbAotIAl0ZXN0X29uX3JlZ2lzdGVyX2V2YWx1YXRpb25fa2VybmVsCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi4xMC43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXRvb2xzXzIuMTAuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYWE2ZDE5ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi4xMC43LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYzICswLDAgQEAKLVNFQ1RJT04gPSAiZGV2ZWwiCi1TVU1NQVJZID0gIkxpbnV4IFRyYWNlIFRvb2xraXQgQ29udHJvbCIKLURFU0NSSVBUSU9OID0gIlRoZSBMaW51eCB0cmFjZSB0b29sa2l0IGlzIGEgc3VpdGUgb2YgdG9vbHMgZGVzaWduZWQgXAotdG8gZXh0cmFjdCBwcm9ncmFtIGV4ZWN1dGlvbiBkZXRhaWxzIGZyb20gdGhlIExpbnV4IG9wZXJhdGluZyBzeXN0ZW0gXAotYW5kIGludGVycHJldCB0aGVtLiIKLQotTElDRU5TRSA9ICJHUEx2MiAmIExHUEx2Mi4xIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MDFkN2ZjNDQ5NmFhY2YzN2Q5MGRmOTBiOTBiMGNhYzEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3BsLTIuMC50eHQ7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xncGwtMi4xLnR4dDttZDU9MGYwZDcxNTAwZTZhNTdmZDI0ZDgyNWYzMzI0MmI5Y2EiCi0KLURFUEVORFMgPSAibGlidXJjdSBwb3B0IGxpYnhtbDIgdXRpbC1saW51eCIKLVJERVBFTkRTXyR7UE59ID0gImxpYmdjYyIKLVJERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJtYWtlIHBlcmwgYmFzaCBnYXdrIGJhYmVsdHJhY2UgcHJvY3BzIHBlcmwtbW9kdWxlLW92ZXJsb2FkaW5nIGNvcmV1dGlscyB1dGlsLWxpbnV4IGttb2QgbHR0bmctbW9kdWxlcyBzZWQiCi1SREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1nbGliYyA9ICIgZ2xpYmMtdXRpbHMiCi1SREVQRU5EU18ke1BOfS1wdGVzdF9hcHBlbmRfbGliYy1tdXNsID0gIiBtdXNsLXV0aWxzIgotIyBiYWJlbHN0YXRzLnBsIHdhbnRzIGdldG9wdC1sb25nCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAicGVybC1tb2R1bGUtZ2V0b3B0LWxvbmciCi0KLVBZVEhPTl9PUFRJT04gPSAiYW1fY3ZfcHl0aG9uX3B5ZXhlY2Rpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKLSAgICAgICAgICAgICAgICAgYW1fY3ZfcHl0aG9uX3B5dGhvbmRpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKLSAgICAgICAgICAgICAgICAgUFlUSE9OX0lOQ0xVREU9Jy1JJHtTVEFHSU5HX0lOQ0RJUn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059JHtQWVRIT05fQUJJfScgXAotIgotUEFDS0FHRUNPTkZJRyA/Pz0gImx0dG5nLXVzdCIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uXSA9ICItLWVuYWJsZS1weXRob24tYmluZGluZ3MgJHtQWVRIT05fT1BUSU9OfSwscHl0aG9uMyBzd2lnLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbbHR0bmctdXN0XSA9ICItLXdpdGgtbHR0bmctdXN0LCAtLXdpdGhvdXQtbHR0bmctdXN0LCBsdHRuZy11c3QiCi1QQUNLQUdFQ09ORklHW2ttb2RdID0gIi0td2l0aC1rbW9kLCAtLXdpdGhvdXQta21vZCwga21vZCIKLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbi1wYWdlcywgLS1kaXNhYmxlLW1hbi1wYWdlcywgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2FyYyA9ICJsdHRuZy11c3QiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9sdHRuZy5vcmcvZmlsZXMvbHR0bmctdG9vbHMvbHR0bmctdG9vbHMtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly94MzIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAgZmlsZTovL2x0dG5nLXNlc3Npb25kLnNlcnZpY2UgXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Ta2lwLXdoZW4tdGVzdGFwcC1pcy1ub3QtcHJlc2VudC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLUZpeC1jaGVjay1mb3ItbHR0bmctbW9kdWxlcy1wcmVzZW5jZS1iZWZvcmUtdGVzdGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNoZWNrLWZvci1nZXR0aWQtQVBJLWR1cmluZy1jb25maWd1cmUucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlNzgwNGQxMGU0Y2FkZTM4MWUyNDE2MDFmNjA0NzM3MyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJlZDcxZWJlMDBjNWQ5ODVjNzRmMzBlOTdiNjE0ZTkwOTU3M2NiZDkyNzZjODVlMDVkOTU1N2EwYjgxN2ExMzEyIgotCi1pbmhlcml0IGF1dG90b29scyBwdGVzdCBwa2djb25maWcgdXNlcmFkZCBweXRob24zLWRpciBtYW5wYWdlcyBzeXN0ZW1kCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJsdHRuZy1zZXNzaW9uZC5zZXJ2aWNlIgotU1lTVEVNRF9BVVRPX0VOQUJMRSA9ICJkaXNhYmxlIgotCi1VU0VSQUREX1BBQ0tBR0VTID0gIiR7UE59IgotR1JPVVBBRERfUEFSQU1fJHtQTn0gPSAidHJhY2luZyIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9sdHRuZy9saWJleGVjLyogJHtkYXRhZGlyfS94bWwvbHR0bmcgXAotICAgICAgICAgICAgICAgICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyouYSIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKi5sYSIKLQotIyBTaW5jZSBmaWxlcyBhcmUgaW5zdGFsbGVkIGludG8gJHtsaWJkaXJ9L2x0dG5nL2xpYmV4ZWMgd2UgbWF0Y2ggCi0jIHRoZSBsaWJleGVjIGluc2FuZSB0ZXN0IHNvIHNraXAgaXQuCi0jIFB5dGhvbiBtb2R1bGUgbmVlZHMgdG8ga2VlcCBfbHR0bmcuc28KLUlOU0FORV9TS0lQXyR7UE59ID0gImxpYmV4ZWMgZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtQTn0tZGJnID0gImxpYmV4ZWMiCi0KLWRvX2luc3RhbGxfYXBwZW5kICgpIHsKLSAgICAjIGluc3RhbGwgc3lzdGVtZCB1bml0IGZpbGUKLSAgICBpbnN0YWxsIC1kICR7RH0ke3N5c3RlbWRfdW5pdGRpcn0vc3lzdGVtCi0gICAgaW5zdGFsbCAtbSAwNjQ0ICR7V09SS0RJUn0vbHR0bmctc2Vzc2lvbmQuc2VydmljZSAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQotfQotCi1kb19pbnN0YWxsX3B0ZXN0ICgpIHsKLSAgICBmb3IgZiBpbiBNYWtlZmlsZSB0ZXN0cy9NYWtlZmlsZSB0ZXN0cy91dGlscy91dGlscy5zaCB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NhdmUtbG9hZC9sb2FkLTQyKi5sdHRuZyB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL3NhdmUtbG9hZC9jb25maWd1cmF0aW9uL2xvYWQtNDIqLmx0dG5nIDsgZG8KLSAgICAgICAgaW5zdGFsbCAtRCAiJHtCfS8kZiIgIiR7RH0ke1BURVNUX1BBVEh9LyRmIgotICAgIGRvbmUKLQotICAgIGZvciBmIGluIGNvbmZpZy90YXAtZHJpdmVyLnNoIGNvbmZpZy90ZXN0LWRyaXZlciBzcmMvY29tbW9uL2NvbmZpZy9zZXNzaW9uLnhzZCBzcmMvY29tbW9uL21pLWx0dG5nLTMuMC54c2Q7IGRvCi0gICAgICAgIGluc3RhbGwgLUQgIiR7U30vJGYiICIke0R9JHtQVEVTVF9QQVRIfS8kZiIKLSAgICBkb25lCi0KLSAgICAjIFByZXZlbnQgJ21ha2UgY2hlY2snIGZyb20gcmVjdXJzaW5nIGludG8gbm9uLXRlc3Qgc3ViZGlyZWN0b3JpZXMuCi0gICAgc2VkIC1pIC1lICdzIV5TVUJESVJTID0gLiohU1VCRElSUyA9IHRlc3RzIScgIiR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlIgotCi0gICAgIyBXZSBkb24ndCBuZWVkIHRoZXNlCi0gICAgc2VkIC1pIC1lICcvZGlzdF9ub2luc3RfU0NSSVBUUyA9IC8sL14kL2QnICIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9NYWtlZmlsZSIKLQotICAgICMgV2Ugc2hvdWxkbid0IG5lZWQgdG8gYnVpbGQgYW55dGhpbmcgaW4gdGVzdHMvdXRpbHMKLSAgICBzZWQgLWkgLWUgJ3MhYW1fX2FwcGVuZF8xID0gLiB1dGlscyFhbV9fYXBwZW5kXzEgPSAuICEnIFwKLSAgICAgICAgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlIgotCi0gICAgIyBDb3B5IHRoZSB0ZXN0cyBkaXJlY3RvcnkgdHJlZSBhbmQgdGhlIGV4ZWN1dGFibGVzIGFuZAotICAgICMgTWFrZWZpbGVzIGZvdW5kIHdpdGhpbi4KLSAgICBmb3IgZCBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMiIC10eXBlIGQgLW5vdCAtbmFtZSAubGlicyAtcHJpbnRmICclUCAnKSA7IGRvCi0gICAgICAgIGluc3RhbGwgLWQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIgotICAgICAgICBmaW5kICIke0J9L3Rlc3RzLyRkIiAtbWF4ZGVwdGggMSAtZXhlY3V0YWJsZSAtdHlwZSBmIFwKLSAgICAgICAgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSArCi0gICAgICAgICMgVGFrZSBhbGwgLnB5IHNjcmlwdHMgZm9yIHRlc3RzIHVzaW5nIHRoZSBweXRob24gYmluZGluZ3MuCi0gICAgICAgIGZpbmQgIiR7Qn0vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC10eXBlIGYgLW5hbWUgIioucHkiIFwKLSAgICAgICAgICAgIC1leGVjIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiB7fSArCi0gICAgICAgIHRlc3QgLXIgIiR7Qn0vdGVzdHMvJGQvTWFrZWZpbGUiICYmIFwKLSAgICAgICAgICAgIGluc3RhbGwgLXQgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkIiAiJHtCfS90ZXN0cy8kZC9NYWtlZmlsZSIKLSAgICBkb25lCi0KLSAgICBmb3IgZCBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMiIC10eXBlIGQgLW5hbWUgLmxpYnMgLXByaW50ZiAnJVAgJykgOyBkbwotICAgICAgICBmb3IgZiBpbiAkKGZpbmQgIiR7Qn0vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1leGVjdXRhYmxlIC10eXBlIGYgLXByaW50ZiAnJVAgJykgOyBkbwotICAgICAgICAgICAgY3AgJHtCfS90ZXN0cy8kZC8kZiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9gZGlybmFtZSAkZGAvJGYKLSAgICAgICAgICAgIGNhc2UgJGYgaW4KLSAgICAgICAgICAgICAgICAqLnNvKQotICAgICAgICAgICAgICAgICAgICBpbnN0YWxsIC1kICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkLwotICAgICAgICAgICAgICAgICAgICBsbiAtcyAgLi4vJGYgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQvJGYKLSAgICAgICAgICAgICAgICAgICAgIyBSZW1vdmUgYW55IHJwYXRoL3J1bnBhdGggdG8gcGFzcyBRQSBjaGVjay4KLSAgICAgICAgICAgICAgICAgICAgY2hycGF0aCAtLWRlbGV0ZSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZC8kZgotICAgICAgICAgICAgICAgICAgICA7OwotICAgICAgICAgICAgZXNhYwotICAgICAgICBkb25lCi0gICAgZG9uZQotCi0gICAgIwotICAgICMgVXNlIHRoZSB2ZXJzaW9uZWQgbGlicyBvZiBsaWJsdHRuZy11c3QtZGwuCi0gICAgIwotICAgIHVzdGRsPSIke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy9yZWdyZXNzaW9uL3VzdC91c3QtZGwvdGVzdF91c3QtZGwucHkiCi0gICAgaWYgWyAtZSAkdXN0ZGwgXTsgdGhlbgotICAgICAgICBzZWQgLWkgLWUgJ3MhOmxpYmx0dG5nLXVzdC1kbC5zbyE6bGlibHR0bmctdXN0LWRsLnNvLjAhJyAkdXN0ZGwKLSAgICBmaQotCi0gICAgaW5zdGFsbCAke0J9L3Rlc3RzL3VuaXQvaW5pX2NvbmZpZy9zYW1wbGUuaW5pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3VuaXQvaW5pX2NvbmZpZy8KLQotICAgICMgV2Ugc2hvdWxkbid0IG5lZWQgdG8gYnVpbGQgYW55dGhpbmcgaW4gdGVzdHMvcmVncmVzc2lvbi90b29scwotICAgIHNlZCAtaSAtZSAncyFeU1VCRElSUyA9IHRvb2xzICFTVUJESVJTID0gIScgXAotICAgICAgICAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcmVncmVzc2lvbi9NYWtlZmlsZSIKLQotICAgICMgUHJldmVudCBhdHRlbXB0cyB0byB1cGRhdGUgTWFrZWZpbGVzIGR1cmluZyB0ZXN0IHJ1bnMsIGFuZAotICAgICMgc2lsZW5jZSAiTWFraW5nIGNoZWNrIGluICRTVUJESVIiIG1lc3NhZ2VzLgotICAgIGZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKLSAgICAgICAgc2VkIC1pIC1lICcvTWFrZWZpbGU6LywvXiQvZCcgLWUgJy8lOiAlLmluLywvXiQvZCcgXAotICAgICAgICAtZSAnL2VjaG8gIk1ha2luZyAkJHRhcmdldCBpbiAkJHN1YmRpciI7IFxcL2QnIFwKLSAgICAgICAgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgXAotICAgICAgICAtZSAncy9eYnVpbGRkaXIgPSBcKC4qXCkvYnVpbGRkaXIgPSAuLycgXAotICAgICAgICAtZSAncy9eYWxsLWFtOi4qL2FsbC1hbTovJyBcCi0gICAgICAgIHt9ICsKLQotICAgIGZpbmQgIiR7RH0ke1BURVNUX1BBVEh9IiAtbmFtZSBNYWtlZmlsZSAtdHlwZSBmIC1leGVjIFwKLSAgICAgICAgdG91Y2ggLXIgIiR7Qn0vTWFrZWZpbGUiIHt9ICsKLQotICAgICMKLSAgICAjIE5lZWQgdG8gc3RvcCBnZW5lcmF0ZWQgYmluYXJpZXMgZnJvbSByZWJ1aWxkaW5nIGJ5IHJlbW92aW5nIHRoZWlyIHNvdXJjZSBkZXBlbmRlbmNpZXMKLSAgICAjCi0gICAgc2VkIC1lICdzI1woXnRlc3QuKk9CSkVDVFMuPVwpI2Rpc2FibGVcMSNnJyBcCi0gICAgICAgIC1lICdzI1woXnRlc3QuKkRFUEVOREVOQ0lFUy49XCkjZGlzYWJsZVwxI2cnIFwKLSAgICAgICAgLWUgJ3MjXChedGVzdC4qU09VUkNFUy49XCkjZGlzYWJsZVwxI2cnIFwKLSAgICAgICAgLWUgJ3MjXChedGVzdC4qTERBREQuPVwpI2Rpc2FibGVcMSNnJyBcCi0gICAgICAgIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3VuaXQvTWFrZWZpbGUKLQotICAgICMgU3Vic3RpdHV0ZSBsaW5rcyB0byBpbnN0YWxsZWQgYmluYXJpZXMuCi0gICAgZm9yIHByb2cgaW4gbHR0bmcgbHR0bmctcmVsYXlkIGx0dG5nLXNlc3Npb25kIGx0dG5nLWNvbnN1bWVyZCBsdHRuZy1jcmFzaDsgZG8KLSAgICAgICAgZXhlZGlyPSIke0R9JHtQVEVTVF9QQVRIfS9zcmMvYmluLyR7cHJvZ30iCi0gICAgICAgIGluc3RhbGwgLWQgIiRleGVkaXIiCi0gICAgICAgIGNhc2UgIiRwcm9nIiBpbgotICAgICAgICAgICAgbHR0bmctY29uc3VtZXJkKQotICAgICAgICAgICAgICAgIGxuIC1zICIke2xpYmRpcn0vbHR0bmcvbGliZXhlYy8kcHJvZyIgIiRleGVkaXIiCi0gICAgICAgICAgICAgICAgOzsKLSAgICAgICAgICAgICopCi0gICAgICAgICAgICAgICAgbG4gLXMgIiR7YmluZGlyfS8kcHJvZyIgIiRleGVkaXIiCi0gICAgICAgICAgICAgICAgOzsKLSAgICAgICAgZXNhYwotICAgIGRvbmUKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy10b29sc18yLjExLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi4xMS4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2YTE5ZWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdG9vbHNfMi4xMS4yLmJiCkBAIC0wLDAgKzEsMTY2IEBACitTRUNUSU9OID0gImRldmVsIgorU1VNTUFSWSA9ICJMaW51eCBUcmFjZSBUb29sa2l0IENvbnRyb2wiCitERVNDUklQVElPTiA9ICJUaGUgTGludXggdHJhY2UgdG9vbGtpdCBpcyBhIHN1aXRlIG9mIHRvb2xzIGRlc2lnbmVkIFwKK3RvIGV4dHJhY3QgcHJvZ3JhbSBleGVjdXRpb24gZGV0YWlscyBmcm9tIHRoZSBMaW51eCBvcGVyYXRpbmcgc3lzdGVtIFwKK2FuZCBpbnRlcnByZXQgdGhlbS4iCisKK0xJQ0VOU0UgPSAiR1BMdjIgJiBMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTAxZDdmYzQ0OTZhYWNmMzdkOTBkZjkwYjkwYjBjYWMxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dwbC0yLjAudHh0O21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9sZ3BsLTIuMS50eHQ7bWQ1PTBmMGQ3MTUwMGU2YTU3ZmQyNGQ4MjVmMzMyNDJiOWNhIgorCitERVBFTkRTID0gImxpYnVyY3UgcG9wdCBsaWJ4bWwyIHV0aWwtbGludXgiCitSREVQRU5EU18ke1BOfSA9ICJsaWJnY2MiCitSREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSBwZXJsIGJhc2ggZ2F3ayBiYWJlbHRyYWNlIHByb2NwcyBwZXJsLW1vZHVsZS1vdmVybG9hZGluZyBjb3JldXRpbHMgdXRpbC1saW51eCBrbW9kIGx0dG5nLW1vZHVsZXMgc2VkIHB5dGhvbjMtY29yZSIKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLWdsaWJjID0gIiBnbGliYy11dGlscyIKK1JERVBFTkRTXyR7UE59LXB0ZXN0X2FwcGVuZF9saWJjLW11c2wgPSAiIG11c2wtdXRpbHMiCisjIGJhYmVsc3RhdHMucGwgd2FudHMgZ2V0b3B0LWxvbmcKK1JERVBFTkRTXyR7UE59LXB0ZXN0ICs9ICJwZXJsLW1vZHVsZS1nZXRvcHQtbG9uZyIKKworUFlUSE9OX09QVElPTiA9ICJhbV9jdl9weXRob25fcHlleGVjZGlyPScke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgXAorICAgICAgICAgICAgICAgICBhbV9jdl9weXRob25fcHl0aG9uZGlyPScke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfScgXAorICAgICAgICAgICAgICAgICBQWVRIT05fSU5DTFVERT0nLUkke1NUQUdJTkdfSU5DRElSfS9weXRob24ke1BZVEhPTl9CQVNFVkVSU0lPTn0ke1BZVEhPTl9BQkl9JyBcCisiCitQQUNLQUdFQ09ORklHID8/PSAibHR0bmctdXN0IgorUEFDS0FHRUNPTkZJR1tweXRob25dID0gIi0tZW5hYmxlLXB5dGhvbi1iaW5kaW5ncyAke1BZVEhPTl9PUFRJT059LCxweXRob24zIHN3aWctbmF0aXZlIgorUEFDS0FHRUNPTkZJR1tsdHRuZy11c3RdID0gIi0td2l0aC1sdHRuZy11c3QsIC0td2l0aG91dC1sdHRuZy11c3QsIGx0dG5nLXVzdCIKK1BBQ0tBR0VDT05GSUdba21vZF0gPSAiLS13aXRoLWttb2QsIC0td2l0aG91dC1rbW9kLCBrbW9kIgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUtbWFuLXBhZ2VzLCAtLWRpc2FibGUtbWFuLXBhZ2VzLCBhc2NpaWRvYy1uYXRpdmUgeG1sdG8tbmF0aXZlIGxpYnhzbHQtbmF0aXZlIgorUEFDS0FHRUNPTkZJR19yZW1vdmVfYXJjID0gImx0dG5nLXVzdCIKKworU1JDX1VSSSA9ICJodHRwczovL2x0dG5nLm9yZy9maWxlcy9sdHRuZy10b29scy9sdHRuZy10b29scy0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovL3gzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3RzLWRvLW5vdC1zdHJpcC1hLWhlbHBlci1saWJyYXJ5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCisgICAgICAgICAgIGZpbGU6Ly9sdHRuZy1zZXNzaW9uZC5zZXJ2aWNlIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtcmVncmVzc2lvbi1kaXNhYmxlLXRoZS10b29scy1saXZlLXRlc3RzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNjhlZDc4ZjdmYTQyMzU0NzdlYTU3N2U0OGIzY2QyNDUiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTM2NDc3MzA1YjI1ZjY1YzVkZDIyZGI5MTYxMjg3ZDMwYTMwOWNlODY4YjYxODA4NTdiMWZkMWZiNWU2YTU2YiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcHRlc3QgcGtnY29uZmlnIHVzZXJhZGQgcHl0aG9uMy1kaXIgbWFucGFnZXMgc3lzdGVtZAorCitTWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAibHR0bmctc2Vzc2lvbmQuc2VydmljZSIKK1NZU1RFTURfQVVUT19FTkFCTEUgPSAiZGlzYWJsZSIKKworVVNFUkFERF9QQUNLQUdFUyA9ICIke1BOfSIKK0dST1VQQUREX1BBUkFNXyR7UE59ID0gInRyYWNpbmciCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbHR0bmcvbGliZXhlYy8qICR7ZGF0YWRpcn0veG1sL2x0dG5nIFwKKyAgICAgICAgICAgICAgICAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEiCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoubGEiCisKKyMgU2luY2UgZmlsZXMgYXJlIGluc3RhbGxlZCBpbnRvICR7bGliZGlyfS9sdHRuZy9saWJleGVjIHdlIG1hdGNoIAorIyB0aGUgbGliZXhlYyBpbnNhbmUgdGVzdCBzbyBza2lwIGl0LgorIyBQeXRob24gbW9kdWxlIG5lZWRzIHRvIGtlZXAgX2x0dG5nLnNvCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJsaWJleGVjIGRldi1zbyIKK0lOU0FORV9TS0lQXyR7UE59LWRiZyA9ICJsaWJleGVjIgorCitQUklWQVRFX0xJQlNfJHtQTn0tcHRlc3QgPSAibGliZm9vLnNvIgorCitkb19pbnN0YWxsX2FwcGVuZCAoKSB7CisgICAgIyBpbnN0YWxsIHN5c3RlbWQgdW5pdCBmaWxlCisgICAgaW5zdGFsbCAtZCAke0R9JHtzeXN0ZW1kX3VuaXRkaXJ9L3N5c3RlbQorICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2x0dG5nLXNlc3Npb25kLnNlcnZpY2UgJHtEfSR7c3lzdGVtZF91bml0ZGlyfS9zeXN0ZW0KK30KKworZG9faW5zdGFsbF9wdGVzdCAoKSB7CisgICAgZm9yIGYgaW4gTWFrZWZpbGUgdGVzdHMvTWFrZWZpbGUgdGVzdHMvdXRpbHMvdXRpbHMuc2ggdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvbG9hZC00MioubHR0bmcgdGVzdHMvcmVncmVzc2lvbi90b29scy9zYXZlLWxvYWQvY29uZmlndXJhdGlvbi9sb2FkLTQyKi5sdHRuZyB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL2hlYWx0aC90ZXN0X2hlYWx0aC5zaCB0ZXN0cy9yZWdyZXNzaW9uL3Rvb2xzL21ldGFkYXRhL3V0aWxzLnNoIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMvcm90YXRpb24vcm90YXRlX3V0aWxzLnNoOyBkbworICAgICAgICBpbnN0YWxsIC1EICIke0J9LyRmIiAiJHtEfSR7UFRFU1RfUEFUSH0vJGYiCisgICAgZG9uZQorCisgICAgZm9yIGYgaW4gY29uZmlnL3RhcC1kcml2ZXIuc2ggY29uZmlnL3Rlc3QtZHJpdmVyIHNyYy9jb21tb24vY29uZmlnL3Nlc3Npb24ueHNkIHNyYy9jb21tb24vbWktbHR0bmctMy4wLnhzZDsgZG8KKyAgICAgICAgaW5zdGFsbCAtRCAiJHtTfS8kZiIgIiR7RH0ke1BURVNUX1BBVEh9LyRmIgorICAgIGRvbmUKKworICAgICMgUHJldmVudCAnbWFrZSBjaGVjaycgZnJvbSByZWN1cnNpbmcgaW50byBub24tdGVzdCBzdWJkaXJlY3Rvcmllcy4KKyAgICBzZWQgLWkgLWUgJ3MhXlNVQkRJUlMgPSAuKiFTVUJESVJTID0gdGVzdHMhJyAiJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUiCisKKyAgICAjIFdlIGRvbid0IG5lZWQgdGhlc2UKKyAgICBzZWQgLWkgLWUgJy9kaXN0X25vaW5zdF9TQ1JJUFRTID0gLywvXiQvZCcgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL01ha2VmaWxlIgorCisgICAgIyBXZSBzaG91bGRuJ3QgbmVlZCB0byBidWlsZCBhbnl0aGluZyBpbiB0ZXN0cy91dGlscworICAgIHNlZCAtaSAtZSAncyFhbV9fYXBwZW5kXzEgPSAuIHV0aWxzIWFtX19hcHBlbmRfMSA9IC4gIScgXAorICAgICAgICAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvTWFrZWZpbGUiCisKKyAgICAjIENvcHkgdGhlIHRlc3RzIGRpcmVjdG9yeSB0cmVlIGFuZCB0aGUgZXhlY3V0YWJsZXMgYW5kCisgICAgIyBNYWtlZmlsZXMgZm91bmQgd2l0aGluLgorICAgIGZvciBkIGluICQoZmluZCAiJHtCfS90ZXN0cyIgLXR5cGUgZCAtbm90IC1uYW1lIC5saWJzIC1wcmludGYgJyVQICcpIDsgZG8KKyAgICAgICAgaW5zdGFsbCAtZCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiCisgICAgICAgIGZpbmQgIiR7Qn0vdGVzdHMvJGQiIC1tYXhkZXB0aCAxIC1leGVjdXRhYmxlIC10eXBlIGYgXAorICAgICAgICAgICAgLWV4ZWMgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiIHt9ICsKKyAgICAgICAgIyBUYWtlIGFsbCAucHkgc2NyaXB0cyBmb3IgdGVzdHMgdXNpbmcgdGhlIHB5dGhvbiBiaW5kaW5ncy4KKyAgICAgICAgZmluZCAiJHtCfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLXR5cGUgZiAtbmFtZSAiKi5weSIgXAorICAgICAgICAgICAgLWV4ZWMgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiIHt9ICsKKyAgICAgICAgdGVzdCAtciAiJHtCfS90ZXN0cy8kZC9NYWtlZmlsZSIgJiYgXAorICAgICAgICAgICAgaW5zdGFsbCAtdCAiJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQiICIke0J9L3Rlc3RzLyRkL01ha2VmaWxlIgorICAgIGRvbmUKKworICAgIGZvciBkIGluICQoZmluZCAiJHtCfS90ZXN0cyIgLXR5cGUgZCAtbmFtZSAubGlicyAtcHJpbnRmICclUCAnKSA7IGRvCisgICAgICAgIGZvciBmIGluICQoZmluZCAiJHtCfS90ZXN0cy8kZCIgLW1heGRlcHRoIDEgLWV4ZWN1dGFibGUgLXR5cGUgZiAtcHJpbnRmICclUCAnKSA7IGRvCisgICAgICAgICAgICBjcCAke0J9L3Rlc3RzLyRkLyRmICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL2BkaXJuYW1lICRkYC8kZgorICAgICAgICAgICAgY2FzZSAkZiBpbgorICAgICAgICAgICAgICAgICouc28pCisgICAgICAgICAgICAgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvJGQvCisgICAgICAgICAgICAgICAgICAgIGxuIC1zICAuLi8kZiAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy8kZC8kZgorICAgICAgICAgICAgICAgICAgICAjIFJlbW92ZSBhbnkgcnBhdGgvcnVucGF0aCB0byBwYXNzIFFBIGNoZWNrLgorICAgICAgICAgICAgICAgICAgICBjaHJwYXRoIC0tZGVsZXRlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzLyRkLyRmCisgICAgICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICBlc2FjCisgICAgICAgIGRvbmUKKyAgICBkb25lCisKKyAgICBjaHJwYXRoIC0tZGVsZXRlICR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3V0aWxzL3Rlc3RhcHAvdXNlcnNwYWNlLXByb2JlLWVsZi1iaW5hcnkvdXNlcnNwYWNlLXByb2JlLWVsZi1iaW5hcnkKKworICAgICMKKyAgICAjIFVzZSB0aGUgdmVyc2lvbmVkIGxpYnMgb2YgbGlibHR0bmctdXN0LWRsLgorICAgICMKKyAgICB1c3RkbD0iJHtEfSR7UFRFU1RfUEFUSH0vdGVzdHMvcmVncmVzc2lvbi91c3QvdXN0LWRsL3Rlc3RfdXN0LWRsLnB5IgorICAgIGlmIFsgLWUgJHVzdGRsIF07IHRoZW4KKyAgICAgICAgc2VkIC1pIC1lICdzITpsaWJsdHRuZy11c3QtZGwuc28hOmxpYmx0dG5nLXVzdC1kbC5zby4wIScgJHVzdGRsCisgICAgZmkKKworICAgIGluc3RhbGwgJHtCfS90ZXN0cy91bml0L2luaV9jb25maWcvc2FtcGxlLmluaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy91bml0L2luaV9jb25maWcvCisKKyAgICAjIFdlIHNob3VsZG4ndCBuZWVkIHRvIGJ1aWxkIGFueXRoaW5nIGluIHRlc3RzL3JlZ3Jlc3Npb24vdG9vbHMKKyAgICBzZWQgLWkgLWUgJ3MhXlNVQkRJUlMgPSB0b29scyAhU1VCRElSUyA9ICEnIFwKKyAgICAgICAgIiR7RH0ke1BURVNUX1BBVEh9L3Rlc3RzL3JlZ3Jlc3Npb24vTWFrZWZpbGUiCisKKyAgICAjIFByZXZlbnQgYXR0ZW1wdHMgdG8gdXBkYXRlIE1ha2VmaWxlcyBkdXJpbmcgdGVzdCBydW5zLCBhbmQKKyAgICAjIHNpbGVuY2UgIk1ha2luZyBjaGVjayBpbiAkU1VCRElSIiBtZXNzYWdlcy4KKyAgICBmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCisgICAgICAgIHNlZCAtaSAtZSAnL01ha2VmaWxlOi8sL14kL2QnIC1lICcvJTogJS5pbi8sL14kL2QnIFwKKyAgICAgICAgLWUgJy9lY2hvICJNYWtpbmcgJCR0YXJnZXQgaW4gJCRzdWJkaXIiOyBcXC9kJyBcCisgICAgICAgIC1lICdzL15zcmNkaXIgPSBcKC4qXCkvc3JjZGlyID0gLi8nIFwKKyAgICAgICAgLWUgJ3MvXmJ1aWxkZGlyID0gXCguKlwpL2J1aWxkZGlyID0gLi8nIFwKKyAgICAgICAgLWUgJ3MvXmFsbC1hbTouKi9hbGwtYW06LycgXAorICAgICAgICB7fSArCisKKyAgICBmaW5kICIke0R9JHtQVEVTVF9QQVRIfSIgLW5hbWUgTWFrZWZpbGUgLXR5cGUgZiAtZXhlYyBcCisgICAgICAgIHRvdWNoIC1yICIke0J9L01ha2VmaWxlIiB7fSArCisKKyAgICAjCisgICAgIyBOZWVkIHRvIHN0b3AgZ2VuZXJhdGVkIGJpbmFyaWVzIGZyb20gcmVidWlsZGluZyBieSByZW1vdmluZyB0aGVpciBzb3VyY2UgZGVwZW5kZW5jaWVzCisgICAgIworICAgIHNlZCAtZSAncyNcKF50ZXN0LipPQkpFQ1RTLj1cKSNkaXNhYmxlXDEjZycgXAorICAgICAgICAtZSAncyNcKF50ZXN0LipERVBFTkRFTkNJRVMuPVwpI2Rpc2FibGVcMSNnJyBcCisgICAgICAgIC1lICdzI1woXnRlc3QuKlNPVVJDRVMuPVwpI2Rpc2FibGVcMSNnJyBcCisgICAgICAgIC1lICdzI1woXnRlc3QuKkxEQURELj1cKSNkaXNhYmxlXDEjZycgXAorICAgICAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS90ZXN0cy91bml0L01ha2VmaWxlCisKKyAgICAjIFN1YnN0aXR1dGUgbGlua3MgdG8gaW5zdGFsbGVkIGJpbmFyaWVzLgorICAgIGZvciBwcm9nIGluIGx0dG5nIGx0dG5nLXJlbGF5ZCBsdHRuZy1zZXNzaW9uZCBsdHRuZy1jb25zdW1lcmQgbHR0bmctY3Jhc2g7IGRvCisgICAgICAgIGV4ZWRpcj0iJHtEfSR7UFRFU1RfUEFUSH0vc3JjL2Jpbi8ke3Byb2d9IgorICAgICAgICBpbnN0YWxsIC1kICIkZXhlZGlyIgorICAgICAgICBjYXNlICIkcHJvZyIgaW4KKyAgICAgICAgICAgIGx0dG5nLWNvbnN1bWVyZCkKKyAgICAgICAgICAgICAgICBsbiAtcyAiJHtsaWJkaXJ9L2x0dG5nL2xpYmV4ZWMvJHByb2ciICIkZXhlZGlyIgorICAgICAgICAgICAgICAgIDs7CisgICAgICAgICAgICAqKQorICAgICAgICAgICAgICAgIGxuIC1zICIke2JpbmRpcn0vJHByb2ciICIkZXhlZGlyIgorICAgICAgICAgICAgICAgIDs7CisgICAgICAgIGVzYWMKKyAgICBkb25lCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0L2x0dG5nLXVzdC1kb2MtZXhhbXBsZXMtZGlzYWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3QvbHR0bmctdXN0LWRvYy1leGFtcGxlcy1kaXNhYmxlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiZmY4NTI3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3QvbHR0bmctdXN0LWRvYy1leGFtcGxlcy1kaXNhYmxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTcgKzAsMCBAQAotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotRG9uJ3QgYnVpbGQgdGhlIGRvYyBleGFtcGxlcyAtIHdlIGRvbid0IG5lZWQgdGhlbSBhbmQgaW4gZmFjdCB0aGV5Ci1uZXZlciBzdWNjZXNzZnVsbHkgYnVpbHQgaW4gcHJldmlvdXMgaXRlcmF0aW9ucyBvZiB0aGUgbHR0bmctdXN0Ci1yZWNpcGUgYW55d2F5LgotCi1TaWduZWQtb2ZmLWJ5OiBUb20gWmFudXNzaSA8dG9tLnphbnVzc2lAaW50ZWwuY29tPgotCi1JbmRleDogbHR0bmctdXN0LTIuOS4xL2RvYy9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGx0dG5nLXVzdC0yLjkuMS5vcmlnL2RvYy9NYWtlZmlsZS5hbQotKysrIGx0dG5nLXVzdC0yLjkuMS9kb2MvTWFrZWZpbGUuYW0KLUBAIC0xLDMgKzEsMyBAQAotLVNVQkRJUlMgPSAuIG1hbiBleGFtcGxlcwotK1NVQkRJUlMgPSAuIG1hbgotIAotIGRpc3RfZG9jX0RBVEEgPSBqYXZhLWFnZW50LnR4dApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdF8yLjEwLjUuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0XzIuMTAuNS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2ZhYWQzMC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvbHR0bmcvbHR0bmctdXN0XzIuMTAuNS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiTGludXggVHJhY2UgVG9vbGtpdCBVc2Vyc3BhY2UgVHJhY2VyIDIueCIKLURFU0NSSVBUSU9OID0gIlRoZSBMVFRuZyBVU1QgMi54IHBhY2thZ2UgY29udGFpbnMgdGhlIHVzZXJzcGFjZSB0cmFjZXIgbGlicmFyeSB0byB0cmFjZSB1c2Vyc3BhY2UgY29kZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL2x0dG5nLm9yZy91c3QiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5sdHRuZy5vcmcvcHJvamVjdHMvbHR0bmctdXN0IgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyAmIE1JVCAmIEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzk2M2ViMzY2Yjc4MTI1MmIwYmYwZmRmMTYyNGQ5ZTkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc25wcmludGYvc25wcmludGYuYztlbmRsaW5lPTMyO21kNT1kM2Q1NDQ5NTlkOGEzNzgyYjJlMDc0NTFiZTBhOTAzYyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zbnByaW50Zi92YXJpb3VzLmg7ZW5kbGluZT0zMTttZDU9ODlmMjUwOWI2YjQ2ODJjNGZjOTUyNTVlZWM0YWJlNDQiCi0KLVBZVEhPTl9PUFRJT04gPSAiYW1fY3ZfcHl0aG9uX3B5ZXhlY2Rpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKLSAgICAgICAgICAgICAgICAgYW1fY3ZfcHl0aG9uX3B5dGhvbmRpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKLSAgICAgICAgICAgICAgICAgUFlUSE9OX0lOQ0xVREU9Jy1JJHtTVEFHSU5HX0lOQ0RJUn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059JHtQWVRIT05fQUJJfScgXAotIgotCi1pbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBtYW5wYWdlcyBweXRob24zbmF0aXZlCi0KLURFUEVORFMgPSAibGlidXJjdSB1dGlsLWxpbnV4IgotUkRFUEVORFNfJHtQTn0tYmluID0gInB5dGhvbjMtY29yZSIKLQotIyBGb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgYWZ0ZXIgcmVuYW1lCi1SUFJPVklERVNfJHtQTn0gPSAibHR0bmcyLXVzdCIKLVJSRVBMQUNFU18ke1BOfSA9ICJsdHRuZzItdXN0IgotUkNPTkZMSUNUU18ke1BOfSA9ICJsdHRuZzItdXN0IgotCi1QRSA9ICIyIgotCi1TUkNfVVJJID0gImh0dHBzOi8vbHR0bmcub3JnL2ZpbGVzL2x0dG5nLXVzdC9sdHRuZy11c3QtJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9sdHRuZy11c3QtZG9jLWV4YW1wbGVzLWRpc2FibGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1weXRob24tbHR0bmd1c3QtTWFrZWZpbGUuYW0tQWRkLWluc3RhbGwtbGliLXRvLXNldHVwLnBhdGNoIFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJmMGM4NmE5ZmE3ZGNmZDAyMDVmYjQyNTg0YTMxMGIxYyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwNmY5ZWQ5YjIxOTg4NTViMWM3ZmNiZjE1ZmU1NzI5N2VlMjU5NDA5ZmZhMWIzYmFkODczMjE0MTJkOThiYzM1IgotCi1DVkVfUFJPRFVDVCA9ICJ1c3QiCi0KLVBBQ0tBR0VDT05GSUdbbWFucGFnZXNdID0gIi0tZW5hYmxlLW1hbi1wYWdlcywgLS1kaXNhYmxlLW1hbi1wYWdlcywgYXNjaWlkb2MtbmF0aXZlIHhtbHRvLW5hdGl2ZSBsaWJ4c2x0LW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbcHl0aG9uMy1hZ2VudF0gPSAiLS1lbmFibGUtcHl0aG9uLWFnZW50ICR7UFlUSE9OX09QVElPTn0sIC0tZGlzYWJsZS1weXRob24tYWdlbnQsIHB5dGhvbjMsIHB5dGhvbjMiCi0KLUZJTEVTXyR7UE59ICs9ICIgJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0vKiIKLUZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyouYSIKLUZJTEVTXyR7UE59LWRldiArPSAiICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoubGEiCi0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotICAgICAgICAjIFBhdGNoIHB5dGhvbiB0b29scyB0byB1c2UgUHl0aG9uIDM7IHRoZXkgc2hvdWxkIGJlIHNvdXJjZSBjb21wYXRpYmxlLCBidXQKLSAgICAgICAgIyBzdGlsbCByZWZlciB0byBQeXRob24gMiBpbiB0aGUgc2hlYmFuZwotICAgICAgICBzZWQgLWkgLWUgJzFzLCMhLipweXRob24uKiwjISR7YmluZGlyfS9weXRob24zLCcgJHtEfSR7YmluZGlyfS9sdHRuZy1nZW4tdHAKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3RfMi4xMS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL2x0dG5nL2x0dG5nLXVzdF8yLjExLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uM2JkMGRmYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9sdHRuZy9sdHRuZy11c3RfMi4xMS4xLmJiCkBAIC0wLDAgKzEsNTEgQEAKK1NVTU1BUlkgPSAiTGludXggVHJhY2UgVG9vbGtpdCBVc2Vyc3BhY2UgVHJhY2VyIDIueCIKK0RFU0NSSVBUSU9OID0gIlRoZSBMVFRuZyBVU1QgMi54IHBhY2thZ2UgY29udGFpbnMgdGhlIHVzZXJzcGFjZSB0cmFjZXIgbGlicmFyeSB0byB0cmFjZSB1c2Vyc3BhY2UgY29kZXMuIgorSE9NRVBBR0UgPSAiaHR0cDovL2x0dG5nLm9yZy91c3QiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5sdHRuZy5vcmcvcHJvamVjdHMvbHR0bmctdXN0IgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyAmIE1JVCAmIEdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Yzk2M2ViMzY2Yjc4MTI1MmIwYmYwZmRmMTYyNGQ5ZTkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc25wcmludGYvc25wcmludGYuYztlbmRsaW5lPTMyO21kNT1kM2Q1NDQ5NTlkOGEzNzgyYjJlMDc0NTFiZTBhOTAzYyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zbnByaW50Zi92YXJpb3VzLmg7ZW5kbGluZT0zMTttZDU9ODlmMjUwOWI2YjQ2ODJjNGZjOTUyNTVlZWM0YWJlNDQiCisKK1BZVEhPTl9PUFRJT04gPSAiYW1fY3ZfcHl0aG9uX3B5ZXhlY2Rpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKKyAgICAgICAgICAgICAgICAgYW1fY3ZfcHl0aG9uX3B5dGhvbmRpcj0nJHtQWVRIT05fU0lURVBBQ0tBR0VTX0RJUn0nIFwKKyAgICAgICAgICAgICAgICAgUFlUSE9OX0lOQ0xVREU9Jy1JJHtTVEFHSU5HX0lOQ0RJUn0vcHl0aG9uJHtQWVRIT05fQkFTRVZFUlNJT059JHtQWVRIT05fQUJJfScgXAorIgorCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBtYW5wYWdlcyBweXRob24zbmF0aXZlCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtbnVtYSIKKworREVQRU5EUyA9ICJsaWJ1cmN1IHV0aWwtbGludXgiCitSREVQRU5EU18ke1BOfS1iaW4gPSAicHl0aG9uMy1jb3JlIgorCisjIEZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBhZnRlciByZW5hbWUKK1JQUk9WSURFU18ke1BOfSA9ICJsdHRuZzItdXN0IgorUlJFUExBQ0VTXyR7UE59ID0gImx0dG5nMi11c3QiCitSQ09ORkxJQ1RTXyR7UE59ID0gImx0dG5nMi11c3QiCisKK1BFID0gIjIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9sdHRuZy5vcmcvZmlsZXMvbHR0bmctdXN0L2x0dG5nLXVzdC0ke1BWfS50YXIuYnoyIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcHl0aG9uLWx0dG5ndXN0LU1ha2VmaWxlLmFtLUFkZC1pbnN0YWxsLWxpYi10by1zZXR1cC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjdkZTA0YThmZjFmMGE0ZWZmYTA5YTQyNjIwZWM0MDgxIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdmYmFiOTYzZDYwNzQxZmZkNGQ4ZGQwYTI0NmY2Y2YxNjhjZGZlM2IyMzg1Nzk4YmQ5MDU1MGY1ZjBiYmE4NjkiCisKK0NWRV9QUk9EVUNUID0gInVzdCIKKworUEFDS0FHRUNPTkZJR1tleGFtcGxlc10gPSAiLS1lbmFibGUtZXhhbXBsZXMsIC0tZGlzYWJsZS1leGFtcGxlcywiCitQQUNLQUdFQ09ORklHW21hbnBhZ2VzXSA9ICItLWVuYWJsZS1tYW4tcGFnZXMsIC0tZGlzYWJsZS1tYW4tcGFnZXMsIGFzY2lpZG9jLW5hdGl2ZSB4bWx0by1uYXRpdmUgbGlieHNsdC1uYXRpdmUiCitQQUNLQUdFQ09ORklHW3B5dGhvbjMtYWdlbnRdID0gIi0tZW5hYmxlLXB5dGhvbi1hZ2VudCAke1BZVEhPTl9PUFRJT059LCAtLWRpc2FibGUtcHl0aG9uLWFnZW50LCBweXRob24zLCBweXRob24zIgorCitGSUxFU18ke1BOfSArPSAiICR7UFlUSE9OX1NJVEVQQUNLQUdFU19ESVJ9LyoiCitGSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmEiCitGSUxFU18ke1BOfS1kZXYgKz0gIiAke1BZVEhPTl9TSVRFUEFDS0FHRVNfRElSfS8qLmxhIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICAgICAgIyBQYXRjaCBweXRob24gdG9vbHMgdG8gdXNlIFB5dGhvbiAzOyB0aGV5IHNob3VsZCBiZSBzb3VyY2UgY29tcGF0aWJsZSwgYnV0CisgICAgICAgICMgc3RpbGwgcmVmZXIgdG8gUHl0aG9uIDIgaW4gdGhlIHNoZWJhbmcKKyAgICAgICAgc2VkIC1pIC1lICcxcywjIS4qcHl0aG9uLiosIyEke2JpbmRpcn0vcHl0aG9uMywnICR7RH0ke2JpbmRpcn0vbHR0bmctZ2VuLXRwCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3BlcmYvcGVyZi5iYgppbmRleCAwNzBkNWVjLi5kMzMxZDFiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcGVyZi9wZXJmLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9wZXJmL3BlcmYuYmIKQEAgLTUyLDcgKzUyLDcgQEAKICNrZXJuZWwgMy4xKyBzdXBwb3J0cyBXRVJST1IgdG8gZGlzYWJsZSB3YXJuaW5ncyBhcyBlcnJvcnMKIGV4cG9ydCBXRVJST1IgPSAiMCIKIAotZG9fcG9wdWxhdGVfbGljW2RlcGVuZHNdICs9ICJ2aXJ0dWFsL2tlcm5lbDpkb19wYXRjaCIKK2RvX3BvcHVsYXRlX2xpY1tkZXBlbmRzXSArPSAidmlydHVhbC9rZXJuZWw6ZG9fc2hhcmVkX3dvcmtkaXIiCiAKICMgbmVlZGVkIGZvciBidWlsZGluZyB0aGUgdG9vbHMvcGVyZiBQZXJsIGJpbmRpbmcKIGluY2x1ZGUgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnc2NyaXB0aW5nJywgJ3BlcmYtcGVybC5pbmMnLCAnJywgZCl9CkBAIC03Myw2ICs3Myw4IEBACiAgICAgQ1JPU1NfQ09NUElMRT0ke1RBUkdFVF9QUkVGSVh9IFwKICAgICBBUkNIPSR7QVJDSH0gXAogICAgIENDPSIke0NDfSIgXAorICAgIENDTEQ9IiR7Q0N9IiBcCisgICAgTERTSEFSRUQ9IiR7Q0N9IC1zaGFyZWQiIFwKICAgICBBUj0iJHtBUn0iIFwKICAgICBMRD0iJHtMRH0iIFwKICAgICBFWFRSQV9DRkxBR1M9Ii1sZHciIFwKQEAgLTE0NSw2ICsxNDcsNyBAQAogICAgIHNyY19kaXIgPSBkLmdldFZhcigiU1RBR0lOR19LRVJORUxfRElSIikKICAgICBkZXN0X2RpciA9IGQuZ2V0VmFyKCJTIikKICAgICBiYi51dGlscy5ta2RpcmhpZXIoZGVzdF9kaXIpCisgICAgYmIudXRpbHMucHJ1bmVkaXIoZGVzdF9kaXIpCiAgICAgZm9yIHMgaW4gc291cmNlczoKICAgICAgICAgc3JjID0gb2UucGF0aC5qb2luKHNyY19kaXIsIHMpCiAgICAgICAgIGRlc3QgPSBvZS5wYXRoLmpvaW4oZGVzdF9kaXIsIHMpCkBAIC0xNjEsNyArMTY0LDcgQEAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKICAgICAjIElmIGJ1aWxkaW5nIGEgbXVsdGxpYiBiYXNlZCBwZXJmLCB0aGUgaW5jb3JyZWN0IGxpYnJhcnkgcGF0aCB3aWxsIGJlCiAgICAgIyBkZXRlY3RlZCBieSBwZXJmLCBzaW5jZSBpdCB0cmlnZ2VycyB2aWE6IGlmZXEgKCQoQVJDSCkseDg2XzY0KS4gSW4gYSAzMiBiaXQKLSAgICAjIGJ1aWxkLCB3aXRoIGEgNjQgYml0IG11bHRpbGliLCB0aGUgYXJjaCB3b24ndCBtYXRjaCBhbmQgdGhlIGRldGVjdGlvbiBvZiBhIAorICAgICMgYnVpbGQsIHdpdGggYSA2NCBiaXQgbXVsdGlsaWIsIHRoZSBhcmNoIHdvbid0IG1hdGNoIGFuZCB0aGUgZGV0ZWN0aW9uIG9mIGEKICAgICAjIDY0IGJpdCBidWlsZCAoYW5kIGxpYnJhcnkpIGFyZSBub3QgZXhlY3RlZC4gVG8gZW5zdXJlIHRoYXQgbGlicmFyaWVzIGFyZQogICAgICMgaW5zdGFsbGVkIHRvIHRoZSBjb3JyZWN0IGxvY2F0aW9uLCB3ZSBjYW4gdXNlIHRoZSB3ZWFrIGFzc2lnbm1lbnQgaW4gdGhlCiAgICAgIyBjb25maWcvTWFrZWZpbGUuCkBAIC0yMzcsMTEgKzI0MCw4IEBACiAgICAgZmkKIAogICAgICMgdXNlIC91c3IvYmluL2VudiBpbnN0ZWFkIG9mIHZlcnNpb24gc3BlY2lmaWMgcHl0aG9uCi0gICAgZm9yIHMgaW4gYGZpbmQgJHtTfS90b29scy9wZXJmLyAtbmFtZSAnKi5weSdgIHNjcmlwdHMvYnBmX2hlbHBlcnNfZG9jLnB5OyBkbwotICAgICAgICBzZWQgLWkgJ3MsL3Vzci9iaW4vcHl0aG9uMiwvdXNyL2Jpbi9lbnYgcHl0aG9uMywnICIke3N9IgotICAgICAgICBzZWQgLWkgJ3MsL3Vzci9iaW4vZW52IHB5dGhvbjIsL3Vzci9iaW4vZW52IHB5dGhvbjMsJyAiJHtzfSIKLSAgICAgICAgc2VkIC1pICdzLC91c3IvYmluL3B5dGhvbjMsL3Vzci9iaW4vZW52IHB5dGhvbjMsJyAiJHtzfSIKLSAgICAgICAgc2VkIC1pICdzLC91c3IvYmluL3B5dGhvbiwvdXNyL2Jpbi9lbnYgcHl0aG9uMywnICIke3N9IgorICAgIGZvciBzIGluIGBmaW5kICR7U30vdG9vbHMvcGVyZi8gLW5hbWUgJyoucHknYCBgZmluZCAke1N9L3NjcmlwdHMvIC1uYW1lICdicGZfaGVscGVyc19kb2MucHknYDsgZG8KKyAgICAgICAgc2VkIC1pIC1lICJzLCMhLipweXRob24uKiwjISR7VVNSQklOUEFUSH0vZW52IHB5dGhvbjMsIiAke3N9CiAgICAgZG9uZQogCiAgICAgIyB1bmlzdGQuaCBjYW4gYmUgb3V0IG9mIHN5bmMgYmV0d2VlbiBsaWJjLWhlYWRlcnMgYW5kIHRoZSBjYXB0dXJlZCB2ZXJzaW9uIGluIHRoZSBwZXJmIHNvdXJjZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3Bvd2VydG9wL3Bvd2VydG9wXzIuMTAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi4xMC5iYgppbmRleCA1YmU4ZDIzLi43YjdiMzkyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi4xMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvcG93ZXJ0b3AvcG93ZXJ0b3BfMi4xMC5iYgpAQCAtMSwxMiArMSwxMiBAQAogU1VNTUFSWSA9ICJQb3dlciB1c2FnZSB0b29sIgogREVTQ1JJUFRJT04gPSAiTGludXggdG9vbCB0byBkaWFnbm9zZSBpc3N1ZXMgd2l0aCBwb3dlciBjb25zdW1wdGlvbiBhbmQgcG93ZXIgbWFuYWdlbWVudC4iCi1IT01FUEFHRSA9ICJodHRwOi8vMDEub3JnL3Bvd2VydG9wLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3ppbGxhLmxlc3N3YXR0cy5vcmcvIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly8wMS5vcmcvcG93ZXJ0b3AvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2FwcC5kZXZ6aW5nLmNvbS9wb3dlcnRvcGJ1Z3MvYnVnemlsbGEiCiBERVBFTkRTID0gIm5jdXJzZXMgbGlibmwgcGNpdXRpbHMiCiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTJmODg0ZDJhZTFmZjg3YzA5ZTViN2NjYzJjNGNhN2UiCiAKLVNSQ19VUkkgPSAiaHR0cDovLzAxLm9yZy9zaXRlcy9kZWZhdWx0L2ZpbGVzL2Rvd25sb2Fkcy9wb3dlcnRvcC12JHtQVn0udGFyLmd6IFwKK1NSQ19VUkkgPSAiaHR0cHM6Ly8wMS5vcmcvc2l0ZXMvZGVmYXVsdC9maWxlcy9kb3dubG9hZHMvcG93ZXJ0b3AtdiR7UFZ9LnRhci5neiBcCiAgICAgZmlsZTovLzAwMDEtd2FrZXVwX3h4eC5oLWluY2x1ZGUtbGltaXRzLmgucGF0Y2ggXAogIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLURvLW5vdC1idWlsZC1hbnl0aGluZy1pbi1oZWxwLWFzLWl0LXJlcXVpcmVzLWl0c3Rvb2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy8wMDAxLURvLW5vdC1idWlsZC1hbnl0aGluZy1pbi1oZWxwLWFzLWl0LXJlcXVpcmVzLWl0c3Rvb2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGFkZTUxY2YuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3Byb2YvZmlsZXMvMDAwMS1Eby1ub3QtYnVpbGQtYW55dGhpbmctaW4taGVscC1hcy1pdC1yZXF1aXJlcy1pdHN0b29sLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjcgKzAsMCBAQAotRnJvbSBkMzMyYjQ4MDI1N2FhOThiNjNkMzljM2M5NDg5NmExMTE1MzZmOTM3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBXZWQsIDIzIEF1ZyAyMDE3IDE4OjM4OjI2ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0ggMi8yXSBEbyBub3QgYnVpbGQgYW55dGhpbmcgaW4gaGVscC8gYXMgaXQgcmVxdWlyZXMgaXRzdG9vbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIG1lc29uLmJ1aWxkIHwgMSAtCi0gMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKLWluZGV4IDM5ODYyNzMuLmFlMmY2NWUgMTAwNjQ0Ci0tLS0gYS9tZXNvbi5idWlsZAotKysrIGIvbWVzb24uYnVpbGQKLUBAIC0xNjQsNyArMTY0LDYgQEAgc3ViZGlyKCd0b29scycpCi0gc3ViZGlyKCd0ZXN0cycpCi0gCi0gc3ViZGlyKCdkYXRhJykKLS1zdWJkaXIoJ2hlbHAnKQotIHN1YmRpcigncG8nKQotIAotIG1lc29uLmFkZF9pbnN0YWxsX3NjcmlwdCgnYnVpbGQtYXV4L21lc29uL3Bvc3RfaW5zdGFsbC5zaCcpCi0tLSAKLTIuNy40Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzL2RlZmluZS1OVF9HTlVfQlVJTERfSUQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9maWxlcy9kZWZpbmUtTlRfR05VX0JVSUxEX0lELnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmNzVkZGFkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL2ZpbGVzL2RlZmluZS1OVF9HTlVfQlVJTERfSUQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1PbiB1Y2xpYmMgZWxmLmggZG9lcyBub3QgaGF2ZSBHTlUgZXh0ZW50aW9ucyBidXQgd2UgbmVlZCB0aGlzIGRlZmluZQotc28gd2UgZGVmaW5lIGl0IGxvY2FsbHkgaWYgaXRzIG5vdCBnZXR0aW5nIGl0IGZyb20gZWxmLmgKLQotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLUluZGV4OiBnaXQvZWxmcGFyc2VyLmgKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnaXQub3JpZy9saWIvdXRpbC9lbGZwYXJzZXIuaAkyMDExLTA3LTE2IDE4OjU3OjQxLjAwMDAwMDAwMCAtMDcwMAotKysrIGdpdC9saWIvdXRpbC9lbGZwYXJzZXIuaAkyMDExLTA3LTE2IDIwOjI4OjU0LjczMzgyOTg5NSAtMDcwMAotQEAgLTE3LDYgKzE3LDEwIEBACi0gICovCi0gI2luY2x1ZGUgPGdsaWIuaD4KLSAKLSsjaWZuZGVmIE5UX0dOVV9CVUlMRF9JRAotKyNkZWZpbmUgTlRfR05VX0JVSUxEX0lEIDMKLSsjZW5kaWYKLSsKLSB0eXBlZGVmIHN0cnVjdCBFbGZTeW0gRWxmU3ltOwotIHR5cGVkZWYgc3RydWN0IEVsZlBhcnNlciBFbGZQYXJzZXI7Ci0gCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzcHJvZi9zeXNwcm9mXzMuMzIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4zMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiOTI5MzM4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXNwcm9mL3N5c3Byb2ZfMy4zMi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzIgKzAsMCBAQAotU1VNTUFSWSA9ICJTeXN0ZW0td2lkZSBQZXJmb3JtYW5jZSBQcm9maWxlciBmb3IgTGludXgiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LnN5c3Byb2YuY29tIgotTElDRU5TRSA9ICJHUEx2MysiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvc3AtYXBwbGljYXRpb24uYztlbmRsaW5lPTE3O21kNT00MGU1NTU3N2VmMTIyYzg4ZmUyMDA1MmFjZGE2NDg3NSIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKLWluaGVyaXQgZ25vbWViYXNlIGdldHRleHQgc3lzdGVtZCB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ3NldHRpbmdzCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgbGlieG1sMi1uYXRpdmUgZ2xpYi0yLjAtbmF0aXZlIgotCi1TUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJkMWZhOWFkMjE2NDE5ZDcyMjc3MGNhMzY3MTNhZDNhZiIKLVNSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImZjMjJhNjllNDY4NzAxYzVlYzkwMzZlOTYwYzYyNzNhZmExZWQ2YTg5ZGYxZjg4OWZlZDQ5NDE3YWRkNTU1NGQiCi1TUkNfVVJJICs9ICIgXAotICAgICAgICAgICBmaWxlOi8vZGVmaW5lLU5UX0dOVV9CVUlMRF9JRC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvLW5vdC1idWlsZC1hbnl0aGluZy1pbi1oZWxwLWFzLWl0LXJlcXVpcmVzLWl0c3Rvb2wucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnRElTVFJPX0ZFQVRVUkVTJywgJyR7R1RLM0RJU1RST0ZFQVRVUkVTfScsICdndGsnLCAnJywgZCl9IgotUEFDS0FHRUNPTkZJR1tndGtdID0gIi1EZW5hYmxlX2d0az10cnVlLC1EZW5hYmxlX2d0az1mYWxzZSxndGsrMyIKLVBBQ0tBR0VDT05GSUdbc3lzcHJvZmRdID0gIi1Ed2l0aF9zeXNwcm9mZD1idW5kbGVkLC1Ed2l0aF9zeXNwcm9mZD1ub25lLHBvbGtpdCIKLQotU09MSUJTID0gIi5zbyIKLUZJTEVTX1NPTElCU0RFViA9ICIiCi0KLVNZU1RFTURfU0VSVklDRV8ke1BOfSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdzeXNwcm9mZCcsICdzeXNwcm9mMi5zZXJ2aWNlJywgJycsIGQpfSIKLQotRklMRVNfJHtQTn0gKz0gIiBcCi0gICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RidXMtMS9zeXN0ZW0tc2VydmljZXMgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9kYnVzLTEvc3lzdGVtLmQgXAotICAgICAgICAgICAgICAgJHtkYXRhZGlyfS9tZXRhaW5mbyBcCi0gICAgICAgICAgICAgICAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMta2VybmVsL3N5c3RlbXRhcC9zeXN0ZW10YXBfZ2l0LmluYwppbmRleCBhYmIyYjM3Li4xMTZlODNmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1rZXJuZWwvc3lzdGVtdGFwL3N5c3RlbXRhcF9naXQuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLWtlcm5lbC9zeXN0ZW10YXAvc3lzdGVtdGFwX2dpdC5pbmMKQEAgLTEsNyArMSw3IEBACiBMSUNFTlNFID0gIkdQTHYyIgogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCi1TUkNSRVYgPSAiNTdjOWFjYTlmMWZmMzJhNmFkZDEwZTAyZWNkMzNiNzMxNGZhZDQ5OSIKLVBWID0gIjQuMStnaXQke1NSQ1BWfSIKK1NSQ1JFViA9ICIwNDRhMDY0MDk4NWVmMDA3YzBiMmZiNmVhZjY2MGQ5ZDUxODAwY2RhIgorUFYgPSAiNC4yIgogCiBTUkNfVVJJID0gImdpdDovL3NvdXJjZXdhcmUub3JnL2dpdC9zeXN0ZW10YXAuZ2l0IFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWxldC1jb25maWd1cmUtd3JpdGUtYS1weXRob24tbG9jYXRpb24taW50by10aC5wYXRjaCBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMS1GaXgtYWxzYS1zb3VuZC0uaC1mb3ItZXh0ZXJuYWwtcHJvZ3JhbXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMS1GaXgtYWxzYS1zb3VuZC0uaC1mb3ItZXh0ZXJuYWwtcHJvZ3JhbXMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODkwNjUwYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLUZpeC1hbHNhLXNvdW5kLS5oLWZvci1leHRlcm5hbC1wcm9ncmFtcy5wYXRjaApAQCAtMCwwICsxLDcxMDQgQEAKK0Zyb20gYWU1NjQ2NjVlYzI2MWNmMTA0ZGU0OTliMWNkZGEzNTY0MDcwZmM2NSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRha2FzaGkgSXdhaSA8dGl3YWlAc3VzZS5kZT4KK0RhdGU6IEZyaSwgMjAgRGVjIDIwMTkgMTU6NDY6NDggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gRml4IGFsc2Evc291bmQvKi5oIGZvciBleHRlcm5hbCBwcm9ncmFtcworCitUaGUgcmVjZW50IHVwZGF0ZSBvZiBzb3VuZC8qLmggdG8gc3luYyB3aXRoIHRoZSBsYXRlc3QgTGludXMgdWFwaQorZmlsZXMgYnJva2UgdGhlIGJ1aWxkIG9mIGFsc2EtdG9vbHMgcHJvZ3JhbXMuICBUaGVzZSBmaWxlcyB1c2VkIHRvIGJlCithIG1vZGlmaWVkIHZlcnNpb24gb2YgTGludXggc291bmQvKiBoZWFkZXIgZmlsZXMsIHNvIHRoYXQgdGhleSBjb3VsZAorYmUgYnVpbHQgd2l0aG91dCBMaW51eCBoZWFkZXJzLiAgVGhlIHNwZWNpYWwgcHJlZml4IGxpa2UgX191c2VyIGFuZAorb3RoZXIgdGhpbmdzIHdlcmUgd29ya2VkIGFyb3VuZCB0aGVyZS4KKworV2UgbWF5IGRvIHRoYXQgYWdhaW4sIGJ1dCBhIGJldHRlciBhcHByb2FjaCBpcyB0byBmaXggdGhvc2UgdGhpbmdzIGluCitMaW51eCBrZXJuZWwgdWFwaSBzaWRlLCB3aGlsZSB3ZSBrZWVwIHRoZSBtaW5pbWFsIHdvcmthcm91bmQgaW4KK2Fsc2EtbGliIHN1Y2ggYXMgdGhlIF9fdTE2IGFuZCBjbyB0eXBlIGRlZmluaXRpb25zLgorCitUaGlzIHBhdGNoIGlzIHN1Y2ggYW4gYXR0ZW1wdCwgbmFtZWx5OgorLSBLZWVwIHRoZSBvcmlnaW5hbCAkTElOVVgvdWFwaS9zb3VuZC8qLmggaW4gaW5jbHVkZS9zb3VuZC91YXBpCisgIGRpcmVjdG9yeQorLSBUaGUgImZpeGVzIiBhcmUgYXBwbGllZCB0byBzb21lIHVhcGkgaGVhZGVycywgc28gdGhhdCB0aGV5IGRvbid0CisgIGNvbnRhaW4gTGludXgtc3BlY2lmaWMgcHJlZml4IGFuZCB1c2Ugb2Ygb3BhcXVlIHN0cnVjdCBsaWtlCisgIHNuZF9jdGxfZWxlbV9pZAorLSBUaGUgdWFwaSBoZWFkZXJzIGFyZSBpbmNsdWRlZCBpbmRpcmVjdGx5IGZyb20gaW5jbHVkZS9zb3VuZC8qLmgKKy0gU29tZSBoZWFkZXJzIGhhdmUgaW5jbHVzaW9uIG9mIHR5cGVfY29tcGF0LmggZm9yIHRoZSBMaW51eCB2YXJpYWJsZQorICB0eXBlcyBhbmQgcHJlZml4ZXMKKy0gdHlwZV9jb21wYXQuaCB0cmllcyB0byB1c2UgPGxpbnV4L3R5cGVzLmg+IHdoZW4gX19saW51eF9fIGlzCisgIGRlZmluZWQsIGluc3RlYWQgb2YgdGhlIG93biBjb25mbGljdGluZyBkZWZpbml0aW9ucworCitUaGUgbGFzdCB0eXBlIG1pZ2h0IG5lZWQgYSBiaXQgbW9yZSBhZGp1c3RtZW50IGRlcGVuZGluZyBvbiB0aGUKK2NvbXBpbGVyLCBidXQgaXQgY2FuIGJlIGZpeGVkIGxvY2FsbHkgd2l0aG91dCBkaXN0dXJiaW5nIGVsc2UuCisKK1NpZ25lZC1vZmYtYnk6IFRha2FzaGkgSXdhaSA8dGl3YWlAc3VzZS5kZT4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorCitTaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CisKKy0tLQorIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICB8ICAgIDMgKy0KKyBpbmNsdWRlL3NvdW5kL01ha2VmaWxlLmFtICAgICAgICAgfCAgICA2ICstCisgaW5jbHVkZS9zb3VuZC9hc2VxdWVuY2VyLmggICAgICAgIHwgIDYxMyArLS0tLS0tLS0tLS0tLS0tLQorIGluY2x1ZGUvc291bmQvYXNvYy5oICAgICAgICAgICAgICB8ICA2MzQgKy0tLS0tLS0tLS0tLS0tLS0tCisgaW5jbHVkZS9zb3VuZC9hc291bmQuaCAgICAgICAgICAgIHwgMTAzOSArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQorIGluY2x1ZGUvc291bmQvYXNvdW5kX2ZtLmggICAgICAgICB8ICAxMzYgKy0tLQorIGluY2x1ZGUvc291bmQvZW11MTBrMS5oICAgICAgICAgICB8ICAzODMgKy0tLS0tLS0tLS0KKyBpbmNsdWRlL3NvdW5kL2hkc3AuaCAgICAgICAgICAgICAgfCAgMTEzICstLS0KKyBpbmNsdWRlL3NvdW5kL2hkc3BtLmggICAgICAgICAgICAgfCAgMjM0ICstLS0tLS0KKyBpbmNsdWRlL3NvdW5kL3NiMTZfY3NwLmggICAgICAgICAgfCAgMTI0ICstLS0KKyBpbmNsdWRlL3NvdW5kL3NzY2FwZV9pb2N0bC5oICAgICAgfCAgIDIyICstCisgaW5jbHVkZS9zb3VuZC90bHYuaCAgICAgICAgICAgICAgIHwgIDExOCArLS0tCisgaW5jbHVkZS9zb3VuZC90eXBlX2NvbXBhdC5oICAgICAgIHwgICAxMyArCisgaW5jbHVkZS9zb3VuZC91YXBpL01ha2VmaWxlLmFtICAgIHwgICAgNiArCisgaW5jbHVkZS9zb3VuZC91YXBpL2FzZXF1ZW5jZXIuaCAgIHwgIDYxMiArKysrKysrKysrKysrKysrKworIGluY2x1ZGUvc291bmQvdWFwaS9hc29jLmggICAgICAgICB8ICA2MzMgKysrKysrKysrKysrKysrKysrCisgaW5jbHVkZS9zb3VuZC91YXBpL2Fzb3VuZC5oICAgICAgIHwgMTAzOCArKysrKysrKysrKysrKysrKysrKysrKysrKysrCisgaW5jbHVkZS9zb3VuZC91YXBpL2Fzb3VuZF9mbS5oICAgIHwgIDEzNSArKysrCisgaW5jbHVkZS9zb3VuZC91YXBpL2VtdTEwazEuaCAgICAgIHwgIDM5NSArKysrKysrKysrKworIGluY2x1ZGUvc291bmQvdWFwaS9oZHNwLmggICAgICAgICB8ICAxMDkgKysrCisgaW5jbHVkZS9zb3VuZC91YXBpL2hkc3BtLmggICAgICAgIHwgIDIzMCArKysrKysrCisgaW5jbHVkZS9zb3VuZC91YXBpL3NiMTZfY3NwLmggICAgIHwgIDEyMyArKysrCisgaW5jbHVkZS9zb3VuZC91YXBpL3NzY2FwZV9pb2N0bC5oIHwgICAyMSArCisgaW5jbHVkZS9zb3VuZC91YXBpL3Rsdi5oICAgICAgICAgIHwgIDExNyArKysrCisgc3JjL3RvcG9sb2d5L3RwbGdfbG9jYWwuaCAgICAgICAgIHwgICAgMyArLQorIDI1IGZpbGVzIGNoYW5nZWQsIDM0NTIgaW5zZXJ0aW9ucygrKSwgMzQwOCBkZWxldGlvbnMoLSkKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zb3VuZC91YXBpL01ha2VmaWxlLmFtCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc291bmQvdWFwaS9hc2VxdWVuY2VyLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zb3VuZC91YXBpL2Fzb2MuaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3NvdW5kL3VhcGkvYXNvdW5kLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zb3VuZC91YXBpL2Fzb3VuZF9mbS5oCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGluY2x1ZGUvc291bmQvdWFwaS9lbXUxMGsxLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zb3VuZC91YXBpL2hkc3AuaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3NvdW5kL3VhcGkvaGRzcG0uaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3NvdW5kL3VhcGkvc2IxNl9jc3AuaAorIGNyZWF0ZSBtb2RlIDEwMDY0NCBpbmNsdWRlL3NvdW5kL3VhcGkvc3NjYXBlX2lvY3RsLmgKKyBjcmVhdGUgbW9kZSAxMDA2NDQgaW5jbHVkZS9zb3VuZC91YXBpL3Rsdi5oCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDExOWVmNjAwLi44ODZmODdiYyAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNzA3LDcgKzcwNyw4IEBAIGlmIHRlc3QgISAtTCAiJHNyY2RpciIvaW5jbHVkZS9hbHNhIDsgdGhlbgorIGZpCisgCisgQUNfT1VUUFVUKE1ha2VmaWxlIGRvYy9NYWtlZmlsZSBkb2MvcGljdHVyZXMvTWFrZWZpbGUgZG9jL2RveHlnZW4uY2ZnIFwKKy0JICBpbmNsdWRlL01ha2VmaWxlIGluY2x1ZGUvc291bmQvTWFrZWZpbGUgc3JjL1ZlcnNpb25zIHNyYy9NYWtlZmlsZSBcCisrCSAgaW5jbHVkZS9NYWtlZmlsZSBpbmNsdWRlL3NvdW5kL01ha2VmaWxlIGluY2x1ZGUvc291bmQvdWFwaS9NYWtlZmlsZSBcCisrCSAgc3JjL1ZlcnNpb25zIHNyYy9NYWtlZmlsZSBcCisgICAgICAgICAgIHNyYy9jb250cm9sL01ha2VmaWxlIHNyYy9taXhlci9NYWtlZmlsZSBcCisgCSAgc3JjL3BjbS9NYWtlZmlsZSBzcmMvcGNtL3Njb3Blcy9NYWtlZmlsZSBcCisgCSAgc3JjL3Jhd21pZGkvTWFrZWZpbGUgc3JjL3RpbWVyL01ha2VmaWxlIFwKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL01ha2VmaWxlLmFtIGIvaW5jbHVkZS9zb3VuZC9NYWtlZmlsZS5hbQoraW5kZXggOTljNDIyMTEuLmNjYzdkMjczIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9NYWtlZmlsZS5hbQorKysrIGIvaW5jbHVkZS9zb3VuZC9NYWtlZmlsZS5hbQorQEAgLTEsNyArMSw5IEBACisrU1VCRElSUyA9IHVhcGkKKysKKyBhbHNhc291bmRpbmNsdWRlZGlyID0gJHtpbmNsdWRlZGlyfS9hbHNhL3NvdW5kCisgCisgYWxzYXNvdW5kaW5jbHVkZV9IRUFERVJTID0gYXNvdW5kX2ZtLmggaGRzcC5oIGhkc3BtLmggc2IxNl9jc3AuaCBcCistCQkJICAgc3NjYXBlX2lvY3RsLmggZW11MTBrMS5oIHR5cGVfY29tcGF0LmggXAorLQkJCSAgIGFzb2MuaCB0bHYuaAorKwkJCSAgIHNzY2FwZV9pb2N0bC5oIGVtdTEwazEuaCAgYXNvYy5oIHRsdi5oIFwKKysJCQkgICB0eXBlX2NvbXBhdC5oCisgCisgbm9pbnN0X0hFQURFUlMgPSBhc291bmQuaCBhc2VxdWVuY2VyLmgKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2FzZXF1ZW5jZXIuaCBiL2luY2x1ZGUvc291bmQvYXNlcXVlbmNlci5oCitpbmRleCBhNzVlMTRlZC4uZTUzOWE3N2UgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL2FzZXF1ZW5jZXIuaAorKysrIGIvaW5jbHVkZS9zb3VuZC9hc2VxdWVuY2VyLmgKK0BAIC0xLDYxMiArMSBAQAorLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZSAqLworLS8qCistICogIE1haW4gaGVhZGVyIGZpbGUgZm9yIHRoZSBBTFNBIHNlcXVlbmNlcgorLSAqICBDb3B5cmlnaHQgKGMpIDE5OTgtMTk5OSBieSBGcmFuayB2YW4gZGUgUG9sIDxmdmRwb2xAY29pbC5kZW1vbi5ubD4KKy0gKiAgICAgICAgICAgIChjKSAxOTk4LTE5OTkgYnkgSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4KKy0gKgorLSAqCistICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCistICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLSAqCistICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLSAqCistICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAqICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0gKiAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3IFVTQQorLSAqCistICovCistI2lmbmRlZiBfVUFQSV9fU09VTkRfQVNFUVVFTkNFUl9ICistI2RlZmluZSBfVUFQSV9fU09VTkRfQVNFUVVFTkNFUl9ICistCistI2luY2x1ZGUgPHNvdW5kL2Fzb3VuZC5oPgorLQorLS8qKiB2ZXJzaW9uIG9mIHRoZSBzZXF1ZW5jZXIgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9WRVJTSU9OIFNORFJWX1BST1RPQ09MX1ZFUlNJT04oMSwgMCwgMikKKy0KKy0vKioKKy0gKiBkZWZpbml0aW9uIG9mIHNlcXVlbmNlciBldmVudCB0eXBlcworLSAqLworLQorLS8qKiBzeXN0ZW0gbWVzc2FnZXMKKy0gKiBldmVudCBkYXRhIHR5cGUgPSAjc25kX3NlcV9yZXN1bHQKKy0gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9TWVNURU0JCTAKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9SRVNVTFQJCTEKKy0KKy0vKiogbm90ZSBtZXNzYWdlcyAoY2hhbm5lbCBzcGVjaWZpYykKKy0gKiBldmVudCBkYXRhIHR5cGUgPSAjc25kX3NlcV9ldl9ub3RlCistICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTk9URQkJNQorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX05PVEVPTgkJNgorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX05PVEVPRkYJCTcKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9LRVlQUkVTUwk4CistCQorLS8qKiBjb250cm9sIG1lc3NhZ2VzIChjaGFubmVsIHNwZWNpZmljKQorLSAqIGV2ZW50IGRhdGEgdHlwZSA9ICNzbmRfc2VxX2V2X2N0cmwKKy0gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9DT05UUk9MTEVSCTEwCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUEdNQ0hBTkdFCTExCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ0hBTlBSRVNTCTEyCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUElUQ0hCRU5ECTEzCS8qKjwgZnJvbSAtODE5MiB0byA4MTkxICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ09OVFJPTDE0CTE0CS8qKjwgMTQgYml0IGNvbnRyb2xsZXIgdmFsdWUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9OT05SRUdQQVJBTQkxNQkvKio8IDE0IGJpdCBOUlBOIGFkZHJlc3MgKyAxNCBiaXQgdW5zaWduZWQgdmFsdWUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9SRUdQQVJBTQkxNgkvKio8IDE0IGJpdCBSUE4gYWRkcmVzcyArIDE0IGJpdCB1bnNpZ25lZCB2YWx1ZSAqLworLQorLS8qKiBzeW5jaHJvbmlzYXRpb24gbWVzc2FnZXMKKy0gKiBldmVudCBkYXRhIHR5cGUgPSAjc25kX3NlcV9ldl9jdHJsCistICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU09OR1BPUwkJMjAJLyogU29uZyBQb3NpdGlvbiBQb2ludGVyIHdpdGggTFNCIGFuZCBNU0IgdmFsdWVzICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU09OR1NFTAkJMjEJLyogU29uZyBTZWxlY3Qgd2l0aCBzb25nIElEIG51bWJlciAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1FGUkFNRQkJMjIJLyogbWlkaSB0aW1lIGNvZGUgcXVhcnRlciBmcmFtZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1RJTUVTSUdOCTIzCS8qIFNNRiBUaW1lIFNpZ25hdHVyZSBldmVudCAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0tFWVNJR04JCTI0CS8qIFNNRiBLZXkgU2lnbmF0dXJlIGV2ZW50ICovCistCSAgICAgICAgCistLyoqIHRpbWVyIG1lc3NhZ2VzCistICogZXZlbnQgZGF0YSB0eXBlID0gc25kX3NlcV9ldl9xdWV1ZV9jb250cm9sCistICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU1RBUlQJCTMwCS8qIG1pZGkgUmVhbCBUaW1lIFN0YXJ0IG1lc3NhZ2UgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9DT05USU5VRQkzMQkvKiBtaWRpIFJlYWwgVGltZSBDb250aW51ZSBtZXNzYWdlICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU1RPUAkJMzIJLyogbWlkaSBSZWFsIFRpbWUgU3RvcCBtZXNzYWdlICovCQorLSNkZWZpbmUJU05EUlZfU0VRX0VWRU5UX1NFVFBPU19USUNLCTMzCS8qIHNldCB0aWNrIHF1ZXVlIHBvc2l0aW9uICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU0VUUE9TX1RJTUUJMzQJLyogc2V0IHJlYWx0aW1lIHF1ZXVlIHBvc2l0aW9uICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVEVNUE8JCTM1CS8qIChTTUYpIFRlbXBvIGV2ZW50ICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ0xPQ0sJCTM2CS8qIG1pZGkgUmVhbCBUaW1lIENsb2NrIG1lc3NhZ2UgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9USUNLCQkzNwkvKiBtaWRpIFJlYWwgVGltZSBUaWNrIG1lc3NhZ2UgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9RVUVVRV9TS0VXCTM4CS8qIHNrZXcgcXVldWUgdGVtcG8gKi8KKy0KKy0vKiogb3RoZXJzCistICogZXZlbnQgZGF0YSB0eXBlID0gbm9uZQorLSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1RVTkVfUkVRVUVTVAk0MAkvKiB0dW5lIHJlcXVlc3QgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9SRVNFVAkJNDEJLyogcmVzZXQgdG8gcG93ZXItb24gc3RhdGUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9TRU5TSU5HCQk0MgkvKiAiYWN0aXZlIHNlbnNpbmciIGV2ZW50ICovCistCistLyoqIGVjaG8gYmFjaywga2VybmVsIHByaXZhdGUgbWVzc2FnZXMKKy0gKiBldmVudCBkYXRhIHR5cGUgPSBhbnkgdHlwZQorLSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0VDSE8JCTUwCS8qIGVjaG8gZXZlbnQgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9PU1MJCTUxCS8qIE9TUyByYXcgZXZlbnQgKi8KKy0KKy0vKiogc3lzdGVtIHN0YXR1cyBtZXNzYWdlcyAoYnJvYWRjYXN0IGZvciBzdWJzY3JpYmVycykKKy0gKiBldmVudCBkYXRhIHR5cGUgPSBzbmRfc2VxX2FkZHIKKy0gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9DTElFTlRfU1RBUlQJNjAJLyogbmV3IGNsaWVudCBoYXMgY29ubmVjdGVkICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ0xJRU5UX0VYSVQJNjEJLyogY2xpZW50IGhhcyBsZWZ0IHRoZSBzeXN0ZW0gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9DTElFTlRfQ0hBTkdFCTYyCS8qIGNsaWVudCBzdGF0dXMvaW5mbyBoYXMgY2hhbmdlZCAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BPUlRfU1RBUlQJNjMJLyogbmV3IHBvcnQgd2FzIGNyZWF0ZWQgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9QT1JUX0VYSVQJNjQJLyogcG9ydCB3YXMgZGVsZXRlZCBmcm9tIHN5c3RlbSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BPUlRfQ0hBTkdFCTY1CS8qIHBvcnQgc3RhdHVzL2luZm8gaGFzIGNoYW5nZWQgKi8KKy0KKy0vKiogcG9ydCBjb25uZWN0aW9uIGNoYW5nZXMKKy0gKiBldmVudCBkYXRhIHR5cGUgPSBzbmRfc2VxX2Nvbm5lY3QKKy0gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9QT1JUX1NVQlNDUklCRUQJNjYJLyogcG9ydHMgY29ubmVjdGVkICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUE9SVF9VTlNVQlNDUklCRUQgNjcJLyogcG9ydHMgZGlzY29ubmVjdGVkICovCistCistLyogNzAtODk6ICBzeW50aGVzaXplciBldmVudHMgLSBvYnNvbGV0ZWQgKi8KKy0KKy0vKiogdXNlci1kZWZpbmVkIGV2ZW50cyB3aXRoIGZpeGVkIGxlbmd0aAorLSAqIGV2ZW50IGRhdGEgdHlwZSA9IGFueQorLSAqLworLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjAJCTkwCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSMQkJOTEKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1IyCQk5MgorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjMJCTkzCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSNAkJOTQKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1I1CQk5NQorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjYJCTk2CistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSNwkJOTcKKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1I4CQk5OAorLSNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjkJCTk5CistCistLyogMTAwLTExODogaW5zdHJ1bWVudCBsYXllciAtIG9ic29sZXRlZCAqLworLS8qIDExOS0xMjk6IHJlc2VydmVkICovCistCistLyogMTMwLTEzOTogdmFyaWFibGUgbGVuZ3RoIGV2ZW50cworLSAqIGV2ZW50IGRhdGEgdHlwZSA9IHNuZF9zZXFfZXZfZXh0CistICogKFNORFJWX1NFUV9FVkVOVF9MRU5HVEhfVkFSSUFCTEUgbXVzdCBiZSBzZXQpCistICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU1lTRVgJCTEzMAkvKiBzeXN0ZW0gZXhjbHVzaXZlIGRhdGEgKHZhcmlhYmxlIGxlbmd0aCkgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9CT1VOQ0UJCTEzMQkvKiBlcnJvciBldmVudCAqLworLS8qIDEzMi0xMzQ6IHJlc2VydmVkICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSX1ZBUjAJMTM1CistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSX1ZBUjEJMTM2CistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSX1ZBUjIJMTM3CistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSX1ZBUjMJMTM4CistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSX1ZBUjQJMTM5CistCistLyogMTUwLTE1MToga2VybmVsIGV2ZW50cyB3aXRoIHF1b3RlIC0gRE8gTk9UIHVzZSBpbiB1c2VyIGNsaWVudHMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9LRVJORUxfRVJST1IJMTUwCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfS0VSTkVMX1FVT1RFCTE1MQkvKiBvYnNvbGV0ZSAqLworLQorLS8qIDE1Mi0xOTE6IHJlc2VydmVkICovCistCistLyogMTkyLTI1NDogaGFyZHdhcmUgc3BlY2lmaWMgZXZlbnRzICovCistCistLyogMjU1OiBzcGVjaWFsIGV2ZW50ICovCistI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTk9ORQkJMjU1CistCistCistdHlwZWRlZiB1bnNpZ25lZCBjaGFyIHNuZF9zZXFfZXZlbnRfdHlwZV90OworLQorLS8qKiBldmVudCBhZGRyZXNzICovCistc3RydWN0IHNuZF9zZXFfYWRkciB7CistCXVuc2lnbmVkIGNoYXIgY2xpZW50OwkvKio8IENsaWVudCBudW1iZXI6ICAgICAgICAgMC4uMjU1LCAyNTUgPSBicm9hZGNhc3QgdG8gYWxsIGNsaWVudHMgKi8KKy0JdW5zaWduZWQgY2hhciBwb3J0OwkvKio8IFBvcnQgd2l0aGluIGNsaWVudDogICAgMC4uMjU1LCAyNTUgPSBicm9hZGNhc3QgdG8gYWxsIHBvcnRzICovCistfTsKKy0KKy0vKiogcG9ydCBjb25uZWN0aW9uICovCistc3RydWN0IHNuZF9zZXFfY29ubmVjdCB7CistCXN0cnVjdCBzbmRfc2VxX2FkZHIgc2VuZGVyOworLQlzdHJ1Y3Qgc25kX3NlcV9hZGRyIGRlc3Q7CistfTsKKy0KKy0KKy0jZGVmaW5lIFNORFJWX1NFUV9BRERSRVNTX1VOS05PV04JMjUzCS8qIHVua25vd24gc291cmNlICovCistI2RlZmluZSBTTkRSVl9TRVFfQUREUkVTU19TVUJTQ1JJQkVSUwkyNTQJLyogc2VuZCBldmVudCB0byBhbGwgc3Vic2NyaWJlZCBwb3J0cyAqLworLSNkZWZpbmUgU05EUlZfU0VRX0FERFJFU1NfQlJPQURDQVNUCTI1NQkvKiBzZW5kIGV2ZW50IHRvIGFsbCBxdWV1ZXMvY2xpZW50cy9wb3J0cy9jaGFubmVscyAqLworLSNkZWZpbmUgU05EUlZfU0VRX1FVRVVFX0RJUkVDVAkJMjUzCS8qIGRpcmVjdCBkaXNwYXRjaCAqLworLQorLQkvKiBldmVudCBtb2RlIGZsYWcgLSBOT1RFOiBvbmx5IDggYml0cyBhdmFpbGFibGUhICovCistI2RlZmluZSBTTkRSVl9TRVFfVElNRV9TVEFNUF9USUNLCSgwPDwwKSAvKiB0aW1lc3RhbXAgaW4gY2xvY2sgdGlja3MgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9USU1FX1NUQU1QX1JFQUwJKDE8PDApIC8qIHRpbWVzdGFtcCBpbiByZWFsIHRpbWUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9USU1FX1NUQU1QX01BU0sJKDE8PDApCistCistI2RlZmluZSBTTkRSVl9TRVFfVElNRV9NT0RFX0FCUwkJKDA8PDEpCS8qIGFic29sdXRlIHRpbWVzdGFtcCAqLworLSNkZWZpbmUgU05EUlZfU0VRX1RJTUVfTU9ERV9SRUwJCSgxPDwxKQkvKiByZWxhdGl2ZSB0byBjdXJyZW50IHRpbWUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9USU1FX01PREVfTUFTSwkoMTw8MSkKKy0KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9MRU5HVEhfRklYRUQJKDA8PDIpCS8qIGZpeGVkIGV2ZW50IHNpemUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9MRU5HVEhfVkFSSUFCTEUJKDE8PDIpCS8qIHZhcmlhYmxlIGV2ZW50IHNpemUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9MRU5HVEhfVkFSVVNSCSgyPDwyKQkvKiB2YXJpYWJsZSBldmVudCBzaXplIC0gdXNlciBtZW1vcnkgc3BhY2UgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9MRU5HVEhfTUFTSwkoMzw8MikKKy0KKy0jZGVmaW5lIFNORFJWX1NFUV9QUklPUklUWV9OT1JNQUwJKDA8PDQpCS8qIG5vcm1hbCBwcmlvcml0eSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BSSU9SSVRZX0hJR0gJCSgxPDw0KQkvKiBldmVudCBzaG91bGQgYmUgcHJvY2Vzc2VkIGJlZm9yZSBvdGhlcnMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QUklPUklUWV9NQVNLCQkoMTw8NCkKKy0KKy0KKy0JLyogbm90ZSBldmVudCAqLworLXN0cnVjdCBzbmRfc2VxX2V2X25vdGUgeworLQl1bnNpZ25lZCBjaGFyIGNoYW5uZWw7CistCXVuc2lnbmVkIGNoYXIgbm90ZTsKKy0JdW5zaWduZWQgY2hhciB2ZWxvY2l0eTsKKy0JdW5zaWduZWQgY2hhciBvZmZfdmVsb2NpdHk7CS8qIG9ubHkgZm9yIFNORFJWX1NFUV9FVkVOVF9OT1RFICovCistCXVuc2lnbmVkIGludCBkdXJhdGlvbjsJCS8qIG9ubHkgZm9yIFNORFJWX1NFUV9FVkVOVF9OT1RFICovCistfTsKKy0KKy0JLyogY29udHJvbGxlciBldmVudCAqLworLXN0cnVjdCBzbmRfc2VxX2V2X2N0cmwgeworLQl1bnNpZ25lZCBjaGFyIGNoYW5uZWw7CistCXVuc2lnbmVkIGNoYXIgdW51c2VkMSwgdW51c2VkMiwgdW51c2VkMzsJLyogcGFkICovCistCXVuc2lnbmVkIGludCBwYXJhbTsKKy0Jc2lnbmVkIGludCB2YWx1ZTsKKy19OworLQorLQkvKiBnZW5lcmljIHNldCBvZiBieXRlcyAoMTJ4OCBiaXQpICovCistc3RydWN0IHNuZF9zZXFfZXZfcmF3OCB7CistCXVuc2lnbmVkIGNoYXIgZFsxMl07CS8qIDggYml0IHZhbHVlICovCistfTsKKy0KKy0JLyogZ2VuZXJpYyBzZXQgb2YgaW50ZWdlcnMgKDN4MzIgYml0KSAqLworLXN0cnVjdCBzbmRfc2VxX2V2X3JhdzMyIHsKKy0JdW5zaWduZWQgaW50IGRbM107CS8qIDMyIGJpdCB2YWx1ZSAqLworLX07CistCistCS8qIGV4dGVybmFsIHN0b3JlZCBkYXRhICovCistc3RydWN0IHNuZF9zZXFfZXZfZXh0IHsKKy0JdW5zaWduZWQgaW50IGxlbjsJLyogbGVuZ3RoIG9mIGRhdGEgKi8KKy0Jdm9pZCAqcHRyOwkJLyogcG9pbnRlciB0byBkYXRhIChub3RlOiBtYXliZSA2NC1iaXQpICovCistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy1zdHJ1Y3Qgc25kX3NlcV9yZXN1bHQgeworLQlpbnQgZXZlbnQ7CQkvKiBwcm9jZXNzZWQgZXZlbnQgdHlwZSAqLworLQlpbnQgcmVzdWx0OworLX07CistCistCistc3RydWN0IHNuZF9zZXFfcmVhbF90aW1lIHsKKy0JdW5zaWduZWQgaW50IHR2X3NlYzsJLyogc2Vjb25kcyAqLworLQl1bnNpZ25lZCBpbnQgdHZfbnNlYzsJLyogbmFub3NlY29uZHMgKi8KKy19OworLQorLXR5cGVkZWYgdW5zaWduZWQgaW50IHNuZF9zZXFfdGlja190aW1lX3Q7CS8qIG1pZGkgdGlja3MgKi8KKy0KKy11bmlvbiBzbmRfc2VxX3RpbWVzdGFtcCB7CistCXNuZF9zZXFfdGlja190aW1lX3QgdGljazsKKy0Jc3RydWN0IHNuZF9zZXFfcmVhbF90aW1lIHRpbWU7CistfTsKKy0KKy1zdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9za2V3IHsKKy0JdW5zaWduZWQgaW50IHZhbHVlOworLQl1bnNpZ25lZCBpbnQgYmFzZTsKKy19OworLQorLQkvKiBxdWV1ZSB0aW1lciBjb250cm9sICovCistc3RydWN0IHNuZF9zZXFfZXZfcXVldWVfY29udHJvbCB7CistCXVuc2lnbmVkIGNoYXIgcXVldWU7CQkJLyogYWZmZWN0ZWQgcXVldWUgKi8KKy0JdW5zaWduZWQgY2hhciBwYWRbM107CQkJLyogcmVzZXJ2ZWQgKi8KKy0JdW5pb24geworLQkJc2lnbmVkIGludCB2YWx1ZTsJCS8qIGFmZmVjdGVkIHZhbHVlIChlLmcuIHRlbXBvKSAqLworLQkJdW5pb24gc25kX3NlcV90aW1lc3RhbXAgdGltZTsJLyogdGltZSAqLworLQkJdW5zaWduZWQgaW50IHBvc2l0aW9uOwkJLyogc3luYyBwb3NpdGlvbiAqLworLQkJc3RydWN0IHNuZF9zZXFfcXVldWVfc2tldyBza2V3OworLQkJdW5zaWduZWQgaW50IGQzMlsyXTsKKy0JCXVuc2lnbmVkIGNoYXIgZDhbOF07CistCX0gcGFyYW07CistfTsKKy0KKy0JLyogcXVvdGVkIGV2ZW50IC0gaW5zaWRlIHRoZSBrZXJuZWwgb25seSAqLworLXN0cnVjdCBzbmRfc2VxX2V2X3F1b3RlIHsKKy0Jc3RydWN0IHNuZF9zZXFfYWRkciBvcmlnaW47CQkvKiBvcmlnaW5hbCBzZW5kZXIgKi8KKy0JdW5zaWduZWQgc2hvcnQgdmFsdWU7CQkvKiBvcHRpb25hbCBkYXRhICovCistCXN0cnVjdCBzbmRfc2VxX2V2ZW50ICpldmVudDsJCS8qIHF1b3RlZCBldmVudCAqLworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistCistCS8qIHNlcXVlbmNlciBldmVudCAqLworLXN0cnVjdCBzbmRfc2VxX2V2ZW50IHsKKy0Jc25kX3NlcV9ldmVudF90eXBlX3QgdHlwZTsJLyogZXZlbnQgdHlwZSAqLworLQl1bnNpZ25lZCBjaGFyIGZsYWdzOwkJLyogZXZlbnQgZmxhZ3MgKi8KKy0JY2hhciB0YWc7CistCQorLQl1bnNpZ25lZCBjaGFyIHF1ZXVlOwkJLyogc2NoZWR1bGUgcXVldWUgKi8KKy0JdW5pb24gc25kX3NlcV90aW1lc3RhbXAgdGltZTsJLyogc2NoZWR1bGUgdGltZSAqLworLQorLQorLQlzdHJ1Y3Qgc25kX3NlcV9hZGRyIHNvdXJjZTsJLyogc291cmNlIGFkZHJlc3MgKi8KKy0Jc3RydWN0IHNuZF9zZXFfYWRkciBkZXN0OwkvKiBkZXN0aW5hdGlvbiBhZGRyZXNzICovCistCistCXVuaW9uIHsJCQkJLyogZXZlbnQgZGF0YS4uLiAqLworLQkJc3RydWN0IHNuZF9zZXFfZXZfbm90ZSBub3RlOworLQkJc3RydWN0IHNuZF9zZXFfZXZfY3RybCBjb250cm9sOworLQkJc3RydWN0IHNuZF9zZXFfZXZfcmF3OCByYXc4OworLQkJc3RydWN0IHNuZF9zZXFfZXZfcmF3MzIgcmF3MzI7CistCQlzdHJ1Y3Qgc25kX3NlcV9ldl9leHQgZXh0OworLQkJc3RydWN0IHNuZF9zZXFfZXZfcXVldWVfY29udHJvbCBxdWV1ZTsKKy0JCXVuaW9uIHNuZF9zZXFfdGltZXN0YW1wIHRpbWU7CistCQlzdHJ1Y3Qgc25kX3NlcV9hZGRyIGFkZHI7CistCQlzdHJ1Y3Qgc25kX3NlcV9jb25uZWN0IGNvbm5lY3Q7CistCQlzdHJ1Y3Qgc25kX3NlcV9yZXN1bHQgcmVzdWx0OworLQkJc3RydWN0IHNuZF9zZXFfZXZfcXVvdGUgcXVvdGU7CistCX0gZGF0YTsKKy19OworLQorLQorLS8qCistICogYm91bmNlIGV2ZW50IC0gc3RvcmVkIGFzIHZhcmlhYmxlIHNpemUgZGF0YQorLSAqLworLXN0cnVjdCBzbmRfc2VxX2V2ZW50X2JvdW5jZSB7CistCWludCBlcnI7CistCXN0cnVjdCBzbmRfc2VxX2V2ZW50IGV2ZW50OworLQkvKiBleHRlcm5hbCBkYXRhIGZvbGxvd3MgaGVyZS4gKi8KKy19OworLQorLQorLQkvKiBzeXN0ZW0gaW5mb3JtYXRpb24gKi8KKy1zdHJ1Y3Qgc25kX3NlcV9zeXN0ZW1faW5mbyB7CistCWludCBxdWV1ZXM7CQkJLyogbWF4aW11bSBxdWV1ZXMgY291bnQgKi8KKy0JaW50IGNsaWVudHM7CQkJLyogbWF4aW11bSBjbGllbnRzIGNvdW50ICovCistCWludCBwb3J0czsJCQkvKiBtYXhpbXVtIHBvcnRzIHBlciBjbGllbnQgKi8KKy0JaW50IGNoYW5uZWxzOwkJCS8qIG1heGltdW0gY2hhbm5lbHMgcGVyIHBvcnQgKi8KKy0JaW50IGN1cl9jbGllbnRzOwkJLyogY3VycmVudCBjbGllbnRzICovCistCWludCBjdXJfcXVldWVzOwkJCS8qIGN1cnJlbnQgcXVldWVzICovCistCWNoYXIgcmVzZXJ2ZWRbMjRdOworLX07CistCistCistCS8qIHN5c3RlbSBydW5uaW5nIGluZm9ybWF0aW9uICovCistc3RydWN0IHNuZF9zZXFfcnVubmluZ19pbmZvIHsKKy0JdW5zaWduZWQgY2hhciBjbGllbnQ7CQkvKiBjbGllbnQgaWQgKi8KKy0JdW5zaWduZWQgY2hhciBiaWdfZW5kaWFuOwkvKiAxID0gYmlnLWVuZGlhbiAqLworLQl1bnNpZ25lZCBjaGFyIGNwdV9tb2RlOwkJLyogNCA9IDMyYml0LCA4ID0gNjRiaXQgKi8KKy0JdW5zaWduZWQgY2hhciBwYWQ7CQkvKiByZXNlcnZlZCAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzEyXTsKKy19OworLQorLQorLQkvKiBrbm93biBjbGllbnQgbnVtYmVycyAqLworLSNkZWZpbmUgU05EUlZfU0VRX0NMSUVOVF9TWVNURU0JCTAKKy0JLyogaW50ZXJuYWwgY2xpZW50IG51bWJlcnMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9DTElFTlRfRFVNTVkJCTE0CS8qIG1pZGkgdGhyb3VnaCAqLworLSNkZWZpbmUgU05EUlZfU0VRX0NMSUVOVF9PU1MJCTE1CS8qIG9zcyBzZXF1ZW5jZXIgZW11bGF0b3IgKi8KKy0KKy0KKy0JLyogY2xpZW50IHR5cGVzICovCistdHlwZWRlZiBpbnQgX19iaXR3aXNlIHNuZF9zZXFfY2xpZW50X3R5cGVfdDsKKy0jZGVmaW5lCU5PX0NMSUVOVAkoKF9fZm9yY2Ugc25kX3NlcV9jbGllbnRfdHlwZV90KSAwKQorLSNkZWZpbmUJVVNFUl9DTElFTlQJKChfX2ZvcmNlIHNuZF9zZXFfY2xpZW50X3R5cGVfdCkgMSkKKy0jZGVmaW5lCUtFUk5FTF9DTElFTlQJKChfX2ZvcmNlIHNuZF9zZXFfY2xpZW50X3R5cGVfdCkgMikKKy0gICAgICAgICAgICAgICAgICAgICAgICAKKy0JLyogZXZlbnQgZmlsdGVyIGZsYWdzICovCistI2RlZmluZSBTTkRSVl9TRVFfRklMVEVSX0JST0FEQ0FTVAkoMTw8MCkJLyogYWNjZXB0IGJyb2FkY2FzdCBtZXNzYWdlcyAqLworLSNkZWZpbmUgU05EUlZfU0VRX0ZJTFRFUl9NVUxUSUNBU1QJKDE8PDEpCS8qIGFjY2VwdCBtdWx0aWNhc3QgbWVzc2FnZXMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9GSUxURVJfQk9VTkNFCQkoMTw8MikJLyogYWNjZXB0IGJvdW5jZSBldmVudCBpbiBlcnJvciAqLworLSNkZWZpbmUgU05EUlZfU0VRX0ZJTFRFUl9VU0VfRVZFTlQJKDE8PDMxKQkvKiB1c2UgZXZlbnQgZmlsdGVyICovCistCistc3RydWN0IHNuZF9zZXFfY2xpZW50X2luZm8geworLQlpbnQgY2xpZW50OwkJCS8qIGNsaWVudCBudW1iZXIgdG8gaW5xdWlyZSAqLworLQlzbmRfc2VxX2NsaWVudF90eXBlX3QgdHlwZTsJLyogY2xpZW50IHR5cGUgKi8KKy0JY2hhciBuYW1lWzY0XTsJCQkvKiBjbGllbnQgbmFtZSAqLworLQl1bnNpZ25lZCBpbnQgZmlsdGVyOwkJLyogZmlsdGVyIGZsYWdzICovCistCXVuc2lnbmVkIGNoYXIgbXVsdGljYXN0X2ZpbHRlcls4XTsgLyogbXVsdGljYXN0IGZpbHRlciBiaXRtYXAgKi8KKy0JdW5zaWduZWQgY2hhciBldmVudF9maWx0ZXJbMzJdOwkvKiBldmVudCBmaWx0ZXIgYml0bWFwICovCistCWludCBudW1fcG9ydHM7CQkJLyogUk86IG51bWJlciBvZiBwb3J0cyAqLworLQlpbnQgZXZlbnRfbG9zdDsJCQkvKiBudW1iZXIgb2YgbG9zdCBldmVudHMgKi8KKy0JaW50IGNhcmQ7CQkJLyogUk86IGNhcmQgbnVtYmVyW2tlcm5lbF0gKi8KKy0JaW50IHBpZDsJCQkvKiBSTzogcGlkW3VzZXJdICovCistCWNoYXIgcmVzZXJ2ZWRbNTZdOwkJLyogZm9yIGZ1dHVyZSB1c2UgKi8KKy19OworLQorLQorLS8qIGNsaWVudCBwb29sIHNpemUgKi8KKy1zdHJ1Y3Qgc25kX3NlcV9jbGllbnRfcG9vbCB7CistCWludCBjbGllbnQ7CQkJLyogY2xpZW50IG51bWJlciB0byBpbnF1aXJlICovCistCWludCBvdXRwdXRfcG9vbDsJCS8qIG91dGdvaW5nICh3cml0ZSkgcG9vbCBzaXplICovCistCWludCBpbnB1dF9wb29sOwkJCS8qIGluY29taW5nIChyZWFkKSBwb29sIHNpemUgKi8KKy0JaW50IG91dHB1dF9yb29tOwkJLyogbWluaW11bSBmcmVlIHBvb2wgc2l6ZSBmb3Igc2VsZWN0L2Jsb2NraW5nIG1vZGUgKi8KKy0JaW50IG91dHB1dF9mcmVlOwkJLyogdW51c2VkIHNpemUgKi8KKy0JaW50IGlucHV0X2ZyZWU7CQkJLyogdW51c2VkIHNpemUgKi8KKy0JY2hhciByZXNlcnZlZFs2NF07CistfTsKKy0KKy0KKy0vKiBSZW1vdmUgZXZlbnRzIGJ5IHNwZWNpZmllZCBjcml0ZXJpYSAqLworLQorLSNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9JTlBVVAkJKDE8PDApCS8qIEZsdXNoIGlucHV0IHF1ZXVlcyAqLworLSNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9PVVRQVVQJCSgxPDwxKQkvKiBGbHVzaCBvdXRwdXQgcXVldWVzICovCistI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX0RFU1QJCSgxPDwyKQkvKiBSZXN0cmljdCBieSBkZXN0aW5hdGlvbiBxOmNsaWVudDpwb3J0ICovCistI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX0RFU1RfQ0hBTk5FTAkoMTw8MykJLyogUmVzdHJpY3QgYnkgY2hhbm5lbCAqLworLSNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9USU1FX0JFRk9SRQkoMTw8NCkJLyogUmVzdHJpY3QgdG8gYmVmb3JlIHRpbWUgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfVElNRV9BRlRFUgkoMTw8NSkJLyogUmVzdHJpY3QgdG8gdGltZSBvciBhZnRlciAqLworLSNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9USU1FX1RJQ0sJKDE8PDYpCS8qIFRpbWUgaXMgaW4gdGlja3MgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfRVZFTlRfVFlQRQkoMTw8NykJLyogUmVzdHJpY3QgdG8gZXZlbnQgdHlwZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9JR05PUkVfT0ZGIAkoMTw8OCkJLyogRG8gbm90IGZsdXNoIG9mZiBldmVudHMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfVEFHX01BVENIIAkoMTw8OSkJLyogUmVzdHJpY3QgdG8gZXZlbnRzIHdpdGggZ2l2ZW4gdGFnICovCistCistc3RydWN0IHNuZF9zZXFfcmVtb3ZlX2V2ZW50cyB7CistCXVuc2lnbmVkIGludCAgcmVtb3ZlX21vZGU7CS8qIEZsYWdzIHRoYXQgZGV0ZXJtaW5lIHdoYXQgZ2V0cyByZW1vdmVkICovCistCistCXVuaW9uIHNuZF9zZXFfdGltZXN0YW1wIHRpbWU7CistCistCXVuc2lnbmVkIGNoYXIgcXVldWU7CS8qIFF1ZXVlIGZvciBSRU1PVkVfREVTVCAqLworLQlzdHJ1Y3Qgc25kX3NlcV9hZGRyIGRlc3Q7CS8qIEFkZHJlc3MgZm9yIFJFTU9WRV9ERVNUICovCistCXVuc2lnbmVkIGNoYXIgY2hhbm5lbDsJLyogQ2hhbm5lbCBmb3IgUkVNT1ZFX0RFU1QgKi8KKy0KKy0JaW50ICB0eXBlOwkvKiBGb3IgUkVNT1ZFX0VWRU5UX1RZUEUgKi8KKy0JY2hhciAgdGFnOwkvKiBUYWcgZm9yIFJFTU9WRV9UQUcgKi8KKy0KKy0JaW50ICByZXNlcnZlZFsxMF07CS8qIFRvIGFsbG93IGZvciBmdXR1cmUgYmluYXJ5IGNvbXBhdGliaWxpdHkgKi8KKy0KKy19OworLQorLQorLQkvKiBrbm93biBwb3J0IG51bWJlcnMgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1NZU1RFTV9USU1FUgkwCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9TWVNURU1fQU5OT1VOQ0UJMQorLQorLQkvKiBwb3J0IGNhcGFiaWxpdGllcyAoMzIgYml0cykgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9SRUFECQkoMTw8MCkJLyogcmVhZGFibGUgZnJvbSB0aGlzIHBvcnQgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9XUklURQkoMTw8MSkJLyogd3JpdGFibGUgdG8gdGhpcyBwb3J0ICovCistCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfU1lOQ19SRUFECSgxPDwyKQorLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX1NZTkNfV1JJVEUJKDE8PDMpCistCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfRFVQTEVYCSgxPDw0KQorLQorLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX1NVQlNfUkVBRAkoMTw8NSkJLyogYWxsb3cgcmVhZCBzdWJzY3JpcHRpb24gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9TVUJTX1dSSVRFCSgxPDw2KQkvKiBhbGxvdyB3cml0ZSBzdWJzY3JpcHRpb24gKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9OT19FWFBPUlQJKDE8PDcpCS8qIHJvdXRpbmcgbm90IGFsbG93ZWQgKi8KKy0KKy0JLyogcG9ydCB0eXBlICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX1NQRUNJRklDCSgxPDwwKQkvKiBoYXJkd2FyZSBzcGVjaWZpYyAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX0dFTkVSSUMgKDE8PDEpCS8qIGdlbmVyaWMgTUlESSBkZXZpY2UgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9HTQkoMTw8MikJLyogR2VuZXJhbCBNSURJIGNvbXBhdGlibGUgZGV2aWNlICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR1MJKDE8PDMpCS8qIEdTIGNvbXBhdGlibGUgZGV2aWNlICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfWEcJKDE8PDQpCS8qIFhHIGNvbXBhdGlibGUgZGV2aWNlICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfTVQzMgkoMTw8NSkJLyogTVQtMzIgY29tcGF0aWJsZSBkZXZpY2UgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9HTTIJKDE8PDYpCS8qIEdlbmVyYWwgTUlESSAyIGNvbXBhdGlibGUgZGV2aWNlICovCistCistLyogb3RoZXIgc3RhbmRhcmRzLi4uKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfU1lOVEgJKDE8PDEwKQkvKiBTeW50aCBkZXZpY2UgKG5vIE1JREkgY29tcGF0aWJsZSAtIGRpcmVjdCB3YXZldGFibGUpICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX0RJUkVDVF9TQU1QTEUgKDE8PDExKQkvKiBTYW1wbGluZyBkZXZpY2UgKHN1cHBvcnQgc2FtcGxlIGRvd25sb2FkKSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9TQU1QTEUJKDE8PDEyKQkvKiBTYW1wbGluZyBkZXZpY2UgKHNhbXBsZSBjYW4gYmUgZG93bmxvYWRlZCBhdCBhbnkgdGltZSkgKi8KKy0vKi4uLiovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX0hBUkRXQVJFCSgxPDwxNikJLyogZHJpdmVyIGZvciBhIGhhcmR3YXJlIGRldmljZSAqLworLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9TT0ZUV0FSRQkoMTw8MTcpCS8qIGltcGxlbWVudGVkIGluIHNvZnR3YXJlICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX1NZTlRIRVNJWkVSCSgxPDwxOCkJLyogZ2VuZXJhdGVzIHNvdW5kICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX1BPUlQJKDE8PDE5KQkvKiBjb25uZWN0cyB0byBvdGhlciBkZXZpY2UocykgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfQVBQTElDQVRJT04JKDE8PDIwKQkvKiBhcHBsaWNhdGlvbiAoc2VxdWVuY2VyL2VkaXRvcikgKi8KKy0KKy0vKiBtaXNjLiBjb25kaXRpb25pbmcgZmxhZ3MgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX0ZMR19HSVZFTl9QT1JUCSgxPDwwKQorLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfRkxHX1RJTUVTVEFNUAkoMTw8MSkKKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX0ZMR19USU1FX1JFQUwJKDE8PDIpCistCistc3RydWN0IHNuZF9zZXFfcG9ydF9pbmZvIHsKKy0Jc3RydWN0IHNuZF9zZXFfYWRkciBhZGRyOwkvKiBjbGllbnQvcG9ydCBudW1iZXJzICovCistCWNoYXIgbmFtZVs2NF07CQkJLyogcG9ydCBuYW1lICovCistCistCXVuc2lnbmVkIGludCBjYXBhYmlsaXR5OwkvKiBwb3J0IGNhcGFiaWxpdHkgYml0cyAqLworLQl1bnNpZ25lZCBpbnQgdHlwZTsJCS8qIHBvcnQgdHlwZSBiaXRzICovCistCWludCBtaWRpX2NoYW5uZWxzOwkJLyogY2hhbm5lbHMgcGVyIE1JREkgcG9ydCAqLworLQlpbnQgbWlkaV92b2ljZXM7CQkvKiB2b2ljZXMgcGVyIE1JREkgcG9ydCAqLworLQlpbnQgc3ludGhfdm9pY2VzOwkJLyogdm9pY2VzIHBlciBTWU5USCBwb3J0ICovCistCistCWludCByZWFkX3VzZTsJCQkvKiBSL086IHN1YnNjcmliZXJzIGZvciBvdXRwdXQgKGZyb20gdGhpcyBwb3J0KSAqLworLQlpbnQgd3JpdGVfdXNlOwkJCS8qIFIvTzogc3Vic2NyaWJlcnMgZm9yIGlucHV0ICh0byB0aGlzIHBvcnQpICovCistCistCXZvaWQgKmtlcm5lbDsJCQkvKiByZXNlcnZlZCBmb3Iga2VybmVsIHVzZSAobXVzdCBiZSBOVUxMKSAqLworLQl1bnNpZ25lZCBpbnQgZmxhZ3M7CQkvKiBtaXNjLiBjb25kaXRpb25pbmcgKi8KKy0JdW5zaWduZWQgY2hhciB0aW1lX3F1ZXVlOwkvKiBxdWV1ZSAjIGZvciB0aW1lc3RhbXBpbmcgKi8KKy0JY2hhciByZXNlcnZlZFs1OV07CQkvKiBmb3IgZnV0dXJlIHVzZSAqLworLX07CistCistCistLyogcXVldWUgZmxhZ3MgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9RVUVVRV9GTEdfU1lOQwkoMTw8MCkJLyogc3luYyBlbmFibGVkICovCistCistLyogcXVldWUgaW5mb3JtYXRpb24gKi8KKy1zdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9pbmZvIHsKKy0JaW50IHF1ZXVlOwkJLyogcXVldWUgaWQgKi8KKy0KKy0JLyoKKy0JICogIHNlY3VyaXR5IHNldHRpbmdzLCBvbmx5IG93bmVyIG9mIHRoaXMgcXVldWUgY2FuIHN0YXJ0L3N0b3AgdGltZXIKKy0JICogIGV0Yy4gaWYgdGhlIHF1ZXVlIGlzIGxvY2tlZCBmb3Igb3RoZXIgY2xpZW50cworLQkgKi8KKy0JaW50IG93bmVyOwkJLyogY2xpZW50IGlkIGZvciBvd25lciBvZiB0aGUgcXVldWUgKi8KKy0JdW5zaWduZWQgbG9ja2VkOjE7CS8qIHRpbWluZyBxdWV1ZSBsb2NrZWQgZm9yIG90aGVyIHF1ZXVlcyAqLworLQljaGFyIG5hbWVbNjRdOwkJLyogbmFtZSBvZiB0aGlzIHF1ZXVlICovCistCXVuc2lnbmVkIGludCBmbGFnczsJLyogZmxhZ3MgKi8KKy0JY2hhciByZXNlcnZlZFs2MF07CS8qIGZvciBmdXR1cmUgdXNlICovCistCistfTsKKy0KKy0vKiBxdWV1ZSBpbmZvL3N0YXR1cyAqLworLXN0cnVjdCBzbmRfc2VxX3F1ZXVlX3N0YXR1cyB7CistCWludCBxdWV1ZTsJCQkvKiBxdWV1ZSBpZCAqLworLQlpbnQgZXZlbnRzOwkJCS8qIHJlYWQtb25seSAtIHF1ZXVlIHNpemUgKi8KKy0Jc25kX3NlcV90aWNrX3RpbWVfdCB0aWNrOwkvKiBjdXJyZW50IHRpY2sgKi8KKy0Jc3RydWN0IHNuZF9zZXFfcmVhbF90aW1lIHRpbWU7CS8qIGN1cnJlbnQgdGltZSAqLworLQlpbnQgcnVubmluZzsJCQkvKiBydW5uaW5nIHN0YXRlIG9mIHF1ZXVlICovCistCWludCBmbGFnczsJCQkvKiB2YXJpb3VzIGZsYWdzICovCistCWNoYXIgcmVzZXJ2ZWRbNjRdOwkJLyogZm9yIHRoZSBmdXR1cmUgKi8KKy19OworLQorLQorLS8qIHF1ZXVlIHRlbXBvICovCistc3RydWN0IHNuZF9zZXFfcXVldWVfdGVtcG8geworLQlpbnQgcXVldWU7CQkJLyogc2VxdWVuY2VyIHF1ZXVlICovCistCXVuc2lnbmVkIGludCB0ZW1wbzsJCS8qIGN1cnJlbnQgdGVtcG8sIHVzL3RpY2sgKi8KKy0JaW50IHBwcTsJCQkvKiB0aW1lIHJlc29sdXRpb24sIHRpY2tzL3F1YXJ0ZXIgKi8KKy0JdW5zaWduZWQgaW50IHNrZXdfdmFsdWU7CS8qIHF1ZXVlIHNrZXcgKi8KKy0JdW5zaWduZWQgaW50IHNrZXdfYmFzZTsJCS8qIHF1ZXVlIHNrZXcgYmFzZSAqLworLQljaGFyIHJlc2VydmVkWzI0XTsJCS8qIGZvciB0aGUgZnV0dXJlICovCistfTsKKy0KKy0KKy0vKiBzZXF1ZW5jZXIgdGltZXIgc291cmNlcyAqLworLSNkZWZpbmUgU05EUlZfU0VRX1RJTUVSX0FMU0EJCTAJLyogQUxTQSB0aW1lciAqLworLSNkZWZpbmUgU05EUlZfU0VRX1RJTUVSX01JRElfQ0xPQ0sJMQkvKiBNaWRpIENsb2NrIChDTE9DSyBldmVudCkgKi8KKy0jZGVmaW5lIFNORFJWX1NFUV9USU1FUl9NSURJX1RJQ0sJMgkvKiBNaWRpIFRpbWVyIFRpY2sgKFRJQ0sgZXZlbnQpICovCistCistLyogcXVldWUgdGltZXIgaW5mbyAqLworLXN0cnVjdCBzbmRfc2VxX3F1ZXVlX3RpbWVyIHsKKy0JaW50IHF1ZXVlOwkJCS8qIHNlcXVlbmNlciBxdWV1ZSAqLworLQlpbnQgdHlwZTsJCQkvKiBzb3VyY2UgdGltZXIgdHlwZSAqLworLQl1bmlvbiB7CistCQlzdHJ1Y3QgeworLQkJCXN0cnVjdCBzbmRfdGltZXJfaWQgaWQ7CS8qIEFMU0EncyB0aW1lciBJRCAqLworLQkJCXVuc2lnbmVkIGludCByZXNvbHV0aW9uOwkvKiByZXNvbHV0aW9uIGluIEh6ICovCistCQl9IGFsc2E7CistCX0gdTsKKy0JY2hhciByZXNlcnZlZFs2NF07CQkvKiBmb3IgdGhlIGZ1dHVyZSB1c2UgKi8KKy19OworLQorLQorLXN0cnVjdCBzbmRfc2VxX3F1ZXVlX2NsaWVudCB7CistCWludCBxdWV1ZTsJCS8qIHNlcXVlbmNlciBxdWV1ZSAqLworLQlpbnQgY2xpZW50OwkJLyogc2VxdWVuY2VyIGNsaWVudCAqLworLQlpbnQgdXNlZDsJCS8qIHF1ZXVlIGlzIHVzZWQgd2l0aCB0aGlzIGNsaWVudAorLQkJCQkgICAobXVzdCBiZSBzZXQgZm9yIGFjY2VwdGluZyBldmVudHMpICovCistCS8qIHBlciBjbGllbnQgd2F0ZXJtYXJrcyAqLworLQljaGFyIHJlc2VydmVkWzY0XTsJLyogZm9yIGZ1dHVyZSB1c2UgKi8KKy19OworLQorLQorLSNkZWZpbmUgU05EUlZfU0VRX1BPUlRfU1VCU19FWENMVVNJVkUJKDE8PDApCS8qIGV4Y2x1c2l2ZSBjb25uZWN0aW9uICovCistI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9TVUJTX1RJTUVTVEFNUAkoMTw8MSkKKy0jZGVmaW5lIFNORFJWX1NFUV9QT1JUX1NVQlNfVElNRV9SRUFMCSgxPDwyKQorLQorLXN0cnVjdCBzbmRfc2VxX3BvcnRfc3Vic2NyaWJlIHsKKy0Jc3RydWN0IHNuZF9zZXFfYWRkciBzZW5kZXI7CS8qIHNlbmRlciBhZGRyZXNzICovCistCXN0cnVjdCBzbmRfc2VxX2FkZHIgZGVzdDsJLyogZGVzdGluYXRpb24gYWRkcmVzcyAqLworLQl1bnNpZ25lZCBpbnQgdm9pY2VzOwkJLyogbnVtYmVyIG9mIHZvaWNlcyB0byBiZSBhbGxvY2F0ZWQgKDAgPSBkb24ndCBjYXJlKSAqLworLQl1bnNpZ25lZCBpbnQgZmxhZ3M7CQkvKiBtb2RlcyAqLworLQl1bnNpZ25lZCBjaGFyIHF1ZXVlOwkJLyogaW5wdXQgdGltZS1zdGFtcCBxdWV1ZSAob3B0aW9uYWwpICovCistCXVuc2lnbmVkIGNoYXIgcGFkWzNdOwkJLyogcmVzZXJ2ZWQgKi8KKy0JY2hhciByZXNlcnZlZFs2NF07CistfTsKKy0KKy0vKiB0eXBlIG9mIHF1ZXJ5IHN1YnNjcmlwdGlvbiAqLworLSNkZWZpbmUgU05EUlZfU0VRX1FVRVJZX1NVQlNfUkVBRAkwCistI2RlZmluZSBTTkRSVl9TRVFfUVVFUllfU1VCU19XUklURQkxCistCistc3RydWN0IHNuZF9zZXFfcXVlcnlfc3VicyB7CistCXN0cnVjdCBzbmRfc2VxX2FkZHIgcm9vdDsJLyogY2xpZW50L3BvcnQgaWQgdG8gYmUgc2VhcmNoZWQgKi8KKy0JaW50IHR5cGU7CQkvKiBSRUFEIG9yIFdSSVRFICovCistCWludCBpbmRleDsJCS8qIDAuLk4tMSAqLworLQlpbnQgbnVtX3N1YnM7CQkvKiBSL086IG51bWJlciBvZiBzdWJzY3JpcHRpb25zIG9uIHRoaXMgcG9ydCAqLworLQlzdHJ1Y3Qgc25kX3NlcV9hZGRyIGFkZHI7CS8qIFIvTzogcmVzdWx0ICovCistCXVuc2lnbmVkIGNoYXIgcXVldWU7CS8qIFIvTzogcmVzdWx0ICovCistCXVuc2lnbmVkIGludCBmbGFnczsJLyogUi9POiByZXN1bHQgKi8KKy0JY2hhciByZXNlcnZlZFs2NF07CS8qIGZvciBmdXR1cmUgdXNlICovCistfTsKKy0KKy0KKy0vKgorLSAqICBJT0NUTCBjb21tYW5kcworLSAqLworLQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1BWRVJTSU9OCV9JT1IgKCdTJywgMHgwMCwgaW50KQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0NMSUVOVF9JRAlfSU9SICgnUycsIDB4MDEsIGludCkKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TWVNURU1fSU5GTwlfSU9XUignUycsIDB4MDIsIHN0cnVjdCBzbmRfc2VxX3N5c3RlbV9pbmZvKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1JVTk5JTkdfTU9ERQlfSU9XUignUycsIDB4MDMsIHN0cnVjdCBzbmRfc2VxX3J1bm5pbmdfaW5mbykKKy0KKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfQ0xJRU5UX0lORk8JX0lPV1IoJ1MnLCAweDEwLCBzdHJ1Y3Qgc25kX3NlcV9jbGllbnRfaW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfQ0xJRU5UX0lORk8JX0lPVyAoJ1MnLCAweDExLCBzdHJ1Y3Qgc25kX3NlcV9jbGllbnRfaW5mbykKKy0KKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9DUkVBVEVfUE9SVAlfSU9XUignUycsIDB4MjAsIHN0cnVjdCBzbmRfc2VxX3BvcnRfaW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9ERUxFVEVfUE9SVAlfSU9XICgnUycsIDB4MjEsIHN0cnVjdCBzbmRfc2VxX3BvcnRfaW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUE9SVF9JTkZPCV9JT1dSKCdTJywgMHgyMiwgc3RydWN0IHNuZF9zZXFfcG9ydF9pbmZvKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NFVF9QT1JUX0lORk8JX0lPVyAoJ1MnLCAweDIzLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X2luZm8pCistCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU1VCU0NSSUJFX1BPUlQJX0lPVyAoJ1MnLCAweDMwLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X3N1YnNjcmliZSkKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9VTlNVQlNDUklCRV9QT1JUIF9JT1cgKCdTJywgMHgzMSwgc3RydWN0IHNuZF9zZXFfcG9ydF9zdWJzY3JpYmUpCistCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfQ1JFQVRFX1FVRVVFCV9JT1dSKCdTJywgMHgzMiwgc3RydWN0IHNuZF9zZXFfcXVldWVfaW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9ERUxFVEVfUVVFVUUJX0lPVyAoJ1MnLCAweDMzLCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9pbmZvKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9RVUVVRV9JTkZPCV9JT1dSKCdTJywgMHgzNCwgc3RydWN0IHNuZF9zZXFfcXVldWVfaW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfUVVFVUVfSU5GTwlfSU9XUignUycsIDB4MzUsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2luZm8pCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX05BTUVEX1FVRVVFCV9JT1dSKCdTJywgMHgzNiwgc3RydWN0IHNuZF9zZXFfcXVldWVfaW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUVVFVUVfU1RBVFVTIF9JT1dSKCdTJywgMHg0MCwgc3RydWN0IHNuZF9zZXFfcXVldWVfc3RhdHVzKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9RVUVVRV9URU1QTwlfSU9XUignUycsIDB4NDEsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX3RlbXBvKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NFVF9RVUVVRV9URU1QTwlfSU9XICgnUycsIDB4NDIsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX3RlbXBvKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9RVUVVRV9USU1FUglfSU9XUignUycsIDB4NDUsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX3RpbWVyKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NFVF9RVUVVRV9USU1FUglfSU9XICgnUycsIDB4NDYsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX3RpbWVyKQorLSNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9RVUVVRV9DTElFTlQJX0lPV1IoJ1MnLCAweDQ5LCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9jbGllbnQpCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX1FVRVVFX0NMSUVOVAlfSU9XICgnUycsIDB4NGEsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2NsaWVudCkKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfQ0xJRU5UX1BPT0wJX0lPV1IoJ1MnLCAweDRiLCBzdHJ1Y3Qgc25kX3NlcV9jbGllbnRfcG9vbCkKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfQ0xJRU5UX1BPT0wJX0lPVyAoJ1MnLCAweDRjLCBzdHJ1Y3Qgc25kX3NlcV9jbGllbnRfcG9vbCkKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9SRU1PVkVfRVZFTlRTCV9JT1cgKCdTJywgMHg0ZSwgc3RydWN0IHNuZF9zZXFfcmVtb3ZlX2V2ZW50cykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9RVUVSWV9TVUJTCV9JT1dSKCdTJywgMHg0Ziwgc3RydWN0IHNuZF9zZXFfcXVlcnlfc3VicykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfU1VCU0NSSVBUSU9OCV9JT1dSKCdTJywgMHg1MCwgc3RydWN0IHNuZF9zZXFfcG9ydF9zdWJzY3JpYmUpCistI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfUVVFUllfTkVYVF9DTElFTlQJX0lPV1IoJ1MnLCAweDUxLCBzdHJ1Y3Qgc25kX3NlcV9jbGllbnRfaW5mbykKKy0jZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9RVUVSWV9ORVhUX1BPUlQJX0lPV1IoJ1MnLCAweDUyLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X2luZm8pCistCistI2VuZGlmIC8qIF9VQVBJX19TT1VORF9BU0VRVUVOQ0VSX0ggKi8KKysjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2FzZXF1ZW5jZXIuaD4KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2Fzb2MuaCBiL2luY2x1ZGUvc291bmQvYXNvYy5oCitpbmRleCBhNzRjYTIzMi4uMTg1YmJhODEgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL2Fzb2MuaAorKysrIGIvaW5jbHVkZS9zb3VuZC9hc29jLmgKK0BAIC0xLDYzMyArMSBAQAorLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCistLyoKKy0gKiB1YXBpL3NvdW5kL2Fzb2MuaCAtLSBBTFNBIFNvQyBGaXJtd2FyZSBDb250cm9scyBhbmQgREFQTQorLSAqCistICogQ29weXJpZ2h0IChDKSAyMDEyIFRleGFzIEluc3RydW1lbnRzIEluYy4KKy0gKiBDb3B5cmlnaHQgKEMpIDIwMTUgSW50ZWwgQ29ycG9yYXRpb24uCistICoKKy0gKiBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAqIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgdmVyc2lvbiAyIGFzCistICogcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24uCistICoKKy0gKiBTaW1wbGUgZmlsZSBBUEkgdG8gbG9hZCBGVyB0aGF0IGluY2x1ZGVzIG1peGVycywgY29lZmZpY2llbnRzLCBEQVBNIGdyYXBocywKKy0gKiBhbGdvcml0aG1zLCBlcXVhbGlzZXJzLCBEQUlzLCB3aWRnZXRzIGV0Yy4KKy0qLworLQorLSNpZm5kZWYgX19MSU5VWF9VQVBJX1NORF9BU09DX0gKKy0jZGVmaW5lIF9fTElOVVhfVUFQSV9TTkRfQVNPQ19ICistCistI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CistI2luY2x1ZGUgPHNvdW5kL2Fzb3VuZC5oPgorLQorLS8qCistICogTWF4aW11bSBudW1iZXIgb2YgY2hhbm5lbHMgdG9wb2xvZ3kga2NvbnRyb2wgY2FuIHJlcHJlc2VudC4KKy0gKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19NQVhfQ0hBTgkJOAorLQorLS8qCistICogTWF4aW11bSBudW1iZXIgb2YgUENNIGZvcm1hdHMgY2FwYWJpbGl0eQorLSAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX01BWF9GT1JNQVRTCTE2CistCistLyoKKy0gKiBNYXhpbXVtIG51bWJlciBvZiBQQ00gc3RyZWFtIGNvbmZpZ3MKKy0gKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19TVFJFQU1fQ09ORklHX01BWCAgOAorLQorLS8qCistICogTWF4aW11bSBudW1iZXIgb2YgcGh5c2ljYWwgbGluaydzIGhhcmR3YXJlIGNvbmZpZ3MKKy0gKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19IV19DT05GSUdfTUFYCTgKKy0KKy0vKiBpbmRpdmlkdWFsIGtjb250cm9sIGluZm8gdHlwZXMgLSBjYW4gYmUgbWl4ZWQgd2l0aCBvdGhlciB0eXBlcyAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9WT0xTVwkJMQorLSNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9WT0xTV19TWAkyCistI2RlZmluZSBTTkRfU09DX1RQTEdfQ1RMX1ZPTFNXX1hSX1NYCTMKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19DVExfRU5VTQkJNAorLSNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9CWVRFUwkJNQorLSNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9FTlVNX1ZBTFVFCTYKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19DVExfUkFOR0UJCTcKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19DVExfU1RST0JFCQk4CistCistCistLyogaW5kaXZpZHVhbCB3aWRnZXQga2NvbnRyb2wgaW5mbyB0eXBlcyAtIGNhbiBiZSBtaXhlZCB3aXRoIG90aGVyIHR5cGVzICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9DVExfVk9MU1cJCTY0CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9DVExfRU5VTV9ET1VCTEUJNjUKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0NUTF9FTlVNX1ZJUlQJCTY2CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9DVExfRU5VTV9WQUxVRQk2NworLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQ1RMX1BJTgkJNjgKKy0KKy0vKiBEQVBNIHdpZGdldCB0eXBlcyAtIGFkZCBuZXcgaXRlbXMgdG8gdGhlIGVuZCAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fSU5QVVQJCTAKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX09VVFBVVAkxCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9NVVgJCTIKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX01JWEVSCQkzCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9QR0EJCTQKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX09VVF9EUlYJNQorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQURDCQk2CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9EQUMJCTcKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1NXSVRDSAk4CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9QUkUJCTkKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1BPU1QJCTEwCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9BSUZfSU4JMTEKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0FJRl9PVVQJMTIKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0RBSV9JTgkxMworLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fREFJX09VVAkxNAorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fREFJX0xJTksJMTUKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0JVRkZFUgkxNgorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fU0NIRURVTEVSCTE3CistI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9FRkZFQ1QJMTgKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1NJR0dFTgkxOQorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fU1JDCQkyMAorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQVNSQwkJMjEKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0VOQ09ERVIJMjIKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0RFQ09ERVIJMjMKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0xBU1QJCVNORF9TT0NfVFBMR19EQVBNX0RFQ09ERVIKKy0KKy0vKiBIZWFkZXIgbWFnaWMgbnVtYmVyIGFuZCBzdHJpbmcgc2l6ZXMgKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19NQUdJQwkJMHg0MTUzNkY0MyAvKiBBU29DICovCistCistLyogc3RyaW5nIHNpemVzICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfTlVNX1RFWFRTCQkxNgorLQorLS8qIEFCSSB2ZXJzaW9uICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfQUJJX1ZFUlNJT04JMHg1CS8qIGN1cnJlbnQgdmVyc2lvbiAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX0FCSV9WRVJTSU9OX01JTgkweDQJLyogb2xkZXN0IHZlcnNpb24gc3VwcG9ydGVkICovCistCistLyogTWF4IHNpemUgb2YgVExWIGRhdGEgKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UTFZfU0laRQkJMzIKKy0KKy0vKgorLSAqIEZpbGUgYW5kIEJsb2NrIGhlYWRlciBkYXRhIHR5cGVzLgorLSAqIEFkZCBuZXcgZ2VuZXJpYyBhbmQgdmVuZG9yIHR5cGVzIHRvIGVuZCBvZiBsaXN0LgorLSAqIEdlbmVyaWMgdHlwZXMgYXJlIGhhbmRsZWQgYnkgdGhlIGNvcmUgd2hpbHN0IHZlbmRvcnMgdHlwZXMgYXJlIHBhc3NlZAorLSAqIHRvIHRoZSBjb21wb25lbnQgZHJpdmVycyBmb3IgaGFuZGxpbmcuCistICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9NSVhFUgkJMQorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfQllURVMJCTIKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0VOVU0JCTMKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0RBUE1fR1JBUEgJNAorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfREFQTV9XSURHRVQJNQorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfREFJX0xJTksJNgorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfUENNCQk3CistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9NQU5JRkVTVAk4CistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9DT0RFQ19MSU5LCTkKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0JBQ0tFTkRfTElOSwkxMAorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfUERBVEEJCTExCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9EQUkJCTEyCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9NQVgJCVNORF9TT0NfVFBMR19UWVBFX0RBSQorLQorLS8qIHZlbmRvciBibG9jayBJRHMgLSBwbGVhc2UgYWRkIG5ldyB2ZW5kb3IgdHlwZXMgdG8gZW5kICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9WRU5ET1JfRlcJMTAwMAorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfVkVORE9SX0NPTkZJRwkxMDAxCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9WRU5ET1JfQ09FRkYJMTAwMgorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVWRU5ET1JfQ09ERUMJMTAwMworLQorLSNkZWZpbmUgU05EX1NPQ19UUExHX1NUUkVBTV9QTEFZQkFDSwkwCistI2RlZmluZSBTTkRfU09DX1RQTEdfU1RSRUFNX0NBUFRVUkUJMQorLQorLS8qIHZlbmRvciB0dXBsZSB0eXBlcyAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX1RVUExFX1RZUEVfVVVJRAkwCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFVQTEVfVFlQRV9TVFJJTkcJMQorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RVUExFX1RZUEVfQk9PTAkyCistI2RlZmluZSBTTkRfU09DX1RQTEdfVFVQTEVfVFlQRV9CWVRFCTMKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19UVVBMRV9UWVBFX1dPUkQJNAorLSNkZWZpbmUgU05EX1NPQ19UUExHX1RVUExFX1RZUEVfU0hPUlQJNQorLQorLS8qIERBSSBmbGFncyAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBSV9GTEdCSVRfU1lNTUVUUklDX1JBVEVTICAgICAgICAgKDEgPDwgMCkKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQUlfRkxHQklUX1NZTU1FVFJJQ19DSEFOTkVMUyAgICAgICgxIDw8IDEpCistI2RlZmluZSBTTkRfU09DX1RQTEdfREFJX0ZMR0JJVF9TWU1NRVRSSUNfU0FNUExFQklUUyAgICAoMSA8PCAyKQorLQorLS8qIERBSSBjbG9jayBnYXRpbmcgKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQUlfQ0xLX0dBVEVfVU5ERUZJTkVECTAKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19EQUlfQ0xLX0dBVEVfR0FURUQJMQorLSNkZWZpbmUgU05EX1NPQ19UUExHX0RBSV9DTEtfR0FURV9DT05UCQkyCistCistLyogREFJIG1jbGtfZGlyZWN0aW9uICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfTUNMS19DTyAgICAgICAgICAgIDAgLyogZm9yIGNvZGVjLCBtY2xrIGlzIG91dHB1dCAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX01DTEtfQ0kgICAgICAgICAgICAxIC8qIGZvciBjb2RlYywgbWNsayBpcyBpbnB1dCAqLworLQorLS8qIERBSSBwaHlzaWNhbCBQQ00gZGF0YSBmb3JtYXRzLgorLSAqIEFkZCBuZXcgZm9ybWF0cyB0byB0aGUgZW5kIG9mIHRoZSBsaXN0LgorLSAqLworLSNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX0kyUyAgICAgICAgICAxIC8qIEkyUyBtb2RlICovCistI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfUklHSFRfSiAgICAgIDIgLyogUmlnaHQgSnVzdGlmaWVkIG1vZGUgKi8KKy0jZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9MRUZUX0ogICAgICAgMyAvKiBMZWZ0IEp1c3RpZmllZCBtb2RlICovCistI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfRFNQX0EgICAgICAgIDQgLyogTCBkYXRhIE1TQiBhZnRlciBGUk0gTFJDICovCistI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfRFNQX0IgICAgICAgIDUgLyogTCBkYXRhIE1TQiBkdXJpbmcgRlJNIExSQyAqLworLSNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX0FDOTcgICAgICAgICA2IC8qIEFDOTcgKi8KKy0jZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9QRE0gICAgICAgICAgNyAvKiBQdWxzZSBkZW5zaXR5IG1vZHVsYXRpb24gKi8KKy0KKy0vKiBsZWZ0IGFuZCByaWdodCBqdXN0aWZpZWQgYWxzbyBrbm93biBhcyBNU0IgYW5kIExTQiByZXNwZWN0aXZlbHkgKi8KKy0jZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9NU0IgICAgICAgICAgU05EX1NPQ19EQUlfRk9STUFUX0xFRlRfSgorLSNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX0xTQiAgICAgICAgICBTTkRfU09DX0RBSV9GT1JNQVRfUklHSFRfSgorLQorLS8qIERBSSBsaW5rIGZsYWdzICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfTE5LX0ZMR0JJVF9TWU1NRVRSSUNfUkFURVMgICAgICAgICAoMSA8PCAwKQorLSNkZWZpbmUgU05EX1NPQ19UUExHX0xOS19GTEdCSVRfU1lNTUVUUklDX0NIQU5ORUxTICAgICAgKDEgPDwgMSkKKy0jZGVmaW5lIFNORF9TT0NfVFBMR19MTktfRkxHQklUX1NZTU1FVFJJQ19TQU1QTEVCSVRTICAgICgxIDw8IDIpCistI2RlZmluZSBTTkRfU09DX1RQTEdfTE5LX0ZMR0JJVF9WT0lDRV9XQUtFVVAgICAgICAgICAgICAoMSA8PCAzKQorLQorLS8qIERBSSB0b3BvbG9neSBCQ0xLIHBhcmFtZXRlcgorLSAqIEZvciB0aGUgYmFja3dhcmRzIGNhcGFiaWxpdHksIGJ5IGRlZmF1bHQgY29kZWMgaXMgYmNsayBtYXN0ZXIKKy0gKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19CQ0xLX0NNICAgICAgICAgMCAvKiBjb2RlYyBpcyBiY2xrIG1hc3RlciAqLworLSNkZWZpbmUgU05EX1NPQ19UUExHX0JDTEtfQ1MgICAgICAgICAxIC8qIGNvZGVjIGlzIGJjbGsgc2xhdmUgKi8KKy0KKy0vKiBEQUkgdG9wb2xvZ3kgRlNZTkMgcGFyYW1ldGVyCistICogRm9yIHRoZSBiYWNrd2FyZHMgY2FwYWJpbGl0eSwgYnkgZGVmYXVsdCBjb2RlYyBpcyBmc3luYyBtYXN0ZXIKKy0gKi8KKy0jZGVmaW5lIFNORF9TT0NfVFBMR19GU1lOQ19DTSAgICAgICAgIDAgLyogY29kZWMgaXMgZnN5bmMgbWFzdGVyICovCistI2RlZmluZSBTTkRfU09DX1RQTEdfRlNZTkNfQ1MgICAgICAgICAxIC8qIGNvZGVjIGlzIGZzeW5jIHNsYXZlICovCistCistLyoKKy0gKiBCbG9jayBIZWFkZXIuCistICogVGhpcyBoZWFkZXIgcHJlY2VkZXMgYWxsIG9iamVjdCBhbmQgb2JqZWN0IGFycmF5cyBiZWxvdy4KKy0gKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX2hkciB7CistCV9fbGUzMiBtYWdpYzsJCS8qIG1hZ2ljIG51bWJlciAqLworLQlfX2xlMzIgYWJpOwkJLyogQUJJIHZlcnNpb24gKi8KKy0JX19sZTMyIHZlcnNpb247CQkvKiBvcHRpb25hbCB2ZW5kb3Igc3BlY2lmaWMgdmVyc2lvbiBkZXRhaWxzICovCistCV9fbGUzMiB0eXBlOwkJLyogU05EX1NPQ19UUExHX1RZUEVfICovCistCV9fbGUzMiBzaXplOwkJLyogc2l6ZSBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQlfX2xlMzIgdmVuZG9yX3R5cGU7CS8qIG9wdGlvbmFsIHZlbmRvciBzcGVjaWZpYyB0eXBlIGluZm8gKi8KKy0JX19sZTMyIHBheWxvYWRfc2l6ZTsJLyogZGF0YSBieXRlcywgZXhjbHVkaW5nIHRoaXMgaGVhZGVyICovCistCV9fbGUzMiBpbmRleDsJCS8qIGlkZW50aWZpZXIgZm9yIGJsb2NrICovCistCV9fbGUzMiBjb3VudDsJCS8qIG51bWJlciBvZiBlbGVtZW50cyBpbiBibG9jayAqLworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyogdmVuZG9yIHR1cGxlIGZvciB1dWlkICovCistc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfdXVpZF9lbGVtIHsKKy0JX19sZTMyIHRva2VuOworLQljaGFyIHV1aWRbMTZdOworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyogdmVuZG9yIHR1cGxlIGZvciBhIGJvb2wvYnl0ZS9zaG9ydC93b3JkIHZhbHVlICovCistc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfdmFsdWVfZWxlbSB7CistCV9fbGUzMiB0b2tlbjsKKy0JX19sZTMyIHZhbHVlOworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyogdmVuZG9yIHR1cGxlIGZvciBzdHJpbmcgKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl9zdHJpbmdfZWxlbSB7CistCV9fbGUzMiB0b2tlbjsKKy0JY2hhciBzdHJpbmdbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfYXJyYXkgeworLQlfX2xlMzIgc2l6ZTsJLyogc2l6ZSBpbiBieXRlcyBvZiB0aGUgYXJyYXksIGluY2x1ZGluZyBhbGwgZWxlbWVudHMgKi8KKy0JX19sZTMyIHR5cGU7CS8qIFNORF9TT0NfVFBMR19UVVBMRV9UWVBFXyAqLworLQlfX2xlMzIgbnVtX2VsZW1zOwkvKiBudW1iZXIgb2YgZWxlbWVudHMgaW4gYXJyYXkgKi8KKy0JdW5pb24geworLQkJc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfdXVpZF9lbGVtIHV1aWRbMF07CistCQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl92YWx1ZV9lbGVtIHZhbHVlWzBdOworLQkJc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3Jfc3RyaW5nX2VsZW0gc3RyaW5nWzBdOworLQl9OworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBQcml2YXRlIGRhdGEuCistICogQWxsIHRvcG9sb2d5IG9iamVjdHMgbWF5IGhhdmUgcHJpdmF0ZSBkYXRhIHRoYXQgY2FuIGJlIHVzZWQgYnkgdGhlIGRyaXZlciBvcgorLSAqIGZpcm13YXJlLiBDb3JlIHdpbGwgaWdub3JlIHRoaXMgZGF0YS4KKy0gKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgeworLQlfX2xlMzIgc2l6ZTsJLyogaW4gYnl0ZXMgb2YgcHJpdmF0ZSBkYXRhICovCistCXVuaW9uIHsKKy0JCWNoYXIgZGF0YVswXTsKKy0JCXN0cnVjdCBzbmRfc29jX3RwbGdfdmVuZG9yX2FycmF5IGFycmF5WzBdOworLQl9OworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBLY29udHJvbCBUTFYgZGF0YS4KKy0gKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX3Rsdl9kYnNjYWxlIHsKKy0JX19sZTMyIG1pbjsKKy0JX19sZTMyIHN0ZXA7CistCV9fbGUzMiBtdXRlOworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistc3RydWN0IHNuZF9zb2NfdHBsZ19jdGxfdGx2IHsKKy0JX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCV9fbGUzMiB0eXBlOwkvKiBTTkRSVl9DVExfVExWVF8qLCB0eXBlIG9mIFRMViAqLworLQl1bmlvbiB7CistCQlfX2xlMzIgZGF0YVtTTkRfU09DX1RQTEdfVExWX1NJWkVdOworLQkJc3RydWN0IHNuZF9zb2NfdHBsZ190bHZfZGJzY2FsZSBzY2FsZTsKKy0JfTsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qCistICogS2NvbnRyb2wgY2hhbm5lbCBkYXRhCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19jaGFubmVsIHsKKy0JX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCV9fbGUzMiByZWc7CistCV9fbGUzMiBzaGlmdDsKKy0JX19sZTMyIGlkOwkvKiBJRCBtYXBzIHRvIExlZnQsIFJpZ2h0LCBMRkUgZXRjICovCistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIEdlbmVyaWNsIE9wZXJhdGlvbnMgSURzLCBmb3IgYmluZGluZyBLY29udHJvbCBvciBCeXRlcyBleHQgb3BzCistICogS2NvbnRyb2wgb3BzIG5lZWQgZ2V0L3B1dC9pbmZvLgorLSAqIEJ5dGVzIGV4dCBvcHMgbmVlZCBnZXQvcHV0LgorLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfaW9fb3BzIHsKKy0JX19sZTMyIGdldDsKKy0JX19sZTMyIHB1dDsKKy0JX19sZTMyIGluZm87CistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIGtjb250cm9sIGhlYWRlcgorLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfY3RsX2hkciB7CistCV9fbGUzMiBzaXplOwkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQlfX2xlMzIgdHlwZTsKKy0JY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JX19sZTMyIGFjY2VzczsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19pb19vcHMgb3BzOworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX2N0bF90bHYgdGx2OworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBTdHJlYW0gQ2FwYWJpbGl0aWVzCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW1fY2FwcyB7CistCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JX19sZTY0IGZvcm1hdHM7CS8qIHN1cHBvcnRlZCBmb3JtYXRzIFNORFJWX1BDTV9GTVRCSVRfKiAqLworLQlfX2xlMzIgcmF0ZXM7CQkvKiBzdXBwb3J0ZWQgcmF0ZXMgU05EUlZfUENNX1JBVEVfKiAqLworLQlfX2xlMzIgcmF0ZV9taW47CS8qIG1pbiByYXRlICovCistCV9fbGUzMiByYXRlX21heDsJLyogbWF4IHJhdGUgKi8KKy0JX19sZTMyIGNoYW5uZWxzX21pbjsJLyogbWluIGNoYW5uZWxzICovCistCV9fbGUzMiBjaGFubmVsc19tYXg7CS8qIG1heCBjaGFubmVscyAqLworLQlfX2xlMzIgcGVyaW9kc19taW47CS8qIG1pbiBudW1iZXIgb2YgcGVyaW9kcyAqLworLQlfX2xlMzIgcGVyaW9kc19tYXg7CS8qIG1heCBudW1iZXIgb2YgcGVyaW9kcyAqLworLQlfX2xlMzIgcGVyaW9kX3NpemVfbWluOwkvKiBtaW4gcGVyaW9kIHNpemUgYnl0ZXMgKi8KKy0JX19sZTMyIHBlcmlvZF9zaXplX21heDsJLyogbWF4IHBlcmlvZCBzaXplIGJ5dGVzICovCistCV9fbGUzMiBidWZmZXJfc2l6ZV9taW47CS8qIG1pbiBidWZmZXIgc2l6ZSBieXRlcyAqLworLQlfX2xlMzIgYnVmZmVyX3NpemVfbWF4OwkvKiBtYXggYnVmZmVyIHNpemUgYnl0ZXMgKi8KKy0JX19sZTMyIHNpZ19iaXRzOyAgICAgICAgLyogbnVtYmVyIG9mIGJpdHMgb2YgY29udGVudCAqLworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBGRSBvciBCRSBTdHJlYW0gY29uZmlndXJhdGlvbiBzdXBwb3J0ZWQgYnkgU1cvRlcKKy0gKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbSB7CistCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsgLyogTmFtZSBvZiB0aGUgc3RyZWFtICovCistCV9fbGU2NCBmb3JtYXQ7CQkvKiBTTkRSVl9QQ01fRk1UQklUXyogKi8KKy0JX19sZTMyIHJhdGU7CQkvKiBTTkRSVl9QQ01fUkFURV8qICovCistCV9fbGUzMiBwZXJpb2RfYnl0ZXM7CS8qIHNpemUgb2YgcGVyaW9kIGluIGJ5dGVzICovCistCV9fbGUzMiBidWZmZXJfYnl0ZXM7CS8qIHNpemUgb2YgYnVmZmVyIGluIGJ5dGVzICovCistCV9fbGUzMiBjaGFubmVsczsJLyogY2hhbm5lbHMgKi8KKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLQorLS8qCistICogRGVzY3JpYmVzIGEgcGh5c2ljYWwgbGluaydzIHJ1bnRpbWUgc3VwcG9ydGVkIGhhcmR3YXJlIGNvbmZpZywKKy0gKiBpLmUuIGhhcmR3YXJlIGF1ZGlvIGZvcm1hdHMuCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19od19jb25maWcgeworLQlfX2xlMzIgc2l6ZTsgICAgICAgICAgICAvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQlfX2xlMzIgaWQ7CQkvKiB1bmlxdWUgSUQgLSAtIHVzZWQgdG8gbWF0Y2ggKi8KKy0JX19sZTMyIGZtdDsJCS8qIFNORF9TT0NfREFJX0ZPUk1BVF8gZm9ybWF0IHZhbHVlICovCistCV9fdTggY2xvY2tfZ2F0ZWQ7CS8qIFNORF9TT0NfVFBMR19EQUlfQ0xLX0dBVEVfIHZhbHVlICovCistCV9fdTggaW52ZXJ0X2JjbGs7CS8qIDEgZm9yIGludmVydGVkIEJDTEssIDAgZm9yIG5vcm1hbCAqLworLQlfX3U4IGludmVydF9mc3luYzsJLyogMSBmb3IgaW52ZXJ0ZWQgZnJhbWUgY2xvY2ssIDAgZm9yIG5vcm1hbCAqLworLQlfX3U4IGJjbGtfbWFzdGVyOwkvKiBTTkRfU09DX1RQTEdfQkNMS18gdmFsdWUgKi8KKy0JX191OCBmc3luY19tYXN0ZXI7CS8qIFNORF9TT0NfVFBMR19GU1lOQ18gdmFsdWUgKi8KKy0JX191OCBtY2xrX2RpcmVjdGlvbjsgICAgLyogU05EX1NPQ19UUExHX01DTEtfIHZhbHVlICovCistCV9fbGUxNiByZXNlcnZlZDsJLyogZm9yIDMyYml0IGFsaWdubWVudCAqLworLQlfX2xlMzIgbWNsa19yYXRlOwkvKiBNQ0xLIG9yIFNZU0NMSyBmcmVxZW5jeSBpbiBIeiAqLworLQlfX2xlMzIgYmNsa19yYXRlOwkvKiBCQ0xLIGZyZXFlbmN5IGluIEh6ICovCistCV9fbGUzMiBmc3luY19yYXRlOwkvKiBmcmFtZSBjbG9jayBpbiBIeiAqLworLQlfX2xlMzIgdGRtX3Nsb3RzOwkvKiBudW1iZXIgb2YgVERNIHNsb3RzIGluIHVzZSAqLworLQlfX2xlMzIgdGRtX3Nsb3Rfd2lkdGg7CS8qIHdpZHRoIGluIGJpdHMgZm9yIGVhY2ggc2xvdCAqLworLQlfX2xlMzIgdHhfc2xvdHM7CS8qIGJpdCBtYXNrIGZvciBhY3RpdmUgVHggc2xvdHMgKi8KKy0JX19sZTMyIHJ4X3Nsb3RzOwkvKiBiaXQgbWFzayBmb3IgYWN0aXZlIFJ4IHNsb3RzICovCistCV9fbGUzMiB0eF9jaGFubmVsczsJLyogbnVtYmVyIG9mIFR4IGNoYW5uZWxzICovCistCV9fbGUzMiB0eF9jaGFubWFwW1NORF9TT0NfVFBMR19NQVhfQ0hBTl07IC8qIGFycmF5IG9mIHNsb3QgbnVtYmVyICovCistCV9fbGUzMiByeF9jaGFubmVsczsJLyogbnVtYmVyIG9mIFJ4IGNoYW5uZWxzICovCistCV9fbGUzMiByeF9jaGFubWFwW1NORF9TT0NfVFBMR19NQVhfQ0hBTl07IC8qIGFycmF5IG9mIHNsb3QgbnVtYmVyICovCistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIE1hbmlmZXN0LiBMaXN0IHRvdGFscyBmb3IgZWFjaCBwYXlsb2FkIHR5cGUuIE5vdCB1c2VkIGluIHBhcnNpbmcsIGJ1dCB3aWxsCistICogYmUgcGFzc2VkIHRvIHRoZSBjb21wb25lbnQgZHJpdmVyIGJlZm9yZSBhbnkgb3RoZXIgb2JqZWN0cyBpbiBvcmRlciBmb3IgYW55CistICogZ2xvYmFsIGNvbXBvbmVudCByZXNvdXJjZSBhbGxvY2F0aW9ucy4KKy0gKgorLSAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIG1hbmlmZXN0IDotCistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgfCAgMSB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX21hbmlmZXN0ICAgICAgfCAgMSB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19tYW5pZmVzdCB7CistCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JX19sZTMyIGNvbnRyb2xfZWxlbXM7CS8qIG51bWJlciBvZiBjb250cm9sIGVsZW1lbnRzICovCistCV9fbGUzMiB3aWRnZXRfZWxlbXM7CS8qIG51bWJlciBvZiB3aWRnZXQgZWxlbWVudHMgKi8KKy0JX19sZTMyIGdyYXBoX2VsZW1zOwkvKiBudW1iZXIgb2YgZ3JhcGggZWxlbWVudHMgKi8KKy0JX19sZTMyIHBjbV9lbGVtczsJLyogbnVtYmVyIG9mIFBDTSBlbGVtZW50cyAqLworLQlfX2xlMzIgZGFpX2xpbmtfZWxlbXM7CS8qIG51bWJlciBvZiBEQUkgbGluayBlbGVtZW50cyAqLworLQlfX2xlMzIgZGFpX2VsZW1zOwkvKiBudW1iZXIgb2YgcGh5c2ljYWwgREFJIGVsZW1lbnRzICovCistCV9fbGUzMiByZXNlcnZlZFsyMF07CS8qIHJlc2VydmVkIGZvciBuZXcgQUJJIGVsZW1lbnQgdHlwZXMgKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIE1peGVyIGtjb250cm9sLgorLSAqCistICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgbWl4ZXIga2NvbnRyb2wgOi0KKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxIHwKKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfbWl4ZXJfY29udHJvbCB8ICBOIHwKKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKy0gKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX21peGVyX2NvbnRyb2wgeworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX2N0bF9oZHIgaGRyOworLQlfX2xlMzIgc2l6ZTsJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JX19sZTMyIG1pbjsKKy0JX19sZTMyIG1heDsKKy0JX19sZTMyIHBsYXRmb3JtX21heDsKKy0JX19sZTMyIGludmVydDsKKy0JX19sZTMyIG51bV9jaGFubmVsczsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19jaGFubmVsIGNoYW5uZWxbU05EX1NPQ19UUExHX01BWF9DSEFOXTsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIEVudW1lcmF0ZWQga2NvbnRyb2wKKy0gKgorLSAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIGVudW0ga2NvbnRyb2wgOi0KKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxIHwKKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfZW51bV9jb250cm9sICB8ICBOIHwKKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKy0gKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX2VudW1fY29udHJvbCB7CistCXN0cnVjdCBzbmRfc29jX3RwbGdfY3RsX2hkciBoZHI7CistCV9fbGUzMiBzaXplOwkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQlfX2xlMzIgbnVtX2NoYW5uZWxzOworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX2NoYW5uZWwgY2hhbm5lbFtTTkRfU09DX1RQTEdfTUFYX0NIQU5dOworLQlfX2xlMzIgaXRlbXM7CistCV9fbGUzMiBtYXNrOworLQlfX2xlMzIgY291bnQ7CistCWNoYXIgdGV4dHNbU05EX1NPQ19UUExHX05VTV9URVhUU11bU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworLQlfX2xlMzIgdmFsdWVzW1NORF9TT0NfVFBMR19OVU1fVEVYVFMgKiBTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTiAvIDRdOworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qCistICogQnl0ZXMga2NvbnRyb2wKKy0gKgorLSAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIGJ5dGVzIGtjb250cm9sIDotCistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgfCAgMSB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2J5dGVzX2NvbnRyb2wgfCAgTiB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19ieXRlc19jb250cm9sIHsKKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19jdGxfaGRyIGhkcjsKKy0JX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCV9fbGUzMiBtYXg7CistCV9fbGUzMiBtYXNrOworLQlfX2xlMzIgYmFzZTsKKy0JX19sZTMyIG51bV9yZWdzOworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX2lvX29wcyBleHRfb3BzOworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qCistICogREFQTSBHcmFwaCBFbGVtZW50CistICoKKy0gKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBEQVBNIGdyYXBoIGVsZW1lbnRzIDotCistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICAgIHwgIDEgfAorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2RhcG1fZ3JhcGhfZWxlbSB8ICBOIHwKKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworLSAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfZGFwbV9ncmFwaF9lbGVtIHsKKy0JY2hhciBzaW5rW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JY2hhciBjb250cm9sW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JY2hhciBzb3VyY2VbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworLX0gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CistCistLyoKKy0gKiBEQVBNIFdpZGdldC4KKy0gKgorLSAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIERBUE0gd2lkZ2V0IDotCistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2hkciAgICAgICAgICAgICB8ICAxICB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2RhcG1fd2lkZ2V0ICAgICB8ICBOICB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICogfCAgIHN0cnVjdCBzbmRfc29jX3RwbGdfZW51bV9jb250cm9sICB8IDB8MSB8CistICogfCAgIHN0cnVjdCBzbmRfc29jX3RwbGdfbWl4ZXJfY29udHJvbCB8IDB8TiB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICoKKy0gKiBPcHRpb25hbCBlbnVtIG9yIG1peGVyIGNvbnRyb2wgY2FuIGJlIGFwcGVuZGVkIHRvIHRoZSBlbmQgb2YgZWFjaCB3aWRnZXQKKy0gKiBpbiB0aGUgYmxvY2suCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19kYXBtX3dpZGdldCB7CistCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JX19sZTMyIGlkOwkJLyogU05EX1NPQ19EQVBNX0NUTCAqLworLQljaGFyIG5hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworLQljaGFyIHNuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0KKy0JX19sZTMyIHJlZzsJCS8qIG5lZ2F0aXZlIHJlZyA9IG5vIGRpcmVjdCBkYXBtICovCistCV9fbGUzMiBzaGlmdDsJCS8qIGJpdHMgdG8gc2hpZnQgKi8KKy0JX19sZTMyIG1hc2s7CQkvKiBub24tc2hpZnRlZCBtYXNrICovCistCV9fbGUzMiBzdWJzZXE7CQkvKiBzb3J0IHdpdGhpbiB3aWRnZXQgdHlwZSAqLworLQlfX2xlMzIgaW52ZXJ0OwkJLyogaW52ZXJ0IHRoZSBwb3dlciBiaXQgKi8KKy0JX19sZTMyIGlnbm9yZV9zdXNwZW5kOwkvKiBrZXB0IGVuYWJsZWQgb3ZlciBzdXNwZW5kICovCistCV9fbGUxNiBldmVudF9mbGFnczsKKy0JX19sZTE2IGV2ZW50X3R5cGU7CistCV9fbGUzMiBudW1fa2NvbnRyb2xzOworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKy0JLyoKKy0JICoga2NvbnRyb2xzIHRoYXQgcmVsYXRlIHRvIHRoaXMgd2lkZ2V0CistCSAqIGZvbGxvdyBoZXJlIGFmdGVyIHdpZGdldCBwcml2YXRlIGRhdGEKKy0JICovCistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0KKy0vKgorLSAqIERlc2NyaWJlcyBTVy9GVyBzcGVjaWZpYyBmZWF0dXJlcyBvZiBQQ00gKEZFIERBSSAmIERBSSBsaW5rKS4KKy0gKgorLSAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIFBDTSA6LQorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxICB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19wY20gICAgICAgICAgIHwgIE4gIHwKKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19wY20geworLQlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCWNoYXIgcGNtX25hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworLQljaGFyIGRhaV9uYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JX19sZTMyIHBjbV9pZDsJCS8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggd2l0aCBEQUkgbGluayAqLworLQlfX2xlMzIgZGFpX2lkOwkJLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCAqLworLQlfX2xlMzIgcGxheWJhY2s7CS8qIHN1cHBvcnRzIHBsYXliYWNrIG1vZGUgKi8KKy0JX19sZTMyIGNhcHR1cmU7CQkvKiBzdXBwb3J0cyBjYXB0dXJlIG1vZGUgKi8KKy0JX19sZTMyIGNvbXByZXNzOwkvKiAxID0gY29tcHJlc3NlZDsgMCA9IFBDTSAqLworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbSBzdHJlYW1bU05EX1NPQ19UUExHX1NUUkVBTV9DT05GSUdfTUFYXTsgLyogZm9yIERBSSBsaW5rICovCistCV9fbGUzMiBudW1fc3RyZWFtczsJLyogbnVtYmVyIG9mIHN0cmVhbXMgKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW1fY2FwcyBjYXBzWzJdOyAvKiBwbGF5YmFjayBhbmQgY2FwdHVyZSBmb3IgREFJICovCistCV9fbGUzMiBmbGFnX21hc2s7ICAgICAgIC8qIGJpdG1hc2sgb2YgZmxhZ3MgdG8gY29uZmlndXJlICovCistCV9fbGUzMiBmbGFnczsgICAgICAgICAgIC8qIFNORF9TT0NfVFBMR19MTktfRkxHQklUXyogZmxhZyB2YWx1ZSAqLworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLQorLS8qCistICogRGVzY3JpYmVzIHRoZSBwaHlzaWNhbCBsaW5rIHJ1bnRpbWUgc3VwcG9ydGVkIGNvbmZpZ3Mgb3IgcGFyYW1zCistICoKKy0gKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBwaHlzaWNhbCBsaW5rIGNvbmZpZyA6LQorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxICB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19saW5rX2NvbmZpZyAgIHwgIE4gIHwKKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19saW5rX2NvbmZpZyB7CistCV9fbGUzMiBzaXplOyAgICAgICAgICAgIC8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCV9fbGUzMiBpZDsgICAgICAgICAgICAgIC8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggKi8KKy0JY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsgLyogbmFtZSAtIHVzZWQgdG8gbWF0Y2ggKi8KKy0JY2hhciBzdHJlYW1fbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07IC8qIHN0cmVhbSBuYW1lIC0gdXNlZCB0byBtYXRjaCAqLworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbSBzdHJlYW1bU05EX1NPQ19UUExHX1NUUkVBTV9DT05GSUdfTUFYXTsgLyogc3VwcG9ydGVkIGNvbmZpZ3MgcGxheWJhY2sgYW5kIGNhcHRydXJlICovCistCV9fbGUzMiBudW1fc3RyZWFtczsgICAgIC8qIG51bWJlciBvZiBzdHJlYW1zICovCistCXN0cnVjdCBzbmRfc29jX3RwbGdfaHdfY29uZmlnIGh3X2NvbmZpZ1tTTkRfU09DX1RQTEdfSFdfQ09ORklHX01BWF07IC8qIGh3IGNvbmZpZ3MgKi8KKy0JX19sZTMyIG51bV9od19jb25maWdzOyAgICAgICAgIC8qIG51bWJlciBvZiBodyBjb25maWdzICovCistCV9fbGUzMiBkZWZhdWx0X2h3X2NvbmZpZ19pZDsgICAvKiBkZWZhdWx0IGh3IGNvbmZpZyBJRCBmb3IgaW5pdCAqLworLQlfX2xlMzIgZmxhZ19tYXNrOyAgICAgICAvKiBiaXRtYXNrIG9mIGZsYWdzIHRvIGNvbmZpZ3VyZSAqLworLQlfX2xlMzIgZmxhZ3M7ICAgICAgICAgICAvKiBTTkRfU09DX1RQTEdfTE5LX0ZMR0JJVF8qIGZsYWcgdmFsdWUgKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CistfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKy0KKy0vKgorLSAqIERlc2NyaWJlcyBTVy9GVyBzcGVjaWZpYyBmZWF0dXJlcyBvZiBwaHlzaWNhbCBEQUkuCistICogSXQgY2FuIGJlIHVzZWQgdG8gY29uZmlndXJlIGJhY2tlbmQgREFJcyBmb3IgRFBDTS4KKy0gKgorLSAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIHBoeXNpY2FsIERBSSA6LQorLSAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKy0gKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxICB8CistICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworLSAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19kYWkgICAgICAgICAgIHwgIE4gIHwKKy0gKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCistICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19kYWkgeworLQlfX2xlMzIgc2l6ZTsgICAgICAgICAgICAvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQljaGFyIGRhaV9uYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsgLyogbmFtZSAtIHVzZWQgdG8gbWF0Y2ggKi8KKy0JX19sZTMyIGRhaV9pZDsgICAgICAgICAgLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCAqLworLQlfX2xlMzIgcGxheWJhY2s7ICAgICAgICAvKiBzdXBwb3J0cyBwbGF5YmFjayBtb2RlICovCistCV9fbGUzMiBjYXB0dXJlOyAgICAgICAgIC8qIHN1cHBvcnRzIGNhcHR1cmUgbW9kZSAqLworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbV9jYXBzIGNhcHNbMl07IC8qIHBsYXliYWNrIGFuZCBjYXB0dXJlIGZvciBEQUkgKi8KKy0JX19sZTMyIGZsYWdfbWFzazsgICAgICAgLyogYml0bWFzayBvZiBmbGFncyB0byBjb25maWd1cmUgKi8KKy0JX19sZTMyIGZsYWdzOyAgICAgICAgICAgLyogU05EX1NPQ19UUExHX0RBSV9GTEdCSVRfKiAqLworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKy19IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworLQorLS8qCistICogT2xkIHZlcnNpb24gb2YgQUJJIHN0cnVjdHMsIHN1cHBvcnRlZCBmb3IgYmFja3dhcmQgY29tcGF0aWJpbGl0eS4KKy0gKi8KKy0KKy0vKiBNYW5pZmVzdCB2NCAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfbWFuaWZlc3RfdjQgeworLQlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCistCV9fbGUzMiBjb250cm9sX2VsZW1zOwkvKiBudW1iZXIgb2YgY29udHJvbCBlbGVtZW50cyAqLworLQlfX2xlMzIgd2lkZ2V0X2VsZW1zOwkvKiBudW1iZXIgb2Ygd2lkZ2V0IGVsZW1lbnRzICovCistCV9fbGUzMiBncmFwaF9lbGVtczsJLyogbnVtYmVyIG9mIGdyYXBoIGVsZW1lbnRzICovCistCV9fbGUzMiBwY21fZWxlbXM7CS8qIG51bWJlciBvZiBQQ00gZWxlbWVudHMgKi8KKy0JX19sZTMyIGRhaV9saW5rX2VsZW1zOwkvKiBudW1iZXIgb2YgREFJIGxpbmsgZWxlbWVudHMgKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19wcml2YXRlIHByaXY7CistfSBfX3BhY2tlZDsKKy0KKy0vKiBTdHJlYW0gQ2FwYWJpbGl0aWVzIHY0ICovCistc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW1fY2Fwc192NCB7CistCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JX19sZTY0IGZvcm1hdHM7CS8qIHN1cHBvcnRlZCBmb3JtYXRzIFNORFJWX1BDTV9GTVRCSVRfKiAqLworLQlfX2xlMzIgcmF0ZXM7CQkvKiBzdXBwb3J0ZWQgcmF0ZXMgU05EUlZfUENNX1JBVEVfKiAqLworLQlfX2xlMzIgcmF0ZV9taW47CS8qIG1pbiByYXRlICovCistCV9fbGUzMiByYXRlX21heDsJLyogbWF4IHJhdGUgKi8KKy0JX19sZTMyIGNoYW5uZWxzX21pbjsJLyogbWluIGNoYW5uZWxzICovCistCV9fbGUzMiBjaGFubmVsc19tYXg7CS8qIG1heCBjaGFubmVscyAqLworLQlfX2xlMzIgcGVyaW9kc19taW47CS8qIG1pbiBudW1iZXIgb2YgcGVyaW9kcyAqLworLQlfX2xlMzIgcGVyaW9kc19tYXg7CS8qIG1heCBudW1iZXIgb2YgcGVyaW9kcyAqLworLQlfX2xlMzIgcGVyaW9kX3NpemVfbWluOwkvKiBtaW4gcGVyaW9kIHNpemUgYnl0ZXMgKi8KKy0JX19sZTMyIHBlcmlvZF9zaXplX21heDsJLyogbWF4IHBlcmlvZCBzaXplIGJ5dGVzICovCistCV9fbGUzMiBidWZmZXJfc2l6ZV9taW47CS8qIG1pbiBidWZmZXIgc2l6ZSBieXRlcyAqLworLQlfX2xlMzIgYnVmZmVyX3NpemVfbWF4OwkvKiBtYXggYnVmZmVyIHNpemUgYnl0ZXMgKi8KKy19IF9fcGFja2VkOworLQorLS8qIFBDTSB2NCAqLworLXN0cnVjdCBzbmRfc29jX3RwbGdfcGNtX3Y0IHsKKy0JX19sZTMyIHNpemU7CQkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworLQljaGFyIHBjbV9uYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKy0JY2hhciBkYWlfbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CistCV9fbGUzMiBwY21faWQ7CQkvKiB1bmlxdWUgSUQgLSB1c2VkIHRvIG1hdGNoIHdpdGggREFJIGxpbmsgKi8KKy0JX19sZTMyIGRhaV9pZDsJCS8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggKi8KKy0JX19sZTMyIHBsYXliYWNrOwkvKiBzdXBwb3J0cyBwbGF5YmFjayBtb2RlICovCistCV9fbGUzMiBjYXB0dXJlOwkJLyogc3VwcG9ydHMgY2FwdHVyZSBtb2RlICovCistCV9fbGUzMiBjb21wcmVzczsJLyogMSA9IGNvbXByZXNzZWQ7IDAgPSBQQ00gKi8KKy0Jc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW0gc3RyZWFtW1NORF9TT0NfVFBMR19TVFJFQU1fQ09ORklHX01BWF07IC8qIGZvciBEQUkgbGluayAqLworLQlfX2xlMzIgbnVtX3N0cmVhbXM7CS8qIG51bWJlciBvZiBzdHJlYW1zICovCistCXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtX2NhcHNfdjQgY2Fwc1syXTsgLyogcGxheWJhY2sgYW5kIGNhcHR1cmUgZm9yIERBSSAqLworLX0gX19wYWNrZWQ7CistCistLyogUGh5c2ljYWwgbGluayBjb25maWcgdjQgKi8KKy1zdHJ1Y3Qgc25kX3NvY190cGxnX2xpbmtfY29uZmlnX3Y0IHsKKy0JX19sZTMyIHNpemU7ICAgICAgICAgICAgLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKy0JX19sZTMyIGlkOyAgICAgICAgICAgICAgLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCAqLworLQlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbSBzdHJlYW1bU05EX1NPQ19UUExHX1NUUkVBTV9DT05GSUdfTUFYXTsgLyogc3VwcG9ydGVkIGNvbmZpZ3MgcGxheWJhY2sgYW5kIGNhcHRydXJlICovCistCV9fbGUzMiBudW1fc3RyZWFtczsgICAgIC8qIG51bWJlciBvZiBzdHJlYW1zICovCistfSBfX3BhY2tlZDsKKy0KKy0jZW5kaWYKKysjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2Fzb2MuaD4KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2Fzb3VuZC5oIGIvaW5jbHVkZS9zb3VuZC9hc291bmQuaAoraW5kZXggZGYxMTUzY2UuLjNiZTRkODUwIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9hc291bmQuaAorKysrIGIvaW5jbHVkZS9zb3VuZC9hc291bmQuaAorQEAgLTEsMTAzOCArMSBAQAorLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZSAqLworLS8qCistICogIEFkdmFuY2VkIExpbnV4IFNvdW5kIEFyY2hpdGVjdHVyZSAtIEFMU0EgLSBEcml2ZXIKKy0gKiAgQ29weXJpZ2h0IChjKSAxOTk0LTIwMDMgYnkgSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4sCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFicmFtbyBCYWduYXJhIDxhYnJhbW9AYWxzYS1wcm9qZWN0Lm9yZz4KKy0gKgorLSAqCistICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCistICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLSAqCistICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLSAqCistICogICBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZQorLSAqICAgYWxvbmcgd2l0aCB0aGlzIHByb2dyYW07IGlmIG5vdCwgd3JpdGUgdG8gdGhlIEZyZWUgU29mdHdhcmUKKy0gKiAgIEZvdW5kYXRpb24sIEluYy4sIDU5IFRlbXBsZSBQbGFjZSwgU3VpdGUgMzMwLCBCb3N0b24sIE1BICAwMjExMS0xMzA3IFVTQQorLSAqCistICovCistCistI2lmbmRlZiBfVUFQSV9fU09VTkRfQVNPVU5EX0gKKy0jZGVmaW5lIF9VQVBJX19TT1VORF9BU09VTkRfSAorLQorLSNpZiBkZWZpbmVkKF9fS0VSTkVMX18pIHx8IGRlZmluZWQoX19saW51eF9fKQorLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorLSNlbHNlCistI2luY2x1ZGUgPHN5cy9pb2N0bC5oPgorLSNlbmRpZgorLQorLSNpZm5kZWYgX19LRVJORUxfXworLSNpbmNsdWRlIDxzdGRsaWIuaD4KKy0jaW5jbHVkZSA8dGltZS5oPgorLSNlbmRpZgorLQorLS8qCistICogIHByb3RvY29sIHZlcnNpb24KKy0gKi8KKy0KKy0jZGVmaW5lIFNORFJWX1BST1RPQ09MX1ZFUlNJT04obWFqb3IsIG1pbm9yLCBzdWJtaW5vcikgKCgobWFqb3IpPDwxNil8KChtaW5vcik8PDgpfChzdWJtaW5vcikpCistI2RlZmluZSBTTkRSVl9QUk9UT0NPTF9NQUpPUih2ZXJzaW9uKSAoKCh2ZXJzaW9uKT4+MTYpJjB4ZmZmZikKKy0jZGVmaW5lIFNORFJWX1BST1RPQ09MX01JTk9SKHZlcnNpb24pICgoKHZlcnNpb24pPj44KSYweGZmKQorLSNkZWZpbmUgU05EUlZfUFJPVE9DT0xfTUlDUk8odmVyc2lvbikgKCh2ZXJzaW9uKSYweGZmKQorLSNkZWZpbmUgU05EUlZfUFJPVE9DT0xfSU5DT01QQVRJQkxFKGt2ZXJzaW9uLCB1dmVyc2lvbikgXAorLQkoU05EUlZfUFJPVE9DT0xfTUFKT1Ioa3ZlcnNpb24pICE9IFNORFJWX1BST1RPQ09MX01BSk9SKHV2ZXJzaW9uKSB8fCBcCistCSAoU05EUlZfUFJPVE9DT0xfTUFKT1Ioa3ZlcnNpb24pID09IFNORFJWX1BST1RPQ09MX01BSk9SKHV2ZXJzaW9uKSAmJiBcCistCSAgIFNORFJWX1BST1RPQ09MX01JTk9SKGt2ZXJzaW9uKSAhPSBTTkRSVl9QUk9UT0NPTF9NSU5PUih1dmVyc2lvbikpKQorLQorLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgRGlnaXRhbCBhdWRpbyBpbnRlcmZhY2UJCQkJCSAgICAqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy1zdHJ1Y3Qgc25kX2Flc19pZWM5NTggeworLQl1bnNpZ25lZCBjaGFyIHN0YXR1c1syNF07CS8qIEFFUy9JRUM5NTggY2hhbm5lbCBzdGF0dXMgYml0cyAqLworLQl1bnNpZ25lZCBjaGFyIHN1YmNvZGVbMTQ3XTsJLyogQUVTL0lFQzk1OCBzdWJjb2RlIGJpdHMgKi8KKy0JdW5zaWduZWQgY2hhciBwYWQ7CQkvKiBub3RoaW5nICovCistCXVuc2lnbmVkIGNoYXIgZGlnX3N1YmZyYW1lWzRdOwkvKiBBRVMvSUVDOTU4IHN1YmZyYW1lIGJpdHMgKi8KKy19OworLQorLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKiAgICAgICAgQ0VBLTg2MSBBdWRpbyBJbmZvRnJhbWUuIFVzZWQgaW4gSERNSSBhbmQgRGlzcGxheVBvcnQJCSAgICAqCistICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKy0gKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy1zdHJ1Y3Qgc25kX2NlYV84NjFfYXVkX2lmIHsKKy0JdW5zaWduZWQgY2hhciBkYjFfY3RfY2M7IC8qIGNvZGluZyB0eXBlIGFuZCBjaGFubmVsIGNvdW50ICovCistCXVuc2lnbmVkIGNoYXIgZGIyX3NmX3NzOyAvKiBzYW1wbGUgZnJlcXVlbmN5IGFuZCBzaXplICovCistCXVuc2lnbmVkIGNoYXIgZGIzOyAvKiBub3QgdXNlZCwgYWxsIHplcm9zICovCistCXVuc2lnbmVkIGNoYXIgZGI0X2NhOyAvKiBjaGFubmVsIGFsbG9jYXRpb24gY29kZSAqLworLQl1bnNpZ25lZCBjaGFyIGRiNV9kbWluaF9sc3Y7IC8qIGRvd25taXggaW5oaWJpdCAmIGxldmVsLXNoaXQgdmFsdWVzICovCistfTsKKy0KKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICogICAgICBTZWN0aW9uIGZvciBkcml2ZXIgaGFyZHdhcmUgZGVwZW5kZW50IGludGVyZmFjZSAtIC9kZXYvc25kL2h3PyAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLQorLSNkZWZpbmUgU05EUlZfSFdERVBfVkVSU0lPTgkJU05EUlZfUFJPVE9DT0xfVkVSU0lPTigxLCAwLCAxKQorLQorLWVudW0geworLQlTTkRSVl9IV0RFUF9JRkFDRV9PUEwyID0gMCwKKy0JU05EUlZfSFdERVBfSUZBQ0VfT1BMMywKKy0JU05EUlZfSFdERVBfSUZBQ0VfT1BMNCwKKy0JU05EUlZfSFdERVBfSUZBQ0VfU0IxNkNTUCwJLyogQ3JlYXRpdmUgU2lnbmFsIFByb2Nlc3NvciAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9FTVUxMEsxLAkvKiBGWDgwMTAgcHJvY2Vzc29yIGluIEVNVTEwSzEgY2hpcCAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9ZU1MyMjUsCS8qIFlhbWFoYSBGWCBwcm9jZXNzb3IgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfSUNTMjExNSwJLyogV2F2ZXRhYmxlIHN5bnRoICovCistCVNORFJWX0hXREVQX0lGQUNFX1NTQ0FQRSwJLyogRW5zb25pcSBTb3VuZFNjYXBlIElTQSBjYXJkIChNQzY4RUMwMDApICovCistCVNORFJWX0hXREVQX0lGQUNFX1ZYLAkJLyogRGlnaWdyYW0gVlggY2FyZHMgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfTUlYQVJULAkvKiBEaWdpZ3JhbSBtaVhhcnQgY2FyZHMgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfVVNYMlksCS8qIFRhc2NhbSBVUzEyMiwgVVMyMjQgJiBVUzQyOCB1c2IgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfRU1VWF9XQVZFVEFCTEUsIC8qIEVtdVggd2F2ZXRhYmxlICovCistCVNORFJWX0hXREVQX0lGQUNFX0JMVUVUT09USCwJLyogQmx1ZXRvb3RoIGF1ZGlvICovCistCVNORFJWX0hXREVQX0lGQUNFX1VTWDJZX1BDTSwJLyogVGFzY2FtIFVTMTIyLCBVUzIyNCAmIFVTNDI4IHJhd3VzYiBwY20gKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfUENYSFIsCS8qIERpZ2lncmFtIFBDWEhSICovCistCVNORFJWX0hXREVQX0lGQUNFX1NCX1JDLAkvKiBTQiBFeHRpZ3kvQXVkaWd5Mk5YIHJlbW90ZSBjb250cm9sICovCistCVNORFJWX0hXREVQX0lGQUNFX0hEQSwJCS8qIEhELWF1ZGlvICovCistCVNORFJWX0hXREVQX0lGQUNFX1VTQl9TVFJFQU0sCS8qIGRpcmVjdCBhY2Nlc3MgdG8gdXNiIHN0cmVhbSAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9GV19ESUNFLAkvKiBUQyBESUNFIEZpcmVXaXJlIGRldmljZSAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9GV19GSVJFV09SS1MsCS8qIEVjaG8gQXVkaW8gRmlyZXdvcmtzIGJhc2VkIGRldmljZSAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9GV19CRUJPQiwJLyogQnJpZGdlQ28gQmVCb0IgYmFzZWQgZGV2aWNlICovCistCVNORFJWX0hXREVQX0lGQUNFX0ZXX09YRlcsCS8qIE94Zm9yZCBPWEZXOTcwLzk3MSBiYXNlZCBkZXZpY2UgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfRldfRElHSTAwWCwJLyogRGlnaWRlc2lnbiBEaWdpIDAwMi8wMDMgZmFtaWx5ICovCistCVNORFJWX0hXREVQX0lGQUNFX0ZXX1RBU0NBTSwJLyogVEFTQ0FNIEZpcmVXaXJlIHNlcmllcyAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9MSU5FNiwJLyogTGluZTYgVVNCIHByb2Nlc3NvcnMgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfRldfTU9UVSwJLyogTU9UVSBGaXJlV2lyZSBzZXJpZXMgKi8KKy0JU05EUlZfSFdERVBfSUZBQ0VfRldfRklSRUZBQ0UsCS8qIFJNRSBGaXJlZmFjZSBzZXJpZXMgKi8KKy0KKy0JLyogRG9uJ3QgZm9yZ2V0IHRvIGNoYW5nZSB0aGUgZm9sbG93aW5nOiAqLworLQlTTkRSVl9IV0RFUF9JRkFDRV9MQVNUID0gU05EUlZfSFdERVBfSUZBQ0VfRldfRklSRUZBQ0UKKy19OworLQorLXN0cnVjdCBzbmRfaHdkZXBfaW5mbyB7CistCXVuc2lnbmVkIGludCBkZXZpY2U7CQkvKiBXUjogZGV2aWNlIG51bWJlciAqLworLQlpbnQgY2FyZDsJCQkvKiBSOiBjYXJkIG51bWJlciAqLworLQl1bnNpZ25lZCBjaGFyIGlkWzY0XTsJCS8qIElEICh1c2VyIHNlbGVjdGFibGUpICovCistCXVuc2lnbmVkIGNoYXIgbmFtZVs4MF07CQkvKiBod2RlcCBuYW1lICovCistCWludCBpZmFjZTsJCQkvKiBod2RlcCBpbnRlcmZhY2UgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgKi8KKy19OworLQorLS8qIGdlbmVyaWMgRFNQIGxvYWRlciAqLworLXN0cnVjdCBzbmRfaHdkZXBfZHNwX3N0YXR1cyB7CistCXVuc2lnbmVkIGludCB2ZXJzaW9uOwkJLyogUjogZHJpdmVyLXNwZWNpZmljIHZlcnNpb24gKi8KKy0JdW5zaWduZWQgY2hhciBpZFszMl07CQkvKiBSOiBkcml2ZXItc3BlY2lmaWMgSUQgc3RyaW5nICovCistCXVuc2lnbmVkIGludCBudW1fZHNwczsJCS8qIFI6IG51bWJlciBvZiBEU1AgaW1hZ2VzIHRvIHRyYW5zZmVyICovCistCXVuc2lnbmVkIGludCBkc3BfbG9hZGVkOwkvKiBSOiBiaXQgZmxhZ3MgaW5kaWNhdGluZyB0aGUgbG9hZGVkIERTUHMgKi8KKy0JdW5zaWduZWQgaW50IGNoaXBfcmVhZHk7CS8qIFI6IDEgPSBpbml0aWFsaXphdGlvbiBmaW5pc2hlZCAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzE2XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KKy19OworLQorLXN0cnVjdCBzbmRfaHdkZXBfZHNwX2ltYWdlIHsKKy0JdW5zaWduZWQgaW50IGluZGV4OwkJLyogVzogRFNQIGluZGV4ICovCistCXVuc2lnbmVkIGNoYXIgbmFtZVs2NF07CQkvKiBXOiBJRCAoZS5nLiBmaWxlIG5hbWUpICovCistCXVuc2lnbmVkIGNoYXIgX191c2VyICppbWFnZTsJLyogVzogYmluYXJ5IGltYWdlICovCistCXNpemVfdCBsZW5ndGg7CQkJLyogVzogc2l6ZSBvZiBpbWFnZSBpbiBieXRlcyAqLworLQl1bnNpZ25lZCBsb25nIGRyaXZlcl9kYXRhOwkvKiBXOiBkcml2ZXItc3BlY2lmaWMgZGF0YSAqLworLX07CistCistI2RlZmluZSBTTkRSVl9IV0RFUF9JT0NUTF9QVkVSU0lPTglfSU9SICgnSCcsIDB4MDAsIGludCkKKy0jZGVmaW5lIFNORFJWX0hXREVQX0lPQ1RMX0lORk8JCV9JT1IgKCdIJywgMHgwMSwgc3RydWN0IHNuZF9od2RlcF9pbmZvKQorLSNkZWZpbmUgU05EUlZfSFdERVBfSU9DVExfRFNQX1NUQVRVUwlfSU9SKCdIJywgMHgwMiwgc3RydWN0IHNuZF9od2RlcF9kc3Bfc3RhdHVzKQorLSNkZWZpbmUgU05EUlZfSFdERVBfSU9DVExfRFNQX0xPQUQJX0lPVygnSCcsIDB4MDMsIHN0cnVjdCBzbmRfaHdkZXBfZHNwX2ltYWdlKQorLQorLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgICAgICAgICAgIERpZ2l0YWwgQXVkaW8gKFBDTSkgaW50ZXJmYWNlIC0gL2Rldi9zbmQvcGNtPz8gICAgICAgICAgICAgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0jZGVmaW5lIFNORFJWX1BDTV9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDIsIDAsIDE0KQorLQorLXR5cGVkZWYgdW5zaWduZWQgbG9uZyBzbmRfcGNtX3VmcmFtZXNfdDsKKy10eXBlZGVmIHNpZ25lZCBsb25nIHNuZF9wY21fc2ZyYW1lc190OworLQorLWVudW0geworLQlTTkRSVl9QQ01fQ0xBU1NfR0VORVJJQyA9IDAsCS8qIHN0YW5kYXJkIG1vbm8gb3Igc3RlcmVvIGRldmljZSAqLworLQlTTkRSVl9QQ01fQ0xBU1NfTVVMVEksCQkvKiBtdWx0aWNoYW5uZWwgZGV2aWNlICovCistCVNORFJWX1BDTV9DTEFTU19NT0RFTSwJCS8qIHNvZnR3YXJlIG1vZGVtIGNsYXNzICovCistCVNORFJWX1BDTV9DTEFTU19ESUdJVElaRVIsCS8qIGRpZ2l0aXplciBjbGFzcyAqLworLQkvKiBEb24ndCBmb3JnZXQgdG8gY2hhbmdlIHRoZSBmb2xsb3dpbmc6ICovCistCVNORFJWX1BDTV9DTEFTU19MQVNUID0gU05EUlZfUENNX0NMQVNTX0RJR0lUSVpFUiwKKy19OworLQorLWVudW0geworLQlTTkRSVl9QQ01fU1VCQ0xBU1NfR0VORVJJQ19NSVggPSAwLCAvKiBtb25vIG9yIHN0ZXJlbyBzdWJkZXZpY2VzIGFyZSBtaXhlZCB0b2dldGhlciAqLworLQlTTkRSVl9QQ01fU1VCQ0xBU1NfTVVMVElfTUlYLAkvKiBtdWx0aWNoYW5uZWwgc3ViZGV2aWNlcyBhcmUgbWl4ZWQgdG9nZXRoZXIgKi8KKy0JLyogRG9uJ3QgZm9yZ2V0IHRvIGNoYW5nZSB0aGUgZm9sbG93aW5nOiAqLworLQlTTkRSVl9QQ01fU1VCQ0xBU1NfTEFTVCA9IFNORFJWX1BDTV9TVUJDTEFTU19NVUxUSV9NSVgsCistfTsKKy0KKy1lbnVtIHsKKy0JU05EUlZfUENNX1NUUkVBTV9QTEFZQkFDSyA9IDAsCistCVNORFJWX1BDTV9TVFJFQU1fQ0FQVFVSRSwKKy0JU05EUlZfUENNX1NUUkVBTV9MQVNUID0gU05EUlZfUENNX1NUUkVBTV9DQVBUVVJFLAorLX07CistCistdHlwZWRlZiBpbnQgX19iaXR3aXNlIHNuZF9wY21fYWNjZXNzX3Q7CistI2RlZmluZQlTTkRSVl9QQ01fQUNDRVNTX01NQVBfSU5URVJMRUFWRUQJKChfX2ZvcmNlIHNuZF9wY21fYWNjZXNzX3QpIDApIC8qIGludGVybGVhdmVkIG1tYXAgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9BQ0NFU1NfTU1BUF9OT05JTlRFUkxFQVZFRAkoKF9fZm9yY2Ugc25kX3BjbV9hY2Nlc3NfdCkgMSkgLyogbm9uaW50ZXJsZWF2ZWQgbW1hcCAqLworLSNkZWZpbmUJU05EUlZfUENNX0FDQ0VTU19NTUFQX0NPTVBMRVgJCSgoX19mb3JjZSBzbmRfcGNtX2FjY2Vzc190KSAyKSAvKiBjb21wbGV4IG1tYXAgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9BQ0NFU1NfUldfSU5URVJMRUFWRUQJCSgoX19mb3JjZSBzbmRfcGNtX2FjY2Vzc190KSAzKSAvKiByZWFkaS93cml0ZWkgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9BQ0NFU1NfUldfTk9OSU5URVJMRUFWRUQJKChfX2ZvcmNlIHNuZF9wY21fYWNjZXNzX3QpIDQpIC8qIHJlYWRuL3dyaXRlbiAqLworLSNkZWZpbmUJU05EUlZfUENNX0FDQ0VTU19MQVNUCQlTTkRSVl9QQ01fQUNDRVNTX1JXX05PTklOVEVSTEVBVkVECistCistdHlwZWRlZiBpbnQgX19iaXR3aXNlIHNuZF9wY21fZm9ybWF0X3Q7CistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1M4CSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAwKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VOAkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMSkKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzE2X0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMTZfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDMpCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UxNl9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNCkKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTE2X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA1KQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjRfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDYpIC8qIGxvdyB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjRfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDcpIC8qIGxvdyB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjRfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDgpIC8qIGxvdyB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjRfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDkpIC8qIGxvdyB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMzJfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDEwKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMzJfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDExKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMzJfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDEyKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMzJfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDEzKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GTE9BVF9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTQpIC8qIDQtYnl0ZSBmbG9hdCwgSUVFRS03NTQgMzItYml0LCByYW5nZSAtMS4wIHRvIDEuMCAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GTE9BVF9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTUpIC8qIDQtYnl0ZSBmbG9hdCwgSUVFRS03NTQgMzItYml0LCByYW5nZSAtMS4wIHRvIDEuMCAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GTE9BVDY0X0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxNikgLyogOC1ieXRlIGZsb2F0LCBJRUVFLTc1NCA2NC1iaXQsIHJhbmdlIC0xLjAgdG8gMS4wICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUNjRfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDE3KSAvKiA4LWJ5dGUgZmxvYXQsIElFRUUtNzU0IDY0LWJpdCwgcmFuZ2UgLTEuMCB0byAxLjAgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0xFICgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxOCkgLyogSUVDLTk1OCBzdWJmcmFtZSwgTGl0dGxlIEVuZGlhbiAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9JRUM5NThfU1VCRlJBTUVfQkUgKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDE5KSAvKiBJRUMtOTU4IHN1YmZyYW1lLCBCaWcgRW5kaWFuICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX01VX0xBVwkJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDIwKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9BX0xBVwkJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDIxKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9JTUFfQURQQ00JKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDIyKQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9NUEVHCQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjMpCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0dTTQkJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDI0KQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjBfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDI1KSAvKiBpbiBmb3VyIGJ5dGVzLCBMU0IganVzdGlmaWVkICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyMF9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjYpIC8qIGluIGZvdXIgYnl0ZXMsIExTQiBqdXN0aWZpZWQgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTIwX0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyNykgLyogaW4gZm91ciBieXRlcywgTFNCIGp1c3RpZmllZCAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjBfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDI4KSAvKiBpbiBmb3VyIGJ5dGVzLCBMU0IganVzdGlmaWVkICovCistLyogZ2FwIGluIHRoZSBudW1iZXJpbmcgZm9yIGEgZnV0dXJlIHN0YW5kYXJkIGxpbmVhciBmb3JtYXQgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfU1BFQ0lBTAkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzEpCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyNF8zTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDMyKQkvKiBpbiB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjRfM0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzMykJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTI0XzNMRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzQpCS8qIGluIHRocmVlIGJ5dGVzICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyNF8zQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDM1KQkvKiBpbiB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjBfM0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzNikJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzIwXzNCRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzcpCS8qIGluIHRocmVlIGJ5dGVzICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyMF8zTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDM4KQkvKiBpbiB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjBfM0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzOSkJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzE4XzNMRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDApCS8qIGluIHRocmVlIGJ5dGVzICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MxOF8zQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQxKQkvKiBpbiB0aHJlZSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMThfM0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0MikJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTE4XzNCRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDMpCS8qIGluIHRocmVlIGJ5dGVzICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0c3MjNfMjQJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQ0KSAvKiA4IHNhbXBsZXMgaW4gMyBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9HNzIzXzI0XzFCCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0NSkgLyogMSBzYW1wbGUgaW4gMSBieXRlICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0c3MjNfNDAJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQ2KSAvKiA4IFNhbXBsZXMgaW4gNSBieXRlcyAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9HNzIzXzQwXzFCCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0NykgLyogMSBzYW1wbGUgaW4gMSBieXRlICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0RTRF9VOAkJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQ4KSAvKiBEU0QsIDEtYnl0ZSBzYW1wbGVzIERTRCAoeDgpICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0RTRF9VMTZfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQ5KSAvKiBEU0QsIDItYnl0ZSBzYW1wbGVzIERTRCAoeDE2KSwgbGl0dGxlIGVuZGlhbiAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTMyX0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA1MCkgLyogRFNELCA0LWJ5dGUgc2FtcGxlcyBEU0QgKHgzMiksIGxpdHRsZSBlbmRpYW4gKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRFNEX1UxNl9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNTEpIC8qIERTRCwgMi1ieXRlIHNhbXBsZXMgRFNEICh4MTYpLCBiaWcgZW5kaWFuICovCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0RTRF9VMzJfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDUyKSAvKiBEU0QsIDQtYnl0ZSBzYW1wbGVzIERTRCAoeDMyKSwgYmlnIGVuZGlhbiAqLworLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9MQVNUCQlTTkRSVl9QQ01fRk9STUFUX0RTRF9VMzJfQkUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRklSU1QJCVNORFJWX1BDTV9GT1JNQVRfUzgKKy0KKy0jaWZkZWYgU05EUlZfTElUVExFX0VORElBTgorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMTYJCVNORFJWX1BDTV9GT1JNQVRfUzE2X0xFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UxNgkJU05EUlZfUENNX0ZPUk1BVF9VMTZfTEUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzI0CQlTTkRSVl9QQ01fRk9STUFUX1MyNF9MRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjQJCVNORFJWX1BDTV9GT1JNQVRfVTI0X0xFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MzMgkJU05EUlZfUENNX0ZPUk1BVF9TMzJfTEUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTMyCQlTTkRSVl9QQ01fRk9STUFUX1UzMl9MRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GTE9BVAkJU05EUlZfUENNX0ZPUk1BVF9GTE9BVF9MRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GTE9BVDY0CVNORFJWX1BDTV9GT1JNQVRfRkxPQVQ2NF9MRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9JRUM5NThfU1VCRlJBTUUgU05EUlZfUENNX0ZPUk1BVF9JRUM5NThfU1VCRlJBTUVfTEUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzIwCQlTTkRSVl9QQ01fRk9STUFUX1MyMF9MRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjAJCVNORFJWX1BDTV9GT1JNQVRfVTIwX0xFCistI2VuZGlmCistI2lmZGVmIFNORFJWX0JJR19FTkRJQU4KKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzE2CQlTTkRSVl9QQ01fRk9STUFUX1MxNl9CRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMTYJCVNORFJWX1BDTV9GT1JNQVRfVTE2X0JFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyNAkJU05EUlZfUENNX0ZPUk1BVF9TMjRfQkUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTI0CQlTTkRSVl9QQ01fRk9STUFUX1UyNF9CRQorLSNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMzIJCVNORFJWX1BDTV9GT1JNQVRfUzMyX0JFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UzMgkJU05EUlZfUENNX0ZPUk1BVF9VMzJfQkUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVQJCVNORFJWX1BDTV9GT1JNQVRfRkxPQVRfQkUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVQ2NAlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUNjRfQkUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FIFNORFJWX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0JFCistI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyMAkJU05EUlZfUENNX0ZPUk1BVF9TMjBfQkUKKy0jZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTIwCQlTTkRSVl9QQ01fRk9STUFUX1UyMF9CRQorLSNlbmRpZgorLQorLXR5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfcGNtX3N1YmZvcm1hdF90OworLSNkZWZpbmUJU05EUlZfUENNX1NVQkZPUk1BVF9TVEQJCSgoX19mb3JjZSBzbmRfcGNtX3N1YmZvcm1hdF90KSAwKQorLSNkZWZpbmUJU05EUlZfUENNX1NVQkZPUk1BVF9MQVNUCVNORFJWX1BDTV9TVUJGT1JNQVRfU1RECistCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19NTUFQCQkweDAwMDAwMDAxCS8qIGhhcmR3YXJlIHN1cHBvcnRzIG1tYXAgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX01NQVBfVkFMSUQJMHgwMDAwMDAwMgkvKiBwZXJpb2QgZGF0YSBhcmUgdmFsaWQgZHVyaW5nIHRyYW5zZmVyICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19ET1VCTEUJCTB4MDAwMDAwMDQJLyogRG91YmxlIGJ1ZmZlcmluZyBuZWVkZWQgZm9yIFBDTSBzdGFydC9zdG9wICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19CQVRDSAkJMHgwMDAwMDAxMAkvKiBkb3VibGUgYnVmZmVyaW5nICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19TWU5DX0FQUExQVFIJMHgwMDAwMDAyMAkvKiBuZWVkIHRoZSBleHBsaWNpdCBzeW5jIG9mIGFwcGxfcHRyIHVwZGF0ZSAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fSU5URVJMRUFWRUQJMHgwMDAwMDEwMAkvKiBjaGFubmVscyBhcmUgaW50ZXJsZWF2ZWQgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX05PTklOVEVSTEVBVkVECTB4MDAwMDAyMDAJLyogY2hhbm5lbHMgYXJlIG5vdCBpbnRlcmxlYXZlZCAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fQ09NUExFWAkJMHgwMDAwMDQwMAkvKiBjb21wbGV4IGZyYW1lIG9yZ2FuaXphdGlvbiAobW1hcCBvbmx5KSAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fQkxPQ0tfVFJBTlNGRVIJMHgwMDAxMDAwMAkvKiBoYXJkd2FyZSB0cmFuc2ZlciBibG9jayBvZiBzYW1wbGVzICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19PVkVSUkFOR0UJMHgwMDAyMDAwMAkvKiBoYXJkd2FyZSBzdXBwb3J0cyBBREMgKGNhcHR1cmUpIG92ZXJyYW5nZSBkZXRlY3Rpb24gKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX1JFU1VNRQkJMHgwMDA0MDAwMAkvKiBoYXJkd2FyZSBzdXBwb3J0cyBzdHJlYW0gcmVzdW1lIGFmdGVyIHN1c3BlbmQgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX1BBVVNFCQkweDAwMDgwMDAwCS8qIHBhdXNlIGlvY3RsIGlzIHN1cHBvcnRlZCAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fSEFMRl9EVVBMRVgJMHgwMDEwMDAwMAkvKiBvbmx5IGhhbGYgZHVwbGV4ICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19KT0lOVF9EVVBMRVgJMHgwMDIwMDAwMAkvKiBwbGF5YmFjayBhbmQgY2FwdHVyZSBzdHJlYW0gYXJlIHNvbWV3aGF0IGNvcnJlbGF0ZWQgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX1NZTkNfU1RBUlQJMHgwMDQwMDAwMAkvKiBwY20gc3VwcG9ydCBzb21lIGtpbmQgb2Ygc3luYyBnbyAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fTk9fUEVSSU9EX1dBS0VVUAkweDAwODAwMDAwCS8qIHBlcmlvZCB3YWtldXAgY2FuIGJlIGRpc2FibGVkICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19IQVNfV0FMTF9DTE9DSyAgIDB4MDEwMDAwMDAgICAgICAvKiAoRGVwcmVjYXRlZCloYXMgYXVkaW8gd2FsbCBjbG9jayBmb3IgYXVkaW8vc3lzdGVtIHRpbWUgc3luYyAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fSEFTX0xJTktfQVRJTUUgICAgICAgICAgICAgIDB4MDEwMDAwMDAgIC8qIHJlcG9ydCBoYXJkd2FyZSBsaW5rIGF1ZGlvIHRpbWUsIHJlc2V0IG9uIHN0YXJ0dXAgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX0hBU19MSU5LX0FCU09MVVRFX0FUSU1FICAgICAweDAyMDAwMDAwICAvKiByZXBvcnQgYWJzb2x1dGUgaGFyZHdhcmUgbGluayBhdWRpbyB0aW1lLCBub3QgcmVzZXQgb24gc3RhcnR1cCAqLworLSNkZWZpbmUgU05EUlZfUENNX0lORk9fSEFTX0xJTktfRVNUSU1BVEVEX0FUSU1FICAgIDB4MDQwMDAwMDAgIC8qIHJlcG9ydCBlc3RpbWF0ZWQgbGluayBhdWRpbyB0aW1lICovCistI2RlZmluZSBTTkRSVl9QQ01fSU5GT19IQVNfTElOS19TWU5DSFJPTklaRURfQVRJTUUgMHgwODAwMDAwMCAgLyogcmVwb3J0IHN5bmNocm9uaXplZCBhdWRpby9zeXN0ZW0gdGltZSAqLworLQorLSNkZWZpbmUgU05EUlZfUENNX0lORk9fRFJBSU5fVFJJR0dFUgkweDQwMDAwMDAwCQkvKiBpbnRlcm5hbCBrZXJuZWwgZmxhZyAtIHRyaWdnZXIgaW4gZHJhaW4gKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9JTkZPX0ZJRk9fSU5fRlJBTUVTCTB4ODAwMDAwMDAJLyogaW50ZXJuYWwga2VybmVsIGZsYWcgLSBGSUZPIHNpemUgaXMgaW4gZnJhbWVzICovCistCistCistCistdHlwZWRlZiBpbnQgX19iaXR3aXNlIHNuZF9wY21fc3RhdGVfdDsKKy0jZGVmaW5lCVNORFJWX1BDTV9TVEFURV9PUEVOCQkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSAwKSAvKiBzdHJlYW0gaXMgb3BlbiAqLworLSNkZWZpbmUJU05EUlZfUENNX1NUQVRFX1NFVFVQCQkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSAxKSAvKiBzdHJlYW0gaGFzIGEgc2V0dXAgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9TVEFURV9QUkVQQVJFRAkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSAyKSAvKiBzdHJlYW0gaXMgcmVhZHkgdG8gc3RhcnQgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9TVEFURV9SVU5OSU5HCQkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSAzKSAvKiBzdHJlYW0gaXMgcnVubmluZyAqLworLSNkZWZpbmUJU05EUlZfUENNX1NUQVRFX1hSVU4JCSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDQpIC8qIHN0cmVhbSByZWFjaGVkIGFuIHhydW4gKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9TVEFURV9EUkFJTklORwkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSA1KSAvKiBzdHJlYW0gaXMgZHJhaW5pbmcgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9TVEFURV9QQVVTRUQJCSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDYpIC8qIHN0cmVhbSBpcyBwYXVzZWQgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9TVEFURV9TVVNQRU5ERUQJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgNykgLyogaGFyZHdhcmUgaXMgc3VzcGVuZGVkICovCistI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfRElTQ09OTkVDVEVECSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDgpIC8qIGhhcmR3YXJlIGlzIGRpc2Nvbm5lY3RlZCAqLworLSNkZWZpbmUJU05EUlZfUENNX1NUQVRFX0xBU1QJCVNORFJWX1BDTV9TVEFURV9ESVNDT05ORUNURUQKKy0KKy1lbnVtIHsKKy0JU05EUlZfUENNX01NQVBfT0ZGU0VUX0RBVEEgPSAweDAwMDAwMDAwLAorLQlTTkRSVl9QQ01fTU1BUF9PRkZTRVRfU1RBVFVTID0gMHg4MDAwMDAwMCwKKy0JU05EUlZfUENNX01NQVBfT0ZGU0VUX0NPTlRST0wgPSAweDgxMDAwMDAwLAorLX07CistCistdW5pb24gc25kX3BjbV9zeW5jX2lkIHsKKy0JdW5zaWduZWQgY2hhciBpZFsxNl07CistCXVuc2lnbmVkIHNob3J0IGlkMTZbOF07CistCXVuc2lnbmVkIGludCBpZDMyWzRdOworLX07CistCistc3RydWN0IHNuZF9wY21faW5mbyB7CistCXVuc2lnbmVkIGludCBkZXZpY2U7CQkvKiBSTy9XUiAoY29udHJvbCk6IGRldmljZSBudW1iZXIgKi8KKy0JdW5zaWduZWQgaW50IHN1YmRldmljZTsJCS8qIFJPL1dSIChjb250cm9sKTogc3ViZGV2aWNlIG51bWJlciAqLworLQlpbnQgc3RyZWFtOwkJCS8qIFJPL1dSIChjb250cm9sKTogc3RyZWFtIGRpcmVjdGlvbiAqLworLQlpbnQgY2FyZDsJCQkvKiBSOiBjYXJkIG51bWJlciAqLworLQl1bnNpZ25lZCBjaGFyIGlkWzY0XTsJCS8qIElEICh1c2VyIHNlbGVjdGFibGUpICovCistCXVuc2lnbmVkIGNoYXIgbmFtZVs4MF07CQkvKiBuYW1lIG9mIHRoaXMgZGV2aWNlICovCistCXVuc2lnbmVkIGNoYXIgc3VibmFtZVszMl07CS8qIHN1YmRldmljZSBuYW1lICovCistCWludCBkZXZfY2xhc3M7CQkJLyogU05EUlZfUENNX0NMQVNTXyogKi8KKy0JaW50IGRldl9zdWJjbGFzczsJCS8qIFNORFJWX1BDTV9TVUJDTEFTU18qICovCistCXVuc2lnbmVkIGludCBzdWJkZXZpY2VzX2NvdW50OworLQl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlc19hdmFpbDsKKy0JdW5pb24gc25kX3BjbV9zeW5jX2lkIHN5bmM7CS8qIGhhcmR3YXJlIHN5bmNocm9uaXphdGlvbiBJRCAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZS4uLiAqLworLX07CistCistdHlwZWRlZiBpbnQgc25kX3BjbV9od19wYXJhbV90OworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0FDQ0VTUwkwCS8qIEFjY2VzcyB0eXBlICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fRk9STUFUCTEJLyogRm9ybWF0ICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fU1VCRk9STUFUCTIJLyogU3ViZm9ybWF0ICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fRklSU1RfTUFTSwlTTkRSVl9QQ01fSFdfUEFSQU1fQUNDRVNTCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fTEFTVF9NQVNLCVNORFJWX1BDTV9IV19QQVJBTV9TVUJGT1JNQVQKKy0KKy0jZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9TQU1QTEVfQklUUwk4CS8qIEJpdHMgcGVyIHNhbXBsZSAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0ZSQU1FX0JJVFMJOQkvKiBCaXRzIHBlciBmcmFtZSAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0NIQU5ORUxTCTEwCS8qIENoYW5uZWxzICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fUkFURQkJMTEJLyogQXBwcm94IHJhdGUgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RfVElNRQkxMgkvKiBBcHByb3ggZGlzdGFuY2UgYmV0d2VlbgorLQkJCQkJCSAqIGludGVycnVwdHMgaW4gdXMKKy0JCQkJCQkgKi8KKy0jZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RfU0laRQkxMwkvKiBBcHByb3ggZnJhbWVzIGJldHdlZW4KKy0JCQkJCQkgKiBpbnRlcnJ1cHRzCistCQkJCQkJICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fUEVSSU9EX0JZVEVTCTE0CS8qIEFwcHJveCBieXRlcyBiZXR3ZWVuCistCQkJCQkJICogaW50ZXJydXB0cworLQkJCQkJCSAqLworLSNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1BFUklPRFMJMTUJLyogQXBwcm94IGludGVycnVwdHMgcGVyCistCQkJCQkJICogYnVmZmVyCistCQkJCQkJICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fQlVGRkVSX1RJTUUJMTYJLyogQXBwcm94IGR1cmF0aW9uIG9mIGJ1ZmZlcgorLQkJCQkJCSAqIGluIHVzCistCQkJCQkJICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fQlVGRkVSX1NJWkUJMTcJLyogU2l6ZSBvZiBidWZmZXIgaW4gZnJhbWVzICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fQlVGRkVSX0JZVEVTCTE4CS8qIFNpemUgb2YgYnVmZmVyIGluIGJ5dGVzICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fVElDS19USU1FCTE5CS8qIEFwcHJveCB0aWNrIGR1cmF0aW9uIGluIHVzICovCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fRklSU1RfSU5URVJWQUwJU05EUlZfUENNX0hXX1BBUkFNX1NBTVBMRV9CSVRTCistI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fTEFTVF9JTlRFUlZBTAlTTkRSVl9QQ01fSFdfUEFSQU1fVElDS19USU1FCistCistI2RlZmluZSBTTkRSVl9QQ01fSFdfUEFSQU1TX05PUkVTQU1QTEUJKDE8PDApCS8qIGF2b2lkIHJhdGUgcmVzYW1wbGluZyAqLworLSNkZWZpbmUgU05EUlZfUENNX0hXX1BBUkFNU19FWFBPUlRfQlVGRkVSCSgxPDwxKQkvKiBleHBvcnQgYnVmZmVyICovCistI2RlZmluZSBTTkRSVl9QQ01fSFdfUEFSQU1TX05PX1BFUklPRF9XQUtFVVAJKDE8PDIpCS8qIGRpc2FibGUgcGVyaW9kIHdha2V1cHMgKi8KKy0KKy1zdHJ1Y3Qgc25kX2ludGVydmFsIHsKKy0JdW5zaWduZWQgaW50IG1pbiwgbWF4OworLQl1bnNpZ25lZCBpbnQgb3Blbm1pbjoxLAorLQkJICAgICBvcGVubWF4OjEsCistCQkgICAgIGludGVnZXI6MSwKKy0JCSAgICAgZW1wdHk6MTsKKy19OworLQorLSNkZWZpbmUgU05EUlZfTUFTS19NQVgJMjU2CistCistc3RydWN0IHNuZF9tYXNrIHsKKy0JX191MzIgYml0c1soU05EUlZfTUFTS19NQVgrMzEpLzMyXTsKKy19OworLQorLXN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcyB7CistCXVuc2lnbmVkIGludCBmbGFnczsKKy0Jc3RydWN0IHNuZF9tYXNrIG1hc2tzW1NORFJWX1BDTV9IV19QQVJBTV9MQVNUX01BU0sgLQorLQkJCSAgICAgICBTTkRSVl9QQ01fSFdfUEFSQU1fRklSU1RfTUFTSyArIDFdOworLQlzdHJ1Y3Qgc25kX21hc2sgbXJlc1s1XTsJLyogcmVzZXJ2ZWQgbWFza3MgKi8KKy0Jc3RydWN0IHNuZF9pbnRlcnZhbCBpbnRlcnZhbHNbU05EUlZfUENNX0hXX1BBUkFNX0xBU1RfSU5URVJWQUwgLQorLQkJCQkgICAgICAgIFNORFJWX1BDTV9IV19QQVJBTV9GSVJTVF9JTlRFUlZBTCArIDFdOworLQlzdHJ1Y3Qgc25kX2ludGVydmFsIGlyZXNbOV07CS8qIHJlc2VydmVkIGludGVydmFscyAqLworLQl1bnNpZ25lZCBpbnQgcm1hc2s7CQkvKiBXOiByZXF1ZXN0ZWQgbWFza3MgKi8KKy0JdW5zaWduZWQgaW50IGNtYXNrOwkJLyogUjogY2hhbmdlZCBtYXNrcyAqLworLQl1bnNpZ25lZCBpbnQgaW5mbzsJCS8qIFI6IEluZm8gZmxhZ3MgZm9yIHJldHVybmVkIHNldHVwICovCistCXVuc2lnbmVkIGludCBtc2JpdHM7CQkvKiBSOiB1c2VkIG1vc3Qgc2lnbmlmaWNhbnQgYml0cyAqLworLQl1bnNpZ25lZCBpbnQgcmF0ZV9udW07CQkvKiBSOiByYXRlIG51bWVyYXRvciAqLworLQl1bnNpZ25lZCBpbnQgcmF0ZV9kZW47CQkvKiBSOiByYXRlIGRlbm9taW5hdG9yICovCistCXNuZF9wY21fdWZyYW1lc190IGZpZm9fc2l6ZTsJLyogUjogY2hpcCBGSUZPIHNpemUgaW4gZnJhbWVzICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlICovCistfTsKKy0KKy1lbnVtIHsKKy0JU05EUlZfUENNX1RTVEFNUF9OT05FID0gMCwKKy0JU05EUlZfUENNX1RTVEFNUF9FTkFCTEUsCistCVNORFJWX1BDTV9UU1RBTVBfTEFTVCA9IFNORFJWX1BDTV9UU1RBTVBfRU5BQkxFLAorLX07CistCistc3RydWN0IHNuZF9wY21fc3dfcGFyYW1zIHsKKy0JaW50IHRzdGFtcF9tb2RlOwkJCS8qIHRpbWVzdGFtcCBtb2RlICovCistCXVuc2lnbmVkIGludCBwZXJpb2Rfc3RlcDsKKy0JdW5zaWduZWQgaW50IHNsZWVwX21pbjsJCQkvKiBtaW4gdGlja3MgdG8gc2xlZXAgKi8KKy0Jc25kX3BjbV91ZnJhbWVzX3QgYXZhaWxfbWluOwkJLyogbWluIGF2YWlsIGZyYW1lcyBmb3Igd2FrZXVwICovCistCXNuZF9wY21fdWZyYW1lc190IHhmZXJfYWxpZ247CQkvKiBvYnNvbGV0ZTogeGZlciBzaXplIG5lZWQgdG8gYmUgYSBtdWx0aXBsZSAqLworLQlzbmRfcGNtX3VmcmFtZXNfdCBzdGFydF90aHJlc2hvbGQ7CS8qIG1pbiBod19hdmFpbCBmcmFtZXMgZm9yIGF1dG9tYXRpYyBzdGFydCAqLworLQlzbmRfcGNtX3VmcmFtZXNfdCBzdG9wX3RocmVzaG9sZDsJLyogbWluIGF2YWlsIGZyYW1lcyBmb3IgYXV0b21hdGljIHN0b3AgKi8KKy0Jc25kX3BjbV91ZnJhbWVzX3Qgc2lsZW5jZV90aHJlc2hvbGQ7CS8qIG1pbiBkaXN0YW5jZSBmcm9tIG5vaXNlIGZvciBzaWxlbmNlIGZpbGxpbmcgKi8KKy0Jc25kX3BjbV91ZnJhbWVzX3Qgc2lsZW5jZV9zaXplOwkJLyogc2lsZW5jZSBibG9jayBzaXplICovCistCXNuZF9wY21fdWZyYW1lc190IGJvdW5kYXJ5OwkJLyogcG9pbnRlcnMgd3JhcCBwb2ludCAqLworLQl1bnNpZ25lZCBpbnQgcHJvdG87CQkJLyogcHJvdG9jb2wgdmVyc2lvbiAqLworLQl1bnNpZ25lZCBpbnQgdHN0YW1wX3R5cGU7CQkvKiB0aW1lc3RhbXAgdHlwZSAocmVxLiBwcm90byA+PSAyLjAuMTIpICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNTZdOwkJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSAqLworLX07CistCistc3RydWN0IHNuZF9wY21fY2hhbm5lbF9pbmZvIHsKKy0JdW5zaWduZWQgaW50IGNoYW5uZWw7CistCV9fa2VybmVsX29mZl90IG9mZnNldDsJCS8qIG1tYXAgb2Zmc2V0ICovCistCXVuc2lnbmVkIGludCBmaXJzdDsJCS8qIG9mZnNldCB0byBmaXJzdCBzYW1wbGUgaW4gYml0cyAqLworLQl1bnNpZ25lZCBpbnQgc3RlcDsJCS8qIHNhbXBsZXMgZGlzdGFuY2UgaW4gYml0cyAqLworLX07CistCistZW51bSB7CistCS8qCistCSAqICBmaXJzdCBkZWZpbml0aW9uIGZvciBiYWNrd2FyZHMgY29tcGF0aWJpbGl0eSBvbmx5LAorLQkgKiAgbWFwcyB0byB3YWxsY2xvY2svbGluayB0aW1lIGZvciBIREF1ZGlvIHBsYXliYWNrIGFuZCBERUZBVUxUL0RNQSB0aW1lIGZvciBldmVyeXRoaW5nIGVsc2UKKy0JICovCistCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9DT01QQVQgPSAwLAorLQorLQkvKiB0aW1lc3RhbXAgZGVmaW5pdGlvbnMgKi8KKy0JU05EUlZfUENNX0FVRElPX1RTVEFNUF9UWVBFX0RFRkFVTFQgPSAxLCAgICAgICAgICAgLyogRE1BIHRpbWUsIHJlcG9ydGVkIGFzIHBlciBod19wdHIgKi8KKy0JU05EUlZfUENNX0FVRElPX1RTVEFNUF9UWVBFX0xJTksgPSAyLAkgICAgICAgICAgIC8qIGxpbmsgdGltZSByZXBvcnRlZCBieSBzYW1wbGUgb3Igd2FsbGNsb2NrIGNvdW50ZXIsIHJlc2V0IG9uIHN0YXJ0dXAgKi8KKy0JU05EUlZfUENNX0FVRElPX1RTVEFNUF9UWVBFX0xJTktfQUJTT0xVVEUgPSAzLAkgICAvKiBsaW5rIHRpbWUgcmVwb3J0ZWQgYnkgc2FtcGxlIG9yIHdhbGxjbG9jayBjb3VudGVyLCBub3QgcmVzZXQgb24gc3RhcnR1cCAqLworLQlTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfTElOS19FU1RJTUFURUQgPSA0LCAgICAvKiBsaW5rIHRpbWUgZXN0aW1hdGVkIGluZGlyZWN0bHkgKi8KKy0JU05EUlZfUENNX0FVRElPX1RTVEFNUF9UWVBFX0xJTktfU1lOQ0hST05JWkVEID0gNSwgLyogbGluayB0aW1lIHN5bmNocm9uaXplZCB3aXRoIHN5c3RlbSB0aW1lICovCistCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MQVNUID0gU05EUlZfUENNX0FVRElPX1RTVEFNUF9UWVBFX0xJTktfU1lOQ0hST05JWkVECistfTsKKy0KKy1zdHJ1Y3Qgc25kX3BjbV9zdGF0dXMgeworLQlzbmRfcGNtX3N0YXRlX3Qgc3RhdGU7CQkvKiBzdHJlYW0gc3RhdGUgKi8KKy0Jc3RydWN0IHRpbWVzcGVjIHRyaWdnZXJfdHN0YW1wOwkvKiB0aW1lIHdoZW4gc3RyZWFtIHdhcyBzdGFydGVkL3N0b3BwZWQvcGF1c2VkICovCistCXN0cnVjdCB0aW1lc3BlYyB0c3RhbXA7CQkvKiByZWZlcmVuY2UgdGltZXN0YW1wICovCistCXNuZF9wY21fdWZyYW1lc190IGFwcGxfcHRyOwkvKiBhcHBsIHB0ciAqLworLQlzbmRfcGNtX3VmcmFtZXNfdCBod19wdHI7CS8qIGh3IHB0ciAqLworLQlzbmRfcGNtX3NmcmFtZXNfdCBkZWxheTsJLyogY3VycmVudCBkZWxheSBpbiBmcmFtZXMgKi8KKy0Jc25kX3BjbV91ZnJhbWVzX3QgYXZhaWw7CS8qIG51bWJlciBvZiBmcmFtZXMgYXZhaWxhYmxlICovCistCXNuZF9wY21fdWZyYW1lc190IGF2YWlsX21heDsJLyogbWF4IGZyYW1lcyBhdmFpbGFibGUgb24gaHcgc2luY2UgbGFzdCBzdGF0dXMgKi8KKy0Jc25kX3BjbV91ZnJhbWVzX3Qgb3ZlcnJhbmdlOwkvKiBjb3VudCBvZiBBREMgKGNhcHR1cmUpIG92ZXJyYW5nZSBkZXRlY3Rpb25zIGZyb20gbGFzdCBzdGF0dXMgKi8KKy0Jc25kX3BjbV9zdGF0ZV90IHN1c3BlbmRlZF9zdGF0ZTsgLyogc3VzcGVuZGVkIHN0cmVhbSBzdGF0ZSAqLworLQlfX3UzMiBhdWRpb190c3RhbXBfZGF0YTsJIC8qIG5lZWRlZCBmb3IgNjQtYml0IGFsaWdubWVudCwgdXNlZCBmb3IgY29uZmlncy9yZXBvcnQgdG8vZnJvbSB1c2Vyc3BhY2UgKi8KKy0Jc3RydWN0IHRpbWVzcGVjIGF1ZGlvX3RzdGFtcDsJLyogc2FtcGxlIGNvdW50ZXIsIHdhbGwgY2xvY2ssIFBIQyBvciBvbi1kZW1hbmQgc3luYydlZCAqLworLQlzdHJ1Y3QgdGltZXNwZWMgZHJpdmVyX3RzdGFtcDsJLyogdXNlZnVsIGluIGNhc2UgcmVmZXJlbmNlIHN5c3RlbSB0c3RhbXAgaXMgcmVwb3J0ZWQgd2l0aCBkZWxheSAqLworLQlfX3UzMiBhdWRpb190c3RhbXBfYWNjdXJhY3k7CS8qIGluIG5zIHVuaXRzLCBvbmx5IHZhbGlkIGlmIGluZGljYXRlZCBpbiBhdWRpb190c3RhbXBfZGF0YSAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzUyLTIqc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYyldOyAvKiBtdXN0IGJlIGZpbGxlZCB3aXRoIHplcm8gKi8KKy19OworLQorLXN0cnVjdCBzbmRfcGNtX21tYXBfc3RhdHVzIHsKKy0Jc25kX3BjbV9zdGF0ZV90IHN0YXRlOwkJLyogUk86IHN0YXRlIC0gU05EUlZfUENNX1NUQVRFX1hYWFggKi8KKy0JaW50IHBhZDE7CQkJLyogTmVlZGVkIGZvciA2NCBiaXQgYWxpZ25tZW50ICovCistCXNuZF9wY21fdWZyYW1lc190IGh3X3B0cjsJLyogUk86IGh3IHB0ciAoMC4uLmJvdW5kYXJ5LTEpICovCistCXN0cnVjdCB0aW1lc3BlYyB0c3RhbXA7CQkvKiBUaW1lc3RhbXAgKi8KKy0Jc25kX3BjbV9zdGF0ZV90IHN1c3BlbmRlZF9zdGF0ZTsgLyogUk86IHN1c3BlbmRlZCBzdHJlYW0gc3RhdGUgKi8KKy0Jc3RydWN0IHRpbWVzcGVjIGF1ZGlvX3RzdGFtcDsJLyogZnJvbSBzYW1wbGUgY291bnRlciBvciB3YWxsIGNsb2NrICovCistfTsKKy0KKy1zdHJ1Y3Qgc25kX3BjbV9tbWFwX2NvbnRyb2wgeworLQlzbmRfcGNtX3VmcmFtZXNfdCBhcHBsX3B0cjsJLyogUlc6IGFwcGwgcHRyICgwLi4uYm91bmRhcnktMSkgKi8KKy0Jc25kX3BjbV91ZnJhbWVzX3QgYXZhaWxfbWluOwkvKiBSVzogbWluIGF2YWlsYWJsZSBmcmFtZXMgZm9yIHdha2V1cCAqLworLX07CistCistI2RlZmluZSBTTkRSVl9QQ01fU1lOQ19QVFJfSFdTWU5DCSgxPDwwKQkvKiBleGVjdXRlIGh3c3luYyAqLworLSNkZWZpbmUgU05EUlZfUENNX1NZTkNfUFRSX0FQUEwJCSgxPDwxKQkvKiBnZXQgYXBwbF9wdHIgZnJvbSBkcml2ZXIgKHIvdyBvcCkgKi8KKy0jZGVmaW5lIFNORFJWX1BDTV9TWU5DX1BUUl9BVkFJTF9NSU4JKDE8PDIpCS8qIGdldCBhdmFpbF9taW4gZnJvbSBkcml2ZXIgKi8KKy0KKy1zdHJ1Y3Qgc25kX3BjbV9zeW5jX3B0ciB7CistCXVuc2lnbmVkIGludCBmbGFnczsKKy0JdW5pb24geworLQkJc3RydWN0IHNuZF9wY21fbW1hcF9zdGF0dXMgc3RhdHVzOworLQkJdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CistCX0gczsKKy0JdW5pb24geworLQkJc3RydWN0IHNuZF9wY21fbW1hcF9jb250cm9sIGNvbnRyb2w7CistCQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsKKy0JfSBjOworLX07CistCistc3RydWN0IHNuZF94ZmVyaSB7CistCXNuZF9wY21fc2ZyYW1lc190IHJlc3VsdDsKKy0Jdm9pZCBfX3VzZXIgKmJ1ZjsKKy0Jc25kX3BjbV91ZnJhbWVzX3QgZnJhbWVzOworLX07CistCistc3RydWN0IHNuZF94ZmVybiB7CistCXNuZF9wY21fc2ZyYW1lc190IHJlc3VsdDsKKy0Jdm9pZCBfX3VzZXIgKiBfX3VzZXIgKmJ1ZnM7CistCXNuZF9wY21fdWZyYW1lc190IGZyYW1lczsKKy19OworLQorLWVudW0geworLQlTTkRSVl9QQ01fVFNUQU1QX1RZUEVfR0VUVElNRU9GREFZID0gMCwJLyogZ2V0dGltZW9mZGF5IGVxdWl2YWxlbnQgKi8KKy0JU05EUlZfUENNX1RTVEFNUF9UWVBFX01PTk9UT05JQywJLyogcG9zaXhfY2xvY2tfbW9ub3RvbmljIGVxdWl2YWxlbnQgKi8KKy0JU05EUlZfUENNX1RTVEFNUF9UWVBFX01PTk9UT05JQ19SQVcsICAgIC8qIG1vbm90b25pY19yYXcgKG5vIE5UUCkgKi8KKy0JU05EUlZfUENNX1RTVEFNUF9UWVBFX0xBU1QgPSBTTkRSVl9QQ01fVFNUQU1QX1RZUEVfTU9OT1RPTklDX1JBVywKKy19OworLQorLS8qIGNoYW5uZWwgcG9zaXRpb25zICovCistZW51bSB7CistCVNORFJWX0NITUFQX1VOS05PV04gPSAwLAorLQlTTkRSVl9DSE1BUF9OQSwJCS8qIE4vQSwgc2lsZW50ICovCistCVNORFJWX0NITUFQX01PTk8sCS8qIG1vbm8gc3RyZWFtICovCistCS8qIHRoaXMgZm9sbG93cyB0aGUgYWxzYS1saWIgbWl4ZXIgY2hhbm5lbCB2YWx1ZSArIDMgKi8KKy0JU05EUlZfQ0hNQVBfRkwsCQkvKiBmcm9udCBsZWZ0ICovCistCVNORFJWX0NITUFQX0ZSLAkJLyogZnJvbnQgcmlnaHQgKi8KKy0JU05EUlZfQ0hNQVBfUkwsCQkvKiByZWFyIGxlZnQgKi8KKy0JU05EUlZfQ0hNQVBfUlIsCQkvKiByZWFyIHJpZ2h0ICovCistCVNORFJWX0NITUFQX0ZDLAkJLyogZnJvbnQgY2VudGVyICovCistCVNORFJWX0NITUFQX0xGRSwJLyogTEZFICovCistCVNORFJWX0NITUFQX1NMLAkJLyogc2lkZSBsZWZ0ICovCistCVNORFJWX0NITUFQX1NSLAkJLyogc2lkZSByaWdodCAqLworLQlTTkRSVl9DSE1BUF9SQywJCS8qIHJlYXIgY2VudGVyICovCistCS8qIG5ldyBkZWZpbml0aW9ucyAqLworLQlTTkRSVl9DSE1BUF9GTEMsCS8qIGZyb250IGxlZnQgY2VudGVyICovCistCVNORFJWX0NITUFQX0ZSQywJLyogZnJvbnQgcmlnaHQgY2VudGVyICovCistCVNORFJWX0NITUFQX1JMQywJLyogcmVhciBsZWZ0IGNlbnRlciAqLworLQlTTkRSVl9DSE1BUF9SUkMsCS8qIHJlYXIgcmlnaHQgY2VudGVyICovCistCVNORFJWX0NITUFQX0ZMVywJLyogZnJvbnQgbGVmdCB3aWRlICovCistCVNORFJWX0NITUFQX0ZSVywJLyogZnJvbnQgcmlnaHQgd2lkZSAqLworLQlTTkRSVl9DSE1BUF9GTEgsCS8qIGZyb250IGxlZnQgaGlnaCAqLworLQlTTkRSVl9DSE1BUF9GQ0gsCS8qIGZyb250IGNlbnRlciBoaWdoICovCistCVNORFJWX0NITUFQX0ZSSCwJLyogZnJvbnQgcmlnaHQgaGlnaCAqLworLQlTTkRSVl9DSE1BUF9UQywJCS8qIHRvcCBjZW50ZXIgKi8KKy0JU05EUlZfQ0hNQVBfVEZMLAkvKiB0b3AgZnJvbnQgbGVmdCAqLworLQlTTkRSVl9DSE1BUF9URlIsCS8qIHRvcCBmcm9udCByaWdodCAqLworLQlTTkRSVl9DSE1BUF9URkMsCS8qIHRvcCBmcm9udCBjZW50ZXIgKi8KKy0JU05EUlZfQ0hNQVBfVFJMLAkvKiB0b3AgcmVhciBsZWZ0ICovCistCVNORFJWX0NITUFQX1RSUiwJLyogdG9wIHJlYXIgcmlnaHQgKi8KKy0JU05EUlZfQ0hNQVBfVFJDLAkvKiB0b3AgcmVhciBjZW50ZXIgKi8KKy0JLyogbmV3IGRlZmluaXRpb25zIGZvciBVQUMyICovCistCVNORFJWX0NITUFQX1RGTEMsCS8qIHRvcCBmcm9udCBsZWZ0IGNlbnRlciAqLworLQlTTkRSVl9DSE1BUF9URlJDLAkvKiB0b3AgZnJvbnQgcmlnaHQgY2VudGVyICovCistCVNORFJWX0NITUFQX1RTTCwJLyogdG9wIHNpZGUgbGVmdCAqLworLQlTTkRSVl9DSE1BUF9UU1IsCS8qIHRvcCBzaWRlIHJpZ2h0ICovCistCVNORFJWX0NITUFQX0xMRkUsCS8qIGxlZnQgTEZFICovCistCVNORFJWX0NITUFQX1JMRkUsCS8qIHJpZ2h0IExGRSAqLworLQlTTkRSVl9DSE1BUF9CQywJCS8qIGJvdHRvbSBjZW50ZXIgKi8KKy0JU05EUlZfQ0hNQVBfQkxDLAkvKiBib3R0b20gbGVmdCBjZW50ZXIgKi8KKy0JU05EUlZfQ0hNQVBfQlJDLAkvKiBib3R0b20gcmlnaHQgY2VudGVyICovCistCVNORFJWX0NITUFQX0xBU1QgPSBTTkRSVl9DSE1BUF9CUkMsCistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0NITUFQX1BPU0lUSU9OX01BU0sJMHhmZmZmCistI2RlZmluZSBTTkRSVl9DSE1BUF9QSEFTRV9JTlZFUlNFCSgweDAxIDw8IDE2KQorLSNkZWZpbmUgU05EUlZfQ0hNQVBfRFJJVkVSX1NQRUMJCSgweDAyIDw8IDE2KQorLQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1BWRVJTSU9OCV9JT1IoJ0EnLCAweDAwLCBpbnQpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfSU5GTwkJX0lPUignQScsIDB4MDEsIHN0cnVjdCBzbmRfcGNtX2luZm8pCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfVFNUQU1QCQlfSU9XKCdBJywgMHgwMiwgaW50KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1RUU1RBTVAJCV9JT1coJ0EnLCAweDAzLCBpbnQpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfVVNFUl9QVkVSU0lPTglfSU9XKCdBJywgMHgwNCwgaW50KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0hXX1JFRklORQlfSU9XUignQScsIDB4MTAsIHN0cnVjdCBzbmRfcGNtX2h3X3BhcmFtcykKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9IV19QQVJBTVMJX0lPV1IoJ0EnLCAweDExLCBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfSFdfRlJFRQkJX0lPKCdBJywgMHgxMikKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9TV19QQVJBTVMJX0lPV1IoJ0EnLCAweDEzLCBzdHJ1Y3Qgc25kX3BjbV9zd19wYXJhbXMpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfU1RBVFVTCQlfSU9SKCdBJywgMHgyMCwgc3RydWN0IHNuZF9wY21fc3RhdHVzKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0RFTEFZCQlfSU9SKCdBJywgMHgyMSwgc25kX3BjbV9zZnJhbWVzX3QpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfSFdTWU5DCQlfSU8oJ0EnLCAweDIyKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1NZTkNfUFRSCV9JT1dSKCdBJywgMHgyMywgc3RydWN0IHNuZF9wY21fc3luY19wdHIpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfU1RBVFVTX0VYVAlfSU9XUignQScsIDB4MjQsIHN0cnVjdCBzbmRfcGNtX3N0YXR1cykKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9DSEFOTkVMX0lORk8JX0lPUignQScsIDB4MzIsIHN0cnVjdCBzbmRfcGNtX2NoYW5uZWxfaW5mbykKKy0jZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9QUkVQQVJFCQlfSU8oJ0EnLCAweDQwKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1JFU0VUCQlfSU8oJ0EnLCAweDQxKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1NUQVJUCQlfSU8oJ0EnLCAweDQyKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0RST1AJCV9JTygnQScsIDB4NDMpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfRFJBSU4JCV9JTygnQScsIDB4NDQpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfUEFVU0UJCV9JT1coJ0EnLCAweDQ1LCBpbnQpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfUkVXSU5ECQlfSU9XKCdBJywgMHg0Niwgc25kX3BjbV91ZnJhbWVzX3QpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfUkVTVU1FCQlfSU8oJ0EnLCAweDQ3KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1hSVU4JCV9JTygnQScsIDB4NDgpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfRk9SV0FSRAkJX0lPVygnQScsIDB4NDksIHNuZF9wY21fdWZyYW1lc190KQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1dSSVRFSV9GUkFNRVMJX0lPVygnQScsIDB4NTAsIHN0cnVjdCBzbmRfeGZlcmkpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfUkVBRElfRlJBTUVTCV9JT1IoJ0EnLCAweDUxLCBzdHJ1Y3Qgc25kX3hmZXJpKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1dSSVRFTl9GUkFNRVMJX0lPVygnQScsIDB4NTIsIHN0cnVjdCBzbmRfeGZlcm4pCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfUkVBRE5fRlJBTUVTCV9JT1IoJ0EnLCAweDUzLCBzdHJ1Y3Qgc25kX3hmZXJuKQorLSNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0xJTksJCV9JT1coJ0EnLCAweDYwLCBpbnQpCistI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfVU5MSU5LCQlfSU8oJ0EnLCAweDYxKQorLQorLS8qKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgIE1JREkgdjEuMCBpbnRlcmZhY2UgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKy0KKy0vKgorLSAqICBSYXcgTUlESSBzZWN0aW9uIC0gL2Rldi9zbmQvbWlkaT8/CistICovCistCistI2RlZmluZSBTTkRSVl9SQVdNSURJX1ZFUlNJT04JCVNORFJWX1BST1RPQ09MX1ZFUlNJT04oMiwgMCwgMCkKKy0KKy1lbnVtIHsKKy0JU05EUlZfUkFXTUlESV9TVFJFQU1fT1VUUFVUID0gMCwKKy0JU05EUlZfUkFXTUlESV9TVFJFQU1fSU5QVVQsCistCVNORFJWX1JBV01JRElfU1RSRUFNX0xBU1QgPSBTTkRSVl9SQVdNSURJX1NUUkVBTV9JTlBVVCwKKy19OworLQorLSNkZWZpbmUgU05EUlZfUkFXTUlESV9JTkZPX09VVFBVVAkJMHgwMDAwMDAwMQorLSNkZWZpbmUgU05EUlZfUkFXTUlESV9JTkZPX0lOUFVUCQkweDAwMDAwMDAyCistI2RlZmluZSBTTkRSVl9SQVdNSURJX0lORk9fRFVQTEVYCQkweDAwMDAwMDA0CistCistc3RydWN0IHNuZF9yYXdtaWRpX2luZm8geworLQl1bnNpZ25lZCBpbnQgZGV2aWNlOwkJLyogUk8vV1IgKGNvbnRyb2wpOiBkZXZpY2UgbnVtYmVyICovCistCXVuc2lnbmVkIGludCBzdWJkZXZpY2U7CQkvKiBSTy9XUiAoY29udHJvbCk6IHN1YmRldmljZSBudW1iZXIgKi8KKy0JaW50IHN0cmVhbTsJCQkvKiBXUjogc3RyZWFtICovCistCWludCBjYXJkOwkJCS8qIFI6IGNhcmQgbnVtYmVyICovCistCXVuc2lnbmVkIGludCBmbGFnczsJCS8qIFNORFJWX1JBV01JRElfSU5GT19YWFhYICovCistCXVuc2lnbmVkIGNoYXIgaWRbNjRdOwkJLyogSUQgKHVzZXIgc2VsZWN0YWJsZSkgKi8KKy0JdW5zaWduZWQgY2hhciBuYW1lWzgwXTsJCS8qIG5hbWUgb2YgZGV2aWNlICovCistCXVuc2lnbmVkIGNoYXIgc3VibmFtZVszMl07CS8qIG5hbWUgb2YgYWN0aXZlIG9yIHNlbGVjdGVkIHN1YmRldmljZSAqLworLQl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlc19jb3VudDsKKy0JdW5zaWduZWQgaW50IHN1YmRldmljZXNfYXZhaWw7CistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLworLX07CistCistc3RydWN0IHNuZF9yYXdtaWRpX3BhcmFtcyB7CistCWludCBzdHJlYW07CistCXNpemVfdCBidWZmZXJfc2l6ZTsJCS8qIHF1ZXVlIHNpemUgaW4gYnl0ZXMgKi8KKy0Jc2l6ZV90IGF2YWlsX21pbjsJCS8qIG1pbmltdW0gYXZhaWwgYnl0ZXMgZm9yIHdha2V1cCAqLworLQl1bnNpZ25lZCBpbnQgbm9fYWN0aXZlX3NlbnNpbmc6IDE7IC8qIGRvIG5vdCBzZW5kIGFjdGl2ZSBzZW5zaW5nIGJ5dGUgaW4gY2xvc2UoKSAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzE2XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KKy19OworLQorLXN0cnVjdCBzbmRfcmF3bWlkaV9zdGF0dXMgeworLQlpbnQgc3RyZWFtOworLQlzdHJ1Y3QgdGltZXNwZWMgdHN0YW1wOwkJLyogVGltZXN0YW1wICovCistCXNpemVfdCBhdmFpbDsJCQkvKiBhdmFpbGFibGUgYnl0ZXMgKi8KKy0Jc2l6ZV90IHhydW5zOwkJCS8qIGNvdW50IG9mIG92ZXJydW5zIHNpbmNlIGxhc3Qgc3RhdHVzIChpbiBieXRlcykgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFsxNl07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCistfTsKKy0KKy0jZGVmaW5lIFNORFJWX1JBV01JRElfSU9DVExfUFZFUlNJT04JX0lPUignVycsIDB4MDAsIGludCkKKy0jZGVmaW5lIFNORFJWX1JBV01JRElfSU9DVExfSU5GTwlfSU9SKCdXJywgMHgwMSwgc3RydWN0IHNuZF9yYXdtaWRpX2luZm8pCistI2RlZmluZSBTTkRSVl9SQVdNSURJX0lPQ1RMX1BBUkFNUwlfSU9XUignVycsIDB4MTAsIHN0cnVjdCBzbmRfcmF3bWlkaV9wYXJhbXMpCistI2RlZmluZSBTTkRSVl9SQVdNSURJX0lPQ1RMX1NUQVRVUwlfSU9XUignVycsIDB4MjAsIHN0cnVjdCBzbmRfcmF3bWlkaV9zdGF0dXMpCistI2RlZmluZSBTTkRSVl9SQVdNSURJX0lPQ1RMX0RST1AJX0lPVygnVycsIDB4MzAsIGludCkKKy0jZGVmaW5lIFNORFJWX1JBV01JRElfSU9DVExfRFJBSU4JX0lPVygnVycsIDB4MzEsIGludCkKKy0KKy0vKgorLSAqICBUaW1lciBzZWN0aW9uIC0gL2Rldi9zbmQvdGltZXIKKy0gKi8KKy0KKy0jZGVmaW5lIFNORFJWX1RJTUVSX1ZFUlNJT04JCVNORFJWX1BST1RPQ09MX1ZFUlNJT04oMiwgMCwgNikKKy0KKy1lbnVtIHsKKy0JU05EUlZfVElNRVJfQ0xBU1NfTk9ORSA9IC0xLAorLQlTTkRSVl9USU1FUl9DTEFTU19TTEFWRSA9IDAsCistCVNORFJWX1RJTUVSX0NMQVNTX0dMT0JBTCwKKy0JU05EUlZfVElNRVJfQ0xBU1NfQ0FSRCwKKy0JU05EUlZfVElNRVJfQ0xBU1NfUENNLAorLQlTTkRSVl9USU1FUl9DTEFTU19MQVNUID0gU05EUlZfVElNRVJfQ0xBU1NfUENNLAorLX07CistCistLyogc2xhdmUgdGltZXIgY2xhc3NlcyAqLworLWVudW0geworLQlTTkRSVl9USU1FUl9TQ0xBU1NfTk9ORSA9IDAsCistCVNORFJWX1RJTUVSX1NDTEFTU19BUFBMSUNBVElPTiwKKy0JU05EUlZfVElNRVJfU0NMQVNTX1NFUVVFTkNFUiwJCS8qIGFsaWFzICovCistCVNORFJWX1RJTUVSX1NDTEFTU19PU1NfU0VRVUVOQ0VSLAkvKiBhbGlhcyAqLworLQlTTkRSVl9USU1FUl9TQ0xBU1NfTEFTVCA9IFNORFJWX1RJTUVSX1NDTEFTU19PU1NfU0VRVUVOQ0VSLAorLX07CistCistLyogZ2xvYmFsIHRpbWVycyAoZGV2aWNlIG1lbWJlcikgKi8KKy0jZGVmaW5lIFNORFJWX1RJTUVSX0dMT0JBTF9TWVNURU0JMAorLSNkZWZpbmUgU05EUlZfVElNRVJfR0xPQkFMX1JUQwkJMQkvKiB1bnVzZWQgKi8KKy0jZGVmaW5lIFNORFJWX1RJTUVSX0dMT0JBTF9IUEVUCQkyCistI2RlZmluZSBTTkRSVl9USU1FUl9HTE9CQUxfSFJUSU1FUgkzCistCistLyogaW5mbyBmbGFncyAqLworLSNkZWZpbmUgU05EUlZfVElNRVJfRkxHX1NMQVZFCQkoMTw8MCkJLyogY2Fubm90IGJlIGNvbnRyb2xsZWQgKi8KKy0KKy1zdHJ1Y3Qgc25kX3RpbWVyX2lkIHsKKy0JaW50IGRldl9jbGFzczsKKy0JaW50IGRldl9zY2xhc3M7CistCWludCBjYXJkOworLQlpbnQgZGV2aWNlOworLQlpbnQgc3ViZGV2aWNlOworLX07CistCistc3RydWN0IHNuZF90aW1lcl9naW5mbyB7CistCXN0cnVjdCBzbmRfdGltZXJfaWQgdGlkOwkvKiByZXF1ZXN0ZWQgdGltZXIgSUQgKi8KKy0JdW5zaWduZWQgaW50IGZsYWdzOwkJLyogdGltZXIgZmxhZ3MgLSBTTkRSVl9USU1FUl9GTEdfKiAqLworLQlpbnQgY2FyZDsJCQkvKiBjYXJkIG51bWJlciAqLworLQl1bnNpZ25lZCBjaGFyIGlkWzY0XTsJCS8qIHRpbWVyIGlkZW50aWZpY2F0aW9uICovCistCXVuc2lnbmVkIGNoYXIgbmFtZVs4MF07CQkvKiB0aW1lciBuYW1lICovCistCXVuc2lnbmVkIGxvbmcgcmVzZXJ2ZWQwOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLworLQl1bnNpZ25lZCBsb25nIHJlc29sdXRpb247CS8qIGF2ZXJhZ2UgcGVyaW9kIHJlc29sdXRpb24gaW4gbnMgKi8KKy0JdW5zaWduZWQgbG9uZyByZXNvbHV0aW9uX21pbjsJLyogbWluaW1hbCBwZXJpb2QgcmVzb2x1dGlvbiBpbiBucyAqLworLQl1bnNpZ25lZCBsb25nIHJlc29sdXRpb25fbWF4OwkvKiBtYXhpbWFsIHBlcmlvZCByZXNvbHV0aW9uIGluIG5zICovCistCXVuc2lnbmVkIGludCBjbGllbnRzOwkJLyogYWN0aXZlIHRpbWVyIGNsaWVudHMgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFszMl07CistfTsKKy0KKy1zdHJ1Y3Qgc25kX3RpbWVyX2dwYXJhbXMgeworLQlzdHJ1Y3Qgc25kX3RpbWVyX2lkIHRpZDsJLyogcmVxdWVzdGVkIHRpbWVyIElEICovCistCXVuc2lnbmVkIGxvbmcgcGVyaW9kX251bTsJLyogcmVxdWVzdGVkIHByZWNpc2UgcGVyaW9kIGR1cmF0aW9uIChpbiBzZWNvbmRzKSAtIG51bWVyYXRvciAqLworLQl1bnNpZ25lZCBsb25nIHBlcmlvZF9kZW47CS8qIHJlcXVlc3RlZCBwcmVjaXNlIHBlcmlvZCBkdXJhdGlvbiAoaW4gc2Vjb25kcykgLSBkZW5vbWluYXRvciAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzMyXTsKKy19OworLQorLXN0cnVjdCBzbmRfdGltZXJfZ3N0YXR1cyB7CistCXN0cnVjdCBzbmRfdGltZXJfaWQgdGlkOwkvKiByZXF1ZXN0ZWQgdGltZXIgSUQgKi8KKy0JdW5zaWduZWQgbG9uZyByZXNvbHV0aW9uOwkvKiBjdXJyZW50IHBlcmlvZCByZXNvbHV0aW9uIGluIG5zICovCistCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbl9udW07CS8qIHByZWNpc2UgY3VycmVudCBwZXJpb2QgcmVzb2x1dGlvbiAoaW4gc2Vjb25kcykgLSBudW1lcmF0b3IgKi8KKy0JdW5zaWduZWQgbG9uZyByZXNvbHV0aW9uX2RlbjsJLyogcHJlY2lzZSBjdXJyZW50IHBlcmlvZCByZXNvbHV0aW9uIChpbiBzZWNvbmRzKSAtIGRlbm9taW5hdG9yICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMzJdOworLX07CistCistc3RydWN0IHNuZF90aW1lcl9zZWxlY3QgeworLQlzdHJ1Y3Qgc25kX3RpbWVyX2lkIGlkOwkvKiBiaW5kIHRvIHRpbWVyIElEICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMzJdOwkvKiByZXNlcnZlZCAqLworLX07CistCistc3RydWN0IHNuZF90aW1lcl9pbmZvIHsKKy0JdW5zaWduZWQgaW50IGZsYWdzOwkJLyogdGltZXIgZmxhZ3MgLSBTTkRSVl9USU1FUl9GTEdfKiAqLworLQlpbnQgY2FyZDsJCQkvKiBjYXJkIG51bWJlciAqLworLQl1bnNpZ25lZCBjaGFyIGlkWzY0XTsJCS8qIHRpbWVyIGlkZW50aWZpY2F0b3IgKi8KKy0JdW5zaWduZWQgY2hhciBuYW1lWzgwXTsJCS8qIHRpbWVyIG5hbWUgKi8KKy0JdW5zaWduZWQgbG9uZyByZXNlcnZlZDA7CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCistCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbjsJLyogYXZlcmFnZSBwZXJpb2QgcmVzb2x1dGlvbiBpbiBucyAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsJLyogcmVzZXJ2ZWQgKi8KKy19OworLQorLSNkZWZpbmUgU05EUlZfVElNRVJfUFNGTEdfQVVUTwkJKDE8PDApCS8qIGF1dG8gc3RhcnQsIG90aGVyd2lzZSBvbmUtc2hvdCAqLworLSNkZWZpbmUgU05EUlZfVElNRVJfUFNGTEdfRVhDTFVTSVZFCSgxPDwxKQkvKiBleGNsdXNpdmUgdXNlLCBwcmVjaXNlIHN0YXJ0L3N0b3AvcGF1c2UvY29udGludWUgKi8KKy0jZGVmaW5lIFNORFJWX1RJTUVSX1BTRkxHX0VBUkxZX0VWRU5UCSgxPDwyKQkvKiB3cml0ZSBlYXJseSBldmVudCB0byB0aGUgcG9sbCBxdWV1ZSAqLworLQorLXN0cnVjdCBzbmRfdGltZXJfcGFyYW1zIHsKKy0JdW5zaWduZWQgaW50IGZsYWdzOwkJLyogZmxhZ3MgLSBTTkRSVl9USU1FUl9QU0ZMR18qICovCistCXVuc2lnbmVkIGludCB0aWNrczsJCS8qIHJlcXVlc3RlZCByZXNvbHV0aW9uIGluIHRpY2tzICovCistCXVuc2lnbmVkIGludCBxdWV1ZV9zaXplOwkvKiB0b3RhbCBzaXplIG9mIHF1ZXVlICgzMi0xMDI0KSAqLworLQl1bnNpZ25lZCBpbnQgcmVzZXJ2ZWQwOwkJLyogcmVzZXJ2ZWQsIHdhczogZmFpbHVyZSBsb2NhdGlvbnMgKi8KKy0JdW5zaWduZWQgaW50IGZpbHRlcjsJCS8qIGV2ZW50IGZpbHRlciAoYml0bWFzayBvZiBTTkRSVl9USU1FUl9FVkVOVF8qKSAqLworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzYwXTsJLyogcmVzZXJ2ZWQgKi8KKy19OworLQorLXN0cnVjdCBzbmRfdGltZXJfc3RhdHVzIHsKKy0Jc3RydWN0IHRpbWVzcGVjIHRzdGFtcDsJCS8qIFRpbWVzdGFtcCAtIGxhc3QgdXBkYXRlICovCistCXVuc2lnbmVkIGludCByZXNvbHV0aW9uOwkvKiBjdXJyZW50IHBlcmlvZCByZXNvbHV0aW9uIGluIG5zICovCistCXVuc2lnbmVkIGludCBsb3N0OwkJLyogY291bnRlciBvZiBtYXN0ZXIgdGljayBsb3N0ICovCistCXVuc2lnbmVkIGludCBvdmVycnVuOwkJLyogY291bnQgb2YgcmVhZCBxdWV1ZSBvdmVycnVucyAqLworLQl1bnNpZ25lZCBpbnQgcXVldWU7CQkvKiB1c2VkIHF1ZXVlIHNpemUgKi8KKy0JdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CS8qIHJlc2VydmVkICovCistfTsKKy0KKy0jZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1BWRVJTSU9OCV9JT1IoJ1QnLCAweDAwLCBpbnQpCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9ORVhUX0RFVklDRQlfSU9XUignVCcsIDB4MDEsIHN0cnVjdCBzbmRfdGltZXJfaWQpCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9UUkVBRAkJX0lPVygnVCcsIDB4MDIsIGludCkKKy0jZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX0dJTkZPCQlfSU9XUignVCcsIDB4MDMsIHN0cnVjdCBzbmRfdGltZXJfZ2luZm8pCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9HUEFSQU1TCV9JT1coJ1QnLCAweDA0LCBzdHJ1Y3Qgc25kX3RpbWVyX2dwYXJhbXMpCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9HU1RBVFVTCV9JT1dSKCdUJywgMHgwNSwgc3RydWN0IHNuZF90aW1lcl9nc3RhdHVzKQorLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfU0VMRUNUCV9JT1coJ1QnLCAweDEwLCBzdHJ1Y3Qgc25kX3RpbWVyX3NlbGVjdCkKKy0jZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX0lORk8JCV9JT1IoJ1QnLCAweDExLCBzdHJ1Y3Qgc25kX3RpbWVyX2luZm8pCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9QQVJBTVMJX0lPVygnVCcsIDB4MTIsIHN0cnVjdCBzbmRfdGltZXJfcGFyYW1zKQorLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfU1RBVFVTCV9JT1IoJ1QnLCAweDE0LCBzdHJ1Y3Qgc25kX3RpbWVyX3N0YXR1cykKKy0vKiBUaGUgZm9sbG93aW5nIGZvdXIgaW9jdGxzIGFyZSBjaGFuZ2VkIHNpbmNlIDEuMC45IGR1ZSB0byBjb25mbGljdGlvbiAqLworLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfU1RBUlQJCV9JTygnVCcsIDB4YTApCistI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9TVE9QCQlfSU8oJ1QnLCAweGExKQorLSNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfQ09OVElOVUUJX0lPKCdUJywgMHhhMikKKy0jZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1BBVVNFCQlfSU8oJ1QnLCAweGEzKQorLQorLXN0cnVjdCBzbmRfdGltZXJfcmVhZCB7CistCXVuc2lnbmVkIGludCByZXNvbHV0aW9uOworLQl1bnNpZ25lZCBpbnQgdGlja3M7CistfTsKKy0KKy1lbnVtIHsKKy0JU05EUlZfVElNRVJfRVZFTlRfUkVTT0xVVElPTiA9IDAsCS8qIHZhbCA9IHJlc29sdXRpb24gaW4gbnMgKi8KKy0JU05EUlZfVElNRVJfRVZFTlRfVElDSywJCQkvKiB2YWwgPSB0aWNrcyAqLworLQlTTkRSVl9USU1FUl9FVkVOVF9TVEFSVCwJCS8qIHZhbCA9IHJlc29sdXRpb24gaW4gbnMgKi8KKy0JU05EUlZfVElNRVJfRVZFTlRfU1RPUCwJCQkvKiB2YWwgPSAwICovCistCVNORFJWX1RJTUVSX0VWRU5UX0NPTlRJTlVFLAkJLyogdmFsID0gcmVzb2x1dGlvbiBpbiBucyAqLworLQlTTkRSVl9USU1FUl9FVkVOVF9QQVVTRSwJCS8qIHZhbCA9IDAgKi8KKy0JU05EUlZfVElNRVJfRVZFTlRfRUFSTFksCQkvKiB2YWwgPSAwLCBlYXJseSBldmVudCAqLworLQlTTkRSVl9USU1FUl9FVkVOVF9TVVNQRU5ELAkJLyogdmFsID0gMCAqLworLQlTTkRSVl9USU1FUl9FVkVOVF9SRVNVTUUsCQkvKiB2YWwgPSByZXNvbHV0aW9uIGluIG5zICovCistCS8qIG1hc3RlciB0aW1lciBldmVudHMgZm9yIHNsYXZlIHRpbWVyIGluc3RhbmNlcyAqLworLQlTTkRSVl9USU1FUl9FVkVOVF9NU1RBUlQgPSBTTkRSVl9USU1FUl9FVkVOVF9TVEFSVCArIDEwLAorLQlTTkRSVl9USU1FUl9FVkVOVF9NU1RPUCA9IFNORFJWX1RJTUVSX0VWRU5UX1NUT1AgKyAxMCwKKy0JU05EUlZfVElNRVJfRVZFTlRfTUNPTlRJTlVFID0gU05EUlZfVElNRVJfRVZFTlRfQ09OVElOVUUgKyAxMCwKKy0JU05EUlZfVElNRVJfRVZFTlRfTVBBVVNFID0gU05EUlZfVElNRVJfRVZFTlRfUEFVU0UgKyAxMCwKKy0JU05EUlZfVElNRVJfRVZFTlRfTVNVU1BFTkQgPSBTTkRSVl9USU1FUl9FVkVOVF9TVVNQRU5EICsgMTAsCistCVNORFJWX1RJTUVSX0VWRU5UX01SRVNVTUUgPSBTTkRSVl9USU1FUl9FVkVOVF9SRVNVTUUgKyAxMCwKKy19OworLQorLXN0cnVjdCBzbmRfdGltZXJfdHJlYWQgeworLQlpbnQgZXZlbnQ7CistCXN0cnVjdCB0aW1lc3BlYyB0c3RhbXA7CistCXVuc2lnbmVkIGludCB2YWw7CistfTsKKy0KKy0vKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorLSAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCistICogICAgICAgIFNlY3Rpb24gZm9yIGRyaXZlciBjb250cm9sIGludGVyZmFjZSAtIC9kZXYvc25kL2NvbnRyb2w/ICAgICAgICAgICoKKy0gKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorLSAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqLworLQorLSNkZWZpbmUgU05EUlZfQ1RMX1ZFUlNJT04JCVNORFJWX1BST1RPQ09MX1ZFUlNJT04oMiwgMCwgNykKKy0KKy1zdHJ1Y3Qgc25kX2N0bF9jYXJkX2luZm8geworLQlpbnQgY2FyZDsJCQkvKiBjYXJkIG51bWJlciAqLworLQlpbnQgcGFkOwkJCS8qIHJlc2VydmVkIGZvciBmdXR1cmUgKHdhcyB0eXBlKSAqLworLQl1bnNpZ25lZCBjaGFyIGlkWzE2XTsJCS8qIElEIG9mIGNhcmQgKHVzZXIgc2VsZWN0YWJsZSkgKi8KKy0JdW5zaWduZWQgY2hhciBkcml2ZXJbMTZdOwkvKiBEcml2ZXIgbmFtZSAqLworLQl1bnNpZ25lZCBjaGFyIG5hbWVbMzJdOwkJLyogU2hvcnQgbmFtZSBvZiBzb3VuZGNhcmQgKi8KKy0JdW5zaWduZWQgY2hhciBsb25nbmFtZVs4MF07CS8qIG5hbWUgKyBpbmZvIHRleHQgYWJvdXQgc291bmRjYXJkICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRfWzE2XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSAod2FzIElEIG9mIG1peGVyKSAqLworLQl1bnNpZ25lZCBjaGFyIG1peGVybmFtZVs4MF07CS8qIHZpc3VhbCBtaXhlciBpZGVudGlmaWNhdGlvbiAqLworLQl1bnNpZ25lZCBjaGFyIGNvbXBvbmVudHNbMTI4XTsJLyogY2FyZCBjb21wb25lbnRzIC8gZmluZSBpZGVudGlmaWNhdGlvbiwgZGVsaW1pdGVkIHdpdGggb25lIHNwYWNlIChBQzk3IGV0Yy4uKSAqLworLX07CistCistdHlwZWRlZiBpbnQgX19iaXR3aXNlIHNuZF9jdGxfZWxlbV90eXBlX3Q7CistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX05PTkUJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV90eXBlX3QpIDApIC8qIGludmFsaWQgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX1RZUEVfQk9PTEVBTgkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgMSkgLyogYm9vbGVhbiB0eXBlICovCistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0lOVEVHRVIJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV90eXBlX3QpIDIpIC8qIGludGVnZXIgdHlwZSAqLworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9FTlVNRVJBVEVECSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSAzKSAvKiBlbnVtZXJhdGVkIHR5cGUgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX1RZUEVfQllURVMJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV90eXBlX3QpIDQpIC8qIGJ5dGUgYXJyYXkgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX1RZUEVfSUVDOTU4CSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSA1KSAvKiBJRUM5NTggKFMvUERJRikgc2V0dXAgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX1RZUEVfSU5URUdFUjY0CSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSA2KSAvKiA2NC1iaXQgaW50ZWdlciB0eXBlICovCistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0xBU1QJU05EUlZfQ1RMX0VMRU1fVFlQRV9JTlRFR0VSNjQKKy0KKy10eXBlZGVmIGludCBfX2JpdHdpc2Ugc25kX2N0bF9lbGVtX2lmYWNlX3Q7CistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9JRkFDRV9DQVJECSgoX19mb3JjZSBzbmRfY3RsX2VsZW1faWZhY2VfdCkgMCkgLyogZ2xvYmFsIGNvbnRyb2wgKi8KKy0jZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX0hXREVQCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1faWZhY2VfdCkgMSkgLyogaGFyZHdhcmUgZGVwZW5kZW50IGRldmljZSAqLworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfTUlYRVIJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV9pZmFjZV90KSAyKSAvKiB2aXJ0dWFsIG1peGVyIGRldmljZSAqLworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfUENNCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1faWZhY2VfdCkgMykgLyogUENNIGRldmljZSAqLworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfUkFXTUlESQkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDQpIC8qIFJhd01pZGkgZGV2aWNlICovCistI2RlZmluZQlTTkRSVl9DVExfRUxFTV9JRkFDRV9USU1FUgkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDUpIC8qIHRpbWVyIGRldmljZSAqLworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfU0VRVUVOQ0VSCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1faWZhY2VfdCkgNikgLyogc2VxdWVuY2VyIGNsaWVudCAqLworLSNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfTEFTVAlTTkRSVl9DVExfRUxFTV9JRkFDRV9TRVFVRU5DRVIKKy0KKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19SRUFECQkoMTw8MCkKKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19XUklURQkJKDE8PDEpCistI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfUkVBRFdSSVRFCQkoU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQUR8U05EUlZfQ1RMX0VMRU1fQUNDRVNTX1dSSVRFKQorLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1ZPTEFUSUxFCQkoMTw8MikJLyogY29udHJvbCB2YWx1ZSBtYXkgYmUgY2hhbmdlZCB3aXRob3V0IGEgbm90aWZpY2F0aW9uICovCistI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVElNRVNUQU1QCQkoMTw8MykJLyogd2hlbiB3YXMgY29udHJvbCBjaGFuZ2VkICovCistI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVExWX1JFQUQJCSgxPDw0KQkvKiBUTFYgcmVhZCBpcyBwb3NzaWJsZSAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9XUklURQkJKDE8PDUpCS8qIFRMViB3cml0ZSBpcyBwb3NzaWJsZSAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9SRUFEV1JJVEUJKFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfUkVBRHxTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVExWX1dSSVRFKQorLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9DT01NQU5ECSgxPDw2KQkvKiBUTFYgY29tbWFuZCBpcyBwb3NzaWJsZSAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX0lOQUNUSVZFCQkoMTw8OCkJLyogY29udHJvbCBkb2VzIGFjdHVhbGx5IG5vdGhpbmcsIGJ1dCBtYXkgYmUgdXBkYXRlZCAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX0xPQ0sJCSgxPDw5KQkvKiB3cml0ZSBsb2NrICovCistI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfT1dORVIJCSgxPDwxMCkJLyogd3JpdGUgbG9jayBvd25lciAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9DQUxMQkFDSwkoMTw8MjgpCS8qIGtlcm5lbCB1c2UgYSBUTFYgY2FsbGJhY2sgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19VU0VSCQkoMTw8MjkpIC8qIHVzZXIgc3BhY2UgZWxlbWVudCAqLworLS8qIGJpdHMgMzAgYW5kIDMxIGFyZSBvYnNvbGV0ZWQgKGZvciBpbmRpcmVjdCBhY2Nlc3MpICovCistCistLyogZm9yIGZ1cnRoZXIgZGV0YWlscyBzZWUgdGhlIEFDUEkgYW5kIFBDSSBwb3dlciBtYW5hZ2VtZW50IHNwZWNpZmljYXRpb24gKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9QT1dFUl9EMAkJMHgwMDAwCS8qIGZ1bGwgT24gKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9QT1dFUl9EMQkJMHgwMTAwCS8qIHBhcnRpYWwgT24gKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9QT1dFUl9EMgkJMHgwMjAwCS8qIHBhcnRpYWwgT24gKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9QT1dFUl9EMwkJMHgwMzAwCS8qIE9mZiAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1BPV0VSX0QzaG90CQkoU05EUlZfQ1RMX1BPV0VSX0QzfDB4MDAwMCkJLyogT2ZmLCB3aXRoIHBvd2VyICovCistI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDNjb2xkCQkoU05EUlZfQ1RMX1BPV0VSX0QzfDB4MDAwMSkJLyogT2ZmLCB3aXRob3V0IHBvd2VyICovCistCistI2RlZmluZSBTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTgk0NAorLQorLXN0cnVjdCBzbmRfY3RsX2VsZW1faWQgeworLQl1bnNpZ25lZCBpbnQgbnVtaWQ7CQkvKiBudW1lcmljIGlkZW50aWZpZXIsIHplcm8gPSBpbnZhbGlkICovCistCXNuZF9jdGxfZWxlbV9pZmFjZV90IGlmYWNlOwkvKiBpbnRlcmZhY2UgaWRlbnRpZmllciAqLworLQl1bnNpZ25lZCBpbnQgZGV2aWNlOwkJLyogZGV2aWNlL2NsaWVudCBudW1iZXIgKi8KKy0JdW5zaWduZWQgaW50IHN1YmRldmljZTsJCS8qIHN1YmRldmljZSAoc3Vic3RyZWFtKSBudW1iZXIgKi8KKy0JdW5zaWduZWQgY2hhciBuYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsJCS8qIEFTQ0lJIG5hbWUgb2YgaXRlbSAqLworLQl1bnNpZ25lZCBpbnQgaW5kZXg7CQkvKiBpbmRleCBvZiBpdGVtICovCistfTsKKy0KKy1zdHJ1Y3Qgc25kX2N0bF9lbGVtX2xpc3QgeworLQl1bnNpZ25lZCBpbnQgb2Zmc2V0OwkJLyogVzogZmlyc3QgZWxlbWVudCBJRCB0byBnZXQgKi8KKy0JdW5zaWduZWQgaW50IHNwYWNlOwkJLyogVzogY291bnQgb2YgZWxlbWVudCBJRHMgdG8gZ2V0ICovCistCXVuc2lnbmVkIGludCB1c2VkOwkJLyogUjogY291bnQgb2YgZWxlbWVudCBJRHMgc2V0ICovCistCXVuc2lnbmVkIGludCBjb3VudDsJCS8qIFI6IGNvdW50IG9mIGFsbCBlbGVtZW50cyAqLworLQlzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkIF9fdXNlciAqcGlkczsgLyogUjogSURzICovCistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNTBdOworLX07CistCistc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvIHsKKy0Jc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBpZDsJLyogVzogZWxlbWVudCBJRCAqLworLQlzbmRfY3RsX2VsZW1fdHlwZV90IHR5cGU7CS8qIFI6IHZhbHVlIHR5cGUgLSBTTkRSVl9DVExfRUxFTV9UWVBFXyogKi8KKy0JdW5zaWduZWQgaW50IGFjY2VzczsJCS8qIFI6IHZhbHVlIGFjY2VzcyAoYml0bWFzaykgLSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfKiAqLworLQl1bnNpZ25lZCBpbnQgY291bnQ7CQkvKiBjb3VudCBvZiB2YWx1ZXMgKi8KKy0JX19rZXJuZWxfcGlkX3Qgb3duZXI7CQkvKiBvd25lcidzIFBJRCBvZiB0aGlzIGNvbnRyb2wgKi8KKy0JdW5pb24geworLQkJc3RydWN0IHsKKy0JCQlsb25nIG1pbjsJCS8qIFI6IG1pbmltdW0gdmFsdWUgKi8KKy0JCQlsb25nIG1heDsJCS8qIFI6IG1heGltdW0gdmFsdWUgKi8KKy0JCQlsb25nIHN0ZXA7CQkvKiBSOiBzdGVwICgwIHZhcmlhYmxlKSAqLworLQkJfSBpbnRlZ2VyOworLQkJc3RydWN0IHsKKy0JCQlsb25nIGxvbmcgbWluOwkJLyogUjogbWluaW11bSB2YWx1ZSAqLworLQkJCWxvbmcgbG9uZyBtYXg7CQkvKiBSOiBtYXhpbXVtIHZhbHVlICovCistCQkJbG9uZyBsb25nIHN0ZXA7CQkvKiBSOiBzdGVwICgwIHZhcmlhYmxlKSAqLworLQkJfSBpbnRlZ2VyNjQ7CistCQlzdHJ1Y3QgeworLQkJCXVuc2lnbmVkIGludCBpdGVtczsJLyogUjogbnVtYmVyIG9mIGl0ZW1zICovCistCQkJdW5zaWduZWQgaW50IGl0ZW07CS8qIFc6IGl0ZW0gbnVtYmVyICovCistCQkJY2hhciBuYW1lWzY0XTsJCS8qIFI6IHZhbHVlIG5hbWUgKi8KKy0JCQlfX3U2NCBuYW1lc19wdHI7CS8qIFc6IG5hbWVzIGxpc3QgKEVMRU1fQUREIG9ubHkpICovCistCQkJdW5zaWduZWQgaW50IG5hbWVzX2xlbmd0aDsKKy0JCX0gZW51bWVyYXRlZDsKKy0JCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMTI4XTsKKy0JfSB2YWx1ZTsKKy0JdW5pb24geworLQkJdW5zaWduZWQgc2hvcnQgZFs0XTsJCS8qIGRpbWVuc2lvbnMgKi8KKy0JCXVuc2lnbmVkIHNob3J0ICpkX3B0cjsJCS8qIGluZGlyZWN0IC0gb2Jzb2xldGVkICovCistCX0gZGltZW47CistCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjQtNCpzaXplb2YodW5zaWduZWQgc2hvcnQpXTsKKy19OworLQorLXN0cnVjdCBzbmRfY3RsX2VsZW1fdmFsdWUgeworLQlzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkIGlkOwkvKiBXOiBlbGVtZW50IElEICovCistCXVuc2lnbmVkIGludCBpbmRpcmVjdDogMTsJLyogVzogaW5kaXJlY3QgYWNjZXNzIC0gb2Jzb2xldGVkICovCistCXVuaW9uIHsKKy0JCXVuaW9uIHsKKy0JCQlsb25nIHZhbHVlWzEyOF07CistCQkJbG9uZyAqdmFsdWVfcHRyOwkvKiBvYnNvbGV0ZWQgKi8KKy0JCX0gaW50ZWdlcjsKKy0JCXVuaW9uIHsKKy0JCQlsb25nIGxvbmcgdmFsdWVbNjRdOworLQkJCWxvbmcgbG9uZyAqdmFsdWVfcHRyOwkvKiBvYnNvbGV0ZWQgKi8KKy0JCX0gaW50ZWdlcjY0OworLQkJdW5pb24geworLQkJCXVuc2lnbmVkIGludCBpdGVtWzEyOF07CistCQkJdW5zaWduZWQgaW50ICppdGVtX3B0cjsJLyogb2Jzb2xldGVkICovCistCQl9IGVudW1lcmF0ZWQ7CistCQl1bmlvbiB7CistCQkJdW5zaWduZWQgY2hhciBkYXRhWzUxMl07CistCQkJdW5zaWduZWQgY2hhciAqZGF0YV9wdHI7CS8qIG9ic29sZXRlZCAqLworLQkJfSBieXRlczsKKy0JCXN0cnVjdCBzbmRfYWVzX2llYzk1OCBpZWM5NTg7CistCX0gdmFsdWU7CQkvKiBSTyAqLworLQlzdHJ1Y3QgdGltZXNwZWMgdHN0YW1wOworLQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzEyOC1zaXplb2Yoc3RydWN0IHRpbWVzcGVjKV07CistfTsKKy0KKy1zdHJ1Y3Qgc25kX2N0bF90bHYgeworLQl1bnNpZ25lZCBpbnQgbnVtaWQ7CS8qIGNvbnRyb2wgZWxlbWVudCBudW1lcmljIGlkZW50aWZpY2F0aW9uICovCistCXVuc2lnbmVkIGludCBsZW5ndGg7CS8qIGluIGJ5dGVzIGFsaWduZWQgdG8gNCAqLworLQl1bnNpZ25lZCBpbnQgdGx2WzBdOwkvKiBmaXJzdCBUTFYgKi8KKy19OworLQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1BWRVJTSU9OCV9JT1IoJ1UnLCAweDAwLCBpbnQpCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfQ0FSRF9JTkZPCV9JT1IoJ1UnLCAweDAxLCBzdHJ1Y3Qgc25kX2N0bF9jYXJkX2luZm8pCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9MSVNUCV9JT1dSKCdVJywgMHgxMCwgc3RydWN0IHNuZF9jdGxfZWxlbV9saXN0KQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fSU5GTwlfSU9XUignVScsIDB4MTEsIHN0cnVjdCBzbmRfY3RsX2VsZW1faW5mbykKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX1JFQUQJX0lPV1IoJ1UnLCAweDEyLCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlKQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fV1JJVEUJX0lPV1IoJ1UnLCAweDEzLCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlKQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fTE9DSwlfSU9XKCdVJywgMHgxNCwgc3RydWN0IHNuZF9jdGxfZWxlbV9pZCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX1VOTE9DSwlfSU9XKCdVJywgMHgxNSwgc3RydWN0IHNuZF9jdGxfZWxlbV9pZCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9TVUJTQ1JJQkVfRVZFTlRTIF9JT1dSKCdVJywgMHgxNiwgaW50KQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fQURECV9JT1dSKCdVJywgMHgxNywgc3RydWN0IHNuZF9jdGxfZWxlbV9pbmZvKQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fUkVQTEFDRQlfSU9XUignVScsIDB4MTgsIHN0cnVjdCBzbmRfY3RsX2VsZW1faW5mbykKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX1JFTU9WRQlfSU9XUignVScsIDB4MTksIHN0cnVjdCBzbmRfY3RsX2VsZW1faWQpCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfVExWX1JFQUQJX0lPV1IoJ1UnLCAweDFhLCBzdHJ1Y3Qgc25kX2N0bF90bHYpCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfVExWX1dSSVRFCV9JT1dSKCdVJywgMHgxYiwgc3RydWN0IHNuZF9jdGxfdGx2KQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1RMVl9DT01NQU5ECV9JT1dSKCdVJywgMHgxYywgc3RydWN0IHNuZF9jdGxfdGx2KQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0hXREVQX05FWFRfREVWSUNFIF9JT1dSKCdVJywgMHgyMCwgaW50KQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0hXREVQX0lORk8JX0lPUignVScsIDB4MjEsIHN0cnVjdCBzbmRfaHdkZXBfaW5mbykKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9QQ01fTkVYVF9ERVZJQ0UJX0lPUignVScsIDB4MzAsIGludCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9QQ01fSU5GTwlfSU9XUignVScsIDB4MzEsIHN0cnVjdCBzbmRfcGNtX2luZm8pCistI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUENNX1BSRUZFUl9TVUJERVZJQ0UgX0lPVygnVScsIDB4MzIsIGludCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9SQVdNSURJX05FWFRfREVWSUNFIF9JT1dSKCdVJywgMHg0MCwgaW50KQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1JBV01JRElfSU5GTwlfSU9XUignVScsIDB4NDEsIHN0cnVjdCBzbmRfcmF3bWlkaV9pbmZvKQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1JBV01JRElfUFJFRkVSX1NVQkRFVklDRSBfSU9XKCdVJywgMHg0MiwgaW50KQorLSNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1BPV0VSCQlfSU9XUignVScsIDB4ZDAsIGludCkKKy0jZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9QT1dFUl9TVEFURQlfSU9SKCdVJywgMHhkMSwgaW50KQorLQorLS8qCistICogIFJlYWQgaW50ZXJmYWNlLgorLSAqLworLQorLWVudW0gc25kcnZfY3RsX2V2ZW50X3R5cGUgeworLQlTTkRSVl9DVExfRVZFTlRfRUxFTSA9IDAsCistCVNORFJWX0NUTF9FVkVOVF9MQVNUID0gU05EUlZfQ1RMX0VWRU5UX0VMRU0sCistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0NUTF9FVkVOVF9NQVNLX1ZBTFVFCSgxPDwwKQkvKiBlbGVtZW50IHZhbHVlIHdhcyBjaGFuZ2VkICovCistI2RlZmluZSBTTkRSVl9DVExfRVZFTlRfTUFTS19JTkZPCSgxPDwxKQkvKiBlbGVtZW50IGluZm8gd2FzIGNoYW5nZWQgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9FVkVOVF9NQVNLX0FERAkoMTw8MikJLyogZWxlbWVudCB3YXMgYWRkZWQgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9FVkVOVF9NQVNLX1RMVgkoMTw8MykJLyogZWxlbWVudCBUTFYgdHJlZSB3YXMgY2hhbmdlZCAqLworLSNkZWZpbmUgU05EUlZfQ1RMX0VWRU5UX01BU0tfUkVNT1ZFCSh+MFUpCS8qIGVsZW1lbnQgd2FzIHJlbW92ZWQgKi8KKy0KKy1zdHJ1Y3Qgc25kX2N0bF9ldmVudCB7CistCWludCB0eXBlOwkvKiBldmVudCB0eXBlIC0gU05EUlZfQ1RMX0VWRU5UXyogKi8KKy0JdW5pb24geworLQkJc3RydWN0IHsKKy0JCQl1bnNpZ25lZCBpbnQgbWFzazsKKy0JCQlzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkIGlkOworLQkJfSBlbGVtOworLQkJdW5zaWduZWQgY2hhciBkYXRhOFs2MF07CistCX0gZGF0YTsKKy19OworLQorLS8qCistICogIENvbnRyb2wgbmFtZXMKKy0gKi8KKy0KKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX05PTkUJCQkJIiIKKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX1BMQVlCQUNLCQkJCSJQbGF5YmFjayAiCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9DQVBUVVJFCQkJCSJDYXB0dXJlICIKKy0KKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9OT05FCQkJIiIKKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9TV0lUQ0gJCQkiU3dpdGNoIgorLSNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4X1ZPTFVNRQkJCSJWb2x1bWUiCistI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfREVGQVVMVAkJCSJEZWZhdWx0IgorLSNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4X01BU0sJCQkiTWFzayIKKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9DT05fTUFTSwkJCSJDb24gTWFzayIKKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9QUk9fTUFTSwkJCSJQcm8gTWFzayIKKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9QQ01fU1RSRUFNCQkiUENNIFN0cmVhbSIKKy0jZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OChleHBsLGRpcmVjdGlvbix3aGF0KQkiSUVDOTU4ICIgZXhwbCBTTkRSVl9DVExfTkFNRV8jI2RpcmVjdGlvbiBTTkRSVl9DVExfTkFNRV9JRUM5NThfIyN3aGF0CistCistI2VuZGlmIC8qIF9VQVBJX19TT1VORF9BU09VTkRfSCAqLworKyNpbmNsdWRlIDxhbHNhL3NvdW5kL3VhcGkvYXNvdW5kLmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9hc291bmRfZm0uaCBiL2luY2x1ZGUvc291bmQvYXNvdW5kX2ZtLmgKK2luZGV4IDg0NzFmNDA0Li4zZTVkYTRkMCAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvYXNvdW5kX2ZtLmgKKysrKyBiL2luY2x1ZGUvc291bmQvYXNvdW5kX2ZtLmgKK0BAIC0xLDEzNSArMSBAQAorLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZSAqLworLSNpZm5kZWYgX19TT1VORF9BU09VTkRfRk1fSAorLSNkZWZpbmUgX19TT1VORF9BU09VTkRfRk1fSAorLQorLS8qCistICogIEFkdmFuY2VkIExpbnV4IFNvdW5kIEFyY2hpdGVjdHVyZSAtIEFMU0EKKy0gKgorLSAqICBJbnRlcmZhY2UgZmlsZSBiZXR3ZWVuIEFMU0EgZHJpdmVyICYgdXNlciBzcGFjZQorLSAqICBDb3B5cmlnaHQgKGMpIDE5OTQtOTggYnkgSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4sCistICogICAgICAgICAgICAgICAgICAgICAgICAgICA0RnJvbnQgVGVjaG5vbG9naWVzCistICoKKy0gKiAgRGlyZWN0IEZNIGNvbnRyb2wKKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorLSAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0gKgorLSAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistICogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyBVU0EKKy0gKgorLSAqLworLQorLSNkZWZpbmUgU05EUlZfRE1fRk1fTU9ERV9PUEwyCTB4MDAKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX01PREVfT1BMMwkweDAxCistCistc3RydWN0IHNuZF9kbV9mbV9pbmZvIHsKKy0JdW5zaWduZWQgY2hhciBmbV9tb2RlOwkJLyogT1BMIG1vZGUsIHNlZSBTTkRSVl9ETV9GTV9NT0RFX1hYWCAqLworLQl1bnNpZ25lZCBjaGFyIHJoeXRobTsJCS8qIHBlcmN1c3Npb24gbW9kZSBmbGFnICovCistfTsKKy0KKy0vKgorLSAqICBEYXRhIHN0cnVjdHVyZSBjb21wb3NpbmcgYW4gRk0gIm5vdGUiIG9yIHNvdW5kIGV2ZW50LgorLSAqLworLQorLXN0cnVjdCBzbmRfZG1fZm1fdm9pY2UgeworLQl1bnNpZ25lZCBjaGFyIG9wOwkJLyogb3BlcmF0b3IgY2VsbCAoMCBvciAxKSAqLworLQl1bnNpZ25lZCBjaGFyIHZvaWNlOwkJLyogRk0gdm9pY2UgKDAgdG8gMTcpICovCistCistCXVuc2lnbmVkIGNoYXIgYW07CQkvKiBhbXBsaXR1ZGUgbW9kdWxhdGlvbiAqLworLQl1bnNpZ25lZCBjaGFyIHZpYnJhdG87CQkvKiB2aWJyYXRvIGVmZmVjdCAqLworLQl1bnNpZ25lZCBjaGFyIGRvX3N1c3RhaW47CS8qIHN1c3RhaW4gcGhhc2UgKi8KKy0JdW5zaWduZWQgY2hhciBrYmRfc2NhbGU7CS8qIGtleWJvYXJkIHNjYWxpbmcgKi8KKy0JdW5zaWduZWQgY2hhciBoYXJtb25pYzsJCS8qIDQgYml0czogaGFybW9uaWMgYW5kIG11bHRpcGxpZXIgKi8KKy0JdW5zaWduZWQgY2hhciBzY2FsZV9sZXZlbDsJLyogMiBiaXRzOiBkZWNyZWFzZSBvdXRwdXQgZnJlcSByaXNlcyAqLworLQl1bnNpZ25lZCBjaGFyIHZvbHVtZTsJCS8qIDYgYml0czogdm9sdW1lICovCistCistCXVuc2lnbmVkIGNoYXIgYXR0YWNrOwkJLyogNCBiaXRzOiBhdHRhY2sgcmF0ZSAqLworLQl1bnNpZ25lZCBjaGFyIGRlY2F5OwkJLyogNCBiaXRzOiBkZWNheSByYXRlICovCistCXVuc2lnbmVkIGNoYXIgc3VzdGFpbjsJCS8qIDQgYml0czogc3VzdGFpbiBsZXZlbCAqLworLQl1bnNpZ25lZCBjaGFyIHJlbGVhc2U7CQkvKiA0IGJpdHM6IHJlbGVhc2UgcmF0ZSAqLworLQorLQl1bnNpZ25lZCBjaGFyIGZlZWRiYWNrOwkJLyogMyBiaXRzOiBmZWVkYmFjayBmb3Igb3AwICovCistCXVuc2lnbmVkIGNoYXIgY29ubmVjdGlvbjsJLyogMCBmb3Igc2VyaWFsLCAxIGZvciBwYXJhbGxlbCAqLworLQl1bnNpZ25lZCBjaGFyIGxlZnQ7CQkvKiBzdGVyZW8gbGVmdCAqLworLQl1bnNpZ25lZCBjaGFyIHJpZ2h0OwkJLyogc3RlcmVvIHJpZ2h0ICovCistCXVuc2lnbmVkIGNoYXIgd2F2ZWZvcm07CQkvKiAzIGJpdHM6IHdhdmVmb3JtIHNoYXBlICovCistfTsKKy0KKy0vKgorLSAqICBUaGlzIGRlc2NyaWJlcyBhbiBGTSBub3RlIGJ5IGl0cyB2b2ljZSwgb2N0YXZlLCBmcmVxdWVuY3kgbnVtYmVyICgxMGJpdCkKKy0gKiAgYW5kIGtleSBvbi9vZmYuCistICovCistCistc3RydWN0IHNuZF9kbV9mbV9ub3RlIHsKKy0JdW5zaWduZWQgY2hhciB2b2ljZTsJLyogMC0xNyB2b2ljZSBjaGFubmVsICovCistCXVuc2lnbmVkIGNoYXIgb2N0YXZlOwkvKiAzIGJpdHM6IHdoYXQgb2N0YXZlIHRvIHBsYXkgKi8KKy0JdW5zaWduZWQgaW50IGZudW07CS8qIDEwIGJpdHM6IGZyZXF1ZW5jeSBudW1iZXIgKi8KKy0JdW5zaWduZWQgY2hhciBrZXlfb247CS8qIHNldCBmb3IgYWN0aXZlLCBjbGVhciBmb3Igc2lsZW50ICovCistfTsKKy0KKy0vKgorLSAqICBGTSBwYXJhbWV0ZXJzIHRoYXQgYXBwbHkgZ2xvYmFsbHkgdG8gYWxsIHZvaWNlcywgYW5kIHRodXMgYXJlIG5vdCAibm90ZXMiCistICovCistCistc3RydWN0IHNuZF9kbV9mbV9wYXJhbXMgeworLQl1bnNpZ25lZCBjaGFyIGFtX2RlcHRoOwkJLyogYW1wbGl0dWRlIG1vZHVsYXRpb24gZGVwdGggKDE9aGkpICovCistCXVuc2lnbmVkIGNoYXIgdmliX2RlcHRoOwkvKiB2aWJyYXRvIGRlcHRoICgxPWhpKSAqLworLQl1bnNpZ25lZCBjaGFyIGtiZF9zcGxpdDsJLyoga2V5Ym9hcmQgc3BsaXQgKi8KKy0JdW5zaWduZWQgY2hhciByaHl0aG07CQkvKiBwZXJjdXNzaW9uIG1vZGUgc2VsZWN0ICovCistCistCS8qIFRoaXMgYmxvY2sgaXMgdGhlIHBlcmN1c3Npb24gaW5zdHJ1bWVudCBkYXRhICovCistCXVuc2lnbmVkIGNoYXIgYmFzczsKKy0JdW5zaWduZWQgY2hhciBzbmFyZTsKKy0JdW5zaWduZWQgY2hhciB0b210b207CistCXVuc2lnbmVkIGNoYXIgY3ltYmFsOworLQl1bnNpZ25lZCBjaGFyIGhpaGF0OworLX07CistCistLyoKKy0gKiAgRk0gbW9kZSBpb2N0bCBzZXR0aW5ncworLSAqLworLQorLSNkZWZpbmUgU05EUlZfRE1fRk1fSU9DVExfSU5GTwkJX0lPUignSCcsIDB4MjAsIHN0cnVjdCBzbmRfZG1fZm1faW5mbykKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX1JFU0VUCQlfSU8gKCdIJywgMHgyMSkKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX1BMQVlfTk9URQlfSU9XKCdIJywgMHgyMiwgc3RydWN0IHNuZF9kbV9mbV9ub3RlKQorLSNkZWZpbmUgU05EUlZfRE1fRk1fSU9DVExfU0VUX1ZPSUNFCV9JT1coJ0gnLCAweDIzLCBzdHJ1Y3Qgc25kX2RtX2ZtX3ZvaWNlKQorLSNkZWZpbmUgU05EUlZfRE1fRk1fSU9DVExfU0VUX1BBUkFNUwlfSU9XKCdIJywgMHgyNCwgc3RydWN0IHNuZF9kbV9mbV9wYXJhbXMpCistI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9TRVRfTU9ERQlfSU9XKCdIJywgMHgyNSwgaW50KQorLS8qIGZvciBPUEwzIG9ubHkgKi8KKy0jZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX1NFVF9DT05ORUNUSU9OCV9JT1coJ0gnLCAweDI2LCBpbnQpCistLyogU0JJIHBhdGNoIG1hbmFnZW1lbnQgKi8KKy0jZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX0NMRUFSX1BBVENIRVMJX0lPICgnSCcsIDB4NDApCistCistI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfUkVTRVQJCTB4MjAKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX09TU19JT0NUTF9QTEFZX05PVEUJCTB4MjEKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX09TU19JT0NUTF9TRVRfVk9JQ0UJCTB4MjIKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX09TU19JT0NUTF9TRVRfUEFSQU1TCTB4MjMKKy0jZGVmaW5lIFNORFJWX0RNX0ZNX09TU19JT0NUTF9TRVRfTU9ERQkJMHgyNAorLSNkZWZpbmUgU05EUlZfRE1fRk1fT1NTX0lPQ1RMX1NFVF9PUEwJCTB4MjUKKy0KKy0vKgorLSAqIFBhdGNoIFJlY29yZCAtIGZpeGVkIHNpemUgZm9yIHdyaXRlCistICovCistCistI2RlZmluZSBGTV9LRVlfU0JJCSJTQklcMDMyIgorLSNkZWZpbmUgRk1fS0VZXzJPUAkiMk9QXDAzMiIKKy0jZGVmaW5lIEZNX0tFWV80T1AJIjRPUFwwMzIiCistCistc3RydWN0IHNiaV9wYXRjaCB7CistCXVuc2lnbmVkIGNoYXIgcHJvZzsKKy0JdW5zaWduZWQgY2hhciBiYW5rOworLQljaGFyIGtleVs0XTsKKy0JY2hhciBuYW1lWzI1XTsKKy0JY2hhciBleHRlbnNpb25bN107CistCXVuc2lnbmVkIGNoYXIgZGF0YVszMl07CistfTsKKy0KKy0jZW5kaWYgLyogX19TT1VORF9BU09VTkRfRk1fSCAqLworKyNpbmNsdWRlIDxhbHNhL3NvdW5kL3VhcGkvYXNvdW5kX2ZtLmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9lbXUxMGsxLmggYi9pbmNsdWRlL3NvdW5kL2VtdTEwazEuaAoraW5kZXggMDQyYzVhNmYuLmYwNmVjZWU1IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9lbXUxMGsxLmgKKysrKyBiL2luY2x1ZGUvc291bmQvZW11MTBrMS5oCitAQCAtMSwzODEgKzEsMiBAQAorLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZSAqLworLS8qCistICogIENvcHlyaWdodCAoYykgYnkgSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4sCistICoJCSAgICAgQ3JlYXRpdmUgTGFicywgSW5jLgorLSAqICBEZWZpbml0aW9ucyBmb3IgRU1VMTBLMSAoU0IgTGl2ZSEpIGNoaXBzCistICoKKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKy0gKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorLSAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0gKgorLSAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistICogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyBVU0EKKy0gKgorLSAqLworLSNpZm5kZWYgX1VBUElfX1NPVU5EX0VNVTEwSzFfSAorLSNkZWZpbmUgX1VBUElfX1NPVU5EX0VNVTEwSzFfSAorLQorLSNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorLSNpbmNsdWRlIDxzb3VuZC9hc291bmQuaD4KKy0KKy0vKgorLSAqIC0tLS0gRlg4MDEwIC0tLS0KKy0gKi8KKy0KKy0jZGVmaW5lIEVNVTEwSzFfQ0FSRF9DUkVBVElWRQkJCTB4MDAwMDAwMDAKKy0jZGVmaW5lIEVNVTEwSzFfQ0FSRF9FTVVBUFMJCQkweDAwMDAwMDAxCistCistI2RlZmluZSBFTVUxMEsxX0ZYODAxMF9QQ01fQ09VTlQJCTgKKy0KKy0vKgorLSAqIEZvbGxvd2luZyBkZWZpbml0aW9uIGlzIGNvcGllZCBmcm9tIGxpbnV4L3R5cGVzLmggdG8gc3VwcG9ydCBjb21waWxpbmcKKy0gKiB0aGlzIGhlYWRlciBmaWxlIGluIHVzZXJzcGFjZSBzaW5jZSB0aGV5IGFyZSBub3QgZ2VuZXJhbGx5IGF2YWlsYWJsZSBmb3IKKy0gKiB1YXBpIGhlYWRlcnMuCistICovCistI2RlZmluZSBfX0VNVTEwSzFfREVDTEFSRV9CSVRNQVAobmFtZSxiaXRzKSBcCistCXVuc2lnbmVkIGxvbmcgbmFtZVsoYml0cykgLyAoc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogOCldCistCistLyogaW5zdHJ1Y3Rpb24gc2V0ICovCistI2RlZmluZSBpTUFDMAkgMHgwMAkvKiBSID0gQSArIChYICogWSA+PiAzMSkgICA7IHNhdHVyYXRpb24gKi8KKy0jZGVmaW5lIGlNQUMxCSAweDAxCS8qIFIgPSBBICsgKC1YICogWSA+PiAzMSkgIDsgc2F0dXJhdGlvbiAqLworLSNkZWZpbmUgaU1BQzIJIDB4MDIJLyogUiA9IEEgKyAoWCAqIFkgPj4gMzEpICAgOyB3cmFwYXJvdW5kICovCistI2RlZmluZSBpTUFDMwkgMHgwMwkvKiBSID0gQSArICgtWCAqIFkgPj4gMzEpICA7IHdyYXBhcm91bmQgKi8KKy0jZGVmaW5lIGlNQUNJTlQwIDB4MDQJLyogUiA9IEEgKyBYICogWQkgICA7IHNhdHVyYXRpb24gKi8KKy0jZGVmaW5lIGlNQUNJTlQxIDB4MDUJLyogUiA9IEEgKyBYICogWQkgICA7IHdyYXBhcm91bmQgKDMxLWJpdCkgKi8KKy0jZGVmaW5lIGlBQ0MzCSAweDA2CS8qIFIgPSBBICsgWCArIFkJICAgOyBzYXR1cmF0aW9uICovCistI2RlZmluZSBpTUFDTVYgICAweDA3CS8qIFIgPSBBLCBhY2MgKz0gWCAqIFkgPj4gMzEgKi8KKy0jZGVmaW5lIGlBTkRYT1IgIDB4MDgJLyogUiA9IChBICYgWCkgXiBZICovCistI2RlZmluZSBpVFNUTkVHICAweDA5CS8qIFIgPSAoQSA+PSBZKSA/IFggOiB+WCAqLworLSNkZWZpbmUgaUxJTUlUR0UgMHgwYQkvKiBSID0gKEEgPj0gWSkgPyBYIDogWSAqLworLSNkZWZpbmUgaUxJTUlUTFQgMHgwYgkvKiBSID0gKEEgPCBZKSA/IFggOiBZICovCistI2RlZmluZSBpTE9HCSAweDBjCS8qIFIgPSBsaW5lYXJfZGF0YSwgQSAobG9nX2RhdGEpLCBYIChtYXhfZXhwKSwgWSAoZm9ybWF0X3dvcmQpICovCistI2RlZmluZSBpRVhQCSAweDBkCS8qIFIgPSBsb2dfZGF0YSwgQSAobGluZWFyX2RhdGEpLCBYIChtYXhfZXhwKSwgWSAoZm9ybWF0X3dvcmQpICovCistI2RlZmluZSBpSU5URVJQICAweDBlCS8qIFIgPSBBICsgKFggKiAoWSAtIEEpID4+IDMxKSAgOyBzYXR1cmF0aW9uICovCistI2RlZmluZSBpU0tJUCAgICAweDBmCS8qIFIgPSBBIChjY19yZWcpLCBYIChjb3VudCksIFkgKGNjX3Rlc3QpICovCistCistLyogR1BScyAqLworLSNkZWZpbmUgRlhCVVMoeCkJKDB4MDAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAqLworLSNkZWZpbmUgRVhUSU4oeCkJKDB4MTAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAqLworLSNkZWZpbmUgRVhUT1VUKHgpCSgweDIwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgcGh5c2ljYWwgb3V0cyAtPiBGWFdDIGxvdyAxNiBiaXRzICovCistI2RlZmluZSBGWEJVUzIoeCkJKDB4MzAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiBjb3BpZXMgb2YgZnggYnVzZXMgZm9yIGNhcHR1cmUgLT4gRlhXQyBoaWdoIDE2IGJpdHMgKi8KKy0JCQkJCS8qIE5COiAweDMxIGFuZCAweDMyIGFyZSBzaGFyZWQgd2l0aCBDZW50ZXIvTEZFIG9uIFNCIGxpdmUgNS4xICovCistCistI2RlZmluZSBDXzAwMDAwMDAwCTB4NDAKKy0jZGVmaW5lIENfMDAwMDAwMDEJMHg0MQorLSNkZWZpbmUgQ18wMDAwMDAwMgkweDQyCistI2RlZmluZSBDXzAwMDAwMDAzCTB4NDMKKy0jZGVmaW5lIENfMDAwMDAwMDQJMHg0NAorLSNkZWZpbmUgQ18wMDAwMDAwOAkweDQ1CistI2RlZmluZSBDXzAwMDAwMDEwCTB4NDYKKy0jZGVmaW5lIENfMDAwMDAwMjAJMHg0NworLSNkZWZpbmUgQ18wMDAwMDEwMAkweDQ4CistI2RlZmluZSBDXzAwMDEwMDAwCTB4NDkKKy0jZGVmaW5lIENfMDAwODAwMDAJMHg0YQorLSNkZWZpbmUgQ18xMDAwMDAwMAkweDRiCistI2RlZmluZSBDXzIwMDAwMDAwCTB4NGMKKy0jZGVmaW5lIENfNDAwMDAwMDAJMHg0ZAorLSNkZWZpbmUgQ184MDAwMDAwMAkweDRlCistI2RlZmluZSBDXzdmZmZmZmZmCTB4NGYKKy0jZGVmaW5lIENfZmZmZmZmZmYJMHg1MAorLSNkZWZpbmUgQ19mZmZmZmZmZQkweDUxCistI2RlZmluZSBDX2MwMDAwMDAwCTB4NTIKKy0jZGVmaW5lIENfNGYxYmJjZGMJMHg1MworLSNkZWZpbmUgQ181YTdlZjlkYgkweDU0CistI2RlZmluZSBDXzAwMTAwMDAwCTB4NTUJCS8qID8/ICovCistI2RlZmluZSBHUFJfQUNDVQkweDU2CQkvKiBBQ0NVTSwgYWNjdW11bGF0b3IgKi8KKy0jZGVmaW5lIEdQUl9DT05ECTB4NTcJCS8qIENDUiwgY29uZGl0aW9uIHJlZ2lzdGVyICovCistI2RlZmluZSBHUFJfTk9JU0UwCTB4NTgJCS8qIG5vaXNlIHNvdXJjZSAqLworLSNkZWZpbmUgR1BSX05PSVNFMQkweDU5CQkvKiBub2lzZSBzb3VyY2UgKi8KKy0jZGVmaW5lIEdQUl9JUlEJCTB4NWEJCS8qIElSUSByZWdpc3RlciAqLworLSNkZWZpbmUgR1BSX0RCQUMJMHg1YgkJLyogVFJBTSBEZWxheSBCYXNlIEFkZHJlc3MgQ291bnRlciAqLworLSNkZWZpbmUgR1BSKHgpCQkoRlhHUFJFR0JBU0UgKyAoeCkpIC8qIGZyZWUgR1BSczogeCA9IDB4MDAgLSAweGZmICovCistI2RlZmluZSBJVFJBTV9EQVRBKHgpCShUQU5LTUVNREFUQVJFR0JBU0UgKyAweDAwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4N2YgKi8KKy0jZGVmaW5lIEVUUkFNX0RBVEEoeCkJKFRBTktNRU1EQVRBUkVHQkFTRSArIDB4ODAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHgxZiAqLworLSNkZWZpbmUgSVRSQU1fQUREUih4KQkoVEFOS01FTUFERFJSRUdCQVNFICsgMHgwMCArICh4KSkgLyogeCA9IDB4MDAgLSAweDdmICovCistI2RlZmluZSBFVFJBTV9BRERSKHgpCShUQU5LTUVNQUREUlJFR0JBU0UgKyAweDgwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4MWYgKi8KKy0KKy0jZGVmaW5lIEFfSVRSQU1fREFUQSh4KQkoVEFOS01FTURBVEFSRUdCQVNFICsgMHgwMCArICh4KSkgLyogeCA9IDB4MDAgLSAweGJmICovCistI2RlZmluZSBBX0VUUkFNX0RBVEEoeCkJKFRBTktNRU1EQVRBUkVHQkFTRSArIDB4YzAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHgzZiAqLworLSNkZWZpbmUgQV9JVFJBTV9BRERSKHgpCShUQU5LTUVNQUREUlJFR0JBU0UgKyAweDAwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4YmYgKi8KKy0jZGVmaW5lIEFfRVRSQU1fQUREUih4KQkoVEFOS01FTUFERFJSRUdCQVNFICsgMHhjMCArICh4KSkgLyogeCA9IDB4MDAgLSAweDNmICovCistI2RlZmluZSBBX0lUUkFNX0NUTCh4KQkoQV9UQU5LTUVNQ1RMUkVHQkFTRSArIDB4MDAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHhiZiAqLworLSNkZWZpbmUgQV9FVFJBTV9DVEwoeCkJKEFfVEFOS01FTUNUTFJFR0JBU0UgKyAweGMwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4M2YgKi8KKy0KKy0jZGVmaW5lIEFfRlhCVVMoeCkJKDB4MDAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgzZiBGWCBidXNlcyAqLworLSNkZWZpbmUgQV9FWFRJTih4KQkoMHg0MCArICh4KSkJLyogeCA9IDB4MDAgLSAweDBmIHBoeXNpY2FsIGlucyAqLworLSNkZWZpbmUgQV9QMTZWSU4oeCkJKDB4NTAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiBwMTZ2IGlucyAoQTIgb25seSkgIkVNVTMyIGlucHV0cyIgKi8KKy0jZGVmaW5lIEFfRVhUT1VUKHgpCSgweDYwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MWYgcGh5c2ljYWwgb3V0cyAtPiBBX0ZYV0MxIDB4NzktN2YgdW5rbm93biAgICovCistI2RlZmluZSBBX0ZYQlVTMih4KQkoMHg4MCArICh4KSkJLyogeCA9IDB4MDAgLSAweDFmIGV4dHJhIG91dHMgdXNlZCBmb3IgRUZYIGNhcHR1cmUgLT4gQV9GWFdDMiAqLworLSNkZWZpbmUgQV9FTVUzMk9VVEgoeCkJKDB4YTAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAiRU1VMzJfT1VUXzEwIC0gXzFGIiAtID8/PyAqLworLSNkZWZpbmUgQV9FTVUzMk9VVEwoeCkJKDB4YjAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAiRU1VMzJfT1VUXzEgLSBfRiIgLSA/Pz8gKi8KKy0jZGVmaW5lIEEzX0VNVTMySU4oeCkJKDB4MTYwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4M2YgIkVNVTMyX0lOXzAwIC0gXzNGIiAtIE9ubHkgd2hlbiAuZGV2aWNlID0gMHgwMDA4ICovCistI2RlZmluZSBBM19FTVUzMk9VVCh4KQkoMHgxRTAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAiRU1VMzJfT1VUXzAwIC0gXzNGIiAtIE9ubHkgd2hlbiAuZGV2aWNlID0gMHgwMDA4ICovCistI2RlZmluZSBBX0dQUih4KQkoQV9GWEdQUkVHQkFTRSArICh4KSkKKy0KKy0vKiBjY19yZWcgY29uc3RhbnRzICovCistI2RlZmluZSBDQ19SRUdfTk9STUFMSVpFRCBDXzAwMDAwMDAxCistI2RlZmluZSBDQ19SRUdfQk9SUk9XCUNfMDAwMDAwMDIKKy0jZGVmaW5lIENDX1JFR19NSU5VUwlDXzAwMDAwMDA0CistI2RlZmluZSBDQ19SRUdfWkVSTwlDXzAwMDAwMDA4CistI2RlZmluZSBDQ19SRUdfU0FUVVJBVEUJQ18wMDAwMDAxMAorLSNkZWZpbmUgQ0NfUkVHX05PTlpFUk8JQ18wMDAwMDEwMAorLQorLS8qIEZYIGJ1c2VzICovCistI2RlZmluZSBGWEJVU19QQ01fTEVGVAkJMHgwMAorLSNkZWZpbmUgRlhCVVNfUENNX1JJR0hUCQkweDAxCistI2RlZmluZSBGWEJVU19QQ01fTEVGVF9SRUFSCTB4MDIKKy0jZGVmaW5lIEZYQlVTX1BDTV9SSUdIVF9SRUFSCTB4MDMKKy0jZGVmaW5lIEZYQlVTX01JRElfTEVGVAkJMHgwNAorLSNkZWZpbmUgRlhCVVNfTUlESV9SSUdIVAkweDA1CistI2RlZmluZSBGWEJVU19QQ01fQ0VOVEVSCTB4MDYKKy0jZGVmaW5lIEZYQlVTX1BDTV9MRkUJCTB4MDcKKy0jZGVmaW5lIEZYQlVTX1BDTV9MRUZUX0ZST05UCTB4MDgKKy0jZGVmaW5lIEZYQlVTX1BDTV9SSUdIVF9GUk9OVAkweDA5CistI2RlZmluZSBGWEJVU19NSURJX1JFVkVSQgkweDBjCistI2RlZmluZSBGWEJVU19NSURJX0NIT1JVUwkweDBkCistI2RlZmluZSBGWEJVU19QQ01fTEVGVF9TSURFCTB4MGUKKy0jZGVmaW5lIEZYQlVTX1BDTV9SSUdIVF9TSURFCTB4MGYKKy0jZGVmaW5lIEZYQlVTX1BUX0xFRlQJCTB4MTQKKy0jZGVmaW5lIEZYQlVTX1BUX1JJR0hUCQkweDE1CistCistLyogSW5wdXRzICovCistI2RlZmluZSBFWFRJTl9BQzk3X0wJICAgMHgwMAkvKiBBQyc5NyBjYXB0dXJlIGNoYW5uZWwgLSBsZWZ0ICovCistI2RlZmluZSBFWFRJTl9BQzk3X1IJICAgMHgwMQkvKiBBQyc5NyBjYXB0dXJlIGNoYW5uZWwgLSByaWdodCAqLworLSNkZWZpbmUgRVhUSU5fU1BESUZfQ0RfTCAgIDB4MDIJLyogaW50ZXJuYWwgUy9QRElGIENEIC0gb25ib2FyZCAtIGxlZnQgKi8KKy0jZGVmaW5lIEVYVElOX1NQRElGX0NEX1IgICAweDAzCS8qIGludGVybmFsIFMvUERJRiBDRCAtIG9uYm9hcmQgLSByaWdodCAqLworLSNkZWZpbmUgRVhUSU5fWk9PTV9MCSAgIDB4MDQJLyogWm9vbSBWaWRlbyBJMlMgLSBsZWZ0ICovCistI2RlZmluZSBFWFRJTl9aT09NX1IJICAgMHgwNQkvKiBab29tIFZpZGVvIEkyUyAtIHJpZ2h0ICovCistI2RlZmluZSBFWFRJTl9UT1NMSU5LX0wJICAgMHgwNgkvKiBMaXZlRHJpdmUgLSBUT1NMaW5rIE9wdGljYWwgLSBsZWZ0ICovCistI2RlZmluZSBFWFRJTl9UT1NMSU5LX1IgICAgMHgwNwkvKiBMaXZlRHJpdmUgLSBUT1NMaW5rIE9wdGljYWwgLSByaWdodCAqLworLSNkZWZpbmUgRVhUSU5fTElORTFfTAkgICAweDA4CS8qIExpdmVEcml2ZSAtIExpbmUvTWljIDEgLSBsZWZ0ICovCistI2RlZmluZSBFWFRJTl9MSU5FMV9SCSAgIDB4MDkJLyogTGl2ZURyaXZlIC0gTGluZS9NaWMgMSAtIHJpZ2h0ICovCistI2RlZmluZSBFWFRJTl9DT0FYX1NQRElGX0wgMHgwYQkvKiBMaXZlRHJpdmUgLSBDb2F4aWFsIFMvUERJRiAtIGxlZnQgKi8KKy0jZGVmaW5lIEVYVElOX0NPQVhfU1BESUZfUiAweDBiIC8qIExpdmVEcml2ZSAtIENvYXhpYWwgUy9QRElGIC0gcmlnaHQgKi8KKy0jZGVmaW5lIEVYVElOX0xJTkUyX0wJICAgMHgwYwkvKiBMaXZlRHJpdmUgLSBMaW5lL01pYyAyIC0gbGVmdCAqLworLSNkZWZpbmUgRVhUSU5fTElORTJfUgkgICAweDBkCS8qIExpdmVEcml2ZSAtIExpbmUvTWljIDIgLSByaWdodCAqLworLQorLS8qIE91dHB1dHMgKi8KKy0jZGVmaW5lIEVYVE9VVF9BQzk3X0wJICAgMHgwMAkvKiBBQyc5NyBwbGF5YmFjayBjaGFubmVsIC0gbGVmdCAqLworLSNkZWZpbmUgRVhUT1VUX0FDOTdfUgkgICAweDAxCS8qIEFDJzk3IHBsYXliYWNrIGNoYW5uZWwgLSByaWdodCAqLworLSNkZWZpbmUgRVhUT1VUX1RPU0xJTktfTCAgIDB4MDIJLyogTGl2ZURyaXZlIC0gVE9TTGluayBPcHRpY2FsIC0gbGVmdCAqLworLSNkZWZpbmUgRVhUT1VUX1RPU0xJTktfUiAgIDB4MDMJLyogTGl2ZURyaXZlIC0gVE9TTGluayBPcHRpY2FsIC0gcmlnaHQgKi8KKy0jZGVmaW5lIEVYVE9VVF9BQzk3X0NFTlRFUiAweDA0CS8qIFNCIExpdmUgNS4xIC0gY2VudGVyICovCistI2RlZmluZSBFWFRPVVRfQUM5N19MRkUJICAgMHgwNSAvKiBTQiBMaXZlIDUuMSAtIExGRSAqLworLSNkZWZpbmUgRVhUT1VUX0hFQURQSE9ORV9MIDB4MDYJLyogTGl2ZURyaXZlIC0gSGVhZHBob25lIC0gbGVmdCAqLworLSNkZWZpbmUgRVhUT1VUX0hFQURQSE9ORV9SIDB4MDcJLyogTGl2ZURyaXZlIC0gSGVhZHBob25lIC0gcmlnaHQgKi8KKy0jZGVmaW5lIEVYVE9VVF9SRUFSX0wJICAgMHgwOAkvKiBSZWFyIGNoYW5uZWwgLSBsZWZ0ICovCistI2RlZmluZSBFWFRPVVRfUkVBUl9SCSAgIDB4MDkJLyogUmVhciBjaGFubmVsIC0gcmlnaHQgKi8KKy0jZGVmaW5lIEVYVE9VVF9BRENfQ0FQX0wgICAweDBhCS8qIEFEQyBDYXB0dXJlIGJ1ZmZlciAtIGxlZnQgKi8KKy0jZGVmaW5lIEVYVE9VVF9BRENfQ0FQX1IgICAweDBiCS8qIEFEQyBDYXB0dXJlIGJ1ZmZlciAtIHJpZ2h0ICovCistI2RlZmluZSBFWFRPVVRfTUlDX0NBUAkgICAweDBjCS8qIE1JQyBDYXB0dXJlIGJ1ZmZlciAqLworLSNkZWZpbmUgRVhUT1VUX0FDOTdfUkVBUl9MIDB4MGQJLyogU0IgTGl2ZSA1LjEgKGMpIDIwMDMgLSBSZWFyIExlZnQgKi8KKy0jZGVmaW5lIEVYVE9VVF9BQzk3X1JFQVJfUiAweDBlCS8qIFNCIExpdmUgNS4xIChjKSAyMDAzIC0gUmVhciBSaWdodCAqLworLSNkZWZpbmUgRVhUT1VUX0FDRU5URVIJICAgMHgxMSAvKiBBbmFsb2cgQ2VudGVyICovCistI2RlZmluZSBFWFRPVVRfQUxGRQkgICAweDEyIC8qIEFuYWxvZyBMRkUgKi8KKy0KKy0vKiBBdWRpZ3kgSW5wdXRzICovCistI2RlZmluZSBBX0VYVElOX0FDOTdfTAkJMHgwMAkvKiBBQyc5NyBjYXB0dXJlIGNoYW5uZWwgLSBsZWZ0ICovCistI2RlZmluZSBBX0VYVElOX0FDOTdfUgkJMHgwMQkvKiBBQyc5NyBjYXB0dXJlIGNoYW5uZWwgLSByaWdodCAqLworLSNkZWZpbmUgQV9FWFRJTl9TUERJRl9DRF9MCTB4MDIJLyogZGlnaXRhbCBDRCBsZWZ0ICovCistI2RlZmluZSBBX0VYVElOX1NQRElGX0NEX1IJMHgwMwkvKiBkaWdpdGFsIENEIGxlZnQgKi8KKy0jZGVmaW5lIEFfRVhUSU5fT1BUX1NQRElGX0wgICAgIDB4MDQgICAgLyogYXVkaWd5IGRyaXZlIE9wdGljYWwgU1BESUYgLSBsZWZ0ICovCistI2RlZmluZSBBX0VYVElOX09QVF9TUERJRl9SICAgICAweDA1ICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgKi8gCistI2RlZmluZSBBX0VYVElOX0xJTkUyX0wJCTB4MDgJLyogYXVkaWd5IGRyaXZlIGxpbmUyL21pYzIgLSBsZWZ0ICovCistI2RlZmluZSBBX0VYVElOX0xJTkUyX1IJCTB4MDkJLyogICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodCAqLworLSNkZWZpbmUgQV9FWFRJTl9BRENfTAkJMHgwYSAgICAvKiBQaGlsaXBzIEFEQyAtIGxlZnQgKi8KKy0jZGVmaW5lIEFfRVhUSU5fQURDX1IJCTB4MGIgICAgLyogICAgICAgICAgICAgICByaWdodCAqLworLSNkZWZpbmUgQV9FWFRJTl9BVVgyX0wJCTB4MGMJLyogYXVkaWd5IGRyaXZlIGF1eDIgLSBsZWZ0ICovCistI2RlZmluZSBBX0VYVElOX0FVWDJfUgkJMHgwZAkvKiAgICAgICAgICAgICAgICAgICAtIHJpZ2h0ICovCistCistLyogQXVkaWdpeSBPdXRwdXRzICovCistI2RlZmluZSBBX0VYVE9VVF9GUk9OVF9MCTB4MDAJLyogZGlnaXRhbCBmcm9udCBsZWZ0ICovCistI2RlZmluZSBBX0VYVE9VVF9GUk9OVF9SCTB4MDEJLyogICAgICAgICAgICAgICByaWdodCAqLworLSNkZWZpbmUgQV9FWFRPVVRfQ0VOVEVSCQkweDAyCS8qIGRpZ2l0YWwgZnJvbnQgY2VudGVyICovCistI2RlZmluZSBBX0VYVE9VVF9MRkUJCTB4MDMJLyogZGlnaXRhbCBmcm9udCBsZmUgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0hFQURQSE9ORV9MCTB4MDQJLyogaGVhZHBob25lIGF1ZGlneSBkcml2ZSBsZWZ0ICovCistI2RlZmluZSBBX0VYVE9VVF9IRUFEUEhPTkVfUgkweDA1CS8qICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX1JFQVJfTAkJMHgwNgkvKiBkaWdpdGFsIHJlYXIgbGVmdCAqLworLSNkZWZpbmUgQV9FWFRPVVRfUkVBUl9SCQkweDA3CS8qICAgICAgICAgICAgICByaWdodCAqLworLSNkZWZpbmUgQV9FWFRPVVRfQUZST05UX0wJMHgwOAkvKiBhbmFsb2cgZnJvbnQgbGVmdCAqLworLSNkZWZpbmUgQV9FWFRPVVRfQUZST05UX1IJMHgwOQkvKiAgICAgICAgICAgICAgcmlnaHQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0FDRU5URVIJMHgwYQkvKiBhbmFsb2cgY2VudGVyICovCistI2RlZmluZSBBX0VYVE9VVF9BTEZFCQkweDBiCS8qIGFuYWxvZyBMRkUgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0FTSURFX0wJMHgwYwkvKiBhbmFsb2cgc2lkZSBsZWZ0ICAtIEF1ZGlneSAyIFpTICovCistI2RlZmluZSBBX0VYVE9VVF9BU0lERV9SCTB4MGQJLyogICAgICAgICAgICAgcmlnaHQgLSBBdWRpZ3kgMiBaUyAqLworLSNkZWZpbmUgQV9FWFRPVVRfQVJFQVJfTAkweDBlCS8qIGFuYWxvZyByZWFyIGxlZnQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0FSRUFSX1IJMHgwZgkvKiAgICAgICAgICAgICByaWdodCAqLworLSNkZWZpbmUgQV9FWFRPVVRfQUM5N19MCQkweDEwCS8qIEFDOTcgbGVmdCAoZnJvbnQpICovCistI2RlZmluZSBBX0VYVE9VVF9BQzk3X1IJCTB4MTEJLyogICAgICByaWdodCAqLworLSNkZWZpbmUgQV9FWFRPVVRfQURDX0NBUF9MCTB4MTYJLyogQURDIGNhcHR1cmUgYnVmZmVyIGxlZnQgKi8KKy0jZGVmaW5lIEFfRVhUT1VUX0FEQ19DQVBfUgkweDE3CS8qICAgICAgICAgICAgICAgICAgICByaWdodCAqLworLSNkZWZpbmUgQV9FWFRPVVRfTUlDX0NBUAkweDE4CS8qIE1pYyBjYXB0dXJlIGJ1ZmZlciAqLworLQorLS8qIEF1ZGlneSBjb25zdGFudHMgKi8KKy0jZGVmaW5lIEFfQ18wMDAwMDAwMAkweGMwCistI2RlZmluZSBBX0NfMDAwMDAwMDEJMHhjMQorLSNkZWZpbmUgQV9DXzAwMDAwMDAyCTB4YzIKKy0jZGVmaW5lIEFfQ18wMDAwMDAwMwkweGMzCistI2RlZmluZSBBX0NfMDAwMDAwMDQJMHhjNAorLSNkZWZpbmUgQV9DXzAwMDAwMDA4CTB4YzUKKy0jZGVmaW5lIEFfQ18wMDAwMDAxMAkweGM2CistI2RlZmluZSBBX0NfMDAwMDAwMjAJMHhjNworLSNkZWZpbmUgQV9DXzAwMDAwMTAwCTB4YzgKKy0jZGVmaW5lIEFfQ18wMDAxMDAwMAkweGM5CistI2RlZmluZSBBX0NfMDAwMDA4MDAJMHhjYQorLSNkZWZpbmUgQV9DXzEwMDAwMDAwCTB4Y2IKKy0jZGVmaW5lIEFfQ18yMDAwMDAwMAkweGNjCistI2RlZmluZSBBX0NfNDAwMDAwMDAJMHhjZAorLSNkZWZpbmUgQV9DXzgwMDAwMDAwCTB4Y2UKKy0jZGVmaW5lIEFfQ183ZmZmZmZmZgkweGNmCistI2RlZmluZSBBX0NfZmZmZmZmZmYJMHhkMAorLSNkZWZpbmUgQV9DX2ZmZmZmZmZlCTB4ZDEKKy0jZGVmaW5lIEFfQ19jMDAwMDAwMAkweGQyCistI2RlZmluZSBBX0NfNGYxYmJjZGMJMHhkMworLSNkZWZpbmUgQV9DXzVhN2VmOWRiCTB4ZDQKKy0jZGVmaW5lIEFfQ18wMDEwMDAwMAkweGQ1CistI2RlZmluZSBBX0dQUl9BQ0NVCTB4ZDYJCS8qIEFDQ1VNLCBhY2N1bXVsYXRvciAqLworLSNkZWZpbmUgQV9HUFJfQ09ORAkweGQ3CQkvKiBDQ1IsIGNvbmRpdGlvbiByZWdpc3RlciAqLworLSNkZWZpbmUgQV9HUFJfTk9JU0UwCTB4ZDgJCS8qIG5vaXNlIHNvdXJjZSAqLworLSNkZWZpbmUgQV9HUFJfTk9JU0UxCTB4ZDkJCS8qIG5vaXNlIHNvdXJjZSAqLworLSNkZWZpbmUgQV9HUFJfSVJRCTB4ZGEJCS8qIElSUSByZWdpc3RlciAqLworLSNkZWZpbmUgQV9HUFJfREJBQwkweGRiCQkvKiBUUkFNIERlbGF5IEJhc2UgQWRkcmVzcyBDb3VudGVyIC0gaW50ZXJuYWwgKi8KKy0jZGVmaW5lIEFfR1BSX0RCQUNFCTB4ZGUJCS8qIFRSQU0gRGVsYXkgQmFzZSBBZGRyZXNzIENvdW50ZXIgLSBleHRlcm5hbCAqLworLQorLS8qIGRlZmluaXRpb25zIGZvciBkZWJ1ZyByZWdpc3RlciAqLworLSNkZWZpbmUgRU1VMTBLMV9EQkdfWkMJCQkweDgwMDAwMDAwCS8qIHplcm8gdHJhbSBjb3VudGVyICovCistI2RlZmluZSBFTVUxMEsxX0RCR19TQVRVUkFUSU9OX09DQ1VSRUQJMHgwMjAwMDAwMAkvKiBzYXR1cmF0aW9uIGNvbnRyb2wgKi8KKy0jZGVmaW5lIEVNVTEwSzFfREJHX1NBVFVSQVRJT05fQUREUgkweDAxZmYwMDAwCS8qIHNhdHVyYXRpb24gYWRkcmVzcyAqLworLSNkZWZpbmUgRU1VMTBLMV9EQkdfU0lOR0xFX1NURVAJCTB4MDAwMDgwMDAJLyogc2luZ2xlIHN0ZXAgbW9kZSAqLworLSNkZWZpbmUgRU1VMTBLMV9EQkdfU1RFUAkJMHgwMDAwNDAwMAkvKiBzdGFydCBzaW5nbGUgc3RlcCAqLworLSNkZWZpbmUgRU1VMTBLMV9EQkdfQ09ORElUSU9OX0NPREUJMHgwMDAwM2UwMAkvKiBjb25kaXRpb24gY29kZSAqLworLSNkZWZpbmUgRU1VMTBLMV9EQkdfU0lOR0xFX1NURVBfQUREUgkweDAwMDAwMWZmCS8qIHNpbmdsZSBzdGVwIGFkZHJlc3MgKi8KKy0KKy0vKiB0YW5rIG1lbW9yeSBhZGRyZXNzIGxpbmUgKi8KKy0jaWZuZGVmIF9fS0VSTkVMX18KKy0jZGVmaW5lIFRBTktNRU1BRERSUkVHX0FERFJfTUFTSyAweDAwMGZmZmZmCS8qIDIwIGJpdCB0YW5rIGFkZHJlc3MgZmllbGQJCQkqLworLSNkZWZpbmUgVEFOS01FTUFERFJSRUdfQ0xFQVIJIDB4MDA4MDAwMDAJLyogQ2xlYXIgdGFuayBtZW1vcnkJCQkJKi8KKy0jZGVmaW5lIFRBTktNRU1BRERSUkVHX0FMSUdOCSAweDAwNDAwMDAwCS8qIEFsaWduIHJlYWQgb3Igd3JpdGUgcmVsYXRpdmUgdG8gdGFuayBhY2Nlc3MJKi8KKy0jZGVmaW5lIFRBTktNRU1BRERSUkVHX1dSSVRFCSAweDAwMjAwMDAwCS8qIFdyaXRlIHRvIHRhbmsgbWVtb3J5CQkJCSovCistI2RlZmluZSBUQU5LTUVNQUREUlJFR19SRUFECSAweDAwMTAwMDAwCS8qIFJlYWQgZnJvbSB0YW5rIG1lbW9yeQkJCSovCistI2VuZGlmCistCistc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9pbmZvIHsKKy0JdW5zaWduZWQgaW50IGludGVybmFsX3RyYW1fc2l6ZTsJLyogaW4gc2FtcGxlcyAqLworLQl1bnNpZ25lZCBpbnQgZXh0ZXJuYWxfdHJhbV9zaXplOwkvKiBpbiBzYW1wbGVzICovCistCWNoYXIgZnhidXNfbmFtZXNbMTZdWzMyXTsJCS8qIG5hbWVzIG9mIEZYQlVTZXMgKi8KKy0JY2hhciBleHRpbl9uYW1lc1sxNl1bMzJdOwkJLyogbmFtZXMgb2YgZXh0ZXJuYWwgaW5wdXRzICovCistCWNoYXIgZXh0b3V0X25hbWVzWzMyXVszMl07CQkvKiBuYW1lcyBvZiBleHRlcm5hbCBvdXRwdXRzICovCistCXVuc2lnbmVkIGludCBncHJfY29udHJvbHM7CQkvKiBjb3VudCBvZiBHUFIgY29udHJvbHMgKi8KKy19OworLQorLSNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fTk9ORQkJMAorLSNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fVEFCTEUxMDAJMQorLSNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fQkFTUwkJMgorLSNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fVFJFQkxFCQkzCistI2RlZmluZSBFTVUxMEsxX0dQUl9UUkFOU0xBVElPTl9PTk9GRgkJNAorLQorLXN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHIgeworLQlzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkIGlkOwkJLyogZnVsbCBjb250cm9sIElEIGRlZmluaXRpb24gKi8KKy0JdW5zaWduZWQgaW50IHZjb3VudDsJCS8qIHZpc2libGUgY291bnQgKi8KKy0JdW5zaWduZWQgaW50IGNvdW50OwkJLyogY291bnQgb2YgR1BSICgxLi4xNikgKi8KKy0JdW5zaWduZWQgc2hvcnQgZ3ByWzMyXTsJCS8qIEdQUiBudW1iZXIocykgKi8KKy0JdW5zaWduZWQgaW50IHZhbHVlWzMyXTsJCS8qIGluaXRpYWwgdmFsdWVzICovCistCXVuc2lnbmVkIGludCBtaW47CQkvKiBtaW5pbXVtIHJhbmdlICovCistCXVuc2lnbmVkIGludCBtYXg7CQkvKiBtYXhpbXVtIHJhbmdlICovCistCXVuc2lnbmVkIGludCB0cmFuc2xhdGlvbjsJLyogdHJhbnNsYXRpb24gdHlwZSAoRU1VMTBLMV9HUFJfVFJBTlNMQVRJT04qKSAqLworLQljb25zdCB1bnNpZ25lZCBpbnQgKnRsdjsKKy19OworLQorLS8qIG9sZCBBQkkgd2l0aG91dCBUTFYgc3VwcG9ydCAqLworLXN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9vbGRfZ3ByIHsKKy0Jc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBpZDsKKy0JdW5zaWduZWQgaW50IHZjb3VudDsKKy0JdW5zaWduZWQgaW50IGNvdW50OworLQl1bnNpZ25lZCBzaG9ydCBncHJbMzJdOworLQl1bnNpZ25lZCBpbnQgdmFsdWVbMzJdOworLQl1bnNpZ25lZCBpbnQgbWluOworLQl1bnNpZ25lZCBpbnQgbWF4OworLQl1bnNpZ25lZCBpbnQgdHJhbnNsYXRpb247CistfTsKKy0KKy1zdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvZGUgeworLQljaGFyIG5hbWVbMTI4XTsKKy0KKy0JX19FTVUxMEsxX0RFQ0xBUkVfQklUTUFQKGdwcl92YWxpZCwgMHgyMDApOyAvKiBiaXRtYXNrIG9mIHZhbGlkIGluaXRpYWxpemVycyAqLworLQlfX3UzMiBfX3VzZXIgKmdwcl9tYXA7CQkvKiBpbml0aWFsaXplcnMgKi8KKy0KKy0JdW5zaWduZWQgaW50IGdwcl9hZGRfY29udHJvbF9jb3VudDsgLyogY291bnQgb2YgR1BSIGNvbnRyb2xzIHRvIGFkZC9yZXBsYWNlICovCistCXN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHIgX191c2VyICpncHJfYWRkX2NvbnRyb2xzOyAvKiBHUFIgY29udHJvbHMgdG8gYWRkL3JlcGxhY2UgKi8KKy0KKy0JdW5zaWduZWQgaW50IGdwcl9kZWxfY29udHJvbF9jb3VudDsgLyogY291bnQgb2YgR1BSIGNvbnRyb2xzIHRvIHJlbW92ZSAqLworLQlzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkIF9fdXNlciAqZ3ByX2RlbF9jb250cm9sczsgLyogSURzIG9mIEdQUiBjb250cm9scyB0byByZW1vdmUgKi8KKy0KKy0JdW5zaWduZWQgaW50IGdwcl9saXN0X2NvbnRyb2xfY291bnQ7IC8qIGNvdW50IG9mIEdQUiBjb250cm9scyB0byBsaXN0ICovCistCXVuc2lnbmVkIGludCBncHJfbGlzdF9jb250cm9sX3RvdGFsOyAvKiB0b3RhbCBjb3VudCBvZiBHUFIgY29udHJvbHMgKi8KKy0Jc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb250cm9sX2dwciBfX3VzZXIgKmdwcl9saXN0X2NvbnRyb2xzOyAvKiBsaXN0ZWQgR1BSIGNvbnRyb2xzICovCistCistCV9fRU1VMTBLMV9ERUNMQVJFX0JJVE1BUCh0cmFtX3ZhbGlkLCAweDEwMCk7IC8qIGJpdG1hc2sgb2YgdmFsaWQgaW5pdGlhbGl6ZXJzICovCistCV9fdTMyIF9fdXNlciAqdHJhbV9kYXRhX21hcDsJICAvKiBkYXRhIGluaXRpYWxpemVycyAqLworLQlfX3UzMiBfX3VzZXIgKnRyYW1fYWRkcl9tYXA7CSAgLyogbWFwIGluaXRpYWxpemVycyAqLworLQorLQlfX0VNVTEwSzFfREVDTEFSRV9CSVRNQVAoY29kZV92YWxpZCwgMTAyNCk7IC8qIGJpdG1hc2sgb2YgdmFsaWQgaW5zdHJ1Y3Rpb25zICovCistCV9fdTMyIF9fdXNlciAqY29kZTsJCSAgLyogb25lIGluc3RydWN0aW9uIC0gNjQgYml0cyAqLworLX07CistCistc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF90cmFtIHsKKy0JdW5zaWduZWQgaW50IGFkZHJlc3M7CQkvKiAzMS5iaXQgPT0gMSAtPiBleHRlcm5hbCBUUkFNICovCistCXVuc2lnbmVkIGludCBzaXplOwkJLyogc2l6ZSBpbiBzYW1wbGVzICg0IGJ5dGVzKSAqLworLQl1bnNpZ25lZCBpbnQgKnNhbXBsZXM7CQkvKiBwb2ludGVyIHRvIHNhbXBsZXMgKDIwLWJpdCkgKi8KKy0JCQkJCS8qIE5VTEwtPmNsZWFyIG1lbW9yeSAqLworLX07CistCistc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9wY21fcmVjIHsKKy0JdW5zaWduZWQgaW50IHN1YnN0cmVhbTsJCS8qIHN1YnN0cmVhbSBudW1iZXIgKi8KKy0JdW5zaWduZWQgaW50IHJlczE7CQkvKiByZXNlcnZlZCAqLworLQl1bnNpZ25lZCBpbnQgY2hhbm5lbHM7CQkvKiAxNi1iaXQgY2hhbm5lbHMgY291bnQsIHplcm8gPSByZW1vdmUgdGhpcyBzdWJzdHJlYW0gKi8KKy0JdW5zaWduZWQgaW50IHRyYW1fc3RhcnQ7CS8qIHJpbmcgYnVmZmVyIHBvc2l0aW9uIGluIFRSQU0gKGluIHNhbXBsZXMpICovCistCXVuc2lnbmVkIGludCBidWZmZXJfc2l6ZTsJLyogY291bnQgb2YgYnVmZmVyZWQgc2FtcGxlcyAqLworLQl1bnNpZ25lZCBzaG9ydCBncHJfc2l6ZTsJCS8qIEdQUiBjb250YWluaW5nIHNpemUgb2YgcmluZ2J1ZmZlciBpbiBzYW1wbGVzIChob3N0KSAqLworLQl1bnNpZ25lZCBzaG9ydCBncHJfcHRyOwkJLyogR1BSIGNvbnRhaW5pbmcgY3VycmVudCBwb2ludGVyIGluIHRoZSByaW5nIGJ1ZmZlciAoaG9zdCA9IHJlc2V0LCBGWDgwMTApICovCistCXVuc2lnbmVkIHNob3J0IGdwcl9jb3VudDsJLyogR1BSIGNvbnRhaW5pbmcgY291bnQgb2Ygc2FtcGxlcyBiZXR3ZWVuIHR3byBpbnRlcnJ1cHRzIChob3N0KSAqLworLQl1bnNpZ25lZCBzaG9ydCBncHJfdG1wY291bnQ7CS8qIEdQUiBjb250YWluaW5nIGN1cnJlbnQgY291bnQgb2Ygc2FtcGxlcyB0byBpbnRlcnJ1cHQgKGhvc3QgPSBzZXQsIEZYODAxMCkgKi8KKy0JdW5zaWduZWQgc2hvcnQgZ3ByX3RyaWdnZXI7CS8qIEdQUiBjb250YWluaW5nIHRyaWdnZXIgKGFjdGl2YXRlKSBpbmZvcm1hdGlvbiAoaG9zdCkgKi8KKy0JdW5zaWduZWQgc2hvcnQgZ3ByX3J1bm5pbmc7CS8qIEdQUiBjb250YWluaW5nIGluZm8gaWYgUENNIGlzIHJ1bm5pbmcgKEZYODAxMCkgKi8KKy0JdW5zaWduZWQgY2hhciBwYWQ7CQkvKiByZXNlcnZlZCAqLworLQl1bnNpZ25lZCBjaGFyIGV0cmFtWzMyXTsJLyogZXh0ZXJuYWwgVFJBTSBhZGRyZXNzICYgZGF0YSAob25lIHBlciBjaGFubmVsKSAqLworLQl1bnNpZ25lZCBpbnQgcmVzMjsJCS8qIHJlc2VydmVkICovCistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfVkVSU0lPTgkJU05EUlZfUFJPVE9DT0xfVkVSU0lPTigxLCAwLCAxKQorLQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9JTkZPCV9JT1IgKCdIJywgMHgxMCwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9pbmZvKQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9DT0RFX1BPS0UJX0lPVyAoJ0gnLCAweDExLCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvZGUpCistI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX0NPREVfUEVFSwlfSU9XUignSCcsIDB4MTIsIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29kZSkKKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfVFJBTV9TRVRVUAlfSU9XICgnSCcsIDB4MjAsIGludCkKKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfVFJBTV9QT0tFCV9JT1cgKCdIJywgMHgyMSwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF90cmFtKQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9UUkFNX1BFRUsJX0lPV1IoJ0gnLCAweDIyLCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3RyYW0pCistI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1BDTV9QT0tFCV9JT1cgKCdIJywgMHgzMCwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9wY21fcmVjKQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9QQ01fUEVFSwlfSU9XUignSCcsIDB4MzEsIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfcGNtX3JlYykKKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfUFZFUlNJT04JX0lPUiAoJ0gnLCAweDQwLCBpbnQpCistI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1NUT1AJX0lPICAoJ0gnLCAweDgwKQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9DT05USU5VRQlfSU8gICgnSCcsIDB4ODEpCistI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1pFUk9fVFJBTV9DT1VOVEVSIF9JTyAoJ0gnLCAweDgyKQorLSNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9TSU5HTEVfU1RFUAlfSU9XICgnSCcsIDB4ODMsIGludCkKKy0jZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfREJHX1JFQUQJX0lPUiAoJ0gnLCAweDg0LCBpbnQpCistCistLyogdHlwZWRlZnMgZm9yIGNvbXBhdGliaWxpdHkgdG8gdXNlci1zcGFjZSAqLworLXR5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9pbmZvIGVtdTEwazFfZng4MDEwX2luZm9fdDsKKy10eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHIgZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHJfdDsKKy10eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29kZSBlbXUxMGsxX2Z4ODAxMF9jb2RlX3Q7CistdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3RyYW0gZW11MTBrMV9meDgwMTBfdHJhbV90OworLXR5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9wY21fcmVjIGVtdTEwazFfZng4MDEwX3BjbV90OworLQorLSNlbmRpZiAvKiBfVUFQSV9fU09VTkRfRU1VMTBLMV9IICovCisrI2luY2x1ZGUgPGFsc2Evc291bmQvdHlwZV9jb21wYXQuaD4KKysjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2VtdTEwazEuaD4KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2hkc3AuaCBiL2luY2x1ZGUvc291bmQvaGRzcC5oCitpbmRleCA1ZGMwYzNkYi4uNzhmYjc0NWIgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL2hkc3AuaAorKysrIGIvaW5jbHVkZS9zb3VuZC9oZHNwLmgKK0BAIC0xLDExMSArMSwyIEBACistLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjArIFdJVEggTGludXgtc3lzY2FsbC1ub3RlICovCistI2lmbmRlZiBfX1NPVU5EX0hEU1BfSAorLSNkZWZpbmUgX19TT1VORF9IRFNQX0gKKy0KKy0vKgorLSAqICAgQ29weXJpZ2h0IChDKSAyMDAzIFRob21hcyBDaGFyYm9ubmVsICh0aG9tYXNAdW5kYXRhLm9yZykKKy0gKiAgICAKKy0gKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKy0gKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCistICoKKy0gKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistICoKKy0gKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSAqICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCistICovCistCistI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CistCistI2RlZmluZSBIRFNQX01BVFJJWF9NSVhFUl9TSVpFIDIwNDgKKy0KKy1lbnVtIEhEU1BfSU9fVHlwZSB7CistCURpZ2lmYWNlLAorLQlNdWx0aWZhY2UsCistCUg5NjUyLAorLQlIOTYzMiwKKy0JUlBNLAorLQlVbmRlZmluZWQsCistfTsKKy0KKy1zdHJ1Y3QgaGRzcF9wZWFrX3JtcyB7CistCV9fdTMyIGlucHV0X3BlYWtzWzI2XTsKKy0JX191MzIgcGxheWJhY2tfcGVha3NbMjZdOworLQlfX3UzMiBvdXRwdXRfcGVha3NbMjhdOworLQlfX3U2NCBpbnB1dF9ybXNbMjZdOworLQlfX3U2NCBwbGF5YmFja19ybXNbMjZdOworLQkvKiBUaGVzZSBhcmUgb25seSB1c2VkIGZvciBIOTZ4eCBjYXJkcyAqLworLQlfX3U2NCBvdXRwdXRfcm1zWzI2XTsKKy19OworLQorLSNkZWZpbmUgU05EUlZfSERTUF9JT0NUTF9HRVRfUEVBS19STVMgX0lPUignSCcsIDB4NDAsIHN0cnVjdCBoZHNwX3BlYWtfcm1zKQorLQorLXN0cnVjdCBoZHNwX2NvbmZpZ19pbmZvIHsKKy0JdW5zaWduZWQgY2hhciBwcmVmX3N5bmNfcmVmOworLQl1bnNpZ25lZCBjaGFyIHdvcmRjbG9ja19zeW5jX2NoZWNrOworLQl1bnNpZ25lZCBjaGFyIHNwZGlmX3N5bmNfY2hlY2s7CistCXVuc2lnbmVkIGNoYXIgYWRhdHN5bmNfc3luY19jaGVjazsKKy0JdW5zaWduZWQgY2hhciBhZGF0X3N5bmNfY2hlY2tbM107CistCXVuc2lnbmVkIGNoYXIgc3BkaWZfaW47CistCXVuc2lnbmVkIGNoYXIgc3BkaWZfb3V0OworLQl1bnNpZ25lZCBjaGFyIHNwZGlmX3Byb2Zlc3Npb25hbDsKKy0JdW5zaWduZWQgY2hhciBzcGRpZl9lbXBoYXNpczsKKy0JdW5zaWduZWQgY2hhciBzcGRpZl9ub25hdWRpbzsKKy0JdW5zaWduZWQgaW50IHNwZGlmX3NhbXBsZV9yYXRlOworLQl1bnNpZ25lZCBpbnQgc3lzdGVtX3NhbXBsZV9yYXRlOworLQl1bnNpZ25lZCBpbnQgYXV0b3N5bmNfc2FtcGxlX3JhdGU7CistCXVuc2lnbmVkIGNoYXIgc3lzdGVtX2Nsb2NrX21vZGU7CistCXVuc2lnbmVkIGNoYXIgY2xvY2tfc291cmNlOworLQl1bnNpZ25lZCBjaGFyIGF1dG9zeW5jX3JlZjsKKy0JdW5zaWduZWQgY2hhciBsaW5lX291dDsKKy0JdW5zaWduZWQgY2hhciBwYXNzdGhydTsgCistCXVuc2lnbmVkIGNoYXIgZGFfZ2FpbjsKKy0JdW5zaWduZWQgY2hhciBhZF9nYWluOworLQl1bnNpZ25lZCBjaGFyIHBob25lX2dhaW47CistCXVuc2lnbmVkIGNoYXIgeGxyX2JyZWFrb3V0X2NhYmxlOworLQl1bnNpZ25lZCBjaGFyIGFuYWxvZ19leHRlbnNpb25fYm9hcmQ7CistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0hEU1BfSU9DVExfR0VUX0NPTkZJR19JTkZPIF9JT1IoJ0gnLCAweDQxLCBzdHJ1Y3QgaGRzcF9jb25maWdfaW5mbykKKy0KKy1zdHJ1Y3QgaGRzcF9maXJtd2FyZSB7CistCXZvaWQgX191c2VyICpmaXJtd2FyZV9kYXRhOwkvKiAyNDQxMyB4IDQgYnl0ZXMgKi8KKy19OworLQorLSNkZWZpbmUgU05EUlZfSERTUF9JT0NUTF9VUExPQURfRklSTVdBUkUgX0lPVygnSCcsIDB4NDIsIHN0cnVjdCBoZHNwX2Zpcm13YXJlKQorLQorLXN0cnVjdCBoZHNwX3ZlcnNpb24geworLQllbnVtIEhEU1BfSU9fVHlwZSBpb190eXBlOworLQl1bnNpZ25lZCBzaG9ydCBmaXJtd2FyZV9yZXY7CistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0hEU1BfSU9DVExfR0VUX1ZFUlNJT04gX0lPUignSCcsIDB4NDMsIHN0cnVjdCBoZHNwX3ZlcnNpb24pCistCistc3RydWN0IGhkc3BfbWl4ZXIgeworLQl1bnNpZ25lZCBzaG9ydCBtYXRyaXhbSERTUF9NQVRSSVhfTUlYRVJfU0laRV07CistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0hEU1BfSU9DVExfR0VUX01JWEVSIF9JT1IoJ0gnLCAweDQ0LCBzdHJ1Y3QgaGRzcF9taXhlcikKKy0KKy1zdHJ1Y3QgaGRzcF85NjMyX2FlYiB7CistCWludCBhZWJpOworLQlpbnQgYWVibzsKKy19OworLQorLSNkZWZpbmUgU05EUlZfSERTUF9JT0NUTF9HRVRfOTYzMl9BRUIgX0lPUignSCcsIDB4NDUsIHN0cnVjdCBoZHNwXzk2MzJfYWViKQorLQorLS8qIHR5cGVkZWZzIGZvciBjb21wYXRpYmlsaXR5IHRvIHVzZXItc3BhY2UgKi8KKy10eXBlZGVmIGVudW0gSERTUF9JT19UeXBlIEhEU1BfSU9fVHlwZTsKKy10eXBlZGVmIHN0cnVjdCBoZHNwX3BlYWtfcm1zIGhkc3BfcGVha19ybXNfdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwX2NvbmZpZ19pbmZvIGhkc3BfY29uZmlnX2luZm9fdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwX2Zpcm13YXJlIGhkc3BfZmlybXdhcmVfdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwX3ZlcnNpb24gaGRzcF92ZXJzaW9uX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcF9taXhlciBoZHNwX21peGVyX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcF85NjMyX2FlYiBoZHNwXzk2MzJfYWViX3Q7CistCistI2VuZGlmIC8qIF9fU09VTkRfSERTUF9IICovCisrI2luY2x1ZGUgPGFsc2Evc291bmQvdHlwZV9jb21wYXQuaD4KKysjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2hkc3AuaD4KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2hkc3BtLmggYi9pbmNsdWRlL3NvdW5kL2hkc3BtLmgKK2luZGV4IGEzOGYzZjc5Li5hZjZkMTllZCAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvaGRzcG0uaAorKysrIGIvaW5jbHVkZS9zb3VuZC9oZHNwbS5oCitAQCAtMSwyMzIgKzEsMiBAQAorLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZSAqLworLSNpZm5kZWYgX19TT1VORF9IRFNQTV9ICistI2RlZmluZSBfX1NPVU5EX0hEU1BNX0gKKy0vKgorLSAqICAgQ29weXJpZ2h0IChDKSAyMDAzIFdpbmZyaWVkIFJpdHNjaCAoSUVNKQorLSAqICAgYmFzZWQgb24gaGRzcC5oIGZyb20gVGhvbWFzIENoYXJib25uZWwgKHRob21hc0B1bmRhdGEub3JnKQorLSAqCistICoKKy0gKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CistICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorLSAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKy0gKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCistICoKKy0gKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorLSAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKy0gKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKy0gKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCistICoKKy0gKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCistICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorLSAqICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCistICovCistCistI2luY2x1ZGUgPGxpbnV4L3R5cGVzLmg+CistCistLyogTWF4aW11bSBjaGFubmVscyBpcyA2NCBldmVuIG9uIDU2TW9kZSB5b3UgaGF2ZSA2NHBsYXliYWNrcyB0byBtYXRyaXggKi8KKy0jZGVmaW5lIEhEU1BNX01BWF9DSEFOTkVMUyAgICAgIDY0CistCistZW51bSBoZHNwbV9pb190eXBlIHsKKy0JTUFESSwKKy0JTUFESWZhY2UsCistCUFJTywKKy0JQUVTMzIsCistCVJheURBVAorLX07CistCistZW51bSBoZHNwbV9zcGVlZCB7CistCXNzLAorLQlkcywKKy0JcXMKKy19OworLQorLS8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tIElPQ1RMIFBlYWsvUk1TIE1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworLQorLXN0cnVjdCBoZHNwbV9wZWFrX3JtcyB7CistCV9fdTMyIGlucHV0X3BlYWtzWzY0XTsKKy0JX191MzIgcGxheWJhY2tfcGVha3NbNjRdOworLQlfX3UzMiBvdXRwdXRfcGVha3NbNjRdOworLQorLQlfX3U2NCBpbnB1dF9ybXNbNjRdOworLQlfX3U2NCBwbGF5YmFja19ybXNbNjRdOworLQlfX3U2NCBvdXRwdXRfcm1zWzY0XTsKKy0KKy0JX191OCBzcGVlZDsgLyogZW51bSB7c3MsIGRzLCBxc30gKi8KKy0JaW50IHN0YXR1czI7CistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0hEU1BNX0lPQ1RMX0dFVF9QRUFLX1JNUyBcCistCV9JT1IoJ0gnLCAweDQyLCBzdHJ1Y3QgaGRzcG1fcGVha19ybXMpCistCistLyogLS0tLS0tLS0tLS0tIENPTkZJRyBibG9jayBJT0NUTCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCistCistc3RydWN0IGhkc3BtX2NvbmZpZyB7CistCXVuc2lnbmVkIGNoYXIgcHJlZl9zeW5jX3JlZjsKKy0JdW5zaWduZWQgY2hhciB3b3JkY2xvY2tfc3luY19jaGVjazsKKy0JdW5zaWduZWQgY2hhciBtYWRpX3N5bmNfY2hlY2s7CistCXVuc2lnbmVkIGludCBzeXN0ZW1fc2FtcGxlX3JhdGU7CistCXVuc2lnbmVkIGludCBhdXRvc3luY19zYW1wbGVfcmF0ZTsKKy0JdW5zaWduZWQgY2hhciBzeXN0ZW1fY2xvY2tfbW9kZTsKKy0JdW5zaWduZWQgY2hhciBjbG9ja19zb3VyY2U7CistCXVuc2lnbmVkIGNoYXIgYXV0b3N5bmNfcmVmOworLQl1bnNpZ25lZCBjaGFyIGxpbmVfb3V0OworLQl1bnNpZ25lZCBpbnQgcGFzc3RocnU7CistCXVuc2lnbmVkIGludCBhbmFsb2dfb3V0OworLX07CistCistI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfQ09ORklHIFwKKy0JX0lPUignSCcsIDB4NDEsIHN0cnVjdCBoZHNwbV9jb25maWcpCistCistLyoKKy0gKiBJZiB0aGVyZSdzIGEgVENPIChUaW1lQ29kZSBPcHRpb24pIGJvYXJkIGluc3RhbGxlZCwKKy0gKiB0aGVyZSBhcmUgZnVydGhlciBvcHRpb25zIGFuZCBzdGF0dXMgZGF0YSBhdmFpbGFibGUuCistICogVGhlIGhkc3BtX2x0YyBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIGN1cnJlbnQgU01QVEUKKy0gKiB0aW1lY29kZSBhbmQgc29tZSBzdGF0dXMgaW5mb3JtYXRpb24gYW5kIGNhbiBiZQorLSAqIG9idGFpbmVkIHZpYSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfTFRDIG9yIGluIHRoZQorLSAqIGhkc3BtX3N0YXR1cyBzdHJ1Y3QuCistICovCistCistZW51bSBoZHNwbV9sdGNfZm9ybWF0IHsKKy0JZm9ybWF0X2ludmFsaWQsCistCWZwc18yNCwKKy0JZnBzXzI1LAorLQlmcHNfMjk5NywKKy0JZnBzXzMwCistfTsKKy0KKy1lbnVtIGhkc3BtX2x0Y19mcmFtZSB7CistCWZyYW1lX2ludmFsaWQsCistCWRyb3BfZnJhbWUsCistCWZ1bGxfZnJhbWUKKy19OworLQorLWVudW0gaGRzcG1fbHRjX2lucHV0X2Zvcm1hdCB7CistCW50c2MsCistCXBhbCwKKy0Jbm9fdmlkZW8KKy19OworLQorLXN0cnVjdCBoZHNwbV9sdGMgeworLQl1bnNpZ25lZCBpbnQgbHRjOworLQorLQllbnVtIGhkc3BtX2x0Y19mb3JtYXQgZm9ybWF0OworLQllbnVtIGhkc3BtX2x0Y19mcmFtZSBmcmFtZTsKKy0JZW51bSBoZHNwbV9sdGNfaW5wdXRfZm9ybWF0IGlucHV0X2Zvcm1hdDsKKy19OworLQorLSNkZWZpbmUgU05EUlZfSERTUE1fSU9DVExfR0VUX0xUQyBfSU9SKCdIJywgMHg0Niwgc3RydWN0IGhkc3BtX2x0YykKKy0KKy0vKgorLSAqIFRoZSBzdGF0dXMgZGF0YSByZWZsZWN0cyB0aGUgZGV2aWNlJ3MgY3VycmVudCBzdGF0ZQorLSAqIGFzIGRldGVybWluZWQgYnkgdGhlIGNhcmQncyBjb25maWd1cmF0aW9uIGFuZAorLSAqIGNvbm5lY3Rpb24gc3RhdHVzLgorLSAqLworLQorLWVudW0gaGRzcG1fc3luYyB7CistCWhkc3BtX3N5bmNfbm9fbG9jayA9IDAsCistCWhkc3BtX3N5bmNfbG9jayA9IDEsCistCWhkc3BtX3N5bmNfc3luYyA9IDIKKy19OworLQorLWVudW0gaGRzcG1fbWFkaV9pbnB1dCB7CistCWhkc3BtX2lucHV0X29wdGljYWwgPSAwLAorLQloZHNwbV9pbnB1dF9jb2F4ID0gMQorLX07CistCistZW51bSBoZHNwbV9tYWRpX2NoYW5uZWxfZm9ybWF0IHsKKy0JaGRzcG1fZm9ybWF0X2NoXzY0ID0gMCwKKy0JaGRzcG1fZm9ybWF0X2NoXzU2ID0gMQorLX07CistCistZW51bSBoZHNwbV9tYWRpX2ZyYW1lX2Zvcm1hdCB7CistCWhkc3BtX2ZyYW1lXzQ4ID0gMCwKKy0JaGRzcG1fZnJhbWVfOTYgPSAxCistfTsKKy0KKy1lbnVtIGhkc3BtX3N5bmNzb3VyY2UgeworLQlzeW5jc291cmNlX3djID0gMCwKKy0Jc3luY3NvdXJjZV9tYWRpID0gMSwKKy0Jc3luY3NvdXJjZV90Y28gPSAyLAorLQlzeW5jc291cmNlX3N5bmMgPSAzLAorLQlzeW5jc291cmNlX25vbmUgPSA0CistfTsKKy0KKy1zdHJ1Y3QgaGRzcG1fc3RhdHVzIHsKKy0JX191OCBjYXJkX3R5cGU7IC8qIGVudW0gaGRzcG1faW9fdHlwZSAqLworLQllbnVtIGhkc3BtX3N5bmNzb3VyY2UgYXV0b3N5bmNfc291cmNlOworLQorLQlfX3U2NCBjYXJkX2Nsb2NrOworLQlfX3UzMiBtYXN0ZXJfcGVyaW9kOworLQorLQl1bmlvbiB7CistCQlzdHJ1Y3QgeworLQkJCV9fdTggc3luY193YzsgLyogZW51bSBoZHNwbV9zeW5jICovCistCQkJX191OCBzeW5jX21hZGk7IC8qIGVudW0gaGRzcG1fc3luYyAqLworLQkJCV9fdTggc3luY190Y287IC8qIGVudW0gaGRzcG1fc3luYyAqLworLQkJCV9fdTggc3luY19pbjsgLyogZW51bSBoZHNwbV9zeW5jICovCistCQkJX191OCBtYWRpX2lucHV0OyAvKiBlbnVtIGhkc3BtX21hZGlfaW5wdXQgKi8KKy0JCQlfX3U4IGNoYW5uZWxfZm9ybWF0OyAvKiBlbnVtIGhkc3BtX21hZGlfY2hhbm5lbF9mb3JtYXQgKi8KKy0JCQlfX3U4IGZyYW1lX2Zvcm1hdDsgLyogZW51bSBoZHNwbV9tYWRpX2ZyYW1lX2Zvcm1hdCAqLworLQkJfSBtYWRpOworLQl9IGNhcmRfc3BlY2lmaWM7CistfTsKKy0KKy0jZGVmaW5lIFNORFJWX0hEU1BNX0lPQ1RMX0dFVF9TVEFUVVMgXAorLQlfSU9SKCdIJywgMHg0Nywgc3RydWN0IGhkc3BtX3N0YXR1cykKKy0KKy0vKgorLSAqIEdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2FyZCBhbmQgaXRzIGFkZC1vbnMuCistICovCistCistI2RlZmluZSBIRFNQTV9BRERPTl9UQ08gMQorLQorLXN0cnVjdCBoZHNwbV92ZXJzaW9uIHsKKy0JX191OCBjYXJkX3R5cGU7IC8qIGVudW0gaGRzcG1faW9fdHlwZSAqLworLQljaGFyIGNhcmRuYW1lWzIwXTsKKy0JdW5zaWduZWQgaW50IHNlcmlhbDsKKy0JdW5zaWduZWQgc2hvcnQgZmlybXdhcmVfcmV2OworLQlpbnQgYWRkb25zOworLX07CistCistI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfVkVSU0lPTiBfSU9SKCdIJywgMHg0OCwgc3RydWN0IGhkc3BtX3ZlcnNpb24pCistCistLyogLS0tLS0tLS0tLS0tLSBnZXQgTWF0cml4IE1peGVyIElPQ1RMIC0tLS0tLS0tLS0tLS0tLSAqLworLQorLS8qIE1BREkgbWl4ZXI6IDY0aW5wdXRzKzY0cGxheWJhY2sgaW4gNjRvdXRwdXRzID0gODE5MiA9PiAqNEJ5dGUgPQorLSAqIDMyNzY4IEJ5dGVzCistICovCistCistLyogb3JnYW5pc2F0aW9uIGlzIDY0IGNoYW5uZWxmYWRlciBpbiBhIGNvbnRpbnVvdXMgbWVtb3J5IGJsb2NrICovCistLyogZXF1aXZhbGVudCB0byBoYXJkd2FyZSBkZWZpbml0aW9uLCBtYXliZSBmb3IgZnV0dXJlIGZlYXR1cmUgb2YgbW1hcCBvZgorLSAqIHRoZW0KKy0gKi8KKy0vKiBlYWNoIG9mIDY0IG91dHB1dHMgaGFzIDY0IGluZmFkZXIgYW5kIDY0IG91dGZhZGVyOgorLSAgIElucyB0byBPdXRzIG1peGVyW291dF0uaW5baW5dLCBPdXRzdHJlYW1zIHRvIE91dHMgbWl4ZXJbb3V0XS5wYltwYl0gKi8KKy0KKy0jZGVmaW5lIEhEU1BNX01JWEVSX0NIQU5ORUxTIEhEU1BNX01BWF9DSEFOTkVMUworLQorLXN0cnVjdCBoZHNwbV9jaGFubmVsZmFkZXIgeworLQl1bnNpZ25lZCBpbnQgaW5bSERTUE1fTUlYRVJfQ0hBTk5FTFNdOworLQl1bnNpZ25lZCBpbnQgcGJbSERTUE1fTUlYRVJfQ0hBTk5FTFNdOworLX07CistCistc3RydWN0IGhkc3BtX21peGVyIHsKKy0Jc3RydWN0IGhkc3BtX2NoYW5uZWxmYWRlciBjaFtIRFNQTV9NSVhFUl9DSEFOTkVMU107CistfTsKKy0KKy1zdHJ1Y3QgaGRzcG1fbWl4ZXJfaW9jdGwgeworLQlzdHJ1Y3QgaGRzcG1fbWl4ZXIgKm1peGVyOworLX07CistCistLyogdXNlIGluZGlyZWN0IGFjY2VzcyBkdWUgdG8gdGhlIGxpbWl0IG9mIGlvY3RsIGJpdCBzaXplICovCistI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfTUlYRVIgX0lPUignSCcsIDB4NDQsIHN0cnVjdCBoZHNwbV9taXhlcl9pb2N0bCkKKy0KKy0vKiB0eXBlZGVmcyBmb3IgY29tcGF0aWJpbGl0eSB0byB1c2VyLXNwYWNlICovCistdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fcGVha19ybXMgaGRzcG1fcGVha19ybXNfdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwbV9jb25maWdfaW5mbyBoZHNwbV9jb25maWdfaW5mb190OworLXR5cGVkZWYgc3RydWN0IGhkc3BtX3ZlcnNpb24gaGRzcG1fdmVyc2lvbl90OworLXR5cGVkZWYgc3RydWN0IGhkc3BtX2NoYW5uZWxmYWRlciBzbmRfaGRzcG1fY2hhbm5lbGZhZGVyX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fbWl4ZXIgaGRzcG1fbWl4ZXJfdDsKKy0KKy0KKy0jZW5kaWYKKysjaW5jbHVkZSA8YWxzYS9zb3VuZC90eXBlX2NvbXBhdC5oPgorKyNpbmNsdWRlIDxhbHNhL3NvdW5kL3VhcGkvaGRzcG0uaD4KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3NiMTZfY3NwLmggYi9pbmNsdWRlL3NvdW5kL3NiMTZfY3NwLmgKK2luZGV4IGU2NDg1MTQ4Li4yNDEyMWZjYiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvc2IxNl9jc3AuaAorKysrIGIvaW5jbHVkZS9zb3VuZC9zYjE2X2NzcC5oCitAQCAtMSwxMjMgKzEgQEAKKy0vKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKy0vKgorLSAqICBDb3B5cmlnaHQgKGMpIDE5OTkgYnkgVXJvcyBCaXpqYWsgPHVyb3NAa3NzLWxva2Euc2k+CistICogICAgICAgICAgICAgICAgICAgICAgICBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+CistICoKKy0gKiAgU0IxNkFTUC9BV0UzMiBDU1AgY29udHJvbAorLSAqCistICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAKKy0gKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CistICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorLSAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKy0gKgorLSAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCistICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorLSAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorLSAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKy0gKgorLSAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKy0gKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCistICogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyBVU0EKKy0gKgorLSAqLworLSNpZm5kZWYgX1VBUElfX1NPVU5EX1NCMTZfQ1NQX0gKKy0jZGVmaW5lIF9VQVBJX19TT1VORF9TQjE2X0NTUF9ICistCistCistLyogQ1NQIG1vZGVzICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfTU9ERV9OT05FCQkweDAwCistI2RlZmluZSBTTkRSVl9TQl9DU1BfTU9ERV9EU1BfUkVBRAkweDAxCS8qIFJlY29yZCBmcm9tIERTUCAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX01PREVfRFNQX1dSSVRFCTB4MDIJLyogUGxheSB0byBEU1AgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9NT0RFX1FTT1VORAkJMHgwNAkvKiBRU291bmQgKi8KKy0KKy0vKiBDU1AgbG9hZCBmbGFncyAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX0xPQURfRlJPTVVTRVIJMHgwMQorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX0xPQURfSU5JVEJMT0NLCTB4MDIKKy0KKy0vKiBDU1Agc2FtcGxlIHdpZHRoICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfU0FNUExFXzhCSVQJCTB4MDEKKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9TQU1QTEVfMTZCSVQJCTB4MDIKKy0KKy0vKiBDU1AgY2hhbm5lbHMgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9NT05PCQkJMHgwMQorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1NURVJFTwkJMHgwMgorLQorLS8qIENTUCByYXRlcyAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1JBVEVfODAwMAkJMHgwMQorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1JBVEVfMTEwMjUJCTB4MDIKKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9SQVRFXzIyMDUwCQkweDA0CistI2RlZmluZSBTTkRSVl9TQl9DU1BfUkFURV80NDEwMAkJMHgwOAorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1JBVEVfQUxMCQkweDBmCistCistLyogQ1NQIHJ1bm5pbmcgc3RhdGUgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9TVF9JRExFCQkweDAwCistI2RlZmluZSBTTkRSVl9TQl9DU1BfU1RfTE9BREVECQkweDAxCistI2RlZmluZSBTTkRSVl9TQl9DU1BfU1RfUlVOTklORwkJMHgwMgorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1NUX1BBVVNFRAkJMHgwNAorLSNkZWZpbmUgU05EUlZfU0JfQ1NQX1NUX0FVVE8JCTB4MDgKKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9TVF9RU09VTkQJCTB4MTAKKy0KKy0vKiBtYXhpbXVtIFFTb3VuZCB2YWx1ZSAoMTgwIGRlZ3JlZXMgcmlnaHQpICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfUVNPVU5EX01BWF9SSUdIVAkweDIwCistCistLyogbWF4aW11bSBtaWNyb2NvZGUgUklGRiBmaWxlIHNpemUgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9NQVhfTUlDUk9DT0RFX0ZJTEVfU0laRQkweDMwMDAKKy0KKy0vKiBtaWNyb2NvZGUgaGVhZGVyICovCistc3RydWN0IHNuZF9zYl9jc3BfbWNfaGVhZGVyIHsKKy0JY2hhciBjb2RlY19uYW1lWzE2XTsJCS8qIGlkIG5hbWUgb2YgY29kZWMgKi8KKy0JdW5zaWduZWQgc2hvcnQgZnVuY19yZXE7CS8qIHJlcXVlc3RlZCBmdW5jdGlvbiAqLworLX07CistCistLyogbWljcm9jb2RlIHRvIGJlIGxvYWRlZCAqLworLXN0cnVjdCBzbmRfc2JfY3NwX21pY3JvY29kZSB7CistCXN0cnVjdCBzbmRfc2JfY3NwX21jX2hlYWRlciBpbmZvOworLQl1bnNpZ25lZCBjaGFyIGRhdGFbU05EUlZfU0JfQ1NQX01BWF9NSUNST0NPREVfRklMRV9TSVpFXTsKKy19OworLQorLS8qIHN0YXJ0IENTUCB3aXRoIHNhbXBsZV93aWR0aCBpbiBtb25vL3N0ZXJlbyAqLworLXN0cnVjdCBzbmRfc2JfY3NwX3N0YXJ0IHsKKy0JaW50IHNhbXBsZV93aWR0aDsJLyogc2FtcGxlIHdpZHRoLCBsb29rIGFib3ZlICovCistCWludCBjaGFubmVsczsJCS8qIGNoYW5uZWxzLCBsb29rIGFib3ZlICovCistfTsKKy0KKy0vKiBDU1AgaW5mb3JtYXRpb24gKi8KKy1zdHJ1Y3Qgc25kX3NiX2NzcF9pbmZvIHsKKy0JY2hhciBjb2RlY19uYW1lWzE2XTsJCS8qIGlkIG5hbWUgb2YgY29kZWMgKi8KKy0JdW5zaWduZWQgc2hvcnQgZnVuY19ucjsJCS8qIGZ1bmN0aW9uIG51bWJlciAqLworLQl1bnNpZ25lZCBpbnQgYWNjX2Zvcm1hdDsJLyogYWNjZXB0ZWQgUENNIGZvcm1hdHMgKi8KKy0JdW5zaWduZWQgc2hvcnQgYWNjX2NoYW5uZWxzOwkvKiBhY2NlcHRlZCBjaGFubmVscyAqLworLQl1bnNpZ25lZCBzaG9ydCBhY2Nfd2lkdGg7CS8qIGFjY2VwdGVkIHNhbXBsZSB3aWR0aCAqLworLQl1bnNpZ25lZCBzaG9ydCBhY2NfcmF0ZXM7CS8qIGFjY2VwdGVkIHNhbXBsZSByYXRlcyAqLworLQl1bnNpZ25lZCBzaG9ydCBjc3BfbW9kZTsJLyogQ1NQIG1vZGUsIHNlZSBhYm92ZSAqLworLQl1bnNpZ25lZCBzaG9ydCBydW5fY2hhbm5lbHM7CS8qIGN1cnJlbnQgY2hhbm5lbHMgICovCistCXVuc2lnbmVkIHNob3J0IHJ1bl93aWR0aDsJLyogY3VycmVudCBzYW1wbGUgd2lkdGggKi8KKy0JdW5zaWduZWQgc2hvcnQgdmVyc2lvbjsJCS8qIHZlcnNpb24gaWQ6IDB4MTAgLSAweDFmICovCistCXVuc2lnbmVkIHNob3J0IHN0YXRlOwkJLyogc3RhdGUgYml0cyAqLworLX07CistCistLyogSFdERVAgY29udHJvbHMgKi8KKy0vKiBnZXQgQ1NQIGluZm9ybWF0aW9uICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfSU5GTwkJX0lPUignSCcsIDB4MTAsIHN0cnVjdCBzbmRfc2JfY3NwX2luZm8pCistLyogbG9hZCBtaWNyb2NvZGUgdG8gQ1NQICovCistLyogTk9URTogc3RydWN0IHNuZF9zYl9jc3BfbWljcm9jb2RlIG92ZXJmbG93cyB0aGUgbWF4IHNpemUgKDEzIGJpdHMpCistICogZGVmaW5lZCBmb3Igc29tZSBhcmNoaXRlY3R1cmVzIGxpa2UgTUlQUywgYW5kIGl0IGxlYWRzIHRvIGJ1aWxkIGVycm9ycy4KKy0gKiAoeDg2IGFuZCBjbyBoYXZlIDE0LWJpdCBzaXplLCB0aHVzIGl0J3MgdmFsaWQsIHRob3VnaC4pCistICogQXMgYSB3b3JrYXJvdW5kIGZvciBza2lwcGluZyB0aGUgc2l6ZS1saW1pdCBjaGVjaywgaGVyZSB3ZSBkb24ndCB1c2UgdGhlCistICogbm9ybWFsIF9JT1coKSBtYWNybyBidXQgX0lPQygpIHdpdGggdGhlIG1hbnVhbCBhcmd1bWVudC4KKy0gKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9JT0NUTF9MT0FEX0NPREUJXAorLQlfSU9DKF9JT0NfV1JJVEUsICdIJywgMHgxMSwgc2l6ZW9mKHN0cnVjdCBzbmRfc2JfY3NwX21pY3JvY29kZSkpCistLyogdW5sb2FkIG1pY3JvY29kZSBmcm9tIENTUCAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX1VOTE9BRF9DT0RFCV9JTygnSCcsIDB4MTIpCistLyogc3RhcnQgQ1NQICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfU1RBUlQJCV9JT1coJ0gnLCAweDEzLCBzdHJ1Y3Qgc25kX3NiX2NzcF9zdGFydCkKKy0vKiBzdG9wIENTUCAqLworLSNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX1NUT1AJCV9JTygnSCcsIDB4MTQpCistLyogcGF1c2UgQ1NQIGFuZCBETUEgdHJhbnNmZXIgKi8KKy0jZGVmaW5lIFNORFJWX1NCX0NTUF9JT0NUTF9QQVVTRQkJX0lPKCdIJywgMHgxNSkKKy0vKiByZXN0YXJ0IENTUCBhbmQgRE1BIHRyYW5zZmVyICovCistI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfUkVTVEFSVAlfSU8oJ0gnLCAweDE2KQorLQorLQorLSNlbmRpZiAvKiBfVUFQSV9fU09VTkRfU0IxNl9DU1BfSCAqLworKyNpbmNsdWRlIDxhbHNhL3NvdW5kL3VhcGkvc2IxNl9jc3AuaD4KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3NzY2FwZV9pb2N0bC5oIGIvaW5jbHVkZS9zb3VuZC9zc2NhcGVfaW9jdGwuaAoraW5kZXggYzY2NTNlYmYuLjIzYjQ4ZDMzIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9zc2NhcGVfaW9jdGwuaAorKysrIGIvaW5jbHVkZS9zb3VuZC9zc2NhcGVfaW9jdGwuaAorQEAgLTEsMjEgKzEgQEAKKy0jaWZuZGVmIFNTQ0FQRV9JT0NUTF9ICistI2RlZmluZSBTU0NBUEVfSU9DVExfSAorLQorLQorLXN0cnVjdCBzc2NhcGVfYm9vdGJsb2NrCisteworLSAgdW5zaWduZWQgY2hhciBjb2RlWzI1Nl07CistICB1bnNpZ25lZCB2ZXJzaW9uOworLX07CistCistI2RlZmluZSBTU0NBUEVfTUlDUk9DT0RFX1NJWkUgIDY1NTM2CistCistc3RydWN0IHNzY2FwZV9taWNyb2NvZGUKKy17CistICB1bnNpZ25lZCBjaGFyICpjb2RlOworLX07CistCistI2RlZmluZSBTTkRfU1NDQVBFX0xPQURfQk9PVEIgIF9JT1dSKCdQJywgMTAwLCBzdHJ1Y3Qgc3NjYXBlX2Jvb3RibG9jaykKKy0jZGVmaW5lIFNORF9TU0NBUEVfTE9BRF9NQ09ERSAgX0lPVyAoJ1AnLCAxMDEsIHN0cnVjdCBzc2NhcGVfbWljcm9jb2RlKQorLQorLSNlbmRpZgorKyNpbmNsdWRlIDxhbHNhL3NvdW5kL3VhcGkvc3NjYXBlX2lvY3RsLmg+CitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC90bHYuaCBiL2luY2x1ZGUvc291bmQvdGx2LmgKK2luZGV4IDdkNmQ2NWY2Li5lNDM1YTVmYyAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvdGx2LmgKKysrKyBiL2luY2x1ZGUvc291bmQvdGx2LmgKK0BAIC0xLDExNyArMSBAQAorLS8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZSAqLworLS8qCistICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeQorLSAqICAgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKKy0gKiAgIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCistICogICAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgorLSAqCistICogICBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKKy0gKiAgIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCistICogICBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCistICogICBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgorLSAqLworLQorLSNpZm5kZWYgX19VQVBJX1NPVU5EX1RMVl9ICistI2RlZmluZSBfX1VBUElfU09VTkRfVExWX0gKKy0KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZUX0NPTlRBSU5FUiAwCS8qIG9uZSBsZXZlbCBkb3duIC0gZ3JvdXAgb2YgVExWcyAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVlRfREJfU0NBTEUJMSAgICAgICAvKiBkQiBzY2FsZSAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVlRfREJfTElORUFSIDIJLyogbGluZWFyIHZvbHVtZSAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVlRfREJfUkFOR0UgMwkvKiBkQiByYW5nZSBjb250YWluZXIgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZUX0RCX01JTk1BWCA0CS8qIGRCIHNjYWxlIHdpdGggbWluL21heCAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVlRfREJfTUlOTUFYX01VVEUgNQkvKiBkQiBzY2FsZSB3aXRoIG1pbi9tYXggd2l0aCBtdXRlICovCistCistLyoKKy0gKiBjaGFubmVsLW1hcHBpbmcgVExWIGl0ZW1zCistICogIFRMViBsZW5ndGggbXVzdCBtYXRjaCB3aXRoIG51bV9jaGFubmVscworLSAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVlRfQ0hNQVBfRklYRUQJMHgxMDEJLyogZml4ZWQgY2hhbm5lbCBwb3NpdGlvbiAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVlRfQ0hNQVBfVkFSCTB4MTAyCS8qIGNoYW5uZWxzIGZyZWVseSBzd2FwcGFibGUgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZUX0NITUFQX1BBSVJFRAkweDEwMwkvKiBwYWlyLXdpc2Ugc3dhcHBhYmxlICovCistCistLyoKKy0gKiBUTFYgc3RydWN0dXJlIGlzIHJpZ2h0IGJlaGluZCB0aGUgc3RydWN0IHNuZF9jdGxfdGx2OgorLSAqICAgdW5zaWduZWQgaW50IHR5cGUgIAktIHNlZSBTTkRSVl9DVExfVExWVF8qCistICogICB1bnNpZ25lZCBpbnQgbGVuZ3RoCistICogICAuLi4uIGRhdGEgYWxpZ25lZCB0byBzaXplb2YodW5zaWduZWQgaW50KSwgdXNlCistICogICAgICAgIGJsb2NrX2xlbmd0aCA9IChsZW5ndGggKyAoc2l6ZW9mKHVuc2lnbmVkIGludCkgLSAxKSkgJgorLSAqICAgICAgICAgICAgICAgICAgICAgICB+KHNpemVvZih1bnNpZ25lZCBpbnQpIC0gMSkpIC4uLi4KKy0gKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0lURU0odHlwZSwgLi4uKSBcCistCSh0eXBlKSwgU05EUlZfQ1RMX1RMVkRfTEVOR1RIKF9fVkFfQVJHU19fKSwgX19WQV9BUkdTX18KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0xFTkdUSCguLi4pIFwKKy0JKCh1bnNpZ25lZCBpbnQpc2l6ZW9mKChjb25zdCB1bnNpZ25lZCBpbnRbXSkgeyBfX1ZBX0FSR1NfXyB9KSkKKy0KKy0vKiBBY2Nlc3NvciBvZmZzZXRzIGZvciBUTFYgZGF0YSBpdGVtcyAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fVFlQRQkJMAorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fTEVOCQkxCistCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9DT05UQUlORVJfSVRFTSguLi4pIFwKKy0JU05EUlZfQ1RMX1RMVkRfSVRFTShTTkRSVl9DVExfVExWVF9DT05UQUlORVIsIF9fVkFfQVJHU19fKQorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREVDTEFSRV9DT05UQUlORVIobmFtZSwgLi4uKSBcCistCXVuc2lnbmVkIGludCBuYW1lW10gPSB7IFwKKy0JCVNORFJWX0NUTF9UTFZEX0NPTlRBSU5FUl9JVEVNKF9fVkFfQVJHU19fKSBcCistCX0KKy0KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX1NDQUxFX01BU0sJMHhmZmZmCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9NVVRFCTB4MTAwMDAKKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX1NDQUxFX0lURU0obWluLCBzdGVwLCBtdXRlKSBcCistCVNORFJWX0NUTF9UTFZEX0lURU0oU05EUlZfQ1RMX1RMVlRfREJfU0NBTEUsIFwKKy0JCQkgICAgKG1pbiksIFwKKy0JCQkgICAgKChzdGVwKSAmIFNORFJWX0NUTF9UTFZEX0RCX1NDQUxFX01BU0spIHwgXAorLQkJCSAgICAgKChtdXRlKSA/IFNORFJWX0NUTF9UTFZEX0RCX1NDQUxFX01VVEUgOiAwKSkKKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RFQ0xBUkVfREJfU0NBTEUobmFtZSwgbWluLCBzdGVwLCBtdXRlKSBcCistCXVuc2lnbmVkIGludCBuYW1lW10gPSB7IFwKKy0JCVNORFJWX0NUTF9UTFZEX0RCX1NDQUxFX0lURU0obWluLCBzdGVwLCBtdXRlKSBcCistCX0KKy0KKy0vKiBBY2Nlc3NvciBvZmZzZXRzIGZvciBtaW4sIG11dGUgYW5kIHN0ZXAgaXRlbXMgaW4gZEIgc2NhbGUgdHlwZSBUTFYgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZPX0RCX1NDQUxFX01JTgkJMgorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fREJfU0NBTEVfTVVURV9BTkRfU1RFUAkzCistCistLyogZEIgc2NhbGUgc3BlY2lmaWVkIHdpdGggbWluL21heCB2YWx1ZXMgaW5zdGVhZCBvZiBzdGVwICovCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9NSU5NQVhfSVRFTShtaW5fZEIsIG1heF9kQikgXAorLQlTTkRSVl9DVExfVExWRF9JVEVNKFNORFJWX0NUTF9UTFZUX0RCX01JTk1BWCwgKG1pbl9kQiksIChtYXhfZEIpKQorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfTUlOTUFYX01VVEVfSVRFTShtaW5fZEIsIG1heF9kQikgXAorLQlTTkRSVl9DVExfVExWRF9JVEVNKFNORFJWX0NUTF9UTFZUX0RCX01JTk1BWF9NVVRFLCAobWluX2RCKSwgKG1heF9kQikpCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9ERUNMQVJFX0RCX01JTk1BWChuYW1lLCBtaW5fZEIsIG1heF9kQikgXAorLQl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCistCQlTTkRSVl9DVExfVExWRF9EQl9NSU5NQVhfSVRFTShtaW5fZEIsIG1heF9kQikgXAorLQl9CistI2RlZmluZSBTTkRSVl9DVExfVExWRF9ERUNMQVJFX0RCX01JTk1BWF9NVVRFKG5hbWUsIG1pbl9kQiwgbWF4X2RCKSBcCistCXVuc2lnbmVkIGludCBuYW1lW10gPSB7IFwKKy0JCVNORFJWX0NUTF9UTFZEX0RCX01JTk1BWF9NVVRFX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKy0JfQorLQorLS8qIEFjY2Vzc29yIG9mZnNldHMgZm9yIG1pbiwgbWF4IGl0ZW1zIGluIGRiLW1pbm1heCB0eXBlcyBvZiBUTFYuICovCistI2RlZmluZSBTTkRSVl9DVExfVExWT19EQl9NSU5NQVhfTUlOCTIKKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZPX0RCX01JTk1BWF9NQVgJMworLQorLS8qIGxpbmVhciB2b2x1bWUgYmV0d2VlbiBtaW5fZEIgYW5kIG1heF9kQiAoLjAxZEIgdW5pdCkgKi8KKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX0xJTkVBUl9JVEVNKG1pbl9kQiwgbWF4X2RCKSBcCistCVNORFJWX0NUTF9UTFZEX0lURU0oU05EUlZfQ1RMX1RMVlRfREJfTElORUFSLCAobWluX2RCKSwgKG1heF9kQikpCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9ERUNMQVJFX0RCX0xJTkVBUihuYW1lLCBtaW5fZEIsIG1heF9kQikgXAorLQl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCistCQlTTkRSVl9DVExfVExWRF9EQl9MSU5FQVJfSVRFTShtaW5fZEIsIG1heF9kQikgXAorLQl9CistCistLyogQWNjZXNzb3Igb2Zmc2V0cyBmb3IgbWluLCBtYXggaXRlbXMgaW4gZGItbGluZWFyIHR5cGUgb2YgVExWLiAqLworLSNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fREJfTElORUFSX01JTgkyCistI2RlZmluZSBTTkRSVl9DVExfVExWT19EQl9MSU5FQVJfTUFYCTMKKy0KKy0vKiBkQiByYW5nZSBjb250YWluZXI6CistICogSXRlbXMgaW4gZEIgcmFuZ2UgY29udGFpbmVyIG11c3QgYmUgb3JkZXJlZCBieSB0aGVpciB2YWx1ZXMgYW5kIGJ5IHRoZWlyCistICogZEIgdmFsdWVzLiBUaGlzIGltcGxpZXMgdGhhdCBsYXJnZXIgdmFsdWVzIG11c3QgY29ycmVzcG9uZCB3aXRoIGxhcmdlcgorLSAqIGRCIHZhbHVlcyAod2hpY2ggaXMgYWxzbyByZXF1aXJlZCBmb3IgYWxsIG90aGVyIG1peGVyIGNvbnRyb2xzKS4KKy0gKi8KKy0vKiBFYWNoIGl0ZW0gaXM6IDxtaW4+IDxtYXg+IDxUTFY+ICovCistI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9SQU5HRV9JVEVNKC4uLikgXAorLQlTTkRSVl9DVExfVExWRF9JVEVNKFNORFJWX0NUTF9UTFZUX0RCX1JBTkdFLCBfX1ZBX0FSR1NfXykKKy0jZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RFQ0xBUkVfREJfUkFOR0UobmFtZSwgLi4uKSBcCistCXVuc2lnbmVkIGludCBuYW1lW10gPSB7IFwKKy0JCVNORFJWX0NUTF9UTFZEX0RCX1JBTkdFX0lURU0oX19WQV9BUkdTX18pIFwKKy0JfQorLQorLSNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfR0FJTl9NVVRFCS05OTk5OTk5CistCistI2VuZGlmCisrI2luY2x1ZGUgPGFsc2Evc291bmQvdWFwaS90bHYuaD4KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3R5cGVfY29tcGF0LmggYi9pbmNsdWRlL3NvdW5kL3R5cGVfY29tcGF0LmgKK2luZGV4IGU5NzNmZjMxLi5kNDc5MGMxZiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvdHlwZV9jb21wYXQuaAorKysrIGIvaW5jbHVkZS9zb3VuZC90eXBlX2NvbXBhdC5oCitAQCAtMyw2ICszLDkgQEAKKyAKKyAjaWZuZGVmIERPQ19ISURERU4KKyAjaW5jbHVkZSA8c3RkaW50Lmg+CisrI2lmZGVmIF9fbGludXhfXworKyNpbmNsdWRlIDxsaW51eC90eXBlcy5oPgorKyNlbHNlCisgdHlwZWRlZiB1aW50OF90IF9fdTg7CisgdHlwZWRlZiB1aW50MTZfdCBfX3UxNjsKKyB0eXBlZGVmIHVpbnQzMl90IF9fdTMyOworQEAgLTM3LDYgKzQwLDE2IEBAIHR5cGVkZWYgaW50MzJfdCBfX3MzMjsKKyAjZGVmaW5lIF9fYmUzMiBfX3UzMgorICNkZWZpbmUgX19iZTE2IF9fdTE2CisgI2RlZmluZSBfX2JlOCAgX191OAorKyNlbmRpZgorKworKyNpZm5kZWYgX191c2VyCisrI2RlZmluZSBfX3VzZXIKKysjZW5kaWYKKysKKysjaWZuZGVmIF9fcGFja2VkCisrI2RlZmluZSBfX3BhY2tlZCBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkKKysjZW5kaWYKKysKKyAjZW5kaWYgLyogRE9DX0hJRERFTiAqLworIAorICNlbmRpZiAvKiBfX1RZUEVfQ09NUEFUX0ggKi8KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvTWFrZWZpbGUuYW0gYi9pbmNsdWRlL3NvdW5kL3VhcGkvTWFrZWZpbGUuYW0KK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uOTkxOTcxMDgKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9NYWtlZmlsZS5hbQorQEAgLTAsMCArMSw2IEBACisrYWxzYXNvdW5kdWFwaWluY2x1ZGVkaXIgPSAke2luY2x1ZGVkaXJ9L2Fsc2Evc291bmQvdWFwaQorKworK2Fsc2Fzb3VuZHVhcGlpbmNsdWRlX0hFQURFUlMgPSBhc291bmRfZm0uaCBoZHNwLmggaGRzcG0uaCBzYjE2X2NzcC5oIFwKKysJCQkgICBzc2NhcGVfaW9jdGwuaCBlbXUxMGsxLmggYXNvYy5oIHRsdi5oCisrCisrbm9pbnN0X0hFQURFUlMgPSBhc291bmQuaCBhc2VxdWVuY2VyLmgKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvYXNlcXVlbmNlci5oIGIvaW5jbHVkZS9zb3VuZC91YXBpL2FzZXF1ZW5jZXIuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi5hNzVlMTRlZAorLS0tIC9kZXYvbnVsbAorKysrIGIvaW5jbHVkZS9zb3VuZC91YXBpL2FzZXF1ZW5jZXIuaAorQEAgLTAsMCArMSw2MTIgQEAKKysvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKysvKgorKyAqICBNYWluIGhlYWRlciBmaWxlIGZvciB0aGUgQUxTQSBzZXF1ZW5jZXIKKysgKiAgQ29weXJpZ2h0IChjKSAxOTk4LTE5OTkgYnkgRnJhbmsgdmFuIGRlIFBvbCA8ZnZkcG9sQGNvaWwuZGVtb24ubmw+CisrICogICAgICAgICAgICAoYykgMTk5OC0xOTk5IGJ5IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+CisrICoKKysgKgorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyBVU0EKKysgKgorKyAqLworKyNpZm5kZWYgX1VBUElfX1NPVU5EX0FTRVFVRU5DRVJfSAorKyNkZWZpbmUgX1VBUElfX1NPVU5EX0FTRVFVRU5DRVJfSAorKworKyNpbmNsdWRlIDxzb3VuZC9hc291bmQuaD4KKysKKysvKiogdmVyc2lvbiBvZiB0aGUgc2VxdWVuY2VyICovCisrI2RlZmluZSBTTkRSVl9TRVFfVkVSU0lPTiBTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDEsIDAsIDIpCisrCisrLyoqCisrICogZGVmaW5pdGlvbiBvZiBzZXF1ZW5jZXIgZXZlbnQgdHlwZXMKKysgKi8KKysKKysvKiogc3lzdGVtIG1lc3NhZ2VzCisrICogZXZlbnQgZGF0YSB0eXBlID0gI3NuZF9zZXFfcmVzdWx0CisrICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU1lTVEVNCQkwCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUkVTVUxUCQkxCisrCisrLyoqIG5vdGUgbWVzc2FnZXMgKGNoYW5uZWwgc3BlY2lmaWMpCisrICogZXZlbnQgZGF0YSB0eXBlID0gI3NuZF9zZXFfZXZfbm90ZQorKyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX05PVEUJCTUKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9OT1RFT04JCTYKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9OT1RFT0ZGCQk3CisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfS0VZUFJFU1MJOAorKwkKKysvKiogY29udHJvbCBtZXNzYWdlcyAoY2hhbm5lbCBzcGVjaWZpYykKKysgKiBldmVudCBkYXRhIHR5cGUgPSAjc25kX3NlcV9ldl9jdHJsCisrICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ09OVFJPTExFUgkxMAorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BHTUNIQU5HRQkxMQorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NIQU5QUkVTUwkxMgorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BJVENIQkVORAkxMwkvKio8IGZyb20gLTgxOTIgdG8gODE5MSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NPTlRST0wxNAkxNAkvKio8IDE0IGJpdCBjb250cm9sbGVyIHZhbHVlICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTk9OUkVHUEFSQU0JMTUJLyoqPCAxNCBiaXQgTlJQTiBhZGRyZXNzICsgMTQgYml0IHVuc2lnbmVkIHZhbHVlICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUkVHUEFSQU0JMTYJLyoqPCAxNCBiaXQgUlBOIGFkZHJlc3MgKyAxNCBiaXQgdW5zaWduZWQgdmFsdWUgKi8KKysKKysvKiogc3luY2hyb25pc2F0aW9uIG1lc3NhZ2VzCisrICogZXZlbnQgZGF0YSB0eXBlID0gI3NuZF9zZXFfZXZfY3RybAorKyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NPTkdQT1MJCTIwCS8qIFNvbmcgUG9zaXRpb24gUG9pbnRlciB3aXRoIExTQiBhbmQgTVNCIHZhbHVlcyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NPTkdTRUwJCTIxCS8qIFNvbmcgU2VsZWN0IHdpdGggc29uZyBJRCBudW1iZXIgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9RRlJBTUUJCTIyCS8qIG1pZGkgdGltZSBjb2RlIHF1YXJ0ZXIgZnJhbWUgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9USU1FU0lHTgkyMwkvKiBTTUYgVGltZSBTaWduYXR1cmUgZXZlbnQgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9LRVlTSUdOCQkyNAkvKiBTTUYgS2V5IFNpZ25hdHVyZSBldmVudCAqLworKwkgICAgICAgIAorKy8qKiB0aW1lciBtZXNzYWdlcworKyAqIGV2ZW50IGRhdGEgdHlwZSA9IHNuZF9zZXFfZXZfcXVldWVfY29udHJvbAorKyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NUQVJUCQkzMAkvKiBtaWRpIFJlYWwgVGltZSBTdGFydCBtZXNzYWdlICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ09OVElOVUUJMzEJLyogbWlkaSBSZWFsIFRpbWUgQ29udGludWUgbWVzc2FnZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NUT1AJCTMyCS8qIG1pZGkgUmVhbCBUaW1lIFN0b3AgbWVzc2FnZSAqLwkKKysjZGVmaW5lCVNORFJWX1NFUV9FVkVOVF9TRVRQT1NfVElDSwkzMwkvKiBzZXQgdGljayBxdWV1ZSBwb3NpdGlvbiAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NFVFBPU19USU1FCTM0CS8qIHNldCByZWFsdGltZSBxdWV1ZSBwb3NpdGlvbiAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1RFTVBPCQkzNQkvKiAoU01GKSBUZW1wbyBldmVudCAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NMT0NLCQkzNgkvKiBtaWRpIFJlYWwgVGltZSBDbG9jayBtZXNzYWdlICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVElDSwkJMzcJLyogbWlkaSBSZWFsIFRpbWUgVGljayBtZXNzYWdlICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUVVFVUVfU0tFVwkzOAkvKiBza2V3IHF1ZXVlIHRlbXBvICovCisrCisrLyoqIG90aGVycworKyAqIGV2ZW50IGRhdGEgdHlwZSA9IG5vbmUKKysgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9UVU5FX1JFUVVFU1QJNDAJLyogdHVuZSByZXF1ZXN0ICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUkVTRVQJCTQxCS8qIHJlc2V0IHRvIHBvd2VyLW9uIHN0YXRlICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfU0VOU0lORwkJNDIJLyogImFjdGl2ZSBzZW5zaW5nIiBldmVudCAqLworKworKy8qKiBlY2hvIGJhY2ssIGtlcm5lbCBwcml2YXRlIG1lc3NhZ2VzCisrICogZXZlbnQgZGF0YSB0eXBlID0gYW55IHR5cGUKKysgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9FQ0hPCQk1MAkvKiBlY2hvIGV2ZW50ICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfT1NTCQk1MQkvKiBPU1MgcmF3IGV2ZW50ICovCisrCisrLyoqIHN5c3RlbSBzdGF0dXMgbWVzc2FnZXMgKGJyb2FkY2FzdCBmb3Igc3Vic2NyaWJlcnMpCisrICogZXZlbnQgZGF0YSB0eXBlID0gc25kX3NlcV9hZGRyCisrICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ0xJRU5UX1NUQVJUCTYwCS8qIG5ldyBjbGllbnQgaGFzIGNvbm5lY3RlZCAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0NMSUVOVF9FWElUCTYxCS8qIGNsaWVudCBoYXMgbGVmdCB0aGUgc3lzdGVtICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQ0xJRU5UX0NIQU5HRQk2MgkvKiBjbGllbnQgc3RhdHVzL2luZm8gaGFzIGNoYW5nZWQgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9QT1JUX1NUQVJUCTYzCS8qIG5ldyBwb3J0IHdhcyBjcmVhdGVkICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUE9SVF9FWElUCTY0CS8qIHBvcnQgd2FzIGRlbGV0ZWQgZnJvbSBzeXN0ZW0gKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9QT1JUX0NIQU5HRQk2NQkvKiBwb3J0IHN0YXR1cy9pbmZvIGhhcyBjaGFuZ2VkICovCisrCisrLyoqIHBvcnQgY29ubmVjdGlvbiBjaGFuZ2VzCisrICogZXZlbnQgZGF0YSB0eXBlID0gc25kX3NlcV9jb25uZWN0CisrICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfUE9SVF9TVUJTQ1JJQkVECTY2CS8qIHBvcnRzIGNvbm5lY3RlZCAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1BPUlRfVU5TVUJTQ1JJQkVEIDY3CS8qIHBvcnRzIGRpc2Nvbm5lY3RlZCAqLworKworKy8qIDcwLTg5OiAgc3ludGhlc2l6ZXIgZXZlbnRzIC0gb2Jzb2xldGVkICovCisrCisrLyoqIHVzZXItZGVmaW5lZCBldmVudHMgd2l0aCBmaXhlZCBsZW5ndGgKKysgKiBldmVudCBkYXRhIHR5cGUgPSBhbnkKKysgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1IwCQk5MAorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjEJCTkxCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSMgkJOTIKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1IzCQk5MworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjQJCTk0CisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSNQkJOTUKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1I2CQk5NgorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUjcJCTk3CisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfVVNSOAkJOTgKKysjZGVmaW5lIFNORFJWX1NFUV9FVkVOVF9VU1I5CQk5OQorKworKy8qIDEwMC0xMTg6IGluc3RydW1lbnQgbGF5ZXIgLSBvYnNvbGV0ZWQgKi8KKysvKiAxMTktMTI5OiByZXNlcnZlZCAqLworKworKy8qIDEzMC0xMzk6IHZhcmlhYmxlIGxlbmd0aCBldmVudHMKKysgKiBldmVudCBkYXRhIHR5cGUgPSBzbmRfc2VxX2V2X2V4dAorKyAqIChTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX1ZBUklBQkxFIG11c3QgYmUgc2V0KQorKyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1NZU0VYCQkxMzAJLyogc3lzdGVtIGV4Y2x1c2l2ZSBkYXRhICh2YXJpYWJsZSBsZW5ndGgpICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfQk9VTkNFCQkxMzEJLyogZXJyb3IgZXZlbnQgKi8KKysvKiAxMzItMTM0OiByZXNlcnZlZCAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVIwCTEzNQorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVIxCTEzNgorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVIyCTEzNworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVIzCTEzOAorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX1VTUl9WQVI0CTEzOQorKworKy8qIDE1MC0xNTE6IGtlcm5lbCBldmVudHMgd2l0aCBxdW90ZSAtIERPIE5PVCB1c2UgaW4gdXNlciBjbGllbnRzICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfS0VSTkVMX0VSUk9SCTE1MAorKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX0tFUk5FTF9RVU9URQkxNTEJLyogb2Jzb2xldGUgKi8KKysKKysvKiAxNTItMTkxOiByZXNlcnZlZCAqLworKworKy8qIDE5Mi0yNTQ6IGhhcmR3YXJlIHNwZWNpZmljIGV2ZW50cyAqLworKworKy8qIDI1NTogc3BlY2lhbCBldmVudCAqLworKyNkZWZpbmUgU05EUlZfU0VRX0VWRU5UX05PTkUJCTI1NQorKworKworK3R5cGVkZWYgdW5zaWduZWQgY2hhciBzbmRfc2VxX2V2ZW50X3R5cGVfdDsKKysKKysvKiogZXZlbnQgYWRkcmVzcyAqLworK3N0cnVjdCBzbmRfc2VxX2FkZHIgeworKwl1bnNpZ25lZCBjaGFyIGNsaWVudDsJLyoqPCBDbGllbnQgbnVtYmVyOiAgICAgICAgIDAuLjI1NSwgMjU1ID0gYnJvYWRjYXN0IHRvIGFsbCBjbGllbnRzICovCisrCXVuc2lnbmVkIGNoYXIgcG9ydDsJLyoqPCBQb3J0IHdpdGhpbiBjbGllbnQ6ICAgIDAuLjI1NSwgMjU1ID0gYnJvYWRjYXN0IHRvIGFsbCBwb3J0cyAqLworK307CisrCisrLyoqIHBvcnQgY29ubmVjdGlvbiAqLworK3N0cnVjdCBzbmRfc2VxX2Nvbm5lY3QgeworKwlzdHJ1Y3Qgc25kX3NlcV9hZGRyIHNlbmRlcjsKKysJc3RydWN0IHNuZF9zZXFfYWRkciBkZXN0OworK307CisrCisrCisrI2RlZmluZSBTTkRSVl9TRVFfQUREUkVTU19VTktOT1dOCTI1MwkvKiB1bmtub3duIHNvdXJjZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX0FERFJFU1NfU1VCU0NSSUJFUlMJMjU0CS8qIHNlbmQgZXZlbnQgdG8gYWxsIHN1YnNjcmliZWQgcG9ydHMgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9BRERSRVNTX0JST0FEQ0FTVAkyNTUJLyogc2VuZCBldmVudCB0byBhbGwgcXVldWVzL2NsaWVudHMvcG9ydHMvY2hhbm5lbHMgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9RVUVVRV9ESVJFQ1QJCTI1MwkvKiBkaXJlY3QgZGlzcGF0Y2ggKi8KKysKKysJLyogZXZlbnQgbW9kZSBmbGFnIC0gTk9URTogb25seSA4IGJpdHMgYXZhaWxhYmxlISAqLworKyNkZWZpbmUgU05EUlZfU0VRX1RJTUVfU1RBTVBfVElDSwkoMDw8MCkgLyogdGltZXN0YW1wIGluIGNsb2NrIHRpY2tzICovCisrI2RlZmluZSBTTkRSVl9TRVFfVElNRV9TVEFNUF9SRUFMCSgxPDwwKSAvKiB0aW1lc3RhbXAgaW4gcmVhbCB0aW1lICovCisrI2RlZmluZSBTTkRSVl9TRVFfVElNRV9TVEFNUF9NQVNLCSgxPDwwKQorKworKyNkZWZpbmUgU05EUlZfU0VRX1RJTUVfTU9ERV9BQlMJCSgwPDwxKQkvKiBhYnNvbHV0ZSB0aW1lc3RhbXAgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9USU1FX01PREVfUkVMCQkoMTw8MSkJLyogcmVsYXRpdmUgdG8gY3VycmVudCB0aW1lICovCisrI2RlZmluZSBTTkRSVl9TRVFfVElNRV9NT0RFX01BU0sJKDE8PDEpCisrCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX0ZJWEVECSgwPDwyKQkvKiBmaXhlZCBldmVudCBzaXplICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX1ZBUklBQkxFCSgxPDwyKQkvKiB2YXJpYWJsZSBldmVudCBzaXplICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX1ZBUlVTUgkoMjw8MikJLyogdmFyaWFibGUgZXZlbnQgc2l6ZSAtIHVzZXIgbWVtb3J5IHNwYWNlICovCisrI2RlZmluZSBTTkRSVl9TRVFfRVZFTlRfTEVOR1RIX01BU0sJKDM8PDIpCisrCisrI2RlZmluZSBTTkRSVl9TRVFfUFJJT1JJVFlfTk9STUFMCSgwPDw0KQkvKiBub3JtYWwgcHJpb3JpdHkgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QUklPUklUWV9ISUdICQkoMTw8NCkJLyogZXZlbnQgc2hvdWxkIGJlIHByb2Nlc3NlZCBiZWZvcmUgb3RoZXJzICovCisrI2RlZmluZSBTTkRSVl9TRVFfUFJJT1JJVFlfTUFTSwkJKDE8PDQpCisrCisrCisrCS8qIG5vdGUgZXZlbnQgKi8KKytzdHJ1Y3Qgc25kX3NlcV9ldl9ub3RlIHsKKysJdW5zaWduZWQgY2hhciBjaGFubmVsOworKwl1bnNpZ25lZCBjaGFyIG5vdGU7CisrCXVuc2lnbmVkIGNoYXIgdmVsb2NpdHk7CisrCXVuc2lnbmVkIGNoYXIgb2ZmX3ZlbG9jaXR5OwkvKiBvbmx5IGZvciBTTkRSVl9TRVFfRVZFTlRfTk9URSAqLworKwl1bnNpZ25lZCBpbnQgZHVyYXRpb247CQkvKiBvbmx5IGZvciBTTkRSVl9TRVFfRVZFTlRfTk9URSAqLworK307CisrCisrCS8qIGNvbnRyb2xsZXIgZXZlbnQgKi8KKytzdHJ1Y3Qgc25kX3NlcV9ldl9jdHJsIHsKKysJdW5zaWduZWQgY2hhciBjaGFubmVsOworKwl1bnNpZ25lZCBjaGFyIHVudXNlZDEsIHVudXNlZDIsIHVudXNlZDM7CS8qIHBhZCAqLworKwl1bnNpZ25lZCBpbnQgcGFyYW07CisrCXNpZ25lZCBpbnQgdmFsdWU7CisrfTsKKysKKysJLyogZ2VuZXJpYyBzZXQgb2YgYnl0ZXMgKDEyeDggYml0KSAqLworK3N0cnVjdCBzbmRfc2VxX2V2X3JhdzggeworKwl1bnNpZ25lZCBjaGFyIGRbMTJdOwkvKiA4IGJpdCB2YWx1ZSAqLworK307CisrCisrCS8qIGdlbmVyaWMgc2V0IG9mIGludGVnZXJzICgzeDMyIGJpdCkgKi8KKytzdHJ1Y3Qgc25kX3NlcV9ldl9yYXczMiB7CisrCXVuc2lnbmVkIGludCBkWzNdOwkvKiAzMiBiaXQgdmFsdWUgKi8KKyt9OworKworKwkvKiBleHRlcm5hbCBzdG9yZWQgZGF0YSAqLworK3N0cnVjdCBzbmRfc2VxX2V2X2V4dCB7CisrCXVuc2lnbmVkIGludCBsZW47CS8qIGxlbmd0aCBvZiBkYXRhICovCisrCXZvaWQgKnB0cjsJCS8qIHBvaW50ZXIgdG8gZGF0YSAobm90ZTogbWF5YmUgNjQtYml0KSAqLworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrc3RydWN0IHNuZF9zZXFfcmVzdWx0IHsKKysJaW50IGV2ZW50OwkJLyogcHJvY2Vzc2VkIGV2ZW50IHR5cGUgKi8KKysJaW50IHJlc3VsdDsKKyt9OworKworKworK3N0cnVjdCBzbmRfc2VxX3JlYWxfdGltZSB7CisrCXVuc2lnbmVkIGludCB0dl9zZWM7CS8qIHNlY29uZHMgKi8KKysJdW5zaWduZWQgaW50IHR2X25zZWM7CS8qIG5hbm9zZWNvbmRzICovCisrfTsKKysKKyt0eXBlZGVmIHVuc2lnbmVkIGludCBzbmRfc2VxX3RpY2tfdGltZV90OwkvKiBtaWRpIHRpY2tzICovCisrCisrdW5pb24gc25kX3NlcV90aW1lc3RhbXAgeworKwlzbmRfc2VxX3RpY2tfdGltZV90IHRpY2s7CisrCXN0cnVjdCBzbmRfc2VxX3JlYWxfdGltZSB0aW1lOworK307CisrCisrc3RydWN0IHNuZF9zZXFfcXVldWVfc2tldyB7CisrCXVuc2lnbmVkIGludCB2YWx1ZTsKKysJdW5zaWduZWQgaW50IGJhc2U7CisrfTsKKysKKysJLyogcXVldWUgdGltZXIgY29udHJvbCAqLworK3N0cnVjdCBzbmRfc2VxX2V2X3F1ZXVlX2NvbnRyb2wgeworKwl1bnNpZ25lZCBjaGFyIHF1ZXVlOwkJCS8qIGFmZmVjdGVkIHF1ZXVlICovCisrCXVuc2lnbmVkIGNoYXIgcGFkWzNdOwkJCS8qIHJlc2VydmVkICovCisrCXVuaW9uIHsKKysJCXNpZ25lZCBpbnQgdmFsdWU7CQkvKiBhZmZlY3RlZCB2YWx1ZSAoZS5nLiB0ZW1wbykgKi8KKysJCXVuaW9uIHNuZF9zZXFfdGltZXN0YW1wIHRpbWU7CS8qIHRpbWUgKi8KKysJCXVuc2lnbmVkIGludCBwb3NpdGlvbjsJCS8qIHN5bmMgcG9zaXRpb24gKi8KKysJCXN0cnVjdCBzbmRfc2VxX3F1ZXVlX3NrZXcgc2tldzsKKysJCXVuc2lnbmVkIGludCBkMzJbMl07CisrCQl1bnNpZ25lZCBjaGFyIGQ4WzhdOworKwl9IHBhcmFtOworK307CisrCisrCS8qIHF1b3RlZCBldmVudCAtIGluc2lkZSB0aGUga2VybmVsIG9ubHkgKi8KKytzdHJ1Y3Qgc25kX3NlcV9ldl9xdW90ZSB7CisrCXN0cnVjdCBzbmRfc2VxX2FkZHIgb3JpZ2luOwkJLyogb3JpZ2luYWwgc2VuZGVyICovCisrCXVuc2lnbmVkIHNob3J0IHZhbHVlOwkJLyogb3B0aW9uYWwgZGF0YSAqLworKwlzdHJ1Y3Qgc25kX3NlcV9ldmVudCAqZXZlbnQ7CQkvKiBxdW90ZWQgZXZlbnQgKi8KKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKworKwkvKiBzZXF1ZW5jZXIgZXZlbnQgKi8KKytzdHJ1Y3Qgc25kX3NlcV9ldmVudCB7CisrCXNuZF9zZXFfZXZlbnRfdHlwZV90IHR5cGU7CS8qIGV2ZW50IHR5cGUgKi8KKysJdW5zaWduZWQgY2hhciBmbGFnczsJCS8qIGV2ZW50IGZsYWdzICovCisrCWNoYXIgdGFnOworKwkKKysJdW5zaWduZWQgY2hhciBxdWV1ZTsJCS8qIHNjaGVkdWxlIHF1ZXVlICovCisrCXVuaW9uIHNuZF9zZXFfdGltZXN0YW1wIHRpbWU7CS8qIHNjaGVkdWxlIHRpbWUgKi8KKysKKysKKysJc3RydWN0IHNuZF9zZXFfYWRkciBzb3VyY2U7CS8qIHNvdXJjZSBhZGRyZXNzICovCisrCXN0cnVjdCBzbmRfc2VxX2FkZHIgZGVzdDsJLyogZGVzdGluYXRpb24gYWRkcmVzcyAqLworKworKwl1bmlvbiB7CQkJCS8qIGV2ZW50IGRhdGEuLi4gKi8KKysJCXN0cnVjdCBzbmRfc2VxX2V2X25vdGUgbm90ZTsKKysJCXN0cnVjdCBzbmRfc2VxX2V2X2N0cmwgY29udHJvbDsKKysJCXN0cnVjdCBzbmRfc2VxX2V2X3JhdzggcmF3ODsKKysJCXN0cnVjdCBzbmRfc2VxX2V2X3JhdzMyIHJhdzMyOworKwkJc3RydWN0IHNuZF9zZXFfZXZfZXh0IGV4dDsKKysJCXN0cnVjdCBzbmRfc2VxX2V2X3F1ZXVlX2NvbnRyb2wgcXVldWU7CisrCQl1bmlvbiBzbmRfc2VxX3RpbWVzdGFtcCB0aW1lOworKwkJc3RydWN0IHNuZF9zZXFfYWRkciBhZGRyOworKwkJc3RydWN0IHNuZF9zZXFfY29ubmVjdCBjb25uZWN0OworKwkJc3RydWN0IHNuZF9zZXFfcmVzdWx0IHJlc3VsdDsKKysJCXN0cnVjdCBzbmRfc2VxX2V2X3F1b3RlIHF1b3RlOworKwl9IGRhdGE7CisrfTsKKysKKysKKysvKgorKyAqIGJvdW5jZSBldmVudCAtIHN0b3JlZCBhcyB2YXJpYWJsZSBzaXplIGRhdGEKKysgKi8KKytzdHJ1Y3Qgc25kX3NlcV9ldmVudF9ib3VuY2UgeworKwlpbnQgZXJyOworKwlzdHJ1Y3Qgc25kX3NlcV9ldmVudCBldmVudDsKKysJLyogZXh0ZXJuYWwgZGF0YSBmb2xsb3dzIGhlcmUuICovCisrfTsKKysKKysKKysJLyogc3lzdGVtIGluZm9ybWF0aW9uICovCisrc3RydWN0IHNuZF9zZXFfc3lzdGVtX2luZm8geworKwlpbnQgcXVldWVzOwkJCS8qIG1heGltdW0gcXVldWVzIGNvdW50ICovCisrCWludCBjbGllbnRzOwkJCS8qIG1heGltdW0gY2xpZW50cyBjb3VudCAqLworKwlpbnQgcG9ydHM7CQkJLyogbWF4aW11bSBwb3J0cyBwZXIgY2xpZW50ICovCisrCWludCBjaGFubmVsczsJCQkvKiBtYXhpbXVtIGNoYW5uZWxzIHBlciBwb3J0ICovCisrCWludCBjdXJfY2xpZW50czsJCS8qIGN1cnJlbnQgY2xpZW50cyAqLworKwlpbnQgY3VyX3F1ZXVlczsJCQkvKiBjdXJyZW50IHF1ZXVlcyAqLworKwljaGFyIHJlc2VydmVkWzI0XTsKKyt9OworKworKworKwkvKiBzeXN0ZW0gcnVubmluZyBpbmZvcm1hdGlvbiAqLworK3N0cnVjdCBzbmRfc2VxX3J1bm5pbmdfaW5mbyB7CisrCXVuc2lnbmVkIGNoYXIgY2xpZW50OwkJLyogY2xpZW50IGlkICovCisrCXVuc2lnbmVkIGNoYXIgYmlnX2VuZGlhbjsJLyogMSA9IGJpZy1lbmRpYW4gKi8KKysJdW5zaWduZWQgY2hhciBjcHVfbW9kZTsJCS8qIDQgPSAzMmJpdCwgOCA9IDY0Yml0ICovCisrCXVuc2lnbmVkIGNoYXIgcGFkOwkJLyogcmVzZXJ2ZWQgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFsxMl07CisrfTsKKysKKysKKysJLyoga25vd24gY2xpZW50IG51bWJlcnMgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9DTElFTlRfU1lTVEVNCQkwCisrCS8qIGludGVybmFsIGNsaWVudCBudW1iZXJzICovCisrI2RlZmluZSBTTkRSVl9TRVFfQ0xJRU5UX0RVTU1ZCQkxNAkvKiBtaWRpIHRocm91Z2ggKi8KKysjZGVmaW5lIFNORFJWX1NFUV9DTElFTlRfT1NTCQkxNQkvKiBvc3Mgc2VxdWVuY2VyIGVtdWxhdG9yICovCisrCisrCisrCS8qIGNsaWVudCB0eXBlcyAqLworK3R5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfc2VxX2NsaWVudF90eXBlX3Q7CisrI2RlZmluZQlOT19DTElFTlQJKChfX2ZvcmNlIHNuZF9zZXFfY2xpZW50X3R5cGVfdCkgMCkKKysjZGVmaW5lCVVTRVJfQ0xJRU5UCSgoX19mb3JjZSBzbmRfc2VxX2NsaWVudF90eXBlX3QpIDEpCisrI2RlZmluZQlLRVJORUxfQ0xJRU5UCSgoX19mb3JjZSBzbmRfc2VxX2NsaWVudF90eXBlX3QpIDIpCisrICAgICAgICAgICAgICAgICAgICAgICAgCisrCS8qIGV2ZW50IGZpbHRlciBmbGFncyAqLworKyNkZWZpbmUgU05EUlZfU0VRX0ZJTFRFUl9CUk9BRENBU1QJKDE8PDApCS8qIGFjY2VwdCBicm9hZGNhc3QgbWVzc2FnZXMgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9GSUxURVJfTVVMVElDQVNUCSgxPDwxKQkvKiBhY2NlcHQgbXVsdGljYXN0IG1lc3NhZ2VzICovCisrI2RlZmluZSBTTkRSVl9TRVFfRklMVEVSX0JPVU5DRQkJKDE8PDIpCS8qIGFjY2VwdCBib3VuY2UgZXZlbnQgaW4gZXJyb3IgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9GSUxURVJfVVNFX0VWRU5UCSgxPDwzMSkJLyogdXNlIGV2ZW50IGZpbHRlciAqLworKworK3N0cnVjdCBzbmRfc2VxX2NsaWVudF9pbmZvIHsKKysJaW50IGNsaWVudDsJCQkvKiBjbGllbnQgbnVtYmVyIHRvIGlucXVpcmUgKi8KKysJc25kX3NlcV9jbGllbnRfdHlwZV90IHR5cGU7CS8qIGNsaWVudCB0eXBlICovCisrCWNoYXIgbmFtZVs2NF07CQkJLyogY2xpZW50IG5hbWUgKi8KKysJdW5zaWduZWQgaW50IGZpbHRlcjsJCS8qIGZpbHRlciBmbGFncyAqLworKwl1bnNpZ25lZCBjaGFyIG11bHRpY2FzdF9maWx0ZXJbOF07IC8qIG11bHRpY2FzdCBmaWx0ZXIgYml0bWFwICovCisrCXVuc2lnbmVkIGNoYXIgZXZlbnRfZmlsdGVyWzMyXTsJLyogZXZlbnQgZmlsdGVyIGJpdG1hcCAqLworKwlpbnQgbnVtX3BvcnRzOwkJCS8qIFJPOiBudW1iZXIgb2YgcG9ydHMgKi8KKysJaW50IGV2ZW50X2xvc3Q7CQkJLyogbnVtYmVyIG9mIGxvc3QgZXZlbnRzICovCisrCWludCBjYXJkOwkJCS8qIFJPOiBjYXJkIG51bWJlcltrZXJuZWxdICovCisrCWludCBwaWQ7CQkJLyogUk86IHBpZFt1c2VyXSAqLworKwljaGFyIHJlc2VydmVkWzU2XTsJCS8qIGZvciBmdXR1cmUgdXNlICovCisrfTsKKysKKysKKysvKiBjbGllbnQgcG9vbCBzaXplICovCisrc3RydWN0IHNuZF9zZXFfY2xpZW50X3Bvb2wgeworKwlpbnQgY2xpZW50OwkJCS8qIGNsaWVudCBudW1iZXIgdG8gaW5xdWlyZSAqLworKwlpbnQgb3V0cHV0X3Bvb2w7CQkvKiBvdXRnb2luZyAod3JpdGUpIHBvb2wgc2l6ZSAqLworKwlpbnQgaW5wdXRfcG9vbDsJCQkvKiBpbmNvbWluZyAocmVhZCkgcG9vbCBzaXplICovCisrCWludCBvdXRwdXRfcm9vbTsJCS8qIG1pbmltdW0gZnJlZSBwb29sIHNpemUgZm9yIHNlbGVjdC9ibG9ja2luZyBtb2RlICovCisrCWludCBvdXRwdXRfZnJlZTsJCS8qIHVudXNlZCBzaXplICovCisrCWludCBpbnB1dF9mcmVlOwkJCS8qIHVudXNlZCBzaXplICovCisrCWNoYXIgcmVzZXJ2ZWRbNjRdOworK307CisrCisrCisrLyogUmVtb3ZlIGV2ZW50cyBieSBzcGVjaWZpZWQgY3JpdGVyaWEgKi8KKysKKysjZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfSU5QVVQJCSgxPDwwKQkvKiBGbHVzaCBpbnB1dCBxdWV1ZXMgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfT1VUUFVUCQkoMTw8MSkJLyogRmx1c2ggb3V0cHV0IHF1ZXVlcyAqLworKyNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9ERVNUCQkoMTw8MikJLyogUmVzdHJpY3QgYnkgZGVzdGluYXRpb24gcTpjbGllbnQ6cG9ydCAqLworKyNkZWZpbmUgU05EUlZfU0VRX1JFTU9WRV9ERVNUX0NIQU5ORUwJKDE8PDMpCS8qIFJlc3RyaWN0IGJ5IGNoYW5uZWwgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfVElNRV9CRUZPUkUJKDE8PDQpCS8qIFJlc3RyaWN0IHRvIGJlZm9yZSB0aW1lICovCisrI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX1RJTUVfQUZURVIJKDE8PDUpCS8qIFJlc3RyaWN0IHRvIHRpbWUgb3IgYWZ0ZXIgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfVElNRV9USUNLCSgxPDw2KQkvKiBUaW1lIGlzIGluIHRpY2tzICovCisrI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX0VWRU5UX1RZUEUJKDE8PDcpCS8qIFJlc3RyaWN0IHRvIGV2ZW50IHR5cGUgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9SRU1PVkVfSUdOT1JFX09GRiAJKDE8PDgpCS8qIERvIG5vdCBmbHVzaCBvZmYgZXZlbnRzICovCisrI2RlZmluZSBTTkRSVl9TRVFfUkVNT1ZFX1RBR19NQVRDSCAJKDE8PDkpCS8qIFJlc3RyaWN0IHRvIGV2ZW50cyB3aXRoIGdpdmVuIHRhZyAqLworKworK3N0cnVjdCBzbmRfc2VxX3JlbW92ZV9ldmVudHMgeworKwl1bnNpZ25lZCBpbnQgIHJlbW92ZV9tb2RlOwkvKiBGbGFncyB0aGF0IGRldGVybWluZSB3aGF0IGdldHMgcmVtb3ZlZCAqLworKworKwl1bmlvbiBzbmRfc2VxX3RpbWVzdGFtcCB0aW1lOworKworKwl1bnNpZ25lZCBjaGFyIHF1ZXVlOwkvKiBRdWV1ZSBmb3IgUkVNT1ZFX0RFU1QgKi8KKysJc3RydWN0IHNuZF9zZXFfYWRkciBkZXN0OwkvKiBBZGRyZXNzIGZvciBSRU1PVkVfREVTVCAqLworKwl1bnNpZ25lZCBjaGFyIGNoYW5uZWw7CS8qIENoYW5uZWwgZm9yIFJFTU9WRV9ERVNUICovCisrCisrCWludCAgdHlwZTsJLyogRm9yIFJFTU9WRV9FVkVOVF9UWVBFICovCisrCWNoYXIgIHRhZzsJLyogVGFnIGZvciBSRU1PVkVfVEFHICovCisrCisrCWludCAgcmVzZXJ2ZWRbMTBdOwkvKiBUbyBhbGxvdyBmb3IgZnV0dXJlIGJpbmFyeSBjb21wYXRpYmlsaXR5ICovCisrCisrfTsKKysKKysKKysJLyoga25vd24gcG9ydCBudW1iZXJzICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9TWVNURU1fVElNRVIJMAorKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfU1lTVEVNX0FOTk9VTkNFCTEKKysKKysJLyogcG9ydCBjYXBhYmlsaXRpZXMgKDMyIGJpdHMpICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfUkVBRAkJKDE8PDApCS8qIHJlYWRhYmxlIGZyb20gdGhpcyBwb3J0ICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfV1JJVEUJKDE8PDEpCS8qIHdyaXRhYmxlIHRvIHRoaXMgcG9ydCAqLworKworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX1NZTkNfUkVBRAkoMTw8MikKKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9TWU5DX1dSSVRFCSgxPDwzKQorKworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfQ0FQX0RVUExFWAkoMTw8NCkKKysKKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX0NBUF9TVUJTX1JFQUQJKDE8PDUpCS8qIGFsbG93IHJlYWQgc3Vic2NyaXB0aW9uICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfU1VCU19XUklURQkoMTw8NikJLyogYWxsb3cgd3JpdGUgc3Vic2NyaXB0aW9uICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9DQVBfTk9fRVhQT1JUCSgxPDw3KQkvKiByb3V0aW5nIG5vdCBhbGxvd2VkICovCisrCisrCS8qIHBvcnQgdHlwZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9TUEVDSUZJQwkoMTw8MCkJLyogaGFyZHdhcmUgc3BlY2lmaWMgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfTUlESV9HRU5FUklDICgxPDwxKQkvKiBnZW5lcmljIE1JREkgZGV2aWNlICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR00JKDE8PDIpCS8qIEdlbmVyYWwgTUlESSBjb21wYXRpYmxlIGRldmljZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX0dTCSgxPDwzKQkvKiBHUyBjb21wYXRpYmxlIGRldmljZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX1hHCSgxPDw0KQkvKiBYRyBjb21wYXRpYmxlIGRldmljZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9NSURJX01UMzIJKDE8PDUpCS8qIE1ULTMyIGNvbXBhdGlibGUgZGV2aWNlICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX01JRElfR00yCSgxPDw2KQkvKiBHZW5lcmFsIE1JREkgMiBjb21wYXRpYmxlIGRldmljZSAqLworKworKy8qIG90aGVyIHN0YW5kYXJkcy4uLiovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX1NZTlRICSgxPDwxMCkJLyogU3ludGggZGV2aWNlIChubyBNSURJIGNvbXBhdGlibGUgLSBkaXJlY3Qgd2F2ZXRhYmxlKSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9ESVJFQ1RfU0FNUExFICgxPDwxMSkJLyogU2FtcGxpbmcgZGV2aWNlIChzdXBwb3J0IHNhbXBsZSBkb3dubG9hZCkgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfU0FNUExFCSgxPDwxMikJLyogU2FtcGxpbmcgZGV2aWNlIChzYW1wbGUgY2FuIGJlIGRvd25sb2FkZWQgYXQgYW55IHRpbWUpICovCisrLyouLi4qLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9IQVJEV0FSRQkoMTw8MTYpCS8qIGRyaXZlciBmb3IgYSBoYXJkd2FyZSBkZXZpY2UgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1RZUEVfU09GVFdBUkUJKDE8PDE3KQkvKiBpbXBsZW1lbnRlZCBpbiBzb2Z0d2FyZSAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9TWU5USEVTSVpFUgkoMTw8MTgpCS8qIGdlbmVyYXRlcyBzb3VuZCAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfVFlQRV9QT1JUCSgxPDwxOSkJLyogY29ubmVjdHMgdG8gb3RoZXIgZGV2aWNlKHMpICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9UWVBFX0FQUExJQ0FUSU9OCSgxPDwyMCkJLyogYXBwbGljYXRpb24gKHNlcXVlbmNlci9lZGl0b3IpICovCisrCisrLyogbWlzYy4gY29uZGl0aW9uaW5nIGZsYWdzICovCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9GTEdfR0lWRU5fUE9SVAkoMTw8MCkKKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX0ZMR19USU1FU1RBTVAJKDE8PDEpCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9GTEdfVElNRV9SRUFMCSgxPDwyKQorKworK3N0cnVjdCBzbmRfc2VxX3BvcnRfaW5mbyB7CisrCXN0cnVjdCBzbmRfc2VxX2FkZHIgYWRkcjsJLyogY2xpZW50L3BvcnQgbnVtYmVycyAqLworKwljaGFyIG5hbWVbNjRdOwkJCS8qIHBvcnQgbmFtZSAqLworKworKwl1bnNpZ25lZCBpbnQgY2FwYWJpbGl0eTsJLyogcG9ydCBjYXBhYmlsaXR5IGJpdHMgKi8KKysJdW5zaWduZWQgaW50IHR5cGU7CQkvKiBwb3J0IHR5cGUgYml0cyAqLworKwlpbnQgbWlkaV9jaGFubmVsczsJCS8qIGNoYW5uZWxzIHBlciBNSURJIHBvcnQgKi8KKysJaW50IG1pZGlfdm9pY2VzOwkJLyogdm9pY2VzIHBlciBNSURJIHBvcnQgKi8KKysJaW50IHN5bnRoX3ZvaWNlczsJCS8qIHZvaWNlcyBwZXIgU1lOVEggcG9ydCAqLworKworKwlpbnQgcmVhZF91c2U7CQkJLyogUi9POiBzdWJzY3JpYmVycyBmb3Igb3V0cHV0IChmcm9tIHRoaXMgcG9ydCkgKi8KKysJaW50IHdyaXRlX3VzZTsJCQkvKiBSL086IHN1YnNjcmliZXJzIGZvciBpbnB1dCAodG8gdGhpcyBwb3J0KSAqLworKworKwl2b2lkICprZXJuZWw7CQkJLyogcmVzZXJ2ZWQgZm9yIGtlcm5lbCB1c2UgKG11c3QgYmUgTlVMTCkgKi8KKysJdW5zaWduZWQgaW50IGZsYWdzOwkJLyogbWlzYy4gY29uZGl0aW9uaW5nICovCisrCXVuc2lnbmVkIGNoYXIgdGltZV9xdWV1ZTsJLyogcXVldWUgIyBmb3IgdGltZXN0YW1waW5nICovCisrCWNoYXIgcmVzZXJ2ZWRbNTldOwkJLyogZm9yIGZ1dHVyZSB1c2UgKi8KKyt9OworKworKworKy8qIHF1ZXVlIGZsYWdzICovCisrI2RlZmluZSBTTkRSVl9TRVFfUVVFVUVfRkxHX1NZTkMJKDE8PDApCS8qIHN5bmMgZW5hYmxlZCAqLworKworKy8qIHF1ZXVlIGluZm9ybWF0aW9uICovCisrc3RydWN0IHNuZF9zZXFfcXVldWVfaW5mbyB7CisrCWludCBxdWV1ZTsJCS8qIHF1ZXVlIGlkICovCisrCisrCS8qCisrCSAqICBzZWN1cml0eSBzZXR0aW5ncywgb25seSBvd25lciBvZiB0aGlzIHF1ZXVlIGNhbiBzdGFydC9zdG9wIHRpbWVyCisrCSAqICBldGMuIGlmIHRoZSBxdWV1ZSBpcyBsb2NrZWQgZm9yIG90aGVyIGNsaWVudHMKKysJICovCisrCWludCBvd25lcjsJCS8qIGNsaWVudCBpZCBmb3Igb3duZXIgb2YgdGhlIHF1ZXVlICovCisrCXVuc2lnbmVkIGxvY2tlZDoxOwkvKiB0aW1pbmcgcXVldWUgbG9ja2VkIGZvciBvdGhlciBxdWV1ZXMgKi8KKysJY2hhciBuYW1lWzY0XTsJCS8qIG5hbWUgb2YgdGhpcyBxdWV1ZSAqLworKwl1bnNpZ25lZCBpbnQgZmxhZ3M7CS8qIGZsYWdzICovCisrCWNoYXIgcmVzZXJ2ZWRbNjBdOwkvKiBmb3IgZnV0dXJlIHVzZSAqLworKworK307CisrCisrLyogcXVldWUgaW5mby9zdGF0dXMgKi8KKytzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9zdGF0dXMgeworKwlpbnQgcXVldWU7CQkJLyogcXVldWUgaWQgKi8KKysJaW50IGV2ZW50czsJCQkvKiByZWFkLW9ubHkgLSBxdWV1ZSBzaXplICovCisrCXNuZF9zZXFfdGlja190aW1lX3QgdGljazsJLyogY3VycmVudCB0aWNrICovCisrCXN0cnVjdCBzbmRfc2VxX3JlYWxfdGltZSB0aW1lOwkvKiBjdXJyZW50IHRpbWUgKi8KKysJaW50IHJ1bm5pbmc7CQkJLyogcnVubmluZyBzdGF0ZSBvZiBxdWV1ZSAqLworKwlpbnQgZmxhZ3M7CQkJLyogdmFyaW91cyBmbGFncyAqLworKwljaGFyIHJlc2VydmVkWzY0XTsJCS8qIGZvciB0aGUgZnV0dXJlICovCisrfTsKKysKKysKKysvKiBxdWV1ZSB0ZW1wbyAqLworK3N0cnVjdCBzbmRfc2VxX3F1ZXVlX3RlbXBvIHsKKysJaW50IHF1ZXVlOwkJCS8qIHNlcXVlbmNlciBxdWV1ZSAqLworKwl1bnNpZ25lZCBpbnQgdGVtcG87CQkvKiBjdXJyZW50IHRlbXBvLCB1cy90aWNrICovCisrCWludCBwcHE7CQkJLyogdGltZSByZXNvbHV0aW9uLCB0aWNrcy9xdWFydGVyICovCisrCXVuc2lnbmVkIGludCBza2V3X3ZhbHVlOwkvKiBxdWV1ZSBza2V3ICovCisrCXVuc2lnbmVkIGludCBza2V3X2Jhc2U7CQkvKiBxdWV1ZSBza2V3IGJhc2UgKi8KKysJY2hhciByZXNlcnZlZFsyNF07CQkvKiBmb3IgdGhlIGZ1dHVyZSAqLworK307CisrCisrCisrLyogc2VxdWVuY2VyIHRpbWVyIHNvdXJjZXMgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9USU1FUl9BTFNBCQkwCS8qIEFMU0EgdGltZXIgKi8KKysjZGVmaW5lIFNORFJWX1NFUV9USU1FUl9NSURJX0NMT0NLCTEJLyogTWlkaSBDbG9jayAoQ0xPQ0sgZXZlbnQpICovCisrI2RlZmluZSBTTkRSVl9TRVFfVElNRVJfTUlESV9USUNLCTIJLyogTWlkaSBUaW1lciBUaWNrIChUSUNLIGV2ZW50KSAqLworKworKy8qIHF1ZXVlIHRpbWVyIGluZm8gKi8KKytzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90aW1lciB7CisrCWludCBxdWV1ZTsJCQkvKiBzZXF1ZW5jZXIgcXVldWUgKi8KKysJaW50IHR5cGU7CQkJLyogc291cmNlIHRpbWVyIHR5cGUgKi8KKysJdW5pb24geworKwkJc3RydWN0IHsKKysJCQlzdHJ1Y3Qgc25kX3RpbWVyX2lkIGlkOwkvKiBBTFNBJ3MgdGltZXIgSUQgKi8KKysJCQl1bnNpZ25lZCBpbnQgcmVzb2x1dGlvbjsJLyogcmVzb2x1dGlvbiBpbiBIeiAqLworKwkJfSBhbHNhOworKwl9IHU7CisrCWNoYXIgcmVzZXJ2ZWRbNjRdOwkJLyogZm9yIHRoZSBmdXR1cmUgdXNlICovCisrfTsKKysKKysKKytzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9jbGllbnQgeworKwlpbnQgcXVldWU7CQkvKiBzZXF1ZW5jZXIgcXVldWUgKi8KKysJaW50IGNsaWVudDsJCS8qIHNlcXVlbmNlciBjbGllbnQgKi8KKysJaW50IHVzZWQ7CQkvKiBxdWV1ZSBpcyB1c2VkIHdpdGggdGhpcyBjbGllbnQKKysJCQkJICAgKG11c3QgYmUgc2V0IGZvciBhY2NlcHRpbmcgZXZlbnRzKSAqLworKwkvKiBwZXIgY2xpZW50IHdhdGVybWFya3MgKi8KKysJY2hhciByZXNlcnZlZFs2NF07CS8qIGZvciBmdXR1cmUgdXNlICovCisrfTsKKysKKysKKysjZGVmaW5lIFNORFJWX1NFUV9QT1JUX1NVQlNfRVhDTFVTSVZFCSgxPDwwKQkvKiBleGNsdXNpdmUgY29ubmVjdGlvbiAqLworKyNkZWZpbmUgU05EUlZfU0VRX1BPUlRfU1VCU19USU1FU1RBTVAJKDE8PDEpCisrI2RlZmluZSBTTkRSVl9TRVFfUE9SVF9TVUJTX1RJTUVfUkVBTAkoMTw8MikKKysKKytzdHJ1Y3Qgc25kX3NlcV9wb3J0X3N1YnNjcmliZSB7CisrCXN0cnVjdCBzbmRfc2VxX2FkZHIgc2VuZGVyOwkvKiBzZW5kZXIgYWRkcmVzcyAqLworKwlzdHJ1Y3Qgc25kX3NlcV9hZGRyIGRlc3Q7CS8qIGRlc3RpbmF0aW9uIGFkZHJlc3MgKi8KKysJdW5zaWduZWQgaW50IHZvaWNlczsJCS8qIG51bWJlciBvZiB2b2ljZXMgdG8gYmUgYWxsb2NhdGVkICgwID0gZG9uJ3QgY2FyZSkgKi8KKysJdW5zaWduZWQgaW50IGZsYWdzOwkJLyogbW9kZXMgKi8KKysJdW5zaWduZWQgY2hhciBxdWV1ZTsJCS8qIGlucHV0IHRpbWUtc3RhbXAgcXVldWUgKG9wdGlvbmFsKSAqLworKwl1bnNpZ25lZCBjaGFyIHBhZFszXTsJCS8qIHJlc2VydmVkICovCisrCWNoYXIgcmVzZXJ2ZWRbNjRdOworK307CisrCisrLyogdHlwZSBvZiBxdWVyeSBzdWJzY3JpcHRpb24gKi8KKysjZGVmaW5lIFNORFJWX1NFUV9RVUVSWV9TVUJTX1JFQUQJMAorKyNkZWZpbmUgU05EUlZfU0VRX1FVRVJZX1NVQlNfV1JJVEUJMQorKworK3N0cnVjdCBzbmRfc2VxX3F1ZXJ5X3N1YnMgeworKwlzdHJ1Y3Qgc25kX3NlcV9hZGRyIHJvb3Q7CS8qIGNsaWVudC9wb3J0IGlkIHRvIGJlIHNlYXJjaGVkICovCisrCWludCB0eXBlOwkJLyogUkVBRCBvciBXUklURSAqLworKwlpbnQgaW5kZXg7CQkvKiAwLi5OLTEgKi8KKysJaW50IG51bV9zdWJzOwkJLyogUi9POiBudW1iZXIgb2Ygc3Vic2NyaXB0aW9ucyBvbiB0aGlzIHBvcnQgKi8KKysJc3RydWN0IHNuZF9zZXFfYWRkciBhZGRyOwkvKiBSL086IHJlc3VsdCAqLworKwl1bnNpZ25lZCBjaGFyIHF1ZXVlOwkvKiBSL086IHJlc3VsdCAqLworKwl1bnNpZ25lZCBpbnQgZmxhZ3M7CS8qIFIvTzogcmVzdWx0ICovCisrCWNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiBmb3IgZnV0dXJlIHVzZSAqLworK307CisrCisrCisrLyoKKysgKiAgSU9DVEwgY29tbWFuZHMKKysgKi8KKysKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9QVkVSU0lPTglfSU9SICgnUycsIDB4MDAsIGludCkKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9DTElFTlRfSUQJX0lPUiAoJ1MnLCAweDAxLCBpbnQpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU1lTVEVNX0lORk8JX0lPV1IoJ1MnLCAweDAyLCBzdHJ1Y3Qgc25kX3NlcV9zeXN0ZW1faW5mbykKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9SVU5OSU5HX01PREUJX0lPV1IoJ1MnLCAweDAzLCBzdHJ1Y3Qgc25kX3NlcV9ydW5uaW5nX2luZm8pCisrCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX0NMSUVOVF9JTkZPCV9JT1dSKCdTJywgMHgxMCwgc3RydWN0IHNuZF9zZXFfY2xpZW50X2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX0NMSUVOVF9JTkZPCV9JT1cgKCdTJywgMHgxMSwgc3RydWN0IHNuZF9zZXFfY2xpZW50X2luZm8pCisrCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfQ1JFQVRFX1BPUlQJX0lPV1IoJ1MnLCAweDIwLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfREVMRVRFX1BPUlQJX0lPVyAoJ1MnLCAweDIxLCBzdHJ1Y3Qgc25kX3NlcV9wb3J0X2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1BPUlRfSU5GTwlfSU9XUignUycsIDB4MjIsIHN0cnVjdCBzbmRfc2VxX3BvcnRfaW5mbykKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfUE9SVF9JTkZPCV9JT1cgKCdTJywgMHgyMywgc3RydWN0IHNuZF9zZXFfcG9ydF9pbmZvKQorKworKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NVQlNDUklCRV9QT1JUCV9JT1cgKCdTJywgMHgzMCwgc3RydWN0IHNuZF9zZXFfcG9ydF9zdWJzY3JpYmUpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfVU5TVUJTQ1JJQkVfUE9SVCBfSU9XICgnUycsIDB4MzEsIHN0cnVjdCBzbmRfc2VxX3BvcnRfc3Vic2NyaWJlKQorKworKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0NSRUFURV9RVUVVRQlfSU9XUignUycsIDB4MzIsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfREVMRVRFX1FVRVVFCV9JT1cgKCdTJywgMHgzMywgc3RydWN0IHNuZF9zZXFfcXVldWVfaW5mbykKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUVVFVUVfSU5GTwlfSU9XUignUycsIDB4MzQsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX1FVRVVFX0lORk8JX0lPV1IoJ1MnLCAweDM1LCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9pbmZvKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX0dFVF9OQU1FRF9RVUVVRQlfSU9XUignUycsIDB4MzYsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1FVRVVFX1NUQVRVUyBfSU9XUignUycsIDB4NDAsIHN0cnVjdCBzbmRfc2VxX3F1ZXVlX3N0YXR1cykKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUVVFVUVfVEVNUE8JX0lPV1IoJ1MnLCAweDQxLCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90ZW1wbykKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfUVVFVUVfVEVNUE8JX0lPVyAoJ1MnLCAweDQyLCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90ZW1wbykKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUVVFVUVfVElNRVIJX0lPV1IoJ1MnLCAweDQ1LCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90aW1lcikKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9TRVRfUVVFVUVfVElNRVIJX0lPVyAoJ1MnLCAweDQ2LCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV90aW1lcikKKysjZGVmaW5lIFNORFJWX1NFUV9JT0NUTF9HRVRfUVVFVUVfQ0xJRU5UCV9JT1dSKCdTJywgMHg0OSwgc3RydWN0IHNuZF9zZXFfcXVldWVfY2xpZW50KQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1NFVF9RVUVVRV9DTElFTlQJX0lPVyAoJ1MnLCAweDRhLCBzdHJ1Y3Qgc25kX3NlcV9xdWV1ZV9jbGllbnQpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX0NMSUVOVF9QT09MCV9JT1dSKCdTJywgMHg0Yiwgc3RydWN0IHNuZF9zZXFfY2xpZW50X3Bvb2wpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfU0VUX0NMSUVOVF9QT09MCV9JT1cgKCdTJywgMHg0Yywgc3RydWN0IHNuZF9zZXFfY2xpZW50X3Bvb2wpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfUkVNT1ZFX0VWRU5UUwlfSU9XICgnUycsIDB4NGUsIHN0cnVjdCBzbmRfc2VxX3JlbW92ZV9ldmVudHMpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfUVVFUllfU1VCUwlfSU9XUignUycsIDB4NGYsIHN0cnVjdCBzbmRfc2VxX3F1ZXJ5X3N1YnMpCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfR0VUX1NVQlNDUklQVElPTglfSU9XUignUycsIDB4NTAsIHN0cnVjdCBzbmRfc2VxX3BvcnRfc3Vic2NyaWJlKQorKyNkZWZpbmUgU05EUlZfU0VRX0lPQ1RMX1FVRVJZX05FWFRfQ0xJRU5UCV9JT1dSKCdTJywgMHg1MSwgc3RydWN0IHNuZF9zZXFfY2xpZW50X2luZm8pCisrI2RlZmluZSBTTkRSVl9TRVFfSU9DVExfUVVFUllfTkVYVF9QT1JUCV9JT1dSKCdTJywgMHg1Miwgc3RydWN0IHNuZF9zZXFfcG9ydF9pbmZvKQorKworKyNlbmRpZiAvKiBfVUFQSV9fU09VTkRfQVNFUVVFTkNFUl9IICovCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL2Fzb2MuaCBiL2luY2x1ZGUvc291bmQvdWFwaS9hc29jLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uYTc0Y2EyMzIKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9hc29jLmgKK0BAIC0wLDAgKzEsNjMzIEBACisrLyogU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKysvKgorKyAqIHVhcGkvc291bmQvYXNvYy5oIC0tIEFMU0EgU29DIEZpcm13YXJlIENvbnRyb2xzIGFuZCBEQVBNCisrICoKKysgKiBDb3B5cmlnaHQgKEMpIDIwMTIgVGV4YXMgSW5zdHJ1bWVudHMgSW5jLgorKyAqIENvcHlyaWdodCAoQykgMjAxNSBJbnRlbCBDb3Jwb3JhdGlvbi4KKysgKgorKyAqIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSB2ZXJzaW9uIDIgYXMKKysgKiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbi4KKysgKgorKyAqIFNpbXBsZSBmaWxlIEFQSSB0byBsb2FkIEZXIHRoYXQgaW5jbHVkZXMgbWl4ZXJzLCBjb2VmZmljaWVudHMsIERBUE0gZ3JhcGhzLAorKyAqIGFsZ29yaXRobXMsIGVxdWFsaXNlcnMsIERBSXMsIHdpZGdldHMgZXRjLgorKyovCisrCisrI2lmbmRlZiBfX0xJTlVYX1VBUElfU05EX0FTT0NfSAorKyNkZWZpbmUgX19MSU5VWF9VQVBJX1NORF9BU09DX0gKKysKKysjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKysjaW5jbHVkZSA8c291bmQvYXNvdW5kLmg+CisrCisrLyoKKysgKiBNYXhpbXVtIG51bWJlciBvZiBjaGFubmVscyB0b3BvbG9neSBrY29udHJvbCBjYW4gcmVwcmVzZW50LgorKyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX01BWF9DSEFOCQk4CisrCisrLyoKKysgKiBNYXhpbXVtIG51bWJlciBvZiBQQ00gZm9ybWF0cyBjYXBhYmlsaXR5CisrICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfTUFYX0ZPUk1BVFMJMTYKKysKKysvKgorKyAqIE1heGltdW0gbnVtYmVyIG9mIFBDTSBzdHJlYW0gY29uZmlncworKyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX1NUUkVBTV9DT05GSUdfTUFYICA4CisrCisrLyoKKysgKiBNYXhpbXVtIG51bWJlciBvZiBwaHlzaWNhbCBsaW5rJ3MgaGFyZHdhcmUgY29uZmlncworKyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX0hXX0NPTkZJR19NQVgJOAorKworKy8qIGluZGl2aWR1YWwga2NvbnRyb2wgaW5mbyB0eXBlcyAtIGNhbiBiZSBtaXhlZCB3aXRoIG90aGVyIHR5cGVzICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfQ1RMX1ZPTFNXCQkxCisrI2RlZmluZSBTTkRfU09DX1RQTEdfQ1RMX1ZPTFNXX1NYCTIKKysjZGVmaW5lIFNORF9TT0NfVFBMR19DVExfVk9MU1dfWFJfU1gJMworKyNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9FTlVNCQk0CisrI2RlZmluZSBTTkRfU09DX1RQTEdfQ1RMX0JZVEVTCQk1CisrI2RlZmluZSBTTkRfU09DX1RQTEdfQ1RMX0VOVU1fVkFMVUUJNgorKyNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9SQU5HRQkJNworKyNkZWZpbmUgU05EX1NPQ19UUExHX0NUTF9TVFJPQkUJCTgKKysKKysKKysvKiBpbmRpdmlkdWFsIHdpZGdldCBrY29udHJvbCBpbmZvIHR5cGVzIC0gY2FuIGJlIG1peGVkIHdpdGggb3RoZXIgdHlwZXMgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0NUTF9WT0xTVwkJNjQKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0NUTF9FTlVNX0RPVUJMRQk2NQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQ1RMX0VOVU1fVklSVAkJNjYKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0NUTF9FTlVNX1ZBTFVFCTY3CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9DVExfUElOCQk2OAorKworKy8qIERBUE0gd2lkZ2V0IHR5cGVzIC0gYWRkIG5ldyBpdGVtcyB0byB0aGUgZW5kICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9JTlBVVAkJMAorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fT1VUUFVUCTEKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX01VWAkJMgorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fTUlYRVIJCTMKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1BHQQkJNAorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fT1VUX0RSVgk1CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9BREMJCTYKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0RBQwkJNworKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fU1dJVENICTgKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX1BSRQkJOQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fUE9TVAkJMTAKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0FJRl9JTgkxMQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQUlGX09VVAkxMgorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fREFJX0lOCTEzCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9EQUlfT1VUCTE0CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9EQUlfTElOSwkxNQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fQlVGRkVSCTE2CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9TQ0hFRFVMRVIJMTcKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQVBNX0VGRkVDVAkxOAorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fU0lHR0VOCTE5CisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9TUkMJCTIwCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFQTV9BU1JDCQkyMQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fRU5DT0RFUgkyMgorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fREVDT0RFUgkyMworKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBUE1fTEFTVAkJU05EX1NPQ19UUExHX0RBUE1fREVDT0RFUgorKworKy8qIEhlYWRlciBtYWdpYyBudW1iZXIgYW5kIHN0cmluZyBzaXplcyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX01BR0lDCQkweDQxNTM2RjQzIC8qIEFTb0MgKi8KKysKKysvKiBzdHJpbmcgc2l6ZXMgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19OVU1fVEVYVFMJCTE2CisrCisrLyogQUJJIHZlcnNpb24gKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19BQklfVkVSU0lPTgkweDUJLyogY3VycmVudCB2ZXJzaW9uICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfQUJJX1ZFUlNJT05fTUlOCTB4NAkvKiBvbGRlc3QgdmVyc2lvbiBzdXBwb3J0ZWQgKi8KKysKKysvKiBNYXggc2l6ZSBvZiBUTFYgZGF0YSAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX1RMVl9TSVpFCQkzMgorKworKy8qCisrICogRmlsZSBhbmQgQmxvY2sgaGVhZGVyIGRhdGEgdHlwZXMuCisrICogQWRkIG5ldyBnZW5lcmljIGFuZCB2ZW5kb3IgdHlwZXMgdG8gZW5kIG9mIGxpc3QuCisrICogR2VuZXJpYyB0eXBlcyBhcmUgaGFuZGxlZCBieSB0aGUgY29yZSB3aGlsc3QgdmVuZG9ycyB0eXBlcyBhcmUgcGFzc2VkCisrICogdG8gdGhlIGNvbXBvbmVudCBkcml2ZXJzIGZvciBoYW5kbGluZy4KKysgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX01JWEVSCQkxCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9CWVRFUwkJMgorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfRU5VTQkJMworKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfREFQTV9HUkFQSAk0CisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9EQVBNX1dJREdFVAk1CisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9EQUlfTElOSwk2CisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9QQ00JCTcKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX01BTklGRVNUCTgKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0NPREVDX0xJTksJOQorKyNkZWZpbmUgU05EX1NPQ19UUExHX1RZUEVfQkFDS0VORF9MSU5LCTEwCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9QREFUQQkJMTEKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX0RBSQkJMTIKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX01BWAkJU05EX1NPQ19UUExHX1RZUEVfREFJCisrCisrLyogdmVuZG9yIGJsb2NrIElEcyAtIHBsZWFzZSBhZGQgbmV3IHZlbmRvciB0eXBlcyB0byBlbmQgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX1ZFTkRPUl9GVwkxMDAwCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRV9WRU5ET1JfQ09ORklHCTEwMDEKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UWVBFX1ZFTkRPUl9DT0VGRgkxMDAyCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFlQRVZFTkRPUl9DT0RFQwkxMDAzCisrCisrI2RlZmluZSBTTkRfU09DX1RQTEdfU1RSRUFNX1BMQVlCQUNLCTAKKysjZGVmaW5lIFNORF9TT0NfVFBMR19TVFJFQU1fQ0FQVFVSRQkxCisrCisrLyogdmVuZG9yIHR1cGxlIHR5cGVzICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFVQTEVfVFlQRV9VVUlECTAKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UVVBMRV9UWVBFX1NUUklORwkxCisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFVQTEVfVFlQRV9CT09MCTIKKysjZGVmaW5lIFNORF9TT0NfVFBMR19UVVBMRV9UWVBFX0JZVEUJMworKyNkZWZpbmUgU05EX1NPQ19UUExHX1RVUExFX1RZUEVfV09SRAk0CisrI2RlZmluZSBTTkRfU09DX1RQTEdfVFVQTEVfVFlQRV9TSE9SVAk1CisrCisrLyogREFJIGZsYWdzICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFJX0ZMR0JJVF9TWU1NRVRSSUNfUkFURVMgICAgICAgICAoMSA8PCAwKQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBSV9GTEdCSVRfU1lNTUVUUklDX0NIQU5ORUxTICAgICAgKDEgPDwgMSkKKysjZGVmaW5lIFNORF9TT0NfVFBMR19EQUlfRkxHQklUX1NZTU1FVFJJQ19TQU1QTEVCSVRTICAgICgxIDw8IDIpCisrCisrLyogREFJIGNsb2NrIGdhdGluZyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBSV9DTEtfR0FURV9VTkRFRklORUQJMAorKyNkZWZpbmUgU05EX1NPQ19UUExHX0RBSV9DTEtfR0FURV9HQVRFRAkxCisrI2RlZmluZSBTTkRfU09DX1RQTEdfREFJX0NMS19HQVRFX0NPTlQJCTIKKysKKysvKiBEQUkgbWNsa19kaXJlY3Rpb24gKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19NQ0xLX0NPICAgICAgICAgICAgMCAvKiBmb3IgY29kZWMsIG1jbGsgaXMgb3V0cHV0ICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfTUNMS19DSSAgICAgICAgICAgIDEgLyogZm9yIGNvZGVjLCBtY2xrIGlzIGlucHV0ICovCisrCisrLyogREFJIHBoeXNpY2FsIFBDTSBkYXRhIGZvcm1hdHMuCisrICogQWRkIG5ldyBmb3JtYXRzIHRvIHRoZSBlbmQgb2YgdGhlIGxpc3QuCisrICovCisrI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfSTJTICAgICAgICAgIDEgLyogSTJTIG1vZGUgKi8KKysjZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9SSUdIVF9KICAgICAgMiAvKiBSaWdodCBKdXN0aWZpZWQgbW9kZSAqLworKyNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX0xFRlRfSiAgICAgICAzIC8qIExlZnQgSnVzdGlmaWVkIG1vZGUgKi8KKysjZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9EU1BfQSAgICAgICAgNCAvKiBMIGRhdGEgTVNCIGFmdGVyIEZSTSBMUkMgKi8KKysjZGVmaW5lIFNORF9TT0NfREFJX0ZPUk1BVF9EU1BfQiAgICAgICAgNSAvKiBMIGRhdGEgTVNCIGR1cmluZyBGUk0gTFJDICovCisrI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfQUM5NyAgICAgICAgIDYgLyogQUM5NyAqLworKyNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX1BETSAgICAgICAgICA3IC8qIFB1bHNlIGRlbnNpdHkgbW9kdWxhdGlvbiAqLworKworKy8qIGxlZnQgYW5kIHJpZ2h0IGp1c3RpZmllZCBhbHNvIGtub3duIGFzIE1TQiBhbmQgTFNCIHJlc3BlY3RpdmVseSAqLworKyNkZWZpbmUgU05EX1NPQ19EQUlfRk9STUFUX01TQiAgICAgICAgICBTTkRfU09DX0RBSV9GT1JNQVRfTEVGVF9KCisrI2RlZmluZSBTTkRfU09DX0RBSV9GT1JNQVRfTFNCICAgICAgICAgIFNORF9TT0NfREFJX0ZPUk1BVF9SSUdIVF9KCisrCisrLyogREFJIGxpbmsgZmxhZ3MgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19MTktfRkxHQklUX1NZTU1FVFJJQ19SQVRFUyAgICAgICAgICgxIDw8IDApCisrI2RlZmluZSBTTkRfU09DX1RQTEdfTE5LX0ZMR0JJVF9TWU1NRVRSSUNfQ0hBTk5FTFMgICAgICAoMSA8PCAxKQorKyNkZWZpbmUgU05EX1NPQ19UUExHX0xOS19GTEdCSVRfU1lNTUVUUklDX1NBTVBMRUJJVFMgICAgKDEgPDwgMikKKysjZGVmaW5lIFNORF9TT0NfVFBMR19MTktfRkxHQklUX1ZPSUNFX1dBS0VVUCAgICAgICAgICAgICgxIDw8IDMpCisrCisrLyogREFJIHRvcG9sb2d5IEJDTEsgcGFyYW1ldGVyCisrICogRm9yIHRoZSBiYWNrd2FyZHMgY2FwYWJpbGl0eSwgYnkgZGVmYXVsdCBjb2RlYyBpcyBiY2xrIG1hc3RlcgorKyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX0JDTEtfQ00gICAgICAgICAwIC8qIGNvZGVjIGlzIGJjbGsgbWFzdGVyICovCisrI2RlZmluZSBTTkRfU09DX1RQTEdfQkNMS19DUyAgICAgICAgIDEgLyogY29kZWMgaXMgYmNsayBzbGF2ZSAqLworKworKy8qIERBSSB0b3BvbG9neSBGU1lOQyBwYXJhbWV0ZXIKKysgKiBGb3IgdGhlIGJhY2t3YXJkcyBjYXBhYmlsaXR5LCBieSBkZWZhdWx0IGNvZGVjIGlzIGZzeW5jIG1hc3RlcgorKyAqLworKyNkZWZpbmUgU05EX1NPQ19UUExHX0ZTWU5DX0NNICAgICAgICAgMCAvKiBjb2RlYyBpcyBmc3luYyBtYXN0ZXIgKi8KKysjZGVmaW5lIFNORF9TT0NfVFBMR19GU1lOQ19DUyAgICAgICAgIDEgLyogY29kZWMgaXMgZnN5bmMgc2xhdmUgKi8KKysKKysvKgorKyAqIEJsb2NrIEhlYWRlci4KKysgKiBUaGlzIGhlYWRlciBwcmVjZWRlcyBhbGwgb2JqZWN0IGFuZCBvYmplY3QgYXJyYXlzIGJlbG93LgorKyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfaGRyIHsKKysJX19sZTMyIG1hZ2ljOwkJLyogbWFnaWMgbnVtYmVyICovCisrCV9fbGUzMiBhYmk7CQkvKiBBQkkgdmVyc2lvbiAqLworKwlfX2xlMzIgdmVyc2lvbjsJCS8qIG9wdGlvbmFsIHZlbmRvciBzcGVjaWZpYyB2ZXJzaW9uIGRldGFpbHMgKi8KKysJX19sZTMyIHR5cGU7CQkvKiBTTkRfU09DX1RQTEdfVFlQRV8gKi8KKysJX19sZTMyIHNpemU7CQkvKiBzaXplIG9mIHRoaXMgc3RydWN0dXJlICovCisrCV9fbGUzMiB2ZW5kb3JfdHlwZTsJLyogb3B0aW9uYWwgdmVuZG9yIHNwZWNpZmljIHR5cGUgaW5mbyAqLworKwlfX2xlMzIgcGF5bG9hZF9zaXplOwkvKiBkYXRhIGJ5dGVzLCBleGNsdWRpbmcgdGhpcyBoZWFkZXIgKi8KKysJX19sZTMyIGluZGV4OwkJLyogaWRlbnRpZmllciBmb3IgYmxvY2sgKi8KKysJX19sZTMyIGNvdW50OwkJLyogbnVtYmVyIG9mIGVsZW1lbnRzIGluIGJsb2NrICovCisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKiB2ZW5kb3IgdHVwbGUgZm9yIHV1aWQgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl91dWlkX2VsZW0geworKwlfX2xlMzIgdG9rZW47CisrCWNoYXIgdXVpZFsxNl07CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKiB2ZW5kb3IgdHVwbGUgZm9yIGEgYm9vbC9ieXRlL3Nob3J0L3dvcmQgdmFsdWUgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl92YWx1ZV9lbGVtIHsKKysJX19sZTMyIHRva2VuOworKwlfX2xlMzIgdmFsdWU7CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKiB2ZW5kb3IgdHVwbGUgZm9yIHN0cmluZyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfdmVuZG9yX3N0cmluZ19lbGVtIHsKKysJX19sZTMyIHRva2VuOworKwljaGFyIHN0cmluZ1tTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKytzdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl9hcnJheSB7CisrCV9fbGUzMiBzaXplOwkvKiBzaXplIGluIGJ5dGVzIG9mIHRoZSBhcnJheSwgaW5jbHVkaW5nIGFsbCBlbGVtZW50cyAqLworKwlfX2xlMzIgdHlwZTsJLyogU05EX1NPQ19UUExHX1RVUExFX1RZUEVfICovCisrCV9fbGUzMiBudW1fZWxlbXM7CS8qIG51bWJlciBvZiBlbGVtZW50cyBpbiBhcnJheSAqLworKwl1bmlvbiB7CisrCQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl91dWlkX2VsZW0gdXVpZFswXTsKKysJCXN0cnVjdCBzbmRfc29jX3RwbGdfdmVuZG9yX3ZhbHVlX2VsZW0gdmFsdWVbMF07CisrCQlzdHJ1Y3Qgc25kX3NvY190cGxnX3ZlbmRvcl9zdHJpbmdfZWxlbSBzdHJpbmdbMF07CisrCX07CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIFByaXZhdGUgZGF0YS4KKysgKiBBbGwgdG9wb2xvZ3kgb2JqZWN0cyBtYXkgaGF2ZSBwcml2YXRlIGRhdGEgdGhhdCBjYW4gYmUgdXNlZCBieSB0aGUgZHJpdmVyIG9yCisrICogZmlybXdhcmUuIENvcmUgd2lsbCBpZ25vcmUgdGhpcyBkYXRhLgorKyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSB7CisrCV9fbGUzMiBzaXplOwkvKiBpbiBieXRlcyBvZiBwcml2YXRlIGRhdGEgKi8KKysJdW5pb24geworKwkJY2hhciBkYXRhWzBdOworKwkJc3RydWN0IHNuZF9zb2NfdHBsZ192ZW5kb3JfYXJyYXkgYXJyYXlbMF07CisrCX07CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIEtjb250cm9sIFRMViBkYXRhLgorKyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfdGx2X2Ric2NhbGUgeworKwlfX2xlMzIgbWluOworKwlfX2xlMzIgc3RlcDsKKysJX19sZTMyIG11dGU7CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKytzdHJ1Y3Qgc25kX3NvY190cGxnX2N0bF90bHYgeworKwlfX2xlMzIgc2l6ZTsJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJX19sZTMyIHR5cGU7CS8qIFNORFJWX0NUTF9UTFZUXyosIHR5cGUgb2YgVExWICovCisrCXVuaW9uIHsKKysJCV9fbGUzMiBkYXRhW1NORF9TT0NfVFBMR19UTFZfU0laRV07CisrCQlzdHJ1Y3Qgc25kX3NvY190cGxnX3Rsdl9kYnNjYWxlIHNjYWxlOworKwl9OworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyoKKysgKiBLY29udHJvbCBjaGFubmVsIGRhdGEKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX2NoYW5uZWwgeworKwlfX2xlMzIgc2l6ZTsJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJX19sZTMyIHJlZzsKKysJX19sZTMyIHNoaWZ0OworKwlfX2xlMzIgaWQ7CS8qIElEIG1hcHMgdG8gTGVmdCwgUmlnaHQsIExGRSBldGMgKi8KKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICogR2VuZXJpY2wgT3BlcmF0aW9ucyBJRHMsIGZvciBiaW5kaW5nIEtjb250cm9sIG9yIEJ5dGVzIGV4dCBvcHMKKysgKiBLY29udHJvbCBvcHMgbmVlZCBnZXQvcHV0L2luZm8uCisrICogQnl0ZXMgZXh0IG9wcyBuZWVkIGdldC9wdXQuCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19pb19vcHMgeworKwlfX2xlMzIgZ2V0OworKwlfX2xlMzIgcHV0OworKwlfX2xlMzIgaW5mbzsKKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICoga2NvbnRyb2wgaGVhZGVyCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19jdGxfaGRyIHsKKysJX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCV9fbGUzMiB0eXBlOworKwljaGFyIG5hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwlfX2xlMzIgYWNjZXNzOworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX2lvX29wcyBvcHM7CisrCXN0cnVjdCBzbmRfc29jX3RwbGdfY3RsX3RsdiB0bHY7CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIFN0cmVhbSBDYXBhYmlsaXRpZXMKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbV9jYXBzIHsKKysJX19sZTMyIHNpemU7CQkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwljaGFyIG5hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwlfX2xlNjQgZm9ybWF0czsJLyogc3VwcG9ydGVkIGZvcm1hdHMgU05EUlZfUENNX0ZNVEJJVF8qICovCisrCV9fbGUzMiByYXRlczsJCS8qIHN1cHBvcnRlZCByYXRlcyBTTkRSVl9QQ01fUkFURV8qICovCisrCV9fbGUzMiByYXRlX21pbjsJLyogbWluIHJhdGUgKi8KKysJX19sZTMyIHJhdGVfbWF4OwkvKiBtYXggcmF0ZSAqLworKwlfX2xlMzIgY2hhbm5lbHNfbWluOwkvKiBtaW4gY2hhbm5lbHMgKi8KKysJX19sZTMyIGNoYW5uZWxzX21heDsJLyogbWF4IGNoYW5uZWxzICovCisrCV9fbGUzMiBwZXJpb2RzX21pbjsJLyogbWluIG51bWJlciBvZiBwZXJpb2RzICovCisrCV9fbGUzMiBwZXJpb2RzX21heDsJLyogbWF4IG51bWJlciBvZiBwZXJpb2RzICovCisrCV9fbGUzMiBwZXJpb2Rfc2l6ZV9taW47CS8qIG1pbiBwZXJpb2Qgc2l6ZSBieXRlcyAqLworKwlfX2xlMzIgcGVyaW9kX3NpemVfbWF4OwkvKiBtYXggcGVyaW9kIHNpemUgYnl0ZXMgKi8KKysJX19sZTMyIGJ1ZmZlcl9zaXplX21pbjsJLyogbWluIGJ1ZmZlciBzaXplIGJ5dGVzICovCisrCV9fbGUzMiBidWZmZXJfc2l6ZV9tYXg7CS8qIG1heCBidWZmZXIgc2l6ZSBieXRlcyAqLworKwlfX2xlMzIgc2lnX2JpdHM7ICAgICAgICAvKiBudW1iZXIgb2YgYml0cyBvZiBjb250ZW50ICovCisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIEZFIG9yIEJFIFN0cmVhbSBjb25maWd1cmF0aW9uIHN1cHBvcnRlZCBieSBTVy9GVworKyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtIHsKKysJX19sZTMyIHNpemU7CQkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwljaGFyIG5hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOyAvKiBOYW1lIG9mIHRoZSBzdHJlYW0gKi8KKysJX19sZTY0IGZvcm1hdDsJCS8qIFNORFJWX1BDTV9GTVRCSVRfKiAqLworKwlfX2xlMzIgcmF0ZTsJCS8qIFNORFJWX1BDTV9SQVRFXyogKi8KKysJX19sZTMyIHBlcmlvZF9ieXRlczsJLyogc2l6ZSBvZiBwZXJpb2QgaW4gYnl0ZXMgKi8KKysJX19sZTMyIGJ1ZmZlcl9ieXRlczsJLyogc2l6ZSBvZiBidWZmZXIgaW4gYnl0ZXMgKi8KKysJX19sZTMyIGNoYW5uZWxzOwkvKiBjaGFubmVscyAqLworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrCisrLyoKKysgKiBEZXNjcmliZXMgYSBwaHlzaWNhbCBsaW5rJ3MgcnVudGltZSBzdXBwb3J0ZWQgaGFyZHdhcmUgY29uZmlnLAorKyAqIGkuZS4gaGFyZHdhcmUgYXVkaW8gZm9ybWF0cy4KKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX2h3X2NvbmZpZyB7CisrCV9fbGUzMiBzaXplOyAgICAgICAgICAgIC8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCV9fbGUzMiBpZDsJCS8qIHVuaXF1ZSBJRCAtIC0gdXNlZCB0byBtYXRjaCAqLworKwlfX2xlMzIgZm10OwkJLyogU05EX1NPQ19EQUlfRk9STUFUXyBmb3JtYXQgdmFsdWUgKi8KKysJX191OCBjbG9ja19nYXRlZDsJLyogU05EX1NPQ19UUExHX0RBSV9DTEtfR0FURV8gdmFsdWUgKi8KKysJX191OCBpbnZlcnRfYmNsazsJLyogMSBmb3IgaW52ZXJ0ZWQgQkNMSywgMCBmb3Igbm9ybWFsICovCisrCV9fdTggaW52ZXJ0X2ZzeW5jOwkvKiAxIGZvciBpbnZlcnRlZCBmcmFtZSBjbG9jaywgMCBmb3Igbm9ybWFsICovCisrCV9fdTggYmNsa19tYXN0ZXI7CS8qIFNORF9TT0NfVFBMR19CQ0xLXyB2YWx1ZSAqLworKwlfX3U4IGZzeW5jX21hc3RlcjsJLyogU05EX1NPQ19UUExHX0ZTWU5DXyB2YWx1ZSAqLworKwlfX3U4IG1jbGtfZGlyZWN0aW9uOyAgICAvKiBTTkRfU09DX1RQTEdfTUNMS18gdmFsdWUgKi8KKysJX19sZTE2IHJlc2VydmVkOwkvKiBmb3IgMzJiaXQgYWxpZ25tZW50ICovCisrCV9fbGUzMiBtY2xrX3JhdGU7CS8qIE1DTEsgb3IgU1lTQ0xLIGZyZXFlbmN5IGluIEh6ICovCisrCV9fbGUzMiBiY2xrX3JhdGU7CS8qIEJDTEsgZnJlcWVuY3kgaW4gSHogKi8KKysJX19sZTMyIGZzeW5jX3JhdGU7CS8qIGZyYW1lIGNsb2NrIGluIEh6ICovCisrCV9fbGUzMiB0ZG1fc2xvdHM7CS8qIG51bWJlciBvZiBURE0gc2xvdHMgaW4gdXNlICovCisrCV9fbGUzMiB0ZG1fc2xvdF93aWR0aDsJLyogd2lkdGggaW4gYml0cyBmb3IgZWFjaCBzbG90ICovCisrCV9fbGUzMiB0eF9zbG90czsJLyogYml0IG1hc2sgZm9yIGFjdGl2ZSBUeCBzbG90cyAqLworKwlfX2xlMzIgcnhfc2xvdHM7CS8qIGJpdCBtYXNrIGZvciBhY3RpdmUgUnggc2xvdHMgKi8KKysJX19sZTMyIHR4X2NoYW5uZWxzOwkvKiBudW1iZXIgb2YgVHggY2hhbm5lbHMgKi8KKysJX19sZTMyIHR4X2NoYW5tYXBbU05EX1NPQ19UUExHX01BWF9DSEFOXTsgLyogYXJyYXkgb2Ygc2xvdCBudW1iZXIgKi8KKysJX19sZTMyIHJ4X2NoYW5uZWxzOwkvKiBudW1iZXIgb2YgUnggY2hhbm5lbHMgKi8KKysJX19sZTMyIHJ4X2NoYW5tYXBbU05EX1NPQ19UUExHX01BWF9DSEFOXTsgLyogYXJyYXkgb2Ygc2xvdCBudW1iZXIgKi8KKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICogTWFuaWZlc3QuIExpc3QgdG90YWxzIGZvciBlYWNoIHBheWxvYWQgdHlwZS4gTm90IHVzZWQgaW4gcGFyc2luZywgYnV0IHdpbGwKKysgKiBiZSBwYXNzZWQgdG8gdGhlIGNvbXBvbmVudCBkcml2ZXIgYmVmb3JlIGFueSBvdGhlciBvYmplY3RzIGluIG9yZGVyIGZvciBhbnkKKysgKiBnbG9iYWwgY29tcG9uZW50IHJlc291cmNlIGFsbG9jYXRpb25zLgorKyAqCisrICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgbWFuaWZlc3QgOi0KKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfbWFuaWZlc3QgICAgICB8ICAxIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX21hbmlmZXN0IHsKKysJX19sZTMyIHNpemU7CQkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwlfX2xlMzIgY29udHJvbF9lbGVtczsJLyogbnVtYmVyIG9mIGNvbnRyb2wgZWxlbWVudHMgKi8KKysJX19sZTMyIHdpZGdldF9lbGVtczsJLyogbnVtYmVyIG9mIHdpZGdldCBlbGVtZW50cyAqLworKwlfX2xlMzIgZ3JhcGhfZWxlbXM7CS8qIG51bWJlciBvZiBncmFwaCBlbGVtZW50cyAqLworKwlfX2xlMzIgcGNtX2VsZW1zOwkvKiBudW1iZXIgb2YgUENNIGVsZW1lbnRzICovCisrCV9fbGUzMiBkYWlfbGlua19lbGVtczsJLyogbnVtYmVyIG9mIERBSSBsaW5rIGVsZW1lbnRzICovCisrCV9fbGUzMiBkYWlfZWxlbXM7CS8qIG51bWJlciBvZiBwaHlzaWNhbCBEQUkgZWxlbWVudHMgKi8KKysJX19sZTMyIHJlc2VydmVkWzIwXTsJLyogcmVzZXJ2ZWQgZm9yIG5ldyBBQkkgZWxlbWVudCB0eXBlcyAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICogTWl4ZXIga2NvbnRyb2wuCisrICoKKysgKiBGaWxlIGJsb2NrIHJlcHJlc2VudGF0aW9uIGZvciBtaXhlciBrY29udHJvbCA6LQorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgICAgICAgICAgIHwgIDEgfAorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19taXhlcl9jb250cm9sIHwgIE4gfAorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworKyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfbWl4ZXJfY29udHJvbCB7CisrCXN0cnVjdCBzbmRfc29jX3RwbGdfY3RsX2hkciBoZHI7CisrCV9fbGUzMiBzaXplOwkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwlfX2xlMzIgbWluOworKwlfX2xlMzIgbWF4OworKwlfX2xlMzIgcGxhdGZvcm1fbWF4OworKwlfX2xlMzIgaW52ZXJ0OworKwlfX2xlMzIgbnVtX2NoYW5uZWxzOworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX2NoYW5uZWwgY2hhbm5lbFtTTkRfU09DX1RQTEdfTUFYX0NIQU5dOworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICogRW51bWVyYXRlZCBrY29udHJvbAorKyAqCisrICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgZW51bSBrY29udHJvbCA6LQorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgICAgICAgICAgIHwgIDEgfAorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19lbnVtX2NvbnRyb2wgIHwgIE4gfAorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworKyAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfZW51bV9jb250cm9sIHsKKysJc3RydWN0IHNuZF9zb2NfdHBsZ19jdGxfaGRyIGhkcjsKKysJX19sZTMyIHNpemU7CS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCV9fbGUzMiBudW1fY2hhbm5lbHM7CisrCXN0cnVjdCBzbmRfc29jX3RwbGdfY2hhbm5lbCBjaGFubmVsW1NORF9TT0NfVFBMR19NQVhfQ0hBTl07CisrCV9fbGUzMiBpdGVtczsKKysJX19sZTMyIG1hc2s7CisrCV9fbGUzMiBjb3VudDsKKysJY2hhciB0ZXh0c1tTTkRfU09DX1RQTEdfTlVNX1RFWFRTXVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CisrCV9fbGUzMiB2YWx1ZXNbU05EX1NPQ19UUExHX05VTV9URVhUUyAqIFNORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOIC8gNF07CisrCXN0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSBwcml2OworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyoKKysgKiBCeXRlcyBrY29udHJvbAorKyAqCisrICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgYnl0ZXMga2NvbnRyb2wgOi0KKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICB8ICAxIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfYnl0ZXNfY29udHJvbCB8ICBOIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX2J5dGVzX2NvbnRyb2wgeworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX2N0bF9oZHIgaGRyOworKwlfX2xlMzIgc2l6ZTsJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJX19sZTMyIG1heDsKKysJX19sZTMyIG1hc2s7CisrCV9fbGUzMiBiYXNlOworKwlfX2xlMzIgbnVtX3JlZ3M7CisrCXN0cnVjdCBzbmRfc29jX3RwbGdfaW9fb3BzIGV4dF9vcHM7CisrCXN0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSBwcml2OworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyoKKysgKiBEQVBNIEdyYXBoIEVsZW1lbnQKKysgKgorKyAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIERBUE0gZ3JhcGggZWxlbWVudHMgOi0KKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgICAgICAgICAgICAgfCAgMSB8CisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfZGFwbV9ncmFwaF9lbGVtIHwgIE4gfAorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0rCisrICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19kYXBtX2dyYXBoX2VsZW0geworKwljaGFyIHNpbmtbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwljaGFyIGNvbnRyb2xbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwljaGFyIHNvdXJjZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CisrfSBfX2F0dHJpYnV0ZV9fKChwYWNrZWQpKTsKKysKKysvKgorKyAqIERBUE0gV2lkZ2V0LgorKyAqCisrICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgREFQTSB3aWRnZXQgOi0KKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfaGRyICAgICAgICAgICAgIHwgIDEgIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKiB8IHN0cnVjdCBzbmRfc29jX3RwbGdfZGFwbV93aWRnZXQgICAgIHwgIE4gIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKiB8ICAgc3RydWN0IHNuZF9zb2NfdHBsZ19lbnVtX2NvbnRyb2wgIHwgMHwxIHwKKysgKiB8ICAgc3RydWN0IHNuZF9zb2NfdHBsZ19taXhlcl9jb250cm9sIHwgMHxOIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKgorKyAqIE9wdGlvbmFsIGVudW0gb3IgbWl4ZXIgY29udHJvbCBjYW4gYmUgYXBwZW5kZWQgdG8gdGhlIGVuZCBvZiBlYWNoIHdpZGdldAorKyAqIGluIHRoZSBibG9jay4KKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX2RhcG1fd2lkZ2V0IHsKKysJX19sZTMyIHNpemU7CQkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwlfX2xlMzIgaWQ7CQkvKiBTTkRfU09DX0RBUE1fQ1RMICovCisrCWNoYXIgbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CisrCWNoYXIgc25hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKworKwlfX2xlMzIgcmVnOwkJLyogbmVnYXRpdmUgcmVnID0gbm8gZGlyZWN0IGRhcG0gKi8KKysJX19sZTMyIHNoaWZ0OwkJLyogYml0cyB0byBzaGlmdCAqLworKwlfX2xlMzIgbWFzazsJCS8qIG5vbi1zaGlmdGVkIG1hc2sgKi8KKysJX19sZTMyIHN1YnNlcTsJCS8qIHNvcnQgd2l0aGluIHdpZGdldCB0eXBlICovCisrCV9fbGUzMiBpbnZlcnQ7CQkvKiBpbnZlcnQgdGhlIHBvd2VyIGJpdCAqLworKwlfX2xlMzIgaWdub3JlX3N1c3BlbmQ7CS8qIGtlcHQgZW5hYmxlZCBvdmVyIHN1c3BlbmQgKi8KKysJX19sZTE2IGV2ZW50X2ZsYWdzOworKwlfX2xlMTYgZXZlbnRfdHlwZTsKKysJX19sZTMyIG51bV9rY29udHJvbHM7CisrCXN0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSBwcml2OworKwkvKgorKwkgKiBrY29udHJvbHMgdGhhdCByZWxhdGUgdG8gdGhpcyB3aWRnZXQKKysJICogZm9sbG93IGhlcmUgYWZ0ZXIgd2lkZ2V0IHByaXZhdGUgZGF0YQorKwkgKi8KKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKworKy8qCisrICogRGVzY3JpYmVzIFNXL0ZXIHNwZWNpZmljIGZlYXR1cmVzIG9mIFBDTSAoRkUgREFJICYgREFJIGxpbmspLgorKyAqCisrICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgUENNIDotCisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgICAgICAgICAgIHwgIDEgIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX3BjbSAgICAgICAgICAgfCAgTiAgfAorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX3BjbSB7CisrCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJY2hhciBwY21fbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CisrCWNoYXIgZGFpX25hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwlfX2xlMzIgcGNtX2lkOwkJLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCB3aXRoIERBSSBsaW5rICovCisrCV9fbGUzMiBkYWlfaWQ7CQkvKiB1bmlxdWUgSUQgLSB1c2VkIHRvIG1hdGNoICovCisrCV9fbGUzMiBwbGF5YmFjazsJLyogc3VwcG9ydHMgcGxheWJhY2sgbW9kZSAqLworKwlfX2xlMzIgY2FwdHVyZTsJCS8qIHN1cHBvcnRzIGNhcHR1cmUgbW9kZSAqLworKwlfX2xlMzIgY29tcHJlc3M7CS8qIDEgPSBjb21wcmVzc2VkOyAwID0gUENNICovCisrCXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtIHN0cmVhbVtTTkRfU09DX1RQTEdfU1RSRUFNX0NPTkZJR19NQVhdOyAvKiBmb3IgREFJIGxpbmsgKi8KKysJX19sZTMyIG51bV9zdHJlYW1zOwkvKiBudW1iZXIgb2Ygc3RyZWFtcyAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbV9jYXBzIGNhcHNbMl07IC8qIHBsYXliYWNrIGFuZCBjYXB0dXJlIGZvciBEQUkgKi8KKysJX19sZTMyIGZsYWdfbWFzazsgICAgICAgLyogYml0bWFzayBvZiBmbGFncyB0byBjb25maWd1cmUgKi8KKysJX19sZTMyIGZsYWdzOyAgICAgICAgICAgLyogU05EX1NPQ19UUExHX0xOS19GTEdCSVRfKiBmbGFnIHZhbHVlICovCisrCXN0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSBwcml2OworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrCisrLyoKKysgKiBEZXNjcmliZXMgdGhlIHBoeXNpY2FsIGxpbmsgcnVudGltZSBzdXBwb3J0ZWQgY29uZmlncyBvciBwYXJhbXMKKysgKgorKyAqIEZpbGUgYmxvY2sgcmVwcmVzZW50YXRpb24gZm9yIHBoeXNpY2FsIGxpbmsgY29uZmlnIDotCisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgICAgICAgICAgIHwgIDEgIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2xpbmtfY29uZmlnICAgfCAgTiAgfAorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX2xpbmtfY29uZmlnIHsKKysJX19sZTMyIHNpemU7ICAgICAgICAgICAgLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJX19sZTMyIGlkOyAgICAgICAgICAgICAgLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCAqLworKwljaGFyIG5hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOyAvKiBuYW1lIC0gdXNlZCB0byBtYXRjaCAqLworKwljaGFyIHN0cmVhbV9uYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsgLyogc3RyZWFtIG5hbWUgLSB1c2VkIHRvIG1hdGNoICovCisrCXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtIHN0cmVhbVtTTkRfU09DX1RQTEdfU1RSRUFNX0NPTkZJR19NQVhdOyAvKiBzdXBwb3J0ZWQgY29uZmlncyBwbGF5YmFjayBhbmQgY2FwdHJ1cmUgKi8KKysJX19sZTMyIG51bV9zdHJlYW1zOyAgICAgLyogbnVtYmVyIG9mIHN0cmVhbXMgKi8KKysJc3RydWN0IHNuZF9zb2NfdHBsZ19od19jb25maWcgaHdfY29uZmlnW1NORF9TT0NfVFBMR19IV19DT05GSUdfTUFYXTsgLyogaHcgY29uZmlncyAqLworKwlfX2xlMzIgbnVtX2h3X2NvbmZpZ3M7ICAgICAgICAgLyogbnVtYmVyIG9mIGh3IGNvbmZpZ3MgKi8KKysJX19sZTMyIGRlZmF1bHRfaHdfY29uZmlnX2lkOyAgIC8qIGRlZmF1bHQgaHcgY29uZmlnIElEIGZvciBpbml0ICovCisrCV9fbGUzMiBmbGFnX21hc2s7ICAgICAgIC8qIGJpdG1hc2sgb2YgZmxhZ3MgdG8gY29uZmlndXJlICovCisrCV9fbGUzMiBmbGFnczsgICAgICAgICAgIC8qIFNORF9TT0NfVFBMR19MTktfRkxHQklUXyogZmxhZyB2YWx1ZSAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKyt9IF9fYXR0cmlidXRlX18oKHBhY2tlZCkpOworKworKy8qCisrICogRGVzY3JpYmVzIFNXL0ZXIHNwZWNpZmljIGZlYXR1cmVzIG9mIHBoeXNpY2FsIERBSS4KKysgKiBJdCBjYW4gYmUgdXNlZCB0byBjb25maWd1cmUgYmFja2VuZCBEQUlzIGZvciBEUENNLgorKyAqCisrICogRmlsZSBibG9jayByZXByZXNlbnRhdGlvbiBmb3IgcGh5c2ljYWwgREFJIDotCisrICogKy0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tKy0tLS0tKworKyAqIHwgc3RydWN0IHNuZF9zb2NfdHBsZ19oZHIgICAgICAgICAgIHwgIDEgIHwKKysgKiArLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0rLS0tLS0rCisrICogfCBzdHJ1Y3Qgc25kX3NvY190cGxnX2RhaSAgICAgICAgICAgfCAgTiAgfAorKyAqICstLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLSstLS0tLSsKKysgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX2RhaSB7CisrCV9fbGUzMiBzaXplOyAgICAgICAgICAgIC8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCWNoYXIgZGFpX25hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOyAvKiBuYW1lIC0gdXNlZCB0byBtYXRjaCAqLworKwlfX2xlMzIgZGFpX2lkOyAgICAgICAgICAvKiB1bmlxdWUgSUQgLSB1c2VkIHRvIG1hdGNoICovCisrCV9fbGUzMiBwbGF5YmFjazsgICAgICAgIC8qIHN1cHBvcnRzIHBsYXliYWNrIG1vZGUgKi8KKysJX19sZTMyIGNhcHR1cmU7ICAgICAgICAgLyogc3VwcG9ydHMgY2FwdHVyZSBtb2RlICovCisrCXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtX2NhcHMgY2Fwc1syXTsgLyogcGxheWJhY2sgYW5kIGNhcHR1cmUgZm9yIERBSSAqLworKwlfX2xlMzIgZmxhZ19tYXNrOyAgICAgICAvKiBiaXRtYXNrIG9mIGZsYWdzIHRvIGNvbmZpZ3VyZSAqLworKwlfX2xlMzIgZmxhZ3M7ICAgICAgICAgICAvKiBTTkRfU09DX1RQTEdfREFJX0ZMR0JJVF8qICovCisrCXN0cnVjdCBzbmRfc29jX3RwbGdfcHJpdmF0ZSBwcml2OworK30gX19hdHRyaWJ1dGVfXygocGFja2VkKSk7CisrCisrLyoKKysgKiBPbGQgdmVyc2lvbiBvZiBBQkkgc3RydWN0cywgc3VwcG9ydGVkIGZvciBiYWNrd2FyZCBjb21wYXRpYmlsaXR5LgorKyAqLworKworKy8qIE1hbmlmZXN0IHY0ICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19tYW5pZmVzdF92NCB7CisrCV9fbGUzMiBzaXplOwkJLyogaW4gYnl0ZXMgb2YgdGhpcyBzdHJ1Y3R1cmUgKi8KKysJX19sZTMyIGNvbnRyb2xfZWxlbXM7CS8qIG51bWJlciBvZiBjb250cm9sIGVsZW1lbnRzICovCisrCV9fbGUzMiB3aWRnZXRfZWxlbXM7CS8qIG51bWJlciBvZiB3aWRnZXQgZWxlbWVudHMgKi8KKysJX19sZTMyIGdyYXBoX2VsZW1zOwkvKiBudW1iZXIgb2YgZ3JhcGggZWxlbWVudHMgKi8KKysJX19sZTMyIHBjbV9lbGVtczsJLyogbnVtYmVyIG9mIFBDTSBlbGVtZW50cyAqLworKwlfX2xlMzIgZGFpX2xpbmtfZWxlbXM7CS8qIG51bWJlciBvZiBEQUkgbGluayBlbGVtZW50cyAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3ByaXZhdGUgcHJpdjsKKyt9IF9fcGFja2VkOworKworKy8qIFN0cmVhbSBDYXBhYmlsaXRpZXMgdjQgKi8KKytzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbV9jYXBzX3Y0IHsKKysJX19sZTMyIHNpemU7CQkvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwljaGFyIG5hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwlfX2xlNjQgZm9ybWF0czsJLyogc3VwcG9ydGVkIGZvcm1hdHMgU05EUlZfUENNX0ZNVEJJVF8qICovCisrCV9fbGUzMiByYXRlczsJCS8qIHN1cHBvcnRlZCByYXRlcyBTTkRSVl9QQ01fUkFURV8qICovCisrCV9fbGUzMiByYXRlX21pbjsJLyogbWluIHJhdGUgKi8KKysJX19sZTMyIHJhdGVfbWF4OwkvKiBtYXggcmF0ZSAqLworKwlfX2xlMzIgY2hhbm5lbHNfbWluOwkvKiBtaW4gY2hhbm5lbHMgKi8KKysJX19sZTMyIGNoYW5uZWxzX21heDsJLyogbWF4IGNoYW5uZWxzICovCisrCV9fbGUzMiBwZXJpb2RzX21pbjsJLyogbWluIG51bWJlciBvZiBwZXJpb2RzICovCisrCV9fbGUzMiBwZXJpb2RzX21heDsJLyogbWF4IG51bWJlciBvZiBwZXJpb2RzICovCisrCV9fbGUzMiBwZXJpb2Rfc2l6ZV9taW47CS8qIG1pbiBwZXJpb2Qgc2l6ZSBieXRlcyAqLworKwlfX2xlMzIgcGVyaW9kX3NpemVfbWF4OwkvKiBtYXggcGVyaW9kIHNpemUgYnl0ZXMgKi8KKysJX19sZTMyIGJ1ZmZlcl9zaXplX21pbjsJLyogbWluIGJ1ZmZlciBzaXplIGJ5dGVzICovCisrCV9fbGUzMiBidWZmZXJfc2l6ZV9tYXg7CS8qIG1heCBidWZmZXIgc2l6ZSBieXRlcyAqLworK30gX19wYWNrZWQ7CisrCisrLyogUENNIHY0ICovCisrc3RydWN0IHNuZF9zb2NfdHBsZ19wY21fdjQgeworKwlfX2xlMzIgc2l6ZTsJCS8qIGluIGJ5dGVzIG9mIHRoaXMgc3RydWN0dXJlICovCisrCWNoYXIgcGNtX25hbWVbU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU5dOworKwljaGFyIGRhaV9uYW1lW1NORFJWX0NUTF9FTEVNX0lEX05BTUVfTUFYTEVOXTsKKysJX19sZTMyIHBjbV9pZDsJCS8qIHVuaXF1ZSBJRCAtIHVzZWQgdG8gbWF0Y2ggd2l0aCBEQUkgbGluayAqLworKwlfX2xlMzIgZGFpX2lkOwkJLyogdW5pcXVlIElEIC0gdXNlZCB0byBtYXRjaCAqLworKwlfX2xlMzIgcGxheWJhY2s7CS8qIHN1cHBvcnRzIHBsYXliYWNrIG1vZGUgKi8KKysJX19sZTMyIGNhcHR1cmU7CQkvKiBzdXBwb3J0cyBjYXB0dXJlIG1vZGUgKi8KKysJX19sZTMyIGNvbXByZXNzOwkvKiAxID0gY29tcHJlc3NlZDsgMCA9IFBDTSAqLworKwlzdHJ1Y3Qgc25kX3NvY190cGxnX3N0cmVhbSBzdHJlYW1bU05EX1NPQ19UUExHX1NUUkVBTV9DT05GSUdfTUFYXTsgLyogZm9yIERBSSBsaW5rICovCisrCV9fbGUzMiBudW1fc3RyZWFtczsJLyogbnVtYmVyIG9mIHN0cmVhbXMgKi8KKysJc3RydWN0IHNuZF9zb2NfdHBsZ19zdHJlYW1fY2Fwc192NCBjYXBzWzJdOyAvKiBwbGF5YmFjayBhbmQgY2FwdHVyZSBmb3IgREFJICovCisrfSBfX3BhY2tlZDsKKysKKysvKiBQaHlzaWNhbCBsaW5rIGNvbmZpZyB2NCAqLworK3N0cnVjdCBzbmRfc29jX3RwbGdfbGlua19jb25maWdfdjQgeworKwlfX2xlMzIgc2l6ZTsgICAgICAgICAgICAvKiBpbiBieXRlcyBvZiB0aGlzIHN0cnVjdHVyZSAqLworKwlfX2xlMzIgaWQ7ICAgICAgICAgICAgICAvKiB1bmlxdWUgSUQgLSB1c2VkIHRvIG1hdGNoICovCisrCXN0cnVjdCBzbmRfc29jX3RwbGdfc3RyZWFtIHN0cmVhbVtTTkRfU09DX1RQTEdfU1RSRUFNX0NPTkZJR19NQVhdOyAvKiBzdXBwb3J0ZWQgY29uZmlncyBwbGF5YmFjayBhbmQgY2FwdHJ1cmUgKi8KKysJX19sZTMyIG51bV9zdHJlYW1zOyAgICAgLyogbnVtYmVyIG9mIHN0cmVhbXMgKi8KKyt9IF9fcGFja2VkOworKworKyNlbmRpZgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvdWFwaS9hc291bmQuaCBiL2luY2x1ZGUvc291bmQvdWFwaS9hc291bmQuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi5kZjExNTNjZQorLS0tIC9kZXYvbnVsbAorKysrIGIvaW5jbHVkZS9zb3VuZC91YXBpL2Fzb3VuZC5oCitAQCAtMCwwICsxLDEwMzggQEAKKysvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKysvKgorKyAqICBBZHZhbmNlZCBMaW51eCBTb3VuZCBBcmNoaXRlY3R1cmUgLSBBTFNBIC0gRHJpdmVyCisrICogIENvcHlyaWdodCAoYykgMTk5NC0yMDAzIGJ5IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+LAorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICBBYnJhbW8gQmFnbmFyYSA8YWJyYW1vQGFsc2EtcHJvamVjdC5vcmc+CisrICoKKysgKgorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyBVU0EKKysgKgorKyAqLworKworKyNpZm5kZWYgX1VBUElfX1NPVU5EX0FTT1VORF9ICisrI2RlZmluZSBfVUFQSV9fU09VTkRfQVNPVU5EX0gKKysKKysjaWYgZGVmaW5lZChfX0tFUk5FTF9fKSB8fCBkZWZpbmVkKF9fbGludXhfXykKKysjaW5jbHVkZSA8bGludXgvdHlwZXMuaD4KKysjZWxzZQorKyNpbmNsdWRlIDxzeXMvaW9jdGwuaD4KKysjZW5kaWYKKysKKysjaWZuZGVmIF9fS0VSTkVMX18KKysjaW5jbHVkZSA8c3RkbGliLmg+CisrI2luY2x1ZGUgPHRpbWUuaD4KKysjZW5kaWYKKysKKysvKgorKyAqICBwcm90b2NvbCB2ZXJzaW9uCisrICovCisrCisrI2RlZmluZSBTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKG1ham9yLCBtaW5vciwgc3VibWlub3IpICgoKG1ham9yKTw8MTYpfCgobWlub3IpPDw4KXwoc3VibWlub3IpKQorKyNkZWZpbmUgU05EUlZfUFJPVE9DT0xfTUFKT1IodmVyc2lvbikgKCgodmVyc2lvbik+PjE2KSYweGZmZmYpCisrI2RlZmluZSBTTkRSVl9QUk9UT0NPTF9NSU5PUih2ZXJzaW9uKSAoKCh2ZXJzaW9uKT4+OCkmMHhmZikKKysjZGVmaW5lIFNORFJWX1BST1RPQ09MX01JQ1JPKHZlcnNpb24pICgodmVyc2lvbikmMHhmZikKKysjZGVmaW5lIFNORFJWX1BST1RPQ09MX0lOQ09NUEFUSUJMRShrdmVyc2lvbiwgdXZlcnNpb24pIFwKKysJKFNORFJWX1BST1RPQ09MX01BSk9SKGt2ZXJzaW9uKSAhPSBTTkRSVl9QUk9UT0NPTF9NQUpPUih1dmVyc2lvbikgfHwgXAorKwkgKFNORFJWX1BST1RPQ09MX01BSk9SKGt2ZXJzaW9uKSA9PSBTTkRSVl9QUk9UT0NPTF9NQUpPUih1dmVyc2lvbikgJiYgXAorKwkgICBTTkRSVl9QUk9UT0NPTF9NSU5PUihrdmVyc2lvbikgIT0gU05EUlZfUFJPVE9DT0xfTUlOT1IodXZlcnNpb24pKSkKKysKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICAgICAgIERpZ2l0YWwgYXVkaW8gaW50ZXJmYWNlCQkJCQkgICAgKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrc3RydWN0IHNuZF9hZXNfaWVjOTU4IHsKKysJdW5zaWduZWQgY2hhciBzdGF0dXNbMjRdOwkvKiBBRVMvSUVDOTU4IGNoYW5uZWwgc3RhdHVzIGJpdHMgKi8KKysJdW5zaWduZWQgY2hhciBzdWJjb2RlWzE0N107CS8qIEFFUy9JRUM5NTggc3ViY29kZSBiaXRzICovCisrCXVuc2lnbmVkIGNoYXIgcGFkOwkJLyogbm90aGluZyAqLworKwl1bnNpZ25lZCBjaGFyIGRpZ19zdWJmcmFtZVs0XTsJLyogQUVTL0lFQzk1OCBzdWJmcmFtZSBiaXRzICovCisrfTsKKysKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICogICAgICAgIENFQS04NjEgQXVkaW8gSW5mb0ZyYW1lLiBVc2VkIGluIEhETUkgYW5kIERpc3BsYXlQb3J0CQkgICAgKgorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAqCisrICoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrc3RydWN0IHNuZF9jZWFfODYxX2F1ZF9pZiB7CisrCXVuc2lnbmVkIGNoYXIgZGIxX2N0X2NjOyAvKiBjb2RpbmcgdHlwZSBhbmQgY2hhbm5lbCBjb3VudCAqLworKwl1bnNpZ25lZCBjaGFyIGRiMl9zZl9zczsgLyogc2FtcGxlIGZyZXF1ZW5jeSBhbmQgc2l6ZSAqLworKwl1bnNpZ25lZCBjaGFyIGRiMzsgLyogbm90IHVzZWQsIGFsbCB6ZXJvcyAqLworKwl1bnNpZ25lZCBjaGFyIGRiNF9jYTsgLyogY2hhbm5lbCBhbGxvY2F0aW9uIGNvZGUgKi8KKysJdW5zaWduZWQgY2hhciBkYjVfZG1pbmhfbHN2OyAvKiBkb3dubWl4IGluaGliaXQgJiBsZXZlbC1zaGl0IHZhbHVlcyAqLworK307CisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgICAgU2VjdGlvbiBmb3IgZHJpdmVyIGhhcmR3YXJlIGRlcGVuZGVudCBpbnRlcmZhY2UgLSAvZGV2L3NuZC9odz8gICAgICAqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysjZGVmaW5lIFNORFJWX0hXREVQX1ZFUlNJT04JCVNORFJWX1BST1RPQ09MX1ZFUlNJT04oMSwgMCwgMSkKKysKKytlbnVtIHsKKysJU05EUlZfSFdERVBfSUZBQ0VfT1BMMiA9IDAsCisrCVNORFJWX0hXREVQX0lGQUNFX09QTDMsCisrCVNORFJWX0hXREVQX0lGQUNFX09QTDQsCisrCVNORFJWX0hXREVQX0lGQUNFX1NCMTZDU1AsCS8qIENyZWF0aXZlIFNpZ25hbCBQcm9jZXNzb3IgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfRU1VMTBLMSwJLyogRlg4MDEwIHByb2Nlc3NvciBpbiBFTVUxMEsxIGNoaXAgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfWVNTMjI1LAkvKiBZYW1haGEgRlggcHJvY2Vzc29yICovCisrCVNORFJWX0hXREVQX0lGQUNFX0lDUzIxMTUsCS8qIFdhdmV0YWJsZSBzeW50aCAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9TU0NBUEUsCS8qIEVuc29uaXEgU291bmRTY2FwZSBJU0EgY2FyZCAoTUM2OEVDMDAwKSAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9WWCwJCS8qIERpZ2lncmFtIFZYIGNhcmRzICovCisrCVNORFJWX0hXREVQX0lGQUNFX01JWEFSVCwJLyogRGlnaWdyYW0gbWlYYXJ0IGNhcmRzICovCisrCVNORFJWX0hXREVQX0lGQUNFX1VTWDJZLAkvKiBUYXNjYW0gVVMxMjIsIFVTMjI0ICYgVVM0MjggdXNiICovCisrCVNORFJWX0hXREVQX0lGQUNFX0VNVVhfV0FWRVRBQkxFLCAvKiBFbXVYIHdhdmV0YWJsZSAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9CTFVFVE9PVEgsCS8qIEJsdWV0b290aCBhdWRpbyAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9VU1gyWV9QQ00sCS8qIFRhc2NhbSBVUzEyMiwgVVMyMjQgJiBVUzQyOCByYXd1c2IgcGNtICovCisrCVNORFJWX0hXREVQX0lGQUNFX1BDWEhSLAkvKiBEaWdpZ3JhbSBQQ1hIUiAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9TQl9SQywJLyogU0IgRXh0aWd5L0F1ZGlneTJOWCByZW1vdGUgY29udHJvbCAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9IREEsCQkvKiBIRC1hdWRpbyAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9VU0JfU1RSRUFNLAkvKiBkaXJlY3QgYWNjZXNzIHRvIHVzYiBzdHJlYW0gKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfRldfRElDRSwJLyogVEMgRElDRSBGaXJlV2lyZSBkZXZpY2UgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfRldfRklSRVdPUktTLAkvKiBFY2hvIEF1ZGlvIEZpcmV3b3JrcyBiYXNlZCBkZXZpY2UgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfRldfQkVCT0IsCS8qIEJyaWRnZUNvIEJlQm9CIGJhc2VkIGRldmljZSAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9GV19PWEZXLAkvKiBPeGZvcmQgT1hGVzk3MC85NzEgYmFzZWQgZGV2aWNlICovCisrCVNORFJWX0hXREVQX0lGQUNFX0ZXX0RJR0kwMFgsCS8qIERpZ2lkZXNpZ24gRGlnaSAwMDIvMDAzIGZhbWlseSAqLworKwlTTkRSVl9IV0RFUF9JRkFDRV9GV19UQVNDQU0sCS8qIFRBU0NBTSBGaXJlV2lyZSBzZXJpZXMgKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfTElORTYsCS8qIExpbmU2IFVTQiBwcm9jZXNzb3JzICovCisrCVNORFJWX0hXREVQX0lGQUNFX0ZXX01PVFUsCS8qIE1PVFUgRmlyZVdpcmUgc2VyaWVzICovCisrCVNORFJWX0hXREVQX0lGQUNFX0ZXX0ZJUkVGQUNFLAkvKiBSTUUgRmlyZWZhY2Ugc2VyaWVzICovCisrCisrCS8qIERvbid0IGZvcmdldCB0byBjaGFuZ2UgdGhlIGZvbGxvd2luZzogKi8KKysJU05EUlZfSFdERVBfSUZBQ0VfTEFTVCA9IFNORFJWX0hXREVQX0lGQUNFX0ZXX0ZJUkVGQUNFCisrfTsKKysKKytzdHJ1Y3Qgc25kX2h3ZGVwX2luZm8geworKwl1bnNpZ25lZCBpbnQgZGV2aWNlOwkJLyogV1I6IGRldmljZSBudW1iZXIgKi8KKysJaW50IGNhcmQ7CQkJLyogUjogY2FyZCBudW1iZXIgKi8KKysJdW5zaWduZWQgY2hhciBpZFs2NF07CQkvKiBJRCAodXNlciBzZWxlY3RhYmxlKSAqLworKwl1bnNpZ25lZCBjaGFyIG5hbWVbODBdOwkJLyogaHdkZXAgbmFtZSAqLworKwlpbnQgaWZhY2U7CQkJLyogaHdkZXAgaW50ZXJmYWNlICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlICovCisrfTsKKysKKysvKiBnZW5lcmljIERTUCBsb2FkZXIgKi8KKytzdHJ1Y3Qgc25kX2h3ZGVwX2RzcF9zdGF0dXMgeworKwl1bnNpZ25lZCBpbnQgdmVyc2lvbjsJCS8qIFI6IGRyaXZlci1zcGVjaWZpYyB2ZXJzaW9uICovCisrCXVuc2lnbmVkIGNoYXIgaWRbMzJdOwkJLyogUjogZHJpdmVyLXNwZWNpZmljIElEIHN0cmluZyAqLworKwl1bnNpZ25lZCBpbnQgbnVtX2RzcHM7CQkvKiBSOiBudW1iZXIgb2YgRFNQIGltYWdlcyB0byB0cmFuc2ZlciAqLworKwl1bnNpZ25lZCBpbnQgZHNwX2xvYWRlZDsJLyogUjogYml0IGZsYWdzIGluZGljYXRpbmcgdGhlIGxvYWRlZCBEU1BzICovCisrCXVuc2lnbmVkIGludCBjaGlwX3JlYWR5OwkvKiBSOiAxID0gaW5pdGlhbGl6YXRpb24gZmluaXNoZWQgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFsxNl07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX2h3ZGVwX2RzcF9pbWFnZSB7CisrCXVuc2lnbmVkIGludCBpbmRleDsJCS8qIFc6IERTUCBpbmRleCAqLworKwl1bnNpZ25lZCBjaGFyIG5hbWVbNjRdOwkJLyogVzogSUQgKGUuZy4gZmlsZSBuYW1lKSAqLworKwl1bnNpZ25lZCBjaGFyIF9fdXNlciAqaW1hZ2U7CS8qIFc6IGJpbmFyeSBpbWFnZSAqLworKwlzaXplX3QgbGVuZ3RoOwkJCS8qIFc6IHNpemUgb2YgaW1hZ2UgaW4gYnl0ZXMgKi8KKysJdW5zaWduZWQgbG9uZyBkcml2ZXJfZGF0YTsJLyogVzogZHJpdmVyLXNwZWNpZmljIGRhdGEgKi8KKyt9OworKworKyNkZWZpbmUgU05EUlZfSFdERVBfSU9DVExfUFZFUlNJT04JX0lPUiAoJ0gnLCAweDAwLCBpbnQpCisrI2RlZmluZSBTTkRSVl9IV0RFUF9JT0NUTF9JTkZPCQlfSU9SICgnSCcsIDB4MDEsIHN0cnVjdCBzbmRfaHdkZXBfaW5mbykKKysjZGVmaW5lIFNORFJWX0hXREVQX0lPQ1RMX0RTUF9TVEFUVVMJX0lPUignSCcsIDB4MDIsIHN0cnVjdCBzbmRfaHdkZXBfZHNwX3N0YXR1cykKKysjZGVmaW5lIFNORFJWX0hXREVQX0lPQ1RMX0RTUF9MT0FECV9JT1coJ0gnLCAweDAzLCBzdHJ1Y3Qgc25kX2h3ZGVwX2RzcF9pbWFnZSkKKysKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgICAgICAgICAgICBEaWdpdGFsIEF1ZGlvIChQQ00pIGludGVyZmFjZSAtIC9kZXYvc25kL3BjbT8/ICAgICAgICAgICAgICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrI2RlZmluZSBTTkRSVl9QQ01fVkVSU0lPTgkJU05EUlZfUFJPVE9DT0xfVkVSU0lPTigyLCAwLCAxNCkKKysKKyt0eXBlZGVmIHVuc2lnbmVkIGxvbmcgc25kX3BjbV91ZnJhbWVzX3Q7CisrdHlwZWRlZiBzaWduZWQgbG9uZyBzbmRfcGNtX3NmcmFtZXNfdDsKKysKKytlbnVtIHsKKysJU05EUlZfUENNX0NMQVNTX0dFTkVSSUMgPSAwLAkvKiBzdGFuZGFyZCBtb25vIG9yIHN0ZXJlbyBkZXZpY2UgKi8KKysJU05EUlZfUENNX0NMQVNTX01VTFRJLAkJLyogbXVsdGljaGFubmVsIGRldmljZSAqLworKwlTTkRSVl9QQ01fQ0xBU1NfTU9ERU0sCQkvKiBzb2Z0d2FyZSBtb2RlbSBjbGFzcyAqLworKwlTTkRSVl9QQ01fQ0xBU1NfRElHSVRJWkVSLAkvKiBkaWdpdGl6ZXIgY2xhc3MgKi8KKysJLyogRG9uJ3QgZm9yZ2V0IHRvIGNoYW5nZSB0aGUgZm9sbG93aW5nOiAqLworKwlTTkRSVl9QQ01fQ0xBU1NfTEFTVCA9IFNORFJWX1BDTV9DTEFTU19ESUdJVElaRVIsCisrfTsKKysKKytlbnVtIHsKKysJU05EUlZfUENNX1NVQkNMQVNTX0dFTkVSSUNfTUlYID0gMCwgLyogbW9ubyBvciBzdGVyZW8gc3ViZGV2aWNlcyBhcmUgbWl4ZWQgdG9nZXRoZXIgKi8KKysJU05EUlZfUENNX1NVQkNMQVNTX01VTFRJX01JWCwJLyogbXVsdGljaGFubmVsIHN1YmRldmljZXMgYXJlIG1peGVkIHRvZ2V0aGVyICovCisrCS8qIERvbid0IGZvcmdldCB0byBjaGFuZ2UgdGhlIGZvbGxvd2luZzogKi8KKysJU05EUlZfUENNX1NVQkNMQVNTX0xBU1QgPSBTTkRSVl9QQ01fU1VCQ0xBU1NfTVVMVElfTUlYLAorK307CisrCisrZW51bSB7CisrCVNORFJWX1BDTV9TVFJFQU1fUExBWUJBQ0sgPSAwLAorKwlTTkRSVl9QQ01fU1RSRUFNX0NBUFRVUkUsCisrCVNORFJWX1BDTV9TVFJFQU1fTEFTVCA9IFNORFJWX1BDTV9TVFJFQU1fQ0FQVFVSRSwKKyt9OworKworK3R5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfcGNtX2FjY2Vzc190OworKyNkZWZpbmUJU05EUlZfUENNX0FDQ0VTU19NTUFQX0lOVEVSTEVBVkVECSgoX19mb3JjZSBzbmRfcGNtX2FjY2Vzc190KSAwKSAvKiBpbnRlcmxlYXZlZCBtbWFwICovCisrI2RlZmluZQlTTkRSVl9QQ01fQUNDRVNTX01NQVBfTk9OSU5URVJMRUFWRUQJKChfX2ZvcmNlIHNuZF9wY21fYWNjZXNzX3QpIDEpIC8qIG5vbmludGVybGVhdmVkIG1tYXAgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9BQ0NFU1NfTU1BUF9DT01QTEVYCQkoKF9fZm9yY2Ugc25kX3BjbV9hY2Nlc3NfdCkgMikgLyogY29tcGxleCBtbWFwICovCisrI2RlZmluZQlTTkRSVl9QQ01fQUNDRVNTX1JXX0lOVEVSTEVBVkVECQkoKF9fZm9yY2Ugc25kX3BjbV9hY2Nlc3NfdCkgMykgLyogcmVhZGkvd3JpdGVpICovCisrI2RlZmluZQlTTkRSVl9QQ01fQUNDRVNTX1JXX05PTklOVEVSTEVBVkVECSgoX19mb3JjZSBzbmRfcGNtX2FjY2Vzc190KSA0KSAvKiByZWFkbi93cml0ZW4gKi8KKysjZGVmaW5lCVNORFJWX1BDTV9BQ0NFU1NfTEFTVAkJU05EUlZfUENNX0FDQ0VTU19SV19OT05JTlRFUkxFQVZFRAorKworK3R5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfcGNtX2Zvcm1hdF90OworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TOAkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMCkKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTgJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDEpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MxNl9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMikKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzE2X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzKQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMTZfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQpCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UxNl9CRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNSkKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzI0X0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA2KSAvKiBsb3cgdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzI0X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA3KSAvKiBsb3cgdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTI0X0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA4KSAvKiBsb3cgdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTI0X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA5KSAvKiBsb3cgdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzMyX0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxMCkKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzMyX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxMSkKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTMyX0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxMikKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTMyX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxMykKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVRfTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDE0KSAvKiA0LWJ5dGUgZmxvYXQsIElFRUUtNzU0IDMyLWJpdCwgcmFuZ2UgLTEuMCB0byAxLjAgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVRfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDE1KSAvKiA0LWJ5dGUgZmxvYXQsIElFRUUtNzU0IDMyLWJpdCwgcmFuZ2UgLTEuMCB0byAxLjAgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVQ2NF9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTYpIC8qIDgtYnl0ZSBmbG9hdCwgSUVFRS03NTQgNjQtYml0LCByYW5nZSAtMS4wIHRvIDEuMCAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9GTE9BVDY0X0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxNykgLyogOC1ieXRlIGZsb2F0LCBJRUVFLTc1NCA2NC1iaXQsIHJhbmdlIC0xLjAgdG8gMS4wICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRV9MRSAoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMTgpIC8qIElFQy05NTggc3ViZnJhbWUsIExpdHRsZSBFbmRpYW4gKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0JFICgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAxOSkgLyogSUVDLTk1OCBzdWJmcmFtZSwgQmlnIEVuZGlhbiAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9NVV9MQVcJCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyMCkKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfQV9MQVcJCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyMSkKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfSU1BX0FEUENNCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyMikKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfTVBFRwkJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDIzKQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9HU00JCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyNCkKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzIwX0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyNSkgLyogaW4gZm91ciBieXRlcywgTFNCIGp1c3RpZmllZCAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjBfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDI2KSAvKiBpbiBmb3VyIGJ5dGVzLCBMU0IganVzdGlmaWVkICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyMF9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMjcpIC8qIGluIGZvdXIgYnl0ZXMsIExTQiBqdXN0aWZpZWQgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTIwX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAyOCkgLyogaW4gZm91ciBieXRlcywgTFNCIGp1c3RpZmllZCAqLworKy8qIGdhcCBpbiB0aGUgbnVtYmVyaW5nIGZvciBhIGZ1dHVyZSBzdGFuZGFyZCBsaW5lYXIgZm9ybWF0ICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1NQRUNJQUwJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDMxKQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjRfM0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzMikJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzI0XzNCRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzMpCS8qIGluIHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyNF8zTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDM0KQkvKiBpbiB0aHJlZSBieXRlcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjRfM0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzNSkJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzIwXzNMRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzYpCS8qIGluIHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyMF8zQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDM3KQkvKiBpbiB0aHJlZSBieXRlcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMjBfM0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSAzOCkJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTIwXzNCRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgMzkpCS8qIGluIHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MxOF8zTEUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQwKQkvKiBpbiB0aHJlZSBieXRlcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMThfM0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0MSkJLyogaW4gdGhyZWUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTE4XzNMRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDIpCS8qIGluIHRocmVlIGJ5dGVzICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UxOF8zQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDQzKQkvKiBpbiB0aHJlZSBieXRlcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9HNzIzXzI0CSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0NCkgLyogOCBzYW1wbGVzIGluIDMgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRzcyM18yNF8xQgkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDUpIC8qIDEgc2FtcGxlIGluIDEgYnl0ZSAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9HNzIzXzQwCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0NikgLyogOCBTYW1wbGVzIGluIDUgYnl0ZXMgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRzcyM180MF8xQgkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNDcpIC8qIDEgc2FtcGxlIGluIDEgYnl0ZSAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTgJCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0OCkgLyogRFNELCAxLWJ5dGUgc2FtcGxlcyBEU0QgKHg4KSAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTE2X0xFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA0OSkgLyogRFNELCAyLWJ5dGUgc2FtcGxlcyBEU0QgKHgxNiksIGxpdHRsZSBlbmRpYW4gKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRFNEX1UzMl9MRQkoKF9fZm9yY2Ugc25kX3BjbV9mb3JtYXRfdCkgNTApIC8qIERTRCwgNC1ieXRlIHNhbXBsZXMgRFNEICh4MzIpLCBsaXR0bGUgZW5kaWFuICovCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0RTRF9VMTZfQkUJKChfX2ZvcmNlIHNuZF9wY21fZm9ybWF0X3QpIDUxKSAvKiBEU0QsIDItYnl0ZSBzYW1wbGVzIERTRCAoeDE2KSwgYmlnIGVuZGlhbiAqLworKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTMyX0JFCSgoX19mb3JjZSBzbmRfcGNtX2Zvcm1hdF90KSA1MikgLyogRFNELCA0LWJ5dGUgc2FtcGxlcyBEU0QgKHgzMiksIGJpZyBlbmRpYW4gKi8KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfTEFTVAkJU05EUlZfUENNX0ZPUk1BVF9EU0RfVTMyX0JFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZJUlNUCQlTTkRSVl9QQ01fRk9STUFUX1M4CisrCisrI2lmZGVmIFNORFJWX0xJVFRMRV9FTkRJQU4KKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzE2CQlTTkRSVl9QQ01fRk9STUFUX1MxNl9MRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMTYJCVNORFJWX1BDTV9GT1JNQVRfVTE2X0xFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyNAkJU05EUlZfUENNX0ZPUk1BVF9TMjRfTEUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTI0CQlTTkRSVl9QQ01fRk9STUFUX1UyNF9MRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMzIJCVNORFJWX1BDTV9GT1JNQVRfUzMyX0xFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UzMgkJU05EUlZfUENNX0ZPUk1BVF9VMzJfTEUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVQJCVNORFJWX1BDTV9GT1JNQVRfRkxPQVRfTEUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfRkxPQVQ2NAlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUNjRfTEUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FIFNORFJWX1BDTV9GT1JNQVRfSUVDOTU4X1NVQkZSQU1FX0xFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MyMAkJU05EUlZfUENNX0ZPUk1BVF9TMjBfTEUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTIwCQlTTkRSVl9QQ01fRk9STUFUX1UyMF9MRQorKyNlbmRpZgorKyNpZmRlZiBTTkRSVl9CSUdfRU5ESUFOCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1MxNgkJU05EUlZfUENNX0ZPUk1BVF9TMTZfQkUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfVTE2CQlTTkRSVl9QQ01fRk9STUFUX1UxNl9CRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjQJCVNORFJWX1BDTV9GT1JNQVRfUzI0X0JFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyNAkJU05EUlZfUENNX0ZPUk1BVF9VMjRfQkUKKysjZGVmaW5lCVNORFJWX1BDTV9GT1JNQVRfUzMyCQlTTkRSVl9QQ01fRk9STUFUX1MzMl9CRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9VMzIJCVNORFJWX1BDTV9GT1JNQVRfVTMyX0JFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUCQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUX0JFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0ZMT0FUNjQJU05EUlZfUENNX0ZPUk1BVF9GTE9BVDY0X0JFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRSBTTkRSVl9QQ01fRk9STUFUX0lFQzk1OF9TVUJGUkFNRV9CRQorKyNkZWZpbmUJU05EUlZfUENNX0ZPUk1BVF9TMjAJCVNORFJWX1BDTV9GT1JNQVRfUzIwX0JFCisrI2RlZmluZQlTTkRSVl9QQ01fRk9STUFUX1UyMAkJU05EUlZfUENNX0ZPUk1BVF9VMjBfQkUKKysjZW5kaWYKKysKKyt0eXBlZGVmIGludCBfX2JpdHdpc2Ugc25kX3BjbV9zdWJmb3JtYXRfdDsKKysjZGVmaW5lCVNORFJWX1BDTV9TVUJGT1JNQVRfU1RECQkoKF9fZm9yY2Ugc25kX3BjbV9zdWJmb3JtYXRfdCkgMCkKKysjZGVmaW5lCVNORFJWX1BDTV9TVUJGT1JNQVRfTEFTVAlTTkRSVl9QQ01fU1VCRk9STUFUX1NURAorKworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fTU1BUAkJMHgwMDAwMDAwMQkvKiBoYXJkd2FyZSBzdXBwb3J0cyBtbWFwICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19NTUFQX1ZBTElECTB4MDAwMDAwMDIJLyogcGVyaW9kIGRhdGEgYXJlIHZhbGlkIGR1cmluZyB0cmFuc2ZlciAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fRE9VQkxFCQkweDAwMDAwMDA0CS8qIERvdWJsZSBidWZmZXJpbmcgbmVlZGVkIGZvciBQQ00gc3RhcnQvc3RvcCAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fQkFUQ0gJCTB4MDAwMDAwMTAJLyogZG91YmxlIGJ1ZmZlcmluZyAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fU1lOQ19BUFBMUFRSCTB4MDAwMDAwMjAJLyogbmVlZCB0aGUgZXhwbGljaXQgc3luYyBvZiBhcHBsX3B0ciB1cGRhdGUgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0lOVEVSTEVBVkVECTB4MDAwMDAxMDAJLyogY2hhbm5lbHMgYXJlIGludGVybGVhdmVkICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19OT05JTlRFUkxFQVZFRAkweDAwMDAwMjAwCS8qIGNoYW5uZWxzIGFyZSBub3QgaW50ZXJsZWF2ZWQgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0NPTVBMRVgJCTB4MDAwMDA0MDAJLyogY29tcGxleCBmcmFtZSBvcmdhbml6YXRpb24gKG1tYXAgb25seSkgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0JMT0NLX1RSQU5TRkVSCTB4MDAwMTAwMDAJLyogaGFyZHdhcmUgdHJhbnNmZXIgYmxvY2sgb2Ygc2FtcGxlcyAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fT1ZFUlJBTkdFCTB4MDAwMjAwMDAJLyogaGFyZHdhcmUgc3VwcG9ydHMgQURDIChjYXB0dXJlKSBvdmVycmFuZ2UgZGV0ZWN0aW9uICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19SRVNVTUUJCTB4MDAwNDAwMDAJLyogaGFyZHdhcmUgc3VwcG9ydHMgc3RyZWFtIHJlc3VtZSBhZnRlciBzdXNwZW5kICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19QQVVTRQkJMHgwMDA4MDAwMAkvKiBwYXVzZSBpb2N0bCBpcyBzdXBwb3J0ZWQgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0hBTEZfRFVQTEVYCTB4MDAxMDAwMDAJLyogb25seSBoYWxmIGR1cGxleCAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fSk9JTlRfRFVQTEVYCTB4MDAyMDAwMDAJLyogcGxheWJhY2sgYW5kIGNhcHR1cmUgc3RyZWFtIGFyZSBzb21ld2hhdCBjb3JyZWxhdGVkICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19TWU5DX1NUQVJUCTB4MDA0MDAwMDAJLyogcGNtIHN1cHBvcnQgc29tZSBraW5kIG9mIHN5bmMgZ28gKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX05PX1BFUklPRF9XQUtFVVAJMHgwMDgwMDAwMAkvKiBwZXJpb2Qgd2FrZXVwIGNhbiBiZSBkaXNhYmxlZCAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fSEFTX1dBTExfQ0xPQ0sgICAweDAxMDAwMDAwICAgICAgLyogKERlcHJlY2F0ZWQpaGFzIGF1ZGlvIHdhbGwgY2xvY2sgZm9yIGF1ZGlvL3N5c3RlbSB0aW1lIHN5bmMgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0hBU19MSU5LX0FUSU1FICAgICAgICAgICAgICAweDAxMDAwMDAwICAvKiByZXBvcnQgaGFyZHdhcmUgbGluayBhdWRpbyB0aW1lLCByZXNldCBvbiBzdGFydHVwICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19IQVNfTElOS19BQlNPTFVURV9BVElNRSAgICAgMHgwMjAwMDAwMCAgLyogcmVwb3J0IGFic29sdXRlIGhhcmR3YXJlIGxpbmsgYXVkaW8gdGltZSwgbm90IHJlc2V0IG9uIHN0YXJ0dXAgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0hBU19MSU5LX0VTVElNQVRFRF9BVElNRSAgICAweDA0MDAwMDAwICAvKiByZXBvcnQgZXN0aW1hdGVkIGxpbmsgYXVkaW8gdGltZSAqLworKyNkZWZpbmUgU05EUlZfUENNX0lORk9fSEFTX0xJTktfU1lOQ0hST05JWkVEX0FUSU1FIDB4MDgwMDAwMDAgIC8qIHJlcG9ydCBzeW5jaHJvbml6ZWQgYXVkaW8vc3lzdGVtIHRpbWUgKi8KKysKKysjZGVmaW5lIFNORFJWX1BDTV9JTkZPX0RSQUlOX1RSSUdHRVIJMHg0MDAwMDAwMAkJLyogaW50ZXJuYWwga2VybmVsIGZsYWcgLSB0cmlnZ2VyIGluIGRyYWluICovCisrI2RlZmluZSBTTkRSVl9QQ01fSU5GT19GSUZPX0lOX0ZSQU1FUwkweDgwMDAwMDAwCS8qIGludGVybmFsIGtlcm5lbCBmbGFnIC0gRklGTyBzaXplIGlzIGluIGZyYW1lcyAqLworKworKworKworK3R5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfcGNtX3N0YXRlX3Q7CisrI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfT1BFTgkJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgMCkgLyogc3RyZWFtIGlzIG9wZW4gKi8KKysjZGVmaW5lCVNORFJWX1BDTV9TVEFURV9TRVRVUAkJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgMSkgLyogc3RyZWFtIGhhcyBhIHNldHVwICovCisrI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfUFJFUEFSRUQJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgMikgLyogc3RyZWFtIGlzIHJlYWR5IHRvIHN0YXJ0ICovCisrI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfUlVOTklORwkJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgMykgLyogc3RyZWFtIGlzIHJ1bm5pbmcgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9TVEFURV9YUlVOCQkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSA0KSAvKiBzdHJlYW0gcmVhY2hlZCBhbiB4cnVuICovCisrI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfRFJBSU5JTkcJKChfX2ZvcmNlIHNuZF9wY21fc3RhdGVfdCkgNSkgLyogc3RyZWFtIGlzIGRyYWluaW5nICovCisrI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfUEFVU0VECQkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSA2KSAvKiBzdHJlYW0gaXMgcGF1c2VkICovCisrI2RlZmluZQlTTkRSVl9QQ01fU1RBVEVfU1VTUEVOREVECSgoX19mb3JjZSBzbmRfcGNtX3N0YXRlX3QpIDcpIC8qIGhhcmR3YXJlIGlzIHN1c3BlbmRlZCAqLworKyNkZWZpbmUJU05EUlZfUENNX1NUQVRFX0RJU0NPTk5FQ1RFRAkoKF9fZm9yY2Ugc25kX3BjbV9zdGF0ZV90KSA4KSAvKiBoYXJkd2FyZSBpcyBkaXNjb25uZWN0ZWQgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9TVEFURV9MQVNUCQlTTkRSVl9QQ01fU1RBVEVfRElTQ09OTkVDVEVECisrCisrZW51bSB7CisrCVNORFJWX1BDTV9NTUFQX09GRlNFVF9EQVRBID0gMHgwMDAwMDAwMCwKKysJU05EUlZfUENNX01NQVBfT0ZGU0VUX1NUQVRVUyA9IDB4ODAwMDAwMDAsCisrCVNORFJWX1BDTV9NTUFQX09GRlNFVF9DT05UUk9MID0gMHg4MTAwMDAwMCwKKyt9OworKworK3VuaW9uIHNuZF9wY21fc3luY19pZCB7CisrCXVuc2lnbmVkIGNoYXIgaWRbMTZdOworKwl1bnNpZ25lZCBzaG9ydCBpZDE2WzhdOworKwl1bnNpZ25lZCBpbnQgaWQzMls0XTsKKyt9OworKworK3N0cnVjdCBzbmRfcGNtX2luZm8geworKwl1bnNpZ25lZCBpbnQgZGV2aWNlOwkJLyogUk8vV1IgKGNvbnRyb2wpOiBkZXZpY2UgbnVtYmVyICovCisrCXVuc2lnbmVkIGludCBzdWJkZXZpY2U7CQkvKiBSTy9XUiAoY29udHJvbCk6IHN1YmRldmljZSBudW1iZXIgKi8KKysJaW50IHN0cmVhbTsJCQkvKiBSTy9XUiAoY29udHJvbCk6IHN0cmVhbSBkaXJlY3Rpb24gKi8KKysJaW50IGNhcmQ7CQkJLyogUjogY2FyZCBudW1iZXIgKi8KKysJdW5zaWduZWQgY2hhciBpZFs2NF07CQkvKiBJRCAodXNlciBzZWxlY3RhYmxlKSAqLworKwl1bnNpZ25lZCBjaGFyIG5hbWVbODBdOwkJLyogbmFtZSBvZiB0aGlzIGRldmljZSAqLworKwl1bnNpZ25lZCBjaGFyIHN1Ym5hbWVbMzJdOwkvKiBzdWJkZXZpY2UgbmFtZSAqLworKwlpbnQgZGV2X2NsYXNzOwkJCS8qIFNORFJWX1BDTV9DTEFTU18qICovCisrCWludCBkZXZfc3ViY2xhc3M7CQkvKiBTTkRSVl9QQ01fU1VCQ0xBU1NfKiAqLworKwl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlc19jb3VudDsKKysJdW5zaWduZWQgaW50IHN1YmRldmljZXNfYXZhaWw7CisrCXVuaW9uIHNuZF9wY21fc3luY19pZCBzeW5jOwkvKiBoYXJkd2FyZSBzeW5jaHJvbml6YXRpb24gSUQgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUuLi4gKi8KKyt9OworKworK3R5cGVkZWYgaW50IHNuZF9wY21faHdfcGFyYW1fdDsKKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9BQ0NFU1MJMAkvKiBBY2Nlc3MgdHlwZSAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0ZPUk1BVAkxCS8qIEZvcm1hdCAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1NVQkZPUk1BVAkyCS8qIFN1YmZvcm1hdCAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0ZJUlNUX01BU0sJU05EUlZfUENNX0hXX1BBUkFNX0FDQ0VTUworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0xBU1RfTUFTSwlTTkRSVl9QQ01fSFdfUEFSQU1fU1VCRk9STUFUCisrCisrI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fU0FNUExFX0JJVFMJOAkvKiBCaXRzIHBlciBzYW1wbGUgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9GUkFNRV9CSVRTCTkJLyogQml0cyBwZXIgZnJhbWUgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9DSEFOTkVMUwkxMAkvKiBDaGFubmVscyAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1JBVEUJCTExCS8qIEFwcHJveCByYXRlICovCisrI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fUEVSSU9EX1RJTUUJMTIJLyogQXBwcm94IGRpc3RhbmNlIGJldHdlZW4KKysJCQkJCQkgKiBpbnRlcnJ1cHRzIGluIHVzCisrCQkJCQkJICovCisrI2RlZmluZQlTTkRSVl9QQ01fSFdfUEFSQU1fUEVSSU9EX1NJWkUJMTMJLyogQXBwcm94IGZyYW1lcyBiZXR3ZWVuCisrCQkJCQkJICogaW50ZXJydXB0cworKwkJCQkJCSAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1BFUklPRF9CWVRFUwkxNAkvKiBBcHByb3ggYnl0ZXMgYmV0d2VlbgorKwkJCQkJCSAqIGludGVycnVwdHMKKysJCQkJCQkgKi8KKysjZGVmaW5lCVNORFJWX1BDTV9IV19QQVJBTV9QRVJJT0RTCTE1CS8qIEFwcHJveCBpbnRlcnJ1cHRzIHBlcgorKwkJCQkJCSAqIGJ1ZmZlcgorKwkJCQkJCSAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0JVRkZFUl9USU1FCTE2CS8qIEFwcHJveCBkdXJhdGlvbiBvZiBidWZmZXIKKysJCQkJCQkgKiBpbiB1cworKwkJCQkJCSAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0JVRkZFUl9TSVpFCTE3CS8qIFNpemUgb2YgYnVmZmVyIGluIGZyYW1lcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0JVRkZFUl9CWVRFUwkxOAkvKiBTaXplIG9mIGJ1ZmZlciBpbiBieXRlcyAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX1RJQ0tfVElNRQkxOQkvKiBBcHByb3ggdGljayBkdXJhdGlvbiBpbiB1cyAqLworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0ZJUlNUX0lOVEVSVkFMCVNORFJWX1BDTV9IV19QQVJBTV9TQU1QTEVfQklUUworKyNkZWZpbmUJU05EUlZfUENNX0hXX1BBUkFNX0xBU1RfSU5URVJWQUwJU05EUlZfUENNX0hXX1BBUkFNX1RJQ0tfVElNRQorKworKyNkZWZpbmUgU05EUlZfUENNX0hXX1BBUkFNU19OT1JFU0FNUExFCSgxPDwwKQkvKiBhdm9pZCByYXRlIHJlc2FtcGxpbmcgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9IV19QQVJBTVNfRVhQT1JUX0JVRkZFUgkoMTw8MSkJLyogZXhwb3J0IGJ1ZmZlciAqLworKyNkZWZpbmUgU05EUlZfUENNX0hXX1BBUkFNU19OT19QRVJJT0RfV0FLRVVQCSgxPDwyKQkvKiBkaXNhYmxlIHBlcmlvZCB3YWtldXBzICovCisrCisrc3RydWN0IHNuZF9pbnRlcnZhbCB7CisrCXVuc2lnbmVkIGludCBtaW4sIG1heDsKKysJdW5zaWduZWQgaW50IG9wZW5taW46MSwKKysJCSAgICAgb3Blbm1heDoxLAorKwkJICAgICBpbnRlZ2VyOjEsCisrCQkgICAgIGVtcHR5OjE7CisrfTsKKysKKysjZGVmaW5lIFNORFJWX01BU0tfTUFYCTI1NgorKworK3N0cnVjdCBzbmRfbWFzayB7CisrCV9fdTMyIGJpdHNbKFNORFJWX01BU0tfTUFYKzMxKS8zMl07CisrfTsKKysKKytzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMgeworKwl1bnNpZ25lZCBpbnQgZmxhZ3M7CisrCXN0cnVjdCBzbmRfbWFzayBtYXNrc1tTTkRSVl9QQ01fSFdfUEFSQU1fTEFTVF9NQVNLIC0KKysJCQkgICAgICAgU05EUlZfUENNX0hXX1BBUkFNX0ZJUlNUX01BU0sgKyAxXTsKKysJc3RydWN0IHNuZF9tYXNrIG1yZXNbNV07CS8qIHJlc2VydmVkIG1hc2tzICovCisrCXN0cnVjdCBzbmRfaW50ZXJ2YWwgaW50ZXJ2YWxzW1NORFJWX1BDTV9IV19QQVJBTV9MQVNUX0lOVEVSVkFMIC0KKysJCQkJICAgICAgICBTTkRSVl9QQ01fSFdfUEFSQU1fRklSU1RfSU5URVJWQUwgKyAxXTsKKysJc3RydWN0IHNuZF9pbnRlcnZhbCBpcmVzWzldOwkvKiByZXNlcnZlZCBpbnRlcnZhbHMgKi8KKysJdW5zaWduZWQgaW50IHJtYXNrOwkJLyogVzogcmVxdWVzdGVkIG1hc2tzICovCisrCXVuc2lnbmVkIGludCBjbWFzazsJCS8qIFI6IGNoYW5nZWQgbWFza3MgKi8KKysJdW5zaWduZWQgaW50IGluZm87CQkvKiBSOiBJbmZvIGZsYWdzIGZvciByZXR1cm5lZCBzZXR1cCAqLworKwl1bnNpZ25lZCBpbnQgbXNiaXRzOwkJLyogUjogdXNlZCBtb3N0IHNpZ25pZmljYW50IGJpdHMgKi8KKysJdW5zaWduZWQgaW50IHJhdGVfbnVtOwkJLyogUjogcmF0ZSBudW1lcmF0b3IgKi8KKysJdW5zaWduZWQgaW50IHJhdGVfZGVuOwkJLyogUjogcmF0ZSBkZW5vbWluYXRvciAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBmaWZvX3NpemU7CS8qIFI6IGNoaXAgRklGTyBzaXplIGluIGZyYW1lcyAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSAqLworK307CisrCisrZW51bSB7CisrCVNORFJWX1BDTV9UU1RBTVBfTk9ORSA9IDAsCisrCVNORFJWX1BDTV9UU1RBTVBfRU5BQkxFLAorKwlTTkRSVl9QQ01fVFNUQU1QX0xBU1QgPSBTTkRSVl9QQ01fVFNUQU1QX0VOQUJMRSwKKyt9OworKworK3N0cnVjdCBzbmRfcGNtX3N3X3BhcmFtcyB7CisrCWludCB0c3RhbXBfbW9kZTsJCQkvKiB0aW1lc3RhbXAgbW9kZSAqLworKwl1bnNpZ25lZCBpbnQgcGVyaW9kX3N0ZXA7CisrCXVuc2lnbmVkIGludCBzbGVlcF9taW47CQkJLyogbWluIHRpY2tzIHRvIHNsZWVwICovCisrCXNuZF9wY21fdWZyYW1lc190IGF2YWlsX21pbjsJCS8qIG1pbiBhdmFpbCBmcmFtZXMgZm9yIHdha2V1cCAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCB4ZmVyX2FsaWduOwkJLyogb2Jzb2xldGU6IHhmZXIgc2l6ZSBuZWVkIHRvIGJlIGEgbXVsdGlwbGUgKi8KKysJc25kX3BjbV91ZnJhbWVzX3Qgc3RhcnRfdGhyZXNob2xkOwkvKiBtaW4gaHdfYXZhaWwgZnJhbWVzIGZvciBhdXRvbWF0aWMgc3RhcnQgKi8KKysJc25kX3BjbV91ZnJhbWVzX3Qgc3RvcF90aHJlc2hvbGQ7CS8qIG1pbiBhdmFpbCBmcmFtZXMgZm9yIGF1dG9tYXRpYyBzdG9wICovCisrCXNuZF9wY21fdWZyYW1lc190IHNpbGVuY2VfdGhyZXNob2xkOwkvKiBtaW4gZGlzdGFuY2UgZnJvbSBub2lzZSBmb3Igc2lsZW5jZSBmaWxsaW5nICovCisrCXNuZF9wY21fdWZyYW1lc190IHNpbGVuY2Vfc2l6ZTsJCS8qIHNpbGVuY2UgYmxvY2sgc2l6ZSAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBib3VuZGFyeTsJCS8qIHBvaW50ZXJzIHdyYXAgcG9pbnQgKi8KKysJdW5zaWduZWQgaW50IHByb3RvOwkJCS8qIHByb3RvY29sIHZlcnNpb24gKi8KKysJdW5zaWduZWQgaW50IHRzdGFtcF90eXBlOwkJLyogdGltZXN0YW1wIHR5cGUgKHJlcS4gcHJvdG8gPj0gMi4wLjEyKSAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzU2XTsJCS8qIHJlc2VydmVkIGZvciBmdXR1cmUgKi8KKyt9OworKworK3N0cnVjdCBzbmRfcGNtX2NoYW5uZWxfaW5mbyB7CisrCXVuc2lnbmVkIGludCBjaGFubmVsOworKwlfX2tlcm5lbF9vZmZfdCBvZmZzZXQ7CQkvKiBtbWFwIG9mZnNldCAqLworKwl1bnNpZ25lZCBpbnQgZmlyc3Q7CQkvKiBvZmZzZXQgdG8gZmlyc3Qgc2FtcGxlIGluIGJpdHMgKi8KKysJdW5zaWduZWQgaW50IHN0ZXA7CQkvKiBzYW1wbGVzIGRpc3RhbmNlIGluIGJpdHMgKi8KKyt9OworKworK2VudW0geworKwkvKgorKwkgKiAgZmlyc3QgZGVmaW5pdGlvbiBmb3IgYmFja3dhcmRzIGNvbXBhdGliaWxpdHkgb25seSwKKysJICogIG1hcHMgdG8gd2FsbGNsb2NrL2xpbmsgdGltZSBmb3IgSERBdWRpbyBwbGF5YmFjayBhbmQgREVGQVVMVC9ETUEgdGltZSBmb3IgZXZlcnl0aGluZyBlbHNlCisrCSAqLworKwlTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfQ09NUEFUID0gMCwKKysKKysJLyogdGltZXN0YW1wIGRlZmluaXRpb25zICovCisrCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9ERUZBVUxUID0gMSwgICAgICAgICAgIC8qIERNQSB0aW1lLCByZXBvcnRlZCBhcyBwZXIgaHdfcHRyICovCisrCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MSU5LID0gMiwJICAgICAgICAgICAvKiBsaW5rIHRpbWUgcmVwb3J0ZWQgYnkgc2FtcGxlIG9yIHdhbGxjbG9jayBjb3VudGVyLCByZXNldCBvbiBzdGFydHVwICovCisrCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MSU5LX0FCU09MVVRFID0gMywJICAgLyogbGluayB0aW1lIHJlcG9ydGVkIGJ5IHNhbXBsZSBvciB3YWxsY2xvY2sgY291bnRlciwgbm90IHJlc2V0IG9uIHN0YXJ0dXAgKi8KKysJU05EUlZfUENNX0FVRElPX1RTVEFNUF9UWVBFX0xJTktfRVNUSU1BVEVEID0gNCwgICAgLyogbGluayB0aW1lIGVzdGltYXRlZCBpbmRpcmVjdGx5ICovCisrCVNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MSU5LX1NZTkNIUk9OSVpFRCA9IDUsIC8qIGxpbmsgdGltZSBzeW5jaHJvbml6ZWQgd2l0aCBzeXN0ZW0gdGltZSAqLworKwlTTkRSVl9QQ01fQVVESU9fVFNUQU1QX1RZUEVfTEFTVCA9IFNORFJWX1BDTV9BVURJT19UU1RBTVBfVFlQRV9MSU5LX1NZTkNIUk9OSVpFRAorK307CisrCisrc3RydWN0IHNuZF9wY21fc3RhdHVzIHsKKysJc25kX3BjbV9zdGF0ZV90IHN0YXRlOwkJLyogc3RyZWFtIHN0YXRlICovCisrCXN0cnVjdCB0aW1lc3BlYyB0cmlnZ2VyX3RzdGFtcDsJLyogdGltZSB3aGVuIHN0cmVhbSB3YXMgc3RhcnRlZC9zdG9wcGVkL3BhdXNlZCAqLworKwlzdHJ1Y3QgdGltZXNwZWMgdHN0YW1wOwkJLyogcmVmZXJlbmNlIHRpbWVzdGFtcCAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBhcHBsX3B0cjsJLyogYXBwbCBwdHIgKi8KKysJc25kX3BjbV91ZnJhbWVzX3QgaHdfcHRyOwkvKiBodyBwdHIgKi8KKysJc25kX3BjbV9zZnJhbWVzX3QgZGVsYXk7CS8qIGN1cnJlbnQgZGVsYXkgaW4gZnJhbWVzICovCisrCXNuZF9wY21fdWZyYW1lc190IGF2YWlsOwkvKiBudW1iZXIgb2YgZnJhbWVzIGF2YWlsYWJsZSAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBhdmFpbF9tYXg7CS8qIG1heCBmcmFtZXMgYXZhaWxhYmxlIG9uIGh3IHNpbmNlIGxhc3Qgc3RhdHVzICovCisrCXNuZF9wY21fdWZyYW1lc190IG92ZXJyYW5nZTsJLyogY291bnQgb2YgQURDIChjYXB0dXJlKSBvdmVycmFuZ2UgZGV0ZWN0aW9ucyBmcm9tIGxhc3Qgc3RhdHVzICovCisrCXNuZF9wY21fc3RhdGVfdCBzdXNwZW5kZWRfc3RhdGU7IC8qIHN1c3BlbmRlZCBzdHJlYW0gc3RhdGUgKi8KKysJX191MzIgYXVkaW9fdHN0YW1wX2RhdGE7CSAvKiBuZWVkZWQgZm9yIDY0LWJpdCBhbGlnbm1lbnQsIHVzZWQgZm9yIGNvbmZpZ3MvcmVwb3J0IHRvL2Zyb20gdXNlcnNwYWNlICovCisrCXN0cnVjdCB0aW1lc3BlYyBhdWRpb190c3RhbXA7CS8qIHNhbXBsZSBjb3VudGVyLCB3YWxsIGNsb2NrLCBQSEMgb3Igb24tZGVtYW5kIHN5bmMnZWQgKi8KKysJc3RydWN0IHRpbWVzcGVjIGRyaXZlcl90c3RhbXA7CS8qIHVzZWZ1bCBpbiBjYXNlIHJlZmVyZW5jZSBzeXN0ZW0gdHN0YW1wIGlzIHJlcG9ydGVkIHdpdGggZGVsYXkgKi8KKysJX191MzIgYXVkaW9fdHN0YW1wX2FjY3VyYWN5OwkvKiBpbiBucyB1bml0cywgb25seSB2YWxpZCBpZiBpbmRpY2F0ZWQgaW4gYXVkaW9fdHN0YW1wX2RhdGEgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFs1Mi0yKnNpemVvZihzdHJ1Y3QgdGltZXNwZWMpXTsgLyogbXVzdCBiZSBmaWxsZWQgd2l0aCB6ZXJvICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX3BjbV9tbWFwX3N0YXR1cyB7CisrCXNuZF9wY21fc3RhdGVfdCBzdGF0ZTsJCS8qIFJPOiBzdGF0ZSAtIFNORFJWX1BDTV9TVEFURV9YWFhYICovCisrCWludCBwYWQxOwkJCS8qIE5lZWRlZCBmb3IgNjQgYml0IGFsaWdubWVudCAqLworKwlzbmRfcGNtX3VmcmFtZXNfdCBod19wdHI7CS8qIFJPOiBodyBwdHIgKDAuLi5ib3VuZGFyeS0xKSAqLworKwlzdHJ1Y3QgdGltZXNwZWMgdHN0YW1wOwkJLyogVGltZXN0YW1wICovCisrCXNuZF9wY21fc3RhdGVfdCBzdXNwZW5kZWRfc3RhdGU7IC8qIFJPOiBzdXNwZW5kZWQgc3RyZWFtIHN0YXRlICovCisrCXN0cnVjdCB0aW1lc3BlYyBhdWRpb190c3RhbXA7CS8qIGZyb20gc2FtcGxlIGNvdW50ZXIgb3Igd2FsbCBjbG9jayAqLworK307CisrCisrc3RydWN0IHNuZF9wY21fbW1hcF9jb250cm9sIHsKKysJc25kX3BjbV91ZnJhbWVzX3QgYXBwbF9wdHI7CS8qIFJXOiBhcHBsIHB0ciAoMC4uLmJvdW5kYXJ5LTEpICovCisrCXNuZF9wY21fdWZyYW1lc190IGF2YWlsX21pbjsJLyogUlc6IG1pbiBhdmFpbGFibGUgZnJhbWVzIGZvciB3YWtldXAgKi8KKyt9OworKworKyNkZWZpbmUgU05EUlZfUENNX1NZTkNfUFRSX0hXU1lOQwkoMTw8MCkJLyogZXhlY3V0ZSBod3N5bmMgKi8KKysjZGVmaW5lIFNORFJWX1BDTV9TWU5DX1BUUl9BUFBMCQkoMTw8MSkJLyogZ2V0IGFwcGxfcHRyIGZyb20gZHJpdmVyIChyL3cgb3ApICovCisrI2RlZmluZSBTTkRSVl9QQ01fU1lOQ19QVFJfQVZBSUxfTUlOCSgxPDwyKQkvKiBnZXQgYXZhaWxfbWluIGZyb20gZHJpdmVyICovCisrCisrc3RydWN0IHNuZF9wY21fc3luY19wdHIgeworKwl1bnNpZ25lZCBpbnQgZmxhZ3M7CisrCXVuaW9uIHsKKysJCXN0cnVjdCBzbmRfcGNtX21tYXBfc3RhdHVzIHN0YXR1czsKKysJCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOworKwl9IHM7CisrCXVuaW9uIHsKKysJCXN0cnVjdCBzbmRfcGNtX21tYXBfY29udHJvbCBjb250cm9sOworKwkJdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CisrCX0gYzsKKyt9OworKworK3N0cnVjdCBzbmRfeGZlcmkgeworKwlzbmRfcGNtX3NmcmFtZXNfdCByZXN1bHQ7CisrCXZvaWQgX191c2VyICpidWY7CisrCXNuZF9wY21fdWZyYW1lc190IGZyYW1lczsKKyt9OworKworK3N0cnVjdCBzbmRfeGZlcm4geworKwlzbmRfcGNtX3NmcmFtZXNfdCByZXN1bHQ7CisrCXZvaWQgX191c2VyICogX191c2VyICpidWZzOworKwlzbmRfcGNtX3VmcmFtZXNfdCBmcmFtZXM7CisrfTsKKysKKytlbnVtIHsKKysJU05EUlZfUENNX1RTVEFNUF9UWVBFX0dFVFRJTUVPRkRBWSA9IDAsCS8qIGdldHRpbWVvZmRheSBlcXVpdmFsZW50ICovCisrCVNORFJWX1BDTV9UU1RBTVBfVFlQRV9NT05PVE9OSUMsCS8qIHBvc2l4X2Nsb2NrX21vbm90b25pYyBlcXVpdmFsZW50ICovCisrCVNORFJWX1BDTV9UU1RBTVBfVFlQRV9NT05PVE9OSUNfUkFXLCAgICAvKiBtb25vdG9uaWNfcmF3IChubyBOVFApICovCisrCVNORFJWX1BDTV9UU1RBTVBfVFlQRV9MQVNUID0gU05EUlZfUENNX1RTVEFNUF9UWVBFX01PTk9UT05JQ19SQVcsCisrfTsKKysKKysvKiBjaGFubmVsIHBvc2l0aW9ucyAqLworK2VudW0geworKwlTTkRSVl9DSE1BUF9VTktOT1dOID0gMCwKKysJU05EUlZfQ0hNQVBfTkEsCQkvKiBOL0EsIHNpbGVudCAqLworKwlTTkRSVl9DSE1BUF9NT05PLAkvKiBtb25vIHN0cmVhbSAqLworKwkvKiB0aGlzIGZvbGxvd3MgdGhlIGFsc2EtbGliIG1peGVyIGNoYW5uZWwgdmFsdWUgKyAzICovCisrCVNORFJWX0NITUFQX0ZMLAkJLyogZnJvbnQgbGVmdCAqLworKwlTTkRSVl9DSE1BUF9GUiwJCS8qIGZyb250IHJpZ2h0ICovCisrCVNORFJWX0NITUFQX1JMLAkJLyogcmVhciBsZWZ0ICovCisrCVNORFJWX0NITUFQX1JSLAkJLyogcmVhciByaWdodCAqLworKwlTTkRSVl9DSE1BUF9GQywJCS8qIGZyb250IGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9MRkUsCS8qIExGRSAqLworKwlTTkRSVl9DSE1BUF9TTCwJCS8qIHNpZGUgbGVmdCAqLworKwlTTkRSVl9DSE1BUF9TUiwJCS8qIHNpZGUgcmlnaHQgKi8KKysJU05EUlZfQ0hNQVBfUkMsCQkvKiByZWFyIGNlbnRlciAqLworKwkvKiBuZXcgZGVmaW5pdGlvbnMgKi8KKysJU05EUlZfQ0hNQVBfRkxDLAkvKiBmcm9udCBsZWZ0IGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9GUkMsCS8qIGZyb250IHJpZ2h0IGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9STEMsCS8qIHJlYXIgbGVmdCBjZW50ZXIgKi8KKysJU05EUlZfQ0hNQVBfUlJDLAkvKiByZWFyIHJpZ2h0IGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9GTFcsCS8qIGZyb250IGxlZnQgd2lkZSAqLworKwlTTkRSVl9DSE1BUF9GUlcsCS8qIGZyb250IHJpZ2h0IHdpZGUgKi8KKysJU05EUlZfQ0hNQVBfRkxILAkvKiBmcm9udCBsZWZ0IGhpZ2ggKi8KKysJU05EUlZfQ0hNQVBfRkNILAkvKiBmcm9udCBjZW50ZXIgaGlnaCAqLworKwlTTkRSVl9DSE1BUF9GUkgsCS8qIGZyb250IHJpZ2h0IGhpZ2ggKi8KKysJU05EUlZfQ0hNQVBfVEMsCQkvKiB0b3AgY2VudGVyICovCisrCVNORFJWX0NITUFQX1RGTCwJLyogdG9wIGZyb250IGxlZnQgKi8KKysJU05EUlZfQ0hNQVBfVEZSLAkvKiB0b3AgZnJvbnQgcmlnaHQgKi8KKysJU05EUlZfQ0hNQVBfVEZDLAkvKiB0b3AgZnJvbnQgY2VudGVyICovCisrCVNORFJWX0NITUFQX1RSTCwJLyogdG9wIHJlYXIgbGVmdCAqLworKwlTTkRSVl9DSE1BUF9UUlIsCS8qIHRvcCByZWFyIHJpZ2h0ICovCisrCVNORFJWX0NITUFQX1RSQywJLyogdG9wIHJlYXIgY2VudGVyICovCisrCS8qIG5ldyBkZWZpbml0aW9ucyBmb3IgVUFDMiAqLworKwlTTkRSVl9DSE1BUF9URkxDLAkvKiB0b3AgZnJvbnQgbGVmdCBjZW50ZXIgKi8KKysJU05EUlZfQ0hNQVBfVEZSQywJLyogdG9wIGZyb250IHJpZ2h0IGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9UU0wsCS8qIHRvcCBzaWRlIGxlZnQgKi8KKysJU05EUlZfQ0hNQVBfVFNSLAkvKiB0b3Agc2lkZSByaWdodCAqLworKwlTTkRSVl9DSE1BUF9MTEZFLAkvKiBsZWZ0IExGRSAqLworKwlTTkRSVl9DSE1BUF9STEZFLAkvKiByaWdodCBMRkUgKi8KKysJU05EUlZfQ0hNQVBfQkMsCQkvKiBib3R0b20gY2VudGVyICovCisrCVNORFJWX0NITUFQX0JMQywJLyogYm90dG9tIGxlZnQgY2VudGVyICovCisrCVNORFJWX0NITUFQX0JSQywJLyogYm90dG9tIHJpZ2h0IGNlbnRlciAqLworKwlTTkRSVl9DSE1BUF9MQVNUID0gU05EUlZfQ0hNQVBfQlJDLAorK307CisrCisrI2RlZmluZSBTTkRSVl9DSE1BUF9QT1NJVElPTl9NQVNLCTB4ZmZmZgorKyNkZWZpbmUgU05EUlZfQ0hNQVBfUEhBU0VfSU5WRVJTRQkoMHgwMSA8PCAxNikKKysjZGVmaW5lIFNORFJWX0NITUFQX0RSSVZFUl9TUEVDCQkoMHgwMiA8PCAxNikKKysKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9QVkVSU0lPTglfSU9SKCdBJywgMHgwMCwgaW50KQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0lORk8JCV9JT1IoJ0EnLCAweDAxLCBzdHJ1Y3Qgc25kX3BjbV9pbmZvKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1RTVEFNUAkJX0lPVygnQScsIDB4MDIsIGludCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9UVFNUQU1QCQlfSU9XKCdBJywgMHgwMywgaW50KQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1VTRVJfUFZFUlNJT04JX0lPVygnQScsIDB4MDQsIGludCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9IV19SRUZJTkUJX0lPV1IoJ0EnLCAweDEwLCBzdHJ1Y3Qgc25kX3BjbV9od19wYXJhbXMpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfSFdfUEFSQU1TCV9JT1dSKCdBJywgMHgxMSwgc3RydWN0IHNuZF9wY21faHdfcGFyYW1zKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0hXX0ZSRUUJCV9JTygnQScsIDB4MTIpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfU1dfUEFSQU1TCV9JT1dSKCdBJywgMHgxMywgc3RydWN0IHNuZF9wY21fc3dfcGFyYW1zKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1NUQVRVUwkJX0lPUignQScsIDB4MjAsIHN0cnVjdCBzbmRfcGNtX3N0YXR1cykKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9ERUxBWQkJX0lPUignQScsIDB4MjEsIHNuZF9wY21fc2ZyYW1lc190KQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0hXU1lOQwkJX0lPKCdBJywgMHgyMikKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9TWU5DX1BUUglfSU9XUignQScsIDB4MjMsIHN0cnVjdCBzbmRfcGNtX3N5bmNfcHRyKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1NUQVRVU19FWFQJX0lPV1IoJ0EnLCAweDI0LCBzdHJ1Y3Qgc25kX3BjbV9zdGF0dXMpCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfQ0hBTk5FTF9JTkZPCV9JT1IoJ0EnLCAweDMyLCBzdHJ1Y3Qgc25kX3BjbV9jaGFubmVsX2luZm8pCisrI2RlZmluZSBTTkRSVl9QQ01fSU9DVExfUFJFUEFSRQkJX0lPKCdBJywgMHg0MCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9SRVNFVAkJX0lPKCdBJywgMHg0MSkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9TVEFSVAkJX0lPKCdBJywgMHg0MikKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9EUk9QCQlfSU8oJ0EnLCAweDQzKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0RSQUlOCQlfSU8oJ0EnLCAweDQ0KQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1BBVVNFCQlfSU9XKCdBJywgMHg0NSwgaW50KQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1JFV0lORAkJX0lPVygnQScsIDB4NDYsIHNuZF9wY21fdWZyYW1lc190KQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1JFU1VNRQkJX0lPKCdBJywgMHg0NykKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9YUlVOCQlfSU8oJ0EnLCAweDQ4KQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX0ZPUldBUkQJCV9JT1coJ0EnLCAweDQ5LCBzbmRfcGNtX3VmcmFtZXNfdCkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9XUklURUlfRlJBTUVTCV9JT1coJ0EnLCAweDUwLCBzdHJ1Y3Qgc25kX3hmZXJpKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1JFQURJX0ZSQU1FUwlfSU9SKCdBJywgMHg1MSwgc3RydWN0IHNuZF94ZmVyaSkKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9XUklURU5fRlJBTUVTCV9JT1coJ0EnLCAweDUyLCBzdHJ1Y3Qgc25kX3hmZXJuKQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1JFQUROX0ZSQU1FUwlfSU9SKCdBJywgMHg1Mywgc3RydWN0IHNuZF94ZmVybikKKysjZGVmaW5lIFNORFJWX1BDTV9JT0NUTF9MSU5LCQlfSU9XKCdBJywgMHg2MCwgaW50KQorKyNkZWZpbmUgU05EUlZfUENNX0lPQ1RMX1VOTElOSwkJX0lPKCdBJywgMHg2MSkKKysKKysvKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICBNSURJIHYxLjAgaW50ZXJmYWNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCisrCisrLyoKKysgKiAgUmF3IE1JREkgc2VjdGlvbiAtIC9kZXYvc25kL21pZGk/PworKyAqLworKworKyNkZWZpbmUgU05EUlZfUkFXTUlESV9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDIsIDAsIDApCisrCisrZW51bSB7CisrCVNORFJWX1JBV01JRElfU1RSRUFNX09VVFBVVCA9IDAsCisrCVNORFJWX1JBV01JRElfU1RSRUFNX0lOUFVULAorKwlTTkRSVl9SQVdNSURJX1NUUkVBTV9MQVNUID0gU05EUlZfUkFXTUlESV9TVFJFQU1fSU5QVVQsCisrfTsKKysKKysjZGVmaW5lIFNORFJWX1JBV01JRElfSU5GT19PVVRQVVQJCTB4MDAwMDAwMDEKKysjZGVmaW5lIFNORFJWX1JBV01JRElfSU5GT19JTlBVVAkJMHgwMDAwMDAwMgorKyNkZWZpbmUgU05EUlZfUkFXTUlESV9JTkZPX0RVUExFWAkJMHgwMDAwMDAwNAorKworK3N0cnVjdCBzbmRfcmF3bWlkaV9pbmZvIHsKKysJdW5zaWduZWQgaW50IGRldmljZTsJCS8qIFJPL1dSIChjb250cm9sKTogZGV2aWNlIG51bWJlciAqLworKwl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlOwkJLyogUk8vV1IgKGNvbnRyb2wpOiBzdWJkZXZpY2UgbnVtYmVyICovCisrCWludCBzdHJlYW07CQkJLyogV1I6IHN0cmVhbSAqLworKwlpbnQgY2FyZDsJCQkvKiBSOiBjYXJkIG51bWJlciAqLworKwl1bnNpZ25lZCBpbnQgZmxhZ3M7CQkvKiBTTkRSVl9SQVdNSURJX0lORk9fWFhYWCAqLworKwl1bnNpZ25lZCBjaGFyIGlkWzY0XTsJCS8qIElEICh1c2VyIHNlbGVjdGFibGUpICovCisrCXVuc2lnbmVkIGNoYXIgbmFtZVs4MF07CQkvKiBuYW1lIG9mIGRldmljZSAqLworKwl1bnNpZ25lZCBjaGFyIHN1Ym5hbWVbMzJdOwkvKiBuYW1lIG9mIGFjdGl2ZSBvciBzZWxlY3RlZCBzdWJkZXZpY2UgKi8KKysJdW5zaWduZWQgaW50IHN1YmRldmljZXNfY291bnQ7CisrCXVuc2lnbmVkIGludCBzdWJkZXZpY2VzX2F2YWlsOworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0XTsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KKyt9OworKworK3N0cnVjdCBzbmRfcmF3bWlkaV9wYXJhbXMgeworKwlpbnQgc3RyZWFtOworKwlzaXplX3QgYnVmZmVyX3NpemU7CQkvKiBxdWV1ZSBzaXplIGluIGJ5dGVzICovCisrCXNpemVfdCBhdmFpbF9taW47CQkvKiBtaW5pbXVtIGF2YWlsIGJ5dGVzIGZvciB3YWtldXAgKi8KKysJdW5zaWduZWQgaW50IG5vX2FjdGl2ZV9zZW5zaW5nOiAxOyAvKiBkbyBub3Qgc2VuZCBhY3RpdmUgc2Vuc2luZyBieXRlIGluIGNsb3NlKCkgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFsxNl07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgdXNlICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX3Jhd21pZGlfc3RhdHVzIHsKKysJaW50IHN0cmVhbTsKKysJc3RydWN0IHRpbWVzcGVjIHRzdGFtcDsJCS8qIFRpbWVzdGFtcCAqLworKwlzaXplX3QgYXZhaWw7CQkJLyogYXZhaWxhYmxlIGJ5dGVzICovCisrCXNpemVfdCB4cnVuczsJCQkvKiBjb3VudCBvZiBvdmVycnVucyBzaW5jZSBsYXN0IHN0YXR1cyAoaW4gYnl0ZXMpICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMTZdOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLworK307CisrCisrI2RlZmluZSBTTkRSVl9SQVdNSURJX0lPQ1RMX1BWRVJTSU9OCV9JT1IoJ1cnLCAweDAwLCBpbnQpCisrI2RlZmluZSBTTkRSVl9SQVdNSURJX0lPQ1RMX0lORk8JX0lPUignVycsIDB4MDEsIHN0cnVjdCBzbmRfcmF3bWlkaV9pbmZvKQorKyNkZWZpbmUgU05EUlZfUkFXTUlESV9JT0NUTF9QQVJBTVMJX0lPV1IoJ1cnLCAweDEwLCBzdHJ1Y3Qgc25kX3Jhd21pZGlfcGFyYW1zKQorKyNkZWZpbmUgU05EUlZfUkFXTUlESV9JT0NUTF9TVEFUVVMJX0lPV1IoJ1cnLCAweDIwLCBzdHJ1Y3Qgc25kX3Jhd21pZGlfc3RhdHVzKQorKyNkZWZpbmUgU05EUlZfUkFXTUlESV9JT0NUTF9EUk9QCV9JT1coJ1cnLCAweDMwLCBpbnQpCisrI2RlZmluZSBTTkRSVl9SQVdNSURJX0lPQ1RMX0RSQUlOCV9JT1coJ1cnLCAweDMxLCBpbnQpCisrCisrLyoKKysgKiAgVGltZXIgc2VjdGlvbiAtIC9kZXYvc25kL3RpbWVyCisrICovCisrCisrI2RlZmluZSBTTkRSVl9USU1FUl9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDIsIDAsIDYpCisrCisrZW51bSB7CisrCVNORFJWX1RJTUVSX0NMQVNTX05PTkUgPSAtMSwKKysJU05EUlZfVElNRVJfQ0xBU1NfU0xBVkUgPSAwLAorKwlTTkRSVl9USU1FUl9DTEFTU19HTE9CQUwsCisrCVNORFJWX1RJTUVSX0NMQVNTX0NBUkQsCisrCVNORFJWX1RJTUVSX0NMQVNTX1BDTSwKKysJU05EUlZfVElNRVJfQ0xBU1NfTEFTVCA9IFNORFJWX1RJTUVSX0NMQVNTX1BDTSwKKyt9OworKworKy8qIHNsYXZlIHRpbWVyIGNsYXNzZXMgKi8KKytlbnVtIHsKKysJU05EUlZfVElNRVJfU0NMQVNTX05PTkUgPSAwLAorKwlTTkRSVl9USU1FUl9TQ0xBU1NfQVBQTElDQVRJT04sCisrCVNORFJWX1RJTUVSX1NDTEFTU19TRVFVRU5DRVIsCQkvKiBhbGlhcyAqLworKwlTTkRSVl9USU1FUl9TQ0xBU1NfT1NTX1NFUVVFTkNFUiwJLyogYWxpYXMgKi8KKysJU05EUlZfVElNRVJfU0NMQVNTX0xBU1QgPSBTTkRSVl9USU1FUl9TQ0xBU1NfT1NTX1NFUVVFTkNFUiwKKyt9OworKworKy8qIGdsb2JhbCB0aW1lcnMgKGRldmljZSBtZW1iZXIpICovCisrI2RlZmluZSBTTkRSVl9USU1FUl9HTE9CQUxfU1lTVEVNCTAKKysjZGVmaW5lIFNORFJWX1RJTUVSX0dMT0JBTF9SVEMJCTEJLyogdW51c2VkICovCisrI2RlZmluZSBTTkRSVl9USU1FUl9HTE9CQUxfSFBFVAkJMgorKyNkZWZpbmUgU05EUlZfVElNRVJfR0xPQkFMX0hSVElNRVIJMworKworKy8qIGluZm8gZmxhZ3MgKi8KKysjZGVmaW5lIFNORFJWX1RJTUVSX0ZMR19TTEFWRQkJKDE8PDApCS8qIGNhbm5vdCBiZSBjb250cm9sbGVkICovCisrCisrc3RydWN0IHNuZF90aW1lcl9pZCB7CisrCWludCBkZXZfY2xhc3M7CisrCWludCBkZXZfc2NsYXNzOworKwlpbnQgY2FyZDsKKysJaW50IGRldmljZTsKKysJaW50IHN1YmRldmljZTsKKyt9OworKworK3N0cnVjdCBzbmRfdGltZXJfZ2luZm8geworKwlzdHJ1Y3Qgc25kX3RpbWVyX2lkIHRpZDsJLyogcmVxdWVzdGVkIHRpbWVyIElEICovCisrCXVuc2lnbmVkIGludCBmbGFnczsJCS8qIHRpbWVyIGZsYWdzIC0gU05EUlZfVElNRVJfRkxHXyogKi8KKysJaW50IGNhcmQ7CQkJLyogY2FyZCBudW1iZXIgKi8KKysJdW5zaWduZWQgY2hhciBpZFs2NF07CQkvKiB0aW1lciBpZGVudGlmaWNhdGlvbiAqLworKwl1bnNpZ25lZCBjaGFyIG5hbWVbODBdOwkJLyogdGltZXIgbmFtZSAqLworKwl1bnNpZ25lZCBsb25nIHJlc2VydmVkMDsJLyogcmVzZXJ2ZWQgZm9yIGZ1dHVyZSB1c2UgKi8KKysJdW5zaWduZWQgbG9uZyByZXNvbHV0aW9uOwkvKiBhdmVyYWdlIHBlcmlvZCByZXNvbHV0aW9uIGluIG5zICovCisrCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbl9taW47CS8qIG1pbmltYWwgcGVyaW9kIHJlc29sdXRpb24gaW4gbnMgKi8KKysJdW5zaWduZWQgbG9uZyByZXNvbHV0aW9uX21heDsJLyogbWF4aW1hbCBwZXJpb2QgcmVzb2x1dGlvbiBpbiBucyAqLworKwl1bnNpZ25lZCBpbnQgY2xpZW50czsJCS8qIGFjdGl2ZSB0aW1lciBjbGllbnRzICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbMzJdOworK307CisrCisrc3RydWN0IHNuZF90aW1lcl9ncGFyYW1zIHsKKysJc3RydWN0IHNuZF90aW1lcl9pZCB0aWQ7CS8qIHJlcXVlc3RlZCB0aW1lciBJRCAqLworKwl1bnNpZ25lZCBsb25nIHBlcmlvZF9udW07CS8qIHJlcXVlc3RlZCBwcmVjaXNlIHBlcmlvZCBkdXJhdGlvbiAoaW4gc2Vjb25kcykgLSBudW1lcmF0b3IgKi8KKysJdW5zaWduZWQgbG9uZyBwZXJpb2RfZGVuOwkvKiByZXF1ZXN0ZWQgcHJlY2lzZSBwZXJpb2QgZHVyYXRpb24gKGluIHNlY29uZHMpIC0gZGVub21pbmF0b3IgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFszMl07CisrfTsKKysKKytzdHJ1Y3Qgc25kX3RpbWVyX2dzdGF0dXMgeworKwlzdHJ1Y3Qgc25kX3RpbWVyX2lkIHRpZDsJLyogcmVxdWVzdGVkIHRpbWVyIElEICovCisrCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbjsJLyogY3VycmVudCBwZXJpb2QgcmVzb2x1dGlvbiBpbiBucyAqLworKwl1bnNpZ25lZCBsb25nIHJlc29sdXRpb25fbnVtOwkvKiBwcmVjaXNlIGN1cnJlbnQgcGVyaW9kIHJlc29sdXRpb24gKGluIHNlY29uZHMpIC0gbnVtZXJhdG9yICovCisrCXVuc2lnbmVkIGxvbmcgcmVzb2x1dGlvbl9kZW47CS8qIHByZWNpc2UgY3VycmVudCBwZXJpb2QgcmVzb2x1dGlvbiAoaW4gc2Vjb25kcykgLSBkZW5vbWluYXRvciAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzMyXTsKKyt9OworKworK3N0cnVjdCBzbmRfdGltZXJfc2VsZWN0IHsKKysJc3RydWN0IHNuZF90aW1lcl9pZCBpZDsJLyogYmluZCB0byB0aW1lciBJRCAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzMyXTsJLyogcmVzZXJ2ZWQgKi8KKyt9OworKworK3N0cnVjdCBzbmRfdGltZXJfaW5mbyB7CisrCXVuc2lnbmVkIGludCBmbGFnczsJCS8qIHRpbWVyIGZsYWdzIC0gU05EUlZfVElNRVJfRkxHXyogKi8KKysJaW50IGNhcmQ7CQkJLyogY2FyZCBudW1iZXIgKi8KKysJdW5zaWduZWQgY2hhciBpZFs2NF07CQkvKiB0aW1lciBpZGVudGlmaWNhdG9yICovCisrCXVuc2lnbmVkIGNoYXIgbmFtZVs4MF07CQkvKiB0aW1lciBuYW1lICovCisrCXVuc2lnbmVkIGxvbmcgcmVzZXJ2ZWQwOwkvKiByZXNlcnZlZCBmb3IgZnV0dXJlIHVzZSAqLworKwl1bnNpZ25lZCBsb25nIHJlc29sdXRpb247CS8qIGF2ZXJhZ2UgcGVyaW9kIHJlc29sdXRpb24gaW4gbnMgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFs2NF07CS8qIHJlc2VydmVkICovCisrfTsKKysKKysjZGVmaW5lIFNORFJWX1RJTUVSX1BTRkxHX0FVVE8JCSgxPDwwKQkvKiBhdXRvIHN0YXJ0LCBvdGhlcndpc2Ugb25lLXNob3QgKi8KKysjZGVmaW5lIFNORFJWX1RJTUVSX1BTRkxHX0VYQ0xVU0lWRQkoMTw8MSkJLyogZXhjbHVzaXZlIHVzZSwgcHJlY2lzZSBzdGFydC9zdG9wL3BhdXNlL2NvbnRpbnVlICovCisrI2RlZmluZSBTTkRSVl9USU1FUl9QU0ZMR19FQVJMWV9FVkVOVAkoMTw8MikJLyogd3JpdGUgZWFybHkgZXZlbnQgdG8gdGhlIHBvbGwgcXVldWUgKi8KKysKKytzdHJ1Y3Qgc25kX3RpbWVyX3BhcmFtcyB7CisrCXVuc2lnbmVkIGludCBmbGFnczsJCS8qIGZsYWdzIC0gU05EUlZfVElNRVJfUFNGTEdfKiAqLworKwl1bnNpZ25lZCBpbnQgdGlja3M7CQkvKiByZXF1ZXN0ZWQgcmVzb2x1dGlvbiBpbiB0aWNrcyAqLworKwl1bnNpZ25lZCBpbnQgcXVldWVfc2l6ZTsJLyogdG90YWwgc2l6ZSBvZiBxdWV1ZSAoMzItMTAyNCkgKi8KKysJdW5zaWduZWQgaW50IHJlc2VydmVkMDsJCS8qIHJlc2VydmVkLCB3YXM6IGZhaWx1cmUgbG9jYXRpb25zICovCisrCXVuc2lnbmVkIGludCBmaWx0ZXI7CQkvKiBldmVudCBmaWx0ZXIgKGJpdG1hc2sgb2YgU05EUlZfVElNRVJfRVZFTlRfKikgKi8KKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFs2MF07CS8qIHJlc2VydmVkICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX3RpbWVyX3N0YXR1cyB7CisrCXN0cnVjdCB0aW1lc3BlYyB0c3RhbXA7CQkvKiBUaW1lc3RhbXAgLSBsYXN0IHVwZGF0ZSAqLworKwl1bnNpZ25lZCBpbnQgcmVzb2x1dGlvbjsJLyogY3VycmVudCBwZXJpb2QgcmVzb2x1dGlvbiBpbiBucyAqLworKwl1bnNpZ25lZCBpbnQgbG9zdDsJCS8qIGNvdW50ZXIgb2YgbWFzdGVyIHRpY2sgbG9zdCAqLworKwl1bnNpZ25lZCBpbnQgb3ZlcnJ1bjsJCS8qIGNvdW50IG9mIHJlYWQgcXVldWUgb3ZlcnJ1bnMgKi8KKysJdW5zaWduZWQgaW50IHF1ZXVlOwkJLyogdXNlZCBxdWV1ZSBzaXplICovCisrCXVuc2lnbmVkIGNoYXIgcmVzZXJ2ZWRbNjRdOwkvKiByZXNlcnZlZCAqLworK307CisrCisrI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9QVkVSU0lPTglfSU9SKCdUJywgMHgwMCwgaW50KQorKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfTkVYVF9ERVZJQ0UJX0lPV1IoJ1QnLCAweDAxLCBzdHJ1Y3Qgc25kX3RpbWVyX2lkKQorKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfVFJFQUQJCV9JT1coJ1QnLCAweDAyLCBpbnQpCisrI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9HSU5GTwkJX0lPV1IoJ1QnLCAweDAzLCBzdHJ1Y3Qgc25kX3RpbWVyX2dpbmZvKQorKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfR1BBUkFNUwlfSU9XKCdUJywgMHgwNCwgc3RydWN0IHNuZF90aW1lcl9ncGFyYW1zKQorKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfR1NUQVRVUwlfSU9XUignVCcsIDB4MDUsIHN0cnVjdCBzbmRfdGltZXJfZ3N0YXR1cykKKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1NFTEVDVAlfSU9XKCdUJywgMHgxMCwgc3RydWN0IHNuZF90aW1lcl9zZWxlY3QpCisrI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9JTkZPCQlfSU9SKCdUJywgMHgxMSwgc3RydWN0IHNuZF90aW1lcl9pbmZvKQorKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfUEFSQU1TCV9JT1coJ1QnLCAweDEyLCBzdHJ1Y3Qgc25kX3RpbWVyX3BhcmFtcykKKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1NUQVRVUwlfSU9SKCdUJywgMHgxNCwgc3RydWN0IHNuZF90aW1lcl9zdGF0dXMpCisrLyogVGhlIGZvbGxvd2luZyBmb3VyIGlvY3RscyBhcmUgY2hhbmdlZCBzaW5jZSAxLjAuOSBkdWUgdG8gY29uZmxpY3Rpb24gKi8KKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX1NUQVJUCQlfSU8oJ1QnLCAweGEwKQorKyNkZWZpbmUgU05EUlZfVElNRVJfSU9DVExfU1RPUAkJX0lPKCdUJywgMHhhMSkKKysjZGVmaW5lIFNORFJWX1RJTUVSX0lPQ1RMX0NPTlRJTlVFCV9JTygnVCcsIDB4YTIpCisrI2RlZmluZSBTTkRSVl9USU1FUl9JT0NUTF9QQVVTRQkJX0lPKCdUJywgMHhhMykKKysKKytzdHJ1Y3Qgc25kX3RpbWVyX3JlYWQgeworKwl1bnNpZ25lZCBpbnQgcmVzb2x1dGlvbjsKKysJdW5zaWduZWQgaW50IHRpY2tzOworK307CisrCisrZW51bSB7CisrCVNORFJWX1RJTUVSX0VWRU5UX1JFU09MVVRJT04gPSAwLAkvKiB2YWwgPSByZXNvbHV0aW9uIGluIG5zICovCisrCVNORFJWX1RJTUVSX0VWRU5UX1RJQ0ssCQkJLyogdmFsID0gdGlja3MgKi8KKysJU05EUlZfVElNRVJfRVZFTlRfU1RBUlQsCQkvKiB2YWwgPSByZXNvbHV0aW9uIGluIG5zICovCisrCVNORFJWX1RJTUVSX0VWRU5UX1NUT1AsCQkJLyogdmFsID0gMCAqLworKwlTTkRSVl9USU1FUl9FVkVOVF9DT05USU5VRSwJCS8qIHZhbCA9IHJlc29sdXRpb24gaW4gbnMgKi8KKysJU05EUlZfVElNRVJfRVZFTlRfUEFVU0UsCQkvKiB2YWwgPSAwICovCisrCVNORFJWX1RJTUVSX0VWRU5UX0VBUkxZLAkJLyogdmFsID0gMCwgZWFybHkgZXZlbnQgKi8KKysJU05EUlZfVElNRVJfRVZFTlRfU1VTUEVORCwJCS8qIHZhbCA9IDAgKi8KKysJU05EUlZfVElNRVJfRVZFTlRfUkVTVU1FLAkJLyogdmFsID0gcmVzb2x1dGlvbiBpbiBucyAqLworKwkvKiBtYXN0ZXIgdGltZXIgZXZlbnRzIGZvciBzbGF2ZSB0aW1lciBpbnN0YW5jZXMgKi8KKysJU05EUlZfVElNRVJfRVZFTlRfTVNUQVJUID0gU05EUlZfVElNRVJfRVZFTlRfU1RBUlQgKyAxMCwKKysJU05EUlZfVElNRVJfRVZFTlRfTVNUT1AgPSBTTkRSVl9USU1FUl9FVkVOVF9TVE9QICsgMTAsCisrCVNORFJWX1RJTUVSX0VWRU5UX01DT05USU5VRSA9IFNORFJWX1RJTUVSX0VWRU5UX0NPTlRJTlVFICsgMTAsCisrCVNORFJWX1RJTUVSX0VWRU5UX01QQVVTRSA9IFNORFJWX1RJTUVSX0VWRU5UX1BBVVNFICsgMTAsCisrCVNORFJWX1RJTUVSX0VWRU5UX01TVVNQRU5EID0gU05EUlZfVElNRVJfRVZFTlRfU1VTUEVORCArIDEwLAorKwlTTkRSVl9USU1FUl9FVkVOVF9NUkVTVU1FID0gU05EUlZfVElNRVJfRVZFTlRfUkVTVU1FICsgMTAsCisrfTsKKysKKytzdHJ1Y3Qgc25kX3RpbWVyX3RyZWFkIHsKKysJaW50IGV2ZW50OworKwlzdHJ1Y3QgdGltZXNwZWMgdHN0YW1wOworKwl1bnNpZ25lZCBpbnQgdmFsOworK307CisrCisrLyoqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioKKysgKiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKgorKyAqICAgICAgICBTZWN0aW9uIGZvciBkcml2ZXIgY29udHJvbCBpbnRlcmZhY2UgLSAvZGV2L3NuZC9jb250cm9sPyAgICAgICAgICAqCisrICogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICoKKysgKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKi8KKysKKysjZGVmaW5lIFNORFJWX0NUTF9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDIsIDAsIDcpCisrCisrc3RydWN0IHNuZF9jdGxfY2FyZF9pbmZvIHsKKysJaW50IGNhcmQ7CQkJLyogY2FyZCBudW1iZXIgKi8KKysJaW50IHBhZDsJCQkvKiByZXNlcnZlZCBmb3IgZnV0dXJlICh3YXMgdHlwZSkgKi8KKysJdW5zaWduZWQgY2hhciBpZFsxNl07CQkvKiBJRCBvZiBjYXJkICh1c2VyIHNlbGVjdGFibGUpICovCisrCXVuc2lnbmVkIGNoYXIgZHJpdmVyWzE2XTsJLyogRHJpdmVyIG5hbWUgKi8KKysJdW5zaWduZWQgY2hhciBuYW1lWzMyXTsJCS8qIFNob3J0IG5hbWUgb2Ygc291bmRjYXJkICovCisrCXVuc2lnbmVkIGNoYXIgbG9uZ25hbWVbODBdOwkvKiBuYW1lICsgaW5mbyB0ZXh0IGFib3V0IHNvdW5kY2FyZCAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkX1sxNl07CS8qIHJlc2VydmVkIGZvciBmdXR1cmUgKHdhcyBJRCBvZiBtaXhlcikgKi8KKysJdW5zaWduZWQgY2hhciBtaXhlcm5hbWVbODBdOwkvKiB2aXN1YWwgbWl4ZXIgaWRlbnRpZmljYXRpb24gKi8KKysJdW5zaWduZWQgY2hhciBjb21wb25lbnRzWzEyOF07CS8qIGNhcmQgY29tcG9uZW50cyAvIGZpbmUgaWRlbnRpZmljYXRpb24sIGRlbGltaXRlZCB3aXRoIG9uZSBzcGFjZSAoQUM5NyBldGMuLikgKi8KKyt9OworKworK3R5cGVkZWYgaW50IF9fYml0d2lzZSBzbmRfY3RsX2VsZW1fdHlwZV90OworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9OT05FCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSAwKSAvKiBpbnZhbGlkICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0JPT0xFQU4JKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV90eXBlX3QpIDEpIC8qIGJvb2xlYW4gdHlwZSAqLworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9JTlRFR0VSCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSAyKSAvKiBpbnRlZ2VyIHR5cGUgKi8KKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX1RZUEVfRU5VTUVSQVRFRAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgMykgLyogZW51bWVyYXRlZCB0eXBlICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0JZVEVTCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1fdHlwZV90KSA0KSAvKiBieXRlIGFycmF5ICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0lFQzk1OAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgNSkgLyogSUVDOTU4IChTL1BESUYpIHNldHVwICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9UWVBFX0lOVEVHRVI2NAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX3R5cGVfdCkgNikgLyogNjQtYml0IGludGVnZXIgdHlwZSAqLworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fVFlQRV9MQVNUCVNORFJWX0NUTF9FTEVNX1RZUEVfSU5URUdFUjY0CisrCisrdHlwZWRlZiBpbnQgX19iaXR3aXNlIHNuZF9jdGxfZWxlbV9pZmFjZV90OworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfQ0FSRAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDApIC8qIGdsb2JhbCBjb250cm9sICovCisrI2RlZmluZQlTTkRSVl9DVExfRUxFTV9JRkFDRV9IV0RFUAkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDEpIC8qIGhhcmR3YXJlIGRlcGVuZGVudCBkZXZpY2UgKi8KKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX01JWEVSCSgoX19mb3JjZSBzbmRfY3RsX2VsZW1faWZhY2VfdCkgMikgLyogdmlydHVhbCBtaXhlciBkZXZpY2UgKi8KKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX1BDTQkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDMpIC8qIFBDTSBkZXZpY2UgKi8KKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX1JBV01JREkJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV9pZmFjZV90KSA0KSAvKiBSYXdNaWRpIGRldmljZSAqLworKyNkZWZpbmUJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfVElNRVIJKChfX2ZvcmNlIHNuZF9jdGxfZWxlbV9pZmFjZV90KSA1KSAvKiB0aW1lciBkZXZpY2UgKi8KKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX1NFUVVFTkNFUgkoKF9fZm9yY2Ugc25kX2N0bF9lbGVtX2lmYWNlX3QpIDYpIC8qIHNlcXVlbmNlciBjbGllbnQgKi8KKysjZGVmaW5lCVNORFJWX0NUTF9FTEVNX0lGQUNFX0xBU1QJU05EUlZfQ1RMX0VMRU1fSUZBQ0VfU0VRVUVOQ0VSCisrCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfUkVBRAkJKDE8PDApCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfV1JJVEUJCSgxPDwxKQorKyNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1JFQURXUklURQkJKFNORFJWX0NUTF9FTEVNX0FDQ0VTU19SRUFEfFNORFJWX0NUTF9FTEVNX0FDQ0VTU19XUklURSkKKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19WT0xBVElMRQkJKDE8PDIpCS8qIGNvbnRyb2wgdmFsdWUgbWF5IGJlIGNoYW5nZWQgd2l0aG91dCBhIG5vdGlmaWNhdGlvbiAqLworKyNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RJTUVTVEFNUAkJKDE8PDMpCS8qIHdoZW4gd2FzIGNvbnRyb2wgY2hhbmdlZCAqLworKyNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9SRUFECQkoMTw8NCkJLyogVExWIHJlYWQgaXMgcG9zc2libGUgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfV1JJVEUJCSgxPDw1KQkvKiBUTFYgd3JpdGUgaXMgcG9zc2libGUgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfUkVBRFdSSVRFCShTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVExWX1JFQUR8U05EUlZfQ1RMX0VMRU1fQUNDRVNTX1RMVl9XUklURSkKKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfQ09NTUFORAkoMTw8NikJLyogVExWIGNvbW1hbmQgaXMgcG9zc2libGUgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19JTkFDVElWRQkJKDE8PDgpCS8qIGNvbnRyb2wgZG9lcyBhY3R1YWxseSBub3RoaW5nLCBidXQgbWF5IGJlIHVwZGF0ZWQgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19MT0NLCQkoMTw8OSkJLyogd3JpdGUgbG9jayAqLworKyNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fQUNDRVNTX09XTkVSCQkoMTw8MTApCS8qIHdyaXRlIGxvY2sgb3duZXIgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FTEVNX0FDQ0VTU19UTFZfQ0FMTEJBQ0sJKDE8PDI4KQkvKiBrZXJuZWwgdXNlIGEgVExWIGNhbGxiYWNrICovCisrI2RlZmluZSBTTkRSVl9DVExfRUxFTV9BQ0NFU1NfVVNFUgkJKDE8PDI5KSAvKiB1c2VyIHNwYWNlIGVsZW1lbnQgKi8KKysvKiBiaXRzIDMwIGFuZCAzMSBhcmUgb2Jzb2xldGVkIChmb3IgaW5kaXJlY3QgYWNjZXNzKSAqLworKworKy8qIGZvciBmdXJ0aGVyIGRldGFpbHMgc2VlIHRoZSBBQ1BJIGFuZCBQQ0kgcG93ZXIgbWFuYWdlbWVudCBzcGVjaWZpY2F0aW9uICovCisrI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDAJCTB4MDAwMAkvKiBmdWxsIE9uICovCisrI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDEJCTB4MDEwMAkvKiBwYXJ0aWFsIE9uICovCisrI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDIJCTB4MDIwMAkvKiBwYXJ0aWFsIE9uICovCisrI2RlZmluZSBTTkRSVl9DVExfUE9XRVJfRDMJCTB4MDMwMAkvKiBPZmYgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9QT1dFUl9EM2hvdAkJKFNORFJWX0NUTF9QT1dFUl9EM3wweDAwMDApCS8qIE9mZiwgd2l0aCBwb3dlciAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1BPV0VSX0QzY29sZAkJKFNORFJWX0NUTF9QT1dFUl9EM3wweDAwMDEpCS8qIE9mZiwgd2l0aG91dCBwb3dlciAqLworKworKyNkZWZpbmUgU05EUlZfQ1RMX0VMRU1fSURfTkFNRV9NQVhMRU4JNDQKKysKKytzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkIHsKKysJdW5zaWduZWQgaW50IG51bWlkOwkJLyogbnVtZXJpYyBpZGVudGlmaWVyLCB6ZXJvID0gaW52YWxpZCAqLworKwlzbmRfY3RsX2VsZW1faWZhY2VfdCBpZmFjZTsJLyogaW50ZXJmYWNlIGlkZW50aWZpZXIgKi8KKysJdW5zaWduZWQgaW50IGRldmljZTsJCS8qIGRldmljZS9jbGllbnQgbnVtYmVyICovCisrCXVuc2lnbmVkIGludCBzdWJkZXZpY2U7CQkvKiBzdWJkZXZpY2UgKHN1YnN0cmVhbSkgbnVtYmVyICovCisrCXVuc2lnbmVkIGNoYXIgbmFtZVtTTkRSVl9DVExfRUxFTV9JRF9OQU1FX01BWExFTl07CQkvKiBBU0NJSSBuYW1lIG9mIGl0ZW0gKi8KKysJdW5zaWduZWQgaW50IGluZGV4OwkJLyogaW5kZXggb2YgaXRlbSAqLworK307CisrCisrc3RydWN0IHNuZF9jdGxfZWxlbV9saXN0IHsKKysJdW5zaWduZWQgaW50IG9mZnNldDsJCS8qIFc6IGZpcnN0IGVsZW1lbnQgSUQgdG8gZ2V0ICovCisrCXVuc2lnbmVkIGludCBzcGFjZTsJCS8qIFc6IGNvdW50IG9mIGVsZW1lbnQgSURzIHRvIGdldCAqLworKwl1bnNpZ25lZCBpbnQgdXNlZDsJCS8qIFI6IGNvdW50IG9mIGVsZW1lbnQgSURzIHNldCAqLworKwl1bnNpZ25lZCBpbnQgY291bnQ7CQkvKiBSOiBjb3VudCBvZiBhbGwgZWxlbWVudHMgKi8KKysJc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBfX3VzZXIgKnBpZHM7IC8qIFI6IElEcyAqLworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzUwXTsKKyt9OworKworK3N0cnVjdCBzbmRfY3RsX2VsZW1faW5mbyB7CisrCXN0cnVjdCBzbmRfY3RsX2VsZW1faWQgaWQ7CS8qIFc6IGVsZW1lbnQgSUQgKi8KKysJc25kX2N0bF9lbGVtX3R5cGVfdCB0eXBlOwkvKiBSOiB2YWx1ZSB0eXBlIC0gU05EUlZfQ1RMX0VMRU1fVFlQRV8qICovCisrCXVuc2lnbmVkIGludCBhY2Nlc3M7CQkvKiBSOiB2YWx1ZSBhY2Nlc3MgKGJpdG1hc2spIC0gU05EUlZfQ1RMX0VMRU1fQUNDRVNTXyogKi8KKysJdW5zaWduZWQgaW50IGNvdW50OwkJLyogY291bnQgb2YgdmFsdWVzICovCisrCV9fa2VybmVsX3BpZF90IG93bmVyOwkJLyogb3duZXIncyBQSUQgb2YgdGhpcyBjb250cm9sICovCisrCXVuaW9uIHsKKysJCXN0cnVjdCB7CisrCQkJbG9uZyBtaW47CQkvKiBSOiBtaW5pbXVtIHZhbHVlICovCisrCQkJbG9uZyBtYXg7CQkvKiBSOiBtYXhpbXVtIHZhbHVlICovCisrCQkJbG9uZyBzdGVwOwkJLyogUjogc3RlcCAoMCB2YXJpYWJsZSkgKi8KKysJCX0gaW50ZWdlcjsKKysJCXN0cnVjdCB7CisrCQkJbG9uZyBsb25nIG1pbjsJCS8qIFI6IG1pbmltdW0gdmFsdWUgKi8KKysJCQlsb25nIGxvbmcgbWF4OwkJLyogUjogbWF4aW11bSB2YWx1ZSAqLworKwkJCWxvbmcgbG9uZyBzdGVwOwkJLyogUjogc3RlcCAoMCB2YXJpYWJsZSkgKi8KKysJCX0gaW50ZWdlcjY0OworKwkJc3RydWN0IHsKKysJCQl1bnNpZ25lZCBpbnQgaXRlbXM7CS8qIFI6IG51bWJlciBvZiBpdGVtcyAqLworKwkJCXVuc2lnbmVkIGludCBpdGVtOwkvKiBXOiBpdGVtIG51bWJlciAqLworKwkJCWNoYXIgbmFtZVs2NF07CQkvKiBSOiB2YWx1ZSBuYW1lICovCisrCQkJX191NjQgbmFtZXNfcHRyOwkvKiBXOiBuYW1lcyBsaXN0IChFTEVNX0FERCBvbmx5KSAqLworKwkJCXVuc2lnbmVkIGludCBuYW1lc19sZW5ndGg7CisrCQl9IGVudW1lcmF0ZWQ7CisrCQl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzEyOF07CisrCX0gdmFsdWU7CisrCXVuaW9uIHsKKysJCXVuc2lnbmVkIHNob3J0IGRbNF07CQkvKiBkaW1lbnNpb25zICovCisrCQl1bnNpZ25lZCBzaG9ydCAqZF9wdHI7CQkvKiBpbmRpcmVjdCAtIG9ic29sZXRlZCAqLworKwl9IGRpbWVuOworKwl1bnNpZ25lZCBjaGFyIHJlc2VydmVkWzY0LTQqc2l6ZW9mKHVuc2lnbmVkIHNob3J0KV07CisrfTsKKysKKytzdHJ1Y3Qgc25kX2N0bF9lbGVtX3ZhbHVlIHsKKysJc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBpZDsJLyogVzogZWxlbWVudCBJRCAqLworKwl1bnNpZ25lZCBpbnQgaW5kaXJlY3Q6IDE7CS8qIFc6IGluZGlyZWN0IGFjY2VzcyAtIG9ic29sZXRlZCAqLworKwl1bmlvbiB7CisrCQl1bmlvbiB7CisrCQkJbG9uZyB2YWx1ZVsxMjhdOworKwkJCWxvbmcgKnZhbHVlX3B0cjsJLyogb2Jzb2xldGVkICovCisrCQl9IGludGVnZXI7CisrCQl1bmlvbiB7CisrCQkJbG9uZyBsb25nIHZhbHVlWzY0XTsKKysJCQlsb25nIGxvbmcgKnZhbHVlX3B0cjsJLyogb2Jzb2xldGVkICovCisrCQl9IGludGVnZXI2NDsKKysJCXVuaW9uIHsKKysJCQl1bnNpZ25lZCBpbnQgaXRlbVsxMjhdOworKwkJCXVuc2lnbmVkIGludCAqaXRlbV9wdHI7CS8qIG9ic29sZXRlZCAqLworKwkJfSBlbnVtZXJhdGVkOworKwkJdW5pb24geworKwkJCXVuc2lnbmVkIGNoYXIgZGF0YVs1MTJdOworKwkJCXVuc2lnbmVkIGNoYXIgKmRhdGFfcHRyOwkvKiBvYnNvbGV0ZWQgKi8KKysJCX0gYnl0ZXM7CisrCQlzdHJ1Y3Qgc25kX2Flc19pZWM5NTggaWVjOTU4OworKwl9IHZhbHVlOwkJLyogUk8gKi8KKysJc3RydWN0IHRpbWVzcGVjIHRzdGFtcDsKKysJdW5zaWduZWQgY2hhciByZXNlcnZlZFsxMjgtc2l6ZW9mKHN0cnVjdCB0aW1lc3BlYyldOworK307CisrCisrc3RydWN0IHNuZF9jdGxfdGx2IHsKKysJdW5zaWduZWQgaW50IG51bWlkOwkvKiBjb250cm9sIGVsZW1lbnQgbnVtZXJpYyBpZGVudGlmaWNhdGlvbiAqLworKwl1bnNpZ25lZCBpbnQgbGVuZ3RoOwkvKiBpbiBieXRlcyBhbGlnbmVkIHRvIDQgKi8KKysJdW5zaWduZWQgaW50IHRsdlswXTsJLyogZmlyc3QgVExWICovCisrfTsKKysKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9QVkVSU0lPTglfSU9SKCdVJywgMHgwMCwgaW50KQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0NBUkRfSU5GTwlfSU9SKCdVJywgMHgwMSwgc3RydWN0IHNuZF9jdGxfY2FyZF9pbmZvKQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX0VMRU1fTElTVAlfSU9XUignVScsIDB4MTAsIHN0cnVjdCBzbmRfY3RsX2VsZW1fbGlzdCkKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX0lORk8JX0lPV1IoJ1UnLCAweDExLCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8pCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9SRUFECV9JT1dSKCdVJywgMHgxMiwgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSkKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX1dSSVRFCV9JT1dSKCdVJywgMHgxMywgc3RydWN0IHNuZF9jdGxfZWxlbV92YWx1ZSkKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX0xPQ0sJX0lPVygnVScsIDB4MTQsIHN0cnVjdCBzbmRfY3RsX2VsZW1faWQpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9VTkxPQ0sJX0lPVygnVScsIDB4MTUsIHN0cnVjdCBzbmRfY3RsX2VsZW1faWQpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfU1VCU0NSSUJFX0VWRU5UUyBfSU9XUignVScsIDB4MTYsIGludCkKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX0FERAlfSU9XUignVScsIDB4MTcsIHN0cnVjdCBzbmRfY3RsX2VsZW1faW5mbykKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9FTEVNX1JFUExBQ0UJX0lPV1IoJ1UnLCAweDE4LCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2luZm8pCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfRUxFTV9SRU1PVkUJX0lPV1IoJ1UnLCAweDE5LCBzdHJ1Y3Qgc25kX2N0bF9lbGVtX2lkKQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1RMVl9SRUFECV9JT1dSKCdVJywgMHgxYSwgc3RydWN0IHNuZF9jdGxfdGx2KQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1RMVl9XUklURQlfSU9XUignVScsIDB4MWIsIHN0cnVjdCBzbmRfY3RsX3RsdikKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9UTFZfQ09NTUFORAlfSU9XUignVScsIDB4MWMsIHN0cnVjdCBzbmRfY3RsX3RsdikKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9IV0RFUF9ORVhUX0RFVklDRSBfSU9XUignVScsIDB4MjAsIGludCkKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9IV0RFUF9JTkZPCV9JT1IoJ1UnLCAweDIxLCBzdHJ1Y3Qgc25kX2h3ZGVwX2luZm8pCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUENNX05FWFRfREVWSUNFCV9JT1IoJ1UnLCAweDMwLCBpbnQpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUENNX0lORk8JX0lPV1IoJ1UnLCAweDMxLCBzdHJ1Y3Qgc25kX3BjbV9pbmZvKQorKyNkZWZpbmUgU05EUlZfQ1RMX0lPQ1RMX1BDTV9QUkVGRVJfU1VCREVWSUNFIF9JT1coJ1UnLCAweDMyLCBpbnQpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUkFXTUlESV9ORVhUX0RFVklDRSBfSU9XUignVScsIDB4NDAsIGludCkKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9SQVdNSURJX0lORk8JX0lPV1IoJ1UnLCAweDQxLCBzdHJ1Y3Qgc25kX3Jhd21pZGlfaW5mbykKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9SQVdNSURJX1BSRUZFUl9TVUJERVZJQ0UgX0lPVygnVScsIDB4NDIsIGludCkKKysjZGVmaW5lIFNORFJWX0NUTF9JT0NUTF9QT1dFUgkJX0lPV1IoJ1UnLCAweGQwLCBpbnQpCisrI2RlZmluZSBTTkRSVl9DVExfSU9DVExfUE9XRVJfU1RBVEUJX0lPUignVScsIDB4ZDEsIGludCkKKysKKysvKgorKyAqICBSZWFkIGludGVyZmFjZS4KKysgKi8KKysKKytlbnVtIHNuZHJ2X2N0bF9ldmVudF90eXBlIHsKKysJU05EUlZfQ1RMX0VWRU5UX0VMRU0gPSAwLAorKwlTTkRSVl9DVExfRVZFTlRfTEFTVCA9IFNORFJWX0NUTF9FVkVOVF9FTEVNLAorK307CisrCisrI2RlZmluZSBTTkRSVl9DVExfRVZFTlRfTUFTS19WQUxVRQkoMTw8MCkJLyogZWxlbWVudCB2YWx1ZSB3YXMgY2hhbmdlZCAqLworKyNkZWZpbmUgU05EUlZfQ1RMX0VWRU5UX01BU0tfSU5GTwkoMTw8MSkJLyogZWxlbWVudCBpbmZvIHdhcyBjaGFuZ2VkICovCisrI2RlZmluZSBTTkRSVl9DVExfRVZFTlRfTUFTS19BREQJKDE8PDIpCS8qIGVsZW1lbnQgd2FzIGFkZGVkICovCisrI2RlZmluZSBTTkRSVl9DVExfRVZFTlRfTUFTS19UTFYJKDE8PDMpCS8qIGVsZW1lbnQgVExWIHRyZWUgd2FzIGNoYW5nZWQgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9FVkVOVF9NQVNLX1JFTU9WRQkofjBVKQkvKiBlbGVtZW50IHdhcyByZW1vdmVkICovCisrCisrc3RydWN0IHNuZF9jdGxfZXZlbnQgeworKwlpbnQgdHlwZTsJLyogZXZlbnQgdHlwZSAtIFNORFJWX0NUTF9FVkVOVF8qICovCisrCXVuaW9uIHsKKysJCXN0cnVjdCB7CisrCQkJdW5zaWduZWQgaW50IG1hc2s7CisrCQkJc3RydWN0IHNuZF9jdGxfZWxlbV9pZCBpZDsKKysJCX0gZWxlbTsKKysJCXVuc2lnbmVkIGNoYXIgZGF0YThbNjBdOworKwl9IGRhdGE7CisrfTsKKysKKysvKgorKyAqICBDb250cm9sIG5hbWVzCisrICovCisrCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9OT05FCQkJCSIiCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9QTEFZQkFDSwkJCQkiUGxheWJhY2sgIgorKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfQ0FQVFVSRQkJCQkiQ2FwdHVyZSAiCisrCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfTk9ORQkJCSIiCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfU1dJVENICQkJIlN3aXRjaCIKKysjZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9WT0xVTUUJCQkiVm9sdW1lIgorKyNkZWZpbmUgU05EUlZfQ1RMX05BTUVfSUVDOTU4X0RFRkFVTFQJCQkiRGVmYXVsdCIKKysjZGVmaW5lIFNORFJWX0NUTF9OQU1FX0lFQzk1OF9NQVNLCQkJIk1hc2siCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfQ09OX01BU0sJCQkiQ29uIE1hc2siCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfUFJPX01BU0sJCQkiUHJvIE1hc2siCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NThfUENNX1NUUkVBTQkJIlBDTSBTdHJlYW0iCisrI2RlZmluZSBTTkRSVl9DVExfTkFNRV9JRUM5NTgoZXhwbCxkaXJlY3Rpb24sd2hhdCkJIklFQzk1OCAiIGV4cGwgU05EUlZfQ1RMX05BTUVfIyNkaXJlY3Rpb24gU05EUlZfQ1RMX05BTUVfSUVDOTU4XyMjd2hhdAorKworKyNlbmRpZiAvKiBfVUFQSV9fU09VTkRfQVNPVU5EX0ggKi8KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvYXNvdW5kX2ZtLmggYi9pbmNsdWRlL3NvdW5kL3VhcGkvYXNvdW5kX2ZtLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uODQ3MWY0MDQKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9hc291bmRfZm0uaAorQEAgLTAsMCArMSwxMzUgQEAKKysvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKysjaWZuZGVmIF9fU09VTkRfQVNPVU5EX0ZNX0gKKysjZGVmaW5lIF9fU09VTkRfQVNPVU5EX0ZNX0gKKysKKysvKgorKyAqICBBZHZhbmNlZCBMaW51eCBTb3VuZCBBcmNoaXRlY3R1cmUgLSBBTFNBCisrICoKKysgKiAgSW50ZXJmYWNlIGZpbGUgYmV0d2VlbiBBTFNBIGRyaXZlciAmIHVzZXIgc3BhY2UKKysgKiAgQ29weXJpZ2h0IChjKSAxOTk0LTk4IGJ5IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+LAorKyAqICAgICAgICAgICAgICAgICAgICAgICAgICAgNEZyb250IFRlY2hub2xvZ2llcworKyAqCisrICogIERpcmVjdCBGTSBjb250cm9sCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgVVNBCisrICoKKysgKi8KKysKKysjZGVmaW5lIFNORFJWX0RNX0ZNX01PREVfT1BMMgkweDAwCisrI2RlZmluZSBTTkRSVl9ETV9GTV9NT0RFX09QTDMJMHgwMQorKworK3N0cnVjdCBzbmRfZG1fZm1faW5mbyB7CisrCXVuc2lnbmVkIGNoYXIgZm1fbW9kZTsJCS8qIE9QTCBtb2RlLCBzZWUgU05EUlZfRE1fRk1fTU9ERV9YWFggKi8KKysJdW5zaWduZWQgY2hhciByaHl0aG07CQkvKiBwZXJjdXNzaW9uIG1vZGUgZmxhZyAqLworK307CisrCisrLyoKKysgKiAgRGF0YSBzdHJ1Y3R1cmUgY29tcG9zaW5nIGFuIEZNICJub3RlIiBvciBzb3VuZCBldmVudC4KKysgKi8KKysKKytzdHJ1Y3Qgc25kX2RtX2ZtX3ZvaWNlIHsKKysJdW5zaWduZWQgY2hhciBvcDsJCS8qIG9wZXJhdG9yIGNlbGwgKDAgb3IgMSkgKi8KKysJdW5zaWduZWQgY2hhciB2b2ljZTsJCS8qIEZNIHZvaWNlICgwIHRvIDE3KSAqLworKworKwl1bnNpZ25lZCBjaGFyIGFtOwkJLyogYW1wbGl0dWRlIG1vZHVsYXRpb24gKi8KKysJdW5zaWduZWQgY2hhciB2aWJyYXRvOwkJLyogdmlicmF0byBlZmZlY3QgKi8KKysJdW5zaWduZWQgY2hhciBkb19zdXN0YWluOwkvKiBzdXN0YWluIHBoYXNlICovCisrCXVuc2lnbmVkIGNoYXIga2JkX3NjYWxlOwkvKiBrZXlib2FyZCBzY2FsaW5nICovCisrCXVuc2lnbmVkIGNoYXIgaGFybW9uaWM7CQkvKiA0IGJpdHM6IGhhcm1vbmljIGFuZCBtdWx0aXBsaWVyICovCisrCXVuc2lnbmVkIGNoYXIgc2NhbGVfbGV2ZWw7CS8qIDIgYml0czogZGVjcmVhc2Ugb3V0cHV0IGZyZXEgcmlzZXMgKi8KKysJdW5zaWduZWQgY2hhciB2b2x1bWU7CQkvKiA2IGJpdHM6IHZvbHVtZSAqLworKworKwl1bnNpZ25lZCBjaGFyIGF0dGFjazsJCS8qIDQgYml0czogYXR0YWNrIHJhdGUgKi8KKysJdW5zaWduZWQgY2hhciBkZWNheTsJCS8qIDQgYml0czogZGVjYXkgcmF0ZSAqLworKwl1bnNpZ25lZCBjaGFyIHN1c3RhaW47CQkvKiA0IGJpdHM6IHN1c3RhaW4gbGV2ZWwgKi8KKysJdW5zaWduZWQgY2hhciByZWxlYXNlOwkJLyogNCBiaXRzOiByZWxlYXNlIHJhdGUgKi8KKysKKysJdW5zaWduZWQgY2hhciBmZWVkYmFjazsJCS8qIDMgYml0czogZmVlZGJhY2sgZm9yIG9wMCAqLworKwl1bnNpZ25lZCBjaGFyIGNvbm5lY3Rpb247CS8qIDAgZm9yIHNlcmlhbCwgMSBmb3IgcGFyYWxsZWwgKi8KKysJdW5zaWduZWQgY2hhciBsZWZ0OwkJLyogc3RlcmVvIGxlZnQgKi8KKysJdW5zaWduZWQgY2hhciByaWdodDsJCS8qIHN0ZXJlbyByaWdodCAqLworKwl1bnNpZ25lZCBjaGFyIHdhdmVmb3JtOwkJLyogMyBiaXRzOiB3YXZlZm9ybSBzaGFwZSAqLworK307CisrCisrLyoKKysgKiAgVGhpcyBkZXNjcmliZXMgYW4gRk0gbm90ZSBieSBpdHMgdm9pY2UsIG9jdGF2ZSwgZnJlcXVlbmN5IG51bWJlciAoMTBiaXQpCisrICogIGFuZCBrZXkgb24vb2ZmLgorKyAqLworKworK3N0cnVjdCBzbmRfZG1fZm1fbm90ZSB7CisrCXVuc2lnbmVkIGNoYXIgdm9pY2U7CS8qIDAtMTcgdm9pY2UgY2hhbm5lbCAqLworKwl1bnNpZ25lZCBjaGFyIG9jdGF2ZTsJLyogMyBiaXRzOiB3aGF0IG9jdGF2ZSB0byBwbGF5ICovCisrCXVuc2lnbmVkIGludCBmbnVtOwkvKiAxMCBiaXRzOiBmcmVxdWVuY3kgbnVtYmVyICovCisrCXVuc2lnbmVkIGNoYXIga2V5X29uOwkvKiBzZXQgZm9yIGFjdGl2ZSwgY2xlYXIgZm9yIHNpbGVudCAqLworK307CisrCisrLyoKKysgKiAgRk0gcGFyYW1ldGVycyB0aGF0IGFwcGx5IGdsb2JhbGx5IHRvIGFsbCB2b2ljZXMsIGFuZCB0aHVzIGFyZSBub3QgIm5vdGVzIgorKyAqLworKworK3N0cnVjdCBzbmRfZG1fZm1fcGFyYW1zIHsKKysJdW5zaWduZWQgY2hhciBhbV9kZXB0aDsJCS8qIGFtcGxpdHVkZSBtb2R1bGF0aW9uIGRlcHRoICgxPWhpKSAqLworKwl1bnNpZ25lZCBjaGFyIHZpYl9kZXB0aDsJLyogdmlicmF0byBkZXB0aCAoMT1oaSkgKi8KKysJdW5zaWduZWQgY2hhciBrYmRfc3BsaXQ7CS8qIGtleWJvYXJkIHNwbGl0ICovCisrCXVuc2lnbmVkIGNoYXIgcmh5dGhtOwkJLyogcGVyY3Vzc2lvbiBtb2RlIHNlbGVjdCAqLworKworKwkvKiBUaGlzIGJsb2NrIGlzIHRoZSBwZXJjdXNzaW9uIGluc3RydW1lbnQgZGF0YSAqLworKwl1bnNpZ25lZCBjaGFyIGJhc3M7CisrCXVuc2lnbmVkIGNoYXIgc25hcmU7CisrCXVuc2lnbmVkIGNoYXIgdG9tdG9tOworKwl1bnNpZ25lZCBjaGFyIGN5bWJhbDsKKysJdW5zaWduZWQgY2hhciBoaWhhdDsKKyt9OworKworKy8qCisrICogIEZNIG1vZGUgaW9jdGwgc2V0dGluZ3MKKysgKi8KKysKKysjZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX0lORk8JCV9JT1IoJ0gnLCAweDIwLCBzdHJ1Y3Qgc25kX2RtX2ZtX2luZm8pCisrI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9SRVNFVAkJX0lPICgnSCcsIDB4MjEpCisrI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9QTEFZX05PVEUJX0lPVygnSCcsIDB4MjIsIHN0cnVjdCBzbmRfZG1fZm1fbm90ZSkKKysjZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX1NFVF9WT0lDRQlfSU9XKCdIJywgMHgyMywgc3RydWN0IHNuZF9kbV9mbV92b2ljZSkKKysjZGVmaW5lIFNORFJWX0RNX0ZNX0lPQ1RMX1NFVF9QQVJBTVMJX0lPVygnSCcsIDB4MjQsIHN0cnVjdCBzbmRfZG1fZm1fcGFyYW1zKQorKyNkZWZpbmUgU05EUlZfRE1fRk1fSU9DVExfU0VUX01PREUJX0lPVygnSCcsIDB4MjUsIGludCkKKysvKiBmb3IgT1BMMyBvbmx5ICovCisrI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9TRVRfQ09OTkVDVElPTglfSU9XKCdIJywgMHgyNiwgaW50KQorKy8qIFNCSSBwYXRjaCBtYW5hZ2VtZW50ICovCisrI2RlZmluZSBTTkRSVl9ETV9GTV9JT0NUTF9DTEVBUl9QQVRDSEVTCV9JTyAoJ0gnLCAweDQwKQorKworKyNkZWZpbmUgU05EUlZfRE1fRk1fT1NTX0lPQ1RMX1JFU0VUCQkweDIwCisrI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfUExBWV9OT1RFCQkweDIxCisrI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfU0VUX1ZPSUNFCQkweDIyCisrI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfU0VUX1BBUkFNUwkweDIzCisrI2RlZmluZSBTTkRSVl9ETV9GTV9PU1NfSU9DVExfU0VUX01PREUJCTB4MjQKKysjZGVmaW5lIFNORFJWX0RNX0ZNX09TU19JT0NUTF9TRVRfT1BMCQkweDI1CisrCisrLyoKKysgKiBQYXRjaCBSZWNvcmQgLSBmaXhlZCBzaXplIGZvciB3cml0ZQorKyAqLworKworKyNkZWZpbmUgRk1fS0VZX1NCSQkiU0JJXDAzMiIKKysjZGVmaW5lIEZNX0tFWV8yT1AJIjJPUFwwMzIiCisrI2RlZmluZSBGTV9LRVlfNE9QCSI0T1BcMDMyIgorKworK3N0cnVjdCBzYmlfcGF0Y2ggeworKwl1bnNpZ25lZCBjaGFyIHByb2c7CisrCXVuc2lnbmVkIGNoYXIgYmFuazsKKysJY2hhciBrZXlbNF07CisrCWNoYXIgbmFtZVsyNV07CisrCWNoYXIgZXh0ZW5zaW9uWzddOworKwl1bnNpZ25lZCBjaGFyIGRhdGFbMzJdOworK307CisrCisrI2VuZGlmIC8qIF9fU09VTkRfQVNPVU5EX0ZNX0ggKi8KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvZW11MTBrMS5oIGIvaW5jbHVkZS9zb3VuZC91YXBpL2VtdTEwazEuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi5jMTE1MGU0ZAorLS0tIC9kZXYvbnVsbAorKysrIGIvaW5jbHVkZS9zb3VuZC91YXBpL2VtdTEwazEuaAorQEAgLTAsMCArMSwzOTUgQEAKKysvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKysvKgorKyAqICBDb3B5cmlnaHQgKGMpIGJ5IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+LAorKyAqCQkgICAgIENyZWF0aXZlIExhYnMsIEluYy4KKysgKiAgRGVmaW5pdGlvbnMgZm9yIEVNVTEwSzEgKFNCIExpdmUhKSBjaGlwcworKyAqCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNTkgVGVtcGxlIFBsYWNlLCBTdWl0ZSAzMzAsIEJvc3RvbiwgTUEgIDAyMTExLTEzMDcgVVNBCisrICoKKysgKi8KKysjaWZuZGVmIF9VQVBJX19TT1VORF9FTVUxMEsxX0gKKysjZGVmaW5lIF9VQVBJX19TT1VORF9FTVUxMEsxX0gKKysKKysvKgorKyAqIC0tLS0gRlg4MDEwIC0tLS0KKysgKi8KKysKKysjZGVmaW5lIEVNVTEwSzFfQ0FSRF9DUkVBVElWRQkJCTB4MDAwMDAwMDAKKysjZGVmaW5lIEVNVTEwSzFfQ0FSRF9FTVVBUFMJCQkweDAwMDAwMDAxCisrCisrI2RlZmluZSBFTVUxMEsxX0ZYODAxMF9QQ01fQ09VTlQJCTgKKysKKysvKgorKyAqIEZvbGxvd2luZyBkZWZpbml0aW9uIGlzIGNvcGllZCBmcm9tIGxpbnV4L3R5cGVzLmggdG8gc3VwcG9ydCBjb21waWxpbmcKKysgKiB0aGlzIGhlYWRlciBmaWxlIGluIHVzZXJzcGFjZSBzaW5jZSB0aGV5IGFyZSBub3QgZ2VuZXJhbGx5IGF2YWlsYWJsZSBmb3IKKysgKiB1YXBpIGhlYWRlcnMuCisrICovCisrI2RlZmluZSBfX0VNVTEwSzFfREVDTEFSRV9CSVRNQVAobmFtZSxiaXRzKSBcCisrCXVuc2lnbmVkIGxvbmcgbmFtZVsoYml0cykgLyAoc2l6ZW9mKHVuc2lnbmVkIGxvbmcpICogOCldCisrCisrLyogaW5zdHJ1Y3Rpb24gc2V0ICovCisrI2RlZmluZSBpTUFDMAkgMHgwMAkvKiBSID0gQSArIChYICogWSA+PiAzMSkgICA7IHNhdHVyYXRpb24gKi8KKysjZGVmaW5lIGlNQUMxCSAweDAxCS8qIFIgPSBBICsgKC1YICogWSA+PiAzMSkgIDsgc2F0dXJhdGlvbiAqLworKyNkZWZpbmUgaU1BQzIJIDB4MDIJLyogUiA9IEEgKyAoWCAqIFkgPj4gMzEpICAgOyB3cmFwYXJvdW5kICovCisrI2RlZmluZSBpTUFDMwkgMHgwMwkvKiBSID0gQSArICgtWCAqIFkgPj4gMzEpICA7IHdyYXBhcm91bmQgKi8KKysjZGVmaW5lIGlNQUNJTlQwIDB4MDQJLyogUiA9IEEgKyBYICogWQkgICA7IHNhdHVyYXRpb24gKi8KKysjZGVmaW5lIGlNQUNJTlQxIDB4MDUJLyogUiA9IEEgKyBYICogWQkgICA7IHdyYXBhcm91bmQgKDMxLWJpdCkgKi8KKysjZGVmaW5lIGlBQ0MzCSAweDA2CS8qIFIgPSBBICsgWCArIFkJICAgOyBzYXR1cmF0aW9uICovCisrI2RlZmluZSBpTUFDTVYgICAweDA3CS8qIFIgPSBBLCBhY2MgKz0gWCAqIFkgPj4gMzEgKi8KKysjZGVmaW5lIGlBTkRYT1IgIDB4MDgJLyogUiA9IChBICYgWCkgXiBZICovCisrI2RlZmluZSBpVFNUTkVHICAweDA5CS8qIFIgPSAoQSA+PSBZKSA/IFggOiB+WCAqLworKyNkZWZpbmUgaUxJTUlUR0UgMHgwYQkvKiBSID0gKEEgPj0gWSkgPyBYIDogWSAqLworKyNkZWZpbmUgaUxJTUlUTFQgMHgwYgkvKiBSID0gKEEgPCBZKSA/IFggOiBZICovCisrI2RlZmluZSBpTE9HCSAweDBjCS8qIFIgPSBsaW5lYXJfZGF0YSwgQSAobG9nX2RhdGEpLCBYIChtYXhfZXhwKSwgWSAoZm9ybWF0X3dvcmQpICovCisrI2RlZmluZSBpRVhQCSAweDBkCS8qIFIgPSBsb2dfZGF0YSwgQSAobGluZWFyX2RhdGEpLCBYIChtYXhfZXhwKSwgWSAoZm9ybWF0X3dvcmQpICovCisrI2RlZmluZSBpSU5URVJQICAweDBlCS8qIFIgPSBBICsgKFggKiAoWSAtIEEpID4+IDMxKSAgOyBzYXR1cmF0aW9uICovCisrI2RlZmluZSBpU0tJUCAgICAweDBmCS8qIFIgPSBBIChjY19yZWcpLCBYIChjb3VudCksIFkgKGNjX3Rlc3QpICovCisrCisrLyogR1BScyAqLworKyNkZWZpbmUgRlhCVVMoeCkJKDB4MDAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAqLworKyNkZWZpbmUgRVhUSU4oeCkJKDB4MTAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAqLworKyNkZWZpbmUgRVhUT1VUKHgpCSgweDIwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MGYgcGh5c2ljYWwgb3V0cyAtPiBGWFdDIGxvdyAxNiBiaXRzICovCisrI2RlZmluZSBGWEJVUzIoeCkJKDB4MzAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiBjb3BpZXMgb2YgZnggYnVzZXMgZm9yIGNhcHR1cmUgLT4gRlhXQyBoaWdoIDE2IGJpdHMgKi8KKysJCQkJCS8qIE5COiAweDMxIGFuZCAweDMyIGFyZSBzaGFyZWQgd2l0aCBDZW50ZXIvTEZFIG9uIFNCIGxpdmUgNS4xICovCisrCisrI2RlZmluZSBDXzAwMDAwMDAwCTB4NDAKKysjZGVmaW5lIENfMDAwMDAwMDEJMHg0MQorKyNkZWZpbmUgQ18wMDAwMDAwMgkweDQyCisrI2RlZmluZSBDXzAwMDAwMDAzCTB4NDMKKysjZGVmaW5lIENfMDAwMDAwMDQJMHg0NAorKyNkZWZpbmUgQ18wMDAwMDAwOAkweDQ1CisrI2RlZmluZSBDXzAwMDAwMDEwCTB4NDYKKysjZGVmaW5lIENfMDAwMDAwMjAJMHg0NworKyNkZWZpbmUgQ18wMDAwMDEwMAkweDQ4CisrI2RlZmluZSBDXzAwMDEwMDAwCTB4NDkKKysjZGVmaW5lIENfMDAwODAwMDAJMHg0YQorKyNkZWZpbmUgQ18xMDAwMDAwMAkweDRiCisrI2RlZmluZSBDXzIwMDAwMDAwCTB4NGMKKysjZGVmaW5lIENfNDAwMDAwMDAJMHg0ZAorKyNkZWZpbmUgQ184MDAwMDAwMAkweDRlCisrI2RlZmluZSBDXzdmZmZmZmZmCTB4NGYKKysjZGVmaW5lIENfZmZmZmZmZmYJMHg1MAorKyNkZWZpbmUgQ19mZmZmZmZmZQkweDUxCisrI2RlZmluZSBDX2MwMDAwMDAwCTB4NTIKKysjZGVmaW5lIENfNGYxYmJjZGMJMHg1MworKyNkZWZpbmUgQ181YTdlZjlkYgkweDU0CisrI2RlZmluZSBDXzAwMTAwMDAwCTB4NTUJCS8qID8/ICovCisrI2RlZmluZSBHUFJfQUNDVQkweDU2CQkvKiBBQ0NVTSwgYWNjdW11bGF0b3IgKi8KKysjZGVmaW5lIEdQUl9DT05ECTB4NTcJCS8qIENDUiwgY29uZGl0aW9uIHJlZ2lzdGVyICovCisrI2RlZmluZSBHUFJfTk9JU0UwCTB4NTgJCS8qIG5vaXNlIHNvdXJjZSAqLworKyNkZWZpbmUgR1BSX05PSVNFMQkweDU5CQkvKiBub2lzZSBzb3VyY2UgKi8KKysjZGVmaW5lIEdQUl9JUlEJCTB4NWEJCS8qIElSUSByZWdpc3RlciAqLworKyNkZWZpbmUgR1BSX0RCQUMJMHg1YgkJLyogVFJBTSBEZWxheSBCYXNlIEFkZHJlc3MgQ291bnRlciAqLworKyNkZWZpbmUgR1BSKHgpCQkoRlhHUFJFR0JBU0UgKyAoeCkpIC8qIGZyZWUgR1BSczogeCA9IDB4MDAgLSAweGZmICovCisrI2RlZmluZSBJVFJBTV9EQVRBKHgpCShUQU5LTUVNREFUQVJFR0JBU0UgKyAweDAwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4N2YgKi8KKysjZGVmaW5lIEVUUkFNX0RBVEEoeCkJKFRBTktNRU1EQVRBUkVHQkFTRSArIDB4ODAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHgxZiAqLworKyNkZWZpbmUgSVRSQU1fQUREUih4KQkoVEFOS01FTUFERFJSRUdCQVNFICsgMHgwMCArICh4KSkgLyogeCA9IDB4MDAgLSAweDdmICovCisrI2RlZmluZSBFVFJBTV9BRERSKHgpCShUQU5LTUVNQUREUlJFR0JBU0UgKyAweDgwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4MWYgKi8KKysKKysjZGVmaW5lIEFfSVRSQU1fREFUQSh4KQkoVEFOS01FTURBVEFSRUdCQVNFICsgMHgwMCArICh4KSkgLyogeCA9IDB4MDAgLSAweGJmICovCisrI2RlZmluZSBBX0VUUkFNX0RBVEEoeCkJKFRBTktNRU1EQVRBUkVHQkFTRSArIDB4YzAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHgzZiAqLworKyNkZWZpbmUgQV9JVFJBTV9BRERSKHgpCShUQU5LTUVNQUREUlJFR0JBU0UgKyAweDAwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4YmYgKi8KKysjZGVmaW5lIEFfRVRSQU1fQUREUih4KQkoVEFOS01FTUFERFJSRUdCQVNFICsgMHhjMCArICh4KSkgLyogeCA9IDB4MDAgLSAweDNmICovCisrI2RlZmluZSBBX0lUUkFNX0NUTCh4KQkoQV9UQU5LTUVNQ1RMUkVHQkFTRSArIDB4MDAgKyAoeCkpIC8qIHggPSAweDAwIC0gMHhiZiAqLworKyNkZWZpbmUgQV9FVFJBTV9DVEwoeCkJKEFfVEFOS01FTUNUTFJFR0JBU0UgKyAweGMwICsgKHgpKSAvKiB4ID0gMHgwMCAtIDB4M2YgKi8KKysKKysjZGVmaW5lIEFfRlhCVVMoeCkJKDB4MDAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgzZiBGWCBidXNlcyAqLworKyNkZWZpbmUgQV9FWFRJTih4KQkoMHg0MCArICh4KSkJLyogeCA9IDB4MDAgLSAweDBmIHBoeXNpY2FsIGlucyAqLworKyNkZWZpbmUgQV9QMTZWSU4oeCkJKDB4NTAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiBwMTZ2IGlucyAoQTIgb25seSkgIkVNVTMyIGlucHV0cyIgKi8KKysjZGVmaW5lIEFfRVhUT1VUKHgpCSgweDYwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4MWYgcGh5c2ljYWwgb3V0cyAtPiBBX0ZYV0MxIDB4NzktN2YgdW5rbm93biAgICovCisrI2RlZmluZSBBX0ZYQlVTMih4KQkoMHg4MCArICh4KSkJLyogeCA9IDB4MDAgLSAweDFmIGV4dHJhIG91dHMgdXNlZCBmb3IgRUZYIGNhcHR1cmUgLT4gQV9GWFdDMiAqLworKyNkZWZpbmUgQV9FTVUzMk9VVEgoeCkJKDB4YTAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAiRU1VMzJfT1VUXzEwIC0gXzFGIiAtID8/PyAqLworKyNkZWZpbmUgQV9FTVUzMk9VVEwoeCkJKDB4YjAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAiRU1VMzJfT1VUXzEgLSBfRiIgLSA/Pz8gKi8KKysjZGVmaW5lIEEzX0VNVTMySU4oeCkJKDB4MTYwICsgKHgpKQkvKiB4ID0gMHgwMCAtIDB4M2YgIkVNVTMyX0lOXzAwIC0gXzNGIiAtIE9ubHkgd2hlbiAuZGV2aWNlID0gMHgwMDA4ICovCisrI2RlZmluZSBBM19FTVUzMk9VVCh4KQkoMHgxRTAgKyAoeCkpCS8qIHggPSAweDAwIC0gMHgwZiAiRU1VMzJfT1VUXzAwIC0gXzNGIiAtIE9ubHkgd2hlbiAuZGV2aWNlID0gMHgwMDA4ICovCisrI2RlZmluZSBBX0dQUih4KQkoQV9GWEdQUkVHQkFTRSArICh4KSkKKysKKysvKiBjY19yZWcgY29uc3RhbnRzICovCisrI2RlZmluZSBDQ19SRUdfTk9STUFMSVpFRCBDXzAwMDAwMDAxCisrI2RlZmluZSBDQ19SRUdfQk9SUk9XCUNfMDAwMDAwMDIKKysjZGVmaW5lIENDX1JFR19NSU5VUwlDXzAwMDAwMDA0CisrI2RlZmluZSBDQ19SRUdfWkVSTwlDXzAwMDAwMDA4CisrI2RlZmluZSBDQ19SRUdfU0FUVVJBVEUJQ18wMDAwMDAxMAorKyNkZWZpbmUgQ0NfUkVHX05PTlpFUk8JQ18wMDAwMDEwMAorKworKy8qIEZYIGJ1c2VzICovCisrI2RlZmluZSBGWEJVU19QQ01fTEVGVAkJMHgwMAorKyNkZWZpbmUgRlhCVVNfUENNX1JJR0hUCQkweDAxCisrI2RlZmluZSBGWEJVU19QQ01fTEVGVF9SRUFSCTB4MDIKKysjZGVmaW5lIEZYQlVTX1BDTV9SSUdIVF9SRUFSCTB4MDMKKysjZGVmaW5lIEZYQlVTX01JRElfTEVGVAkJMHgwNAorKyNkZWZpbmUgRlhCVVNfTUlESV9SSUdIVAkweDA1CisrI2RlZmluZSBGWEJVU19QQ01fQ0VOVEVSCTB4MDYKKysjZGVmaW5lIEZYQlVTX1BDTV9MRkUJCTB4MDcKKysjZGVmaW5lIEZYQlVTX1BDTV9MRUZUX0ZST05UCTB4MDgKKysjZGVmaW5lIEZYQlVTX1BDTV9SSUdIVF9GUk9OVAkweDA5CisrI2RlZmluZSBGWEJVU19NSURJX1JFVkVSQgkweDBjCisrI2RlZmluZSBGWEJVU19NSURJX0NIT1JVUwkweDBkCisrI2RlZmluZSBGWEJVU19QQ01fTEVGVF9TSURFCTB4MGUKKysjZGVmaW5lIEZYQlVTX1BDTV9SSUdIVF9TSURFCTB4MGYKKysjZGVmaW5lIEZYQlVTX1BUX0xFRlQJCTB4MTQKKysjZGVmaW5lIEZYQlVTX1BUX1JJR0hUCQkweDE1CisrCisrLyogSW5wdXRzICovCisrI2RlZmluZSBFWFRJTl9BQzk3X0wJICAgMHgwMAkvKiBBQyc5NyBjYXB0dXJlIGNoYW5uZWwgLSBsZWZ0ICovCisrI2RlZmluZSBFWFRJTl9BQzk3X1IJICAgMHgwMQkvKiBBQyc5NyBjYXB0dXJlIGNoYW5uZWwgLSByaWdodCAqLworKyNkZWZpbmUgRVhUSU5fU1BESUZfQ0RfTCAgIDB4MDIJLyogaW50ZXJuYWwgUy9QRElGIENEIC0gb25ib2FyZCAtIGxlZnQgKi8KKysjZGVmaW5lIEVYVElOX1NQRElGX0NEX1IgICAweDAzCS8qIGludGVybmFsIFMvUERJRiBDRCAtIG9uYm9hcmQgLSByaWdodCAqLworKyNkZWZpbmUgRVhUSU5fWk9PTV9MCSAgIDB4MDQJLyogWm9vbSBWaWRlbyBJMlMgLSBsZWZ0ICovCisrI2RlZmluZSBFWFRJTl9aT09NX1IJICAgMHgwNQkvKiBab29tIFZpZGVvIEkyUyAtIHJpZ2h0ICovCisrI2RlZmluZSBFWFRJTl9UT1NMSU5LX0wJICAgMHgwNgkvKiBMaXZlRHJpdmUgLSBUT1NMaW5rIE9wdGljYWwgLSBsZWZ0ICovCisrI2RlZmluZSBFWFRJTl9UT1NMSU5LX1IgICAgMHgwNwkvKiBMaXZlRHJpdmUgLSBUT1NMaW5rIE9wdGljYWwgLSByaWdodCAqLworKyNkZWZpbmUgRVhUSU5fTElORTFfTAkgICAweDA4CS8qIExpdmVEcml2ZSAtIExpbmUvTWljIDEgLSBsZWZ0ICovCisrI2RlZmluZSBFWFRJTl9MSU5FMV9SCSAgIDB4MDkJLyogTGl2ZURyaXZlIC0gTGluZS9NaWMgMSAtIHJpZ2h0ICovCisrI2RlZmluZSBFWFRJTl9DT0FYX1NQRElGX0wgMHgwYQkvKiBMaXZlRHJpdmUgLSBDb2F4aWFsIFMvUERJRiAtIGxlZnQgKi8KKysjZGVmaW5lIEVYVElOX0NPQVhfU1BESUZfUiAweDBiIC8qIExpdmVEcml2ZSAtIENvYXhpYWwgUy9QRElGIC0gcmlnaHQgKi8KKysjZGVmaW5lIEVYVElOX0xJTkUyX0wJICAgMHgwYwkvKiBMaXZlRHJpdmUgLSBMaW5lL01pYyAyIC0gbGVmdCAqLworKyNkZWZpbmUgRVhUSU5fTElORTJfUgkgICAweDBkCS8qIExpdmVEcml2ZSAtIExpbmUvTWljIDIgLSByaWdodCAqLworKworKy8qIE91dHB1dHMgKi8KKysjZGVmaW5lIEVYVE9VVF9BQzk3X0wJICAgMHgwMAkvKiBBQyc5NyBwbGF5YmFjayBjaGFubmVsIC0gbGVmdCAqLworKyNkZWZpbmUgRVhUT1VUX0FDOTdfUgkgICAweDAxCS8qIEFDJzk3IHBsYXliYWNrIGNoYW5uZWwgLSByaWdodCAqLworKyNkZWZpbmUgRVhUT1VUX1RPU0xJTktfTCAgIDB4MDIJLyogTGl2ZURyaXZlIC0gVE9TTGluayBPcHRpY2FsIC0gbGVmdCAqLworKyNkZWZpbmUgRVhUT1VUX1RPU0xJTktfUiAgIDB4MDMJLyogTGl2ZURyaXZlIC0gVE9TTGluayBPcHRpY2FsIC0gcmlnaHQgKi8KKysjZGVmaW5lIEVYVE9VVF9BQzk3X0NFTlRFUiAweDA0CS8qIFNCIExpdmUgNS4xIC0gY2VudGVyICovCisrI2RlZmluZSBFWFRPVVRfQUM5N19MRkUJICAgMHgwNSAvKiBTQiBMaXZlIDUuMSAtIExGRSAqLworKyNkZWZpbmUgRVhUT1VUX0hFQURQSE9ORV9MIDB4MDYJLyogTGl2ZURyaXZlIC0gSGVhZHBob25lIC0gbGVmdCAqLworKyNkZWZpbmUgRVhUT1VUX0hFQURQSE9ORV9SIDB4MDcJLyogTGl2ZURyaXZlIC0gSGVhZHBob25lIC0gcmlnaHQgKi8KKysjZGVmaW5lIEVYVE9VVF9SRUFSX0wJICAgMHgwOAkvKiBSZWFyIGNoYW5uZWwgLSBsZWZ0ICovCisrI2RlZmluZSBFWFRPVVRfUkVBUl9SCSAgIDB4MDkJLyogUmVhciBjaGFubmVsIC0gcmlnaHQgKi8KKysjZGVmaW5lIEVYVE9VVF9BRENfQ0FQX0wgICAweDBhCS8qIEFEQyBDYXB0dXJlIGJ1ZmZlciAtIGxlZnQgKi8KKysjZGVmaW5lIEVYVE9VVF9BRENfQ0FQX1IgICAweDBiCS8qIEFEQyBDYXB0dXJlIGJ1ZmZlciAtIHJpZ2h0ICovCisrI2RlZmluZSBFWFRPVVRfTUlDX0NBUAkgICAweDBjCS8qIE1JQyBDYXB0dXJlIGJ1ZmZlciAqLworKyNkZWZpbmUgRVhUT1VUX0FDOTdfUkVBUl9MIDB4MGQJLyogU0IgTGl2ZSA1LjEgKGMpIDIwMDMgLSBSZWFyIExlZnQgKi8KKysjZGVmaW5lIEVYVE9VVF9BQzk3X1JFQVJfUiAweDBlCS8qIFNCIExpdmUgNS4xIChjKSAyMDAzIC0gUmVhciBSaWdodCAqLworKyNkZWZpbmUgRVhUT1VUX0FDRU5URVIJICAgMHgxMSAvKiBBbmFsb2cgQ2VudGVyICovCisrI2RlZmluZSBFWFRPVVRfQUxGRQkgICAweDEyIC8qIEFuYWxvZyBMRkUgKi8KKysKKysvKiBBdWRpZ3kgSW5wdXRzICovCisrI2RlZmluZSBBX0VYVElOX0FDOTdfTAkJMHgwMAkvKiBBQyc5NyBjYXB0dXJlIGNoYW5uZWwgLSBsZWZ0ICovCisrI2RlZmluZSBBX0VYVElOX0FDOTdfUgkJMHgwMQkvKiBBQyc5NyBjYXB0dXJlIGNoYW5uZWwgLSByaWdodCAqLworKyNkZWZpbmUgQV9FWFRJTl9TUERJRl9DRF9MCTB4MDIJLyogZGlnaXRhbCBDRCBsZWZ0ICovCisrI2RlZmluZSBBX0VYVElOX1NQRElGX0NEX1IJMHgwMwkvKiBkaWdpdGFsIENEIGxlZnQgKi8KKysjZGVmaW5lIEFfRVhUSU5fT1BUX1NQRElGX0wgICAgIDB4MDQgICAgLyogYXVkaWd5IGRyaXZlIE9wdGljYWwgU1BESUYgLSBsZWZ0ICovCisrI2RlZmluZSBBX0VYVElOX09QVF9TUERJRl9SICAgICAweDA1ICAgIC8qICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgKi8gCisrI2RlZmluZSBBX0VYVElOX0xJTkUyX0wJCTB4MDgJLyogYXVkaWd5IGRyaXZlIGxpbmUyL21pYzIgLSBsZWZ0ICovCisrI2RlZmluZSBBX0VYVElOX0xJTkUyX1IJCTB4MDkJLyogICAgICAgICAgICAgICAgICAgICAgICAgICByaWdodCAqLworKyNkZWZpbmUgQV9FWFRJTl9BRENfTAkJMHgwYSAgICAvKiBQaGlsaXBzIEFEQyAtIGxlZnQgKi8KKysjZGVmaW5lIEFfRVhUSU5fQURDX1IJCTB4MGIgICAgLyogICAgICAgICAgICAgICByaWdodCAqLworKyNkZWZpbmUgQV9FWFRJTl9BVVgyX0wJCTB4MGMJLyogYXVkaWd5IGRyaXZlIGF1eDIgLSBsZWZ0ICovCisrI2RlZmluZSBBX0VYVElOX0FVWDJfUgkJMHgwZAkvKiAgICAgICAgICAgICAgICAgICAtIHJpZ2h0ICovCisrCisrLyogQXVkaWdpeSBPdXRwdXRzICovCisrI2RlZmluZSBBX0VYVE9VVF9GUk9OVF9MCTB4MDAJLyogZGlnaXRhbCBmcm9udCBsZWZ0ICovCisrI2RlZmluZSBBX0VYVE9VVF9GUk9OVF9SCTB4MDEJLyogICAgICAgICAgICAgICByaWdodCAqLworKyNkZWZpbmUgQV9FWFRPVVRfQ0VOVEVSCQkweDAyCS8qIGRpZ2l0YWwgZnJvbnQgY2VudGVyICovCisrI2RlZmluZSBBX0VYVE9VVF9MRkUJCTB4MDMJLyogZGlnaXRhbCBmcm9udCBsZmUgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0hFQURQSE9ORV9MCTB4MDQJLyogaGVhZHBob25lIGF1ZGlneSBkcml2ZSBsZWZ0ICovCisrI2RlZmluZSBBX0VYVE9VVF9IRUFEUEhPTkVfUgkweDA1CS8qICAgICAgICAgICAgICAgICAgICAgICAgcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX1JFQVJfTAkJMHgwNgkvKiBkaWdpdGFsIHJlYXIgbGVmdCAqLworKyNkZWZpbmUgQV9FWFRPVVRfUkVBUl9SCQkweDA3CS8qICAgICAgICAgICAgICByaWdodCAqLworKyNkZWZpbmUgQV9FWFRPVVRfQUZST05UX0wJMHgwOAkvKiBhbmFsb2cgZnJvbnQgbGVmdCAqLworKyNkZWZpbmUgQV9FWFRPVVRfQUZST05UX1IJMHgwOQkvKiAgICAgICAgICAgICAgcmlnaHQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0FDRU5URVIJMHgwYQkvKiBhbmFsb2cgY2VudGVyICovCisrI2RlZmluZSBBX0VYVE9VVF9BTEZFCQkweDBiCS8qIGFuYWxvZyBMRkUgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0FTSURFX0wJMHgwYwkvKiBhbmFsb2cgc2lkZSBsZWZ0ICAtIEF1ZGlneSAyIFpTICovCisrI2RlZmluZSBBX0VYVE9VVF9BU0lERV9SCTB4MGQJLyogICAgICAgICAgICAgcmlnaHQgLSBBdWRpZ3kgMiBaUyAqLworKyNkZWZpbmUgQV9FWFRPVVRfQVJFQVJfTAkweDBlCS8qIGFuYWxvZyByZWFyIGxlZnQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0FSRUFSX1IJMHgwZgkvKiAgICAgICAgICAgICByaWdodCAqLworKyNkZWZpbmUgQV9FWFRPVVRfQUM5N19MCQkweDEwCS8qIEFDOTcgbGVmdCAoZnJvbnQpICovCisrI2RlZmluZSBBX0VYVE9VVF9BQzk3X1IJCTB4MTEJLyogICAgICByaWdodCAqLworKyNkZWZpbmUgQV9FWFRPVVRfQURDX0NBUF9MCTB4MTYJLyogQURDIGNhcHR1cmUgYnVmZmVyIGxlZnQgKi8KKysjZGVmaW5lIEFfRVhUT1VUX0FEQ19DQVBfUgkweDE3CS8qICAgICAgICAgICAgICAgICAgICByaWdodCAqLworKyNkZWZpbmUgQV9FWFRPVVRfTUlDX0NBUAkweDE4CS8qIE1pYyBjYXB0dXJlIGJ1ZmZlciAqLworKworKy8qIEF1ZGlneSBjb25zdGFudHMgKi8KKysjZGVmaW5lIEFfQ18wMDAwMDAwMAkweGMwCisrI2RlZmluZSBBX0NfMDAwMDAwMDEJMHhjMQorKyNkZWZpbmUgQV9DXzAwMDAwMDAyCTB4YzIKKysjZGVmaW5lIEFfQ18wMDAwMDAwMwkweGMzCisrI2RlZmluZSBBX0NfMDAwMDAwMDQJMHhjNAorKyNkZWZpbmUgQV9DXzAwMDAwMDA4CTB4YzUKKysjZGVmaW5lIEFfQ18wMDAwMDAxMAkweGM2CisrI2RlZmluZSBBX0NfMDAwMDAwMjAJMHhjNworKyNkZWZpbmUgQV9DXzAwMDAwMTAwCTB4YzgKKysjZGVmaW5lIEFfQ18wMDAxMDAwMAkweGM5CisrI2RlZmluZSBBX0NfMDAwMDA4MDAJMHhjYQorKyNkZWZpbmUgQV9DXzEwMDAwMDAwCTB4Y2IKKysjZGVmaW5lIEFfQ18yMDAwMDAwMAkweGNjCisrI2RlZmluZSBBX0NfNDAwMDAwMDAJMHhjZAorKyNkZWZpbmUgQV9DXzgwMDAwMDAwCTB4Y2UKKysjZGVmaW5lIEFfQ183ZmZmZmZmZgkweGNmCisrI2RlZmluZSBBX0NfZmZmZmZmZmYJMHhkMAorKyNkZWZpbmUgQV9DX2ZmZmZmZmZlCTB4ZDEKKysjZGVmaW5lIEFfQ19jMDAwMDAwMAkweGQyCisrI2RlZmluZSBBX0NfNGYxYmJjZGMJMHhkMworKyNkZWZpbmUgQV9DXzVhN2VmOWRiCTB4ZDQKKysjZGVmaW5lIEFfQ18wMDEwMDAwMAkweGQ1CisrI2RlZmluZSBBX0dQUl9BQ0NVCTB4ZDYJCS8qIEFDQ1VNLCBhY2N1bXVsYXRvciAqLworKyNkZWZpbmUgQV9HUFJfQ09ORAkweGQ3CQkvKiBDQ1IsIGNvbmRpdGlvbiByZWdpc3RlciAqLworKyNkZWZpbmUgQV9HUFJfTk9JU0UwCTB4ZDgJCS8qIG5vaXNlIHNvdXJjZSAqLworKyNkZWZpbmUgQV9HUFJfTk9JU0UxCTB4ZDkJCS8qIG5vaXNlIHNvdXJjZSAqLworKyNkZWZpbmUgQV9HUFJfSVJRCTB4ZGEJCS8qIElSUSByZWdpc3RlciAqLworKyNkZWZpbmUgQV9HUFJfREJBQwkweGRiCQkvKiBUUkFNIERlbGF5IEJhc2UgQWRkcmVzcyBDb3VudGVyIC0gaW50ZXJuYWwgKi8KKysjZGVmaW5lIEFfR1BSX0RCQUNFCTB4ZGUJCS8qIFRSQU0gRGVsYXkgQmFzZSBBZGRyZXNzIENvdW50ZXIgLSBleHRlcm5hbCAqLworKworKy8qIGRlZmluaXRpb25zIGZvciBkZWJ1ZyByZWdpc3RlciAqLworKyNkZWZpbmUgRU1VMTBLMV9EQkdfWkMJCQkweDgwMDAwMDAwCS8qIHplcm8gdHJhbSBjb3VudGVyICovCisrI2RlZmluZSBFTVUxMEsxX0RCR19TQVRVUkFUSU9OX09DQ1VSRUQJMHgwMjAwMDAwMAkvKiBzYXR1cmF0aW9uIGNvbnRyb2wgKi8KKysjZGVmaW5lIEVNVTEwSzFfREJHX1NBVFVSQVRJT05fQUREUgkweDAxZmYwMDAwCS8qIHNhdHVyYXRpb24gYWRkcmVzcyAqLworKyNkZWZpbmUgRU1VMTBLMV9EQkdfU0lOR0xFX1NURVAJCTB4MDAwMDgwMDAJLyogc2luZ2xlIHN0ZXAgbW9kZSAqLworKyNkZWZpbmUgRU1VMTBLMV9EQkdfU1RFUAkJMHgwMDAwNDAwMAkvKiBzdGFydCBzaW5nbGUgc3RlcCAqLworKyNkZWZpbmUgRU1VMTBLMV9EQkdfQ09ORElUSU9OX0NPREUJMHgwMDAwM2UwMAkvKiBjb25kaXRpb24gY29kZSAqLworKyNkZWZpbmUgRU1VMTBLMV9EQkdfU0lOR0xFX1NURVBfQUREUgkweDAwMDAwMWZmCS8qIHNpbmdsZSBzdGVwIGFkZHJlc3MgKi8KKysKKysvKiB0YW5rIG1lbW9yeSBhZGRyZXNzIGxpbmUgKi8KKysjaWZuZGVmIF9fS0VSTkVMX18KKysjZGVmaW5lIFRBTktNRU1BRERSUkVHX0FERFJfTUFTSyAweDAwMGZmZmZmCS8qIDIwIGJpdCB0YW5rIGFkZHJlc3MgZmllbGQJCQkqLworKyNkZWZpbmUgVEFOS01FTUFERFJSRUdfQ0xFQVIJIDB4MDA4MDAwMDAJLyogQ2xlYXIgdGFuayBtZW1vcnkJCQkJKi8KKysjZGVmaW5lIFRBTktNRU1BRERSUkVHX0FMSUdOCSAweDAwNDAwMDAwCS8qIEFsaWduIHJlYWQgb3Igd3JpdGUgcmVsYXRpdmUgdG8gdGFuayBhY2Nlc3MJKi8KKysjZGVmaW5lIFRBTktNRU1BRERSUkVHX1dSSVRFCSAweDAwMjAwMDAwCS8qIFdyaXRlIHRvIHRhbmsgbWVtb3J5CQkJCSovCisrI2RlZmluZSBUQU5LTUVNQUREUlJFR19SRUFECSAweDAwMTAwMDAwCS8qIFJlYWQgZnJvbSB0YW5rIG1lbW9yeQkJCSovCisrI2VuZGlmCisrCisrc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9pbmZvIHsKKysJdW5zaWduZWQgaW50IGludGVybmFsX3RyYW1fc2l6ZTsJLyogaW4gc2FtcGxlcyAqLworKwl1bnNpZ25lZCBpbnQgZXh0ZXJuYWxfdHJhbV9zaXplOwkvKiBpbiBzYW1wbGVzICovCisrCWNoYXIgZnhidXNfbmFtZXNbMTZdWzMyXTsJCS8qIG5hbWVzIG9mIEZYQlVTZXMgKi8KKysJY2hhciBleHRpbl9uYW1lc1sxNl1bMzJdOwkJLyogbmFtZXMgb2YgZXh0ZXJuYWwgaW5wdXRzICovCisrCWNoYXIgZXh0b3V0X25hbWVzWzMyXVszMl07CQkvKiBuYW1lcyBvZiBleHRlcm5hbCBvdXRwdXRzICovCisrCXVuc2lnbmVkIGludCBncHJfY29udHJvbHM7CQkvKiBjb3VudCBvZiBHUFIgY29udHJvbHMgKi8KKyt9OworKworKyNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fTk9ORQkJMAorKyNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fVEFCTEUxMDAJMQorKyNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fQkFTUwkJMgorKyNkZWZpbmUgRU1VMTBLMV9HUFJfVFJBTlNMQVRJT05fVFJFQkxFCQkzCisrI2RlZmluZSBFTVUxMEsxX0dQUl9UUkFOU0xBVElPTl9PTk9GRgkJNAorKworK2VudW0gZW11MTBrMV9jdGxfZWxlbV9pZmFjZSB7CisrCUVNVTEwSzFfQ1RMX0VMRU1fSUZBQ0VfTUlYRVIgPSAyLAkvKiB2aXJ0dWFsIG1peGVyIGRldmljZSAqLworKwlFTVUxMEsxX0NUTF9FTEVNX0lGQUNFX1BDTSA9IDMsCQkvKiBQQ00gZGV2aWNlICovCisrfTsKKysKKytzdHJ1Y3QgZW11MTBrMV9jdGxfZWxlbV9pZCB7CisrCXVuc2lnbmVkIGludCBwYWQ7CQkvKiBkb24ndCB1c2UgKi8KKysJaW50IGlmYWNlOwkJCS8qIGludGVyZmFjZSBpZGVudGlmaWVyICovCisrCXVuc2lnbmVkIGludCBkZXZpY2U7CQkvKiBkZXZpY2UvY2xpZW50IG51bWJlciAqLworKwl1bnNpZ25lZCBpbnQgc3ViZGV2aWNlOwkJLyogc3ViZGV2aWNlIChzdWJzdHJlYW0pIG51bWJlciAqLworKwl1bnNpZ25lZCBjaGFyIG5hbWVbNDRdOwkJLyogQVNDSUkgbmFtZSBvZiBpdGVtICovCisrCXVuc2lnbmVkIGludCBpbmRleDsJCS8qIGluZGV4IG9mIGl0ZW0gKi8KKyt9OworKworK3N0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHIgeworKwlzdHJ1Y3QgZW11MTBrMV9jdGxfZWxlbV9pZCBpZDsJLyogZnVsbCBjb250cm9sIElEIGRlZmluaXRpb24gKi8KKysJdW5zaWduZWQgaW50IHZjb3VudDsJCS8qIHZpc2libGUgY291bnQgKi8KKysJdW5zaWduZWQgaW50IGNvdW50OwkJLyogY291bnQgb2YgR1BSICgxLi4xNikgKi8KKysJdW5zaWduZWQgc2hvcnQgZ3ByWzMyXTsJCS8qIEdQUiBudW1iZXIocykgKi8KKysJdW5zaWduZWQgaW50IHZhbHVlWzMyXTsJCS8qIGluaXRpYWwgdmFsdWVzICovCisrCXVuc2lnbmVkIGludCBtaW47CQkvKiBtaW5pbXVtIHJhbmdlICovCisrCXVuc2lnbmVkIGludCBtYXg7CQkvKiBtYXhpbXVtIHJhbmdlICovCisrCXVuc2lnbmVkIGludCB0cmFuc2xhdGlvbjsJLyogdHJhbnNsYXRpb24gdHlwZSAoRU1VMTBLMV9HUFJfVFJBTlNMQVRJT04qKSAqLworKwljb25zdCB1bnNpZ25lZCBpbnQgKnRsdjsKKyt9OworKworKy8qIG9sZCBBQkkgd2l0aG91dCBUTFYgc3VwcG9ydCAqLworK3N0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9vbGRfZ3ByIHsKKysJc3RydWN0IGVtdTEwazFfY3RsX2VsZW1faWQgaWQ7CisrCXVuc2lnbmVkIGludCB2Y291bnQ7CisrCXVuc2lnbmVkIGludCBjb3VudDsKKysJdW5zaWduZWQgc2hvcnQgZ3ByWzMyXTsKKysJdW5zaWduZWQgaW50IHZhbHVlWzMyXTsKKysJdW5zaWduZWQgaW50IG1pbjsKKysJdW5zaWduZWQgaW50IG1heDsKKysJdW5zaWduZWQgaW50IHRyYW5zbGF0aW9uOworK307CisrCisrc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb2RlIHsKKysJY2hhciBuYW1lWzEyOF07CisrCisrCV9fRU1VMTBLMV9ERUNMQVJFX0JJVE1BUChncHJfdmFsaWQsIDB4MjAwKTsgLyogYml0bWFzayBvZiB2YWxpZCBpbml0aWFsaXplcnMgKi8KKysJX191MzIgKmdwcl9tYXA7CQkJLyogaW5pdGlhbGl6ZXJzICovCisrCisrCXVuc2lnbmVkIGludCBncHJfYWRkX2NvbnRyb2xfY291bnQ7IC8qIGNvdW50IG9mIEdQUiBjb250cm9scyB0byBhZGQvcmVwbGFjZSAqLworKwlzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByICpncHJfYWRkX2NvbnRyb2xzOyAvKiBHUFIgY29udHJvbHMgdG8gYWRkL3JlcGxhY2UgKi8KKysKKysJdW5zaWduZWQgaW50IGdwcl9kZWxfY29udHJvbF9jb3VudDsgLyogY291bnQgb2YgR1BSIGNvbnRyb2xzIHRvIHJlbW92ZSAqLworKwlzdHJ1Y3QgZW11MTBrMV9jdGxfZWxlbV9pZCAqZ3ByX2RlbF9jb250cm9sczsgLyogSURzIG9mIEdQUiBjb250cm9scyB0byByZW1vdmUgKi8KKysKKysJdW5zaWduZWQgaW50IGdwcl9saXN0X2NvbnRyb2xfY291bnQ7IC8qIGNvdW50IG9mIEdQUiBjb250cm9scyB0byBsaXN0ICovCisrCXVuc2lnbmVkIGludCBncHJfbGlzdF9jb250cm9sX3RvdGFsOyAvKiB0b3RhbCBjb3VudCBvZiBHUFIgY29udHJvbHMgKi8KKysJc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb250cm9sX2dwciAqZ3ByX2xpc3RfY29udHJvbHM7IC8qIGxpc3RlZCBHUFIgY29udHJvbHMgKi8KKysKKysJX19FTVUxMEsxX0RFQ0xBUkVfQklUTUFQKHRyYW1fdmFsaWQsIDB4MTAwKTsgLyogYml0bWFzayBvZiB2YWxpZCBpbml0aWFsaXplcnMgKi8KKysJX191MzIgKnRyYW1fZGF0YV9tYXA7CQkgIC8qIGRhdGEgaW5pdGlhbGl6ZXJzICovCisrCV9fdTMyICp0cmFtX2FkZHJfbWFwOwkJICAvKiBtYXAgaW5pdGlhbGl6ZXJzICovCisrCisrCV9fRU1VMTBLMV9ERUNMQVJFX0JJVE1BUChjb2RlX3ZhbGlkLCAxMDI0KTsgLyogYml0bWFzayBvZiB2YWxpZCBpbnN0cnVjdGlvbnMgKi8KKysJX191MzIgKmNvZGU7CQkJICAvKiBvbmUgaW5zdHJ1Y3Rpb24gLSA2NCBiaXRzICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3RyYW0geworKwl1bnNpZ25lZCBpbnQgYWRkcmVzczsJCS8qIDMxLmJpdCA9PSAxIC0+IGV4dGVybmFsIFRSQU0gKi8KKysJdW5zaWduZWQgaW50IHNpemU7CQkvKiBzaXplIGluIHNhbXBsZXMgKDQgYnl0ZXMpICovCisrCXVuc2lnbmVkIGludCAqc2FtcGxlczsJCS8qIHBvaW50ZXIgdG8gc2FtcGxlcyAoMjAtYml0KSAqLworKwkJCQkJLyogTlVMTC0+Y2xlYXIgbWVtb3J5ICovCisrfTsKKysKKytzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3BjbV9yZWMgeworKwl1bnNpZ25lZCBpbnQgc3Vic3RyZWFtOwkJLyogc3Vic3RyZWFtIG51bWJlciAqLworKwl1bnNpZ25lZCBpbnQgcmVzMTsJCS8qIHJlc2VydmVkICovCisrCXVuc2lnbmVkIGludCBjaGFubmVsczsJCS8qIDE2LWJpdCBjaGFubmVscyBjb3VudCwgemVybyA9IHJlbW92ZSB0aGlzIHN1YnN0cmVhbSAqLworKwl1bnNpZ25lZCBpbnQgdHJhbV9zdGFydDsJLyogcmluZyBidWZmZXIgcG9zaXRpb24gaW4gVFJBTSAoaW4gc2FtcGxlcykgKi8KKysJdW5zaWduZWQgaW50IGJ1ZmZlcl9zaXplOwkvKiBjb3VudCBvZiBidWZmZXJlZCBzYW1wbGVzICovCisrCXVuc2lnbmVkIHNob3J0IGdwcl9zaXplOwkJLyogR1BSIGNvbnRhaW5pbmcgc2l6ZSBvZiByaW5nYnVmZmVyIGluIHNhbXBsZXMgKGhvc3QpICovCisrCXVuc2lnbmVkIHNob3J0IGdwcl9wdHI7CQkvKiBHUFIgY29udGFpbmluZyBjdXJyZW50IHBvaW50ZXIgaW4gdGhlIHJpbmcgYnVmZmVyIChob3N0ID0gcmVzZXQsIEZYODAxMCkgKi8KKysJdW5zaWduZWQgc2hvcnQgZ3ByX2NvdW50OwkvKiBHUFIgY29udGFpbmluZyBjb3VudCBvZiBzYW1wbGVzIGJldHdlZW4gdHdvIGludGVycnVwdHMgKGhvc3QpICovCisrCXVuc2lnbmVkIHNob3J0IGdwcl90bXBjb3VudDsJLyogR1BSIGNvbnRhaW5pbmcgY3VycmVudCBjb3VudCBvZiBzYW1wbGVzIHRvIGludGVycnVwdCAoaG9zdCA9IHNldCwgRlg4MDEwKSAqLworKwl1bnNpZ25lZCBzaG9ydCBncHJfdHJpZ2dlcjsJLyogR1BSIGNvbnRhaW5pbmcgdHJpZ2dlciAoYWN0aXZhdGUpIGluZm9ybWF0aW9uIChob3N0KSAqLworKwl1bnNpZ25lZCBzaG9ydCBncHJfcnVubmluZzsJLyogR1BSIGNvbnRhaW5pbmcgaW5mbyBpZiBQQ00gaXMgcnVubmluZyAoRlg4MDEwKSAqLworKwl1bnNpZ25lZCBjaGFyIHBhZDsJCS8qIHJlc2VydmVkICovCisrCXVuc2lnbmVkIGNoYXIgZXRyYW1bMzJdOwkvKiBleHRlcm5hbCBUUkFNIGFkZHJlc3MgJiBkYXRhIChvbmUgcGVyIGNoYW5uZWwpICovCisrCXVuc2lnbmVkIGludCByZXMyOwkJLyogcmVzZXJ2ZWQgKi8KKyt9OworKworKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9WRVJTSU9OCQlTTkRSVl9QUk9UT0NPTF9WRVJTSU9OKDEsIDAsIDEpCisrCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX0lORk8JX0lPUiAoJ0gnLCAweDEwLCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2luZm8pCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX0NPREVfUE9LRQlfSU9XICgnSCcsIDB4MTEsIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29kZSkKKysjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfQ09ERV9QRUVLCV9JT1dSKCdIJywgMHgxMiwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb2RlKQorKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9UUkFNX1NFVFVQCV9JT1cgKCdIJywgMHgyMCwgaW50KQorKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9UUkFNX1BPS0UJX0lPVyAoJ0gnLCAweDIxLCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3RyYW0pCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1RSQU1fUEVFSwlfSU9XUignSCcsIDB4MjIsIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfdHJhbSkKKysjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfUENNX1BPS0UJX0lPVyAoJ0gnLCAweDMwLCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3BjbV9yZWMpCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1BDTV9QRUVLCV9JT1dSKCdIJywgMHgzMSwgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9wY21fcmVjKQorKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9QVkVSU0lPTglfSU9SICgnSCcsIDB4NDAsIGludCkKKysjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfU1RPUAlfSU8gICgnSCcsIDB4ODApCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX0NPTlRJTlVFCV9JTyAgKCdIJywgMHg4MSkKKysjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfWkVST19UUkFNX0NPVU5URVIgX0lPICgnSCcsIDB4ODIpCisrI2RlZmluZSBTTkRSVl9FTVUxMEsxX0lPQ1RMX1NJTkdMRV9TVEVQCV9JT1cgKCdIJywgMHg4MywgaW50KQorKyNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9EQkdfUkVBRAlfSU9SICgnSCcsIDB4ODQsIGludCkKKysKKysjaWZuZGVmIF9fS0VSTkVMX18KKysvKiB0eXBlZGVmcyBmb3IgY29tcGF0aWJpbGl0eSB0byB1c2VyLXNwYWNlICovCisrdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2luZm8gZW11MTBrMV9meDgwMTBfaW5mb190OworK3R5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb250cm9sX2dwciBlbXUxMGsxX2Z4ODAxMF9jb250cm9sX2dwcl90OworK3R5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9jb2RlIGVtdTEwazFfZng4MDEwX2NvZGVfdDsKKyt0eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfdHJhbSBlbXUxMGsxX2Z4ODAxMF90cmFtX3Q7CisrdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3BjbV9yZWMgZW11MTBrMV9meDgwMTBfcGNtX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgZW11MTBrMV9jdGxfZWxlbV9pZCBlbXUxMGsxX2N0bF9lbGVtX2lkX3Q7CisrI2VuZGlmCisrCisrI2VuZGlmIC8qIF9VQVBJX19TT1VORF9FTVUxMEsxX0ggKi8KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvaGRzcC5oIGIvaW5jbHVkZS9zb3VuZC91YXBpL2hkc3AuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi44OGM5MmEzZgorLS0tIC9kZXYvbnVsbAorKysrIGIvaW5jbHVkZS9zb3VuZC91YXBpL2hkc3AuaAorQEAgLTAsMCArMSwxMDkgQEAKKysvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKysjaWZuZGVmIF9fU09VTkRfSERTUF9ICisrI2RlZmluZSBfX1NPVU5EX0hEU1BfSAorKworKy8qCisrICogICBDb3B5cmlnaHQgKEMpIDIwMDMgVGhvbWFzIENoYXJib25uZWwgKHRob21hc0B1bmRhdGEub3JnKQorKyAqICAgIAorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogICBGb3VuZGF0aW9uLCBJbmMuLCA2NzUgTWFzcyBBdmUsIENhbWJyaWRnZSwgTUEgMDIxMzksIFVTQS4KKysgKi8KKysKKysjZGVmaW5lIEhEU1BfTUFUUklYX01JWEVSX1NJWkUgMjA0OAorKworK2VudW0gSERTUF9JT19UeXBlIHsKKysJRGlnaWZhY2UsCisrCU11bHRpZmFjZSwKKysJSDk2NTIsCisrCUg5NjMyLAorKwlSUE0sCisrCVVuZGVmaW5lZCwKKyt9OworKworK3N0cnVjdCBoZHNwX3BlYWtfcm1zIHsKKysJX191MzIgaW5wdXRfcGVha3NbMjZdOworKwlfX3UzMiBwbGF5YmFja19wZWFrc1syNl07CisrCV9fdTMyIG91dHB1dF9wZWFrc1syOF07CisrCV9fdTY0IGlucHV0X3Jtc1syNl07CisrCV9fdTY0IHBsYXliYWNrX3Jtc1syNl07CisrCS8qIFRoZXNlIGFyZSBvbmx5IHVzZWQgZm9yIEg5Nnh4IGNhcmRzICovCisrCV9fdTY0IG91dHB1dF9ybXNbMjZdOworK307CisrCisrI2RlZmluZSBTTkRSVl9IRFNQX0lPQ1RMX0dFVF9QRUFLX1JNUyBfSU9SKCdIJywgMHg0MCwgc3RydWN0IGhkc3BfcGVha19ybXMpCisrCisrc3RydWN0IGhkc3BfY29uZmlnX2luZm8geworKwl1bnNpZ25lZCBjaGFyIHByZWZfc3luY19yZWY7CisrCXVuc2lnbmVkIGNoYXIgd29yZGNsb2NrX3N5bmNfY2hlY2s7CisrCXVuc2lnbmVkIGNoYXIgc3BkaWZfc3luY19jaGVjazsKKysJdW5zaWduZWQgY2hhciBhZGF0c3luY19zeW5jX2NoZWNrOworKwl1bnNpZ25lZCBjaGFyIGFkYXRfc3luY19jaGVja1szXTsKKysJdW5zaWduZWQgY2hhciBzcGRpZl9pbjsKKysJdW5zaWduZWQgY2hhciBzcGRpZl9vdXQ7CisrCXVuc2lnbmVkIGNoYXIgc3BkaWZfcHJvZmVzc2lvbmFsOworKwl1bnNpZ25lZCBjaGFyIHNwZGlmX2VtcGhhc2lzOworKwl1bnNpZ25lZCBjaGFyIHNwZGlmX25vbmF1ZGlvOworKwl1bnNpZ25lZCBpbnQgc3BkaWZfc2FtcGxlX3JhdGU7CisrCXVuc2lnbmVkIGludCBzeXN0ZW1fc2FtcGxlX3JhdGU7CisrCXVuc2lnbmVkIGludCBhdXRvc3luY19zYW1wbGVfcmF0ZTsKKysJdW5zaWduZWQgY2hhciBzeXN0ZW1fY2xvY2tfbW9kZTsKKysJdW5zaWduZWQgY2hhciBjbG9ja19zb3VyY2U7CisrCXVuc2lnbmVkIGNoYXIgYXV0b3N5bmNfcmVmOworKwl1bnNpZ25lZCBjaGFyIGxpbmVfb3V0OworKwl1bnNpZ25lZCBjaGFyIHBhc3N0aHJ1OyAKKysJdW5zaWduZWQgY2hhciBkYV9nYWluOworKwl1bnNpZ25lZCBjaGFyIGFkX2dhaW47CisrCXVuc2lnbmVkIGNoYXIgcGhvbmVfZ2FpbjsKKysJdW5zaWduZWQgY2hhciB4bHJfYnJlYWtvdXRfY2FibGU7CisrCXVuc2lnbmVkIGNoYXIgYW5hbG9nX2V4dGVuc2lvbl9ib2FyZDsKKyt9OworKworKyNkZWZpbmUgU05EUlZfSERTUF9JT0NUTF9HRVRfQ09ORklHX0lORk8gX0lPUignSCcsIDB4NDEsIHN0cnVjdCBoZHNwX2NvbmZpZ19pbmZvKQorKworK3N0cnVjdCBoZHNwX2Zpcm13YXJlIHsKKysJdm9pZCAqZmlybXdhcmVfZGF0YTsJLyogMjQ0MTMgeCA0IGJ5dGVzICovCisrfTsKKysKKysjZGVmaW5lIFNORFJWX0hEU1BfSU9DVExfVVBMT0FEX0ZJUk1XQVJFIF9JT1coJ0gnLCAweDQyLCBzdHJ1Y3QgaGRzcF9maXJtd2FyZSkKKysKKytzdHJ1Y3QgaGRzcF92ZXJzaW9uIHsKKysJZW51bSBIRFNQX0lPX1R5cGUgaW9fdHlwZTsKKysJdW5zaWduZWQgc2hvcnQgZmlybXdhcmVfcmV2OworK307CisrCisrI2RlZmluZSBTTkRSVl9IRFNQX0lPQ1RMX0dFVF9WRVJTSU9OIF9JT1IoJ0gnLCAweDQzLCBzdHJ1Y3QgaGRzcF92ZXJzaW9uKQorKworK3N0cnVjdCBoZHNwX21peGVyIHsKKysJdW5zaWduZWQgc2hvcnQgbWF0cml4W0hEU1BfTUFUUklYX01JWEVSX1NJWkVdOworK307CisrCisrI2RlZmluZSBTTkRSVl9IRFNQX0lPQ1RMX0dFVF9NSVhFUiBfSU9SKCdIJywgMHg0NCwgc3RydWN0IGhkc3BfbWl4ZXIpCisrCisrc3RydWN0IGhkc3BfOTYzMl9hZWIgeworKwlpbnQgYWViaTsKKysJaW50IGFlYm87CisrfTsKKysKKysjZGVmaW5lIFNORFJWX0hEU1BfSU9DVExfR0VUXzk2MzJfQUVCIF9JT1IoJ0gnLCAweDQ1LCBzdHJ1Y3QgaGRzcF85NjMyX2FlYikKKysKKysvKiB0eXBlZGVmcyBmb3IgY29tcGF0aWJpbGl0eSB0byB1c2VyLXNwYWNlICovCisrdHlwZWRlZiBlbnVtIEhEU1BfSU9fVHlwZSBIRFNQX0lPX1R5cGU7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcF9wZWFrX3JtcyBoZHNwX3BlYWtfcm1zX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcF9jb25maWdfaW5mbyBoZHNwX2NvbmZpZ19pbmZvX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcF9maXJtd2FyZSBoZHNwX2Zpcm13YXJlX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcF92ZXJzaW9uIGhkc3BfdmVyc2lvbl90OworK3R5cGVkZWYgc3RydWN0IGhkc3BfbWl4ZXIgaGRzcF9taXhlcl90OworK3R5cGVkZWYgc3RydWN0IGhkc3BfOTYzMl9hZWIgaGRzcF85NjMyX2FlYl90OworKworKyNlbmRpZiAvKiBfX1NPVU5EX0hEU1BfSCAqLworZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwbS5oIGIvaW5jbHVkZS9zb3VuZC91YXBpL2hkc3BtLmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uMmQ5MWY5MGUKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwbS5oCitAQCAtMCwwICsxLDIzMCBAQAorKy8qIFNQRFgtTGljZW5zZS1JZGVudGlmaWVyOiBHUEwtMi4wKyBXSVRIIExpbnV4LXN5c2NhbGwtbm90ZSAqLworKyNpZm5kZWYgX19TT1VORF9IRFNQTV9ICisrI2RlZmluZSBfX1NPVU5EX0hEU1BNX0gKKysvKgorKyAqICAgQ29weXJpZ2h0IChDKSAyMDAzIFdpbmZyaWVkIFJpdHNjaCAoSUVNKQorKyAqICAgYmFzZWQgb24gaGRzcC5oIGZyb20gVGhvbWFzIENoYXJib25uZWwgKHRob21hc0B1bmRhdGEub3JnKQorKyAqCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5CisrICogICBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzIHB1Ymxpc2hlZCBieQorKyAqICAgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZiB0aGUgTGljZW5zZSwgb3IKKysgKiAgIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCisrICoKKysgKiAgIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAorKyAqICAgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKKysgKiAgIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKKysgKiAgIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCisrICoKKysgKiAgIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCisrICogICBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbTsgaWYgbm90LCB3cml0ZSB0byB0aGUgRnJlZSBTb2Z0d2FyZQorKyAqICAgRm91bmRhdGlvbiwgSW5jLiwgNjc1IE1hc3MgQXZlLCBDYW1icmlkZ2UsIE1BIDAyMTM5LCBVU0EuCisrICovCisrCisrLyogTWF4aW11bSBjaGFubmVscyBpcyA2NCBldmVuIG9uIDU2TW9kZSB5b3UgaGF2ZSA2NHBsYXliYWNrcyB0byBtYXRyaXggKi8KKysjZGVmaW5lIEhEU1BNX01BWF9DSEFOTkVMUyAgICAgIDY0CisrCisrZW51bSBoZHNwbV9pb190eXBlIHsKKysJTUFESSwKKysJTUFESWZhY2UsCisrCUFJTywKKysJQUVTMzIsCisrCVJheURBVAorK307CisrCisrZW51bSBoZHNwbV9zcGVlZCB7CisrCXNzLAorKwlkcywKKysJcXMKKyt9OworKworKy8qIC0tLS0tLS0tLS0tLS0tLS0tLS0tIElPQ1RMIFBlYWsvUk1TIE1ldGVycyAtLS0tLS0tLS0tLS0tLS0tLS0tLSAqLworKworK3N0cnVjdCBoZHNwbV9wZWFrX3JtcyB7CisrCV9fdTMyIGlucHV0X3BlYWtzWzY0XTsKKysJX191MzIgcGxheWJhY2tfcGVha3NbNjRdOworKwlfX3UzMiBvdXRwdXRfcGVha3NbNjRdOworKworKwlfX3U2NCBpbnB1dF9ybXNbNjRdOworKwlfX3U2NCBwbGF5YmFja19ybXNbNjRdOworKwlfX3U2NCBvdXRwdXRfcm1zWzY0XTsKKysKKysJX191OCBzcGVlZDsgLyogZW51bSB7c3MsIGRzLCBxc30gKi8KKysJaW50IHN0YXR1czI7CisrfTsKKysKKysjZGVmaW5lIFNORFJWX0hEU1BNX0lPQ1RMX0dFVF9QRUFLX1JNUyBcCisrCV9JT1IoJ0gnLCAweDQyLCBzdHJ1Y3QgaGRzcG1fcGVha19ybXMpCisrCisrLyogLS0tLS0tLS0tLS0tIENPTkZJRyBibG9jayBJT0NUTCAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tICovCisrCisrc3RydWN0IGhkc3BtX2NvbmZpZyB7CisrCXVuc2lnbmVkIGNoYXIgcHJlZl9zeW5jX3JlZjsKKysJdW5zaWduZWQgY2hhciB3b3JkY2xvY2tfc3luY19jaGVjazsKKysJdW5zaWduZWQgY2hhciBtYWRpX3N5bmNfY2hlY2s7CisrCXVuc2lnbmVkIGludCBzeXN0ZW1fc2FtcGxlX3JhdGU7CisrCXVuc2lnbmVkIGludCBhdXRvc3luY19zYW1wbGVfcmF0ZTsKKysJdW5zaWduZWQgY2hhciBzeXN0ZW1fY2xvY2tfbW9kZTsKKysJdW5zaWduZWQgY2hhciBjbG9ja19zb3VyY2U7CisrCXVuc2lnbmVkIGNoYXIgYXV0b3N5bmNfcmVmOworKwl1bnNpZ25lZCBjaGFyIGxpbmVfb3V0OworKwl1bnNpZ25lZCBpbnQgcGFzc3RocnU7CisrCXVuc2lnbmVkIGludCBhbmFsb2dfb3V0OworK307CisrCisrI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfQ09ORklHIFwKKysJX0lPUignSCcsIDB4NDEsIHN0cnVjdCBoZHNwbV9jb25maWcpCisrCisrLyoKKysgKiBJZiB0aGVyZSdzIGEgVENPIChUaW1lQ29kZSBPcHRpb24pIGJvYXJkIGluc3RhbGxlZCwKKysgKiB0aGVyZSBhcmUgZnVydGhlciBvcHRpb25zIGFuZCBzdGF0dXMgZGF0YSBhdmFpbGFibGUuCisrICogVGhlIGhkc3BtX2x0YyBzdHJ1Y3R1cmUgY29udGFpbnMgdGhlIGN1cnJlbnQgU01QVEUKKysgKiB0aW1lY29kZSBhbmQgc29tZSBzdGF0dXMgaW5mb3JtYXRpb24gYW5kIGNhbiBiZQorKyAqIG9idGFpbmVkIHZpYSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfTFRDIG9yIGluIHRoZQorKyAqIGhkc3BtX3N0YXR1cyBzdHJ1Y3QuCisrICovCisrCisrZW51bSBoZHNwbV9sdGNfZm9ybWF0IHsKKysJZm9ybWF0X2ludmFsaWQsCisrCWZwc18yNCwKKysJZnBzXzI1LAorKwlmcHNfMjk5NywKKysJZnBzXzMwCisrfTsKKysKKytlbnVtIGhkc3BtX2x0Y19mcmFtZSB7CisrCWZyYW1lX2ludmFsaWQsCisrCWRyb3BfZnJhbWUsCisrCWZ1bGxfZnJhbWUKKyt9OworKworK2VudW0gaGRzcG1fbHRjX2lucHV0X2Zvcm1hdCB7CisrCW50c2MsCisrCXBhbCwKKysJbm9fdmlkZW8KKyt9OworKworK3N0cnVjdCBoZHNwbV9sdGMgeworKwl1bnNpZ25lZCBpbnQgbHRjOworKworKwllbnVtIGhkc3BtX2x0Y19mb3JtYXQgZm9ybWF0OworKwllbnVtIGhkc3BtX2x0Y19mcmFtZSBmcmFtZTsKKysJZW51bSBoZHNwbV9sdGNfaW5wdXRfZm9ybWF0IGlucHV0X2Zvcm1hdDsKKyt9OworKworKyNkZWZpbmUgU05EUlZfSERTUE1fSU9DVExfR0VUX0xUQyBfSU9SKCdIJywgMHg0Niwgc3RydWN0IGhkc3BtX2x0YykKKysKKysvKgorKyAqIFRoZSBzdGF0dXMgZGF0YSByZWZsZWN0cyB0aGUgZGV2aWNlJ3MgY3VycmVudCBzdGF0ZQorKyAqIGFzIGRldGVybWluZWQgYnkgdGhlIGNhcmQncyBjb25maWd1cmF0aW9uIGFuZAorKyAqIGNvbm5lY3Rpb24gc3RhdHVzLgorKyAqLworKworK2VudW0gaGRzcG1fc3luYyB7CisrCWhkc3BtX3N5bmNfbm9fbG9jayA9IDAsCisrCWhkc3BtX3N5bmNfbG9jayA9IDEsCisrCWhkc3BtX3N5bmNfc3luYyA9IDIKKyt9OworKworK2VudW0gaGRzcG1fbWFkaV9pbnB1dCB7CisrCWhkc3BtX2lucHV0X29wdGljYWwgPSAwLAorKwloZHNwbV9pbnB1dF9jb2F4ID0gMQorK307CisrCisrZW51bSBoZHNwbV9tYWRpX2NoYW5uZWxfZm9ybWF0IHsKKysJaGRzcG1fZm9ybWF0X2NoXzY0ID0gMCwKKysJaGRzcG1fZm9ybWF0X2NoXzU2ID0gMQorK307CisrCisrZW51bSBoZHNwbV9tYWRpX2ZyYW1lX2Zvcm1hdCB7CisrCWhkc3BtX2ZyYW1lXzQ4ID0gMCwKKysJaGRzcG1fZnJhbWVfOTYgPSAxCisrfTsKKysKKytlbnVtIGhkc3BtX3N5bmNzb3VyY2UgeworKwlzeW5jc291cmNlX3djID0gMCwKKysJc3luY3NvdXJjZV9tYWRpID0gMSwKKysJc3luY3NvdXJjZV90Y28gPSAyLAorKwlzeW5jc291cmNlX3N5bmMgPSAzLAorKwlzeW5jc291cmNlX25vbmUgPSA0CisrfTsKKysKKytzdHJ1Y3QgaGRzcG1fc3RhdHVzIHsKKysJX191OCBjYXJkX3R5cGU7IC8qIGVudW0gaGRzcG1faW9fdHlwZSAqLworKwllbnVtIGhkc3BtX3N5bmNzb3VyY2UgYXV0b3N5bmNfc291cmNlOworKworKwlfX3U2NCBjYXJkX2Nsb2NrOworKwlfX3UzMiBtYXN0ZXJfcGVyaW9kOworKworKwl1bmlvbiB7CisrCQlzdHJ1Y3QgeworKwkJCV9fdTggc3luY193YzsgLyogZW51bSBoZHNwbV9zeW5jICovCisrCQkJX191OCBzeW5jX21hZGk7IC8qIGVudW0gaGRzcG1fc3luYyAqLworKwkJCV9fdTggc3luY190Y287IC8qIGVudW0gaGRzcG1fc3luYyAqLworKwkJCV9fdTggc3luY19pbjsgLyogZW51bSBoZHNwbV9zeW5jICovCisrCQkJX191OCBtYWRpX2lucHV0OyAvKiBlbnVtIGhkc3BtX21hZGlfaW5wdXQgKi8KKysJCQlfX3U4IGNoYW5uZWxfZm9ybWF0OyAvKiBlbnVtIGhkc3BtX21hZGlfY2hhbm5lbF9mb3JtYXQgKi8KKysJCQlfX3U4IGZyYW1lX2Zvcm1hdDsgLyogZW51bSBoZHNwbV9tYWRpX2ZyYW1lX2Zvcm1hdCAqLworKwkJfSBtYWRpOworKwl9IGNhcmRfc3BlY2lmaWM7CisrfTsKKysKKysjZGVmaW5lIFNORFJWX0hEU1BNX0lPQ1RMX0dFVF9TVEFUVVMgXAorKwlfSU9SKCdIJywgMHg0Nywgc3RydWN0IGhkc3BtX3N0YXR1cykKKysKKysvKgorKyAqIEdldCBpbmZvcm1hdGlvbiBhYm91dCB0aGUgY2FyZCBhbmQgaXRzIGFkZC1vbnMuCisrICovCisrCisrI2RlZmluZSBIRFNQTV9BRERPTl9UQ08gMQorKworK3N0cnVjdCBoZHNwbV92ZXJzaW9uIHsKKysJX191OCBjYXJkX3R5cGU7IC8qIGVudW0gaGRzcG1faW9fdHlwZSAqLworKwljaGFyIGNhcmRuYW1lWzIwXTsKKysJdW5zaWduZWQgaW50IHNlcmlhbDsKKysJdW5zaWduZWQgc2hvcnQgZmlybXdhcmVfcmV2OworKwlpbnQgYWRkb25zOworK307CisrCisrI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfVkVSU0lPTiBfSU9SKCdIJywgMHg0OCwgc3RydWN0IGhkc3BtX3ZlcnNpb24pCisrCisrLyogLS0tLS0tLS0tLS0tLSBnZXQgTWF0cml4IE1peGVyIElPQ1RMIC0tLS0tLS0tLS0tLS0tLSAqLworKworKy8qIE1BREkgbWl4ZXI6IDY0aW5wdXRzKzY0cGxheWJhY2sgaW4gNjRvdXRwdXRzID0gODE5MiA9PiAqNEJ5dGUgPQorKyAqIDMyNzY4IEJ5dGVzCisrICovCisrCisrLyogb3JnYW5pc2F0aW9uIGlzIDY0IGNoYW5uZWxmYWRlciBpbiBhIGNvbnRpbnVvdXMgbWVtb3J5IGJsb2NrICovCisrLyogZXF1aXZhbGVudCB0byBoYXJkd2FyZSBkZWZpbml0aW9uLCBtYXliZSBmb3IgZnV0dXJlIGZlYXR1cmUgb2YgbW1hcCBvZgorKyAqIHRoZW0KKysgKi8KKysvKiBlYWNoIG9mIDY0IG91dHB1dHMgaGFzIDY0IGluZmFkZXIgYW5kIDY0IG91dGZhZGVyOgorKyAgIElucyB0byBPdXRzIG1peGVyW291dF0uaW5baW5dLCBPdXRzdHJlYW1zIHRvIE91dHMgbWl4ZXJbb3V0XS5wYltwYl0gKi8KKysKKysjZGVmaW5lIEhEU1BNX01JWEVSX0NIQU5ORUxTIEhEU1BNX01BWF9DSEFOTkVMUworKworK3N0cnVjdCBoZHNwbV9jaGFubmVsZmFkZXIgeworKwl1bnNpZ25lZCBpbnQgaW5bSERTUE1fTUlYRVJfQ0hBTk5FTFNdOworKwl1bnNpZ25lZCBpbnQgcGJbSERTUE1fTUlYRVJfQ0hBTk5FTFNdOworK307CisrCisrc3RydWN0IGhkc3BtX21peGVyIHsKKysJc3RydWN0IGhkc3BtX2NoYW5uZWxmYWRlciBjaFtIRFNQTV9NSVhFUl9DSEFOTkVMU107CisrfTsKKysKKytzdHJ1Y3QgaGRzcG1fbWl4ZXJfaW9jdGwgeworKwlzdHJ1Y3QgaGRzcG1fbWl4ZXIgKm1peGVyOworK307CisrCisrLyogdXNlIGluZGlyZWN0IGFjY2VzcyBkdWUgdG8gdGhlIGxpbWl0IG9mIGlvY3RsIGJpdCBzaXplICovCisrI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfTUlYRVIgX0lPUignSCcsIDB4NDQsIHN0cnVjdCBoZHNwbV9taXhlcl9pb2N0bCkKKysKKysvKiB0eXBlZGVmcyBmb3IgY29tcGF0aWJpbGl0eSB0byB1c2VyLXNwYWNlICovCisrdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fcGVha19ybXMgaGRzcG1fcGVha19ybXNfdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwbV9jb25maWdfaW5mbyBoZHNwbV9jb25maWdfaW5mb190OworK3R5cGVkZWYgc3RydWN0IGhkc3BtX3ZlcnNpb24gaGRzcG1fdmVyc2lvbl90OworK3R5cGVkZWYgc3RydWN0IGhkc3BtX2NoYW5uZWxmYWRlciBzbmRfaGRzcG1fY2hhbm5lbGZhZGVyX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fbWl4ZXIgaGRzcG1fbWl4ZXJfdDsKKysKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvc2IxNl9jc3AuaCBiL2luY2x1ZGUvc291bmQvdWFwaS9zYjE2X2NzcC5oCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMDAuLmU2NDg1MTQ4CistLS0gL2Rldi9udWxsCisrKysgYi9pbmNsdWRlL3NvdW5kL3VhcGkvc2IxNl9jc3AuaAorQEAgLTAsMCArMSwxMjMgQEAKKysvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKysvKgorKyAqICBDb3B5cmlnaHQgKGMpIDE5OTkgYnkgVXJvcyBCaXpqYWsgPHVyb3NAa3NzLWxva2Euc2k+CisrICogICAgICAgICAgICAgICAgICAgICAgICBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+CisrICoKKysgKiAgU0IxNkFTUC9BV0UzMiBDU1AgY29udHJvbAorKyAqCisrICogICBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSAKKysgKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKgorKyAqICAgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKKysgKiAgIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtOyBpZiBub3QsIHdyaXRlIHRvIHRoZSBGcmVlIFNvZnR3YXJlCisrICogICBGb3VuZGF0aW9uLCBJbmMuLCA1OSBUZW1wbGUgUGxhY2UsIFN1aXRlIDMzMCwgQm9zdG9uLCBNQSAgMDIxMTEtMTMwNyBVU0EKKysgKgorKyAqLworKyNpZm5kZWYgX1VBUElfX1NPVU5EX1NCMTZfQ1NQX0gKKysjZGVmaW5lIF9VQVBJX19TT1VORF9TQjE2X0NTUF9ICisrCisrCisrLyogQ1NQIG1vZGVzICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfTU9ERV9OT05FCQkweDAwCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfTU9ERV9EU1BfUkVBRAkweDAxCS8qIFJlY29yZCBmcm9tIERTUCAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX01PREVfRFNQX1dSSVRFCTB4MDIJLyogUGxheSB0byBEU1AgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9NT0RFX1FTT1VORAkJMHgwNAkvKiBRU291bmQgKi8KKysKKysvKiBDU1AgbG9hZCBmbGFncyAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX0xPQURfRlJPTVVTRVIJMHgwMQorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX0xPQURfSU5JVEJMT0NLCTB4MDIKKysKKysvKiBDU1Agc2FtcGxlIHdpZHRoICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfU0FNUExFXzhCSVQJCTB4MDEKKysjZGVmaW5lIFNORFJWX1NCX0NTUF9TQU1QTEVfMTZCSVQJCTB4MDIKKysKKysvKiBDU1AgY2hhbm5lbHMgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9NT05PCQkJMHgwMQorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1NURVJFTwkJMHgwMgorKworKy8qIENTUCByYXRlcyAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1JBVEVfODAwMAkJMHgwMQorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1JBVEVfMTEwMjUJCTB4MDIKKysjZGVmaW5lIFNORFJWX1NCX0NTUF9SQVRFXzIyMDUwCQkweDA0CisrI2RlZmluZSBTTkRSVl9TQl9DU1BfUkFURV80NDEwMAkJMHgwOAorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1JBVEVfQUxMCQkweDBmCisrCisrLyogQ1NQIHJ1bm5pbmcgc3RhdGUgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9TVF9JRExFCQkweDAwCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfU1RfTE9BREVECQkweDAxCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfU1RfUlVOTklORwkJMHgwMgorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1NUX1BBVVNFRAkJMHgwNAorKyNkZWZpbmUgU05EUlZfU0JfQ1NQX1NUX0FVVE8JCTB4MDgKKysjZGVmaW5lIFNORFJWX1NCX0NTUF9TVF9RU09VTkQJCTB4MTAKKysKKysvKiBtYXhpbXVtIFFTb3VuZCB2YWx1ZSAoMTgwIGRlZ3JlZXMgcmlnaHQpICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfUVNPVU5EX01BWF9SSUdIVAkweDIwCisrCisrLyogbWF4aW11bSBtaWNyb2NvZGUgUklGRiBmaWxlIHNpemUgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9NQVhfTUlDUk9DT0RFX0ZJTEVfU0laRQkweDMwMDAKKysKKysvKiBtaWNyb2NvZGUgaGVhZGVyICovCisrc3RydWN0IHNuZF9zYl9jc3BfbWNfaGVhZGVyIHsKKysJY2hhciBjb2RlY19uYW1lWzE2XTsJCS8qIGlkIG5hbWUgb2YgY29kZWMgKi8KKysJdW5zaWduZWQgc2hvcnQgZnVuY19yZXE7CS8qIHJlcXVlc3RlZCBmdW5jdGlvbiAqLworK307CisrCisrLyogbWljcm9jb2RlIHRvIGJlIGxvYWRlZCAqLworK3N0cnVjdCBzbmRfc2JfY3NwX21pY3JvY29kZSB7CisrCXN0cnVjdCBzbmRfc2JfY3NwX21jX2hlYWRlciBpbmZvOworKwl1bnNpZ25lZCBjaGFyIGRhdGFbU05EUlZfU0JfQ1NQX01BWF9NSUNST0NPREVfRklMRV9TSVpFXTsKKyt9OworKworKy8qIHN0YXJ0IENTUCB3aXRoIHNhbXBsZV93aWR0aCBpbiBtb25vL3N0ZXJlbyAqLworK3N0cnVjdCBzbmRfc2JfY3NwX3N0YXJ0IHsKKysJaW50IHNhbXBsZV93aWR0aDsJLyogc2FtcGxlIHdpZHRoLCBsb29rIGFib3ZlICovCisrCWludCBjaGFubmVsczsJCS8qIGNoYW5uZWxzLCBsb29rIGFib3ZlICovCisrfTsKKysKKysvKiBDU1AgaW5mb3JtYXRpb24gKi8KKytzdHJ1Y3Qgc25kX3NiX2NzcF9pbmZvIHsKKysJY2hhciBjb2RlY19uYW1lWzE2XTsJCS8qIGlkIG5hbWUgb2YgY29kZWMgKi8KKysJdW5zaWduZWQgc2hvcnQgZnVuY19ucjsJCS8qIGZ1bmN0aW9uIG51bWJlciAqLworKwl1bnNpZ25lZCBpbnQgYWNjX2Zvcm1hdDsJLyogYWNjZXB0ZWQgUENNIGZvcm1hdHMgKi8KKysJdW5zaWduZWQgc2hvcnQgYWNjX2NoYW5uZWxzOwkvKiBhY2NlcHRlZCBjaGFubmVscyAqLworKwl1bnNpZ25lZCBzaG9ydCBhY2Nfd2lkdGg7CS8qIGFjY2VwdGVkIHNhbXBsZSB3aWR0aCAqLworKwl1bnNpZ25lZCBzaG9ydCBhY2NfcmF0ZXM7CS8qIGFjY2VwdGVkIHNhbXBsZSByYXRlcyAqLworKwl1bnNpZ25lZCBzaG9ydCBjc3BfbW9kZTsJLyogQ1NQIG1vZGUsIHNlZSBhYm92ZSAqLworKwl1bnNpZ25lZCBzaG9ydCBydW5fY2hhbm5lbHM7CS8qIGN1cnJlbnQgY2hhbm5lbHMgICovCisrCXVuc2lnbmVkIHNob3J0IHJ1bl93aWR0aDsJLyogY3VycmVudCBzYW1wbGUgd2lkdGggKi8KKysJdW5zaWduZWQgc2hvcnQgdmVyc2lvbjsJCS8qIHZlcnNpb24gaWQ6IDB4MTAgLSAweDFmICovCisrCXVuc2lnbmVkIHNob3J0IHN0YXRlOwkJLyogc3RhdGUgYml0cyAqLworK307CisrCisrLyogSFdERVAgY29udHJvbHMgKi8KKysvKiBnZXQgQ1NQIGluZm9ybWF0aW9uICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfSU5GTwkJX0lPUignSCcsIDB4MTAsIHN0cnVjdCBzbmRfc2JfY3NwX2luZm8pCisrLyogbG9hZCBtaWNyb2NvZGUgdG8gQ1NQICovCisrLyogTk9URTogc3RydWN0IHNuZF9zYl9jc3BfbWljcm9jb2RlIG92ZXJmbG93cyB0aGUgbWF4IHNpemUgKDEzIGJpdHMpCisrICogZGVmaW5lZCBmb3Igc29tZSBhcmNoaXRlY3R1cmVzIGxpa2UgTUlQUywgYW5kIGl0IGxlYWRzIHRvIGJ1aWxkIGVycm9ycy4KKysgKiAoeDg2IGFuZCBjbyBoYXZlIDE0LWJpdCBzaXplLCB0aHVzIGl0J3MgdmFsaWQsIHRob3VnaC4pCisrICogQXMgYSB3b3JrYXJvdW5kIGZvciBza2lwcGluZyB0aGUgc2l6ZS1saW1pdCBjaGVjaywgaGVyZSB3ZSBkb24ndCB1c2UgdGhlCisrICogbm9ybWFsIF9JT1coKSBtYWNybyBidXQgX0lPQygpIHdpdGggdGhlIG1hbnVhbCBhcmd1bWVudC4KKysgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9JT0NUTF9MT0FEX0NPREUJXAorKwlfSU9DKF9JT0NfV1JJVEUsICdIJywgMHgxMSwgc2l6ZW9mKHN0cnVjdCBzbmRfc2JfY3NwX21pY3JvY29kZSkpCisrLyogdW5sb2FkIG1pY3JvY29kZSBmcm9tIENTUCAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX1VOTE9BRF9DT0RFCV9JTygnSCcsIDB4MTIpCisrLyogc3RhcnQgQ1NQICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfU1RBUlQJCV9JT1coJ0gnLCAweDEzLCBzdHJ1Y3Qgc25kX3NiX2NzcF9zdGFydCkKKysvKiBzdG9wIENTUCAqLworKyNkZWZpbmUgU05EUlZfU0JfQ1NQX0lPQ1RMX1NUT1AJCV9JTygnSCcsIDB4MTQpCisrLyogcGF1c2UgQ1NQIGFuZCBETUEgdHJhbnNmZXIgKi8KKysjZGVmaW5lIFNORFJWX1NCX0NTUF9JT0NUTF9QQVVTRQkJX0lPKCdIJywgMHgxNSkKKysvKiByZXN0YXJ0IENTUCBhbmQgRE1BIHRyYW5zZmVyICovCisrI2RlZmluZSBTTkRSVl9TQl9DU1BfSU9DVExfUkVTVEFSVAlfSU8oJ0gnLCAweDE2KQorKworKworKyNlbmRpZiAvKiBfVUFQSV9fU09VTkRfU0IxNl9DU1BfSCAqLworZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvdWFwaS9zc2NhcGVfaW9jdGwuaCBiL2luY2x1ZGUvc291bmQvdWFwaS9zc2NhcGVfaW9jdGwuaAorbmV3IGZpbGUgbW9kZSAxMDA2NDQKK2luZGV4IDAwMDAwMDAwLi5jNjY1M2ViZgorLS0tIC9kZXYvbnVsbAorKysrIGIvaW5jbHVkZS9zb3VuZC91YXBpL3NzY2FwZV9pb2N0bC5oCitAQCAtMCwwICsxLDIxIEBACisrI2lmbmRlZiBTU0NBUEVfSU9DVExfSAorKyNkZWZpbmUgU1NDQVBFX0lPQ1RMX0gKKysKKysKKytzdHJ1Y3Qgc3NjYXBlX2Jvb3RibG9jaworK3sKKysgIHVuc2lnbmVkIGNoYXIgY29kZVsyNTZdOworKyAgdW5zaWduZWQgdmVyc2lvbjsKKyt9OworKworKyNkZWZpbmUgU1NDQVBFX01JQ1JPQ09ERV9TSVpFICA2NTUzNgorKworK3N0cnVjdCBzc2NhcGVfbWljcm9jb2RlCisreworKyAgdW5zaWduZWQgY2hhciAqY29kZTsKKyt9OworKworKyNkZWZpbmUgU05EX1NTQ0FQRV9MT0FEX0JPT1RCICBfSU9XUignUCcsIDEwMCwgc3RydWN0IHNzY2FwZV9ib290YmxvY2spCisrI2RlZmluZSBTTkRfU1NDQVBFX0xPQURfTUNPREUgIF9JT1cgKCdQJywgMTAxLCBzdHJ1Y3Qgc3NjYXBlX21pY3JvY29kZSkKKysKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvdGx2LmggYi9pbmNsdWRlL3NvdW5kL3VhcGkvdGx2LmgKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwMC4uN2Q2ZDY1ZjYKKy0tLSAvZGV2L251bGwKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS90bHYuaAorQEAgLTAsMCArMSwxMTcgQEAKKysvKiBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogR1BMLTIuMCsgV0lUSCBMaW51eC1zeXNjYWxsLW5vdGUgKi8KKysvKgorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU7IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkKKysgKiAgIGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5CisrICogICB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgorKyAqICAgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KKysgKgorKyAqICAgVGhpcyBwcm9ncmFtIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCisrICogICBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgorKyAqICAgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQorKyAqICAgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KKysgKi8KKysKKysjaWZuZGVmIF9fVUFQSV9TT1VORF9UTFZfSAorKyNkZWZpbmUgX19VQVBJX1NPVU5EX1RMVl9ICisrCisrI2RlZmluZSBTTkRSVl9DVExfVExWVF9DT05UQUlORVIgMAkvKiBvbmUgbGV2ZWwgZG93biAtIGdyb3VwIG9mIFRMVnMgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZUX0RCX1NDQUxFCTEgICAgICAgLyogZEIgc2NhbGUgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZUX0RCX0xJTkVBUiAyCS8qIGxpbmVhciB2b2x1bWUgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZUX0RCX1JBTkdFIDMJLyogZEIgcmFuZ2UgY29udGFpbmVyICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWVF9EQl9NSU5NQVggNAkvKiBkQiBzY2FsZSB3aXRoIG1pbi9tYXggKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZUX0RCX01JTk1BWF9NVVRFIDUJLyogZEIgc2NhbGUgd2l0aCBtaW4vbWF4IHdpdGggbXV0ZSAqLworKworKy8qCisrICogY2hhbm5lbC1tYXBwaW5nIFRMViBpdGVtcworKyAqICBUTFYgbGVuZ3RoIG11c3QgbWF0Y2ggd2l0aCBudW1fY2hhbm5lbHMKKysgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZUX0NITUFQX0ZJWEVECTB4MTAxCS8qIGZpeGVkIGNoYW5uZWwgcG9zaXRpb24gKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZUX0NITUFQX1ZBUgkweDEwMgkvKiBjaGFubmVscyBmcmVlbHkgc3dhcHBhYmxlICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWVF9DSE1BUF9QQUlSRUQJMHgxMDMJLyogcGFpci13aXNlIHN3YXBwYWJsZSAqLworKworKy8qCisrICogVExWIHN0cnVjdHVyZSBpcyByaWdodCBiZWhpbmQgdGhlIHN0cnVjdCBzbmRfY3RsX3RsdjoKKysgKiAgIHVuc2lnbmVkIGludCB0eXBlICAJLSBzZWUgU05EUlZfQ1RMX1RMVlRfKgorKyAqICAgdW5zaWduZWQgaW50IGxlbmd0aAorKyAqICAgLi4uLiBkYXRhIGFsaWduZWQgdG8gc2l6ZW9mKHVuc2lnbmVkIGludCksIHVzZQorKyAqICAgICAgICBibG9ja19sZW5ndGggPSAobGVuZ3RoICsgKHNpemVvZih1bnNpZ25lZCBpbnQpIC0gMSkpICYKKysgKiAgICAgICAgICAgICAgICAgICAgICAgfihzaXplb2YodW5zaWduZWQgaW50KSAtIDEpKSAuLi4uCisrICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9JVEVNKHR5cGUsIC4uLikgXAorKwkodHlwZSksIFNORFJWX0NUTF9UTFZEX0xFTkdUSChfX1ZBX0FSR1NfXyksIF9fVkFfQVJHU19fCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9MRU5HVEgoLi4uKSBcCisrCSgodW5zaWduZWQgaW50KXNpemVvZigoY29uc3QgdW5zaWduZWQgaW50W10pIHsgX19WQV9BUkdTX18gfSkpCisrCisrLyogQWNjZXNzb3Igb2Zmc2V0cyBmb3IgVExWIGRhdGEgaXRlbXMgKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZPX1RZUEUJCTAKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZPX0xFTgkJMQorKworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfQ09OVEFJTkVSX0lURU0oLi4uKSBcCisrCVNORFJWX0NUTF9UTFZEX0lURU0oU05EUlZfQ1RMX1RMVlRfQ09OVEFJTkVSLCBfX1ZBX0FSR1NfXykKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RFQ0xBUkVfQ09OVEFJTkVSKG5hbWUsIC4uLikgXAorKwl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCisrCQlTTkRSVl9DVExfVExWRF9DT05UQUlORVJfSVRFTShfX1ZBX0FSR1NfXykgXAorKwl9CisrCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9NQVNLCTB4ZmZmZgorKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfU0NBTEVfTVVURQkweDEwMDAwCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9JVEVNKG1pbiwgc3RlcCwgbXV0ZSkgXAorKwlTTkRSVl9DVExfVExWRF9JVEVNKFNORFJWX0NUTF9UTFZUX0RCX1NDQUxFLCBcCisrCQkJICAgIChtaW4pLCBcCisrCQkJICAgICgoc3RlcCkgJiBTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9NQVNLKSB8IFwKKysJCQkgICAgICgobXV0ZSkgPyBTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9NVVRFIDogMCkpCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9ERUNMQVJFX0RCX1NDQUxFKG5hbWUsIG1pbiwgc3RlcCwgbXV0ZSkgXAorKwl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCisrCQlTTkRSVl9DVExfVExWRF9EQl9TQ0FMRV9JVEVNKG1pbiwgc3RlcCwgbXV0ZSkgXAorKwl9CisrCisrLyogQWNjZXNzb3Igb2Zmc2V0cyBmb3IgbWluLCBtdXRlIGFuZCBzdGVwIGl0ZW1zIGluIGRCIHNjYWxlIHR5cGUgVExWICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWT19EQl9TQ0FMRV9NSU4JCTIKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZPX0RCX1NDQUxFX01VVEVfQU5EX1NURVAJMworKworKy8qIGRCIHNjYWxlIHNwZWNpZmllZCB3aXRoIG1pbi9tYXggdmFsdWVzIGluc3RlYWQgb2Ygc3RlcCAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfTUlOTUFYX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKysJU05EUlZfQ1RMX1RMVkRfSVRFTShTTkRSVl9DVExfVExWVF9EQl9NSU5NQVgsIChtaW5fZEIpLCAobWF4X2RCKSkKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX01JTk1BWF9NVVRFX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKysJU05EUlZfQ1RMX1RMVkRfSVRFTShTTkRSVl9DVExfVExWVF9EQl9NSU5NQVhfTVVURSwgKG1pbl9kQiksIChtYXhfZEIpKQorKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREVDTEFSRV9EQl9NSU5NQVgobmFtZSwgbWluX2RCLCBtYXhfZEIpIFwKKysJdW5zaWduZWQgaW50IG5hbWVbXSA9IHsgXAorKwkJU05EUlZfQ1RMX1RMVkRfREJfTUlOTUFYX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKysJfQorKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREVDTEFSRV9EQl9NSU5NQVhfTVVURShuYW1lLCBtaW5fZEIsIG1heF9kQikgXAorKwl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCisrCQlTTkRSVl9DVExfVExWRF9EQl9NSU5NQVhfTVVURV9JVEVNKG1pbl9kQiwgbWF4X2RCKSBcCisrCX0KKysKKysvKiBBY2Nlc3NvciBvZmZzZXRzIGZvciBtaW4sIG1heCBpdGVtcyBpbiBkYi1taW5tYXggdHlwZXMgb2YgVExWLiAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fREJfTUlOTUFYX01JTgkyCisrI2RlZmluZSBTTkRSVl9DVExfVExWT19EQl9NSU5NQVhfTUFYCTMKKysKKysvKiBsaW5lYXIgdm9sdW1lIGJldHdlZW4gbWluX2RCIGFuZCBtYXhfZEIgKC4wMWRCIHVuaXQpICovCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9EQl9MSU5FQVJfSVRFTShtaW5fZEIsIG1heF9kQikgXAorKwlTTkRSVl9DVExfVExWRF9JVEVNKFNORFJWX0NUTF9UTFZUX0RCX0xJTkVBUiwgKG1pbl9kQiksIChtYXhfZEIpKQorKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREVDTEFSRV9EQl9MSU5FQVIobmFtZSwgbWluX2RCLCBtYXhfZEIpIFwKKysJdW5zaWduZWQgaW50IG5hbWVbXSA9IHsgXAorKwkJU05EUlZfQ1RMX1RMVkRfREJfTElORUFSX0lURU0obWluX2RCLCBtYXhfZEIpIFwKKysJfQorKworKy8qIEFjY2Vzc29yIG9mZnNldHMgZm9yIG1pbiwgbWF4IGl0ZW1zIGluIGRiLWxpbmVhciB0eXBlIG9mIFRMVi4gKi8KKysjZGVmaW5lIFNORFJWX0NUTF9UTFZPX0RCX0xJTkVBUl9NSU4JMgorKyNkZWZpbmUgU05EUlZfQ1RMX1RMVk9fREJfTElORUFSX01BWAkzCisrCisrLyogZEIgcmFuZ2UgY29udGFpbmVyOgorKyAqIEl0ZW1zIGluIGRCIHJhbmdlIGNvbnRhaW5lciBtdXN0IGJlIG9yZGVyZWQgYnkgdGhlaXIgdmFsdWVzIGFuZCBieSB0aGVpcgorKyAqIGRCIHZhbHVlcy4gVGhpcyBpbXBsaWVzIHRoYXQgbGFyZ2VyIHZhbHVlcyBtdXN0IGNvcnJlc3BvbmQgd2l0aCBsYXJnZXIKKysgKiBkQiB2YWx1ZXMgKHdoaWNoIGlzIGFsc28gcmVxdWlyZWQgZm9yIGFsbCBvdGhlciBtaXhlciBjb250cm9scykuCisrICovCisrLyogRWFjaCBpdGVtIGlzOiA8bWluPiA8bWF4PiA8VExWPiAqLworKyNkZWZpbmUgU05EUlZfQ1RMX1RMVkRfREJfUkFOR0VfSVRFTSguLi4pIFwKKysJU05EUlZfQ1RMX1RMVkRfSVRFTShTTkRSVl9DVExfVExWVF9EQl9SQU5HRSwgX19WQV9BUkdTX18pCisrI2RlZmluZSBTTkRSVl9DVExfVExWRF9ERUNMQVJFX0RCX1JBTkdFKG5hbWUsIC4uLikgXAorKwl1bnNpZ25lZCBpbnQgbmFtZVtdID0geyBcCisrCQlTTkRSVl9DVExfVExWRF9EQl9SQU5HRV9JVEVNKF9fVkFfQVJHU19fKSBcCisrCX0KKysKKysjZGVmaW5lIFNORFJWX0NUTF9UTFZEX0RCX0dBSU5fTVVURQktOTk5OTk5OQorKworKyNlbmRpZgorZGlmZiAtLWdpdCBhL3NyYy90b3BvbG9neS90cGxnX2xvY2FsLmggYi9zcmMvdG9wb2xvZ3kvdHBsZ19sb2NhbC5oCitpbmRleCAxMWVmY2U2ZC4uMTAxNDkxYTQgMTAwNjQ0CistLS0gYS9zcmMvdG9wb2xvZ3kvdHBsZ19sb2NhbC5oCisrKysgYi9zcmMvdG9wb2xvZ3kvdHBsZ19sb2NhbC5oCitAQCAtMTgsOCArMTgsNyBAQAorICNpbmNsdWRlICJsaXN0LmgiCisgI2luY2x1ZGUgInRvcG9sb2d5LmgiCisgCistI2RlZmluZSBfX3BhY2tlZCBfX2F0dHJpYnV0ZV9fKChfX3BhY2tlZF9fKSkKKy0KKysjaW5jbHVkZSA8c291bmQvdHlwZV9jb21wYXQuaD4KKyAjaW5jbHVkZSA8c291bmQvYXNvdW5kLmg+CisgI2luY2x1ZGUgPHNvdW5kL2Fzb2MuaD4KKyAjaW5jbHVkZSA8c291bmQvdGx2Lmg+CistLSAKKzIuMjAuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMS1jb25maWd1cmUuYWMtcmVtb3ZlLWFuLXVubmVjZXNzYXJ5LWxpYnRvb2wtZml4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDEtY29uZmlndXJlLmFjLXJlbW92ZS1hbi11bm5lY2Vzc2FyeS1saWJ0b29sLWZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40ZGI0OTM0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDEtY29uZmlndXJlLmFjLXJlbW92ZS1hbi11bm5lY2Vzc2FyeS1saWJ0b29sLWZpeC5wYXRjaApAQCAtMCwwICsxLDUwIEBACitGcm9tIDAxY2Q4Y2I2ZDU5NGQ3YTEyYzY3ZDIxZDY4OWViZTBlMzQ3NDY5YzAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CitEYXRlOiBGcmksIDIwIERlYyAyMDE5IDA5OjI2OjEyICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpZ3VyZS5hYzogcmVtb3ZlIGFuIHVubmVjZXNzYXJ5IGxpYnRvb2wgZml4CisKK1RoaXMgY29kZSB3YXMgYWRkZWQgaW4gY29tbWl0IDc1ZDM5M2E1NjNlZmI1NzhjNzkzNjRhMjc3MDg3YzYzMjYyNjdmNTIKK3dpdGhvdXQgZXhwbGFpbmluZyB3aHkuIEkgYXNzdW1lIGl0IHdhcyBhIG1pc3Rha2UsIHNpbmNlIGl0IGxvb2tzIGxpa2UKK3RoZSBsaWJ0b29sIHByb2JsZW0gc2hvdWxkIGhhdmUgZ29uZSBhd2F5IGEgbG9uZyB0aW1lIGFnby4gVGhlIHJlZmVyZW5jZWQKK3dpa2kgcGFnZSBodHRwczovL3dpa2kuZGViaWFuLm9yZy9ScGF0aElzc3VlIHNheXM6CisKKyAgICBTaW5jZSBsaWJ0b29sIDEuNS4yIChyZWxlYXNlZCAyMDA0LTAxLTI1KSwgb24gTGludXggbGlidG9vbCBubworICAgIGxvbmdlciBzZXRzIFJQQVRIIGZvciBhbnkgZGlyZWN0b3JpZXMgaW4gdGhlIGR5bmFtaWMgbGlua2VyIHNlYXJjaAorICAgIHBhdGgsIHNvIHRoaXMgc2hvdWxkIG5vIGxvbmdlciBiZSBhbiBpc3N1ZSB1bmxlc3MgdXBzdHJlYW0gdXNlZCBhCisgICAgcmVhbGx5IG9sZCB2ZXJzaW9uIG9mIGxpYnRvb2wgd2hlbiBjcmVhdGluZyB0aGVpciBkaXN0cmlidXRpb24KKyAgICB0YXJiYWxsLgorCitUaGlzIGNvZGUgY2F1c2VkIHByb2JsZW1zIGluIE9wZW5FbWJlZGRlZCwgd2hlcmUgdGhlIGxpYnRvb2wgc2NyaXB0IGlzCituYW1lZCAieDg2XzY0LW9lLWxpbnV4LWxpYnRvb2wiIG9yIHNpbWlsYXIgcmF0aGVyIHRoYW4ganVzdCAibGlidG9vbCIsCitzbyB0aGUgc2VkIGNvbW1hbmQgZmFpbGVkIHdpdGggYSBmaWxlIG5vdCBmb3VuZCBlcnJvci4gUmF0aGVyIHRoYW4KK2FkYXB0aW5nIHRoZSBjb2RlIHRvIE9wZW5FbWJlZGRlZCdzIHBlY3VsaWFyaXRpZXMsIGl0IHNlZW1zIGJlc3QgdG8ganVzdAorcmVtb3ZlIHRoZSB1bm5lY2Vzc2FyeSBjb2RlIGFsdG9nZXRoZXIuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vYWxzYS1wcm9qZWN0L2Fsc2EtbGliL3B1bGwvMTldCitTaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CistLS0KKyBjb25maWd1cmUuYWMgfCAxMSAtLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYworaW5kZXggMTE5ZWY2MDAuLjIyYTRhODg1IDEwMDY0NAorLS0tIGEvY29uZmlndXJlLmFjCisrKysgYi9jb25maWd1cmUuYWMKK0BAIC03NjQsMTQgKzc2NCwzIEBAIHRlc3QgIiRidWlsZF9zZXEiID0gInllcyIgJiYgZWNobyAiI2luY2x1ZGUgPGFsc2Evc2VxLmg+IiA+PiBpbmNsdWRlL2Fzb3VuZGxpYi5oCisgdGVzdCAiJGJ1aWxkX3NlcSIgPSAieWVzIiAmJiBlY2hvICIjaW5jbHVkZSA8YWxzYS9zZXFtaWQuaD4iID4+IGluY2x1ZGUvYXNvdW5kbGliLmgKKyB0ZXN0ICIkYnVpbGRfc2VxIiA9ICJ5ZXMiICYmIGVjaG8gIiNpbmNsdWRlIDxhbHNhL3NlcV9taWRpX2V2ZW50Lmg+IiA+PiBpbmNsdWRlL2Fzb3VuZGxpYi5oCisgY2F0ICIkc3JjZGlyIi9pbmNsdWRlL2Fzb3VuZGxpYi10YWlsLmggPj4gaW5jbHVkZS9hc291bmRsaWIuaAorLQorLWRubCBUYWtlbiBmcm9tIGh0dHBzOi8vd2lraS5kZWJpYW4ub3JnL1JwYXRoSXNzdWUKKy1jYXNlICRob3N0IGluCistICAgKi0qLWxpbnV4LWdudSkKKy0gICBBQ19NU0dfUkVTVUxUKFtGaXhpbmcgbGlidG9vbCBmb3IgLXJwYXRoIHByb2JsZW1zLl0pCistICAgc2VkIDwgbGlidG9vbCA+IGxpYnRvb2wtMiBcCistICAgICAncy9eaGFyZGNvZGVfbGliZGlyX2ZsYWdfc3BlYy4qJCcvJ2hhcmRjb2RlX2xpYmRpcl9mbGFnX3NwZWM9IiAtRF9fTElCVE9PTF9JU19BX0ZPT0xfXyAiLycKKy0gICBtdiBsaWJ0b29sLTIgbGlidG9vbAorLSAgIGNobW9kIDc1NSBsaWJ0b29sCistIDs7CistZXNhYworLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDEtdWFwaS1Nb3ZlLXR5cGVkZWZzLWZyb20tdWFwaS10by1zb3VuZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLXVhcGktTW92ZS10eXBlZGVmcy1mcm9tLXVhcGktdG8tc291bmQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYzM1YTJjOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLXVhcGktTW92ZS10eXBlZGVmcy1mcm9tLXVhcGktdG8tc291bmQucGF0Y2gKQEAgLTAsMCArMSwxMzcgQEAKK0Zyb20gNTk3OTJmNDY3YjM4ZDZhNGM0ZGZmZGIzMDUyOGY3ZmIwM2QyM2Q5NiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFRha2FzaGkgSXdhaSA8dGl3YWlAc3VzZS5kZT4KK0RhdGU6IEZyaSwgMjAgRGVjIDIwMTkgMTc6MTI6MzcgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdWFwaTogTW92ZSB0eXBlZGVmcyBmcm9tIHVhcGkgdG8gc291bmQvKgorCitGb3Iga2VlcGluZyB1YXBpLyouaCBjbGVhbmVyLgorCitTaWduZWQtb2ZmLWJ5OiBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+CisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKKworU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgaW5jbHVkZS9zb3VuZC9lbXUxMGsxLmggICAgICB8ICA5ICsrKysrKysrKworIGluY2x1ZGUvc291bmQvaGRzcC5oICAgICAgICAgfCAxMCArKysrKysrKysrCisgaW5jbHVkZS9zb3VuZC9oZHNwbS5oICAgICAgICB8ICA4ICsrKysrKysrCisgaW5jbHVkZS9zb3VuZC9zYjE2X2NzcC5oICAgICB8ICA0ICsrKysKKyBpbmNsdWRlL3NvdW5kL3VhcGkvZW11MTBrMS5oIHwgMTAgLS0tLS0tLS0tLQorIGluY2x1ZGUvc291bmQvdWFwaS9oZHNwLmggICAgfCAgOSAtLS0tLS0tLS0KKyBpbmNsdWRlL3NvdW5kL3VhcGkvaGRzcG0uaCAgIHwgIDggLS0tLS0tLS0KKyA3IGZpbGVzIGNoYW5nZWQsIDMxIGluc2VydGlvbnMoKyksIDI3IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC9lbXUxMGsxLmggYi9pbmNsdWRlL3NvdW5kL2VtdTEwazEuaAoraW5kZXggZjA2ZWNlZTUuLjA4MzJmOTViIDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9lbXUxMGsxLmgKKysrKyBiL2luY2x1ZGUvc291bmQvZW11MTBrMS5oCitAQCAtMSwyICsxLDExIEBACisgI2luY2x1ZGUgPGFsc2Evc291bmQvdHlwZV9jb21wYXQuaD4KKyAjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2VtdTEwazEuaD4KKysjaWZuZGVmIF9fZW11MTBrMV90eXBlX2RlZmluZWQKKysjZGVmaW5lIF9fZW11MTBrMV90eXBlX2RlZmluZWQKKyt0eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfaW5mbyBlbXUxMGsxX2Z4ODAxMF9pbmZvX3Q7CisrdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByIGVtdTEwazFfZng4MDEwX2NvbnRyb2xfZ3ByX3Q7CisrdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX2NvZGUgZW11MTBrMV9meDgwMTBfY29kZV90OworK3R5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF90cmFtIGVtdTEwazFfZng4MDEwX3RyYW1fdDsKKyt0eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfcGNtX3JlYyBlbXUxMGsxX2Z4ODAxMF9wY21fdDsKKyt0eXBlZGVmIHN0cnVjdCBlbXUxMGsxX2N0bF9lbGVtX2lkIGVtdTEwazFfY3RsX2VsZW1faWRfdDsKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2hkc3AuaCBiL2luY2x1ZGUvc291bmQvaGRzcC5oCitpbmRleCA3OGZiNzQ1Yi4uZThmOTMxNTYgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL2hkc3AuaAorKysrIGIvaW5jbHVkZS9zb3VuZC9oZHNwLmgKK0BAIC0xLDIgKzEsMTIgQEAKKyAjaW5jbHVkZSA8YWxzYS9zb3VuZC90eXBlX2NvbXBhdC5oPgorICNpbmNsdWRlIDxhbHNhL3NvdW5kL3VhcGkvaGRzcC5oPgorKyNpZm5kZWYgX19oZHNwX3R5cGVfZGVmaW5lZAorKyNkZWZpbmUgX19oZHNwX3R5cGVfZGVmaW5lZAorK3R5cGVkZWYgZW51bSBIRFNQX0lPX1R5cGUgSERTUF9JT19UeXBlOworK3R5cGVkZWYgc3RydWN0IGhkc3BfcGVha19ybXMgaGRzcF9wZWFrX3Jtc190OworK3R5cGVkZWYgc3RydWN0IGhkc3BfY29uZmlnX2luZm8gaGRzcF9jb25maWdfaW5mb190OworK3R5cGVkZWYgc3RydWN0IGhkc3BfZmlybXdhcmUgaGRzcF9maXJtd2FyZV90OworK3R5cGVkZWYgc3RydWN0IGhkc3BfdmVyc2lvbiBoZHNwX3ZlcnNpb25fdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwX21peGVyIGhkc3BfbWl4ZXJfdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwXzk2MzJfYWViIGhkc3BfOTYzMl9hZWJfdDsKKysjZW5kaWYKK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL2hkc3BtLmggYi9pbmNsdWRlL3NvdW5kL2hkc3BtLmgKK2luZGV4IGFmNmQxOWVkLi5kOTA5NWQ5ZiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvaGRzcG0uaAorKysrIGIvaW5jbHVkZS9zb3VuZC9oZHNwbS5oCitAQCAtMSwyICsxLDEwIEBACisgI2luY2x1ZGUgPGFsc2Evc291bmQvdHlwZV9jb21wYXQuaD4KKyAjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL2hkc3BtLmg+CisrI2lmbmRlZiBfX2hkc3BtX3R5cGVfZGVmaW5lZAorKyNkZWZpbmUgX19oZHNwbV90eXBlX2RlZmluZWQKKyt0eXBlZGVmIHN0cnVjdCBoZHNwbV9wZWFrX3JtcyBoZHNwbV9wZWFrX3Jtc190OworK3R5cGVkZWYgc3RydWN0IGhkc3BtX2NvbmZpZ19pbmZvIGhkc3BtX2NvbmZpZ19pbmZvX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fdmVyc2lvbiBoZHNwbV92ZXJzaW9uX3Q7CisrdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fY2hhbm5lbGZhZGVyIHNuZF9oZHNwbV9jaGFubmVsZmFkZXJfdDsKKyt0eXBlZGVmIHN0cnVjdCBoZHNwbV9taXhlciBoZHNwbV9taXhlcl90OworKyNlbmRpZgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvc2IxNl9jc3AuaCBiL2luY2x1ZGUvc291bmQvc2IxNl9jc3AuaAoraW5kZXggMjQxMjFmY2IuLmZkMDJiYzU2IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9zb3VuZC9zYjE2X2NzcC5oCisrKysgYi9pbmNsdWRlL3NvdW5kL3NiMTZfY3NwLmgKK0BAIC0xICsxLDUgQEAKKyAjaW5jbHVkZSA8YWxzYS9zb3VuZC91YXBpL3NiMTZfY3NwLmg+CisrI2lmbmRlZiBfX3NiMTZfY3NwX3R5cGVfZGVmaW5lZAorKyNkZWZpbmUgX19zYjE2X2NzcF90eXBlX2RlZmluZWQKKyt0eXBlZGVmIHN0cnVjdCBzbmRfc2JfY3NwX21pY3JvY29kZSBzbmRfc2JfY3NwX21pY3JvY29kZV90OworKyNlbmRpZgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvc291bmQvdWFwaS9lbXUxMGsxLmggYi9pbmNsdWRlL3NvdW5kL3VhcGkvZW11MTBrMS5oCitpbmRleCBjMTE1MGU0ZC4uNmJjZDc2ZjYgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL3VhcGkvZW11MTBrMS5oCisrKysgYi9pbmNsdWRlL3NvdW5kL3VhcGkvZW11MTBrMS5oCitAQCAtMzgyLDE0ICszODIsNCBAQCBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3BjbV9yZWMgeworICNkZWZpbmUgU05EUlZfRU1VMTBLMV9JT0NUTF9TSU5HTEVfU1RFUAlfSU9XICgnSCcsIDB4ODMsIGludCkKKyAjZGVmaW5lIFNORFJWX0VNVTEwSzFfSU9DVExfREJHX1JFQUQJX0lPUiAoJ0gnLCAweDg0LCBpbnQpCisgCistI2lmbmRlZiBfX0tFUk5FTF9fCistLyogdHlwZWRlZnMgZm9yIGNvbXBhdGliaWxpdHkgdG8gdXNlci1zcGFjZSAqLworLXR5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9pbmZvIGVtdTEwazFfZng4MDEwX2luZm9fdDsKKy10eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHIgZW11MTBrMV9meDgwMTBfY29udHJvbF9ncHJfdDsKKy10eXBlZGVmIHN0cnVjdCBzbmRfZW11MTBrMV9meDgwMTBfY29kZSBlbXUxMGsxX2Z4ODAxMF9jb2RlX3Q7CistdHlwZWRlZiBzdHJ1Y3Qgc25kX2VtdTEwazFfZng4MDEwX3RyYW0gZW11MTBrMV9meDgwMTBfdHJhbV90OworLXR5cGVkZWYgc3RydWN0IHNuZF9lbXUxMGsxX2Z4ODAxMF9wY21fcmVjIGVtdTEwazFfZng4MDEwX3BjbV90OworLXR5cGVkZWYgc3RydWN0IGVtdTEwazFfY3RsX2VsZW1faWQgZW11MTBrMV9jdGxfZWxlbV9pZF90OworLSNlbmRpZgorLQorICNlbmRpZiAvKiBfVUFQSV9fU09VTkRfRU1VMTBLMV9IICovCitkaWZmIC0tZ2l0IGEvaW5jbHVkZS9zb3VuZC91YXBpL2hkc3AuaCBiL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwLmgKK2luZGV4IDg4YzkyYTNmLi43YWMyZDNmMiAxMDA2NDQKKy0tLSBhL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwLmgKKysrKyBiL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwLmgKK0BAIC05NywxMyArOTcsNCBAQCBzdHJ1Y3QgaGRzcF85NjMyX2FlYiB7CisgCisgI2RlZmluZSBTTkRSVl9IRFNQX0lPQ1RMX0dFVF85NjMyX0FFQiBfSU9SKCdIJywgMHg0NSwgc3RydWN0IGhkc3BfOTYzMl9hZWIpCisgCistLyogdHlwZWRlZnMgZm9yIGNvbXBhdGliaWxpdHkgdG8gdXNlci1zcGFjZSAqLworLXR5cGVkZWYgZW51bSBIRFNQX0lPX1R5cGUgSERTUF9JT19UeXBlOworLXR5cGVkZWYgc3RydWN0IGhkc3BfcGVha19ybXMgaGRzcF9wZWFrX3Jtc190OworLXR5cGVkZWYgc3RydWN0IGhkc3BfY29uZmlnX2luZm8gaGRzcF9jb25maWdfaW5mb190OworLXR5cGVkZWYgc3RydWN0IGhkc3BfZmlybXdhcmUgaGRzcF9maXJtd2FyZV90OworLXR5cGVkZWYgc3RydWN0IGhkc3BfdmVyc2lvbiBoZHNwX3ZlcnNpb25fdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwX21peGVyIGhkc3BfbWl4ZXJfdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwXzk2MzJfYWViIGhkc3BfOTYzMl9hZWJfdDsKKy0KKyAjZW5kaWYgLyogX19TT1VORF9IRFNQX0ggKi8KK2RpZmYgLS1naXQgYS9pbmNsdWRlL3NvdW5kL3VhcGkvaGRzcG0uaCBiL2luY2x1ZGUvc291bmQvdWFwaS9oZHNwbS5oCitpbmRleCAyZDkxZjkwZS4uM2ZiZmQ5ZGMgMTAwNjQ0CistLS0gYS9pbmNsdWRlL3NvdW5kL3VhcGkvaGRzcG0uaAorKysrIGIvaW5jbHVkZS9zb3VuZC91YXBpL2hkc3BtLmgKK0BAIC0yMTksMTIgKzIxOSw0IEBAIHN0cnVjdCBoZHNwbV9taXhlcl9pb2N0bCB7CisgLyogdXNlIGluZGlyZWN0IGFjY2VzcyBkdWUgdG8gdGhlIGxpbWl0IG9mIGlvY3RsIGJpdCBzaXplICovCisgI2RlZmluZSBTTkRSVl9IRFNQTV9JT0NUTF9HRVRfTUlYRVIgX0lPUignSCcsIDB4NDQsIHN0cnVjdCBoZHNwbV9taXhlcl9pb2N0bCkKKyAKKy0vKiB0eXBlZGVmcyBmb3IgY29tcGF0aWJpbGl0eSB0byB1c2VyLXNwYWNlICovCistdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fcGVha19ybXMgaGRzcG1fcGVha19ybXNfdDsKKy10eXBlZGVmIHN0cnVjdCBoZHNwbV9jb25maWdfaW5mbyBoZHNwbV9jb25maWdfaW5mb190OworLXR5cGVkZWYgc3RydWN0IGhkc3BtX3ZlcnNpb24gaGRzcG1fdmVyc2lvbl90OworLXR5cGVkZWYgc3RydWN0IGhkc3BtX2NoYW5uZWxmYWRlciBzbmRfaGRzcG1fY2hhbm5lbGZhZGVyX3Q7CistdHlwZWRlZiBzdHJ1Y3QgaGRzcG1fbWl4ZXIgaGRzcG1fbWl4ZXJfdDsKKy0KKy0KKyAjZW5kaWYKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLXVjbS1Vc2Utc3RybmNtcC10by1hdm9pZC1hY2Nlc3Mtb3V0LW9mLWJvdW5kYXJ5LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDEtdWNtLVVzZS1zdHJuY21wLXRvLWF2b2lkLWFjY2Vzcy1vdXQtb2YtYm91bmRhcnkucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTZkY2Q4YQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAxLXVjbS1Vc2Utc3RybmNtcC10by1hdm9pZC1hY2Nlc3Mtb3V0LW9mLWJvdW5kYXJ5LnBhdGNoCkBAIC0wLDAgKzEsNDEgQEAKK0Zyb20gNGI2ZmUzNzJjNjhkMWZmNTBlN2MxNjFjZmZhZGViMjk4NzM0ZjQ5YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IHBhdWxoc2lhIDxwYXVsaHNpYUBjaHJvbWl1bS5vcmc+CitEYXRlOiBTYXQsIDMwIE5vdiAyMDE5IDAzOjM1OjMwICswODAwCitTdWJqZWN0OiBbUEFUQ0ggMS81XSB1Y206IFVzZSBzdHJuY21wIHRvIGF2b2lkIGFjY2Vzcy1vdXQtb2YtYm91bmRhcnkKKworSWYgdGhlIGxlbmd0aCBvZiB0aGUgaWRlbnRpZmllciBpcyBsZXNzIHRoYW4gdGhlIGxlbmd0aCBvZiB0aGUgcHJlZml4LAorYWNjZXNzLW91dC1vZi1ib3VuZGFyeSB3aWxsIG9jY3VyIGluIG1lbWNtcCgpLgorCitTaWduZWQtb2ZmLWJ5OiBwYXVsaHNpYSA8cGF1bGhzaWFAY2hyb21pdW0ub3JnPgorU2lnbmVkLW9mZi1ieTogSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgc3JjL3VjbS9tYWluLmMgfCA4ICsrKysrLS0tCisgMSBmaWxlIGNoYW5nZWQsIDUgaW5zZXJ0aW9ucygrKSwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy91Y20vbWFpbi5jIGIvc3JjL3VjbS9tYWluLmMKK2luZGV4IGIwYjZmZmIzLi4yNTJlNTBkOSAxMDA2NDQKKy0tLSBhL3NyYy91Y20vbWFpbi5jCisrKysgYi9zcmMvdWNtL21haW4uYworQEAgLTYxLDExICs2MSwxMyBAQCBzdGF0aWMgaW50IGNoZWNrX2lkZW50aWZpZXIoY29uc3QgY2hhciAqaWRlbnRpZmllciwgY29uc3QgY2hhciAqcHJlZml4KQorIHsKKyAJaW50IGxlbjsKKyAKKy0JaWYgKHN0cmNtcChpZGVudGlmaWVyLCBwcmVmaXgpID09IDApCistCQlyZXR1cm4gMTsKKyAJbGVuID0gc3RybGVuKHByZWZpeCk7CistCWlmIChtZW1jbXAoaWRlbnRpZmllciwgcHJlZml4LCBsZW4pID09IDAgJiYgaWRlbnRpZmllcltsZW5dID09ICcvJykKKysJaWYgKHN0cm5jbXAoaWRlbnRpZmllciwgcHJlZml4LCBsZW4pICE9IDApCisrCQlyZXR1cm4gMDsKKysKKysJaWYgKGlkZW50aWZpZXJbbGVuXSA9PSAwIHx8IGlkZW50aWZpZXJbbGVuXSA9PSAnLycpCisgCQlyZXR1cm4gMTsKKysKKyAJcmV0dXJuIDA7CisgfQorIAorLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDItdWNtLXJldHVybi1hbHdheXMtYXQtbGVhc3QtTlVMTC1pZi1uby1saXN0LWlzLWF2YWlsYS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAyLXVjbS1yZXR1cm4tYWx3YXlzLWF0LWxlYXN0LU5VTEwtaWYtbm8tbGlzdC1pcy1hdmFpbGEucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDI5NzNmYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAyLXVjbS1yZXR1cm4tYWx3YXlzLWF0LWxlYXN0LU5VTEwtaWYtbm8tbGlzdC1pcy1hdmFpbGEucGF0Y2gKQEAgLTAsMCArMSw0NSBAQAorRnJvbSA1OGY5ZGM5YmQxMmE1MWVmYTEyZGJjNjdlMjAwZjRkODVjZDNkYTA3IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4KK0RhdGU6IEZyaSwgMjkgTm92IDIwMTkgMjI6Mjg6MjYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAyLzVdIHVjbTogcmV0dXJuIGFsd2F5cyBhdCBsZWFzdCBOVUxMIGlmIG5vIGxpc3QgaXMgYXZhaWxhYmxlCisgaW4gc25kX3VzZV9jYXNlX2dldF9saXN0KCkKKworU2lnbmVkLW9mZi1ieTogSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgc3JjL3VjbS9tYWluLmMgfCA4ICsrKysrKy0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy91Y20vbWFpbi5jIGIvc3JjL3VjbS9tYWluLmMKK2luZGV4IDI1MmU1MGQ5Li5iODBkYjY1ZiAxMDA2NDQKKy0tLSBhL3NyYy91Y20vbWFpbi5jCisrKysgYi9zcmMvdWNtL21haW4uYworQEAgLTExNjAsOCArMTE2MCwxMCBAQCBzdGF0aWMgaW50IGdldF9zdXBjb25fZGV2aWNlX2xpc3Qoc25kX3VzZV9jYXNlX21ncl90ICp1Y19tZ3IsCisgCisgCW1vZGlmaWVyID0gZmluZF9tb2RpZmllcih1Y19tZ3IsIHZlcmIsIG5hbWUsIDApOworIAlpZiAobW9kaWZpZXIpIHsKKy0JCWlmIChtb2RpZmllci0+ZGV2X2xpc3QudHlwZSAhPSB0eXBlKQorKwkJaWYgKG1vZGlmaWVyLT5kZXZfbGlzdC50eXBlICE9IHR5cGUpIHsKKysJCQkqbGlzdCA9IE5VTEw7CisgCQkJcmV0dXJuIDA7CisrCQl9CisgCQlyZXR1cm4gZ2V0X2xpc3QoJm1vZGlmaWVyLT5kZXZfbGlzdC5saXN0LCBsaXN0LAorIAkJCQlzdHJ1Y3QgZGV2X2xpc3Rfbm9kZSwgbGlzdCwKKyAJCQkJbmFtZSk7CitAQCAtMTE2OSw4ICsxMTcxLDEwIEBAIHN0YXRpYyBpbnQgZ2V0X3N1cGNvbl9kZXZpY2VfbGlzdChzbmRfdXNlX2Nhc2VfbWdyX3QgKnVjX21nciwKKyAKKyAJZGV2aWNlID0gZmluZF9kZXZpY2UodWNfbWdyLCB2ZXJiLCBuYW1lLCAwKTsKKyAJaWYgKGRldmljZSkgeworLQkJaWYgKGRldmljZS0+ZGV2X2xpc3QudHlwZSAhPSB0eXBlKQorKwkJaWYgKGRldmljZS0+ZGV2X2xpc3QudHlwZSAhPSB0eXBlKSB7CisrCQkJKmxpc3QgPSBOVUxMOworIAkJCXJldHVybiAwOworKwkJfQorIAkJcmV0dXJuIGdldF9saXN0KCZkZXZpY2UtPmRldl9saXN0Lmxpc3QsIGxpc3QsCisgCQkJCXN0cnVjdCBkZXZfbGlzdF9ub2RlLCBsaXN0LAorIAkJCQluYW1lKTsKKy0tIAorMi4yMC4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDAzLW5hbWVoaW50LWNvcnJlY3QtdGhlLWFyZ3MtY2hlY2sucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMy1uYW1laGludC1jb3JyZWN0LXRoZS1hcmdzLWNoZWNrLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjgyZjhiMmIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwMy1uYW1laGludC1jb3JyZWN0LXRoZS1hcmdzLWNoZWNrLnBhdGNoCkBAIC0wLDAgKzEsMzQgQEAKK0Zyb20gMTBmMzQwMWNlMzU2YTY3NWUyNDQwOTkzNDU3ZWU3YzhjN2U5ZmNmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEphcm9zbGF2IEt5c2VsYSA8cGVyZXhAcGVyZXguY3o+CitEYXRlOiBTdW4sIDEgRGVjIDIwMTkgMTQ6MjY6NDAgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAzLzVdIG5hbWVoaW50OiBjb3JyZWN0IHRoZSBAYXJncyBjaGVjaworCitCdWdMaW5rOiBodHRwczovL2dpdGh1Yi5jb20vYWxzYS1wcm9qZWN0L2Fsc2EtcGx1Z2lucy9pc3N1ZXMvMworU2lnbmVkLW9mZi1ieTogSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgc3JjL2NvbnRyb2wvbmFtZWhpbnQuYyB8IDYgKysrKysrCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NvbnRyb2wvbmFtZWhpbnQuYyBiL3NyYy9jb250cm9sL25hbWVoaW50LmMKK2luZGV4IDgwOGRmNmI1Li40OTI3ZWY5NyAxMDA2NDQKKy0tLSBhL3NyYy9jb250cm9sL25hbWVoaW50LmMKKysrKyBiL3NyYy9jb250cm9sL25hbWVoaW50LmMKK0BAIC0zNDgsNiArMzQ4LDEyIEBAIHN0YXRpYyBpbnQgdHJ5X2NvbmZpZyhzbmRfY29uZmlnX3QgKmNvbmZpZywKKyAJCWdvdG8gX19jbGVhbnVwOworIAlpZiAoc25kX2NvbmZpZ19zZWFyY2gocmVzLCAiQGFyZ3MiLCAmY2ZnKSA+PSAwKSB7CisgCQlzbmRfY29uZmlnX2Zvcl9lYWNoKGksIG5leHQsIGNmZykgeworKwkJCS8qIHNraXAgdGhlIGFyZ3VtZW50IGxpc3QgKi8KKysJCQlzbmRfY29uZmlnX2dldF9pZChzbmRfY29uZmlnX2l0ZXJhdG9yX2VudHJ5KGkpLCAmc3RyKTsKKysJCQl3aGlsZSAoKnN0ciAmJiAqc3RyID49ICcwJyAmJiAqc3RyIDw9ICc5Jykgc3RyKys7CisrCQkJaWYgKCpzdHIgPT0gJ1wwJykKKysJCQkJY29udGludWU7CisrCQkJLyogdGhlIGFyZ3VtZW50IGRlZmluaXRpb24gbXVzdCBoYXZlIHRoZSBkZWZhdWx0ICovCisgCQkJaWYgKHNuZF9jb25maWdfc2VhcmNoKHNuZF9jb25maWdfaXRlcmF0b3JfZW50cnkoaSksCisgCQkJCQkgICAgICAiZGVmYXVsdCIsIE5VTEwpIDwgMCkgeworIAkJCQllcnIgPSAtRUlOVkFMOworLS0gCisyLjIwLjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDQtbmFtZWhpbnQtaW1wcm92ZS10aGUtcHJldmlvdXMtcGF0Y2gtY2hlY2stdGhlLXJldHVybi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDA0LW5hbWVoaW50LWltcHJvdmUtdGhlLXByZXZpb3VzLXBhdGNoLWNoZWNrLXRoZS1yZXR1cm4ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTgxOTJmNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLWxpYi8wMDA0LW5hbWVoaW50LWltcHJvdmUtdGhlLXByZXZpb3VzLXBhdGNoLWNoZWNrLXRoZS1yZXR1cm4ucGF0Y2gKQEAgLTAsMCArMSwzMSBAQAorRnJvbSAxZmE2NjY0ZDVmMGNjN2QyMWVkY2ViYTY2OTVhNGMyODU0M2MyY2FiIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4KK0RhdGU6IFN1biwgMSBEZWMgMjAxOSAxNDozMDo1NCArMDEwMAorU3ViamVjdDogW1BBVENIIDQvNV0gbmFtZWhpbnQ6IGltcHJvdmUgdGhlIHByZXZpb3VzIHBhdGNoIChjaGVjayB0aGUgcmV0dXJuZWQKKyB2YWx1ZSkKKworU2lnbmVkLW9mZi1ieTogSmFyb3NsYXYgS3lzZWxhIDxwZXJleEBwZXJleC5jej4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorU2lnbmVkLW9mZi1ieTogVGFudSBLYXNraW5lbiA8dGFudWtAaWtpLmZpPgorLS0tCisgc3JjL2NvbnRyb2wvbmFtZWhpbnQuYyB8IDMgKystCisgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvc3JjL2NvbnRyb2wvbmFtZWhpbnQuYyBiL3NyYy9jb250cm9sL25hbWVoaW50LmMKK2luZGV4IDQ5MjdlZjk3Li42MGM0OGFlMyAxMDA2NDQKKy0tLSBhL3NyYy9jb250cm9sL25hbWVoaW50LmMKKysrKyBiL3NyYy9jb250cm9sL25hbWVoaW50LmMKK0BAIC0zNDksNyArMzQ5LDggQEAgc3RhdGljIGludCB0cnlfY29uZmlnKHNuZF9jb25maWdfdCAqY29uZmlnLAorIAlpZiAoc25kX2NvbmZpZ19zZWFyY2gocmVzLCAiQGFyZ3MiLCAmY2ZnKSA+PSAwKSB7CisgCQlzbmRfY29uZmlnX2Zvcl9lYWNoKGksIG5leHQsIGNmZykgeworIAkJCS8qIHNraXAgdGhlIGFyZ3VtZW50IGxpc3QgKi8KKy0JCQlzbmRfY29uZmlnX2dldF9pZChzbmRfY29uZmlnX2l0ZXJhdG9yX2VudHJ5KGkpLCAmc3RyKTsKKysJCQlpZiAoc25kX2NvbmZpZ19nZXRfaWQoc25kX2NvbmZpZ19pdGVyYXRvcl9lbnRyeShpKSwgJnN0cikgPCAwKQorKwkJCQljb250aW51ZTsKKyAJCQl3aGlsZSAoKnN0ciAmJiAqc3RyID49ICcwJyAmJiAqc3RyIDw9ICc5Jykgc3RyKys7CisgCQkJaWYgKCpzdHIgPT0gJ1wwJykKKyAJCQkJY29udGludWU7CistLSAKKzIuMjAuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWIvMDAwNS11Y20tRG8tbm90LWZhaWwtdG8tcGFyc2UtY29uZmlncy1vbi1jYXJkcy13aXRoLWFuLWVtLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDUtdWNtLURvLW5vdC1mYWlsLXRvLXBhcnNlLWNvbmZpZ3Mtb24tY2FyZHMtd2l0aC1hbi1lbS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYmMwYTRjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliLzAwMDUtdWNtLURvLW5vdC1mYWlsLXRvLXBhcnNlLWNvbmZpZ3Mtb24tY2FyZHMtd2l0aC1hbi1lbS5wYXRjaApAQCAtMCwwICsxLDg2IEBACitGcm9tIDk3NmY4ZjYyMjM4ZjBkODM3NTg0YWRjN2MzMTAzNWJkYjI5YjZkNmYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBIYW5zIGRlIEdvZWRlIDxoZGVnb2VkZUByZWRoYXQuY29tPgorRGF0ZTogVHVlLCAzIERlYyAyMDE5IDE4OjI3OjM5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0ggNS81XSB1Y206IERvIG5vdCBmYWlsIHRvIHBhcnNlIGNvbmZpZ3Mgb24gY2FyZHMgd2l0aCBhbiBlbXB0eQorIENhcmRDb21wb25lbnRzIGxpc3RzCisKK1NpbmNlIHRoZSBVQ00gcHJvZmlsZXMgZm9yIGFsbCBCYXktIGFuZCBDaGVycnktVHJhaWwgU1NUIGNhcmRzIGhhdmUgYmVlbgorbW92ZWQgb3ZlciB0byBVQ00yLCBwYXJzaW5nIHRoZW0gZmFpbHMgd2l0aDoKKworQUxTQSBsaWIgdWNtX3N1YnMuYzoyMjA6KHVjX21ncl9nZXRfc3Vic3RpdHV0ZWRfdmFsdWUpIHZhcmlhYmxlICcke0NhcmRDb21wb25lbnRzfScgaXMgbm90IGRlZmluZWQgaW4gdGhpcyBjb250ZXh0IQorCitUaGlzIGNvbXBsZXRlbHkgYnJlYWtzIGF1ZGlvIHN1cHBvcnQgb24gYWxsIEJheS0gYW5kIENoZXJyeS1UcmFpbCBkZXZpY2VzLgorCitUaGlzIGlzIGNhdXNlZCBieSB0aGVzZSBub24tU09GIEFTb0MgdXNpbmcgY2FyZHMgaGF2aW5nIGFuIGVtcHR5CitDYXJkQ29tcG9uZW50cyBsaXN0LiBXaGljaCBpbiBpdHNlbGYgaXMgZmluZSwgYnV0IGlzIHJlamVjdGVkIGJ5Cit0aGUgdWNtX3N1YnMuYyBjb2RlLiBUaGlzIGNvbW1pdCBjaGFuZ2VzIHRoZSB1Y21fc3VicyBjb2RlIHRvIGFjY2VwdAorYW4gZW1wdHkgc3RyaW5nIGFzIGEgdmFsaWQgdmFsdWUgZm9yIENhcmRDb21wb25lbnRzIHJlc3RvcmluZyBhdWRpbworZnVuY3Rpb25hbGl0eSBvbiB0aGVzZSBib2FyZHMuCisKK1NpZ25lZC1vZmYtYnk6IEhhbnMgZGUgR29lZGUgPGhkZWdvZWRlQHJlZGhhdC5jb20+CitTaWduZWQtb2ZmLWJ5OiBKYXJvc2xhdiBLeXNlbGEgPHBlcmV4QHBlcmV4LmN6PgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0CitTaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+CistLS0KKyBzcmMvdWNtL3VjbV9zdWJzLmMgfCAyMCArKysrKysrKysrKystLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMiBpbnNlcnRpb25zKCspLCA4IGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvc3JjL3VjbS91Y21fc3Vicy5jIGIvc3JjL3VjbS91Y21fc3Vicy5jCitpbmRleCAwMGFmYTllMy4uOTBlMzk1ZjAgMTAwNjQ0CistLS0gYS9zcmMvdWNtL3VjbV9zdWJzLmMKKysrKyBiL3NyYy91Y20vdWNtX3N1YnMuYworQEAgLTI1LDYgKzI1LDcgQEAKKyAgKi8KKyAKKyAjaW5jbHVkZSAidWNtX2xvY2FsLmgiCisrI2luY2x1ZGUgPHN0ZGJvb2wuaD4KKyAjaW5jbHVkZSA8c3lzL3N0YXQuaD4KKyAjaW5jbHVkZSA8bGltaXRzLmg+CisgCitAQCAtMTQ1LDEwICsxNDYsMTEgQEAgc3RhdGljIGNoYXIgKnJ2YWxfc3lzZnMoc25kX3VzZV9jYXNlX21ncl90ICp1Y19tZ3IgQVRUUklCVVRFX1VOVVNFRCwgY29uc3QgY2hhcgorIAlyZXR1cm4gc3RyZHVwKHBhdGgpOworIH0KKyAKKy0jZGVmaW5lIE1BVENIX1ZBUklBQkxFKG5hbWUsIGlkLCBmY24pCQkJCQlcCisrI2RlZmluZSBNQVRDSF9WQVJJQUJMRShuYW1lLCBpZCwgZmNuLCBlbXB0eV9vaykJCQkJXAorIAlpZiAoc3RybmNtcCgobmFtZSksIChpZCksIHNpemVvZihpZCkgLSAxKSA9PSAwKSB7IAkJXAorIAkJcnZhbCA9IGZjbih1Y19tZ3IpOwkJCQkJXAorIAkJaWRzaXplID0gc2l6ZW9mKGlkKSAtIDE7CQkJCVwKKysJCWFsbG93X2VtcHR5ID0gKGVtcHR5X29rKTsJCQkJXAorIAkJZ290byBfX3J2YWw7CQkJCQkJXAorIAl9CisgCitAQCAtMTg5LDEyICsxOTEsMTQgQEAgaW50IHVjX21ncl9nZXRfc3Vic3RpdHV0ZWRfdmFsdWUoc25kX3VzZV9jYXNlX21ncl90ICp1Y19tZ3IsCisgCisgCXdoaWxlICgqdmFsdWUpIHsKKyAJCWlmICgqdmFsdWUgPT0gJyQnICYmICoodmFsdWUrMSkgPT0gJ3snKSB7CistCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NvbmZOYW1lfSIsIHJ2YWxfY29uZl9uYW1lKTsKKy0JCQlNQVRDSF9WQVJJQUJMRSh2YWx1ZSwgIiR7Q2FyZElkfSIsIHJ2YWxfY2FyZF9pZCk7CistCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmREcml2ZXJ9IiwgcnZhbF9jYXJkX2RyaXZlcik7CistCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmROYW1lfSIsIHJ2YWxfY2FyZF9uYW1lKTsKKy0JCQlNQVRDSF9WQVJJQUJMRSh2YWx1ZSwgIiR7Q2FyZExvbmdOYW1lfSIsIHJ2YWxfY2FyZF9sb25nbmFtZSk7CistCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmRDb21wb25lbnRzfSIsIHJ2YWxfY2FyZF9jb21wb25lbnRzKTsKKysJCQlib29sIGFsbG93X2VtcHR5ID0gZmFsc2U7CisrCisrCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NvbmZOYW1lfSIsIHJ2YWxfY29uZl9uYW1lLCBmYWxzZSk7CisrCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmRJZH0iLCBydmFsX2NhcmRfaWQsIGZhbHNlKTsKKysJCQlNQVRDSF9WQVJJQUJMRSh2YWx1ZSwgIiR7Q2FyZERyaXZlcn0iLCBydmFsX2NhcmRfZHJpdmVyLCBmYWxzZSk7CisrCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmROYW1lfSIsIHJ2YWxfY2FyZF9uYW1lLCBmYWxzZSk7CisrCQkJTUFUQ0hfVkFSSUFCTEUodmFsdWUsICIke0NhcmRMb25nTmFtZX0iLCBydmFsX2NhcmRfbG9uZ25hbWUsIGZhbHNlKTsKKysJCQlNQVRDSF9WQVJJQUJMRSh2YWx1ZSwgIiR7Q2FyZENvbXBvbmVudHN9IiwgcnZhbF9jYXJkX2NvbXBvbmVudHMsIHRydWUpOworIAkJCU1BVENIX1ZBUklBQkxFMih2YWx1ZSwgIiR7ZW52OiIsIHJ2YWxfZW52KTsKKyAJCQlNQVRDSF9WQVJJQUJMRTIodmFsdWUsICIke3N5czoiLCBydmFsX3N5c2ZzKTsKKyAJCQllcnIgPSAtRUlOVkFMOworQEAgLTIwOCw3ICsyMTIsNyBAQCBpbnQgdWNfbWdyX2dldF9zdWJzdGl0dXRlZF92YWx1ZShzbmRfdXNlX2Nhc2VfbWdyX3QgKnVjX21nciwKKyAJCQl9CisgCQkJZ290byBfX2Vycm9yOworIF9fcnZhbDoKKy0JCQlpZiAocnZhbCA9PSBOVUxMIHx8IHJ2YWxbMF0gPT0gJ1wwJykgeworKwkJCWlmIChydmFsID09IE5VTEwgfHwgKCFhbGxvd19lbXB0eSAmJiBydmFsWzBdID09ICdcMCcpKSB7CisgCQkJCWZyZWUocnZhbCk7CisgCQkJCXN0cm5jcHkociwgdmFsdWUsIGlkc2l6ZSk7CisgCQkJCXJbaWRzaXplXSA9ICdcMCc7CistLSAKKzIuMjAuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4xLjkuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDJjNjNlZTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMS45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJBTFNBIHNvdW5kIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKLVNFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgotTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9zb2NrZXQuYzttZDU9ZGQxYmM3ZjQ0ODcyNjkwMjI0ZDg5YzFhOTgwNmU0OTU7YmVnaW5saW5lPTE7ZW5kbGluZT0yNiBcCi0gICAgICAgICAgICAgICAgICAgICIKLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5hbHNhLXByb2plY3Qub3JnL2ZpbGVzL3B1Yi9saWIvJHtCUH0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICJlNmQ0MjlkYmRjZmFhMGYwMzRkOTA3ZmE2ZGMzNzM1ZSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI0ODgzNzNhZWY1Mzk2NjgyZjNhNDExYTZkMDY0YWUwYWQxOTZiOWM5NjI2OWQwYmI5MTJmYmRlZWM5NGI5OTRiIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotRVhUUkFfT0VDT05GICs9ICIgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdUQVJHRVRfRlBVJywgJ3NvZnQnLCAnLS13aXRoLXNvZnRmbG9hdCcsICcnLCBkKX0gXAotICAgIC0tZGlzYWJsZS1weXRob24gXAotIgotCi1QQUNLQUdFUyA9KyAiYWxzYS1zZXJ2ZXIgYWxzYS1jb25mIGFsc2EtZG9jIgotCi1GSUxFU19hbHNhLXNlcnZlciA9ICIke2JpbmRpcn0vKiIKLUZJTEVTX2Fsc2EtY29uZiA9ICIke2RhdGFkaXJ9L2Fsc2EvIgotCi1SREVQRU5EU18ke1BOfV9jbGFzcy10YXJnZXQgPSAiYWxzYS1jb25mIgotCi0jIHVwZ3JhZGUgcGF0aAotUlBST1ZJREVTXyR7UE59ID0gImxpYmFzb3VuZCIKLVJSRVBMQUNFU18ke1BOfSA9ICJsaWJhc291bmQiCi1SQ09ORkxJQ1RTXyR7UE59ID0gImxpYmFzb3VuZCIKLQotUlBST1ZJREVTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKLVJSRVBMQUNFU18ke1BOfS1kZXYgPSAiYWxzYS1kZXYiCi1SQ09ORkxJQ1RTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKLQotUlBST1ZJREVTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKLVJSRVBMQUNFU19hbHNhLWNvbmYgPSAiYWxzYS1jb25mLWJhc2UiCi1SQ09ORkxJQ1RTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMi4xLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1saWJfMS4yLjEuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lMmJjNjFmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtbGliXzEuMi4xLjIuYmIKQEAgLTAsMCArMSw1MiBAQAorU1VNTUFSWSA9ICJBTFNBIHNvdW5kIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmFsc2EtcHJvamVjdC5vcmciCitCVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKK1NFQ1RJT04gPSAibGlicy9tdWx0aW1lZGlhIgorTElDRU5TRSA9ICJMR1BMdjIuMSAmIEdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9zb2NrZXQuYzttZDU9Mjg1Njc1YjQ1ZTgzZjU3MWM2YTk1N2ZlNGFiNzljOTM7YmVnaW5saW5lPTk7ZW5kbGluZT0yNCBcCisgICAgICAgICAgICAgICAgICAgICIKKworU1JDX1VSSSA9ICJodHRwczovL3d3dy5hbHNhLXByb2plY3Qub3JnL2ZpbGVzL3B1Yi9saWIvJHtCUH0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy1yZW1vdmUtYW4tdW5uZWNlc3NhcnktbGlidG9vbC1maXgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS11Y20tVXNlLXN0cm5jbXAtdG8tYXZvaWQtYWNjZXNzLW91dC1vZi1ib3VuZGFyeS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXVjbS1yZXR1cm4tYWx3YXlzLWF0LWxlYXN0LU5VTEwtaWYtbm8tbGlzdC1pcy1hdmFpbGEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1uYW1laGludC1jb3JyZWN0LXRoZS1hcmdzLWNoZWNrLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtbmFtZWhpbnQtaW1wcm92ZS10aGUtcHJldmlvdXMtcGF0Y2gtY2hlY2stdGhlLXJldHVybi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDA1LXVjbS1Eby1ub3QtZmFpbC10by1wYXJzZS1jb25maWdzLW9uLWNhcmRzLXdpdGgtYW4tZW0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYWxzYS1zb3VuZC0uaC1mb3ItZXh0ZXJuYWwtcHJvZ3JhbXMucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS11YXBpLU1vdmUtdHlwZWRlZnMtZnJvbS11YXBpLXRvLXNvdW5kLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjgyZGRkMzY5ODQ2OWJlZWMxNDdlNGY0YTY3MTM0ZWEwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk1OGUyNjBlMzY3M2YxZjZmZjZiMmQyYzBkZjNmYzJlNDY5YmVhNWIyOTU3MTYzY2U5NmNlMTdmMjNlODc5NDMiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitFWFRSQV9PRUNPTkYgKz0gIiBcCisgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RBUkdFVF9GUFUnLCAnc29mdCcsICctLXdpdGgtc29mdGZsb2F0JywgJycsIGQpfSBcCisgICAgLS1kaXNhYmxlLXB5dGhvbiBcCisiCisKK1BBQ0tBR0VTID0rICJhbHNhLXNlcnZlciBhbHNhLWNvbmYgbGliYXRvcG9sb2d5IgorCitGSUxFU19hbHNhLXNlcnZlciA9ICIke2JpbmRpcn0vKiIKK0ZJTEVTX2Fsc2EtY29uZiA9ICIke2RhdGFkaXJ9L2Fsc2EvIgorRklMRVNfbGliYXRvcG9sb2d5ID0gIiR7bGliZGlyfS9saWJhdG9wb2xvZ3kuc28uKiIKKworUkRFUEVORFNfJHtQTn1fY2xhc3MtdGFyZ2V0ID0gImFsc2EtY29uZiBhbHNhLXVjbS1jb25mIgorUkRFUEVORFNfbGliYXRvcG9sb2d5X2NsYXNzLXRhcmdldCA9ICJhbHNhLXRvcG9sb2d5LWNvbmYiCisKKyMgdXBncmFkZSBwYXRoCitSUFJPVklERVNfJHtQTn0gPSAibGliYXNvdW5kIgorUlJFUExBQ0VTXyR7UE59ID0gImxpYmFzb3VuZCIKK1JDT05GTElDVFNfJHtQTn0gPSAibGliYXNvdW5kIgorCitSUFJPVklERVNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgorUlJFUExBQ0VTXyR7UE59LWRldiA9ICJhbHNhLWRldiIKK1JDT05GTElDVFNfJHtQTn0tZGV2ID0gImFsc2EtZGV2IgorCitSUFJPVklERVNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgorUlJFUExBQ0VTX2Fsc2EtY29uZiA9ICJhbHNhLWNvbmYtYmFzZSIKK1JDT05GTElDVFNfYWxzYS1jb25mID0gImFsc2EtY29uZi1iYXNlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjEuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjk0ZmM1Yy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMS45LmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTczICswLDAgQEAKLVNVTU1BUlkgPSAiQUxTQSBQbHVnaW5zIgotSE9NRVBBR0UgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmciCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9hbHNhLXByb2plY3Qub3JnL21haW4vaW5kZXgucGhwL0J1Z19UcmFja2luZyIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLQotIyBUaGUgcHJpbWFyeSBsaWNlbnNlIG9mIGFsc2EtcGx1Z2lucyBpcyBMR1BMdjIuMS4KLSMKLSMgbTQvYXR0cmlidXRlcy5tNCBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MisuIG00L2F0dHJpYnV0ZXMubTQgaXMgcGFydCBvZiB0aGUKLSMgYnVpbGQgc3lzdGVtLCBhbmQgZG9lc24ndCBhZmZlY3QgdGhlIGxpY2Vuc2luZyBvZiB0aGUgYnVpbGQgcmVzdWx0LgotIwotIyBUaGUgc2FtcGxlcmF0ZSBwbHVnaW4gc291cmNlIGNvZGUgaXMgbGljZW5zZWQgdW5kZXIgR1BMdjIrIHRvIGJlIGNvbnNpc3RlbnQKLSMgd2l0aCB0aGUgbGlic2FtcGxlcmF0ZSBsaWNlbnNlLiBIb3dldmVyLCBpZiB0aGUgbGljZW5zZWUgaGFzIGEgY29tbWVyY2lhbAotIyBsaWNlbnNlIGZvciBsaWJzYW1wbGVyYXRlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4gbWF5IGJlIHVzZWQgdW5kZXIgdGhlIHRlcm1zCi0jIG9mIExHUEx2Mi4xIGxpa2UgdGhlIHJlc3Qgb2YgdGhlIHBsdWdpbnMuCi1MSUNFTlNFID0gIkxHUEx2Mi4xICYgR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJcCi0gICAgICAgIGZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyBcCi0gICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAotICAgICAgICBmaWxlOi8vbTQvYXR0cmlidXRlcy5tNDtlbmRsaW5lPTMzO21kNT1iMjU5NThkYTQ0YzAyMjMxZTM2NDFmMWJjY2VmNTNlYiBcCi0gICAgICAgIGZpbGU6Ly9yYXRlL3JhdGVfc2FtcGxlcmF0ZS5jO2VuZGxpbmU9MzU7bWQ1PWZkNzdiY2U4NWY0YTMzOGMwZThhYjE4NDMwYjY5ZmFlIFwKLSIKLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5hbHNhLXByb2plY3Qub3JnL2ZpbGVzL3B1Yi9wbHVnaW5zLyR7QlB9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiZTBjYWZmYmQ4NDljNTFlZDgxNzUxMzc4ZjU2Y2I1NjMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTYxNzcyMzAzZGE1MjFhYmJiZjFkOTFmNjNiNDcwYzQ3OTEzOTJkNTcyOGYyMTkyYTQyZDcxMjkyMDc4ZjkwNyIKLQotREVQRU5EUyArPSAiYWxzYS1saWIiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAiXAotICAgICAgICBzYW1wbGVyYXRlIFwKLSAgICAgICAgc3BlZXhkc3AgXAotICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdwdWxzZWF1ZGlvJywgZCl9IFwKLSIKLVBBQ0tBR0VDT05GSUdbYWFmXSA9ICItLWVuYWJsZS1hYWYsLS1kaXNhYmxlLWFhZixhdnRwIgotUEFDS0FHRUNPTkZJR1tqYWNrXSA9ICItLWVuYWJsZS1qYWNrLC0tZGlzYWJsZS1qYWNrLGphY2siCi1QQUNLQUdFQ09ORklHW2xpYmF2XSA9ICItLWVuYWJsZS1saWJhdiwtLWRpc2FibGUtbGliYXYsbGliYXYiCi1QQUNLQUdFQ09ORklHW21hZW1vLXBsdWdpbl0gPSAiLS1lbmFibGUtbWFlbW8tcGx1Z2luLC0tZGlzYWJsZS1tYWVtby1wbHVnaW4iCi1QQUNLQUdFQ09ORklHW21hZW1vLXJlc291cmNlLW1hbmFnZXJdID0gIi0tZW5hYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsLS1kaXNhYmxlLW1hZW1vLXJlc291cmNlLW1hbmFnZXIsZGJ1cyIKLVBBQ0tBR0VDT05GSUdbcHVsc2VhdWRpb10gPSAiLS1lbmFibGUtcHVsc2VhdWRpbywtLWRpc2FibGUtcHVsc2VhdWRpbyxwdWxzZWF1ZGlvIgotUEFDS0FHRUNPTkZJR1tzYW1wbGVyYXRlXSA9ICItLWVuYWJsZS1zYW1wbGVyYXRlLC0tZGlzYWJsZS1zYW1wbGVyYXRlLGxpYnNhbXBsZXJhdGUwIgotUEFDS0FHRUNPTkZJR1tzcGVleGRzcF0gPSAiLS13aXRoLXNwZWV4PWxpYiwtLXdpdGgtc3BlZXg9bm8sc3BlZXhkc3AiCi0KLVBBQ0tBR0VTICs9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdwdWxzZWF1ZGlvJywgJ2Fsc2EtcGx1Z2lucy1wdWxzZWF1ZGlvLWNvbmYnLCAnJywgZCl9IgotCi1QQUNLQUdFU19EWU5BTUlDID0gIl5saWJhc291bmQtbW9kdWxlLS4qIgotCi0jIFRoZSBhbHNhLXBsdWdpbnMgcGFja2FnZSBkb2Vzbid0IGl0c2VsZiBjb250YWluIGFueXRoaW5nLCBpdCBqdXN0IGRlcGVuZHMgb24KLSMgYWxsIGJ1aWx0IHBsdWdpbnMuCi1GSUxFU18ke1BOfSA9ICIiCi1BTExPV19FTVBUWV8ke1BOfSA9ICIxIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlybSAke0R9JHtsaWJkaXJ9L2Fsc2EtbGliLyoubGEKLQotCWlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KLQkJIyBXZSB1c2UgdGhlIGV4YW1wbGUgYXMgaXMuIFVwc3RyZWFtIGluc3RhbGxzIHRoZSBmaWxlIHVuZGVyCi0JCSMgL2V0YywgYnV0IHdlIG1vdmUgaXQgdW5kZXIgL3Vzci9zaGFyZSBhbmQgYWRkIGEgc3ltbGluayB1bmRlcgotCQkjIC9ldGMgdG8gYmUgY29uc2lzdGVudCB3aXRoIG90aGVyIGluc3RhbGxlZCBjb25maWd1cmF0aW9uCi0JCSMgZmlsZXMuCi0JCW12ICR7RH0ke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mLmV4YW1wbGUgJHtEfSR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZgotCQlsbiAtcyAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgJHtEfSR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYKLQlmaQotfQotCi1weXRob24gcG9wdWxhdGVfcGFja2FnZXNfcHJlcGVuZCgpIHsKLSAgICBwbHVnaW5kaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2Fsc2EtbGliLycpCi0gICAgcGFja2FnZXMgPSAiICIuam9pbihkb19zcGxpdF9wYWNrYWdlcyhkLCBwbHVnaW5kaXIsIHInXmxpYmFzb3VuZF9tb2R1bGVfKC4qKVwuc28kJywgJ2xpYmFzb3VuZC1tb2R1bGUtJXMnLCAnQWxzYSBwbHVnaW4gZm9yICVzJywgZXh0cmFfZGVwZW5kcz0nJykpCi0gICAgZC5zZXRWYXIoIlJERVBFTkRTX2Fsc2EtcGx1Z2lucyIsIHBhY2thZ2VzKQotfQotCi0jIE1hbnkgcGx1Z2lucyBoYXZlIGEgY29uZmlndXJhdGlvbiBmaWxlIChwbHVzIGEgc3ltbGluayBpbiAvZXRjKSBhc3NvY2lhdGVkCi0jIHdpdGggdGhlbS4gV2UgcHV0IHRoZSBwbHVnaW4gYW5kIGl0J3MgY29uZmlndXJhdGlvbiB1c3VhbGx5IGluIHRoZSBzYW1lCi0jIHBhY2thZ2UsIGJ1dCB0aGF0J3MgcHJvYmxlbWF0aWMgd2hlbiB0aGUgY29uZmlndXJhdGlvbiBmaWxlIGlzIHJlbGF0ZWQgdG8KLSMgbXVsdGlwbGUgcGx1Z2lucywgYXMgaXMgdGhlIGNhc2Ugd2l0aCB0aGUgcHVsc2UsIG9zcyBhbmQgbWFlbW8gcGx1Z2lucy4gSW4KLSMgY2FzZSBvZiB0aGUgcHVsc2UgcGx1Z2lucywgd2UgaGF2ZSBhIHNlcGFyYXRlIGFsc2EtcGx1Z2lucy1wdWxzZWF1ZGlvLWNvbmYKLSMgcGFja2FnZSB0aGF0IGRlcGVuZHMgb24gYWxsIHRoZSBwdWxzZSBwbHVnaW5zLCB3aGljaCBlbnN1cmVzIHRoYXQgYWxsIHBsdWdpbnMKLSMgdGhhdCB0aGUgY29uZmlndXJhdGlvbiByZWZlcmVuY2VzIGFyZSBpbnN0YWxsZWQuIFRoZSBvc3MgYW5kIG1hZW1vCi0jIGNvbmZpZ3VyYXRpb24gZmlsZXMsIG9uIHRoZSBvdGhlciBoYW5kLCBhcmUgaW4gdGhlIHJlc3BlY3RpdmUgcGNtIHBsdWdpbgotIyBwYWNrYWdlcy4gVGhlcmVmb3JlIGl0J3MgcG9zc2libGUgdG8gaW5zdGFsbCB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHdpdGhvdXQKLSMgdGhlIGN0bCBwbHVnaW4gdGhhdCB0aGUgY29uZmlndXJhdGlvbiBmaWxlIHJlZmVyZW5jZXMuIFRoaXMgaXMgdW5saWtlbHkgdG8KLSMgY2F1c2UgYmlnIHByb2JsZW1zLCBidXQgc29tZSBraW5kIG9mIGltcHJvdmVtZW50IHRvIHRoZSBwYWNrYWdpbmcgY291bGQKLSMgcHJvYmFibHkgYmUgZG9uZSBoZXJlIChhdCBsZWFzdCBpdCB3b3VsZCBiZSBnb29kIHRvIGhhbmRsZSB0aGUgZGlmZmVyZW50Ci0jIHBsdWdpbnMgaW4gYSBjb25zaXN0ZW50IHdheSkuCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtY3RsLWFyY2FtLWF2ICs9ICJcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1hcmNhbS1hdi1jdGwuY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNTAtYXJjYW0tYXYtY3RsLmNvbmYgXAotIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS1hNTIgKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzYwLWE1Mi1lbmNvZGVyLmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzYwLWE1Mi1lbmNvZGVyLmNvbmYgXAotIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS1hbHNhLWRzcCArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTgtbWFlbW8uY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvOTgtbWFlbW8uY29uZiBcCi0iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLWphY2sgKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzUwLWphY2suY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNTAtamFjay5jb25mIFwKLSIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tb3NzICs9ICJcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1vc3MuY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNTAtb3NzLmNvbmYgXAotIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS1zcGVleCArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNjAtc3BlZXguY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNjAtc3BlZXguY29uZiBcCi0iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLXVwbWl4ICs9ICJcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC82MC11cG1peC5jb25mIFwKLSAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC82MC11cG1peC5jb25mIFwKLSIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tdXNiLXN0cmVhbSArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTgtdXNiLXN0cmVhbS5jb25mIFwKLSAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC85OC11c2Itc3RyZWFtLmNvbmYgXAotIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS12ZG93bm1peCArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNjAtdmRvd25taXguY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNjAtdmRvd25taXguY29uZiBcCi0iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZyYXRlICs9ICJcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC8xMC1yYXRlLWxhdi5jb25mIFwKLSAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC8xMC1yYXRlLWxhdi5jb25mIFwKLSIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNhbXBsZXJhdGUgKz0gIlwKLSAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzEwLXNhbXBsZXJhdGUuY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvMTAtc2FtcGxlcmF0ZS5jb25mIFwKLSIKLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNwZWV4cmF0ZSArPSAiXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvMTAtc3BlZXhyYXRlLmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzEwLXNwZWV4cmF0ZS5jb25mIFwKLSIKLQotIyBUaGUgcmF0ZSBwbHVnaW5zIGNyZWF0ZSBzb21lIHN5bWxpbmtzLiBGb3IgZXhhbXBsZSwgdGhlIHNhbXBsZXJhdGUgcGx1Z2luCi0jIGNyZWF0ZXMgdGhlc2UgbGlua3MgdG8gdGhlIG1haW4gcGx1Z2luIGZpbGU6Ci0jCi0jICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfYmVzdC5zbwotIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX2xpbmVhci5zbwotIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX21lZGl1bS5zbwotIyAgIGxpYmFzb3VuZF9tb2R1bGVfcmF0ZV9zYW1wbGVyYXRlX29yZGVyLnNvCi0jCi0jIFRoZSBvdGhlciByYXRlIHBsdWdpbnMgY3JlYXRlIHNpbWlsYXIgbGlua3MuIFdlIGhhdmUgdG8gYWRkIHRoZSBsaW5rcyB0bwotIyBGSUxFUyBtYW51YWxseSwgYmVjYXVzZSBkb19zcGxpdF9wYWNrYWdlcygpIHNraXBzIHRoZSBsaW5rcyAod2hpY2ggaXMgZ29vZCwKLSMgYmVjYXVzZSB3ZSB3b3VsZG4ndCB3YW50IGRvX3NwbGl0X3BhY2thZ2VzKCkgdG8gY3JlYXRlIHNlcGFyYXRlIHBhY2thZ2VzIGZvcgotIyB0aGUgc3ltbGlua3MpLgotIwotIyBUaGUgc3ltbGlua3MgY2F1c2UgUUEgZXJyb3JzLCBiZWNhdXNlIHVzdWFsbHkgaXQncyBhIGJ1ZyBpZiBhIG5vbgotIyAtZGV2Ly1kYmcvLW5hdGl2ZXNkayBwYWNrYWdlIGNvbnRhaW5zIGxpbmtzIHRvIC5zbyBmaWxlcywgYnV0IGluIHRoaXMgY2FzZQotIyB0aGUgZXJyb3JzIGFyZSBmYWxzZSBwb3NpdGl2ZXMsIHNvIHdlIGRpc2FibGUgdGhlIFFBIGNoZWNrcy4KLUZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLWxhdnJhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9sYXZyYXRlXyouc28iCi1GSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zYW1wbGVyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc2FtcGxlcmF0ZV8qLnNvIgotRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlICs9ICIke2xpYmRpcn0vYWxzYS1saWIvKnJhdGVfc3BlZXhyYXRlXyouc28iCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1sYXZyYXRlID0gImRldi1zbyIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNhbXBsZXJhdGUgPSAiZGV2LXNvIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlID0gImRldi1zbyIKLQotIyA1MC1wdWxzZWF1ZGlvLmNvbmYgZGVmaW5lcyBhIGRldmljZSBuYW1lZCAicHVsc2UiIHRoYXQgYXBwbGljYXRpb25zIGNhbiB1c2UKLSMgaWYgdGhleSBleHBsaWNpdGx5IHdhbnQgdG8gdXNlIHRoZSBQdWxzZUF1ZGlvIHBsdWdpbi4KLSMgOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgY29uZmlndXJlcyB0aGUgImRlZmF1bHQiIGRldmljZSB0byB1c2UgdGhlCi0jIFB1bHNlQXVkaW8gcGx1Z2luLgotRklMRVNfJHtQTn0tcHVsc2VhdWRpby1jb25mICs9ICJcCi0gICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC81MC1wdWxzZWF1ZGlvLmNvbmYgXAotICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgXAotICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzUwLXB1bHNlYXVkaW8uY29uZiBcCi0gICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYgXAotIgotCi1SREVQRU5EU18ke1BOfS1wdWxzZWF1ZGlvLWNvbmYgKz0gIlwKLSAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1jb25mLXB1bHNlIFwKLSAgICAgICAgbGliYXNvdW5kLW1vZHVsZS1jdGwtcHVsc2UgXAotICAgICAgICBsaWJhc291bmQtbW9kdWxlLXBjbS1wdWxzZSBcCi0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS1wbHVnaW5zXzEuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjIuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ODgyZTEyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtcGx1Z2luc18xLjIuMS5iYgpAQCAtMCwwICsxLDE3MyBAQAorU1VNTUFSWSA9ICJBTFNBIFBsdWdpbnMiCitIT01FUEFHRSA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cDovL2Fsc2EtcHJvamVjdC5vcmcvbWFpbi9pbmRleC5waHAvQnVnX1RyYWNraW5nIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorCisjIFRoZSBwcmltYXJ5IGxpY2Vuc2Ugb2YgYWxzYS1wbHVnaW5zIGlzIExHUEx2Mi4xLgorIworIyBtNC9hdHRyaWJ1dGVzLm00IGlzIGxpY2Vuc2VkIHVuZGVyIEdQTHYyKy4gbTQvYXR0cmlidXRlcy5tNCBpcyBwYXJ0IG9mIHRoZQorIyBidWlsZCBzeXN0ZW0sIGFuZCBkb2Vzbid0IGFmZmVjdCB0aGUgbGljZW5zaW5nIG9mIHRoZSBidWlsZCByZXN1bHQuCisjCisjIFRoZSBzYW1wbGVyYXRlIHBsdWdpbiBzb3VyY2UgY29kZSBpcyBsaWNlbnNlZCB1bmRlciBHUEx2MisgdG8gYmUgY29uc2lzdGVudAorIyB3aXRoIHRoZSBsaWJzYW1wbGVyYXRlIGxpY2Vuc2UuIEhvd2V2ZXIsIGlmIHRoZSBsaWNlbnNlZSBoYXMgYSBjb21tZXJjaWFsCisjIGxpY2Vuc2UgZm9yIGxpYnNhbXBsZXJhdGUsIHRoZSBzYW1wbGVyYXRlIHBsdWdpbiBtYXkgYmUgdXNlZCB1bmRlciB0aGUgdGVybXMKKyMgb2YgTEdQTHYyLjEgbGlrZSB0aGUgcmVzdCBvZiB0aGUgcGx1Z2lucy4KK0xJQ0VOU0UgPSAiTEdQTHYyLjEgJiBHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gIlwKKyAgICAgICAgZmlsZTovL0NPUFlJTkc7bWQ1PWE5MTY0NjdiOTEwNzZlNjMxZGQ4ZWRiNzQyNDc2OWM3IFwKKyAgICAgICAgZmlsZTovL0NPUFlJTkcuR1BMO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCisgICAgICAgIGZpbGU6Ly9tNC9hdHRyaWJ1dGVzLm00O2VuZGxpbmU9MzM7bWQ1PWIyNTk1OGRhNDRjMDIyMzFlMzY0MWYxYmNjZWY1M2ViIFwKKyAgICAgICAgZmlsZTovL3JhdGUvcmF0ZV9zYW1wbGVyYXRlLmM7ZW5kbGluZT0zNTttZDU9ZmQ3N2JjZTg1ZjRhMzM4YzBlOGFiMTg0MzBiNjlmYWUgXAorIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LmFsc2EtcHJvamVjdC5vcmcvZmlsZXMvcHViL3BsdWdpbnMvJHtCUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICI1YjExY2QzZWM5MmU1ZjkxOTBlYzM3ODU2NWI1MjllOCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI0ZDk0ZGU3YWQ0MTczNGI4NjA0YTY1MjUyMTIwMGJiNjU1NGZjZjBjMmMwMGZkYmQzMDJiMTcxMGQ3NjU0OGRhIgorCitERVBFTkRTICs9ICJhbHNhLWxpYiIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICJcCisgICAgICAgIHNhbXBsZXJhdGUgXAorICAgICAgICBzcGVleGRzcCBcCisgICAgICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8nLCBkKX0gXAorIgorUEFDS0FHRUNPTkZJR1thYWZdID0gIi0tZW5hYmxlLWFhZiwtLWRpc2FibGUtYWFmLGF2dHAiCitQQUNLQUdFQ09ORklHW2phY2tdID0gIi0tZW5hYmxlLWphY2ssLS1kaXNhYmxlLWphY2ssamFjayIKK1BBQ0tBR0VDT05GSUdbbGliYXZdID0gIi0tZW5hYmxlLWxpYmF2LC0tZGlzYWJsZS1saWJhdixsaWJhdiIKK1BBQ0tBR0VDT05GSUdbbWFlbW8tcGx1Z2luXSA9ICItLWVuYWJsZS1tYWVtby1wbHVnaW4sLS1kaXNhYmxlLW1hZW1vLXBsdWdpbiIKK1BBQ0tBR0VDT05GSUdbbWFlbW8tcmVzb3VyY2UtbWFuYWdlcl0gPSAiLS1lbmFibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlciwtLWRpc2FibGUtbWFlbW8tcmVzb3VyY2UtbWFuYWdlcixkYnVzIgorUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZWF1ZGlvLC0tZGlzYWJsZS1wdWxzZWF1ZGlvLHB1bHNlYXVkaW8iCitQQUNLQUdFQ09ORklHW3NhbXBsZXJhdGVdID0gIi0tZW5hYmxlLXNhbXBsZXJhdGUsLS1kaXNhYmxlLXNhbXBsZXJhdGUsbGlic2FtcGxlcmF0ZTAiCitQQUNLQUdFQ09ORklHW3NwZWV4ZHNwXSA9ICItLXdpdGgtc3BlZXg9bGliLC0td2l0aC1zcGVleD1ubyxzcGVleGRzcCIKKworUEFDS0FHRVMgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3B1bHNlYXVkaW8nLCAnYWxzYS1wbHVnaW5zLXB1bHNlYXVkaW8tY29uZicsICcnLCBkKX0iCisKK1BBQ0tBR0VTX0RZTkFNSUMgPSAiXmxpYmFzb3VuZC1tb2R1bGUtLioiCisKKyMgVGhlIGFsc2EtcGx1Z2lucyBwYWNrYWdlIGRvZXNuJ3QgaXRzZWxmIGNvbnRhaW4gYW55dGhpbmcsIGl0IGp1c3QgZGVwZW5kcyBvbgorIyBhbGwgYnVpbHQgcGx1Z2lucy4KK0ZJTEVTXyR7UE59ID0gIiIKK0FMTE9XX0VNUFRZXyR7UE59ID0gIjEiCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCXJtICR7RH0ke2xpYmRpcn0vYWxzYS1saWIvKi5sYQorCisJaWYgWyAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAncHVsc2VhdWRpbycsICd5ZXMnLCAnbm8nLCBkKX0iID0gInllcyIgXTsgdGhlbgorCQkjIFdlIHVzZSB0aGUgZXhhbXBsZSBhcyBpcy4gVXBzdHJlYW0gaW5zdGFsbHMgdGhlIGZpbGUgdW5kZXIKKwkJIyAvZXRjLCBidXQgd2UgbW92ZSBpdCB1bmRlciAvdXNyL3NoYXJlIGFuZCBhZGQgYSBzeW1saW5rIHVuZGVyCisJCSMgL2V0YyB0byBiZSBjb25zaXN0ZW50IHdpdGggb3RoZXIgaW5zdGFsbGVkIGNvbmZpZ3VyYXRpb24KKwkJIyBmaWxlcy4KKwkJbXYgJHtEfSR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvOTktcHVsc2VhdWRpby1kZWZhdWx0LmNvbmYuZXhhbXBsZSAke0R9JHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzk5LXB1bHNlYXVkaW8tZGVmYXVsdC5jb25mCisJCWxuIC1zICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiAke0R9JHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZgorCWZpCit9CisKK3B5dGhvbiBwb3B1bGF0ZV9wYWNrYWdlc19wcmVwZW5kKCkgeworICAgIHBsdWdpbmRpciA9IGQuZXhwYW5kKCcke2xpYmRpcn0vYWxzYS1saWIvJykKKyAgICBwYWNrYWdlcyA9ICIgIi5qb2luKGRvX3NwbGl0X3BhY2thZ2VzKGQsIHBsdWdpbmRpciwgcidebGliYXNvdW5kX21vZHVsZV8oLiopXC5zbyQnLCAnbGliYXNvdW5kLW1vZHVsZS0lcycsICdBbHNhIHBsdWdpbiBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnKSkKKyAgICBkLnNldFZhcigiUkRFUEVORFNfYWxzYS1wbHVnaW5zIiwgcGFja2FnZXMpCit9CisKKyMgTWFueSBwbHVnaW5zIGhhdmUgYSBjb25maWd1cmF0aW9uIGZpbGUgKHBsdXMgYSBzeW1saW5rIGluIC9ldGMpIGFzc29jaWF0ZWQKKyMgd2l0aCB0aGVtLiBXZSBwdXQgdGhlIHBsdWdpbiBhbmQgaXQncyBjb25maWd1cmF0aW9uIHVzdWFsbHkgaW4gdGhlIHNhbWUKKyMgcGFja2FnZSwgYnV0IHRoYXQncyBwcm9ibGVtYXRpYyB3aGVuIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgaXMgcmVsYXRlZCB0bworIyBtdWx0aXBsZSBwbHVnaW5zLCBhcyBpcyB0aGUgY2FzZSB3aXRoIHRoZSBwdWxzZSwgb3NzIGFuZCBtYWVtbyBwbHVnaW5zLiBJbgorIyBjYXNlIG9mIHRoZSBwdWxzZSBwbHVnaW5zLCB3ZSBoYXZlIGEgc2VwYXJhdGUgYWxzYS1wbHVnaW5zLXB1bHNlYXVkaW8tY29uZgorIyBwYWNrYWdlIHRoYXQgZGVwZW5kcyBvbiBhbGwgdGhlIHB1bHNlIHBsdWdpbnMsIHdoaWNoIGVuc3VyZXMgdGhhdCBhbGwgcGx1Z2lucworIyB0aGF0IHRoZSBjb25maWd1cmF0aW9uIHJlZmVyZW5jZXMgYXJlIGluc3RhbGxlZC4gVGhlIG9zcyBhbmQgbWFlbW8KKyMgY29uZmlndXJhdGlvbiBmaWxlcywgb24gdGhlIG90aGVyIGhhbmQsIGFyZSBpbiB0aGUgcmVzcGVjdGl2ZSBwY20gcGx1Z2luCisjIHBhY2thZ2VzLiBUaGVyZWZvcmUgaXQncyBwb3NzaWJsZSB0byBpbnN0YWxsIHRoZSBjb25maWd1cmF0aW9uIGZpbGUgd2l0aG91dAorIyB0aGUgY3RsIHBsdWdpbiB0aGF0IHRoZSBjb25maWd1cmF0aW9uIGZpbGUgcmVmZXJlbmNlcy4gVGhpcyBpcyB1bmxpa2VseSB0bworIyBjYXVzZSBiaWcgcHJvYmxlbXMsIGJ1dCBzb21lIGtpbmQgb2YgaW1wcm92ZW1lbnQgdG8gdGhlIHBhY2thZ2luZyBjb3VsZAorIyBwcm9iYWJseSBiZSBkb25lIGhlcmUgKGF0IGxlYXN0IGl0IHdvdWxkIGJlIGdvb2QgdG8gaGFuZGxlIHRoZSBkaWZmZXJlbnQKKyMgcGx1Z2lucyBpbiBhIGNvbnNpc3RlbnQgd2F5KS4KK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1jdGwtYXJjYW0tYXYgKz0gIlwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzUwLWFyY2FtLWF2LWN0bC5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC81MC1hcmNhbS1hdi1jdGwuY29uZiBcCisiCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLWE1MiArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNjAtYTUyLWVuY29kZXIuY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNjAtYTUyLWVuY29kZXIuY29uZiBcCisiCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLWFsc2EtZHNwICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OC1tYWVtby5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC85OC1tYWVtby5jb25mIFwKKyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tamFjayArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvNTAtamFjay5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC81MC1qYWNrLmNvbmYgXAorIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS1vc3MgKz0gIlwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzUwLW9zcy5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC81MC1vc3MuY29uZiBcCisiCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLXNwZWV4ICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC82MC1zcGVleC5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC82MC1zcGVleC5jb25mIFwKKyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1wY20tdXBtaXggKz0gIlwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzYwLXVwbWl4LmNvbmYgXAorICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzYwLXVwbWl4LmNvbmYgXAorIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXBjbS11c2Itc3RyZWFtICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OC11c2Itc3RyZWFtLmNvbmYgXAorICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzk4LXVzYi1zdHJlYW0uY29uZiBcCisiCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcGNtLXZkb3dubWl4ICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC82MC12ZG93bm1peC5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC82MC12ZG93bm1peC5jb25mIFwKKyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLWxhdnJhdGUgKz0gIlwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzEwLXJhdGUtbGF2LmNvbmYgXAorICAgICAgICAke3N5c2NvbmZkaXJ9L2Fsc2EvY29uZi5kLzEwLXJhdGUtbGF2LmNvbmYgXAorIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSArPSAiXAorICAgICAgICAke2RhdGFkaXJ9L2Fsc2EvYWxzYS5jb25mLmQvMTAtc2FtcGxlcmF0ZS5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC8xMC1zYW1wbGVyYXRlLmNvbmYgXAorIgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc3BlZXhyYXRlICs9ICJcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC8xMC1zcGVleHJhdGUuY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvMTAtc3BlZXhyYXRlLmNvbmYgXAorIgorCisjIFRoZSByYXRlIHBsdWdpbnMgY3JlYXRlIHNvbWUgc3ltbGlua3MuIEZvciBleGFtcGxlLCB0aGUgc2FtcGxlcmF0ZSBwbHVnaW4KKyMgY3JlYXRlcyB0aGVzZSBsaW5rcyB0byB0aGUgbWFpbiBwbHVnaW4gZmlsZToKKyMKKyMgICBsaWJhc291bmRfbW9kdWxlX3JhdGVfc2FtcGxlcmF0ZV9iZXN0LnNvCisjICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfbGluZWFyLnNvCisjICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfbWVkaXVtLnNvCisjICAgbGliYXNvdW5kX21vZHVsZV9yYXRlX3NhbXBsZXJhdGVfb3JkZXIuc28KKyMKKyMgVGhlIG90aGVyIHJhdGUgcGx1Z2lucyBjcmVhdGUgc2ltaWxhciBsaW5rcy4gV2UgaGF2ZSB0byBhZGQgdGhlIGxpbmtzIHRvCisjIEZJTEVTIG1hbnVhbGx5LCBiZWNhdXNlIGRvX3NwbGl0X3BhY2thZ2VzKCkgc2tpcHMgdGhlIGxpbmtzICh3aGljaCBpcyBnb29kLAorIyBiZWNhdXNlIHdlIHdvdWxkbid0IHdhbnQgZG9fc3BsaXRfcGFja2FnZXMoKSB0byBjcmVhdGUgc2VwYXJhdGUgcGFja2FnZXMgZm9yCisjIHRoZSBzeW1saW5rcykuCisjCisjIFRoZSBzeW1saW5rcyBjYXVzZSBRQSBlcnJvcnMsIGJlY2F1c2UgdXN1YWxseSBpdCdzIGEgYnVnIGlmIGEgbm9uCisjIC1kZXYvLWRiZy8tbmF0aXZlc2RrIHBhY2thZ2UgY29udGFpbnMgbGlua3MgdG8gLnNvIGZpbGVzLCBidXQgaW4gdGhpcyBjYXNlCisjIHRoZSBlcnJvcnMgYXJlIGZhbHNlIHBvc2l0aXZlcywgc28gd2UgZGlzYWJsZSB0aGUgUUEgY2hlY2tzLgorRklMRVNfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtbGF2cmF0ZSArPSAiJHtsaWJkaXJ9L2Fsc2EtbGliLypyYXRlX2xhdnJhdGVfKi5zbyIKK0ZJTEVTXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLXNhbXBsZXJhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9zYW1wbGVyYXRlXyouc28iCitGSUxFU18ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zcGVleHJhdGUgKz0gIiR7bGliZGlyfS9hbHNhLWxpYi8qcmF0ZV9zcGVleHJhdGVfKi5zbyIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXNvdW5kLW1vZHVsZS1yYXRlLWxhdnJhdGUgPSAiZGV2LXNvIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhc291bmQtbW9kdWxlLXJhdGUtc2FtcGxlcmF0ZSA9ICJkZXYtc28iCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmFzb3VuZC1tb2R1bGUtcmF0ZS1zcGVleHJhdGUgPSAiZGV2LXNvIgorCisjIDUwLXB1bHNlYXVkaW8uY29uZiBkZWZpbmVzIGEgZGV2aWNlIG5hbWVkICJwdWxzZSIgdGhhdCBhcHBsaWNhdGlvbnMgY2FuIHVzZQorIyBpZiB0aGV5IGV4cGxpY2l0bHkgd2FudCB0byB1c2UgdGhlIFB1bHNlQXVkaW8gcGx1Z2luLgorIyA5OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBjb25maWd1cmVzIHRoZSAiZGVmYXVsdCIgZGV2aWNlIHRvIHVzZSB0aGUKKyMgUHVsc2VBdWRpbyBwbHVnaW4uCitGSUxFU18ke1BOfS1wdWxzZWF1ZGlvLWNvbmYgKz0gIlwKKyAgICAgICAgJHtkYXRhZGlyfS9hbHNhL2Fsc2EuY29uZi5kLzUwLXB1bHNlYXVkaW8uY29uZiBcCisgICAgICAgICR7ZGF0YWRpcn0vYWxzYS9hbHNhLmNvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBcCisgICAgICAgICR7c3lzY29uZmRpcn0vYWxzYS9jb25mLmQvNTAtcHVsc2VhdWRpby5jb25mIFwKKyAgICAgICAgJHtzeXNjb25mZGlyfS9hbHNhL2NvbmYuZC85OS1wdWxzZWF1ZGlvLWRlZmF1bHQuY29uZiBcCisiCisKK1JERVBFTkRTXyR7UE59LXB1bHNlYXVkaW8tY29uZiArPSAiXAorICAgICAgICBsaWJhc291bmQtbW9kdWxlLWNvbmYtcHVsc2UgXAorICAgICAgICBsaWJhc291bmQtbW9kdWxlLWN0bC1wdWxzZSBcCisgICAgICAgIGxpYmFzb3VuZC1tb2R1bGUtcGNtLXB1bHNlIFwKKyIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXRvcG9sb2d5LWNvbmZfMS4yLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b3BvbG9neS1jb25mXzEuMi4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkZDFmMzAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS10b3BvbG9neS1jb25mXzEuMi4xLmJiCkBAIC0wLDAgKzEsMjIgQEAKK1NVTU1BUlkgPSAiQUxTQSB0b3BvbG9neSBjb25maWd1cmF0aW9uIGZpbGVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2Fsc2EtcHJvamVjdC5vcmcvd2lraS9CdWdfVHJhY2tpbmciCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTIwZDc0ZDc0ZGI5NzQxNjk3OTAzMzcyYWQwMDFkM2I0IgorCisjIFRoZSB0YXJiYWxsIGRvZXNuJ3QgaGF2ZSBhbnkgdG9wbGV2ZWwgZGlyZWN0b3J5LiBUaGUgc3ViZGlyIG9wdGlvbiB0ZWxscworIyBCaXRiYWtlIHRvIHVucGFjayB0aGUgYXJjaGl2ZSB0byB0aGUgY29ycmVjdCBwbGFjZS4KK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuYWxzYS1wcm9qZWN0Lm9yZy9maWxlcy9wdWIvbGliLyR7QlB9LnRhci5iejI7c3ViZGlyPSR7QlB9IgorU1JDX1VSSVttZDVzdW1dID0gIjdmZGY1ZmZmM2YxZTA2MDM0NTZlNzE5ZjYwMzNlOTIyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjM1NGE0M2Y0MDMxYzk4YmVmMTM0OWFjNzIyZDgzYjI2MDNlZjQzOWY4MWExYWIxZWJhODgxNGMyODI0M2E5YjIiCisKK2luaGVyaXQgYWxsYXJjaAorCitkb19pbnN0YWxsKCkgeworICAgICAgICBpbnN0YWxsIC1kICR7RH0vdXNyL3NoYXJlL2Fsc2EKKyAgICAgICAgY3AgLXIgJHtTfS90b3BvbG9neSAke0R9L3Vzci9zaGFyZS9hbHNhCit9CisKK1BBQ0tBR0VTID0gIiR7UE59IgorCitGSUxFU18ke1BOfSA9ICIqIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdWNtLWNvbmZfMS4yLjEuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXVjbS1jb25mXzEuMi4xLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNDY5ZDFmNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXVjbS1jb25mXzEuMi4xLjIuYmIKQEAgLTAsMCArMSwyMyBAQAorU1VNTUFSWSA9ICJBTFNBIFVzZSBDYXNlIE1hbmFnZXIgY29uZmlndXJhdGlvbiIKK0hPTUVQQUdFID0gImh0dHBzOi8vYWxzYS1wcm9qZWN0Lm9yZyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9hbHNhLXByb2plY3Qub3JnL3dpa2kvQnVnX1RyYWNraW5nIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0yMGQ3NGQ3NGRiOTc0MTY5NzkwMzM3MmFkMDAxZDNiNCIKKworIyBUaGUgdGFyYmFsbCBkb2Vzbid0IGhhdmUgYW55IHRvcGxldmVsIGRpcmVjdG9yeS4gVGhlIHN1YmRpciBvcHRpb24gdGVsbHMKKyMgQml0YmFrZSB0byB1bnBhY2sgdGhlIGFyY2hpdmUgdG8gdGhlIGNvcnJlY3QgcGxhY2UuCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LmFsc2EtcHJvamVjdC5vcmcvZmlsZXMvcHViL2xpYi8ke0JQfS50YXIuYnoyO3N1YmRpcj0ke0JQfSIKK1NSQ19VUklbbWQ1c3VtXSA9ICJiN2ZhNDNjZmQ3OWRmOTc4MTg0YTYzMzM3NjZkMmE1MCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJlYThhODY4NzVmNGNmNDMwZDQ5YTY2MmEwNGE2ZDZjNjA2YzVjOWQ2N2U1NGNiOTQ0YzRkNzdiMjQ1NTQwNjJmIgorCitpbmhlcml0IGFsbGFyY2gKKworZG9faW5zdGFsbCgpIHsKKyAgICAgICAgaW5zdGFsbCAtZCAke0R9L3Vzci9zaGFyZS9hbHNhCisgICAgICAgIGNwIC1yICR7U30vdWNtICR7RH0vdXNyL3NoYXJlL2Fsc2EKKyAgICAgICAgY3AgLXIgJHtTfS91Y20yICR7RH0vdXNyL3NoYXJlL2Fsc2EKK30KKworUEFDS0FHRVMgPSAiJHtQTn0iCisKK0ZJTEVTXyR7UE59ID0gIioiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlscy1zY3JpcHRzXzEuMS45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjIuMS5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjEuOS5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHMtc2NyaXB0c18xLjIuMS5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4xLjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuOS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDNiNWM4ZC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2Fsc2EvYWxzYS11dGlsc18xLjEuOS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwNiArMCwwIEBACi1TVU1NQVJZID0gIkFMU0Egc291bmQgdXRpbGl0aWVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCi1TRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCi1MSUNFTlNFID0gIkdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2Fsc2FjdGwvdXRpbHMuYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIwO21kNT0yY2U3ZjdiNjczOTQ4N2ZiNzJjNjg5ZDQ2NTIxZjk1OCIKLURFUEVORFMgPSAiYWxzYS1saWIgbmN1cnNlcyBsaWJzYW1wbGVyYXRlMCIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gInVkZXYiCi0KLSMgYWxzYWJhdCBjYW4gYmUgYnVpbHQgYWxzbyB3aXRob3V0IGZmdHcgc3VwcG9ydCAod2l0aCByZWR1Y2VkIGZ1bmN0aW9uYWxpdHkpLgotIyBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gYWx3YXlzIGVuYWJsZSBhbHNhYmF0LCBidXQgcHJvdmlkZSBhbiBvcHRpb24gZm9yCi0jIGVuYWJsaW5nL2Rpc2FibGluZyBmZnR3LiBUaGUgY29uZmlndXJlIHNjcmlwdCBkb2Vzbid0IHN1cHBvcnQgdGhhdCwgaG93ZXZlcgotIyAoYXQgbGVhc3QgaW4gYW55IG9idmlvdXMgd2F5KSwgc28gZm9yIG5vdyB3ZSBvbmx5IHN1cHBvcnQgYWxzYWJhdCB3aXRoIGZmdHcKLSMgb3Igbm8gYWxzYWJhdCBhdCBhbGwuCi1QQUNLQUdFQ09ORklHW2JhdF0gPSAiLS1lbmFibGUtYmF0LC0tZGlzYWJsZS1iYXQsZmZ0d2YiCi0KLVBBQ0tBR0VDT05GSUdbdWRldl0gPSAiLS13aXRoLXVkZXYtcnVsZXMtZGlyPWBwa2ctY29uZmlnIC0tdmFyaWFibGU9dWRldmRpciB1ZGV2YC9ydWxlcy5kLC0td2l0aC11ZGV2LXJ1bGVzLWRpcj0vdW53YW50ZWQvcnVsZXMuZCx1ZGV2IgotUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUteG1sdG8sIC0tZGlzYWJsZS14bWx0bywgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKLQotIyBhbHNhLXV0aWxzIHNwZWNpZmllZCBpbiBTUkNfVVJJIGR1ZSB0byBhbHNhLXV0aWxzLXNjcmlwdHMgcmVjaXBlCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3LmFsc2EtcHJvamVjdC5vcmcvZmlsZXMvcHViL3V0aWxzL2Fsc2EtdXRpbHMtJHtQVn0udGFyLmJ6MiIKLVNSQ19VUklbbWQ1c3VtXSA9ICI1ZWQyMWMzZTI5NmMwNjA0NmNjOTg2ZTczMmY2MjVmNiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI1ZGRmMmNiZGRiNGJkMWE0YTJhNjQ5MmEwOWMyNTg5OGIwOGMzYWQ2NDg5M2MzNjU1YmUxNDE5NGNmMGEyMTNhIgotCi0jIE9uIGJ1aWxkIG1hY2hpbmVzIHdpdGggcHl0aG9uLWRvY3V0aWxzIChub3QgcHl0aG9uMy1kb2N1dGlscyAhISkgaW5zdGFsbGVkCi0jIHJzdDJtYW4gKG5vdCByc3QybWFuLnB5KSBpcyBkZXRlY3RlZCBhbmQgY29tcGlsZSBmYWlscyB3aXRoCi0jIHwgbWFrZVsxXTogKioqIE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQgJ2Fsc2F1Y20uMScsIG5lZWRlZCBieSAnYWxsLWFtJy4gIFN0b3AuCi0jIEF2b2lkIHRoaXMgYnkgZGlzYWJsaW5nIGV4cGljaXRseQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1yc3QybWFuIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBtYW5wYWdlcwotCi0jIFRoaXMgYXJlIGFsbCBwYWNrYWdlcyB0aGF0IHdlIG5lZWQgdG8gbWFrZS4gQWxzbywgdGhlIG5vdyBlbXB0eSBhbHNhLXV0aWxzCi0jIGlwayBkZXBlbmRzIG9uIHRoZW0uCi0KLUFMU0FfVVRJTFNfUEtHUyA9ICJcCi0gICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmF0JywgJ2Fsc2EtdXRpbHMtYWxzYWJhdCcsICcnLCBkKX0gXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYW1peGVyIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F0cGxnIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLW1pZGkgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXBsYXkgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYW1peGVyIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFjb25uZWN0IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWllY3NldCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1zcGVha2VydGVzdCBcCi0gICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxbmV0IFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFzZXFkdW1wIFwKLSAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FjdGwgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYWxvb3AgXAotICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYXVjbSBcCi0gICAgICAgICAgICAiCi0KLVBBQ0tBR0VTICs9ICIke0FMU0FfVVRJTFNfUEtHU30iCi1SREVQRU5EU18ke1BOfSArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgotCi1GSUxFU18ke1BOfSA9ICIiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2FiYXQgICAgID0gIiR7YmluZGlyfS9hbHNhYmF0IgotRklMRVNfYWxzYS11dGlscy1hbHNhdHBsZyAgICA9ICIke2JpbmRpcn0vYWxzYXRwbGciCi1GSUxFU19hbHNhLXV0aWxzLWFwbGF5ICAgICAgID0gIiR7YmluZGlyfS9hcGxheSAke2JpbmRpcn0vYXJlY29yZCAke2JpbmRpcn0vYXhmZXIiCi1GSUxFU19hbHNhLXV0aWxzLWFtaXhlciAgICAgID0gIiR7YmluZGlyfS9hbWl4ZXIiCi1GSUxFU19hbHNhLXV0aWxzLWFsc2FtaXhlciAgID0gIiR7YmluZGlyfS9hbHNhbWl4ZXIiCi1GSUxFU19hbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0ID0gIiR7YmluZGlyfS9zcGVha2VyLXRlc3QgJHtkYXRhZGlyfS9zb3VuZHMvYWxzYS8gJHtkYXRhZGlyfS9hbHNhL3NwZWFrZXItdGVzdC8iCi1GSUxFU19hbHNhLXV0aWxzLW1pZGkgICAgICAgID0gIiR7YmluZGlyfS9hcGxheW1pZGkgJHtiaW5kaXJ9L2FyZWNvcmRtaWRpICR7YmluZGlyfS9hbWlkaSIKLUZJTEVTX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgPSAiJHtiaW5kaXJ9L2Fjb25uZWN0IgotRklMRVNfYWxzYS11dGlscy1hc2VxbmV0ICAgICA9ICIke2JpbmRpcn0vYXNlcW5ldCIKLUZJTEVTX2Fsc2EtdXRpbHMtaWVjc2V0ICAgICAgPSAiJHtiaW5kaXJ9L2llY3NldCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgPSAiJHtzYmluZGlyfS9hbHNhY3RsICovdWRldi9ydWxlcy5kLzkwLWFsc2EtcmVzdG9yZS5ydWxlcyAqLyovdWRldi9ydWxlcy5kLzkwLWFsc2EtcmVzdG9yZS5ydWxlcyAke3N5c3RlbWRfdW5pdGRpcn0gJHtsb2NhbHN0YXRlZGlyfS9saWIvYWxzYSAke2RhdGFkaXJ9L2Fsc2EvaW5pdC8iCi1GSUxFU19hbHNhLXV0aWxzLWFzZXFkdW1wICAgID0gIiR7YmluZGlyfS9hc2VxZHVtcCIKLUZJTEVTX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgPSAiJHtiaW5kaXJ9L2Fsc2Fsb29wIgotRklMRVNfYWxzYS11dGlscy1hbHNhdWNtICAgICA9ICIke2JpbmRpcn0vYWxzYXVjbSAqL3VkZXYvcnVsZXMuZC84OS1hbHNhLXVjbS5ydWxlcyAqLyovdWRldi9ydWxlcy5kLzg5LWFsc2EtdWNtLnJ1bGVzIgotCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWJhdCAgICAgID0gIkNvbW1hbmQtbGluZSBzb3VuZCB0ZXN0ZXIgZm9yIEFMU0Egc291bmQgY2FyZCBkcml2ZXIiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgID0gIkNvbnZlcnRzIHRvcG9sb2d5IHRleHQgZmlsZXMgaW50byBiaW5hcnkgZm9ybWF0IGZvciBrZXJuZWwiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYXBsYXkgICAgICAgID0gIlBsYXkgKGFuZCByZWNvcmQpIHNvdW5kIGZpbGVzIHVzaW5nIEFMU0EiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYW1peGVyICAgICAgID0gIkNvbW1hbmQtbGluZSBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKLVNVTU1BUllfYWxzYS11dGlscy1hbHNhbWl4ZXIgICAgPSAibmN1cnNlcy1iYXNlZCBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKLVNVTU1BUllfYWxzYS11dGlscy1zcGVha2VydGVzdCAgPSAiQUxTQSBzdXJyb3VuZCBzcGVha2VyIHRlc3QgdXRpbGl0eSIKLVNVTU1BUllfYWxzYS11dGlscy1taWRpICAgICAgICAgPSAiTWlzY2VsbGFuZW91cyBNSURJIHV0aWxpdGllcyBmb3IgQUxTQSIKLVNVTU1BUllfYWxzYS11dGlscy1hY29ubmVjdCAgICAgPSAiQUxTQSBzZXF1ZW5jZXIgY29ubmVjdGlvbiBtYW5hZ2VyIgotU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFuZXQgICAgICA9ICJOZXR3b3JrIGNsaWVudC9zZXJ2ZXIgZm9yIEFMU0Egc2VxdWVuY2VyIgotU1VNTUFSWV9hbHNhLXV0aWxzLWllY3NldCAgICAgICA9ICJBTFNBIHV0aWxpdHkgZm9yIHNldHRpbmcvc2hvd2luZyBJRUM5NTggKFMvUERJRikgc3RhdHVzIGJpdHMiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgID0gIlNhdmVzL3Jlc3RvcmVzIEFMU0Etc2V0dGluZ3MgaW4gL2V0Yy9hc291bmQuc3RhdGUiCi1TVU1NQVJZX2Fsc2EtdXRpbHMtYXNlcWR1bXAgICAgID0gIlNob3dzIHRoZSBldmVudHMgcmVjZWl2ZWQgYXQgYW4gQUxTQSBzZXF1ZW5jZXIgcG9ydCIKLVNVTU1BUllfYWxzYS11dGlscy1hbHNhbG9vcCAgICAgPSAiQUxTQSBQQ00gbG9vcGJhY2sgdXRpbGl0eSIKLVNVTU1BUllfYWxzYS11dGlscy1hbHNhdWNtICAgICAgPSAiQUxTQSBVc2UgQ2FzZSBNYW5hZ2VyIgotCi1SUkVDT01NRU5EU19hbHNhLXV0aWxzLWFsc2FjdGwgPSAiYWxzYS1zdGF0ZXMiCi0KLUFMTE9XX0VNUFRZX2Fsc2EtdXRpbHMgPSAiMSIKLQotZG9faW5zdGFsbCgpIHsKLQlhdXRvdG9vbHNfZG9faW5zdGFsbAotCi0JIyBXZSBkb24ndCBzaGlwIHRoaXMgaGVyZSBiZWNhdXNlIGl0IHJlcXVpcmVzIGEgZGVwZW5kZW5jeSBvbiBiYXNoLgotCSMgU2VlIGFsc2EtdXRpbHMtc2NyaXB0c18ke1BWfS5iYgotCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2Fjb25mCi0Jcm0gJHtEfSR7c2JpbmRpcn0vYWxzYS1pbmZvLnNoCi0Jcm0gLWYgJHtEfSR7c2JpbmRpcn0vYWxzYWJhdC10ZXN0LnNoCi0KLQkjIElmIHVkZXYgaXMgZGlzYWJsZWQsIHdlIHRvbGQgY29uZmlndXJlIHRvIGluc3RhbGwgdGhlIHJ1bGVzCi0JIyBpbiAvdW53YW50ZWQsIHNvIHdlIGNhbiByZW1vdmUgdGhlbSBub3cuIElmIHVkZXYgaXMgZW5hYmxlZCwKLQkjIHRoZW4gL3Vud2FudGVkIHdvbid0IGV4aXN0IGFuZCB0aGlzIHdpbGwgaGF2ZSBubyBlZmZlY3QuCi0Jcm0gLXJmICR7RH0vdW53YW50ZWQKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9hbHNhL2Fsc2EtdXRpbHNfMS4yLjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uOTE0NGFmNgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvYWxzYS9hbHNhLXV0aWxzXzEuMi4xLmJiCkBAIC0wLDAgKzEsMTA1IEBACitTVU1NQVJZID0gIkFMU0Egc291bmQgdXRpbGl0aWVzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5hbHNhLXByb2plY3Qub3JnIgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vYWxzYS1wcm9qZWN0Lm9yZy9tYWluL2luZGV4LnBocC9CdWdfVHJhY2tpbmciCitTRUNUSU9OID0gImNvbnNvbGUvdXRpbHMiCitMSUNFTlNFID0gIkdQTHYyKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTU5NTMwYmRmMzM2NTliMjllNzNkNGFkYjlmOWY2NTUyIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2Fsc2FjdGwvdXRpbHMuYztiZWdpbmxpbmU9MztlbmRsaW5lPTE4O21kNT05NmNjMDZhNGNlYmU1ZWI3OTc1Njg4ZmZiMGU2NTY0MiIKK0RFUEVORFMgPSAiYWxzYS1saWIgbmN1cnNlcyBsaWJzYW1wbGVyYXRlMCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInVkZXYiCisKKyMgYWxzYWJhdCBjYW4gYmUgYnVpbHQgYWxzbyB3aXRob3V0IGZmdHcgc3VwcG9ydCAod2l0aCByZWR1Y2VkIGZ1bmN0aW9uYWxpdHkpLgorIyBJdCB3b3VsZCBiZSBiZXR0ZXIgdG8gYWx3YXlzIGVuYWJsZSBhbHNhYmF0LCBidXQgcHJvdmlkZSBhbiBvcHRpb24gZm9yCisjIGVuYWJsaW5nL2Rpc2FibGluZyBmZnR3LiBUaGUgY29uZmlndXJlIHNjcmlwdCBkb2Vzbid0IHN1cHBvcnQgdGhhdCwgaG93ZXZlcgorIyAoYXQgbGVhc3QgaW4gYW55IG9idmlvdXMgd2F5KSwgc28gZm9yIG5vdyB3ZSBvbmx5IHN1cHBvcnQgYWxzYWJhdCB3aXRoIGZmdHcKKyMgb3Igbm8gYWxzYWJhdCBhdCBhbGwuCitQQUNLQUdFQ09ORklHW2JhdF0gPSAiLS1lbmFibGUtYmF0LC0tZGlzYWJsZS1iYXQsZmZ0d2YiCisKK1BBQ0tBR0VDT05GSUdbdWRldl0gPSAiLS13aXRoLXVkZXYtcnVsZXMtZGlyPWBwa2ctY29uZmlnIC0tdmFyaWFibGU9dWRldmRpciB1ZGV2YC9ydWxlcy5kLC0td2l0aC11ZGV2LXJ1bGVzLWRpcj0vdW53YW50ZWQvcnVsZXMuZCx1ZGV2IgorUEFDS0FHRUNPTkZJR1ttYW5wYWdlc10gPSAiLS1lbmFibGUteG1sdG8sIC0tZGlzYWJsZS14bWx0bywgeG1sdG8tbmF0aXZlIGRvY2Jvb2steG1sLWR0ZDQtbmF0aXZlIGRvY2Jvb2steHNsLXN0eWxlc2hlZXRzLW5hdGl2ZSIKKworIyBhbHNhLXV0aWxzIHNwZWNpZmllZCBpbiBTUkNfVVJJIGR1ZSB0byBhbHNhLXV0aWxzLXNjcmlwdHMgcmVjaXBlCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LmFsc2EtcHJvamVjdC5vcmcvZmlsZXMvcHViL3V0aWxzL2Fsc2EtdXRpbHMtJHtQVn0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjNDYyOGJhZTc2MzI5MzdlYWMyZGU0Y2YyYTNkZTgyZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwYjExMGJhNzFlZjQxZDMwMDlkYjFiYzRkY2FlMGNmNzllZmI5OWNiNTQyNmZhMTlkMDMxMjQ3MDU2MGEyYzBkIgorCisjIE9uIGJ1aWxkIG1hY2hpbmVzIHdpdGggcHl0aG9uLWRvY3V0aWxzIChub3QgcHl0aG9uMy1kb2N1dGlscyAhISkgaW5zdGFsbGVkCisjIHJzdDJtYW4gKG5vdCByc3QybWFuLnB5KSBpcyBkZXRlY3RlZCBhbmQgY29tcGlsZSBmYWlscyB3aXRoCisjIHwgbWFrZVsxXTogKioqIE5vIHJ1bGUgdG8gbWFrZSB0YXJnZXQgJ2Fsc2F1Y20uMScsIG5lZWRlZCBieSAnYWxsLWFtJy4gIFN0b3AuCisjIEF2b2lkIHRoaXMgYnkgZGlzYWJsaW5nIGV4cGljaXRseQorRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS1yc3QybWFuIgorCitpbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBtYW5wYWdlcworCisjIFRoaXMgYXJlIGFsbCBwYWNrYWdlcyB0aGF0IHdlIG5lZWQgdG8gbWFrZS4gQWxzbywgdGhlIG5vdyBlbXB0eSBhbHNhLXV0aWxzCisjIGlwayBkZXBlbmRzIG9uIHRoZW0uCisKK0FMU0FfVVRJTFNfUEtHUyA9ICJcCisgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnYmF0JywgJ2Fsc2EtdXRpbHMtYWxzYWJhdCcsICcnLCBkKX0gXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYW1peGVyIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2F0cGxnIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLW1pZGkgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYXBsYXkgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYW1peGVyIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFjb25uZWN0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWllY3NldCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1zcGVha2VydGVzdCBcCisgICAgICAgICAgICAgYWxzYS11dGlscy1hc2VxbmV0IFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFzZXFkdW1wIFwKKyAgICAgICAgICAgICBhbHNhLXV0aWxzLWFsc2FjdGwgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYWxvb3AgXAorICAgICAgICAgICAgIGFsc2EtdXRpbHMtYWxzYXVjbSBcCisgICAgICAgICAgICAiCisKK1BBQ0tBR0VTICs9ICIke0FMU0FfVVRJTFNfUEtHU30iCitSREVQRU5EU18ke1BOfSArPSAiJHtBTFNBX1VUSUxTX1BLR1N9IgorCitGSUxFU18ke1BOfSA9ICIiCitBTExPV19FTVBUWV9hbHNhLXV0aWxzID0gIjEiCitGSUxFU19hbHNhLXV0aWxzLWFsc2FiYXQgICAgID0gIiR7YmluZGlyfS9hbHNhYmF0IgorRklMRVNfYWxzYS11dGlscy1hbHNhdHBsZyAgICA9ICIke2JpbmRpcn0vYWxzYXRwbGciCitGSUxFU19hbHNhLXV0aWxzLWFwbGF5ICAgICAgID0gIiR7YmluZGlyfS9hcGxheSAke2JpbmRpcn0vYXJlY29yZCAke2JpbmRpcn0vYXhmZXIiCitGSUxFU19hbHNhLXV0aWxzLWFtaXhlciAgICAgID0gIiR7YmluZGlyfS9hbWl4ZXIiCitGSUxFU19hbHNhLXV0aWxzLWFsc2FtaXhlciAgID0gIiR7YmluZGlyfS9hbHNhbWl4ZXIiCitGSUxFU19hbHNhLXV0aWxzLXNwZWFrZXJ0ZXN0ID0gIiR7YmluZGlyfS9zcGVha2VyLXRlc3QgJHtkYXRhZGlyfS9zb3VuZHMvYWxzYS8gJHtkYXRhZGlyfS9hbHNhL3NwZWFrZXItdGVzdC8iCitGSUxFU19hbHNhLXV0aWxzLW1pZGkgICAgICAgID0gIiR7YmluZGlyfS9hcGxheW1pZGkgJHtiaW5kaXJ9L2FyZWNvcmRtaWRpICR7YmluZGlyfS9hbWlkaSIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWNvbm5lY3QgICAgPSAiJHtiaW5kaXJ9L2Fjb25uZWN0IgorRklMRVNfYWxzYS11dGlscy1hc2VxbmV0ICAgICA9ICIke2JpbmRpcn0vYXNlcW5ldCIKK0ZJTEVTX2Fsc2EtdXRpbHMtaWVjc2V0ICAgICAgPSAiJHtiaW5kaXJ9L2llY3NldCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgPSAiJHtzYmluZGlyfS9hbHNhY3RsICovdWRldi9ydWxlcy5kLzkwLWFsc2EtcmVzdG9yZS5ydWxlcyAqLyovdWRldi9ydWxlcy5kLzkwLWFsc2EtcmVzdG9yZS5ydWxlcyAke3N5c3RlbWRfdW5pdGRpcn0gJHtsb2NhbHN0YXRlZGlyfS9saWIvYWxzYSAke2RhdGFkaXJ9L2Fsc2EvaW5pdC8iCitGSUxFU19hbHNhLXV0aWxzLWFzZXFkdW1wICAgID0gIiR7YmluZGlyfS9hc2VxZHVtcCIKK0ZJTEVTX2Fsc2EtdXRpbHMtYWxzYWxvb3AgICAgPSAiJHtiaW5kaXJ9L2Fsc2Fsb29wIgorRklMRVNfYWxzYS11dGlscy1hbHNhdWNtICAgICA9ICIke2JpbmRpcn0vYWxzYXVjbSAqL3VkZXYvcnVsZXMuZC84OS1hbHNhLXVjbS5ydWxlcyAqLyovdWRldi9ydWxlcy5kLzg5LWFsc2EtdWNtLnJ1bGVzIgorCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWJhdCAgICAgID0gIkNvbW1hbmQtbGluZSBzb3VuZCB0ZXN0ZXIgZm9yIEFMU0Egc291bmQgY2FyZCBkcml2ZXIiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYXRwbGcgICAgID0gIkNvbnZlcnRzIHRvcG9sb2d5IHRleHQgZmlsZXMgaW50byBiaW5hcnkgZm9ybWF0IGZvciBrZXJuZWwiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYXBsYXkgICAgICAgID0gIlBsYXkgKGFuZCByZWNvcmQpIHNvdW5kIGZpbGVzIHVzaW5nIEFMU0EiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYW1peGVyICAgICAgID0gIkNvbW1hbmQtbGluZSBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhbWl4ZXIgICAgPSAibmN1cnNlcy1iYXNlZCBjb250cm9sIGZvciBBTFNBIG1peGVyIGFuZCBzZXR0aW5ncyIKK1NVTU1BUllfYWxzYS11dGlscy1zcGVha2VydGVzdCAgPSAiQUxTQSBzdXJyb3VuZCBzcGVha2VyIHRlc3QgdXRpbGl0eSIKK1NVTU1BUllfYWxzYS11dGlscy1taWRpICAgICAgICAgPSAiTWlzY2VsbGFuZW91cyBNSURJIHV0aWxpdGllcyBmb3IgQUxTQSIKK1NVTU1BUllfYWxzYS11dGlscy1hY29ubmVjdCAgICAgPSAiQUxTQSBzZXF1ZW5jZXIgY29ubmVjdGlvbiBtYW5hZ2VyIgorU1VNTUFSWV9hbHNhLXV0aWxzLWFzZXFuZXQgICAgICA9ICJOZXR3b3JrIGNsaWVudC9zZXJ2ZXIgZm9yIEFMU0Egc2VxdWVuY2VyIgorU1VNTUFSWV9hbHNhLXV0aWxzLWllY3NldCAgICAgICA9ICJBTFNBIHV0aWxpdHkgZm9yIHNldHRpbmcvc2hvd2luZyBJRUM5NTggKFMvUERJRikgc3RhdHVzIGJpdHMiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYWxzYWN0bCAgICAgID0gIlNhdmVzL3Jlc3RvcmVzIEFMU0Etc2V0dGluZ3MgaW4gL2V0Yy9hc291bmQuc3RhdGUiCitTVU1NQVJZX2Fsc2EtdXRpbHMtYXNlcWR1bXAgICAgID0gIlNob3dzIHRoZSBldmVudHMgcmVjZWl2ZWQgYXQgYW4gQUxTQSBzZXF1ZW5jZXIgcG9ydCIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhbG9vcCAgICAgPSAiQUxTQSBQQ00gbG9vcGJhY2sgdXRpbGl0eSIKK1NVTU1BUllfYWxzYS11dGlscy1hbHNhdWNtICAgICAgPSAiQUxTQSBVc2UgQ2FzZSBNYW5hZ2VyIgorCitSUkVDT01NRU5EU19hbHNhLXV0aWxzLWFsc2FjdGwgPSAiYWxzYS1zdGF0ZXMiCisKK2RvX2luc3RhbGwoKSB7CisJYXV0b3Rvb2xzX2RvX2luc3RhbGwKKworCSMgV2UgZG9uJ3Qgc2hpcCB0aGlzIGhlcmUgYmVjYXVzZSBpdCByZXF1aXJlcyBhIGRlcGVuZGVuY3kgb24gYmFzaC4KKwkjIFNlZSBhbHNhLXV0aWxzLXNjcmlwdHNfJHtQVn0uYmIKKwlybSAke0R9JHtzYmluZGlyfS9hbHNhY29uZgorCXJtICR7RH0ke3NiaW5kaXJ9L2Fsc2EtaW5mby5zaAorCXJtIC1mICR7RH0ke3NiaW5kaXJ9L2Fsc2FiYXQtdGVzdC5zaAorCisJIyBJZiB1ZGV2IGlzIGRpc2FibGVkLCB3ZSB0b2xkIGNvbmZpZ3VyZSB0byBpbnN0YWxsIHRoZSBydWxlcworCSMgaW4gL3Vud2FudGVkLCBzbyB3ZSBjYW4gcmVtb3ZlIHRoZW0gbm93LiBJZiB1ZGV2IGlzIGVuYWJsZWQsCisJIyB0aGVuIC91bndhbnRlZCB3b24ndCBleGlzdCBhbmQgdGhpcyB3aWxsIGhhdmUgbm8gZWZmZWN0LgorCXJtIC1yZiAke0R9L3Vud2FudGVkCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfNC4yLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfNC4yLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDVhYzE4YmEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mZm1wZWcvZmZtcGVnXzQuMi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTU4ICswLDAgQEAKLVNVTU1BUlkgPSAiQSBjb21wbGV0ZSwgY3Jvc3MtcGxhdGZvcm0gc29sdXRpb24gdG8gcmVjb3JkLCBjb252ZXJ0IGFuZCBzdHJlYW0gYXVkaW8gYW5kIHZpZGVvLiIKLURFU0NSSVBUSU9OID0gIkZGbXBlZyBpcyB0aGUgbGVhZGluZyBtdWx0aW1lZGlhIGZyYW1ld29yaywgYWJsZSB0byBkZWNvZGUsIGVuY29kZSwgdHJhbnNjb2RlLCBcCi0gICAgICAgICAgICAgICBtdXgsIGRlbXV4LCBzdHJlYW0sIGZpbHRlciBhbmQgcGxheSBwcmV0dHkgbXVjaCBhbnl0aGluZyB0aGF0IGh1bWFucyBhbmQgbWFjaGluZXMgXAotICAgICAgICAgICAgICAgaGF2ZSBjcmVhdGVkLiBJdCBzdXBwb3J0cyB0aGUgbW9zdCBvYnNjdXJlIGFuY2llbnQgZm9ybWF0cyB1cCB0byB0aGUgY3V0dGluZyBlZGdlLiIKLUhPTUVQQUdFID0gImh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkJTRCAmIEdQTHYyKyAmIExHUEx2Mi4xKyAmIE1JVCIKLUxJQ0VOU0VfJHtQTn0gPSAiR1BMdjIrIgotTElDRU5TRV9saWJhdmNvZGVjID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdmRldmljZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGliYXZmaWx0ZXIgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYmF2Zm9ybWF0ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdnJlc2FtcGxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgotTElDRU5TRV9saWJhdnV0aWwgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCi1MSUNFTlNFX2xpYnBvc3Rwcm9jID0gIkdQTHYyKyIKLUxJQ0VOU0VfbGlic3dyZXNhbXBsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfbGlic3dzY2FsZSA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5HUEx2MzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMdjIuMTttZDU9YmQ3YTQ0MzMyMGFmOGM4MTJlNGMxOGQxYjc5ZGYwMDQgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgotCi1TUkNfVVJJID0gImh0dHBzOi8vd3d3LmZmbXBlZy5vcmcvcmVsZWFzZXMvJHtCUH0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovL21pcHM2NF9jcHVfZGV0ZWN0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjY3ZGE5MDRjZjlmZGRlZWIxMGExMzA4ZmMwZGMzOWRlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImNlYzdjODdlOWI2MGQxNzQ1MDllMjYzYWM0MDExYjUyMjM4NWZkMDc3NTI5MmUxNjcwZWNjMTE4MGM5YmI2ZDQiCi0KLSMgQnVpbGQgZmFpbHMgd2hlbiB0aHVtYiBpcyBlbmFibGVkOiBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTc3MTcKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKLQotIyBTaG91bGQgYmUgQVBJIGNvbXBhdGlibGUgd2l0aCBsaWJhdiAod2hpY2ggd2FzIGEgZm9yayBvZiBmZm1wZWcpCi0jIGxpYnBvc3Rwcm9jIHdhcyBwcmV2aW91c2x5IHBhY2thZ2VkIGZyb20gYSBzZXBhcmF0ZSByZWNpcGUKLVBST1ZJREVTID0gImxpYmF2IGxpYnBvc3Rwcm9jIgotCi1ERVBFTkRTID0gIm5hc20tbmF0aXZlIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImF2ZGV2aWNlIGF2ZmlsdGVyIGF2Y29kZWMgYXZmb3JtYXQgc3dyZXNhbXBsZSBzd3NjYWxlIHBvc3Rwcm9jIGF2cmVzYW1wbGUgXAotICAgICAgICAgICAgICAgICAgIGFsc2EgYnpsaWIgZ3BsIGx6bWEgdGhlb3JhIHgyNjQgemxpYiBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAneHYgeGNiJywgJycsIGQpfSIKLQotIyBsaWJyYXJpZXMgdG8gYnVpbGQgaW4gYWRkaXRpb24gdG8gYXZ1dGlsCi1QQUNLQUdFQ09ORklHW2F2ZGV2aWNlXSA9ICItLWVuYWJsZS1hdmRldmljZSwtLWRpc2FibGUtYXZkZXZpY2UiCi1QQUNLQUdFQ09ORklHW2F2ZmlsdGVyXSA9ICItLWVuYWJsZS1hdmZpbHRlciwtLWRpc2FibGUtYXZmaWx0ZXIiCi1QQUNLQUdFQ09ORklHW2F2Y29kZWNdID0gIi0tZW5hYmxlLWF2Y29kZWMsLS1kaXNhYmxlLWF2Y29kZWMiCi1QQUNLQUdFQ09ORklHW2F2Zm9ybWF0XSA9ICItLWVuYWJsZS1hdmZvcm1hdCwtLWRpc2FibGUtYXZmb3JtYXQiCi1QQUNLQUdFQ09ORklHW3N3cmVzYW1wbGVdID0gIi0tZW5hYmxlLXN3cmVzYW1wbGUsLS1kaXNhYmxlLXN3cmVzYW1wbGUiCi1QQUNLQUdFQ09ORklHW3N3c2NhbGVdID0gIi0tZW5hYmxlLXN3c2NhbGUsLS1kaXNhYmxlLXN3c2NhbGUiCi1QQUNLQUdFQ09ORklHW3Bvc3Rwcm9jXSA9ICItLWVuYWJsZS1wb3N0cHJvYywtLWRpc2FibGUtcG9zdHByb2MiCi1QQUNLQUdFQ09ORklHW2F2cmVzYW1wbGVdID0gIi0tZW5hYmxlLWF2cmVzYW1wbGUsLS1kaXNhYmxlLWF2cmVzYW1wbGUiCi0KLSMgZmVhdHVyZXMgdG8gc3VwcG9ydAotUEFDS0FHRUNPTkZJR1thbHNhXSA9ICItLWVuYWJsZS1hbHNhLC0tZGlzYWJsZS1hbHNhLGFsc2EtbGliIgotUEFDS0FHRUNPTkZJR1tiemxpYl0gPSAiLS1lbmFibGUtYnpsaWIsLS1kaXNhYmxlLWJ6bGliLGJ6aXAyIgotUEFDS0FHRUNPTkZJR1tncGxdID0gIi0tZW5hYmxlLWdwbCwtLWRpc2FibGUtZ3BsIgotUEFDS0FHRUNPTkZJR1tnc21dID0gIi0tZW5hYmxlLWxpYmdzbSwtLWRpc2FibGUtbGliZ3NtLGxpYmdzbSIKLVBBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtaW5kZXY9amFjaywtLWRpc2FibGUtaW5kZXY9amFjayxqYWNrIgotUEFDS0FHRUNPTkZJR1tsaWJ2b3JiaXNdID0gIi0tZW5hYmxlLWxpYnZvcmJpcywtLWRpc2FibGUtbGlidm9yYmlzLGxpYnZvcmJpcyIKLVBBQ0tBR0VDT05GSUdbbHptYV0gPSAiLS1lbmFibGUtbHptYSwtLWRpc2FibGUtbHptYSx4eiIKLVBBQ0tBR0VDT05GSUdbbWZ4XSA9ICItLWVuYWJsZS1saWJtZngsLS1kaXNhYmxlLWxpYm1meCxpbnRlbC1tZWRpYXNkayIKLVBBQ0tBR0VDT05GSUdbbXAzbGFtZV0gPSAiLS1lbmFibGUtbGlibXAzbGFtZSwtLWRpc2FibGUtbGlibXAzbGFtZSxsYW1lIgotUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wiCi1QQUNLQUdFQ09ORklHW3NkbDJdID0gIi0tZW5hYmxlLXNkbDIsLS1kaXNhYmxlLXNkbDIsdmlydHVhbC9saWJzZGwyIgotUEFDS0FHRUNPTkZJR1tzcGVleF0gPSAiLS1lbmFibGUtbGlic3BlZXgsLS1kaXNhYmxlLWxpYnNwZWV4LHNwZWV4IgotUEFDS0FHRUNPTkZJR1t0aGVvcmFdID0gIi0tZW5hYmxlLWxpYnRoZW9yYSwtLWRpc2FibGUtbGlidGhlb3JhLGxpYnRoZW9yYSBsaWJvZ2ciCi1QQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItLWVuYWJsZS12YWFwaSwtLWRpc2FibGUtdmFhcGksbGlidmEiCi1QQUNLQUdFQ09ORklHW3ZkcGF1XSA9ICItLWVuYWJsZS12ZHBhdSwtLWRpc2FibGUtdmRwYXUsbGlidmRwYXUiCi1QQUNLQUdFQ09ORklHW3ZweF0gPSAiLS1lbmFibGUtbGlidnB4LC0tZGlzYWJsZS1saWJ2cHgsbGlidnB4IgotUEFDS0FHRUNPTkZJR1t4MjY0XSA9ICItLWVuYWJsZS1saWJ4MjY0LC0tZGlzYWJsZS1saWJ4MjY0LHgyNjQiCi1QQUNLQUdFQ09ORklHW3hjYl0gPSAiLS1lbmFibGUtbGlieGNiLC0tZGlzYWJsZS1saWJ4Y2IsbGlieGNiIgotUEFDS0FHRUNPTkZJR1t4dl0gPSAiLS1lbmFibGUtb3V0ZGV2PXh2LC0tZGlzYWJsZS1vdXRkZXY9eHYsbGlieHYiCi1QQUNLQUdFQ09ORklHW3psaWJdID0gIi0tZW5hYmxlLXpsaWIsLS1kaXNhYmxlLXpsaWIsemxpYiIKLQotIyBDaGVjayBjb2RlY3MgdGhhdCByZXF1aXJlIC0tZW5hYmxlLW5vbmZyZWUKLVVTRV9OT05GUkVFID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zX2FueSgnUEFDS0FHRUNPTkZJRycsIFsgJ29wZW5zc2wnIF0sICd5ZXMnLCAnJywgZCl9IgotCi1kZWYgY3B1KGQpOgotICAgIGZvciBhcmcgaW4gKGQuZ2V0VmFyKCdUVU5FX0NDQVJHUycpIG9yICcnKS5zcGxpdCgpOgotICAgICAgICBpZiBhcmcuc3RhcnRzd2l0aCgnLW1jcHU9Jyk6Ci0gICAgICAgICAgICByZXR1cm4gYXJnWzY6XQotICAgIHJldHVybiAnZ2VuZXJpYycKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1kaXNhYmxlLXN0cmlwcGluZyBcCi0gICAgLS1lbmFibGUtcGljIFwKLSAgICAtLWVuYWJsZS1zaGFyZWQgXAotICAgIC0tZW5hYmxlLXB0aHJlYWRzIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnVVNFX05PTkZSRUUnLCAneWVzJywgJy0tZW5hYmxlLW5vbmZyZWUnLCAnJywgZCl9IFwKLSAgICBcCi0gICAgLS1jcm9zcy1wcmVmaXg9JHtUQVJHRVRfUFJFRklYfSBcCi0gICAgXAotICAgIC0tbGQ9IiR7Q0NMRH0iIFwKLSAgICAtLWNjPSIke0NDfSIgXAotICAgIC0tY3h4PSIke0NYWH0iIFwKLSAgICAtLWFyY2g9JHtUQVJHRVRfQVJDSH0gXAotICAgIC0tdGFyZ2V0LW9zPSJsaW51eCIgXAotICAgIC0tZW5hYmxlLWNyb3NzLWNvbXBpbGUgXAotICAgIC0tZXh0cmEtY2ZsYWdzPSIke0NGTEFHU30gJHtIT1NUX0NDX0FSQ0h9JHtUT09MQ0hBSU5fT1BUSU9OU30iIFwKLSAgICAtLWV4dHJhLWxkZmxhZ3M9IiR7TERGTEFHU30iIFwKLSAgICAtLXN5c3Jvb3Q9IiR7U1RBR0lOR19ESVJfVEFSR0VUfSIgXAotICAgICR7RVhUUkFfRkZDT05GfSBcCi0gICAgLS1saWJkaXI9JHtsaWJkaXJ9IFwKLSAgICAtLXNobGliZGlyPSR7bGliZGlyfSBcCi0gICAgLS1kYXRhZGlyPSR7ZGF0YWRpcn0vZmZtcGVnIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnQVZBSUxUVU5FUycsICdtaXBzMzJyMicsICcnLCAnLS1kaXNhYmxlLW1pcHNkc3AgLS1kaXNhYmxlLW1pcHNkc3ByMicsIGQpfSBcCi0gICAgLS1jcHU9JHtAY3B1KGQpfSBcCi0gICAgLS1wa2ctY29uZmlnPXBrZy1jb25maWcgXAotIgotCi1FWFRSQV9PRUNPTkZfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgLS1kaXNhYmxlLWFzbSIKLSMgZ29sZCBjcmFzaGVzIG9uIHg4NiwgYW5vdGhlciBzb2x1dGlvbiBpcyB0byAtLWRpc2FibGUtYXNtIGJ1dCB0aGF0cyBtb3JlIGhhY2t5Ci0jIGxkLmdvbGQ6IGludGVybmFsIGVycm9yIGluIHJlbG9jYXRlX3NlY3Rpb24sIGF0IC4uLy4uL2dvbGQvaTM4Ni5jYzozNjg0Ci0KLUxERkxBR1NfYXBwZW5kX3g4NiA9ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ2xkLWlzLWdvbGQnLCAnIC1mdXNlLWxkPWJmZCAnLCAnJywgZCl9IgotCi1FWFRSQV9PRU1BS0UgPSAiVj0xIgotCi1kb19jb25maWd1cmUoKSB7Ci0gICAgJHtTfS9jb25maWd1cmUgJHtFWFRSQV9PRUNPTkZ9Ci19Ci0KLVBBQ0tBR0VTID0rICJsaWJhdmNvZGVjIFwKLSAgICAgICAgICAgICBsaWJhdmRldmljZSBcCi0gICAgICAgICAgICAgbGliYXZmaWx0ZXIgXAotICAgICAgICAgICAgIGxpYmF2Zm9ybWF0IFwKLSAgICAgICAgICAgICBsaWJhdnJlc2FtcGxlIFwKLSAgICAgICAgICAgICBsaWJhdnV0aWwgXAotICAgICAgICAgICAgIGxpYnBvc3Rwcm9jIFwKLSAgICAgICAgICAgICBsaWJzd3Jlc2FtcGxlIFwKLSAgICAgICAgICAgICBsaWJzd3NjYWxlIgotCi1GSUxFU19saWJhdmNvZGVjID0gIiR7bGliZGlyfS9saWJhdmNvZGVjJHtTT0xJQlN9IgotRklMRVNfbGliYXZkZXZpY2UgPSAiJHtsaWJkaXJ9L2xpYmF2ZGV2aWNlJHtTT0xJQlN9IgotRklMRVNfbGliYXZmaWx0ZXIgPSAiJHtsaWJkaXJ9L2xpYmF2ZmlsdGVyJHtTT0xJQlN9IgotRklMRVNfbGliYXZmb3JtYXQgPSAiJHtsaWJkaXJ9L2xpYmF2Zm9ybWF0JHtTT0xJQlN9IgotRklMRVNfbGliYXZyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGliYXZyZXNhbXBsZSR7U09MSUJTfSIKLUZJTEVTX2xpYmF2dXRpbCA9ICIke2xpYmRpcn0vbGliYXZ1dGlsJHtTT0xJQlN9IgotRklMRVNfbGlicG9zdHByb2MgPSAiJHtsaWJkaXJ9L2xpYnBvc3Rwcm9jJHtTT0xJQlN9IgotRklMRVNfbGlic3dyZXNhbXBsZSA9ICIke2xpYmRpcn0vbGlic3dyZXNhbXBsZSR7U09MSUJTfSIKLUZJTEVTX2xpYnN3c2NhbGUgPSAiJHtsaWJkaXJ9L2xpYnN3c2NhbGUke1NPTElCU30iCi0KLSMgZmZtcGVnIGRpc2FibGVzIFBJQyBvbiBzb21lIHBsYXRmb3JtcyAoZS5nLiB4ODYtMzIpCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2Y29kZWMgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZkZXZpY2UgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmaWx0ZXIgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZmb3JtYXQgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZ1dGlsID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYmF2cmVzYW1wbGUgPSAidGV4dHJlbCIKLUlOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlic3dzY2FsZSA9ICJ0ZXh0cmVsIgotSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJzd3Jlc2FtcGxlID0gInRleHRyZWwiCi1JTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnBvc3Rwcm9jID0gInRleHRyZWwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfNC4yLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2ZmbXBlZy9mZm1wZWdfNC4yLjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDdiMDY0MQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmZtcGVnL2ZmbXBlZ180LjIuMi5iYgpAQCAtMCwwICsxLDE2MCBAQAorU1VNTUFSWSA9ICJBIGNvbXBsZXRlLCBjcm9zcy1wbGF0Zm9ybSBzb2x1dGlvbiB0byByZWNvcmQsIGNvbnZlcnQgYW5kIHN0cmVhbSBhdWRpbyBhbmQgdmlkZW8uIgorREVTQ1JJUFRJT04gPSAiRkZtcGVnIGlzIHRoZSBsZWFkaW5nIG11bHRpbWVkaWEgZnJhbWV3b3JrLCBhYmxlIHRvIGRlY29kZSwgZW5jb2RlLCB0cmFuc2NvZGUsIFwKKyAgICAgICAgICAgICAgIG11eCwgZGVtdXgsIHN0cmVhbSwgZmlsdGVyIGFuZCBwbGF5IHByZXR0eSBtdWNoIGFueXRoaW5nIHRoYXQgaHVtYW5zIGFuZCBtYWNoaW5lcyBcCisgICAgICAgICAgICAgICBoYXZlIGNyZWF0ZWQuIEl0IHN1cHBvcnRzIHRoZSBtb3N0IG9ic2N1cmUgYW5jaWVudCBmb3JtYXRzIHVwIHRvIHRoZSBjdXR0aW5nIGVkZ2UuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cuZmZtcGVnLm9yZy8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQlNEICYgR1BMdjIrICYgTEdQTHYyLjErICYgTUlUIgorTElDRU5TRV8ke1BOfSA9ICJHUEx2MisiCitMSUNFTlNFX2xpYmF2Y29kZWMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2ZGV2aWNlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJhdmZpbHRlciA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGliYXZmb3JtYXQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2cmVzYW1wbGUgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZ3BsJywgJ0dQTHYyKycsICdMR1BMdjIuMSsnLCBkKX0iCitMSUNFTlNFX2xpYmF2dXRpbCA9ICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdncGwnLCAnR1BMdjIrJywgJ0xHUEx2Mi4xKycsIGQpfSIKK0xJQ0VOU0VfbGlicG9zdHByb2MgPSAiR1BMdjIrIgorTElDRU5TRV9saWJzd3Jlc2FtcGxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9saWJzd3NjYWxlID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dwbCcsICdHUEx2MisnLCAnTEdQTHYyLjErJywgZCl9IgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkdQTHYyO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkdQTHYzO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2Mi4xO21kNT1iZDdhNDQzMzIwYWY4YzgxMmU0YzE4ZDFiNzlkZjAwNCBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEx2MzttZDU9ZTZhNjAwZmQ1ZTFkOWNiZGUyZDk4MzY4MDIzM2FkMDIiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cuZmZtcGVnLm9yZy9yZWxlYXNlcy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiMzQ4OTU2ZmMyZmFhNTdhMmY3OWJiYjg0ZGVkOWZiYzMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiY2I3NTQyNTVhYjBlZTJlYTVmNjZmODg1MGUxYmQ2YWQ1Y2FjMWNkODU1ZDBhMmY0OTkwZmI4YzY2OGIwZDI5YyIKKworIyBCdWlsZCBmYWlscyB3aGVuIHRodW1iIGlzIGVuYWJsZWQ6IGh0dHBzOi8vYnVnemlsbGEueW9jdG9wcm9qZWN0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9NzcxNworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjYgPSAiYXJtIgorCisjIFNob3VsZCBiZSBBUEkgY29tcGF0aWJsZSB3aXRoIGxpYmF2ICh3aGljaCB3YXMgYSBmb3JrIG9mIGZmbXBlZykKKyMgbGlicG9zdHByb2Mgd2FzIHByZXZpb3VzbHkgcGFja2FnZWQgZnJvbSBhIHNlcGFyYXRlIHJlY2lwZQorUFJPVklERVMgPSAibGliYXYgbGlicG9zdHByb2MiCisKK0RFUEVORFMgPSAibmFzbS1uYXRpdmUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitQQUNLQUdFQ09ORklHID8/PSAiYXZkZXZpY2UgYXZmaWx0ZXIgYXZjb2RlYyBhdmZvcm1hdCBzd3Jlc2FtcGxlIHN3c2NhbGUgcG9zdHByb2MgYXZyZXNhbXBsZSBcCisgICAgICAgICAgICAgICAgICAgYWxzYSBiemxpYiBncGwgbHptYSB0aGVvcmEgeDI2NCB6bGliIFwKKyAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4diB4Y2InLCAnJywgZCl9IgorCisjIGxpYnJhcmllcyB0byBidWlsZCBpbiBhZGRpdGlvbiB0byBhdnV0aWwKK1BBQ0tBR0VDT05GSUdbYXZkZXZpY2VdID0gIi0tZW5hYmxlLWF2ZGV2aWNlLC0tZGlzYWJsZS1hdmRldmljZSIKK1BBQ0tBR0VDT05GSUdbYXZmaWx0ZXJdID0gIi0tZW5hYmxlLWF2ZmlsdGVyLC0tZGlzYWJsZS1hdmZpbHRlciIKK1BBQ0tBR0VDT05GSUdbYXZjb2RlY10gPSAiLS1lbmFibGUtYXZjb2RlYywtLWRpc2FibGUtYXZjb2RlYyIKK1BBQ0tBR0VDT05GSUdbYXZmb3JtYXRdID0gIi0tZW5hYmxlLWF2Zm9ybWF0LC0tZGlzYWJsZS1hdmZvcm1hdCIKK1BBQ0tBR0VDT05GSUdbc3dyZXNhbXBsZV0gPSAiLS1lbmFibGUtc3dyZXNhbXBsZSwtLWRpc2FibGUtc3dyZXNhbXBsZSIKK1BBQ0tBR0VDT05GSUdbc3dzY2FsZV0gPSAiLS1lbmFibGUtc3dzY2FsZSwtLWRpc2FibGUtc3dzY2FsZSIKK1BBQ0tBR0VDT05GSUdbcG9zdHByb2NdID0gIi0tZW5hYmxlLXBvc3Rwcm9jLC0tZGlzYWJsZS1wb3N0cHJvYyIKK1BBQ0tBR0VDT05GSUdbYXZyZXNhbXBsZV0gPSAiLS1lbmFibGUtYXZyZXNhbXBsZSwtLWRpc2FibGUtYXZyZXNhbXBsZSIKKworIyBmZWF0dXJlcyB0byBzdXBwb3J0CitQQUNLQUdFQ09ORklHW2Fsc2FdID0gIi0tZW5hYmxlLWFsc2EsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIiCitQQUNLQUdFQ09ORklHW2J6bGliXSA9ICItLWVuYWJsZS1iemxpYiwtLWRpc2FibGUtYnpsaWIsYnppcDIiCitQQUNLQUdFQ09ORklHW2Zkay1hYWNdID0gIi0tZW5hYmxlLWxpYmZkay1hYWMgLS1lbmFibGUtbm9uZnJlZSwtLWRpc2FibGUtbGliZmRrLWFhYyxmZGstYWFjIgorUEFDS0FHRUNPTkZJR1tncGxdID0gIi0tZW5hYmxlLWdwbCwtLWRpc2FibGUtZ3BsIgorUEFDS0FHRUNPTkZJR1tnc21dID0gIi0tZW5hYmxlLWxpYmdzbSwtLWRpc2FibGUtbGliZ3NtLGxpYmdzbSIKK1BBQ0tBR0VDT05GSUdbamFja10gPSAiLS1lbmFibGUtaW5kZXY9amFjaywtLWRpc2FibGUtaW5kZXY9amFjayxqYWNrIgorUEFDS0FHRUNPTkZJR1tsaWJ2b3JiaXNdID0gIi0tZW5hYmxlLWxpYnZvcmJpcywtLWRpc2FibGUtbGlidm9yYmlzLGxpYnZvcmJpcyIKK1BBQ0tBR0VDT05GSUdbbHptYV0gPSAiLS1lbmFibGUtbHptYSwtLWRpc2FibGUtbHptYSx4eiIKK1BBQ0tBR0VDT05GSUdbbWZ4XSA9ICItLWVuYWJsZS1saWJtZngsLS1kaXNhYmxlLWxpYm1meCxpbnRlbC1tZWRpYXNkayIKK1BBQ0tBR0VDT05GSUdbbXAzbGFtZV0gPSAiLS1lbmFibGUtbGlibXAzbGFtZSwtLWRpc2FibGUtbGlibXAzbGFtZSxsYW1lIgorUEFDS0FHRUNPTkZJR1tvcGVuc3NsXSA9ICItLWVuYWJsZS1vcGVuc3NsLC0tZGlzYWJsZS1vcGVuc3NsLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW3NkbDJdID0gIi0tZW5hYmxlLXNkbDIsLS1kaXNhYmxlLXNkbDIsdmlydHVhbC9saWJzZGwyIgorUEFDS0FHRUNPTkZJR1tzcGVleF0gPSAiLS1lbmFibGUtbGlic3BlZXgsLS1kaXNhYmxlLWxpYnNwZWV4LHNwZWV4IgorUEFDS0FHRUNPTkZJR1t0aGVvcmFdID0gIi0tZW5hYmxlLWxpYnRoZW9yYSwtLWRpc2FibGUtbGlidGhlb3JhLGxpYnRoZW9yYSBsaWJvZ2ciCitQQUNLQUdFQ09ORklHW3ZhYXBpXSA9ICItLWVuYWJsZS12YWFwaSwtLWRpc2FibGUtdmFhcGksbGlidmEiCitQQUNLQUdFQ09ORklHW3ZkcGF1XSA9ICItLWVuYWJsZS12ZHBhdSwtLWRpc2FibGUtdmRwYXUsbGlidmRwYXUiCitQQUNLQUdFQ09ORklHW3ZweF0gPSAiLS1lbmFibGUtbGlidnB4LC0tZGlzYWJsZS1saWJ2cHgsbGlidnB4IgorUEFDS0FHRUNPTkZJR1t4MjY0XSA9ICItLWVuYWJsZS1saWJ4MjY0LC0tZGlzYWJsZS1saWJ4MjY0LHgyNjQiCitQQUNLQUdFQ09ORklHW3gyNjVdID0gIi0tZW5hYmxlLWxpYngyNjUsLS1kaXNhYmxlLWxpYngyNjUseDI2NSIKK1BBQ0tBR0VDT05GSUdbeGNiXSA9ICItLWVuYWJsZS1saWJ4Y2IsLS1kaXNhYmxlLWxpYnhjYixsaWJ4Y2IiCitQQUNLQUdFQ09ORklHW3h2XSA9ICItLWVuYWJsZS1vdXRkZXY9eHYsLS1kaXNhYmxlLW91dGRldj14dixsaWJ4diIKK1BBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS1lbmFibGUtemxpYiwtLWRpc2FibGUtemxpYix6bGliIgorCisjIENoZWNrIGNvZGVjcyB0aGF0IHJlcXVpcmUgLS1lbmFibGUtbm9uZnJlZQorVVNFX05PTkZSRUUgPSAiJHtAYmIudXRpbHMuY29udGFpbnNfYW55KCdQQUNLQUdFQ09ORklHJywgWyAnb3BlbnNzbCcgXSwgJ3llcycsICcnLCBkKX0iCisKK2RlZiBjcHUoZCk6CisgICAgZm9yIGFyZyBpbiAoZC5nZXRWYXIoJ1RVTkVfQ0NBUkdTJykgb3IgJycpLnNwbGl0KCk6CisgICAgICAgIGlmIGFyZy5zdGFydHN3aXRoKCctbWNwdT0nKToKKyAgICAgICAgICAgIHJldHVybiBhcmdbNjpdCisgICAgcmV0dXJuICdnZW5lcmljJworCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWRpc2FibGUtc3RyaXBwaW5nIFwKKyAgICAtLWVuYWJsZS1waWMgXAorICAgIC0tZW5hYmxlLXNoYXJlZCBcCisgICAgLS1lbmFibGUtcHRocmVhZHMgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdVU0VfTk9ORlJFRScsICd5ZXMnLCAnLS1lbmFibGUtbm9uZnJlZScsICcnLCBkKX0gXAorICAgIFwKKyAgICAtLWNyb3NzLXByZWZpeD0ke1RBUkdFVF9QUkVGSVh9IFwKKyAgICBcCisgICAgLS1sZD0iJHtDQ0xEfSIgXAorICAgIC0tY2M9IiR7Q0N9IiBcCisgICAgLS1jeHg9IiR7Q1hYfSIgXAorICAgIC0tYXJjaD0ke1RBUkdFVF9BUkNIfSBcCisgICAgLS10YXJnZXQtb3M9ImxpbnV4IiBcCisgICAgLS1lbmFibGUtY3Jvc3MtY29tcGlsZSBcCisgICAgLS1leHRyYS1jZmxhZ3M9IiR7Q0ZMQUdTfSAke0hPU1RfQ0NfQVJDSH0ke1RPT0xDSEFJTl9PUFRJT05TfSIgXAorICAgIC0tZXh0cmEtbGRmbGFncz0iJHtMREZMQUdTfSIgXAorICAgIC0tc3lzcm9vdD0iJHtTVEFHSU5HX0RJUl9UQVJHRVR9IiBcCisgICAgJHtFWFRSQV9GRkNPTkZ9IFwKKyAgICAtLWxpYmRpcj0ke2xpYmRpcn0gXAorICAgIC0tc2hsaWJkaXI9JHtsaWJkaXJ9IFwKKyAgICAtLWRhdGFkaXI9JHtkYXRhZGlyfS9mZm1wZWcgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdBVkFJTFRVTkVTJywgJ21pcHMzMnIyJywgJycsICctLWRpc2FibGUtbWlwc2RzcCAtLWRpc2FibGUtbWlwc2RzcHIyJywgZCl9IFwKKyAgICAtLWNwdT0ke0BjcHUoZCl9IFwKKyAgICAtLXBrZy1jb25maWc9cGtnLWNvbmZpZyBcCisiCisKK0VYVFJBX09FQ09ORl9hcHBlbmRfbGludXgtZ251eDMyID0gIiAtLWRpc2FibGUtYXNtIgorIyBnb2xkIGNyYXNoZXMgb24geDg2LCBhbm90aGVyIHNvbHV0aW9uIGlzIHRvIC0tZGlzYWJsZS1hc20gYnV0IHRoYXRzIG1vcmUgaGFja3kKKyMgbGQuZ29sZDogaW50ZXJuYWwgZXJyb3IgaW4gcmVsb2NhdGVfc2VjdGlvbiwgYXQgLi4vLi4vZ29sZC9pMzg2LmNjOjM2ODQKKworTERGTEFHU19hcHBlbmRfeDg2ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnbGQtaXMtZ29sZCcsICcgLWZ1c2UtbGQ9YmZkICcsICcnLCBkKX0iCisKK0VYVFJBX09FTUFLRSA9ICJWPTEiCisKK2RvX2NvbmZpZ3VyZSgpIHsKKyAgICAke1N9L2NvbmZpZ3VyZSAke0VYVFJBX09FQ09ORn0KK30KKworUEFDS0FHRVMgPSsgImxpYmF2Y29kZWMgXAorICAgICAgICAgICAgIGxpYmF2ZGV2aWNlIFwKKyAgICAgICAgICAgICBsaWJhdmZpbHRlciBcCisgICAgICAgICAgICAgbGliYXZmb3JtYXQgXAorICAgICAgICAgICAgIGxpYmF2cmVzYW1wbGUgXAorICAgICAgICAgICAgIGxpYmF2dXRpbCBcCisgICAgICAgICAgICAgbGlicG9zdHByb2MgXAorICAgICAgICAgICAgIGxpYnN3cmVzYW1wbGUgXAorICAgICAgICAgICAgIGxpYnN3c2NhbGUiCisKK0ZJTEVTX2xpYmF2Y29kZWMgPSAiJHtsaWJkaXJ9L2xpYmF2Y29kZWMke1NPTElCU30iCitGSUxFU19saWJhdmRldmljZSA9ICIke2xpYmRpcn0vbGliYXZkZXZpY2Uke1NPTElCU30iCitGSUxFU19saWJhdmZpbHRlciA9ICIke2xpYmRpcn0vbGliYXZmaWx0ZXIke1NPTElCU30iCitGSUxFU19saWJhdmZvcm1hdCA9ICIke2xpYmRpcn0vbGliYXZmb3JtYXQke1NPTElCU30iCitGSUxFU19saWJhdnJlc2FtcGxlID0gIiR7bGliZGlyfS9saWJhdnJlc2FtcGxlJHtTT0xJQlN9IgorRklMRVNfbGliYXZ1dGlsID0gIiR7bGliZGlyfS9saWJhdnV0aWwke1NPTElCU30iCitGSUxFU19saWJwb3N0cHJvYyA9ICIke2xpYmRpcn0vbGlicG9zdHByb2Mke1NPTElCU30iCitGSUxFU19saWJzd3Jlc2FtcGxlID0gIiR7bGliZGlyfS9saWJzd3Jlc2FtcGxlJHtTT0xJQlN9IgorRklMRVNfbGlic3dzY2FsZSA9ICIke2xpYmRpcn0vbGlic3dzY2FsZSR7U09MSUJTfSIKKworIyBmZm1wZWcgZGlzYWJsZXMgUElDIG9uIHNvbWUgcGxhdGZvcm1zIChlLmcuIHg4Ni0zMikKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZjb2RlYyA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmRldmljZSA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmZpbHRlciA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdmZvcm1hdCA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJhdnV0aWwgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGliYXZyZXNhbXBsZSA9ICJ0ZXh0cmVsIgorSU5TQU5FX1NLSVBfJHtNTFBSRUZJWH1saWJzd3NjYWxlID0gInRleHRyZWwiCitJTlNBTkVfU0tJUF8ke01MUFJFRklYfWxpYnN3cmVzYW1wbGUgPSAidGV4dHJlbCIKK0lOU0FORV9TS0lQXyR7TUxQUkVGSVh9bGlicG9zdHByb2MgPSAidGV4dHJlbCIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZmxhYy9mbGFjXzEuMy4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mbGFjL2ZsYWNfMS4zLjMuYmIKaW5kZXggZmVhMmJlMS4uY2I2NjkyYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mbGFjL2ZsYWNfMS4zLjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9mbGFjL2ZsYWNfMS4zLjMuYmIKQEAgLTMzLDYgKzMzLDcgQEAKICAgICAgICAgICAgICAgICAiCiAKIEVYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiYWx0aXZlYyIsICIgLS1lbmFibGUtYWx0aXZlYyIsICIgLS1kaXNhYmxlLWFsdGl2ZWMiLCBkKX0iCitFWFRSQV9PRUNPTkYgKz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwgInZzeCIsICIgLS1lbmFibGUtdnN4IiwgIiAtLWRpc2FibGUtdnN4IiwgZCl9IgogRVhUUkFfT0VDT05GICs9ICIke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJjb3JlMiIsICIgLS1lbmFibGUtc3NlIiwgIiIsIGQpfSIKIEVYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAiY29yZWk3IiwgIiAtLWVuYWJsZS1zc2UiLCAiIiwgZCl9IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFiN2YxMTUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDAgKzAsMCBAQAotRnJvbSAyYjA0MzZmOWEwNzc3M2ZhZThjNzRkZjkwMmQ3MDI0ZThiZmMzNTEyIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUdWUsIDI0IE5vdiAyMDE1IDE2OjQ2OjI3ICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGludHJvc3BlY3Rpb24ubTQ6IHByZWZpeCBwa2djb25maWcgcGF0aHMgd2l0aAotIFBLR19DT05GSUdfU1lTUk9PVF9ESVIKLQotV2UgY2FuJ3QgdXNlIG91ciB0d2Vha2VkIGludHJvc3BlY3Rpb24ubTQgZnJvbSBnb2JqZWN0LWludHJvc3BlY3Rpb24gdGFyYmFsbAotYmVjYXVzZSBnc3RyZWFtZXIgYWxzbyBkZWZpbmVzIElOVFJPU1BFQ1RJT05fSU5JVCBpbiBpdHMgaW50cm9zcGVjdGlvbi5tNCwgd2hpY2gKLWlzIGxhdGVyIHN1cHBsaWVkIHRvIGctaXItc2Nhbm5lci4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nIFtyZXZpZXcgb24gb2UtY29yZSBsaXN0XQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIGNvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00IHwgOCArKysrLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCA0IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb21tb24vbTQvaW50cm9zcGVjdGlvbi5tNCBiL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00Ci1pbmRleCAxNjJiZTU3Li45MzNmOTc5IDEwMDY0NAotLS0tIGEvY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQKLSsrKyBiL2NvbW1vbi9tNC9pbnRyb3NwZWN0aW9uLm00Ci1AQCAtNTQsMTQgKzU0LDE0IEBAIG00X2RlZmluZShbX0dPQkpFQ1RfSU5UUk9TUEVDVElPTl9DSEVDS19JTlRFUk5BTF0sCi0gICAgIElOVFJPU1BFQ1RJT05fR0lSRElSPQotICAgICBJTlRST1NQRUNUSU9OX1RZUEVMSUJESVI9Ci0gICAgIGlmIHRlc3QgIngkZm91bmRfaW50cm9zcGVjdGlvbiIgPSAieHllcyI7IHRoZW4KLS0gICAgICAgSU5UUk9TUEVDVElPTl9TQ0FOTkVSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfc2Nhbm5lciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotLSAgICAgICBJTlRST1NQRUNUSU9OX0NPTVBJTEVSPWAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfY29tcGlsZXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLS0gICAgICAgSU5UUk9TUEVDVElPTl9HRU5FUkFURT1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1nX2lyX2dlbmVyYXRlIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0rICAgICAgIElOVFJPU1BFQ1RJT05fU0NBTk5FUj0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWdfaXJfc2Nhbm5lciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotKyAgICAgICBJTlRST1NQRUNUSU9OX0NPTVBJTEVSPSRQS0dfQ09ORklHX1NZU1JPT1RfRElSYCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9jb21waWxlciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotKyAgICAgICBJTlRST1NQRUNUSU9OX0dFTkVSQVRFPSRQS0dfQ09ORklHX1NZU1JPT1RfRElSYCRQS0dfQ09ORklHIC0tdmFyaWFibGU9Z19pcl9nZW5lcmF0ZSBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYAotICAgICAgICBJTlRST1NQRUNUSU9OX0dJUkRJUj1gJFBLR19DT05GSUcgLS12YXJpYWJsZT1naXJkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAKLSAgICAgICAgSU5UUk9TUEVDVElPTl9UWVBFTElCRElSPSIkKCRQS0dfQ09ORklHIC0tdmFyaWFibGU9dHlwZWxpYmRpciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wKSIKLSAgICAgICAgSU5UUk9TUEVDVElPTl9DRkxBR1M9YCRQS0dfQ09ORklHIC0tY2ZsYWdzIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0gICAgICAgIElOVFJPU1BFQ1RJT05fTElCUz1gJFBLR19DT05GSUcgLS1saWJzIGdvYmplY3QtaW50cm9zcGVjdGlvbi0xLjBgCi0tICAgICAgIElOVFJPU1BFQ1RJT05fTUFLRUZJTEU9YCRQS0dfQ09ORklHIC0tdmFyaWFibGU9ZGF0YWRpciBnb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wYC9nb2JqZWN0LWludHJvc3BlY3Rpb24tMS4wL01ha2VmaWxlLmludHJvc3BlY3Rpb24KLSsgICAgICAgSU5UUk9TUEVDVElPTl9NQUtFRklMRT0kUEtHX0NPTkZJR19TWVNST09UX0RJUmAkUEtHX0NPTkZJRyAtLXZhcmlhYmxlPWRhdGFkaXIgZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMGAvZ29iamVjdC1pbnRyb3NwZWN0aW9uLTEuMC9NYWtlZmlsZS5pbnRyb3NwZWN0aW9uCi0gICAgICAgIElOVFJPU1BFQ1RJT05fSU5JVD0iZXh0ZXJuIHZvaWQgZ3N0X2luaXQoZ2ludCosZ2NoYXIqKik7IGdzdF9pbml0KE5VTEwsTlVMTCk7IgotICAgICBmaQotICAgICBBQ19TVUJTVChJTlRST1NQRUNUSU9OX1NDQU5ORVIpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9hZGQtYS10YXJnZXQtdG8tY29tcGlsZS10ZXN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL2FkZC1hLXRhcmdldC10by1jb21waWxlLXRlc3RzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkMDJkODY5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL2FkZC1hLXRhcmdldC10by1jb21waWxlLXRlc3RzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjkgKzAsMCBAQAotRnJvbSBkNjE0MTRiYzE3Y2YyZGYwMTk1MTBjMjkwODA0OGM0Y2FiZjVjZjA5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLURhdGU6IFR1ZSwgMjcgRmViIDIwMTggMDk6Mjc6MDEgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gYWRkIHRhcmdldHMgZm9yIHRlc3QgaW5zdGFsbGF0aW9uCi0KLVRhcmdldHMgdG8gbWFrZSBzdXJlIHRlc3RzIGNhbiBiZSBpbnN0YWxsZWQgYW5kIHRoZW4gcnVuIG9uCi10aGUgdGFyZ2V0LgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW3NwZWNpZmljIHRvIG9lIHNldHVwXQotCi1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotCi0tLS0KLSB0ZXN0cy9jaGVjay9NYWtlZmlsZS5hbSB8IDI3ICsrKysrKysrKysrKysrKysrKysrLS0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAyMCBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvdGVzdHMvY2hlY2svTWFrZWZpbGUuYW0gYi90ZXN0cy9jaGVjay9NYWtlZmlsZS5hbQotaW5kZXggMTNiOTE2ZC4uYTY2Nzg2ZCAxMDA2NDQKLS0tLSBhL3Rlc3RzL2NoZWNrL01ha2VmaWxlLmFtCi0rKysgYi90ZXN0cy9jaGVjay9NYWtlZmlsZS5hbQotQEAgLTgsMTEgKzgsNyBAQCBSRUdJU1RSWV9FTlZJUk9OTUVOVCA9IFwKLSAJR1NUX1JFR0lTVFJZPSQoQ0hFQ0tfUkVHSVNUUlkpCi0gCi0gQU1fVEVTVFNfRU5WSVJPTk1FTlQgKz0gXAotLSAgICAgICAgR1NUX1NUQVRFX0lHTk9SRV9FTEVNRU5UUz0iJChTVEFURV9JR05PUkVfRUxFTUVOVFMpIglcCi0tICAgICAgICAkKFJFR0lTVFJZX0VOVklST05NRU5UKQkJCQkJXAotLSAgICAgICAgR1NUX1BMVUdJTl9TQ0FOTkVSXzFfMD0kKHRvcF9idWlsZGRpcikvbGlicy9nc3QvaGVscGVycy9nc3QtcGx1Z2luLXNjYW5uZXIgXAotLSAgICAgICAgR1NUX1BMVUdJTl9TWVNURU1fUEFUSF8xXzA9CQkJCQlcCi0tICAgICAgICBHU1RfUExVR0lOX1BBVEhfMV8wPSQodG9wX2J1aWxkZGlyKS9wbHVnaW5zCi0rICAgICAgICBHU1RfU1RBVEVfSUdOT1JFX0VMRU1FTlRTPSIkKFNUQVRFX0lHTk9SRV9FTEVNRU5UUykiCi0gCi0gcGx1Z2luZGlyID0gJChsaWJkaXIpL2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQAotIAotQEAgLTE3OCw2ICsxNzQsMjMgQEAgbm9pbnN0X1BST0dSQU1TID0KLSAKLSBURVNUUyA9ICQoY2hlY2tfUFJPR1JBTVMpCi0gCi0raW5zdGFsbC1wdGVzdDogJChURVNUUykKLSsJQCQoSU5TVEFMTCkgLWQgJChERVNURElSKQotKwlAZm9yIGRpciBpbiBgZmluZCAtbWF4ZGVwdGggMSAtdHlwZSBkYDsgZG8gXAotKwkJaWYgWyAteCAkJGRpci8ubGlicyBdOyB0aGVuIFwKLSsJCQkkKElOU1RBTEwpIC1kICQoREVTVERJUikvJCRkaXI7IFwKLSsJCQkkKElOU1RBTExfUFJPR1JBTSkgJCRkaXIvLmxpYnMvKiAkKERFU1RESVIpLyQkZGlyLzsgXAotKwkJZmkgXAotKwlkb25lCi0rCi0rcnVudGVzdHM6Ci0rCUBmb3IgYiBpbiAkKFRFU1RTKTsgZG8gXAotKwkJaWYgWyAteCAkJGIgXTsgdGhlbiBcCi0rCQkJJChBTV9URVNUU19FTlZJUk9OTUVOVCkgJChTSEVMTCkgdGVzdC1kcml2ZXIgLS10ZXN0LW5hbWUgIiQkYiIgXAotKwkJCS0tbG9nLWZpbGUgJCRiLmxvZyAtLXRycy1maWxlICQkYi50cnMgJCRiOyBcCi0rCQlmaSBcCi0rCWRvbmUKLSsKLSBub2luc3RfSEVBREVSUyA9IFwKLSAJZ3N0L2NhcHNsaXN0LmggXAotIAlnc3Qvc3RydWN0X2FybS5oIFwKLUBAIC0yMjEsOSArMjM0LDkgQEAgZ3N0X2dzdHByaW50Zl9MREFERCA9IFwKLSAJJChMREFERCkKLSAKLSBlbGVtZW50c19mZHNyY19DRkxBR1M9JChHU1RfT0JKX0NGTEFHUykgJChBTV9DRkxBR1MpIFwKLS0JLURURVNURklMRT1cIiQodG9wX3NyY2RpcikvY29uZmlndXJlLmFjXCIKLSsJLURURVNURklMRT1cIk1ha2VmaWxlXCIKLSBlbGVtZW50c19maWxlc3JjX0NGTEFHUz0kKEdTVF9PQkpfQ0ZMQUdTKSAkKEFNX0NGTEFHUykgXAotLQktRFRFU1RGSUxFPVwiJCh0b3Bfc3JjZGlyKS9jb25maWd1cmUuYWNcIgotKwktRFRFU1RGSUxFPVwiTWFrZWZpbGVcIgotIAotIGxpYnNfY29udHJvbGxlcl9MREFERCA9IFwKLSAJJCh0b3BfYnVpbGRkaXIpL2xpYnMvZ3N0L2NvbnRyb2xsZXIvbGliZ3N0Y29udHJvbGxlci1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy9ndGstZG9jLXR3ZWFrcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL2d0ay1kb2MtdHdlYWtzLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkODZjNzhkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL2d0ay1kb2MtdHdlYWtzLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDcgKzAsMCBAQAotRnJvbSA3MDE4Y2ExYzRiZjI2YzgzMTdlN2ZjZDJlN2U0ZTY0ODE5NWY0MmNhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLURhdGU6IFdlZCwgMjAgRGVjIDIwMTcgMTM6MDM6MDMgKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gZ3N0cmVhbWVyOiB1c2UgYSBwYXRjaCBpbnN0ZWFkIG9mIHNlZCB0byBmaXggZ3RrLWRvYwotCi1QYXRjaCB0aGUgZ3RrLWRvYyBtYWtlZmlsZXMgc28gdGhhdCB0aGUgcWVtdSB3cmFwcGVyIGlzIHVzZWQgdG8gcnVuIHRyYW5zaWVudAotYmluYXJpZXMgaW5zdGVhZCBvZiBsaWJ0b29sIHdyYXBwZXIgb3IgcnVubmluZyB0aGVtIGRpcmVjdGx5LgotCi1BbHNvIHN1YnN0aXR1dGUgYSBib2d1cyBwbHVnaW4gc2Nhbm5lciwgYXMgdHJ5aW5nIHRvIHJ1biB0aGUgcmVhbCBvbmUgaXMgY2F1c2luZwotaXNzdWVzIGR1cmluZyBidWlsZCBvbiB4ODZfNjQuCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotLS0tCi0gY29tbW9uL2d0ay1kb2MubWFrIHwgNSArKystLQotIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb21tb24vZ3RrLWRvYy5tYWsgYi9jb21tb24vZ3RrLWRvYy5tYWsKLWluZGV4IDNmODM0OTEuLmU1Y2IwZDEgMTAwNjQ0Ci0tLS0gYS9jb21tb24vZ3RrLWRvYy5tYWsKLSsrKyBiL2NvbW1vbi9ndGstZG9jLm1hawotQEAgLTYsMTEgKzYsMTEgQEAKLSBpZiBHVEtfRE9DX1VTRV9MSUJUT09MCi0gR1RLRE9DX0NDID0gJChMSUJUT09MKSAtLXRhZz1DQyAtLW1vZGU9Y29tcGlsZSAkKENDKSAkKElOQ0xVREVTKSAkKEdUS0RPQ19ERVBTX0NGTEFHUykgJChBTV9DUFBGTEFHUykgJChDUFBGTEFHUykgJChBTV9DRkxBR1MpICQoQ0ZMQUdTKQotIEdUS0RPQ19MRCA9ICQoTElCVE9PTCkgLS10YWc9Q0MgLS1tb2RlPWxpbmsgJChDQykgJChHVEtET0NfREVQU19MSUJTKSAkKEFNX0NGTEFHUykgJChDRkxBR1MpICQoQU1fTERGTEFHUykgJChMREZMQUdTKQotLUdUS0RPQ19SVU4gPSAkKExJQlRPT0wpIC0tbW9kZT1leGVjdXRlCi0rR1RLRE9DX1JVTiA9ICQodG9wX2J1aWxkZGlyKS9ndGtkb2MtcWVtdXdyYXBwZXIKLSBlbHNlCi0gR1RLRE9DX0NDID0gJChDQykgJChJTkNMVURFUykgJChHVEtET0NfREVQU19DRkxBR1MpICQoQU1fQ1BQRkxBR1MpICQoQ1BQRkxBR1MpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykKLSBHVEtET0NfTEQgPSAkKENDKSAkKEdUS0RPQ19ERVBTX0xJQlMpICQoQU1fQ0ZMQUdTKSAkKENGTEFHUykgJChBTV9MREZMQUdTKSAkKExERkxBR1MpCi0tR1RLRE9DX1JVTiA9Ci0rR1RLRE9DX1JVTiA9ICQodG9wX2J1aWxkZGlyKS9ndGtkb2MtcWVtdXdyYXBwZXIKLSBlbmRpZgotIAotICMgV2Ugc2V0IEdQQVRIIGhlcmU7IHRoaXMgZ2l2ZXMgdXMgc2VtYW50aWNzIGZvciBHTlUgbWFrZQotQEAgLTEwMSw2ICsxMDEsNyBAQCBzY2FuLWJ1aWxkLnN0YW1wOiAkKEhGSUxFX0dMT0IpICQoQ0ZJTEVfR0xPQikKLSAJICAgIEdTVF9QTFVHSU5fUEFUSF8xXzA9CQkJCQlcCi0gCSAgICBHU1RfUkVHSVNUUllfMV8wPWRvYy1yZWdpc3RyeS54bWwJCQkJXAotIAkgICAgJChHVEtET0NfRVhUUkFfRU5WSVJPTk1FTlQpCQkJCQlcCi0rCSAgICBHU1RfUExVR0lOX1NDQU5ORVJfMV8wPSIkKHRvcF9idWlsZGRpcikvbGlicy9nc3QvaGVscGVycy9nc3QtcGx1Z2luLXNjYW5uZXItZHVtbXkiIFwKLSAJICAgIENDPSIkKEdUS0RPQ19DQykiIExEPSIkKEdUS0RPQ19MRCkiIFJVTj0iJChHVEtET0NfUlVOKSIJXAotIAkgICAgQ0ZMQUdTPSIkKEdUS0RPQ19DRkxBR1MpICQoQ0ZMQUdTKSIJCQkJXAotIAkgICAgTERGTEFHUz0iJChHVEtET0NfTElCUykgJChMREZMQUdTKSIJCQkJXAotLS0gCi0yLjE1LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvcnVuLXB0ZXN0CmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NzNkMGI2Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2ZpbGVzL3J1bi1wdGVzdAorKysgL2Rldi9udWxsCkBAIC0xLDMgKzAsMCBAQAotIyEvYmluL3NoCi0KLW1ha2UgLWsgcnVudGVzdHMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC1wbHVnaW5zLXBhY2thZ2UuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtcGFja2FnZS5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDY3ODFlOTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXBsdWdpbnMtcGFja2FnZS5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1QQUNLQUdFU1BMSVRGVU5DU19wcmVwZW5kID0gIiBzcGxpdF9nc3RyZWFtZXIxMF9wYWNrYWdlcyAiCi1QQUNLQUdFU1BMSVRGVU5DU19hcHBlbmQgPSAiIHNldF9tZXRhcGtnX3JkZXBlbmRzICIKLQotcHl0aG9uIHNwbGl0X2dzdHJlYW1lcjEwX3BhY2thZ2VzICgpIHsKLSAgICBnc3RfbGliZGlyID0gZC5leHBhbmQoJyR7bGliZGlyfS9nc3RyZWFtZXItJHtMSUJWfScpCi0gICAgcG9zdGluc3QgPSBkLmdldFZhcigncGx1Z2luX3Bvc3RpbnN0JykKLSAgICBnbGliZGlyID0gZC5nZXRWYXIoJ2xpYmRpcicpCi0KLSAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBnbGliZGlyLCByJ15saWIoLiopXC5zb1wuKicsICdsaWIlcycsICdnc3RyZWFtZXIgJXMgbGlicmFyeScsIGV4dHJhX2RlcGVuZHM9JycsIGFsbG93X2xpbmtzPVRydWUpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZ3N0X2xpYmRpciwgcidsaWJnc3QoLiopXC5zbyQnLCBkLmV4cGFuZCgnJHtQTn0tJXMnKSwgJ0dTdHJlYW1lciBwbHVnaW4gZm9yICVzJywgcG9zdGluc3Q9cG9zdGluc3QsIGV4dHJhX2RlcGVuZHM9JycpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZ2xpYmRpcisnL2dpcmVwb3NpdG9yeS0xLjAnLCByJ0dzdCguKiktMS4wXC50eXBlbGliJCcsIGQuZXhwYW5kKCcke1BOfS0lcy10eXBlbGliJyksICdHU3RyZWFtZXIgdHlwZWxpYiBmaWxlIGZvciAlcycsIHBvc3RpbnN0PXBvc3RpbnN0LCBleHRyYV9kZXBlbmRzPScnKQotICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGdzdF9saWJkaXIsIHInbGliZ3N0KC4qKVwubGEkJywgZC5leHBhbmQoJyR7UE59LSVzLWRldicpLCAnR1N0cmVhbWVyIHBsdWdpbiBmb3IgJXMgKGRldmVsb3BtZW50IGZpbGVzKScsIGV4dHJhX2RlcGVuZHM9JyR7UE59LWRldicpCi0gICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZ3N0X2xpYmRpciwgcidsaWJnc3QoLiopXC5hJCcsIGQuZXhwYW5kKCcke1BOfS0lcy1zdGF0aWNkZXYnKSwgJ0dTdHJlYW1lciBwbHVnaW4gZm9yICVzIChzdGF0aWMgZGV2ZWxvcG1lbnQgZmlsZXMpJywgZXh0cmFfZGVwZW5kcz0nJHtQTn0tc3RhdGljZGV2JykKLX0KLQotcHl0aG9uIHNldF9tZXRhcGtnX3JkZXBlbmRzICgpIHsKLSAgICBpbXBvcnQgb3MKLSAgICBpbXBvcnQgb2UudXRpbHMKLQotICAgIHBuID0gZC5nZXRWYXIoJ1BOJykKLSAgICBtZXRhcGtnID0gIHBuICsgJy1tZXRhJwotICAgIGQuc2V0VmFyKCdBTExPV19FTVBUWV8nICsgbWV0YXBrZywgIjEiKQotICAgIGQuc2V0VmFyKCdGSUxFU18nICsgbWV0YXBrZywgIiIpCi0gICAgYmxhY2tsaXN0ID0gWyBwbiwgcG4gKyAnLW1ldGEnIF0KLSAgICBtZXRhcGtnX3JkZXBlbmRzID0gW10KLSAgICBwa2dkZXN0ID0gZC5nZXRWYXIoJ1BLR0RFU1QnKQotICAgIGZvciBwa2cgaW4gb2UudXRpbHMucGFja2FnZXNfZmlsdGVyX291dF9zeXN0ZW0oZCk6Ci0gICAgICAgIGlmIHBrZyBub3QgaW4gYmxhY2tsaXN0IGFuZCBwa2cgbm90IGluIG1ldGFwa2dfcmRlcGVuZHM6Ci0gICAgICAgICAgICAjIFNlZSBpZiB0aGUgcGFja2FnZSBpcyBlbXB0eSBieSBsb29raW5nIGF0IHRoZSBjb250ZW50cyBvZiBpdHMgUEtHREVTVCBzdWJkaXJlY3RvcnkuIAotICAgICAgICAgICAgIyBJZiB0aGlzIHN1YmRpcmVjdG9yeSBpcyBlbXB0eSwgdGhlbiB0aGUgcGFja2FnZSBpcy4KLSAgICAgICAgICAgICMgRW1wdHkgcGFja2FnZXMgZG8gbm90IGdldCBhZGRlZCB0byB0aGUgbWV0YSBwYWNrYWdlJ3MgUkRFUEVORFMKLSAgICAgICAgICAgIHBrZ2RpciA9IG9zLnBhdGguam9pbihwa2dkZXN0LCBwa2cpCi0gICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwa2dkaXIpOgotICAgICAgICAgICAgICAgIGRpcl9jb250ZW50cyA9IG9zLmxpc3RkaXIocGtnZGlyKSBvciBbXQotICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICBkaXJfY29udGVudHMgPSBbXQotICAgICAgICAgICAgaXNfZW1wdHkgPSBsZW4oZGlyX2NvbnRlbnRzKSA9PSAwCi0gICAgICAgICAgICBpZiBub3QgaXNfZW1wdHk6Ci0gICAgICAgICAgICAgICAgbWV0YXBrZ19yZGVwZW5kcy5hcHBlbmQocGtnKQotICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnLmpvaW4obWV0YXBrZ19yZGVwZW5kcykpCi0gICAgZC5zZXRWYXIoJ0RFU0NSSVBUSU9OXycgKyBtZXRhcGtnLCBwbiArICcgbWV0YSBwYWNrYWdlJykKLX0KLQotIyBlYWNoIHBsdWdpbi1kZXYgZGVwZW5kcyBvbiBQTi1kZXYsIHBsdWdpbi1zdGF0aWNkZXYgb24gUE4tc3RhdGljZGV2Ci0jIHNvIHdlIG5lZWQgdGhlbSBldmVuIHdoZW4gZW1wdHkgKGxpa2UgaW4gZ3N0LXBsdWdpbnMtZ29vZCBjYXNlKQotQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKLUFMTE9XX0VNUFRZXyR7UE59LWRldiA9ICIxIgotQUxMT1dfRU1QVFlfJHtQTn0tc3RhdGljZGV2ID0gIjEiCi0KLVBBQ0tBR0VTICs9ICIke1BOfS1hcHBzICR7UE59LW1ldGEgJHtQTn0tZ2xpYiIKLQotRklMRVNfJHtQTn0gPSAiIgotRklMRVNfJHtQTn0tYXBwcyA9ICIke2JpbmRpcn0iCi1GSUxFU18ke1BOfS1nbGliID0gIiR7ZGF0YWRpcn0vZ2xpYi0yLjAiCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICIke1BOfS1tZXRhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1jb25uZWN0LWhhcy1hLWRpZmZlcmVudC1zaWduYXR1cmUtb24tbXVzbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZS8wMDAxLWNvbm5lY3QtaGFzLWEtZGlmZmVyZW50LXNpZ25hdHVyZS1vbi1tdXNsLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9maWxlcy8wMDAxLWNvbm5lY3QtaGFzLWEtZGlmZmVyZW50LXNpZ25hdHVyZS1vbi1tdXNsLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtdmFsaWRhdGUvMDAwMS1jb25uZWN0LWhhcy1hLWRpZmZlcmVudC1zaWduYXR1cmUtb24tbXVzbC5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXZhbGlkYXRlXzEuMTYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZV8xLjE2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdkNjAyZWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0LXZhbGlkYXRlXzEuMTYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVNVTU1BUlkgPSAiR3N0cmVhbWVyIHZhbGlkYXRpb24gdG9vbCIKLURFU0NSSVBUSU9OID0gIkEgVG9vbCB0byB0ZXN0IEdTdHJlYW1lciBjb21wb25lbnRzIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2dzdC12YWxpZGF0ZS8xLjEyLjMuaHRtbCIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtCUE59LyR7QlB9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbm5lY3QtaGFzLWEtZGlmZmVyZW50LXNpZ25hdHVyZS1vbi1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjc5M2U3NWY0NzE3ZjcxOGFkMjA0YzU1NGQ1NzdiMTYwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjdmMDc5YjliMmExMjc2MDRiOThlMjk3MDM3ZGM4ODQ3ZWY1MGY0Y2UyYjUwOGFhMmRmMGNhYzViNzc1NjI4OTkiCi0KLURFUEVORFMgPSAianNvbi1nbGliIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKLVJSRUNPTU1FTkRTXyR7UE59ID0gImdpdCIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC8qICR7bGliZGlyfS9nc3QtdmFsaWRhdGUtbGF1bmNoZXIvKiAke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qIgotCi1pbmhlcml0IHBrZ2NvbmZpZyBnZXR0ZXh0IGF1dG90b29scyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KLQotIyBXaXRoIGd0ay1kb2MgZW5hYmxlZCB0aGlzIHJlY2lwZSBmYWlscyB0byBidWlsZCwgc28gZm9yY2libHkgZGlzYWJsZSBpdDoKLSMgV09SS0RJUi9idWlsZC9kb2NzL3ZhbGlkYXRlL2dzdC12YWxpZGF0ZS1zY2FuOiBsaW5lIDExNzoKLSMgV09SS0RJUi9idWlsZC9kb2NzL3ZhbGlkYXRlLy5saWJzL2x0LWdzdC12YWxpZGF0ZS1zY2FuOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci1HVEtET0NfRU5BQkxFRCA9ICJGYWxzZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdC12YWxpZGF0ZV8xLjE2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtdmFsaWRhdGVfMS4xNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM1NDkyZmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3QtdmFsaWRhdGVfMS4xNi4yLmJiCkBAIC0wLDAgKzEsMjUgQEAKK1NVTU1BUlkgPSAiR3N0cmVhbWVyIHZhbGlkYXRpb24gdG9vbCIKK0RFU0NSSVBUSU9OID0gIkEgVG9vbCB0byB0ZXN0IEdTdHJlYW1lciBjb21wb25lbnRzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzL2dzdC12YWxpZGF0ZS8xLjEyLjMuaHRtbCIKK1NFQ1RJT04gPSAibXVsdGltZWRpYSIKKworTElDRU5TRSA9ICJMR1BMdjIuMSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtCUE59LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbm5lY3QtaGFzLWEtZGlmZmVyZW50LXNpZ25hdHVyZS1vbi1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjY4OGY0MmM1MmQ2MmU4YzVlNTA2ZGY5MTE1NTNmYjJjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQ4NjFjY2I5MzI2MjAwZTc0ZDk4MDA3ZTMxNmIzODdkNDhkZDQ5ZjA3MmUwYjc4Y2I5ZDMzMDNmZGVjZmVlY2EiCisKK0RFUEVORFMgPSAianNvbi1nbGliIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKK1JSRUNPTU1FTkRTXyR7UE59ID0gImdpdCIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC8qICR7bGliZGlyfS9nc3QtdmFsaWRhdGUtbGF1bmNoZXIvKiAke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qIgorCitpbmhlcml0IHBrZ2NvbmZpZyBnZXR0ZXh0IGF1dG90b29scyBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworIyBXaXRoIGd0ay1kb2MgZW5hYmxlZCB0aGlzIHJlY2lwZSBmYWlscyB0byBidWlsZCwgc28gZm9yY2libHkgZGlzYWJsZSBpdDoKKyMgV09SS0RJUi9idWlsZC9kb2NzL3ZhbGlkYXRlL2dzdC12YWxpZGF0ZS1zY2FuOiBsaW5lIDExNzoKKyMgV09SS0RJUi9idWlsZC9kb2NzL3ZhbGlkYXRlLy5saWJzL2x0LWdzdC12YWxpZGF0ZS1zY2FuOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5CitHVEtET0NfRU5BQkxFRCA9ICJGYWxzZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLURpc2FibGUteWFzbS1mb3ItbGliYXYtd2hlbi1kaXNhYmxlLXlhc20ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1EaXNhYmxlLXlhc20tZm9yLWxpYmF2LXdoZW4tZGlzYWJsZS15YXNtLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTU3MWFlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLURpc2FibGUteWFzbS1mb3ItbGliYXYtd2hlbi1kaXNhYmxlLXlhc20ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1Gcm9tIDU0YmJhMjI4ZWE1MmQwMWZkODQ5NDFkOTdiZTIzYzAzZjk4NjJiNjQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+Ci1EYXRlOiBTYXQsIDYgQXByIDIwMTMgMDE6MjI6MjIgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gRGlzYWJsZSB5YXNtIGZvciBsaWJhdiB3aGVuIC0tZGlzYWJsZS15YXNtCi0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbY29uZmlndXJhdGlvbl0KLQotU2lnbmVkLW9mZi1ieTogU2hhbmUgV2FuZyA8c2hhbmUud2FuZ0BpbnRlbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxkdkBwc2V1ZG90ZXJtaW5hbC5vcmc+Ci0tLS0KLSBjb25maWd1cmUuYWMgfCA0ICsrKysKLSAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDIyZWRlODguLmVmM2MwNTAgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM1NSw2ICszNTUsMTIgQEAgZWxzZQotICAgICBlbWJsaWJhdl9jb25maWd1cmVfYXJncz0iJGVtYmxpYmF2X2NvbmZpZ3VyZV9hcmdzIC0tZW5hYmxlLWdwbCIKLSAgIGZpCi0KLSsgIEFDX0FSR19FTkFCTEUoeWFzbSwKLSsgICAgICAgICAgICAgIFtBQ19IRUxQX1NUUklORyhbLS1kaXNhYmxlLXlhc21dLCBbZGlzYWJsZSB1c2Ugb2YgeWFzbSBhc3NlbWJsZXJdKV0pCi0rICBpZiB0ZXN0ICJ4JGVuYWJsZV95YXNtIiA9ICJ4bm8iOyB0aGVuCi0rICAgIGVtYmxpYmF2X2NvbmZpZ3VyZV9hcmdzPSIkZW1ibGliYXZfY29uZmlndXJlX2FyZ3MgLS1kaXNhYmxlLXlhc20iCi0rICBmaQotKwotICAgIyBpZiB3ZSBhcmUgY3Jvc3MtY29tcGlsaW5nLCB0ZWxsIGxpYmF2IHNvCi0gICBjYXNlICRob3N0IGluCi0gICAgICAgKmFuZHJvaWQqKQotLS0gCi0xLjguMgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1jb25maWd1cmUtY2hlY2stZm9yLWFybXY3dmUtdmFyaWFudC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLWNvbmZpZ3VyZS1jaGVjay1mb3ItYXJtdjd2ZS12YXJpYW50LnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmMTgyNzE1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLWNvbmZpZ3VyZS1jaGVjay1mb3ItYXJtdjd2ZS12YXJpYW50LnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotRnJvbSBhYWM1OTAyZDNjOWNiMzVjNzcxZTc2MGQwZTQ4NzYyMmFhMmUxMTZhIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFRodSwgMjAgQXByIDIwMTcgMTA6Mzg6MTggLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gY29uZmlndXJlOiBjaGVjayBmb3IgYXJtdjd2ZSB2YXJpYW50Ci0KLU9FIHBhc3NlcyAtbWNwdSBhbmQgLW1hcmNoIHZpYSBjbWRsaW5lIGFuZCBpZgotcGFja2FnZSB0cmllcyB0byBkZXRlY3Qgb25lIG9mIGl0IG93biB0aGVuIGl0Ci1zaG91bGQgYmUgY29tcGF0aWJsZSBvdGhlcndpc2UsIG5ld2VyIGdjYzcrIHdpbGwKLWVycm9yIG91dAotCi1DaGVjayBmb3IgcmVsZXZhbnQgcHJlcHJvY2Vzc29yIG1hY3JvIHRvIGRldGVybWluZQotYXJtdjd2ZSBhcmNoaXRlY3R1cmUKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLSBnc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlIHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS9nc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlIGIvZ3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZ3VyZQotaW5kZXggNGE1ZTQ3Ny4uNzI3ODE4ZSAxMDA3NTUKLS0tLSBhL2dzdC1saWJzL2V4dC9saWJhdi9jb25maWd1cmUKLSsrKyBiL2dzdC1saWJzL2V4dC9saWJhdi9jb25maWd1cmUKLUBAIC00NzQ1LDYgKzQ3NDUsNyBAQCBlbGlmIGVuYWJsZWQgYXJtOyB0aGVuCi0gICAgICAgICBlbGlmIGNoZWNrX2FybV9hcmNoIDZLWjsgICAgICB0aGVuIGVjaG8gYXJtdjZ6awotICAgICAgICAgZWxpZiBjaGVja19hcm1fYXJjaCA2Wks7ICAgICAgdGhlbiBlY2hvIGFybXY2emsKLSAgICAgICAgIGVsaWYgY2hlY2tfYXJtX2FyY2ggNlQyOyAgICAgIHRoZW4gZWNobyBhcm12NnQyCi0rICAgICAgICBlbGlmIGNoZWNrX2FybV9hcmNoIEVYVF9JRElWOyB0aGVuIGVjaG8gYXJtdjd2ZQotICAgICAgICAgZWxpZiBjaGVja19hcm1fYXJjaCA3OyAgICAgICAgdGhlbiBlY2hvIGFybXY3Ci0gICAgICAgICBlbGlmIGNoZWNrX2FybV9hcmNoIDdBICA3X0E7ICB0aGVuIGVjaG8gYXJtdjctYQotICAgICAgICAgZWxpZiBjaGVja19hcm1fYXJjaCA3UzsgICAgICAgdGhlbiBlY2hvIGFybXY3LWEKLS0tIAotMi4xMi4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLWZpeC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvMDAwMS1maXgtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMjBjMDc5Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi8wMDAxLWZpeC1ob3N0LWNvbnRhbWluYXRpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1Gcm9tIGMxNzAwZjg2N2Y4NzZlZTMzYzEzMGE4ZTI4YjY4OGUyYjFkODk2NjMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotRGF0ZTogV2VkLCAxMSBBcHIgMjAxOCAxNzoxNDo1NSArMDgwMAotU3ViamVjdDogW1BBVENIXSBQcmV2ZW50IGhvc3QgY29udGFtaW5hdGlvbgotCi1SZW1vdmUgcmVmZXJlbmNlIHRvIGhvc3QgJChsaWJkaXIpIGZyb20gLmxhIGZpbGVzLgotCi1VcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW2Nyb3NzLWNvbXBpbGUgc3BlY2lmaWNdCi0KLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0tLS0KLSBnc3QtbGlicy9leHQvTWFrZWZpbGUuYW0gfCA0ICsrLS0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAyIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZXh0L01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZXh0L01ha2VmaWxlLmFtCi1pbmRleCA2Y2RjMDQ4Li5hMTlkMjU1IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZXh0L01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9leHQvTWFrZWZpbGUuYW0KLUBAIC00OSw3ICs0OSw3IEBAIGVjaG8gIiAgR0VOICAgICAgJDEubGEiICYmIFwKLSAgZWNobyAibGlicmFyeV9uYW1lcz0nJyIgJiYgXAotICBlY2hvICJvbGRfbGlicmFyeT0nJDEuYSciICYmIFwKLSAgZWNobyAiaW5oZXJpdGVkX2xpbmtlcl9mbGFncz0nJyIgJiYgXAotLSBlY2hvICJkZXBlbmRlbmN5X2xpYnM9JyAtTCQobGliZGlyKSAkKGlmICQyLCQoZm9yZWFjaCBkZXAsJDIsJChhYnNfYnVpbGRkaXIpLyQoZGVwKS5sYSkpICQoY2FsbCBmaW5kX2xpYnJhcnlfbGEsJDMgJChMSUJNKSwkKExERkxBR1MpKSAnIiAmJiBcCi0rIGVjaG8gImRlcGVuZGVuY3lfbGlicz0nIC1MICQoaWYgJDIsJChmb3JlYWNoIGRlcCwkMiwkKGFic19idWlsZGRpcikvJChkZXApLmxhKSkgJChjYWxsIGZpbmRfbGlicmFyeV9sYSwkMyAkKExJQk0pLCQoTERGTEFHUykpICciICYmIFwKLSAgZWNobyAid2Vha19saWJyYXJ5X25hbWVzPScnIiAmJiAgXAotICBlY2hvICJjdXJyZW50PSIgJiYgXAotICBlY2hvICJhZ2U9IiAmJiBcCi1AQCAtNTgsNyArNTgsNyBAQCBlY2hvICIgIEdFTiAgICAgICQxLmxhIiAmJiBcCi0gIGVjaG8gInNob3VsZG5vdGxpbms9bm8iICYmIFwKLSAgZWNobyAiZGxvcGVuPScnIiAmJiBcCi0gIGVjaG8gImRscHJlb3Blbj0nJyIgJiYgXAotLSBlY2hvICJsaWJkaXI9JyQobGliZGlyKSciKSA+ICQxLmxhCi0rIGVjaG8gImxpYmRpcj0nJyIpID4gJDEubGEKLSBlbmRlZgotIAotIGxpYmF2dXRpbC5sYToKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdi9taXBzNjRfY3B1X2RldGVjdGlvbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTBkMDQyYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvbWlwczY0X2NwdV9kZXRlY3Rpb24ucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMiArMCwwIEBACi1JdCB3aWxsIGFkZCAtbWlwczY0cjYgYW5kIC1taXBzNjRyMiB0byBjbWRsaW5lIHdoaWNoIHdpbGwKLWNhdXNlIGNvbmZsaWN0cwotCi1pbiBPRSB3ZSB1c2VyIG1pcHMzMnIyIGFuZCBtaXBzNjRyMiBmb3IgbWlwcyBhcmNoIHZlcnNpb25zCi1zbyB0aGVyZSBpcyBubyBiZW5lZml0IG9mIGRldGVjdGluZyBpdCBhdXRvbWF0aWNhbGx5IGJ5Ci1wb2tpbmcgYXQgdG9vbHMgZXNwZWNpYWxseSBpbiBjcm9zcyBlbnYKLQotRml4ZXMgZXJyb3JzIGxpa2UKLQotbGlua2luZyAtbW5hbj0yMDA4IG1vZHVsZSB3aXRoIHByZXZpb3VzIC1tbmFuPWxlZ2FjeSBtb2R1bGVzCi1mYWlsZWQgdG8gbWVyZ2UgdGFyZ2V0IHNwZWNpZmljIGRhdGEgb2YgZmlsZQotCi0tS2hlbQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtPRS1TcGVjaWZpY10KLQotSW5kZXg6IGdzdC1saWJhdi0xLjEwLjEvZ3N0LWxpYnMvZXh0L2xpYmF2L2NvbmZpZ3VyZQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdzdC1saWJhdi0xLjEwLjEub3JpZy9nc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlCi0rKysgZ3N0LWxpYmF2LTEuMTAuMS9nc3QtbGlicy9leHQvbGliYXYvY29uZmlndXJlCi1AQCAtNTY1MCwxMiArNTY1MCw5IEBAIGVsaWYgZW5hYmxlZCBtaXBzOyB0aGVuCi0gCi0gICAgICMgRW5hYmxlIG1pbmltdW0gSVNBIGJhc2VkIG9uIHNlbGVjdGVkIG9wdGlvbnMKLSAgICAgaWYgZW5hYmxlZCBtaXBzNjQ7IHRoZW4KLS0gICAgICAgIGVuYWJsZWQgbWlwczY0cjYgJiYgY2hlY2tfaW5saW5lX2FzbV9mbGFncyBtaXBzNjRyNiAnImRsc2EgJDAsICQwLCAkMCwgMSInICctbWlwczY0cjYnCi0gICAgICAgICBlbmFibGVkIG1pcHM2NHIyICYmIGNoZWNrX2lubGluZV9hc21fZmxhZ3MgbWlwczY0cjIgJyJkZXh0ICQwLCAkMCwgMCwgMSInICctbWlwczY0cjInCi0gICAgICAgICBkaXNhYmxlZCBtaXBzNjRyNiAmJiBkaXNhYmxlZCBtaXBzNjRyMiAmJiBjaGVja19pbmxpbmVfYXNtX2ZsYWdzIG1pcHM2NHIxICciZGFkZGkgJDAsICQwLCAwIicgJy1taXBzNjQnCi0gICAgIGVsc2UKLS0gICAgICAgIGVuYWJsZWQgbWlwczMycjYgJiYgY2hlY2tfaW5saW5lX2FzbV9mbGFncyBtaXBzMzJyNiAnImF1aSAkMCwgJDAsIDAiJyAnLW1pcHMzMnI2JwotLSAgICAgICAgZW5hYmxlZCBtaXBzMzJyNSAmJiBjaGVja19pbmxpbmVfYXNtX2ZsYWdzIG1pcHMzMnI1ICciZXJldG5jIicgJy1taXBzMzJyNScKLSAgICAgICAgIGVuYWJsZWQgbWlwczMycjIgJiYgY2hlY2tfaW5saW5lX2FzbV9mbGFncyBtaXBzMzJyMiAnImV4dCAkMCwgJDAsIDAsIDEiJyAnLW1pcHMzMnIyJwotICAgICAgICAgZGlzYWJsZWQgbWlwczMycjYgJiYgZGlzYWJsZWQgbWlwczMycjUgJiYgZGlzYWJsZWQgbWlwczMycjIgJiYgY2hlY2tfaW5saW5lX2FzbV9mbGFncyBtaXBzMzJyMSAnImFkZGkgJDAsICQwLCAwIicgJy1taXBzMzInCi0gICAgIGZpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvd29ya2Fyb3VuZC10by1idWlsZC1nc3QtbGliYXYtZm9yLWk1ODYtd2l0aC1nY2MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXYvd29ya2Fyb3VuZC10by1idWlsZC1nc3QtbGliYXYtZm9yLWk1ODYtd2l0aC1nY2MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDRiODUzNTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2L3dvcmthcm91bmQtdG8tYnVpbGQtZ3N0LWxpYmF2LWZvci1pNTg2LXdpdGgtZ2NjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjYgKzAsMCBAQAotRGVzY3JpcHRpb246IFdvcmthcm91bmQgdG8gYnVpbGQgbGliYXYgZm9yIGk1ODYgd2l0aCBnY2MgNC45LjIgYnkgYXZvaWRpbmcgbWVtc2V0Ci1BdXRob3I6IEJlcm5oYXJkINxiZWxhY2tlciA8YmVybmhhcmR1QHZyLXdlYi5kZT4KLQotLS0tCi1CdWctRGViaWFuOiBodHRwczovL2J1Z3MuZGViaWFuLm9yZy83ODMwODIKLUxhc3QtVXBkYXRlOiAyMDE1LTA0LTI4Ci0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2RlYmlhbl0KLQotU2lnbmVkLW9mZi1ieTogUm9iZXJ0IFlhbmcgPGxpZXpoaS55YW5nQHdpbmRyaXZlci5jb20+Ci0KLS0tLSBnc3QtbGliYXYtMS40LjUub3JpZy9nc3QtbGlicy9leHQvbGliYXYvbGliYXZjb2RlYy9oMjY0X2NhYmFjLmMKLSsrKyBnc3QtbGliYXYtMS40LjUvZ3N0LWxpYnMvZXh0L2xpYmF2L2xpYmF2Y29kZWMvaDI2NF9jYWJhYy5jCi1AQCAtMjA1Nyw3ICsyMDU3LDExIEBAIGRlY29kZV9pbnRyYV9tYjoKLSAgICAgICAgIC8vIEluIGRlYmxvY2tpbmcsIHRoZSBxdWFudGl6ZXIgaXMgMAotICAgICAgICAgaC0+Y3VyX3BpYy5xc2NhbGVfdGFibGVbbWJfeHldID0gMDsKLSAgICAgICAgIC8vIEFsbCBjb2VmZnMgYXJlIHByZXNlbnQKLS0gICAgICAgIG1lbXNldChoLT5ub25femVyb19jb3VudFttYl94eV0sIDE2LCA0OCk7Ci0rICAgICAgICAvKm1lbXNldChoLT5ub25femVyb19jb3VudFttYl94eV0sIDE2LCA0OCk7Ki8KLSsgICAgICAgICAgICAvKiBhdm9pZGluZyB0aGlzIG1lbXNldCBiZWNhdXNlIGl0IGxlYWRzIGF0IGxlYXN0IHdpdGggZ2NjNC45LjIgdG8gZXJyb3I6ICdhc20nIG9wZXJhbmQgaGFzIGltcG9zc2libGUgY29uc3RyYWludHMgKi8KLSsgICAgICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgNDg7IGkrKykgewotKyAgICAgICAgICAgICggKHVuc2lnbmVkIGNoYXIqKShoLT5ub25femVyb19jb3VudFttYl94eV0pICkgW2ldID0gMTY7Ci0rICAgICAgICB9Ci0gICAgICAgICBoLT5jdXJfcGljLm1iX3R5cGVbbWJfeHldID0gbWJfdHlwZTsKLSAgICAgICAgIHNsLT5sYXN0X3FzY2FsZV9kaWZmID0gMDsKLSAgICAgICAgIHJldHVybiAwOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1saWJhdl8xLjE2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwOTU1ZmYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcwICswLDAgQEAKLVNVTU1BUlkgPSAiTGliYXYtYmFzZWQgR1N0cmVhbWVyIDEueCBwbHVnaW4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy8iCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyAmICggKEdQTHYyKyAmIExHUEx2Mi4xKykgfCAoR1BMdjMrICYgTEdQTHYzKykgKSIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9leHQvbGliYXYvZ3N0YXYuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTE4O21kNT1hNzUyYzM1MjY3ZDgyNzZmZDljYTNkYjY5OTRmY2E5YyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5HUEx2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0LWxpYnMvZXh0L2xpYmF2L0NPUFlJTkcuR1BMdjM7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC1saWJzL2V4dC9saWJhdi9DT1BZSU5HLkxHUEx2Mi4xO21kNT1iZDdhNDQzMzIwYWY4YzgxMmU0YzE4ZDFiNzlkZjAwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QtbGlicy9leHQvbGliYXYvQ09QWUlORy5MR1BMdjM7bWQ1PWU2YTYwMGZkNWUxZDljYmRlMmQ5ODM2ODAyMzNhZDAyIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LWxpYmF2L2dzdC1saWJhdi0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLXlhc20tZm9yLWxpYmF2LXdoZW4tZGlzYWJsZS15YXNtLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3dvcmthcm91bmQtdG8tYnVpbGQtZ3N0LWxpYmF2LWZvci1pNTg2LXdpdGgtZ2NjLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL21pcHM2NF9jcHVfZGV0ZWN0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLWNoZWNrLWZvci1hcm12N3ZlLXZhcmlhbnQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1maXgtaG9zdC1jb250YW1pbmF0aW9uLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjU4MDIzZjRjNzFiYmQ3MTEwNjFlMzUwZmNkNzZjMDlkIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImU4YTU3NDhhZTlhNGE3YmU5Njk2NTEyMTgyZWE5ZmZhNmVmZTBiZTliNzk3NjkxNjU0OGU5ZDQzODFjYTYxYzQiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtbGliYXYtJHtQVn0iCi0KLURFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgemxpYiBiemlwMiB4eiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBndGstZG9jCi0KLSMgQ0FVVElPTjogVXNpbmcgdGhlIHN5c3RlbSBsaWJhdiBpcyBub3QgcmVjb21tZW5kZWQuIFNpbmNlIHRoZSBsaWJhdiBBUEkgaXMgY2hhbmdpbmcgYWxsIHRoZSB0aW1lLAotIyBjb21waWxhdGlvbiBlcnJvcnMgKGFuZCBvdGhlciwgbW9yZSBzdWJ0bGUgYnVncykgY2FuIGhhcHBlbi4gSXQgaXMgdXN1YWxseSBiZXR0ZXIgdG8gcmVseSBvbiB0aGUKLSMgbGliYXYgY29weSBpbmNsdWRlZCBpbiB0aGUgZ3N0LWxpYmF2IHBhY2thZ2UuCi1QQUNLQUdFQ09ORklHID8/PSAib3JjIHlhc20iCi0KLVBBQ0tBR0VDT05GSUdbZ3BsXSA9ICItLWVuYWJsZS1ncGwsLS1kaXNhYmxlLWdwbCwiCi1QQUNLQUdFQ09ORklHW2xpYmF2XSA9ICItLXdpdGgtc3lzdGVtLWxpYmF2LCxsaWJhdiIKLVBBQ0tBR0VDT05GSUdbb3JjXSA9ICItLWVuYWJsZS1vcmMsLS1kaXNhYmxlLW9yYyxvcmMiCi1QQUNLQUdFQ09ORklHW3lhc21dID0gIi0tZW5hYmxlLXlhc20sLS1kaXNhYmxlLXlhc20sbmFzbS1uYXRpdmUiCi1QQUNLQUdFQ09ORklHW3ZhbGdyaW5kXSA9ICItLWVuYWJsZS12YWxncmluZCwtLWRpc2FibGUtdmFsZ3JpbmQsdmFsZ3JpbmQiCi0KLUdTVFJFQU1FUl8xXzBfREVCVUcgPz0gIi0tZGlzYWJsZS1kZWJ1ZyIKLQotTElCQVZfRVhUUkFfQ09ORklHVVJFID0gIi0td2l0aC1saWJhdi1leHRyYS1jb25maWd1cmUiCi0KLUxJQkFWX0VYVFJBX0NPTkZJR1VSRV9DT01NT05fQVJHID0gIi0tdGFyZ2V0LW9zPWxpbnV4IFwKLSAgLS1jYz0nJHtDQ30nIC0tYXM9JyR7Q0N9JyAtLWxkPScke0NDfScgLS1ubT0nJHtOTX0nIC0tYXI9JyR7QVJ9JyBcCi0gIC0tcmFubGliPScke1JBTkxJQn0nIFwKLSAgJHtHU1RSRUFNRVJfMV8wX0RFQlVHfSBcCi0gIC0tY3Jvc3MtcHJlZml4PScke0hPU1RfUFJFRklYfSciCi0KLSMgRGlzYWJsZSBhc3NlbWJseSBvcHRpbWl6YXRpb25zIGZvciBYMzIsIGFzIHRoaXMgbGliYXYgbGFja3MgdGhlIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdfcmVtb3ZlX2xpbnV4LWdudXgzMiA9ICJ5YXNtIgotTElCQVZfRVhUUkFfQ09ORklHVVJFX0NPTU1PTl9BUkdfYXBwZW5kX2xpbnV4LWdudXgzMiA9ICIgLS1kaXNhYmxlLWFzbSIKLQotTElCQVZfRVhUUkFfQ09ORklHVVJFX0NPTU1PTiA9IFwKLScke0xJQkFWX0VYVFJBX0NPTkZJR1VSRX09IiR7TElCQVZfRVhUUkFfQ09ORklHVVJFX0NPTU1PTl9BUkd9IicKLQotRVhUUkFfT0VDT05GID0gIiR7TElCQVZfRVhUUkFfQ09ORklHVVJFX0NPTU1PTn0iCi0KLUZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLnNvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmxhIgotRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmEiCi0KLSMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDkzLwotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKLQotIyBmZm1wZWcvbGliYXYgZGlzYWJsZXMgUElDIG9uIHNvbWUgcGxhdGZvcm1zIChlLmcuIHg4Ni0zMikKLUlOU0FORV9TS0lQXyR7UE59ID0gInRleHRyZWwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtbGliYXZfMS4xNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yZmRlZmM5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLWxpYmF2XzEuMTYuMi5iYgpAQCAtMCwwICsxLDM1IEBACitTVU1NQVJZID0gIkxpYmF2LWJhc2VkIEdTdHJlYW1lciAxLnggcGx1Z2luIgorSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisgJiAoIChHUEx2MisgJiBMR1BMdjIuMSspIHwgKEdQTHYzKyAmIExHUEx2MyspICkiCitMSUNFTlNFX0ZMQUdTID0gImNvbW1lcmNpYWwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1iMjM0ZWU0ZDY5ZjVmY2U0NDg2YTgwZmRhZjRhNDI2MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZXh0L2xpYmF2L2dzdGF2Lmg7YmVnaW5saW5lPTE7ZW5kbGluZT0xODttZDU9YTc1MmMzNTI2N2Q4Mjc2ZmQ5Y2EzZGI2OTk0ZmNhOWMiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtbGliYXYvZ3N0LWxpYmF2LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJlYWNlYmQwMTM2ZWRlM2E5YmQzNjcyZWViMzM4ODA2YiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJjNzI0ZjYxMjcwMGMxNWE5MzNjNzM1NmZiZWFiYjBiYjk1NzFmYjU1MzhmOGIxYjU0ZDRkMmQ5NDE4OGRlZWYyIgorCitTID0gIiR7V09SS0RJUn0vZ3N0LWxpYmF2LSR7UFZ9IgorCitERVBFTkRTID0gImdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGZmbXBlZyIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLnNvIgorRklMRVNfJHtQTn0tc3RhdGljZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmEiCisKK2RlbGV0ZV91bnVzZWRfbGliYXZfY29weSgpIHsKKyAgICAgICAgIyBXaGVuIGJ1aWxkaW5nIHdpdGggbWVzb24sIHRoZSBpbnRlcm5hbCBsaWJhdiBjb3B5IGlzIG5vdCB1c2VkLgorICAgICAgICAjIEl0IGlzIG9ubHkgcHJlc2VudCBmb3IgbGVnYWN5IGF1dG90b29scyBiYXNlZCBidWlsZHMuIEluIGZ1dHVyZQorICAgICAgICAjIEdTdHJlYW1lciB2ZXJzaW9ucywgdGhlIGF1dG90b29scyBzY3JpcHRzIHdpbGwgYmUgZ29uZSwgYW5kIHNvCisgICAgICAgICMgd2lsbCB0aGlzIGludGVybmFsIGNvcHkuIFVudGlsIHRoZW4sIGl0IHdpbGwgYmUgcHJlc2VudC4gSW4gb3JkZXIKKyAgICAgICAgIyB0byBtYWtlIHN1cmUgdGhpcyBjb3B5IGlzIG5vdCBpbmNsdWRlZCBpbiB0aGUgLXNyYyBwYWNrYWdlLCBqdXN0CisgICAgICAgICMgbWFudWFsbHkgZGVsZXRlIHRoZSBjb3B5LgorICAgICAgICBybSAtcmYgIiR7U30vZ3N0LWxpYnMvZXh0L2xpYmF2LyIKK30KKworZG9fdW5wYWNrW3Bvc3RmdW5jc10gKz0gIiBkZWxldGVfdW51c2VkX2xpYmF2X2NvcHkiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjYjJmNzA0Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xNi4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTcgKzAsMCBAQAotU1VNTUFSWSA9ICJPcGVuTUFYIElMIHBsdWdpbnMgZm9yIEdTdHJlYW1lciIKLUhPTUVQQUdFID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnLyIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSIKLUxJQ0VOU0VfRkxBR1MgPSAiY29tbWVyY2lhbCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL29teC9nc3RvbXguaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT01YzhlMWZjYTMyNzA0NDg4ZTc2ZDJiYTlkZGZhOTM1ZiIKLQotU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1vbXgvZ3N0LW9teC0ke1BWfS50YXIueHoiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI4OTc3MmU3YTI3N2ZkMGFiZmMyNTBlYWY4ZTRlOWNlOSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjYmY1NDEyMWEyY2JhNTc1ZDQ2MDgzM2U4MTMyMjY1NzgxMjUyY2UzMmNmNWI4ZjlmYTg3NTNlNDJhYjI0YmIyIgotCi1TID0gIiR7V09SS0RJUn0vZ3N0LW9teC0ke1BWfSIKLQotREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBnZXR0ZXh0IGd0ay1kb2MgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCi0KLWFjcGF0aHMgPSAiLUkgJHtTfS9jb21tb24vbTQgLUkgJHtTfS9tNCIKLQotR1NUUkVBTUVSXzFfMF9PTVhfVEFSR0VUID89ICJiZWxsYWdpbyIKLUdTVFJFQU1FUl8xXzBfT01YX0NPUkVfTkFNRSA/PSAiJHtsaWJkaXJ9L2xpYm9teGlsLWJlbGxhZ2lvLnNvLjAiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLXZhbGdyaW5kIC0td2l0aC1vbXgtdGFyZ2V0PSR7R1NUUkVBTUVSXzFfMF9PTVhfVEFSR0VUfSIKLQotcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKLSAgICBvbXhfdGFyZ2V0ID0gZC5nZXRWYXIoIkdTVFJFQU1FUl8xXzBfT01YX1RBUkdFVCIpCi0gICAgaWYgb214X3RhcmdldCBpbiBbJ2dlbmVyaWMnLCAnYmVsbGFnaW8nXToKLSAgICAgICAgIyBCZWxsYWdpbyBoZWFkZXJzIGFyZSBpbmNvbXBsZXRlICh0aGV5IGFyZSBtaXNzaW5nIHRoZSBPTVhfVkVSU0lPTl9NQUpPUiwjCi0gICAgICAgICMgT01YX1ZFUlNJT05fTUlOT1IsIE9NWF9WRVJTSU9OX1JFVklTSU9OLCBhbmQgT01YX1ZFUlNJT05fU1RFUCBtYWNyb3MpOwotICAgICAgICAjIGFwcGVuZGluZyBhIGRpcmVjdG9yeSBwYXRoIHRvIGdzdC1vbXgnIGludGVybmFsIE9wZW5NQVggSUwgaGVhZGVycyBmaXhlcyB0aGlzCi0gICAgICAgIGQuYXBwZW5kVmFyKCJDRkxBR1MiLCAiIC1JJHtTfS9vbXgvb3Blbm1heCIpCi0gICAgZWxpZiBvbXhfdGFyZ2V0ID09ICJycGkiOgotICAgICAgICAjIERlZGljYXRlZCBSYXNwYmVycnkgUGkgT3Blbk1BWCBJTCBzdXBwb3J0IG1ha2VzIHRoaXMgcGFja2FnZSBtYWNoaW5lIHNwZWNpZmljCi0gICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFX0FSQ0giLCBkLmdldFZhcigiTUFDSElORV9BUkNIIikpCi19Ci0KLWRlbGV0ZV9wa2dfbTRfZmlsZSgpIHsKLSAgICAjIERlbGV0ZSBtNCBmaWxlcyB3aGljaCB3ZSBwcm92aWRlIHBhdGNoZWQgdmVyc2lvbnMgb2YgYnV0IHdpbGwgYmUgaWdub3JlZAotICAgICMgaWYgdGhlc2UgZXhpc3QKLQlybSAtZiAiJHtTfS9jb21tb24vbTQvcGtnLm00IgotCXJtIC1mICIke1N9L2NvbW1vbi9tNC9ndGstZG9jLm00IgotfQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZGVsZXRlX3BrZ19tNF9maWxlIgotCi1zZXRfb214X2NvcmVfbmFtZSgpIHsKLQlzZWQgLWkgLWUgInM7XmNvcmUtbmFtZT0uKjtjb3JlLW5hbWU9JHtHU1RSRUFNRVJfMV8wX09NWF9DT1JFX05BTUV9OyIgIiR7RH0ke3N5c2NvbmZkaXJ9L3hkZy9nc3RvbXguY29uZiIKLX0KLWRvX2luc3RhbGxbcG9zdGZ1bmNzXSArPSAiIHNldF9vbXhfY29yZV9uYW1lICIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyouc28iCi1GSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wLyouYSIKLQotUkRFUEVORFNfJHtQTn0gPSAibGlib214aWwiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1vbXhfMS4xNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmYxYmRiZDIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtb214XzEuMTYuMi5iYgpAQCAtMCwwICsxLDQ3IEBACitTVU1NQVJZID0gIk9wZW5NQVggSUwgcGx1Z2lucyBmb3IgR1N0cmVhbWVyIgorSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xIgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vb214L2dzdG9teC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9MjE7bWQ1PTVjOGUxZmNhMzI3MDQ0ODhlNzZkMmJhOWRkZmE5MzVmIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LW9teC9nc3Qtb214LSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gIjYzNjI3ODZkMmI2Y2NlMzRkZTA4Yzg2Yjc4NDdmNzgyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjExZWQ0MTFhMmViYTc1NjEwZDcyMzMxZWViMTRmZjA1ZTJkZjI4ZjRmZDA1Y2I2OTIyNWE4OGJlYzZkMjc0MzkiCisKK1MgPSAiJHtXT1JLRElSfS9nc3Qtb214LSR7UFZ9IgorCitERVBFTkRTID0gImdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCB2aXJ0dWFsL2xpYm9teGlsIgorCitpbmhlcml0IG1lc29uIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworR1NUUkVBTUVSXzFfMF9PTVhfVEFSR0VUID89ICJiZWxsYWdpbyIKK0dTVFJFQU1FUl8xXzBfT01YX0NPUkVfTkFNRSA/PSAiJHtsaWJkaXJ9L2xpYm9teGlsLWJlbGxhZ2lvLnNvLjAiCisKK0VYVFJBX09FTUVTT04gKz0gIi1EdGFyZ2V0PSR7R1NUUkVBTUVSXzFfMF9PTVhfVEFSR0VUfSIKKworcHl0aG9uIF9fYW5vbnltb3VzICgpIHsKKyAgICBvbXhfdGFyZ2V0ID0gZC5nZXRWYXIoIkdTVFJFQU1FUl8xXzBfT01YX1RBUkdFVCIpCisgICAgaWYgb214X3RhcmdldCBpbiBbJ2dlbmVyaWMnLCAnYmVsbGFnaW8nXToKKyAgICAgICAgIyBCZWxsYWdpbyBoZWFkZXJzIGFyZSBpbmNvbXBsZXRlICh0aGV5IGFyZSBtaXNzaW5nIHRoZSBPTVhfVkVSU0lPTl9NQUpPUiwjCisgICAgICAgICMgT01YX1ZFUlNJT05fTUlOT1IsIE9NWF9WRVJTSU9OX1JFVklTSU9OLCBhbmQgT01YX1ZFUlNJT05fU1RFUCBtYWNyb3MpOworICAgICAgICAjIGFwcGVuZGluZyBhIGRpcmVjdG9yeSBwYXRoIHRvIGdzdC1vbXgnIGludGVybmFsIE9wZW5NQVggSUwgaGVhZGVycyBmaXhlcyB0aGlzCisgICAgICAgIGQuYXBwZW5kVmFyKCJDRkxBR1MiLCAiIC1JJHtTfS9vbXgvb3Blbm1heCIpCisgICAgZWxpZiBvbXhfdGFyZ2V0ID09ICJycGkiOgorICAgICAgICAjIERlZGljYXRlZCBSYXNwYmVycnkgUGkgT3Blbk1BWCBJTCBzdXBwb3J0IG1ha2VzIHRoaXMgcGFja2FnZSBtYWNoaW5lIHNwZWNpZmljCisgICAgICAgIGQuc2V0VmFyKCJQQUNLQUdFX0FSQ0giLCBkLmdldFZhcigiTUFDSElORV9BUkNIIikpCit9CisKK3NldF9vbXhfY29yZV9uYW1lKCkgeworCXNlZCAtaSAtZSAiczteY29yZS1uYW1lPS4qO2NvcmUtbmFtZT0ke0dTVFJFQU1FUl8xXzBfT01YX0NPUkVfTkFNRX07IiAiJHtEfSR7c3lzY29uZmRpcn0veGRnL2dzdG9teC5jb25mIgorfQorZG9faW5zdGFsbFtwb3N0ZnVuY3NdICs9ICIgc2V0X29teF9jb3JlX25hbWUgIgorCitGSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5zbyIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5hIgorCitWSVJUVUFMLVJVTlRJTUVfbGlib214aWwgPz0gImxpYm9teGlsIgorUkRFUEVORFNfJHtQTn0gPSAiJHtWSVJUVUFMLVJVTlRJTUVfbGlib214aWx9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkLzAwMDEtbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMTMyMTg1MgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC8wMDAxLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSA5N2E0ZDBjZDdkZThjZmJmOTgzYWNjN2UzN2JhMmY4ZmI3M2MzZTE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP1RpbS1QaGlsaXBwPTIwTT1DMz1CQ2xsZXI/PSA8dGltQGNlbnRyaWN1bGFyLmNvbT4KK0RhdGU6IEZyaSwgMTggT2N0IDIwMTkgMDA6Mzk6MTIgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSCAxLzJdIG1lc29uOiBidWlsZCBnaXIgZXZlbiB3aGVuIGNyb3NzLWNvbXBpbGluZyBpZgorIGludHJvc3BlY3Rpb24gd2FzIGVuYWJsZWQgZXhwbGljaXRseQorCitUaGlzIGNhbiBiZSBtYWRlIHRvIHdvcmsgaW4gY2VydGFpbiBjaXJjdW1zdGFuY2VzIHdoZW4KK2Nyb3NzLWNvbXBpbGluZywgc28gZGVmYXVsdCB0byBub3QgYnVpbGRpbmcgZy1pIHN0dWZmCit3aGVuIGNyb3NzLWNvbXBpbGluZywgYnV0IGFsbG93IGl0IGlmIGludHJvc3BlY3Rpb24gd2FzCitlbmFibGVkIGV4cGxpY2l0bHkgdmlhIC1EaW50cm9zcGVjdGlvbj1lbmFibGVkLgorCitTZWUgZ3N0cmVhbWVyL2dzdHJlYW1lciM0NTQgYW5kIGdzdHJlYW1lci9nc3RyZWFtZXIjMzgxLgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFs5N2E0ZDBjZDdkZThjZmJmOTgzYWNjN2UzN2JhMmY4ZmI3M2MzZTE5XQorCitTaWduZWQtb2ZmLWJ5OiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxjcmc3NDc1QG1haWxib3gub3JnPgorLS0tCisgbWVzb24uYnVpbGQgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9tZXNvbi5idWlsZCBiL21lc29uLmJ1aWxkCitpbmRleCA2N2FlZWI0ZDAuLjdiMzMxNGJkOSAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTQxMSw3ICs0MTEsNyBAQCBweXRob24zID0gaW1wb3J0KCdweXRob24nKS5maW5kX2luc3RhbGxhdGlvbigpCisgCisgZ2lyID0gZmluZF9wcm9ncmFtKCdnLWlyLXNjYW5uZXInLCByZXF1aXJlZCA6IGdldF9vcHRpb24oJ2ludHJvc3BlY3Rpb24nKSkKKyBnbm9tZSA9IGltcG9ydCgnZ25vbWUnKQorLWJ1aWxkX2dpciA9IGdpci5mb3VuZCgpIGFuZCBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKQorK2J1aWxkX2dpciA9IGdpci5mb3VuZCgpIGFuZCAobm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgZ2V0X29wdGlvbignaW50cm9zcGVjdGlvbicpLmVuYWJsZWQoKSkKKyBnaXJfaW5pdF9zZWN0aW9uID0gWyAnLS1hZGQtaW5pdC1zZWN0aW9uPWV4dGVybiB2b2lkIGdzdF9pbml0KGdpbnQqLGdjaGFyKiopOycgKyBcCisgICAgICdnX3NldGVudigiR1NUX1JFR0lTVFJZXzEuMCIsICJAMEAiLCBUUlVFKTsnLmZvcm1hdChtZXNvbi5jdXJyZW50X2J1aWxkX2RpcigpICsgJy9naXJfZW1wdHlfcmVnaXN0cnkucmVnJykgKyBcCisgICAgICdnX3NldGVudigiR1NUX1BMVUdJTl9QQVRIXzFfMCIsICIiLCBUUlVFKTsnICsgXAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnNzaDIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlic3NoMi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjU4NjFiNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvY29uZmlndXJlLWFsbG93LXRvLWRpc2FibGUtbGlic3NoMi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYxICswLDAgQEAKLUZyb20gZjU5YzUyNjlmOTJkNTlhNTI5NmNiZmVlYjY4MmQ0MjA5NWNkODhhZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotRGF0ZTogVGh1LCAxOCBTZXAgMjAxNCAwMjoyNDowNyAtMDQwMAotU3ViamVjdDogW1BBVENIXSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQ6IGFsbG93IHRvIGRpc2FibGUgbGlic3NoMgotCi1saWJzc2gyIGlzIGF1dG9tYXRpY2FsbHkgbGlua2VkIHRvIGlmIHByZXNlbnQsIHRoaXMgdW5kZXRlcm1pbmVkCi1kZXBlbmRlbmN5IG1heSBjYXVzZSBidWlsZCBlcnJvcnMgbGlrZToKLQotICAuLi4veDg2XzY0LXBva3ktbGludXgvNC45LjAvbGQ6IGNhbm5vdCBmaW5kIC1sc3NoMgotCi1saWJzc2gyIGlzbid0IGFuIG9lLWNvcmUgcmVjaXBlLCBzbyBhbGxvdyB0byBkaXNhYmxlIGl0IGZyb20KLWNvbmZpZ3VyZS4KLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IFdlbnpvbmcgRmFuIDx3ZW56b25nLmZhbkB3aW5kcml2ZXIuY29tPgotLS0tCi0gY29uZmlndXJlLmFjIHwgICAyMyArKysrKysrKysrKysrKysrKy0tLS0tLQotIDEgZmlsZSBjaGFuZ2VkLCAxNyBpbnNlcnRpb25zKCspLCA2IGRlbGV0aW9ucygtKQotCi1JbmRleDogZ3N0LXBsdWdpbnMtYmFkLTEuMTIuMy9jb25maWd1cmUuYWMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBnc3QtcGx1Z2lucy1iYWQtMS4xMi4zLm9yaWcvY29uZmlndXJlLmFjCi0rKysgZ3N0LXBsdWdpbnMtYmFkLTEuMTIuMy9jb25maWd1cmUuYWMKLUBAIC0xMjAyLDYgKzEyMDIsMTUgQEAgQUdfR1NUX0NIRUNLX0ZFQVRVUkUoQ0hST01BUFJJTlQsIFtjaHJvbQotIF0pCi0gCi0gZG5sICoqKiBDdXJsICoqKgotK0FDX0FSR19FTkFCTEUoW2xpYnNzaDJdLAotKyAgICAgWyAgLS1lbmFibGUtbGlic3NoMgkJZW5hYmxlIExJQlNTSDIgc3VwcG9ydCBAPDpAZGVmYXVsdD1hdXRvQDo+QF0sCi0rICAgICBbY2FzZSAiJHtlbmFibGV2YWx9IiBpbgotKyAgICAgICB5ZXMpICBORUVEX1NTSDI9eWVzIDs7Ci0rICAgICAgIG5vKSAgIE5FRURfU1NIMj1ubyA7OwotKyAgICAgICBhdXRvKSBORUVEX1NTSDI9YXV0byA7OwotKyAgICAgICAqKSBBQ19NU0dfRVJST1IoW2JhZCB2YWx1ZSAke2VuYWJsZXZhbH0gZm9yIC0tZW5hYmxlLWxpYnNzaDJdKSA7OwotKyAgICAgZXNhY10sW05FRURfU1NIMj1hdXRvXSkKLSsKLSB0cmFuc2xpdChkbm0sIG0sIGwpIEFNX0NPTkRJVElPTkFMKFVTRV9DVVJMLCB0cnVlKQotIEFHX0dTVF9DSEVDS19GRUFUVVJFKENVUkwsIFtDdXJsIHBsdWdpbl0sIGN1cmwsIFsKLSAgIFBLR19DSEVDS19NT0RVTEVTKENVUkwsIGxpYmN1cmwgPj0gNy4zNS4wLCBbCi1AQCAtMTIyNCwxMiArMTIzMywxNCBAQCBBR19HU1RfQ0hFQ0tfRkVBVFVSRShDVVJMLCBbQ3VybCBwbHVnaW5dCi0gICBdKQotICAgQUNfU1VCU1QoQ1VSTF9DRkxBR1MpCi0gICBBQ19TVUJTVChDVVJMX0xJQlMpCi0tICBQS0dfQ0hFQ0tfTU9EVUxFUyhTU0gyLCBsaWJzc2gyID49IDEuNC4zLCBbCi0tICAgIEhBVkVfU1NIMj0ieWVzIgotLSAgICBBQ19ERUZJTkUoSEFWRV9TU0gyLCAxLCBbRGVmaW5lIGlmIGxpYnNzaDIgaXMgYXZhaWxhYmxlXSkKLS0gIF0sIFsKLS0gICAgSEFWRV9TU0gyPSJubyIKLS0gIF0pCi0rICBpZiB0ZXN0ICJ4JE5FRURfU1NIMiIgIT0gInhubyI7IHRoZW4KLSsgICAgUEtHX0NIRUNLX01PRFVMRVMoU1NIMiwgbGlic3NoMiA+PSAxLjQuMywgWwotKyAgICAgIEhBVkVfU1NIMj0ieWVzIgotKyAgICAgIEFDX0RFRklORShIQVZFX1NTSDIsIDEsIFtEZWZpbmUgaWYgbGlic3NoMiBpcyBhdmFpbGFibGVdKQotKyAgICBdLCBbCi0rICAgICAgSEFWRV9TU0gyPSJubyIKLSsgICAgXSkKLSsgIGZpCi0gICBBTV9DT05ESVRJT05BTChVU0VfU1NIMiwgdGVzdCAieCRIQVZFX1NTSDIiID0gInh5ZXMiKQotICAgQUNfU1VCU1QoU1NIMl9DRkxBR1MpCi0gICBBQ19TVUJTVChTU0gyX0xJQlMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvb3BlbmN2LXJlc29sdmUtbWlzc2luZy1vcGVuY3YtZGF0YS1kaXItaW4teW9jdG8tYnVpbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZC9vcGVuY3YtcmVzb2x2ZS1taXNzaW5nLW9wZW5jdi1kYXRhLWRpci1pbi15b2N0by1idWlsLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRiNjU5MWMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQvb3BlbmN2LXJlc29sdmUtbWlzc2luZy1vcGVuY3YtZGF0YS1kaXItaW4teW9jdG8tYnVpbC5wYXRjaApAQCAtMCwwICsxLDQ5IEBACitGcm9tIGY0MWNhYWUxNGI2MThhYjgxNWVkZTNjNDA4ZTc0ODJiMDAzMTZlM2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbmRyZXkgWmhpemhpa2luIDxhbmRyZXkuekBnbWFpbC5jb20+CitEYXRlOiBNb24sIDI3IEphbiAyMDIwIDEwOjIyOjM1ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIG9wZW5jdjogcmVzb2x2ZSBtaXNzaW5nIG9wZW5jdiBkYXRhIGRpciBpbiB5b2N0byBidWlsZAorCitXaGVuIFlvY3RvIGJ1aWxkIGlzIHBlcmZvcm1lZCwgb3BlbmN2IHNlYXJjaGVzIGZvciBkYXRhIGRpciB1c2luZyBzaW1wbGUKKyd0ZXN0JyBjb21tYW5kLCB0aGlzIGZhaWxzIGJlY2F1c2UgcGtnLWNvbmZpZyBwcm92aWRlcyBhbiBhYnNvbHV0ZQorcGF0aCBvbiB0aGUgdGFyZ2V0IHdoaWNoIG5lZWRzIHRvIGJlIHByZXBlbmRlZCBieSBQS0dfQ09ORklHX1NZU1JPT1RfRElSCitpbiBvcmRlciBmb3IgdGhlICd0ZXN0JyB1dGlsaXR5IHRvIHBpY2sgdXAgdGhlIGFic29sdXRlIHBhdGguCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbT0Utc3BlY2lmaWNdCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJleSBaaGl6aGlraW4gPGFuZHJleS56QGdtYWlsLmNvbT4KKy0tLQorIGV4dC9vcGVuY3YvbWVzb24uYnVpbGQgfCA3ICsrKystLS0KKyAxIGZpbGUgY2hhbmdlZCwgNCBpbnNlcnRpb25zKCspLCAzIGRlbGV0aW9ucygtKQorCitkaWZmIC0tZ2l0IGEvZXh0L29wZW5jdi9tZXNvbi5idWlsZCBiL2V4dC9vcGVuY3YvbWVzb24uYnVpbGQKK2luZGV4IGYzOGI1NWRmZS4uYTI2NDAzNDgyIDEwMDY0NAorLS0tIGEvZXh0L29wZW5jdi9tZXNvbi5idWlsZAorKysrIGIvZXh0L29wZW5jdi9tZXNvbi5idWlsZAorQEAgLTc4LDIwICs3OCwyMSBAQCBlbHNlCisgZW5kaWYKKyAKKyBpZiBvcGVuY3ZfZm91bmQKKysgIHBrZ2NvbmZfc3lzcm9vdCA9IHJ1bl9jb21tYW5kKHB5dGhvbjMsICctYycsICdpbXBvcnQgb3M7IHByaW50KG9zLmVudmlyb24uZ2V0KCJQS0dfQ09ORklHX1NZU1JPT1RfRElSIikpJykuc3Rkb3V0KCkuc3RyaXAoKQorICAgb3BlbmN2X3ByZWZpeCA9IG9wZW5jdl9kZXAuZ2V0X3BrZ2NvbmZpZ192YXJpYWJsZSgncHJlZml4JykKKyAgIGdzdG9wZW5jdl9jYXJncyArPSBbJy1ET1BFTkNWX1BSRUZJWD0iJyArIG9wZW5jdl9wcmVmaXggKyAnIiddCisgCisgICAjIENoZWNrIHRoZSBkYXRhIGRpciB1c2VkIGJ5IG9wZW5jdiBmb3IgaXRzIHhtbCBkYXRhIGZpbGVzCisgICAjIFVzZSBwcmVmaXggZnJvbSBwa2ctY29uZmlnIHRvIGJlIGNvbXBhdGlibGUgd2l0aCBjcm9zcy1jb21waWxhdGlvbgorLSAgciA9IHJ1bl9jb21tYW5kKCd0ZXN0JywgJy1kJywgb3BlbmN2X3ByZWZpeCArICcvc2hhcmUvb3BlbmN2JykKKysgIHIgPSBydW5fY29tbWFuZCgndGVzdCcsICctZCcsIHBrZ2NvbmZfc3lzcm9vdCArIG9wZW5jdl9wcmVmaXggKyAnL3NoYXJlL29wZW5jdicpCisgICBpZiByLnJldHVybmNvZGUoKSA9PSAwCisgICAgIGdzdG9wZW5jdl9jYXJncyArPSAnLURPUEVOQ1ZfUEFUSF9OQU1FPSJvcGVuY3YiJworICAgZWxzZQorLSAgICByID0gcnVuX2NvbW1hbmQoJ3Rlc3QnLCAnLWQnLCBvcGVuY3ZfcHJlZml4ICsgJy9zaGFyZS9PcGVuQ1YnKQorKyAgICByID0gcnVuX2NvbW1hbmQoJ3Rlc3QnLCAnLWQnLCBwa2djb25mX3N5c3Jvb3QgKyBvcGVuY3ZfcHJlZml4ICsgJy9zaGFyZS9PcGVuQ1YnKQorICAgICBpZiByLnJldHVybmNvZGUoKSA9PSAwCisgICAgICAgZ3N0b3BlbmN2X2NhcmdzICs9ICctRE9QRU5DVl9QQVRIX05BTUU9Ik9wZW5DViInCisgICAgIGVsc2UKKy0gICAgICByID0gcnVuX2NvbW1hbmQoJ3Rlc3QnLCAnLWQnLCBvcGVuY3ZfcHJlZml4ICsgJy9zaGFyZS9vcGVuY3Y0JykKKysgICAgICByID0gcnVuX2NvbW1hbmQoJ3Rlc3QnLCAnLWQnLCBwa2djb25mX3N5c3Jvb3QgKyBvcGVuY3ZfcHJlZml4ICsgJy9zaGFyZS9vcGVuY3Y0JykKKyAgICAgICBpZiByLnJldHVybmNvZGUoKSA9PSAwCisgICAgICAgICBnc3RvcGVuY3ZfY2FyZ3MgKz0gJy1ET1BFTkNWX1BBVEhfTkFNRT0ib3BlbmN2NCInCisgICAgICAgZWxzZQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuMTYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjE2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE3MzFiZTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuMTYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE0NSArMCwwIEBACi1yZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLmluYwotCi1TUkNfVVJJID0gIiBcCi0gICAgaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYWQvZ3N0LXBsdWdpbnMtYmFkLSR7UFZ9LnRhci54eiBcCi0gICAgZmlsZTovL2NvbmZpZ3VyZS1hbGxvdy10by1kaXNhYmxlLWxpYnNzaDIucGF0Y2ggXAotICAgIGZpbGU6Ly9maXgtbWF5YmUtdW5pbml0aWFsaXplZC13YXJuaW5ncy13aGVuLWNvbXBpbGluZy13aXRoLU9zLnBhdGNoIFwKLSAgICBmaWxlOi8vYXZvaWQtaW5jbHVkaW5nLXN5cy1wb2xsLmgtZGlyZWN0bHkucGF0Y2ggXAotICAgIGZpbGU6Ly9lbnN1cmUtdmFsaWQtc2VudGluZWxzLWZvci1nc3Rfc3RydWN0dXJlX2dldC1ldGMucGF0Y2ggXAotICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotIgotU1JDX1VSSVttZDVzdW1dID0gIjI0ZDRkMzBlY2M2N2Q1Y2JjNzdjMDQ3NWJjZWExMjEwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU2NDgxYzk1MzM5Yjg5ODVhZjEzYmFjMTliMThiYzhkYTcxMThjMmE3ZDk0NDBlZDcwZTdkY2Q3OTljMmFkYjUiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYWQtJHtQVn0iCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTczYTU4NTVhODExOWRlYjAxN2Y1ZjEzY2YzMjcwOTVkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yMTY4MmU0ZThmZWE1MjQxM2ZkMjZjNjBhY2I5MDdlNSAiCi0KLURFUEVORFMgKz0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCi0KLWluaGVyaXQgZ2V0dGV4dCBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgJHtHU1RSRUFNRVJfT1JDfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdibHVldG9vdGgnLCAnYmx1ZXonLCAnJywgZCl9IFwKLSAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdkaXJlY3RmYiB2dWxrYW4nLCBkKX0gXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kJywgJycsIGQpfSBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnZ2wnLCAnJywgZCl9IFwKLSAgICBiejIgY3VybCBkYXNoIGR0bHMgaGxzIHJzdmcgc2JjIHNtb290aHN0cmVhbWluZyBzbmRmaWxlIHR0bWwgdXZjaDI2NCB3ZWJwIFwKLSIKLQotIyB0aGUgZ2wgcGFja2FnZWNvbmZpZyBlbmFibGVzIE9wZW5HTCBlbGVtZW50cyB0aGF0IGhhdmVuJ3QgYmVlbiBwb3J0ZWQKLSMgdG8gLWJhc2UgeWV0LiBUaGV5IGRlcGVuZCBvbiB0aGUgZ3N0Z2wgbGlicmFyeSBpbiAtYmFzZSwgc28gd2UgZG8KLSMgbm90IGFkZCBHTCBkZXBlbmRlbmNpZXMgaGVyZSwgc2luY2UgdGhlc2UgYXJlIHRha2VuIGNhcmUgb2YgaW4gLWJhc2UuCi0KLVBBQ0tBR0VDT05GSUdbYXNzcmVuZGVyXSAgICAgICA9ICItLWVuYWJsZS1hc3NyZW5kZXIsLS1kaXNhYmxlLWFzc3JlbmRlcixsaWJhc3MiCi1QQUNLQUdFQ09ORklHW2JsdWV6XSAgICAgICAgICAgPSAiLS1lbmFibGUtYmx1ZXosLS1kaXNhYmxlLWJsdWV6LGJsdWV6NSIKLVBBQ0tBR0VDT05GSUdbYnoyXSAgICAgICAgICAgICA9ICItLWVuYWJsZS1iejIsLS1kaXNhYmxlLWJ6MixiemlwMiIKLVBBQ0tBR0VDT05GSUdbY3VybF0gICAgICAgICAgICA9ICItLWVuYWJsZS1jdXJsLC0tZGlzYWJsZS1jdXJsLGN1cmwiCi1QQUNLQUdFQ09ORklHW2Rhc2hdICAgICAgICAgICAgPSAiLS1lbmFibGUtZGFzaCwtLWRpc2FibGUtZGFzaCxsaWJ4bWwyIgotUEFDS0FHRUNPTkZJR1tkYzEzOTRdICAgICAgICAgID0gIi0tZW5hYmxlLWRjMTM5NCwtLWRpc2FibGUtZGMxMzk0LGxpYmRjMTM5NCIKLVBBQ0tBR0VDT05GSUdbZGlyZWN0ZmJdICAgICAgICA9ICItLWVuYWJsZS1kaXJlY3RmYiwtLWRpc2FibGUtZGlyZWN0ZmIsZGlyZWN0ZmIiCi1QQUNLQUdFQ09ORklHW2R0bHNdICAgICAgICAgICAgPSAiLS1lbmFibGUtZHRscywtLWRpc2FibGUtZHRscyxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tmYWFjXSAgICAgICAgICAgID0gIi0tZW5hYmxlLWZhYWMsLS1kaXNhYmxlLWZhYWMsZmFhYyIKLVBBQ0tBR0VDT05GSUdbZmFhZF0gICAgICAgICAgICA9ICItLWVuYWJsZS1mYWFkLC0tZGlzYWJsZS1mYWFkLGZhYWQyIgotUEFDS0FHRUNPTkZJR1tmbGl0ZV0gICAgICAgICAgID0gIi0tZW5hYmxlLWZsaXRlLC0tZGlzYWJsZS1mbGl0ZSxmbGl0ZS1hbHNhIgotUEFDS0FHRUNPTkZJR1tmbHVpZHN5bnRoXSAgICAgID0gIi0tZW5hYmxlLWZsdWlkc3ludGgsLS1kaXNhYmxlLWZsdWlkc3ludGgsZmx1aWRzeW50aCIKLVBBQ0tBR0VDT05GSUdbaGxzXSAgICAgICAgICAgICA9ICItLWVuYWJsZS1obHMgLS13aXRoLWhscy1jcnlwdG89bmV0dGxlLC0tZGlzYWJsZS1obHMsbmV0dGxlIgotUEFDS0FHRUNPTkZJR1tnbF0gICAgICAgICAgICAgID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCwiCi1QQUNLQUdFQ09ORklHW2ttc10gICAgICAgICAgICAgPSAiLS1lbmFibGUta21zLC0tZGlzYWJsZS1rbXMsbGliZHJtIgotUEFDS0FHRUNPTkZJR1tsaWJkZTI2NV0gICAgICAgID0gIi0tZW5hYmxlLWxpYmRlMjY1LC0tZGlzYWJsZS1saWJkZTI2NSxsaWJkZTI2NSIKLVBBQ0tBR0VDT05GSUdbbGlibW1zXSAgICAgICAgICA9ICItLWVuYWJsZS1saWJtbXMsLS1kaXNhYmxlLWxpYm1tcyxsaWJtbXMiCi1QQUNLQUdFQ09ORklHW2xpYnNzaDJdICAgICAgICAgPSAiLS1lbmFibGUtbGlic3NoMiwtLWRpc2FibGUtbGlic3NoMixsaWJzc2gyIgotUEFDS0FHRUNPTkZJR1tsY21zMl0gICAgICAgICAgID0gIi0tZW5hYmxlLWxjbXMyLC0tZGlzYWJsZS1sY21zMixsY21zIgotUEFDS0FHRUNPTkZJR1ttb2RwbHVnXSAgICAgICAgID0gIi0tZW5hYmxlLW1vZHBsdWcsLS1kaXNhYmxlLW1vZHBsdWcsbGlibW9kcGx1ZyIKLVBBQ0tBR0VDT05GSUdbbXNka10gICAgICAgICAgICA9ICItLWVuYWJsZS1tc2RrLC0tZGlzYWJsZS1tc2RrLGludGVsLW1lZGlhc2RrIgotUEFDS0FHRUNPTkZJR1tuZW9uXSAgICAgICAgICAgID0gIi0tZW5hYmxlLW5lb24sLS1kaXNhYmxlLW5lb24sbmVvbiIKLVBBQ0tBR0VDT05GSUdbb3BlbmFsXSAgICAgICAgICA9ICItLWVuYWJsZS1vcGVuYWwsLS1kaXNhYmxlLW9wZW5hbCxvcGVuYWwtc29mdCIKLVBBQ0tBR0VDT05GSUdbb3BlbmN2XSAgICAgICAgICA9ICItLWVuYWJsZS1vcGVuY3YsLS1kaXNhYmxlLW9wZW5jdixvcGVuY3YiCi1QQUNLQUdFQ09ORklHW29wZW5oMjY0XSAgICAgICAgPSAiLS1lbmFibGUtb3BlbmgyNjQsLS1kaXNhYmxlLW9wZW5oMjY0LG9wZW5oMjY0IgotUEFDS0FHRUNPTkZJR1tvcGVuanBlZ10gICAgICAgID0gIi0tZW5hYmxlLW9wZW5qcGVnLC0tZGlzYWJsZS1vcGVuanBlZyxvcGVuanBlZyIKLVBBQ0tBR0VDT05GSUdbb3Blbm1wdF0gICAgICAgICA9ICItLWVuYWJsZS1vcGVubXB0LC0tZGlzYWJsZS1vcGVubXB0LGxpYm9wZW5tcHQiCi0jIHRoZSBvcHVzIGVuY29kZXIvZGVjb2RlciBlbGVtZW50cyBhcmUgbm93IGluIHRoZSAtYmFzZSBwYWNrYWdlLAotIyBidXQgdGhlIG9wdXMgcGFyc2VyIHJlbWFpbnMgaW4gLWJhZAotUEFDS0FHRUNPTkZJR1tvcHVzcGFyc2VdICAgICAgID0gIi0tZW5hYmxlLW9wdXMsLS1kaXNhYmxlLW9wdXMsbGlib3B1cyIKLVBBQ0tBR0VDT05GSUdbcmVzaW5kdmRdICAgICAgICA9ICItLWVuYWJsZS1yZXNpbmR2ZCwtLWRpc2FibGUtcmVzaW5kdmQsbGliZHZkcmVhZCBsaWJkdmRuYXYiCi1QQUNLQUdFQ09ORklHW3JzdmddICAgICAgICAgICAgPSAiLS1lbmFibGUtcnN2ZywtLWRpc2FibGUtcnN2ZyxsaWJyc3ZnIgotUEFDS0FHRUNPTkZJR1tydG1wXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXJ0bXAsLS1kaXNhYmxlLXJ0bXAscnRtcGR1bXAiCi1QQUNLQUdFQ09ORklHW3NiY10gICAgICAgICAgICAgPSAiLS1lbmFibGUtc2JjLC0tZGlzYWJsZS1zYmMsc2JjIgotUEFDS0FHRUNPTkZJR1tzY3RwXSAgICAgICAgICAgID0gIi0tZW5hYmxlLXNjdHAsLS1kaXNhYmxlLXNjdHAsdXNyc2N0cCIKLVBBQ0tBR0VDT05GSUdbc21vb3Roc3RyZWFtaW5nXSA9ICItLWVuYWJsZS1zbW9vdGhzdHJlYW1pbmcsLS1kaXNhYmxlLXNtb290aHN0cmVhbWluZyxsaWJ4bWwyIgotUEFDS0FHRUNPTkZJR1tzbmRmaWxlXSAgICAgICAgID0gIi0tZW5hYmxlLXNuZGZpbGUsLS1kaXNhYmxlLXNuZGZpbGUsbGlic25kZmlsZTEiCi1QQUNLQUdFQ09ORklHW3NydHBdICAgICAgICAgICAgPSAiLS1lbmFibGUtc3J0cCwtLWRpc2FibGUtc3J0cCxsaWJzcnRwIgotUEFDS0FHRUNPTkZJR1t0aW55YWxzYV0gICAgICAgID0gIi0tZW5hYmxlLXRpbnlhbHNhLC0tZGlzYWJsZS10aW55YWxzYSx0aW55YWxzYSIKLVBBQ0tBR0VDT05GSUdbdHRtbF0gICAgICAgICAgICA9ICItLWVuYWJsZS10dG1sLC0tZGlzYWJsZS10dG1sLGxpYnhtbDIgcGFuZ28gY2Fpcm8iCi1QQUNLQUdFQ09ORklHW3V2Y2gyNjRdICAgICAgICAgPSAiLS1lbmFibGUtdXZjaDI2NCwtLWRpc2FibGUtdXZjaDI2NCxsaWJ1c2IxIGxpYmd1ZGV2IgotUEFDS0FHRUNPTkZJR1t2b2FhY2VuY10gICAgICAgID0gIi0tZW5hYmxlLXZvYWFjZW5jLC0tZGlzYWJsZS12b2FhY2VuYyx2by1hYWNlbmMiCi1QQUNLQUdFQ09ORklHW3ZvYW1yd2JlbmNdICAgICAgPSAiLS1lbmFibGUtdm9hbXJ3YmVuYywtLWRpc2FibGUtdm9hbXJ3YmVuYyx2by1hbXJ3YmVuYyIKLVBBQ0tBR0VDT05GSUdbdnVsa2FuXSAgICAgICAgICA9ICItLWVuYWJsZS12dWxrYW4sLS1kaXNhYmxlLXZ1bGthbix2dWxrYW4tbG9hZGVyIgotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSAgICAgICAgID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyBsaWJkcm0iCi1QQUNLQUdFQ09ORklHW3dlYnBdICAgICAgICAgICAgPSAiLS1lbmFibGUtd2VicCwtLWRpc2FibGUtd2VicCxsaWJ3ZWJwIgotUEFDS0FHRUNPTkZJR1t3ZWJydGNdICAgICAgICAgID0gIi0tZW5hYmxlLXdlYnJ0YywtLWRpc2FibGUtd2VicnRjLGxpYm5pY2UiCi1QQUNLQUdFQ09ORklHW3dlYnJ0Y2RzcF0gICAgICAgPSAiLS1lbmFibGUtd2VicnRjZHNwLC0tZGlzYWJsZS13ZWJydGNkc3Asd2VicnRjLWF1ZGlvLXByb2Nlc3NpbmciCi0KLSMgdGhlc2UgcGx1Z2lucyBoYXZlIG5vIGNvcnJlc3BvbmRpbmcgbGlicmFyeSBpbiBPRS1jb3JlIG9yIG1ldGEtb3BlbmVtYmVkZGVkOgotIyAgIG9wZW5uaTIgd2lua3MgZGlyZWN0M2QgZGlyZWN0c291bmQgd2luc2NyZWVuY2FwIGFwcGxlX21lZGlhIGlxYQotIyAgIGFuZHJvaWRfbWVkaWEgYXZjIGJzMmIgY2hyb21hcHJpbnQgZHRzIGZka2FhYyBnbWUgZ3NtIGthdGUgbGFkc3BhCi0jICAgbHYyIG1wZWcyZW5jIG1wbGV4IG11c2VwYWNrIG52ZW5jIG9mYSBvcGVuc2xlcyBzb3VuZHRvdWNoCi0jICAgc3BhbmRzcCB0ZWxldGV4dGRlYyB2ZHBhdSB3YXNhcGkgd3BlIHgyNjUgemJhcgotCi1FWFRSQV9PRUNPTkYgKz0gIiBcCi0gICAgLS1lbmFibGUtZGVja2xpbmsgXAotICAgIC0tZW5hYmxlLWR2YiBcCi0gICAgLS1lbmFibGUtZmJkZXYgXAotICAgIC0tZW5hYmxlLWlwY3BpcGVsaW5lIFwKLSAgICAtLWVuYWJsZS1uZXRzaW0gXAotICAgIC0tZW5hYmxlLXNobSBcCi0gICAgLS1kaXNhYmxlLWFuZHJvaWRfbWVkaWEgXAotICAgIC0tZGlzYWJsZS1hb20gXAotICAgIC0tZGlzYWJsZS1hcHBsZV9tZWRpYSBcCi0gICAgLS1kaXNhYmxlLWF2YyBcCi0gICAgLS1kaXNhYmxlLWJzMmIgXAotICAgIC0tZGlzYWJsZS1jaHJvbWFwcmludCBcCi0gICAgLS1kaXNhYmxlLWRpcmVjdDNkIFwKLSAgICAtLWRpc2FibGUtZGlyZWN0c291bmQgXAotICAgIC0tZGlzYWJsZS1kdHMgXAotICAgIC0tZGlzYWJsZS1mZGtfYWFjIFwKLSAgICAtLWRpc2FibGUtZ21lIFwKLSAgICAtLWRpc2FibGUtZ3NtIFwKLSAgICAtLWRpc2FibGUtaXFhIFwKLSAgICAtLWRpc2FibGUta2F0ZSBcCi0gICAgLS1kaXNhYmxlLWxhZHNwYSBcCi0gICAgLS1kaXNhYmxlLWx2MiBcCi0gICAgLS1kaXNhYmxlLW1wZWcyZW5jIFwKLSAgICAtLWRpc2FibGUtbXBsZXggXAotICAgIC0tZGlzYWJsZS1tdXNlcGFjayBcCi0gICAgLS1kaXNhYmxlLW52ZW5jIFwKLSAgICAtLWRpc2FibGUtb2ZhIFwKLSAgICAtLWRpc2FibGUtb3BlbmV4ciBcCi0gICAgLS1kaXNhYmxlLW9wZW5uaTIgXAotICAgIC0tZGlzYWJsZS1vcGVuc2xlcyBcCi0gICAgLS1kaXNhYmxlLXNvdW5kdG91Y2ggXAotICAgIC0tZGlzYWJsZS1zcGFuZHNwIFwKLSAgICAtLWRpc2FibGUtc3J0IFwKLSAgICAtLWRpc2FibGUtdGVsZXRleHRkZWMgXAotICAgIC0tZGlzYWJsZS12ZHBhdSBcCi0gICAgLS1kaXNhYmxlLXdhc2FwaSBcCi0gICAgLS1kaXNhYmxlLXdpbGRtaWRpIFwKLSAgICAtLWRpc2FibGUtd2lua3MgXAotICAgIC0tZGlzYWJsZS13aW5zY3JlZW5jYXAgXAotICAgIC0tZGlzYWJsZS13cGUgXAotICAgIC0tZGlzYWJsZS14MjY1IFwKLSAgICAtLWRpc2FibGUtemJhciBcCi0gICAgJHtAYmIudXRpbHMuY29udGFpbnMoIlRVTkVfRkVBVFVSRVMiLCAibXgzMiIsICItLWRpc2FibGUteWFkaWYiLCAiIiwgZCl9IFwKLSIKLQotZXhwb3J0IE9QRU5DVl9QUkVGSVggPSAiJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtwcmVmaXh9IgotCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotCi1GSUxFU18ke1BOfS1mcmVldmVyYiArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItJHtMSUJWfS9wcmVzZXRzL0dzdEZyZWV2ZXJiLnBycyIKLUZJTEVTXyR7UE59LW9wZW5jdiArPSAiJHtkYXRhZGlyfS9nc3QtcGx1Z2lucy1iYWQvJHtMSUJWfS9vcGVuY3YqIgotRklMRVNfJHtQTn0tdm9hbXJ3YmVuYyArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItJHtMSUJWfS9wcmVzZXRzL0dzdFZvQW1yd2JFbmMucHJzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFkXzEuMTYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjE2LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uN2EyMjdmZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZF8xLjE2LjIuYmIKQEAgLTAsMCArMSwxNDcgQEAKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtY29tbW9uLmluYworCitTUkNfVVJJID0gIiBcCisgICAgaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYWQvZ3N0LXBsdWdpbnMtYmFkLSR7UFZ9LnRhci54eiBcCisgICAgZmlsZTovLzAwMDEtbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaCBcCisgICAgZmlsZTovL2ZpeC1tYXliZS11bmluaXRpYWxpemVkLXdhcm5pbmdzLXdoZW4tY29tcGlsaW5nLXdpdGgtT3MucGF0Y2ggXAorICAgIGZpbGU6Ly9hdm9pZC1pbmNsdWRpbmctc3lzLXBvbGwuaC1kaXJlY3RseS5wYXRjaCBcCisgICAgZmlsZTovL2Vuc3VyZS12YWxpZC1zZW50aW5lbHMtZm9yLWdzdF9zdHJ1Y3R1cmVfZ2V0LWV0Yy5wYXRjaCBcCisgICAgZmlsZTovL29wZW5jdi1yZXNvbHZlLW1pc3Npbmctb3BlbmN2LWRhdGEtZGlyLWluLXlvY3RvLWJ1aWwucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gImNjYzc0MDQyMzBhZmRkZWM3MjNiYmRiNjNjODlmZWVjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImYxY2I3YWEyMzg5NTY5YTUzNDM2NjFhYWU0NzNmMGE5NDBhOTBiODcyMDAxODI0YmM0N2ZhODA3MmEwNDFlNzQiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1iYWQtJHtQVn0iCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyAmIExHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTczYTU4NTVhODExOWRlYjAxN2Y1ZjEzY2YzMjcwOTVkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTElCO21kNT0yMTY4MmU0ZThmZWE1MjQxM2ZkMjZjNjBhY2I5MDdlNSAiCisKK0RFUEVORFMgKz0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCisKK2luaGVyaXQgZ29iamVjdC1pbnRyb3NwZWN0aW9uCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7R1NUUkVBTUVSX09SQ30gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnYmx1ZXRvb3RoJywgJ2JsdWV6JywgJycsIGQpfSBcCisgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnZGlyZWN0ZmIgdnVsa2FuJywgZCl9IFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCcsICcnLCBkKX0gXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnb3BlbmdsJywgJ2dsJywgJycsIGQpfSBcCisgICAgYnoyIGNsb3NlZGNhcHRpb24gY3VybCBkYXNoIGR0bHMgaGxzIHJzdmcgc2JjIHNtb290aHN0cmVhbWluZyBzbmRmaWxlIFwKKyAgICB0dG1sIHV2Y2gyNjQgd2VicCBcCisiCisKK1BBQ0tBR0VDT05GSUdbYXNzcmVuZGVyXSAgICAgICA9ICItRGFzc3JlbmRlcj1lbmFibGVkLC1EYXNzcmVuZGVyPWRpc2FibGVkLGxpYmFzcyIKK1BBQ0tBR0VDT05GSUdbYmx1ZXpdICAgICAgICAgICA9ICItRGJsdWV6PWVuYWJsZWQsLURibHVlej1kaXNhYmxlZCxibHVlejUiCitQQUNLQUdFQ09ORklHW2J6Ml0gICAgICAgICAgICAgPSAiLURiejI9ZW5hYmxlZCwtRGJ6Mj1kaXNhYmxlZCxiemlwMiIKK1BBQ0tBR0VDT05GSUdbY2xvc2VkY2FwdGlvbl0gICA9ICItRGNsb3NlZGNhcHRpb249ZW5hYmxlZCwtRGNsb3NlZGNhcHRpb249ZGlzYWJsZWQscGFuZ28gY2Fpcm8iCitQQUNLQUdFQ09ORklHW2N1cmxdICAgICAgICAgICAgPSAiLURjdXJsPWVuYWJsZWQsLURjdXJsPWRpc2FibGVkLGN1cmwiCitQQUNLQUdFQ09ORklHW2Rhc2hdICAgICAgICAgICAgPSAiLURkYXNoPWVuYWJsZWQsLURkYXNoPWRpc2FibGVkLGxpYnhtbDIiCitQQUNLQUdFQ09ORklHW2RjMTM5NF0gICAgICAgICAgPSAiLURkYzEzOTQ9ZW5hYmxlZCwtRGRjMTM5ND1kaXNhYmxlZCxsaWJkYzEzOTQiCitQQUNLQUdFQ09ORklHW2RpcmVjdGZiXSAgICAgICAgPSAiLURkaXJlY3RmYj1lbmFibGVkLC1EZGlyZWN0ZmI9ZGlzYWJsZWQsZGlyZWN0ZmIiCitQQUNLQUdFQ09ORklHW2R0bHNdICAgICAgICAgICAgPSAiLURkdGxzPWVuYWJsZWQsLURkdGxzPWRpc2FibGVkLG9wZW5zc2wiCitQQUNLQUdFQ09ORklHW2ZhYWNdICAgICAgICAgICAgPSAiLURmYWFjPWVuYWJsZWQsLURmYWFjPWRpc2FibGVkLGZhYWMiCitQQUNLQUdFQ09ORklHW2ZhYWRdICAgICAgICAgICAgPSAiLURmYWFkPWVuYWJsZWQsLURmYWFkPWRpc2FibGVkLGZhYWQyIgorUEFDS0FHRUNPTkZJR1tmbHVpZHN5bnRoXSAgICAgID0gIi1EZmx1aWRzeW50aD1lbmFibGVkLC1EZmx1aWRzeW50aD1kaXNhYmxlZCxmbHVpZHN5bnRoIgorUEFDS0FHRUNPTkZJR1tobHNdICAgICAgICAgICAgID0gIi1EaGxzPWVuYWJsZWQgLURobHMtY3J5cHRvPW5ldHRsZSwtRGhscz1kaXNhYmxlZCxuZXR0bGUiCisjIHRoZSBnbCBwYWNrYWdlY29uZmlnIGVuYWJsZXMgT3BlbkdMIGVsZW1lbnRzIHRoYXQgaGF2ZW4ndCBiZWVuIHBvcnRlZAorIyB0byAtYmFzZSB5ZXQuIFRoZXkgZGVwZW5kIG9uIHRoZSBnc3RnbCBsaWJyYXJ5IGluIC1iYXNlLCBzbyB3ZSBkbworIyBub3QgYWRkIEdMIGRlcGVuZGVuY2llcyBoZXJlLCBzaW5jZSB0aGVzZSBhcmUgdGFrZW4gY2FyZSBvZiBpbiAtYmFzZS4KK1BBQ0tBR0VDT05GSUdbZ2xdICAgICAgICAgICAgICA9ICItRGdsPWVuYWJsZWQsLURnbD1kaXNhYmxlZCwiCitQQUNLQUdFQ09ORklHW2ttc10gICAgICAgICAgICAgPSAiLURrbXM9ZW5hYmxlZCwtRGttcz1kaXNhYmxlZCxsaWJkcm0iCitQQUNLQUdFQ09ORklHW2xpYmRlMjY1XSAgICAgICAgPSAiLURsaWJkZTI2NT1lbmFibGVkLC1EbGliZGUyNjU9ZGlzYWJsZWQsbGliZGUyNjUiCitQQUNLQUdFQ09ORklHW2xpYm1tc10gICAgICAgICAgPSAiLURsaWJtbXM9ZW5hYmxlZCwtRGxpYm1tcz1kaXNhYmxlZCxsaWJtbXMiCitQQUNLQUdFQ09ORklHW2xpYnNzaDJdICAgICAgICAgPSAiLURjdXJsLXNzaDI9ZW5hYmxlZCwtRGN1cmwtc3NoMj1kaXNhYmxlZCxsaWJzc2gyIgorUEFDS0FHRUNPTkZJR1tsY21zMl0gICAgICAgICAgID0gIi1EY29sb3JtYW5hZ2VtZW50PWVuYWJsZWQsLURjb2xvcm1hbmFnZW1lbnQ9ZGlzYWJsZWQsbGNtcyIKK1BBQ0tBR0VDT05GSUdbbW9kcGx1Z10gICAgICAgICA9ICItRG1vZHBsdWc9ZW5hYmxlZCwtRG1vZHBsdWc9ZGlzYWJsZWQsbGlibW9kcGx1ZyIKK1BBQ0tBR0VDT05GSUdbbXNka10gICAgICAgICAgICA9ICItRG1zZGs9ZW5hYmxlZCwtRG1zZGs9ZGlzYWJsZWQsaW50ZWwtbWVkaWFzZGsiCitQQUNLQUdFQ09ORklHW25lb25dICAgICAgICAgICAgPSAiLURuZW9uPWVuYWJsZWQsLURuZW9uPWRpc2FibGVkLG5lb24iCitQQUNLQUdFQ09ORklHW29wZW5hbF0gICAgICAgICAgPSAiLURvcGVuYWw9ZW5hYmxlZCwtRG9wZW5hbD1kaXNhYmxlZCxvcGVuYWwtc29mdCIKK1BBQ0tBR0VDT05GSUdbb3BlbmN2XSAgICAgICAgICA9ICItRG9wZW5jdj1lbmFibGVkLC1Eb3BlbmN2PWRpc2FibGVkLG9wZW5jdiIKK1BBQ0tBR0VDT05GSUdbb3BlbmgyNjRdICAgICAgICA9ICItRG9wZW5oMjY0PWVuYWJsZWQsLURvcGVuaDI2ND1kaXNhYmxlZCxvcGVuaDI2NCIKK1BBQ0tBR0VDT05GSUdbb3BlbmpwZWddICAgICAgICA9ICItRG9wZW5qcGVnPWVuYWJsZWQsLURvcGVuanBlZz1kaXNhYmxlZCxvcGVuanBlZyIKK1BBQ0tBR0VDT05GSUdbb3Blbm1wdF0gICAgICAgICA9ICItRG9wZW5tcHQ9ZW5hYmxlZCwtRG9wZW5tcHQ9ZGlzYWJsZWQsbGlib3Blbm1wdCIKKyMgdGhlIG9wdXMgZW5jb2Rlci9kZWNvZGVyIGVsZW1lbnRzIGFyZSBub3cgaW4gdGhlIC1iYXNlIHBhY2thZ2UsCisjIGJ1dCB0aGUgb3B1cyBwYXJzZXIgcmVtYWlucyBpbiAtYmFkCitQQUNLQUdFQ09ORklHW29wdXNwYXJzZV0gICAgICAgPSAiLURvcHVzPWVuYWJsZWQsLURvcHVzPWRpc2FibGVkLGxpYm9wdXMiCitQQUNLQUdFQ09ORklHW3Jlc2luZHZkXSAgICAgICAgPSAiLURyZXNpbmR2ZD1lbmFibGVkLC1EcmVzaW5kdmQ9ZGlzYWJsZWQsbGliZHZkcmVhZCBsaWJkdmRuYXYiCitQQUNLQUdFQ09ORklHW3JzdmddICAgICAgICAgICAgPSAiLURyc3ZnPWVuYWJsZWQsLURyc3ZnPWRpc2FibGVkLGxpYnJzdmciCitQQUNLQUdFQ09ORklHW3J0bXBdICAgICAgICAgICAgPSAiLURydG1wPWVuYWJsZWQsLURydG1wPWRpc2FibGVkLHJ0bXBkdW1wIgorUEFDS0FHRUNPTkZJR1tzYmNdICAgICAgICAgICAgID0gIi1Ec2JjPWVuYWJsZWQsLURzYmM9ZGlzYWJsZWQsc2JjIgorUEFDS0FHRUNPTkZJR1tzY3RwXSAgICAgICAgICAgID0gIi1Ec2N0cD1lbmFibGVkLC1Ec2N0cD1kaXNhYmxlZCx1c3JzY3RwIgorUEFDS0FHRUNPTkZJR1tzbW9vdGhzdHJlYW1pbmddID0gIi1Ec21vb3Roc3RyZWFtaW5nPWVuYWJsZWQsLURzbW9vdGhzdHJlYW1pbmc9ZGlzYWJsZWQsbGlieG1sMiIKK1BBQ0tBR0VDT05GSUdbc25kZmlsZV0gICAgICAgICA9ICItRHNuZGZpbGU9ZW5hYmxlZCwtRHNuZGZpbGU9ZGlzYWJsZWQsbGlic25kZmlsZTEiCitQQUNLQUdFQ09ORklHW3NydHBdICAgICAgICAgICAgPSAiLURzcnRwPWVuYWJsZWQsLURzcnRwPWRpc2FibGVkLGxpYnNydHAiCitQQUNLQUdFQ09ORklHW3RpbnlhbHNhXSAgICAgICAgPSAiLUR0aW55YWxzYT1lbmFibGVkLC1EdGlueWFsc2E9ZGlzYWJsZWQsdGlueWFsc2EiCitQQUNLQUdFQ09ORklHW3R0bWxdICAgICAgICAgICAgPSAiLUR0dG1sPWVuYWJsZWQsLUR0dG1sPWRpc2FibGVkLGxpYnhtbDIgcGFuZ28gY2Fpcm8iCitQQUNLQUdFQ09ORklHW3V2Y2gyNjRdICAgICAgICAgPSAiLUR1dmNoMjY0PWVuYWJsZWQsLUR1dmNoMjY0PWRpc2FibGVkLGxpYnVzYjEgbGliZ3VkZXYiCitQQUNLQUdFQ09ORklHW3ZvYWFjZW5jXSAgICAgICAgPSAiLUR2b2FhY2VuYz1lbmFibGVkLC1Edm9hYWNlbmM9ZGlzYWJsZWQsdm8tYWFjZW5jIgorUEFDS0FHRUNPTkZJR1t2b2FtcndiZW5jXSAgICAgID0gIi1Edm9hbXJ3YmVuYz1lbmFibGVkLC1Edm9hbXJ3YmVuYz1kaXNhYmxlZCx2by1hbXJ3YmVuYyIKK1BBQ0tBR0VDT05GSUdbdnVsa2FuXSAgICAgICAgICA9ICItRHZ1bGthbj1lbmFibGVkLC1EdnVsa2FuPWRpc2FibGVkLHZ1bGthbi1sb2FkZXIiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdICAgICAgICAgPSAiLUR3YXlsYW5kPWVuYWJsZWQsLUR3YXlsYW5kPWRpc2FibGVkLHdheWxhbmQtbmF0aXZlIHdheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGliZHJtIgorUEFDS0FHRUNPTkZJR1t3ZWJwXSAgICAgICAgICAgID0gIi1Ed2VicD1lbmFibGVkLC1Ed2VicD1kaXNhYmxlZCxsaWJ3ZWJwIgorUEFDS0FHRUNPTkZJR1t3ZWJydGNdICAgICAgICAgID0gIi1Ed2VicnRjPWVuYWJsZWQsLUR3ZWJydGM9ZGlzYWJsZWQsbGlibmljZSIKK1BBQ0tBR0VDT05GSUdbd2VicnRjZHNwXSAgICAgICA9ICItRHdlYnJ0Y2RzcD1lbmFibGVkLC1Ed2VicnRjZHNwPWRpc2FibGVkLHdlYnJ0Yy1hdWRpby1wcm9jZXNzaW5nIgorUEFDS0FHRUNPTkZJR1t6YmFyXSAgICAgICAgICAgID0gIi1EemJhcj1lbmFibGVkLC1EemJhcj1kaXNhYmxlZCx6YmFyIgorCisjIHRoZXNlIHBsdWdpbnMgY3VycmVudGx5IGhhdmUgbm8gY29ycmVzcG9uZGluZyBsaWJyYXJ5IGluIE9FLWNvcmUgb3IgbWV0YS1vcGVuZW1iZWRkZWQ6CisjICAgYW9tIGFuZHJvaWRtZWRpYSBhcHBsZW1lZGlhIGJzMmIgY2hyb21hcHJpbnQgZDNkdmlkZW9zaW5rCisjICAgZGlyZWN0c291bmQgZHRzIGZka2FhYyBnbWUgZ3NtIGlxIGthdGUgbGFkc3BhIGx2MiBtcGVnMmVuYworIyAgIG1wbGV4IG11c2VwYWNrIG52ZGVjIG52ZW5jIG9mYSBvcGVuZXhyIG9wZW5uaTIgb3BlbnNsZXMKKyMgICBzb3VuZHRvdWNoIHNwYW5kc3Agc3J0IHRlbGV0ZXh0IHZkcGF1IHdhc2FwaSB3aWxkbWlkaSB3aW5rcworIyAgIHdpbnNjcmVlbmNhcCB3cGUgeDI2NQorCitFWFRSQV9PRU1FU09OICs9ICIgXAorICAgIC1EZGVja2xpbms9ZW5hYmxlZCBcCisgICAgLURkdmI9ZW5hYmxlZCBcCisgICAgLURmYmRldj1lbmFibGVkIFwKKyAgICAtRGlwY3BpcGVsaW5lPWVuYWJsZWQgXAorICAgIC1EbmV0c2ltPWVuYWJsZWQgXAorICAgIC1Ec2htPWVuYWJsZWQgXAorICAgIC1EYW9tPWRpc2FibGVkIFwKKyAgICAtRGFuZHJvaWRtZWRpYT1kaXNhYmxlZCBcCisgICAgLURhcHBsZW1lZGlhPWRpc2FibGVkIFwKKyAgICAtRGJzMmI9ZGlzYWJsZWQgXAorICAgIC1EY2hyb21hcHJpbnQ9ZGlzYWJsZWQgXAorICAgIC1EZDNkdmlkZW9zaW5rPWRpc2FibGVkIFwKKyAgICAtRGRpcmVjdHNvdW5kPWRpc2FibGVkIFwKKyAgICAtRGR0cz1kaXNhYmxlZCBcCisgICAgLURmZGthYWM9ZGlzYWJsZWQgXAorICAgIC1EZmxpdGU9ZGlzYWJsZWQgXAorICAgIC1EZ21lPWRpc2FibGVkIFwKKyAgICAtRGdzbT1kaXNhYmxlZCBcCisgICAgLURpcWE9ZGlzYWJsZWQgXAorICAgIC1Ea2F0ZT1kaXNhYmxlZCBcCisgICAgLURsYWRzcGE9ZGlzYWJsZWQgXAorICAgIC1EbHYyPWRpc2FibGVkIFwKKyAgICAtRG1wZWcyZW5jPWRpc2FibGVkIFwKKyAgICAtRG1wbGV4PWRpc2FibGVkIFwKKyAgICAtRG11c2VwYWNrPWRpc2FibGVkIFwKKyAgICAtRG52ZGVjPWRpc2FibGVkIFwKKyAgICAtRG52ZW5jPWRpc2FibGVkIFwKKyAgICAtRG9mYT1kaXNhYmxlZCBcCisgICAgLURvcGVuZXhyPWRpc2FibGVkIFwKKyAgICAtRG9wZW5uaTI9ZGlzYWJsZWQgXAorICAgIC1Eb3BlbnNsZXM9ZGlzYWJsZWQgXAorICAgIC1Ec291bmR0b3VjaD1kaXNhYmxlZCBcCisgICAgLURzcGFuZHNwPWRpc2FibGVkIFwKKyAgICAtRHNydD1kaXNhYmxlZCBcCisgICAgLUR0ZWxldGV4dD1kaXNhYmxlZCBcCisgICAgLUR2ZHBhdT1kaXNhYmxlZCBcCisgICAgLUR3YXNhcGk9ZGlzYWJsZWQgXAorICAgIC1Ed2lsZG1pZGk9ZGlzYWJsZWQgXAorICAgIC1Ed2lua3M9ZGlzYWJsZWQgXAorICAgIC1Ed2luc2NyZWVuY2FwPWRpc2FibGVkIFwKKyAgICAtRHdwZT1kaXNhYmxlZCBcCisgICAgLUR4MjY1PWRpc2FibGVkIFwKKyAgICAke0BiYi51dGlscy5jb250YWlucygiVFVORV9GRUFUVVJFUyIsICJteDMyIiwgIi1EeWFkaWY9ZGlzYWJsZWQiLCAiIiwgZCl9IFwKKyIKKworZXhwb3J0IE9QRU5DVl9QUkVGSVggPSAiJHtTVEFHSU5HX0RJUl9UQVJHRVR9JHtwcmVmaXh9IgorCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgorCitGSUxFU18ke1BOfS1mcmVldmVyYiArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL3ByZXNldHMvR3N0RnJlZXZlcmIucHJzIgorRklMRVNfJHtQTn0tb3BlbmN2ICs9ICIke2RhdGFkaXJ9L2dzdC1wbHVnaW5zLWJhZC8xLjAvb3BlbmN2KiIKK0ZJTEVTXyR7UE59LXZvYW1yd2JlbmMgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzL0dzdFZvQW1yd2JFbmMucHJzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAxLWdzdHJlYW1lci1nbC5wYy5pbi1kb24tdC1hcHBlbmQtR0xfQ0ZMQUdTLXRvLUNGTEFHUy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDI1MWRjMTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAxLWdzdHJlYW1lci1nbC5wYy5pbi1kb24tdC1hcHBlbmQtR0xfQ0ZMQUdTLXRvLUNGTEFHUy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gNjFhNjcyZTc5YzhjYjFhZWVlZGE0Yzk2ODk5N2M1NzdhYzczYThmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogRnJpLCAxMiBNYXkgMjAxNyAxNjo0NzoxMiArMDMwMAotU3ViamVjdDogW1BBVENIXSBnc3RyZWFtZXItZ2wucGMuaW46IGRvbid0IGFwcGVuZCBHTF9DRkxBR1MgdG8gQ0ZMQUdTCi0KLURlcGVuZGVuY2llcycgaW5jbHVkZSBkaXJlY3RvcmllcyBzaG91bGQgbm90IGJlIGFkZGVkIGluIHRoaXMgd2F5OwotaXQgY2F1c2VzIHByb2JsZW1zIHdoZW4gY3Jvc3MtY29tcGlsaW5nIGluIHN5c3Jvb3QgZW52aXJvbm1lbnRzLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBNYXhpbiBCLiBKb2huIDxtYXhpbi5qb2huQGludGVsLmNvbT4KLS0tLQotIHBrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4gfCAyICstCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9wa2djb25maWcvZ3N0cmVhbWVyLWdsLnBjLmluIGIvcGtnY29uZmlnL2dzdHJlYW1lci1nbC5wYy5pbgotaW5kZXggZGM2NzJhOS4uOGMyOTBiYSAxMDA2NDQKLS0tLSBhL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4KLSsrKyBiL3BrZ2NvbmZpZy9nc3RyZWFtZXItZ2wucGMuaW4KLUBAIC0xMyw0ICsxMyw0IEBAIFZlcnNpb246IEBWRVJTSU9OQAotIFJlcXVpcmVzOiBnc3RyZWFtZXItdmlkZW8tQEdTVF9BUElfVkVSU0lPTkAgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkAgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05ACi0gCi0gTGliczogLUwke2xpYmRpcn0gLWxnc3RnbC1AR1NUX0FQSV9WRVJTSU9OQAotLUNmbGFnczogLUkke2luY2x1ZGVkaXJ9IC1JJHtsaWJkaXJ9L2dzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQC9pbmNsdWRlIEBHTF9DRkxBR1NACi0rQ2ZsYWdzOiAtSSR7aW5jbHVkZWRpcn0gLUkke2xpYmRpcn0vZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AL2luY2x1ZGUKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAxLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDEtbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40OWFiNDcxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAxLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2gKQEAgLTAsMCArMSwzNiBAQAorRnJvbSAzMDY3MmJhN2QxMzQ1NTNlNTk5MzVkZGM4NzUxMDRhZGJhMjZmMjVjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogPT9VVEYtOD9xP1RpbS1QaGlsaXBwPTIwTT1DMz1CQ2xsZXI/PSA8dGltQGNlbnRyaWN1bGFyLmNvbT4KK0RhdGU6IFRodSwgMTcgT2N0IDIwMTkgMjA6MDY6MjQgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gbWVzb246IGJ1aWxkIGdpciBldmVuIHdoZW4gY3Jvc3MtY29tcGlsaW5nIGlmIGludHJvc3BlY3Rpb24KKyB3YXMgZW5hYmxlZCBleHBsaWNpdGx5CisKK1RoaXMgY2FuIGJlIG1hZGUgdG8gd29yayBpbiBjZXJ0YWluIGNpcmN1bXN0YW5jZXMgd2hlbgorY3Jvc3MtY29tcGlsaW5nLCBzbyBkZWZhdWx0IHRvIG5vdCBidWlsZGluZyBnLWkgc3R1ZmYKK3doZW4gY3Jvc3MtY29tcGlsaW5nLCBidXQgYWxsb3cgaXQgaWYgaW50cm9zcGVjdGlvbiB3YXMKK2VuYWJsZWQgZXhwbGljaXRseSB2aWEgLURpbnRyb3NwZWN0aW9uPWVuYWJsZWQuCisKK1NlZSBnc3RyZWFtZXIvZ3N0cmVhbWVyIzQ1NCBhbmQgZ3N0cmVhbWVyL2dzdHJlYW1lciMzODEuCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgWzMwNjcyYmE3ZDEzNDU1M2U1OTkzNWRkYzg3NTEwNGFkYmEyNmYyNWNdCisKK1NpZ25lZC1vZmYtYnk6IENhcmxvcyBSYWZhZWwgR2lhbmkgPGNyZzc0NzVAbWFpbGJveC5vcmc+CistLS0KKyBtZXNvbi5idWlsZCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDI2NGQ4NGM5ZS4uYzgxNDdjMjI0IDEwMDY0NAorLS0tIGEvbWVzb24uYnVpbGQKKysrKyBiL21lc29uLmJ1aWxkCitAQCAtMzcyLDcgKzM3Miw3IEBAIGVuZGlmCisgCisgZ2lyID0gZmluZF9wcm9ncmFtKCdnLWlyLXNjYW5uZXInLCByZXF1aXJlZCA6IGdldF9vcHRpb24oJ2ludHJvc3BlY3Rpb24nKSkKKyBnbm9tZSA9IGltcG9ydCgnZ25vbWUnKQorLWJ1aWxkX2dpciA9IGdpci5mb3VuZCgpIGFuZCBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKQorK2J1aWxkX2dpciA9IGdpci5mb3VuZCgpIGFuZCAobm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgZ2V0X29wdGlvbignaW50cm9zcGVjdGlvbicpLmVuYWJsZWQoKSkKKyBnaXJfaW5pdF9zZWN0aW9uID0gWyAnLS1hZGQtaW5pdC1zZWN0aW9uPWV4dGVybiB2b2lkIGdzdF9pbml0KGdpbnQqLGdjaGFyKiopOycgKyBcCisgICAgICdnX3NldGVudigiR1NUX1JFR0lTVFJZX0RJU0FCTEUiLCAieWVzIiwgVFJVRSk7JyArIFwKKyAgICAgJ2dfc2V0ZW52KCJHU1RfUkVHSVNUUllfMS4wIiwgIkAwQCIsIFRSVUUpOycuZm9ybWF0KG1lc29uLmN1cnJlbnRfYnVpbGRfZGlyKCkgKyAnL2dpcl9lbXB0eV9yZWdpc3RyeS5yZWcnKSArIFwKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvMDAwMi1NYWtlZmlsZS5hbS1wcmVmaXgtY2FsbHMtdG8tcGtnLWNvbmZpZy13aXRoLVBLR19DT05GLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLU1ha2VmaWxlLmFtLXByZWZpeC1jYWxscy10by1wa2ctY29uZmlnLXdpdGgtUEtHX0NPTkYucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA4Y2JmYjcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLU1ha2VmaWxlLmFtLXByZWZpeC1jYWxscy10by1wa2ctY29uZmlnLXdpdGgtUEtHX0NPTkYucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyOTUgKzAsMCBAQAotRnJvbSA5NjAxZmMwY2Q2NzUxYTFhZmZkYzg3MTcyMTdiOTU5MzFkYjMxZDdmIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBUaHUsIDUgQXByIDIwMTggMTA6MjY6MjUgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gTWFrZWZpbGUuYW06IHByZWZpeCBjYWxscyB0byBwa2ctY29uZmlnIHdpdGgKLSBQS0dfQ09ORklHX1NZU1JPT1RfRElSCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbWFpbGxpc3RdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLVNpZ25lZC1vZmYtYnk6IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci0KLS0tLQotIGdzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtIHwgIDQgKystLQotIGdzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0gICAgICAgIHwgIDQgKystLQotIGdzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbSAgICAgIHwgMTIgKysrKysrLS0tLS0tCi0gZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtICAgICAgICAgfCAgOCArKysrLS0tLQotIGdzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtICAgIHwgMTIgKysrKysrLS0tLS0tCi0gZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0gICAgICAgfCAgOCArKysrLS0tLQotIGdzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0gICAgICAgIHwgIDggKysrKy0tLS0KLSBnc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbSAgICAgICB8ICA0ICsrLS0KLSBnc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtICAgICAgICB8ICA0ICsrLS0KLSBnc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtICAgICAgICB8ICA4ICsrKystLS0tCi0gZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtICAgICAgfCAgOCArKysrLS0tLQotIDExIGZpbGVzIGNoYW5nZWQsIDQwIGluc2VydGlvbnMoKyksIDQwIGRlbGV0aW9ucygtKQotCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQotaW5kZXggMWVjYzk1MC4uZDY0MTdhYyAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvYWxsb2NhdG9ycy9NYWtlZmlsZS5hbQotQEAgLTM5LDcgKzM5LDcgQEAgR3N0QWxsb2NhdG9ycy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RhbGxvY2F0b3JzLUAKLSAJCS0tYy1pbmNsdWRlICJnc3QvYWxsb2NhdG9ycy9hbGxvY2F0b3JzLmgiIFwKLSAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCi0gCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0tbGlicmFyeT1saWJnc3RhbGxvY2F0b3JzLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKLSAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1saWJ0b29sPSIke0xJQlRPT0x9IiBcCi1AQCAtNjMsNyArNjMsNyBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAotIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKLS0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSX09QVFMpICQ8IC1vICQoQEYpCi0gCi0gQ0xFQU5GSUxFUyA9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hcHAvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvYXBwL01ha2VmaWxlLmFtCi1pbmRleCA1YmZkNjA2Li42NDQxNjc0IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L2FwcC9NYWtlZmlsZS5hbQotQEAgLTUxLDggKzUxLDggQEAgR3N0QXBwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdGFwcC1AR1NUX0FQSV9WRVJTSU8KLSAJCS0tYy1pbmNsdWRlICJnc3QvYXBwL2FwcC5oIiBcCi0gCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAotIAkJLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQktLWxpYnJhcnk9bGliZ3N0YXBwLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKLSAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQotaW5kZXggN2ZiNjVmMi4uNTM3OWY3OSAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9hdWRpby9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L2F1ZGlvL01ha2VmaWxlLmFtCi1AQCAtMTc2LDEyICsxNzYsMTIgQEAgR3N0QXVkaW8tQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0YXVkaW8tQEdTVF9BUElfVkUKLSAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCi0gCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCi0gCQktLWMtaW5jbHVkZSAiZ3N0L2F1ZGlvL2F1ZGlvLmgiIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1hZGQtaW5jbHVkZS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3RhZy8iIFwKLSAJCS0tbGlicmFyeT1saWJnc3RhdWRpby1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCi0tCQktLWxpYnJhcnktcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9bGliZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1saWJyYXJ5LXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWxpYmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1saWJyYXJ5LXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1saWJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWxpYnJhcnktcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWxpYmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5LXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdGFnLyIgXAotIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gCQktLWluY2x1ZGU9R3N0QmFzZS1AR1NUX0FQSV9WRVJTSU9OQCBcCi1AQCAtMjEwLDggKzIxMCw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKLSAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAotIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKLSAJCS0taW5jbHVkZWRpcj0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQotIAotIENMRUFORklMRVMgKz0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCi1pbmRleCAzMjc2ZDdmLi4wY2RmZTI2IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L2dsL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvZ2wvTWFrZWZpbGUuYW0KLUBAIC0yMDksOSArMjA5LDkgQEAgR3N0R0wtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0Z2wtQEdTVF9BUElfVkVSU0lPTkAKLSAJCSQoR1NUX1BMVUdJTlNfQkFTRV9DRkxBR1MpIFwKLSAJCSQoR0xfQ0ZMQUdTKSBcCi0gCQktLWFkZC1pbmNsdWRlLXBhdGg9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmlkZW8vIiBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92aWRlby8iIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5PWxpYmdzdGdsLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKLSAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTI0MSw4ICsyNDEsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCi0gCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCi0gCQktLWluY2x1ZGVkaXI9IiQodG9wX2J1aWxkZGlyKS9nc3QtbGlicy9nc3QvdmlkZW8vIiBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQotIAotIENMRUFORklMRVMgKz0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQotaW5kZXggMzVhNmU0NC4uNDlkNjg5NCAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9wYnV0aWxzL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvcGJ1dGlscy9NYWtlZmlsZS5hbQotQEAgLTg4LDE0ICs4OCwxNCBAQCBHc3RQYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHBidXRpbHMtQEdTVF9BUAotIAkJLS1jLWluY2x1ZGUgImdzdC9wYnV0aWxzL3BidXRpbHMuaCIgXAotIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKLSAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1hZGQtaW5jbHVkZS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3RhZy8iIFwKLSAJCS0tYWRkLWluY2x1ZGUtcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92aWRlby8iIFwKLSAJCS0tYWRkLWluY2x1ZGUtcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hdWRpby8iIFwKLSAJCS0tbGlicmFyeT1saWJnc3RwYnV0aWxzLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKLS0JCS0tbGlicmFyeS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1saWJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWxpYnJhcnktcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9bGliZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWxpYnJhcnktcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWxpYmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tbGlicmFyeS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9bGliZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC90YWcvIiBcCi0gCQktLWxpYnJhcnktcGF0aD0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92aWRlby8iIFwKLSAJCS0tbGlicmFyeS1wYXRoPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L2F1ZGlvLyIgXAotQEAgLTEyOCw4ICsxMjgsOCBAQCB0eXBlbGlic19EQVRBID0gJChCVUlMVF9HSVJTT1VSQ0VTOi5naXI9LnR5cGVsaWIpCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKHNyY2RpcikgXAotIAkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKLS0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1pbmNsdWRlZGlyPSIkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMvZ3N0L3RhZy8iIFwKLSAJCS0taW5jbHVkZWRpcj0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92aWRlby8iIFwKLSAJCS0taW5jbHVkZWRpcj0iJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC9hdWRpby8iIFwKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi1pbmRleCBlNjZlZjRmLi5jOGM1ODhhIDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtCi1AQCAtNDMsOCArNDMsOCBAQCBsaWJnc3RyaWZmX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSAkKEdTVF9MSUJfTERGTEFHUykgJChHU1RfQUxMX0xERkxBR1MpCi0gIwkJLS1jLWluY2x1ZGUgImdzdC9yaWZmL3JpZmYuaCIgXAotICMJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKGJ1aWxkZGlyKS8uLi90YWcgXAotICMJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKGJ1aWxkZGlyKS8uLi9hdWRpbyBcCi0tIwkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tIwkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsjCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rIwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gIwkJLS1saWJyYXJ5PWxpYmdzdHJpZmYtQEdTVF9BUElfVkVSU0lPTkAubGEgXAotICMJCS0taW5jbHVkZT1Hc3RBdWRpby1AR1NUX0FQSV9WRVJTSU9OQCBcCi0gIwkJLS1pbmNsdWRlPUdzdFRhZy1AR1NUX0FQSV9WRVJTSU9OQCBcCi1AQCAtNzUsOCArNzUsOCBAQCBsaWJnc3RyaWZmX0BHU1RfQVBJX1ZFUlNJT05AX2xhX0xERkxBR1MgPSAkKEdTVF9MSUJfTERGTEFHUykgJChHU1RfQUxMX0xERkxBR1MpCi0gIwkJLS1pbmNsdWRlZGlyPSQoYnVpbGRkaXIpIFwKLSAjCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikvLi4vdGFnIFwKLSAjCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikvLi4vYXVkaW8gXAotLSMJCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLSMJCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rIwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKyMJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotICMJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQotICMKLSAjQ0xFQU5GSUxFUyA9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9ydHAvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcnRwL01ha2VmaWxlLmFtCi1pbmRleCA3N2ViZWViLi45YWVlNzg4IDEwMDY0NAotLS0tIGEvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3J0cC9NYWtlZmlsZS5hbQotQEAgLTY2LDggKzY2LDggQEAgR3N0UnRwLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHJ0cC1AR1NUX0FQSV9WRVJTSU8KLSAJCS0tYy1pbmNsdWRlICJnc3QvcnRwL3J0cC5oIiBcCi0gCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCi0gCQktSSQodG9wX3NyY2RpcikvZ3N0LWxpYnMgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQktLWxpYnJhcnk9bGliZ3N0cnRwLUBHU1RfQVBJX1ZFUlNJT05ALmxhIFwKLSAJCS0taW5jbHVkZT1Hc3QtQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1pbmNsdWRlPUdzdEJhc2UtQEdTVF9BUElfVkVSU0lPTkAgXAotQEAgLTk0LDggKzk0LDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQotIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCi0gCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQotIAotIENMRUFORklMRVMgKz0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQotaW5kZXggZGI5ZDBmZC4uNzkwMjdjYiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQotQEAgLTcxLDggKzcxLDggQEAgR3N0UnRzcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RydHNwLUBHU1RfQVBJX1ZFUlMKLSAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKLSAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCi0gCQktLWFkZC1pbmNsdWRlLXBhdGg9JChidWlsZGRpcikvLi4vc2RwIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5PWxpYmdzdHJ0c3AtQEdTVF9BUElfVkVSU0lPTkAubGEgXAotIAkJLS1pbmNsdWRlPUdpby0yLjAgXAotIAkJLS1pbmNsdWRlPUdzdC1AR1NUX0FQSV9WRVJTSU9OQCBcCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3NkcC9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC9zZHAvTWFrZWZpbGUuYW0KLWluZGV4IDZlMDVjYzcuLmM3Y2Y1MTQgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3Qvc2RwL01ha2VmaWxlLmFtCi1AQCAtMzEsNyArMzEsNyBAQCBHc3RTZHAtQEdTVF9BUElfVkVSU0lPTkAuZ2lyOiAkKElOVFJPU1BFQ1RJT05fU0NBTk5FUikgbGliZ3N0c2RwLUBHU1RfQVBJX1ZFUlNJTwotIAkJLS13YXJuLWFsbCBcCi0gCQktLWMtaW5jbHVkZSAiZ3N0L3NkcC9zZHAuaCIgXAotIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5PWxpYmdzdHNkcC1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCi0gCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0tbGlidG9vbD0iJHtMSUJUT09MfSIgXAotQEAgLTU1LDcgKzU1LDcgQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQotIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCi0gCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0taW5jbHVkZWRpcj0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQotIAotIENMRUFORklMRVMgPSAkKEJVSUxUX0dJUlNPVVJDRVMpICQodHlwZWxpYnNfREFUQSkKLWRpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvdGFnL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3RhZy9NYWtlZmlsZS5hbQotaW5kZXggYzg2NTE1Yi4uMzYzZTZkMiAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC1saWJzL2dzdC90YWcvTWFrZWZpbGUuYW0KLUBAIC02MSw4ICs2MSw4IEBAIEdzdFRhZy1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3R0YWctQEdTVF9BUElfVkVSU0lPCi0gCQktLWMtaW5jbHVkZSAiZ3N0L3RhZy90YWcuaCIgXAotIAkJLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKLSAJCS1JJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotLQkJLS1hZGQtaW5jbHVkZS1wYXRoPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLSsJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKFBLR19DT05GSUdfU1lTUk9PVF9ESVIpYFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotIAkJLS1saWJyYXJ5PWxpYmdzdHRhZy1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCi0gCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLUBAIC04OSw4ICs4OSw4IEBAIHR5cGVsaWJzX0RBVEEgPSAkKEJVSUxUX0dJUlNPVVJDRVM6Lmdpcj0udHlwZWxpYikKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUikgXAotIAkJLS1pbmNsdWRlZGlyPSQoc3JjZGlyKSBcCi0gCQktLWluY2x1ZGVkaXI9JChidWlsZGRpcikgXAotLQkJLS1pbmNsdWRlZGlyPWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItYmFzZS1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXAotKwkJLS1pbmNsdWRlZGlyPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0gCQkkKElOVFJPU1BFQ1RJT05fQ09NUElMRVJfT1BUUykgJDwgLW8gJChARikKLSAKLSBDTEVBTkZJTEVTICs9ICQoQlVJTFRfR0lSU09VUkNFUykgJCh0eXBlbGlic19EQVRBKQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbSBiL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQotaW5kZXggMGY4NDU1Zi4uOGM5OTU1YyAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC92aWRlby9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL01ha2VmaWxlLmFtCi1AQCAtMTI0LDggKzEyNCw4IEBAIEdzdFZpZGVvLUBHU1RfQVBJX1ZFUlNJT05ALmdpcjogJChJTlRST1NQRUNUSU9OX1NDQU5ORVIpIGxpYmdzdHZpZGVvLUBHU1RfQVBJX1ZFCi0gCQktLWMtaW5jbHVkZSAiZ3N0L3ZpZGVvL3ZpZGVvLmgiIFwKLSAJCS1JJCh0b3Bfc3JjZGlyKS9nc3QtbGlicyBcCi0gCQktSSQodG9wX2J1aWxkZGlyKS9nc3QtbGlicyBcCi0tCQktLWFkZC1pbmNsdWRlLXBhdGg9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0tYWRkLWluY2x1ZGUtcGF0aD1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWFkZC1pbmNsdWRlLXBhdGg9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCS0tbGlicmFyeT1saWJnc3R2aWRlby1AR1NUX0FQSV9WRVJTSU9OQC5sYSBcCi0gCQktLWluY2x1ZGU9R3N0LUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0taW5jbHVkZT1Hc3RCYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLUBAIC0xNTIsOCArMTUyLDggQEAgdHlwZWxpYnNfREFUQSA9ICQoQlVJTFRfR0lSU09VUkNFUzouZ2lyPS50eXBlbGliKQotIAkJJChJTlRST1NQRUNUSU9OX0NPTVBJTEVSKSBcCi0gCQktLWluY2x1ZGVkaXI9JChzcmNkaXIpIFwKLSAJCS0taW5jbHVkZWRpcj0kKGJ1aWxkZGlyKSBcCi0tCQktLWluY2x1ZGVkaXI9YFBLR19DT05GSUdfUEFUSD0iJChHU1RfUEtHX0NPTkZJR19QQVRIKSIgJChQS0dfQ09ORklHKSAtLXZhcmlhYmxlPWdpcmRpciBnc3RyZWFtZXItQEdTVF9BUElfVkVSU0lPTkBgIFwKLS0JCS0taW5jbHVkZWRpcj1gUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AYCBcCi0rCQktLWluY2x1ZGVkaXI9JChQS0dfQ09ORklHX1NZU1JPT1RfRElSKWBQS0dfQ09ORklHX1BBVEg9IiQoR1NUX1BLR19DT05GSUdfUEFUSCkiICQoUEtHX0NPTkZJRykgLS12YXJpYWJsZT1naXJkaXIgZ3N0cmVhbWVyLWJhc2UtQEdTVF9BUElfVkVSU0lPTkBgIFwKLSAJCSQoSU5UUk9TUEVDVElPTl9DT01QSUxFUl9PUFRTKSAkPCAtbyAkKEBGKQotIAotIENMRUFORklMRVMgKz0gJChCVUlMVF9HSVJTT1VSQ0VTKSAkKHR5cGVsaWJzX0RBVEEpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDItbWVzb24tQWRkLXZhcmlhYmxlcy1mb3ItZ2lyLWZpbGVzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLW1lc29uLUFkZC12YXJpYWJsZXMtZm9yLWdpci1maWxlcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jYTg1NzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAyLW1lc29uLUFkZC12YXJpYWJsZXMtZm9yLWdpci1maWxlcy5wYXRjaApAQCAtMCwwICsxLDIzNSBAQAorRnJvbSA2ODU3MzFlOTg5ZGMwNzRhNGIwZDQ4YjZjODA2MmUyNzM4ZjA5NzE5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogVGhpYmF1bHQgU2F1bmllciA8dHNhdW5pZXJAaWdhbGlhLmNvbT4KK0RhdGU6IE1vbiwgMjIgT2N0IDIwMTggMTE6NDQ6MzcgKzAyMDAKK1N1YmplY3Q6IFtQQVRDSF0gbWVzb246IEFkZCB2YXJpYWJsZXMgZm9yIGdpciBmaWxlcworCitBbmQgZmxhdHRlbiBsaXN0IG9mIHNvdXJjZXMgZm9yIGRlcGVuZGVuY2llcworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFs2ODU3MzFlOTg5ZGMwNzRhNGIwZDQ4YjZjODA2MmUyNzM4ZjA5NzE5XQorCitTaWduZWQtb2ZmLWJ5OiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxjcmc3NDc1QG1haWxib3gub3JnPgorLS0tCisgZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvbWVzb24uYnVpbGQgfCA1ICsrKy0tCisgZ3N0LWxpYnMvZ3N0L2FwcC9tZXNvbi5idWlsZCAgICAgICAgfCA2ICsrKystLQorIGdzdC1saWJzL2dzdC9hdWRpby9tZXNvbi5idWlsZCAgICAgIHwgNSArKystLQorIGdzdC1saWJzL2dzdC9wYnV0aWxzL21lc29uLmJ1aWxkICAgIHwgNSArKystLQorIGdzdC1saWJzL2dzdC9ydHAvbWVzb24uYnVpbGQgICAgICAgIHwgNiArKysrLS0KKyBnc3QtbGlicy9nc3QvcnRzcC9tZXNvbi5idWlsZCAgICAgICB8IDUgKysrLS0KKyBnc3QtbGlicy9nc3Qvc2RwL21lc29uLmJ1aWxkICAgICAgICB8IDYgKysrKy0tCisgZ3N0LWxpYnMvZ3N0L3RhZy9tZXNvbi5idWlsZCAgICAgICAgfCA1ICsrKy0tCisgZ3N0LWxpYnMvZ3N0L3ZpZGVvL21lc29uLmJ1aWxkICAgICAgfCA1ICsrKy0tCisgOSBmaWxlcyBjaGFuZ2VkLCAzMCBpbnNlcnRpb25zKCspLCAxOCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL21lc29uLmJ1aWxkIGIvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvbWVzb24uYnVpbGQKK2luZGV4IDM2NGJhZWViZi4uNTZmMTU2ZGMzIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvbWVzb24uYnVpbGQKKysrKyBiL2dzdC1saWJzL2dzdC9hbGxvY2F0b3JzL21lc29uLmJ1aWxkCitAQCAtMjIsNyArMjIsNyBAQCBnc3RhbGxvY2F0b3JzID0gbGlicmFyeSgnZ3N0YWxsb2NhdG9ycy1AMEAnLmZvcm1hdChhcGlfdmVyc2lvbiksCisgYWxsb2NhdG9yc19nZW5fc291cmNlcyAgPSBbXQorIGlmIGJ1aWxkX2dpcgorICAgZ3N0X2dpcl9leHRyYV9hcmdzID0gZ2lyX2luaXRfc2VjdGlvbiArIFsgJy0tYy1pbmNsdWRlPWdzdC9hbGxvY2F0b3JzL2FsbG9jYXRvcnMuaCcgXQorLSAgYWxsb2NhdG9yc19nZW5fc291cmNlcyArPSBbZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdGFsbG9jYXRvcnMsCisrICBhbGxvY2F0b3JzX2dpciA9IGdub21lLmdlbmVyYXRlX2dpcihnc3RhbGxvY2F0b3JzLAorICAgICBzb3VyY2VzIDogZ3N0X2FsbG9jYXRvcnNfc291cmNlcyArIGdzdF9hbGxvY2F0b3JzX2hlYWRlcnMsCisgICAgIG5hbWVzcGFjZSA6ICdHc3RBbGxvY2F0b3JzJywKKyAgICAgbnN2ZXJzaW9uIDogYXBpX3ZlcnNpb24sCitAQCAtMzMsNyArMzMsOCBAQCBpZiBidWlsZF9naXIKKyAgICAgaW5zdGFsbCA6IHRydWUsCisgICAgIGV4dHJhX2FyZ3MgOiBnc3RfZ2lyX2V4dHJhX2FyZ3MsCisgICAgIGRlcGVuZGVuY2llcyA6IFtnc3RfZGVwXQorLSAgKV0KKysgICkKKysgIGFsbG9jYXRvcnNfZ2VuX3NvdXJjZXMgKz0gYWxsb2NhdG9yc19naXIKKyBlbmRpZgorIAorIGFsbG9jYXRvcnNfZGVwID0gZGVjbGFyZV9kZXBlbmRlbmN5KGxpbmtfd2l0aDogZ3N0YWxsb2NhdG9ycywKK2RpZmYgLS1naXQgYS9nc3QtbGlicy9nc3QvYXBwL21lc29uLmJ1aWxkIGIvZ3N0LWxpYnMvZ3N0L2FwcC9tZXNvbi5idWlsZAoraW5kZXggODFkZDBmNDJjLi43YTkwZjVlMTAgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvYXBwL21lc29uLmJ1aWxkCisrKysgYi9nc3QtbGlicy9nc3QvYXBwL21lc29uLmJ1aWxkCitAQCAtMzIsNyArMzIsNyBAQCBnc3RhcHAgPSBsaWJyYXJ5KCdnc3RhcHAtQDBAJy5mb3JtYXQoYXBpX3ZlcnNpb24pLAorIAorIGlmIGJ1aWxkX2dpcgorICAgZ3N0X2dpcl9leHRyYV9hcmdzID0gZ2lyX2luaXRfc2VjdGlvbiArIFsgJy0tYy1pbmNsdWRlPWdzdC9hcHAvYXBwLmgnIF0KKy0gIGFwcF9nZW5fc291cmNlcyArPSBbZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdGFwcCwKKysgIGFwcF9naXIgPSBnbm9tZS5nZW5lcmF0ZV9naXIoZ3N0YXBwLAorICAgICBzb3VyY2VzIDogYXBwX3NvdXJjZXMgKyBhcHBfaGVhZGVycyArIFtnc3RhcHBfY10gKyBbZ3N0YXBwX2hdLAorICAgICBuYW1lc3BhY2UgOiAnR3N0QXBwJywKKyAgICAgbnN2ZXJzaW9uIDogYXBpX3ZlcnNpb24sCitAQCAtNDMsNyArNDMsOSBAQCBpZiBidWlsZF9naXIKKyAgICAgaW5zdGFsbCA6IHRydWUsCisgICAgIGV4dHJhX2FyZ3MgOiBnc3RfZ2lyX2V4dHJhX2FyZ3MsCisgICAgIGRlcGVuZGVuY2llcyA6IFtnc3RfZGVwLCBnc3RfYmFzZV9kZXBdCistICApXQorKyAgKQorKworKyAgYXBwX2dlbl9zb3VyY2VzICs9IGFwcF9naXIKKyBlbmRpZgorIAorIGFwcF9kZXAgPSBkZWNsYXJlX2RlcGVuZGVuY3kobGlua193aXRoOiBnc3RhcHAsCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L2F1ZGlvL21lc29uLmJ1aWxkIGIvZ3N0LWxpYnMvZ3N0L2F1ZGlvL21lc29uLmJ1aWxkCitpbmRleCAwZTRlZmFiMmUuLjJhNDQ5ZDRiZiAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC9hdWRpby9tZXNvbi5idWlsZAorKysrIGIvZ3N0LWxpYnMvZ3N0L2F1ZGlvL21lc29uLmJ1aWxkCitAQCAtMTUzLDcgKzE1Myw3IEBAIGdzdGF1ZGlvID0gbGlicmFyeSgnZ3N0YXVkaW8tQDBAJy5mb3JtYXQoYXBpX3ZlcnNpb24pLAorIAorIGlmIGJ1aWxkX2dpcgorICAgZ3N0X2dpcl9leHRyYV9hcmdzID0gZ2lyX2luaXRfc2VjdGlvbiArIFsgJy0tYy1pbmNsdWRlPWdzdC9hdWRpby9hdWRpby5oJyBdCistICBhdWRpb19nZW5fc291cmNlcyArPSBbZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdGF1ZGlvLAorKyAgYXVkaW9fZ2lyID0gZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdGF1ZGlvLAorICAgICBzb3VyY2VzIDogYXVkaW9fc3JjICsgYXVkaW9faGVhZGVycyArIFtnc3RhdWRpb19jXSArIFtnc3RhdWRpb19oXSwKKyAgICAgbmFtZXNwYWNlIDogJ0dzdEF1ZGlvJywKKyAgICAgbnN2ZXJzaW9uIDogYXBpX3ZlcnNpb24sCitAQCAtMTY0LDcgKzE2NCw4IEBAIGlmIGJ1aWxkX2dpcgorICAgICBpbnN0YWxsIDogdHJ1ZSwKKyAgICAgZXh0cmFfYXJncyA6IGdzdF9naXJfZXh0cmFfYXJncywKKyAgICAgZGVwZW5kZW5jaWVzIDogZ3N0YXVkaW9fZGVwcworLSAgKV0KKysgICkKKysgIGF1ZGlvX2dlbl9zb3VyY2VzICs9IFthdWRpb19naXJdCisgZW5kaWYKKyAKKyBhdWRpb19kZXAgPSBkZWNsYXJlX2RlcGVuZGVuY3kobGlua193aXRoIDogZ3N0YXVkaW8sCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvbWVzb24uYnVpbGQgYi9nc3QtbGlicy9nc3QvcGJ1dGlscy9tZXNvbi5idWlsZAoraW5kZXggMmZhZjYyNjIyLi4wZTk2NzIyZmQgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvcGJ1dGlscy9tZXNvbi5idWlsZAorKysrIGIvZ3N0LWxpYnMvZ3N0L3BidXRpbHMvbWVzb24uYnVpbGQKK0BAIC02Myw3ICs2Myw3IEBAIHBidXRpbHMgPSBsaWJyYXJ5KCdnc3RwYnV0aWxzLUAwQCcuZm9ybWF0KGFwaV92ZXJzaW9uKSwKKyBwYnV0aWxzX2dlbl9zb3VyY2VzID0gW2dzdHBidXRpbHNfaCwgZ3N0X3BidXRpbHNfdmVyc2lvbl9oXQorIGlmIGJ1aWxkX2dpcgorICAgZ3N0X2dpcl9leHRyYV9hcmdzID0gZ2lyX2luaXRfc2VjdGlvbiArIFsgJy0tYy1pbmNsdWRlPWdzdC9wYnV0aWxzL3BidXRpbHMuaCcgXQorLSAgcGJ1dGlsc19nZW5fc291cmNlcyArPSBbZ25vbWUuZ2VuZXJhdGVfZ2lyKHBidXRpbHMsCisrICBwYnV0aWxzX2dpciA9IGdub21lLmdlbmVyYXRlX2dpcihwYnV0aWxzLAorICAgICBzb3VyY2VzIDogcGJ1dGlsc19zb3VyY2VzICsgcGJ1dGlsc19oZWFkZXJzICsgW2dzdHBidXRpbHNfaCwgZ3N0X3BidXRpbHNfdmVyc2lvbl9oXSwKKyAgICAgbmFtZXNwYWNlIDogJ0dzdFBidXRpbHMnLAorICAgICBuc3ZlcnNpb24gOiBhcGlfdmVyc2lvbiwKK0BAIC03NCw3ICs3NCw4IEBAIGlmIGJ1aWxkX2dpcgorICAgICBpbnN0YWxsIDogdHJ1ZSwKKyAgICAgZXh0cmFfYXJncyA6IGdzdF9naXJfZXh0cmFfYXJncywKKyAgICAgZGVwZW5kZW5jaWVzIDogZ3N0cGJ1dGlsc19kZXBzCistICApXQorKyAgKQorKyAgcGJ1dGlsc19nZW5fc291cmNlcyArPSBbcGJ1dGlsc19naXJdCisgZW5kaWYKKyAKKyBwYnV0aWxzX2RlcCA9IGRlY2xhcmVfZGVwZW5kZW5jeShsaW5rX3dpdGggOiBwYnV0aWxzLAorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9ydHAvbWVzb24uYnVpbGQgYi9nc3QtbGlicy9nc3QvcnRwL21lc29uLmJ1aWxkCitpbmRleCBmNDdlYzY1OTIuLjdlYTY2NThkNSAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC9ydHAvbWVzb24uYnVpbGQKKysrKyBiL2dzdC1saWJzL2dzdC9ydHAvbWVzb24uYnVpbGQKK0BAIC00OSw3ICs0OSw3IEBAIGdzdF9ydHAgPSBsaWJyYXJ5KCdnc3RydHAtQDBAJy5mb3JtYXQoYXBpX3ZlcnNpb24pLAorIHJ0cF9nZW5fc291cmNlcyA9IFtnc3RydHBfZW51bV9oXQorIGlmIGJ1aWxkX2dpcgorICAgZ3N0X2dpcl9leHRyYV9hcmdzID0gZ2lyX2luaXRfc2VjdGlvbiArIFsgJy0tYy1pbmNsdWRlPWdzdC9ydHAvcnRwLmgnIF0KKy0gIHJ0cF9nZW5fc291cmNlcyArPSBbZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdF9ydHAsCisrICBydHBfZ2lyID0gZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdF9ydHAsCisgICAgIHNvdXJjZXMgOiBydHBfc291cmNlcyArIHJ0cF9oZWFkZXJzICsgW2dzdHJ0cF9lbnVtX2NdICsgW2dzdHJ0cF9lbnVtX2hdLAorICAgICBuYW1lc3BhY2UgOiAnR3N0UnRwJywKKyAgICAgbnN2ZXJzaW9uIDogYXBpX3ZlcnNpb24sCitAQCAtNjAsNyArNjAsOSBAQCBpZiBidWlsZF9naXIKKyAgICAgaW5zdGFsbCA6IHRydWUsCisgICAgIGV4dHJhX2FyZ3MgOiBnc3RfZ2lyX2V4dHJhX2FyZ3MsCisgICAgIGRlcGVuZGVuY2llcyA6IGdzdHJ0cF9kZXBzCistICApXQorKyAgKQorKworKyAgcnRwX2dlbl9zb3VyY2VzICs9IFtydHBfZ2lyXQorIGVuZGlmCisgCisgCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3J0c3AvbWVzb24uYnVpbGQgYi9nc3QtbGlicy9nc3QvcnRzcC9tZXNvbi5idWlsZAoraW5kZXggMjdlMzA5ZDVhLi4zNjMyYWRjZWIgMTAwNjQ0CistLS0gYS9nc3QtbGlicy9nc3QvcnRzcC9tZXNvbi5idWlsZAorKysrIGIvZ3N0LWxpYnMvZ3N0L3J0c3AvbWVzb24uYnVpbGQKK0BAIC01NCw3ICs1NCw3IEBAIGdzdF9ydHNwID0gbGlicmFyeSgnZ3N0cnRzcC1AMEAnLmZvcm1hdChhcGlfdmVyc2lvbiksCisgcnRzcF9nZW5fc291cmNlcyA9IFtnc3RydHNwX2hdCisgaWYgYnVpbGRfZ2lyCisgICBnc3RfZ2lyX2V4dHJhX2FyZ3MgPSBnaXJfaW5pdF9zZWN0aW9uICsgWyAnLS1jLWluY2x1ZGU9Z3N0L3J0c3AvcnRzcC5oJyBdCistICBydHNwX2dlbl9zb3VyY2VzICs9IFtnbm9tZS5nZW5lcmF0ZV9naXIoZ3N0X3J0c3AsCisrICBydHNwX2dpciA9IGdub21lLmdlbmVyYXRlX2dpcihnc3RfcnRzcCwKKyAgICAgc291cmNlcyA6IHJ0c3Bfc291cmNlcyArIHJ0c3BfaGVhZGVycyArIFtnc3RydHNwX2NdICsgW2dzdHJ0c3BfaF0sCisgICAgIG5hbWVzcGFjZSA6ICdHc3RSdHNwJywKKyAgICAgbnN2ZXJzaW9uIDogYXBpX3ZlcnNpb24sCitAQCAtNjUsNyArNjUsOCBAQCBpZiBidWlsZF9naXIKKyAgICAgaW5zdGFsbCA6IHRydWUsCisgICAgIGV4dHJhX2FyZ3MgOiBnc3RfZ2lyX2V4dHJhX2FyZ3MsCisgICAgIGRlcGVuZGVuY2llcyA6IGdzdHJ0c3BfZGVwcyArIFtzZHBfZGVwXQorLSAgKV0KKysgICkKKysgIHJ0c3BfZ2VuX3NvdXJjZXMgKz0gW3J0c3BfZ2lyXQorIGVuZGlmCisgCisgcnRzcF9kZXAgPSBkZWNsYXJlX2RlcGVuZGVuY3kobGlua193aXRoIDogZ3N0X3J0c3AsCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3NkcC9tZXNvbi5idWlsZCBiL2dzdC1saWJzL2dzdC9zZHAvbWVzb24uYnVpbGQKK2luZGV4IDYyYzE4YjczMi4uMjRjZGI1MjkzIDEwMDY0NAorLS0tIGEvZ3N0LWxpYnMvZ3N0L3NkcC9tZXNvbi5idWlsZAorKysrIGIvZ3N0LWxpYnMvZ3N0L3NkcC9tZXNvbi5idWlsZAorQEAgLTIzLDcgKzIzLDcgQEAgZ3N0c2RwID0gbGlicmFyeSgnZ3N0c2RwLUAwQCcuZm9ybWF0KGFwaV92ZXJzaW9uKSwKKyBzZHBfZ2VuX3NvdXJjZXMgID0gW10KKyBpZiBidWlsZF9naXIKKyAgIGdzdF9naXJfZXh0cmFfYXJncyA9IGdpcl9pbml0X3NlY3Rpb24gKyBbICctLWMtaW5jbHVkZT1nc3Qvc2RwL3NkcC5oJyBdCistICBzZHBfZ2VuX3NvdXJjZXMgKz0gW2dub21lLmdlbmVyYXRlX2dpcihnc3RzZHAsCisrICBzZHBfZ2lyID0gZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdHNkcCwKKyAgICAgc291cmNlcyA6IGdzdF9zZHBfc291cmNlcyArIGdzdF9zZHBfaGVhZGVycywKKyAgICAgbmFtZXNwYWNlIDogJ0dzdFNkcCcsCisgICAgIG5zdmVyc2lvbiA6IGFwaV92ZXJzaW9uLAorQEAgLTM0LDcgKzM0LDkgQEAgaWYgYnVpbGRfZ2lyCisgICAgIGluc3RhbGwgOiB0cnVlLAorICAgICBleHRyYV9hcmdzIDogZ3N0X2dpcl9leHRyYV9hcmdzLAorICAgICBkZXBlbmRlbmNpZXMgOiBydHNwX2RlcHMKKy0gICldCisrICApCisrCisrICBzZHBfZ2VuX3NvdXJjZXMgKz0gW3NkcF9naXJdCisgZW5kaWYKKyAKKyBzZHBfZGVwID0gZGVjbGFyZV9kZXBlbmRlbmN5KGxpbmtfd2l0aDogZ3N0c2RwLAorZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC90YWcvbWVzb24uYnVpbGQgYi9nc3QtbGlicy9nc3QvdGFnL21lc29uLmJ1aWxkCitpbmRleCAyN2U2NmZkNjMuLjVlYzM3MzkyYSAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC90YWcvbWVzb24uYnVpbGQKKysrKyBiL2dzdC1saWJzL2dzdC90YWcvbWVzb24uYnVpbGQKK0BAIC05Myw3ICs5Myw3IEBAIGdzdHRhZyA9IGxpYnJhcnkoJ2dzdHRhZy1AMEAnLmZvcm1hdChhcGlfdmVyc2lvbiksCisgCisgaWYgYnVpbGRfZ2lyCisgICBnc3RfZ2lyX2V4dHJhX2FyZ3MgPSBnaXJfaW5pdF9zZWN0aW9uICsgWyAnLS1jLWluY2x1ZGU9Z3N0L3RhZy90YWcuaCcgXQorLSAgdGFnX2dlbl9zb3VyY2VzICs9IFtnbm9tZS5nZW5lcmF0ZV9naXIoZ3N0dGFnLAorKyAgdGFnX2dpciA9IGdub21lLmdlbmVyYXRlX2dpcihnc3R0YWcsCisgICAgIHNvdXJjZXMgOiB0YWdfc291cmNlcyArIHRhZ19oZWFkZXJzICsgW2dzdHRhZ19oXSArIFtnc3R0YWdfY10sCisgICAgIG5hbWVzcGFjZSA6ICdHc3RUYWcnLAorICAgICBuc3ZlcnNpb24gOiBhcGlfdmVyc2lvbiwKK0BAIC0xMDQsNyArMTA0LDggQEAgaWYgYnVpbGRfZ2lyCisgICAgIGluc3RhbGwgOiB0cnVlLAorICAgICBleHRyYV9hcmdzIDogZ3N0X2dpcl9leHRyYV9hcmdzLAorICAgICBkZXBlbmRlbmNpZXMgOiB0YWdfZGVwcworLSAgKV0KKysgICkKKysgIHRhZ19nZW5fc291cmNlcyArPSBbdGFnX2dpcl0KKyBlbmRpZgorIAorIHRhZ19kZXAgPSBkZWNsYXJlX2RlcGVuZGVuY3kobGlua193aXRoOiBnc3R0YWcsCitkaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3ZpZGVvL21lc29uLmJ1aWxkIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL21lc29uLmJ1aWxkCitpbmRleCA1YjM1ZTE5NDMuLmJmNzdhYTE1NyAxMDA2NDQKKy0tLSBhL2dzdC1saWJzL2dzdC92aWRlby9tZXNvbi5idWlsZAorKysrIGIvZ3N0LWxpYnMvZ3N0L3ZpZGVvL21lc29uLmJ1aWxkCitAQCAtMTM4LDcgKzEzOCw3IEBAIGdzdHZpZGVvID0gbGlicmFyeSgnZ3N0dmlkZW8tQDBAJy5mb3JtYXQoYXBpX3ZlcnNpb24pLAorIAorIGlmIGJ1aWxkX2dpcgorICAgZ3N0X2dpcl9leHRyYV9hcmdzID0gZ2lyX2luaXRfc2VjdGlvbiArIFsgJy0tYy1pbmNsdWRlPWdzdC92aWRlby92aWRlby5oJyBdCistICB2aWRlb19nZW5fc291cmNlcyArPSBbZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdHZpZGVvLAorKyAgdmlkZW9fZ2lyID0gZ25vbWUuZ2VuZXJhdGVfZ2lyKGdzdHZpZGVvLAorICAgICBzb3VyY2VzIDogdmlkZW9fc291cmNlcyArIHZpZGVvX2hlYWRlcnMgKyBbZ3N0dmlkZW9fY10gKyBbZ3N0dmlkZW9faF0sCisgICAgIG5hbWVzcGFjZSA6ICdHc3RWaWRlbycsCisgICAgIG5zdmVyc2lvbiA6IGFwaV92ZXJzaW9uLAorQEAgLTE0OSw3ICsxNDksOCBAQCBpZiBidWlsZF9naXIKKyAgICAgaW5zdGFsbCA6IHRydWUsCisgICAgIGV4dHJhX2FyZ3MgOiBnc3RfZ2lyX2V4dHJhX2FyZ3MsCisgICAgIGRlcGVuZGVuY2llcyA6IGdzdHZpZGVvX2RlcHMKKy0gICldCisrICApCisrICB2aWRlb19nZW5fc291cmNlcyArPSBbdmlkZW9fZ2lyXQorIGVuZGlmCisgCisgdmlkZW9fZGVwID0gZGVjbGFyZV9kZXBlbmRlbmN5KGxpbmtfd2l0aCA6IGdzdHZpZGVvLAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDAzLXJpZmYtYWRkLW1pc3NpbmctaW5jbHVkZS1kaXJlY3Rvcmllcy13aGVuLWNhbGxpbmctaW4ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDMtcmlmZi1hZGQtbWlzc2luZy1pbmNsdWRlLWRpcmVjdG9yaWVzLXdoZW4tY2FsbGluZy1pbi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOThmZmRiMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDMtcmlmZi1hZGQtbWlzc2luZy1pbmNsdWRlLWRpcmVjdG9yaWVzLXdoZW4tY2FsbGluZy1pbi5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI2ICswLDAgQEAKLUZyb20gYjk3NjVlZmIxNjk2ZTNlMmU3OWYyOTU1Zjc1OWJlMTk5ZmUzNDg4MiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyNiBPY3QgMjAxNSAxNzoyOTozNyArMDIwMAotU3ViamVjdDogW1BBVENIXSByaWZmOiBhZGQgbWlzc2luZyBpbmNsdWRlIGRpcmVjdG9yaWVzIHdoZW4gY2FsbGluZwotIGludHJvc3BlY3Rpb24gc2Nhbm5lcgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcgW3JldmlldyBvbiBvZS1jb3JlIG1haWxsaXN0XQotU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci0KLS0tLQotIGdzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtIHwgMiArKwotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKykKLQotZGlmZiAtLWdpdCBhL2dzdC1saWJzL2dzdC9yaWZmL01ha2VmaWxlLmFtIGIvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KLWluZGV4IGM4YzU4OGEuLmMwOTY0NTMgMTAwNjQ0Ci0tLS0gYS9nc3QtbGlicy9nc3QvcmlmZi9NYWtlZmlsZS5hbQotKysrIGIvZ3N0LWxpYnMvZ3N0L3JpZmYvTWFrZWZpbGUuYW0KLUBAIC00MSw2ICs0MSw4IEBAIGxpYmdzdHJpZmZfQEdTVF9BUElfVkVSU0lPTkBfbGFfTERGTEFHUyA9ICQoR1NUX0xJQl9MREZMQUdTKSAkKEdTVF9BTExfTERGTEFHUykKLSAjCQktLXN0cmlwLXByZWZpeD1Hc3QgXAotICMJCS0td2Fybi1hbGwgXAotICMJCS0tYy1pbmNsdWRlICJnc3QvcmlmZi9yaWZmLmgiIFwKLSsjICAgICAgICAgICAgICAgLUkkKHRvcF9zcmNkaXIpL2dzdC1saWJzIFwKLSsjICAgICAgICAgICAgICAgLUkkKHRvcF9idWlsZGRpcikvZ3N0LWxpYnMgXAotICMJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKGJ1aWxkZGlyKS8uLi90YWcgXAotICMJCS0tYWRkLWluY2x1ZGUtcGF0aD0kKGJ1aWxkZGlyKS8uLi9hdWRpbyBcCi0gIwkJLS1hZGQtaW5jbHVkZS1wYXRoPSQoUEtHX0NPTkZJR19TWVNST09UX0RJUilgUEtHX0NPTkZJR19QQVRIPSIkKEdTVF9QS0dfQ09ORklHX1BBVEgpIiAkKFBLR19DT05GSUcpIC0tdmFyaWFibGU9Z2lyZGlyIGdzdHJlYW1lci1AR1NUX0FQSV9WRVJTSU9OQGAgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS8wMDA0LXJ0c3AtZHJvcC1pbmNvcnJlY3QtcmVmZXJlbmNlLXRvLWdzdHJlYW1lci1zZHAtaW4tTWEucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDQtcnRzcC1kcm9wLWluY29ycmVjdC1yZWZlcmVuY2UtdG8tZ3N0cmVhbWVyLXNkcC1pbi1NYS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTdhMGQ2OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlLzAwMDQtcnRzcC1kcm9wLWluY29ycmVjdC1yZWZlcmVuY2UtdG8tZ3N0cmVhbWVyLXNkcC1pbi1NYS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLUZyb20gNTNiNTg2ODQ5MWNmOTllZTc5NzE5MjM5NWRiZmViNjlkZjIzZWRkMiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotRGF0ZTogTW9uLCAyNiBPY3QgMjAxNSAxNzozMDoxNCArMDIwMAotU3ViamVjdDogW1BBVENIXSBydHNwOiBkcm9wIGluY29ycmVjdCByZWZlcmVuY2UgdG8gZ3N0cmVhbWVyLXNkcCBpbgotIE1ha2VmaWxlLmFtCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZyBbcmV2aWV3IG9uIG9lLWNvcmUgbWFpbGxpc3RdCi1TaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KLQotLS0tCi0gZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0gfCAxIC0KLSAxIGZpbGUgY2hhbmdlZCwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvZ3N0LWxpYnMvZ3N0L3J0c3AvTWFrZWZpbGUuYW0gYi9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQotaW5kZXggNzkwMjdjYi4uMjk4N2UyMyAxMDA2NDQKLS0tLSBhL2dzdC1saWJzL2dzdC9ydHNwL01ha2VmaWxlLmFtCi0rKysgYi9nc3QtbGlicy9nc3QvcnRzcC9NYWtlZmlsZS5hbQotQEAgLTgyLDcgKzgyLDYgQEAgR3N0UnRzcC1AR1NUX0FQSV9WRVJTSU9OQC5naXI6ICQoSU5UUk9TUEVDVElPTl9TQ0FOTkVSKSBsaWJnc3RydHNwLUBHU1RfQVBJX1ZFUlMKLSAJCS0tcGtnIGdpby0yLjAgXAotIAkJLS1wa2cgZ3N0cmVhbWVyLUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0tcGtnIGdzdHJlYW1lci1iYXNlLUBHU1RfQVBJX1ZFUlNJT05AIFwKLS0JCS0tcGtnIGdzdHJlYW1lci1zZHAtQEdTVF9BUElfVkVSU0lPTkAgXAotIAkJLS1wa2ctZXhwb3J0IGdzdHJlYW1lci1ydHNwLUBHU1RfQVBJX1ZFUlNJT05AIFwKLSAJCS0tYWRkLWluaXQtc2VjdGlvbj0iJChJTlRST1NQRUNUSU9OX0lOSVQpIiBcCi0gCQktLW91dHB1dCAkQCBcCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvbGluay13aXRoLWxpYnZjaG9zdGlmLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzNGY3YzIyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UvbGluay13aXRoLWxpYnZjaG9zdGlmLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSA5ODY2ZjUxZTVlMDkxM2YxZTQ1M2ViNTc0NjE4YmY3NDMyZjM4Y2I2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMTEgQXByIDIwMTggMTA6NDY6MzMgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkIC1sdmNob3N0aWYgdG8gbGluayB3aGVuIHVzaW5nIC1sRUdMIG9uIHJwaQotCi1UaGlzIGlzIHJlcXVpcmVkIGJlY2F1c2UgbGliRUdMIGZyb20gdXNlcmxhbmQgdXNlcyBzeWJvbHMKLWZyb20gdGhpcyBsaWJyYXJ5LgotCi1saWIvbGliRUdMLnNvLjEuMC4wICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTIxOiAwMDAwMDAwMCAgICAgMCBGVU5DICAgIEdMT0JBTCBERUZBVUxUICBVTkQgdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQKLSAgMTU1MjogMDAwMDAwMDAgICAgIDAgRlVOQyAgICBHTE9CQUwgREVGQVVMVCAgVU5EIHZjX2Rpc3BtYW54X2VsZW1lbnRfYWRkCi0KLVRoZXNlIHN5bWJvbHMgYXJlIHByb3ZpZGVkIGJ5IGxpYnZjaG9zdGlmIGFzIHNlZW4gYmVsb3cKLQotbGliL2xpYnZjaG9zdGlmLnNvCi0gICAyNTI6IDAwMDBiMTYxICAgMTkyIEZVTkMgICAgR0xPQkFMIERFRkFVTFQgICAgOSB2Y19kaXNwbWFueF9lbGVtZW50X2FkZAotICAgODA5OiAwMDAwYjE2MSAgIDE5MiBGVU5DICAgIEdMT0JBTCBERUZBVUxUICAgIDkgdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQKLQotV2l0aCB0aGlzIGV4cGxpY2l0IGxpbmssIHBsdWdpbnMgZmFpbCBkdXJpbmcgcnVudGltZQotCi0oZ3N0LXBsdWdpbi1zY2FubmVyOjU3MSk6IEdTdHJlYW1lci1XQVJOSU5HICoqOiBGYWlsZWQgdG8gbG9hZCBwbHVnaW4gJy91c3IvbGliL2dzdHJlYW1lci0xLjAvbGliZ3N0b214LnNvJzogRXJyb3IgcmVsb2NhdGluZyAvdXNyL2xpYi9saWJnc3RnbC0xLjAuc28uMDogdmNfZGlzcG1hbnhfZWxlbWVudF9hZGQ6IHN5bWJvbCBub3QgZm91bmQKLShnc3QtcGx1Z2luLXNjYW5uZXI6NTcxKTogR1N0cmVhbWVyLVdBUk5JTkcgKio6IEZhaWxlZCB0byBsb2FkIHBsdWdpbiAnL3Vzci9saWIvZ3N0cmVhbWVyLTEuMC9saWJnc3RvcGVuZ2wuc28nOiBFcnJvciByZWxvY2F0aW5nIC91c3IvbGliL2xpYmdzdGdsLTEuMC5zby4wOiB2Y19kaXNwbWFueF9lbGVtZW50X2FkZDogc3ltYm9sIG5vdCBmb3VuZAotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotLS0tCi0gbTQvZ3N0LWdsLm00IHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbTQvZ3N0LWdsLm00IGIvbTQvZ3N0LWdsLm00Ci1pbmRleCAxZTk3MjQwLi5hYjc3NzRjIDEwMDY0NAotLS0tIGEvbTQvZ3N0LWdsLm00Ci0rKysgYi9tNC9nc3QtZ2wubTQKLUBAIC0yNzUsNyArMjc1LDcgQEAgY2FzZSAkaG9zdCBpbgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBIQVZFX0VHTD15ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFWRV9HTEVTMj15ZXMKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgSEFWRV9FR0xfUlBJPXllcwotLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfTElCUz0iLWxiY21faG9zdCAtbHZjb3MgLWx2Y2hpcV9hcm0iCi0rICAgICAgICAgICAgICAgICAgICAgICAgICAgIEVHTF9MSUJTPSItbGJjbV9ob3N0IC1sdmNob3N0aWYgLWx2Y29zIC1sdmNoaXFfYXJtIgotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBFR0xfQ0ZMQUdTPSIiCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIEFDX0RFRklORShVU0VfRUdMX1JQSSwgWzFdLCBbVXNlIFJQaSBwbGF0Zm9ybV0pCi0gICAgICAgICAgICAgICAgICAgICAgICAgICBdKQotLS0gCi0yLjcuNAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL21ha2UtZ2lvX3VuaXhfMl8wLWRlcGVuZGVuY3ktY29uZmlndXJhYmxlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZS9tYWtlLWdpb191bml4XzJfMC1kZXBlbmRlbmN5LWNvbmZpZ3VyYWJsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjM5NTBiNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlL21ha2UtZ2lvX3VuaXhfMl8wLWRlcGVuZGVuY3ktY29uZmlndXJhYmxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotRnJvbSA3ZmZhNmUzZDAwZTFkOGEwNjBmM2Y0YzJiYjlhNzI2OTFhZjA1ZDc5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjAgSmFuIDIwMTYgMTM6MDA6MDAgLTA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbWFrZSBnaW9fdW5peF8yXzAgZGVwZW5kZW5jeSBjb25maWd1cmFibGUKLQotUHJpb3IgdG8gMS43LjEsIGdzdC1wbHVnaW5zLWJhc2UgYWNjZXB0ZWQgYSBjb25maWd1cmUgb3B0aW9uIHRvCi1kaXNhYmxlIGdpb191bml4XzJfMCwgaG93ZXZlciBpdCB3YXMgaW1wbGVtZW50ZWQgaW5jb3JyZWN0bHkgdXNpbmcKLUFHX0dTVF9DSEVDS19GRUFUVVJFLiBUaGF0IHdhcyBmaXhlZCBpbiAxLjcuMSBieSBtYWtpbmcgdGhlCi1kZXBlbmRlbmN5IHVuY29uZGl0aW9uYWwuCi0KLSAgaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcGx1Z2lucy1iYXNlL2NvbW1pdC8/aWQ9YWFkZWZlZmJhODhhZmU0YWNiZTY0NDU0NjUwZjI0ZTdjZTdjOGQ3MAotCi1UbyBtYWtlIGJ1aWxkcyBkZXRlcm1pbmlzdGljLCByZS1pbnN0YXRlIHN1cHBvcnQgZm9yCi0tLWRpc2FibGUtZ2lvX3VuaXhfMl8wLCBidXQgaW1wbGVtZW50IGl0IHVzaW5nIHRoZSBBQ19BUkdfRU5BQkxFCi1pbnN0ZWFkIG9mIEFHX0dTVF9DSEVDS19GRUFUVVJFLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW5kcmUgTWNDdXJkeSA8YXJtY2N1cmR5QGdtYWlsLmNvbT4KLQotLS0tCi0gY29uZmlndXJlLmFjIHwgNyArKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDcgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvY29uZmlndXJlLmFjIGIvY29uZmlndXJlLmFjCi1pbmRleCAxMjgwN2JjLi4zNWEwYmYzIDEwMDY0NAotLS0tIGEvY29uZmlndXJlLmFjCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC04MDYsOSArODA2LDE2IEBAIEFNX0NPTkRJVElPTkFMKEhBVkVfUE5HLCB0ZXN0ICJ4JEhBVkVfUE5HIiA9ICJ4eWVzIikKLSBBTV9DT05ESVRJT05BTChIQVZFX0pQRUcsIHRlc3QgIngkSEFWRV9KUEVHIiA9ICJ4eWVzIikKLSAKLSBkbmwgKioqIGdpby11bml4LTIuMCBmb3IgdGVzdHMvY2hlY2svcGlwZWxpbmVzL3RjcC5jICoqKgotK0FDX0FSR19FTkFCTEUoW2dpb191bml4XzJfMF0sCi0rICBbQVNfSEVMUF9TVFJJTkcoWy0tZGlzYWJsZS1naW9fdW5peF8yXzBdLFtkaXNhYmxlIHVzZSBvZiBnaW9fdW5peF8yXzBdKV0sCi0rICBbXSwKLSsgIFtlbmFibGVfZ2lvX3VuaXhfMl8wPXllc10pCi0rCi0raWYgdGVzdCAieCR7ZW5hYmxlX2dpb191bml4XzJfMH0iICE9ICJ4bm8iOyB0aGVuCi0gUEtHX0NIRUNLX01PRFVMRVMoR0lPX1VOSVhfMl8wLCBnaW8tdW5peC0yLjAgPj0gMi4yNCwKLSAgICAgSEFWRV9HSU9fVU5JWF8yXzA9InllcyIsCi0gICAgIEhBVkVfR0lPX1VOSVhfMl8wPSJubyIpCi0rZmkKLSBBTV9DT05ESVRJT05BTChVU0VfR0lPX1VOSVhfMl8wLCB0ZXN0ICJ4JEhBVkVfR0lPX1VOSVhfMl8wIiA9ICJ4eWVzIikKLSAKLSBkbmwgKioqIGZpbmFsaXplIENGTEFHUywgTERGTEFHUywgTElCUwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZV8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggY2I5OWZiYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDczICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jCi0KLUxJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDciCi0KLVNSQ19VUkkgPSAiIFwKLSAgICAgICAgICAgIGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtYmFzZS9nc3QtcGx1Z2lucy1iYXNlLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgICBmaWxlOi8vZ2V0LWNhcHMtZnJvbS1zcmMtcGFkLXdoZW4tcXVlcnktY2Fwcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMy1zc2FwYXJzZS1lbmhhbmNlLVNTQS10ZXh0LWxpbmVzLXBhcnNpbmcucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL21ha2UtZ2lvX3VuaXhfMl8wLWRlcGVuZGVuY3ktY29uZmlndXJhYmxlLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDItTWFrZWZpbGUuYW0tcHJlZml4LWNhbGxzLXRvLXBrZy1jb25maWctd2l0aC1QS0dfQ09ORi5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMy1yaWZmLWFkZC1taXNzaW5nLWluY2x1ZGUtZGlyZWN0b3JpZXMtd2hlbi1jYWxsaW5nLWluLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly8wMDA0LXJ0c3AtZHJvcC1pbmNvcnJlY3QtcmVmZXJlbmNlLXRvLWdzdHJlYW1lci1zZHAtaW4tTWEucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDUtdml2LWZiLU1ha2Utc3VyZS1jb25maWcuaC1pcy1pbmNsdWRlZC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwOS1nbGltYWdlc2luay1Eb3ducmFuay10by1tYXJnaW5hbC5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1nc3RyZWFtZXItZ2wucGMuaW4tZG9uLXQtYXBwZW5kLUdMX0NGTEFHUy10by1DRkxBR1MucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2xpbmstd2l0aC1saWJ2Y2hvc3RpZi5wYXRjaCBcCi0gICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYjVlYjA2NTFiYWI3MGJmMTcxNGYxMDNiZGQ2NmNlNDciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWMzY2M0ODk5MzNkMDU5NzA4N2M5YmM2YmEyNTFjOTM2OTNkNjQ1NTRiY2M1NjM1MzlhMDg0ZmEyZDVmY2IyYiIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0iCi0KLURFUEVORFMgKz0gImlzby1jb2RlcyB1dGlsLWxpbnV4IgotCi1pbmhlcml0IGdldHRleHQgZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLVBBQ0tBR0VTX0RZTkFNSUMgPSsgIl5saWJnc3QuKiIKLQotIyBvcGVuZ2wgcGFja2FnZWNvbmZpZyBmYWN0b3JlZCBvdXQgdG8gbWFrZSBpdCBlYXN5IGZvciBkaXN0cm9zCi0jIGFuZCBCU1AgbGF5ZXJzIHRvIHBpY2sgZWl0aGVyIChkZXNrdG9wKSBvcGVuZ2wsIGdsZXMyLCBvciBubyBHTAotUEFDS0FHRUNPTkZJR19HTCA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnZ2xlczIgZWdsJywgJycsIGQpfSIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCi0gICAgJHtHU1RSRUFNRVJfT1JDfSBcCi0gICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCi0gICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnYWxzYSB4MTEnLCBkKX0gXAotICAgIGdpby11bml4LTIuMCBqcGVnIG9nZyBwYW5nbyBwbmcgdGhlb3JhIHZvcmJpcyB6bGliIFwKLSAgICAke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3dheWxhbmQnLCAnd2F5bGFuZCBlZ2wnLCAnJywgZCl9IFwKLSIKLQotWDExREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSBsaWJzbSBsaWJ4cmVuZGVyIGxpYnh2IgotWDExRU5BQkxFT1BUUyA9ICItLWVuYWJsZS14IC0tZW5hYmxlLXh2aWRlbyAtLWVuYWJsZS14c2htIgotWDExRElTQUJMRU9QVFMgPSAiLS1kaXNhYmxlLXggLS1kaXNhYmxlLXh2aWRlbyAtLWRpc2FibGUteHNobSIKLQotUEFDS0FHRUNPTkZJR1thbHNhXSAgICAgICAgID0gIi0tZW5hYmxlLWFsc2EsLS1kaXNhYmxlLWFsc2EsYWxzYS1saWIiCi1QQUNLQUdFQ09ORklHW2NkcGFyYW5vaWFdICAgPSAiLS1lbmFibGUtY2RwYXJhbm9pYSwtLWRpc2FibGUtY2RwYXJhbm9pYSxjZHBhcmFub2lhIgotUEFDS0FHRUNPTkZJR1tlZ2xdICAgICAgICAgID0gIi0tZW5hYmxlLWVnbCwtLWRpc2FibGUtZWdsLHZpcnR1YWwvZWdsIgotUEFDS0FHRUNPTkZJR1tnYm1dICAgICAgICAgID0gIi0tZW5hYmxlLWdibSwtLWRpc2FibGUtZ2JtLHZpcnR1YWwvbGliZ2JtIGxpYmd1ZGV2IGxpYmRybSIKLVBBQ0tBR0VDT05GSUdbZ2lvLXVuaXgtMi4wXSA9ICItLWVuYWJsZS1naW9fdW5peF8yXzAsLS1kaXNhYmxlLWdpb191bml4XzJfMCxnbGliLTIuMCIKLVBBQ0tBR0VDT05GSUdbZ2xlczJdICAgICAgICA9ICItLWVuYWJsZS1nbGVzMiwtLWRpc2FibGUtZ2xlczIsdmlydHVhbC9saWJnbGVzMiIKLVBBQ0tBR0VDT05GSUdbaXZvcmJpc10gICAgICA9ICItLWVuYWJsZS1pdm9yYmlzLC0tZGlzYWJsZS1pdm9yYmlzLHRyZW1vciIKLVBBQ0tBR0VDT05GSUdbanBlZ10gICAgICAgICA9ICItLWVuYWJsZS1qcGVnLC0tZGlzYWJsZS1qcGVnLGpwZWciCi1QQUNLQUdFQ09ORklHW29nZ10gICAgICAgICAgPSAiLS1lbmFibGUtb2dnLC0tZGlzYWJsZS1vZ2csbGlib2dnIgotUEFDS0FHRUNPTkZJR1tvcGVuZ2xdICAgICAgID0gIi0tZW5hYmxlLW9wZW5nbCwtLWRpc2FibGUtb3BlbmdsLHZpcnR1YWwvbGliZ2wgbGliZ2x1IgotUEFDS0FHRUNPTkZJR1tvcHVzXSAgICAgICAgID0gIi0tZW5hYmxlLW9wdXMsLS1kaXNhYmxlLW9wdXMsbGlib3B1cyIKLVBBQ0tBR0VDT05GSUdbcGFuZ29dICAgICAgICA9ICItLWVuYWJsZS1wYW5nbywtLWRpc2FibGUtcGFuZ28scGFuZ28iCi1QQUNLQUdFQ09ORklHW3BuZ10gICAgICAgICAgPSAiLS1lbmFibGUtcG5nLC0tZGlzYWJsZS1wbmcsbGlicG5nIgotUEFDS0FHRUNPTkZJR1t0aGVvcmFdICAgICAgID0gIi0tZW5hYmxlLXRoZW9yYSwtLWRpc2FibGUtdGhlb3JhLGxpYnRoZW9yYSIKLVBBQ0tBR0VDT05GSUdbdmlzdWFsXSAgICAgICA9ICItLWVuYWJsZS1saWJ2aXN1YWwsLS1kaXNhYmxlLWxpYnZpc3VhbCxsaWJ2aXN1YWwiCi1QQUNLQUdFQ09ORklHW3ZvcmJpc10gICAgICAgPSAiLS1lbmFibGUtdm9yYmlzLC0tZGlzYWJsZS12b3JiaXMsbGlidm9yYmlzIgotUEFDS0FHRUNPTkZJR1t4MTFdICAgICAgICAgID0gIiR7WDExRU5BQkxFT1BUU30sJHtYMTFESVNBQkxFT1BUU30sJHtYMTFERVBFTkRTfSIKLVBBQ0tBR0VDT05GSUdbd2F5bGFuZF0gICAgICA9ICItLWVuYWJsZS13YXlsYW5kLC0tZGlzYWJsZS13YXlsYW5kLHdheWxhbmQtbmF0aXZlIHdheWxhbmQgd2F5bGFuZC1wcm90b2NvbHMgbGliZHJtIgotUEFDS0FHRUNPTkZJR1t6bGliXSAgICAgICAgID0gIi0tZW5hYmxlLXpsaWIsLS1kaXNhYmxlLXpsaWIsemxpYiIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLSR7TElCVn0vaW5jbHVkZS9nc3QvZ2wvZ3N0Z2xjb25maWcuaCIKLUZJTEVTXyR7TUxQUkVGSVh9bGliZ3N0dGFnLTEuMCArPSAiJHtkYXRhZGlyfS9nc3QtcGx1Z2lucy1iYXNlLzEuMC9saWNlbnNlLXRyYW5zbGF0aW9ucy5kaWN0IgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2dzdC1saWJzL2dzdC90YWcvLmxpYnM6JHtCfS9nc3QtbGlicy9nc3QvdmlkZW8vLmxpYnM6JHtCfS9nc3QtbGlicy9nc3QvYXVkaW8vLmxpYnM6JHtCfS9nc3QtbGlicy9nc3QvcnRwLy5saWJzOiR7Qn0vZ3N0LWxpYnMvZ3N0L2FsbG9jYXRvcnMvLmxpYnMiCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2VfMS4xNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY1NjNiNmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlXzEuMTYuMi5iYgpAQCAtMCwwICsxLDk5IEBACityZXF1aXJlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWNvbW1vbi5pbmMKKworTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyIKKworU1JDX1VSSSA9ICIgXAorICAgICAgICAgICAgaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy9nc3QtcGx1Z2lucy1iYXNlL2dzdC1wbHVnaW5zLWJhc2UtJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgIGZpbGU6Ly9nZXQtY2Fwcy1mcm9tLXNyYy1wYWQtd2hlbi1xdWVyeS1jYXBzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDItbWVzb24tQWRkLXZhcmlhYmxlcy1mb3ItZ2lyLWZpbGVzLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAzLXNzYXBhcnNlLWVuaGFuY2UtU1NBLXRleHQtbGluZXMtcGFyc2luZy5wYXRjaCBcCisgICAgICAgICAgICBmaWxlOi8vMDAwNS12aXYtZmItTWFrZS1zdXJlLWNvbmZpZy5oLWlzLWluY2x1ZGVkLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDA5LWdsaW1hZ2VzaW5rLURvd25yYW5rLXRvLW1hcmdpbmFsLnBhdGNoIFwKKyAgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIzZmRiMzI4MjM1MzU3OTlhNzQ4YzFmYzE0Zjk3OGUyYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJiMTNlNzNlMmZlNzRhNDE2NjU1MmY5NTc3YzNkY2IyNGJlZDA3NzAyMWI5YzdmYTYwMGQ5MTBlYzY5ODc4MTZhIgorCitTID0gIiR7V09SS0RJUn0vZ3N0LXBsdWdpbnMtYmFzZS0ke1BWfSIKKworREVQRU5EUyArPSAiaXNvLWNvZGVzIHV0aWwtbGludXggemxpYiIKKworaW5oZXJpdCBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYworCitQQUNLQUdFU19EWU5BTUlDID0rICJebGliZ3N0LioiCisKKyMgb3BlbmdsIHBhY2thZ2Vjb25maWcgZmFjdG9yZWQgb3V0IHRvIG1ha2UgaXQgZWFzeSBmb3IgZGlzdHJvcworIyBhbmQgQlNQIGxheWVycyB0byBjaG9vc2UgT3BlbkdMIEFQSXMvcGxhdGZvcm1zL3dpbmRvdyBzeXN0ZW1zCitQQUNLQUdFQ09ORklHX0dMID89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsICdnbGVzMiBlZ2wnLCAnJywgZCl9IgorCitQQUNLQUdFQ09ORklHID8/PSAiIFwKKyAgICAke0dTVFJFQU1FUl9PUkN9IFwKKyAgICAke1BBQ0tBR0VDT05GSUdfR0x9IFwKKyAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdhbHNhIHgxMScsIGQpfSBcCisgICAganBlZyBvZ2cgcGFuZ28gcG5nIHRoZW9yYSB2b3JiaXMgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCcsICd3YXlsYW5kIGVnbCcsICcnLCBkKX0gXAorIgorCitPUEVOR0xfQVBJUyA9ICdvcGVuZ2wgZ2xlczInCitPUEVOR0xfUExBVEZPUk1TID0gJ2VnbCcKKworWDExREVQRU5EUyA9ICJ2aXJ0dWFsL2xpYngxMSBsaWJzbSBsaWJ4cmVuZGVyIGxpYnh2IgorWDExRU5BQkxFT1BUUyA9ICItRHgxMT1lbmFibGVkIC1EeHZpZGVvPWVuYWJsZWQgLUR4c2htPWVuYWJsZWQiCitYMTFESVNBQkxFT1BUUyA9ICItRHgxMT1kaXNhYmxlZCAtRHh2aWRlbz1kaXNhYmxlZCAtRHhzaG09ZGlzYWJsZWQiCisKK1BBQ0tBR0VDT05GSUdbYWxzYV0gICAgICAgICA9ICItRGFsc2E9ZW5hYmxlZCwtRGFsc2E9ZGlzYWJsZWQsYWxzYS1saWIiCitQQUNLQUdFQ09ORklHW2NkcGFyYW5vaWFdICAgPSAiLURjZHBhcmFub2lhPWVuYWJsZWQsLURjZHBhcmFub2lhPWRpc2FibGVkLGNkcGFyYW5vaWEiCitQQUNLQUdFQ09ORklHW2pwZWddICAgICAgICAgPSAiLURnbC1qcGVnPWVuYWJsZWQsLURnbC1qcGVnPWRpc2FibGVkLGpwZWciCitQQUNLQUdFQ09ORklHW29nZ10gICAgICAgICAgPSAiLURvZ2c9ZW5hYmxlZCwtRG9nZz1kaXNhYmxlZCxsaWJvZ2ciCitQQUNLQUdFQ09ORklHW29wdXNdICAgICAgICAgPSAiLURvcHVzPWVuYWJsZWQsLURvcHVzPWRpc2FibGVkLGxpYm9wdXMiCitQQUNLQUdFQ09ORklHW3BhbmdvXSAgICAgICAgPSAiLURwYW5nbz1lbmFibGVkLC1EcGFuZ289ZGlzYWJsZWQscGFuZ28iCitQQUNLQUdFQ09ORklHW3BuZ10gICAgICAgICAgPSAiLURnbC1wbmc9ZW5hYmxlZCwtRGdsLXBuZz1kaXNhYmxlZCxsaWJwbmciCitQQUNLQUdFQ09ORklHW3RoZW9yYV0gICAgICAgPSAiLUR0aGVvcmE9ZW5hYmxlZCwtRHRoZW9yYT1kaXNhYmxlZCxsaWJ0aGVvcmEiCitQQUNLQUdFQ09ORklHW3RyZW1vcl0gICAgICAgPSAiLUR0cmVtb3I9ZW5hYmxlZCwtRHRyZW1vcj1kaXNhYmxlZCx0cmVtb3IiCitQQUNLQUdFQ09ORklHW3Zpc3VhbF0gICAgICAgPSAiLURsaWJ2aXN1YWw9ZW5hYmxlZCwtRGxpYnZpc3VhbD1kaXNhYmxlZCxsaWJ2aXN1YWwiCitQQUNLQUdFQ09ORklHW3ZvcmJpc10gICAgICAgPSAiLUR2b3JiaXM9ZW5hYmxlZCwtRHZvcmJpcz1kaXNhYmxlZCxsaWJ2b3JiaXMiCitQQUNLQUdFQ09ORklHW3gxMV0gICAgICAgICAgPSAiJHtYMTFFTkFCTEVPUFRTfSwke1gxMURJU0FCTEVPUFRTfSwke1gxMURFUEVORFN9IgorCisjIE9wZW5HTCBBUEkgcGFja2FnZWNvbmZpZ3MKK1BBQ0tBR0VDT05GSUdbb3BlbmdsXSAgICAgICA9ICIsLHZpcnR1YWwvbGliZ2wgbGliZ2x1IgorUEFDS0FHRUNPTkZJR1tnbGVzMl0gICAgICAgID0gIiwsdmlydHVhbC9saWJnbGVzMiIKKworIyBPcGVuR0wgcGxhdGZvcm0gcGFja2FnZWNvbmZpZ3MKK1BBQ0tBR0VDT05GSUdbZWdsXSAgICAgICAgICA9ICIsLHZpcnR1YWwvZWdsIgorCisjIE9wZW5HTCB3aW5kb3cgc3lzdGVtcyAoZXhjZXB0IGZvciBYMTEpCitQQUNLQUdFQ09ORklHW2dibV0gICAgICAgICAgPSAiLCx2aXJ0dWFsL2xpYmdibSBsaWJndWRldiBsaWJkcm0iCitQQUNLQUdFQ09ORklHW3dheWxhbmRdICAgICAgPSAiLCx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIGxpYmRybSIKK1BBQ0tBR0VDT05GSUdbZGlzcG1hbnhdICAgICA9ICIsLHZpcnR1YWwvbGlib214aWwiCisKK09QRU5HTF9XSU5TWVNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3gxMScsICcgeDExJywgJycsIGQpfSIKK09QRU5HTF9XSU5TWVNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ2dibScsICcgZ2JtJywgJycsIGQpfSIKK09QRU5HTF9XSU5TWVNfYXBwZW5kID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ3dheWxhbmQnLCAnIHdheWxhbmQnLCAnJywgZCl9IgorT1BFTkdMX1dJTlNZU19hcHBlbmQgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BBQ0tBR0VDT05GSUcnLCAnZGlzcG1hbngnLCAnIGRpc3BtYW54JywgJycsIGQpfSIKKworRVhUUkFfT0VNRVNPTiArPSAiIFwKKyAgICAtRGdsLWdyYXBoZW5lPWRpc2FibGVkIFwKKyAgICAke0BnZXRfb3BlbmdsX2NtZGxpbmVfbGlzdCgnZ2xfYXBpJywgZC5nZXRWYXIoJ09QRU5HTF9BUElTJyksIGQpfSBcCisgICAgJHtAZ2V0X29wZW5nbF9jbWRsaW5lX2xpc3QoJ2dsX3BsYXRmb3JtJywgZC5nZXRWYXIoJ09QRU5HTF9QTEFURk9STVMnKSwgZCl9IFwKKyAgICAke0BnZXRfb3BlbmdsX2NtZGxpbmVfbGlzdCgnZ2xfd2luc3lzJywgZC5nZXRWYXIoJ09QRU5HTF9XSU5TWVMnKSwgZCl9IFwKKyIKKworR1RLRE9DX01FU09OX09QVElPTiA9ICJndGtfZG9jIgorR1RLRE9DX01FU09OX0VOQUJMRV9GTEFHID0gImVuYWJsZWQiCitHVEtET0NfTUVTT05fRElTQUJMRV9GTEFHID0gImRpc2FibGVkIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItMS4wL2luY2x1ZGUvZ3N0L2dsL2dzdGdsY29uZmlnLmgiCitGSUxFU18ke01MUFJFRklYfWxpYmdzdHRhZy0xLjAgKz0gIiR7ZGF0YWRpcn0vZ3N0LXBsdWdpbnMtYmFzZS8xLjAvbGljZW5zZS10cmFuc2xhdGlvbnMuZGljdCIKKworZGVmIGdldF9vcGVuZ2xfY21kbGluZV9saXN0KHN3aXRjaF9uYW1lLCBvcHRpb25zLCBkKToKKyAgICBzZWxlY3RlZF9vcHRpb25zID0gW10KKyAgICBpZiBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ29wZW5nbCcsIFRydWUsIEZhbHNlLCBkKToKKyAgICAgICAgZm9yIG9wdGlvbiBpbiBvcHRpb25zLnNwbGl0KCk6CisgICAgICAgICAgICBpZiBiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsIG9wdGlvbiwgVHJ1ZSwgRmFsc2UsIGQpOgorICAgICAgICAgICAgICAgIHNlbGVjdGVkX29wdGlvbnMgKz0gW29wdGlvbl0KKyAgICBpZiBzZWxlY3RlZF9vcHRpb25zOgorICAgICAgICByZXR1cm4gJy1EJyArIHN3aXRjaF9uYW1lICsgJz0nICsgJywnLmpvaW4oc2VsZWN0ZWRfb3B0aW9ucykKKyAgICBlbHNlOgorICAgICAgICByZXR1cm4gJycKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWNvbW1vbi5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1jb21tb24uaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRiYTk2ZTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1jb21tb24uaW5jCkBAIC0wLDAgKzEsNTAgQEAKKyMgVGhpcyAuaW5jIGZpbGUgY29udGFpbnMgdGhlIGNvbW1vbiBzZXR1cCBmb3IgdGhlIGdzdHJlYW1lcjEuMC1wbHVnaW5zLSoKKyMgcGx1Z2luIHNldCByZWNpcGVzLgorCisjIFNVTU1BUlkgaXMgc2V0IGluIHRoZSBhY3R1YWwgLmJiIHJlY2lwZXMKK0hPTUVQQUdFID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy8iCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1Hc3RyZWFtZXIiCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0RFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdsaWItMi4wLW5hdGl2ZSIKKworaW5oZXJpdCBnZXR0ZXh0IG1lc29uIHBrZ2NvbmZpZyB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1wYWNrYWdpbmcuaW5jCisKKyMgT3JjIGVuYWJsZXMgcnVudGltZSBKSVQgY29tcGlsYXRpb24gb2YgZGF0YSBwcm9jZXNzaW5nIHJvdXRpbmVzIGZyb20gT3JjCisjIGJ5dGVjb2RlIHRvIFNJTUQgaW5zdHJ1Y3Rpb25zIGZvciB2YXJpb3VzIGFyY2hpdGVjdHVyZXMgKGN1cnJlbnRseSBTU0UsIE1NWCwKKyMgTUlQUywgQWx0aXZlYyBhbmQgTkVPTiBhcmUgc3VwcG9ydGVkKS4KKyMgVGhpcyB2YWx1ZSBpcyB1c2VkIGluIHRoZSBQQUNLQUdFQ09ORklHIHZhbHVlcyBmb3IgZWFjaCBwbHVnaW4gc2V0IHJlY2lwZS4KKyMgQnkgbW9kaWZ5aW5nIGl0LCBPcmMgY2FuIGJlIGVuYWJsZWQvZGlzYWJsZWQgaW4gYWxsIG9mIHRoZXNlIHJlY2lwZXMgYXQgb25jZS4KK0dTVFJFQU1FUl9PUkMgPz0gIm9yYyIKKyMgd29ya2Fyb3VuZCB0byBkaXNhYmxlIG9yYyBvbiBtaXBzIHRvIGZpeCB0aGUgYnVpbGQgZmFpbHVyZQorIyB7c3RhbmRhcmQgaW5wdXR9OiBBc3NlbWJsZXIgbWVzc2FnZXM6CisjIHtzdGFuZGFyZCBpbnB1dH06NDY1ODc6IEVycm9yOiBicmFuY2ggb3V0IG9mIHJhbmdlCitHU1RSRUFNRVJfT1JDX21pcHMgPSAiIgorUEFDS0FHRUNPTkZJR1tvcmNdID0gIi1Eb3JjPWVuYWJsZWQsLURvcmM9ZGlzYWJsZWQsb3JjIG9yYy1uYXRpdmUiCisKKyMgVE9ETzogcHV0IHRoaXMgaW4gYSBnZXR0ZXh0LmJiY2xhc3MgcGF0Y2ggKHdpdGggdmFyaWFibGVzIHRvIGFsbG93IGZvcgorIyBjb25maWd1cmluZyB0aGUgb3B0aW9uIG5hbWUgYW5kIHRoZSBlbmFibGVkL2Rpc2FibGVkIHZhbHVlcykuCitkZWYgZ2V0dGV4dF9vZW1lc29uKGQpOgorICAgIGlmIGQuZ2V0VmFyKCdVU0VfTkxTJykgPT0gJ25vJzoKKyAgICAgICAgcmV0dXJuICctRG5scz1kaXNhYmxlZCcKKyAgICAjIFJlbW92ZSB0aGUgTkxTIGJpdHMgaWYgVVNFX05MUyBpcyBubyBvciBJTkhJQklUX0RFRkFVTFRfREVQUyBpcyBzZXQKKyAgICBpZiBkLmdldFZhcignSU5ISUJJVF9ERUZBVUxUX0RFUFMnKSBhbmQgbm90IG9lLnV0aWxzLmluaGVyaXRzKGQsICdjcm9zcy1jYW5hZGlhbicpOgorICAgICAgICByZXR1cm4gJy1EbmxzPWRpc2FibGVkJworICAgIHJldHVybiAnLURubHM9ZW5hYmxlZCcKKworIyBOb3QgYWxsIHBsdWdpbiBzZXRzIGNvbnRhaW4gZXhhbXBsZXMsIHNvIHRoZSAtRGV4YW1wbGVzCisjIG9wdGlvbiBuZWVkcyB0byBiZSBhZGRlZCBjb25kaXRpb25hbGx5LgorR1NUX1BMVUdJTl9TRVRfSEFTX0VYQU1QTEVTID89ICIxIgorCitFWFRSQV9PRU1FU09OICs9ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHU1RfUExVR0lOX1NFVF9IQVNfRVhBTVBMRVMnLCAnMScsICctRGV4YW1wbGVzPWRpc2FibGVkJywgJycsIGQpfSBcCisgICAgJHtAZ2V0dGV4dF9vZW1lc29uKGQpfSBcCisiCisKK0dJUl9NRVNPTl9FTkFCTEVfRkxBRyA9ICJlbmFibGVkIgorR0lSX01FU09OX0RJU0FCTEVfRkxBRyA9ICJkaXNhYmxlZCIKKworIyBEeW5hbWljYWxseSBnZW5lcmF0ZSBwYWNrYWdlcyBmb3IgYWxsIGVuYWJsZWQgcGx1Z2lucworUEFDS0FHRVNfRFlOQU1JQyA9ICJeJHtQTn0tLioiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtcW1sZ2wtZW5zdXJlLVF0LWRlZmluZXMtR0xzeW5jLXRvLWZpeC1jb21waWxlLW9uLXNvbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS1xbWxnbC1lbnN1cmUtUXQtZGVmaW5lcy1HTHN5bmMtdG8tZml4LWNvbXBpbGUtb24tc29tLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEzNjg0ODcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtcW1sZ2wtZW5zdXJlLVF0LWRlZmluZXMtR0xzeW5jLXRvLWZpeC1jb21waWxlLW9uLXNvbS5wYXRjaApAQCAtMCwwICsxLDcwIEBACitGcm9tIDNlMGQ1NTc3NDQ0YjMyNTc5YmRmNWI2OWQ3MjBhMzIyMzIyZmY3YmMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNaWxpYW4gV29sZmYgPG1pbGlhbi53b2xmZkBrZGFiLmNvbT4KK0RhdGU6IFR1ZSwgMjYgTm92IDIwMTkgMTU6MDg6MjAgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gcW1sZ2w6IGVuc3VyZSBRdCBkZWZpbmVzIEdMc3luYyB0byBmaXggY29tcGlsZSBvbiBzb21lIHBsYXRmb3JtcworTUlNRS1WZXJzaW9uOiAxLjAKK0NvbnRlbnQtVHlwZTogdGV4dC9wbGFpbjsgY2hhcnNldD1VVEYtOAorQ29udGVudC1UcmFuc2Zlci1FbmNvZGluZzogOGJpdAorCitCeSBleHBsaWN0bHkgaW5jbHVkaW5nIFF0R3VpL3FvcGVuZ2wuaCB3ZSBmb3JjZSB0aGUgY29kZSBwYXRoIHRoYXQKK2RlZmluZXMgR0xzeW5jIGluIHRoZSBRdC1zcGVjaWZpYyB3YXkuIFdpdGhvdXQgdGhhdCwgc29tZSBwbGF0Zm9ybXMKK2ZhaWxlZCB0byBjb21waWxlIHRoZSBxbWxnbCBwbHVnaW4sIHNpbmNlIG5laXRoZXIgUXQgbm9yIGdzdHJlYW1lcgorZGVmaW5lZCBHTHN5bmMgdGhlbiwgbGVhZGluZyB0byBlLmcuOgorCitgYGAKK21ha2VbNF06IEVudGVyaW5nIGRpcmVjdG9yeSAnLy4uLi9nc3QtcGx1Z2lucy1nb29kLTEuMTYuMS9leHQvcXQnCisgIENYWCAgICAgIGxpYmdzdHFtbGdsX2xhLXF0aXRlbS5sbworSW4gZmlsZSBpbmNsdWRlZCBmcm9tIGdzdHF0Z2wuaDozMiwKKyAgICAgICAgICAgICAgICAgZnJvbSBxdGl0ZW0uaDoyNywKKyAgICAgICAgICAgICAgICAgZnJvbSBxdGl0ZW0uY2M6Mjg6CisvLi4uL3Vzci9pbmNsdWRlL2dzdHJlYW1lci0xLjAvCitnc3QvZ2wvZ3N0Z2xmdW5jcy5oOjkzOjE3OiBlcnJvcjogZXhwZWN0ZWQgaWRlbnRpZmllciBiZWZvcmUg4oCYKuKAmSB0b2tlbgorICAgcmV0IChHU1RHTEFQSSAqbmFtZSkgYXJnczsKKyAgICAgICAgICAgICAgICAgXgorLy4uLi91c3IvaW5jbHVkZS9nc3RyZWFtZXItMS4wLworZ3N0L2dsL2dscHJvdG90eXBlcy9zeW5jLmg6Mjc6MTogbm90ZTogaW4gZXhwYW5zaW9uIG9mIG1hY3JvCivigJhHU1RfR0xfRVhUX0ZVTkNUSU9O4oCZCisgR1NUX0dMX0VYVF9GVU5DVElPTiAoR0xzeW5jLCBGZW5jZVN5bmMsCisgXn5+fn5+fn5+fn5+fn5+fn5+fgorYGBgCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcGx1Z2lucy1nb29kL2NvbW1pdC8zZTBkNTU3NzQ0NGIzMjU3OWJkZjViNjlkNzIwYTMyMjMyMmZmN2JjXQorLS0tCisgZXh0L3F0L2dzdHF0Z2wuaCB8IDE4ICsrKysrKysrKysrLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCA3IGRlbGV0aW9ucygtKQorCistLS0gYS9leHQvcXQvZ3N0cXRnbC5oCisrKysgYi9leHQvcXQvZ3N0cXRnbC5oCitAQCAtMjIsMTQgKzIyLDcgQEAKKyAjaW5jbHVkZSA8UXRHdWkvcXRndWktY29uZmlnLmg+CisgI2VuZGlmCisgCistLyogcXQgdXNlcyB0aGUgc2FtZSB0cmljayBhcyB1cyB0byB0eXBlZGVmIEdMc3luYyBvbiBHTEVTMiBidXQgdG8gYSBkaWZmZXJlbnQKKy0gKiB0eXBlIHdoaWNoIGNvbmZ1c2VzIHRoZSBwcmVwcm9jZXNzb3IuIEluc3RlYWQgb2YgdHJ5aW5nIHRvIHJlY29uY2lsZSB0aGUKKy0gKiB0d28sIHdlIGluc3RlYWQgdXNlIHRoZSBHTHN5bmMgZGVmaW5pdGlvbiBmcm9tIFF0IGZyb20gYWJvdmUsIGFuZCBlbnN1cmUKKy0gKiB0aGF0IHdlIGRvbid0IHR5cGVkZWYgR0xzeW5jIGluIGdzdGdsZnVuY3MuaCAqLworICNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xjb25maWcuaD4KKy0jdW5kZWYgR1NUX0dMX0hBVkVfR0xTWU5DCistI2RlZmluZSBHU1RfR0xfSEFWRV9HTFNZTkMgMQorLSNpbmNsdWRlIDxnc3QvZ2wvZ3N0Z2xmdW5jcy5oPgorIAorIC8qIFRoZSBnbGV4dC5oIGd1YXJkIHdhcyByZW5hbWVkIGluIDIwMTgsIGJ1dCBzb21lIHNvZnR3YXJlIHdoaWNoCisgICogaW5jbHVkZXMgdGhlaXIgb3duIGNvcHkgb2YgdGhlIEdMIGhlYWRlcnMgKHN1Y2ggYXMgcXQpIG1pZ2h0IGhhdmUKK0BAIC00Niw2ICszOSwxNyBAQAorICNlbmRpZgorICNlbmRpZgorIAorKy8qIHB1bGxzIGluIEdMc3luYywgc2VlIGJlbG93ICovCisrI2luY2x1ZGUgPFF0R3VpL3FvcGVuZ2wuaD4KKysKKysvKiBxdCB1c2VzIHRoZSBzYW1lIHRyaWNrIGFzIHVzIHRvIHR5cGVkZWYgR0xzeW5jIG9uIEdMRVMyIGJ1dCB0byBhIGRpZmZlcmVudAorKyAqIHR5cGUgd2hpY2ggY29uZnVzZXMgdGhlIHByZXByb2Nlc3Nvci4gSW5zdGVhZCBvZiB0cnlpbmcgdG8gcmVjb25jaWxlIHRoZQorKyAqIHR3bywgd2UgaW5zdGVhZCB1c2UgdGhlIEdMc3luYyBkZWZpbml0aW9uIGZyb20gUXQgZnJvbSBhYm92ZSwgYW5kIGVuc3VyZQorKyAqIHRoYXQgd2UgZG9uJ3QgdHlwZWRlZiBHTHN5bmMgaW4gZ3N0Z2xmdW5jcy5oICovCisrI3VuZGVmIEdTVF9HTF9IQVZFX0dMU1lOQworKyNkZWZpbmUgR1NUX0dMX0hBVkVfR0xTWU5DIDEKKysjaW5jbHVkZSA8Z3N0L2dsL2dzdGdsZnVuY3MuaD4KKysKKyAjaWYgZGVmaW5lZChRVF9PUEVOR0xfRVNfMikKKyAjaW5jbHVkZSA8UXRHdWkvUU9wZW5HTENvbnRleHQ+CisgI2luY2x1ZGUgPFF0R3VpL1FPcGVuR0xGdW5jdGlvbnM+CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtcXQtaW5jbHVkZS1leHQtcXQtZ3N0cXRnbC5oLWluc3RlYWQtb2YtZ3N0LWdsLWdzdGdsZi5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMDAwMS1xdC1pbmNsdWRlLWV4dC1xdC1nc3RxdGdsLmgtaW5zdGVhZC1vZi1nc3QtZ2wtZ3N0Z2xmLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNkNDIzMTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzAwMDEtcXQtaW5jbHVkZS1leHQtcXQtZ3N0cXRnbC5oLWluc3RlYWQtb2YtZ3N0LWdsLWdzdGdsZi5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIGQwODIzNGE2NTliZWMxZmQ1Yzk4NGZlZGVmYmViODE5MmFmMDc4MzkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorRGF0ZTogVHVlLCAzMSBNYXIgMjAyMCAyMToyMzoyOCAtMDcwMAorU3ViamVjdDogW1BBVENIXSBxdDogaW5jbHVkZSBleHQvcXQvZ3N0cXRnbC5oIGluc3RlYWQgb2YgZ3N0L2dsL2dzdGdsZnVuY3MuaAorCitnc3QvZ2wvZ3N0Z2xmdW5jcy5oIGlzIGluY2x1ZGVkIHZpYSBleHQvcXQvZ3N0cXRnbC5oIHdoaWNoIGhhcyBsb2dpYyB0bworcHJlZmVyIHF0IGhlYWRlcnMgZGVmaW5pdGlvbnMgZm9yIEdMc3luYworCitUaGlzIGhlbHBzIGluIGZpeGluZyBidWlsZCBlcnJvcnMgbGlrZSBiZWxvdworCisvbW50L2IveW9lL2J1aWxkL3RtcC93b3JrL2NvcnRleGE3dDJoZi1uZW9uLXZmcHY0LXlvZS1saW51eC1nbnVlYWJpL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMS4xNi4yLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL1F0R3VpL3FvcGVuZ2xlczJleHQuaDoyNDoyNjogZXJyb3I6IGNvbmZsaWN0aW5nIGRlY2xhcmF0aW9uICd0eXBlZGVmIHN0cnVjdCBfX0dMc3luYyogR0xzeW5jJworICAgMjQgfCB0eXBlZGVmIHN0cnVjdCBfX0dMc3luYyAqR0xzeW5jOworICAgICAgfCAgICAgICAgICAgICAgICAgICAgICAgICAgXn5+fn5+CitJbiBmaWxlIGluY2x1ZGVkIGZyb20gL21udC9iL3lvZS9idWlsZC90bXAvd29yay9jb3J0ZXhhN3QyaGYtbmVvbi12ZnB2NC15b2UtbGludXgtZ251ZWFiaS9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kLzEuMTYuMi1yMC9yZWNpcGUtc3lzcm9vdC91c3IvaW5jbHVkZS9nc3RyZWFtZXItMS4wL2dzdC9nbC9nc3RnbGZ1bmNzLmg6ODQsCisgICAgICAgICAgICAgICAgIGZyb20gLi4vZ3N0LXBsdWdpbnMtZ29vZC0xLjE2LjIvZXh0L3F0L2dzdHFzZ3RleHR1cmUuY2M6MzA6CisvbW50L2IveW9lL2J1aWxkL3RtcC93b3JrL2NvcnRleGE3dDJoZi1uZW9uLXZmcHY0LXlvZS1saW51eC1nbnVlYWJpL2dzdHJlYW1lcjEuMC1wbHVnaW5zLWdvb2QvMS4xNi4yLXIwL3JlY2lwZS1zeXNyb290L3Vzci9pbmNsdWRlL2dzdHJlYW1lci0xLjAvZ3N0L2dsL2dscHJvdG90eXBlcy9nc3RnbF9jb21wYXQuaDo0MDoxODogbm90ZTogcHJldmlvdXMgZGVjbGFyYXRpb24gYXMgJ3R5cGVkZWYgdm9pZCogR0xzeW5jCisnCisgICA0MCB8IHR5cGVkZWYgZ3BvaW50ZXIgR0xzeW5jOworICAgICAgfCAgICAgICAgICAgICAgICAgIF5+fn5+fgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBleHQvcXQvZ3N0cXNndGV4dHVyZS5jYyB8IDIgKy0KKyBleHQvcXQvcXR3aW5kb3cuY2MgICAgICB8IDIgKy0KKyAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2V4dC9xdC9nc3Rxc2d0ZXh0dXJlLmNjIGIvZXh0L3F0L2dzdHFzZ3RleHR1cmUuY2MKK2luZGV4IDJiMzE0ZTAuLjEyYjE1ZGQgMTAwNjQ0CistLS0gYS9leHQvcXQvZ3N0cXNndGV4dHVyZS5jYworKysrIGIvZXh0L3F0L2dzdHFzZ3RleHR1cmUuY2MKK0BAIC0yNyw3ICsyNyw3IEBACisgCisgI2luY2x1ZGUgPGdzdC92aWRlby92aWRlby5oPgorICNpbmNsdWRlIDxnc3QvZ2wvZ2wuaD4KKy0jaW5jbHVkZSA8Z3N0L2dsL2dzdGdsZnVuY3MuaD4KKysjaW5jbHVkZSA8ZXh0L3F0L2dzdHF0Z2wuaD4KKyAjaW5jbHVkZSAiZ3N0cXNndGV4dHVyZS5oIgorIAorICNkZWZpbmUgR1NUX0NBVF9ERUZBVUxUIGdzdF9xc2dfdGV4dHVyZV9kZWJ1ZworZGlmZiAtLWdpdCBhL2V4dC9xdC9xdHdpbmRvdy5jYyBiL2V4dC9xdC9xdHdpbmRvdy5jYworaW5kZXggNjJkMjZiNi4uYmY2OGViYiAxMDA2NDQKKy0tLSBhL2V4dC9xdC9xdHdpbmRvdy5jYworKysrIGIvZXh0L3F0L3F0d2luZG93LmNjCitAQCAtMjUsNyArMjUsNyBAQAorICNpbmNsdWRlIDxzdGRpby5oPgorIAorICNpbmNsdWRlIDxnc3QvdmlkZW8vdmlkZW8uaD4KKy0jaW5jbHVkZSA8Z3N0L2dsL2dzdGdsZnVuY3MuaD4KKysjaW5jbHVkZSA8ZXh0L3F0L2dzdHF0Z2wuaD4KKyAjaW5jbHVkZSAicXR3aW5kb3cuaCIKKyAjaW5jbHVkZSAiZ3N0cXNndGV4dHVyZS5oIgorICNpbmNsdWRlICJnc3RxdGdsdXRpbGl0eS5oIgorLS0gCisyLjI2LjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGZhN2I4Ni4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDc2ICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jCi0KLVNSQ19VUkkgPSAiIFwKLSAgICAgICAgICAgIGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtZ29vZC9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1pbnRyb3NwZWN0aW9uLm00LXByZWZpeC1wa2djb25maWctcGF0aHMtd2l0aC1QS0dfQ09OLnBhdGNoIFwKLSAgICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjUxNTk4N2VlNzYzMjU2ODQwYTExYmQ4ZWEwOThmMmJmIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjlmYmFiZTY5MDE4ZmNlYzcwN2RmMGI3MTE1MDE2ODc3NjA0MGNkZTZjMWEyNmJiNWE4MmExMzY3NTVmYThmMWYiCi0KLVMgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9IgotCi1MSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2NvbW1vbi9jb3ZlcmFnZS9jb3ZlcmFnZS1yZXBvcnQucGw7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9YTRlMTgzMGZjZTA3ODAyOGM4ZjA5NzQxNjEyNzI2MDcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZ3N0L3JlcGxheWdhaW4vcmdhbmFseXNpcy5jO2JlZ2lubGluZT0xO2VuZGxpbmU9MjM7bWQ1PWI2MGViZWZkNWIyZjVhOGUwY2FiNmJmZWUzOTFhNWZlIgotCi1ERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGxpYmNhcCIKLVJQUk9WSURFU18ke1BOfS1wdWxzZWF1ZGlvICs9ICIke1BOfS1wdWxzZSIKLVJQUk9WSURFU18ke1BOfS1zb3VwICs9ICIke1BOfS1zb3VwaHR0cHNyYyIKLQotaW5oZXJpdCBnZXR0ZXh0Ci0KLVBBQ0tBR0VDT05GSUcgPz89ICIgXAotICAgICR7R1NUUkVBTUVSX09SQ30gXAotICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8geDExJywgZCl9IFwKLSAgICBiejIgY2Fpcm8gZmxhYyBnZGstcGl4YnVmIGd1ZGV2IGpwZWcgbGFtZSBsaWJwbmcgbXBnMTIzIHNvdXAgc3BlZXggdGFnbGliIHY0bDIgemxpYiBcCi0iCi0KLVgxMURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlic20gbGlieHJlbmRlciBsaWJ4Zml4ZXMgbGlieGRhbWFnZSIKLQotUEFDS0FHRUNPTkZJR1tiejJdICAgICAgICA9ICItLWVuYWJsZS1iejIsLS1kaXNhYmxlLWJ6MixiemlwMiIKLVBBQ0tBR0VDT05GSUdbY2Fpcm9dICAgICAgPSAiLS1lbmFibGUtY2Fpcm8sLS1kaXNhYmxlLWNhaXJvLGNhaXJvIgotUEFDS0FHRUNPTkZJR1tkdjEzOTRdICAgICA9ICItLWVuYWJsZS1kdjEzOTQsLS1kaXNhYmxlLWR2MTM5NCxsaWJpZWM2MTg4MyBsaWJhdmMxMzk0IGxpYnJhdzEzOTQiCi1QQUNLQUdFQ09ORklHW2ZsYWNdICAgICAgID0gIi0tZW5hYmxlLWZsYWMsLS1kaXNhYmxlLWZsYWMsZmxhYyIKLVBBQ0tBR0VDT05GSUdbZ2RrLXBpeGJ1Zl0gPSAiLS1lbmFibGUtZ2RrX3BpeGJ1ZiwtLWRpc2FibGUtZ2RrX3BpeGJ1ZixnZGstcGl4YnVmIgotUEFDS0FHRUNPTkZJR1tndGtdICAgICAgICA9ICItLWVuYWJsZS1ndGszLC0tZGlzYWJsZS1ndGszLGd0ayszIgotUEFDS0FHRUNPTkZJR1tndWRldl0gICAgICA9ICItLXdpdGgtZ3VkZXYsLS13aXRob3V0LWd1ZGV2LGxpYmd1ZGV2IgotUEFDS0FHRUNPTkZJR1tqYWNrXSAgICAgICA9ICItLWVuYWJsZS1qYWNrLC0tZGlzYWJsZS1qYWNrLGphY2siCi1QQUNLQUdFQ09ORklHW2pwZWddICAgICAgID0gIi0tZW5hYmxlLWpwZWcsLS1kaXNhYmxlLWpwZWcsanBlZyIKLVBBQ0tBR0VDT05GSUdbbGFtZV0gICAgICAgPSAiLS1lbmFibGUtbGFtZSwtLWRpc2FibGUtbGFtZSxsYW1lIgotUEFDS0FHRUNPTkZJR1tsaWJwbmddICAgICA9ICItLWVuYWJsZS1saWJwbmcsLS1kaXNhYmxlLWxpYnBuZyxsaWJwbmciCi1QQUNLQUdFQ09ORklHW2xpYnY0bDJdICAgID0gIi0td2l0aC1saWJ2NGwyLC0td2l0aG91dC1saWJ2NGwyLHY0bC11dGlscyIKLVBBQ0tBR0VDT05GSUdbbXBnMTIzXSAgICAgPSAiLS1lbmFibGUtbXBnMTIzLC0tZGlzYWJsZS1tcGcxMjMsbXBnMTIzIgotUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItLWVuYWJsZS1wdWxzZSwtLWRpc2FibGUtcHVsc2UscHVsc2VhdWRpbyIKLVBBQ0tBR0VDT05GSUdbc291cF0gICAgICAgPSAiLS1lbmFibGUtc291cCwtLWRpc2FibGUtc291cCxsaWJzb3VwLTIuNCIKLVBBQ0tBR0VDT05GSUdbc3BlZXhdICAgICAgPSAiLS1lbmFibGUtc3BlZXgsLS1kaXNhYmxlLXNwZWV4LHNwZWV4IgotUEFDS0FHRUNPTkZJR1t0YWdsaWJdICAgICA9ICItLWVuYWJsZS10YWdsaWIsLS1kaXNhYmxlLXRhZ2xpYix0YWdsaWIiCi1QQUNLQUdFQ09ORklHW3Y0bDJdICAgICAgID0gIi0tZW5hYmxlLWdzdF92NGwyIC0tZW5hYmxlLXY0bDItcHJvYmUsLS1kaXNhYmxlLWdzdF92NGwyIgotUEFDS0FHRUNPTkZJR1t2cHhdICAgICAgICA9ICItLWVuYWJsZS12cHgsLS1kaXNhYmxlLXZweCxsaWJ2cHgiCi1QQUNLQUdFQ09ORklHW3dhdnBhY2tdICAgID0gIi0tZW5hYmxlLXdhdnBhY2ssLS1kaXNhYmxlLXdhdnBhY2ssd2F2cGFjayIKLVBBQ0tBR0VDT05GSUdbeDExXSAgICAgICAgPSAiLS1lbmFibGUteCwtLWRpc2FibGUteCwke1gxMURFUEVORFN9IgotUEFDS0FHRUNPTkZJR1t6bGliXSAgICAgICA9ICItLWVuYWJsZS16bGliLC0tZGlzYWJsZS16bGliLHpsaWIiCi0KLSMgcXQ1IHN1cHBvcnQgaXMgZGlzYWJsZWQsIGJlY2F1c2UgaXQgaXMgbm90IHByZXNlbnQgaW4gT0UgY29yZSwgYW5kIHJlcXVpcmVzIG1vcmUgd29yayB0aGFuCi0jIGp1c3QgYWRkaW5nIGEgcGFja2FnZWNvbmZpZyAoaXQgcmVxdWlyZXMgYWNjZXNzIHRvIG1vYywgdWljLCByY2MsIGFuZCBxbWFrZSBwYXRocykuCi0jIFRoaXMgaXMgYmV0dGVyIGRvbmUgaW4gYSBzZXBhcmF0ZSBxdDUgbGF5ZXIgKHdoaWNoIHRoZW4gc2hvdWxkIGFkZCBhICJxdDUiIHBhY2thZ2Vjb25maWcKLSMgaW4gYSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kIGJiYXBwZW5kKS4KLQotRVhUUkFfT0VDT05GICs9ICIgXAotICAgIC0tZW5hYmxlLW9zcyBcCi0gICAgLS1kaXNhYmxlLWFhbGliIFwKLSAgICAtLWRpc2FibGUtYWFsaWJ0ZXN0IFwKLSAgICAtLWRpc2FibGUtZGlyZWN0c291bmQgXAotICAgIC0tZGlzYWJsZS1saWJjYWNhIFwKLSAgICAtLWRpc2FibGUtbGliZHYgXAotICAgIC0tZGlzYWJsZS1vc3M0IFwKLSAgICAtLWRpc2FibGUtb3N4X2F1ZGlvIFwKLSAgICAtLWRpc2FibGUtb3N4X3ZpZGVvIFwKLSAgICAtLWRpc2FibGUtcXQgXAotICAgIC0tZGlzYWJsZS1zaG91dDIgXAotICAgIC0tZGlzYWJsZS10d29sYW1lIFwKLSAgICAtLWRpc2FibGUtd2F2ZWZvcm0gXAotIgotCi1GSUxFU18ke1BOfS1lcXVhbGl6ZXIgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzLyoucHJzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjE2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1nb29kXzEuMTYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xN2M5NDIxCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtZ29vZF8xLjE2LjIuYmIKQEAgLTAsMCArMSw3MCBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1jb21tb24uaW5jCisKK1NSQ19VUkkgPSAiIFwKKyAgICAgICAgICAgIGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0LXBsdWdpbnMtZ29vZC9nc3QtcGx1Z2lucy1nb29kLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgICBmaWxlOi8vMDAwMS1xbWxnbC1lbnN1cmUtUXQtZGVmaW5lcy1HTHN5bmMtdG8tZml4LWNvbXBpbGUtb24tc29tLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXF0LWluY2x1ZGUtZXh0LXF0LWdzdHF0Z2wuaC1pbnN0ZWFkLW9mLWdzdC1nbC1nc3RnbGYucGF0Y2ggXAorICAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiYmQwMjVmOGYxNDk3NGY5NGI3NWFjNjlhOWQxYjljOTMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDBiYjNiYWZkYTI1YzBiNzM5YzhmYzM2ZTQ4MzgwZmNjZjYxYzRkM2Y4Mzc0N2U5N2FjM2Y5YjAxNzFiMTMxOSIKKworUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLWdvb2QtJHtQVn0iCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vY29tbW9uL2NvdmVyYWdlL2NvdmVyYWdlLXJlcG9ydC5wbDtiZWdpbmxpbmU9MjtlbmRsaW5lPTE3O21kNT1hNGUxODMwZmNlMDc4MDI4YzhmMDk3NDE2MTI3MjYwNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9nc3QvcmVwbGF5Z2Fpbi9yZ2FuYWx5c2lzLmM7YmVnaW5saW5lPTE7ZW5kbGluZT0yMzttZDU9YjYwZWJlZmQ1YjJmNWE4ZTBjYWI2YmZlZTM5MWE1ZmUiCisKK0RFUEVORFMgKz0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UgbGliY2FwIHpsaWIiCitSUFJPVklERVNfJHtQTn0tcHVsc2VhdWRpbyArPSAiJHtQTn0tcHVsc2UiCitSUFJPVklERVNfJHtQTn0tc291cCArPSAiJHtQTn0tc291cGh0dHBzcmMiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIgXAorICAgICR7R1NUUkVBTUVSX09SQ30gXAorICAgICR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3B1bHNlYXVkaW8geDExJywgZCl9IFwKKyAgICBiejIgY2Fpcm8gZmxhYyBnZGstcGl4YnVmIGd1ZGV2IGpwZWcgbGFtZSBsaWJwbmcgbXBnMTIzIHNvdXAgc3BlZXggdGFnbGliIHY0bDIgXAorIgorCitYMTFERVBFTkRTID0gInZpcnR1YWwvbGlieDExIGxpYnNtIGxpYnhyZW5kZXIgbGlieGZpeGVzIGxpYnhkYW1hZ2UiCitYMTFFTkFCTEVPUFRTID0gIi1EeGltYWdlc3JjPWVuYWJsZWQgLUR4aW1hZ2VzcmMteHNobT1lbmFibGVkIC1EeGltYWdlc3JjLXhmaXhlcz1lbmFibGVkIC1EeGltYWdlc3JjLXhkYW1hZ2U9ZW5hYmxlZCIKK1gxMURJU0FCTEVPUFRTID0gIi1EeGltYWdlc3JjPWRpc2FibGVkIC1EeGltYWdlc3JjLXhzaG09ZGlzYWJsZWQgLUR4aW1hZ2VzcmMteGZpeGVzPWRpc2FibGVkIC1EeGltYWdlc3JjLXhkYW1hZ2U9ZGlzYWJsZWQiCisKK1BBQ0tBR0VDT05GSUdbYnoyXSAgICAgICAgPSAiLURiejI9ZW5hYmxlZCwtRGJ6Mj1kaXNhYmxlZCxiemlwMiIKK1BBQ0tBR0VDT05GSUdbY2Fpcm9dICAgICAgPSAiLURjYWlybz1lbmFibGVkLC1EY2Fpcm89ZGlzYWJsZWQsY2Fpcm8iCitQQUNLQUdFQ09ORklHW2R2MTM5NF0gICAgID0gIi1EZHYxMzk0PWVuYWJsZWQsLURkdjEzOTQ9ZGlzYWJsZWQsbGliaWVjNjE4ODMgbGliYXZjMTM5NCBsaWJyYXcxMzk0IgorUEFDS0FHRUNPTkZJR1tmbGFjXSAgICAgICA9ICItRGZsYWM9ZW5hYmxlZCwtRGZsYWM9ZGlzYWJsZWQsZmxhYyIKK1BBQ0tBR0VDT05GSUdbZ2RrLXBpeGJ1Zl0gPSAiLURnZGstcGl4YnVmPWVuYWJsZWQsLURnZGstcGl4YnVmPWRpc2FibGVkLGdkay1waXhidWYiCitQQUNLQUdFQ09ORklHW2d0a10gICAgICAgID0gIi1EZ3RrMz1lbmFibGVkLC1EZ3RrMz1kaXNhYmxlZCxndGsrMyIKK1BBQ0tBR0VDT05GSUdbZ3VkZXZdICAgICAgPSAiLUR2NGwyLWd1ZGV2PWVuYWJsZWQsLUR2NGwyLWd1ZGV2PWRpc2FibGVkLGxpYmd1ZGV2IgorUEFDS0FHRUNPTkZJR1tqYWNrXSAgICAgICA9ICItRGphY2s9ZW5hYmxlZCwtRGphY2s9ZGlzYWJsZWQsamFjayIKK1BBQ0tBR0VDT05GSUdbanBlZ10gICAgICAgPSAiLURqcGVnPWVuYWJsZWQsLURqcGVnPWRpc2FibGVkLGpwZWciCitQQUNLQUdFQ09ORklHW2xhbWVdICAgICAgID0gIi1EbGFtZT1lbmFibGVkLC1EbGFtZT1kaXNhYmxlZCxsYW1lIgorUEFDS0FHRUNPTkZJR1tsaWJwbmddICAgICA9ICItRHBuZz1lbmFibGVkLC1EcG5nPWRpc2FibGVkLGxpYnBuZyIKK1BBQ0tBR0VDT05GSUdbbGlidjRsMl0gICAgPSAiLUR2NGwyLWxpYnY0bDI9ZW5hYmxlZCwtRHY0bDItbGlidjRsMj1kaXNhYmxlZCx2NGwtdXRpbHMiCitQQUNLQUdFQ09ORklHW21wZzEyM10gICAgID0gIi1EbXBnMTIzPWVuYWJsZWQsLURtcGcxMjM9ZGlzYWJsZWQsbXBnMTIzIgorUEFDS0FHRUNPTkZJR1twdWxzZWF1ZGlvXSA9ICItRHB1bHNlPWVuYWJsZWQsLURwdWxzZT1kaXNhYmxlZCxwdWxzZWF1ZGlvIgorUEFDS0FHRUNPTkZJR1txdDVdICAgICAgICA9ICItRHF0NT1lbmFibGVkLC1EcXQ1PWRpc2FibGVkLHF0YmFzZSBxdGRlY2xhcmF0aXZlIHF0YmFzZS1uYXRpdmUiCitQQUNLQUdFQ09ORklHW3NvdXBdICAgICAgID0gIi1Ec291cD1lbmFibGVkLC1Ec291cD1kaXNhYmxlZCxsaWJzb3VwLTIuNCIKK1BBQ0tBR0VDT05GSUdbc3BlZXhdICAgICAgPSAiLURzcGVleD1lbmFibGVkLC1Ec3BlZXg9ZGlzYWJsZWQsc3BlZXgiCitQQUNLQUdFQ09ORklHW3RhZ2xpYl0gICAgID0gIi1EdGFnbGliPWVuYWJsZWQsLUR0YWdsaWI9ZGlzYWJsZWQsdGFnbGliIgorUEFDS0FHRUNPTkZJR1t2NGwyXSAgICAgICA9ICItRHY0bDI9ZW5hYmxlZCAtRHY0bDItcHJvYmU9dHJ1ZSwtRHY0bDI9ZGlzYWJsZWQgLUR2NGwyLXByb2JlPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t2cHhdICAgICAgICA9ICItRHZweD1lbmFibGVkLC1EdnB4PWRpc2FibGVkLGxpYnZweCIKK1BBQ0tBR0VDT05GSUdbd2F2cGFja10gICAgPSAiLUR3YXZwYWNrPWVuYWJsZWQsLUR3YXZwYWNrPWRpc2FibGVkLHdhdnBhY2siCitQQUNLQUdFQ09ORklHW3gxMV0gICAgICAgID0gIiR7WDExRU5BQkxFT1BUU30sJHtYMTFESVNBQkxFT1BUU30sJHtYMTFERVBFTkRTfSIKKworRVhUUkFfT0VNRVNPTiArPSAiIFwKKyAgICAtRGFhbGliPWRpc2FibGVkIFwKKyAgICAtRGRpcmVjdHNvdW5kPWRpc2FibGVkIFwKKyAgICAtRGR2PWRpc2FibGVkIFwKKyAgICAtRGxpYmNhY2E9ZGlzYWJsZWQgXAorICAgIC1Eb3NzPWVuYWJsZWQgXAorICAgIC1Eb3NzND1kaXNhYmxlZCBcCisgICAgLURvc3hhdWRpbz1kaXNhYmxlZCBcCisgICAgLURvc3h2aWRlbz1kaXNhYmxlZCBcCisgICAgLURzaG91dDI9ZGlzYWJsZWQgXAorICAgIC1EdHdvbGFtZT1kaXNhYmxlZCBcCisgICAgLUR3YXZlZm9ybT1kaXNhYmxlZCBcCisiCisKK0ZJTEVTXyR7UE59LWVxdWFsaXplciArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL3ByZXNldHMvKi5wcnMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy1wYWNrYWdpbmcuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtcGFja2FnaW5nLmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45YTdhMWI2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtcGFja2FnaW5nLmluYwpAQCAtMCwwICsxLDcwIEBACisjIFRoaXMgLmluYyBmaWxlIGNvbnRhaW5zIGZ1bmN0aW9uYWxpdHkgZm9yIGF1dG9tYXRpY2FsbHkgc3BsaXR0aW5nCisjIGJ1aWx0IHBsdWdpbnMgaW50byBpbmRpdmlkdWFsIHBhY2thZ2VzIGZvciBlYWNoIHBsdWdpbi4gQSAtbWV0YQorIyBwYWNrYWdlIGlzIGFsc28gc2V0IHVwIHRoYXQgaGFzIG5vIGZpbGVzIG9mIGl0cyBvd24sIGJ1dCBjb250YWlucworIyB0aGUgbmFtZXMgb2YgYWxsIHBsdWdpbiBwYWNrYWdlcyBpbiBpdHMgUkRFUEVORFMgbGlzdC4KKyMKKyMgVGhpcyBpcyBtYWlubHkgdXNlZCBieSB0aGUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtKiBwbHVnaW4gc2V0IHJlY2lwZXMsCisjIGJ1dCBjYW4gYmUgdXNlZCBpbiBhbnkgcmVjaXBlIHRoYXQgcHJvZHVjZXMgR1N0cmVhbWVyIHBsdWdpbnMuCisKK1BBQ0tBR0VTUExJVEZVTkNTX3ByZXBlbmQgPSAiIHNwbGl0X2dzdHJlYW1lcjEwX3BhY2thZ2VzICIKK1BBQ0tBR0VTUExJVEZVTkNTX2FwcGVuZCA9ICIgc2V0X2dzdHJlYW1lcjEwX21ldGFwa2dfcmRlcGVuZHMgIgorCitweXRob24gc3BsaXRfZ3N0cmVhbWVyMTBfcGFja2FnZXMgKCkgeworICAgIGdzdF9saWJkaXIgPSBkLmV4cGFuZCgnJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAnKQorICAgIHBvc3RpbnN0ID0gZC5nZXRWYXIoJ3BsdWdpbl9wb3N0aW5zdCcpCisgICAgZ2xpYmRpciA9IGQuZ2V0VmFyKCdsaWJkaXInKQorCisgICAgIyBHU3RyZWFtZXIgbGlicmFyaWVzCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZ2xpYmRpciwgcidebGliKC4qKVwuc29cLionLCAnbGliJXMnLCAnR1N0cmVhbWVyIDEuMCAlcyBsaWJyYXJ5JywgZXh0cmFfZGVwZW5kcz0nJywgYWxsb3dfbGlua3M9VHJ1ZSkKKyAgICAjIEdTdHJlYW1lciBwbHVnaW4gc2hhcmVkIG9iamVjdHMKKyAgICBkb19zcGxpdF9wYWNrYWdlcyhkLCBnc3RfbGliZGlyLCByJ2xpYmdzdCguKilcLnNvJCcsIGQuZXhwYW5kKCcke1BOfS0lcycpLCAnR1N0cmVhbWVyIDEuMCBwbHVnaW4gZm9yICVzJywgcG9zdGluc3Q9cG9zdGluc3QsIGV4dHJhX2RlcGVuZHM9JycpCisgICAgIyBHT2JqZWN0IGludHJvc3BlY3Rpb24gZmlsZXMgZm9yIEdTdHJlYW1lciBwbHVnaW5zCisgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgZ2xpYmRpcisnL2dpcmVwb3NpdG9yeS0xLjAnLCByJ0dzdCguKiktMS4wXC50eXBlbGliJCcsIGQuZXhwYW5kKCcke1BOfS0lcy10eXBlbGliJyksICdHU3RyZWFtZXIgMS4wIHR5cGVsaWIgZmlsZSBmb3IgJXMnLCBwb3N0aW5zdD1wb3N0aW5zdCwgZXh0cmFfZGVwZW5kcz0nJykKKyAgICAjIFN0YXRpYyBHU3RyZWFtZXIgbGlicmFyaWVzIGZvciBkZXZlbG9wbWVudAorICAgIGRvX3NwbGl0X3BhY2thZ2VzKGQsIGdzdF9saWJkaXIsIHInbGliZ3N0KC4qKVwuYSQnLCBkLmV4cGFuZCgnJHtQTn0tJXMtc3RhdGljZGV2JyksICdHU3RyZWFtZXIgMS4wIHBsdWdpbiBmb3IgJXMgKHN0YXRpYyBkZXZlbG9wbWVudCBmaWxlcyknLCBleHRyYV9kZXBlbmRzPScke1BOfS1zdGF0aWNkZXYnKQorfQorCitweXRob24gc2V0X2dzdHJlYW1lcjEwX21ldGFwa2dfcmRlcGVuZHMgKCkgeworICAgIGltcG9ydCBvcworICAgIGltcG9ydCBvZS51dGlscworCisgICAgIyBHbyB0aHJvdWdoIGFsbCBnZW5lcmF0ZWQgcGFja2FnZXMgKGV4Y2x1ZGluZyB0aGUgbWFpbiBwYWNrYWdlIGFuZAorICAgICMgdGhlIC1tZXRhIHBhY2thZ2UgaXRzZWxmKSBhbmQgYWRkIHRoZW0gdG8gdGhlIC1tZXRhIHBhY2thZ2UgYXMgUkRFUEVORFMuCisKKyAgICBwbiA9IGQuZ2V0VmFyKCdQTicpCisgICAgbWV0YXBrZyA9ICBwbiArICctbWV0YScKKyAgICBkLnNldFZhcignQUxMT1dfRU1QVFlfJyArIG1ldGFwa2csICIxIikKKyAgICBkLnNldFZhcignRklMRVNfJyArIG1ldGFwa2csICIiKQorICAgIGJsYWNrbGlzdCA9IFsgcG4sIHBuICsgJy1tZXRhJyBdCisgICAgbWV0YXBrZ19yZGVwZW5kcyA9IFtdCisgICAgcGtnZGVzdCA9IGQuZ2V0VmFyKCdQS0dERVNUJykKKyAgICBmb3IgcGtnIGluIG9lLnV0aWxzLnBhY2thZ2VzX2ZpbHRlcl9vdXRfc3lzdGVtKGQpOgorICAgICAgICBpZiBwa2cgbm90IGluIGJsYWNrbGlzdCBhbmQgcGtnIG5vdCBpbiBtZXRhcGtnX3JkZXBlbmRzOgorICAgICAgICAgICAgIyBTZWUgaWYgdGhlIHBhY2thZ2UgaXMgZW1wdHkgYnkgbG9va2luZyBhdCB0aGUgY29udGVudHMgb2YgaXRzIFBLR0RFU1Qgc3ViZGlyZWN0b3J5LgorICAgICAgICAgICAgIyBJZiB0aGlzIHN1YmRpcmVjdG9yeSBpcyBlbXB0eSwgdGhlbiB0aGUgcGFja2FnZSBpcy4KKyAgICAgICAgICAgICMgRW1wdHkgcGFja2FnZXMgZG8gbm90IGdldCBhZGRlZCB0byB0aGUgbWV0YSBwYWNrYWdlJ3MgUkRFUEVORFMKKyAgICAgICAgICAgIHBrZ2RpciA9IG9zLnBhdGguam9pbihwa2dkZXN0LCBwa2cpCisgICAgICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhwa2dkaXIpOgorICAgICAgICAgICAgICAgIGRpcl9jb250ZW50cyA9IG9zLmxpc3RkaXIocGtnZGlyKSBvciBbXQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBkaXJfY29udGVudHMgPSBbXQorICAgICAgICAgICAgaXNfZW1wdHkgPSBsZW4oZGlyX2NvbnRlbnRzKSA9PSAwCisgICAgICAgICAgICBpZiBub3QgaXNfZW1wdHk6CisgICAgICAgICAgICAgICAgbWV0YXBrZ19yZGVwZW5kcy5hcHBlbmQocGtnKQorICAgIGQuc2V0VmFyKCdSREVQRU5EU18nICsgbWV0YXBrZywgJyAnLmpvaW4obWV0YXBrZ19yZGVwZW5kcykpCisgICAgZC5zZXRWYXIoJ0RFU0NSSVBUSU9OXycgKyBtZXRhcGtnLCBwbiArICcgbWV0YSBwYWNrYWdlJykKK30KKworIyBlYWNoIHBsdWdpbi1kZXYgZGVwZW5kcyBvbiBQTi1kZXYsIHBsdWdpbi1zdGF0aWNkZXYgb24gUE4tc3RhdGljZGV2CisjIHNvIHdlIG5lZWQgdGhlbSBldmVuIHdoZW4gZW1wdHkgKGxpa2UgaW4gZ3N0LXBsdWdpbnMtZ29vZCBjYXNlKQorQUxMT1dfRU1QVFlfJHtQTn0gPSAiMSIKK0FMTE9XX0VNUFRZXyR7UE59LWRldiA9ICIxIgorQUxMT1dfRU1QVFlfJHtQTn0tc3RhdGljZGV2ID0gIjEiCisKK1BBQ0tBR0VTICs9ICIke1BOfS1hcHBzICR7UE59LW1ldGEgJHtQTn0tZ2xpYiIKKworRklMRVNfJHtQTn0gPSAiIgorRklMRVNfJHtQTn0tYXBwcyA9ICIke2JpbmRpcn0iCitGSUxFU18ke1BOfS1nbGliID0gIiR7ZGF0YWRpcn0vZ2xpYi0yLjAiCisKK1JSRUNPTU1FTkRTXyR7UE59ICs9ICIke1BOfS1tZXRhIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTYuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZWNhYjMxOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLXJlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3hpbmdtdXguYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT00Yzc3MWI4YWYxODg3MjQ4NTVjYjk5Y2FkZDM5MDA2OCIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsgJiBMR1BMdjIrIgotTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgotCi1TUkNfVVJJID0gIiBcCi0gICAgICAgICAgICBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLXVnbHkvZ3N0LXBsdWdpbnMtdWdseS0ke1BWfS50YXIueHogXAotICAgICAgICAgICAgZmlsZTovLzAwMDEtaW50cm9zcGVjdGlvbi5tNC1wcmVmaXgtcGtnY29uZmlnLXBhdGhzLXdpdGgtUEtHX0NPTi5wYXRjaCBcCi0gICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNjY4Nzk1OTAzY2I0OTcxZmJhOWFhODlhYmRlYTgzNjkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNGJmOTEzYjJjYTUxOTVhYzNiNTNiNWUzYWRlMmRjN2M0NWQyMjU4NTA3NTUyZGRjODUwYzVmYTQyNTk2OGExZCIKLQotUyA9ICIke1dPUktESVJ9L2dzdC1wbHVnaW5zLXVnbHktJHtQVn0iCi0KLURFUEVORFMgKz0gImdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCi0KLWluaGVyaXQgZ2V0dGV4dAotCi1QQUNLQUdFQ09ORklHID8/PSAiIFwKLSAgICAke0dTVFJFQU1FUl9PUkN9IFwKLSAgICBhNTJkZWMgbXBlZzJkZWMgXAotIgotCi1QQUNLQUdFQ09ORklHW2E1MmRlY10gICA9ICItLWVuYWJsZS1hNTJkZWMsLS1kaXNhYmxlLWE1MmRlYyxsaWJhNTIiCi1QQUNLQUdFQ09ORklHW2Ftcm5iXSAgICA9ICItLWVuYWJsZS1hbXJuYiwtLWRpc2FibGUtYW1ybmIsb3BlbmNvcmUtYW1yIgotUEFDS0FHRUNPTkZJR1thbXJ3Yl0gICAgPSAiLS1lbmFibGUtYW1yd2IsLS1kaXNhYmxlLWFtcndiLG9wZW5jb3JlLWFtciIKLVBBQ0tBR0VDT05GSUdbY2Rpb10gICAgID0gIi0tZW5hYmxlLWNkaW8sLS1kaXNhYmxlLWNkaW8sbGliY2RpbyIKLVBBQ0tBR0VDT05GSUdbZHZkcmVhZF0gID0gIi0tZW5hYmxlLWR2ZHJlYWQsLS1kaXNhYmxlLWR2ZHJlYWQsbGliZHZkcmVhZCIKLVBBQ0tBR0VDT05GSUdbbXBlZzJkZWNdID0gIi0tZW5hYmxlLW1wZWcyZGVjLC0tZGlzYWJsZS1tcGVnMmRlYyxtcGVnMmRlYyIKLVBBQ0tBR0VDT05GSUdbeDI2NF0gICAgID0gIi0tZW5hYmxlLXgyNjQsLS1kaXNhYmxlLXgyNjQseDI2NCIKLQotRVhUUkFfT0VDT05GICs9ICIgXAotICAgIC0tZGlzYWJsZS1zaWRwbGF5IFwKLSIKLQotRklMRVNfJHtQTn0tYW1ybmIgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzL0dzdEFtcm5iRW5jLnBycyIKLUZJTEVTXyR7UE59LXgyNjQgKz0gIiR7ZGF0YWRpcn0vZ3N0cmVhbWVyLTEuMC9wcmVzZXRzL0dzdFgyNjRFbmMucHJzIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjE2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy11Z2x5XzEuMTYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iZTEwODAwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMtdWdseV8xLjE2LjIuYmIKQEAgLTAsMCArMSwzOSBAQAorcmVxdWlyZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1jb21tb24uaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE2Zjg5ZTIxMDBkOWI2Y2RmZmNlYTRmMzk4ZTM3MzQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3Rlc3RzL2NoZWNrL2VsZW1lbnRzL3hpbmdtdXguYztiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT00Yzc3MWI4YWYxODg3MjQ4NTVjYjk5Y2FkZDM5MDA2OCIKKworTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsgJiBMR1BMdjIrIgorTElDRU5TRV9GTEFHUyA9ICJjb21tZXJjaWFsIgorCitTUkNfVVJJID0gIiBcCisgICAgICAgICAgICBodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjL2dzdC1wbHVnaW5zLXVnbHkvZ3N0LXBsdWdpbnMtdWdseS0ke1BWfS50YXIueHogXAorICAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjEwMjgzZmY1ZWYxZTM0ZDQ2MmRkZTc3MDQyZTMyOWJkIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjU1MDA0MTViODY1ZThiNjI3NzVkNDc0MmNiYjlmMzcxNDZhNTBjYWVjZmMwZTdhNmZjMDE2MGQzYzU2MGZiY2EiCisKK1MgPSAiJHtXT1JLRElSfS9nc3QtcGx1Z2lucy11Z2x5LSR7UFZ9IgorCitERVBFTkRTICs9ICJnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIgorCitHU1RfUExVR0lOX1NFVF9IQVNfRVhBTVBMRVMgPSAiMCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiBcCisgICAgJHtHU1RSRUFNRVJfT1JDfSBcCisgICAgYTUyZGVjIG1wZWcyZGVjIFwKKyIKKworUEFDS0FHRUNPTkZJR1thNTJkZWNdICAgPSAiLURhNTJkZWM9ZW5hYmxlZCwtRGE1MmRlYz1kaXNhYmxlZCxsaWJhNTIiCitQQUNLQUdFQ09ORklHW2Ftcm5iXSAgICA9ICItRGFtcm5iPWVuYWJsZWQsLURhbXJuYj1kaXNhYmxlZCxvcGVuY29yZS1hbXIiCitQQUNLQUdFQ09ORklHW2FtcndiXSAgICA9ICItRGFtcndiZGVjPWVuYWJsZWQsLURhbXJ3YmRlYz1kaXNhYmxlZCxvcGVuY29yZS1hbXIiCitQQUNLQUdFQ09ORklHW2NkaW9dICAgICA9ICItRGNkaW89ZW5hYmxlZCwtRGNkaW89ZGlzYWJsZWQsbGliY2RpbyIKK1BBQ0tBR0VDT05GSUdbZHZkcmVhZF0gID0gIi1EZHZkcmVhZD1lbmFibGVkLC1EZHZkcmVhZD1kaXNhYmxlZCxsaWJkdmRyZWFkIgorUEFDS0FHRUNPTkZJR1ttcGVnMmRlY10gPSAiLURtcGVnMmRlYz1lbmFibGVkLC1EbXBlZzJkZWM9ZGlzYWJsZWQsbXBlZzJkZWMiCitQQUNLQUdFQ09ORklHW3gyNjRdICAgICA9ICItRHgyNjQ9ZW5hYmxlZCwtRHgyNjQ9ZGlzYWJsZWQseDI2NCIKKworRVhUUkFfT0VNRVNPTiArPSAiIFwKKyAgICAtRHNpZHBsYXk9ZGlzYWJsZWQgXAorIgorCitGSUxFU18ke1BOfS1hbXJuYiArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL3ByZXNldHMvR3N0QW1ybmJFbmMucHJzIgorRklMRVNfJHtQTn0teDI2NCArPSAiJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL3ByZXNldHMvR3N0WDI2NEVuYy5wcnMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcGx1Z2lucy5pbmMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJjMjRiMDUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXBsdWdpbnMuaW5jCisrKyAvZGV2L251bGwKQEAgLTEsNDEgKzAsMCBAQAotU1VNTUFSWSA9ICJQbHVnaW5zIGZvciB0aGUgR1N0cmVhbWVyIG11bHRpbWVkaWEgZnJhbWV3b3JrIDEueCIKLUhPTUVQQUdFID0gImh0dHA6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvZW50ZXJfYnVnLmNnaT9wcm9kdWN0PUdzdHJlYW1lciIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLQotREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ2xpYi0yLjAtbmF0aXZlIgotCi1TUkNfVVJJX2FwcGVuZCA9ICIgZmlsZTovL2d0ay1kb2MtdHdlYWtzLnBhdGNoIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGd0ay1kb2MKLQotYWNwYXRocyA9ICItSSAke1N9L2NvbW1vbi9tNCAtSSAke1N9L200IgotCi1MSUJWID0gIjEuMCIKLXJlcXVpcmUgZ3N0LXBsdWdpbnMtcGFja2FnZS5pbmMKLQotIyBPcmMgZW5hYmxlcyBydW50aW1lIEpJVCBjb21waWxhdGlvbiBvZiBkYXRhIHByb2Nlc3Npbmcgcm91dGluZXMgZnJvbSBPcmMKLSMgYnl0ZWNvZGUgdG8gU0lNRCBpbnN0cnVjdGlvbnMgZm9yIHZhcmlvdXMgYXJjaGl0ZWN0dXJlcyAoY3VycmVudGx5IFNTRSwgTU1YLAotIyBNSVBTLCBBbHRpdmVjIGFuZCBORU9OIGFyZSBzdXBwb3J0ZWQpLgotCi1HU1RSRUFNRVJfT1JDID89ICJvcmMiCi0KLVBBQ0tBR0VDT05GSUdbZGVidWddID0gIi0tZW5hYmxlLWRlYnVnLC0tZGlzYWJsZS1kZWJ1ZyIKLVBBQ0tBR0VDT05GSUdbb3JjXSA9ICItLWVuYWJsZS1vcmMsLS1kaXNhYmxlLW9yYyxvcmMgb3JjLW5hdGl2ZSIKLVBBQ0tBR0VDT05GSUdbdmFsZ3JpbmRdID0gIi0tZW5hYmxlLXZhbGdyaW5kLC0tZGlzYWJsZS12YWxncmluZCx2YWxncmluZCIKLQotZXhwb3J0IE9SQ0MgPSAiJHtTVEFHSU5HX0RJUl9OQVRJVkV9JHtiaW5kaXJ9L29yY2MiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1leGFtcGxlcyBcCi0iCi0KLWRlbGV0ZV9wa2dfbTRfZmlsZSgpIHsKLQkjIFRoaXMgbTQgZmlsZSBpcyBvdXQgb2YgZGF0ZSBhbmQgaXMgbWlzc2luZyBQS0dfQ09ORklHX1NZU1JPT1RfUEFUSCB0d2Vha3Mgd2hpY2ggd2UgbmVlZCBmb3IgaW50cm9zcGVjdGlvbgotCXJtICIke1N9L2NvbW1vbi9tNC9wa2cubTQiIHx8IHRydWUKLQlybSAtZiAiJHtTfS9jb21tb24vbTQvZ3RrLWRvYy5tNCIKLX0KLQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiIGRlbGV0ZV9wa2dfbTRfZmlsZSIKLQotUEFDS0FHRVNfRFlOQU1JQyA9ICJeJHtQTn0tLioiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHRlc3QuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB0ZXN0LmluYwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5iNjk4MDY3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB0ZXN0LmluYwpAQCAtMCwwICsxLDIzIEBACitpbmhlcml0IHB0ZXN0LWdub21lCisKK1RFU1RfRklMRVNfUEFUSCA9ICIke2RhdGFkaXJ9L2luc3RhbGxlZC10ZXN0cy9nc3RyZWFtZXItMS4wL3Rlc3QtZmlsZXMiCitSVU5fUFRFU1RfRklMRSA9ICIke0R9JHtQVEVTVF9QQVRIfS9ydW4tcHRlc3QiCisKK0VYVFJBX09FTUVTT04gKz0gIi1EdGVzdC1maWxlcy1wYXRoPSR7VEVTVF9GSUxFU19QQVRIfSIKKworR1NUX1RFU1RfU1VJVEVfTkFNRSA/PSAiZ3N0cmVhbWVyLTEuMCIKKworIyBVc2luZyBkb19pbnN0YWxsX3B0ZXN0X2Jhc2UgaW5zdGVhZCBvZiBkb19pbnN0YWxsX3B0ZXN0LCBzaW5jZQorIyB0aGUgZGVmYXVsdCBkb19pbnN0YWxsX3B0ZXN0X2Jhc2UgaXMgaGFyZGNvZGVkIHRvIGV4cGVjdCBNYWtlZmlsZXMuCitkb19pbnN0YWxsX3B0ZXN0X2Jhc2UoKSB7CisgICAgIyBHZW5lcmF0ZSBydW4tcHRlc3QgZmlsZQorICAgIGVjaG8gIiMhL3Vzci9iaW4vZW52IHNoIiA+ICIke1JVTl9QVEVTVF9GSUxFfSIKKyAgICBlY2hvICJnbm9tZS1kZXNrdG9wLXRlc3RpbmctcnVubmVyICR7R1NUX1RFU1RfU1VJVEVfTkFNRX0iID4+ICIke1JVTl9QVEVTVF9GSUxFfSIKKyAgICBjaG1vZCAwNzU1ICIke1JVTl9QVEVTVF9GSUxFfSIKKworICAgICMgSW5zdGFsbCBhZGRpdGlvbmFsIGZpbGVzIHJlcXVpcmVkIGJ5IHRlc3RzCisgICAgaWYgWyAtZCAiJHtTfS90ZXN0cy9maWxlcyIgXSA7IHRoZW4KKyAgICAgICAgaW5zdGFsbCAtZCAiJHtEfS8ke1RFU1RfRklMRVNfUEFUSH0iCisgICAgICAgIGluc3RhbGwgLW0gMDY0NCAiJHtTfS90ZXN0cy9maWxlcyIvKiAiJHtEfS8ke1RFU1RfRklMRVNfUEFUSH0iCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob24vMDAwMS1tZXNvbi5idWlsZC1maXgtYnVpbGRzLXdpdGgtcHl0aG9uLTMuOC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob24vMDAwMS1tZXNvbi5idWlsZC1maXgtYnVpbGRzLXdpdGgtcHl0aG9uLTMuOC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wNTMxMDhhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbi8wMDAxLW1lc29uLmJ1aWxkLWZpeC1idWlsZHMtd2l0aC1weXRob24tMy44LnBhdGNoCkBAIC0wLDAgKzEsMjQgQEAKK0Zyb20gNjFjZmQxYjQ5ZGM4MmJhZjE0YmIzNmQ4OGI2YzViZTdiOGMzZDIzYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogTW9uLCAyIERlYyAyMDE5IDE4OjE2OjQxICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc29uLmJ1aWxkOiBmaXggYnVpbGRzIHdpdGggcHl0aG9uIDMuOAorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcHl0aG9uL21lcmdlX3JlcXVlc3RzLzE0XQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CistLS0KKyBtZXNvbi5idWlsZCB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL21lc29uLmJ1aWxkIGIvbWVzb24uYnVpbGQKK2luZGV4IDFkYTgxZDUuLjNlMGRiMzggMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC0yNCw3ICsyNCw3IEBAIHB5Z29iamVjdF9kZXAgPSBkZXBlbmRlbmN5KCdweWdvYmplY3QtMy4wJywgZmFsbGJhY2s6IFsncHlnb2JqZWN0JywgJ3B5Z29iamVjdF9kCisgCisgcHltb2QgPSBpbXBvcnQoJ3B5dGhvbicpCisgcHl0aG9uID0gcHltb2QuZmluZF9pbnN0YWxsYXRpb24oZ2V0X29wdGlvbigncHl0aG9uJykpCistcHl0aG9uX2RlcCA9IHB5dGhvbi5kZXBlbmRlbmN5KHJlcXVpcmVkIDogdHJ1ZSkKKytweXRob25fZGVwID0gZGVwZW5kZW5jeSgncHl0aG9uMy1lbWJlZCcsIHJlcXVpcmVkIDogdHJ1ZSkKKyAKKyBweXRob25fYWJpX2ZsYWdzID0gcHl0aG9uLmdldF92YXJpYWJsZSgnQUJJRkxBR1MnLCAnJykKKyBweWxpYl9sb2MgPSBnZXRfb3B0aW9uKCdsaWJweXRob24tZGlyJykKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjE2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MjJmMDIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXB5dGhvbl8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgR1N0cmVhbWVyIDEuMCIKLUhPTUVQQUdFID0gImh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXB5dGhvbi8iCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi0KLUxJQ0VOU0UgPSAiTEdQTHYyLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMzRkZWFlNGUzOTVjYTA3ZTcyNWFiMDA3NmE1Zjc0MCIKLQotU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7UE5SRUFMfS8ke1BOUkVBTH0tJHtQVn0udGFyLnh6IgotU1JDX1VSSVttZDVzdW1dID0gIjQ5OTY0NWZiZDE3OTBjNTg0NWMwMmEzOTk4ZGNjYzFiIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImI0NjljODk1NTEyNmY0MWI4Y2UwYmY2ODliNzAyOWYxODJjZDMwNWY0MjJiM2E4ZGYzNWI3ODBiZDgzNDc0ODkiCi0KLURFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIHB5dGhvbjMtcHlnb2JqZWN0IgotUkRFUEVORFNfJHtQTn0gKz0gImdzdHJlYW1lcjEuMCBweXRob24zLXB5Z29iamVjdCIKLQotUE5SRUFMID0gImdzdC1weXRob24iCi0KLVMgPSAiJHtXT1JLRElSfS8ke1BOUkVBTH0tJHtQVn0iCi0KLSMgZ29iamVjdC1pbnRyb3NwZWN0aW9uIGlzIG1hbmRhdG9yeSBhbmQgY2Fubm90IGJlIGNvbmZpZ3VyZWQKLVJFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJnb2JqZWN0LWludHJvc3BlY3Rpb24tZGF0YSIKLVVOS05PV05fQ09ORklHVVJFX1dISVRFTElTVF9hcHBlbmQgPSAiIC0tZW5hYmxlLWludHJvc3BlY3Rpb24gLS1kaXNhYmxlLWludHJvc3BlY3Rpb24iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBkaXN0dXRpbHMzLWJhc2UgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBmZWF0dXJlc19jaGVjawotCi1FWFRSQV9PRUNPTkYgKz0gIi0td2l0aC1saWJweXRob24tZGlyPSR7bGliZGlyfSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0KLSAgICAjIE5vdGUgdGhhdCB0aGlzIHBhcnRpY3VsYXIgZmluZCBsaW5lIGlzIHRha2VuIGZyb20gdGhlIERlYmlhbiBwYWNrYWdpbmcgZm9yCi0gICAgIyBnc3QtcHl0aG9uMS4wLgotICAgIGZpbmQgIiR7RH0iIFwKLSAgICAgICAgLW5hbWUgJyoucHljJyAtbyBcCi0gICAgICAgIC1uYW1lICcqLnB5bycgLW8gXAotICAgICAgICAtbmFtZSAnKi5sYScgLW8gXAotICAgICAgICAtbmFtZSAnbGliZ3N0cHl0aG9ucGx1Z2luKicgXAotICAgICAgICAtZGVsZXRlCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1weXRob25fMS4xNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjllMDI0ZWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcHl0aG9uXzEuMTYuMi5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIlB5dGhvbiBiaW5kaW5ncyBmb3IgR1N0cmVhbWVyIDEuMCIKK0hPTUVQQUdFID0gImh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXB5dGhvbi8iCitTRUNUSU9OID0gIm11bHRpbWVkaWEiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjEiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1jMzRkZWFlNGUzOTVjYTA3ZTcyNWFiMDA3NmE1Zjc0MCIKKworU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7UE5SRUFMfS8ke1BOUkVBTH0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVzb24uYnVpbGQtZml4LWJ1aWxkcy13aXRoLXB5dGhvbi0zLjgucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNmFjNzA5NzY3MzM0ZDhkMGE3MWNiNGUwMTZmNmFiZWIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMjA4ZGYzMTQ4ZDczZDlmNDE2ZDAxNjU2NDczNzU4NWQ4ZWE3NjNkOTEyMDE3MzJkNDRiNWZlNjg4YzYyODhhOCIKKworREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgcHl0aG9uMy1weWdvYmplY3QiCitSREVQRU5EU18ke1BOfSArPSAiZ3N0cmVhbWVyMS4wIHB5dGhvbjMtcHlnb2JqZWN0IgorCitQTlJFQUwgPSAiZ3N0LXB5dGhvbiIKKworUyA9ICIke1dPUktESVJ9LyR7UE5SRUFMfS0ke1BWfSIKKworIyBnb2JqZWN0LWludHJvc3BlY3Rpb24gaXMgbWFuZGF0b3J5IGFuZCBjYW5ub3QgYmUgY29uZmlndXJlZAorUkVRVUlSRURfRElTVFJPX0ZFQVRVUkVTID0gImdvYmplY3QtaW50cm9zcGVjdGlvbi1kYXRhIgorVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUX2FwcGVuZCA9ICIgaW50cm9zcGVjdGlvbiIKKworaW5oZXJpdCBtZXNvbiBwa2djb25maWcgZGlzdHV0aWxzMy1iYXNlIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZmVhdHVyZXNfY2hlY2sKKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisKKyAgICAjIE5vdGUgdGhhdCB0aGlzIHBhcnRpY3VsYXIgZmluZCBsaW5lIGlzIHRha2VuIGZyb20gdGhlIERlYmlhbiBwYWNrYWdpbmcgZm9yCisgICAgIyBnc3QtcHl0aG9uMS4wLgorICAgIGZpbmQgIiR7RH0iIFwKKyAgICAgICAgLW5hbWUgJyoucHljJyAtbyBcCisgICAgICAgIC1uYW1lICcqLnB5bycgLW8gXAorICAgICAgICAtbmFtZSAnKi5sYScgLW8gXAorICAgICAgICAtbmFtZSAnbGliZ3N0cHl0aG9ucGx1Z2luKicgXAorICAgICAgICAtZGVsZXRlCit9CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXIvMDAwMS1tZXNvbi1idWlsZC1naXItZXZlbi13aGVuLWNyb3NzLWNvbXBpbGluZy1pZi1pbnRyb3NwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLzAwMDEtbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42OTYyYTUwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXJ0c3Atc2VydmVyLzAwMDEtbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDk1Y2U5NTNlMzRjZDBlOWY1ZDQyY2U3OTAwYTk1NzJlN2JjOGNhNDcgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/VGltLVBoaWxpcHA9MjBNPUMzPUJDbGxlcj89IDx0aW1AY2VudHJpY3VsYXIuY29tPgorRGF0ZTogRnJpLCAxOCBPY3QgMjAxOSAwMDo0MjoxMiArMDEwMAorU3ViamVjdDogW1BBVENIXSBtZXNvbjogYnVpbGQgZ2lyIGV2ZW4gd2hlbiBjcm9zcy1jb21waWxpbmcgaWYgaW50cm9zcGVjdGlvbgorIHdhcyBlbmFibGVkIGV4cGxpY2l0bHkKKworVGhpcyBjYW4gYmUgbWFkZSB0byB3b3JrIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyB3aGVuCitjcm9zcy1jb21waWxpbmcsIHNvIGRlZmF1bHQgdG8gbm90IGJ1aWxkaW5nIGctaSBzdHVmZgord2hlbiBjcm9zcy1jb21waWxpbmcsIGJ1dCBhbGxvdyBpdCBpZiBpbnRyb3NwZWN0aW9uIHdhcworZW5hYmxlZCBleHBsaWNpdGx5IHZpYSAtRGludHJvc3BlY3Rpb249ZW5hYmxlZC4KKworU2VlIGdzdHJlYW1lci9nc3RyZWFtZXIjNDU0IGFuZCBnc3RyZWFtZXIvZ3N0cmVhbWVyIzM4MS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbOTVjZTk1M2UzNGNkMGU5ZjVkNDJjZTc5MDBhOTU3MmU3YmM4Y2E0N10KKworU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8Y3JnNzQ3NUBtYWlsYm94Lm9yZz4KKy0tLQorIG1lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggZTFlM2IxZC4uM2Y0NWYwZSAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTE3Myw3ICsxNzMsNyBAQCBlbmRpZgorIAorIGdpciA9IGZpbmRfcHJvZ3JhbSgnZy1pci1zY2FubmVyJywgcmVxdWlyZWQgOiBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykpCisgZ25vbWUgPSBpbXBvcnQoJ2dub21lJykKKy1idWlsZF9naXIgPSBnaXIuZm91bmQoKSBhbmQgbm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkKKytidWlsZF9naXIgPSBnaXIuZm91bmQoKSBhbmQgKG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIG9yIGdldF9vcHRpb24oJ2ludHJvc3BlY3Rpb24nKS5lbmFibGVkKCkpCisgZ2lyX2luaXRfc2VjdGlvbiA9IFsgJy0tYWRkLWluaXQtc2VjdGlvbj1leHRlcm4gdm9pZCBnc3RfaW5pdChnaW50KixnY2hhcioqKTsnICsgXAorICAgICAnZ19zZXRlbnYoIkdTVF9SRUdJU1RSWV8xLjAiLCAiQDBAIiwgVFJVRSk7Jy5mb3JtYXQobWVzb24uY3VycmVudF9idWlsZF9kaXIoKSArICcvZ2lyX2VtcHR5X3JlZ2lzdHJ5LnJlZycpICsgXAorICAgICAnZ19zZXRlbnYoIkdTVF9QTFVHSU5fUEFUSF8xXzAiLCAiIiwgVFJVRSk7JyArIFwKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NTMwMmVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNCArMCwwIEBACi1TVU1NQVJZID0gIkEgbGlicmFyeSBvbiB0b3Agb2YgR1N0cmVhbWVyIGZvciBidWlsZGluZyBhbiBSVFNQIHNlcnZlciIKLUhPTUVQQUdFID0gImh0dHA6Ly9jZ2l0LmZyZWVkZXNrdG9wLm9yZy9nc3RyZWFtZXIvZ3N0LXJ0c3Atc2VydmVyLyIKLVNFQ1RJT04gPSAibXVsdGltZWRpYSIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9Njc2MmVkNDQyYjM4MjIzODdhNTFjOTJkOTI4ZWFkMGQiCi0KLURFUEVORFMgPSAiZ3N0cmVhbWVyMS4wIGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhc2UiCi0KLVBOUkVBTCA9ICJnc3QtcnRzcC1zZXJ2ZXIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1BOUkVBTH0vJHtQTlJFQUx9LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZ3RrLWRvYy10d2Vha3MucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIzODBkNmE0MmU4NTZjMzJmY2VmYTUwOGFkNTcxMjllMCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiMGFiYWNhZDJmODZmNjBkNjM3ODFkMmIyNDQ0M2M1NjY4NzMzZThiMDg2NjRiYmVmOTQxMjQ5MDZkNzAwMTQ0IgotCi1TID0gIiR7V09SS0RJUn0vJHtQTlJFQUx9LSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCi0KLUVYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtZXhhbXBsZXMgLS1kaXNhYmxlLXRlc3RzIgotCi0jIFN0YXJ0aW5nIHdpdGggMS44LjAgZ3N0LXJ0c3Atc2VydmVyIGluY2x1ZGVzIGRlcGVuZGVuY3ktbGVzcyBwbHVnaW5zIGFzIHdlbGwKLUxJQlYgPSAiMS4wIgotcmVxdWlyZSBnc3QtcGx1Z2lucy1wYWNrYWdlLmluYwotCi1kZWxldGVfcGtnX200X2ZpbGUoKSB7Ci0gICAgICAgICMgVGhpcyBtNCBmaWxlIGlzIG91dCBvZiBkYXRlIGFuZCBpcyBtaXNzaW5nIFBLR19DT05GSUdfU1lTUk9PVF9QQVRIIHR3ZWFrcyB3aGljaCB3ZSBuZWVkIGZvciBpbnRyb3NwZWN0aW9uCi0gICAgICAgIHJtICIke1N9L2NvbW1vbi9tNC9wa2cubTQiIHx8IHRydWUKLX0KLQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiIGRlbGV0ZV9wa2dfbTRfZmlsZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC1ydHNwLXNlcnZlcl8xLjE2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xNi4yLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjAyYzNjODMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtcnRzcC1zZXJ2ZXJfMS4xNi4yLmJiCkBAIC0wLDAgKzEsMzEgQEAKK1NVTU1BUlkgPSAiQSBsaWJyYXJ5IG9uIHRvcCBvZiBHU3RyZWFtZXIgZm9yIGJ1aWxkaW5nIGFuIFJUU1Agc2VydmVyIgorSE9NRVBBR0UgPSAiaHR0cDovL2NnaXQuZnJlZWRlc2t0b3Aub3JnL2dzdHJlYW1lci9nc3QtcnRzcC1zZXJ2ZXIvIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorTElDRU5TRSA9ICJMR1BMdjIiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT02NzYyZWQ0NDJiMzgyMjM4N2E1MWM5MmQ5MjhlYWQwZCIKKworREVQRU5EUyA9ICJnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSIKKworUE5SRUFMID0gImdzdC1ydHNwLXNlcnZlciIKKworU1JDX1VSSSA9ICJodHRwczovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvc3JjLyR7UE5SRUFMfS8ke1BOUkVBTH0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjhhOTk4NzI1ODIwYzc3MWJhNDViZTZlMThiZmRmNzNhIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImRlMDdhMjgzN2IzYjA0ODIwY2U2ODI2NGE0OTA5ZjcwYzIyMWI4NWRiZmYwY2VkZTc5MjZlOWNkYmIxZGMyNmUiCisKK1MgPSAiJHtXT1JLRElSfS8ke1BOUkVBTH0tJHtQVn0iCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworRVhUUkFfT0VNRVNPTiArPSAiIFwKKyAgICAtRGV4YW1wbGVzPWRpc2FibGVkIFwKKyAgICAtRHRlc3RzPWRpc2FibGVkIFwKKyIKKworR0lSX01FU09OX0VOQUJMRV9GTEFHID0gImVuYWJsZWQiCitHSVJfTUVTT05fRElTQUJMRV9GTEFHID0gImRpc2FibGVkIgorCisjIFN0YXJ0aW5nIHdpdGggMS44LjAgZ3N0LXJ0c3Atc2VydmVyIGluY2x1ZGVzIGRlcGVuZGVuY3ktbGVzcyBwbHVnaW5zIGFzIHdlbGwKK3JlcXVpcmUgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtcGFja2FnaW5nLmluYwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpLzAwMDEtZ3N0LXZhYXBpLU1ha2VmaWxlLmFtLUFkZC1FR0xfQ0ZMQUdTLXRvLWxpYmdzdHZhYXBpLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaS8wMDAxLWdzdC12YWFwaS1NYWtlZmlsZS5hbS1BZGQtRUdMX0NGTEFHUy10by1saWJnc3R2YWFwaS0ucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ3Yjg5ODQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpLzAwMDEtZ3N0LXZhYXBpLU1ha2VmaWxlLmFtLUFkZC1FR0xfQ0ZMQUdTLXRvLWxpYmdzdHZhYXBpLS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gNTQwM2E4OWU2YTdhYzcyYTIzZTAyMjEwNzVjMGMxOWI1Zjg1YTAyMSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZhYmlvIEJlcnRvbiA8ZmFiaW8uYmVydG9uQG9zc3lzdGVtcy5jb20uYnI+Ci1EYXRlOiBXZWQsIDEzIEp1biAyMDE4IDA5OjA5OjI1IC0wMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIGdzdC92YWFwaS9NYWtlZmlsZS5hbTogQWRkIEVHTF9DRkxBR1MgdG8gbGliZ3N0dmFhcGkgQ0ZMQUdTCi1Pcmdhbml6YXRpb246IE8uUy4gU3lzdGVtcyBTb2Z0d2FyZSBMVERBLgotCi1XZSBuZWVkIHRoaXMgdG8gcGFzcyBjb3JyZWN0bHkgRUdMIENGTEFHUyB3aGVuIGJ1aWxkaW5nIHdpdGggRUdMIHN1cHBvcnQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBGYWJpbyBCZXJ0b24gPGZhYmlvLmJlcnRvbkBvc3N5c3RlbXMuY29tLmJyPgotLS0tCi0gZ3N0L3ZhYXBpL01ha2VmaWxlLmFtIHwgNCArKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQgaW5zZXJ0aW9ucygrKQotCi1kaWZmIC0tZ2l0IGEvZ3N0L3ZhYXBpL01ha2VmaWxlLmFtIGIvZ3N0L3ZhYXBpL01ha2VmaWxlLmFtCi1pbmRleCBiMjk5YWM5OC4uZDZjYWI3MWYgMTAwNjQ0Ci0tLS0gYS9nc3QvdmFhcGkvTWFrZWZpbGUuYW0KLSsrKyBiL2dzdC92YWFwaS9NYWtlZmlsZS5hbQotQEAgLTI0LDYgKzI0LDEwIEBAIGxpYmdzdHZhYXBpX0xJQlMgKz0gJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92YWFwaS9saWJnc3R2YWFwaS1nbHgubGEKLSBlbmRpZgotIAotIGlmIFVTRV9FR0wKLStsaWJnc3R2YWFwaV9DRkxBR1MgKz0gXAotKwkkKEVHTF9DRkxBR1MpCVwKLSsJJChOVUxMKQotKwotIGxpYmdzdHZhYXBpX0xJQlMgKz0gJCh0b3BfYnVpbGRkaXIpL2dzdC1saWJzL2dzdC92YWFwaS9saWJnc3R2YWFwaS1lZ2wubGEKLSBlbmRpZgotIAotLS0gCi0yLjE3LjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTYuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC12YWFwaV8xLjE2LjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI4YzIxMjYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTYuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQ5ICswLDAgQEAKLVNVTU1BUlkgPSAiVkEtQVBJIHN1cHBvcnQgdG8gR1N0cmVhbWVyIgotREVTQ1JJUFRJT04gPSAiZ3N0cmVhbWVyLXZhYXBpIGNvbnNpc3RzIG9mIGEgY29sbGVjdGlvbiBvZiBWQS1BUEkgXAotYmFzZWQgcGx1Z2lucyBmb3IgR1N0cmVhbWVyIGFuZCBoZWxwZXIgbGlicmFyaWVzOiBgdmFhcGlkZWNvZGUnLCBcCi1gdmFhcGljb252ZXJ0JywgYW5kIGB2YWFwaXNpbmsnLiIKLQotUkVBTFBOID0gImdzdHJlYW1lci12YWFwaSIKLQotTElDRU5TRSA9ICJMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9nc3RyZWFtZXIuZnJlZWRlc2t0b3Aub3JnL3NyYy8ke1JFQUxQTn0vJHtSRUFMUE59LSR7UFZ9LnRhci54eiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWdzdC12YWFwaS1NYWtlZmlsZS5hbS1BZGQtRUdMX0NGTEFHUy10by1saWJnc3R2YWFwaS0ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS12YWFwc2luay1kb3duZ3JhZGUtdG8tbWFyZ2luYWwucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxNWIwOGY3Njc3NzM1OWQ4N2IwYjRhNTYxZGIwNWYxZiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJjYjU3MGY2ZjFlNzhjYjM2NGZiZTNjNGZiODc1MTgyNGVlOWRiMGM5NDJiYTYxYjYyMzgwYjliNWFiYjc2MDNhIgotCi1TID0gIiR7V09SS0RJUn0vJHtSRUFMUE59LSR7UFZ9IgotREVQRU5EUyA9ICJsaWJ2YSBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPz0gIm9wZW5nbCIKLQotUEFDS0FHRVMgPSsgIiR7UE59LXRlc3RzIgotCi0jIE9wZW5HTCBwYWNrYWdlY29uZmlnIGZhY3RvcmVkIG91dCB0byBtYWtlIGl0IGVhc3kgZm9yIGRpc3Ryb3MKLSMgYW5kIEJTUCBsYXllcnMgdG8gcGljayBlaXRoZXIgZ2x4LCBlZ2wsIG9yIG5vIEdMLiBCeSBkZWZhdWx0LAotIyB0cnkgZGV0ZWN0aW5nIFgxMSBmaXJzdCwgYW5kIGlmIGZvdW5kICh3aXRoIE9wZW5HTCksIHVzZSBHTFgsCi0jIG90aGVyd2lzZSB0cnkgdG8gY2hlY2sgaWYgRUdMIGNhbiBiZSB1c2VkLgotUEFDS0FHRUNPTkZJR19HTCA/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ2dseCcsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgIGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAgICAgJ29wZW5nbCcsICdlZ2wnLCBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICcnLCBkKSwgZCl9IgotCi1QQUNLQUdFQ09ORklHID8/PSAiZHJtIFwKLSAgICAgICAgICAgICAgICAgICAke1BBQ0tBR0VDT05GSUdfR0x9IFwKLSAgICAgICAgICAgICAgICAgICAke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSIKLQotUEFDS0FHRUNPTkZJR1tkcm1dID0gIi0tZW5hYmxlLWRybSwtLWRpc2FibGUtZHJtLHVkZXYgbGliZHJtIgotUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi0tZW5hYmxlLWVnbCwtLWRpc2FibGUtZWdsLHZpcnR1YWwvZWdsIgotUEFDS0FHRUNPTkZJR1tnbHhdID0gIi0tZW5hYmxlLWdseCwtLWRpc2FibGUtZ2x4LHZpcnR1YWwvbGliZ2wiCi1QQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi0tZW5hYmxlLXdheWxhbmQsLS1kaXNhYmxlLXdheWxhbmQsd2F5bGFuZC1uYXRpdmUgd2F5bGFuZCB3YXlsYW5kLXByb3RvY29scyIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItLWVuYWJsZS14MTEsLS1kaXNhYmxlLXgxMSx2aXJ0dWFsL2xpYngxMSBsaWJ4cmFuZHIgbGlieHJlbmRlciIKLQotRklMRVNfJHtQTn0gKz0gIiR7bGliZGlyfS9nc3RyZWFtZXItKi8qLnNvIgotRklMRVNfJHtQTn0tZGJnICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLSovLmRlYnVnIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLSovKi5sYSAke2xpYmRpcn0vZ3N0cmVhbWVyLSovKi5hIgotRklMRVNfJHtQTn0tdGVzdHMgPSAiJHtiaW5kaXJ9LyoiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAtdmFhcGlfMS4xNi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTYuMi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xYmVkZjI1Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLXZhYXBpXzEuMTYuMi5iYgpAQCAtMCwwICsxLDU3IEBACitTVU1NQVJZID0gIlZBLUFQSSBzdXBwb3J0IHRvIEdTdHJlYW1lciIKK0RFU0NSSVBUSU9OID0gImdzdHJlYW1lci12YWFwaSBjb25zaXN0cyBvZiBhIGNvbGxlY3Rpb24gb2YgVkEtQVBJIFwKK2Jhc2VkIHBsdWdpbnMgZm9yIEdTdHJlYW1lciBhbmQgaGVscGVyIGxpYnJhcmllczogYHZhYXBpZGVjb2RlJywgXAorYHZhYXBpY29udmVydCcsIGFuZCBgdmFhcGlzaW5rJy4iCisKK1JFQUxQTiA9ICJnc3RyZWFtZXItdmFhcGkiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitTUkNfVVJJID0gImh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvJHtSRUFMUE59LyR7UkVBTFBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS12YWFwc2luay1kb3duZ3JhZGUtdG8tbWFyZ2luYWwucGF0Y2ggXAorICAgICAgICAgICAiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICIxM2Y3Y2I2YTY0YmRlMjRlNjdmNTYzMzc3NDg3ZGNjZSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIxOTFkZTdiMGFiNjRhODVkZDA4NzVjOTkwNzIxZTdiZTk1NTE4ZjYwZTJhOTEwNmJlY2ExNjIwMDRlZDdjNjAxIgorCitTID0gIiR7V09SS0RJUn0vJHtSRUFMUE59LSR7UFZ9IgorREVQRU5EUyA9ICJsaWJ2YSBnc3RyZWFtZXIxLjAgZ3N0cmVhbWVyMS4wLXBsdWdpbnMtYmFzZSBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYWQiCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIGd0ay1kb2MgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA/PSAib3BlbmdsIgorCitFWFRSQV9PRU1FU09OICs9ICIgXAorICAgIC1EZXhhbXBsZXM9ZGlzYWJsZWQgXAorIgorCitHVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCitHVEtET0NfTUVTT05fRU5BQkxFX0ZMQUcgPSAiZW5hYmxlZCIKK0dUS0RPQ19NRVNPTl9ESVNBQkxFX0ZMQUcgPSAiZGlzYWJsZWQiCisKK1BBQ0tBR0VTID0rICIke1BOfS10ZXN0cyIKKworIyBPcGVuR0wgcGFja2FnZWNvbmZpZyBmYWN0b3JlZCBvdXQgdG8gbWFrZSBpdCBlYXN5IGZvciBkaXN0cm9zCisjIGFuZCBCU1AgbGF5ZXJzIHRvIHBpY2sgZWl0aGVyIGdseCwgZWdsLCBvciBubyBHTC4gQnkgZGVmYXVsdCwKKyMgdHJ5IGRldGVjdGluZyBYMTEgZmlyc3QsIGFuZCBpZiBmb3VuZCAod2l0aCBPcGVuR0wpLCB1c2UgR0xYLAorIyBvdGhlcndpc2UgdHJ5IHRvIGNoZWNrIGlmIEVHTCBjYW4gYmUgdXNlZC4KK1BBQ0tBR0VDT05GSUdfR0wgPz0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExIG9wZW5nbCcsICdnbHgnLCBcCisgICAgICAgICAgICAgICAgICAgICAgICBiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgICAgICdvcGVuZ2wnLCAnZWdsJywgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnJywgZCksIGQpfSIKKworUEFDS0FHRUNPTkZJRyA/Pz0gImRybSBlbmNvZGVycyBcCisgICAgICAgICAgICAgICAgICAgJHtQQUNLQUdFQ09ORklHX0dMfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAnd2F5bGFuZCB4MTEnLCBkKX0iCisKK1BBQ0tBR0VDT05GSUdbZHJtXSA9ICItRHdpdGhfZHJtPXllcywtRHdpdGhfZHJtPW5vLHVkZXYgbGliZHJtIgorUEFDS0FHRUNPTkZJR1tlZ2xdID0gIi1Ed2l0aF9lZ2w9eWVzLC1Ed2l0aF9lZ2w9bm8sdmlydHVhbC9lZ2wiCitQQUNLQUdFQ09ORklHW2VuY29kZXJzXSA9ICItRHdpdGhfZW5jb2RlcnM9eWVzLC1Ed2l0aF9lbmNvZGVycz1ubyIKK1BBQ0tBR0VDT05GSUdbZ2x4XSA9ICItRHdpdGhfZ2x4PXllcywtRHdpdGhfZ2x4PW5vLHZpcnR1YWwvbGliZ2wiCitQQUNLQUdFQ09ORklHW3dheWxhbmRdID0gIi1Ed2l0aF93YXlsYW5kPXllcywtRHdpdGhfd2F5bGFuZD1ubyx3YXlsYW5kLW5hdGl2ZSB3YXlsYW5kIHdheWxhbmQtcHJvdG9jb2xzIgorUEFDS0FHRUNPTkZJR1t4MTFdID0gIi1Ed2l0aF94MTE9eWVzLC1Ed2l0aF94MTE9bm8sdmlydHVhbC9saWJ4MTEgbGlieHJhbmRyIGxpYnhyZW5kZXIiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLSovKi5zbyIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0qLy5kZWJ1ZyIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0qLyouYSIKK0ZJTEVTXyR7UE59LXRlc3RzID0gIiR7YmluZGlyfS8qIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1nc3QtZ3N0cGx1Z2lubG9hZGVyLmMtd2hlbi1lbnYtdmFyLWlzLXNldC1kby1ub3QtZmFsLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDEtZ3N0LWdzdHBsdWdpbmxvYWRlci5jLXdoZW4tZW52LXZhci1pcy1zZXQtZG8tbm90LWZhbC5wYXRjaApzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZmlsZXMvMDAwMS1nc3QtZ3N0cGx1Z2lubG9hZGVyLmMtd2hlbi1lbnYtdmFyLWlzLXNldC1kby1ub3QtZmFsLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMS1nc3QtZ3N0cGx1Z2lubG9hZGVyLmMtd2hlbi1lbnYtdmFyLWlzLXNldC1kby1ub3QtZmFsLnBhdGNoCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwMi1tZXNvbi1idWlsZC1naXItZXZlbi13aGVuLWNyb3NzLWNvbXBpbGluZy1pZi1pbnRyb3NwLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDItbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4xZWQ3MTk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDItbWVzb24tYnVpbGQtZ2lyLWV2ZW4td2hlbi1jcm9zcy1jb21waWxpbmctaWYtaW50cm9zcC5wYXRjaApAQCAtMCwwICsxLDM2IEBACitGcm9tIDM1ZGI0YTI0MzNmYmRmODYxMmNmOThiNWFhYjViMTRhZWI1MzcyZjggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiA9P1VURi04P3E/VGltLVBoaWxpcHA9MjBNPUMzPUJDbGxlcj89IDx0aW1AY2VudHJpY3VsYXIuY29tPgorRGF0ZTogVGh1LCAxNyBPY3QgMjAxOSAxMjoxMzozNSArMDEwMAorU3ViamVjdDogW1BBVENIXSBtZXNvbjogYnVpbGQgZ2lyIGV2ZW4gd2hlbiBjcm9zcy1jb21waWxpbmcgaWYgaW50cm9zcGVjdGlvbgorIHdhcyBlbmFibGVkIGV4cGxpY2l0bHkKKworVGhpcyBjYW4gYmUgbWFkZSB0byB3b3JrIGluIGNlcnRhaW4gY2lyY3Vtc3RhbmNlcyB3aGVuCitjcm9zcy1jb21waWxpbmcsIHNvIGRlZmF1bHQgdG8gbm90IGJ1aWxkaW5nIGctaSBzdHVmZgord2hlbiBjcm9zcy1jb21waWxpbmcsIGJ1dCBhbGxvdyBpdCBpZiBpbnRyb3NwZWN0aW9uIHdhcworZW5hYmxlZCBleHBsaWNpdGx5IHZpYSAtRGludHJvc3BlY3Rpb249ZW5hYmxlZC4KKworRml4ZXMgIzQ1NCBhbmQgIzM4MS4KKworVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbMzVkYjRhMjQzM2ZiZGY4NjEyY2Y5OGI1YWFiNWIxNGFlYjUzNzJmOF0KKworU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8Y3JnNzQ3NUBtYWlsYm94Lm9yZz4KKy0tLQorIG1lc29uLmJ1aWxkIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggOTBkOThkOGViLi5hNDdlN2YzNGUgMTAwNjQ0CistLS0gYS9tZXNvbi5idWlsZAorKysrIGIvbWVzb24uYnVpbGQKK0BAIC00NjYsNyArNDY2LDcgQEAgcnRfbGliID0gY2MuZmluZF9saWJyYXJ5KCdydCcsIHJlcXVpcmVkIDogZmFsc2UpCisgZ2lyID0gZmluZF9wcm9ncmFtKCdnLWlyLXNjYW5uZXInLCByZXF1aXJlZCA6IGdldF9vcHRpb24oJ2ludHJvc3BlY3Rpb24nKSkKKyBnbm9tZSA9IGltcG9ydCgnZ25vbWUnKQorIAorLWJ1aWxkX2dpciA9IGdpci5mb3VuZCgpIGFuZCBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKQorK2J1aWxkX2dpciA9IGdpci5mb3VuZCgpIGFuZCAobm90IG1lc29uLmlzX2Nyb3NzX2J1aWxkKCkgb3IgZ2V0X29wdGlvbignaW50cm9zcGVjdGlvbicpLmVuYWJsZWQoKSkKKyAKKyBnaXJfaW5pdF9zZWN0aW9uID0gWyAnLS1hZGQtaW5pdC1zZWN0aW9uPWV4dGVybiB2b2lkIGdzdF9pbml0KGdpbnQqLGdjaGFyKiopOycgKyBcCisgICAgICdnX3NldGVudigiR1NUX1JFR0lTVFJZX0RJU0FCTEUiLCAieWVzIiwgVFJVRSk7JyArIFwKKy0tIAorMi4xNy4xCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAzLW1lc29uLUFkZC12YWxncmluZC1mZWF0dXJlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDMtbWVzb24tQWRkLXZhbGdyaW5kLWZlYXR1cmUucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjU1MzM0MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMC8wMDAzLW1lc29uLUFkZC12YWxncmluZC1mZWF0dXJlLnBhdGNoCkBAIC0wLDAgKzEsNzQgQEAKK0Zyb20gZjZjNzk3M2MwM2Q5YmE3ZGFiNjBjNDk2ZTc2OGM1ZTZjNGVlODI0YyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENhcmxvcyBSYWZhZWwgR2lhbmkgPGNyZzc0NzVAbWFpbGJveC5vcmc+CitEYXRlOiBTdW4sIDIwIE9jdCAyMDE5IDEwOjM2OjQ0ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc29uOiBBZGQgdmFsZ3JpbmQgZmVhdHVyZQorCitUaGlzIGFsbG93cyBmb3IgZW5hYmxpbmcvZGlzYWJsaW5nIFZhbGdyaW5kIHN1cHBvcnQuIFNpbmNlIFZhbGdyaW5kIGlzCithbiBleHRlcm5hbCBkZXBlbmRlbmN5LCBzdWNoIGEgZmVhdHVyZSBpcyBuZWVkZWQgYnkgYnVpbGQgZW52aXJvbmVtbnRzCitzdWNoIGFzIFlvY3RvIHRvIG1ha2Ugc3VyZSBidWlsZHMgYXJlIGRldGVybWluaXN0aWMuIFRoZXNlIGNoYW5nZXMgYWxzbworYWRkIG1vcmUgVmFsZ3JpbmQgc3BlY2lmaWMgY29uZmlndXJlIGxvZyBvdXRwdXQuCisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworCitTaWduZWQtb2ZmLWJ5OiBDYXJsb3MgUmFmYWVsIEdpYW5pIDxjcmc3NDc1QG1haWxib3gub3JnPgorLS0tCisgbWVzb24uYnVpbGQgICAgICAgfCAyMyArKysrKysrKysrKysrKysrKysrKysrLQorIG1lc29uX29wdGlvbnMudHh0IHwgIDEgKworIDIgZmlsZXMgY2hhbmdlZCwgMjMgaW5zZXJ0aW9ucygrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAoraW5kZXggYjU1ZWNjNS4uNDc1MTc2MSAxMDA2NDQKKy0tLSBhL21lc29uLmJ1aWxkCisrKysgYi9tZXNvbi5idWlsZAorQEAgLTE5OSw3ICsxOTksNiBAQCBjaGVja19oZWFkZXJzID0gWworICAgJ3N5cy93YWl0LmgnLAorICAgJ3Vjb250ZXh0LmgnLAorICAgJ3VuaXN0ZC5oJywKKy0gICd2YWxncmluZC92YWxncmluZC5oJywKKyAgICdzeXMvcmVzb3VyY2UuaCcsCisgXQorIAorQEAgLTIxNCw2ICsyMTMsMjggQEAgZm9yZWFjaCBoIDogY2hlY2tfaGVhZGVycworICAgZW5kaWYKKyBlbmRmb3JlYWNoCisgCisrdmFsZ3JpbmRfb3B0aW9uID0gZ2V0X29wdGlvbigndmFsZ3JpbmQnKQorK2lmIHZhbGdyaW5kX29wdGlvbi5kaXNhYmxlZCgpCisrICBtZXNzYWdlKCdWYWxncmluZCBzdXBwb3J0IG5vdCByZXF1ZXN0ZWQ7IGRpc2FibGVkLicpCisrZWxzZQorKyAgdmFsZ3JpbmRfaGVhZGVyID0gJ3ZhbGdyaW5kL3ZhbGdyaW5kLmgnCisrICBoYXNfdmFsZ3JpbmRfaGVhZGVyID0gY2MuaGFzX2hlYWRlcih2YWxncmluZF9oZWFkZXIpCisrICBpZiBoYXNfdmFsZ3JpbmRfaGVhZGVyCisrICAgIG1lc3NhZ2UoJ1ZhbGdyaW5kIHN1cHBvcnQgcmVxdWVzdGVkLCBhbmQgaGVhZGVyICcgKyB2YWxncmluZF9oZWFkZXIgKyBcCisrICAgICAgICAnIGZvdW5kLiBFbmFibGVkIFZhbGdyaW5kIHN1cHBvcnQuJykKKysgICAgZGVmaW5lID0gJ0hBVkVfJyArIHZhbGdyaW5kX2hlYWRlci51bmRlcnNjb3JpZnkoKS50b191cHBlcigpCisrICAgIGNkYXRhLnNldChkZWZpbmUsIDEpCisrICBlbHNlCisrICAgIGlmIHZhbGdyaW5kX29wdGlvbi5lbmFibGVkKCkKKysgICAgICBlcnJvcignVmFsZ3JpbmQgc3VwcG9ydCByZXF1ZXN0ZWQgYW5kIHNldCBhcyByZXF1aXJlZCwgYnV0IGhlYWRlciAnICsgXAorKyAgICAgICAgdmFsZ3JpbmRfaGVhZGVyICsgJyBub3QgZm91bmQuJykKKysgICAgZWxzZQorKyAgICAgIG1lc3NhZ2UoJ1ZhbGdyaW5kIHN1cHBvcnQgcmVxdWVzdGVkLCBidXQgaGVhZGVyICcgKyB2YWxncmluZF9oZWFkZXIgKyBcCisrICAgICAgICAnIG5vdCBmb3VuZC4gRGlzYWJsaW5nIFZhbGdyaW5kIHN1cHBvcnQuJykKKysgICAgZW5kaWYKKysgIGVuZGlmCisrZW5kaWYKKysKKyBpZiBjYy5oYXNfbWVtYmVyKCdzdHJ1Y3QgdG0nLCAndG1fZ210b2ZmJywgcHJlZml4IDogJyNpbmNsdWRlIDx0aW1lLmg+JykKKyAgIGNkYXRhLnNldCgnSEFWRV9UTV9HTVRPRkYnLCAxKQorIGVuZGlmCitkaWZmIC0tZ2l0IGEvbWVzb25fb3B0aW9ucy50eHQgYi9tZXNvbl9vcHRpb25zLnR4dAoraW5kZXggZTdmZjdiYS4uOGFmZGUzOSAxMDA2NDQKKy0tLSBhL21lc29uX29wdGlvbnMudHh0CisrKysgYi9tZXNvbl9vcHRpb25zLnR4dAorQEAgLTE5LDYgKzE5LDcgQEAgb3B0aW9uKCdtZW1vcnktYWxpZ25tZW50JywgdHlwZTogJ2NvbWJvJywKKyAKKyAjIEZlYXR1cmUgb3B0aW9ucworIG9wdGlvbignY2hlY2snLCB0eXBlIDogJ2ZlYXR1cmUnLCB2YWx1ZSA6ICdhdXRvJywgZGVzY3JpcHRpb24gOiAnQnVpbGQgdW5pdCB0ZXN0IGxpYnJhcmllcycpCisrb3B0aW9uKCd2YWxncmluZCcsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdFbmFibGUgVmFsZ3JpbmQgc3VwcG9ydCcpCisgb3B0aW9uKCdsaWJ1bndpbmQnLCB0eXBlIDogJ2ZlYXR1cmUnLCB2YWx1ZSA6ICdhdXRvJywgZGVzY3JpcHRpb24gOiAnVXNlIGxpYnVud2luZCB0byBnZW5lcmF0ZSBiYWNrdHJhY2VzJykKKyBvcHRpb24oJ2xpYmR3JywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ1VzZSBsaWJkdyB0byBnZW5lcmF0ZSBiZXR0ZXIgYmFja3RyYWNlcyBmcm9tIGxpYnVud2luZCcpCisgb3B0aW9uKCdkYmdoZWxwJywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ1VzZSBkYmdoZWxwIHRvIGdlbmVyYXRlIGJhY2t0cmFjZXMnKQorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDQtbWVzb24tQWRkLW9wdGlvbi1mb3ItaW5zdGFsbGVkLXRlc3RzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wLzAwMDQtbWVzb24tQWRkLW9wdGlvbi1mb3ItaW5zdGFsbGVkLXRlc3RzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBlNmM0NGUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvMDAwNC1tZXNvbi1BZGQtb3B0aW9uLWZvci1pbnN0YWxsZWQtdGVzdHMucGF0Y2gKQEAgLTAsMCArMSwyNTcgQEAKK0Zyb20gYjg0MzQwMDI4NDc1MTk2ODg2Mjc1MWRmZTkzODUzZjE1MTU1MWM2NCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IENhcmxvcyBSYWZhZWwgR2lhbmkgPGNyZzc0NzVAbWFpbGJveC5vcmc+CitEYXRlOiBGcmksIDI1IE9jdCAyMDE5IDAwOjA2OjI2ICswMjAwCitTdWJqZWN0OiBbUEFUQ0hdIG1lc29uOiBBZGQgb3B0aW9uIGZvciBpbnN0YWxsZWQgdGVzdHMKKworVGhpcyBhZGRzIGFuIG9wdGlvbiBmb3IgcHJvZHVjaW5nIGluc3RhbGxlZCB2ZXJzaW9ucyBvZiB0aGUgdW5pdCB0ZXN0cy4KK1RoZXNlIHZlcnNpb25zIGRvbid0IG5lZWQgbWVzb24gdG8gcnVuIChvbmx5IGEgc21hbGwgc2hlbGwgc2NyaXB0KS4gVGhpcworbWFrZXMgaXQgZWFzaWVyIHRvIHJ1biBjcm9zcyBjb21waWxlZCB0ZXN0cyBvbiBhIHRhcmdldCBtYWNoaW5lLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKKworU2lnbmVkLW9mZi1ieTogQ2FybG9zIFJhZmFlbCBHaWFuaSA8Y3JnNzQ3NUBtYWlsYm94Lm9yZz4KKy0tLQorIGJ1aWxkLWF1eC9nZW4taW5zdGFsbGVkLXRlc3QtZGVzYy5weSAgICAgfCAxOCArKysrKysKKyBidWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LXNoc2NyaXB0LnB5IHwgMjUgKysrKysrKysKKyBtZXNvbl9vcHRpb25zLnR4dCAgICAgICAgICAgICAgICAgICAgICAgIHwgIDIgKworIHRlc3RzL2NoZWNrL21lc29uLmJ1aWxkICAgICAgICAgICAgICAgICAgfCA0NiArKysrKysrKysrKysrLQorIHRlc3RzL2ZpbGVzL3Rlc3RmaWxlICAgICAgICAgICAgICAgICAgICAgfCA4MCArKysrKysrKysrKysrKysrKysrKysrKysKKyA1IGZpbGVzIGNoYW5nZWQsIDE3MCBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisgY3JlYXRlIG1vZGUgMTAwNjQ0IGJ1aWxkLWF1eC9nZW4taW5zdGFsbGVkLXRlc3QtZGVzYy5weQorIGNyZWF0ZSBtb2RlIDEwMDY0NCBidWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LXNoc2NyaXB0LnB5CisgY3JlYXRlIG1vZGUgMTAwNjQ0IHRlc3RzL2ZpbGVzL3Rlc3RmaWxlCisKK2RpZmYgLS1naXQgYS9idWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LWRlc2MucHkgYi9idWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LWRlc2MucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi42OWU4YTBmCistLS0gL2Rldi9udWxsCisrKysgYi9idWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LWRlc2MucHkKK0BAIC0wLDAgKzEsMTggQEAKKytpbXBvcnQgc3lzCisraW1wb3J0IG9zCisraW1wb3J0IGFyZ3BhcnNlCisrCisrZGVmIHdyaXRlX3RlbXBsYXRlKGZpbGVuYW1lLCBkYXRhKToKKysgICAgd2l0aCBvcGVuKGZpbGVuYW1lLCAndycpIGFzIGY6CisrICAgICAgICBmLndyaXRlKGRhdGEpCisrCisrZGVmIGJ1aWxkX3RlbXBsYXRlKHRlc3RkaXIsIHRlc3RuYW1lKToKKysgICAgcmV0dXJuICJbVGVzdF1cblR5cGU9c2Vzc2lvblxuRXhlYz17fVxuIi5mb3JtYXQob3MucGF0aC5qb2luKHRlc3RkaXIsIHRlc3RuYW1lKSkKKysKKythcmdwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nR2VuZXJhdGUgaW5zdGFsbGVkLXRlc3QgZGF0YS4nKQorK2FyZ3BhcnNlci5hZGRfYXJndW1lbnQoJy0tdGVzdC1leGVjZGlyJywgbWV0YXZhcj0nZGlyJywgcmVxdWlyZWQ9VHJ1ZSwgaGVscD0nSW5zdGFsbGVkIHRlc3QgZGlyZWN0b3J5JykKKythcmdwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXRlc3RuYW1lJywgbWV0YXZhcj0nbmFtZScsIHJlcXVpcmVkPVRydWUsIGhlbHA9J0luc3RhbGxlZCB0ZXN0IG5hbWUnKQorK2FyZ3BhcnNlci5hZGRfYXJndW1lbnQoJy0tb3V0cHV0JywgbWV0YXZhcj0nZmlsZScsIHJlcXVpcmVkPVRydWUsIGhlbHA9J091dHB1dCBmaWxlJykKKythcmdzID0gYXJncGFyc2VyLnBhcnNlX2FyZ3MoKQorKworK3dyaXRlX3RlbXBsYXRlKGFyZ3Mub3V0cHV0LCBidWlsZF90ZW1wbGF0ZShhcmdzLnRlc3RfZXhlY2RpciwgYXJncy50ZXN0bmFtZSkpCitkaWZmIC0tZ2l0IGEvYnVpbGQtYXV4L2dlbi1pbnN0YWxsZWQtdGVzdC1zaHNjcmlwdC5weSBiL2J1aWxkLWF1eC9nZW4taW5zdGFsbGVkLXRlc3Qtc2hzY3JpcHQucHkKK25ldyBmaWxlIG1vZGUgMTAwNjQ0CitpbmRleCAwMDAwMDAwLi41ZGE4NmZiCistLS0gL2Rldi9udWxsCisrKysgYi9idWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LXNoc2NyaXB0LnB5CitAQCAtMCwwICsxLDI1IEBACisraW1wb3J0IHN5cworK2ltcG9ydCBvcworK2ltcG9ydCBhcmdwYXJzZQorKworK2RlZiB3cml0ZV90ZW1wbGF0ZShmaWxlbmFtZSwgZGF0YSk6CisrICAgIHdpdGggb3BlbihmaWxlbmFtZSwgJ3cnKSBhcyBmOgorKyAgICAgICAgZi53cml0ZShkYXRhKQorKworK2RlZiBidWlsZF90ZW1wbGF0ZSh0ZXN0ZGlyLCB0ZXN0bmFtZSk6CisrICAgIHJldHVybiAnJy5qb2luKFsKKysgICAgICAgICIjIS91c3IvYmluL2VudiBzaFxuIiwKKysgICAgICAgICJleHBvcnQgR1NUX1NUQVRFX0lHTk9SRV9FTEVNRU5UUz0nJ1xuIiwKKysgICAgICAgICJleHBvcnQgQ0tfREVGQVVMVF9USU1FT1VUPTIwXG4iLAorKyAgICAgICAgImV4cG9ydCBHU1RfUExVR0lOX0xPQURJTkdfV0hJVEVMSVNUPSdnc3RyZWFtZXInXG4iLAorKyAgICAgICAgInt9XG4iLmZvcm1hdChvcy5wYXRoLmpvaW4odGVzdGRpciwgdGVzdG5hbWUpKSwKKysgICAgXSkKKysKKythcmdwYXJzZXIgPSBhcmdwYXJzZS5Bcmd1bWVudFBhcnNlcihkZXNjcmlwdGlvbj0nR2VuZXJhdGUgaW5zdGFsbGVkLXRlc3QgZGF0YS4nKQorK2FyZ3BhcnNlci5hZGRfYXJndW1lbnQoJy0tdGVzdC1leGVjZGlyJywgbWV0YXZhcj0nZGlyJywgcmVxdWlyZWQ9VHJ1ZSwgaGVscD0nSW5zdGFsbGVkIHRlc3QgZGlyZWN0b3J5JykKKythcmdwYXJzZXIuYWRkX2FyZ3VtZW50KCctLXRlc3RuYW1lJywgbWV0YXZhcj0nbmFtZScsIHJlcXVpcmVkPVRydWUsIGhlbHA9J0luc3RhbGxlZCB0ZXN0IG5hbWUnKQorK2FyZ3BhcnNlci5hZGRfYXJndW1lbnQoJy0tb3V0cHV0JywgbWV0YXZhcj0nZmlsZScsIHJlcXVpcmVkPVRydWUsIGhlbHA9J091dHB1dCBmaWxlJykKKythcmdzID0gYXJncGFyc2VyLnBhcnNlX2FyZ3MoKQorKworK3dyaXRlX3RlbXBsYXRlKGFyZ3Mub3V0cHV0LCBidWlsZF90ZW1wbGF0ZShhcmdzLnRlc3RfZXhlY2RpciwgYXJncy50ZXN0bmFtZSkpCisrb3MuY2htb2QoYXJncy5vdXRwdXQsIDBvNzU1KQorZGlmZiAtLWdpdCBhL21lc29uX29wdGlvbnMudHh0IGIvbWVzb25fb3B0aW9ucy50eHQKK2luZGV4IDhhZmRlMzkuLjg4ODRkY2MgMTAwNjQ0CistLS0gYS9tZXNvbl9vcHRpb25zLnR4dAorKysrIGIvbWVzb25fb3B0aW9ucy50eHQKK0BAIC0xNiw2ICsxNiw4IEBAIG9wdGlvbigncG9pc29uaW5nJywgdHlwZSA6ICdib29sZWFuJywgdmFsdWUgOiBmYWxzZSwgZGVzY3JpcHRpb24gOiAnRW5hYmxlIHBvaXNvCisgb3B0aW9uKCdtZW1vcnktYWxpZ25tZW50JywgdHlwZTogJ2NvbWJvJywKKyAgICAgICAgY2hvaWNlcyA6IFsnMScsICcyJywgJzQnLCAnOCcsICcxNicsICczMicsICc2NCcsICcxMjgnLCAnMjU2JywgJzUxMicsICcxMDI0JywgJzIwNDgnLCAnNDA5NicsICc4MTkyJywgJ21hbGxvYycsICdwYWdlc2l6ZSddLAorICAgICAgICB2YWx1ZTogJ21hbGxvYycpCisrb3B0aW9uKCdpbnN0YWxsZWQtdGVzdHMnLCB0eXBlIDogJ2Jvb2xlYW4nLCB2YWx1ZSA6IGZhbHNlLCBkZXNjcmlwdGlvbiA6ICdlbmFibGUgaW5zdGFsbGVkIHRlc3RzJykKKytvcHRpb24oJ3Rlc3QtZmlsZXMtcGF0aCcsIHR5cGUgOiAnc3RyaW5nJywgZGVzY3JpcHRpb24gOiAnUGF0aCB3aGVyZSB0byBmaW5kIHRlc3QgZmlsZXMnKQorIAorICMgRmVhdHVyZSBvcHRpb25zCisgb3B0aW9uKCdjaGVjaycsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdCdWlsZCB1bml0IHRlc3QgbGlicmFyaWVzJykKK2RpZmYgLS1naXQgYS90ZXN0cy9jaGVjay9tZXNvbi5idWlsZCBiL3Rlc3RzL2NoZWNrL21lc29uLmJ1aWxkCitpbmRleCAwNGRhODNmLi4yZGI3Zjc2IDEwMDY0NAorLS0tIGEvdGVzdHMvY2hlY2svbWVzb24uYnVpbGQKKysrKyBiL3Rlc3RzL2NoZWNrL21lc29uLmJ1aWxkCitAQCAtMTE4LDExICsxMTgsMTcgQEAgaWYgYWRkX2xhbmd1YWdlcygnY3BwJywgcmVxdWlyZWQgOiBmYWxzZSkKKyAgIF0KKyBlbmRpZgorIAorK3Rlc3RfZmlsZXNfcGF0aCA9IGdldF9vcHRpb24oJ3Rlc3QtZmlsZXMtcGF0aCcpCisraWYgdGVzdF9maWxlc19wYXRoID09ICcnCisrICB0ZXN0X2ZpbGVzX3BhdGggPSBtZXNvbi5jdXJyZW50X3NvdXJjZV9kaXIoKSArICcvLi4vZmlsZXMnCisrZW5kaWYKKyttZXNzYWdlKCdVc2luZyBwYXRoICJAMEAiIGFzIHRoZSBwYXRoIHRvIHJlYWQgdGVzdCBmaWxlcyBmcm9tJy5mb3JtYXQodGVzdF9maWxlc19wYXRoKSkKKysKKyB0ZXN0X2RlZmluZXMgPSBbCisgICAnLVVHX0RJU0FCTEVfQVNTRVJUJywKKyAgICctVUdfRElTQUJMRV9DQVNUX0NIRUNLUycsCisgICAnLURHU1RfQ0hFQ0tfVEVTVF9FTlZJUk9OTUVOVF9CRUFDT049IkdTVF9TVEFURV9JR05PUkVfRUxFTUVOVFMiJywKKy0gICctRFRFU1RGSUxFPSInICsgbWVzb24uY3VycmVudF9zb3VyY2VfZGlyKCkgKyAnL21lc29uLmJ1aWxkIicsCisrICAnLURURVNURklMRT0iQDBAIicuZm9ybWF0KHRlc3RfZmlsZXNfcGF0aCArICcvdGVzdGZpbGUnKSwKKyAgICctREdTVF9VU0VfVU5TVEFCTEVfQVBJJywKKyAgICctREdTVF9ESVNBQkxFX0RFUFJFQ0FURUQnLAorIF0KK0BAIC0xMzcsNiArMTQzLDE0IEBAIGVuZGlmCisgZ2xpYl9kZXBzID0gW2dpb19kZXAsIGdvYmplY3RfZGVwLCBnbW9kdWxlX2RlcCwgZ2xpYl9kZXBdCisgZ3N0X2RlcHMgPSBbZ3N0X2RlcCwgZ3N0X2Jhc2VfZGVwLCBnc3RfY2hlY2tfZGVwLCBnc3RfbmV0X2RlcCwgZ3N0X2NvbnRyb2xsZXJfZGVwXQorIAorK2luc3RhbGxlZF90ZXN0c19kYXRhZGlyID0gam9pbl9wYXRocyhwcmVmaXgsIGdldF9vcHRpb24oJ2RhdGFkaXInKSwgJ2luc3RhbGxlZC10ZXN0cycsICdnc3RyZWFtZXItMS4wJykKKytpbnN0YWxsZWRfdGVzdHNfZXhlY2RpciA9IGpvaW5fcGF0aHMocHJlZml4LCBsaWJleGVjZGlyLCAnaW5zdGFsbGVkLXRlc3RzJywgJ2dzdHJlYW1lci0xLjAnKQorK2luc3RhbGxlZF90ZXN0c19lbmFibGVkID0gZ2V0X29wdGlvbignaW5zdGFsbGVkLXRlc3RzJykKKysKKytweXRob24gPSBpbXBvcnQoJ3B5dGhvbicpLmZpbmRfaW5zdGFsbGF0aW9uKCkKKytnZW5faW5zdGFsbGVkX3Rlc3RfZGVzYyA9IGZpbGVzKCcuLi8uLi9idWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LWRlc2MucHknKQorK2dlbl9pbnN0YWxsZWRfdGVzdF9zaHNjcmlwdCA9IGZpbGVzKCcuLi8uLi9idWlsZC1hdXgvZ2VuLWluc3RhbGxlZC10ZXN0LXNoc2NyaXB0LnB5JykKKysKKyBmb3JlYWNoIHQgOiBjb3JlX3Rlc3RzCisgICBmbmFtZSA9IHRbMF0KKyAgIHRlc3RfbmFtZSA9IGZuYW1lLnNwbGl0KCcuJylbMF0udW5kZXJzY29yaWZ5KCkKK0BAIC0xNTAsOCArMTY0LDM4IEBAIGZvcmVhY2ggdCA6IGNvcmVfdGVzdHMKKyAgICAgICAgIGluY2x1ZGVfZGlyZWN0b3JpZXMgOiBbY29uZmlnaW5jXSwKKyAgICAgICAgIGxpbmtfd2l0aCA6IGxpbmtfd2l0aF9saWJzLAorICAgICAgICAgZGVwZW5kZW5jaWVzIDogdGVzdF9kZXBzICsgZ2xpYl9kZXBzICsgZ3N0X2RlcHMsCisrICAgICAgICBpbnN0YWxsX2RpcjogaW5zdGFsbGVkX3Rlc3RzX2V4ZWNkaXIsCisrICAgICAgICBpbnN0YWxsOiBpbnN0YWxsZWRfdGVzdHNfZW5hYmxlZAorICAgICApCisgCisrICAgIGlmIGluc3RhbGxlZF90ZXN0c19lbmFibGVkCisrICAgICAgaW5zdGFsbGVkX3Rlc3Rfc2hzY3JpcHQgPSB0ZXN0X25hbWUgKyAnLnNoJworKyAgICAgIHNoc2NyaXB0ID0gY3VzdG9tX3RhcmdldCAodGVzdF9uYW1lICsgJ19zaHNjcmlwdCcsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQ6IGluc3RhbGxlZF90ZXN0X3Noc2NyaXB0LAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZDogWworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBweXRob24sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdlbl9pbnN0YWxsZWRfdGVzdF9zaHNjcmlwdCwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tdGVzdC1leGVjZGlyPUAwQCcuZm9ybWF0KGluc3RhbGxlZF90ZXN0c19leGVjZGlyKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tdGVzdG5hbWU9QDBAJy5mb3JtYXQodGVzdF9uYW1lKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tb3V0cHV0PUAwQCcuZm9ybWF0KGpvaW5fcGF0aHMoJ0BPVVRESVJAJywgaW5zdGFsbGVkX3Rlc3Rfc2hzY3JpcHQpKSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsOiB0cnVlLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbF9kaXI6IGluc3RhbGxlZF90ZXN0c19leGVjZGlyKQorKworKyAgICAgIGluc3RhbGxlZF90ZXN0X2Rlc2MgPSB0ZXN0X25hbWUgKyAnLnRlc3QnCisrICAgICAgZGF0YSA9IGN1c3RvbV90YXJnZXQodGVzdF9uYW1lICsgJ19kZXNjJywKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBvdXRwdXQ6IGluc3RhbGxlZF90ZXN0X2Rlc2MsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgY29tbWFuZDogWworKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHl0aG9uLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZ2VuX2luc3RhbGxlZF90ZXN0X2Rlc2MsCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnLS10ZXN0LWV4ZWNkaXI9QDBAJy5mb3JtYXQoaW5zdGFsbGVkX3Rlc3RzX2V4ZWNkaXIpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tdGVzdG5hbWU9QDBAJy5mb3JtYXQoaW5zdGFsbGVkX3Rlc3Rfc2hzY3JpcHQpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJy0tb3V0cHV0PUAwQCcuZm9ybWF0KGpvaW5fcGF0aHMoJ0BPVVRESVJAJywgaW5zdGFsbGVkX3Rlc3RfZGVzYykpLAorKyAgICAgICAgICAgICAgICAgICAgICAgICAgIF0sCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5zdGFsbDogdHJ1ZSwKKysgICAgICAgICAgICAgICAgICAgICAgICAgICBpbnN0YWxsX2RpcjogaW5zdGFsbGVkX3Rlc3RzX2RhdGFkaXIpCisrICAgIGVuZGlmCisrCisgICAgIGVudiA9IGVudmlyb25tZW50KCkKKyAgICAgZW52LnNldCgnR1NUX1BMVUdJTl9QQVRIXzFfMCcsIG1lc29uLmJ1aWxkX3Jvb3QoKSkKKyAgICAgZW52LnNldCgnR1NUX1BMVUdJTl9TWVNURU1fUEFUSF8xXzAnLCAnJykKK2RpZmYgLS1naXQgYS90ZXN0cy9maWxlcy90ZXN0ZmlsZSBiL3Rlc3RzL2ZpbGVzL3Rlc3RmaWxlCituZXcgZmlsZSBtb2RlIDEwMDY0NAoraW5kZXggMDAwMDAwMC4uODk5NTRlMAorLS0tIC9kZXYvbnVsbAorKysrIGIvdGVzdHMvZmlsZXMvdGVzdGZpbGUKK0BAIC0wLDAgKzEsODAgQEAKKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCisrLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4KKysuLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLgorKy4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uLi4uCistLSAKKzIuMTcuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjAvY2FwZml4LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wL2NhcGZpeC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43Y2EzZDVhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wL2NhcGZpeC5wYXRjaApAQCAtMCwwICsxLDM3IEBACitDdXJyZW50bHkgZ3N0cmVhbWVyIGNvbmZpZ3VyYXRpb24gZGVwZW5kcyBvbiB3aGV0aGVyIHNldGNhcCBpcyBmb3VuZCBvbiB0aGUgaG9zdAorc3lzdGVtLiBUdXJuIHRoaXMgaW50byBhIGNvbmZpZ3VyZSBvcHRpb24gdG8gbWFrZSBidWlsZHMgZGV0ZXJpbmlzdGljLgorCitSUCAyMDIwLzIvMTkKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0luZGV4OiBnc3RyZWFtZXItMS4xNi4xL2xpYnMvZ3N0L2hlbHBlcnMvbWVzb24uYnVpbGQKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnc3RyZWFtZXItMS4xNi4xLm9yaWcvbGlicy9nc3QvaGVscGVycy9tZXNvbi5idWlsZAorKysrIGdzdHJlYW1lci0xLjE2LjEvbGlicy9nc3QvaGVscGVycy9tZXNvbi5idWlsZAorQEAgLTczLDcgKzczLDEyIEBAIGlmIGhhdmVfcHRwCisgICAgIGVuZGlmCisgICBlbmRpZgorIAorLSAgc2V0Y2FwID0gZmluZF9wcm9ncmFtKCdzZXRjYXAnLCAnL3Vzci9zYmluL3NldGNhcCcsICcvc2Jpbi9zZXRjYXAnLCByZXF1aXJlZCA6IGZhbHNlKQorKyAgc2V0Y2FwX2ZlYXR1cmUgPSBnZXRfb3B0aW9uKCdzZXRjYXAnKQorKyAgaWYgc2V0Y2FwX2ZlYXR1cmUuZGlzYWJsZWQoKQorKyAgICBzZXRjYXAgPSBmaW5kX3Byb2dyYW0oJ2RvbnRleGlzdCcsIHJlcXVpcmVkIDogZmFsc2UpCisrICBlbHNlCisrICAgIHNldGNhcCA9IGZpbmRfcHJvZ3JhbSgnc2V0Y2FwJywgJy91c3Ivc2Jpbi9zZXRjYXAnLCAnL3NiaW4vc2V0Y2FwJywgcmVxdWlyZWQgOiBmYWxzZSkKKysgIGVuZGlmCisgCisgICAjIHVzZXIvZ3JvdXAgdG8gY2hhbmdlIHRvIGluIGdzdC1wdHAtaGVscGVyCisgICBwdHBfaGVscGVyX3NldHVpZF91c2VyID0gZ2V0X29wdGlvbigncHRwLWhlbHBlci1zZXR1aWQtdXNlcicpCitJbmRleDogZ3N0cmVhbWVyLTEuMTYuMS9tZXNvbl9vcHRpb25zLnR4dAorPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGdzdHJlYW1lci0xLjE2LjEub3JpZy9tZXNvbl9vcHRpb25zLnR4dAorKysrIGdzdHJlYW1lci0xLjE2LjEvbWVzb25fb3B0aW9ucy50eHQKK0BAIC0yNiw2ICsyNiw3IEBAIG9wdGlvbignbGlidW53aW5kJywgdHlwZSA6ICdmZWF0dXJlJywgdmEKKyBvcHRpb24oJ2xpYmR3JywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ1VzZSBsaWJkdyB0byBnZW5lcmF0ZSBiZXR0ZXIgYmFja3RyYWNlcyBmcm9tIGxpYnVud2luZCcpCisgb3B0aW9uKCdkYmdoZWxwJywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ1VzZSBkYmdoZWxwIHRvIGdlbmVyYXRlIGJhY2t0cmFjZXMnKQorIG9wdGlvbignYmFzaC1jb21wbGV0aW9uJywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIGRlc2NyaXB0aW9uIDogJ0luc3RhbGwgYmFzaCBjb21wbGV0aW9uIGZpbGVzJykKKytvcHRpb24oJ3NldGNhcCcsIHR5cGUgOiAnZmVhdHVyZScsIHZhbHVlIDogJ2F1dG8nLCBkZXNjcmlwdGlvbiA6ICdVc2Ugc2V0Y2FwJykKKyAKKyAjIENvbW1vbiBmZWF0dXJlIG9wdGlvbnMKKyBvcHRpb24oJ2V4YW1wbGVzJywgdHlwZSA6ICdmZWF0dXJlJywgdmFsdWUgOiAnYXV0bycsIHlpZWxkIDogdHJ1ZSkKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjE2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2dzdHJlYW1lci9nc3RyZWFtZXIxLjBfMS4xNi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmZjkyZjYzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjE2LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw5MSArMCwwIEBACi1TVU1NQVJZID0gIkdTdHJlYW1lciAxLjAgbXVsdGltZWRpYSBmcmFtZXdvcmsiCi1ERVNDUklQVElPTiA9ICJHU3RyZWFtZXIgaXMgYSBtdWx0aW1lZGlhIGZyYW1ld29yayBmb3IgZW5jb2RpbmcgYW5kIGRlY29kaW5nIHZpZGVvIGFuZCBzb3VuZC4gXAotSXQgc3VwcG9ydHMgYSB3aWRlIHJhbmdlIG9mIGZvcm1hdHMgaW5jbHVkaW5nIG1wMywgb2dnLCBhdmksIG1wZWcgYW5kIHF1aWNrdGltZS4iCi1IT01FUEFHRSA9ICJodHRwOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1Hc3RyZWFtZXIiCi1TRUNUSU9OID0gIm11bHRpbWVkaWEiCi1MSUNFTlNFID0gIkxHUEx2MisiCi0KLURFUEVORFMgPSAiZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYmNhcCBsaWJ4bWwyIGJpc29uLW5hdGl2ZSBmbGV4LW5hdGl2ZSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jIHB0ZXN0Ci0KLSMgVGhpcyB3YXkgY29tbW9uL200L2ludHJvc3BlY3Rpb24ubTQgd2lsbCBjb21lIGZpcnN0Ci0jIChpdCBoYXMgYSBjdXN0b20gSU5UUk9TUEVDVElPTl9JTklUIG1hY3JvLCBhbmQgc28gbXVzdCBiZSB1c2VkIGluc3RlYWQgb2Ygb3VyIGNvbW1vbiBpbnRyb3NwZWN0aW9uLm00IGZpbGUpCi1hY3BhdGhzID0gIi1JICR7U30vY29tbW9uL200IC1JICR7U30vbTQiCi0KLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9nc3QuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT1lMDU5MTM4NDgxMjA1ZWUyYzZmYzFjMDc5YzAxNmQwZCIKLQotUyA9ICIke1dPUktESVJ9L2dzdHJlYW1lci0ke1BWfSIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0cmVhbWVyL2dzdHJlYW1lci0ke1BWfS50YXIueHogXAotICAgIGZpbGU6Ly8wMDAxLWludHJvc3BlY3Rpb24ubTQtcHJlZml4LXBrZ2NvbmZpZy1wYXRocy13aXRoLVBLR19DT04ucGF0Y2ggXAotICAgIGZpbGU6Ly9ndGstZG9jLXR3ZWFrcy5wYXRjaCBcCi0gICAgZmlsZTovLzAwMDEtZ3N0LWdzdHBsdWdpbmxvYWRlci5jLXdoZW4tZW52LXZhci1pcy1zZXQtZG8tbm90LWZhbC5wYXRjaCBcCi0gICAgZmlsZTovL2FkZC1hLXRhcmdldC10by1jb21waWxlLXRlc3RzLnBhdGNoIFwKLSAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSIKLVNSQ19VUklbbWQ1c3VtXSA9ICJjNTA1ZmI4MThiMzY5ODhkYWFhODQ2ZTllNjNlYWJlOCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIwMjIxMWMzNDQ3YzRkYWE1NTkxOWM1YzBmNDNhODJhNmZiYjUxNzQwZDU3ZmMzYWYwNjM5ZDQ2ZjFjZjQzNzdkIgotCi1QQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1BURVNUX0VOQUJMRUQnLCAnMScsICd0ZXN0cycsICcnLCBkKX0gXAotICAgICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRUNPTkZJR1tkZWJ1Z10gPSAiLS1lbmFibGUtZGVidWcsLS1kaXNhYmxlLWRlYnVnIgotUEFDS0FHRUNPTkZJR1t0ZXN0c10gPSAiLS1lbmFibGUtdGVzdHMsLS1kaXNhYmxlLXRlc3RzIgotUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLS1lbmFibGUtdmFsZ3JpbmQsLS1kaXNhYmxlLXZhbGdyaW5kLHZhbGdyaW5kLCIKLVBBQ0tBR0VDT05GSUdbZ3N0LXRyYWNlci1ob29rc10gPSAiLS1lbmFibGUtZ3N0LXRyYWNlci1ob29rcywtLWRpc2FibGUtZ3N0LXRyYWNlci1ob29rcywiCi1QQUNLQUdFQ09ORklHW3Vud2luZF0gPSAiLS13aXRoLXVud2luZCwtLXdpdGhvdXQtdW53aW5kLGxpYnVud2luZCIKLVBBQ0tBR0VDT05GSUdbZHddID0gIi0td2l0aC1kdywtLXdpdGhvdXQtZHcsZWxmdXRpbHMiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1leGFtcGxlcyBcCi0iCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9oZWFkZXJfdmFsZ3JpbmRfdmFsZ3JpbmRfaD1ubyIKLQotIyBtdXNsIGxpYmMgZ2VuZXJhdGVzIHdhcm5pbmdzIGlmIDxzeXMvcG9sbC5oPiBpcyBpbmNsdWRlZCBkaXJlY3RseQotQ0FDSEVEX0NPTkZJR1VSRVZBUlMgKz0gImFjX2N2X2hlYWRlcl9zeXNfcG9sbF9oPW5vIgotCi1QQUNLQUdFUyArPSAiJHtQTn0tYmFzaC1jb21wbGV0aW9uIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5zbyIKLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvKi5sYSAke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmEgJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvaW5jbHVkZSIKLUZJTEVTXyR7UE59LWJhc2gtY29tcGxldGlvbiArPSAiJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMvICR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uL2hlbHBlcnMvZ3N0KiIKLUZJTEVTXyR7UE59LWRiZyArPSAiJHtkYXRhZGlyfS9nZGIgJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL2dkYiIKLQotUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCi0KLWRlbGV0ZV9wa2dfbTRfZmlsZSgpIHsKLSAgICAgICAgIyBUaGlzIG00IGZpbGUgaXMgb3V0IG9mIGRhdGUgYW5kIGlzIG1pc3NpbmcgUEtHX0NPTkZJR19TWVNST09UX1BBVEggdHdlYWtzIHdoaWNoIHdlIG5lZWQgZm9yIGludHJvc3BlY3Rpb24KLSAgICAgICAgcm0gIiR7U30vY29tbW9uL200L3BrZy5tNCIgfHwgdHJ1ZQotICAgICAgICBybSAtZiAiJHtTfS9jb21tb24vbTQvZ3RrLWRvYy5tNCIKLX0KLQotZG9fY29uZmlndXJlW3ByZWZ1bmNzXSArPSAiZGVsZXRlX3BrZ19tNF9maWxlIgotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0gICAgICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L2dzdC8ubGliczoke0J9L2xpYnMvZ3N0L2Jhc2UvLmxpYnMiCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7Ci0gICAgICAgIG9lX3J1bm1ha2UgYnVpbGQtY2hlY2tzCi19Ci0KLWRvX2luc3RhbGxfcHRlc3QoKSB7Ci0gICAgICAgIG9lX3J1bm1ha2UgLUMgdGVzdHMvY2hlY2sgREVTVERJUj0ke0R9JHtQVEVTVF9QQVRIfSBpbnN0YWxsLXB0ZXN0Ci0gICAgICAgIGluc3RhbGwgLW0gNjQ0ICR7Qn0vdGVzdHMvY2hlY2svTWFrZWZpbGUgJHtEfSR7UFRFU1RfUEFUSH0KLSAgICAgICAgaW5zdGFsbCAtbSA3NTUgJHtTfS90ZXN0LWRyaXZlciAke0R9JHtQVEVTVF9QQVRIfQotICAgICAgICBzZWQgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAotICAgICAgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAotICAgICAgICAgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKLSAgICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAotICAgICAgICAgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcLWUgJ3MvXk1ha2VmaWxlOi9fTWFrZWZpbGU6LycgXAotICAgICAgICAgICAgLWUgJ3MvXnNyY2RpciA9IFwoLipcKS9zcmNkaXIgPSAuLycgLWUgJ3MvXnRvcF9zcmNkaXIgPSBcKC4qXCkvdG9wX3NyY2RpciA9IC4vJyBcCi0gICAgICAgICAgICAtZSAncy9eYnVpbGRkaXIgPSBcKC4qXCkvYnVpbGRkaXIgPSAuLycgLWUgJ3MvXnRvcF9idWlsZGRpciA9IFwoLipcKS90b3BfYnVpbGRkaXIgPSAuLycgXAotICAgICAgICAgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKLX0KLQotQ1ZFX1BST0RVQ1QgPSAiZ3N0cmVhbWVyIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9nc3RyZWFtZXIvZ3N0cmVhbWVyMS4wXzEuMTYuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjE2LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTBhODcyZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvZ3N0cmVhbWVyL2dzdHJlYW1lcjEuMF8xLjE2LjIuYmIKQEAgLTAsMCArMSw3NyBAQAorU1VNTUFSWSA9ICJHU3RyZWFtZXIgMS4wIG11bHRpbWVkaWEgZnJhbWV3b3JrIgorREVTQ1JJUFRJT04gPSAiR1N0cmVhbWVyIGlzIGEgbXVsdGltZWRpYSBmcmFtZXdvcmsgZm9yIGVuY29kaW5nIGFuZCBkZWNvZGluZyB2aWRlbyBhbmQgc291bmQuIFwKK0l0IHN1cHBvcnRzIGEgd2lkZSByYW5nZSBvZiBmb3JtYXRzIGluY2x1ZGluZyBtcDMsIG9nZywgYXZpLCBtcGVnIGFuZCBxdWlja3RpbWUuIgorSE9NRVBBR0UgPSAiaHR0cDovL2dzdHJlYW1lci5mcmVlZGVza3RvcC5vcmcvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9lbnRlcl9idWcuY2dpP3Byb2R1Y3Q9R3N0cmVhbWVyIgorU0VDVElPTiA9ICJtdWx0aW1lZGlhIgorTElDRU5TRSA9ICJMR1BMdjIrIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJjYXAgbGlieG1sMiBiaXNvbi1uYXRpdmUgZmxleC1uYXRpdmUiCisKK2luaGVyaXQgbWVzb24gcGtnY29uZmlnIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTY3NjJlZDQ0MmIzODIyMzg3YTUxYzkyZDkyOGVhZDBkIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2dzdC9nc3QuaDtiZWdpbmxpbmU9MTtlbmRsaW5lPTIxO21kNT1lMDU5MTM4NDgxMjA1ZWUyYzZmYzFjMDc5YzAxNmQwZCIKKworUyA9ICIke1dPUktESVJ9L2dzdHJlYW1lci0ke1BWfSIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHBzOi8vZ3N0cmVhbWVyLmZyZWVkZXNrdG9wLm9yZy9zcmMvZ3N0cmVhbWVyL2dzdHJlYW1lci0ke1BWfS50YXIueHogXAorICAgIGZpbGU6Ly8wMDAxLWdzdC1nc3RwbHVnaW5sb2FkZXIuYy13aGVuLWVudi12YXItaXMtc2V0LWRvLW5vdC1mYWwucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAyLW1lc29uLWJ1aWxkLWdpci1ldmVuLXdoZW4tY3Jvc3MtY29tcGlsaW5nLWlmLWludHJvc3AucGF0Y2ggXAorICAgIGZpbGU6Ly8wMDAzLW1lc29uLUFkZC12YWxncmluZC1mZWF0dXJlLnBhdGNoIFwKKyAgICBmaWxlOi8vMDAwNC1tZXNvbi1BZGQtb3B0aW9uLWZvci1pbnN0YWxsZWQtdGVzdHMucGF0Y2ggXAorICAgIGZpbGU6Ly9jYXBmaXgucGF0Y2ggXAorIgorU1JDX1VSSVttZDVzdW1dID0gIjBlNjYxZWQ1YmRmMWQ4OTk2ZTQzMDIyOGQwMjI2MjhlIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImUzZjA0NDI0Njc4M2ZkNjg1NDM5NjQ3MzczZmExM2JhMTRmN2FiMGIzNDZlYWRkMDY0MzcwOTJmODQxOWU5NGUiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnUFRFU1RfRU5BQkxFRCcsICcxJywgJ3Rlc3RzJywgJycsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgY2hlY2sgXAorICAgICAgICAgICAgICAgICAgIGRlYnVnIFwKKyAgICAgICAgICAgICAgICAgICB0b29scyIKKworUEFDS0FHRUNPTkZJR1tkZWJ1Z10gPSAiLURnc3RfZGVidWc9dHJ1ZSwtRGdzdF9kZWJ1Zz1mYWxzZSIKK1BBQ0tBR0VDT05GSUdbdHJhY2VyLWhvb2tzXSA9ICItRHRyYWNlcl9ob29rcz10cnVlLC1EdHJhY2VyX2hvb2tzPWZhbHNlIgorUEFDS0FHRUNPTkZJR1tjaGVja10gPSAiLURjaGVjaz1lbmFibGVkLC1EY2hlY2s9ZGlzYWJsZWQiCitQQUNLQUdFQ09ORklHW3Rlc3RzXSA9ICItRHRlc3RzPWVuYWJsZWQgLURpbnN0YWxsZWQtdGVzdHM9dHJ1ZSwtRHRlc3RzPWRpc2FibGVkIC1EaW5zdGFsbGVkLXRlc3RzPWZhbHNlIgorUEFDS0FHRUNPTkZJR1t2YWxncmluZF0gPSAiLUR2YWxncmluZD1lbmFibGVkLC1EdmFsZ3JpbmQ9ZGlzYWJsZWQsdmFsZ3JpbmQsIgorUEFDS0FHRUNPTkZJR1t1bndpbmRdID0gIi1EbGlidW53aW5kPWVuYWJsZWQsLURsaWJ1bndpbmQ9ZGlzYWJsZWQsbGlidW53aW5kIgorUEFDS0FHRUNPTkZJR1tkd10gPSAiLURsaWJkdz1lbmFibGVkLC1EbGliZHc9ZGlzYWJsZWQsZWxmdXRpbHMiCitQQUNLQUdFQ09ORklHW2Jhc2gtY29tcGxldGlvbl0gPSAiLURiYXNoLWNvbXBsZXRpb249ZW5hYmxlZCwtRGJhc2gtY29tcGxldGlvbj1kaXNhYmxlZCxiYXNoLWNvbXBsZXRpb24iCitQQUNLQUdFQ09ORklHW3Rvb2xzXSA9ICItRHRvb2xzPWVuYWJsZWQsLUR0b29scz1kaXNhYmxlZCIKK1BBQ0tBR0VDT05GSUdbc2V0Y2FwXSA9ICItRHNldGNhcD1lbmFibGVkLC1Ec2V0Y2FwPWRpc2FibGVkLGxpYmNhcCBsaWJjYXAtbmF0aXZlIgorCisjIFRPRE86IHB1dCB0aGlzIGluIGEgZ2V0dGV4dC5iYmNsYXNzIHBhdGNoCitkZWYgZ2V0dGV4dF9vZW1lc29uKGQpOgorICAgIGlmIGQuZ2V0VmFyKCdVU0VfTkxTJykgPT0gJ25vJzoKKyAgICAgICAgcmV0dXJuICctRG5scz1kaXNhYmxlZCcKKyAgICAjIFJlbW92ZSB0aGUgTkxTIGJpdHMgaWYgVVNFX05MUyBpcyBubyBvciBJTkhJQklUX0RFRkFVTFRfREVQUyBpcyBzZXQKKyAgICBpZiBkLmdldFZhcignSU5ISUJJVF9ERUZBVUxUX0RFUFMnKSBhbmQgbm90IG9lLnV0aWxzLmluaGVyaXRzKGQsICdjcm9zcy1jYW5hZGlhbicpOgorICAgICAgICByZXR1cm4gJy1EbmxzPWRpc2FibGVkJworICAgIHJldHVybiAnLURubHM9ZW5hYmxlZCcKKworRVhUUkFfT0VNRVNPTiArPSAiIFwKKyAgICAtRGV4YW1wbGVzPWRpc2FibGVkIFwKKyAgICAtRGRiZ2hlbHA9ZGlzYWJsZWQgXAorICAgICR7QGdldHRleHRfb2VtZXNvbihkKX0gXAorIgorCitHVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCitHVEtET0NfTUVTT05fRU5BQkxFX0ZMQUcgPSAiZW5hYmxlZCIKK0dUS0RPQ19NRVNPTl9ESVNBQkxFX0ZMQUcgPSAiZGlzYWJsZWQiCisKK0dJUl9NRVNPTl9FTkFCTEVfRkxBRyA9ICJlbmFibGVkIgorR0lSX01FU09OX0RJU0FCTEVfRkxBRyA9ICJkaXNhYmxlZCIKKworUEFDS0FHRVMgKz0gIiR7UE59LWJhc2gtY29tcGxldGlvbiIKKworIyBBZGQgdGhlIGNvcmUgZWxlbWVudCBwbHVnaW5zIHRvIHRoZSBtYWluIHBhY2thZ2UKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLnNvIgorRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vZ3N0cmVhbWVyLTEuMC8qLmEgJHtsaWJkaXJ9L2dzdHJlYW1lci0xLjAvaW5jbHVkZSIKK0ZJTEVTXyR7UE59LWJhc2gtY29tcGxldGlvbiArPSAiJHtkYXRhZGlyfS9iYXNoLWNvbXBsZXRpb24vY29tcGxldGlvbnMvICR7ZGF0YWRpcn0vYmFzaC1jb21wbGV0aW9uL2hlbHBlcnMvZ3N0KiIKK0ZJTEVTXyR7UE59LWRiZyArPSAiJHtkYXRhZGlyfS9nZGIgJHtkYXRhZGlyfS9nc3RyZWFtZXItMS4wL2dkYiIKKworQ1ZFX1BST0RVQ1QgPSAiZ3N0cmVhbWVyIgorCityZXF1aXJlIGdzdHJlYW1lcjEuMC1wdGVzdC5pbmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib214aWwvbGlib214aWxfMC45LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYm9teGlsL2xpYm9teGlsXzAuOS4zLmJiCmluZGV4IGQ4M2ViNDUuLjI3MWMyYTMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlib214aWwvbGlib214aWxfMC45LjMuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJvbXhpbC9saWJvbXhpbF8wLjkuMy5iYgpAQCAtMjQsNiArMjQsOCBAQAogCiBFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1kb2MgLS1kaXNhYmxlLVdlcnJvciIKIAorUFJPVklERVMgKz0gInZpcnR1YWwvbGlib214aWwiCisKICMKICMgVGhlIC5zbyBmaWxlcyB1bmRlciAke2xpYmRpcn0vYmVsbGFnaW8gYXJlIG5vdCBpbnRlbmRlZCB0byBiZSB2ZXJzaW9uZWQgYW5kIHN5bWxpbmtlZC4KICMgTWFrZSBzdXJlIHRoZXkgZ2V0IHBhY2thZ2VkIGluIHRoZSBtYWluIHBhY2thZ2UuCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjM3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJwbmcvbGlicG5nXzEuNi4zNy5iYgppbmRleCAyZWQ4N2E4Li44YzUzZDExIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnBuZy9saWJwbmdfMS42LjM3LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlicG5nL2xpYnBuZ18xLjYuMzcuYmIKQEAgLTIsMTggKzIsMTYgQEAKIEhPTUVQQUdFID0gImh0dHA6Ly93d3cubGlicG5nLm9yZy8iCiBTRUNUSU9OID0gImxpYnMiCiBMSUNFTlNFID0gIkxpYnBuZyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWIwMDg1MDUxYmYyNjViYWMyYmZjMzhiYzg5ZjUwMDAwXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcG5nLmg7ZW5kbGluZT0xNDQ7bWQ1PThhY2QyM2Q1NDQ2MjM4MTZiMDk3ZTA3YmUwMTM5NTA5XAotICAgICAgICAgICAgICAgICAgICAiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1iMDA4NTA1MWJmMjY1YmFjMmJmYzM4YmM4OWY1MDAwMCIKIERFUEVORFMgPSAiemxpYiIKIAogTElCViA9ICIxNiIKIAotU1JDX1VSSSA9ICIke1NPVVJDRUZPUkdFX01JUlJPUn0vcHJvamVjdC8ke0JQTn0vJHtCUE59JHtMSUJWfS8ke1BWfS8ke0JQfS50YXIueHoiCitTUkNfVVJJID0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59JHtMSUJWfS8ke0JQfS50YXIueHoiCiBTUkNfVVJJW21kNXN1bV0gPSAiMDE1ZThlMTVkYjFlZWNkZTVmMmViOWViNWI2ZTU5ZTkiCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNTA1ZTcwODM0ZDM1MzgzNTM3YjY0OTFlN2FlODY0MWYxYTRiZWQxODc2ZGJmZTM2MTIwMWZjODA4NjhkODhjYSIKIAotTUlSUk9SUyArPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L3Byb2plY3QvJHtCUE59LyR7QlBOfSR7TElCVn0vJHtQVn0vICR7U09VUkNFRk9SR0VfTUlSUk9SfS9wcm9qZWN0LyR7QlBOfS8ke0JQTn0ke0xJQlZ9L29sZGVyLXJlbGVhc2VzLyR7UFZ9LyIKK01JUlJPUlMgKz0gIiR7U09VUkNFRk9SR0VfTUlSUk9SfS8ke0JQTn0vJHtCUE59JHtMSUJWfS8gJHtTT1VSQ0VGT1JHRV9NSVJST1J9LyR7QlBOfS8ke0JQTn0ke0xJQlZ9L29sZGVyLXJlbGVhc2VzLyIKIAogVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9saWJwbmcub3JnL3B1Yi9wbmcvbGlicG5nLmh0bWwiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMV8xLjAuMjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL2xpYnNuZGZpbGUvbGlic25kZmlsZTFfMS4wLjI4LmJiCmluZGV4IDc4NTUwMDguLmIxMDAxMDggMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvbGlic25kZmlsZS9saWJzbmRmaWxlMV8xLjAuMjguYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9saWJzbmRmaWxlL2xpYnNuZGZpbGUxXzEuMC4yOC5iYgpAQCAtMzIsNyArMzIsMTEgQEAKIFBBQ0tBR0VDT05GSUdbYWxzYV0gPSAiLS1lbmFibGUtYWxzYSwtLWRpc2FibGUtYWxzYSxhbHNhLWxpYiIKIFBBQ0tBR0VDT05GSUdbcmVndGVzdF0gPSAiLS1lbmFibGUtc3FsaXRlLC0tZGlzYWJsZS1zcWxpdGUsc3FsaXRlMyIKIAotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgcGtnY29uZmlnCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBwa2djb25maWcgbXVsdGlsaWJfaGVhZGVyCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIG9lX211bHRpbGliX2hlYWRlciBzbmRmaWxlLmgKK30KIAogIyBUaGlzIGNhbid0IGJlIHJlcGxpY2F0ZWQgYW5kIGlzIGp1c3QgYSBtZW1vcnkgbGVhay4KICMgaHR0cHM6Ly9naXRodWIuY29tL2VyaWtkL2xpYnNuZGZpbGUvaXNzdWVzLzM5OApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8uaW5jCmluZGV4IGVjNTFkOGIuLmM3ZjNlNjcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby5pbmMKQEAgLTU2LDEzICs1NiwyMSBAQAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL3B1bHNlY29yZS9maWx0ZXIvYmlxdWFkLmg7YmVnaW5saW5lPTE7ZW5kbGluZT00O21kNT02ZDQ2ZDEzNjUyMDY1MjhhMjAxMzczNTU5MjQyMzNjMSBcCiAiCiAKLURFUEVORFMgPSAibGliYXRvbWljLW9wcyBsaWJzbmRmaWxlMSBsaWJ0b29sIGludGx0b29sLW5hdGl2ZSIKK0RFUEVORFMgPSAibGliYXRvbWljLW9wcyBsaWJzbmRmaWxlMSBsaWJ0b29sIgogIyBvcHRpb25hbAogREVQRU5EUyArPSAidWRldiBhbHNhLWxpYiBnbGliLTIuMCIKIERFUEVORFMgKz0gInNwZWV4ZHNwIGxpYnhtbC1wYXJzZXItcGVybC1uYXRpdmUgbGliY2FwIgogCiBpbmhlcml0IGF1dG90b29scyBiYXNoLWNvbXBsZXRpb24gcGtnY29uZmlnIHVzZXJhZGQgZ2V0dGV4dCBwZXJsbmF0aXZlIHN5c3RlbWQgbWFucGFnZXMgZ3NldHRpbmdzCiAKKyMgV2hlbiBjb21waWxpbmcgZm9yIFRodW1iIG9yIFRodW1iMiwgZnJhbWUgcG9pbnRlcnMgX211c3RfIGJlIGRpc2FibGVkIHNpbmNlIHRoZQorIyBUaHVtYiBmcmFtZSBwb2ludGVyIGluIHI3IGNsYXNoZXMgd2l0aCBwdWxzZWF1ZGlvJ3MgdXNlIG9mIGlubGluZSBhc20gdG8gbWFrZSBzeXNjYWxscworIyAod2hlcmUgcjcgaXMgdXNlZCBmb3IgdGhlIHN5c2NhbGwgTlIpLiBJbiBtb3N0IGNhc2VzLCBmcmFtZSBwb2ludGVycyB3aWxsIGJlCisjIGRpc2FibGVkIGF1dG9tYXRpY2FsbHkgZHVlIHRvIHRoZSBvcHRpbWlzYXRpb24gbGV2ZWwsIGJ1dCBhcHBlbmQgYW4gZXhwbGljaXQKKyMgLWZvbWl0LWZyYW1lLXBvaW50ZXIgdG8gaGFuZGxlIGNhc2VzIHdoZXJlIG9wdGltaXNhdGlvbiBpcyBzZXQgdG8gLU8wIG9yIGZyYW1lCisjIHBvaW50ZXJzIGhhdmUgYmVlbiBlbmFibGVkIGJ5IC1mbm8tb21pdC1mcmFtZS1wb2ludGVyIGVhcmxpZXIgaW4gQ0ZMQUdTLCBldGMuCitDRkxBR1NfYXBwZW5kX2FybSA9ICIgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfQ0NBUkdTJywgJy1tdGh1bWInLCAnLWZvbWl0LWZyYW1lLXBvaW50ZXInLCAnJywgZCl9IgorCiAjICouZGVza3RvcCBydWxlcyB3b250IGJlIGdlbmVyYXRlZCBkdXJpbmcgY29uZmlndXJlIGFuZCBidWlsZCB3aWxsIGZhaWwKICMgaWYgdXNpbmcgLS1kaXNhYmxlLW5scwogVVNFX05MUyA9ICJ5ZXMiCkBAIC0xNTgsMTIgKzE2NiwyMiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1uby1jcmVhdGUtaG9tZSAtLXNoZWxsIC9iaW4vZmFsc2UgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLS1ncm91cHMgYXVkaW8scHVsc2UgLS1naWQgcHVsc2UgcHVsc2UiCiAKK1BBQ0tBR0VTID0rICJcCisgICAgICAgICAgICAgbGlicHVsc2UgXAorICAgICAgICAgICAgIGxpYnB1bHNlLW1haW5sb29wLWdsaWIgXAorICAgICAgICAgICAgIGxpYnB1bHNlLXNpbXBsZSBcCisgICAgICAgICAgICAgbGlicHVsc2Vjb21tb24gXAorICAgICAgICAgICAgIGxpYnB1bHNlY29yZSBcCisgICAgICAgICAgICAgJHtQTn0tcGEtaW5mbyBcCisgICAgICAgICAgICAgJHtQTn0tc2VydmVyIFwKKyAgICAgICAgICAgICAke1BOfS1taXNjIFwKKyAgICAgICAgICAgICAiCisKICMgVGhlIGNvbnNvbGUta2l0IG1vZHVsZSBpcyBpbmNsdWRlZCBoZXJlIGV4cGxpY2l0bHkgc28gYml0YmFrZSBjYW4gbWFwIHRvIHRoZQogIyBSREVQRU5EUyB3ZSBkZWZpbmUgZm9yIGl0IGluIHRoaXMgcmVjaXBlLCBhbmQgdGhlcmVieSBlbnN1cmUgdGhhdCB3aGVuCiAjIGFkZGluZyB0aGUgY29uc29sZS1raXQgbW9kdWxlIHRvIGFuIGltYWdlLCB3ZSBhbHNvIGdldCB0aGUgbmVjZXNzYXJ5CiAjIGNvbnNvbGVraXQgcGFja2FnZSBwcm9kdWNlZC4KLVBBQ0tBR0VTID0rICJsaWJwdWxzZWNvcmUgbGlicHVsc2Vjb21tb24gbGlicHVsc2UgbGlicHVsc2Utc2ltcGxlIGxpYnB1bHNlLW1haW5sb29wLWdsaWIgXAotICAgICAgICAgICAgIHB1bHNlYXVkaW8tc2VydmVyIHB1bHNlYXVkaW8tbWlzYyAke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkYnVzJywgJ3B1bHNlYXVkaW8tbW9kdWxlLWNvbnNvbGUta2l0JywgJycsIGQpfSIKK1BBQ0tBR0VTID0rICIke0BiYi51dGlscy5jb250YWlucygnUEFDS0FHRUNPTkZJRycsICdkYnVzJywgJ3B1bHNlYXVkaW8tbW9kdWxlLWNvbnNvbGUta2l0JywgJycsIGQpfSIKIAogI3VwZ3JhZGUgcGF0aDoKIFJSRVBMQUNFU19wdWxzZWF1ZGlvLXNlcnZlciA9ICJsaWJwdWxzZS1iaW4gbGlicHVsc2UtY29uZiIKQEAgLTE4Myw2ICsyMDEsNyBAQAogRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vcHVsc2UtJHtQVn0vbW9kdWxlcy8qLmxhICR7ZGF0YWRpcn0vdmFsYSAke2xpYmRpcn0vY21ha2UiICAgCiBGSUxFU18ke1BOfS1jb25mID0gIiR7c3lzY29uZmRpcn0iCiBGSUxFU18ke1BOfS1iaW4gKz0gIiR7c3lzY29uZmRpcn0vZGVmYXVsdC92b2xhdGlsZXMvdm9sYXRpbGVzLjA0X3B1bHNlIgorRklMRVNfJHtQTn0tcGEtaW5mbyA9ICIke2JpbmRpcn0vcGEtaW5mbyIKIEZJTEVTXyR7UE59LXNlcnZlciA9ICIke2JpbmRpcn0vcHVsc2VhdWRpbyAke2JpbmRpcn0vc3RhcnQtKiAke3N5c2NvbmZkaXJ9ICR7YmluZGlyfS9wYWN0bCAqL3VkZXYvcnVsZXMuZC8qLnJ1bGVzICovKi91ZGV2L3J1bGVzLmQvKi5ydWxlcyAke3N5c3RlbWRfdXNlcl91bml0ZGlyfS8qIgogCiAjU1lTVEVNRF9QQUNLQUdFUyA9ICIke1BOfS1zZXJ2ZXIiCkBAIC0yMTQsNiArMjMzLDE2IEBACiAgICAgZG9fc3BsaXRfcGFja2FnZXMoZCwgcGx1Z2luZGlyLCByJ15saWIoLiopXC5zbyQnLCAnJHtQTn0tbGliLSVzJywgJ1B1bHNlQXVkaW8gbGlicmFyeSBmb3IgJXMnLCBleHRyYV9kZXBlbmRzPScnLCBwcmVwZW5kPVRydWUpCiB9CiAKKyMgcGEtaW5mbyBpcyBhIGJhc2ggc2NyaXB0IHRoYXQgY29sbGVjdHMgaW5mb3JtYXRpb24gYWJvdXQgdGhlIGF1ZGlvIHNldHVwLgorIyBJdCdzIHByaW1hcmlseSB1c2VmdWwgZm9yIGF0dGFjaGluZyBhbiBpbmZvcm1hdGlvbiBkdW1wIHdoZW4gcmVwb3J0aW5nIGJ1Z3MuCitSREVQRU5EU18ke1BOfS1wYS1pbmZvID0gIlwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWxzYS11dGlscy1hbWl4ZXIgXAorICAgICAgICAgICAgICAgICAgICAgICAgICBhbHNhLXV0aWxzLWFwbGF5IFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYWxzYS11dGlscy1zY3JpcHRzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgYmFzaCBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICR7UE59LXNlcnZlciBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICIKKwogUkRFUEVORFNfcHVsc2VhdWRpby1zZXJ2ZXIgPSAiIFwKICAgICBwdWxzZWF1ZGlvLW1vZHVsZS1maWx0ZXItYXBwbHkgXAogICAgIHB1bHNlYXVkaW8tbW9kdWxlLWZpbHRlci1oZXVyaXN0aWNzIFwKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtYWxzYS1GaXgtaW5jbHVzaW9uLW9mLXVzZS1jYXNlLmgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLWFsc2EtRml4LWluY2x1c2lvbi1vZi11c2UtY2FzZS5oLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxNTAyNmEyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLzAwMDEtYWxzYS1GaXgtaW5jbHVzaW9uLW9mLXVzZS1jYXNlLmgucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0NiArMCwwIEBACi1Gcm9tIGI4OWQzM2JiMTgyYzQyZGI1YWQzOTg3YjBlOTFiN2JmNjJmNDIxZTggTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBUYWthc2hpIEl3YWkgPHRpd2FpQHN1c2UuZGU+Ci1EYXRlOiBTdW4sIDIxIEFwciAyMDE5IDExOjU5OjMwICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFsc2E6IEZpeCBpbmNsdXNpb24gb2YgdXNlLWNhc2UuaAotCi1UaGUgcmVjZW50IGNoYW5nZSBpbiBBTFNBIHVwc3RyZWFtIHN0cmlwcGVkIC1JJGluY2x1ZGUvYWxzYSBwYXRoIGZyb20KLXBrZ2NvbmZpZy4gIFdlIGFscmVhZHkgZml4ZWQgZm9yIHRoaXMgY2hhbmdlIGluIHNvbWUgcGxhY2VzIGJ1dCBzdGlsbAotdGhlIGNvZGUgZm9yIFVDTSB3YXMgb3Zlcmxvb2tlZCwgYW5kIHRoaXMgcmVzdWx0ZWQgaW4gdGhlIHVucmVzb2x2ZWQKLXN5bWJvbHMgaW4gYWxzYSBjYXJkIG1vZHVsZS4gRml4IHRoZW0gYXMgd2VsbC4KLQotU2lnbmVkLW9mZi1ieTogVGFrYXNoaSBJd2FpIDx0aXdhaUBzdXNlLmRlPgotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotLS0tCi0gY29uZmlndXJlLmFjICAgICAgICAgICAgICAgIHwgMiArLQotIHNyYy9tb2R1bGVzL2Fsc2EvYWxzYS11Y20uaCB8IDIgKy0KLSAyIGZpbGVzIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5hYyBiL2NvbmZpZ3VyZS5hYwotaW5kZXggYzAwNGJkNzBkLi5iNDRlZDE1OTUgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTgyNiw3ICs4MjYsNyBAQCBBU19JRihbdGVzdCAieCRlbmFibGVfYWxzYSIgPSAieHllcyIgJiYgdGVzdCAieCRIQVZFX0FMU0EiID0gIngwIl0sCi0gQVNfSUYoW3Rlc3QgIngkSEFWRV9BTFNBIiA9ICJ4MSJdLAotICAgICBbCi0gICAgICAgICBzYXZlX0NQUEZMQUdTPSIkQ1BQRkxBR1MiOyBDUFBGTEFHUz0iJENQUEZMQUdTICRBU09VTkRMSUJfQ0ZMQUdTIgotLSAgICAgICAgQUNfQ0hFQ0tfSEVBREVSUyhbdXNlLWNhc2UuaF0sIEhBVkVfQUxTQV9VQ009MSwgSEFWRV9BTFNBX1VDTT0wKQotKyAgICAgICAgQUNfQ0hFQ0tfSEVBREVSUyhbYWxzYS91c2UtY2FzZS5oXSwgSEFWRV9BTFNBX1VDTT0xLCBIQVZFX0FMU0FfVUNNPTApCi0gICAgICAgICBDUFBGTEFHUz0iJHNhdmVfQ1BQRkxBR1MiCi0gICAgIF0sCi0gICAgIEhBVkVfQUxTQV9VQ009MCkKLWRpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtdWNtLmggYi9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtdWNtLmgKLWluZGV4IDUzYWJmM2Y5MC4uYzkyNmYzY2MzIDEwMDY0NAotLS0tIGEvc3JjL21vZHVsZXMvYWxzYS9hbHNhLXVjbS5oCi0rKysgYi9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtdWNtLmgKLUBAIC0yMyw3ICsyMyw3IEBACi0gKioqLwotIAotICNpZmRlZiBIQVZFX0FMU0FfVUNNCi0tI2luY2x1ZGUgPHVzZS1jYXNlLmg+Ci0rI2luY2x1ZGUgPGFsc2EvdXNlLWNhc2UuaD4KLSAjZWxzZQotIHR5cGVkZWYgdm9pZCBzbmRfdXNlX2Nhc2VfbWdyX3Q7Ci0gI2VuZGlmCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLWludHJvZHVjZS1hLXNwZWNpYWwtYnVpbGQtZmxhZy10by1leHBsaWNpdGx5LWRpc2FibGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLWludHJvZHVjZS1hLXNwZWNpYWwtYnVpbGQtZmxhZy10by1leHBsaWNpdGx5LWRpc2FibGUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3ZTljZDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1pbnRyb2R1Y2UtYS1zcGVjaWFsLWJ1aWxkLWZsYWctdG8tZXhwbGljaXRseS1kaXNhYmxlLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTYxICswLDAgQEAKLUZyb20gMzZmZWI5OGU1NjgyMjFlMjQyODY2MTU3MzA4ODhkNWY2ZmYzMjNmMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IEZyaSwgNyBEZWMgMjAxOCAxNToxMjozOCArMDgwMAotU3ViamVjdDogW1BBVENIXSBpbnRyb2R1Y2UgYSBzcGVjaWFsIGJ1aWxkIGZsYWcgdG8gZXhwbGljaXRseSBkaXNhYmxlcyBydW5uaW5nCi0gZnJvbSBidWlsZCB0cmVlCi0KLUl0IGlzIGhlbHBmdWwgdG8gaW1wcm92ZSByZXByb2R1Y2liaWxpdHkgYnVpbGQgWzFdIHNpbmNlCi1QQV9TUkNESVIvUEFfQlVJTERESVIgY29udGFpbnMgYnVpbGQgcGF0aCwgZGlzYWJsZSBydW5uaW5nCi1mcm9tIGJ1aWxkIHRyZWUgY291bGQgZHJvcCB0aGVzZSBtYWNyb3MgYXQgcHJlY29tcGlsYXRpb24uCi0KLVsxXSBodHRwczovL3JlcHJvZHVjaWJsZS1idWlsZHMub3JnLwotCi1VcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbcHVsc2VhdWRpby1kaXNjdXNzQGxpc3RzLmZyZWVkZXNrdG9wLm9yZ10KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLUFja2VkLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51a0Bpa2kuZmk+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHwgMTAgKysrKysrKysrKwotIHNyYy9kYWVtb24vZGFlbW9uLWNvbmYuYyAgICAgICAgICAgICAgICAgfCAgNCArKystCi0gc3JjL2RhZW1vbi9tYWluLmMgICAgICAgICAgICAgICAgICAgICAgICB8ICA2ICsrKysrKwotIHNyYy9tb2R1bGVzL2Fsc2EvYWxzYS1taXhlci5jICAgICAgICAgICAgfCAgNCArKysrCi0gc3JjL21vZHVsZXMvZ2NvbmYvbW9kdWxlLWdjb25mLmMgICAgICAgICB8ICAyICstCi0gc3JjL21vZHVsZXMvZ3NldHRpbmdzL21vZHVsZS1nc2V0dGluZ3MuYyB8ICAyICstCi0gc3JjL3B1bHNlY29yZS9jb3JlLXV0aWwuYyAgICAgICAgICAgICAgICB8ICA0ICsrKy0KLSA3IGZpbGVzIGNoYW5nZWQsIDI4IGluc2VydGlvbnMoKyksIDQgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGM5YzQxNGYuLjhiMzQ1ZWYgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTk5OCw2ICs5OTgsMTYgQEAgQVNfSUYoW3Rlc3QgIngkZW5hYmxlX2FzeW5jbnMiID0gInh5ZXMiICYmIHRlc3QgIngkSEFWRV9MSUJBU1lOQ05TIiA9ICJ4MCJdLAotIEFNX0NPTkRJVElPTkFMKFtIQVZFX0xJQkFTWU5DTlNdLCBbdGVzdCAieCRIQVZFX0xJQkFTWU5DTlMiID0geDFdKQotIEFTX0lGKFt0ZXN0ICJ4JEhBVkVfTElCQVNZTkNOUyIgPSAieDEiXSwgQUNfREVGSU5FKFtIQVZFX0xJQkFTWU5DTlNdLCAxLCBbSGF2ZSBsaWJhc3luY25zP10pKQotIAotKyMjIyMgUnVubmluZyBmcm9tIGJ1aWxkIHRyZWUgKG9wdGlvbmFsKSAjIyMjCi0rCi0rQUNfQVJHX0VOQUJMRShbcnVubmluZy1mcm9tLWJ1aWxkLXRyZWVdLAotKyAgICBBU19IRUxQX1NUUklORyhbLS1kaXNhYmxlLXJ1bm5pbmctZnJvbS1idWlsZC10cmVlXSxbRGlzYWJsZSBydW5uaW5nIGZyb20gYnVpbGQgdHJlZV0pKQotKwotK0FTX0lGKFt0ZXN0ICJ4JGVuYWJsZV9ydW5uaW5nX2Zyb21fYnVpbGRfdHJlZSIgIT0gInhubyJdLAotKyAgICAgIEFDX0RFRklORShbSEFWRV9SVU5OSU5HX0ZST01fQlVJTERfVFJFRV0sIDEsIFtIYXZlIHJ1bm5pbmcgZnJvbSBidWlsZCB0cmVlXSkpCi0rCi0rQUNfU1VCU1QoSEFWRV9SVU5OSU5HX0ZST01fQlVJTERfVFJFRSkKLSsKLSAjIyMjIFRDUCB3cmFwcGVycyAob3B0aW9uYWwpICMjIyMKLSAKLSBBQ19BUkdfRU5BQkxFKFt0Y3B3cmFwXSwKLWRpZmYgLS1naXQgYS9zcmMvZGFlbW9uL2RhZW1vbi1jb25mLmMgYi9zcmMvZGFlbW9uL2RhZW1vbi1jb25mLmMKLWluZGV4IDk4ODMxMjYuLmYwMWVmZjQgMTAwNjQ0Ci0tLS0gYS9zcmMvZGFlbW9uL2RhZW1vbi1jb25mLmMKLSsrKyBiL3NyYy9kYWVtb24vZGFlbW9uLWNvbmYuYwotQEAgLTE1NSwxMiArMTU1LDE0IEBAIHBhX2RhZW1vbl9jb25mICpwYV9kYWVtb25fY29uZl9uZXcodm9pZCkgewotICAgICBjLT5kbF9zZWFyY2hfcGF0aCA9IHBhX3NwcmludGZfbWFsbG9jKCIlcyIgUEFfUEFUSF9TRVAgImxpYiIgUEFfUEFUSF9TRVAgInB1bHNlLSVkLiVkIiBQQV9QQVRIX1NFUCAibW9kdWxlcyIsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFfd2luMzJfZ2V0X3RvcGxldmVsKE5VTEwpLCBQQV9NQUpPUiwgUEFfTUlOT1IpOwotICNlbHNlCi0rI2lmZGVmIEhBVkVfUlVOTklOR19GUk9NX0JVSUxEX1RSRUUKLSAgICAgaWYgKHBhX3J1bl9mcm9tX2J1aWxkX3RyZWUoKSkgewotICAgICAgICAgcGFfbG9nX25vdGljZSgiRGV0ZWN0ZWQgdGhhdCB3ZSBhcmUgcnVuIGZyb20gdGhlIGJ1aWxkIHRyZWUsIGZpeGluZyBzZWFyY2ggcGF0aC4iKTsKLSAgICAgICAgIGMtPmRsX3NlYXJjaF9wYXRoID0gcGFfeHN0cmR1cChQQV9CVUlMRERJUik7Ci0gICAgIH0gZWxzZQotLSAgICAgICAgYy0+ZGxfc2VhcmNoX3BhdGggPSBwYV94c3RyZHVwKFBBX0RMU0VBUkNIUEFUSCk7Ci0gI2VuZGlmCi0rICAgICAgICBjLT5kbF9zZWFyY2hfcGF0aCA9IHBhX3hzdHJkdXAoUEFfRExTRUFSQ0hQQVRIKTsKLSsjZW5kaWYgLy9FbmRvZiAjaWZkZWYgT1NfSVNfV0lOMzIKLSAKLSAgICAgcmV0dXJuIGM7Ci0gfQotZGlmZiAtLWdpdCBhL3NyYy9kYWVtb24vbWFpbi5jIGIvc3JjL2RhZW1vbi9tYWluLmMKLWluZGV4IGM4MGZhOTQuLjFlMDAzODggMTAwNjQ0Ci0tLS0gYS9zcmMvZGFlbW9uL21haW4uYwotKysrIGIvc3JjL2RhZW1vbi9tYWluLmMKLUBAIC05MzIsNiArOTMyLDEyIEBAIGludCBtYWluKGludCBhcmdjLCBjaGFyICphcmd2W10pIHsKLSAKLSAgICAgcGFfbG9nX2RlYnVnKCJSdW5uaW5nIGluIFZNOiAlcyIsIHBhX3llc19ubyhwYV9ydW5uaW5nX2luX3ZtKCkpKTsKLSAKLSsjaWZkZWYgSEFWRV9SVU5OSU5HX0ZST01fQlVJTERfVFJFRQotKyAgICBwYV9sb2dfZGVidWcoIlJ1bm5pbmcgZnJvbSBidWlsZCB0cmVlOiAlcyIsIHBhX3llc19ubyhwYV9ydW5fZnJvbV9idWlsZF90cmVlKCkpKTsKLSsjZWxzZQotKyAgICBwYV9sb2dfZGVidWcoIlJ1bm5pbmcgZnJvbSBidWlsZCB0cmVlOiBubyIpOwotKyNlbmRpZgotKwotICNpZmRlZiBfX09QVElNSVpFX18KLSAgICAgcGFfbG9nX2RlYnVnKCJPcHRpbWl6ZWQgYnVpbGQ6IHllcyIpOwotICNlbHNlCi1kaWZmIC0tZ2l0IGEvc3JjL21vZHVsZXMvYWxzYS9hbHNhLW1peGVyLmMgYi9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtbWl4ZXIuYwotaW5kZXggYTUyNGQ2ZC4uNjcwZjY0NiAxMDA2NDQKLS0tLSBhL3NyYy9tb2R1bGVzL2Fsc2EvYWxzYS1taXhlci5jCi0rKysgYi9zcmMvbW9kdWxlcy9hbHNhL2Fsc2EtbWl4ZXIuYwotQEAgLTI1NzEsOSArMjU3MSwxMSBAQCBzdGF0aWMgaW50IHBhdGhfdmVyaWZ5KHBhX2Fsc2FfcGF0aCAqcCkgewotIH0KLSAKLSBzdGF0aWMgY29uc3QgY2hhciAqZ2V0X2RlZmF1bHRfcGF0aHNfZGlyKHZvaWQpIHsKLSsjaWZkZWYgSEFWRV9SVU5OSU5HX0ZST01fQlVJTERfVFJFRQotICAgICBpZiAocGFfcnVuX2Zyb21fYnVpbGRfdHJlZSgpKQotICAgICAgICAgcmV0dXJuIFBBX1NSQ0RJUiAiL21vZHVsZXMvYWxzYS9taXhlci9wYXRocy8iOwotICAgICBlbHNlCi0rI2VuZGlmCi0gICAgICAgICByZXR1cm4gUEFfQUxTQV9QQVRIU19ESVI7Ci0gfQotIAotQEAgLTQ0NTUsNyArNDQ1Nyw5IEBAIHBhX2Fsc2FfcHJvZmlsZV9zZXQqIHBhX2Fsc2FfcHJvZmlsZV9zZXRfbmV3KGNvbnN0IGNoYXIgKmZuYW1lLCBjb25zdCBwYV9jaGFubmVsCi0gICAgICAgICBmbmFtZSA9ICJkZWZhdWx0LmNvbmYiOwotIAotICAgICBmbiA9IHBhX21heWJlX3ByZWZpeF9wYXRoKGZuYW1lLAotKyNpZmRlZiBIQVZFX1JVTk5JTkdfRlJPTV9CVUlMRF9UUkVFCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFfcnVuX2Zyb21fYnVpbGRfdHJlZSgpID8gUEFfU1JDRElSICIvbW9kdWxlcy9hbHNhL21peGVyL3Byb2ZpbGUtc2V0cy8iIDoKLSsjZW5kaWYKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBQQV9BTFNBX1BST0ZJTEVfU0VUU19ESVIpOwotIAotICAgICByID0gcGFfY29uZmlnX3BhcnNlKGZuLCBOVUxMLCBpdGVtcywgTlVMTCwgZmFsc2UsIHBzKTsKLWRpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9nY29uZi9tb2R1bGUtZ2NvbmYuYyBiL3NyYy9tb2R1bGVzL2djb25mL21vZHVsZS1nY29uZi5jCi1pbmRleCBjMGY0ZGRlLi43NmExZjE5IDEwMDY0NAotLS0tIGEvc3JjL21vZHVsZXMvZ2NvbmYvbW9kdWxlLWdjb25mLmMKLSsrKyBiL3NyYy9tb2R1bGVzL2djb25mL21vZHVsZS1nY29uZi5jCi1AQCAtNTEsNyArNTEsNyBAQCBpbnQgcGFfX2luaXQocGFfbW9kdWxlKm0pIHsKLSAgICAgdS0+YnVmX2ZpbGwgPSAwOwotIAotICAgICBpZiAoKHUtPmZkID0gcGFfc3RhcnRfY2hpbGRfZm9yX3JlYWQoCi0tI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiAhZGVmaW5lZChfX09QVElNSVpFX18pCi0rI2lmIGRlZmluZWQoX19saW51eF9fKSAmJiBkZWZpbmVkKEhBVkVfUlVOTklOR19GUk9NX0JVSUxEX1RSRUUpCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgcGFfcnVuX2Zyb21fYnVpbGRfdHJlZSgpID8gUEFfQlVJTERESVIgIi9nY29uZi1oZWxwZXIiIDoKLSAjZW5kaWYKLSAgICAgICAgICAgICAgICAgIFBBX0dDT05GX0hFTFBFUiwgTlVMTCwgJnUtPnBpZCkpIDwgMCkKLWRpZmYgLS1naXQgYS9zcmMvbW9kdWxlcy9nc2V0dGluZ3MvbW9kdWxlLWdzZXR0aW5ncy5jIGIvc3JjL21vZHVsZXMvZ3NldHRpbmdzL21vZHVsZS1nc2V0dGluZ3MuYwotaW5kZXggMzMwZWNhMS4uMjA5Yzg1NyAxMDA2NDQKLS0tLSBhL3NyYy9tb2R1bGVzL2dzZXR0aW5ncy9tb2R1bGUtZ3NldHRpbmdzLmMKLSsrKyBiL3NyYy9tb2R1bGVzL2dzZXR0aW5ncy9tb2R1bGUtZ3NldHRpbmdzLmMKLUBAIC01MSw3ICs1MSw3IEBAIGludCBwYV9faW5pdChwYV9tb2R1bGUqbSkgewotICAgICB1LT5idWZfZmlsbCA9IDA7Ci0gCi0gICAgIGlmICgodS0+ZmQgPSBwYV9zdGFydF9jaGlsZF9mb3JfcmVhZCgKLS0jaWYgZGVmaW5lZChfX2xpbnV4X18pICYmICFkZWZpbmVkKF9fT1BUSU1JWkVfXykKLSsjaWYgZGVmaW5lZChfX2xpbnV4X18pICYmIGRlZmluZWQoSEFWRV9SVU5OSU5HX0ZST01fQlVJTERfVFJFRSkKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwYV9ydW5fZnJvbV9idWlsZF90cmVlKCkgPyBQQV9CVUlMRERJUiAiL2dzZXR0aW5ncy1oZWxwZXIiIDoKLSAjZW5kaWYKLSAgICAgICAgICAgICAgICAgIFBBX0dTRVRUSU5HU19IRUxQRVIsIE5VTEwsICZ1LT5waWQpKSA8IDApCi1kaWZmIC0tZ2l0IGEvc3JjL3B1bHNlY29yZS9jb3JlLXV0aWwuYyBiL3NyYy9wdWxzZWNvcmUvY29yZS11dGlsLmMKLWluZGV4IDY0ZTlmMjEuLmY4NWRkMjAgMTAwNjQ0Ci0tLS0gYS9zcmMvcHVsc2Vjb3JlL2NvcmUtdXRpbC5jCi0rKysgYi9zcmMvcHVsc2Vjb3JlL2NvcmUtdXRpbC5jCi1AQCAtMzQzNiwxNSArMzQzNiwxNyBAQCB2b2lkIHBhX3Jlc2V0X3BlcnNvbmFsaXR5KHZvaWQpIHsKLSB9Ci0gCi0gYm9vbCBwYV9ydW5fZnJvbV9idWlsZF90cmVlKHZvaWQpIHsKLS0gICAgY2hhciAqcnA7Ci0gICAgIHN0YXRpYyBib29sIGIgPSBmYWxzZTsKLSAKLSsjaWZkZWYgSEFWRV9SVU5OSU5HX0ZST01fQlVJTERfVFJFRQotKyAgICBjaGFyICpycDsKLSAgICAgUEFfT05DRV9CRUdJTiB7Ci0gICAgICAgICBpZiAoKHJwID0gcGFfcmVhZGxpbmsoIi9wcm9jL3NlbGYvZXhlIikpKSB7Ci0gICAgICAgICAgICAgYiA9IHBhX3N0YXJ0c3dpdGgocnAsIFBBX0JVSUxERElSKTsKLSAgICAgICAgICAgICBwYV94ZnJlZShycCk7Ci0gICAgICAgICB9Ci0gICAgIH0gUEFfT05DRV9FTkQ7Ci0rI2VuZGlmCi0gCi0gICAgIHJldHVybiBiOwotIH0KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1yZW1hcC1hcm0tQWRqdXN0LWlubGluZS1hc20tY29uc3RyYWludHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpby8wMDAxLXJlbWFwLWFybS1BZGp1c3QtaW5saW5lLWFzbS1jb25zdHJhaW50cy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45NTEzM2ZkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW8vMDAwMS1yZW1hcC1hcm0tQWRqdXN0LWlubGluZS1hc20tY29uc3RyYWludHMucGF0Y2gKQEAgLTAsMCArMSwxMTQgQEAKK0Zyb20gMzQ1MGQxZmNmZThhOGY4NDU1M2FiMjk5Y2Q5NmFlMDcwNWRkZmZiZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDUgTWFyIDIwMjAgMTE6NDg6MjggLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gcmVtYXAvYXJtOiBBZGp1c3QgaW5saW5lIGFzbSBjb25zdHJhaW50cworCitnY2MxMCBjYW4gZWZmZWN0aXZlbHkgZW1pdCBzaW5nbGUgcHJlY2lzaW9uIHJlZ2lzdGVycyBpZiByaWdodAorb3BlcmFuZCBtb2RpZmllciBjb25zdHJhaW50IGlzIG5vdCBpbiB1c2UKKworVGhpcyByZXN1bHRzIGluIGFzc2VtYmxlciByZWplY3RpbmcgdGhlIGNvZGUKKworL3RtcC9jY0VHNFFwSS5zOjY0NjogRXJyb3I6IFZGUC9OZW9uIGRvdWJsZSBwcmVjaXNpb24gcmVnaXN0ZXIgZXhwZWN0ZWQgLS0gYHZ0YmwuOCBkMyx7ZDAsZDF9LHM4JworL3RtcC9jY0VHNFFwSS5zOjY3ODogRXJyb3I6IGludmFsaWQgaW5zdHJ1Y3Rpb24gc2hhcGUgLS0gYHZtdWwuZjMyIGQwLGQwLHM4JworCitUaGVyZWZvcmUgYWRkICVQIHF1YWxpZmllciB0byByZXF1ZXN0IGRvdWJsZSByZWdpc3RlcnMgc2luZWNlICd3JyBjb3VsZAorbWVhbiB2YXJpYWJsZSBjb3VsZCBiZSBzdG9yZWQgaW4gczAuLnMxNCBhbmQgR0NDIGRlZmF1bHRzIHRvIHByaW50aW5nIG91dCBzMC4uczE0LgorTm90ZSB0aG9zZSByZWdpc3RlcnMgbWFwIHRvIGQwLi5kNyBhbHNvLgorCitPdXRwdXQgZ2VuZXJhdGVkIGlzIGV4YWN0bHkgc2FtZSB3aXRoIGdjYzksIGFuZCBpdCBhbHNvIG5vdyBjb21waWxlcword2l0aCBnY2MxMAorCitJdHMgbm90IGRvY3VtZW50ZWQgd2VsbCBpbiBnY2MgZG9jcyBhbmQgdGhlcmUgaXMgYSB0aWNrZXQgZm9yIHRoYXQKK2h0dHBzOi8vZ2NjLmdudS5vcmcvYnVnemlsbGEvc2hvd19idWcuY2dpP2lkPTg0MzQzCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGxhYi5mcmVlZGVza3RvcC5vcmcvcHVsc2VhdWRpby9wdWxzZWF1ZGlvLy0vbWVyZ2VfcmVxdWVzdHMvMjYxXQorU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9wdWxzZWNvcmUvcmVtYXBfbmVvbi5jIHwgMjIgKysrKysrKysrKystLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMSBpbnNlcnRpb25zKCspLCAxMSBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NyYy9wdWxzZWNvcmUvcmVtYXBfbmVvbi5jIGIvc3JjL3B1bHNlY29yZS9yZW1hcF9uZW9uLmMKK2luZGV4IDQxMjA4OTg2ZC4uY2EzYjk1YjQ4IDEwMDY0NAorLS0tIGEvc3JjL3B1bHNlY29yZS9yZW1hcF9uZW9uLmMKKysrKyBiL3NyYy9wdWxzZWNvcmUvcmVtYXBfbmVvbi5jCitAQCAtMTg5LDcgKzE4OSw3IEBAIHN0YXRpYyB2b2lkIHJlbWFwX2NoNF90b19tb25vX2Zsb2F0MzJuZV9uZW9uKHBhX3JlbWFwX3QgKm0sIGZsb2F0ICpkc3QsIGNvbnN0IGZsCisgICAgICAgICAgICAgInZhZGQuZjMyICAgZDAsIGQwLCBkMSAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAidmFkZC5mMzIgICBkMiwgZDIsIGQzICAgICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2YWRkLmYzMiAgIGQwLCBkMCwgZDIgICAgICAgICAgICAgIFxuXHQiCistICAgICAgICAgICAgInZtdWwuZjMyICAgZDAsIGQwLCAlW3F1YXJ0XSAgICAgICAgXG5cdCIKKysgICAgICAgICAgICAidm11bC5mMzIgICBkMCwgZDAsICVQW3F1YXJ0XSAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2c3QxLjMyICAgIHtkMH0sIFslW2RzdF1dISAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgOiBbZHN0XSAiK3IiIChkc3QpLCBbc3JjXSAiK3IiIChzcmMpIC8qIG91dHB1dCBvcGVyYW5kcyAqLworICAgICAgICAgICAgIDogW3F1YXJ0XSAidyIgKHF1YXJ0KSAvKiBpbnB1dCBvcGVyYW5kcyAqLworQEAgLTI3Niw3ICsyNzYsNyBAQCBzdGF0aWMgdm9pZCByZW1hcF9hcnJhbmdlX3N0ZXJlb19zMTZuZV9uZW9uKHBhX3JlbWFwX3QgKm0sIGludDE2X3QgKmRzdCwgY29uc3QgaQorICAgICBmb3IgKDsgbiA+PSAyOyBuIC09IDIpIHsKKyAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgKKyAgICAgICAgICAgICAidmxkMS5zMTYgICBkMCwgWyVbc3JjXV0hICAgICAgICAgICBcblx0IgorLSAgICAgICAgICAgICJ2dGJsLjggICAgIGQwLCB7ZDB9LCAlW3RdICAgICAgICAgIFxuXHQiCisrICAgICAgICAgICAgInZ0YmwuOCAgICAgZDAsIHtkMH0sICVQW3RdICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAidnN0MS5zMTYgICBkMCwgWyVbZHN0XV0hICAgICAgICAgICBcblx0IgorICAgICAgICAgICAgIDogW2RzdF0gIityIiAoZHN0KSwgW3NyY10gIityIiAoc3JjKSAvKiBvdXRwdXQgb3BlcmFuZHMgKi8KKyAgICAgICAgICAgICA6IFt0XSAidyIgKHQpIC8qIGlucHV0IG9wZXJhbmRzICovCitAQCAtMjg3LDcgKzI4Nyw3IEBAIHN0YXRpYyB2b2lkIHJlbWFwX2FycmFuZ2Vfc3RlcmVvX3MxNm5lX25lb24ocGFfcmVtYXBfdCAqbSwgaW50MTZfdCAqZHN0LCBjb25zdCBpCisgICAgIGlmIChuID4gMCkgeworICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgICAgICAgICJ2bGQxLjMyICAgZDBbMF0sIFslW3NyY11dISAgICAgICAgIFxuXHQiCistICAgICAgICAgICAgInZ0YmwuOCAgICBkMCwge2QwfSwgJVt0XSAgICAgICAgICAgXG5cdCIKKysgICAgICAgICAgICAidnRibC44ICAgIGQwLCB7ZDB9LCAlUFt0XSAgICAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2c3QxLjMyICAgZDBbMF0sIFslW2RzdF1dISAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgOiBbZHN0XSAiK3IiIChkc3QpLCBbc3JjXSAiK3IiIChzcmMpIC8qIG91dHB1dCBvcGVyYW5kcyAqLworICAgICAgICAgICAgIDogW3RdICJ3IiAodCkgLyogaW5wdXQgb3BlcmFuZHMgKi8KK0BAIC0zMDIsOCArMzAyLDggQEAgc3RhdGljIHZvaWQgcmVtYXBfYXJyYW5nZV9jaDJfY2g0X3MxNm5lX25lb24ocGFfcmVtYXBfdCAqbSwgaW50MTZfdCAqZHN0LCBjb25zdAorICAgICBmb3IgKDsgbiA+IDA7IG4tLSkgeworICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgICAgICAgICJ2bGQxLjMyICAgIGQwWzBdLCBbJVtzcmNdXSEgICAgICAgICAgIFxuXHQiCistICAgICAgICAgICAgInZ0YmwuOCAgICAgZDAsIHtkMH0sICVbdF0gICAgICAgICAgXG5cdCIKKy0gICAgICAgICAgICAidnN0MS5zMTYgICBkMCwgWyVbZHN0XV0hICAgICAgICAgICBcblx0IgorKyAgICAgICAgICAgICJ2dGJsLjggICAgIGQwLCB7ZDB9LCAlUFt0XSAgICAgICAgICAgIFxuXHQiCisrICAgICAgICAgICAgInZzdDEuczE2ICAgZDAsIFslW2RzdF1dISAgICAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICA6IFtkc3RdICIrciIgKGRzdCksIFtzcmNdICIrciIgKHNyYykgLyogb3V0cHV0IG9wZXJhbmRzICovCisgICAgICAgICAgICAgOiBbdF0gInciICh0KSAvKiBpbnB1dCBvcGVyYW5kcyAqLworICAgICAgICAgICAgIDogIm1lbW9yeSIsICJkMCIgLyogY2xvYmJlciBsaXN0ICovCitAQCAtMzE3LDcgKzMxNyw3IEBAIHN0YXRpYyB2b2lkIHJlbWFwX2FycmFuZ2VfY2g0X3MxNm5lX25lb24ocGFfcmVtYXBfdCAqbSwgaW50MTZfdCAqZHN0LCBjb25zdCBpbnQxCisgICAgIGZvciAoOyBuID4gMDsgbi0tKSB7CisgICAgICAgICBfX2FzbV9fIF9fdm9sYXRpbGVfXyAoCisgICAgICAgICAgICAgInZsZDEuczE2ICAgZDAsIFslW3NyY11dISAgICAgICAgICAgXG5cdCIKKy0gICAgICAgICAgICAidnRibC44ICAgICBkMCwge2QwfSwgJVt0XSAgICAgICAgICBcblx0IgorKyAgICAgICAgICAgICJ2dGJsLjggICAgIGQwLCB7ZDB9LCAlUFt0XSAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgInZzdDEuczE2ICAgZDAsIFslW2RzdF1dISAgICAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICA6IFtkc3RdICIrciIgKGRzdCksIFtzcmNdICIrciIgKHNyYykgLyogb3V0cHV0IG9wZXJhbmRzICovCisgICAgICAgICAgICAgOiBbdF0gInciICh0KSAvKiBpbnB1dCBvcGVyYW5kcyAqLworQEAgLTMzMiw3ICszMzIsNyBAQCBzdGF0aWMgdm9pZCByZW1hcF9hcnJhbmdlX3N0ZXJlb19mbG9hdDMybmVfbmVvbihwYV9yZW1hcF90ICptLCBmbG9hdCAqZHN0LCBjb25zdAorICAgICBmb3IgKDsgbiA+IDA7IG4tLSkgeworICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgICAgICAgICJ2bGQxLmYzMiAgIGQwLCBbJVtzcmNdXSEgICAgICAgICAgIFxuXHQiCistICAgICAgICAgICAgInZ0YmwuOCAgICAgZDAsIHtkMH0sICVbdF0gICAgICAgICAgXG5cdCIKKysgICAgICAgICAgICAidnRibC44ICAgICBkMCwge2QwfSwgJVBbdF0gICAgICAgICBcblx0IgorICAgICAgICAgICAgICJ2c3QxLnMxNiAgIHtkMH0sIFslW2RzdF1dISAgICAgICAgIFxuXHQiCisgICAgICAgICAgICAgOiBbZHN0XSAiK3IiIChkc3QpLCBbc3JjXSAiK3IiIChzcmMpIC8qIG91dHB1dCBvcGVyYW5kcyAqLworICAgICAgICAgICAgIDogW3RdICJ3IiAodCkgLyogaW5wdXQgb3BlcmFuZHMgKi8KK0BAIC0zNDksOCArMzQ5LDggQEAgc3RhdGljIHZvaWQgcmVtYXBfYXJyYW5nZV9jaDJfY2g0X2FueTMybmVfbmVvbihwYV9yZW1hcF90ICptLCBmbG9hdCAqZHN0LCBjb25zdAorICAgICBmb3IgKDsgbiA+IDA7IG4tLSkgeworICAgICAgICAgX19hc21fXyBfX3ZvbGF0aWxlX18gKAorICAgICAgICAgICAgICJ2bGQxLmYzMiAgIGQwLCBbJVtzcmNdXSEgICAgICAgICAgIFxuXHQiCistICAgICAgICAgICAgInZ0YmwuOCAgICAgZDEsIHtkMH0sICVbdDBdICAgICAgICAgXG5cdCIKKy0gICAgICAgICAgICAidnRibC44ICAgICBkMiwge2QwfSwgJVt0MV0gICAgICAgICBcblx0IgorKyAgICAgICAgICAgICJ2dGJsLjggICAgIGQxLCB7ZDB9LCAlUFt0MF0gICAgICAgIFxuXHQiCisrICAgICAgICAgICAgInZ0YmwuOCAgICAgZDIsIHtkMH0sICVQW3QxXSAgICAgICAgXG5cdCIKKyAgICAgICAgICAgICAidnN0MS5zMTYgICB7ZDEsZDJ9LCBbJVtkc3RdXSEgICAgICBcblx0IgorICAgICAgICAgICAgIDogW2RzdF0gIityIiAoZHN0KSwgW3NyY10gIityIiAoc3JjKSAvKiBvdXRwdXQgb3BlcmFuZHMgKi8KKyAgICAgICAgICAgICA6IFt0MF0gInciICh0MCksIFt0MV0gInciICh0MSkgLyogaW5wdXQgb3BlcmFuZHMgKi8KK0BAIC0zNjYsOCArMzY2LDggQEAgc3RhdGljIHZvaWQgcmVtYXBfYXJyYW5nZV9jaDRfZmxvYXQzMm5lX25lb24ocGFfcmVtYXBfdCAqbSwgZmxvYXQgKmRzdCwgY29uc3QgZmwKKyAgICAgZm9yICg7IG4gPiAwOyBuLS0pIHsKKyAgICAgICAgIF9fYXNtX18gX192b2xhdGlsZV9fICgKKyAgICAgICAgICAgICAidmxkMS5mMzIgICB7ZDAsZDF9LCBbJVtzcmNdXSEgICAgICBcblx0IgorLSAgICAgICAgICAgICJ2dGJsLjggICAgIGQyLCB7ZDAsZDF9LCAlW3QwXSAgICAgIFxuXHQiCistICAgICAgICAgICAgInZ0YmwuOCAgICAgZDMsIHtkMCxkMX0sICVbdDFdICAgICAgXG5cdCIKKysgICAgICAgICAgICAidnRibC44ICAgICBkMiwge2QwLGQxfSwgJVBbdDBdICAgICBcblx0IgorKyAgICAgICAgICAgICJ2dGJsLjggICAgIGQzLCB7ZDAsZDF9LCAlUFt0MV0gICAgIFxuXHQiCisgICAgICAgICAgICAgInZzdDEuczE2ICAge2QyLGQzfSwgWyVbZHN0XV0hICAgICAgXG5cdCIKKyAgICAgICAgICAgICA6IFtkc3RdICIrciIgKGRzdCksIFtzcmNdICIrciIgKHNyYykgLyogb3V0cHV0IG9wZXJhbmRzICovCisgICAgICAgICAgICAgOiBbdDBdICJ3IiAodDApLCBbdDFdICJ3IiAodDEpIC8qIGlucHV0IG9wZXJhbmRzICovCistLSAKKzIuMjUuMQorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTIuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODhiNDk3NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3B1bHNlYXVkaW8vcHVsc2VhdWRpb18xMi4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTYgKzAsMCBAQAotcmVxdWlyZSBwdWxzZWF1ZGlvLmluYwotCi1TUkNfVVJJID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy8ke0JQfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1jbGllbnQtY29uZi1BZGQtYWxsb3ctYXV0b3NwYXduLWZvci1yb290LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtaW50cm9kdWNlLWEtc3BlY2lhbC1idWlsZC1mbGFnLXRvLWV4cGxpY2l0bHktZGlzYWJsZS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWFsc2EtRml4LWluY2x1c2lvbi1vZi11c2UtY2FzZS5oLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDItZG8tbm90LWRpc3BsYXktQ0xGQUdTLXRvLWltcHJvdmUtcmVwcm9kdWNpYmlsaXR5LWJ1aS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDRfcHVsc2UgXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiYzQyZjFmMTQ2NWU4ZGY5ODU5ZDAyM2RjMTg0NzM0YmYiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiODA5NjY4ZmZjMjk2MDQzNzc5Yzk4NGY1MzQ2MWMyYjM5ODdhNDViN2EyNWViMmYwYTFkMTFkOWYyM2JhNDA1NSIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIG1rZGlyIC1wICR7U30vbGlibHRkbAotICAgIGNwICR7U1RBR0lOR19MSUJESVJ9L2xpYmx0ZGwqICR7U30vbGlibHRkbAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9wdWxzZWF1ZGlvL3B1bHNlYXVkaW9fMTMuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzEzLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNjAxNDk5YgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvcHVsc2VhdWRpby9wdWxzZWF1ZGlvXzEzLjAuYmIKQEAgLTAsMCArMSwxNSBAQAorcmVxdWlyZSBwdWxzZWF1ZGlvLmluYworCitTUkNfVVJJID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvc29mdHdhcmUvcHVsc2VhdWRpby9yZWxlYXNlcy8ke0JQfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jbGllbnQtY29uZi1BZGQtYWxsb3ctYXV0b3NwYXduLWZvci1yb290LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDItZG8tbm90LWRpc3BsYXktQ0xGQUdTLXRvLWltcHJvdmUtcmVwcm9kdWNpYmlsaXR5LWJ1aS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlbWFwLWFybS1BZGp1c3QtaW5saW5lLWFzbS1jb25zdHJhaW50cy5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly92b2xhdGlsZXMuMDRfcHVsc2UgXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiZTQxZDYwNmY5MDI1NGVkNDVjOTA1MjBmYWY4M2Q5NWMiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOTYxYjIzY2ExYWNmZDI4ZjJiYzg3NDE0YzI3YmI0MGUxMjQzNmVmY2YyMTU4ZDI5NzIxYjFlODlmM2YyODA1NyIKKworZG9fY29tcGlsZV9wcmVwZW5kKCkgeworICAgIG1rZGlyIC1wICR7U30vbGlibHRkbAorICAgIGNwICR7U1RBR0lOR19MSUJESVJ9L2xpYmx0ZGwqICR7U30vbGlibHRkbAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleGRzcC8wMDAxLURvbi10LXJlbHktb24tSEFWRV9TVERJTlRfSC1ldC1hbC4tYmVpbmctZGVmaW5lZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhkc3AvMDAwMS1Eb24tdC1yZWx5LW9uLUhBVkVfU1RESU5UX0gtZXQtYWwuLWJlaW5nLWRlZmluZWQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3MDY3ZGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleGRzcC8wMDAxLURvbi10LXJlbHktb24tSEFWRV9TVERJTlRfSC1ldC1hbC4tYmVpbmctZGVmaW5lZC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDYzICswLDAgQEAKLUZyb20gYzczMzcwY2VhZmQxMzhiZWNlZThjYTNjNjg4YmE3NTc1NjgzMGJmZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFRhbnUgS2Fza2luZW4gPHRhbnUua2Fza2luZW5AbGludXguaW50ZWwuY29tPgotRGF0ZTogU3VuLCA1IEp1bCAyMDE1IDE3OjQ4OjE2ICswMzAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvbid0IHJlbHkgb24gSEFWRV9TVERJTlRfSCBldCBhbC4gYmVpbmcgZGVmaW5lZAotCi1Ob3QgZXZlcnlvbmUgd2hvIGluY2x1ZGVzIHNwZWV4ZHNwX2NvbmZpZ190eXBlcy5oIHdpbGwgaGF2ZSBhIHRlc3QKLXdoaWNoIGRlZmluZXMgdGhvc2UsIGFuZCBpZiB3ZSd2ZSBjaG9zZW4gdG8gdXNlIHRoZSBzdGRpbnQgdHlwZXMgYXQKLWNvbmZpZ3VyZSB0aW1lIHRoZW4gd2Uga25vdyBleGFjdGx5IHdoaWNoIGhlYWRlcihzKSBhcmUgYXZhaWxhYmxlLCBzbwotanVzdCBjaG9vc2UgdGhlIGJlc3Qgb25lIHRoZW4gYW5kIGdlbmVyYXRlIHRoZSBoZWFkZXIgdG8gdXNlIGl0LgotCi1UaGlzIHBhdGNoLCBpbmNsdWRpbmcgdGhlIGFib3ZlIHRleHQsIGlzIGNvcGllZCBmcm9tIGEgY29tbWl0IGluIHRoZQotc3BlZXggcmVwb3NpdG9yeVsxXS4gVGhlIG9yaWdpbmFsIGNvbW1pdCBmb3Igc3BlZXggd2FzIG1hZGUgYnkgUm9uCi08cm9uQGRlYmlhbi5vcmc+LgotCi1bMV0gaHR0cHM6Ly9naXQueGlwaC5vcmcvP3A9c3BlZXguZ2l0O2E9Y29tbWl0ZGlmZjtoPTc3NGM4N2Q2Y2I3ZGQ4ZGFiZGQxNzY3N2ZjNmRhNzUzZWNmNGFhODcKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1TaWduZWQtb2ZmLWJ5OiBUYW51IEthc2tpbmVuIDx0YW51Lmthc2tpbmVuQGxpbnV4LmludGVsLmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgfCA2ICsrKysrKwotIGluY2x1ZGUvc3BlZXgvc3BlZXhkc3BfY29uZmlnX3R5cGVzLmguaW4gfCA4ICstLS0tLS0tCi0gMiBmaWxlcyBjaGFuZ2VkLCA3IGluc2VydGlvbnMoKyksIDcgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IDJjZDJkMWUuLjFkZTBjMjMgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTMzNCw2ICszMzQsMTIgQEAgQUNfU1VCU1QoW1VTSVpFMTZdKQotIEFDX1NVQlNUKFtTSVpFMzJdKQotIEFDX1NVQlNUKFtVU0laRTMyXSkKLSAKLStBU19JRihbdGVzdCAiJGFjX2N2X2hlYWRlcl9zdGRpbnRfaCIgPSAieWVzIl0sICAgIFtJTkNMVURFX1NURElOVD0iI2luY2x1ZGUgPHN0ZGludC5oPiJdLAotKyAgICAgIFt0ZXN0ICIkYWNfY3ZfaGVhZGVyX2ludHR5cGVzX2giID0gInllcyJdLCAgW0lOQ0xVREVfU1RESU5UPSIjaW5jbHVkZSA8aW50dHlwZXMuaD4iXSwKLSsgICAgICBbdGVzdCAiJGFjX2N2X2hlYWRlcl9zeXNfdHlwZXNfaCIgPSAieWVzIl0sIFtJTkNMVURFX1NURElOVD0iI2luY2x1ZGUgPHN5cy90eXBlcy5oPiJdKQotKwotK0FDX1NVQlNUKFtJTkNMVURFX1NURElOVF0pCi0rCi0gQUNfQ09ORklHX0ZJTEVTKFsKLSAgICAgICAgICAgIE1ha2VmaWxlIGxpYnNwZWV4ZHNwL01ha2VmaWxlIGRvYy9NYWtlZmlsZSBTcGVleERTUC5zcGVjCi0gICAgICAgICAgICBpbmNsdWRlL01ha2VmaWxlIGluY2x1ZGUvc3BlZXgvTWFrZWZpbGUgc3BlZXhkc3AucGMKLWRpZmYgLS1naXQgYS9pbmNsdWRlL3NwZWV4L3NwZWV4ZHNwX2NvbmZpZ190eXBlcy5oLmluIGIvaW5jbHVkZS9zcGVleC9zcGVleGRzcF9jb25maWdfdHlwZXMuaC5pbgotaW5kZXggMDJiODJmZC4uNWVhN2I1NSAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvc3BlZXgvc3BlZXhkc3BfY29uZmlnX3R5cGVzLmguaW4KLSsrKyBiL2luY2x1ZGUvc3BlZXgvc3BlZXhkc3BfY29uZmlnX3R5cGVzLmguaW4KLUBAIC0xLDEzICsxLDcgQEAKLSAjaWZuZGVmIF9fU1BFRVhfVFlQRVNfSF9fCi0gI2RlZmluZSBfX1NQRUVYX1RZUEVTX0hfXwotIAotLSNpZiBkZWZpbmVkIEhBVkVfU1RESU5UX0gKLS0jICBpbmNsdWRlIDxzdGRpbnQuaD4KLS0jZWxpZiBkZWZpbmVkIEhBVkVfSU5UVFlQRVNfSAotLSMgIGluY2x1ZGUgPGludHR5cGVzLmg+Ci0tI2VsaWYgZGVmaW5lZCBIQVZFX1NZU19UWVBFU19ICi0tIyAgaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tI2VuZGlmCi0rQElOQ0xVREVfU1RESU5UQAotIAotIHR5cGVkZWYgQFNJWkUxNkAgc3B4X2ludDE2X3Q7Ci0gdHlwZWRlZiBAVVNJWkUxNkAgc3B4X3VpbnQxNl90OwotLS0gCi0xLjkuMwotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3NwZWV4L3NwZWV4ZHNwXzEuMi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleGRzcF8xLjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42MzY5NjQ2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleGRzcF8xLjIuMC5iYgpAQCAtMCwwICsxLDI3IEBACitTVU1NQVJZID0gIkEgcGF0ZW50LWZyZWUgRFNQIGxpYnJhcnkiCitERVNDUklQVElPTiA9ICJTcGVleERTUCBpcyBhIHBhdGVudC1mcmVlLCBPcGVuIFNvdXJjZS9GcmVlIFNvZnR3YXJlIERTUCBsaWJyYXJ5LiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuc3BlZXgub3JnIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMTQ2NDlkOGJhOWRkNzA0NWRmYjY2ODNmMjk4ZDBhOCIKKworU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnhpcGgub3JnL3JlbGVhc2VzL3NwZWV4L3NwZWV4ZHNwLSR7UFZ9LnRhci5neiIKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAic3BlZXhkc3AtKD9QPHB2ZXI+XGQrKFwuXGQrKSspXC50YXIiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiNzIyZGYzNDE1NzZkYzE4NWQ4OTcxMzEzMjEwMDhmYyIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2ODIwNDJmYzZmOWJlZTYyOTRlYzQ1M2Y0NzBkYWRjMjZjNmZmMjliOWM5ZTlhZDJmZmMxZjQzMTJmZDY0NzcxIgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworRVhUUkFfT0VDT05GID0gIlwKKyAgICAgICAgLS1kaXNhYmxlLWV4YW1wbGVzIFwKKyAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ1RBUkdFVF9GUFUnLCAnc29mdCcsICctLWVuYWJsZS1maXhlZC1wb2ludCAtLWRpc2FibGUtZmxvYXQtYXBpJywgJycsIGQpfSBcCisiCisKKyMgc3BlZXhkc3Agd2FzIHNwbGl0IG9mZiBmcm9tIHNwZWV4IGluIDEuMnJjMi4gT2xkZXIgdmVyc2lvbnMgb2Ygc3BlZXggY2FuJ3QKKyMgYmUgaW5zdGFsbGVkIHRvZ2V0aGVyIHdpdGggc3BlZXhkc3AsIHNpbmNlIHRoZXkgY29udGFpbiBvdmVybGFwcGluZyBmaWxlcy4KK1JDT05GTElDVFNfJHtQTn0gPSAic3BlZXggKDwgMS4ycmMyKSIKK1JDT05GTElDVFNfJHtQTn0tZGJnID0gInNwZWV4LWRiZyAoPCAxLjJyYzIpIgorUkNPTkZMSUNUU18ke1BOfS1kZXYgPSAic3BlZXgtZGV2ICg8IDEuMnJjMikiCitSQ09ORkxJQ1RTXyR7UE59LXN0YXRpY2RldiA9ICJzcGVleC1zdGF0aWNkZXYgKDwgMS4ycmMyKSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvc3BlZXgvc3BlZXhkc3BfMS4ycmMzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleGRzcF8xLjJyYzMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAzYzk0OWIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS9zcGVleC9zcGVleGRzcF8xLjJyYzMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1TVU1NQVJZID0gIkEgcGF0ZW50LWZyZWUgRFNQIGxpYnJhcnkiCi1ERVNDUklQVElPTiA9ICJTcGVleERTUCBpcyBhIHBhdGVudC1mcmVlLCBPcGVuIFNvdXJjZS9GcmVlIFNvZnR3YXJlIERTUCBsaWJyYXJ5LiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuc3BlZXgub3JnIgotU0VDVElPTiA9ICJsaWJzIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zMTQ2NDlkOGJhOWRkNzA0NWRmYjY2ODNmMjk4ZDBhOCIKLQotU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWRzLnhpcGgub3JnL3JlbGVhc2VzL3NwZWV4L3NwZWV4ZHNwLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLURvbi10LXJlbHktb24tSEFWRV9TVERJTlRfSC1ldC1hbC4tYmVpbmctZGVmaW5lZC5wYXRjaCIKLQotU1JDX1VSSVttZDVzdW1dID0gIjcwZDlkMzExODRmN2ViNzYxMTkyZmQxZWYwYjczMzMzIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRhZTY4ODYwMDAzOWY1ZDIyNGJkZjJlMjIyZDJmYmRlNjU2MDg0NDdlNGMyZjY4MTU4NWU0ZGNhNmRmNjkyZjEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZwotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgICAgICAtLWRpc2FibGUtZXhhbXBsZXMgXAotICAgICAgICAke0BiYi51dGlscy5jb250YWlucygnVEFSR0VUX0ZQVScsICdzb2Z0JywgJy0tZW5hYmxlLWZpeGVkLXBvaW50IC0tZGlzYWJsZS1mbG9hdC1hcGknLCAnJywgZCl9IFwKLSIKLQotIyBXb3JrYXJvdW5kIGZvciBhIGJ1aWxkIGZhaWx1cmUgd2hlbiBidWlsZGluZyB3aXRoIE1BQ0hJTkU9cWVtdWFybTY0LiBJIHRoaW5rCi0jIGFhcmNoNjQgaXMgc3VwcG9zZWQgdG8gc3VwcG9ydCBORU9OIGp1c3QgZmluZSwgYnV0IGJ1aWxkaW5nIGZvciBxZW11YXJtNjQKLSMgZmFpbHMgaW4gTkVPTiBjb2RlOgotIwotIyAuLi4vc3BlZXhkc3AtMS4ycmMzL2xpYnNwZWV4ZHNwL3Jlc2FtcGxlX25lb24uaDoxNDg6NTogZXJyb3I6IGltcG9zc2libGUgY29uc3RyYWludCBpbiAnYXNtJwotIyAgICAgIGFzbSB2b2xhdGlsZSAoIiAgY21wICVbbGVuXSwgIzBcbiIKLSMgICAgICBeCi0jCi0jIEkgc2VudCBhbiBlbWFpbCBhYm91dCB0aGUgaXNzdWUgdG8gc3BlZXgtZGV2LiBBdCB0aGUgdGltZSBvZiB3cml0aW5nIHRoZXJlCi0jIGFyZSBubyByZXNwb25zZXMgeWV0OgotIyBodHRwOi8vdGhyZWFkLmdtYW5lLm9yZy9nbWFuZS5jb21wLmF1ZGlvLmNvbXByZXNzaW9uLnNwZWV4LmRldmVsLzczNjAKLUVYVFJBX09FQ09ORiArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ1RVTkVfRkVBVFVSRVMnLCAnYWFyY2g2NCcsICctLWRpc2FibGUtbmVvbicsICcnLCBkKX0iCi0KLSMgc3BlZXhkc3Agd2FzIHNwbGl0IG9mZiBmcm9tIHNwZWV4IGluIDEuMnJjMi4gT2xkZXIgdmVyc2lvbnMgb2Ygc3BlZXggY2FuJ3QKLSMgYmUgaW5zdGFsbGVkIHRvZ2V0aGVyIHdpdGggc3BlZXhkc3AsIHNpbmNlIHRoZXkgY29udGFpbiBvdmVybGFwcGluZyBmaWxlcy4KLVJDT05GTElDVFNfJHtQTn0gPSAic3BlZXggKDwgMS4ycmMyKSIKLVJDT05GTElDVFNfJHtQTn0tZGJnID0gInNwZWV4LWRiZyAoPCAxLjJyYzIpIgotUkNPTkZMSUNUU18ke1BOfS1kZXYgPSAic3BlZXgtZGV2ICg8IDEuMnJjMikiCi1SQ09ORkxJQ1RTXyR7UE59LXN0YXRpY2RldiA9ICJzcGVleC1zdGF0aWNkZXYgKDwgMS4ycmMyKSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicC9saWJ3ZWJwXzEuMC4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMS4wLjMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDUwODJiZjAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS93ZWJwL2xpYndlYnBfMS4wLjMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1NiArMCwwIEBACi1TVU1NQVJZID0gIldlYlAgaXMgYW4gaW1hZ2UgZm9ybWF0IGRlc2lnbmVkIGZvciB0aGUgV2ViIgotREVTQ1JJUFRJT04gPSAiV2ViUCBpcyBhIG1ldGhvZCBvZiBsb3NzeSBhbmQgbG9zc2xlc3MgY29tcHJlc3Npb24gdGhhdCBjYW4gYmUgXAotICAgICAgICAgICAgICAgdXNlZCBvbiBhIGxhcmdlIHZhcmlldHkgb2YgcGhvdG9ncmFwaGljLCB0cmFuc2x1Y2VudCBhbmQgXAotICAgICAgICAgICAgICAgZ3JhcGhpY2FsIGltYWdlcyBmb3VuZCBvbiB0aGUgd2ViLiBUaGUgZGVncmVlIG9mIGxvc3N5IFwKLSAgICAgICAgICAgICAgIGNvbXByZXNzaW9uIGlzIGFkanVzdGFibGUgc28gYSB1c2VyIGNhbiBjaG9vc2UgdGhlIHRyYWRlLW9mZiBcCi0gICAgICAgICAgICAgICBiZXR3ZWVuIGZpbGUgc2l6ZSBhbmQgaW1hZ2UgcXVhbGl0eS4gV2ViUCB0eXBpY2FsbHkgYWNoaWV2ZXMgXAotICAgICAgICAgICAgICAgYW4gYXZlcmFnZSBvZiAzMCUgbW9yZSBjb21wcmVzc2lvbiB0aGFuIEpQRUcgYW5kIEpQRUcgMjAwMCwgXAotICAgICAgICAgICAgICAgd2l0aG91dCBsb3NzIG9mIGltYWdlIHF1YWxpdHkuIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vc3BlZWQvd2VicC8iCi1TRUNUSU9OID0gImxpYnMiCi0KLUxJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmU4ZGVlOTMyYzI2ZjJkYWI1MDNhYmY3MGM5NmQ4YmIgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUEFURU5UUzttZDU9YzY5MjZkMGNiMDdkMjk2Zjg4NmFiNmUwY2M1YTg1YjciCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy53ZWJtcHJvamVjdC5vcmcvcmVsZWFzZXMvd2VicC8ke0JQfS50YXIuZ3oiCi1TUkNfVVJJW21kNXN1bV0gPSAiOTA2YWQ4NWRhYWFhMmVhYzk3YzhhYTJkZWM5ZThiNzciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTIwYTA3ODY1Yzg2OTdiYmEwMGFlYmNjYzZmNTQ5MTJkNmJjMzMzYmI0ZDYwNGU2YjA3NDkxYzFhMjI2YjM0ZiIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMud2VibXByb2plY3Qub3JnL3JlbGVhc2VzL3dlYnAvaW5kZXguaHRtbCIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1kaXNhYmxlLXdpYyBcCi0gICAgLS1lbmFibGUtbGlid2VicG11eCBcCi0gICAgLS1lbmFibGUtbGlid2VicGRlbXV4IFwKLSAgICAtLWVuYWJsZS10aHJlYWRpbmcgXAotIgotCi0jIERvIG5vdCB0cnVzdCBjb25maWd1cmUgdG8gZGV0ZXJtaW5lIGlmIG5lb24gaXMgYXZhaWxhYmxlLgotIwotRVhUUkFfT0VDT05GX0FSTSA9ICIgXAotICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwibmVvbiIsIi0tZW5hYmxlLW5lb24iLCItLWRpc2FibGUtbmVvbiIsZCl9IFwKLSIKLUVYVFJBX09FQ09ORl9hcHBlbmRfYXJtID0gIiAke0VYVFJBX09FQ09ORl9BUk19IgotRVhUUkFfT0VDT05GX2FwcGVuZF9hcm1lYiA9ICIgJHtFWFRSQV9PRUNPTkZfQVJNfSIKLQotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLQotIyBsaWJ3ZWJwZGVjb2RlciBpcyBhIHN1YnNldCBvZiBsaWJ3ZWJwLCBkb24ndCBidWlsZCBpdCB1bmxlc3MgcmVxdWVzdGVkCi1QQUNLQUdFQ09ORklHW2RlY29kZXJdID0gIi0tZW5hYmxlLWxpYndlYnBkZWNvZGVyLC0tZGlzYWJsZS1saWJ3ZWJwZGVjb2RlciIKLQotIyBBcHBseSBmb3IgZXhhbXBsZXMgcHJvZ3JhbXM6IGN3ZWJwIGFuZCBkd2VicAotUEFDS0FHRUNPTkZJR1tnaWZdID0gIi0tZW5hYmxlLWdpZiwtLWRpc2FibGUtZ2lmLGdpZmxpYiIKLVBBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgotUEFDS0FHRUNPTkZJR1twbmddID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLCxsaWJwbmciCi1QQUNLQUdFQ09ORklHW3RpZmZdID0gIi0tZW5hYmxlLXRpZmYsLS1kaXNhYmxlLXRpZmYsdGlmZiIKLQotIyBBcHBseSBvbmx5IGZvciBleGFtcGxlIHByb2dyYW0gdndlYnAKLVBBQ0tBR0VDT05GSUdbZ2xdID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCxtZXNhLWdsdXQiCi0KLVBBQ0tBR0VTID0rICIke1BOfS1naWYyd2VicCIKLQotREVTQ1JJUFRJT05fJHtQTn0tZ2lmMndlYnAgPSAiU2ltcGxlIHRvb2wgdG8gY29udmVydCBhbmltYXRlZCBHSUZzIHRvIFdlYlAiCi1GSUxFU18ke1BOfS1naWYyd2VicCA9ICIke2JpbmRpcn0vZ2lmMndlYnAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8xLjEuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEvd2VicC9saWJ3ZWJwXzEuMS4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY4ZTVhZTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3dlYnAvbGlid2VicF8xLjEuMC5iYgpAQCAtMCwwICsxLDU2IEBACitTVU1NQVJZID0gIldlYlAgaXMgYW4gaW1hZ2UgZm9ybWF0IGRlc2lnbmVkIGZvciB0aGUgV2ViIgorREVTQ1JJUFRJT04gPSAiV2ViUCBpcyBhIG1ldGhvZCBvZiBsb3NzeSBhbmQgbG9zc2xlc3MgY29tcHJlc3Npb24gdGhhdCBjYW4gYmUgXAorICAgICAgICAgICAgICAgdXNlZCBvbiBhIGxhcmdlIHZhcmlldHkgb2YgcGhvdG9ncmFwaGljLCB0cmFuc2x1Y2VudCBhbmQgXAorICAgICAgICAgICAgICAgZ3JhcGhpY2FsIGltYWdlcyBmb3VuZCBvbiB0aGUgd2ViLiBUaGUgZGVncmVlIG9mIGxvc3N5IFwKKyAgICAgICAgICAgICAgIGNvbXByZXNzaW9uIGlzIGFkanVzdGFibGUgc28gYSB1c2VyIGNhbiBjaG9vc2UgdGhlIHRyYWRlLW9mZiBcCisgICAgICAgICAgICAgICBiZXR3ZWVuIGZpbGUgc2l6ZSBhbmQgaW1hZ2UgcXVhbGl0eS4gV2ViUCB0eXBpY2FsbHkgYWNoaWV2ZXMgXAorICAgICAgICAgICAgICAgYW4gYXZlcmFnZSBvZiAzMCUgbW9yZSBjb21wcmVzc2lvbiB0aGFuIEpQRUcgYW5kIEpQRUcgMjAwMCwgXAorICAgICAgICAgICAgICAgd2l0aG91dCBsb3NzIG9mIGltYWdlIHF1YWxpdHkuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9kZXZlbG9wZXJzLmdvb2dsZS5jb20vc3BlZWQvd2VicC8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiQlNELTMtQ2xhdXNlIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NmU4ZGVlOTMyYzI2ZjJkYWI1MDNhYmY3MGM5NmQ4YmIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vUEFURU5UUzttZDU9YzY5MjZkMGNiMDdkMjk2Zjg4NmFiNmUwY2M1YTg1YjciCisKK1NSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2Fkcy53ZWJtcHJvamVjdC5vcmcvcmVsZWFzZXMvd2VicC8ke0JQfS50YXIuZ3oiCitTUkNfVVJJW21kNXN1bV0gPSAiN2UwNDdmMmNiYWY1ODRkZmY3YThhN2UwZjg1NzJmMTgiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiOThhMDUyMjY4Y2M0ZDVlY2UyN2Y3NjU3MmE3ZjUwMjkzZjQzOWMxN2E5OGU2N2M0ZWEwYzdlZDZmNTBlZjA0MyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZHMud2VibXByb2plY3Qub3JnL3JlbGVhc2VzL3dlYnAvaW5kZXguaHRtbCIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLXdpYyBcCisgICAgLS1lbmFibGUtbGlid2VicG11eCBcCisgICAgLS1lbmFibGUtbGlid2VicGRlbXV4IFwKKyAgICAtLWVuYWJsZS10aHJlYWRpbmcgXAorIgorCisjIERvIG5vdCB0cnVzdCBjb25maWd1cmUgdG8gZGV0ZXJtaW5lIGlmIG5lb24gaXMgYXZhaWxhYmxlLgorIworRVhUUkFfT0VDT05GX0FSTSA9ICIgXAorICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCJUVU5FX0ZFQVRVUkVTIiwibmVvbiIsIi0tZW5hYmxlLW5lb24iLCItLWRpc2FibGUtbmVvbiIsZCl9IFwKKyIKK0VYVFJBX09FQ09ORl9hcHBlbmRfYXJtID0gIiAke0VYVFJBX09FQ09ORl9BUk19IgorRVhUUkFfT0VDT05GX2FwcGVuZF9hcm1lYiA9ICIgJHtFWFRSQV9PRUNPTkZfQVJNfSIKKworaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKKworIyBsaWJ3ZWJwZGVjb2RlciBpcyBhIHN1YnNldCBvZiBsaWJ3ZWJwLCBkb24ndCBidWlsZCBpdCB1bmxlc3MgcmVxdWVzdGVkCitQQUNLQUdFQ09ORklHW2RlY29kZXJdID0gIi0tZW5hYmxlLWxpYndlYnBkZWNvZGVyLC0tZGlzYWJsZS1saWJ3ZWJwZGVjb2RlciIKKworIyBBcHBseSBmb3IgZXhhbXBsZXMgcHJvZ3JhbXM6IGN3ZWJwIGFuZCBkd2VicAorUEFDS0FHRUNPTkZJR1tnaWZdID0gIi0tZW5hYmxlLWdpZiwtLWRpc2FibGUtZ2lmLGdpZmxpYiIKK1BBQ0tBR0VDT05GSUdbanBlZ10gPSAiLS1lbmFibGUtanBlZywtLWRpc2FibGUtanBlZyxqcGVnIgorUEFDS0FHRUNPTkZJR1twbmddID0gIi0tZW5hYmxlLXBuZywtLWRpc2FibGUtcG5nLCxsaWJwbmciCitQQUNLQUdFQ09ORklHW3RpZmZdID0gIi0tZW5hYmxlLXRpZmYsLS1kaXNhYmxlLXRpZmYsdGlmZiIKKworIyBBcHBseSBvbmx5IGZvciBleGFtcGxlIHByb2dyYW0gdndlYnAKK1BBQ0tBR0VDT05GSUdbZ2xdID0gIi0tZW5hYmxlLWdsLC0tZGlzYWJsZS1nbCxtZXNhLWdsdXQiCisKK1BBQ0tBR0VTID0rICIke1BOfS1naWYyd2VicCIKKworREVTQ1JJUFRJT05fJHtQTn0tZ2lmMndlYnAgPSAiU2ltcGxlIHRvb2wgdG8gY29udmVydCBhbmltYXRlZCBHSUZzIHRvIFdlYlAiCitGSUxFU18ke1BOfS1naWYyd2VicCA9ICIke2JpbmRpcn0vZ2lmMndlYnAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NC9GaXgtWDMyLWJ1aWxkLWJ5LWRpc2FibGluZy1hc20ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NC9GaXgtWDMyLWJ1aWxkLWJ5LWRpc2FibGluZy1hc20ucGF0Y2gKaW5kZXggMDg3YTQ0OC4uY2I3NzFmYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjQvRml4LVgzMi1idWlsZC1ieS1kaXNhYmxpbmctYXNtLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0L0ZpeC1YMzItYnVpbGQtYnktZGlzYWJsaW5nLWFzbS5wYXRjaApAQCAtMSw0ICsxLDQgQEAKLUZyb20gNjZiMTIwMDc5ZmIyMWVkMzhjYWIwOTAwYzYzMzYwYjBhNzg1M2VhYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gN2JjMjVmNGQxYWFhNTE4NmQyZWZmM2UyMzI2YzcyNDVmY2Q3ZTdmMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IENocmlzdG9waGVyIExhcnNvbiA8Y2hyaXNfbGFyc29uQG1lbnRvci5jb20+CiBEYXRlOiBUdWUsIDEzIERlYyAyMDE2IDE0OjIyOjMyIC0wNzAwCiBTdWJqZWN0OiBbUEFUQ0hdIEZpeCBYMzIgYnVpbGQgYnkgZGlzYWJsaW5nIGFzbQpAQCAtMTIsMTUgKzEyLDE2IEBACiAKIFVwc3RyZWFtLVN0YXR1czogUGVuZGluZwogU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KKwogLS0tCiAgY29uZmlndXJlIHwgMTQgKysrKysrKysrKysrLS0KICAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKIAogZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZSBiL2NvbmZpZ3VyZQotaW5kZXggMzEwOWVjNC4uODQ0YWVhZSAxMDA3NTUKK2luZGV4IDUxYjEyOGQuLjZlYTk0NjkgMTAwNzU1CiAtLS0gYS9jb25maWd1cmUKICsrKyBiL2NvbmZpZ3VyZQotQEAgLTcwMyw3ICs3MDMsMTMgQEAgY2FzZSAkaG9zdF9jcHUgaW4KK0BAIC03NTQsNyArNzU0LDEzIEBAIGNhc2UgJGhvc3RfY3B1IGluCiAgICAgICAgICBBU19FWFQ9Ii5hc20iCiAgICAgICAgICBBU0ZMQUdTPSIkQVNGTEFHUyAtREFSQ0hfWDg2XzY0PTEgLUlcJChTUkNQQVRIKS9jb21tb24veDg2LyIKICAgICAgICAgIHN0YWNrX2FsaWdubWVudD0xNgpAQCAtMzMsOSArMzQsOSBAQAogKyAgICAgICAgICAgIGZpCiArICAgICAgICBmaQogICAgICAgICAgaWYgWyAiJFNZUyIgPSBNQUNPU1ggXTsgdGhlbgotICAgICAgICAgICAgIEFTRkxBR1M9IiRBU0ZMQUdTIC1mIG1hY2hvNjQgLURQSUMgLURQUkVGSVgiCisgICAgICAgICAgICAgQVNGTEFHUz0iJEFTRkxBR1MgLWYgbWFjaG82NCAtRFBSRUZJWCIKICAgICAgICAgICAgICBpZiBjY19jaGVjayAnJyAiLWFyY2ggeDg2XzY0IjsgdGhlbgotQEAgLTcyMiw3ICs3MjgsMTEgQEAgY2FzZSAkaG9zdF9jcHUgaW4KK0BAIC03NzMsNyArNzc5LDExIEBAIGNhc2UgJGhvc3RfY3B1IGluCiAgICAgICAgICAgICAgICAgIFJDRkxBR1M9Ii0tdGFyZ2V0PXBlLXg4Ni02NCAkUkNGTEFHUyIKICAgICAgICAgICAgICBmaQogICAgICAgICAgZWxzZQpAQCAtNDgsNiArNDksMyBAQAogICAgICAgICAgZmkKICAgICAgICAgIDs7CiAgICAgIHBvd2VycGMqKQotLS0gCi0yLjguMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NF9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1tdWx0aW1lZGlhL3gyNjQveDI2NF9naXQuYmIKaW5kZXggZjIyOTMwYS4uMzk0MjlhOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtbXVsdGltZWRpYS94MjY0L3gyNjRfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLW11bHRpbWVkaWEveDI2NC94MjY0X2dpdC5iYgpAQCAtMTQsOSArMTQsOSBAQAogICAgICAgICAgICAiCiBVUFNUUkVBTV9DSEVDS19DT01NSVRTID0gIjEiCiAKLVNSQ1JFViA9ICI3MmRiNDM3NzcwZmQxY2UzOTYxZjYyNGRkNTdhOGU3NWZmNjVhZTBiIgorU1JDUkVWID0gIjE3NzFiNTU2ZWU0NTIwN2Y4NzExNzQ0Y2NiZDVkNDJhMzk0OWIxNGMiCiAKLVBWID0gInIyOTE3K2dpdCR7U1JDUFZ9IgorUFYgPSAicjI5OTErZ2l0JHtTUkNQVn0iCiAKIFMgPSAiJHtXT1JLRElSfS9naXQiCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL2ZpbGVzL3J0X2JtYXJrLnB5IGIvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvZmlsZXMvcnRfYm1hcmsucHkKaW5kZXggNTdiMzliNS4uM2I4NDQ0NyAxMDA3NTUKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvZmlsZXMvcnRfYm1hcmsucHkKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvZmlsZXMvcnRfYm1hcmsucHkKQEAgLTE2NiwxMiArMTY2LDEyIEBACiAgICAgICAgIGxvZygiICBDb21tYW5kOiAnIiwgc3RyZXNzX2NtZF9zdHIsICInIikKICAgICAgICAgbG9nKCkKIAotICAgICAgICAjIHByZWV4ZWNfZm49b3Muc2V0c2lkIGNhdXNlcyBzdHJlc3MgdG8gYmUgZXhlY3V0ZWQgaW4gYSBzZXBhcmF0ZQorICAgICAgICAjIHN0YXJ0X25ld19zZXNzaW9uIGNhdXNlcyBzdHJlc3MgdG8gYmUgZXhlY3V0ZWQgaW4gYSBzZXBhcmF0ZQogICAgICAgICAjIHNlc3Npb24sID0+IGl0IGdldHMgYSBuZXcgcHJvY2VzcyBncm91cCAoaW5jbC4gY2hpbGRyZW4pLiBJdAogICAgICAgICAjIGNhbiB0aGVuIGJlIHRlcm1pbmF0ZWQgdXNpbmcgb3Mua2lsbHBnIGluIGVuZF9zdHJlc3Mgd2l0aG91dAogICAgICAgICAjIHRlcm1pbmF0aW5nIHRoaXMgc2NyaXB0LgogCi0gICAgICAgIHAgPSBzdWJwcm9jZXNzLlBvcGVuKHN0cmVzc19jbWQsIHByZWV4ZWNfZm49b3Muc2V0c2lkKQorICAgICAgICBwID0gc3VicHJvY2Vzcy5Qb3BlbihzdHJlc3NfY21kLCBzdGFydF9uZXdfc2Vzc2lvbj1UcnVlKQogCiAgICAgICAgIHJldHVybiBwCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzLTEuMS8wMDAxLWd6aXAtd2l0aC1uLWZvci1idWlsZC1yZXByb2R1Y2liaWx0eS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzLTEuMS8wMDAxLWd6aXAtd2l0aC1uLWZvci1idWlsZC1yZXByb2R1Y2liaWx0eS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4zYmFmYmJlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHMtMS4xLzAwMDEtZ3ppcC13aXRoLW4tZm9yLWJ1aWxkLXJlcHJvZHVjaWJpbHR5LnBhdGNoCkBAIC0wLDAgKzEsNjIgQEAKK0Zyb20gYWFiZjUxOGUyZTYxYTg4MmI5MjVmOWQyYWM1M2RhZmE3YTA0MWEwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorRGF0ZTogVHVlLCAyNSBGZWIgMjAyMCAyMjo1ODo1OSArMDAwMAorU3ViamVjdDogW1BBVENIXSBnemlwIHdpdGggLW4gZm9yIGJ1aWxkIHJlcHJvZHVjaWJpbHR5CisKK1RoZSBkYXRlIGNhbiBnZXQgZW5jb2RlZCBpbiB0aGUgaGVhZGVyIG9mIHRoZSBneiBmaWxlLCB3aGljaAorY2F1c2VzIHRoZSBiaW5hcnkgZmlsZXMgYmV0d2VlbiB0d28gZGlmZmVyZW50IGJ1aWxkcyBvZiB0aGUKK3NhbWUgZGF0YSB0byBiZSBkaWZmZXJlbnQuIEFkZCAtbiBmb3IgcmVwcm9kdWNpYmlsdHkKKworU2lnbmVkLW9mZi1ieTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFttYWlsaW5nbGlzdF0KKworLS0tCisgTWFrZWZpbGUgfCAyNCArKysrKysrKysrKystLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTIgaW5zZXJ0aW9ucygrKSwgMTIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCBhNTRkODJiLi5lOWYwZDVhIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtMTY4LDE3ICsxNjgsMTcgQEAgaW5zdGFsbDogYWxsIGluc3RhbGxfaHdsYXRkZXRlY3QKKyAJY3AgJChUQVJHRVRTKSAiJChERVNURElSKSQoYmluZGlyKSIKKyAJaW5zdGFsbCAtRCAtbSA2NDQgc3JjL2JhY2tmaXJlL2JhY2tmaXJlLmMgIiQoREVTVERJUikkKHNyY2RpcikvYmFja2ZpcmUvYmFja2ZpcmUuYyIKKyAJaW5zdGFsbCAtbSA2NDQgc3JjL2JhY2tmaXJlL01ha2VmaWxlICIkKERFU1RESVIpJChzcmNkaXIpL2JhY2tmaXJlL01ha2VmaWxlIgorLQlnemlwIC1jIHNyYy9iYWNrZmlyZS9iYWNrZmlyZS40ID4iJChERVNURElSKSQobWFuZGlyKS9tYW40L2JhY2tmaXJlLjQuZ3oiCistCWd6aXAgLWMgc3JjL2N5Y2xpY3Rlc3QvY3ljbGljdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L2N5Y2xpY3Rlc3QuOC5neiIKKy0JZ3ppcCAtYyBzcmMvcGlfdGVzdHMvcGlfc3RyZXNzLjggPiIkKERFU1RESVIpJChtYW5kaXIpL21hbjgvcGlfc3RyZXNzLjguZ3oiCistCWd6aXAgLWMgc3JjL3B0c2VtYXRlc3QvcHRzZW1hdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3B0c2VtYXRlc3QuOC5neiIKKy0JZ3ppcCAtYyBzcmMvcnQtbWlncmF0ZS10ZXN0L3J0LW1pZ3JhdGUtdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3J0LW1pZ3JhdGUtdGVzdC44Lmd6IgorLQlnemlwIC1jIHNyYy9zaWd3YWl0dGVzdC9zaWd3YWl0dGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3NpZ3dhaXR0ZXN0LjguZ3oiCistCWd6aXAgLWMgc3JjL3N2c2VtYXRlc3Qvc3ZzZW1hdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3N2c2VtYXRlc3QuOC5neiIKKy0JZ3ppcCAtYyBzcmMvcG1xdGVzdC9wbXF0ZXN0LjggPiIkKERFU1RESVIpJChtYW5kaXIpL21hbjgvcG1xdGVzdC44Lmd6IgorLQlnemlwIC1jIHNyYy9iYWNrZmlyZS9zZW5kbWUuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9zZW5kbWUuOC5neiIKKy0JZ3ppcCAtYyBzcmMvaGFja2JlbmNoL2hhY2tiZW5jaC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L2hhY2tiZW5jaC44Lmd6IgorLQlnemlwIC1jIHNyYy9zaWduYWx0ZXN0L3NpZ25hbHRlc3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9zaWduYWx0ZXN0LjguZ3oiCisrCWd6aXAgLW5jIHNyYy9iYWNrZmlyZS9iYWNrZmlyZS40ID4iJChERVNURElSKSQobWFuZGlyKS9tYW40L2JhY2tmaXJlLjQuZ3oiCisrCWd6aXAgLW5jIHNyYy9jeWNsaWN0ZXN0L2N5Y2xpY3Rlc3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9jeWNsaWN0ZXN0LjguZ3oiCisrCWd6aXAgLW5jIHNyYy9waV90ZXN0cy9waV9zdHJlc3MuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9waV9zdHJlc3MuOC5neiIKKysJZ3ppcCAtbmMgc3JjL3B0c2VtYXRlc3QvcHRzZW1hdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3B0c2VtYXRlc3QuOC5neiIKKysJZ3ppcCAtbmMgc3JjL3J0LW1pZ3JhdGUtdGVzdC9ydC1taWdyYXRlLXRlc3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9ydC1taWdyYXRlLXRlc3QuOC5neiIKKysJZ3ppcCAtbmMgc3JjL3NpZ3dhaXR0ZXN0L3NpZ3dhaXR0ZXN0LjggPiIkKERFU1RESVIpJChtYW5kaXIpL21hbjgvc2lnd2FpdHRlc3QuOC5neiIKKysJZ3ppcCAtbmMgc3JjL3N2c2VtYXRlc3Qvc3ZzZW1hdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3N2c2VtYXRlc3QuOC5neiIKKysJZ3ppcCAtbmMgc3JjL3BtcXRlc3QvcG1xdGVzdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3BtcXRlc3QuOC5neiIKKysJZ3ppcCAtbmMgc3JjL2JhY2tmaXJlL3NlbmRtZS44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L3NlbmRtZS44Lmd6IgorKwlnemlwIC1uYyBzcmMvaGFja2JlbmNoL2hhY2tiZW5jaC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L2hhY2tiZW5jaC44Lmd6IgorKwlnemlwIC1uYyBzcmMvc2lnbmFsdGVzdC9zaWduYWx0ZXN0LjggPiIkKERFU1RESVIpJChtYW5kaXIpL21hbjgvc2lnbmFsdGVzdC44Lmd6IgorIAorIC5QSE9OWTogaW5zdGFsbF9od2xhdGRldGVjdAorIGluc3RhbGxfaHdsYXRkZXRlY3Q6IGh3bGF0ZGV0ZWN0CitAQCAtMTg3LDcgKzE4Nyw3IEBAIGluc3RhbGxfaHdsYXRkZXRlY3Q6IGh3bGF0ZGV0ZWN0CisgCQlpbnN0YWxsIC1EIC1tIDc1NSBzcmMvaHdsYXRkZXRlY3QvaHdsYXRkZXRlY3QucHkgJChERVNURElSKSQoUFlMSUIpL2h3bGF0ZGV0ZWN0LnB5IDsgXAorIAkJcm0gLWYgIiQoREVTVERJUikkKGJpbmRpcikvaHdsYXRkZXRlY3QiIDsgXAorIAkJbG4gLXMgJChQWUxJQikvaHdsYXRkZXRlY3QucHkgIiQoREVTVERJUikkKGJpbmRpcikvaHdsYXRkZXRlY3QiIDsgXAorLQkJZ3ppcCAtYyBzcmMvaHdsYXRkZXRlY3QvaHdsYXRkZXRlY3QuOCA+IiQoREVTVERJUikkKG1hbmRpcikvbWFuOC9od2xhdGRldGVjdC44Lmd6IiA7IFwKKysJCWd6aXAgLW5jIHNyYy9od2xhdGRldGVjdC9od2xhdGRldGVjdC44ID4iJChERVNURElSKSQobWFuZGlyKS9tYW44L2h3bGF0ZGV0ZWN0LjguZ3oiIDsgXAorIAlmaQorIAorIC5QSE9OWTogdGFyYmFsbAorLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHMuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHMuaW5jCmluZGV4IDIyN2ViOTkuLjNhYzM5ZDkgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0cy5pbmMKQEAgLTQsNyArNCw3IEBACiAKIFNSQ19VUkkgPSAiZ2l0Oi8vZ2l0Lmtlcm5lbC5vcmcvcHViL3NjbS91dGlscy9ydC10ZXN0cy9ydC10ZXN0cy5naXQiCiAjIDEuMiB0byAxLjUgc2VlbSB0byBiZSBkZXZlbG9wbWVudCB2ZXJzaW9ucwotVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPig/ITFcLlsyLTVdKShcZCsoXC5cZCspKykpIgorVVBTVFJFQU1fQ0hFQ0tfR0lUVEFHUkVHRVggPSAidig/UDxwdmVyPig/ITFcLlsyLTZdKShcZCsoXC5cZCspKykpIgogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0c18xLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1ydC9ydC10ZXN0cy9ydC10ZXN0c18xLjEuYmIKaW5kZXggNWFhMGFhMS4uZGFkMjUyYiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtcnQvcnQtdGVzdHMvcnQtdGVzdHNfMS4xLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXJ0L3J0LXRlc3RzL3J0LXRlc3RzXzEuMS5iYgpAQCAtMTMsNiArMTMsNyBAQAogU1JDX1VSSSArPSAiIFwKICAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAogICAgICAgICAgICAgZmlsZTovL3J0X2JtYXJrLnB5IFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWd6aXAtd2l0aC1uLWZvci1idWlsZC1yZXByb2R1Y2liaWx0eS5wYXRjaCBcCiAgICAgICAgICAgICIKIAogIyBydC10ZXN0cyBuZWVkcyBQSSBtdXRleCBzdXBwb3J0IGluIGxpYmMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by1wdGVzdC1mYXN0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLXB0ZXN0LWZhc3QuYmIKaW5kZXggYjc5NGE3ZC4uMzY0MTIxNyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLXB0ZXN0LWZhc3QuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLXB0ZXN0LWZhc3QuYmIKQEAgLTE0LDMgKzE0LDYgQEAKIAogIyBwdGVzdHMgbmVlZCBtb3JlIG1lbW9yeSB0aGFuIHN0YW5kYXJkIHRvIGF2b2lkIHRoZSBPT00ga2lsbGVyCiBRQl9NRU0gPSAiLW0gMTAyNCIKKworIyBTYWRseSBhdCB0aGUgbW9tZW50IHRoZSBmYXN0IHNldCBvZiBwdGVzdHMgaXMgbm90IHJvYnVzdCBlbm91Z2ggYW5kIHNwb3JhZGljYWxseSBmYWlscyBpbiBhIGNvdXBsZSBvZiBwbGFjZXMKK1BURVNUX0VYUEVDVF9GQUlMVVJFID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8tc2RrLXB0ZXN0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9pbWFnZXMvY29yZS1pbWFnZS1zYXRvLXNkay1wdGVzdC5iYgppbmRleCBmZjI5N2ZlLi5iZjc0OWFjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2ltYWdlcy9jb3JlLWltYWdlLXNhdG8tc2RrLXB0ZXN0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vaW1hZ2VzL2NvcmUtaW1hZ2Utc2F0by1zZGstcHRlc3QuYmIKQEAgLTMsOCArMyw2IEBACiAKIERFU0NSSVBUSU9OICs9ICJBbHNvIGluY2x1ZGVzIHB0ZXN0IHBhY2thZ2VzLiIKIAotSU1BR0VfRkVBVFVSRVMgKz0gInB0ZXN0LXBrZ3MiCi0KIFBST1ZJREVTICs9ICJjb3JlLWltYWdlLXNhdG8tcHRlc3QiCiAKICMgQWxzbyBpbmNsdWRlIHB0ZXN0cyB3aGljaCBtYXkgbm90IG90aGVyd2lzZSBiZSBpbmNsdWRlZCBpbiBhIHNhdG8gaW1hZ2UKQEAgLTE4LDQgKzE2LDggQEAKIElNQUdFX1JPT1RGU19FWFRSQV9TUEFDRSA9ICIxMTI0Mjg4IgogCiAjIHB0ZXN0cyBuZWVkIG1vcmUgbWVtb3J5IHRoYW4gc3RhbmRhcmQgdG8gYXZvaWQgdGhlIE9PTSBraWxsZXIKLVFCX01FTSA9ICItbSAxMDI0IgorIyBhbHNvIGx0dG5nLXRvb2xzIG5lZWRzIC90bXAgdGhhdCBoYXMgYXQgbGVhc3QgMUcKK1FCX01FTSA9ICItbSAyMDQ4IgorCisjIFNhZGx5IGF0IHRoZSBtb21lbnQgdGhlIGZ1bGwgc2V0IG9mIHB0ZXN0cyBpcyBub3Qgcm9idXN0IGVub3VnaCBhbmQgc3BvcmFkaWNhbGx5IGZhaWxzIGluIHJhbmRvbSBwbGFjZXMKK1BURVNUX0VYUEVDVF9GQUlMVVJFID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2wzYWZwYWQvbDNhZnBhZF9naXQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL2wzYWZwYWQvbDNhZnBhZF9naXQuYmIKaW5kZXggODkwNmM3NC4uNmZkY2MzZSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9sM2FmcGFkL2wzYWZwYWRfZ2l0LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vbDNhZnBhZC9sM2FmcGFkX2dpdC5iYgpAQCAtMTcsNyArMTcsNyBAQAogCiBTID0gIiR7V09SS0RJUn0vZ2l0IgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjayBtaW1lLXhkZwogCiBBTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wY21hbmZtL3BjbWFuZm1fMS4zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjMuMS5iYgppbmRleCBjODhlMWVkLi43ODg1ZTBhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjMuMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3BjbWFuZm0vcGNtYW5mbV8xLjMuMS5iYgpAQCAtMjEsNyArMjEsNyBAQAogCiBVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3NvdXJjZWZvcmdlLm5ldC9wcm9qZWN0cy9wY21hbmZtL2ZpbGVzL1BDTWFuRk0lMjAlMkIlMjBMaWJmbSUyMCUyOHRhcmJhbGwlMjByZWxlYXNlJTI5L1BDTWFuRk0vIgogCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgZmVhdHVyZXNfY2hlY2sKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBmZWF0dXJlc19jaGVjayBtaW1lLXhkZwogCiAjIFRoZSBzdGFydHVwLW5vdGlmaWNhdGlvbiByZXF1aXJlcyB4MTEgaW4gRElTVFJPX0ZFQVRVUkVTCiBSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtVXNlLWxhYnMtaW5zdGVhZC1vZi1hYnMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1Vc2UtbGFicy1pbnN0ZWFkLW9mLWFicy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjQzZDFkZi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1Vc2UtbGFicy1pbnN0ZWFkLW9mLWFicy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDQ2ICswLDAgQEAKLUZyb20gOTgwOGRjMDllMDg5MzdjOWJmZmQ4NThkM2RlZDQyODIyNWE0MzEyYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci1EYXRlOiBNb24sIDcgU2VwIDIwMTUgMDk6MDI6MzggKzAwMDAKLVN1YmplY3Q6IFtQQVRDSF0gVXNlIGxhYnMgaW5zdGVhZCBvZiBhYnMKLQotY2x1ZXZhbHMgaXMgYXJyYXkgb2YgbG9uZ3Mgc28gd2UgaGF2ZSB0byB1c2UgbGFicygpIGluc3RlYWQgb2YgYWJzKCkKLXNpbmNlIGFicygpIHJldHVybnMgaW50Ci0KLUZpeGVzCi0KLWtlZW4uYzoxNDU4OjE3OiBlcnJvcjogYWJzb2x1dGUgdmFsdWUgZnVuY3Rpb24gJ2FicycgZ2l2ZW4gYW4gYXJndW1lbnQKLW9mIHR5cGUgJ2xvbmcnIGJ1dCBoYXMgcGFyYW1ldGVyIG9mIHR5cGUgJ2ludCcgd2hpY2ggbWF5IGNhdXNlCi10cnVuY2F0aW9uIG9mIHZhbHVlCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi0ga2Vlbi5jIHwgNCArKy0tCi0gMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2tlZW4uYyBiL2tlZW4uYwotaW5kZXggYTZhNzIzOC4uMTYzMTk5MiAxMDA2NDQKLS0tLSBhL2tlZW4uYwotKysrIGIva2Vlbi5jCi1AQCAtMTA0Myw3ICsxMDQzLDcgQEAgZG9uZQotIAkJICAgIGNsdWV2YWxzW2pdICo9IGdyaWRbaV07Ci0gCQkgICAgYnJlYWs7Ci0gCQkgIGNhc2UgQ19TVUI6Ci0tCQkgICAgY2x1ZXZhbHNbal0gPSBhYnMoY2x1ZXZhbHNbal0gLSBncmlkW2ldKTsKLSsJCSAgICBjbHVldmFsc1tqXSA9IGxhYnMoY2x1ZXZhbHNbal0gLSBncmlkW2ldKTsKLSAJCSAgICBicmVhazsKLSAJCSAgY2FzZSBDX0RJVjoKLSAJCSAgICB7Ci1AQCAtMTQ1NSw3ICsxNDU1LDcgQEAgc3RhdGljIGludCBjaGVja19lcnJvcnMoY29uc3QgZ2FtZV9zdGF0ZSAqc3RhdGUsIGxvbmcgKmVycm9ycykKLSAJCWNsdWV2YWxzW2pdICo9IHN0YXRlLT5ncmlkW2ldOwotIAkJYnJlYWs7Ci0gCSAgICAgIGNhc2UgQ19TVUI6Ci0tCQljbHVldmFsc1tqXSA9IGFicyhjbHVldmFsc1tqXSAtIHN0YXRlLT5ncmlkW2ldKTsKLSsJCWNsdWV2YWxzW2pdID0gbGFicyhjbHVldmFsc1tqXSAtIHN0YXRlLT5ncmlkW2ldKTsKLSAJCWJyZWFrOwotIAkgICAgICBjYXNlIENfRElWOgotIAkJewotLS0gCi0yLjUuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1wYWxpc2FkZS1GaXgtd2FybmluZ3Mtd2l0aC1jbGFuZy1vbi1hcm0ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1wYWxpc2FkZS1GaXgtd2FybmluZ3Mtd2l0aC1jbGFuZy1vbi1hcm0ucGF0Y2gKaW5kZXggNTM1MWY4ZS4uMTQzZTg5OCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtcGFsaXNhZGUtRml4LXdhcm5pbmdzLXdpdGgtY2xhbmctb24tYXJtLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy8wMDAxLXBhbGlzYWRlLUZpeC13YXJuaW5ncy13aXRoLWNsYW5nLW9uLWFybS5wYXRjaApAQCAtMSw3ICsxLDcgQEAKLUZyb20gNmQ4MzI2Mjc1ODAyYTJlNmU2MWQzZTk5NDYwYWY2ODkxYWU4MzYyZiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb20gNDUzNTg3ZDcxNDQ3M2I4MDY0NzNiMzA5NzI3Zjg2NWI2NzNjYmMwNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKIEZyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CiBEYXRlOiBXZWQsIDEzIEphbiAyMDE2IDIzOjEwOjE5IC0wODAwCi1TdWJqZWN0OiBbcHV6emxlc11bUEFUQ0hdIHBhbGlzYWRlOiBGaXggd2FybmluZ3Mgd2l0aCBjbGFuZyBvbiBhcm0KK1N1YmplY3Q6IFtQQVRDSF0gcGFsaXNhZGU6IEZpeCB3YXJuaW5ncyB3aXRoIGNsYW5nIG9uIGFybQogCiBBUk0gdHJlYXRzICdjaGFyJyBhcyB1bnNpZ25lZCBjaGFyIHdoZW4gJ2NoYXInIGlzIG5vdCBxdWFsaWZpZWQgd2l0aAogJ3NpZ25lZCcgb3IgJ3Vuc2lnbmVkJyBleHBsaWNpdGx5LgpAQCAtMTYsMTcgKzE2LDE2IEBACiBUaGVyZWZvcmUsIHR5cGNhc3QgdGhlIGNvbnRhbnQgdG8gY2hhciBpbiBzdWNoIHBsYWNlcyB0byBiZSBleHBsaWNpdAogCiBTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCiBVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZAotCistLS0KICBwYWxpc2FkZS5jIHwgMTAgKysrKystLS0tLQogIDEgZmlsZSBjaGFuZ2VkLCA1IGluc2VydGlvbnMoKyksIDUgZGVsZXRpb25zKC0pCiAKIGRpZmYgLS1naXQgYS9wYWxpc2FkZS5jIGIvcGFsaXNhZGUuYwotaW5kZXggOTg0ZTYxNi4uMmI5YzI1YyAxMDA2NDQKK2luZGV4IDZmZmJmMmQuLjhiNTRkNDIgMTAwNjQ0CiAtLS0gYS9wYWxpc2FkZS5jCiArKysgYi9wYWxpc2FkZS5jCi1AQCAtMjk1LDExICsyOTUsMTEgQEAgc3RhdGljIHZvaWQgc29sdmVyX2Nvbm5lY3RlZF9jbHVlc192ZXJzdXNfcmVnaW9uX3NpemUoc29sdmVyX2N0eCAqY3R4KQorQEAgLTMwNCwxMSArMzA0LDExIEBAIHN0YXRpYyB2b2lkIHNvbHZlcl9jb25uZWN0ZWRfY2x1ZXNfdmVyc3VzX3JlZ2lvbl9zaXplKHNvbHZlcl9jdHggKmN0eCkKICAgICAgICogSWYgcCA9IHEgPSAzIHRoZW4gdGhlIHJlZ2lvbiBoYXMgc2l6ZSBleGFjdGx5IDIuICovCiAgCiAgICAgIGZvciAoaSA9IDA7IGkgPCB3aDsgKytpKSB7CkBAIC00MCw4ICszOSw4IEBACiAgICAgICAgICAgICAgaWYgKCg4IC0gY3R4LT5jbHVlc1tpXSAtIGN0eC0+Y2x1ZXNbal0gPiBjdHgtPnBhcmFtcy0+aykgfHwKICAgICAgICAgICAgICAgICAgKGN0eC0+Y2x1ZXNbaV0gPT0gMyAmJiBjdHgtPmNsdWVzW2pdID09IDMgJiYKICAgICAgICAgICAgICAgICAgIGN0eC0+cGFyYW1zLT5rICE9IDIpKQotQEAgLTMxNyw3ICszMTcsNyBAQCBzdGF0aWMgaW50IHNvbHZlcl9udW1iZXJfZXhoYXVzdGVkKHNvbHZlcl9jdHggKmN0eCkKLSAgICAgaW50IGNoYW5nZWQgPSBGQUxTRTsKK0BAIC0zMjYsNyArMzI2LDcgQEAgc3RhdGljIGJvb2wgc29sdmVyX251bWJlcl9leGhhdXN0ZWQoc29sdmVyX2N0eCAqY3R4KQorICAgICBib29sIGNoYW5nZWQgPSBmYWxzZTsKICAKICAgICAgZm9yIChpID0gMDsgaSA8IHdoOyArK2kpIHsKIC0gICAgICAgIGlmIChjdHgtPmNsdWVzW2ldID09IEVNUFRZKSBjb250aW51ZTsKQEAgLTQ5LDE2ICs0OCwxNiBAQAogIAogICAgICAgICAgaWYgKGJpdGNvdW50WyhjdHgtPmJvcmRlcnNbaV0gJiBCT1JERVJfTUFTSyldID09IGN0eC0+Y2x1ZXNbaV0pIHsKICAgICAgICAgICAgICBmb3IgKGRpciA9IDA7IGRpciA8IDQ7ICsrZGlyKSB7Ci1AQCAtNTI4LDcgKzUyOCw3IEBAIHN0YXRpYyBpbnQgaXNfc29sdmVkKGNvbnN0IGdhbWVfcGFyYW1zICpwYXJhbXMsIGNsdWUgKmNsdWVzLAorQEAgLTUzOCw3ICs1MzgsNyBAQCBzdGF0aWMgYm9vbCBpc19zb2x2ZWQoY29uc3QgZ2FtZV9wYXJhbXMgKnBhcmFtcywgY2x1ZSAqY2x1ZXMsCiAgICAgIGZvciAoaSA9IDA7IGkgPCB3aDsgKytpKSB7Ci0gICAgICAgICBpZiAoZHNmW2ldID09IFVOVklTSVRFRCkgZGZzX2RzZihpLCBwYXJhbXMtPncsIGJvcmRlciwgZHNmLCBUUlVFKTsKKyAgICAgICAgIGlmIChkc2ZbaV0gPT0gVU5WSVNJVEVEKSBkZnNfZHNmKGksIHBhcmFtcy0+dywgYm9yZGVyLCBkc2YsIHRydWUpOwogICAgICAgICAgaWYgKGRzZl9zaXplKGRzZiwgaSkgIT0gaykgZ290byBlcnJvcjsKIC0gICAgICAgIGlmIChjbHVlc1tpXSA9PSBFTVBUWSkgY29udGludWU7CiArICAgICAgICBpZiAoY2x1ZXNbaV0gPT0gKGNoYXIpRU1QVFkpIGNvbnRpbnVlOwogICAgICAgICAgaWYgKGNsdWVzW2ldICE9IGJpdGNvdW50W2JvcmRlcltpXSAmIEJPUkRFUl9NQVNLXSkgZ290byBlcnJvcjsKICAgICAgfQogIAotQEAgLTY3NCw3ICs2NzQsNyBAQCBzdGF0aWMgY2hhciAqbmV3X2dhbWVfZGVzYyhjb25zdCBnYW1lX3BhcmFtcyAqcGFyYW1zLCByYW5kb21fc3RhdGUgKnJzLAorQEAgLTY4NSw3ICs2ODUsNyBAQCBzdGF0aWMgY2hhciAqbmV3X2dhbWVfZGVzYyhjb25zdCBnYW1lX3BhcmFtcyAqcGFyYW1zLCByYW5kb21fc3RhdGUgKnJzLAogICAgICBwID0gbnVtYmVyczsKICAgICAgciA9IDA7CiAgICAgIGZvciAoaSA9IDA7IGkgPCB3aDsgKytpKSB7CkBAIC02Nyw2ICs2NiwzIEBACiAgICAgICAgICAgICAgd2hpbGUgKHIpIHsKICAgICAgICAgICAgICAgICAgd2hpbGUgKHIgPiAyNikgewogICAgICAgICAgICAgICAgICAgICAgKnArKyA9ICd6JzsKLS0tIAotMi43LjAKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtcGF0dGVybi5jLUNoYW5nZS1zdHJpbmctbGVuZ2h0LXBhcmFtZXRlci10by1iZS1zaXplXy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy8wMDAxLXBhdHRlcm4uYy1DaGFuZ2Utc3RyaW5nLWxlbmdodC1wYXJhbWV0ZXItdG8tYmUtc2l6ZV8ucGF0Y2gKaW5kZXggOWFjNjIwMS4uN2NhNTgyZiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL2ZpbGVzLzAwMDEtcGF0dGVybi5jLUNoYW5nZS1zdHJpbmctbGVuZ2h0LXBhcmFtZXRlci10by1iZS1zaXplXy5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvMDAwMS1wYXR0ZXJuLmMtQ2hhbmdlLXN0cmluZy1sZW5naHQtcGFyYW1ldGVyLXRvLWJlLXNpemVfLnBhdGNoCkBAIC0xLDQgKzEsNCBAQAotRnJvbSAwMzU0NjdhYTBhYmZiYzBkZTdlNWQyNDU0M2Q0YWFiMzczMDE1OTNjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAzYWY1YTFlNTc5ZTMzMjRhMTNiYTFmODkyYzdiZWZiM2FiMzJkODk5IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KIERhdGU6IFRodSwgNyBNYXIgMjAxOSAyMTo1Njo1NyAtMDgwMAogU3ViamVjdDogW1BBVENIXSBwYXR0ZXJuLmM6IENoYW5nZSBzdHJpbmcgbGVuZ2h0IHBhcmFtZXRlciB0byBiZSBzaXplX3QgaW4KQEAgLTExLDIzICsxMSwyNCBAQAogVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCiAKIFNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKIC0tLQogIHBhdHRlcm4uYyB8IDIgKy0KICAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKIAogZGlmZiAtLWdpdCBhL3BhdHRlcm4uYyBiL3BhdHRlcm4uYwotaW5kZXggNDViMWIwYy4uZjczYTRjMiAxMDA2NDQKK2luZGV4IGZmYWRkM2YuLjRlNWYxODcgMTAwNjQ0CiAtLS0gYS9wYXR0ZXJuLmMKICsrKyBiL3BhdHRlcm4uYwotQEAgLTQyOCw3ICs0MjgsNyBAQCBzdGF0aWMgaW50IGRvX3Jvdyh1bnNpZ25lZCBjaGFyICprbm93biwgdW5zaWduZWQgY2hhciAqZGVkdWNlZCwKLSAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpyb3csCi0gICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqbWlucG9zX2RvbmUsIHVuc2lnbmVkIGNoYXIgKm1heHBvc19kb25lLAotIAkJICB1bnNpZ25lZCBjaGFyICptaW5wb3Nfb2ssIHVuc2lnbmVkIGNoYXIgKm1heHBvc19vaywKLS0gICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzdGFydCwgaW50IGxlbiwgaW50IHN0ZXAsIGludCAqZGF0YSwKLSsgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzdGFydCwgc2l6ZV90IGxlbiwgaW50IHN0ZXAsIGludCAqZGF0YSwKLSAJCSAgdW5zaWduZWQgaW50ICpjaGFuZ2VkCitAQCAtNDI4LDcgKzQyOCw3IEBAIHN0YXRpYyBib29sIGRvX3Jvdyh1bnNpZ25lZCBjaGFyICprbm93biwgdW5zaWduZWQgY2hhciAqZGVkdWNlZCwKKyAgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqcm93LAorICAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICptaW5wb3NfZG9uZSwgdW5zaWduZWQgY2hhciAqbWF4cG9zX2RvbmUsCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGNoYXIgKm1pbnBvc19vaywgdW5zaWduZWQgY2hhciAqbWF4cG9zX29rLAorLSAgICAgICAgICAgICAgICAgICB1bnNpZ25lZCBjaGFyICpzdGFydCwgaW50IGxlbiwgaW50IHN0ZXAsIGludCAqZGF0YSwKKysgICAgICAgICAgICAgICAgICAgdW5zaWduZWQgY2hhciAqc3RhcnQsIHNpemVfdCBsZW4sIGludCBzdGVwLCBpbnQgKmRhdGEsCisgICAgICAgICAgICAgICAgICAgIHVuc2lnbmVkIGludCAqY2hhbmdlZAogICNpZmRlZiBTVEFOREFMT05FX1NPTFZFUgotIAkJICAsIGNvbnN0IGNoYXIgKnJvd2NvbCwgaW50IGluZGV4LCBpbnQgY2x1ZXdpZAorICAgICAgICAgICAgICAgICAgICAsIGNvbnN0IGNoYXIgKnJvd2NvbCwgaW50IGluZGV4LCBpbnQgY2x1ZXdpZAogLS0gCi0yLjIxLjAKKzIuMTcuMQogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvZmlsZXMvZml4LWNvbXBpbGluZy1mYWlsdXJlLXdpdGgtb3B0aW9uLWctTy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy9maXgtY29tcGlsaW5nLWZhaWx1cmUtd2l0aC1vcHRpb24tZy1PLnBhdGNoCmluZGV4IGMxMzRhY2QuLjI4MDQwNTIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy9maXgtY29tcGlsaW5nLWZhaWx1cmUtd2l0aC1vcHRpb24tZy1PLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9maWxlcy9maXgtY29tcGlsaW5nLWZhaWx1cmUtd2l0aC1vcHRpb24tZy1PLnBhdGNoCkBAIC0xLDQgKzEsNyBAQAotZ3RrLmM6IGZpeCBjb21waWxpbmcgZmFpbHVyZSB3aXRoIG9wdGlvbiAtZyAtTworRnJvbSA4NzZjNmZmMWUyMGY1MWIwOTIxYWNkYTk5ODYxZjQ3NmI2NDIzZjI2IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorRGF0ZTogTW9uLCAxMSBBdWcgMjAxNCAxMjozOTo1MyArMDgwMAorU3ViamVjdDogW1BBVENIXSBndGsuYzogZml4IGNvbXBpbGluZyBmYWlsdXJlIHdpdGggb3B0aW9uIC1nIC1PCiAKIFRoZXJlIHdlcmUgY29tcGlsaW5nIGZhaWx1cmUgd2l0aCBvcHRpb24gLWcgLU8KIC4uLgpAQCAtMjEsMjMgKzI0LDIxIEBACiBVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKIAogU2lnbmVkLW9mZi1ieTogSG9uZ3h1IEppYSA8aG9uZ3h1LmppYUB3aW5kcml2ZXIuY29tPgorCiAtLS0KLSBndGsuYyB8IDQgKystLQotIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisgZ3RrLmMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCiAKIGRpZmYgLS1naXQgYS9ndGsuYyBiL2d0ay5jCi1pbmRleCBhMmViYTJjLi5jNTRiZjYzIDEwMDY0NAoraW5kZXggNDU2NTgzNi4uNWU4M2I0OCAxMDA2NDQKIC0tLSBhL2d0ay5jCiArKysgYi9ndGsuYwotQEAgLTI0ODEsNyArMjQ4MSw3IEBAIGNoYXIgKmZnZXRsaW5lKEZJTEUgKmZwKQorQEAgLTI5NDQsNyArMjk0NCw3IEBAIHN0YXRpYyB2b2lkIGxpc3RfcHJlc2V0c19mcm9tX21lbnUoc3RydWN0IHByZXNldF9tZW51ICptZW51KQogIGludCBtYWluKGludCBhcmdjLCBjaGFyICoqYXJndikKICB7CiAgICAgIGNoYXIgKnBuYW1lID0gYXJndlswXTsKIC0gICAgY2hhciAqZXJyb3I7CiArICAgIGNoYXIgKmVycm9yID0gTlVMTDsKLSAgICAgaW50IG5nZW5lcmF0ZSA9IDAsIHByaW50ID0gRkFMU0UsIHB4ID0gMSwgcHkgPSAxOwotICAgICBpbnQgdGltZV9nZW5lcmF0aW9uID0gRkFMU0UsIHRlc3Rfc29sdmUgPSBGQUxTRSwgbGlzdF9wcmVzZXRzID0gRkFMU0U7Ci0gICAgIGludCBzb2xuID0gRkFMU0UsIGNvbG91ciA9IEZBTFNFOwotLS0gCi0xLjkuMQotCisgICAgIGludCBuZ2VuZXJhdGUgPSAwLCBweCA9IDEsIHB5ID0gMTsKKyAgICAgYm9vbCBwcmludCA9IGZhbHNlOworICAgICBib29sIHRpbWVfZ2VuZXJhdGlvbiA9IGZhbHNlLCB0ZXN0X3NvbHZlID0gZmFsc2UsIGxpc3RfcHJlc2V0cyA9IGZhbHNlOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc2F0by9wdXp6bGVzL3B1enpsZXNfZ2l0LmJiCmluZGV4IDVlZTkxNjQuLjQxYjc4ZDYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vcHV6emxlcy9wdXp6bGVzX2dpdC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3B1enpsZXMvcHV6emxlc19naXQuYmIKQEAgLTEsNyArMSw3IEBACiBTVU1NQVJZID0gIlNpbW9uIFRhdGhhbSdzIFBvcnRhYmxlIFB1enpsZSBDb2xsZWN0aW9uIgogSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5jaGlhcmsuZ3JlZW5lbmQub3JnLnVrL35zZ3RhdGhhbS9wdXp6bGVzLyIKIExJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5DRTttZDU9ZGE2MTEwZDRlZDEyMjVhMjg3ZWFiMmJmMGFjMDE5M2IiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT02MDk5ZjQ5ODFmOTQ2MWQ3ZjQxMTA5MWU2OWE3ZjA3YSIKIAogREVQRU5EUyA9ICJsaWJ4dCIKIApAQCAtMTAsNyArMTAsNiBAQAogCiBTUkNfVVJJID0gImdpdDovL2dpdC50YXJ0YXJ1cy5vcmcvc2ltb24vcHV6emxlcy5naXQgXAogICAgICAgICAgICBmaWxlOi8vZml4LWNvbXBpbGluZy1mYWlsdXJlLXdpdGgtb3B0aW9uLWctTy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1sYWJzLWluc3RlYWQtb2YtYWJzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtcGFsaXNhZGUtRml4LXdhcm5pbmdzLXdpdGgtY2xhbmctb24tYXJtLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtVXNlLVduby1lcnJvci1mb3JtYXQtb3ZlcmZsb3ctaWYtdGhlLWNvbXBpbGVyLXN1cHBvci5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAxLXBhdHRlcm4uYy1DaGFuZ2Utc3RyaW5nLWxlbmdodC1wYXJhbWV0ZXItdG8tYmUtc2l6ZV8ucGF0Y2ggXApAQCAtMTgsNyArMTcsNyBAQAogICAgICAgICAgICAiCiAKIFVQU1RSRUFNX0NIRUNLX0NPTU1JVFMgPSAiMSIKLVNSQ1JFViA9ICJjNmUwMTYxZGQ0NzU0MTUzMTZlZDY2ZGM4Mjc5NGQ2OGU1MmYwMDI1IgorU1JDUkVWID0gIjc5YTUzNzhiNWFkYzQ2ZWUzM2JhMzRkNTU3MzhmOTE2ZmI4YWRmYzkiCiBQRSA9ICIyIgogUFYgPSAiMC4wK2dpdCR7U1JDUFZ9IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC9saWJ3cGVfMS40LjAuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L2xpYndwZV8xLjQuMC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjEyNDk5ZmYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC9saWJ3cGVfMS40LjAuMS5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIkdlbmVyYWwtcHVycG9zZSBsaWJyYXJ5IHNwZWNpZmljYWxseSBkZXZlbG9wZWQgZm9yIHRoZSBXUEUtZmxhdm9yZWQgcG9ydCBvZiBXZWJLaXQuIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL1dlYlBsYXRmb3JtRm9yRW1iZWRkZWQvbGlid3BlIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vV2ViUGxhdGZvcm1Gb3JFbWJlZGRlZC9saWJ3cGUvaXNzdWVzIgorCitMSUNFTlNFID0gIkJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTM3MWE2MTZlYjQ5MDNjNmNiNzllOTg5M2E1ZjYxNWNjIgorREVQRU5EUyA9ICJ2aXJ0dWFsL2VnbCBsaWJ4a2Jjb21tb24iCisKKyMgV29ya2Fyb3VuZCBidWlsZCBpc3N1ZSB3aXRoIFJQaSB1c2VybGFuZCBFR0wgbGlicmFyaWVzLgorQ0ZMQUdTX2FwcGVuZF9ycGkgPSAiICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdNQUNISU5FX0ZFQVRVUkVTJywgJ3ZjNGdyYXBoaWNzJywgJycsICctRF9HTlVfU09VUkNFJywgZCl9IgorCitpbmhlcml0IGNtYWtlIGZlYXR1cmVzX2NoZWNrCisKK1JFUVVJUkVEX0RJU1RST19GRUFUVVJFUyA9ICJvcGVuZ2wiCisKK1NSQ19VUkkgPSAiaHR0cHM6Ly93cGV3ZWJraXQub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMDk4NDlkZmIzNDg3NzM1NGYzNGYzMThlMTM4OTcxY2YyMmU2NzdiMjE3OWUxZjBhOGVhMDBhYjBiN2JkOGU5YiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0ay8wMDAxLUVuYWJsZS1USFJFQURTX1BSRUZFUl9QVEhSRUFEX0ZMQUcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1FbmFibGUtVEhSRUFEU19QUkVGRVJfUFRIUkVBRF9GTEFHLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ODExOGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGsvMDAwMS1FbmFibGUtVEhSRUFEU19QUkVGRVJfUFRIUkVBRF9GTEFHLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gOGVlNzgwNmFkMmQ1NjA2OTY3ZjdhMTUyOWExMTNmYjlkMWEzODZkZSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBNb24sIDMgRmViIDIwMjAgMTc6MDY6MjcgLTA4MDAKK1N1YmplY3Q6IFtQQVRDSF0gRW5hYmxlIFRIUkVBRFNfUFJFRkVSX1BUSFJFQURfRkxBRworCitGaXhlcyBidWlsZCBmYWlsdXJlcyBvbiByaXN2NjQKKworVGFrZW4gZnJvbSBodHRwczovL3RyYWMud2Via2l0Lm9yZy9jaGFuZ2VzZXQvMjMxODQzL3dlYmtpdAorCisgRW5hYmxlIFRIUkVBRFNfUFJFRkVSX1BUSFJFQURfRkxBRy4gVGhpcyB1c2VzIC1wdGhyZWFkIGluc3RlYWQgb2YKKy1scHRocmVhZCwgZml4aW5nIHRoZSA2NC1iaXQgUklTQy1WIGJ1aWxkIG9mIHRoZSBHVEsrIHBvcnQgZHVlIHRvCittaXNzaW5nIGF0b21pYyBwcmltaXRpdmVzLgorCitVcHN0cmVhbS1TdGF0dXM6IFN1Ym1pdHRlZCBbaHR0cHM6Ly90cmFjLndlYmtpdC5vcmcvY2hhbmdlc2V0LzIzMTg0My93ZWJraXRdCitTaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgorLS0tCisgU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UgICAgIHwgMiArKworIFNvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZSB8IDEgKworIDIgZmlsZXMgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZSBiL1NvdXJjZS9jbWFrZS9PcHRpb25zR1RLLmNtYWtlCitpbmRleCBkM2JlZWYxOS4uNmE5Mjg1NmYgMTAwNjQ0CistLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0dUSy5jbWFrZQorKysrIGIvU291cmNlL2NtYWtlL09wdGlvbnNHVEsuY21ha2UKK0BAIC0xNyw2ICsxNyw4IEBAIHNldChXRUJLSVRHVEtfSEVBREVSX0lOU1RBTExfRElSICIke0NNQUtFX0lOU1RBTExfSU5DTFVERURJUn0vd2Via2l0Z3RrLSR7V0VCS0lUCisgc2V0KElOVFJPU1BFQ1RJT05fSU5TVEFMTF9HSVJESVIgIiR7Q01BS0VfSU5TVEFMTF9GVUxMX0RBVEFESVJ9L2dpci0xLjAiKQorIHNldChJTlRST1NQRUNUSU9OX0lOU1RBTExfVFlQRUxJQkRJUiAiJHtMSUJfSU5TVEFMTF9ESVJ9L2dpcmVwb3NpdG9yeS0xLjAiKQorIAorK3NldChUSFJFQURTX1BSRUZFUl9QVEhSRUFEX0ZMQUcgT04pCisrCisgZmluZF9wYWNrYWdlKENhaXJvIDEuMTQuMCBSRVFVSVJFRCkKKyBmaW5kX3BhY2thZ2UoRm9udGNvbmZpZyAyLjguMCBSRVFVSVJFRCkKKyBmaW5kX3BhY2thZ2UoRnJlZXR5cGUgMi40LjIgUkVRVUlSRUQpCitkaWZmIC0tZ2l0IGEvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlIGIvU291cmNlL2NtYWtlL09wdGlvbnNKU0NPbmx5LmNtYWtlCitpbmRleCBiMmU4NzQxOC4uMzI2YWRlMjMgMTAwNjQ0CistLS0gYS9Tb3VyY2UvY21ha2UvT3B0aW9uc0pTQ09ubHkuY21ha2UKKysrKyBiL1NvdXJjZS9jbWFrZS9PcHRpb25zSlNDT25seS5jbWFrZQorQEAgLTEsMyArMSw0IEBACisrc2V0KFRIUkVBRFNfUFJFRkVSX1BUSFJFQURfRkxBRyBPTikKKyBmaW5kX3BhY2thZ2UoVGhyZWFkcyBSRVFVSVJFRCkKKyAKKyBpZiAoTVNWQykKKy0tIAorMi4yNS4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjI2LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4yNi4yLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMTM5ZjAxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjI2LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwxMjUgKzAsMCBAQAotU1VNTUFSWSA9ICJXZWJLaXQgd2ViIHJlbmRlcmluZyBlbmdpbmUgZm9yIHRoZSBHVEsrIHBsYXRmb3JtIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy53ZWJraXRndGsub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2J1Z3Mud2Via2l0Lm9yZy8iCi0KLUxJQ0VOU0UgPSAiQlNEICYgTEdQTHYyKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DT1BZSU5HLkxJQjttZDU9ZDBjNmQ2Mzk3YTVkODQyODZkZGE3NThkYTU3YmQ2OTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vU291cmNlL1dlYkNvcmUvTElDRU5TRS1BUFBMRTttZDU9NDY0NmY5MDA4MmM0MGJjZjI5OGMyODVmOGJhYjBiMTIgXAotCQkgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtTEdQTC0yO21kNT0zNjM1N2ZmZGUyYjY0YWUxNzdiMjQ5NDQ0NWI3OWQyMSBcCi0JCSAgICBmaWxlOi8vU291cmNlL1dlYkNvcmUvTElDRU5TRS1MR1BMLTIuMTttZDU9YTc3OGEzM2VmMzM4YWJiYWY4YjhhN2MzNmI2ZWVjODAgXAotCQkgICAiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy53ZWJraXRndGsub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaW5kR09iamVjdEludHJvc3BlY3Rpb24uY21ha2UtcHJlZml4LXZhcmlhYmxlcy1vYnRhLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtV2hlbi1idWlsZGluZy1pbnRyb3NwZWN0aW9uLWZpbGVzLWFkZC1DTUFLRV9DX0ZMQUdTLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLU9wdGlvbnNHVEsuY21ha2UtZHJvcC10aGUtaGFyZGNvZGVkLWludHJvc3BlY3Rpb24tZ3QucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtcmFjeS1wYXJhbGxlbC1idWlsZC1vZi1XZWJLaXQyLTQuMC5naXIucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Ud2Vhay1ndGtkb2Mtc2V0dGluZ3Mtc28tdGhhdC1ndGtkb2MtZ2VuZXJhdGlvbi13b3JrLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3gzMl9zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2Nyb3NzLWNvbXBpbGUucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2luY2x1ZGVfYXJyYXkucGF0Y2ggXAotICAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2NWUwNmZlNzNlZTE2NjQ0Nzg5NGFhZWE5NTAzOGUzYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2YjgwZjA2MzdhODA4MTg1NTlhYzhmZDUwZGIzYjM5NGY0MWNiNjE5MDRmYjliM2VkNjVmYTUxNjM1ODA2NTEyIgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZyBnb2JqZWN0LWludHJvc3BlY3Rpb24gcGVybG5hdGl2ZSBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ3RrLWRvYwotCi1SRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAieDExIG9wZW5nbCIKLQotQ1ZFX1BST0RVQ1QgPSAid2Via2l0Z3RrIHdlYmtpdGd0a1wrIgotCi1ERVBFTkRTID0gInpsaWIgbGlic291cC0yLjQgY3VybCBsaWJ4bWwyIGNhaXJvIGxpYnhzbHQgbGlieHQgbGliaWRuIGxpYmdjcnlwdCBcCi0gICAgICAgICAgIGd0ayszIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGZsZXgtbmF0aXZlIGdwZXJmLW5hdGl2ZSBzcWxpdGUzIFwKLQkgICBwYW5nbyBpY3UgYmlzb24tbmF0aXZlIGdhd2sgaW50bHRvb2wtbmF0aXZlIGxpYndlYnAgXAotCSAgIGF0ayB1ZGV2IGhhcmZidXp6IGpwZWcgbGlicG5nIHB1bHNlYXVkaW8gbGlicnN2ZyBsaWJ0aGVvcmEgbGlidm9yYmlzIGxpYnhjb21wb3NpdGUgbGlieHRzdCBcCi0JICAgcnVieS1uYXRpdmUgbGlibm90aWZ5IGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCBcCi0JICAgZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnRhc24xIFwKLSAgICAgICAgICAiCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5jb250YWlucygnRElTVFJPX0ZFQVRVUkVTJywgJ3gxMScsICd4MTEnLCAnd2F5bGFuZCcgLGQpfSBcCi0gICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICdvcGVuZ2wnLCAnd2ViZ2wgb3BlbmdsJywgJycgLGQpfSBcCi0gICAgICAgICAgICAgICAgICAgZW5jaGFudCBcCi0gICAgICAgICAgICAgICAgICAgbGlic2VjcmV0IFwKLSAgICAgICAgICAgICAgICAgICIKLQotUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PTiwtREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PRkYsd2F5bGFuZCIKLVBBQ0tBR0VDT05GSUdbeDExXSA9ICItREVOQUJMRV9YMTFfVEFSR0VUPU9OLC1ERU5BQkxFX1gxMV9UQVJHRVQ9T0ZGLHZpcnR1YWwvbGlieDExIgotUEFDS0FHRUNPTkZJR1tnZW9jbHVlXSA9ICItREVOQUJMRV9HRU9MT0NBVElPTj1PTiwtREVOQUJMRV9HRU9MT0NBVElPTj1PRkYsZ2VvY2x1ZSIKLVBBQ0tBR0VDT05GSUdbZW5jaGFudF0gPSAiLURFTkFCTEVfU1BFTExDSEVDSz1PTiwtREVOQUJMRV9TUEVMTENIRUNLPU9GRixlbmNoYW50IgotUEFDS0FHRUNPTkZJR1tndGsyXSA9ICItREVOQUJMRV9QTFVHSU5fUFJPQ0VTU19HVEsyPU9OLC1ERU5BQkxFX1BMVUdJTl9QUk9DRVNTX0dUSzI9T0ZGLGd0aysiCi1QQUNLQUdFQ09ORklHW2dsZXMyXSA9ICItREVOQUJMRV9HTEVTMj1PTiwtREVOQUJMRV9HTEVTMj1PRkYsdmlydHVhbC9saWJnbGVzMiIKLVBBQ0tBR0VDT05GSUdbd2ViZ2xdID0gIi1ERU5BQkxFX1dFQkdMPU9OLC1ERU5BQkxFX1dFQkdMPU9GRix2aXJ0dWFsL2xpYmdsIgotUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi1ERU5BQkxFX09QRU5HTD1PTiwtREVOQUJMRV9PUEVOR0w9T0ZGLHZpcnR1YWwvbGliZ2wiCi1QQUNLQUdFQ09ORklHW2xpYnNlY3JldF0gPSAiLURVU0VfTElCU0VDUkVUPU9OLC1EVVNFX0xJQlNFQ1JFVD1PRkYsbGlic2VjcmV0IgotUEFDS0FHRUNPTkZJR1tsaWJoeXBoZW5dID0gIi1EVVNFX0xJQkhZUEhFTj1PTiwtRFVTRV9MSUJIWVBIRU49T0ZGLGxpYmh5cGhlbiIKLSMgU291cmNlIGlzIGF0IGh0dHBzOi8vZ2l0aHViLmNvbS9nb29nbGUvd29mZjIKLVBBQ0tBR0VDT05GSUdbd29mZjJdID0gIi1EVVNFX1dPRkYyPU9OLC1EVVNFX1dPRkYyPU9GRix3b2ZmMiIKLVBBQ0tBR0VDT05GSUdbb3BlbmpwZWddID0gIi1EVVNFX09QRU5KUEVHPU9OLC1EVVNFX09QRU5KUEVHPU9GRixvcGVuanBlZyIKLQotRVhUUkFfT0VDTUFLRSA9ICIgXAotCQktRFBPUlQ9R1RLIFwKLQkJLURDTUFLRV9CVUlMRF9UWVBFPVJlbGVhc2UgXAotCQkke0BiYi51dGlscy5jb250YWlucygnR0lfREFUQV9FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfSU5UUk9TUEVDVElPTj1PTicsICctREVOQUJMRV9JTlRST1NQRUNUSU9OPU9GRicsIGQpfSBcCi0JCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHVEtET0NfRU5BQkxFRCcsICdUcnVlJywgJy1ERU5BQkxFX0dUS0RPQz1PTicsICctREVOQUJMRV9HVEtET0M9T0ZGJywgZCl9IFwKLQkJLURFTkFCTEVfTUlOSUJST1dTRVI9T04gXAotICAgICAgICAgICAgICAgIC1EUFlUSE9OX0VYRUNVVEFCTEU9YHdoaWNoIHB5dGhvbjNgIFwKLSAgICAgICAgICAgICAgICAtREVOQUJMRV9CVUJCTEVXUkFQX1NBTkRCT1g9T0ZGIFwKLQkJIgotCi0jIEphdmFzY3JpcHQgSklUIGlzIG5vdCBzdXBwb3J0ZWQgb24gQVJDCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9hcmMgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotIyBCeSBkZWZhdWx0IDI1LWJpdCAibWVkaXVtIiBjYWxscyBhcmUgdXNlZCBvbiBBUkMKLSMgd2hpY2ggaXMgbm90IGVub3VnaCBmb3IgYmluYXJpZXMgbGFyZ2VyIHRoYW4gMzIgTWlCCi1DRkxBR1NfYXBwZW5kX2FyYyA9ICIgLW1sb25nLWNhbGxzIgotQ1hYRkxBR1NfYXBwZW5kX2FyYyA9ICIgLW1sb25nLWNhbGxzIgotCi0jIEphdmFzY3JpcHQgSklUIGlzIG5vdCBzdXBwb3J0ZWQgb24gcG93ZXJwYwotRVhUUkFfT0VDTUFLRV9hcHBlbmRfcG93ZXJwYyA9ICIgLURFTkFCTEVfSklUPU9GRiAiCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjNjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi0jIEFSTSBKSVQgY29kZSBkb2VzIG5vdCBidWlsZCBvbiBBUk12NC81LzYgYW55bW9yZQotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjUgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjYgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfYXJtdjQgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9taXBzYXJjaG4zMiA9ICIgLURVU0VfTERfR09MRD1PRkYgIgotRVhUUkFfT0VDTUFLRV9hcHBlbmRfcG93ZXJwYyA9ICIgLURVU0VfTERfR09MRD1PRkYgIgotCi0jIEpJVCBub3Qgc3VwcG9ydGVkIG9uIE1JUFMgZWl0aGVyCi1FWFRSQV9PRUNNQUtFX2FwcGVuZF9taXBzYXJjaCA9ICIgLURFTkFCTEVfSklUPU9GRiAtREVOQUJMRV9DX0xPT1A9T04gIgotCi0jIEpJVCBub3Qgc3VwcG9ydGVkIG9uIFgzMgotIyBBbiBhdHRlbXB0IHdhcyBtYWRlIHRvIHVwc3RyZWFtIEpJVCBzdXBwb3J0IGZvciB4MzIgaW4KLSMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEwMDQ1MCwgYnV0IHRoaXMgd2FzIGNsb3NlZCBhcwotIyB1bnJlc29sdmVkIGR1ZSB0byBsaW1pdGVkIFgzMiBhZG9wdGlvbi4KLUVYVFJBX09FQ01BS0VfYXBwZW5kX3g4Ni14MzIgPSAiIC1ERU5BQkxFX0pJVD1PRkYgIgotCi1TRUNVUklUWV9DRkxBR1NfcmVtb3ZlX2FhcmNoNjQgPSAiLWZwaWUiCi1TRUNVUklUWV9DRkxBR1NfYXBwZW5kX2FhcmNoNjQgPSAiIC1mUElFIgotCi1GSUxFU18ke1BOfSArPSAiJHtsaWJkaXJ9L3dlYmtpdDJndGstNC4wL2luamVjdGVkLWJ1bmRsZS9saWJ3ZWJraXQyZ3RraW5qZWN0ZWRidW5kbGUuc28iCi0KLVJSRUNPTU1FTkRTXyR7UE59ICs9ICJjYS1jZXJ0aWZpY2F0ZXMgc2hhcmVkLW1pbWUtaW5mbyIKLQotIyBodHRwOi8vZXJyb3JzLnlvY3RvcHJvamVjdC5vcmcvRXJyb3JzL0RldGFpbHMvMjAzNzAvCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY0ID0gImFybSIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjUgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NiA9ICJhcm0iCi0KLSMgaHR0cHM6Ly9idWd6aWxsYS55b2N0b3Byb2plY3Qub3JnL3Nob3dfYnVnLmNnaT9pZD05NDc0Ci0jIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNTk4ODAKLSMgSlNDIEpJVCBjYW4gYnVpbGQgb24gQVJNdjcgd2l0aCAtbWFybSwgYnV0IGRvZXNuJ3Qgd29yayBvbiBydW50aW1lLgotIyBVcHN0cmVhbSBvbmx5IHRlc3RzIHJlZ3VsYXJseSB0aGUgSlNDIEpJVCBvbiBBUk12NyB3aXRoIFRodW1iMiAoLW10aHVtYikuCi1BUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY3YSA9ICJ0aHVtYiIKLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjdyID0gInRodW1iIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12N3ZlID0gInRodW1iIgotCi0jIHFlbXU6IHVuY2F1Z2h0IHRhcmdldCBzaWduYWwgMTEgKFNlZ21lbnRhdGlvbiBmYXVsdCkgLSBjb3JlIGR1bXBlZAotIyBTZWdtZW50YXRpb24gZmF1bHQKLUdJX0RBVEFfRU5BQkxFRF9hcm12N2EgPSAiRmFsc2UiCi1HSV9EQVRBX0VOQUJMRURfYXJtdjd2ZSA9ICJGYWxzZSIKLQotIyBDYW4ndCBiZSBidWlsdCB3aXRoIGNjYWNoZQotQ0NBQ0hFX0RJU0FCTEUgPSAiMSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dlYmtpdGd0a18yLjI2LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4yNi40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU0MTk3ZDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93ZWJraXRndGtfMi4yNi40LmJiCkBAIC0wLDAgKzEsMTMzIEBACitTVU1NQVJZID0gIldlYktpdCB3ZWIgcmVuZGVyaW5nIGVuZ2luZSBmb3IgdGhlIEdUSysgcGxhdGZvcm0iCitIT01FUEFHRSA9ICJodHRwczovL3d3dy53ZWJraXRndGsub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvIgorCitMSUNFTlNFID0gIkJTRCAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ09QWUlORy5MSUI7bWQ1PWQwYzZkNjM5N2E1ZDg0Mjg2ZGRhNzU4ZGE1N2JkNjkxIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtQVBQTEU7bWQ1PTQ2NDZmOTAwODJjNDBiY2YyOThjMjg1ZjhiYWIwYjEyIFwKKwkJICAgIGZpbGU6Ly9Tb3VyY2UvV2ViQ29yZS9MSUNFTlNFLUxHUEwtMjttZDU9MzYzNTdmZmRlMmI2NGFlMTc3YjI0OTQ0NDViNzlkMjEgXAorCQkgICAgZmlsZTovL1NvdXJjZS9XZWJDb3JlL0xJQ0VOU0UtTEdQTC0yLjE7bWQ1PWE3NzhhMzNlZjMzOGFiYmFmOGI4YTdjMzZiNmVlYzgwIFwKKwkJICAgIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LndlYmtpdGd0ay5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpbmRHT2JqZWN0SW50cm9zcGVjdGlvbi5jbWFrZS1wcmVmaXgtdmFyaWFibGVzLW9idGEucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1XaGVuLWJ1aWxkaW5nLWludHJvc3BlY3Rpb24tZmlsZXMtYWRkLUNNQUtFX0NfRkxBR1MtLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtT3B0aW9uc0dUSy5jbWFrZS1kcm9wLXRoZS1oYXJkY29kZWQtaW50cm9zcGVjdGlvbi1ndC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeC1yYWN5LXBhcmFsbGVsLWJ1aWxkLW9mLVdlYktpdDItNC4wLmdpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLVR3ZWFrLWd0a2RvYy1zZXR0aW5ncy1zby10aGF0LWd0a2RvYy1nZW5lcmF0aW9uLXdvcmsucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1FbmFibGUtVEhSRUFEU19QUkVGRVJfUFRIUkVBRF9GTEFHLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL3gzMl9zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2Nyb3NzLWNvbXBpbGUucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2luY2x1ZGVfYXJyYXkucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNjBmODgxNzI5ZjNiNzEyNDRiN2Y2ZTU4NzkwMDczZTAiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNDM4NjkwMDcxM2RmYWRmOTc0MTE3NzIxMGIzMjYyM2NhYjIyNTYyYTc5ZmZkMGQ0NDZiNjY1Njk5MzRiMTEzZiIKKworaW5oZXJpdCBjbWFrZSBwa2djb25maWcgZ29iamVjdC1pbnRyb3NwZWN0aW9uIHBlcmxuYXRpdmUgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGd0ay1kb2MKKworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kJywgJ29wZW5nbCcsICcnLCBkKX0iCisKK0NWRV9QUk9EVUNUID0gIndlYmtpdGd0ayB3ZWJraXRndGtcKyIKKworREVQRU5EUyA9ICJ6bGliIGxpYnNvdXAtMi40IGN1cmwgbGlieG1sMiBjYWlybyBsaWJ4c2x0IGxpYmdjcnlwdCBcCisgICAgICAgICAgIGd0ayszIGdzdHJlYW1lcjEuMCBnc3RyZWFtZXIxLjAtcGx1Z2lucy1iYXNlIGZsZXgtbmF0aXZlIGdwZXJmLW5hdGl2ZSBzcWxpdGUzIFwKKwkgICBwYW5nbyBpY3UgYmlzb24tbmF0aXZlIGdhd2sgaW50bHRvb2wtbmF0aXZlIGxpYndlYnAgXAorCSAgIGF0ayB1ZGV2IGhhcmZidXp6IGpwZWcgbGlicG5nIGxpYnJzdmcgbGlidGhlb3JhIGxpYnZvcmJpcyBcCisJICAgcnVieS1uYXRpdmUgbGlibm90aWZ5IGdzdHJlYW1lcjEuMC1wbHVnaW5zLWJhZCBcCisJICAgZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGxpYnRhc24xIFwKKyAgICAgICAgICAiCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICd3YXlsYW5kIHgxMScsIGQpfSBcCisgICAgICAgICAgICAgICAgICAgJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEgb3BlbmdsJywgJ3dlYmdsIG9wZW5nbCcsICcnICxkKX0gXAorICAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJycsICd3ZWJnbCBnbGVzMicgLGQpfSBcCisgICAgICAgICAgICAgICAgICAgZW5jaGFudCBcCisgICAgICAgICAgICAgICAgICAgbGlic2VjcmV0IFwKKyAgICAgICAgICAgICAgICAgICIKKworUEFDS0FHRUNPTkZJR1t3YXlsYW5kXSA9ICItREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PTiwtREVOQUJMRV9XQVlMQU5EX1RBUkdFVD1PRkYsd2F5bGFuZCBsaWJ3cGUgd3BlYmFja2VuZC1mZG8gd2F5bGFuZC1uYXRpdmUiCitQQUNLQUdFQ09ORklHW3gxMV0gPSAiLURFTkFCTEVfWDExX1RBUkdFVD1PTiwtREVOQUJMRV9YMTFfVEFSR0VUPU9GRix2aXJ0dWFsL2xpYngxMSBsaWJ4Y29tcG9zaXRlIGxpYnhkYW1hZ2UgbGlieHJlbmRlciBsaWJ4dCIKK1BBQ0tBR0VDT05GSUdbZ2VvY2x1ZV0gPSAiLURFTkFCTEVfR0VPTE9DQVRJT049T04sLURFTkFCTEVfR0VPTE9DQVRJT049T0ZGLGdlb2NsdWUiCitQQUNLQUdFQ09ORklHW2VuY2hhbnRdID0gIi1ERU5BQkxFX1NQRUxMQ0hFQ0s9T04sLURFTkFCTEVfU1BFTExDSEVDSz1PRkYsZW5jaGFudDIiCitQQUNLQUdFQ09ORklHW2dsZXMyXSA9ICItREVOQUJMRV9HTEVTMj1PTiwtREVOQUJMRV9HTEVTMj1PRkYsdmlydHVhbC9saWJnbGVzMiIKK1BBQ0tBR0VDT05GSUdbd2ViZ2xdID0gIi1ERU5BQkxFX1dFQkdMPU9OLC1ERU5BQkxFX1dFQkdMPU9GRix2aXJ0dWFsL2xpYmdsIgorUEFDS0FHRUNPTkZJR1tvcGVuZ2xdID0gIi1ERU5BQkxFX09QRU5HTD1PTiwtREVOQUJMRV9PUEVOR0w9T0ZGLHZpcnR1YWwvbGliZ2wiCitQQUNLQUdFQ09ORklHW2xpYnNlY3JldF0gPSAiLURVU0VfTElCU0VDUkVUPU9OLC1EVVNFX0xJQlNFQ1JFVD1PRkYsbGlic2VjcmV0IgorUEFDS0FHRUNPTkZJR1tsaWJoeXBoZW5dID0gIi1EVVNFX0xJQkhZUEhFTj1PTiwtRFVTRV9MSUJIWVBIRU49T0ZGLGxpYmh5cGhlbiIKK1BBQ0tBR0VDT05GSUdbd29mZjJdID0gIi1EVVNFX1dPRkYyPU9OLC1EVVNFX1dPRkYyPU9GRix3b2ZmMiIKK1BBQ0tBR0VDT05GSUdbb3BlbmpwZWddID0gIi1EVVNFX09QRU5KUEVHPU9OLC1EVVNFX09QRU5KUEVHPU9GRixvcGVuanBlZyIKKworIyB3ZWJraXRndGsgaXMgZnVsbCBvZiAvdXNyL2Jpbi9lbnYgcHl0aG9uLCBwYXJ0aWN1bGFyIGZvciBnZW5lcmF0aW5nIGRvY3MKK2RvX2NvbmZpZ3VyZVtwb3N0ZnVuY3NdICs9ICJzZXR1cF9weXRob25fbGluayIKK3NldHVwX3B5dGhvbl9saW5rKCkgeworCWlmIFsgISAtZSAke1NUQUdJTkdfQklORElSX05BVElWRX0vcHl0aG9uIF07IHRoZW4KKwkJbG4gLXMgYHdoaWNoIHB5dGhvbjNgICR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfS9weXRob24KKwlmaQorfQorCitFWFRSQV9PRUNNQUtFID0gIiBcCisJCS1EUE9SVD1HVEsgXAorCQktRENNQUtFX0JVSUxEX1RZUEU9UmVsZWFzZSBcCisJCSR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHSV9EQVRBX0VOQUJMRUQnLCAnVHJ1ZScsICctREVOQUJMRV9JTlRST1NQRUNUSU9OPU9OJywgJy1ERU5BQkxFX0lOVFJPU1BFQ1RJT049T0ZGJywgZCl9IFwKKwkJJHtAYmIudXRpbHMuY29udGFpbnMoJ0dUS0RPQ19FTkFCTEVEJywgJ1RydWUnLCAnLURFTkFCTEVfR1RLRE9DPU9OJywgJy1ERU5BQkxFX0dUS0RPQz1PRkYnLCBkKX0gXAorCQktREVOQUJMRV9NSU5JQlJPV1NFUj1PTiBcCisgICAgICAgICAgICAgICAgLURQWVRIT05fRVhFQ1VUQUJMRT1gd2hpY2ggcHl0aG9uM2AgXAorICAgICAgICAgICAgICAgIC1ERU5BQkxFX0JVQkJMRVdSQVBfU0FOREJPWD1PRkYgXAorCQkiCisKKyMgSmF2YXNjcmlwdCBKSVQgaXMgbm90IHN1cHBvcnRlZCBvbiBBUkMKK0VYVFJBX09FQ01BS0VfYXBwZW5kX2FyYyA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisjIEJ5IGRlZmF1bHQgMjUtYml0ICJtZWRpdW0iIGNhbGxzIGFyZSB1c2VkIG9uIEFSQworIyB3aGljaCBpcyBub3QgZW5vdWdoIGZvciBiaW5hcmllcyBsYXJnZXIgdGhhbiAzMiBNaUIKK0NGTEFHU19hcHBlbmRfYXJjID0gIiAtbWxvbmctY2FsbHMiCitDWFhGTEFHU19hcHBlbmRfYXJjID0gIiAtbWxvbmctY2FsbHMiCisKKyMgSmF2YXNjcmlwdCBKSVQgaXMgbm90IHN1cHBvcnRlZCBvbiBwb3dlcnBjCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjID0gIiAtREVOQUJMRV9KSVQ9T0ZGICIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX3Bvd2VycGM2NCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisKKyMgQVJNIEpJVCBjb2RlIGRvZXMgbm90IGJ1aWxkIG9uIEFSTXY0LzUvNiBhbnltb3JlCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NSA9ICIgLURFTkFCTEVfSklUPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NiA9ICIgLURFTkFCTEVfSklUPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9hcm12NCA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisKK0VYVFJBX09FQ01BS0VfYXBwZW5kX21pcHNhcmNoID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCitFWFRSQV9PRUNNQUtFX2FwcGVuZF9wb3dlcnBjID0gIiAtRFVTRV9MRF9HT0xEPU9GRiAiCisKKyMgSklUIG5vdCBzdXBwb3J0ZWQgb24gTUlQUyBlaXRoZXIKK0VYVFJBX09FQ01BS0VfYXBwZW5kX21pcHNhcmNoID0gIiAtREVOQUJMRV9KSVQ9T0ZGIC1ERU5BQkxFX0NfTE9PUD1PTiAiCisKKyMgSklUIG5vdCBzdXBwb3J0ZWQgb24gWDMyCisjIEFuIGF0dGVtcHQgd2FzIG1hZGUgdG8gdXBzdHJlYW0gSklUIHN1cHBvcnQgZm9yIHgzMiBpbgorIyBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTAwNDUwLCBidXQgdGhpcyB3YXMgY2xvc2VkIGFzCisjIHVucmVzb2x2ZWQgZHVlIHRvIGxpbWl0ZWQgWDMyIGFkb3B0aW9uLgorRVhUUkFfT0VDTUFLRV9hcHBlbmRfeDg2LXgzMiA9ICIgLURFTkFCTEVfSklUPU9GRiAiCisKK1NFQ1VSSVRZX0NGTEFHU19yZW1vdmVfYWFyY2g2NCA9ICItZnBpZSIKK1NFQ1VSSVRZX0NGTEFHU19hcHBlbmRfYWFyY2g2NCA9ICIgLWZQSUUiCisKK0ZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vd2Via2l0Mmd0ay00LjAvaW5qZWN0ZWQtYnVuZGxlL2xpYndlYmtpdDJndGtpbmplY3RlZGJ1bmRsZS5zbyIKKworUlJFQ09NTUVORFNfJHtQTn0gKz0gImNhLWNlcnRpZmljYXRlcyBzaGFyZWQtbWltZS1pbmZvIgorCisjIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDM3MC8KK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY2ID0gImFybSIKKworIyBodHRwczovL2J1Z3ppbGxhLnlvY3RvcHJvamVjdC5vcmcvc2hvd19idWcuY2dpP2lkPTk0NzQKKyMgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE1OTg4MAorIyBKU0MgSklUIGNhbiBidWlsZCBvbiBBUk12NyB3aXRoIC1tYXJtLCBidXQgZG9lc24ndCB3b3JrIG9uIHJ1bnRpbWUuCisjIFVwc3RyZWFtIG9ubHkgdGVzdHMgcmVndWxhcmx5IHRoZSBKU0MgSklUIG9uIEFSTXY3IHdpdGggVGh1bWIyICgtbXRodW1iKS4KK0FSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjdhID0gInRodW1iIgorQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12N3IgPSAidGh1bWIiCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY3dmUgPSAidGh1bWIiCisKKyMgaW50cm9zcGVjdGlvbiBpbnNpZGUgcWVtdS1hcm0gaGFuZ3MgZm9yZXZlciBvbiBtdXNsL2FybSBidWlsZHMKKyMgdGhlcmVmb3JlIGRpc2FibGUgR0lfREFUQQorR0lfREFUQV9FTkFCTEVEX2xpYmMtbXVzbF9hcm12N2EgPSAiRmFsc2UiCitHSV9EQVRBX0VOQUJMRURfbGliYy1tdXNsX2FybXY3dmUgPSAiRmFsc2UiCisKKyMgQ2FuJ3QgYmUgYnVpbHQgd2l0aCBjY2FjaGUKK0NDQUNIRV9ESVNBQkxFID0gIjEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93cGViYWNrZW5kLWZkb18xLjQuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXNhdG8vd2Via2l0L3dwZWJhY2tlbmQtZmRvXzEuNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmNkMmY3ZmEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zYXRvL3dlYmtpdC93cGViYWNrZW5kLWZkb18xLjQuMS5iYgpAQCAtMCwwICsxLDE3IEBACitTVU1NQVJZID0gIldQRSdzIGJhY2tlbmQgYmFzZWQgb24gYSBmcmVlZGVza3RvcC5vcmcgc3RhY2suIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL0lnYWxpYS9XUEVCYWNrZW5kLWZkbyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9naXRodWIuY29tL0lnYWxpYS9XUEVCYWNrZW5kLWZkby9pc3N1ZXMiCisKK0xJQ0VOU0UgPSAiQlNEIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MWY2MmNlZjJlMzY0NWUzZTc0ZWIwNWZkMzg5ZDdhNjYiCitERVBFTkRTID0gImdsaWItMi4wIGxpYnhrYmNvbW1vbiB3YXlsYW5kIHZpcnR1YWwvZWdsIGxpYndwZSIKKworREVQRU5EU19hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiB3YXlsYW5kLW5hdGl2ZSIKKworaW5oZXJpdCBjbWFrZSBmZWF0dXJlc19jaGVjaworCitSRVFVSVJFRF9ESVNUUk9fRkVBVFVSRVMgPSAib3BlbmdsIgorCitTUkNfVVJJID0gImh0dHBzOi8vd3Bld2Via2l0Lm9yZy9yZWxlYXNlcy8ke0JQTn0tJHtQVn0udGFyLnh6IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjYyNDlhMGI3Y2JmYTY2MjIwNmE4ZDJmYTI0ZTJjNTc0ZTc1YzY4MWFkMGU5MzQ2ODA5MWYxZGM2OGRkYjI5OWQiCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci11dGlsXzEuNi4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS42LjEuYmIKaW5kZXggMWY5ZmVhMi4uMzg5NmM5MiAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS42LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLXV0aWxfMS42LjEuYmIKQEAgLTI4LDcgKzI4LDkgQEAKIAkJLS13aXRoLWV4cGF0PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0iCiAKIAotaW5oZXJpdCBhdXRvdG9vbHMgbGliX3BhY2thZ2UgYmluY29uZmlnCitpbmhlcml0IGF1dG90b29scyBsaWJfcGFja2FnZSBiaW5jb25maWcgbXVsdGlsaWJfc2NyaXB0CisKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn0tZGV2OiR7YmluZGlyfS9hcHUtMS1jb25maWciCiAKIE9FX0JJTkNPTkZJR19FWFRSQV9NQU5HTEUgPSAiIC1lICdzOmxvY2F0aW9uPXNvdXJjZTpsb2NhdGlvbj1pbnN0YWxsZWQ6JyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByLzAwMDEtQWRkLW9wdGlvbi10by1kaXNhYmxlLXRpbWVkLWRlcGVuZGFudC10ZXN0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAxLUFkZC1vcHRpb24tdG8tZGlzYWJsZS10aW1lZC1kZXBlbmRhbnQtdGVzdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYWJmZjRlOQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwci8wMDAxLUFkZC1vcHRpb24tdG8tZGlzYWJsZS10aW1lZC1kZXBlbmRhbnQtdGVzdHMucGF0Y2gKQEAgLTAsMCArMSw2OSBAQAorRnJvbSAyYmJlMjBiNGY2OWU4NGU3YTE4YmM3OWQzODI0ODY5NTNmNDc5MzI4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSmVyZW15IFB1aGxtYW4gPGpwdWhsbWFuQG12aXN0YS5jb20+CitEYXRlOiBUaHUsIDI2IE1hciAyMDIwIDE4OjMwOjM2ICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIEFkZCBvcHRpb24gdG8gZGlzYWJsZSB0aW1lZCBkZXBlbmRhbnQgdGVzdHMKKworVGhlIGRpc2FibGVkIHRlc3RzIHJlbHkgb24gdGltaW5nIHRvIHBhc3MgY29ycmVjdGx5LiBPbiBhIHZpcnR1YWxpemVkIAorc3lzdGVtIHVuZGVyIGhlYXZ5IGxvYWQsIHRoZXNlIHRlc3RzIHJhbmRvbWx5IGZhaWwgYmVjYXVzZSB0aGV5IG1pc3MKK2EgdGltZXIgb3Igb3RoZXIgdGltaW5nIHJlbGF0ZWQgaXNzdWVzLgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEplcmVteSBQdWhsbWFuIDxqcHVobG1hbkBtdmlzdGEuY29tPgorLS0tCisgY29uZmlndXJlLmluICAgICB8IDYgKysrKysrCisgaW5jbHVkZS9hcHIuaC5pbiB8IDEgKworIHRlc3QvdGVzdGxvY2suYyAgfCA0ICsrLS0KKyAzIGZpbGVzIGNoYW5nZWQsIDkgaW5zZXJ0aW9ucygrKSwgMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL2NvbmZpZ3VyZS5pbiBiL2NvbmZpZ3VyZS5pbgoraW5kZXggZDlmMzJkNi4uZjBjNTY2MSAxMDA2NDQKKy0tLSBhL2NvbmZpZ3VyZS5pbgorKysrIGIvY29uZmlndXJlLmluCitAQCAtMjg4Niw2ICsyODg2LDEyIEBAIEFDX0FSR19FTkFCTEUodGltZWRsb2NrcywKKyApCisgQUNfU1VCU1QoYXByX2hhc190aW1lZGxvY2tzKQorIAorK0FDX0FSR19FTkFCTEUodGltZWQtdGVzdHMsCisrICBbICAtLWRpc2FibGUtdGltZWQtdGVzdHMJICBEaXNhYmxlIHRpbWVkIHRlc3RzIF0sCisrICBbYXByX2hhc190aW1lZHRlc3RzPSIwIl0sIFthcHJfaGFzX3RpbWVkdGVzdHM9IjEiXQorKykKKytBQ19TVUJTVChhcHJfaGFzX3RpbWVkdGVzdHMpCisrCisgIyBoc3RyZXJyb3IgaXMgb25seSBuZWVkZWQgaWYgSVB2NiBpcyBub3QgZW5hYmxlZCwKKyAjIHNvIGdldGFkZHJpbmZvL2dhaV9zdHJlcnJvciBhcmUgbm90IHVzZWQuCisgaWYgdGVzdCAkaGF2ZV9pcHY2ID0gMDsgdGhlbgorZGlmZiAtLWdpdCBhL2luY2x1ZGUvYXByLmguaW4gYi9pbmNsdWRlL2Fwci5oLmluCitpbmRleCBlZTk5ZGVmLi5jNDZhNWY0IDEwMDY0NAorLS0tIGEvaW5jbHVkZS9hcHIuaC5pbgorKysrIGIvaW5jbHVkZS9hcHIuaC5pbgorQEAgLTI5OCw2ICsyOTgsNyBAQCBleHRlcm4gIkMiIHsKKyAjZGVmaW5lIEFQUl9IQVNfWFRIUkVBRF9GSUxFUyAgICAgQGFwcl9oYXNfeHRocmVhZF9maWxlc0AKKyAjZGVmaW5lIEFQUl9IQVNfT1NfVVVJRCAgICAgICAgICAgQG9zdXVpZEAKKyAjZGVmaW5lIEFQUl9IQVNfVElNRURMT0NLUyAgICAgICAgQGFwcl9oYXNfdGltZWRsb2Nrc0AKKysjZGVmaW5lIEFQUl9IQVZFX1RJTUVfREVQRU5EQU5UX1RFU1RTICAgICAgICBAYXByX2hhc190aW1lZHRlc3RzQAorIAorICNkZWZpbmUgQVBSX1BST0NBVFRSX1VTRVJfU0VUX1JFUVVJUkVTX1BBU1NXT1JEIEBhcHJfcHJvY2F0dHJfdXNlcl9zZXRfcmVxdWlyZXNfcGFzc3dvcmRACisgCitkaWZmIC0tZ2l0IGEvdGVzdC90ZXN0bG9jay5jIGIvdGVzdC90ZXN0bG9jay5jCitpbmRleCBhNDNmNDc3Li42MjMzZDBiIDEwMDY0NAorLS0tIGEvdGVzdC90ZXN0bG9jay5jCisrKysgYi90ZXN0L3Rlc3Rsb2NrLmMKK0BAIC0zOTYsMTMgKzM5NiwxMyBAQCBhYnRzX3N1aXRlICp0ZXN0bG9jayhhYnRzX3N1aXRlICpzdWl0ZSkKKyAgICAgYWJ0c19ydW5fdGVzdChzdWl0ZSwgdGhyZWFkc19ub3RfaW1wbCwgTlVMTCk7CisgI2Vsc2UKKyAgICAgYWJ0c19ydW5fdGVzdChzdWl0ZSwgdGVzdF90aHJlYWRfbXV0ZXgsIE5VTEwpOworLSNpZiBBUFJfSEFTX1RJTUVETE9DS1MKKysjaWYgQVBSX0hBU19USU1FRExPQ0tTICYmIEFQUl9IQVZFX1RJTUVfREVQRU5EQU5UX1RFU1RTCisgICAgIGFidHNfcnVuX3Rlc3Qoc3VpdGUsIHRlc3RfdGhyZWFkX3RpbWVkbXV0ZXgsIE5VTEwpOworICNlbmRpZgorICAgICBhYnRzX3J1bl90ZXN0KHN1aXRlLCB0ZXN0X3RocmVhZF9yd2xvY2ssIE5VTEwpOworICAgICBhYnRzX3J1bl90ZXN0KHN1aXRlLCB0ZXN0X2NvbmQsIE5VTEwpOworICAgICBhYnRzX3J1bl90ZXN0KHN1aXRlLCB0ZXN0X3RpbWVvdXRjb25kLCBOVUxMKTsKKy0jaWYgQVBSX0hBU19USU1FRExPQ0tTCisrI2lmIEFQUl9IQVNfVElNRURMT0NLUyAmJiBBUFJfSEFWRV9USU1FX0RFUEVOREFOVF9URVNUUworICAgICBhYnRzX3J1bl90ZXN0KHN1aXRlLCB0ZXN0X3RpbWVvdXRtdXRleCwgTlVMTCk7CisgI2VuZGlmCisgI2VuZGlmCistLSAKKzIuMjMuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS43LjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Fwci9hcHJfMS43LjAuYmIKaW5kZXggZWNhOWNkZS4uNzA3M2FmOCAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hcHIvYXByXzEuNy4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXByL2Fwcl8xLjcuMC5iYgpAQCAtMTgsMTIgKzE4LDEzIEBACiAgICAgICAgICAgIGZpbGU6Ly8wMDA2LWFwci1maXgtb2ZmX3Qtc2l6ZS1kb2Vzbi10LW1hdGNoLWluLWdsaWJjLXdoZW4tY3Jvc3MucGF0Y2ggXAogICAgICAgICAgICBmaWxlOi8vMDAwNy1leHBsaWNpdGx5LWxpbmstbGliYXByLWFnYWluc3QtcGh0cmVhZC10by1tYWtlLWdvbGQtLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL2xpYnRvb2xpemVfY2hlY2sucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGQtb3B0aW9uLXRvLWRpc2FibGUtdGltZWQtZGVwZW5kYW50LXRlc3RzLnBhdGNoIFwKICAgICAgICAgICAgIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiN2ExNGE4M2Q2NjRlODc1OTllYTI1ZmY0NDMyZTQ4YTciCiBTUkNfVVJJW3NoYTI1NnN1bV0gPSAiZTJlMTQ4ZjBiMmU5OWI4ZTVjNmNhYTA5ZjZkNGZiNGRkM2U4M2Y3NDRhYTcyYTk1MmY5NGY1YTE0NDM2ZjdlYSIKIAotaW5oZXJpdCBhdXRvdG9vbHMtYnJva2Vuc2VwIGxpYl9wYWNrYWdlIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIgcHRlc3QKK2luaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCBsaWJfcGFja2FnZSBiaW5jb25maWcgbXVsdGlsaWJfaGVhZGVyIHB0ZXN0IG11bHRpbGliX3NjcmlwdAogCiBPRV9CSU5DT05GSUdfRVhUUkFfTUFOR0xFID0gIiAtZSAnczpsb2NhdGlvbj1zb3VyY2U6bG9jYXRpb249aW5zdGFsbGVkOiciCiAKQEAgLTM5LDYgKzQwLDcgQEAKIAogUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0iCiBQQUNLQUdFQ09ORklHW2lwdjZdID0gIi0tZW5hYmxlLWlwdjYsLS1kaXNhYmxlLWlwdjYsIgorUEFDS0FHRUNPTkZJR1t0aW1lZC10ZXN0c10gPSAiLS1lbmFibGUtdGltZWQtdGVzdHMsLS1kaXNhYmxlLXRpbWVkLXRlc3RzLCIKIAogZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7CiAJIyBBdm9pZCBhYnNvbHV0ZSBwYXRocyBmb3IgZ3JlcCBzaW5jZSBpdCBjYXVzZXMgZmFpbHVyZXMKQEAgLTUxLDYgKzUzLDkgQEAKIAkuL2J1aWxkY29uZiAyCiB9CiAKK01VTFRJTElCX1NDUklQVFMgPSAiJHtQTn0tZGV2OiR7YmluZGlyfS9hcHItMS1jb25maWcgXAorICAgICAgICAgICAgICAgICAgICAke1BOfS1kZXY6JHtkYXRhZGlyfS9idWlsZC0xL2Fwcl9ydWxlcy5tayIKKwogRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vYXByLmV4cCAke2RhdGFkaXJ9L2J1aWxkLTEvKiIKIFJERVBFTkRTXyR7UE59LWRldiArPSAiYmFzaCIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4zMi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1hdGtfMi4zMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBkM2E5ZGUxLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMzIuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLVNVTU1BUlkgPSAiQVQtU1BJIDIgVG9vbGtpdCBCcmlkZ2UiCi1IT01FUEFHRSA9ICJodHRwczovL3dpa2kubGludXhmb3VuZGF0aW9uLm9yZy9hY2Nlc3NpYmlsaXR5L2QtYnVzIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1lOWYyODhiYTk4MmQ2MDUxOGYzNzViNTg5ODI4Mzg4NiIKLQotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiNmE0YjI3YmFjZTNiOTM1MjcyMWVkNDYyYjk1ZjYyOTEiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIwYjUxZTZkMzM5ZmEyYmNjYTNhM2UzMTU5Y2NlYTU3NGM2N2IxMDdmMWFjOGIwMDA0N2ZhNjBlMzRjZTdhNDVjIgotCi1ERVBFTkRTID0gImRidXMgZ2xpYi0yLjAgZ2xpYi0yLjAtbmF0aXZlIGF0ayBhdC1zcGkyLWNvcmUgbGlieG1sMiIKLQotR05PTUVCQVNFQlVJTERDTEFTUyA9ICJtZXNvbiIKLWluaGVyaXQgZ25vbWViYXNlIGZlYXR1cmVzX2NoZWNrIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbgotCi1QQUNLQUdFUyA9KyAiJHtQTn0tZ25vbWUgJHtQTn0tZ3RrMiIKLQotRklMRVNfJHtQTn0tZ25vbWUgPSAiJHtsaWJkaXJ9L2dub21lLXNldHRpbmdzLWRhZW1vbi0zLjAvZ3RrLW1vZHVsZXMiCi1GSUxFU18ke1BOfS1ndGsyID0gIiR7bGliZGlyfS9ndGstMi4wL21vZHVsZXMvbGliYXRrLWJyaWRnZS4qIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjM0LjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWF0a18yLjM0LjIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZGI2MmFlOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItYXRrXzIuMzQuMi5iYgpAQCAtMCwwICsxLDIxIEBACitTVU1NQVJZID0gIkFULVNQSSAyIFRvb2xraXQgQnJpZGdlIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKK0xJQ0VOU0UgPSAiTEdQTC0yLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMiCisKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gIjU4Y2QyNzg1NzRlMTAxMzYzYjE4ZDlhOGI3MDUzZDY3IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiOTAxMzIzY2VlMGVlZjA1YzAxZWM0ZGVlMDZjNzAxYWVlY2E4MWEzMTRhN2Q2MDIxNmZhMzYzMDA1ZTI3ZjRmMCIKKworREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBhdGsgYXQtc3BpMi1jb3JlIGxpYnhtbDIiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4KKworUEFDS0FHRVMgPSsgIiR7UE59LWdub21lICR7UE59LWd0azIiCisKK0ZJTEVTXyR7UE59LWdub21lID0gIiR7bGliZGlyfS9nbm9tZS1zZXR0aW5ncy1kYWVtb24tMy4wL2d0ay1tb2R1bGVzIgorRklMRVNfJHtQTn0tZ3RrMiA9ICIke2xpYmRpcn0vZ3RrLTIuMC9tb2R1bGVzL2xpYmF0ay1icmlkZ2UuKiIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitDRkxBR1MgKz0gIi1mY29tbW9uIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlLzAwMDEtRml4LXNvdXJjZS1yZXByb2R1Y2liaWxpdHkucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmUvMDAwMS1GaXgtc291cmNlLXJlcHJvZHVjaWJpbGl0eS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43NjMxOTY5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlLzAwMDEtRml4LXNvdXJjZS1yZXByb2R1Y2liaWxpdHkucGF0Y2gKQEAgLTAsMCArMSwzMiBAQAorRnJvbSBiN2ZhMGFhMDBiMDdlMDNlMzM4ZGQwMmFmNTY0NDMxYmYyZjJiMTg1IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogSm9zaHVhIFdhdHQgPEpvc2h1YS5XYXR0QGdhcm1pbi5jb20+CitEYXRlOiBXZWQsIDIwIE5vdiAyMDE5IDE1OjI0OjAyIC0wNjAwCitTdWJqZWN0OiBbUEFUQ0hdIEZpeCBzb3VyY2UgcmVwcm9kdWNpYmlsaXR5CisKK1RoZSBnZW5lcmF0ZWQgZW51bSB0eXBlIGZpbGVzIGNhbiBiZSBpbmNsdWRlZCBpbiBzb3VyY2UgcGFja2FnZXMgbWVhbnQKK2ZvciBkZWJ1Z2dpbmcsIGFuZCB0aHVzIG5lZWQgdG8gYmUgcmVwcm9kdWNpYmxlLiBSZXBsYWNlIHRoZSBhYnNvbHV0ZQoraW5jbHVkZSBvZiB0aGUgaGVhZGVyIHdpdGggdGhlIGJhc2VuYW1lLiBUaGlzIGlzIHN1ZmZpY2llbnQgYmVjYXVzZSB0aGUKK3RhcmdldCBpbmNsdWRlIGZpbGVzIGFyZSBhbHdheXMgaW4gdGhlIGluY2x1ZGUgcGF0aCBhbnl3YXkuCisKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0bGFiLmdub21lLm9yZy9HTk9NRS9hdC1zcGkyLWNvcmUvbWVyZ2VfcmVxdWVzdHMvMjVdCitTaWduZWQtb2ZmLWJ5OiBKb3NodWEgV2F0dCA8Sm9zaHVhLldhdHRAZ2FybWluLmNvbT4KKy0tLQorIGF0c3BpL2F0c3BpLWVudW0tdHlwZXMuYy50ZW1wbGF0ZSB8IDIgKy0KKyAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL2F0c3BpL2F0c3BpLWVudW0tdHlwZXMuYy50ZW1wbGF0ZSBiL2F0c3BpL2F0c3BpLWVudW0tdHlwZXMuYy50ZW1wbGF0ZQoraW5kZXggMzg1ZDBlZS4uOTJlNDkzNyAxMDA2NDQKKy0tLSBhL2F0c3BpL2F0c3BpLWVudW0tdHlwZXMuYy50ZW1wbGF0ZQorKysrIGIvYXRzcGkvYXRzcGktZW51bS10eXBlcy5jLnRlbXBsYXRlCitAQCAtNSw3ICs1LDcgQEAKKyAKKyAvKioqIEJFR0lOIGZpbGUtcHJvZHVjdGlvbiAqKiovCisgLyogZW51bWVyYXRpb25zIGZyb20gIkBiYXNlbmFtZUAiICovCistI2luY2x1ZGUgIkBmaWxlbmFtZUAiCisrI2luY2x1ZGUgIkBiYXNlbmFtZUAiCisgCisgLyoqKiBFTkQgZmlsZS1wcm9kdWN0aW9uICoqKi8KKyAKKy0tIAorMi4yMy4wCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjMyLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdC1zcGkyLWNvcmVfMi4zMi4xLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxMTA1MmE4Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjMyLjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNiArMCwwIEBACi1TVU1NQVJZID0gIkFzc2lzdGl2ZSBUZWNobm9sb2d5IFNlcnZpY2UgUHJvdmlkZXIgSW50ZXJmYWNlIChkYnVzIGNvcmUpIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmxpbnV4Zm91bmRhdGlvbi5vcmcvYWNjZXNzaWJpbGl0eS9kLWJ1cyIKLUxJQ0VOU0UgPSAiTEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTlmMjg4YmE5ODJkNjA1MThmMzc1YjU4OTgyODM4ODYiCi0KLU1BSl9WRVIgPSAiJHtAb2UudXRpbHMudHJpbV92ZXJzaW9uKCIke1BWfSIsIDIpfSIKLQotU1JDX1VSSSA9ICIke0dOT01FX01JUlJPUn0vJHtCUE59LyR7TUFKX1ZFUn0vJHtCUE59LSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjk5OGZkOWQ4NThmOGZhMjJjNGM4YzE1NTY3YmY2MjU0IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNjMmFhOTM3ZWJmYWNhMmM4NjU2OWJjZTliMTZhMzRmYmUyMGQ2OWVmMGM1ODg0NjMxM2IxYzQyZjUzYjBkNTMiCi0KLVgxMURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlieGkgbGlieHRzdCIKLQotREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIgotREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnJHtYMTFERVBFTkRTfScsICcnLCBkKX0iCi0KLWluaGVyaXQgbWVzb24gZ3RrLWRvYyBnZXR0ZXh0IHN5c3RlbWQgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotRVhUUkFfT0VNRVNPTiA9ICIgLURzeXN0ZW1kX3VzZXJfZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKLSAgICAgICAgICAgICAgICAgIC1EZGJ1c19kYWVtb249JHtiaW5kaXJ9L2RidXMtZGFlbW9uIFwKLSAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJy1EeDExPXllcycsICctRHgxMT1ubycsIGQpfSBcCi0iCi0KLUdUS0RPQ19NRVNPTl9PUFRJT04gPSAiZG9jcyIKLQotR0lSX01FU09OX09QVElPTiA9ICdpbnRyb3NwZWN0aW9uJwotR0lSX01FU09OX0VOQUJMRV9GTEFHID0gJ3llcycKLUdJUl9NRVNPTl9ESVNBQkxFX0ZMQUcgPSAnbm8nCi0KLUZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8qLnNlcnZpY2UgXAotICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL2FjY2Vzc2liaWxpdHktc2VydmljZXMvKi5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RlZmF1bHRzL2F0LXNwaTIgXAotICAgICAgICAgICAgICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9L2F0LXNwaS1kYnVzLWJ1cy5zZXJ2aWNlwqBcCi0gICAgICAgICAgICAgICAgIgotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXQtc3BpMi1jb3JlXzIuMzQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjM0LjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uODRlMDVlNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0LXNwaTItY29yZV8yLjM0LjAuYmIKQEAgLTAsMCArMSwzNyBAQAorU1VNTUFSWSA9ICJBc3Npc3RpdmUgVGVjaG5vbG9neSBTZXJ2aWNlIFByb3ZpZGVyIEludGVyZmFjZSAoZGJ1cyBjb3JlKSIKK0hPTUVQQUdFID0gImh0dHBzOi8vd2lraS5saW51eGZvdW5kYXRpb24ub3JnL2FjY2Vzc2liaWxpdHkvZC1idXMiCitMSUNFTlNFID0gIkxHUEwtMi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIgorCitNQUpfVkVSID0gIiR7QG9lLnV0aWxzLnRyaW1fdmVyc2lvbigiJHtQVn0iLCAyKX0iCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9LyR7QlBOfS8ke01BSl9WRVJ9LyR7QlBOfS0ke1BWfS50YXIueHogXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtc291cmNlLXJlcHJvZHVjaWJpbGl0eS5wYXRjaCIKKworU1JDX1VSSVttZDVzdW1dID0gIjUzYzIxNTY1NTA3MTA1ZmI2ODAzMWNkOWMyMWE1NTliIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ2MjljZGJkNjc0ZTUzOWY4OTEyMDI4NTEyYWY1ODM5OTA5MzhjN2I0OWUyNTE4NGMxMjZiMDAxMjFlZjExYzYiCisKK1gxMURFUEVORFMgPSAidmlydHVhbC9saWJ4MTEgbGlieGkgbGlieHRzdCIKKworREVQRU5EUyA9ICJkYnVzIGdsaWItMi4wIgorREVQRU5EUyArPSAiJHtAYmIudXRpbHMuY29udGFpbnMoJ0RJU1RST19GRUFUVVJFUycsICd4MTEnLCAnJHtYMTFERVBFTkRTfScsICcnLCBkKX0iCisKK2luaGVyaXQgbWVzb24gZ3RrLWRvYyBnZXR0ZXh0IHN5c3RlbWQgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KKworRVhUUkFfT0VNRVNPTiA9ICIgLURzeXN0ZW1kX3VzZXJfZGlyPSR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9IFwKKyAgICAgICAgICAgICAgICAgIC1EZGJ1c19kYWVtb249JHtiaW5kaXJ9L2RidXMtZGFlbW9uIFwKKyAgICAgICAgICAgICAgICAgICR7QGJiLnV0aWxzLmNvbnRhaW5zKCdESVNUUk9fRkVBVFVSRVMnLCAneDExJywgJy1EeDExPXllcycsICctRHgxMT1ubycsIGQpfSBcCisiCisKK0dUS0RPQ19NRVNPTl9PUFRJT04gPSAiZG9jcyIKKworR0lSX01FU09OX09QVElPTiA9ICdpbnRyb3NwZWN0aW9uJworR0lSX01FU09OX0VOQUJMRV9GTEFHID0gJ3llcycKK0dJUl9NRVNPTl9ESVNBQkxFX0ZMQUcgPSAnbm8nCisKK0ZJTEVTXyR7UE59ICs9ICIke2RhdGFkaXJ9L2RidXMtMS9zZXJ2aWNlcy8qLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICR7ZGF0YWRpcn0vZGJ1cy0xL2FjY2Vzc2liaWxpdHktc2VydmljZXMvKi5zZXJ2aWNlIFwKKyAgICAgICAgICAgICAgICAke2RhdGFkaXJ9L2RlZmF1bHRzL2F0LXNwaTIgXAorICAgICAgICAgICAgICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9L2F0LXNwaS1kYnVzLWJ1cy5zZXJ2aWNlwqBcCisgICAgICAgICAgICAgICAgIgorQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdGsvYXRrLzAwMDEtbWVzb24uYnVpbGQtZW5hYmxlLWludHJvc3BlY3Rpb24tZm9yLWNyb3NzLWNvbXBpbGUucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGsvMDAwMS1tZXNvbi5idWlsZC1lbmFibGUtaW50cm9zcGVjdGlvbi1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDFiMDhiYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGsvMDAwMS1tZXNvbi5idWlsZC1lbmFibGUtaW50cm9zcGVjdGlvbi1mb3ItY3Jvc3MtY29tcGlsZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLUZyb20gNDRkNDZiYWE1ZTE1MTljNmMzZGY3ZTRkMzRmYjMzM2UyNDdiNWJjOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEFudWogTWl0dGFsIDxhbnVqLm1pdHRhbEBpbnRlbC5jb20+Ci1EYXRlOiBGcmksIDYgQXByIDIwMTggMTI6MDQ6MDAgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gbWVzb24uYnVpbGQ6IGVuYWJsZSBpbnRyb3NwZWN0aW9uIGZvciBjcm9zcy1jb21waWxlCi0KLUl0IHdvcmtzIGZpbmUgaW4gT0UtY29yZSBhbmQgZG9lc24ndCBuZWVkIHRvIGJlIGRpc2FibGVkLiBMZXQgdGhlIHVzZXIgZGVjaWRlCi1pZiBpdCBzaG91bGQgYmUgZGlzYWJsZWQgb3Igbm90LgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW51aiBNaXR0YWwgPGFudWoubWl0dGFsQGludGVsLmNvbT4KLQotLS0tCi0gYXRrL21lc29uLmJ1aWxkIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvYXRrL21lc29uLmJ1aWxkIGIvYXRrL21lc29uLmJ1aWxkCi1pbmRleCAwYWQ2N2U1Li4xZDJhNDljIDEwMDY0NAotLS0tIGEvYXRrL21lc29uLmJ1aWxkCi0rKysgYi9hdGsvbWVzb24uYnVpbGQKLUBAIC0xMzcsNyArMTM3LDcgQEAgbGliYXRrX2RlcCA9IGRlY2xhcmVfZGVwZW5kZW5jeShsaW5rX3dpdGg6IGxpYmF0aywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGRlcGVuZGVuY2llczogZ2xpYl9kZXAsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzb3VyY2VzOiBhdGtfZW51bV9oKQotIAotLWlmIG5vdCBtZXNvbi5pc19jcm9zc19idWlsZCgpIGFuZCBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykKLStpZiBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykKLSAgIGdub21lLmdlbmVyYXRlX2dpcihsaWJhdGssCi0gICAgICAgICAgICAgICAgICAgICAgc291cmNlczogYXRrX3NvdXJjZXMgKyBhdGtfaGVhZGVycyArIFsgYXRrX2VudW1faCBdICsgWyBhdGtfdmVyc2lvbl9oIF0sCi0gICAgICAgICAgICAgICAgICAgICAgbmFtZXNwYWNlOiAnQXRrJywKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjMyLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4zMi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2NzIyMzcyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjMyLjAuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyMiArMCwwIEBACi1TVU1NQVJZID0gIkFjY2Vzc2liaWxpdHkgdG9vbGtpdCBmb3IgR05PTUUiCi1IT01FUEFHRSA9ICJodHRwOi8vbGl2ZS5nbm9tZS5vcmcvR0FQLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9idWd6aWxsYS5nbm9tZS5vcmcvIgotU0VDVElPTiA9ICJ4MTEvbGlicyIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIrIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9M2JmNTAwMDJhZWZkMDAyZjQ5ZTdiYjg1NDA2M2Y3ZTcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXRrL2F0a3V0aWwuYztlbmRsaW5lPTE4O21kNT02ZmQzMWNkMmZkYzliMzBmNjE5Y2E4ZDgxOWJjMTJkMyBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdGsvYXRrLmg7ZW5kbGluZT0xODttZDU9ZmNkNzcxMDE4N2UwZWFlNDg1ZTM1NmMzMGQxYjBjM2IiCi0KLSMgTmVlZCBnZXR0ZXh0LW5hdGl2ZSBhcyBNZXNvbiBjYW4ndCB0dXJuIG9mZiBpMThuCi1ERVBFTkRTID0gImdldHRleHQtbmF0aXZlIGdsaWItMi4wIgotCi1HTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgotaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBnZXR0ZXh0IHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24KLQotU1JDX1VSSSArPSAiIGZpbGU6Ly8wMDAxLW1lc29uLmJ1aWxkLWVuYWJsZS1pbnRyb3NwZWN0aW9uLWZvci1jcm9zcy1jb21waWxlLnBhdGNoIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiYzEwYjBiMmFmM2MxOTllNDJjYWE2Mjc1Yjg0NWM0OWQiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICJjYjQxZmVkYTdmZTRlZjBkYWEwMjQ0NzE0MzhlYTAyMTk1OTJiYWY3YzI5MTM0N2U1YTg1OGJiNjRlNDA5MWNjIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXRrL2F0a18yLjM0LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4zNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI3NzM5N2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0ay9hdGtfMi4zNC4xLmJiCkBAIC0wLDAgKzEsMjEgQEAKK1NVTU1BUlkgPSAiQWNjZXNzaWJpbGl0eSB0b29sa2l0IGZvciBHTk9NRSIKK0hPTUVQQUdFID0gImh0dHA6Ly9saXZlLmdub21lLm9yZy9HQVAvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCitTRUNUSU9OID0gIngxMS9saWJzIgorCitMSUNFTlNFID0gIkdQTHYyKyAmIExHUEx2MisiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0zYmY1MDAwMmFlZmQwMDJmNDllN2JiODU0MDYzZjdlNyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9hdGsvYXRrdXRpbC5jO2VuZGxpbmU9MTg7bWQ1PTZmZDMxY2QyZmRjOWIzMGY2MTljYThkODE5YmMxMmQzIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2F0ay9hdGsuaDtlbmRsaW5lPTE4O21kNT1mY2Q3NzEwMTg3ZTBlYWU0ODVlMzU2YzMwZDFiMGMzYiIKKworIyBOZWVkIGdldHRleHQtbmF0aXZlIGFzIE1lc29uIGNhbid0IHR1cm4gb2ZmIGkxOG4KK0RFUEVORFMgPSAiZ2V0dGV4dC1uYXRpdmUgZ2xpYi0yLjAiCisKK0dOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCitpbmhlcml0IGdub21lYmFzZSBndGstZG9jIGdldHRleHQgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCitTUkNfVVJJW2FyY2hpdmUubWQ1c3VtXSA9ICJmNjBiYmFmOGJkZDA4YjkzZDk4NzM2YjU0YjJmYzhlOSIKK1NSQ19VUklbYXJjaGl2ZS5zaGEyNTZzdW1dID0gImQ0ZjBlM2IzZDIxMjY1ZmNmMmJjMzcxZTExN2RhNTFjNDJlZGUxYTcxZjZkYjFjODM0ZTY5NzZiYjIwOTk3Y2IiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC8wMDAxLXRlc3QtcGF0Y2gtb3V0LWZhaWxpbmctYml0cy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvMDAwMS10ZXN0LXBhdGNoLW91dC1mYWlsaW5nLWJpdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYmEyZmZlZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvMDAwMS10ZXN0LXBhdGNoLW91dC1mYWlsaW5nLWJpdHMucGF0Y2gKQEAgLTAsMCArMSw2MyBAQAorRnJvbSA5ZTA4MjE5ZTBlOTllZTI1ODljZjM1ZmE4ZDUyY2VmMzUxNWFjY2NlIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDEyIERlYyAyMDE5IDE1OjQ3OjQ5ICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3Q6IHBhdGNoIG91dCBmYWlsaW5nIGJpdHMKKworSSBoYXZlIGNvbmZpcm1lZCBvbiB0aGUgaG9zdCBkaXN0cm8gKFVidW50dSAxOC4wNCkgdGhhdCB0aGV5CitmYWlsIGFzIHdlbGw7IHVwc3RyZWFtIHByb2JhYmx5IGhhdmVuJ3Qgbm90aWNlZCBiZWNhdXNlIHRoZQordGVzdCBpcyBvbmx5IGV4ZWN1dGVkIHVuZGVyIHN1ZG8uCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbZGlzYWJsaW5nIHRlc3RzIGluc3RlYWQgb2YgZml4aW5nIHRoZW0gcHJvcGVybHldCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHRlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0IHwgMTMgLS0tLS0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAxMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0IGIvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKK2luZGV4IDhmOGY4MjUuLjIxZThhOTUgMTAwNjQ0CistLS0gYS90ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdAorKysrIGIvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKK0BAIC01MCwxMCArNTAsNiBAQCBVc2VyIGRhZW1vbiBpcyBhIG1lbWJlciBpbiB0aGUgb3duaW5nIGdyb3VwLCB3aGljaCBoYXMgb25seSByZWFkIGFjY2Vzcy4KKyBWZXJpZnkgdGhpcy4KKyAKKyAJJCBzdSBkYWVtb24KKy0JJCBjYXQgZgorLQk+IHJvb3QKKy0JPiBiaW4KKy0KKyAJJCBlY2hvIGRhZW1vbiA+PiBmCisgCT5+IC4qZjogUGVybWlzc2lvbiBkZW5pZWQkCisgCitAQCAtMTQ2LDggKzE0Miw2IEBAIHRoZSBvd25pbmcgZ3JvdXAsIGhlIHNob3VsZCBzdGlsbCBoYXZlIG5vIHdyaXRlIGFjY2Vzcy4KKyAJJCBzZXRmYWNsIC14IGc6ZGFlbW9uIGYKKyAKKyAJJCBzdSBkYWVtb24KKy0JJCBlY2hvIGRhZW1vbjQgPj4gZgorLQk+fiAuKmY6IFBlcm1pc3Npb24gZGVuaWVkJAorIAorIAorIENoYW5nZSB0aGUgb3duaW5nIGdyb3VwLiBUaGUgb3RoZXIgcGVybWlzc2lvbnMgc2hvdWxkIG5vdyBncmFudCB1c2VyCitAQCAtMTU4LDEyICsxNTIsNiBAQCBkYWVtb24gd3JpdGUgYWNjZXNzLgorIAorIAkkIHN1IGRhZW1vbgorIAkkIGVjaG8gZGFlbW9uNSA+PiBmCistCSQgY2F0IGYKKy0JPiByb290CistCT4gYmluCistCT4gZGFlbW9uCistCT4gZGFlbW9uMgorLQk+IGRhZW1vbjUKKyAKKyAKKyBWZXJpZnkgdGhhdCBwZXJtaXNzaW9ucyBpbiBzZXBhcmF0ZSBtYXRjaGluZyBBQ0wgZW50cmllcyBkbyBub3QKK0BAIC0xNzMsNyArMTYxLDYgQEAgYWNjdW11bGF0ZS4KKyAJJCBzZXRmYWNsIC1tIGc6YmluOnIsZzpkYWVtb246dyBmCisgCisgCSQgc3UgZGFlbW9uCistCSQgOiA8IGYKKyAJJCA6ID4gZgorIAkkIDogPD4gZgorIAk+fiAuKmY6IFBlcm1pc3Npb24gZGVuaWVkJAorLS0gCisyLjE3LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC8wMDAxLXRlc3RzLWRvLW5vdC1oYXJkY29kZS10aGUtYnVpbGQtcGF0aC1pbnRvLWEtaGVscGVyLWwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsLzAwMDEtdGVzdHMtZG8tbm90LWhhcmRjb2RlLXRoZS1idWlsZC1wYXRoLWludG8tYS1oZWxwZXItbC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41N2VmMGJiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC8wMDAxLXRlc3RzLWRvLW5vdC1oYXJkY29kZS10aGUtYnVpbGQtcGF0aC1pbnRvLWEtaGVscGVyLWwucGF0Y2gKQEAgLTAsMCArMSwyNCBAQAorRnJvbSAzOWQzMzJhODgwMWRlNWQ5ZWYwOWRhY2IzZGJhODVjMjA4YjdiMmFkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDEyIERlYyAyMDE5IDEzOjQ1OjUyICswMTAwCitTdWJqZWN0OiBbUEFUQ0hdIHRlc3RzOiBkbyBub3QgaGFyZGNvZGUgdGhlIGJ1aWxkIHBhdGggaW50byBhIGhlbHBlciBsaWJyYXJ5CisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdGVzdC9NYWtlbW9kdWxlLmFtIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdC9NYWtlbW9kdWxlLmFtIGIvdGVzdC9NYWtlbW9kdWxlLmFtCitpbmRleCAxN2Q0OTI3Li4wMTVkZTdmIDEwMDY0NAorLS0tIGEvdGVzdC9NYWtlbW9kdWxlLmFtCisrKysgYi90ZXN0L01ha2Vtb2R1bGUuYW0KK0BAIC0zMCw3ICszMCw3IEBAIEVYVFJBX0RJU1QgKz0gXAorIGNoZWNrX0xUTElCUkFSSUVTID0gbGlidGVzdGxvb2t1cC5sYQorIAorIGxpYnRlc3Rsb29rdXBfbGFfU09VUkNFUyA9IHRlc3QvdGVzdF9wYXNzd2QuYyB0ZXN0L3Rlc3RfZ3JvdXAuYworLWxpYnRlc3Rsb29rdXBfbGFfQ0ZMQUdTID0gLURCQVNFRElSPVwiJChhYnNfc3JjZGlyKVwiCisrbGlidGVzdGxvb2t1cF9sYV9DRkxBR1MgPSAtREJBU0VESVI9XCIvdG1wL2FjbC1wdGVzdFwiCisgbGlidGVzdGxvb2t1cF9sYV9MREZMQUdTID0gLXJwYXRoICQoYWJzX2J1aWxkZGlyKQorIAorIEFNX1RFU1RTX0VOVklST05NRU5UID0gUEFUSD0iJChhYnNfdG9wX2J1aWxkZGlyKTokJFBBVEgiOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC9NYWtlZmlsZS1saWJhY2wtc2hvdWxkLWRlcGVuZC1vbi1pbmNsdWRlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC9NYWtlZmlsZS1saWJhY2wtc2hvdWxkLWRlcGVuZC1vbi1pbmNsdWRlLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0YzdjYmEzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvTWFrZWZpbGUtbGliYWNsLXNob3VsZC1kZXBlbmQtb24taW5jbHVkZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDUxICswLDAgQEAKLUZyb20gZDgyNDU3Y2U1Y2E3NDU1ZTMzNmRhNWUyNDRkOTVmOTBlNTJhYWVmOCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IFJvYmVydCBZYW5nIDxsaWV6aGkueWFuZ0B3aW5kcml2ZXIuY29tPgotRGF0ZTogVHVlLCAxOCBBcHIgMjAxNyAwMToxNzoyNiAtMDcwMAotU3ViamVjdDogW1BBVENIXSBNYWtlZmlsZTogbGliYWNsIHNob3VsZCBkZXBlbmQgb24gaW5jbHVkZQotCi1GaXhlZCByYWNlIGlzc3VlOgotIEluIGZpbGUgaW5jbHVkZWQgZnJvbSBhY2xfY29weV9lbnRyeS5jOjIyOjA6Ci0gbGliYWNsLmg6MTk6MjE6IGZhdGFsIGVycm9yOiBzeXMvYWNsLmg6IE5vIHN1Y2ggZmlsZSBvciBkaXJlY3RvcnkKLSAgI2luY2x1ZGUgPHN5cy9hY2wuaD4KLQotW3NuaXBdCi0KLSBjb21waWxhdGlvbiB0ZXJtaW5hdGVkLgotIGFjbF9nZXRfZmlsZS5jOjI3OjI0OiBmYXRhbCBlcnJvcjogYWNsL2xpYmFjbC5oOiBObyBzdWNoIGZpbGUgb3IgZGlyZWN0b3J5Ci0gICNpbmNsdWRlIDxhY2wvbGliYWNsLmg+Ci0gICAgICAgICAgICAgICAgICAgICAgICAgXgotCi1UaGUgYWNsLmggaXMgaW4gImluY2x1ZGUiIGRpcmVjdG9yeSwgYW5kIGluY2x1ZGUvTWFrZWZpbGUgY3JlYXRlcwotc3ltbGluayAic3lzIiBhbmQgImFjbCIgcG9pbnN0IHRvIGN1cnJlbnQgZGlyY3Rvcnk6Ci0kIGxzIGluY2x1ZGUvIC1sCi1hY2wgLT4gLgotc3lzIC0+IC4KLQotU28gaWYgImxpYmFjbCIgdGFyZ2V0IHJ1bnMgYmVmb3JlICJpbmNsdWRlIiwgdGhlIGVycm9yIHdvdWxkIGhhcHBlbgotc2luY2Ugbm8gImFjbCIgb3IgInN5cyIgZGlyZWN0b3J5LgotCi1MZXQgbGliYWNsIGRlcGVuZCBvbiBpbmNsdWRlIGNhbiBmaXggdGhlIHByb2JsZW0uCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBSb2JlcnQgWWFuZyA8bGllemhpLnlhbmdAd2luZHJpdmVyLmNvbT4KLS0tLQotIE1ha2VmaWxlIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvTWFrZWZpbGUgYi9NYWtlZmlsZQotaW5kZXggZGNlMzJkMy4uOGE3OTM3OSAxMDA2NDQKLS0tLSBhL01ha2VmaWxlCi0rKysgYi9NYWtlZmlsZQotQEAgLTQ4LDcgKzQ4LDcgQEAgZWxzZQotIGVuZGlmCi0gCi0gIyB0b29sL2xpYiBkZXBlbmRlbmNpZXMKLS1saWJhY2w6IGxpYm1pc2MKLStsaWJhY2w6IGluY2x1ZGUgbGlibWlzYwotIGdldGZhY2wgc2V0ZmFjbCBjaGFjbDogbGliYWNsCi0gCi0gaWZlcSAoJChIQVZFX0JVSUxEREVGUyksIHllcykKLS0tIAotMi4xMC4yCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvYWNsLWZpeC10aGUtb3JkZXItb2YtZXhwZWN0ZWQtb3V0cHV0LW9mLWdldGZhY2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL2FjbC1maXgtdGhlLW9yZGVyLW9mLWV4cGVjdGVkLW91dHB1dC1vZi1nZXRmYWNsLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZjc2NWZkLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvYWNsLWZpeC10aGUtb3JkZXItb2YtZXhwZWN0ZWQtb3V0cHV0LW9mLWdldGZhY2wucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOTggKzAsMCBAQAotYWNsOiBmaXggdGhlIG9yZGVyIG9mIGV4cGVjdGVkIG91dHB1dCBvZiBnZXRmYWNsCi0KLVRoZSByZXN1bHQgb2YgZ2V0ZmFjbCBpcyBzb3J0ZWQgYnkgdXNlciBpZC4KLUluIENlbnRvcyBvciBSSEVMLCBiaW4gdXNlciBpZCBpcyAxIGFuZCBkYWVtb24gdXNlciBpZCBpcyAyLgotQnV0IGluIG91ciBpbWFnZSwgYmluIHVzZXIgaWQgaXMgMiBhbmQgZGFlbW9uIHVzZXIgaWQgaXMgMS4KLVRoZSBwYXRjaCBmaXhlcyB0aGlzIGlzc3VlIHRvIG1ha2UgcHRlc3QgcGFzcy4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtlbWJlZGRlZCBzcGVjaWZpY10KLQotU2lnbmVkLW9mZi1ieTogQ2hvbmcgTHUgPENob25nLkx1QHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0L21pc2MudGVzdCB8ICAgMzggKysrKysrKysrKysrKysrKysrKy0tLS0tLS0tLS0tLS0tLS0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgMTkgaW5zZXJ0aW9ucygrKSwgMTkgZGVsZXRpb25zKC0pCi0KLWRpZmYgLS1naXQgYS90ZXN0L21pc2MudGVzdCBiL3Rlc3QvbWlzYy50ZXN0Ci1pbmRleCA2ZTk4MDUzLi41M2FlNWIwIDEwMDY0NAotLS0tIGEvdGVzdC9taXNjLnRlc3QKLSsrKyBiL3Rlc3QvbWlzYy50ZXN0Ci1AQCAtNzksOCArNzksOCBAQCBNdWx0aXBsZSB1c2VycwotIAotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBmCi0gCT4gdXNlcjo6cnctCi0tCT4gdXNlcjpiaW46cnctCi0gCT4gdXNlcjpkYWVtb246ci0tCi0rCT4gdXNlcjpiaW46cnctCi0gCT4gZ3JvdXA6OnItLQotIAk+IG1hc2s6OnJ3LQotIAk+IG90aGVyOjpyLS0KLUBAIC05NCw4ICs5NCw4IEBAIE11bHRpcGxlIGdyb3VwcwotIAotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBmCi0gCT4gdXNlcjo6cnctCi0tCT4gdXNlcjpiaW46cnctCi0gCT4gdXNlcjpkYWVtb246ci0tCi0rCT4gdXNlcjpiaW46cnctCi0gCT4gZ3JvdXA6OnItLQotIAk+IGdyb3VwOmRhZW1vbjpyLS0KLSAJPiBncm91cDp1c2Vyczpydy0KLUBAIC0xMTEsOCArMTExLDggQEAgUmVtb3ZlIG9uZSBncm91cAotIAotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBmCi0gCT4gdXNlcjo6cnctCi0tCT4gdXNlcjpiaW46cnctCi0gCT4gdXNlcjpkYWVtb246ci0tCi0rCT4gdXNlcjpiaW46cnctCi0gCT4gZ3JvdXA6OnItLQotIAk+IGdyb3VwOmRhZW1vbjpyLS0KLSAJPiBtYXNrOjpydy0KLUBAIC0xNDYsOCArMTQ2LDggQEAgRGVmYXVsdCBBQ0wKLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZAotIAk+IHVzZXI6OnJ3eAotLQk+IHVzZXI6YmluOnJ3eAotIAk+IHVzZXI6ZGFlbW9uOnJ3LQotKwk+IHVzZXI6YmluOnJ3eAotIAk+IGdyb3VwOjpyLXgKLSAJPiBtYXNrOjpyd3gKLSAJPiBvdGhlcjo6LS0tCi1AQCAtMjM2LDE2ICsyMzYsMTYgQEAgQWRkIHNvbWUgdXNlcnMgYW5kIGdyb3VwcwotIAotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBkL2QKLSAJPiB1c2VyOjpyd3gKLS0JPiB1c2VyOmJpbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiB1c2VyOmRhZW1vbjpyLXgKLSsJPiB1c2VyOmJpbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBncm91cDo6ci14Ci0gCT4gZ3JvdXA6ZGFlbW9uOnJ3eAkjZWZmZWN0aXZlOnIteAotIAk+IGdyb3VwOnVzZXJzOnIteAotIAk+IG1hc2s6OnIteAotIAk+IG90aGVyOjotLS0KLSAJPiBkZWZhdWx0OnVzZXI6OnJ3eAotLQk+IGRlZmF1bHQ6dXNlcjpiaW46cnd4CSNlZmZlY3RpdmU6ci14Ci0gCT4gZGVmYXVsdDp1c2VyOmRhZW1vbjpyLXgKLSsJPiBkZWZhdWx0OnVzZXI6YmluOnJ3eAkjZWZmZWN0aXZlOnIteAotIAk+IGRlZmF1bHQ6Z3JvdXA6OnIteAotIAk+IGRlZmF1bHQ6bWFzazo6ci14Ci0gCT4gZGVmYXVsdDpvdGhlcjo6LS0tCi1AQCAtMjYyLDE2ICsyNjIsMTYgQEAgU3ltbGluayBpbiBkaXJlY3Rvcnkgd2l0aCBkZWZhdWx0IEFDTD8KLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZC9sCi0gCT4gdXNlcjo6cnd4Ci0tCT4gdXNlcjpiaW46cnd4CSNlZmZlY3RpdmU6ci14Ci0gCT4gdXNlcjpkYWVtb246ci14Ci0rCT4gdXNlcjpiaW46cnd4CSNlZmZlY3RpdmU6ci14Ci0gCT4gZ3JvdXA6OnIteAotIAk+IGdyb3VwOmRhZW1vbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBncm91cDp1c2VyczpyLXgKLSAJPiBtYXNrOjpyLXgKLSAJPiBvdGhlcjo6LS0tCi0gCT4gZGVmYXVsdDp1c2VyOjpyd3gKLS0JPiBkZWZhdWx0OnVzZXI6YmluOnJ3eAkjZWZmZWN0aXZlOnIteAotIAk+IGRlZmF1bHQ6dXNlcjpkYWVtb246ci14Ci0rCT4gZGVmYXVsdDp1c2VyOmJpbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBkZWZhdWx0Omdyb3VwOjpyLXgKLSAJPiBkZWZhdWx0Om1hc2s6OnIteAotIAk+IGRlZmF1bHQ6b3RoZXI6Oi0tLQotQEAgLTI4NywxNiArMjg3LDE2IEBAIERvZXMgbWFzayBtYW5pcHVsYXRpb24gd29yaz8KLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZC9kCi0gCT4gdXNlcjo6cnd4Ci0tCT4gdXNlcjpiaW46ci14Ci0gCT4gdXNlcjpkYWVtb246ci14Ci0rCT4gdXNlcjpiaW46ci14Ci0gCT4gZ3JvdXA6OnIteAotIAk+IGdyb3VwOmRhZW1vbjpyLXgKLSAJPiBncm91cDp1c2VyczpyLXgKLSAJPiBtYXNrOjpyLXgKLSAJPiBvdGhlcjo6LS0tCi0gCT4gZGVmYXVsdDp1c2VyOjpyd3gKLS0JPiBkZWZhdWx0OnVzZXI6YmluOnJ3eAkjZWZmZWN0aXZlOnIteAotIAk+IGRlZmF1bHQ6dXNlcjpkYWVtb246ci14Ci0rCT4gZGVmYXVsdDp1c2VyOmJpbjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBkZWZhdWx0Omdyb3VwOjpyLXgKLSAJPiBkZWZhdWx0Om1hc2s6OnIteAotIAk+IGRlZmF1bHQ6b3RoZXI6Oi0tLQotQEAgLTMwOCwxNiArMzA4LDE2IEBAIERvZXMgbWFzayBtYW5pcHVsYXRpb24gd29yaz8KLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZC9kCi0gCT4gdXNlcjo6cnd4Ci0tCT4gdXNlcjpiaW46ci14Ci0gCT4gdXNlcjpkYWVtb246ci14Ci0rCT4gdXNlcjpiaW46ci14Ci0gCT4gZ3JvdXA6OnIteAotIAk+IGdyb3VwOmRhZW1vbjpyLXgKLSAJPiBncm91cDp1c2VyczpyLXgKLSAJPiBtYXNrOjpyLXgKLSAJPiBvdGhlcjo6LS0tCi0gCT4gZGVmYXVsdDp1c2VyOjpyd3gKLS0JPiBkZWZhdWx0OnVzZXI6YmluOnJ3eAotIAk+IGRlZmF1bHQ6dXNlcjpkYWVtb246ci14Ci0rCT4gZGVmYXVsdDp1c2VyOmJpbjpyd3gKLSAJPiBkZWZhdWx0Omdyb3VwOjpyLXgKLSAJPiBkZWZhdWx0Om1hc2s6OnJ3eAotIAk+IGRlZmF1bHQ6b3RoZXI6Oi0tLQotQEAgLTMzMyw4ICszMzMsOCBAQCBSZW1vdmUgdGhlIGRlZmF1bHQgQUNMCi0gCi0gCSQgZ2V0ZmFjbCAtLW9taXQtaGVhZGVyIGQKLSAJPiB1c2VyOjpyd3gKLS0JPiB1c2VyOmJpbjpyd3gKLSAJPiB1c2VyOmRhZW1vbjpydy0KLSsJPiB1c2VyOmJpbjpyd3gKLSAJPiBncm91cDo6ci14Ci0gCT4gbWFzazo6cnd4Ci0gCT4gb3RoZXI6Oi0tLQotQEAgLTM3MywxNCArMzczLDE0IEBAIE5vdywgY2htb2Qgc2hvdWxkIGNoYW5nZSB0aGUgZ3JvdXBfb2JqIGVudHJ5Ci0gCi0gCSQgZ2V0ZmFjbCAtLW9taXQtaGVhZGVyIGQKLSAJPiB1c2VyOjpyd3gKLS0JPiB1c2VyOmJpbjpyLXgKLSAJPiB1c2VyOmRhZW1vbjpyd3gKLSsJPiB1c2VyOmJpbjpyLXgKLSAJPiBncm91cDo6cnd4Ci0gCT4gbWFzazo6cnd4Ci0gCT4gb3RoZXI6OnIteAotIAk+IGRlZmF1bHQ6dXNlcjo6cnd4Ci0tCT4gZGVmYXVsdDp1c2VyOmJpbjpyLXgKLSAJPiBkZWZhdWx0OnVzZXI6ZGFlbW9uOnJ3eAotKwk+IGRlZmF1bHQ6dXNlcjpiaW46ci14Ci0gCT4gZGVmYXVsdDpncm91cDo6cnd4Ci0gCT4gZGVmYXVsdDptYXNrOjpyd3gKLSAJPiBkZWZhdWx0Om90aGVyOjpyLXgKLUBAIC0zOTIsMTQgKzM5MiwxNCBAQCBOb3csIGNobW9kIHNob3VsZCBjaGFuZ2UgdGhlIGdyb3VwX29iaiBlbnRyeQotIAotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBkCi0gCT4gdXNlcjo6cnd4Ci0tCT4gdXNlcjpiaW46ci14Ci0gCT4gdXNlcjpkYWVtb246cnd4CSNlZmZlY3RpdmU6ci14Ci0rCT4gdXNlcjpiaW46ci14Ci0gCT4gZ3JvdXA6OnJ3eAkjZWZmZWN0aXZlOnIteAotIAk+IG1hc2s6OnIteAotIAk+IG90aGVyOjotLS0KLSAJPiBkZWZhdWx0OnVzZXI6OnJ3eAotLQk+IGRlZmF1bHQ6dXNlcjpiaW46ci14Ci0gCT4gZGVmYXVsdDp1c2VyOmRhZW1vbjpyd3gKLSsJPiBkZWZhdWx0OnVzZXI6YmluOnIteAotIAk+IGRlZmF1bHQ6Z3JvdXA6OnJ3eAotIAk+IGRlZmF1bHQ6bWFzazo6cnd4Ci0gCT4gZGVmYXVsdDpvdGhlcjo6ci14Ci1AQCAtNDExLDE0ICs0MTEsMTQgQEAgTm93LCBjaG1vZCBzaG91bGQgY2hhbmdlIHRoZSBncm91cF9vYmogZW50cnkKLSAKLSAJJCBnZXRmYWNsIC0tb21pdC1oZWFkZXIgZAotIAk+IHVzZXI6OnJ3eAotLQk+IHVzZXI6YmluOnIteAotIAk+IHVzZXI6ZGFlbW9uOnJ3eAkjZWZmZWN0aXZlOnIteAotKwk+IHVzZXI6YmluOnIteAotIAk+IGdyb3VwOjpyd3gJI2VmZmVjdGl2ZTpyLXgKLSAJPiBtYXNrOjpyLXgKLSAJPiBvdGhlcjo6LS0tCi0gCT4gZGVmYXVsdDp1c2VyOjpyd3gKLS0JPiBkZWZhdWx0OnVzZXI6YmluOnIteAotIAk+IGRlZmF1bHQ6dXNlcjpkYWVtb246cnd4Ci0rCT4gZGVmYXVsdDp1c2VyOmJpbjpyLXgKLSAJPiBkZWZhdWx0Omdyb3VwOjpyd3gKLSAJPiBkZWZhdWx0Om1hc2s6OnJ3eAotIAk+IGRlZmF1bHQ6b3RoZXI6OnIteAotLS0gCi0xLjcuOS41Ci0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvY29uZmlndXJlLmFjIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC9jb25maWd1cmUuYWMKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDdhZjJlOGQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC9jb25maWd1cmUuYWMKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi0jIENvcHlyaWdodCAoQykgMjAwOSAgQW5kcmVhcyBHcnVlbmJhY2hlciA8YWdydWVuQHN1c2UuZGU+Ci0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBmcmVlIHNvZnR3YXJlOiB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IgbW9kaWZ5IGl0Ci0jIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0jIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0jCi0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotIyBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0jCi0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotIwotQUNfSU5JVChpbmNsdWRlL2FjbC5oKQotQUNfQ09ORklHX0FVWF9ESVIoWy5dKQotQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQotQUNfQ09ORklHX0hFQURFUihpbmNsdWRlL2NvbmZpZy5oKQotQUNfUFJFRklYX0RFRkFVTFQoL3VzcikKLQotQUNfUFJPR19MSUJUT09MCi0KLUFDX0FSR19FTkFCTEUoc2hhcmVkLAotWyAtLWVuYWJsZS1zaGFyZWQ9W3llcy9ub10gRW5hYmxlIHVzZSBvZiBzaGFyZWQgbGlicmFyaWVzIFtkZWZhdWx0PXllc11dLCwKLQllbmFibGVfc2hhcmVkPXllcykKLUFDX1NVQlNUKGVuYWJsZV9zaGFyZWQpCi0KLUFDX0FSR19FTkFCTEUoZ2V0dGV4dCwKLVsgLS1lbmFibGUtZ2V0dGV4dD1beWVzL25vXSBFbmFibGUgYWx0ZXJuYXRlIGxhbmd1YWdlIHN1cHBvcnQgW2RlZmF1bHQ9eWVzXV0sLAotCWVuYWJsZV9nZXR0ZXh0PXllcykKLUFDX1NVQlNUKGVuYWJsZV9nZXR0ZXh0KQotCi1BQ19BUkdfRU5BQkxFKGxpYjY0LAotWyAtLWVuYWJsZS1saWI2ND1beWVzL25vXSBFbmFibGUgbGliNjQgc3VwcG9ydCBbZGVmYXVsdD1ub11dLCwKLQllbmFibGVfbGliNjQ9bm8pCi1BQ19TVUJTVChlbmFibGVfbGliNjQpCi0KLUFDX1BBQ0tBR0VfR0xPQkFMUyhhY2wpCi1BQ19QQUNLQUdFX1VUSUxJVElFUyhhY2wpCi1BQ19QQUNLQUdFX05FRURfQVRUUl9YQVRUUl9ICi1BQ19QQUNLQUdFX05FRURfQVRUUl9FUlJPUl9ICi1BQ19NVUxUSUxJQigkZW5hYmxlX2xpYjY0KQotQUNfUEFDS0FHRV9ORUVEX0dFVFhBVFRSX0xJQkFUVFIKLUFDX01BTlVBTF9GT1JNQVQKLQotQUNfRlVOQ19HQ0NfVklTSUJJTElUWQotCi1BQ19PVVRQVVQoaW5jbHVkZS9idWlsZGRlZnMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3J1bi1wdGVzdCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvcnVuLXB0ZXN0CmluZGV4IGE1Njk0NmQuLjQzMTI4MjMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvcnVuLXB0ZXN0CisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvcnVuLXB0ZXN0CkBAIC00LDYxICs0LDcgQEAKIAogI3VtYXNrIDA3NwogCi1FWFQzX0lNQUdFPWV4dDMuaW1nCi1FWFQzX01PVU5UX1BPSU5UPS9tbnQvZXh0MworbWtkaXIgLXAgL3RtcC9hY2wtcHRlc3QvdGVzdAorY3AgdGVzdC90ZXN0LiogL3RtcC9hY2wtcHRlc3QvdGVzdAogCi10cmFwICdybSAtZiAke0VYVDNfSU1BR0V9JyBFWElUCi0KLWRkIGlmPS9kZXYvemVybyBvZj0ke0VYVDNfSU1BR0V9IGJzPTFNIGNvdW50PTEKLWlmIFsgIiQ/IiAtZXEgMCBdOyB0aGVuCi0JZWNobyAiUEFTUzogZHVtcCBleHQzLmltZyIKLWVsc2UKLQllY2hvICJGQUlMOiBkdW1wIGV4dDMuaW1nIgotCWV4aXQgMQotZmkKLQotbWtmcy5leHQzIC1GICR7RVhUM19JTUFHRX0KLWlmIFsgIiQ/IiAtZXEgMCBdOyB0aGVuCi0JZWNobyAiUEFTUzogbWtmcy5leHQzIC1GIGV4dDMuaW1nIgotZWxzZQotCWVjaG8gIkZBSUw6IG1rZnMuZXh0MyAtRiBleHQzLmltZyIKLQlleGl0IDEKLWZpCi0KLWlmIFsgLWQgJEVYVDNfTU9VTlRfUE9JTlQgXTsgdGhlbgotCWVjaG8gIm1vdW50IHBvaW50IGV4aXN0IgotZWxzZQotCW1rZGlyIC1wICRFWFQzX01PVU5UX1BPSU5UCi1maQotCi0KLW1vdW50IC1vIGxvb3AscncsYWNsICAke0VYVDNfSU1BR0V9ICRFWFQzX01PVU5UX1BPSU5UCi1pZiBbICIkPyIgLWVxIDAgXTsgdGhlbgotCWVjaG8gIlBBU1M6IG1vdW50IGV4dDMuaW1nIgotZWxzZQotCWVjaG8gIkZBSUw6IG1vdW50IGV4dDMuaW1nIgotCWV4aXQgMQotZmkKLQotY3AgLXJmIC4vdGVzdC8gJEVYVDNfTU9VTlRfUE9JTlQKLQotY2QgJEVYVDNfTU9VTlRfUE9JTlQvdGVzdC8KLQotaWYJc2VkIC1lICdzIV5iaW46eDoyOiQhYmluOng6MjpkYWVtb24hJyA8IC9ldGMvZ3JvdXAgPiBndG1wCi10aGVuCWlmCWNwIC9ldGMvZ3JvdXAgZ3JvdXAub3JpZzsKLQl0aGVuCWNwIGd0bXAgL2V0Yy9ncm91cAotCQltYWtlICAtayB0ZXN0cyByb290LXRlc3RzIHwgc2VkIFwKLQkJCS1lICdzfF5cWy4qXF0gXCguKlwpIC0tIG9rJHxQQVNTOiBcMXwnIFwKLQkgIAkJLWUgJ3N8XlxbLipcXSBcKC4qXCkgLS0gZmFpbGVkfEZBSUw6IFwxfCcKLQkJY3AgZ3JvdXAub3JpZyAvZXRjL2dyb3VwCi0JZWxzZQllY2hvICJGQUlMOiBjb3VsZG4ndCBzYXZlIG9yaWdpbmFsIGdyb3VwIGZpbGUuIgotCQlleGl0IDEKLQlmaQotZWxzZQllY2hvICJGQUlMOiBjb3VsZG4ndCBjcmVhdGUgbW9kaWZpZWQgZ3JvdXAgZmlsZS4iCi0JZXhpdCAxCi1maQotCi1jZCAtCi11bW91bnQgJEVYVDNfTU9VTlRfUE9JTlQKLXJtIC1yZiAkRVhUM19NT1VOVF9QT0lOVAotcm0gJEVYVDNfSU1BR0UKK21ha2UgdGVzdC1zdWl0ZS5sb2cKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvdGVzdC1maXgtZGlyZWN0b3J5LXBlcm1pc3Npb25zLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1kaXJlY3RvcnktcGVybWlzc2lvbnMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU2NDk5MGEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1kaXJlY3RvcnktcGVybWlzc2lvbnMucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1Gcm9tIDMxMTU4OWZlZGYxOTYxNjgzODJkOGYwZGIzMDNhYjMyOGJjZjlkODMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBQZXRlciBTZWViYWNoIDxwZXRlci5zZWViYWNoQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDExIE1heSAyMDE2IDE1OjE2OjA2IC0wNTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGFjbC5pbmMsIHJ1bi1wdGVzdDogaW1wcm92ZSBwdGVzdCBmdW5jdGlvbmFsaXR5IG9uIGxpbWl0ZWQKLQotY29tbWl0IGM0NWJhZTg0ODE3YTcwZmVmNmMyYjY2MWEwN2E0OTJhMGQyM2FlODUKLQotICAgIEZpeCBwZXJtaXNzaW9ucyBvbiB0ZW1wb3JhcnkgZGlyZWN0b3J5Ci0KLSAgICBUaGUgdGVtcG9yYXJ5IGRpcmVjdG9yeSdzIHBlcm1pc3Npb25zIGhhdmUgdG8gYWxsb3cgb3RoZXIgdXNlcnMgdG8KLSAgICB2aWV3IHRoZSBkaXJlY3RvcnkuIEEgZGVmYXVsdCB1bWFzayBvZiAwMjIgaXMgY29tbW9uLCBidXQgbm90IG1hbmRhdG9yeSwKLSAgICBhbmQgc2VjdXJlIHN5c3RlbXMgbWF5IGhhdmUgbW9yZSByZXN0cmljdGl2ZSBkZWZhdWx0cy4KLQotICAgIFNpZ25lZC1vZmYtYnk6IFBldGVyIFNlZWJhY2ggPHBldGVyLnNlZWJhY2hAd2luZHJpdmVyLmNvbT4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydCBbIGh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2FjbC5naXQvY29tbWl0Lz9pZD1jNjc3MmE5NTg4MDBkZTA2NDQ4MjYzNGY3N2MyMGEwZmFhZmM1YWY2IF0KLQotU2lnbmVkLW9mZi1ieTogRGVuZ2tlIER1IDxkZW5na2UuZHVAd2luZHJpdmVyLmNvbT4KLS0tLQotIHRlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0IHwgMSArCi0gMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspCi0KLWRpZmYgLS1naXQgYS90ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdCBiL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0Ci1pbmRleCA0MjYxNWY1Li4wOThiNTJhIDEwMDY0NAotLS0tIGEvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKLSsrKyBiL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0Ci1AQCAtMTYsNiArMTYsNyBAQCBDcnkgaW1tZWRpYXRlbHkgaWYgd2UgYXJlIG5vdCBydW5uaW5nIGFzIHJvb3QuCi0gRmlyc3QsIHNldCB1cCBhIHRlbXBvcmFyeSBkaXJlY3RvcnkgYW5kIGNyZWF0ZSBhIHJlZ3VsYXIgZmlsZSB3aXRoCi0gZGVmaW5lZCBwZXJtaXNzaW9ucy4KLSAKLSsJJCB1bWFzayAwMjIKLSAJJCBta2RpciBkCi0gCSQgY2QgZAotIAkkIHVtYXNrIDAyNwotLS0gCi0yLjguMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4LWluc3VmZmljaWVudC1xdW90aW5nLW9mLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeC1pbnN1ZmZpY2llbnQtcXVvdGluZy1vZi5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjM5MjQ2NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYWNsL3Rlc3QtZml4LWluc3VmZmljaWVudC1xdW90aW5nLW9mLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMTAwICswLDAgQEAKLUZyb20gZTk4Y2U4YWNmODRkMTJlYTY3YTNhYzc2YmY2M2M2ZDg3ZDlhZjg2ZCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEthbWlsIER1ZGthIDxrZHVka2FAcmVkaGF0LmNvbT4KLURhdGU6IE1vbiwgMjAgTWF5IDIwMTMgMTY6Mzg6MDYgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gdGVzdDogZml4IGluc3VmZmljaWVudCBxdW90aW5nIG9mICdcJwotCi1UaGlzIGlzIGEgZm9sbG93LXVwIHRvIDdmMmM5MWI4MzY5MjQyYThkYmMyYjMwNGE1YjcxYjJhODVmNWI4NTUsIHdoaWNoCi1jYXVzZWQgc2JpdHMtcmVzdG9yZS50ZXN0IHRvIGZhaWwgaW4gdGhlIGZvbGxvd2luZyB3YXkgaW4gY2FzZSBTRUxpbnV4Ci13YXMgZGlzYWJsZWQ6Ci0KLSoqKiBzYml0cy1yZXN0b3JlLnRlc3QgKioqCi1bM10gJCB1bWFzayAwMjIgLS0gb2sKLVs0XSAkIG1rZGlyIGQgLS0gb2sKLVs1XSAkIHRvdWNoIGQvZyAtLSBvawotWzZdICQgdG91Y2ggZC91IC0tIG9rCi1bN10gJCBjaG1vZCB1K3MgZC91IC0tIG9rCi1bOF0gJCBjaG1vZCBnK3MgZC9nIC0tIG9rCi1bOV0gJCBjaG1vZCArdCBkIC0tIG9rCi1bMTBdICQgZ2V0ZmFjbCAtUiBkID4gZC5hY2wgLS0gb2sKLVsxMV0gJCBybSAtUiBkIC0tIG9rCi1bMTJdICQgbWtkaXIgZCAtLSBvawotWzEzXSAkIHRvdWNoIGQvZyAtLSBvawotWzE0XSAkIHRvdWNoIGQvdSAtLSBvawotWzE1XSAkIHNldGZhY2wgLS1yZXN0b3JlIGQuYWNsIC0tIG9rCi1bMTZdICQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzLy4kLy9nJyAtLSBmYWlsZWQKLWRyd3hyLXhyLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gZHJ3eHIteHItdAotWzE4XSAkIGxzIC1kbCBkL3UgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzLy4kLy9nJyAtLSBmYWlsZWQKLS1yd1NyLS1yLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gLXJ3U3ItLXItLQotWzIwXSAkIGxzIC1kbCBkL2cgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzLy4kLy9nJyAtLSBmYWlsZWQKLS1ydy1yLVNyLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIT0gLXJ3LXItU3ItLQotWzIyXSAkIHJtIC1SZiBkIC0tIG9rCi0xNyBjb21tYW5kcyAoMTQgcGFzc2VkLCAzIGZhaWxlZCkKLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotaHR0cDovL2dpdC5zYXZhbm5haC5nbnUub3JnL2NnaXQvYWNsLmdpdC9jb21taXQvP2lkPWU5OGNlOGFjZjg0ZDEyZWE2N2EzYWM3NmJmNjNjNmQ4N2Q5YWY4NmQKLQotU2lnbmVkLW9mZi1ieTogS2FtaWwgRHVka2EgPGtkdWRrYUByZWRoYXQuY29tPgotU2lnbmVkLW9mZi1ieTogSGUgWmhlIDx6aGUuaGVAd2luZHJpdmVyLmNvbT4KLQotSW5kZXg6IGFjbC0yLjIuNTIvdGVzdC9jcC50ZXN0Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYWNsLTIuMi41Mi5vcmlnL3Rlc3QvY3AudGVzdAotKysrIGFjbC0yLjIuNTIvdGVzdC9jcC50ZXN0Ci1AQCAtOSw3ICs5LDcgQEAgVGhlIGNwIHV0aWxpdHkgc2hvdWxkIG9ubHkgY29weSBBQ0xzIGlmCi0gCT4gLXJ3LXJ3LXItLSsKLSAJCi0gCSQgY3AgZiBnCi0tCSQgbHMgLWwgZyB8IGF3ayAtLSAneyBwcmludCAkMSB9JyB8IHNlZCAncy9cLiQvL2cnCi0rCSQgbHMgLWwgZyB8IGF3ayAtLSAneyBwcmludCAkMSB9JyB8IHNlZCAncy9cXC4kLy9nJwotIAk+IC1ydy1yLS1yLS0KLSAJCi0gCSQgcm0gZwotSW5kZXg6IGFjbC0yLjIuNTIvdGVzdC9taXNjLnRlc3QKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhY2wtMi4yLjUyLm9yaWcvdGVzdC9taXNjLnRlc3QKLSsrKyBhY2wtMi4yLjUyL3Rlc3QvbWlzYy50ZXN0Ci1AQCAtMjU0LDcgKzI1NCw3IEBAIEFkZCBzb21lIHVzZXJzIGFuZCBncm91cHMKLSBTeW1saW5rIGluIGRpcmVjdG9yeSB3aXRoIGRlZmF1bHQgQUNMPwotIAkgCi0gCSQgbG4gLXMgZCBkL2wKLS0JJCBscyAtZGwgZC9sIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cLiQvL2cnCi0rCSQgbHMgLWRsIGQvbCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXFwuJC8vZycKLSAJPiBscnd4cnd4cnd4Ci0gCi0gCSQgbHMgLWRsIC1MIGQvbCB8IGF3ayAne3ByaW50ICQxfScKLUBAIC0zNDMsNyArMzQzLDcgQEAgUmVtb3ZlIHRoZSBkZWZhdWx0IEFDTAotIFJlc2V0IHRvIGJhc2UgZW50cmllcwotIAkgCi0gCSQgc2V0ZmFjbCAtYiBkCi0tCSQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1wuJC8vZycKLSsJJCBscyAtZGwgZCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXFwuJC8vZycKLSAJPiBkcnd4ci14LS0tCi0gCi0gCSQgZ2V0ZmFjbCAtLW9taXQtaGVhZGVyIGQKLUBAIC0zNTUsNyArMzU1LDcgQEAgUmVzZXQgdG8gYmFzZSBlbnRyaWVzCi0gTm93LCBjaG1vZCBzaG91bGQgY2hhbmdlIHRoZSBncm91cF9vYmogZW50cnkKLSAJIAotIAkkIGNobW9kIDc3NSBkCi0tCSQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1wuJC8vZycKLSsJJCBscyAtZGwgZCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXFwuJC8vZycKLSAJPiBkcnd4cnd4ci14Ci0gCQotIAkkIGdldGZhY2wgLS1vbWl0LWhlYWRlciBkCi1JbmRleDogYWNsLTIuMi41Mi90ZXN0L3NiaXRzLXJlc3RvcmUudGVzdAotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGFjbC0yLjIuNTIub3JpZy90ZXN0L3NiaXRzLXJlc3RvcmUudGVzdAotKysrIGFjbC0yLjIuNTIvdGVzdC9zYml0cy1yZXN0b3JlLnRlc3QKLUBAIC0xMywxMCArMTMsMTAgQEAgRW5zdXJlIHNldHRpbmcgb2YgU1VJRC9TR0lEL3N0aWNreSB2aWEgLQotIAkkIHRvdWNoIGQvZwotIAkkIHRvdWNoIGQvdQotIAkkIHNldGZhY2wgLS1yZXN0b3JlIGQuYWNsCi0tCSQgbHMgLWRsIGQgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1wuJC8vZycKLSsJJCBscyAtZGwgZCB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXFwuJC8vZycKLSAJPiBkcnd4ci14ci10Ci0tCSQgbHMgLWRsIGQvdSB8IGF3ayAne3ByaW50ICQxfScgfCBzZWQgJ3MvXC4kLy9nJwotKwkkIGxzIC1kbCBkL3UgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1xcLiQvL2cnCi0gCT4gLXJ3U3ItLXItLQotLQkkIGxzIC1kbCBkL2cgfCBhd2sgJ3twcmludCAkMX0nIHwgc2VkICdzL1wuJC8vZycKLSsJJCBscyAtZGwgZC9nIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cXC4kLy9nJwotIAk+IC1ydy1yLVNyLS0KLSAJJCBybSAtUmYgZApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeHVwcy1vbi1TRUxpbnV4LW1hY2hpbmVzLWZvci1yb290LXRlc3RjYXNlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2wvdGVzdC1maXh1cHMtb24tU0VMaW51eC1tYWNoaW5lcy1mb3Itcm9vdC10ZXN0Y2FzZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDhjYzExYTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbC90ZXN0LWZpeHVwcy1vbi1TRUxpbnV4LW1hY2hpbmVzLWZvci1yb290LXRlc3RjYXNlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDg0ICswLDAgQEAKLUZyb20gZDJmNDllZTZmZTQ4NTBiOGRkYTViMDg2NzZiMzYyMDFkM2M0MzcxMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci1EYXRlOiBXZWQsIDIgTWFyIDIwMTYgMTU6NDY6NTcgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gdGVzdDogZml4dXBzIG9uIFNFTGludXggbWFjaGluZXMgZm9yIHJvb3QgdGVzdGNhc2VzCi0KLWxzIGFkZHMgYSAnLicgYXQgdGhlIGVuZCBvZiB0aGUgcGVybWlzc2lvbiBmaWVsZCBsaXN0IG9uIFNFTGludXgKLW1hY2hpbmVzLCBmaWx0ZXIgdGhpcyBvdXQgc28gcm9vdCB0ZXN0cyB3b3JrIG9uIFNFTGludXggbWFjaGluZXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQKLWh0dHA6Ly9naXQuc2F2YW5uYWguZ251Lm9yZy9jZ2l0L2FjbC5naXQvY29tbWl0Lz9pZD0yNmE4N2QzNmY4MGQ1ZTk4YmNjYjU4Nzg4MzRkOWU2OWRhZGZlM2U5Ci0KLVNpZ25lZC1vZmYtYnk6IEhlIFpoZSA8emhlLmhlQHdpbmRyaXZlci5jb20+Ci0tLS0KLSB0ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdCB8IDggKysrKy0tLS0KLSB0ZXN0L3Jvb3QvcmVzdG9yZS50ZXN0ICAgICB8IDIgKy0KLSB0ZXN0L3Jvb3Qvc2V0ZmFjbC50ZXN0ICAgICB8IDIgKy0KLSAzIGZpbGVzIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL3Rlc3Qvcm9vdC9wZXJtaXNzaW9ucy50ZXN0IGIvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKLWluZGV4IDliOWUzZGUuLjY2NTMzOWEgMTAwNjQ0Ci0tLS0gYS90ZXN0L3Jvb3QvcGVybWlzc2lvbnMudGVzdAotKysrIGIvdGVzdC9yb290L3Blcm1pc3Npb25zLnRlc3QKLUBAIC0xOSw3ICsxOSw3IEBAIGRlZmluZWQgcGVybWlzc2lvbnMuCi0gCSQgY2QgZAotIAkkIHVtYXNrIDAyNwotIAkkIHRvdWNoIGYKLS0JJCBscyAtbCBmIHwgYXdrIC0tICd7IHByaW50ICQxLCAkMywgJDQgfScKLSsJJCBscyAtbCBmIHwgYXdrIC0tICd7IHByaW50ICQxLCAkMywgJDQgfScgfCBzZWQgJ3MvXFwuLy9nJwotIAk+IC1ydy1yLS0tLS0gcm9vdCByb290Ci0KLQotQEAgLTM5LDcgKzM5LDcgQEAgTm93LCBjaGFuZ2UgdGhlIG93bmVyc2hpcCBvZiB0aGUgZmlsZSB0byBiaW46YmluIGFuZCB2ZXJpZnkgdGhhdCB0aGlzCi0gZ2l2ZXMgdXNlciBiaW4gd3JpdGUgYWNjZXNzLgotCi0gCSQgY2hvd24gYmluOmJpbiBmCi0tCSQgbHMgLWwgZiB8IGF3ayAtLSAneyBwcmludCAkMSwgJDMsICQ0IH0nCi0rCSQgbHMgLWwgZiB8IGF3ayAtLSAneyBwcmludCAkMSwgJDMsICQ0IH0nIHwgc2VkICdzL1xcLi8vZycKLSAJPiAtcnctci0tLS0tIGJpbiBiaW4KLSAJJCBzdSBiaW4KLSAJJCBlY2hvIGJpbiA+PiBmCi1AQCAtMjU2LDEyICsyNTYsMTIgQEAgZGlyZWN0b3JpZXMgaWYgdGhlIGZpbGUgaGFzIGFuIEFDTCBhbmQgb25seSBDQVBfRk9XTkVSIHdvdWxkIGdyYW50IHRoZW0uCi0gCSQgbWtkaXIgLW0gNjAwIHgKLSAJJCBjaG93biBkYWVtb246ZGFlbW9uIHgKLSAJJCBlY2hvIGogPiB4L2oKLS0JJCBscyAtbCB4L2ogfCBhd2sgLS0gJ3sgcHJpbnQgJDEsICQzLCAkNCB9JwotKwkkIGxzIC1sIHgvaiB8IGF3ayAtLSAneyBwcmludCAkMSwgJDMsICQ0IH0nIHwgc2VkICdzL1xcLi8vZycKLSAJPiAtcnctci0tLS0tIHJvb3Qgcm9vdAotCi0gCSQgc2V0ZmFjbCAtbSB1OmRhZW1vbjpyIHgKLQotLQkkIGxzIC1sIHgvaiB8IGF3ayAtLSAneyBwcmludCAkMSwgJDMsICQ0IH0nCi0rCSQgbHMgLWwgeC9qIHwgYXdrIC0tICd7IHByaW50ICQxLCAkMywgJDQgfScgfCBzZWQgJ3MvXFwuLy9nJwotIAk+IC1ydy1yLS0tLS0gcm9vdCByb290Ci0gCShXaXRoIHRoZSBidWcgdGhpcyBnaXZlczogYGxzOiB4L2o6IFBlcm1pc3Npb24gZGVuaWVkJy4pCi0KLWRpZmYgLS1naXQgYS90ZXN0L3Jvb3QvcmVzdG9yZS50ZXN0IGIvdGVzdC9yb290L3Jlc3RvcmUudGVzdAotaW5kZXggNjNhOWQwMS4uYzg1MDk3YyAxMDA2NDQKLS0tLSBhL3Rlc3Qvcm9vdC9yZXN0b3JlLnRlc3QKLSsrKyBiL3Rlc3Qvcm9vdC9yZXN0b3JlLnRlc3QKLUBAIC0yMSw3ICsyMSw3IEBAIENyeSBpbW1lZGlhdGVseSBpZiB3ZSBhcmUgbm90IHJ1bm5pbmcgYXMgcm9vdC4KLSAJJCBjaG93biBiaW4gcGFzc3dkCi0gCSQgY2htb2QgdStzIHBhc3N3ZAotIAkkIHNldGZhY2wgLS1yZXN0b3JlIHBhc3N3ZC5hY2wKLS0JJCBscyAtZGwgcGFzc3dkIHwgYXdrICd7cHJpbnQgJDEgIiAiICQzICIgIiAkNH0nCi0rCSQgbHMgLWRsIHBhc3N3ZCB8IGF3ayAne3ByaW50ICQxICIgIiAkMyAiICIgJDR9JyB8IHNlZCAncy9cXC4vL2cnCi0gCT4gLXJ3c3IteHIteCByb290IHJvb3QKLQotIAkkIHJtIHBhc3N3ZCBwYXNzd2QuYWNsCi1kaWZmIC0tZ2l0IGEvdGVzdC9yb290L3NldGZhY2wudGVzdCBiL3Rlc3Qvcm9vdC9zZXRmYWNsLnRlc3QKLWluZGV4IGE0NmE5ZjQuLjdlZmJhZDcgMTAwNjQ0Ci0tLS0gYS90ZXN0L3Jvb3Qvc2V0ZmFjbC50ZXN0Ci0rKysgYi90ZXN0L3Jvb3Qvc2V0ZmFjbC50ZXN0Ci1AQCAtMTIsNyArMTIsNyBAQCBDcnkgaW1tZWRpYXRlbHkgaWYgd2UgYXJlIG5vdCBydW5uaW5nIGFzIHJvb3QuCi0gCSQgc2cgYmluCi0gCSQgdW1hc2sgMDI3Ci0gCSQgdG91Y2ggZwotLQkkIGxzIC1kbCBnIHwgYXdrICd7cHJpbnQgJDF9JwotKwkkIGxzIC1kbCBnIHwgYXdrICd7cHJpbnQgJDF9JyB8IHNlZCAncy9cXC4vL2cnCi0gCT4gLXJ3LXItLS0tLQotCi0gCSQgc2V0ZmFjbCAtbSBtOi0gZwotLS0KLTEuOS4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2xfMi4yLjUyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbF8yLjIuNTIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZiYzc3ZDguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbF8yLjIuNTIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw1MiArMCwwIEBACi1TVU1NQVJZID0gIlV0aWxpdGllcyBmb3IgbWFuYWdpbmcgUE9TSVggQWNjZXNzIENvbnRyb2wgTGlzdHMiCi1IT01FUEFHRSA9ICJodHRwOi8vc2F2YW5uYWgubm9uZ251Lm9yZy9wcm9qZWN0cy9hY2wvIgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyAmIEdQTHYyKyIKLUxJQ0VOU0VfJHtQTn0gPSAiR1BMdjIrIgotTElDRU5TRV9saWIke0JQTn0gPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jL0NPUFlJTkc7bWQ1PWM3ODFkNzBlZDJiNGQ0ODk5NWI3OTA0MDMyMTdhMjQ5IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9DT1BZSU5HLkxHUEw7bWQ1PTllOWEyMDY5MTdmOGFmMTEyZGE2MzRjZTNhYjQxNzY0IgotCi1ERVBFTkRTID0gImF0dHIiCi0KLVNSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9hY2wvJHtCUH0uc3JjLnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9jb25maWd1cmUuYWM7c3ViZGlyPSR7QlB9IFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9hY2wtZml4LXRoZS1vcmRlci1vZi1leHBlY3RlZC1vdXRwdXQtb2YtZ2V0ZmFjbC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90ZXN0LWZpeC1pbnN1ZmZpY2llbnQtcXVvdGluZy1vZi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90ZXN0LWZpeHVwcy1vbi1TRUxpbnV4LW1hY2hpbmVzLWZvci1yb290LXRlc3RjYXNlcy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly90ZXN0LWZpeC1kaXJlY3RvcnktcGVybWlzc2lvbnMucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUtbGliYWNsLXNob3VsZC1kZXBlbmQtb24taW5jbHVkZS5wYXRjaCBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJhNjE0MTUzMTI0MjZlOWMyMjEyYmQ3ZGM3OTI5YWJkYSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICIxNzkwNzRiYjA1ODBjMDZjNGI0MTM3YmU0YzVhOTJhNzAxNTgzMjc3OTY3YWNkYjU1NDYwNDNjNzg3NGUwZDIzIgotCi1yZXF1aXJlIGVhLWFjbC5pbmMKLQotIyBhdm9pZCBSUEFUSCBoYXJkY29kZSB0byBzdGFnaW5nIGRpcgotZG9fY29uZmlndXJlX2FwcGVuZCgpIHsKLQlzZWQgLWkgJHtTfS9jb25maWcuc3RhdHVzIC1lIHMsXlxcXChoYXJkY29kZV9pbnRvX2xpYnM9XFxcKS4qJCxcXDFcJ25vXCcsCi0JJHtTfS9jb25maWcuc3RhdHVzCi19Ci0KLSMgbGliZGlyIHNob3VsZCBwb2ludCB0byAubGEKLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCXNlZCAtaSAke0R9JHtsaWJkaXJ9L2xpYmFjbC5sYSAtZSBcCi0JICAgIHMsXmxpYmRpcj1cJyR7YmFzZV9saWJkaXJ9XCckLGxpYmRpcj1cJyR7bGliZGlyfVwnLAotfQotCi1pbmhlcml0IHB0ZXN0Ci0KLVBURVNUX0JVSUxEX0hPU1RfRklMRVMgPSAiYnVpbGRkZWZzIgotUFRFU1RfQlVJTERfSE9TVF9QQVRURVJOID0gIl5SUE0iCi1kb19pbnN0YWxsX3B0ZXN0KCkgewotCXRhciAtYyAtLWV4Y2x1ZGU9bmZzIHRlc3QvIHwgKCBjZCAke0R9JHtQVEVTVF9QQVRIfSAmJiB0YXIgLXhmIC0gKQotCWluc3RhbGwgLWQgJHtEfSR7UFRFU1RfUEFUSH0vaW5jbHVkZQotCWluc3RhbGwgLW0gNjQ0ICR7U30vaW5jbHVkZS9idWlsZGRlZnMgJHtTfS9pbmNsdWRlL2J1aWxkbWFjcm9zICR7U30vaW5jbHVkZS9idWlsZHJ1bGVzICR7RH0ke1BURVNUX1BBVEh9L2luY2x1ZGUvCi19Ci0KLVJERVBFTkRTXyR7UE59LXB0ZXN0ID0gImFjbCBiYXNoIGNvcmV1dGlscyBwZXJsIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgcGVybC1tb2R1bGUtZ2V0b3B0LXN0ZCBwZXJsLW1vZHVsZS1wb3NpeCBzaGFkb3ciCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2xfMi4yLjUzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2FjbF8yLjIuNTMuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWJiNTBmNwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hY2xfMi4yLjUzLmJiCkBAIC0wLDAgKzEsNzQgQEAKK1NVTU1BUlkgPSAiVXRpbGl0aWVzIGZvciBtYW5hZ2luZyBQT1NJWCBBY2Nlc3MgQ29udHJvbCBMaXN0cyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zYXZhbm5haC5ub25nbnUub3JnL3Byb2plY3RzL2FjbC8iCitTRUNUSU9OID0gImxpYnMiCisKK0xJQ0VOU0UgPSAiTEdQTHYyLjErICYgR1BMdjIrIgorTElDRU5TRV8ke1BOfSA9ICJHUEx2MisiCitMSUNFTlNFX2xpYiR7QlBOfSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvQ09QWUlORzttZDU9Yzc4MWQ3MGVkMmI0ZDQ4OTk1Yjc5MDQwMzIxN2EyNDkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0NPUFlJTkcuTEdQTDttZDU9OWU5YTIwNjkxN2Y4YWYxMTJkYTYzNGNlM2FiNDE3NjQiCisKK0RFUEVORFMgPSAiYXR0ciIKKworU1JDX1VSSSA9ICIke1NBVkFOTkFIX0dOVV9NSVJST1J9L2FjbC8ke0JQfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtZG8tbm90LWhhcmRjb2RlLXRoZS1idWlsZC1wYXRoLWludG8tYS1oZWxwZXItbC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXRlc3QtcGF0Y2gtb3V0LWZhaWxpbmctYml0cy5wYXRjaCBcCisgICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gIjAwN2FhYmYxZGJiNTUwYmNkZGRlNTJhMjQ0Y2QxMDcwIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjA2YmU5ODY1YzZmNDE4ZDg1MWZmNDQ5NGUxMjQwNjU2ODM1M2I4OTFmZmUxZjU5NmIzNDY5M2MzODdhZjI2YzciCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgcHRlc3QKKworUEFDS0FHRVMgPSsgImxpYiR7QlBOfSIKKworRklMRVNfbGliJHtCUE59ID0gIiR7bGliZGlyfS9saWIqJHtTT0xJQlN9IgorCitQVEVTVF9CVUlMRF9IT1NUX0ZJTEVTID0gImJ1aWxkZGVmcyIKK1BURVNUX0JVSUxEX0hPU1RfUEFUVEVSTiA9ICJeUlBNIgorCitkb19jb21waWxlX3B0ZXN0KCkgeworICAgICAgICBvZV9ydW5tYWtlIGxpYnRlc3Rsb29rdXAubGEKK30KKworZG9faW5zdGFsbF9wdGVzdCgpIHsKKwljcCAtcmYgJHtTfS90ZXN0LyAke0R9JHtQVEVTVF9QQVRIfQorCWNwIC1yZiAke1N9L2J1aWxkLWF1eC8gJHtEfSR7UFRFU1RfUEFUSH0KKyAgICAgICAgbWtkaXIgLXAgJHtEfSR7UFRFU1RfUEFUSH0vLmxpYnMKKwljcCAtcmYgJHtCfS8ubGlicy9saWJ0ZXN0bG9va3VwKiAke0R9JHtQVEVTVF9QQVRIfS8ubGlicworICAgICAgICBjcCAke0J9L01ha2VmaWxlICR7RH0ke1BURVNUX1BBVEh9CisKKyAgICAgICAgc2VkIC1lICdzLC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX1RBUkdFVH0sLGcnIFwKKyAgICAgICAgICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKyAgICAgICAgICAgIC1lICdzOiR7SE9TVFRPT0xTX0RJUn0vOjpnJyBcCisgICAgICAgICAgICAtZSAnczoke1JFQ0lQRV9TWVNST09UX05BVElWRX06OmcnIFwKKyAgICAgICAgICAgIC1lICdzOiR7QkFTRV9XT1JLRElSfS8ke01VTFRJTUFDSF9UQVJHRVRfU1lTfTo6ZycgXAorICAgICAgICAgICAgLWkgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKworICAgICAgICBzZWQgLWkgInN8XnNyY2RpciA9Lip8c3JjZGlyID0gXC58ZyIgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICAgICAgc2VkIC1pICJzfF5hYnNfc3JjZGlyID0uKnxhYnNfc3JjZGlyID0gXC58ZyIgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICAgICAgc2VkIC1pICJzfF5hYnNfdG9wX3NyY2RpciA9Lip8YWJzX3RvcF9zcmNkaXIgPSBcLlwufGciICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisgICAgICAgIHNlZCAtaSAic3xeTWFrZWZpbGU6Lip8TWFrZWZpbGU6fGciICR7RH0ke1BURVNUX1BBVEh9L01ha2VmaWxlCisKKyAgICAgICAgcm0gJHtEfSR7UFRFU1RfUEFUSH0vLmxpYnMvbGlidGVzdGxvb2t1cC5sYWkKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYWNsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGJhc2ggXAorICAgICAgICAgICAgICAgICAgICAgICAgY29yZXV0aWxzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZWhhbmRsZSBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1nZXRvcHQtc3RkIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLXBvc2l4IFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHNoYWRvdyBcCisgICAgICAgICAgICAgICAgICAgICAgICBtYWtlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIGdhd2sgXAorICAgICAgICAgICAgICAgICAgICAgICAgZTJmc3Byb2dzLW1rZTJmcyBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jd2QgXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci5pbmMKaW5kZXggMzUwM2Q2Ni4uZjEzYTgzYSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLmluYwpAQCAtOCwyMiArOCwxOCBAQAogTElDRU5TRV8ke1BOfSA9ICJHUEx2MisiCiBMSUNFTlNFX2xpYiR7QlBOfSA9ICJMR1BMdjIuMSsiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kb2MvQ09QWUlORzttZDU9MmQwYWExNGIzZmNlNDY5NGU0ZjYxNWUzMDE4NjMzNWYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vYXR0ci9hdHRyLmM7ZW5kbGluZT0xNzttZDU9YmUwNDAzMjYxZjA4NDdlNWY0M2VkNWIwOGQxOTU5M2MgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vdG9vbHMvYXR0ci5jO2VuZGxpbmU9MTc7bWQ1PWJlMDQwMzI2MWYwODQ3ZTVmNDNlZDViMDhkMTk1OTNjIFwKICAgICAgICAgICAgICAgICAgICAgZmlsZTovL2xpYmF0dHIvbGliYXR0ci5jO2VuZGxpbmU9MTc7bWQ1PTc5NzBmNzcwNDlmOGZhMTE5OWZmZjYyYTdhYjcyNGZiIgogCi1TUkNfVVJJID0gIiR7U0FWQU5OQUhfR05VX01JUlJPUn0vYXR0ci8ke0JQfS5zcmMudGFyLmd6IFwKK1NSQ19VUkkgPSAiJHtTQVZBTk5BSF9HTlVfTUlSUk9SfS9hdHRyLyR7QlB9LnRhci5neiBcCiAgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAogIgogCi1yZXF1aXJlIGVhLWFjbC5pbmMKK2luaGVyaXQgcHRlc3QgdXBkYXRlLWFsdGVybmF0aXZlcyBhdXRvdG9vbHMgZ2V0dGV4dAogCi0jIGxpYmRpciBzaG91bGQgcG9pbnQgdG8gLmxhCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQlzZWQgLWkgJHtEfSR7bGliZGlyfS9saWJhdHRyLmxhIC1lIFwKLQkgICAgcyxebGliZGlyPVwnJHtiYXNlX2xpYmRpcn1cJyQsbGliZGlyPVwnJHtsaWJkaXJ9XCcsCi19CitQQUNLQUdFUyA9KyAibGliJHtCUE59IgogCi1pbmhlcml0IHB0ZXN0IHVwZGF0ZS1hbHRlcm5hdGl2ZXMKK0ZJTEVTX2xpYiR7QlBOfSA9ICIke2xpYmRpcn0vbGliKiR7U09MSUJTfSIKIAogQUxURVJOQVRJVkVfUFJJT1JJVFkgPSAiMTAwIgogQUxURVJOQVRJVkVfJHtQTn0gPSAic2V0ZmF0dHIiCkBAIC0zMywxNCArMjksMzQgQEAKIFBURVNUX0JVSUxEX0hPU1RfUEFUVEVSTiA9ICJeUlBNIgogCiBkb19pbnN0YWxsX3B0ZXN0KCkgewotCXRhciAtYyAtLWV4Y2x1ZGU9ZXh0IHRlc3QvIHwgKCBjZCAke0R9JHtQVEVTVF9QQVRIfSAmJiB0YXIgLXhmIC0gKQotCW1rZGlyICR7RH0ke1BURVNUX1BBVEh9L2luY2x1ZGUKLQlmb3IgaSBpbiBidWlsZGRlZnMgYnVpbGRtYWNyb3MgYnVpbGRydWxlczsgXAotCSAgZG8gY3AgJHtTfS9pbmNsdWRlLyRpICR7RH0ke1BURVNUX1BBVEh9L2luY2x1ZGUvOyBcCi0JZG9uZQotCXNlZCAtZSAnc3w7IEBlY2hvfDsgZWNob3wnIC1pICR7RH0ke1BURVNUX1BBVEh9L3Rlc3QvTWFrZWZpbGUKKyAgICAgICAgY3AgJHtCfS9NYWtlZmlsZSAke0R9JHtQVEVTVF9QQVRIfQorICAgICAgICBzZWQgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAorICAgICAgICAgICAgLWUgJ3N8JHtERUJVR19QUkVGSVhfTUFQfXx8ZycgXAorICAgICAgICAgICAgLWUgJ3M6JHtIT1NUVE9PTFNfRElSfS86OmcnIFwKKyAgICAgICAgICAgIC1lICdzOiR7UkVDSVBFX1NZU1JPT1RfTkFUSVZFfTo6ZycgXAorICAgICAgICAgICAgLWUgJ3M6JHtCQVNFX1dPUktESVJ9LyR7TVVMVElNQUNIX1RBUkdFVF9TWVN9OjpnJyBcCisgICAgICAgICAgICAtaSAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorCisgICAgICAgIHNlZCAtaSAic3xec3JjZGlyID0uKnxzcmNkaXIgPSBcLnxnIiAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorICAgICAgICBzZWQgLWkgInN8XmFic19zcmNkaXIgPS4qfGFic19zcmNkaXIgPSBcLnxnIiAke0R9JHtQVEVTVF9QQVRIfS9NYWtlZmlsZQorICAgICAgICBzZWQgLWkgInN8XmFic190b3Bfc3JjZGlyID0uKnxhYnNfdG9wX3NyY2RpciA9IFwuXC58ZyIgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKyAgICAgICAgc2VkIC1pICJzfF5NYWtlZmlsZTouKnxNYWtlZmlsZTp8ZyIgJHtEfSR7UFRFU1RfUEFUSH0vTWFrZWZpbGUKKwljcCAtcmYgJHtTfS9idWlsZC1hdXgvICR7RH0ke1BURVNUX1BBVEh9CisJY3AgLXJmICR7U30vdGVzdC8gJHtEfSR7UFRFU1RfUEFUSH0KIH0KIAotUkRFUEVORFNfJHtQTn0tcHRlc3QgPSAiYXR0ciBjb3JldXRpbHMgcGVybC1tb2R1bGUtZmlsZWhhbmRsZSBwZXJsLW1vZHVsZS1nZXRvcHQtc3RkIHBlcmwtbW9kdWxlLXBvc2l4IG1ha2UgcGVybCIKK1JERVBFTkRTXyR7UE59LXB0ZXN0ID0gImF0dHIgXAorICAgICAgICAgICAgICAgICAgICAgICAgY29yZXV0aWxzIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwtbW9kdWxlLWZpbGVoYW5kbGUgXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZ2V0b3B0LXN0ZCBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1wb3NpeCBcCisgICAgICAgICAgICAgICAgICAgICAgICBtYWtlIFwKKyAgICAgICAgICAgICAgICAgICAgICAgIHBlcmwgXAorICAgICAgICAgICAgICAgICAgICAgICAgZ2F3ayBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1jd2QgXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1iYXNlbmFtZSBcCisgICAgICAgICAgICAgICAgICAgICAgICBwZXJsLW1vZHVsZS1maWxlLXBhdGggXAorICAgICAgICAgICAgICAgICAgICAgICAgcGVybC1tb2R1bGUtZmlsZS1zcGVjIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvMDAwMS1Vc2Utc3RkaW50LXR5cGVzLWNvbnNpc3RlbnRseS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyLzAwMDEtVXNlLXN0ZGludC10eXBlcy1jb25zaXN0ZW50bHkucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGRjZDY1MDcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvMDAwMS1Vc2Utc3RkaW50LXR5cGVzLWNvbnNpc3RlbnRseS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY5ICswLDAgQEAKLUZyb20gMzdhMjdiNmZkMDllY2IzNzA5N2I4NWU1ZGI3NGU0Zjc3YjgwZmUwYSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEZlbGl4IEphbmRhIDxmZWxpeC5qYW5kYUBwb3N0ZW8uZGU+Ci1EYXRlOiBUdWUsIDEyIEphbiAyMDE2IDIyOjIwOjMzICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIFVzZSBzdGRpbnQgdHlwZXMgY29uc2lzdGVudGx5Ci0KLS0tLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLQotIGluY2x1ZGUvYXR0cmlidXRlcy5oIHwgNiArKysrLS0KLSBtYW4vbWFuMy9hdHRyX2xpc3QuMyB8IDggKysrKy0tLS0KLSAyIGZpbGVzIGNoYW5nZWQsIDggaW5zZXJ0aW9ucygrKSwgNiBkZWxldGlvbnMoLSkKLQotSW5kZXg6IGF0dHItMi40LjQ3L2luY2x1ZGUvYXR0cmlidXRlcy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXR0ci0yLjQuNDcub3JpZy9pbmNsdWRlL2F0dHJpYnV0ZXMuaAotKysrIGF0dHItMi40LjQ3L2luY2x1ZGUvYXR0cmlidXRlcy5oCi1AQCAtMjIsNiArMjIsNyBAQAotIGV4dGVybiAiQyIgewotICNlbmRpZgotIAotKyNpbmNsdWRlIDxzdGRpbnQuaD4KLSAvKgotICAqCUFuIGFsbW9zdC1JUklYLWNvbXBhdGlibGUgZXh0ZW5kZWQgYXR0cmlidXRlcyBBUEkKLSAgKgkodGhlIElSSVggYXR0cmlidXRlICJsaXN0IiBvcGVyYXRpb24gaXMgbWlzc2luZywgYWRkZWQgQVRUUl9TRUNVUkUpLgotQEAgLTY5LDcgKzcwLDcgQEAgdHlwZWRlZiBzdHJ1Y3QgYXR0cmxpc3QgewotICAqIGFsX29mZnNldFtpXSBlbnRyeSBwb2ludHMgdG8uCi0gICovCi0gdHlwZWRlZiBzdHJ1Y3QgYXR0cmxpc3RfZW50IHsJLyogZGF0YSBmcm9tIGF0dHJfbGlzdCgpICovCi0tCXVfaW50MzJfdAlhX3ZhbHVlbGVuOwkvKiBudW1iZXIgYnl0ZXMgaW4gdmFsdWUgb2YgYXR0ciAqLwotKwl1aW50MzJfdAlhX3ZhbHVlbGVuOwkvKiBudW1iZXIgYnl0ZXMgaW4gdmFsdWUgb2YgYXR0ciAqLwotIAljaGFyCQlhX25hbWVbMV07CS8qIGF0dHIgbmFtZSAoTlVMTCB0ZXJtaW5hdGVkKSAqLwotIH0gYXR0cmxpc3RfZW50X3Q7Ci0gCi1AQCAtOTAsNyArOTEsNyBAQCB0eXBlZGVmIHN0cnVjdCBhdHRybGlzdF9lbnQgewkvKiBkYXRhIGZyCi0gICogb3BlcmF0aW9uIG9uIGEgY3Vyc29yIGlzIHRvIGJ6ZXJvKCkgaXQuCi0gICovCi0gdHlwZWRlZiBzdHJ1Y3QgYXR0cmxpc3RfY3Vyc29yIHsKLS0JdV9pbnQzMl90CW9wYXF1ZVs0XTsJLyogYW4gb3BhcXVlIGNvb2tpZSAqLwotKwl1aW50MzJfdAlvcGFxdWVbNF07CS8qIGFuIG9wYXF1ZSBjb29raWUgKi8KLSB9IGF0dHJsaXN0X2N1cnNvcl90OwotIAotIC8qCi1JbmRleDogYXR0ci0yLjQuNDcvbWFuL21hbjMvYXR0cl9saXN0LjMKLT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tLSBhdHRyLTIuNC40Ny5vcmlnL21hbi9tYW4zL2F0dHJfbGlzdC4zCi0rKysgYXR0ci0yLjQuNDcvbWFuL21hbjMvYXR0cl9saXN0LjMKLUBAIC03Miw5ICs3Miw5IEBAIFRoZSBjb250ZW50cyBvZiBhbiBcZjRhdHRybGlzdF90XGZQIHN0cnUKLSAubmYKLSAuZnQgNAotIC50YSA5biAyMm4KLS1fX2ludDMyX3QgYWxfY291bnQ7IC9cKCoqIG51bWJlciBvZiBlbnRyaWVzIGluIGF0dHJsaXN0IFwoKiovCi0tX19pbnQzMl90IGFsX21vcmU7IC9cKCoqIFQvRjogbW9yZSBhdHRycyAoZG8gc3lzY2FsbCBhZ2FpbikgXCgqKi8KLS1fX2ludDMyX3QgYWxfb2Zmc2V0WzFdOyAvXCgqKiBieXRlIG9mZnNldHMgb2YgYXR0cnMgW3Zhci1zaXplZF0gXCgqKi8KLStpbnQzMl90IGFsX2NvdW50OyAvXCgqKiBudW1iZXIgb2YgZW50cmllcyBpbiBhdHRybGlzdCBcKCoqLwotK2ludDMyX3QgYWxfbW9yZTsgL1woKiogVC9GOiBtb3JlIGF0dHJzIChkbyBzeXNjYWxsIGFnYWluKSBcKCoqLwotK2ludDMyX3QgYWxfb2Zmc2V0WzFdOyAvXCgqKiBieXRlIG9mZnNldHMgb2YgYXR0cnMgW3Zhci1zaXplZF0gXCgqKi8KLSAuZnQgMQotIC5maQotIC5SRQotQEAgLTExMyw3ICsxMTMsNyBAQCBpbmNsdWRlIHRoZSBmb2xsb3dpbmcgbWVtYmVyczoKLSAubmYKLSAuZnQgNAotIC50YSA5biAyMm4KLS11X2ludDMyX3QgYV92YWx1ZWxlbjsgL1woKiogbnVtYmVyIGJ5dGVzIGluIHZhbHVlIG9mIGF0dHIgXCgqKi8KLSt1aW50MzJfdCBhX3ZhbHVlbGVuOyAvXCgqKiBudW1iZXIgYnl0ZXMgaW4gdmFsdWUgb2YgYXR0ciBcKCoqLwotIGNoYXIgYV9uYW1lW107IC9cKCoqIGF0dHIgbmFtZSAoTlVMTCB0ZXJtaW5hdGVkKSBcKCoqLwotIC5mdCAxCi0gLmZpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci9hdHRyLU1pc3NpbmctY29uZmlndXJlLmFjLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvYXR0ci1NaXNzaW5nLWNvbmZpZ3VyZS5hYy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjBmY2MzYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci9hdHRyLU1pc3NpbmctY29uZmlndXJlLmFjLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNjMgKzAsMCBAQAotU3ViamVjdDogW1BBVENIXSBhdHRyOiBNaXNzaW5nIGNvbmZpZ3VyZS5hYwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtVcHN0cmVhbSByZWxlYXNlZCB0YXJiYWxsIG1pc3NpbmcgdGhpcyBmaWxlXQotU2lnbmVkLW9mZi1ieTogTmF0aGFuIFJvc3NpIDxuYXRoYW4ucm9zc2lAeGlsaW54LmNvbT4KLS0tLQotIGNvbmZpZ3VyZS5hYyB8ICAgNDggKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrKysrCi0gMSBmaWxlIGNoYW5nZWQsIDQ4IGluc2VydGlvbnMoKykKLSBjcmVhdGUgbW9kZSAxMDA2NDQgY29uZmlndXJlLmFjCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLW5ldyBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAwMDAwMDAwLi5iOTY2ZDBlCi0tLS0gL2Rldi9udWxsCi0rKysgYi9jb25maWd1cmUuYWMKLUBAIC0wLDAgKzEsNDggQEAKLSsjIENvcHlyaWdodCAoQykgMjAwOSAgQW5kcmVhcyBHcnVlbmJhY2hlciA8YWdydWVuQHN1c2UuZGU+Ci0rIwotKyMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLSsjIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0rIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotKyMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLSsjCi0rIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLSsjIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0rIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0rIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotKyMKLSsjIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0rIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLSsjCi0rQUNfSU5JVChpbmNsdWRlL2F0dHJpYnV0ZXMuaCkKLStBQ19DT05GSUdfQVVYX0RJUihbLl0pCi0rQUNfQ09ORklHX01BQ1JPX0RJUihbbTRdKQotK0FDX0NPTkZJR19IRUFERVIoaW5jbHVkZS9jb25maWcuaCkKLStBQ19QUkVGSVhfREVGQVVMVCgvdXNyKQotKwotK0FDX1BST0dfTElCVE9PTAotKwotK0FDX0FSR19FTkFCTEUoc2hhcmVkLAotK1sgLS1lbmFibGUtc2hhcmVkPVt5ZXMvbm9dIEVuYWJsZSB1c2Ugb2Ygc2hhcmVkIGxpYnJhcmllcyBbZGVmYXVsdD15ZXNdXSwsCi0rCWVuYWJsZV9zaGFyZWQ9eWVzKQotK0FDX1NVQlNUKGVuYWJsZV9zaGFyZWQpCi0rCi0rQUNfQVJHX0VOQUJMRShnZXR0ZXh0LAotK1sgLS1lbmFibGUtZ2V0dGV4dD1beWVzL25vXSBFbmFibGUgYWx0ZXJuYXRlIGxhbmd1YWdlIHN1cHBvcnQgW2RlZmF1bHQ9eWVzXV0sLAotKwllbmFibGVfZ2V0dGV4dD15ZXMpCi0rQUNfU1VCU1QoZW5hYmxlX2dldHRleHQpCi0rCi0rQUNfQVJHX0VOQUJMRShsaWI2NCwKLStbIC0tZW5hYmxlLWxpYjY0PVt5ZXMvbm9dIEVuYWJsZSBsaWI2NCBzdXBwb3J0IFtkZWZhdWx0PW5vXV0sLAotKwllbmFibGVfbGliNjQ9bm8pCi0rQUNfU1VCU1QoZW5hYmxlX2xpYjY0KQotKwotK0FDX1BBQ0tBR0VfR0xPQkFMUyhhdHRyKQotK0FDX1BBQ0tBR0VfVVRJTElUSUVTKGF0dHIpCi0rQUNfTUFOVUFMX0ZPUk1BVAotK0FDX01VTFRJTElCKCRlbmFibGVfbGliNjQpCi0rCi0rQUNfQ19DT05TVAotK0FDX1RZUEVfTU9ERV9UCi0rQUNfRlVOQ19BTExPQ0EKLSsKLStBQ19PVVRQVVQoaW5jbHVkZS9idWlsZGRlZnMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci9kb250LXVzZS1kZWNsLW1hY3Jvcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyL2RvbnQtdXNlLWRlY2wtbWFjcm9zLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA5ZDRiODkyLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyL2RvbnQtdXNlLWRlY2wtbWFjcm9zLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotVXNlIGV4dGVybiAiQyIgaW5zdGVhZCBvZiBfX0JFR0lOX0RFQ0wvX19FTkRfREVDTCBtYWNyb3MKLXRoZXNlIG1hY3JvcyBhcmUgZGVmaW5lZCBpbiBzeXMvY2RlZnMuaCBmb3IgZ2xpYmMgYW5kIHRoaXMgaGVhZGVyIGlzIG5vdCBhdmFpbGFibGUgb24gYWxsIGxpYmMKLQotYW55d2F5IHRoZXkgZGVmaW5lZCBsaWtlIGJlbG93Ci0KLSNpZmRlZiBfX2NwbHVzcGx1cwotIyBkZWZpbmUgX19CRUdJTl9ERUNMUyBleHRlcm4gIkMiIHsKLSMgZGVmaW5lIF9fRU5EX0RFQ0xTIH0KLSNlbHNlCi0jIGRlZmluZSBfX0JFR0lOX0RFQ0xTIC8qIGVtcHR5ICovCi0jIGRlZmluZSBfX0VORF9ERUNMUyAvKiBlbXB0eSAqLwotI2VuZGlmCi0KLV9fVEhST1cgbWFjcm8gaXMgYWxzbyBub3QgYXZhaWxhYmxlIG9uIG11c2wsIGRlZmluZWQgdGh1c2x5Ci0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1JbmRleDogYXR0ci0yLjQuNDcvaW5jbHVkZS94YXR0ci5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gYXR0ci0yLjQuNDcub3JpZy9pbmNsdWRlL3hhdHRyLmgJMjAxNC0wNC0wMiAwMDowMTozMC4yNTIwOTEyODAgLTA3MDAKLSsrKyBhdHRyLTIuNC40Ny9pbmNsdWRlL3hhdHRyLmgJMjAxNC0wNC0wMiAwMDoxMjo1Ny45ODU0MjgwOTkgLTA3MDAKLUBAIC0zMCw4ICszMCwyMCBAQAotICNkZWZpbmUgWEFUVFJfQ1JFQVRFICAweDEgICAgICAgLyogc2V0IHZhbHVlLCBmYWlsIGlmIGF0dHIgYWxyZWFkeSBleGlzdHMgKi8KLSAjZGVmaW5lIFhBVFRSX1JFUExBQ0UgMHgyICAgICAgIC8qIHNldCB2YWx1ZSwgZmFpbCBpZiBhdHRyIGRvZXMgbm90IGV4aXN0ICovCi0gCi0tCi0tX19CRUdJTl9ERUNMUwotKyNpZm5kZWYgX19USFJPVwotKyMgaWZuZGVmIF9fR05VQ19QUkVSRVEKLSsjICBkZWZpbmUgX19HTlVDX1BSRVJFUShtYWosIG1pbikgKDApCi0rIyBlbmRpZgotKyMgaWYgZGVmaW5lZCBfX2NwbHVzcGx1cyAmJiBfX0dOVUNfUFJFUkVRICgyLDgpCi0rIyAgZGVmaW5lIF9fVEhST1cgICAgICAgdGhyb3cgKCkKLSsjIGVsc2UKLSsjICBkZWZpbmUgX19USFJPVwotKyMgZW5kaWYKLSsjZW5kaWYKLSsKLSsjaWZkZWYgX19jcGx1c3BsdXMKLStleHRlcm4gIkMiIHsKLSsjZW5kaWYKLSAKLSBleHRlcm4gaW50IHNldHhhdHRyIChjb25zdCBjaGFyICpfX3BhdGgsIGNvbnN0IGNoYXIgKl9fbmFtZSwKLSAJCSAgICAgIGNvbnN0IHZvaWQgKl9fdmFsdWUsIHNpemVfdCBfX3NpemUsIGludCBfX2ZsYWdzKSBfX1RIUk9XOwotQEAgLTU4LDYgKzcwLDggQEAKLSBleHRlcm4gaW50IGxyZW1vdmV4YXR0ciAoY29uc3QgY2hhciAqX19wYXRoLCBjb25zdCBjaGFyICpfX25hbWUpIF9fVEhST1c7Ci0gZXh0ZXJuIGludCBmcmVtb3ZleGF0dHIgKGludCBfX2ZpbGVkZXMsICAgY29uc3QgY2hhciAqX19uYW1lKSBfX1RIUk9XOwotIAotLV9fRU5EX0RFQ0xTCi0rI2lmZGVmIF9fY3BsdXNwbHVzCi0rfQotKyNlbmRpZgotIAotICNlbmRpZgkvKiBfX1hBVFRSX0hfXyAqLwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHIvcnVuLXB0ZXN0Cm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmY2NDI0NGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvYXR0ci9ydW4tcHRlc3QKQEAgLTAsMCArMSwzIEBACisjIS9iaW4vc2gKKworbWFrZSB0ZXN0LXN1aXRlLmxvZwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHJfMi40LjQ3LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHJfMi40LjQ3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmYzg4YmVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40Ny5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLXJlcXVpcmUgYXR0ci5pbmMKLQotIyBjb25maWd1cmUuYWMgd2FzIG1pc3NpbmcgZnJvbSB0aGUgcmVsZWFzZSB0YXJiYWxsLiBUaGlzIHNob3VsZCBiZSBmaXhlZCBpbgotIyBmdXR1cmUgcmVsZWFzZXMgb2YgYXR0ciwgcmVtb3ZlIHRoaXMgd2hlbiB1cGRhdGluZyB0aGUgcmVjaXBlLgotU1JDX1VSSSArPSAiZmlsZTovL2F0dHItTWlzc2luZy1jb25maWd1cmUuYWMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL2RvbnQtdXNlLWRlY2wtbWFjcm9zLnBhdGNoIFwKLSAgICAgICAgICAgIGZpbGU6Ly9SZW1vdmUtdGhlLXNlY3Rpb24tMi1tYW4tcGFnZXMucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovL1JlbW92ZS10aGUtYXR0ci41LW1hbi1wYWdlLW1vdmVkLXRvLW1hbi1wYWdlcy5wYXRjaCBcCi0gICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2Utc3RkaW50LXR5cGVzLWNvbnNpc3RlbnRseS5wYXRjaCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gIjg0ZjU4ZGVjMDBiNjBmMmRjOGZkMWM5NzA5MjkxY2M3IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjI1NzcyZjY1M2FjNWIyZTNjZWViODlkZjUwZTQ2ODg4OTFlMjFmNzIzYzQ2MDYzNjU0ODk3MTY1MmFmMGE4NTkiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40OC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9hdHRyXzIuNC40OC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MzBkNGU0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2F0dHJfMi40LjQ4LmJiCkBAIC0wLDAgKzEsNiBAQAorcmVxdWlyZSBhdHRyLmluYworCitTUkNfVVJJW21kNXN1bV0gPSAiYmMxZTVjYjVjOTZkOTliMjQ4ODZmMWY1MjdkM2JiM2QiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWVhZDcyYjM1OGVjNzA5ZWQwMGJiZjdhOWVhZWYxNjU0YmFhZDkzN2MwMDFjMDQ0ZmU4Yjc0YzU3ZjUzMjRlNyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2VhLWFjbC5pbmMgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZWEtYWNsLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTMzNmZmYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZWEtYWNsLmluYworKysgL2Rldi9udWxsCkBAIC0xLDUyICswLDAgQEAKLSMgdGhpcyBidWlsZCBzeXN0ZW0gaXMgbW9zdGx5IHNoYXJlZCBieSBhdHRyIGFuZCBhY2wKLQotU1JDX1VSSSArPSAiZmlsZTovL3JlbGF0aXZlLWxpYmRpci5wYXRjaDtzdHJpcGxldmVsPTAgXAotICAgICAgICAgICAiCi0jIFRoaXMgcGF0Y2ggc2hvdWxkIGJlIGFwcGxpZWQgYWZ0ZXIgJyhhdHRyXHxhY2wpLU1pc3NpbmctY29uZmlndXJlLmFjLnBhdGNoJyAKLVNSQ19VUklfYXBwZW5kID0gIiBmaWxlOi8vMDAwMS1BZGRlZC1jb25maWd1cmUtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXN0YXRpYy1saWJyLnBhdGNoIgotCi1pbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgZ2V0dGV4dAotCi0jIFdoZW4gdXBzdHJlYW0gaXMgdXNpbmcgYXV0b21ha2UgcHJvcGVybHksIHRoaXMgY2FuIGJlIHJlbW92ZWQKLUNMRUFOQlJPS0VOID0gIjEiCi0KLSMgdGhlIHBhY2thZ2UgY29tZXMgd2l0aCBhIGN1c3RvbSBjb25maWcuaC5pbiwgaXQgY2Fubm90IGJlCi0jIG92ZXJ3cml0dGVuIGJ5IGF1dG9oZWFkZXIKLUVYVFJBX0FVVE9SRUNPTkYgKz0gIi0tZXhjbHVkZT1hdXRvaGVhZGVyIgotRVhUUkFfT0VDT05GID0gIklOU1RBTExfVVNFUj1yb290IElOU1RBTExfR1JPVVA9cm9vdCIKLUVYVFJBX09FQ09ORl9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtLWVuYWJsZS1nZXR0ZXh0PW5vIgotRVhUUkFfT0VDT05GX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiJHtAWycnLCAnIC0tZGlzYWJsZS1nZXR0ZXh0ICddWyhkLmdldFZhcignVVNFX05MUycpID09ICdubycpXX0iCi0KLUVYVFJBX09FTUFLRSA9ICJQS0dfTElCX0RJUj0ke2Jhc2VfbGliZGlyfSBQS0dfREVWTElCX0RJUj0ke2xpYmRpcn0iCi0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgaW5zdGFsbCBpbnN0YWxsLWxpYiBpbnN0YWxsLWRldiBESVNUX1JPT1Q9IiR7RH0iIFpJUD0iZ3ppcCAtbiIKLX0KLQotZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtbmF0aXZlICgpIHsKLQlpZiB0ZXN0ICIke2xpYmRpcn0iID0gIiR7YmFzZV9saWJkaXJ9IiA7IHRoZW4KLQkJcmV0dXJuCi0JZmkKLQlsaWJyZWxwYXRoPSR7QG9zLnBhdGgucmVscGF0aChkLmdldFZhcignbGliZGlyJyksIGQuZ2V0VmFyKCdiYXNlX2xpYmRpcicpKX0KLQliYXNlbGlicmVscGF0aD0ke0Bvcy5wYXRoLnJlbHBhdGgoZC5nZXRWYXIoJ2Jhc2VfbGliZGlyJyksIGQuZ2V0VmFyKCdsaWJkaXInKSl9Ci0KLQkjIFJlbW92ZSBiYWQgc3ltbGlua3MgJiBjcmVhdGUgdGhlIGNvcnJlY3Qgc3ltbGlua3MKLQlpZiB0ZXN0IC1MICR7RH0ke2xpYmRpcn0vbGliJHtCUE59LnNvIDsgdGhlbgotCQlybSAtcmYgJHtEfSR7bGliZGlyfS9saWIke0JQTn0uc28KLQkJbG4gLXNmICRiYXNlbGlicmVscGF0aC9saWIke0JQTn0uc28gJHtEfSR7bGliZGlyfS9saWIke0JQTn0uc28KLQlmaQotCWlmIHRlc3QgLUwgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYiR7QlBOfS5hIDsgdGhlbgotCQlybSAtcmYgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYiR7QlBOfS5hCi0JCWxuIC1zZiAkbGlicmVscGF0aC9saWIke0JQTn0uYSAke0R9JHtiYXNlX2xpYmRpcn0vbGliJHtCUE59LmEKLQlmaQotCWlmIHRlc3QgLUwgICR7RH0ke2Jhc2VfbGliZGlyfS9saWIke0JQTn0ubGEgOyB0aGVuCi0JCXJtIC1yZiAke0R9JHtiYXNlX2xpYmRpcn0vbGliJHtCUE59LmxhCi0JCWxuIC1zZiAkbGlicmVscGF0aC9saWIke0JQTn0ubGEgJHtEfSR7YmFzZV9saWJkaXJ9L2xpYiR7QlBOfS5sYQotCWZpCi19Ci0KLVBBQ0tBR0VTID0rICJsaWIke0JQTn0iCi0KLUZJTEVTX2xpYiR7QlBOfSA9ICIke2Jhc2VfbGliZGlyfS9saWIqJHtTT0xJQlN9IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy8wMDAxLUFkZGVkLWNvbmZpZ3VyZS1vcHRpb24tdG8tZW5hYmxlLWRpc2FibGUtc3RhdGljLWxpYnIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZmlsZXMvMDAwMS1BZGRlZC1jb25maWd1cmUtb3B0aW9uLXRvLWVuYWJsZS1kaXNhYmxlLXN0YXRpYy1saWJyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAxYzExNTlmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy8wMDAxLUFkZGVkLWNvbmZpZ3VyZS1vcHRpb24tdG8tZW5hYmxlLWRpc2FibGUtc3RhdGljLWxpYnIucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw3MCArMCwwIEBACi1Gcm9tIDAxMjU2YzYxYmExMjY0NDljNDZkZDRhYjVkNWUxNDU0ODhiOTgxZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbWFybmF0aCBWYWxsdXJpIDxhbWFybmF0aC52YWxsdXJpQGludGVsLmNvbT4KLURhdGU6IE1vbiwgMjMgSmFuIDIwMTcgMTM6MjU6MTMgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSF0gQWRkZWQgY29uZmlndXJlIG9wdGlvbiB0byBlbmFibGUvZGlzYWJsZSBzdGF0aWMgbGlicmFyeQotCi1DcmVhdGUgc3RhdGljIGxpYnJhcnkgYXJjaGl2ZSBvbmx5IGluIGNhc2Ugb2YgLS1lbmFibGUtc3RhdGljLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogQW1hcm5hdGggVmFsbHVyaSA8YW1hcm5hdGgudmFsbHVyaUBpbnRlbC5jb20+Ci0tLS0KLSBjb25maWd1cmUuYWMgICAgICAgICB8IDYgKysrKysrCi0gaW5jbHVkZS9idWlsZGRlZnMuaW4gfCAxICsKLSBpbmNsdWRlL2J1aWxkbWFjcm9zICB8IDMgKysrCi0gMyBmaWxlcyBjaGFuZ2VkLCAxMCBpbnNlcnRpb25zKCspCi0KLWRpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKLWluZGV4IGI5NjZkMGUuLmU0ODI2OGIgMTAwNjQ0Ci0tLS0gYS9jb25maWd1cmUuYWMKLSsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTI2LDYgKzI2LDEyIEBAIEFDX0FSR19FTkFCTEUoc2hhcmVkLAotIAllbmFibGVfc2hhcmVkPXllcykKLSBBQ19TVUJTVChlbmFibGVfc2hhcmVkKQotIAotK0FDX0FSR19FTkFCTEUoc3RhdGljLAotK1sgLS1lbmFibGUtc3RhdGljPVt5ZXMvbm9dIEVuYWJsZSB1c2Ugb2Ygc3RhdGljIGxpYnJhcmllcyBbZGVmYXVsdD15ZXNdXSwsCi0rCWVuYWJsZV9zdGF0aWM9eWVzKQotK0FDX1NVQlNUKGVuYWJsZV9zdGF0aWMpCi0rCi0rCi0gQUNfQVJHX0VOQUJMRShnZXR0ZXh0LAotIFsgLS1lbmFibGUtZ2V0dGV4dD1beWVzL25vXSBFbmFibGUgYWx0ZXJuYXRlIGxhbmd1YWdlIHN1cHBvcnQgW2RlZmF1bHQ9eWVzXV0sLAotIAllbmFibGVfZ2V0dGV4dD15ZXMpCi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9idWlsZGRlZnMuaW4gYi9pbmNsdWRlL2J1aWxkZGVmcy5pbgotaW5kZXggZDk5MzFkYi4uM2IzZGJkMiAxMDA2NDQKLS0tLSBhL2luY2x1ZGUvYnVpbGRkZWZzLmluCi0rKysgYi9pbmNsdWRlL2J1aWxkZGVmcy5pbgotQEAgLTcxLDYgKzcxLDcgQEAgUlBNQlVJTEQJPSBAcnBtYnVpbGRACi0gUlBNX1ZFUlNJT04JPSBAcnBtX3ZlcnNpb25ACi0gCi0gRU5BQkxFX1NIQVJFRAk9IEBlbmFibGVfc2hhcmVkQAotK0VOQUJMRV9TVEFUSUMgCT0gQGVuYWJsZV9zdGF0aWNACi0gRU5BQkxFX0dFVFRFWFQJPSBAZW5hYmxlX2dldHRleHRACi0gCi0gSEFWRV9aSVBQRURfTUFOUEFHRVMgPSBAaGF2ZV96aXBwZWRfbWFucGFnZXNACi1kaWZmIC0tZ2l0IGEvaW5jbHVkZS9idWlsZG1hY3JvcyBiL2luY2x1ZGUvYnVpbGRtYWNyb3MKLWluZGV4IDM5ZmE3ZTIuLmIwZjI1YzUgMTAwNjQ0Ci0tLS0gYS9pbmNsdWRlL2J1aWxkbWFjcm9zCi0rKysgYi9pbmNsdWRlL2J1aWxkbWFjcm9zCi1AQCAtODAsNiArODAsNyBAQCBlbmRpZgotICMgL3Vzci9saWIuCi0gaWZlcSAoJChFTkFCTEVfU0hBUkVEKSx5ZXMpCi0gSU5TVEFMTF9MVExJQl9ERVYgPSBcCi0rCXNldCAteDsgXAotIAljZCAkKFRPUERJUikvJChMSUJOQU1FKS8ubGliczsgXAotIAkuLi8kKElOU1RBTEwpIC1tIDc1NSAtZCAkKFBLR19ERVZMSUJfRElSKTsgXAotIAkuLi8kKElOU1RBTEwpIC1tIDY0NCAtVCBvbGRfbGliICQoTElCTkFNRSkubGFpICQoUEtHX0RFVkxJQl9ESVIpOyBcCi1AQCAtODgsNyArODksOSBAQCBJTlNUQUxMX0xUTElCX0RFViA9IFwKLSAJLi4vJChJTlNUQUxMKSAtVCBzb19iYXNlICQoTElCTkFNRSkubGFpICQoUEtHX0xJQl9ESVIpOyBcCi0gCWlmIHRlc3QgIngkKFBLR19ERVZMSUJfRElSKSIgIT0gIngkKFBLR19MSUJfRElSKSIgOyB0aGVuIFwKLSAJcmVsX2xpYl9wcmVmaXg9JCQoZWNobyAkKFBLR19MSUJfRElSKSB8IHNlZCAncyxcKF4vXHxcKVteL11bXi9dKiwuLixnJyk7IFwKLSsJaWYgdGVzdCAiJChFTkFCTEVfU1RBVElDKSIgPSAieWVzIiA7IHRoZW4gXAotIAkuLi8kKElOU1RBTEwpIC1TICQkcmVsX2xpYl9wcmVmaXgkKFBLR19ERVZMSUJfRElSKS8kKExJQk5BTUUpLmEgJChQS0dfTElCX0RJUikvJChMSUJOQU1FKS5hOyBcCi0rCWZpIDtcCi0gCS4uLyQoSU5TVEFMTCkgLVMgJCRyZWxfbGliX3ByZWZpeCQoUEtHX0RFVkxJQl9ESVIpLyQoTElCTkFNRSkubGEgJChQS0dfTElCX0RJUikvJChMSUJOQU1FKS5sYTsgXAotIAlyZWxfZGV2bGliX3ByZWZpeD0kJChlY2hvICQoUEtHX0RFVkxJQl9ESVIpIHwgc2VkICdzLFwoXi9cfFwpW14vXVteL10qLC4uLGcnKTsgXAotIAkuLi8kKElOU1RBTEwpIC1TICQkcmVsX2RldmxpYl9wcmVmaXgkKFBLR19MSUJfRElSKS8kKExJQk5BTUUpLnNvICQoUEtHX0RFVkxJQl9ESVIpLyQoTElCTkFNRSkuc287IFwKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtYXR0ci41LW1hbi1wYWdlLW1vdmVkLXRvLW1hbi1wYWdlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9SZW1vdmUtdGhlLWF0dHIuNS1tYW4tcGFnZS1tb3ZlZC10by1tYW4tcGFnZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1YWI4M2QuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtYXR0ci41LW1hbi1wYWdlLW1vdmVkLXRvLW1hbi1wYWdlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI0MCArMCwwIEBACi1Gcm9tIDYwNDdjODUyMmI5MTIzNWFkMWU4MzVmNDRmNWUzNjQ3MmQ5ZDQ5YjIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZWFzIEdydWVuYmFjaGVyIDxhbmRyZWFzLmdydWVuYmFjaGVyQGdtYWlsLmNvbT4KLURhdGU6IFdlZCwgMjIgQXByIDIwMTUgMTE6NDY6NTkgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAyLzJdIFJlbW92ZSB0aGUgYXR0ci41IG1hbiBwYWdlIChtb3ZlZCB0byBtYW4tcGFnZXMpCi0KLUNvbW1pdCBkY2U5YjQ0NDhjN2YyYjIyYmQyMDZjZDA2OGZiMDVjYjJmMzI1NWI5IGZyb20KLWh0dHBzOi8vZ2l0LnNhdmFubmFoLm5vbmdudS5vcmcvZ2l0L2F0dHIuZ2l0Ci0KLVRoZSBhdHRyLjUgcGFnZSBpcyBwYXJ0IG9mIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgc3lzdGVtIGNhbGwgZG9jdW1lbnRhdGlvbiwKLXdoaWNoIGhhcyBiZWVuIG1vdmVkIGludG8gdGhlIG1hbi1wYWdlcyBwYWNrYWdlLiBNb3ZlIHRoZSBhdHRyLjUgcGFnZSB0aGVyZQotYXMgd2VsbC4KLQotVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAotCi1bTUE6IHVwZGF0ZWQgdG8gYXBwbHkgZGlyZWN0bHkgdG8gdjIuNC40N10KLVNpZ25lZC1vZmYtYnk6IE1hcmsgQXNzZWxzdGluZSA8bWFyay5hc3NlbHN0aW5lQHdpbmRyaXZlci5jb20+Ci0tLS0KLSBtYW4vTWFrZWZpbGUgICAgICB8ICAgMiArLQotIG1hbi9tYW41L01ha2VmaWxlIHwgIDM1IC0tLS0tLS0tLS0tLS0KLSBtYW4vbWFuNS9hdHRyLjUgICB8IDE1MyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSAzIGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxODkgZGVsZXRpb25zKC0pCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW41L01ha2VmaWxlCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW41L2F0dHIuNQotCi1kaWZmIC0tZ2l0IGEvbWFuL01ha2VmaWxlIGIvbWFuL01ha2VmaWxlCi1pbmRleCA3NTVkYWVkLi45MzAxZjA5IDEwMDY0NAotLS0tIGEvbWFuL01ha2VmaWxlCi0rKysgYi9tYW4vTWFrZWZpbGUKLUBAIC0xOSw3ICsxOSw3IEBACi0gVE9QRElSID0gLi4KLSBpbmNsdWRlICQoVE9QRElSKS9pbmNsdWRlL2J1aWxkZGVmcwotIAotLVNVQkRJUlMgPSBtYW4xIG1hbjMgbWFuNQotK1NVQkRJUlMgPSBtYW4xIG1hbjMKLSAKLSBkZWZhdWx0IDogJChTVUJESVJTKQotIAotZGlmZiAtLWdpdCBhL21hbi9tYW41L01ha2VmaWxlIGIvbWFuL21hbjUvTWFrZWZpbGUKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggNmI3MGQzZC4uMDAwMDAwMAotLS0tIGEvbWFuL21hbjUvTWFrZWZpbGUKLSsrKyAvZGV2L251bGwKLUBAIC0xLDM1ICswLDAgQEAKLS0jCi0tIyBDb3B5cmlnaHQgKGMpIDIwMDAsIDIwMDIgU2lsaWNvbiBHcmFwaGljcywgSW5jLiAgQWxsIFJpZ2h0cyBSZXNlcnZlZC4KLS0jIENvcHlyaWdodCAoQykgMjAwOSAgQW5kcmVhcyBHcnVlbmJhY2hlciA8YWdydWVuQHN1c2UuZGU+Ci0tIwotLSMgVGhpcyBwcm9ncmFtIGlzIGZyZWUgc29mdHdhcmU6IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vciBtb2RpZnkgaXQKLS0jIHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMgcHVibGlzaGVkIGJ5Ci0tIyB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uLCBlaXRoZXIgdmVyc2lvbiAyIG9mIHRoZSBMaWNlbnNlLCBvcgotLSMgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0jCi0tIyBUaGlzIHByb2dyYW0gaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0jIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tIyBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tIyBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLSMKLS0jIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlCi0tIyBhbG9uZyB3aXRoIHRoaXMgcHJvZ3JhbS4gIElmIG5vdCwgc2VlIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0jCi0tCi0tVE9QRElSID0gLi4vLi4KLS1pbmNsdWRlICQoVE9QRElSKS9pbmNsdWRlL2J1aWxkZGVmcwotLQotLU1BTl9TRUNUSU9OCT0gNQotLQotLU1BTl9QQUdFUwk9ICQoc2hlbGwgZWNobyAqLiQoTUFOX1NFQ1RJT04pKQotLU1BTl9ERVNUCT0gJChQS0dfTUFOX0RJUikvbWFuJChNQU5fU0VDVElPTikKLS1MU1JDRklMRVMJPSAkKE1BTl9QQUdFUykKLS0KLS1kZWZhdWx0IDogJChNQU5fUEFHRVMpCi0tCi0taW5jbHVkZSAkKEJVSUxEUlVMRVMpCi0tCi0taW5zdGFsbCA6IGRlZmF1bHQKLS0JJChJTlNUQUxMKSAtbSA3NTUgLWQgJChNQU5fREVTVCkKLS0JJChJTlNUQUxMX01BTikKLS1pbnN0YWxsLWRldiBpbnN0YWxsLWxpYjoKLWRpZmYgLS1naXQgYS9tYW4vbWFuNS9hdHRyLjUgYi9tYW4vbWFuNS9hdHRyLjUKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggYTAyNzU3ZC4uMDAwMDAwMAotLS0tIGEvbWFuL21hbjUvYXR0ci41Ci0rKysgL2Rldi9udWxsCi1AQCAtMSwxNTMgKzAsMCBAQAotLS5cIiBFeHRlbmRlZCBhdHRyaWJ1dGVzIG1hbnVhbCBwYWdlCi0tLlwiCi0tLlwiIENvcHlyaWdodCAoQykgMjAwMCwgMjAwMiwgMjAwNyAgQW5kcmVhcyBHcnVlbmJhY2hlciA8YWdydWVuQHN1c2UuZGU+Ci0tLlwiIENvcHlyaWdodCAoQykgMjAwMSwgMjAwMiwgMjAwNCwgMjAwNyBTaWxpY29uIEdyYXBoaWNzLCBJbmMuCi0tLlwiIEFsbCByaWdodHMgcmVzZXJ2ZWQuCi0tLlwiCi0tLlwiIFRoaXMgaXMgZnJlZSBkb2N1bWVudGF0aW9uOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLS0uXCIgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLS0uXCIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLS0uXCIgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0tLlwiCi0tLlwiIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSdzIHJlZmVyZW5jZXMgdG8gIm9iamVjdCBjb2RlIgotLS5cIiBhbmQgImV4ZWN1dGFibGVzIiBhcmUgdG8gYmUgaW50ZXJwcmV0ZWQgYXMgdGhlIG91dHB1dCBvZiBhbnkKLS0uXCIgZG9jdW1lbnQgZm9ybWF0dGluZyBvciB0eXBlc2V0dGluZyBzeXN0ZW0sIGluY2x1ZGluZwotLS5cIiBpbnRlcm1lZGlhdGUgYW5kIHByaW50ZWQgb3V0cHV0LgotLS5cIgotLS5cIiBUaGlzIG1hbnVhbCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLS5cIiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLS5cIiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tLlwiIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tLlwiCi0tLlwiIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotLS5cIiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBtYW51YWwuICBJZiBub3QsIHNlZQotLS5cIiA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0tLlwiCi0tLlRIIEFUVFIgNQotLS5TSCBOQU1FCi0tYXR0ciAtIEV4dGVuZGVkIGF0dHJpYnV0ZXMKLS0uU0ggREVTQ1JJUFRJT04KLS1FeHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBuYW1lOnZhbHVlIHBhaXJzIGFzc29jaWF0ZWQgcGVybWFuZW50bHkgd2l0aAotLWZpbGVzIGFuZCBkaXJlY3Rvcmllcywgc2ltaWxhciB0byB0aGUgZW52aXJvbm1lbnQgc3RyaW5ncyBhc3NvY2lhdGVkCi0td2l0aCBhIHByb2Nlc3MuCi0tQW4gYXR0cmlidXRlIG1heSBiZSBkZWZpbmVkIG9yIHVuZGVmaW5lZC4KLS1JZiBpdCBpcyBkZWZpbmVkLCBpdHMgdmFsdWUgbWF5IGJlIGVtcHR5IG9yIG5vbi1lbXB0eS4KLS0uUFAKLS1FeHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBleHRlbnNpb25zIHRvIHRoZSBub3JtYWwgYXR0cmlidXRlcyB3aGljaCBhcmUKLS1hc3NvY2lhdGVkIHdpdGggYWxsIGlub2RlcyBpbiB0aGUgc3lzdGVtIChpLmUuIHRoZQotLS5CUiBzdGF0ICgyKQotLWRhdGEpLgotLVRoZXkgYXJlIG9mdGVuIHVzZWQgdG8gcHJvdmlkZSBhZGRpdGlvbmFsIGZ1bmN0aW9uYWxpdHkKLS10byBhIGZpbGVzeXN0ZW0gXC0gZm9yIGV4YW1wbGUsIGFkZGl0aW9uYWwgc2VjdXJpdHkgZmVhdHVyZXMgc3VjaCBhcwotLUFjY2VzcyBDb250cm9sIExpc3RzIChBQ0xzKSBtYXkgYmUgaW1wbGVtZW50ZWQgdXNpbmcgZXh0ZW5kZWQgYXR0cmlidXRlcy4KLS0uUFAKLS1Vc2VycyB3aXRoIHNlYXJjaCBhY2Nlc3MgdG8gYSBmaWxlIG9yIGRpcmVjdG9yeSBtYXkgcmV0cmlldmUgYSBsaXN0IG9mCi0tYXR0cmlidXRlIG5hbWVzIGRlZmluZWQgZm9yIHRoYXQgZmlsZSBvciBkaXJlY3RvcnkuCi0tLlBQCi0tRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgYWNjZXNzZWQgYXMgYXRvbWljIG9iamVjdHMuCi0tUmVhZGluZyByZXRyaWV2ZXMgdGhlIHdob2xlIHZhbHVlIG9mIGFuIGF0dHJpYnV0ZSBhbmQgc3RvcmVzIGl0IGluIGEgYnVmZmVyLgotLVdyaXRpbmcgcmVwbGFjZXMgYW55IHByZXZpb3VzIHZhbHVlIHdpdGggdGhlIG5ldyB2YWx1ZS4KLS0uUFAKLS1TcGFjZSBjb25zdW1lZCBmb3IgZXh0ZW5kZWQgYXR0cmlidXRlcyBpcyBjb3VudGVkIHRvd2FyZHMgdGhlIGRpc2sgcXVvdGFzCi0tb2YgdGhlIGZpbGUgb3duZXIgYW5kIGZpbGUgZ3JvdXAuCi0tLlBQCi0tQ3VycmVudGx5LCBzdXBwb3J0IGZvciBleHRlbmRlZCBhdHRyaWJ1dGVzIGlzIGltcGxlbWVudGVkIG9uIExpbnV4IGJ5IHRoZQotLWV4dDIsIGV4dDMsIGV4dDQsIFhGUywgSkZTIGFuZCByZWlzZXJmcyBmaWxlc3lzdGVtcy4KLS0uU0ggRVhURU5ERUQgQVRUUklCVVRFIE5BTUVTUEFDRVMKLS1BdHRyaWJ1dGUgbmFtZXMgYXJlIHplcm8tdGVybWluYXRlZCBzdHJpbmdzLgotLVRoZSBhdHRyaWJ1dGUgbmFtZSBpcyBhbHdheXMgc3BlY2lmaWVkIGluIHRoZSBmdWxseSBxdWFsaWZpZWQKLS0uSVIgbmFtZXNwYWNlLmF0dHJpYnV0ZQotLWZvcm0sIGVnLgotLS5JUiB1c2VyLm1pbWVfdHlwZSAsCi0tLklSIHRydXN0ZWQubWQ1c3VtICwKLS0uSVIgc3lzdGVtLnBvc2l4X2FjbF9hY2Nlc3MgLAotLW9yCi0tLklSIHNlY3VyaXR5LnNlbGludXggLgotLS5QUAotLVRoZSBuYW1lc3BhY2UgbWVjaGFuaXNtIGlzIHVzZWQgdG8gZGVmaW5lIGRpZmZlcmVudCBjbGFzc2VzIG9mIGV4dGVuZGVkCi0tYXR0cmlidXRlcy4KLS1UaGVzZSBkaWZmZXJlbnQgY2xhc3NlcyBleGlzdCBmb3Igc2V2ZXJhbCByZWFzb25zLCBlLmcuIHRoZSBwZXJtaXNzaW9ucwotLWFuZCBjYXBhYmlsaXRpZXMgcmVxdWlyZWQgZm9yIG1hbmlwdWxhdGluZyBleHRlbmRlZCBhdHRyaWJ1dGVzIG9mIG9uZQotLW5hbWVzcGFjZSBtYXkgZGlmZmVyIHRvIGFub3RoZXIuCi0tLlBQCi0tQ3VycmVudGx5IHRoZQotLS5JUiBzZWN1cml0eSAsCi0tLklSIHN5c3RlbSAsCi0tLklSIHRydXN0ZWQgLAotLWFuZAotLS5JUiB1c2VyCi0tZXh0ZW5kZWQgYXR0cmlidXRlIGNsYXNzZXMgYXJlIGRlZmluZWQgYXMgZGVzY3JpYmVkIGJlbG93LiBBZGRpdGlvbmFsCi0tY2xhc3NlcyBtYXkgYmUgYWRkZWQgaW4gdGhlIGZ1dHVyZS4KLS0uU1MgRXh0ZW5kZWQgc2VjdXJpdHkgYXR0cmlidXRlcwotLVRoZSBzZWN1cml0eSBhdHRyaWJ1dGUgbmFtZXNwYWNlIGlzIHVzZWQgYnkga2VybmVsIHNlY3VyaXR5IG1vZHVsZXMsCi0tc3VjaCBhcyBTZWN1cml0eSBFbmhhbmNlZCBMaW51eC4gIAotLVJlYWQgYW5kIHdyaXRlIGFjY2VzcyBwZXJtaXNzaW9ucyB0byBzZWN1cml0eSBhdHRyaWJ1dGVzIGRlcGVuZCBvbiB0aGUKLS1wb2xpY3kgaW1wbGVtZW50ZWQgZm9yIGVhY2ggc2VjdXJpdHkgYXR0cmlidXRlIGJ5IHRoZSBzZWN1cml0eSBtb2R1bGUuCi0tV2hlbiBubyBzZWN1cml0eSBtb2R1bGUgaXMgbG9hZGVkLCBhbGwgcHJvY2Vzc2VzIGhhdmUgcmVhZCBhY2Nlc3MgdG8KLS1leHRlbmRlZCBzZWN1cml0eSBhdHRyaWJ1dGVzLCBhbmQgd3JpdGUgYWNjZXNzIGlzIGxpbWl0ZWQgdG8gcHJvY2Vzc2VzCi0tdGhhdCBoYXZlIHRoZSBDQVBfU1lTX0FETUlOIGNhcGFiaWxpdHkuCi0tLlNTIEV4dGVuZGVkIHN5c3RlbSBhdHRyaWJ1dGVzCi0tRXh0ZW5kZWQgc3lzdGVtIGF0dHJpYnV0ZXMgYXJlIHVzZWQgYnkgdGhlIGtlcm5lbCB0byBzdG9yZSBzeXN0ZW0KLS1vYmplY3RzIHN1Y2ggYXMgQWNjZXNzIENvbnRyb2wgTGlzdHMgYW5kIENhcGFiaWxpdGllcy4gIFJlYWQgYW5kIHdyaXRlCi0tYWNjZXNzIHBlcm1pc3Npb25zIHRvIHN5c3RlbSBhdHRyaWJ1dGVzIGRlcGVuZCBvbiB0aGUgcG9saWN5IGltcGxlbWVudGVkCi0tZm9yIGVhY2ggc3lzdGVtIGF0dHJpYnV0ZSBpbXBsZW1lbnRlZCBieSBmaWxlc3lzdGVtcyBpbiB0aGUga2VybmVsLgotLS5TUyBUcnVzdGVkIGV4dGVuZGVkIGF0dHJpYnV0ZXMKLS1UcnVzdGVkIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIHZpc2libGUgYW5kIGFjY2Vzc2libGUgb25seSB0byBwcm9jZXNzZXMgdGhhdAotLWhhdmUgdGhlIENBUF9TWVNfQURNSU4gY2FwYWJpbGl0eSAodGhlIHN1cGVyIHVzZXIgdXN1YWxseSBoYXMgdGhpcwotLWNhcGFiaWxpdHkpLgotLUF0dHJpYnV0ZXMgaW4gdGhpcyBjbGFzcyBhcmUgdXNlZCB0byBpbXBsZW1lbnQgbWVjaGFuaXNtcyBpbiB1c2VyCi0tc3BhY2UgKGkuZS4sIG91dHNpZGUgdGhlIGtlcm5lbCkgd2hpY2gga2VlcCBpbmZvcm1hdGlvbiBpbiBleHRlbmRlZCBhdHRyaWJ1dGVzCi0tdG8gd2hpY2ggb3JkaW5hcnkgcHJvY2Vzc2VzIHNob3VsZCBub3QgaGF2ZSBhY2Nlc3MuCi0tLlNTIEV4dGVuZGVkIHVzZXIgYXR0cmlidXRlcwotLUV4dGVuZGVkIHVzZXIgYXR0cmlidXRlcyBtYXkgYmUgYXNzaWduZWQgdG8gZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGZvcgotLXN0b3JpbmcgYXJiaXRyYXJ5IGFkZGl0aW9uYWwgaW5mb3JtYXRpb24gc3VjaCBhcyB0aGUgbWltZSB0eXBlLAotLWNoYXJhY3RlciBzZXQgb3IgZW5jb2Rpbmcgb2YgYSBmaWxlLiBUaGUgYWNjZXNzIHBlcm1pc3Npb25zIGZvciB1c2VyCi0tYXR0cmlidXRlcyBhcmUgZGVmaW5lZCBieSB0aGUgZmlsZSBwZXJtaXNzaW9uIGJpdHMuCi0tLlBQCi0tVGhlIGZpbGUgcGVybWlzc2lvbiBiaXRzIG9mIHJlZ3VsYXIgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIGFyZQotLWludGVycHJldGVkIGRpZmZlcmVudGx5IGZyb20gdGhlIGZpbGUgcGVybWlzc2lvbiBiaXRzIG9mIHNwZWNpYWwgZmlsZXMKLS1hbmQgc3ltYm9saWMgbGlua3MuIEZvciByZWd1bGFyIGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0aGUgZmlsZQotLXBlcm1pc3Npb24gYml0cyBkZWZpbmUgYWNjZXNzIHRvIHRoZSBmaWxlJ3MgY29udGVudHMsIHdoaWxlIGZvciBkZXZpY2Ugc3BlY2lhbAotLWZpbGVzIHRoZXkgZGVmaW5lIGFjY2VzcyB0byB0aGUgZGV2aWNlIGRlc2NyaWJlZCBieSB0aGUgc3BlY2lhbCBmaWxlLgotLVRoZSBmaWxlIHBlcm1pc3Npb25zIG9mIHN5bWJvbGljIGxpbmtzIGFyZSBub3QgdXNlZCBpbiBhY2Nlc3MKLS1jaGVja3MuIFRoZXNlIGRpZmZlcmVuY2VzIHdvdWxkIGFsbG93IHVzZXJzIHRvIGNvbnN1bWUgZmlsZXN5c3RlbSByZXNvdXJjZXMgaW4KLS1hIHdheSBub3QgY29udHJvbGxhYmxlIGJ5IGRpc2sgcXVvdGFzIGZvciBncm91cCBvciB3b3JsZCB3cml0YWJsZSBzcGVjaWFsIGZpbGVzIGFuZCBkaXJlY3Rvcmllcy4KLS0uUFAKLS1Gb3IgdGhpcyByZWFzb24sIGV4dGVuZGVkIHVzZXIgYXR0cmlidXRlcyBhcmUgb25seSBhbGxvd2VkIGZvciByZWd1bGFyIGZpbGVzIGFuZCBkaXJlY3RvcmllcywgYW5kIGFjY2VzcyB0byBleHRlbmRlZCB1c2VyIGF0dHJpYnV0ZXMgaXMgcmVzdHJpY3RlZCB0byB0aGUKLS1vd25lciBhbmQgdG8gdXNlcnMgd2l0aCBhcHByb3ByaWF0ZSBjYXBhYmlsaXRpZXMgZm9yIGRpcmVjdG9yaWVzIHdpdGggdGhlCi0tc3RpY2t5IGJpdCBzZXQgKHNlZSB0aGUKLS0uQlIgY2htb2QgKDEpCi0tbWFudWFsIHBhZ2UgZm9yIGFuIGV4cGxhbmF0aW9uIG9mIFN0aWNreSBEaXJlY3RvcmllcykuCi0tLlNIIEZJTEVTWVNURU0gRElGRkVSRU5DRVMKLS1UaGUga2VybmVsIGFuZCB0aGUgZmlsZXN5c3RlbSBtYXkgcGxhY2UgbGltaXRzIG9uIHRoZSBtYXhpbXVtIG51bWJlcgotLWFuZCBzaXplIG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgdGhhdCBjYW4gYmUgYXNzb2NpYXRlZCB3aXRoIGEgZmlsZS4KLS1Tb21lIGZpbGUgc3lzdGVtcywgc3VjaCBhcyBleHQyLzMgYW5kIHJlaXNlcmZzLCByZXF1aXJlIHRoZSBmaWxlc3lzdGVtCi0tdG8gYmUgbW91bnRlZCB3aXRoIHRoZQotLS5CIHVzZXJfeGF0dHIKLS1tb3VudCBvcHRpb24gaW4gb3JkZXIgZm9yIGV4dGVuZGVkIHVzZXIgYXR0cmlidXRlcyB0byBiZSB1c2VkLgotLS5QUAotLUluIHRoZSBjdXJyZW50IGV4dDIsIGV4dDMgYW5kIGV4dDQgZmlsZXN5c3RlbSBpbXBsZW1lbnRhdGlvbnMsIGVhY2gKLS1leHRlbmRlZCBhdHRyaWJ1dGUgbXVzdCBmaXQgb24gYSBzaW5nbGUgZmlsZXN5c3RlbSBibG9jayAoMTAyNCwgMjA0OAotLW9yIDQwOTYgYnl0ZXMsIGRlcGVuZGluZyBvbiB0aGUgYmxvY2sgc2l6ZSBzcGVjaWZpZWQgd2hlbiB0aGUKLS1maWxlc3lzdGVtIHdhcyBjcmVhdGVkKS4KLS0uUFAKLS1JbiB0aGUgWEZTIGFuZCByZWlzZXJmcyBmaWxlc3lzdGVtIGltcGxlbWVudGF0aW9ucywgdGhlcmUgaXMgbm8KLS1wcmFjdGljYWwgbGltaXQgb24gdGhlIG51bWJlciBvciBzaXplIG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMKLS1hc3NvY2lhdGVkIHdpdGggYSBmaWxlLCBhbmQgdGhlIGFsZ29yaXRobXMgdXNlZCB0byBzdG9yZSBleHRlbmRlZAotLWF0dHJpYnV0ZSBpbmZvcm1hdGlvbiBvbiBkaXNrIGFyZSBzY2FsYWJsZS4KLS0uUFAKLS1JbiB0aGUgSkZTIGZpbGVzeXN0ZW0gaW1wbGVtZW50YXRpb24sIG5hbWVzIGNhbiBiZSB1cCB0byAyNTUgYnl0ZXMgYW5kCi0tdmFsdWVzIHVwIHRvIDY1LDUzNSBieXRlcy4KLS0uU0ggQURESVRJT05BTCBOT1RFUwotLVNpbmNlIHRoZSBmaWxlc3lzdGVtcyBvbiB3aGljaCBleHRlbmRlZCBhdHRyaWJ1dGVzIGFyZSBzdG9yZWQgbWlnaHQgYWxzbwotLWJlIHVzZWQgb24gYXJjaGl0ZWN0dXJlcyB3aXRoIGEgZGlmZmVyZW50IGJ5dGUgb3JkZXIgYW5kIG1hY2hpbmUgd29yZAotLXNpemUsIGNhcmUgc2hvdWxkIGJlIHRha2VuIHRvIHN0b3JlIGF0dHJpYnV0ZSB2YWx1ZXMgaW4gYW4gYXJjaGl0ZWN0dXJlCi0taW5kZXBlbmRlbnQgZm9ybWF0LgotLS5TSCBBVVRIT1JTCi0tQW5kcmVhcyBHcnVlbmJhY2hlciwKLS0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KLS1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKLS0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KLS0uU0ggU0VFIEFMU08KLS1nZXRmYXR0cigxKSwKLS1zZXRmYXR0cigxKS4KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtc2VjdGlvbi0yLW1hbi1wYWdlcy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9SZW1vdmUtdGhlLXNlY3Rpb24tMi1tYW4tcGFnZXMucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDA0NGM1YTAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL1JlbW92ZS10aGUtc2VjdGlvbi0yLW1hbi1wYWdlcy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDY2NiArMCwwIEBACi1Gcm9tIGI5NzI2MDBhMjZmM2E5MzBlNTNlMmZjZTI2MjUyNjZhNWQyOTgxM2UgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBBbmRyZWFzIEdydWVuYmFjaGVyIDxhbmRyZWFzLmdydWVuYmFjaGVyQGdtYWlsLmNvbT4KLURhdGU6IFR1ZSwgMTQgQXByIDIwMTUgMjM6NTM6MTEgKzAyMDAKLVN1YmplY3Q6IFtQQVRDSCAxLzJdIFJlbW92ZSB0aGUgc2VjdGlvbiAyIG1hbiBwYWdlcwotCi1Db21taXQgOGQxMjYzYmNhOTU3MjJkNjZhNmY4ZTgzNDUwZjQ5ZDA5NTZlYTUzNCBmcm9tIHVwc3RyZWFtCi1odHRwczovL2dpdC5zYXZhbm5haC5ub25nbnUub3JnL2dpdC9hdHRyLmdpdC8KLQotVGhlIHNlY3Rpb24gMiBtYW4gcGFnZXMgaGF2ZSBsb25nIHNpbmNlIGJlZW4gYWRkZWQgdG8gdGhlIG1hbi1wYWdlcyBwYWNrYWdlCi13aGljaCBkb2N1bWVudHMgYWxsIHN5c3RlbSBjYWxsczsgdGhleSB3ZXJlIGRpc2FibGVkIGluIGF0dHIgYnkgZGVmYXVsdCBzaW5jZQotSmFudWFyeSAyMDE0LiAgR2V0IHJpZCBvZiB0aGVtIGhlcmUuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQKLQotW01BOiBtb2RpZmllZCB0byBhcHBseSBkaXJlY3RseSB0byB2Mi40LjQ3XQotU2lnbmVkLW9mZi1ieTogTWFyayBBc3NlbHN0aW5lIDxtYXJrLmFzc2Vsc3RpbmVAd2luZHJpdmVyLmNvbT4KLS0tLQotIG1hbi9NYWtlZmlsZSAgICAgICAgICAgfCAgIDIgKy0KLSBtYW4vbWFuMi9NYWtlZmlsZSAgICAgIHwgIDM1IC0tLS0tLS0tLS0tCi0gbWFuL21hbjIvZ2V0eGF0dHIuMiAgICB8IDE0MyAtLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIG1hbi9tYW4yL2xpc3R4YXR0ci4yICAgfCAxNTggLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIG1hbi9tYW4yL3JlbW92ZXhhdHRyLjIgfCAxMTEgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLQotIG1hbi9tYW4yL3NldHhhdHRyLjIgICAgfCAxNDMgLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0tLS0KLSA2IGZpbGVzIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCA1OTEgZGVsZXRpb25zKC0pCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW4yL01ha2VmaWxlCi0gZGVsZXRlIG1vZGUgMTAwNjQ0IG1hbi9tYW4yL2dldHhhdHRyLjIKLSBkZWxldGUgbW9kZSAxMDA2NDQgbWFuL21hbjIvbGlzdHhhdHRyLjIKLSBkZWxldGUgbW9kZSAxMDA2NDQgbWFuL21hbjIvcmVtb3ZleGF0dHIuMgotIGRlbGV0ZSBtb2RlIDEwMDY0NCBtYW4vbWFuMi9zZXR4YXR0ci4yCi0KLWRpZmYgLS1naXQgYS9tYW4vTWFrZWZpbGUgYi9tYW4vTWFrZWZpbGUKLWluZGV4IDk1MzU0MjYuLjc1NWRhZWQgMTAwNjQ0Ci0tLS0gYS9tYW4vTWFrZWZpbGUKLSsrKyBiL21hbi9NYWtlZmlsZQotQEAgLTE5LDcgKzE5LDcgQEAKLSBUT1BESVIgPSAuLgotIGluY2x1ZGUgJChUT1BESVIpL2luY2x1ZGUvYnVpbGRkZWZzCi0gCi0tU1VCRElSUyA9IG1hbjEgbWFuMiBtYW4zIG1hbjUKLStTVUJESVJTID0gbWFuMSBtYW4zIG1hbjUKLSAKLSBkZWZhdWx0IDogJChTVUJESVJTKQotIAotZGlmZiAtLWdpdCBhL21hbi9tYW4yL01ha2VmaWxlIGIvbWFuL21hbjIvTWFrZWZpbGUKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggZDc3MzA5ZC4uMDAwMDAwMAotLS0tIGEvbWFuL21hbjIvTWFrZWZpbGUKLSsrKyAvZGV2L251bGwKLUBAIC0xLDM1ICswLDAgQEAKLS0jCi0tIyBDb3B5cmlnaHQgKGMpIDIwMDAtMjAwMiBTaWxpY29uIEdyYXBoaWNzLCBJbmMuICBBbGwgUmlnaHRzIFJlc2VydmVkLgotLSMgQ29weXJpZ2h0IChDKSAyMDA5ICBBbmRyZWFzIEdydWVuYmFjaGVyIDxhZ3J1ZW5Ac3VzZS5kZT4KLS0jCi0tIyBUaGlzIHByb2dyYW0gaXMgZnJlZSBzb2Z0d2FyZTogeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yIG1vZGlmeSBpdAotLSMgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcyBwdWJsaXNoZWQgYnkKLS0jIHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb24sIGVpdGhlciB2ZXJzaW9uIDIgb2YgdGhlIExpY2Vuc2UsIG9yCi0tIyAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLSMKLS0jIFRoaXMgcHJvZ3JhbSBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLSMgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0jIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0jIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tIwotLSMgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UKLS0jIGFsb25nIHdpdGggdGhpcyBwcm9ncmFtLiAgSWYgbm90LCBzZWUgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotLSMKLS0KLS1UT1BESVIgPSAuLi8uLgotLWluY2x1ZGUgJChUT1BESVIpL2luY2x1ZGUvYnVpbGRkZWZzCi0tCi0tTUFOX1NFQ1RJT04JPSAyCi0tCi0tTUFOX1BBR0VTCT0gJChzaGVsbCBlY2hvICouJChNQU5fU0VDVElPTikpCi0tTUFOX0RFU1QJPSAkKFBLR19NQU5fRElSKS9tYW4kKE1BTl9TRUNUSU9OKQotLUxTUkNGSUxFUwk9ICQoTUFOX1BBR0VTKQotLQotLWRlZmF1bHQgaW5zdGFsbCA6ICQoTUFOX1BBR0VTKQotLQotLWluY2x1ZGUgJChCVUlMRFJVTEVTKQotLQotLWluc3RhbGwtZGV2IDogZGVmYXVsdAotLQkkKElOU1RBTEwpIC1tIDc1NSAtZCAkKE1BTl9ERVNUKQotLQkkKElOU1RBTExfTUFOKQotLWluc3RhbGwtbGliOgotZGlmZiAtLWdpdCBhL21hbi9tYW4yL2dldHhhdHRyLjIgYi9tYW4vbWFuMi9nZXR4YXR0ci4yCi1kZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKLWluZGV4IDQwNWFkODkuLjAwMDAwMDAKLS0tLSBhL21hbi9tYW4yL2dldHhhdHRyLjIKLSsrKyAvZGV2L251bGwKLUBAIC0xLDE0MyArMCwwIEBACi0tLlwiCi0tLlwiIEV4dGVuZGVkIGF0dHJpYnV0ZXMgc3lzdGVtIGNhbGxzIG1hbnVhbCBwYWdlcwotLS5cIgotLS5cIiAoQykgQW5kcmVhcyBHcnVlbmJhY2hlciwgRmVicnVhcnkgMjAwMQotLS5cIiAoQykgU2lsaWNvbiBHcmFwaGljcyBJbmMsIFNlcHRlbWJlciAyMDAxCi0tLlwiCi0tLlwiIFRoaXMgaXMgZnJlZSBkb2N1bWVudGF0aW9uOyB5b3UgY2FuIHJlZGlzdHJpYnV0ZSBpdCBhbmQvb3IKLS0uXCIgbW9kaWZ5IGl0IHVuZGVyIHRoZSB0ZXJtcyBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgYXMKLS0uXCIgcHVibGlzaGVkIGJ5IHRoZSBGcmVlIFNvZnR3YXJlIEZvdW5kYXRpb247IGVpdGhlciB2ZXJzaW9uIDIgb2YKLS0uXCIgdGhlIExpY2Vuc2UsIG9yIChhdCB5b3VyIG9wdGlvbikgYW55IGxhdGVyIHZlcnNpb24uCi0tLlwiCi0tLlwiIFRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSdzIHJlZmVyZW5jZXMgdG8gIm9iamVjdCBjb2RlIgotLS5cIiBhbmQgImV4ZWN1dGFibGVzIiBhcmUgdG8gYmUgaW50ZXJwcmV0ZWQgYXMgdGhlIG91dHB1dCBvZiBhbnkKLS0uXCIgZG9jdW1lbnQgZm9ybWF0dGluZyBvciB0eXBlc2V0dGluZyBzeXN0ZW0sIGluY2x1ZGluZwotLS5cIiBpbnRlcm1lZGlhdGUgYW5kIHByaW50ZWQgb3V0cHV0LgotLS5cIgotLS5cIiBUaGlzIG1hbnVhbCBpcyBkaXN0cmlidXRlZCBpbiB0aGUgaG9wZSB0aGF0IGl0IHdpbGwgYmUgdXNlZnVsLAotLS5cIiBidXQgV0lUSE9VVCBBTlkgV0FSUkFOVFk7IHdpdGhvdXQgZXZlbiB0aGUgaW1wbGllZCB3YXJyYW50eSBvZgotLS5cIiBNRVJDSEFOVEFCSUxJVFkgb3IgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSIFBVUlBPU0UuICBTZWUgdGhlCi0tLlwiIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGZvciBtb3JlIGRldGFpbHMuCi0tLlwiCi0tLlwiIFlvdSBzaG91bGQgaGF2ZSByZWNlaXZlZCBhIGNvcHkgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYwotLS5cIiBMaWNlbnNlIGFsb25nIHdpdGggdGhpcyBtYW51YWwuICBJZiBub3QsIHNlZQotLS5cIiA8aHR0cDovL3d3dy5nbnUub3JnL2xpY2Vuc2VzLz4uCi0tLlwiCi0tLlRIIEdFVFhBVFRSIDIgIkV4dGVuZGVkIEF0dHJpYnV0ZXMiICJEZWMgMjAwMSIgIlN5c3RlbSBjYWxscyIKLS0uU0ggTkFNRQotLWdldHhhdHRyLCBsZ2V0eGF0dHIsIGZnZXR4YXR0ciBcLSByZXRyaWV2ZSBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgdmFsdWUKLS0uU0ggU1lOT1BTSVMKLS0uZmFtIEMKLS0ubmYKLS0uQiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tLkIgI2luY2x1ZGUgPGF0dHIveGF0dHIuaD4KLS0uc3AKLS0uQkkgInNzaXplX3QgZ2V0eGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwgY29uc3QgY2hhclwgKiIgbmFtZSAiLAotLS5CSSAiXHRcdFx0XHQgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSApOwotLS5CSSAic3NpemVfdCBsZ2V0eGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwgY29uc3QgY2hhclwgKiIgbmFtZSAiLAotLS5CSSAiXHRcdFx0XHQgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSApOwotLS5CSSAic3NpemVfdCBmZ2V0eGF0dHIgKGludCAiIGZpbGVkZXMgIiwgY29uc3QgY2hhclwgKiIgbmFtZSAiLAotLS5CSSAiXHRcdFx0XHQgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSApOwotLS5maQotLS5mYW0gVAotLS5TSCBERVNDUklQVElPTgotLUV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlCi0tLklSIG5hbWUgOlxjCi0tLkkgdmFsdWUKLS1wYWlycyBhc3NvY2lhdGVkIHdpdGggaW5vZGVzIChmaWxlcywgZGlyZWN0b3JpZXMsIHN5bWxpbmtzLCBldGMpLgotLVRoZXkgYXJlIGV4dGVuc2lvbnMgdG8gdGhlIG5vcm1hbCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBhc3NvY2lhdGVkCi0td2l0aCBhbGwgaW5vZGVzIGluIHRoZSBzeXN0ZW0gKGkuZS4gdGhlCi0tLkJSIHN0YXQgKDIpCi0tZGF0YSkuCi0tQSBjb21wbGV0ZSBvdmVydmlldyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGNvbmNlcHRzIGNhbiBiZSBmb3VuZCBpbgotLS5CUiBhdHRyICg1KS4KLS0uUFAKLS0uQiBnZXR4YXR0cgotLXJldHJpZXZlcyB0aGUKLS0uSSB2YWx1ZQotLW9mIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgaWRlbnRpZmllZCBieQotLS5JIG5hbWUKLS1hbmQgYXNzb2NpYXRlZCB3aXRoIHRoZSBnaXZlbgotLS5JIHBhdGgKLS1pbiB0aGUgZmlsZXN5c3RlbS4KLS1UaGUgbGVuZ3RoIG9mIHRoZSBhdHRyaWJ1dGUKLS0uSSB2YWx1ZQotLWlzIHJldHVybmVkLgotLS5QUAotLS5CIGxnZXR4YXR0cgotLWlzIGlkZW50aWNhbCB0byAKLS0uQlIgZ2V0eGF0dHIgLAotLWV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhIHN5bWJvbGljIGxpbmssIHdoZXJlIHRoZSBsaW5rIGl0c2VsZiBpcwotLWludGVycm9nYXRlZCwgbm90IHRoZSBmaWxlIHRoYXQgaXQgcmVmZXJzIHRvLgotLS5QUAotLS5CIGZnZXR4YXR0cgotLWlzIGlkZW50aWNhbCB0bwotLS5CUiBnZXR4YXR0ciAsCi0tb25seSB0aGUgb3BlbiBmaWxlIHBvaW50ZWQgdG8gYnkKLS0uSSBmaWxlZGVzCi0tKGFzIHJldHVybmVkIGJ5Ci0tLkJSIG9wZW4gKDIpKQotLWlzIGludGVycm9nYXRlZCBpbiBwbGFjZSBvZgotLS5JUiBwYXRoIC4KLS0uUFAKLS1BbiBleHRlbmRlZCBhdHRyaWJ1dGUKLS0uSSBuYW1lCi0taXMgYSBzaW1wbGUgTlVMTC10ZXJtaW5hdGVkIHN0cmluZy4KLS1UaGUgbmFtZSBpbmNsdWRlcyBhIG5hbWVzcGFjZSBwcmVmaXggXC0gdGhlcmUgbWF5IGJlIHNldmVyYWwsIGRpc2pvaW50Ci0tbmFtZXNwYWNlcyBhc3NvY2lhdGVkIHdpdGggYW4gaW5kaXZpZHVhbCBpbm9kZS4KLS1UaGUgdmFsdWUgb2YgYW4gZXh0ZW5kZWQgYXR0cmlidXRlIGlzIGEgY2h1bmsgb2YgYXJiaXRyYXJ5IHRleHR1YWwgb3IKLS1iaW5hcnkgZGF0YSBvZiBzcGVjaWZpZWQgbGVuZ3RoLgotLS5QUAotLUFuIGVtcHR5IGJ1ZmZlciBvZgotLS5JIHNpemUKLS16ZXJvIGNhbiBiZSBwYXNzZWQgaW50byB0aGVzZSBjYWxscyB0byByZXR1cm4gdGhlIGN1cnJlbnQgc2l6ZSBvZiB0aGUKLS1uYW1lZCBleHRlbmRlZCBhdHRyaWJ1dGUsIHdoaWNoIGNhbiBiZSB1c2VkIHRvIGVzdGltYXRlIHRoZSBzaXplIG9mIGEKLS1idWZmZXIgd2hpY2ggaXMgc3VmZmljaWVudGx5IGxhcmdlIHRvIGhvbGQgdGhlIHZhbHVlIGFzc29jaWF0ZWQgd2l0aAotLXRoZSBleHRlbmRlZCBhdHRyaWJ1dGUuCi0tLlBQCi0tVGhlIGludGVyZmFjZSBpcyBkZXNpZ25lZCB0byBhbGxvdyBndWVzc2luZyBvZiBpbml0aWFsIGJ1ZmZlcgotLXNpemVzLCBhbmQgdG8gZW5sYXJnZSBidWZmZXJzIHdoZW4gdGhlIHJldHVybiB2YWx1ZSBpbmRpY2F0ZXMKLS10aGF0IHRoZSBidWZmZXIgcHJvdmlkZWQgd2FzIHRvbyBzbWFsbC4KLS0uU0ggUkVUVVJOIFZBTFVFCi0tT24gc3VjY2VzcywgYSBwb3NpdGl2ZSBudW1iZXIgaXMgcmV0dXJuZWQgaW5kaWNhdGluZyB0aGUgc2l6ZSBvZiB0aGUKLS1leHRlbmRlZCBhdHRyaWJ1dGUgdmFsdWUuCi0tT24gZmFpbHVyZSwgXC0xIGlzIHJldHVybmVkIGFuZAotLS5JIGVycm5vCi0taXMgc2V0IGFwcHJvcHJpYXRlbHkuCi0tLlBQCi0tSWYgdGhlIG5hbWVkIGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCwgb3IgdGhlIHByb2Nlc3MgaGFzIG5vIGFjY2VzcyB0bwotLXRoaXMgYXR0cmlidXRlLAotLS5JIGVycm5vCi0taXMgc2V0IHRvIEVOT0FUVFIuCi0tLlBQCi0tSWYgdGhlCi0tLkkgc2l6ZQotLW9mIHRoZQotLS5JIHZhbHVlCi0tYnVmZmVyIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSByZXN1bHQsCi0tLkkgZXJybm8KLS1pcyBzZXQgdG8gRVJBTkdFLgotLS5QUAotLUlmIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGZpbGVzeXN0ZW0sIG9yIGFyZSBkaXNhYmxlZCwKLS0uSSBlcnJubwotLWlzIHNldCB0byBFTk9UU1VQLgotLS5QUAotLVRoZSBlcnJvcnMgZG9jdW1lbnRlZCBmb3IgdGhlCi0tLkJSIHN0YXQgKDIpCi0tc3lzdGVtIGNhbGwgYXJlIGFsc28gYXBwbGljYWJsZSBoZXJlLgotLS5TSCBBVVRIT1JTCi0tQW5kcmVhcyBHcnVlbmJhY2hlciwKLS0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KLS1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKLS0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KLS1QbGVhc2Ugc2VuZCBhbnkgYnVnIHJlcG9ydHMgb3IgY29tbWVudHMgdG8gdGhlc2UgYWRkcmVzc2VzLgotLS5TSCBTRUUgQUxTTwotLS5CUiBnZXRmYXR0ciAoMSksCi0tLkJSIHNldGZhdHRyICgxKSwKLS0uQlIgb3BlbiAoMiksCi0tLkJSIHN0YXQgKDIpLAotLS5CUiBzZXR4YXR0ciAoMiksCi0tLkJSIGxpc3R4YXR0ciAoMiksCi0tLkJSIHJlbW92ZXhhdHRyICgyKSwKLS1hbmQKLS0uQlIgYXR0ciAoNSkuCi1kaWZmIC0tZ2l0IGEvbWFuL21hbjIvbGlzdHhhdHRyLjIgYi9tYW4vbWFuMi9saXN0eGF0dHIuMgotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCA4YjQzNzFjLi4wMDAwMDAwCi0tLS0gYS9tYW4vbWFuMi9saXN0eGF0dHIuMgotKysrIC9kZXYvbnVsbAotQEAgLTEsMTU4ICswLDAgQEAKLS0uXCIKLS0uXCIgRXh0ZW5kZWQgYXR0cmlidXRlcyBzeXN0ZW0gY2FsbHMgbWFudWFsIHBhZ2VzCi0tLlwiCi0tLlwiIChDKSBBbmRyZWFzIEdydWVuYmFjaGVyLCBGZWJydWFyeSAyMDAxCi0tLlwiIChDKSBTaWxpY29uIEdyYXBoaWNzIEluYywgU2VwdGVtYmVyIDIwMDEKLS0uXCIKLS0uXCIgVGhpcyBpcyBmcmVlIGRvY3VtZW50YXRpb247IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotLS5cIiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotLS5cIiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotLS5cIiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0uXCIKLS0uXCIgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlJ3MgcmVmZXJlbmNlcyB0byAib2JqZWN0IGNvZGUiCi0tLlwiIGFuZCAiZXhlY3V0YWJsZXMiIGFyZSB0byBiZSBpbnRlcnByZXRlZCBhcyB0aGUgb3V0cHV0IG9mIGFueQotLS5cIiBkb2N1bWVudCBmb3JtYXR0aW5nIG9yIHR5cGVzZXR0aW5nIHN5c3RlbSwgaW5jbHVkaW5nCi0tLlwiIGludGVybWVkaWF0ZSBhbmQgcHJpbnRlZCBvdXRwdXQuCi0tLlwiCi0tLlwiIFRoaXMgbWFudWFsIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tLlwiIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tLlwiIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0uXCIgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0uXCIKLS0uXCIgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0tLlwiIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIG1hbnVhbC4gIElmIG5vdCwgc2VlCi0tLlwiIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0uXCIKLS0uVEggTElTVFhBVFRSIDIgIkV4dGVuZGVkIEF0dHJpYnV0ZXMiICJEZWMgMjAwMSIgIlN5c3RlbSBjYWxscyIKLS0uU0ggTkFNRQotLWxpc3R4YXR0ciwgbGxpc3R4YXR0ciwgZmxpc3R4YXR0ciBcLSBsaXN0IGV4dGVuZGVkIGF0dHJpYnV0ZSBuYW1lcwotLS5TSCBTWU5PUFNJUwotLS5mYW0gQwotLS5uZgotLS5CICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0uQiAjaW5jbHVkZSA8YXR0ci94YXR0ci5oPgotLS5zcAotLS5CSSAic3NpemVfdCBsaXN0eGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwKLS0uQkkgIlx0XHRcdFx0IGNoYXJcICoiIGxpc3QgIiwgc2l6ZV90ICIgc2l6ZSApOwotLS5CSSAic3NpemVfdCBsbGlzdHhhdHRyIChjb25zdCBjaGFyXCAqIiBwYXRoICIsCi0tLkJJICJcdFx0XHRcdCBjaGFyXCAqIiBsaXN0ICIsIHNpemVfdCAiIHNpemUgKTsKLS0uQkkgInNzaXplX3QgZmxpc3R4YXR0ciAoaW50ICIgZmlsZWRlcyAiLAotLS5CSSAiXHRcdFx0XHQgY2hhclwgKiIgbGlzdCAiLCBzaXplX3QgIiBzaXplICk7Ci0tLmZpCi0tLmZhbSBUCi0tLlNIIERFU0NSSVBUSU9OCi0tRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgbmFtZTp2YWx1ZQotLXBhaXJzIGFzc29jaWF0ZWQgd2l0aCBpbm9kZXMgKGZpbGVzLCBkaXJlY3Rvcmllcywgc3ltbGlua3MsIGV0YykuCi0tVGhleSBhcmUgZXh0ZW5zaW9ucyB0byB0aGUgbm9ybWFsIGF0dHJpYnV0ZXMgd2hpY2ggYXJlIGFzc29jaWF0ZWQKLS13aXRoIGFsbCBpbm9kZXMgaW4gdGhlIHN5c3RlbSAoaS5lLiB0aGUKLS0uQlIgc3RhdCAoMikKLS1kYXRhKS4KLS1BIGNvbXBsZXRlIG92ZXJ2aWV3IG9mIGV4dGVuZGVkIGF0dHJpYnV0ZXMgY29uY2VwdHMgY2FuIGJlIGZvdW5kIGluCi0tLkJSIGF0dHIgKDUpLgotLS5QUAotLS5CIGxpc3R4YXR0cgotLXJldHJpZXZlcyB0aGUKLS0uSSBsaXN0Ci0tb2YgZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWVzIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4KLS0uSSBwYXRoCi0taW4gdGhlIGZpbGVzeXN0ZW0uCi0tVGhlIGxpc3QgaXMgdGhlIHNldCBvZiAoTlVMTC10ZXJtaW5hdGVkKSBuYW1lcywgb25lIGFmdGVyIHRoZSBvdGhlci4KLS1OYW1lcyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIHRvIHdoaWNoIHRoZSBjYWxsaW5nIHByb2Nlc3MgZG9lcyBub3QKLS1oYXZlIGFjY2VzcyBtYXkgYmUgb21pdHRlZCBmcm9tIHRoZSBsaXN0LgotLVRoZSBsZW5ndGggb2YgdGhlIGF0dHJpYnV0ZSBuYW1lCi0tLkkgbGlzdAotLWlzIHJldHVybmVkLgotLS5QUAotLS5CIGxsaXN0eGF0dHIKLS1pcyBpZGVudGljYWwgdG8KLS0uQlIgbGlzdHhhdHRyICwKLS1leGNlcHQgaW4gdGhlIGNhc2Ugb2YgYSBzeW1ib2xpYyBsaW5rLCB3aGVyZSB0aGUgbGlzdCBvZiBuYW1lcyBvZgotLWV4dGVuZGVkIGF0dHJpYnV0ZXMgYXNzb2NpYXRlZCB3aXRoIHRoZSBsaW5rIGl0c2VsZiBpcyByZXRyaWV2ZWQsCi0tbm90IHRoZSBmaWxlIHRoYXQgaXQgcmVmZXJzIHRvLgotLS5JIGxpc3QKLS1pcyBhIGNhbGxlci1hbGxvY2F0ZWQgYnVmZmVyIG9mIHNpemUKLS0uSVIgc2l6ZSAuCi0tLlBQCi0tLkIgZmxpc3R4YXR0cgotLWlzIGlkZW50aWNhbCB0bwotLS5CUiBsaXN0eGF0dHIgLAotLW9ubHkgdGhlIG9wZW4gZmlsZSBwb2ludGVkIHRvIGJ5Ci0tLkkgZmlsZWRlcwotLShhcyByZXR1cm5lZCBieQotLS5CUiBvcGVuICgyKSkKLS1pcyBpbnRlcnJvZ2F0ZWQgaW4gcGxhY2Ugb2YKLS0uSVIgcGF0aCAuCi0tLlBQCi0tQSBzaW5nbGUgZXh0ZW5kZWQgYXR0cmlidXRlCi0tLkkgbmFtZQotLWlzIGEgc2ltcGxlIE5VTEwtdGVybWluYXRlZCBzdHJpbmcuCi0tVGhlIG5hbWUgaW5jbHVkZXMgYSBuYW1lc3BhY2UgcHJlZml4IFwtIHRoZXJlIG1heSBiZSBzZXZlcmFsLCBkaXNqb2ludAotLW5hbWVzcGFjZXMgYXNzb2NpYXRlZCB3aXRoIGFuIGluZGl2aWR1YWwgaW5vZGUuCi0tLlBQCi0tQW4gZW1wdHkgYnVmZmVyIG9mCi0tLkkgc2l6ZQotLXplcm8gY2FuIGJlIHBhc3NlZCBpbnRvIHRoZXNlIGNhbGxzIHRvIHJldHVybiB0aGUgY3VycmVudCBzaXplIG9mIHRoZQotLWxpc3Qgb2YgZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWVzLCB3aGljaCBjYW4gYmUgdXNlZCB0byBlc3RpbWF0ZSB0aGUKLS1zaXplIG9mIGEgYnVmZmVyIHdoaWNoIGlzIHN1ZmZpY2llbnRseSBsYXJnZSB0byBob2xkIHRoZSBsaXN0IG9mIG5hbWVzLgotLS5TSCBFWEFNUExFUwotLVRoZQotLS5JIGxpc3QKLS1vZiBuYW1lcyBpcyByZXR1cm5lZCBhcyBhbiB1bm9yZGVyZWQgYXJyYXkgb2YgTlVMTC10ZXJtaW5hdGVkIGNoYXJhY3RlcgotLXN0cmluZ3MgKGF0dHJpYnV0ZSBuYW1lcyBhcmUgc2VwYXJhdGVkIGJ5IE5VTEwgY2hhcmFjdGVycyksIGxpa2UgdGhpczoKLS0uZmFtIEMKLS0uUlMKLS0ubmYKLS11c2VyLm5hbWUxXFwwc3lzdGVtLm5hbWUxXFwwdXNlci5uYW1lMlxcMAotLS5maQotLS5SRQotLS5mYW0gVAotLS5QCi0tRmlsZXN5c3RlbXMgbGlrZSBleHQyLCBleHQzIGFuZCBYRlMgd2hpY2ggaW1wbGVtZW50IFBPU0lYIEFDTHMgdXNpbmcKLS1leHRlbmRlZCBhdHRyaWJ1dGVzLCBtaWdodCByZXR1cm4gYQotLS5JIGxpc3QKLS1saWtlIHRoaXM6Ci0tLmZhbSBDCi0tLlJTCi0tLm5mCi0tc3lzdGVtLnBvc2l4X2FjbF9hY2Nlc3NcXDBzeXN0ZW0ucG9zaXhfYWNsX2RlZmF1bHRcXDAKLS0uZmkKLS0uUkUKLS0uZmFtIFQKLS0uU0ggUkVUVVJOIFZBTFVFCi0tT24gc3VjY2VzcywgYSBwb3NpdGl2ZSBudW1iZXIgaXMgcmV0dXJuZWQgaW5kaWNhdGluZyB0aGUgc2l6ZSBvZiB0aGUKLS1leHRlbmRlZCBhdHRyaWJ1dGUgbmFtZSBsaXN0LgotLU9uIGZhaWx1cmUsIFwtMSBpcyByZXR1cm5lZCBhbmQKLS0uSSBlcnJubwotLWlzIHNldCBhcHByb3ByaWF0ZWx5LgotLS5QUAotLUlmIHRoZQotLS5JIHNpemUKLS1vZiB0aGUKLS0uSSBsaXN0Ci0tYnVmZmVyIGlzIHRvbyBzbWFsbCB0byBob2xkIHRoZSByZXN1bHQsCi0tLkkgZXJybm8KLS1pcyBzZXQgdG8gRVJBTkdFLgotLS5QUAotLUlmIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGZpbGVzeXN0ZW0sIG9yIGFyZSBkaXNhYmxlZCwKLS0uSSBlcnJubwotLWlzIHNldCB0byBFTk9UU1VQLgotLS5QUAotLVRoZSBlcnJvcnMgZG9jdW1lbnRlZCBmb3IgdGhlCi0tLkJSIHN0YXQgKDIpCi0tc3lzdGVtIGNhbGwgYXJlIGFsc28gYXBwbGljYWJsZSBoZXJlLgotLS5TSCBBVVRIT1JTCi0tQW5kcmVhcyBHcnVlbmJhY2hlciwKLS0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KLS1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKLS0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KLS1QbGVhc2Ugc2VuZCBhbnkgYnVnIHJlcG9ydHMgb3IgY29tbWVudHMgdG8gdGhlc2UgYWRkcmVzc2VzLgotLS5TSCBTRUUgQUxTTwotLS5CUiBnZXRmYXR0ciAoMSksCi0tLkJSIHNldGZhdHRyICgxKSwKLS0uQlIgb3BlbiAoMiksCi0tLkJSIHN0YXQgKDIpLAotLS5CUiBnZXR4YXR0ciAoMiksCi0tLkJSIHNldHhhdHRyICgyKSwKLS0uQlIgcmVtb3ZleGF0dHIgKDIpLAotLWFuZAotLS5CUiBhdHRyICg1KS4KLWRpZmYgLS1naXQgYS9tYW4vbWFuMi9yZW1vdmV4YXR0ci4yIGIvbWFuL21hbjIvcmVtb3ZleGF0dHIuMgotZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0Ci1pbmRleCAyYzdkOTM0Li4wMDAwMDAwCi0tLS0gYS9tYW4vbWFuMi9yZW1vdmV4YXR0ci4yCi0rKysgL2Rldi9udWxsCi1AQCAtMSwxMTEgKzAsMCBAQAotLS5cIgotLS5cIiBFeHRlbmRlZCBhdHRyaWJ1dGVzIHN5c3RlbSBjYWxscyBtYW51YWwgcGFnZXMKLS0uXCIKLS0uXCIgKEMpIEFuZHJlYXMgR3J1ZW5iYWNoZXIsIEZlYnJ1YXJ5IDIwMDEKLS0uXCIgKEMpIFNpbGljb24gR3JhcGhpY3MgSW5jLCBTZXB0ZW1iZXIgMjAwMQotLS5cIgotLS5cIiBUaGlzIGlzIGZyZWUgZG9jdW1lbnRhdGlvbjsgeW91IGNhbiByZWRpc3RyaWJ1dGUgaXQgYW5kL29yCi0tLlwiIG1vZGlmeSBpdCB1bmRlciB0aGUgdGVybXMgb2YgdGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlIGFzCi0tLlwiIHB1Ymxpc2hlZCBieSB0aGUgRnJlZSBTb2Z0d2FyZSBGb3VuZGF0aW9uOyBlaXRoZXIgdmVyc2lvbiAyIG9mCi0tLlwiIHRoZSBMaWNlbnNlLCBvciAoYXQgeW91ciBvcHRpb24pIGFueSBsYXRlciB2ZXJzaW9uLgotLS5cIgotLS5cIiBUaGUgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UncyByZWZlcmVuY2VzIHRvICJvYmplY3QgY29kZSIKLS0uXCIgYW5kICJleGVjdXRhYmxlcyIgYXJlIHRvIGJlIGludGVycHJldGVkIGFzIHRoZSBvdXRwdXQgb2YgYW55Ci0tLlwiIGRvY3VtZW50IGZvcm1hdHRpbmcgb3IgdHlwZXNldHRpbmcgc3lzdGVtLCBpbmNsdWRpbmcKLS0uXCIgaW50ZXJtZWRpYXRlIGFuZCBwcmludGVkIG91dHB1dC4KLS0uXCIKLS0uXCIgVGhpcyBtYW51YWwgaXMgZGlzdHJpYnV0ZWQgaW4gdGhlIGhvcGUgdGhhdCBpdCB3aWxsIGJlIHVzZWZ1bCwKLS0uXCIgYnV0IFdJVEhPVVQgQU5ZIFdBUlJBTlRZOyB3aXRob3V0IGV2ZW4gdGhlIGltcGxpZWQgd2FycmFudHkgb2YKLS0uXCIgTUVSQ0hBTlRBQklMSVRZIG9yIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUiBQVVJQT1NFLiAgU2VlIHRoZQotLS5cIiBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBmb3IgbW9yZSBkZXRhaWxzLgotLS5cIgotLS5cIiBZb3Ugc2hvdWxkIGhhdmUgcmVjZWl2ZWQgYSBjb3B5IG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMKLS0uXCIgTGljZW5zZSBhbG9uZyB3aXRoIHRoaXMgbWFudWFsLiAgSWYgbm90LCBzZWUKLS0uXCIgPGh0dHA6Ly93d3cuZ251Lm9yZy9saWNlbnNlcy8+LgotLS5cIgotLS5USCBSRU1PVkVYQVRUUiAyICJFeHRlbmRlZCBBdHRyaWJ1dGVzIiAiRGVjIDIwMDEiICJTeXN0ZW0gY2FsbHMiCi0tLlNIIE5BTUUKLS1yZW1vdmV4YXR0ciwgbHJlbW92ZXhhdHRyLCBmcmVtb3ZleGF0dHIgXC0gcmVtb3ZlIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZQotLS5TSCBTWU5PUFNJUwotLS5mYW0gQwotLS5uZgotLS5CICNpbmNsdWRlIDxzeXMvdHlwZXMuaD4KLS0uQiAjaW5jbHVkZSA8YXR0ci94YXR0ci5oPgotLS5zcAotLS5CSSAiaW50IHJlbW92ZXhhdHRyIChjb25zdCBjaGFyXCAqIiBwYXRoICIsIGNvbnN0IGNoYXJcICoiIG5hbWUgKTsKLS0uQkkgImludCBscmVtb3ZleGF0dHIgKGNvbnN0IGNoYXJcICoiIHBhdGggIiwgY29uc3QgY2hhclwgKiIgbmFtZSApOwotLS5CSSAiaW50IGZyZW1vdmV4YXR0ciAoaW50ICIgZmlsZWRlcyAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICk7Ci0tLmZpCi0tLmZhbSBUCi0tLlNIIERFU0NSSVBUSU9OCi0tRXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUKLS0uSVIgbmFtZSA6XGMKLS12YWx1ZSBwYWlycyBhc3NvY2lhdGVkIHdpdGggaW5vZGVzIChmaWxlcywgZGlyZWN0b3JpZXMsIHN5bWxpbmtzLCBldGMpLgotLVRoZXkgYXJlIGV4dGVuc2lvbnMgdG8gdGhlIG5vcm1hbCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBhc3NvY2lhdGVkCi0td2l0aCBhbGwgaW5vZGVzIGluIHRoZSBzeXN0ZW0gKGkuZS4gdGhlCi0tLkJSIHN0YXQgKDIpCi0tZGF0YSkuCi0tQSBjb21wbGV0ZSBvdmVydmlldyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGNvbmNlcHRzIGNhbiBiZSBmb3VuZCBpbgotLS5CUiBhdHRyICg1KS4KLS0uUFAKLS0uQiByZW1vdmV4YXR0cgotLXJlbW92ZXMgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpZGVudGlmaWVkIGJ5Ci0tLkkgbmFtZQotLWFuZCBhc3NvY2lhdGVkIHdpdGggdGhlIGdpdmVuCi0tLkkgcGF0aAotLWluIHRoZSBmaWxlc3lzdGVtLgotLS5QUAotLS5CIGxyZW1vdmV4YXR0cgotLWlzIGlkZW50aWNhbCB0byAKLS0uQlIgcmVtb3ZleGF0dHIgLAotLWV4Y2VwdCBpbiB0aGUgY2FzZSBvZiBhIHN5bWJvbGljIGxpbmssIHdoZXJlIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgaXMKLS1yZW1vdmVkIGZyb20gdGhlIGxpbmsgaXRzZWxmLCBub3QgdGhlIGZpbGUgdGhhdCBpdCByZWZlcnMgdG8uCi0tLlBQCi0tLkIgZnJlbW92ZXhhdHRyCi0taXMgaWRlbnRpY2FsIHRvCi0tLkJSIHJlbW92ZXhhdHRyICwKLS1vbmx5IHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUgaXMgcmVtb3ZlZCBmcm9tIHRoZSBvcGVuIGZpbGUgcG9pbnRlZCB0byBieQotLS5JIGZpbGVkZXMKLS0oYXMgcmV0dXJuZWQgYnkKLS0uQlIgb3BlbiAoMikpCi0taW4gcGxhY2Ugb2YKLS0uSVIgcGF0aCAuCi0tLlBQCi0tQW4gZXh0ZW5kZWQgYXR0cmlidXRlIG5hbWUgaXMgYSBzaW1wbGUgTlVMTC10ZXJtaW5hdGVkIHN0cmluZy4KLS1UaGUKLS0uSSBuYW1lCi0taW5jbHVkZXMgYSBuYW1lc3BhY2UgcHJlZml4IFwtIHRoZXJlIG1heSBiZSBzZXZlcmFsLCBkaXNqb2ludAotLW5hbWVzcGFjZXMgYXNzb2NpYXRlZCB3aXRoIGFuIGluZGl2aWR1YWwgaW5vZGUuCi0tLlNIIFJFVFVSTiBWQUxVRQotLU9uIHN1Y2Nlc3MsIHplcm8gaXMgcmV0dXJuZWQuCi0tT24gZmFpbHVyZSwgXC0xIGlzIHJldHVybmVkIGFuZAotLS5JIGVycm5vCi0taXMgc2V0IGFwcHJvcHJpYXRlbHkuCi0tLlBQCi0tSWYgdGhlIG5hbWVkIGF0dHJpYnV0ZSBkb2VzIG5vdCBleGlzdCwKLS0uSSBlcnJubwotLWlzIHNldCB0byBFTk9BVFRSLgotLS5QUAotLUlmIGV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlIG5vdCBzdXBwb3J0ZWQgYnkgdGhlIGZpbGVzeXN0ZW0sIG9yIGFyZSBkaXNhYmxlZCwKLS0uSSBlcnJubwotLWlzIHNldCB0byBFTk9UU1VQLgotLS5QUAotLVRoZSBlcnJvcnMgZG9jdW1lbnRlZCBmb3IgdGhlCi0tLkJSIHN0YXQgKDIpCi0tc3lzdGVtIGNhbGwgYXJlIGFsc28gYXBwbGljYWJsZSBoZXJlLgotLS5TSCBBVVRIT1JTCi0tQW5kcmVhcyBHcnVlbmJhY2hlciwKLS0uUkkgPCBhLmdydWVuYmFjaGVyQGJlc3RiaXRzLmF0ID4KLS1hbmQgdGhlIFNHSSBYRlMgZGV2ZWxvcG1lbnQgdGVhbSwKLS0uUkkgPCBsaW51eC14ZnNAb3NzLnNnaS5jb20gPi4KLS1QbGVhc2Ugc2VuZCBhbnkgYnVnIHJlcG9ydHMgb3IgY29tbWVudHMgdG8gdGhlc2UgYWRkcmVzc2VzLgotLS5TSCBTRUUgQUxTTwotLS5CUiBnZXRmYXR0ciAoMSksCi0tLkJSIHNldGZhdHRyICgxKSwKLS0uQlIgb3BlbiAoMiksCi0tLkJSIHN0YXQgKDIpLAotLS5CUiBzZXR4YXR0ciAoMiksCi0tLkJSIGdldHhhdHRyICgyKSwKLS0uQlIgbGlzdHhhdHRyICgyKSwKLS1hbmQKLS0uQlIgYXR0ciAoNSkuCi1kaWZmIC0tZ2l0IGEvbWFuL21hbjIvc2V0eGF0dHIuMiBiL21hbi9tYW4yL3NldHhhdHRyLjIKLWRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAotaW5kZXggYjIwZGM5Zi4uMDAwMDAwMAotLS0tIGEvbWFuL21hbjIvc2V0eGF0dHIuMgotKysrIC9kZXYvbnVsbAotQEAgLTEsMTQzICswLDAgQEAKLS0uXCIKLS0uXCIgRXh0ZW5kZWQgYXR0cmlidXRlcyBzeXN0ZW0gY2FsbHMgbWFudWFsIHBhZ2VzCi0tLlwiCi0tLlwiIChDKSBBbmRyZWFzIEdydWVuYmFjaGVyLCBGZWJydWFyeSAyMDAxCi0tLlwiIChDKSBTaWxpY29uIEdyYXBoaWNzIEluYywgU2VwdGVtYmVyIDIwMDEKLS0uXCIKLS0uXCIgVGhpcyBpcyBmcmVlIGRvY3VtZW50YXRpb247IHlvdSBjYW4gcmVkaXN0cmlidXRlIGl0IGFuZC9vcgotLS5cIiBtb2RpZnkgaXQgdW5kZXIgdGhlIHRlcm1zIG9mIHRoZSBHTlUgR2VuZXJhbCBQdWJsaWMgTGljZW5zZSBhcwotLS5cIiBwdWJsaXNoZWQgYnkgdGhlIEZyZWUgU29mdHdhcmUgRm91bmRhdGlvbjsgZWl0aGVyIHZlcnNpb24gMiBvZgotLS5cIiB0aGUgTGljZW5zZSwgb3IgKGF0IHlvdXIgb3B0aW9uKSBhbnkgbGF0ZXIgdmVyc2lvbi4KLS0uXCIKLS0uXCIgVGhlIEdOVSBHZW5lcmFsIFB1YmxpYyBMaWNlbnNlJ3MgcmVmZXJlbmNlcyB0byAib2JqZWN0IGNvZGUiCi0tLlwiIGFuZCAiZXhlY3V0YWJsZXMiIGFyZSB0byBiZSBpbnRlcnByZXRlZCBhcyB0aGUgb3V0cHV0IG9mIGFueQotLS5cIiBkb2N1bWVudCBmb3JtYXR0aW5nIG9yIHR5cGVzZXR0aW5nIHN5c3RlbSwgaW5jbHVkaW5nCi0tLlwiIGludGVybWVkaWF0ZSBhbmQgcHJpbnRlZCBvdXRwdXQuCi0tLlwiCi0tLlwiIFRoaXMgbWFudWFsIGlzIGRpc3RyaWJ1dGVkIGluIHRoZSBob3BlIHRoYXQgaXQgd2lsbCBiZSB1c2VmdWwsCi0tLlwiIGJ1dCBXSVRIT1VUIEFOWSBXQVJSQU5UWTsgd2l0aG91dCBldmVuIHRoZSBpbXBsaWVkIHdhcnJhbnR5IG9mCi0tLlwiIE1FUkNIQU5UQUJJTElUWSBvciBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIgUFVSUE9TRS4gIFNlZSB0aGUKLS0uXCIgR05VIEdlbmVyYWwgUHVibGljIExpY2Vuc2UgZm9yIG1vcmUgZGV0YWlscy4KLS0uXCIKLS0uXCIgWW91IHNob3VsZCBoYXZlIHJlY2VpdmVkIGEgY29weSBvZiB0aGUgR05VIEdlbmVyYWwgUHVibGljCi0tLlwiIExpY2Vuc2UgYWxvbmcgd2l0aCB0aGlzIG1hbnVhbC4gIElmIG5vdCwgc2VlCi0tLlwiIDxodHRwOi8vd3d3LmdudS5vcmcvbGljZW5zZXMvPi4KLS0uXCIKLS0uVEggU0VUWEFUVFIgMiAiRXh0ZW5kZWQgQXR0cmlidXRlcyIgIkRlYyAyMDAxIiAiU3lzdGVtIGNhbGxzIgotLS5TSCBOQU1FCi0tc2V0eGF0dHIsIGxzZXR4YXR0ciwgZnNldHhhdHRyIFwtIHNldCBhbiBleHRlbmRlZCBhdHRyaWJ1dGUgdmFsdWUKLS0uU0ggU1lOT1BTSVMKLS0uZmFtIEMKLS0ubmYKLS0uQiAjaW5jbHVkZSA8c3lzL3R5cGVzLmg+Ci0tLkIgI2luY2x1ZGUgPGF0dHIveGF0dHIuaD4KLS0uc3AKLS0uQkkgImludCBzZXR4YXR0ciAoY29uc3QgY2hhclwgKiIgcGF0aCAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICIsCi0tLkJJICJcdFx0XHQgY29uc3Qgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSAiLCBpbnQgIiBmbGFncyApOwotLS5CSSAiaW50IGxzZXR4YXR0ciAoY29uc3QgY2hhclwgKiIgcGF0aCAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICIsCi0tLkJJICJcdFx0XHQgY29uc3Qgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSAiLCBpbnQgIiBmbGFncyApOwotLS5CSSAiaW50IGZzZXR4YXR0ciAoaW50ICIgZmlsZWRlcyAiLCBjb25zdCBjaGFyXCAqIiBuYW1lICIsCi0tLkJJICJcdFx0XHQgY29uc3Qgdm9pZFwgKiIgdmFsdWUgIiwgc2l6ZV90ICIgc2l6ZSAiLCBpbnQgIiBmbGFncyApOwotLS5maQotLS5mYW0gVAotLS5TSCBERVNDUklQVElPTgotLUV4dGVuZGVkIGF0dHJpYnV0ZXMgYXJlCi0tLklSIG5hbWUgOlxjCi0tLkkgdmFsdWUKLS1wYWlycyBhc3NvY2lhdGVkIHdpdGggaW5vZGVzIChmaWxlcywgZGlyZWN0b3JpZXMsIHN5bWxpbmtzLCBldGMpLgotLVRoZXkgYXJlIGV4dGVuc2lvbnMgdG8gdGhlIG5vcm1hbCBhdHRyaWJ1dGVzIHdoaWNoIGFyZSBhc3NvY2lhdGVkCi0td2l0aCBhbGwgaW5vZGVzIGluIHRoZSBzeXN0ZW0gKGkuZS4gdGhlCi0tLkJSIHN0YXQgKDIpCi0tZGF0YSkuCi0tQSBjb21wbGV0ZSBvdmVydmlldyBvZiBleHRlbmRlZCBhdHRyaWJ1dGVzIGNvbmNlcHRzIGNhbiBiZSBmb3VuZCBpbgotLS5CUiBhdHRyICg1KS4KLS0uUFAKLS0uQiBzZXR4YXR0cgotLXNldHMgdGhlCi0tLkkgdmFsdWUKLS1vZiB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIGlkZW50aWZpZWQgYnkKLS0uSSBuYW1lCi0tYW5kIGFzc29jaWF0ZWQgd2l0aCB0aGUgZ2l2ZW4KLS0uSSBwYXRoCi0taW4gdGhlIGZpbGVzeXN0ZW0uCi0tVGhlCi0tLkkgc2l6ZQotLW9mIHRoZQotLS5JIHZhbHVlCi0tbXVzdCBiZSBzcGVjaWZpZWQuCi0tLlBQCi0tLkIgbHNldHhhdHRyCi0taXMgaWRlbnRpY2FsIHRvIAotLS5CUiBzZXR4YXR0ciAsCi0tZXhjZXB0IGluIHRoZSBjYXNlIG9mIGEgc3ltYm9saWMgbGluaywgd2hlcmUgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcwotLXNldCBvbiB0aGUgbGluayBpdHNlbGYsIG5vdCB0aGUgZmlsZSB0aGF0IGl0IHJlZmVycyB0by4KLS0uUFAKLS0uQiBmc2V0eGF0dHIKLS1pcyBpZGVudGljYWwgdG8KLS0uQlIgc2V0eGF0dHIgLAotLW9ubHkgdGhlIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBzZXQgb24gdGhlIG9wZW4gZmlsZSBwb2ludGVkIHRvIGJ5Ci0tLkkgZmlsZWRlcwotLShhcyByZXR1cm5lZCBieQotLS5CUiBvcGVuICgyKSkKLS1pbiBwbGFjZSBvZgotLS5JUiBwYXRoIC4KLS0uUFAKLS1BbiBleHRlbmRlZCBhdHRyaWJ1dGUgbmFtZSBpcyBhIHNpbXBsZSBOVUxMLXRlcm1pbmF0ZWQgc3RyaW5nLgotLVRoZQotLS5JIG5hbWUKLS1pbmNsdWRlcyBhIG5hbWVzcGFjZSBwcmVmaXggXC0gdGhlcmUgbWF5IGJlIHNldmVyYWwsIGRpc2pvaW50Ci0tbmFtZXNwYWNlcyBhc3NvY2lhdGVkIHdpdGggYW4gaW5kaXZpZHVhbCBpbm9kZS4KLS1UaGUKLS0uSSB2YWx1ZQotLW9mIGFuIGV4dGVuZGVkIGF0dHJpYnV0ZSBpcyBhIGNodW5rIG9mIGFyYml0cmFyeSB0ZXh0dWFsIG9yCi0tYmluYXJ5IGRhdGEgb2Ygc3BlY2lmaWVkIGxlbmd0aC4KLS0uUFAKLS1UaGUKLS0uSSBmbGFncwotLXBhcmFtZXRlciBjYW4gYmUgdXNlZCB0byByZWZpbmUgdGhlIHNlbWFudGljcyBvZiB0aGUgb3BlcmF0aW9uLgotLVhBVFRSX0NSRUFURSBzcGVjaWZpZXMgYSBwdXJlIGNyZWF0ZSwgd2hpY2ggZmFpbHMgaWYgdGhlIG5hbWVkCi0tYXR0cmlidXRlIGV4aXN0cyBhbHJlYWR5LgotLVhBVFRSX1JFUExBQ0Ugc3BlY2lmaWVzIGEgcHVyZSByZXBsYWNlIG9wZXJhdGlvbiwgd2hpY2ggZmFpbHMgaWYgdGhlCi0tbmFtZWQgYXR0cmlidXRlIGRvZXMgbm90IGFscmVhZHkgZXhpc3QuCi0tQnkgZGVmYXVsdCAobm8gZmxhZ3MpLCB0aGUgZXh0ZW5kZWQgYXR0cmlidXRlIHdpbGwgYmUgY3JlYXRlZCBpZgotLW5lZWQgYmUsIG9yIHdpbGwgc2ltcGx5IHJlcGxhY2UgdGhlIHZhbHVlIGlmIHRoZSBhdHRyaWJ1dGUgZXhpc3RzLgotLS5TSCBSRVRVUk4gVkFMVUUKLS1PbiBzdWNjZXNzLCB6ZXJvIGlzIHJldHVybmVkLgotLU9uIGZhaWx1cmUsIFwtMSBpcyByZXR1cm5lZCBhbmQKLS0uSSBlcnJubwotLWlzIHNldCBhcHByb3ByaWF0ZWx5LgotLS5QUAotLUlmIFhBVFRSX0NSRUFURSBpcyBzcGVjaWZpZWQsIGFuZCB0aGUgYXR0cmlidXRlIGV4aXN0cyBhbHJlYWR5LAotLS5JIGVycm5vCi0taXMgc2V0IHRvIEVFWElTVC4KLS1JZiBYQVRUUl9SRVBMQUNFIGlzIHNwZWNpZmllZCwgYW5kIHRoZSBhdHRyaWJ1dGUgZG9lcyBub3QgZXhpc3QsCi0tLkkgZXJybm8KLS1pcyBzZXQgdG8gRU5PQVRUUi4KLS0uUFAKLS1JZiB0aGVyZSBpcyBpbnN1ZmZpY2llbnQgc3BhY2UgcmVtYWluaW5nIHRvIHN0b3JlIHRoZSBleHRlbmRlZCBhdHRyaWJ1dGUsCi0tLkkgZXJybm8KLS1pcyBzZXQgdG8gZWl0aGVyIEVOT1NQQywgb3IgRURRVU9UIGlmIHF1b3RhIGVuZm9yY2VtZW50IHdhcyB0aGUgY2F1c2UuCi0tLlBQCi0tSWYgZXh0ZW5kZWQgYXR0cmlidXRlcyBhcmUgbm90IHN1cHBvcnRlZCBieSB0aGUgZmlsZXN5c3RlbSwgb3IgYXJlIGRpc2FibGVkLAotLS5JIGVycm5vCi0taXMgc2V0IHRvIEVOT1RTVVAuCi0tLlBQCi0tVGhlIGVycm9ycyBkb2N1bWVudGVkIGZvciB0aGUKLS0uQlIgc3RhdCAoMikKLS1zeXN0ZW0gY2FsbCBhcmUgYWxzbyBhcHBsaWNhYmxlIGhlcmUuCi0tLlNIIEFVVEhPUlMKLS1BbmRyZWFzIEdydWVuYmFjaGVyLAotLS5SSSA8IGEuZ3J1ZW5iYWNoZXJAYmVzdGJpdHMuYXQgPgotLWFuZCB0aGUgU0dJIFhGUyBkZXZlbG9wbWVudCB0ZWFtLAotLS5SSSA8IGxpbnV4LXhmc0Bvc3Muc2dpLmNvbSA+LgotLVBsZWFzZSBzZW5kIGFueSBidWcgcmVwb3J0cyBvciBjb21tZW50cyB0byB0aGVzZSBhZGRyZXNzZXMuCi0tLlNIIFNFRSBBTFNPCi0tLkJSIGdldGZhdHRyICgxKSwKLS0uQlIgc2V0ZmF0dHIgKDEpLAotLS5CUiBvcGVuICgyKSwKLS0uQlIgc3RhdCAoMiksCi0tLkJSIGdldHhhdHRyICgyKSwKLS0uQlIgbGlzdHhhdHRyICgyKSwKLS0uQlIgcmVtb3ZleGF0dHIgKDIpLAotLWFuZAotLS5CUiBhdHRyICg1KS4KLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL3JlbGF0aXZlLWxpYmRpci5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYXR0ci9maWxlcy9yZWxhdGl2ZS1saWJkaXIucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGI3MmJmMTguLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL3JlbGF0aXZlLWxpYmRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi11c2UgcmVsYXRpdmUgcGF0aCBpbiBzeW1ib2xpYyBsaW5rcywgb3IgaXQgZmFpbHMgaW4gc3RhZ2luZwotc2VkIGV4cHJlc3Npb24gZnJvbSB1ZGV2Ci0KLTcvMjkvMjAxMCAtIGNyZWF0ZWQgYnkgUWluZyBIZSA8cWluZy5oZUBpbnRlbC5jb20+Ci0KLWRpZmYgLXUgaW5jbHVkZS5vcmlnL2J1aWxkbWFjcm9zIGluY2x1ZGUvYnVpbGRtYWNyb3MKLS0tLSBpbmNsdWRlLm9yaWcvYnVpbGRtYWNyb3MJMjAxMC0wNy0yOSAxNzozOTo0OC4wMDAwMDAwMDAgKzA4MDAKLSsrKyBpbmNsdWRlL2J1aWxkbWFjcm9zCTIwMTAtMDctMjkgMTg6MjA6MzQuMDAwMDAwMDAwICswODAwCi1AQCAtODgsOSArODgsMTEgQEAKLSAJLi4vJChJTlNUQUxMKSAtbSA3NTUgLWQgJChQS0dfTElCX0RJUik7IFwKLSAJLi4vJChJTlNUQUxMKSAtVCBzb19iYXNlICQoTElCTkFNRSkubGFpICQoUEtHX0xJQl9ESVIpOyBcCi0gCWlmIHRlc3QgIngkKFBLR19ERVZMSUJfRElSKSIgIT0gIngkKFBLR19MSUJfRElSKSIgOyB0aGVuIFwKLS0JLi4vJChJTlNUQUxMKSAtUyAkKFBLR19ERVZMSUJfRElSKS8kKExJQk5BTUUpLmEgJChQS0dfTElCX0RJUikvJChMSUJOQU1FKS5hOyBcCi0tCS4uLyQoSU5TVEFMTCkgLVMgJChQS0dfREVWTElCX0RJUikvJChMSUJOQU1FKS5sYSAkKFBLR19MSUJfRElSKS8kKExJQk5BTUUpLmxhOyBcCi0tCS4uLyQoSU5TVEFMTCkgLVMgJChQS0dfTElCX0RJUikvJChMSUJOQU1FKS5zbyAkKFBLR19ERVZMSUJfRElSKS8kKExJQk5BTUUpLnNvOyBcCi0rCXJlbF9saWJfcHJlZml4PSQkKGVjaG8gJChQS0dfTElCX0RJUikgfCBzZWQgJ3MsXCheL1x8XClbXi9dW14vXSosLi4sZycpOyBcCi0rCS4uLyQoSU5TVEFMTCkgLVMgJCRyZWxfbGliX3ByZWZpeCQoUEtHX0RFVkxJQl9ESVIpLyQoTElCTkFNRSkuYSAkKFBLR19MSUJfRElSKS8kKExJQk5BTUUpLmE7IFwKLSsJLi4vJChJTlNUQUxMKSAtUyAkJHJlbF9saWJfcHJlZml4JChQS0dfREVWTElCX0RJUikvJChMSUJOQU1FKS5sYSAkKFBLR19MSUJfRElSKS8kKExJQk5BTUUpLmxhOyBcCi0rCXJlbF9kZXZsaWJfcHJlZml4PSQkKGVjaG8gJChQS0dfREVWTElCX0RJUikgfCBzZWQgJ3MsXCheL1x8XClbXi9dW14vXSosLi4sZycpOyBcCi0rCS4uLyQoSU5TVEFMTCkgLVMgJCRyZWxfZGV2bGliX3ByZWZpeCQoUEtHX0xJQl9ESVIpLyQoTElCTkFNRSkuc28gJChQS0dfREVWTElCX0RJUikvJChMSUJOQU1FKS5zbzsgXAotIAlmaQotIGVsc2UKLSBJTlNUQUxMX0xUTElCX0RFViA9ICQoSU5TVEFMTF9MVExJQl9TVEFUSUMpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZmlsZXMvcnVuLXB0ZXN0IGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9hdHRyL2ZpbGVzL3J1bi1wdGVzdApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYTZjNjg2Ny4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2F0dHIvZmlsZXMvcnVuLXB0ZXN0CisrKyAvZGV2L251bGwKQEAgLTEsNSArMCwwIEBACi0jIS9iaW4vc2gKLQotbWFrZSAtQyB0ZXN0IC1rIHRlc3RzIHJvb3QtdGVzdHMgfHNlZCBcCi0gLWUgJ3N8XlxbLipcXSBcKC4qXCkgLS0gb2skfFBBU1M6IFwxfCcgXAotIC1lICdzfF5cWy4qXF0gXCguKlwpIC0tIGZhaWxlZHxGQUlMOiBcMXwnCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmFzaC1jb21wbGV0aW9uL2Jhc2gtY29tcGxldGlvbl8yLjEwLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjA0MWFmNzQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi4xMC5iYgpAQCAtMCwwICsxLDM3IEBACitTVU1NQVJZID0gIlByb2dyYW1tYWJsZSBDb21wbGV0aW9uIGZvciBCYXNoIDQiCitIT01FUEFHRSA9ICJodHRwOi8vYmFzaC1jb21wbGV0aW9uLmFsaW90aC5kZWJpYW4ub3JnLyIKK0JVR1RSQUNLRVIgPSAiaHR0cHM6Ly9hbGlvdGguZGViaWFuLm9yZy9wcm9qZWN0cy9iYXNoLWNvbXBsZXRpb24vIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCisKK1NFQ1RJT04gPSAiY29uc29sZS91dGlscyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2NvcC9iYXNoLWNvbXBsZXRpb24vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci54eiIKKworU1JDX1VSSVttZDVzdW1dID0gImYzNzZhZTMyNjZjYzcwMDE3YWE4MzNjMzliNzZmOTg0IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjEyM2MxNzk5OGUzNGI5MzdjZTU3YmIxYjExMWNkODE3YmMzNjkzMDllOWE4MDQ3YzBiY2YwNmVhZDRhM2VjOTIiCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJiYXNoLWNvbXBsZXRpb24tKD9QPHB2ZXI+KD8hMjAwOCkuKylcLnRhciIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2NvcC9iYXNoLWNvbXBsZXRpb24vcmVsZWFzZXMiCisKK1BBUkFMTEVMX01BS0UgPSAiIgorCitpbmhlcml0IGF1dG90b29scworCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIGNvbXBhdGRpcgorCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYmFzaF9jb21wbGV0aW9uLmQvCisJZWNobyAnLiAke2RhdGFkaXJ9LyR7QlBOfS9iYXNoX2NvbXBsZXRpb24nID4ke0R9JHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24KKworfQorCitSREVQRU5EU18ke1BOfSA9ICJiYXNoIgorCisjIFNvbWUgcmVjaXBlcyBhcmUgcHJvdmlkaW5nICR7UE59LWJhc2gtY29tcGxldGlvbiBwYWNrYWdlcworUEFDS0FHRVMgPSsgIiR7UE59LWV4dHJhIgorRklMRVNfJHtQTn0tZXh0cmEgPSAiJHtkYXRhZGlyfS8ke0JQTn0vY29tcGxldGlvbnMvIFwKKyAgICAke2RhdGFkaXJ9LyR7QlBOfS9oZWxwZXJzLyIKKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmFzaC1jb21wbGV0aW9uL2Jhc2gtY29tcGxldGlvbl8yLjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jhc2gtY29tcGxldGlvbi9iYXNoLWNvbXBsZXRpb25fMi45LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBjZDJjNGNiLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYmFzaC1jb21wbGV0aW9uL2Jhc2gtY29tcGxldGlvbl8yLjkuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIlByb2dyYW1tYWJsZSBDb21wbGV0aW9uIGZvciBCYXNoIDQiCi1IT01FUEFHRSA9ICJodHRwOi8vYmFzaC1jb21wbGV0aW9uLmFsaW90aC5kZWJpYW4ub3JnLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9hbGlvdGguZGViaWFuLm9yZy9wcm9qZWN0cy9iYXNoLWNvbXBsZXRpb24vIgotCi1MSUNFTlNFID0gIkdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzUxNDE5MjYwYWE5NTQ0OTlmN2FiYWFiYWE4ODJiYmUiCi0KLVNFQ1RJT04gPSAiY29uc29sZS91dGlscyIKLQotU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2NvcC9iYXNoLWNvbXBsZXRpb24vcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vJHtCUE59LSR7UFZ9LnRhci54eiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjYwMTM5MzMzYjI1YzRkNTRhZDQwMzIzYjcwMWJlMTMwIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImQ0OGZlMzc4ZTczMTA2MmY0NzljNWY4ODAyZmZhOWQzYzQwYTI3NWExOWU2ZTBmNmY2Y2M0YjkwZmExMmIyZjUiCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJiYXNoLWNvbXBsZXRpb24tKD9QPHB2ZXI+KD8hMjAwOCkuKylcLnRhciIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vc2NvcC9iYXNoLWNvbXBsZXRpb24vcmVsZWFzZXMiCi0KLVBBUkFMTEVMX01BS0UgPSAiIgotCi1pbmhlcml0IGF1dG90b29scwotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIGNvbXBhdGRpcgotCWluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vYmFzaF9jb21wbGV0aW9uLmQvCi0JZWNobyAnLiAke2RhdGFkaXJ9LyR7QlBOfS9iYXNoX2NvbXBsZXRpb24nID4ke0R9JHtzeXNjb25mZGlyfS9iYXNoX2NvbXBsZXRpb24KLQotfQotCi1SREVQRU5EU18ke1BOfSA9ICJiYXNoIgotCi0jIFNvbWUgcmVjaXBlcyBhcmUgcHJvdmlkaW5nICR7UE59LWJhc2gtY29tcGxldGlvbiBwYWNrYWdlcwotUEFDS0FHRVMgPSsgIiR7UE59LWV4dHJhIgotRklMRVNfJHtQTn0tZXh0cmEgPSAiJHtkYXRhZGlyfS8ke0JQTn0vY29tcGxldGlvbnMvIFwKLSAgICAke2RhdGFkaXJ9LyR7QlBOfS9oZWxwZXJzLyIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L2NtYWtlIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYmphbS1uYXRpdmVfMS43MS4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9iamFtLW5hdGl2ZV8xLjcyLjAuYmIKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYmphbS1uYXRpdmVfMS43MS4wLmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2JqYW0tbmF0aXZlXzEuNzIuMC5iYgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjcxLjAuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjcxLjAuaW5jCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3MTY0ZDBmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QtMS43MS4wLmluYworKysgL2Rldi9udWxsCkBAIC0xLDIxICswLDAgQEAKLSMgVGhlIEJvb3N0IHdlYiBzaXRlIHByb3ZpZGVzIGZyZWUgcGVlci1yZXZpZXdlZCBwb3J0YWJsZQotIyBDKysgc291cmNlIGxpYnJhcmllcy4gVGhlIGVtcGhhc2lzIGlzIG9uIGxpYnJhcmllcyB3aGljaAotIyB3b3JrIHdlbGwgd2l0aCB0aGUgQysrIFN0YW5kYXJkIExpYnJhcnkuIFRoZSBsaWJyYXJpZXMgYXJlCi0jIGludGVuZGVkIHRvIGJlIHdpZGVseSB1c2VmdWwsIGFuZCBhcmUgaW4gcmVndWxhciB1c2UgYnkKLSMgdGhvdXNhbmRzIG9mIHByb2dyYW1tZXJzIGFjcm9zcyBhIGJyb2FkIHNwZWN0cnVtIG9mIGFwcGxpY2F0aW9ucy4KLUhPTUVQQUdFID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnLyIKLUxJQ0VOU0UgPSAiQlNMLTEuMCAmIE1JVCAmIFB5dGhvbi0yLjAiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFXzFfMC50eHQ7bWQ1PWU0MjI0Y2NhZWNiMTRkOTQyYzcxZDMxYmVmMjBkNzhjIgotCi1CT09TVF9WRVIgPSAiJHtAIl8iLmpvaW4oZC5nZXRWYXIoIlBWIikuc3BsaXQoIi4iKSl9IgotQk9PU1RfTUFKID0gIiR7QCJfIi5qb2luKGQuZ2V0VmFyKCJQViIpLnNwbGl0KCIuIilbMDoyXSl9IgotQk9PU1RfUCA9ICJib29zdF8ke0JPT1NUX1ZFUn0iCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9kbC5iaW50cmF5LmNvbS9ib29zdG9yZy9yZWxlYXNlLyR7UFZ9L3NvdXJjZS8ke0JPT1NUX1B9LnRhci5iejIiCi1TUkNfVVJJW21kNXN1bV0gPSAiNGNkZjliNWMyZGMwMWZiMmI3YjczM2Q1YWYzMGU1NTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZDczYThkYTAxZThiZjhjN2VkYTQwYjRjODQ5MTUwNzFhOGM4YTBkZjRhNjczNDUzN2RkZGU0YTg1ODA1MjRlZSIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly93d3cuYm9vc3Qub3JnL3VzZXJzL2Rvd25sb2FkLyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gImJvb3N0b3JnL3JlbGVhc2UvKD9QPHB2ZXI+LiopL3NvdXJjZS8iCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JPT1NUX1B9IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjcyLjAuaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdC0xLjcyLjAuaW5jCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU1YTA5NWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LTEuNzIuMC5pbmMKQEAgLTAsMCArMSwyMSBAQAorIyBUaGUgQm9vc3Qgd2ViIHNpdGUgcHJvdmlkZXMgZnJlZSBwZWVyLXJldmlld2VkIHBvcnRhYmxlCisjIEMrKyBzb3VyY2UgbGlicmFyaWVzLiBUaGUgZW1waGFzaXMgaXMgb24gbGlicmFyaWVzIHdoaWNoCisjIHdvcmsgd2VsbCB3aXRoIHRoZSBDKysgU3RhbmRhcmQgTGlicmFyeS4gVGhlIGxpYnJhcmllcyBhcmUKKyMgaW50ZW5kZWQgdG8gYmUgd2lkZWx5IHVzZWZ1bCwgYW5kIGFyZSBpbiByZWd1bGFyIHVzZSBieQorIyB0aG91c2FuZHMgb2YgcHJvZ3JhbW1lcnMgYWNyb3NzIGEgYnJvYWQgc3BlY3RydW0gb2YgYXBwbGljYXRpb25zLgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5ib29zdC5vcmcvIgorTElDRU5TRSA9ICJCU0wtMS4wICYgTUlUICYgUHl0aG9uLTIuMCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0VfMV8wLnR4dDttZDU9ZTQyMjRjY2FlY2IxNGQ5NDJjNzFkMzFiZWYyMGQ3OGMiCisKK0JPT1NUX1ZFUiA9ICIke0AiXyIuam9pbihkLmdldFZhcigiUFYiKS5zcGxpdCgiLiIpKX0iCitCT09TVF9NQUogPSAiJHtAIl8iLmpvaW4oZC5nZXRWYXIoIlBWIikuc3BsaXQoIi4iKVswOjJdKX0iCitCT09TVF9QID0gImJvb3N0XyR7Qk9PU1RfVkVSfSIKKworU1JDX1VSSSA9ICJodHRwczovL2RsLmJpbnRyYXkuY29tL2Jvb3N0b3JnL3JlbGVhc2UvJHtQVn0vc291cmNlLyR7Qk9PU1RfUH0udGFyLmJ6MiIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjYjQwOTQzZDJhMmNiOGNlMDhkNDJiYzQ4YjBmODRmMCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI1OWM5YjI3NGJjNDUxY2Y5MWE5YmExZGQyYzdmZGNhZjVkNjBiMWIzYWE4M2YyYzlmYTE0MzQxN2NjNjYwNzIyIgorCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL3d3dy5ib29zdC5vcmcvdXNlcnMvZG93bmxvYWQvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAiYm9vc3RvcmcvcmVsZWFzZS8oP1A8cHZlcj4uKikvc291cmNlLyIKKworUyA9ICIke1dPUktESVJ9LyR7Qk9PU1RfUH0iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0LmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jCmluZGV4IGUxNWRjZTQuLjhlYjk0OTQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3QuaW5jCkBAIC0yMDIsNiArMjAyLDExIEBACiAJCWZpCiAJZG9uZQogCisgICAgICAgICMgQ21ha2UgZmlsZXMgcmVmZXJlbmNlIGZ1bGwgcGF0aHMgdG8gaW1hZ2UKKyAgICAgICAgZmluZCAke0R9JHtsaWJkaXJ9L2NtYWtlIC10eXBlIGYgfCBcCisgICAgICAgICAgICAgZ3JlcCAnY21ha2UkJyB8IFwKKyAgICAgICAgICAgICB4YXJncyAtbiAxIHNlZCAtZSAncywke0R9JHtsaWJkaXJ9L2NtYWtlLCR7bGliZGlyfS9jbWFrZSwnIC1pCisKIH0KIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjcxLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNzEuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNWU5ZTBkOC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2Jvb3N0XzEuNzEuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDEwICswLDAgQEAKLXJlcXVpcmUgYm9vc3QtJHtQVn0uaW5jCi1yZXF1aXJlIGJvb3N0LmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vYXJtLWludHJpbnNpY3MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYm9vc3QtQ1ZFLTIwMTItMjY3Ny5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9ib29zdC1tYXRoLWRpc2FibGUtcGNoLWZvci1nY2MucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1BcHBseS1ib29zdC0xLjYyLjAtbm8tZm9yY2VkLWZsYWdzLnBhdGNoLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtc2V0LXVwLWFyY2gtaW5zdHJ1Y3Rpb24tc2V0LWZsYWdzLXdlLWRvLXRoYXQtby5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWRvbnQtc2V0dXAtY29tcGlsZXItZmxhZ3MtbTMyLW02NC5wYXRjaCBcCi0gICAgICAgICAgICIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS43Mi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9ib29zdF8xLjcyLjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMGI3YmFkYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvYm9vc3QvYm9vc3RfMS43Mi4wLmJiCkBAIC0wLDAgKzEsMTEgQEAKK3JlcXVpcmUgYm9vc3QtJHtQVn0uaW5jCityZXF1aXJlIGJvb3N0LmluYworCitTUkNfVVJJICs9ICJmaWxlOi8vYXJtLWludHJpbnNpY3MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vYm9vc3QtQ1ZFLTIwMTItMjY3Ny5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly9ib29zdC1tYXRoLWRpc2FibGUtcGNoLWZvci1nY2MucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BcHBseS1ib29zdC0xLjYyLjAtbm8tZm9yY2VkLWZsYWdzLnBhdGNoLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG9uLXQtc2V0LXVwLWFyY2gtaW5zdHJ1Y3Rpb24tc2V0LWZsYWdzLXdlLWRvLXRoYXQtby5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWRvbnQtc2V0dXAtY29tcGlsZXItZmxhZ3MtbTMyLW02NC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJldmVydC1jZWFzZS1kZXBlbmRlbmNlLW9uLXJhbmdlLnBhdGNoIFwKKyAgICAgICAgICAgIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLXJldmVydC1jZWFzZS1kZXBlbmRlbmNlLW9uLXJhbmdlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ib29zdC9maWxlcy8wMDAxLXJldmVydC1jZWFzZS1kZXBlbmRlbmNlLW9uLXJhbmdlLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ2ZDA5YTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2Jvb3N0L2ZpbGVzLzAwMDEtcmV2ZXJ0LWNlYXNlLWRlcGVuZGVuY2Utb24tcmFuZ2UucGF0Y2gKQEAgLTAsMCArMSw1MyBAQAorRnJvbSA0MzZlMWRiZTZmY2QzMTUyM2QyNjFkMThhZDAxMTM5MmYxZDZmYmJjIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogT2xpdmVyIEtvd2Fsa2UgPG9saXZlci5rb3dhbGtlQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMSBEZWMgMjAxOSAyMDo0MDoyOCArMDEwMAorU3ViamVjdDogW1BBVENIXSBSZXZlcnQgIkNlYXNlIGRlcGVuZGVuY2Ugb24gUmFuZ2UiCisKK1RoaXMgcmV2ZXJ0cyBjb21taXQgMGM1NTZiYjU5MjQxZTY4MmJiY2QzZjU3MjgxNTE0OWM1YTliMTdkYi4KKworc2VlICM0NCAoT25lIHRlc3QgZmFpbHMgdG8gY29tcGlsZSBhZnRlciBib29zdG9yZy9jb3JvdXRpbmUgc3VibW9kdWxlIHVwZGF0ZWQpCisKK1Vwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0aHViLmNvbS9ib29zdG9yZy9jb3JvdXRpbmUvY29tbWl0LzljNzNiMmY3YzE3NTlhOTUwOGJhODc4MGIzOGRjMTVmMDdmMWE0NDddCisKK1NpZ25lZC1vZmYtYnk6IEFuZHJldyBHZWlzc2xlciA8Z2Vpc3NvbmF0b3JAZ21haWwuY29tPgorLS0tCisgYm9vc3QvY29yb3V0aW5lL2FzeW1tZXRyaWNfY29yb3V0aW5lLmhwcCB8IDEyICsrKy0tLS0tLS0tLQorIDEgZmlsZSBjaGFuZ2VkLCAzIGluc2VydGlvbnMoKyksIDkgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9ib29zdC9jb3JvdXRpbmUvYXN5bW1ldHJpY19jb3JvdXRpbmUuaHBwIGIvYm9vc3QvY29yb3V0aW5lL2FzeW1tZXRyaWNfY29yb3V0aW5lLmhwcAoraW5kZXggZWE5Njk4MS4uNjQwODk2ZiAxMDA2NDQKKy0tLSBhL2Jvb3N0L2Nvcm91dGluZS9hc3ltbWV0cmljX2Nvcm91dGluZS5ocHAKKysrKyBiL2Jvb3N0L2Nvcm91dGluZS9hc3ltbWV0cmljX2Nvcm91dGluZS5ocHAKK0BAIC0xNCw2ICsxNCw3IEBACisgI2luY2x1ZGUgPGJvb3N0L2Fzc2VydC5ocHA+CisgI2luY2x1ZGUgPGJvb3N0L2NvbmZpZy5ocHA+CisgI2luY2x1ZGUgPGJvb3N0L21vdmUvbW92ZS5ocHA+CisrI2luY2x1ZGUgPGJvb3N0L3JhbmdlLmhwcD4KKyAjaW5jbHVkZSA8Ym9vc3QvdGhyb3dfZXhjZXB0aW9uLmhwcD4KKyAjaW5jbHVkZSA8Ym9vc3QvdXRpbGl0eS9leHBsaWNpdF9vcGVyYXRvcl9ib29sLmhwcD4KKworQEAgLTIzNTQsMTkgKzIzNTUsMTIgQEAgZW5kKCBwdXNoX2Nvcm91dGluZTwgUiA+ICYgYykKKworIH0KKworLS8vIGZvcndhcmQgZGVjbGFyYXRpb24gb2YgQm9vc3QuUmFuZ2UgdHJhaXRzIHRvIGJyZWFrIGRlcGVuZGVuY3kgb24gaXQKKy10ZW1wbGF0ZTx0eXBlbmFtZSBDLCB0eXBlbmFtZSBFbmFibGVyPgorLXN0cnVjdCByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yOworLQorLXRlbXBsYXRlPHR5cGVuYW1lIEMsIHR5cGVuYW1lIEVuYWJsZXI+Cistc3RydWN0IHJhbmdlX2NvbnN0X2l0ZXJhdG9yOworLQorIHRlbXBsYXRlPCB0eXBlbmFtZSBBcmcgPgorLXN0cnVjdCByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yPCBjb3JvdXRpbmVzOjpwdXNoX2Nvcm91dGluZTwgQXJnID4sIHZvaWQgPgorK3N0cnVjdCByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yPCBjb3JvdXRpbmVzOjpwdXNoX2Nvcm91dGluZTwgQXJnID4gPgorIHsgdHlwZWRlZiB0eXBlbmFtZSBjb3JvdXRpbmVzOjpwdXNoX2Nvcm91dGluZTwgQXJnID46Oml0ZXJhdG9yIHR5cGU7IH07CisKKyB0ZW1wbGF0ZTwgdHlwZW5hbWUgUiA+Cistc3RydWN0IHJhbmdlX211dGFibGVfaXRlcmF0b3I8IGNvcm91dGluZXM6OnB1bGxfY29yb3V0aW5lPCBSID4sIHZvaWQgPgorK3N0cnVjdCByYW5nZV9tdXRhYmxlX2l0ZXJhdG9yPCBjb3JvdXRpbmVzOjpwdWxsX2Nvcm91dGluZTwgUiA+ID4KKyB7IHR5cGVkZWYgdHlwZW5hbWUgY29yb3V0aW5lczo6cHVsbF9jb3JvdXRpbmU8IFIgPjo6aXRlcmF0b3IgdHlwZTsgfTsKKworIH0KKy0tCisyLjI0LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy42Ny4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9jdXJsL2N1cmxfNy42Ny4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlMDhlMDhlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNjcuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDgwICswLDAgQEAKLVNVTU1BUlkgPSAiQ29tbWFuZCBsaW5lIHRvb2wgYW5kIGxpYnJhcnkgZm9yIGNsaWVudC1zaWRlIFVSTCB0cmFuc2ZlcnMiCi1IT01FUEFHRSA9ICJodHRwOi8vY3VybC5oYXh4LnNlLyIKLUJVR1RSQUNLRVIgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS9tYWlsL2xpc3QuY2dpP2xpc3Q9Y3VybC10cmFja2VyIgotU0VDVElPTiA9ICJjb25zb2xlL25ldHdvcmsiCi1MSUNFTlNFID0gIk1JVCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWJlNWQ5ZTE0MTljNDM2M2Y0YjMyMDM3YTJkM2I3ZmZhIgotCi1TUkNfVVJJID0gImh0dHA6Ly9jdXJsLmhheHguc2UvZG93bmxvYWQvY3VybC0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtcmVwbGFjZS1rcmI1LWNvbmZpZy13aXRoLXBrZy1jb25maWcucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiN2JlMjg4ZjZmZDViN2I1ZTQwMmVmM2IzNmE0NjFhMjQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiZGQ1ZjY5NTY4MjFhNTQ4YmY0YjQ0ZjA2N2E1MzBjZTk0NDVjYzgwOTRmZDNlN2UzZmM3ODU0ODE1ODU4NTg2YyIKLQotQ1ZFX1BST0RVQ1QgPSAiY3VybCBsaWJjdXJsIgotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGJpbmNvbmZpZyBtdWx0aWxpYl9oZWFkZXIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ2lwdjYnLCBkKX0gZ251dGxzIGxpYmlkbiBwcm94eSB0aHJlYWRlZC1yZXNvbHZlciB2ZXJib3NlIHpsaWIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZSA9ICJpcHY2IHByb3h5IHNzbCB0aHJlYWRlZC1yZXNvbHZlciB2ZXJib3NlIHpsaWIiCi1QQUNLQUdFQ09ORklHX2NsYXNzLW5hdGl2ZXNkayA9ICJpcHY2IHByb3h5IHNzbCB0aHJlYWRlZC1yZXNvbHZlciB2ZXJib3NlIHpsaWIiCi0KLSMgJ2FyZXMnIGFuZCAndGhyZWFkZWQtcmVzb2x2ZXInIGFyZSBtdXR1YWxseSBleGNsdXNpdmUKLVBBQ0tBR0VDT05GSUdbYXJlc10gPSAiLS1lbmFibGUtYXJlcywtLWRpc2FibGUtYXJlcyxjLWFyZXMiCi1QQUNLQUdFQ09ORklHW2Jyb3RsaV0gPSAiLS13aXRoLWJyb3RsaSwtLXdpdGhvdXQtYnJvdGxpLGJyb3RsaSIKLVBBQ0tBR0VDT05GSUdbYnVpbHRpbm1hbnVhbF0gPSAiLS1lbmFibGUtbWFudWFsLC0tZGlzYWJsZS1tYW51YWwiCi1QQUNLQUdFQ09ORklHW2RpY3RdID0gIi0tZW5hYmxlLWRpY3QsLS1kaXNhYmxlLWRpY3QsIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCi1QQUNLQUdFQ09ORklHW2dvcGhlcl0gPSAiLS1lbmFibGUtZ29waGVyLC0tZGlzYWJsZS1nb3BoZXIsIgotUEFDS0FHRUNPTkZJR1tpbWFwXSA9ICItLWVuYWJsZS1pbWFwLC0tZGlzYWJsZS1pbWFwLCIKLVBBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCi1QQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgotUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1sZGFwLC0tZGlzYWJsZS1sZGFwLCIKLVBBQ0tBR0VDT05GSUdbbGRhcHNdID0gIi0tZW5hYmxlLWxkYXBzLC0tZGlzYWJsZS1sZGFwcywiCi1QQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS13aXRoLWxpYmlkbjIsLS13aXRob3V0LWxpYmlkbjIsbGliaWRuMiIKLVBBQ0tBR0VDT05GSUdbbGlic3NoMl0gPSAiLS13aXRoLWxpYnNzaDIsLS13aXRob3V0LWxpYnNzaDIsbGlic3NoMiIKLVBBQ0tBR0VDT05GSUdbbWJlZHRsc10gPSAiLS13aXRoLW1iZWR0bHM9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LC0td2l0aG91dC1tYmVkdGxzLG1iZWR0bHMiCi1QQUNLQUdFQ09ORklHW25naHR0cDJdID0gIi0td2l0aC1uZ2h0dHAyLC0td2l0aG91dC1uZ2h0dHAyLG5naHR0cDIiCi1QQUNLQUdFQ09ORklHW3BvcDNdID0gIi0tZW5hYmxlLXBvcDMsLS1kaXNhYmxlLXBvcDMsIgotUEFDS0FHRUNPTkZJR1twcm94eV0gPSAiLS1lbmFibGUtcHJveHksLS1kaXNhYmxlLXByb3h5LCIKLVBBQ0tBR0VDT05GSUdbcnRtcGR1bXBdID0gIi0td2l0aC1saWJydG1wLC0td2l0aG91dC1saWJydG1wLHJ0bXBkdW1wIgotUEFDS0FHRUNPTkZJR1tydHNwXSA9ICItLWVuYWJsZS1ydHNwLC0tZGlzYWJsZS1ydHNwLCIKLVBBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS1zbWIsLS1kaXNhYmxlLXNtYiwiCi1QQUNLQUdFQ09ORklHW3NtdHBdID0gIi0tZW5hYmxlLXNtdHAsLS1kaXNhYmxlLXNtdHAsIgotUEFDS0FHRUNPTkZJR1tzc2xdID0gIi0td2l0aC1zc2wgLS13aXRoLXJhbmRvbT0vZGV2L3VyYW5kb20sLS13aXRob3V0LXNzbCxvcGVuc3NsIgotUEFDS0FHRUNPTkZJR1tuc3NdID0gIi0td2l0aC1uc3MsLS13aXRob3V0LW5zcyxuc3MiCi1QQUNLQUdFQ09ORklHW3RlbG5ldF0gPSAiLS1lbmFibGUtdGVsbmV0LC0tZGlzYWJsZS10ZWxuZXQsIgotUEFDS0FHRUNPTkZJR1t0ZnRwXSA9ICItLWVuYWJsZS10ZnRwLC0tZGlzYWJsZS10ZnRwLCIKLVBBQ0tBR0VDT05GSUdbdGhyZWFkZWQtcmVzb2x2ZXJdID0gIi0tZW5hYmxlLXRocmVhZGVkLXJlc29sdmVyLC0tZGlzYWJsZS10aHJlYWRlZC1yZXNvbHZlciIKLVBBQ0tBR0VDT05GSUdbdmVyYm9zZV0gPSAiLS1lbmFibGUtdmVyYm9zZSwtLWRpc2FibGUtdmVyYm9zZSIKLVBBQ0tBR0VDT05GSUdbemxpYl0gPSAiLS13aXRoLXpsaWI9JHtTVEFHSU5HX0xJQkRJUn0vLi4vLC0td2l0aG91dC16bGliLHpsaWIiCi0KLUVYVFJBX09FQ09ORiA9ICIgXAotICAgIC0tZGlzYWJsZS1saWJjdXJsLW9wdGlvbiBcCi0gICAgLS1kaXNhYmxlLW50bG0td2IgXAotICAgIC0tZW5hYmxlLWNyeXB0by1hdXRoIFwKLSAgICAtLXdpdGgtY2EtYnVuZGxlPSR7c3lzY29uZmRpcn0vc3NsL2NlcnRzL2NhLWNlcnRpZmljYXRlcy5jcnQgXAotICAgIC0td2l0aG91dC1saWJtZXRhbGluayBcCi0gICAgLS13aXRob3V0LWxpYnBzbCBcCi0iCi0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLQkjIGNsZWFudXAgYnVpbGRwYXRocyBmcm9tIGN1cmwtY29uZmlnCi0Jc2VkIC1pIFwKLQkgICAgLWUgJ3MsLS1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAotCSAgICAtZSAncywtLXdpdGgtbGlidG9vbC1zeXNyb290PSR7U1RBR0lOR19ESVJfVEFSR0VUfSwsZycgXAotCSAgICAtZSAnc3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnJyBcCi0JICAgICR7RH0ke2JpbmRpcn0vY3VybC1jb25maWcKLX0KLQotUEFDS0FHRVMgPSsgImxpYiR7QlBOfSIKLQotRklMRVNfbGliJHtCUE59ID0gIiR7bGliZGlyfS9saWIqLnNvLioiCi1SUkVDT01NRU5EU19saWIke0JQTn0gKz0gImNhLWNlcnRpZmljYXRlcyIKLQotRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0venNoIgotCi1pbmhlcml0IG11bHRpbGliX3NjcmlwdAotTVVMVElMSUJfU0NSSVBUUyA9ICIke1BOfS1kZXY6JHtiaW5kaXJ9L2N1cmwtY29uZmlnIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjY5LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2N1cmwvY3VybF83LjY5LjEuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZTg1NGU4ZAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvY3VybC9jdXJsXzcuNjkuMS5iYgpAQCAtMCwwICsxLDgwIEBACitTVU1NQVJZID0gIkNvbW1hbmQgbGluZSB0b29sIGFuZCBsaWJyYXJ5IGZvciBjbGllbnQtc2lkZSBVUkwgdHJhbnNmZXJzIgorSE9NRVBBR0UgPSAiaHR0cDovL2N1cmwuaGF4eC5zZS8iCitCVUdUUkFDS0VSID0gImh0dHA6Ly9jdXJsLmhheHguc2UvbWFpbC9saXN0LmNnaT9saXN0PWN1cmwtdHJhY2tlciIKK1NFQ1RJT04gPSAiY29uc29sZS9uZXR3b3JrIgorTElDRU5TRSA9ICJNSVQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT0yZTlmYjM1ODY3MzE0ZmUzMWM2YTQ5NzdlZjdkZDUzMSIKKworU1JDX1VSSSA9ICJodHRwOi8vY3VybC5oYXh4LnNlL2Rvd25sb2FkL2N1cmwtJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLXJlcGxhY2Uta3JiNS1jb25maWctd2l0aC1wa2ctY29uZmlnLnBhdGNoIFwKKyIKKworU1JDX1VSSVttZDVzdW1dID0gImVjNWZjMjYzZjg5OGEzZGZlZjA4ZTgwNWYxZWNjYTQyIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJmZjVlNWJkNTA3YWRmNmFhODhmZjRiYmFmZDRjN2FmNDY0ODY3ZmZiNjg4YmU5M2I5OTMwNzE3YTU2YzRkZTgiCisKK0NWRV9QUk9EVUNUID0gImN1cmwgbGliY3VybCIKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWcgbXVsdGlsaWJfaGVhZGVyCisKK1BBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IGdudXRscyBsaWJpZG4gcHJveHkgdGhyZWFkZWQtcmVzb2x2ZXIgdmVyYm9zZSB6bGliIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgdmVyYm9zZSB6bGliIgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmVzZGsgPSAiaXB2NiBwcm94eSBzc2wgdGhyZWFkZWQtcmVzb2x2ZXIgdmVyYm9zZSB6bGliIgorCisjICdhcmVzJyBhbmQgJ3RocmVhZGVkLXJlc29sdmVyJyBhcmUgbXV0dWFsbHkgZXhjbHVzaXZlCitQQUNLQUdFQ09ORklHW2FyZXNdID0gIi0tZW5hYmxlLWFyZXMsLS1kaXNhYmxlLWFyZXMsYy1hcmVzLCwsdGhyZWFkZWQtcmVzb2x2ZXIiCitQQUNLQUdFQ09ORklHW2Jyb3RsaV0gPSAiLS13aXRoLWJyb3RsaSwtLXdpdGhvdXQtYnJvdGxpLGJyb3RsaSIKK1BBQ0tBR0VDT05GSUdbYnVpbHRpbm1hbnVhbF0gPSAiLS1lbmFibGUtbWFudWFsLC0tZGlzYWJsZS1tYW51YWwiCitQQUNLQUdFQ09ORklHW2RpY3RdID0gIi0tZW5hYmxlLWRpY3QsLS1kaXNhYmxlLWRpY3QsIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0td2l0aC1nbnV0bHMsLS13aXRob3V0LWdudXRscyxnbnV0bHMiCitQQUNLQUdFQ09ORklHW2dvcGhlcl0gPSAiLS1lbmFibGUtZ29waGVyLC0tZGlzYWJsZS1nb3BoZXIsIgorUEFDS0FHRUNPTkZJR1tpbWFwXSA9ICItLWVuYWJsZS1pbWFwLC0tZGlzYWJsZS1pbWFwLCIKK1BBQ0tBR0VDT05GSUdbaXB2Nl0gPSAiLS1lbmFibGUtaXB2NiwtLWRpc2FibGUtaXB2NiwiCitQQUNLQUdFQ09ORklHW2tyYjVdID0gIi0td2l0aC1nc3NhcGksLS13aXRob3V0LWdzc2FwaSxrcmI1IgorUEFDS0FHRUNPTkZJR1tsZGFwXSA9ICItLWVuYWJsZS1sZGFwLC0tZGlzYWJsZS1sZGFwLCIKK1BBQ0tBR0VDT05GSUdbbGRhcHNdID0gIi0tZW5hYmxlLWxkYXBzLC0tZGlzYWJsZS1sZGFwcywiCitQQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS13aXRoLWxpYmlkbjIsLS13aXRob3V0LWxpYmlkbjIsbGliaWRuMiIKK1BBQ0tBR0VDT05GSUdbbGlic3NoMl0gPSAiLS13aXRoLWxpYnNzaDIsLS13aXRob3V0LWxpYnNzaDIsbGlic3NoMiIKK1BBQ0tBR0VDT05GSUdbbWJlZHRsc10gPSAiLS13aXRoLW1iZWR0bHM9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LC0td2l0aG91dC1tYmVkdGxzLG1iZWR0bHMiCitQQUNLQUdFQ09ORklHW25naHR0cDJdID0gIi0td2l0aC1uZ2h0dHAyLC0td2l0aG91dC1uZ2h0dHAyLG5naHR0cDIiCitQQUNLQUdFQ09ORklHW3BvcDNdID0gIi0tZW5hYmxlLXBvcDMsLS1kaXNhYmxlLXBvcDMsIgorUEFDS0FHRUNPTkZJR1twcm94eV0gPSAiLS1lbmFibGUtcHJveHksLS1kaXNhYmxlLXByb3h5LCIKK1BBQ0tBR0VDT05GSUdbcnRtcGR1bXBdID0gIi0td2l0aC1saWJydG1wLC0td2l0aG91dC1saWJydG1wLHJ0bXBkdW1wIgorUEFDS0FHRUNPTkZJR1tydHNwXSA9ICItLWVuYWJsZS1ydHNwLC0tZGlzYWJsZS1ydHNwLCIKK1BBQ0tBR0VDT05GSUdbc21iXSA9ICItLWVuYWJsZS1zbWIsLS1kaXNhYmxlLXNtYiwiCitQQUNLQUdFQ09ORklHW3NtdHBdID0gIi0tZW5hYmxlLXNtdHAsLS1kaXNhYmxlLXNtdHAsIgorUEFDS0FHRUNPTkZJR1tzc2xdID0gIi0td2l0aC1zc2wgLS13aXRoLXJhbmRvbT0vZGV2L3VyYW5kb20sLS13aXRob3V0LXNzbCxvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tuc3NdID0gIi0td2l0aC1uc3MsLS13aXRob3V0LW5zcyxuc3MiCitQQUNLQUdFQ09ORklHW3RlbG5ldF0gPSAiLS1lbmFibGUtdGVsbmV0LC0tZGlzYWJsZS10ZWxuZXQsIgorUEFDS0FHRUNPTkZJR1t0ZnRwXSA9ICItLWVuYWJsZS10ZnRwLC0tZGlzYWJsZS10ZnRwLCIKK1BBQ0tBR0VDT05GSUdbdGhyZWFkZWQtcmVzb2x2ZXJdID0gIi0tZW5hYmxlLXRocmVhZGVkLXJlc29sdmVyLC0tZGlzYWJsZS10aHJlYWRlZC1yZXNvbHZlciwsLCxhcmVzIgorUEFDS0FHRUNPTkZJR1t2ZXJib3NlXSA9ICItLWVuYWJsZS12ZXJib3NlLC0tZGlzYWJsZS12ZXJib3NlIgorUEFDS0FHRUNPTkZJR1t6bGliXSA9ICItLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLi8sLS13aXRob3V0LXpsaWIsemxpYiIKKworRVhUUkFfT0VDT05GID0gIiBcCisgICAgLS1kaXNhYmxlLWxpYmN1cmwtb3B0aW9uIFwKKyAgICAtLWRpc2FibGUtbnRsbS13YiBcCisgICAgLS1lbmFibGUtY3J5cHRvLWF1dGggXAorICAgIC0td2l0aC1jYS1idW5kbGU9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCBcCisgICAgLS13aXRob3V0LWxpYm1ldGFsaW5rIFwKKyAgICAtLXdpdGhvdXQtbGlicHNsIFwKKyIKKworZG9faW5zdGFsbF9hcHBlbmRfY2xhc3MtdGFyZ2V0KCkgeworCSMgY2xlYW51cCBidWlsZHBhdGhzIGZyb20gY3VybC1jb25maWcKKwlzZWQgLWkgXAorCSAgICAtZSAncywtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzLC0td2l0aC1saWJ0b29sLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9UQVJHRVR9LCxnJyBcCisJICAgIC1lICdzfCR7REVCVUdfUFJFRklYX01BUH18fGcnIFwKKwkgICAgJHtEfSR7YmluZGlyfS9jdXJsLWNvbmZpZworfQorCitQQUNLQUdFUyA9KyAibGliJHtCUE59IgorCitGSUxFU19saWIke0JQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28uKiIKK1JSRUNPTU1FTkRTX2xpYiR7QlBOfSArPSAiY2EtY2VydGlmaWNhdGVzIgorCitGSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS96c2giCisKK2luaGVyaXQgbXVsdGlsaWJfc2NyaXB0CitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWRldjoke2JpbmRpcn0vY3VybC1jb25maWciCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvMDAwMS1jbG9jay1Eby1ub3QtZGVmaW5lLW93bi10aW1lc3BlYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGIvMDAwMS1jbG9jay1Eby1ub3QtZGVmaW5lLW93bi10aW1lc3BlYy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDUxYTQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kYi9kYi8wMDAxLWNsb2NrLURvLW5vdC1kZWZpbmUtb3duLXRpbWVzcGVjLnBhdGNoCkBAIC0wLDAgKzEsNDUgQEAKK0Zyb20gOTZiMzAzY2FmNzBhNzYzNTk1M2MzNmU1YmZiOWFkNmU3NWNiNzYzNyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDE0IEZlYiAyMDIwIDE0OjEyOjU5IC0wODAwCitTdWJqZWN0OiBbUEFUQ0hdIGNsb2NrOiBEbyBub3QgZGVmaW5lIG93biB0aW1lc3BlYworCit0aW1lc3BlYyBpcyBwcm92aWRlZCBieSBsaWJjIGFuZCBpdHMgYmVzdCBsZWZ0IHRvIGxpYmMKK29zX2dldHRpbWUgdGFrZXMgYSBkYl90aW1lc3BlYyBhbmQgcGFzc2VkIGl0cyBhZGRyZXNzIHRvIGNsb2NrX2dldHRpbWUKK3doaWNoIGFzc3VtZXMgdGhhdCBkYl90aW1lc3BlYyBhbmQgdGltZXNwZWMgYXJlIHNhbWUgYnV0IGFjdHVhbGx5CitpdHMgMTItYnl0ZXMgaGVyZSBhbmQgbGliYyBoYXMgMTYtYnl0ZXMKKworVGhpcyBjYW4gY2F1c2UgcHJvYmxlbXMgZXNwZWNpYWxseSB3aXRoIDY0Yml0IHRpbWVfdAorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CistLS0KKyBzcmMvZGJpbmMvY2xvY2suaCB8IDE3ICstLS0tLS0tLS0tLS0tLS0tCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxNiBkZWxldGlvbnMoLSkKKworLS0tIGEvc3JjL2RiaW5jL2Nsb2NrLmgKKysrKyBiL3NyYy9kYmluYy9jbG9jay5oCitAQCAtNDQsMjIgKzQ0LDggQEAKKyBleHRlcm4gIkMiIHsKKyAjZW5kaWYKKyAKKy0vKgorLSAqIFRoaXMgZGVjbGFyYXRpb24gaXMgUE9TSVgtY29tcGF0aWJsZS4gIEJlY2F1c2UgdGhlcmUgYXJlIGxvdHMgb2YgZGlmZmVyZW50CistICogdGltZS5oIGluY2x1ZGUgZmlsZSBwYXR0ZXJucyBvdXQgdGhlcmUsIGl0J3MgZWFzaWVyIHRvIGRlY2xhcmUgb3VyIG93biBuYW1lCistICogaW4gYWxsIGNhc2VzIHRoYW4gdG8gdHJ5IGFuZCBkaXNjb3ZlciBpZiBhIHN5c3RlbSBoYXMgYSBzdHJ1Y3QgdGltZXNwZWMuCistICogRm9yIHRoZSBzYW1lIHJlYXNvbiwgYW5kIGJlY2F1c2Ugd2UnZCBoYXZlIHRvICNpbmNsdWRlIDxzeXMvdGltZS5oPiBpbiBkYi5oLAorLSAqIHdlIGRvbid0IGV4cG9ydCBhbnkgdGltZXNwZWMgc3RydWN0dXJlcyBpbiB0aGUgREIgQVBJLCBldmVuIGluIHBsYWNlcyB3aGVyZQorLSAqIGl0IHdvdWxkIG1ha2Ugc2Vuc2UsIGxpa2UgdGhlIHJlcGxpY2F0aW9uIHN0YXRpc3RpY3MgaW5mb3JtYXRpb24uCistICovCistdHlwZWRlZiBzdHJ1Y3QgeworLQl0aW1lX3QJdHZfc2VjOwkJCQkvKiBzZWNvbmRzICovCistI2lmZGVmIEhBVkVfTUlYRURfU0laRV9BRERSRVNTSU5HCistCWludDMyX3QgdHZfbnNlYzsKKy0jZWxzZQorLQlsb25nCXR2X25zZWM7CQkJLyogbmFub3NlY29uZHMgKi8KKy0jZW5kaWYKKy19IGRiX3RpbWVzcGVjOworKyNpbmNsdWRlIDx0aW1lLmg+CisrI2RlZmluZSBkYl90aW1lc3BlYyBzdHJ1Y3QgdGltZXNwZWMKKyAKKyAvKiBPcGVyYXRpb25zIG9uIHRpbWVzcGVjcyAqLworICN1bmRlZgl0aW1lc3BlY2NsZWFyCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RiL2RiXzUuMy4yOC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiCmluZGV4IDc2MWQ4MGMuLjNhMDkyM2EgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGIvZGJfNS4zLjI4LmJiCkBAIC0xMCw3ICsxMCw3IEBACiAjIHNhbWUgc3lzdGVtIGF0IHRoZSBzYW1lIHRpbWUgaWYgcmVhbGx5IG5lY2Vzc2FyeS4KIFNFQ1RJT04gPSAibGlicyIKIFNVTU1BUlkgPSAiQmVya2VsZXkgRGF0YWJhc2UgdjUiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3Lm9yYWNsZS5jb20vdGVjaG5ldHdvcmsvZGF0YWJhc2UvZGF0YWJhc2UtdGVjaG5vbG9naWVzL2JlcmtlbGV5ZGIvb3ZlcnZpZXcvaW5kZXguaHRtbCIKK0hPTUVQQUdFID0gImh0dHBzOi8vd3d3Lm9yYWNsZS5jb20vZGF0YWJhc2UvdGVjaG5vbG9naWVzL3JlbGF0ZWQvYmVya2VsZXlkYi5odG1sIgogTElDRU5TRSA9ICJTbGVlcHljYXQiCiBSQ09ORkxJQ1RTXyR7UE59ID0gImRiMyIKIApAQCAtMjAsMTIgKzIwLDEzIEBACiBQUiA9ICJyMSIKIFBFID0gIjEiCiAKLVNSQ19VUkkgPSAiaHR0cDovL2Rvd25sb2FkLm9yYWNsZS5jb20vYmVya2VsZXktZGIvZGItJHtQVn0udGFyLmd6IgorU1JDX1VSSSA9ICJodHRwczovL2Rvd25sb2FkLm9yYWNsZS5jb20vYmVya2VsZXktZGIvZGItJHtQVn0udGFyLmd6IgogU1JDX1VSSSArPSAiZmlsZTovL2ZpeC1wYXJhbGxlbC1idWlsZC5wYXRjaCBcCiAgICAgICAgICAgICBmaWxlOi8vMDAwMS1hdG9taWMtUmVuYW1lLWxvY2FsLV9fYXRvbWljX2NvbXBhcmVfZXhjaGFuZ2UtdG8tYXZvLnBhdGNoIFwKICAgICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS1BZGQtZXhwbGljaXQtdGFnLW9wdGlvbnMtdG8tbGlidG9vbC1pbnZvY2EucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovL3NlcXVlbmNlLXR5cGUucGF0Y2ggXAogICAgICAgICAgICAgZmlsZTovLzAwMDEtRml4LWxpYmMtY29tcGF0aWJpbGl0eS1ieS1yZW5hbWluZy1hdG9taWNfaW5pdC1BUEkucGF0Y2ggXAorICAgICAgICAgICAgZmlsZTovLzAwMDEtY2xvY2stRG8tbm90LWRlZmluZS1vd24tdGltZXNwZWMucGF0Y2ggXAogICAgICAgICAgICAiCiAjIFdlIGFyZSBub3QgaW50ZXJlc3RlZCBpbiBvZmZpY2lhbCBsYXRlc3QgNi54IHZlcnNpb25zOwogIyBsZXQncyB0cmFjayB3aGF0IGRlYmlhbiBpcyB1c2luZy4KQEAgLTYwLDcgKzYxLDkgQEAKIAogRVhUUkFfT0VDT05GID0gIiR7REI1X0NPTkZJR30gLS1lbmFibGUtc2hhcmVkIC0tZW5hYmxlLWN4eCAtLXdpdGgtc3lzcm9vdCBTVFJJUD10cnVlIgogCitQQUNLQUdFQ09ORklHID8/PSAiIgogUEFDS0FHRUNPTkZJR1t2ZXJpZnldID0gIi0tZW5hYmxlLXZlcmlmeSwgLS1kaXNhYmxlLXZlcmlmeSIKK1BBQ0tBR0VDT05GSUdbZGJtXSA9ICItLWVuYWJsZS1kYm0sLS1kaXNhYmxlLWRibSwiCiAKIEVYVFJBX09FTUFLRSArPSAiTElCVE9PTD0nLi8ke0hPU1RfU1lTfS1saWJ0b29sJyIKIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguNi4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjguNi4zLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBhNjlkMDFlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZGViaWFudXRpbHMvZGViaWFudXRpbHNfNC44LjYuMy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDU1ICswLDAgQEAKLVNVTU1BUlkgPSAiTWlzY2VsbGFuZW91cyB1dGlsaXRpZXMgc3BlY2lmaWMgdG8gRGViaWFuIgotU0VDVElPTiA9ICJiYXNlIgotTElDRU5TRSA9ICJHUEx2MiAmIFNNQUlMX0dQTCIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RlYmlhbi9jb3B5cmlnaHQ7bWQ1PWYwMWE1MjAzZDUwNTEyZmM0ODMwYjQzMzJiNjk2YTlmIgotCi1TUkNfVVJJID0gImh0dHA6Ly9zbmFwc2hvdC5kZWJpYW4ub3JnL2FyY2hpdmUvZGViaWFuLzIwMTkwNzE3VDIxMzQ0NFovcG9vbC9tYWluL2QvJHtCUE59LyR7QlBOfV8ke1BWfS50YXIueHoiCi0jIHRoZSBwYWNrYWdlIGlzIHRha2VuIGZyb20gc25hcHNob3RzLmRlYmlhbi5vcmc7IHRoYXQgc291cmNlIGlzIHN0YXRpYyBhbmQgZ29lcyBzdGFsZQotIyBzbyB3ZSBjaGVjayB0aGUgbGF0ZXN0IHVwc3RyZWFtIGZyb20gYSBkaXJlY3RvcnkgdGhhdCBkb2VzIGdldCB1cGRhdGVkCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiJHtERUJJQU5fTUlSUk9SfS9tYWluL2QvJHtCUE59LyIKLQotU1JDX1VSSVttZDVzdW1dID0gImNhNTdjYzY2MjEyNzUzNDZkN2Q1MTZhYjBiNWZhMWY1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjJjYzdkZTNhZmM2ZGYxY2Y2ZDAwYWY5OTM4ZWZhYzdlZThmNzM5MjI4ZTU0OGU1MTJkZGMxODZiNmE3YmUyMjEiCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1hbHRlcm5hdGl2ZXMKLQotZG9fY29uZmlndXJlX3ByZXBlbmQoKSB7Ci0gICAgc2VkIC1pIC1lICdzOnRlbXBmaWxlLjEgd2hpY2guMTp3aGljaC4xOmcnICR7U30vTWFrZWZpbGUuYW0KLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgaWYgWyAiJHtiYXNlX2JpbmRpcn0iICE9ICIke2JpbmRpcn0iIF07IHRoZW4KLSAgICAgICAgIyBEZWJpYW4gcGxhY2VzIHNvbWUgdXRpbHMgaW50byAke2Jhc2VfYmluZGlyfSBhcyBkb2VzIGJ1c3lib3gKLSAgICAgICAgaW5zdGFsbCAtZCAke0R9JHtiYXNlX2JpbmRpcn0KLSAgICAgICAgZm9yIGFwcCBpbiBydW4tcGFydHMgdGVtcGZpbGU7IGRvCi0gICAgICAgICAgICBtdiAke0R9JHtiaW5kaXJ9LyRhcHAgJHtEfSR7YmFzZV9iaW5kaXJ9LyRhcHAKLSAgICAgICAgZG9uZQotICAgIGZpCi19Ci0KLSMgTm90ZSB0aGF0IHdlIHBhY2thZ2UgdGhlIHVwZGF0ZS1hbHRlcm5hdGl2ZXMgbmFtZS4KLSMKLVBBQ0tBR0VTID0rICIke1BOfS1ydW4tcGFydHMiCi1GSUxFU18ke1BOfS1ydW4tcGFydHMgPSAiJHtiYXNlX2JpbmRpcn0vcnVuLXBhcnRzLmRlYmlhbnV0aWxzIgotCi1SREVQRU5EU18ke1BOfSArPSAiJHtQTn0tcnVuLXBhcnRzIgotUkRFUEVORFNfJHtQTn1fY2xhc3MtbmF0aXZlID0gIiIKLQotQUxURVJOQVRJVkVfUFJJT1JJVFk9IjMwIgotQUxURVJOQVRJVkVfJHtQTn0gPSAiYWRkLXNoZWxsIGluc3RhbGxrZXJuZWwgcmVtb3ZlLXNoZWxsIHNhdmVsb2cgdGVtcGZpbGUgd2hpY2giCi0KLUFMVEVSTkFUSVZFX1BSSU9SSVRZXyR7UE59LXJ1bi1wYXJ0cyA9ICI2MCIKLUFMVEVSTkFUSVZFXyR7UE59LXJ1bi1wYXJ0cyA9ICJydW4tcGFydHMiCi0KLUFMVEVSTkFUSVZFXyR7UE59LWRvYyA9ICJ3aGljaC4xIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3doaWNoLjFdID0gIiR7bWFuZGlyfS9tYW4xL3doaWNoLjEiCi0KLUFMVEVSTkFUSVZFX0xJTktfTkFNRVthZGQtc2hlbGxdPSIke3NiaW5kaXJ9L2FkZC1zaGVsbCIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtpbnN0YWxsa2VybmVsXT0iJHtzYmluZGlyfS9pbnN0YWxsa2VybmVsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3JlbW92ZS1zaGVsbF09IiR7c2JpbmRpcn0vcmVtb3ZlLXNoZWxsIgotQUxURVJOQVRJVkVfTElOS19OQU1FW3J1bi1wYXJ0c109IiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cyIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVtzYXZlbG9nXT0iJHtiaW5kaXJ9L3NhdmVsb2ciCi1BTFRFUk5BVElWRV9MSU5LX05BTUVbdGVtcGZpbGVdPSIke2Jhc2VfYmluZGlyfS90ZW1wZmlsZSIKLUFMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaF09IiR7YmluZGlyfS93aGljaCIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RlYmlhbnV0aWxzL2RlYmlhbnV0aWxzXzQuOS4xLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjkuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45MDRjNTI3Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kZWJpYW51dGlscy9kZWJpYW51dGlsc180LjkuMS5iYgpAQCAtMCwwICsxLDU1IEBACitTVU1NQVJZID0gIk1pc2NlbGxhbmVvdXMgdXRpbGl0aWVzIHNwZWNpZmljIHRvIERlYmlhbiIKK1NFQ1RJT04gPSAiYmFzZSIKK0xJQ0VOU0UgPSAiR1BMdjIgJiBTTUFJTF9HUEwiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9kZWJpYW4vY29weXJpZ2h0O21kNT1mMDFhNTIwM2Q1MDUxMmZjNDgzMGI0MzMyYjY5NmE5ZiIKKworU1JDX1VSSSA9ICJodHRwOi8vc25hcHNob3QuZGViaWFuLm9yZy9hcmNoaXZlL2RlYmlhbi8yMDE5MTIxMlQxNDU2MTJaL3Bvb2wvbWFpbi9kLyR7QlBOfS8ke0JQTn1fJHtQVn0udGFyLnh6IgorIyB0aGUgcGFja2FnZSBpcyB0YWtlbiBmcm9tIHNuYXBzaG90cy5kZWJpYW4ub3JnOyB0aGF0IHNvdXJjZSBpcyBzdGF0aWMgYW5kIGdvZXMgc3RhbGUKKyMgc28gd2UgY2hlY2sgdGhlIGxhdGVzdCB1cHN0cmVhbSBmcm9tIGEgZGlyZWN0b3J5IHRoYXQgZG9lcyBnZXQgdXBkYXRlZAorVVBTVFJFQU1fQ0hFQ0tfVVJJID0gIiR7REVCSUFOX01JUlJPUn0vbWFpbi9kLyR7QlBOfS8iCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI5NTYzMzQxNjY4MGJmZDI0OWI3Y2IwN2Q5NDEzNzA0OCIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJhZjgyNjY4NWQ5YzU2YWJmYTg3M2U4NGNkMzkyNTM5Y2QzNjNjYjBiYTA0YTA5ZDIxMTg3Mzc3ZTFiNzY0MDkxIgorCitpbmhlcml0IGF1dG90b29scyB1cGRhdGUtYWx0ZXJuYXRpdmVzCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIHNlZCAtaSAtZSAnczp0ZW1wZmlsZS4xIHdoaWNoLjE6d2hpY2guMTpnJyAke1N9L01ha2VmaWxlLmFtCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGlmIFsgIiR7YmFzZV9iaW5kaXJ9IiAhPSAiJHtiaW5kaXJ9IiBdOyB0aGVuCisgICAgICAgICMgRGViaWFuIHBsYWNlcyBzb21lIHV0aWxzIGludG8gJHtiYXNlX2JpbmRpcn0gYXMgZG9lcyBidXN5Ym94CisgICAgICAgIGluc3RhbGwgLWQgJHtEfSR7YmFzZV9iaW5kaXJ9CisgICAgICAgIGZvciBhcHAgaW4gcnVuLXBhcnRzIHRlbXBmaWxlOyBkbworICAgICAgICAgICAgbXYgJHtEfSR7YmluZGlyfS8kYXBwICR7RH0ke2Jhc2VfYmluZGlyfS8kYXBwCisgICAgICAgIGRvbmUKKyAgICBmaQorfQorCisjIE5vdGUgdGhhdCB3ZSBwYWNrYWdlIHRoZSB1cGRhdGUtYWx0ZXJuYXRpdmVzIG5hbWUuCisjCitQQUNLQUdFUyA9KyAiJHtQTn0tcnVuLXBhcnRzIgorRklMRVNfJHtQTn0tcnVuLXBhcnRzID0gIiR7YmFzZV9iaW5kaXJ9L3J1bi1wYXJ0cy5kZWJpYW51dGlscyIKKworUkRFUEVORFNfJHtQTn0gKz0gIiR7UE59LXJ1bi1wYXJ0cyIKK1JERVBFTkRTXyR7UE59X2NsYXNzLW5hdGl2ZSA9ICIiCisKK0FMVEVSTkFUSVZFX1BSSU9SSVRZPSIzMCIKK0FMVEVSTkFUSVZFXyR7UE59ID0gImFkZC1zaGVsbCBpbnN0YWxsa2VybmVsIHJlbW92ZS1zaGVsbCBzYXZlbG9nIHRlbXBmaWxlIHdoaWNoIgorCitBTFRFUk5BVElWRV9QUklPUklUWV8ke1BOfS1ydW4tcGFydHMgPSAiNjAiCitBTFRFUk5BVElWRV8ke1BOfS1ydW4tcGFydHMgPSAicnVuLXBhcnRzIgorCitBTFRFUk5BVElWRV8ke1BOfS1kb2MgPSAid2hpY2guMSIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVt3aGljaC4xXSA9ICIke21hbmRpcn0vbWFuMS93aGljaC4xIgorCitBTFRFUk5BVElWRV9MSU5LX05BTUVbYWRkLXNoZWxsXT0iJHtzYmluZGlyfS9hZGQtc2hlbGwiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbaW5zdGFsbGtlcm5lbF09IiR7c2JpbmRpcn0vaW5zdGFsbGtlcm5lbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtyZW1vdmUtc2hlbGxdPSIke3NiaW5kaXJ9L3JlbW92ZS1zaGVsbCIKK0FMVEVSTkFUSVZFX0xJTktfTkFNRVtydW4tcGFydHNdPSIke2Jhc2VfYmluZGlyfS9ydW4tcGFydHMiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbc2F2ZWxvZ109IiR7YmluZGlyfS9zYXZlbG9nIgorQUxURVJOQVRJVkVfTElOS19OQU1FW3RlbXBmaWxlXT0iJHtiYXNlX2JpbmRpcn0vdGVtcGZpbGUiCitBTFRFUk5BVElWRV9MSU5LX05BTUVbd2hpY2hdPSIke2JpbmRpcn0vd2hpY2giCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kaWZmb3Njb3BlL2RpZmZvc2NvcGVfMTM2LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kaWZmb3Njb3BlL2RpZmZvc2NvcGVfMTM2LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjNlM2UxZGYKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RpZmZvc2NvcGUvZGlmZm9zY29wZV8xMzYuYmIKQEAgLTAsMCArMSwxOCBAQAorU1VNTUFSWSA9ICJpbi1kZXB0aCBjb21wYXJpc29uIG9mIGZpbGVzLCBhcmNoaXZlcywgYW5kIGRpcmVjdG9yaWVzIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9kaWZmb3Njb3BlLm9yZy8iCitMSUNFTlNFID0gIkdQTC0zLjArIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQiCisKK1BZUElfUEFDS0FHRSA9ICJkaWZmb3Njb3BlIgorCitpbmhlcml0IHB5cGkgc2V0dXB0b29sczMKKworU1JDX1VSSVttZDVzdW1dID0gImM4NGQ4ZDMwOGE0MDE3NmJhMmY1ZGM0YWJkYmY2ZjczIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjBkNjQ4NmQ2ZWI2ZTA0NDViYTIxZmVlMmU4YmRkM2EzNjZjZTc4NmJmYWM5OGUwMGU1YTk1MDM4Yjc4MTVmMTUiCisKK1JERVBFTkRTXyR7UE59ICs9ICJiaW51dGlscyB2aW0gc3F1YXNoZnMtdG9vbHMgcHl0aG9uMy1saWJhcmNoaXZlLWMgcHl0aG9uMy1tYWdpYyIKKworIyBEZXBlbmRlbmNpZXMgZG9uJ3QgYnVpbGQgZm9yIG11c2wKK0NPTVBBVElCTEVfSE9TVF9saWJjLW11c2wgPSAnbnVsbCcKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9kb3MydW5peC9kb3MydW5peF83LjQuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOWE3MTI3MC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzUgKzAsMCBAQAotU1VNTUFSWSA9ICJDb252ZXJ0IHRleHQgZmlsZSBsaW5lIGVuZGluZ3MgYmV0d2VlbiBDUkxGIGFuZCBMRiIKLURFU0NSSVBUSU9OID0gIlRoZSBEb3MydW5peCBwYWNrYWdlIGluY2x1ZGVzIHV0aWxpdGllcyBkb3MydW5peCBhbmQgXAotdW5peDJkb3MgdG8gY29udmVydCBwbGFpbiB0ZXh0IGZpbGVzIGluIERPUyBvciBNYWMgZm9ybWF0IHRvIFVuaXggXAotZm9ybWF0IGFuZCB2aWNlIHZlcnNhLiIKLUhPTUVQQUdFID0gImh0dHA6Ly93YXRlcmxhbi5ob21lLnhzNGFsbC5ubC9kb3MydW5peC5odG1sIgotU0VDVElPTiA9ICJzdXBwb3J0IgotCi1MSUNFTlNFID0gIkJTRC0yLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcudHh0O21kNT0xYjc4ZmNhNzg0ZGIyNGY0YTQwZTMwYjMwMDc4N2YzZiIKLQotU1JDX1VSSSA9ICJnaXQ6Ly9naXQuY29kZS5zZi5uZXQvcC9kb3MydW5peC9kb3MydW5peCIKLVVQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gImRvczJ1bml4LSg/UDxwdmVyPihcZCsoXC5cZCspKykpIgotCi0jIFJlbGVhc2UgNy40LjAKLVNSQ1JFViA9ICIxMTgyNTMzYmRlM2MxZmU2NWJlMmVhZDQ2NWU4NzY3MWZhYTJjMDI3IgotCi1TID0gIiR7V09SS0RJUn0vZ2l0L2RvczJ1bml4IgotCi1pbmhlcml0IGdldHRleHQgcGVybG5hdGl2ZQotCi0jIFRoZSBkb3MydW5peCBOTFMgcmVsaWVzIG9uIHBvNGEtbmF0aXZlLCB3aGlsZSBwbzRhIHJlY2lwZSBpcwotIyBwcm92aWRlZCBieSBtZXRhLXBlcmwgbGF5ZXIsIHNvIG1ha2UgaXQgb3B0aW9uYWwgaGVyZSwgeW91Ci0jIG5lZWQgaGF2ZSBtZXRhLXBlcmwgaW4gYmJsYXllcnMuY29uZiBiZWZvcmUgZW5hYmxpbmcgbmxzIGluCi0jIFBBQ0tBR0VDT05GSUcuCi1QQUNLQUdFQ09ORklHID8/PSAiIgotUEFDS0FHRUNPTkZJR1tubHNdID0gIkVOQUJMRV9OTFM9MSxFTkFCTEVfTkxTPSxwbzRhLW5hdGl2ZSIKLQotRVhUUkFfT0VNQUtFID0gIiR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gTERGTEFHU19VU0VSPScke0xERkxBR1N9JyIKLUVYVFJBX09FTUFLRV9jbGFzcy1uYXRpdmUgPSAiRU5BQkxFX05MUz0iCi0KLWRvX2luc3RhbGwgKCkgewotCW9lX3J1bm1ha2UgREVTVERJUj0iJHtEfSR7YmFzZV9wcmVmaXh9IiBpbnN0YWxsCi19Ci0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZG9zMnVuaXgvZG9zMnVuaXhfNy40LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjE2MjMyODUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2RvczJ1bml4L2RvczJ1bml4XzcuNC4xLmJiCkBAIC0wLDAgKzEsMzQgQEAKK1NVTU1BUlkgPSAiQ29udmVydCB0ZXh0IGZpbGUgbGluZSBlbmRpbmdzIGJldHdlZW4gQ1JMRiBhbmQgTEYiCitERVNDUklQVElPTiA9ICJUaGUgRG9zMnVuaXggcGFja2FnZSBpbmNsdWRlcyB1dGlsaXRpZXMgZG9zMnVuaXggYW5kIFwKK3VuaXgyZG9zIHRvIGNvbnZlcnQgcGxhaW4gdGV4dCBmaWxlcyBpbiBET1Mgb3IgTWFjIGZvcm1hdCB0byBVbml4IFwKK2Zvcm1hdCBhbmQgdmljZSB2ZXJzYS4iCitIT01FUEFHRSA9ICJodHRwOi8vd2F0ZXJsYW4uaG9tZS54czRhbGwubmwvZG9zMnVuaXguaHRtbCIKK1NFQ1RJT04gPSAic3VwcG9ydCIKKworTElDRU5TRSA9ICJCU0QtMi1DbGF1c2UiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLnR4dDttZDU9MGM5NzdiMThmMGEzODRkMDM1OTdhNTE3ZDdkMDNlMzIiCisKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0LmNvZGUuc2YubmV0L3AvZG9zMnVuaXgvZG9zMnVuaXgiCitVUFNUUkVBTV9DSEVDS19HSVRUQUdSRUdFWCA9ICJkb3MydW5peC0oP1A8cHZlcj4oXGQrKFwuXGQrKSspKSIKKworU1JDUkVWID0gIjA0OTBmMDcyM2IxYTA4NTFiMTczNDNmNjE2NDkxNWYzNDc0YjUxOTciCisKK1MgPSAiJHtXT1JLRElSfS9naXQvZG9zMnVuaXgiCisKK2luaGVyaXQgZ2V0dGV4dCBwZXJsbmF0aXZlCisKKyMgVGhlIGRvczJ1bml4IE5MUyByZWxpZXMgb24gcG80YS1uYXRpdmUsIHdoaWxlIHBvNGEgcmVjaXBlIGlzCisjIHByb3ZpZGVkIGJ5IG1ldGEtcGVybCBsYXllciwgc28gbWFrZSBpdCBvcHRpb25hbCBoZXJlLCB5b3UKKyMgbmVlZCBoYXZlIG1ldGEtcGVybCBpbiBiYmxheWVycy5jb25mIGJlZm9yZSBlbmFibGluZyBubHMgaW4KKyMgUEFDS0FHRUNPTkZJRy4KK1BBQ0tBR0VDT05GSUcgPz89ICIiCitQQUNLQUdFQ09ORklHW25sc10gPSAiRU5BQkxFX05MUz0xLEVOQUJMRV9OTFM9LHBvNGEtbmF0aXZlIgorCitFWFRSQV9PRU1BS0UgPSAiJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfSBMREZMQUdTX1VTRVI9JyR7TERGTEFHU30nIgorRVhUUkFfT0VNQUtFX2NsYXNzLW5hdGl2ZSA9ICJFTkFCTEVfTkxTPSIKKworZG9faW5zdGFsbCAoKSB7CisJb2VfcnVubWFrZSBERVNURElSPSIke0R9JHtiYXNlX3ByZWZpeH0iIGluc3RhbGwKK30KKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9lbmNoYW50L2VuY2hhbnQyXzIuMi44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9lbmNoYW50L2VuY2hhbnQyXzIuMi44LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjRkZGJlNTUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2VuY2hhbnQvZW5jaGFudDJfMi4yLjguYmIKQEAgLTAsMCArMSwyOSBAQAorU1VNTUFSWSA9ICJFbmNoYW50IFNwZWxsIGNoZWNrZXIgQVBJIExpYnJhcnkiCitTRUNUSU9OID0gImxpYnMiCitIT01FUEFHRSA9ICJodHRwczovL2FiaXdvcmQuZ2l0aHViLmlvL2VuY2hhbnQvIgorTElDRU5TRSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZworCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9BYmlXb3JkL2VuY2hhbnQvcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9L2VuY2hhbnQtJHtQVn0udGFyLmd6IgorU1JDX1VSSVttZDVzdW1dID0gImM3YjlkNmEzOTJlY2I4NzU4ZTQ5OWY3ODNlOGRjODgzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM3YjVlMjg1M2YwZGQwYjFhYWZlYTJmOWUwNzE5NDFhZmZlZWMzYTc2ZGY4ZTNmNmQ2N2E3MThjODkyOTM1NTUiCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vQWJpV29yZC9lbmNoYW50L3JlbGVhc2VzIgorCitTID0gIiR7V09SS0RJUn0vZW5jaGFudC0ke1BWfSIKKworRVhUUkFfT0VNQUtFID0gInBrZ2RhdGFkaXI9JHtkYXRhZGlyfS9lbmNoYW50LTIiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJhc3BlbGwiCitQQUNLQUdFQ09ORklHW2FzcGVsbF0gID0gIi0td2l0aC1hc3BlbGwsLS13aXRob3V0LWFzcGVsbCxhc3BlbGwsYXNwZWxsIgorUEFDS0FHRUNPTkZJR1todW5zcGVsbF0gID0gIi0td2l0aC1odW5zcGVsbCwtLXdpdGhvdXQtaHVuc3BlbGwsaHVuc3BlbGwsaHVuc3BlbGwiCisKK0ZJTEVTXyR7UE59ICs9ICIgXAorICAgICR7ZGF0YWRpcn0vZW5jaGFudC0yIFwKKyAgICAke2xpYmRpcn0vZW5jaGFudC0yIFwKKyIKK0ZJTEVTXyR7UE59LXN0YXRpY2RldiArPSAiJHtsaWJkaXJ9L2VuY2hhbnQtMi8qLmEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2VuY2hhbnQvZW5jaGFudF8xLjYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZW5jaGFudC9lbmNoYW50XzEuNi4wLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA0NGViMmUzLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZW5jaGFudC9lbmNoYW50XzEuNi4wLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMzQgKzAsMCBAQAotU1VNTUFSWSA9ICJFbmNoYW50IFNwZWxsIGNoZWNrZXIgQVBJIExpYnJhcnkiCi1TRUNUSU9OID0gImxpYnMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmFiaXNvdXJjZS5jb20vcHJvamVjdHMvZW5jaGFudC8iCi1CVUdUUkFDS0VSID0gImh0dHA6Ly9idWd6aWxsYS5hYmlzb3VyY2UuY29tL2VudGVyX2J1Zy5jZ2k/cHJvZHVjdD1FbmNoYW50IgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTElCO21kNT1kZmNiYWJmOTEzMWRjOWE5NWZlYmVmNjc1M2EyOTU4YiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvZW5jaGFudC5oO2JlZ2lubGluZT0xO2VuZGxpbmU9Mjk7bWQ1PThkODgxY2FhMWQzNzUyMzU2N2UxZDhmNzI2Njc1YTE4IgotCi1ERVBFTkRTID0gImdsaWItMi4wIgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcKLQotUFIgPSAicjMiCi0KLVNSQ19VUkkgPSAiaHR0cDovL3d3dy5hYmlzb3VyY2UuY29tL2Rvd25sb2Fkcy9lbmNoYW50LyR7UFZ9L2VuY2hhbnQtJHtQVn0udGFyLmd6IgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZGUxMTAxMWFmZjgwMWRjNjEwNDI4MjgwNDFmYjU5YzciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmZhYzllN2JlN2U5NDI0YjJjNTU3MGQ4YWZmZTU2OGRiMzlmNzU3MmMxMGVkNDhkNGUxM2NkZGYwM2Y3MDk3ZiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImFzcGVsbCIKLVBBQ0tBR0VDT05GSUdbYXNwZWxsXSAgPSAiIC0td2l0aC1hc3BlbGwtcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gIC0tZW5hYmxlLWFzcGVsbCwgIC0tZGlzYWJsZS1hc3BlbGwsICBhc3BlbGwsICBhc3BlbGwiCi1QQUNLQUdFQ09ORklHW2lzcGVsbF0gID0gIiAtLXdpdGgtaXNwZWxsLXByZWZpeD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9ICAtLWVuYWJsZS1pc3BlbGwsICAtLWRpc2FibGUtaXNwZWxsLCAgaXNwZWxsLCAgaXNwZWxsIgotUEFDS0FHRUNPTkZJR1t1c3BlbGxdICA9ICIgLS13aXRoLXVzcGVsbC1wcmVmaXg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSAgLS1lbmFibGUtdXNwZWxsLCAgLS1kaXNhYmxlLXVzcGVsbCwgIHVzcGVsbCwgIHVzcGVsbCIKLVBBQ0tBR0VDT05GSUdbaHNwZWxsXSAgPSAiIC0td2l0aC1oc3BlbGwtcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gIC0tZW5hYmxlLWhzcGVsbCwgIC0tZGlzYWJsZS1oc3BlbGwsICBoc3BlbGwsICBoc3BlbGwiCi1QQUNLQUdFQ09ORklHW215c3BlbGxdID0gIi0td2l0aC1teXNwZWxsLXByZWZpeD0ke1NUQUdJTkdfRElSX0hPU1R9JHtwcmVmaXh9IC0tZW5hYmxlLW15c3BlbGwsIC0tZGlzYWJsZS1teXNwZWxsLCBteXNwZWxsLCBteXNwZWxsIgotCi1FWFRSQV9PRUNPTkYgPSAiYnJfY3ZfYmlucmVsb2M9bm8iCi0KLWV4cG9ydCBDWFhGTEFHUyArPSAiIC1MJHtTVEFHSU5HX0xJQkRJUn0gLWxzdGRjKysgIgotCi1GSUxFU18ke1BOfSA9ICIke2JpbmRpcn0gJHtsaWJkaXJ9Lyoke1NPTElCU30gJHtkYXRhZGlyfS8ke0JQTn0gJHtsaWJkaXJ9LyR7QlBOfS8qLnNvIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vJHtCUE59Lyp7U09MSUJTREVWfSAke2xpYmRpcn0vJHtCUE59LyoubGEiCi1GSUxFU18ke1BOfS1zdGF0aWNkZXYgKz0gIiR7bGliZGlyfS8ke0JQTn0vKi5hIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9mcmliaWRpL2ZyaWJpZGlfMS4wLjcuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ZyaWJpZGkvZnJpYmlkaV8xLjAuNy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNjczODg4NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ZyaWJpZGkvZnJpYmlkaV8xLjAuNy5iYgorKysgL2Rldi9udWxsCkBAIC0xLDE3ICswLDAgQEAKLVNVTU1BUlkgPSAiRnJlZSBJbXBsZW1lbnRhdGlvbiBvZiB0aGUgVW5pY29kZSBCaWRpcmVjdGlvbmFsIEFsZ29yaXRobSIKLVNFQ1RJT04gPSAibGlicyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YTkxNjQ2N2I5MTA3NmU2MzFkZDhlZGI3NDI0NzY5YzciCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tLyR7QlBOfS8ke0JQTn0vcmVsZWFzZXMvZG93bmxvYWQvdiR7UFZ9LyR7QlB9LnRhci5iejIgXAotICAgICAgICAgICAiCi1TUkNfVVJJW21kNXN1bV0gPSAiNGMwMjBiMGY1MTM2ZGQwMTJlZTAwZjFlMTEyMmY2YWEiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWFiNWYyMWU5ZjJmYzU3YjRiNDBmOGVhOGYxNGRiYTc4YTVjYzQ2ZDljZjk0YmM1ZTAwYTU4ZTY4ODZhOTM1ZCIKLQotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzIgotCi1pbmhlcml0IG1lc29uIGxpYl9wYWNrYWdlIHBrZ2NvbmZpZwotCi1DVkVfUFJPRFVDVCA9ICJnbnVfZnJpYmlkaSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9mcmliaWRpL2ZyaWJpZGlfMS4wLjkuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ZyaWJpZGkvZnJpYmlkaV8xLjAuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMTIxN2FiCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9mcmliaWRpL2ZyaWJpZGlfMS4wLjkuYmIKQEAgLTAsMCArMSwxNyBAQAorU1VNTUFSWSA9ICJGcmVlIEltcGxlbWVudGF0aW9uIG9mIHRoZSBVbmljb2RlIEJpZGlyZWN0aW9uYWwgQWxnb3JpdGhtIgorU0VDVElPTiA9ICJsaWJzIgorTElDRU5TRSA9ICJMR1BMdjIuMSsiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT1hOTE2NDY3YjkxMDc2ZTYzMWRkOGVkYjc0MjQ3NjljNyIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcy9kb3dubG9hZC92JHtQVn0vJHtCUH0udGFyLnh6IFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjFiNzY3YzI1OWMzY2Q4ZTBjODQ5Njk3MGY2M2MyMmRjIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImM1ZTQ3ZWE5MDI2ZmI2MGRhMTk0NGRhOTg4OGI0ZTBhMTg4NTRhMGUyNDEwYmJmZTdhZDkwYTA1NGQzNmUwYzciCisKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59LyR7QlBOfS9yZWxlYXNlcyIKKworaW5oZXJpdCBtZXNvbiBsaWJfcGFja2FnZSBwa2djb25maWcKKworQ1ZFX1BST0RVQ1QgPSAiZ251X2ZyaWJpZGkiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTguMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ2RibS9nZGJtXzEuMTguMS5iYgppbmRleCAxNmVjYzUwLi41Y2I3YzU1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dkYm0vZ2RibV8xLjE4LjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nZGJtL2dkYm1fMS4xOC4xLmJiCkBAIC0xNiwxMyArMTYsMTUgQEAKIGluaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBsaWJfcGFja2FnZSBwdGVzdAogCiAjIE5lZWRlZCBmb3IgZGJtIHB5dGhvbiBtb2R1bGUKLUVYVFJBX09FQ09ORiA9ICItZW5hYmxlLWxpYmdkYm0tY29tcGF0IgorRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLWxpYmdkYm0tY29tcGF0IC0td2l0aG91dC1yZWFkbGluZSIKIAogIyBTdG9wIHByZXNlbmNlIG9mIGRibS9uYmRtIG9uIHRoZSBob3N0IGNvbnRhbWluYXRpbmcgYnVpbGRzCiBDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfbGliX25kYm1fbWFpbj1ubyBhY19jdl9saWJfZGJtX21haW49bm8iCiAKIEJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKIAorQ0ZMQUdTICs9ICItZmNvbW1vbiIKKwogZG9faW5zdGFsbF9hcHBlbmQgKCkgewogICAgICMgQ3JlYXRlIGEgc3ltbGluayB0byBuZGJtLmggYW5kIGdkYm0uaCBpbiBpbmNsdWRlL2dkYm0gdG8gbGV0IG90aGVyIHBhY2thZ2VzIHRvIGZpbmQKICAgICAjIHRoZXNlIGhlYWRlcnMKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yLzAwMDEtY29uZml1cmUuYWMtQmVsaWV2ZS10aGUtY2ZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFlNDc5MjQuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yLzAwMDEtY29uZml1cmUuYWMtQmVsaWV2ZS10aGUtY2ZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSw0OSArMCwwIEBACi1Gcm9tIGFlMWE0YzM3NDE3YTNiYmJmOGVhMWNhYjE5ODk4MmIwY2FkNDdlMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotRGF0ZTogRnJpLCAxMiBBdWcgMjAxNiAxNzowODoxMyArMDAwMAotU3ViamVjdDogW1BBVENIXSBjb25maXVyZS5hYzogQmVsaWV2ZSB0aGUgY2ZsYWdzIGZyb20gZW52aXJvbm1lbnQKLQotSW4gc29tZSB0b29sY2hhaW5zIGUuZy4gT3BlbkVtYmVkZGVkIC1tYXJjaCBvcHRpb25zCi1hcmUgcGFzc2VkIG9uIGNvbXBpbGVyIGNtZGxpbmUsIGl0IGRvZXMgbm90IHVzZQotdGhlIGV4cGVjdGVkIHRhcmdldCB0cmlwbGV0cyB0byBtYWtlIHRoZXNlIGRlY2lzaW9uCi1kdXJpbmcgY29uZmlndXJlLgotCi1TZWNvbmRseSwgZG9udCBzZXQgYXJtdjQgZm9yIG1hcmNoIHdoZW4gbm8gc2VsZWN0aW9uCi1pcyBtYWRlLCBzaW5jZSBpdCBpcyBwYXNzZWQgZnJvbSBjbWRsaW5lCi0KLVNpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+Ci0tLS0KLVVwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZVtPRS1TcGVjaWZpY10KLQotIGNvbmZpZ3VyZS5hYyB8IDExIC0tLS0tLS0tLS0tCi0gMSBmaWxlIGNoYW5nZWQsIDExIGRlbGV0aW9ucygtKQotCi1JbmRleDogZ21wLTYuMS4yL2NvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGdtcC02LjEuMi5vcmlnL2NvbmZpZ3VyZS5hYwotKysrIGdtcC02LjEuMi9jb25maWd1cmUuYWMKLUBAIC02MDQsMTUgKzYwNCw2IEBAIGNhc2UgJGhvc3QgaW4KLSAgICAgYW55XzMyX3Rlc3RsaXN0PSJzaXplb2YtbG9uZy00IgotICAgICBhbnlfNjRfdGVzdGxpc3Q9InNpemVvZi1sb25nLTgiCi0gCi0tICAgICMgVGhpcyBpcyBuZWVkZWQgZm9yIGNsYW5nLCB3aGljaCBpcyBub3QgY29udGVudCB3aXRoIGZsYWdzIGxpa2UgLW1mcHU9bmVvbgotLSAgICAjIGFsb25lLgotLSAgICBjYXNlICRob3N0IGluCi0tICAgICAgKi0qLSplYWJpKQotLSAgICAgICAgZ2NjX2NmbGFnc19mcG1vZGU9Ii1tZmxvYXQtYWJpPXNvZnRmcCIgOzsKLS0gICAgICAqLSotKmVhYmloZikKLS0gICAgICAgIGdjY19jZmxhZ3NfZnBtb2RlPSItbWZsb2F0LWFiaT1oYXJkIiA7OwotLSAgICBlc2FjCi0tCi0gICAgICMgRklYTUU6IFdlIG1ha2UgbWFuZGF0b3J5IGNvbXBpbGVyIG9wdGlvbnMgb3B0aW9uYWwgaGVyZS4gIFdlIHNob3VsZAotICAgICAjIGVpdGhlciBlbmZvcmNlIHRoZW0sIG9yIG9yZ2FuaXNlIHRvIHN0cmlwIHBhdGhzIGFzIHRoZSBjb3JyZXNwb25kaW5nCi0gICAgICMgb3B0aW9ucyBmYWlsLgotQEAgLTc0Niw4ICs3MzcsNiBAQCBjYXNlICRob3N0IGluCi0gCTs7Ci0gICAgICAgKikKLSAJcGF0aD0iYXJtIgotLQlnY2NfY2ZsYWdzX2FyY2g9Ii1tYXJjaD1hcm12NCIKLS0JR01QX0RFRklORV9SQVcoWyJkZWZpbmUoPE5PVEhVTUI+LDEpIl0pCi0gCTs7Ci0gICAgIGVzYWMKLSAgICAgOzsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi9hbWQ2NC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi9hbWQ2NC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMzkzNTU4OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAtNi4xLjIvYW1kNjQucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwxOCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotSW5kZXg6IGdtcC02LjEuMi9sb25nbG9uZy5oCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ21wLTYuMS4yLm9yaWcvbG9uZ2xvbmcuaAotKysrIGdtcC02LjEuMi9sb25nbG9uZy5oCi1AQCAtMTAzNiw4ICsxMDM2LDEwIEBAIGV4dGVybiBVV3R5cGUgX19NUE4odWRpdl9xcm5uZCkgKFVXdHlwZQotICAgIGNvdW50IGlzIG9ubHkgYW4gaW50LiAqLwotICNkZWZpbmUgY291bnRfdHJhaWxpbmdfemVyb3MoY291bnQsIHgpCQkJCQlcCi0gICBkbyB7CQkJCQkJCQkJXAotKyAgICBVREl0eXBlIF9fY2J0bXA7CQkJCQkJCVwKLSAgICAgQVNTRVJUICgoeCkgIT0gMCk7CQkJCQkJCVwKLS0gICAgX19hc21fXyAoImJzZnEgJTEsJXEwIiA6ICI9ciIgKGNvdW50KSA6ICJybSIgKChVREl0eXBlKSh4KSkpOwlcCi0rICAgIF9fYXNtX18gKCJic2ZxICUxLCUwIiA6ICI9ciIgKF9fY2J0bXApIDogInJtIiAoKFVESXR5cGUpKHgpKSk7CVwKLSsgICAgKGNvdW50KSA9IF9fY2J0bXA7CQkJCQkJCVwKLSAgIH0gd2hpbGUgKDApCi0gI2VuZGlmIC8qIF9fYW1kNjRfXyAqLwotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yL3VzZS1pbmNsdWRlZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yL3VzZS1pbmNsdWRlZGlyLnBhdGNoCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA2YjA4OWNmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi91c2UtaW5jbHVkZWRpci5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE1ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1JbmRleDogZ21wLTYuMS4yL01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gZ21wLTYuMS4yLm9yaWcvTWFrZWZpbGUuYW0KLSsrKyBnbXAtNi4xLjIvTWFrZWZpbGUuYW0KLUBAIC0xMzAsNyArMTMwLDcgQEAgRVhUUkFfRElTVCArPSBnbXB4eC5oCi0gIyBidXQgYW55b25lIGtub3dsZWRnZWFibGUgZW5vdWdoIHRvIGJlIHBsYXlpbmcgd2l0aCBleGVjX3ByZWZpeCB3aWxsIGJlIGFibGUKLSAjIHRvIGFkZHJlc3MgdGhhdC4KLSAjCi0taW5jbHVkZWV4ZWNkaXIgPSAkKGV4ZWNfcHJlZml4KS9pbmNsdWRlCi0raW5jbHVkZWV4ZWNkaXIgPSAkKGluY2x1ZGVkaXIpCi0gaW5jbHVkZV9IRUFERVJTID0gJChHTVBYWF9IRUFERVJTX09QVElPTikKLSBub2Rpc3RfaW5jbHVkZWV4ZWNfSEVBREVSUyA9IGdtcC5oCi0gbGliX0xUTElCUkFSSUVTID0gbGliZ21wLmxhICQoR01QWFhfTFRMSUJSQVJJRVNfT1BUSU9OKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLTYuMS4yLzAwMDEtQXBwZW5kLXRoZS11c2VyLXByb3ZpZGVkLWZsYWdzLXRvLXRoZS1hdXRvLWRldGVjdGVkLS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC8wMDAxLUFwcGVuZC10aGUtdXNlci1wcm92aWRlZC1mbGFncy10by10aGUtYXV0by1kZXRlY3RlZC0ucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC02LjEuMi8wMDAxLUFwcGVuZC10aGUtdXNlci1wcm92aWRlZC1mbGFncy10by10aGUtYXV0by1kZXRlY3RlZC0ucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC8wMDAxLUFwcGVuZC10aGUtdXNlci1wcm92aWRlZC1mbGFncy10by10aGUtYXV0by1kZXRlY3RlZC0ucGF0Y2gKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wLzAwMDEtY29uZml1cmUuYWMtQmVsaWV2ZS10aGUtY2ZsYWdzLWZyb20tZW52aXJvbm1lbnQucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTY1NjRkYgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcC8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoCkBAIC0wLDAgKzEsNDkgQEAKK0Zyb20gYWUxYTRjMzc0MTdhM2JiYmY4ZWExY2FiMTk4OTgyYjBjYWQ0N2UyOSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CitEYXRlOiBGcmksIDEyIEF1ZyAyMDE2IDE3OjA4OjEzICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIGNvbmZpdXJlLmFjOiBCZWxpZXZlIHRoZSBjZmxhZ3MgZnJvbSBlbnZpcm9ubWVudAorCitJbiBzb21lIHRvb2xjaGFpbnMgZS5nLiBPcGVuRW1iZWRkZWQgLW1hcmNoIG9wdGlvbnMKK2FyZSBwYXNzZWQgb24gY29tcGlsZXIgY21kbGluZSwgaXQgZG9lcyBub3QgdXNlCit0aGUgZXhwZWN0ZWQgdGFyZ2V0IHRyaXBsZXRzIHRvIG1ha2UgdGhlc2UgZGVjaXNpb24KK2R1cmluZyBjb25maWd1cmUuCisKK1NlY29uZGx5LCBkb250IHNldCBhcm12NCBmb3IgbWFyY2ggd2hlbiBubyBzZWxlY3Rpb24KK2lzIG1hZGUsIHNpbmNlIGl0IGlzIHBhc3NlZCBmcm9tIGNtZGxpbmUKKworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKy0tLQorVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlW09FLVNwZWNpZmljXQorCisgY29uZmlndXJlLmFjIHwgMTEgLS0tLS0tLS0tLS0KKyAxIGZpbGUgY2hhbmdlZCwgMTEgZGVsZXRpb25zKC0pCisKKy0tLSBhL2NvbmZpZ3VyZS5hYworKysrIGIvY29uZmlndXJlLmFjCitAQCAtNjI1LDE3ICs2MjUsNiBAQCBjYXNlICRob3N0IGluCisgICAgIGFueV8zMl90ZXN0bGlzdD0ic2l6ZW9mLXZvaWQqLTQiCisgICAgIGFueV82NF90ZXN0bGlzdD0ic2l6ZW9mLXZvaWQqLTgiCisgCistICAgICMgVGhpcyBpcyBuZWVkZWQgZm9yIGNsYW5nLCB3aGljaCBpcyBub3QgY29udGVudCB3aXRoIGZsYWdzIGxpa2UgLW1mcHU9bmVvbgorLSAgICAjIGFsb25lLgorLSAgICBjYXNlICRob3N0IGluCistICAgICAgKi0qLSplYWJpKQorLSAgICAgICAgZ2NjX2NmbGFnc19mcG1vZGU9Ii1tZmxvYXQtYWJpPXNvZnRmcCIgOzsKKy0gICAgICAqLSotKmVhYmloZikKKy0gICAgICAgIGdjY19jZmxhZ3NfZnBtb2RlPSItbWZsb2F0LWFiaT1oYXJkIiA7OworLSAgICAgICotKi1taW5ndyopCistICAgICAgICBsaW1iXzY0PWxvbmdsb25nIDs7CistICAgIGVzYWMKKy0KKyAgICAgIyBGSVhNRTogV2UgbWFrZSBtYW5kYXRvcnkgY29tcGlsZXIgb3B0aW9ucyBvcHRpb25hbCBoZXJlLiAgV2Ugc2hvdWxkCisgICAgICMgZWl0aGVyIGVuZm9yY2UgdGhlbSwgb3Igb3JnYW5pc2UgdG8gc3RyaXAgcGF0aHMgYXMgdGhlIGNvcnJlc3BvbmRpbmcKKyAgICAgIyBvcHRpb25zIGZhaWwuCitAQCAtNzgwLDggKzc2OSw2IEBAIGNhc2UgJGhvc3QgaW4KKyAJOzsKKyAgICAgICAqKQorIAlwYXRoPSJhcm0iCistCWdjY19jZmxhZ3NfYXJjaD0iLW1hcmNoPWFybXY0IgorLQlHTVBfREVGSU5FX1JBVyhbImRlZmluZSg8Tk9USFVNQj4sMSkiXSkKKyAJOzsKKyAgICAgZXNhYworICAgICA7OwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wL3VzZS1pbmNsdWRlZGlyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wL3VzZS1pbmNsdWRlZGlyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQyNzMxN2MKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXAvdXNlLWluY2x1ZGVkaXIucGF0Y2gKQEAgLTAsMCArMSwxOCBAQAorZXhlYyBpbmNsdWRlZGlyIHNob3VsZCBiZSBwb2ludGluZyB0byBnZW5lcmFsIHlvY3RvIGluY2x1ZGRpcgorCitVcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKK1NpZ25lZC1vZmYtYnk6IEtoZW0gUmFqIDxyYWoua2hlbUBnbWFpbC5jb20+CisKK0luZGV4OiBnbXAtNi4xLjIvTWFrZWZpbGUuYW0KKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBnbXAtNi4xLjIub3JpZy9NYWtlZmlsZS5hbQorKysrIGdtcC02LjEuMi9NYWtlZmlsZS5hbQorQEAgLTEzMCw3ICsxMzAsNyBAQCBFWFRSQV9ESVNUICs9IGdtcHh4LmgKKyAjIGJ1dCBhbnlvbmUga25vd2xlZGdlYWJsZSBlbm91Z2ggdG8gYmUgcGxheWluZyB3aXRoIGV4ZWNfcHJlZml4IHdpbGwgYmUgYWJsZQorICMgdG8gYWRkcmVzcyB0aGF0LgorICMKKy1pbmNsdWRlZXhlY2RpciA9ICQoZXhlY19wcmVmaXgpL2luY2x1ZGUKKytpbmNsdWRlZXhlY2RpciA9ICQoaW5jbHVkZWRpcikKKyBpbmNsdWRlX0hFQURFUlMgPSAkKEdNUFhYX0hFQURFUlNfT1BUSU9OKQorIG5vZGlzdF9pbmNsdWRlZXhlY19IRUFERVJTID0gZ21wLmgKKyBsaWJfTFRMSUJSQVJJRVMgPSBsaWJnbXAubGEgJChHTVBYWF9MVExJQlJBUklFU19PUFRJT04pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXBfNi4xLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dtcC9nbXBfNi4xLjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM3NDVkYmIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wXzYuMS4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNDUgKzAsMCBAQAotcmVxdWlyZSBnbXAuaW5jCi0KLUxJQ0VOU0UgPSAiR1BMdjIrIHwgTEdQTHYzKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZDMyMjM5YmNiNjczNDYzYWI4NzRlODBkNDdmYWU1MDQgXAotICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxFU1NFUnYzO21kNT02YTZhOGUwMjA4MzhiMjM0MDZjODFiMTljMWQ0NmRmNiBcCi0gICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkd2MjttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMgXAotIgotCi1SRVZJU0lPTiA9ICIiCi1TUkNfVVJJID0gImh0dHBzOi8vZ21wbGliLm9yZy9kb3dubG9hZC8ke0JQTn0vJHtCUH0ke1JFVklTSU9OfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2FtZDY0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3VzZS1pbmNsdWRlZGlyLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtQXBwZW5kLXRoZS11c2VyLXByb3ZpZGVkLWZsYWdzLXRvLXRoZS1hdXRvLWRldGVjdGVkLS5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWNvbmZpdXJlLmFjLUJlbGlldmUtdGhlLWNmbGFncy1mcm9tLWVudmlyb25tZW50LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjhkZGJiMjZkYzNiZDRlMjMwMjk4NGRlYmJhMTQwNmE1IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjUyNzViYjA0ZjQ4NjNhMTM1MTZiMmYzOTM5MmFjNWUyNzJmNWUxYmI4MDU3YjE4YWVjMWM5Yjc5ZDczZDhmYjIiCi0KLWFjcGF0aHMgPSAiIgotCi1FWFRSQV9PRUNPTkYgKz0gIiAtLWVuYWJsZS1jeHg9ZGV0ZWN0IgotRVhUUkFfT0VDT05GX21pcHNhcmNocjZfYXBwZW5kID0gIiAtLWRpc2FibGUtYXNzZW1ibHkiCi0KLVBBQ0tBR0VTID0rICJsaWJnbXB4eCIKLUZJTEVTX2xpYmdtcHh4ID0gIiR7bGliZGlyfS9saWJnbXB4eCR7U09MSUJTfSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jb2VfbXVsdGlsaWJfaGVhZGVyIGdtcC5oCi19Ci0KLWRvX2luc3RhbGxfcHJlcGVuZF9jbGFzcy10YXJnZXQoKSB7Ci0gICAgICAgIHNlZCAtaSBcCi0gICAgICAgIC1lICJzfC0tc3lzcm9vdD0ke1NUQUdJTkdfRElSX0hPU1R9fHxnIiBcCi0gICAgICAgIC1lICJzfCR7REVCVUdfUFJFRklYX01BUH18fGciIFwKLSAgICAgICAgICR7Qn0vZ21wLmgKLX0KLQotU1NUQVRFX1NDQU5fRklMRVMgKz0gImdtcC5oIgotCi0jIERvZXNuJ3QgY29tcGlsZSBpbiBNSVBTMTZlIG1vZGUgZHVlIHRvIHVzZSBvZiBoYW5kLXdyaXR0ZW4KLSMgYXNzZW1ibHkKLU1JUFNfSU5TVFJVQ1RJT05fU0VUID0gIm1pcHMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcF82LjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ21wL2dtcF82LjIuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTljNzRmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbXAvZ21wXzYuMi4wLmJiCkBAIC0wLDAgKzEsNDQgQEAKK3JlcXVpcmUgZ21wLmluYworCitMSUNFTlNFID0gIkdQTHYyKyB8IExHUEx2MysiCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MRVNTRVJ2MzttZDU9NmE2YThlMDIwODM4YjIzNDA2YzgxYjE5YzFkNDZkZjYgXAorICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HdjI7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIFwKKyIKKworUkVWSVNJT04gPSAiIgorU1JDX1VSSSA9ICJodHRwczovL2dtcGxpYi5vcmcvZG93bmxvYWQvJHtCUE59LyR7QlB9JHtSRVZJU0lPTn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly91c2UtaW5jbHVkZWRpci5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFwcGVuZC10aGUtdXNlci1wcm92aWRlZC1mbGFncy10by10aGUtYXV0by1kZXRlY3RlZC0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1jb25maXVyZS5hYy1CZWxpZXZlLXRoZS1jZmxhZ3MtZnJvbS1lbnZpcm9ubWVudC5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICJjMjQxNjFlMGRkNDRjYWU3OGNkNWY2NzE5MzQ5MmEyMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICJmNTFjOTljYjExNGRlYjIxYTYwMDc1ZmZiNDk0YzFhMjEwZWI5ZDdjYjcyOWVkMDQyZGRiN2RlOTUzNDQ1MWVhIgorCithY3BhdGhzID0gIiIKKworRVhUUkFfT0VDT05GICs9ICIgLS1lbmFibGUtY3h4PWRldGVjdCIKK0VYVFJBX09FQ09ORl9taXBzYXJjaHI2X2FwcGVuZCA9ICIgLS1kaXNhYmxlLWFzc2VtYmx5IgorCitQQUNLQUdFUyA9KyAibGliZ21weHgiCitGSUxFU19saWJnbXB4eCA9ICIke2xpYmRpcn0vbGliZ21weHgke1NPTElCU30iCisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCW9lX211bHRpbGliX2hlYWRlciBnbXAuaAorfQorCitkb19pbnN0YWxsX3ByZXBlbmRfY2xhc3MtdGFyZ2V0KCkgeworICAgICAgICBzZWQgLWkgXAorICAgICAgICAtZSAic3wtLXN5c3Jvb3Q9JHtTVEFHSU5HX0RJUl9IT1NUfXx8ZyIgXAorICAgICAgICAtZSAic3wke0RFQlVHX1BSRUZJWF9NQVB9fHxnIiBcCisgICAgICAgICAke0J9L2dtcC5oCit9CisKK1NTVEFURV9TQ0FOX0ZJTEVTICs9ICJnbXAuaCIKKworIyBEb2Vzbid0IGNvbXBpbGUgaW4gTUlQUzE2ZSBtb2RlIGR1ZSB0byB1c2Ugb2YgaGFuZC13cml0dGVuCisjIGFzc2VtYmx5CitNSVBTX0lOU1RSVUNUSU9OX1NFVCA9ICJtaXBzIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXBnL2dudXBnXzIuMi4xNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjE3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBiYjg4ODVmLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjE3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzMgKzAsMCBAQAotU1VNTUFSWSA9ICJHTlUgUHJpdmFjeSBHdWFyZCAtIGVuY3J5cHRpb24gYW5kIHNpZ25pbmcgdG9vbHMgKDIueCkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy8iCi1MSUNFTlNFID0gIkdQTHYzICYgTEdQTHYzIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MTg5YWY4YWZjYTZkNjA3NWJhNmM5ZTBhYTgwNzc2MjYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MR1BMMzttZDU9YTJiNmJmMmNiMzhlZTUyNjE5ZTYwZjMwYTFmYzcyNTciCi0KLURFUEVORFMgPSAibnB0aCBsaWJhc3N1YW4gbGlia3NiYSB6bGliIGJ6aXAyIHJlYWRsaW5lIGxpYmdjcnlwdCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgZ2V0dGV4dCB0ZXhpbmZvIHBrZ2NvbmZpZwotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9LyR7QlBOfS8ke0JQTn0tJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLVVzZS1wa2ctY29uZmlnLXRvLWZpbmQtcHRoLWluc3RlYWQtb2YtcHRoLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAyLXVzZS1wa2djb25maWctaW5zdGVhZC1vZi1ucHRoLWNvbmZpZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAzLWRpcm1uZ3ItdXNlcy1saWJncGctZXJyb3IucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwNC1hdXRvZ2VuLnNoLWZpeC1maW5kLXZlcnNpb24tZm9yLWJldGEtY2hlY2tpbmcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1Xb3ZlcnJpZGUtaW5pdC1pcy1ub3QtbmVlZGVkLXdpdGgtZ2NjLTkucGF0Y2ggXAotICAgICAgICAgICAiCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy1uYXRpdmUgPSAiIGZpbGU6Ly8wMDAxLWNvbmZpZ3VyZS5hYy11c2UtYS1jdXN0b20tdmFsdWUtZm9yLXRoZS1sb2NhdGlvbi1vZi0ucGF0Y2ggXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBmaWxlOi8vcmVsb2NhdGUucGF0Y2giCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICIxYmEyZDliNzBjMzc3ZjhlOTY3NzQyMDY0YzI3YTE5YyIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJhZmEyNjI4NjhlMzliNjUxYTJkYjRjMDcxZmJhOTA0MTUxNTQyNDNlODNhODMwY2EwMDUxNmY5YTgwN2ZkNTE0IgotCi1FWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWxkYXAgXAotCQktLWRpc2FibGUtY2NpZC1kcml2ZXIgXAotCQktLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0JCS0td2l0aC1iemlwMj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0JCS0td2l0aC1yZWFkbGluZT0ke1NUQUdJTkdfTElCRElSfS8uLiBcCi0JCS0tZW5hYmxlLWdwZy1pcy1ncGcyIFwKLSAgICAgICAgICAgICAgICIKLQotIyBBIG1pbmltYWwgcGFja2FnZSBjb250YWluaW5nIGp1c3QgZW5vdWdoIHRvIHJ1biBncGcrZ3BnYWdlbnQgKEUuZy4gdXNlIGdwZ21lIGluIG9wa2cpCi1QQUNLQUdFUyA9KyAiJHtQTn0tZ3BnIgotRklMRVNfJHtQTn0tZ3BnID0gIiBcCi0JJHtiaW5kaXJ9L2dwZyBcCi0JJHtiaW5kaXJ9L2dwZzIgXAotCSR7YmluZGlyfS9ncGctYWdlbnQgXAotIgotCi0jIE5vcm1hbCBwYWNrYWdlIChnbnVwZykgc2hvdWxkIGRlcGVuZCBvbiBtaW5pbWFsIHBhY2thZ2UgKGdudXBnLWdwZykKLSMgdG8gZW5zdXJlIGFsbCB0b29scyBhcmUgaW5jbHVkZWQuIFRoaXMgaXMgZG9uZSBvbmx5IGluIG5vbi1uYXRpdmUKLSMgYnVpbGRzLiBOYXRpdmUgYnVpbGRzIGRvbid0IGhhdmUgc3ViLXBhY2thZ2VzLCBzbyBhcHBlbmRpbmcgUkRFUEVORFMKLSMgaW4gdGhpcyBjYXNlIGJyZWFrcyByZWNpcGUgcGFyc2luZy4KLVJERVBFTkRTXyR7UE59ICs9ICIke0AgIiIgaWYgKCJuYXRpdmUiIGluIGQuZ2V0VmFyKCJQTiIpKSBlbHNlIChkLmdldFZhcigiUE4iKSArICItZ3BnIil9IgotCi1SUkVDT01NRU5EU18ke1BOfSA9ICJwaW5lbnRyeSIKLQotZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgewotCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcm5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKLQlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAotCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00Ci0Jcm0gLWYgJHtTfS9tNC9rc2JhLm00Ci0Jcm0gLWYgJHtTfS9tNC9saWJnY3J5cHQubTQKLX0KLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JbG4gLXNmIGdwZzIgJHtEfSR7YmluZGlyfS9ncGcKLQlsbiAtc2YgZ3BndjIgJHtEfSR7YmluZGlyfS9ncGd2Ci19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKLQljcmVhdGVfd3JhcHBlciAke0R9JHtiaW5kaXJ9L2dwZzIgR05VUEdfQklORElSPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfQotCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vZ3BnY29uZiBHTlVQR19CSU5ESVI9JHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9Ci0JY3JlYXRlX3dyYXBwZXIgJHtEfSR7YmluZGlyfS9ncGctYWdlbnQgR05VUEdfQklORElSPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfQotCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vZ3BnLWNvbm5lY3QtYWdlbnQgR05VUEdfQklORElSPSR7U1RBR0lOR19CSU5ESVJfTkFUSVZFfQotfQotCi1QQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgotUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscywgLS1kaXNhYmxlLWdudXRscywgZ251dGxzIgotUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLWVuYWJsZS1zcWxpdGUsIC0tZGlzYWJsZS1zcWxpdGUsIHNxbGl0ZTMiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjIwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnVwZy9nbnVwZ18yLjIuMjAuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZjc1NDU3MwotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251cGcvZ251cGdfMi4yLjIwLmJiCkBAIC0wLDAgKzEsODEgQEAKK1NVTU1BUlkgPSAiR05VIFByaXZhY3kgR3VhcmQgLSBlbmNyeXB0aW9uIGFuZCBzaWduaW5nIHRvb2xzICgyLngpIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvIgorTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTE4OWFmOGFmY2E2ZDYwNzViYTZjOWUwYWE4MDc3NjI2IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuTEdQTDM7bWQ1PWEyYjZiZjJjYjM4ZWU1MjYxOWU2MGYzMGExZmM3MjU3IgorCitERVBFTkRTID0gIm5wdGggbGliYXNzdWFuIGxpYmtzYmEgemxpYiBiemlwMiByZWFkbGluZSBsaWJnY3J5cHQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIGdldHRleHQgdGV4aW5mbyBwa2djb25maWcKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS8ke0JQTn0vJHtCUE59LSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1Vc2UtcGtnLWNvbmZpZy10by1maW5kLXB0aC1pbnN0ZWFkLW9mLXB0aC1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMi11c2UtcGtnY29uZmlnLWluc3RlYWQtb2YtbnB0aC1jb25maWcucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMy1kaXJtbmdyLXVzZXMtbGliZ3BnLWVycm9yLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDQtYXV0b2dlbi5zaC1maXgtZmluZC12ZXJzaW9uLWZvci1iZXRhLWNoZWNraW5nLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtV292ZXJyaWRlLWluaXQtaXMtbm90LW5lZWRlZC13aXRoLWdjYy05LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vMDAwMS1jb25maWd1cmUuYWMtdXNlLWEtY3VzdG9tLXZhbHVlLWZvci10aGUtbG9jYXRpb24tb2YtLnBhdGNoIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZmlsZTovL3JlbG9jYXRlLnBhdGNoIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBmaWxlOi8vcmVsb2NhdGUucGF0Y2giCisKK1NSQ19VUklbbWQ1c3VtXSA9ICI0ZmY4ODkyMGNmNTJiMzVkYjBkZWRhZWU4N2JkYmJiMSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIwNGE3YzlkNDhiNzRjMzk5MTY4ZWU4MjcwZTU0ODU4OGRkYmU1MjIxOGMzMzc3MDNkN2YwNjM3M2QzMjZjYTMwIgorCitFWFRSQV9PRUNPTkYgPSAiLS1kaXNhYmxlLWxkYXAgXAorCQktLWRpc2FibGUtY2NpZC1kcml2ZXIgXAorCQktLXdpdGgtemxpYj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisJCS0td2l0aC1iemlwMj0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisJCS0td2l0aC1yZWFkbGluZT0ke1NUQUdJTkdfTElCRElSfS8uLiBcCisJCS0tZW5hYmxlLWdwZy1pcy1ncGcyIFwKKyAgICAgICAgICAgICAgICIKKworIyBBIG1pbmltYWwgcGFja2FnZSBjb250YWluaW5nIGp1c3QgZW5vdWdoIHRvIHJ1biBncGcrZ3BnYWdlbnQgKEUuZy4gdXNlIGdwZ21lIGluIG9wa2cpCitQQUNLQUdFUyA9KyAiJHtQTn0tZ3BnIgorRklMRVNfJHtQTn0tZ3BnID0gIiBcCisJJHtiaW5kaXJ9L2dwZyBcCisJJHtiaW5kaXJ9L2dwZzIgXAorCSR7YmluZGlyfS9ncGctYWdlbnQgXAorIgorCisjIE5vcm1hbCBwYWNrYWdlIChnbnVwZykgc2hvdWxkIGRlcGVuZCBvbiBtaW5pbWFsIHBhY2thZ2UgKGdudXBnLWdwZykKKyMgdG8gZW5zdXJlIGFsbCB0b29scyBhcmUgaW5jbHVkZWQuIFRoaXMgaXMgZG9uZSBvbmx5IGluIG5vbi1uYXRpdmUKKyMgYnVpbGRzLiBOYXRpdmUgYnVpbGRzIGRvbid0IGhhdmUgc3ViLXBhY2thZ2VzLCBzbyBhcHBlbmRpbmcgUkRFUEVORFMKKyMgaW4gdGhpcyBjYXNlIGJyZWFrcyByZWNpcGUgcGFyc2luZy4KK1JERVBFTkRTXyR7UE59ICs9ICIke0AgIiIgaWYgKCJuYXRpdmUiIGluIGQuZ2V0VmFyKCJQTiIpKSBlbHNlIChkLmdldFZhcigiUE4iKSArICItZ3BnIil9IgorCitSUkVDT01NRU5EU18ke1BOfSA9ICJwaW5lbnRyeSIKKworZG9fY29uZmlndXJlX3ByZXBlbmQgKCkgeworCSMgRWxzZSB0aGVzZSBjb3VsZCBiZSB1c2VkIGluIHByZWZlcm5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKKwlybSAtZiAke1N9L200L2dwZy1lcnJvci5tNAorCXJtIC1mICR7U30vbTQvbGliYXNzdWFuLm00CisJcm0gLWYgJHtTfS9tNC9rc2JhLm00CisJcm0gLWYgJHtTfS9tNC9saWJnY3J5cHQubTQKK30KKworZG9faW5zdGFsbF9hcHBlbmQoKSB7CisJbG4gLXNmIGdwZzIgJHtEfSR7YmluZGlyfS9ncGcKKwlsbiAtc2YgZ3BndjIgJHtEfSR7YmluZGlyfS9ncGd2Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZSgpIHsKKwljcmVhdGVfd3JhcHBlcnMgJHtTVEFHSU5HX0JJTkRJUl9OQVRJVkV9Cit9CisKK2RvX2luc3RhbGxfYXBwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKKwljcmVhdGVfd3JhcHBlcnMgJHtTREtQQVRITkFUSVZFfSR7YmluZGlyX25hdGl2ZXNka30KK30KKworY3JlYXRlX3dyYXBwZXJzKCkgeworCWZvciBpIGluIGdwZzIgZ3BnY29uZiBncGctYWdlbnQgZ3BnLWNvbm5lY3QtYWdlbnQ7IGRvCisJCWNyZWF0ZV93cmFwcGVyICR7RH0ke2JpbmRpcn0vJGkgR05VUEdfQklORElSPSQxCisJZG9uZQorfQorCitQQUNLQUdFQ09ORklHID8/PSAiZ251dGxzIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi0tZW5hYmxlLWdudXRscywgLS1kaXNhYmxlLWdudXRscywgZ251dGxzIgorUEFDS0FHRUNPTkZJR1tzcWxpdGUzXSA9ICItLWVuYWJsZS1zcWxpdGUsIC0tZGlzYWJsZS1zcWxpdGUsIHNxbGl0ZTMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy9wb3NpeC1zaGVsbC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2dudXRscy9wb3NpeC1zaGVsbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTM4ZTJkMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHMvcG9zaXgtc2hlbGwucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzOSArMCwwIEBACi1Eb24ndCBlbWJlZCB0aGUgcGF0aCB0byB0aGUgYnVpbGQtdGltZSBQT1NJWCBzaGVsbCBhcyB0aGlzIHdpbGwgYmUKLSRUTVBESVIvaG9zdHRvb2xzL2Jhc2gsIHdoaWNoIGlzIG5vIGdvb2Qgb24gdGhlIHRhcmdldC4KLQotSW5zdGVhZCBkZWZhdWx0IHRvIC9iaW4vc2ggYnV0IGFsbG93IGl0IHRvIGJlIHNldCBpbiB0aGUgZW52aXJvbm1lbnQuCi0KLVRoaXMgaXNuJ3QgcmVhbGx5IHVwc3RyZWFtYWJsZSBidXQgSSBmaWxlZCBhIGJ1ZyBhdAotaHR0cHM6Ly9naXRsYWIuY29tL2dudXRscy9nbnV0bHMvaXNzdWVzLzgwNyBhbmQgaG9wZSBhIHByb3BlciBmaXggd2lsbCBiZQotaW50ZWdyYXRlZC4KLQotVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1kaWZmIC0tZ2l0IGEvc3JjL2xpYm9wdHMvbTQvbGlib3B0cy5tNCBiL3NyYy9saWJvcHRzL200L2xpYm9wdHMubTQKLWluZGV4IGM2YWQ3MzguLmE2MmZhY2EgMTAwNjQ0Ci0tLS0gYS9zcmMvbGlib3B0cy9tNC9saWJvcHRzLm00Ci0rKysgYi9zcmMvbGlib3B0cy9tNC9saWJvcHRzLm00Ci1AQCAtMTEyLDIxICsxMTIsNyBAQCBBQ19ERUZVTihbSU5WT0tFX0xJQk9QVFNfTUFDUk9TX0ZJUlNUXSxbCi0gICBBQ19DSEVDS19GVU5DUyhbbW1hcCBjYW5vbmljYWxpemVfZmlsZV9uYW1lIHNucHJpbnRmIHN0cmR1cCBzdHJjaHIgXAotICAgICAgICAgICAgICAgICAgc3RycmNociBzdHJzaWduYWwgZmNobW9kIGZzdGF0IGNobW9kXSkKLSAgIEFDX1BST0dfU0VECi0tICBbd2hpbGUgOgotLSAgZG8KLS0gICAgICBQT1NJWF9TSEVMTD1gd2hpY2ggYmFzaGAKLS0gICAgICB0ZXN0IC14ICIkUE9TSVhfU0hFTEwiICYmIGJyZWFrCi0tICAgICAgUE9TSVhfU0hFTEw9YHdoaWNoIGRhc2hgCi0tICAgICAgdGVzdCAteCAiJFBPU0lYX1NIRUxMIiAmJiBicmVhawotLSAgICAgIFBPU0lYX1NIRUxMPS91c3IveHBnNC9iaW4vc2gKLS0gICAgICB0ZXN0IC14ICIkUE9TSVhfU0hFTEwiICYmIGJyZWFrCi0tICAgICAgUE9TSVhfU0hFTEw9YC9iaW4vc2ggLWMgJwotLSAgICAgICAgICBleGVjIDI+L2Rldi9udWxsCi0tICAgICAgICAgIGlmICEgdHJ1ZSA7IHRoZW4gZXhpdCAxIDsgZmkKLS0gICAgICAgICAgZWNobyAvYmluL3NoJ2AKLS0gICAgICB0ZXN0IC14ICIkUE9TSVhfU0hFTEwiICYmIGJyZWFrCi0tICAgICAgXUFDX01TR19FUlJPUihbY2Fubm90IGxvY2F0ZSBhIHdvcmtpbmcgUE9TSVggc2hlbGxdKVsKLS0gIGRvbmVdCi0rICBQT1NJWF9TSEVMTD0iJHtQT1NJWF9TSEVMTDotL2Jpbi9zaH0iCi0gICBBQ19ERUZJTkVfVU5RVU9URUQoW1BPU0lYX1NIRUxMXSwgWyIke1BPU0lYX1NIRUxMfSJdLAotICAgICAgICAgICAgW2RlZmluZSB0byBhIHdvcmtpbmcgUE9TSVggY29tcGxpYW50IHNoZWxsXSkKLSAgIEFDX1NVQlNUKFtQT1NJWF9TSEVMTF0pCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy42LjEzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi4xMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mNTZkNDJhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi4xMy5iYgpAQCAtMCwwICsxLDY3IEBACitTVU1NQVJZID0gIkdOVSBUcmFuc3BvcnQgTGF5ZXIgU2VjdXJpdHkgTGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuZ251Lm9yZy9zb2Z0d2FyZS9nbnV0bHMvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL3NhdmFubmFoLmdudS5vcmcvc3VwcG9ydC8/Z3JvdXA9Z251dGxzIgorCitMSUNFTlNFID0gIkdQTHYzKyAmIExHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgorTElDRU5TRV8ke1BOfS14eCA9ICJMR1BMdjIuMSsiCitMSUNFTlNFXyR7UE59LWJpbiA9ICJHUEx2MysiCitMSUNFTlNFXyR7UE59LW9wZW5zc2wgPSAiR1BMdjMrIgorCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT03MTM5MWM4ZTBjMWNmZTY4MDc3ZTdmY2UzYjU4NjI4MyBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvQ09QWUlORzttZDU9YzY3ODk1N2IwYzhlOTY0YWE2YzcwZmQ3NzY0MWE3MWUgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0NPUFlJTkcuTEVTU0VSO21kNT1hNmY4OWUyMTAwZDliNmNkZmZjZWE0ZjM5OGUzNzM0MyIKKworREVQRU5EUyA9ICJuZXR0bGUgZ21wIHZpcnR1YWwvbGliaWNvbnYgbGlidW5pc3RyaW5nIgorREVQRU5EU19hcHBlbmRfbGliYy1tdXNsID0gIiBhcmdwLXN0YW5kYWxvbmUiCisKK1NIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgorCitTUkNfVVJJID0gImh0dHBzOi8vd3d3LmdudXBnLm9yZy9mdHAvZ2NyeXB0L2dudXRscy92JHtTSFJUX1ZFUn0vZ251dGxzLSR7UFZ9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9hcm1fZWFiaS5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJiYjFmZTY5NmExMTU0MzQzMzc4NWI0ZmM3MGNhMjI1ZiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICIzMjA0MWRmNDQ3ZDlmNDY0NDU3MGNmNTczYzlmNjAzNThlODY1NjM3ZDY5YjdlNTlkMTE1OWI3MjQwYjUyZjM4IgorCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIHBrZ2NvbmZpZyBnZXR0ZXh0IGxpYl9wYWNrYWdlIGd0ay1kb2MKKworUEFDS0FHRUNPTkZJRyA/Pz0gImxpYmlkbiIKKworIyBZb3UgbXVzdCBhbHNvIGhhdmUgQ09ORklHX1NFQ0NPTVAgZW5hYmxlZCBpbiB0aGUga2VybmVsIGZvcgorIyBzZWNjb21wIHRvIHdvcmsuCitQQUNLQUdFQ09ORklHW3NlY2NvbXBdID0gImFjX2N2X2xpYnNlY2NvbXA9eWVzLGFjX2N2X2xpYnNlY2NvbXA9bm8sbGlic2VjY29tcCIKK1BBQ0tBR0VDT05GSUdbbGliaWRuXSA9ICItLXdpdGgtaWRuLC0td2l0aG91dC1pZG4sbGliaWRuMiIKK1BBQ0tBR0VDT05GSUdbbGlidGFzbjFdID0gIi0td2l0aC1pbmNsdWRlZC1saWJ0YXNuMT1ubywtLXdpdGgtaW5jbHVkZWQtbGlidGFzbjEsbGlidGFzbjEiCitQQUNLQUdFQ09ORklHW3AxMS1raXRdID0gIi0td2l0aC1wMTEta2l0LC0td2l0aG91dC1wMTEta2l0LHAxMS1raXQiCitQQUNLQUdFQ09ORklHW3RwbV0gPSAiLS13aXRoLXRwbSwtLXdpdGhvdXQtdHBtLHRyb3VzZXJzIgorCitFWFRSQV9PRUNPTkYgPSAiIFwKKyAgICAtLWVuYWJsZS1kb2MgXAorICAgIC0tZGlzYWJsZS1saWJkYW5lIFwKKyAgICAtLWRpc2FibGUtZ3VpbGUgXAorICAgIC0tZGlzYWJsZS1ycGF0aCBcCisgICAgLS1lbmFibGUtbG9jYWwtbGlib3B0cyBcCisgICAgLS1lbmFibGUtb3BlbnNzbC1jb21wYXRpYmlsaXR5IFwKKyAgICAtLXdpdGgtbGlicHRocmVhZC1wcmVmaXg9JHtTVEFHSU5HX0RJUl9IT1NUfSR7cHJlZml4fSBcCisgICAgLS13aXRoLWRlZmF1bHQtdHJ1c3Qtc3RvcmUtZmlsZT0ke3N5c2NvbmZkaXJ9L3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0IFwKKyIKKworIyBPdGhlcndpc2UgdGhlIHRvb2xzIHRyeSBhbmQgdXNlIEhPU1RUT09MU19ESVIvYmFzaCBhcyBhIHNoZWxsLgorZXhwb3J0IFBPU0lYX1NIRUxMPSIke2Jhc2VfYmluZGlyfS9zaCIKKworTERGTEFHU19hcHBlbmRfbGliYy1tdXNsID0gIiAtbGFyZ3AiCisKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworCWZvciBkaXIgaW4gLiBsaWI7IGRvCisJCXJtIC1mICR7ZGlyfS9hY2xvY2FsLm00ICR7ZGlyfS9tNC9saWJ0b29sLm00ICR7ZGlyfS9tNC9sdCoubTQKKwlkb25lCit9CisKK1BBQ0tBR0VTID0rICIke1BOfS1vcGVuc3NsICR7UE59LXh4IgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9nbnV0bHMtY2xpLWRlYnVnIgorRklMRVNfJHtQTn0tb3BlbnNzbCA9ICIke2xpYmRpcn0vbGliZ251dGxzLW9wZW5zc2wuc28uKiIKK0ZJTEVTXyR7UE59LXh4ID0gIiR7bGliZGlyfS9saWJnbnV0bHN4eC5zby4qIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy42LjguYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9nbnV0bHNfMy42LjguYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGM5MjcwNjMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvZ251dGxzXzMuNi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjggKzAsMCBAQAotU1VNTUFSWSA9ICJHTlUgVHJhbnNwb3J0IExheWVyIFNlY3VyaXR5IExpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvZ251dGxzLyIKLUJVR1RSQUNLRVIgPSAiaHR0cHM6Ly9zYXZhbm5haC5nbnUub3JnL3N1cHBvcnQvP2dyb3VwPWdudXRscyIKLQotTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKLUxJQ0VOU0VfJHtQTn0teHggPSAiTEdQTHYyLjErIgotTElDRU5TRV8ke1BOfS1iaW4gPSAiR1BMdjMrIgotTElDRU5TRV8ke1BOfS1vcGVuc3NsID0gIkdQTHYzKyIKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9NzEzOTFjOGUwYzFjZmU2ODA3N2U3ZmNlM2I1ODYyODMgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vZG9jL0NPUFlJTkc7bWQ1PWM2Nzg5NTdiMGM4ZTk2NGFhNmM3MGZkNzc2NDFhNzFlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9DT1BZSU5HLkxFU1NFUjttZDU9YTZmODllMjEwMGQ5YjZjZGZmY2VhNGYzOThlMzczNDMiCi0KLURFUEVORFMgPSAibmV0dGxlIGdtcCB2aXJ0dWFsL2xpYmljb252IGxpYnVuaXN0cmluZyIKLURFUEVORFNfYXBwZW5kX2xpYmMtbXVzbCA9ICIgYXJncC1zdGFuZGFsb25lIgotCi1TSFJUX1ZFUiA9ICIke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzBdfS4ke0BkLmdldFZhcignUFYnKS5zcGxpdCgnLicpWzFdfSIKLQotU1JDX1VSSSA9ICJodHRwczovL3d3dy5nbnVwZy5vcmcvZnRwL2djcnlwdC9nbnV0bHMvdiR7U0hSVF9WRVJ9L2dudXRscy0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vYXJtX2VhYmkucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcG9zaXgtc2hlbGwucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiOWRjZjBhYTQ1ZDFhNDJlMWIzY2E1ZDM5ZWM3YzYxYTgiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYWE4MTk0NGU1NjM1ZGU5ODExNzE3NzI4NTdlNzJiZTIzMWE3ZTBmNTU5YWUwMjkyZDI3MzdkZTQ3NTM4M2U4MyIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBwa2djb25maWcgZ2V0dGV4dCBsaWJfcGFja2FnZSBndGstZG9jCi0KLVBBQ0tBR0VDT05GSUcgPz89ICJsaWJpZG4iCi0KLSMgWW91IG11c3QgYWxzbyBoYXZlIENPTkZJR19TRUNDT01QIGVuYWJsZWQgaW4gdGhlIGtlcm5lbCBmb3IKLSMgc2VjY29tcCB0byB3b3JrLgotUEFDS0FHRUNPTkZJR1tzZWNjb21wXSA9ICJhY19jdl9saWJzZWNjb21wPXllcyxhY19jdl9saWJzZWNjb21wPW5vLGxpYnNlY2NvbXAiCi1QQUNLQUdFQ09ORklHW2xpYmlkbl0gPSAiLS13aXRoLWlkbiwtLXdpdGhvdXQtaWRuLGxpYmlkbjIiCi1QQUNLQUdFQ09ORklHW2xpYnRhc24xXSA9ICItLXdpdGgtaW5jbHVkZWQtbGlidGFzbjE9bm8sLS13aXRoLWluY2x1ZGVkLWxpYnRhc24xLGxpYnRhc24xIgotUEFDS0FHRUNPTkZJR1twMTEta2l0XSA9ICItLXdpdGgtcDExLWtpdCwtLXdpdGhvdXQtcDExLWtpdCxwMTEta2l0IgotUEFDS0FHRUNPTkZJR1t0cG1dID0gIi0td2l0aC10cG0sLS13aXRob3V0LXRwbSx0cm91c2VycyIKLQotRVhUUkFfT0VDT05GID0gIiBcCi0gICAgLS1lbmFibGUtZG9jIFwKLSAgICAtLWRpc2FibGUtbGliZGFuZSBcCi0gICAgLS1kaXNhYmxlLWd1aWxlIFwKLSAgICAtLWRpc2FibGUtcnBhdGggXAotICAgIC0tZW5hYmxlLWxvY2FsLWxpYm9wdHMgXAotICAgIC0tZW5hYmxlLW9wZW5zc2wtY29tcGF0aWJpbGl0eSBcCi0gICAgLS13aXRoLWxpYnB0aHJlYWQtcHJlZml4PSR7U1RBR0lOR19ESVJfSE9TVH0ke3ByZWZpeH0gXAotICAgIC0td2l0aC1kZWZhdWx0LXRydXN0LXN0b3JlLWZpbGU9JHtzeXNjb25mZGlyfS9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCBcCi0iCi0KLSMgT3RoZXJ3aXNlIHRoZSB0b29scyB0cnkgYW5kIHVzZSBIT1NUVE9PTFNfRElSL2Jhc2ggYXMgYSBzaGVsbC4KLWV4cG9ydCBQT1NJWF9TSEVMTD0iJHtiYXNlX2JpbmRpcn0vc2giCi0KLUxERkxBR1NfYXBwZW5kX2xpYmMtbXVzbCA9ICIgLWxhcmdwIgotCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLQlmb3IgZGlyIGluIC4gbGliOyBkbwotCQlybSAtZiAke2Rpcn0vYWNsb2NhbC5tNCAke2Rpcn0vbTQvbGlidG9vbC5tNCAke2Rpcn0vbTQvbHQqLm00Ci0JZG9uZQotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tb3BlbnNzbCAke1BOfS14eCIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2JpbmRpcn0vZ251dGxzLWNsaS1kZWJ1ZyIKLUZJTEVTXyR7UE59LW9wZW5zc2wgPSAiJHtsaWJkaXJ9L2xpYmdudXRscy1vcGVuc3NsLnNvLioiCi1GSUxFU18ke1BOfS14eCA9ICIke2xpYmRpcn0vbGliZ251dGxzeHguc28uKiIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjEvZml4LWd0a2RvYy5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xL2ZpeC1ndGtkb2MucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGJmYzliOWYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjEvZml4LWd0a2RvYy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDM4ICswLDAgQEAKLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW2h0dHBzOi8vZ2l0bGFiLmNvbS9nbnV0bHMvbGlidGFzbjEvbWVyZ2VfcmVxdWVzdHMvNDldCi1TaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotCi1Gcm9tIGViZDRmODcxYjUyNDE4MDlmNmE1YjQ2MTQ0NGE2ZDMzMWUxNWM5NDkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgotRGF0ZTogTW9uLCA5IFNlcCAyMDE5IDEzOjExOjM5ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIGRvYy9yZWZlcmVuY2U6IGRvbid0IGFkZCBlbXB0eSBvYmplY3QgaGllcmFyY2h5IGNoYXB0ZXIKLQotVGhlIG9iamVjdCBoaWVyYXJjaHkgc2VjdGlvbiBpcyBlbXB0eSBiZWNhdXNlIHRoZXJlIGFyZSBubyBHT2JqZWN0cyBpbiB0aGUKLWxpYnRhc24xIEFQSS4gIFdpdGggZ3RrLWRvYyAxLjMwIG9ud2FyZHMgaWYgdGhlcmUgYXJlIG5vIG9iamVjdHMgdGhlbiB0aGUgb2JqZWN0Ci1oaWVyYXJjaHkgZmlsZSB3b24ndCBleGlzdCwgcmVzdWx0aW5nIGluIGEgZmFpbHVyZSB3aGVuIGJ1aWxkaW5nIHRoZQotZG9jdW1lbnRhdGlvbjoKLQotfCAuLi9saWJ0YXNuMS1kb2NzLnhtbDozOTogZWxlbWVudCBpbmNsdWRlOiBYSW5jbHVkZSBlcnJvciA6IGNvdWxkIG5vdCBsb2FkIC4uL3htbC90cmVlX2luZGV4LnNnbWwsIGFuZCBubyBmYWxsYmFjayB3YXMgZm91bmQKLQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLS0tLQotIGRvYy9yZWZlcmVuY2UvbGlidGFzbjEtZG9jcy54bWwgfCA0IC0tLS0KLSAxIGZpbGUgY2hhbmdlZCwgNCBkZWxldGlvbnMoLSkKLQotZGlmZiAtLWdpdCBhL2RvYy9yZWZlcmVuY2UvbGlidGFzbjEtZG9jcy54bWwgYi9kb2MvcmVmZXJlbmNlL2xpYnRhc24xLWRvY3MueG1sCi1pbmRleCBhY2NkYjg1Li5mODhiODg4IDEwMDY0NAotLS0tIGEvZG9jL3JlZmVyZW5jZS9saWJ0YXNuMS1kb2NzLnhtbAotKysrIGIvZG9jL3JlZmVyZW5jZS9saWJ0YXNuMS1kb2NzLnhtbAotQEAgLTM0LDEwICszNCw2IEBACi0gICAgICAgICA8eGk6aW5jbHVkZSBocmVmPSJ4bWwvbGlidGFzbjEueG1sIi8+Ci0gCi0gICA8L2NoYXB0ZXI+Ci0tICA8Y2hhcHRlciBpZD0ib2JqZWN0LXRyZWUiPgotLSAgICA8dGl0bGU+T2JqZWN0IEhpZXJhcmNoeTwvdGl0bGU+Ci0tICAgIDx4aTppbmNsdWRlIGhyZWY9InhtbC90cmVlX2luZGV4LnNnbWwiLz4KLS0gIDwvY2hhcHRlcj4KLSAgIDxpbmRleCBpZD0iYXBpLWluZGV4LWZ1bGwiPgotICAgICA8dGl0bGU+QVBJIEluZGV4PC90aXRsZT4KLSAgICAgPHhpOmluY2x1ZGUgaHJlZj0ieG1sL2FwaS1pbmRleC1mdWxsLnhtbCI+PHhpOmZhbGxiYWNrIC8+PC94aTppbmNsdWRlPgotLS0gCi0yLjIwLjEKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjEvZml4LWxkZmxhZ3MucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMS9maXgtbGRmbGFncy5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE4ZjNjNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMS9maXgtbGRmbGFncy5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMxICswLDAgQEAKLUZyb20gYTZmOTNiN2FjZTM0N2JjNGZlMjllYjRhOGZlNDM4M2Q3ODZjYzhkMCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206ID0/VVRGLTg/cT9UaW09MjBSPUMzPUJDaHNlbj89IDx0aW0ucnVlaHNlbkBnbXguZGU+Ci1EYXRlOiBUdWUsIDIzIEp1bCAyMDE5IDIwOjQ0OjAxICswMjAwCi1TdWJqZWN0OiBbUEFUQ0hdIEZpeCBMREZMQUdTIHRvIEFNX0xERkxBR1MgaW4gc3JjL01ha2VmaWxlLmFtCi1NSU1FLVZlcnNpb246IDEuMAotQ29udGVudC1UeXBlOiB0ZXh0L3BsYWluOyBjaGFyc2V0PVVURi04Ci1Db250ZW50LVRyYW5zZmVyLUVuY29kaW5nOiA4Yml0Ci0KLVNpZ25lZC1vZmYtYnk6IFRpbSBSw7xoc2VuIDx0aW0ucnVlaHNlbkBnbXguZGU+Ci1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0Ci1TaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgotLS0tCi0gc3JjL01ha2VmaWxlLmFtIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvc3JjL01ha2VmaWxlLmFtIGIvc3JjL01ha2VmaWxlLmFtCi1pbmRleCA1YmYzNjIyLi40NDU5NzY3IDEwMDY0NAotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC0yMSw3ICsyMSw3IEBAIEFNX0NQUEZMQUdTID0gLUkkKHRvcF9idWlsZGRpcikvbGliL2luY2x1ZGVzIC1JJCh0b3Bfc3JjZGlyKS9saWIvaW5jbHVkZXMgXAotICAtSSQodG9wX2J1aWxkZGlyKS9saWIvZ2wgLUkkKHRvcF9zcmNkaXIpL2xpYi9nbCAkKENPREVfQ09WRVJBR0VfQ1BQRkxBR1MpCi0gCi0gTERBREQgPSAuLi9saWIvbGlidGFzbjEubGEKLS1MREZMQUdTID0gJChDT0RFX0NPVkVSQUdFX0xERkxBR1MpCi0rQU1fTERGTEFHUyA9ICQoQ09ERV9DT1ZFUkFHRV9MREZMQUdTKQotIAotIGJpbl9QUk9HUkFNUyA9IGFzbjFQYXJzZXIgYXNuMUNvZGluZyBhc24xRGVjb2RpbmcKLSAKLS0tIAotMi4yMS4wCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2dudXRscy9saWJ0YXNuMV80LjE0LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBlZjJjMTk1Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNCArMCwwIEBACi1TVU1NQVJZID0gIkxpYnJhcnkgZm9yIEFTTi4xIGFuZCBERVIgbWFuaXB1bGF0aW9uIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnUub3JnL3NvZnR3YXJlL2xpYnRhc24xLyIKLQotTElDRU5TRSA9ICJHUEx2MysgJiBMR1BMdjIuMSsiCi1MSUNFTlNFXyR7UE59LWJpbiA9ICJHUEx2MysiCi1MSUNFTlNFXyR7UE59ID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL2RvYy9DT1BZSU5HO21kNT1kMzIyMzliY2I2NzM0NjNhYjg3NGU4MGQ0N2ZhZTUwNCBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9kb2MvQ09QWUlORy5MRVNTRVI7bWQ1PTRmYmQ2NTM4MGNkZDI1NTk1MTA3OTAwOGIzNjQ1MTZjIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL0xJQ0VOU0U7bWQ1PTc1YWMxMDBlYzkyM2Y5NTk4OTgxODIzMDc5NzBjMzYwIgotCi1TUkNfVVJJID0gIiR7R05VX01JUlJPUn0vbGlidGFzbjEvbGlidGFzbjEtJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL2RvbnQtZGVwZW5kLW9uLWhlbHAybWFuLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1sZGZsYWdzLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1ndGtkb2MucGF0Y2ggXAotICAgICAgICAgICAiCi0KLURFUEVORFMgPSAiYmlzb24tbmF0aXZlIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiZTk5MTgyMDBlZDRhNzc4ZTJiM2NiZTM0YzFiZTQyMDUiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiOWU2MDRiYTVjNWM4ZWE0MDM0ODc2OTVjMmU0MDc0MDU4MjBkOTg1NDBkOWRlODg0ZDZlODQ0ZjlhOWM1YmEwOCIKLQotaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBsaWJfcGFja2FnZSBndGstZG9jCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTYuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvZ251dGxzL2xpYnRhc24xXzQuMTYuMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44MzM3YjcwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9nbnV0bHMvbGlidGFzbjFfNC4xNi4wLmJiCkBAIC0wLDAgKzEsMjQgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgQVNOLjEgYW5kIERFUiBtYW5pcHVsYXRpb24iCitIT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudS5vcmcvc29mdHdhcmUvbGlidGFzbjEvIgorCitMSUNFTlNFID0gIkdQTHYzKyAmIExHUEx2Mi4xKyIKK0xJQ0VOU0VfJHtQTn0tYmluID0gIkdQTHYzKyIKK0xJQ0VOU0VfJHtQTn0gPSAiTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vZG9jL0NPUFlJTkc7bWQ1PWQzMjIzOWJjYjY3MzQ2M2FiODc0ZTgwZDQ3ZmFlNTA0IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2RvYy9DT1BZSU5HLkxFU1NFUjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRTttZDU9NzVhYzEwMGVjOTIzZjk1OTg5ODE4MjMwNzk3MGMzNjAiCisKK1NSQ19VUkkgPSAiJHtHTlVfTUlSUk9SfS9saWJ0YXNuMS9saWJ0YXNuMS0ke1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vZG9udC1kZXBlbmQtb24taGVscDJtYW4ucGF0Y2ggXAorICAgICAgICAgICAiCisKK0RFUEVORFMgPSAiYmlzb24tbmF0aXZlIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNTMxMjA4ZGUzNzI5ZDQyZTJhZjBhMzI4OTBmMDg3MzYiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGUwZmIwOTAzODM5MTE3Y2I2ZTNiNTZlNjgyMjI3NzFiZWJmMjJhZDdmYzIyOTVhMGVkN2Q1NzZlOGQ0MzI5ZCIKKworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBsaWJfcGFja2FnZSBndGstZG9jCisKK0NGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtc3RkPWdudTk5IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvMDAwMS1GaXgtYmlnLWVuZGlhbi1idWlsZC5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLUZpeC1iaWctZW5kaWFuLWJ1aWxkLnBhdGNoCmluZGV4IGVmYjI3YWUuLjkxZDY4ODQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLUZpeC1iaWctZW5kaWFuLWJ1aWxkLnBhdGNoCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS8wMDAxLUZpeC1iaWctZW5kaWFuLWJ1aWxkLnBhdGNoCkBAIC02LDIzICs2LDIzIEBACiBCdWctcmVwb3J0OiBodHRwczovL3VuaWNvZGUtb3JnLmF0bGFzc2lhbi5uZXQvYnJvd3NlL0lDVS0yMDUzMwogUGF0Y2ggdGFrZW4gZnJvbTogaHR0cHM6Ly9idWdzLmdlbnRvby5vcmcvNjgyMTcwCiAKLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZworaXQgaXMgYXBwbGllZCB1cHN0cmVhbSBhbmQgd2lsbCBiZSBpbiB2ZXJzaW9uIDY3KworCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vdW5pY29kZS1vcmcvaWN1L2NvbW1pdC80YTNhNDU3YjM4Y2Q4MjhiN2IzZmE0ZmRiYzZlMjUwNGE1NzI3NWU5XQogU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CiAtLS0KICBkYXRhL01ha2VmaWxlLmluIHwgMyArKy0KICAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCiAKLWRpZmYgLS1naXQgYS9zb3VyY2UvZGF0YS9NYWtlZmlsZS5pbiBiL3NvdXJjZS9kYXRhL01ha2VmaWxlLmluCi1pbmRleCA3NzhiNmM3Li42NzIwM2U3IDEwMDY0NAogLS0tIGEvZGF0YS9NYWtlZmlsZS5pbgogKysrIGIvZGF0YS9NYWtlZmlsZS5pbgotQEAgLTE0OCw3ICsxNDgsOCBAQCBJQ1VEQVRBX0FSQ0hJVkUgPSAkKGZpcnN0d29yZCAkKHdpbGRjYXJkICQoc3JjZGlyKS9pbi8kKElDVURBVEFfQkFTRU5BTUVfVkVSU0lPTgotICMgYW5kIGNvbnZlcnQgaXQgdG8gdGhlIGN1cnJlbnQgdHlwZS4KLSBpZm5lcSAoJChJQ1VEQVRBX0FSQ0hJVkUpLCkKLSBJQ1VEQVRBX1NPVVJDRV9BUkNISVZFID0gJChPVVRESVIpLyQoSUNVREFUQV9QTEFURk9STV9OQU1FKS5kYXQKLS0kKElDVURBVEFfU09VUkNFX0FSQ0hJVkUpOiAkKElDVURBVEFfQVJDSElWRSkgJChPVVRESVIpCi0rJChJQ1VEQVRBX1NPVVJDRV9BUkNISVZFKTogJChJQ1VEQVRBX0FSQ0hJVkUpCi0rCSQoTUtJTlNUQUxMRElSUykgJChPVVRESVIpCi0gCSQoSU5WT0tFKSAkKFRPT0xCSU5ESVIpL2ljdXBrZyAtdCQoSUNVREFUQV9DSEFSKSAkKElDVURBVEFfQVJDSElWRSkgJChJQ1VEQVRBX1NPVVJDRV9BUkNISVZFKQotIGVuZGlmCi0gZWxzZQorQEAgLTE0OCw3ICsxNDgsOCBAQCBJQ1VEQVRBX0FSQ0hJVkUgPSAkKGZpcnN0d29yZCAkKHdpbGRjYXJkCisgIyBhbmQgY29udmVydCBpdCB0byB0aGUgY3VycmVudCB0eXBlLg0KKyBpZm5lcSAoJChJQ1VEQVRBX0FSQ0hJVkUpLCkNCisgSUNVREFUQV9TT1VSQ0VfQVJDSElWRSA9ICQoT1VURElSKS8kKElDVURBVEFfUExBVEZPUk1fTkFNRSkuZGF0DQorLSQoSUNVREFUQV9TT1VSQ0VfQVJDSElWRSk6ICQoSUNVREFUQV9BUkNISVZFKSAkKE9VVERJUikNCisrJChJQ1VEQVRBX1NPVVJDRV9BUkNISVZFKTogJChJQ1VEQVRBX0FSQ0hJVkUpDQorKwkkKE1LSU5TVEFMTERJUlMpICQoT1VURElSKQ0KKyAJJChJTlZPS0UpICQoVE9PTEJJTkRJUikvaWN1cGtnIC10JChJQ1VEQVRBX0NIQVIpICQoSUNVREFUQV9BUkNISVZFKSAkKElDVURBVEFfU09VUkNFX0FSQ0hJVkUpDQorIGVuZGlmDQorIGVsc2UNCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvZmlsdGVyLmpzb24gYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3UvZmlsdGVyLmpzb24KbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmM2M2MwOAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdS9maWx0ZXIuanNvbgpAQCAtMCwwICsxLDIgQEAKK3sKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaWN1L2ljdV82NC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzY0LjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDEwYmFjN2EuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzY0LjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwzMCArMCwwIEBACi1yZXF1aXJlIGljdS5pbmMKLQotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vLi4vTElDRU5TRTttZDU9OGJjNWQzMjA1MmE5NmYyMTRjYmRkMWU1M2RmYzkzNWQiCi0KLWRlZiBpY3VfZG93bmxvYWRfdmVyc2lvbihkKToKLSAgICBwdnNwbGl0ID0gZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKQotICAgIHJldHVybiBwdnNwbGl0WzBdICsgIl8iICsgcHZzcGxpdFsxXQotCi1JQ1VfUFYgPSAiJHtAaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCl9IgotCi0jIGh0dHA6Ly9lcnJvcnMueW9jdG9wcm9qZWN0Lm9yZy9FcnJvcnMvRGV0YWlscy8yMDQ4Ni8KLUFSTV9JTlNUUlVDVElPTl9TRVRfYXJtdjQgPSAiYXJtIgotQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NSA9ICJhcm0iCi0KLUJBU0VfU1JDX1VSSSA9ICJodHRwOi8vZG93bmxvYWQuaWN1LXByb2plY3Qub3JnL2ZpbGVzL2ljdTRjLyR7UFZ9L2ljdTRjLSR7SUNVX1BWfS1zcmMudGd6IgotU1JDX1VSSSA9ICIke0JBU0VfU1JDX1VSSX0gXAotICAgICAgICAgICBmaWxlOi8vaWN1LXBrZ2RhdGEtbGFyZ2UtY21kLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1pbnN0YWxsLW1hbngucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYmlnLWVuZGlhbi1idWlsZC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLWljdS1BZGRlZC1hcm1lYi1zdXBwb3J0LnBhdGNoIFwKLSAgICAgICAgICAgIgotCi1TUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLUxERkxBR1NJQ1VEVC1mb3ItTGludXgucGF0Y2ggXAotICAgICAgICAgICIKLVNSQ19VUklbbWQ1c3VtXSA9ICJhM2QxODIxM2JlZWM0NTRlM2NkZWM5YTMxMTZkNmIwNSIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI2MjdkNWQ4NDc4ZTZkOTZmYzhjOTBmZWQ0ODUxMjM5MDc5YTU2MWE2YThiOWU0OGIwODkyZjI0ZTgyZDMxZDZjIgotCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICIoP1A8cHZlcj5cZCsoXC5cZCspKykvIgotVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHA6Ly9kb3dubG9hZC5pY3UtcHJvamVjdC5vcmcvZmlsZXMvaWN1NGMvIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzY2LjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2ljdS9pY3VfNjYuMS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5mMmJiMzQ0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pY3UvaWN1XzY2LjEuYmIKQEAgLTAsMCArMSw2NiBAQAorcmVxdWlyZSBpY3UuaW5jCisKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovLy4uL0xJQ0VOU0U7bWQ1PWEzODA4YTViNzAwNzFiMDdmODdmZjIyMDVlNGQ3NWEwIgorCitkZWYgaWN1X2Rvd25sb2FkX3ZlcnNpb24oZCk6CisgICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKKyAgICByZXR1cm4gcHZzcGxpdFswXSArICJfIiArIHB2c3BsaXRbMV0KKworZGVmIGljdV9kb3dubG9hZF9mb2xkZXIoZCk6CisgICAgcHZzcGxpdCA9IGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJykKKyAgICByZXR1cm4gcHZzcGxpdFswXSArICItIiArIHB2c3BsaXRbMV0KKworSUNVX1BWID0gIiR7QGljdV9kb3dubG9hZF92ZXJzaW9uKGQpfSIKK0lDVV9GT0xERVIgPSAiJHtAaWN1X2Rvd25sb2FkX2ZvbGRlcihkKX0iCisKKyMgaHR0cDovL2Vycm9ycy55b2N0b3Byb2plY3Qub3JnL0Vycm9ycy9EZXRhaWxzLzIwNDg2LworQVJNX0lOU1RSVUNUSU9OX1NFVF9hcm12NCA9ICJhcm0iCitBUk1fSU5TVFJVQ1RJT05fU0VUX2FybXY1ID0gImFybSIKKworQkFTRV9TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvcmVsZWFzZXMvZG93bmxvYWQvcmVsZWFzZS0ke0lDVV9GT0xERVJ9L2ljdTRjLSR7SUNVX1BWfS1zcmMudGd6IgorREFUQV9TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS91bmljb2RlLW9yZy9pY3UvcmVsZWFzZXMvZG93bmxvYWQvcmVsZWFzZS0ke0lDVV9GT0xERVJ9L2ljdTRjLSR7SUNVX1BWfS1kYXRhLnppcCIKK1NSQ19VUkkgPSAiJHtCQVNFX1NSQ19VUkl9O25hbWU9Y29kZSBcCisgICAgICAgICAgICR7REFUQV9TUkNfVVJJfTtuYW1lPWRhdGEgXAorICAgICAgICAgICBmaWxlOi8vZmlsdGVyLmpzb24gXAorICAgICAgICAgICBmaWxlOi8vaWN1LXBrZ2RhdGEtbGFyZ2UtY21kLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL2ZpeC1pbnN0YWxsLW1hbngucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1GaXgtYmlnLWVuZGlhbi1idWlsZC5wYXRjaDthcHBseT1ubyBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLWljdS1BZGRlZC1hcm1lYi1zdXBwb3J0LnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJX2FwcGVuZF9jbGFzcy10YXJnZXQgPSAiXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1EaXNhYmxlLUxERkxBR1NJQ1VEVC1mb3ItTGludXgucGF0Y2ggXAorICAgICAgICAgICIKK1NSQ19VUklbY29kZS5zaGEyNTZzdW1dID0gIjUyYTNmMjIwOWFiOTU1NTljMWNmMGExNGYyNDMzODAwMWYzODk2MTViZjAwZTI1ODVlZjNkYmM0M2VjZjBhMmUiCitTUkNfVVJJW2RhdGEuc2hhMjU2c3VtXSA9ICI4YmU2NDdmNzM4ODkxZDJiZWI3OWQ0OGY5OTA3N2IzNDk5OTQ4NDMwZWFlNmYxYmUxMTI1NTNiMTVhYjAyNDNlIgorCitVUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJpY3U0Yy0oP1A8cHZlcj5cZCsoX1xkKykrKS1zcmMiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL3VuaWNvZGUtb3JnL2ljdS9yZWxlYXNlcyIKKworRVhUUkFfT0VDT05GX2FwcGVuZF9saWJjLW11c2wgPSAiIGFjX2N2X2Z1bmNfc3RydG9kX2w9bm8iCisKK2RvX21ha2VfaWN1ZGF0YV9jbGFzcy10YXJnZXQgKCkgeworICAgIGNkICR7U30KKyAgICBybSAtcmYgZGF0YQorICAgIGNwIC1hICR7V09SS0RJUn0vZGF0YSAuCisgICAgcGF0Y2ggLXAxIDwgJHtXT1JLRElSfS8wMDAxLUZpeC1iaWctZW5kaWFuLWJ1aWxkLnBhdGNoCisgICAgQVI9JyR7QlVJTERfQVJ9JyBcCisgICAgQ0M9JyR7QlVJTERfQ0N9JyBcCisgICAgQ1BQPScke0JVSUxEX0NQUH0nIFwKKyAgICBDWFg9JyR7QlVJTERfQ1hYfScgXAorICAgIFJBTkxJQj0nJHtCVUlMRF9SQU5MSUJ9JyBcCisgICAgQ0ZMQUdTPScke0JVSUxEX0NGTEFHU30nIFwKKyAgICBDUFBGTEFHUz0nJHtCVUlMRF9DUFBGTEFHU30nIFwKKyAgICBDWFhGTEFHUz0nJHtCVUlMRF9DWFhGTEFHU30nIFwKKyAgICBMREZMQUdTPScke0JVSUxEX0xERkxBR1N9JyBcCisgICAgSUNVX0RBVEFfRklMVEVSX0ZJTEU9JHtXT1JLRElSfS9maWx0ZXIuanNvbiBcCisgICAgLi9ydW5Db25maWd1cmVJQ1UgTGludXggLS13aXRoLWRhdGEtcGFja2FnaW5nPWFyY2hpdmUKKyAgICBvZV9ydW5tYWtlICR7UEFSQUxMRUxfTUFLRX0KKyAgICBpbnN0YWxsIC1EbTY0NCAke1N9L2RhdGEvb3V0L2ljdWR0JHtJQ1VfTUFKT1JfVkVSfWwuZGF0ICR7U30vZGF0YS9pbi9pY3VkdCR7SUNVX01BSk9SX1ZFUn1sLmRhdAorfQorCitkb19tYWtlX2ljdWRhdGEoKSB7CisgICAgOgorfQorCithZGR0YXNrIG1ha2VfaWN1ZGF0YSBiZWZvcmUgZG9fY29uZmlndXJlIGFmdGVyIGRvX3BhdGNoCmRpZmYgLS1naXQgYS9tZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pdHN0b29sL2l0c3Rvb2wvMDAwMS1OYXRpdmUtRG9uLXQtdXNlLWJ1aWxkLXRpbWUtaGFyZGNvZGVkLXB5dGhvbi1iaW5hcnktLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pdHN0b29sL2l0c3Rvb2wvMDAwMS1OYXRpdmUtRG9uLXQtdXNlLWJ1aWxkLXRpbWUtaGFyZGNvZGVkLXB5dGhvbi1iaW5hcnktLnBhdGNoCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBtZXRhLW9wZW5lbWJlZGRlZC9tZXRhLW9lL3JlY2lwZXMtc3VwcG9ydC9pdHN0b29sL2l0c3Rvb2wvMDAwMS1OYXRpdmUtRG9uLXQtdXNlLWJ1aWxkLXRpbWUtaGFyZGNvZGVkLXB5dGhvbi1iaW5hcnktLnBhdGNoCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbC8wMDAxLU5hdGl2ZS1Eb24tdC11c2UtYnVpbGQtdGltZS1oYXJkY29kZWQtcHl0aG9uLWJpbmFyeS0ucGF0Y2gKZGlmZiAtLWdpdCBhL21ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbC8wMDAyLURvbi10LXVzZS1idWlsZC10aW1lLWhhcmRjb2RlZC1weXRob24tYmluYXJ5LXBhdGgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbC8wMDAyLURvbi10LXVzZS1idWlsZC10aW1lLWhhcmRjb2RlZC1weXRob24tYmluYXJ5LXBhdGgucGF0Y2gKc2ltaWxhcml0eSBpbmRleCAxMDAlCnJlbmFtZSBmcm9tIG1ldGEtb3BlbmVtYmVkZGVkL21ldGEtb2UvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbC8wMDAyLURvbi10LXVzZS1idWlsZC10aW1lLWhhcmRjb2RlZC1weXRob24tYmluYXJ5LXBhdGgucGF0Y2gKcmVuYW1lIHRvIHBva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvaXRzdG9vbC9pdHN0b29sLzAwMDItRG9uLXQtdXNlLWJ1aWxkLXRpbWUtaGFyZGNvZGVkLXB5dGhvbi1iaW5hcnktcGF0aC5wYXRjaApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pdHN0b29sL2l0c3Rvb2xfMi4wLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2l0c3Rvb2wvaXRzdG9vbF8yLjAuNi5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41ZjM1OGY0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9pdHN0b29sL2l0c3Rvb2xfMi4wLjYuYmIKQEAgLTAsMCArMSwyMSBAQAorU1VNTUFSWSA9ICJJVFMgVG9vbCBhbGxvd3MgeW91IHRvIHRyYW5zbGF0ZSB5b3VyIFhNTCBkb2N1bWVudHMgd2l0aCBQTyBmaWxlcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9pdHN0b29sLm9yZy8iCitMSUNFTlNFID0gIkdQTHYzIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTljNTdiOTVmZDdkMGU5ZTIzOGViYmM3YWQ0N2M1YTUiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHB5dGhvbjNuYXRpdmUKKworREVQRU5EUyA9ICJsaWJ4bWwyLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJodHRwOi8vZmlsZXMuaXRzdG9vbC5vcmcvJHtCUE59LyR7QlBOfS0ke1BWfS50YXIuYnoyIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiBmaWxlOi8vMDAwMS1OYXRpdmUtRG9uLXQtdXNlLWJ1aWxkLXRpbWUtaGFyZGNvZGVkLXB5dGhvbi1iaW5hcnktLnBhdGNoIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtbmF0aXZlc2RrID0gIiBmaWxlOi8vMDAwMS1OYXRpdmUtRG9uLXQtdXNlLWJ1aWxkLXRpbWUtaGFyZGNvZGVkLXB5dGhvbi1iaW5hcnktLnBhdGNoIgorU1JDX1VSSV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBmaWxlOi8vMDAwMi1Eb24tdC11c2UtYnVpbGQtdGltZS1oYXJkY29kZWQtcHl0aG9uLWJpbmFyeS1wYXRoLnBhdGNoIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNDMwNmVlYmE0ZjRhZWU2YjM5M2QxNGY5YzNjNTdjYTEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiNjIzM2NjMjI3MjZhOWE1YTgzNjY0YmY2N2QxYWY3OTU0OWEyOThjMjMxODVkOTI2YzM2NzdhZmE5MTdiOTJhOSIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgorCitSREVQRU5EU18ke1BOfSArPSAibGlieG1sMi1weXRob24iCitSREVQRU5EU18ke1BOfV9jbGFzcy1uYXRpdmUgPSAiIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuXzIuNS4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJhc3N1YW4vbGliYXNzdWFuXzIuNS4zLmJiCmluZGV4IDZmYjNkMmYuLjUyYjRjMGYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYXNzdWFuL2xpYmFzc3Vhbl8yLjUuMy5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmFzc3Vhbi9saWJhc3N1YW5fMi41LjMuYmIKQEAgLTIyLDExICsyMiwxNSBAQAogCiBCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2xpYmFzc3Vhbi1jb25maWciCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gYmluY29uZmlnLWRpc2FibGVkIHBrZ2NvbmZpZworaW5oZXJpdCBhdXRvdG9vbHMgdGV4aW5mbyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnIG11bHRpbGliX2hlYWRlcgogCiBkb19jb25maWd1cmVfcHJlcGVuZCAoKSB7CiAJIyBFbHNlIHRoZXNlIGNvdWxkIGJlIHVzZWQgaW4gcHJlZmVyZW5jZSB0byB0aG9zZSBpbiBhY2xvY2FsLWNvcHkKIAlybSAtZiAke1N9L200LyoubTQKIH0KIAorZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgIG9lX211bHRpbGliX2hlYWRlciBhc3N1YW4uaAorfQorCiBCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC4xMC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJic2QvbGliYnNkXzAuMTAuMC5iYgppbmRleCBlYWYyNDRhLi4zYjlhYzVhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmJzZC9saWJic2RfMC4xMC4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliYnNkL2xpYmJzZF8wLjEwLjAuYmIKQEAgLTcsNyArNyw3IEBACiAgICAgICAgICAgICAgICBwcm9qZWN0cyB3aXRoIHN0cm9uZyBCU0Qgb3JpZ2lucywgd2l0aG91dCBuZWVkaW5nIHRvIGVtYmVkIHRoZSBzYW1lIFwKICAgICAgICAgICAgICAgIGNvZGUgb3ZlciBhbmQgb3ZlciBhZ2FpbiBvbiBlYWNoIHByb2plY3QuIgogCi1IT01FUEFHRSA9ICJodHRwOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy93aWtpLyIKK0hPTUVQQUdFID0gImh0dHBzOi8vbGliYnNkLmZyZWVkZXNrdG9wLm9yZy93aWtpLyIKICMgVGhlcmUgc2VlbXMgdG8gYmUgbW9yZSBsaWNlbnNlcyB1c2VkIGluIHRoZSBjb2RlLCBJIGRvbid0IHRoaW5rIHdlIHdhbnQgdG8gbGlzdCB0aGVtIGFsbCBoZXJlLCBjb21wbGV0ZSBsaXN0OgogIyBPRSBAIH4vcHJvamVjdHMvbGliYnNkICQgZ3JlcCBeTGljZW5zZTogQ09QWUlORyAgfCBzb3J0IC11CiAjIExpY2Vuc2U6IEJTRC0yLWNsYXVzZQpAQCAtMzEsNyArMzEsNyBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9MjEyMGJlMDE3MzQ2OWEwNmVkMTg1YjY4OGUwZTFhZTAiCiBTRUNUSU9OID0gImxpYnMiCiAKLVNSQ19VUkkgPSAiaHR0cDovL2xpYmJzZC5mcmVlZGVza3RvcC5vcmcvcmVsZWFzZXMvJHtCUE59LSR7UFZ9LnRhci54eiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly9saWJic2QuZnJlZWRlc2t0b3Aub3JnL3JlbGVhc2VzLyR7QlBOfS0ke1BWfS50YXIueHoiCiAKIFNSQ19VUklbbWQ1c3VtXSA9ICJlYWQ5NmQyNDBkMDJmYWE1YjkyMWMwYWE1MGM4MTJiNSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIzNGI4YWRjNzI2ODgzZDBlODViMzExOGZhMTM2MDVlMTc5YTYyYjMxYmE1MWY2NzYxMzZlY2IyZDBiYzFhODg3IgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZy5pbmMKaW5kZXggYWVjODM4OS4uMDAyOTE1YSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLmluYworKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmcuaW5jCkBAIC05LDYgKzksOCBAQAogCiBTUkNfVVJJID0gImh0dHA6Ly9wZW9wbGUucmVkaGF0LmNvbS9zZ3J1YmIvbGliY2FwLW5nL2xpYmNhcC1uZy0ke1BWfS50YXIuZ3ogXAogICAgICAgICAgICBmaWxlOi8vcHl0aG9uLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtY29uZmlndXJlLmFjLWFkZC1saWJyYXJ5LWlmLWhlYWRlci1mb3VuZC5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLVdyYXAtcHRocmVhZF9hdGZvcmstdXNhZ2UtaW4tSEFWRV9QVEhSRUFEX0gucGF0Y2ggXAogIgogCiBTUkNfVVJJW21kNXN1bV0gPSAiNTdkYzI2N2UyOTQ5Y2RlY2I2NTFhOTI5ZjkyMDY1NzIiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmcvMDAwMS1jb25maWd1cmUuYWMtYWRkLWxpYnJhcnktaWYtaGVhZGVyLWZvdW5kLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLzAwMDEtY29uZmlndXJlLmFjLWFkZC1saWJyYXJ5LWlmLWhlYWRlci1mb3VuZC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjE1NWNjCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLzAwMDEtY29uZmlndXJlLmFjLWFkZC1saWJyYXJ5LWlmLWhlYWRlci1mb3VuZC5wYXRjaApAQCAtMCwwICsxLDMxIEBACitGcm9tIDAyMzBlMmUzNzRiYjcxYWVkMDE4MWNjZDllYmQxM2MwYzUxMjVhNWQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBUcmV2b3IgV29lcm5lciA8dHdvZXJuZXJAZ21haWwuY29tPgorRGF0ZTogRnJpLCAyNSBPY3QgMjAxOSAxNzowMToyMCAtMDQwMAorU3ViamVjdDogW1BBVENIXSBjb25maWd1cmUuYWM6IGFkZCBsaWJyYXJ5IGlmIGhlYWRlciBmb3VuZAorCitJZiB0aGUgcHRocmVhZC5oIGhlYWRlciBpcyBmb3VuZCwgbWFrZSBzdXJlIGxpYnJhcnkgY29udGFpbmluZworInB0aHJlYWRfYXRmb3JrIiBpcyBhZGRlZCB0byB0aGUgbGlzdCBvZiBsaWJyYXJpZXMgYWdhaW5zdCB3aGljaCB0byBsaW5rLgorT24gc29tZSBob3N0cyAoZS5nLiBvcGVuU1VTRSAxNS4xKSAiLWxwdGhyZWFkIiBuZWVkcyB0byBiZSBleHBsaWNpdGx5IGFkZGVkCitpbiBvcmRlciBmb3IgdGhlIGNvZGUgdG8gY29tcGlsZSBjb3JyZWN0bHkuCisKK1Vwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vc3RldmVncnViYi9saWJjYXAtbmcvcHVsbC8xMF0KK1NpZ25lZC1vZmYtYnk6IFRyZXZvciBXb2VybmVyIDx0d29lcm5lckBnbWFpbC5jb20+CistLS0KKyBjb25maWd1cmUuYWMgfCA0ICsrKy0KKyAxIGZpbGUgY2hhbmdlZCwgMyBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IDYzMDg4ZjQuLjYzOWI0NjQgMTAwNjQ0CistLS0gYS9jb25maWd1cmUuYWMKKysrKyBiL2NvbmZpZ3VyZS5hYworQEAgLTU2LDcgKzU2LDkgQEAgQUNfQ0hFQ0tfSEVBREVSUyhzeXMveGF0dHIuaCwgW10sIFsKKyAJQUNfQ0hFQ0tfSEVBREVSUyhhdHRyL3hhdHRyLmgsIFtdLCBbQUNfTVNHX1dBUk4oYXR0ci94YXR0ci5oIG5vdCBmb3VuZCwgZGlzYWJsaW5nIGZpbGUgc3lzdGVtIGNhcGFiaWxpdGllcy4pXSkKKyAJXSkKKyBBQ19DSEVDS19IRUFERVJTKGxpbnV4L3NlY3VyZWJpdHMuaCwgW10sIFtdKQorLUFDX0NIRUNLX0hFQURFUlMocHRocmVhZC5oLCBbXSwgW0FDX01TR19XQVJOKHB0aHJlYWQuaCBub3QgZm91bmQsIGRpc2FibGluZyBwdGhyZWFkX2F0Zm9yay4pXSkKKytBQ19DSEVDS19IRUFERVJTKHB0aHJlYWQuaCwKKysJW0FDX1NFQVJDSF9MSUJTKHB0aHJlYWRfYXRmb3JrLCBwdGhyZWFkKV0sCisrCVtBQ19NU0dfV0FSTihwdGhyZWFkLmggbm90IGZvdW5kLCBkaXNhYmxpbmcgcHRocmVhZF9hdGZvcmsuKV0pCisgCisgQUNfQ19DT05TVAorIEFDX0NfSU5MSU5FCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmcvMDAwMi1XcmFwLXB0aHJlYWRfYXRmb3JrLXVzYWdlLWluLUhBVkVfUFRIUkVBRF9ILnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLzAwMDItV3JhcC1wdGhyZWFkX2F0Zm9yay11c2FnZS1pbi1IQVZFX1BUSFJFQURfSC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5jNjgyNTRmCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nLzAwMDItV3JhcC1wdGhyZWFkX2F0Zm9yay11c2FnZS1pbi1IQVZFX1BUSFJFQURfSC5wYXRjaApAQCAtMCwwICsxLDI1IEBACitGcm9tIGQ5NWM0MDE4YWQ1N2MzN2Y2MjcyZGJlZGZhNTIxNzc3NjU2N2MzMjkgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBDaHJpc3RvcGhlciBMYXJzb24gPGNocmlzX2xhcnNvbkBtZW50b3IuY29tPgorRGF0ZTogVHVlLCAyNiBOb3YgMjAxOSAyMjozNDozNCArMDUwMAorU3ViamVjdDogW1BBVENIXSBXcmFwIHB0aHJlYWRfYXRmb3JrIHVzYWdlIGluIEhBVkVfUFRIUkVBRF9ICisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogQ2hyaXN0b3BoZXIgTGFyc29uIDxjaHJpc19sYXJzb25AbWVudG9yLmNvbT4KKy0tLQorIHNyYy9jYXAtbmcuYyB8IDIgKysKKyAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspCisKK2RpZmYgLS1naXQgYS9zcmMvY2FwLW5nLmMgYi9zcmMvY2FwLW5nLmMKK2luZGV4IDM1ZmNkN2EuLjk3YTNkYmQgMTAwNjQ0CistLS0gYS9zcmMvY2FwLW5nLmMKKysrKyBiL3NyYy9jYXAtbmcuYworQEAgLTE2Niw3ICsxNjYsOSBAQCBzdGF0aWMgdm9pZCBkZWluaXQodm9pZCkKKyBzdGF0aWMgdm9pZCBpbml0X2xpYih2b2lkKSBfX2F0dHJpYnV0ZV9fICgoY29uc3RydWN0b3IpKTsKKyBzdGF0aWMgdm9pZCBpbml0X2xpYih2b2lkKQorIHsKKysjaWZkZWYgSEFWRV9QVEhSRUFEX0gKKyAJcHRocmVhZF9hdGZvcmsoTlVMTCwgTlVMTCwgZGVpbml0KTsKKysjZW5kaWYKKyB9CisgCisgc3RhdGljIHZvaWQgaW5pdCh2b2lkKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nXzAuNy4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwLW5nL2xpYmNhcC1uZ18wLjcuMTAuYmIKaW5kZXggYTlhMDQ2NS4uNmU2ZGU0NSAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAtbmcvbGliY2FwLW5nXzAuNy4xMC5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC1uZy9saWJjYXAtbmdfMC43LjEwLmJiCkBAIC0zLDcgKzMsNiBAQAogaW5oZXJpdCBsaWJfcGFja2FnZSBhdXRvdG9vbHMKIAogRVhUUkFfT0VDT05GICs9ICItLXdpdGhvdXQtcHl0aG9uIC0td2l0aG91dC1weXRob24zIgotTERGTEFHU19hcHBlbmRfY2xhc3MtbmF0aXZlID0gIiAtcHRocmVhZCIKIAogQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9maWxlcy8wMDAxLXRlc3RzLWRvLW5vdC1zdGF0aWNhbGx5LWxpbmstYS10ZXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvZmlsZXMvMDAwMS10ZXN0cy1kby1ub3Qtc3RhdGljYWxseS1saW5rLWEtdGVzdC5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNTY4Y2M0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvZmlsZXMvMDAwMS10ZXN0cy1kby1ub3Qtc3RhdGljYWxseS1saW5rLWEtdGVzdC5wYXRjaApAQCAtMCwwICsxLDI2IEBACitGcm9tIDExNzliNDIzY2NlOGQxMTliNDJjZWJmYjNkYWE3N2M1NDBmZGNhNDMgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IFdlZCwgMTUgSmFuIDIwMjAgMTc6MTY6MjggKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdHM6IGRvIG5vdCBzdGF0aWNhbGx5IGxpbmsgYSB0ZXN0CisKK1RoaXMgZmFpbHMgb24gZS5nLiBjZW50b3MgNworCitVcHN0cmVhbS1TdGF0dXM6IEluYXBwcm9wcmlhdGUgW29lLWNvcmUgc3BlY2lmaWNdCitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHRlc3RzL01ha2VmaWxlIHwgMiArLQorIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQorCitkaWZmIC0tZ2l0IGEvdGVzdHMvTWFrZWZpbGUgYi90ZXN0cy9NYWtlZmlsZQoraW5kZXggNzE2MmNmMC4uNmFmNDdhZiAxMDA2NDQKKy0tLSBhL3Rlc3RzL01ha2VmaWxlCisrKysgYi90ZXN0cy9NYWtlZmlsZQorQEAgLTI5LDcgKzI5LDcgQEAgcHN4X3Rlc3Rfd3JhcDogcHN4X3Rlc3QuYyAkKERFUFMpCisgcnVuX2xpYmNhcF9wc3hfdGVzdDogbGliY2FwX3BzeF90ZXN0CisgCisgbGliY2FwX3BzeF90ZXN0OiBsaWJjYXBfcHN4X3Rlc3QuYyAkKERFUFMpCistCSQoQ0MpICQoQ0ZMQUdTKSAkKElQQVRIKSAkPCAtbyAkQCAkKExJQkNBUExJQikgJChMSUJQU1hMSUIpIC1XbCwtd3JhcCxwdGhyZWFkX2NyZWF0ZSAtLXN0YXRpYworKwkkKENDKSAkKENGTEFHUykgJChJUEFUSCkgJDwgLW8gJEAgJChMSUJDQVBMSUIpICQoTElCUFNYTElCKSAtV2wsLXdyYXAscHRocmVhZF9jcmVhdGUKKyAKKyBjbGVhbjoKKyAJcm0gLWYgcHN4X3Rlc3QgcHN4X3Rlc3Rfd3JhcCBsaWJjYXBfcHN4X3Rlc3QKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2ZpbGVzLzAwMDItdGVzdHMtZG8tbm90LXJ1bi10YXJnZXQtZXhlY3V0YWJsZXMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9maWxlcy8wMDAyLXRlc3RzLWRvLW5vdC1ydW4tdGFyZ2V0LWV4ZWN1dGFibGVzLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI2ZDEwOGMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9maWxlcy8wMDAyLXRlc3RzLWRvLW5vdC1ydW4tdGFyZ2V0LWV4ZWN1dGFibGVzLnBhdGNoCkBAIC0wLDAgKzEsMzMgQEAKK0Zyb20gNjMwOTU1NDIyNWUwNWU3NjE2N2VkYTRlMGRmMzgzZmIzZDFhNjJjMyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorRGF0ZTogRnJpLCAyMCBEZWMgMjAxOSAxNjo1NDowNSArMDEwMAorU3ViamVjdDogW1BBVENIXSB0ZXN0czogZG8gbm90IHJ1biB0YXJnZXQgZXhlY3V0YWJsZXMKKworVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlIFtvZS1jb3JlIHNwZWNpZmljXQorU2lnbmVkLW9mZi1ieTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CisKKy0tLQorIHRlc3RzL01ha2VmaWxlIHwgMyAtLS0KKyAxIGZpbGUgY2hhbmdlZCwgMyBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3Rlc3RzL01ha2VmaWxlIGIvdGVzdHMvTWFrZWZpbGUKK2luZGV4IDk1ZTRjYTYuLjcxNjJjZjAgMTAwNjQ0CistLS0gYS90ZXN0cy9NYWtlZmlsZQorKysrIGIvdGVzdHMvTWFrZWZpbGUKK0BAIC0xOSw4ICsxOSw2IEBAIHN1ZG90ZXN0OiB0ZXN0CisgaW5zdGFsbDogYWxsCisgCisgcnVuX3BzeF90ZXN0OiBwc3hfdGVzdCBwc3hfdGVzdF93cmFwCistCS4vcHN4X3Rlc3QKKy0JLi9wc3hfdGVzdF93cmFwCisgCisgcHN4X3Rlc3Q6IHBzeF90ZXN0LmMgJChERVBTKQorIAkkKENDKSAkKENGTEFHUykgJChJUEFUSCkgLUROT1dSQVAgJDwgLW8gJEAgJChMSUJQU1hMSUIpCitAQCAtMjksNyArMjcsNiBAQCBwc3hfdGVzdF93cmFwOiBwc3hfdGVzdC5jICQoREVQUykKKyAJJChDQykgJChDRkxBR1MpICQoSVBBVEgpICQ8IC1vICRAICQoTElCUFNYTElCKSAtV2wsLXdyYXAscHRocmVhZF9jcmVhdGUKKyAKKyBydW5fbGliY2FwX3BzeF90ZXN0OiBsaWJjYXBfcHN4X3Rlc3QKKy0JLi9saWJjYXBfcHN4X3Rlc3QKKyAKKyBsaWJjYXBfcHN4X3Rlc3Q6IGxpYmNhcF9wc3hfdGVzdC5jICQoREVQUykKKyAJJChDQykgJChDRkxBR1MpICQoSVBBVEgpICQ8IC1vICRAICQoTElCQ0FQTElCKSAkKExJQlBTWExJQikgLVdsLC13cmFwLHB0aHJlYWRfY3JlYXRlIC0tc3RhdGljCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNhcC9saWJjYXBfMi4yNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjI3LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAzZjY0ZmY3Li4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjI3LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNzUgKzAsMCBAQAotU1VNTUFSWSA9ICJMaWJyYXJ5IGZvciBnZXR0aW5nL3NldHRpbmcgUE9TSVguMWUgY2FwYWJpbGl0aWVzIgotSE9NRVBBR0UgPSAiaHR0cDovL3NpdGVzLmdvb2dsZS5jb20vc2l0ZS9mdWxseWNhcGFibGUvIgotCi0jIG5vIHNwZWNpZmljIEdQTCB2ZXJzaW9uIHJlcXVpcmVkCi1MSUNFTlNFID0gIkJTRCB8IEdQTHYyIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTGljZW5zZTttZDU9M2Y4NGZkNmYyOWQ0NTNhNTY1MTRjYjdlNGVhZDI1ZjEiCi0KLURFUEVORFMgPSAiaG9zdHBlcmwtcnVudGltZS1uYXRpdmUgZ3BlcmYtbmF0aXZlIgotCi1TUkNfVVJJID0gIiR7S0VSTkVMT1JHX01JUlJPUn0vbGludXgvbGlicy9zZWN1cml0eS9saW51eC1wcml2cy8ke0JQTn0yLyR7QlBOfS0ke1BWfS50YXIueHogXAotICAgICAgICAgICBmaWxlOi8vMDAwMS1lbnN1cmUtdGhlLVhBVFRSX05BTUVfQ0FQUy1pcy1kZWZpbmVkLXdoZW4taXQtaXMtdXNlLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjJlOGY5ZmFiMzJlYjVjY2IzNzk2OWZlMzE3ZmQxN2FhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gImRhYzE3OTJkMDExOGJlZTZhYWU2YmE3ZmI5M2ZmMTYwMmM2YTliZGE4MTJmZDYzOTE2ZWVlMTQzNWI5YzQ4NmEiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL3d3dy5rZXJuZWwub3JnL3B1Yi9saW51eC9saWJzL3NlY3VyaXR5L2xpbnV4LXByaXZzLyR7QlBOfTIvIgotCi1pbmhlcml0IGxpYl9wYWNrYWdlCi0KLSMgZG8gTk9UIHBhc3MgdGFyZ2V0IGNmbGFncyB0byBob3N0IGNvbXBpbGF0aW9ucwotIwotZG9fY29uZmlndXJlKCkgewotCSMgbGliY2FwIHVzZXMgOj0gZm9yIGNvbXBpbGVycywgZm9ydHVuYXRlbHksIGl0IGdpdmVzIHVzIGEgaGludAotCSMgb24gd2hhdCBzaG91bGQgYmUgcmVwbGFjZWQgd2l0aCA/PQotCXNlZCAtZSAncyw6PSw/PSxnJyAtaSBNYWtlLlJ1bGVzCi0Jc2VkIC1lICdzLF5CVUlMRF9DRkxBR1MgPz0gJCguKkNGTEFHUyksQlVJTERfQ0ZMQUdTIDo9ICQoQlVJTERfQ0ZMQUdTKSwnIC1pIE1ha2UuUnVsZXMKLX0KLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiR7QGJiLnV0aWxzLmZpbHRlcignRElTVFJPX0ZFQVRVUkVTJywgJ3BhbScsIGQpfSIKLVBBQ0tBR0VDT05GSUdfY2xhc3MtbmF0aXZlID8/PSAiIgotCi1QQUNLQUdFQ09ORklHW3BhbV0gPSAiUEFNX0NBUD15ZXMsUEFNX0NBUD1ubyxsaWJwYW0iCi0KLUVYVFJBX09FTUFLRSA9ICIgXAotICBJTkRFTlQ9ICBcCi0gIGxpYj0nJHtiYXNlbGlifScgXAotICBSQUlTRV9TRVRGQ0FQPW5vIFwKLSAgRFlOQU1JQz15ZXMgXAotICBCVUlMRF9HUEVSRj15ZXMgXAotIgotCi1FWFRSQV9PRU1BS0VfYXBwZW5kX2NsYXNzLXRhcmdldCA9ICIgU1lTVEVNX0hFQURFUlM9JHtTVEFHSU5HX0lOQ0RJUn0iCi0KLSMgdGhlc2UgYXJlIHByZXNlbnQgaW4gdGhlIGxpYmNhcCBkZWZhdWx0cywgc28gaW5jbHVkZSBpbiBvdXIgQ0ZMQUdTIHRvbwotQ0ZMQUdTICs9ICItRF9MQVJHRUZJTEU2NF9TT1VSQ0UgLURfRklMRV9PRkZTRVRfQklUUz02NCIKLQotZG9fY29tcGlsZSgpIHsKLQlvZV9ydW5tYWtlICR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30KLX0KLQotZG9faW5zdGFsbCgpIHsKLQlvZV9ydW5tYWtlIGluc3RhbGwgXAotCQkke1BBQ0tBR0VDT05GSUdfQ09ORkFSR1N9IFwKLQkJREVTVERJUj0iJHtEfSIgXAotCQlwcmVmaXg9IiR7cHJlZml4fSIgXAotCQlTQklORElSPSIke3NiaW5kaXJ9IgotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLQkjIE1vdmUgdGhlIGxpYnJhcnkgdG8gYmFzZV9saWJkaXIKLQlpbnN0YWxsIC1kICR7RH0ke2Jhc2VfbGliZGlyfQotCWlmIFsgISAke0R9JHtsaWJkaXJ9IC1lZiAke0R9JHtiYXNlX2xpYmRpcn0gXTsgdGhlbgotCQltdiAke0R9JHtsaWJkaXJ9L2xpYmNhcCogJHtEfSR7YmFzZV9saWJkaXJ9Ci0gICAgICAgICAgICAgICAgaWYgWyAtZCAke0R9JHtsaWJkaXJ9L3NlY3VyaXR5IF07IHRoZW4KLQkJCW12ICR7RH0ke2xpYmRpcn0vc2VjdXJpdHkgJHtEfSR7YmFzZV9saWJkaXJ9Ci0JCWZpCi0JZmkKLX0KLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2Jhc2VfbGliZGlyfS8qLnNvIgotCi0jIHBhbSBmaWxlcwotRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9saWJkaXJ9L3NlY3VyaXR5Lyouc28iCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjMyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjYXAvbGliY2FwXzIuMzIuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZDc4YTU4ZgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2FwL2xpYmNhcF8yLjMyLmJiCkBAIC0wLDAgKzEsNzcgQEAKK1NVTU1BUlkgPSAiTGlicmFyeSBmb3IgZ2V0dGluZy9zZXR0aW5nIFBPU0lYLjFlIGNhcGFiaWxpdGllcyIKK0hPTUVQQUdFID0gImh0dHA6Ly9zaXRlcy5nb29nbGUuY29tL3NpdGUvZnVsbHljYXBhYmxlLyIKKworIyBubyBzcGVjaWZpYyBHUEwgdmVyc2lvbiByZXF1aXJlZAorTElDRU5TRSA9ICJCU0QgfCBHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xpY2Vuc2U7bWQ1PTNmODRmZDZmMjlkNDUzYTU2NTE0Y2I3ZTRlYWQyNWYxIgorCitERVBFTkRTID0gImhvc3RwZXJsLXJ1bnRpbWUtbmF0aXZlIGdwZXJmLW5hdGl2ZSIKKworU1JDX1VSSSA9ICIke0tFUk5FTE9SR19NSVJST1J9L2xpbnV4L2xpYnMvc2VjdXJpdHkvbGludXgtcHJpdnMvJHtCUE59Mi8ke0JQTn0tJHtQVn0udGFyLnh6IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZW5zdXJlLXRoZS1YQVRUUl9OQU1FX0NBUFMtaXMtZGVmaW5lZC13aGVuLWl0LWlzLXVzZS5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAyLXRlc3RzLWRvLW5vdC1ydW4tdGFyZ2V0LWV4ZWN1dGFibGVzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdHMtZG8tbm90LXN0YXRpY2FsbHktbGluay1hLXRlc3QucGF0Y2ggXAorICAgICAgICAgICAiCitTUkNfVVJJW21kNXN1bV0gPSAiNzQxNjExOWM5ZmRjZmQwZThkZDE5MGE0MzJjNjY4ZTkiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTAwNWUzZDIyN2YyMzQwYWQxZTMzNjBlZjhiNjlkMTVlM2M3MmEyOWMwOWY0ODk0ZDdhYWMwMzhiZDI2ZTJiZSIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vd3d3Lmtlcm5lbC5vcmcvcHViL2xpbnV4L2xpYnMvc2VjdXJpdHkvbGludXgtcHJpdnMvJHtCUE59Mi8iCisKK2luaGVyaXQgbGliX3BhY2thZ2UKKworIyBkbyBOT1QgcGFzcyB0YXJnZXQgY2ZsYWdzIHRvIGhvc3QgY29tcGlsYXRpb25zCisjCitkb19jb25maWd1cmUoKSB7CisJIyBsaWJjYXAgdXNlcyA6PSBmb3IgY29tcGlsZXJzLCBmb3J0dW5hdGVseSwgaXQgZ2l2ZXMgdXMgYSBoaW50CisJIyBvbiB3aGF0IHNob3VsZCBiZSByZXBsYWNlZCB3aXRoID89CisJc2VkIC1lICdzLDo9LD89LGcnIC1pIE1ha2UuUnVsZXMKKwlzZWQgLWUgJ3MsXkJVSUxEX0NGTEFHUyA/PSAkKC4qQ0ZMQUdTKSxCVUlMRF9DRkxBR1MgOj0gJChCVUlMRF9DRkxBR1MpLCcgLWkgTWFrZS5SdWxlcworfQorCitQQUNLQUdFQ09ORklHID8/PSAiJHtAYmIudXRpbHMuZmlsdGVyKCdESVNUUk9fRkVBVFVSRVMnLCAncGFtJywgZCl9IgorUEFDS0FHRUNPTkZJR19jbGFzcy1uYXRpdmUgPz89ICIiCisKK1BBQ0tBR0VDT05GSUdbcGFtXSA9ICJQQU1fQ0FQPXllcyxQQU1fQ0FQPW5vLGxpYnBhbSIKKworRVhUUkFfT0VNQUtFID0gIiBcCisgIElOREVOVD0gIFwKKyAgbGliPScke2Jhc2VsaWJ9JyBcCisgIFJBSVNFX1NFVEZDQVA9bm8gXAorICBEWU5BTUlDPXllcyBcCisgIEJVSUxEX0dQRVJGPXllcyBcCisiCisKK0VYVFJBX09FTUFLRV9hcHBlbmRfY2xhc3MtdGFyZ2V0ID0gIiBTWVNURU1fSEVBREVSUz0ke1NUQUdJTkdfSU5DRElSfSIKKworIyB0aGVzZSBhcmUgcHJlc2VudCBpbiB0aGUgbGliY2FwIGRlZmF1bHRzLCBzbyBpbmNsdWRlIGluIG91ciBDRkxBR1MgdG9vCitDRkxBR1MgKz0gIi1EX0xBUkdFRklMRTY0X1NPVVJDRSAtRF9GSUxFX09GRlNFVF9CSVRTPTY0IgorCitkb19jb21waWxlKCkgeworCW9lX3J1bm1ha2UgJHtQQUNLQUdFQ09ORklHX0NPTkZBUkdTfQorfQorCitkb19pbnN0YWxsKCkgeworCW9lX3J1bm1ha2UgaW5zdGFsbCBcCisJCSR7UEFDS0FHRUNPTkZJR19DT05GQVJHU30gXAorCQlERVNURElSPSIke0R9IiBcCisJCXByZWZpeD0iJHtwcmVmaXh9IiBcCisJCVNCSU5ESVI9IiR7c2JpbmRpcn0iCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworCSMgTW92ZSB0aGUgbGlicmFyeSB0byBiYXNlX2xpYmRpcgorCWluc3RhbGwgLWQgJHtEfSR7YmFzZV9saWJkaXJ9CisJaWYgWyAhICR7RH0ke2xpYmRpcn0gLWVmICR7RH0ke2Jhc2VfbGliZGlyfSBdOyB0aGVuCisJCW12ICR7RH0ke2xpYmRpcn0vbGliY2FwKiAke0R9JHtiYXNlX2xpYmRpcn0KKyAgICAgICAgICAgICAgICBpZiBbIC1kICR7RH0ke2xpYmRpcn0vc2VjdXJpdHkgXTsgdGhlbgorCQkJbXYgJHtEfSR7bGliZGlyfS9zZWN1cml0eSAke0R9JHtiYXNlX2xpYmRpcn0KKwkJZmkKKwlmaQorfQorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmFzZV9saWJkaXJ9Lyouc28iCisKKyMgcGFtIGZpbGVzCitGSUxFU18ke1BOfSArPSAiJHtiYXNlX2xpYmRpcn0vc2VjdXJpdHkvKi5zbyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJjaGVjay9saWJjaGVja18wLjEzLjAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTMuMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjI2NDE3Zi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTMuMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI5ICswLDAgQEAKLVNVTU1BUlkgID0gIkNoZWNrIC0gdW5pdCB0ZXN0aW5nIGZyYW1ld29yayBmb3IgQyBjb2RlIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9saWJjaGVjay5naXRodWIuaW8vY2hlY2svIgotU0VDVElPTiA9ICJkZXZlbCIKLQotTElDRU5TRSAgPSAiTEdQTHYyLjErIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORy5MRVNTRVI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIgotCi1TUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vY2hlY2svcmVsZWFzZXMvZG93bmxvYWQvJHtQVn0vY2hlY2stJHtQVn0udGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL25vdC1lY2hvLWNvbXBpbGVyLWluZm8tdG8tY2hlY2tfc3RkaW50LmgucGF0Y2giCi1TUkNfVVJJW21kNXN1bV0gPSAiMmM3MzBjNDBiMDg0ODJlYWViMTAxMzI1MTc5NzA1OTMiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzQzMzZiMzE0NDdhY2M3ZTMyNjY4NTRmNzNlYzE4OGNkYjE1NTU0ZDBlZGQ0NDczOTYzMWRhMTc0YTU2OTkwOSIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliY2hlY2svY2hlY2svcmVsZWFzZXMvIgotCi1TID0gIiR7V09SS0RJUn0vY2hlY2stJHtQVn0iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyB0ZXhpbmZvCi0KLUNBQ0hFRF9DT05GSUdVUkVWQVJTICs9ICJhY19jdl9wYXRoX0FXS19QQVRIPSR7YmluZGlyfS9nYXdrIgotCi1SUkVQTEFDRVNfJHtQTn0gPSAiY2hlY2sgKDw9IDAuOS41KSIKLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgotCi1QQUNLQUdFUyA9KyAiY2hlY2ttayIKLQotRklMRVNfY2hlY2ttayA9ICIke2JpbmRpcn0vY2hlY2ttayIKLQotUkRFUEVORFNfY2hlY2ttayA9ICJnYXdrIgotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTQuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliY2hlY2svbGliY2hlY2tfMC4xNC4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmE4OGYwMDkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmNoZWNrL2xpYmNoZWNrXzAuMTQuMC5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZICA9ICJDaGVjayAtIHVuaXQgdGVzdGluZyBmcmFtZXdvcmsgZm9yIEMgY29kZSIKK0hPTUVQQUdFID0gImh0dHBzOi8vbGliY2hlY2suZ2l0aHViLmlvL2NoZWNrLyIKK1NFQ1RJT04gPSAiZGV2ZWwiCisKK0xJQ0VOU0UgID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkcuTEVTU0VSO21kNT0yZDUwMjVkNGFhMzQ5NWJlZmVmOGYxNzIwNmE1YjBhMSIKKworU1JDX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vJHtCUE59L2NoZWNrL3JlbGVhc2VzL2Rvd25sb2FkLyR7UFZ9L2NoZWNrLSR7UFZ9LnRhci5neiBcCisgICAgICAgICAgIGZpbGU6Ly9ub3QtZWNoby1jb21waWxlci1pbmZvLXRvLWNoZWNrX3N0ZGludC5oLnBhdGNoIgorU1JDX1VSSVttZDVzdW1dID0gIjI3MGU4MmE0NDViZTYwMjYwNDAyNjdhNWUxMWNjOTRiIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gImJkMGYwY2ExYmU2NWI3MDIzOGIzMmY4ZTlmZTVkMzZkYzJmYmY3YTc1OWI3ZWRmMjhlNzUzMjNhN2Q3NGYzMGIiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmNoZWNrL2NoZWNrL3JlbGVhc2VzLyIKKworUyA9ICIke1dPUktESVJ9L2NoZWNrLSR7UFZ9IgorCitpbmhlcml0IGF1dG90b29scyBwa2djb25maWcgdGV4aW5mbworCitDQUNIRURfQ09ORklHVVJFVkFSUyArPSAiYWNfY3ZfcGF0aF9BV0tfUEFUSD0ke2JpbmRpcn0vZ2F3ayIKKworUlJFUExBQ0VTXyR7UE59ID0gImNoZWNrICg8PSAwLjkuNSkiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKworUEFDS0FHRVMgPSsgImNoZWNrbWsiCisKK0ZJTEVTX2NoZWNrbWsgPSAiJHtiaW5kaXJ9L2NoZWNrbWsiCisKK1JERVBFTkRTX2NoZWNrbWsgPSAiZ2F3ayIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldi9kZXRlcm1pbmlzbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXYvZGV0ZXJtaW5pc20ucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMzNhNjA3NgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXYvZGV0ZXJtaW5pc20ucGF0Y2gKQEAgLTAsMCArMSwzNCBAQAorVGhlIG9yZGVyIG9mIGRpY3QgdmFsdWVzIGlzIG5vdCBkZXRlcm1pbmlzdGljIGxlYWRpbmcgdG8gZGlmZmVyaW5nIGhlYWRlciBmaWxlIGdlbmVyYXRpb24uCitTb3J0IHRvIHJlbW92ZSB0aGlzIGluY29uc2lzdGVuY3kuCisKK1JQIDIwMjAvMi83CisKK1NpZ25lZC1vZmYtYnk6IFJpY2hhcmQgUHVyZGllIDxyaWNoYXJkLnB1cmRpZUBsaW51eGZvdW5kYXRpb24ub3JnPgorVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK0luZGV4OiBhL2xpYmV2ZGV2L21ha2UtZXZlbnQtbmFtZXMucHkKKz09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KKy0tLSBhL2xpYmV2ZGV2L21ha2UtZXZlbnQtbmFtZXMucHkKKysrKyBiL2xpYmV2ZGV2L21ha2UtZXZlbnQtbmFtZXMucHkKK0BAIC02NywxMCArNjcsMTAgQEAgZGVmIHByaW50X2JpdHMoYml0cywgcHJlZml4KToKKyAJaWYgIG5vdCBoYXNhdHRyKGJpdHMsIHByZWZpeCk6CisgCQlyZXR1cm4KKyAJcHJpbnQoInN0YXRpYyBjb25zdCBjaGFyICogY29uc3QgJXNfbWFwWyVzX01BWCArIDFdID0geyIgJSAocHJlZml4LCBwcmVmaXgudXBwZXIoKSkpCistCWZvciB2YWwsIG5hbWUgaW4gbGlzdChnZXRhdHRyKGJpdHMsIHByZWZpeCkuaXRlbXMoKSk6CisrCWZvciB2YWwsIG5hbWUgaW4gc29ydGVkKGxpc3QoZ2V0YXR0cihiaXRzLCBwcmVmaXgpLml0ZW1zKCkpKToKKyAJCXByaW50KCIJWyVzXSA9IFwiJXNcIiwiICUgKG5hbWUsIG5hbWUpKQorIAlpZiBwcmVmaXggPT0gImtleSI6CistCQlmb3IgdmFsLCBuYW1lIGluIGxpc3QoZ2V0YXR0cihiaXRzLCAiYnRuIikuaXRlbXMoKSk6CisrCQlmb3IgdmFsLCBuYW1lIGluIHNvcnRlZChsaXN0KGdldGF0dHIoYml0cywgImJ0biIpLml0ZW1zKCkpKToKKyAJCQlwcmludCgiCVslc10gPSBcIiVzXCIsIiAlIChuYW1lLCBuYW1lKSkKKyAJcHJpbnQoIn07IikKKyAJcHJpbnQoIiIpCitAQCAtMTExLDcgKzExMSw3IEBAIGRlZiBwcmludF9sb29rdXAoYml0cywgcHJlZml4KToKKyAJaWYgbm90IGhhc2F0dHIoYml0cywgcHJlZml4KToKKyAJCXJldHVybgorIAorLQluYW1lcyA9IGxpc3QoZ2V0YXR0cihiaXRzLCBwcmVmaXgpLml0ZW1zKCkpCisrCW5hbWVzID0gc29ydGVkKGxpc3QoZ2V0YXR0cihiaXRzLCBwcmVmaXgpLml0ZW1zKCkpKQorIAlpZiBwcmVmaXggPT0gImJ0biI6CisgCQluYW1lcyA9IG5hbWVzICsgYnRuX2FkZGl0aW9uYWw7CisgCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuOC4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmRldi9saWJldmRldl8xLjguMC5iYgppbmRleCA4NDI3NDk4Li4zNTIzZGMwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZGV2L2xpYmV2ZGV2XzEuOC4wLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZXZkZXYvbGliZXZkZXZfMS44LjAuYmIKQEAgLTYsOCArNiwxMSBAQAogTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NzVhYWUwZDM4ZmVlYTZmZGE5N2NhMzgxY2I5MTMyZWIgXAogICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbGliZXZkZXYvbGliZXZkZXYuaDtlbmRsaW5lPTIxO21kNT03ZmY0ZjBiNTExMzI1MmMyZjFhODI4ZTBiYmFkOThkMSIKIAotU1JDX1VSSSA9ICJodHRwOi8vd3d3LmZyZWVkZXNrdG9wLm9yZy9zb2Z0d2FyZS9saWJldmRldi8ke0JQfS50YXIueHoiCitTUkNfVVJJID0gImh0dHA6Ly93d3cuZnJlZWRlc2t0b3Aub3JnL3NvZnR3YXJlL2xpYmV2ZGV2LyR7QlB9LnRhci54eiBcCisgICAgICAgICAgIGZpbGU6Ly9kZXRlcm1pbmlzbS5wYXRjaCIKIFNSQ19VUklbbWQ1c3VtXSA9ICI4Nzk2MzEwODBiZTE4NTI2NzM3ZTMzYjYzZDg0ODAzOSIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIyMGQzY2FlNGVmZDI3N2Y0ODVhYmRmOGYyYTdjNDY1ODhlNTM5OTk4YjVhMDhjMmM0ZDM2ODIxODM3OWQ0MjExIgogCiBpbmhlcml0IGF1dG90b29scyBwa2djb25maWcKKworVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibGliZXZkZXYtKD9QPHB2ZXI+KFxkK1wuKSsoPyE5MFxkKylcZCspIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudC8wMDAxLXRlc3QtcmVncmVzc19kbnMuYy1wYXRjaC1vdXQtdGVzdHMtdGhhdC1yZXF1aXJlLWEtd28ucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50LzAwMDEtdGVzdC1yZWdyZXNzX2Rucy5jLXBhdGNoLW91dC10ZXN0cy10aGF0LXJlcXVpcmUtYS13by5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi41MDUxNTNkCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudC8wMDAxLXRlc3QtcmVncmVzc19kbnMuYy1wYXRjaC1vdXQtdGVzdHMtdGhhdC1yZXF1aXJlLWEtd28ucGF0Y2gKQEAgLTAsMCArMSwzNyBAQAorRnJvbSA3YzE3OTY3YjhmZDJkMThiNzRhODkzNGZkOWJiODIxMmViZDZhMjcxIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+CitEYXRlOiBUaHUsIDkgSmFuIDIwMjAgMTM6MjI6NDYgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gdGVzdC9yZWdyZXNzX2Rucy5jOiBwYXRjaCBvdXQgdGVzdHMgdGhhdCByZXF1aXJlIGEgd29ya2luZworIEROUworCitUaGlzIGlzIG5vdCBndWFyYW50ZWVkIGZvciBwdGVzdHMgdW5kZXIgcWVtdSwgYW5kIGluIHRoZSBhYnNlbmNlCitvZiBhIEROUyB0aGF0IGNhbiByZWFjaCB0byB0aGUgaW50ZXJuZXQsIHRoZXNlIHRlc3RzIGZhaWwuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgdGVzdC9yZWdyZXNzX2Rucy5jIHwgNCAtLS0tCisgMSBmaWxlIGNoYW5nZWQsIDQgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS90ZXN0L3JlZ3Jlc3NfZG5zLmMgYi90ZXN0L3JlZ3Jlc3NfZG5zLmMKK2luZGV4IGQyMDg0YjcuLmExYThmM2IgMTAwNjQ0CistLS0gYS90ZXN0L3JlZ3Jlc3NfZG5zLmMKKysrKyBiL3Rlc3QvcmVncmVzc19kbnMuYworQEAgLTIzOTQsOCArMjM5NCw2IEBAIHN0cnVjdCB0ZXN0Y2FzZV90IGRuc190ZXN0Y2FzZXNbXSA9IHsKKyAJeyAicmVpc3N1ZV9kaXNhYmxlX3doZW5faW5hY3RpdmUiLCBkbnNfcmVpc3N1ZV9kaXNhYmxlX3doZW5faW5hY3RpdmVfdGVzdCwKKyAJICBUVF9GT1JLfFRUX05FRURfQkFTRXxUVF9OT19MT0dTLCAmYmFzaWNfc2V0dXAsIE5VTEwgfSwKKyAJeyAiaW5mbGlnaHQiLCBkbnNfaW5mbGlnaHRfdGVzdCwgVFRfRk9SS3xUVF9ORUVEX0JBU0UsICZiYXNpY19zZXR1cCwgTlVMTCB9LAorLQl7ICJidWZmZXJldmVudF9jb25uZWN0X2hvc3RuYW1lIiwgdGVzdF9idWZmZXJldmVudF9jb25uZWN0X2hvc3RuYW1lLAorLQkgIFRUX0ZPUkt8VFRfTkVFRF9CQVNFLCAmYmFzaWNfc2V0dXAsIE5VTEwgfSwKKyAjaWZkZWYgRVZFTlRfX0hBVkVfU0VUUkxJTUlUCisgCXsgImJ1ZmZlcmV2ZW50X2Nvbm5lY3RfaG9zdG5hbWVfZW1maWxlIiwgdGVzdF9idWZmZXJldmVudF9jb25uZWN0X2hvc3RuYW1lLAorIAkgIFRUX0ZPUkt8VFRfTkVFRF9CQVNFLCAmYmFzaWNfc2V0dXAsIChjaGFyKikiZW1maWxlIiB9LAorQEAgLTI0MDUsOCArMjQwMyw2IEBAIHN0cnVjdCB0ZXN0Y2FzZV90IGRuc190ZXN0Y2FzZXNbXSA9IHsKKyAJeyAiZGlzYWJsZV93aGVuX2luYWN0aXZlX25vX25zIiwgZG5zX2Rpc2FibGVfd2hlbl9pbmFjdGl2ZV9ub19uc190ZXN0LAorIAkgIFRUX0ZPUkt8VFRfTkVFRF9CQVNFfFRUX05PX0xPR1MsICZiYXNpY19zZXR1cCwgTlVMTCB9LAorIAorLQl7ICJpbml0aWFsaXplX25hbWVzZXJ2ZXJzIiwgZG5zX2luaXRpYWxpemVfbmFtZXNlcnZlcnNfdGVzdCwKKy0JICBUVF9GT1JLfFRUX05FRURfQkFTRSwgJmJhc2ljX3NldHVwLCBOVUxMIH0sCisgI2lmbmRlZiBfV0lOMzIKKyAJeyAibmFtZXNlcnZlcnNfbm9fZGVmYXVsdCIsIGRuc19uYW1lc2VydmVyc19ub19kZWZhdWx0X3Rlc3QsCisgCSAgVFRfRk9SS3xUVF9ORUVEX0JBU0UsICZiYXNpY19zZXR1cCwgTlVMTCB9LApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJldmVudC9saWJldmVudF8yLjEuMTEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS4xMS5iYgppbmRleCA4YzdjNDllLi5mYjE4NmViIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS4xMS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmV2ZW50L2xpYmV2ZW50XzIuMS4xMS5iYgpAQCAtNiwxMSArNiwxMSBAQAogTElDRU5TRSA9ICJCU0QgJiBNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT0xN2YyMDU3NGMwYjE1NGQxMjIzNmQ1ZmJlOTY0ZjU0OSIKIAotU1JDX1VSSSA9ICIgXAotICAgIGh0dHBzOi8vZ2l0aHViLmNvbS9saWJldmVudC9saWJldmVudC9yZWxlYXNlcy9kb3dubG9hZC9yZWxlYXNlLSR7UFZ9LXN0YWJsZS8ke0JQfS1zdGFibGUudGFyLmd6IFwKLSAgICBmaWxlOi8vTWFrZWZpbGUtbWlzc2luZy10ZXN0LWRpci5wYXRjaCBcCi0gICAgZmlsZTovL3J1bi1wdGVzdCBcCi0iCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJldmVudC9saWJldmVudC9yZWxlYXNlcy9kb3dubG9hZC9yZWxlYXNlLSR7UFZ9LXN0YWJsZS8ke0JQfS1zdGFibGUudGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlLW1pc3NpbmctdGVzdC1kaXIucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtdGVzdC1yZWdyZXNzX2Rucy5jLXBhdGNoLW91dC10ZXN0cy10aGF0LXJlcXVpcmUtYS13by5wYXRjaCBcCisgICAgICAgICAgICIKIAogU1JDX1VSSVttZDVzdW1dID0gIjdmMzVjZmU2OWI4MmQ4NzkxMTFlYzBkN2I3YjFjNTMxIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gImE2NWJhYzYyMDJlYThjNTYwOWZkNWM3ZTQ4MGU2ZDI1ZGU0NjdlYTE5MTdjMDgyOTBjNTIxNzUyZjE0NzI4M2QiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1BZGRyZXNzLXBsYXRmb3Jtcy13aXRoLW5vLV9faW50MTI4LXBhcnQyLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtQWRkcmVzcy1wbGF0Zm9ybXMtd2l0aC1uby1fX2ludDEyOC1wYXJ0Mi5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi42YjViN2Q0Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtQWRkcmVzcy1wbGF0Zm9ybXMtd2l0aC1uby1fX2ludDEyOC1wYXJ0Mi5wYXRjaApAQCAtMCwwICsxLDM0IEBACitBZGRyZXNzIHBsYXRmb3JtcyB3aXRoIG5vIF9faW50MTI4LgorCitGaXhlcyByZW1haW5pbmcgcGllY2VzIGZyb20KK2h0dHBzOi8vZ2l0aHViLmNvbS9saWJmZmkvbGliZmZpL2NvbW1pdC82NjYzMDQ3ZjU2YzI5MzJhNmIxMGE3OTBmNGFjNjY2NmRkMTgxMzI2CisKK1Vwc3RyZWFtLVN0YXR1czogUGVuZGluZworU2lnbmVkLW9mZi1ieTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KKworLS0tIGEvc3JjL3Bvd2VycGMvZmZpX2xpbnV4NjQuYy5vcmcJMjAxOS0xMi0wNSAxNDo0ODozMy4xNDA1Nzk0MzEgLTA4MDAKKysrKyBhL3NyYy9wb3dlcnBjL2ZmaV9saW51eDY0LmMJMjAxOS0xMi0wNSAxNDo1Mzo1OC44MjcyNDQ0OTUgLTA4MDAKK0BAIC02ODAsOSArNjgwLDkgQEAgZmZpX3ByZXBfYXJnczY0IChleHRlbmRlZF9jaWYgKmVjaWYsIHVucworICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICBpZiAodmVjYXJnX2NvdW50IDwgTlVNX1ZFQ19BUkdfUkVHSVNURVJTNjQKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIGkgPCBuZml4ZWRhcmdzKQorLSAgICAgICAgICAgICAgICAgICAgICAgICp2ZWNfYmFzZS5mMTI4KysgPSAqYXJnLmYxMjgrKzsKKysJCSAgICAgICAgbWVtY3B5ICh2ZWNfYmFzZS5mMTI4KyssIGFyZy5mMTI4LCBzaXplb2YgKGZsb2F0MTI4KSk7CisgICAgICAgICAgICAgICAgICAgICAgIGVsc2UKKy0gICAgICAgICAgICAgICAgICAgICAgICAqbmV4dF9hcmcuZjEyOCA9ICphcmcuZjEyOCsrOworKwkJICAgICAgICBtZW1jcHkgKG5leHRfYXJnLmYxMjgsIGFyZy5mMTI4KyssIHNpemVvZiAoZmxvYXQxMjgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgaWYgKCsrbmV4dF9hcmcuZjEyOCA9PSBncHJfZW5kLmYxMjgpCisgICAgICAgICAgICAgICAgICAgICAgICAgbmV4dF9hcmcuZjEyOCA9IHJlc3QuZjEyODsKKyAgICAgICAgICAgICAgICAgICAgICAgdmVjYXJnX2NvdW50Kys7CitAQCAtOTg2LDkgKzk4Niw5IEBAIGZmaV9jbG9zdXJlX2hlbHBlcl9MSU5VWDY0IChmZmlfY2lmICpjaWYKKyAgICAgICAgICAgICAgICAgICBkbworICAgICAgICAgICAgICAgICAgICAgeworICAgICAgICAgICAgICAgICAgICAgICBpZiAocHZlYyA8IGVuZF9wdmVjICYmIGkgPCBuZml4ZWRhcmdzKQorLSAgICAgICAgICAgICAgICAgICAgICAgICp0by5mMTI4ID0gKnB2ZWMrKzsKKysJCSAgICAgICAgbWVtY3B5ICh0by5mMTI4LCBwdmVjKyssIHNpemVvZiAoZmxvYXQxMjgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgZWxzZQorLSAgICAgICAgICAgICAgICAgICAgICAgICp0by5mMTI4ID0gKmZyb20uZjEyODsKKysJCSAgICAgICAgbWVtY3B5ICh0by5mMTI4LCBmcm9tLmYxMjgsIHNpemVvZiAoZmxvYXQxMjgpKTsKKyAgICAgICAgICAgICAgICAgICAgICAgdG8uZjEyOCsrOworICAgICAgICAgICAgICAgICAgICAgICBmcm9tLmYxMjgrKzsKKyAgICAgICAgICAgICAgICAgICAgIH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLUFkZHJlc3MtcGxhdGZvcm1zLXdpdGgtbm8tX19pbnQxMjgucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1BZGRyZXNzLXBsYXRmb3Jtcy13aXRoLW5vLV9faW50MTI4LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJlMzJhNTAKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1BZGRyZXNzLXBsYXRmb3Jtcy13aXRoLW5vLV9faW50MTI4LnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK0Zyb20gNjhmNDViOTA0OWRmZmI1NGY1YTI5YTNhNDk1YWIzZGZjZjAxMDYzNCBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEFudGhvbnkgR3JlZW4gPGdyZWVuQG1veGllbG9naWMuY29tPgorRGF0ZTogRnJpLCAyOSBOb3YgMjAxOSAwNzowMDozNSAtMDUwMAorU3ViamVjdDogW1BBVENIXSBBZGRyZXNzIHBsYXRmb3JtcyB3aXRoIG5vIF9faW50MTI4LgorCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGliZmZpL2xpYmZmaS9jb21taXQvNjY2MzA0N2Y1NmMyOTMyYTZiMTBhNzkwZjRhYzY2NjZkZDE4MTMyNl0KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgc3JjL3Bvd2VycGMvZmZpX2xpbnV4NjQuYyB8IDQgKystLQorIDEgZmlsZSBjaGFuZ2VkLCAyIGluc2VydGlvbnMoKyksIDIgZGVsZXRpb25zKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcG93ZXJwYy9mZmlfbGludXg2NC5jIGIvc3JjL3Bvd2VycGMvZmZpX2xpbnV4NjQuYworaW5kZXggZGUwZDAzMy4uNzM2NDc3MCAxMDA2NDQKKy0tLSBhL3NyYy9wb3dlcnBjL2ZmaV9saW51eDY0LmMKKysrKyBiL3NyYy9wb3dlcnBjL2ZmaV9saW51eDY0LmMKK0BAIC01NDcsOSArNTQ3LDkgQEAgZmZpX3ByZXBfYXJnczY0IChleHRlbmRlZF9jaWYgKmVjaWYsIHVuc2lnbmVkIGxvbmcgKmNvbnN0IHN0YWNrKQorICAgICAgICAgICAgICAgaWYgKG5leHRfYXJnLnVsID09IGdwcl9lbmQudWwpCisgICAgICAgICAgICAgICAgIG5leHRfYXJnLnVsID0gcmVzdC51bDsKKyAgICAgICAgICAgICAgIGlmICh2ZWNhcmdfY291bnQgPCBOVU1fVkVDX0FSR19SRUdJU1RFUlM2NCAmJiBpIDwgbmZpeGVkYXJncykKKy0gICAgICAgICAgICAgICAgKnZlY19iYXNlLmYxMjgrKyA9ICoqcF9hcmd2LmYxMjg7CisrCQltZW1jcHkgKHZlY19iYXNlLmYxMjgrKywgKnBfYXJndi5mMTI4LCBzaXplb2YgKGZsb2F0MTI4KSk7CisgICAgICAgICAgICAgICBlbHNlCistICAgICAgICAgICAgICAgICpuZXh0X2FyZy5mMTI4ID0gKipwX2FyZ3YuZjEyODsKKysJCW1lbWNweSAobmV4dF9hcmcuZjEyOCwgKnBfYXJndi5mMTI4LCBzaXplb2YgKGZsb2F0MTI4KSk7CisgICAgICAgICAgICAgICBpZiAoKytuZXh0X2FyZy5mMTI4ID09IGdwcl9lbmQuZjEyOCkKKyAgICAgICAgICAgICAgICAgbmV4dF9hcmcuZjEyOCA9IHJlc3QuZjEyODsKKyAgICAgICAgICAgICAgIHZlY2FyZ19jb3VudCsrOwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpLzAwMDEtRml4ZWQtbWlzc2VkLWlmbmRlZi1mb3ItX19taXBzX3NvZnRfZmxvYXQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1GaXhlZC1taXNzZWQtaWZuZGVmLWZvci1fX21pcHNfc29mdF9mbG9hdC5wYXRjaAppbmRleCAwMGEzMGEzLi4zOTcxOTRiIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1GaXhlZC1taXNzZWQtaWZuZGVmLWZvci1fX21pcHNfc29mdF9mbG9hdC5wYXRjaAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1GaXhlZC1taXNzZWQtaWZuZGVmLWZvci1fX21pcHNfc29mdF9mbG9hdC5wYXRjaApAQCAtMSwxMiArMSwxMSBAQAotRnJvbSA0MTQ5YTc2MjdhOTk4NzMxY2MyNDZkM2Y1OGEzNjgwODc0NWQwNGM4IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQorRnJvbSAxNGUyZTc0NjgyZGIzYmZjZjA1NzY4OGY3MzhmZGQ4NDJhMDJmZjJkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQogRnJvbTogQ2FybCBIdXJkIDxjYXJsQENhcmxzLU1hY0Jvb2stUHJvLmxvY2FsPgogRGF0ZTogV2VkLCAxOCBKdWwgMjAxOCAwOTowNDozMiAtMDQwMAogU3ViamVjdDogW1BBVENIXSBGaXhlZCBtaXNzZWQgI2lmbmRlZiBmb3IgX19taXBzX3NvZnRfZmxvYXQKIAogU2lnbmVkLW9mZi1ieTogUGV0ZXIgS2plbGxlcnN0ZWR0IDxwZXRlci5ramVsbGVyc3RlZHRAYXhpcy5jb20+Ci0tLS0KIFVwc3RyZWFtLVN0YXR1czogU3VibWl0dGVkIFtodHRwczovL2dpdGh1Yi5jb20vbGliZmZpL2xpYmZmaS9wdWxsLzQ0Ml0KLQorLS0tCiAgc3JjL21pcHMvbzMyLlMgfCAyICsrCiAgMSBmaWxlIGNoYW5nZWQsIDIgaW5zZXJ0aW9ucygrKQogCkBAIC0yNiw2ICsyNSwzIEBACiAgMToKICAJIyBwcmVwYXJlIGFyZ3VtZW50cyBmb3IgZmZpX2Nsb3N1cmVfbWlwc19pbm5lcl9PMzIKICAJUkVHX0wJYTAsIDQoJDE1KQkgIyBjaWYgCi0tLSAKLTIuMjEuMAotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1mZmlfcG93ZXJwYy5oLWZpeC1idWlsZC1mYWlsdXJlLXdpdGgtcG93ZXJwYzcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1mZmlfcG93ZXJwYy5oLWZpeC1idWlsZC1mYWlsdXJlLXdpdGgtcG93ZXJwYzcucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNTJlNmU0NQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLWZmaV9wb3dlcnBjLmgtZml4LWJ1aWxkLWZhaWx1cmUtd2l0aC1wb3dlcnBjNy5wYXRjaApAQCAtMCwwICsxLDYyIEBACitGcm9tIGRlOTNhZGZiNmY0ODEwMDk0NmJiYTJjM2FiYWQyYTc3YTBjZmRlMGIgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBGYWJyaWNlIEZvbnRhaW5lIDxmb250YWluZS5mYWJyaWNlQGdtYWlsLmNvbT4KK0RhdGU6IFN1biwgMjQgTm92IDIwMTkgMDk6NTI6MDEgKzAxMDAKK1N1YmplY3Q6IFtQQVRDSF0gZmZpX3Bvd2VycGMuaDogZml4IGJ1aWxkIGZhaWx1cmUgd2l0aCBwb3dlcnBjNworCitUaGlzIGlzIGEgcGF0Y2ggcHVsbGVkIGRvd24gZnJvbSB0aGUgZm9sbG93aW5nOgoraHR0cHM6Ly9naXRodWIuY29tL2J1aWxkcm9vdC9idWlsZHJvb3QvYmxvYi83ODkyNmY2MTBiMTQxMWIwMzQ2NDE1MjQ3MmZkNDMwMDEyZGViOWFjL3BhY2thZ2UvbGliZmZpLzAwMDQtZmZpX3Bvd2VycGMuaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLXBvd2VycGM3LnBhdGNoCisKK1RoaXMgaXNzdWUgaXMgYmVpbmcgaGl0IG9uIE9wZW5CTUMgY29kZSB3aGVuIHB1bGxpbmcgdGhlIGxhdGVzdAorbGliZmZpIHRhZyBhbmQgYnVpbGRpbmcgb24gYSBQOCBwcGM2NGxlIG1hY2hpbmUuIEkgdmVyaWZpZWQgdGhpcworcGF0Y2ggZml4ZXMgdGhlIGlzc3VlIHdlIGFyZSBzZWVpbmcuCisKK0JlbG93IGlzIHRoZSBvcmlnaW5hbCBjb21taXQgbWVzc2FnZToKKworU2ljbmUgY29tbWl0IDczZGQ0M2FmYzhhNDQ3YmE5OGVhMDJlOWFhZDRjNjg5OGRjNzdmYjAsIGJ1aWxkIG9uIHBvd2VycGM3CitmYWlscyBvbjoKKworSW4gZmlsZSBpbmNsdWRlZCBmcm9tIC4uL3NyYy9wb3dlcnBjL2ZmaS5jOjMzOjA6CisuLi9zcmMvcG93ZXJwYy9mZmlfcG93ZXJwYy5oOjYxOjk6IGVycm9yOiAnX0Zsb2F0MTI4JyBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0CisgdHlwZWRlZiBfRmxvYXQxMjggZmxvYXQxMjg7CisgICAgICAgICBefn5+fn5+fn4KKworRml4IHRoaXMgYnVpbGQgZmFpbHVyZSBieSBjaGVja2luZyBmb3IgX19IQVZFX0ZMT0FUMTI4IGJlZm9yZSB1c2luZworX0Zsb2F0MTI4LCBhcyBfRmxvYXQxMjggaXMgZW5hYmxlZCBvbmx5IG9uIHNwZWNpZmljIGNvbmRpdGlvbnMsIHNlZQorb3V0cHV0L2hvc3QvcG93ZXJwYzY0LWJ1aWxkcm9vdC1saW51eC1nbnUvc3lzcm9vdC91c3IvaW5jbHVkZS9iaXRzL2Zsb2F0bi5oOgorCisgLyogRGVmaW5lZCB0byAxIGlmIHRoZSBjdXJyZW50IGNvbXBpbGVyIGludm9jYXRpb24gcHJvdmlkZXMgYQorICAgIGZsb2F0aW5nLXBvaW50IHR5cGUgd2l0aCB0aGUgSUVFRSA3NTQgYmluYXJ5MTI4IGZvcm1hdCwgYW5kIHRoaXMgZ2xpYmMKKyAgICBpbmNsdWRlcyBjb3JyZXNwb25kaW5nICpmMTI4IGludGVyZmFjZXMgZm9yIGl0LiAgKi8KKyAjaWYgZGVmaW5lZCBfQVJDSF9QV1I4ICYmIGRlZmluZWQgX19MSVRUTEVfRU5ESUFOX18gJiYgKF9DQUxMX0VMRiA9PSAyKSBcCisgICAgICYmIGRlZmluZWQgX19GTE9BVDEyOF9fICYmICFkZWZpbmVkIF9fTk9fTE9OR19ET1VCTEVfTUFUSAorICMgZGVmaW5lIF9fSEFWRV9GTE9BVDEyOCAxCisgI2Vsc2UKKyAjIGRlZmluZSBfX0hBVkVfRkxPQVQxMjggMAorICNlbmRpZgorCitGaXhlczoKKyAtIGh0dHA6Ly9hdXRvYnVpbGQuYnVpbGRyb290Lm9yZy9yZXN1bHRzLzVjOWRkOGZiM2I2YTEyODg4MmI2MjUwZjE5N2M4MDIzMmQ4YTNiNTMKKworVXBzdHJlYW0tU3RhdHVzOiBTdWJtaXR0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9saWJmZmkvbGliZmZpL3B1bGwvNTYxXQorU2lnbmVkLW9mZi1ieTogRmFicmljZSBGb250YWluZSA8Zm9udGFpbmUuZmFicmljZUBnbWFpbC5jb20+CitTaWduZWQtb2ZmLWJ5OiBBbmRyZXcgR2Vpc3NsZXIgPGdlaXNzb25hdG9yQHlhaG9vLmNvbT4KKy0tLQorIHNyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcG93ZXJwYy9mZmlfcG93ZXJwYy5oIGIvc3JjL3Bvd2VycGMvZmZpX3Bvd2VycGMuaAoraW5kZXggOGUyZjJmMC4uOTYwYTVjNCAxMDA2NDQKKy0tLSBhL3NyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmgKKysrKyBiL3NyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmgKK0BAIC01Nyw3ICs1Nyw3IEBAIHR5cGVkZWYgdW5pb24KKyAgIGRvdWJsZSBkOworIH0gZmZpX2RibGZsOworCistI2lmIGRlZmluZWQoX19GTE9BVDEyOF9UWVBFX18pCisrI2lmIGRlZmluZWQoX19GTE9BVDEyOF9UWVBFX18pICYmIGRlZmluZWQoX19IQVZFX0ZMT0FUMTI4KQorIHR5cGVkZWYgX0Zsb2F0MTI4IGZsb2F0MTI4OworICNlbGlmIGRlZmluZWQoX19GTE9BVDEyOF9fKQorIHR5cGVkZWYgX19mbG9hdDEyOCBmbG9hdDEyODsKKy0tCisyLjIxLjAgKEFwcGxlIEdpdC0xMjIpCisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS8wMDAxLXBvd2VycGMtZml4LWJ1aWxkLWZhaWx1cmUtb24tcG93ZXI3LWFuZC1vbGRlci01MzIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1wb3dlcnBjLWZpeC1idWlsZC1mYWlsdXJlLW9uLXBvd2VyNy1hbmQtb2xkZXItNTMyLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjhhN2FlYTQKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvMDAwMS1wb3dlcnBjLWZpeC1idWlsZC1mYWlsdXJlLW9uLXBvd2VyNy1hbmQtb2xkZXItNTMyLnBhdGNoCkBAIC0wLDAgKzEsMzggQEAKK0Zyb20gNGRjNmNjOTYxMzAwYjlkZWZmYjY0OGIxMjM3MzkwYTViZWExYzZkNiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFNlcmdlaSBUcm9maW1vdmljaCA8c2x5Zm94QGdlbnRvby5vcmc+CitEYXRlOiBUaHUsIDI4IE5vdiAyMDE5IDEyOjQyOjQxICswMDAwCitTdWJqZWN0OiBbUEFUQ0hdIHBvd2VycGM6IGZpeCBidWlsZCBmYWlsdXJlIG9uIHBvd2VyNyBhbmQgb2xkZXIgKCM1MzIpCisKK0J1aWxkIGZhaWx1cmUgbG9va3MgYXM6CitgYGAKK2xpYnRvb2w6IGNvbXBpbGU6ICBwb3dlcnBjLXVua25vd24tbGludXgtZ251LWdjYyBcCisgICAgLU8yIC1tY3B1PXBvd2VycGMgLW10dW5lPXBvd2VycGMgLXBpcGUgLi4uIC1jIHNyYy9wb3dlcnBjL2ZmaS5jIC4uLgorSW4gZmlsZSBpbmNsdWRlZCBmcm9tIHNyYy9wb3dlcnBjL2ZmaS5jOjMzOgorc3JjL3Bvd2VycGMvZmZpX3Bvd2VycGMuaDo2NTo5OiBlcnJvcjogJ19faW50MTI4JyBpcyBub3Qgc3VwcG9ydGVkIG9uIHRoaXMgdGFyZ2V0CisgICA2NSB8IHR5cGVkZWYgX19pbnQxMjggZmxvYXQxMjg7CisgICAgICB8ICAgICAgICAgXn5+fn5+fn4KK2BgYAorCitUaGUgZml4IGF2b2lkcyB1c2luZyBfX2ludDEyOCBpbiBmYXZvdXIgb2YgYWxpZ25lZCBjaGFyWzE2XS4KKworQ2xvc2VzOiBodHRwczovL2dpdGh1Yi5jb20vbGliZmZpL2xpYmZmaS9pc3N1ZXMvNTMxCitVcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGh1Yi5jb20vbGliZmZpL2xpYmZmaS9jb21taXQvMDFhNzVlZDc2ZWE3ZTU3ZjFiN2E1YzE4M2UyYjFlODkwZTZhYTBmZF0KK1NpZ25lZC1vZmYtYnk6IFNlcmdlaSBUcm9maW1vdmljaCA8c2x5Zm94QGdlbnRvby5vcmc+CitTaWduZWQtb2ZmLWJ5OiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KKy0tLQorIHNyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmggfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9zcmMvcG93ZXJwYy9mZmlfcG93ZXJwYy5oIGIvc3JjL3Bvd2VycGMvZmZpX3Bvd2VycGMuaAoraW5kZXggNWVlMmE3MC4uOGUyZjJmMCAxMDA2NDQKKy0tLSBhL3NyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmgKKysrKyBiL3NyYy9wb3dlcnBjL2ZmaV9wb3dlcnBjLmgKK0BAIC02Miw3ICs2Miw3IEBAIHR5cGVkZWYgX0Zsb2F0MTI4IGZsb2F0MTI4OworICNlbGlmIGRlZmluZWQoX19GTE9BVDEyOF9fKQorIHR5cGVkZWYgX19mbG9hdDEyOCBmbG9hdDEyODsKKyAjZWxzZQorLXR5cGVkZWYgX19pbnQxMjggZmxvYXQxMjg7CisrdHlwZWRlZiBjaGFyIGZsb2F0MTI4WzE2XSBfX2F0dHJpYnV0ZV9fKChhbGlnbmVkKDE2KSkpOworICNlbmRpZgorIAorIHZvaWQgRkZJX0hJRERFTiBmZmlfY2xvc3VyZV9TWVNWICh2b2lkKTsKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS9ub3Qtd2luMzIucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmkvbm90LXdpbjMyLnBhdGNoCmluZGV4IDg2YTdmYzkuLjYyZGFhZjQgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZmZpL2xpYmZmaS9ub3Qtd2luMzIucGF0Y2gKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpL25vdC13aW4zMi5wYXRjaApAQCAtMSwzICsxLDggQEAKK0Zyb20gMzA2NzE5MzY5YTBkMzYwOGI0ZmYyNzM3ZGU3NGFlMjg0Nzg4YTE0YiBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IFJvc3MgQnVydG9uIDxyb3NzLmJ1cnRvbkBpbnRlbC5jb20+CitEYXRlOiBUaHUsIDQgRmViIDIwMTYgMTY6MjI6NTAgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gbGliZmZpOiBlbnN1cmUgc3lzcm9vdCBwYXRocyBhcmUgbm90IGluIGxpYmZmaS5wYworCiBsaWJmZmkncyBjb25maWd1cmUgYXNzdW1lcyB0aGF0IGNyb3NzLWNvbXBpbGVkIGJ1aWxkcyBhcmUgY29tcGxpY2F0ZWQgYW5kCiBpbnRyb2R1Y2VzIGNvbnZvbHV0ZWQgcGF0aCBtYW5pcHVsYXRpb24gaW52b2x2aW5nIGdjYyBzZWFyY2ggcGF0aHMgdG8gdGhlCiBpbnN0YWxsIHBhdGhzLCByZXN1bHRpbmcgaW4gcGF0aHMgbGlrZSAtTC91c3IvbGliLy4uL2xpYi8gYXBwZWFyaW5nIGluCkBAIC0xMSw5ICsxNiwxNSBAQAogVXBzdHJlYW0tU3RhdHVzOiBJbmFwcHJvcHJpYXRlCiBTaWduZWQtb2ZmLWJ5OiBSb3NzIEJ1cnRvbiA8cm9zcy5idXJ0b25AaW50ZWwuY29tPgogCistLS0KKyBjb25maWd1cmUuYWMgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9jb25maWd1cmUuYWMgYi9jb25maWd1cmUuYWMKK2luZGV4IGI3NjQzNjguLmQ1MWNlOTEgMTAwNjQ0CiAtLS0gYS9jb25maWd1cmUuYWMKICsrKyBiL2NvbmZpZ3VyZS5hYwotQEAgLTM1MCw3ICszNTAsNyBAQCBBQ19BUkdfRU5BQkxFKG11bHRpLW9zLWRpcmVjdG9yeSwKK0BAIC0zNTQsNyArMzU0LDcgQEAgQUNfQVJHX0VOQUJMRShtdWx0aS1vcy1kaXJlY3RvcnksCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAKICAjIFRoZXNlIHZhcmlhYmxlcyBhcmUgb25seSBldmVyIHVzZWQgd2hlbiB3ZSBjcm9zcy1idWlsZCB0byBYODZfV0lOMzIuCiAgIyBBbmQgd2Ugb25seSBzdXBwb3J0IHRoaXMgd2l0aCBHQ0MsIHNvLi4uCkBAIC0yMSw0ICszMiw0IEBACiAraWYgZmFsc2U7IHRoZW4KICAgIGlmIHRlc3QgLW4gIiR3aXRoX2Nyb3NzX2hvc3QiICYmCiAgICAgICB0ZXN0IHgiJHdpdGhfY3Jvc3NfaG9zdCIgIT0geCJubyI7IHRoZW4KLSAgICAgdG9vbGV4ZWNkaXI9IiR7ZXhlY19wcmVmaXh9Ii8nJCh0YXJnZXRfYWxpYXMpJworICAgICB0b29sZXhlY2Rpcj0nJHtleGVjX3ByZWZpeH0nLyckKHRhcmdldF9hbGlhcyknCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4zLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpXzMuMy5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5lNWJlYjk4Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpXzMuMy5iYgpAQCAtMCwwICsxLDQxIEBACitTVU1NQVJZID0gIkEgcG9ydGFibGUgZm9yZWlnbiBmdW5jdGlvbiBpbnRlcmZhY2UgbGlicmFyeSIKK0hPTUVQQUdFID0gImh0dHA6Ly9zb3VyY2V3YXJlLm9yZy9saWJmZmkvIgorREVTQ1JJUFRJT04gPSAiVGhlIGBsaWJmZmknIGxpYnJhcnkgcHJvdmlkZXMgYSBwb3J0YWJsZSwgaGlnaCBsZXZlbCBwcm9ncmFtbWluZyBpbnRlcmZhY2UgdG8gdmFyaW91cyBjYWxsaW5nIFwKK2NvbnZlbnRpb25zLiAgVGhpcyBhbGxvd3MgYSBwcm9ncmFtbWVyIHRvIGNhbGwgYW55IGZ1bmN0aW9uIHNwZWNpZmllZCBieSBhIGNhbGwgaW50ZXJmYWNlIGRlc2NyaXB0aW9uIGF0IHJ1biBcCit0aW1lLiBGRkkgc3RhbmRzIGZvciBGb3JlaWduIEZ1bmN0aW9uIEludGVyZmFjZS4gIEEgZm9yZWlnbiBmdW5jdGlvbiBpbnRlcmZhY2UgaXMgdGhlIHBvcHVsYXIgbmFtZSBmb3IgdGhlIFwKK2ludGVyZmFjZSB0aGF0IGFsbG93cyBjb2RlIHdyaXR0ZW4gaW4gb25lIGxhbmd1YWdlIHRvIGNhbGwgY29kZSB3cml0dGVuIGluIGFub3RoZXIgbGFuZ3VhZ2UuICBUaGUgYGxpYmZmaScgXAorbGlicmFyeSByZWFsbHkgb25seSBwcm92aWRlcyB0aGUgbG93ZXN0LCBtYWNoaW5lIGRlcGVuZGVudCBsYXllciBvZiBhIGZ1bGx5IGZlYXR1cmVkIGZvcmVpZ24gZnVuY3Rpb24gaW50ZXJmYWNlLiAgXAorQSBsYXllciBtdXN0IGV4aXN0IGFib3ZlIGBsaWJmZmknIHRoYXQgaGFuZGxlcyB0eXBlIGNvbnZlcnNpb25zIGZvciB2YWx1ZXMgcGFzc2VkIGJldHdlZW4gdGhlIHR3byBsYW5ndWFnZXMuIgorCitMSUNFTlNFID0gIk1JVCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PTQ5MjM4NWZlMjIxOTU5NTJmNWI5YjE5Nzg2OGJhMjY4IgorCitTUkNfVVJJID0gImh0dHBzOi8vZ2l0aHViLmNvbS9saWJmZmkvbGliZmZpL3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQTn0tJHtQVn0udGFyLmd6IFwKKyAgICAgICAgICAgZmlsZTovL25vdC13aW4zMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeGVkLW1pc3NlZC1pZm5kZWYtZm9yLV9fbWlwc19zb2Z0X2Zsb2F0LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtcG93ZXJwYy1maXgtYnVpbGQtZmFpbHVyZS1vbi1wb3dlcjctYW5kLW9sZGVyLTUzMi5wYXRjaCBcCisgICAgICAgICAgIGZpbGU6Ly8wMDAxLUFkZHJlc3MtcGxhdGZvcm1zLXdpdGgtbm8tX19pbnQxMjgucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1BZGRyZXNzLXBsYXRmb3Jtcy13aXRoLW5vLV9faW50MTI4LXBhcnQyLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtZmZpX3Bvd2VycGMuaC1maXgtYnVpbGQtZmFpbHVyZS13aXRoLXBvd2VycGM3LnBhdGNoIFwKKyAgICAgICAgICAgIgorU1JDX1VSSVttZDVzdW1dID0gIjYzMTMyODllMzJmMWQzOGE5ZGY0NzcwYjAxNGEyY2E3IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjcyZmJhNzkyMjcwM2RkZmE3YTAyOGQ1MTNhYzE1YTg1YzhkNTRjOGQ2N2Y1NWZhNWE0ODAyODg1ZGM2NTIwNTYiCitVUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZmaS9saWJmZmkvcmVsZWFzZXMvIgorVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibGliZmZpLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgorCitFWFRSQV9PRUNPTkYgKz0gIi0tZGlzYWJsZS1idWlsZGRpciIKK0VYVFJBX09FTUFLRV9jbGFzcy10YXJnZXQgPSAiTElCVE9PTEZMQUdTPSctLXRhZz1DQyciCitpbmhlcml0IGF1dG90b29scyB0ZXhpbmZvIG11bHRpbGliX2hlYWRlcgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlvZV9tdWx0aWxpYl9oZWFkZXIgZmZpLmgKK30KKworRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0vbGliZmZpLSR7UFZ9IgorCisjIERvZXNuJ3QgY29tcGlsZSBpbiBNSVBTMTZlIG1vZGUgZHVlIHRvIHVzZSBvZiBoYW5kLXdyaXR0ZW4KKyMgYXNzZW1ibHkKK01JUFNfSU5TVFJVQ1RJT05fU0VUID0gIm1pcHMiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmZmkvbGliZmZpXzMuM35yYzAuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4zfnJjMC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGFjYjY5OS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZmaS9saWJmZmlfMy4zfnJjMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQwICswLDAgQEAKLVNVTU1BUlkgPSAiQSBwb3J0YWJsZSBmb3JlaWduIGZ1bmN0aW9uIGludGVyZmFjZSBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL3NvdXJjZXdhcmUub3JnL2xpYmZmaS8iCi1ERVNDUklQVElPTiA9ICJUaGUgYGxpYmZmaScgbGlicmFyeSBwcm92aWRlcyBhIHBvcnRhYmxlLCBoaWdoIGxldmVsIHByb2dyYW1taW5nIGludGVyZmFjZSB0byB2YXJpb3VzIGNhbGxpbmcgXAotY29udmVudGlvbnMuICBUaGlzIGFsbG93cyBhIHByb2dyYW1tZXIgdG8gY2FsbCBhbnkgZnVuY3Rpb24gc3BlY2lmaWVkIGJ5IGEgY2FsbCBpbnRlcmZhY2UgZGVzY3JpcHRpb24gYXQgcnVuIFwKLXRpbWUuIEZGSSBzdGFuZHMgZm9yIEZvcmVpZ24gRnVuY3Rpb24gSW50ZXJmYWNlLiAgQSBmb3JlaWduIGZ1bmN0aW9uIGludGVyZmFjZSBpcyB0aGUgcG9wdWxhciBuYW1lIGZvciB0aGUgXAotaW50ZXJmYWNlIHRoYXQgYWxsb3dzIGNvZGUgd3JpdHRlbiBpbiBvbmUgbGFuZ3VhZ2UgdG8gY2FsbCBjb2RlIHdyaXR0ZW4gaW4gYW5vdGhlciBsYW5ndWFnZS4gIFRoZSBgbGliZmZpJyBcCi1saWJyYXJ5IHJlYWxseSBvbmx5IHByb3ZpZGVzIHRoZSBsb3dlc3QsIG1hY2hpbmUgZGVwZW5kZW50IGxheWVyIG9mIGEgZnVsbHkgZmVhdHVyZWQgZm9yZWlnbiBmdW5jdGlvbiBpbnRlcmZhY2UuICBcCi1BIGxheWVyIG11c3QgZXhpc3QgYWJvdmUgYGxpYmZmaScgdGhhdCBoYW5kbGVzIHR5cGUgY29udmVyc2lvbnMgZm9yIHZhbHVlcyBwYXNzZWQgYmV0d2VlbiB0aGUgdHdvIGxhbmd1YWdlcy4iCi0KLUxJQ0VOU0UgPSAiTUlUIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MzYxMGJiMTc2ODNhMDA4OWVkNjQwNTU0MTZiMmFlMWIiCi0KLVNSQ19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZmaS9saWJmZmkvcmVsZWFzZXMvZG93bmxvYWQvdjMuMy1yYzAvbGliZmZpLTMuMy1yYzAudGFyLmd6IFwKLSAgICAgICAgICAgZmlsZTovL25vdC13aW4zMi5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLUZpeGVkLW1pc3NlZC1pZm5kZWYtZm9yLV9fbWlwc19zb2Z0X2Zsb2F0LnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjhkMmE4MmE3OGZhZjEwYTVlNTNjMjdkOTg2ZThmMDRlIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwM2Q2N2FhYmYxYzA1MTU3ODU1ZWEyYjFkOTk1MDI2M2ZiNjMxNjUzNmM4YzMzM2Y1YjlhYjFlYjJmMjBlY2YiCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9naXRodWIuY29tL2xpYmZmaS9saWJmZmkvcmVsZWFzZXMvIgotVVBTVFJFQU1fQ0hFQ0tfUkVHRVggPSAibGliZmZpLSg/UDxwdmVyPlxkKyhcLlxkKykrKVwudGFyIgotVVBTVFJFQU1fVkVSU0lPTl9VTktOT1dOID0gIjEiCi0KLUVYVFJBX09FQ09ORiArPSAiLS1kaXNhYmxlLWJ1aWxkZGlyIgotRVhUUkFfT0VNQUtFX2NsYXNzLXRhcmdldCA9ICJMSUJUT09MRkxBR1M9Jy0tdGFnPUNDJyIKLWluaGVyaXQgYXV0b3Rvb2xzIHRleGluZm8gbXVsdGlsaWJfaGVhZGVyCi0KLVMgPSAiJHtXT1JLRElSfS8ke0JQTn0tMy4zLXJjMCIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0Jb2VfbXVsdGlsaWJfaGVhZGVyIGZmaS5oCi19Ci0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtsaWJkaXJ9L2xpYmZmaS0ke1BWfSIKLQotIyBEb2Vzbid0IGNvbXBpbGUgaW4gTUlQUzE2ZSBtb2RlIGR1ZSB0byB1c2Ugb2YgaGFuZC13cml0dGVuCi0jIGFzc2VtYmx5Ci1NSVBTX0lOU1RSVUNUSU9OX1NFVCA9ICJtaXBzIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm1fMS4zLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmZtL2xpYmZtXzEuMy4xLmJiCmluZGV4IDkxOGZlM2UuLjYzYWU3ODcgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZm0vbGliZm1fMS4zLjEuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJmbS9saWJmbV8xLjMuMS5iYgpAQCAtMTksNyArMTksNyBAQAogU1JDX1VSSVttZDVzdW1dID0gImMxNWVjZDJjOTMxN2UyYzM4NWNkM2YwNDZkMGI2MWJhIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjk2YjEyNDRiZGU0MWNhMGVlZjAzMzJjZmI1YzY3YmIxNjcyNWRmZDEwMjEyOGYzZTZmNzRmYWRjMTNhMWNmZTQiCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdldHRleHQgZmVhdHVyZXNfY2hlY2sKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBndGstZG9jIGdldHRleHQgZmVhdHVyZXNfY2hlY2sgbWltZSBtaW1lLXhkZwogQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCiAKIEVYVFJBX09FQ09ORiA9ICItLXdpdGgtZ3RrPTMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9kZXRlcm1pbmlzbS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2ZpbGVzL2RldGVybWluaXNtLnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmFkMGI4YzcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9maWxlcy9kZXRlcm1pbmlzbS5wYXRjaApAQCAtMCwwICsxLDMyIEBACitnbnV0bHMgZGV0ZWN0cyBvdXIgb3V0ZXIgZ2l0IHRyZWVzIGFuZCBpbmplY3RzIHRoYXQgcmV2aXNpb24gaW50byBpdHMgb2JqZWN0cy4KK1RoYXQgaXNuJ3QgZGV0ZXJtaW5pc3RpYyBzbyBzdG9wIGl0LiBBbHNvIGVuc3VyZSB3ZSdyZSBub3QgbWFya2VkIGFzIGEgZGV2ZWxvcG1lbnQKK2J1aWxkIGFzIGl0cyBnaXQgZGV0ZWN0aW9uIGlzIGZhdWx0eS4KKworUlAgMjAyMC8yLzYKKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCitTaWduZWQtb2ZmLWJ5OiBSaWNoYXJkIFB1cmRpZSA8cmljaGFyZC5wdXJkaWVAbGludXhmb3VuZGF0aW9uLm9yZz4KKworCitJbmRleDogbGliZ2NyeXB0LTEuOC41L2NvbmZpZ3VyZS5hYworPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQorLS0tIGxpYmdjcnlwdC0xLjguNS5vcmlnL2NvbmZpZ3VyZS5hYworKysrIGxpYmdjcnlwdC0xLjguNS9jb25maWd1cmUuYWMKK0BAIC00NSw3ICs0NSw3IEBAIG00X2RlZmluZShbbXltNF9yZXZpc2lvbl9kZWNdLAorIG00X2RlZmluZShbbXltNF9iZXRhc3RyaW5nXSwKKyAgICAgICAgICAgbTRfZXN5c2NtZF9zKFtnaXQgZGVzY3JpYmUgLS1tYXRjaCAnbGliZ2NyeXB0LVswLTldLipbMC05XScgLS1sb25nfFwKKyAgICAgICAgICAgICAgICAgICAgICAgICBhd2sgLUYtICckMyE9MHtwcmludCItYmV0YSIkM30nXSkpCistbTRfZGVmaW5lKFtteW00X2lzZ2l0XSxtNF9pZihteW00X2JldGFzdHJpbmcsW10sW25vXSxbeWVzXSkpCisrbTRfZGVmaW5lKFtteW00X2lzZ2l0XSxbbm9dKQorIG00X2RlZmluZShbbXltNF9mdWxsX3ZlcnNpb25dLFtteW00X3ZlcnNpb25bXW15bTRfYmV0YXN0cmluZ10pCisgCisgQUNfSU5JVChbbGliZ2NyeXB0XSxbbXltNF9mdWxsX3ZlcnNpb25dLFtodHRwOi8vYnVncy5nbnVwZy5vcmddKQorQEAgLTI1NzUsNyArMjU3NSw3IEBAIEFNX0NPTkRJVElPTkFMKFtCVUlMRF9ET0NdLCBbdGVzdCAieCRidWkKKyAjCisgIyBQcm92aWRlIGluZm9ybWF0aW9uIGFib3V0IHRoZSBidWlsZC4KKyAjCistQlVJTERfUkVWSVNJT049Im15bTRfcmV2aXNpb24iCisrQlVJTERfUkVWSVNJT049Ik5vbmUiCisgQUNfU1VCU1QoQlVJTERfUkVWSVNJT04pCisgQUNfREVGSU5FX1VOUVVPVEVEKEJVSUxEX1JFVklTSU9OLCAiJEJVSUxEX1JFVklTSU9OIiwKKyAgICAgICAgICAgICAgICAgICAgW0dJVCBjb21taXQgaWQgcmV2aXNpb24gdXNlZCB0byBidWlsZCB0aGlzIHBhY2thZ2VdKQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuOC41LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJnY3J5cHQvbGliZ2NyeXB0XzEuOC41LmJiCmluZGV4IDA0Nzg1NTcuLjRlMGViMGEgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ2NyeXB0L2xpYmdjcnlwdF8xLjguNS5iYgorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdjcnlwdC9saWJnY3J5cHRfMS44LjUuYmIKQEAgLTI0LDYgKzI0LDcgQEAKICAgICAgICAgICAgZmlsZTovLzAwMDEtUHJlZmV0Y2gtR0NNLWxvb2stdXAtdGFibGVzLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDItQUVTLW1vdmUtbG9vay11cC10YWJsZXMtdG8tLmRhdGEtc2VjdGlvbi1hbmQtdW5zaGFyZS5wYXRjaCBcCiAgICAgICAgICAgIGZpbGU6Ly8wMDAzLUdDTS1tb3ZlLWxvb2stdXAtdGFibGUtdG8tLmRhdGEtc2VjdGlvbi1hbmQtdW5zaGFyZS0ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vZGV0ZXJtaW5pc20ucGF0Y2ggXAogIgogU1JDX1VSSVttZDVzdW1dID0gIjM0OGNjNDYwMWNhMzQzMDdmYzZjZDZjOTQ1NDY3NzQzIgogU1JDX1VSSVtzaGEyNTZzdW1dID0gIjNiNGEyYTk0Y2I2MzdlZmY1YmRlYmJjYWY0NmY0ZDk1YzRmMjUyMDZmNDU5ODA5MzM5Y2RhZGEwZWI1NzdhYzMiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvMDAwMS1Eby1ub3QtZmFpbC13aGVuLXRlc3RpbmctY29uZmlnLXNjcmlwdHMucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvMDAwMS1Eby1ub3QtZmFpbC13aGVuLXRlc3RpbmctY29uZmlnLXNjcmlwdHMucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTBhYjRmMgotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci8wMDAxLURvLW5vdC1mYWlsLXdoZW4tdGVzdGluZy1jb25maWctc2NyaXB0cy5wYXRjaApAQCAtMCwwICsxLDI3IEBACitGcm9tIDEzNzgwNTg5MDk1MWI2YjU4NWMxZDIzMDk3ZTBhNTFlOGM3YThhNTAgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBBbGV4YW5kZXIgS2FuYXZpbiA8YWxleC5rYW5hdmluQGdtYWlsLmNvbT4KK0RhdGU6IEZyaSwgMjggRmViIDIwMjAgMDk6MTk6NTYgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gRG8gbm90IGZhaWwgd2hlbiB0ZXN0aW5nIGNvbmZpZyBzY3JpcHRzCisKK0luIHByZXZpb3VzIHZlcnNpb25zIHRoaXMgd2FzIG5vdCBhIGhhcmQgYSBmYWlsdXJlLCBhbmQgc28gd2VudAordW5ub3RpY2VkLiBUaGUgdGVzdCBpcyB1bnN1aXRhYmxlIGZvciBidWlsZGluZyB3aXRoIHN5c3Jvb3RzIGFueXdheSBhcyB0aGUKK2ZhaWx1cmUgaXMgZHVlIHRvIHRoYXQuCisKK1Vwc3RyZWFtLVN0YXR1czogSW5hcHByb3ByaWF0ZSBbb2UtY29yZSBzcGVjaWZpY10KK1NpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgorLS0tCisgc3JjL01ha2VmaWxlLmFtIHwgMSAtCisgMSBmaWxlIGNoYW5nZWQsIDEgZGVsZXRpb24oLSkKKworZGlmZiAtLWdpdCBhL3NyYy9NYWtlZmlsZS5hbSBiL3NyYy9NYWtlZmlsZS5hbQoraW5kZXggOTMwMzk1NC4uNzYzMDU0MCAxMDA2NDQKKy0tLSBhL3NyYy9NYWtlZmlsZS5hbQorKysrIGIvc3JjL01ha2VmaWxlLmFtCitAQCAtMzQ0LDcgKzM0NCw2IEBAIGdwZy1lcnJvci1jb25maWc6IGdwZ3J0LWNvbmZpZyBncGctZXJyb3ItY29uZmlnLW9sZAorIAllbHNlICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIAkgIGVjaG8gIm5vIjsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgXAorIAkgIGVjaG8gIioqKiAgUGxlYXNlIHJlcG9ydCB0byA8aHR0cHM6Ly9idWdzLmdudXBnLm9yZz4gd2l0aCBncGctZXJyb3ItY29uZmlnLXRlc3QubG9nIjsgXAorLQkgIGV4aXQgMTsgXAorIAlmaQorIAljcCBncGctZXJyb3ItY29uZmlnLW9sZCAkQAorIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvci0xLjM2LWdhd2s1LXN1cHBvcnQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLTEuMzYtZ2F3azUtc3VwcG9ydC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjkzNmQxMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLTEuMzYtZ2F3azUtc3VwcG9ydC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE0NCArMCwwIEBACi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2Rldi5nbnVwZy5vcmcvVDQ0NTldCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotCi1Gcm9tIDc4NjUwNDFjNzdmNGY3MDA1MjgyZjEwZjliNjY2NmIxOTA3MmZiZGYgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCi1Gcm9tOiBOSUlCRSBZdXRha2EgPGduaWliZUBmc2lqLm9yZz4KLURhdGU6IE1vbiwgMTUgQXByIDIwMTkgMTU6MTA6NDQgKzA5MDAKLVN1YmplY3Q6IFtQQVRDSF0gYXdrOiBQcmVwYXJlIGZvciBHYXdrIDUuMC4KLQotKiBzcmMvTWFrZWZpbGUuYW06IFVzZSBwa2dfbmFtZXNwYWNlIChpbnN0ZWFkIG9mIG5hbWVzcGFjZSkuCi0qIHNyYy9ta2Vycm5vcy5hd2s6IExpa2V3aXNlLgotKiBsYW5nL2NsL21rZXJyY29kZXMuYXdrOiBEb24ndCBlc2NhcGUgIyBpbiByZWdleHAuCi0qIHNyYy9ta2VycmNvZGVzLmF3aywgc3JjL21rZXJyY29kZXMxLmF3aywgc3JjL21rZXJyY29kZXMyLmF3azogRGl0dG8uCi0KLS0tCi0KLUluIEdhd2sgNS4wLCByZWdleHAgcm91dGluZXMgYXJlIHJlcGxhY2VkIGJ5IEdudWxpYiBpbXBsZW1lbnRhdGlvbiwKLXdoaWNoIG9ubHkgYWxsb3dzIGVzY2FwaW5nIHNwZWNpZmljIGNoYXJhY3RlcnMuCi0KLUdudVBHLWJ1Zy1pZDogNDQ1OQotUmVwb3J0ZWQtYnk6IE1hcml1cyBTY2hhbXNjaHVsYQotU2lnbmVkLW9mZi1ieTogTklJQkUgWXV0YWthIDxnbmlpYmVAZnNpai5vcmc+Ci0tLS0KLSBsYW5nL2NsL21rZXJyY29kZXMuYXdrIHwgIDIgKy0KLSBzcmMvTWFrZWZpbGUuYW0gICAgICAgIHwgIDIgKy0KLSBzcmMvbWtlcnJjb2Rlcy5hd2sgICAgIHwgIDIgKy0KLSBzcmMvbWtlcnJjb2RlczEuYXdrICAgIHwgIDIgKy0KLSBzcmMvbWtlcnJjb2RlczIuYXdrICAgIHwgIDIgKy0KLSBzcmMvbWtlcnJub3MuYXdrICAgICAgIHwgIDIgKy0KLSBzcmMvbWtzdHJ0YWJsZS5hd2sgICAgIHwgMTAgKysrKystLS0tLQotIDcgZmlsZXMgY2hhbmdlZCwgMTEgaW5zZXJ0aW9ucygrKSwgMTEgZGVsZXRpb25zKC0pCi0KLS0tLSBhL2xhbmcvY2wvbWtlcnJjb2Rlcy5hd2sKLSsrKyBiL2xhbmcvY2wvbWtlcnJjb2Rlcy5hd2sKLUBAIC0xMjIsNyArMTIyLDcgQEAgaGVhZGVyIHsKLSB9Ci0gCi0gIWhlYWRlciB7Ci0tICBzdWIgKC9cIy4rLywgIiIpOwotKyAgc3ViICgvIy4rLywgIiIpOwotICAgc3ViICgvWyAJXSskLywgIiIpOyAjIFN0cmlwIHRyYWlsaW5nIHNwYWNlIGFuZCB0YWIgY2hhcmFjdGVycy4KLSAKLSAgIGlmICgvXiQvKQotLS0tIGEvc3JjL01ha2VmaWxlLmFtCi0rKysgYi9zcmMvTWFrZWZpbGUuYW0KLUBAIC0yOTMsNyArMjkzLDcgQEAgY29kZS1mcm9tLWVycm5vLmg6IG1rZXJyY29kZXMkKEVYRUVYVF9GTwotIAotIGVycm5vcy1zeW0uaDogTWFrZWZpbGUgbWtzdHJ0YWJsZS5hd2sgZXJybm9zLmluCi0gCSQoQVdLKSAtZiAkKHNyY2RpcikvbWtzdHJ0YWJsZS5hd2sgLXYgdGV4dGlkeD0yIC12IG5vZ2V0dGV4dD0xIFwKLS0JCS12IHByZWZpeD1HUEdfRVJSXyAtdiBuYW1lc3BhY2U9ZXJybm9zXyBcCi0rCQktdiBwcmVmaXg9R1BHX0VSUl8gLXYgcGtnX25hbWVzcGFjZT1lcnJub3NfIFwKLSAJCSQoc3JjZGlyKS9lcnJub3MuaW4gPiRACi0gCi0gCi0tLS0gYS9zcmMvbWtlcnJjb2Rlcy5hd2sKLSsrKyBiL3NyYy9ta2VycmNvZGVzLmF3awotQEAgLTg1LDcgKzg1LDcgQEAgaGVhZGVyIHsKLSB9Ci0gCi0gIWhlYWRlciB7Ci0tICBzdWIgKC9cIy4rLywgIiIpOwotKyAgc3ViICgvIy4rLywgIiIpOwotICAgc3ViICgvWyAJXSskLywgIiIpOyAjIFN0cmlwIHRyYWlsaW5nIHNwYWNlIGFuZCB0YWIgY2hhcmFjdGVycy4KLSAKLSAgIGlmICgvXiQvKQotLS0tIGEvc3JjL21rZXJyY29kZXMxLmF3awotKysrIGIvc3JjL21rZXJyY29kZXMxLmF3awotQEAgLTgxLDcgKzgxLDcgQEAgaGVhZGVyIHsKLSB9Ci0gCi0gIWhlYWRlciB7Ci0tICBzdWIgKC9cIy4rLywgIiIpOwotKyAgc3ViICgvIy4rLywgIiIpOwotICAgc3ViICgvWyAJXSskLywgIiIpOyAjIFN0cmlwIHRyYWlsaW5nIHNwYWNlIGFuZCB0YWIgY2hhcmFjdGVycy4KLSAKLSAgIGlmICgvXiQvKQotLS0tIGEvc3JjL21rZXJyY29kZXMyLmF3awotKysrIGIvc3JjL21rZXJyY29kZXMyLmF3awotQEAgLTkxLDcgKzkxLDcgQEAgaGVhZGVyIHsKLSB9Ci0gCi0gIWhlYWRlciB7Ci0tICBzdWIgKC9cIy4rLywgIiIpOwotKyAgc3ViICgvIy4rLywgIiIpOwotICAgc3ViICgvWyAJXSskLywgIiIpOyAjIFN0cmlwIHRyYWlsaW5nIHNwYWNlIGFuZCB0YWIgY2hhcmFjdGVycy4KLSAKLSAgIGlmICgvXiQvKQotLS0tIGEvc3JjL21rZXJybm9zLmF3awotKysrIGIvc3JjL21rZXJybm9zLmF3awotQEAgLTgzLDcgKzgzLDcgQEAgaGVhZGVyIHsKLSB9Ci0gCi0gIWhlYWRlciB7Ci0tICBzdWIgKC9cIy4rLywgIiIpOwotKyAgc3ViICgvIy4rLywgIiIpOwotICAgc3ViICgvWyAJXSskLywgIiIpOyAjIFN0cmlwIHRyYWlsaW5nIHNwYWNlIGFuZCB0YWIgY2hhcmFjdGVycy4KLSAKLSAgIGlmICgvXiQvKQotLS0tIGEvc3JjL21rc3RydGFibGUuYXdrCi0rKysgYi9zcmMvbWtzdHJ0YWJsZS5hd2sKLUBAIC03Nyw3ICs3Nyw3IEBACi0gIwotICMgVGhlIHZhcmlhYmxlIHByZWZpeCBjYW4gYmUgdXNlZCB0byBwcmVwZW5kIGEgc3RyaW5nIHRvIGVhY2ggbWVzc2FnZS4KLSAjCi0tIyBUaGUgdmFyaWFibGUgbmFtZXNwYWNlIGNhbiBiZSB1c2VkIHRvIHByZXBlbmQgYSBzdHJpbmcgdG8gZWFjaAotKyMgVGhlIHZhcmlhYmxlIHBrZ19uYW1lc3BhY2UgY2FuIGJlIHVzZWQgdG8gcHJlcGVuZCBhIHN0cmluZyB0byBlYWNoCi0gIyB2YXJpYWJsZSBhbmQgbWFjcm8gbmFtZS4KLSAKLSBCRUdJTiB7Ci1AQCAtMTAyLDcgKzEwMiw3IEBAIGhlYWRlciB7Ci0gICAgICAgcHJpbnQgIi8qIFRoZSBwdXJwb3NlIG9mIHRoaXMgY29tcGxleCBzdHJpbmcgdGFibGUgaXMgdG8gcHJvZHVjZSI7Ci0gICAgICAgcHJpbnQgIiAgIG9wdGltYWwgY29kZSB3aXRoIGEgbWluaW11bSBvZiByZWxvY2F0aW9ucy4gICovIjsKLSAgICAgICBwcmludCAiIjsKLS0gICAgICBwcmludCAic3RhdGljIGNvbnN0IGNoYXIgIiBuYW1lc3BhY2UgIm1zZ3N0cltdID0gIjsKLSsgICAgICBwcmludCAic3RhdGljIGNvbnN0IGNoYXIgIiBwa2dfbmFtZXNwYWNlICJtc2dzdHJbXSA9ICI7Ci0gICAgICAgaGVhZGVyID0gMDsKLSAgICAgfQotICAgZWxzZQotQEAgLTExMCw3ICsxMTAsNyBAQCBoZWFkZXIgewotIH0KLSAKLSAhaGVhZGVyIHsKLS0gIHN1YiAoL1wjLisvLCAiIik7Ci0rICBzdWIgKC8jLisvLCAiIik7Ci0gICBzdWIgKC9bIAldKyQvLCAiIik7ICMgU3RyaXAgdHJhaWxpbmcgc3BhY2UgYW5kIHRhYiBjaGFyYWN0ZXJzLgotIAotICAgaWYgKC9eJC8pCi1AQCAtMTUwLDcgKzE1MCw3IEBAIEVORCB7Ci0gICBlbHNlCi0gICAgIHByaW50ICIgIGdldHRleHRfbm9vcCAoXCIiIGxhc3RfbXNnc3RyICJcIik7IjsKLSAgIHByaW50ICIiOwotLSAgcHJpbnQgInN0YXRpYyBjb25zdCBpbnQgIiBuYW1lc3BhY2UgIm1zZ2lkeFtdID0iOwotKyAgcHJpbnQgInN0YXRpYyBjb25zdCBpbnQgIiBwa2dfbmFtZXNwYWNlICJtc2dpZHhbXSA9IjsKLSAgIHByaW50ICIgIHsiOwotICAgZm9yIChpID0gMDsgaSA8IGNvZGVkX21zZ3M7IGkrKykKLSAgICAgcHJpbnQgIiAgICAiIHBvc1tpXSAiLCI7Ci1AQCAtMTU4LDcgKzE1OCw3IEBAIEVORCB7Ci0gICBwcmludCAiICB9OyI7Ci0gICBwcmludCAiIjsKLSAgIHByaW50ICJzdGF0aWMgR1BHX0VSUl9JTkxJTkUgaW50IjsKLS0gIHByaW50IG5hbWVzcGFjZSAibXNnaWR4b2YgKGludCBjb2RlKSI7Ci0rICBwcmludCBwa2dfbmFtZXNwYWNlICJtc2dpZHhvZiAoaW50IGNvZGUpIjsKLSAgIHByaW50ICJ7IjsKLSAgIHByaW50ICIgIHJldHVybiAoMCA/IDAiOwotIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yXzEuMzYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4zNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggYjExYWIwNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4zNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcyICswLDAgQEAKLVNVTU1BUlkgPSAiU21hbGwgbGlicmFyeSB0aGF0IGRlZmluZXMgY29tbW9uIGVycm9yIHZhbHVlcyBmb3IgYWxsIEdudVBHIGNvbXBvbmVudHMiCi1IT01FUEFHRSA9ICJodHRwOi8vd3d3LmdudXBnLm9yZy9yZWxhdGVkX3NvZnR3YXJlL2xpYmdwZy1lcnJvci8iCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVncy5nMTBjb2RlLmNvbS9nbnVwZy9pbmRleCIKLQotTElDRU5TRSA9ICJHUEx2MisgJiBMR1BMdjIuMSsiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01OTUzMGJkZjMzNjU5YjI5ZTczZDRhZGI5ZjlmNjU1MiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9DT1BZSU5HLkxJQjttZDU9MmQ1MDI1ZDRhYTM0OTViZWZlZjhmMTcyMDZhNWIwYTEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vc3JjL2dwZy1lcnJvci5oLmluO2JlZ2lubGluZT0yO2VuZGxpbmU9MTg7bWQ1PWNkOTFlM2FkMTI2NWEwYzI2OGVmYWQ1NDFhMzkzNDVlIFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9pbml0LmM7YmVnaW5saW5lPTI7ZW5kbGluZT0xNzttZDU9ZjAxY2RmY2Y3NDdhZjUzODA1OTBjZmQ5YmJmZWFhZjciCi0KLQotU0VDVElPTiA9ICJsaWJzIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cHM6Ly9nbnVwZy5vcmcvZG93bmxvYWQvaW5kZXguaHRtbCIKLVNSQ19VUkkgPSAiJHtHTlVQR19NSVJST1J9L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3ItJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9wa2djb25maWcucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbGliZ3BnLWVycm9yLTEuMzYtZ2F3azUtc3VwcG9ydC5wYXRjaCBcCi0JICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICJlZmY0MzdmMzk3ZTg1OGE5MTI3Yjc2YzBkODdmYTVlZCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICJiYWJkOTg0MzcyMDhjMTYzMTc1YzI5NDUzZjg2ODEwOTRiY2FmOTI5NjhhMTVjYWZiMWEyNzYwNzZiMzNjOTdjIgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L2dwZy1lcnJvci1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZCBwa2djb25maWcgZ2V0dGV4dCBtdWx0aWxpYl9oZWFkZXIgbXVsdGlsaWJfc2NyaXB0Ci0KLU1VTFRJTElCX1NDUklQVFMgPSAiJHtQTn0tZGV2OiR7YmluZGlyfS9ncGdydC1jb25maWciCi0KLUNQUEZMQUdTICs9ICItUCIKLWRvX2NvbXBpbGVfcHJlcGVuZCgpIHsKLQlUQVJHRVRfRklMRT1saW51eC1nbnUKLQlpZiBbICR7VEFSR0VUX09TfSA9ICJtaW5ndzMyIiBdOyB0aGVuCi0JCSMgVGhlcmUgYXJlIG5vIGFyY2ggc3BlY2lmaWMgc3lzY2ZnIGZpbGVzIGZvciBtaW5ndzMyCi0JCVRBUkdFVF9GSUxFPQotCWVsaWYgWyAke1RBUkdFVF9BUkNIfSA9ICJhcmMiIF07IHRoZW4KLQkJIyBBUkMgc3lzY2ZnIGZpbGUgaXMgYXV0b21hdGljYWxseSBhbGlhc2VkIHRvIGk2ODYtcGMtbGludXgtZ251Ci0JCVRBUkdFVF9GSUxFPQotCWVsaWYgWyAke1RBUkdFVF9PU30gIT0gImxpbnV4IiBdOyB0aGVuCi0JCVRBUkdFVF9GSUxFPSR7VEFSR0VUX09TfQotCWZpCi0KLQljYXNlICR7VEFSR0VUX0FSQ0h9IGluCi0JICBhYXJjaDY0X2JlKSBUVVBMRT1hYXJjaDY0LXVua25vd24tbGludXgtZ251IDs7Ci0JICBhcm0pCSAgICAgIFRVUExFPWFybS11bmtub3duLWxpbnV4LWdudWVhYmkgOzsKLQkgIGFybWViKSAgICAgIFRVUExFPWFybS11bmtub3duLWxpbnV4LWdudWVhYmkgOzsKLQkgIGk1ODZ8aTY4NikgIFRVUExFPWk2ODYtdW5rbm93bi1saW51eC1nbnU7OwotCSAgbWlwczY0KikgICAgVFVQTEU9bWlwczY0ZWwtdW5rbm93bi1saW51eC1nbnVhYmk2NCA7OwotCSAgbWlwcyplbCkgICAgVFVQTEU9bWlwc2VsLXVua25vd24tbGludXgtZ251IDs7Ci0JICBtaXBzKikgICAgICBUVVBMRT1taXBzLXVua25vd24tbGludXgtZ251IDs7Ci0JICB4ODZfNjQpICAgICBUVVBMRT14ODZfNjQtdW5rbm93bi1saW51eC1nbnUgOzsKLQkgIHBwYykgICAgICAgIFRVUExFPXBvd2VycGMtdW5rbm93bi1saW51eC1nbnUgOzsKLQkgIHBwYzY0KSAgICAgIFRVUExFPXBvd2VycGM2NC11bmtub3duLWxpbnV4LWdudSA7OwotCSAgcHBjNjRsZSkgICAgVFVQTEU9cG93ZXJwYzY0bGUtdW5rbm93bi1saW51eC1nbnUgOzsKLQkgICopICAgICAgICAgIFRVUExFPSR7VEFSR0VUX0FSQ0h9LXVua25vd24tbGludXgtZ251IDs7Ci0JZXNhYwotCi0JaWYgWyAtbiAiJFRBUkdFVF9GSUxFIiBdOyB0aGVuCi0JCWNwICR7U30vc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuJFRVUExFLmggXAotCQkJJHtTfS9zcmMvc3lzY2ZnL2xvY2stb2JqLXB1Yi4kVEFSR0VUX0ZJTEUuaAotCWZpCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kKCkgewotCSMgd2UgZG9uJ3QgaGF2ZSBjb21tb24gbGlzcCBpbiBPRQotCXJtIC1yZiAiJHtEfSR7ZGF0YWRpcn0vY29tbW9uLWxpc3AvIgotCW9lX211bHRpbGliX2hlYWRlciBncGctZXJyb3IuaCBncGdydC5oCi19Ci0KLUZJTEVTXyR7UE59LWRldiArPSAiJHtiaW5kaXJ9L2dwZy1lcnJvciIKLUZJTEVTXyR7UE59LWRvYyArPSAiJHtkYXRhZGlyfS9saWJncGctZXJyb3IvZXJyb3JyZWYudHh0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4zNy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliZ3BnLWVycm9yL2xpYmdwZy1lcnJvcl8xLjM3LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmI5YTJiMDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmdwZy1lcnJvci9saWJncGctZXJyb3JfMS4zNy5iYgpAQCAtMCwwICsxLDcyIEBACitTVU1NQVJZID0gIlNtYWxsIGxpYnJhcnkgdGhhdCBkZWZpbmVzIGNvbW1vbiBlcnJvciB2YWx1ZXMgZm9yIGFsbCBHbnVQRyBjb21wb25lbnRzIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5nbnVwZy5vcmcvcmVsYXRlZF9zb2Z0d2FyZS9saWJncGctZXJyb3IvIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3MuZzEwY29kZS5jb20vZ251cGcvaW5kZXgiCisKK0xJQ0VOU0UgPSAiR1BMdjIrICYgTEdQTHYyLjErIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9NTk1MzBiZGYzMzY1OWIyOWU3M2Q0YWRiOWY5ZjY1NTIgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5MSUI7bWQ1PTJkNTAyNWQ0YWEzNDk1YmVmZWY4ZjE3MjA2YTViMGExIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL3NyYy9ncGctZXJyb3IuaC5pbjtiZWdpbmxpbmU9MjtlbmRsaW5lPTE4O21kNT1jZDkxZTNhZDEyNjVhMGMyNjhlZmFkNTQxYTM5MzQ1ZSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9zcmMvaW5pdC5jO2JlZ2lubGluZT0yO2VuZGxpbmU9MTc7bWQ1PWYwMWNkZmNmNzQ3YWY1MzgwNTkwY2ZkOWJiZmVhYWY3IgorCisKK1NFQ1RJT04gPSAibGlicyIKKworVVBTVFJFQU1fQ0hFQ0tfVVJJID0gImh0dHBzOi8vZ251cGcub3JnL2Rvd25sb2FkL2luZGV4Lmh0bWwiCitTUkNfVVJJID0gIiR7R05VUEdfTUlSUk9SfS9saWJncGctZXJyb3IvbGliZ3BnLWVycm9yLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGtnY29uZmlnLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWZhaWwtd2hlbi10ZXN0aW5nLWNvbmZpZy1zY3JpcHRzLnBhdGNoIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiNzI5ZjIyZDkxNzQ5NGZkYzRiNTRmY2U1YWE2NTQ3YzciCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiYjMyZDZmZjcyYTczY2Y3OTc5N2Y3ZjJkMDM5ZTk1ZTljNmY5MmYwYzE0NTAyMTU0MTA4NDBhYjYyYWVhOTc2MyIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9ncGctZXJyb3ItY29uZmlnIgorCitpbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcGtnY29uZmlnIGdldHRleHQgbXVsdGlsaWJfaGVhZGVyIG11bHRpbGliX3NjcmlwdAorCitNVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWRldjoke2JpbmRpcn0vZ3BncnQtY29uZmlnIgorCitDUFBGTEFHUyArPSAiLVAiCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJVEFSR0VUX0ZJTEU9bGludXgtZ251CisJaWYgWyAke1RBUkdFVF9PU30gPSAibWluZ3czMiIgXTsgdGhlbgorCQkjIFRoZXJlIGFyZSBubyBhcmNoIHNwZWNpZmljIHN5c2NmZyBmaWxlcyBmb3IgbWluZ3czMgorCQlUQVJHRVRfRklMRT0KKwllbGlmIFsgJHtUQVJHRVRfQVJDSH0gPSAiYXJjIiBdOyB0aGVuCisJCSMgQVJDIHN5c2NmZyBmaWxlIGlzIGF1dG9tYXRpY2FsbHkgYWxpYXNlZCB0byBpNjg2LXBjLWxpbnV4LWdudQorCQlUQVJHRVRfRklMRT0KKwllbGlmIFsgJHtUQVJHRVRfT1N9ICE9ICJsaW51eCIgXTsgdGhlbgorCQlUQVJHRVRfRklMRT0ke1RBUkdFVF9PU30KKwlmaQorCisJY2FzZSAke1RBUkdFVF9BUkNIfSBpbgorCSAgYWFyY2g2NF9iZSkgVFVQTEU9YWFyY2g2NC11bmtub3duLWxpbnV4LWdudSA7OworCSAgYXJtKQkgICAgICBUVVBMRT1hcm0tdW5rbm93bi1saW51eC1nbnVlYWJpIDs7CisJICBhcm1lYikgICAgICBUVVBMRT1hcm0tdW5rbm93bi1saW51eC1nbnVlYWJpIDs7CisJICBpNTg2fGk2ODYpICBUVVBMRT1pNjg2LXVua25vd24tbGludXgtZ251OzsKKwkgIG1pcHM2NCopICAgIFRVUExFPW1pcHM2NGVsLXVua25vd24tbGludXgtZ251YWJpNjQgOzsKKwkgIG1pcHMqZWwpICAgIFRVUExFPW1pcHNlbC11bmtub3duLWxpbnV4LWdudSA7OworCSAgbWlwcyopICAgICAgVFVQTEU9bWlwcy11bmtub3duLWxpbnV4LWdudSA7OworCSAgeDg2XzY0KSAgICAgVFVQTEU9eDg2XzY0LXVua25vd24tbGludXgtZ251IDs7CisJICBwcGMpICAgICAgICBUVVBMRT1wb3dlcnBjLXVua25vd24tbGludXgtZ251IDs7CisJICBwcGM2NCkgICAgICBUVVBMRT1wb3dlcnBjNjQtdW5rbm93bi1saW51eC1nbnUgOzsKKwkgIHBwYzY0bGUpICAgIFRVUExFPXBvd2VycGM2NGxlLXVua25vd24tbGludXgtZ251IDs7CisJICAqKSAgICAgICAgICBUVVBMRT0ke1RBUkdFVF9BUkNIfS11bmtub3duLWxpbnV4LWdudSA7OworCWVzYWMKKworCWlmIFsgLW4gIiRUQVJHRVRfRklMRSIgXTsgdGhlbgorCQljcCAke1N9L3NyYy9zeXNjZmcvbG9jay1vYmotcHViLiRUVVBMRS5oIFwKKwkJCSR7U30vc3JjL3N5c2NmZy9sb2NrLW9iai1wdWIuJFRBUkdFVF9GSUxFLmgKKwlmaQorfQorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwkjIHdlIGRvbid0IGhhdmUgY29tbW9uIGxpc3AgaW4gT0UKKwlybSAtcmYgIiR7RH0ke2RhdGFkaXJ9L2NvbW1vbi1saXNwLyIKKwlvZV9tdWx0aWxpYl9oZWFkZXIgZ3BnLWVycm9yLmggZ3BncnQuaAorfQorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmluZGlyfS9ncGctZXJyb3IiCitGSUxFU18ke1BOfS1kb2MgKz0gIiR7ZGF0YWRpcn0vbGliZ3BnLWVycm9yL2Vycm9ycmVmLnR4dCIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWxfMy4wLjYuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbF8zLjAuNi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjliZTg5OC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmljYWwvbGliaWNhbF8zLjAuNi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDQzICswLDAgQEAKLVNVTU1BUlkgPSAiaUNhbCBhbmQgc2NoZWR1bGluZyAoUkZDIDI0NDUsIDI0NDYsIDI0NDcpIGxpYnJhcnkiCi1IT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsL2lzc3VlcyIKLUxJQ0VOU0UgPSAiTEdQTHYyLjEgfCBNUEwtMi4wIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTkxMGEyYTc2ZGRmNmE5YmEzNjkxODI0OTQxNzBkODcgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5MR1BMMjEudHh0O21kNT05MzNhZGI1NjFmMTU5ZTdjM2RhMDc5NTM2ZjBlZDg3MSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLk1QTDIudHh0O21kNT05NzQxYzM0NmVlZjU2MTMxMTYzZTEzYjlkYjEyNDFiMyIKLVNFQ1RJT04gPSAibGlicyIKLQotU1JDX1VSSSA9ICIgXAotICAgIGh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQfS50YXIuZ3ogXAotICAgIGZpbGU6Ly8wMDAxLVVzZS1vdXItaGFuZC1idWlsZC1uYXRpdmUtc3JjLWdlbmVyYXRvci5wYXRjaCBcCi0iCi1TUkNfVVJJW21kNXN1bV0gPSAiNDYzYTU5MjQ0YzY3NjdiOGU2N2IyOTM3OTQwNWUyOTciCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiNWM4YTIxYzJiNzMyZWNlNGEzM2U1Yzg2Mjk3MGI0ZjM1YTg1NDhiYmNkYTUwZGU1Njk1ZjZmYzIxMWFjNGQ5NyIKLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsL3JlbGVhc2VzIgotCi1pbmhlcml0IGNtYWtlIHBrZ2NvbmZpZwotCi1kb19jb21waWxlX3ByZXBlbmQoKSB7Ci0JIyBBcyBsb25nIGFzIGh0dHBzOi8vZ2l0aHViLmNvbS9saWJpY2FsL2xpYmljYWwvaXNzdWVzLzM5NCBpcyBvcGVuIGJ1aWxkIG5hdGl2ZSBzcmMtZ2VuZXJhdG9yIG1hbnVhbGx5Ci0JTkFUSVZFX0NGTEFHUz0iJHtCVUlMRF9DRkxBR1N9IGBwa2ctY29uZmlnLW5hdGl2ZSAtLWNmbGFncyBnbGliLTIuMGAgYHBrZy1jb25maWctbmF0aXZlIC0tY2ZsYWdzIGxpYnhtbC0yLjBgIgotCU5BVElWRV9MREZMQUdTPSIke0JVSUxEX0xERkxBR1N9IGBwa2ctY29uZmlnLW5hdGl2ZSAtLWxpYnMgZ2xpYi0yLjBgIGBwa2ctY29uZmlnLW5hdGl2ZSAtLWxpYnMgbGlieG1sLTIuMGAiCi0JJHtCVUlMRF9DQ30gJE5BVElWRV9DRkxBR1MgJHtTfS9zcmMvbGliaWNhbC1nbGliL3Rvb2xzL2dlbmVyYXRvci5jICR7U30vc3JjL2xpYmljYWwtZ2xpYi90b29scy94bWwtcGFyc2VyLmMgLW8gJHtCfS9zcmMtZ2VuZXJhdG9yICROQVRJVkVfTERGTEFHUwotfQotCi1QQUNLQUdFQ09ORklHID8/PSAiaWN1IGdsaWIiCi1QQUNLQUdFQ09ORklHW2JkYl0gPSAiLC1EQ01BS0VfRElTQUJMRV9GSU5EX1BBQ0tBR0VfQkRCPVRydWUsZGIiCi1QQUNLQUdFQ09ORklHW2dsaWJdID0gIi1ESUNBTF9HTElCPVRydWUsLURJQ0FMX0dMSUI9RmFsc2UsZ2xpYi0yLjAtbmF0aXZlIGxpYnhtbDItbmF0aXZlIGdsaWItMi4wIGxpYnhtbDIiCi0jIElDVSBpcyB1c2VkIGZvciBSU0NBTEUgKFJGQzc1MjkpIHN1cHBvcnQKLVBBQ0tBR0VDT05GSUdbaWN1XSA9ICIsLURDTUFLRV9ESVNBQkxFX0ZJTkRfUEFDS0FHRV9JQ1U9VHJ1ZSxpY3UiCi0KLSMgTm8gbmVlZCB0byB1c2UgcGVybC1uYXRpdmUsIHRoZSBob3N0IHBlcmwgaXMgc3VmZmljaWVudC4KLUVYVFJBX09FQ01BS0UgKz0gIi1EUEVSTF9FWEVDVVRBQkxFPSR7SE9TVFRPT0xTX0RJUn0vcGVybCIKLSMgZG9jIGJ1aWxkIGZhaWxzIHdpdGggbGlua2VyIGVycm9yICg/PykgZm9yIGxpYmljYWwtZ2xpYiBzbyBkaXNhYmxlIGl0Ci1FWFRSQV9PRUNNQUtFICs9ICItRElDQUxfQlVJTERfRE9DUz1mYWxzZSIKLQotZG9faW5zdGFsbF9hcHBlbmQgKCkgewotICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcwotICAgIHNlZCAtaSBcCi0gICAgICAgLWUgJ3MsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LGcnIFwKLSAgICAgICAke0R9JHtsaWJkaXJ9L2NtYWtlL0xpYkljYWwvTGliSWNhbCouY21ha2UKLX0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsXzMuMC43LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJpY2FsL2xpYmljYWxfMy4wLjcuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uYTUwNDczZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaWNhbC9saWJpY2FsXzMuMC43LmJiCkBAIC0wLDAgKzEsNDUgQEAKK1NVTU1BUlkgPSAiaUNhbCBhbmQgc2NoZWR1bGluZyAoUkZDIDI0NDUsIDI0NDYsIDI0NDcpIGxpYnJhcnkiCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsIgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsL2lzc3VlcyIKK0xJQ0VOU0UgPSAiTEdQTHYyLjEgfCBNUEwtMi4wIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vTElDRU5TRTttZDU9MTkxMGEyYTc2ZGRmNmE5YmEzNjkxODI0OTQxNzBkODcgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vTElDRU5TRS5MR1BMMjEudHh0O21kNT05MzNhZGI1NjFmMTU5ZTdjM2RhMDc5NTM2ZjBlZDg3MSBcCisgICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9MSUNFTlNFLk1QTDIudHh0O21kNT1mNzVkMjkyN2QzYzFlZDI0MTRlZjcyMDQ4ZjVhZDY0MCBcCisgICAgICAgICAgICAgICAgICAgICIKK1NFQ1RJT04gPSAibGlicyIKKworU1JDX1VSSSA9ICIgXAorICAgIGh0dHBzOi8vZ2l0aHViLmNvbS8ke0JQTn0vJHtCUE59L3JlbGVhc2VzL2Rvd25sb2FkL3Yke1BWfS8ke0JQfS50YXIuZ3ogXAorICAgIGZpbGU6Ly8wMDAxLVVzZS1vdXItaGFuZC1idWlsZC1uYXRpdmUtc3JjLWdlbmVyYXRvci5wYXRjaCBcCisiCitTUkNfVVJJW21kNXN1bV0gPSAiOGE1ZDA3YTdmYmE5ZTczYTg1ZTY3Zjc2MjU4YmYwNDIiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMGFiZTY2ZGYxZWE4MjZlNTdkYjdmMjgxYzcwNGVkZTgzNGM4NDEzOTAxMmU2YzY4NmVhN2FkYWZkNGU3NjNmYyIKK1VQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2dpdGh1Yi5jb20vbGliaWNhbC9saWJpY2FsL3JlbGVhc2VzIgorCitpbmhlcml0IGNtYWtlIHBrZ2NvbmZpZworCitkb19jb21waWxlX3ByZXBlbmQoKSB7CisJIyBBcyBsb25nIGFzIGh0dHBzOi8vZ2l0aHViLmNvbS9saWJpY2FsL2xpYmljYWwvaXNzdWVzLzM5NCBpcyBvcGVuIGJ1aWxkIG5hdGl2ZSBzcmMtZ2VuZXJhdG9yIG1hbnVhbGx5CisJTkFUSVZFX0NGTEFHUz0iJHtCVUlMRF9DRkxBR1N9IGBwa2ctY29uZmlnLW5hdGl2ZSAtLWNmbGFncyBnbGliLTIuMGAgYHBrZy1jb25maWctbmF0aXZlIC0tY2ZsYWdzIGxpYnhtbC0yLjBgIgorCU5BVElWRV9MREZMQUdTPSIke0JVSUxEX0xERkxBR1N9IGBwa2ctY29uZmlnLW5hdGl2ZSAtLWxpYnMgZ2xpYi0yLjBgIGBwa2ctY29uZmlnLW5hdGl2ZSAtLWxpYnMgbGlieG1sLTIuMGAiCisJJHtCVUlMRF9DQ30gJE5BVElWRV9DRkxBR1MgJHtTfS9zcmMvbGliaWNhbC1nbGliL3Rvb2xzL2dlbmVyYXRvci5jICR7U30vc3JjL2xpYmljYWwtZ2xpYi90b29scy94bWwtcGFyc2VyLmMgLW8gJHtCfS9zcmMtZ2VuZXJhdG9yICROQVRJVkVfTERGTEFHUworfQorCitQQUNLQUdFQ09ORklHID8/PSAiaWN1IGdsaWIiCitQQUNLQUdFQ09ORklHW2JkYl0gPSAiLC1EQ01BS0VfRElTQUJMRV9GSU5EX1BBQ0tBR0VfQkRCPVRydWUsZGIiCitQQUNLQUdFQ09ORklHW2dsaWJdID0gIi1ESUNBTF9HTElCPVRydWUsLURJQ0FMX0dMSUI9RmFsc2UsZ2xpYi0yLjAtbmF0aXZlIGxpYnhtbDItbmF0aXZlIGdsaWItMi4wIGxpYnhtbDIiCisjIElDVSBpcyB1c2VkIGZvciBSU0NBTEUgKFJGQzc1MjkpIHN1cHBvcnQKK1BBQ0tBR0VDT05GSUdbaWN1XSA9ICIsLURDTUFLRV9ESVNBQkxFX0ZJTkRfUEFDS0FHRV9JQ1U9VHJ1ZSxpY3UiCisKKyMgTm8gbmVlZCB0byB1c2UgcGVybC1uYXRpdmUsIHRoZSBob3N0IHBlcmwgaXMgc3VmZmljaWVudC4KK0VYVFJBX09FQ01BS0UgKz0gIi1EUEVSTF9FWEVDVVRBQkxFPSR7SE9TVFRPT0xTX0RJUn0vcGVybCIKKyMgZG9jIGJ1aWxkIGZhaWxzIHdpdGggbGlua2VyIGVycm9yICg/PykgZm9yIGxpYmljYWwtZ2xpYiBzbyBkaXNhYmxlIGl0CitFWFRSQV9PRUNNQUtFICs9ICItRElDQUxfQlVJTERfRE9DUz1mYWxzZSIKKworZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgICMgUmVtb3ZlIGJ1aWxkIGhvc3QgcmVmZXJlbmNlcworICAgIHNlZCAtaSBcCisgICAgICAgLWUgJ3MsJHtTVEFHSU5HX0xJQkRJUn0sJHtsaWJkaXJ9LGcnIFwKKyAgICAgICAtZSAncywke1NUQUdJTkdfSU5DRElSfSwke2luY2x1ZGVkaXJ9LGcnIFwKKyAgICAgICAke0R9JHtsaWJkaXJ9L2NtYWtlL0xpYkljYWwvTGliSWNhbCouY21ha2UKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaml0dGVyZW50cm9weS9maWxlcy8wMDAxLU1ha2UtbWFuLXBhZ2VzLXJlcHJvZHVjaWJsZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaml0dGVyZW50cm9weS9maWxlcy8wMDAxLU1ha2UtbWFuLXBhZ2VzLXJlcHJvZHVjaWJsZS5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44ODZmZDI2Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2ZpbGVzLzAwMDEtTWFrZS1tYW4tcGFnZXMtcmVwcm9kdWNpYmxlLnBhdGNoCkBAIC0wLDAgKzEsMzAgQEAKK0Zyb20gY2UwOTE3MTg3MTY0MDAxMTlkNmJlNmJkNjM3YzBlM2Y0ZjZjYTMxNSBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKK0Zyb206IEpvc2h1YSBXYXR0IDxKUEVXaGFja2VyQGdtYWlsLmNvbT4KK0RhdGU6IFRodSwgMjEgTm92IDIwMTkgMDg6MDc6NDEgLTA2MDAKK1N1YmplY3Q6IFtQQVRDSF0gTWFrZSBtYW4gcGFnZXMgcmVwcm9kdWNpYmxlCisKK0luc3RydWN0cyB0aGUgbWFuIHBhZ2UgdG8gYmUgZ3ppcCdlZCB3aXRob3V0IHRoZSBmaWxlIG5hbWUgb3IgdGltZXN0YW1wCitzbyB0aGF0IGl0IGJ1aWxkcyByZXByb2R1Y2libHkuCisKK1Vwc3RyZWFtLVN0YXR1czogQWNjZXB0ZWQgW2h0dHBzOi8vZ2l0aHViLmNvbS9zbXVlbGxlckREL2ppdHRlcmVudHJvcHktbGlicmFyeS9wdWxsLzE0XQorU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUgfCAyICstCisgMSBmaWxlIGNoYW5nZWQsIDEgaW5zZXJ0aW9uKCspLCAxIGRlbGV0aW9uKC0pCisKK2RpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCitpbmRleCAyZTc4NjA3Li44NjBiNzIwIDEwMDY0NAorLS0tIGEvTWFrZWZpbGUKKysrKyBiL01ha2VmaWxlCitAQCAtNjAsNyArNjAsNyBAQCBjcHBjaGVjazoKKyBpbnN0YWxsOgorIAlpbnN0YWxsIC1kIC1tIDA3NTUgJChERVNURElSKSQoUFJFRklYKS9zaGFyZS9tYW4vbWFuMworIAlpbnN0YWxsIC1tIDY0NCBkb2MvJChOQU1FKS4zICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjMvCistCWd6aXAgLWYgLTkgJChERVNURElSKSQoUFJFRklYKS9zaGFyZS9tYW4vbWFuMy8kKE5BTUUpLjMKKysJZ3ppcCAtbiAtZiAtOSAkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL21hbi9tYW4zLyQoTkFNRSkuMworIAlpbnN0YWxsIC1kIC1tIDA3NTUgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikKKyAJJChJTlNUQUxMX1NUUklQKSAtbSAwNzU1IGxpYiQoTkFNRSkuc28uJChMSUJWRVJTSU9OKSAkKERFU1RESVIpJChQUkVGSVgpLyQoTElCRElSKS8KKyAJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikkKFBSRUZJWCkvJChJTkNESVIpCistLSAKKzIuMjMuMAorCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmppdHRlcmVudHJvcHkvZmlsZXMvMDAwMS1NYWtlZmlsZS1jbGVhbnVwLWluc3RhbGwtZm9yLXJlYnVpbGRzLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2ZpbGVzLzAwMDEtTWFrZWZpbGUtY2xlYW51cC1pbnN0YWxsLWZvci1yZWJ1aWxkcy5wYXRjaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMTliMjUyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2ZpbGVzLzAwMDEtTWFrZWZpbGUtY2xlYW51cC1pbnN0YWxsLWZvci1yZWJ1aWxkcy5wYXRjaApAQCAtMCwwICsxLDU2IEBACitGcm9tIDA2MGI5YjQxNDdmNmU1ZmYzODZhOGIwMTc3OTYxMThkNzgzZTU5ZmEgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiBNYXR0IFdlYmVyIDxtYXR0aGV3LndlYmVyQHJvY2t3ZWxsY29sbGlucy5jb20+CitEYXRlOiBUdWUsIDIyIE9jdCAyMDE5IDEyOjQ0OjMwIC0wNTAwCitTdWJqZWN0OiBbUEFUQ0hdIE1ha2VmaWxlOiBjbGVhbnVwIGluc3RhbGwgZm9yIHJlYnVpbGRzCisKK1N1cHBvcnQgdGhlIGFiaWxpdHkgdG8gcmVidWlsZCBhbmQgcmVkZXBsb3kgd2l0aG91dCBhIGNsZWFuLiBUaGlzCityZXF1aXJlZCBzb21lIGZvcmNlIGxpbmtpbmcgYW5kIG1hbiBhcmNoaXZlIGNyZWF0aW9uLgorCitQcm92aWRlIHRoZSBhYmlsaXR5IHRvIG92ZXJyaWRlIHRoZSBzdHJpcHBpbmcgb2YgdGhlIHNoYXJlZCBsaWIgZm9yCitjYXNlcyB3aGVyZSBhIGVtYmVkZGVkIHRhcmdldCBidWlsZCBtYXkgd2FudCB0byBjb250cm9sIHN0cmlwcGluZworb3IgcHJvdmlkZSBjcm9zcyBhcmNoIHRvb2xzLgorCitVcHN0cmVhbS1TdGF0dXM6IEFjY2VwdGVkIFswNjBiOWI0MTQ3ZjZlNWZmMzg2YThiMDE3Nzk2MTE4ZDc4M2U1OWZhXQorU2lnbmVkLW9mZi1ieTogTWF0dGhldyBXZWJlciA8bWF0dGhldy53ZWJlckByb2Nrd2VsbGNvbGxpbnMuY29tPgorU2lnbmVkLW9mZi1ieTogU3RlcGhhbiBNdWVsbGVyIDxzbXVlbGxlckBjaHJvbm94LmRlPgorU2lnbmVkLW9mZi1ieTogSm9zaHVhIFdhdHQgPEpQRVdoYWNrZXJAZ21haWwuY29tPgorLS0tCisgTWFrZWZpbGUgfCAxMCArKysrKystLS0tCisgMSBmaWxlIGNoYW5nZWQsIDYgaW5zZXJ0aW9ucygrKSwgNCBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL01ha2VmaWxlIGIvTWFrZWZpbGUKK2luZGV4IDRmZjA2OWIuLjJlNzg2MDcgMTAwNjQ0CistLS0gYS9NYWtlZmlsZQorKysrIGIvTWFrZWZpbGUKK0BAIC0xNCw2ICsxNCw4IEBAIExJQkRJUiA6PSBsaWIKKyAjIGluY2x1ZGUgdGFyZ2V0IGRpcmVjdG9yeQorIElOQ0RJUiA6PSBpbmNsdWRlCisgCisrSU5TVEFMTF9TVFJJUCA/PSBpbnN0YWxsIC1zCisrCisgTkFNRSA6PSBqaXR0ZXJlbnRyb3B5CisgTElCTUFKT1I9JChzaGVsbCBjYXQgaml0dGVyZW50cm9weS1iYXNlLmMgfCBncmVwIGRlZmluZSB8IGdyZXAgTUFKVkVSU0lPTiB8IGF3ayAne3ByaW50ICQkM30nKQorIExJQk1JTk9SPSQoc2hlbGwgY2F0IGppdHRlcmVudHJvcHktYmFzZS5jIHwgZ3JlcCBkZWZpbmUgfCBncmVwIE1JTlZFUlNJT04gfCBhd2sgJ3twcmludCAkJDN9JykKK0BAIC01OCwxNSArNjAsMTUgQEAgY3BwY2hlY2s6CisgaW5zdGFsbDoKKyAJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjMKKyAJaW5zdGFsbCAtbSA2NDQgZG9jLyQoTkFNRSkuMyAkKERFU1RESVIpJChQUkVGSVgpL3NoYXJlL21hbi9tYW4zLworLQlnemlwIC05ICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjMvJChOQU1FKS4zCisrCWd6aXAgLWYgLTkgJChERVNURElSKSQoUFJFRklYKS9zaGFyZS9tYW4vbWFuMy8kKE5BTUUpLjMKKyAJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpCistCWluc3RhbGwgLW0gMDc1NSAtcyBsaWIkKE5BTUUpLnNvLiQoTElCVkVSU0lPTikgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvCisrCSQoSU5TVEFMTF9TVFJJUCkgLW0gMDc1NSBsaWIkKE5BTUUpLnNvLiQoTElCVkVSU0lPTikgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvCisgCWluc3RhbGwgLWQgLW0gMDc1NSAkKERFU1RESVIpJChQUkVGSVgpLyQoSU5DRElSKQorIAlpbnN0YWxsIC1tIDA2NDQgaml0dGVyZW50cm9weS5oICQoREVTVERJUikkKFBSRUZJWCkvJChJTkNESVIpLworIAlpbnN0YWxsIC1tIDA2NDQgaml0dGVyZW50cm9weS1iYXNlLXVzZXIuaCAkKERFU1RESVIpJChQUkVGSVgpLyQoSU5DRElSKS8KKyAJJChSTSkgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvbGliJChOQU1FKS5zby4kKExJQk1BSk9SKQorLQlsbiAtcyBsaWIkKE5BTUUpLnNvLiQoTElCVkVSU0lPTikgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvbGliJChOQU1FKS5zby4kKExJQk1BSk9SKQorLQlsbiAtcyBsaWIkKE5BTUUpLnNvLiQoTElCTUFKT1IpICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpL2xpYiQoTkFNRSkuc28KKysJbG4gLXNmIGxpYiQoTkFNRSkuc28uJChMSUJWRVJTSU9OKSAkKERFU1RESVIpJChQUkVGSVgpLyQoTElCRElSKS9saWIkKE5BTUUpLnNvLiQoTElCTUFKT1IpCisrCWxuIC1zZiBsaWIkKE5BTUUpLnNvLiQoTElCTUFKT1IpICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpL2xpYiQoTkFNRSkuc28KKyAKKyBjbGVhbjoKKyAJQC0gJChSTSkgJChOQU1FKQorLS0gCisyLjIzLjAKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2ZpbGVzLzAwMDEtZml4LWRvX2luc3RhbGwtZmFpbHVyZS1vbi1vZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaml0dGVyZW50cm9weS9maWxlcy8wMDAxLWZpeC1kb19pbnN0YWxsLWZhaWx1cmUtb24tb2UucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDMwZmY0ZmUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2ZpbGVzLzAwMDEtZml4LWRvX2luc3RhbGwtZmFpbHVyZS1vbi1vZS5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDMzICswLDAgQEAKLUZyb20gMDBjZWZjYTBlZWZlY2VjNjU3OTY5YjUwY2Q0ZTFlZDViMDU3YTg1NyBNb24gU2VwIDE3IDAwOjAwOjAwIDIwMDEKLUZyb206IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLURhdGU6IFRodSwgMjUgT2N0IDIwMTggMTY6MzA6MDYgKzA4MDAKLVN1YmplY3Q6IFtQQVRDSF0gZml4IGRvX2luc3RhbGwgZmFpbHVyZSBvbiBvZQotCi0tIERvIG5vdCBzdHJpcCBhdCBkb19pbnN0YWxsCi0KLS0gQ3JlYXRlIGluY2x1ZGVkaXIKLQotVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCi0KLVNpZ25lZC1vZmYtYnk6IEhvbmd4dSBKaWEgPGhvbmd4dS5qaWFAd2luZHJpdmVyLmNvbT4KLS0tLQotIE1ha2VmaWxlIHwgMyArKy0KLSAxIGZpbGUgY2hhbmdlZCwgMiBpbnNlcnRpb25zKCspLCAxIGRlbGV0aW9uKC0pCi0KLWRpZmYgLS1naXQgYS9NYWtlZmlsZSBiL01ha2VmaWxlCi1pbmRleCA1ZTMxMjc2Li43NmZjYmZhIDEwMDY0NAotLS0tIGEvTWFrZWZpbGUKLSsrKyBiL01ha2VmaWxlCi1AQCAtNTEsNyArNTEsOCBAQCBpbnN0YWxsOgotIAlpbnN0YWxsIC1tIDY0NCBkb2MvJChOQU1FKS4zICQoREVTVERJUikkKFBSRUZJWCkvc2hhcmUvbWFuL21hbjMvCi0gCWd6aXAgLTkgJChERVNURElSKSQoUFJFRklYKS9zaGFyZS9tYW4vbWFuMy8kKE5BTUUpLjMKLSAJaW5zdGFsbCAtZCAtbSAwNzU1ICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpCi0tCWluc3RhbGwgLW0gMDc1NSAtcyBsaWIkKE5BTUUpLnNvLiQoTElCVkVSU0lPTikgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvCi0rCWluc3RhbGwgLW0gMDc1NSBsaWIkKE5BTUUpLnNvLiQoTElCVkVSU0lPTikgJChERVNURElSKSQoUFJFRklYKS8kKExJQkRJUikvCi0rCWluc3RhbGwgLWQgLW0gMDc1NSAkKERFU1RESVIpJChQUkVGSVgpLyQoSU5DRElSKS8KLSAJaW5zdGFsbCAtbSAwNjQ0IGppdHRlcmVudHJvcHkuaCAkKERFU1RESVIpJChQUkVGSVgpLyQoSU5DRElSKS8KLSAJaW5zdGFsbCAtbSAwNjQ0IGppdHRlcmVudHJvcHktYmFzZS11c2VyLmggJChERVNURElSKSQoUFJFRklYKS8kKElOQ0RJUikvCi0gCSQoUk0pICQoREVTVERJUikkKFBSRUZJWCkvJChMSUJESVIpL2xpYiQoTkFNRSkuc28uJChMSUJNQUpPUikKLS0tIAotMi43LjQKLQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJqaXR0ZXJlbnRyb3B5L2xpYmppdHRlcmVudHJvcHlfMi4xLjIuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmppdHRlcmVudHJvcHkvbGliaml0dGVyZW50cm9weV8yLjEuMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2I1YjRlNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmppdHRlcmVudHJvcHkvbGliaml0dGVyZW50cm9weV8yLjEuMi5iYgorKysgL2Rldi9udWxsCkBAIC0xLDI4ICswLDAgQEAKLVNVTU1BUlkgPSAiSGFyZHdhcmUgUk5HIGJhc2VkIG9uIENQVSB0aW1pbmcgaml0dGVyIgotREVTQ1JJUFRJT04gPSAiVGhlIEppdHRlciBSTkcgcHJvdmlkZXMgYSBub2lzZSBzb3VyY2UgdXNpbmcgdGhlIENQVSBleGVjdXRpb24gdGltaW5nIGppdHRlci4gXAotSXQgZG9lcyBub3QgZGVwZW5kIG9uIGFueSBzeXN0ZW0gcmVzb3VyY2Ugb3RoZXIgdGhhbiBhIGhpZ2gtcmVzb2x1dGlvbiB0aW1lIFwKLXN0YW1wLiBJdCBpcyBhIHNtYWxsLXNjYWxlLCB5ZXQgZmFzdCBlbnRyb3B5IHNvdXJjZSB0aGF0IGlzIHZpYWJsZSBpbiBhbG1vc3QgXAotYWxsIGVudmlyb25tZW50cyBhbmQgb24gYSBsb3Qgb2YgQ1BVIGFyY2hpdGVjdHVyZXMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5jaHJvbm94LmRlL2plbnQuaHRtbCIKLUxJQ0VOU0UgPSAiR1BMdjIrIHwgQlNEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9ZTUyMzY1NzUyYjM2Y2ZjZDdmOTYwMWQ4MGRlN2Q4YzYgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5ncGx2MjttZDU9ZWI3MjNiNjE1MzlmZWVmMDEzZGU0NzZlNjhiNWM1MGEgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vQ09QWUlORy5ic2Q7bWQ1PTY2YTVjZWRhZjYyYzRiMjYzNzAyNWYwNDlmOWI4MjZmIFwKLSAgICAgICAgICAgICAgICAgICAiCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vc211ZWxsZXJERC9qaXR0ZXJlbnRyb3B5LWxpYnJhcnkuZ2l0IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtZml4LWRvX2luc3RhbGwtZmFpbHVyZS1vbi1vZS5wYXRjaCBcCi0gICAgICAgICAgIgotU1JDUkVWID0gImY1YTgwYzZmM2ZjYzZkZWViZDBlYWJmNzUzMjRmNDhhZWQxYWZiY2UiCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1kb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgotCi1MREZMQUdTICs9ICItV2wsLU8wIgotCi1kb19pbnN0YWxsICgpIHsKLSAgICBvZV9ydW5tYWtlIGluc3RhbGwgSU5DRElSPSIvaW5jbHVkZSIgXAotICAgICAgICAgICAgICAgICAgICAgICBERVNURElSPSIke0R9IiBcCi0gICAgICAgICAgICAgICAgICAgICAgIFBSRUZJWD0iJHtleGVjX3ByZWZpeH0iIFwKLSAgICAgICAgICAgICAgICAgICAgICAgTElCRElSPSIke2Jhc2VsaWJ9IgotfQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmppdHRlcmVudHJvcHkvbGliaml0dGVyZW50cm9weV8yLjIuMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGliaml0dGVyZW50cm9weS9saWJqaXR0ZXJlbnRyb3B5XzIuMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcxMGVmMDEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYmppdHRlcmVudHJvcHkvbGliaml0dGVyZW50cm9weV8yLjIuMC5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIkhhcmR3YXJlIFJORyBiYXNlZCBvbiBDUFUgdGltaW5nIGppdHRlciIKK0RFU0NSSVBUSU9OID0gIlRoZSBKaXR0ZXIgUk5HIHByb3ZpZGVzIGEgbm9pc2Ugc291cmNlIHVzaW5nIHRoZSBDUFUgZXhlY3V0aW9uIHRpbWluZyBqaXR0ZXIuIFwKK0l0IGRvZXMgbm90IGRlcGVuZCBvbiBhbnkgc3lzdGVtIHJlc291cmNlIG90aGVyIHRoYW4gYSBoaWdoLXJlc29sdXRpb24gdGltZSBcCitzdGFtcC4gSXQgaXMgYSBzbWFsbC1zY2FsZSwgeWV0IGZhc3QgZW50cm9weSBzb3VyY2UgdGhhdCBpcyB2aWFibGUgaW4gYWxtb3N0IFwKK2FsbCBlbnZpcm9ubWVudHMgYW5kIG9uIGEgbG90IG9mIENQVSBhcmNoaXRlY3R1cmVzLiIKK0hPTUVQQUdFID0gImh0dHA6Ly93d3cuY2hyb25veC5kZS9qZW50Lmh0bWwiCitMSUNFTlNFID0gIkdQTHYyKyB8IEJTRCIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWE5NWFhZGJkZmFlN2VkODEyYmIyYjdiODZlYjU5ODFjIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuZ3BsdjI7bWQ1PWViNzIzYjYxNTM5ZmVlZjAxM2RlNDc2ZTY4YjVjNTBhIFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL0NPUFlJTkcuYnNkO21kNT02NmE1Y2VkYWY2MmM0YjI2MzcwMjVmMDQ5ZjliODI2ZiBcCisgICAgICAgICAgICAgICAgICAgICIKK1NSQ19VUkkgPSAiZ2l0Oi8vZ2l0aHViLmNvbS9zbXVlbGxlckREL2ppdHRlcmVudHJvcHktbGlicmFyeS5naXQgXAorICAgICAgICAgICBmaWxlOi8vMDAwMS1NYWtlZmlsZS1jbGVhbnVwLWluc3RhbGwtZm9yLXJlYnVpbGRzLnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovLzAwMDEtTWFrZS1tYW4tcGFnZXMtcmVwcm9kdWNpYmxlLnBhdGNoIgorU1JDUkVWID0gIjkzM2E0NGYzM2VkM2Q2NjEyZjdjZmFhN2FkMTIwN2M4ZGE0ODg2YmEiCitTID0gIiR7V09SS0RJUn0vZ2l0IgorCitkb19jb25maWd1cmVbbm9leGVjXSA9ICIxIgorCitMREZMQUdTICs9ICItV2wsLU8wIgorCitkb19pbnN0YWxsICgpIHsKKyAgICBvZV9ydW5tYWtlIGluc3RhbGwgSU5DRElSPSIvaW5jbHVkZSIgXAorICAgICAgICAgICAgICAgICAgICAgICBERVNURElSPSIke0R9IiBcCisgICAgICAgICAgICAgICAgICAgICAgIFBSRUZJWD0iJHtleGVjX3ByZWZpeH0iIFwKKyAgICAgICAgICAgICAgICAgICAgICAgTElCRElSPSIke2Jhc2VsaWJ9IiBcCisgICAgICAgICAgICAgICAgICAgICAgIElOU1RBTExfU1RSSVA9Imluc3RhbGwiCit9CisKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlL291dC1vZi10cmVlLnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUvb3V0LW9mLXRyZWUucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1Njc4OTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUvb3V0LW9mLXRyZWUucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwyNiArMCwwIEBACi1JbiBvdXQtb2YtdHJlZSBidWlsZHMgdGhlICNpbmNsdWRlIGZhaWxzIGJlY2F1c2UgJHNyY2RpciBpc24ndCBpbiB0aGUgaW5jbHVkZSBwYXRoLiAgU2V0IENQUEZMQUdTIHNvIHRoYXQgaXQgaXMuCi0KLVVwc3RyZWFtLVN0YXR1czogQmFja3BvcnQgW3IxNzUwXQotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotSW5kZXg6IGNvbmZpZ3VyZS5hYwotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIGEvY29uZmlndXJlLmFjCShyZXZpc2lvbiAxNzQ5KQotKysrIGIvY29uZmlndXJlLmFjCSh3b3JraW5nIGNvcHkpCi1AQCAtMTU5LDYgKzE1OSw4IEBACi0gCi0gaWYgdGVzdCAiJGVuYWJsZV9qaXQiID0gImF1dG8iOyB0aGVuCi0gICBBQ19MQU5HKEMpCi0rICBTQVZFX0NQUEZMQUdTPSRDUFBGTEFHUwotKyAgQ1BQRkxBR1M9LUkkc3JjZGlyCi0gICBBQ19DT01QSUxFX0lGRUxTRShbQUNfTEFOR19TT1VSQ0UoW1sKLSAgICNkZWZpbmUgU0xKSVRfQ09ORklHX0FVVE8gMQotICAgI2luY2x1ZGUgInNsaml0L3Nsaml0Q29uZmlnSW50ZXJuYWwuaCIKLUBAIC0xNjUsNiArMTY3LDcgQEAKLSAgICNpZiAoZGVmaW5lZCBTTEpJVF9DT05GSUdfVU5TVVBQT1JURUQgJiYgU0xKSVRfQ09ORklHX1VOU1VQUE9SVEVEKQotICAgI2Vycm9yIHVuc3VwcG9ydGVkCi0gICAjZW5kaWZdXSldLCBlbmFibGVfaml0PXllcywgZW5hYmxlX2ppdD1ubykKLSsgIENQUEZMQUdTPSRTQVZFX0NQUEZMQUdTCi0gZmkKLSAKLSAjIEhhbmRsZSAtLWRpc2FibGUtcGNyZWdyZXAtaml0IChlbmFibGVkIGJ5IGRlZmF1bHQpCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMzMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMzMuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDg3ZGEzMTMuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJwY3JlL2xpYnBjcmUyXzEwLjMzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNjEgKzAsMCBAQAotREVTQ1JJUFRJT04gPSAiVGhlcmUgYXJlIHR3byBtYWpvciB2ZXJzaW9ucyBvZiB0aGUgUENSRSBsaWJyYXJ5LiBUaGUgXAotbmV3ZXN0IHZlcnNpb24gaXMgUENSRTIsIHdoaWNoIGlzIGEgcmUtd29ya2luZyBvZiB0aGUgb3JpZ2luYWwgUENSRSBcCi1saWJyYXJ5IHRvIHByb3ZpZGUgYW4gZW50aXJlbHkgbmV3IEFQSS4gVGhlIG9yaWdpbmFsLCB2ZXJ5IHdpZGVseSBcCi1kZXBsb3llZCBQQ1JFIGxpYnJhcnkncyBBUEkgYW5kIGZlYXR1cmUgYXJlIHN0YWJsZSwgZnV0dXJlIHJlbGVhc2VzIFwKLSB3aWxsIGJlIGZvciBidWdmaXhlcyBvbmx5LiBBbGwgbmV3IGZ1dHVyZSBmZWF0dXJlcyB3aWxsIGJlIHRvIFBDUkUyLCBcCi1ub3QgdGhlIG9yaWdpbmFsIFBDUkUgOC54IHNlcmllcy4iCi1TVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIHZlcnNpb24gMiIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGNyZS5vcmciCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT1iMTU4OGQzYmI0Y2IwZTFmNWE1OTdkOTA4ZjhjNWIzNyIKLQotU1JDX1VSSSA9ICJodHRwczovL2Z0cC5wY3JlLm9yZy9wdWIvcGNyZS9wY3JlMi0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL3BjcmUtY3Jvc3MucGF0Y2ggXAotIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiODBiMzU1ZjJkY2U5MDlhMmUyNDI0ZjVjNzllZGRiNDQiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiMzU1MTRkZmYwY2NkZjAyYjU1YmQyZTlmYTU4NmExYjlkMDFmNjIzMzJjMzM1NmUzNzllYWJiNzVmNzg5ZDhhYSIKLQotQ1ZFX1BST0RVQ1QgPSAicGNyZTIiCi0KLVMgPSAiJHtXT1JLRElSfS9wY3JlMi0ke1BWfSIKLQotUFJPVklERVMgKz0gInBjcmUyIgotREVQRU5EUyArPSAiYnppcDIgemxpYiIKLQotQklOQ09ORklHID0gIiR7YmluZGlyfS9wY3JlMi1jb25maWciCi0KLWluaGVyaXQgYXV0b3Rvb2xzIGJpbmNvbmZpZy1kaXNhYmxlZAotCi1FWFRSQV9PRUNPTkYgPSAiXAotICAgIC0tZW5hYmxlLW5ld2xpbmUtaXMtbGYgXAotICAgIC0tZW5hYmxlLXJlYnVpbGQtY2hhcnRhYmxlcyBcCi0gICAgLS13aXRoLWxpbmstc2l6ZT0yIFwKLSAgICAtLXdpdGgtbWF0Y2gtbGltaXQ9MTAwMDAwMDAgXAotICAgIC0tZW5hYmxlLXBjcmUyLTE2IFwKLSAgICAtLWVuYWJsZS1wY3JlMi0zMiBcCi0iCi0jIFNldCBMSU5LX1NJWkUgaW4gQlVJTERfQ0ZMQUdTIGdpdmVuIHRoYXQgdGhlIGF1dG90b29scyBiYmNsYXNzIHVzZSBpdCB0bwotIyBzZXQgQ0ZMQUdTX0ZPUl9CVUlMRCwgcmVxdWlyZWQgZm9yIHRoZSBsaWJwY3JlIGJ1aWxkLgotQlVJTERfQ0ZMQUdTID0rICItRExJTktfU0laRT0yIC1JJHtCfS9zcmMiCi1DRkxBR1MgKz0gIi1EX1JFRU5UUkFOVCIKLUNYWEZMQUdTX2FwcGVuZF9wb3dlcnBjID0gIiAtbHN0ZGMrKyIKLQotZXhwb3J0IENDTERfRk9SX0JVSUxEID0iJHtCVUlMRF9DQ0xEfSIKLQotUEFDS0FHRVMgPSsgImxpYnBjcmUyLTE2IGxpYnBjcmUyLTMyIHBjcmUyZ3JlcCBwY3JlMmdyZXAtZG9jIHBjcmUydGVzdCBwY3JlMnRlc3QtZG9jIgotCi1TVU1NQVJZX3BjcmUyZ3JlcCA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMiCi1TVU1NQVJZX3BjcmUyZ3JlcC1kb2MgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIC0gZG9jcyIKLVNVTU1BUllfcGNyZTJ0ZXN0ID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyIKLVNVTU1BUllfcGNyZTJ0ZXN0LWRvYyA9ICJwcm9ncmFtIGZvciB0ZXN0aW5nIFBlcmwtY29tYXRpYmxlIHJlZ3VsYXIgZXhwcmVzc2lvbnMgLSBkb2NzIgotCi1GSUxFU19saWJwY3JlMi0xNiA9ICIke2xpYmRpcn0vbGlicGNyZTItMTYuc28uKiIKLUZJTEVTX2xpYnBjcmUyLTMyID0gIiR7bGliZGlyfS9saWJwY3JlMi0zMi5zby4qIgotRklMRVNfcGNyZTJncmVwID0gIiR7YmluZGlyfS9wY3JlMmdyZXAiCi1GSUxFU19wY3JlMmdyZXAtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUyZ3JlcC4xIgotRklMRVNfcGNyZTJ0ZXN0ID0gIiR7YmluZGlyfS9wY3JlMnRlc3QiCi1GSUxFU19wY3JlMnRlc3QtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmUydGVzdC4xIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMzQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZTJfMTAuMzQuYmIKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uZmE4NjU1ZQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlMl8xMC4zNC5iYgpAQCAtMCwwICsxLDYxIEBACitERVNDUklQVElPTiA9ICJUaGVyZSBhcmUgdHdvIG1ham9yIHZlcnNpb25zIG9mIHRoZSBQQ1JFIGxpYnJhcnkuIFRoZSBcCituZXdlc3QgdmVyc2lvbiBpcyBQQ1JFMiwgd2hpY2ggaXMgYSByZS13b3JraW5nIG9mIHRoZSBvcmlnaW5hbCBQQ1JFIFwKK2xpYnJhcnkgdG8gcHJvdmlkZSBhbiBlbnRpcmVseSBuZXcgQVBJLiBUaGUgb3JpZ2luYWwsIHZlcnkgd2lkZWx5IFwKK2RlcGxveWVkIFBDUkUgbGlicmFyeSdzIEFQSSBhbmQgZmVhdHVyZSBhcmUgc3RhYmxlLCBmdXR1cmUgcmVsZWFzZXMgXAorIHdpbGwgYmUgZm9yIGJ1Z2ZpeGVzIG9ubHkuIEFsbCBuZXcgZnV0dXJlIGZlYXR1cmVzIHdpbGwgYmUgdG8gUENSRTIsIFwKK25vdCB0aGUgb3JpZ2luYWwgUENSRSA4Lnggc2VyaWVzLiIKK1NVTU1BUlkgPSAiUGVybCBDb21wYXRpYmxlIFJlZ3VsYXIgRXhwcmVzc2lvbnMgdmVyc2lvbiAyIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PWIxNTg4ZDNiYjRjYjBlMWY1YTU5N2Q5MDhmOGM1YjM3IgorCitTUkNfVVJJID0gImh0dHBzOi8vZnRwLnBjcmUub3JnL3B1Yi9wY3JlL3BjcmUyLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vcGNyZS1jcm9zcy5wYXRjaCBcCisiCisKK1NSQ19VUklbbWQ1c3VtXSA9ICJkMjgwYjYyZGVkMTNmOWNjZjJmYWMxNmVlNTI4NjM2NiIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI3NGM0NzNmZmFiYTllMTNkYjY5NTFmZDE0NmUwMTQzZmU5ODg3ODUyY2U3MzQwNmEwMzI3N2FmMWQ5Yjc5OGNhIgorCitDVkVfUFJPRFVDVCA9ICJwY3JlMiIKKworUyA9ICIke1dPUktESVJ9L3BjcmUyLSR7UFZ9IgorCitQUk9WSURFUyArPSAicGNyZTIiCitERVBFTkRTICs9ICJiemlwMiB6bGliIgorCitCSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3BjcmUyLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkCisKK0VYVFJBX09FQ09ORiA9ICJcCisgICAgLS1lbmFibGUtbmV3bGluZS1pcy1sZiBcCisgICAgLS1lbmFibGUtcmVidWlsZC1jaGFydGFibGVzIFwKKyAgICAtLXdpdGgtbGluay1zaXplPTIgXAorICAgIC0td2l0aC1tYXRjaC1saW1pdD0xMDAwMDAwMCBcCisgICAgLS1lbmFibGUtcGNyZTItMTYgXAorICAgIC0tZW5hYmxlLXBjcmUyLTMyIFwKKyIKKyMgU2V0IExJTktfU0laRSBpbiBCVUlMRF9DRkxBR1MgZ2l2ZW4gdGhhdCB0aGUgYXV0b3Rvb2xzIGJiY2xhc3MgdXNlIGl0IHRvCisjIHNldCBDRkxBR1NfRk9SX0JVSUxELCByZXF1aXJlZCBmb3IgdGhlIGxpYnBjcmUgYnVpbGQuCitCVUlMRF9DRkxBR1MgPSsgIi1ETElOS19TSVpFPTIgLUkke0J9L3NyYyIKK0NGTEFHUyArPSAiLURfUkVFTlRSQU5UIgorQ1hYRkxBR1NfYXBwZW5kX3Bvd2VycGMgPSAiIC1sc3RkYysrIgorCitleHBvcnQgQ0NMRF9GT1JfQlVJTEQgPSIke0JVSUxEX0NDTER9IgorCitQQUNLQUdFUyA9KyAibGlicGNyZTItMTYgbGlicGNyZTItMzIgcGNyZTJncmVwIHBjcmUyZ3JlcC1kb2MgcGNyZTJ0ZXN0IHBjcmUydGVzdC1kb2MiCisKK1NVTU1BUllfcGNyZTJncmVwID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyIKK1NVTU1BUllfcGNyZTJncmVwLWRvYyA9ICJncmVwIHV0aWxpdHkgdGhhdCB1c2VzIHBlcmwgNSBjb21wYXRpYmxlIHJlZ2V4ZXMgLSBkb2NzIgorU1VNTUFSWV9wY3JlMnRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgorU1VNTUFSWV9wY3JlMnRlc3QtZG9jID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyAtIGRvY3MiCisKK0ZJTEVTX2xpYnBjcmUyLTE2ID0gIiR7bGliZGlyfS9saWJwY3JlMi0xNi5zby4qIgorRklMRVNfbGlicGNyZTItMzIgPSAiJHtsaWJkaXJ9L2xpYnBjcmUyLTMyLnNvLioiCitGSUxFU19wY3JlMmdyZXAgPSAiJHtiaW5kaXJ9L3BjcmUyZ3JlcCIKK0ZJTEVTX3BjcmUyZ3JlcC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJncmVwLjEiCitGSUxFU19wY3JlMnRlc3QgPSAiJHtiaW5kaXJ9L3BjcmUydGVzdCIKK0ZJTEVTX3BjcmUydGVzdC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZTJ0ZXN0LjEiCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQzLmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCBmOWEyMmZlLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDMuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw3NiArMCwwIEBACi1ERVNDUklQVElPTiA9ICJUaGUgUENSRSBsaWJyYXJ5IGlzIGEgc2V0IG9mIGZ1bmN0aW9ucyB0aGF0IGltcGxlbWVudCByZWd1bGFyIFwKLWV4cHJlc3Npb24gcGF0dGVybiBtYXRjaGluZyB1c2luZyB0aGUgc2FtZSBzeW50YXggYW5kIHNlbWFudGljcyBhcyBQZXJsIDUuIFBDUkUgXAotaGFzIGl0cyBvd24gbmF0aXZlIEFQSSwgYXMgd2VsbCBhcyBhIHNldCBvZiB3cmFwcGVyIGZ1bmN0aW9ucyB0aGF0IGNvcnJlc3BvbmQgXAotdG8gdGhlIFBPU0lYIHJlZ3VsYXIgZXhwcmVzc2lvbiBBUEkuIgotU1VNTUFSWSA9ICJQZXJsIENvbXBhdGlibGUgUmVndWxhciBFeHByZXNzaW9ucyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cucGNyZS5vcmciCi1TRUNUSU9OID0gImRldmVsIgotTElDRU5TRSA9ICJCU0QtMy1DbGF1c2UiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTkNFO21kNT05MWJlZTU5ZDFiMzI3ZWIxNTk5YjRjNjczZTJmYjNkMSIKLVNSQ19VUkkgPSAiaHR0cHM6Ly9mdHAucGNyZS5vcmcvcHViL3BjcmUvcGNyZS0ke1BWfS50YXIuYnoyIFwKLSAgICAgICAgICAgZmlsZTovL2ZpeC1wY3JlLW5hbWUtY29sbGlzaW9uLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL291dC1vZi10cmVlLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3J1bi1wdGVzdCBcCi0gICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZSBcCi0iCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI2MzYyMjJlNzllMzkyYzNkOTVkY2M1NDVmMjRmOThjNCIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI5MWU3NjI1MjAwMDMwMTM4MzRhYzFhZGI0YTkzOGQ1M2IyMmEyMTYzNDFjMDYxYjBjZjA1NjAzYjI5MGZhZjZiIgotCi1DVkVfUFJPRFVDVCA9ICJwY3JlIgotCi1TID0gIiR7V09SS0RJUn0vcGNyZS0ke1BWfSIKLQotUFJPVklERVMgKz0gInBjcmUiCi1ERVBFTkRTICs9ICJiemlwMiB6bGliIgotCi1QQUNLQUdFQ09ORklHID8/PSAicGNyZTggdW5pY29kZS1wcm9wZXJ0aWVzIGppdCIKLQotUEFDS0FHRUNPTkZJR1twY3JlOF0gPSAiLS1lbmFibGUtcGNyZTgsLS1kaXNhYmxlLXBjcmU4IgotUEFDS0FHRUNPTkZJR1twY3JlMTZdID0gIi0tZW5hYmxlLXBjcmUxNiwtLWRpc2FibGUtcGNyZTE2IgotUEFDS0FHRUNPTkZJR1twY3JlMzJdID0gIi0tZW5hYmxlLXBjcmUzMiwtLWRpc2FibGUtcGNyZTMyIgotUEFDS0FHRUNPTkZJR1twY3JldGVzdC1yZWFkbGluZV0gPSAiLS1lbmFibGUtcGNyZXRlc3QtbGlicmVhZGxpbmUsLS1kaXNhYmxlLXBjcmV0ZXN0LWxpYnJlYWRsaW5lLHJlYWRsaW5lLCIKLVBBQ0tBR0VDT05GSUdbdW5pY29kZS1wcm9wZXJ0aWVzXSA9ICItLWVuYWJsZS11bmljb2RlLXByb3BlcnRpZXMsLS1kaXNhYmxlLXVuaWNvZGUtcHJvcGVydGllcyIKLVBBQ0tBR0VDT05GSUdbaml0XSA9ICItLWVuYWJsZS1qaXQ9YXV0bywtLWRpc2FibGUtaml0IgotCi1CSU5DT05GSUcgPSAiJHtiaW5kaXJ9L3BjcmUtY29uZmlnIgotCi1pbmhlcml0IGF1dG90b29scyBiaW5jb25maWctZGlzYWJsZWQgcHRlc3QKLQotRVhUUkFfT0VDT05GID0gIi0tZW5hYmxlLXV0ZiIKLQotUEFDS0FHRVMgPSsgImxpYnBjcmVjcHAgbGlicGNyZXBvc2l4IHBjcmVncmVwIHBjcmVncmVwLWRvYyBwY3JldGVzdCBwY3JldGVzdC1kb2MiCi0KLVNVTU1BUllfbGlicGNyZWNwcCA9ICIke1NVTU1BUll9IC0gQysrIHdyYXBwZXIgZnVuY3Rpb25zIgotU1VNTUFSWV9saWJwY3JlcG9zaXggPSAiJHtTVU1NQVJZfSAtIEMgd3JhcHBlciBmdW5jdGlvbnMgYmFzZWQgb24gdGhlIFBPU0lYIHJlZ2V4IEFQSSIKLVNVTU1BUllfcGNyZWdyZXAgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIgotU1VNTUFSWV9wY3JlZ3JlcC1kb2MgPSAiZ3JlcCB1dGlsaXR5IHRoYXQgdXNlcyBwZXJsIDUgY29tcGF0aWJsZSByZWdleGVzIC0gZG9jcyIKLVNVTU1BUllfcGNyZXRlc3QgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIgotU1VNTUFSWV9wY3JldGVzdC1kb2MgPSAicHJvZ3JhbSBmb3IgdGVzdGluZyBQZXJsLWNvbWF0aWJsZSByZWd1bGFyIGV4cHJlc3Npb25zIC0gZG9jcyIKLQotRklMRVNfbGlicGNyZWNwcCA9ICIke2xpYmRpcn0vbGlicGNyZWNwcC5zby4qIgotRklMRVNfbGlicGNyZXBvc2l4ID0gIiR7bGliZGlyfS9saWJwY3JlcG9zaXguc28uKiIKLUZJTEVTX3BjcmVncmVwID0gIiR7YmluZGlyfS9wY3JlZ3JlcCIKLUZJTEVTX3BjcmVncmVwLWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JlZ3JlcC4xIgotRklMRVNfcGNyZXRlc3QgPSAiJHtiaW5kaXJ9L3BjcmV0ZXN0IgotRklMRVNfcGNyZXRlc3QtZG9jID0gIiR7bWFuZGlyfS9tYW4xL3BjcmV0ZXN0LjEiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKLQotZG9faW5zdGFsbF9wdGVzdCgpIHsKLQl0PSR7RH0ke1BURVNUX1BBVEh9Ci0JY3AgJHtXT1JLRElSfS9NYWtlZmlsZSAkdAotCWNwIC1yICR7U30vdGVzdGRhdGEgJHQKLQlmb3IgaSBpbiBwY3JlX3N0cmluZ3BpZWNlX3VuaXR0ZXN0IHBjcmVncmVwIHBjcmV0ZXN0OyBcCi0JICBkbyBjcCAke0J9Ly5saWJzLyRpICR0OyBcCi0JZG9uZQotCWZvciBpIGluIFJ1blRlc3QgUnVuR3JlcFRlc3QgdGVzdC1kcml2ZXI7IFwKLQkgIGRvIGNwICR7U30vJGkgJHQ7IFwKLQlkb25lCi0JIyBTa2lwIHRoZSBmcl9GUiBsb2NhbGUgdGVzdC4gSWYgdGhlIGxvY2FsZSBmcl9GUiBpcyBmb3VuZCwgaXQgaXMgdGVzdGVkLgotCSMgSWYgbm90IGZvdW5kLCB0aGUgdGVzdCBpcyBza2lwcGVkLiBUaGUgdGVzdCBwcm9ncmFtIGFzc3VtZXMgZnJfRlIgaXMgbm9uLVVURi04Ci0JIyBsb2NhbGUgc28gdGhlIHRlc3QgZmFpbHMgaWYgZnJfRlIgaXMgVVRGLTggbG9jYWxlLgotCXNlZCAtaSAtZSAnczpkbzM9eWVzOmRvMz1ubzpnJyAke0R9JHtQVEVTVF9QQVRIfS9SdW5UZXN0IAotfQotCi1SREVQRU5EU18ke1BOfS1wdGVzdCArPSAibWFrZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlicGNyZS9saWJwY3JlXzguNDQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQ0LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmU1NDcxZTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnBjcmUvbGlicGNyZV84LjQ0LmJiCkBAIC0wLDAgKzEsNzUgQEAKK0RFU0NSSVBUSU9OID0gIlRoZSBQQ1JFIGxpYnJhcnkgaXMgYSBzZXQgb2YgZnVuY3Rpb25zIHRoYXQgaW1wbGVtZW50IHJlZ3VsYXIgXAorZXhwcmVzc2lvbiBwYXR0ZXJuIG1hdGNoaW5nIHVzaW5nIHRoZSBzYW1lIHN5bnRheCBhbmQgc2VtYW50aWNzIGFzIFBlcmwgNS4gUENSRSBcCitoYXMgaXRzIG93biBuYXRpdmUgQVBJLCBhcyB3ZWxsIGFzIGEgc2V0IG9mIHdyYXBwZXIgZnVuY3Rpb25zIHRoYXQgY29ycmVzcG9uZCBcCit0byB0aGUgUE9TSVggcmVndWxhciBleHByZXNzaW9uIEFQSS4iCitTVU1NQVJZID0gIlBlcmwgQ29tcGF0aWJsZSBSZWd1bGFyIEV4cHJlc3Npb25zIgorSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5wY3JlLm9yZyIKK1NFQ1RJT04gPSAiZGV2ZWwiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOQ0U7bWQ1PTNiYjM4MWE2NmE1Mzg1YjI0NmQ0ODc3OTIyZTc1MTFlIgorU1JDX1VSSSA9ICJodHRwczovL2Z0cC5wY3JlLm9yZy9wdWIvcGNyZS9wY3JlLSR7UFZ9LnRhci5iejIgXAorICAgICAgICAgICBmaWxlOi8vZml4LXBjcmUtbmFtZS1jb2xsaXNpb24ucGF0Y2ggXAorICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKKyAgICAgICAgICAgZmlsZTovL01ha2VmaWxlIFwKKyAgICAgICAgICAgIgorCitTUkNfVVJJW21kNXN1bV0gPSAiY2Y3MzI2MjA0Y2M0NmM3NTViNWIyNjA4MDMzZDlkMjQiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMTkxMDg2NThiMjNiM2VjNTA1OGVkYzlmNjZhYzU0NWVhMTlmOTUzNzIzNGJlMWVjNjJiNzE0Yzg0Mzk5MzY2ZCIKKworQ1ZFX1BST0RVQ1QgPSAicGNyZSIKKworUyA9ICIke1dPUktESVJ9L3BjcmUtJHtQVn0iCisKK1BST1ZJREVTICs9ICJwY3JlIgorREVQRU5EUyArPSAiYnppcDIgemxpYiIKKworUEFDS0FHRUNPTkZJRyA/Pz0gInBjcmU4IHVuaWNvZGUtcHJvcGVydGllcyBqaXQiCisKK1BBQ0tBR0VDT05GSUdbcGNyZThdID0gIi0tZW5hYmxlLXBjcmU4LC0tZGlzYWJsZS1wY3JlOCIKK1BBQ0tBR0VDT05GSUdbcGNyZTE2XSA9ICItLWVuYWJsZS1wY3JlMTYsLS1kaXNhYmxlLXBjcmUxNiIKK1BBQ0tBR0VDT05GSUdbcGNyZTMyXSA9ICItLWVuYWJsZS1wY3JlMzIsLS1kaXNhYmxlLXBjcmUzMiIKK1BBQ0tBR0VDT05GSUdbcGNyZXRlc3QtcmVhZGxpbmVdID0gIi0tZW5hYmxlLXBjcmV0ZXN0LWxpYnJlYWRsaW5lLC0tZGlzYWJsZS1wY3JldGVzdC1saWJyZWFkbGluZSxyZWFkbGluZSwiCitQQUNLQUdFQ09ORklHW3VuaWNvZGUtcHJvcGVydGllc10gPSAiLS1lbmFibGUtdW5pY29kZS1wcm9wZXJ0aWVzLC0tZGlzYWJsZS11bmljb2RlLXByb3BlcnRpZXMiCitQQUNLQUdFQ09ORklHW2ppdF0gPSAiLS1lbmFibGUtaml0PWF1dG8sLS1kaXNhYmxlLWppdCIKKworQklOQ09ORklHID0gIiR7YmluZGlyfS9wY3JlLWNvbmZpZyIKKworaW5oZXJpdCBhdXRvdG9vbHMgYmluY29uZmlnLWRpc2FibGVkIHB0ZXN0CisKK0VYVFJBX09FQ09ORiA9ICItLWVuYWJsZS11dGYiCisKK1BBQ0tBR0VTID0rICJsaWJwY3JlY3BwIGxpYnBjcmVwb3NpeCBwY3JlZ3JlcCBwY3JlZ3JlcC1kb2MgcGNyZXRlc3QgcGNyZXRlc3QtZG9jIgorCitTVU1NQVJZX2xpYnBjcmVjcHAgPSAiJHtTVU1NQVJZfSAtIEMrKyB3cmFwcGVyIGZ1bmN0aW9ucyIKK1NVTU1BUllfbGlicGNyZXBvc2l4ID0gIiR7U1VNTUFSWX0gLSBDIHdyYXBwZXIgZnVuY3Rpb25zIGJhc2VkIG9uIHRoZSBQT1NJWCByZWdleCBBUEkiCitTVU1NQVJZX3BjcmVncmVwID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyIKK1NVTU1BUllfcGNyZWdyZXAtZG9jID0gImdyZXAgdXRpbGl0eSB0aGF0IHVzZXMgcGVybCA1IGNvbXBhdGlibGUgcmVnZXhlcyAtIGRvY3MiCitTVU1NQVJZX3BjcmV0ZXN0ID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyIKK1NVTU1BUllfcGNyZXRlc3QtZG9jID0gInByb2dyYW0gZm9yIHRlc3RpbmcgUGVybC1jb21hdGlibGUgcmVndWxhciBleHByZXNzaW9ucyAtIGRvY3MiCisKK0ZJTEVTX2xpYnBjcmVjcHAgPSAiJHtsaWJkaXJ9L2xpYnBjcmVjcHAuc28uKiIKK0ZJTEVTX2xpYnBjcmVwb3NpeCA9ICIke2xpYmRpcn0vbGlicGNyZXBvc2l4LnNvLioiCitGSUxFU19wY3JlZ3JlcCA9ICIke2JpbmRpcn0vcGNyZWdyZXAiCitGSUxFU19wY3JlZ3JlcC1kb2MgPSAiJHttYW5kaXJ9L21hbjEvcGNyZWdyZXAuMSIKK0ZJTEVTX3BjcmV0ZXN0ID0gIiR7YmluZGlyfS9wY3JldGVzdCIKK0ZJTEVTX3BjcmV0ZXN0LWRvYyA9ICIke21hbmRpcn0vbWFuMS9wY3JldGVzdC4xIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK2RvX2luc3RhbGxfcHRlc3QoKSB7CisJdD0ke0R9JHtQVEVTVF9QQVRIfQorCWNwICR7V09SS0RJUn0vTWFrZWZpbGUgJHQKKwljcCAtciAke1N9L3Rlc3RkYXRhICR0CisJZm9yIGkgaW4gcGNyZV9zdHJpbmdwaWVjZV91bml0dGVzdCBwY3JlZ3JlcCBwY3JldGVzdDsgXAorCSAgZG8gY3AgJHtCfS8ubGlicy8kaSAkdDsgXAorCWRvbmUKKwlmb3IgaSBpbiBSdW5UZXN0IFJ1bkdyZXBUZXN0IHRlc3QtZHJpdmVyOyBcCisJICBkbyBjcCAke1N9LyRpICR0OyBcCisJZG9uZQorCSMgU2tpcCB0aGUgZnJfRlIgbG9jYWxlIHRlc3QuIElmIHRoZSBsb2NhbGUgZnJfRlIgaXMgZm91bmQsIGl0IGlzIHRlc3RlZC4KKwkjIElmIG5vdCBmb3VuZCwgdGhlIHRlc3QgaXMgc2tpcHBlZC4gVGhlIHRlc3QgcHJvZ3JhbSBhc3N1bWVzIGZyX0ZSIGlzIG5vbi1VVEYtOAorCSMgbG9jYWxlIHNvIHRoZSB0ZXN0IGZhaWxzIGlmIGZyX0ZSIGlzIFVURi04IGxvY2FsZS4KKwlzZWQgLWkgLWUgJ3M6ZG8zPXllczpkbzM9bm86ZycgJHtEfSR7UFRFU1RfUEFUSH0vUnVuVGVzdCAKK30KKworUkRFUEVORFNfJHtQTn0tcHRlc3QgKz0gIm1ha2UiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjQvMDAwMS1Eby1ub3QtZW5mb3JjZS1uby1pbnRyb3NwZWN0aW9uLXdoZW4tY3Jvc3MtYnVpbGRpbmcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjQvMDAwMS1Eby1ub3QtZW5mb3JjZS1uby1pbnRyb3NwZWN0aW9uLXdoZW4tY3Jvc3MtYnVpbGRpbmcucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGQ1MzQ0NTcuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJzb3VwL2xpYnNvdXAtMi40LzAwMDEtRG8tbm90LWVuZm9yY2Utbm8taW50cm9zcGVjdGlvbi13aGVuLWNyb3NzLWJ1aWxkaW5nLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMjggKzAsMCBAQAotRnJvbSA4NWY3Yjc0ZmM2MDIyMTQyOTc5MjhhZmUwOTM0N2MzMWQ2OTYxNzNkIE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogQWxleGFuZGVyIEthbmF2aW4gPGFsZXgua2FuYXZpbkBnbWFpbC5jb20+Ci1EYXRlOiBGcmksIDE1IEZlYiAyMDE5IDE0OjIxOjA2ICswMTAwCi1TdWJqZWN0OiBbUEFUQ0hdIERvIG5vdCBlbmZvcmNlIG5vLWludHJvc3BlY3Rpb24gd2hlbiBjcm9zcy1idWlsZGluZwotCi1VcHN0cmVhbS1TdGF0dXM6IEJhY2twb3J0IFtodHRwczovL2dpdGxhYi5nbm9tZS5vcmcvR05PTUUvbGlic291cC9jb21taXQvN2VmNWVjNjBjMzNlMjU0YmNkOTE1OTM2YmVhM2YwNGJhMGZlMjI3M10KLVNpZ25lZC1vZmYtYnk6IEFsZXhhbmRlciBLYW5hdmluIDxhbGV4LmthbmF2aW5AZ21haWwuY29tPgotU2lnbmVkLW9mZi1ieTogQWxpc3RhaXIgRnJhbmNpcyA8YWxpc3RhaXJAYWxpc3RhaXIyMy5tZT4KLS0tLQotIG1lc29uLmJ1aWxkIHwgMiArLQotIDEgZmlsZSBjaGFuZ2VkLCAxIGluc2VydGlvbigrKSwgMSBkZWxldGlvbigtKQotCi1kaWZmIC0tZ2l0IGEvbWVzb24uYnVpbGQgYi9tZXNvbi5idWlsZAotaW5kZXggMjU4ODdmOS4uNjI2MWE3YyAxMDA2NDQKLS0tLSBhL21lc29uLmJ1aWxkCi0rKysgYi9tZXNvbi5idWlsZAotQEAgLTI4MSw3ICsyODEsNyBAQCBlbmFibGVfZ25vbWUgPSBnZXRfb3B0aW9uKCdnbm9tZScpIGFuZCBob3N0X21hY2hpbmUuc3lzdGVtKCkgIT0gJ3dpbmRvd3MnCi0gIyBGSVhNRTogb25jZSB3ZSBzdGFydCB0byByZXF1aXJlIG1lc29uIDAuNDkuMCsgYW5kIGdub21lLWludHJvc3BlY3Rpb24gMS41OC4xKwotICMgdGhlIHdlIGNhbiBlbmFibGUgdGhlIGludHJvc3BlY3Rpb24gZXZlbiBmb3IgdGhlIHN0YXRpYyBidWlsZC4gU2VlCi0gIyBodHRwczovL2dpdGh1Yi5jb20vbWVzb25idWlsZC9tZXNvbi9wdWxsLzQ0NzguCi0tZW5hYmxlX2ludHJvc3BlY3Rpb24gPSBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykgYW5kIGZpbmRfcHJvZ3JhbSgnZy1pci1zY2FubmVyJywgcmVxdWlyZWQ6IGZhbHNlKS5mb3VuZCgpIGFuZCBub3QgbWVzb24uaXNfY3Jvc3NfYnVpbGQoKSBhbmQgbm90IGlzX3N0YXRpY19saWJyYXJ5Ci0rZW5hYmxlX2ludHJvc3BlY3Rpb24gPSBnZXRfb3B0aW9uKCdpbnRyb3NwZWN0aW9uJykgYW5kIGZpbmRfcHJvZ3JhbSgnZy1pci1zY2FubmVyJywgcmVxdWlyZWQ6IGZhbHNlKS5mb3VuZCgpIGFuZCBub3QgaXNfc3RhdGljX2xpYnJhcnkKLSAKLSAjIyMjIyMjIyMjIyMKLSAjIFZhbGEgQVBJICMKLS0tIAotMi4yMC4xCi0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjY2LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42Ni40LmJiCmRlbGV0ZWQgZmlsZSBtb2RlIDEwMDY0NAppbmRleCA3ZjVmOTEwLi4wMDAwMDAwCi0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjY2LjQuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0MiArMCwwIEBACi1TVU1NQVJZID0gIkFuIEhUVFAgbGlicmFyeSBpbXBsZW1lbnRhdGlvbiBpbiBDIgotSE9NRVBBR0UgPSAiaHR0cHM6Ly93aWtpLmdub21lLm9yZy9Qcm9qZWN0cy9saWJzb3VwIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy8iCi1TRUNUSU9OID0gIngxMS9nbm9tZS9saWJzIgotTElDRU5TRSA9ICJMR1BMdjIiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9DT1BZSU5HO21kNT01ZjMwZjA3MTZkZmRkMGQ5MWViNDM5ZWJlYzUyMmVjMiIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBnbGliLTIuMC1uYXRpdmUgbGlieG1sMiBzcWxpdGUzIGludGx0b29sLW5hdGl2ZSBsaWJwc2wiCi0KLVNIUlRfVkVSID0gIiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19LiR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMV19IgotCi1TUkNfVVJJID0gIiR7R05PTUVfTUlSUk9SfS9saWJzb3VwLyR7U0hSVF9WRVJ9L2xpYnNvdXAtJHtQVn0udGFyLnh6IFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtRG8tbm90LWVuZm9yY2Utbm8taW50cm9zcGVjdGlvbi13aGVuLWNyb3NzLWJ1aWxkaW5nLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVttZDVzdW1dID0gIjQyMDE2ZDgwZWNhZTRjZjhlYjQxNjYzMTA0OWEyNzNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjgzMDg5ODRmMWVlZTFjNGY4YzExM2E5YzE3NjNiMmIyMmQ5ODFiZDgxMWIwY2M4MmE5ZjNmMWFhNjMyMjg3NzkiCi0KLUNWRV9QUk9EVUNUID0gImxpYnNvdXAiCi0KLVMgPSAiJHtXT1JLRElSfS9saWJzb3VwLSR7UFZ9IgotCi1pbmhlcml0IG1lc29uIGdldHRleHQgcGtnY29uZmlnIHVwc3RyZWFtLXZlcnNpb24taXMtZXZlbiBnb2JqZWN0LWludHJvc3BlY3Rpb24gZ3RrLWRvYwotCi0jIGxpYnNvdXAtZ25vbWUgaXMgZW50aXJlbHkgZGVwcmVjYXRlZCBhbmQganVzdCBzdHVicyBpbiAyLjQyIG9ud2FyZHMuIERpc2FibGUgYnkgZGVmYXVsdC4KLVBBQ0tBR0VDT05GSUcgPz89ICIiCi1QQUNLQUdFQ09ORklHW2dub21lXSA9ICItRGdub21lPXRydWUsLURnbm9tZT1mYWxzZSIKLVBBQ0tBR0VDT05GSUdbZ3NzYXBpXSA9ICItRGdzc2FwaT10cnVlLC1EZ3NzYXBpPWZhbHNlLGtyYjUiCi0KLUVYVFJBX09FTUVTT05fYXBwZW5kID0gIiAtRHZhcGk9ZmFsc2UiCi0KLUdUS0RPQ19NRVNPTl9PUFRJT04gPSAiZ3RrX2RvYyIKLQotIyBXaGVuIGJ1aWx0IHdpdGhvdXQgZ25vbWUgc3VwcG9ydCwgbGlic291cC0yLjQgd2lsbCBjb250YWluIG9ubHkgb25lIHNoYXJlZCBsaWIKLSMgYW5kIHdpbGwgdGhlcmVmb3JlIGJlY29tZSBzdWJqZWN0IHRvIHJlbmFtaW5nIGJ5IGRlYmlhbi5iYmNsYXNzLiBQcmV2ZW50Ci0jIHJlbmFtaW5nIGluIG9yZGVyIHRvIGtlZXAgdGhlIHBhY2thZ2UgbmFtZSBjb25zaXN0ZW50IHJlZ2FyZGxlc3Mgb2Ygd2hldGhlcgotIyBnbm9tZSBzdXBwb3J0IGlzIGVuYWJsZWQgb3IgZGlzYWJsZWQuCi1ERUJJQU5fTk9BVVRPTkFNRV8ke1BOfSA9ICIxIgotCi0jIGdsaWItbmV0d29ya2luZyBpcyBuZWVkZWQgZm9yIFNTTCwgcHJveGllcywgZXRjLgotUlJFQ09NTUVORFNfJHtQTn0gPSAiZ2xpYi1uZXR3b3JraW5nIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlic291cC9saWJzb3VwLTIuNF8yLjY4LjQuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42OC40LmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjY3MzFiMzMKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnNvdXAvbGlic291cC0yLjRfMi42OC40LmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiQW4gSFRUUCBsaWJyYXJ5IGltcGxlbWVudGF0aW9uIGluIEMiCitIT01FUEFHRSA9ICJodHRwczovL3dpa2kuZ25vbWUub3JnL1Byb2plY3RzL2xpYnNvdXAiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnLyIKK1NFQ1RJT04gPSAieDExL2dub21lL2xpYnMiCitMSUNFTlNFID0gIkxHUEx2MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTVmMzBmMDcxNmRmZGQwZDkxZWI0MzllYmVjNTIyZWMyIgorCitERVBFTkRTID0gImdsaWItMi4wIGdsaWItMi4wLW5hdGl2ZSBsaWJ4bWwyIHNxbGl0ZTMgaW50bHRvb2wtbmF0aXZlIGxpYnBzbCIKKworU0hSVF9WRVIgPSAiJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVswXX0uJHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVsxXX0iCisKK1NSQ19VUkkgPSAiJHtHTk9NRV9NSVJST1J9L2xpYnNvdXAvJHtTSFJUX1ZFUn0vbGlic291cC0ke1BWfS50YXIueHoiCitTUkNfVVJJW21kNXN1bV0gPSAiNjAzZjNhOTQ1Y2Q2ZWNjMWZkYTY0NGQ3ODUzYjNiODEiCitTUkNfVVJJW3NoYTI1NnN1bV0gPSAiMmQ1MGIxMjkyMmNjNTE2YWI2YTdjMzU4NDRkNDJmOWM4YTMzMTY2OGJiZGYxMzkyMzI3NDNkODI1ODJiMzI5NCIKKworQ1ZFX1BST0RVQ1QgPSAibGlic291cCIKKworUyA9ICIke1dPUktESVJ9L2xpYnNvdXAtJHtQVn0iCisKK2luaGVyaXQgbWVzb24gZ2V0dGV4dCBwa2djb25maWcgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbiBndGstZG9jCisKK0dJUl9NRVNPTl9FTkFCTEVfRkxBRyA9ICdlbmFibGVkJworR0lSX01FU09OX0RJU0FCTEVfRkxBRyA9ICdkaXNhYmxlZCcKKworIyBsaWJzb3VwLWdub21lIGlzIGVudGlyZWx5IGRlcHJlY2F0ZWQgYW5kIGp1c3Qgc3R1YnMgaW4gMi40MiBvbndhcmRzLiBEaXNhYmxlIGJ5IGRlZmF1bHQuCitQQUNLQUdFQ09ORklHID8/PSAiIgorUEFDS0FHRUNPTkZJR1tnbm9tZV0gPSAiLURnbm9tZT10cnVlLC1EZ25vbWU9ZmFsc2UiCitQQUNLQUdFQ09ORklHW2dzc2FwaV0gPSAiLURnc3NhcGk9ZW5hYmxlZCwtRGdzc2FwaT1kaXNhYmxlZCxrcmI1IgorCitFWFRSQV9PRU1FU09OX2FwcGVuZCA9ICIgLUR2YXBpPWRpc2FibGVkIC1EdGxzX2NoZWNrPWZhbHNlIgorCitHVEtET0NfTUVTT05fT1BUSU9OID0gImd0a19kb2MiCisKKyMgV2hlbiBidWlsdCB3aXRob3V0IGdub21lIHN1cHBvcnQsIGxpYnNvdXAtMi40IHdpbGwgY29udGFpbiBvbmx5IG9uZSBzaGFyZWQgbGliCisjIGFuZCB3aWxsIHRoZXJlZm9yZSBiZWNvbWUgc3ViamVjdCB0byByZW5hbWluZyBieSBkZWJpYW4uYmJjbGFzcy4gUHJldmVudAorIyByZW5hbWluZyBpbiBvcmRlciB0byBrZWVwIHRoZSBwYWNrYWdlIG5hbWUgY29uc2lzdGVudCByZWdhcmRsZXNzIG9mIHdoZXRoZXIKKyMgZ25vbWUgc3VwcG9ydCBpcyBlbmFibGVkIG9yIGRpc2FibGVkLgorREVCSUFOX05PQVVUT05BTUVfJHtQTn0gPSAiMSIKKworIyBnbGliLW5ldHdvcmtpbmcgaXMgbmVlZGVkIGZvciBTU0wsIHByb3hpZXMsIGV0Yy4KK1JSRUNPTU1FTkRTXyR7UE59ID0gImdsaWItbmV0d29ya2luZyIKKworQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjExLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjExLjEuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDZhNTE3ZTYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMS4xLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMjIgKzAsMCBAQAotU1VNTUFSWSA9ICJVc2Vyc3BhY2UgUkNVIChyZWFkLWNvcHktdXBkYXRlKSBsaWJyYXJ5IgotSE9NRVBBR0UgPSAiaHR0cDovL2x0dG5nLm9yZy91cmN1IgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vbHR0bmcub3JnL3Byb2plY3QvaXNzdWVzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyAmIE1JVC1zdHlsZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU1NDhkMjg3MzcyODlkNzVhOGYxZTAxYmEyZmQ3ODI1IFwKLSAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdXJjdS91cmN1Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0zMjttZDU9NGRlMGQ2OGQzYTk5NzY0MzcxNTAzNmQyMjA5YWUxZDkgXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS91cmN1L3VhdG9taWMveDg2Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0yMTttZDU9NThlNTBiYmQ4YTJmMDczYmI1NTAwZTY1NTRhZjBkMGIiCi0KLVNSQ19VUkkgPSAiaHR0cDovL2x0dG5nLm9yZy9maWxlcy91cmN1L3VzZXJzcGFjZS1yY3UtJHtQVn0udGFyLmJ6MiIKLQotU1JDX1VSSVttZDVzdW1dID0gIjkxYzc1ZDU5MDIxMjdmOTRhYjU1NmNlMDM5YjM2OWNhIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjkyYjk5NzFiZjNmMWM0NDNlZGQ2YzA5ZTdiZjVmZjNiNDM1MzFlNzc4ODQxZjE2Mzc3YTgxMmM4ZmVlYjMzNTAiCi0KLVMgPSAiJHtXT1JLRElSfS91c2Vyc3BhY2UtcmN1LSR7UFZ9IgotaW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyCi0KLUNQUEZMQUdTX2FwcGVuZF9yaXNjdjY0ICA9ICIgLXB0aHJlYWQgLURfUkVFTlRSQU5UIgotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBvZV9tdWx0aWxpYl9oZWFkZXIgdXJjdS9jb25maWcuaAotfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMi4wLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1cmN1L2xpYnVyY3VfMC4xMi4wLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjBjMjBhYmUKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVyY3UvbGlidXJjdV8wLjEyLjAuYmIKQEAgLTAsMCArMSwyMiBAQAorU1VNTUFSWSA9ICJVc2Vyc3BhY2UgUkNVIChyZWFkLWNvcHktdXBkYXRlKSBsaWJyYXJ5IgorSE9NRVBBR0UgPSAiaHR0cDovL2x0dG5nLm9yZy91cmN1IgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vbHR0bmcub3JnL3Byb2plY3QvaXNzdWVzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyAmIE1JVC1zdHlsZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0xJQ0VOU0U7bWQ1PWU1NDhkMjg3MzcyODlkNzVhOGYxZTAxYmEyZmQ3ODI1IFwKKyAgICAgICAgICAgICAgICAgICAgZmlsZTovL2luY2x1ZGUvdXJjdS91cmN1Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0zMjttZDU9NGRlMGQ2OGQzYTk5NzY0MzcxNTAzNmQyMjA5YWUxZDkgXAorICAgICAgICAgICAgICAgICAgICBmaWxlOi8vaW5jbHVkZS91cmN1L3VhdG9taWMveDg2Lmg7YmVnaW5saW5lPTQ7ZW5kbGluZT0yMTttZDU9NThlNTBiYmQ4YTJmMDczYmI1NTAwZTY1NTRhZjBkMGIiCisKK1NSQ19VUkkgPSAiaHR0cDovL2x0dG5nLm9yZy9maWxlcy91cmN1L3VzZXJzcGFjZS1yY3UtJHtQVn0udGFyLmJ6MiIKKworU1JDX1VSSVttZDVzdW1dID0gImQ5MjNhNDJjZTM4ZTMzZTg4MzMxMzAwM2M4YWZkNTU5IgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjQwOWIxYmU1MDY5ODllMWQyNjU0MzE5NGRmMWE3OTIxMmJlOTkwZmU1ZDRmZDg0ZjM0ZjAxOWVmZWQ5ODlmOTciCisKK1MgPSAiJHtXT1JLRElSfS91c2Vyc3BhY2UtcmN1LSR7UFZ9IgoraW5oZXJpdCBhdXRvdG9vbHMgbXVsdGlsaWJfaGVhZGVyCisKK0NQUEZMQUdTX2FwcGVuZF9yaXNjdjY0ICA9ICIgLXB0aHJlYWQgLURfUkVFTlRSQU5UIgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKyAgICBvZV9tdWx0aWxpYl9oZWFkZXIgdXJjdS9jb25maWcuaAorfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMS9uby1kbGwucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxL25vLWRsbC5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggNmU2YmI4My4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxL25vLWRsbC5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDE5ICswLDAgQEAKLUFzIGFsbCBpbnZva2VzIGFsbC1yZWN1cnNpdmUgd2hpY2ggdXNlcyBzdWItbWFrZXMgdG8gaW52b2tlIGFsbC1hbSwgdGhlCi1yZXN1bHRpbmcgbWFrZWZpbGUgd2FudHMgdG8gYnVpbGQgbGlidXNiLTEuMC5sYSB0d2ljZS4gSW4gbm9uLXBhcmFsbGVsIGJ1aWxkcwotdGhlIHNlY29uZCBhdHRlbXB0IGlzIHNraXBwZWQgYXMgdGhlIHRhcmdldCBhbHJlYWR5IGV4aXN0cywgYnV0IGluIGhpZ2hseQotcGFyYWxsZWwgYnVpbGRzIGl0J3MgbGlrZWx5IHRoYXQgdHdvIG1ha2VzIHdpbGwgYmUgYnVpbGRpbmcgbGlidXNiLTEuMC5sYSBhdCB0aGUKLXNhbWUgdGltZS4KLQotU29sdmUgdGhpcyBieSByZW1vdmluZyB0aGUgZXhwbGljaXQgYWxsIHRhcmdldCwgd2hpY2ggYXMgbGlidXNiLTEuMC5kbGwgaXNuJ3QKLWJ1aWx0IHVuZGVyIExpbnV4IGlzIHJlZHVuZGFudCBhbnl3YXkuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotU2lnbmVkLW9mZi1ieTogUm9zcyBCdXJ0b24gPHJvc3MuYnVydG9uQGludGVsLmNvbT4KLQotZGlmZiAtLWdpdCBhL2xpYnVzYi9NYWtlZmlsZS5hbSBiL2xpYnVzYi9NYWtlZmlsZS5hbQotaW5kZXggMGNhYjBhMC4uYzg4MDIxMyAxMDA2NDQKLS0tLSBhL2xpYnVzYi9NYWtlZmlsZS5hbQotKysrIGIvbGlidXNiL01ha2VmaWxlLmFtCi1AQCAtMSwyICswLDAgQEAKLS1hbGw6IGxpYnVzYi0xLjAubGEgbGlidXNiLTEuMC5kbGwKLS0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXNiL2xpYnVzYjFfMS4wLjIyLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMV8xLjAuMjIuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDFkOWQ3NzIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ1c2IvbGlidXNiMV8xLjAuMjIuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NSArMCwwIEBACi1TVU1NQVJZID0gIlVzZXJzcGFjZSBsaWJyYXJ5IHRvIGFjY2VzcyBVU0IgKHZlcnNpb24gMS4wKSIKLUhPTUVQQUdFID0gImh0dHA6Ly9saWJ1c2Iuc2YubmV0IgotQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3LmxpYnVzYi5vcmcvcmVwb3J0IgotU0VDVElPTiA9ICJsaWJzIgotCi1MSUNFTlNFID0gIkxHUEx2Mi4xKyIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiYzA5MzkwMTg1N2ZjZDExOGYwNjVmOTAwOTgyYzI0IgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCi0KLVNSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2xpYnVzYi9saWJ1c2ItJHtQVn0udGFyLmJ6MiBcCi0gICAgICAgICAgIGZpbGU6Ly9uby1kbGwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vcnVuLXB0ZXN0IFwKLSAgICAgICAgICAiCi0KLVNSQ19VUklbbWQ1c3VtXSA9ICI0NjYyNjc4ODlkYWVhZDQ3Njc0ZGY5MzNjZWE5Y2FjYiIKLVNSQ19VUklbc2hhMjU2c3VtXSA9ICI3NWFlYjlkNTlhNGZkYjgwMGQzMjlhNTQ1YzJlNjc5OWY3MzIzNjIxOTNiNDY1ZWExOThmMmFhMjc1NTE4MTU3IgotCi1TID0gIiR7V09SS0RJUn0vbGlidXNiLSR7UFZ9IgotCi1pbmhlcml0IGF1dG90b29scyBwa2djb25maWcgcHRlc3QKLQotUEFDS0FHRUNPTkZJR19jbGFzcy10YXJnZXQgPz89ICJ1ZGV2IgotUEFDS0FHRUNPTkZJR1t1ZGV2XSA9ICItLWVuYWJsZS11ZGV2LC0tZGlzYWJsZS11ZGV2LHVkZXYiCi0KLUVYVFJBX09FQ09ORiA9ICItLWxpYmRpcj0ke2Jhc2VfbGliZGlyfSIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0JaW5zdGFsbCAtZCAke0R9JHtsaWJkaXJ9Ci0JaWYgWyAhICR7RH0ke2xpYmRpcn0gLWVmICR7RH0ke2Jhc2VfbGliZGlyfSBdOyB0aGVuCi0JCW12ICR7RH0ke2Jhc2VfbGliZGlyfS9wa2djb25maWcgJHtEfSR7bGliZGlyfQotCWZpCi19Ci0KLWRvX2NvbXBpbGVfcHRlc3QoKSB7ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotICAgIG9lX3J1bm1ha2UgLUMgdGVzdHMgc3RyZXNzICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi19ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAotZG9faW5zdGFsbF9wdGVzdCgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCi0gICAgaW5zdGFsbCAtbSA3NTUgJHtCfS90ZXN0cy8ubGlicy9zdHJlc3MgJHtEfSR7UFRFU1RfUEFUSH0gICAgICAgICAKLX0KLQotRklMRVNfJHtQTn0gKz0gIiR7YmFzZV9saWJkaXJ9Lyouc28uKiIKLQotRklMRVNfJHtQTn0tZGV2ICs9ICIke2Jhc2VfbGliZGlyfS8qLnNvICR7YmFzZV9saWJkaXJ9LyoubGEiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxXzEuMC4yMy5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlidXNiL2xpYnVzYjFfMS4wLjIzLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjJmZDY1OGIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnVzYi9saWJ1c2IxXzEuMC4yMy5iYgpAQCAtMCwwICsxLDQ0IEBACitTVU1NQVJZID0gIlVzZXJzcGFjZSBsaWJyYXJ5IHRvIGFjY2VzcyBVU0IgKHZlcnNpb24gMS4wKSIKK0hPTUVQQUdFID0gImh0dHA6Ly9saWJ1c2Iuc2YubmV0IgorQlVHVFJBQ0tFUiA9ICJodHRwOi8vd3d3LmxpYnVzYi5vcmcvcmVwb3J0IgorU0VDVElPTiA9ICJsaWJzIgorCitMSUNFTlNFID0gIkxHUEx2Mi4xKyIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWZiYzA5MzkwMTg1N2ZjZDExOGYwNjVmOTAwOTgyYzI0IgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCisKK1NSQ19VUkkgPSAiJHtTT1VSQ0VGT1JHRV9NSVJST1J9L2xpYnVzYi9saWJ1c2ItJHtQVn0udGFyLmJ6MiBcCisgICAgICAgICAgIGZpbGU6Ly9ydW4tcHRlc3QgXAorICAgICAgICAgICIKKworU1JDX1VSSVttZDVzdW1dID0gImJlNzllZDRhNGE0NDAxNjlkZWVjOGJlYWFjNmFhZTMzIgorU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRmYzE3YjJlZjM1MDI3NTc2NDFiZjhmZTJjMTRhZDg2ZWM4NjMwMmEyYjc4NWFiY2IwODA2ZmQwM2FhMTIwMWYiCisKK1MgPSAiJHtXT1JLRElSfS9saWJ1c2ItJHtQVn0iCisKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBwdGVzdAorCitQQUNLQUdFQ09ORklHX2NsYXNzLXRhcmdldCA/Pz0gInVkZXYiCitQQUNLQUdFQ09ORklHW3VkZXZdID0gIi0tZW5hYmxlLXVkZXYsLS1kaXNhYmxlLXVkZXYsdWRldiIKKworRVhUUkFfT0VDT05GID0gIi0tbGliZGlyPSR7YmFzZV9saWJkaXJ9IgorCitkb19pbnN0YWxsX2FwcGVuZCgpIHsKKwlpbnN0YWxsIC1kICR7RH0ke2xpYmRpcn0KKwlpZiBbICEgJHtEfSR7bGliZGlyfSAtZWYgJHtEfSR7YmFzZV9saWJkaXJ9IF07IHRoZW4KKwkJbXYgJHtEfSR7YmFzZV9saWJkaXJ9L3BrZ2NvbmZpZyAke0R9JHtsaWJkaXJ9CisJZmkKK30KKworZG9fY29tcGlsZV9wdGVzdCgpIHsgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCisgICAgb2VfcnVubWFrZSAtQyB0ZXN0cyBzdHJlc3MgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKK30gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgCitkb19pbnN0YWxsX3B0ZXN0KCkgeyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAKKyAgICBpbnN0YWxsIC1tIDc1NSAke0J9L3Rlc3RzLy5saWJzL3N0cmVzcyAke0R9JHtQVEVTVF9QQVRIfSAgICAgICAgIAorfQorCitGSUxFU18ke1BOfSArPSAiJHtiYXNlX2xpYmRpcn0vKi5zby4qIgorCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7YmFzZV9saWJkaXJ9Lyouc28gJHtiYXNlX2xpYmRpcn0vKi5sYSIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4zNC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieHNsdC9saWJ4c2x0XzEuMS4zNC5iYgppbmRleCBhZDM3YjVhLi4xOTYxYmI1IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L2xpYnhzbHQvbGlieHNsdF8xLjEuMzQuYmIKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ4c2x0L2xpYnhzbHRfMS4xLjM0LmJiCkBAIC0yMCw3ICsyMCw3IEBACiAKIEJJTkNPTkZJRyA9ICIke2JpbmRpcn0veHNsdC1jb25maWciCiAKLWluaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWctZGlzYWJsZWQgbGliX3BhY2thZ2UKK2luaGVyaXQgYXV0b3Rvb2xzIHBrZ2NvbmZpZyBiaW5jb25maWctZGlzYWJsZWQgbGliX3BhY2thZ2UgbXVsdGlsaWJfaGVhZGVyCiAKIGRvX2NvbmZpZ3VyZV9wcmVwZW5kICgpIHsKIAkjIFdlIGRvbid0IERFUEVORCBvbiBiaW51dGlscyBmb3IgYW5zaWRlY2wuaCBzbyBlbnN1cmUgd2UgZG9uJ3QgdXNlIHRoZSBoZWFkZXIuCkBAIC00Myw2ICs0MywxMCBAQAogICAgIGNyZWF0ZV93cmFwcGVyICR7RH0vJHtiaW5kaXJ9L3hzbHRwcm9jIFhNTF9DQVRBTE9HX0ZJTEVTPSR7c3lzY29uZmRpcn0veG1sL2NhdGFsb2cKIH0KIAorZG9faW5zdGFsbF9hcHBlbmQgKCkgeworICAgb2VfbXVsdGlsaWJfaGVhZGVyIGxpYnhzbHQveHNsdGNvbmZpZy5oCit9CisKIEZJTEVTXyR7UE59ICs9ICIke2xpYmRpcn0vbGlieHNsdC1wbHVnaW5zIgogRklMRVNfJHtQTn0tZGV2ICs9ICIke2xpYmRpcn0veHNsdENvbmYuc2giCiAKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieWFtbC9saWJ5YW1sXzAuMi4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9saWJ5YW1sL2xpYnlhbWxfMC4yLjIuYmIKaW5kZXggZmJkMTk5MjAuLjUxMDVjZTYgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieWFtbC9saWJ5YW1sXzAuMi4yLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbGlieWFtbC9saWJ5YW1sXzAuMi4yLmJiCkBAIC0xLDEzICsxLDEzIEBACiBTVU1NQVJZID0gIkxpYllBTUwgaXMgYSBZQU1MIDEuMSBwYXJzZXIgYW5kIGVtaXR0ZXIgd3JpdHRlbiBpbiBDLiIKIERFU0NSSVBUSU9OID0gIkxpYllBTUwgaXMgYSBDIGxpYnJhcnkgZm9yIHBhcnNpbmcgYW5kIGVtaXR0aW5nIGRhdGEgaW4gWUFNTCAxLjEsIFwKIGEgaHVtYW4tcmVhZGFibGUgZGF0YSBzZXJpYWxpemF0aW9uIGZvcm1hdC4gIgotSE9NRVBBR0UgPSAiaHR0cDovL3B5eWFtbC5vcmcvd2lraS9MaWJZQU1MIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly9weXlhbWwub3JnL3dpa2kvTGliWUFNTCIKIFNFQ1RJT04gPSAibGlicy9kZXZlbCIKIAogTElDRU5TRSA9ICJNSVQiCiBMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9MSUNFTlNFO21kNT1hNzZiNGM2OWJmY2Y4MjMxM2JiZGMwMzkzYjA0NDM4YSIKIAotU1JDX1VSSSA9ICJodHRwOi8vcHl5YW1sLm9yZy9kb3dubG9hZC9saWJ5YW1sL3lhbWwtJHtQVn0udGFyLmd6IgorU1JDX1VSSSA9ICJodHRwczovL3B5eWFtbC5vcmcvZG93bmxvYWQvbGlieWFtbC95YW1sLSR7UFZ9LnRhci5neiIKIFNSQ19VUklbbWQ1c3VtXSA9ICI1NGJmMTFjY2I4YmM0ODhiNWIzYmVjOTMxZjViNzBkYyIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICI0YTkxMDBhYjYxMDQ3ZmQ5YmQzOTViY2VmM2NlNTQwMzM2NWNhZmQ1NWMxZTBkMDI5OWNkZTE0OTU4ZTQ3YmU5IgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L21wZnIvbXBmcl80LjAuMi5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzQuMC4yLmJiCmluZGV4IDAzMDU5MTcuLjAwYzJkYzIgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzQuMC4yLmJiCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbXBmci9tcGZyXzQuMC4yLmJiCkBAIC0xLDUgKzEsNSBAQAogU1VNTUFSWSA9ICJDIGxpYnJhcnkgZm9yIG11bHRpcGxlLXByZWNpc2lvbiBmbG9hdGluZy1wb2ludCBjb21wdXRhdGlvbnMgd2l0aCBleGFjdCByb3VuZGluZyIKLUhPTUVQQUdFID0gImh0dHA6Ly93d3cubXBmci5vcmcvIgorSE9NRVBBR0UgPSAiaHR0cHM6Ly93d3cubXBmci5vcmcvIgogTElDRU5TRSA9ICJMR1BMdjMrIgogU0VDVElPTiA9ICJkZXZlbCIKIApAQCAtMTAsNyArMTAsNyBAQAogICAgICAgICAgICAgICAgICAgICAiCiBERVBFTkRTID0gImdtcCBhdXRvY29uZi1hcmNoaXZlIgogCi1TUkNfVVJJID0gImh0dHA6Ly93d3cubXBmci5vcmcvbXBmci0ke1BWfS9tcGZyLSR7UFZ9LnRhci54eiIKK1NSQ19VUkkgPSAiaHR0cHM6Ly93d3cubXBmci5vcmcvbXBmci0ke1BWfS9tcGZyLSR7UFZ9LnRhci54eiIKIFNSQ19VUklbbWQ1c3VtXSA9ICIzMjBmYmM0NDYzZDRjOGNiMWU1NjY5MjlkOGFkYzRmOCIKIFNSQ19VUklbc2hhMjU2c3VtXSA9ICIxZDNiZTcwODYwNGVhZTBlNDJkNTc4YmE5M2IzOTBjMmExNDVmMTc3NDNhNzQ0ZDhmM2Y4YzJhZDU4NTVhMzhhIgogCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci8wMDAxLW1kLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci8wMDAxLW1kLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGYzY2Q2NzAuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvMDAwMS1tZC1GaXgtYnVpbGQtd2l0aC1tdXNsLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzEgKzAsMCBAQAotRnJvbSAxNDdmM2MyYWNiZDk2ZDQ0MDI1Y2VjMTE4MDBkZWQwMjgyMzI3NzY0IE1vbiBTZXAgMTcgMDA6MDA6MDAgMjAwMQotRnJvbTogS2hlbSBSYWogPHJhai5raGVtQGdtYWlsLmNvbT4KLURhdGU6IE1vbiwgMTggU2VwIDIwMTcgMTc6MjI6NDMgLTA3MDAKLVN1YmplY3Q6IFtQQVRDSF0gbWQ6IEZpeCBidWlsZCB3aXRoIG11c2wKLQotVGhlIE1JUFMgc3BlY2lmaWMgaGVhZGVyIDxzZ2lkZWZzLmg+IGlzIG5vdCBwcm92aWRlZCBieSBtdXNsCi1saW51eCBrZXJuZWwgaGVhZGVycyBwcm92aWRlIDxhc20vc2dpZGVmcy5oPiB3aGljaCBoYXMgc2FtZSBkZWZpbml0aW9ucwotCi1TaWduZWQtb2ZmLWJ5OiBLaGVtIFJhaiA8cmFqLmtoZW1AZ21haWwuY29tPgotLS0tCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotIHByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZyB8IDIgKy0KLSAxIGZpbGUgY2hhbmdlZCwgMSBpbnNlcnRpb24oKyksIDEgZGVsZXRpb24oLSkKLQotZGlmZiAtLWdpdCBhL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZyBiL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZwotaW5kZXggNjQwYjE5Yy4uMzEyOTZhOCAxMDA2NDQKLS0tLSBhL3ByL2luY2x1ZGUvbWQvX2xpbnV4LmNmZwotKysrIGIvcHIvaW5jbHVkZS9tZC9fbGludXguY2ZnCi1AQCAtNDk5LDcgKzQ5OSw3IEBACi0gI2VsaWYgZGVmaW5lZChfX21pcHNfXykKLSAKLSAvKiBGb3IgX0FCSTY0ICovCi0tI2luY2x1ZGUgPHNnaWRlZnMuaD4KLSsjaW5jbHVkZSA8YXNtL3NnaWRlZnMuaD4KLSAKLSAjaWZkZWYgX19NSVBTRUJfXwotICNkZWZpbmUgSVNfQklHX0VORElBTiAxCi0tLSAKLTIuMTQuMQotCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9uc3ByLnBjLmluIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHIvbnNwci5wYy5pbgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZDc0Y2FhYi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwci9uc3ByLnBjLmluCisrKyAvZGV2L251bGwKQEAgLTEsMTEgKzAsMCBAQAotb3NfbGlicz0tbHB0aHJlYWQgLWxkbAotcHJlZml4PU9FUFJFRklYCi1leGVjX3ByZWZpeD1PRUVYRUNQUkVGSVgKLWxpYmRpcj1PRUxJQkRJUgotaW5jbHVkZWRpcj1PRUlOQ0RJUgotCi1OYW1lOiBOU1BSCi1EZXNjcmlwdGlvbjogVGhlIE5ldHNjYXBlIFBvcnRhYmxlIFJ1bnRpbWUKLVZlcnNpb246IE5TUFJWRVJTSU9OCi1MaWJzOiAtTCR7bGliZGlyfSAtbHBsZHM0IC1scGxjNCAtbG5zcHI0IC1scHRocmVhZCAtbGRsCi1DZmxhZ3M6CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjIzLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3ByL25zcHJfNC4yMy5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOGUyNzYxYy4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcHIvbnNwcl80LjIzLmJiCisrKyAvZGV2L251bGwKQEAgLTEsMTkzICswLDAgQEAKLVNVTU1BUlkgPSAiTmV0c2NhcGUgUG9ydGFibGUgUnVudGltZSBMaWJyYXJ5IgotSE9NRVBBR0UgPSAgImh0dHA6Ly93d3cubW96aWxsYS5vcmcvcHJvamVjdHMvbnNwci8iCi1MSUNFTlNFID0gIkdQTC0yLjAgfCBNUEwtMi4wIHwgTEdQTC0yLjEiCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9jb25maWd1cmUuaW47YmVnaW5saW5lPTM7ZW5kbGluZT02O21kNT05MGMyZmRlZTM4ZTQ1ZDYzMDJhYmNmZTQ3NWM4YjVjNSBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9NYWtlZmlsZS5pbjtiZWdpbmxpbmU9NDtlbmRsaW5lPTM4O21kNT1iZWRhMWRiYjk4YTUxNWY1NTdkM2U1OGVmMDZiY2E5OSIKLVNFQ1RJT04gPSAibGlicy9uZXR3b3JrIgotCi1TUkNfVVJJID0gImh0dHA6Ly9mdHAubW96aWxsYS5vcmcvcHViL25zcHIvcmVsZWFzZXMvdiR7UFZ9L3NyYy9uc3ByLSR7UFZ9LnRhci5neiBcCi0gICAgICAgICAgIGZpbGU6Ly9yZW1vdmUtcnBhdGgtZnJvbS10ZXN0cy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9maXgtYnVpbGQtb24teDg2XzY0LnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3JlbW92ZS1zcmNkaXItZnJvbS1jb25maWd1cmUtaW4ucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vMDAwMi1BZGQtbmlvczItc3VwcG9ydC5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly8wMDAxLW1kLUZpeC1idWlsZC13aXRoLW11c2wucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vTWFrZWZpbGUuaW4tcmVtb3ZlLV9CVUlMRF9TVFJJTkctYW5kLV9CVUlMRF9USU1FLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL25zcHIucGMuaW4gXAotIgotCi1DQUNIRURfQ09ORklHVVJFVkFSU19hcHBlbmRfbGliYy1tdXNsID0gIiBDRkxBR1M9JyR7Q0ZMQUdTfSAtRF9QUl9QT0xMX0FWQUlMQUJMRSBcCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAtRF9QUl9IQVZFX09GRjY0X1QgLURfUFJfSU5FVDYgLURfUFJfSEFWRV9JTkVUX05UT1AgXAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgLURfUFJfSEFWRV9HRVRIT1NUQllOQU1FMiAtRF9QUl9IQVZFX0dFVEFERFJJTkZPIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIC1EX1BSX0lORVQ2X1BST0JFIC1ETk9fRExPUEVOX05VTEwnIgotCi1VUFNUUkVBTV9DSEVDS19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbnNwci9yZWxlYXNlcy8iCi1VUFNUUkVBTV9DSEVDS19SRUdFWCA9ICJ2KD9QPHB2ZXI+XGQrKFwuXGQrKSspLyIKLQotU1JDX1VSSVttZDVzdW1dID0gIjkwYWYwNDUwNDIzYjA1ODhmMGViYTYyNTVjMDdhYjc5IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjRiOWQ4MjEwMzdmYWY1NzIzZGE5MDE1MTVlZDljYWM4YjIzZWYxZWEzNzI5MDIyMjU5Nzc3MzkzNDUzNDc3YTQiCi0KLUNWRV9QUk9EVUNUID0gIm5ldHNjYXBlX3BvcnRhYmxlX3J1bnRpbWUiCi0KLVMgPSAiJHtXT1JLRElSfS9uc3ByLSR7UFZ9L25zcHIiCi0KLVJERVBFTkRTXyR7UE59LWRldiArPSAicGVybCIKLVRBUkdFVF9DQ19BUkNIICs9ICIke0xERkxBR1N9IgotCi1URVNUUyA9ICIgXAotICAgIGFjY2VwdCBcCi0gICAgYWNjZXB0cmVhZCBcCi0gICAgYWNjZXB0cmVhZGVtdSBcCi0gICAgYWZmaW5pdHkgXAotICAgIGFsYXJtIFwKLSAgICBhbm9uZm0gXAotICAgIGF0b21pYyBcCi0gICAgYXR0YWNoIFwKLSAgICBiaWdmaWxlIFwKLSAgICBjbGVhbnVwIFwKLSAgICBjbHRzcnYgIFwKLSAgICBjb25jdXIgXAotICAgIGN2YXIgXAotICAgIGN2YXIyIFwKLSAgICBkbGx0ZXN0IFwKLSAgICBkdG9hIFwKLSAgICBlcnJjb2RlcyBcCi0gICAgZXhpdCBcCi0gICAgZmRjYWNoIFwKLSAgICBmaWxlaW8gXAotICAgIGZvcmVpZ24gXAotICAgIGZvcm1hdHRtIFwKLSAgICBmc3luYyBcCi0gICAgZ2V0aG9zdCBcCi0gICAgZ2V0cHJvdG8gXAotICAgIGkybCBcCi0gICAgaW5pdGNsayBcCi0gICAgaW5ydmFsIFwKLSAgICBpbnN0cnVtdCBcCi0gICAgaW50cmlvIFwKLSAgICBpbnRydXB0IFwKLSAgICBpb190aW1lb3V0IFwKLSAgICBpb2NvbnRociBcCi0gICAgam9pbiBcCi0gICAgam9pbmtrIFwKLSAgICBqb2lua3UgXAotICAgIGpvaW51ayBcCi0gICAgam9pbnV1IFwKLSAgICBsYXllciBcCi0gICAgbGF6eWluaXQgXAotICAgIGxpYmZpbGVuYW1lIFwKLSAgICBsbHRlc3QgXAotICAgIGxvY2sgXAotICAgIGxvY2tmaWxlIFwKLSAgICBsb2dmaWxlIFwKLSAgICBsb2dnZXIgXAotICAgIG1hbnlfY3YgXAotICAgIG11bHRpd2FpdCBcCi0gICAgbmFtZXNobTEgXAotICAgIG5ibGF5ZXIgXAotICAgIG5vbmJsb2NrIFwKLSAgICBudGlvdG8gXAotICAgIG50b2ggXAotICAgIG9wXzJsb25nIFwKLSAgICBvcF9leGNsIFwKLSAgICBvcF9maWxuZiBcCi0gICAgb3BfZmlsb2sgXAotICAgIG9wX25vZmlsIFwKLSAgICBwYXJlbnQgXAotICAgIHBhcnNldG0gXAotICAgIHBlZWsgXAotICAgIHBlcmYgXAotICAgIHBpcGVwaW5nIFwKLSAgICBwaXBlcGluZzIgXAotICAgIHBpcGVzZWxmIFwKLSAgICBwb2xsX25tIFwKLSAgICBwb2xsX3RvIFwKLSAgICBwb2xsYWJsZSBcCi0gICAgcHJmdGVzdCBcCi0gICAgcHJpbWJsb2sgXAotICAgIHByb3ZpZGVyIFwKLSAgICBwcnBvbGxtbCBcCi0gICAgcmFuZmlsZSBcCi0gICAgcmFuZHNlZWQgXAotICAgIHJlaW5pdCBcCi0gICAgcndsb2NrdGVzdCBcCi0gICAgc2VsX3NwZCBcCi0gICAgc2VsY3RfZXIgXAotICAgIHNlbGN0X25tIFwKLSAgICBzZWxjdF90byBcCi0gICAgc2VsaW50ciBcCi0gICAgc2VtYSBcCi0gICAgc2VtYWVyciBcCi0gICAgc2VtYXBpbmcgXAotICAgIHNlbmR6bGYgXAotICAgIHNlcnZlcl90ZXN0IFwKLSAgICBzZXJ2cl9rayBcCi0gICAgc2VydnJfdWsgXAotICAgIHNlcnZyX2t1IFwKLSAgICBzZXJ2cl91dSBcCi0gICAgc2hvcnRfdGhyZWFkIFwKLSAgICBzaWdwaXBlIFwKLSAgICBzb2NrZXQgXAotICAgIHNvY2tvcHQgXAotICAgIHNvY2twaW5nIFwKLSAgICBzcHJpbnRmIFwKLSAgICBzdGFjayBcCi0gICAgc3RkaW8gXAotICAgIHN0cjJhZGRyIFwKLSAgICBzdHJvZCBcCi0gICAgc3dpdGNoIFwKLSAgICBzeXN0ZW0gXAotICAgIHRlc3RiaXQgXAotICAgIHRlc3RmaWxlIFwKLSAgICB0aHJlYWRzIFwKLSAgICB0aW1lbWFjIFwKLSAgICB0aW1ldGVzdCBcCi0gICAgdHBkIFwKLSAgICB1ZHBzcnYgXAotICAgIHZlcmNoZWNrIFwKLSAgICB2ZXJzaW9uIFwKLSAgICB3cml0ZXYgXAotICAgIHhub3RpZnkgXAotICAgIHplcm9sZW4iCi0KLWluaGVyaXQgYXV0b3Rvb2xzIG11bHRpbGliX3NjcmlwdAotCi1NVUxUSUxJQl9TQ1JJUFRTID0gIiR7UE59LWRldjoke2JpbmRpcn0vbnNwci1jb25maWciCi0KLVBBQ0tBR0VDT05GSUcgPz89ICIke0BiYi51dGlscy5maWx0ZXIoJ0RJU1RST19GRUFUVVJFUycsICdpcHY2JywgZCl9IgotUEFDS0FHRUNPTkZJR1tpcHY2XSA9ICItLWVuYWJsZS1pcHY2LC0tZGlzYWJsZS1pcHY2LCIKLQotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotCW9lX3J1bm1ha2UgQ1JPU1NfQ09NUElMRT0xIENGTEFHUz0iLURYUF9VTklYICR7QlVJTERfQ0ZMQUdTfSIgTERGTEFHUz0iIiBDQz0iJHtCVUlMRF9DQ30iIC1DIGNvbmZpZyBleHBvcnQKLX0KLQotZG9fY29tcGlsZV9hcHBlbmQoKSB7Ci0Jb2VfcnVubWFrZSAtQyBwci90ZXN0cwotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1EICR7V09SS0RJUn0vbnNwci5wYy5pbiAke0R9JHtsaWJkaXJ9L3BrZ2NvbmZpZy9uc3ByLnBjCi0gICAgc2VkIC1pICBcCi0gICAgLWUgJ3M6TlNQUlZFUlNJT046JHtQVn06ZycgXAotICAgIC1lICdzOk9FUFJFRklYOiR7cHJlZml4fTpnJyBcCi0gICAgLWUgJ3M6T0VMSUJESVI6JHtsaWJkaXJ9OmcnIFwKLSAgICAtZSAnczpPRUlOQ0RJUjoke2luY2x1ZGVkaXJ9OmcnIFwKLSAgICAtZSAnczpPRUVYRUNQUkVGSVg6JHtleGVjX3ByZWZpeH06ZycgXAotICAgICR7RH0ke2xpYmRpcn0vcGtnY29uZmlnL25zcHIucGMKLQotICAgIG1rZGlyIC1wICR7RH0ke2xpYmRpcn0vbnNwci90ZXN0cwotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3ByL3Rlc3RzL3J1bnRlc3RzLnBsICR7RH0ke2xpYmRpcn0vbnNwci90ZXN0cwotICAgIGluc3RhbGwgLW0gMDc1NSAke1N9L3ByL3Rlc3RzL3J1bnRlc3RzLnNoICR7RH0ke2xpYmRpcn0vbnNwci90ZXN0cwotICAgIGNkICR7Qn0vcHIvdGVzdHMKLSAgICBpbnN0YWxsIC1tIDA3NTUgJHtURVNUU30gJHtEfSR7bGliZGlyfS9uc3ByL3Rlc3RzCi0KLSAgICAjIGRlbGV0ZSBjb21waWxlLWV0LnBsIGFuZCBwZXJyLnByb3BlcnRpZXMgZnJvbSAke2JpbmRpcn0gYmVjYXVzZSB0aGVzZSBhcmUKLSAgICAjIG9ubHkgdXNlZCB0byBnZW5lcmF0ZSBwcmVyci5jIGFuZCBwcmVyci5oIGZpbGVzIGZyb20gcHJlcnIuZXQgYXQgY29tcGlsZQotICAgICMgdGltZQotICAgIHJtICR7RH0ke2JpbmRpcn0vY29tcGlsZS1ldC5wbCAke0R9JHtiaW5kaXJ9L3ByZXJyLnByb3BlcnRpZXMKLX0KLQotRklMRVNfJHtQTn0gPSAiJHtsaWJkaXJ9L2xpYiouc28iCi1GSUxFU18ke1BOfS1kZXYgPSAiJHtiaW5kaXJ9LyogJHtsaWJkaXJ9L25zcHIvdGVzdHMvKiAke2xpYmRpcn0vcGtnY29uZmlnIFwKLSAgICAgICAgICAgICAgICAke2luY2x1ZGVkaXJ9LyogJHtkYXRhZGlyfS9hY2xvY2FsLyogIgotCi1CQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L25zcy9uc3MvbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2gKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDE4MWM2OWEuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy1maXgtbnNpbnN0YWxsLWJ1aWxkLnBhdGNoCisrKyAvZGV2L251bGwKQEAgLTEsMzYgKzAsMCBAQAotRml4IG5zcyBtdWx0aWxpYiBidWlsZCBvbiBvcGVuU1VTRSAxMS54IDMyYml0Ci0KLVdoaWxlIGJ1aWxkaW5nIGxpYjY0LW5zcyBvbiBvcGVuU1VTRSAxMS54IDMyYml0LCB0aGUgbnNpbnN0YWxsIHdpbGwKLWZhaWwgd2l0aCBlcnJvcjoKLQotKiBuc2luc3RhbGwuYzoxOjA6IHNvcnJ5LCB1bmltcGxlbWVudGVkOiA2NC1iaXQgbW9kZSBub3QgY29tcGlsZWQKLQotSXQgY2F1c2VkIGJ5IHRoZSAnLW02NCcgb3B0aW9uIHdoaWNoIHBhc3NlZCB0byBob3N0IGdjYy4KLQotVGhlIG5zaW5zdGFsbCB3YXMgYnVpbHQgZmlyc3Qgd2hpbGUgbnNzIHN0YXJ0aW5nIHRvIGJ1aWxkLCBpdCBvbmx5IHJ1bnMKLW9uIGhvc3QgdG8gaW5zdGFsbCBidWlsdCBmaWxlcywgaXQgZG9lc24ndCBuZWVkIGFueSBjcm9zcy1jb21wbGluZyBvcgotbXVsdGlsaWIgYnVpbGQgb3B0aW9ucy4gSnVzdCBjbGVhbiB0aGUgQVJDSEZMQUcgYW5kIExERkxBR1MgdG8gZml4IHRoaXMKLWVycm9yLgotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLQotU2lnbmVkLW9mZi1ieTogV2Vuem9uZyBGYW4gPHdlbnpvbmcuZmFuQHdpbmRyaXZlci5jb20+Ci09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLUluZGV4OiBuc3MtMy4yNC9uc3MvY29yZWNvbmYvbnNpbnN0YWxsL01ha2VmaWxlCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gbnNzLTMuMjQub3JpZy9uc3MvY29yZWNvbmYvbnNpbnN0YWxsL01ha2VmaWxlCi0rKysgbnNzLTMuMjQvbnNzL2NvcmVjb25mL25zaW5zdGFsbC9NYWtlZmlsZQotQEAgLTE4LDYgKzE4LDEzIEBAIElOVEVSTkFMX1RPT0xTICA9IDEKLSAKLSBpbmNsdWRlICQoREVQVEgpL2NvcmVjb25mL2NvbmZpZy5tawotIAotKyMgbnNpbnN0YWxsIGlzIHVuZml0IGZvciBjcm9zcy1jb21waWxpbmcvbXVsdGlsaWItYnVpbGQgc2luY2UgaXQgd2FzCi0rIyBhbHdheXMgcnVuIG9uIGxvY2FsIGhvc3QgdG8gaW5zdGFsbCBidWlsdCBmaWxlcy4gVGhpcyBjaGFuZ2UgaW50ZW5kcwotKyMgdG8gY2xlYW4gdGhlICctbTY0JyBmcm9tIEFSQ0hGTEFHIGFuZCBMREZMQUdTLgotK0FSQ0hGTEFHID0KLStMREZMQUdTID0KLStDRkxBR1MgPQotKwotIGlmZXEgKCwkKGZpbHRlci1vdXQgT1MyIFdJTiUsJChPU19UQVJHRVQpKSkKLSBQUk9HUkFNCQk9Ci0gZWxzZQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy5wYy5pbiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zcy9uc3MucGMuaW4KZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDIwMGY2MzUuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzL25zcy5wYy5pbgorKysgL2Rldi9udWxsCkBAIC0xLDExICswLDAgQEAKLXByZWZpeD1PRVBSRUZJWAotZXhlY19wcmVmaXg9T0VFWEVDUFJFRklYCi1saWJkaXI9T0VMSUJESVIKLWluY2x1ZGVkaXI9T0VJTkNESVIKLQotTmFtZTogTlNTCi1EZXNjcmlwdGlvbjogTmV0d29yayBTZWN1cml0eSBTZXJ2aWNlcwotVmVyc2lvbjogJU5TU19WRVJTSU9OJQotUmVxdWlyZXM6IG5zcHIgPj0gJU5TUFJfVkVSU0lPTiUKLUxpYnM6IC1sc3NsMyAtbHNtaW1lMyAtbG5zczMgLWxzb2Z0b2tuMyAtbG5zc3V0aWwzCi1DZmxhZ3M6IC1JT0VJTkNESVIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvbnNzL25zc18zLjQ1LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuNDUuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IGU4OWU3ZDYuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9uc3MvbnNzXzMuNDUuYmIKKysrIC9kZXYvbnVsbApAQCAtMSwyNjcgKzAsMCBAQAotU1VNTUFSWSA9ICJNb3ppbGxhJ3MgU1NMIGFuZCBUTFMgaW1wbGVtZW50YXRpb24iCi1ERVNDUklQVElPTiA9ICJOZXR3b3JrIFNlY3VyaXR5IFNlcnZpY2VzIChOU1MpIGlzIGEgc2V0IG9mIGxpYnJhcmllcyBcCi1kZXNpZ25lZCB0byBzdXBwb3J0IGNyb3NzLXBsYXRmb3JtIGRldmVsb3BtZW50IG9mIFwKLXNlY3VyaXR5LWVuYWJsZWQgY2xpZW50IGFuZCBzZXJ2ZXIgYXBwbGljYXRpb25zLiBcCi1BcHBsaWNhdGlvbnMgYnVpbHQgd2l0aCBOU1MgY2FuIHN1cHBvcnQgU1NMIHYyIGFuZCB2MywgXAotVExTLCBQS0NTIDUsIFBLQ1MgNywgUEtDUyAxMSwgUEtDUyAxMiwgUy9NSU1FLCBYLjUwOSBcCi12MyBjZXJ0aWZpY2F0ZXMsIGFuZCBvdGhlciBzZWN1cml0eSBzdGFuZGFyZHMuIgotSE9NRVBBR0UgPSAiaHR0cDovL3d3dy5tb3ppbGxhLm9yZy9wcm9qZWN0cy9zZWN1cml0eS9wa2kvbnNzLyIKLVNFQ1RJT04gPSAibGlicyIKLQotREVQRU5EUyA9ICJzcWxpdGUzIG5zcHIgemxpYiBuc3MtbmF0aXZlIgotREVQRU5EU19jbGFzcy1uYXRpdmUgPSAic3FsaXRlMy1uYXRpdmUgbnNwci1uYXRpdmUgemxpYi1uYXRpdmUiCi0KLUxJQ0VOU0UgPSAiTVBMLTIuMCB8IChNUEwtMi4wICYgR1BMLTIuMCspIHwgKE1QTC0yLjAgJiBMR1BMLTIuMSspIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9uc3MvQ09QWUlORzttZDU9M2IxZTg4ZTFiOWMwYjVhNGIyODgxZDQ2Y2NlMDZhMTggXAotICAgICAgICAgICAgICAgICAgICBmaWxlOi8vbnNzL2xpYi9mcmVlYmwvbXBpL2RvYy9MSUNFTlNFO21kNT00OTFmMTU4ZDA5ZDk0ODQ2NmFmY2U4NWQ2ZjFmZTE4ZiBcCi0gICAgICAgICAgICAgICAgICAgIGZpbGU6Ly9uc3MvbGliL2ZyZWVibC9tcGkvZG9jL0xJQ0VOU0UtTVBMO21kNT01ZDQyNWM4ZjMxNTdkYmYyMTJkYjJlYzUzZDllNTEzMiIKLQotVkVSU0lPTl9ESVIgPSAiJHtAZC5nZXRWYXIoJ0JQJykudXBwZXIoKS5yZXBsYWNlKCctJywgJ18nKS5yZXBsYWNlKCcuJywgJ18nKSArICdfUlRNJ30iCi0KLVNSQ19VUkkgPSAiaHR0cDovL2Z0cC5tb3ppbGxhLm9yZy9wdWIvbW96aWxsYS5vcmcvc2VjdXJpdHkvbnNzL3JlbGVhc2VzLyR7VkVSU0lPTl9ESVJ9L3NyYy8ke0JQfS50YXIuZ3ogXAotICAgICAgICAgICBmaWxlOi8vbnNzLnBjLmluIFwKLSAgICAgICAgICAgZmlsZTovL3NpZ25saWJzLnNoIFwKLSAgICAgICAgICAgZmlsZTovLzAwMDEtbnNzLWZpeC1zdXBwb3J0LWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3Mtbm8tcnBhdGgtZm9yLWNyb3NzLWNvbXBpbGluZy5wYXRjaCBcCi0gICAgICAgICAgIGZpbGU6Ly9uc3MtZml4LWluY29ycmVjdC1zaGViYW5nLW9mLXBlcmwucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vbnNzLWZpeC1uc2luc3RhbGwtYnVpbGQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vZGlzYWJsZS1XdmFyYXJncy13aXRoLWNsYW5nLnBhdGNoIFwKLSAgICAgICAgICAgZmlsZTovL3BxZy5jLVVMTF9hZGRlbmQucGF0Y2ggXAotICAgICAgICAgICBmaWxlOi8vYmxhbmstY2VydDkuZGIgXAotICAgICAgICAgICBmaWxlOi8vYmxhbmsta2V5NC5kYiBcCi0gICAgICAgICAgIGZpbGU6Ly9zeXN0ZW0tcGtjczExLnR4dCBcCi0gICAgICAgICAgICIKLQotU1JDX1VSSVttZDVzdW1dID0gImYxNzUyZDcyMjNlZTlkOTEwZDU1MWU1NzI2NGJhZmE4IgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjExMmYwNTIyM2QxZmRlOTAyYzE3MDk2NmJmYzZmMDExYjI0YTgzOGJlMTY5NjliMTEwZWNmMmJiN2JjMjRlOGIiCi0KLVVQU1RSRUFNX0NIRUNLX1VSSSA9ICJodHRwczovL2RldmVsb3Blci5tb3ppbGxhLm9yZy9lbi1VUy9kb2NzL01vemlsbGEvUHJvamVjdHMvTlNTL05TU19SZWxlYXNlcyIKLVVQU1RSRUFNX0NIRUNLX1JFR0VYID0gIk5TU18oP1A8cHZlcj4uKylfcmVsZWFzZV9ub3RlcyIKLQotaW5oZXJpdCBzaXRlaW5mbwotCi1URCA9ICIke1N9L3RlbnRhdGl2ZS1kaXN0IgotVERTID0gIiR7U30vdGVudGF0aXZlLWRpc3Qtc3RhZ2luZyIKLQotVEFSR0VUX0NDX0FSQ0ggKz0gIiR7TERGTEFHU30iCi0KLWRvX2NvbmZpZ3VyZV9wcmVwZW5kX2xpYmMtbXVzbCAoKSB7Ci0gICAgc2VkIC1pIC1lICcvLURIQVZFX1NZU19DREVGU19IL2QnICR7U30vbnNzL2xpYi9kYm0vY29uZmlnL2NvbmZpZy5tawotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgIGV4cG9ydCBOU1BSX0lOQ0xVREVfRElSPSR7U1RBR0lOR19JTkNESVJfTkFUSVZFfQotICAgIGV4cG9ydCBOU1BSX0xJQl9ESVI9JHtTVEFHSU5HX0xJQkRJUl9OQVRJVkV9Ci0gICAgZXhwb3J0IE5TU19FTkFCTEVfV0VSUk9SPTAKLX0KLQotZG9fY29tcGlsZV9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLSAgICBleHBvcnQgTERGTEFHUz0iIgotfQotCi1kb19jb21waWxlX3ByZXBlbmRfY2xhc3MtbmF0aXZlKCkgewotICAgICMgTmVlZCB0byBzZXQgUlBBVEggc28gdGhhdCBjaHJwYXRoIHdpbGwgZG8gaXRzIGpvYiBjb3JyZWN0bHkKLSAgICBSUEFUSD0iLVdsLC1ycGF0aC1saW5rLCR7U1RBR0lOR19MSUJESVJfTkFUSVZFfSAtV2wsLXJwYXRoLWxpbmssJHtTVEFHSU5HX0JBU0VfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfTElCRElSX05BVElWRX0gLVdsLC1ycGF0aCwke1NUQUdJTkdfQkFTRV9MSUJESVJfTkFUSVZFfSIKLX0KLQotZG9fY29tcGlsZSgpIHsKLSAgICBleHBvcnQgQ1JPU1NfQ09NUElMRT0xCi0gICAgZXhwb3J0IE5BVElWRV9DQz0iJHtCVUlMRF9DQ30iCi0gICAgZXhwb3J0IE5BVElWRV9GTEFHUz0iJHtCVUlMRF9DRkxBR1N9IgotICAgIGV4cG9ydCBCVUlMRF9PUFQ9MQotCi0gICAgZXhwb3J0IEZSRUVCTF9OT19ERVBFTkQ9MQotICAgIGV4cG9ydCBGUkVFQkxfTE9XSEFTSD0xCi0KLSAgICBleHBvcnQgTElCRElSPSR7bGliZGlyfQotICAgIGV4cG9ydCBNT1pJTExBX0NMSUVOVD0xCi0gICAgZXhwb3J0IE5TX1VTRV9HQ0M9MQotICAgIGV4cG9ydCBOU1NfVVNFX1NZU1RFTV9TUUxJVEU9MQotICAgIGV4cG9ydCBOU1NfRU5BQkxFX0VDQz0xCi0KLSAgICBleHBvcnQgT1NfUkVMRUFTRT0zLjQKLSAgICBleHBvcnQgT1NfVEFSR0VUPUxpbnV4Ci0gICAgZXhwb3J0IE9TX0FSQ0g9TGludXgKLQotICAgIGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjIiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAicG93ZXJwYzY0IiBdOyB0aGVuCi0gICAgICAgIE9TX1RFU1Q9cHBjNjQKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHNlbCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjQiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwczY0ZWwiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1taXBzCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAiYWFyY2g2NF9iZSIgXTsgdGhlbgotICAgICAgICBPU19URVNUPSJhYXJjaDY0IgotICAgIGVsc2UKLSAgICAgICAgT1NfVEVTVD0iJHtUQVJHRVRfQVJDSH0iCi0gICAgZmkKLQotICAgIGlmIFsgIiR7U0lURUlORk9fQklUU30iID0gIjY0IiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfNjQ9MQotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIng4Nl82NCIgLWEgIiR7U0lURUlORk9fQklUU30iID0gIjMyIiBdOyB0aGVuCi0gICAgICAgIGV4cG9ydCBVU0VfWDMyPTEKLSAgICBmaQotCi0gICAgZXhwb3J0IE5TU19ESVNBQkxFX0dURVNUUz0xCi0KLSAgICAjIFdlIGNhbiBtb2RpZnkgQ0MgaW4gdGhlIGVudmlyb25tZW50LCBidXQgaWYgd2Ugc2V0IGl0IHZpYSBhbgotICAgICMgYXJndW1lbnQgdG8gbWFrZSwgbnNpbnN0YWxsLCBhIGhvc3QgcHJvZ3JhbSwgd2lsbCBhbHNvIGJ1aWxkIHdpdGggaXQhCi0gICAgIwotICAgICMgbnNzIHByZXR0eSBtdWNoIGRvZXMgaXRzIG93biB0aGluZyB3aXRoIENGTEFHUywgc28gd2UgcHV0IHRoZW0gaW50byBDQy4KLSAgICAjIE9wdGltaXphdGlvbiB3aWxsIGdldCBjbG9iYmVyZWQsIGJ1dCBtb3N0IG9mIHRoZSBzdHVmZiB3aWxsIHN1cnZpdmUuCi0gICAgIyBUaGUgbW90aXZhdGlvbiBmb3IgdGhpcyBpcyB0byBwb2ludCB0byB0aGUgY29ycmVjdCBwbGFjZSBmb3IgZGVidWcKLSAgICAjIHNvdXJjZSBmaWxlcyBhbmQgQ0ZMQUdTIGRvZXMgdGhhdC4gIE5vdGhpbmcgdXNlcyBDQ0MuCi0gICAgIwotICAgIGV4cG9ydCBDQz0iJHtDQ30gJHtDRkxBR1N9IgotICAgIG1ha2UgLUMgLi9uc3MgQ0NDPSIke0NYWH0gLWciIFwKLSAgICAgICAgT1NfVEVTVD0ke09TX1RFU1R9IFwKLSAgICAgICAgUlBBVEg9IiR7UlBBVEh9IgotfQotCi1kb19jb21waWxlW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKLQotZG9faW5zdGFsbF9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkaygpIHsKLSAgICBleHBvcnQgTERGTEFHUz0iIgotfQotCi1kb19pbnN0YWxsKCkgewotICAgIGV4cG9ydCBDUk9TU19DT01QSUxFPTEKLSAgICBleHBvcnQgTkFUSVZFX0NDPSIke0JVSUxEX0NDfSIKLSAgICBleHBvcnQgQlVJTERfT1BUPTEKLQotICAgIGV4cG9ydCBGUkVFQkxfTk9fREVQRU5EPTEKLQotICAgIGV4cG9ydCBMSUJESVI9JHtsaWJkaXJ9Ci0gICAgZXhwb3J0IE1PWklMTEFfQ0xJRU5UPTEKLSAgICBleHBvcnQgTlNfVVNFX0dDQz0xCi0gICAgZXhwb3J0IE5TU19VU0VfU1lTVEVNX1NRTElURT0xCi0gICAgZXhwb3J0IE5TU19FTkFCTEVfRUNDPTEKLQotICAgIGV4cG9ydCBPU19SRUxFQVNFPTMuNAotICAgIGV4cG9ydCBPU19UQVJHRVQ9TGludXgKLSAgICBleHBvcnQgT1NfQVJDSD1MaW51eAotCi0gICAgaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gInBvd2VycGMiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1wcGMKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJwb3dlcnBjNjQiIF07IHRoZW4KLSAgICAgICAgT1NfVEVTVD1wcGM2NAotICAgIGVsaWYgWyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHMiIC1vICIke1RBUkdFVF9BUkNIfSIgPSAibWlwc2VsIiAtbyAiJHtUQVJHRVRfQVJDSH0iID0gIm1pcHM2NCIgLW8gIiR7VEFSR0VUX0FSQ0h9IiA9ICJtaXBzNjRlbCIgXTsgdGhlbgotICAgICAgICBPU19URVNUPW1pcHMKLSAgICBlbGlmIFsgIiR7VEFSR0VUX0FSQ0h9IiA9ICJhYXJjaDY0X2JlIiBdOyB0aGVuCi0gICAgICAgIENQVV9BUkNIPWFhcmNoNjQKLSAgICAgICAgT1NfVEVTVD0iYWFyY2g2NCIKLSAgICBlbHNlCi0gICAgICAgIE9TX1RFU1Q9IiR7VEFSR0VUX0FSQ0h9IgotICAgIGZpCi0gICAgaWYgWyAiJHtTSVRFSU5GT19CSVRTfSIgPSAiNjQiIF07IHRoZW4KLSAgICAgICAgZXhwb3J0IFVTRV82ND0xCi0gICAgZWxpZiBbICIke1RBUkdFVF9BUkNIfSIgPSAieDg2XzY0IiAtYSAiJHtTSVRFSU5GT19CSVRTfSIgPSAiMzIiIF07IHRoZW4KLSAgICAgICAgZXhwb3J0IFVTRV9YMzI9MQotICAgIGZpCi0KLSAgICBleHBvcnQgTlNTX0RJU0FCTEVfR1RFU1RTPTEKLQotICAgIG1ha2UgLUMgLi9uc3MgXAotICAgICAgICBDQ0M9IiR7Q1hYfSIgXAotICAgICAgICBPU19URVNUPSR7T1NfVEVTVH0gXAotICAgICAgICBTT1VSQ0VfTElCX0RJUj0iJHtURH0vJHtsaWJkaXJ9IiBcCi0gICAgICAgIFNPVVJDRV9CSU5fRElSPSIke1REfS8ke2JpbmRpcn0iIFwKLSAgICAgICAgaW5zdGFsbAotCi0gICAgaW5zdGFsbCAtZCAke0R9LyR7bGliZGlyfS8KLSAgICBmb3IgZmlsZSBpbiAke1N9L2Rpc3QvKi5PQkovbGliLyouc287IGRvCi0gICAgICAgIGVjaG8gIkluc3RhbGxpbmcgYGJhc2VuYW1lICRmaWxlYC4uLiIKLSAgICAgICAgY3AgJGZpbGUgICR7RH0vJHtsaWJkaXJ9LwotICAgIGRvbmUKLQotICAgIGZvciBzaGFyZWRfbGliIGluICR7VER9LyR7bGliZGlyfS8qLnNvLio7IGRvCi0gICAgICAgIGlmIFsgLWYgJHNoYXJlZF9saWIgXTsgdGhlbgotICAgICAgICAgICAgY3AgJHNoYXJlZF9saWIgJHtEfS8ke2xpYmRpcn0KLSAgICAgICAgICAgIGxuIC1zZiAkKGJhc2VuYW1lICRzaGFyZWRfbGliKSAke0R9LyR7bGliZGlyfS8kKGJhc2VuYW1lICRzaGFyZWRfbGliIC4xb2UpCi0gICAgICAgIGZpCi0gICAgZG9uZQotICAgIGZvciBzaGFyZWRfbGliIGluICR7VER9LyR7bGliZGlyfS8qLnNvOyBkbwotICAgICAgICBpZiBbIC1mICRzaGFyZWRfbGliIC1hICEgLWUgJHtEfS8ke2xpYmRpcn0vJHNoYXJlZF9saWIgXTsgdGhlbgotICAgICAgICAgICAgY3AgJHNoYXJlZF9saWIgJHtEfS8ke2xpYmRpcn0KLSAgICAgICAgZmkKLSAgICBkb25lCi0KLSAgICBpbnN0YWxsIC1kICR7RH0vJHtpbmNsdWRlZGlyfS9uc3MzCi0gICAgaW5zdGFsbCAtbSA2NDQgLXQgJHtEfS8ke2luY2x1ZGVkaXJ9L25zczMgZGlzdC9wdWJsaWMvbnNzLyoKLQotICAgIGluc3RhbGwgLWQgJHtEfS8ke2JpbmRpcn0KLSAgICBmb3IgYmluYXJ5IGluICR7VER9LyR7YmluZGlyfS8qOyBkbwotICAgICAgICBpbnN0YWxsIC1tIDc1NSAtdCAke0R9LyR7YmluZGlyfSAkYmluYXJ5Ci0gICAgZG9uZQotfQotCi1kb19pbnN0YWxsW3ZhcmRlcHNleGNsdWRlXSArPSAiU0lURUlORk9fQklUUyIKLQotZG9faW5zdGFsbF9hcHBlbmQoKSB7Ci0gICAgIyBDcmVhdGUgZW1wdHkgLmNoayBmaWxlcyBmb3IgdGhlIE5TUyBsaWJyYXJpZXMgYXQgYnVpbGQgdGltZS4gVGhleSBjb3VsZAotICAgICMgYmUgcmVnZW5lcmF0ZWQgYXQgdGFyZ2V0J3MgYm9vdCB0aW1lLgotICAgIGZvciBmaWxlIGluIGxpYnNvZnRva24zLmNoayBsaWJmcmVlYmwzLmNoayBsaWJuc3NkYm0zLmNoazsgZG8KLSAgICAgICAgdG91Y2ggJHtEfS8ke2xpYmRpcn0vJGZpbGUKLSAgICAgICAgY2htb2QgNzU1ICR7RH0vJHtsaWJkaXJ9LyRmaWxlCi0gICAgZG9uZQotICAgIGluc3RhbGwgLUQgLW0gNzU1ICR7V09SS0RJUn0vc2lnbmxpYnMuc2ggJHtEfS8ke2JpbmRpcn0vc2lnbmxpYnMuc2gKLQotICAgIGluc3RhbGwgLWQgJHtEfSR7bGliZGlyfS9wa2djb25maWcvCi0gICAgc2VkICdzLyVOU1NfVkVSU0lPTiUvJHtQVn0vJyAke1dPUktESVJ9L25zcy5wYy5pbiB8IHNlZCAncy8lTlNQUl9WRVJTSU9OJS80LjkuMi8nID4gJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VQUkVGSVg6JHtwcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VFWEVDUFJFRklYOiR7ZXhlY19wcmVmaXh9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VMSUJESVI6JHtsaWJkaXJ9OmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi0gICAgc2VkIC1pIHM6T0VJTkNESVI6JHtpbmNsdWRlZGlyfS9uc3MzOmcgJHtEfSR7bGliZGlyfS9wa2djb25maWcvbnNzLnBjCi19Ci0KLWRvX2luc3RhbGxfYXBwZW5kX2NsYXNzLXRhcmdldCgpIHsKLSAgICAjIEl0IHVzZWQgdG8gY2FsbCBjZXJ0dXRpbCB0byBjcmVhdGUgYSBibGFuayBjZXJ0aWZpY2F0ZSB3aXRoIGVtcHR5IHBhc3N3b3JkIGF0Ci0gICAgIyBidWlsZCB0aW1lLCBidXQgdGhlIGNoZWNrc3VtIG9mIGtleTQuZGIgY2hhbmdlcyBldmVyeSB0aW1lIHdoZW4gY2VydHV0aWwgaXMgY2FsbGVkLgotICAgICMgSXQgY2F1c2VzIG5vbi1kZXRlcm1pbmlzbSBpc3N1ZSwgc28gcHJvdmlkZSBkYXRhYmFzZXMgd2l0aCBhIGJsYW5rIGNlcnRpZmljYXRlCi0gICAgIyB3aGljaCBhcmUgb3JpZ2luYWxseSBmcm9tIG91dHB1dCBvZiBuc3MgaW4gcWVtdXg4Ni02NCBidWlsZC4gWW91IGNhbiBnZXQgdGhlc2UKLSAgICAjIGRhdGFiYXNlcyBieToKLSAgICAjIGNlcnR1dGlsIC1OIC1kIHNxbDovZGF0YWJhc2UvcGF0aC8gLS1lbXB0eS1wYXNzd29yZAotICAgIGluc3RhbGwgLWQgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiLwotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2JsYW5rLWNlcnQ5LmRiICR7RH0ke3N5c2NvbmZkaXJ9L3BraS9uc3NkYi9jZXJ0OS5kYgotICAgIGluc3RhbGwgLW0gMDY0NCAke1dPUktESVJ9L2JsYW5rLWtleTQuZGIgJHtEfSR7c3lzY29uZmRpcn0vcGtpL25zc2RiL2tleTQuZGIKLSAgICBpbnN0YWxsIC1tIDA2NDQgJHtXT1JLRElSfS9zeXN0ZW0tcGtjczExLnR4dCAke0R9JHtzeXNjb25mZGlyfS9wa2kvbnNzZGIvcGtjczExLnR4dAotfQotCi1QQUNLQUdFX1dSSVRFX0RFUFMgKz0gIm5zcy1uYXRpdmUiCi1wa2dfcG9zdGluc3RfJHtQTn0gKCkgewotICAgIGlmIFsgLW4gIiREIiBdOyB0aGVuCi0gICAgICAgIGZvciBJIGluICREJHtsaWJkaXJ9L2xpYiouY2hrOyBkbwotICAgICAgICAgICAgRE49YGRpcm5hbWUgJElgCi0gICAgICAgICAgICBCTj1gYmFzZW5hbWUgJEkgLmNoa2AKLSAgICAgICAgICAgIEZOPSRETi8kQk4uc28KLSAgICAgICAgICAgIHNobGlic2lnbiAtaSAkRk4KLSAgICAgICAgICAgIGlmIFsgJD8gLW5lIDAgXTsgdGhlbgotICAgICAgICAgICAgICAgIGV4aXQgMQotICAgICAgICAgICAgZmkKLSAgICAgICAgZG9uZQotICAgIGVsc2UKLSAgICAgICAgc2lnbmxpYnMuc2gKLSAgICBmaQotfQotCi1QQUNLQUdFUyA9KyAiJHtQTn0tc21pbWUiCi1GSUxFU18ke1BOfS1zbWltZSA9ICJcCi0gICAgJHtiaW5kaXJ9L3NtaW1lIFwKLSIKLQotRklMRVNfJHtQTn0gPSAiXAotICAgICR7c3lzY29uZmRpcn0gXAotICAgICR7YmluZGlyfSBcCi0gICAgJHtsaWJkaXJ9L2xpYiouY2hrIFwKLSAgICAke2xpYmRpcn0vbGliKi5zbyBcCi0gICAgIgotCi1GSUxFU18ke1BOfS1kZXYgPSAiXAotICAgICR7bGliZGlyfS9uc3MgXAotICAgICR7bGliZGlyfS9wa2djb25maWcvKiBcCi0gICAgJHtpbmNsdWRlZGlyfS8qIFwKLSAgICAiCi0KLVJERVBFTkRTXyR7UE59LXNtaW1lID0gInBlcmwiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcDExLWtpdC9wMTEta2l0XzAuMjMuMTguMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcDExLWtpdC9wMTEta2l0XzAuMjMuMTguMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggOTE5M2EwNi4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdF8wLjIzLjE4LjEuYmIKKysrIC9kZXYvbnVsbApAQCAtMSw0NCArMCwwIEBACi1TVU1NQVJZID0gIlByb3ZpZGVzIGEgd2F5IHRvIGxvYWQgYW5kIGVudW1lcmF0ZSBQS0NTIzExIG1vZHVsZXMiCi1MSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTAyOTMzODg3ZjYwOTgwN2ZiYjU3YWE0MjM3ZDE0YTUwIgotCi1pbmhlcml0IGF1dG90b29scyBnZXR0ZXh0IHBrZ2NvbmZpZyBndGstZG9jCi0KLURFUEVORFMgPSAibGlidGFzbjEgbGliZmZpIgotCi1TUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcDExLWdsdWUvcDExLWtpdCIKLVNSQ1JFViA9ICJiMGViZTc1NTVjMjkxODA4ZGIyOTM3N2JhNzljYjgzMjYzMDFmMGE2IgotUyA9ICIke1dPUktESVJ9L2dpdCIKLQotQVVUT1RPT0xTX0FVWERJUiA9ICIke1N9L2J1aWxkL2xpdHRlciIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gIiIKLVBBQ0tBR0VDT05GSUdbdHJ1c3QtcGF0aHNdID0gIi0td2l0aC10cnVzdC1wYXRocz0vZXRjL3NzbC9jZXJ0cy9jYS1jZXJ0aWZpY2F0ZXMuY3J0LC0td2l0aG91dC10cnVzdC1wYXRocywsY2EtY2VydGlmaWNhdGVzIgotCi0jIFRoaXMgcmVjaXBlIGRvZXMgbm90IHVzZSB0aGUgc3RhbmRhcmQgZ3RrLWRvYyBtNCBtYWNyb3MsIGFuZCBzbyB0aGUgLi9jb25maWd1cmUgZmxhZ3MKLSMgdGhhdCBjb250cm9sIGd0ay1kb2MgYnVpbGQgYXJlIG5vbi1zdGFuZGFyZAotRVhUUkFfT0VDT05GX3ByZXBlbmRfY2xhc3MtdGFyZ2V0ID0gIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdHVEtET0NfRU5BQkxFRCcsICdUcnVlJywgJy0tZW5hYmxlLWRvYyAtLWVuYWJsZS1kb2MtaHRtbCAtLWRpc2FibGUtZG9jLXBkZicsIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICctLWRpc2FibGUtZG9jJywgZCl9ICIKLQotIyBXaGVuIGJ1aWxkaW5nIG5hdGl2ZSByZWNpcGVzLCBkaXNhYmxlIGd0a2RvYywgYXMgaXQgaXMgbm90IG5lY2Vzc2FyeSwKLSMgcHVsbHMgaW4gYWRkaXRpb25hbCBkZXBlbmRlbmNpZXMsIGFuZCBtYWtlcyBidWlsZCB0aW1lcyBsb25nZXIKLUVYVFJBX09FQ09ORl9wcmVwZW5kX2NsYXNzLW5hdGl2ZSA9ICItLWRpc2FibGUtZG9jICIKLUVYVFJBX09FQ09ORl9wcmVwZW5kX2NsYXNzLW5hdGl2ZXNkayA9ICItLWRpc2FibGUtZG9jICIKLQotVU5LTk9XTl9DT05GSUdVUkVfV0hJVEVMSVNUX2FwcGVuZCA9ICIgLS1lbmFibGUtZ3RrLWRvYy1odG1sIC0tZGlzYWJsZS1ndGstZG9jLXBkZiAtLWVuYWJsZS1ndGstZG9jIC0tZGlzYWJsZS1ndGstZG9jIgotCi0jIHAxMS1raXQgcmVsaWVzIG9uIHRoZXNlIHR3byBiZWluZyBjb3BpZWQgZnJvbSBzb3VyY2UgdHJlZQotIyBpbnN0ZWFkIG9mIGJlaW5nIHJlZ2VuZXJhdGVkIGJ5IGd0a2RvYy1zY2FuLCBidXQgZG9lc24ndCBzZXR1cAotIyBkZXBlbmRlbmNpZXMgY29ycmVjdGx5IHdoZW4gdGhlcmUgaXMgYSBwYXJhbGxlbCBidWlsZC4gTGV0J3MgcHJlLWNvcHkKLSMgdGhlbSBpbnN0ZWFkLgotZG9fY29tcGlsZV9wcmVwZW5kICgpIHsKLSAgICAgICAgY3AgJHtTfS9kb2MvbWFudWFsL3AxMS1raXQtb3ZlcnJpZGVzLnR4dCAke1N9L2RvYy9tYW51YWwvcDExLWtpdC1zZWN0aW9ucy50eHQgJHtCfS9kb2MvbWFudWFsLwotfQotCi1GSUxFU18ke1BOfSArPSAiIFwKLSAgICAke2xpYmRpcn0vcDExLWtpdC1wcm94eS5zbyBcCi0gICAgJHtsaWJkaXJ9L3BrY3MxMS8qLnNvIFwKLSAgICAke2xpYmRpcn0vcGtjczExLyoubGEiCi0KLSMgUE4gY29udGFpbnMgcDExLWtpdC1wcm94eS5zbywgYSBzeW1saW5rIHRvIGEgbG9hZGFibGUgbW9kdWxlCi1JTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3AxMS1raXQvcDExLWtpdF8wLjIzLjIwLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wMTEta2l0L3AxMS1raXRfMC4yMy4yMC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi40YmE5M2Y5Ci0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9wMTEta2l0L3AxMS1raXRfMC4yMy4yMC5iYgpAQCAtMCwwICsxLDI5IEBACitTVU1NQVJZID0gIlByb3ZpZGVzIGEgd2F5IHRvIGxvYWQgYW5kIGVudW1lcmF0ZSBQS0NTIzExIG1vZHVsZXMiCitMSUNFTlNFID0gIkJTRC0zLUNsYXVzZSIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PTAyOTMzODg3ZjYwOTgwN2ZiYjU3YWE0MjM3ZDE0YTUwIgorCitpbmhlcml0IG1lc29uIGdldHRleHQgcGtnY29uZmlnIGd0ay1kb2MgYmFzaC1jb21wbGV0aW9uCisKK0RFUEVORFMgPSAibGlidGFzbjEgbGlidGFzbjEtbmF0aXZlIGxpYmZmaSIKKworREVQRU5EU19hcHBlbmQgPSAiJHtAJyBnbGliLTIuMCcgaWYgZC5nZXRWYXIoJ0dUS0RPQ19FTkFCTEVEJykgPT0gJ1RydWUnIGVsc2UgJyd9IgorCitTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vcDExLWdsdWUvcDExLWtpdCIKK1NSQ1JFViA9ICI3NjJjZGFhMmNkNWM1ZWMwOWNjODQ0ZjlhNmJkYzU1MWM3ZjZjOGVkIgorUyA9ICIke1dPUktESVJ9L2dpdCIKKworUEFDS0FHRUNPTkZJRyA/Pz0gIiIKK1BBQ0tBR0VDT05GSUdbdHJ1c3QtcGF0aHNdID0gIi1EdHJ1c3RfcGF0aHM9L2V0Yy9zc2wvY2VydHMvY2EtY2VydGlmaWNhdGVzLmNydCwsLGNhLWNlcnRpZmljYXRlcyIKKworR1RLRE9DX01FU09OX09QVElPTiA9ICdndGtfZG9jJworCitGSUxFU18ke1BOfSArPSAiIFwKKyAgICAke2xpYmRpcn0vcDExLWtpdC1wcm94eS5zbyBcCisgICAgJHtsaWJkaXJ9L3BrY3MxMS8qLnNvIFwKKyAgICAke2xpYmRpcn0vcGtjczExLyoubGEgXAorICAgICR7c3lzdGVtZF91c2VyX3VuaXRkaXJ9LyoiCisKKyMgUE4gY29udGFpbnMgcDExLWtpdC1wcm94eS5zbywgYSBzeW1saW5rIHRvIGEgbG9hZGFibGUgbW9kdWxlCitJTlNBTkVfU0tJUF8ke1BOfSA9ICJkZXYtc28iCisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JuZ2Quc2VydmljZSBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvcm5nLXRvb2xzL3JuZy10b29scy9ybmdkLnNlcnZpY2UKaW5kZXggYWFhYWEyOS4uMDU1OWI5NyAxMDA2NDQKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzL3JuZ2Quc2VydmljZQorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHMvcm5nZC5zZXJ2aWNlCkBAIC04LDYgKzgsMjUgQEAKIFtTZXJ2aWNlXQogRW52aXJvbm1lbnRGaWxlPS1AU1lTQ09ORkRJUkAvZGVmYXVsdC9ybmctdG9vbHMKIEV4ZWNTdGFydD1AU0JJTkRJUkAvcm5nZCAtZiAkRVhUUkFfQVJHUworQ2FwYWJpbGl0eUJvdW5kaW5nU2V0PUNBUF9TWVNfQURNSU4KK0lQQWRkcmVzc0Rlbnk9YW55CitMb2NrUGVyc29uYWxpdHk9eWVzCitNZW1vcnlEZW55V3JpdGVFeGVjdXRlPXllcworTm9OZXdQcml2aWxlZ2VzPXllcworUHJpdmF0ZVRtcD15ZXMKK1Byb3RlY3RDb250cm9sR3JvdXBzPXllcworUHJvdGVjdEhvbWU9eWVzCitQcm90ZWN0SG9zdG5hbWU9eWVzCitQcm90ZWN0S2VybmVsTW9kdWxlcz15ZXMKK1Byb3RlY3RLZXJuZWxMb2dzPXllcworUHJvdGVjdFN5c3RlbT1zdHJpY3QKK1Jlc3RyaWN0QWRkcmVzc0ZhbWlsaWVzPUFGX1VOSVgKK1Jlc3RyaWN0TmFtZXNwYWNlcz15ZXMKK1Jlc3RyaWN0UmVhbHRpbWU9eWVzCitSZXN0cmljdFNVSURTR0lEPXllcworU3lzdGVtQ2FsbEFyY2hpdGVjdHVyZXM9bmF0aXZlCitTeXN0ZW1DYWxsRXJyb3JOdW1iZXI9RVBFUk0KK1N5c3RlbUNhbGxGaWx0ZXI9QHN5c3RlbS1zZXJ2aWNlCiAKIFtJbnN0YWxsXQotV2FudGVkQnk9bXVsdGktdXNlci50YXJnZXQKK1dhbnRlZEJ5PXN5c2luaXQudGFyZ2V0CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNi44LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzYuOC5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggODNhNDhhNC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNi44LmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTIgKzAsMCBAQAotU1VNTUFSWSA9ICJSYW5kb20gbnVtYmVyIGdlbmVyYXRvciBkYWVtb24iCi1ERVNDUklQVElPTiA9ICJDaGVjayBhbmQgZmVlZCByYW5kb20gZGF0YSBmcm9tIGhhcmR3YXJlIGRldmljZSB0byBrZXJuZWwiCi1BVVRIT1IgPSAiUGhpbGlwcCBSdW1wZiwgSmVmZiBHYXJ6aWsgPGpnYXJ6aWtAcG9ib3guY29tPiwgXAotICAgICAgICAgIEhlbnJpcXVlIGRlIE1vcmFlcyBIb2xzY2h1aCA8aG1oQGRlYmlhbi5vcmc+IgotSE9NRVBBR0UgPSAiaHR0cHM6Ly9naXRodWIuY29tL25ob3JtYW4vcm5nLXRvb2xzIgotQlVHVFJBQ0tFUiA9ICJodHRwczovL2dpdGh1Yi5jb20vbmhvcm1hbi9ybmctdG9vbHMvaXNzdWVzIgotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotREVQRU5EUyA9ICJzeXNmc3V0aWxzIgotCi1TUkNfVVJJID0gIlwKLSAgICBnaXQ6Ly9naXRodWIuY29tL25ob3JtYW4vcm5nLXRvb2xzLmdpdCBcCi0gICAgZmlsZTovL2luaXQgXAotICAgIGZpbGU6Ly9kZWZhdWx0IFwKLSAgICBmaWxlOi8vcm5nZC5zZXJ2aWNlIFwKLSIKLVNSQ1JFViA9ICJlYjVlMzRjN2ZiMDU1OTQ3NjBmOTlkODYzZmJlMDQwMWZlMjk3YjkzIgotCi1TID0gIiR7V09SS0RJUn0vZ2l0IgotCi1pbmhlcml0IGF1dG90b29scyB1cGRhdGUtcmMuZCBzeXN0ZW1kIHBrZ2NvbmZpZwotCi1QQUNLQUdFQ09ORklHID8/PSAibGliZ2NyeXB0IGxpYmppdHRlcmVudHJvcHkiCi1QQUNLQUdFQ09ORklHX2xpYmMtbXVzbCA9ICJsaWJhcmdwIGxpYmppdHRlcmVudHJvcHkiCi0KLVBBQ0tBR0VDT05GSUdbbGliYXJncF0gPSAiLS13aXRoLWxpYmFyZ3AsLS13aXRob3V0LWxpYmFyZ3AsYXJncC1zdGFuZGFsb25lLCIKLVBBQ0tBR0VDT05GSUdbbGliZ2NyeXB0XSA9ICItLXdpdGgtbGliZ2NyeXB0LC0td2l0aG91dC1saWJnY3J5cHQsbGliZ2NyeXB0LCIKLVBBQ0tBR0VDT05GSUdbbGliaml0dGVyZW50cm9weV0gPSAiLS1lbmFibGUtaml0dGVyZW50cm9weSwtLWRpc2FibGUtaml0dGVyZW50cm9weSxsaWJqaXR0ZXJlbnRyb3B5IgotUEFDS0FHRUNPTkZJR1tsaWJwMTFdID0gIi0td2l0aC1wa2NzMTEsLS13aXRob3V0LXBrY3MxMSxsaWJwMTEgb3BlbnNzbCIKLVBBQ0tBR0VDT05GSUdbbmlzdGJlYWNvbl0gPSAiLS13aXRoLW5pc3RiZWFjb24sLS13aXRob3V0LW5pc3RiZWFjb24sY3VybCBsaWJ4bWwyIG9wZW5zc2wiCi0KLUlOSVRTQ1JJUFRfTkFNRSA9ICJybmctdG9vbHMiCi1JTklUU0NSSVBUX1BBUkFNUyA9ICJzdGFydCAwMyAyIDMgNCA1IC4gc3RvcCAzMCAwIDYgMSAuIgotCi1TWVNURU1EX1NFUlZJQ0VfJHtQTn0gPSAicm5nZC5zZXJ2aWNlIgotCi0jIFJlZmVyIGF1dG9nZW4uc2ggaW4gcm5nLXRvb2xzCi1kb19jb25maWd1cmVfcHJlcGVuZCgpIHsKLSAgICBjcCAke1N9L1JFQURNRS5tZCAke1N9L1JFQURNRQotfQotCi1kb19pbnN0YWxsX2FwcGVuZCgpIHsKLSAgICBpbnN0YWxsIC1EbSAwNjQ0ICR7V09SS0RJUn0vZGVmYXVsdCAke0R9JHtzeXNjb25mZGlyfS9kZWZhdWx0L3JuZy10b29scwotICAgIGluc3RhbGwgLURtIDA3NTUgJHtXT1JLRElSfS9pbml0ICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9ybmctdG9vbHMKLSAgICBpbnN0YWxsIC1EbSAwNjQ0ICR7V09SS0RJUn0vcm5nZC5zZXJ2aWNlIFwKLSAgICAgICAgICAgICAgICAgICAgICR7RH0ke3N5c3RlbWRfc3lzdGVtX3VuaXRkaXJ9L3JuZ2Quc2VydmljZQotICAgIHNlZCAtaSBcCi0gICAgICAgIC1lICdzLEBTWVNDT05GRElSQCwke3N5c2NvbmZkaXJ9LGcnIFwKLSAgICAgICAgLWUgJ3MsQFNCSU5ESVJALCR7c2JpbmRpcn0sZycgXAotICAgICAgICAke0R9JHtzeXNjb25mZGlyfS9pbml0LmQvcm5nLXRvb2xzIFwKLSAgICAgICAgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vcm5nZC5zZXJ2aWNlCi19CmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3JuZy10b29scy9ybmctdG9vbHNfNi45LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzYuOS5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44Yzk4YTlhCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9ybmctdG9vbHMvcm5nLXRvb2xzXzYuOS5iYgpAQCAtMCwwICsxLDU5IEBACitTVU1NQVJZID0gIlJhbmRvbSBudW1iZXIgZ2VuZXJhdG9yIGRhZW1vbiIKK0RFU0NSSVBUSU9OID0gIkNoZWNrIGFuZCBmZWVkIHJhbmRvbSBkYXRhIGZyb20gaGFyZHdhcmUgZGV2aWNlIHRvIGtlcm5lbCIKK0FVVEhPUiA9ICJQaGlsaXBwIFJ1bXBmLCBKZWZmIEdhcnppayA8amdhcnppa0Bwb2JveC5jb20+LCBcCisgICAgICAgICAgSGVucmlxdWUgZGUgTW9yYWVzIEhvbHNjaHVoIDxobWhAZGViaWFuLm9yZz4iCitIT01FUEFHRSA9ICJodHRwczovL2dpdGh1Yi5jb20vbmhvcm1hbi9ybmctdG9vbHMiCitCVUdUUkFDS0VSID0gImh0dHBzOi8vZ2l0aHViLmNvbS9uaG9ybWFuL3JuZy10b29scy9pc3N1ZXMiCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCitERVBFTkRTID0gInN5c2ZzdXRpbHMiCisKK1NSQ19VUkkgPSAiXAorICAgIGdpdDovL2dpdGh1Yi5jb20vbmhvcm1hbi9ybmctdG9vbHMuZ2l0IFwKKyAgICBmaWxlOi8vaW5pdCBcCisgICAgZmlsZTovL2RlZmF1bHQgXAorICAgIGZpbGU6Ly9ybmdkLnNlcnZpY2UgXAorIgorU1JDUkVWID0gIjRhODY1Nzk3YTY5ZGQzOGM2NGE4NmFhMzI4ODRlY2M5YmE3YjRkMDgiCisKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK2luaGVyaXQgYXV0b3Rvb2xzIHVwZGF0ZS1yYy5kIHN5c3RlbWQgcGtnY29uZmlnCisKK1BBQ0tBR0VDT05GSUcgPz89ICJsaWJnY3J5cHQgbGliaml0dGVyZW50cm9weSIKK1BBQ0tBR0VDT05GSUdfbGliYy1tdXNsID0gImxpYmFyZ3AgbGliaml0dGVyZW50cm9weSIKKworUEFDS0FHRUNPTkZJR1tsaWJhcmdwXSA9ICItLXdpdGgtbGliYXJncCwtLXdpdGhvdXQtbGliYXJncCxhcmdwLXN0YW5kYWxvbmUsIgorUEFDS0FHRUNPTkZJR1tsaWJnY3J5cHRdID0gIi0td2l0aC1saWJnY3J5cHQsLS13aXRob3V0LWxpYmdjcnlwdCxsaWJnY3J5cHQsIgorUEFDS0FHRUNPTkZJR1tsaWJqaXR0ZXJlbnRyb3B5XSA9ICItLWVuYWJsZS1qaXR0ZXJlbnRyb3B5LC0tZGlzYWJsZS1qaXR0ZXJlbnRyb3B5LGxpYmppdHRlcmVudHJvcHkiCitQQUNLQUdFQ09ORklHW2xpYnAxMV0gPSAiLS13aXRoLXBrY3MxMSwtLXdpdGhvdXQtcGtjczExLGxpYnAxMSBvcGVuc3NsIgorUEFDS0FHRUNPTkZJR1tuaXN0YmVhY29uXSA9ICItLXdpdGgtbmlzdGJlYWNvbiwtLXdpdGhvdXQtbmlzdGJlYWNvbixjdXJsIGxpYnhtbDIgb3BlbnNzbCIKKworSU5JVFNDUklQVF9OQU1FID0gInJuZy10b29scyIKK0lOSVRTQ1JJUFRfUEFSQU1TID0gInN0YXJ0IDAzIDIgMyA0IDUgLiBzdG9wIDMwIDAgNiAxIC4iCisKK1NZU1RFTURfU0VSVklDRV8ke1BOfSA9ICJybmdkLnNlcnZpY2UiCisKKyMgUmVmZXIgYXV0b2dlbi5zaCBpbiBybmctdG9vbHMKK2RvX2NvbmZpZ3VyZV9wcmVwZW5kKCkgeworICAgIGNwICR7U30vUkVBRE1FLm1kICR7U30vUkVBRE1FCit9CisKK2RvX2luc3RhbGxfYXBwZW5kKCkgeworICAgIGluc3RhbGwgLURtIDA2NDQgJHtXT1JLRElSfS9kZWZhdWx0ICR7RH0ke3N5c2NvbmZkaXJ9L2RlZmF1bHQvcm5nLXRvb2xzCisgICAgaW5zdGFsbCAtRG0gMDc1NSAke1dPUktESVJ9L2luaXQgJHtEfSR7c3lzY29uZmRpcn0vaW5pdC5kL3JuZy10b29scworICAgIGluc3RhbGwgLURtIDA2NDQgJHtXT1JLRElSfS9ybmdkLnNlcnZpY2UgXAorICAgICAgICAgICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vcm5nZC5zZXJ2aWNlCisgICAgc2VkIC1pIFwKKyAgICAgICAgLWUgJ3MsQFNZU0NPTkZESVJALCR7c3lzY29uZmRpcn0sZycgXAorICAgICAgICAtZSAncyxAU0JJTkRJUkAsJHtzYmluZGlyfSxnJyBcCisgICAgICAgICR7RH0ke3N5c2NvbmZkaXJ9L2luaXQuZC9ybmctdG9vbHMgXAorICAgICAgICAke0R9JHtzeXN0ZW1kX3N5c3RlbV91bml0ZGlyfS9ybmdkLnNlcnZpY2UKKworICAgIGlmIFsgIiR7QGJiLnV0aWxzLmNvbnRhaW5zKCdQQUNLQUdFQ09ORklHJywgJ25pc3RiZWFjb24nLCAneWVzJywgJ25vJywgZCl9IiA9ICJ5ZXMiIF07IHRoZW4KKyAgICAgICAgc2VkIC1pIFwKKyAgICAgICAgICAgIC1lICcvXklQQWRkcmVzc0Rlbnk9YW55L2QnIFwKKyAgICAgICAgICAgIC1lICcvXlJlc3RyaWN0QWRkcmVzc0ZhbWlsaWVzPS8gcy8kLyBBRl9JTkVUIEFGX0lORVQ2LycgXAorICAgICAgICAgICAgJHtEfSR7c3lzdGVtZF9zeXN0ZW1fdW5pdGRpcn0vcm5nZC5zZXJ2aWNlCisgICAgZmkKK30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvLmluYyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvLmluYwpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggM2ZlMWE0NC4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby5pbmMKKysrIC9kZXYvbnVsbApAQCAtMSwzNyArMCwwIEBACi1TVU1NQVJZID0gIlNoYXJlZCBNSU1FIHR5cGUgZGF0YWJhc2UgYW5kIHNwZWNpZmljYXRpb24iCi1IT01FUEFHRSA9ICJodHRwOi8vZnJlZWRlc2t0b3Aub3JnL3dpa2kvU29mdHdhcmUvc2hhcmVkLW1pbWUtaW5mbyIKLVNFQ1RJT04gPSAiYmFzZSIKLQotTElDRU5TRSA9ICJHUEx2MiIKLUxJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL0NPUFlJTkc7bWQ1PWIyMzRlZTRkNjlmNWZjZTQ0ODZhODBmZGFmNGE0MjYzIgotCi1ERVBFTkRTID0gImxpYnhtbDIgaW50bHRvb2wtbmF0aXZlIGdsaWItMi4wIHNoYXJlZC1taW1lLWluZm8tbmF0aXZlIgotCi1TUkNfVVJJID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvfmhhZGVzcy9zaGFyZWQtbWltZS1pbmZvLSR7UFZ9LnRhci54eiIKLQotaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQKLQotRVhUUkFfT0VDT05GID0gIi0tZGlzYWJsZS11cGRhdGUtbWltZWRiIgotCi1GSUxFU18ke1BOfSArPSAiJHtkYXRhZGlyfS9taW1lIgotRklMRVNfJHtQTn0tZGV2ICs9ICIke2RhdGFkaXJ9L3BrZ2NvbmZpZy9zaGFyZWQtbWltZS1pbmZvLnBjIgotCi0jIGZyZWVkZXNrdG9wLm9yZy54bWwgaXMgb25seSByZXF1aXJlZCB3aGVuIHVwZGF0aW5nIHRoZSBtaW1lIGRhdGFiYXNlLAotIyBwYWNrYWdlIGl0IHNlcGFyYXRlbHkKLVBBQ0tBR0VTID0rICJzaGFyZWQtbWltZS1pbmZvLWRhdGEiCi1GSUxFU19zaGFyZWQtbWltZS1pbmZvLWRhdGEgPSAiJHtkYXRhZGlyfS9taW1lL3BhY2thZ2VzL2ZyZWVkZXNrdG9wLm9yZy54bWwiCi1SREVQRU5EU19zaGFyZWQtbWltZS1pbmZvLWRhdGEgPSAic2hhcmVkLW1pbWUtaW5mbyIKLQotZG9faW5zdGFsbCAoKSB7Ci0JYXV0b3Rvb2xzX2RvX2luc3RhbGwKLQotCXVwZGF0ZS1taW1lLWRhdGFiYXNlICR7RH0ke2RhdGFkaXJ9L21pbWUKLX0KLQotZG9faW5zdGFsbF9jbGFzcy1uYXRpdmUgKCkgewotCWF1dG90b29sc19kb19pbnN0YWxsCi0KLQkke0J9L3VwZGF0ZS1taW1lLWRhdGFiYXNlICR7RH0ke2RhdGFkaXJ9L21pbWUKLX0KLQotQkJDTEFTU0VYVEVORCA9ICJuYXRpdmUgbmF0aXZlc2RrIgpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm8vaW5zdGFsbC1kYXRhLWhvb2sucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9pbnN0YWxsLWRhdGEtaG9vay5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMjYyZmY3NS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9pbnN0YWxsLWRhdGEtaG9vay5wYXRjaAorKysgL2Rldi9udWxsCkBAIC0xLDI1ICswLDAgQEAKLWZpeCBzaGFyZWQtbWltZS1pbmZvIGJ1aWxkIHJhY2UgY29uZGl0aW9uCi0KLVRoZSBkZWZpbml0aW9uIG9mIGluc3RhbGwtZGF0YS1ob29rIGluIE1ha2VmaWxlLmFtIGxlYWRzCi10byBtdWx0aXBsZSwgb3ZlcmxhcHBpbmcsIGV4ZWN1dGlvbnMgb2YgaW5zdGFsbC1iaW5QUk9HUkFNUwotdGFyZ2V0LiAgV2UgbW9kaWZ5IHRoZSBkZWZpbml0aW9uIHRvIGF2b2lkIHRoYXQuCi0KLVVwc3RyZWFtLVN0YXR1czogUGVuZGluZwotCi1TaWduZWQtb2ZmLWJ5OiBKb2UgU2xhdGVyIDxqc2xhdGVyQHdpbmRyaXZlci5jb20+Ci0KLUluZGV4OiBzaGFyZWQtbWltZS1pbmZvLTEuOS9NYWtlZmlsZS5hbQotPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0tIHNoYXJlZC1taW1lLWluZm8tMS45Lm9yaWcvTWFrZWZpbGUuYW0KLSsrKyBzaGFyZWQtbWltZS1pbmZvLTEuOS9NYWtlZmlsZS5hbQotQEAgLTUwLDcgKzUwLDkgQEAgZWxzZQotICAgdXBkYXRlX21pbWVfZGF0YWJhc2U9IiQodG9wX2J1aWxkZGlyKS91cGRhdGUtbWltZS1kYXRhYmFzZSQoRVhFRVhUKSIKLSBlbmRpZgotIAotLWluc3RhbGwtZGF0YS1ob29rOiBpbnN0YWxsLWJpblBST0dSQU1TCi0rIyBkbyBOT1QgbWFrZSB0aGlzIGRlcGVuZGVudCBvbiBhbnl0aGluZyEKLSsjCi0raW5zdGFsbC1kYXRhLWhvb2s6Ci0gaWYgRU5BQkxFX1VQREFURV9NSU1FREIKLSAJJCh1cGRhdGVfbWltZV9kYXRhYmFzZSkgLVYgIiQoREVTVERJUikkKGRhdGFkaXIpL21pbWUiCi0gZW5kaWYKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvL3BhcmFsbGVsbWFrZS5wYXRjaCBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvL3BhcmFsbGVsbWFrZS5wYXRjaApkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZmVhMzRhNS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NoYXJlZC1taW1lLWluZm8vc2hhcmVkLW1pbWUtaW5mby9wYXJhbGxlbG1ha2UucGF0Y2gKKysrIC9kZXYvbnVsbApAQCAtMSwzMyArMCwwIEBACi1UaGUgTWFrZWZpbGUgdXNlZCBieSBzaGFyZWQtbWltZS1pbmZvIGlzIG9uZSBiaWcgcmFjZSB3aXRoIHRoZSBTVUJESVJTIAotb3B0aW9uIGFuZCB0aGUgZGVwZW5kZW5jeSBzcGVjaWZpY2FsbHkgY2FsbGluZyBtYWtlIGFsbCBjb21iaW5pbmcgdG8KLWNyZWF0ZSBtdWx0aXBsZSBtYWtlIGluc3RhbmNlcyBhbGwgb2Ygd2hpY2ggbWF5IHRyeSBhbmQgYnVpbGQgdGFyZ2V0cwotbGlrZSB1cGRhdGUtbWltZS1kYXRhYmFzZS4KLQotVGhpcyBwYXRjaCByZW1vdmVzIHRob3NlIG9wdGlvbnMgbWVhbmluZyBtYWtlIGNhbiBjb3JyZWN0bHkgaWRlbnRpZnkKLWRlcGVuZGVuY2llcyBhbmQgc3RvcCBpdHNlbGYgcmFjaW5nIGl0c2VsZi4KLQotUlAgMTAvMTAvMjAxMQotCi1VcHN0cmVhbS1TdGF0dXM6IFBlbmRpbmcKLVNpZ25lZC1vZmYtYnk6IENvbnN0YW50aW4gTXVzY2EgPGNvbnN0YW50aW54Lm11c2NhQGludGVsLmNvbT4KLQotSW5kZXg6IHNoYXJlZC1taW1lLWluZm8tMS45L01ha2VmaWxlLmFtCi09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLS0gc2hhcmVkLW1pbWUtaW5mby0xLjkub3JpZy9NYWtlZmlsZS5hbQotKysrIHNoYXJlZC1taW1lLWluZm8tMS45L01ha2VmaWxlLmFtCi1AQCAtMSw1ICsxLDMgQEAKLS1TVUJESVJTPS4gcG8KLS0KLSBBTV9DUFBGTEFHUyA9ICQoQUxMX0NGTEFHUykKLSAKLSBwYWNrYWdlc2RpciA9ICQoZGF0YWRpcikvbWltZS9wYWNrYWdlcwotQEAgLTgxLDggKzc5LDcgQEAgZW5kaWYKLSAKLSBhbGw6ICQoZGVmYXVsdG1ha2VkZXBzKQotIAotLWNyZWF0ZS1wb3Q6Ci0tCSQoQU1fVl9HRU4pICQoTUFLRSkgLUMgcG8gc2hhcmVkLW1pbWUtaW5mby5wb3QKLStjcmVhdGUtcG90OiBwbwotIAotIGxvY2FsLXRlc3Q6IGNyZWF0ZS1wb3QgZnJlZWRlc2t0b3Aub3JnLnhtbCB1cGRhdGUtbWltZS1kYXRhYmFzZSQoRVhFRVhUKQotIGlmIENST1NTX0NPTVBJTElORwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fMS4xMC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvXzEuMTAuYmIKZGVsZXRlZCBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDlmYzIxMGIuLjAwMDAwMDAKLS0tIGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fMS4xMC5iYgorKysgL2Rldi9udWxsCkBAIC0xLDcgKzAsMCBAQAotcmVxdWlyZSBzaGFyZWQtbWltZS1pbmZvLmluYwotCi1TUkNfVVJJICs9ICJmaWxlOi8vcGFyYWxsZWxtYWtlLnBhdGNoIFwKLQkgICAgZmlsZTovL2luc3RhbGwtZGF0YS1ob29rLnBhdGNoIgotCi1TUkNfVVJJW21kNXN1bV0gPSAiNDE4YzJjZWQ5ZGM0ZGQ1Y2E4YjA2YTc1NWU2ZDY0ZTkiCi1TUkNfVVJJW3NoYTI1NnN1bV0gPSAiYzYyNWE4M2I0ODM4YmVmYzhjYWZjZDU0ZTM2MTk5NDY1MTVkOWU0NGQ2M2Q2MWM0YWRmN2Y1NTEzZGRmYmViZiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvX2dpdC5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc2hhcmVkLW1pbWUtaW5mby9zaGFyZWQtbWltZS1pbmZvX2dpdC5iYgpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi43YTA2MGIwCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zaGFyZWQtbWltZS1pbmZvL3NoYXJlZC1taW1lLWluZm9fZ2l0LmJiCkBAIC0wLDAgKzEsNDMgQEAKK1NVTU1BUlkgPSAiU2hhcmVkIE1JTUUgdHlwZSBkYXRhYmFzZSBhbmQgc3BlY2lmaWNhdGlvbiIKK0hPTUVQQUdFID0gImh0dHA6Ly9mcmVlZGVza3RvcC5vcmcvd2lraS9Tb2Z0d2FyZS9zaGFyZWQtbWltZS1pbmZvIgorU0VDVElPTiA9ICJiYXNlIgorCitMSUNFTlNFID0gIkdQTHYyIgorTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vQ09QWUlORzttZDU9YjIzNGVlNGQ2OWY1ZmNlNDQ4NmE4MGZkYWY0YTQyNjMiCisKK0RFUEVORFMgPSAibGlieG1sMiBpdHN0b29sLW5hdGl2ZSBnbGliLTIuMCBzaGFyZWQtbWltZS1pbmZvLW5hdGl2ZSIKKworU1JDX1VSSSA9ICJnaXQ6Ly9naXRsYWIuZnJlZWRlc2t0b3Aub3JnL3hkZy9zaGFyZWQtbWltZS1pbmZvLmdpdDtwcm90b2NvbD1odHRwcyIKK1NSQ1JFViA9ICI4MjliMjZkODVlN2Q4OWEwY2FlZTAzMDQ2YzNiY2UzNzNmMDRjODBhIgorUFYgPSAiMS4xNSIKK1MgPSAiJHtXT1JLRElSfS9naXQiCisKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIlJlbGVhc2UtKD9QPHB2ZXI+KFxkKyhcLVxkKykrKSkiCitVUFNUUkVBTV9WRVJTSU9OX1VOS05PV04gPSAiMSIKKworaW5oZXJpdCBhdXRvdG9vbHMgcGtnY29uZmlnIGdldHRleHQgcHl0aG9uM25hdGl2ZSBtaW1lCisKK0VYVFJBX09FQ09ORiA9ICItLWRpc2FibGUtdXBkYXRlLW1pbWVkYiIKKworRklMRVNfJHtQTn0gKz0gIiR7ZGF0YWRpcn0vbWltZSIKK0ZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS9wa2djb25maWcvc2hhcmVkLW1pbWUtaW5mby5wYyIKKworIyBmcmVlZGVza3RvcC5vcmcueG1sIGlzIG9ubHkgcmVxdWlyZWQgd2hlbiB1cGRhdGluZyB0aGUgbWltZSBkYXRhYmFzZSwKKyMgcGFja2FnZSBpdCBzZXBhcmF0ZWx5CitQQUNLQUdFUyA9KyAic2hhcmVkLW1pbWUtaW5mby1kYXRhIgorRklMRVNfc2hhcmVkLW1pbWUtaW5mby1kYXRhID0gIiR7ZGF0YWRpcn0vbWltZS9wYWNrYWdlcy9mcmVlZGVza3RvcC5vcmcueG1sIgorUkRFUEVORFNfc2hhcmVkLW1pbWUtaW5mby1kYXRhID0gInNoYXJlZC1taW1lLWluZm8iCisKK2RvX2luc3RhbGwgKCkgeworCWF1dG90b29sc19kb19pbnN0YWxsCisKKwl1cGRhdGUtbWltZS1kYXRhYmFzZSAke0R9JHtkYXRhZGlyfS9taW1lCit9CisKK2RvX2luc3RhbGxfY2xhc3MtbmF0aXZlICgpIHsKKwlhdXRvdG9vbHNfZG9faW5zdGFsbAorCisJJHtCfS91cGRhdGUtbWltZS1kYXRhYmFzZSAke0R9JHtkYXRhZGlyfS9taW1lCit9CisKK0JCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL2ZpbGVzL0NWRS0yMDIwLTkzMjcucGF0Y2ggYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9maWxlcy9DVkUtMjAyMC05MzI3LnBhdGNoCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmZlY2JiYWIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9maWxlcy9DVkUtMjAyMC05MzI3LnBhdGNoCkBAIC0wLDAgKzEsMTQxIEBACitGcm9tIDQ1ZDQ5MTg1MWUxYmNhMzc4ZGUxNThhNWUyNzlmZDU4NGNlNTQ4ZTQgTW9uIFNlcCAxNyAwMDowMDowMCAyMDAxCitGcm9tOiAiRC4gUmljaGFyZCBIaXBwIiA8ZHJoQGh3YWNpLmNvbT4KK0RhdGU6IE1vbiwgMTcgRmViIDIwMjAgMDA6MTI6MDQgKzAwMDAKK1N1YmplY3Q6IFtQQVRDSF0gW1BBVENIIDEvMl0gIFRha2UgY2FyZSB3aGVuIGNoZWNraW5nIHRoZSB0YWJsZSBvZiBhIFRLX0NPTFVNTgorICBleHByZXNzaW9uIG5vZGUgdG8gc2VlIGlmIHRoZSB0YWJsZSBpcyBhIHZpcnR1YWwgdGFibGUgdG8gZmlyc3QgZW5zdXJlIHRoYXQgCisgdGhlIEV4cHIueS5wVGFiIHBvaW50ZXIgaXMgbm90IG51bGwgZHVlIHRvIGdlbmVyYXRlZCBjb2x1bW4gb3B0aW1pemF0aW9ucy4gCisgVGlja2V0IFs0Mzc0ODYwYjI5MzgzMzgwXS4KKworRm9zc2lsT3JpZ2luLU5hbWU6IDlkMGQ0YWI5NWRjMGM1NmUwNTNjMjkyNGVkMzIyYTllYTdiMjU0MzllNmY3NDU5OWY3MDY5MDVhMTk5NGU0NTQKKworW1BBVENIIDIvMl0gQSBiZXR0ZXIgKHNtYWxsZXIgYW5kIGZhc3Rlcikgc29sdXRpb24gdG8gdGlja2V0CisgWzQzNzQ4NjBiMjkzODMzODBdLgorCitGb3NzaWxPcmlnaW4tTmFtZTogYWJjNDczZmI4ZmI5OTkwMDVkYzc5YTM2MGUzNGY5N2IzYjI1NDI5ZGVjZjE4MjBkZDJhZmE1YzE5NTc3NzUzZAorCitUaGUgdHdvIHBhdGNoZXMgd2VyZSBjb252ZXJ0ZWQgdG8gYW1hbGdhbWF0aW9uIGZvcm1hdAorCitTaWduZWQtb2ZmLWJ5OiBBbnVqIE1pdHRhbCA8YW51ai5taXR0YWxAaW50ZWwuY29tPgorVXBzdHJlYW0tU3RhdHVzOiBCYWNrcG9ydAorQ1ZFOiBDVkUtMjAyMC05MzI3CistLS0KKyBzcWxpdGUzLmMgfCAzNSArKysrKysrKysrKysrKysrKysrKysrKystLS0tLS0tLS0tLQorIHNxbGl0ZTMuaCB8ICAyICstCisgMiBmaWxlcyBjaGFuZ2VkLCAyNSBpbnNlcnRpb25zKCspLCAxMiBkZWxldGlvbnMoLSkKKworZGlmZiAtLWdpdCBhL3NxbGl0ZTMuYyBiL3NxbGl0ZTMuYworaW5kZXggNTVkYzY4Ni4uNjRmYWUwNCAxMDA2NDQKKy0tLSBhL3NxbGl0ZTMuYworKysrIGIvc3FsaXRlMy5jCitAQCAtMTE2Nyw3ICsxMTY3LDcgQEAgZXh0ZXJuICJDIiB7CisgKi8KKyAjZGVmaW5lIFNRTElURV9WRVJTSU9OICAgICAgICAiMy4zMS4xIgorICNkZWZpbmUgU1FMSVRFX1ZFUlNJT05fTlVNQkVSIDMwMzEwMDEKKy0jZGVmaW5lIFNRTElURV9TT1VSQ0VfSUQgICAgICAiMjAyMC0wMS0yNyAxOTo1NTo1NCAzYmZhOWNjOTdkYTEwNTk4NTIxYjM0Mjk2MWRmOGY1ZjY4YzczODhmYTExNzM0NWVlYjUxNmVhYTgzN2JiNGQ2IgorKyNkZWZpbmUgU1FMSVRFX1NPVVJDRV9JRCAgICAgICIyMDIwLTAxLTI3IDE5OjU1OjU0IDNiZmE5Y2M5N2RhMTA1OTg1MjFiMzQyOTYxZGY4ZjVmNjhjNzM4OGZhMTE3MzQ1ZWViNTE2ZWFhODM3YmFsdDEiCisgCisgLyoKKyAqKiBDQVBJM1JFRjogUnVuLVRpbWUgTGlicmFyeSBWZXJzaW9uIE51bWJlcnMKK0BAIC0xNzQyOCw4ICsxNzQyOCwxMSBAQCBzdHJ1Y3QgVGFibGUgeworICovCisgI2lmbmRlZiBTUUxJVEVfT01JVF9WSVJUVUFMVEFCTEUKKyAjICBkZWZpbmUgSXNWaXJ0dWFsKFgpICAgICAgKChYKS0+bk1vZHVsZUFyZykKKysjICBkZWZpbmUgRXhwcklzVnRhYihYKSAgXAorKyAgICAgICAgICAgICAgKChYKS0+b3A9PVRLX0NPTFVNTiAmJiAoWCktPnkucFRhYiE9MCAmJiAoWCktPnkucFRhYi0+bk1vZHVsZUFyZykKKyAjZWxzZQorICMgIGRlZmluZSBJc1ZpcnR1YWwoWCkgICAgICAwCisrIyAgZGVmaW5lIEV4cHJJc1Z0YWIoWCkgICAgIDAKKyAjZW5kaWYKKyAKKyAvKgorQEAgLTEwNDEzMywxOSArMTA0MTM2LDI1IEBAIHN0YXRpYyBpbnQgaW1wbGllc05vdE51bGxSb3coV2Fsa2VyICpwV2Fsa2VyLCBFeHByICpwRXhwcil7CisgICAgIGNhc2UgVEtfTFQ6CisgICAgIGNhc2UgVEtfTEU6CisgICAgIGNhc2UgVEtfR1Q6CistICAgIGNhc2UgVEtfR0U6CisrICAgIGNhc2UgVEtfR0U6IHsKKysgICAgICBFeHByICpwTGVmdCA9IHBFeHByLT5wTGVmdDsKKysgICAgICBFeHByICpwUmlnaHQgPSBwRXhwci0+cFJpZ2h0OworICAgICAgIHRlc3RjYXNlKCBwRXhwci0+b3A9PVRLX0VRICk7CisgICAgICAgdGVzdGNhc2UoIHBFeHByLT5vcD09VEtfTkUgKTsKKyAgICAgICB0ZXN0Y2FzZSggcEV4cHItPm9wPT1US19MVCApOworICAgICAgIHRlc3RjYXNlKCBwRXhwci0+b3A9PVRLX0xFICk7CisgICAgICAgdGVzdGNhc2UoIHBFeHByLT5vcD09VEtfR1QgKTsKKyAgICAgICB0ZXN0Y2FzZSggcEV4cHItPm9wPT1US19HRSApOworLSAgICAgIGlmKCAocEV4cHItPnBMZWZ0LT5vcD09VEtfQ09MVU1OICYmIElzVmlydHVhbChwRXhwci0+cExlZnQtPnkucFRhYikpCistICAgICAgIHx8IChwRXhwci0+cFJpZ2h0LT5vcD09VEtfQ09MVU1OICYmIElzVmlydHVhbChwRXhwci0+cFJpZ2h0LT55LnBUYWIpKQorKyAgICAgIC8qIFRoZSB5LnBUYWI9MCBhc3NpZ25tZW50IGluIHdoZXJlY29kZS5jIGFsd2F5cyBoYXBwZW5zIGFmdGVyIHRoZQorKyAgICAgICoqIGltcGxpZXNOb3ROdWxsUm93KCkgdGVzdCAqLworKyAgICAgIGlmKCAocExlZnQtPm9wPT1US19DT0xVTU4gJiYgQUxXQVlTKHBMZWZ0LT55LnBUYWIhPTApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIElzVmlydHVhbChwTGVmdC0+eS5wVGFiKSkKKysgICAgICAgfHwgKHBSaWdodC0+b3A9PVRLX0NPTFVNTiAmJiBBTFdBWVMocFJpZ2h0LT55LnBUYWIhPTApCisrICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICYmIElzVmlydHVhbChwUmlnaHQtPnkucFRhYikpCisgICAgICAgKXsKKy0gICAgICAgcmV0dXJuIFdSQ19QcnVuZTsKKysgICAgICAgIHJldHVybiBXUkNfUHJ1bmU7CisgICAgICAgfQorLQorKyAgICB9CisgICAgIGRlZmF1bHQ6CisgICAgICAgcmV0dXJuIFdSQ19Db250aW51ZTsKKyAgIH0KK0BAIC0xNDI1OTEsNyArMTQyNjAwLDggQEAgc3RhdGljIGludCBpc0F1eGlsaWFyeVZ0YWJPcGVyYXRvcigKKyAgICAgKiogICAgICAgTUFUQ0goZXhwcmVzc2lvbix2dGFiX2NvbHVtbikKKyAgICAgKi8KKyAgICAgcENvbCA9IHBMaXN0LT5hWzFdLnBFeHByOworLSAgICBpZiggcENvbC0+b3A9PVRLX0NPTFVNTiAmJiBJc1ZpcnR1YWwocENvbC0+eS5wVGFiKSApeworKyAgICB0ZXN0Y2FzZSggcENvbC0+b3A9PVRLX0NPTFVNTiAmJiBwQ29sLT55LnBUYWI9PTAgKTsKKysgICAgaWYoIEV4cHJJc1Z0YWIocENvbCkgKXsKKyAgICAgICBmb3IoaT0wOyBpPEFycmF5U2l6ZShhT3ApOyBpKyspeworICAgICAgICAgaWYoIHNxbGl0ZTNTdHJJQ21wKHBFeHByLT51LnpUb2tlbiwgYU9wW2ldLnpPcCk9PTAgKXsKKyAgICAgICAgICAgKnBlT3AyID0gYU9wW2ldLmVPcDI7CitAQCAtMTQyNjEzLDcgKzE0MjYyMyw4IEBAIHN0YXRpYyBpbnQgaXNBdXhpbGlhcnlWdGFiT3BlcmF0b3IoCisgICAgICoqIHdpdGggZnVuY3Rpb24gbmFtZXMgaW4gYW4gYXJiaXRyYXJ5IGNhc2UuCisgICAgICovCisgICAgIHBDb2wgPSBwTGlzdC0+YVswXS5wRXhwcjsKKy0gICAgaWYoIHBDb2wtPm9wPT1US19DT0xVTU4gJiYgSXNWaXJ0dWFsKHBDb2wtPnkucFRhYikgKXsKKysgICAgdGVzdGNhc2UoIHBDb2wtPm9wPT1US19DT0xVTU4gJiYgcENvbC0+eS5wVGFiPT0wICk7CisrICAgIGlmKCBFeHBySXNWdGFiKHBDb2wpICl7CisgICAgICAgc3FsaXRlM192dGFiICpwVnRhYjsKKyAgICAgICBzcWxpdGUzX21vZHVsZSAqcE1vZDsKKyAgICAgICB2b2lkICgqeE5vdFVzZWQpKHNxbGl0ZTNfY29udGV4dCosaW50LHNxbGl0ZTNfdmFsdWUqKik7CitAQCAtMTQyNjM2LDEwICsxNDI2NDcsMTIgQEAgc3RhdGljIGludCBpc0F1eGlsaWFyeVZ0YWJPcGVyYXRvcigKKyAgICAgaW50IHJlcyA9IDA7CisgICAgIEV4cHIgKnBMZWZ0ID0gcEV4cHItPnBMZWZ0OworICAgICBFeHByICpwUmlnaHQgPSBwRXhwci0+cFJpZ2h0OworLSAgICBpZiggcExlZnQtPm9wPT1US19DT0xVTU4gJiYgSXNWaXJ0dWFsKHBMZWZ0LT55LnBUYWIpICl7CisrICAgIHRlc3RjYXNlKCBwTGVmdC0+b3A9PVRLX0NPTFVNTiAmJiBwTGVmdC0+eS5wVGFiPT0wICk7CisrICAgIGlmKCBFeHBySXNWdGFiKHBMZWZ0KSApeworICAgICAgIHJlcysrOworICAgICB9CistICAgIGlmKCBwUmlnaHQgJiYgcFJpZ2h0LT5vcD09VEtfQ09MVU1OICYmIElzVmlydHVhbChwUmlnaHQtPnkucFRhYikgKXsKKysgICAgdGVzdGNhc2UoIHBSaWdodCAmJiBwUmlnaHQtPm9wPT1US19DT0xVTU4gJiYgcFJpZ2h0LT55LnBUYWI9PTAgKTsKKysgICAgaWYoIHBSaWdodCAmJiBFeHBySXNWdGFiKHBSaWdodCkgKXsKKyAgICAgICByZXMrKzsKKyAgICAgICBTV0FQKEV4cHIqLCBwTGVmdCwgcFJpZ2h0KTsKKyAgICAgfQorQEAgLTIyODQ0MCw3ICsyMjg0NTMsNyBAQCBTUUxJVEVfQVBJIGludCBzcWxpdGUzX3N0bXRfaW5pdCgKKyAjZW5kaWYgLyogIWRlZmluZWQoU1FMSVRFX0NPUkUpIHx8IGRlZmluZWQoU1FMSVRFX0VOQUJMRV9TVE1UVlRBQikgKi8KKyAKKyAvKioqKioqKioqKioqKiogRW5kIG9mIHN0bXQuYyAqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKioqKiovCistI2lmIF9fTElORV9fIT0yMjg0NDMKKysjaWYgX19MSU5FX18hPTIyODQ1NgorICN1bmRlZiBTUUxJVEVfU09VUkNFX0lECisgI2RlZmluZSBTUUxJVEVfU09VUkNFX0lEICAgICAgIjIwMjAtMDEtMjcgMTk6NTU6NTQgM2JmYTljYzk3ZGExMDU5ODUyMWIzNDI5NjFkZjhmNWY2OGM3Mzg4ZmExMTczNDVlZWI1MTZlYWE4MzdiYWx0MiIKKyAjZW5kaWYKK2RpZmYgLS1naXQgYS9zcWxpdGUzLmggYi9zcWxpdGUzLmgKK2luZGV4IGNlZjZlZWEuLjViOTc5NmMgMTAwNjQ0CistLS0gYS9zcWxpdGUzLmgKKysrKyBiL3NxbGl0ZTMuaAorQEAgLTEyNSw3ICsxMjUsNyBAQCBleHRlcm4gIkMiIHsKKyAqLworICNkZWZpbmUgU1FMSVRFX1ZFUlNJT04gICAgICAgICIzLjMxLjEiCisgI2RlZmluZSBTUUxJVEVfVkVSU0lPTl9OVU1CRVIgMzAzMTAwMQorLSNkZWZpbmUgU1FMSVRFX1NPVVJDRV9JRCAgICAgICIyMDIwLTAxLTI3IDE5OjU1OjU0IDNiZmE5Y2M5N2RhMTA1OTg1MjFiMzQyOTYxZGY4ZjVmNjhjNzM4OGZhMTE3MzQ1ZWViNTE2ZWFhODM3YmI0ZDYiCisrI2RlZmluZSBTUUxJVEVfU09VUkNFX0lEICAgICAgIjIwMjAtMDEtMjcgMTk6NTU6NTQgM2JmYTljYzk3ZGExMDU5ODUyMWIzNDI5NjFkZjhmNWY2OGM3Mzg4ZmExMTczNDVlZWI1MTZlYWE4MzdiYWx0MSIKKyAKKyAvKgorICoqIENBUEkzUkVGOiBSdW4tVGltZSBMaWJyYXJ5IFZlcnNpb24gTnVtYmVycworLS0gCisyLjI1LjEKKwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC9zcWxpdGUvc3FsaXRlM18zLjMwLjEuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMzAuMS5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggZjE4ZWViMS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMzAuMS5iYgorKysgL2Rldi9udWxsCkBAIC0xLDggKzAsMCBAQAotcmVxdWlyZSBzcWxpdGUzLmluYwotCi1MSUNFTlNFID0gIlBEIgotTElDX0ZJTEVTX0NIS1NVTSA9ICJmaWxlOi8vc3FsaXRlMy5oO2VuZGxpbmU9MTE7bWQ1PTc4NmQzZGM1ODFlZmYwM2Y0ZmQ5ZTRhNzdlZDAwYzY2IgotCi1TUkNfVVJJID0gImh0dHA6Ly93d3cuc3FsaXRlLm9yZy8yMDE5L3NxbGl0ZS1hdXRvY29uZi0ke1NRTElURV9QVn0udGFyLmd6IgotU1JDX1VSSVttZDVzdW1dID0gIjUxMjUyZGM2YmM5MDk0YmExMWFiMTUxYmE2NTBmZjNjIgotU1JDX1VSSVtzaGEyNTZzdW1dID0gIjhjNWE1MGRiMDg5YmQyYTFiMDhkYmM1YjAwZDIwMjc2MDJjYTdmZjIzOGJhNzY1OGZhYmNhNDU0ZDQyOThlNjAiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMzEuMS5iYiBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvc3FsaXRlL3NxbGl0ZTNfMy4zMS4xLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmRlNTY0ZTIKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3NxbGl0ZS9zcWxpdGUzXzMuMzEuMS5iYgpAQCAtMCwwICsxLDEzIEBACityZXF1aXJlIHNxbGl0ZTMuaW5jCisKK0xJQ0VOU0UgPSAiUEQiCitMSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9zcWxpdGUzLmg7ZW5kbGluZT0xMTttZDU9Nzg2ZDNkYzU4MWVmZjAzZjRmZDllNGE3N2VkMDBjNjYiCisKK1NSQ19VUkkgPSAiaHR0cDovL3d3dy5zcWxpdGUub3JnLzIwMjAvc3FsaXRlLWF1dG9jb25mLSR7U1FMSVRFX1BWfS50YXIuZ3ogXAorICAgICAgICAgICBmaWxlOi8vQ1ZFLTIwMjAtOTMyNy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbbWQ1c3VtXSA9ICIyZDBhNTUzNTM0YzUyMTUwNGUzYWMzYWQzYjkwZjEyNSIKK1NSQ19VUklbc2hhMjU2c3VtXSA9ICI2MjI4NGVmZWJjMDVhNzZmOTA5YzU4MGZmYTVjMDA4YTdkMjJhMTI4NzI4NWQ2OGI3ODI1YTJiNmI1MTk0OWFlIgorCisjIC0xOTI0MiBpcyBvbmx5IGFuIGlzc3VlIGluIHNwZWNpZmljIGRldmVsb3BtZW50IGJyYW5jaCBjb21taXRzCitDVkVfQ0hFQ0tfV0hJVEVMSVNUICs9ICJDVkUtMjAxOS0xOTI0MiIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdmltL2ZpbGVzL25vLXBhdGgtYWRqdXN0LnBhdGNoIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vZmlsZXMvbm8tcGF0aC1hZGp1c3QucGF0Y2gKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMDVjMmQ4MAotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdmltL2ZpbGVzL25vLXBhdGgtYWRqdXN0LnBhdGNoCkBAIC0wLDAgKzEsMjcgQEAKK3ZpbTogZG8gbm90IGFkanVzdCBzY3JpcHQgcGF0aG5hbWVzCisKK1doZW4gY3Jvc3MtY29tcGlsaW5nLCB3ZSBkbyBub3Qgd2FudCB0byByZWZlcmVuY2UgdGhlIGhvc3QgdmVyc2lvbnMgb2YKK3RoaW5ncyBsaWtlIHBlcmwgYW5kIGF3ay4KKworVXBzdHJlYW0tU3RhdHVzOiBQZW5kaW5nCisKK1NpZ25lZC1vZmYtYnk6IEpvZSBTbGF0ZXIgPGpvZS5zbGF0ZXJAd2luZHJpdmVyLmNvbT4KKworLS0tIGEvc3JjL01ha2VmaWxlCisrKysgYi9zcmMvTWFrZWZpbGUKK0BAIC0yNTA3LDExICsyNTA3LDE0IEBAIGluc3RhbGx0b29sczogJChUT09MUykgJChERVNURElSKSQoZXhlY18KKyAJCSBybSAtcmYgJCRjdnM7IFwKKyAJICAgICAgZmkKKyAJLWNobW9kICQoRklMRU1PRCkgJChERVNUX1RPT0xTKS8qCistIyByZXBsYWNlIHRoZSBwYXRoIGluIHNvbWUgdG9vbHMKKysKKysjIHJlcGxhY2UgdGhlIHBhdGggaW4gc29tZSB0b29scywgYnV0IG5vdCB3aGVuIGNyb3NzLWNvbXBpbGluZworK2lmbmVxICgkKENST1NTX0NPTVBJTElORyksMSkKKyAJcGVybHBhdGg9YC4vd2hpY2guc2ggcGVybGAgJiYgc2VkIC1lICJzKy91c3IvYmluL3BlcmwrJCRwZXJscGF0aCsiICQoVE9PTFNTT1VSQ0UpL2VmbV9wZXJsLnBsID4kKERFU1RfVE9PTFMpL2VmbV9wZXJsLnBsCisgCWF3a3BhdGg9YC4vd2hpY2guc2ggbmF3a2AgJiYgc2VkIC1lICJzKy91c3IvYmluL25hd2srJCRhd2twYXRoKyIgJChUT09MU1NPVVJDRSkvbXZlLmF3ayA+JChERVNUX1RPT0xTKS9tdmUuYXdrOyBpZiB0ZXN0IC16ICIkJGF3a3BhdGgiOyB0aGVuIFwKKyAJCWF3a3BhdGg9YC4vd2hpY2guc2ggZ2F3a2AgJiYgc2VkIC1lICJzKy91c3IvYmluL25hd2srJCRhd2twYXRoKyIgJChUT09MU1NPVVJDRSkvbXZlLmF3ayA+JChERVNUX1RPT0xTKS9tdmUuYXdrOyBpZiB0ZXN0IC16ICIkJGF3a3BhdGgiOyB0aGVuIFwKKyAJCWF3a3BhdGg9YC4vd2hpY2guc2ggYXdrYCAmJiBzZWQgLWUgInMrL3Vzci9iaW4vbmF3ayskJGF3a3BhdGgrIiAkKFRPT0xTU09VUkNFKS9tdmUuYXdrID4kKERFU1RfVE9PTFMpL212ZS5hd2s7IGZpOyBmaQorK2VuZGlmCisgCS1jaG1vZCAkKFNDUklQVE1PRCkgYGdyZXAgLWwgIl4jISIgJChERVNUX1RPT0xTKS8qYAorIAorICMgaW5zdGFsbCB0aGUgbGFuZ3VhZ2Ugc3BlY2lmaWMgZmlsZXMgZm9yIHRvb2xzLCBpZiB0aGV5IHdlcmUgdW5wYWNrZWQKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbS10aW55XzguMS4xNTE4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltLXRpbnlfOC4yLmJiCnNpbWlsYXJpdHkgaW5kZXggMTAwJQpyZW5hbWUgZnJvbSBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW0tdGlueV84LjEuMTUxOC5iYgpyZW5hbWUgdG8gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltLXRpbnlfOC4yLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW0uaW5jIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltLmluYwppbmRleCAwYTMxZTY4Li45ZjNkYzA4IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW0uaW5jCisrKyBiL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdmltL3ZpbS5pbmMKQEAgLTUsMjAgKzUsMjQgQEAKICMgdmltZGlmZiBkb2Vzbid0IGxpa2UgYnVzeWJveCBkaWZmCiBSU1VHR0VTVFNfJHtQTn0gPSAiZGlmZnV0aWxzIgogTElDRU5TRSA9ICJ2aW0iCi1MSUNfRklMRVNfQ0hLU1VNID0gImZpbGU6Ly9ydW50aW1lL2RvYy91Z2FuZGEudHh0O2VuZGxpbmU9Mjg3O21kNT1mMWY4MmI0MjM2MDAwNWM3MGI4YzE5YjBlZjQ5M2Y3MiIKK0xJQ19GSUxFU19DSEtTVU0gPSAiZmlsZTovL3J1bnRpbWUvZG9jL3VnYW5kYS50eHQ7ZW5kbGluZT0yODc7bWQ1PWExOWVkZDdlYzcwZDU3M2EwMDVkOWU1MDkzNzVhOTlhIgogCiBTUkNfVVJJID0gImdpdDovL2dpdGh1Yi5jb20vdmltL3ZpbS5naXQgXAogICAgICAgICAgICBmaWxlOi8vZGlzYWJsZV9hY2xfaGVhZGVyX2NoZWNrLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovL3ZpbS1hZGQta25vYi13aGV0aGVyLWVsZi5oLWFyZS1jaGVja2VkLnBhdGNoIFwKICAgICAgICAgICAgZmlsZTovLzAwMDEtc3JjLU1ha2VmaWxlLWltcHJvdmUtcmVwcm9kdWNpYmlsaXR5LnBhdGNoIFwKKyAgICAgICAgICAgZmlsZTovL25vLXBhdGgtYWRqdXN0LnBhdGNoIFwKICIKLVNSQ1JFViA9ICIyMDJkOTgyYjM2ZDg3Y2Y5MWQ5OTJiZDdlMzBkMzIyM2JkYzcyY2Q5IgorU1JDUkVWID0gIjk4MDU2NTMzYjk2YjZiNWQ4ODQ5NjQxZGU5MzE4NWRkN2JjYWRjNDQiCisKKyMgRG8gbm90IGNvbnNpZGVyIC56IGluIHgueS56LCBhcyB0aGF0IGlzIHVwZGF0ZWQgd2l0aCBldmVyeSBjb21taXQKK1VQU1RSRUFNX0NIRUNLX0dJVFRBR1JFR0VYID0gIig/UDxwdmVyPlxkK1wuXGQrKVwuMCIKIAogUyA9ICIke1dPUktESVJ9L2dpdCIKIAogVklNRElSID0gInZpbSR7QGQuZ2V0VmFyKCdQVicpLnNwbGl0KCcuJylbMF19JHtAZC5nZXRWYXIoJ1BWJykuc3BsaXQoJy4nKVsxXX0iCiAKLWluaGVyaXQgYXV0b3Rvb2xzLWJyb2tlbnNlcCB1cGRhdGUtYWx0ZXJuYXRpdmVzCitpbmhlcml0IGF1dG90b29scy1icm9rZW5zZXAgdXBkYXRlLWFsdGVybmF0aXZlcyBtaW1lLXhkZwogCiBDTEVBTkJST0tFTiA9ICIxIgogCkBAIC03OSwxMiArODMsNiBAQAogZG9faW5zdGFsbCgpIHsKICAgICBhdXRvdG9vbHNfZG9faW5zdGFsbAogCi0gICAgIyBXb3JrIGFyb3VuZCBmaWxlLXJkZXBzIHBpY2tpbmcgdXAgY3NoLCBhd2ssIHBlcmwgb3IgcHl0aG9uIGFzIGEgZGVwCi0gICAgY2htb2QgLXggJHtEfSR7ZGF0YWRpcn0vJHtCUE59LyR7VklNRElSfS90b29scy92aW0xMzIKLSAgICBjaG1vZCAteCAke0R9JHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3Rvb2xzL212ZS5hd2sKLSAgICBjaG1vZCAteCAke0R9JHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3Rvb2xzLyoucGwKLSAgICBjaG1vZCAteCAke0R9JHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3Rvb2xzLyoucHkKLQogICAgICMgSW5zdGFsbCBleGFtcGxlIHZpbXJjIGZyb20gcnVudGltZSBmaWxlcwogICAgIGluc3RhbGwgLW0gMDY0NCBydW50aW1lL3ZpbXJjX2V4YW1wbGUudmltICR7RH0vJHtkYXRhZGlyfS8ke0JQTn0vdmltcmMKIApAQCAtMTA3LDcgKzEwNSwxMiBAQAogRklMRVNfJHtQTn0tdHV0b3IgPSAiJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3R1dG9yICR7YmluZGlyfS8ke0JQTn10dXRvciIKIEZJTEVTXyR7UE59LXZpbXJjID0gIiR7ZGF0YWRpcn0vJHtCUE59L3ZpbXJjIgogRklMRVNfJHtQTn0tZGF0YSA9ICIke2RhdGFkaXJ9LyR7QlBOfSIKKworIyBXZSBkbyBub3Qgd2FudCB0byBjb21wbGFpbiBpZiBwZXJsIG9yIGdhd2sgYXJlIG5vdCBvbiB0aGUgdGFyZ2V0LgorIwogRklMRVNfJHtQTn0tdG9vbHMgPSAiJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9L3Rvb2xzIgorSU5TQU5FX1NLSVBfJHtQTn0tdG9vbHMgPSAiZmlsZS1yZGVwcyIKKwogRklMRVNfJHtQTn0tY29tbW9uID0gIiBcCiAgICAgJHtkYXRhZGlyfS8ke0JQTn0vJHtWSU1ESVJ9LyoudmltIFwKICAgICAke2RhdGFkaXJ9LyR7QlBOfS8ke1ZJTURJUn0vYXV0b2xvYWQgXApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltXzguMS4xNTE4LmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltXzguMi5iYgpzaW1pbGFyaXR5IGluZGV4IDEwMCUKcmVuYW1lIGZyb20gcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92aW0vdmltXzguMS4xNTE4LmJiCnJlbmFtZSB0byBwb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3ZpbS92aW1fOC4yLmJiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41OC4yLmJiIGIvcG9reS9tZXRhL3JlY2lwZXMtc3VwcG9ydC92dGUvdnRlXzAuNTguMi5iYgpkZWxldGVkIGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMGVkMzgyYS4uMDAwMDAwMAotLS0gYS9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41OC4yLmJiCisrKyAvZGV2L251bGwKQEAgLTEsNTYgKzAsMCBAQAotU1VNTUFSWSA9ICJWaXJ0dWFsIHRlcm1pbmFsIGVtdWxhdG9yIEdUSysgd2lkZ2V0IGxpYnJhcnkiCi1CVUdUUkFDS0VSID0gImh0dHBzOi8vYnVnemlsbGEuZ25vbWUub3JnL2J1Z2xpc3QuY2dpP3Byb2R1Y3Q9dnRlIgotTElDRU5TRSA9ICJHUEx2MyAmIExHUEx2MysgJiBMR1BMdjIuMSsiCi1MSUNFTlNFX2xpYnZ0ZSA9ICJMR1BMdjMrIgotCi1MSUNfRklMRVNfQ0hLU1VNID0gIiBcCi0gICAgZmlsZTovL0NPUFlJTkcuR1BMMzttZDU9MmYzMWIyNjZkMzQ0MGRkN2VlNTBmOTJjZjY3ZDhlNmMgXAotICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEwyO21kNT00ZmJkNjUzODBjZGQyNTU5NTEwNzkwMDhiMzY0NTE2YyBcCi0gICAgZmlsZTovL0NPUFlJTkcuTEdQTDM7bWQ1PWI1MmYyZDU3ZDEwYzRmN2VlNjdhN2ViOTYxNWQ1ZDI0IFwKLSIKLQotREVQRU5EUyA9ICJnbGliLTIuMCBndGsrMyBsaWJwY3JlMiBsaWJ4bWwyLW5hdGl2ZSBncGVyZi1uYXRpdmUiCi0KLUdOT01FQkFTRUJVSUxEQ0xBU1MgPSAibWVzb24iCi1HSVJfTUVTT05fT1BUSU9OID0gJ2dpcicKLQotaW5oZXJpdCBnbm9tZWJhc2UgZ3RrLWRvYyBmZWF0dXJlc19jaGVjayB1cHN0cmVhbS12ZXJzaW9uLWlzLWV2ZW4gZ29iamVjdC1pbnRyb3NwZWN0aW9uCi0KLSMgdmFwaWdlbi5tNCBpcyByZXF1aXJlZCB3aGVuIHZhbGEgaXMgbm90IHByZXNlbnQgKGJ1dCB0aGUgb25lIGZyb20gdmFsYSBzaG91bGQgYmUgdXNlZCBub3JtYWxseSkKLVNSQ19VUkkgKz0gImZpbGU6Ly8wMDAxLWFwcC5jYy11c2Utb2xkLXNjaG9vbC1hc2lnbm1lbnQtdG8tYXZvaWQtZ2NjLTQuOC1lcnIucGF0Y2ggXAotICAgICAgICAgICAgZmlsZTovLzAwMDItQWRkLVdfRVhJVENPREUtbWFjcm8tZm9yLW5vbi1nbGliYy1zeXN0ZW1zLnBhdGNoIFwKLSAgICAgICAgICAgIgotU1JDX1VSSVthcmNoaXZlLm1kNXN1bV0gPSAiZGFkYmYyYzFkOTg2NGQzZWExODU3MzhmOTdhYjYzYWYiCi1TUkNfVVJJW2FyY2hpdmUuc2hhMjU2c3VtXSA9ICIzM2M5NjZkMmIxZjJjM2IwZjk0MTZkYmNhODgzZmQ3NDYxNTliNWJkMDQwMzUwZTNiNzhmODEwNGIyYTQyYmMwIgotCi1BTllfT0ZfRElTVFJPX0ZFQVRVUkVTID0gIiR7R1RLM0RJU1RST0ZFQVRVUkVTfSIKLQotIyBJbnN0ZWFkIG9mICJpbmhlcml0IHZhbGEiIHdlIGRvIHRoZSByZWxldmFudCBzZXR0aW5ncyBoZXJlIHNvIHdlIGNhbgotIyBzZXQgREVQRU5EUyBiYXNlZCBvbiBQQUNLQUdFQ09ORklHLgotCi0jIE91ciBwYXRjaGVkIHZlcnNpb24gb2YgVmFsYSBsb29rcyBpbiBTVEFHSU5HX0RBVEFESVIgZm9yIC52YXBpIGZpbGVzCi1leHBvcnQgU1RBR0lOR19EQVRBRElSCi0jIFVwc3RyZWFtIFZhbGEgPj0gMC4xMSBsb29rcyBpbiBYREdfREFUQV9ESVJTIGZvciAudmFwaSBmaWxlcwotZXhwb3J0IFhER19EQVRBX0RJUlMgPSAiJHtTVEFHSU5HX0RBVEFESVJ9IgotCi0jIEhlbHAgZy1pci1zY2FubmVyIGZpbmQgdGhlIC5zbyBmb3IgbGlua2luZwotZG9fY29tcGlsZV9wcmVwZW5kKCkgewotICAgIGV4cG9ydCBHSVJfRVhUUkFfTElCU19QQVRIPSIke0J9L3NyYy8ubGlicyIKLX0KLQotIyBQYWNrYWdlIGFkZGl0aW9uYWwgZmlsZXMKLUZJTEVTXyR7UE59LWRldiArPSAiJHtkYXRhZGlyfS92YWxhL3ZhcGkvKiIKLQotUEFDS0FHRUNPTkZJRyA/Pz0gImdudXRscyIKLVBBQ0tBR0VDT05GSUdbdmFsYV0gPSAiLUR2YXBpPXRydWUsLUR2YXBpPWZhbHNlLHZhbGEtbmF0aXZlIHZhbGEiCi1QQUNLQUdFQ09ORklHW2dudXRsc10gPSAiLURnbnV0bHM9dHJ1ZSwtRGdudXRscz1mYWxzZSxnbnV0bHMiCi0jIHZhbGEgcmVxdWlyZXMgZ2lyCi1QQUNLQUdFQ09ORklHX3JlbW92ZV9jbGFzcy1uYXRpdmUgPSAidmFsYSIKLQotQ0ZMQUdTICs9ICItRF9HTlVfU09VUkNFIgotCi1QQUNLQUdFUyA9KyAibGlidnRlICR7UE59LXByb21wdCIKLUZJTEVTX2xpYnZ0ZSA9ICIke2xpYmRpcn0vKi5zby4qICR7bGliZGlyfS9naXJlcG9zaXRvcnktMS4wLyoiCi1GSUxFU18ke1BOfS1wcm9tcHQgPSAiJHtzeXNjb25mZGlyfS9wcm9maWxlLmQiCi0KLUJCQ0xBU1NFWFRFTkQgPSAibmF0aXZlIG5hdGl2ZXNkayIKZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9yZWNpcGVzLXN1cHBvcnQvdnRlL3Z0ZV8wLjU4LjMuYmIgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41OC4zLmJiCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjQxZGMyZTcKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L21ldGEvcmVjaXBlcy1zdXBwb3J0L3Z0ZS92dGVfMC41OC4zLmJiCkBAIC0wLDAgKzEsNTYgQEAKK1NVTU1BUlkgPSAiVmlydHVhbCB0ZXJtaW5hbCBlbXVsYXRvciBHVEsrIHdpZGdldCBsaWJyYXJ5IgorQlVHVFJBQ0tFUiA9ICJodHRwczovL2J1Z3ppbGxhLmdub21lLm9yZy9idWdsaXN0LmNnaT9wcm9kdWN0PXZ0ZSIKK0xJQ0VOU0UgPSAiR1BMdjMgJiBMR1BMdjMrICYgTEdQTHYyLjErIgorTElDRU5TRV9saWJ2dGUgPSAiTEdQTHYzKyIKKworTElDX0ZJTEVTX0NIS1NVTSA9ICIgXAorICAgIGZpbGU6Ly9DT1BZSU5HLkdQTDM7bWQ1PTJmMzFiMjY2ZDM0NDBkZDdlZTUwZjkyY2Y2N2Q4ZTZjIFwKKyAgICBmaWxlOi8vQ09QWUlORy5MR1BMMjttZDU9NGZiZDY1MzgwY2RkMjU1OTUxMDc5MDA4YjM2NDUxNmMgXAorICAgIGZpbGU6Ly9DT1BZSU5HLkxHUEwzO21kNT1iNTJmMmQ1N2QxMGM0ZjdlZTY3YTdlYjk2MTVkNWQyNCBcCisiCisKK0RFUEVORFMgPSAiZ2xpYi0yLjAgZ3RrKzMgbGlicGNyZTIgbGlieG1sMi1uYXRpdmUgZ3BlcmYtbmF0aXZlIgorCitHTk9NRUJBU0VCVUlMRENMQVNTID0gIm1lc29uIgorR0lSX01FU09OX09QVElPTiA9ICdnaXInCisKK2luaGVyaXQgZ25vbWViYXNlIGd0ay1kb2MgZmVhdHVyZXNfY2hlY2sgdXBzdHJlYW0tdmVyc2lvbi1pcy1ldmVuIGdvYmplY3QtaW50cm9zcGVjdGlvbgorCisjIHZhcGlnZW4ubTQgaXMgcmVxdWlyZWQgd2hlbiB2YWxhIGlzIG5vdCBwcmVzZW50IChidXQgdGhlIG9uZSBmcm9tIHZhbGEgc2hvdWxkIGJlIHVzZWQgbm9ybWFsbHkpCitTUkNfVVJJICs9ICJmaWxlOi8vMDAwMS1hcHAuY2MtdXNlLW9sZC1zY2hvb2wtYXNpZ25tZW50LXRvLWF2b2lkLWdjYy00LjgtZXJyLnBhdGNoIFwKKyAgICAgICAgICAgIGZpbGU6Ly8wMDAyLUFkZC1XX0VYSVRDT0RFLW1hY3JvLWZvci1ub24tZ2xpYmMtc3lzdGVtcy5wYXRjaCBcCisgICAgICAgICAgICIKK1NSQ19VUklbYXJjaGl2ZS5tZDVzdW1dID0gImY1OWViMDc4NGEzNjFjMDkzOWMwM2Q0NTY2MjU1OTE2IgorU1JDX1VSSVthcmNoaXZlLnNoYTI1NnN1bV0gPSAiMjJkY2I1NGFjMmFkMWE1NmFiMGE3NDVlMTZjY2ZlYjM4M2YwYjU4NjBiNWJmYTE3ODQ1NjEyMTZmOThkNDk3NSIKKworQU5ZX09GX0RJU1RST19GRUFUVVJFUyA9ICIke0dUSzNESVNUUk9GRUFUVVJFU30iCisKKyMgSW5zdGVhZCBvZiAiaW5oZXJpdCB2YWxhIiB3ZSBkbyB0aGUgcmVsZXZhbnQgc2V0dGluZ3MgaGVyZSBzbyB3ZSBjYW4KKyMgc2V0IERFUEVORFMgYmFzZWQgb24gUEFDS0FHRUNPTkZJRy4KKworIyBPdXIgcGF0Y2hlZCB2ZXJzaW9uIG9mIFZhbGEgbG9va3MgaW4gU1RBR0lOR19EQVRBRElSIGZvciAudmFwaSBmaWxlcworZXhwb3J0IFNUQUdJTkdfREFUQURJUgorIyBVcHN0cmVhbSBWYWxhID49IDAuMTEgbG9va3MgaW4gWERHX0RBVEFfRElSUyBmb3IgLnZhcGkgZmlsZXMKK2V4cG9ydCBYREdfREFUQV9ESVJTID0gIiR7U1RBR0lOR19EQVRBRElSfSIKKworIyBIZWxwIGctaXItc2Nhbm5lciBmaW5kIHRoZSAuc28gZm9yIGxpbmtpbmcKK2RvX2NvbXBpbGVfcHJlcGVuZCgpIHsKKyAgICBleHBvcnQgR0lSX0VYVFJBX0xJQlNfUEFUSD0iJHtCfS9zcmMvLmxpYnMiCit9CisKKyMgUGFja2FnZSBhZGRpdGlvbmFsIGZpbGVzCitGSUxFU18ke1BOfS1kZXYgKz0gIiR7ZGF0YWRpcn0vdmFsYS92YXBpLyoiCisKK1BBQ0tBR0VDT05GSUcgPz89ICJnbnV0bHMiCitQQUNLQUdFQ09ORklHW3ZhbGFdID0gIi1EdmFwaT10cnVlLC1EdmFwaT1mYWxzZSx2YWxhLW5hdGl2ZSB2YWxhIgorUEFDS0FHRUNPTkZJR1tnbnV0bHNdID0gIi1EZ251dGxzPXRydWUsLURnbnV0bHM9ZmFsc2UsZ251dGxzIgorIyB2YWxhIHJlcXVpcmVzIGdpcgorUEFDS0FHRUNPTkZJR19yZW1vdmVfY2xhc3MtbmF0aXZlID0gInZhbGEiCisKK0NGTEFHUyArPSAiLURfR05VX1NPVVJDRSIKKworUEFDS0FHRVMgPSsgImxpYnZ0ZSAke1BOfS1wcm9tcHQiCitGSUxFU19saWJ2dGUgPSAiJHtsaWJkaXJ9Lyouc28uKiAke2xpYmRpcn0vZ2lyZXBvc2l0b3J5LTEuMC8qIgorRklMRVNfJHtQTn0tcHJvbXB0ID0gIiR7c3lzY29uZmRpcn0vcHJvZmlsZS5kIgorCitCQkNMQVNTRVhURU5EID0gIm5hdGl2ZSBuYXRpdmVzZGsiCmRpZmYgLS1naXQgYS9wb2t5L21ldGEvc2l0ZS9hcm0tY29tbW9uIGIvcG9reS9tZXRhL3NpdGUvYXJtLWNvbW1vbgppbmRleCAxOThjOThjLi44YzM3ZjNmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvc2l0ZS9hcm0tY29tbW9uCisrKyBiL3Bva3kvbWV0YS9zaXRlL2FybS1jb21tb24KQEAgLTQsOSArNCw2IEBACiBhY19jdl9mdW5jX2xzdGF0X2VtcHR5X3N0cmluZ19idWc9JHthY19jdl9mdW5jX2xzdGF0X2VtcHR5X3N0cmluZ19idWc9bm99CiBhY19jdl9mdW5jX3N0YXRfZW1wdHlfc3RyaW5nX2J1Zz0ke2FjX2N2X2Z1bmNfc3RhdF9lbXB0eV9zdHJpbmdfYnVnPW5vfQogYWNfY3ZfZnVuY19zdGF0X2lnbm9yZXNfdHJhaWxpbmdfc2xhc2g9JHthY19jdl9mdW5jX3N0YXRfaWdub3Jlc190cmFpbGluZ19zbGFzaD1ub30KLWFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD0ke2FjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfaD1ub30KLWFjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9JHthY19jdl9oZWFkZXJfbmV0aW5ldF9zY3RwX3Vpb19oPW5vfQotYWNfY3Zfc2N0cD0ke2FjX2N2X3NjdHA9bm99CiAKICMgYmFzaAogYWNfY3ZfY19sb25nX2RvdWJsZT0ke2FjX2N2X2NfbG9uZ19kb3VibGU9eWVzfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3NpdGUvY29tbW9uLWdsaWJjIGIvcG9reS9tZXRhL3NpdGUvY29tbW9uLWdsaWJjCmluZGV4IDE0NDNmOGUuLmEwNjgwYmMgMTAwNjQ0Ci0tLSBhL3Bva3kvbWV0YS9zaXRlL2NvbW1vbi1nbGliYworKysgYi9wb2t5L21ldGEvc2l0ZS9jb21tb24tZ2xpYmMKQEAgLTEsNSArMSw2IEBACiAjIGdlbmVyYWwKIGFjX2N2X2hhdmVfZGVjbF9zeXNfc2lnbGlzdD0ke2FjX2N2X2hhdmVfZGVjbF9zeXNfc2lnbGlzdD15ZXN9CithY19jdl9mdW5jX2NhbGxvY18wX25vbm51bGw9JHthY19jdl9mdW5jX2NhbGxvY18wX25vbm51bGw9eWVzfQogYWNfY3ZfZnVuY19yZWFsbG9jX3dvcmtzPSR7YWNfY3ZfZnVuY19yZWFsbG9jX3dvcmtzPXllc30KIGFjX2N2X2Z1bmNfcmVhbGxvY18wX25vbm51bGw9JHthY19jdl9mdW5jX3JlYWxsb2NfMF9ub25udWxsPXllc30KIGFjX2N2X2Z1bmNfbWFsbG9jX3dvcmtzPSR7YWNfY3ZfZnVuY19tYWxsb2Nfd29ya3M9eWVzfQpAQCAtMTQsNiArMTUsNyBAQAogYWNfY3ZfZnVuY19wb3NpeF9nZXRncmdpZF9yPSR7YWNfY3ZfZnVuY19wb3NpeF9nZXRncmdpZF9yPXllc30KIGFjX2N2X3R5cGVfdWlkX3Q9e2FjX2N2X3R5cGVfdWlkX3Q9eWVzfQogYWNfY3ZfZnVuY19nZXRhZGRyaW5mbz0ke2FjX2N2X2Z1bmNfZ2V0YWRkcmluZm89eWVzfQorYWNfY3ZfZnVuY19zdHJ0b2Q9JHthY19jdl9mdW5jX3N0cnRvZD15ZXN9CiAKICMgYmFzaAogYmFzaF9jdl91bmRlcl9zeXNfc2lnbGlzdD0ke2Jhc2hfY3ZfdW5kZXJfc3lzX3NpZ2xpc3Q9eWVzfQpAQCAtMjgsNiArMzAsMTQgQEAKIAogIyBjb3JldXRpbHMKIGZ1X2N2X3N5c19zdGF0X3N0YXRmczJfYnNpemU9JHtmdV9jdl9zeXNfc3RhdF9zdGF0ZnMyX2JzaXplPXllc30KK2dsX2N2X2Z1bmNfZ2V0Y3dkX2Fib3J0X2J1Zz0ke2dsX2N2X2Z1bmNfZ2V0Y3dkX2Fib3J0X2J1Zz1ub30KK2dsX2N2X2Z1bmNfZ2V0Y3dkX251bGw9JHtnbF9jdl9mdW5jX2dldGN3ZF9udWxsPXllc30KK2dsX2N2X2Z1bmNfZ2V0Y3dkX3BhdGhfbWF4PSR7Z2xfY3ZfZnVuY19nZXRjd2RfcGF0aF9tYXg9eWVzfQorYWNfY3ZfZnVuY19nZXRncm91cHNfd29ya3M9JHthY19jdl9mdW5jX2dldGdyb3Vwc193b3Jrcz15ZXN9CitnbF9jdl9mdW5jX25hbm9zbGVlcD0ke2dsX2N2X2Z1bmNfbmFub3NsZWVwPSdubyAobWlzaGFuZGxlcyBsYXJnZSBhcmd1bWVudHMpJ30KK2dsX2N2X2Z1bmNfd29ya2luZ19ta3N0ZW1wPSR7Z2xfY3ZfZnVuY193b3JraW5nX21rc3RlbXA9eWVzfQorZ2xfY3ZfZnVuY193b3JraW5nX21rdGltZT0ke2dsX2N2X2Z1bmNfd29ya2luZ19ta3RpbWU9eWVzfQorZ2xfY3ZfZnVuY193b3JraW5nX3V0aW1lcz0ke2dsX2N2X2Z1bmNfd29ya2luZ191dGltZXM9eWVzfQogCiAjIGdsaWIKIGdsaWJfY3Zfc3RybGNweT0ke2dsaWJfY3Zfc3RybGNweT1ub30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9zaXRlL2NvbW1vbi1saW51eCBiL3Bva3kvbWV0YS9zaXRlL2NvbW1vbi1saW51eAppbmRleCA3MWVjOTYxLi4xYzFmZGFmIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvc2l0ZS9jb21tb24tbGludXgKKysrIGIvcG9reS9tZXRhL3NpdGUvY29tbW9uLWxpbnV4CkBAIC00Nyw4ICs0NywxMyBAQAogaHdfY3ZfZnVuY192c25wcmludGZfYzk5PSR7aHdfY3ZfZnVuY192c25wcmludGZfYzk5PXllc30KIAogIyBjb3JldXRpbHMKK2FjX2N2X2Z1bmNfY2hvd25fd29ya3M9JHthY19jdl9mdW5jX2Nob3duX3dvcmtzPXllc30KK2FjX2N2X2Z1bmNfdXRpbWVfbnVsbD0ke2FjX2N2X2Z1bmNfdXRpbWVfbnVsbD15ZXN9CiBnbF9jdl9mdW5jX2ZzdGF0YXRfemVyb19mbGFnPSR7Z2xfY3ZfZnVuY19mc3RhdGF0X3plcm9fZmxhZz15ZXN9CitnbF9jdl9mdW5jX2xpbmtfZm9sbG93c19zeW1saW5rPSR7Z2xfY3ZfZnVuY19saW5rX2ZvbGxvd3Nfc3ltbGluaz1ub30KK2dsX2N2X2Z1bmNfdW5saW5rX2J1c3lfdGV4dD0ke2dsX2N2X2Z1bmNfdW5saW5rX2J1c3lfdGV4dD15ZXN9CiBnbF9jdl9oYXZlX3Byb2NfdXB0aW1lPSR7Z2xfY3ZfaGF2ZV9wcm9jX3VwdGltZT15ZXN9CitnbF9jdl9waXBlc19hcmVfZmlmb3M9JHtnbF9jdl9waXBlc19hcmVfZmlmb3M9J3llcyAoMSknfQogCiAjIG15c3FsCiBhY19jdl9zeXNfcmVzdGFydGFibGVfc3lzY2FsbHM9JHthY19jdl9zeXNfcmVzdGFydGFibGVfc3lzY2FsbHM9eWVzfQpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3NpdGUvY29tbW9uLW11c2wgYi9wb2t5L21ldGEvc2l0ZS9jb21tb24tbXVzbAppbmRleCAxYjRmYzMyLi40YmU4ZDAwIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvc2l0ZS9jb21tb24tbXVzbAorKysgYi9wb2t5L21ldGEvc2l0ZS9jb21tb24tbXVzbApAQCAtMSw5ICsxLDExIEBACiAjIGdlbmVyYWwKIGFjX2N2X2hhdmVfZGVjbF9zeXNfc2lnbGlzdD0ke2FjX2N2X2hhdmVfZGVjbF9zeXNfc2lnbGlzdD1ub30KK2FjX2N2X2Z1bmNfY2FsbG9jXzBfbm9ubnVsbD0ke2FjX2N2X2Z1bmNfY2FsbG9jXzBfbm9ubnVsbD15ZXN9CiBhY19jdl9mdW5jX3JlYWxsb2Nfd29ya3M9JHthY19jdl9mdW5jX3JlYWxsb2Nfd29ya3M9eWVzfQogYWNfY3ZfZnVuY19yZWFsbG9jXzBfbm9ubnVsbD0ke2FjX2N2X2Z1bmNfcmVhbGxvY18wX25vbm51bGw9eWVzfQogYWNfY3ZfZnVuY19tYWxsb2Nfd29ya3M9JHthY19jdl9mdW5jX21hbGxvY193b3Jrcz15ZXN9CiBhY19jdl9mdW5jX21hbGxvY18wX25vbm51bGw9JHthY19jdl9mdW5jX21hbGxvY18wX25vbm51bGw9eWVzfQorYWNfY3ZfZnVuY19tZW1jbXBfd29ya2luZz0ke2FjX2N2X2Z1bmNfbWVtY21wX3dvcmtpbmc9eWVzfQogYWNfY3ZfZnVuY19nZXRwZ3JwX3ZvaWQ9eWVzCiBhY19jdl9mdW5jX3NldHBncnBfdm9pZD15ZXMKIGFjX2N2X2Z1bmNfc2V0Z3JlbnRfdm9pZD15ZXMKQEAgLTEzLDYgKzE1LDcgQEAKIGFjX2N2X2Z1bmNfcG9zaXhfZ2V0Z3JnaWRfcj0ke2FjX2N2X2Z1bmNfcG9zaXhfZ2V0Z3JnaWRfcj15ZXN9CiBhY19jdl9mdW5jX2dldGFkZHJpbmZvPSR7YWNfY3ZfZnVuY19nZXRhZGRyaW5mbz15ZXN9CiBhY19jdl9mdW5jX21tYXBfZml4ZWRfbWFwcGVkPSR7YWNfY3ZfZnVuY19tbWFwX2ZpeGVkX21hcHBlZD15ZXN9CithY19jdl9mdW5jX3N0cnRvZD0ke2FjX2N2X2Z1bmNfc3RydG9kPXllc30KIAogIyBnbGliCiBnbGliX2N2X3N0cmxjcHk9JHtnbGliX2N2X3N0cmxjcHk9bm99CkBAIC0zMiw5ICszNSwxOCBAQAogCiAjIGNvcmV1dGlscwogZnVfY3Zfc3lzX3N0YXRfc3RhdGZzMl9ic2l6ZT0ke2Z1X2N2X3N5c19zdGF0X3N0YXRmczJfYnNpemU9eWVzfQorZ2xfY3ZfZnVuY19nZXRjd2RfYWJvcnRfYnVnPSR7Z2xfY3ZfZnVuY19nZXRjd2RfYWJvcnRfYnVnPW5vfQorZ2xfY3ZfZnVuY19nZXRjd2RfbnVsbD0ke2dsX2N2X2Z1bmNfZ2V0Y3dkX251bGw9eWVzfQorZ2xfY3ZfZnVuY19nZXRjd2RfcGF0aF9tYXg9JHtnbF9jdl9mdW5jX2dldGN3ZF9wYXRoX21heD0nbm8sIGJ1dCBpdCBpcyBwYXJ0bHkgd29ya2luZyd9CithY19jdl9mdW5jX2dldGdyb3Vwc193b3Jrcz0ke2FjX2N2X2Z1bmNfZ2V0Z3JvdXBzX3dvcmtzPXllc30KIGdsX2N2X2Z1bmNfZ2V0dGltZW9mZGF5X2Nsb2JiZXI9JHtnbF9jdl9mdW5jX2dldHRpbWVvZmRheV9jbG9iYmVyPW5vfQorZ2xfY3ZfZnVuY19uYW5vc2xlZXA9JHtnbF9jdl9mdW5jX25hbm9zbGVlcD15ZXN9CitnbF9jdl9mdW5jX3N0cnRvZF93b3Jrcz0ke2dsX2N2X2Z1bmNfc3RydG9kX3dvcmtzPXllc30KIGdsX2N2X2Z1bmNfdHpzZXRfY2xvYmJlcj0ke2dsX2N2X2Z1bmNfdHpzZXRfY2xvYmJlcj1ub30KIGdsX2N2X2Z1bmNfZ2V0dGltZW9mZGF5X3Bvc2l4X3NpZ25hdHVyZT0ke2dsX2N2X2Z1bmNfZ2V0dGltZW9mZGF5X3Bvc2l4X3NpZ25hdHVyZT15ZXN9CitnbF9jdl9mdW5jX3dvcmtpbmdfbWtzdGVtcD0ke2dsX2N2X2Z1bmNfd29ya2luZ19ta3N0ZW1wPXllc30KK2dsX2N2X2Z1bmNfd29ya2luZ19ta3RpbWU9JHtnbF9jdl9mdW5jX3dvcmtpbmdfbWt0aW1lPXllc30KK2dsX2N2X2Z1bmNfd29ya2luZ191dGltZXM9JHtnbF9jdl9mdW5jX3dvcmtpbmdfdXRpbWVzPXllc30KIGFjX2N2X2Z1bmNfcG9zaXhfc3Bhd249JHthY19jdl9mdW5jX3Bvc2l4X3NwYXduPXllc30KIGFjX2N2X2Z1bmNfcG9zaXhfc3Bhd25fd29ya3M9JHthY19jdl9mdW5jX3Bvc2l4X3NwYXduX3dvcmtzPXllc30KIApkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3NpdGUvaXg4Ni1jb21tb24gYi9wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbgppbmRleCBjNWUzNTRjLi5hMjM4NDM3IDEwMDY0NAotLS0gYS9wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbgorKysgYi9wb2t5L21ldGEvc2l0ZS9peDg2LWNvbW1vbgpAQCAtMjcsMTAgKzI3LDcgQEAKIGFjX2N2X2Z1bmNfc3RhdF9pZ25vcmVzX3RyYWlsaW5nX3NsYXNoPSR7YWNfY3ZfZnVuY19zdGF0X2lnbm9yZXNfdHJhaWxpbmdfc2xhc2g9bm99CiBhY19jdl92YV92YWxfY29weT0ke2FjX2N2X3ZhX3ZhbF9jb3B5PXllc30KIAotYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPSR7YWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPW5vfQotYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF91aW9faD0ke2FjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9bm99CiBhY19jdl9saW51eF92ZXJzPSR7YWNfY3ZfbGludXhfdmVycz0yfQotYWNfY3Zfc2N0cD0ke2FjX2N2X3NjdHA9bm99CiAKIGFjX2N2X3BhdGhfRVNEX0NPTkZJRz1ubwogbGZfY3Zfc2FuZV9yZWFsbG9jPXllcwpkaWZmIC0tZ2l0IGEvcG9reS9tZXRhL3NpdGUvbmlvczItbGludXggYi9wb2t5L21ldGEvc2l0ZS9uaW9zMi1saW51eAppbmRleCA2N2EzZmM4Li44YWMxOThhIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvc2l0ZS9uaW9zMi1saW51eAorKysgYi9wb2t5L21ldGEvc2l0ZS9uaW9zMi1saW51eApAQCAtMiw5ICsyLDYgQEAKIGFjX2N2X2Z1bmNfbHN0YXRfZW1wdHlfc3RyaW5nX2J1Zz0ke2FjX2N2X2Z1bmNfbHN0YXRfZW1wdHlfc3RyaW5nX2J1Zz1ub30KIGFjX2N2X2Z1bmNfc3RhdF9lbXB0eV9zdHJpbmdfYnVnPSR7YWNfY3ZfZnVuY19zdGF0X2VtcHR5X3N0cmluZ19idWc9bm99CiBhY19jdl9mdW5jX3N0YXRfaWdub3Jlc190cmFpbGluZ19zbGFzaD0ke2FjX2N2X2Z1bmNfc3RhdF9pZ25vcmVzX3RyYWlsaW5nX3NsYXNoPW5vfQotYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPSR7YWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPW5vfQotYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF91aW9faD0ke2FjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9bm99Ci1hY19jdl9zY3RwPSR7YWNfY3Zfc2N0cD1ub30KIAogIyBhcGFjaGUKIGFjX2N2X3NpemVvZl9zc2l6ZV90PSR7YWNfY3Zfc2l6ZW9mX3NzaXplX3Q9NH0KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9zaXRlL3Bvd2VycGMzMi1saW51eCBiL3Bva3kvbWV0YS9zaXRlL3Bvd2VycGMzMi1saW51eAppbmRleCBmMzdlOTE1Li4xNzJhMDZjIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvc2l0ZS9wb3dlcnBjMzItbGludXgKKysrIGIvcG9reS9tZXRhL3NpdGUvcG93ZXJwYzMyLWxpbnV4CkBAIC0zOSwxMCArMzksNiBAQAogIyBhcGFjaGUKIGFjX2N2X3NpemVvZl9zc2l6ZV90PSR7YWNfY3Zfc2l6ZW9mX3NzaXplX3Q9NH0KIAotYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPSR7YWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPW5vfQotYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF91aW9faD0ke2FjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9bm99Ci1hY19jdl9zY3RwPSR7YWNfY3Zfc2N0cD1ub30KLQogIyBzc2gKIGFjX2N2X2hhdmVfc3BhY2VfZF9uYW1lX2luX3N0cnVjdF9kaXJlbnQ9JHthY19jdl9kaXJlbnRfaGF2ZV9zcGFjZV9kX25hbWU9eWVzfQogYWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9JHthY19jdl9oYXZlX2Jyb2tlbl9zbnByaW50Zj1ub30KZGlmZiAtLWdpdCBhL3Bva3kvbWV0YS9zaXRlL3NoLWNvbW1vbiBiL3Bva3kvbWV0YS9zaXRlL3NoLWNvbW1vbgppbmRleCA5N2M5NjkzLi42YmRhMWMyIDEwMDY0NAotLS0gYS9wb2t5L21ldGEvc2l0ZS9zaC1jb21tb24KKysrIGIvcG9reS9tZXRhL3NpdGUvc2gtY29tbW9uCkBAIC0zMSwxMCArMzEsNiBAQAogIyBhcGFjaGUKIGFjX2N2X3NpemVvZl9zc2l6ZV90PSR7YWNfY3Zfc2l6ZW9mX3NzaXplX3Q9NH0KIAotYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPSR7YWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF9oPW5vfQotYWNfY3ZfaGVhZGVyX25ldGluZXRfc2N0cF91aW9faD0ke2FjX2N2X2hlYWRlcl9uZXRpbmV0X3NjdHBfdWlvX2g9bm99Ci1hY19jdl9zY3RwPSR7YWNfY3Zfc2N0cD1ub30KLQogIyBzc2gKIGFjX2N2X2hhdmVfc3BhY2VfZF9uYW1lX2luX3N0cnVjdF9kaXJlbnQ9JHthY19jdl9kaXJlbnRfaGF2ZV9zcGFjZV9kX25hbWU9eWVzfQogYWNfY3ZfaGF2ZV9icm9rZW5fc25wcmludGY9JHthY19jdl9oYXZlX2Jyb2tlbl9zbnByaW50Zj1ub30KZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9idWlsZGFsbC1xZW11IGIvcG9reS9zY3JpcHRzL2J1aWxkYWxsLXFlbXUKbmV3IGZpbGUgbW9kZSAxMDA3NTUKaW5kZXggMDAwMDAwMC4uY2E5YWFmYQotLS0gL2Rldi9udWxsCisrKyBiL3Bva3kvc2NyaXB0cy9idWlsZGFsbC1xZW11CkBAIC0wLDAgKzEsMTIwIEBACisjIS9iaW4vc2gKKyMgIENvcHlyaWdodCAoYykgMjAyMCBXaW5kIFJpdmVyIFN5c3RlbXMsIEluYy4KKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQorIworIyBidWlsZGFsbC1xZW11OiBhIHRvb2wgZm9yIGF1dG9tYXRpbmcgYnVpbGQgdGVzdGluZyBvZiByZWNpcGVzCisjIFRPRE86IEFkZCBzdXBwb3J0IGZvciBzZWxlY3Rpbmcgd2hpY2ggcWVtdSBhcmNoaXRlY3R1cmVzIHRvIGJ1aWxkCisjIFRPRE86IEFkZCBzdXBwb3J0IGZvciBxdWV1ZWluZyB1cCBtdWx0aXBsZSByZWNpcGUgYnVpbGRzCisjIFRPRE86IEFkZCBtb3JlIGxvZ2dpbmcgb3B0aW9ucyAoZS5nLiBsb2NhbC5jb25mIGluZm8sIGJpdGJha2UgZW52IGluZm8pCisKK3VzYWdlICgpCit7CisgICAgYmFzZT0kKGJhc2VuYW1lICIkMCIpCisgICAgZWNobyAiVXNhZ2U6ICRiYXNlIFtvcHRpb25zXSBbcmVjaXBlbmFtZS90YXJnZXRdIgorICAgIGVjaG8gIkV4ZWN1dGVzIGEgYnVpbGQgb2YgYSBnaXZlbiB0YXJnZXQgZm9yIHNlbGVjdGVkIExJQkNzLiBXaXRoIG5vIG9wdGlvbnMsIGRlZmF1bHQgdG8gYm90aCBsaWJjIGFuZCBtdXNsLiIKKyAgICBlY2hvICJPcHRpb25zOiIKKyAgICBlY2hvICItbCwgLS1saWJjICAgICAgICAgICAgU3BlY2lmeSBvbmUgb2YgXCJnbGliY1wiIG9yIFwibXVzbFwiIgorfQorCisKK2J1aWxkYWxsICgpCit7CisgICAgIyBHZXQgcGF0aCB0byBvZS1jb3JlIGRpcmVjdG9yeS4gU2luY2Ugb2UtaW5pdC1idWlsZC1lbnYgcHJlcGVuZHMgJFBBVEggd2l0aAorICAgICMgdGhlIHBhdGggdG8gdGhlIHNjcmlwdHMgZGlyZWN0b3J5LCBnZXQgaXQgZnJvbSB0aGVyZQorICAgIFNDUklQVFNfUEFUSD0iJChlY2hvICIkUEFUSCIgfCBjdXQgLWQgIjoiIC1mIDEpIgorICAgIE9FX0NPUkVfUEFUSD0kKGVjaG8gIiRTQ1JJUFRTX1BBVEgiIHwgc2VkICdzfFwoLipcKS8uKnxcMXwnKSAKKworICAgICMgR2V0IHRhcmdldCBsaXN0IGFuZCBob3N0IG1hY2hpbmUgaW5mb3JtYXRpb24KKyAgICBUQVJHRVRfTElTVD0kKGZpbmQgIiRPRV9DT1JFX1BBVEgiL21ldGEvY29uZi9tYWNoaW5lIC1tYXhkZXB0aCAxIC10eXBlIGYgfCBncmVwIHFlbXUgfCBzZWQgJ3N8LiovfHwnIHwgc2VkIC1lICdzL1wuY29uZi8vJykKKworICAgICMgU2V0IExJQkMgdmFsdWUgdG8gdXNlIGZvciB0aGUgYnVpbGRzIGJhc2VkIG9uIG9wdGlvbnMgcHJvdmlkZWQgYnkgdGhlIHVzZXIKKyAgICBpZiBbIC1uICIkMiIgXQorICAgIHRoZW4KKwlMSUJDX0xJU1Q9IiQyIgorCWVjaG8gIiRMSUJDX0xJU1QiCisgICAgZWxzZQorCUxJQkNfTElTVD0iZ2xpYmMgbXVzbCIKKwllY2hvICIkTElCQ19MSVNUIgorICAgIGZpCisKKyAgICBTVEFSVF9USU1FPSQoZGF0ZSAiKyVZLSVtLSVkXyVIOiVNOiVTIikKKyAgICBMT0dfRklMRT0iJDEtYnVpbGRhbGwubG9nIgorICAgIE9TX0lORk89JChncmVwICJQUkVUVFlfTkFNRT0iIC9ldGMvb3MtcmVsZWFzZSB8IGF3ayAtRiAiPSIgJ3twcmludCAkMn0nIHwgc2VkIC1lICdzL14iLy8nIC1lICdzLyIkLy8nKQorCisgICAgIyBBcHBlbmQgYW4gZXhpc3RpbmcgbG9nIGZpbGUgZm9yIHRoaXMgYnVpbGQgd2l0aCAub2xkIGlmIG9uZSBleGlzdHMKKyAgICBpZiBbIC1mICIke0xPR19GSUxFfSIgXSAKKyAgICB0aGVuCisgICAgICAgbXYgIiR7TE9HX0ZJTEV9IiAiJHtMT0dfRklMRX0ub2xkIgorICAgIGVsc2UKKwkgICB0b3VjaCAiJHtMT0dfRklMRX0iCisgICAgZmkKKworICAgICMgRmlsbCB0aGUgbG9nIGZpbGUgd2l0aCBidWlsZCBhbmQgaG9zdCBpbmZvCisgICAgZWNobyAiQlVJTERBTEwtUUVNVSBMT0cgRk9SICQxIiA+PiAiJHtMT0dfRklMRX0iCisgICAgZWNobyAiU1RBUlQgVElNRTogJHtTVEFSVF9USU1FfSIgPj4gIiR7TE9HX0ZJTEV9IgorICAgIGVjaG8gIkhPU1ROQU1FOiAkKHVuYW1lIC1uKSIgPj4gIiR7TE9HX0ZJTEV9IgorICAgIGVjaG8gIkhPU1QgT1M6ICR7T1NfSU5GT30iID4+ICIke0xPR19GSUxFfSIKKyAgICBlY2hvICJIT1NUIEtFUk5FTDogJCh1bmFtZSAtcikiID4+ICIke0xPR19GSUxFfSIKKyAgICBlY2hvICI9PT09PT09PT09PT09PT0iID4+ICIke0xPR19GSUxFfSIKKyAgICBlY2hvICJCVUlMRCBSRVNVTFRTOiIgPj4gIiR7TE9HX0ZJTEV9IgorCisgICAgIyBzdGFydCB0aGUgYnVpbGRzIGZvciBlYWNoIE1BQ0hJTkUgYW5kIFRDTElCQworICAgIGZvciBqIGluICR7TElCQ19MSVNUfSAKKyAgICBkbworCWVjaG8gIlskal0iID4+ICIke0xPR19GSUxFfSIKKwlmb3IgaSBpbiAke1RBUkdFVF9MSVNUfSAKKwlkbworCSAgICBlY2hvICIkaSIgIiRqIjsgXAorCSAgICBUQ0xJQkM9JGogTUFDSElORT0kaSBiaXRiYWtlICIkMSIgJiYgZWNobyAiUEFTUzogJGkiID4+ICIke0xPR19GSUxFfSIgfHwgZWNobyAiRkFJTDogJGkiID4+ICIke0xPR19GSUxFfSIKKwlkb25lCisgICAgZG9uZQorCisgICAgIyBHZXQgcGFzcy9mYWlsIHRvdGFscyBhbmQgYWRkIHRoZW0gdG8gdGhlIGVuZCBvZiB0aGUgbG9nCisgICAgUEFTU0VEPSQoZ3JlcCAiUEFTUzoiICIke0xPR19GSUxFfSIgfCB3YyAtbCkKKyAgICBGQUlMRUQ9JChncmVwICJGQUlMOiIgIiR7TE9HX0ZJTEV9IiB8IHdjIC1sKQorCisgICAgZWNobyAiPT09PT09PT09PT09PT09IiA+PiAiJHtMT0dfRklMRX0iCisgICAgZWNobyAiUEFTU0VEOiAke1BBU1NFRH0iID4+ICIke0xPR19GSUxFfSIKKyAgICBlY2hvICJGQUlMRUQ6ICR7RkFJTEVEfSIgPj4gIiR7TE9HX0ZJTEV9IgorfQorCisKKyMgZmFpbCBlbnRpcmUgc2NyaXB0IGlmIGFueSBjb21tYW5kIGZhaWxzCitzZXQgLWUKKworIyBwcmludCB1c2FnZSBhbmQgZXhpdCBpZiBub3QgZW5vdWdoIGFyZ3MgZ2l2ZW4KK1sgJCMgLWVxIDAgXSAmJiB1c2FnZSAmJiBleGl0IDEKKworIyBoYW5kbGUgYXJndW1lbnRzCitSRUNJUEU9Cit3aGlsZSBbICQjIC1ndCAwIF0KK2RvCisgICAgYXJnPSQxCisgICAgY2FzZSAkYXJnIGluCisJLWx8LS1saWJjKQorCWlmIFsgIiQyIiA9ICJnbGliYyIgXSB8fCBbICIkMiIgPSAibXVzbCIgXQorCXRoZW4KKwkgICAgTElCQ19MSVNUPSIkMiIKKwllbHNlCisJICAgIGVjaG8gIlVucmVjb2duaXplZCBsaWJjIG9wdGlvbi4iCisJICAgIHVzYWdlICYmIGV4aXQgMQorCWZpCisJc2hpZnQKKwlzaGlmdAorCTs7CisJKikKKyAgICAgICAgUkVDSVBFPSIkMSIKKwlzaGlmdAorCTs7CisgICAgZXNhYworZG9uZQorCitzZXQgLS0gIiRSRUNJUEUiCisKKyMgcnVuIGJ1aWxkYWxsIGZvciB0aGUgZ2l2ZW4gcmVjaXBlIGFuZCBMSUJDCitpZiBbIC1uICIkMSIgXQordGhlbgorCWJ1aWxkYWxsICIkMSIgIiRMSUJDX0xJU1QiCitmaQorCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvY29tYm8tbGF5ZXIgYi9wb2t5L3NjcmlwdHMvY29tYm8tbGF5ZXIKaW5kZXggOWI1MGU5OC4uYTYzNGRkNiAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL2NvbWJvLWxheWVyCisrKyBiL3Bva3kvc2NyaXB0cy9jb21iby1sYXllcgpAQCAtODAsNyArODAsNyBAQAogICAgICAgICBsb2dnZXIuZGVidWcoIkxvYWRpbmcgY29uZmlnIGZpbGUgJXMiICUgc2VsZi5jb25mZmlsZSkKICAgICAgICAgc2VsZi5wYXJzZXIgPSBjb25maWdwYXJzZXIuQ29uZmlnUGFyc2VyKCkKICAgICAgICAgd2l0aCBvcGVuKHNlbGYuY29uZmZpbGUpIGFzIGY6Ci0gICAgICAgICAgICBzZWxmLnBhcnNlci5yZWFkZnAoZikKKyAgICAgICAgICAgIHNlbGYucGFyc2VyLnJlYWRfZmlsZShmKQogCiAgICAgICAgICMgaW5pdGlhbGl6ZSBkZWZhdWx0IHZhbHVlcwogICAgICAgICBzZWxmLmNvbW1pdF9tc2dfdGVtcGxhdGUgPSAiQXV0b21hdGljIGNvbW1pdCB0byB1cGRhdGUgbGFzdF9yZXZpc2lvbiIKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9jb250cmliL2JiLXBlcmYvYnVpbGRzdGF0cy1wbG90LnNoIGIvcG9reS9zY3JpcHRzL2NvbnRyaWIvYmItcGVyZi9idWlsZHN0YXRzLXBsb3Quc2gKaW5kZXggODk4ODM0ZS4uNDVjMjdkMCAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL2NvbnRyaWIvYmItcGVyZi9idWlsZHN0YXRzLXBsb3Quc2gKKysrIGIvcG9reS9zY3JpcHRzL2NvbnRyaWIvYmItcGVyZi9idWlsZHN0YXRzLXBsb3Quc2gKQEAgLTM5LDcgKzM5LDEwIEBACiAKIEJTX0RJUj0idG1wL2J1aWxkc3RhdHMiCiBOPTEwCitSRUNJUEU9IiIKK1RBU0tTPSJjb21waWxlOmNvbmZpZ3VyZTpmZXRjaDppbnN0YWxsOnBhdGNoOnBvcHVsYXRlX2xpYzpwb3B1bGF0ZV9zeXNyb290OnVucGFjayIKIFNUQVRTPSJ1dGltZSIKK0FDQ1VNVUxBVEU9IiIKIFNVTT0iIgogT1VUREFUQV9GSUxFPSIkUFdEL2J1aWxkc3RhdHMtcGxvdC5vdXQiCiAKQEAgLTUxLDExICs1NCwxNSBAQAogICAgICAgICAgICAgICAgIChkZWZhdWx0OiAiJEJTX0RJUiIpCiAgIC1uIE4gICAgICAgICAgVG9wIE4gcmVjaXBlcyB0byBkaXNwbGF5LiBJZ25vcmVkIGlmIC1TIGlzIHByZXNlbnQKICAgICAgICAgICAgICAgICAoZGVmYXVsdDogIiROIikKKyAgLXIgcmVjaXBlICAgICBUaGUgcmVjaXBlIG1hc2sgdG8gYmUgc2VhcmNoZWQKKyAgLXQgdGFza3MgICAgICBUaGUgdGFza3MgdG8gYmUgY29tcHV0ZWQKKyAgICAgICAgICAgICAgICAoZGVmYXVsdDogIiRUQVNLUyIpCiAgIC1zIHN0YXRzICAgICAgVGhlIHN0YXRzIHRvIGJlIG1hdGNoZWQuIElmIG1vcmUgdGhhdCBvbmUgc3RhdCwgdW5pdHMKICAgICAgICAgICAgICAgICBzaG91bGQgYmUgdGhlIHNhbWUgYmVjYXVzZSBkYXRhIGlzIHBsb3QgYXMgaGlzdG9ncmFtLgogICAgICAgICAgICAgICAgIChzZWUgYnVpbGRzdGF0cy5zaCAtaCBmb3IgYWxsIG9wdGlvbnMpIG9yIGFueSBvdGhlciBkZWZpbmVkCiAgICAgICAgICAgICAgICAgKGJ1aWxkKXN0YXQgc2VwYXJhdGVkIGJ5IGNvbG9ucywgaS5lLiBzdGltZTp1dGltZQogICAgICAgICAgICAgICAgIChkZWZhdWx0OiAiJFNUQVRTIikKKyAgLWEgICAgICAgICAgICBBY2N1bXVsYXRlIGFsbCBzdGF0cyB2YWx1ZXMgZm9yIGZvdW5kIHJlY2lwZXMKICAgLVMgICAgICAgICAgICBTdW0gdmFsdWVzIGZvciBhIHBhcnRpY3VsYXIgc3RhdCBmb3IgZm91bmQgcmVjaXBlcwogICAtbyAgICAgICAgICAgIE91dHB1dCBkYXRhIGZpbGUuCiAgICAgICAgICAgICAgICAgKGRlZmF1bHQ6ICIkT1VUREFUQV9GSUxFIikKQEAgLTY0LDMyICs3MSw0MSBAQAogfQogCiAjIFBhcnNlIGFuZCB2YWxpZGF0ZSBhcmd1bWVudHMKLXdoaWxlIGdldG9wdHMgImI6bjpzOm86U2giIE9QVDsgZG8KLQljYXNlICRPUFQgaW4KLQliKQotCQlCU19ESVI9IiRPUFRBUkciCi0JCTs7Ci0JbikKLQkJTj0iJE9QVEFSRyIKLQkJOzsKLQlzKQotCSAgICAgICAgU1RBVFM9IiRPUFRBUkciCi0JICAgICAgICA7OwotCVMpCi0JICAgICAgICBTVU09InkiCi0JICAgICAgICA7OwotCW8pCi0JICAgICAgICBPVVREQVRBX0ZJTEU9IiRPUFRBUkciCi0JICAgICAgICA7OwotCWgpCi0JCXVzYWdlCi0JCWV4aXQgMAotCQk7OwotCSopCi0JCXVzYWdlCi0JCWV4aXQgMQotCQk7OwotCWVzYWMKK3doaWxlIGdldG9wdHMgImI6bjpyOnQ6czpvOmFTaCIgT1BUOyBkbworICAgIGNhc2UgJE9QVCBpbgorICAgIGIpCisgICAgICAgIEJTX0RJUj0iJE9QVEFSRyIKKyAgICAgICAgOzsKKyAgICBuKQorICAgICAgICBOPSIkT1BUQVJHIgorICAgICAgICA7OworICAgIHIpCisgICAgICAgIFJFQ0lQRT0iLXIgJE9QVEFSRyIKKyAgICAgICAgOzsKKyAgICB0KQorICAgICAgICBUQVNLUz0iJE9QVEFSRyIKKyAgICAgICAgOzsKKyAgICBzKQorICAgICAgICBTVEFUUz0iJE9QVEFSRyIKKyAgICAgICAgOzsKKyAgICBhKQorICAgICAgICBBQ0NVTVVMQVRFPSItYSIKKyAgICAgICAgOzsKKyAgICBTKQorICAgICAgICBTVU09InkiCisgICAgICAgIDs7CisgICAgbykKKyAgICAgICAgT1VUREFUQV9GSUxFPSIkT1BUQVJHIgorICAgICAgICA7OworICAgIGgpCisgICAgICAgIHVzYWdlCisgICAgICAgIGV4aXQgMAorICAgICAgICA7OworICAgICopCisgICAgICAgIHVzYWdlCisgICAgICAgIGV4aXQgMQorICAgICAgICA7OworICAgIGVzYWMKIGRvbmUKIAogIyBHZXQgbnVtYmVyIG9mIHN0YXRzCkBAIC0xMDEsMTAgKzExNywxMCBAQAogCiAjIFBhcnNlIGJ1aWxkc3RhdHMgcmVjaXBlcyB0byBwcm9kdWNlIGEgc2luZ2xlIHRhYmxlCiBPVVRCVUlMRFNUQVRTPSIkUFdEL2J1aWxkc3RhdHMubG9nIgotJENEL2J1aWxkc3RhdHMuc2ggLUggLXMgIiRTVEFUUyIgLUggPiAkT1VUQlVJTERTVEFUUworJENEL2J1aWxkc3RhdHMuc2ggLWIgIiRCU19ESVIiIC1zICIkU1RBVFMiIC10ICIkVEFTS1MiICRSRUNJUEUgJEFDQ1VNVUxBVEUgLUggPiAkT1VUQlVJTERTVEFUUwogCiAjIEdldCBoZWFkZXJzCi1IRUFERVJTPSQoY2F0ICRPVVRCVUlMRFNUQVRTIHwgc2VkIC1uIC1lICcxcy8gLy0vZycgLWUgJzFzLzovIC9ncCcpCitIRUFERVJTPSQoY2F0ICRPVVRCVUlMRFNUQVRTIHwgc2VkIC1uIC1lICdzL1woLipcKS8iXDEiLycgLWUgJzFzLyAvXFxcXFxcXFwgL2cnIC1lICdzL18vXFxcXFxcXFxfL2cnIC1lICcxcy86LyIgIi9ncCcpCiAKIGVjaG8gLWUgInNldCBib3h3aWR0aCAwLjkgcmVsYXRpdmUiCiBlY2hvIC1lICJzZXQgc3R5bGUgZGF0YSBoaXN0b2dyYW1zIgpAQCAtMTEzLDcgKzEyOSw3IEBACiAKICMgR2V0IG91dHB1dCBkYXRhCiBpZiBbIC16ICIkU1VNIiBdOyB0aGVuCi0gICAgY2F0ICRPVVRCVUlMRFNUQVRTIHwgc2VkIC1lICcxZCcgfCBzb3J0IC1rMyAtbiAtciB8IGhlYWQgLSROID4gJE9VVERBVEFfRklMRQorICAgIGNhdCAkT1VUQlVJTERTVEFUUyB8IHNlZCAtZSAnMWQnIC1lICdzL18vXFxcXF8vZycgfCBzb3J0IC1rMyAtbiAtciB8IGhlYWQgLSROID4gJE9VVERBVEFfRklMRQogICAgICMgaW5jbHVkZSB0YXNrIGF0IHJlY2lwZSBjb2x1bW4KICAgICBzZWQgLWkgLWUgIjFpXAogJHtIRUFERVJTfSIgJE9VVERBVEFfRklMRQpAQCAtMTI1LDggKzE0MSw4IEBACiAgICAgZGVjbGFyZSAtYSBzdW1hcmdzCiAgICAgaj0wCiAgICAgZm9yIGkgaW4gYHNlcSAkbnN0YXRzYDsgZG8KLQlzdW1hcmdzW2pdPXN1bTsgaj0kKCggJGogKyAxICkpCi0Jc3VtYXJnc1tqXT1gZXhwciAzICsgJGkgLSAxYDsgIGo9JCgoICRqICsgMSApKQorICAgICAgICBzdW1hcmdzW2pdPXN1bTsgaj0kKCggJGogKyAxICkpCisgICAgICAgIHN1bWFyZ3Nbal09YGV4cHIgMyArICRpIC0gMWA7ICBqPSQoKCAkaiArIDEgKSkKICAgICBkb25lCiAKICAgICAjIERvIHRoZSBwcm9jZXNzaW5nIHdpdGggZGF0YW1hc2gKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9jb250cmliL2JiLXBlcmYvYnVpbGRzdGF0cy5zaCBiL3Bva3kvc2NyaXB0cy9jb250cmliL2JiLXBlcmYvYnVpbGRzdGF0cy5zaAppbmRleCBlOWVjMmQ0Li5lNDVjZmMxIDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvY29udHJpYi9iYi1wZXJmL2J1aWxkc3RhdHMuc2gKKysrIGIvcG9reS9zY3JpcHRzL2NvbnRyaWIvYmItcGVyZi9idWlsZHN0YXRzLnNoCkBAIC0zNiw4ICszNiwxMCBAQAogQ2hpbGQgcnVzYWdlIHJ1X25pdmNzdyIKIAogQlNfRElSPSJ0bXAvYnVpbGRzdGF0cyIKK1JFQ0lQRT0iIgogVEFTS1M9ImNvbXBpbGU6Y29uZmlndXJlOmZldGNoOmluc3RhbGw6cGF0Y2g6cG9wdWxhdGVfbGljOnBvcHVsYXRlX3N5c3Jvb3Q6dW5wYWNrIgogU1RBVFM9IiRUSU1FIgorQUNDVU1VTEFURT0iIgogSEVBREVSPSIiICMgTm8gaGVhZGVyIGJ5IGRlZmF1bHQKIAogZnVuY3Rpb24gdXNhZ2UgewpAQCAtNDYsNiArNDgsNyBAQAogVXNhZ2U6ICRDTUQgWy1iIGJ1aWxkc3RhdHNfZGlyXSBbLXQgZG9fdGFza10KICAgLWIgYnVpbGRzdGF0cyBUaGUgcGF0aCB3aGVyZSB0aGUgZm9sZGVyIHJlc2lkZXMKICAgICAgICAgICAgICAgICAoZGVmYXVsdDogIiRCU19ESVIiKQorICAtciByZWNpcGUgICAgIFRoZSByZWNpcGUgdG8gYmUgY29tcHV0ZWQKICAgLXQgdGFza3MgICAgICBUaGUgdGFza3MgdG8gYmUgY29tcHV0ZWQKICAgICAgICAgICAgICAgICAoZGVmYXVsdDogIiRUQVNLUyIpCiAgIC1zIHN0YXRzICAgICAgVGhlIHN0YXRzIHRvIGJlIG1hdGNoZWQuIE9wdGlvbnM6IFRJTUUsIElPLCBSVVNBR0UsIENISUxEX1JVU0FHRQpAQCAtNTYsODcgKzU5LDEwOSBAQAogICAgICAgICAgICAgICAgICAgICBJTz0kSU8KICAgICAgICAgICAgICAgICAgICAgUlVTQUdFPSRSVVNBR0UKICAgICAgICAgICAgICAgICAgICAgQ0hJTERfUlVTQUdFPSRDSElMRF9SVVNBR0UKKyAgLWEgICAgICAgICAgICBBY2N1bXVsYXRlIGFsbCBzdGF0cyB2YWx1ZXMgZm9yIGZvdW5kIHJlY2lwZXMKICAgLWggICAgICAgICAgICBEaXNwbGF5IHRoaXMgaGVscCBtZXNzYWdlCiBFT00KIH0KIAogIyBQYXJzZSBhbmQgdmFsaWRhdGUgYXJndW1lbnRzCi13aGlsZSBnZXRvcHRzICJiOnQ6czpIaCIgT1BUOyBkbwotCWNhc2UgJE9QVCBpbgotCWIpCi0JCUJTX0RJUj0iJE9QVEFSRyIKLQkJOzsKLQl0KQotCQlUQVNLUz0iJE9QVEFSRyIKLQkJOzsKLQlzKQotCQlTVEFUUz0iJE9QVEFSRyIKLQkJOzsKLQlIKQotCSAgICAgICAgSEVBREVSPSJ5IgotCSAgICAgICAgOzsKLQloKQotCQl1c2FnZQotCQlleGl0IDAKLQkJOzsKLQkqKQotCQl1c2FnZQotCQlleGl0IDEKLQkJOzsKLQllc2FjCit3aGlsZSBnZXRvcHRzICJiOnI6dDpzOmFIaCIgT1BUOyBkbworICAgIGNhc2UgJE9QVCBpbgorICAgIGIpCisgICAgICAgIEJTX0RJUj0iJE9QVEFSRyIKKyAgICAgICAgOzsKKyAgICByKQorICAgICAgICBSRUNJUEU9IiRPUFRBUkciCisgICAgICAgIDs7CisgICAgdCkKKyAgICAgICAgVEFTS1M9IiRPUFRBUkciCisgICAgICAgIDs7CisgICAgcykKKyAgICAgICAgU1RBVFM9IiRPUFRBUkciCisgICAgICAgIDs7CisgICAgYSkKKyAgICAgICAgQUNDVU1VTEFURT0ieSIKKyAgICAgICAgOzsKKyAgICBIKQorICAgICAgICBIRUFERVI9InkiCisgICAgICAgIDs7CisgICAgaCkKKyAgICAgICAgdXNhZ2UKKyAgICAgICAgZXhpdCAwCisgICAgICAgIDs7CisgICAgKikKKyAgICAgICAgdXNhZ2UKKyAgICAgICAgZXhpdCAxCisgICAgICAgIDs7CisgICAgZXNhYwogZG9uZQogCiAjIEVuc3VyZSB0aGUgYnVpbGRzdGF0cyBmb2xkZXIgZXhpc3RzCiBpZiBbICEgLWQgIiRCU19ESVIiIF07IHRoZW4KLQllY2hvICJFUlJPUjogJEJTX0RJUiBkb2VzIG5vdCBleGlzdCIKLQl1c2FnZQotCWV4aXQgMQorICAgIGVjaG8gIkVSUk9SOiAkQlNfRElSIGRvZXMgbm90IGV4aXN0IgorICAgIHVzYWdlCisgICAgZXhpdCAxCiBmaQogCiBzdGF0cz0iIgogSUZTPSI6IgogZm9yIHN0YXQgaW4gJHtTVEFUU307IGRvCi0JY2FzZSAkc3RhdCBpbgotCSAgICBUSU1FKQotCQlzdGF0cz0iJHtzdGF0c306JHtUSU1FfSIKLQkJOzsKLQkgICAgSU8pCi0JCXN0YXRzPSIke3N0YXRzfToke0lPfSIKLQkJOzsKLQkgICAgUlVTQUdFKQotCQlzdGF0cz0iJHtzdGF0c306JHtSVVNBR0V9IgotCQk7OwotCSAgICBDSElMRF9SVVNBR0UpCi0JCXN0YXRzPSIke3N0YXRzfToke0NISUxEX1JVU0FHRX0iCi0JCTs7Ci0JICAgICopCi0JCXN0YXRzPSIke1NUQVRTfSIKLQllc2FjCisgICAgY2FzZSAkc3RhdCBpbgorICAgICAgICBUSU1FKQorICAgICAgICAgICAgc3RhdHM9IiR7c3RhdHN9OiR7VElNRX0iCisgICAgICAgICAgICA7OworICAgICAgICBJTykKKyAgICAgICAgICAgIHN0YXRzPSIke3N0YXRzfToke0lPfSIKKyAgICAgICAgICAgIDs7CisgICAgICAgIFJVU0FHRSkKKyAgICAgICAgICAgIHN0YXRzPSIke3N0YXRzfToke1JVU0FHRX0iCisgICAgICAgICAgICA7OworICAgICAgICBDSElMRF9SVVNBR0UpCisgICAgICAgICAgICBzdGF0cz0iJHtzdGF0c306JHtDSElMRF9SVVNBR0V9IgorICAgICAgICAgICAgOzsKKyAgICAgICAgKikKKyAgICAgICAgICAgIHN0YXRzPSIke1NUQVRTfSIKKyAgICAgICAgICAgIDs7CisgICAgZXNhYwogZG9uZQogCiAjIHJlbW92ZSBwb3NzaWJsZSBjb2xvbiBhdCB0aGUgYmVnaW5uaW5nCiBzdGF0cz0iJChlY2hvICIkc3RhdHMiIHwgc2VkIC1lICdzL146Ly8xJykiCiAKICMgUHJvdmlkZSBhIGhlYWRlciBpZiByZXF1aXJlZCBieSB0aGUgdXNlcgotWyAtbiAiJEhFQURFUiIgXSAmJiB7IGVjaG8gInRhc2s6cmVjaXBlOiRzdGF0cyI7IH0KK2lmIFsgLW4gIiRIRUFERVIiIF0gOyB0aGVuCisgICAgaWYgWyAtbiAiJEFDQ1VNVUxBVEUiIF07IHRoZW4KKyAgICAgICAgZWNobyAidGFzazpyZWNpcGU6YWNjdW11bGF0ZWQoJHtzdGF0cy8vOi87fSkiCisgICAgZWxzZQorICAgICAgICBlY2hvICJ0YXNrOnJlY2lwZTokc3RhdHMiCisgICAgZmkKK2ZpCiAKIGZvciB0YXNrIGluICR7VEFTS1N9OyBkbwogICAgIHRhc2s9ImRvXyR7dGFza30iCi0gICAgZm9yIGZpbGUgaW4gJChmaW5kICR7QlNfRElSfSAtdHlwZSBmIC1uYW1lICR7dGFza30gfCBhd2sgJ0JFR0lOeyBPUlM9IiI7IE9GUz0iOiIgfSB7IHByaW50ICQwLCIiIH0nKTsgZG8KKyAgICBmb3IgZmlsZSBpbiAkKGZpbmQgJHtCU19ESVJ9IC10eXBlIGYgLXBhdGggKiR7UkVDSVBFfSovJHt0YXNrfSB8IGF3ayAnQkVHSU57IE9SUz0iIjsgT0ZTPSI6IiB9IHsgcHJpbnQgJDAsIiIgfScpOyBkbwogICAgICAgICByZWNpcGU9IiQoYmFzZW5hbWUgJChkaXJuYW1lICRmaWxlKSkiCi0JdGltZXM9IiIKLQlmb3Igc3RhdCBpbiAke3N0YXRzfTsgZG8KLQkgICAgWyAteiAiJHN0YXQiIF0gJiYgeyBlY2hvICJlbXB0eSBzdGF0cyI7IH0KLQkgICAgdGltZT0kKHNlZCAtbiAtZSAicy9eXCgkc3RhdFwpOiBcXCguKlxcKS9cXDIvcCIgJGZpbGUpCi0JICAgICMgaW4gY2FzZSB0aGUgc3RhdCBpcyBub3QgcHJlc2VudCwgc2V0IHRoZSB2YWx1ZSBhcyBOQQotCSAgICBbIC16ICIkdGltZSIgXSAmJiB7IHRpbWU9Ik5BIjsgfQotCSAgICAjIEFwcGVuZCBpdCB0byB0aW1lcwotCSAgICBpZiBbIC16ICIkdGltZXMiIF07IHRoZW4KLQkJdGltZXM9IiR7dGltZX0iCi0JICAgIGVsc2UKLQkJdGltZXM9IiR7dGltZXN9ICR7dGltZX0iCi0JICAgIGZpCi0JZG9uZQorICAgICAgICB0aW1lcz0iIgorICAgICAgICBmb3Igc3RhdCBpbiAke3N0YXRzfTsgZG8KKyAgICAgICAgICAgIFsgLXogIiRzdGF0IiBdICYmIHsgZWNobyAiZW1wdHkgc3RhdHMiOyB9CisgICAgICAgICAgICB0aW1lPSQoc2VkIC1uIC1lICJzL15cKCRzdGF0XCk6IFxcKC4qXFwpL1xcMi9wIiAkZmlsZSkKKyAgICAgICAgICAgICMgaW4gY2FzZSB0aGUgc3RhdCBpcyBub3QgcHJlc2VudCwgc2V0IHRoZSB2YWx1ZSBhcyBOQQorICAgICAgICAgICAgWyAteiAiJHRpbWUiIF0gJiYgeyB0aW1lPSJOQSI7IH0KKyAgICAgICAgICAgICMgQXBwZW5kIGl0IHRvIHRpbWVzCisgICAgICAgICAgICBpZiBbIC16ICIkdGltZXMiIF07IHRoZW4KKyAgICAgICAgICAgICAgICB0aW1lcz0iJHt0aW1lfSIKKyAgICAgICAgICAgIGVsc2UKKyAgICAgICAgICAgICAgICB0aW1lcz0iJHt0aW1lc30gJHt0aW1lfSIKKyAgICAgICAgICAgIGZpCisgICAgICAgIGRvbmUKKyAgICAgICAgaWYgWyAtbiAiJEFDQ1VNVUxBVEUiIF07IHRoZW4KKyAgICAgICAgICAgIElGUz0nICc7IHZhbHVlc2FycmF5PSgke3RpbWVzfSk7IElGUz0nOicKKyAgICAgICAgICAgIHRpbWVzPTAKKyAgICAgICAgICAgIGZvciB2YWx1ZSBpbiAiJHt2YWx1ZXNhcnJheVtAXX0iOyBkbworICAgICAgICAgICAgICAgIFsgIiR2YWx1ZSIgPT0gIk5BIiBdICYmIHsgZWNobyAiRVJST1I6IHN0YXQgaXMgbm90IHByZXNlbnQuIjsgdXNhZ2U7IGV4aXQgMTsgfQorICAgICAgICAgICAgICAgIHRpbWVzPSQoKCAkdGltZXMgKyAkdmFsdWUgKSkKKyAgICAgICAgICAgIGRvbmUKKyAgICAgICAgZmkKICAgICAgICAgZWNobyAiJHt0YXNrfSAke3JlY2lwZX0gJHt0aW1lc30iCiAgICAgZG9uZQogZG9uZQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2dlbi1sb2NrZWRzaWctY2FjaGUgYi9wb2t5L3NjcmlwdHMvZ2VuLWxvY2tlZHNpZy1jYWNoZQppbmRleCA5YmZhZTlkLi5jZDhmOWE0IDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvZ2VuLWxvY2tlZHNpZy1jYWNoZQorKysgYi9wb2t5L3NjcmlwdHMvZ2VuLWxvY2tlZHNpZy1jYWNoZQpAQCAtNzgsMTEgKzc4LDE1IEBACiBzc3RhdGVfY29udGVudF9jYWNoZSA9IHt9CiBmb3IgcyBpbiBzaWdzOgogICAgIHByZWZpeCA9IHNbOjJdCisgICAgcHJlZml4MiA9IHNbMjo0XQogICAgIGlmIHByZWZpeCBub3QgaW4gc3N0YXRlX2NvbnRlbnRfY2FjaGU6Ci0gICAgICAgIHNzdGF0ZV9jb250ZW50X2NhY2hlW3ByZWZpeF0gPSBidWlsZF9zaGFfY2FjaGUocHJlZml4KQorICAgICAgICBzc3RhdGVfY29udGVudF9jYWNoZVtwcmVmaXhdID0ge30KKyAgICBpZiBwcmVmaXgyIG5vdCBpbiBzc3RhdGVfY29udGVudF9jYWNoZVtwcmVmaXhdOgorICAgICAgICBzc3RhdGVfY29udGVudF9jYWNoZVtwcmVmaXhdW3ByZWZpeDJdID0gYnVpbGRfc2hhX2NhY2hlKHByZWZpeCArICIvIiArIHByZWZpeDIpCiAKLSAgICBmb3IgZiBpbiBzc3RhdGVfY29udGVudF9jYWNoZVtwcmVmaXhdW3NdOgotICAgICAgICBmaWxlcy5hZGQoZikKKyAgICBpZiBzIGluIHNzdGF0ZV9jb250ZW50X2NhY2hlW3ByZWZpeF1bcHJlZml4Ml06CisgICAgICAgIGZvciBmIGluIHNzdGF0ZV9jb250ZW50X2NhY2hlW3ByZWZpeF1bcHJlZml4Ml1bc106CisgICAgICAgICAgICBmaWxlcy5hZGQoZikKIAogZWxhcHNlZCA9IHRpbWUucGVyZl9jb3VudGVyKCkgLSBzdGFydF90aW1lCiBwcmludCgiR2F0aGVyaW5nIGZpbGUgbGlzdCB0b29rICUuMWZzIiAlIGVsYXBzZWQpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvaW5zdGFsbC1idWlsZHRvb2xzIGIvcG9reS9zY3JpcHRzL2luc3RhbGwtYnVpbGR0b29scwpuZXcgZmlsZSBtb2RlIDEwMDc1NQppbmRleCAwMDAwMDAwLi5jNmIzYTFlCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9zY3JpcHRzL2luc3RhbGwtYnVpbGR0b29scwpAQCAtMCwwICsxLDMzOSBAQAorIyEvdXNyL2Jpbi9lbnYgcHl0aG9uMworCisjIEJ1aWxkdG9vbHMgYW5kIGJ1aWxkdG9vbHMgZXh0ZW5kZWQgaW5zdGFsbGVyIGhlbHBlciBzY3JpcHQKKyMKKyMgQ29weXJpZ2h0IChDKSAyMDE3LTIwMjAgSW50ZWwgQ29ycG9yYXRpb24KKyMKKyMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQorIworIyAgTk9URTogLS13aXRoLWV4dGVuZGVkLWJ1aWxkdG9vbHMgaXMgb24gYnkgZGVmYXVsdAorIworIyAgRXhhbXBsZSB1c2FnZSAoZXh0ZW5kZWQgYnVpbGR0b29scyBmcm9tIG1pbGVzdG9uZSk6CisjICAgICgxKSB1c2luZyAtLXVybCBhbmQgLS1maWxlbmFtZQorIyAgICAgICAgJCBpbnN0YWxsLWJ1aWxkdG9vbHMgXAorIyAgICAgICAgICAtLXVybCBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMveW9jdG8vbWlsZXN0b25lcy95b2N0by0zLjFfTTMvYnVpbGR0b29scyBcCisjICAgICAgICAgIC0tZmlsZW5hbWUgeDg2XzY0LWJ1aWxkdG9vbHMtZXh0ZW5kZWQtbmF0aXZlc2RrLXN0YW5kYWxvbmUtMy4wK3NuYXBzaG90LTIwMjAwMzE1LnNoCisjICAgICgyKSB1c2luZyAtLWJhc2UtdXJsLCAtLXJlbGVhc2UsIC0taW5zdGFsbGVyLXZlcnNpb24gYW5kIC0tYnVpbGQtZGF0ZQorIyAgICAgICAgJCBpbnN0YWxsLWJ1aWxkdG9vbHMgXAorIyAgICAgICAgICAtLWJhc2UtdXJsIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy95b2N0byBcCisjICAgICAgICAgIC0tcmVsZWFzZSB5b2N0by0zLjFfTTMgXAorIyAgICAgICAgICAtLWluc3RhbGxlci12ZXJzaW9uIDMuMCtzbmFwc2hvdAorIyAgICAgICAgICAtLWJ1aWxkLWRhdGUgMjAyMDAwMzE1CisjCisjICBFeGFtcGxlIHVzYWdlIChzdGFuZGFyZCBidWlsZHRvb2xzIGZyb20gcmVsZWFzZSk6CisjICAgICgzKSB1c2luZyAtLXVybCBhbmQgLS1maWxlbmFtZQorIyAgICAgICAgJCBpbnN0YWxsLWJ1aWxkdG9vbHMgLS13aXRob3V0LWV4dGVuZGVkLWJ1aWxkdG9vbHMgXAorIyAgICAgICAgICAtLXVybCBodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMveW9jdG8veW9jdG8tMy4wLjIvYnVpbGR0b29scyBcCisjICAgICAgICAgIC0tZmlsZW5hbWUgeDg2XzY0LWJ1aWxkdG9vbHMtbmF0aXZlc2RrLXN0YW5kYWxvbmUtMy4wLjIuc2gKKyMgICAgKDQpIHVzaW5nIC0tYmFzZS11cmwsIC0tcmVsZWFzZSBhbmQgLS1pbnN0YWxsZXItdmVyc2lvbgorIyAgICAgICAgJCBpbnN0YWxsLWJ1aWxkdG9vbHMgLS13aXRob3V0LWV4dGVuZGVkLWJ1aWxkdG9vbHMgXAorIyAgICAgICAgICAtLWJhc2UtdXJsIGh0dHA6Ly9kb3dubG9hZHMueW9jdG9wcm9qZWN0Lm9yZy9yZWxlYXNlcy95b2N0byBcCisjICAgICAgICAgIC0tcmVsZWFzZSB5b2N0by0zLjAuMiBcCisjICAgICAgICAgIC0taW5zdGFsbGVyLXZlcnNpb24gMy4wLjIKKyMKKworaW1wb3J0IGFyZ3BhcnNlCitpbXBvcnQgbG9nZ2luZworaW1wb3J0IG9zCitpbXBvcnQgcmUKK2ltcG9ydCBzaHV0aWwKK2ltcG9ydCBzaGxleAoraW1wb3J0IHN0YXQKK2ltcG9ydCBzdWJwcm9jZXNzCitpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKK2Zyb20gdXJsbGliLnBhcnNlIGltcG9ydCBxdW90ZQorCitzY3JpcHRzX3BhdGggPSBvcy5wYXRoLmRpcm5hbWUob3MucGF0aC5yZWFscGF0aChfX2ZpbGVfXykpCitsaWJfcGF0aCA9IHNjcmlwdHNfcGF0aCArICcvbGliJworc3lzLnBhdGggPSBzeXMucGF0aCArIFtsaWJfcGF0aF0KK2ltcG9ydCBzY3JpcHR1dGlscworaW1wb3J0IHNjcmlwdHBhdGgKKworCitQUk9HTkFNRSA9ICdpbnN0YWxsLWJ1aWxkdG9vbHMnCitsb2dnZXIgPSBzY3JpcHR1dGlscy5sb2dnZXJfY3JlYXRlKFBST0dOQU1FLCBzdHJlYW09c3lzLnN0ZG91dCkKKworREVGQVVMVF9JTlNUQUxMX0RJUiA9IG9zLnBhdGguam9pbihvcy5wYXRoLnNwbGl0KHNjcmlwdHNfcGF0aClbMF0sJ2J1aWxkdG9vbHMnKQorREVGQVVMVF9CQVNFX1VSTCA9ICdodHRwOi8vZG93bmxvYWRzLnlvY3RvcHJvamVjdC5vcmcvcmVsZWFzZXMveW9jdG8nCitERUZBVUxUX1JFTEVBU0UgPSAneW9jdG8tMy4xJworREVGQVVMVF9JTlNUQUxMRVJfVkVSU0lPTiA9ICczLjEnCitERUZBVUxUX0JVSUxEREFURSA9ICcnCisKKyMgUHl0aG9uIHZlcnNpb24gc2FuaXR5IGNoZWNrCitpZiBub3QgKHN5cy52ZXJzaW9uX2luZm8ubWFqb3IgPT0gMyBhbmQgc3lzLnZlcnNpb25faW5mby5taW5vciA+PSA0KToKKyAgICBsb2dnZXIuZXJyb3IoIlRoaXMgc2NyaXB0IHJlcXVpcmVzIFB5dGhvbiAzLjQgb3IgZ3JlYXRlciIpCisgICAgbG9nZ2VyLmVycm9yKCJZb3UgaGF2ZSBQeXRob24gJXMuJXMiICUKKwkgIChzeXMudmVyc2lvbl9pbmZvLm1ham9yLCBzeXMudmVyc2lvbl9pbmZvLm1pbm9yKSkKKyAgICBzeXMuZXhpdCgxKQorCisjIFRoZSBmb2xsb3dpbmcgdGhyZWUgZnVuY3Rpb25zIGFyZSBjb3BpZWQgZGlyZWN0bHkgZnJvbQorIyBiaXRiYWtlL2xpYi9iYi91dGlscy5weSwgaW4gb3JkZXIgdG8gYWxsb3cgdGhpcyBzY3JpcHQKKyMgdG8gcnVuIG9uIHZlcnNpb25zIG9mIHB5dGhvbiBlYXJsaWVyIHRoYW4gd2hhdCBiaXRiYWtlCisjIHN1cHBvcnRzIChlLmcuIGxlc3MgdGhhbiBQeXRob24gMy41IGZvciBZUCAzLjEgcmVsZWFzZSkKKworZGVmIF9oYXNoZXIobWV0aG9kLCBmaWxlbmFtZSk6CisgICAgaW1wb3J0IG1tYXAKKworICAgIHdpdGggb3BlbihmaWxlbmFtZSwgInJiIikgYXMgZjoKKyAgICAgICAgdHJ5OgorICAgICAgICAgICAgd2l0aCBtbWFwLm1tYXAoZi5maWxlbm8oKSwgMCwgYWNjZXNzPW1tYXAuQUNDRVNTX1JFQUQpIGFzIG1tOgorICAgICAgICAgICAgICAgIGZvciBjaHVuayBpbiBpdGVyKGxhbWJkYTogbW0ucmVhZCg4MTkyKSwgYicnKToKKyAgICAgICAgICAgICAgICAgICAgbWV0aG9kLnVwZGF0ZShjaHVuaykKKyAgICAgICAgZXhjZXB0IFZhbHVlRXJyb3I6CisgICAgICAgICAgICAjIFlvdSBjYW4ndCBtbWFwKCkgYW4gZW1wdHkgZmlsZSBzbyBzaWxlbmNlIHRoaXMgZXhjZXB0aW9uCisgICAgICAgICAgICBwYXNzCisgICAgcmV0dXJuIG1ldGhvZC5oZXhkaWdlc3QoKQorCisKK2RlZiBtZDVfZmlsZShmaWxlbmFtZSk6CisgICAgIiIiCisgICAgUmV0dXJuIHRoZSBoZXggc3RyaW5nIHJlcHJlc2VudGF0aW9uIG9mIHRoZSBNRDUgY2hlY2tzdW0gb2YgZmlsZW5hbWUuCisgICAgIiIiCisgICAgaW1wb3J0IGhhc2hsaWIKKyAgICByZXR1cm4gX2hhc2hlcihoYXNobGliLm1kNSgpLCBmaWxlbmFtZSkKKworZGVmIHNoYTI1Nl9maWxlKGZpbGVuYW1lKToKKyAgICAiIiIKKyAgICBSZXR1cm4gdGhlIGhleCBzdHJpbmcgcmVwcmVzZW50YXRpb24gb2YgdGhlIDI1Ni1iaXQgU0hBIGNoZWNrc3VtIG9mCisgICAgZmlsZW5hbWUuCisgICAgIiIiCisgICAgaW1wb3J0IGhhc2hsaWIKKyAgICByZXR1cm4gX2hhc2hlcihoYXNobGliLnNoYTI1NigpLCBmaWxlbmFtZSkKKworCitkZWYgbWFpbigpOgorICAgIGdsb2JhbCBERUZBVUxUX0lOU1RBTExfRElSCisgICAgZ2xvYmFsIERFRkFVTFRfQkFTRV9VUkwKKyAgICBnbG9iYWwgREVGQVVMVF9SRUxFQVNFCisgICAgZ2xvYmFsIERFRkFVTFRfSU5TVEFMTEVSX1ZFUlNJT04KKyAgICBnbG9iYWwgREVGQVVMVF9CVUlMRERBVEUKKyAgICBmaWxlbmFtZSA9ICIiCisgICAgcmVsZWFzZSA9ICIiCisgICAgYnVpbGR0b29sc191cmwgPSAiIgorICAgIGluc3RhbGxfZGlyID0gIiIKKworICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKAorICAgICAgICBkZXNjcmlwdGlvbj0iQnVpbGR0b29scyBpbnN0YWxsYXRpb24gaGVscGVyIiwKKyAgICAgICAgYWRkX2hlbHA9RmFsc2UpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXUnLCAnLS11cmwnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nVVJMIGZyb20gd2hlcmUgdG8gZmV0Y2ggYnVpbGR0b29scyBTREsgaW5zdGFsbGVyLCBub3QgJworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAnaW5jbHVkaW5nIGZpbGVuYW1lIChvcHRpb25hbClcbicKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1JlcXVpcmVzIC0tZmlsZW5hbWUuJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1mJywgJy0tZmlsZW5hbWUnLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZmlsZW5hbWUgZm9yIHRoZSBidWlsZHRvb2xzIFNESyBpbnN0YWxsZXIgdG8gYmUgaW5zdGFsbGVkICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJyhvcHRpb25hbClcblJlcXVpcmVzIC0tdXJsJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1kJywgJy0tZGlyZWN0b3J5JywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9REVGQVVMVF9JTlNUQUxMX0RJUiwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J2RpcmVjdG9yeSB3aGVyZSBidWlsZHRvb2xzIFNESyB3aWxsIGJlIGluc3RhbGxlZCAob3B0aW9uYWwpJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1yJywgJy0tcmVsZWFzZScsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PURFRkFVTFRfUkVMRUFTRSwKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J1lvY3RvIFByb2plY3QgcmVsZWFzZSBzdHJpbmcgZm9yIFNESyB3aGljaCB3aWxsIGJlICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ2luc3RhbGxlZCAob3B0aW9uYWwpJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1WJywgJy0taW5zdGFsbGVyLXZlcnNpb24nLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1ERUZBVUxUX0lOU1RBTExFUl9WRVJTSU9OLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0ndmVyc2lvbiBzdHJpbmcgZm9yIHRoZSBTREsgdG8gYmUgaW5zdGFsbGVkIChvcHRpb25hbCknLAorICAgICAgICAgICAgICAgICAgICAgICAgYWN0aW9uPSdzdG9yZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLWInLCAnLS1iYXNlLXVybCcsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PURFRkFVTFRfQkFTRV9VUkwsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdiYXNlIFVSTCBmcm9tIHdoaWNoIHRvIGZldGNoIFNESyAob3B0aW9uYWwpJywgYWN0aW9uPSdzdG9yZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXQnLCAnLS1idWlsZC1kYXRlJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9REVGQVVMVF9CVUlMRERBVEUsCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdCdWlsZCBkYXRlIG9mIHByZS1yZWxlYXNlIFNESyAob3B0aW9uYWwpJywgYWN0aW9uPSdzdG9yZScpCisgICAgZ3JvdXAgPSBwYXJzZXIuYWRkX211dHVhbGx5X2V4Y2x1c2l2ZV9ncm91cCgpCisgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLXdpdGgtZXh0ZW5kZWQtYnVpbGR0b29scycsIGFjdGlvbj0nc3RvcmVfdHJ1ZScsCisgICAgICAgICAgICAgICAgICAgICAgIGRlc3Q9J3dpdGhfZXh0ZW5kZWRfYnVpbGR0b29scycsCisgICAgICAgICAgICAgICAgICAgICAgIGRlZmF1bHQ9VHJ1ZSwKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZW5hYmxlIGV4dGVuZGVkIGJ1aWxkdG9vbHMgdGFyYmFsbCAob24gYnkgZGVmYXVsdCknKQorICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS13aXRob3V0LWV4dGVuZGVkLWJ1aWxkdG9vbHMnLCBhY3Rpb249J3N0b3JlX2ZhbHNlJywKKyAgICAgICAgICAgICAgICAgICAgICAgZGVzdD0nd2l0aF9leHRlbmRlZF9idWlsZHRvb2xzJywKKyAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nZGlzYWJsZSBleHRlbmRlZCBidWlsZHRvb2xzICh0cmFkaXRpb25hbCBidWlsZHRvb2xzIHRhcmJhbGwpJykKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctYycsICctLWNoZWNrJywgaGVscD0nZW5hYmxlIG1kNSBjaGVja3N1bSBjaGVja2luZycsCisgICAgICAgICAgICAgICAgICAgICAgICBkZWZhdWx0PVRydWUsCisgICAgICAgICAgICAgICAgICAgICAgICBhY3Rpb249J3N0b3JlX3RydWUnKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1EJywgJy0tZGVidWcnLCBoZWxwPSdlbmFibGUgZGVidWcgb3V0cHV0JywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisgICAgcGFyc2VyLmFkZF9hcmd1bWVudCgnLXEnLCAnLS1xdWlldCcsIGhlbHA9J3ByaW50IG9ubHkgZXJyb3JzJywKKyAgICAgICAgICAgICAgICAgICAgICAgIGFjdGlvbj0nc3RvcmVfdHJ1ZScpCisKKyAgICBwYXJzZXIuYWRkX2FyZ3VtZW50KCctaCcsICctLWhlbHAnLCBhY3Rpb249J2hlbHAnLAorICAgICAgICAgICAgICAgICAgICAgICAgZGVmYXVsdD1hcmdwYXJzZS5TVVBQUkVTUywKKyAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9J3Nob3cgdGhpcyBoZWxwIG1lc3NhZ2UgYW5kIGV4aXQnKQorCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKworICAgIGlmIGFyZ3MuZGVidWc6CisgICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkRFQlVHKQorICAgIGVsaWYgYXJncy5xdWlldDoKKyAgICAgICAgbG9nZ2VyLnNldExldmVsKGxvZ2dpbmcuRVJST1IpCisKKyAgICBpZiBhcmdzLnVybCBhbmQgYXJncy5maWxlbmFtZToKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCItLXVybCBhbmQgLS1maWxlbmFtZSBkZXRlY3RlZC4gSWdub3JpbmcgLS1iYXNlLXVybCAiCisgICAgICAgICAgICAgICAgICAgICAiLS1yZWxlYXNlIC0taW5zdGFsbGVyLXZlcnNpb24gIGFyZ3VtZW50cy4iKQorICAgICAgICBmaWxlbmFtZSA9IGFyZ3MuZmlsZW5hbWUKKyAgICAgICAgYnVpbGR0b29sc191cmwgPSAiJXMvJXMiICUgKGFyZ3MudXJsLCBmaWxlbmFtZSkKKyAgICBlbHNlOgorICAgICAgICBpZiBhcmdzLmJhc2VfdXJsOgorICAgICAgICAgICAgYmFzZV91cmwgPSBhcmdzLmJhc2VfdXJsCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBiYXNlX3VybCA9IERFRkFVTFRfQkFTRV9VUkwKKyAgICAgICAgaWYgYXJncy5yZWxlYXNlOgorICAgICAgICAgICAgIyBjaGVjayBpZiB0aGlzIGlzIGEgcHJlLXJlbGVhc2UgIm1pbGVzdG9uZSIgU0RLCisgICAgICAgICAgICBtID0gcmUuc2VhcmNoKHIiXig/UDxkaXN0cm8+W2EtekEtWlwtXSspKD9QPHZlcnNpb24+WzAtOS5dKykoP1A8bWlsZXN0b25lPl9NWzEtOV0pJCIsCisgICAgICAgICAgICAgICAgICAgICAgICAgIGFyZ3MucmVsZWFzZSkKKyAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygibWlsZXN0b25lIHJlZ2V4OiAlcyIgJSBtKQorICAgICAgICAgICAgaWYgbSBhbmQgbS5ncm91cCgnbWlsZXN0b25lJyk6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJyZWxlYXNlW2Rpc3Ryb106ICVzIiAlIG0uZ3JvdXAoJ2Rpc3RybycpKQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygicmVsZWFzZVt2ZXJzaW9uXTogJXMiICUgbS5ncm91cCgndmVyc2lvbicpKQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygicmVsZWFzZVttaWxlc3RvbmVdOiAlcyIgJSBtLmdyb3VwKCdtaWxlc3RvbmUnKSkKKyAgICAgICAgICAgICAgICBpZiBub3QgYXJncy5idWlsZF9kYXRlOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIk1pbGVzdG9uZSBpbnN0YWxsZXJzIHJlcXVpcmUgLS1idWlsZC1kYXRlIikKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBhcmdzLndpdGhfZXh0ZW5kZWRfYnVpbGR0b29sczoKKyAgICAgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gIng4Nl82NC1idWlsZHRvb2xzLWV4dGVuZGVkLW5hdGl2ZXNkay1zdGFuZGFsb25lLSVzLSVzLnNoIiAlICgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLmluc3RhbGxlcl92ZXJzaW9uLCBhcmdzLmJ1aWxkX2RhdGUpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBmaWxlbmFtZSA9ICJ4ODZfNjQtYnVpbGR0b29scy1uYXRpdmVzZGstc3RhbmRhbG9uZS0lcy0lcy5zaCIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5pbnN0YWxsZXJfdmVyc2lvbiwgYXJncy5idWlsZF9kYXRlKQorICAgICAgICAgICAgICAgICAgICBzYWZlX2ZpbGVuYW1lID0gcXVvdGUoZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgICAgIGJ1aWxkdG9vbHNfdXJsID0gIiVzL21pbGVzdG9uZXMvJXMvYnVpbGR0b29scy8lcyIgJSAoYmFzZV91cmwsIGFyZ3MucmVsZWFzZSwgc2FmZV9maWxlbmFtZSkKKyAgICAgICAgICAgICMgcmVndWxhciByZWxlYXNlIFNESworICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBpZiBhcmdzLndpdGhfZXh0ZW5kZWRfYnVpbGR0b29sczoKKyAgICAgICAgICAgICAgICAgICAgZmlsZW5hbWUgPSAieDg2XzY0LWJ1aWxkdG9vbHMtZXh0ZW5kZWQtbmF0aXZlc2RrLXN0YW5kYWxvbmUtJXMuc2giICUgYXJncy5pbnN0YWxsZXJfdmVyc2lvbgorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGZpbGVuYW1lID0gIng4Nl82NC1idWlsZHRvb2xzLW5hdGl2ZXNkay1zdGFuZGFsb25lLSVzLnNoIiAlIGFyZ3MuaW5zdGFsbGVyX3ZlcnNpb24KKyAgICAgICAgICAgICAgICBzYWZlX2ZpbGVuYW1lID0gcXVvdGUoZmlsZW5hbWUpCisgICAgICAgICAgICAgICAgYnVpbGR0b29sc191cmwgPSAiJXMvJXMvYnVpbGR0b29scy8lcyIgJSAoYmFzZV91cmwsIGFyZ3MucmVsZWFzZSwgc2FmZV9maWxlbmFtZSkKKworICAgIHRtcHNka19kaXIgPSB0ZW1wZmlsZS5ta2R0ZW1wKCkKKyAgICB0cnk6CisgICAgICAgICMgRmV0Y2ggaW5zdGFsbGVyCisgICAgICAgIGxvZ2dlci5pbmZvKCJGZXRjaGluZyBidWlsZHRvb2xzIGluc3RhbGxlciIpCisgICAgICAgIHRtcGJ1aWxkdG9vbHMgPSBvcy5wYXRoLmpvaW4odG1wc2RrX2RpciwgZmlsZW5hbWUpCisgICAgICAgIHJldCA9IHN1YnByb2Nlc3MuY2FsbCgid2dldCAtcSAtTyAlcyAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRtcGJ1aWxkdG9vbHMsIGJ1aWxkdG9vbHNfdXJsKSwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgaWYgcmV0ICE9IDA6CisgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNvdWxkIG5vdCBkb3dubG9hZCBmaWxlIGZyb20gJXMiICUgYnVpbGR0b29sc191cmwpCisgICAgICAgICAgICByZXR1cm4gcmV0CisKKyAgICAgICAgIyBWZXJpZnkgY2hlY2tzdW0KKyAgICAgICAgaWYgYXJncy5jaGVjazoKKyAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJGZXRjaGluZyBidWlsZHRvb2xzIGluc3RhbGxlciBjaGVja3N1bSIpCisgICAgICAgICAgICBjaGVja3N1bV90eXBlID0gIiIKKyAgICAgICAgICAgIGZvciBjaGVja3N1bV90eXBlIGluIFsibWQ1c3VtIiwgInNoYTI1NiJdOgorICAgICAgICAgICAgICAgIGNoZWNrX3VybCA9ICJ7fS57fSIuZm9ybWF0KGJ1aWxkdG9vbHNfdXJsLCBjaGVja3N1bV90eXBlKQorICAgICAgICAgICAgICAgIGNoZWNrc3VtX2ZpbGVuYW1lID0gInt9Lnt9Ii5mb3JtYXQoZmlsZW5hbWUsIGNoZWNrc3VtX3R5cGUpCisgICAgICAgICAgICAgICAgdG1wYnVpbGR0b29sc19jaGVja3N1bSA9IG9zLnBhdGguam9pbih0bXBzZGtfZGlyLCBjaGVja3N1bV9maWxlbmFtZSkKKyAgICAgICAgICAgICAgICByZXQgPSBzdWJwcm9jZXNzLmNhbGwoIndnZXQgLXEgLU8gJXMgJXMiICUKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRtcGJ1aWxkdG9vbHNfY2hlY2tzdW0sIGNoZWNrX3VybCksIHNoZWxsPVRydWUpCisgICAgICAgICAgICAgICAgaWYgcmV0ID09IDA6CisgICAgICAgICAgICAgICAgICAgIGJyZWFrCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGlmIHJldCAhPSAwOgorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIkNvdWxkIG5vdCBkb3dubG9hZCBmaWxlIGZyb20gJXMiICUgY2hlY2tfdXJsKQorICAgICAgICAgICAgICAgICAgICByZXR1cm4gcmV0CisgICAgICAgICAgICByZWdleCA9IHJlLmNvbXBpbGUociJeKD9QPGNoZWNrc3VtPlswLTlhLWZdKylcc1xzKD9QPHBhdGg+LiovKT8oP1A8ZmlsZW5hbWU+LiopJCIpCisgICAgICAgICAgICB3aXRoIG9wZW4odG1wYnVpbGR0b29sc19jaGVja3N1bSwgJ3JiJykgYXMgZjoKKyAgICAgICAgICAgICAgICBvcmlnaW5hbCA9IGYucmVhZCgpCisgICAgICAgICAgICAgICAgbSA9IHJlLnNlYXJjaChyZWdleCwgb3JpZ2luYWwuZGVjb2RlKCJ1dGYtOCIpKQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiY2hlY2tzdW0gcmVnZXggbWF0Y2g6ICVzIiAlIG0pCisgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJjaGVja3N1bTogJXMiICUgbS5ncm91cCgnY2hlY2tzdW0nKSkKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoInBhdGg6ICVzIiAlIG0uZ3JvdXAoJ3BhdGgnKSkKKyAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoImZpbGVuYW1lOiAlcyIgJSBtLmdyb3VwKCdmaWxlbmFtZScpKQorICAgICAgICAgICAgICAgIGlmIGZpbGVuYW1lICE9IG0uZ3JvdXAoJ2ZpbGVuYW1lJyk6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRmlsZW5hbWUgZG9lcyBub3QgbWF0Y2ggbmFtZSBpbiBjaGVja3N1bSIpCisgICAgICAgICAgICAgICAgICAgIHJldHVybiAxCisgICAgICAgICAgICAgICAgY2hlY2tzdW0gPSBtLmdyb3VwKCdjaGVja3N1bScpCisgICAgICAgICAgICBpZiBjaGVja3N1bV90eXBlID09ICJtZDVzdW0iOgorICAgICAgICAgICAgICAgIGNoZWNrc3VtX3ZhbHVlID0gbWQ1X2ZpbGUodG1wYnVpbGR0b29scykKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgY2hlY2tzdW1fdmFsdWUgPSBzaGEyNTZfZmlsZSh0bXBidWlsZHRvb2xzKQorICAgICAgICAgICAgaWYgY2hlY2tzdW0gPT0gY2hlY2tzdW1fdmFsdWU6CisgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJDaGVja3N1bSBzdWNjZXNzIikKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJDaGVja3N1bSAlcyBleHBlY3RlZC4gQWN0dWFsIGNoZWNrc3VtIGlzICVzLiIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAoY2hlY2tzdW0sIGNoZWNrc3VtX3ZhbHVlKSkKKworICAgICAgICAjIE1ha2UgaW5zdGFsbGVyIGV4ZWN1dGFibGUKKyAgICAgICAgbG9nZ2VyLmluZm8oIk1ha2luZyBpbnN0YWxsZXIgZXhlY3V0YWJsZSIpCisgICAgICAgIHN0ID0gb3Muc3RhdCh0bXBidWlsZHRvb2xzKQorICAgICAgICBvcy5jaG1vZCh0bXBidWlsZHRvb2xzLCBzdC5zdF9tb2RlIHwgc3RhdC5TX0lFWEVDKQorICAgICAgICBsb2dnZXIuZGVidWcob3Muc3RhdCh0bXBidWlsZHRvb2xzKSkKKyAgICAgICAgaWYgYXJncy5kaXJlY3Rvcnk6CisgICAgICAgICAgICBpbnN0YWxsX2RpciA9IGFyZ3MuZGlyZWN0b3J5CisgICAgICAgICAgICByZXQgPSBzdWJwcm9jZXNzLmNhbGwoIiVzIC1kICVzIC15IiAlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgKHRtcGJ1aWxkdG9vbHMsIGluc3RhbGxfZGlyKSwgc2hlbGw9VHJ1ZSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGluc3RhbGxfZGlyID0gIi9vcHQvcG9reS8lcyIgJSBhcmdzLmluc3RhbGxlcl92ZXJzaW9uCisgICAgICAgICAgICByZXQgPSBzdWJwcm9jZXNzLmNhbGwoIiVzIC15IiAlIHRtcGJ1aWxkdG9vbHMsIHNoZWxsPVRydWUpCisgICAgICAgIGlmIHJldCAhPSAwOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJDb3VsZCBub3QgcnVuIGJ1aWxkdG9vbHMgaW5zdGFsbGVyIikKKworICAgICAgICAjIFNldHVwIHRoZSBlbnZpcm9ubWVudAorICAgICAgICBsb2dnZXIuaW5mbygiU2V0dGluZyB1cCB0aGUgZW52aXJvbm1lbnQiKQorICAgICAgICByZWdleCA9IHJlLmNvbXBpbGUocideKD9QPGV4cG9ydD5leHBvcnQgKT8oP1A8ZW52X3Zhcj5bQS1aX10rKT0oP1A8ZW52X3ZhbD4uKykkJykKKyAgICAgICAgd2l0aCBvcGVuKCIlcy9lbnZpcm9ubWVudC1zZXR1cC14ODZfNjQtcG9reXNkay1saW51eCIgJQorICAgICAgICAgICAgICAgICAgaW5zdGFsbF9kaXIsICdyYicpIGFzIGY6CisgICAgICAgICAgICBmb3IgbGluZSBpbiBmOgorICAgICAgICAgICAgICAgIG1hdGNoID0gcmVnZXguc2VhcmNoKGxpbmUuZGVjb2RlKCd1dGYtOCcpKQorICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygiZXhwb3J0IHJlZ2V4OiAlcyIgJSBtYXRjaCkKKyAgICAgICAgICAgICAgICBpZiBtYXRjaDoKKyAgICAgICAgICAgICAgICAgICAgZW52X3ZhciA9IG1hdGNoLmdyb3VwKCdlbnZfdmFyJykKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmRlYnVnKCJlbnZfdmFyOiAlcyIgJSBlbnZfdmFyKQorICAgICAgICAgICAgICAgICAgICBlbnZfdmFsID0gbWF0Y2guZ3JvdXAoJ2Vudl92YWwnKQorICAgICAgICAgICAgICAgICAgICBsb2dnZXIuZGVidWcoImVudl92YWw6ICVzIiAlIGVudl92YWwpCisgICAgICAgICAgICAgICAgICAgIG9zLmVudmlyb25bZW52X3Zhcl0gPSBlbnZfdmFsCisKKyAgICAgICAgIyBUZXN0IGluc3RhbGxhdGlvbgorICAgICAgICBsb2dnZXIuaW5mbygiVGVzdGluZyBpbnN0YWxsYXRpb24iKQorICAgICAgICB0b29sID0gIiIKKyAgICAgICAgbSA9IHJlLnNlYXJjaCgiZXh0ZW5kZWQiLCB0bXBidWlsZHRvb2xzKQorICAgICAgICBsb2dnZXIuZGVidWcoImV4dGVuZGVkIHJlZ2V4OiAlcyIgJSBtKQorICAgICAgICBpZiBhcmdzLndpdGhfZXh0ZW5kZWRfYnVpbGR0b29scyBhbmQgbm90IG06CisgICAgICAgICAgICBsb2dnZXIuaW5mbygiSWdub3JpbmcgLS13aXRoLWV4dGVuZGVkLWJ1aWxkdG9vbHMgYXMgZmlsZW5hbWUgIgorICAgICAgICAgICAgICAgICAgICAgICAgImRvZXMgbm90IGNvbnRhaW4gJ2V4dGVuZGVkJyIpCisgICAgICAgIGlmIGFyZ3Mud2l0aF9leHRlbmRlZF9idWlsZHRvb2xzIGFuZCBtOgorICAgICAgICAgICAgdG9vbCA9ICdnY2MnCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICB0b29sID0gJ3RhcicKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJpbnN0YWxsX2RpcjogJXMiICUgaW5zdGFsbF9kaXIpCisgICAgICAgIGNtZCA9IHNobGV4LnNwbGl0KCIvdXNyL2Jpbi93aGljaCAlcyIgJSB0b29sKQorICAgICAgICBsb2dnZXIuZGVidWcoImNtZDogJXMiICUgY21kKQorICAgICAgICBsb2dnZXIuZGVidWcoInRvb2w6ICVzIiAlIHRvb2wpCisgICAgICAgIHByb2MgPSBzdWJwcm9jZXNzLlBvcGVuKGNtZCwgc3Rkb3V0PXN1YnByb2Nlc3MuUElQRSkKKyAgICAgICAgb3V0cHV0LCBlcnJvcnMgPSBwcm9jLmNvbW11bmljYXRlKCkKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJwcm9jLmFyZ3M6ICVzIiAlIHByb2MuYXJncykKKyAgICAgICAgbG9nZ2VyLmRlYnVnKCJwcm9jLmNvbW11bmljYXRlKCk6IG91dHB1dCAlcyIgJSBvdXRwdXQpCisgICAgICAgIGxvZ2dlci5kZWJ1ZygicHJvYy5jb21tdW5pY2F0ZSgpOiBlcnJvcnMgJXMiICUgZXJyb3JzKQorICAgICAgICB3aGljaF90b29sID0gb3V0cHV0LmRlY29kZSgndXRmLTgnKQorICAgICAgICBsb2dnZXIuZGVidWcoIndoaWNoICVzOiAlcyIgJSAodG9vbCwgd2hpY2hfdG9vbCkpCisgICAgICAgIHJldCA9IHByb2MucmV0dXJuY29kZQorICAgICAgICBpZiBub3Qgd2hpY2hfdG9vbC5zdGFydHN3aXRoKGluc3RhbGxfZGlyKToKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiU29tZXRoaW5nIHdlbnQgd3Jvbmc6ICVzIG5vdCBmb3VuZCBpbiAlcyIgJQorICAgICAgICAgICAgICAgICAgICAgICAgICh0b29sLCBpbnN0YWxsX2RpcikpCisgICAgICAgIGlmIHJldCAhPSAwOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCJTb21ldGhpbmcgd2VudCB3cm9uZzogaW5zdGFsbGF0aW9uIGZhaWxlZCIpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICBsb2dnZXIuaW5mbygiSW5zdGFsbGF0aW9uIHN1Y2Nlc3NmdWwuIFJlbWVtYmVyIHRvIHNvdXJjZSB0aGUgIgorICAgICAgICAgICAgICAgICAgICAgICAgImVudmlyb25tZW50IHNldHVwIHNjcmlwdCBub3cgYW5kIGluIGFueSBuZXcgc2Vzc2lvbi4iKQorICAgICAgICByZXR1cm4gcmV0CisKKyAgICBmaW5hbGx5OgorICAgICAgICAjIGNsZWFudXAgdG1wIGRpcmVjdG9yeQorICAgICAgICBzaHV0aWwucm10cmVlKHRtcHNka19kaXIpCisKKworaWYgX19uYW1lX18gPT0gJ19fbWFpbl9fJzoKKyAgICB0cnk6CisgICAgICAgIHJldCA9IG1haW4oKQorICAgIGV4Y2VwdCBFeGNlcHRpb246CisgICAgICAgIHJldCA9IDEKKyAgICAgICAgaW1wb3J0IHRyYWNlYmFjaworCisgICAgICAgIHRyYWNlYmFjay5wcmludF9leGMoKQorICAgIHN5cy5leGl0KHJldCkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weSBiL3Bva3kvc2NyaXB0cy9saWIvZGV2dG9vbC9zdGFuZGFyZC5weQppbmRleCAxYzBjZDhhLi5iYWI2NDRiIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL2RldnRvb2wvc3RhbmRhcmQucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9kZXZ0b29sL3N0YW5kYXJkLnB5CkBAIC0xNDUsOCArMTQ1LDggQEAKICAgICAgICAgZXh0cmFjbWRvcHRzICs9ICcgLS1zcmMtc3ViZGlyICIlcyInICUgYXJncy5zcmNfc3ViZGlyCiAgICAgaWYgYXJncy5hdXRvcmV2OgogICAgICAgICBleHRyYWNtZG9wdHMgKz0gJyAtYScKLSAgICBpZiBhcmdzLmZldGNoX2RldjoKLSAgICAgICAgZXh0cmFjbWRvcHRzICs9ICcgLS1mZXRjaC1kZXYnCisgICAgaWYgYXJncy5ucG1fZGV2OgorICAgICAgICBleHRyYWNtZG9wdHMgKz0gJyAtLW5wbS1kZXYnCiAgICAgaWYgYXJncy5taXJyb3JzOgogICAgICAgICBleHRyYWNtZG9wdHMgKz0gJyAtLW1pcnJvcnMnCiAgICAgaWYgYXJncy5zcmNyZXY6CkBAIC0yNjAsMTQgKzI2MCwxMCBAQAogICAgICAgICAgICAgICAgIGYud3JpdGUoJ31cbicpCiAKICAgICAgICAgICAgIGlmIGJiLmRhdGEuaW5oZXJpdHNfY2xhc3MoJ25wbScsIHJkKToKLSAgICAgICAgICAgICAgICBmLndyaXRlKCdkb19pbnN0YWxsX2FwcGVuZCgpIHtcbicpCi0gICAgICAgICAgICAgICAgZi53cml0ZSgnICAgICMgUmVtb3ZlIGZpbGVzIGFkZGVkIHRvIHNvdXJjZSBkaXIgYnkgZGV2dG9vbC9leHRlcm5hbHNyY1xuJykKLSAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgcm0gLWYgJHtOUE1fSU5TVEFMTERJUn0vc2luZ2xldGFzay5sb2NrXG4nKQotICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICBybSAtcmYgJHtOUE1fSU5TVEFMTERJUn0vLmdpdFxuJykKLSAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgcm0gLXJmICR7TlBNX0lOU1RBTExESVJ9L29lLWxvY2FsLWZpbGVzXG4nKQotICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICBmb3Igc3ltbGluayBpbiAke0VYVEVSTkFMU1JDX1NZTUxJTktTfSA7IGRvXG4nKQotICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICAgICAgcm0gLWYgJHtOUE1fSU5TVEFMTERJUn0vJHtzeW1saW5rJSU6Kn1cbicpCi0gICAgICAgICAgICAgICAgZi53cml0ZSgnICAgIGRvbmVcbicpCisgICAgICAgICAgICAgICAgZi53cml0ZSgncHl0aG9uIGRvX2NvbmZpZ3VyZV9hcHBlbmQoKSB7XG4nKQorICAgICAgICAgICAgICAgIGYud3JpdGUoJyAgICBwa2dkaXIgPSBkLmdldFZhcigiTlBNX1BBQ0tBR0UiKVxuJykKKyAgICAgICAgICAgICAgICBmLndyaXRlKCcgICAgbG9ja2ZpbGUgPSBvcy5wYXRoLmpvaW4ocGtnZGlyLCAic2luZ2xldGFzay5sb2NrIilcbicpCisgICAgICAgICAgICAgICAgZi53cml0ZSgnICAgIGJiLnV0aWxzLnJlbW92ZShsb2NrZmlsZSlcbicpCiAgICAgICAgICAgICAgICAgZi53cml0ZSgnfVxuJykKIAogICAgICAgICAjIENoZWNrIGlmIHRoZSBuZXcgbGF5ZXIgcHJvdmlkZXMgcmVjaXBlcyB3aG9zZSBwcmlvcml0aWVzIGhhdmUgYmVlbgpAQCAtOTQwLDggKzkzNiwxMCBAQAogICAgICAgICAgICAgICAgICAgICAgICAgJ31cbicpCiAgICAgICAgICAgICBpZiByZC5nZXRWYXJGbGFnKCdkb19tZW51Y29uZmlnJywndGFzaycpOgogICAgICAgICAgICAgICAgIGYud3JpdGUoJ1xuZG9fY29uZmlndXJlX2FwcGVuZCgpIHtcbicKLSAgICAgICAgICAgICAgICAnICAgIGNwICR7Qn0vLmNvbmZpZyAke1N9Ly5jb25maWcuYmFzZWxpbmVcbicKLSAgICAgICAgICAgICAgICAnICAgIGxuIC1zZlQgJHtCfS8uY29uZmlnICR7U30vLmNvbmZpZy5uZXdcbicKKyAgICAgICAgICAgICAgICAnICAgIGlmIFsgISAke0RFVlRPT0xfRElTQUJMRV9NRU5VQ09ORklHfSBdOyB0aGVuXG4nCisgICAgICAgICAgICAgICAgJyAgICAgICAgY3AgJHtCfS8uY29uZmlnICR7U30vLmNvbmZpZy5iYXNlbGluZVxuJworICAgICAgICAgICAgICAgICcgICAgICAgIGxuIC1zZlQgJHtCfS8uY29uZmlnICR7U30vLmNvbmZpZy5uZXdcbicKKyAgICAgICAgICAgICAgICAnICAgIGZpXG4nCiAgICAgICAgICAgICAgICAgJ31cbicpCiAgICAgICAgICAgICBpZiBpbml0aWFsX3JldjoKICAgICAgICAgICAgICAgICBmLndyaXRlKCdcbiMgaW5pdGlhbF9yZXY6ICVzXG4nICUgaW5pdGlhbF9yZXYpCkBAIC0yMTk3LDcgKzIxOTUsNyBAQAogICAgIGdyb3VwLmFkZF9hcmd1bWVudCgnLS1zYW1lLWRpcicsICctcycsIGhlbHA9J0J1aWxkIGluIHNhbWUgZGlyZWN0b3J5IGFzIHNvdXJjZScsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctLW5vLXNhbWUtZGlyJywgaGVscD0nRm9yY2UgYnVpbGQgaW4gYSBzZXBhcmF0ZSBidWlsZCBkaXJlY3RvcnknLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgIHBhcnNlcl9hZGQuYWRkX2FyZ3VtZW50KCctLWZldGNoJywgJy1mJywgaGVscD0nRmV0Y2ggdGhlIHNwZWNpZmllZCBVUkkgYW5kIGV4dHJhY3QgaXQgdG8gY3JlYXRlIHRoZSBzb3VyY2UgdHJlZSAoZGVwcmVjYXRlZCAtIHBhc3MgYXMgcG9zaXRpb25hbCBhcmd1bWVudCBpbnN0ZWFkKScsIG1ldGF2YXI9J1VSSScpCi0gICAgcGFyc2VyX2FkZC5hZGRfYXJndW1lbnQoJy0tZmV0Y2gtZGV2JywgaGVscD0nRm9yIG5wbSwgYWxzbyBmZXRjaCBkZXZEZXBlbmRlbmNpZXMnLCBhY3Rpb249InN0b3JlX3RydWUiKQorICAgIHBhcnNlcl9hZGQuYWRkX2FyZ3VtZW50KCctLW5wbS1kZXYnLCBoZWxwPSdGb3IgbnBtLCBhbHNvIGZldGNoIGRldkRlcGVuZGVuY2llcycsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIpCiAgICAgcGFyc2VyX2FkZC5hZGRfYXJndW1lbnQoJy0tdmVyc2lvbicsICctVicsIGhlbHA9J1ZlcnNpb24gdG8gdXNlIHdpdGhpbiByZWNpcGUgKFBWKScpCiAgICAgcGFyc2VyX2FkZC5hZGRfYXJndW1lbnQoJy0tbm8tZ2l0JywgJy1nJywgaGVscD0nSWYgZmV0Y2hpbmcgc291cmNlLCBkbyBub3Qgc2V0IHVwIHNvdXJjZSB0cmVlIGFzIGEgZ2l0IHJlcG9zaXRvcnknLCBhY3Rpb249InN0b3JlX3RydWUiKQogICAgIGdyb3VwID0gcGFyc2VyX2FkZC5hZGRfbXV0dWFsbHlfZXhjbHVzaXZlX2dyb3VwKCkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGUucHkgYi9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlLnB5CmluZGV4IDRjNGJiYWQuLjZjYmY0ZGUgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGUucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZS5weQpAQCAtNDc3LDggKzQ3Nyw2IEBACiAgICAgICAgICAgICBzdG9yZVRhZ05hbWUgPSBwYXJhbXNbJ3RhZyddCiAgICAgICAgICAgICBwYXJhbXNbJ25vYnJhbmNoJ10gPSAnMScKICAgICAgICAgICAgIGRlbCBwYXJhbXNbJ3RhZyddCi0gICAgICAgIGlmIHNjaGVtZSA9PSAnbnBtJzoKLSAgICAgICAgICAgIHBhcmFtc1snbm92ZXJpZnknXSA9ICcxJwogICAgICAgICBmZXRjaHVyaSA9IGJiLmZldGNoMi5lbmNvZGV1cmwoKHNjaGVtZSwgbmV0d29yaywgcGF0aCwgdXNlciwgcGFzc3dkLCBwYXJhbXMpKQogCiAgICAgICAgIHRtcHBhcmVudCA9IHRpbmZvaWwuY29uZmlnX2RhdGEuZ2V0VmFyKCdCQVNFX1dPUktESVInKQpAQCAtNzE0LDEwICs3MTIsOCBAQAogICAgICAgICBsaW5lc19hZnRlci5hcHBlbmQoJ0lOU0FORV9TS0lQXyR7UE59ICs9ICJhbHJlYWR5LXN0cmlwcGVkIicpCiAgICAgICAgIGxpbmVzX2FmdGVyLmFwcGVuZCgnJykKIAotICAgIGlmIGFyZ3MuZmV0Y2hfZGV2OgotICAgICAgICBleHRyYXZhbHVlc1snZmV0Y2hkZXYnXSA9IFRydWUKLSAgICBlbHNlOgotICAgICAgICBleHRyYXZhbHVlc1snZmV0Y2hkZXYnXSA9IE5vbmUKKyAgICBpZiBhcmdzLm5wbV9kZXY6CisgICAgICAgIGV4dHJhdmFsdWVzWydOUE1fSU5TVEFMTF9ERVYnXSA9IDEKIAogICAgICMgRmluZCBhbGwgcGx1Z2lucyB0aGF0IHdhbnQgdG8gcmVnaXN0ZXIgaGFuZGxlcnMKICAgICBsb2dnZXIuZGVidWcoJ0xvYWRpbmcgcmVjaXBlIGhhbmRsZXJzJykKQEAgLTEzMTMsNyArMTMwOSw3IEBACiAgICAgZ3JvdXAuYWRkX2FyZ3VtZW50KCctUycsICctLXNyY3JldicsIGhlbHA9J1NvdXJjZSByZXZpc2lvbiB0byBmZXRjaCBpZiBmZXRjaGluZyBmcm9tIGFuIFNDTSBzdWNoIGFzIGdpdCAoZGVmYXVsdCBsYXRlc3QpJykKICAgICBwYXJzZXJfY3JlYXRlLmFkZF9hcmd1bWVudCgnLUInLCAnLS1zcmNicmFuY2gnLCBoZWxwPSdCcmFuY2ggaW4gc291cmNlIHJlcG9zaXRvcnkgaWYgZmV0Y2hpbmcgZnJvbSBhbiBTQ00gc3VjaCBhcyBnaXQgKGRlZmF1bHQgbWFzdGVyKScpCiAgICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy0ta2VlcC10ZW1wJywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nS2VlcCB0ZW1wb3JhcnkgZGlyZWN0b3J5IChmb3IgZGVidWdnaW5nKScpCi0gICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy0tZmV0Y2gtZGV2JywgYWN0aW9uPSJzdG9yZV90cnVlIiwgaGVscD0nRm9yIG5wbSwgYWxzbyBmZXRjaCBkZXZEZXBlbmRlbmNpZXMnKQorICAgIHBhcnNlcl9jcmVhdGUuYWRkX2FyZ3VtZW50KCctLW5wbS1kZXYnLCBhY3Rpb249InN0b3JlX3RydWUiLCBoZWxwPSdGb3IgbnBtLCBhbHNvIGZldGNoIGRldkRlcGVuZGVuY2llcycpCiAgICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy0tZGV2dG9vbCcsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9YXJncGFyc2UuU1VQUFJFU1MpCiAgICAgcGFyc2VyX2NyZWF0ZS5hZGRfYXJndW1lbnQoJy0tbWlycm9ycycsIGFjdGlvbj0ic3RvcmVfdHJ1ZSIsIGhlbHA9J0VuYWJsZSBQUkVNSVJST1JTIGFuZCBNSVJST1JTIGZvciBzb3VyY2UgdHJlZSBmZXRjaGluZyAoZGlzYWJsZWQgYnkgZGVmYXVsdCkuJykKICAgICBwYXJzZXJfY3JlYXRlLnNldF9kZWZhdWx0cyhmdW5jPWNyZWF0ZV9yZWNpcGUpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX2J1aWxkc3lzLnB5IGIvcG9reS9zY3JpcHRzL2xpYi9yZWNpcGV0b29sL2NyZWF0ZV9idWlsZHN5cy5weQppbmRleCAzY2IwMjc2Li4zNWE5N2M5IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX2J1aWxkc3lzLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfYnVpbGRzeXMucHkKQEAgLTIyNiw5ICsyMjYsOSBAQAogICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBwa2cgPT0gJ1BrZ0NvbmZpZyc6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdHMuYXBwZW5kKCdwa2djb25maWcnKQogICAgICAgICAgICAgICAgICAgICAgICAgZWxpZiBwa2cgPT0gJ1B5dGhvbkludGVycCc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdHMuYXBwZW5kKCdweXRob25uYXRpdmUnKQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluaGVyaXRzLmFwcGVuZCgncHl0aG9uM25hdGl2ZScpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbGlmIHBrZyA9PSAnUHl0aG9uTGlicyc6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5oZXJpdHMuYXBwZW5kKCdweXRob24tZGlyJykKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0cy5hcHBlbmQoJ3B5dGhvbjMtZGlyJykKICAgICAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBUcnkgdG8gbWFwIHZpYSBsb29raW5nIGF0IGluc3RhbGxlZCBDTWFrZSBwYWNrYWdlcyBpbiBwa2dkYXRhCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwID0gZmluZF9jbWFrZV9wYWNrYWdlKHBrZykKQEAgLTQxNyw3ICs0MTcsNyBAQAogICAgICAgICAgICAgICAgIH0KICAgICAgICAgcHJvZ2NsYXNzbWFwID0geydnY29uZnRvb2wtMic6ICdnY29uZicsCiAgICAgICAgICAgICAgICAgJ3BrZy1jb25maWcnOiAncGtnY29uZmlnJywKLSAgICAgICAgICAgICAgICAncHl0aG9uJzogJ3B5dGhvbm5hdGl2ZScsCisgICAgICAgICAgICAgICAgJ3B5dGhvbic6ICdweXRob24zbmF0aXZlJywKICAgICAgICAgICAgICAgICAncHl0aG9uMyc6ICdweXRob24zbmF0aXZlJywKICAgICAgICAgICAgICAgICAncGVybCc6ICdwZXJsbmF0aXZlJywKICAgICAgICAgICAgICAgICAnbWFrZWluZm8nOiAndGV4aW5mbycsCkBAIC01NjYsMTYgKzU2Niw3IEBACiAgICAgICAgICAgICBlbGlmIGtleXdvcmQgPT0gJ0FYX1BST0dfWFNMVFBST0MnOgogICAgICAgICAgICAgICAgIGRlcHMuYXBwZW5kKCdsaWJ4c2x0LW5hdGl2ZScpCiAgICAgICAgICAgICBlbGlmIGtleXdvcmQgaW4gWydBQ19QWVRIT05fREVWRUwnLCAnQVhfUFlUSE9OX0RFVkVMJywgJ0FNX1BBVEhfUFlUSE9OJ106Ci0gICAgICAgICAgICAgICAgcHl0aG9uY2xhc3MgPSAncHl0aG9ubmF0aXZlJwotICAgICAgICAgICAgICAgIHJlcyA9IHZlcnNpb25fcmUuc2VhcmNoKHZhbHVlKQotICAgICAgICAgICAgICAgIGlmIHJlczoKLSAgICAgICAgICAgICAgICAgICAgaWYgcmVzLmdyb3VwKDEpLnN0YXJ0c3dpdGgoJzMnKToKLSAgICAgICAgICAgICAgICAgICAgICAgIHB5dGhvbmNsYXNzID0gJ3B5dGhvbjNuYXRpdmUnCi0gICAgICAgICAgICAgICAgIyBBdm9pZCByZXBsYWNpbmcgcHl0aG9uM25hdGl2ZSB3aXRoIHB5dGhvbm5hdGl2ZQotICAgICAgICAgICAgICAgIGlmIG5vdCBweXRob25jbGFzcyBpbiBpbmhlcml0cyBhbmQgbm90ICdweXRob24zbmF0aXZlJyBpbiBpbmhlcml0czoKLSAgICAgICAgICAgICAgICAgICAgaWYgJ3B5dGhvbm5hdGl2ZScgaW4gaW5oZXJpdHM6Ci0gICAgICAgICAgICAgICAgICAgICAgICBpbmhlcml0cy5yZW1vdmUoJ3B5dGhvbm5hdGl2ZScpCi0gICAgICAgICAgICAgICAgICAgIGluaGVyaXRzLmFwcGVuZChweXRob25jbGFzcykKKyAgICAgICAgICAgICAgICBweXRob25jbGFzcyA9ICdweXRob24zbmF0aXZlJwogICAgICAgICAgICAgZWxpZiBrZXl3b3JkID09ICdBWF9XSVRIX0NVUlNFUyc6CiAgICAgICAgICAgICAgICAgZGVwcy5hcHBlbmQoJ25jdXJzZXMnKQogICAgICAgICAgICAgZWxpZiBrZXl3b3JkID09ICdBWF9QQVRIX0JEQic6CmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3JlY2lwZXRvb2wvY3JlYXRlX25wbS5weSBiL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfbnBtLnB5CmluZGV4IDM5NDI5ZWIuLjU3OWI3YWUgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfbnBtLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvcmVjaXBldG9vbC9jcmVhdGVfbnBtLnB5CkBAIC0xLDMyMSArMSwyNTUgQEAKLSMgUmVjaXBlIGNyZWF0aW9uIHRvb2wgLSBub2RlLmpzIE5QTSBtb2R1bGUgc3VwcG9ydCBwbHVnaW4KLSMKICMgQ29weXJpZ2h0IChDKSAyMDE2IEludGVsIENvcnBvcmF0aW9uCisjIENvcHlyaWdodCAoQykgMjAyMCBTYXZvaXItRmFpcmUgTGludXgKICMKICMgU1BEWC1MaWNlbnNlLUlkZW50aWZpZXI6IEdQTC0yLjAtb25seQogIworIiIiUmVjaXBlIGNyZWF0aW9uIHRvb2wgLSBucG0gbW9kdWxlIHN1cHBvcnQgcGx1Z2luIiIiCiAKLWltcG9ydCBvcwotaW1wb3J0IHN5cwotaW1wb3J0IGxvZ2dpbmcKLWltcG9ydCBzdWJwcm9jZXNzCi1pbXBvcnQgdGVtcGZpbGUKLWltcG9ydCBzaHV0aWwKIGltcG9ydCBqc29uCi1mcm9tIHJlY2lwZXRvb2wuY3JlYXRlIGltcG9ydCBSZWNpcGVIYW5kbGVyLCBzcGxpdF9wa2dfbGljZW5zZXMsIGhhbmRsZV9saWNlbnNlX3ZhcnMKK2ltcG9ydCBvcworaW1wb3J0IHJlCitpbXBvcnQgc3lzCitpbXBvcnQgdGVtcGZpbGUKK2ltcG9ydCBiYgorZnJvbSBiYi5mZXRjaDIubnBtIGltcG9ydCBOcG1FbnZpcm9ubWVudAorZnJvbSBiYi5mZXRjaDIubnBtc3cgaW1wb3J0IGZvcmVhY2hfZGVwZW5kZW5jaWVzCitmcm9tIHJlY2lwZXRvb2wuY3JlYXRlIGltcG9ydCBSZWNpcGVIYW5kbGVyCitmcm9tIHJlY2lwZXRvb2wuY3JlYXRlIGltcG9ydCBndWVzc19saWNlbnNlCitmcm9tIHJlY2lwZXRvb2wuY3JlYXRlIGltcG9ydCBzcGxpdF9wa2dfbGljZW5zZXMKIAotbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ3JlY2lwZXRvb2wnKQotCi0KLXRpbmZvaWwgPSBOb25lCitUSU5GT0lMID0gTm9uZQogCiBkZWYgdGluZm9pbF9pbml0KGluc3RhbmNlKToKLSAgICBnbG9iYWwgdGluZm9pbAotICAgIHRpbmZvaWwgPSBpbnN0YW5jZQotCisgICAgIiIiSW5pdGlhbGl6ZSB0aW5mb2lsIiIiCisgICAgZ2xvYmFsIFRJTkZPSUwKKyAgICBUSU5GT0lMID0gaW5zdGFuY2UKIAogY2xhc3MgTnBtUmVjaXBlSGFuZGxlcihSZWNpcGVIYW5kbGVyKToKLSAgICBsb2NrZG93bnBhdGggPSBOb25lCisgICAgIiIiQ2xhc3MgdG8gaGFuZGxlIHRoZSBucG0gcmVjaXBlIGNyZWF0aW9uIiIiCiAKLSAgICBkZWYgX2Vuc3VyZV9ucG0oc2VsZiwgZml4ZWRfc2V0dXA9RmFsc2UpOgotICAgICAgICBpZiBub3QgdGluZm9pbC5yZWNpcGVzX3BhcnNlZDoKLSAgICAgICAgICAgIHRpbmZvaWwucGFyc2VfcmVjaXBlcygpCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfbnBtX25hbWUobmFtZSk6CisgICAgICAgICIiIkdlbmVyYXRlIGEgWW9jdG8gZnJpZW5kbHkgbnBtIG5hbWUiIiIKKyAgICAgICAgbmFtZSA9IHJlLnN1YigiLyIsICItIiwgbmFtZSkKKyAgICAgICAgbmFtZSA9IG5hbWUubG93ZXIoKQorICAgICAgICBuYW1lID0gcmUuc3ViKHIiW15cLWEtejAtOV0iLCAiIiwgbmFtZSkKKyAgICAgICAgbmFtZSA9IG5hbWUuc3RyaXAoIi0iKQorICAgICAgICByZXR1cm4gbmFtZQorCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfZ2V0X3JlZ2lzdHJ5KGxpbmVzKToKKyAgICAgICAgIiIiR2V0IHRoZSByZWdpc3RyeSB2YWx1ZSBmcm9tIHRoZSAnbnBtOi8vcmVnaXN0cnknIHVybCIiIgorICAgICAgICByZWdpc3RyeSA9IE5vbmUKKworICAgICAgICBkZWYgX2hhbmRsZV9yZWdpc3RyeSh2YXJuYW1lLCBvcmlndmFsdWUsIG9wLCBuZXdsaW5lcyk6CisgICAgICAgICAgICBub25sb2NhbCByZWdpc3RyeQorICAgICAgICAgICAgaWYgb3JpZ3ZhbHVlLnN0YXJ0c3dpdGgoIm5wbTovLyIpOgorICAgICAgICAgICAgICAgIHJlZ2lzdHJ5ID0gcmUuc3ViKHIiXm5wbTovLyIsICJodHRwOi8vIiwgb3JpZ3ZhbHVlLnNwbGl0KCI7IilbMF0pCisgICAgICAgICAgICByZXR1cm4gb3JpZ3ZhbHVlLCBOb25lLCAwLCBUcnVlCisKKyAgICAgICAgYmIudXRpbHMuZWRpdF9tZXRhZGF0YShsaW5lcywgWyJTUkNfVVJJIl0sIF9oYW5kbGVfcmVnaXN0cnkpCisKKyAgICAgICAgcmV0dXJuIHJlZ2lzdHJ5CisKKyAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9lbnN1cmVfbnBtKCk6CisgICAgICAgICIiIkNoZWNrIGlmIHRoZSAnbnBtJyBjb21tYW5kIGlzIGF2YWlsYWJsZSBpbiB0aGUgcmVjaXBlcyIiIgorICAgICAgICBpZiBub3QgVElORk9JTC5yZWNpcGVzX3BhcnNlZDoKKyAgICAgICAgICAgIFRJTkZPSUwucGFyc2VfcmVjaXBlcygpCisKICAgICAgICAgdHJ5OgotICAgICAgICAgICAgcmQgPSB0aW5mb2lsLnBhcnNlX3JlY2lwZSgnbm9kZWpzLW5hdGl2ZScpCisgICAgICAgICAgICBkID0gVElORk9JTC5wYXJzZV9yZWNpcGUoIm5vZGVqcy1uYXRpdmUiKQogICAgICAgICBleGNlcHQgYmIucHJvdmlkZXJzLk5vUHJvdmlkZXI6Ci0gICAgICAgICAgICBpZiBmaXhlZF9zZXR1cDoKLSAgICAgICAgICAgICAgICBtc2cgPSAnbm9kZWpzLW5hdGl2ZSBpcyByZXF1aXJlZCBmb3IgbnBtIGJ1dCBpcyBub3QgYXZhaWxhYmxlIHdpdGhpbiB0aGlzIFNESycKLSAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAgICAgICAgbXNnID0gJ25vZGVqcy1uYXRpdmUgaXMgcmVxdWlyZWQgZm9yIG5wbSBidXQgaXMgbm90IGF2YWlsYWJsZSAtIHlvdSB3aWxsIGxpa2VseSBuZWVkIHRvIGFkZCBhIGxheWVyIHRoYXQgcHJvdmlkZXMgbm9kZWpzJwotICAgICAgICAgICAgbG9nZ2VyLmVycm9yKG1zZykKLSAgICAgICAgICAgIHJldHVybiBOb25lCi0gICAgICAgIGJpbmRpciA9IHJkLmdldFZhcignU1RBR0lOR19CSU5ESVJfTkFUSVZFJykKLSAgICAgICAgbnBtcGF0aCA9IG9zLnBhdGguam9pbihiaW5kaXIsICducG0nKQorICAgICAgICAgICAgYmIuZXJyb3IoIk5vdGhpbmcgcHJvdmlkZXMgJ25vZGVqcy1uYXRpdmUnIHdoaWNoIGlzIHJlcXVpcmVkIGZvciB0aGUgYnVpbGQiKQorICAgICAgICAgICAgYmIubm90ZSgiWW91IHdpbGwgbGlrZWx5IG5lZWQgdG8gYWRkIGEgbGF5ZXIgdGhhdCBwcm92aWRlcyBub2RlanMiKQorICAgICAgICAgICAgc3lzLmV4aXQoMTQpCisKKyAgICAgICAgYmluZGlyID0gZC5nZXRWYXIoIlNUQUdJTkdfQklORElSX05BVElWRSIpCisgICAgICAgIG5wbXBhdGggPSBvcy5wYXRoLmpvaW4oYmluZGlyLCAibnBtIikKKwogICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMobnBtcGF0aCk6Ci0gICAgICAgICAgICB0aW5mb2lsLmJ1aWxkX3RhcmdldHMoJ25vZGVqcy1uYXRpdmUnLCAnYWRkdG9fcmVjaXBlX3N5c3Jvb3QnKQorICAgICAgICAgICAgVElORk9JTC5idWlsZF90YXJnZXRzKCJub2RlanMtbmF0aXZlIiwgImFkZHRvX3JlY2lwZV9zeXNyb290IikKKwogICAgICAgICAgICAgaWYgbm90IG9zLnBhdGguZXhpc3RzKG5wbXBhdGgpOgotICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcignbnBtIHJlcXVpcmVkIHRvIHByb2Nlc3Mgc3BlY2lmaWVkIHNvdXJjZSwgYnV0IG5vZGVqcy1uYXRpdmUgZGlkIG5vdCBzZWVtIHRvIHBvcHVsYXRlIGl0JykKLSAgICAgICAgICAgICAgICByZXR1cm4gTm9uZQorICAgICAgICAgICAgICAgIGJiLmVycm9yKCJGYWlsZWQgdG8gYWRkICducG0nIHRvIHN5c3Jvb3QiKQorICAgICAgICAgICAgICAgIHN5cy5leGl0KDE0KQorCiAgICAgICAgIHJldHVybiBiaW5kaXIKIAotICAgIGRlZiBfaGFuZGxlX2xpY2Vuc2Uoc2VsZiwgZGF0YSk6Ci0gICAgICAgICcnJwotICAgICAgICBIYW5kbGUgdGhlIGxpY2Vuc2UgdmFsdWUgZnJvbSBhbiBucG0gcGFja2FnZS5qc29uIGZpbGUKLSAgICAgICAgJycnCi0gICAgICAgIGxpY2Vuc2UgPSBOb25lCi0gICAgICAgIGlmICdsaWNlbnNlJyBpbiBkYXRhOgotICAgICAgICAgICAgbGljZW5zZSA9IGRhdGFbJ2xpY2Vuc2UnXQotICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShsaWNlbnNlLCBkaWN0KToKLSAgICAgICAgICAgICAgICBsaWNlbnNlID0gbGljZW5zZS5nZXQoJ3R5cGUnLCBOb25lKQotICAgICAgICAgICAgaWYgbGljZW5zZToKLSAgICAgICAgICAgICAgICBpZiAnT1InIGluIGxpY2Vuc2U6Ci0gICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSBsaWNlbnNlLnJlcGxhY2UoJ09SJywgJ3wnKQotICAgICAgICAgICAgICAgICAgICBsaWNlbnNlID0gbGljZW5zZS5yZXBsYWNlKCdBTkQnLCAnJicpCi0gICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSBsaWNlbnNlLnJlcGxhY2UoJyAnLCAnXycpCi0gICAgICAgICAgICAgICAgICAgIGlmIG5vdCBsaWNlbnNlWzBdID09ICcoJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSAnKCcgKyBsaWNlbnNlICsgJyknCi0gICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2UucmVwbGFjZSgnQU5EJywgJyYnKQotICAgICAgICAgICAgICAgICAgICBpZiBsaWNlbnNlWzBdID09ICcoJzoKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSBsaWNlbnNlWzE6XQotICAgICAgICAgICAgICAgICAgICBpZiBsaWNlbnNlWy0xXSA9PSAnKSc6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaWNlbnNlID0gbGljZW5zZVs6LTFdCi0gICAgICAgICAgICAgICAgbGljZW5zZSA9IGxpY2Vuc2UucmVwbGFjZSgnTUlUL1gxMScsICdNSVQnKQotICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSBsaWNlbnNlLnJlcGxhY2UoJ1B1YmxpYyBEb21haW4nLCAnUEQnKQotICAgICAgICAgICAgICAgIGxpY2Vuc2UgPSBsaWNlbnNlLnJlcGxhY2UoJ1NFRSBMSUNFTlNFIElOIEVVTEEnLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ1NFRS1MSUNFTlNFLUlOLUVVTEEnKQotICAgICAgICByZXR1cm4gbGljZW5zZQorICAgIEBzdGF0aWNtZXRob2QKKyAgICBkZWYgX25wbV9nbG9iYWxfY29uZmlncyhkZXYpOgorICAgICAgICAiIiJHZXQgdGhlIG5wbSBnbG9iYWwgY29uZmlndXJhdGlvbiIiIgorICAgICAgICBjb25maWdzID0gW10KIAotICAgIGRlZiBfc2hyaW5rd3JhcChzZWxmLCBzcmN0cmVlLCBsb2NhbGZpbGVzZGlyLCBleHRyYXZhbHVlcywgbGluZXNfYmVmb3JlLCBkKToKLSAgICAgICAgdHJ5OgotICAgICAgICAgICAgcnVuZW52ID0gZGljdChvcy5lbnZpcm9uLCBQQVRIPWQuZ2V0VmFyKCdQQVRIJykpCi0gICAgICAgICAgICBiYi5wcm9jZXNzLnJ1bignbnBtIHNocmlua3dyYXAnLCBjd2Q9c3JjdHJlZSwgc3RkZXJyPXN1YnByb2Nlc3MuU1RET1VULCBlbnY9cnVuZW52LCBzaGVsbD1UcnVlKQotICAgICAgICBleGNlcHQgYmIucHJvY2Vzcy5FeGVjdXRpb25FcnJvciBhcyBlOgotICAgICAgICAgICAgbG9nZ2VyLndhcm5pbmcoJ25wbSBzaHJpbmt3cmFwIGZhaWxlZDpcbiVzJyAlIGUuc3Rkb3V0KQotICAgICAgICAgICAgcmV0dXJuCisgICAgICAgIGlmIGRldjoKKyAgICAgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgiYWxzbyIsICJkZXZlbG9wbWVudCIpKQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgY29uZmlncy5hcHBlbmQoKCJvbmx5IiwgInByb2R1Y3Rpb24iKSkKIAotICAgICAgICB0bXBmaWxlID0gb3MucGF0aC5qb2luKGxvY2FsZmlsZXNkaXIsICducG0tc2hyaW5rd3JhcC5qc29uJykKLSAgICAgICAgc2h1dGlsLm1vdmUob3MucGF0aC5qb2luKHNyY3RyZWUsICducG0tc2hyaW5rd3JhcC5qc29uJyksIHRtcGZpbGUpCi0gICAgICAgIGV4dHJhdmFsdWVzLnNldGRlZmF1bHQoJ2V4dHJhZmlsZXMnLCB7fSkKLSAgICAgICAgZXh0cmF2YWx1ZXNbJ2V4dHJhZmlsZXMnXVsnbnBtLXNocmlua3dyYXAuanNvbiddID0gdG1wZmlsZQotICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCdOUE1fU0hSSU5LV1JBUCA6PSAiJHtUSElTRElSfS8ke1BOfS9ucG0tc2hyaW5rd3JhcC5qc29uIicpCisgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgic2F2ZSIsICJmYWxzZSIpKQorICAgICAgICBjb25maWdzLmFwcGVuZCgoInBhY2thZ2UtbG9jayIsICJmYWxzZSIpKQorICAgICAgICBjb25maWdzLmFwcGVuZCgoInNocmlua3dyYXAiLCAiZmFsc2UiKSkKKyAgICAgICAgcmV0dXJuIGNvbmZpZ3MKIAotICAgIGRlZiBfbG9ja2Rvd24oc2VsZiwgc3JjdHJlZSwgbG9jYWxmaWxlc2RpciwgZXh0cmF2YWx1ZXMsIGxpbmVzX2JlZm9yZSwgZCk6Ci0gICAgICAgIHJ1bmVudiA9IGRpY3Qob3MuZW52aXJvbiwgUEFUSD1kLmdldFZhcignUEFUSCcpKQotICAgICAgICBpZiBub3QgTnBtUmVjaXBlSGFuZGxlci5sb2NrZG93bnBhdGg6Ci0gICAgICAgICAgICBOcG1SZWNpcGVIYW5kbGVyLmxvY2tkb3ducGF0aCA9IHRlbXBmaWxlLm1rZHRlbXAoJ3JlY2lwZXRvb2wtbnBtLWxvY2tkb3duJykKLSAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCducG0gaW5zdGFsbCBsb2NrZG93biAtLXByZWZpeCAlcycgJSBOcG1SZWNpcGVIYW5kbGVyLmxvY2tkb3ducGF0aCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgIGN3ZD1zcmN0cmVlLCBzdGRlcnI9c3VicHJvY2Vzcy5TVERPVVQsIGVudj1ydW5lbnYsIHNoZWxsPVRydWUpCi0gICAgICAgIHJlbG9ja2JpbiA9IG9zLnBhdGguam9pbihOcG1SZWNpcGVIYW5kbGVyLmxvY2tkb3ducGF0aCwgJ25vZGVfbW9kdWxlcycsICdsb2NrZG93bicsICdyZWxvY2suanMnKQotICAgICAgICBpZiBub3Qgb3MucGF0aC5leGlzdHMocmVsb2NrYmluKToKLSAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdDb3VsZCBub3QgZmluZCByZWxvY2suanMgd2l0aGluIGxvY2tkb3duIGRpcmVjdG9yeTsgc2tpcHBpbmcgbG9ja2Rvd24nKQotICAgICAgICAgICAgcmV0dXJuCi0gICAgICAgIHRyeToKLSAgICAgICAgICAgIGJiLnByb2Nlc3MucnVuKCdub2RlICVzJyAlIHJlbG9ja2JpbiwgY3dkPXNyY3RyZWUsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgZW52PXJ1bmVudiwgc2hlbGw9VHJ1ZSkKLSAgICAgICAgZXhjZXB0IGJiLnByb2Nlc3MuRXhlY3V0aW9uRXJyb3IgYXMgZToKLSAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCdsb2NrZG93bi1yZWxvY2sgZmFpbGVkOlxuJXMnICUgZS5zdGRvdXQpCi0gICAgICAgICAgICByZXR1cm4KKyAgICBkZWYgX3J1bl9ucG1faW5zdGFsbChzZWxmLCBkLCBzcmN0cmVlLCByZWdpc3RyeSwgZGV2KToKKyAgICAgICAgIiIiUnVuIHRoZSAnbnBtIGluc3RhbGwnIGNvbW1hbmQgd2l0aG91dCBidWlsZGluZyB0aGUgYWRkb25zIiIiCisgICAgICAgIGNvbmZpZ3MgPSBzZWxmLl9ucG1fZ2xvYmFsX2NvbmZpZ3MoZGV2KQorICAgICAgICBjb25maWdzLmFwcGVuZCgoImlnbm9yZS1zY3JpcHRzIiwgInRydWUiKSkKIAotICAgICAgICB0bXBmaWxlID0gb3MucGF0aC5qb2luKGxvY2FsZmlsZXNkaXIsICdsb2NrZG93bi5qc29uJykKLSAgICAgICAgc2h1dGlsLm1vdmUob3MucGF0aC5qb2luKHNyY3RyZWUsICdsb2NrZG93bi5qc29uJyksIHRtcGZpbGUpCi0gICAgICAgIGV4dHJhdmFsdWVzLnNldGRlZmF1bHQoJ2V4dHJhZmlsZXMnLCB7fSkKLSAgICAgICAgZXh0cmF2YWx1ZXNbJ2V4dHJhZmlsZXMnXVsnbG9ja2Rvd24uanNvbiddID0gdG1wZmlsZQotICAgICAgICBsaW5lc19iZWZvcmUuYXBwZW5kKCdOUE1fTE9DS0RPV04gOj0gIiR7VEhJU0RJUn0vJHtQTn0vbG9ja2Rvd24uanNvbiInKQorICAgICAgICBpZiByZWdpc3RyeToKKyAgICAgICAgICAgIGNvbmZpZ3MuYXBwZW5kKCgicmVnaXN0cnkiLCByZWdpc3RyeSkpCiAKLSAgICBkZWYgX2hhbmRsZV9kZXBlbmRlbmNpZXMoc2VsZiwgZCwgZGVwcywgb3B0ZGVwcywgZGV2ZGVwcywgbGluZXNfYmVmb3JlLCBzcmN0cmVlKToKLSAgICAgICAgaW1wb3J0IHNjcmlwdHV0aWxzCi0gICAgICAgICMgSWYgdGhpcyBpc24ndCBhIHNpbmdsZSBtb2R1bGUgd2UgbmVlZCB0byBnZXQgdGhlIGRlcGVuZGVuY2llcwotICAgICAgICAjIGFuZCBhZGQgdGhlbSB0byBTUkNfVVJJCi0gICAgICAgIGRlZiB2YXJmdW5jKHZhcm5hbWUsIG9yaWd2YWx1ZSwgb3AsIG5ld2xpbmVzKToKLSAgICAgICAgICAgIGlmIHZhcm5hbWUgPT0gJ1NSQ19VUkknOgotICAgICAgICAgICAgICAgIGlmIG5vdCBvcmlndmFsdWUuc3RhcnRzd2l0aCgnbnBtOi8vJyk6Ci0gICAgICAgICAgICAgICAgICAgIHNyY191cmkgPSBvcmlndmFsdWUuc3BsaXQoKQotICAgICAgICAgICAgICAgICAgICBkZXBsaXN0ID0ge30KLSAgICAgICAgICAgICAgICAgICAgZm9yIGRlcCwgZGVwdmVyIGluIG9wdGRlcHMuaXRlbXMoKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGRlcGRhdGEgPSBzZWxmLmdldF9ucG1fZGF0YShkZXAsIGRlcHZlciwgZCkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHNlbGYuY2hlY2tfbnBtX29wdGlvbmFsX2RlcGVuZGVuY3koZGVwZGF0YSk6Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZGVwbGlzdFtkZXBdID0gZGVwZGF0YQotICAgICAgICAgICAgICAgICAgICBmb3IgZGVwLCBkZXB2ZXIgaW4gZGV2ZGVwcy5pdGVtcygpOgotICAgICAgICAgICAgICAgICAgICAgICAgZGVwZGF0YSA9IHNlbGYuZ2V0X25wbV9kYXRhKGRlcCwgZGVwdmVyLCBkKQotICAgICAgICAgICAgICAgICAgICAgICAgaWYgc2VsZi5jaGVja19ucG1fb3B0aW9uYWxfZGVwZW5kZW5jeShkZXBkYXRhKToKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXBsaXN0W2RlcF0gPSBkZXBkYXRhCi0gICAgICAgICAgICAgICAgICAgIGZvciBkZXAsIGRlcHZlciBpbiBkZXBzLml0ZW1zKCk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBkZXBkYXRhID0gc2VsZi5nZXRfbnBtX2RhdGEoZGVwLCBkZXB2ZXIsIGQpCi0gICAgICAgICAgICAgICAgICAgICAgICBkZXBsaXN0W2RlcF0gPSBkZXBkYXRhCisgICAgICAgIGJiLnV0aWxzLnJlbW92ZShvcy5wYXRoLmpvaW4oc3JjdHJlZSwgIm5vZGVfbW9kdWxlcyIpLCByZWN1cnNlPVRydWUpCiAKLSAgICAgICAgICAgICAgICAgICAgZXh0cmFfdXJscyA9IFtdCi0gICAgICAgICAgICAgICAgICAgIGZvciBkZXAsIGRlcGRhdGEgaW4gZGVwbGlzdC5pdGVtcygpOgotICAgICAgICAgICAgICAgICAgICAgICAgdmVyc2lvbiA9IGRlcGRhdGEuZ2V0KCd2ZXJzaW9uJywgTm9uZSkKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIHZlcnNpb246Ci0gICAgICAgICAgICAgICAgICAgICAgICAgICAgdXJsID0gJ25wbTovL3JlZ2lzdHJ5Lm5wbWpzLm9yZztuYW1lPSVzO3ZlcnNpb249JXM7c3ViZGlyPW5vZGVfbW9kdWxlcy8lcycgJSAoZGVwLCB2ZXJzaW9uLCBkZXApCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgZXh0cmFfdXJscy5hcHBlbmQodXJsKQotICAgICAgICAgICAgICAgICAgICBpZiBleHRyYV91cmxzOgotICAgICAgICAgICAgICAgICAgICAgICAgc2NyaXB0dXRpbHMuZmV0Y2hfdXJsKHRpbmZvaWwsICcgJy5qb2luKGV4dHJhX3VybHMpLCBOb25lLCBzcmN0cmVlLCBsb2dnZXIpCi0gICAgICAgICAgICAgICAgICAgICAgICBzcmNfdXJpLmV4dGVuZChleHRyYV91cmxzKQotICAgICAgICAgICAgICAgICAgICAgICAgcmV0dXJuIHNyY191cmksIE5vbmUsIC0xLCBUcnVlCi0gICAgICAgICAgICByZXR1cm4gb3JpZ3ZhbHVlLCBOb25lLCAwLCBUcnVlCi0gICAgICAgIHVwZGF0ZWQsIG5ld2xpbmVzID0gYmIudXRpbHMuZWRpdF9tZXRhZGF0YShsaW5lc19iZWZvcmUsIFsnU1JDX1VSSSddLCB2YXJmdW5jKQotICAgICAgICBpZiB1cGRhdGVkOgotICAgICAgICAgICAgZGVsIGxpbmVzX2JlZm9yZVs6XQotICAgICAgICAgICAgZm9yIGxpbmUgaW4gbmV3bGluZXM6Ci0gICAgICAgICAgICAgICAgIyBIYWNrIHRvIGF2b2lkIG5ld2xpbmVzIHRoYXQgZWRpdF9tZXRhZGF0YSBpbnNlcnRzCi0gICAgICAgICAgICAgICAgaWYgbGluZS5lbmRzd2l0aCgnXG4nKToKLSAgICAgICAgICAgICAgICAgICAgbGluZSA9IGxpbmVbOi0xXQotICAgICAgICAgICAgICAgIGxpbmVzX2JlZm9yZS5hcHBlbmQobGluZSkKLSAgICAgICAgcmV0dXJuIHVwZGF0ZWQKKyAgICAgICAgZW52ID0gTnBtRW52aXJvbm1lbnQoZCwgY29uZmlncz1jb25maWdzKQorICAgICAgICBlbnYucnVuKCJucG0gaW5zdGFsbCIsIHdvcmtkaXI9c3JjdHJlZSkKKworICAgIGRlZiBfZ2VuZXJhdGVfc2hyaW5rd3JhcChzZWxmLCBkLCBzcmN0cmVlLCBkZXYpOgorICAgICAgICAiIiJDaGVjayBhbmQgZ2VuZXJhdGUgdGhlICducG0tc2hyaW5rd3JhcC5qc29uJyBmaWxlIGlmIG5lZWRlZCIiIgorICAgICAgICBjb25maWdzID0gc2VsZi5fbnBtX2dsb2JhbF9jb25maWdzKGRldikKKworICAgICAgICBlbnYgPSBOcG1FbnZpcm9ubWVudChkLCBjb25maWdzPWNvbmZpZ3MpCisgICAgICAgIGVudi5ydW4oIm5wbSBzaHJpbmt3cmFwIiwgd29ya2Rpcj1zcmN0cmVlKQorCisgICAgICAgIHJldHVybiBvcy5wYXRoLmpvaW4oc3JjdHJlZSwgIm5wbS1zaHJpbmt3cmFwLmpzb24iKQorCisgICAgZGVmIF9oYW5kbGVfbGljZW5zZXMoc2VsZiwgc3JjdHJlZSwgc2hyaW5rd3JhcF9maWxlLCBkZXYpOgorICAgICAgICAiIiJSZXR1cm4gdGhlIGV4dHJhIGxpY2Vuc2UgZmlsZXMgYW5kIHRoZSBsaXN0IG9mIHBhY2thZ2VzIiIiCisgICAgICAgIGxpY2ZpbGVzID0gW10KKyAgICAgICAgcGFja2FnZXMgPSB7fQorCisgICAgICAgIGRlZiBfbGljZmlsZXNfYXBwZW5kKGxpY2ZpbGUpOgorICAgICAgICAgICAgIiIiQXBwZW5kICdsaWNmaWxlJyB0byB0aGUgbGljZW5zZSBmaWxlcyBsaXN0IiIiCisgICAgICAgICAgICBsaWNmaWxlcGF0aCA9IG9zLnBhdGguam9pbihzcmN0cmVlLCBsaWNmaWxlKQorICAgICAgICAgICAgbGljbWQ1ID0gYmIudXRpbHMubWQ1X2ZpbGUobGljZmlsZXBhdGgpCisgICAgICAgICAgICBsaWNmaWxlcy5hcHBlbmQoImZpbGU6Ly8lczttZDU9JXMiICUgKGxpY2ZpbGUsIGxpY21kNSkpCisKKyAgICAgICAgIyBIYW5kbGUgdGhlIHBhcmVudCBwYWNrYWdlCisgICAgICAgIF9saWNmaWxlc19hcHBlbmQoInBhY2thZ2UuanNvbiIpCisgICAgICAgIHBhY2thZ2VzWyIke1BOfSJdID0gIiIKKworICAgICAgICAjIEhhbmRsZSB0aGUgZGVwZW5kZW5jaWVzCisgICAgICAgIGRlZiBfaGFuZGxlX2RlcGVuZGVuY3kobmFtZSwgcGFyYW1zLCBkZXB0cmVlKToKKyAgICAgICAgICAgIHN1ZmZpeCA9ICItIi5qb2luKFtzZWxmLl9ucG1fbmFtZShkZXApIGZvciBkZXAgaW4gZGVwdHJlZV0pCisgICAgICAgICAgICBkZXN0ZGlycyA9IFtvcy5wYXRoLmpvaW4oIm5vZGVfbW9kdWxlcyIsIGRlcCkgZm9yIGRlcCBpbiBkZXB0cmVlXQorICAgICAgICAgICAgZGVzdGRpciA9IG9zLnBhdGguam9pbigqZGVzdGRpcnMpCisgICAgICAgICAgICBfbGljZmlsZXNfYXBwZW5kKG9zLnBhdGguam9pbihkZXN0ZGlyLCAicGFja2FnZS5qc29uIikpCisgICAgICAgICAgICBwYWNrYWdlc1siJHtQTn0tIiArIHN1ZmZpeF0gPSBkZXN0ZGlyCisKKyAgICAgICAgd2l0aCBvcGVuKHNocmlua3dyYXBfZmlsZSwgInIiKSBhcyBmOgorICAgICAgICAgICAgc2hyaW5rd3JhcCA9IGpzb24ubG9hZChmKQorCisgICAgICAgIGZvcmVhY2hfZGVwZW5kZW5jaWVzKHNocmlua3dyYXAsIF9oYW5kbGVfZGVwZW5kZW5jeSwgZGV2KQorCisgICAgICAgIHJldHVybiBsaWNmaWxlcywgcGFja2FnZXMKIAogICAgIGRlZiBwcm9jZXNzKHNlbGYsIHNyY3RyZWUsIGNsYXNzZXMsIGxpbmVzX2JlZm9yZSwgbGluZXNfYWZ0ZXIsIGhhbmRsZWQsIGV4dHJhdmFsdWVzKToKLSAgICAgICAgaW1wb3J0IGJiLnV0aWxzCi0gICAgICAgIGltcG9ydCBvZS5wYWNrYWdlCi0gICAgICAgIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IE9yZGVyZWREaWN0CisgICAgICAgICIiIkhhbmRsZSB0aGUgbnBtIHJlY2lwZSBjcmVhdGlvbiIiIgogCi0gICAgICAgIGlmICdidWlsZHN5c3RlbScgaW4gaGFuZGxlZDoKKyAgICAgICAgaWYgImJ1aWxkc3lzdGVtIiBpbiBoYW5kbGVkOgogICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICAgICAgZGVmIHJlYWRfcGFja2FnZV9qc29uKGZuKToKLSAgICAgICAgICAgIHdpdGggb3BlbihmbiwgJ3InLCBlcnJvcnM9J3N1cnJvZ2F0ZWVzY2FwZScpIGFzIGY6Ci0gICAgICAgICAgICAgICAgcmV0dXJuIGpzb24ubG9hZHMoZi5yZWFkKCkpCisgICAgICAgIGZpbGVzID0gUmVjaXBlSGFuZGxlci5jaGVja2ZpbGVzKHNyY3RyZWUsIFsicGFja2FnZS5qc29uIl0pCiAKLSAgICAgICAgZmlsZXMgPSBSZWNpcGVIYW5kbGVyLmNoZWNrZmlsZXMoc3JjdHJlZSwgWydwYWNrYWdlLmpzb24nXSkKLSAgICAgICAgaWYgZmlsZXM6Ci0gICAgICAgICAgICBkID0gYmIuZGF0YS5jcmVhdGVDb3B5KHRpbmZvaWwuY29uZmlnX2RhdGEpCi0gICAgICAgICAgICBucG1fYmluZGlyID0gc2VsZi5fZW5zdXJlX25wbSgpCi0gICAgICAgICAgICBpZiBub3QgbnBtX2JpbmRpcjoKLSAgICAgICAgICAgICAgICBzeXMuZXhpdCgxNCkKLSAgICAgICAgICAgIGQucHJlcGVuZFZhcignUEFUSCcsICclczonICUgbnBtX2JpbmRpcikKKyAgICAgICAgaWYgbm90IGZpbGVzOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICAgICAgICAgIGRhdGEgPSByZWFkX3BhY2thZ2VfanNvbihmaWxlc1swXSkKLSAgICAgICAgICAgIGlmICduYW1lJyBpbiBkYXRhIGFuZCAndmVyc2lvbicgaW4gZGF0YToKLSAgICAgICAgICAgICAgICBleHRyYXZhbHVlc1snUE4nXSA9IGRhdGFbJ25hbWUnXQotICAgICAgICAgICAgICAgIGV4dHJhdmFsdWVzWydQViddID0gZGF0YVsndmVyc2lvbiddCi0gICAgICAgICAgICAgICAgY2xhc3Nlcy5hcHBlbmQoJ25wbScpCi0gICAgICAgICAgICAgICAgaGFuZGxlZC5hcHBlbmQoJ2J1aWxkc3lzdGVtJykKLSAgICAgICAgICAgICAgICBpZiAnZGVzY3JpcHRpb24nIGluIGRhdGE6Ci0gICAgICAgICAgICAgICAgICAgIGV4dHJhdmFsdWVzWydTVU1NQVJZJ10gPSBkYXRhWydkZXNjcmlwdGlvbiddCi0gICAgICAgICAgICAgICAgaWYgJ2hvbWVwYWdlJyBpbiBkYXRhOgotICAgICAgICAgICAgICAgICAgICBleHRyYXZhbHVlc1snSE9NRVBBR0UnXSA9IGRhdGFbJ2hvbWVwYWdlJ10KKyAgICAgICAgd2l0aCBvcGVuKGZpbGVzWzBdLCAiciIpIGFzIGY6CisgICAgICAgICAgICBkYXRhID0ganNvbi5sb2FkKGYpCiAKLSAgICAgICAgICAgICAgICBmZXRjaGRldiA9IGV4dHJhdmFsdWVzWydmZXRjaGRldiddIG9yIE5vbmUKLSAgICAgICAgICAgICAgICBkZXBzLCBvcHRkZXBzLCBkZXZkZXBzID0gc2VsZi5nZXRfbnBtX3BhY2thZ2VfZGVwZW5kZW5jaWVzKGRhdGEsIGZldGNoZGV2KQotICAgICAgICAgICAgICAgIHNlbGYuX2hhbmRsZV9kZXBlbmRlbmNpZXMoZCwgZGVwcywgb3B0ZGVwcywgZGV2ZGVwcywgbGluZXNfYmVmb3JlLCBzcmN0cmVlKQorICAgICAgICBpZiAibmFtZSIgbm90IGluIGRhdGEgb3IgInZlcnNpb24iIG5vdCBpbiBkYXRhOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCiAKLSAgICAgICAgICAgICAgICAjIFNocmlua3dyYXAKLSAgICAgICAgICAgICAgICBsb2NhbGZpbGVzZGlyID0gdGVtcGZpbGUubWtkdGVtcChwcmVmaXg9J3JlY2lwZXRvb2wtbnBtJykKLSAgICAgICAgICAgICAgICBzZWxmLl9zaHJpbmt3cmFwKHNyY3RyZWUsIGxvY2FsZmlsZXNkaXIsIGV4dHJhdmFsdWVzLCBsaW5lc19iZWZvcmUsIGQpCisgICAgICAgIGV4dHJhdmFsdWVzWyJQTiJdID0gc2VsZi5fbnBtX25hbWUoZGF0YVsibmFtZSJdKQorICAgICAgICBleHRyYXZhbHVlc1siUFYiXSA9IGRhdGFbInZlcnNpb24iXQogCi0gICAgICAgICAgICAgICAgIyBMb2NrZG93bgotICAgICAgICAgICAgICAgIHNlbGYuX2xvY2tkb3duKHNyY3RyZWUsIGxvY2FsZmlsZXNkaXIsIGV4dHJhdmFsdWVzLCBsaW5lc19iZWZvcmUsIGQpCisgICAgICAgIGlmICJkZXNjcmlwdGlvbiIgaW4gZGF0YToKKyAgICAgICAgICAgIGV4dHJhdmFsdWVzWyJTVU1NQVJZIl0gPSBkYXRhWyJkZXNjcmlwdGlvbiJdCiAKLSAgICAgICAgICAgICAgICAjIFNwbGl0IGVhY2ggbnBtIG1vZHVsZSBvdXQgdG8gaXMgb3duIHBhY2thZ2UKLSAgICAgICAgICAgICAgICBucG1wYWNrYWdlcyA9IG9lLnBhY2thZ2UubnBtX3NwbGl0X3BhY2thZ2VfZGlycyhzcmN0cmVlKQotICAgICAgICAgICAgICAgIGxpY3ZhbHVlcyA9IE5vbmUKLSAgICAgICAgICAgICAgICBmb3IgaXRlbSBpbiBoYW5kbGVkOgotICAgICAgICAgICAgICAgICAgICBpZiBpc2luc3RhbmNlKGl0ZW0sIHR1cGxlKToKLSAgICAgICAgICAgICAgICAgICAgICAgIGlmIGl0ZW1bMF0gPT0gJ2xpY2Vuc2UnOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpY3ZhbHVlcyA9IGl0ZW1bMV0KLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgICAgIGlmIG5vdCBsaWN2YWx1ZXM6Ci0gICAgICAgICAgICAgICAgICAgIGxpY3ZhbHVlcyA9IGhhbmRsZV9saWNlbnNlX3ZhcnMoc3JjdHJlZSwgbGluZXNfYmVmb3JlLCBoYW5kbGVkLCBleHRyYXZhbHVlcywgZCkKLSAgICAgICAgICAgICAgICBpZiBsaWN2YWx1ZXM6Ci0gICAgICAgICAgICAgICAgICAgICMgQXVnbWVudCB0aGUgbGljZW5zZSBsaXN0IHdpdGggaW5mb3JtYXRpb24gd2UgaGF2ZSBpbiB0aGUgcGFja2FnZXMKLSAgICAgICAgICAgICAgICAgICAgbGljZW5zZXMgPSB7fQotICAgICAgICAgICAgICAgICAgICBsaWNlbnNlID0gc2VsZi5faGFuZGxlX2xpY2Vuc2UoZGF0YSkKLSAgICAgICAgICAgICAgICAgICAgaWYgbGljZW5zZToKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2VzWycke1BOfSddID0gbGljZW5zZQotICAgICAgICAgICAgICAgICAgICBmb3IgcGtnbmFtZSwgcGtnaXRlbSBpbiBucG1wYWNrYWdlcy5pdGVtcygpOgotICAgICAgICAgICAgICAgICAgICAgICAgXywgcGRhdGEgPSBwa2dpdGVtCi0gICAgICAgICAgICAgICAgICAgICAgICBsaWNlbnNlID0gc2VsZi5faGFuZGxlX2xpY2Vuc2UocGRhdGEpCi0gICAgICAgICAgICAgICAgICAgICAgICBpZiBsaWNlbnNlOgotICAgICAgICAgICAgICAgICAgICAgICAgICAgIGxpY2Vuc2VzW3BrZ25hbWVdID0gbGljZW5zZQotICAgICAgICAgICAgICAgICAgICAjIE5vdyB3cml0ZSBvdXQgdGhlIHBhY2thZ2Utc3BlY2lmaWMgbGljZW5zZSB2YWx1ZXMKLSAgICAgICAgICAgICAgICAgICAgIyBXZSBuZWVkIHRvIHN0cmlwIG91dCB0aGUganNvbiBkYXRhIGRpY3RzIGZvciB0aGlzIHNpbmNlIHNwbGl0X3BrZ19saWNlbnNlcwotICAgICAgICAgICAgICAgICAgICAjIGlzbid0IGV4cGVjdGluZyBpdAotICAgICAgICAgICAgICAgICAgICBwYWNrYWdlcyA9IE9yZGVyZWREaWN0KCh4LHlbMF0pIGZvciB4LHkgaW4gbnBtcGFja2FnZXMuaXRlbXMoKSkKLSAgICAgICAgICAgICAgICAgICAgcGFja2FnZXNbJyR7UE59J10gPSAnJwotICAgICAgICAgICAgICAgICAgICBwa2dsaWNlbnNlcyA9IHNwbGl0X3BrZ19saWNlbnNlcyhsaWN2YWx1ZXMsIHBhY2thZ2VzLCBsaW5lc19hZnRlciwgbGljZW5zZXMpCi0gICAgICAgICAgICAgICAgICAgIGFsbF9saWNlbnNlcyA9IGxpc3Qoc2V0KFtpdGVtLnJlcGxhY2UoJ18nLCAnICcpIGZvciBwa2dsaWNlbnNlIGluIHBrZ2xpY2Vuc2VzLnZhbHVlcygpIGZvciBpdGVtIGluIHBrZ2xpY2Vuc2VdKSkKLSAgICAgICAgICAgICAgICAgICAgaWYgJyYnIGluIGFsbF9saWNlbnNlczoKLSAgICAgICAgICAgICAgICAgICAgICAgIGFsbF9saWNlbnNlcy5yZW1vdmUoJyYnKQotICAgICAgICAgICAgICAgICAgICBleHRyYXZhbHVlc1snTElDRU5TRSddID0gJyAmICcuam9pbihhbGxfbGljZW5zZXMpCisgICAgICAgIGlmICJob21lcGFnZSIgaW4gZGF0YToKKyAgICAgICAgICAgIGV4dHJhdmFsdWVzWyJIT01FUEFHRSJdID0gZGF0YVsiaG9tZXBhZ2UiXQogCi0gICAgICAgICAgICAgICAgIyBOZWVkIHRvIG1vdmUgUyBzZXR0aW5nIGFmdGVyIGluaGVyaXQgbnBtCi0gICAgICAgICAgICAgICAgZm9yIGksIGxpbmUgaW4gZW51bWVyYXRlKGxpbmVzX2JlZm9yZSk6Ci0gICAgICAgICAgICAgICAgICAgIGlmIGxpbmUuc3RhcnRzd2l0aCgnUyA9Jyk6Ci0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lc19iZWZvcmUucG9wKGkpCi0gICAgICAgICAgICAgICAgICAgICAgICBsaW5lc19hZnRlci5pbnNlcnQoMCwgJyMgTXVzdCBiZSBzZXQgYWZ0ZXIgaW5oZXJpdCBucG0gc2luY2UgdGhhdCBpdHNlbGYgc2V0cyBTJykKLSAgICAgICAgICAgICAgICAgICAgICAgIGxpbmVzX2FmdGVyLmluc2VydCgxLCBsaW5lKQotICAgICAgICAgICAgICAgICAgICAgICAgYnJlYWsKKyAgICAgICAgZGV2ID0gYmIudXRpbHMudG9fYm9vbGVhbihzdHIoZXh0cmF2YWx1ZXMuZ2V0KCJOUE1fSU5TVEFMTF9ERVYiLCAiMCIpKSwgRmFsc2UpCisgICAgICAgIHJlZ2lzdHJ5ID0gc2VsZi5fZ2V0X3JlZ2lzdHJ5KGxpbmVzX2JlZm9yZSkKIAotICAgICAgICAgICAgICAgIHJldHVybiBUcnVlCisgICAgICAgIGJiLm5vdGUoIkNoZWNraW5nIGlmIG5wbSBpcyBhdmFpbGFibGUgLi4uIikKKyAgICAgICAgIyBUaGUgbmF0aXZlIG5wbSBpcyB1c2VkIGhlcmUgKGFuZCBub3QgdGhlIGhvc3Qgb25lKSB0byBlbnN1cmUgdGhhdCB0aGUKKyAgICAgICAgIyBucG0gdmVyc2lvbiBpcyBoaWdoIGVub3VnaCB0byBlbnN1cmUgYW4gZWZmaWNpZW50IGRlcGVuZGVuY3kgdHJlZQorICAgICAgICAjIHJlc29sdXRpb24gYW5kIGF2b2lkIGlzc3VlIHdpdGggdGhlIHNocmlua3dyYXAgZmlsZSBmb3JtYXQuCisgICAgICAgICMgTW9yZW92ZXIgdGhlIG5hdGl2ZSBucG0gaXMgbWFuZGF0b3J5IGZvciB0aGUgYnVpbGQuCisgICAgICAgIGJpbmRpciA9IHNlbGYuX2Vuc3VyZV9ucG0oKQogCi0gICAgICAgIHJldHVybiBGYWxzZQorICAgICAgICBkID0gYmIuZGF0YS5jcmVhdGVDb3B5KFRJTkZPSUwuY29uZmlnX2RhdGEpCisgICAgICAgIGQucHJlcGVuZFZhcigiUEFUSCIsIGJpbmRpciArICI6IikKKyAgICAgICAgZC5zZXRWYXIoIlMiLCBzcmN0cmVlKQogCi0gICAgIyBGSVhNRSB0aGlzIGlzIGR1cGxpY2F0ZWQgZnJvbSBsaWIvYmIvZmV0Y2gyL25wbS5weQotICAgIGRlZiBfcGFyc2VfdmlldyhzZWxmLCBvdXRwdXQpOgotICAgICAgICAnJycKLSAgICAgICAgUGFyc2UgdGhlIG91dHB1dCBvZiBucG0gdmlldyAtLWpzb247IHRoZSBsYXN0IEpTT04gcmVzdWx0Ci0gICAgICAgIGlzIGFzc3VtZWQgdG8gYmUgdGhlIG9uZSB0aGF0IHdlJ3JlIGludGVyZXN0ZWQgaW4uCi0gICAgICAgICcnJwotICAgICAgICBwZGF0YSA9IE5vbmUKLSAgICAgICAgb3V0ZGVwcyA9IHt9Ci0gICAgICAgIGRhdGFsaW5lcyA9IFtdCi0gICAgICAgIGJyYWNlbGV2ZWwgPSAwCi0gICAgICAgIGZvciBsaW5lIGluIG91dHB1dC5zcGxpdGxpbmVzKCk6Ci0gICAgICAgICAgICBpZiBicmFjZWxldmVsOgotICAgICAgICAgICAgICAgIGRhdGFsaW5lcy5hcHBlbmQobGluZSkKLSAgICAgICAgICAgIGVsaWYgJ3snIGluIGxpbmU6Ci0gICAgICAgICAgICAgICAgZGF0YWxpbmVzID0gW10KLSAgICAgICAgICAgICAgICBkYXRhbGluZXMuYXBwZW5kKGxpbmUpCi0gICAgICAgICAgICBicmFjZWxldmVsID0gYnJhY2VsZXZlbCArIGxpbmUuY291bnQoJ3snKSAtIGxpbmUuY291bnQoJ30nKQotICAgICAgICBpZiBkYXRhbGluZXM6Ci0gICAgICAgICAgICBwZGF0YSA9IGpzb24ubG9hZHMoJ1xuJy5qb2luKGRhdGFsaW5lcykpCi0gICAgICAgIHJldHVybiBwZGF0YQorICAgICAgICBiYi5ub3RlKCJHZW5lcmF0aW5nIHNocmlua3dyYXAgZmlsZSAuLi4iKQorICAgICAgICAjIFRvIGdlbmVyYXRlIHRoZSBzaHJpbmt3cmFwIGZpbGUgdGhlIGRlcGVuZGVuY2llcyBoYXZlIHRvIGJlIGluc3RhbGxlZAorICAgICAgICAjIGZpcnN0LiBEdXJpbmcgdGhlIGdlbmVyYXRpb24gcHJvY2VzcyBzb21lIGZpbGVzIG1heSBiZSB1cGRhdGVkIC8KKyAgICAgICAgIyBkZWxldGVkLiBCeSBkZWZhdWx0IGRldnRvb2wgdHJhY2tzIHRoZSBkaWZmcyBpbiB0aGUgc3JjdHJlZSBhbmQgcmFpc2VzCisgICAgICAgICMgZXJyb3JzIHdoZW4gZmluaXNoaW5nIHRoZSByZWNpcGUgaWYgc29tZSBkaWZmcyBhcmUgZm91bmQuCisgICAgICAgIGdpdF9leGNsdWRlX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc3JjdHJlZSwgIi5naXQiLCAiaW5mbyIsICJleGNsdWRlIikKKyAgICAgICAgaWYgb3MucGF0aC5leGlzdHMoZ2l0X2V4Y2x1ZGVfZmlsZSk6CisgICAgICAgICAgICB3aXRoIG9wZW4oZ2l0X2V4Y2x1ZGVfZmlsZSwgInIrIikgYXMgZjoKKyAgICAgICAgICAgICAgICBsaW5lcyA9IGYucmVhZGxpbmVzKCkKKyAgICAgICAgICAgICAgICBmb3IgbGluZSBpbiBbIi9ub2RlX21vZHVsZXMvIiwgIi9ucG0tc2hyaW5rd3JhcC5qc29uIl06CisgICAgICAgICAgICAgICAgICAgIGlmIGxpbmUgbm90IGluIGxpbmVzOgorICAgICAgICAgICAgICAgICAgICAgICAgZi53cml0ZShsaW5lICsgIlxuIikKIAotICAgICMgRklYTUUgdGhpcyBpcyBlZmZlY3RpdmVseSBkdXBsaWNhdGVkIGZyb20gbGliL2JiL2ZldGNoMi9ucG0ucHkKLSAgICAjIChzcGxpdCBvdXQgZnJvbSBfZ2V0ZGVwZW5kZW5jaWVzKCkpCi0gICAgZGVmIGdldF9ucG1fZGF0YShzZWxmLCBwa2csIHZlcnNpb24sIGQpOgotICAgICAgICBpbXBvcnQgYmIuZmV0Y2gyCi0gICAgICAgIHBrZ2Z1bGxuYW1lID0gcGtnCi0gICAgICAgIGlmIHZlcnNpb24gIT0gJyonIGFuZCBub3QgJy8nIGluIHZlcnNpb246Ci0gICAgICAgICAgICBwa2dmdWxsbmFtZSArPSAiQCclcyciICUgdmVyc2lvbgotICAgICAgICBsb2dnZXIuZGVidWcoMiwgIkNhbGxpbmcgZ2V0ZGVwcyBvbiAlcyIgJSBwa2cpCi0gICAgICAgIHJ1bmVudiA9IGRpY3Qob3MuZW52aXJvbiwgUEFUSD1kLmdldFZhcignUEFUSCcpKQotICAgICAgICBmZXRjaGNtZCA9ICJucG0gdmlldyAlcyAtLWpzb24iICUgcGtnZnVsbG5hbWUKLSAgICAgICAgb3V0cHV0LCBfID0gYmIucHJvY2Vzcy5ydW4oZmV0Y2hjbWQsIHN0ZGVycj1zdWJwcm9jZXNzLlNURE9VVCwgZW52PXJ1bmVudiwgc2hlbGw9VHJ1ZSkKLSAgICAgICAgZGF0YSA9IHNlbGYuX3BhcnNlX3ZpZXcob3V0cHV0KQotICAgICAgICByZXR1cm4gZGF0YQorICAgICAgICBsb2NrX2ZpbGUgPSBvcy5wYXRoLmpvaW4oc3JjdHJlZSwgInBhY2thZ2UtbG9jay5qc29uIikKKyAgICAgICAgbG9ja19jb3B5ID0gbG9ja19maWxlICsgIi5jb3B5IgorICAgICAgICBpZiBvcy5wYXRoLmV4aXN0cyhsb2NrX2ZpbGUpOgorICAgICAgICAgICAgYmIudXRpbHMuY29weWZpbGUobG9ja19maWxlLCBsb2NrX2NvcHkpCiAKLSAgICAjIEZJWE1FIHRoaXMgaXMgZWZmZWN0aXZlbHkgZHVwbGljYXRlZCBmcm9tIGxpYi9iYi9mZXRjaDIvbnBtLnB5Ci0gICAgIyAoc3BsaXQgb3V0IGZyb20gX2dldGRlcGVuZGVuY2llcygpKQotICAgIGRlZiBnZXRfbnBtX3BhY2thZ2VfZGVwZW5kZW5jaWVzKHNlbGYsIHBkYXRhLCBmZXRjaGRldik6Ci0gICAgICAgIGRlcGVuZGVuY2llcyA9IHBkYXRhLmdldCgnZGVwZW5kZW5jaWVzJywge30pCi0gICAgICAgIG9wdGlvbmFsRGVwZW5kZW5jaWVzID0gcGRhdGEuZ2V0KCdvcHRpb25hbERlcGVuZGVuY2llcycsIHt9KQotICAgICAgICBkZXBlbmRlbmNpZXMudXBkYXRlKG9wdGlvbmFsRGVwZW5kZW5jaWVzKQotICAgICAgICBpZiBmZXRjaGRldjoKLSAgICAgICAgICAgIGRldkRlcGVuZGVuY2llcyA9IHBkYXRhLmdldCgnZGV2RGVwZW5kZW5jaWVzJywge30pCi0gICAgICAgICAgICBkZXBlbmRlbmNpZXMudXBkYXRlKGRldkRlcGVuZGVuY2llcykKLSAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGRldkRlcGVuZGVuY2llcyA9IHt9Ci0gICAgICAgIGRlcHNmb3VuZCA9IHt9Ci0gICAgICAgIG9wdGRlcHNmb3VuZCA9IHt9Ci0gICAgICAgIGRldmRlcHNmb3VuZCA9IHt9Ci0gICAgICAgIGZvciBkZXAgaW4gZGVwZW5kZW5jaWVzOgotICAgICAgICAgICAgaWYgZGVwIGluIG9wdGlvbmFsRGVwZW5kZW5jaWVzOgotICAgICAgICAgICAgICAgIG9wdGRlcHNmb3VuZFtkZXBdID0gZGVwZW5kZW5jaWVzW2RlcF0KLSAgICAgICAgICAgIGVsaWYgZGVwIGluIGRldkRlcGVuZGVuY2llczoKLSAgICAgICAgICAgICAgICBkZXZkZXBzZm91bmRbZGVwXSA9IGRlcGVuZGVuY2llc1tkZXBdCi0gICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAgICAgIGRlcHNmb3VuZFtkZXBdID0gZGVwZW5kZW5jaWVzW2RlcF0KLSAgICAgICAgcmV0dXJuIGRlcHNmb3VuZCwgb3B0ZGVwc2ZvdW5kLCBkZXZkZXBzZm91bmQKKyAgICAgICAgc2VsZi5fcnVuX25wbV9pbnN0YWxsKGQsIHNyY3RyZWUsIHJlZ2lzdHJ5LCBkZXYpCisgICAgICAgIHNocmlua3dyYXBfZmlsZSA9IHNlbGYuX2dlbmVyYXRlX3Nocmlua3dyYXAoZCwgc3JjdHJlZSwgZGV2KQogCi0gICAgIyBGSVhNRSB0aGlzIGlzIGVmZmVjdGl2ZWx5IGR1cGxpY2F0ZWQgZnJvbSBsaWIvYmIvZmV0Y2gyL25wbS5weQotICAgICMgKHNwbGl0IG91dCBmcm9tIF9nZXRkZXBlbmRlbmNpZXMoKSkKLSAgICBkZWYgY2hlY2tfbnBtX29wdGlvbmFsX2RlcGVuZGVuY3koc2VsZiwgcGRhdGEpOgotICAgICAgICBwa2dfb3MgPSBwZGF0YS5nZXQoJ29zJywgTm9uZSkKLSAgICAgICAgaWYgcGtnX29zOgotICAgICAgICAgICAgaWYgbm90IGlzaW5zdGFuY2UocGtnX29zLCBsaXN0KToKLSAgICAgICAgICAgICAgICBwa2dfb3MgPSBbcGtnX29zXQotICAgICAgICAgICAgYmxhY2tsaXN0ID0gRmFsc2UKLSAgICAgICAgICAgIGZvciBpdGVtIGluIHBrZ19vczoKLSAgICAgICAgICAgICAgICBpZiBpdGVtLnN0YXJ0c3dpdGgoJyEnKToKLSAgICAgICAgICAgICAgICAgICAgYmxhY2tsaXN0ID0gVHJ1ZQotICAgICAgICAgICAgICAgICAgICBicmVhawotICAgICAgICAgICAgaWYgKG5vdCBibGFja2xpc3QgYW5kICdsaW51eCcgbm90IGluIHBrZ19vcykgb3IgJyFsaW51eCcgaW4gcGtnX29zOgotICAgICAgICAgICAgICAgIHBrZyA9IHBkYXRhLmdldCgnbmFtZScsICdVbm5hbWVkIHBhY2thZ2UnKQotICAgICAgICAgICAgICAgIGxvZ2dlci5kZWJ1ZygyLCAiU2tpcHBpbmcgJXMgc2luY2UgaXQncyBpbmNvbXBhdGlibGUgd2l0aCBMaW51eCIgJSBwa2cpCi0gICAgICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisgICAgICAgIGlmIG9zLnBhdGguZXhpc3RzKGxvY2tfY29weSk6CisgICAgICAgICAgICBiYi51dGlscy5tb3ZlZmlsZShsb2NrX2NvcHksIGxvY2tfZmlsZSkKKworICAgICAgICAjIEFkZCB0aGUgc2hyaW5rd3JhcCBmaWxlIGFzICdleHRyYWZpbGVzJworICAgICAgICBzaHJpbmt3cmFwX2NvcHkgPSBzaHJpbmt3cmFwX2ZpbGUgKyAiLmNvcHkiCisgICAgICAgIGJiLnV0aWxzLmNvcHlmaWxlKHNocmlua3dyYXBfZmlsZSwgc2hyaW5rd3JhcF9jb3B5KQorICAgICAgICBleHRyYXZhbHVlcy5zZXRkZWZhdWx0KCJleHRyYWZpbGVzIiwge30pCisgICAgICAgIGV4dHJhdmFsdWVzWyJleHRyYWZpbGVzIl1bIm5wbS1zaHJpbmt3cmFwLmpzb24iXSA9IHNocmlua3dyYXBfY29weQorCisgICAgICAgIHVybF9sb2NhbCA9ICJucG1zdzovLyVzIiAlIHNocmlua3dyYXBfZmlsZQorICAgICAgICB1cmxfcmVjaXBlPSAibnBtc3c6Ly8ke1RISVNESVJ9LyR7QlBOfS9ucG0tc2hyaW5rd3JhcC5qc29uIgorCisgICAgICAgIGlmIGRldjoKKyAgICAgICAgICAgIHVybF9sb2NhbCArPSAiO2Rldj0xIgorICAgICAgICAgICAgdXJsX3JlY2lwZSArPSAiO2Rldj0xIgorCisgICAgICAgICMgQWRkIHRoZSBucG1zdyB1cmwgaW4gdGhlIFNSQ19VUkkgb2YgdGhlIGdlbmVyYXRlZCByZWNpcGUKKyAgICAgICAgZGVmIF9oYW5kbGVfc3JjdXJpKHZhcm5hbWUsIG9yaWd2YWx1ZSwgb3AsIG5ld2xpbmVzKToKKyAgICAgICAgICAgICIiIlVwZGF0ZSB0aGUgdmVyc2lvbiB2YWx1ZSBhbmQgYWRkIHRoZSAnbnBtc3c6Ly8nIHVybCIiIgorICAgICAgICAgICAgdmFsdWUgPSBvcmlndmFsdWUucmVwbGFjZSgidmVyc2lvbj0iICsgZGF0YVsidmVyc2lvbiJdLCAidmVyc2lvbj0ke1BWfSIpCisgICAgICAgICAgICB2YWx1ZSA9IHZhbHVlLnJlcGxhY2UoInZlcnNpb249bGF0ZXN0IiwgInZlcnNpb249JHtQVn0iKQorICAgICAgICAgICAgdmFsdWVzID0gW2xpbmUuc3RyaXAoKSBmb3IgbGluZSBpbiB2YWx1ZS5zdHJpcCgnXG4nKS5zcGxpdGxpbmVzKCldCisgICAgICAgICAgICB2YWx1ZXMuYXBwZW5kKHVybF9yZWNpcGUpCisgICAgICAgICAgICByZXR1cm4gdmFsdWVzLCBOb25lLCA0LCBGYWxzZQorCisgICAgICAgIChfLCBuZXdsaW5lcykgPSBiYi51dGlscy5lZGl0X21ldGFkYXRhKGxpbmVzX2JlZm9yZSwgWyJTUkNfVVJJIl0sIF9oYW5kbGVfc3JjdXJpKQorICAgICAgICBsaW5lc19iZWZvcmVbOl0gPSBbbGluZS5yc3RyaXAoJ1xuJykgZm9yIGxpbmUgaW4gbmV3bGluZXNdCisKKyAgICAgICAgIyBJbiBvcmRlciB0byBnZW5lcmF0ZSBjb3JyZWN0IGxpY2VuY2UgY2hlY2tzdW1zIGluIHRoZSByZWNpcGUgdGhlCisgICAgICAgICMgZGVwZW5kZW5jaWVzIGhhdmUgdG8gYmUgZmV0Y2hlZCBhZ2FpbiB1c2luZyB0aGUgbnBtc3cgdXJsCisgICAgICAgIGJiLm5vdGUoIkZldGNoaW5nIG5wbSBkZXBlbmRlbmNpZXMgLi4uIikKKyAgICAgICAgYmIudXRpbHMucmVtb3ZlKG9zLnBhdGguam9pbihzcmN0cmVlLCAibm9kZV9tb2R1bGVzIiksIHJlY3Vyc2U9VHJ1ZSkKKyAgICAgICAgZmV0Y2hlciA9IGJiLmZldGNoMi5GZXRjaChbdXJsX2xvY2FsXSwgZCkKKyAgICAgICAgZmV0Y2hlci5kb3dubG9hZCgpCisgICAgICAgIGZldGNoZXIudW5wYWNrKHNyY3RyZWUpCisKKyAgICAgICAgYmIubm90ZSgiSGFuZGxpbmcgbGljZW5jZXMgLi4uIikKKyAgICAgICAgKGxpY2ZpbGVzLCBwYWNrYWdlcykgPSBzZWxmLl9oYW5kbGVfbGljZW5zZXMoc3JjdHJlZSwgc2hyaW5rd3JhcF9maWxlLCBkZXYpCisgICAgICAgIGV4dHJhdmFsdWVzWyJMSUNfRklMRVNfQ0hLU1VNIl0gPSBsaWNmaWxlcworICAgICAgICBzcGxpdF9wa2dfbGljZW5zZXMoZ3Vlc3NfbGljZW5zZShzcmN0cmVlLCBkKSwgcGFja2FnZXMsIGxpbmVzX2FmdGVyLCBbXSkKKworICAgICAgICBjbGFzc2VzLmFwcGVuZCgibnBtIikKKyAgICAgICAgaGFuZGxlZC5hcHBlbmQoImJ1aWxkc3lzdGVtIikKKwogICAgICAgICByZXR1cm4gVHJ1ZQogCi0KIGRlZiByZWdpc3Rlcl9yZWNpcGVfaGFuZGxlcnMoaGFuZGxlcnMpOgorICAgICIiIlJlZ2lzdGVyIHRoZSBucG0gaGFuZGxlciIiIgogICAgIGhhbmRsZXJzLmFwcGVuZCgoTnBtUmVjaXBlSGFuZGxlcigpLCA2MCkpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3Jlc3VsdHRvb2wvcmVwb3J0LnB5IGIvcG9reS9zY3JpcHRzL2xpYi9yZXN1bHR0b29sL3JlcG9ydC5weQppbmRleCA2OTJkZDdhLi43Y2VjZWFjIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3Jlc3VsdHRvb2wvcmVwb3J0LnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvcmVzdWx0dG9vbC9yZXBvcnQucHkKQEAgLTIxMiw3ICsyMTIsMjEgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG1heGxlbj1tYXhsZW4pCiAgICAgICAgIHByaW50KG91dHB1dCkKIAotICAgIGRlZiB2aWV3X3Rlc3RfcmVwb3J0KHNlbGYsIGxvZ2dlciwgc291cmNlX2RpciwgYnJhbmNoLCBjb21taXQsIHRhZywgdXNlX3JlZ3Jlc3Npb25fbWFwLCByYXdfdGVzdCk6CisgICAgZGVmIHZpZXdfdGVzdF9yZXBvcnQoc2VsZiwgbG9nZ2VyLCBzb3VyY2VfZGlyLCBicmFuY2gsIGNvbW1pdCwgdGFnLCB1c2VfcmVncmVzc2lvbl9tYXAsIHJhd190ZXN0LCBzZWxlY3RlZF90ZXN0X2Nhc2Vfb25seSk6CisgICAgICAgIGRlZiBwcmludF9zZWxlY3RlZF90ZXN0Y2FzZV9yZXN1bHQodGVzdHJlc3VsdHMsIHNlbGVjdGVkX3Rlc3RfY2FzZV9vbmx5KToKKyAgICAgICAgICAgIGZvciB0ZXN0c3VpdGUgaW4gdGVzdHJlc3VsdHM6CisgICAgICAgICAgICAgICAgZm9yIHJlc3VsdGlkIGluIHRlc3RyZXN1bHRzW3Rlc3RzdWl0ZV06CisgICAgICAgICAgICAgICAgICAgIHJlc3VsdCA9IHRlc3RyZXN1bHRzW3Rlc3RzdWl0ZV1bcmVzdWx0aWRdWydyZXN1bHQnXQorICAgICAgICAgICAgICAgICAgICB0ZXN0X2Nhc2VfcmVzdWx0ID0gcmVzdWx0LmdldChzZWxlY3RlZF90ZXN0X2Nhc2Vfb25seSwge30pCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3RfY2FzZV9yZXN1bHQuZ2V0KCdzdGF0dXMnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdGb3VuZCBzZWxlY3RlZCB0ZXN0IGNhc2UgcmVzdWx0IGZvciAlcyBmcm9tICVzJyAlIChzZWxlY3RlZF90ZXN0X2Nhc2Vfb25seSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRpZCkpCisgICAgICAgICAgICAgICAgICAgICAgICBwcmludCh0ZXN0X2Nhc2VfcmVzdWx0WydzdGF0dXMnXSkKKyAgICAgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KCdDb3VsZCBub3QgZmluZCBzZWxlY3RlZCB0ZXN0IGNhc2UgcmVzdWx0IGZvciAlcyBmcm9tICVzJyAlIChzZWxlY3RlZF90ZXN0X2Nhc2Vfb25seSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICByZXN1bHRpZCkpCisgICAgICAgICAgICAgICAgICAgIGlmIHRlc3RfY2FzZV9yZXN1bHQuZ2V0KCdsb2cnKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHByaW50KHRlc3RfY2FzZV9yZXN1bHRbJ2xvZyddKQogICAgICAgICB0ZXN0X2NvdW50X3JlcG9ydHMgPSBbXQogICAgICAgICBjb25maWdtYXAgPSByZXN1bHR1dGlscy5zdG9yZV9tYXAKICAgICAgICAgaWYgdXNlX3JlZ3Jlc3Npb25fbWFwOgpAQCAtMjM1LDEyICsyNDksMTggQEAKICAgICAgICAgICAgIGZvciB0ZXN0c3VpdGUgaW4gdGVzdHJlc3VsdHM6CiAgICAgICAgICAgICAgICAgcmVzdWx0ID0gdGVzdHJlc3VsdHNbdGVzdHN1aXRlXS5nZXQocmF3X3Rlc3QsIHt9KQogICAgICAgICAgICAgICAgIGlmIHJlc3VsdDoKLSAgICAgICAgICAgICAgICAgICAgcmF3X3Jlc3VsdHNbdGVzdHN1aXRlXSA9IHJlc3VsdAorICAgICAgICAgICAgICAgICAgICByYXdfcmVzdWx0c1t0ZXN0c3VpdGVdID0ge3Jhd190ZXN0OiByZXN1bHR9CiAgICAgICAgICAgICBpZiByYXdfcmVzdWx0czoKLSAgICAgICAgICAgICAgICBwcmludChqc29uLmR1bXBzKHJhd19yZXN1bHRzLCBzb3J0X2tleXM9VHJ1ZSwgaW5kZW50PTQpKQorICAgICAgICAgICAgICAgIGlmIHNlbGVjdGVkX3Rlc3RfY2FzZV9vbmx5OgorICAgICAgICAgICAgICAgICAgICBwcmludF9zZWxlY3RlZF90ZXN0Y2FzZV9yZXN1bHQocmF3X3Jlc3VsdHMsIHNlbGVjdGVkX3Rlc3RfY2FzZV9vbmx5KQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHByaW50KGpzb24uZHVtcHMocmF3X3Jlc3VsdHMsIHNvcnRfa2V5cz1UcnVlLCBpbmRlbnQ9NCkpCiAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgIHByaW50KCdDb3VsZCBub3QgZmluZCByYXcgdGVzdCByZXN1bHQgZm9yICVzJyAlIHJhd190ZXN0KQogICAgICAgICAgICAgcmV0dXJuIDAKKyAgICAgICAgaWYgc2VsZWN0ZWRfdGVzdF9jYXNlX29ubHk6CisgICAgICAgICAgICBwcmludF9zZWxlY3RlZF90ZXN0Y2FzZV9yZXN1bHQodGVzdHJlc3VsdHMsIHNlbGVjdGVkX3Rlc3RfY2FzZV9vbmx5KQorICAgICAgICAgICAgcmV0dXJuIDAKICAgICAgICAgZm9yIHRlc3RzdWl0ZSBpbiB0ZXN0cmVzdWx0czoKICAgICAgICAgICAgIGZvciByZXN1bHRpZCBpbiB0ZXN0cmVzdWx0c1t0ZXN0c3VpdGVdOgogICAgICAgICAgICAgICAgIHNraXAgPSBGYWxzZQpAQCAtMjY4LDcgKzI4OCw3IEBACiBkZWYgcmVwb3J0KGFyZ3MsIGxvZ2dlcik6CiAgICAgcmVwb3J0ID0gUmVzdWx0c1RleHRSZXBvcnQoKQogICAgIHJlcG9ydC52aWV3X3Rlc3RfcmVwb3J0KGxvZ2dlciwgYXJncy5zb3VyY2VfZGlyLCBhcmdzLmJyYW5jaCwgYXJncy5jb21taXQsIGFyZ3MudGFnLCBhcmdzLnVzZV9yZWdyZXNzaW9uX21hcCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBhcmdzLnJhd190ZXN0X29ubHkpCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5yYXdfdGVzdF9vbmx5LCBhcmdzLnNlbGVjdGVkX3Rlc3RfY2FzZV9vbmx5KQogICAgIHJldHVybiAwCiAKIGRlZiByZWdpc3Rlcl9jb21tYW5kcyhzdWJwYXJzZXJzKToKQEAgLTI4Nyw0ICszMDcsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0naW5zdGVhZCBvZiB0aGUgZGVmYXVsdCAic3RvcmVfbWFwIiwgdXNlIHRoZSAicmVncmVzc2lvbl9tYXAiIGZvciByZXBvcnQnKQogICAgIHBhcnNlcl9idWlsZC5hZGRfYXJndW1lbnQoJy1yJywgJy0tcmF3X3Rlc3Rfb25seScsIGRlZmF1bHQ9JycsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSdvdXRwdXQgcmF3IHRlc3QgcmVzdWx0IG9ubHkgZm9yIHRoZSB1c2VyIHByb3ZpZGVkIHRlc3QgcmVzdWx0IGlkJykKLQorICAgIHBhcnNlcl9idWlsZC5hZGRfYXJndW1lbnQoJy1zJywgJy0tc2VsZWN0ZWRfdGVzdF9jYXNlX29ubHknLCBkZWZhdWx0PScnLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0nb3V0cHV0IHNlbGVjdGVkIHRlc3QgY2FzZSByZXN1bHQgZm9yIHRoZSB1c2VyIHByb3ZpZGVkIHRlc3QgY2FzZSBpZCwgaWYgYm90aCB0ZXN0ICcKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Jlc3VsdCBpZCBhbmQgdGVzdCBjYXNlIGlkIGFyZSBwcm92aWRlZCB0aGVuIG91dHB1dCB0aGUgc2VsZWN0ZWQgdGVzdCBjYXNlIHJlc3VsdCAnCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICdmcm9tIHRoZSBwcm92aWRlZCB0ZXN0IHJlc3VsdCBpZCcpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3Jlc3VsdHRvb2wvcmVzdWx0dXRpbHMucHkgYi9wb2t5L3NjcmlwdHMvbGliL3Jlc3VsdHRvb2wvcmVzdWx0dXRpbHMucHkKaW5kZXggZjBhZThlYy4uNWZlYzAxZiAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi9yZXN1bHR0b29sL3Jlc3VsdHV0aWxzLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvcmVzdWx0dG9vbC9yZXN1bHR1dGlscy5weQpAQCAtMTI3LDEwICsxMjcsNyBAQAogICAgICAgICAgICAgZGF0YSA9IGxvZ2RhdGEuZ2V0KCJjb21wcmVzc2VkIikKICAgICAgICAgICAgIGRhdGEgPSBiYXNlNjQuYjY0ZGVjb2RlKGRhdGEuZW5jb2RlKCJ1dGYtOCIpKQogICAgICAgICAgICAgZGF0YSA9IHpsaWIuZGVjb21wcmVzcyhkYXRhKQotICAgICAgICAgICAgdHJ5OgotICAgICAgICAgICAgICAgIHJldHVybiBkYXRhLmRlY29kZSgidXRmLTgiKQotICAgICAgICAgICAgZXhjZXB0IFVuaWNvZGVEZWNvZGVFcnJvcjoKLSAgICAgICAgICAgICAgICByZXR1cm4gZGF0YQorICAgICAgICAgICAgcmV0dXJuIGRhdGEuZGVjb2RlKCJ1dGYtOCIsIGVycm9ycz0naWdub3JlJykKICAgICByZXR1cm4gTm9uZQogCiBkZWYgcHRlc3RyZXN1bHRfZ2V0X2xvZyhyZXN1bHRzLCBzZWN0aW9uKToKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvc2NyaXB0dXRpbHMucHkgYi9wb2t5L3NjcmlwdHMvbGliL3NjcmlwdHV0aWxzLnB5CmluZGV4IDQ1YmRhZjUuLmY5MjI1NWQgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvc2NyaXB0dXRpbHMucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi9zY3JpcHR1dGlscy5weQpAQCAtNzcsNyArNzcsNiBAQAogCiAKIGRlZiBsb2FkX3BsdWdpbnMobG9nZ2VyLCBwbHVnaW5zLCBwbHVnaW5wYXRoKToKLSAgICBpbXBvcnQgaW1wCiAKICAgICBkZWYgbG9hZF9wbHVnaW4obmFtZSk6CiAgICAgICAgIGxvZ2dlci5kZWJ1ZygnTG9hZGluZyBwbHVnaW4gJXMnICUgbmFtZSkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvcWVtdXg4Ni1kaXJlY3RkaXNrLndrcyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL2Nhbm5lZC13a3MvcWVtdXg4Ni1kaXJlY3RkaXNrLndrcwppbmRleCBjOGQ5ZjEyLi4yMmI0NTIxIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9jYW5uZWQtd2tzL3FlbXV4ODYtZGlyZWN0ZGlzay53a3MKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvY2FubmVkLXdrcy9xZW11eDg2LWRpcmVjdGRpc2sud2tzCkBAIC00LDUgKzQsNSBAQAogCiBpbmNsdWRlIGNvbW1vbi53a3MuaW5jCiAKLWJvb3Rsb2FkZXIgIC0tdGltZW91dD0wICAtLWFwcGVuZD0idmdhPTAgcncgb3Byb2ZpbGUudGltZXI9MSByb290ZnN0eXBlPWV4dDQgIgorYm9vdGxvYWRlciAgLS10aW1lb3V0PTAgIC0tYXBwZW5kPSJydyBvcHJvZmlsZS50aW1lcj0xIHJvb3Rmc3R5cGU9ZXh0NCAiCiAKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2VuZ2luZS5weSBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL2VuZ2luZS5weQppbmRleCA3ZTY2MjA3Li4wMTg4MTViIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9lbmdpbmUucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvZW5naW5lLnB5CkBAIC0yODAsNyArMjgwLDcgQEAKICAgICBkZWYgX19nZXRhdHRyX18oc2VsZiwgbmFtZSk6CiAgICAgICAgICIiIkdldCBwYXRoIHRvIHRoZSBleGVjdXRhYmxlIGluIGEgbGF6eSB3YXkuIiIiCiAgICAgICAgIGlmIG5hbWUgaW4gKCJtZGlyIiwgIm1jb3B5IiwgIm1kZWwiLCAibWRlbHRyZWUiLCAic2ZkaXNrIiwgImUyZnNjayIsCi0gICAgICAgICAgICAgICAgICAgICJyZXNpemUyZnMiLCAibWtzd2FwIiwgIm1rZG9zZnMiLCAiZGVidWdmcyIpOgorICAgICAgICAgICAgICAgICAgICAicmVzaXplMmZzIiwgIm1rc3dhcCIsICJta2Rvc2ZzIiwgImRlYnVnZnMiLCJibGtpZCIpOgogICAgICAgICAgICAgYW5hbWUgPSAiXyVzIiAlIG5hbWUKICAgICAgICAgICAgIGlmIGFuYW1lIG5vdCBpbiBzZWxmLl9fZGljdF9fOgogICAgICAgICAgICAgICAgIHNldGF0dHIoc2VsZiwgYW5hbWUsIGZpbmRfZXhlY3V0YWJsZShuYW1lLCBzZWxmLnBhdGhzKSkKQEAgLTI5MSw3ICsyOTEsNyBAQAogCiAgICAgZGVmIF9nZXRfcGFydF9pbWFnZShzZWxmLCBwbnVtKToKICAgICAgICAgaWYgcG51bSBub3QgaW4gc2VsZi5wYXJ0aXRpb25zOgotICAgICAgICAgICAgcmFpc2UgV2ljRXJyb3IoIlBhcnRpdGlvbiAlcyBpcyBub3QgaW4gdGhlIGltYWdlIikKKyAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJQYXJ0aXRpb24gJXMgaXMgbm90IGluIHRoZSBpbWFnZSIgJSBwbnVtKQogICAgICAgICBwYXJ0ID0gc2VsZi5wYXJ0aXRpb25zW3BudW1dCiAgICAgICAgICMgY2hlY2sgaWYgZnN0eXBlIGlzIHN1cHBvcnRlZAogICAgICAgICBmb3IgZnN0eXBlIGluIHNlbGYuZnN0eXBlczoKQEAgLTMxNCw2ICszMTQsOSBAQAogICAgICAgICAgICAgICAgICAgICBzZWVrPXNlbGYucGFydGl0aW9uc1twbnVtXS5zdGFydCkKIAogICAgIGRlZiBkaXIoc2VsZiwgcG51bSwgcGF0aCk6CisgICAgICAgIGlmIHBudW0gbm90IGluIHNlbGYucGFydGl0aW9uczoKKyAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJQYXJ0aXRpb24gJXMgaXMgbm90IGluIHRoZSBpbWFnZSIgJSBwbnVtKQorCiAgICAgICAgIGlmIHNlbGYucGFydGl0aW9uc1twbnVtXS5mc3R5cGUuc3RhcnRzd2l0aCgnZXh0Jyk6CiAgICAgICAgICAgICByZXR1cm4gZXhlY19jbWQoInt9IHt9IC1SICdscyAtbCB7fSciLmZvcm1hdChzZWxmLmRlYnVnZnMsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9nZXRfcGFydF9pbWFnZShwbnVtKSwKQEAgLTMyMywxNiArMzI2LDMxIEBACiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9nZXRfcGFydF9pbWFnZShwbnVtKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHBhdGgpKQogCi0gICAgZGVmIGNvcHkoc2VsZiwgc3JjLCBwbnVtLCBwYXRoKToKKyAgICBkZWYgY29weShzZWxmLCBzcmMsIGRlc3QpOgogICAgICAgICAiIiJDb3B5IHBhcnRpdGlvbiBpbWFnZSBpbnRvIHdpYyBpbWFnZS4iIiIKKyAgICAgICAgcG51bSA9ICBkZXN0LnBhcnQgaWYgaXNpbnN0YW5jZShzcmMsIHN0cikgZWxzZSBzcmMucGFydAorCiAgICAgICAgIGlmIHNlbGYucGFydGl0aW9uc1twbnVtXS5mc3R5cGUuc3RhcnRzd2l0aCgnZXh0Jyk6Ci0gICAgICAgICAgICBjbWQgPSAicHJpbnRmICdjZCB7fVxud3JpdGUge30ge31cbicgfCB7fSAtdyB7fSIuXAotICAgICAgICAgICAgICAgICAgICAgIGZvcm1hdChwYXRoLCBzcmMsIG9zLnBhdGguYmFzZW5hbWUoc3JjKSwKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc3JjLCBzdHIpOgorICAgICAgICAgICAgICAgIGNtZCA9ICJwcmludGYgJ2NkIHt9XG53cml0ZSB7fSB7fVxuJyB8IHt9IC13IHt9Ii5cCisgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KG9zLnBhdGguZGlybmFtZShkZXN0LnBhdGgpLCBzcmMsIG9zLnBhdGguYmFzZW5hbWUoc3JjKSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5kZWJ1Z2ZzLCBzZWxmLl9nZXRfcGFydF9pbWFnZShwbnVtKSkKKyAgICAgICAgICAgIGVsc2U6ICMgY29weSBmcm9tIHdpYworICAgICAgICAgICAgICAgICMgcnVuIGJvdGggZHVtcCBhbmQgcmR1bXAgdG8gc3VwcG9ydCBib3RoIGZpbGVzIGFuZCBkaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBjbWQgPSAicHJpbnRmICdjZCB7fVxuZHVtcCAve30ge31cbnJkdW1wIC97fSB7fVxuJyB8IHt9IHt9Ii5cCisgICAgICAgICAgICAgICAgICAgICAgZm9ybWF0KG9zLnBhdGguZGlybmFtZShzcmMucGF0aCksIHNyYy5wYXRoLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0LCBzcmMucGF0aCwgZGVzdCwgc2VsZi5kZWJ1Z2ZzLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLl9nZXRfcGFydF9pbWFnZShwbnVtKSkKICAgICAgICAgZWxzZTogIyBmYXQKLSAgICAgICAgICAgIGNtZCA9ICJ7fSAtaSB7fSAtc25vcCB7fSA6Ont9Ii5mb3JtYXQoc2VsZi5tY29weSwKKyAgICAgICAgICAgIGlmIGlzaW5zdGFuY2Uoc3JjLCBzdHIpOgorICAgICAgICAgICAgICAgIGNtZCA9ICJ7fSAtaSB7fSAtc25vcCB7fSA6Ont9Ii5mb3JtYXQoc2VsZi5tY29weSwKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ2V0X3BhcnRfaW1hZ2UocG51bSksCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYywgcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc3JjLCBkZXN0LnBhdGgpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIGNtZCA9ICJ7fSAtaSB7fSAtc25vcCA6Ont9IHt9Ii5mb3JtYXQoc2VsZi5tY29weSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5fZ2V0X3BhcnRfaW1hZ2UocG51bSksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHNyYy5wYXRoLCBkZXN0KQorCiAgICAgICAgIGV4ZWNfY21kKGNtZCwgYXNfc2hlbGw9VHJ1ZSkKICAgICAgICAgc2VsZi5fcHV0X3BhcnRfaW1hZ2UocG51bSkKIApAQCAtNDI0LDcgKzQ0Miw3IEBACiAgICAgICAgICAgICBvdXRmLmZsdXNoKCkKIAogICAgICAgICBkZWYgcmVhZF9wdGFibGUocGF0aCk6Ci0gICAgICAgICAgICBvdXQgPSBleGVjX2NtZCgie30gLWRKIHt9Ii5mb3JtYXQoc2VsZi5zZmRpc2ssIHBhdGgpKQorICAgICAgICAgICAgb3V0ID0gZXhlY19jbWQoInt9IC1KIHt9Ii5mb3JtYXQoc2VsZi5zZmRpc2ssIHBhdGgpKQogICAgICAgICAgICAgcmV0dXJuIGpzb24ubG9hZHMob3V0KQogCiAgICAgICAgIGRlZiB3cml0ZV9wdGFibGUocGFydHMsIHRhcmdldCk6CkBAIC01MjUsNyArNTQzLDggQEAKICAgICAgICAgICAgICAgICAgICAgICAgIGxvZ2dlci5pbmZvKCJjcmVhdGluZyBzd2FwIHBhcnRpdGlvbiB7fSIuZm9ybWF0KHBudW0pKQogICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBwYXJ0LmdldCgibmFtZSIpCiAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbF9zdHIgPSAiLUwge30iLmZvcm1hdChsYWJlbCkgaWYgbGFiZWwgZWxzZSAnJwotICAgICAgICAgICAgICAgICAgICAgICAgdXVpZCA9IHBhcnQuZ2V0KCJ1dWlkIikKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dCA9IGV4ZWNfY21kKCJ7fSAtLXByb2JlIHt9Ii5mb3JtYXQoc2VsZi5ibGtpZCwgc2VsZi5fZ2V0X3BhcnRfaW1hZ2UocG51bSkpKQorICAgICAgICAgICAgICAgICAgICAgICAgdXVpZCA9IG91dFtvdXQuaW5kZXgoIlVVSUQ9XCIiKSs2Om91dC5pbmRleCgiVVVJRD1cIiIpKzQyXQogICAgICAgICAgICAgICAgICAgICAgICAgdXVpZF9zdHIgPSAiLVUge30iLmZvcm1hdCh1dWlkKSBpZiB1dWlkIGVsc2UgJycKICAgICAgICAgICAgICAgICAgICAgICAgIHdpdGggb3BlbihwYXJ0Zm5hbWUsICd3JykgYXMgc3BhcnNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9zLmZ0cnVuY2F0ZShzcGFyc2UuZmlsZW5vKCksIHBhcnRbJ3NpemUnXSAqIHNlbGYuX2xzZWN0b3Jfc2l6ZSkKQEAgLTU1MSwxMSArNTcwLDE1IEBACiAKIGRlZiB3aWNfY3AoYXJncywgbmF0aXZlX3N5c3Jvb3QpOgogICAgICIiIgotICAgIENvcHkgbG9jYWwgZmlsZSBvciBkaXJlY3RvcnkgdG8gdGhlIHZmYXQgcGFydGl0aW9uIG9mCisgICAgQ29weSBmaWxlIG9yIGRpcmVjdG9yeSB0by9mcm9tIHRoZSB2ZmF0L2V4dCBwYXJ0aXRpb24gb2YKICAgICBwYXJ0aXRpb25lZCBpbWFnZS4KICAgICAiIiIKLSAgICBkaXNrID0gRGlzayhhcmdzLmRlc3QuaW1hZ2UsIG5hdGl2ZV9zeXNyb290KQotICAgIGRpc2suY29weShhcmdzLnNyYywgYXJncy5kZXN0LnBhcnQsIGFyZ3MuZGVzdC5wYXRoKQorICAgIGlmIGlzaW5zdGFuY2UoYXJncy5kZXN0LCBzdHIpOgorICAgICAgICBkaXNrID0gRGlzayhhcmdzLnNyYy5pbWFnZSwgbmF0aXZlX3N5c3Jvb3QpCisgICAgZWxzZToKKyAgICAgICAgZGlzayA9IERpc2soYXJncy5kZXN0LmltYWdlLCBuYXRpdmVfc3lzcm9vdCkKKyAgICBkaXNrLmNvcHkoYXJncy5zcmMsIGFyZ3MuZGVzdCkKKwogCiBkZWYgd2ljX3JtKGFyZ3MsIG5hdGl2ZV9zeXNyb290KToKICAgICAiIiIKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2hlbHAucHkgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9oZWxwLnB5CmluZGV4IDgxMmViZTMuLmJkM2EyYjkgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2hlbHAucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvaGVscC5weQpAQCAtMzQxLDEyICszNDEsMTUgQEAKIAogd2ljX2NwX3VzYWdlID0gIiIiCiAKLSBDb3B5IGZpbGVzIGFuZCBkaXJlY3RvcmllcyB0byB0aGUgdmZhdCBvciBleHQqIHBhcnRpdGlvbgorIENvcHkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvL2Zyb20gdGhlIHZmYXQgb3IgZXh0KiBwYXJ0aXRpb24KIAotIHVzYWdlOiB3aWMgY3AgPHNyYz4gPGltYWdlPjo8cGFydGl0aW9uPls8cGF0aD5dIFstLW5hdGl2ZS1zeXNyb290IDxwYXRoPl0KKyB1c2FnZTogd2ljIGNwIDxzcmM+IDxkZXN0PiBbLS1uYXRpdmUtc3lzcm9vdCA8cGF0aD5dCiAKLSBUaGlzIGNvbW1hbmQgIGNvcGllcyBsb2NhbCBmaWxlcyBvciBkaXJlY3RvcmllcyB0byB0aGUgdmZhdCBvciBleHQqIHBhcnRpdGlvbnMKLW9mIHBhcnRpdGlvbmVkICBpbWFnZS4KKyBzb3VyY2UvZGVzdGluYXRpb24gaW1hZ2UgaW4gZm9ybWF0IDxpbWFnZT46PHBhcnRpdGlvbj5bPHBhdGg+XQorCisgVGhpcyBjb21tYW5kIGNvcGllcyBmaWxlcyBvciBkaXJlY3RvcmllcyBlaXRoZXIKKyAgLSBmcm9tIGxvY2FsIHRvIHZmYXQgb3IgZXh0KiBwYXJ0aXRpb25zIG9mIHBhcnRpdGlvbmVkIGltYWdlCisgIC0gZnJvbSB2ZmF0IG9yIGV4dCogcGFydGl0aW9ucyBvZiBwYXJ0aXRpb25lZCBpbWFnZSB0byBsb2NhbAogCiAgU2VlICd3aWMgaGVscCBjcCcgZm9yIG1vcmUgZGV0YWlsZWQgaW5zdHJ1Y3Rpb25zLgogCkBAIC0zNTUsMTYgKzM1OCwxOCBAQAogd2ljX2NwX2hlbHAgPSAiIiIKIAogTkFNRQotICAgIHdpYyBjcCAtIGNvcHkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvIHRoZSB2ZmF0IG9yIGV4dCogcGFydGl0aW9ucworICAgIHdpYyBjcCAtIGNvcHkgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvL2Zyb20gdGhlIHZmYXQgb3IgZXh0KiBwYXJ0aXRpb25zCiAKIFNZTk9QU0lTCi0gICAgd2ljIGNwIDxzcmM+IDxpbWFnZT46PHBhcnRpdGlvbj4KLSAgICB3aWMgY3AgPHNyYz4gPGltYWdlPjo8cGFydGl0aW9uPjxwYXRoPgotICAgIHdpYyBjcCA8c3JjPiA8aW1hZ2U+OjxwYXJ0aXRpb24+PHBhdGg+IC0tbmF0aXZlLXN5c3Jvb3QgPHBhdGg+CisgICAgd2ljIGNwIDxzcmM+IDxkZXN0Pjo8cGFydGl0aW9uPgorICAgIHdpYyBjcCA8c3JjPjo8cGFydGl0aW9uPiA8ZGVzdD4KKyAgICB3aWMgY3AgPHNyYz4gPGRlc3QtaW1hZ2U+OjxwYXJ0aXRpb24+PHBhdGg+CisgICAgd2ljIGNwIDxzcmM+IDxkZXN0LWltYWdlPjo8cGFydGl0aW9uPjxwYXRoPiAtLW5hdGl2ZS1zeXNyb290IDxwYXRoPgogCiBERVNDUklQVElPTgotICAgIFRoaXMgY29tbWFuZCBjb3BpZXMgZmlsZXMgYW5kIGRpcmVjdG9yaWVzIHRvIHRoZSB2ZmF0IG9yIGV4dCogcGFydGl0aW9uIG9mCi0gICAgdGhlIHBhcnRpdGlvbmVkIGltYWdlLgorICAgIFRoaXMgY29tbWFuZCBjb3BpZXMgZmlsZXMgb3IgZGlyZWN0b3JpZXMgZWl0aGVyCisgICAgICAtIGZyb20gbG9jYWwgdG8gdmZhdCBvciBleHQqIHBhcnRpdGlvbnMgb2YgcGFydGl0aW9uZWQgaW1hZ2UKKyAgICAgIC0gZnJvbSB2ZmF0IG9yIGV4dCogcGFydGl0aW9ucyBvZiBwYXJ0aXRpb25lZCBpbWFnZSB0byBsb2NhbAogCiAgICAgVGhlIGZpcnN0IGZvcm0gb2YgaXQgY29waWVzIGZpbGUgb3IgZGlyZWN0b3J5IHRvIHRoZSByb290IGRpcmVjdG9yeSBvZgogICAgIHRoZSBwYXJ0aXRpb246CkBAIC0zOTcsNiArNDAyLDEwIEBACiAgICAgICAgICAgICAgICA0IGZpbGVzICAgICAgICAgICAgICAgICAgIDAgYnl0ZXMKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgMTUgNjc1IDM5MiBieXRlcyBmcmVlCiAKKyAgICBUaGUgdGhpcmQgZm9ybSBvZiB0aGUgY29tbWFuZCBjb3BpZXMgZmlsZSBvciBkaXJlY3RvcnkgZnJvbSB0aGUgc3BlY2lmaWVkIGRpcmVjdG9yeQorICAgIG9uIHRoZSBwYXJ0aXRpb24gdG8gbG9jYWw6CisgICAgICAgJCB3aWMgY3AgdG1wL2RlcGxveS9pbWFnZXMvcWVtdXg4Ni02NC9jb3JlLWltYWdlLW1pbmltYWwtcWVtdXg4Ni02NC53aWM6MS92bWxpbnV6IHRlc3QKKwogICAgIFRoZSAtbiBvcHRpb24gaXMgdXNlZCB0byBzcGVjaWZ5IHRoZSBwYXRoIHRvIHRoZSBuYXRpdmUgc3lzcm9vdAogICAgIGNvbnRhaW5pbmcgdGhlIHRvb2xzKHBhcnRlZCBhbmQgbXRvb2xzKSB0byB1c2UuCiAiIiIKQEAgLTUyNyw3ICs1MzYsOCBAQAogCiAgICAgU291cmNlIHBsdWdpbnMgY2FuIGFsc28gYmUgaW1wbGVtZW50ZWQgYW5kIGFkZGVkIGJ5IGV4dGVybmFsCiAgICAgbGF5ZXJzIC0gYW55IHBsdWdpbnMgZm91bmQgaW4gYSBzY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvCi0gICAgZGlyZWN0b3J5IGluIGFuIGV4dGVybmFsIGxheWVyIHdpbGwgYWxzbyBiZSBtYWRlIGF2YWlsYWJsZS4KKyAgICBvciBsaWIvd2ljL3BsdWdpbnMvc291cmNlLyBkaXJlY3RvcnkgaW4gYW4gZXh0ZXJuYWwgbGF5ZXIgd2lsbAorICAgIGFsc28gYmUgbWFkZSBhdmFpbGFibGUuCiAKICAgICBXaGVuIHRoZSB3aWMgaW1wbGVtZW50YXRpb24gbmVlZHMgdG8gaW52b2tlIGEgcGFydGl0aW9uLXNwZWNpZmljCiAgICAgaW1wbGVtZW50YXRpb24sIGl0IGxvb2tzIGZvciB0aGUgcGx1Z2luIHRoYXQgaGFzIHRoZSBzYW1lIG5hbWUgYXMKQEAgLTk2MCw2ICs5NzAsMjYgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICBpcyBvbWl0dGVkLCBub3QgdGhlIGRpcmVjdG9yeSBpdHNlbGYuIFRoaXMgb3B0aW9uIG9ubHkKICAgICAgICAgICAgICAgICAgICAgICAgICBoYXMgYW4gZWZmZWN0IHdpdGggdGhlIHJvb3RmcyBzb3VyY2UgcGx1Z2luLgogCisgICAgICAgICAtLWluY2x1ZGUtcGF0aDogVGhpcyBvcHRpb24gaXMgc3BlY2lmaWMgdG8gd2ljLiBJdCBhZGRzIHRoZSBjb250ZW50cworICAgICAgICAgICAgICAgICAgICAgICAgIG9mIHRoZSBnaXZlbiBwYXRoIG9yIGEgcm9vdGZzIHRvIHRoZSByZXN1bHRpbmcgaW1hZ2UuCisgICAgICAgICAgICAgICAgICAgICAgICAgVGhlIG9wdGlvbiBjb250YWlucyB0d28gZmllbGRzLCB0aGUgb3JpZ2luIGFuZCB0aGUKKyAgICAgICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbi4gV2hlbiB0aGUgb3JpZ2luIGlzIGEgcm9vdGZzLCBpdCBmb2xsb3dzCisgICAgICAgICAgICAgICAgICAgICAgICAgdGhlIHNhbWUgbG9naWMgYXMgdGhlIHJvb3Rmcy1kaXIgYXJndW1lbnQgYW5kIHRoZQorICAgICAgICAgICAgICAgICAgICAgICAgIHBlcm1pc3Npb25zIGFuZCBvd25lcnMgYXJlIGtlcHQuIFdoZW4gdGhlIG9yaWdpbiBpcyBhCisgICAgICAgICAgICAgICAgICAgICAgICAgcGF0aCwgaXQgaXMgcmVsYXRpdmUgdG8gdGhlIGRpcmVjdG9yeSBpbiB3aGljaCB3aWMgaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICBydW5uaW5nIG5vdCB0aGUgcm9vdGZzIGl0c2VsZiBzbyB1c2Ugb2YgYW4gYWJzb2x1dGUKKyAgICAgICAgICAgICAgICAgICAgICAgICBwYXRoIGlzIHJlY29tbWVuZGVkLCBhbmQgdGhlIG93bmVyIGFuZCBncm91cCBpcyBzZXQgdG8KKyAgICAgICAgICAgICAgICAgICAgICAgICByb290OnJvb3QuIElmIG5vIGRlc3RpbmF0aW9uIGlzIGdpdmVuIGl0IGlzCisgICAgICAgICAgICAgICAgICAgICAgICAgYXV0b21hdGljYWxseSBzZXQgdG8gdGhlIHJvb3Qgb2YgdGhlIHJvb3Rmcy4gVGhpcworICAgICAgICAgICAgICAgICAgICAgICAgIG9wdGlvbiBvbmx5IGhhcyBhbiBlZmZlY3Qgd2l0aCB0aGUgcm9vdGZzIHNvdXJjZQorICAgICAgICAgICAgICAgICAgICAgICAgIHBsdWdpbi4KKworICAgICAgICAgLS1jaGFuZ2UtZGlyZWN0b3J5OiBUaGlzIG9wdGlvbiBpcyBzcGVjaWZpYyB0byB3aWMuIEl0IGNoYW5nZXMgdG8gdGhlCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGdpdmVuIGRpcmVjdG9yeSBiZWZvcmUgY29weWluZyB0aGUgZmlsZXMuIFRoaXMKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3B0aW9uIGlzIHVzZWZ1bCB3aGVuIHdlIHdhbnQgdG8gc3BsaXQgYSByb290ZnMgaW4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXVsdGlwbGUgcGFydGl0aW9ucyBhbmQgd2Ugd2FudCB0byBrZWVwIHRoZSByaWdodAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwZXJtaXNzaW9ucyBhbmQgdXNlcm5hbWVzIGluIGFsbCB0aGUgcGFydGl0aW9ucy4KKwogICAgICAgICAgLS1leHRyYS1zcGFjZTogVGhpcyBvcHRpb24gaXMgc3BlY2lmaWMgdG8gd2ljLiBJdCBhZGRzIGV4dHJhCiAgICAgICAgICAgICAgICAgICAgICAgICBzcGFjZSBhZnRlciB0aGUgc3BhY2UgZmlsbGVkIGJ5IHRoZSBjb250ZW50CiAgICAgICAgICAgICAgICAgICAgICAgICBvZiB0aGUgcGFydGl0aW9uLiBUaGUgZmluYWwgc2l6ZSBjYW4gZ28KZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL2tzcGFyc2VyLnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMva3NwYXJzZXIucHkKaW5kZXggNmE2NDNiYS4uYjhiZWZlNyAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMva3NwYXJzZXIucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMva3NwYXJzZXIucHkKQEAgLTEzNyw2ICsxMzcsOCBAQAogICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgnLS1hY3RpdmUnLCBhY3Rpb249J3N0b3JlX3RydWUnKQogICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgnLS1hbGlnbicsIHR5cGU9aW50KQogICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgnLS1leGNsdWRlLXBhdGgnLCBuYXJncz0nKycpCisgICAgICAgIHBhcnQuYWRkX2FyZ3VtZW50KCctLWluY2x1ZGUtcGF0aCcsIG5hcmdzPScrJywgYWN0aW9uPSdhcHBlbmQnKQorICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgnLS1jaGFuZ2UtZGlyZWN0b3J5JykKICAgICAgICAgcGFydC5hZGRfYXJndW1lbnQoIi0tZXh0cmEtc3BhY2UiLCB0eXBlPXNpemV0eXBlKQogICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgnLS1mc29wdGlvbnMnLCBkZXN0PSdmc29wdHMnKQogICAgICAgICBwYXJ0LmFkZF9hcmd1bWVudCgnLS1mc3R5cGUnLCBkZWZhdWx0PSd2ZmF0JywKQEAgLTI0NSw2ICsyNDcsMTEgQEAKICAgICAgICAgICAgICAgICAgICAgZWxpZiBsaW5lLnN0YXJ0c3dpdGgoJ2Jvb3Rsb2FkZXInKToKICAgICAgICAgICAgICAgICAgICAgICAgIGlmIG5vdCBzZWxmLmJvb3Rsb2FkZXI6CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5ib290bG9hZGVyID0gcGFyc2VkCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgIyBDb25jYXRlbmF0ZSB0aGUgc3RyaW5ncyBzZXQgaW4gQVBQRU5ECisgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXBwZW5kX3ZhciA9IGdldF9iaXRiYWtlX3ZhcigiQVBQRU5EIikKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBpZiBhcHBlbmRfdmFyOgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmJvb3Rsb2FkZXIuYXBwZW5kID0gJyAnLmpvaW4oZmlsdGVyKE5vbmUsIFwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLmJvb3Rsb2FkZXIuYXBwZW5kLCBhcHBlbmRfdmFyKSkpCiAgICAgICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgICAgIGVyciA9ICIlczolZDogbW9yZSB0aGFuIG9uZSBib290bG9hZGVyIHNwZWNpZmllZCIgXAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChjb25mcGF0aCwgbGluZW5vKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMvbWlzYy5weSBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL21pc2MucHkKaW5kZXggMWYxOTliOS4uOTE5NzViYSAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL2xpYi93aWMvbWlzYy5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9taXNjLnB5CkBAIC00NSw3ICs0NSw4IEBACiAgICAgICAgICAgICAgICAgICAicGFydGVkIjogInBhcnRlZCIsCiAgICAgICAgICAgICAgICAgICAic2ZkaXNrIjogInV0aWwtbGludXgiLAogICAgICAgICAgICAgICAgICAgInNnZGlzayI6ICJncHRmZGlzayIsCi0gICAgICAgICAgICAgICAgICAic3lzbGludXgiOiAic3lzbGludXgiCisgICAgICAgICAgICAgICAgICAic3lzbGludXgiOiAic3lzbGludXgiLAorICAgICAgICAgICAgICAgICAgInRhciI6ICJ0YXIiCiAgICAgICAgICAgICAgICAgIH0KIAogZGVmIHJ1bnRvb2woY21kbG5fb3JfYXJncyk6CkBAIC0xMTIsNiArMTEzLDE1IEBACiAgICAgIiIiCiAgICAgcmV0dXJuIF9leGVjX2NtZChjbWRfYW5kX2FyZ3MsIGFzX3NoZWxsKVsxXQogCitkZWYgZmluZF9leGVjdXRhYmxlKGNtZCwgcGF0aHMpOgorICAgIHJlY2lwZSA9IGNtZAorICAgIGlmIHJlY2lwZSBpbiBOQVRJVkVfUkVDSVBFUzoKKyAgICAgICAgcmVjaXBlID0gIE5BVElWRV9SRUNJUEVTW3JlY2lwZV0KKyAgICBwcm92aWRlZCA9IGdldF9iaXRiYWtlX3ZhcigiQVNTVU1FX1BST1ZJREVEIikKKyAgICBpZiBwcm92aWRlZCBhbmQgIiVzLW5hdGl2ZSIgJSByZWNpcGUgaW4gcHJvdmlkZWQ6CisgICAgICAgIHJldHVybiBUcnVlCisKKyAgICByZXR1cm4gc3Bhd24uZmluZF9leGVjdXRhYmxlKGNtZCwgcGF0aHMpCiAKIGRlZiBleGVjX25hdGl2ZV9jbWQoY21kX2FuZF9hcmdzLCBuYXRpdmVfc3lzcm9vdCwgcHNldWRvPSIiKToKICAgICAiIiIKQEAgLTEzNiw3ICsxNDYsNyBAQAogICAgIGxvZ2dlci5kZWJ1ZygiZXhlY19uYXRpdmVfY21kOiAlcyIsIG5hdGl2ZV9jbWRfYW5kX2FyZ3MpCiAKICAgICAjIElmIHRoZSBjb21tYW5kIGlzbid0IGluIHRoZSBuYXRpdmUgc3lzcm9vdCBzYXkgd2UgZmFpbGVkLgotICAgIGlmIHNwYXduLmZpbmRfZXhlY3V0YWJsZShhcmdzWzBdLCBuYXRpdmVfcGF0aHMpOgorICAgIGlmIGZpbmRfZXhlY3V0YWJsZShhcmdzWzBdLCBuYXRpdmVfcGF0aHMpOgogICAgICAgICByZXQsIG91dCA9IF9leGVjX2NtZChuYXRpdmVfY21kX2FuZF9hcmdzLCBUcnVlKQogICAgIGVsc2U6CiAgICAgICAgIHJldCA9IDEyNwpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGFydGl0aW9uLnB5CmluZGV4IGQ4MDk0MDguLjdkOWRkNjEgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BhcnRpdGlvbi5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9wYXJ0aXRpb24ucHkKQEAgLTMwLDYgKzMwLDggQEAKICAgICAgICAgc2VsZi5kZXZpY2UgPSBOb25lCiAgICAgICAgIHNlbGYuZXh0cmFfc3BhY2UgPSBhcmdzLmV4dHJhX3NwYWNlCiAgICAgICAgIHNlbGYuZXhjbHVkZV9wYXRoID0gYXJncy5leGNsdWRlX3BhdGgKKyAgICAgICAgc2VsZi5pbmNsdWRlX3BhdGggPSBhcmdzLmluY2x1ZGVfcGF0aAorICAgICAgICBzZWxmLmNoYW5nZV9kaXJlY3RvcnkgPSBhcmdzLmNoYW5nZV9kaXJlY3RvcnkKICAgICAgICAgc2VsZi5mc29wdHMgPSBhcmdzLmZzb3B0cwogICAgICAgICBzZWxmLmZzdHlwZSA9IGFyZ3MuZnN0eXBlCiAgICAgICAgIHNlbGYubGFiZWwgPSBhcmdzLmxhYmVsCkBAIC0xODksNyArMTkxLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgIChzZWxmLm1vdW50cG9pbnQsIHNlbGYuc2l6ZSwgc2VsZi5maXhlZF9zaXplKSkKIAogICAgIGRlZiBwcmVwYXJlX3Jvb3RmcyhzZWxmLCBjcl93b3JrZGlyLCBvZV9idWlsZGRpciwgcm9vdGZzX2RpciwKLSAgICAgICAgICAgICAgICAgICAgICAgbmF0aXZlX3N5c3Jvb3QsIHJlYWxfcm9vdGZzID0gVHJ1ZSk6CisgICAgICAgICAgICAgICAgICAgICAgIG5hdGl2ZV9zeXNyb290LCByZWFsX3Jvb3RmcyA9IFRydWUsIHBzZXVkb19kaXIgPSBOb25lKToKICAgICAgICAgIiIiCiAgICAgICAgIFByZXBhcmUgY29udGVudCBmb3IgYSByb290ZnMgcGFydGl0aW9uIGkuZS4gY3JlYXRlIGEgcGFydGl0aW9uCiAgICAgICAgIGFuZCBmaWxsIGl0IGZyb20gYSAvcm9vdGZzIGRpci4KQEAgLTE5NywxNSArMTk5LDE0IEBACiAgICAgICAgIEN1cnJlbnRseSBoYW5kbGVzIGV4dDIvMy80LCBidHJmcywgdmZhdCBhbmQgc3F1YXNoZnMuCiAgICAgICAgICIiIgogICAgICAgICBwX3ByZWZpeCA9IG9zLmVudmlyb24uZ2V0KCJQU0VVRE9fUFJFRklYIiwgIiVzL3VzciIgJSBuYXRpdmVfc3lzcm9vdCkKLSAgICAgICAgcF9sb2NhbHN0YXRlZGlyID0gb3MuZW52aXJvbi5nZXQoIlBTRVVET19MT0NBTFNUQVRFRElSIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIiVzLy4uL3BzZXVkbyIgJSAgcm9vdGZzX2RpcikKLSAgICAgICAgcF9wYXNzd2QgPSBvcy5lbnZpcm9uLmdldCgiUFNFVURPX1BBU1NXRCIsIHJvb3Rmc19kaXIpCi0gICAgICAgIHBfbm9zeW1saW5rZXhwID0gb3MuZW52aXJvbi5nZXQoIlBTRVVET19OT1NZTUxJTktFWFAiLCAiMSIpCi0gICAgICAgIHBzZXVkbyA9ICJleHBvcnQgUFNFVURPX1BSRUZJWD0lczsiICUgcF9wcmVmaXgKLSAgICAgICAgcHNldWRvICs9ICJleHBvcnQgUFNFVURPX0xPQ0FMU1RBVEVESVI9JXM7IiAlIHBfbG9jYWxzdGF0ZWRpcgotICAgICAgICBwc2V1ZG8gKz0gImV4cG9ydCBQU0VVRE9fUEFTU1dEPSVzOyIgJSBwX3Bhc3N3ZAotICAgICAgICBwc2V1ZG8gKz0gImV4cG9ydCBQU0VVRE9fTk9TWU1MSU5LRVhQPSVzOyIgJSBwX25vc3ltbGlua2V4cAotICAgICAgICBwc2V1ZG8gKz0gIiVzICIgJSBnZXRfYml0YmFrZV92YXIoIkZBS0VST09UQ01EIikKKyAgICAgICAgaWYgKHBzZXVkb19kaXIpOgorICAgICAgICAgICAgcHNldWRvID0gImV4cG9ydCBQU0VVRE9fUFJFRklYPSVzOyIgJSBwX3ByZWZpeAorICAgICAgICAgICAgcHNldWRvICs9ICJleHBvcnQgUFNFVURPX0xPQ0FMU1RBVEVESVI9JXM7IiAlIHBzZXVkb19kaXIKKyAgICAgICAgICAgIHBzZXVkbyArPSAiZXhwb3J0IFBTRVVET19QQVNTV0Q9JXM7IiAlIHJvb3Rmc19kaXIKKyAgICAgICAgICAgIHBzZXVkbyArPSAiZXhwb3J0IFBTRVVET19OT1NZTUxJTktFWFA9MTsiCisgICAgICAgICAgICBwc2V1ZG8gKz0gIiVzICIgJSBnZXRfYml0YmFrZV92YXIoIkZBS0VST09UQ01EIikKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHBzZXVkbyA9IE5vbmUKIAogICAgICAgICByb290ZnMgPSAiJXMvcm9vdGZzXyVzLiVzLiVzIiAlIChjcl93b3JrZGlyLCBzZWxmLmxhYmVsLAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmxpbmVubywgc2VsZi5mc3R5cGUpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5iYXNlLnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2luYmFzZS5weQppbmRleCBmNzRkNjQzLi5kOWI0ZTU3IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5iYXNlLnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbmJhc2UucHkKQEAgLTE4LDcgKzE4LDcgQEAKIAogUExVR0lOX1RZUEVTID0gWyJpbWFnZXIiLCAic291cmNlIl0KIAotU0NSSVBUU19QTFVHSU5fRElSID0gInNjcmlwdHMvbGliL3dpYy9wbHVnaW5zIgorU0NSSVBUU19QTFVHSU5fRElSID0gWyJzY3JpcHRzL2xpYi93aWMvcGx1Z2lucyIsICJsaWIvd2ljL3BsdWdpbnMiXQogCiBsb2dnZXIgPSBsb2dnaW5nLmdldExvZ2dlcignd2ljJykKIApAQCAtMzgsMTAgKzM4LDExIEBACiAgICAgICAgICAgICBjbHMuX3BsdWdpbl9kaXJzID0gW29zLnBhdGguam9pbihvcy5wYXRoLmRpcm5hbWUoX19maWxlX18pLCAncGx1Z2lucycpXQogICAgICAgICAgICAgbGF5ZXJzID0gZ2V0X2JpdGJha2VfdmFyKCJCQkxBWUVSUyIpIG9yICcnCiAgICAgICAgICAgICBmb3IgbGF5ZXJfcGF0aCBpbiBsYXllcnMuc3BsaXQoKToKLSAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5qb2luKGxheWVyX3BhdGgsIFNDUklQVFNfUExVR0lOX0RJUikKLSAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5hYnNwYXRoKG9zLnBhdGguZXhwYW5kdXNlcihwYXRoKSkKLSAgICAgICAgICAgICAgICBpZiBwYXRoIG5vdCBpbiBjbHMuX3BsdWdpbl9kaXJzIGFuZCBvcy5wYXRoLmlzZGlyKHBhdGgpOgotICAgICAgICAgICAgICAgICAgICBjbHMuX3BsdWdpbl9kaXJzLmluc2VydCgwLCBwYXRoKQorICAgICAgICAgICAgICAgIGZvciBzY3JpcHRfcGx1Z2luX2RpciBpbiBTQ1JJUFRTX1BMVUdJTl9ESVI6CisgICAgICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmpvaW4obGF5ZXJfcGF0aCwgc2NyaXB0X3BsdWdpbl9kaXIpCisgICAgICAgICAgICAgICAgICAgIHBhdGggPSBvcy5wYXRoLmFic3BhdGgob3MucGF0aC5leHBhbmR1c2VyKHBhdGgpKQorICAgICAgICAgICAgICAgICAgICBpZiBwYXRoIG5vdCBpbiBjbHMuX3BsdWdpbl9kaXJzIGFuZCBvcy5wYXRoLmlzZGlyKHBhdGgpOgorICAgICAgICAgICAgICAgICAgICAgICAgY2xzLl9wbHVnaW5fZGlycy5pbnNlcnQoMCwgcGF0aCkKIAogICAgICAgICBpZiBwdHlwZSBub3QgaW4gUExVR0lOUzoKICAgICAgICAgICAgICMgbG9hZCBhbGwgcHR5cGUgcGx1Z2lucwpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9pbWFnZXIvZGlyZWN0LnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9pbWFnZXIvZGlyZWN0LnB5CmluZGV4IDI0NDFjYzMuLjJkMDZjMjQgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvaW1hZ2VyL2RpcmVjdC5weQorKysgYi9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL2ltYWdlci9kaXJlY3QucHkKQEAgLTQwMyw3ICs0MDMsNyBAQAogICAgICAgICAgICAgICAgICMgUmVzZXJ2ZSBhIHNlY3RvciBmb3IgRUJSIGZvciBldmVyeSBsb2dpY2FsIHBhcnRpdGlvbgogICAgICAgICAgICAgICAgICMgYmVmb3JlIGFsaWdubWVudCBpcyBwZXJmb3JtZWQuCiAgICAgICAgICAgICAgICAgaWYgcGFydC50eXBlID09ICdsb2dpY2FsJzoKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5vZmZzZXQgKz0gMQorICAgICAgICAgICAgICAgICAgICBzZWxmLm9mZnNldCArPSAyCiAKICAgICAgICAgICAgIGFsaWduX3NlY3RvcnMgPSAwCiAgICAgICAgICAgICBpZiBwYXJ0LmFsaWduOgpAQCAtNDQ2LDcgKzQ0Niw3IEBACiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4dGVuZGVkcGFydCA9IHBhcnQubnVtCiAgICAgICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4dGVuZGVkX3NpemVfc2VjICs9IGFsaWduX3NlY3RvcnMKLSAgICAgICAgICAgICAgICAgICAgc2VsZi5leHRlbmRlZF9zaXplX3NlYyArPSBwYXJ0LnNpemVfc2VjICsgMQorICAgICAgICAgICAgICAgICAgICBzZWxmLmV4dGVuZGVkX3NpemVfc2VjICs9IHBhcnQuc2l6ZV9zZWMgKyAyCiAgICAgICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgc2VsZi5wcmltYXJ5X3BhcnRfbnVtICs9IDEKICAgICAgICAgICAgICAgICAgICAgcGFydC5udW0gPSBzZWxmLnByaW1hcnlfcGFydF9udW0KQEAgLTUxMiw3ICs1MTIsNyBAQAogICAgICAgICAgICAgICAgICMgYWRkIGEgc2VjdG9yIGF0IHRoZSBiYWNrLCBzbyB0aGF0IHRoZXJlIGlzIGVub3VnaAogICAgICAgICAgICAgICAgICMgcm9vbSBmb3IgYWxsIGxvZ2ljYWwgcGFydGl0aW9ucy4KICAgICAgICAgICAgICAgICBzZWxmLl9jcmVhdGVfcGFydGl0aW9uKHNlbGYucGF0aCwgImV4dGVuZGVkIiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIE5vbmUsIHBhcnQuc3RhcnQgLSAxLAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgTm9uZSwgcGFydC5zdGFydCAtIDIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBzZWxmLmV4dGVuZGVkX3NpemVfc2VjKQogCiAgICAgICAgICAgICBpZiBwYXJ0LmZzdHlwZSA9PSAic3dhcCI6CkBAIC01ODAsOSArNTgwLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgc2VsZi5uYXRpdmVfc3lzcm9vdCkKIAogICAgIGRlZiBjbGVhbnVwKHNlbGYpOgotICAgICAgICAjIHJlbW92ZSBwYXJ0aXRpb24gaW1hZ2VzCi0gICAgICAgIGZvciBpbWFnZSBpbiBzZXQoc2VsZi5wYXJ0aW1hZ2VzKToKLSAgICAgICAgICAgIG9zLnJlbW92ZShpbWFnZSkKKyAgICAgICAgcGFzcwogCiAgICAgZGVmIGFzc2VtYmxlKHNlbGYpOgogICAgICAgICBsb2dnZXIuZGVidWcoIkluc3RhbGxpbmcgcGFydGl0aW9ucyIpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9yYXdjb3B5LnB5IGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2UvcmF3Y29weS5weQppbmRleCA4Mjk3MGNlLi4zYzQ5OTdkIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9yYXdjb3B5LnB5CisrKyBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL3Jhd2NvcHkucHkKQEAgLTU3LDcgKzU3LDcgQEAKICAgICAgICAgICAgIHJhaXNlIFdpY0Vycm9yKCJObyBmaWxlIHNwZWNpZmllZCIpCiAKICAgICAgICAgc3JjID0gb3MucGF0aC5qb2luKGtlcm5lbF9kaXIsIHNvdXJjZV9wYXJhbXNbJ2ZpbGUnXSkKLSAgICAgICAgZHN0ID0gb3MucGF0aC5qb2luKGNyX3dvcmtkaXIsICIlcy4lcyIgJSAoc291cmNlX3BhcmFtc1snZmlsZSddLCBwYXJ0LmxpbmVubykpCisgICAgICAgIGRzdCA9IG9zLnBhdGguam9pbihjcl93b3JrZGlyLCAiJXMuJXMiICUgKG9zLnBhdGguYmFzZW5hbWUoc291cmNlX3BhcmFtc1snZmlsZSddKSwgcGFydC5saW5lbm8pKQogCiAgICAgICAgIGlmIG5vdCBvcy5wYXRoLmV4aXN0cyhvcy5wYXRoLmRpcm5hbWUoZHN0KSk6CiAgICAgICAgICAgICBvcy5tYWtlZGlycyhvcy5wYXRoLmRpcm5hbWUoZHN0KSkKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL3Jvb3Rmcy5weSBiL3Bva3kvc2NyaXB0cy9saWIvd2ljL3BsdWdpbnMvc291cmNlL3Jvb3Rmcy5weQppbmRleCBlMjZlOTViLi5mMWRiODNmIDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvbGliL3dpYy9wbHVnaW5zL3NvdXJjZS9yb290ZnMucHkKKysrIGIvcG9reS9zY3JpcHRzL2xpYi93aWMvcGx1Z2lucy9zb3VyY2Uvcm9vdGZzLnB5CkBAIC0xNywxMCArMTcsMTEgQEAKIGltcG9ydCBzeXMKIAogZnJvbSBvZS5wYXRoIGltcG9ydCBjb3B5aGFyZGxpbmt0cmVlCitmcm9tIHBhdGhsaWIgaW1wb3J0IFBhdGgKIAogZnJvbSB3aWMgaW1wb3J0IFdpY0Vycm9yCiBmcm9tIHdpYy5wbHVnaW5iYXNlIGltcG9ydCBTb3VyY2VQbHVnaW4KLWZyb20gd2ljLm1pc2MgaW1wb3J0IGdldF9iaXRiYWtlX3ZhcgorZnJvbSB3aWMubWlzYyBpbXBvcnQgZ2V0X2JpdGJha2VfdmFyLCBleGVjX25hdGl2ZV9jbWQKIAogbG9nZ2VyID0gbG9nZ2luZy5nZXRMb2dnZXIoJ3dpYycpCiAKQEAgLTMyLDYgKzMzLDIyIEBACiAgICAgbmFtZSA9ICdyb290ZnMnCiAKICAgICBAc3RhdGljbWV0aG9kCisgICAgZGVmIF9fdmFsaWRhdGVfcGF0aChjbWQsIHJvb3Rmc19kaXIsIHBhdGgpOgorICAgICAgICBpZiBvcy5wYXRoLmlzYWJzKHBhdGgpOgorICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCIlczogTXVzdCBiZSByZWxhdGl2ZTogJXMiICUgKGNtZCwgb3JpZ19wYXRoKSkKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCisKKyAgICAgICAgIyBEaXNhbGxvdyBjbGltYmluZyBvdXRzaWRlIG9mIHBhcmVudCBkaXJlY3RvcnkgdXNpbmcgJy4uJywKKyAgICAgICAgIyBiZWNhdXNlIGRvaW5nIHNvIGNvdWxkIGJlIHF1aXRlIGRpc2FzdHJvdXMgKHdlIHdpbGwgZGVsZXRlIHRoZQorICAgICAgICAjIGRpcmVjdG9yeSwgb3IgbW9kaWZ5IGEgZGlyZWN0b3J5IG91dHNpZGUgT3BlbkVtYmVkZGVkKS4KKyAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmpvaW4ocm9vdGZzX2RpciwgcGF0aCkpCisgICAgICAgIGlmIG5vdCBmdWxsX3BhdGguc3RhcnRzd2l0aChvcy5wYXRoLnJlYWxwYXRoKHJvb3Rmc19kaXIpKToKKyAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiJXM6IE11c3QgcG9pbnQgaW5zaWRlIHRoZSByb290ZnM6IiAlIChjbWQsIHBhdGgpKQorICAgICAgICAgICAgc3lzLmV4aXQoMSkKKworICAgICAgICByZXR1cm4gZnVsbF9wYXRoCisKKyAgICBAc3RhdGljbWV0aG9kCiAgICAgZGVmIF9fZ2V0X3Jvb3Rmc19kaXIocm9vdGZzX2Rpcik6CiAgICAgICAgIGlmIG9zLnBhdGguaXNkaXIocm9vdGZzX2Rpcik6CiAgICAgICAgICAgICByZXR1cm4gb3MucGF0aC5yZWFscGF0aChyb290ZnNfZGlyKQpAQCAtNDQsNiArNjEsMTUgQEAKIAogICAgICAgICByZXR1cm4gb3MucGF0aC5yZWFscGF0aChpbWFnZV9yb290ZnNfZGlyKQogCisgICAgQHN0YXRpY21ldGhvZAorICAgIGRlZiBfX2dldF9wc2V1ZG8obmF0aXZlX3N5c3Jvb3QsIHJvb3RmcywgcHNldWRvX2Rpcik6CisgICAgICAgIHBzZXVkbyA9ICJleHBvcnQgUFNFVURPX1BSRUZJWD0lcy91c3I7IiAlIG5hdGl2ZV9zeXNyb290CisgICAgICAgIHBzZXVkbyArPSAiZXhwb3J0IFBTRVVET19MT0NBTFNUQVRFRElSPSVzOyIgJSBwc2V1ZG9fZGlyCisgICAgICAgIHBzZXVkbyArPSAiZXhwb3J0IFBTRVVET19QQVNTV0Q9JXM7IiAlIHJvb3RmcworICAgICAgICBwc2V1ZG8gKz0gImV4cG9ydCBQU0VVRE9fTk9TWU1MSU5LRVhQPTE7IgorICAgICAgICBwc2V1ZG8gKz0gIiVzICIgJSBnZXRfYml0YmFrZV92YXIoIkZBS0VST09UQ01EIikKKyAgICAgICAgcmV0dXJuIHBzZXVkbworCiAgICAgQGNsYXNzbWV0aG9kCiAgICAgZGVmIGRvX3ByZXBhcmVfcGFydGl0aW9uKGNscywgcGFydCwgc291cmNlX3BhcmFtcywgY3IsIGNyX3dvcmtkaXIsCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG9lX2J1aWxkZGlyLCBib290aW1nX2Rpciwga2VybmVsX2RpciwKQEAgLTY4LDEwICs5NCwxNiBAQAogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJpdCBpcyBub3QgYSB2YWxpZCBwYXRoLCBleGl0aW5nIiAlIHBhcnQucm9vdGZzX2RpcikKIAogICAgICAgICBwYXJ0LnJvb3Rmc19kaXIgPSBjbHMuX19nZXRfcm9vdGZzX2Rpcihyb290ZnNfZGlyKQorICAgICAgICBwc2V1ZG9fZGlyID0gb3MucGF0aC5qb2luKHBhcnQucm9vdGZzX2RpciwgIi4uL3BzZXVkbyIpCisgICAgICAgIGlmIG5vdCBvcy5wYXRoLmxleGlzdHMocHNldWRvX2Rpcik6CisgICAgICAgICAgICBsb2dnZXIud2FybigiJXMgZm9sZGVyIGRvZXMgbm90IGV4aXN0LiAiCisgICAgICAgICAgICAgICAgICAgICAgICAiVXNlcm5hbWVzIGFuZCBwZXJtaXNzaW9ucyB3aWxsIGJlIGludmFsaWQgIiAlIHBzZXVkb19kaXIpCisgICAgICAgICAgICBwc2V1ZG9fZGlyID0gTm9uZQogCiAgICAgICAgIG5ld19yb290ZnMgPSBOb25lCisgICAgICAgIG5ld19wc2V1ZG8gPSBOb25lCiAgICAgICAgICMgSGFuZGxlIGV4Y2x1ZGVkIHBhdGhzLgotICAgICAgICBpZiBwYXJ0LmV4Y2x1ZGVfcGF0aCBpcyBub3QgTm9uZToKKyAgICAgICAgaWYgcGFydC5leGNsdWRlX3BhdGggb3IgcGFydC5pbmNsdWRlX3BhdGggb3IgcGFydC5jaGFuZ2VfZGlyZWN0b3J5OgogICAgICAgICAgICAgIyBXZSBuZWVkIGEgbmV3IHJvb3RmcyBkaXJlY3Rvcnkgd2UgY2FuIGRlbGV0ZSBmaWxlcyBmcm9tLiBDb3B5IHRvCiAgICAgICAgICAgICAjIHdvcmtkaXIuCiAgICAgICAgICAgICBuZXdfcm9vdGZzID0gb3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmpvaW4oY3Jfd29ya2RpciwgInJvb3RmcyVkIiAlIHBhcnQubGluZW5vKSkKQEAgLTc5LDIyICsxMTEsOTMgQEAKICAgICAgICAgICAgIGlmIG9zLnBhdGgubGV4aXN0cyhuZXdfcm9vdGZzKToKICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKG9zLnBhdGguam9pbihuZXdfcm9vdGZzKSkKIAotICAgICAgICAgICAgY29weWhhcmRsaW5rdHJlZShwYXJ0LnJvb3Rmc19kaXIsIG5ld19yb290ZnMpCisgICAgICAgICAgICBpZiBwYXJ0LmNoYW5nZV9kaXJlY3Rvcnk6CisgICAgICAgICAgICAgICAgY2QgPSBwYXJ0LmNoYW5nZV9kaXJlY3RvcnkKKyAgICAgICAgICAgICAgICBpZiBjZFstMV0gPT0gJy8nOgorICAgICAgICAgICAgICAgICAgICBjZCA9IGNkWzotMV0KKyAgICAgICAgICAgICAgICBvcmlnX2RpciA9IGNscy5fX3ZhbGlkYXRlX3BhdGgoIi0tY2hhbmdlLWRpcmVjdG9yeSIsIHBhcnQucm9vdGZzX2RpciwgY2QpCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIG9yaWdfZGlyID0gcGFydC5yb290ZnNfZGlyCisgICAgICAgICAgICBjb3B5aGFyZGxpbmt0cmVlKG9yaWdfZGlyLCBuZXdfcm9vdGZzKQogCi0gICAgICAgICAgICBmb3Igb3JpZ19wYXRoIGluIHBhcnQuZXhjbHVkZV9wYXRoOgorICAgICAgICAgICAgIyBDb252ZXJ0IHRoZSBwc2V1ZG8gZGlyZWN0b3J5IHRvIGl0cyBuZXcgbG9jYXRpb24KKyAgICAgICAgICAgIGlmIChwc2V1ZG9fZGlyKToKKyAgICAgICAgICAgICAgICBuZXdfcHNldWRvID0gb3MucGF0aC5yZWFscGF0aCgKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGNyX3dvcmtkaXIsICJwc2V1ZG8lZCIgJSBwYXJ0LmxpbmVubykpCisgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5sZXhpc3RzKG5ld19wc2V1ZG8pOgorICAgICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKG5ld19wc2V1ZG8pCisgICAgICAgICAgICAgICAgb3MubWtkaXIobmV3X3BzZXVkbykKKyAgICAgICAgICAgICAgICBzaHV0aWwuY29weShvcy5wYXRoLmpvaW4ocHNldWRvX2RpciwgImZpbGVzLmRiIiksCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKG5ld19wc2V1ZG8sICJmaWxlcy5kYiIpKQorCisgICAgICAgICAgICAgICAgcHNldWRvX2NtZCA9ICIlcyAtQiAtbSAlcyAtTSAlcyIgJSAoY2xzLl9fZ2V0X3BzZXVkbyhuYXRpdmVfc3lzcm9vdCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19yb290ZnMsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcHNldWRvKSwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBvcmlnX2RpciwgbmV3X3Jvb3RmcykKKyAgICAgICAgICAgICAgICBleGVjX25hdGl2ZV9jbWQocHNldWRvX2NtZCwgbmF0aXZlX3N5c3Jvb3QpCisKKyAgICAgICAgICAgIGZvciBpbl9wYXRoIGluIHBhcnQuaW5jbHVkZV9wYXRoIG9yIFtdOgorICAgICAgICAgICAgICAgICNwYXJzZSBhcmd1bWVudHMKKyAgICAgICAgICAgICAgICBpbmNsdWRlX3BhdGggPSBpbl9wYXRoWzBdCisgICAgICAgICAgICAgICAgaWYgbGVuKGluX3BhdGgpID4gMjoKKyAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCInSW52YWxpZCBudW1iZXIgb2YgYXJndW1lbnRzIGZvciBpbmNsdWRlLXBhdGgiKQorICAgICAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQorICAgICAgICAgICAgICAgIGlmIGxlbihpbl9wYXRoKSA9PSAyOgorICAgICAgICAgICAgICAgICAgICBwYXRoID0gaW5fcGF0aFsxXQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIHBhdGggPSBOb25lCisKKyAgICAgICAgICAgICAgICAjIFBhY2sgZmlsZXMgdG8gYmUgaW5jbHVkZWQgaW50byBhIHRhciBmaWxlLgorICAgICAgICAgICAgICAgICMgV2UgbmVlZCB0byBjcmVhdGUgYSB0YXIgZmlsZSwgYmVjYXVzZSB0aGF0IHdheSB3ZSBjYW4ga2VlcCB0aGUKKyAgICAgICAgICAgICAgICAjIHBlcm1pc3Npb25zIGZyb20gdGhlIGZpbGVzIGV2ZW4gd2hlbiB0aGV5IGJlbG9uZyB0byBkaWZmZXJlbnQKKyAgICAgICAgICAgICAgICAjIHBzZXVkbyBlbnZpcm9tZW50cy4KKyAgICAgICAgICAgICAgICAjIElmIHdlIHNpbXBseSBjb3B5IGZpbGVzIHVzaW5nIGNvcHloYXJkbGlua3RyZWUvY29weXRyZWUuLi4gdGhlCisgICAgICAgICAgICAgICAgIyBjb3BpZWQgZmlsZXMgd2lsbCBiZWxvbmcgdG8gdGhlIHVzZXIgcnVubmluZyB3aWMuCisgICAgICAgICAgICAgICAgdGFyX2ZpbGUgPSBvcy5wYXRoLnJlYWxwYXRoKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgb3MucGF0aC5qb2luKGNyX3dvcmtkaXIsICJpbmNsdWRlLXBhdGglZC50YXIiICUgcGFydC5saW5lbm8pKQorICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNmaWxlKGluY2x1ZGVfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIHBhcmVudCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKGluY2x1ZGVfcGF0aCkpCisgICAgICAgICAgICAgICAgICAgIHRhcl9jbWQgPSAidGFyIGMgLS1vd25lcj1yb290IC0tZ3JvdXA9cm9vdCAtZiAlcyAtQyAlcyAlcyIgJSAoCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHRhcl9maWxlLCBwYXJlbnQsIG9zLnBhdGgucmVscGF0aChpbmNsdWRlX3BhdGgsIHBhcmVudCkpCisgICAgICAgICAgICAgICAgICAgIGV4ZWNfbmF0aXZlX2NtZCh0YXJfY21kLCBuYXRpdmVfc3lzcm9vdCkKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBpZiBpbmNsdWRlX3BhdGggaW4ga3Jvb3Rmc19kaXI6CisgICAgICAgICAgICAgICAgICAgICAgICBpbmNsdWRlX3BhdGggPSBrcm9vdGZzX2RpcltpbmNsdWRlX3BhdGhdCisgICAgICAgICAgICAgICAgICAgIGluY2x1ZGVfcGF0aCA9IGNscy5fX2dldF9yb290ZnNfZGlyKGluY2x1ZGVfcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9wc2V1ZG8gPSBvcy5wYXRoLmpvaW4oaW5jbHVkZV9wYXRoLCAiLi4vcHNldWRvIikKKyAgICAgICAgICAgICAgICAgICAgaWYgb3MucGF0aC5sZXhpc3RzKGluY2x1ZGVfcHNldWRvKToKKyAgICAgICAgICAgICAgICAgICAgICAgIHBzZXVkbyA9IGNscy5fX2dldF9wc2V1ZG8obmF0aXZlX3N5c3Jvb3QsIGluY2x1ZGVfcGF0aCwKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW5jbHVkZV9wc2V1ZG8pCisgICAgICAgICAgICAgICAgICAgICAgICB0YXJfY21kID0gInRhciBjZiAlcyAtQyAlcyAuIiAlICh0YXJfZmlsZSwgaW5jbHVkZV9wYXRoKQorICAgICAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAgICAgcHNldWRvID0gTm9uZQorICAgICAgICAgICAgICAgICAgICAgICAgdGFyX2NtZCA9ICJ0YXIgYyAtLW93bmVyPXJvb3QgLS1ncm91cD1yb290IC1mICVzIC1DICVzIC4iICUgKAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICB0YXJfZmlsZSwgaW5jbHVkZV9wYXRoKQorICAgICAgICAgICAgICAgICAgICBleGVjX25hdGl2ZV9jbWQodGFyX2NtZCwgbmF0aXZlX3N5c3Jvb3QsIHBzZXVkbykKKworICAgICAgICAgICAgICAgICNjcmVhdGUgZGVzdGluYXRpb24KKyAgICAgICAgICAgICAgICBpZiBwYXRoOgorICAgICAgICAgICAgICAgICAgICBkZXN0aW5hdGlvbiA9IGNscy5fX3ZhbGlkYXRlX3BhdGgoIi0taW5jbHVkZS1wYXRoIiwgbmV3X3Jvb3RmcywgcGF0aCkKKyAgICAgICAgICAgICAgICAgICAgUGF0aChkZXN0aW5hdGlvbikubWtkaXIocGFyZW50cz1UcnVlLCBleGlzdF9vaz1UcnVlKQorICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgIGRlc3RpbmF0aW9uID0gbmV3X3Jvb3RmcworCisgICAgICAgICAgICAgICAgI2V4dHJhY3QgZGVzdGluYXRpb24KKyAgICAgICAgICAgICAgICB1bnRhcl9jbWQgPSAidGFyIHhmICVzIC1DICVzIiAlICh0YXJfZmlsZSwgZGVzdGluYXRpb24pCisgICAgICAgICAgICAgICAgaWYgbmV3X3BzZXVkbzoKKyAgICAgICAgICAgICAgICAgICAgcHNldWRvID0gY2xzLl9fZ2V0X3BzZXVkbyhuYXRpdmVfc3lzcm9vdCwgbmV3X3Jvb3RmcywgbmV3X3BzZXVkbykKKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICBwc2V1ZG8gPSBOb25lCisgICAgICAgICAgICAgICAgZXhlY19uYXRpdmVfY21kKHVudGFyX2NtZCwgbmF0aXZlX3N5c3Jvb3QsIHBzZXVkbykKKyAgICAgICAgICAgICAgICBvcy5yZW1vdmUodGFyX2ZpbGUpCisKKyAgICAgICAgICAgIGZvciBvcmlnX3BhdGggaW4gcGFydC5leGNsdWRlX3BhdGggb3IgW106CiAgICAgICAgICAgICAgICAgcGF0aCA9IG9yaWdfcGF0aAotICAgICAgICAgICAgICAgIGlmIG9zLnBhdGguaXNhYnMocGF0aCk6Ci0gICAgICAgICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiTXVzdCBiZSByZWxhdGl2ZTogLS1leGNsdWRlLXBhdGg9JXMiICUgb3JpZ19wYXRoKQotICAgICAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQogCi0gICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gb3MucGF0aC5yZWFscGF0aChvcy5wYXRoLmpvaW4obmV3X3Jvb3RmcywgcGF0aCkpCisgICAgICAgICAgICAgICAgZnVsbF9wYXRoID0gY2xzLl9fdmFsaWRhdGVfcGF0aCgiLS1leGNsdWRlLXBhdGgiLCBuZXdfcm9vdGZzLCBwYXRoKQogCi0gICAgICAgICAgICAgICAgIyBEaXNhbGxvdyBjbGltYmluZyBvdXRzaWRlIG9mIHBhcmVudCBkaXJlY3RvcnkgdXNpbmcgJy4uJywKLSAgICAgICAgICAgICAgICAjIGJlY2F1c2UgZG9pbmcgc28gY291bGQgYmUgcXVpdGUgZGlzYXN0cm91cyAod2Ugd2lsbCBkZWxldGUgdGhlCi0gICAgICAgICAgICAgICAgIyBkaXJlY3RvcnkpLgotICAgICAgICAgICAgICAgIGlmIG5vdCBmdWxsX3BhdGguc3RhcnRzd2l0aChuZXdfcm9vdGZzKToKLSAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCInJXMnIHBvaW50cyB0byBhIHBhdGggb3V0c2lkZSB0aGUgcm9vdGZzIiAlIG9yaWdfcGF0aCkKLSAgICAgICAgICAgICAgICAgICAgc3lzLmV4aXQoMSkKKyAgICAgICAgICAgICAgICBpZiBub3Qgb3MucGF0aC5sZXhpc3RzKGZ1bGxfcGF0aCk6CisgICAgICAgICAgICAgICAgICAgIGNvbnRpbnVlCiAKICAgICAgICAgICAgICAgICBpZiBwYXRoLmVuZHN3aXRoKG9zLnNlcCk6CiAgICAgICAgICAgICAgICAgICAgICMgRGVsZXRlIGNvbnRlbnQgb25seS4KQEAgLTEwOSw0ICsyMTIsNSBAQAogICAgICAgICAgICAgICAgICAgICBzaHV0aWwucm10cmVlKGZ1bGxfcGF0aCkKIAogICAgICAgICBwYXJ0LnByZXBhcmVfcm9vdGZzKGNyX3dvcmtkaXIsIG9lX2J1aWxkZGlyLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgIG5ld19yb290ZnMgb3IgcGFydC5yb290ZnNfZGlyLCBuYXRpdmVfc3lzcm9vdCkKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBuZXdfcm9vdGZzIG9yIHBhcnQucm9vdGZzX2RpciwgbmF0aXZlX3N5c3Jvb3QsCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgcHNldWRvX2RpciA9IG5ld19wc2V1ZG8gb3IgcHNldWRvX2RpcikKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9vZS1idWlsZC1wZXJmLXJlcG9ydCBiL3Bva3kvc2NyaXB0cy9vZS1idWlsZC1wZXJmLXJlcG9ydAppbmRleCAyMWJkZTdlLi5lNzgxZjRmIDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMvb2UtYnVpbGQtcGVyZi1yZXBvcnQKKysrIGIvcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtcmVwb3J0CkBAIC0zNzIsNyArMzcyLDcgQEAKICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjaGFydF9vcHRzPWNoYXJ0X29wdHMpKQogCiAKLWRlZiBnZXRfYnVpbGRzdGF0cyhyZXBvLCBub3Rlc19yZWYsIHJldnMsIG91dGRpcj1Ob25lKToKK2RlZiBnZXRfYnVpbGRzdGF0cyhyZXBvLCBub3Rlc19yZWYsIG5vdGVzX3JlZjIsIHJldnMsIG91dGRpcj1Ob25lKToKICAgICAiIiJHZXQgdGhlIGJ1aWxkc3RhdHMgZnJvbSBnaXQgbm90ZXMiIiIKICAgICBmdWxsX3JlZiA9ICdyZWZzL25vdGVzLycgKyBub3Rlc19yZWYKICAgICBpZiBub3QgcmVwby5yZXZfcGFyc2UoZnVsbF9yZWYpOgpAQCAtMzkxLDggKzM5MSwxMyBAQAogICAgICAgICBmb3IgdGFnIGluIHJldi50YWdzOgogICAgICAgICAgICAgbG9nLmRlYnVnKCcgICAgJXMnLCB0YWcpCiAgICAgICAgICAgICB0cnk6Ci0gICAgICAgICAgICAgICAgYnNfYWxsID0ganNvbi5sb2FkcyhyZXBvLnJ1bl9jbWQoWydub3RlcycsICctLXJlZicsIG5vdGVzX3JlZiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJ3Nob3cnLCB0YWcgKyAnXjAnXSkpCisgICAgICAgICAgICAgICAgdHJ5OgorICAgICAgICAgICAgICAgICAgICBic19hbGwgPSBqc29uLmxvYWRzKHJlcG8ucnVuX2NtZChbJ25vdGVzJywgJy0tcmVmJywgbm90ZXNfcmVmLCAnc2hvdycsIHRhZyArICdeMCddKSkKKyAgICAgICAgICAgICAgICBleGNlcHQgR2l0RXJyb3I6CisgICAgICAgICAgICAgICAgICAgIGlmIG5vdGVzX3JlZjI6CisgICAgICAgICAgICAgICAgICAgICAgICBic19hbGwgPSBqc29uLmxvYWRzKHJlcG8ucnVuX2NtZChbJ25vdGVzJywgJy0tcmVmJywgbm90ZXNfcmVmMiwgJ3Nob3cnLCB0YWcgKyAnXjAnXSkpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICByYWlzZQogICAgICAgICAgICAgZXhjZXB0IEdpdEVycm9yOgogICAgICAgICAgICAgICAgIGxvZy53YXJuaW5nKCJCdWlsZHN0YXRzIG5vdCBmb3VuZCBmb3IgJXMiLCB0YWcpCiAgICAgICAgICAgICAgICAgYnNfYWxsID0ge30KQEAgLTU4OSw5ICs1OTQsMTIgQEAKICAgICBidWlsZHN0YXRzID0gTm9uZQogICAgIGlmIGFyZ3MuZHVtcF9idWlsZHN0YXRzIG9yIGFyZ3MuaHRtbDoKICAgICAgICAgb3V0ZGlyID0gJ29lLWJ1aWxkLXBlcmYtYnVpbGRzdGF0cycgaWYgYXJncy5kdW1wX2J1aWxkc3RhdHMgZWxzZSBOb25lCi0gICAgICAgIG5vdGVzX3JlZiA9ICdidWlsZHN0YXRzL3t9L3t9L3t9Jy5mb3JtYXQoYXJncy5ob3N0bmFtZSwgYXJncy5icmFuY2gsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgYXJncy5tYWNoaW5lKQotICAgICAgICBidWlsZHN0YXRzID0gZ2V0X2J1aWxkc3RhdHMocmVwbywgbm90ZXNfcmVmLCBbcmV2X2wsIHJldl9yXSwgb3V0ZGlyKQorICAgICAgICBub3Rlc19yZWYgPSAnYnVpbGRzdGF0cy97fS97fS97fScuZm9ybWF0KGFyZ3MuaG9zdG5hbWUsIGFyZ3MuYnJhbmNoLCBhcmdzLm1hY2hpbmUpCisgICAgICAgIG5vdGVzX3JlZjIgPSBOb25lCisgICAgICAgIGlmIGFyZ3MuYnJhbmNoMjoKKyAgICAgICAgICAgIG5vdGVzX3JlZiA9ICdidWlsZHN0YXRzL3t9L3t9L3t9Jy5mb3JtYXQoYXJncy5ob3N0bmFtZSwgYXJncy5icmFuY2gyLCBhcmdzLm1hY2hpbmUpCisgICAgICAgICAgICBub3Rlc19yZWYyID0gJ2J1aWxkc3RhdHMve30ve30ve30nLmZvcm1hdChhcmdzLmhvc3RuYW1lLCBhcmdzLmJyYW5jaCwgYXJncy5tYWNoaW5lKQorICAgICAgICBidWlsZHN0YXRzID0gZ2V0X2J1aWxkc3RhdHMocmVwbywgbm90ZXNfcmVmLCBub3Rlc19yZWYyLCBbcmV2X2wsIHJldl9yXSwgb3V0ZGlyKQogCiAgICAgIyBQcmludCByZXBvcnQKICAgICBpZiBub3QgYXJncy5odG1sOgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtdGVzdCBiL3Bva3kvc2NyaXB0cy9vZS1idWlsZC1wZXJmLXRlc3QKaW5kZXggMGIxM2YyNC4uMDBlMDBiNCAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL29lLWJ1aWxkLXBlcmYtdGVzdAorKysgYi9wb2t5L3NjcmlwdHMvb2UtYnVpbGQtcGVyZi10ZXN0CkBAIC0xLDQgKzEsNCBAQAotIyEvdXNyL2Jpbi9weXRob24zCisjIS91c3IvYmluL2VudiBweXRob24zCiAjCiAjIEJ1aWxkIHBlcmZvcm1hbmNlIHRlc3Qgc2NyaXB0CiAjCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwgYi9wb2t5L3NjcmlwdHMvb2UtYnVpbGRlbnYtaW50ZXJuYWwKaW5kZXggOTZiYjBjMy4uYmEwYTliNCAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL29lLWJ1aWxkZW52LWludGVybmFsCisrKyBiL3Bva3kvc2NyaXB0cy9vZS1idWlsZGVudi1pbnRlcm5hbApAQCAtMjksMjIgKzI5LDE1IEBACiAgICAgcmV0dXJuIDEKIGZpCiAKLXB5X3YyN19jaGVjaz0kKHB5dGhvbjIgLWMgJ2ltcG9ydCBzeXM7IHByaW50IHN5cy52ZXJzaW9uX2luZm8gPj0gKDIsNywzKScpCi1pZiBbICIkcHlfdjI3X2NoZWNrIiAhPSAiVHJ1ZSIgXTsgdGhlbgotICAgIGVjaG8gPiYyICJPcGVuRW1iZWRkZWQgcmVxdWlyZXMgJ3B5dGhvbicgdG8gYmUgcHl0aG9uIHYyICg+PSAyLjcuMyksIG5vdCBweXRob24gdjMuIgotICAgIGVjaG8gPiYyICJQbGVhc2UgdXBncmFkZSB5b3VyIHB5dGhvbiB2Mi4iCi1maQotdW5zZXQgcHlfdjI3X2NoZWNrCi0KICMgV2UgcG90ZW50aWFsbHkgaGF2ZSBjb2RlIHRoYXQgZG9lc24ndCBwYXJzZSBjb3JyZWN0bHkgd2l0aCBvbGRlciB2ZXJzaW9ucyAKICMgb2YgUHl0aG9uLCBhbmQgcmF0aGVyIHRoYW4gZml4aW5nIHRoYXQgYW5kIGJlaW5nIGV0ZXJuYWxseSB2aWdpbGFudCBmb3IgCiAjIGFueSBvdGhlciBuZXcgZmVhdHVyZSB1c2UsIGp1c3QgY2hlY2sgdGhlIHZlcnNpb24gaGVyZS4KLXB5X3YzNF9jaGVjaz0kKHB5dGhvbjMgLWMgJ2ltcG9ydCBzeXM7IHByaW50KHN5cy52ZXJzaW9uX2luZm8gPj0gKDMsNCwwKSknKQotaWYgWyAiJHB5X3YzNF9jaGVjayIgIT0gIlRydWUiIF07IHRoZW4KLSAgICBlY2hvID4mMiAiQml0QmFrZSByZXF1aXJlcyBQeXRob24gMy40LjAgb3IgbGF0ZXIgYXMgJ3B5dGhvbjMnIgorcHlfdjM1X2NoZWNrPSQocHl0aG9uMyAtYyAnaW1wb3J0IHN5czsgcHJpbnQoc3lzLnZlcnNpb25faW5mbyA+PSAoMyw1LDApKScpCitpZiBbICIkcHlfdjM1X2NoZWNrIiAhPSAiVHJ1ZSIgXTsgdGhlbgorICAgIGVjaG8gPiYyICJCaXRCYWtlIHJlcXVpcmVzIFB5dGhvbiAzLjUuMCBvciBsYXRlciBhcyAncHl0aG9uMyAoc2NyaXB0cy9pbnN0YWxsLWJ1aWxkdG9vbHMgY2FuIGJlIHVzZWQgaWYgbmVlZGVkKSciCiAgICAgcmV0dXJuIDEKIGZpCi11bnNldCBweV92MzRfY2hlY2sKK3Vuc2V0IHB5X3YzNV9jaGVjawogCiBpZiBbIC16ICIkQkRJUiIgXTsgdGhlbgogICAgIGlmIFsgLXogIiQxIiBdOyB0aGVuCkBAIC0xMTMsNyArMTA2LDggQEAKIEhUVFBTX1BST1hZIGh0dHBzX3Byb3h5IEZUUF9QUk9YWSBmdHBfcHJveHkgRlRQU19QUk9YWSBmdHBzX3Byb3h5IEFMTF9QUk9YWSBcCiBhbGxfcHJveHkgTk9fUFJPWFkgbm9fcHJveHkgU1NIX0FHRU5UX1BJRCBTU0hfQVVUSF9TT0NLIEJCX1NSQ1JFVl9QT0xJQ1kgXAogU0RLTUFDSElORSBCQl9OVU1CRVJfVEhSRUFEUyBCQl9OT19ORVRXT1JLIFBBUkFMTEVMX01BS0UgR0lUX1BST1hZX0NPTU1BTkQgXAotU09DS1M1X1BBU1NXRCBTT0NLUzVfVVNFUiBTQ1JFRU5ESVIgU1RBTVBTX0RJUiBCQlBBVEhfRVhUUkEgQkJfU0VUU0NFTkVfRU5GT1JDRSIKK1NPQ0tTNV9QQVNTV0QgU09DS1M1X1VTRVIgU0NSRUVORElSIFNUQU1QU19ESVIgQkJQQVRIX0VYVFJBIEJCX1NFVFNDRU5FX0VORk9SQ0UgXAorQkJfTE9HQ09ORklHIgogCiBCQl9FTlZfRVhUUkFXSElURT0iJChlY2hvICRCQl9FTlZfRVhUUkFXSElURSAkQkJfRU5WX0VYVFJBV0hJVEVfT0UgfCB0ciAnICcgJ1xuJyB8IExDX0FMTD1DIHNvcnQgLS11bmlxdWUgfCB0ciAnXG4nICcgJykiCiAKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9vZS1wa2dkYXRhLWJyb3dzZXIgYi9wb2t5L3NjcmlwdHMvb2UtcGtnZGF0YS1icm93c2VyCm5ldyBmaWxlIG1vZGUgMTAwNzU1CmluZGV4IDAwMDAwMDAuLjhkMjIzMTgKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L3NjcmlwdHMvb2UtcGtnZGF0YS1icm93c2VyCkBAIC0wLDAgKzEsMjUzIEBACisjISAvdXNyL2Jpbi9lbnYgcHl0aG9uMworCitpbXBvcnQgb3MsIHN5cywgZW51bSwgYXN0CisKK3NjcmlwdHNfcGF0aCA9IG9zLnBhdGguZGlybmFtZShvcy5wYXRoLnJlYWxwYXRoKF9fZmlsZV9fKSkKK2xpYl9wYXRoID0gc2NyaXB0c19wYXRoICsgJy9saWInCitzeXMucGF0aCA9IHN5cy5wYXRoICsgW2xpYl9wYXRoXQorCitpbXBvcnQgc2NyaXB0cGF0aAorYml0YmFrZXBhdGggPSBzY3JpcHRwYXRoLmFkZF9iaXRiYWtlX2xpYl9wYXRoKCkKK2lmIG5vdCBiaXRiYWtlcGF0aDoKKyAgICBwcmludCgiVW5hYmxlIHRvIGZpbmQgYml0YmFrZSBieSBzZWFyY2hpbmcgcGFyZW50IGRpcmVjdG9yeSBvZiB0aGlzIHNjcmlwdCBvciBQQVRIIikKKyAgICBzeXMuZXhpdCgxKQoraW1wb3J0IGJiCisKK2ltcG9ydCBnaQorZ2kucmVxdWlyZV92ZXJzaW9uKCdHdGsnLCAnMy4wJykKK2Zyb20gZ2kucmVwb3NpdG9yeSBpbXBvcnQgR3RrLCBHZGssIEdPYmplY3QKKworUmVjaXBlQ29sdW1ucyA9IGVudW0uSW50RW51bSgiUmVjaXBlQ29sdW1ucyIsIHsiUmVjaXBlIjogMH0pCitQYWNrYWdlQ29sdW1ucyA9IGVudW0uSW50RW51bSgiUGFja2FnZUNvbHVtbnMiLCB7IlBhY2thZ2UiOiAwLCAiU2l6ZSI6IDF9KQorRmlsZUNvbHVtbnMgPSBlbnVtLkludEVudW0oIkZpbGVDb2x1bW5zIiwgeyJGaWxlbmFtZSI6IDAsICJTaXplIjogMX0pCisKK2ltcG9ydCB0aW1lCitkZWYgdGltZWl0KGYpOgorICAgIGRlZiB0aW1lZCgqYXJncywgKiprdyk6CisgICAgICAgIHRzID0gdGltZS50aW1lKCkKKyAgICAgICAgcHJpbnQgKCJmdW5jOiVyIGNhbGxpbmciICUgZi5fX25hbWVfXykKKyAgICAgICAgcmVzdWx0ID0gZigqYXJncywgKiprdykKKyAgICAgICAgdGUgPSB0aW1lLnRpbWUoKQorICAgICAgICBwcmludCAoJ2Z1bmM6JXIgYXJnczpbJXIsICVyXSB0b29rOiAlMi40ZiBzZWMnICUgXAorICAgICAgICAgIChmLl9fbmFtZV9fLCBhcmdzLCBrdywgdGUtdHMpKQorICAgICAgICByZXR1cm4gcmVzdWx0CisgICAgcmV0dXJuIHRpbWVkCisKK2RlZiBodW1hbl9zaXplKG5ieXRlcyk6CisgICAgaW1wb3J0IG1hdGgKKyAgICBzdWZmaXhlcyA9IFsnQicsICdrQicsICdNQicsICdHQicsICdUQicsICdQQiddCisgICAgaHVtYW4gPSBuYnl0ZXMKKyAgICByYW5rID0gMAorICAgIGlmIG5ieXRlcyAhPSAwOgorICAgICAgICByYW5rID0gaW50KChtYXRoLmxvZzEwKG5ieXRlcykpIC8gMykKKyAgICAgICAgcmFuayA9IG1pbihyYW5rLCBsZW4oc3VmZml4ZXMpIC0gMSkKKyAgICAgICAgaHVtYW4gPSBuYnl0ZXMgLyAoMTAwMC4wICoqIHJhbmspCisgICAgZiA9ICgnJS4yZicgJSBodW1hbikucnN0cmlwKCcwJykucnN0cmlwKCcuJykKKyAgICByZXR1cm4gJyVzICVzJyAlIChmLCBzdWZmaXhlc1tyYW5rXSkKKworZGVmIGxvYWQoZmlsZW5hbWUsIHN1ZmZpeD1Ob25lKToKKyAgICBmcm9tIGNvbmZpZ3BhcnNlciBpbXBvcnQgQ29uZmlnUGFyc2VyCisgICAgZnJvbSBpdGVydG9vbHMgaW1wb3J0IGNoYWluCisKKyAgICBwYXJzZXIgPSBDb25maWdQYXJzZXIoKQorICAgIGlmIHN1ZmZpeDoKKyAgICAgICAgcGFyc2VyLm9wdGlvbnhmb3JtID0gbGFtYmRhIG9wdGlvbjogb3B0aW9uLnJlcGxhY2UoIl8iICsgc3VmZml4LCAiIikKKyAgICB3aXRoIG9wZW4oZmlsZW5hbWUpIGFzIGxpbmVzOgorICAgICAgICBsaW5lcyA9IGNoYWluKCgiW2Zha2VdIiwpLCBsaW5lcykKKyAgICAgICAgcGFyc2VyLnJlYWRfZmlsZShsaW5lcykKKworICAgICMgVE9ETyBleHRyYWN0IHRoZSBkYXRhIGFuZCBwdXQgaXQgaW50byBhIHJlYWwgZGljdCBzbyB3ZSBjYW4gdHJhbnNmb3JtIHNvbWUKKyAgICAjIHZhbHVlcyB0byBpbnRzPworICAgIHJldHVybiBwYXJzZXJbImZha2UiXQorCitkZWYgZmluZF9wa2dkYXRhKCk6CisgICAgaW1wb3J0IHN1YnByb2Nlc3MKKyAgICBvdXRwdXQgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dCgoImJpdGJha2UiLCAiLWUiKSwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCisgICAgZm9yIGxpbmUgaW4gb3V0cHV0LnNwbGl0bGluZXMoKToKKyAgICAgICAgaWYgbGluZS5zdGFydHN3aXRoKCJQS0dEQVRBX0RJUj0iKToKKyAgICAgICAgICAgIHJldHVybiBsaW5lLnNwbGl0KCI9IiwgMSlbMV0uc3RyaXAoIlwnXCIiKQorICAgICMgVE9ETyBleGNlcHRpb24gb3Igc29tZXRoaW5nCisgICAgcmV0dXJuIE5vbmUKKworZGVmIHBhY2thZ2VzX2luX3JlY2lwZShwa2dkYXRhLCByZWNpcGUpOgorICAgICIiIgorICAgIExvYWQgdGhlIHJlY2lwZSBwa2dkYXRhIHRvIGRldGVybWluZSB0aGUgbGlzdCBvZiBydW50aW1lIHBhY2thZ2VzLgorICAgICIiIgorICAgIGRhdGEgPSBsb2FkKG9zLnBhdGguam9pbihwa2dkYXRhLCByZWNpcGUpKQorICAgIHBhY2thZ2VzID0gZGF0YVsiUEFDS0FHRVMiXS5zcGxpdCgpCisgICAgcmV0dXJuIHBhY2thZ2VzCisKK2RlZiBsb2FkX3J1bnRpbWVfcGFja2FnZShwa2dkYXRhLCBwYWNrYWdlKToKKyAgICByZXR1cm4gbG9hZChvcy5wYXRoLmpvaW4ocGtnZGF0YSwgInJ1bnRpbWUiLCBwYWNrYWdlKSwgc3VmZml4PXBhY2thZ2UpCisKK2RlZiByZWNpcGVfZnJvbV9wYWNrYWdlKHBrZ2RhdGEsIHBhY2thZ2UpOgorICAgIGRhdGEgPSBsb2FkKG9zLnBhdGguam9pbihwa2dkYXRhLCAicnVudGltZSIsIHBhY2thZ2UpLCBzdWZmaXg9cGFja2FnZSkKKyAgICByZXR1cm4gZGF0YVsiUE4iXQorCitkZWYgc3VtbWFyeShkYXRhKToKKyAgICBzID0gIiIKKyAgICBzICs9ICJ7MFtQS0ddfSB7MFtQS0dWXX0tezBbUEtHUl19XG57MFtMSUNFTlNFXX1cbnswW1NVTU1BUlldfVxuIi5mb3JtYXQoZGF0YSkKKworICAgIHJldHVybiBzCisKKworY2xhc3MgUGtnVWkoKToKKyAgICBkZWYgX19pbml0X18oc2VsZiwgcGtnZGF0YSk6CisgICAgICAgIHNlbGYucGtnZGF0YSA9IHBrZ2RhdGEKKyAgICAgICAgc2VsZi5jdXJyZW50X3JlY2lwZSA9IE5vbmUKKyAgICAgICAgc2VsZi5yZWNpcGVfaXRlcnMgPSB7fQorICAgICAgICBzZWxmLnBhY2thZ2VfaXRlcnMgPSB7fQorCisgICAgICAgIGJ1aWxkZXIgPSBHdGsuQnVpbGRlcigpCisgICAgICAgIGJ1aWxkZXIuYWRkX2Zyb21fZmlsZShvcy5wYXRoLmpvaW4ob3MucGF0aC5kaXJuYW1lKF9fZmlsZV9fKSwgIm9lLXBrZ2RhdGEtYnJvd3Nlci5nbGFkZSIpKQorCisgICAgICAgIHNlbGYud2luZG93ID0gYnVpbGRlci5nZXRfb2JqZWN0KCJ3aW5kb3ciKQorICAgICAgICBzZWxmLndpbmRvdy5jb25uZWN0KCJkZWxldGUtZXZlbnQiLCBHdGsubWFpbl9xdWl0KQorCisgICAgICAgIHNlbGYucmVjaXBlX3N0b3JlID0gYnVpbGRlci5nZXRfb2JqZWN0KCJyZWNpcGVfc3RvcmUiKQorICAgICAgICBzZWxmLnJlY2lwZV92aWV3ID0gYnVpbGRlci5nZXRfb2JqZWN0KCJyZWNpcGVfdmlldyIpCisgICAgICAgIHNlbGYucGFja2FnZV9zdG9yZSA9IGJ1aWxkZXIuZ2V0X29iamVjdCgicGFja2FnZV9zdG9yZSIpCisgICAgICAgIHNlbGYucGFja2FnZV92aWV3ID0gYnVpbGRlci5nZXRfb2JqZWN0KCJwYWNrYWdlX3ZpZXciKQorCisgICAgICAgICMgU29tZWhvdyByZXNpemFibGUgZG9lcyBub3QgZ2V0IHNldCB2aWEgYnVpbGRlciB4bWwKKyAgICAgICAgcGFja2FnZV9uYW1lX2NvbHVtbiA9IGJ1aWxkZXIuZ2V0X29iamVjdCgicGFja2FnZV9uYW1lX2NvbHVtbiIpCisgICAgICAgIHBhY2thZ2VfbmFtZV9jb2x1bW4uc2V0X3Jlc2l6YWJsZShUcnVlKQorICAgICAgICBmaWxlX25hbWVfY29sdW1uID0gYnVpbGRlci5nZXRfb2JqZWN0KCJmaWxlX25hbWVfY29sdW1uIikKKyAgICAgICAgZmlsZV9uYW1lX2NvbHVtbi5zZXRfcmVzaXphYmxlKFRydWUpCisKKyAgICAgICAgc2VsZi5yZWNpcGVfdmlldy5nZXRfc2VsZWN0aW9uKCkuY29ubmVjdCgiY2hhbmdlZCIsIHNlbGYub25fcmVjaXBlX2NoYW5nZWQpCisgICAgICAgIHNlbGYucGFja2FnZV92aWV3LmdldF9zZWxlY3Rpb24oKS5jb25uZWN0KCJjaGFuZ2VkIiwgc2VsZi5vbl9wYWNrYWdlX2NoYW5nZWQpCisKKyAgICAgICAgc2VsZi5wYWNrYWdlX3N0b3JlLnNldF9zb3J0X2NvbHVtbl9pZChQYWNrYWdlQ29sdW1ucy5QYWNrYWdlLCBHdGsuU29ydFR5cGUuQVNDRU5ESU5HKQorICAgICAgICBidWlsZGVyLmdldF9vYmplY3QoInBhY2thZ2Vfc2l6ZV9jb2x1bW4iKS5zZXRfY2VsbF9kYXRhX2Z1bmMoYnVpbGRlci5nZXRfb2JqZWN0KCJwYWNrYWdlX3NpemVfY2VsbCIpLCBsYW1iZGEgY29sdW1uLCBjZWxsLCBtb2RlbCwgaXRlciwgZGF0YTogY2VsbC5zZXRfcHJvcGVydHkoInRleHQiLCBodW1hbl9zaXplKG1vZGVsW2l0ZXJdW1BhY2thZ2VDb2x1bW5zLlNpemVdKSkpCisKKyAgICAgICAgc2VsZi5sYWJlbCA9IGJ1aWxkZXIuZ2V0X29iamVjdCgibGFiZWwxIikKKyAgICAgICAgc2VsZi5kZXBlbmRzX2xhYmVsID0gYnVpbGRlci5nZXRfb2JqZWN0KCJkZXBlbmRzX2xhYmVsIikKKyAgICAgICAgc2VsZi5yZWNvbW1lbmRzX2xhYmVsID0gYnVpbGRlci5nZXRfb2JqZWN0KCJyZWNvbW1lbmRzX2xhYmVsIikKKyAgICAgICAgc2VsZi5zdWdnZXN0c19sYWJlbCA9IGJ1aWxkZXIuZ2V0X29iamVjdCgic3VnZ2VzdHNfbGFiZWwiKQorICAgICAgICBzZWxmLnByb3ZpZGVzX2xhYmVsID0gYnVpbGRlci5nZXRfb2JqZWN0KCJwcm92aWRlc19sYWJlbCIpCisKKyAgICAgICAgc2VsZi5kZXBlbmRzX2xhYmVsLmNvbm5lY3QoImFjdGl2YXRlLWxpbmsiLCBzZWxmLm9uX2xpbmtfYWN0aXZhdGUpCisgICAgICAgIHNlbGYucmVjb21tZW5kc19sYWJlbC5jb25uZWN0KCJhY3RpdmF0ZS1saW5rIiwgc2VsZi5vbl9saW5rX2FjdGl2YXRlKQorICAgICAgICBzZWxmLnN1Z2dlc3RzX2xhYmVsLmNvbm5lY3QoImFjdGl2YXRlLWxpbmsiLCBzZWxmLm9uX2xpbmtfYWN0aXZhdGUpCisKKyAgICAgICAgc2VsZi5maWxlX3N0b3JlID0gYnVpbGRlci5nZXRfb2JqZWN0KCJmaWxlX3N0b3JlIikKKyAgICAgICAgc2VsZi5maWxlX3N0b3JlLnNldF9zb3J0X2NvbHVtbl9pZChGaWxlQ29sdW1ucy5GaWxlbmFtZSwgR3RrLlNvcnRUeXBlLkFTQ0VORElORykKKyAgICAgICAgYnVpbGRlci5nZXRfb2JqZWN0KCJmaWxlX3NpemVfY29sdW1uIikuc2V0X2NlbGxfZGF0YV9mdW5jKGJ1aWxkZXIuZ2V0X29iamVjdCgiZmlsZV9zaXplX2NlbGwiKSwgbGFtYmRhIGNvbHVtbiwgY2VsbCwgbW9kZWwsIGl0ZXIsIGRhdGE6IGNlbGwuc2V0X3Byb3BlcnR5KCJ0ZXh0IiwgaHVtYW5fc2l6ZShtb2RlbFtpdGVyXVtGaWxlQ29sdW1ucy5TaXplXSkpKQorCisgICAgICAgIHNlbGYuZmlsZXNfdmlldyA9IGJ1aWxkZXIuZ2V0X29iamVjdCgiZmlsZXNfc2Nyb2xsdmlldyIpCisgICAgICAgIHNlbGYuZmlsZXNfbGFiZWwgPSBidWlsZGVyLmdldF9vYmplY3QoImZpbGVzX2xhYmVsIikKKworICAgICAgICBzZWxmLmxvYWRfcmVjaXBlcygpCisKKyAgICAgICAgc2VsZi5yZWNpcGVfdmlldy5zZXRfY3Vyc29yKEd0ay5UcmVlUGF0aC5uZXdfZmlyc3QoKSkKKworICAgICAgICBzZWxmLndpbmRvdy5zaG93KCkKKworICAgIGRlZiBvbl9saW5rX2FjdGl2YXRlKHNlbGYsIGxhYmVsLCB1cmxfc3RyaW5nKToKKyAgICAgICAgZnJvbSB1cmxsaWIucGFyc2UgaW1wb3J0IHVybHBhcnNlCisgICAgICAgIHVybCA9IHVybHBhcnNlKHVybF9zdHJpbmcpCisgICAgICAgIGlmIHVybC5zY2hlbWUgPT0gInBhY2thZ2UiOgorICAgICAgICAgICAgcGFja2FnZSA9IHVybC5wYXRoCisgICAgICAgICAgICByZWNpcGUgPSByZWNpcGVfZnJvbV9wYWNrYWdlKHNlbGYucGtnZGF0YSwgcGFja2FnZSkKKworICAgICAgICAgICAgaXQgPSBzZWxmLnJlY2lwZV9pdGVyc1tyZWNpcGVdCisgICAgICAgICAgICBwYXRoID0gc2VsZi5yZWNpcGVfc3RvcmUuZ2V0X3BhdGgoaXQpCisgICAgICAgICAgICBzZWxmLnJlY2lwZV92aWV3LnNldF9jdXJzb3IocGF0aCkKKyAgICAgICAgICAgIHNlbGYucmVjaXBlX3ZpZXcuc2Nyb2xsX3RvX2NlbGwocGF0aCkKKworICAgICAgICAgICAgc2VsZi5vbl9yZWNpcGVfY2hhbmdlZChzZWxmLnJlY2lwZV92aWV3LmdldF9zZWxlY3Rpb24oKSkKKworICAgICAgICAgICAgaXQgPSBzZWxmLnBhY2thZ2VfaXRlcnNbcGFja2FnZV0KKyAgICAgICAgICAgIHBhdGggPSBzZWxmLnBhY2thZ2Vfc3RvcmUuZ2V0X3BhdGgoaXQpCisgICAgICAgICAgICBzZWxmLnBhY2thZ2Vfdmlldy5zZXRfY3Vyc29yKHBhdGgpCisgICAgICAgICAgICBzZWxmLnBhY2thZ2Vfdmlldy5zY3JvbGxfdG9fY2VsbChwYXRoKQorCisgICAgICAgICAgICByZXR1cm4gVHJ1ZQorICAgICAgICBlbHNlOgorICAgICAgICAgICAgcmV0dXJuIEZhbHNlCisKKyAgICBkZWYgb25fcmVjaXBlX2NoYW5nZWQoc2VsZiwgc2VsZWN0aW9uKToKKyAgICAgICAgc2VsZi5wYWNrYWdlX3N0b3JlLmNsZWFyKCkKKyAgICAgICAgc2VsZi5wYWNrYWdlX2l0ZXJzID0ge30KKworICAgICAgICAobW9kZWwsIGl0KSA9IHNlbGVjdGlvbi5nZXRfc2VsZWN0ZWQoKQorICAgICAgICBpZiBub3QgaXQ6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICByZWNpcGUgPSBtb2RlbFtpdF1bUmVjaXBlQ29sdW1ucy5SZWNpcGVdCisgICAgICAgIHBhY2thZ2VzID0gcGFja2FnZXNfaW5fcmVjaXBlKHNlbGYucGtnZGF0YSwgcmVjaXBlKQorICAgICAgICBmb3IgcGFja2FnZSBpbiBwYWNrYWdlczoKKyAgICAgICAgICAgICMgVE9ETyBhbHNvIHNob3cgUEtHIGFmdGVyIGRlYmlhbi1yZW5hbWluZz8KKyAgICAgICAgICAgIGRhdGEgPSBsb2FkX3J1bnRpbWVfcGFja2FnZShzZWxmLnBrZ2RhdGEsIHBhY2thZ2UpCisgICAgICAgICAgICAjIFRPRE8gc3Rhc2ggZGF0YSB0byBhdm9pZCByZWFkaW5nIGluIG9uX3BhY2thZ2VfY2hhbmdlZAorICAgICAgICAgICAgc2VsZi5wYWNrYWdlX2l0ZXJzW3BhY2thZ2VdID0gc2VsZi5wYWNrYWdlX3N0b3JlLmFwcGVuZChbcGFja2FnZSwgaW50KGRhdGFbIlBLR1NJWkUiXSldKQorCisgICAgICAgIHBhY2thZ2UgPSByZWNpcGUgaWYgcmVjaXBlIGluIHBhY2thZ2VzIGVsc2Ugc29ydGVkKHBhY2thZ2VzKVswXQorICAgICAgICBwYXRoID0gc2VsZi5wYWNrYWdlX3N0b3JlLmdldF9wYXRoKHNlbGYucGFja2FnZV9pdGVyc1twYWNrYWdlXSkKKyAgICAgICAgc2VsZi5wYWNrYWdlX3ZpZXcuc2V0X2N1cnNvcihwYXRoKQorICAgICAgICBzZWxmLnBhY2thZ2Vfdmlldy5zY3JvbGxfdG9fY2VsbChwYXRoKQorCisgICAgZGVmIG9uX3BhY2thZ2VfY2hhbmdlZChzZWxmLCBzZWxlY3Rpb24pOgorICAgICAgICBzZWxmLmxhYmVsLnNldF90ZXh0KCIiKQorICAgICAgICBzZWxmLmZpbGVfc3RvcmUuY2xlYXIoKQorICAgICAgICBzZWxmLmRlcGVuZHNfbGFiZWwuaGlkZSgpCisgICAgICAgIHNlbGYucmVjb21tZW5kc19sYWJlbC5oaWRlKCkKKyAgICAgICAgc2VsZi5zdWdnZXN0c19sYWJlbC5oaWRlKCkKKyAgICAgICAgc2VsZi5wcm92aWRlc19sYWJlbC5oaWRlKCkKKyAgICAgICAgc2VsZi5maWxlc192aWV3LmhpZGUoKQorICAgICAgICBzZWxmLmZpbGVzX2xhYmVsLmhpZGUoKQorCisgICAgICAgIChtb2RlbCwgaXQpID0gc2VsZWN0aW9uLmdldF9zZWxlY3RlZCgpCisgICAgICAgIGlmIGl0IGlzIE5vbmU6CisgICAgICAgICAgICByZXR1cm4KKworICAgICAgICBwYWNrYWdlID0gbW9kZWxbaXRdW1BhY2thZ2VDb2x1bW5zLlBhY2thZ2VdCisgICAgICAgIGRhdGEgPSBsb2FkX3J1bnRpbWVfcGFja2FnZShzZWxmLnBrZ2RhdGEsIHBhY2thZ2UpCisKKyAgICAgICAgc2VsZi5sYWJlbC5zZXRfdGV4dChzdW1tYXJ5KGRhdGEpKQorCisgICAgICAgIGZpbGVzID0gYXN0LmxpdGVyYWxfZXZhbChkYXRhWyJGSUxFU19JTkZPIl0pCisgICAgICAgIGlmIGZpbGVzOgorICAgICAgICAgICAgc2VsZi5maWxlc19sYWJlbC5zZXRfdGV4dCgiezB9IGZpbGVzIHRha2UgezF9LiIuZm9ybWF0KGxlbihmaWxlcyksIGh1bWFuX3NpemUoaW50KGRhdGFbIlBLR1NJWkUiXSkpKSkKKyAgICAgICAgICAgIHNlbGYuZmlsZXNfdmlldy5zaG93KCkKKyAgICAgICAgICAgIGZvciBmaWxlbmFtZSwgc2l6ZSBpbiBmaWxlcy5pdGVtcygpOgorICAgICAgICAgICAgICAgIHNlbGYuZmlsZV9zdG9yZS5hcHBlbmQoW2ZpbGVuYW1lLCBzaXplXSkKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIHNlbGYuZmlsZXNfdmlldy5oaWRlKCkKKyAgICAgICAgICAgIHNlbGYuZmlsZXNfbGFiZWwuc2V0X3RleHQoIlRoaXMgcGFja2FnZSBoYXMgbm8gZmlsZXMuIikKKyAgICAgICAgc2VsZi5maWxlc19sYWJlbC5zaG93KCkKKworICAgICAgICBkZWYgdXBkYXRlX2RlcHMoZmllbGQsIHByZWZpeCwgbGFiZWwsIGNsaWNrYWJsZT1UcnVlKToKKyAgICAgICAgICAgIGlmIGZpZWxkIGluIGRhdGE6CisgICAgICAgICAgICAgICAgbCA9IFtdCisgICAgICAgICAgICAgICAgZm9yIG5hbWUsIHZlcnNpb24gaW4gYmIudXRpbHMuZXhwbG9kZV9kZXBfdmVyc2lvbnMyKGRhdGFbZmllbGRdKS5pdGVtcygpOgorICAgICAgICAgICAgICAgICAgICBpZiBjbGlja2FibGU6CisgICAgICAgICAgICAgICAgICAgICAgICBsLmFwcGVuZCgiPGEgaHJlZj0ncGFja2FnZTp7MH0nPnswfTwvYT4gezF9Ii5mb3JtYXQobmFtZSwgIiAiLmpvaW4odmVyc2lvbikpLnN0cmlwKCkpCisgICAgICAgICAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgICAgICAgICBsLmFwcGVuZCgiezB9IHsxfSIuZm9ybWF0KG5hbWUsICIgIi5qb2luKHZlcnNpb24pKS5zdHJpcCgpKQorICAgICAgICAgICAgICAgIGxhYmVsLnNldF9tYXJrdXAocHJlZml4ICsgIiwgIi5qb2luKGwpKQorICAgICAgICAgICAgICAgIGxhYmVsLnNob3coKQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAgICBsYWJlbC5oaWRlKCkKKyAgICAgICAgdXBkYXRlX2RlcHMoIlJERVBFTkRTIiwgIkRlcGVuZHM6ICIsIHNlbGYuZGVwZW5kc19sYWJlbCkKKyAgICAgICAgdXBkYXRlX2RlcHMoIlJSRUNPTU1FTkRTIiwgIlJlY29tbWVuZHM6ICIsIHNlbGYucmVjb21tZW5kc19sYWJlbCkKKyAgICAgICAgdXBkYXRlX2RlcHMoIlJTVUdHRVNUUyIsICJTdWdnZXN0czogIiwgc2VsZi5zdWdnZXN0c19sYWJlbCkKKyAgICAgICAgdXBkYXRlX2RlcHMoIlJQUk9WSURFUyIsICJQcm92aWRlczogIiwgc2VsZi5wcm92aWRlc19sYWJlbCwgY2xpY2thYmxlPUZhbHNlKQorCisgICAgZGVmIGxvYWRfcmVjaXBlcyhzZWxmKToKKyAgICAgICAgZm9yIHJlY2lwZSBpbiBzb3J0ZWQob3MubGlzdGRpcihwa2dkYXRhKSk6CisgICAgICAgICAgICBpZiBvcy5wYXRoLmlzZmlsZShvcy5wYXRoLmpvaW4ocGtnZGF0YSwgcmVjaXBlKSk6CisgICAgICAgICAgICAgICAgc2VsZi5yZWNpcGVfaXRlcnNbcmVjaXBlXSA9IHNlbGYucmVjaXBlX3N0b3JlLmFwcGVuZChbcmVjaXBlXSkKKworaWYgX19uYW1lX18gPT0gIl9fbWFpbl9fIjoKKyAgICBpbXBvcnQgYXJncGFyc2UKKworICAgIHBhcnNlciA9IGFyZ3BhcnNlLkFyZ3VtZW50UGFyc2VyKGRlc2NyaXB0aW9uPSdwa2dkYXRhIGJyb3dzZXInKQorICAgIHBhcnNlci5hZGRfYXJndW1lbnQoJy1wJywgJy0tcGtnZGF0YScsIGhlbHA9Ik9wdGlvbmFsIGxvY2F0aW9uIG9mIHBrZ2RhdGEiKQorCisgICAgYXJncyA9IHBhcnNlci5wYXJzZV9hcmdzKCkKKyAgICBwa2dkYXRhID0gYXJncy5wa2dkYXRhIGlmIGFyZ3MucGtnZGF0YSBlbHNlIGZpbmRfcGtnZGF0YSgpCisgICAgIyBUT0RPIGFzc2VydCBwa2dkYXRhIGlzIGEgZGlyZWN0b3J5CisgICAgd2luZG93ID0gUGtnVWkocGtnZGF0YSkKKyAgICBHdGsubWFpbigpCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvb2UtcGtnZGF0YS1icm93c2VyLmdsYWRlIGIvcG9reS9zY3JpcHRzL29lLXBrZ2RhdGEtYnJvd3Nlci5nbGFkZQpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4wZDA2YzgyCi0tLSAvZGV2L251bGwKKysrIGIvcG9reS9zY3JpcHRzL29lLXBrZ2RhdGEtYnJvd3Nlci5nbGFkZQpAQCAtMCwwICsxLDMzNyBAQAorPD94bWwgdmVyc2lvbj0iMS4wIiBlbmNvZGluZz0iVVRGLTgiPz4KKzwhLS0gR2VuZXJhdGVkIHdpdGggZ2xhZGUgMy4xOC4zIC0tPgorPGludGVyZmFjZT4KKyAgPHJlcXVpcmVzIGxpYj0iZ3RrKyIgdmVyc2lvbj0iMy4xMiIvPgorICA8b2JqZWN0IGNsYXNzPSJHdGtMaXN0U3RvcmUiIGlkPSJmaWxlX3N0b3JlIj4KKyAgICA8Y29sdW1ucz4KKyAgICAgIDwhLS0gY29sdW1uLW5hbWUgRmlsZW5hbWUgLS0+CisgICAgICA8Y29sdW1uIHR5cGU9ImdjaGFyYXJyYXkiLz4KKyAgICAgIDwhLS0gY29sdW1uLW5hbWUgU2l6ZSAtLT4KKyAgICAgIDxjb2x1bW4gdHlwZT0iZ2xvbmciLz4KKyAgICA8L2NvbHVtbnM+CisgIDwvb2JqZWN0PgorICA8b2JqZWN0IGNsYXNzPSJHdGtMaXN0U3RvcmUiIGlkPSJwYWNrYWdlX3N0b3JlIj4KKyAgICA8Y29sdW1ucz4KKyAgICAgIDwhLS0gY29sdW1uLW5hbWUgUGFja2FnZSAtLT4KKyAgICAgIDxjb2x1bW4gdHlwZT0iZ2NoYXJhcnJheSIvPgorICAgICAgPCEtLSBjb2x1bW4tbmFtZSBTaXplIC0tPgorICAgICAgPGNvbHVtbiB0eXBlPSJnbG9uZyIvPgorICAgIDwvY29sdW1ucz4KKyAgPC9vYmplY3Q+CisgIDxvYmplY3QgY2xhc3M9Ikd0a0xpc3RTdG9yZSIgaWQ9InBrZ2RhdGFfc3RvcmUiPgorICAgIDxjb2x1bW5zPgorICAgICAgPCEtLSBjb2x1bW4tbmFtZSBOYW1lIC0tPgorICAgICAgPGNvbHVtbiB0eXBlPSJnY2hhcmFycmF5Ii8+CisgICAgICA8IS0tIGNvbHVtbi1uYW1lIFBhdGggLS0+CisgICAgICA8Y29sdW1uIHR5cGU9ImdjaGFyYXJyYXkiLz4KKyAgICA8L2NvbHVtbnM+CisgIDwvb2JqZWN0PgorICA8b2JqZWN0IGNsYXNzPSJHdGtMaXN0U3RvcmUiIGlkPSJyZWNpcGVfc3RvcmUiPgorICAgIDxjb2x1bW5zPgorICAgICAgPCEtLSBjb2x1bW4tbmFtZSBSZWNpcGUgLS0+CisgICAgICA8Y29sdW1uIHR5cGU9ImdjaGFyYXJyYXkiLz4KKyAgICA8L2NvbHVtbnM+CisgIDwvb2JqZWN0PgorICA8b2JqZWN0IGNsYXNzPSJHdGtXaW5kb3ciIGlkPSJ3aW5kb3ciPgorICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICA8cHJvcGVydHkgbmFtZT0idGl0bGUiIHRyYW5zbGF0YWJsZT0ieWVzIj5QYWNrYWdlIERhdGEgQnJvd3NlcjwvcHJvcGVydHk+CisgICAgPHByb3BlcnR5IG5hbWU9ImRlZmF1bHRfd2lkdGgiPjEyMDA8L3Byb3BlcnR5PgorICAgIDxwcm9wZXJ0eSBuYW1lPSJkZWZhdWx0X2hlaWdodCI+OTAwPC9wcm9wZXJ0eT4KKyAgICA8cHJvcGVydHkgbmFtZT0iaWNvbl9uYW1lIj5hY2Nlc3Nvcmllcy1kaWN0aW9uYXJ5PC9wcm9wZXJ0eT4KKyAgICA8cHJvcGVydHkgbmFtZT0iaGFzX3Jlc2l6ZV9ncmlwIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICA8Y2hpbGQ+CisgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtCb3giIGlkPSJib3gxIj4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtYXJnaW5fbGVmdCI+NDwvcHJvcGVydHk+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtYXJnaW5fcmlnaHQiPjQ8L3Byb3BlcnR5PgorICAgICAgICA8cHJvcGVydHkgbmFtZT0ibWFyZ2luX3RvcCI+NDwvcHJvcGVydHk+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtYXJnaW5fYm90dG9tIj40PC9wcm9wZXJ0eT4KKyAgICAgICAgPHByb3BlcnR5IG5hbWU9Im9yaWVudGF0aW9uIj52ZXJ0aWNhbDwvcHJvcGVydHk+CisgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzcGFjaW5nIj40PC9wcm9wZXJ0eT4KKyAgICAgICAgPGNoaWxkPgorICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0NvbWJvQm94IiBpZD0icGtnZGF0YV9jb21ibyI+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibW9kZWwiPnBrZ2RhdGFfc3RvcmU8L3Byb3BlcnR5PgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImlkX2NvbHVtbiI+MTwvcHJvcGVydHk+CisgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0NlbGxSZW5kZXJlclRleHQiIGlkPSJjZWxscmVuZGVyZXJ0ZXh0NSIvPgorICAgICAgICAgICAgICA8YXR0cmlidXRlcz4KKyAgICAgICAgICAgICAgICA8YXR0cmlidXRlIG5hbWU9InRleHQiPjA8L2F0dHJpYnV0ZT4KKyAgICAgICAgICAgICAgPC9hdHRyaWJ1dGVzPgorICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+MDwvcHJvcGVydHk+CisgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICA8L2NoaWxkPgorICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrUGFuZWQiIGlkPSJwYW5lZDEiPgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjQwMDwvcHJvcGVydHk+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb25fc2V0Ij5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrU2Nyb2xsZWRXaW5kb3ciIGlkPSJzY3JvbGxlZHdpbmRvdzEiPgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2hhZG93X3R5cGUiPmluPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibWluX2NvbnRlbnRfd2lkdGgiPjEwMDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrVHJlZVZpZXciIGlkPSJyZWNpcGVfdmlldyI+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtb2RlbCI+cmVjaXBlX3N0b3JlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNlYXJjaF9jb2x1bW4iPjA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZml4ZWRfaGVpZ2h0X21vZGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2hvd19leHBhbmRlcnMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPGNoaWxkIGludGVybmFsLWNoaWxkPSJzZWxlY3Rpb24iPgorICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1RyZWVTZWxlY3Rpb24iIGlkPSJ0cmVldmlldy1zZWxlY3Rpb24xIi8+CisgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtUcmVlVmlld0NvbHVtbiIgaWQ9InRyZWV2aWV3Y29sdW1uMSI+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2l6aW5nIj5maXhlZDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idGl0bGUiIHRyYW5zbGF0YWJsZT0ieWVzIj5SZWNpcGU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtDZWxsUmVuZGVyZXJUZXh0IiBpZD0iY2VsbHJlbmRlcmVydGV4dDEiLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0Ij4wPC9hdHRyaWJ1dGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDwvYXR0cmlidXRlcz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJlc2l6ZSI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaHJpbmsiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtQYW5lZCIgaWQ9InBhbmVkMiI+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+NDAwPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb25fc2V0Ij5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtTY3JvbGxlZFdpbmRvdyIgaWQ9InNjcm9sbGVkd2luZG93MiI+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaGFkb3dfdHlwZSI+aW48L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibWluX2NvbnRlbnRfd2lkdGgiPjEwMDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtUcmVlVmlldyIgaWQ9InBhY2thZ2VfdmlldyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtb2RlbCI+cGFja2FnZV9zdG9yZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2VhcmNoX2NvbHVtbiI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2hvd19leHBhbmRlcnMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZCBpbnRlcm5hbC1jaGlsZD0ic2VsZWN0aW9uIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrVHJlZVNlbGVjdGlvbiIgaWQ9InRyZWV2aWV3LXNlbGVjdGlvbjIiLz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1RyZWVWaWV3Q29sdW1uIiBpZD0icGFja2FnZV9uYW1lX2NvbHVtbiI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJlc2l6YWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNpemluZyI+YXV0b3NpemU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0aXRsZSIgdHJhbnNsYXRhYmxlPSJ5ZXMiPlBhY2thZ2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzb3J0X2NvbHVtbl9pZCI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQ2VsbFJlbmRlcmVyVGV4dCIgaWQ9ImNlbGxyZW5kZXJlcnRleHQyIi8+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8YXR0cmlidXRlcz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0Ij4wPC9hdHRyaWJ1dGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2F0dHJpYnV0ZXM+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtUcmVlVmlld0NvbHVtbiIgaWQ9InBhY2thZ2Vfc2l6ZV9jb2x1bW4iPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyZXNpemFibGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaXppbmciPmF1dG9zaXplPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idGl0bGUiIHRyYW5zbGF0YWJsZT0ieWVzIj5TaXplPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic29ydF9jb2x1bW5faWQiPjE8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0NlbGxSZW5kZXJlclRleHQiIGlkPSJwYWNrYWdlX3NpemVfY2VsbCIvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyZXNpemUiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNocmluayI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtCb3giIGlkPSJib3gyIj4KKyAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJtYXJnaW5fbGVmdCI+NDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJvcmllbnRhdGlvbiI+dmVydGljYWw8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic3BhY2luZyI+NDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtMYWJlbCIgaWQ9ImxhYmVsMSI+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieGFsaWduIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPmxhYmVsPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrTGFiZWwiIGlkPSJkZXBlbmRzX2xhYmVsIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4YWxpZ24iPjA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibGU9InllcyI+ZGVwZW5kc19sYWJlbDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0id3JhcCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idHJhY2tfdmlzaXRlZF9saW5rcyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj4xPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtMYWJlbCIgaWQ9InJlY29tbWVuZHNfbGFiZWwiPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InhhbGlnbiI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFiZWwiIHRyYW5zbGF0YWJsZT0ieWVzIj5yZWNzX2xhYmVsPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ3cmFwIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0cmFja192aXNpdGVkX2xpbmtzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjI8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0xhYmVsIiBpZD0ic3VnZ2VzdHNfbGFiZWwiPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InZpc2libGUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImNhbl9mb2N1cyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InhhbGlnbiI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibGFiZWwiIHRyYW5zbGF0YWJsZT0ieWVzIj5zdWdnZXN0c19sYWJlbDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0id3JhcCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idHJhY2tfdmlzaXRlZF9saW5rcyI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+RmFsc2U8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImZpbGwiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InBvc2l0aW9uIj4zPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICA8L3BhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtMYWJlbCIgaWQ9InByb3ZpZGVzX2xhYmVsIj4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJjYW5fZm9jdXMiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ4YWxpZ24iPjA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImxhYmVsIiB0cmFuc2xhdGFibGU9InllcyI+cHJvdmlkZXNfbGFiZWw8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9IndyYXAiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InRyYWNrX3Zpc2l0ZWRfbGlua3MiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgICAgICAgICA8cGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJleHBhbmQiPkZhbHNlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+NDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrTGFiZWwiIGlkPSJmaWxlc19sYWJlbCI+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ieGFsaWduIj4wPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJsYWJlbCIgdHJhbnNsYXRhYmxlPSJ5ZXMiPmZpbGVzX2xhYmVsPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJlbGxpcHNpemUiPmVuZDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1Njcm9sbGVkV2luZG93IiBpZD0iZmlsZXNfc2Nyb2xsdmlldyI+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idmlzaWJsZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJzaGFkb3dfdHlwZSI+aW48L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtUcmVlVmlldyIgaWQ9ImZpbGVzX3ZpZXciPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ2aXNpYmxlIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iY2FuX2ZvY3VzIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ibW9kZWwiPmZpbGVfc3RvcmU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJydWxlc19oaW50Ij5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2VhcmNoX2NvbHVtbiI+MDwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNob3dfZXhwYW5kZXJzIj5GYWxzZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkIGludGVybmFsLWNoaWxkPSJzZWxlY3Rpb24iPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrVHJlZVNlbGVjdGlvbiIgaWQ9InRyZWV2aWV3LXNlbGVjdGlvbjMiLz4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxjaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a1RyZWVWaWV3Q29sdW1uIiBpZD0iZmlsZV9uYW1lX2NvbHVtbiI+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJ0aXRsZSIgdHJhbnNsYXRhYmxlPSJ5ZXMiPk5hbWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic29ydF9pbmRpY2F0b3IiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic29ydF9jb2x1bW5faWQiPjA8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPG9iamVjdCBjbGFzcz0iR3RrQ2VsbFJlbmRlcmVyVGV4dCIgaWQ9ImNlbGxyZW5kZXJlcnRleHQzIj4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJiYWNrZ3JvdW5kX3JnYmEiPnJnYmEoMCwwLDAsMCk8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGVzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0Ij4wPC9hdHRyaWJ1dGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hdHRyaWJ1dGVzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICA8Y2hpbGQ+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8b2JqZWN0IGNsYXNzPSJHdGtUcmVlVmlld0NvbHVtbiIgaWQ9ImZpbGVfc2l6ZV9jb2x1bW4iPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0idGl0bGUiIHRyYW5zbGF0YWJsZT0ieWVzIj5TaXplPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNvcnRfaW5kaWNhdG9yIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNvcnRfY29sdW1uX2lkIj4xPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGNoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxvYmplY3QgY2xhc3M9Ikd0a0NlbGxSZW5kZXJlclRleHQiIGlkPSJmaWxlX3NpemVfY2VsbCIvPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIDxhdHRyaWJ1dGVzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPGF0dHJpYnV0ZSBuYW1lPSJ0ZXh0Ij4xPC9hdHRyaWJ1dGU+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9hdHRyaWJ1dGVzPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgICAgIDxwYWNraW5nPgorICAgICAgICAgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9ImV4cGFuZCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZmlsbCI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0icG9zaXRpb24iPjY8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICAgICAgPC9jaGlsZD4KKyAgICAgICAgICAgICAgICAgIDwvb2JqZWN0PgorICAgICAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJyZXNpemUiPlRydWU8L3Byb3BlcnR5PgorICAgICAgICAgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0ic2hyaW5rIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgICAgICA8L2NoaWxkPgorICAgICAgICAgICAgICA8L29iamVjdD4KKyAgICAgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InJlc2l6ZSI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgICAgPHByb3BlcnR5IG5hbWU9InNocmluayI+VHJ1ZTwvcHJvcGVydHk+CisgICAgICAgICAgICAgIDwvcGFja2luZz4KKyAgICAgICAgICAgIDwvY2hpbGQ+CisgICAgICAgICAgPC9vYmplY3Q+CisgICAgICAgICAgPHBhY2tpbmc+CisgICAgICAgICAgICA8cHJvcGVydHkgbmFtZT0iZXhwYW5kIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJmaWxsIj5UcnVlPC9wcm9wZXJ0eT4KKyAgICAgICAgICAgIDxwcm9wZXJ0eSBuYW1lPSJwb3NpdGlvbiI+MTwvcHJvcGVydHk+CisgICAgICAgICAgPC9wYWNraW5nPgorICAgICAgICA8L2NoaWxkPgorICAgICAgPC9vYmplY3Q+CisgICAgPC9jaGlsZD4KKyAgPC9vYmplY3Q+Cis8L2ludGVyZmFjZT4KZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9vZS1ydW4tbmF0aXZlIGIvcG9reS9zY3JpcHRzL29lLXJ1bi1uYXRpdmUKaW5kZXggYmVhNWQ2OS4uNGU2M2U2OSAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL29lLXJ1bi1uYXRpdmUKKysrIGIvcG9reS9zY3JpcHRzL29lLXJ1bi1uYXRpdmUKQEAgLTE2LDcgKzE2LDcgQEAKICAgICBlY2hvICdPcGVuRW1iZWRkZWQgcnVuLW5hdGl2ZSAtIHJ1bnMgbmF0aXZlIHRvb2xzJwogICAgIGVjaG8gJycKICAgICBlY2hvICdhcmd1bWVudHM6JwotICAgIGVjaG8gJyAgbmF0aXZlLXJlY2lwZSAgICAgICBUaGUgcmVjaXBlIHdoaWNoIHByb3ZvaWRlcyB0b29sJworICAgIGVjaG8gJyAgbmF0aXZlLXJlY2lwZSAgICAgICBUaGUgcmVjaXBlIHdoaWNoIHByb3ZpZGVzIHRvb2wnCiAgICAgZWNobyAnICB0b29sICAgICAgICAgICAgICAgIE5hdGl2ZSB0b29sIHRvIHJ1bicKICAgICBlY2hvICcnCiAgICAgZXhpdCAyCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZGVza3RvcF9kYXRhYmFzZSBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9kZXNrdG9wX2RhdGFiYXNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjg5MDNiNDkKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZGVza3RvcF9kYXRhYmFzZQpAQCAtMCwwICsxLDggQEAKKyMhL2Jpbi9zaAorIworIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisjCisjIFBvc3QtaW5zdGFsbCBpbnRlcmNlcHQgZm9yIG1pbWUteGRnLmJiY2xhc3MKKwordXBkYXRlLWRlc2t0b3AtZGF0YWJhc2UgJEQke2Rlc2t0b3BfZGlyfQorCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfZm9udF9jYWNoZSBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9mb250X2NhY2hlCmluZGV4IDMwNTNjNzAuLjQ2YmRiOGMgMTAwNjQ0Ci0tLSBhL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9mb250X2NhY2hlCisrKyBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9mb250X2NhY2hlCkBAIC02LDQgKzYsNiBAQAogc2V0IC1lCiAKIFBTRVVET19VTkxPQUQ9MSAke2JpbnByZWZpeH1xZW11d3JhcHBlciAtTCAkRCAtRSAke2ZvbnRjb25maWdjYWNoZWVudn0gJEQke2xpYmV4ZWNkaXJ9LyR7YmlucHJlZml4fWZjLWNhY2hlIC0tc3lzcm9vdD0kRCAtLXN5c3RlbS1vbmx5ICR7Zm9udGNvbmZpZ2NhY2hlcGFyYW1zfQorCiBjaG93biAtUiByb290OnJvb3QgJEQke2ZvbnRjb25maWdjYWNoZWRpcn0KK2ZpbmQgJEQgLXR5cGUgZiAtbmFtZSAudXVpZCAtZXhlYyBjaG93biByb290OnJvb3QgJ3t9JyArCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfbWltZV9kYXRhYmFzZSBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV9taW1lX2RhdGFiYXNlCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjU4MmQxZTEKLS0tIC9kZXYvbnVsbAorKysgYi9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfbWltZV9kYXRhYmFzZQpAQCAtMCwwICsxLDkgQEAKKyMhL2Jpbi9zaAorIworIyBTUERYLUxpY2Vuc2UtSWRlbnRpZmllcjogTUlUCisjCisjIFBvc3QtaW5zdGFsbCBpbnRlcmNlcHQgZm9yIG1pbWUuYmJjbGFzcworCitlY2hvICJVcGRhdGluZyBNSU1FIGRhdGFiYXNlLi4uIHRoaXMgbWF5IHRha2UgYSB3aGlsZS4iCit1cGRhdGUtbWltZS1kYXRhYmFzZSAkRCR7bWltZWRpcn0KKwpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX3VkZXZfaHdkYiBiL3Bva3kvc2NyaXB0cy9wb3N0aW5zdC1pbnRlcmNlcHRzL3VwZGF0ZV91ZGV2X2h3ZGIKaW5kZXggYzRmYjJiZi4uMTAyZTk5YiAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL3Bvc3RpbnN0LWludGVyY2VwdHMvdXBkYXRlX3VkZXZfaHdkYgorKysgYi9wb2t5L3NjcmlwdHMvcG9zdGluc3QtaW50ZXJjZXB0cy91cGRhdGVfdWRldl9od2RiCkBAIC01LDUgKzUsMTcgQEAKIAogc2V0IC1lCiAKLVBTRVVET19VTkxPQUQ9MSAke2JpbnByZWZpeH1xZW11d3JhcHBlciAtTCAkRCAkRCR7bGliZXhlY2Rpcn0vJHtiaW5wcmVmaXh9dWRldmFkbSBod2RiIC0tdXBkYXRlIC0tcm9vdCAkRAotY2hvd24gcm9vdDpyb290ICREJHtzeXNjb25mZGlyfS91ZGV2L2h3ZGIuYmluCitjYXNlICIke1BSRUZFUlJFRF9QUk9WSURFUl91ZGV2fSIgaW4KKwlzeXN0ZW1kKQorCQlVREVWX0VYVFJBX0FSR1M9Ii0tdXNyIgorCQlVREVWTElCRElSPSIke3Jvb3RsaWJleGVjZGlyfSIKKwkJOzsKKworCSopCisJCVVERVZfRVhUUkFfQVJHUz0iIgorCQlVREVWTElCRElSPSIke3N5c2NvbmZkaXJ9IgorCQk7OworZXNhYworCitQU0VVRE9fVU5MT0FEPTEgJHtiaW5wcmVmaXh9cWVtdXdyYXBwZXIgLUwgJEQgJEQke2xpYmV4ZWNkaXJ9LyR7YmlucHJlZml4fXVkZXZhZG0gaHdkYiAtLXVwZGF0ZSAtLXJvb3QgJEQgJHtVREVWX0VYVFJBX0FSR1N9CitjaG93biByb290OnJvb3QgJEQke1VERVZMSUJESVJ9L3VkZXYvaHdkYi5iaW4KZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9weWJvb3RjaGFydGd1aS9weWJvb3RjaGFydGd1aS9kcmF3LnB5IGIvcG9reS9zY3JpcHRzL3B5Ym9vdGNoYXJ0Z3VpL3B5Ym9vdGNoYXJ0Z3VpL2RyYXcucHkKaW5kZXggYWRkNWM1My4uNTMzMjRiOSAxMDA2NDQKLS0tIGEvcG9reS9zY3JpcHRzL3B5Ym9vdGNoYXJ0Z3VpL3B5Ym9vdGNoYXJ0Z3VpL2RyYXcucHkKKysrIGIvcG9reS9zY3JpcHRzL3B5Ym9vdGNoYXJ0Z3VpL3B5Ym9vdGNoYXJ0Z3VpL2RyYXcucHkKQEAgLTMwOCw3ICszMDgsNyBAQAogcHJvY19oID0gMTYgIyB0aGUgaGVpZ2h0IG9mIGEgcHJvY2VzcwogbGVnX3MgPSAxMAogTUlOX0lNR19XID0gODAwCi1DVU1MX0hFSUdIVCA9IDIwMDAgIyBJbmNyZWFzZWQgdmFsdWUgdG8gYWNjb21vZGF0ZSBDUFUgYW5kIEkvTyBHcmFwaHMKK0NVTUxfSEVJR0hUID0gMjAwMCAjIEluY3JlYXNlZCB2YWx1ZSB0byBhY2NvbW1vZGF0ZSBDUFUgYW5kIEkvTyBHcmFwaHMKIE9QVElPTlMgPSBOb25lCiAKIGRlZiBleHRlbnRzKG9wdGlvbnMsIHhzY2FsZSwgdHJhY2UpOgpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3B5Ym9vdGNoYXJ0Z3VpL3B5Ym9vdGNoYXJ0Z3VpL3BhcnNpbmcucHkgYi9wb2t5L3NjcmlwdHMvcHlib290Y2hhcnRndWkvcHlib290Y2hhcnRndWkvcGFyc2luZy5weQppbmRleCBlZjJkM2QzLi5iNDJkYWM2IDEwMDY0NAotLS0gYS9wb2t5L3NjcmlwdHMvcHlib290Y2hhcnRndWkvcHlib290Y2hhcnRndWkvcGFyc2luZy5weQorKysgYi9wb2t5L3NjcmlwdHMvcHlib290Y2hhcnRndWkvcHlib290Y2hhcnRndWkvcGFyc2luZy5weQpAQCAtMTgsNyArMTgsNyBAQAogaW1wb3J0IHJlCiBpbXBvcnQgc3lzCiBpbXBvcnQgdGFyZmlsZQotZnJvbSB0aW1lIGltcG9ydCBjbG9jaworaW1wb3J0IHRpbWUKIGZyb20gY29sbGVjdGlvbnMgaW1wb3J0IGRlZmF1bHRkaWN0CiBmcm9tIGZ1bmN0b29scyBpbXBvcnQgcmVkdWNlCiAKQEAgLTcyMyw3ICs3MjMsNyBAQAogCiBkZWYgX2RvX3BhcnNlKHdyaXRlciwgc3RhdGUsIGZpbGVuYW1lLCBmaWxlKToKICAgICB3cml0ZXIuaW5mbygicGFyc2luZyAnJXMnIiAlIGZpbGVuYW1lKQotICAgIHQxID0gY2xvY2soKQorICAgIHQxID0gdGltZS5wcm9jZXNzX3RpbWUoKQogICAgIG5hbWUgPSBvcy5wYXRoLmJhc2VuYW1lKGZpbGVuYW1lKQogICAgIGlmIG5hbWUgPT0gInByb2NfZGlza3N0YXRzLmxvZyI6CiAgICAgICAgIHN0YXRlLmRpc2tfc3RhdHMgPSBfcGFyc2VfcHJvY19kaXNrX3N0YXRfbG9nKGZpbGUpCkBAIC03NDMsNyArNzQzLDcgQEAKICAgICAgICAgc3RhdGUubW9uaXRvcl9kaXNrID0gX3BhcnNlX21vbml0b3JfZGlza19sb2coZmlsZSkKICAgICBlbGlmIG5vdCBmaWxlbmFtZS5lbmRzd2l0aCgnLmxvZycpOgogICAgICAgICBfcGFyc2VfYml0YmFrZV9idWlsZHN0YXRzKHdyaXRlciwgc3RhdGUsIGZpbGVuYW1lLCBmaWxlKQotICAgIHQyID0gY2xvY2soKQorICAgIHQyID0gdGltZS5wcm9jZXNzX3RpbWUoKQogICAgIHdyaXRlci5pbmZvKCIgICVzIHNlY29uZHMiICUgc3RyKHQyLXQxKSkKICAgICByZXR1cm4gc3RhdGUKIApkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3JwbTJjcGlvLnNoIGIvcG9reS9zY3JpcHRzL3JwbTJjcGlvLnNoCmluZGV4IDg3NmM1M2MuLjdjZDc3MWIgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy9ycG0yY3Bpby5zaAorKysgYi9wb2t5L3NjcmlwdHMvcnBtMmNwaW8uc2gKQEAgLTIyLDcgKzIyLDggQEAKIAogCWk9MAogCXdoaWxlIFsgJGkgLWx0IDggXTsgZG8KLQkJYj0iJChfZGQgJCgoJG9mZnNldCArICRpKSkgYnM9MSBjb3VudD0xKSIKKyAJCWI9JChfZGQgJCgoJG9mZnNldCArICRpKSkgYnM9MSBjb3VudD0xOyBlY2hvIFgpCisgCQliPSR7YiVYfQogCQlbIC16ICIkYiIgXSAmJgogCQkJYj0iMCIgfHwKIAkJCWI9IiQoZXhlYyBwcmludGYgJyV1XG4nICInJGIiKSIKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9ydW5xZW11IGIvcG9reS9zY3JpcHRzL3J1bnFlbXUKaW5kZXggNWM1NmMzZi4uMzEwZDc5ZiAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL3J1bnFlbXUKKysrIGIvcG9reS9zY3JpcHRzL3J1bnFlbXUKQEAgLTEzNSw2ICsxMzUsNyBAQAogICAgICAgICAgICAgICAgICAgICAgICAgJ0RFUExPWV9ESVJfSU1BR0UnLAogICAgICAgICAgICAgICAgICAgICAgICAgJ09FX1RNUERJUicsCiAgICAgICAgICAgICAgICAgICAgICAgICAnT0VDT1JFX05BVElWRV9TWVNST09UJywKKyAgICAgICAgICAgICAgICAgICAgICAgICdNVUxUSUNPTkZJRycsCiAgICAgICAgICAgICAgICAgICAgICAgICApCiAKICAgICAgICAgc2VsZi5xZW11X29wdCA9ICcnCkBAIC0xNjQsNiArMTY1LDcgQEAKICAgICAgICAgc2VsZi5rdm1fZW5hYmxlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYudmhvc3RfZW5hYmxlZCA9IEZhbHNlCiAgICAgICAgIHNlbGYuc2xpcnBfZW5hYmxlZCA9IEZhbHNlCisgICAgICAgIHNlbGYubmV0X2JyaWRnZSA9IE5vbmUKICAgICAgICAgc2VsZi5uZnNfaW5zdGFuY2UgPSAwCiAgICAgICAgIHNlbGYubmZzX3J1bm5pbmcgPSBGYWxzZQogICAgICAgICBzZWxmLnNlcmlhbGNvbnNvbGUgPSBGYWxzZQpAQCAtMTgzLDYgKzE4NSw4IEBACiAgICAgICAgIHNlbGYudm10eXBlcyA9ICgnaGRkaW1nJywgJ2lzbycpCiAgICAgICAgIHNlbGYuZnNpbmZvID0ge30KICAgICAgICAgc2VsZi5uZXR3b3JrX2RldmljZSA9ICItZGV2aWNlIGUxMDAwLG5ldGRldj1uZXQwLG1hYz1ATUFDQCIKKyAgICAgICAgc2VsZi5jbWRsaW5lX2lwX3NsaXJwID0gImlwPWRoY3AiCisgICAgICAgIHNlbGYuY21kbGluZV9pcF90YXAgPSAiaXA9MTkyLjE2OC43LkBDTElFTlRAOjoxOTIuMTY4LjcuQEdBVEVXQVlAOjI1NS4yNTUuMjU1LjAiCiAgICAgICAgICMgVXNlIGRpZmZlcmVudCBtYWMgc2VjdGlvbiBmb3IgdGFwIGFuZCBzbGlycCB0byBhdm9pZAogICAgICAgICAjIGNvbmZsaWN0cywgZS5nLiwgd2hlbiBvbmUgaXMgcnVubmluZyB3aXRoIHRhcCwgdGhlIG90aGVyIGlzCiAgICAgICAgICMgcnVubmluZyB3aXRoIHNsaXJwLgpAQCAtNDAxLDkgKzQwNSw3IEBACiAgICAgICAgICAgICBzZWxmLnNldCgiTUFDSElORSIsIGFyZykKICAgICAgICAgICAgIHJldHVybgogCi0gICAgICAgIGNtZCA9ICdNQUNISU5FPSVzIGJpdGJha2UgLWUnICUgYXJnCi0gICAgICAgIGxvZ2dlci5pbmZvKCdSdW5uaW5nICVzLi4uJyAlIGNtZCkKLSAgICAgICAgc2VsZi5iaXRiYWtlX2UgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHNoZWxsPVRydWUpLmRlY29kZSgndXRmLTgnKQorICAgICAgICBzZWxmLmJpdGJha2VfZSA9IHNlbGYucnVuX2JpdGJha2VfZW52KGFyZykKICAgICAgICAgIyBiaXRiYWtlIC1lIGRvZXNuJ3QgcmVwb3J0IGludmFsaWQgTUFDSElORSBhcyBhbiBlcnJvciwgc28KICAgICAgICAgIyBsZXQncyBjaGVjayBERVBMT1lfRElSX0lNQUdFIHRvIG1ha2Ugc3VyZSB0aGF0IGl0IGlzIGEgdmFsaWQKICAgICAgICAgIyBNQUNISU5FLgpAQCAtNDg2LDYgKzQ4OCw4IEBACiAgICAgICAgICAgICAgICAgc2VsZi52aG9zdF9lbmFibGVkID0gVHJ1ZQogICAgICAgICAgICAgZWxpZiBhcmcgPT0gJ3NsaXJwJzoKICAgICAgICAgICAgICAgICBzZWxmLnNsaXJwX2VuYWJsZWQgPSBUcnVlCisgICAgICAgICAgICBlbGlmIGFyZy5zdGFydHN3aXRoKCdicmlkZ2U9Jyk6CisgICAgICAgICAgICAgICAgc2VsZi5uZXRfYnJpZGdlID0gJyVzJyAlIGFyZ1tsZW4oJ2JyaWRnZT0nKTpdCiAgICAgICAgICAgICBlbGlmIGFyZyA9PSAnc25hcHNob3QnOgogICAgICAgICAgICAgICAgIHNlbGYuc25hcHNob3QgPSBUcnVlCiAgICAgICAgICAgICBlbGlmIGFyZyA9PSAncHVibGljdm5jJzoKQEAgLTgwMyw3ICs4MDcsNyBAQAogICAgIGRlZiBjaGVja19hbmRfc2V0KHNlbGYpOgogICAgICAgICAiIiJDaGVjayBjb25maWdzIHNhbml0eSBhbmQgc2V0IHdoZW4gbmVlZGVkIiIiCiAgICAgICAgIHNlbGYudmFsaWRhdGVfcGF0aHMoKQotICAgICAgICBpZiBub3Qgc2VsZi5zbGlycF9lbmFibGVkOgorICAgICAgICBpZiBub3Qgc2VsZi5zbGlycF9lbmFibGVkIGFuZCBub3Qgc2VsZi5uZXRfYnJpZGdlOgogICAgICAgICAgICAgY2hlY2tfdHVuKCkKICAgICAgICAgIyBDaGVjayBhdWRpbwogICAgICAgICBpZiBzZWxmLmF1ZGlvX2VuYWJsZWQ6CkBAIC05MzMsMjkgKzkzNywzMCBAQAogICAgICAgICAgICAgICAgICAgICBzZWxmLnNldCgnU1RBR0lOR19CSU5ESVJfTkFUSVZFJywgJyVzL3Vzci9iaW4nICUgc2VsZi5nZXQoJ1NUQUdJTkdfRElSX05BVElWRScpKQogCiAgICAgZGVmIHByaW50X2NvbmZpZyhzZWxmKToKLSAgICAgICAgbG9nZ2VyLmluZm8oJ0NvbnRpbnVpbmcgd2l0aCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6XG4nKQorICAgICAgICBsb2dvdXRwdXQgPSBbJ0NvbnRpbnVpbmcgd2l0aCB0aGUgZm9sbG93aW5nIHBhcmFtZXRlcnM6J10KICAgICAgICAgaWYgbm90IHNlbGYuZnN0eXBlIGluIHNlbGYudm10eXBlczoKLSAgICAgICAgICAgIHByaW50KCdLRVJORUw6IFslc10nICUgc2VsZi5rZXJuZWwpCisgICAgICAgICAgICBsb2dvdXRwdXQuYXBwZW5kKCdLRVJORUw6IFslc10nICUgc2VsZi5rZXJuZWwpCiAgICAgICAgICAgICBpZiBzZWxmLmJpb3M6Ci0gICAgICAgICAgICAgICAgcHJpbnQoJ0JJT1M6IFslc10nICUgc2VsZi5iaW9zKQorICAgICAgICAgICAgICAgIGxvZ291dHB1dC5hcHBlbmQoJ0JJT1M6IFslc10nICUgc2VsZi5iaW9zKQogICAgICAgICAgICAgaWYgc2VsZi5kdGI6Ci0gICAgICAgICAgICAgICAgcHJpbnQoJ0RUQjogWyVzXScgJSBzZWxmLmR0YikKLSAgICAgICAgcHJpbnQoJ01BQ0hJTkU6IFslc10nICUgc2VsZi5nZXQoJ01BQ0hJTkUnKSkKKyAgICAgICAgICAgICAgICBsb2dvdXRwdXQuYXBwZW5kKCdEVEI6IFslc10nICUgc2VsZi5kdGIpCisgICAgICAgIGxvZ291dHB1dC5hcHBlbmQoJ01BQ0hJTkU6IFslc10nICUgc2VsZi5nZXQoJ01BQ0hJTkUnKSkKICAgICAgICAgdHJ5OgogICAgICAgICAgICAgZnN0eXBlX2ZsYWdzID0gJyAoJyArICcsICcuam9pbihzZWxmLmZzaW5mb1tzZWxmLmZzdHlwZV0pICsgJyknCiAgICAgICAgIGV4Y2VwdCBLZXlFcnJvcjoKICAgICAgICAgICAgIGZzdHlwZV9mbGFncyA9ICcnCi0gICAgICAgIHByaW50KCdGU1RZUEU6IFslcyVzXScgJSAoc2VsZi5mc3R5cGUsIGZzdHlwZV9mbGFncykpCisgICAgICAgIGxvZ291dHB1dC5hcHBlbmQoJ0ZTVFlQRTogWyVzJXNdJyAlIChzZWxmLmZzdHlwZSwgZnN0eXBlX2ZsYWdzKSkKICAgICAgICAgaWYgc2VsZi5mc3R5cGUgID09ICduZnMnOgotICAgICAgICAgICAgcHJpbnQoJ05GU19ESVI6IFslc10nICUgc2VsZi5yb290ZnMpCisgICAgICAgICAgICBsb2dvdXRwdXQuYXBwZW5kKCdORlNfRElSOiBbJXNdJyAlIHNlbGYucm9vdGZzKQogICAgICAgICBlbHNlOgotICAgICAgICAgICAgcHJpbnQoJ1JPT1RGUzogWyVzXScgJSBzZWxmLnJvb3RmcykKKyAgICAgICAgICAgIGxvZ291dHB1dC5hcHBlbmQoJ1JPT1RGUzogWyVzXScgJSBzZWxmLnJvb3RmcykKICAgICAgICAgaWYgc2VsZi5vdm1mX2Jpb3M6Ci0gICAgICAgICAgICBwcmludCgnT1ZNRjogJXMnICUgc2VsZi5vdm1mX2Jpb3MpCisgICAgICAgICAgICBsb2dvdXRwdXQuYXBwZW5kKCdPVk1GOiAlcycgJSBzZWxmLm92bWZfYmlvcykKICAgICAgICAgaWYgKHNlbGYub3ZtZl9zZWNib290X3Bra2VrMSk6Ci0gICAgICAgICAgICBwcmludCgnU0VDQk9PVCBQS0tFSzE6IFslcy4uLl0nICUgc2VsZi5vdm1mX3NlY2Jvb3RfcGtrZWsxWzA6MTAwXSkKLSAgICAgICAgcHJpbnQoJ0NPTkZGSUxFOiBbJXNdJyAlIHNlbGYucWVtdWJvb3QpCi0gICAgICAgIHByaW50KCcnKQorICAgICAgICAgICAgbG9nb3V0cHV0LmFwcGVuZCgnU0VDQk9PVCBQS0tFSzE6IFslcy4uLl0nICUgc2VsZi5vdm1mX3NlY2Jvb3RfcGtrZWsxWzA6MTAwXSkKKyAgICAgICAgbG9nb3V0cHV0LmFwcGVuZCgnQ09ORkZJTEU6IFslc10nICUgc2VsZi5xZW11Ym9vdCkKKyAgICAgICAgbG9nb3V0cHV0LmFwcGVuZCgnJykKKyAgICAgICAgbG9nZ2VyLmluZm8oJ1xuJy5qb2luKGxvZ291dHB1dCkpCiAKICAgICBkZWYgc2V0dXBfbmZzKHNlbGYpOgogICAgICAgICBpZiBub3Qgc2VsZi5uZnNfc2VydmVyOgpAQCAtOTg1LDcgKzk5MCw3IEBACiAgICAgICAgICAgICAjIFVzZSAnJXMnIHNpbmNlIHRoZXkgYXJlIGludGVnZXJzCiAgICAgICAgICAgICBvcy5wdXRlbnYoaywgJyVzJyAlIHYpCiAKLSAgICAgICAgc2VsZi51bmZzX29wdHM9Im5mc3ZlcnM9Myxwb3J0PSVzLHVkcCxtb3VudHBvcnQ9JXMiICUgKG5mc2RfcG9ydCwgbW91bnRkX3BvcnQpCisgICAgICAgIHNlbGYudW5mc19vcHRzPSJuZnN2ZXJzPTMscG9ydD0lcyx0Y3AsbW91bnRwb3J0PSVzIiAlIChuZnNkX3BvcnQsIG1vdW50ZF9wb3J0KQogCiAgICAgICAgICMgRXh0cmFjdCAudGFyLmJ6MiBvciAudGFyLmJ6IGlmIG5vIG5mcyBkaXIKICAgICAgICAgaWYgbm90IChzZWxmLnJvb3RmcyBhbmQgb3MucGF0aC5pc2RpcihzZWxmLnJvb3RmcykpOgpAQCAtMTAyMCwxMiArMTAyNSwxOCBAQAogCiAgICAgICAgIHNlbGYubmZzX3J1bm5pbmcgPSBUcnVlCiAKKyAgICBkZWYgc2V0dXBfbmV0X2JyaWRnZShzZWxmKToKKyAgICAgICAgc2VsZi5zZXQoJ05FVFdPUktfQ01EJywgJy1uZXRkZXYgYnJpZGdlLGJyPSVzLGlkPW5ldDAsaGVscGVyPSVzIC1kZXZpY2UgdmlydGlvLW5ldC1wY2ksbmV0ZGV2PW5ldDAgJyAlICgKKyAgICAgICAgICAgIHNlbGYubmV0X2JyaWRnZSwgb3MucGF0aC5qb2luKHNlbGYuYmluZGlyX25hdGl2ZSwgJ3FlbXUtb2UtYnJpZGdlLWhlbHBlcicpKSkKKwogICAgIGRlZiBzZXR1cF9zbGlycChzZWxmKToKICAgICAgICAgIiIiU2V0dXAgdXNlciBuZXR3b3JraW5nIiIiCiAKICAgICAgICAgaWYgc2VsZi5mc3R5cGUgPT0gJ25mcyc6CiAgICAgICAgICAgICBzZWxmLnNldHVwX25mcygpCi0gICAgICAgIHNlbGYua2VybmVsX2NtZGxpbmVfc2NyaXB0ICs9ICcgaXA9ZGhjcCcKKyAgICAgICAgbmV0Y29uZiA9ICIgIiArIHNlbGYuY21kbGluZV9pcF9zbGlycAorICAgICAgICBsb2dnZXIuaW5mbygiTmV0d29yayBjb25maWd1cmF0aW9uOiVzIiwgbmV0Y29uZikKKyAgICAgICAgc2VsZi5rZXJuZWxfY21kbGluZV9zY3JpcHQgKz0gbmV0Y29uZgogICAgICAgICAjIFBvcnQgbWFwcGluZwogICAgICAgICBob3N0ZndkID0gIixob3N0ZndkPXRjcDo6MjIyMi06MjIsaG9zdGZ3ZD10Y3A6OjIzMjMtOjIzIgogICAgICAgICBxYl9zbGlycF9vcHRfZGVmYXVsdCA9ICItbmV0ZGV2IHVzZXIsaWQ9bmV0MCVzLHRmdHA9JXMiICUgKGhvc3Rmd2QsIHNlbGYuZ2V0KCdERVBMT1lfRElSX0lNQUdFJykpCkBAIC0xMTIwLDcgKzExMzEsMTEgQEAKICAgICAgICAgICAgIHVpZCA9IG9zLmdldHVpZCgpCiAgICAgICAgICAgICBsb2dnZXIuaW5mbygiU2V0dGluZyB1cCB0YXAgaW50ZXJmYWNlIHVuZGVyIHN1ZG8iKQogICAgICAgICAgICAgY21kID0gKCdzdWRvJywgc2VsZi5xZW11aWZ1cCwgc3RyKHVpZCksIHN0cihnaWQpLCBzZWxmLmJpbmRpcl9uYXRpdmUpCi0gICAgICAgICAgICB0YXAgPSBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQpLmRlY29kZSgndXRmLTgnKS5zdHJpcCgpCisgICAgICAgICAgICB0cnk6CisgICAgICAgICAgICAgICAgdGFwID0gc3VicHJvY2Vzcy5jaGVja19vdXRwdXQoY21kKS5kZWNvZGUoJ3V0Zi04Jykuc3RyaXAoKQorICAgICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGU6CisgICAgICAgICAgICAgICAgbG9nZ2VyLmVycm9yKCdTZXR0aW5nIHVwIHRhcCBkZXZpY2UgZmFpbGVkOlxuJXNcblJ1biBydW5xZW11LWdlbi10YXBkZXZzIHRvIG1hbnVhbGx5IGNyZWF0ZSBvbmUuJyAlIHN0cihlKSkKKyAgICAgICAgICAgICAgICBzeXMuZXhpdCgxKQogICAgICAgICAgICAgbG9ja2ZpbGUgPSBvcy5wYXRoLmpvaW4obG9ja2RpciwgdGFwKQogICAgICAgICAgICAgc2VsZi50YXBsb2NrID0gbG9ja2ZpbGUgKyAnLmxvY2snCiAgICAgICAgICAgICBzZWxmLmFjcXVpcmVfdGFwbG9jaygpCkBAIC0xMTI5LDE2ICsxMTQ0LDE4IEBACiAKICAgICAgICAgaWYgbm90IHRhcDoKICAgICAgICAgICAgIGxvZ2dlci5lcnJvcigiRmFpbGVkIHRvIHNldHVwIHRhcCBkZXZpY2UuIFJ1biBydW5xZW11LWdlbi10YXBkZXZzIHRvIG1hbnVhbGx5IGNyZWF0ZS4iKQotICAgICAgICAgICAgcmV0dXJuIDEKKyAgICAgICAgICAgIHN5cy5leGl0KDEpCiAgICAgICAgIHNlbGYudGFwID0gdGFwCiAgICAgICAgIHRhcG51bSA9IGludCh0YXBbMzpdKQogICAgICAgICBnYXRld2F5ID0gdGFwbnVtICogMiArIDEKICAgICAgICAgY2xpZW50ID0gZ2F0ZXdheSArIDEKICAgICAgICAgaWYgc2VsZi5mc3R5cGUgPT0gJ25mcyc6CiAgICAgICAgICAgICBzZWxmLnNldHVwX25mcygpCi0gICAgICAgIG5ldGNvbmYgPSAiMTkyLjE2OC43LiVzOjoxOTIuMTY4LjcuJXM6MjU1LjI1NS4yNTUuMCIgJSAoY2xpZW50LCBnYXRld2F5KQotICAgICAgICBsb2dnZXIuaW5mbygiTmV0d29yayBjb25maWd1cmF0aW9uOiAlcyIsIG5ldGNvbmYpCi0gICAgICAgIHNlbGYua2VybmVsX2NtZGxpbmVfc2NyaXB0ICs9ICIgaXA9JXMiICUgbmV0Y29uZgorICAgICAgICBuZXRjb25mID0gIiAiICsgc2VsZi5jbWRsaW5lX2lwX3RhcAorICAgICAgICBuZXRjb25mID0gbmV0Y29uZi5yZXBsYWNlKCdAQ0xJRU5UQCcsIHN0cihjbGllbnQpKQorICAgICAgICBuZXRjb25mID0gbmV0Y29uZi5yZXBsYWNlKCdAR0FURVdBWUAnLCBzdHIoZ2F0ZXdheSkpCisgICAgICAgIGxvZ2dlci5pbmZvKCJOZXR3b3JrIGNvbmZpZ3VyYXRpb246JXMiLCBuZXRjb25mKQorICAgICAgICBzZWxmLmtlcm5lbF9jbWRsaW5lX3NjcmlwdCArPSBuZXRjb25mCiAgICAgICAgIG1hYyA9ICIlcyUwMngiICUgKHNlbGYubWFjX3RhcCwgY2xpZW50KQogICAgICAgICBxYl90YXBfb3B0ID0gc2VsZi5nZXQoJ1FCX1RBUF9PUFQnKQogICAgICAgICBpZiBxYl90YXBfb3B0OgpAQCAtMTE1Nyw5ICsxMTc0LDEzIEBACiAgICAgICAgIGlmIHN5cy5zdGRpbi5pc2F0dHkoKToKICAgICAgICAgICAgIHNlbGYuc2F2ZWRfc3R0eSA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KCgic3R0eSIsICItZyIpKS5kZWNvZGUoJ3V0Zi04Jykuc3RyaXAoKQogICAgICAgICBzZWxmLm5ldHdvcmtfZGV2aWNlID0gc2VsZi5nZXQoJ1FCX05FVFdPUktfREVWSUNFJykgb3Igc2VsZi5uZXR3b3JrX2RldmljZQotICAgICAgICBpZiBzZWxmLnNsaXJwX2VuYWJsZWQ6CisgICAgICAgIGlmIHNlbGYubmV0X2JyaWRnZToKKyAgICAgICAgICAgIHNlbGYuc2V0dXBfbmV0X2JyaWRnZSgpCisgICAgICAgIGVsaWYgc2VsZi5zbGlycF9lbmFibGVkOgorICAgICAgICAgICAgc2VsZi5jbWRsaW5lX2lwX3NsaXJwID0gc2VsZi5nZXQoJ1FCX0NNRExJTkVfSVBfU0xJUlAnKSBvciBzZWxmLmNtZGxpbmVfaXBfc2xpcnAKICAgICAgICAgICAgIHNlbGYuc2V0dXBfc2xpcnAoKQogICAgICAgICBlbHNlOgorICAgICAgICAgICAgc2VsZi5jbWRsaW5lX2lwX3RhcCA9IHNlbGYuZ2V0KCdRQl9DTURMSU5FX0lQX1RBUCcpIG9yIHNlbGYuY21kbGluZV9pcF90YXAKICAgICAgICAgICAgIHNlbGYuc2V0dXBfdGFwKCkKIAogICAgIGRlZiBzZXR1cF9yb290ZnMoc2VsZik6CkBAIC0xMTc1LDYgKzExOTYsMTAgQEAKICAgICAgICAgZWxzZToKICAgICAgICAgICAgIHNlbGYucm9vdGZzX29wdGlvbnMgPSAnLWRyaXZlIGZpbGU9JXMsaWY9dmlydGlvLGZvcm1hdD0lcycgJSAoc2VsZi5yb290ZnMsIHJvb3Rmc19mb3JtYXQpCiAKKyAgICAgICAgcWJfcm9vdGZzX2V4dHJhX29wdCA9IHNlbGYuZ2V0KCJRQl9ST09URlNfRVhUUkFfT1BUIikKKyAgICAgICAgaWYgcWJfcm9vdGZzX2V4dHJhX29wdCBhbmQgbm90IHFiX3Jvb3Rmc19leHRyYV9vcHQuc3RhcnRzd2l0aCgiLCIpOgorICAgICAgICAgICAgcWJfcm9vdGZzX2V4dHJhX29wdCA9ICIsIiArIHFiX3Jvb3Rmc19leHRyYV9vcHQKKwogICAgICAgICBpZiBzZWxmLmZzdHlwZSBpbiAoJ2NwaW8uZ3onLCAnY3BpbycpOgogICAgICAgICAgICAgc2VsZi5rZXJuZWxfY21kbGluZSA9ICdyb290PS9kZXYvcmFtMCBydyBkZWJ1Z3NoZWxsJwogICAgICAgICAgICAgc2VsZi5yb290ZnNfb3B0aW9ucyA9ICctaW5pdHJkICVzJyAlIHNlbGYucm9vdGZzCkBAIC0xMTg3LDExICsxMjEyLDE1IEBACiAgICAgICAgICAgICAgICAgICAgIGRyaXZlX3R5cGUgPSBzZWxmLmdldCgnUUJfRFJJVkVfVFlQRScpCiAgICAgICAgICAgICAgICAgICAgIGlmIGRyaXZlX3R5cGUuc3RhcnRzd2l0aCgiL2Rldi9zZCIpOgogICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1VzaW5nIHNjc2kgZHJpdmUnKQotICAgICAgICAgICAgICAgICAgICAgICAgdm1fZHJpdmUgPSAnLWRyaXZlIGlmPW5vbmUsaWQ9aGQsZmlsZT0lcyxmb3JtYXQ9JXMgLWRldmljZSB2aXJ0aW8tc2NzaS1wY2ksaWQ9c2NzaSAtZGV2aWNlIHNjc2ktaGQsZHJpdmU9aGQnIFwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICUgKHNlbGYucm9vdGZzLCByb290ZnNfZm9ybWF0KQorICAgICAgICAgICAgICAgICAgICAgICAgdm1fZHJpdmUgPSAnLWRyaXZlIGlmPW5vbmUsaWQ9aGQsZmlsZT0lcyxmb3JtYXQ9JXMgLWRldmljZSB2aXJ0aW8tc2NzaS1wY2ksaWQ9c2NzaSAtZGV2aWNlIHNjc2ktaGQsZHJpdmU9aGQlcycgXAorICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJSAoc2VsZi5yb290ZnMsIHJvb3Rmc19mb3JtYXQsIHFiX3Jvb3Rmc19leHRyYV9vcHQpCiAgICAgICAgICAgICAgICAgICAgIGVsaWYgZHJpdmVfdHlwZS5zdGFydHN3aXRoKCIvZGV2L2hkIik6CiAgICAgICAgICAgICAgICAgICAgICAgICBsb2dnZXIuaW5mbygnVXNpbmcgaWRlIGRyaXZlJykKICAgICAgICAgICAgICAgICAgICAgICAgIHZtX2RyaXZlID0gIi1kcml2ZSBmaWxlPSVzLGZvcm1hdD0lcyIgJSAoc2VsZi5yb290ZnMsIHJvb3Rmc19mb3JtYXQpCisgICAgICAgICAgICAgICAgICAgIGVsaWYgZHJpdmVfdHlwZS5zdGFydHN3aXRoKCIvZGV2L3ZkYiIpOgorICAgICAgICAgICAgICAgICAgICAgICAgbG9nZ2VyLmluZm8oJ1VzaW5nIGJsb2NrIHZpcnRpbyBkcml2ZScpOworICAgICAgICAgICAgICAgICAgICAgICAgdm1fZHJpdmUgPSAnLWRyaXZlIGlkPWRpc2swLGZpbGU9JXMsaWY9bm9uZSxmb3JtYXQ9JXMgLWRldmljZSB2aXJ0aW8tYmxrLWRldmljZSxkcml2ZT1kaXNrMCVzJyBcCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAlIChzZWxmLnJvb3Rmcywgcm9vdGZzX2Zvcm1hdCxxYl9yb290ZnNfZXh0cmFfb3B0KQogICAgICAgICAgICAgICAgICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICAgICAgIyB2aXJ0aW8gbWlnaHQgaGF2ZSBiZWVuIHNlbGVjdGVkIGV4cGxpY2l0bHkgKGp1c3QgdXNlIGl0KSwgb3IKICAgICAgICAgICAgICAgICAgICAgICAgICMgaXMgdXNlZCBhcyBmYWxsYmFjayAodGhlbiB3YXJuIGFib3V0IHRoYXQpLgpAQCAtMTQwNSwxMCArMTQzNCw3IEBACiAKICAgICAgICAgc2VsZi5jbGVhbmVkID0gVHJ1ZQogCi0gICAgZGVmIGxvYWRfYml0YmFrZV9lbnYoc2VsZiwgbWFjaD1Ob25lKToKLSAgICAgICAgaWYgc2VsZi5iaXRiYWtlX2U6Ci0gICAgICAgICAgICByZXR1cm4KLQorICAgIGRlZiBydW5fYml0YmFrZV9lbnYoc2VsZiwgbWFjaD1Ob25lKToKICAgICAgICAgYml0YmFrZSA9IHNodXRpbC53aGljaCgnYml0YmFrZScpCiAgICAgICAgIGlmIG5vdCBiaXRiYWtlOgogICAgICAgICAgICAgcmV0dXJuCkBAIC0xNDE2LDE0ICsxNDQyLDI0IEBACiAgICAgICAgIGlmIG5vdCBtYWNoOgogICAgICAgICAgICAgbWFjaCA9IHNlbGYuZ2V0KCdNQUNISU5FJykKIAorICAgICAgICBtdWx0aWNvbmZpZyA9IHNlbGYuZ2V0KCdNVUxUSUNPTkZJRycpCisgICAgICAgIGlmIG11bHRpY29uZmlnOgorICAgICAgICAgICAgbXVsdGljb25maWcgPSAibWM6JXMiICUgbXVsdGljb25maWcKKwogICAgICAgICBpZiBtYWNoOgotICAgICAgICAgICAgY21kID0gJ01BQ0hJTkU9JXMgYml0YmFrZSAtZScgJSBtYWNoCisgICAgICAgICAgICBjbWQgPSAnTUFDSElORT0lcyBiaXRiYWtlIC1lICVzJyAlIChtYWNoLCBtdWx0aWNvbmZpZykKICAgICAgICAgZWxzZToKLSAgICAgICAgICAgIGNtZCA9ICdiaXRiYWtlIC1lJworICAgICAgICAgICAgY21kID0gJ2JpdGJha2UgLWUgJXMnICUgbXVsdGljb25maWcKIAogICAgICAgICBsb2dnZXIuaW5mbygnUnVubmluZyAlcy4uLicgJSBjbWQpCisgICAgICAgIHJldHVybiBzdWJwcm9jZXNzLmNoZWNrX291dHB1dChjbWQsIHNoZWxsPVRydWUpLmRlY29kZSgndXRmLTgnKQorCisgICAgZGVmIGxvYWRfYml0YmFrZV9lbnYoc2VsZiwgbWFjaD1Ob25lKToKKyAgICAgICAgaWYgc2VsZi5iaXRiYWtlX2U6CisgICAgICAgICAgICByZXR1cm4KKwogICAgICAgICB0cnk6Ci0gICAgICAgICAgICBzZWxmLmJpdGJha2VfZSA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCwgc2hlbGw9VHJ1ZSkuZGVjb2RlKCd1dGYtOCcpCisgICAgICAgICAgICBzZWxmLmJpdGJha2VfZSA9IHNlbGYucnVuX2JpdGJha2VfZW52KG1hY2g9bWFjaCkKICAgICAgICAgZXhjZXB0IHN1YnByb2Nlc3MuQ2FsbGVkUHJvY2Vzc0Vycm9yIGFzIGVycjoKICAgICAgICAgICAgIHNlbGYuYml0YmFrZV9lID0gJycKICAgICAgICAgICAgIGxvZ2dlci53YXJuaW5nKCJDb3VsZG4ndCBydW4gJ2JpdGJha2UgLWUnIHRvIGdhdGhlciBlbnZpcm9ubWVudCBpbmZvcm1hdGlvbjpcbiVzIiAlIGVyci5vdXRwdXQuZGVjb2RlKCd1dGYtOCcpKQpAQCAtMTQzOCw3ICsxNDc0LDEzIEBACiAgICAgICAgIGlmIHJlc3VsdCBhbmQgb3MucGF0aC5leGlzdHMocmVzdWx0KToKICAgICAgICAgICAgIHJldHVybiByZXN1bHQKIAotICAgICAgICBjbWQgPSAoJ2JpdGJha2UnLCAncWVtdS1oZWxwZXItbmF0aXZlJywgJy1lJykKKyAgICAgICAgY21kID0gWydiaXRiYWtlJywgJy1lJ10KKyAgICAgICAgbXVsdGljb25maWcgPSBzZWxmLmdldCgnTVVMVElDT05GSUcnKQorICAgICAgICBpZiBtdWx0aWNvbmZpZzoKKyAgICAgICAgICAgIGNtZC5hcHBlbmQoJ21jOiVzOnFlbXUtaGVscGVyLW5hdGl2ZScgJSBtdWx0aWNvbmZpZykKKyAgICAgICAgZWxzZToKKyAgICAgICAgICAgIGNtZC5hcHBlbmQoJ3FlbXUtaGVscGVyLW5hdGl2ZScpCisKICAgICAgICAgbG9nZ2VyLmluZm8oJ1J1bm5pbmcgJXMuLi4nICUgc3RyKGNtZCkpCiAgICAgICAgIG91dCA9IHN1YnByb2Nlc3MuY2hlY2tfb3V0cHV0KGNtZCkuZGVjb2RlKCd1dGYtOCcpCiAKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy9ydW5xZW11LWV4dHJhY3Qtc2RrIGIvcG9reS9zY3JpcHRzL3J1bnFlbXUtZXh0cmFjdC1zZGsKaW5kZXggOGE0ZWU5MC4uOWJjMGMwNyAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL3J1bnFlbXUtZXh0cmFjdC1zZGsKKysrIGIvcG9reS9zY3JpcHRzL3J1bnFlbXUtZXh0cmFjdC1zZGsKQEAgLTY5LDcgKzY5LDcgQEAKIHBzZXVkb19zdGF0ZV9kaXI9IiRTREtfUk9PVEZTX0RJUi8uLi8kKGJhc2VuYW1lICIkU0RLX1JPT1RGU19ESVIiKS5wc2V1ZG9fc3RhdGUiCiBwc2V1ZG9fc3RhdGVfZGlyPSIkKHJlYWRsaW5rIC1mICRwc2V1ZG9fc3RhdGVfZGlyKSIKIAotZGVidWdfaW1hZ2U9ImBlY2hvICRST09URlNfVEFSQkFMTCB8IGdyZXAgJ1wtZGJnXC50YXJcLidgIgorZGVidWdfaW1hZ2U9ImBlY2hvICRST09URlNfVEFSQkFMTCB8IGdyZXAgJ1wtZGJnXC5yb290ZnNcLnRhcidgIgogCiBpZiBbIC1lICIkcHNldWRvX3N0YXRlX2RpciIgLWEgLXogIiRkZWJ1Z19pbWFnZSIgXTsgdGhlbgogCWVjaG8gIkVycm9yOiAkcHNldWRvX3N0YXRlX2RpciBhbHJlYWR5IGV4aXN0cyEiCmRpZmYgLS1naXQgYS9wb2t5L3NjcmlwdHMvdGlueS9rc2l6ZS5weSBiL3Bva3kvc2NyaXB0cy90aW55L2tzaXplLnB5CmluZGV4IGJjMTE5MTkuLjgzMTZiODUgMTAwNzU1Ci0tLSBhL3Bva3kvc2NyaXB0cy90aW55L2tzaXplLnB5CisrKyBiL3Bva3kvc2NyaXB0cy90aW55L2tzaXplLnB5CkBAIC0yNyw3ICsyNyw3IEBACiBjbGFzcyBTaXplczoKICAgICBkZWYgX19pbml0X18oc2VsZiwgZ2xvYik6CiAgICAgICAgIHNlbGYudGl0bGUgPSBnbG9iCi0gICAgICAgIHAgPSBQb3Blbigic2l6ZSAtdCAiICsgc3RyKGdsb2IpLCBzaGVsbD1UcnVlLCBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUpCisgICAgICAgIHAgPSBQb3Blbigic2l6ZSAtdCAiICsgc3RyKGdsb2IpLCBzaGVsbD1UcnVlLCBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUsIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQogICAgICAgICBvdXRwdXQgPSBwLmNvbW11bmljYXRlKClbMF0uc3BsaXRsaW5lcygpCiAgICAgICAgIGlmIGxlbihvdXRwdXQpID4gMjoKICAgICAgICAgICAgIHNpemVzID0gb3V0cHV0Wy0xXS5zcGxpdCgpWzA6NF0KQEAgLTQ5LDE0ICs0OSwxNCBAQAogICAgICAgICBwYXRoID0gb3MucGF0aC5kaXJuYW1lKGZpbGVuYW1lKQogCiAgICAgICAgIHAgPSBQb3BlbigibHMgIiArIHN0cihwYXRoKSArICIvKi5vIHwgZ3JlcCAtdiBidWlsdC1pbi5vIiwKLSAgICAgICAgICAgICAgICAgIHNoZWxsPVRydWUsIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSkKKyAgICAgICAgICAgICAgICAgIHNoZWxsPVRydWUsIHN0ZG91dD1QSVBFLCBzdGRlcnI9UElQRSwgdW5pdmVyc2FsX25ld2xpbmVzPVRydWUpCiAgICAgICAgIGdsb2IgPSAnICcuam9pbihwLmNvbW11bmljYXRlKClbMF0uc3BsaXRsaW5lcygpKQogICAgICAgICBvcmVwb3J0ID0gUmVwb3J0KGdsb2IsIHN0cihwYXRoKSArICIvKi5vIikKICAgICAgICAgb3JlcG9ydC5zaXplcy50aXRsZSA9IHN0cihwYXRoKSArICIvKi5vIgogICAgICAgICByLnBhcnRzLmFwcGVuZChvcmVwb3J0KQogCiAgICAgICAgIGlmIHN1Ymdsb2I6Ci0gICAgICAgICAgICBwID0gUG9wZW4oImxzICIgKyBzdWJnbG9iLCBzaGVsbD1UcnVlLCBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUpCisgICAgICAgICAgICBwID0gUG9wZW4oImxzICIgKyBzdWJnbG9iLCBzaGVsbD1UcnVlLCBzdGRvdXQ9UElQRSwgc3RkZXJyPVBJUEUsIHVuaXZlcnNhbF9uZXdsaW5lcz1UcnVlKQogICAgICAgICAgICAgZm9yIGYgaW4gcC5jb21tdW5pY2F0ZSgpWzBdLnNwbGl0bGluZXMoKToKICAgICAgICAgICAgICAgICBwYXRoID0gb3MucGF0aC5kaXJuYW1lKGYpCiAgICAgICAgICAgICAgICAgci5wYXJ0cy5hcHBlbmQoUmVwb3J0LmNyZWF0ZShmLCBwYXRoLCBzdHIocGF0aCkgKyAiLyovYnVpbHQtaW4ubyIpKQpkaWZmIC0tZ2l0IGEvcG9reS9zY3JpcHRzL3dpYyBiL3Bva3kvc2NyaXB0cy93aWMKaW5kZXggZWE2MTQxMC4uMjQ3MDBmMyAxMDA3NTUKLS0tIGEvcG9reS9zY3JpcHRzL3dpYworKysgYi9wb2t5L3NjcmlwdHMvd2ljCkBAIC0zOTIsOSArMzkyLDkgQEAKIAogZGVmIHdpY19pbml0X3BhcnNlcl9jcChzdWJwYXJzZXIpOgogICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoInNyYyIsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJzb3VyY2Ugc3BlYyIpCi0gICAgc3VicGFyc2VyLmFkZF9hcmd1bWVudCgiZGVzdCIsIHR5cGU9aW1ncGF0aHR5cGUsCi0gICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJpbWFnZSBzcGVjOiA8aW1hZ2U+Ojx2ZmF0IHBhcnRpdGlvbj5bPHBhdGg+XSIpCisgICAgICAgICAgICAgICAgICAgICAgICBoZWxwPSJpbWFnZSBzcGVjOiA8aW1hZ2U+Ojx2ZmF0IHBhcnRpdGlvbj5bPHBhdGg+XSBvciA8ZmlsZT4iKQorICAgIHN1YnBhcnNlci5hZGRfYXJndW1lbnQoImRlc3QiLAorICAgICAgICAgICAgICAgICAgICAgICAgaGVscD0iaW1hZ2Ugc3BlYzogPGltYWdlPjo8dmZhdCBwYXJ0aXRpb24+WzxwYXRoPl0gb3IgPGZpbGU+IikKICAgICBzdWJwYXJzZXIuYWRkX2FyZ3VtZW50KCItbiIsICItLW5hdGl2ZS1zeXNyb290IiwKICAgICAgICAgICAgICAgICAgICAgICAgIGhlbHA9InBhdGggdG8gdGhlIG5hdGl2ZSBzeXNyb290IGNvbnRhaW5pbmcgdGhlIHRvb2xzIikKIApAQCAtNTIyLDYgKzUyMiwxNiBAQAogICAgICAgICAgICAgICAgIGhscHRbMF0oaGxwdFsxXSwgaGxwdFsyXSkKICAgICAgICAgICAgIHJldHVybiAwCiAKKyAgICAjIHZhbGlkYXRlIHdpYyBjcCBzcmMgYW5kIGRlc3QgcGFyYW1ldGVyIHRvIGlkZW50aWZ5IHdoaWNoIG9uZSBvZiBpdCBpcworICAgICMgaW1hZ2UgYW5kIGNhc3QgaXQgaW50byBpbWd0eXBlCisgICAgaWYgYXJncy5jb21tYW5kID09ICJjcCI6CisgICAgICAgIGlmICI6IiBpbiBhcmdzLmRlc3Q6CisgICAgICAgICAgICBhcmdzLmRlc3QgPSBpbWd0eXBlKGFyZ3MuZGVzdCkKKyAgICAgICAgZWxpZiAiOiIgaW4gYXJncy5zcmM6CisgICAgICAgICAgICBhcmdzLnNyYyA9IGltZ3R5cGUoYXJncy5zcmMpCisgICAgICAgIGVsc2U6CisgICAgICAgICAgICByYWlzZSBhcmdwYXJzZS5Bcmd1bWVudFR5cGVFcnJvcigibm8gaW1hZ2Ugb3IgcGFydGl0aW9uIG51bWJlciBzcGVjaWZpZWQuIikKKwogICAgIHJldHVybiBobHAuaW52b2tlX3N1YmNvbW1hbmQoYXJncywgcGFyc2VyLCBobHAud2ljX2hlbHBfdXNhZ2UsIHN1YmNvbW1hbmRzKQogCiAKZGlmZiAtLWdpdCBhL3Bva3kvc2NyaXB0cy95b2N0by1jaGVjay1sYXllciBiL3Bva3kvc2NyaXB0cy95b2N0by1jaGVjay1sYXllcgppbmRleCAwMTA4MzBmLi5jYTZjNzliIDEwMDc1NQotLS0gYS9wb2t5L3NjcmlwdHMveW9jdG8tY2hlY2stbGF5ZXIKKysrIGIvcG9reS9zY3JpcHRzL3lvY3RvLWNoZWNrLWxheWVyCkBAIC04NCw3ICs4NCw3IEBACiAgICAgICAgIGxvZ2dlci5zZXRMZXZlbChsb2dnaW5nLkVSUk9SKQogCiAgICAgaWYgbm90ICdCVUlMRERJUicgaW4gb3MuZW52aXJvbjoKLSAgICAgICAgbG9nZ2VyLmVycm9yKCJZb3UgbXVzdCBzb3VyY2UgdGhlIGVudmlyb25tZW50IGJlZm9yZSBydW4gdGhpcyBzY3JpcHQuIikKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJZb3UgbXVzdCBzb3VyY2UgdGhlIGVudmlyb25tZW50IGJlZm9yZSBydW5uaW5nIHRoaXMgc2NyaXB0LiIpCiAgICAgICAgIGxvZ2dlci5lcnJvcigiJCBzb3VyY2Ugb2UtaW5pdC1idWlsZC1lbnYiKQogICAgICAgICByZXR1cm4gMQogICAgIGJ1aWxkZGlyID0gb3MuZW52aXJvblsnQlVJTERESVInXQpAQCAtOTIsNyArOTIsNyBAQAogCiAgICAgbGF5ZXJzID0gZGV0ZWN0X2xheWVycyhhcmdzLmxheWVycywgYXJncy5ub19hdXRvKQogICAgIGlmIG5vdCBsYXllcnM6Ci0gICAgICAgIGxvZ2dlci5lcnJvcigiRmFpbCB0byBkZXRlY3QgbGF5ZXJzIikKKyAgICAgICAgbG9nZ2VyLmVycm9yKCJGYWlsZWQgdG8gZGV0ZWN0IGxheWVycyIpCiAgICAgICAgIHJldHVybiAxCiAgICAgaWYgYXJncy5hZGRpdGlvbmFsX2xheWVyczoKICAgICAgICAgYWRkaXRpb25hbF9sYXllcnMgPSBkZXRlY3RfbGF5ZXJzKGFyZ3MuYWRkaXRpb25hbF9sYXllcnMsIGFyZ3Mubm9fYXV0bykKQEAgLTEwOCw3ICsxMDgsNyBAQAogICAgIGZvciBsYXllciBpbiBsYXllcnM6CiAgICAgICAgIGlmIGxheWVyWyd0eXBlJ10gPT0gTGF5ZXJUeXBlLkVSUk9SX0JTUF9ESVNUUk86CiAgICAgICAgICAgICBsb2dnZXIuZXJyb3IoIiVzOiBDYW4ndCBiZSBESVNUUk8gYW5kIEJTUCB0eXBlIGF0IHRoZSBzYW1lIHRpbWUuIlwKLSAgICAgICAgICAgICAgICAgICAgICIgVGhlIGNvbmYvZGlzdHJvIGFuZCBjb25mL21hY2hpbmUgZm9sZGVycyB3YXMgZm91bmQuIlwKKyAgICAgICAgICAgICAgICAgICAgICIgQm90aCBjb25mL2Rpc3RybyBhbmQgY29uZi9tYWNoaW5lIGZvbGRlcnMgd2VyZSBmb3VuZC4iXAogICAgICAgICAgICAgICAgICAgICAgJSBsYXllclsnbmFtZSddKQogICAgICAgICAgICAgbGF5ZXJzLnJlbW92ZShsYXllcikKICAgICAgICAgZWxpZiBsYXllclsndHlwZSddID09IExheWVyVHlwZS5FUlJPUl9OT19MQVlFUl9DT05GOgo=